From 022b05fa5e2295bab0f28cc54dd4fc04645c46ca Mon Sep 17 00:00:00 2001 From: Packit Date: Sep 15 2020 11:11:32 +0000 Subject: libsmi-0.4.8 base --- diff --git a/ANNOUNCE b/ANNOUNCE new file mode 100644 index 0000000..c802f61 --- /dev/null +++ b/ANNOUNCE @@ -0,0 +1,70 @@ +From: Frank Strauss +Newsgroups: comp.protocols.snmp,comp.dcom.net-management +To: mibs@ops.ietf.org, snmpv3@lists.tislabs.com, libsmi@ibr.cs.tu-bs.de +Date: 21 Jun 2002 16:45:00 +0200 +Subject: libsmi-0.4 announcement +Message-ID: + +Libsmi 0.4 is available for download. + +Copyright (c) 1999-2002 Frank Strauss, Technical University of Braunschweig. + +Libsmi is a C library that allows network management applications and +MIB and PIB authoring tools to access SMI MIB module information and +SPPI PIB module information through a well defined API that hides the +nasty details of locating and parsing MIB or PIB modules. Libsmi +supports exact and iterative retrieval functions for all major SMIv1/v2 +and SPPI constructs. + +There are five tools on top of the library and a sh/awk-script: + + - Smiquery allows simple queries for single MIB/PIB module items. + + - Smilint allows to increase the verbosity of the parser(s), so that + module files can be checked for syntax and semantic errors. + + - Smidump can be used to dump MIB and PIBmodules in various + formats. The current output backends allow to dump trees of OIDs, + type definitions and recursive imports, to convert modules between + SMIv1 and SMIv2, to dump SPPI PIBs, to produce JIDM compliant + CORBA-IDL files, UCD-SNMP code stubs, MOSY style output, JAX Java + AgentX sub-agent templates, XML and XML-Schema MIB + representations, Perl and Python representations, graphical + conceptual models, and SCLI code stubs. + + - Smidiff allows MIB authors, MIB reviewers and implementors to + compare two revisions of the same MIB for legal and illegal + changes. + + - Finally, smistrip allows to strip SMIv1/v2 and SPPI modules from + documents like RFCs and Internet-Drafts. + +Enclosed with the libsmi package, there are all (bug fixed) current +IETF standard MIB modules as of 2002-06-21, as well as some other +modules, some SPPI PIBs that are taken from Internet Drafts, man pages +for all library functions and tools, and a small libsmi test suite. + +The software comes with automake/autoconf and libtool support. Hence +it should compile and build with or without shared libraries on most +UNIX style platforms, as well as on W32/cygwin, though it's just +developed on Sun Solaris 2.5.x and Linux. However, questions about all +platforms can be discussed on the libsmi mailinglist. + +For those familiar with recent libsmi development: The most +significant changes since the previous 0.3.x releases is the addition +of the SPPI parser (which is integrated into the SMI parser), the +addition of an SPPI dump driver (both supplied by Moritz Bunkus), and +major enhancements of the XML Schema dump driver (supplied by Torsten +Klie). Furthermore, a number of bugs have been fixed and many +Standard MIB modules and PIB modules have been updated and added. + +Online information on libsmi together with download and CVS access +information, the (free) license terms, manual pages, and the mailing +list is available at: + + http://www.ibr.cs.tu-bs.de/projects/libsmi/ + + +Enjoy! + + Frank Strauss diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..861251d --- /dev/null +++ b/COPYING @@ -0,0 +1,89 @@ + +Copyright (c) 1999-2008 Frank Strauss, Technical University of Braunschweig. + +This software is copyrighted by Frank Strauss, the Technical University +of Braunschweig, and other parties. The following terms apply to all +files associated with the software unless explicitly disclaimed in +individual files. + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY +FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY +DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE +IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE +NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR +MODIFICATIONS. + +------------------------------------------------------------------------------ + +lib/snprintf.c, lib/snprintf.h: + + * Copyright (c) 1995-1999 Kungliga Tekniska H�gskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + +------------------------------------------------------------------------------ + +tools/shhopt.c, tools/shhopt.h: + +Title: shhopt - library for parsing command line options. +Version: 1.1.2 +Entered-date: 23MAR97 +Description: C-functions for parsing command line options, both + traditional one-character options, and GNU'ish + --long-options. +Keywords: programming, library, lib, commandline, options +Author: s.h.huseby@usit.uio.no (Sverre H. Huseby) +Primary-site: http://www.ifi.uio.no/~sverrehu/pub-unix/ +Alternate-site: sunsite.unc.edu /pub/Linux/libs + shhopt-1.1.2.tar.gz +Platforms: Requires ANSI C-compiler. +Copying-policy: BeerWare: If you have the time and money, send me a bottle + of your favourite beer. If not, just send me a mail or + something. Copy and use as you wish; just leave the + author's name where you find it. + +------------------------------------------------------------------------------ + diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..f30bfb6 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,2016 @@ + +2008-04-18 Frank Strauss + + * test/*: updated a couple of checks. + * tools/*: fixed a couple of minor compiler warnings. + * mibs/ietf/PKTC-IETF-SIG-MIB: added (RFC 5098). + * mibs/ietf/MIDCOM-MIB: added (RFC 5190). + * libsmi-0.4.8.tar.gz: released version 0.4.8. + +2008-02-27 Frank Strauss + + * tools/Makefile.am: added missing files to the distribution. + * libsmi-0.4.7.tar.gz: released version 0.4.7. + +2008-02-27 Frank Strauss + + * mibs/ietf/URI-TC-MIB: added (RFC 5017). + * mibs/ietf/PIM-STD-MIB: added (RFC 5060). + * mibs/ietf/IF-CAP-STACK-MIB,EFM-CU-MIB: added (RFC 5066). + * mibs/ietf/UDPLITE-MIB: added (RFC 5097). + * mibs/ietf/LANGTAG-TC-MIB: added (RFC 5131). + * mibs/ietf/IPMCAST-MIB: added (RFC 5132). + * updated IANA MIBs. + * libsmi-0.4.6.tar.gz: released version 0.4.6. + +2007-09-03 Frank Strauss + + * mibs/ietf/T11-FC-RSCN-MIB: added (RFC 4983). + +2007-08-08 Frank Strauss + + * mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB: added (RFC 4935). + * mibs/ietf/T11-FC-FABRIC-LOCK-MIB,T11-FC-ZONE-SERVER-MIB: added + (RFC 4936). + * mibs/ietf/ISNS-MIB: added (RFC 4939). + +2007-07-19 Frank Strauss + + * mibs/ietf/DOT3-EPON-MIB: added (RFC 4837). + * mibs/ietf/DOT3-OAM-MIB: added (RFC 4878). + +2007-06-08 Frank Strauss + + * mibs/ietf/TCP-ESTATS-MIB: added (RFC 4898). + +2007-05-08 Frank Strauss + + * mibs/ietf/SIP-{UA,TC,COMMON,SERVER}-MIB: added (RFC 4780). + * mibs/ietf/MAU-MIB: updated (RFC 4836). + +2007-03-05 Frank Strauss + + * mibs/ietf/DS1-MIB: updated (RFC 4805). + * mibs/ietf/IPSEC-SPD-MIB: added (RFC 4807). + +2007-03-05 Frank Strauss + + * mibs/iana/IANA-GMPLS-TC-MIB,IANA-IPPM-METRICS-REGISTRY-MIB, + IANA-ITU-ALARM-TC-MIB,IANA-MAU-MIB: added. + * mibs/iana/IANA-CHARSET-MIB,IANA-ADDRESS-FAMILY-NUMBERS-MIB, + IANAifType-MIB: added. + * mibs/ietf/GMPLS-TC-STD-MIB (RFC 4801): added. + * mibs/ietf/GMPLS-TE-STD-MIB (RFC 4802): added. + * mibs/ietf/GMPLS-LSR-STD-MIB,GMPLS-LABEL-STD-MIB (RFC 4803): added. + +2007-02-01 Frank Strauss + + * mibs/ietf/MSDP-MIB: added (RFC 4624). + * mibs/ietf/PKTC-IETF-MTA-MIB: added (RFC 4682). + * mibs/ietf/ADSL2-LINE-MIB,ADSL2-LINE-TC-MIB: added (RFC 4706). + * mibs/ietf/RAQMON-MIB: added (RFC 4711). + * mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB: added (RFC 4747). + * mibs/ietf/DOCS-CABLE-DEVICE-MIB: updated (RFC 4639). + * mibs/ietf/OSPF-MIB,OSPF-TRAP-MIB: updated (RFC 4750). + * lib/scanner-smi.l: accept also \r as end-of-line. + +2006-10-04 Frank Strauss + + * mibs/ietf/T11-FC-ROUTE-MIB: added (RFC 4625). + * mibs/ietf/T11-FC-FSPF-MIB: added (RFC 4626). + * mibs/ietf/LMP-MIB: updated (RFC 4631). + * mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB: added (RFC 4672). + * mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB: added (RFC 4673). + +2006-09-06 Frank Strauss + + * autogen.sh: Use glibtool instead of libtool on Darwin. + Thanks to Sebastian. + +2006-08-30 Frank Strauss + + * mibs/ietf/RADIUS-AUTH-CLIENT-MIB: updated (RFC 4668). + * mibs/ietf/RADIUS-AUTH-SERVER-MIB: updated (RFC 4669). + * mibs/ietf/RADIUS-ACC-CLIENT-MIB: updated (RFC 4670). + * mibs/ietf/RADIUS-ACC-SERVER-MIB: updated (RFC 4671). + +2006-07-15 Frank Strauss + + * mibs/ietf/DOCS-IF-MIB: updated (RFC 4546). + * mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB: added (RFC 4547). + * mibs/ietf/DISMAN-NSLOOKUP-MIB,DISMAN-PING-MIB,DISMAN-TRACEROUTE-MIB: + updated (RFC 4560). + +2006-06-12 Frank Strauss + + * mibs/ietf/ISCSI-MIB: added (RFC 4544). + * mibs/ietf/IPS-AUTH-MIB: added (RFC 4545). + +2006-05-30 Frank Strauss + + * mibs/ietf/SNMP-USM-AES-MIB: updated (RFC 3826). + +2006-05-29 Frank Strauss + + * mibs/ietf/BGP4-MIB: updated (RFC 4273). + * mibs/ietf/IP-FORWARD-MIB: updated (RFC 4292). + * mibs/ietf/IP-MIB: updated (RFC 4293). + * mibs/ietf/MOBILEIPV6-MIB: added (RFC 4295). + * mibs/ietf/RSTP-MIB: added (RFC 4318). + * mibs/ietf/DOCS-IETF-QOS-MIB: added (RFC 4323). + * mibs/ietf/LMP-MIB: added (RFC 4327). + * mibs/ietf/{P-BRIDGE-MIB,Q-BRIDGE-MIB}: updated (RFC 4363). + * mibs/ietf/{MPLS-LC-ATM-STD-MIB,MPLS-LC-FR-STD-MIB): + added (RFC 4368). + * mibs/ietf/IFCP-MGMT-MIB: added (RFC 4369). + * mibs/ietf/MPLS-L3VPN-STD-MIB: added (RFC 4382). + * mibs/ietf/FCIP-MGMT-MIB: added (RFC 4404). + * mibs/ietf/T11-FC-NAME-SERVER-MIB: added (RFC 4438). + * mibs/ietf/{T11-TC-MIB,T11-FC-FABRIC-ADDR-MGR-MIB}: + added (RFC 4439). + * mibs/ietf/ISIS-MIB: added (RFC 4444). + * mibs/ietf/SCSI-MIB: added (RFC 4455). + * mibs/ietf/{AGGREGATE-MIB,TIME-AGGREGATE-MIB}: added (RFC 4498). + * mibs/ietf/RMON2-MIB: updated (RFC 4502). + + * libsmi-0.4.5.tar.gz: released version 0.4.5. + There was a bug that breaks compliation of 0.4.4, so here + is a new release. + +2006-05-16 Frank Strauss + + * libsmi-0.4.4.tar.gz: released version 0.4.4. + This is more or less just a snapshot to give package + maintainers a fresh and handy release number. + +2005-12-18 Frank Strauss + + * mibs/ietf/HDSL2-SHDSL-LINE-MIB: updated (RFC 4319). + +2005-12-16 Frank Strauss + + * mibs/ietf/{ENTITY-STATE-MIB,ENTITY-STATE-TC-MIB}: + added (RFC 4268). + +2005-11-25 Frank Strauss + + * mibs/ietf/TE-LINK-STD-MIB: added (RFC 4220). + + * mibs/ietf/VPN-TC-STD-MIB: added (RFC 4265). + +2005-10-10 Frank Strauss + + * mibs/ietf/DOCS-IETF-BPI2-MIB: added (RFC 4131). + + * mibs/ietf/ENTITY-MIB: updated (RFC 4133). + + * mibs/ietf/BRIDGE-MIB: updated (RFC 4188). + +2005-10-10 Frank Strauss + + * mibs/ietf/SSPM-MIB: added (RFC 4149). + +2005-06-23 Frank Strauss + + * mibs/ietf/TUNNEL-MIB: updated (RFC 4087). + + * mibs/ietf/UDP-MIB: updated (RFC 4113). + +2005-05-17 Frank Strauss + + * mibs/ietf/FC-MGMT-MIB: added (RFC 4044). + +2005-05-12 Frank Strauss + + * mibs/ietf/VDSL-LINE-EXT-SCM-MIB: added (RFC 4069). + + * mibs/ietf/VDSL-LINE-EXT-MCM-MIB: added (RFC 4070). + +2005-05-04 Frank Strauss + + * mibs/ietf/DOCS-IETF-SUBMGT-MIB: added (RFC 4036). + +2005-04-01 Frank Strauss + + * mibs/ietf/NAT-MIB: added (RFC 4008). + + * mibs/ietf/POLICY-BASED-MANAGEMENT-MIB: added (RFC 4011). + + * mibs/ietf/TCP-MIB: updated (RFC 4022). + +2005-03-04 Frank Strauss + + * mibs/ietf/INET-ADDRESS-MIB: updated (RFC 4001). + +2005-01-17 Frank Strauss + + * mibs/ietf/TE-MIB: added (RFC 3970). + +2004-11-30 Frank Strauss + + * lib/parser-smi.y, lib/data.c, lib/error.c: improved handling + of identifiers in the "NameAndNumberForm", incl. improved + warnings if OIDs or identifiers change. Thanks to Mike, David + Perkins, and Randy Presuhn for clarifications. + +2004-11-29 Frank Strauss + + * lib/parser-smi.y, lib/data.c: fixed handling of "pending" + nodes when modules are imported right in the middle of another + module (i.e., in MODULE-COMPLIANCE statements). + +2004-09-29 Frank Strauss + + * mibs/ietf/ARC-MIB: added (RFC 3878). + + * mibs/ietf/SNMP-NOTIFICATION-MIB: fixed. + + * mibs/ietf/ALARM-MIB: added (RFC 3877). + +2004-09-28 Frank Strauss + + * mibs/ietf/{TRIP-MIB,TRIP-TC-MIB,SCTP-MIB,IANA-ITU-ALARM-TC-MIB, + ITU-ALARM-MIB,ITU-ALARM-TC-MIB,SNMP-NOTIFICATION-MIB,DS1-MIB, + DS3-MIB}: added/updated (RFCs 3872,3874,3877,3895,3896). + +2004-08-18 Frank Strauss + + * libsmi-0.4.3.tar.gz: released version 0.4.3. Time for a new + release to get it out with the next stable Debian release (3.1). + The are numerous bug fixes, improvements to smidump drivers, + MIB updates, added MIBs, and new smilint checks. + +2004-07-27 Frank Strauss + + * lib/check.c, lib/error.c: Added checks for object groups + containing notifications and vice versa. Thanks to Mike. + +2004-07-22 Frank Strauss + + * lib/parser-smi.y, lib/error.c, lib/data.c: Added checks for + revision clauses that reveal revisions after LAST-UPDATED, + revisions that are not in reverse chronological order and + missing revisions for the LAST-UPDATED timestamp. Besides that, + revisions are now implcitly sorted in reverse chronological + order. + +2004-06-22 Frank Strauss + + * mibs/ietf/{MPLS-TE-STD-MIB,MPLS-LSR-STD-MIB,MPLS-FTN-STD-MIB, + MPLS-LDP-STD-MIB,MPLS-LDP-ATM-STD-MIB,MPLS-LDP-FRAME-RELAY-STD-MIB, + MPLS-LDP-GENERIC-STD-MIB}: added (RFCs 3812,3813,3814,3815). + +2004-06-17 Frank Strauss + + * mibs/ietf/{Printer-MIB,Finisher-MIB,MPLS-TC-STD-MIB}, + mibs/iana/{IANA-PRINTER-MIB,IANA-FINISHER-MIB,IANA-CHARSET-MIB}: + updated and added (RFCs 3805,3806,3808,3811). + +2004-06-10 Frank Strauss + + * mibs/ietf/{ROHC-MIB,ROHC-RTP-MIB,ROHC-UNCOMPRESSED-MIB}: + added (RFC 3816). + +2004-06-02 Frank Strauss + + * tools/dump-netsnmp.c: Cleanup session in case of errors, + Thanks to Michael Hocke. + +2004-04-14 Frank Strauss + + * mibs/ietf/DIFFSERV-CONFIG-MIB: added (RFC 3747). + +2004-03-03 Frank Strauss + + * mibs/ietf/APM-MIB: added (RFC 3729). + +2004-02-27 Frank Strauss + + * mibs/ietf/VDSL-LINE-MIB: added (RFC 3728). + +2004-02-11 Frank Strauss + + * mibs/ietf/HC-PerfHist-TC-MIB: added (RFC 3705). + +2004-01-12 Frank Strauss + + * tools/smidiff.c: Fixed potential segfault in + checkTypeCompatibility(). Thanks to Mike. + +2003-12-25 Frank Strauss + + * mibs/ietf/POWER-ETHERNET-MIB: added (RFC 3621). + +2003-12-12 Frank Strauss + + * tools/dump-python.c, tools/dump-xml.c: Fixed segfaults upon + unresolvable parent type names. + + * tools/dump-cm.c: Added an explicit float-cast in one place + to ensure execatly equal values on different platforms so that + the test suite is happy again. + +2003-12-05 Frank Strauss + + * libsmi-0.4.2.tar.gz: released version 0.4.2. Time for a new + release upon several requests during recent days and months. :-) + The are numerous bug fixes, MIB updates, added MIBs, and new + smilint and smidiff checks. + + * test/dumps/*: Checked and ppdated all test cases so + that the whole suite should complete without failures + again. + +2003-12-01 Frank Strauss + + * tools/smidiff.c: Fixed error messages on changed base + types for node comparisons: now the node names are reported + and not the underlying type names. Thanks to Mike. + + * mibs/*: More robust Makefiles, initially to support the + cygwin build and installation process. Thanks to Harold. + +2003-11-06 Frank Strauss + + * mibs/ietf/ATM2-MIB: added (RFC 3606). + +2003-10-02 Frank Strauss + + * lib/data.c: Fixed a bug with pending (forward, but not + resolved) definitions of identifiers that appear again in a + subsequently loaded module. Thanks to Fredrick. + + * mibs/ietf/ETHER-WIS: added (RFC 3637). + +2003-10-01 Frank Strauss + + * mibs/ietf/EtherLike-MIB: updated (RFC 3635). + + * mibs/ietf/MAU-MIB: updated (RFC 3636). + +2003-09-15 Frank Strauss + + * mibs/ietf/IPV6-FLOW-LABEL-MIB: added (RFC 3595). + +2003-09-03 Frank Strauss + + * mibs/ietf/OPT-IF-MIB: added (RFC 3591). + + * mibs/ietf/SONET-MIB: updated (RFC 3592). + + * mibs/ietf/PerfHist-TC-MIB: updated (RFC 3593). + +2003-08-07 Frank Strauss + + * pibs/ietf/FRAMEWORK-FEEDBACK-PIB: added (RFC 3571). + +2003-06-20 Frank Strauss + + * mibs/ietf/BLDG-HVAC-MIB: added (RFC 3512) (it's just an + example MIB). + + * mibs/ietf/MALLOC-MIB: added (RFC 3559). + +2003-03-08 Frank Strauss + + * pibs/ietf/DIFFSERV-PIB: added (RFC 3317). + + * pibs/ietf/FRAMEWORK-PIB,FRAMEWORK-TC-PIB: added (RFC 3318). + + * mibs/ietf/APS-MIB: added (RFC 3498). + +2003-01-03 Frank Strauss + + * mibs/ietf/ADSL-LINE-EXT-MIB: added (RFC 3440). + +2002-12-26 Frank Strauss + + * mibs/ietf/HC-ALARM-MIB: added (RFC 3434). + +2002-12-22 Frank Strauss + + * mibs/ietf/ENTITY-SENSOR-MIB: added (RFC 3433). + + * pibs/*: Moved PIBs from mibs/tubs/* to pibs/* and adapted + Makefiles and configure script accordingly. + +2002-12-19 Frank Strauss + + * mibs/ietf/{SNMP-FRAMEWORK-MIB,SNMP-MPD-MIB,SNMP-NOTIFICATION-MIB, + SNMP-PROXY-MIB,SNMP-TARGET-MIB,SNMP-USER-BASED-SM-MIB, + SNMP-VIEW-BASED-ACM-MIB,SNMPv2-MIB,SNMPv2-TM}: updated to + Full Standard (RFCs 3411-3418). + + * mibs/ietf/TRANSPORT-ADDRESS-MIB: added (RFC 3419). + +2002-11-29 Frank Strauss + + * mibs/ietf/SFLOW-MIB: added (RFC 3176). + +2002-11-19 Frank Strauss + + * tools/dump-{smi,sming,smiv3}.c: Fixed list of imports in case + of imported types only used for inline restricted types. Thanks + to Linda. + +2002-11-18 Frank Strauss + + * libsmi-0.4.1.tar.gz: released version 0.4.1. It's just time + for a new snapshot release: Since 0.4, there are some bug fixes, + enhancements especially to the XSD smidump driver and some + added and updated Standard MIBs. + +2002-10-23 Frank Strauss + + * lib/parser-smi.y: Fixed a missing error checks in case SMIv2 + application types that are not imported. Aligned with similar + checks for SPPI PIBs. Thanks to Mike. + + * mibs/iana/*: Updated the IANA MIBs as of 2002-10-23. + + * configure.in: Updated AC_DEFINE()'s to contain defaults and + removed the obsolete acconfig.h file. + +2002-09-06 Frank Strauss + + * mibs/ietf/L2TP-MIB: added (RFC 3371). + +2002-07-16 Frank Strauss + + * mibs/ietf/HC-RMON-MIB: added (RFC 3273). + +2002-07-09 Frank Strauss + + * lib/parser-smi.y: Fixed a NULL pointer dereference. Thanks to Bill. + + * mibs/ietf/DSMON-MIB: added (RFC 3287). + +2002-06-21 Frank Strauss + + * tools/: Updated man pages. + + * test/: Updated test suite. + + * libsmi-0.4.tar.gz: released version 0.4. There are two major + improvements in this release: It is the first release that + supports parsing and dumping of SPPI PIB modules (thanks to + Moritz for this great piece of good work!). Additionally the + support of an XML Schema dump format (smidump -f xsd) has + received a lot of enhancements, which might be of interest to + some people (thanks to Torsten for his great former and + ongoing work on all the details of this topic!). + +2002-06-19 Frank Strauss + + * lib/data.c: Fixed illegal reference to already freed type + structs in smiFreeData(). Thanks to Nick. + + * lib/parser-smi.h: Added a check for mismatching tables' + SEQUENCE OF types and row types. Thanks to Mike. + +2002-06-14 Frank Strauss + + * mibs/ietf/GSMP-MIB: added (RFC 3295). + +2002-06-10 Frank Strauss + + * lib/smi.c: call smiInit() in smiSetPath() if not yet initialized. + Thanks to Yogeshwara. + +2002-06-08 Frank Strauss + + * mibs/ietf/DIFFSERV-MIB,DIFFSERV-DSCP-TC: added (RFC 3289). + +2002-05-29 Frank Strauss + + * lib/data.c: Fixed lost named numbers in case of forward + referenced TCs and type assignments. + +2002-05-25 Frank Strauss + + * mibs/ietf/HDSL2-SHDSL-LINE-MIB: added (RFC 3276). + +2002-05-25 Frank Strauss + + * win/*: Patches from Erik to ease W32 support. + +2002-05-18 Frank Strauss + + * mibs/ietf/INET-ADDRESS-MIB: updated (RFC 3291). + +2002-05-17 Frank Strauss + + * lib/data.c: Fixed nodekind for iso, ccitt, and joint-iso-ccitt. + Thanks to Mark Kaplun. + + * mibs/ietf/INET-ADDRESS-MIB: updated to the new version + which is expected to be published as RFC rsn. + + * lib/parser-smi.y: Added check for counter access. + + * lib/check.c: Fixed check for not-accessible auxiliary objects. + + * parser-smi.y,mibs/tubs/*: Moritz Bunkus added a bunch of + patches so that we can now parser SPPI PIBs. There are also + a number of PIBs (temporarily in mibs/tubs/, as long as they + are not published). Thanks to Moritz for this good piece + of work. + +2002-04-22 Frank Strauss + + * lib/smi.c,...: Added a `parser' argument to the loadModule() + function so that line numbers can be reported when an imported + module cannot be loaded. Thanks to Mark Kaplun and Bill Fenner. + +2002-03-05 Frank Strauss + + * lib/check.c: Fixed a bug in the range normalization code. + Thanks to Joey Seek . + + * lib/error.c: When a severe error occurs (severity <= 0), it is + now the default error handler that terminates the process by exit(). + This means that an application now has the chance to install its + own error handler and call any cleanup code even in case of severe + errors. [Sorry, Dave, that it took sooo long to do this change.] + + * libsmi-0.3.1.tar.gz: released version 0.3.1. + +2002-02-28 Frank Strauss + + * lib/parser-smi.y: Added checks for appropriate nodekinds + of each node's parent node. + +2002-01-28 Frank Strauss + + * tools/dump-jax.c: Removed a misplaced `static' keyword from the + generated code. Thanks to Brian Remick . + +2002-01-12 Frank Strauss + + * mibs/ietf/DISMAN-SCHEDULE-MIB: updated (RFC 3231). + +2002-01-09 Frank Strauss + + * lib/parser-smi.y: Fixed segfault on illegal VARIABLES in + SMIv1 TRAPs. Thanks to . Sorry, I cannot determine + your name in ISO-8859-1. ;-) + + * smi/util.c: Fixed type derivation checks used for TDomain/TAddress + and InetAddressType/InetAddress checks. + + * tools/dump-xml.c: Added switches to turn DOCTYPE and XML Schema + specs off. + +2002-01-08 Frank Strauss + + * mibs/ietf/CIRCUIT-IF-MIB: added (RFC 3201). + + * mibs/ietf/FRSLD-MIB: added (RFC 3202). + + * tools/smidiff.c: Fixed warning messages on group membership + changes. Thanks to Bill. + +2001-12-27 Frank Strauss + + * tools/dump-perl.c: Martin Schulz submitted a patch to fix + the representation of notifications. + +2001-12-14 Frank Strauss + + * lib/parser-smi.y: Added check for incompatible types in SEQUENCE + item and object type definition. Thanks to Vivekanandan.V + . + +2001-11-23 Frank Strauss + + * libsmi-0.3.tar.gz: released version 0.3. + + * ANNOUNCE: Finalized things for release 0.3. + + * tools/smidiff.c: Torsten Klie and + Juergen Schoenwaelder have spent a + lot of work on this new tool during the past three months. + +2001-10-12 Frank Strauss + + * lib/parser-smi.y: Chris Avis supplied a + patch to detect zero value enumeration numbers in SMIv1, which + is illegal. + +2001-09-19 Frank Strauss + + * lib/parser-smi.y: Fixed warning on numerical OID DEFVALs. + +2001-08-31 Frank Strauss + + * lib/data.c: Fixed some missing fclose() calls. Thanks to + Abhay Deshmukh. + +2001-08-30 Frank Strauss + + * mibs/ietf/DISMAN-SCRIPT-MIB: updated (RFC 3165). + +2001-08-28 Frank Strauss + + * mibs/ietf/DOCS-BPI-MIB: added (RFC 3083). + + * mibs/ietf/INTERFACETOPN-MIB: added (RFC 3144). + +2001-08-27 Frank Strauss + + * win/makefile: Added a fix from Yigal. + + * lib/smi.c,data.c: #ifdef'ed caching, so that MSC systems + don't have problems. + +2001-08-24 Frank Strauss + + * libsmi-0.2.17.tar.gz: released version 0.2.17. + + * lib/smi.c: Fixed a bug with `-f/dev/null'. + +2001-08-22 Frank Strauss + + * lib/data.c,smi.c,...: Added support for multiple MIB data sets. + + * lib/check.c: Updated the InetAddressType/InetAddress check. + +2001-08-16 Frank Strauss + + * Makefile.in,...: Kicked out files from the CVS repository + that don't belong there and added an autogen.sh script. + + * lib/parser-smi.y,data.c: Fixed more memory leaks. + +2001-08-15 Frank Strauss + + * doc/draft-irtf-nmrg-smi-xml-00.txt,smi.dtd: Added these + files to document the xml output driver. Note that this + Internet Draft has expired. + + * lib/parser-smi.y,data.c: Added Bill's dmalloc patch and + trimmed down the number of non-freed chunks significantly. + +2001-06-25 Frank Strauss + + * lib/parser-smi.y: Added some checks for zero-length + descriptions, references, organizations, contacts, formats + and units strings. + +2001-06-12 Frank Strauss + + * lib/parser-smi.y: Added special treatment of RFC1065-SMI. + + * lib/parser-smi.y: Added optional OID between modulename and + `DEFINITIONS' (which is legal in ASN.1). + +2001-06-11 Frank Strauss + + * tools/dump-jax.c: Fixed a bug in the generated code for + notifications that have multiple OBJECTS; reported by + Teemu Koponen. + + * tools/smicache.in,lib/smi.c: Added a MIB caching scheme: + The configuration file may contain the new `cache' statement + which, in combination with an external caching program like + smicache, can be used to fetch MIB modules that are not found + in one of the local directories from any (remote?) resources. + Note that this is *experimental*! + +2001-06-06 Frank Strauss + + * lib/parser-smi.y,check.c: Bill contributed another table check + and improved two other checks. + + * lib/parser-smi.y: fixed a bug in checkObjects() reported by + Dave Shield. + +2001-05-08 Frank Strauss + + * tools/dump-python.c: Keith submitted a patch that turns + (unordered) index element sets into (ordered) lists. However, + it might cause other problems. + +2001-05-04 Frank Strauss + + * lib/Makefile.am: renamed parser-*.tab.c to parser-*.c. Harrie + Hazewinkel reported problems with libtool some systems would + have otherwise. + +2001-04-24 Frank Strauss + + * config.sub, config.guess: Updated to recent versions from GNU CVS + to get it working on PARISC. Thanks to LaMont Jones + . + +2001-04-18 Frank Strauss + + * tools/dump-xml.c: Fixed DOCTYPE root identifier to contain + no namespace prefix. Thanks to Andreas Goll. + +2001-04-14 Frank Strauss + + * libsmi-0.2.16.tar.gz: released version 0.2.16. + + * tools/smilint.c, smiquery.c: fixed obsolete use of the + optind variable. + + * libsmi-0.2.15.tar.gz: released version 0.2.15. + + * tools/dump-stools.c: Update for stools >= 0.1.16. + +2001-04-09 Frank Strauss + + * lib/parser-smi.y: Fixed RFC1155-SMI::Counter, Gauge, and + TimeTicks ranges. + +2001-03-15 Frank Strauss + + * tools/dump-jax.c: Fixed a bug on non not-accessible INDEX + columns, reported by Joerg Mattes . + +2001-03-12 Frank Strauss + + * lib/check.c: Bill contributed more checks on group/compliance + statements. + + * lib/check.c: Fixed core dump with recent type checks. Thanks + to Bill. + +2001-03-06 Frank Strauss + + * libsmi-0.2.14.tar.gz: released version 0.2.14. + + * lib/check.c: Added more type usage checks. + +2001-03-05 Frank Strauss + + * lib/parser-smi.y: Added some defval and type usage checks. + +2001-03-01 Frank Strauss + + * lib/parser-smi.y: Added checks to compare SEQUENCEs against + columnar objects. + +2001-02-26 Frank Strauss + + * lib/check.c: Lowered severity of recent compliant status checks. + + * lib/parser-smi.y: Bill contributed check for imported Counter64 + when used. + + * lib/check.c: Bill contributed check for node >= group >= compliance + status constraints. + +2001-02-15 Frank Strauss + + * lib/scanner-smi.l: Martin Schulz noticed a problem with + the use of the isspace() macro on Solaris. Thanks. + +2001-02-10 Frank Strauss + + * mibs/ietf/PINT-MIB: added (RFC 3055). + +2001-02-01 Frank Strauss + + * mibs/ietf/IPV6-MLD-MIB: added (RFC 3019). + +2001-01-26 Frank Strauss + + * lib/parser-smi.y: Martin Schulz fixed setting of UNITS + of OBJECT-TYPEs. Thanks! + +2001-01-24 Frank Strauss + + * libsmi-0.2.13.tar.gz: released version 0.2.13. + + * tools/dump-netsnmp.c: Juergen added support for manager stub + code. + +2001-01-04 Frank Strauss + + * tools/dump-jax.c: Null pointer fixes from Juergen. + + * tools/dump-perl.c: Martin Schulz contributed + a perl driver, based on the python driver. It maps each and every + piece of information to a string, even dates and and numerical + values. However, maybe it is useful to some people. + +2000-12-21 Frank Strauss + + * lib/parser-smi.y: Some well-known SMI identifiers imported + from RFC* modules are now suggested to be imported from SMIv2 + modules, where appropriate. This modifies an earlier patch + from Bill. + +2000-12-18 Frank Strauss + + * tools/dump-identifers.c: Juergen made dump-lines.c obsolete + by adding two options to the `identifiers' format. + +2000-12-15 Frank Strauss + + * tools/smidump.c: Bill contributed a `lines' dump format to + print line numbers of definitions. He contributed also a patch + that allows the `identifiers' format to report identifiers with + OID definitions that could not be resolved (as in {mib-2 xxx}). + + * lib/parser-smi.h: Bill added special handling for unintentionally + terminated comments and hints on definitions that could be imported + from more recent modules. + +2000-12-12 Frank Strauss + + * lib/dump-*.c: More patches from Juergen. Most drivers are + now `-o file' aware. The `imports' driver does no longer hang + in an endless loop on recursive imports. + +2000-12-11 Frank Strauss + + * lib/parser-*.h: yyerror-verbose is now non-optional. + + * tools/dump-*.c: Juergen fixed various dump drivers. `cm' is + now a single format with an `explain' option. Man pages are + updated to include long options. + +2000-12-09 Frank Strauss + + * tools/dump-*.c: Fixes from Juergen. + +2000-12-08 Frank Strauss + + * mibs/ietf/NOTIFICATION-LOG-MIB: added (RFC 3014). + + * mibs/ietf/FR-MFR-MIB: added (RFC 3020). + +2000-12-05 Frank Strauss + + * libsmi-0.2.12.tar.gz: released version 0.2.12. + + * configure.in: Bill added --with-yyerror-verbose option. + + * lib/parser-smi.y: Patch from Bill: Reset capabilitiesModulePtr + at the end of each module. Fixed typo in unsigned32. Fixed + flawed data structures for Opaque as well. Removed a bunch of + unnecessary setTypeParent() and setTypeDecl() calls. + +2000-12-04 Frank Strauss + + * lib/parser-smi.y: Fixed `GAUGE32 integerSubType' rule. + + * lib/parser-smi.y: Fixed flawed data structures in case of + illegal range sub-typing of enum types and enum sub-typing of + range restricted integer types. Thanks to Bill for the hints. + +2000-11-30 Frank Strauss + + * tools/smidump.c: Juergen fixed some bugs and added some + modifications changes to the recent smidump changes. + +2000-11-29 Frank Strauss + + * win/config.h.in: Added to the distribution files. + + * libsmi-0.2.11.tar.gz: released version 0.2.11. + + * tools/dump-*.c: Now all smidump driver modules register their + format drivers with smidump with an init_() function. + Additionally, we allow a driver to register format specific + options. See dump-identifiers.c for a first small example. + + * tools/shhopt.[ch]: Added support for long options. Thanks + to Sverre H. Huseby for his small and beatiful shhopt library. + See http://shh.thathost.com/pub-unix/. + +2000-11-27 Frank Strauss + + * tools/dump-*.c: Fixed some minor compiler warnings. + + * ltconfig: Updated to libtool 1.3.5. + + * win/GNUmakefile: Added this GNU makefile using the MSVC compiler + contributed by Yigal Hochberg. + + * lib/check.c: Bill Fenner fixed wrong line numbers reported + on TCs. + +2000-11-24 Frank Strauss + + * libsmi-0.2.10.tar.gz: released version 0.2.10. + + * configure.in: Fixed broken 64 bit type configuration. + +2000-11-20 Frank Strauss + + * changed filenames of file created by the corba and netsnmp + dump drivers. Adapted test suite. + + * libsmi-0.2.9.tar.gz: released version 0.2.9. + +2000-11-16 Frank Strauss + + * smi.conf-example: Added a configuration file example. + + * configure.in: Dir separator is now configurable and distinguished + in util/smiIsPath(). + + * win/*: Some changes for clean MSVC compilation. Yigal. + +2000-11-14 Frank Strauss + + * win/config.h: Added macros for 64 bit types on MSVC systems. + Added a necessary compiler flag to compile scanner-*.c on MSVC. + Thanks to Yigal. + + * configure.in: Fixed: completely broken AC_TRY_RUN check for + 64 bit types. Somehow, I did it in a way that was syntactically + correct. ;-) + + * acconfig.h: renamed MIN/MAX macros to suppress redefinitions + on Solaris 2.6+. + +2000-11-13 Frank Strauss + + * libsmi-0.2.8.tar.gz: released version 0.2.8. + + * test/Makefile.am: Added tests for formats: identifiers, + metrics, xml, cm, python. + + * tools/dump-jax.c: Fixed dangling pointers. Test suite + is happy again. + + * tools/dump-corba.c: The driver now creates idl and oid files + instead of writing to stdout. + + * test/*: Reorganized the test suite. All scripts for + smidump scripts are now identical. Added jax test (and found + a bug that is not yet fixed). + +2000-11-12 Frank Strauss + + * tools/dump-netsnmp.c: Renamed dump-ucdsnmp.c to dump-netsnmp.c. + + * test/Makefile.am: Commented out checks for the obsolete + corba-{idl,oid} checks to make the test suite happy. + + * configure.in: The availability of `long long' type is now + checked during configuration. The result now also affects printf + formats. + + * configure.in: Path separator is now configurable (useful to + use ":" instead of ";" as well in cygwin environments). + +2000-11-09 Frank Strauss + + * tools/smidump.c: Juergen did a major rework of the internal + smidump interface for the output drivers. Visible changes: + corba-idl and corba-oid are integrated into a single format + corba; -o option. + +2000-11-08 Frank Strauss + + * mibs/iana/*: Updated IANA maintained modules. + + * lib/parser-smi.y: Suppressed an module conformance error + message in case of SMIv1. + +2000-11-08 Frank Strauss + + * lib/check.c,parser-smi.y: Bill Fenner fixed some duplicated + error messages. + + * tools/dump-smi.c,dump-tree.c: Bill Fenner fixed some core + dumps on erroneous MIB modules. + + * tools/dump-ucdsnmp.c: Juergen changed the UCD-SNMP driver + so that it now creates three file (header, stubs & implementation) + with a single smidump format option (netsnmp). + + * lib/parser-smi.y: Added checks for illegal subtyping; adjusted + test suite, so that is runs successfully for all current tests. + + * lib/scanner-smi.l,scanner-sming.l: Bill Fenner contributed + a patch to continue scanning after unexpected characters have + been read. + +2000-11-06 Frank Strauss + + * libsmi-0.2.7.tar.gz: released version 0.2.7. + + * lib/parser-smi.y: Fixed `0' ranges for some core types on Solaris. + + * lib/smi_config.3.in: Updated the library man pages. + + * tools/smidump.c: addModule() now inserts NULL module at the + head of the list as expected by the dump drivers. + + * lib/check.c: Added checks for OID redifinitions and recursive + definitions, based on a contribution from Bill Fenner. + + * lib/smi.h.in: Added a SmiModule.conformance attribute that + allows applications to determine, `how syntactically correct' + a module is. + +2000-11-04 Frank Strauss + + * mibs/ietf/DISMAN-EVENT-MIB: added (RFC 2981). + + * mibs/ietf/DISMAN-EXPRESSION-MIB: added (RFC 2982). It needed + a small fix. + +2000-11-01 Frank Strauss + + * lib/smi.c: Reworked the smiPath initialization upon a hint + from Bill Fenner. Note that the order of evaluation of the SMIPATH + environment variable and configuration files has changed and that + the syntax of `path' commands in configuration files has changed. + See smi_config(3), section MODULE LOCATIONS for details. + +2000-10-27 Frank Strauss + + * lib/check.c: Juergen fixed index checks for Bits/fixed-length + octet strings. + +2000-10-25 Frank Strauss + + * tools/smidump.c: Removed again `-X' option to eliminate parser + options that might lead to different results. + +2000-10-21 Frank Strauss + + * lib/error.c: Added a fourth arg to the error handler representing + the error name. This has been wished and contributed by Bill Fenner. + Note that this changed the API slightly. + +2000-10-20 Frank Strauss + + * lib/check.c: Fixed index length checks for OCTET STRINGs, + IpAddresses and OBJECT-IDENTIFIERs. Thanks to Bill Fenner. + + * lib/error.c: Fixed two minor typos. Thanks to Bill. + +2000-10-19 Frank Strauss + + * tools/dump-python.c: a new dump format to generate Python MIB + dictionary code. Contributed by Pat Knight. + + * tools/dump-xml.c: Fixed missing end tag of rows and tables + in certain cases. Contributed by Pat Knight. + + * tools/smidump.c: Added option `-X' for `lax' parsing. Some + people wish to accept things like underscores or upper case + first letters in object type names. Note that it is usually + a *bad* idea to use lax parsing! + +2000-10-18 Frank Strauss + + * mibs/ietf/FRNETSERV-MIB: updated (RFC 2954). + + * mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB: added (RFC 2955). + +2000-10-17 Frank Strauss + + * tools/dump-ucdsnmp.c: Juergen fixed BITS handling. + +2000-10-12 Frank Strauss + + * mibs/ietf/RTP-MIB: added (RFC 2959). + + * mibs/ietf/COPS-CLIENT-MIB: added (RFC 2940). + +2000-10-07 Frank Strauss + + * mibs/ietf/IPMROUTE-STD-MIB: added (RFC 2932). + + * mibs/ietf/IGMP-STD-MIB: added (RFC 2933). + + * mibs/ietf/PIM-MIB: added (RFC 2934). + +2000-10-05 Frank Strauss + + * mibs/ietf/DISMAN-NSLOOKUP-MIB,DISMAN-PING-MIB,DISMAN-TRACEROUTE-MIB: + added (RFC 2925). + +2000-10-04 Frank Strauss + + * lib/scanner-smi.l: Fixed lex'ing of comments. Thanks to + Bill Fenner. + +2000-10-02 Frank Strauss + + * lib/data.c: Changed all function header to ANSI style. + + * configure.in: changed compiler flags in case of Sun WorkShop + compiler. Thanks to Bert Helthuis. + + * mibs/ietf/RDBMS-MIB: Fixed an unknown imported identifier. + Thanks to Pat Knight. + +2000-10-01 Frank Strauss + + * mibs/ietf/PTOPO-MIB: added (RFC 2922). + +2000-09-26 Frank Strauss + + * mibs/iana/IANA-RTPROTO-MIB: added IANA maintained MIB module. + +2000-08-28 Frank Strauss + + * mibs/ietf/UPS-MIB: fixed two illegal integer range restrictions. + +2000-08-24 Frank Strauss + + * tools/dump-identifiers.c: update from Juergen. + +2000-08-18 Frank Strauss + + * tools/dump-identifiers.c: added simple list of all identifiers. + + * tools/dump-cm.c: minor changes by Andreas. + +2000-07-17 Frank Strauss + + * libsmi-0.2.5.tar.gz: released version 0.2.5. + + * configure.in (LIBTOOL_VERSION): added checks for additional + Sun compiler flag (others may follow) to make the flex generated + scanner happy about prototypes. + + * lib/smi.h.in: many compilers are unhappy with empty structures + (not only MS VC++). + + * lib/scanner-smi.h: moved YY_DECLs from scanner-*.h to scanner-*.l. + +2000-07-11 Frank Strauss + + * win/Makefile.mingw: Updated to reflect check.c and dump-metrics.c. + +2000-07-05 Frank Strauss + + * tools/dump-jax.c: simplified output by moving some code to + the static parent class of the JAX package. Some code cleanups. + +2000-07-04 Frank Strauss + + * lib/parser-smi.y: fixed line numbers of object, type, and + macro definitions to be the first line of the defining SMI + statement. + + * lib/check.c: Bill Fenner contributed a patch that fixes + the location of complained identifiers if they are imported. + +2000-06-28 Frank Strauss + + * libsmi-0.2.4.tar.gz: released version 0.2.4. + + * lib/smi.h.in: added more library version information. + + * tools/dump-jax.c (dumpEntry): added entry get methods for + index elements. Thanks to Sven. + + * mibs/ietf/IF-MIB: updated (RFC 2863). + + * mibs/ietf/IF-INVERTED-STACK-MIB: added (RFC 2864). + +2000-06-21 Frank Strauss + + * mibs/ietf/HCNUM-TC: added (RFC 2856). + + * tools/dump-xmp.c: Juergen updated the XML dump format. + + * lib/scanner-smi.l: Fixed scanning of module files ending + without a newline. + + * win/: Juergen changed some win things. + +2000-06-20 Frank Strauss + + * mibs/ietf/RFC-1212: fixed recursive import. + + * lib/check.c: Juergen added various checks for INDEX clauses. + + * lib/check.c: added various checks for range and size restrictions. + +2000-06-19 Frank Strauss + + * lib/smi.c (smiReadConfig): Fixed path separator when path + values from the configuration file get concatenated. + + * mibs/ietf/: Fixed some imports. + + * win/makefile.vc: Minor fixes. Thanks to Yigal Hochberg. + +2000-06-18 Frank Strauss + + * libsmi-0.2.3.tar.gz: released version 0.2.3. + + * Makefile.am: added the win/ directory to the distribution. + +2000-06-16 Frank Strauss + + * libsmi-0.2.2.tar.gz: released version 0.2.2. + + * Juergen sent a huge patch: moved parser checks to a separate + C file, aligned error messages, aligned identifier prefixes, + aligned MIB test suite. + + * mibs/ietf/INET-ADDRESS-MIB: added (RFC 2851). + +2000-06-15 Frank Strauss + + * tools/dump-jax.c: added a missing .0 instance indentifier + for scalar objects. + + * lib/error.c: Juergen added some code for error lists and + error handlers. + +2000-06-14 Frank Strauss + + * lib/data.c: Juergen refined the conditional expensive checks + for identifier redefinitions. + + * lib/util.c: introduced a unique identifer prefix for util + functions. + + * tools/dump-jax.c: fixed some compiler warnings. + + * lib/parser-smi.y: fixed some compiler warnings. + + * lib/parser-smi.y: adjusted lines of definition in cases of + forward references. + + * lib/data.c (freeData): fixed a misplaced free() that caused + endless loops. + + * mibs/ietf/: removed RFC-1213 and fixed some modules to + import RFC1213-MIB instead of RFC-1213. + +2000-06-08 Frank Strauss + + * configure.in: added dmalloc option. + + * lib/util.c (timegm): fixed access to freed memory. Thanks + to Bill Fenner. + +2000-06-07 Frank Strauss + + * tools/smistrip.in: patch to strip modules from I-Ds. + + * lib/parser-smi.y: added checks for range restrictions applied + to enumeration types. + + * test/: adjusted LIBSMI-TEST-* mibs and dumps/ files to + satisfy the test suite. + + * lib/parser-smi.y: fixed crashes in case of lowercase identifier + DEFVALs for objects that are neither enums nor oids. Thanks to + Bill Fenner. + + * lib/parser-smi.y (checkObjects): fixed crashes in case of + unknown oids. + + * lib/smi.c (smiGetNextNode): fixed segfault caused by missing + modules. + + * tools/dump-jax.c (dumpScalars): fixed setScalar OID check. + Thanks to Bill Rizzi. + +2000-06-06 Frank Strauss + + * tools/: minor patches from Juergen. + + * tools/dump-types.c: dumping also implicit types. + + * mibs/ietf/ and mibs/iana: various MIB module updates. + + * mibs/ietf/RMON-MIB: updated RMON-MIB (RFC 2819). + +2000-06-02 Frank Strauss + + * lib/parser-smi.y (checkObjects): fixed endless loop, as + occuring in original Modem-MIB for mdmMIB (RFC 1696). + + * mibs/ietf/: added FIBRE-CHANNEL-FE-MIB. + +2000-05-30 Frank Strauss + + * lib/parser-smi.y: Juergen added code for checks of inherited + types. + +2000-05-26 Frank Strauss + + * tools/dump-cm.c: changed dump driver calling conventions + from Juergen. dump-cm patch from Andreas. + +2000-05-25 Frank Strauss + + * libsmi-0.2.1.tar.gz: released version 0.2.1. + +2000-05-20 Frank Strauss + + * tools/dump-metrics.c: New output format supplied by Juergen. + It prints metrics of MIB modules. + +2000-05-18 Frank Strauss + + * tools/dump-smi.c (printNotifications): fixed determination of + the ENTERPRISE object. Thanks to Ira Wolf. + + * tools/dump-smi.c (getOidString): fixed printing of OIDs with + a length of 2. Thanks to Ira Wolf. + + * test/Makefile.am: removed GNU specific diff options + from check scripts. + +2000-05-17 Frank Strauss + + * lib/data.c (setObjectName): fixed crashes on unresolved + labels. Thanks to Bill Fenner. + + * win/: applied patches from Erik. + +2000-05-16 Frank Strauss + + * lib/data.c (loadModule): added checks for missing imported + modules. + + * configure.in: fixed mibdir default. Thanks to Saurabh. + + * lib/data.c (setObjectName): fixed bug in case of multiple + definitions for the same OID in multiple modules. + + * tools/dump-jax.c: Patch from Juergen: made file creation more + generic. + +2000-05-15 Frank Strauss + + * tools/dump-jax.c (dumpEntry): changed *EntryImpl classes to + use the super() method. + +2000-05-02 Frank Strauss + + * tools/smidump.c: Patch from Juergen: flags can now be passed + to the dump modules. + +2000-04-12 Frank Strauss + + * lib/parser-smi.y: fixed seg-faults on various imported but + not found definitions. Based on a patch contributed by + Bill Fenner. + +2000-04-11 Frank Strauss + + * tools/dump-smi.c: fixed trailing comma in SMIv1 SEQUENCEs. + Reported by Ira Wolf. + + * tools/smistrip.in: fixed bug reported by Ira Wolf: now we do not + terminate a module when we've read the `END' of a macro definition. + + * win/: added VC++ build directory; Erik and Juergen. + + * tools/dump-{java,jdmk,dia}: removed obsolete experimental formats. + +2000-04-10 Frank Strauss + + * tools/dump-smi.c: fixed 'xxxx'H DEFVALs as suggested by Ira Wolf. + + * tools/dump-cm.c: Update from Andreas. + + * Erik contributed various patches to compile libsmi in Win32 + systems using the VC++ compiler. Juergen aligned some of them. + Some are still left to be done. + +2000-04-08 Frank Strauss + + * tools/dump-cm.c: added conception model (cm) dump format from + Andreas Mueller. + + * tools/dump-xml.c: various cleanups from Juergen. + +2000-04-04 Frank Strauss + + * tools/dump-smi.c: applied some patches from Ira Wolf. + +2000-03-20 Frank Strauss + + * Keith Dart has contributed a Python + binding. See the mailinglist archive. + +2000-03-29 Frank Strauss + + * tools/: removed some obsolete header files. + + * tools/: some cleanups from Juergen. + + * tools/dump-jax.c (dumpScalars): added Sven's patches for + notifications and scalar groups. + +2000-03-21 Frank Strauss + + * tools/*.c: added dump-xml from Juergen. replaced bcmp by memcmp. + fixed multiple printing of groups in dump-sming.c. + + * mibs/ietf/: added HOST-RESOURCES-MIB and HOST-RESOURCES-TYPES. + + * lib/data.h: changed //-comment to /* comment */. + + * tools/dump-sming.c: modified quoted string indentation from + absoulte to relative. + +2000-03-20 Frank Strauss + + * mibs/ietf/: added SNMP-COMMUNITY-MIB. + +2000-03-19 Frank Strauss + + * mibs/ietf/: added SLAPM-MIB and SNMP-USM-DH-OBJECTS-MIB. + +2000-03-02 Frank Strauss + + * tools/dump-jax.c: A new dump format (it writes separate files + instead to stdout) has been started for Java AgentX sub-agent code. + + * David Reeder contributed a C++ interface. + See the mailinglist archive. + +2000-02-28 Frank Strauss + + * lib/smi.c: Remember the longest common OID prefix of all nodes + defined in a module. This is used by smiGetFirstNode() and + smiGetNextNode() to limit the searched subtree. + + * lib/smi.h.in: Dropped SmiValueformat. The way a value is + specified in a module file is no longer visible at the API. + +2000-02-24 Frank Strauss + + * lib/parser-smi.y: fixed basetype in default value SmiValue + structs. + + * tools/dump-smi.c (getValueString): fixed printing of zero-length + binary and hexadecimal strings in several dump modules. fixed + braces in BITS default values. + + * lib/parser-smi.y (checkDefvals): OID DEFVALs are now + represented as a string of the form ``Module::name'' with + SmiValueformat == SMI_VALUEFORMAT_NAME. + + * lib/scanner-smi.l: Juergen applied some *enormous* scanner + speedup patches. + + * lib/smi.h.in: A new flag SMI_FLAG_NODESCR can be used to + suppress storage of descriptions and references in memory. + +2000-02-15 Frank Strauss + + * ANNOUNCE: Finalized things for release 0.2. Many bugs + have been fixed and things have changed against the latest + 0.1.x release. Only some of them are listed below. + +2000-02-12 Frank Strauss + + * lib/parser-smi.y: Rudimentary AGENT-CAPABILITIES support. + They can be parsed to nodes and dumped as nodes or object + identities in SMIv1/v2/ng. Other attributes than status, + description and references are not yet supported. + + * lib/parser-smi.y: Solved all shift/reduce and reduce/reduce + conflicts of the SMIv1/v2 grammar. + +2000-02-10 Frank Strauss + + * lib/smi.c: Types of tables (SEQUENCE) and rows (SEQUENCE OF) + are now hidden from the API. + + * tools/smiquery.c: implicitly defined types are no longer + exported with visible names. So `smiquery type ...' now must + detect node names to retrieve their implicit types. + + * mibs/ietf/SNMPv2-USEC-MIB: added module (RFC 1910). + + * lib/smi.c: fixed smiGetXXX() functions to find items even + if no module is specified. + + * lib/smi.h.in: added path to struct SmiModule. + + * ATTENTION: all the (internal and API) data structures are + changed for significantly improved performance. This means that + applications must be adapted to recompile, but it's worth! + + * configure.in: incremented libtool versioning major number. + +2000-02-09 Frank Strauss + + * tools/smilint.c: added `-c configfile' option to the three + tools. It allows to explicitly specifiy a configuration file. + If at least one configfile is specified no default files are + read. + + * mibs/tubs/TUBS-SMI: some changes to the TUBS-* MIBS from Juergen. + + * configure.in: fixed misused $prefix + + * tools/dump-corba.c: fixed module names of augmented entries. + + * tools/dump-tree.c: nodes that are not defined in the local + module are gone. augmentation entries now list the index + elements. + + * tools/dump-smi.c: fixed SMIv1 INDEX clauses where an SMIv2 + AUGMENTS clause was parsed. + +2000-02-07 Frank Strauss + + * tools/dump-mosy.c: fixed determination of types of %tc's and + objects; added special type `ObjectID'. Added distinction of + read-write/read-create. Checked output against mosy output for + some standard modules (IF-MIB, RMON2-MIB, ...). + +2000-02-06 Frank Strauss + + * lib/parser-sming.y: added parsing of SMIng extension statement. + Its contents are stored in new elements of struct SmiMacro. + + * lib/parser-smi.y: made the mktime() call for parsed date + information timezone idependent. + +2000-02-05 Frank Strauss + + * lib/smi.h: removed lastupdated from SmiModule. This information has + to be retrieved from the associated SmiRevisions, if present. + + * ATTENTION: first steps towards a reorganisation of internal + data structures. This also leads to major changes in the API. + +2000-02-02 Frank Strauss + + * lib/parser-smi.y: Juergen added checks for illegally imported + SMI types and ASN.1 type definitions instead of TCs in SMIv2. + +2000-01-28 Frank Strauss + + * lib/parser-smi.y: Juergen added special handling for the + NetworkAddress SMIv1 type. + + * tools/smiquery.c: Juergen fixed crash on unknown node and + introduces SMIng notation for fully quallified identifiers. + +2000-01-27 Frank Strauss + + * lib/parser-smi.y: Andrew Hood pointed out wrong typed constants. + + * test/Makefile.am: Andrew supplied a patch so that make check + works even before make install. + +2000-01-26 Frank Strauss + + * mibs/ietf/AGENTX-MIB: MIB module added. + +2000-01-13 Frank Strauss + + * lib/scanner-smi.l: Bert Helthuis pointed out an incorrect warning + when SNMPv2-SMI is parsed. Fixed. + + * Juergen Schoenwaelder applied a lot of memory leak fixes, error + detections and cleanups. + +2000-01-07 Frank Strauss + + * mibs/ietf/MIP-MIB: Bert Helthuis gave a hint on a slight bug + in MIP-MIB. Fixed. + +2000-01-04 Frank Strauss + + * lib/parser-smi.y: Added TRAP-TYPE handling. Changed + ExtUTCTime handling. + +2000-01-03 Frank Strauss + + * lib/parser-smi.y: added revision by LAST-UPDATED clause for + modules without any REVISION clause. + + * Juergen contributed another patch: SMIv1/SMIv2 scanner/parser + now get numbers as numbers and not as strings. Fixed a Y2K bug in + parser-smi.y. Make sure we use util_malloc() and friends + everywhere. Added a length check for identifiers in SMIng. Rewrote + the length checking code for SMIv1/SMIv2 to make it shorter. + Removed malloc error checks that will never happen. + +1999-12-22 Frank Strauss + + * Juergen contributed a lot of patches: some error cleanups, + some scanner/parser cleanups, automatic SMI language recognition, + and some more. + +1999-12-15 Frank Strauss + + * added two IETF MIB modules. + + * fixed a recent bug on MODULE-COMPLIANCE statement parsing. + +1999-12-14 Frank Strauss + + * libsmi-0.1.8.tar.gz: released version 0.1.8. + + * replaced updated SMIng I-D. updated README. minor cleanups. + + * tools/*.1.in: updated option lists in man pages. + + * lib/smi.c (smiReadConfig): changed config file syntax. + + * lib/error.c: moved fatal errors to level -1 and non-error + output (statistics) to level 0. + + * lib/data.c (loadModule): fixed lex recursion level of + statistics output. + + * mibs/ietf/RFC1158-MIB (IpNetToMediaEntry): fixed typos in + original MIB. + +1999-12-13 Frank Strauss + + * lib/parser-smi.y: fixed wrong complaints about imported but + unused identifiers in MODULE sections of MODULE-COMPLIANCE + statements. + + * lib/error.c (errorSeverity): error severities can now be + changed, e.g. by smilint `-i error-name-prefix options or config + file `hide error-name-prefix commands, the severity of all errors + with names prefixed by the pattern is raised to 9. this means + they only show up at error level 9. Note, that not yet all errors + have names, since it's not easy to find explanatory names with + grouping prefixes. + + * lib/smi.c: new config file commands: `path' prepends an element + to the module search path. `level' sets the error level. + + * lib/parser-smi.y: Opaque size restrictions are now allowed. + Warning about Opaque usage in SMIv2 modules. + +1999-12-10 Frank Strauss + + * lib/smi.c (smiReadConfig): a global and a user configuration + file are now read, if existent: /usr/local/etc/smi.conf and + ~/.smirc. The first and only directive `load ' may be + used to preload any MIB modules. This feature still needs some + enhancements, like per application directives. + +1999-11-01 Frank Strauss + + * tools/smidump.c: Again, Juergen Schoenwaelder contributed + a huge chunk of patches that improve dump formats. The CORBA + IDL output is updated and an smidump option to suppress comments + (-s) has been added. + +1999-10-25 Frank Strauss + + * tools/smistrip.in (VERSION): smistrip (plus man page) has + been added to the libsmi distribution. It allows to extract + modules from text documents like RFCs and I-Ds. + +1999-10-07 Frank Strauss + + * libsmi-0.1.7.tar.gz: released version 0.1.7. + + * lib/error.c: added check for illegal type restrictions + in SEQUENCEs. + +1999-10-06 Frank Strauss + + * mibs/Makefile.am: the MIB module files have been reorganized in + subdirectories and updated to the latest RFCs and IANA modules. + +1999-10-05 Frank Strauss + + * test/Makefile.am: restructured tests slightly. + + * mibs/Makefile.am: added a huge amount of (nearly all current?) + Standard MIBS and some more. They still have to be checked + for completeness and `libsmi robustness'. + +1999-10-04 Frank Strauss + + * lib/parser-smi.y: fixed problems with OID DEFVALS in SMIv1 + modules. now {0 0} works. + + * lib/smi.c (smiGetParentNode): fixed a bug where the wrong + node has been returned for implicitly defined nodes as used + in notification types. + + * lib/smi.c (smiGetNextNode): fixed a similar bug here that + caused loops. + + * lib/parser-smi.y: added check for multiple groups or + object refinements for the same object in a single + compliance statement. this caused loops before. + + * tools/smidump.c: applied another patch by Juergen Schoenwaelder + that beautifies various dump formats and introduces a regression + test system. + +1999-10-01 Frank Strauss + + * lib/parser-smi.y: fixed range of Counter64. + + * tools/dump-types.c: applied a patch by Juergen Schoenwaelder + that beautifies the dump formats for imports and types. + +1999-09-30 Frank Strauss + + * lib/parser-smi.y: fixed some more decl settings. + + * tools/smidump.c: applied a huge patch by Juergen Schoenwaelder + that reorganizes the smidump format modules and adds a (not + yet compiled) new format for xfig figures. + +1999-09-29 Frank Strauss + + * lib/data.h: new struct Value. Now all smi.h structs are + separated from the data.h structs. This was needed to handle + OID DEFVALs correctly. + + * tools/smiquery.c (main): added default values und beatified + some other output. + + * lib/smi.h: SMI_DECL_IMPLICIT_TYPE denotes implicitly defined + types. Fixed some other decl settings for types in the SMIv1/v2 + parser. + + * tools/dump-data.c: Applied a patch from Juergen Schoenwaelder + that fixes some types for the tree dump format. + +1999-09-27 Frank Strauss + + * configure.in: added checks for 64bit strtoX() functions to + work on FreeBSD systems. + +1999-09-24 Frank Strauss + + * tools/dump-smi.c: fixed some generated import for SMIv1 + modules. also fixed some typename conversions for SMIv2 + modules generated from SMIv1. + + * lib/smi.c: fixed a conceptual bug that led to loops when a + single node appears multiple times in a list like in OBJECTS + of a NOTIFICATION-TYPE. This is similar to the earlier bug with + multiple items in an index clause. Hence, the struct SmiIndex + has been renamed to SmiListItem is used for different kinds + of lists. This also made some API functions obsolete that have + been removed: smiGetFirst/NextMemberNode, + smiGetFirst/NextObjectNode, smiGetFirst/NextMandatoryNode. + The bug has been reported by Ira Wolf on comp.protocols.snmp. + +1999-09-23 Frank Strauss + + * lib/data.c (mergeNodeTrees): fixed a nasty ptr bug reported + by Jochen Friedrich some weeks ago. + + * lib/parser-sming.y: a checkFormat() call contained a wrong + argument, leading to claimed format data that are correct. + + * lib/parser-smi.y: David Reeder pointed out a slight bug where + an error message contained a wrong argument. + + * tools/dump-mosy.c: Juergen Schoenwaelder contributed further + patches to various dump modules and some checks in SMI and SMIng + parsers. + + * tools/dump-ucdsnmp.c: Juergen Schoenwaelder contributed this + new dump module that generates UCD-SNMP mib2c like output. + +1999-07-09 Frank Strauss + + * mibs/: extracted updated MIB modules from RFCs. + + * lib/data.c: findObjectByNode() now first looks for objects in + the current view. + +1999-07-02 Frank Strauss + + * tools/smidump.c: Juergen Schoenwaelder contributed further + smidump cleanup and formats: CORBA IDL files can be written + according to the JIDM specifications (formats corba-idl and + corba-oid) and nice trees of MIB nodes can be drawn with the + tree format. + +1999-06-30 Frank Strauss + + * lib/error.c: added minor checks + + * lib/smi.h: removed SEQUENCE and SEQUENCEOF basetypes. + Removed WRITE_ONLY and READ_CREATE access values. + +1999-06-23 Frank Strauss + + * libsmi-0.1.6.tar.gz: released version 0.1.6. + +1999-06-22 Frank Strauss + + * tools/smidump.c: Juergen Schoenwaelder contributed another + smidump patch: now smidump supports SMIv1 output format. + +1999-06-21 Frank Strauss + + * lib/data.c: fixed a bug with merging two subtrees of nodes + defined in two separate MIB files (reported by Jochen Friedrich). + +1999-06-17 Frank Strauss + + * lib/parser-smi.y: fixed incorrect base types of SNMPv2-SMI + application types. + +1999-06-16 Frank Strauss + + * libsmi-0.1.5.tar.gz: released version 0.1.5. + + * tools/dump-java.c: started a new dump format that represents + java classes for MIB tables. This is experimental and may be + removed from smidump in future revisions. + + * lib/data.c: more changes to internal data structure to make + them language independant, especially hiding all occurances + of the SMIng namespace operator `::'. + + * data.c: cleaned up libsmi base types to be less language + dependant. + + * lib/smi.h: add API function smiGetNodeByOID() to retrieve + an SmiNode based on an OID given by an integer array. + + * lib/smi.c: smiGetNode() now returns the node with the longest + common OID prefix, if its argument is given by OID. + +1999-06-15 Frank Strauss + + * lib/smi.h: added SmiLanguage and an appropriate element to the + SmiModule struct to represent the language that has been used to + read a MIB module. + +1999-06-14 Frank Strauss + + * lib/smi.h: Hiding knowledge on the underlying language from + the API: SmiNode contains a new element `nodekind' that represents + the kind of any node in the tree independant from the actual + language statement. Hence, most application no longer need to + use SmiDecl. smiquery and smidump are adapted accordingly. + +1999-06-11 Frank Strauss + + * lib/smi.c: implemented smiGetFirstChild() and smiGetNextChild(). + + * lib/smi.h: OIDs are now represented by a more efficient array + of integers instead of a string. + +1999-06-10 Frank Strauss + + * test/parser.test.in: started to write a set of MIB modules + to test the capabilities of MIB parsers to detect syntax and + semantic errors. + + * tools/dump-smi.c: fixed bug when dumping modules without + any compliance statement. + + * libsmi-0.1.4.tar.gz: released version 0.1.4. + + * lib/error.h: undef'ed yyerror to suppress compile warning. + + * tools/dump-sming.c (printObjects): fixed bug with missing + nodes read from OBJECT-IDENTITY constructs. + + * lib/parser-sming.y: fixed bug in name creation of pseudo types + in compliance statements. + +1999-06-09 Frank Strauss + + * lib/parser-smi.y: fixed bug in name creation of pseudo types + in compliance statements. + + * lib/data.c: added `.smiv2' extension to look for SMIv2 files. + + * tools/dump-smi.c: the dump format `smiv2' is back! + + * lib/parser-smi.y: fixed bug with wrong module references + in compliance statements. + +1999-06-08 Frank Strauss + + * libsmi-0.1.3.tar.gz: released version 0.1.3. + + * lib/parser-sming.y: fixed various SMIng related bugs. + + * tools/dump-sming.c: fixed bug when printing OIDs with more + than one trailing sub-identifiers that cannot be resolved to + identifers. + + * tools/dump-sming.c (printGroups): no longer sorting group + statements separately based on underlying OG/NG types, but + continuously based on OID. + + * lib/smi.c (smiGetNode): fixed bug, when retrieving node by + OID. + +1999-06-07 Frank Strauss + + * lib/smi.c: added path expansion semantics if SMIPATH + environment variable starts or ends with a colon. + + * test/Makefile.am: started some test routines. + + * lib/parser-sming.y: SMIng `create' statement bugfix. + + * configure.in: added checks for flex and bison. + + * tools/dump-mosy.c: Juergen Schoenwaelder contributed a + dump module to generate MOSY conformant output and patches + to clean up the management of dump formats. + + * tools/dump-sming.c: bug fix on SMIng subtype syntax. + +1999-06-05 Frank Strauss + + * lib/smi.c: minor fixes. + +1999-06-04 Frank Strauss + + * tools/dump-imports.c: added `imports' format do smidump to + display the import hirarchy of a module. + + * lib/parser-smi.y: bugfix: allow status `deprecated' in SMIv1 + modules. + + * tools/smiquery.c: adapted index command. + + * lib/smi.h: had to add struct SmiIndex and smiGetFirstIndex() + and smiGetNextIndex(), since otherwise we have no chance to + distinguish objects that apear more than once in a single + index clause, like in RMON2-MIB::alHostEntry. + + * mibs/RFC1271-MIB: MIB file added. + + * tools/dump-sming.c: some bugfixes. + + * lib/parser-sming.y: bugfix for adjustments of forward references + in index structs. + +1999-06-03 Frank Strauss + + * libsmi-0.1.2.tar.gz: released version 0.1.2. + + * lib/smi.c: added smiGetPath() and smiSetPath() functions. + + * lib/smi.c (smiLoadModule): fixed bug when module is + specified by pathname. + + * lib/defs.h: obsoleted and removed defs.h completely. + + * lib/defs.h (MAX_LINEBUF_LENGTH): eliminated restriction of + maximum the length of MIB module lines. + +1999-06-02 Frank Strauss + + * libsmi-0.1.1.tar.gz: released version 0.1.1. + + * configure.in: added default smipath support. bugfix for + missing SMIPATH environment variable. + + * libsmi-0.1.tar.gz: released version 0.1. + +1999-06-01 Frank Strauss + + * lib/*.3.in, tools/*.1.in: updated manual pages. + + * README: updated installation information and added a hint + on online information. + +1999-05-31 Frank Strauss + + * COPYING et al: applied the license that scotty uses to + all files. + +1999-05-28 Frank Strauss + + * lib/Makefile.am: added automake and libtool support + +1999-05-27 Frank Strauss + + * lib/smi.h: added SmiOption and SmiRefinement functions. + +1999-05-25 Frank Strauss + + * README et al: applied GNU General Public License (NOT L-GPL). + + * tools/smiquery.c: adapted to current API. + + * lib/smi.h: added IndexNode and MemberNode functions. + +1999-05-22 Frank Strauss + + * configure.in: LIBSMI_VERSION=0.1 + + * Makefile: now building shared library. This heavily depends + on the platform and bin-utils. Just tested for Solaris 2.5.1 + and Linux with GNU gcc and bin-utils. + + * configure.in: started GNU configure support. + + * ChangeLog: started ChangeLog. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..0b667b2 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,32 @@ +# +# Makefile.am -- +# +# Template to generate the toplevel Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1670 2004-08-09 14:06:04Z strauss $ +# + +AUTOMAKE_OPTIONS = no-dependencies foreign + +EXTRA_DIST = ANNOUNCE \ + win/Makefile.mingw win/README.mingw win/README.win \ + win/config.h win/config.h.in \ + win/makefile win/GNUmakefile win/win.c win/win.h \ + smi.conf-example libsmi.m4 libsmi.pc + +SUBDIRS = lib tools mibs pibs test doc + +m4datadir = $(datadir)/aclocal +m4data_DATA = libsmi.m4 + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libsmi.pc +$(pkgconfig_DATA): config.status + +anoncvs: + RSYNC_RSH=ssh rsync -rlt --delete $(HOME)/.cvs-repository/libsmi anoncvs@anoncvs:/var/lib/cvs diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..8459ddc --- /dev/null +++ b/Makefile.in @@ -0,0 +1,730 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the toplevel Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1670 2004-08-09 14:06:04Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/libsmi.pc.in $(top_srcdir)/configure \ + $(top_srcdir)/win/config.h.in COPYING ChangeLog THANKS TODO \ + config.guess config.sub depcomp install-sh ltmain.sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = libsmi.pc win/config.h +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)" +m4dataDATA_INSTALL = $(INSTALL_DATA) +pkgconfigDATA_INSTALL = $(INSTALL_DATA) +DATA = $(m4data_DATA) $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = no-dependencies foreign +EXTRA_DIST = ANNOUNCE \ + win/Makefile.mingw win/README.mingw win/README.win \ + win/config.h win/config.h.in \ + win/makefile win/GNUmakefile win/win.c win/win.h \ + smi.conf-example libsmi.m4 libsmi.pc + +SUBDIRS = lib tools mibs pibs test doc +m4datadir = $(datadir)/aclocal +m4data_DATA = libsmi.m4 +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libsmi.pc +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +libsmi.pc: $(top_builddir)/config.status $(srcdir)/libsmi.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +win/config.h: $(top_builddir)/config.status $(top_srcdir)/win/config.h.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" + @list='$(m4data_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(m4dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4datadir)/$$f'"; \ + $(m4dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4datadir)/$$f"; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \ + rm -f "$(DESTDIR)$(m4datadir)/$$f"; \ + done +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-m4dataDATA install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-m4dataDATA uninstall-pkgconfigDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-m4dataDATA install-man \ + install-pdf install-pdf-am install-pkgconfigDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-m4dataDATA \ + uninstall-pkgconfigDATA + +$(pkgconfig_DATA): config.status + +anoncvs: + RSYNC_RSH=ssh rsync -rlt --delete $(HOME)/.cvs-repository/libsmi anoncvs@anoncvs:/var/lib/cvs +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/README b/README new file mode 100644 index 0000000..6de9d27 --- /dev/null +++ b/README @@ -0,0 +1,131 @@ + +LIBSMI -- A LIBRARY FOR SMI MANAGEMENT INFORMATION +================================================== + +Copyright (c) 1999-2008 Frank Strauss, Technical University of Braunschweig. + +See the file "COPYING" for information on usage and redistribution +of this file, and for a DISCLAIMER OF ALL WARRANTIES. + +@(#) $Id: README 7795 2008-02-27 10:23:25Z strauss $ + +This project has been started as part of Frank Strauss' master's +thesis at the Technical University of Braunschweig, Germany in 1999. +Since then numerous people applied very major improvements, fixes, and +new features, namely Juergen Schoenwaelder who also initiated the +whole project and supervised my thesis work, as well as Torsten Klie, +Andreas Mueller, Moritz Bunkus, Jens Mueller, and Klaus Sperner. Many +others contributed lots of patches, improvements, and feature requests. + +This software comprises + + - a library to parse and maintain MIB and PIB modules, + + - a set of tools based on the library to check, convert, and compare + MIB and PIB modules. + + - a collection of all published IETF and IANA Standards Track MIB + and PIB modules and some more. + +Please read the manual pages and the project's web pages for further +information. + + +MANIFEST +======== + +README this file +COPYING the libsmi lincense terms +ChangeLog a rough history of changes +TODO incomplete list of things to be done +THANKS a list of people who contributed +configure configure script +lib/ library source code +tools/ tools source code +doc/ some related documents +mibs/ MIB modules to be installed +pibs/ PIB modules to be installed +test/ some test patterns +win/ Win32 port source code + + +INSTALLATION +============ + +Requirements: GNU make, gcc, flex, bison, and other things most UNIX +systems have on board. The compiler has to support `long long' types. + +To configure libsmi, first check + + ./configure --help + +output to see, what options are available. Then run + + ./configure [options] + +with the options of your choice. Choose mibdir, pibdir and smipath +values appripriate for your environment so that users can live without +an SMIPATH environment variable and without configuration files. + +On HP-UX platforms the build process is reported to require gcc +and the --disable-shared configure option. + +To build libsmi and the tools, run + + make + +This should build the library libsmi in lib/ and the tools, namely +tools/smilint, tools/smidump, tools/smiquery, tools/smidiff, +tools/smixlate and the shell script tools/smistrip. + +Now, you may run some checks by + + make check + +Note that some tests of this test suite may fail, if GNU diff was not +found. + +If you wish to install the library, the MIB and PIB modules, the tools +and the man pages, run + + make install + +To use libsmi applications you might want to configure its behaviour. +Detailed library options, including per-application options, can +be configured through a global and a user level configuration file. +Additionally the SMIPATH environment variable can be used to configure +paths of module locations. See the smi_config(3) man page. + + +DEBUGGING +========= + +If you encounter any crashes or feel for any other reasons the need to +debug the libsmi tools, you should link the tools statically. This is +the easiest way to get around the problems when your debugger claims to +be unable to read the libsmi binary files, since they are built using +libtool. You can build the libsmi tools statically by + + make clean + ./configure --enable-static --disable-shared + make + + +FURTHER READING +=============== + +Read the man pages for library concepts and usage and for the tools. +Please note that SMIng is currently in a quite inconsistent and +outdated state. It does *not* reflect what is being specified in RFCs +3780/3781. Therefore, SMIng is not enabled by default. See the old +specs in doc/draft-irtf-nmrg-sming-02.txt for details on SMIng as it +is implemented. + +You may find further information online, along with the subscription +information on the libsmi mailing list at + + http://www.ibr.cs.tu-bs.de/projects/libsmi/. + + + + Frank Strauss diff --git a/THANKS b/THANKS new file mode 100644 index 0000000..5578eaf --- /dev/null +++ b/THANKS @@ -0,0 +1,73 @@ +libsmi has originally been written by Frank Strauss, inspired by +Juergen Schoenwaelder. Other people contributed to libsmi by reporting +problems, suggesting various improvements or submitting actual code. +Here is a list of these people. Help me keeping it complete and +exempt of errors. + +Jochen Friedrich +Juergen Schoenwaelder +Erik Schoenfelder +David Reeder +Ira Wolf +Bert Helthuis +Andrew Hood +Marcin Cieslak +Yigal Hochberg +Saurabh Jang +Keith Dart +Andreas Mueller +Bill Fenner +Bill Rizzi +Ted Soo-Hoo +Niels Baggesen +Pat Knight +Martin Schulz +Joerg Mattes +Andreas Goll +LaMont Jones +Harrie Hazewinkel +Dave Shield +Teemu Koponen +Abhay Deshmukh +Jerry Ryan +Chris Avis +Andy Bierman +Torsten Klie +Vivekanandan V + +Brian Remick +Joey Seek +Brecht Vermeulen +Pamela Heckmann +Steve Hills +Mark Kaplun +Caffaratti Fabrizio +Moritz Bunkus +Mark Kaplun +Nick Thomson +Mike Heard +Linda Lin +Claus Klein +Pete Flugstad +Fredrick Paul Eisele +Juergen Quittek +Harold L Hunt II +Bert Wijnen +Michael Hocke +Remco van de Meent +Mark D. Baushke +Daniel Chuang +Henrik Puls +Erik B. Nase +Allen McIntosh +David T. Perkins +Randy Presuhn +Corey Minyard +Li Xiaonong-CXL004 +Jose Pedro Oliveira +Randy Couey +Arndt Jonasson +Sebastian Strollo +Luis EG Ontanon +Kaloyan Kanev +Anders Broman diff --git a/TODO b/TODO new file mode 100644 index 0000000..7f5c14a --- /dev/null +++ b/TODO @@ -0,0 +1,155 @@ +o libsmi crashes on LIBSMI-TEST-010-MIB because it mixes up range, size + and named number restrictions internally so that later these data + structures are casted to the wrong type. A real fix to this problem + may require to redesign internal data structures to get rid of the + opaque list. + +o libsmi crashes on LIBSMI-TEST-011-MIB which contains a nice set of + nasty forward references. + + +o error detection: detect IMPORTs of SMIv1 specific and SMIv2 specific + items in the same module, e.g. old OBJECT-TYPE macro and (new) + NOTIFICATION-TYPE macro. + +o error detection: does table node have exactly one row sub node + with oid == 1? (2578.7.10) + +o warning detection: non continuous sub oids in column node list? + +o warning detection: not reversible DISPLAY-HINT definitions + +o remove SMI_DECL_IMPL_SEQUENCEOF from smi.h: the smiv1/smiv2 parser + should keep internal data structures for sequence types so that it + can set the correct nodekinds and that it can check the SEQUENCE + contents (see previous item). these internal data structures can + be released at the end of a MIB module. + +o warning detection: enumerations SHOULD NOT contain signedNumber's. + SHOULD start at 1. SHOULD be numbered contiguously. + e.g. DISMAN-SCHEDULE-MIB.SnmpPduErrorStatus + +o warning detection: subtyping not allowed for counter or timeticks + +o warning detection: defvals not allowed for counter + +o warning detection: missing display hints for OCTET STRING derived types + +o parser-smi.y: handle forbidden WS at some places + ( Module . label, ...) + +o dump-sming.c: ensure an order without forward references in typedef's. + +o dump-sming.c: support all(!) kinds of index clauses + +o smi.c: smiGetNames() is not yet implemented. do we really need it? + +o thread safety (global vars? static vars? strtok() and other funcs?) + different views + +o need a handle to distinguish different views. + +o clearly separate language dependent information at the API: SMI_STATUS_* + map STATUS to a non-language-dependent type + +o OID/Name Lookup Service (continue work on smid?) + +o how to convert SMIng types derived from other defined types correctly + to SMIv2? + +o various dump modules don't print identifiers fully qualified where + appropriate + +o Web online conversion to SMIng? + +o special handling for well-known traps (reversibility?) + +o smidump -f smiv1 now prints read AUGMENTS clauses as index lists correctly + but these index objects might not be imported. + +o smidump might print defvals for OIDs by label without importing it. + +o line breaks in long bits defaults values (dump-*.c) + +o Add smiGetFirstChildType(SmiType *smiType) and + smiGetNextChildType(SmiType *smiType) to the API. + +o Make sure we always get the newest definition when looking up things + that are not unique. + +o The SMIv1/SMIv2/SMIng dump modules should build proper IMPORTS for + OIDs that show up in DEFVAL or default clauses. + +o The default value conversion functions (e.g. getValueString()) should + return malloced memory to avoid potential memory overwrite problems. + +o Suppress the following types: SNMPv2-SMI::ExtUTCTime, + SNMPv2-SMI::ObjectName, SNMPv2-SMI::NotificationName. + +o Check format specifier text in SMIng spec and add a `u' format specifier + for unsigned numbers. + +o smidump -f tree -u IF-MIB SNA-SDLC-MIB vs. + smidump -f tree -u SNA-SDLC-MIB IF-MIB : e.g. ifEntry differences. + +o rename test modules: TUBS-IBR prefix. + +o make libsmi aware of annotations (when SMIng supports annotations). + +o sming: in rule `refinedBaseType -> EnumerationKeyword optsep namedNumberSpec' + the `optsep' has to be inserted. + +o sming: in rule `refinedBaseType -> BitsKeyword optsep namedNumberSpec' + the `optsep' has to be inserted. + +o sming: ensure enum namedNumbers can be signed and bits namedNumbers cannot. + +o split the library into wo layers: (a) a lower layer that is very + restrictive on allowed input, does not care about memory management, etc. + and (b) a higher layer of utility functions, like display-hint based value + formatting, oid-to-instance-element parsing, constant-to-string mappings, + etc. + +o extend smicache so that MIB authors can use it to submit URLs for their + MIBs to a central MIB http/ftp service? Ask Aiko, whether the SimpleWeb + should offer such a MIB service? + +o Allow the MIB server to support lookup by OID. + +o Is there any value in MIB-by-OID lookup through DNS? ;-) + +o Include documents (draft on xml, etc.) with the distribution. + +o X.208, section 28 allows different forms of OID values. Some of them are + not accepted by the parser. Note also that the SMIv1 ENTERPRISE construct + contains an OID value, although it's common practice to specify its value + in a plain identifier name form, which is not matched by the ASN.1 OID + syntax. + +o Check the code for OID allocations of a constant length (128). Avoid + wasting memory. Avoid problems with OIDs that are (illegally) too long. + +o Check, whether all necessary occurences of &, <, >, ', and + &qout; are handled correctly in dump-xml and dump-xsd. + +o smidiff does not yet support the -i option, like smilint does. + +o error detection: different types in SEQUENCE and OBJECT-TYPE macros + (recognized for a MIB where the SEQUENCE contains "INTEGER" for a column + for which the OBJECT-TYPE's type is SNMPv2-TC::TruthValue. Notify Bert + when fixed. + +o error detection: integer DEFVAL for an enumeration typed OBJECT-TYPE. + Notify Bert when fixed. + +o API: several applications need a mechanism to iterate through the + index components of a row definition, e.g. many of the dump-* drivers. + For example, see dump-scli.oc: foreachIndexDo(). Maybe something like + smiGetFirstIndex()/smiGetNextIndex() would be a good idea. + +o API/Utility Functions: getMinSize()/getMaxSize() is needed by multiple + smidump drivers. See dump-scli.c for a good implementation. + +o generate a warning if a module is listed multiple times in the + imports and if a symbol is imported twice (Dave Perkins) + diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..90e91ec --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,7243 @@ +# generated automatically by aclocal 1.10 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_if(m4_PACKAGE_VERSION, [2.61],, +[m4_fatal([this file was generated for autoconf 2.61. +You have another version of autoconf. If you want to use that, +you should regenerate the build system entirely.], [63])]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# ------------------ +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# --------------------------------------------------------------------- +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ---------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +# set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# ------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF + +# Report which library types will actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.10' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.10], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.10])dnl +_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.60])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..396482d --- /dev/null +++ b/config.guess @@ -0,0 +1,1500 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2006-07-02' + +# This file 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[3456]*) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T:Interix*:[3456]*) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..d521586 --- /dev/null +++ b/config.h.in @@ -0,0 +1,142 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* "" */ +#undef BACKEND_SMI + +/* "" */ +#undef BACKEND_SMING + +/* The default error level at libsmi initialization. */ +#undef DEFAULT_ERRORLEVEL + +/* The full pathname of the global configuration file. */ +#undef DEFAULT_GLOBALCONFIG + +/* The default search path to lookup SMI module files. */ +#undef DEFAULT_SMIPATH + +/* The basename of the per-user configuration file searched in $HOME. */ +#undef DEFAULT_USERCONFIG + +/* The default path separator character. */ +#undef DIR_SEPARATOR + +/* Define to 1 if you have the `asnprintf' function. */ +#undef HAVE_ASNPRINTF + +/* Define to 1 if you have the `asprintf' function. */ +#undef HAVE_ASPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* "" */ +#undef HAVE_DMALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_PWD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_REGEX_H + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtoll' function. */ +#undef HAVE_STRTOLL + +/* Define to 1 if you have the `strtoq' function. */ +#undef HAVE_STRTOQ + +/* Define to 1 if you have the `strtoull' function. */ +#undef HAVE_STRTOULL + +/* Define to 1 if you have the `strtouq' function. */ +#undef HAVE_STRTOUQ + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `timegm' function. */ +#undef HAVE_TIMEGM + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vasnprintf' function. */ +#undef HAVE_VASNPRINTF + +/* Define to 1 if you have the `vasprintf' function. */ +#undef HAVE_VASPRINTF + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* The signed 64 bit integer format conversion specification string. */ +#undef INT64_FORMAT + +/* The signed 64 bit integer maximum value. */ +#undef LIBSMI_INT64_MAX + +/* The unsigned 64 bit integer minimum value. */ +#undef LIBSMI_INT64_MIN + +/* The unsigned 64 bit integer maximum value. */ +#undef LIBSMI_UINT64_MAX + +/* The maximum module import recursion depth. */ +#undef MAX_LEX_DEPTH + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* The default path separator character. */ +#undef PATH_SEPARATOR + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* The unsigned 64 bit integer format conversion specification string. */ +#undef UINT64_FORMAT + +/* Version number of package */ +#undef VERSION diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..387c18d --- /dev/null +++ b/config.sub @@ -0,0 +1,1608 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2006-07-02' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100755 index 0000000..a6d40f2 --- /dev/null +++ b/configure @@ -0,0 +1,22145 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="tools/smilint.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +am__isrc +CYGPATH_W +PACKAGE +VERSION +ACLOCAL +AUTOCONF +AUTOMAKE +AUTOHEADER +MAKEINFO +install_sh +STRIP +INSTALL_STRIP_PROGRAM +mkdir_p +AWK +SET_MAKE +am__leading_dot +AMTAR +am__tar +am__untar +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +DEPDIR +am__include +am__quote +AMDEP_TRUE +AMDEP_FALSE +AMDEPBACKSLASH +CCDEPMODE +am__fastdepCC_TRUE +am__fastdepCC_FALSE +CPP +GREP +EGREP +FLEX +BISON +BASH +SH +WGET +DIFF +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +LN_S +ECHO +AR +RANLIB +CXX +CXXFLAGS +ac_ct_CXX +CXXDEPMODE +am__fastdepCXX_TRUE +am__fastdepCXX_FALSE +CXXCPP +F77 +FFLAGS +ac_ct_F77 +LIBTOOL +LIBTOOL_DEPS +STATIC +LIBSMI_MAJOR +LIBSMI_MINOR +LIBSMI_PATCHLEVEL +LIBTOOL_VERSION +LIBTOOL_REVISION +LIBTOOL_AGE +VERSION_STRING +VERSION_LIBTOOL +UINT64_TYPE +INT64_TYPE +srcdir +mibdir +pibdir +smipath +LIBOBJS +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP +F77 +FFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-dmalloc enable dmalloc debugging (www.dmalloc.com) + --disable-smi disable SMIv1/v2 parser support + --enable-sming enable SMIng parser support + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-cflags=FLAGS use FLAGS for CFLAGS + --with-cc=CC use CC as the C compiler + --with-mibdir=DIR use DIR to install libsmi MIB modules DATADIR/mibs + --with-pibdir=DIR use DIR to install libsmi PIB modules DATADIR/pibs + --with-smipath=DIR:DIR default DIRs to search for MIB/PIB modules MIBDIR... + --with-pathseparator=C use C as the path separator : on UNIX, ; on WIN32 + --with-dirseparator=C use C as the dir separator / on UNIX, \\ on WIN32 + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +LIBSMI_MAJOR=0 +LIBSMI_MINOR=4 +LIBSMI_PATCHLEVEL=8 +LIBTOOL_VERSION=2 +LIBTOOL_REVISION=27 +LIBTOOL_AGE=0 + +VERSION_STRING="$LIBSMI_MAJOR.$LIBSMI_MINOR.$LIBSMI_PATCHLEVEL" +VERSION_LIBTOOL="$LIBTOOL_VERSION:$LIBTOOL_REVISION:$LIBTOOL_AGE" + +am__api_version='1.10' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm -f conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +echo "${ECHO_T}$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=libsmi + VERSION=$VERSION_STRING + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + +ac_config_headers="$ac_config_headers config.h" + + + +cat >>confdefs.h <<\_ACEOF +#define MAX_LEX_DEPTH 30 +_ACEOF + + + +cat >>confdefs.h <<\_ACEOF +#define DEFAULT_ERRORLEVEL 3 +_ACEOF + + + +# Check whether --with-cflags was given. +if test "${with_cflags+set}" = set; then + withval=$with_cflags; CFLAGS="$withval" +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +{ echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Check whether --with-cc was given. +if test "${with_cc+set}" = set; then + withval=$with_cc; CC="$withval" +fi + + +{ echo "$as_me:$LINENO: checking for additional required compiler flags" >&5 +echo $ECHO_N "checking for additional required compiler flags... $ECHO_C" >&6; } + +if test "$cross_compiling" = yes; then + ADDCFLAGS="" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + main() { + #ifdef __SUNPRO_C + exit(0); + #else + exit(1); + #endif + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ADDCFLAGS="-DYY_USE_PROTOS" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ADDCFLAGS="" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +echo $ADDCFLAGS +CFLAGS="$CFLAGS $ADDCFLAGS" + + + + + +for ac_func in strtoll strtoull strtoq strtouq +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + +for ac_func in timegm +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + +for ac_func in vsnprintf snprintf asprintf asnprintf vasprintf vasnprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + +for ac_header in pwd.h unistd.h regex.h stdint.h limits.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# In case regex is not in libc +{ echo "$as_me:$LINENO: checking for regexec in -lc" >&5 +echo $ECHO_N "checking for regexec in -lc... $ECHO_C" >&6; } +if test "${ac_cv_lib_c_regexec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char regexec (); +int +main () +{ +return regexec (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_c_regexec=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_c_regexec=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_regexec" >&5 +echo "${ECHO_T}$ac_cv_lib_c_regexec" >&6; } +if test $ac_cv_lib_c_regexec = yes; then + LDFLAGS="$LDFLAGS" +else + + { echo "$as_me:$LINENO: checking for regexec in -lrxspencer" >&5 +echo $ECHO_N "checking for regexec in -lrxspencer... $ECHO_C" >&6; } +if test "${ac_cv_lib_rxspencer_regexec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrxspencer $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char regexec (); +int +main () +{ +return regexec (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_rxspencer_regexec=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_rxspencer_regexec=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_rxspencer_regexec" >&5 +echo "${ECHO_T}$ac_cv_lib_rxspencer_regexec" >&6; } +if test $ac_cv_lib_rxspencer_regexec = yes; then + LDFLAGS="$LDFLAGS -lrxspencer" +else + + { echo "$as_me:$LINENO: checking for regexec in -lregex" >&5 +echo $ECHO_N "checking for regexec in -lregex... $ECHO_C" >&6; } +if test "${ac_cv_lib_regex_regexec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lregex $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char regexec (); +int +main () +{ +return regexec (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_regex_regexec=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_regex_regexec=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_regex_regexec" >&5 +echo "${ECHO_T}$ac_cv_lib_regex_regexec" >&6; } +if test $ac_cv_lib_regex_regexec = yes; then + LDFLAGS="$LDFLAGS -lregex" +fi + + +fi + + +fi + + +if test "x$prefix" = "xNONE" ; then + prefix=/usr/local +fi + + +# Check whether --with-mibdir was given. +if test "${with_mibdir+set}" = set; then + withval=$with_mibdir; mibdir="$withval" +else + mibdir="$prefix/share/mibs" +fi + + + +# Check whether --with-pibdir was given. +if test "${with_pibdir+set}" = set; then + withval=$with_pibdir; pibdir="$withval" +else + pibdir="$prefix/share/pibs" +fi + + + +# Check whether --with-smipath was given. +if test "${with_smipath+set}" = set; then + withval=$with_smipath; smipath="$withval" +else + smipath="$mibdir/ietf:$mibdir/iana:$mibdir/irtf:$mibdir/site:$mibdir/tubs:$pibdir/ietf:$pibdir/site:$pibdir/tubs" +fi + + + +cat >>confdefs.h <<_ACEOF +#define DEFAULT_SMIPATH "$smipath" +_ACEOF + + + +# Check whether --with-pathseparator was given. +if test "${with_pathseparator+set}" = set; then + withval=$with_pathseparator; pathseparator="$withval" +else + pathseparator="" +fi + + + +# Check whether --with-dirseparator was given. +if test "${with_dirseparator+set}" = set; then + withval=$with_dirseparator; dirseparator="$withval" +else + dirseparator="" +fi + + +{ echo "$as_me:$LINENO: checking for path separator character" >&5 +echo $ECHO_N "checking for path separator character... $ECHO_C" >&6; } +if test "$pathseparator" = "" ; then + if test "$cross_compiling" = yes; then + pathseparator=":" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + main() { + #ifdef _WIN32 + exit(0); + #else + exit(1); + #endif + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + pathseparator=";" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +pathseparator=":" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +echo $pathseparator + +{ echo "$as_me:$LINENO: checking for dir separator character" >&5 +echo $ECHO_N "checking for dir separator character... $ECHO_C" >&6; } +if test "$dirseparator" = "" ; then + if test "$cross_compiling" = yes; then + dirseparator="/" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + main() { + #ifdef _WIN32 + exit(0); + #else + exit(1); + #endif + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + dirseparator="\\\\" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +dirseparator="/" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +echo $dirseparator + + +cat >>confdefs.h <<_ACEOF +#define PATH_SEPARATOR '$pathseparator' +_ACEOF + + + +cat >>confdefs.h <<_ACEOF +#define DIR_SEPARATOR '$dirseparator' +_ACEOF + + + +{ echo "$as_me:$LINENO: checking for 64 bit types" >&5 +echo $ECHO_N "checking for 64 bit types... $ECHO_C" >&6; } +# +# Note that int64_min is defined as -9223372036854775807LL and NOT as +# -9223372036854775808LL. gcc (version 2.95.4 and others) complains with +# "warning: decimal constant is so large that it is unsigned" +# if used with the (correct) value -9223372036854775808LL. +# +if test "$cross_compiling" = yes; then + uint64_type="unsigned long long"; int64_type="long long"; + uint64_format="%llu"; int64_format="%lld"; + uint64_max="18446744073709551615ULL"; + int64_min="-9223372036854775807LL"; int64_max="9223372036854775807LL" + +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + main() { + long long ll; + unsigned long long ull; + exit(0); + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + uint64_type="unsigned long long"; int64_type="long long"; + uint64_format="%llu"; int64_format="%lld"; + uint64_max="18446744073709551615ULL"; + int64_min="-9223372036854775807LL"; int64_max="9223372036854775807LL" + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +uint64_type="unsigned long"; int64_type="long"; + uint64_format="%lu"; int64_format="%ld"; + uint64_max="4294967295"; + int64_min="-2147483648"; int64_max="2147483647" + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +echo $int64_type/$int64_format, etc. + +UINT64_TYPE=$uint64_type +INT64_TYPE=$int64_type + +cat >>confdefs.h <<_ACEOF +#define UINT64_FORMAT "$uint64_format" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define INT64_FORMAT "$int64_format" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LIBSMI_UINT64_MAX $uint64_max +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LIBSMI_INT64_MIN $int64_min +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define LIBSMI_INT64_MAX $int64_max +_ACEOF + + + +# Check whether --enable-dmalloc was given. +if test "${enable_dmalloc+set}" = set; then + enableval=$enable_dmalloc; LIBS="$LIBS -ldmalloc" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DMALLOC_H 1 +_ACEOF + +fi + + + +cat >>confdefs.h <<\_ACEOF +#define BACKEND_SMI 1 +_ACEOF + +# Check whether --enable-smi was given. +if test "${enable_smi+set}" = set; then + enableval=$enable_smi; +cat >>confdefs.h <<\_ACEOF +#define BACKEND_SMI 1 +_ACEOF + +fi + + +# Check whether --enable-sming was given. +if test "${enable_sming+set}" = set; then + enableval=$enable_sming; +cat >>confdefs.h <<\_ACEOF +#define BACKEND_SMING 0 +_ACEOF + +fi + + +# Extract the first word of ""flex"", so it can be a program name with args. +set dummy "flex"; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_FLEX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $FLEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_FLEX="$FLEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_FLEX="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +FLEX=$ac_cv_path_FLEX +if test -n "$FLEX"; then + { echo "$as_me:$LINENO: result: $FLEX" >&5 +echo "${ECHO_T}$FLEX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +if test -z "${FLEX}" ; then + echo "NOTE: We will not be able to build scanner C code from flex sources." +fi + +# Extract the first word of ""bison"", so it can be a program name with args. +set dummy "bison"; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_BISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $BISON in + [\\/]* | ?:[\\/]*) + ac_cv_path_BISON="$BISON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +BISON=$ac_cv_path_BISON +if test -n "$BISON"; then + { echo "$as_me:$LINENO: result: $BISON" >&5 +echo "${ECHO_T}$BISON" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +if test -z "${BISON}" ; then + echo "NOTE: We will not be able to build parser C code from bison sources." +fi + +# Extract the first word of ""bash"", so it can be a program name with args. +set dummy "bash"; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_BASH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $BASH in + [\\/]* | ?:[\\/]*) + ac_cv_path_BASH="$BASH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +BASH=$ac_cv_path_BASH +if test -n "$BASH"; then + { echo "$as_me:$LINENO: result: $BASH" >&5 +echo "${ECHO_T}$BASH" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of ""sh"", so it can be a program name with args. +set dummy "sh"; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_SH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $SH in + [\\/]* | ?:[\\/]*) + ac_cv_path_SH="$SH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +SH=$ac_cv_path_SH +if test -n "$SH"; then + { echo "$as_me:$LINENO: result: $SH" >&5 +echo "${ECHO_T}$SH" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "awk", so it can be a program name with args. +set dummy awk; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $AWK in + [\\/]* | ?:[\\/]*) + ac_cv_path_AWK="$AWK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_AWK="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +AWK=$ac_cv_path_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "wget", so it can be a program name with args. +set dummy wget; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_WGET+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $WGET in + [\\/]* | ?:[\\/]*) + ac_cv_path_WGET="$WGET" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_WGET="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +WGET=$ac_cv_path_WGET +if test -n "$WGET"; then + { echo "$as_me:$LINENO: result: $WGET" >&5 +echo "${ECHO_T}$WGET" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +for ac_prog in gdiff diff +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_DIFF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $DIFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_DIFF="$DIFF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_DIFF="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +DIFF=$ac_cv_path_DIFF +if test -n "$DIFF"; then + { echo "$as_me:$LINENO: result: $DIFF" >&5 +echo "${ECHO_T}$DIFF" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$DIFF" && break +done + +$DIFF --version >/dev/null 2>&1 +if test $? -eq 0 ; then + DIFF="$DIFF --ignore-matching-lines='generated by smidump' --ignore-matching-lines='\$Id.*\$' --ignore-matching-lines='@author.*smidump'" +fi + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + +# Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +{ echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6; } + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + +{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6; } +NM="$lt_cv_path_NM" + +{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6; } +fi + +{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 6261 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_cc_needs_belf=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + + +esac + +need_locks="$enable_libtool_lock" + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + { echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_F77" && break +done + + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_f77_g=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } +else + { echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6; } +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } +else + { echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6; } +fi + +{ echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8513: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8517: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8781: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8785: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; } + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; } + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8885: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:8889: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix3*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs=no + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6; } + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + ;; + *) + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + { echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_shl_load || defined __stub___shl_load +choke me +#endif + +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + { echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_dlopen || defined __stub___dlopen +choke me +#endif + +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_svld_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_dld_link=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags was given. +if test "${with_tags+set}" = set; then + withval=$with_tags; tagnames="$withval" +fi + + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix3*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix3*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +solaris*) + case $cc_basename in + CC*) + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + postdeps_CXX='-lCstd -lCrun' + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13618: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13622: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_CXX=yes + fi + else + lt_prog_compiler_static_works_CXX=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13722: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13726: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15283: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15287: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; } + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_F77=yes + fi + else + lt_prog_compiler_static_works_F77=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; } + +if test x"$lt_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15387: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:15391: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix3*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs_F77=no + else + ld_shlibs_F77=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6; } +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6; } + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17574: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:17578: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17842: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:17846: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_GCJ=yes + fi + else + lt_prog_compiler_static_works_GCJ=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17946: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:17950: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix3*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs_GCJ=no + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + + + +cat >>confdefs.h <<_ACEOF +#define DEFAULT_GLOBALCONFIG "${sysconfdir}/smi.conf" +_ACEOF + + + +cat >>confdefs.h <<\_ACEOF +#define DEFAULT_USERCONFIG ".smirc" +_ACEOF + + +if ${CONFIG_SHELL} ./libtool --features | grep "enable static" >/dev/null; then + STATIC=-static +else + STATIC= +fi + + + + + + + + + + + + + + + + + + + + + + + + + + +ac_config_files="$ac_config_files Makefile lib/Makefile tools/Makefile mibs/Makefile mibs/iana/Makefile mibs/ietf/Makefile mibs/irtf/Makefile mibs/tubs/Makefile mibs/site/Makefile pibs/Makefile pibs/ietf/Makefile pibs/tubs/Makefile pibs/site/Makefile test/Makefile test/mibs/Makefile test/smidiff/Makefile test/dumps/Makefile test/dumps/corba/Makefile test/dumps/imports/Makefile test/dumps/jax/Makefile test/dumps/netsnmp/Makefile test/dumps/mosy/Makefile test/dumps/orig-smiv2/Makefile test/dumps/smilint-smiv2/Makefile test/dumps/sming/Makefile test/dumps/smiv1/Makefile test/dumps/smiv2/Makefile test/dumps/smiv2-smiv2/Makefile test/dumps/tree/Makefile test/dumps/types/Makefile test/dumps/identifiers/Makefile test/dumps/metrics/Makefile test/dumps/xml/Makefile test/dumps/cm/Makefile test/dumps/python/Makefile test/dumps/yang/Makefile doc/Makefile lib/smi.h lib/libsmi.3 lib/smi_macro.3 lib/smi_module.3 lib/smi_node.3 lib/smi_type.3 lib/smi_config.3 lib/smi_render.3 lib/smi_util.3 lib/smi_class.3 lib/smi_attribute.3 lib/smi_event.3 lib/smi_identity.3 tools/smistrip tools/smicache tools/smiquery.1 tools/smilint.1 tools/smidump.1 tools/smidiff.1 tools/smistrip.1 tools/smicache.1 tools/smixlate.1 tools/mib2svg.cgi test/parser.test test/smidump-corba.test test/smidump-jax.test test/smidump-netsnmp.test test/smidump-imports.test test/smidump-mosy.test test/smidump-orig-smiv2.test test/smidump-sming.test test/smidump-yang.test test/smidump-smiv1.test test/smidump-smiv2-smiv2.test test/smidump-smiv2.test test/smidump-tree.test test/smidump-types.test test/smidump-identifiers.test test/smidump-metrics.test test/smidump-xml.test test/smidump-cm.test test/smidump-python.test test/smilint-smiv2.test test/smidiff.test libsmi.pc win/config.h" + +ac_config_commands="$ac_config_commands default" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; + "mibs/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/Makefile" ;; + "mibs/iana/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/iana/Makefile" ;; + "mibs/ietf/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/ietf/Makefile" ;; + "mibs/irtf/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/irtf/Makefile" ;; + "mibs/tubs/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/tubs/Makefile" ;; + "mibs/site/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/site/Makefile" ;; + "pibs/Makefile") CONFIG_FILES="$CONFIG_FILES pibs/Makefile" ;; + "pibs/ietf/Makefile") CONFIG_FILES="$CONFIG_FILES pibs/ietf/Makefile" ;; + "pibs/tubs/Makefile") CONFIG_FILES="$CONFIG_FILES pibs/tubs/Makefile" ;; + "pibs/site/Makefile") CONFIG_FILES="$CONFIG_FILES pibs/site/Makefile" ;; + "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + "test/mibs/Makefile") CONFIG_FILES="$CONFIG_FILES test/mibs/Makefile" ;; + "test/smidiff/Makefile") CONFIG_FILES="$CONFIG_FILES test/smidiff/Makefile" ;; + "test/dumps/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/Makefile" ;; + "test/dumps/corba/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/corba/Makefile" ;; + "test/dumps/imports/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/imports/Makefile" ;; + "test/dumps/jax/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/jax/Makefile" ;; + "test/dumps/netsnmp/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/netsnmp/Makefile" ;; + "test/dumps/mosy/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/mosy/Makefile" ;; + "test/dumps/orig-smiv2/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/orig-smiv2/Makefile" ;; + "test/dumps/smilint-smiv2/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/smilint-smiv2/Makefile" ;; + "test/dumps/sming/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/sming/Makefile" ;; + "test/dumps/smiv1/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/smiv1/Makefile" ;; + "test/dumps/smiv2/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/smiv2/Makefile" ;; + "test/dumps/smiv2-smiv2/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/smiv2-smiv2/Makefile" ;; + "test/dumps/tree/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/tree/Makefile" ;; + "test/dumps/types/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/types/Makefile" ;; + "test/dumps/identifiers/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/identifiers/Makefile" ;; + "test/dumps/metrics/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/metrics/Makefile" ;; + "test/dumps/xml/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/xml/Makefile" ;; + "test/dumps/cm/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/cm/Makefile" ;; + "test/dumps/python/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/python/Makefile" ;; + "test/dumps/yang/Makefile") CONFIG_FILES="$CONFIG_FILES test/dumps/yang/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "lib/smi.h") CONFIG_FILES="$CONFIG_FILES lib/smi.h" ;; + "lib/libsmi.3") CONFIG_FILES="$CONFIG_FILES lib/libsmi.3" ;; + "lib/smi_macro.3") CONFIG_FILES="$CONFIG_FILES lib/smi_macro.3" ;; + "lib/smi_module.3") CONFIG_FILES="$CONFIG_FILES lib/smi_module.3" ;; + "lib/smi_node.3") CONFIG_FILES="$CONFIG_FILES lib/smi_node.3" ;; + "lib/smi_type.3") CONFIG_FILES="$CONFIG_FILES lib/smi_type.3" ;; + "lib/smi_config.3") CONFIG_FILES="$CONFIG_FILES lib/smi_config.3" ;; + "lib/smi_render.3") CONFIG_FILES="$CONFIG_FILES lib/smi_render.3" ;; + "lib/smi_util.3") CONFIG_FILES="$CONFIG_FILES lib/smi_util.3" ;; + "lib/smi_class.3") CONFIG_FILES="$CONFIG_FILES lib/smi_class.3" ;; + "lib/smi_attribute.3") CONFIG_FILES="$CONFIG_FILES lib/smi_attribute.3" ;; + "lib/smi_event.3") CONFIG_FILES="$CONFIG_FILES lib/smi_event.3" ;; + "lib/smi_identity.3") CONFIG_FILES="$CONFIG_FILES lib/smi_identity.3" ;; + "tools/smistrip") CONFIG_FILES="$CONFIG_FILES tools/smistrip" ;; + "tools/smicache") CONFIG_FILES="$CONFIG_FILES tools/smicache" ;; + "tools/smiquery.1") CONFIG_FILES="$CONFIG_FILES tools/smiquery.1" ;; + "tools/smilint.1") CONFIG_FILES="$CONFIG_FILES tools/smilint.1" ;; + "tools/smidump.1") CONFIG_FILES="$CONFIG_FILES tools/smidump.1" ;; + "tools/smidiff.1") CONFIG_FILES="$CONFIG_FILES tools/smidiff.1" ;; + "tools/smistrip.1") CONFIG_FILES="$CONFIG_FILES tools/smistrip.1" ;; + "tools/smicache.1") CONFIG_FILES="$CONFIG_FILES tools/smicache.1" ;; + "tools/smixlate.1") CONFIG_FILES="$CONFIG_FILES tools/smixlate.1" ;; + "tools/mib2svg.cgi") CONFIG_FILES="$CONFIG_FILES tools/mib2svg.cgi" ;; + "test/parser.test") CONFIG_FILES="$CONFIG_FILES test/parser.test" ;; + "test/smidump-corba.test") CONFIG_FILES="$CONFIG_FILES test/smidump-corba.test" ;; + "test/smidump-jax.test") CONFIG_FILES="$CONFIG_FILES test/smidump-jax.test" ;; + "test/smidump-netsnmp.test") CONFIG_FILES="$CONFIG_FILES test/smidump-netsnmp.test" ;; + "test/smidump-imports.test") CONFIG_FILES="$CONFIG_FILES test/smidump-imports.test" ;; + "test/smidump-mosy.test") CONFIG_FILES="$CONFIG_FILES test/smidump-mosy.test" ;; + "test/smidump-orig-smiv2.test") CONFIG_FILES="$CONFIG_FILES test/smidump-orig-smiv2.test" ;; + "test/smidump-sming.test") CONFIG_FILES="$CONFIG_FILES test/smidump-sming.test" ;; + "test/smidump-yang.test") CONFIG_FILES="$CONFIG_FILES test/smidump-yang.test" ;; + "test/smidump-smiv1.test") CONFIG_FILES="$CONFIG_FILES test/smidump-smiv1.test" ;; + "test/smidump-smiv2-smiv2.test") CONFIG_FILES="$CONFIG_FILES test/smidump-smiv2-smiv2.test" ;; + "test/smidump-smiv2.test") CONFIG_FILES="$CONFIG_FILES test/smidump-smiv2.test" ;; + "test/smidump-tree.test") CONFIG_FILES="$CONFIG_FILES test/smidump-tree.test" ;; + "test/smidump-types.test") CONFIG_FILES="$CONFIG_FILES test/smidump-types.test" ;; + "test/smidump-identifiers.test") CONFIG_FILES="$CONFIG_FILES test/smidump-identifiers.test" ;; + "test/smidump-metrics.test") CONFIG_FILES="$CONFIG_FILES test/smidump-metrics.test" ;; + "test/smidump-xml.test") CONFIG_FILES="$CONFIG_FILES test/smidump-xml.test" ;; + "test/smidump-cm.test") CONFIG_FILES="$CONFIG_FILES test/smidump-cm.test" ;; + "test/smidump-python.test") CONFIG_FILES="$CONFIG_FILES test/smidump-python.test" ;; + "test/smilint-smiv2.test") CONFIG_FILES="$CONFIG_FILES test/smilint-smiv2.test" ;; + "test/smidiff.test") CONFIG_FILES="$CONFIG_FILES test/smidiff.test" ;; + "libsmi.pc") CONFIG_FILES="$CONFIG_FILES libsmi.pc" ;; + "win/config.h") CONFIG_FILES="$CONFIG_FILES win/config.h" ;; + "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +am__isrc!$am__isrc$ac_delim +CYGPATH_W!$CYGPATH_W$ac_delim +PACKAGE!$PACKAGE$ac_delim +VERSION!$VERSION$ac_delim +ACLOCAL!$ACLOCAL$ac_delim +AUTOCONF!$AUTOCONF$ac_delim +AUTOMAKE!$AUTOMAKE$ac_delim +AUTOHEADER!$AUTOHEADER$ac_delim +MAKEINFO!$MAKEINFO$ac_delim +install_sh!$install_sh$ac_delim +STRIP!$STRIP$ac_delim +INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim +mkdir_p!$mkdir_p$ac_delim +AWK!$AWK$ac_delim +SET_MAKE!$SET_MAKE$ac_delim +am__leading_dot!$am__leading_dot$ac_delim +AMTAR!$AMTAR$ac_delim +am__tar!$am__tar$ac_delim +am__untar!$am__untar$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +DEPDIR!$DEPDIR$ac_delim +am__include!$am__include$ac_delim +am__quote!$am__quote$ac_delim +AMDEP_TRUE!$AMDEP_TRUE$ac_delim +AMDEP_FALSE!$AMDEP_FALSE$ac_delim +AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim +CCDEPMODE!$CCDEPMODE$ac_delim +am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim +am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +FLEX!$FLEX$ac_delim +BISON!$BISON$ac_delim +BASH!$BASH$ac_delim +SH!$SH$ac_delim +WGET!$WGET$ac_delim +DIFF!$DIFF$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +LN_S!$LN_S$ac_delim +ECHO!$ECHO$ac_delim +AR!$AR$ac_delim +RANLIB!$RANLIB$ac_delim +CXX!$CXX$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +CXXFLAGS!$CXXFLAGS$ac_delim +ac_ct_CXX!$ac_ct_CXX$ac_delim +CXXDEPMODE!$CXXDEPMODE$ac_delim +am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim +am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim +CXXCPP!$CXXCPP$ac_delim +F77!$F77$ac_delim +FFLAGS!$FFLAGS$ac_delim +ac_ct_F77!$ac_ct_F77$ac_delim +LIBTOOL!$LIBTOOL$ac_delim +LIBTOOL_DEPS!$LIBTOOL_DEPS$ac_delim +STATIC!$STATIC$ac_delim +LIBSMI_MAJOR!$LIBSMI_MAJOR$ac_delim +LIBSMI_MINOR!$LIBSMI_MINOR$ac_delim +LIBSMI_PATCHLEVEL!$LIBSMI_PATCHLEVEL$ac_delim +LIBTOOL_VERSION!$LIBTOOL_VERSION$ac_delim +LIBTOOL_REVISION!$LIBTOOL_REVISION$ac_delim +LIBTOOL_AGE!$LIBTOOL_AGE$ac_delim +VERSION_STRING!$VERSION_STRING$ac_delim +VERSION_LIBTOOL!$VERSION_LIBTOOL$ac_delim +UINT64_TYPE!$UINT64_TYPE$ac_delim +INT64_TYPE!$INT64_TYPE$ac_delim +srcdir!$srcdir$ac_delim +mibdir!$mibdir$ac_delim +pibdir!$pibdir$ac_delim +smipath!$smipath$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 28; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' + +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines + +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' + +while : +do + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines conftest.tail + +echo "ac_result=$ac_in" >>$CONFIG_STATUS +cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f $ac_file + mv "$tmp/config.h" $ac_file + fi + else + echo "/* $configure_input */" + cat "$ac_result" + fi + rm -f "$tmp/out12" +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| . 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + "default":C) chmod a+x test/*.test + ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..9b678e2 --- /dev/null +++ b/configure.in @@ -0,0 +1,344 @@ +# +# configure.in -- +# +# Process this file with autoconf to produce a configure script. +# +# Copyright (c) 1999-2008 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: configure.in 8090 2008-04-18 12:56:29Z strauss $ +# + +AC_INIT(tools/smilint.c) + +LIBSMI_MAJOR=0 +LIBSMI_MINOR=4 +LIBSMI_PATCHLEVEL=8 +LIBTOOL_VERSION=2 +LIBTOOL_REVISION=27 +LIBTOOL_AGE=0 + +VERSION_STRING="$LIBSMI_MAJOR.$LIBSMI_MINOR.$LIBSMI_PATCHLEVEL" +VERSION_LIBTOOL="$LIBTOOL_VERSION:$LIBTOOL_REVISION:$LIBTOOL_AGE" + +AM_INIT_AUTOMAKE(libsmi,$VERSION_STRING) +AM_CONFIG_HEADER(config.h) + +AC_DEFINE([MAX_LEX_DEPTH], 30, +[The maximum module import recursion depth.]) + +AC_DEFINE([DEFAULT_ERRORLEVEL], 3, +[The default error level at libsmi initialization.]) + +AC_ARG_WITH(cflags, +[ --with-cflags=FLAGS use FLAGS for CFLAGS], +CFLAGS="$withval") + +AC_PROG_CC +AC_ARG_WITH(cc, +[ --with-cc=CC use CC as the C compiler], +CC="$withval") + +AC_MSG_CHECKING([for additional required compiler flags]) +AC_TRY_RUN([#include + main() { + #ifdef __SUNPRO_C + exit(0); + #else + exit(1); + #endif + } +], ADDCFLAGS="-DYY_USE_PROTOS", ADDCFLAGS="", ADDCFLAGS="") +echo $ADDCFLAGS +CFLAGS="$CFLAGS $ADDCFLAGS" + +AC_CHECK_FUNCS(strtoll strtoull strtoq strtouq) + +AC_CHECK_FUNCS(timegm) + +AC_CHECK_FUNCS(vsnprintf snprintf asprintf asnprintf vasprintf vasnprintf) + +AC_CHECK_HEADERS(pwd.h unistd.h regex.h stdint.h limits.h) + +# In case regex is not in libc +AC_CHECK_LIB(c,regexec,LDFLAGS="$LDFLAGS", +[ + AC_CHECK_LIB(rxspencer,regexec,LDFLAGS="$LDFLAGS -lrxspencer", + [ + AC_CHECK_LIB(regex,regexec,LDFLAGS="$LDFLAGS -lregex") + ]) +]) + +if test "x$prefix" = "xNONE" ; then + prefix=/usr/local +fi + +AC_ARG_WITH(mibdir, +[ --with-mibdir=DIR use DIR to install libsmi MIB modules [DATADIR/mibs]], +mibdir="$withval", mibdir="$prefix/share/mibs") + +AC_ARG_WITH(pibdir, +[ --with-pibdir=DIR use DIR to install libsmi PIB modules [DATADIR/pibs]], +pibdir="$withval", pibdir="$prefix/share/pibs") + +AC_ARG_WITH(smipath, +[ --with-smipath=DIR:DIR default DIRs to search for MIB/PIB modules [MIBDIR...]], +smipath="$withval", smipath="$mibdir/ietf:$mibdir/iana:$mibdir/irtf:$mibdir/site:$mibdir/tubs:$pibdir/ietf:$pibdir/site:$pibdir/tubs") + +AC_DEFINE_UNQUOTED([DEFAULT_SMIPATH], "$smipath", +[The default search path to lookup SMI module files.]) + +AC_ARG_WITH(pathseparator, +[ --with-pathseparator=C use C as the path separator [: on UNIX, ; on WIN32]], +pathseparator="$withval", pathseparator="") + +AC_ARG_WITH(dirseparator, +[ --with-dirseparator=C use C as the dir separator [/ on UNIX, \\ on WIN32]], +dirseparator="$withval", dirseparator="") + +AC_MSG_CHECKING([for path separator character]) +if test "$pathseparator" = "" ; then + AC_TRY_RUN([#include + main() { + #ifdef _WIN32 + exit(0); + #else + exit(1); + #endif + } + ], pathseparator=";", pathseparator=":", pathseparator=":") +fi +echo $pathseparator + +AC_MSG_CHECKING([for dir separator character]) +if test "$dirseparator" = "" ; then + AC_TRY_RUN([#include + main() { + #ifdef _WIN32 + exit(0); + #else + exit(1); + #endif + } + ], dirseparator="\\\\", dirseparator="/", dirseparator="/") +fi +echo $dirseparator + +AC_DEFINE_UNQUOTED([PATH_SEPARATOR], '$pathseparator', +[The default path separator character.]) + +AC_DEFINE_UNQUOTED([DIR_SEPARATOR], '$dirseparator', +[The default path separator character.]) + + +AC_MSG_CHECKING([for 64 bit types]) +# +# Note that int64_min is defined as -9223372036854775807LL and NOT as +# -9223372036854775808LL. gcc (version 2.95.4 and others) complains with +# "warning: decimal constant is so large that it is unsigned" +# if used with the (correct) value -9223372036854775808LL. +# +AC_TRY_RUN([#include + main() { + long long ll; + unsigned long long ull; + exit(0); + } + ], + uint64_type="unsigned long long"; int64_type="long long"; + uint64_format="%llu"; int64_format="%lld"; + uint64_max="18446744073709551615ULL"; + int64_min="-9223372036854775807LL"; int64_max="9223372036854775807LL" + , + uint64_type="unsigned long"; int64_type="long"; + uint64_format="%lu"; int64_format="%ld"; + uint64_max="4294967295"; + int64_min="-2147483648"; int64_max="2147483647" + , + uint64_type="unsigned long long"; int64_type="long long"; + uint64_format="%llu"; int64_format="%lld"; + uint64_max="18446744073709551615ULL"; + int64_min="-9223372036854775807LL"; int64_max="9223372036854775807LL" +) +echo $int64_type/$int64_format, etc. + +UINT64_TYPE=$uint64_type +INT64_TYPE=$int64_type +AC_DEFINE_UNQUOTED([UINT64_FORMAT], "$uint64_format", +[The unsigned 64 bit integer format conversion specification string.]) +AC_DEFINE_UNQUOTED([INT64_FORMAT], "$int64_format", +[The signed 64 bit integer format conversion specification string.]) +AC_DEFINE_UNQUOTED([LIBSMI_UINT64_MAX], $uint64_max, +[The unsigned 64 bit integer maximum value.]) +AC_DEFINE_UNQUOTED([LIBSMI_INT64_MIN], $int64_min, +[The unsigned 64 bit integer minimum value.]) +AC_DEFINE_UNQUOTED([LIBSMI_INT64_MAX], $int64_max, +[The signed 64 bit integer maximum value.]) + + +AC_ARG_ENABLE(dmalloc, +[ --enable-dmalloc enable dmalloc debugging (www.dmalloc.com)], +LIBS="$LIBS -ldmalloc" +AC_DEFINE([HAVE_DMALLOC_H], 1, "")) + +AC_DEFINE(BACKEND_SMI, 1, "") +AC_ARG_ENABLE(smi, +[ --disable-smi disable SMIv1/v2 parser support], +AC_DEFINE(BACKEND_SMI, 1, "")) + +AC_ARG_ENABLE(sming, +[ --enable-sming enable SMIng parser support], +AC_DEFINE(BACKEND_SMING, 0, "")) + +AC_PATH_PROG(FLEX, "flex") +if test -z "${FLEX}" ; then + echo "NOTE: We will not be able to build scanner C code from flex sources." +fi + +AC_PATH_PROG(BISON, "bison") +if test -z "${BISON}" ; then + echo "NOTE: We will not be able to build parser C code from bison sources." +fi + +AC_PATH_PROG(BASH, "bash") +AC_PATH_PROG(SH, "sh") +AC_PATH_PROG(AWK, awk) +AC_PATH_PROG(WGET, wget) + +AC_PATH_PROGS(DIFF, gdiff diff) +$DIFF --version >/dev/null 2>&1 +if test $? -eq 0 ; then + DIFF="$DIFF --ignore-matching-lines='generated by smidump' --ignore-matching-lines='\$Id.*\$' --ignore-matching-lines='@author.*smidump'" +fi + +AC_EXEEXT +AC_PROG_INSTALL +AC_PROG_MAKE_SET +AM_PROG_LIBTOOL +AC_SUBST(LIBTOOL_DEPS) + +AC_DEFINE_UNQUOTED([DEFAULT_GLOBALCONFIG], "${sysconfdir}/smi.conf", +[The full pathname of the global configuration file.]) + +AC_DEFINE([DEFAULT_USERCONFIG], ".smirc", +[The basename of the per-user configuration file searched in $HOME.]) + +if ${CONFIG_SHELL} ./libtool --features | grep "enable static" >/dev/null; then + STATIC=-static +else + STATIC= +fi +AC_SUBST(STATIC) + +AC_SUBST(LIBSMI_MAJOR) +AC_SUBST(LIBSMI_MINOR) +AC_SUBST(LIBSMI_PATCHLEVEL) +AC_SUBST(LIBTOOL_VERSION) +AC_SUBST(LIBTOOL_REVISION) +AC_SUBST(LIBTOOL_AGE) +AC_SUBST(VERSION_STRING) +AC_SUBST(VERSION_LIBTOOL) +AC_SUBST(UINT64_TYPE) +AC_SUBST(INT64_TYPE) + +AC_SUBST(EXEEXT) +AC_SUBST(BASH) +AC_SUBST(SH) +AC_SUBST(AWK) +AC_SUBST(WGET) +AC_SUBST(DIFF) +AC_SUBST(CC) +AC_SUBST(CFLAGS) +AC_SUBST(srcdir) +AC_SUBST(mibdir) +AC_SUBST(pibdir) +AC_SUBST(smipath) + +AC_OUTPUT([ +Makefile +lib/Makefile +tools/Makefile +mibs/Makefile +mibs/iana/Makefile +mibs/ietf/Makefile +mibs/irtf/Makefile +mibs/tubs/Makefile +mibs/site/Makefile +pibs/Makefile +pibs/ietf/Makefile +pibs/tubs/Makefile +pibs/site/Makefile +test/Makefile +test/mibs/Makefile +test/smidiff/Makefile +test/dumps/Makefile +test/dumps/corba/Makefile +test/dumps/imports/Makefile +test/dumps/jax/Makefile +test/dumps/netsnmp/Makefile +test/dumps/mosy/Makefile +test/dumps/orig-smiv2/Makefile +test/dumps/smilint-smiv2/Makefile +test/dumps/sming/Makefile +test/dumps/smiv1/Makefile +test/dumps/smiv2/Makefile +test/dumps/smiv2-smiv2/Makefile +test/dumps/tree/Makefile +test/dumps/types/Makefile +test/dumps/identifiers/Makefile +test/dumps/metrics/Makefile +test/dumps/xml/Makefile +test/dumps/cm/Makefile +test/dumps/python/Makefile +test/dumps/yang/Makefile +doc/Makefile +lib/smi.h +lib/libsmi.3 +lib/smi_macro.3 +lib/smi_module.3 +lib/smi_node.3 +lib/smi_type.3 +lib/smi_config.3 +lib/smi_render.3 +lib/smi_util.3 +lib/smi_class.3 +lib/smi_attribute.3 +lib/smi_event.3 +lib/smi_identity.3 +tools/smistrip +tools/smicache +tools/smiquery.1 +tools/smilint.1 +tools/smidump.1 +tools/smidiff.1 +tools/smistrip.1 +tools/smicache.1 +tools/smixlate.1 +tools/mib2svg.cgi +test/parser.test +test/smidump-corba.test +test/smidump-jax.test +test/smidump-netsnmp.test +test/smidump-imports.test +test/smidump-mosy.test +test/smidump-orig-smiv2.test +test/smidump-sming.test +test/smidump-yang.test +test/smidump-smiv1.test +test/smidump-smiv2-smiv2.test +test/smidump-smiv2.test +test/smidump-tree.test +test/smidump-types.test +test/smidump-identifiers.test +test/smidump-metrics.test +test/smidump-xml.test +test/smidump-cm.test +test/smidump-python.test +test/smilint-smiv2.test +test/smidiff.test +libsmi.pc +win/config.h], +chmod a+x test/*.test +) diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..ca5ea4e --- /dev/null +++ b/depcomp @@ -0,0 +1,584 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2006-10-15.18 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software +# Foundation, Inc. + +# 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, 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. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..6c5d9e4 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,18 @@ +# +# Makefile.am -- +# +# Template to generate the doc Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1509 2002-12-22 16:23:04Z strauss $ +# + +EXTRA_DIST = draft-irtf-nmrg-sming-02.txt \ + draft-irtf-nmrg-smi-xml-00.txt smi.dtd \ + draft-irtf-nmrg-smi-xml-01.txt smi.xsd \ + ibrpib-assignments.txt smi.dia + diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..135f585 --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,358 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the doc Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1509 2002-12-22 16:23:04Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = draft-irtf-nmrg-sming-02.txt \ + draft-irtf-nmrg-smi-xml-00.txt smi.dtd \ + draft-irtf-nmrg-smi-xml-01.txt smi.xsd \ + ibrpib-assignments.txt smi.dia + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/draft-irtf-nmrg-smi-xml-00.txt b/doc/draft-irtf-nmrg-smi-xml-00.txt new file mode 100644 index 0000000..c557c72 --- /dev/null +++ b/doc/draft-irtf-nmrg-smi-xml-00.txt @@ -0,0 +1,672 @@ + + +Network Working Group J. Schoenwaelder +Internet-Draft F. Strauss +Expires: December 20, 2000 TU Braunschweig + June 21, 2000 + + + Using XML to Exchange SMI Definitions + draft-irtf-nmrg-smi-xml-00.txt + +Status of this Memo + + This document is an Internet-Draft and is in full conformance with + all provisions of Section 10 of RFC2026. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as + Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six + months and may be updated, replaced, or obsoleted by other documents + at any time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + To view the entire list of Internet-Draft Shadow Directories, see + http://www.ietf.org/shadow.html. + + The list of current Internet-Drafts can be accessed at + http://www.ietf.org/ietf/iid-abstracts.txt + + This Internet-Draft will expire on December 20, 2000. + +Copyright Notice + + Copyright (C) The Internet Society (2000). All Rights Reserved. + +Abstract + + This memo describes how the Extensible Markup Language (XML) can be + used to exchange SMIv1, SMIv2 and SMIng definitions between XML + enabled applications. + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 1] + +Internet-Draft XML SMI Exchange Format June 2000 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. SMI XML DTD . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + 4. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 + References . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 10 + Full Copyright Statement . . . . . . . . . . . . . . . . . . . 12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 2] + +Internet-Draft XML SMI Exchange Format June 2000 + + +1. Introduction + + This memo describes how the Extensible Markup Language (XML) [1] can + be used to exchange SMIv1 [2][3][4], SMIv2 [5][6][7] and SMIng [8] + definitions between XML enabled applications. The acronym SMI is + used throughout this document as a version neutral name for SMIv1, + SMIv2 or SMIng. + + The Document Type Definition (DTD) defined in this memo allows + applications with embedded generic XML parsers to read (or edit) the + original SMI definitions. The XML DTD is optimized for this purpose. + Terseness of the XML output was of minimal importance since humans + are expected to read the originial SMI definitions. + + In fact, the XML format of an SMI module is significantly longer + compared to the original SMI definition. This is inline with the + design goals for XML, which favours computer readability over + terseness. + + There are several scenarios where an XML representation of SMI + definitions is useful: + o The XML format may be used as an intermediate format between a + validating SMI compiler/parser and post processing tools such as + code or schema generators. (The undocumented mosy format has been + used in the past for this purpose. The mosy format does not + preserve all information present in a SMI module and is therefore + problematic.) + o The XML format can be used with XSLT post processors to generate + documentation in various formats. + o The XML format makes it possible to access SMI definition from a + variety of programming languages. XML parsers are available in + Java, C, C++, Tcl, Perl, Python, and GNU Emacs Lisp in both + commercial and open source forms. + o There are generic tools for maintaining large sets of XML + definitions. This includes tools to search for definitions with a + specific property. Such generic XML tools can be very useful in + organizations that are required to maintain large amounts of SMI + definitions. + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 3] + +Internet-Draft XML SMI Exchange Format June 2000 + + +2. SMI XML DTD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 4] + +Internet-Draft XML SMI Exchange Format June 2000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 5] + +Internet-Draft XML SMI Exchange Format June 2000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3. Examples + +4. Acknowledgments + + This document is the result of discussions within the Network + Management Research Group (NMRG) of the Internet Research Task + Force[9] (IRTF). + + Special thanks to Bert Helthuis, Atin Banerjee and Debnarayan Kar + for providing useful feedback and access to their private SMI XML + DTDs. + + A prototype implementation of an SMIv1/SMIv2/SMIng converter to XML + is freely available as part of the libsmi[10] SMI parser library + distribution. + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 9] + +Internet-Draft XML SMI Exchange Format June 2000 + + +References + + [1] World Wide Web Consortium, "Extensible Markup Language (XML) + 1.0", W3C REC-xml-19980210, February 1998. + + [2] Rose, M. and K. McCloghrie, "Structure and Identification of + Management Information for TCP/IP-based Internets", STD 16, RFC + 1155, May 1990. + + [3] Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16, + RFC 1212, March 1991. + + [4] Rose, M., "A Convention for Defining Traps for use with the + SNMP", RFC 1215, March 1991. + + [5] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M. and S. Waldbusser, "Structure of Management Information + Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. + + [6] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M. and S. Waldbusser, "Textual Conventions for SMIv2", STD 58, + RFC 2579, April 1999. + + [7] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M. and S. Waldbusser, "Conformance Statements for SMIv2", STD + 58, RFC 2580, April 1999. + + [8] Strauss, F., "SMIng - A new Structure of Management + Information", Internet Draft draft-irtf-nmrg-sming-02.txt, + February 2000. + + [9] http://www.irtf.org/ + + [10] http://www.ibr.cs.tu-bs.de/projects/libsmi/ + +Authors' Addresses + + Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3289 + EMail: schoenw@ibr.cs.tu-bs.de + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 10] + +Internet-Draft XML SMI Exchange Format June 2000 + + + Frank Strauss + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 11] + +Internet-Draft XML SMI Exchange Format June 2000 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2000). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph + are included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires December 20, 2000 [Page 12] + diff --git a/doc/draft-irtf-nmrg-smi-xml-01.txt b/doc/draft-irtf-nmrg-smi-xml-01.txt new file mode 100644 index 0000000..2b9a9dc --- /dev/null +++ b/doc/draft-irtf-nmrg-smi-xml-01.txt @@ -0,0 +1,1008 @@ + + +Network Working Group J. Schoenwaelder +Internet-Draft F. Strauss +Expires: July 10, 2002 TU Braunschweig + January 9, 2002 + + + Using XML to Exchange SMI Definitions + draft-irtf-nmrg-smi-xml-01 + +Status of this Memo + + This document is an Internet-Draft and is in full conformance with + all provisions of Section 10 of RFC2026. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as Internet- + Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + The list of current Internet-Drafts can be accessed at + http://www.ietf.org/ietf/1id-abstracts.txt. + + The list of Internet-Draft Shadow Directories can be accessed at + http://www.ietf.org/shadow.html. + + This Internet-Draft will expire on July 10, 2002. + +Copyright Notice + + Copyright (C) The Internet Society (2002). All Rights Reserved. + +Abstract + + This memo describes how the Extensible Markup Language (XML) can be + used to exchange SMIv1 and SMIv2 definitions between XML enabled + applications. + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 1] + +Internet-Draft XML SMI Exchange Format January 2002 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. SMI XML Schema . . . . . . . . . . . . . . . . . . . . . . . . 4 + 3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + 4. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 16 + 5. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 + References . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 17 + Full Copyright Statement . . . . . . . . . . . . . . . . . . . 18 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 2] + +Internet-Draft XML SMI Exchange Format January 2002 + + +1. Introduction + + This memo describes how the Extensible Markup Language (XML) [1] can + be used to exchange SMIv1 [2][3][4] and SMIv2 [5][6][7] definitions + between XML enabled applications. The acronym SMI is used throughout + this document as a version neutral name for SMIv1 or SMIv2. + + The XML Schema defined in this memo allows applications with embedded + generic XML parsers to read (or edit) the original SMI definitions. + The XML Schema is optimized for this purpose. Terseness of the XML + output was of minimal importance since humans are expected to read + the originial SMI definitions. + + In fact, the XML format of an SMI module is significantly longer + compared to the original SMI definition. This is in line with the + design goals for XML, which favours computer readability over + terseness. + + There are several scenarios where an XML representation of SMI + definitions is useful: + + o The XML format may be used as an intermediate format between a + validating SMI compiler/parser and post processing tools such as + code or schema generators. (The undocumented mosy format has been + used in the past for this purpose. The mosy format does not + preserve all information present in a SMI module and is therefore + problematic.) + + o The XML format can be used with XSLT post processors to generate + documentation in various formats. + + o The XML format makes it possible to access SMI definitions from a + variety of programming languages. E.g., XML parsers are available + in Java, C, C++, Tcl, Perl, Python, and GNU Emacs Lisp in both + commercial and open source forms. + + o There are generic tools for maintaining large sets of XML + definitions. This includes tools to search for definitions with a + specific property. Such generic XML tools can be very useful in + organizations that must maintain large amounts of SMI definitions. + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 3] + +Internet-Draft XML SMI Exchange Format January 2002 + + +2. SMI XML Schema + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 4] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 5] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 6] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 7] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 8] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 9] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 10] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 11] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 12] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 13] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 14] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 15] + +Internet-Draft XML SMI Exchange Format January 2002 + + + + + + + + + + + + + +3. Examples + +4. Open Issues + + Shall we get rid of the identity element by making it an optional + attribute of the module element? + + +5. Acknowledgments + + This document is the result of discussions within the Network + Management Research Group (NMRG) of the Internet Research Task + Force[8] (IRTF). + + Special thanks to Bert Helthuis, Atin Banerjee and Debnarayan Kar for + providing useful feedback and access to their private SMI XML DTDs. + + A prototype implementation of an SMIv1/v2 converter to XML is freely + available as part of the libsmi[9] SMI parser library distribution. + +References + + [1] World Wide Web Consortium, "Extensible Markup Language (XML) 1.0 + (Second Edition)", W3C REC-xml-20001006, October 2000. + + [2] Rose, M. and K. McCloghrie, "Structure and identification of + management information for TCP/IP-based internets", STD 16, RFC + 1155, May 1990. + + [3] Rose, M. and K. McCloghrie, "Concise MIB definitions", STD 16, + RFC 1212, March 1991. + + [4] Rose, M., "Convention for defining traps for use with the SNMP", + RFC 1215, March 1991. + + [5] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., + McCloghrie, K., Rose, M. and S. Waldbusser, "Structure of + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 16] + +Internet-Draft XML SMI Exchange Format January 2002 + + + Management Information Version 2 (SMIv2)", STD 58, RFC 2578, + April 1999. + + [6] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., + McCloghrie, K., Rose, M. and S. Waldbusser, "Textual Conventions + for SMIv2", STD 58, RFC 2579, April 1999. + + [7] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance + Statements for SMIv2", STD 58, RFC 2580, April 1999. + + [8] + + [9] + + +Authors' Addresses + + Juergen Schoenwaelder + TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3289 + EMail: schoenw@ibr.cs.tu-bs.de + + + Frank Strauss + TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 17] + +Internet-Draft XML SMI Exchange Format January 2002 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2002). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Schoenwaelder & Strauss Expires July 10, 2002 [Page 18] + diff --git a/doc/draft-irtf-nmrg-sming-02.txt b/doc/draft-irtf-nmrg-sming-02.txt new file mode 100644 index 0000000..3d4f624 --- /dev/null +++ b/doc/draft-irtf-nmrg-sming-02.txt @@ -0,0 +1,5880 @@ + + +Network Working Group F. Strauss +Internet-Draft TU Braunschweig +Expires: August 15, 2000 February 15, 2000 + + + SMIng - A new Structure of Management Information + draft-irtf-nmrg-sming-02 + +Status of this Memo + + This document is an Internet-Draft and is in full conformance with + all provisions of Section 10 of RFC2026. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF), its areas, and its working groups. Note that + other groups may also distribute working documents as + Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six + months and may be updated, replaced, or obsoleted by other documents + at any time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + To view the entire list of Internet-Draft Shadow Directories, see + http://www.ietf.org/shadow.html. + + This Internet-Draft will expire on August 15, 2000. + +Abstract + + This memo presents a language for management information + specifications. It eliminates known problems present in the current + SMIv2 as specified in [2], [3], and [4]. Language extensibility + features and a more efficient and programmer-friendly notation are + introduced. Conversions from SMIv2 to SMIng and vice versa are also + considered by this document. + +Copyright Notice + + Copyright (C) The Internet Society (2000). All Rights Reserved. + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 1] + +Internet-Draft SMIng February 2000 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . 6 + 1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . 6 + 1.2 Relation to SNMP . . . . . . . . . . . . . . . . . . . . 6 + 2. The Information Model . . . . . . . . . . . . . . . . . 8 + 2.1 Identifiers . . . . . . . . . . . . . . . . . . . . . . 9 + 2.2 Object Identifier Hierarchy . . . . . . . . . . . . . . 10 + 2.3 Kinds of Nodes . . . . . . . . . . . . . . . . . . . . . 11 + 2.4 Scalar and Columnar Objects' Instances . . . . . . . . . 12 + 3. Base Types and Derived Types . . . . . . . . . . . . . . 15 + 3.1 OctetString . . . . . . . . . . . . . . . . . . . . . . 15 + 3.2 ObjectIdentifier . . . . . . . . . . . . . . . . . . . . 16 + 3.3 Integer32 . . . . . . . . . . . . . . . . . . . . . . . 17 + 3.4 Integer64 . . . . . . . . . . . . . . . . . . . . . . . 18 + 3.5 Unsigned32 . . . . . . . . . . . . . . . . . . . . . . . 18 + 3.6 Unsigned64 . . . . . . . . . . . . . . . . . . . . . . . 19 + 3.7 Float32 . . . . . . . . . . . . . . . . . . . . . . . . 20 + 3.8 Float64 . . . . . . . . . . . . . . . . . . . . . . . . 21 + 3.9 Float128 . . . . . . . . . . . . . . . . . . . . . . . . 22 + 3.10 Enumeration . . . . . . . . . . . . . . . . . . . . . . 23 + 3.11 Bits . . . . . . . . . . . . . . . . . . . . . . . . . . 23 + 3.12 Display Formats . . . . . . . . . . . . . . . . . . . . 24 + 4. The SMIng File Structure . . . . . . . . . . . . . . . . 27 + 4.1 Comments . . . . . . . . . . . . . . . . . . . . . . . . 27 + 4.2 Statements and Arguments . . . . . . . . . . . . . . . . 27 + 5. The module Statement . . . . . . . . . . . . . . . . . . 28 + 5.1 The module's import Statement . . . . . . . . . . . . . 28 + 5.2 The module's organization Statement . . . . . . . . . . 29 + 5.3 The module's contact Statement . . . . . . . . . . . . . 29 + 5.4 The module's description Statement . . . . . . . . . . . 29 + 5.5 The module's reference Statement . . . . . . . . . . . . 29 + 5.6 The module's revision Statement . . . . . . . . . . . . 29 + 5.6.1 The revision's date Statement . . . . . . . . . . . . . 30 + 5.6.2 The revision's description Statement . . . . . . . . . . 30 + 5.7 The module's identity Statement . . . . . . . . . . . . 30 + 5.8 Usage Example . . . . . . . . . . . . . . . . . . . . . 30 + 6. The extension Statement . . . . . . . . . . . . . . . . 32 + 6.1 The extension's status Statement . . . . . . . . . . . . 32 + 6.2 The extension's description Statement . . . . . . . . . 32 + 6.3 The extension's reference Statement . . . . . . . . . . 32 + 6.4 The extension's abnf Statement . . . . . . . . . . . . . 33 + 7. The typedef Statement . . . . . . . . . . . . . . . . . 34 + 7.1 The typedef's type Statement . . . . . . . . . . . . . . 34 + 7.2 The typedef's default Statement . . . . . . . . . . . . 34 + 7.3 The typedef's format Statement . . . . . . . . . . . . . 34 + 7.4 The typedef's units Statement . . . . . . . . . . . . . 35 + 7.5 The typedef's status Statement . . . . . . . . . . . . . 35 + 7.6 The typedef's description Statement . . . . . . . . . . 36 + + +Strauss Expires August 15, 2000 [Page 2] + +Internet-Draft SMIng February 2000 + + + 7.7 The typedef's reference Statement . . . . . . . . . . . 36 + 7.8 Usage Examples . . . . . . . . . . . . . . . . . . . . . 36 + 8. The node Statement . . . . . . . . . . . . . . . . . . . 38 + 8.1 The node's oid Statement . . . . . . . . . . . . . . . . 38 + 8.2 The node's status Statement . . . . . . . . . . . . . . 38 + 8.3 The node's description Statement . . . . . . . . . . . . 38 + 8.4 The node's reference Statement . . . . . . . . . . . . . 38 + 8.5 Usage Examples . . . . . . . . . . . . . . . . . . . . . 39 + 9. The scalar Statement . . . . . . . . . . . . . . . . . . 40 + 9.1 The scalar's oid Statement . . . . . . . . . . . . . . . 40 + 9.2 The scalar's type Statement . . . . . . . . . . . . . . 40 + 9.3 The scalar's access Statement . . . . . . . . . . . . . 40 + 9.4 The scalar's default Statement . . . . . . . . . . . . . 40 + 9.5 The scalar's format Statement . . . . . . . . . . . . . 41 + 9.6 The scalar's units Statement . . . . . . . . . . . . . . 41 + 9.7 The scalar's status Statement . . . . . . . . . . . . . 41 + 9.8 The scalar's description Statement . . . . . . . . . . . 42 + 9.9 The scalar's reference Statement . . . . . . . . . . . . 42 + 9.10 Usage Examples . . . . . . . . . . . . . . . . . . . . . 42 + 10. The table Statement . . . . . . . . . . . . . . . . . . 43 + 10.1 The table's oid Statement . . . . . . . . . . . . . . . 43 + 10.2 The table's status Statement . . . . . . . . . . . . . . 43 + 10.3 The table's description Statement . . . . . . . . . . . 43 + 10.4 The table's reference Statement . . . . . . . . . . . . 43 + 10.5 The table's row Statement . . . . . . . . . . . . . . . 44 + 10.5.1 The row's oid Statement . . . . . . . . . . . . . . . . 44 + 10.5.2 Table Indexing Statements . . . . . . . . . . . . . . . 44 + 10.5.2.1 The row's index Statement for Table Indexing . . . . . . 44 + 10.5.2.2 The row's augments Statement for Table Indexing . . . . 44 + 10.5.2.3 The row's sparse Statement for Table Indexing . . . . . 45 + 10.5.2.4 The row's reorders Statement for Table Indexing . . . . 45 + 10.5.2.5 The row's expands Statement for Table Indexing . . . . . 46 + 10.5.3 The row's create Statement . . . . . . . . . . . . . . . 46 + 10.5.4 The row's status Statement . . . . . . . . . . . . . . . 46 + 10.5.5 The row's description Statement . . . . . . . . . . . . 46 + 10.5.6 The row's reference Statement . . . . . . . . . . . . . 47 + 10.6 The table row's column Statement . . . . . . . . . . . . 47 + 10.6.1 The column's oid Statement . . . . . . . . . . . . . . . 47 + 10.6.2 The column's type Statement . . . . . . . . . . . . . . 47 + 10.6.3 The column's access Statement . . . . . . . . . . . . . 47 + 10.6.4 The column's default Statement . . . . . . . . . . . . . 48 + 10.6.5 The column's format Statement . . . . . . . . . . . . . 48 + 10.6.6 The column's units Statement . . . . . . . . . . . . . . 48 + 10.6.7 The column's status Statement . . . . . . . . . . . . . 49 + 10.6.8 The column's description Statement . . . . . . . . . . . 49 + 10.6.9 The column's reference Statement . . . . . . . . . . . . 49 + 10.7 Usage Example . . . . . . . . . . . . . . . . . . . . . 49 + 11. The notification Statement . . . . . . . . . . . . . . . 52 + 11.1 The notification's oid Statement . . . . . . . . . . . . 52 + + +Strauss Expires August 15, 2000 [Page 3] + +Internet-Draft SMIng February 2000 + + + 11.2 The notification's objects Statement . . . . . . . . . . 52 + 11.3 The notification's status Statement . . . . . . . . . . 52 + 11.4 The notification's description Statement . . . . . . . . 53 + 11.5 The notification's reference Statement . . . . . . . . . 53 + 11.6 Usage Example . . . . . . . . . . . . . . . . . . . . . 53 + 12. The group Statement . . . . . . . . . . . . . . . . . . 54 + 12.1 The group's oid Statement . . . . . . . . . . . . . . . 54 + 12.2 The group's members Statement . . . . . . . . . . . . . 54 + 12.3 The group's status Statement . . . . . . . . . . . . . . 54 + 12.4 The group's description Statement . . . . . . . . . . . 54 + 12.5 The group's reference Statement . . . . . . . . . . . . 55 + 12.6 Usage Example . . . . . . . . . . . . . . . . . . . . . 55 + 13. The compliance Statement . . . . . . . . . . . . . . . . 56 + 13.1 The compliance's oid Statement . . . . . . . . . . . . . 56 + 13.2 The compliance's status Statement . . . . . . . . . . . 56 + 13.3 The compliance's description Statement . . . . . . . . . 56 + 13.4 The compliance's reference Statement . . . . . . . . . . 56 + 13.5 The compliance's mandatory Statement . . . . . . . . . . 56 + 13.6 The compliance's optional Statement . . . . . . . . . . 57 + 13.6.1 The optional's description Statement . . . . . . . . . . 57 + 13.7 The compliance's refine Statement . . . . . . . . . . . 57 + 13.7.1 The refine's type Statement . . . . . . . . . . . . . . 58 + 13.7.2 The refine's writetype Statement . . . . . . . . . . . . 58 + 13.7.3 The refine's access Statement . . . . . . . . . . . . . 58 + 13.7.4 The refine's description Statement . . . . . . . . . . . 58 + 13.8 Usage Example . . . . . . . . . . . . . . . . . . . . . 58 + 14. SMIng Core Modules . . . . . . . . . . . . . . . . . . . 60 + 14.1 IRTF-NMRG-SMING . . . . . . . . . . . . . . . . . . . . 60 + 14.2 IRTF-NMRG-SMING-TYPES . . . . . . . . . . . . . . . . . 61 + 14.3 IRTF-NMRG-SMING-EXTENSIONS . . . . . . . . . . . . . . . 80 + 15. Extending a Module . . . . . . . . . . . . . . . . . . . 83 + 16. SMIng Language Extensibility . . . . . . . . . . . . . . 85 + 17. Module Conversions . . . . . . . . . . . . . . . . . . . 87 + 17.1 Converting SMIv2 to SMIng . . . . . . . . . . . . . . . 87 + 17.2 Converting SMIng to SMIv2 . . . . . . . . . . . . . . . 87 + 17.3 SMIv1 . . . . . . . . . . . . . . . . . . . . . . . . . 87 + 18. Security Considerations . . . . . . . . . . . . . . . . 88 + 19. Acknowledgements . . . . . . . . . . . . . . . . . . . . 89 + References . . . . . . . . . . . . . . . . . . . . . . . 90 + Author's Address . . . . . . . . . . . . . . . . . . . . 91 + A. The SMIng ABNF grammar . . . . . . . . . . . . . . . . . 92 + B. Glossary . . . . . . . . . . . . . . . . . . . . . . . . 104 + + + + + + + + + +Strauss Expires August 15, 2000 [Page 4] + +Internet-Draft SMIng February 2000 + + +1. Introduction + + Management information is viewed as a collection of managed objects, + residing in a virtual information store, termed the Management + Information Base (MIB). Collections of related objects are defined + in MIB modules. These modules are written conforming to a + specification language, the Structure of Management Information + (SMI). There are different versions of the SMI. SMIv1 [5], [6], [7] + and SMIv2 [2], [3], [4] are based on adapted subsets of OSI's + Abstract Syntax Notation One, ASN.1 [9]. It is the purpose of this + document to define a successor of SMIv1 and SMIv2, the SMIng, in a + self-contained way independent from other standardization bodies' + documents. + + Section 2 gives an overview of some basic concepts of the + information model while the subsequent sections present the concepts + of SMIng: the base types, the SMIng file structure, and all SMIng + statements in detail. Section 14 contains three core modules that + are part of the SMIng specification. Section 15 lists rules to + follow when changes are applied to a module. One flexible feature of + SMIng is its extensibility which is described in Section 16. + Finally, Section 17 discusses conversions of SMIv2 modules to SMIng + and vice versa. Appendix A contains the grammar of SMIng in ABNF + [8] notation. + +1.1 Terminology + + Many terms in SMIv1 and SMIv2 are derived from ASN.1. In some cases, + SMIv1/v2 uses different terms for equal or similar language items + without precise definitions. Appendix B presents a glossary of terms + used throughout this document and in related SMIng documents. Also + refer to the glossary and Appendix A to get detailed information on + the syntax of single language items where not explained in place. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [1]. + +1.2 Relation to SNMP + + Although SMIng is primarily intended to be applied to the SNMP + management framework [10], SMIng is designed to have as few + relations to a specific management protocol as possible. However, + there are some implications of SNMP on SMIv2 that have to be + retained in SMIng: + + o In SNMP the last item on a list of objects used to identify a + table row can be encoded without an explicit length encoding. + This has to be expressed by the SMIng `implied' keyword. See + + +Strauss Expires August 15, 2000 [Page 5] + +Internet-Draft SMIng February 2000 + + + Section 10.5 for details. + + o SNMP allows to distinguish several related types "on the wire" + while SMIng has a minimal but complete set of base types. To + keep SMIng compatible with the SNMP framework, additional types + derived from SMIng base types are defined in the standard SMIng + module IRTF-NMRG-SMING-TYPES (Section 14.2). + + o The encoding of values of type `Bits' in SNMP is dependent on + their named number values. It is RECOMMENDED that they start at 0 + and be numbered contiguously to allow a compact encoding for use + with SNMP. + + o SNMP implies some restrictions on indexing columnar objects: + Those columns that are used for indexing have to be defined as + non-accessible auxiliary objects, with two exceptions. Hence, the + access level `noaccess' has to be retained in SMIng. + + o In order to achieve compatibility with SNMPv1 traps, the next to + last sub-identifier of notification object identifiers SHOULD + have the value zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 6] + +Internet-Draft SMIng February 2000 + + +2. The Information Model + + Internet management is based on the model of "managed objects". A + managed object represents a class of any real or synthesized + variable of systems that are to be managed. Those objects are + organized hierarchically in an "object identifier tree", where only + leaf nodes may represent objects. + + Nodes may also identify tables, row definitions of tables, + notifications, groups of objects and/or notifications, compliance + statements, modules or other information. Each node is identified + by an unique "object identifier" value which is an ordered list of + non-negative numbers, named "sub-identifiers", where the left-most + sub-identifier refers to the node next to the root of the tree and + the right-most sub-identifier refers to the node that is identified + by the complete object identifier. + + The SMI in general, and SMIng in particular, is the information + model used to define and organize the structure of managed objects + and related information. Thus, SMIng describes a language designed + to specify management information in a way readable to computer + programs, named MIB compilers, as well as to human readers. + + Related management information is defined in MIB modules. A module + may refer to definitions from other modules by importing identifiers + from those modules. Each module may serve one or multiple purposes: + + o the definition of inter-related managed objects, notifications + and groups of them, + + o the definition of (restricted) types for use in the local module + or in other modules, + + o the definition of compliance statements for groups of objects and + notifications to guide agent implementors in what they have to + serve or implementors of management applications in what they can + expect, + + o the definition of SMIng extensions to allow the local module or + other modules to specify information beyond the scope of the base + SMIng in a machine readable notation, + + o the definition of information beyond the scope of the base SMIng + statements, based on locally defined or imported SMIng + extensions, like capability statements for agent implementations. + + This classification scheme does not imply a rigid taxonomy. For + example, a "standard" module will normally include definitions of + managed objects and a compliance statement. Similarly, an + + +Strauss Expires August 15, 2000 [Page 7] + +Internet-Draft SMIng February 2000 + + + "enterprise-specific" module might include definitions of managed + objects and a capability statement based on an extension. Of course, + a "standard" module may not contain capability statements. + + Each module is identified by an upper-case identifier. The names of + all standard modules must be unique (but different versions of the + same module should have the same name). Developers of enterprise + modules are encouraged to choose names for their modules that will + have a low probability of colliding with standard or other + enterprise modules, e.g. by using the enterprise or organization + name as a prefix. + +2.1 Identifiers + + Identifiers are used to identify different kinds of SMIng items by + name. These names are valid in a namespace which is dependent on the + SMIng item. Those items are + + o modules (Section 5), whose namespace is the global range of all + SMIng definitions, + + o defined data types (Section 7), whose namespace is the local + module where the type is defined, + + o elements of enumeration and bitset types (Section 3.10, Section + 3.11), whose namespace is the related type definition construct + and all constructs using that type, + + o object identifier tree nodes of different kinds (Section 5, and + Section 8 through Section 13), whose namespace is the local + module where the node is defined, and + + o SMIng extension statements (Section 6), whose namespace is the + local module where the extension is defined. + + Each identifier starts with an upper-case or lower-case character, + dependent on the kind of SMIng item, followed by zero or more + letters, digits, and hyphens. + + For all identifiers of a single kind of item defined in a namespace, + the identifier MUST be unique and SHOULD NOT only differ in case. + Identifiers MUST NOT exceed 64 characters in length. Furthermore, + the set of all identifiers defined in all modules of a single + standardization body or organization SHOULD be unique and mnemonic. + This promotes a common language for humans to use when discussing a + module. + + To reference an item that is defined in the local module, its + definition MUST sequentially precede the reference. Thus, there MUST + + +Strauss Expires August 15, 2000 [Page 8] + +Internet-Draft SMIng February 2000 + + + NOT be any forward references, except in two cases: + + 1. The optional module's `identity' statement, which is located + near the head of a module, specifies an identity node, which is + defined in a subsequent section of the local module. + + 2. The specification of table indexing objects in a table row may + include objects that cannot be defined without the definition of + the current table row. Hence table indexing statements are + allowed to include forward references. + + To reference an item, that is defined in an external module it MUST + be imported into the local module's namespace (Section 5.1). + Identifiers that are neither defined nor imported MUST NOT be + visible in the local module. On the other hand, all items defined in + a module are implicitly exported. + + Note when identifiers from external modules are referenced, there is + the possibility of name collisions. As such, if different items with + the same identifier are imported or if imported identifiers collide + with identifiers of locally defined items, then this ambiguity is + resolved by prefixing those identifiers with the names of their + modules and the namespace operator `::', i.e. `Module::item'. Of + course, this notation can be used to refer to identifiers even when + there is no name collision. + + Note that SMIng language keywords MUST NOT be imported. The main set + of keywords are SMIng statements and base types. See the + `...Keyword' rules of the SMIng ABNF grammar in Appendix A for a + list of those keywords. + + Finally, by convention, if the identifier refers to an object with a + counter type (Counter32 or Counter64, derived from Unsigned32 and + Unsigned64) then the identifier used for the object SHOULD denote + plurality. + +2.2 Object Identifier Hierarchy + + The layers of the object identifier tree near the root are well + defined and organized by standardization bodies. The first level + next to the root has three nodes: + + 0: ccitt + + 1: iso + + 2: joint-iso-ccitt + + Note that the renaming of the Commite Consultatif International de + + +Strauss Expires August 15, 2000 [Page 9] + +Internet-Draft SMIng February 2000 + + + Telegraphique et Telephonique (CCITT) to International + Telecommunications Union (ITU) had no consequence on the names used + in the object identifier tree. + + The root of the subtree administered by the Internet Assigned + Numbers Authority (IANA) for the Internet is `1.3.6.1' which is + assigned with the identifier `internet'. That is, the Internet + subtree of object identifiers starts with the prefix `1.3.6.1.'. + + Several branches underneath this subtree are used for network + management: + + The `mgmt' (internet.2) subtree is used to identify "standard" + information. + + The `experimental' (internet.3) subtree is used to identify + information being designed by working groups of the IETF or IRTF. If + a module produced by a working group becomes a "standard" module + then at the very beginning of its entry onto the Internet standards + track, the information is moved under the mgmt subtree. + + The `private' (internet.4) subtree is used to identify information + defined unilaterally. The `enterprises' (private.1) subtree beneath + private is used, among other things, to permit providers of + networking subsystems to register models of their products. + + These and some other nodes are defined in the SMIng standard module + IRTF-NMRG-SMING (Section 14.1). + +2.3 Kinds of Nodes + + Each node in the object identifier tree may be of a single kind + which may represent management information or not: + + o simple nodes, that do not represent management information, but + may be used for grouping nodes in a subtree, + + o nodes representing the identity of a module to allow references + to a module in other objects of type `ObjectIdentifier', + + o scalar objects, which have zero or one object instance and no + child nodes. See Section 2.4 for scalar objects' instances, + + o tables, which represent the root node of a collection of + information structured in table rows. A table node SHOULD have no + more child nodes than the single row node of this table, + + o rows, which belong to a table (that is, the table's full object + identifier is a prefix of the row's object identifier) and + + +Strauss Expires August 15, 2000 [Page 10] + +Internet-Draft SMIng February 2000 + + + represent a sequence of one or more columnar objects. Those + columnar objects MUST be the only child nodes of a table row. A + row's object identifier MUST be constructed by appending a `1' + sub-identifier to the table's object identifier, + + o columnar objects, which belong to a row (that is, the row's full + object identifier is a prefix of the columnar objects' object + identifier) and have zero or more object instances and no child + nodes. Each columnar object's object identifier MUST be + constructed by appending a single sub-identifier to the row's + object identifier. See Section 2.4 for columnar objects' + instances, + + o notifications, which represent information that is sent by agents + within unsolicited transmissions. A notification's object + identifier SHOULD not have any child node, + + o groups of objects and notifications, which may be used for + compliance statements or other purposes, + + o compliance statements which define requirements for MIB module + implementations, + + o other nodes, that may be used to identify arbitrary information. + +2.4 Scalar and Columnar Objects' Instances + + Instances of managed objects are identified by appending an + instance-identifier to the object's object identifier. Scalar + objects and columnar objects use different ways to construct the + instance-identifier. + + Scalar objects have zero or one object instance. If it exists, it is + identified by appending a single `0' sub-identifier to the object + identifier of the scalar object. + + Within tables, different instances of the same columnar object are + identified by appending a sequence of one or more sub-identifiers to + the object identifier of the columnar object which consists of the + values of object instances that unambiguously distinguish a table + row. These indexing objects can be columnar objects of the same + and/or another table, but MUST NOT be scalar objects. Multiple + applications of the same object in a single table indexing + specification are strongly discouraged. + + The base types (Section 3) of the indexing objects indicate how to + form the instance-identifier: + + o integer-valued or enumeration-valued: a single sub-identifier + + +Strauss Expires August 15, 2000 [Page 11] + +Internet-Draft SMIng February 2000 + + + taking the integer value (this works only for non-negative + integers and integers of a size of up to 32 bits), + + o string-valued, fixed-length strings (or variable-length with + compact encoding): `n' sub-identifiers, where `n' is the length + of the string (each octet of the string is encoded in a separate + sub-identifier), + + o string-valued, variable-length strings or bits-valued: `n+1' + sub-identifiers, where `n' is the length of the string or bits + encoding (the first sub-identifier is `n' itself, following this, + each octet of the string or bits is encoded in a separate + sub-identifier), + + o object identifier-valued (with compact encoding): `n' + sub-identifiers, where `n' is the number of sub-identifiers in + the value (each sub-identifier of the value is copied into a + separate sub-identifier), + + o object identifier-valued: `n+1' sub-identifiers, where `n' is the + number of sub-identifiers in the value (the first sub-identifier + is `n' itself, following this, each sub-identifier in the value + is copied), + + Note that compact encoding can only be applied to an object having a + variable-length syntax (e.g., variable-length strings, bits objects + or object identifier-valued objects). Further, compact encoding can + only be associated with the last object in a list of indexing + objects. Finally, compact encoding MUST NOT be used on a + variable-length string object if that string might have a value of + zero-length. + + Instances identified by use of integer-valued or enumeration-valued + objects are RECOMMENDED to be numbered starting from one (i.e., not + from zero). Integer objects that allow negative values, Unsigned64 + objects, Integer64 objects and floating point objects MUST NOT be + used for table indexing. + + Objects which are both specified for indexing in a row and also + columnar objects of the same row are termed auxiliary objects. + Auxiliary objects SHOULD be non-accessible, except in the following + circumstances: + + o within a MIB module originally written to conform to SMIv1, or + + o a row must contain at least one columnar object which is not an + auxiliary object. In the event that all of a row's columnar + objects are also specified to be indexing objects then one of + them MUST be accessible. (Note that this situation does not arise + + +Strauss Expires August 15, 2000 [Page 12] + +Internet-Draft SMIng February 2000 + + + for a row allowing create access, since such a row will have a + status column which will not be an auxiliary object.) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 13] + +Internet-Draft SMIng February 2000 + + +3. Base Types and Derived Types + + SMIng has a minimal but complete set of base types, similar to those + of many programming languages, but with some differences due to + special requirements from the management information model described + in Section 2. + + Additional types may be defined, derived from those base types and + even from other derived types. Derived types may use subtyping to + formally restrict the possible values. A set of derived types + commonly used in the SNMP framework is defined in the SMIng standard + module IRTF-NMRG-SMING-TYPES (Section 14.2). + + Note that types can also be restricted "inline" in object + definitions (Section 9, Section 10.6) or in refinements of + compliance statements (Section 13) without referring an explicitly + defined type. + + The different base types and its derived types allow different kinds + of subtyping, namely size restrictions and range restrictions. See + the following sections on base types (Section 3.1 through Section + 3.11) for details. + +3.1 OctetString + + The OctetString base type represents arbitrary binary or textual + data. Although SMIng has a theoretical size limitation of 2^32-1 + (4294967295) octets for this base type, MIB designers should realize + that there may be implementation and interoperability limitations + for sizes in excess of 255 octets. + + Values of octet strings may be denoted as textual data enclosed in + double quotes or as arbitrary binary data denoted as a `0x'-prefixed + hexadecimal value of arbitrary but even length, where each pair of + hexadecimal digits represents a single octet. Letters in hexadecimal + values MAY be upper-case but lower-case characters are RECOMMENDED. + Textual data may contain any number (possibly zero) of any 7-bit + displayable ASCII characters except double quote `"', including tab + characters, spaces and line terminator characters (nl or cr & nl). + Textual data may span multiple lines, where each subsequent line + prefix containing only white space up to the column where the first + line's data starts SHOULD be skipped by parsers for a better text + formatting. + + When defining a type derived (directly or indirectly) from the + OctetString base type, the size in octets may be restricted by + appending a list of size ranges or explicit size values, separated + by pipe `|' characters and the whole list enclosed in parenthesis. A + size range consists of a lower bound, two consecutive dots `..' and + + +Strauss Expires August 15, 2000 [Page 14] + +Internet-Draft SMIng February 2000 + + + an upper bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. Of course, size restricting values MUST NOT be + negative. If multiple values or ranges are given, they all MUST be + disjunct and SHOULD be in ascending order. If a size restriction is + applied to an already size restricted octet string the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative size choices, or + splitting ranges into multiple ranges with intermediate gaps. + + Value Examples: + + "This is a multiline + textual data example." // legal + "This is "illegally" quoted." // illegal quotes + "But this is 'ok'." // legal apostrophe quoting + "" // legal zero length + 0x123 // illegal odd hex length + 0x534d496e670a // legal octet string + + Restriction Examples: + + OctetString (0 | 4..255) // legal size spec + OctetString (4) // legal exact size + OctetString (-1 | 1) // illegal negative size + OctetString (1 | 1..10) // illegal overlapping + +3.2 ObjectIdentifier + + The ObjectIdentifier base type represents any object identifier + value, which is a list of up to 128 numbers, named sub-identifiers. + Each sub-identifier has a value between 0 and 2^32-1 (4294967295). + + Values of object identifiers may be denoted as a sequence of + numerical sub-identifier values (decimal or `0x'-prefixed + hexadecimal) separated by single dots and without any intermediate + white space. Alternatively (and preferred in most cases), the first + element may be a previously defined or imported lower-case + identifier, representing a static object identifier prefix while the + total number of sub-identifiers MUST NOT exceed 128 including the + expanded identifier. + + Object identifier derived types cannot be restricted in any way. + + Value Examples: + + + + + + + +Strauss Expires August 15, 2000 [Page 15] + +Internet-Draft SMIng February 2000 + + + 0 // legal single subid + 1.3.6.1 // legal numerical oid + mib-2.1 // legal oid with identifier prefix + internet.4.1.0x0627.0x01 // legal oid with hex subids + iso.-1 // illegal negative subid + iso.org.6 // illegal non-heading identifier + IF-MIB::ifNumber.0 // legel fully quallified instance oid + +3.3 Integer32 + + The Integer32 base type represents integer values between -2^31 + (-2147483648) and 2^31-1 (2147483647). + + Values of type Integer32 may be denoted as decimal or hexadecimal + numbers, where only decimal numbers can be negative. Other decimal + numbers than zero MUST NOT have leading zero digits. Hexadecimal + numbers are prefixed by `0x' and MUST have an even number of + hexadecimal digits, where letters MAY be upper-case but lower-case + characters are RECOMMENDED. + + When defining a type derived (directly or indirectly) from the + Integer32 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. If multiple values or ranges are given they + all MUST be disjunct and SHOULD be in ascending order. If a value + restriction is applied to an already restricted type the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative choices, or + splitting ranges into multiple ranges with intermediate gaps. + + Value Examples: + + 015 // illegal leading zero + -123 // legal negative value + - 1 // illegal intermediate space + 0xabc // illegal hexadecimal value length + -0xff // illegal sign on hex value + 0x80000000 // illegal value, too large + 0xf00f // legal hexadecimal value + + Restriction Examples: + + Integer32 (0 | 5..10) // legal range spec + Integer32 (4..8 | 5..10) // illegal overlapping + + + + +Strauss Expires August 15, 2000 [Page 16] + +Internet-Draft SMIng February 2000 + + +3.4 Integer64 + + The Integer64 base type represents integer values between -2^63 + (-9223372036854775808) and 2^63-1 (9223372036854775807). + + Values of type Integer64 may be denoted as decimal or hexadecimal + numbers, where only decimal numbers can be negative. Other decimal + numbers than zero MUST NOT have leading zero digits. Hexadecimal + numbers are prefixed by `0x' and MUST have an even number of + hexadecimal digits, where letters MAY be upper-case but lower-case + characters are RECOMMENDED. + + When defining a type derived (directly or indirectly) from the + Integer64 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. If multiple values or ranges are given they + all MUST be disjunct and SHOULD be in ascending order. If a value + restriction is applied to an already restricted type the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative choices, or + splitting ranges into multiple ranges with intermediate gaps. + + Value Examples: + + 015 // illegal leading zero + -123 // legal negative value + - 1 // illegal intermediate space + 0xabc // illegal hexadecimal value length + -0xff // illegal sign on hex value + 0x80000000 // legal value + + Restriction Examples: + + Integer64 (0 | 5..10) // legal range spec + Integer64 (4..8 | 5..10) // illegal overlapping + +3.5 Unsigned32 + + The Unsigned32 base type represents positive integer values between + 0 and 2^32-1 (4294967295). + + Values of type Unsigned32 may be denoted as decimal or hexadecimal + numbers. Other decimal numbers than zero MUST NOT have leading zero + digits. Hexadecimal numbers are prefixed by `0x' and MUST have an + even number of hexadecimal digits, where letters MAY be upper-case + but lower-case characters are RECOMMENDED. + + +Strauss Expires August 15, 2000 [Page 17] + +Internet-Draft SMIng February 2000 + + + When defining a type derived (directly or indirectly) from the + Unsigned32 base type, the set of possible values may be restricted + by appending a list of ranges or explicit values, separated by pipe + `|' characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. If multiple values or ranges are given they + all MUST be disjunct and SHOULD be in ascending order. If a value + restriction is applied to an already restricted type the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative choices, or + splitting ranges into multiple ranges with intermediate gaps. + + Value Examples: + + 015 // illegal leading zero + -123 // illegal negative value + 0xabc // illegal hexadecimal value length + 0x80000000 // legal hexadecimal value + 0x8080000000 // illegal value, too large]]> + + Restriction Examples: + + Unsigned32 (0 | 5..10) // legal range spec + Unsigned32 (4..8 | 5..10) // illegal overlapping + +3.6 Unsigned64 + + The Unsigned64 base type represents positive integer values between + 0 and 2^64-1 (18446744073709551615). + + Values of type Unsigned64 may be denoted as decimal or hexadecimal + numbers. Other decimal numbers than zero MUST NOT have leading zero + digits. Hexadecimal numbers are prefixed by `0x' and MUST have an + even number of hexadecimal digits, where letters MAY be upper-case + but lower-case characters are RECOMMENDED. + + When defining a type derived (directly or indirectly) from the + Unsigned64 base type, the set of possible values may be restricted + by appending a list of ranges or explicit values, separated by pipe + `|' characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. Each value can be given in decimal or `0x'-prefixed + hexadecimal notation. If multiple values or ranges are given they + all MUST be disjunct and SHOULD be in ascending order. If a value + restriction is applied to an already restricted type the new + restriction MUST be more limiting, that is raising the lower bounds, + reducing the upper bounds, reducing the alternative choices, or + splitting ranges into multiple ranges with intermediate gaps. + + +Strauss Expires August 15, 2000 [Page 18] + +Internet-Draft SMIng February 2000 + + + Value Examples: + + 015 // illegal leading zero + -123 // illegal negative value + 0xabc // illegal hexadecimal value length + 0x8080000000 // legal hexadecimal value + + Restriction Examples: + + Unsigned64 (1..10000000000) // legal range spec + +3.7 Float32 + + The Float32 base type represents floating point values of single + precision as described by [11]. + + Values of type Float32 may be denoted as a decimal fraction with an + optional exponent as known from many programming languages. See the + grammar rule `floatValue' of Appendix A for the detailed syntax. + Special values are `snan' (signaling Not-a-Number), `qnan' (quiet + Not-a-Number), `neginf' (negative infinity), and `posinf' (positive + infinity). Note that -0.0 and +0.0 are different floating point + values. 0.0 is equal to +0.0. + + When defining a type derived (directly or indirectly) from the + Float32 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. If multiple values or ranges are given they all MUST be + disjunct and SHOULD be in ascending order. If a value restriction + is applied to an already restricted type the new restriction MUST be + more limiting, that is raising the lower bounds, reducing the upper + bounds, reducing the alternative choices, or splitting ranges into + multiple ranges with intermediate gaps. The special values `snan', + `qnan', `neginf', and `posinf' must be explicitly listed in + restrictions if they shall be included, where `snan' and `qnan' + cannot be used in ranges. + + Note that encoding is not subject to this specification. It has to + be described by protocols that transport objects of type Float32. + Note also that most floating point encodings disallow the + representation of many values that can be written as decimal + fractions as used in SMIng for human readability. Therefore, + explicit values in floating point type restrictions should be + handled with care. + + Value Examples: + + + +Strauss Expires August 15, 2000 [Page 19] + +Internet-Draft SMIng February 2000 + + + 00.1 // illegal leading zero + 3.1415 // legal value + -2.5E+3 // legal negative exponential value + + Restriction Examples: + + Float32 (-1.0..1.0) // legal range spec + Float32 (1 | 3.3 | 5) // legal, probably unrepresentable 3.3 + Float32 (-10.0..10.0 | 0) // illegal overlapping + +3.8 Float64 + + The Float64 base type represents floating point values of double + precision as described by [11]. + + Values of type Float64 may be denoted as a decimal fraction with an + optional exponent as known from many programming languages. See the + grammar rule `floatValue' of Appendix A for the detailed syntax. + Special values are `snan' (signaling Not-a-Number), `qnan' (quiet + Not-a-Number), `neginf' (negative infinity), and `posinf' (positive + infinity). Note that -0.0 and +0.0 are different floating point + values. 0.0 is equal to +0.0. + + When defining a type derived (directly or indirectly) from the + Float64 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. If multiple values or ranges are given they all MUST be + disjunct and SHOULD be in ascending order. If a value restriction + is applied to an already restricted type the new restriction MUST be + more limiting, that is raising the lower bounds, reducing the upper + bounds, reducing the alternative choices, or splitting ranges into + multiple ranges with intermediate gaps. The special values `snan', + `qnan', `neginf', and `posinf' must be explicitly listed in + restrictions if they shall be included, where `snan' and `qnan' + cannot be used in ranges. If 0.0 is included, -0.0 will also be. + + Note that encoding is not subject to this specification. It has to + be described by protocols that transport objects of type Float64. + Note also that most floating point encodings disallow the + representation of many values that can be written as decimal + fractions as used in SMIng for human readability. Therefore, + explicit values in floating point type restrictions should be + handled with care. + + Value Examples: + + + + +Strauss Expires August 15, 2000 [Page 20] + +Internet-Draft SMIng February 2000 + + + 00.1 // illegal leading zero + 3.1415 // legal value + -2.5E+3 // legal negative exponential value + + Restriction Examples: + + Float64 (-1.0..1.0) // legal range spec + Float64 (1 | 3.3 | 5) // legal, probably unrepresentable 3.3 + Float64 (-10.0..10.0 | 0) // illegal overlapping + +3.9 Float128 + + The Float128 base type represents floating point values of quadruple + precision as described by [11]. + + Values of type Float128 may be denoted as a decimal fraction with an + optional exponent as known from many programming languages. See the + grammar rule `floatValue' of Appendix A for the detailed syntax. + Special values are `snan' (signaling Not-a-Number), `qnan' (quiet + Not-a-Number), `neginf' (negative infinity), and `posinf' (positive + infinity). Note that -0.0 and +0.0 are different floating point + values. 0.0 is equal to +0.0. + + When defining a type derived (directly or indirectly) from the + Float128 base type, the set of possible values may be restricted by + appending a list of ranges or explicit values, separated by pipe `|' + characters and the whole list enclosed in parenthesis. A range + consists of a lower bound, two consecutive dots `..' and an upper + bound. If multiple values or ranges are given they all MUST be + disjunct and SHOULD be in ascending order. If a value restriction + is applied to an already restricted type the new restriction MUST be + more limiting, that is raising the lower bounds, reducing the upper + bounds, reducing the alternative choices, or splitting ranges into + multiple ranges with intermediate gaps. The special values `snan', + `qnan', `neginf', and `posinf' must be explicitly listed in + restrictions if they shall be included, where `snan' and `qnan' + cannot be used in ranges. If 0.0 is included, -0.0 will also be. + + Note that encoding is not subject to this specification. It has to + be described by protocols that transport objects of type Float128. + Note also that most floating point encodings disallow the + representation of many values that can be written as decimal + fractions as used in SMIng for human readability. Therefore, + explicit values in floating point type restrictions should be + handled with care. + + Value Examples: + + + + +Strauss Expires August 15, 2000 [Page 21] + +Internet-Draft SMIng February 2000 + + + 00.1 // illegal leading zero + 3.1415 // legal value + -2.5E+3 // legal negative exponential value + + Restriction Examples: + + Float128 (-1.0..1.0) // legal range spec + Float128 (1 | 3.3 | 5) // legal, probably unrepresentable 3.3 + Float128 (-10.0..10.0 | 0) // illegal overlapping + +3.10 Enumeration + + The Enumeration base type represents values from a set of integers + in the range between -2^31 (-2147483648) and 2^31-1 (2147483647), + where each value has an assigned name. The list of those named + numbers has to be comma-separated, enclosed in parenthesis and + appended to the `Enumeration' keyword. Each named number is denoted + by its lower-case identifier followed by the assigned integer value, + denoted as a decimal or `0x'-prefixed hexadecimal number, enclosed + in parenthesis. Every name and every number in an enumeration type + MUST be unique. It is RECOMMENDED that values start at 1 and be + numbered contiguously. + + Values of enumeration types may be denoted as decimal or + `0x'-prefixed hexadecimal numbers or preferably as their assigned + names. + + When defining a type derived (directly or indirectly) from an + enumeration type, the set of named numbers may be restricted by + removing one or more named numbers. But no named numbers may be + added or changed regarding its name, value, or both. + + Type and Value Examples: + + Enumeration (up(1), down(2), testing(3)) + + 0 // illegal, value 0 out of range + up // legal value given by name + 2 // legal value given by number + +3.11 Bits + + The Bits base type represents bit sets. That is, a Bits value is a + set of flags identified by small integer numbers starting at 0. + Each bit number has an assigned name. The list of those named + numbers has to be comma-separated, enclosed in parenthesis and + appended to the `Bits' keyword. Each named number is denoted by its + lower-case identifier followed by the assigned integer value, + denoted as a decimal or `0x'-prefixed hexadecimal number, enclosed + + +Strauss Expires August 15, 2000 [Page 22] + +Internet-Draft SMIng February 2000 + + + in parenthesis. Every name and every number in a bits type MUST be + unique. It is RECOMMENDED that numbers start at 0 and be numbered + contiguously. + + Values of bits types may be denoted as a comma-separated list of + decimal or `0x'-prefixed hexadecimal numbers or preferably their + assigned names enclosed in parenthesis. There MUST NOT be any + element (by name or number) listed more than once. It is RECOMMENDED + to list elements in ascending order, although the order is + semantically irrelevant. + + When defining a type derived (directly or indirectly) from a bits + type, the set of named numbers may be restricted by removing one or + more named numbers. But no named numbers may be added or changed + regarding its name, value, or both. + + Type and Value Examples: + + Bits (readable(0), writeable(1), executable(2)) + + () // legal empty value + (readable, writeable, 2) // legal value + (0, readable, executable) // illegal, readable(0) appears twice + (writeable, 4) // illegal, element 4 out of range + +3.12 Display Formats + + Some SMIng definitions, namely scalar and columnar object + definitions and type definitions, allow the specification of a + format to be used, when a value of that object or an object of that + type is displayed. Format specifications are represented as textual + data. + + When the object or type has an underlying base type of Integer32, + Integer64, Unsigned32, or Unsigned64, the format consists of an + integer-format specification, containing two parts. The first part + is a single character suggesting a display format, either: `x' for + hexadecimal, or `d' for decimal, or `o' for octal, or `b' for + binary. For all types, when rendering the value, leading zeros are + omitted, and for negative values, a minus sign is rendered + immediately before the digits. The second part is always omitted + for `x', `o' and `b', and need not be present for `d'. If present, + the second part starts with a hyphen and is followed by a decimal + number, which defines the implied decimal point when rendering the + value. For example `d-2' suggests that a value of 1234 be rendered + as `12.34'. + + When the object or type has an underlying base type of OctetString, + the format consists of one or more octet-format specifications. + + +Strauss Expires August 15, 2000 [Page 23] + +Internet-Draft SMIng February 2000 + + + Each specification consists of five parts, with each part using and + removing zero or more of the next octets from the value and + producing the next zero or more characters to be displayed. The + octets within the value are processed in order of significance, most + significant first. + + The five parts of a octet-format specification are: + + 1. the (optional) repeat indicator; if present, this part is a `*', + and indicates that the current octet of the value is to be used + as the repeat count. The repeat count is an unsigned integer + (which may be zero) which specifies how many times the remainder + of this octet-format specification should be successively + applied. If the repeat indicator is not present, the repeat + count is one. + + 2. the octet length: one or more decimal digits specifying the + number of octets of the value to be used and formatted by this + octet-specification. Note that the octet length can be zero. + If less than this number of octets remain in the value, then the + lesser number of octets are used. + + 3. the display format, either: `x' for hexadecimal, `d' for + decimal, `o' for octal, `a' for ASCII, or `t' for UTF-8 [12]. If + the octet length part is greater than one, and the display + format part refers to a numeric format, then network + byte-ordering (big-endian encoding) is used interpreting the + octets in the value. The octets processed by the `t' display + format do not necessarily form an integral number of UTF-8 + characters. Trailing octets which do not form a valid UTF-8 + encoded character are discarded. + + 4. the (optional) display separator character; if present, this + part is a single character which is produced for display after + each application of this octet-specification; however, this + character is not produced for display if it would be immediately + followed by the display of the repeat terminator character for + this octet specification. This character can be any character + other than a decimal digit and a `*'. + + 5. the (optional) repeat terminator character, which can be present + only if the display separator character is present and this + octet specification begins with a repeat indicator; if present, + this part is a single character which is produced after all the + zero or more repeated applications (as given by the repeat + count) of this octet specification. This character can be any + character other than a decimal digit and a `*'. + + Output of a display separator character or a repeat terminator + + +Strauss Expires August 15, 2000 [Page 24] + +Internet-Draft SMIng February 2000 + + + character is suppressed if it would occur as the last character of + the display. + + If the octets of the value are exhausted before all the octet format + specification have been used, then the excess specifications are + ignored. If additional octets remain in the value after + interpreting all the octet format specifications, then the last + octet format specification is re-interpreted to process the + additional octets, until no octets remain in the value. + + Note that for some types (e.g. ObjectIdentifier) no format + specifications are defined and SHOULD be omitted. Implementations + MUST ignore format specifications they cannot interpret. Also note + that the SMIng grammar (Appendix A) does not specify the syntax of + format specifications. + + Display Format Examples: + + Base Type Format Example Value Rendered Value + ----------- ------------------- ---------------- ----------------- + OctetString 255a "Hello World." Hello World. + OctetString 1x: "Hello!" 48:65:6c:6c:6f:21 + OctetString 1d:1d:1d.1d,1a1d:1d 0x0d1e0f002d0400 13:30:15.0,-4:0 + OctetString 1d.1d.1d.1d/2d 0x0a0000010400 10.0.0.1/1024 + OctetString *1x:/1x: 0x02aabbccddee aa:bb/cc:dd:ee + Integer32 d-2 1234 12.34 + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 25] + +Internet-Draft SMIng February 2000 + + +4. The SMIng File Structure + + The topmost container of SMIng information is a file. An SMIng file + may contain zero, one or more modules. It is RECOMMENDED to separate + modules into files named by their modules, where possible. Though, + for dedicated purposes it may be reasonable to collect several + modules in a single file. + + The top level SMIng construct is the `module' statement (Section 5) + that defines a single MIB module. A module contains a sequence of + sections in an obligatory order with different kinds of definitions. + Whether these sections contain statements or remain empty mainly + depends on the purpose of the module (see Section 2). + +4.1 Comments + + Comments can be included at any position in an SMIng file, except in + between the characters of a single token like those of a quoted + strings. However, it is RECOMMENDED that all substantive + descriptions be placed within an appropriate description clause. + + Comments commence with a pair of adjacent slashes `//' and end at + the end of the line. + +4.2 Statements and Arguments + + SMIng has a very small set of basic grammar rules based on the + concept of statements. Each statement starts with a lower-case + keyword identifying the statement followed by a number (possibly + zero) of arguments. An argument may be quoted text, an identifier, a + value of any base type, a list of identifiers enclosed in + parenthesis `( )' or a statement block enclosed in curly braces `{ + }'. Since statement blocks are valid arguments, it is possible to + nest statement sequences. Each statement is terminated by a + semicolon `;'. + + The core set of statements may be extended using the SMIng + `extension' statement. See Section 6 and Section 16 for details. + + At places where a statement is expected, but an unknown lower-case + word is read, those statements MUST be skipped up to the proper + semicolon, including nested statement blocks. + + + + + + + + + +Strauss Expires August 15, 2000 [Page 26] + +Internet-Draft SMIng February 2000 + + +5. The module Statement + + The `module' statement is used as a container of all definitions of + a single SMIng MIB module. It gets two arguments: an upper-case + module name and a statement block that contains mandatory and + optional statements and sections of statements in an obligatory + order: + + module { + + + + + + + + + + + + + + + + + + + + + + }; + + The optional `import' statements are followed by the mandatory + `organization', `contact', and `description' statements and the + optional `reference' statement, which in turn are followed by the + mandatory `revision' statements. This part defines the module's meta + information while the following sections contain its main + definitions. + + See the `moduleStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `module' statement. + +5.1 The module's import Statement + + The optional module's `import' statement is used to import + descriptors from external modules into the local module's namespace. + It gets two arguments: the name of the external module and a + comma-separated list of one or more identifiers to be imported + enclosed in parenthesis. + + +Strauss Expires August 15, 2000 [Page 27] + +Internet-Draft SMIng February 2000 + + + Multiple `import' statements for the same module but with disjunct + lists of identifiers are allowed, though NOT RECOMMENDED. Anyhow, + the same identifier from the same module MUST NOT be imported + multiple times. To import identifiers with the same name from + different modules might be necessary and is allowed. To distinguish + them in the local module, they have to be referred by qualified + names. It is NOT RECOMMENDED to import identifiers not used in the + local module. + + See the `importStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `import' statement. + +5.2 The module's organization Statement + + The module's `organization' statement, which must be present, gets + one argument which is used to specify a textual description of the + organization(s) under whose auspices this module was developed. + +5.3 The module's contact Statement + + The module's `contact' statement, which must be present, gets one + argument which is used to specify the name, postal address, + telephone number, and electronic mail address of the person to whom + technical queries concerning this revision of this module should be + sent. + +5.4 The module's description Statement + + The module's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the contents of this module. + +5.5 The module's reference Statement + + The module's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + management information, or some other document which provides + additional information relevant to this module. + +5.6 The module's revision Statement + + The module's `revision' statement is repeatedly used to specify the + editorial revisions of the module, including the initial revision. + It gets one argument which is a statement block that holds detailed + information in an obligatory order. A module MUST have at least one + initial `revision' statement. For every editorial change, a new one + MUST be added in front of the revisions sequence, so that all + revisions are in reverse chronological order. + + +Strauss Expires August 15, 2000 [Page 28] + +Internet-Draft SMIng February 2000 + + + See the `revisionStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `revision' statement. + +5.6.1 The revision's date Statement + + The revision's `date' statement, which must be present, gets one + argument which is used to specify the date and time of the revision + in the format `YYYY-MM-DD HH:MM' or `YYYY-MM-DD' which implies the + time `00:00'. The time is always given in UTC. + + See the `date' rule of the SMIng grammar (Appendix A) for the formal + syntax of the revision's `date' statement. + +5.6.2 The revision's description Statement + + The revision's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the revision. + +5.7 The module's identity Statement + + The module's `identity' statement, which need not be present, gets + one argument which specifies a node identifier within the local + module, so that the object identifier of this node can be used to + identify the module. + +5.8 Usage Example + + Consider how a skeletal MIB module might be constructed: e.g., + + module FIZBIN-MIB { + + import IRTF-NMRG-SMING (experimental); + + organization + "IETF SNMPv2 Working Group, + IRTF Network Management Research Group (NMRG)"; + + contact + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + DE + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + + +Strauss Expires August 15, 2000 [Page 29] + +Internet-Draft SMIng February 2000 + + + description + "The MIB module for entities implementing + the xxxx protocol."; + + reference + "RFC 2578, Section 5.7."; + + revision { + date "1999-09-28"; + description + "Conversion from SMIv2 to SMIng."; + }; + revision { + date "1995-05-24 18:11"; + description + "Revision for RFC 1902."; + }; + revision { + date "1992-10-07 04:33"; + description + "The initial version of this MIB module, + published in RFC 1442."; + }; + + identity fizbin; + + // ... further definitions ... + + }; // end of module FIZBIN-MIB. + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 30] + +Internet-Draft SMIng February 2000 + + +6. The extension Statement + + The `extension' statement is used to define new statements to be + used in the local module following this extension statement + definition or in external modules that may import this extension + statement definition. The `extension' statement gets two arguments: + a lower-case extension statement identifier and a statement block + that holds detailed extension information in an obligatory order. + + Extension statement identifiers SHOULD NOT contain any upper-case + characters or hyphens. + + Note that the SMIng extension feature does not allow to formally + specify the context, argument syntax and semantics of an extension. + Its only purpose is to declare the existence of an extension and to + allow a unique reference to an extension. See Section 16 for + detailed information on extensions and Section 14.3 for a common + example, the `agentcaps' extension. + + See the `extensionStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `extension' statement. + +6.1 The extension's status Statement + + The extension's `status' statement, which need not be present, gets + one argument which is used to specify whether this extension + definition is current or historic. The value `current' means that + the definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + implementation in order to foster interoperability with + older/existing implementations. + + If the `status' statement is omitted, the status value `current' is + implied. + +6.2 The extension's description Statement + + The extension's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the extension statement. + + It is RECOMMENDED to include information on the extension's context, + its semantics, and implementation conditions. See also Section 16. + +6.3 The extension's reference Statement + + The extension's `reference' statement, which need not be present, + + +Strauss Expires August 15, 2000 [Page 31] + +Internet-Draft SMIng February 2000 + + + gets one argument which is used to specify a textual cross-reference + to some other document, either another module which defines related + extension definitions, or some other document which provides + additional information relevant to this extension. + +6.4 The extension's abnf Statement + + The extension's `abnf' statement, which need not be present, gets + one argument which is used to specify a formal ABNF [8] grammar + definition of the extension. + + Note that the `abnf' statement should contain only pure ABNF and no + additional text, though comments prefixed by semicolon are allowed + but should probably be moved to the description statement. Note also + that double quotes are not allowed inside textual descriptions which + are itself enclosed in double quotes. So they have to be replaced by + single quotes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 32] + +Internet-Draft SMIng February 2000 + + +7. The typedef Statement + + The `typedef' statement is used to define new data types to be used + in the local module or in external modules. It gets two arguments: + an upper-case type identifier and a statement block that holds + detailed type information in an obligatory order. + + Type identifiers SHOULD NOT consist of all upper-case characters and + SHOULD NOT contain hyphens. + + See the `typedefStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `typedef' statement. + +7.1 The typedef's type Statement + + The typedef's `type' statement, which must be present, gets one + argument which is used to specify the type from which this type is + derived. Optionally, type restrictions may be applied to the new + type by appending subtyping information according to the rules of + the base type. See Section 3 for SMIng base types and their type + restrictions. + +7.2 The typedef's default Statement + + The typedef's `default' statement, which need not be present, gets + one argument which is used to specify an acceptable default value + for objects of this type. A default value may be used at the + discretion of an agent when an object instance is created. That is, + the value is a "hint" to implementors. + + The value of the `default' statement must, of course, correspond to + the (probably restricted) type specified in the typedef's `type' + statement. + + The default value of a type may be overwritten by a default value of + an object of this type. + + Note that for some types, default values make no sense, e.g. + IRTF-NMRG-SMING-TYPES::Counter32. + +7.3 The typedef's format Statement + + The typedef's `format' statement, which need not be present, gets + one argument which is used to give a hint as to how the value of an + instance of an object of this type might be displayed. See Section + 3.12 for a description of format specifications. + + If no format is specified, it is inherited from the type given in + the `type' statement. On the other hand, the format specification + + +Strauss Expires August 15, 2000 [Page 33] + +Internet-Draft SMIng February 2000 + + + of a type may be overwritten by a format specification of an object + of this type. + +7.4 The typedef's units Statement + + The typedef's `units' statement, which need not be present, gets one + argument which is used to specify a textual definition of the units + associated with objects of this type. + + If no units are specified, they are inherited from the type given in + the `type' statement. On the other hand, the units specification of + a type may be overwritten by a units specification of an object of + this type. + + The units specification has to be appropriate for values displayed + according to the typedef's format specification, if present. E.g., + if the type defines frequency values of type Unsigned64 measured in + thousands of Hertz, the format specification should be `d-3' and the + units specification should be `Hertz' or `Hz'. If the format + specification would be omitted, the units specification should be + `Milli-Hertz' or `mHz'. MIB Authors should pay attention to keep + format and units specifications of type and object definitions + synced. Application implementors MUST NOT implement units + specifications without implementing format specifications. + +7.5 The typedef's status Statement + + The typedef's `status' statement, which need not be present, gets + one argument which is used to specify whether this type definition + is current or historic. The value `current' means that the + definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + implementation in order to foster interoperability with + older/existing implementations. + + Derived types SHOULD NOT be defined as `current' if their underlying + type is `deprecated' or `obsolete'. Similarly, they SHOULD NOT be + defined as `deprecated' if their underlying type is `obsolete'. + Nevertheless, subsequent revisions of the underlying type cannot be + avoided, but SHOULD be taken into account in subsequent revisions of + the local module. + + If the `status' statement is omitted, the status value `current' is + implied. + + + + + +Strauss Expires August 15, 2000 [Page 34] + +Internet-Draft SMIng February 2000 + + +7.6 The typedef's description Statement + + The typedef's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the newly defined type. + + It is RECOMMENDED to include all semantic definitions necessary for + implementation, and to embody any information which would otherwise + be communicated in any commentary annotations associated with this + type definition. + +7.7 The typedef's reference Statement + + The typedef's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + type definitions, or some other document which provides additional + information relevant to this type definition. + +7.8 Usage Examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 35] + +Internet-Draft SMIng February 2000 + + + typedef RptrOperStatus { + type Enumeration (other(1), ok(2), rptrFailure(3), + groupFailure(4), portFailure(5), + generalFailure(6)); + default other; // undefined by default. + status deprecated; + description + "A type to indicate the operational state + of a repeater."; + reference + "[IEEE 802.3 Mgt], 30.4.1.1.5, aRepeaterHealthState."; + }; + + typedef DateAndTime { + type OctetString (8 | 11); + format "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"; + status current; // could be omitted + description + "A date-time specification. + ... + Note that if only local time is known, then timezone + information (fields 8-10) is not present."; + reference + "RFC 2579, SNMPv2-TC.DateAndTime."; + }; + + typedef Frequency { + type Unsigned64; + format "d-3" + units "Hertz"; + description + "A wide-range frequency specification measured + in thousands of Hertz."; + }; + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 36] + +Internet-Draft SMIng February 2000 + + +8. The node Statement + + The `node' statement is used to name and describe a node in the + object identifier tree, without associating object information with + this node. This may be useful to group definitions in a subtree of + related management information, or to uniquely define an identity of + arbitrary kind to be referenced in objects of type ObjectIdentifier. + The `node' statement gets two arguments: a lower-case node + identifier and a statement block that holds detailed node + information in an obligatory order. + + See the `nodeStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `node' statement. + +8.1 The node's oid Statement + + The node's `oid' statement, which must be present, gets one argument + which specifies the object identifier value that is assigned to this + node. + +8.2 The node's status Statement + + The node's `status' statement, which need not be present, gets one + argument which is used to specify whether this node definition is + current or historic. The value `current' means that the definition + is current and valid. The value `obsolete' means the definition is + obsolete and should not be implemented and/or can be removed if + previously implemented. While the value `deprecated' also indicates + an obsolete definition, it permits new/continued implementation in + order to foster interoperability with older/existing + implementations. + + If the `status' statement is omitted, the status value `current' is + implied. + +8.3 The node's description Statement + + The node's `description' statement, which must be present, gets one + argument which is used to specify a high-level textual description + of this node. + + It is RECOMMENDED to include all semantics and purposes of this + node. + +8.4 The node's reference Statement + + The node's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + + +Strauss Expires August 15, 2000 [Page 37] + +Internet-Draft SMIng February 2000 + + + nodes, or some other document which provides additional information + relevant to this node. + +8.5 Usage Examples + + node iso { oid 1; }; + node org { oid iso.3; }; + node dod { oid org.6; }; + node internet { oid dod.1; }; + + node zeroDotZero { + oid 0.0; + description "A value used for null identifiers."; + reference "RFC 2578, 2. Definitions."; + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 38] + +Internet-Draft SMIng February 2000 + + +9. The scalar Statement + + The `scalar' statement is used to define a scalar managed object. + The `scalar' statement gets two arguments: a lower-case scalar + identifier and a statement block that holds detailed object + information in an obligatory order. + + See the `scalarStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `scalar' statement. + +9.1 The scalar's oid Statement + + The scalar's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this scalar object. + +9.2 The scalar's type Statement + + The scalar's `type' statement, which must be present, gets one + argument which is used to specify the data type of this scalar + object. Optionally, type restrictions may be applied to the type by + appending subtyping information according to the rules of the base + type. See Section 3 for SMIng base types and their type + restrictions. + +9.3 The scalar's access Statement + + The scalar's `access' statement, which must be present, gets one + argument which is used to specify whether it makes sense to read + and/or write an instance of the object, or to include its value in a + notification. This is the maximal level of access for the object. + This maximal level of access is independent of any administrative + authorization policy. + + The value `readwrite' indicates that read and write access makes + sense. The value `readonly' indicates that read access makes sense, + but write access is never possible. The value `notifyonly' indicates + an object which is accessible only via a notification. + + These values are ordered, from least to greatest access level: + `notifyonly', `readonly', `readwrite'. + +9.4 The scalar's default Statement + + The scalar's `default' statement, which need not be present, gets + one argument which is used to specify an acceptable default value + for this scalar object. A default value may be used at the + discretion of an agent when an object instance is created. That is, + the value is a "hint" to implementors. + + +Strauss Expires August 15, 2000 [Page 39] + +Internet-Draft SMIng February 2000 + + + The value of the `default' statement must, of course, correspond to + the (probably restricted) type specified in the scalar's `type' + statement. + + The scalar's default value overrides the default value of the + underlying type definition, if both are present. + + Note that for objects of some types, default values make no sense, + e.g. IRTF-NMRG-SMING-TYPES::Counter32. + +9.5 The scalar's format Statement + + The scalar's `format' statement, which need not be present, gets one + argument which is used to give a hint as to how the value of an + instance of this object might be displayed. See Section 3.12 for a + description of format specifications. + + The scalar's format specification overrides the format specification + of the underlying type definition if both are present. + +9.6 The scalar's units Statement + + The scalar's `units' statement, which need not be present, gets one + argument which is used to specify a textual definition of the units + associated with this scalar object. + + The scalar's units specification overrides the units specification + of the underlying type definition if both are present. + + The units specification has to be appropriate for values displayed + according to the scalar's format specification if present. E.g., if + the scalar object represents a frequency value of type Unsigned64 + measured in thousands of Hertz, the format specification should be + `d-3' and the units specification should be `Hertz' or `Hz'. If the + format specification would be omitted, the units specification + should be `Milli-Hertz' or `mHz'. MIB Authors should pay attention + to keep format and units specifications of type and object + definitions synced. Application implementors MUST NOT implement + units specifications without implementing format specifications. + +9.7 The scalar's status Statement + + The scalar's `status' statement, which need not be present, gets one + argument which is used to specify whether this scalar object + definition is current or historic. The value `current' means that + the definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + + +Strauss Expires August 15, 2000 [Page 40] + +Internet-Draft SMIng February 2000 + + + implementation in order to foster interoperability with + older/existing implementations. + + Scalar objects SHOULD NOT be defined as `current' if their type is + `deprecated' or `obsolete'. Similarly, they SHOULD NOT be defined as + `deprecated' if their type is `obsolete'. Nevertheless, subsequent + revisions of used type definition cannot be avoided, but SHOULD be + taken into account in subsequent revisions of the local module. + + If the `status' statement is omitted the status value `current' is + implied. + +9.8 The scalar's description Statement + + The scalar's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of this scalar object. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this scalar object. + +9.9 The scalar's reference Statement + + The scalar's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + scalar objects, or some other document which provides additional + information relevant to this scalar object. + +9.10 Usage Examples + + scalar dialCtlTrapEnable { + oid dialCtlConfiguration.2; + type Enumeration (enabled(1), disabled(2)); + access readwrite; + default disabled; + description + "This object indicates whether dialCtlPeerCallInformation + and dialCtlPeerCallSetup traps should be generated for + all peers. If the value of this object is enabled(1), + traps will be generated for all peers. If the value + of this object is disabled(2), traps will be generated + only for peers having dialCtlPeerCfgTrapEnable set + to enabled(1)."; + }; + + + + + + +Strauss Expires August 15, 2000 [Page 41] + +Internet-Draft SMIng February 2000 + + +10. The table Statement + + The `table' statement is used to define the root node of a table. + The `table' statement gets two arguments: a lower-case table + identifier and a statement block that holds detailed table + information in an obligatory order. + + See the `tableStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `table' statement. + +10.1 The table's oid Statement + + The table's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this table node. + +10.2 The table's status Statement + + The table's `status' statement, which need not be present, gets one + argument which is used to specify whether this table definition is + current or historic. The value `current' means that the definition + is current and valid. The value `obsolete' means the definition is + obsolete and should not be implemented and/or can be removed if + previously implemented. While the value `deprecated' also indicates + an obsolete definition, it permits new/continued implementation in + order to foster interoperability with older/existing + implementations. + + If the `status' statement is omitted the status value `current' is + implied. + +10.3 The table's description Statement + + The table's `description' statement, which must be present, gets one + argument which is used to specify a high-level textual description + of this table. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this table. + +10.4 The table's reference Statement + + The table's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + tables, or some other document which provides additional information + relevant to this table. + + + + +Strauss Expires August 15, 2000 [Page 42] + +Internet-Draft SMIng February 2000 + + +10.5 The table's row Statement + + The table's `row' statement, which must be present, gets two + arguments: a lower-case row identifier and a statement block that + holds detailed row information in an obligatory order. + + See the `rowStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `row' statement. + +10.5.1 The row's oid Statement + + The row's `oid' statement, which must be present, gets one argument + which specifies the object identifier value that is assigned to this + table row. Note that the object identifier of a table row MUST be + built be the table's object identifier followed by a `1' + sub-identifier. + +10.5.2 Table Indexing Statements + + SMIng offers five methods to supply table indexing information: + ordinary tables, table augmentations, sparse table augmentations, + table expansions, and reordered tables use different statements to + denote their indexing information. Each table row definition must + contain exactly one of the following indexing statements. + +10.5.2.1 The row's index Statement for Table Indexing + + The row's `index' statement, which is used to supply table indexing + information of base table rows, gets at least one argument that + specifies a comma-separated list of object identifiers, that are + used for table indexing, enclosed in parenthesis. + + Under some circumstances, an optional `implied' keyword may be added + in front of the list to indicate a compact encoding of the last + object in the list. See Section 2.4 for details. + +10.5.2.2 The row's augments Statement for Table Indexing + + The row's `augments' statement, which is used to supply table + indexing information of table rows that augment a base table row, + gets one argument that specifies the identifier of the table row to + be augmented. Note that a row augmentation cannot itself be + augmented. Anyhow, a base row may be augmented by multiple row + augmentations. + + A row augmentation makes instances of subordinate columnar objects + identified according to the index specification of the base row + corresponding to the row named in the `augments' statement. + Further, instances of subordinate columnar objects of a row + + +Strauss Expires August 15, 2000 [Page 43] + +Internet-Draft SMIng February 2000 + + + augmentation exist according to the same semantics as instances of + subordinate columnar objects of the base row being augmented. As + such, note that creation of a base row implies the correspondent + creation of any row augmentations. Row augmentations MUST NOT be + used in row creation and deletion operations. + +10.5.2.3 The row's sparse Statement for Table Indexing + + The row's `sparse' statement, which is used to supply table indexing + information of table rows that sparsely augment a base table row, + gets one argument that specifies the identifier of the table row to + be sparsely augmented. Note that a sparse row augmentation cannot + itself be augmented. Anyhow, a base row may be augmented by multiple + row augmentations, sparsely or not. + + A sparse row augmentation makes instances of subordinate columnar + objects identified, if present, according to the index specification + of the base row corresponding to the row named in the `sparse' + statement. Further, instances of subordinate columnar objects of a + sparse row augmentation exist according to the semantics as + instances of subordinate columnar objects of the base row and the + (non-formal) rules that confine the sparse relationship. As such, + note that creation of a sparse row augmentation may be implied by + the creation of a base row as well as done by an explicit creation. + However, if a base row gets deleted, any dependent sparse row + augmentations get also deleted implicitly. + +10.5.2.4 The row's reorders Statement for Table Indexing + + The row's `reorders' statement is used to supply table indexing + information of table rows, that contain exactly the same index + objects of a base table row, except in another order. It gets at + least two arguments. The first one specifies the identifier of the + base table row. The second one specifies a comma-separated list of + exactly those object identifiers of the base row's `index' + statement, but in the order to be used in this table. Note that a + reordered table cannot itself be reordered. Anyhow, a base row may + be used for multiple reordered tables. + + Under some circumstances, an optional `implied' keyword may be added + in front of the list to indicate a compact encoding of the last + object in the list. See Section 2.4 for details. + + Instances of subordinate columnar objects of a reordered table exist + according to the same semantics as instances of subordinate columnar + objects of the base row. As such, note that creation of a base row + implies the correspondent creation of any related reordered table. + Rows or reordered tables MUST NOT be used in row creation and + deletion operations. + + +Strauss Expires August 15, 2000 [Page 44] + +Internet-Draft SMIng February 2000 + + +10.5.2.5 The row's expands Statement for Table Indexing + + The row's `expands' statement is used to supply table indexing + information of table row expansions. Table row expansions use + exactly the same index objects of another row together with + additional indexing objects. Thus, the `expands' statement gets at + least two arguments. The first one specifies the identifier of the + related table row. The second one specifies a comma-separated list + of the additional object identifiers used for indexing. Note that an + expanded table may itself be expanded, and related rows may be used + for multiple table expansions. + + Under some circumstances, an optional `implied' keyword may be added + in front of the list to indicate a compact encoding of the last + object in the list. See Section 2.4 for details. + +10.5.3 The row's create Statement + + The row's `create' statement, which need not be present, gets no + argument. If the `create' statement is present, row creation (and + deletion) is possible. + +10.5.4 The row's status Statement + + The row's `status' statement, which need not be present, gets one + argument which is used to specify whether this row definition is + current or historic. The value `current' means that the definition + is current and valid. The value `obsolete' means the definition is + obsolete and should not be implemented and/or can be removed if + previously implemented. While the value `deprecated' also indicates + an obsolete definition, it permits new/continued implementation in + order to foster interoperability with older/existing + implementations. + + If the `status' statement is omitted the status value `current' is + implied. + +10.5.5 The row's description Statement + + The row's `description' statement, which must be present, gets one + argument which is used to specify a high-level textual description + of this table row. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this table row. Especially, if the row's + indexing statement contains objects that are not columnar objects of + the row, it SHOULD be described how these objects are used in + uniquely identifying instances of the row's columnar objects. + + + +Strauss Expires August 15, 2000 [Page 45] + +Internet-Draft SMIng February 2000 + + +10.5.6 The row's reference Statement + + The row's `reference' statement, which need not be present, gets one + argument which is used to specify a textual cross-reference to some + other document, either another module which defines related table + rows, or some other document which provides additional information + relevant to this table row. + +10.6 The table row's column Statement + + The row's `column' statement is used to define a columnar managed + object. The `column' statement gets two arguments: a lower-case + column identifier and a statement block that holds detailed object + information in an obligatory order. + + See the `columnStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `column' statement. + +10.6.1 The column's oid Statement + + The column's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this columnar object. + +10.6.2 The column's type Statement + + The column's `type' statement, which must be present, gets at least + one argument which is used to specify the data type of this columnar + object. Optionally, type restrictions may be applied to the type by + appending subtyping information according to the rules of the base + type. See Section 3 for SMIng base types and their type + restrictions. + +10.6.3 The column's access Statement + + The column's `access' statement, which must be present, gets one + argument which is used to specify whether it makes sense to read + and/or write an instance of the object, or to include its value in a + notification. This is the maximal level of access for the object. + This maximal level of access is independent of any administrative + authorization policy. + + The value `readwrite' indicates that read and write access makes + sense. The value `readonly' indicates that read access makes sense, + but write access is never possible. The value `noaccess' indicates + an auxiliary object (see Section 2.4). The value `notifyonly' + indicates an object which is accessible only via a notification. + + These values are ordered, from least to greatest access level: + + +Strauss Expires August 15, 2000 [Page 46] + +Internet-Draft SMIng February 2000 + + + `noaccess', `notifyonly', `readonly', `readwrite'. + +10.6.4 The column's default Statement + + The column's `default' statement, which need not be present, gets + one argument which is used to specify an acceptable default value + for this columnar object. A default value may be used at the + discretion of an agent when an object instance is created. That is, + the value is a "hint" to implementors. + + The value of the `default' statement must, of course, correspond to + the (probably restricted) type specified in the column's `type' + statement. + + The column's default value overrides the default value of the + underlying type definition if both are present. + + Note that for objects of some types, default values make no sense, + e.g. IRTF-NMRG-SMING-TYPES::Counter32. + +10.6.5 The column's format Statement + + The column's `format' statement, which need not be present, gets one + argument which is used to give a hint as to how the value of an + instance of this object might be displayed. See Section 3.12 for a + description of format specifications. + + The column's format specification overrides the format specification + of the underlying type definition if both are present. + +10.6.6 The column's units Statement + + The column's `units' statement, which need not be present, gets one + argument which is used to specify a textual definition of the units + associated with this columnar object. + + The column's units specification overrides the units specification + of the underlying type definition if both are present. + + The units specification has to be appropriate for values displayed + according to the column's format specification if present. E.g., if + the columnar object represents a frequency value of type Unsigned64 + measured in thousands of Hertz, the format specification should be + `d-3' and the units specification should be `Hertz' or `Hz'. If the + format specification would be omitted the units specification should + be `Milli-Hertz' or `mHz'. MIB Authors should pay attention to keep + format and units specifications of type and object definitions + synced. Application implementors MUST NOT implement units + specifications without implementing format specifications. + + +Strauss Expires August 15, 2000 [Page 47] + +Internet-Draft SMIng February 2000 + + +10.6.7 The column's status Statement + + The column's `status' statement, which need not be present, gets one + argument which is used to specify whether this columnar object + definition is current or historic. The value `current' means that + the definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + implementation in order to foster interoperability with + older/existing implementations. + + Columnar objects SHOULD NOT be defined as `current' if their type is + `deprecated' or `obsolete'. Similarly, they SHOULD NOT be defined as + `deprecated' if their type is `obsolete'. Nevertheless, subsequent + revisions of used type definition cannot be avoided, but SHOULD be + taken into account in subsequent revisions of the local module. + + If the `status' statement is omitted the status value `current' is + implied. + +10.6.8 The column's description Statement + + The column's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of this columnar object. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this columnar object. + +10.6.9 The column's reference Statement + + The column's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + columnar objects, or some other document which provides additional + information relevant to this columnar object. + +10.7 Usage Example + + Consider how one might define a table and its subordinates. (This + example uses the RowStatus type defined in Section 14.2.) + + scalar evalSlot { + oid eval.1; + type Integer32 (0..2147483647); + access readonly; + description + "The index number of the first unassigned entry in the + + +Strauss Expires August 15, 2000 [Page 48] + +Internet-Draft SMIng February 2000 + + + evaluation table, or the value of zero indicating that + all entries are assigned. + + A management station should create new entries in the + evaluation table using this algorithm: first, issue a + management protocol retrieval operation to determine the + value of evalSlot; and, second, issue a management + protocol set operation to create an instance of the + evalStatus object setting its value to createAndGo(4) or + createAndWait(5). If this latter operation succeeds, + then the management station may continue modifying the + instances corresponding to the newly created conceptual + row, without fear of collision with other management + stations."; + }; + + table evalTable { + oid eval.2; + description + "The (conceptual) evaluation table."; + reference + "RFC 2578, 7.11."; + + row evalEntry { + oid evalTable.1; + index (evalIndex); + create (evalStatus); + description + "An entry (conceptual row) in the evaluation table."; + + column evalIndex { + oid evalEntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "The auxiliary variable used for identifying instances of + the columnar objects in the evaluation table."; + }; + + column evalString { + oid evalEntry.2; + type DisplayString; + access readwrite; + description + "The string to evaluate."; + }; + + column evalValue { + oid evalEntry.3; + + +Strauss Expires August 15, 2000 [Page 49] + +Internet-Draft SMIng February 2000 + + + type Integer32; + access readonly; + default 0; + description + "The value when evalString was last evaluated, or zero if + no such value is available."; + }; + + column evalStatus { + oid evalEntry.4; + type RowStatus; + access readwrite; + default active; + description + "The status column used for creating, modifying, and + deleting instances of the columnar objects in the + evaluation table."; + }; + }; + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 50] + +Internet-Draft SMIng February 2000 + + +11. The notification Statement + + The `notification' statement is used to define a notification. It + gets two arguments: a lower-case notification identifier and a + statement block that holds detailed information in an obligatory + order. + + See the `notificationStatement' rule of the SMIng grammar (Appendix + A) for the formal syntax of the `notification' statement. + +11.1 The notification's oid Statement + + The notification's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this notification. + +11.2 The notification's objects Statement + + The notification's `objects' statement, which need not be present, + gets one argument which specifies an ordered sequence of objects by + their identifiers to be emitted within this notification. The list + of objects has to be comma-separated and enclosed in parenthesis. + + One and only one object instance for each occurrence of each object + must be present, and in the specified order, in every instance of + the notification. If the same object occurs multiple times in a + notification's `objects' statement, then an object instance is + present for each of them. An object specified in this sequence must + not have an `access' statement argument of `noaccess'. + + Note that an agent is allowed, at its own discretion, to append as + many additional objects as it considers useful to the end of the + notification (i.e., after the objects defined by the notification's + `objects' statement if present). + +11.3 The notification's status Statement + + The notification's `status' statement, which need not be present, + gets one argument which is used to specify whether this notification + definition is current or historic. The value `current' means that + the definition is current and valid. The value `obsolete' means the + definition is obsolete and should not be implemented and/or can be + removed if previously implemented. While the value `deprecated' + also indicates an obsolete definition, it permits new/continued + implementation in order to foster interoperability with + older/existing implementations. + + If the `status' statement is omitted the status value `current' is + implied. + + +Strauss Expires August 15, 2000 [Page 51] + +Internet-Draft SMIng February 2000 + + +11.4 The notification's description Statement + + The notification's `description' statement, which must be present, + gets one argument which is used to specify a high-level textual + description of this notification. + + It is RECOMMENDED to include all semantic definitions necessary for + the implementation of this notification. In particular, it SHOULD be + documented which instances of the objects mentioned in the `objects' + statement should be contained within notifications of this type. + +11.5 The notification's reference Statement + + The notification's `reference' statement, which need not be present, + gets one argument which is used to specify a textual cross-reference + to some other document, either another module which defines related + notifications, or some other document which provides additional + information relevant to this notification. + +11.6 Usage Example + + Consider how a configuration change notification might be described: + + node entityMIBTraps { oid entityMIB.2; }; + + node entityMIBTrapPrefix { oid entityMIBTraps.0; }; + + notification entConfigChange { + oid entityMIBTrapPrefix.1; + description + "An entConfigChange trap is sent when the value of + entLastChangeTime changes. It can be utilized by an NMS + to trigger logical/physical entity table maintenance + polls. An agent must not generate more than one + entConfigChange 'trap-event' in a five second period, + where a 'trap-event' is the transmission of a single + trap PDU to a list of trap destinations. If additional + configuration changes occur within the five second + 'throttling' period then these trap-events should be + suppressed by the agent. An NMS should periodically + check the value of entLastChangeTime to detect any + missed entConfigChange trap-events, e.g. due to + throttling or transmission loss."; + }; + + + + + + + +Strauss Expires August 15, 2000 [Page 52] + +Internet-Draft SMIng February 2000 + + +12. The group Statement + + The `group' statement is used to define a group of arbitrary nodes + in the object identifier tree. It gets two arguments: a lower-case + group identifier and a statement block that holds detailed group + information in an obligatory order. + + Note that the primary application of groups are compliance + statements, although they might be referred in other formal or + informal documents. + + See the `groupStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `group' statement. + +12.1 The group's oid Statement + + The group's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this group. + +12.2 The group's members Statement + + The group's `members' statement, which must be present, gets one + argument which specifies the list of nodes by their identifiers to + be contained in this group. The list of nodes has to be + comma-separated and enclosed in parenthesis. + +12.3 The group's status Statement + + The group's `status' statement, which need not be present, gets one + argument which is used to specify whether this group definition is + current or historic. The value `current' means that the definition + is current and valid. The value `obsolete' means the definition is + obsolete and the group should no longer be used. While the value + `deprecated' also indicates an obsolete definition, it permits + new/continued use of this group. + + If the `status' statement is omitted the status value `current' is + implied. + +12.4 The group's description Statement + + The group's `description' statement, which must be present, gets one + argument which is used to specify a high-level textual description + of this group. It is RECOMMENDED to include any relation to other + groups. + + + + + +Strauss Expires August 15, 2000 [Page 53] + +Internet-Draft SMIng February 2000 + + +12.5 The group's reference Statement + + The group's `reference' statement, which need not be present, gets + one argument which is used to specify a textual cross-reference to + some other document, either another module which defines related + groups, or some other document which provides additional information + relevant to this group. + +12.6 Usage Example + + The snmpGroup, originally defined in [13], may be described as + follows: + + group snmpGroup { + oid snmpMIBGroups.8; + objects (snmpInPkts, snmpInBadVersions, + snmpInASNParseErrs, + snmpSilentDrops, snmpProxyDrops, + snmpEnableAuthenTraps); + description + "A collection of objects providing basic + instrumentation and control of an agent."; + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 54] + +Internet-Draft SMIng February 2000 + + +13. The compliance Statement + + The `compliance' statement is used to define a set of compliance + requirements, named a `compliance statement'. It gets two arguments: + a lower-case compliance identifier and a statement block that holds + detailed compliance information in an obligatory order. + + See the `complianceStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `compliance' statement. + +13.1 The compliance's oid Statement + + The compliance's `oid' statement, which must be present, gets one + argument which specifies the object identifier value that is + assigned to this compliance statement. + +13.2 The compliance's status Statement + + The compliance's `status' statement, which need not be present, gets + one argument which is used to specify whether this compliance + statement is current or historic. The value `current' means that the + definition is current and valid. The value `obsolete' means the + definition is obsolete and no longer specifies a valid definition of + conformance. While the value `deprecated' also indicates an + obsolete definition, it permits new/continued use of the compliance + specification. + + If the `status' statement is omitted the status value `current' is + implied. + +13.3 The compliance's description Statement + + The compliance's `description' statement, which must be present, + gets one argument which is used to specify a high-level textual + description of this compliance statement. + +13.4 The compliance's reference Statement + + The compliance's `reference' statement, which need not be present, + gets one argument which is used to specify a textual cross-reference + to some other document, either another module which defines related + compliance statements, or some other document which provides + additional information relevant to this compliance statement. + +13.5 The compliance's mandatory Statement + + The compliance's `mandatory' statement, which need not be present, + gets one argument which is used to specify a comma-separated list of + one or more groups (Section 12) of objects and/or notifications + + +Strauss Expires August 15, 2000 [Page 55] + +Internet-Draft SMIng February 2000 + + + enclosed in parenthesis. These groups are unconditionally mandatory + for implementation. + + If an agent claims compliance to a MIB module then it must implement + each and every object and notification within each group listed the + `mandatory' statement(s) of the compliance statement(s) of that + module. + +13.6 The compliance's optional Statement + + The compliance's `optional' statement, which need not be present, is + repeatedly used to name each group which is conditionally mandatory + for compliance to the module. It can also be used to name + unconditionally optional groups. A group named in an `optional' + statement MUST be absent from the correspondent `mandatory' + statement. The `optional' statement gets two arguments: a lower-case + group identifier and a statement block that holds detailed + compliance information on that group. + + Conditionally mandatory groups include those which are mandatory + only if a particular protocol is implemented, or only if another + group is implemented. The `description' statement specifies the + conditions under which the group is conditionally mandatory. + + A group which is named in neither a `mandatory' statement nor an + `optional' statement, is unconditionally optional for compliance to + the module. + + See the `optionalStatement' rule of the SMIng grammar (Appendix A) + for the formal syntax of the `optional' statement. + +13.6.1 The optional's description Statement + + The optional's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the conditions under which this group is + conditionally mandatory or unconditionally optional. + +13.7 The compliance's refine Statement + + The compliance's `refine' statement, which need not be present, is + repeatedly used to specify each object for which compliance has a + refined requirement with respect to the module definition. The + object must be present in one of the conformance groups named in the + correspondent `mandatory' or `optional' statements. The `refine' + statement gets two arguments: a lower-case identifier of a scalar or + columnar object and a statement block that holds detailed refinement + information on that object. + + + +Strauss Expires August 15, 2000 [Page 56] + +Internet-Draft SMIng February 2000 + + + See the `refineStatement' rule of the SMIng grammar (Appendix A) for + the formal syntax of the `refine' statement. + +13.7.1 The refine's type Statement + + The refine's `type' statement, which need not be present, gets one + argument that is used to provide a refined type for the + correspondent object. Type restrictions may be applied by appending + subtyping information according to the rules of the base type. See + Section 3 for SMIng base types and their type restrictions. + + Note that if a `type' and a `writetype' statement are both present + then this type only applies when instances of the correspondent + object are read. + +13.7.2 The refine's writetype Statement + + The refine's `writetype' statement, which need not be present, gets + one argument that is used to provide a refined type for the + correspondent object, only when instances of that object are + written. Type restrictions may be applied by appending subtyping + information according to the rules of the base type. See Section 3 + for SMIng base types and their type restrictions. + +13.7.3 The refine's access Statement + + The refine's `access' statement, which need not be present, gets one + argument that is used to specify the minimal level of access that + the correspondent object must implement in the sense of its original + `access' statement. Hence, the refine's `access' statement MUST NOT + specify a greater level of access than is specified in the + correspondent object definition. + + An implementation is compliant if the level of access it provides is + greater or equal to the minimal level in the refine's `access' + statement and less or equal to the maximal level in the object's + `access' statement. + +13.7.4 The refine's description Statement + + The refine's `description' statement, which must be present, gets + one argument which is used to specify a high-level textual + description of the refined compliance requirement. + +13.8 Usage Example + + The compliance statement contained in the SNMPv2-MIB, converted to + SMIng: + + + +Strauss Expires August 15, 2000 [Page 57] + +Internet-Draft SMIng February 2000 + + + compliance snmpBasicCompliance { + oid snmpMIBCompliances.2; + description + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB."; + + mandatory (snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup); + + optional snmpCommunityGroup { + description + "This group is mandatory for SNMPv2 entities which + support community-based authentication."; + }; + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 58] + +Internet-Draft SMIng February 2000 + + +14. SMIng Core Modules + + MIB modules, either SMIv1, SMIv2 or SMIng, are built on top of some + core definitions. These core definitions are imported from some + "well-defined" core modules. In case of SMIng, there are two core + modules: + + 1. IRTF-NMRG-SMING, which defines a special node, named + `zeroDotZero' that may be used by objects of type + `ObjectIdentifier' as a null value, and a core set of 18 nodes + near the root of the object identifier tree. Only some of those + core nodes are significant for the Internet management and have + been described in Section 2.2. + + 2. IRTF-NMRG-SMING-TYPES, which defines SMIng data types. Regarding + to their origin, these types can be divided into two groups: + those being ASN.1 application types defined as SMIv2 core types + [2] and those being textual conventions in SMIv2 [3]. For use in + SMIng, there is no need to care about these differences, though + it might be useful in SNMP applications, to know that some types + are distinguishable "on the wire" and others are not. + + 3. IRTF-NMRG-SMING-EXTENSIONS, which defines proposed SMIng + extensions. At this moment, there is only one extension, the + `agentcaps' statement. See Section 16 for details on extensions. + +14.1 IRTF-NMRG-SMING + + module IRTF-NMRG-SMING { + + // + // $RCSfile: IRTF-NMRG-SMING,v $ + // $Revision: 817 $ + // $Author: strauss $ + // $Date: 2000-02-15 11:41:02 +0100 (Tue, 15 Feb 2000) $ + // + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + +Strauss Expires August 15, 2000 [Page 59] + +Internet-Draft SMIng February 2000 + + + description "Core node definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + node ccitt { oid 0; }; + + node zeroDotZero { + oid 0.0; + description "A value used for null identifiers."; + }; + + node iso { oid 1; }; + node org { oid iso.3; }; + node dod { oid org.6; }; + node internet { oid dod.1; }; + node directory { oid internet.1; }; + node mgmt { oid internet.2; }; + node mib-2 { oid mgmt.1; }; + node transmission { oid mib-2.10; }; + node experimental { oid internet.3; }; + node private { oid internet.4; }; + node enterprises { oid private.1; }; + node security { oid internet.5; }; + node snmpV2 { oid internet.6; }; + node snmpDomains { oid snmpV2.1; }; + node snmpProxys { oid snmpV2.2; }; + node snmpModules { oid snmpV2.3; }; + + node joint-iso-ccitt { oid 2; }; + + }; + +14.2 IRTF-NMRG-SMING-TYPES + + module IRTF-NMRG-SMING-TYPES { + + // + // $RCSfile: IRTF-NMRG-SMING-TYPES,v $ + // $Revision: 817 $ + // $Author: strauss $ + // $Date: 2000-02-15 11:41:02 +0100 (Tue, 15 Feb 2000) $ + + +Strauss Expires August 15, 2000 [Page 60] + +Internet-Draft SMIng February 2000 + + + // + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core type definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + typedef Gauge32 { + type Unsigned32; + description + "The Gauge32 type represents a non-negative integer, + which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum + value. The maximum value can not be greater than + 2^32-1 (4294967295 decimal), and the minimum value + can not be smaller than 0. The value of a Gauge32 + has its maximum value whenever the information + being modeled is greater than or equal to its + maximum value, and has its minimum value whenever + the information being modeled is smaller than or + equal to its minimum value. If the information + being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + Gauge32 also decreases (increases). (Note that + despite of the use of the term `latched' in the + original definition of this type, it does not + become `stuck' at its maximum or minimum value.)"; + reference + "RFC 2578, Sections 2. and 7.1.7."; + + +Strauss Expires August 15, 2000 [Page 61] + +Internet-Draft SMIng February 2000 + + + }; + + typedef Counter32 { + type Unsigned32; + description + "The Counter32 type represents a non-negative integer + which monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined `initial' value, and thus, a + single value of a Counter has (in general) no + information content. Discontinuities in the + monotonically increasing value normally occur at + re-initialization of the management system, and at + other times as specified in the description of an + object using this type. If such other times can + occur, for example, the creation of an object + instance at times other than re-initialization, then + a corresponding object should be defined, with an + appropriate type, to indicate the last discontinuity. + Examples of appropriate types include: TimeStamp, + DateAndTime or TimeTicks (other types defined in this + module). + + The value of the access statement for objects with a + type value of Counter32 should be either `readonly' + or `notifyonly'. + + A default statement should not be used for objects + with a type value of Counter32."; + reference + "RFC 2578, Sections 2. and 7.1.6."; + }; + + typedef Gauge64 { + type Unsigned64; + description + "The Gauge64 type represents a non-negative integer, + which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum + value. The maximum value can not be greater than + 2^64-1 (18446744073709551615), and the minimum value + can not be smaller than 0. The value of a Gauge64 + has its maximum value whenever the information + being modeled is greater than or equal to its + maximum value, and has its minimum value whenever + the information being modeled is smaller than or + equal to its minimum value. If the information + + +Strauss Expires August 15, 2000 [Page 62] + +Internet-Draft SMIng February 2000 + + + being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + Gauge64 also decreases (increases). (Note that + despite of the use of the term `latched' in the + original definition of this type, it does not + become `stuck' at its maximum or minimum value.)"; + }; + + typedef Counter64 { + type Unsigned64; + description + "The Counter64 type represents a non-negative integer + which monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615), when + it wraps around and starts increasing again from zero. + + Counters have no defined `initial' value, and thus, a + single value of a Counter has (in general) no + information content. Discontinuities in the + monotonically increasing value normally occur at + re-initialization of the management system, and at + other times as specified in the description of an + object using this type. If such other times can + occur, for example, the creation of an object + instance at times other than re-initialization, then + a corresponding object should be defined, with an + appropriate type, to indicate the last discontinuity. + Examples of appropriate types include: TimeStamp, + DateAndTime or TimeTicks (other types defined in this + module). + + The value of the access statement for objects with a + type value of Counter64 should be either `readonly' + or `notifyonly'. + + A default statement should not be used for objects + with a type value of Counter64."; + reference + "RFC 2578, Sections 2. and 7.1.10."; + }; + + typedef Opaque { + type OctetString; + description + "The Opaque type is provided solely for + backward-compatibility, and shall not be used for + newly-defined object types. + + The Opaque type supports the capability to pass + + +Strauss Expires August 15, 2000 [Page 63] + +Internet-Draft SMIng February 2000 + + + arbitrary ASN.1 syntax. A value is encoded using + the ASN.1 Basic Encoding Rules into a string of + octets. This, in turn, is encoded as an + OctetString, in effect `double-wrapping' the + original ASN.1 value. + + Note that a conforming implementation need only be + able to accept and recognize opaquely-encoded data. + It need not be able to unwrap the data and then + interpret its contents. + + A requirement on `standard' MIB modules is that no + object may have a type value of Opaque."; + reference + "RFC 2578, Sections 2. and 7.1.9."; + }; + + typedef IpAddress { + type OctetString (4); + status deprecated; + description + "******* THIS TYPE DEFINITION IS DEPRECATED ******* + + The IpAddress type represents a 32-bit internet + IPv4 address. It is represented as an OctetString + of length 4, in network byte-order. + + Note that the IpAddress type is present for + historical reasons. IPv4 and IPv6 addresses should + be represented using the IpAddr type. Generic + Network addresses should be represented using a + pair of TDomain and TAddress types (all defined in + this module)."; + reference + "RFC 2578, Sections 2. and 7.1.5."; + }; + + typedef TimeTicks { + type Unsigned32; + description + "The TimeTicks type represents a non-negative + integer which represents the time, modulo 2^32 + (4294967296 decimal), in hundredths of a second + between two epochs. When objects are defined which + use this type, the description of the object + identifies both of the reference epochs. + + For example, the TimeStamp type (defined in this + module) is based on the TimeTicks type. + + +Strauss Expires August 15, 2000 [Page 64] + +Internet-Draft SMIng February 2000 + + + With a TimeStamp, the first reference epoch is + defined as the time when SNMPv2-MIB::sysUpTime was + zero, and the second reference epoch is defined as + the current value of sysUpTime. + + The TimeTicks type should not be sub-typed."; + reference + "RFC 2578, Sections 2. and 7.1.8."; + }; + + // + // The following type definitions are plain + // conversions of the textual conventions from + // the SNMPv2-TC module (RFC 2579). + // + + typedef DisplayString { + type OctetString (0..255); + format "255a"; + description + "Represents textual information taken from the NVT ASCII + character set, as defined in pages 4, 10-11 of RFC 854. + + To summarize RFC 854, the NVT ASCII repertoire specifies: + + - the use of character codes 0-127 (decimal) + + - the graphics characters (32-126) are interpreted as + US ASCII + + - NUL, LF, CR, BEL, BS, HT, VT and FF have the special + meanings specified in RFC 854 + + - the other 25 codes have no standard interpretation + + - the sequence 'CR LF' means newline + + - the sequence 'CR NUL' means carriage-return + + - an 'LF' not preceded by a 'CR' means moving to the + same column on the next line. + + - the sequence 'CR x' for any x other than LF or NUL is + illegal. (Note that this also means that a string may + end with either 'CR LF' or 'CR NUL', but not with CR.) + + Any object defined using this syntax may not exceed 255 + characters in length."; + }; + + +Strauss Expires August 15, 2000 [Page 65] + +Internet-Draft SMIng February 2000 + + + typedef PhysAddress { + type OctetString; + format "1x:"; + description + "Represents media- or physical-level addresses."; + }; + + typedef MacAddress { + type OctetString (6); + format "1x:"; + description + "Represents an 802 MAC address represented 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."; + }; + + typedef TruthValue { + type Enumeration (true(1), false(2)); + description + "Represents a boolean value."; + }; + + typedef TestAndIncr { + type Integer32 (0..2147483647); + description + "Represents integer-valued information used for atomic + operations. When the management protocol is used to specify + that an object instance having this syntax is to be + modified, the new value supplied via the management protocol + must precisely match the value presently held by the + instance. If not, the management protocol set operation + fails with an error of `inconsistentValue'. Otherwise, if + the current value is the maximum value of 2^31-1 (2147483647 + decimal), then the value held by the instance is wrapped to + zero; otherwise, the value held by the instance is + incremented by one. (Note that regardless of whether the + management protocol set operation succeeds, the variable- + binding in the request and response PDUs are identical.) + + The value of the ACCESS clause for objects having this + syntax is either `read-write' or `read-create'. When an + instance of a columnar object having this syntax is created, + any value may be supplied via the management protocol. + + When the network management portion of the system is re- + initialized, the value of every object instance having this + syntax must either be incremented from its value prior to + + +Strauss Expires August 15, 2000 [Page 66] + +Internet-Draft SMIng February 2000 + + + the re-initialization, or (if the value prior to the re- + initialization is unknown) be set to a pseudo-randomly + generated value."; + }; + + typedef AutonomousType { + type ObjectIdentifier; + description + "Represents an independently extensible type identification + value. It may, for example, indicate a particular sub-tree + with further MIB definitions, or define a particular type of + protocol or hardware."; + }; + + typedef InstancePointer { + type ObjectIdentifier; + status obsolete; + description + "A pointer to either a specific instance of a MIB object or + a conceptual row of a MIB table in the managed device. In + the latter case, by convention, it is the name of the + particular instance of the first accessible columnar object + in the conceptual row. + + The two uses of this textual convention are replaced by + VariablePointer and RowPointer, respectively."; + }; + + typedef VariablePointer { + type ObjectIdentifier; + description + "A pointer to a specific object instance. For example, + sysContact.0 or ifInOctets.3."; + }; + + typedef RowPointer { + type ObjectIdentifier; + description + "Represents a pointer to a conceptual row. The value is the + name of the instance of the first accessible columnar object + in the conceptual row. + + For example, ifIndex.3 would point to the 3rd row in the + ifTable (note that if ifIndex were not-accessible, then + ifDescr.3 would be used instead)."; + }; + + typedef RowStatus { + type Enumeration (active(1), notInService(2), + + +Strauss Expires August 15, 2000 [Page 67] + +Internet-Draft SMIng February 2000 + + + notReady(3), createAndGo(4), + createAndWait(5), destroy(6)); + description + "The RowStatus textual convention is used to manage the + creation and deletion of conceptual rows, and is used as the + value of the SYNTAX clause for the status column of a + conceptual row (as described in Section 7.7.1 of [2].) + + The status column has six defined values: + + - `active', which indicates that the conceptual row is + available for use by the managed device; + + - `notInService', which indicates that the conceptual + row exists in the agent, but is unavailable for use by + the managed device (see NOTE below); + + - `notReady', which indicates that the conceptual row + exists in the agent, but is missing information + necessary in order to be available for use by the + managed device; + + - `createAndGo', which is supplied by a management + station wishing to create a new instance of a + conceptual row and to have its status automatically set + to active, making it available for use by the managed + device; + + - `createAndWait', which is supplied by a management + station wishing to create a new instance of a + conceptual row (but not make it available for use by + the managed device); and, + + - `destroy', which is supplied by a management station + wishing to delete all of the instances associated with + an existing conceptual row. + + Whereas five of the six values (all except `notReady') may + be specified in a management protocol set operation, only + three values will be returned in response to a management + protocol retrieval operation: `notReady', `notInService' or + `active'. That is, when queried, an existing conceptual row + has only three states: it is either available for use by the + managed device (the status column has value `active'); it is + not available for use by the managed device, though the + + + agent has sufficient information to make it so (the status + column has value `notInService'); or, it is not available + + +Strauss Expires August 15, 2000 [Page 68] + +Internet-Draft SMIng February 2000 + + + for use by the managed device, and an attempt to make it so + would fail because the agent has insufficient information + (the state column has value `notReady'). + + NOTE WELL + + This textual convention may be used for a MIB table, + irrespective of whether the values of that table's + conceptual rows are able to be modified while it is + active, or whether its conceptual rows must be taken + out of service in order to be modified. That is, it is + the responsibility of the DESCRIPTION clause of the + status column to specify whether the status column must + not be `active' in order for the value of some other + column of the same conceptual row to be modified. If + such a specification is made, affected columns may be + changed by an SNMP set PDU if the RowStatus would not + be equal to `active' either immediately before or after + processing the PDU. In other words, if the PDU also + contained a varbind that would change the RowStatus + value, the column in question may be changed if the + RowStatus was not equal to `active' as the PDU was + received, or if the varbind sets the status to a value + other than 'active'. + + Also note that whenever any elements of a row exist, the + RowStatus column must also exist. + + + To summarize the effect of having a conceptual row with a + status column having a SYNTAX clause value of RowStatus, + consider the following state diagram: + + STATE + +--------------+-----------+-------------+------------- + | A | B | C | D + | |status col.|status column| + |status column | is | is |status column + ACTION |does not exist| notReady | notInService| is active + --------------+--------------+-----------+-------------+------------- + set status |noError ->D|inconsist- |inconsistent-|inconsistent- + column to | or | entValue| Value| Value + createAndGo |inconsistent- | | | + | Value| | | + --------------+--------------+-----------+-------------+------------- + set status |noError see 1|inconsist- |inconsistent-|inconsistent- + column to | or | entValue| Value| Value + createAndWait |wrongValue | | | + --------------+--------------+-----------+-------------+------------- + + +Strauss Expires August 15, 2000 [Page 69] + +Internet-Draft SMIng February 2000 + + + set status |inconsistent- |inconsist- |noError |noError + column to | Value| entValue| | + active | | | | + | | or | | + | | | | + | |see 2 ->D|see 8 ->D| ->D + --------------+--------------+-----------+-------------+------------- + set status |inconsistent- |inconsist- |noError |noError ->C + column to | Value| entValue| | + notInService | | | | + | | or | | or + | | | | + | |see 3 ->C| ->C|see 6 + --------------+--------------+-----------+-------------+------------- + set status |noError |noError |noError |noError ->A + column to | | | | or + destroy | ->A| ->A| ->A|see 7 + --------------+--------------+-----------+-------------+------------- + set any other |see 4 |noError |noError |see 5 + column to some| | | | + value | | see 1| ->C| ->D + --------------+--------------+-----------+-------------+------------- + + (1) goto B or C, depending on information available to the + + + agent. + + (2) if other variable bindings included in the same PDU, + provide values for all columns which are missing but + required, then return noError and goto D. + + (3) if other variable bindings included in the same PDU, + provide values for all columns which are missing but + required, then return noError and goto C. + + (4) at the discretion of the agent, the return value may be + either: + + inconsistentName: because the agent does not choose to + create such an instance when the corresponding + RowStatus instance does not exist, or + + inconsistentValue: if the supplied value is + inconsistent with the state of some other MIB object's + value, or + + noError: because the agent chooses to create the + instance. + + +Strauss Expires August 15, 2000 [Page 70] + +Internet-Draft SMIng February 2000 + + + If noError is returned, then the instance of the status + column must also be created, and the new state is B or C, + depending on the information available to the agent. If + inconsistentName or inconsistentValue is returned, the row + remains in state A. + + (5) depending on the MIB definition for the column/table, + either noError or inconsistentValue may be returned. + + (6) the return value can indicate one of the following + errors: + + wrongValue: because the agent does not support + createAndWait, or + + inconsistentValue: because the agent is unable to take + the row out of service at this time, perhaps because it + is in use and cannot be de-activated. + + (7) the return value can indicate the following error: + + + inconsistentValue: because the agent is unable to + remove the row at this time, perhaps because it is in + use and cannot be de-activated. + + NOTE: Other processing of the set request may result in a + response other than noError being returned, e.g., + wrongValue, noCreation, etc. + + Conceptual Row Creation + + There are four potential interactions when creating a + conceptual row: selecting an instance-identifier which is + not in use; creating the conceptual row; initializing any + objects for which the agent does not supply a default; and, + making the conceptual row available for use by the managed + device. + + Interaction 1: Selecting an Instance-Identifier + + The algorithm used to select an instance-identifier varies + for each conceptual row. In some cases, the instance- + identifier is semantically significant, e.g., the + destination address of a route, and a management station + selects the instance-identifier according to the semantics. + + In other cases, the instance-identifier is used solely to + distinguish conceptual rows, and a management station + + +Strauss Expires August 15, 2000 [Page 71] + +Internet-Draft SMIng February 2000 + + + without specific knowledge of the conceptual row might + examine the instances present in order to determine an + unused instance-identifier. (This approach may be used, but + it is often highly sub-optimal; however, it is also a + questionable practice for a naive management station to + attempt conceptual row creation.) + + Alternately, the MIB module which defines the conceptual row + might provide one or more objects which provide assistance + in determining an unused instance-identifier. For example, + if the conceptual row is indexed by an integer-value, then + an object having an integer-valued SYNTAX clause might be + defined for such a purpose, allowing a management station to + issue a management protocol retrieval operation. In order + to avoid unnecessary collisions between competing management + stations, `adjacent' retrievals of this object should be + different. + + + Finally, the management station could select a pseudo-random + number to use as the index. In the event that this index + was already in use and an inconsistentValue was returned in + response to the management protocol set operation, the + management station should simply select a new pseudo-random + number and retry the operation. + + A MIB designer should choose between the two latter + algorithms based on the size of the table (and therefore the + efficiency of each algorithm). For tables in which a large + number of entries are expected, it is recommended that a MIB + object be defined that returns an acceptable index for + creation. For tables with small numbers of entries, it is + recommended that the latter pseudo-random index mechanism be + used. + + Interaction 2: Creating the Conceptual Row + + Once an unused instance-identifier has been selected, the + management station determines if it wishes to create and + activate the conceptual row in one transaction or in a + negotiated set of interactions. + + Interaction 2a: Creating and Activating the Conceptual Row + + The management station must first determine the column + requirements, i.e., it must determine those columns for + which it must or must not provide values. Depending on the + complexity of the table and the management station's + knowledge of the agent's capabilities, this determination + + +Strauss Expires August 15, 2000 [Page 72] + +Internet-Draft SMIng February 2000 + + + can be made locally by the management station. Alternately, + the management station issues a management protocol get + operation to examine all columns in the conceptual row that + it wishes to create. In response, for each column, there + are three possible outcomes: + + - a value is returned, indicating that some other + management station has already created this conceptual + row. We return to interaction 1. + + + - the exception `noSuchInstance' is returned, + indicating that the agent implements the object-type + associated with this column, and that this column in at + least one conceptual row would be accessible in the MIB + view used by the retrieval were it to exist. For those + columns to which the agent provides read-create access, + the `noSuchInstance' exception tells the management + station that it should supply a value for this column + when the conceptual row is to be created. + + - the exception `noSuchObject' is returned, indicating + that the agent does not implement the object-type + associated with this column or that there is no + conceptual row for which this column would be + accessible in the MIB view used by the retrieval. As + such, the management station can not issue any + management protocol set operations to create an + instance of this column. + + Once the column requirements have been determined, a + management protocol set operation is accordingly issued. + This operation also sets the new instance of the status + column to `createAndGo'. + + When the agent processes the set operation, it verifies that + it has sufficient information to make the conceptual row + available for use by the managed device. The information + available to the agent is provided by two sources: the + management protocol set operation which creates the + conceptual row, and, implementation-specific defaults + supplied by the agent (note that an agent must provide + implementation-specific defaults for at least those objects + which it implements as read-only). If there is sufficient + information available, then the conceptual row is created, a + `noError' response is returned, the status column is set to + `active', and no further interactions are necessary (i.e., + interactions 3 and 4 are skipped). If there is insufficient + information, then the conceptual row is not created, and the + + +Strauss Expires August 15, 2000 [Page 73] + +Internet-Draft SMIng February 2000 + + + set operation fails with an error of `inconsistentValue'. + On this error, the management station can issue a management + protocol retrieval operation to determine if this was + because it failed to specify a value for a required column, + or, because the selected instance of the status column + already existed. In the latter case, we return to + interaction 1. In the former case, the management station + + + can re-issue the set operation with the additional + information, or begin interaction 2 again using + `createAndWait' in order to negotiate creation of the + conceptual row. + + NOTE WELL + + Regardless of the method used to determine the column + requirements, it is possible that the management + station might deem a column necessary when, in fact, + the agent will not allow that particular columnar + instance to be created or written. In this case, the + management protocol set operation will fail with an + error such as `noCreation' or `notWritable'. In this + case, the management station decides whether it needs + to be able to set a value for that particular columnar + instance. If not, the management station re-issues the + management protocol set operation, but without setting + a value for that particular columnar instance; + otherwise, the management station aborts the row + creation algorithm. + + + Interaction 2b: Negotiating the Creation of the Conceptual + Row + + The management station issues a management protocol set + operation which sets the desired instance of the status + column to `createAndWait'. If the agent is unwilling to + process a request of this sort, the set operation fails with + an error of `wrongValue'. (As a consequence, such an agent + must be prepared to accept a single management protocol set + operation, i.e., interaction 2a above, containing all of the + columns indicated by its column requirements.) Otherwise, + the conceptual row is created, a `noError' response is + returned, and the status column is immediately set to either + `notInService' or `notReady', depending on whether it has + sufficient information to make the conceptual row available + for use by the managed device. If there is sufficient + information available, then the status column is set to + + +Strauss Expires August 15, 2000 [Page 74] + +Internet-Draft SMIng February 2000 + + + `notInService'; otherwise, if there is insufficient + information, then the status column is set to `notReady'. + Regardless, we proceed to interaction 3. + + Interaction 3: Initializing non-defaulted Objects + + The management station must now determine the column + requirements. It issues a management protocol get operation + to examine all columns in the created conceptual row. In + the response, for each column, there are three possible + outcomes: + + - a value is returned, indicating that the agent + implements the object-type associated with this column + and had sufficient information to provide a value. For + those columns to which the agent provides read-create + access (and for which the agent allows their values to + be changed after their creation), a value return tells + the management station that it may issue additional + management protocol set operations, if it desires, in + order to change the value associated with this column. + + + - the exception `noSuchInstance' is returned, + indicating that the agent implements the object-type + associated with this column, and that this column in at + least one conceptual row would be accessible in the MIB + view used by the retrieval were it to exist. However, + the agent does not have sufficient information to + provide a value, and until a value is provided, the + conceptual row may not be made available for use by the + managed device. For those columns to which the agent + provides read-create access, the `noSuchInstance' + exception tells the management station that it must + issue additional management protocol set operations, in + order to provide a value associated with this column. + + - the exception `noSuchObject' is returned, indicating + that the agent does not implement the object-type + associated with this column or that there is no + conceptual row for which this column would be + accessible in the MIB view used by the retrieval. As + such, the management station can not issue any + management protocol set operations to create an + instance of this column. + + If the value associated with the status column is + `notReady', then the management station must first deal with + all `noSuchInstance' columns, if any. Having done so, the + + +Strauss Expires August 15, 2000 [Page 75] + +Internet-Draft SMIng February 2000 + + + value of the status column becomes `notInService', and we + proceed to interaction 4. + + Interaction 4: Making the Conceptual Row Available + + Once the management station is satisfied with the values + associated with the columns of the conceptual row, it issues + a management protocol set operation to set the status column + to `active'. If the agent has sufficient information to + make the conceptual row available for use by the managed + device, the management protocol set operation succeeds (a + `noError' response is returned). Otherwise, the management + protocol set operation fails with an error of + `inconsistentValue'. + + + NOTE WELL + + A conceptual row having a status column with value + `notInService' or `notReady' is unavailable to the + managed device. As such, it is possible for the + managed device to create its own instances during the + time between the management protocol set operation + which sets the status column to `createAndWait' and the + management protocol set operation which sets the status + column to `active'. In this case, when the management + protocol set operation is issued to set the status + column to `active', the values held in the agent + supersede those used by the managed device. + + If the management station is prevented from setting the + status column to `active' (e.g., due to management station + or network failure) the conceptual row will be left in the + `notInService' or `notReady' state, consuming resources + indefinitely. The agent must detect conceptual rows that + have been in either state for an abnormally long period of + time and remove them. It is the responsibility of the + DESCRIPTION clause of the status column to indicate what an + abnormally long period of time would be. This period of + time should be long enough to allow for human response time + (including `think time') between the creation of the + conceptual row and the setting of the status to `active'. + In the absence of such information in the DESCRIPTION + clause, + it is suggested that this period be approximately 5 minutes + in length. This removal action applies not only to newly- + created rows, but also to previously active rows which are + set to, and left in, the notInService state for a prolonged + period exceeding that which is considered normal for such a + + +Strauss Expires August 15, 2000 [Page 76] + +Internet-Draft SMIng February 2000 + + + conceptual row. + + + Conceptual Row Suspension + + When a conceptual row is `active', the management station + may issue a management protocol set operation which sets the + instance of the status column to `notInService'. If the + agent is unwilling to do so, the set operation fails with an + error of `wrongValue' or `inconsistentValue'. + Otherwise, the conceptual row is taken out of service, and a + `noError' response is returned. It is the responsibility of + the DESCRIPTION clause of the status column to indicate + under what circumstances the status column should be taken + out of service (e.g., in order for the value of some other + column of the same conceptual row to be modified). + + Conceptual Row Deletion + + For deletion of conceptual rows, a management protocol set + operation is issued which sets the instance of the status + column to `destroy'. This request may be made regardless of + the current value of the status column (e.g., it is possible + to delete conceptual rows which are either `notReady', + `notInService' or `active'.) If the operation succeeds, then + all instances associated with the conceptual row are + immediately removed."; + }; + + typedef TimeStamp { + type TimeTicks; + description + "The value of the sysUpTime object at which a specific + occurrence happened. The specific occurrence must be + defined in the description of any object defined using this + type. When the specific occurrence occurred prior to the + last time sysUpTime was zero, then the TimeStamp value is + zero. Note that this requires all TimeStamp values to be + reset to zero when the value of sysUpTime reaches 497+ days + and wraps around to zero."; + }; + + typedef TimeInterval { + type Integer32 (0..2147483647); + description + "A period of time, measured in units of 0.01 seconds."; + }; + + typedef DateAndTime { + + +Strauss Expires August 15, 2000 [Page 77] + +Internet-Draft SMIng February 2000 + + + type OctetString (8 | 11); + format "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"; + description + "A date-time specification. + + 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..13 + 10 11 minutes from UTC 0..59 + + * Notes: + - the value of year is in big-endian encoding + - daylight saving time in New Zealand is +13 + + 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."; + }; + + typedef StorageType { + type Enumeration (other(1), volatile(2), + nonVolatile(3), permanent(4), + readOnly(5)); + description + "Describes the memory realization of a conceptual row. A + row which is volatile(2) is lost upon reboot. A row which + is either nonVolatile(3), permanent(4) or readOnly(5), is + backed up by stable storage. A row which is permanent(4) + can be changed but not deleted. A row which is readOnly(5) + cannot be changed nor deleted. + + If the value of an object with this syntax is either + permanent(4) or readOnly(5), it cannot be modified. + Conversely, if the value is either other(1), volatile(2) or + nonVolatile(3), it cannot be modified to be permanent(4) or + readOnly(5). (All illegal modifications result in a + + +Strauss Expires August 15, 2000 [Page 78] + +Internet-Draft SMIng February 2000 + + + 'wrongValue' error.) + + Every usage of this textual convention is required to + specify the columnar objects which a permanent(4) row must + at a minimum allow to be writable."; + }; + + typedef TDomain { + type ObjectIdentifier; + description + "Denotes a kind of transport service. + + Some possible values, such as snmpUDPDomain, are defined in + 'Transport Mappings for Version 2 of the Simple Network + Management Protocol (SNMPv2)'."; + }; + + typedef TAddress { + type OctetString (1..255); + description + "Denotes a transport service address. + + For snmpUDPDomain, a TAddress is 6 octets long, the initial + 4 octets containing the IP-address in network-byte order and + the last 2 containing the UDP port in network-byte order. + Cosult 'Transport Mappings for Version 2 of the Simple + Network Management Protocol (SNMPv2)' for further + information on snmpUDPDomain."; + }; + + }; + +14.3 IRTF-NMRG-SMING-EXTENSIONS + + module IRTF-NMRG-SMING-EXTENSIONS { + + // + // $RCSfile: IRTF-NMRG-SMING-EXTENSIONS,v $ + // $Revision: 817 $ + // $Author: strauss $ + // $Date: 2000-02-15 11:41:02 +0100 (Tue, 15 Feb 2000) $ + // + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + + +Strauss Expires August 15, 2000 [Page 79] + +Internet-Draft SMIng February 2000 + + + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core extension definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + extension agentcaps { + status current; + description + "The agentcaps extension statement is used to describe + an agent's deviation from the compliance statements + of the modules it implements. It is designed to be + compatible with the SMIv2 AGENT-CAPABILITIES macro. + + The agentcaps extension statement should only be used + in the statement body of a module that does not + contain any other type or node definitions that do not + correspond to an agent implementation."; + reference + "RFC 2580, Section 6 describes the SMIv2 + compatible AGENT-CAPABILITIES macro."; + abnf + "agentcapsStatement = 'agentcaps' sep lcIdentifier + optsep '{' stmtsep + oidStatement stmtsep + releaseStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + *(includesStatement stmtsep) + '}' optsep ';' + + includesStatement = 'includes' sep qlcIdentifier + optsep '{' stmtsep + *(variationStatement stmtsep) + '}' optsep ';' + + +Strauss Expires August 15, 2000 [Page 80] + +Internet-Draft SMIng February 2000 + + + variationStatement = 'variation' sep qlcIdentifier + optsep '{' stmtsep + typeStatement stmtsep + writetypeStatement stmtsep + accessStatement stmtsep + createStatement stmtsep + '}' optsep ';' + "; + }; + + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 81] + +Internet-Draft SMIng February 2000 + + +15. Extending a Module + + As experience is gained with a module, it may be desirable to revise + that module. However, changes are not allowed if they have any + potential to cause interoperability problems between an + implementation using an original specification and an implementation + using an updated specification(s). + + For any change, some statements near the top of the module MUST be + updated to include information about the revision: specifically, a + new `revision' statement (Section 5.6) must be included in front of + the `revision' statements. Furthermore, any necessary changes MUST + be applied to other statements, including the `organization' and + `contact' statements (Section 5.2, Section 5.3). + + Note that any definition contained in a module is available to be + imported by any other module, and is referenced in an `import' + statement via the module name. Thus, a module name MUST NOT be + changed. Specifically, the module name (e.g., `FIZBIN-MIB' in the + example of Section 5.8) MUST NOT be changed when revising a module + (except to correct typographical errors), and definitions MUST NOT + be moved from one module to another. + + Also note, that obsolete definitions MUST NOT be removed from + modules since their descriptors may still be referenced by other + modules, and the object identifiers used to name them MUST never be + re-assigned. + + A definition may be revised in any of the following ways: + + o In `typedef', `scalar' and `column' statement blocks, a `type' + statement containing an `Enumeration' or `Bits' type may have new + named numbers added. + + o In `typedef', `scalar' and `column' statement blocks, the value + of a `type' statement may be replaced by another type if the new + type is derived (directly or indirectly) from the same base type, + has the same set of values, and has identical semantics. + + o In any statement block, a `status' statement value of `current' + (or a missing `status' statement) may be revised as `deprecated' + or `obsolete'. Similarly, a `status' statement value of + `deprecated' may be revised as `obsolete'. When making such a + change, the `description' statement SHOULD be updated to explain + the rationale. + + o In `typedef', `scalar' and `column' statement blocks, a `default' + statement may be added or updated. + + + +Strauss Expires August 15, 2000 [Page 82] + +Internet-Draft SMIng February 2000 + + + o In any statement block, a `reference' statement may be added or + updated. + + o In `typedef', `scalar' and `column' statement blocks, a `units' + statement may be added. + + o A row may be augmented by adding new columnar objects (`column' + statements) at the end of the row's statement block. + + o In any statement block, clarifications and additional information + may be included in the `description' statement. + + o Entirely new extensions, types, nodes, scalar objects, tables, + groups, or compliance statements may be defined, using previously + unassigned identifiers and object identifier values. + + Otherwise, if the semantics of any previous definition are changed + (i.e., if a non-editorial change is made to any definition other + than those specifically allowed above), then the `oid' statement + value associated with that object MUST also be changed. + + Note that changing the identifier associated with an existing object + is considered a semantic change, as these strings may be used in an + `import' statement. + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 83] + +Internet-Draft SMIng February 2000 + + +16. SMIng Language Extensibility + + While SMIng has a well defined set of statements (Section 5 through + Section 13) that are used to specify those aspects of management + information commonly regarded as necessary, there may be further + information, people wish to express. To describe additional + information informally in description statements has the + disadvantage, that this information cannot be parsed by any program. + + SMIng allows modules to include statements that are unknown to a + parser but fulfill some core grammar rules (Section 4.2). + Furthermore, additional statements may be defined by the `extension' + statement (Section 6). Extensions can be used in the local module or + in other modules, that import the extension. This has some + advantages: + + o A parser can differentiate between statements known as extensions + and unknown statements. This enables the parser to complain about + unknown statements, e.g. due to typos. + + o If an extension's definition contains a formal ABNF grammar + definition and a parser is able to interpret this ABNF + definition, this enables the parser also to complain about wrong + usage of an extension. + + o Since, there might be some common need for extensions, there is a + relatively high probability of extension name collisions + originated by different organizations, as long as there is no + standardized extension for that purpose. The requirement to + explicitly import extension statements allows to distinguish + those extensions. + + o The supported extensions of an SMIng implementation, e.g. a MIB + compiler, can be clearly expressed. + + The only formal effect of an extension statement definition is to + declare its existence and its status, and optionally its ABNF + grammar. All additional aspects SHOULD be described in the + `description' statement: + + o The detailed semantics of the new statement SHOULD be described. + + o The contexts in which the new statement can be used, SHOULD be + described, e.g., a new statement may be designed to be used only + in the statement block of a module, but not in other nested + statement blocks. Others may be applicable in multiple contexts. + In addition, the point in the sequence of an obligatory order of + other statements, where the new statement may be inserted, might + be prescribed. + + +Strauss Expires August 15, 2000 [Page 84] + +Internet-Draft SMIng February 2000 + + + o The circumstances that make the new statement mandatory or + optional SHOULD be described. + + o The syntax of the new statement SHOULD at least be described + informally, if not supplied formally in an `abnf' statement. + + o It might be reasonable to give some suggestions under which + conditions the implementation of the new statement is adequate + and how it could be integrated into existent implementations. + + Some possible extension applications might be: + + o Agent capabilities statements, that allow to describe an agent + implemention's deviation from the compliance statements of the + modules they implement. SMIv2 has a regular AGENT-CAPABILITIES + construct [4], though it's rarely used. That's why it's not a + common SMIng statement. Instead, it is defined as an `agentcaps' + extension statement in the module IRTF-NMRG-SMING-EXTENSIONS + (Section 14.3). + + o Inlined annotations to definitions. E.g., a vendor may wish to + describe additional information to object definitions in private + modules. An example are severity levels of notifications in the + statement block of a `notification' statement. + + o Arbitrary annotations to external definitions. E.g., a vendor may + wish to describe additional information to object definitions in + a "standard" module. This allows a vendor to implement "standard" + modules as well as additional private features, without redundant + MIB definitions, but on top of "standard" MIB definitions. + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 85] + +Internet-Draft SMIng February 2000 + + +17. Module Conversions + +17.1 Converting SMIv2 to SMIng + + Conversions of SMIv2 modules to SMIng are feasible. The only SMIv2 + construct that cannot be mapped to an SMIng statement is the + AGENT-CAPABILITIES macro. However, this can be mapped to the + `agentcaps' extension. All other constructs and types are directly + mappable without loss of information. + + Detailed mapping information is subject to a future document. + +17.2 Converting SMIng to SMIv2 + + SMIng is more liberal in some aspects to ensure a more consistent + information model and a short grammar with less exceptions. This + leads to a limited backwards convertability to SMIv2 of different + kinds of identifiers, groups, type definition hierarchies, octet + string length limitations, and object identifier values (those with + a single sub-identifier). Some other information gets lost when + being converted to SMIv2: some occurences of references, units, + formats, default values, table indexing information, and table row + creation information. + + Detailed mapping information is subject to a future document. + +17.3 SMIv1 + + Conversions between SMIv1 and SMIng are not covered by this + document. Anyhow, conversions between SMIv1 and SMIv2 are subject to + SMIv2 and partly described in [14]. Conversions between SMIv2 and + SMIng are covered in the sections above. + + In few words, conversion from SMIv1 to SMIng is not possible in some + cases and without some additional information. Conversion from SMIng + to SMIv1 is possible if 64 bit types and floating point data types + are not used and if identifiers conform to the SMIv1 restrictions. + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 86] + +Internet-Draft SMIng February 2000 + + +18. Security Considerations + + This document defines a language with which to write and read + descriptions of management information. The language itself has no + security impact on the Internet. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 87] + +Internet-Draft SMIng February 2000 + + +19. Acknowledgements + + This document is originated as a central part of a master's thesis + at the Technical University of Braunschweig, under the guidance of + Juergen Schoenwaelder. + + Since SMIng represents a successor of SMIv2, a huge amount of + paragraphs and phrases are taken from the SMIv2 specifications [2], + [3], [4] written by Jeff Case, Keith McCloghrie, David Perkins, + Marshall T. Rose, Juergen Schoenwaelder, and Steven L. Waldbusser. + + Finally, Marshall T. Rose's work on an XML framework for RFC authors + [15] made the writing of an Internet standards document much more + feasible. + + Thanks to these people and the authors of these documents. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 88] + +Internet-Draft SMIng February 2000 + + +References + + [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", RFC 2119, BCP 14, March 1997. + + [2] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M., Waldbusser, S., "Structure of Management Information + Version 2 (SMIv2)", RFC 2578, STD 58, April 1999. + + [3] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M., Waldbusser, S., "Textual Conventions for SMIv2", RFC 2579, + STD 59, April 1999. + + [4] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, + M., Waldbusser, S., "Conformance Statements for SMIv2", RFC + 2580, STD 60, April 1999. + + [5] Rose, M., McCloghrie, K., "Structure and Identification of + Management Information for TCP/IP-based Internets", RFC 1155, + STD 16, May 1990. + + [6] Rose, M., McCloghrie, K., "Concise MIB Definitions", RFC 1212, + STD 16, March 1991. + + [7] Rose, M., "A Convention for Defining Traps for use with the + SNMP", RFC 1215, March 1991. + + [8] Crocker, D., Overell, P., "Augmented BNF for Syntax + Specifications: ABNF", RFC 2234, November 1997. + + [9] International Organization for Standardization, "Specification + of Abstract Syntax Notation One (ASN.1)", International + Standard 8824, December 1987. + + [10] Harrington, D., Presuhn, R., Wijnen, B., "An Architecture for + Describing SNMP Management Frameworks", RFC 2271, January 1999. + + [11] Institute of Electrical and Electronics Engineers, "IEEE + Standard for Binary Floating-Point Arithmetic", ANSI/IEEE + Standard 754-1985, August 1985. + + [12] Yergeau, F., "UTF-8, a transformation format of ISO 10646", + RFC 2279, January 1998. + + [13] Case, J., McCloghrie, K., Rose, M., Waldbusser, S., + "Management Information Base for Version 2 of the Simple + Network Management Protocol (SNMPv2)", RFC 1907, January 1996. + + [14] Wijnen, B., Levi, D., "V2ToV1 - Mapping SNMPv2 onto SNMPv1 + + +Strauss Expires August 15, 2000 [Page 89] + +Internet-Draft SMIng February 2000 + + + within a bi-lingual SNMP agent", RFC 2089, January 1997. + + [15] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, June + 1999. + +Author's Address + + Frank Strauss + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de + URI: http://www.ibr.cs.tu-bs.de/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 90] + +Internet-Draft SMIng February 2000 + + +Appendix A. The SMIng ABNF grammar + + The SMIng grammar conforms to the Augmented Backus-Naur Form + (ABNF)[8], with one exception: For readability, keywords are + represented as quoted strings, although ABNF would declare these + strings to be case-insensitive. Anyhow, SMIng keyword are meant to + be case-sensitive. + + ;; + ;; sming.abnf -- SMIng grammar in ABNF notation (RFC 2234). + ;; + ;; @(#) $Id: draft-irtf-nmrg-sming-02.txt 817 2000-02-15 10:41:02Z strauss $ + ;; + ;; Copyright (C) The Internet Society (1999). All Rights Reserved. + ;; + + smingFile = optsep *(moduleStatement optsep) + + ;; + ;; Statement rules. + ;; + + moduleStatement = moduleKeyword sep ucIdentifier optsep "{" stmtsep + *(importStatement stmtsep) + organizationStatement stmtsep + contactStatement stmtsep + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + 1*(revisionStatement stmtsep) + *1(identityStatement stmtsep) + *(extensionStatement stmtsep) + *(typedefStatement stmtsep) + *(anyObjectStatement stmtsep) + *(notificationStatement stmtsep) + *(groupStatement stmtsep) + *(complianceStatement stmtsep) + "}" optsep ";" + + extensionStatement = extensionKeyword sep lcIdentifier optsep + "{" stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + *1(abnfStatement stmtsep) + "}" optsep ";" + + typedefStatement = typedefKeyword sep ucIdentifier optsep + "{" stmtsep + typedefTypeStatement stmtsep + + +Strauss Expires August 15, 2000 [Page 91] + +Internet-Draft SMIng February 2000 + + + *1(defaultStatement stmtsep) + *1(formatStatement stmtsep) + *1(unitsStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + anyObjectStatement = nodeStatement / + scalarStatement / + tableStatement + + nodeStatement = nodeKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + *1(statusStatement stmtsep) + *1(descriptionStatement stmtsep) + *1(referenceStatement stmtsep) + "}" optsep ";" + + scalarStatement = scalarKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + typeStatement stmtsep + accessStatement stmtsep + *1(defaultStatement stmtsep) + *1(formatStatement stmtsep) + *1(unitsStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + tableStatement = tableKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + rowStatement stmtsep + "}" optsep ";" + + rowStatement = rowKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + anyIndexStatement stmtsep + *1(createStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + + +Strauss Expires August 15, 2000 [Page 92] + +Internet-Draft SMIng February 2000 + + + *1(referenceStatement stmtsep) + 1*(columnStatement stmtsep) + "}" optsep ";" + + columnStatement = columnKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + typeStatement stmtsep + accessStatement stmtsep + *1(defaultStatement stmtsep) + *1(formatStatement stmtsep) + *1(unitsStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + notificationStatement = notificationKeyword sep lcIdentifier + optsep "{" stmtsep + oidStatement stmtsep + *1(objectsStatement stmtsep) + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + groupStatement = groupKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + membersStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + "}" optsep ";" + + complianceStatement = complianceKeyword sep lcIdentifier optsep + "{" stmtsep + oidStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + *1(mandatoryStatement stmtsep) + *(optionalStatement stmtsep) + *(refineStatement stmtsep) + "}" optsep ";" + + importStatement = importKeyword sep ucIdentifier optsep + "(" optsep + identifierList optsep + + +Strauss Expires August 15, 2000 [Page 93] + +Internet-Draft SMIng February 2000 + + + ")" optsep ";" + + revisionStatement = revisionKeyword optsep "{" stmtsep + dateStatement stmtsep + descriptionStatement stmtsep + "}" optsep ";" + + identityStatement = identityKeyword sep lcIdentifier optsep ";" + + typedefTypeStatement = typeKeyword sep refinedBaseType optsep ";" + + typeStatement = typeKeyword sep + (refinedBaseType / refinedType) + optsep ";" + + writetypeStatement = writetypeKeyword sep + (refinedBaseType / refinedType) + optsep ";" + + anyIndexStatement = indexStatement / + augmentsStatement / + reordersStatement / + sparseStatement / + expandsStatement + + indexStatement = indexKeyword *1(sep impliedKeyword) optsep + "(" optsep qlcIdentifierList + optsep ")" optsep ";" + + augmentsStatement = augmentsKeyword sep qlcIdentifier + optsep ";" + + reordersStatement = reordersKeyword sep qlcIdentifier + *1(sep impliedKeyword) + optsep "(" optsep + qlcIdentifierList optsep ")" + optsep ";" + + sparseStatement = sparseKeyword sep qlcIdentifier optsep ";" + + expandsStatement = expandsKeyword sep qlcIdentifier + *1(sep impliedKeyword) + optsep "(" optsep + qlcIdentifierList optsep ")" + optsep ";" + + createStatement = createKeyword optsep ";" + + oidStatement = oidKeyword sep objectIdentifier optsep ";" + + +Strauss Expires August 15, 2000 [Page 94] + +Internet-Draft SMIng February 2000 + + + dateStatement = dateKeyword sep date optsep ";" + + organizationStatement = organizationKeyword sep text optsep ";" + + contactStatement = contactKeyword sep text optsep ";" + + formatStatement = formatKeyword sep format optsep ";" + + unitsStatement = unitsKeyword sep units optsep ";" + + statusStatement = statusKeyword sep status optsep ";" + + accessStatement = accessKeyword sep access optsep ";" + + defaultStatement = defaultKeyword sep anyValue optsep ";" + + descriptionStatement = descriptionKeyword sep text optsep ";" + + referenceStatement = referenceKeyword sep text optsep ";" + + abnfStatement = abnfKeyword sep text optsep ";" + + membersStatement = membersKeyword optsep "(" optsep + qlcIdentifierList optsep + ")" optsep ";" + + objectsStatement = objectsKeyword optsep "(" optsep + qlcIdentifierList optsep + ")" optsep ";" + + mandatoryStatement = mandatoryKeyword optsep "(" optsep + qlcIdentifierList optsep + ")" optsep ";" + + optionalStatement = optionalKeyword sep qlcIdentifier optsep + "{" descriptionStatement stmtsep + "}" optsep ";" + + refineStatement = refineKeyword sep qlcIdentifier optsep "{" + *1(typeStatement stmtsep) + *1(writetypeStatement stmtsep) + *1(accessStatement stmtsep) + descriptionStatement stmtsep + "}" optsep ";" + + ;; + ;; + ;; + + + +Strauss Expires August 15, 2000 [Page 95] + +Internet-Draft SMIng February 2000 + + + refinedBaseType = OctetStringKeyword *1(optsep numberSpec) / + ObjectIdentifierKeyword / + Integer32Keyword *1(optsep numberSpec) / + Unsigned32Keyword *1(optsep numberSpec) / + Integer64Keyword *1(optsep numberSpec) / + Unsigned64Keyword *1(optsep numberSpec) / + Float32Keyword *1(optsep floatSpec) / + Float64Keyword *1(optsep floatSpec) / + Float128Keyword *1(optsep floatSpec) / + EnumerationKeyword optsep namedNumberSpec / + // TODO: inserted optsep, do also in parser grammar! + BitsKeyword optsep namedNumberSpec + // TODO: inserted optsep, do also in parser grammar! + + refinedType = qucIdentifier *1(optsep anySpec) + + anySpec = numberSpec / floatSpec + + numberSpec = "(" optsep numberElement + *furtherNumberElement + optsep ")" + + furtherNumberElement = optsep "|" optsep numberElement + + numberElement = signedNumber *1numberUpperLimit + + numberUpperLimit = optsep ".." optsep signedNumber + + floatSpec = "(" optsep floatElement + *furtherFloatElement + optsep ")" + + furtherFloatElement = optsep "|" optsep floatElement + + floatElement = floatValue *1floatUpperLimit + + floatUpperLimit = optsep ".." optsep floatValue + + namedNumberSpec = "(" optsep namedNumberList optsep ")" + + namedNumberList = namedNumberItem + *(optsep "," optsep namedNumberItem) + *1(optsep ",") + + namedNumberItem = lcIdentifier optsep "(" optsep number + optsep ")" + + identifierList = identifier + *(optsep "," optsep identifier) + + +Strauss Expires August 15, 2000 [Page 96] + +Internet-Draft SMIng February 2000 + + + *1(optsep ",") + + qIdentifierList = qIdentifier + *(optsep "," optsep qIdentifier) + *1(optsep ",") + + qlcIdentifierList = qlcIdentifier + *(optsep "," optsep qlcIdentifier) + *1(optsep ",") + + bitsValue = "(" optsep bitsList optsep ")" + + bitsList = *1(lcIdentifier + *(optsep "," optsep lcIdentifier)) + *1(optsep ",") + + ;; + ;; Other basic rules. + ;; + + identifier = ucIdentifier / lcIdentifier + + qIdentifier = qucIdentifier / qlcIdentifier + + ucIdentifier = ucAlpha *63(ALPHA / DIGIT / "-") + + qucIdentifier = *1(ucIdentifier "::") ucIdentifier + + lcIdentifier = lcAlpha *63(ALPHA / DIGIT / "-") + + qlcIdentifier = *1(ucIdentifier "::") lcIdentifier + + text = textSegment *(optsep textSegment) + + textSegment = DQUOTE *textAtom DQUOTE + + textAtom = textVChar / HTAB / SP / lineBreak + + date = DQUOTE 4DIGIT "-" 2DIGIT "-" 2DIGIT + *1(" " 2DIGIT ":" 2DIGIT) + DQUOTE + ; always in UTC + + format = textSegment + + units = textSegment + + anyValue = bitsValue / + negativeNumber / + + +Strauss Expires August 15, 2000 [Page 97] + +Internet-Draft SMIng February 2000 + + + hexadecimalNumber / + floatValue / + text / + objectIdentifier + ; Note: `objectIdentifer' includes the + ; syntax of enumeration labels and postive + ; numbers. They are not named literally to + ; avoid reduce/reduce conflicts when + ; building LR parsers based on this + ; grammar. + + status = currentKeyword / + deprecatedKeyword / + obsoleteKeyword + + access = noaccessKeyword / + notifyonlyKeyword / + readonlyKeyword / + readwriteKeyword + + objectIdentifier = (qlcIdentifier / subid) *127("." subid) + + subid = decimalNumber + + number = hexadecimalNumber / decimalNumber + + negativeNumber = "-" decimalNumber + + signedNumber = number / negativeNumber + + decimalNumber = "0" / (nonZeroDigit *DIGIT) + + zeroDecimalNumber = 1*DIGIT + + hexadecimalNumber = "0x" 1*(HEXDIG HEXDIG) + + floatValue = neginfKeyword / + posinfKeyword / + snanKeyword / + qnanKeyword / + signedNumber "." zeroDecimalNumber + *1("E" ("+"/"-") zeroDecimalNumber) + + ;; + ;; Rules to skip unknown statements + ;; with arbitrary arguments and blocks. + ;; + + unknownStatement = unknownKeyword optsep *unknownArgument + + +Strauss Expires August 15, 2000 [Page 98] + +Internet-Draft SMIng February 2000 + + + optsep ";" + + unknownArgument = ("(" optsep unknownList optsep ")") / + ("{" optsep *unknownStatement optsep "}") / + qucIdentifier / + anyValue / + anySpec + + unknownList = namedNumberList / + qIdentifierList + + unknownKeyword = lcIdentifier + + ;; + ;; Keyword rules. + ;; + ;; Typically, keywords are represented by tokens returned from the + ;; lexical analyzer. Note, that the lexer has to be stateful to + ;; distinguish keywords from identifiers depending on the context + ;; position in the input stream. + ;; + ;; Also note, that these keyword definitions are represented in + ;; cleartext for readability, while SMIng keywords are meant to be + ;; case-sensitive, although ABNF makes quoted strings like these to + ;; be case-insensitive. + ;; + + ;; Statement keywords. + + moduleKeyword = "module" + importKeyword = "import" + revisionKeyword = "revision" + oidKeyword = "oid" + dateKeyword = "date" + organizationKeyword = "organization" + contactKeyword = "contact" + descriptionKeyword = "description" + referenceKeyword = "reference" + identityKeyword = "identity" + extensionKeyword = "extension" + typedefKeyword = "typedef" + typeKeyword = "type" + writetypeKeyword = "writetype" + nodeKeyword = "node" + scalarKeyword = "scalar" + tableKeyword = "table" + columnKeyword = "column" + rowKeyword = "row" + notificationKeyword = "notification" + + +Strauss Expires August 15, 2000 [Page 99] + +Internet-Draft SMIng February 2000 + + + groupKeyword = "group" + complianceKeyword = "compliance" + formatKeyword = "format" + unitsKeyword = "units" + statusKeyword = "status" + accessKeyword = "access" + defaultKeyword = "default" + impliedKeyword = "implied" + indexKeyword = "index" + augmentsKeyword = "augments" + reordersKeyword = "reorders" + sparseKeyword = "sparse" + expandsKeyword = "expands" + createKeyword = "create" + membersKeyword = "members" + objectsKeyword = "objects" + mandatoryKeyword = "mandatory" + optionalKeyword = "optional" + refineKeyword = "refine" + abnfKeyword = "abnf" + + ;; Base type keywords. + + OctetStringKeyword = "OctetString" + ObjectIdentifierKeyword = "ObjectIdentifier" + Integer32Keyword = "Integer32" + Unsigned32Keyword = "Unsigned32" + Integer64Keyword = "Integer64" + Unsigned64Keyword = "Unsigned64" + Float32Keyword = "Float32" + Float64Keyword = "Float64" + Float128Keyword = "Float128" + BitsKeyword = "Bits" + EnumerationKeyword = "Enumeration" + + ;; Status keyword. + + currentKeyword = "current" + deprecatedKeyword = "deprecated" + obsoleteKeyword = "obsolete" + + ;; Access keywords. + + noaccessKeyword = "noaccess" + notifyonlyKeyword = "notifyonly" + readonlyKeyword = "readonly" + readwriteKeyword = "readwrite" + + ;; Special floating point values' keywords. + + +Strauss Expires August 15, 2000 [Page 100] + +Internet-Draft SMIng February 2000 + + + neginfKeyword = "neginf" + posinfKeyword = "posinf" + snanKeyword = "snan" + qnanKeyword = "qnan" + + ;; + ;; Some low level rules. + ;; These tokens are typically skipped by the lexical analyzer. + ;; + + sep = 1*(comment / lineBreak / WSP) + ; unconditional separator + + optsep = *(comment / lineBreak / WSP) + + stmtsep = *(comment / + lineBreak / + WSP / + unknownStatement) + + comment = "//" *(WSP / VCHAR) lineBreak + + lineBreak = CRLF / LF + + ;; + ;; Encoding specific rules. + ;; + + textVChar = %x21 / %x23-7E + ; any VCHAR except DQUOTE + + ucAlpha = %x41-5A + + lcAlpha = %x61-7A + + nonZeroDigit = %x31-39 + + ;; + ;; RFC 2234 core rules. + ;; + + ALPHA = %x41-5A / %x61-7A + ; A-Z / a-z + + CR = %x0D + ; carriage return + + CRLF = CR LF + ; Internet standard newline + + +Strauss Expires August 15, 2000 [Page 101] + +Internet-Draft SMIng February 2000 + + + DIGIT = %x30-39 + ; 0-9 + + DQUOTE = %x22 + ; " (Double Quote) + + HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" + + HTAB = %x09 + ; horizontal tab + + LF = %x0A + ; linefeed + + SP = %x20 + ; space + + VCHAR = %x21-7E + ; visible (printing) characters + + WSP = SP / HTAB + ; white space + + ;; + ;; EOF + ;; + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 102] + +Internet-Draft SMIng February 2000 + + +Appendix B. Glossary + + columnar object: An object in a table row that may have zero, one or + more object instances. Instances are identified by using the + values of `indexing objects' as `instance identifier'. + + extension: The SMIng `extension' statement can be used to define new + statements. Extensions can express annotations to existent + management information, agent capabilities known from SMIv2, or + arbitrary other information. See Section 16 for details. + + identifier: The name of any definition, either a module, type, node, + scalar object, table, row, columnar object, notification, group, + compliance, a named number of an enumeration or bits type or any + construct defined by an SMIng extension. Every identifier starts + with an upper-case or lower-case character, followed by letters, + digits and hyphens, but without consecutive or trailing hyphens. + The length of an identifier MUST NOT exceed 64 characters. Note + that SMIng keywords may be used as identifiers, though it's NOT + RECOMMENDED. See also Section 2.1. + + indexing objects: A Table may contain multiple instances of single + columnar objects. That is, there may be multiple rows. The + table's `indexing objects' are used to unambiguously distinguish + the rows of a table. A special encoding of their values + represents the columns' instance-identifier, and thus identifies + the row. + + instance-identifier: That part of an object identifier value, that + is used to unambiguously identify an instance of an object. For + scalar objects, the instance-identifier is `0'. For columnar + objects, the instance-identifier is built from the values of the + `indexing objects'. See also Section 2.4. + + module: A module is the container of inter-related management + information, either managed objects or other definitions like + type definitions or annotations. A module has to conform the + SMIng grammar and semantics described by this document. A module + represents a namespace in which local definitions are available + and external definitions have to be imported. + + named number: Values of `Enumeration' types (Section 3.10) and + single elements of `Bits' (Section 3.11) types are integer + numbers, each associated with an identifers. Those + number-identifier pairs are called `named numbers'. + + object: A leaf definition in the object identifier tree, that + represents a class of object instances. Objects are exactly those + definitions declared by the SMIng keywords `scalar' or `column'. + + +Strauss Expires August 15, 2000 [Page 103] + +Internet-Draft SMIng February 2000 + + + object identifier: Management information is organized in a tree of + nodes. Each node is unambiguously identified by an `object + identifier', that consists of a sequence of integer numbers + (`sub-identifiers') which represent the path of nodes from the + root to the addressed node in the tree. See also Section 2. + + row: The kind of node used to group columnar objects of a table. + Some significant information on table indexing and information + used for row creation and deletion is associated with a table's + row definition. + + scalar object: An object that has zero or one object instance. + + sub-identifier: A single component of an object identifier. There + are at most 128 sub-identifiers in an object identifier value and + each sub-identifier has a maximum value of 2^32-1 (4294967295). + + table: The kind of node used to group management information that is + organized in a sequence of rows. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 104] + +Internet-Draft SMIng February 2000 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2000). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implmentation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph + are included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + + + + + + + + + + + + + + + + + + + + + + + + +Strauss Expires August 15, 2000 [Page 105] + diff --git a/doc/ibrpib-assignments.txt b/doc/ibrpib-assignments.txt new file mode 100644 index 0000000..ecf1f70 --- /dev/null +++ b/doc/ibrpib-assignments.txt @@ -0,0 +1,35 @@ +Assignments for ibrpib +---------------------- + +As long as Standard PIBs are being developed and temporarily published +in Internet-Drafts, we have assigned them to OIDs under TUBS-SMI::ibrpib. +Once, when the documents are published officially as RFCs and get IANA +assigned OID registrations (or when they are dropped), they will be +deprecated from this list. + + +--- TUBS-SMI::ibrpib child sub-id. + | +- PIB MODULE-IDENTITY name. + | | + 1 INET-ADDRESS-TC-PIB::inetAddressTcPib + 2 ACCESSBIND-PIB::accessBindPib + 3 UMTS-PIB::uMTSPib + 4 QOS-POLICY-IP-PIB::qosPolicyIpPib + 5 QOS-POLICY-802-PIB::qosPolicy802Pib + 6 IPSEC-POLICY-PIB::ipSecPolicyPib + 7 FEEDBACK-FRAMEWORK-PIB::feedbackPolFrameworkPib + 8 DIFFSERV-PIB::qosPolicyPib + 9 ACCOUNTING-FRAMEWORK-PIB::acctPolFrameworkPib + 10 FRAMEWORD-TC-PIB::frwkTcPib + 11 SLS-NEGOTIATION-PIB::slsPolicyPib + 12 RSVP-PCC-PIB::rsvpPccPib + 13 FRAMEWORK-PIB::frameworkPib + 14 RADIUS-PIB::radiusModelPib + 15 POLICY-FRAMEWORK-PIB::policyFrameworkPib + 16 DIFFSERV-DSCP-TC::diffServDSCPTC + 17 DIFFSERV-MIB::diffServMib + 18 PPVPN-PIB::ppvpn2547PolicyPib + 19 PARTITION-PIB::switchPartitionPib + 20 MPLS-SETUP-PIB::mplsSetupPib + 21 META-POLICY-PIB::metaPolicyPib + 22 LOAD-BALANCING-PIB::lbPolicyPib + 23 IP-TE-PIB::ipTePib diff --git a/doc/smi.dia b/doc/smi.dia new file mode 100644 index 0000000..d5926bc --- /dev/null +++ b/doc/smi.dia @@ -0,0 +1,2275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiModule# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #path# + + + #char *# + + + + + + + + + + + + + + + + + #organization# + + + #char *# + + + + + + + + + + + + + + + + + #contactinfo# + + + #char *# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + #reference# + + + #char *# + + + + + + + + + + + + + + + + + #language# + + + #SmiLanguage# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiImport# + + + + + + + + + + + + + + + + + + + + + + + #module# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiRevision# + + + + + + + + + + + + + + + + + + + + + + + #date# + + + #time_t# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiMacro# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #decl# + + + #SmiDecl# + + + + + + + + + + + + + + + + + #status# + + + #SmiStatus# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + #reference# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiType# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #basetype# + + + #SmiBasetype# + + + + + + + + + + + + + + + + + #decl# + + + #SmiDecl# + + + + + + + + + + + + + + + + + #format# + + + #char *# + + + + + + + + + + + + + + + + + #value# + + + #SmiValue# + + + + + + + + + + + + + + + + + #units# + + + #char *# + + + + + + + + + + + + + + + + + #status# + + + #SmiStatus# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + #reference# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiNode# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #oidlen# + + + #int# + + + + + + + + + + + + + + + + + #oid# + + + #SmiSubid[]# + + + + + + + + + + + + + + + + + #decl# + + + #SmiDecl# + + + + + + + + + + + + + + + + + #access# + + + #SmiAccess# + + + + + + + + + + + + + + + + + #status# + + + #SmiStatus# + + + + + + + + + + + + + + + + + #format# + + + #char *# + + + + + + + + + + + + + + + + + #value# + + + #SmiValue# + + + + + + + + + + + + + + + + + #units# + + + #char *# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + #reference# + + + #char *# + + + + + + + + + + + + + + + + + #indexkind# + + + #SmiIndexkind# + + + + + + + + + + + + + + + + + #implied# + + + #int# + + + + + + + + + + + + + + + + + #create# + + + #int# + + + + + + + + + + + + + + + + + #nodekind# + + + #SmiNodekind# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmIRange# + + + + + + + + + + + + + + + + + + + + + + + #minValue# + + + #SmiValue# + + + + + + + + + + + + + + + + + #maxValue# + + + #SmiValue# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiNamedNumber# + + + + + + + + + + + + + + + + + + + + + + + #name# + + + #SmiIdentifier# + + + + + + + + + + + + + + + + + #value# + + + #SmiValue# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiElement# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiOption# + + + + + + + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #SmiRefinement# + + + + + + + + + + + + + + + + + + + + + + + #access# + + + #SmiAccess# + + + + + + + + + + + + + + + + + #description# + + + #char *# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #contained definitions# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #type restrictions# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Row/Group/Notif/Compl# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # Compliance Node# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Refined # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/smi.dtd b/doc/smi.dtd new file mode 100644 index 0000000..43dec61 --- /dev/null +++ b/doc/smi.dtd @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/smi.xsd b/doc/smi.xsd new file mode 100644 index 0000000..f673210 --- /dev/null +++ b/doc/smi.xsd @@ -0,0 +1,586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..4fbbae7 --- /dev/null +++ b/install-sh @@ -0,0 +1,507 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2006-10-14.15 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +posix_glob= +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chmodcmd=$chmodprog +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + shift + shift + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac +done + +if test $# -ne 0 && test -z "$dir_arg$dstarg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix=/ ;; + -*) prefix=./ ;; + *) prefix= ;; + esac + + case $posix_glob in + '') + if (set -f) 2>/dev/null; then + posix_glob=true + else + posix_glob=false + fi ;; + esac + + oIFS=$IFS + IFS=/ + $posix_glob && set -f + set fnord $dstdir + shift + $posix_glob && set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dst"; then + $doit $rmcmd -f "$dst" 2>/dev/null \ + || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ + && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ + || { + echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + } || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lib/Makefile.am b/lib/Makefile.am new file mode 100644 index 0000000..f7cb4c0 --- /dev/null +++ b/lib/Makefile.am @@ -0,0 +1,54 @@ +# +# Makefile.am -- +# +# Template to generate libsmi Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7735 2008-02-15 08:09:17Z schoenw $ +# + +EXTRA_DIST = parser-sming.y parser-smi.y \ + scanner-sming.l scanner-smi.l \ + errormacros.h data.h check.h error.h util.h \ + snprintf.h \ + scanner-smi.h parser-smi.h parser-smi.tab.h \ + scanner-sming.h parser-sming.h parser-sming.tab.h \ + $(man_MANS) +include_HEADERS = smi.h +CLEANFILES = parser-smi.output parser-sming.output +MAINTAINERCLEANFILES = parser-smi.c parser-sming.c \ + scanner-smi.c scanner-sming.c \ + parser-smi.tab.h parser-sming.tab.h \ + errormacros.h +man_MANS = libsmi.3 smi_config.3 smi_module.3 smi_macro.3 \ + smi_node.3 smi_type.3 smi_render.3 smi_util.3 \ + smi_class.3 smi_attribute.3 smi_identity.3 \ + smi_event.3 +lib_LTLIBRARIES = libsmi.la +libsmi_la_SOURCES = data.c check.c error.c util.c snprintf.c smi.c \ + parser-smi.c scanner-smi.c \ + parser-sming.c scanner-sming.c +libsmi_la_LDFLAGS = -version-info @VERSION_LIBTOOL@ + +parser-smi.c parser-smi.tab.h: parser-smi.y scanner-smi.h parser-smi.h + $(BISON) --defines=parser-smi.tab.h -t -psmi -o parser-smi.c parser-smi.y + +parser-sming.c: parser-sming.y scanner-sming.h parser-sming.h + $(BISON) --defines=parser-sming.tab.h -t -psming -o parser-sming.c parser-sming.y + +scanner-smi.c: scanner-smi.l scanner-smi.h parser-smi.tab.h + $(FLEX) -Cfe -Psmi -t scanner-smi.l > scanner-smi.c + +scanner-sming.c: scanner-sming.l scanner-sming.h parser-sming.tab.h + $(FLEX) -Cfe -Psming -t scanner-sming.l > scanner-sming.c + +error.h data.lo: errormacros.h + +errormacros.h: error.c + cat error.c | grep ERR_ | \ + sed -e 's/^.*\(ERR_[a-zA-Z0-9_]*\).*$$/\1/' | \ + awk '{printf "#define %-50s %d\n", $$1, NR-1}' > errormacros.h diff --git a/lib/Makefile.in b/lib/Makefile.in new file mode 100644 index 0000000..96204e4 --- /dev/null +++ b/lib/Makefile.in @@ -0,0 +1,662 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate libsmi Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7735 2008-02-15 08:09:17Z schoenw $ +# + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = lib +DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/libsmi.3.in $(srcdir)/smi.h.in \ + $(srcdir)/smi_attribute.3.in $(srcdir)/smi_class.3.in \ + $(srcdir)/smi_config.3.in $(srcdir)/smi_event.3.in \ + $(srcdir)/smi_identity.3.in $(srcdir)/smi_macro.3.in \ + $(srcdir)/smi_module.3.in $(srcdir)/smi_node.3.in \ + $(srcdir)/smi_render.3.in $(srcdir)/smi_type.3.in \ + $(srcdir)/smi_util.3.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = smi.h libsmi.3 smi_macro.3 smi_module.3 \ + smi_node.3 smi_type.3 smi_config.3 smi_render.3 smi_util.3 \ + smi_class.3 smi_attribute.3 smi_event.3 smi_identity.3 +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" \ + "$(DESTDIR)$(includedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libsmi_la_LIBADD = +am_libsmi_la_OBJECTS = data.lo check.lo error.lo util.lo snprintf.lo \ + smi.lo parser-smi.lo scanner-smi.lo parser-sming.lo \ + scanner-sming.lo +libsmi_la_OBJECTS = $(am_libsmi_la_OBJECTS) +libsmi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libsmi_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libsmi_la_SOURCES) +DIST_SOURCES = $(libsmi_la_SOURCES) +man3dir = $(mandir)/man3 +NROFF = nroff +MANS = $(man_MANS) +includeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = parser-sming.y parser-smi.y \ + scanner-sming.l scanner-smi.l \ + errormacros.h data.h check.h error.h util.h \ + snprintf.h \ + scanner-smi.h parser-smi.h parser-smi.tab.h \ + scanner-sming.h parser-sming.h parser-sming.tab.h \ + $(man_MANS) + +include_HEADERS = smi.h +CLEANFILES = parser-smi.output parser-sming.output +MAINTAINERCLEANFILES = parser-smi.c parser-sming.c \ + scanner-smi.c scanner-sming.c \ + parser-smi.tab.h parser-sming.tab.h \ + errormacros.h + +man_MANS = libsmi.3 smi_config.3 smi_module.3 smi_macro.3 \ + smi_node.3 smi_type.3 smi_render.3 smi_util.3 \ + smi_class.3 smi_attribute.3 smi_identity.3 \ + smi_event.3 + +lib_LTLIBRARIES = libsmi.la +libsmi_la_SOURCES = data.c check.c error.c util.c snprintf.c smi.c \ + parser-smi.c scanner-smi.c \ + parser-sming.c scanner-sming.c + +libsmi_la_LDFLAGS = -version-info @VERSION_LIBTOOL@ +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign lib/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +smi.h: $(top_builddir)/config.status $(srcdir)/smi.h.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +libsmi.3: $(top_builddir)/config.status $(srcdir)/libsmi.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_macro.3: $(top_builddir)/config.status $(srcdir)/smi_macro.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_module.3: $(top_builddir)/config.status $(srcdir)/smi_module.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_node.3: $(top_builddir)/config.status $(srcdir)/smi_node.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_type.3: $(top_builddir)/config.status $(srcdir)/smi_type.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_config.3: $(top_builddir)/config.status $(srcdir)/smi_config.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_render.3: $(top_builddir)/config.status $(srcdir)/smi_render.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_util.3: $(top_builddir)/config.status $(srcdir)/smi_util.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_class.3: $(top_builddir)/config.status $(srcdir)/smi_class.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_attribute.3: $(top_builddir)/config.status $(srcdir)/smi_attribute.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_event.3: $(top_builddir)/config.status $(srcdir)/smi_event.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smi_identity.3: $(top_builddir)/config.status $(srcdir)/smi_identity.3.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libsmi.la: $(libsmi_la_OBJECTS) $(libsmi_la_DEPENDENCIES) + $(libsmi_la_LINK) -rpath $(libdir) $(libsmi_la_OBJECTS) $(libsmi_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser-smi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser-sming.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanner-smi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanner-sming.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man3: $(man3_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" + @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.3*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 3*) ;; \ + *) ext='3' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst"; \ + done +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.3*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 3*) ;; \ + *) ext='3' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man3dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man3dir)/$$inst"; \ + done +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(MANS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS install-man + +install-dvi: install-dvi-am + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-info: install-info-am + +install-man: install-man3 + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \ + uninstall-man + +uninstall-man: uninstall-man3 + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-includeHEADERS install-info \ + install-info-am install-libLTLIBRARIES install-man \ + install-man3 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-includeHEADERS uninstall-libLTLIBRARIES \ + uninstall-man uninstall-man3 + + +parser-smi.c parser-smi.tab.h: parser-smi.y scanner-smi.h parser-smi.h + $(BISON) --defines=parser-smi.tab.h -t -psmi -o parser-smi.c parser-smi.y + +parser-sming.c: parser-sming.y scanner-sming.h parser-sming.h + $(BISON) --defines=parser-sming.tab.h -t -psming -o parser-sming.c parser-sming.y + +scanner-smi.c: scanner-smi.l scanner-smi.h parser-smi.tab.h + $(FLEX) -Cfe -Psmi -t scanner-smi.l > scanner-smi.c + +scanner-sming.c: scanner-sming.l scanner-sming.h parser-sming.tab.h + $(FLEX) -Cfe -Psming -t scanner-sming.l > scanner-sming.c + +error.h data.lo: errormacros.h + +errormacros.h: error.c + cat error.c | grep ERR_ | \ + sed -e 's/^.*\(ERR_[a-zA-Z0-9_]*\).*$$/\1/' | \ + awk '{printf "#define %-50s %d\n", $$1, NR-1}' > errormacros.h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/check.c b/lib/check.c new file mode 100644 index 0000000..7338c12 --- /dev/null +++ b/lib/check.c @@ -0,0 +1,2207 @@ +/* + * check.c -- + * + * This module contains semantics checks that are shared between + * the SMI parser backends. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: check.c 7640 2008-01-31 15:29:52Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "data.h" +#include "check.h" +#include "smi.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* + *---------------------------------------------------------------------- + * + * compareValues -- + * + * Compare two SmiValues a and b. + * + * Results: + * <= -2 if a is less than b-1 + * -1 if a is b-1 + * 0 if equal + * 1 if a is b+1 + * >= 2 if a is greater than b+1 + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +compareValues(SmiValue *a, SmiValue *b) { + if ((a->basetype == SMI_BASETYPE_UNSIGNED32) && + (b->basetype == SMI_BASETYPE_UNSIGNED32)) { + if (a->value.unsigned32 == b->value.unsigned32) { + return 0; + } else { + if (a->value.unsigned32 > b->value.unsigned32) { + if (a->value.unsigned32 == b->value.unsigned32 + 1) { + return 1; + } else { + return 2; + } + } else if (a->value.unsigned32 < b->value.unsigned32) { + if (a->value.unsigned32 + 1 == b->value.unsigned32) { + return -1; + } else { + return -2; + } + } + } + } + if ((a->basetype == SMI_BASETYPE_INTEGER32) && + (b->basetype == SMI_BASETYPE_INTEGER32)) { + if (a->value.integer32 == b->value.integer32) { + return 0; + } else { + if (a->value.integer32 > b->value.integer32) { + if (a->value.integer32 == b->value.integer32 + 1) { + return 1; + } else { + return 2; + } + } else if (a->value.integer32 < b->value.integer32) { + if (a->value.integer32 + 1 == b->value.integer32) { + return -1; + } else { + return -2; + } + } + } + } + if ((a->basetype == SMI_BASETYPE_UNSIGNED32) && + (b->basetype == SMI_BASETYPE_INTEGER32)) { + if ((b->value.integer32 < -1) || + ((a->value.unsigned32 > 1) && + (a->value.unsigned32-1 > 2147483647))) { + return 2; + } + return a->value.unsigned32 - b->value.integer32; + } + if ((a->basetype == SMI_BASETYPE_INTEGER32) && + (b->basetype == SMI_BASETYPE_UNSIGNED32)) { + if ((a->value.integer32 < -1) || + ((b->value.unsigned32 > 1) && + (b->value.unsigned32-1 > 2147483647))) { + return -2; + } + return b->value.unsigned32 - a->value.integer32; + } + return 0; +} + + + +/* + *---------------------------------------------------------------------- + * + * redefinition -- + * + * Print out error messages about a (case) redefinition. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +redefinition(Parser *parser, int line1, char *name1, Module *module, + int line2, char *name2) +{ + char *tmp = parser->path; + int equal = (strcmp(name1, name2) == 0); + + if (!strcmp(name1, "IpAddress") || + !strcmp(name1, "TimeTicks") || + !strcmp(name1, "Opaque") || + !strcmp(name1, "Integer32") || + !strcmp(name1, "Unsigned32") || + !strcmp(name1, "Counter32") || + !strcmp(name1, "Gauge32") || + !strcmp(name1, "Counter64") || + !strcmp(name1, "Integer64") || + !strcmp(name1, "Unsigned64")) { + if (line1) { + smiPrintErrorAtLine(parser, ERR_BASETYPE_REDEFINITION, line1, name1); + } else { + smiPrintError(parser, ERR_BASETYPE_REDEFINITION, name1); + } + } else { + if (! module) { + if (equal) { + if (line1) { + smiPrintErrorAtLine(parser, ERR_REDEFINITION, line1, name1); + } else { + smiPrintError(parser, ERR_REDEFINITION, name1); + } + } else { + if (line1) { + smiPrintErrorAtLine(parser, ERR_CASE_REDEFINITION, + line1, name1, name2); + } else { + smiPrintError(parser, ERR_CASE_REDEFINITION, name1, name2); + } + } + } else { + if (equal) { + if (line1) { + smiPrintErrorAtLine(parser, ERR_EXT_REDEFINITION, line1, + module->export.name, name1); + } else { + smiPrintError(parser, ERR_EXT_REDEFINITION, + module->export.name, name1); + } + } else { + if (line1) { + smiPrintErrorAtLine(parser, ERR_EXT_CASE_REDEFINITION, line1, + name1, module->export.name, name2); + } else { + smiPrintError(parser, ERR_EXT_CASE_REDEFINITION, + name1, module->export.name, name2); + } + } + parser->path = module->export.path; + } + smiPrintErrorAtLine(parser, ERR_PREVIOUS_DEFINITION, line2, name2); + if (module) { + parser->path = tmp; + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckObjectName -- + * + * Check whether a given object name already exists + * in a given module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckObjectName(Parser *parser, Module *module, char *name) +{ + Object *objectPtr; + Type *typePtr; + Module *modPtr; + + int errRedef = smiGetErrorSeverity(ERR_REDEFINITION); + int errExtRedef = smiGetErrorSeverity(ERR_EXT_REDEFINITION); + int errCaseRedef = smiGetErrorSeverity(ERR_CASE_REDEFINITION); + int errExtCaseRedef = smiGetErrorSeverity(ERR_EXT_CASE_REDEFINITION); + + if (! (parser->flags & SMI_FLAG_ERRORS) + || (errRedef > smiHandle->errorLevel + && errExtRedef > smiHandle->errorLevel + && errCaseRedef > smiHandle->errorLevel + && errExtCaseRedef > smiHandle->errorLevel)) { + return; + } + + /* + * This would really benefit from having a hash table... + */ + + for (modPtr = smiHandle->firstModulePtr; + modPtr; modPtr = modPtr->nextPtr) { + + /* + * Skip all external modules if we are not interested in + * generating warning on extern redefinitions. + */ + + if (errExtRedef > smiHandle->errorLevel + && errExtCaseRedef > smiHandle->errorLevel + && modPtr != module) { + continue; + } + + for (objectPtr = modPtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + if (! (objectPtr->flags & FLAG_INCOMPLETE) + && ! strcasecmp(name, objectPtr->export.name)) { + redefinition(parser, 0, name, + modPtr == module ? NULL : objectPtr->modulePtr, + objectPtr->line, objectPtr->export.name); + } + } + for (typePtr = modPtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + /* TODO: must ignore SEQUENCE types here ... */ + if (! (typePtr->flags & FLAG_INCOMPLETE) + && typePtr->export.name + && !strcasecmp(name, typePtr->export.name)) { + redefinition(parser, 0, name, + modPtr == module ? NULL : typePtr->modulePtr, + typePtr->line, typePtr->export.name); + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckTypeName -- + * + * Check whether a given type name already exists + * in a given module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckTypeName(Parser *parser, Module *module, char *name, int line) +{ + Object *objectPtr; + Type *typePtr; + Module *modPtr; + + int errRedef = smiGetErrorSeverity(ERR_REDEFINITION); + int errExtRedef = smiGetErrorSeverity(ERR_EXT_REDEFINITION); + int errCaseRedef = smiGetErrorSeverity(ERR_CASE_REDEFINITION); + int errExtCaseRedef = smiGetErrorSeverity(ERR_EXT_CASE_REDEFINITION); + + if (! (parser->flags & SMI_FLAG_ERRORS) + || (errRedef > smiHandle->errorLevel + && errExtRedef > smiHandle->errorLevel + && errCaseRedef > smiHandle->errorLevel + && errExtCaseRedef > smiHandle->errorLevel)) { + return; + } + + /* + * This would really benefit from having a hash table... + */ + + for (modPtr = smiHandle->firstModulePtr; + modPtr; modPtr = modPtr->nextPtr) { + + /* + * Skip all external modules if we are not interested in + * generating warning on extern redefinitions. + */ + + if (errExtRedef > smiHandle->errorLevel + && errExtCaseRedef > smiHandle->errorLevel + && modPtr != module) { + continue; + } + + for (typePtr = modPtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + /* TODO: must ignore SEQUENCE types here ... */ + if (! (typePtr->flags & FLAG_INCOMPLETE) + && typePtr->export.name + && !strcasecmp(name, typePtr->export.name)) { + redefinition(parser, line, name, + modPtr == module ? NULL : typePtr->modulePtr, + typePtr->line, typePtr->export.name); + } + } + + for (objectPtr = modPtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + if (! (objectPtr->flags & FLAG_INCOMPLETE) + && ! strcasecmp(name, objectPtr->export.name)) { + redefinition(parser, line, name, + modPtr == module ? NULL : objectPtr->modulePtr, + objectPtr->line, objectPtr->export.name); + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckFormat -- + * + * Check whether a format specification is valid. + * + * Results: + * Returns 1 of the format is acceptable and 0 otherwise. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +smiCheckFormat(Parser *parser, SmiBasetype basetype, char *format, int line) +{ + int n, repeat, error = 1; + char *p = format; + + switch (basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_INTEGER64: + case SMI_BASETYPE_UNSIGNED32: + case SMI_BASETYPE_UNSIGNED64: + if (*p == 'x' || *p == 'o' || *p == 'b') { + p++; + error = (*p != 0); + } else if (*p == 'd') { + p++; + if (! *p) { + error = 0; + break; + } + if (*p != '-') { + error = 0; + break; + } + for (n = 0, p++; *p && isdigit((int) *p); p++, n++) ; + error = (*p != 0 || n <= 0); + } + break; + case SMI_BASETYPE_OCTETSTRING: + while (*p) { + if ((repeat = (*p == '*'))) p++; /* part 1 */ + + for (n = 0; *p && isdigit((int) *p); p++, n++) ;/* part 2 */ + if (! *p || n == 0) { + break; + } + + if (*p != 'x' && *p != 'd' && *p != 'o' /* part 3 */ + && *p != 'a' && *p != 't') { + break; + } + p++; + + if (*p /* part 4 */ + && ! isdigit((int) *p) && *p != '*') p++; + + if (repeat && *p /* part 5 */ + && ! isdigit((int) *p) && *p != '*') p++; + } + error = *p; + break; + default: + break; + } + + if (error) { + if (line) { + smiPrintErrorAtLine(parser, ERR_INVALID_FORMAT, line, format); + } else { + smiPrintError(parser, ERR_INVALID_FORMAT, format); + } + } + + return ! error; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckNamedNumberRedefinition -- + * + * Check whether named numbers redefine names or numbers. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNamedNumberRedefinition(Parser *parser, Type *type) +{ + List *list1Ptr, *list2Ptr; + NamedNumber *nn1Ptr, *nn2Ptr; + + if (! type || (type->export.basetype != SMI_BASETYPE_ENUM + && type->export.basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (list1Ptr = type->listPtr; + list1Ptr; list1Ptr = list1Ptr->nextPtr) { + + nn1Ptr = (NamedNumber *)(list1Ptr->ptr); + + for (list2Ptr = list1Ptr->nextPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + + nn2Ptr = (NamedNumber *)(list2Ptr->ptr); + + if (type->export.basetype == SMI_BASETYPE_ENUM) { + if (!strcmp(nn1Ptr->export.name, nn2Ptr->export.name)) { + smiPrintErrorAtLine(parser, ERR_ENUM_NAME_REDEFINITION, + type->line, + nn1Ptr->export.name); + } + if (nn1Ptr->export.value.value.integer32 + == nn2Ptr->export.value.value.integer32) { + smiPrintErrorAtLine(parser, ERR_ENUM_NUMBER_REDEFINITION, + type->line, + nn1Ptr->export.value.value.integer32); + } + } + if (type->export.basetype == SMI_BASETYPE_BITS) { + if (!strcmp(nn1Ptr->export.name, nn2Ptr->export.name)) { + smiPrintErrorAtLine(parser, ERR_BITS_NAME_REDEFINITION, + type->line, + nn1Ptr->export.name); + } + if (nn1Ptr->export.value.value.unsigned32 + == nn2Ptr->export.value.value.unsigned32) { + smiPrintErrorAtLine(parser, ERR_BITS_NUMBER_REDEFINITION, + type->line, + nn1Ptr->export.value.value.unsigned32); + } + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckNamedNumberSubtyping -- + * + * Check whether named numbers in a derived type are compatible + * with the named numbers in the parent type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNamedNumberSubtyping(Parser *parser, Type *type) +{ + List *list1Ptr, *list2Ptr; + NamedNumber *nn1Ptr, *nn2Ptr; + + if (! type || ! type->parentPtr || ! type->parentPtr->parentPtr + || (type->export.basetype != SMI_BASETYPE_ENUM + && type->export.basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (list1Ptr = type->listPtr; + list1Ptr; list1Ptr = list1Ptr->nextPtr) { + + nn1Ptr = (NamedNumber *)(list1Ptr->ptr); + + for (list2Ptr = type->parentPtr->listPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + + nn2Ptr = (NamedNumber *)(list2Ptr->ptr); + + if (type->export.basetype == SMI_BASETYPE_ENUM) { + if (! strcmp(nn1Ptr->export.name, nn2Ptr->export.name) + && nn1Ptr->export.value.value.integer32 + == nn2Ptr->export.value.value.integer32) { + break; + } + } + + if (type->export.basetype == SMI_BASETYPE_BITS) { + if (! strcmp(nn1Ptr->export.name, nn2Ptr->export.name) + && nn1Ptr->export.value.value.unsigned32 + == nn2Ptr->export.value.value.unsigned32) { + break; + } + } + } + + if (! list2Ptr) { + if (type->export.basetype == SMI_BASETYPE_ENUM) { + if (type->parentPtr->export.name) { + smiPrintErrorAtLine(parser, ERR_ENUM_SUBTYPE_OF, + type->line, + nn1Ptr->export.name, + nn1Ptr->export.value.value.integer32, + type->parentPtr->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_ENUM_SUBTYPE, + type->line, + nn1Ptr->export.name, + nn1Ptr->export.value.value.integer32); + } + } + if (type->export.basetype == SMI_BASETYPE_BITS) { + if (type->parentPtr->export.name) { + smiPrintErrorAtLine(parser, ERR_BITS_SUBTYPE_OF, + type->line, + nn1Ptr->export.name, + type->parentPtr->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_BITS_SUBTYPE, + type->line, + nn1Ptr->export.name); + } + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckNamedNumbersOrder -- + * + * Check and normalize the order of named numbers in a bits + * or enumeration type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNamedNumbersOrder(Parser *parser, Type *type) +{ + List *listPtr, *lastPtr, *nextPtr, *ptr; + NamedNumber *nnPtr; + int shutup = 0; + + if (! type || ! type->parentPtr + || (type->export.basetype != SMI_BASETYPE_ENUM + && type->export.basetype != SMI_BASETYPE_BITS)) { + return; + } + + /* Check whether the first bit has been given a name. */ + + if (type->export.basetype == SMI_BASETYPE_BITS) { + for (listPtr = type->listPtr; listPtr; listPtr = listPtr->nextPtr) { + nnPtr = (NamedNumber *)(listPtr->ptr); + if (nnPtr->export.value.value.unsigned32 == 0) break; + } + if (! listPtr) { + smiPrintErrorAtLine(parser, ERR_BITS_ZERO_NOT_NAMED, type->line); + } + } + + lastPtr = NULL; + for (listPtr = type->listPtr; listPtr; listPtr = nextPtr) { + + nextPtr = listPtr->nextPtr; + + nnPtr = (NamedNumber *)(listPtr->ptr); + + if (lastPtr) { + + if ((type->export.basetype == SMI_BASETYPE_ENUM) && + (((NamedNumber *)(listPtr->ptr))->export.value.value.integer32 <= + ((NamedNumber *)(lastPtr->ptr))->export.value.value.integer32)) { + if (!shutup) { + smiPrintErrorAtLine(parser, ERR_NAMED_NUMBERS_NOT_ASCENDING, + type->line, + type->export.name); + shutup = 1; + } + /* remove listPtr from the list */ + lastPtr->nextPtr = listPtr->nextPtr; + /* re-insert listPtr at the right position */ + if (((NamedNumber *)(type->listPtr->ptr))->export.value.value.integer32 > ((NamedNumber *)(listPtr->ptr))->export.value.value.integer32) { + listPtr->nextPtr = type->listPtr; + type->listPtr = listPtr; + } else { + for (ptr = type->listPtr; ptr; ptr = ptr->nextPtr) { + if ((!ptr->nextPtr) || + (((NamedNumber *)(ptr->nextPtr->ptr))->export.value.value.integer32 >= ((NamedNumber *)(listPtr->ptr))->export.value.value.integer32)) { + listPtr->nextPtr = ptr->nextPtr; + ptr->nextPtr = listPtr; + break; + } + } + } + /* set lastPtr to the last processed item */ + for (lastPtr = listPtr; lastPtr->nextPtr != nextPtr; + lastPtr = lastPtr->nextPtr); + continue; + } + if ((type->export.basetype == SMI_BASETYPE_BITS) && + (((NamedNumber *)(listPtr->ptr))->export.value.value.unsigned32 <= + ((NamedNumber *)(lastPtr->ptr))->export.value.value.unsigned32)) { + if (!shutup) { + smiPrintErrorAtLine(parser, ERR_NAMED_NUMBERS_NOT_ASCENDING, + type->line, + type->export.name); + shutup = 1; + } + /* remove listPtr from the list */ + lastPtr->nextPtr = listPtr->nextPtr; + /* re-insert listPtr at the right position */ + if (((NamedNumber *)(type->listPtr->ptr))->export.value.value.unsigned32 > ((NamedNumber *)(listPtr->ptr))->export.value.value.unsigned32) { + listPtr->nextPtr = type->listPtr; + type->listPtr = listPtr; + } else { + for (ptr = type->listPtr; ptr; ptr = ptr->nextPtr) { + if ((!ptr->nextPtr) || + (((NamedNumber *)(ptr->nextPtr->ptr))->export.value.value.unsigned32 > ((NamedNumber *)(listPtr->ptr))->export.value.value.unsigned32)) { + listPtr->nextPtr = ptr->nextPtr; + ptr->nextPtr = listPtr; + break; + } + } + } + /* set lastPtr to the last processed item */ + for (lastPtr = listPtr; lastPtr->nextPtr != nextPtr; + lastPtr = lastPtr->nextPtr); + continue; + } + } + lastPtr = listPtr; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckIndex -- + * + * Check whether an index conforms to the SMI restrictions. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckIndex(Parser *parser, Object *object) +{ + List *listPtr, *list2Ptr; + Object *indexPtr; + Type *typePtr, *rTypePtr; + Range *rangePtr; + NamedNumber *nnPtr; + Node *nodePtr; + int minSize, maxSize, len = 0; + int aux = 0, cols = 0, acc = 0; + + for (nodePtr = object->nodePtr->firstChildPtr, cols = 0; + nodePtr; nodePtr = nodePtr->nextPtr) { + cols++; + } + + for (listPtr = object->listPtr; listPtr; listPtr = listPtr->nextPtr) { + + indexPtr = (Object *) listPtr->ptr; + typePtr = indexPtr->typePtr; + + /* checkObjects() already handles unknown objects */ + if (indexPtr->export.nodekind != SMI_NODEKIND_COLUMN && + ((indexPtr->flags & FLAG_INCOMPLETE) == 0)) { + smiPrintErrorAtLine(parser, ERR_INDEX_NOT_COLUMN, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + + if (!typePtr) + continue; + + switch (typePtr->export.basetype) { + case SMI_BASETYPE_INTEGER32: + for (rTypePtr = typePtr; rTypePtr && ! rTypePtr->listPtr; + rTypePtr = rTypePtr->parentPtr) { + } + if (! rTypePtr) { + if (object->modulePtr != indexPtr->modulePtr) { + smiPrintErrorAtLine(parser, ERR_INDEX_NO_RANGE_MOD, + object->line, + indexPtr->modulePtr->export.name, + indexPtr->export.name, + object->export.name); + + } else { + smiPrintErrorAtLine(parser, ERR_INDEX_NO_RANGE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + } else { + for (list2Ptr = rTypePtr->listPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + rangePtr = (Range *) list2Ptr->ptr; + if (rangePtr->export.maxValue.value.integer32 < 0) { + smiPrintErrorAtLine(parser, ERR_INDEX_RANGE_NEGATIVE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + break; + } + } + } + len++; + break; + case SMI_BASETYPE_OCTETSTRING: + /* TODO: We need to check ranges of parent types as well + if this type does not have a range restriction. */ + for (rTypePtr = typePtr; rTypePtr && ! rTypePtr->listPtr; + rTypePtr = rTypePtr->parentPtr) { + } + minSize = 65535; + maxSize = -1; + if (! rTypePtr) { + if (object->modulePtr != indexPtr->modulePtr) { + smiPrintErrorAtLine(parser, ERR_INDEX_STRING_NO_SIZE_MOD, + object->line, + indexPtr->modulePtr->export.name, + indexPtr->export.name, + object->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_INDEX_STRING_NO_SIZE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + minSize = 0; + maxSize = 65535; + } else { + for (list2Ptr = rTypePtr->listPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + rangePtr = (Range *) list2Ptr->ptr; + if (rangePtr->export.minValue.value.integer32 < minSize) { + minSize = rangePtr->export.minValue.value.integer32; + } + if (rangePtr->export.maxValue.value.integer32 > maxSize) { + maxSize = rangePtr->export.maxValue.value.integer32; + } + } + if (minSize == 65535) { + minSize = 0; + } + if (maxSize < 0) { + maxSize = 65535; + } + } + len += maxSize; + if (minSize != maxSize) { + if (! (object->export.implied && (! listPtr->nextPtr))) { + len++; + } + } + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + if (object->modulePtr != indexPtr->modulePtr) { + smiPrintErrorAtLine(parser, ERR_INDEX_OID_NO_SIZE_MOD, + object->line, + indexPtr->modulePtr->export.name, + indexPtr->export.name, + object->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_INDEX_OID_NO_SIZE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + len += 128; + if (!indexPtr->export.implied) { + len++; + } + break; + case SMI_BASETYPE_UNSIGNED32: + len++; + break; + case SMI_BASETYPE_INTEGER64: + case SMI_BASETYPE_UNSIGNED64: + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + case SMI_BASETYPE_UNKNOWN: + smiPrintErrorAtLine(parser, ERR_INDEX_BASETYPE, object->line, + typePtr->export.name ? typePtr->export.name + : "[unknown]", + indexPtr->export.name, object->export.name); + break; + case SMI_BASETYPE_BITS: + /* TODO: BITS are somehow treated as octet strings - but + what is the max len? */ + break; + case SMI_BASETYPE_ENUM: + for (list2Ptr = typePtr->listPtr; + list2Ptr; list2Ptr = list2Ptr->nextPtr) { + + nnPtr = (NamedNumber *)(list2Ptr->ptr); + + if (nnPtr->export.value.value.integer32 < 0) { + smiPrintErrorAtLine(parser, ERR_INDEX_ENUM_NEGATIVE, + indexPtr->line, + indexPtr->export.name, + object->export.name); + break; + } + } + len++; + break; + } + + if (indexPtr->export.value.basetype != SMI_BASETYPE_UNKNOWN) { + smiPrintErrorAtLine(parser, ERR_INDEX_DEFVAL, + indexPtr->line, + indexPtr->export.name, + object->export.name); + } + + for (nodePtr = object->nodePtr->firstChildPtr; + nodePtr; nodePtr = nodePtr->nextPtr) { + if (indexPtr == nodePtr->lastObjectPtr) { + aux++; + break; + } + } + } + + if (object->export.oidlen + 1 + len > 128) { + smiPrintErrorAtLine(parser, ERR_INDEX_TOO_LARGE, object->line, + object->export.name, + (object->export.oidlen + 1 + len) - 128); + } + + /* RFC 2578 section 7.7: Auxiliary objects must be not-accessible except + in some interesting corner cases. */ + + for (listPtr = object->listPtr; listPtr; listPtr = listPtr->nextPtr) { + + indexPtr = (Object *) listPtr->ptr; + typePtr = indexPtr->typePtr; + + if (aux < cols) { + if ((parser->modulePtr->export.language == SMI_LANGUAGE_SMIV2) + && (indexPtr->nodePtr->parentPtr == object->nodePtr)) { + if (indexPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parser, ERR_INDEX_ACCESSIBLE, + object->line, + indexPtr->export.name, object->export.name); + } + } + } + + for (nodePtr = object->nodePtr->firstChildPtr, acc = 0; + nodePtr; nodePtr = nodePtr->nextPtr) { + if (indexPtr == nodePtr->lastObjectPtr + && indexPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + acc++; + } + } + } + + if ((parser->modulePtr->export.language == SMI_LANGUAGE_SMIV2) + && aux == cols && acc != 1) { + smiPrintErrorAtLine(parser, ERR_INDEX_NON_ACCESSIBLE, + object->line, object->export.name); + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckAugment -- + * + * Check whether a table augmentation conforms to the SMI + * restrictions. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckAugment(Parser *parser, Object *object) +{ + if (! object->relatedPtr) { + return; + } + + if (object->relatedPtr->export.nodekind != SMI_NODEKIND_ROW) { + smiPrintErrorAtLine(parser, ERR_AUGMENT_NO_ROW, object->line, + object->export.name, + object->relatedPtr->export.name); + return; + } + + if (object->relatedPtr->export.indexkind == SMI_INDEX_INDEX) + return; + + if (object->export.indexkind == SMI_INDEX_AUGMENT) + { + smiPrintErrorAtLine(parser, ERR_AUGMENT_NESTED, object->line, + object->export.name, + object->relatedPtr->export.name); + return; + } + + if (object->relatedPtr->export.indexkind != SMI_INDEX_SPARSE) { + smiPrintErrorAtLine(parser, ERR_EXTENDS_WRONG_ROW_TYPE, object->line, + object->export.name, + object->relatedPtr->export.name); + return; + } + + /* + * TODO: Check the size of the instance identifier and the OID + * for this entry node. + */ +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckTypeRanges -- + * + * Check whether all ranges of a given type are valid. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckTypeRanges(Parser *parser, Type *type) +{ + List *p, *nextPtr, *pp, *nextPP; + + for (p = type->listPtr; p; p = nextPtr) { + + nextPtr = p->nextPtr; + + ((Range *)p->ptr)->typePtr = type; + + if (type->export.basetype == SMI_BASETYPE_INTEGER32) { + if ((((Range *)p->ptr)->export.minValue.basetype == + SMI_BASETYPE_UNSIGNED32) && + (((Range *)p->ptr)->export.minValue.value.unsigned32 > + 2147483647)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.maxValue.basetype == + SMI_BASETYPE_UNSIGNED32) && + (((Range *)p->ptr)->export.maxValue.value.unsigned32 > + 2147483647)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + ((Range *)p->ptr)->export.minValue.basetype = + SMI_BASETYPE_INTEGER32; + ((Range *)p->ptr)->export.maxValue.basetype = + SMI_BASETYPE_INTEGER32; + } + + if (type->export.basetype == SMI_BASETYPE_UNSIGNED32) { + if ((((Range *)p->ptr)->export.minValue.basetype == + SMI_BASETYPE_INTEGER32) && + (((Range *)p->ptr)->export.minValue.value.integer32 < 0)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.maxValue.basetype == + SMI_BASETYPE_INTEGER32) && + (((Range *)p->ptr)->export.maxValue.value.integer32 < 0)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + ((Range *)p->ptr)->export.minValue.basetype = + SMI_BASETYPE_UNSIGNED32; + ((Range *)p->ptr)->export.maxValue.basetype = + SMI_BASETYPE_UNSIGNED32; + } + + if (type->export.basetype == SMI_BASETYPE_OCTETSTRING) { + if ((((Range *)p->ptr)->export.minValue.basetype == + SMI_BASETYPE_INTEGER32) && + (((Range *)p->ptr)->export.minValue.value.integer32 < 0)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.maxValue.basetype == + SMI_BASETYPE_INTEGER32) && + (((Range *)p->ptr)->export.maxValue.value.integer32 < 0)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.minValue.basetype == + SMI_BASETYPE_UNSIGNED32) && + (((Range *)p->ptr)->export.minValue.value.unsigned32 > 65535)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + if ((((Range *)p->ptr)->export.maxValue.basetype == + SMI_BASETYPE_UNSIGNED32) && + (((Range *)p->ptr)->export.maxValue.value.unsigned32 > 65535)) { + smiPrintError(parser, ERR_RANGE_OUT_OF_BASETYPE); + } + ((Range *)p->ptr)->export.minValue.basetype = + SMI_BASETYPE_UNSIGNED32; + ((Range *)p->ptr)->export.maxValue.basetype = + SMI_BASETYPE_UNSIGNED32; + } + + if (compareValues(&((Range *)p->ptr)->export.minValue, + &((Range *)p->ptr)->export.maxValue) > 0) { + SmiValue v; + v = ((Range *)p->ptr)->export.minValue; + ((Range *)p->ptr)->export.minValue = ((Range *)p->ptr)->export.maxValue; + ((Range *)p->ptr)->export.maxValue = v; + smiPrintError(parser, ERR_EXCHANGED_RANGE_LIMITS); + } + + /* sort */ + p->nextPtr = NULL; + if (p != type->listPtr) { + if (compareValues(&((Range *)p->ptr)->export.minValue, + &((Range *)type->listPtr->ptr)->export.minValue) <= 0) { + if (compareValues(&((Range *)p->ptr)->export.maxValue, + &((Range *)type->listPtr->ptr)->export.minValue) >= 0) { + smiPrintError(parser, ERR_RANGE_OVERLAP); + } + smiPrintError(parser, ERR_RANGES_NOT_ASCENDING); + p->nextPtr = type->listPtr; + type->listPtr = p; + } else { + for (pp = type->listPtr; pp; pp = nextPP) { + nextPP = pp->nextPtr; + if ((!nextPP) || + (compareValues(&((Range *)p->ptr)->export.minValue, + &((Range *)nextPP->ptr)->export.minValue) <= 0)) { + if (((nextPP) && + (compareValues(&((Range *)p->ptr)->export.maxValue, + &((Range *)nextPP->ptr)->export.minValue) >= 0)) || + (compareValues(&((Range *)p->ptr)->export.minValue, + &((Range *)pp->ptr)->export.maxValue) <= 0)) { + smiPrintError(parser, ERR_RANGE_OVERLAP); + } + p->nextPtr = pp->nextPtr; + pp->nextPtr = p; + if (p->nextPtr) { + smiPrintError(parser, ERR_RANGES_NOT_ASCENDING); + pp->nextPtr = NULL; + } + break; + } + } + } + } + } + + /* range normalization */ + for (p = type->listPtr, pp = p; p; p = nextPtr) { + nextPtr = p->nextPtr; + if (nextPtr && + compareValues(&((Range *)p->ptr)->export.maxValue, + &((Range *)nextPtr->ptr)->export.minValue) == -1) { + ((Range *)nextPtr->ptr)->export.minValue = + ((Range *)p->ptr)->export.minValue; + if (p == type->listPtr) { + type->listPtr = nextPtr; + pp = nextPtr; + } else { + pp->nextPtr = nextPtr; + } + smiFree(p); + } else { + pp = p; + } + } + +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckTypeFormat -- + * + * Check whether we know a format specification for integer types. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckTypeFormat(Parser *parser, Type *type) +{ + Type *t; + + if (! type || !type->export.name) { + return; + } + + if (type->export.basetype != SMI_BASETYPE_INTEGER32 + && type->export.basetype != SMI_BASETYPE_INTEGER64 + && type->export.basetype != SMI_BASETYPE_UNSIGNED32 + && type->export.basetype != SMI_BASETYPE_UNSIGNED64 + && type->export.basetype != SMI_BASETYPE_OCTETSTRING) { + return; + } + + for (t = type; t; t = t->parentPtr) { + if (t->export.format) { + break; + } + } + + if (! t) { + smiPrintErrorAtLine(parser, ERR_TYPE_WITHOUT_FORMAT, type->line, + type->export.name); + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckValueType -- + * + * Check whether a given value matches a given type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckValueType(Parser *parser, SmiValue *value, Type *type, int line) +{ + List *p, *nextPtr; + + if (value && (value->basetype != SMI_BASETYPE_UNKNOWN) && type) { + + /* + * If defval type and object type don't match, check whether + * the defval value is in the allowed range of the object's basetype. + */ + if ((type->export.basetype == SMI_BASETYPE_INTEGER32) || + (type->export.basetype == SMI_BASETYPE_ENUM)) { + if (((value->basetype == SMI_BASETYPE_INTEGER64) && + ((value->value.integer64 < (SmiInteger64)(-2147483647 - 1)) || + (value->value.integer64 > (SmiInteger64)2147483647))) || + ((value->basetype == SMI_BASETYPE_UNSIGNED32) && + ((value->value.unsigned32 > 2147483647))) || + ((value->basetype == SMI_BASETYPE_UNSIGNED64) && + ((value->value.unsigned32 > 2147483647)))) { + smiPrintErrorAtLine(parser, ERR_DEFVAL_OUT_OF_BASETYPE, line); + } + } + if (type->export.basetype == SMI_BASETYPE_UNSIGNED32) { + if (((value->basetype == SMI_BASETYPE_INTEGER64) && + ((value->value.integer64 < 0) || + (value->value.integer64 > (SmiInteger64)4294967295UL))) || + ((value->basetype == SMI_BASETYPE_INTEGER32) && + ((value->value.integer32 < 0))) || + ((value->basetype == SMI_BASETYPE_UNSIGNED64) && + ((value->value.unsigned32 > (SmiUnsigned32)4294967295UL)))) { + smiPrintErrorAtLine(parser, ERR_DEFVAL_OUT_OF_BASETYPE, line); + } + } + + /* + * "cast" the defval to the object's basetype. + */ + value->basetype = type->export.basetype; + + /* + * check whether the defval matches the object's range restriction. + */ + if ((value->basetype == SMI_BASETYPE_UNSIGNED32) || + (value->basetype == SMI_BASETYPE_UNSIGNED64) || + (value->basetype == SMI_BASETYPE_INTEGER32) || + (value->basetype == SMI_BASETYPE_INTEGER64)) { + for (p = type->listPtr; p; p = nextPtr) { + nextPtr = p->nextPtr; + if ((compareValues(&((Range *)p->ptr)->export.minValue, + value) <= 0) && + (compareValues(&((Range *)p->ptr)->export.maxValue, + value) >= 0)) { + break; + } + } + if ((p == NULL) && type->listPtr) { + smiPrintErrorAtLine(parser, ERR_DEFVAL_OUT_OF_RANGE, line); + } + } + + /* + * check whether the defval matches the object's enumeration. + */ + if (value->basetype == SMI_BASETYPE_ENUM) { + for (p = type->listPtr; p; p = nextPtr) { + nextPtr = p->nextPtr; + + if (((NamedNumber *)(p->ptr))->export.value.value.integer32 == + value->value.integer32) { + break; + } + } + if (p == NULL) { + smiPrintErrorAtLine(parser, ERR_DEFVAL_OUT_OF_ENUM, line); + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckDefault -- + * + * Check whether the default value (if present) matches the + * underlying type and restrictions. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckDefault(Parser *parser, Object *object) +{ + smiCheckValueType(parser, &object->export.value, object->typePtr, + object->line); +} + + + +/* + *---------------------------------------------------------------------- + * + * smiCheckTypeUsage -- + * + * Check whether the types of all objects are used appropriately. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +checkInetAddressType(Parser *parserPtr, Module *modulePtr, Object *objectPtr) +{ + Module *inetModulePtr = NULL; /* RFC 3291 */ + Type *inetAddressTypePtr = NULL; /* RFC 3291 */ + Type *inetAddressPtr = NULL; /* RFC 3291 */ + Node *nodePtr; + List *listPtr = NULL; + int i; + + const char *protected[] = { + "InetAddressIPv4", "InetAddressIPv6", + "InetAddressIPv4z", "InetAddressIPv6z", + "InetAddressDNS", NULL + }; + + inetModulePtr = findModuleByName("INET-ADDRESS-MIB"); + if (! inetModulePtr) { + return; + } + + inetAddressTypePtr = findTypeByModuleAndName(inetModulePtr, + "InetAddressType"); + inetAddressPtr = findTypeByModuleAndName(inetModulePtr, + "InetAddress"); + + if (!inetAddressTypePtr || !inetAddressPtr) { + return; + } + + /* check InetAddressType/InetAddress pair */ + if (smiTypeDerivedFrom(objectPtr->typePtr, inetAddressPtr)) { + Object *indexObject = NULL; + Object *entryObject = objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (entryObject) { + switch (entryObject->export.indexkind) { + case SMI_INDEX_INDEX: + indexObject = entryObject; + break; + case SMI_INDEX_AUGMENT: + indexObject = entryObject->relatedPtr; + break; + default: + /* xxx need to handle other index constructions */ + indexObject = NULL; + break; + } + } + if (indexObject) { + for (listPtr = indexObject->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + Object *iObject = (Object *) listPtr->ptr; + if (iObject + && iObject->typePtr == inetAddressTypePtr) { + break; + } + } + + } + if (! indexObject || ! listPtr) { + for (nodePtr = + objectPtr->nodePtr->parentPtr->firstChildPtr; + nodePtr && + nodePtr->subid < objectPtr->nodePtr->subid && + nodePtr->lastObjectPtr->typePtr != + inetAddressTypePtr; + nodePtr = nodePtr->nextPtr); + if (!nodePtr || + nodePtr->subid >= objectPtr->nodePtr->subid) { + smiPrintErrorAtLine(parserPtr, + ERR_INETADDRESS_WITHOUT_TYPE, + objectPtr->line); + } + } + } + + /* check InetAddressType subtyping */ + if (objectPtr->typePtr->parentPtr == inetAddressTypePtr) { + smiPrintErrorAtLine(parserPtr, + ERR_INETADDRESSTYPE_SUBTYPED, + objectPtr->line); + } + + /* check for TCs that should not be used directly */ + for (i = 0; protected[i]; i++) { + if (objectPtr->typePtr == findTypeByModuleAndName(inetModulePtr, + protected[i])) { + smiPrintErrorAtLine(parserPtr, + ERR_INETADDRESS_SPECIFIC, + objectPtr->line, + objectPtr->typePtr->export.name); + break; + } + } +} + + +static void +checkTransportAddressType(Parser *parserPtr, Module *modulePtr, Object *objectPtr) +{ + Module *transportModulePtr = NULL; /* RFC 3419 */ + Type *transportAddressTypePtr = NULL; /* RFC 3419 */ + Type *transportAddressPtr = NULL; /* RFC 3419 */ + Type *transportDomainPtr = NULL; /* RFC 3419 */ + Node *nodePtr; + List *listPtr = NULL; + int i; + + const char *protected[] = { + "TransportAddressIPv4", "TransportAddressIPv6", + "TransportAddressIPv4z", "TransportAddressIPv6z", + "TransportAddressDNS", "TransportAddressLocal", + NULL + }; + + transportModulePtr = findModuleByName("TRANSPORT-ADDRESS-MIB"); + if (! transportModulePtr) { + return; + } + + transportAddressTypePtr = findTypeByModuleAndName(transportModulePtr, + "TransportAddressType"); + transportAddressPtr = findTypeByModuleAndName(transportModulePtr, + "TransportAddress"); + transportDomainPtr = findTypeByModuleAndName(transportModulePtr, + "TransportDomain"); + + if (!transportAddressTypePtr || !transportAddressPtr || !transportDomainPtr) { + return; + } + + /* check TransportAddressType/TransportAddress pair */ + if (smiTypeDerivedFrom(objectPtr->typePtr, transportAddressPtr)) { + Object *indexObject = NULL; + Object *entryObject = objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (entryObject) { + switch (entryObject->export.indexkind) { + case SMI_INDEX_INDEX: + indexObject = entryObject; + break; + case SMI_INDEX_AUGMENT: + indexObject = entryObject->relatedPtr; + break; + default: + /* xxx need to handle other index constructions */ + indexObject = NULL; + break; + } + } + if (indexObject) { + for (listPtr = indexObject->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + Object *iObject = (Object *) listPtr->ptr; + if (iObject + && (iObject->typePtr == transportAddressTypePtr + || iObject->typePtr == transportDomainPtr)) { + break; + } + } + } + if (! indexObject || ! listPtr) { + for (nodePtr = + objectPtr->nodePtr->parentPtr->firstChildPtr; + nodePtr && + nodePtr->subid < objectPtr->nodePtr->subid && + nodePtr->lastObjectPtr->typePtr != + transportAddressTypePtr && + nodePtr->lastObjectPtr->typePtr != + transportDomainPtr; + nodePtr = nodePtr->nextPtr); + if (!nodePtr || + nodePtr->subid >= objectPtr->nodePtr->subid) { + smiPrintErrorAtLine(parserPtr, + ERR_TRANSPORTADDRESS_WITHOUT_TYPE, + objectPtr->line); + } + } + } + + /* check TransportAddressType subtyping */ + if (objectPtr->typePtr->parentPtr == transportAddressTypePtr) { + smiPrintErrorAtLine(parserPtr, + ERR_TRANSPORTADDRESSTYPE_SUBTYPED, + objectPtr->line); + } + + /* check for TCs that should not be used directly */ + for (i = 0; protected[i]; i++) { + if (objectPtr->typePtr == findTypeByModuleAndName(transportModulePtr, + protected[i])) { + smiPrintErrorAtLine(parserPtr, + ERR_TRANSPORTADDRESS_SPECIFIC, + objectPtr->line, + objectPtr->typePtr->export.name); + break; + } + } +} + + +void +smiCheckTypeUsage(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + Module *tcModulePtr = NULL; + Type *rowStatusPtr = NULL; + Type *storageTypePtr = NULL; + Type *taddressPtr = NULL; + Type *tdomainPtr = NULL; + NamedNumber *nnPtr; + Node *nodePtr; + + tcModulePtr = findModuleByName("SNMPv2-TC"); + if (tcModulePtr) { + rowStatusPtr = findTypeByModuleAndName(tcModulePtr, "RowStatus"); + storageTypePtr = findTypeByModuleAndName(tcModulePtr, "StorageType"); + taddressPtr = findTypeByModuleAndName(tcModulePtr, "TAddress"); + tdomainPtr = findTypeByModuleAndName(tcModulePtr, "TDomain"); + } + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + if (objectPtr->typePtr) { + + if (tcModulePtr) { + + /* check RowStatus DEFVAL */ + if (objectPtr->typePtr == rowStatusPtr) { + if ((objectPtr->export.value.value.integer32 >= 4) && + (objectPtr->export.value.value.integer32 <= 6)) { + nnPtr = findTypeNamedNumber(rowStatusPtr, + objectPtr->export.value.value.integer32); + smiPrintErrorAtLine(parserPtr, + ERR_ILLEGAL_ROWSTATUS_DEFAULT, + objectPtr->line, + nnPtr->export.name); + } + } + + /* check RowStatus read-create status */ + if (objectPtr->typePtr == rowStatusPtr) { + Object *entryObject + = objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (objectPtr->export.access != SMI_ACCESS_READ_WRITE + || !entryObject->export.create) { + smiPrintErrorAtLine(parserPtr, + ERR_ILLEGAL_ROWSTATUS_ACCESS, + objectPtr->line); + } + } + + /* check StorageType DEFVAL */ + if (objectPtr->typePtr == storageTypePtr) { + if ((objectPtr->export.value.value.integer32 >= 4) && + (objectPtr->export.value.value.integer32 <= 5)) { + nnPtr = findTypeNamedNumber(storageTypePtr, + objectPtr->export.value.value.integer32); + smiPrintErrorAtLine(parserPtr, + ERR_ILLEGAL_STORAGETYPE_DEFAULT, + objectPtr->line, + nnPtr->export.name); + } + } + + /* check TDomain/TAddress pair */ + if (smiTypeDerivedFrom(objectPtr->typePtr, taddressPtr)) { + for (nodePtr = + objectPtr->nodePtr->parentPtr->firstChildPtr; + nodePtr && + nodePtr->lastObjectPtr->typePtr != tdomainPtr; + nodePtr = nodePtr->nextPtr); + if (!nodePtr || + nodePtr->lastObjectPtr->typePtr != tdomainPtr) { + smiPrintErrorAtLine(parserPtr, + ERR_TADDRESS_WITHOUT_TDOMAIN, + objectPtr->line); + } + } + + } + checkInetAddressType(parserPtr, modulePtr, objectPtr); + checkTransportAddressType(parserPtr, modulePtr, objectPtr); + } + } +} + + +static char *status[] = { "Unknown", "current", "deprecated", + "mandatory", "optional", "obsolete" }; + +static int +memberOfGroup(Object *object, Object *group) +{ + List *listPtr; + + for (listPtr = group->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (listPtr->ptr == object) { + return 1; + } + } + return 0; +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckComplianceStatus -- + * + * Make sure that all groups and objects in a compliance statement + * are at least as current as the compliance itself. + * XXX I'm not sure I traversed the whole compliance statement, + * this at least covers the common case + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckComplianceStatus(Parser *parser, Object *compliance) +{ + List *listPtr, *groupListPtr; + Object *memberPtr; + Object *group; + + for (listPtr = compliance->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = (Object *) listPtr->ptr; + if (!memberPtr) + continue; + addObjectFlags(memberPtr, FLAG_INCOMPLIANCE); + if (memberPtr->export.status > compliance->export.status) { + smiPrintErrorAtLine(parser, ERR_COMPLIANCE_GROUP_STATUS, + compliance->line, + status[compliance->export.status], + compliance->export.name, + status[memberPtr->export.status], + memberPtr->export.name); + } + } + for (listPtr = compliance->optionlistPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = ((Option *) listPtr->ptr)->objectPtr; + addObjectFlags(memberPtr, FLAG_INCOMPLIANCE); + if (memberPtr->export.status > compliance->export.status) { + smiPrintErrorAtLine(parser, ERR_COMPLIANCE_GROUP_STATUS, + ((Option *) listPtr->ptr)->line, + status[compliance->export.status], + compliance->export.name, + status[memberPtr->export.status], + memberPtr->export.name); + } + } + for (listPtr = compliance->refinementlistPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = ((Refinement *) listPtr->ptr)->objectPtr; + + for (groupListPtr = compliance->listPtr; + groupListPtr; groupListPtr = groupListPtr->nextPtr) { + + group = (Object *) groupListPtr->ptr; + if (group && memberOfGroup(memberPtr, group)) { + break; + } + } + + if (! groupListPtr) { + for (groupListPtr = compliance->optionlistPtr; + groupListPtr; groupListPtr = groupListPtr->nextPtr) { + + group = ((Option *) groupListPtr->ptr)->objectPtr; + if (group && memberOfGroup(memberPtr, group)) { + break; + } + } + } + + if (! groupListPtr) { + smiPrintErrorAtLine(parser, ERR_REFINEMENT_NOT_LISTED, + ((Refinement *) listPtr->ptr)->line, + memberPtr->export.name); + } + + addObjectFlags(memberPtr, FLAG_INCOMPLIANCE); + if (memberPtr->export.status > compliance->export.status) { + smiPrintErrorAtLine(parser, ERR_COMPLIANCE_OBJECT_STATUS, + ((Refinement *) listPtr->ptr)->line, + status[compliance->export.status], + compliance->export.name, + status[memberPtr->export.status], + memberPtr->export.name); + } + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckGroupMembers -- + * + * Check whether only scalar and column nodes and notifications + * are contained in a conformance group. + * + * Also ensure that group members are at least as current + * as the group itself. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckGroupMembers(Parser *parser, Object *group) +{ + List *listPtr; + Object *memberPtr; + int scalarsOrColumns = 0; + int notifications = 0; + + for (listPtr = group->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = (Object *) listPtr->ptr; + + if (((memberPtr->export.nodekind == SMI_NODEKIND_COLUMN + || memberPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && memberPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) + || memberPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + if (memberPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + notifications++; + if (group->export.decl == SMI_DECL_OBJECTGROUP) { + smiPrintErrorAtLine(parser, + ERR_NOTIFICATION_IN_OBJECT_GROUP, + group->line, + group->export.name, + memberPtr->export.name); + } + } else { + scalarsOrColumns++; + if (group->export.decl == SMI_DECL_NOTIFICATIONGROUP) { + smiPrintErrorAtLine(parser, + ERR_OBJECT_IN_NOTIFICATION_GROUP, + group->line, + group->export.name, + memberPtr->export.name); + } + } + addObjectFlags(memberPtr, FLAG_INGROUP); + } else if (!(memberPtr->flags & FLAG_INCOMPLETE)) { + /* unknown OIDs are already flagged */ + smiPrintErrorAtLine(parser, ERR_INVALID_GROUP_MEMBER, + group->line, + memberPtr->export.name, + group->export.name); + } + if (memberPtr->export.status > group->export.status) { + smiPrintErrorAtLine(parser, ERR_GROUP_OBJECT_STATUS, + group->line, + status[group->export.status], + group->export.name, + status[memberPtr->export.status], + memberPtr->export.name); + } + } + + if (scalarsOrColumns && notifications) { + smiPrintErrorAtLine(parser, ERR_MIXED_GROUP_MEMBERS, + group->line, + group->export.name); + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckGroupMembership -- + * + * Check whether scalar and column nodes and notifications are + * contained in at least one conformance group. + * + * This function assumes that smiCheckGroupMembers() has been + * called on all group objects and smiCheckComplianceStatus() + * has been called on all compliance objects before. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckGroupMembership(Parser *parser, Object *objectPtr) +{ + int found; + + if (((objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) + || objectPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + + found = (objectPtr->flags & FLAG_INGROUP); + + if (! found) { + if (objectPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_NOT_IN_GROUP, + objectPtr->line, + objectPtr->export.name); + } else { + smiPrintErrorAtLine(parser, ERR_NODE_NOT_IN_GROUP, + objectPtr->line, + objectPtr->export.name); + } + } + } + if (objectPtr->export.nodekind == SMI_NODEKIND_GROUP) { + + found = (objectPtr->flags & FLAG_INCOMPLIANCE); + + if (!found && objectPtr->export.status != SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parser, ERR_GROUP_UNREF, + objectPtr->line, + status[objectPtr->export.status], + objectPtr->export.name); + } + } + +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckObjectReuse -- + * + * Check whether a newly defined Object represents a duplicate + * or a reused OID. + * + * Results: + * None. + * + * Side effects: + * Allocates a new Object and adjusts the objectPtr parameter. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckObjectReuse(Parser *parser, char *name, Object **objectPtr) +{ + if ((((*objectPtr)->flags & FLAG_INCOMPLETE) == 0) && + strcmp(name, (*objectPtr)->export.name)) { + if ((*objectPtr)->export.decl >= SMI_DECL_OBJECTTYPE) { + smiPrintError(parser, ERR_OID_REGISTERED, name, + (*objectPtr)->export.name); + } else { + smiPrintError(parser, ERR_OID_REUSE, name, + (*objectPtr)->export.name); + } + smiPrintErrorAtLine(parser, ERR_PREVIOUS_DEFINITION, + (*objectPtr)->line, (*objectPtr)->export.name); + *objectPtr = duplicateObject(*objectPtr, 0, parser); + } + + if ((*objectPtr)->modulePtr != parser->modulePtr) { + *objectPtr = duplicateObject(*objectPtr, 0, parser); + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckNotificationOid -- + * + * Check whether SMIv2 notifications are reversible and whether + * the last sub-identifer fits into a signed 32-bit integer. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNotificationOid(Parser *parser, Module *module, Object *object) +{ + static const char *name[] = { + "SNMPv2-MIB", "coldStart", + "SNMPv2-MIB", "warmStart", + "IF-MIB", "linkDown", + "IF-MIB", "linkUp", + "SNMPv2-MIB", "authenticationFailure", + /* egpNeighborLoss is not really defined in any SMI module */ + NULL, NULL }; + + int i; + + if (parser->modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + for (i = 0; name[i]; i+= 2) { + if (strcmp(name[i], module->export.name) == 0 + && strcmp(name[i+1], object->export.name) == 0) { + break; + } + } + if (! name[i]) { + Node *parent = object->nodePtr->parentPtr; + if (parent && parent->subid != 0) { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_NOT_REVERSIBLE, + object->line, object->export.name); + } + } + } + + if (object->nodePtr->subid > 2147483647) { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_ID_TOO_LARGE, + object->line, object->export.name); + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckNotificationMembers -- + * + * Check whether a newly defined notification contains only members + * of a single logical object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckNotificationMembers(Parser *parser, Object *object) +{ + List *listPtr; + Object *memberPtr; +#if 0 + Node *parent = NULL; +#endif + Node *node = NULL; + + for (listPtr = object->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + + memberPtr = (Object *) listPtr->ptr; + + if (memberPtr->export.nodekind == SMI_NODEKIND_SCALAR) { + if (memberPtr->nodePtr && memberPtr->nodePtr->parentPtr) { + node = memberPtr->nodePtr->parentPtr; + } + } else if (memberPtr->export.nodekind == SMI_NODEKIND_COLUMN) { + if (memberPtr->nodePtr && memberPtr->nodePtr->parentPtr + && memberPtr->nodePtr->parentPtr->parentPtr) { + node = memberPtr->nodePtr->parentPtr->parentPtr; + } + } else { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_OBJECT_TYPE, + object->line, memberPtr->export.name, + object->export.name); + } + + if (memberPtr->export.access == SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_OBJECT_ACCESS, + object->line, memberPtr->export.name, + object->export.name); + } + + /* xxx check for duplicates */ +#if 0 + if (node) { + if (! parent) { + parent = node; + } else { + if (parent != node) { + /* xxx do not report multiple times xxx */ + smiPrintErrorAtLine(parser, ERR_NOTIFICATION_OBJECT_MIX, + object->line, object->export.name); + } + } + } +#endif + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckUniqueness -- + * + * Check whether all entries for an UNIQUENESS clause are in fact + * columns. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void smiCheckUniqueness(Parser *parser, Object *object) +{ + List *p; + + for (p = object->uniquenessPtr; p; p = p->nextPtr) { + Object *uniq = (Object *)p->ptr; + int found = 0; + List *pp; + + if (uniq && object->typePtr) { + for (pp = object->typePtr->listPtr; pp; pp = pp->nextPtr) + if (pp->ptr && + !strcmp(uniq->export.name, ((Object *)pp->ptr)->export.name)) { + found = 1; + break; + } + if (!found) { + if (((object->export.indexkind == SMI_INDEX_AUGMENT) || + (object->export.indexkind == SMI_INDEX_SPARSE)) && + (object->relatedPtr && object->relatedPtr->typePtr)) { + for (pp = object->relatedPtr->typePtr->listPtr; pp; + pp = pp->nextPtr) + if (pp->ptr && + !strcmp(uniq->export.name, ((Object *)pp->ptr)->export.name)) { + found = 1; + break; + } + } + } + if (!found) + smiPrintErrorAtLine(parser, ERR_NOT_A_COLUMN, + object->line, uniq->export.name); + } + } +} + +/* + *---------------------------------------------------------------------- + * + * smiCheckModuleIdentityRegistration -- + * + * Check whether the module identity is registered in a well + * known (IANA) controlled location. In particular, warn if + * the OID is below iso(1).org(3).dod(6).mgmt(1) and not + * below well known registration locations such as mib-2, + * transmission, or snmpModules. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiCheckModuleIdentityRegistration(Parser *parser, Object *object) +{ + static const SmiSubid mgmt[] = { 1, 3, 6, 1, 2 }; + static const SmiSubid mib2[] = { 1, 3, 6, 1, 2, 1 }; + static const SmiSubid transmission[] = { 1, 3, 6, 1, 2, 1, 10 }; + static const SmiSubid snmpModules[] = { 1, 3, 6, 1, 6, 3 }; + + if (object->export.oidlen < sizeof(mgmt)/sizeof(SmiSubid) + || memcmp(object->export.oid, mgmt, sizeof(mgmt)) != 0) { + return; + } + + if (object->export.oidlen == sizeof(mib2)/sizeof(SmiSubid) + 1 + && memcmp(object->export.oid, mib2, sizeof(mib2)) == 0) { + return; + } + + if (object->export.oidlen == sizeof(transmission)/sizeof(SmiSubid) + 1 + && memcmp(object->export.oid, transmission, sizeof(transmission)) == 0) { + return; + } + + if (object->export.oidlen == sizeof(snmpModules)/sizeof(SmiSubid) + 1 + && memcmp(object->export.oid, snmpModules, sizeof(snmpModules)) == 0) { + return; + } + + smiPrintErrorAtLine(parser, ERR_MODULE_IDENTITY_REGISTRATION, + object->line); +} + +/* + *---------------------------------------------------------------------- + * + * smiyyerror -- + * + * Prints an error message from the parser. In SMIv1 and v2, + * a common error is to terminate a comment early, so if the + * current line contains a comment (parserPtr->lcline) print + * the ERR_COMMENT_TERMINATES. + * + *---------------------------------------------------------------------- + */ +void smiyyerror(char *msg, Parser *parserPtr) +{ + if (parserPtr->line == parserPtr->lcline && + parserPtr->modulePtr && + (parserPtr->modulePtr->export.language == SMI_LANGUAGE_SMIV1 || + parserPtr->modulePtr->export.language == SMI_LANGUAGE_SMIV2)) + smiPrintError(parserPtr, ERR_COMMENT_TERMINATES); + smiPrintError(parserPtr, ERR_OTHER_ERROR, msg); +} diff --git a/lib/check.h b/lib/check.h new file mode 100644 index 0000000..0b9b9ff --- /dev/null +++ b/lib/check.h @@ -0,0 +1,71 @@ +/* + * check.h -- + * + * Definitions for the semantic check functions. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: check.h 2032 2005-01-06 23:58:00Z schoenw $ + */ + +#ifndef _CHECK_H +#define _CHECK_H + + +#include "data.h" +#include "smi.h" + + +extern void smiCheckObjectName(Parser *parser, Module *module, char *name); + +extern void smiCheckTypeName(Parser *parser, + Module *module, char *name, int line); + +extern int smiCheckFormat(Parser *parser, + SmiBasetype basetype, char *format, int line); + +extern void smiCheckTypeRanges(Parser *parser, Type *type); + +extern void smiCheckTypeFormat(Parser *parser, Type *type); + +extern void smiCheckTypeUsage(Parser *parserPtr, Module *modulePtr); + +extern void smiCheckValueType(Parser *parser, SmiValue *value, Type *type, + int line); + +extern void smiCheckDefault(Parser *parser, Object *object); + +extern void smiCheckComplianceStatus(Parser *parser, Object *compliance); + +extern void smiCheckNamedNumberRedefinition(Parser *parser, Type *type); + +extern void smiCheckNamedNumberSubtyping(Parser *parser, Type *type); + +extern void smiCheckNamedNumbersOrder(Parser *parser, Type *type); + +extern void smiCheckIndex(Parser *parser, Object *object); + +extern void smiCheckAugment(Parser *parser, Object *object); + +extern void smiCheckGroupMembership(Parser *parser, Object *object); + +extern void smiCheckGroupMembers(Parser *parser, Object *group); + +extern void smiCheckObjectReuse(Parser *parser, + char *name, Object **objectPtr); + +extern void smiCheckNotificationOid(Parser *parser, Module *module, + Object *object); + +extern void smiCheckNotificationMembers(Parser *parser, Object *object); + +extern void smiCheckUniqueness(Parser *parser, Object *object); + +extern void smiCheckModuleIdentityRegistration(Parser *parser, Object *object); + +extern void smiyyerror(char *msg, Parser *parserPtr); + +#endif /* _CHECK_H */ diff --git a/lib/data.c b/lib/data.c new file mode 100644 index 0000000..b3868cc --- /dev/null +++ b/lib/data.c @@ -0,0 +1,4802 @@ +/* + * data.c -- + * + * Operations on the main data structures. + * + * Copyright (c) 1999-2002 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: data.c 7822 2008-03-01 13:22:42Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#if !defined(_MSC_VER) && !defined(__MINGW32__) +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "data.h" +#include "smi.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +#ifdef BACKEND_SMI +#include "scanner-smi.h" +extern int smiparse(); +#endif + +#ifdef BACKEND_SMING +#include "scanner-sming.h" +extern int smingparse(); +#endif + +#define stringKind(kind) ( \ + (kind == KIND_ANY) ? "ANY" : \ + (kind == KIND_MODULE) ? "MODULE" : \ + (kind == KIND_MACRO) ? "MACRO" : \ + (kind == KIND_TYPE) ? "TYPE" : \ + (kind == KIND_OBJECT) ? "OBJECT" : \ + (kind == KIND_IMPORT) ? "IMPORT" : \ + "unknown" ) + + +int smiDepth = 0; +static Handle *firstHandlePtr = NULL; +static Handle *lastHandlePtr = NULL; + + +/* + *---------------------------------------------------------------------- + * + * addHandle -- + * + * Adds a libsmi handle with a given name. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Handle *addHandle(const char *name) +{ + Handle *handlePtr; + + handlePtr = (Handle *) smiMalloc(sizeof(Handle)); + + handlePtr->name = smiStrdup(name); + + handlePtr->nextPtr = NULL; + handlePtr->prevPtr = lastHandlePtr; + if (!firstHandlePtr) firstHandlePtr = handlePtr; + if (lastHandlePtr) lastHandlePtr->nextPtr = handlePtr; + lastHandlePtr = handlePtr; + + return (handlePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * removeHandle -- + * + * Removes a given libsmi handle. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void removeHandle(Handle *handlePtr) +{ + if (handlePtr->prevPtr) { + handlePtr->prevPtr->nextPtr = handlePtr->nextPtr; + } else { + firstHandlePtr = handlePtr->nextPtr; + } + if (handlePtr->nextPtr) { + handlePtr->nextPtr->prevPtr = handlePtr->prevPtr; + } else { + lastHandlePtr = handlePtr->prevPtr; + } + + smiFree(handlePtr->name); + smiFree(handlePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * findHandleByName -- + * + * Lookup an libsmi handle by its name. + * + * Results: + * A pointer to the Handle structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Handle *findHandleByName(const char *name) +{ + Handle *handlePtr; + + if (!name) + return NULL; + + for (handlePtr = firstHandlePtr; handlePtr; + handlePtr = handlePtr->nextPtr) { + if (!strcmp(handlePtr->name, name)) { + return (handlePtr); + } + } + + return NULL; + +} + + + +/* + *---------------------------------------------------------------------- + * + * addView -- + * + * Add a module to the `view' (the list of modules, seen by the user). + * + * Results: + * A pointer to the new View structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +View *addView(const char *modulename) +{ + View *viewPtr; + + viewPtr = (View *) smiMalloc(sizeof(View)); + + viewPtr->name = smiStrdup(modulename); + viewPtr->nextPtr = NULL; + viewPtr->prevPtr = smiHandle->lastViewPtr; + if (!smiHandle->firstViewPtr) smiHandle->firstViewPtr = viewPtr; + if (smiHandle->lastViewPtr) smiHandle->lastViewPtr->nextPtr = viewPtr; + smiHandle->lastViewPtr = viewPtr; + + return (viewPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * isInView -- + * + * Check, whether a given module is in the current view. + * + * Results: + * != 0 if in view, 0 otherwise. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int isInView(const char *modulename) +{ + View *viewPtr; + +#if 0 + if (smiHandle->flags & SMI_FLAG_VIEWALL) { + return 1; + } +#endif + + for (viewPtr = smiHandle->firstViewPtr; viewPtr; viewPtr = viewPtr->nextPtr) { + if (!strcmp(modulename, viewPtr->name)) { + return 1; + } + } + return 0; +} + + +/* + *---------------------------------------------------------------------- + * + * addModule -- + * + * Create a new MIB module. + * + * Results: + * A pointer to the new Module structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Module *addModule(char *modulename, char *path, ModuleFlags flags, + Parser *parserPtr) +{ + Module *modulePtr; + + modulePtr = (Module *) smiMalloc(sizeof(Module)); + + modulePtr->export.name = modulename; + modulePtr->export.path = path; + modulePtr->export.language = SMI_LANGUAGE_UNKNOWN; + modulePtr->export.organization = NULL; + modulePtr->export.contactinfo = NULL; + modulePtr->export.description = NULL; + modulePtr->export.reference = NULL; + modulePtr->export.conformance = 0; + + modulePtr->lastUpdated = 0; + modulePtr->flags = flags; + modulePtr->objectPtr = NULL; + + modulePtr->prefixNodePtr = NULL; + modulePtr->firstObjectPtr = NULL; + modulePtr->lastObjectPtr = NULL; + modulePtr->firstTypePtr = NULL; + modulePtr->lastTypePtr = NULL; + modulePtr->firstMacroPtr = NULL; + modulePtr->lastMacroPtr = NULL; + modulePtr->firstImportPtr = NULL; + modulePtr->lastImportPtr = NULL; + modulePtr->firstRevisionPtr = NULL; + modulePtr->lastRevisionPtr = NULL; + + modulePtr->numImportedIdentifiers = 0; + modulePtr->numStatements = 0; + modulePtr->numModuleIdentities = 0; + + modulePtr->nextPtr = NULL; + modulePtr->prevPtr = smiHandle->lastModulePtr; + if (!smiHandle->firstModulePtr) smiHandle->firstModulePtr = modulePtr; + if (smiHandle->lastModulePtr) smiHandle->lastModulePtr->nextPtr = modulePtr; + smiHandle->lastModulePtr = modulePtr; + + return (modulePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleIdentityObject -- + * + * Set the objectPtr of a given Module to the OBJECT-IDENTITY object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleIdentityObject(Module *modulePtr, Object *objectPtr) +{ + modulePtr->objectPtr = objectPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleLastUpdated -- + * + * Set the lastUpdated time_t value of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleLastUpdated(Module *modulePtr, time_t lastUpdated) +{ + modulePtr->lastUpdated = lastUpdated; +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleOrganization -- + * + * Set the organization string of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleOrganization(Module *modulePtr, char *organization) +{ + modulePtr->export.organization = organization; + while (strlen(organization) && organization[strlen(organization)-1] == '\n') { + organization[strlen(organization) - 1] = 0; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleContactInfo -- + * + * Set the contactInfo string of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleContactInfo(Module *modulePtr, char *contactinfo) +{ + modulePtr->export.contactinfo = contactinfo; +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleDescription -- + * + * Set the description string of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleDescription(Module *modulePtr, char *description, + Parser *parserPtr) +{ + if (modulePtr->export.description) + smiFree(modulePtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + modulePtr->export.description = NULL; + } else { + modulePtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setModuleReference -- + * + * Set the reference string of a given Module. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setModuleReference(Module *modulePtr, char *reference, Parser *parserPtr) +{ + if (modulePtr->export.reference) + smiFree(modulePtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + modulePtr->export.reference = NULL; + } else { + modulePtr->export.reference = reference; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * findModuleByName -- + * + * Lookup a Module by a given name. + * + * Results: + * A pointer to the Module structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Module *findModuleByName(const char *modulename) +{ + Module *modulePtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + if ((modulePtr->export.name) && + !strcmp(modulePtr->export.name, modulename)) { + return (modulePtr); + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * addRevision -- + * + * Adds a revision entry for the given module. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Revision *addRevision(time_t date, char *description, Parser *parserPtr) +{ + Revision *revisionPtr, *r; + Module *modulePtr; + + revisionPtr = (Revision *) smiMalloc(sizeof(Revision)); + + modulePtr = parserPtr->modulePtr; + + revisionPtr->modulePtr = modulePtr; + revisionPtr->export.date = date; + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + revisionPtr->export.description = NULL; + } else { + revisionPtr->export.description = description; + } + revisionPtr->line = parserPtr ? parserPtr->line : -1; + + for (r = modulePtr->lastRevisionPtr; r; r = r->prevPtr) { + if (r->export.date > date) break; + } + if (r) { + revisionPtr->nextPtr = r->nextPtr; + revisionPtr->prevPtr = r; + if (r->nextPtr) { + r->nextPtr->prevPtr = revisionPtr; + } else { + modulePtr->lastRevisionPtr = revisionPtr; + } + r->nextPtr = revisionPtr; + } else { + revisionPtr->prevPtr = NULL; + if (modulePtr->firstRevisionPtr) { + modulePtr->firstRevisionPtr->prevPtr = revisionPtr; + revisionPtr->nextPtr = modulePtr->firstRevisionPtr; + } else { + modulePtr->lastRevisionPtr = revisionPtr; + revisionPtr->nextPtr = NULL; + } + modulePtr->firstRevisionPtr = revisionPtr; + } + + return (revisionPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setRevisionLine -- + * + * Set the line of definition of a given Revision. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setRevisionLine(Revision *revisionPtr, int line, Parser *parserPtr) +{ + if (line) { + revisionPtr->line = line; + } else { + revisionPtr->line = parserPtr ? parserPtr->line : -1; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * addImport -- + * + * Adds a descriptor to the actual module's list of imported + * descriptors. This list may be checked by checkImports() + * afterwards. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Import *addImport(char *name, Parser *parserPtr) +{ + Import *importPtr; + Module *modulePtr; + + importPtr = (Import *) smiMalloc(sizeof(Import)); + + modulePtr = parserPtr->modulePtr; + + importPtr->modulePtr = modulePtr; + importPtr->export.name = name; + importPtr->export.module = NULL; /* not yet known */ + importPtr->kind = KIND_UNKNOWN; /* not yet known */ + importPtr->use = 0; + importPtr->flags = 0; + importPtr->line = parserPtr ? parserPtr->line : -1; + + importPtr->nextPtr = NULL; + importPtr->prevPtr = modulePtr->lastImportPtr; + if (!modulePtr->firstImportPtr) + modulePtr->firstImportPtr = importPtr; + if (modulePtr->lastImportPtr) + modulePtr->lastImportPtr->nextPtr = importPtr; + modulePtr->lastImportPtr = importPtr; + + return (importPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * addImportFlags -- + * + * Add flags to the flags of a given Import struct. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void addImportFlags(Import *importPtr, ImportFlags flags) +{ + importPtr->flags |= flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * setImportModulename -- + * + * Set the modulename part of a given Import struct. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setImportModulename(Import *importPtr, char *modulename) +{ + if (importPtr->export.module) { + smiFree(importPtr->export.module); + } + importPtr->export.module = modulename; +} + + + +/* + *---------------------------------------------------------------------- + * + * checkImports -- + * + * Check wheather all descriptors in the actual module's list + * are imported by a given Module. Implicitly set all Imports' + * module names. + * + * Results: + * 0 on success or -1 on an error or number of descriptors not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int checkImports(Module *modulePtr, Parser *parserPtr) +{ + int n = 0; + Import *importPtr; + SmiNode *smiNode; + SmiType *smiType; + SmiMacro *smiMacro; + + for (importPtr = parserPtr->modulePtr->firstImportPtr; + importPtr; importPtr = importPtr->nextPtr) { + + if (importPtr->kind == KIND_UNKNOWN) { + if (modulePtr) { + if ((smiNode = smiGetNode(&modulePtr->export, + importPtr->export.name))) { + importPtr->export.module = + smiStrdup(modulePtr->export.name); + importPtr->kind = KIND_OBJECT; + } else if ((smiType = smiGetType(&modulePtr->export, + importPtr->export.name))) { + importPtr->export.module = + smiStrdup(modulePtr->export.name); + importPtr->kind = KIND_TYPE; + } else if ((smiMacro = smiGetMacro(&modulePtr->export, + importPtr->export.name))) { + importPtr->export.module = + smiStrdup(modulePtr->export.name); + importPtr->kind = KIND_MACRO; + } else { + n++; + importPtr->export.module = + smiStrdup(modulePtr->export.name); + smiPrintError(parserPtr, ERR_IDENTIFIER_NOT_IN_MODULE, + importPtr->export.name, + modulePtr->export.name); + importPtr->kind = KIND_NOTFOUND; + } + } else { + n++; + importPtr->export.module = smiStrdup(""); + importPtr->kind = KIND_NOTFOUND; + } + } + } + + return (n); +} + + + +/* + *---------------------------------------------------------------------- + * + * findImportByName -- + * + * Lookup an import descriptor by its name and the module to look in. + * + * Results: + * A pointer to the Import structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Import *findImportByName(const char *name, Module *modulePtr) +{ + Import *importPtr; + + if (!name) + return NULL; + + for (importPtr = modulePtr->firstImportPtr; importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importPtr->export.name, name)) && + (!(importPtr->flags & FLAG_INCOMPLIANCE))) { + return (importPtr); + } + } + + return NULL; + +} + + + +/* + *---------------------------------------------------------------------- + * + * findImportByModulenameAndName -- + * + * Lookup an import descriptor by its name and the modulename + * it is imported from and the module to look in. + * + * Results: + * A pointer to the Import structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Import *findImportByModulenameAndName(const char *modulename, + const char *name, Module *modulePtr) +{ + Import *importPtr; + + for (importPtr = modulePtr->firstImportPtr; importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importPtr->export.name, name)) && + (!strcmp(importPtr->export.module, modulename))) { + return (importPtr); + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * addObject -- + * + * Create a new Object and Node or update an existing one. + * Also updates other Objects and Nodes according + * to the PendingNode information. + * + * Results: + * A pointer to the new Object structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *addObject(char *objectname, Node *parentNodePtr, SmiSubid subid, + ObjectFlags flags, Parser *parserPtr) +{ + Object *objectPtr; + Node *nodePtr; + Module *modulePtr; + + + objectPtr = (Object *) smiMalloc(sizeof(Object)); + + modulePtr = parserPtr ? parserPtr->modulePtr : NULL; + + objectPtr->export.name = objectname; + objectPtr->export.decl = SMI_DECL_UNKNOWN; + objectPtr->export.access = SMI_ACCESS_UNKNOWN; + objectPtr->export.status = SMI_STATUS_UNKNOWN; + objectPtr->export.format = NULL; + objectPtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + objectPtr->export.units = NULL; + objectPtr->export.description = NULL; + objectPtr->export.reference = NULL; + objectPtr->export.indexkind = SMI_INDEX_UNKNOWN; + objectPtr->export.implied = 0; + objectPtr->export.create = 0; + objectPtr->export.nodekind = SMI_NODEKIND_UNKNOWN; + + objectPtr->modulePtr = modulePtr; + objectPtr->nodePtr = NULL; + objectPtr->prevSameNodePtr = NULL; + objectPtr->nextSameNodePtr = NULL; + objectPtr->typePtr = NULL; + objectPtr->listPtr = NULL; + objectPtr->flags = flags; + objectPtr->line = parserPtr ? parserPtr->line : -1; + + objectPtr->uniquenessPtr = NULL; + + objectPtr->export.oidlen = 0; /* filled in by */ + objectPtr->export.oid = NULL; /* second pass. */ + + objectPtr->nextPtr = NULL; + if (modulePtr) { + objectPtr->prevPtr = modulePtr->lastObjectPtr; + if (!modulePtr->firstObjectPtr) + modulePtr->firstObjectPtr = objectPtr; + if (modulePtr->lastObjectPtr) + modulePtr->lastObjectPtr->nextPtr = objectPtr; + modulePtr->lastObjectPtr = objectPtr; + } else { + objectPtr->prevPtr = NULL; + } + + /* + * Link it into the tree. + */ + nodePtr = findNodeByParentAndSubid(parentNodePtr, subid); + if ((parentNodePtr == parserPtr->pendingNodePtr) || (!nodePtr)) { + + /* a new Node has to be created for this Object */ + nodePtr = addNode(parentNodePtr, subid, flags, parserPtr); + nodePtr->firstObjectPtr = objectPtr; + nodePtr->lastObjectPtr = objectPtr; + } else { + + objectPtr->prevSameNodePtr = nodePtr->lastObjectPtr; + if (!nodePtr->firstObjectPtr) + nodePtr->firstObjectPtr = objectPtr; + if (nodePtr->lastObjectPtr) + nodePtr->lastObjectPtr->nextSameNodePtr = objectPtr; + nodePtr->lastObjectPtr = objectPtr; + } + objectPtr->nodePtr = nodePtr; + + return (objectPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * duplicateObject -- + * + * Create a new Object as a duplicate of a given one but with + * an affiliation to another module with new flags and with + * uninitialzied values. + * + * Results: + * A pointer to the new Object structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *duplicateObject(Object *templatePtr, ObjectFlags flags, + Parser *parserPtr) +{ + Object *objectPtr; + Node *nodePtr; + Module *modulePtr; + + objectPtr = (Object *) smiMalloc(sizeof(Object)); + + modulePtr = parserPtr->modulePtr; + nodePtr = templatePtr->nodePtr; + + objectPtr->export.name = NULL; + objectPtr->export.decl = SMI_DECL_UNKNOWN; + objectPtr->export.access = SMI_ACCESS_UNKNOWN; + objectPtr->export.status = SMI_STATUS_UNKNOWN; + objectPtr->export.format = NULL; + objectPtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + objectPtr->export.units = NULL; + objectPtr->export.description = NULL; + objectPtr->export.reference = NULL; + objectPtr->export.indexkind = SMI_INDEX_UNKNOWN; + objectPtr->export.implied = 0; + objectPtr->export.create = 0; + objectPtr->export.nodekind = SMI_NODEKIND_UNKNOWN; + + objectPtr->modulePtr = modulePtr; + objectPtr->nodePtr = nodePtr; + objectPtr->prevSameNodePtr = NULL; + objectPtr->nextSameNodePtr = NULL; + objectPtr->typePtr = NULL; + objectPtr->listPtr = NULL; + objectPtr->flags = flags; + objectPtr->line = parserPtr ? parserPtr->line : -1; + + objectPtr->export.oidlen = 0; /* filled in by */ + objectPtr->export.oid = NULL; /* second pass. */ + + objectPtr->nextPtr = NULL; + if (modulePtr) { + objectPtr->prevPtr = modulePtr->lastObjectPtr; + if (!modulePtr->firstObjectPtr) + modulePtr->firstObjectPtr = objectPtr; + if (modulePtr->lastObjectPtr) + modulePtr->lastObjectPtr->nextPtr = objectPtr; + modulePtr->lastObjectPtr = objectPtr; + } else { + objectPtr->prevPtr = NULL; + } + + objectPtr->prevSameNodePtr = nodePtr->lastObjectPtr; + if (!nodePtr->firstObjectPtr) + nodePtr->firstObjectPtr = objectPtr; + if (nodePtr->lastObjectPtr) + nodePtr->lastObjectPtr->nextSameNodePtr = objectPtr; + nodePtr->lastObjectPtr = objectPtr; + objectPtr->nodePtr = nodePtr; + + return (objectPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * addNode -- + * + * Create a new Node by a given parent Node and subid. + * + * Results: + * A pointer to the new Node structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *addNode (Node *parentNodePtr, SmiSubid subid, NodeFlags flags, + Parser *parserPtr) +{ + Node *nodePtr; + Node *c; + + nodePtr = (Node *) smiMalloc(sizeof(Node)); + + nodePtr->flags = flags; + nodePtr->subid = subid; + nodePtr->parentPtr = parentNodePtr; + nodePtr->firstChildPtr = NULL; + nodePtr->lastChildPtr = NULL; + nodePtr->firstObjectPtr = NULL; + nodePtr->lastObjectPtr = NULL; + + /* + * this cannot be set in all situations (pending sub trees). + * we delay it to the second pass. + */ + nodePtr->oidlen = 0; + nodePtr->oid = NULL; + + if (parentNodePtr) { + if (parentNodePtr->firstChildPtr) { + for (c = parentNodePtr->firstChildPtr; + c && (c->subid < subid); + c = c->nextPtr); + if (c) { + if (c != parentNodePtr->firstChildPtr) { + c->prevPtr->nextPtr = nodePtr; + nodePtr->prevPtr = c->prevPtr; + c->prevPtr = nodePtr; + nodePtr->nextPtr = c; + } else { + c->prevPtr = nodePtr; + nodePtr->nextPtr = c; + nodePtr->prevPtr = NULL; + parentNodePtr->firstChildPtr = nodePtr; + } + } else { + nodePtr->nextPtr = NULL; + nodePtr->prevPtr = parentNodePtr->lastChildPtr; + parentNodePtr->lastChildPtr->nextPtr = nodePtr; + parentNodePtr->lastChildPtr = nodePtr; + } + } else { + parentNodePtr->firstChildPtr = nodePtr; + parentNodePtr->lastChildPtr = nodePtr; + nodePtr->nextPtr = NULL; + nodePtr->prevPtr = NULL; + } + } + + return nodePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * createNodes -- + * + * Create all missing Nodes down the tree along all subids of + * a given Oid. + * + * Results: + * A pointer to the leaf Node structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *createNodes(unsigned int oidlen, SmiSubid *oid) +{ + Node *parentNodePtr, *nodePtr; + unsigned int i; + + parentNodePtr = smiHandle->rootNodePtr; + + for(i = 0; i < oidlen; i++) { + if (!(nodePtr = findNodeByParentAndSubid(parentNodePtr, oid[i]))) { + nodePtr = addNode(parentNodePtr, oid[i], 0, NULL); + } + parentNodePtr = nodePtr; + } + + return parentNodePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * createNodesByOidString -- + * + * Create all missing Nodes down the tree along all subids of + * a given Oid. + * + * Results: + * A pointer to the leaf Node structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *createNodesByOidString(const char *oid) +{ + char *p, *elements; + Node *parentNodePtr, *nodePtr; + SmiSubid subid; + + parentNodePtr = smiHandle->rootNodePtr; + elements = smiStrdup(oid); + + p = strtok(elements, "."); + do { + subid = (unsigned int)strtoul(p, NULL, 0); + if (!(nodePtr = findNodeByParentAndSubid(parentNodePtr, + subid))) { + nodePtr = addNode(parentNodePtr, subid, 0, NULL); + } + parentNodePtr = nodePtr; + } while ((p = strtok(NULL, "."))); + + smiFree(elements); + + return parentNodePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * getParentNode -- + * + * Return the parent of a given Node. + * + * Results: + * A pointer to the parent Node structure. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *getParentNode(Node *nodePtr) +{ + return nodePtr->parentPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * mergeNodeTrees -- + * + * Merge the subtree rooted at `from' into the `to' tree recursively + * and release the `from' tree. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void mergeNodeTrees(Node *toNodePtr, Node *fromNodePtr, + Parser *parserPtr) +{ + Node *nodePtr, *toChildPtr, *nextPtr; + Object *objectPtr; + + /* (1) merge lists of Objects for this node */ + if (fromNodePtr->firstObjectPtr) { + if (!toNodePtr->firstObjectPtr) { + toNodePtr->firstObjectPtr = fromNodePtr->firstObjectPtr; + toNodePtr->lastObjectPtr = fromNodePtr->lastObjectPtr; + } else { + fromNodePtr->firstObjectPtr->prevSameNodePtr = + toNodePtr->lastObjectPtr; + toNodePtr->lastObjectPtr->nextSameNodePtr = + fromNodePtr->firstObjectPtr; + toNodePtr->lastObjectPtr = fromNodePtr->lastObjectPtr; + } + } + for (objectPtr = fromNodePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextSameNodePtr) { + objectPtr->nodePtr = toNodePtr; + + } + + /* (2) loop: merge all first-level `from' sub-trees to `to' */ + /* adjust all `from' sub-nodes' parentPtrs */ + for (nodePtr = fromNodePtr->firstChildPtr; nodePtr; + nodePtr = nodePtr->nextPtr) { + nodePtr->parentPtr = toNodePtr; + } + if (!toNodePtr->firstChildPtr) { + /* + * if `to' has no sub-nodes, just move the `from' sub-nodes. + */ + toNodePtr->firstChildPtr = fromNodePtr->firstChildPtr; + toNodePtr->lastChildPtr = fromNodePtr->lastChildPtr; + } else { + /* + * otherwise, we really have to merge both trees... + */ + for (nodePtr = fromNodePtr->firstChildPtr; nodePtr; ) { + nextPtr = nodePtr->nextPtr; + if ((toChildPtr = findNodeByParentAndSubid(toNodePtr, + nodePtr->subid))) { + /* + * if a sub-node with the same subid is already present + * in `to', merge them recursively. + */ + mergeNodeTrees(toChildPtr, nodePtr, parserPtr); + } else { + /* + * otherwise, move the sub-tree from `from' to `to'. + */ + if (nodePtr->subid < toNodePtr->firstChildPtr->subid) { + /* move to the head. */ + nodePtr->nextPtr = toNodePtr->firstChildPtr; + toNodePtr->firstChildPtr = nodePtr; + } else if (nodePtr->subid > toNodePtr->lastChildPtr->subid) { + /* move to the end. */ + nodePtr->prevPtr = toNodePtr->lastChildPtr; + toNodePtr->lastChildPtr->nextPtr = nodePtr; + toNodePtr->lastChildPtr = nodePtr; + } else { + /* move to the appropriate place in the `to' list. */ + for (toChildPtr = toNodePtr->firstChildPtr; + toChildPtr->nextPtr->subid < nodePtr->subid; + toChildPtr = toChildPtr->nextPtr); + toChildPtr->nextPtr->prevPtr = nodePtr; + nodePtr->nextPtr = toChildPtr->nextPtr; + nodePtr->prevPtr = toChildPtr; + toChildPtr->nextPtr = nodePtr; + } + } + nodePtr = nextPtr; + } + } + + smiFree(fromNodePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectName -- + * + * Set the name of a given Object. Combine two Objects if the name + * already exists. + * + * Results: + * (Object *) of the potentially combined object. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *setObjectName(Object *objectPtr, char *name, Parser *parserPtr) +{ + Node *nodePtr, *nextPtr; + Module *modulePtr; + Object *newObjectPtr; + + if (objectPtr->export.name) { + smiFree(objectPtr->export.name); + } + objectPtr->export.name = name; + /* + * If this name is found on the pending list (at depth==1 in + * pendingRootNode), we have to move the corresponding subtree to + * the main tree. + */ + for (nodePtr = parserPtr->pendingNodePtr->firstChildPtr; nodePtr; + nodePtr = nextPtr) { + + /* + * probably we change the contents of `pending', so remember + * the next pointer. + */ + nextPtr = nodePtr->nextPtr; + + if (!strcmp(nodePtr->firstObjectPtr->export.name, name)) { + + /* + * remove nodePtr from the pendingRootNode tree. + */ + if (nodePtr->prevPtr) { + nodePtr->prevPtr->nextPtr = nodePtr->nextPtr; + } else { + parserPtr->pendingNodePtr->firstChildPtr = nodePtr->nextPtr; + } + if (nodePtr->nextPtr) { + nodePtr->nextPtr->prevPtr = nodePtr->prevPtr; + } else { + parserPtr->pendingNodePtr->lastChildPtr = nodePtr->prevPtr; + } + +#if 0 + objectPtr->nodePtr->firstObjectPtr = NULL; + objectPtr->nodePtr->lastObjectPtr = NULL; +#else + if (objectPtr->nodePtr->lastObjectPtr != NULL) { + if (objectPtr->nodePtr->lastObjectPtr->export.oid == NULL) { + objectPtr->nodePtr->lastObjectPtr = + objectPtr->nodePtr->lastObjectPtr->prevSameNodePtr; + if (objectPtr->nodePtr->lastObjectPtr == NULL) { + objectPtr->nodePtr->firstObjectPtr = NULL; + } + } + } +#endif + + newObjectPtr = nodePtr->firstObjectPtr; + if (newObjectPtr) { + modulePtr = newObjectPtr->modulePtr; + if (modulePtr->objectPtr == objectPtr) { + modulePtr->objectPtr = newObjectPtr; + } + if (modulePtr->firstObjectPtr == objectPtr) { + modulePtr->firstObjectPtr = objectPtr->nextPtr; + modulePtr->firstObjectPtr->prevPtr = NULL; + } + if (modulePtr->lastObjectPtr == objectPtr) { + modulePtr->lastObjectPtr = objectPtr->prevPtr; + modulePtr->lastObjectPtr->nextPtr = NULL; + } + + mergeNodeTrees(objectPtr->nodePtr, nodePtr, parserPtr); + smiFree(objectPtr->export.name); + smiFree(objectPtr); + return newObjectPtr; + } else { + return objectPtr; + } + } + } + return objectPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectType -- + * + * Set the type (pointer to a Type struct) of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectType(Object *objectPtr, Type *typePtr) +{ + objectPtr->typePtr = typePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectAccess -- + * + * Set the access of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectAccess(Object *objectPtr, SmiAccess access) +{ + objectPtr->export.access = access; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectStatus -- + * + * Set the status of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectStatus(Object *objectPtr, SmiStatus status) +{ + objectPtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectDescription -- + * + * Set the description of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectDescription(Object *objectPtr, char *description, + Parser *parserPtr) +{ + if (objectPtr->export.description) + smiFree(objectPtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + objectPtr->export.description = NULL; + } else { + objectPtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectReference -- + * + * Set the reference of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectReference(Object *objectPtr, char *reference, Parser *parserPtr) +{ + if (objectPtr->export.reference) + smiFree(objectPtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + objectPtr->export.reference = NULL; + } else { + objectPtr->export.reference = reference; + } +} + + +/* + *---------------------------------------------------------------------- + * + * setObjectFormat -- + * + * Set the format of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectFormat(Object *objectPtr, char *format) +{ + if (objectPtr->export.format) smiFree(objectPtr->export.format); + objectPtr->export.format = format; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectUnits -- + * + * Set the units of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectUnits(Object *objectPtr, char *units) +{ + if (objectPtr->export.units) smiFree(objectPtr->export.units); + objectPtr->export.units = units; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectDecl -- + * + * Set the declaring macro of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectDecl(Object *objectPtr, SmiDecl decl) +{ + objectPtr->export.decl = decl; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectLine -- + * + * Set the line of definition of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectLine(Object *objectPtr, int line, Parser *parserPtr) +{ + if (line) { + objectPtr->line = line; + } else { + objectPtr->line = parserPtr ? parserPtr->line : -1; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectNodekind -- + * + * Set the language independant SmiNodekind of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectNodekind(Object *objectPtr, SmiNodekind nodekind) +{ + objectPtr->export.nodekind = nodekind; +} + + + +/* + *---------------------------------------------------------------------- + * + * addObjectFlags -- + * + * Add flags to the flags of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void addObjectFlags(Object *objectPtr, ObjectFlags flags) +{ + objectPtr->flags |= flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * deleteObjectFlags -- + * + * Delete flags from the flags of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void deleteObjectFlags(Object *objectPtr, ObjectFlags flags) +{ + objectPtr->flags &= ~flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * checkObjectFlag -- + * + * Check whether a given set of flags of a given Object are all set. + * + * Results: + * true if all named flags are set. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int checkObjectFlags(Object *objectPtr, ObjectFlags flags) +{ + return ((objectPtr->flags & flags) == flags); +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectIndex -- + * + * Set the list of INDEX elements of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +/* TODO remove me +void setObjectIndex(Object *objectPtr, Index *indexPtr) + Object *objectPtr; + Index *indexPtr; +{ + objectPtr->indexPtr = indexPtr; +} +*/ + + +/* + *---------------------------------------------------------------------- + * + * setObjectList -- + * + * Set the list of objects of a notification type or object group + * or the list of notifications of a notification group. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectList(Object *objectPtr, List *listPtr) +{ + objectPtr->listPtr = listPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectRelated -- + * + * Set the related object of a given object (e.g. SMIv2 AUGMENTS) + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectRelated(Object *objectPtr, Object *relatedPtr) +{ + objectPtr->relatedPtr = relatedPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectImplied -- + * + * Set the implied flag of a given object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectImplied(Object *objectPtr, int implied) +{ + objectPtr->export.implied = implied; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectCreate -- + * + * Set the create flag of a given (table entry) object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectCreate(Object *objectPtr, int create) +{ + objectPtr->export.create = create; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectIndexkind -- + * + * Set the indexkind of a given (table entry) object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectIndexkind(Object *objectPtr, SmiIndexkind indexkind) +{ + objectPtr->export.indexkind = indexkind; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectValue -- + * + * Set the default value pointer of a given Object. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectValue(Object *objectPtr, SmiValue *valuePtr) +{ + objectPtr->export.value = *valuePtr; + smiFree(valuePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectUniqueness -- + * + * Set the uniqueness entry of an object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setObjectUniqueness(Object *objectPtr, List *listPtr) +{ + objectPtr->uniquenessPtr = listPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setObjectInstallErrors -- + * + * Set the install errors entry of an object + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +/*void setObjectInstallErrors(Object *objectPtr, List *listPtr) +{ + objectPtr->installErrorsPtr = listPtr; +}*/ + + + +/* + *---------------------------------------------------------------------- + * + * findNodeByParentAndSubid -- + * + * Lookup a Node by a given parent and subid value. + * + * Results: + * A pointer to the Node structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *findNodeByParentAndSubid(Node *parentNodePtr, SmiSubid subid) +{ + Node *nodePtr; + + if (parentNodePtr && + (parentNodePtr != smiHandle->parserPtr->pendingNodePtr)) { + for (nodePtr = parentNodePtr->firstChildPtr; nodePtr; + nodePtr = nodePtr->nextPtr) { + if (nodePtr->subid == subid) { + return (nodePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNodeByOid -- + * + * Lookup a Node by a given array of numerical subids. + * + * Results: + * A pointer to the Node structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *findNodeByOid(unsigned int oidlen, SmiSubid *oid) +{ + Node *nodePtr; + unsigned int i; + + nodePtr = smiHandle->rootNodePtr; + for(i = 0; i < oidlen && nodePtr; i++) { + nodePtr = findNodeByParentAndSubid(nodePtr, oid[i]); + } + + return (nodePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNodeByOidString -- + * + * Lookup a Node by a given string of concatinated numerical subids. + * + * Results: + * A pointer to the Node structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Node *findNodeByOidString(char *oid) +{ + Node *nodePtr; + char *s; + char *p; + + s = smiStrdup(oid); + nodePtr = smiHandle->rootNodePtr; + for(p = strtok(s, ". "); p && nodePtr; p = strtok(NULL, ". ")) { + nodePtr = findNodeByParentAndSubid(nodePtr, atoi(p)); + } + + smiFree(s); + return (nodePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByNode -- + * + * Lookup an Object by a given Node. Note, that there might be + * multiple definitions for one node. + * + * Results: + * A pointer to the first Object structure in the current View or + * a pointer to the first Object if none is in the current View or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByNode(Node *nodePtr) +{ + Object *objectPtr; + Object *goodObjectPtr = NULL; + + /* first, try to find an object in the current view. */ + for (objectPtr = nodePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextSameNodePtr) { + if (isInView(objectPtr->modulePtr->export.name)) { + if (! goodObjectPtr) { + goodObjectPtr = objectPtr; + } else if (objectPtr->modulePtr->export.language + > goodObjectPtr->modulePtr->export.language) { + goodObjectPtr = objectPtr; + } + } + } + + return goodObjectPtr ? goodObjectPtr : nodePtr->firstObjectPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByModuleAndNode -- + * + * Lookup an Object by a given Node and Module. This is necessary + * since there might be different declarations in different modules + * for the same OID. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByModuleAndNode(Module *modulePtr, Node *nodePtr) +{ + Object *objectPtr; + + for (objectPtr = nodePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextSameNodePtr) { + if (objectPtr->modulePtr == modulePtr) { + return (objectPtr); + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByModulenameAndNode -- + * + * Lookup an Object by a given Node and Modulename. This is necessary + * since there might be different declarations in different modules + * for the same OID. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByModulenameAndNode(const char *modulename, Node *nodePtr) +{ + Object *objectPtr; + + for (objectPtr = nodePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextSameNodePtr) { + if (!strcmp(objectPtr->modulePtr->export.name, modulename)) { + return (objectPtr); + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByName -- + * + * Lookup an Object by a given name. Note, that + * there might be more than one Object with the same name. + * In this case, it is undefined which Object is returned. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByName(const char *objectname) +{ + Module *modulePtr; + Object *objectPtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextPtr) { + if ((objectPtr->export.name) && + !strcmp(objectPtr->export.name, objectname)) { + /* + * We return the first matching object. + * TODO: probably we should check if there are more matching + * objects, and give a warning if there's another one. + */ + return (objectPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNextObjectByName -- + * + * Lookup the next Object by a given name. Note, that + * there might be more than one Object with the same name. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findNextObjectByName(const char *objectname, Object *prevObjectPtr) +{ + Module *modulePtr; + Object *objectPtr; + + for (modulePtr = prevObjectPtr->modulePtr->nextPtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextPtr) { + if ((objectPtr->export.name) + && !strcmp(objectPtr->export.name, objectname)) { + /* + * We return the first matching object. + * TODO: probably we should check if there are more matching + * objects, and give a warning if there's another one. + */ + return (objectPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByModulenameAndName -- + * + * Lookup a Object by a given Module and name. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByModulenameAndName(const char *modulename, + const char *objectname) +{ + Module *modulePtr; + Object *objectPtr; + + modulePtr = findModuleByName(modulename); + + if (modulePtr) { + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextPtr) { + if ((objectPtr->export.name) && + !strcmp(objectPtr->export.name, objectname)) { + return (objectPtr); + } + } + } + + /* + * Some toplevel Objects seem to be always known. + */ + if ((!strcmp(objectname, "iso")) || + (!strcmp(objectname, "ccitt")) || + (!strcmp(objectname, "joint-iso-ccitt"))) { + return findObjectByName(objectname); + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findObjectByModuleAndName -- + * + * Lookup a Object by a given Module and name. + * + * Results: + * A pointer to the Object structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Object *findObjectByModuleAndName(Module *modulePtr, const char *objectname) +{ + Object *objectPtr; + + if (! objectname) { + return NULL; + } + + if (modulePtr) { + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextPtr) { + if ((objectPtr->export.name) && + !strcmp(objectPtr->export.name, objectname)) { + return (objectPtr); + } + } + } + + /* + * Some toplevel Objects seem to be always known. + */ + if ((!strcmp(objectname, "iso")) || + (!strcmp(objectname, "ccitt")) || + (!strcmp(objectname, "joint-iso-ccitt"))) { + return findObjectByName(objectname); + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * addType -- + * + * Create a new Type structure. + * + * Results: + * A pointer to the new Type structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *addType(char *type_name, SmiBasetype basetype, TypeFlags flags, + Parser *parserPtr) +{ + Type *typePtr; + Module *modulePtr; + + modulePtr = parserPtr ? parserPtr->modulePtr : NULL; + + typePtr = smiMalloc(sizeof(Type)); + + typePtr->export.name = type_name; + typePtr->export.basetype = basetype; + typePtr->export.decl = SMI_DECL_UNKNOWN; + typePtr->export.format = NULL; + typePtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + typePtr->export.units = NULL; + typePtr->export.status = SMI_STATUS_UNKNOWN; + typePtr->export.description = NULL; + typePtr->export.reference = NULL; + + typePtr->modulePtr = modulePtr; + typePtr->listPtr = NULL; + typePtr->flags = flags; + typePtr->parentPtr = NULL; + typePtr->line = parserPtr ? parserPtr->line : -1; + + typePtr->nextPtr = NULL; + if (modulePtr) { + typePtr->prevPtr = modulePtr->lastTypePtr; + if (!modulePtr->firstTypePtr) + modulePtr->firstTypePtr = typePtr; + if (modulePtr->lastTypePtr) + modulePtr->lastTypePtr->nextPtr = typePtr; + modulePtr->lastTypePtr = typePtr; + } else { + typePtr->prevPtr = NULL; + } + + return (typePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * duplicateType -- + * + * Create a new Type as a duplicate of a given one but with + * an affiliation to the current module. + * + * Results: + * A pointer to the new Type structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *duplicateType(Type *templatePtr, TypeFlags flags, Parser *parserPtr) +{ + Type *typePtr; + Module *modulePtr; + + typePtr = (Type *) smiMalloc(sizeof(Type)); + + modulePtr = parserPtr->modulePtr; + + typePtr->export.name = NULL; + typePtr->export.basetype = templatePtr->export.basetype; + typePtr->export.decl = SMI_DECL_IMPLICIT_TYPE; + typePtr->export.format = NULL; + typePtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + typePtr->export.units = NULL; + typePtr->export.status = templatePtr->export.status; + typePtr->export.description = NULL; + typePtr->export.reference = NULL; + + typePtr->modulePtr = modulePtr; + typePtr->listPtr = NULL; + typePtr->flags = templatePtr->flags; + typePtr->line = parserPtr ? parserPtr->line : -1; + + typePtr->nextPtr = NULL; + typePtr->prevPtr = modulePtr->lastTypePtr; + if (!modulePtr->firstTypePtr) + modulePtr->firstTypePtr = typePtr; + if (modulePtr->lastTypePtr) + modulePtr->lastTypePtr->nextPtr = typePtr; + modulePtr->lastTypePtr = typePtr; + + setTypeParent(typePtr, templatePtr); + + return (typePtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeName -- + * + * Set the name of a given Type. If it already exists, merge the + * two types. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *setTypeName(Type *typePtr, char *name) +{ + Type *type2Ptr; + List *listPtr; + + if (typePtr->export.name) { + smiFree(typePtr->export.name); + } + typePtr->export.name = smiStrdup(name); + + if (! typePtr->export.name) { + return typePtr; + } + + /* + * If a type with this name already exists, it must be a forward + * reference and both types have to be merged. + */ + for (type2Ptr = typePtr->modulePtr->firstTypePtr; type2Ptr; + type2Ptr = type2Ptr->nextPtr) { + + if (type2Ptr->export.name && + (!strcmp(type2Ptr->export.name, name)) && + (type2Ptr != typePtr)) { + + /* + * remove typePtr from the type list. + */ + if (typePtr->prevPtr) { + typePtr->prevPtr->nextPtr = typePtr->nextPtr; + } else { + typePtr->modulePtr->firstTypePtr = typePtr->nextPtr; + } + if (typePtr->nextPtr) { + typePtr->nextPtr->prevPtr = typePtr->prevPtr; + } else { + typePtr->modulePtr->lastTypePtr = typePtr->prevPtr; + } + + type2Ptr->export.basetype = typePtr->export.basetype; + type2Ptr->export.decl = typePtr->export.decl; + type2Ptr->export.format = typePtr->export.format; + type2Ptr->export.value = typePtr->export.value; + type2Ptr->export.units = typePtr->export.units; + type2Ptr->export.status = typePtr->export.status; + type2Ptr->export.description = typePtr->export.description; + type2Ptr->export.reference = typePtr->export.reference; + + type2Ptr->parentPtr = typePtr->parentPtr; + type2Ptr->listPtr = typePtr->listPtr; + type2Ptr->flags = typePtr->flags; + type2Ptr->line = typePtr->line; + + /* + * if it's an enum or bits type, we also have to adjust + * the references from the named numbers back to the type. + */ + if ((type2Ptr->export.basetype == SMI_BASETYPE_ENUM) || + (type2Ptr->export.basetype == SMI_BASETYPE_BITS)) { + for (listPtr = type2Ptr->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + ((NamedNumber *)(listPtr->ptr))->typePtr = type2Ptr; + } + } + + smiFree(typePtr->export.name); + smiFree(typePtr); + + return type2Ptr; + } + } + return typePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeParent -- + * + * Set the parent of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeParent(Type *typePtr, Type *parentPtr) +{ + typePtr->parentPtr = parentPtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeStatus -- + * + * Set the status of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeStatus(Type *typePtr, SmiStatus status) +{ + typePtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeBasetype -- + * + * Set the basetype of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeBasetype(Type *typePtr, SmiBasetype basetype) +{ + typePtr->export.basetype = basetype; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeDescription -- + * + * Set the description of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeDescription(Type *typePtr, char *description, Parser *parserPtr) +{ + if (typePtr->export.description) + smiFree(typePtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + typePtr->export.description = NULL; + } else { + typePtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeReference -- + * + * Set the reference of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeReference(Type *typePtr, char *reference, Parser *parserPtr) +{ + if (typePtr->export.reference) + smiFree(typePtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + typePtr->export.reference = NULL; + } else { + typePtr->export.reference = reference; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeList -- + * + * Set the pointer to a struct list. This used for + * - columns of a SEQUENCE type, + * - enumeration items of an enumeration integer type, + * - min-max pair items of a range restricted type, + * - min-max pars items of a size restricted type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeList(Type *typePtr, List *listPtr) +{ + if (!typePtr->listPtr) { + typePtr->listPtr = listPtr; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeFormat -- + * + * Set the format (displayHint) of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeFormat(Type *typePtr, char *format) +{ + if (typePtr->export.format) smiFree(typePtr->export.format); + typePtr->export.format = format; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeUnits -- + * + * Set the units of a given Type. Note: units of types are only + * present in SMIng, not in SMIv2. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeUnits(Type *typePtr, char *units) +{ + if (typePtr->export.units) smiFree(typePtr->export.units); + typePtr->export.units = units; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeDecl -- + * + * Set the declaring macro of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeDecl(Type *typePtr, SmiDecl decl) +{ + typePtr->export.decl = decl; +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeLine -- + * + * Set the line of definition of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeLine(Type *typePtr, int line, Parser *parserPtr) +{ + if (line) { + typePtr->line = line; + } else { + typePtr->line = parserPtr ? parserPtr->line : -1; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setTypeValue -- + * + * Set the default value pointer of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setTypeValue(Type *typePtr, SmiValue *valuePtr) +{ + typePtr->export.value = *valuePtr; +} + + + +/* + *---------------------------------------------------------------------- + * + * addTypeFlags -- + * + * Add flags to the flags of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void addTypeFlags(Type *typePtr, TypeFlags flags) +{ + typePtr->flags |= flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * deleteTypeFlags -- + * + * Delete flags from the flags of a given Type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void deleteTypeFlags(Type *typePtr, TypeFlags flags) +{ + typePtr->flags &= ~flags; +} + + + +/* + *---------------------------------------------------------------------- + * + * findTypeByName -- + * + * Lookup a Type by a given name. + * + * Results: + * A pointer to the Type structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type * findTypeByName(const char *type_name) +{ + Module *modulePtr; + Type *typePtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + if ((typePtr->export.name) && + !strcmp(typePtr->export.name, type_name)) { + return (typePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNextTypeByName -- + * + * Lookup the next Type by a given name. + * + * Results: + * A pointer to the Type structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *findNextTypeByName(const char *type_name, Type *prevTypePtr) +{ + Module *modulePtr; + Type *typePtr; + + for (modulePtr = prevTypePtr->modulePtr->nextPtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + if ((typePtr->export.name) && + !strcmp(typePtr->export.name, type_name)) { + return (typePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findTypeByModulenameAndName -- + * + * Lookup a Type by a given Module and name. + * + * Results: + * A pointer to the Type structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *findTypeByModulenameAndName(const char *modulename, + const char *type_name) +{ + Type *typePtr; + Module *modulePtr; + + modulePtr = findModuleByName(modulename); + + if (modulePtr) { + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + if ((typePtr->export.name) && !strcmp(typePtr->export.name, type_name)) { + return (typePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findTypeByModuleAndName -- + * + * Lookup a Type by a given Module and name. + * + * Results: + * A pointer to the Type structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Type *findTypeByModuleAndName(Module *modulePtr, const char *type_name) +{ + Type *typePtr; + + if (modulePtr) { + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + if ((typePtr->export.name) && + !strcmp(typePtr->export.name, type_name)) { + return (typePtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findTypeNamedNumber -- + * + * + * + * Results: + * + * Side effects: + * + *---------------------------------------------------------------------- */ + +NamedNumber *findTypeNamedNumber(Type *typePtr, + SmiInteger32 number) +{ + List *listPtr; + + for (listPtr = typePtr->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + if (((NamedNumber *)(listPtr->ptr))->export.value.value.integer32 == + number) + break; + } + + return (NamedNumber *)(listPtr->ptr); +} + + + +/* + *---------------------------------------------------------------------- + * + * addIdentity -- + * + * Create a new Identity structure. + * + * Results: + * A pointer to the new Identity structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- */ + +Identity *addIdentity(char *identityname, Parser *parserPtr) +{ + Identity *identityPtr; + Module *modulePtr; + + modulePtr = parserPtr->modulePtr; + + identityPtr = (Identity*) smiMalloc(sizeof(Identity)); + + identityPtr->export.name = identityname; + identityPtr->export.status = SMI_STATUS_UNKNOWN; + identityPtr->export.description = NULL; + identityPtr->export.reference = NULL; + identityPtr->parentPtr = NULL; + + identityPtr->modulePtr = parserPtr->modulePtr; + identityPtr->line = parserPtr ? parserPtr->line : -1; + + identityPtr->nextPtr = NULL; + identityPtr->prevPtr = modulePtr->lastIdentityPtr; + if (!modulePtr->firstIdentityPtr) + modulePtr->firstIdentityPtr = identityPtr; + if (modulePtr->lastIdentityPtr) + modulePtr->lastIdentityPtr->nextPtr = identityPtr; + modulePtr->lastIdentityPtr = identityPtr; + + return (identityPtr); + +} + +/* + *---------------------------------------------------------------------- + * + * setIdentityDecl -- + * + * Set the declaring macro of a given Identity. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityDecl(Identity *identityPtr, SmiDecl decl) +{ + identityPtr->export.decl = decl; +} + +/* + *---------------------------------------------------------------------- + * + * setIdentityStatus -- + * + * Set the status of a given Identity. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityStatus(Identity *identityPtr, SmiStatus status) +{ + identityPtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setIdentityDescription -- + * + * Set the description of a given Identity. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityDescription(Identity *identityPtr, char *description, Parser *parserPtr) +{ + if (identityPtr->export.description) smiFree(identityPtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + identityPtr->export.description = NULL; + } else { + identityPtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setIdentityReference -- + * + * Set the reference of a given Identity. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityReference(Identity *identityPtr, char *reference, Parser *parserPtr) +{ + if (identityPtr->export.reference) + smiFree(identityPtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + identityPtr->export.reference = NULL; + } else { + identityPtr->export.reference = reference; + } +} + +/* + *---------------------------------------------------------------------- + * + * setIdentityParent -- + * + * Set the parent of a given Identity to given Identity pointer. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setIdentityParent(Identity *identityPtr, Identity *parentPtr) +{ + if(identityPtr) identityPtr->parentPtr = parentPtr; +} + + +/* + *---------------------------------------------------------------------- + * + * findIdentityByName -- + * + * Lookup a Identity by a given name. + * + * Results: + * A pointer to the Identity structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Identity *findIdentityByName(const char *identityname) +{ + Module *modulePtr; + Identity *identityPtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (identityPtr = modulePtr->firstIdentityPtr; identityPtr; + identityPtr = identityPtr->nextPtr) { + if ((identityPtr->export.name) && + !strcmp(identityPtr->export.name, identityname)) { + return (identityPtr); + } + } + } + + return (NULL); +} + +/* + *---------------------------------------------------------------------- + * + * findIdentityByModuleAndName -- + * + * Lookup a Identity by a given name and Module. + * + * Results: + * A pointer to the Identity structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Identity *findIdentityByModuleAndName(Module *modulePtr, + const char *identityname) +{ + Identity *identityPtr; + + + for (identityPtr = modulePtr->firstIdentityPtr; identityPtr; + identityPtr = identityPtr->nextPtr) { + if ((identityPtr->export.name) && + !strcmp(identityPtr->export.name, identityname)) { + return (identityPtr); + } + } + + + return (NULL); +} + +/* + *---------------------------------------------------------------------- + * + * findIdentityByModulenameAndName -- + * + * Lookup a Identity by a given Module and name. + * + * Results: + * A pointer to the Identity structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Identity *findIdentityByModulenameAndName(const char *modulename, + const char *identity_name) +{ + Identity *identityPtr; + Module *modulePtr; + + modulePtr = findModuleByName(modulename); + + if (modulePtr) { + for (identityPtr = modulePtr->firstIdentityPtr; identityPtr; + identityPtr = identityPtr->nextPtr) { + if ((identityPtr->export.name) && !strcmp(identityPtr->export.name, identity_name)) { + return (identityPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * addClass -- + * + * Create a new Class structure. + * + * Results: + * A pointer to the new Class structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- */ + +Class *addClass(char *classname, Parser *parserPtr) +{ + Class *classPtr; + Module *modulePtr; + + modulePtr = parserPtr->modulePtr; + + classPtr = (Class*) smiMalloc(sizeof(Class)); + + classPtr->export.name = classname; + classPtr->export.status = SMI_STATUS_UNKNOWN; + classPtr->export.description = NULL; + classPtr->export.reference = NULL; + + classPtr->modulePtr = parserPtr->modulePtr; + classPtr->line = parserPtr ? parserPtr->line : -1; + + classPtr->parentPtr = NULL; + classPtr->firstAttributePtr = NULL; + classPtr->lastAttributePtr = NULL; + classPtr->firstEventPtr = NULL; + classPtr->lastEventPtr = NULL; + + classPtr->nextPtr = NULL; + classPtr->prevPtr = modulePtr->lastClassPtr; + if (!modulePtr->firstClassPtr) + modulePtr->firstClassPtr = classPtr; + if (modulePtr->lastClassPtr) + modulePtr->lastClassPtr->nextPtr = classPtr; + modulePtr->lastClassPtr = classPtr; + + return (classPtr); + +} + +/* + *---------------------------------------------------------------------- + * + * setClassDecl -- + * + * Set the declaring macro of a given Class. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassDecl(Class *classPtr, SmiDecl decl) +{ + classPtr->export.decl = decl; +} + +/* + *---------------------------------------------------------------------- + * + * setClassStatus -- + * + * Set the status of a given Class. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassStatus(Class *classPtr, SmiStatus status) +{ + classPtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setClassDescription -- + * + * Set the description of a given Class. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassDescription(Class *classPtr, char *description, Parser *parserPtr) +{ + if (classPtr->export.description) smiFree(classPtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + classPtr->export.description = NULL; + } else { + classPtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setClassReference -- + * + * Set the reference of a given Class. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassReference(Class *classPtr, char *reference, Parser *parserPtr) +{ + if (classPtr->export.reference) + smiFree(classPtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + classPtr->export.reference = NULL; + } else { + classPtr->export.reference = reference; + } +} + +/* + *---------------------------------------------------------------------- + * + * setClassParent -- + * + * Set the parent of a given Class to given Class pointer. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setClassParent(Class *classPtr, Class *parentPtr) +{ + if(classPtr) classPtr->parentPtr = parentPtr; +} + +/* + *---------------------------------------------------------------------- + * + * findClassByModuleAndName -- + * + * Lookup a Class by a given name. + * + * Results: + * A pointer to the Class structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ +Class *findClassByModuleAndName(Module *modulePtr,char *name) +{ + Class *classPtr; + + for (classPtr = modulePtr->firstClassPtr; classPtr; + classPtr = classPtr->nextPtr) { + if ((classPtr->export.name) && + !strcmp(classPtr->export.name, name)) { + return (classPtr); + } + } + + return NULL; +} + +/* + *---------------------------------------------------------------------- + * + * findClassByModulenameAndName -- + * + * Lookup a Class by a given Module and name. + * + * Results: + * A pointer to the Class structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Class *findClassByModulenameAndName(const char *modulename, + const char *class_name) +{ + Class *classPtr; + Module *modulePtr; + + modulePtr = findModuleByName(modulename); + + if (modulePtr) { + for (classPtr = modulePtr->firstClassPtr; classPtr; + classPtr = classPtr->nextPtr) { + if ((classPtr->export.name) && !strcmp(classPtr->export.name, class_name)) { + return (classPtr); + } + } + } + + return (NULL); +} + +/* + *---------------------------------------------------------------------- + * + * duplicateTypeToAttribute -- + * + * Create a new Attribute as a duplicate of a given type but with + * an affiliation to the given Class. + * + * Results: + * A pointer to the new Attribute structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Attribute *duplicateTypeToAttribute(Type *templatePtr, Class *classPtr, Parser *parserPtr) +{ + Attribute *attributePtr; + + if(!classPtr) return NULL; + + attributePtr = (Attribute *) smiMalloc(sizeof(Attribute)); + + + attributePtr->export.name = NULL; + attributePtr->export.basetype = templatePtr->export.basetype; + attributePtr->export.decl = SMI_DECL_ATTRIBUTE; + attributePtr->export.format = NULL; + attributePtr->export.value.basetype = templatePtr->export.basetype; + attributePtr->export.units = NULL; + attributePtr->export.status = templatePtr->export.status; + attributePtr->export.description = NULL; + attributePtr->export.reference = NULL; + + attributePtr->classPtr = classPtr; + attributePtr->listPtr = NULL; + attributePtr->line = parserPtr ? parserPtr->line : -1; + + attributePtr->nextPtr = NULL; + attributePtr->prevPtr = classPtr->lastAttributePtr; + if (!classPtr->firstAttributePtr) + classPtr->firstAttributePtr = attributePtr; + if (classPtr->lastAttributePtr) + classPtr->lastAttributePtr->nextPtr = attributePtr; + classPtr->lastAttributePtr = attributePtr; + + setAttributeParentType(attributePtr, templatePtr); + + return (attributePtr); +} + + +/* + *---------------------------------------------------------------------- + * + * addAttribute -- + * + * Create a new Attribute structure and tie it to the given Class. + * + * Results: + * A pointer to the new Attribute structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Attribute *addAttribute(char *attribute_name, + Class *classPtr, Parser *parserPtr) +{ + Attribute *attributePtr; + + attributePtr = smiMalloc(sizeof(Attribute)); + + attributePtr->export.name = attribute_name; + attributePtr->export.basetype = SMI_BASETYPE_UNKNOWN; + attributePtr->export.decl = SMI_DECL_UNKNOWN; + attributePtr->export.format = NULL; + attributePtr->export.value.basetype = SMI_BASETYPE_UNKNOWN; + attributePtr->export.units = NULL; + attributePtr->export.status = SMI_STATUS_UNKNOWN; + attributePtr->export.description = NULL; + attributePtr->export.reference = NULL; + + attributePtr->classPtr = classPtr; + attributePtr->listPtr = NULL; + attributePtr->parentTypePtr = NULL; + attributePtr->parentClassPtr = NULL; + attributePtr->line = parserPtr ? parserPtr->line : -1; + + attributePtr->nextPtr = NULL; + if (classPtr) { + attributePtr->prevPtr = classPtr->lastAttributePtr; + if (!classPtr->firstAttributePtr) + classPtr->firstAttributePtr = attributePtr; + if (classPtr->lastAttributePtr) + classPtr->lastAttributePtr->nextPtr = attributePtr; + classPtr->lastAttributePtr = attributePtr; + } else { + attributePtr->prevPtr = NULL; + } + + return (attributePtr); +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeDecl -- + * + * Set the declaring macro of a given Attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeDecl(Attribute *attributePtr, SmiDecl decl) +{ + attributePtr->export.decl = decl; +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeParentType -- + * + * Set the parent of a given attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeParentType(Attribute *attributePtr, Type *parentPtr) +{ + attributePtr->parentTypePtr = parentPtr; +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeParentClass -- + * + * Set the parent Class of a given attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeParentClass(Attribute *attributePtr, Class *parentPtr) +{ + attributePtr->parentClassPtr = parentPtr; +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeList -- + * + * Set the pointer to a struct list. This used for + * - enumeration items of an enumeration integer type, + * - min-max pair items of a range restricted type, + * - min-max pars items of a size restricted type. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeList(Attribute *attributePtr, List *listPtr) +{ + if (!attributePtr->listPtr) { + attributePtr->listPtr = listPtr; + } +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeName -- + * + * Set the name of a given Attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setAttributeName(Attribute *attributePtr, char *name) +{ + + attributePtr->export.name = smiStrdup(name); +} + +/* + *---------------------------------------------------------------------- + * + * setAttributeAccess -- + * + * Set the access of a given Attribute. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ +void setAttributeAccess(Attribute *attributePtr,SmiAccess access) +{ + attributePtr->export.access = access; +} + + +/* + *---------------------------------------------------------------------- + * + * addEvent -- + * + * Create a new Event structure and tie it to the given Class. + * + * Results: + * A pointer to the new Event structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ +Event *addEvent(char *eventname, Class *classPtr, + Parser *parserPtr) +{ + Event *eventPtr; + + eventPtr = smiMalloc(sizeof(Event)); + + eventPtr->export.name = eventname; + eventPtr->export.decl = SMI_DECL_EVENT; + eventPtr->export.status = SMI_STATUS_UNKNOWN; + eventPtr->export.description = NULL; + eventPtr->export.reference = NULL; + + eventPtr->classPtr = classPtr; + eventPtr->line = parserPtr ? parserPtr->line : -1; + + eventPtr->nextPtr = NULL; + if (classPtr) { + eventPtr->prevPtr = classPtr->lastEventPtr; + if (!classPtr->firstEventPtr) + classPtr->firstEventPtr = eventPtr; + if (classPtr->lastEventPtr) + classPtr->lastEventPtr->nextPtr = eventPtr; + classPtr->lastEventPtr = eventPtr; + } else { + eventPtr->prevPtr = NULL; + } + + return (eventPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * addMacro -- + * + * Create a new Macro structure. + * + * Results: + * A pointer to the new Macro structure or + * NULL if terminated due to an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- */ + +Macro *addMacro(char *macroname, MacroFlags flags, Parser *parserPtr) +{ + Macro *macroPtr; + Module *modulePtr; + + modulePtr = parserPtr->modulePtr; + + /* TODO: Check wheather this macro already exists?? */ + + macroPtr = (Macro *) smiMalloc(sizeof(Macro)); + + macroPtr->export.name = macroname; + macroPtr->export.status = SMI_STATUS_UNKNOWN; + macroPtr->export.description = NULL; + macroPtr->export.reference = NULL; + + macroPtr->modulePtr = parserPtr->modulePtr; + macroPtr->flags = flags; + macroPtr->line = parserPtr ? parserPtr->line : -1; + + macroPtr->nextPtr = NULL; + macroPtr->prevPtr = modulePtr->lastMacroPtr; + if (!modulePtr->firstMacroPtr) + modulePtr->firstMacroPtr = macroPtr; + if (modulePtr->lastMacroPtr) + modulePtr->lastMacroPtr->nextPtr = macroPtr; + modulePtr->lastMacroPtr = macroPtr; + + return (macroPtr); +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroStatus -- + * + * Set the status of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroStatus(Macro *macroPtr, SmiStatus status) +{ + macroPtr->export.status = status; +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroDescription -- + * + * Set the description of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroDescription(Macro *macroPtr, char *description, Parser *parserPtr) +{ + if (macroPtr->export.description) smiFree(macroPtr->export.description); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(description); + macroPtr->export.description = NULL; + } else { + macroPtr->export.description = description; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroReference -- + * + * Set the reference of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroReference(Macro *macroPtr, char *reference, Parser *parserPtr) +{ + if (macroPtr->export.reference) + smiFree(macroPtr->export.reference); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(reference); + macroPtr->export.reference = NULL; + } else { + macroPtr->export.reference = reference; + } +} + +/* + *---------------------------------------------------------------------- + * + * setMacroAbnf -- + * + * Set the abnf string of a given extension(SMIng only). + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroAbnf(Macro *macroPtr, char *abnf, Parser *parserPtr) +{ + if (macroPtr->export.abnf) + smiFree(macroPtr->export.abnf); + if (parserPtr->flags & SMI_FLAG_NODESCR) { + smiFree(abnf); + macroPtr->export.abnf = NULL; + } else { + macroPtr->export.abnf = abnf; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroDecl -- + * + * Set the declaring macro of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroDecl(Macro *macroPtr, SmiDecl decl) +{ + macroPtr->export.decl = decl; +} + + + +/* + *---------------------------------------------------------------------- + * + * setMacroLine -- + * + * Set the line of definition of a given Macro. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void setMacroLine(Macro *macroPtr, int line, Parser *parserPtr) +{ + if (line) { + macroPtr->line = line; + } else { + macroPtr->line = parserPtr ? parserPtr->line : -1; + } +} + + + +/* + *---------------------------------------------------------------------- + * + * findMacroByName -- + * + * Lookup a Macro by a given name. + * + * Results: + * A pointer to the Macro structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Macro *findMacroByName(const char *macroname) +{ + Module *modulePtr; + Macro *macroPtr; + + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = modulePtr->nextPtr) { + for (macroPtr = modulePtr->firstMacroPtr; macroPtr; + macroPtr = macroPtr->nextPtr) { + if ((macroPtr->export.name) && + !strcmp(macroPtr->export.name, macroname)) { + return (macroPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findMacroByModuleAndName -- + * + * Lookup a Macro by a given Module and name. + * + * Results: + * A pointer to the Macro structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Macro *findMacroByModuleAndName(Module *modulePtr, const char *macroname) +{ + Macro *macroPtr; + + if (modulePtr) { + for (macroPtr = modulePtr->firstMacroPtr; macroPtr; + macroPtr = macroPtr->nextPtr) { + if (!strcmp(macroPtr->export.name, macroname)) { + return (macroPtr); + } + } + } + + return (NULL); +} + + + +/* + *---------------------------------------------------------------------- + * + * findNamedNumberByName -- + * + * Lookup the value of a namev nuber in a given typ. + * + * Results: + * A pointer to the NamedNumber structure or + * NULL if it is not found. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +NamedNumber *findNamedNumberByName(Type *typePtr,const char *name) +{ + List *listPtr; + + if(typePtr->export.basetype != SMI_BASETYPE_ENUM && + typePtr->export.basetype != SMI_BASETYPE_BITS) return NULL; + + for (listPtr = typePtr->listPtr; + listPtr; listPtr = listPtr->nextPtr) { + if (!strcmp(((NamedNumber *)(listPtr->ptr))->export.name + , name)) + return (NamedNumber *)(listPtr->ptr); + } + + return NULL; +} + + + + + +/* + *---------------------------------------------------------------------- + * + * smiInitData -- + * + * Initialize all need data structures at program start. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int smiInitData() +{ + Object *objectPtr; + Parser parser; + + smiHandle->flags = 0; + + smiHandle->firstModulePtr = NULL; + smiHandle->lastModulePtr = NULL; + smiHandle->firstViewPtr = NULL; + smiHandle->lastViewPtr = NULL; + + /* + * Initialize a root Node for the main MIB tree. + */ + smiHandle->rootNodePtr = addNode(NULL, 0, NODE_FLAG_ROOT, NULL); + + /* + * Initialize a root Node for pending (forward referenced) nodes. + */ + smiHandle->parserPtr = &parser; + parser.pendingNodePtr = addNode(NULL, 0, NODE_FLAG_ROOT, NULL); + + /* + * Initialize the top level well-known nodes, ccitt, iso, joint-iso-ccitt + * belonging to a dummy module "". This is needed for SMIv1/v2. SMIng + * defines it in a special SMIng module. + */ + parser.path = NULL; + parser.flags = smiHandle->flags; + parser.file = NULL; + parser.line = -1; + parser.modulePtr = addModule(smiStrdup(""), smiStrdup(""), 0, NULL); + + addView(""); + + objectPtr = addObject(smiStrdup("ccitt"), smiHandle->rootNodePtr, 0, 0, &parser); + objectPtr->export.oid = objectPtr->nodePtr->oid = + smiMalloc(sizeof(int)); + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen = 1; + objectPtr->nodePtr->oid[0] = 0; + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + objectPtr = addObject(smiStrdup("iso"), smiHandle->rootNodePtr, 1, 0, &parser); + objectPtr->export.oid = objectPtr->nodePtr->oid = + smiMalloc(sizeof(int)); + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen = 1; + objectPtr->nodePtr->oid[0] = 1; + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + objectPtr = addObject(smiStrdup("joint-iso-ccitt"), smiHandle->rootNodePtr, 2, 0, &parser); + objectPtr->export.oid = objectPtr->nodePtr->oid = + smiMalloc(sizeof(int)); + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen = 1; + objectPtr->nodePtr->oid[0] = 2; + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + + + smiHandle->typeOctetStringPtr = + addType(smiStrdup("OctetString"), + SMI_BASETYPE_OCTETSTRING, 0, &parser); + smiHandle->typeObjectIdentifierPtr = + addType(smiStrdup("ObjectIdentifier"), + SMI_BASETYPE_OBJECTIDENTIFIER, 0, &parser); + smiHandle->typeInteger32Ptr = + addType(smiStrdup("Integer32"), + SMI_BASETYPE_INTEGER32, 0, &parser); + smiHandle->typeUnsigned32Ptr = + addType(smiStrdup("Unsigned32"), + SMI_BASETYPE_UNSIGNED32, 0, &parser); + smiHandle->typeInteger64Ptr = + addType(smiStrdup("Integer64"), + SMI_BASETYPE_INTEGER64, 0, &parser); + smiHandle->typeUnsigned64Ptr = + addType(smiStrdup("Unsigned64"), + SMI_BASETYPE_UNSIGNED64, 0, &parser); + smiHandle->typeFloat32Ptr = + addType(smiStrdup("Float32"), + SMI_BASETYPE_FLOAT32, 0, &parser); + smiHandle->typeFloat64Ptr = + addType(smiStrdup("Float64"), + SMI_BASETYPE_FLOAT64, 0, &parser); + smiHandle->typeFloat128Ptr = + addType(smiStrdup("Float128"), + SMI_BASETYPE_FLOAT128, 0, &parser); + smiHandle->typeEnumPtr = + addType(smiStrdup("Enumeration"), + SMI_BASETYPE_ENUM, 0, &parser); + smiHandle->typeBitsPtr = + addType(smiStrdup("Bits"), + SMI_BASETYPE_BITS, 0, &parser); + smiHandle->typePointerPtr = + addType(smiStrdup("Pointer"), + SMI_BASETYPE_POINTER, 0, &parser); + + return (0); +} + + + +/* + *---------------------------------------------------------------------- + * + * freeNodeTree -- + * + * Free all node of a node (sub)tree. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void freeNodeTree(Node *rootPtr) +{ + Node *nodePtr, *nextPtr; + + for (nodePtr = rootPtr->firstChildPtr; nodePtr; nodePtr = nextPtr) { + nextPtr = nodePtr->nextPtr; + freeNodeTree(nodePtr); + smiFree(nodePtr->oid); + smiFree(nodePtr); + } + rootPtr->firstChildPtr = NULL; + rootPtr->lastChildPtr = NULL; + rootPtr->firstObjectPtr = NULL; + rootPtr->lastObjectPtr = NULL; + rootPtr->nextPtr = NULL; + rootPtr->prevPtr = NULL; + rootPtr->parentPtr = NULL; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiFreeData -- + * + * Free all data structures. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void smiFreeData() +{ + View *viewPtr, *nextViewPtr; + Macro *macroPtr, *nextMacroPtr; + Module *modulePtr, *nextModulePtr; + Import *importPtr, *nextImportPtr; + Identity *identityPtr, *nextIdentityPtr; + Revision *revisionPtr, *nextRevisionPtr; + List *listPtr, *nextListPtr; + Type *typePtr, *nextTypePtr; + Class *classPtr, *nextClassPtr; + Attribute *attributePtr, *nextAttributePtr; + Event *eventPtr, *nextEventPtr; + Object *objectPtr, *nextObjectPtr; + + for (viewPtr = smiHandle->firstViewPtr; viewPtr; viewPtr = nextViewPtr) { + nextViewPtr = viewPtr->nextPtr; + smiFree(viewPtr->name); + smiFree(viewPtr); + } + + /* + * In this first module loop we remove each module's imports, + * revisions, macros, and objects. + */ + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = nextModulePtr) { + nextModulePtr = modulePtr->nextPtr; + + for (importPtr = modulePtr->firstImportPtr; importPtr; + importPtr = nextImportPtr) { + nextImportPtr = importPtr->nextPtr; + smiFree(importPtr->export.module); + smiFree(importPtr->export.name); + smiFree(importPtr); + } + + for (revisionPtr = modulePtr->firstRevisionPtr; revisionPtr; + revisionPtr = nextRevisionPtr) { + nextRevisionPtr = revisionPtr->nextPtr; + smiFree(revisionPtr->export.description); + smiFree(revisionPtr); + } + + for (macroPtr = modulePtr->firstMacroPtr; macroPtr; + macroPtr = nextMacroPtr) { + nextMacroPtr = macroPtr->nextPtr; + smiFree(macroPtr->export.name); + smiFree(macroPtr->export.abnf); + smiFree(macroPtr->export.reference); + smiFree(macroPtr->export.description); + smiFree(macroPtr); + + } + for (identityPtr = modulePtr->firstIdentityPtr; identityPtr; + identityPtr = nextIdentityPtr) { + nextIdentityPtr = identityPtr->nextPtr; + smiFree(identityPtr->export.name); + smiFree(identityPtr->export.reference); + smiFree(identityPtr->export.description); + smiFree(identityPtr); + } + + for (objectPtr = modulePtr->firstObjectPtr; objectPtr; + objectPtr = nextObjectPtr) { + + nextObjectPtr = objectPtr->nextPtr; + smiFree(objectPtr->export.name); + smiFree(objectPtr->export.description); + smiFree(objectPtr->export.reference); + smiFree(objectPtr->export.format); + smiFree(objectPtr->export.units); + for (listPtr = objectPtr->listPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(listPtr); + } + for (listPtr = objectPtr->optionlistPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(((Option *)(listPtr->ptr))->export.description); + smiFree((Option *)(listPtr->ptr)); + smiFree(listPtr); + } + for (listPtr = objectPtr->refinementlistPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(((Refinement *)(listPtr->ptr))->export.description); + smiFree((Refinement *)(listPtr->ptr)); + smiFree(listPtr); + } + if (objectPtr->typePtr) { + if ((objectPtr->typePtr->export.basetype == + SMI_BASETYPE_OCTETSTRING || + objectPtr->typePtr->export.basetype == + SMI_BASETYPE_BITS)) { + smiFree(objectPtr->export.value.value.ptr); + } else if ((objectPtr->typePtr->export.basetype == + SMI_BASETYPE_OBJECTIDENTIFIER) && + (objectPtr->export.value.basetype == + objectPtr->typePtr->export.basetype)) { + smiFree(objectPtr->export.value.value.oid); + } + + } + smiFree(objectPtr); + + + + + } + + + for (classPtr = modulePtr->firstClassPtr; classPtr; + classPtr = nextClassPtr) { + + nextClassPtr = classPtr->nextPtr; + for (attributePtr = classPtr->firstAttributePtr; attributePtr; + attributePtr = nextAttributePtr) { + + nextAttributePtr = attributePtr->nextPtr; + + for (listPtr = attributePtr->listPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + if ((attributePtr->export.basetype == SMI_BASETYPE_BITS) || + (attributePtr->export.basetype == SMI_BASETYPE_ENUM)) { + smiFree(((NamedNumber *)(listPtr->ptr))->export.name); + smiFree((NamedNumber *)(listPtr->ptr)); + } else if ((attributePtr->export.basetype == SMI_BASETYPE_INTEGER32) || + (attributePtr->export.basetype == SMI_BASETYPE_INTEGER64) || + (attributePtr->export.basetype == SMI_BASETYPE_UNSIGNED32) || + (attributePtr->export.basetype == SMI_BASETYPE_UNSIGNED64) || + (attributePtr->export.basetype == SMI_BASETYPE_FLOAT32) || + (attributePtr->export.basetype == SMI_BASETYPE_FLOAT64) || + (attributePtr->export.basetype == SMI_BASETYPE_FLOAT128) || + (attributePtr->export.basetype == SMI_BASETYPE_OCTETSTRING)) { + smiFree((Range *)(listPtr->ptr)); + } + smiFree(listPtr); + } + smiFree(attributePtr->export.name); + smiFree(attributePtr->export.format); + smiFree(attributePtr->export.units); + smiFree(attributePtr->export.description); + smiFree(attributePtr->export.reference); + smiFree(attributePtr); + + } + + for (eventPtr = classPtr->firstEventPtr; eventPtr; + eventPtr = nextEventPtr) { + + nextEventPtr = eventPtr->nextPtr; + smiFree(eventPtr->export.name); + smiFree(eventPtr->export.reference); + smiFree(eventPtr->export.description); + } + + + for (listPtr = classPtr->uniqueList; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(listPtr); + } + + smiFree(classPtr->export.name); + smiFree(classPtr->export.description); + smiFree(classPtr->export.reference); + smiFree(classPtr); + + } + } + + /* + * In this second module loop we remove each module's types + * and the modules themselves. This separation is required, because + * we reference some types of foreign modules in the first loop. + */ + for (modulePtr = smiHandle->firstModulePtr; modulePtr; + modulePtr = nextModulePtr) { + nextModulePtr = modulePtr->nextPtr; + + for (typePtr = modulePtr->firstTypePtr; typePtr; + typePtr = nextTypePtr) { + nextTypePtr = typePtr->nextPtr; + for (listPtr = typePtr->listPtr; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + if ((typePtr->export.basetype == SMI_BASETYPE_BITS) || + (typePtr->export.basetype == SMI_BASETYPE_ENUM)) { + smiFree(((NamedNumber *)(listPtr->ptr))->export.name); + smiFree((NamedNumber *)(listPtr->ptr)); + } else if ((typePtr->export.basetype == SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype == SMI_BASETYPE_INTEGER64) || + (typePtr->export.basetype == SMI_BASETYPE_UNSIGNED32) || + (typePtr->export.basetype == SMI_BASETYPE_UNSIGNED64) || + (typePtr->export.basetype == SMI_BASETYPE_FLOAT32) || + (typePtr->export.basetype == SMI_BASETYPE_FLOAT64) || + (typePtr->export.basetype == SMI_BASETYPE_FLOAT128) || + (typePtr->export.basetype == SMI_BASETYPE_OCTETSTRING)) { + smiFree((Range *)(listPtr->ptr)); + } + smiFree(listPtr); + } + smiFree(typePtr->export.name); + smiFree(typePtr->export.format); + smiFree(typePtr->export.units); + smiFree(typePtr->export.description); + smiFree(typePtr->export.reference); + smiFree(typePtr); + } + + smiFree(modulePtr->export.name); + smiFree(modulePtr->export.path); + smiFree(modulePtr->export.organization); + smiFree(modulePtr->export.contactinfo); + smiFree(modulePtr->export.description); + smiFree(modulePtr->export.reference); + smiFree(modulePtr); + } + + freeNodeTree(smiHandle->rootNodePtr); + smiFree(smiHandle->rootNodePtr); + + return; +} + + + +/* + *---------------------------------------------------------------------- + * + * loadModule -- + * + * Load a MIB module. If modulename is a plain name, the file is + * search along the SMIPATH environment variable. If modulename + * contains a `.' or DIR_SEPARATOR it is assumed to be the path. + * + * Results: + * 0 on success or -1 on an error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Module *loadModule(const char *modulename, Parser *parserPtr) +{ + Parser parser; + Parser *parentParserPtr; + char *path = NULL, *dir, *smipath; + int sming = 0; + int c, i; + FILE *file; + char sep[2]; + + static const char *ext[] = { + "", ".my", ".smiv1", ".smiv2", ".sming", ".mib", ".txt", NULL + }; + + if ((!modulename) || !strlen(modulename)) { + return NULL; + } + + if (!smiIsPath(modulename)) { + /* + * A plain modulename. Lookup the path along SMIPATH... + */ + if (!smiHandle->path) { + return NULL; + } + + smipath = smiStrdup(smiHandle->path); + sep[0] = PATH_SEPARATOR; sep[1] = 0; + for (dir = strtok(smipath, sep); + dir; dir = strtok(NULL, sep)) { + for (i = 0; ext[i]; i++) { + smiAsprintf(&path, "%s%c%s%s", dir, DIR_SEPARATOR, + modulename, ext[i]); + if (! access(path, R_OK)) { + break; + } + smiFree(path); + } + if (ext[i]) break; + { + char *newmodulename = smiStrdup(modulename); + for (i = 0; newmodulename[i]; i++) { + newmodulename[i] = tolower(newmodulename[i]); + } + for (i = 0; ext[i]; i++) { + smiAsprintf(&path, "%s%c%s%s", dir, DIR_SEPARATOR, + newmodulename, ext[i]); + if (! access(path, R_OK)) { + break; + } + smiFree(path); + } + smiFree(newmodulename); + if (ext[i]) break; + } + + path = NULL; + } + smiFree(smipath); + } else { + /* + * A full path. Take it. + */ + path = smiStrdup(modulename); + } + +#if !defined(_MSC_VER) && !defined(__MINGW32__) + if (!path && smiHandle->cache && smiHandle->cacheProg) { + /* Not found in the path; now try to fetch & cache the module. */ + int pid; + char *argv[4]; + char *cmd; + int status; + smiAsprintf(&path, "%s%c%s", + smiHandle->cache, DIR_SEPARATOR, modulename); + if (access(path, R_OK)) { + smiAsprintf(&cmd, "%s %s", smiHandle->cacheProg, modulename); + pid = fork(); + if (pid != -1) { + if (!pid) { + argv[0] = "sh"; argv[1] = "-c"; argv[2] = cmd; argv[3] = 0; + execv("/bin/sh", argv); + exit(127); + } + waitpid(pid, &status, 0); + } + smiFree(cmd); + if (access(path, R_OK)) { + smiFree(path); + path = NULL; + } + } + } +#endif + + if (!path) { + smiPrintError(parserPtr, ERR_MODULE_NOT_FOUND, modulename); + return NULL; + } + + parser.path = path; + + /* + * Look into the file to determine whether it contains + * SMIv1/SMIv2 or SMIng definitions. + */ + + file = fopen(path, "r"); + if (! file) { + smiPrintError(parserPtr, ERR_OPENING_INPUTFILE, path, strerror(errno)); + smiFree(path); + return NULL; + } + while ((c = fgetc(file))) { + if (c == '-' || isupper(c)) { + sming = 0; + break; + } else if (c == '/' || c == 'm') { + sming = 1; + break; + } else if (c == EOF || ! isspace(c)) { + smiPrintError(parserPtr, ERR_ILLEGAL_INPUTFILE, path); + smiFree(path); + fclose(file); + return NULL; + } + } + rewind(file); + + + if (sming == 0) { +#ifdef BACKEND_SMI + parentParserPtr = smiHandle->parserPtr; + smiHandle->parserPtr = &parser; + parser.path = path; + parser.flags = smiHandle->flags; + parser.modulePtr = NULL; + parser.complianceModulePtr = NULL; + parser.capabilitiesModulePtr = NULL; + parser.currentDecl = SMI_DECL_UNKNOWN; + parser.firstStatementLine = 0; + parser.firstNestedStatementLine = 0; + parser.firstRevisionLine = 0; + parser.file = file; + + /* + * Initialize a root Node for pending (forward referenced) nodes. + */ + parser.pendingNodePtr = addNode(NULL, 0, NODE_FLAG_ROOT, NULL); + + if (smiEnterLexRecursion(parser.file) < 0) { + smiPrintError(&parser, ERR_MAX_LEX_DEPTH); + fclose(parser.file); + } + smiDepth++; + parser.line = 1; + smiparse((void *)&parser); + freeNodeTree(parser.pendingNodePtr); + smiFree(parser.pendingNodePtr); + smiLeaveLexRecursion(); + smiDepth--; + fclose(parser.file); + smiFree(path); + smiHandle->parserPtr = parentParserPtr; + return parser.modulePtr; +#else + smiPrintError(parserPtr, ERR_SMI_NOT_SUPPORTED, path); + smiFree(path); + fclose(file); + return NULL; +#endif + } + + if (sming == 1) { +#ifdef BACKEND_SMING + parentParserPtr = smiHandle->parserPtr; + smiHandle->parserPtr = &parser; + parser.path = path; + parser.flags = smiHandle->flags; + parser.modulePtr = NULL; + parser.complianceModulePtr = NULL; + parser.capabilitiesModulePtr = NULL; + parser.currentDecl = SMI_DECL_UNKNOWN; + parser.firstStatementLine = 0; + parser.firstNestedStatementLine = 0; + parser.firstRevisionLine = 0; + parser.file = file; + + /* + * Initialize a root Node for pending (forward referenced) nodes. + */ + parser.pendingNodePtr = addNode(NULL, 0, NODE_FLAG_ROOT, NULL); + + if (smingEnterLexRecursion(parser.file) < 0) { + smiPrintError(&parser, ERR_MAX_LEX_DEPTH); + fclose(parser.file); + } + smiDepth++; + parser.line = 1; + smingparse((void *)&parser); + freeNodeTree(parser.pendingNodePtr); + smiFree(parser.pendingNodePtr); + smingLeaveLexRecursion(); + smiDepth--; + fclose(parser.file); + smiFree(path); + smiHandle->parserPtr = parentParserPtr; + return parser.modulePtr; +#else + smiPrintError(parserPtr, ERR_SMING_NOT_SUPPORTED, path); + smiFree(path); + fclose(file); + return NULL; +#endif + } + + smiFree(path); + fclose(file); + return NULL; +} diff --git a/lib/data.h b/lib/data.h new file mode 100644 index 0000000..1343780 --- /dev/null +++ b/lib/data.h @@ -0,0 +1,757 @@ +/* + * data.h -- + * + * Definitions for the main data structures. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: data.h 7966 2008-03-27 21:25:52Z schoenw $ + */ + +#ifndef _DATA_H +#define _DATA_H + + +#include + +#include "smi.h" + + + +typedef struct List { + SmiElement export; + void *ptr; + struct List *nextPtr; +} List; + +typedef enum Kind { + KIND_UNKNOWN = 0 , /* */ + KIND_MODULE = 1 , /* */ + KIND_MACRO = 2 , /* */ + KIND_TYPE = 3 , /* */ + KIND_OBJECT = 4 , /* */ + KIND_IMPORT = 5 , /* descriptors to be imported. */ + KIND_IMPORTED = 6 , /* imported descriptor. syntax `mod.descr'. */ + KIND_NOTFOUND = 7 /* to be imported, but not found */ +} Kind; +#define NUM_KINDS 7 + + + +typedef unsigned short ParserFlags; +typedef unsigned short ModuleFlags; +typedef unsigned short ImportFlags; +typedef unsigned short ObjectFlags; +typedef unsigned short NodeFlags; +typedef unsigned short TypeFlags; +typedef unsigned short MacroFlags; + +#define NODE_FLAG_ROOT 0x0001 /* mark node tree's root */ + +#define FLAG_SEQTYPE 0x0002 /* type is set from SMIv1/2 SEQUENCE. */ +#define FLAG_REGISTERED 0x0004 /* On an Object: this is registered. */ +#define FLAG_INCOMPLETE 0x0008 /* Just defined by a forward */ + /* referenced type or object. */ +#define FLAG_CREATABLE 0x0040 /* On a Row: New rows can be created. */ +#define FLAG_INGROUP 0x0080 /* Node is contained in a group. */ +#define FLAG_INCOMPLIANCE 0x0100 /* Group is mentioned in a compliance + statement. + In case of ImportFlags: the import + is done through a compliance + MODULE phrase. */ +#define FLAG_INSYNTAX 0x0200 /* Type is mentioned in a syntax + statement. */ + + +typedef struct View { + char *name; + struct View *nextPtr; + struct View *prevPtr; +} View; + + + +typedef struct Module { + SmiModule export; + time_t lastUpdated; /* only for SMIv2 modules */ + struct Object *objectPtr; + struct Object *firstObjectPtr; + struct Object *lastObjectPtr; + struct Type *firstTypePtr; + struct Type *lastTypePtr; + struct Class *firstClassPtr; + struct Class *lastClassPtr; + struct Macro *firstMacroPtr; + struct Macro *lastMacroPtr; + struct Identity *firstIdentityPtr; + struct Identity *lastIdentityPtr; + struct Import *firstImportPtr; + struct Import *lastImportPtr; + struct Revision *firstRevisionPtr; + struct Revision *lastRevisionPtr; + ModuleFlags flags; + int numImportedIdentifiers; + int numStatements; + int numModuleIdentities; + struct Module *nextPtr; + struct Module *prevPtr; + struct Node *prefixNodePtr; +} Module; + + + +typedef struct Revision { + SmiRevision export; + Module *modulePtr; + struct Revision *nextPtr; + struct Revision *prevPtr; + int line; +} Revision; + + + +typedef struct Import { + SmiImport export; + Module *modulePtr; + ImportFlags flags; + struct Import *nextPtr; + struct Import *prevPtr; + Kind kind; + int use; + int line; +} Import; + + + +typedef struct NamedNumber { + SmiNamedNumber export; + struct Type *typePtr; +} NamedNumber; + + + +typedef struct Range { + SmiRange export; + struct Type *typePtr; +} Range; + + + +typedef struct Type { + SmiType export; + Module *modulePtr; + struct Type *parentPtr; + struct List *listPtr; + TypeFlags flags; + struct Type *nextPtr; + struct Type *prevPtr; + int line; +} Type; + + + +typedef struct Option { + SmiOption export; + struct Object *compliancePtr; + struct Object *objectPtr; + int line; +} Option; + + + +typedef struct Refinement { + SmiRefinement export; + struct Object *compliancePtr; /* the compl. Object this Ref belongs to */ + struct Object *objectPtr; /* the Object refined by this Refinement */ + Type *typePtr; /* the refined Type (or NULL) */ + Type *writetypePtr; /* the refined WriteType (or NULL) */ + int line; +} Refinement; + + + +typedef struct Compl { + List *mandatorylistPtr; + List *optionlistPtr; + List *refinementlistPtr; +} Compl; + + + +typedef struct Index { + int implied; + SmiIndexkind indexkind; + struct List *listPtr; /* list of index columns (Object *) */ + struct Object *rowPtr; /* a referenced row (e.g. SMIv2 AUGMENTS) */ +} Index; + + +typedef struct SubjectCategories { + struct List *categories; + int allCategories; +} SubjectCategories; + + +typedef struct Object { + SmiNode export; + Module *modulePtr; + ObjectFlags flags; + Type *typePtr; + struct Object *relatedPtr; /* a related Object (augmented row) */ + struct List *listPtr; /* OG, NT, NG, MC */ + struct List *optionlistPtr; + struct List *refinementlistPtr; + struct Node *nodePtr; + struct Object *prevPtr; /* chain of Objects in this Module */ + struct Object *nextPtr; + struct Object *prevSameNodePtr; /* chain of Objects for this Node */ + struct Object *nextSameNodePtr; + struct List *uniquenessPtr; /* UNIQUENESS */ + int line; +} Object; + + + +typedef struct Node { + SmiSubid subid; + NodeFlags flags; + int oidlen; + SmiSubid *oid; + struct Node *parentPtr; + struct Node *nextPtr; + struct Node *prevPtr; + struct Node *firstChildPtr; + struct Node *lastChildPtr; + Object *firstObjectPtr; + Object *lastObjectPtr; +} Node; + + + +typedef struct Macro { + SmiMacro export; + Module *modulePtr; + MacroFlags flags; + struct Macro *nextPtr; + struct Macro *prevPtr; + int line; +} Macro; + +typedef struct Identity { + SmiIdentity export; + Module *modulePtr; + struct Identity *parentPtr; + struct Identity *nextPtr; + struct Identity *prevPtr; + int line; +} Identity; + +typedef struct Class { + SmiClass export; + Module *modulePtr; + struct Attribute *firstAttributePtr; + struct Attribute *lastAttributePtr; + struct List *uniqueList; + struct Event *firstEventPtr; + struct Event *lastEventPtr; + struct Class *parentPtr; + struct Class *nextPtr; + struct Class *prevPtr; + int line; +} Class; +/*NOTE: if first element of uniqueList points + to current class that is class->uniqueList-> = class; + the class is scalar. If uniqueList = NULL; it is not + meant to be instatiated directly. Otherwise it contains + list of pointers to the class unique attributes. +*/ + + +typedef struct Attribute { + SmiAttribute export; + Class *classPtr; + struct Type *parentTypePtr; + struct List *listPtr; + struct Attribute *nextPtr; + struct Attribute *prevPtr; + int line; + struct Class *parentClassPtr; +} Attribute; + +typedef struct Event { + SmiEvent export; + Class *classPtr; + struct Event *nextPtr; + struct Event *prevPtr; + int line; +} Event; + + + + +typedef struct Parser { + char *path; + FILE *file; + int line; + int lcline; /* for SMI comment warning */ + Module *modulePtr; + ParserFlags flags; + List *firstIndexlabelPtr; /* only for the SMIng parser */ + char *identityObjectName; /* only for the SMIng parser */ + Module *complianceModulePtr; + Module *capabilitiesModulePtr; + Node *parentNodePtr; + int currentDecl; + int firstStatementLine; + int firstNestedStatementLine; + int firstRevisionLine; + Node *pendingNodePtr; +} Parser; + + + +typedef struct Handle { + char *name; + struct Handle *prevPtr; + struct Handle *nextPtr; + View *firstViewPtr; + View *lastViewPtr; + Module *firstModulePtr; + Module *lastModulePtr; + Node *rootNodePtr; + Type *typeOctetStringPtr; + Type *typeObjectIdentifierPtr; + Type *typeInteger32Ptr; + Type *typeUnsigned32Ptr; + Type *typeInteger64Ptr; + Type *typeUnsigned64Ptr; + Type *typeFloat32Ptr; + Type *typeFloat64Ptr; + Type *typeFloat128Ptr; + Type *typeEnumPtr; + Type *typeBitsPtr; + Type *typePointerPtr; + int flags; + char *path; + char *cache; + char *cacheProg; + int errorLevel; + SmiErrorHandler *errorHandler; + Parser *parserPtr; +} Handle; + + + +extern int smiDepth; /* SMI parser recursion depth */ + +extern Handle *smiHandle; /* The current handle */ + + + +extern Handle *addHandle(const char *name); + +extern void removeHandle(Handle *handlePtr); + +extern Handle *findHandleByName(const char *name); + + + +extern View *addView(const char *modulename); + +extern int isInView(const char *modulename); + + + +extern Module *addModule(char *modulename, + char *path, + ModuleFlags flags, + Parser *parserPtr); + +extern void setModuleIdentityObject(Module *modulePtr, + Object *objectPtr); + +extern void setModuleLastUpdated(Module *modulePtr, + time_t lastUpdated); + +extern void setModuleOrganization(Module *modulePtr, + char *organization); + +extern void setModuleContactInfo(Module *modulePtr, + char *contactinfo); + +extern void setModuleDescription(Module *modulePtr, + char *description, + Parser *parserPtr); + +extern void setModuleReference(Module *modulePtr, + char *reference, + Parser *parserPtr); + +extern Module *findModuleByName(const char *modulename); + + + +extern Revision *addRevision(time_t date, + char *description, + Parser *parserPtr); + +extern void setRevisionLine(Revision *revisionPtr, + int line, + Parser *parserPtr); + + + +extern Import *addImport(char *name, + Parser *parserPtr); + +extern void addImportFlags(Import *importPtr, ImportFlags flags); + +extern void setImportModulename(Import *importPtr, + char *modulename); + +extern int checkImports(Module *modulePtr, + Parser *parserPtr); + +extern Import *findImportByName(const char *name, + Module *modulePtr); + +extern Import *findImportByModulenameAndName(const char *modulename, + const char *name, + Module *modulePtr); + +extern Object *addObject(char *objectname, + Node *parentNodePtr, + SmiSubid subid, + ObjectFlags flags, + Parser *parserPtr); + +extern Object *duplicateObject(Object *templatePtr, + ObjectFlags flags, + Parser *parserPtr); + +extern Node *addNode(Node *parentNodePtr, + SmiSubid subid, + NodeFlags flags, + Parser *parserPtr); + +extern Node *createNodes(unsigned int oidlen, SmiSubid *oid); + +extern Node *createNodesByOidString(const char *oid); + +extern Node *getParentNode(Node *nodePtr); + +/* + * setObjectName() might relink MIB tree object structures. If the + * current objectPtr is to be used after the call, it should look like + * objectPtr = setObjectName(objectPtr, name); + */ +extern Object *setObjectName(Object *objectPtr, + char *name, Parser *parserPtr); + +extern void setObjectType(Object *objectPtr, + Type *typePtr); + +extern void setObjectAccess(Object *objectPtr, + SmiAccess access); + +extern void setObjectStatus(Object *objectPtr, + SmiStatus status); + +extern void setObjectDescription(Object *objectPtr, + char *description, + Parser *parserPtr); + +extern void setObjectReference(Object *objectPtr, + char *reference, + Parser *parserPtr); + +extern void setObjectDecl(Object *objectPtr, + SmiDecl decl); + +extern void setObjectUniqueness(Object *objectPtr, List *listPtr); + +extern void setObjectInstallErrors(Object *objectPtr, List *listPtr); + +extern void setObjectLine(Object *objectPtr, + int line, + Parser *parserPtr); + +extern void setObjectNodekind(Object *objectPtr, + SmiNodekind nodekind); + +extern void addObjectFlags(Object *objectPtr, + ObjectFlags flags); + +extern void deleteObjectFlags(Object *objectPtr, + ObjectFlags flags); + +extern int checkObjectFlags(Object *objectPtr, ObjectFlags flags); + +extern void setObjectList(Object *objectPtr, + struct List *listPtr); + +extern void setObjectRelated(Object *objectPtr, + Object *relatedPtr); + +extern void setObjectImplied(Object *objectPtr, + int implied); + +extern void setObjectCreate(Object *objectPtr, + int create); + +extern void setObjectIndexkind(Object *objectPtr, + SmiIndexkind indexkind); + +extern void setObjectIndex(Object *objectPtr, + Index *indexPtr); + +extern void setObjectFormat(Object *objectPtr, + char *format); + +extern void setObjectUnits(Object *objectPtr, + char *units); + +extern void setObjectValue(Object *objectPtr, + SmiValue *valuePtr); + +extern Node *findNodeByParentAndSubid(Node *parentNodePtr, + SmiSubid subid); + +extern Node *findNodeByOid(unsigned int oidlen, SmiSubid *oid); + +extern Node *findNodeByOidString(char *oid); + +extern Object *findObjectByNode(Node *nodePtr); + +extern Object *findObjectByModuleAndNode(Module *modulePtr, + Node *nodePtr); + +extern Object *findObjectByModulenameAndNode(const char *modulename, + Node *nodePtr); + +extern Object *findObjectByName(const char *objectname); + +extern Object *findNextObjectByName(const char *objectname, + Object *prevObjectPtr); + +extern Object *findObjectByModuleAndName(Module *modulePtr, + const char *objectname); + +extern Object *findObjectByModulenameAndName(const char *modulename, + const char *objectname); + + + +extern Type *addType(char *type_name, + SmiBasetype basetype, + TypeFlags flags, + Parser *parserPtr); + +extern Type *duplicateType(Type *templatePtr, + TypeFlags flags, + Parser *parserPtr); + +extern Type *setTypeName(Type *typePtr, + char *name); + +extern void setTypeStatus(Type *typePtr, + SmiStatus status); + +extern void setTypeBasetype(Type *typePtr, + SmiBasetype basetype); + +extern void setTypeParent(Type *typePtr, + Type *parentPtr); + +extern void setTypeList(Type *typePtr, + struct List *listPtr); + +extern void setTypeDescription(Type *typePtr, + char *description, + Parser *parserPtr); + +extern void setTypeReference(Type *typePtr, + char *reference, + Parser *parserPtr); + +extern void setTypeDecl(Type *typePtr, + SmiDecl decl); + +extern void setTypeLine(Type *typePtr, + int line, + Parser *parserPtr); + +extern void addTypeFlags(Type *typePtr, + TypeFlags flags); + +extern void deleteTypeFlags(Type *typePtr, + TypeFlags flags); + +extern void setTypeFormat(Type *typePtr, + char *format); + +extern void setTypeUnits(Type *typePtr, + char *units); + +extern void setTypeValue(Type *typePtr, + SmiValue *valuePtr); + + + +extern Type *findTypeByName(const char *type_name); + +extern Type *findNextTypeByName(const char *type_name, + Type *prevTypePtr); + +extern Type *findTypeByModuleAndName(Module *modulePtr, + const char *type_name); + +extern Type *findTypeByModulenameAndName(const char *modulename, + const char *type_name); + +extern NamedNumber *findTypeNamedNumber(Type *typePtr, + SmiInteger32 number); + + + +extern Identity *addIdentity(char *identityname, + Parser *parserPtr); + +extern void setIdentityDecl(Identity *identityPtr, + SmiDecl decl); + +extern void setIdentityStatus(Identity *identityPtr, + SmiStatus status); + +extern void setIdentityDescription(Identity *identityPtr, + char *description, + Parser *parserPtr); + +extern void setIdentityReference(Identity *identityPtr, + char *reference, + Parser *parserPtr); + +extern void setIdentityParent(Identity *identityPtr, + Identity *parentPtr); + +extern Identity *findIdentityByName(const char *identityname); + +extern Identity *findIdentityByModuleAndName(Module *modulePtr, + const char *identityname); + +extern Identity *findIdentityByModulenameAndName(const char *modulename, + const char *identity_name); + + + + +extern Class *addClass(char *classname, + Parser *parserPtr); + +extern void setClassDecl(Class *classPtr, + SmiDecl decl); + +extern void setClassStatus(Class *classPtr, + SmiStatus status); + +extern void setClassDescription(Class *classPtr, + char *description, + Parser *parserPtr); + +extern void setClassReference(Class *classPtr, + char *reference, + Parser *parserPtr); + +extern Class *findClassByModuleAndName(Module *modulePtr, char *name); + +extern Class *findClassByModulenameAndName(const char *modulename, + const char *class_name); + + + +extern Attribute *duplicateTypeToAttribute(Type *templatePtr, + Class *classPtr, Parser *parserPtr); + +extern Attribute *addAttribute(char *attribute_name, + Class *classPtr, Parser *parserPtr); + +extern void setAttributeName(Attribute *attributePtr, char *name); + +extern void setAttributeDecl(Attribute *attributePtr, + SmiDecl decl); + +extern void setAttributeStatus(Attribute *attributePtr, + SmiStatus status); + +extern void setAttributeDescription(Attribute *attributePtr, + char *description); + +extern void setAttributeReference(Attribute *attributePtr, + char *reference); + +extern void setAttributeAccess(Attribute *attributePtr,SmiAccess access); + +extern void setAttributeParentType(Attribute *attributePtr, + Type *parentPtr); + +extern void setAttributeParentClass(Attribute *attributePtr, + Class *parentPtr); + +extern void setAttributeList(Attribute *attributePtr, List *listPtr); + + +extern Event *addEvent(char *eventname, Class *classPtr, + Parser *parserPtr); + + +extern Macro *addMacro(char *macroname, + MacroFlags flags, + Parser *parserPtr); + +extern void setMacroStatus(Macro *macroPtr, + SmiStatus status); + +extern void setMacroDescription(Macro *macroPtr, + char *description, + Parser *parserPtr); + +extern void setMacroReference(Macro *macroPtr, + char *reference, + Parser *parserPtr); + +extern void setMacroDecl(Macro *macroPtr, + SmiDecl decl); + +extern void setMacroAbnf(Macro *macroPtr, + char *abnf, + Parser *parserPtr); + +extern void setMacroLine(Macro *macroPtr, + int line, + Parser *parserPtr); + +extern Macro *findMacroByName(const char *macroname); + +extern Macro *findMacroByModuleAndName(Module *modulePtr, + const char *macroname); + +extern Macro *findMacroByModulenameAndName(const char *modulename, + const char *macroname); + + +extern NamedNumber *findNamedNumberByName(Type *typePtr, + const char *name); + + + +extern int smiInitData(void); + +extern void smiFreeData(void); + +extern Module *loadModule(const char *modulename, Parser *parserPtr); + + +#endif /* _DATA_H */ diff --git a/lib/error.c b/lib/error.c new file mode 100644 index 0000000..b9b931b --- /dev/null +++ b/lib/error.c @@ -0,0 +1,1034 @@ +/* + * error.c -- + * + * Error handling routines. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: error.c 7734 2008-02-15 07:49:14Z schoenw $ + */ + +#include + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "smi.h" +#include "error.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* + * Structure to hold error messages with their associated error level. + * Note that it is possible to modify the error levels at run time. + */ + +typedef struct Error { + int level; /* 0: fatal, no way to continue */ + /* 1: severe, changing semantics to continue */ + /* must be corrected */ + /* 2: error, but able to continue, */ + /* should be corrected */ + /* 3: minor error, but should be corrected */ + /* 4: change is recommended if possible */ + /* 5: warning, but might totally correct */ + /* under some circumstances */ + /* 6: just a notice */ + /* 128+: flag to signal an ignored error msg */ + int id; /* error id, used in error() invocation */ + char *tag; /* tag for error identification on cmd line */ + char *fmt; /* the complete error format string */ + char *description; /* text describing the error in more detail */ +} Error; + + + +/* + * Note: The Makefile produces a list of error macros for every `ERR...' + * pattern in this file (error.c). This list is written to errormacros.h. + */ + +static Error errors[] = { + { 0, ERR_INTERNAL, "internal", + "internal error!", + "An internal error occured in the libsmi core, which is not further\n" + "specified. This is most likely not related to a bug in a MIB/PIB\n" + "module or any unexpected circumstances of your system environment.\n" + "Please submit a detailed bug report to the libsmi maintainer or the\n" + "libsmi mailing list at ."}, + { 0, ERR_MAX_LEX_DEPTH, "import-depth", + "maximum IMPORTS nesting, probably a loop?", + "A new parser instance is created whenever a module imports from\n" + "another module that has not yet been parsed. This might lead to\n" + "recursive creation of parser instances in case of recursive imports.\n" + "The maximum depth of these recursive imports is limited (30).\n" + "Usually this limit should never be reached. However, this error\n" + "might occur when modules illegally import definitions in a loop."}, + { 0, ERR_OUT_OF_MEMORY, "internal-memory", + "out of memory", + "Libsmi needs to allocate memory dynamically during runtime, but\n" + "the system did run out of memory."}, + { 1, ERR_LEX_UNEXPECTED_CHAR, "lexical", + "lexically unexpected character, skipping to end of line", + "While parsing a MIB/PIB file a lexically unexpected character has\n" + "been read, so that subsequent input is dropped up to the end of\n" + "line. Note that MIBs and PIBs only allow 7-bit ASCII characters and\n" + "no international characters at any place in the file (RFC 2578,\n" + "Section 3.1.1)."}, + { 1, ERR_OTHER_ERROR, "internal-other", + "%s", + "An unspecified error occured. Please submit a detailed bug report\n" + "to the libsmi maintainer or the libsmi mailing list at\n" + "."}, + { 1, ERR_ILLEGAL_KEYWORD, "keyword-illegal", + "illegal keyword `%s'", + "ASN.1 has some language keywords that are explicitly forbidden in\n" + "MIB and PIB files. Such a keyword has been read from the current\n" + "file (RFC 2578, Section 3.7)."}, + { 2, ERR_ID_ENDS_IN_HYPHEN, "hyphen-end", + "identifier `%s' illegally ends in a hyphen", NULL}, + { 3, ERR_LEADING_ZEROS, "number-leading-zero", + "leading zero(s) on a number", + "A decimal number other than 0 must not start with a 0 digit. The\n" + "value 0 must be represented as a single 0 digit."}, + { 2, ERR_NUMBER_TOO_LARGE, "number-range", + "number `%s' too large", + "The range of numerical values is restricted depending on the\n" + "underlying base type and possibly further type refinements."}, + { 2, ERR_MODULENAME_64, "namelength-64-module", + "module name `%s' must not be longer that 64 characters", NULL}, + { 128 + 4, ERR_MODULENAME_32, "namelength-32-module", + "module name `%s' longer than 32 characters", NULL}, + { 2, ERR_TYPENAME_64, "namelength-64-type", + "type name `%s' must not be longer that 64 characters", NULL}, + { 128 + 4, ERR_TYPENAME_32, "namelength-32-type", + "type name `%s' longer than 32 characters", NULL}, + { 2, ERR_OIDNAME_64, "namelength-64-object", + "object identifier name `%s' must not be longer that 64 characters", NULL}, + { 128 + 4, ERR_OIDNAME_32, "namelength-32-object", + "object identifier name `%s' longer than 32 characters", NULL}, + { 2, ERR_ENUMNAME_64, "namelength-64-enumeration", + "enumeration name `%s' must not be longer that 64 characters", NULL}, + { 128 + 4, ERR_ENUMNAME_32, "namelength-32-enumeration", + "enumeration name `%s' longer than 32 characters", NULL}, + { 2, ERR_BITNAME_64, "namelength-64-bit", + "bit name `%s' must not be longer than 64 characters", NULL}, + { 128 + 4, ERR_BITNAME_32, "namelength-32-bit", + "bit name `%s' longer than 32 characters", NULL}, + { 2, ERR_UCIDENTIFIER_64, "namelength-64-uc-identifier", + "uppercase identifier `%s' must not be longer than 64 characters", NULL}, + { 2, ERR_LCIDENTIFIER_64, "namelength-64-lc-identifier", + "lowercase identifier `%s' must not be longer than 64 characters", NULL}, + { 2, ERR_TRAP_TYPE, "trap", + "TRAP-TYPE macro is not allowed in SMIv2", NULL}, + { 2, ERR_TOO_MANY_MODULE_IDENTITIES, "module-identity-multiple", + "more than one MODULE-IDENTITY clause in SMIv2 MIB", NULL}, + { 2, ERR_NO_MODULE_IDENTITY, "module-identity-missing", + "missing MODULE-IDENTITY clause in SMIv2 MIB", NULL}, + { 2, ERR_OID_DEFVAL_TOO_LONG_SMIV2, "default-too-long-smiv2", + "object identifier default values must be expressed as a single identifier", NULL}, + { 4, ERR_OID_DEFVAL_TOO_LONG_SMIV1, "default-too-long-smiv1", + "object identifier default values in form of sub-identifier sequences are not implemented", NULL}, + { 2, ERR_INVALID_SMIV1_ACCESS, "access-invalid-smiv1", + "invalid access `%s' in SMIv1 MIB", NULL}, + { 2, ERR_INVALID_SMIV2_ACCESS, "access-invalid-smiv2", + "invalid access `%s' in SMIv2 MIB", NULL}, + { 2, ERR_SMIV2_WRITE_ONLY, "access-write-only-smiv2", + "access `write-only' is no longer allowed in SMIv2", NULL}, + { 4, ERR_SMIV1_WRITE_ONLY, "access-write-only-smiv1", + "access `write-only' is not a good idea", NULL}, + { 2, ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, "variation-access-notification", + "invalid access `%s' in a notification variation", NULL}, + { 2, ERR_INVALID_VARIATION_ACCESS, "variation-access", + "invalid access `%s' in a variation", NULL}, + { 2, ERR_NOTIFICATION_VARIATION_SYNTAX, "variation-syntax", + "SYNTAX is not allowed in a notification variation", NULL}, + { 2, ERR_NOTIFICATION_VARIATION_WRITESYNTAX, "variation-writesyntax", + "WRITE-SYNTAX is not allowed in a notification variation", NULL}, + { 2, ERR_DEFVAL_SYNTAX, "defval-syntax", + "default value syntax does not match object syntax", NULL}, + { 2, ERR_NOTIFICATION_VARIATION_DEFVAL, "variation-defval", + "default value is not allowed in a notification variation", NULL}, + { 2, ERR_NOTIFICATION_VARIATION_CREATION, "variation-creation", + "CREATION-REQUIRES is not allowed in a notification variation", NULL}, + { 3, ERR_MODULE_IDENTITY_NOT_FIRST, "module-identity-not-first", + "MODULE-IDENTITY clause must be the first declaration in a module", NULL}, + { 2, ERR_INVALID_SMIV1_STATUS, "status-invalid-smiv1", + "invalid status `%s' in SMIv1 MIB", NULL}, + { 2, ERR_INVALID_SMIV2_STATUS, "status-invalid-smiv2", + "invalid status `%s' in SMIv2 MIB", NULL}, + { 2, ERR_INVALID_CAPABILITIES_STATUS, "status-invalid-capabilities", + "invalid status `%s' in AGENT-CAPABILITIES macro", NULL}, + { 5, ERR_OIDNAME_INCLUDES_HYPHEN, "hyphen-in-object", + "object identifier name `%s' should not include hyphens in SMIv2 MIB", NULL}, + { 2, ERR_ILLEGAL_CHAR_IN_STRING, "char-illegal-string", + "illegal character `%c' (0x%2x) in quoted string", NULL}, + { 2, ERR_BIN_STRING_MUL8, "stringlength-binary", + "length of binary string `%s' is not a multiple of 8", NULL}, + { 2, ERR_HEX_STRING_MUL2, "stringlength-hexadecimal", + "length of hexadecimal string `%s' is not a multiple of 2", NULL}, + { 5, ERR_FLUSH_DECLARATION, "internal-flushing", + "flushing recent incorrect declaration, see previous error(s)", NULL}, + { 2, ERR_MAX_ACCESS_IN_SMIV1, "maxaccess-in-smiv1", + "MAX-ACCESS is SMIv2 style, use ACCESS in SMIv1 MIBs instead", NULL}, + { 2, ERR_ACCESS_IN_SMIV2, "access-in-smiv2", + "ACCESS is SMIv1 style, use MAX-ACCESS in SMIv2 MIBs instead", NULL}, + { 1, ERR_MODULE_NOT_FOUND, "module-not-found", + "failed to locate MIB module `%s'", NULL}, + { 1, ERR_OPENING_INPUTFILE, "module-not-readable", + "%s: %s", NULL}, + { 1, ERR_ILLEGAL_INPUTFILE, "module-unknown-format", + "%s: unable to determine SMI version", NULL}, + { 1, ERR_UNKNOWN_OIDLABEL, "object-identifier-unknown", + "unknown object identifier label `%s'", NULL}, + { 5, ERR_OIDLABEL_CHANGED, "object-identifier-label-not-matching", + "label `%s' does not match previous label `%s' for same object identifier", NULL}, + { 5, ERR_IDENTIFIER_OID_CHANGED, "object-identifier-oid-not-matching", + "object identifier for label `%s' does not match previous label usage", NULL}, + { 2, ERR_EXISTENT_OBJECT, "object-identifier-redefined", + "an object named `%s' already exists", NULL}, + { 2, ERR_IDENTIFIER_NOT_IN_MODULE, "import-failed", + "identifier `%s' cannot be imported from module `%s'", NULL}, + { 1, ERR_MACRO, "macro-not-allowed", + "MACRO definitions are only allowed in SMI base modules", NULL}, + { 1, ERR_CHOICE, "choice-not-allowed", + "CHOICE type definitions are only allowed in SMI base modules", NULL}, + { 1, ERR_TYPE_SMI_OR_SPPI, "type-not-allowed", + "type `%s' may only be defined in SMI/SPPI base modules", NULL}, + { 1, ERR_TYPE_SPPI, "type-not-allowed-sppi", + "type `%s' may only be defined in SPPI base modules", NULL}, + { 1, ERR_TYPE_TAG, "tagged-type-not-allowed", + "tagged or IMPLICIT types may only be defined in SMI base modules", NULL}, + { 1, ERR_EXPORTS, "export-not-allowed", + "EXPORTS are only allowed in SMIv1 base modules", NULL}, + { 1, ERR_ILLEGALLY_QUALIFIED, "object-identifier-qualified", + "illegally qualified object identifier label `%s'", NULL}, + { 2, ERR_MISSING_DESCRIPTION, "description-missing", + "description missing in object definition", NULL}, + { 2, ERR_OIDLABEL_NOT_FIRST, "object-identifier-not-prefix", + "Object identifier element `%s' name only allowed as first element", NULL}, + { 2, ERR_UNKNOWN_TYPE, "type-unknown", + "unknown type `%s'", NULL}, + { 2, ERR_UNKNOWN_CLASS, "class-unknown", + "unknown class `%s'", NULL}, + { 2, ERR_UNKNOWN_TYPE_OR_CLASS, "type-or-class-unknown", + "unknown type or class `%s' in attribute statement", NULL}, + { 2, ERR_ATTRIBUTE_CLASS_ACCESS, "class-refference-access-statement", + "attribute `%s' refferences class and must not have access statement", NULL}, + { 2, ERR_ATTRIBUTE_MISSING_ACCESS, "type-refference-missing-access-statement", + "attribute `%s' refferences type and must have access statement", NULL}, + { 2, ERR_ATTRIBUTE_CLASS_DEFAULT, "class-refference-default-statement", + "attribute `%s' refferences class and must not have default statement", NULL}, + { 2, ERR_ATTRIBUTE_CLASS_FORMAT, "class-refference-format-statement", + "attribute `%s' refferences class and must not have format statement", NULL}, + { 2, ERR_ATTRIBUTE_CLASS_UNITS, "class-refference-unit-statement", + "attribute `%s' refferences class and must not have units statement", NULL}, + { 2, ERR_DUPLICATE_TYPE_NAME, "duplicate-type-name", + "type name `%s' already used in this module", NULL}, + { 2, ERR_ATTRIBUTE_NOT_FOUND, "unknown-attribute-name", + "attribute name `%s' is not defined in this class", NULL}, + { 2, ERR_DUPLICATE_ATTRIBUTE_NAME, "duplicate-attribute-name", + "attribute name `%s' already used in this class", NULL}, + { 2, ERR_DUPLICATE_CLASS_NAME, "duplicate-class-name", + "class name `%s' already used in this module", NULL}, + { 2, ERR_ILLEGAL_RANGE_FOR_COUNTER, "counter-range-illegal", + "illegal range restriction for counter type `%s'", NULL}, + { 2, ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, "range-illegal", + "illegal range restriction for non-numerical parent type `%s'", NULL}, + { 2, ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, "size-illegal", + "illegal size restriction for non-octet-string parent type `%s'", NULL}, + { 2, ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, "enum-illegal", + "illegal enumeration or bits restriction for non-enumeration-or-bits parent type `%s'", NULL}, + { 1, ERR_SMIV2_SIGNED_NUMBER_RANGE, "out-of-range-signed", + "number `%s' is out of SMIv1/SMIv2 signed number range", NULL}, + { 1, ERR_SMIV2_UNSIGNED_NUMBER_RANGE, "out-of-range-unsigned", + "number `%s' is out of SMIv1/SMIv2 unsigned number range", NULL}, + { 1, ERR_INTEGER32_TOO_LARGE, "out-of-range-integer32", + "Integer32 value `%u' is too large", NULL}, + { 1, ERR_UNEXPECTED_VALUETYPE, "type-not-matching", + "type of value does not match declaration", NULL}, + { 1, ERR_FLOAT_OVERFLOW, "under-or-overflow-float", + "float value `%s' cannot be stored as it causes over or underflow", NULL}, + { 1, ERR_SMI_NOT_SUPPORTED, "smi-not-supported", + "file `%s' seems to be SMIv1 or SMIv2 which is not supported", NULL}, + { 1, ERR_SMING_NOT_SUPPORTED, "sming-not-supported", + "file `%s' seems to be SMIng which is not supported", NULL}, + { 5, ERR_UNUSED_IMPORT, "import-unused", + "identifier `%s' imported from module `%s' is never used", NULL}, + { 2, ERR_MACRO_NOT_IMPORTED, "macro-not-imported", + "macro `%s' has not been imported from module `%s'", NULL}, + { 5, ERR_IMPLICIT_NODE, "node-implicit", + "implicit node definition", NULL}, + { 3, ERR_SCALAR_READCREATE, "scalar-not-creatable", + "scalar object must not have a `read-create' access value", NULL}, + { 4, ERR_NAMEDNUMBER_INCLUDES_HYPHEN, "hyphen-in-label", + "named number `%s' must not include a hyphen in SMIv2", NULL}, + { 4, ERR_NAMEDBIT_INCLUDES_HYPHEN, "hyphen-in-label", + "named bit `%s' must not include a hyphen in SMIv2", NULL}, + { 2, ERR_REDEFINITION, "identifier-redefined", + "redefinition of identifier `%s'", NULL}, + { 5, ERR_EXT_REDEFINITION, "identifier-external-redefined", + "redefinition of identifier `%s::%s'", NULL}, + { 5, ERR_CASE_REDEFINITION, "identifier-case-match", + "identifier `%s' differs from `%s' only in case", NULL}, + { 5, ERR_EXT_CASE_REDEFINITION, "identifier-external-case-match", + "identifier `%s' differs from `%s::%s' only in case", NULL}, + { 5, ERR_BASETYPE_REDEFINITION, "identifier-basetype-redefined", + "definition of identifier `%s' which is already a SMI or SPPI basetype", NULL}, + { 6, ERR_PREVIOUS_DEFINITION, "previous-definition", + "previous definition of `%s'", NULL}, + { 2, ERR_INVALID_FORMAT, "invalid-format", + "invalid format specification `%s'", NULL}, + { 3, ERR_REFINEMENT_ALREADY_EXISTS, "refinement-exists", + "refinement for `%s' already exists in this compliance statement", NULL}, + { 3, ERR_OPTIONALGROUP_ALREADY_EXISTS, "optional-group-exists", + "optional group definition for `%s' already exists in this compliance statement", NULL}, + { 2, ERR_UNEXPECTED_TYPE_RESTRICTION, "subtype-illegal", + "subtyping not allowed", + "The types OBJECT IDENTIFIER, IpAddress, Counter32, Counter64,\n" + "and TimeTicks, and any types in a SEQUENCE clause must not be\n" + "sub-typed (RFC 2578, Sections 7.1.12 and 9)."}, + { 1, ERR_UNKNOWN_CONFIG_CMD, "config-command-unknown", + "unknown configuration command `%s' in file `%s'", NULL}, + { 6, ERR_CACHE_CONFIG_NOT_SUPPORTED, "config-caching-not-supported", + "module caching is not supported though configured in file `%s'", NULL}, + { 4, ERR_SMIV2_OPAQUE_OBSOLETE, "opaque-smiv2", + "SMIv2 provides Opaque solely for backward-compatibility", NULL}, + { 4, ERR_SPPI_OPAQUE_OBSOLETE, "opaque-sppi", + "SPPI provides Opaque solely for backward-compatibility", NULL}, + { 2, ERR_DATE_CHARACTER, "date-character", + "date specification `%s' contains an illegal character", NULL}, + { 2, ERR_DATE_LENGTH, "date-length", + "date specification `%s' has an illegal length", NULL}, + { 2, ERR_DATE_VALUE, "date-value", + "date specification `%s' contains an illegal value", NULL}, + { 5, ERR_DATE_YEAR_2DIGITS, "date-year-2digits", + "date specification `%s' contains a two-digit year representing `%d'", NULL}, + { 2, ERR_DATE_YEAR, "date-year", + "date specification `%s' contains an illegal year", NULL}, + { 2, ERR_DATE_MONTH, "date-month", + "date specification `%s' contains an illegal month", NULL}, + { 2, ERR_DATE_DAY, "date-day", + "date specification `%s' contains an illegal day", NULL}, + { 2, ERR_DATE_HOUR, "date-hour", + "date specification `%s' contains an illegal hour", NULL}, + { 2, ERR_DATE_MINUTES, "date-minutes", + "date specification `%s' contains illegal minutes", NULL}, + { 4, ERR_DATE_IN_FUTURE, "date-in-future", + "date specification `%s' is in the future", NULL}, + { 4, ERR_DATE_IN_PAST, "date-in-past", + "date specification `%s' predates the SMI standard", NULL}, + { 3, ERR_REVISION_NOT_DESCENDING, "revision-not-descending", + "revision not in reverse chronological order", NULL}, + { 3, ERR_REVISION_MISSING, "revision-missing", + "revision for last update is missing", NULL}, + { 3, ERR_REVISION_AFTER_LAST_UPDATE, "revision-after-update", + "revision date after last update", NULL}, + { 5, ERR_INTEGER_IN_SMIV2, "integer-misuse", + "use Integer32 instead of INTEGER in SMIv2", NULL}, + { 5, ERR_MODULE_ALREADY_LOADED, "module-already-loaded", + "module `%s' is already loaded, aborting parser on this file", NULL}, + { 5, ERR_IDENTITY_PARENT_NOT_FOUND, "sming-identity-parent-not-found", + "sming identity parent `%s' could not be found, or is forward reference", NULL}, + { 2, ERR_SMIV2_BASETYPE_NOT_IMPORTED, "basetype-not-imported", + "SMIv2 base type `%s' must be imported from SNMPv2-SMI", NULL}, + { 2, ERR_BASETYPE_UNKNOWN, "basetype-unknown", + "type `%s' of node `%s' does not resolve to a known base type", NULL}, + { 2, ERR_ROW_SUBID_ONE, "row-node-subidentifier-one", + "subidentifier of row node `%s' must be 1", NULL}, + { 5, ERR_ROWNAME_ENTRY, "row-name-entry", + "row identifier `%s' should match `*Entry'", NULL}, + { 5, ERR_TABLENAME_TABLE, "table-name-table", + "table identifier `%s' should match `*Table'", NULL}, + { 5, ERR_ROWNAME_TABLENAME, "row-name-table-name", + "row identifier `%s' should have the same prefix as table identifier `%s'", NULL}, + { 5, ERR_SMIV2_TYPE_ASSIGNEMENT, "type-assignement-smiv2", + "type assignement `%s' should be a textual convention in SMIv2", NULL}, + { 5, ERR_ILLEGAL_IMPORT, "import-illegal", + "identifier `%s' may not be imported from module `%s'", NULL}, + { 3, ERR_SMIV2_NESTED_TEXTUAL_CONVENTION, "textual-convention-nested", + "textual convention `%s' can not be derived from the textual convention `%s'", NULL}, + { 3, ERR_TABLE_ACCESS, "access-table-illegal", + "table node `%s' must be `not-accessible'", NULL}, + { 3, ERR_ROW_ACCESS, "access-row-illegal", + "row node `%s' must be `not-accessible'", NULL}, + { 4, ERR_COUNTER_ACCESS, "access-counter-illegal", + "counter object `%s' must be `read-only' or `accessible-for-notify'", NULL}, + { 2, ERR_ENUM_SUBTYPE_OF, "subtype-enumeration-illegal", + "named number `%s(%d)' illegal in sub-type of `%s'", NULL}, + { 2, ERR_BITS_SUBTYPE_OF, "subtype-bits-illegal", + "named number `%s' illegal in sub-type of `%s'", NULL}, + { 2, ERR_ENUM_SUBTYPE, "subtype-enumeration-illegal", + "named number `%s(%d)' illegal in sub-type", NULL}, + { 2, ERR_BITS_SUBTYPE, "subtype-bits-illegal", + "named number `%s' illegal in sub-type", NULL}, + { 2, ERR_ENUM_NAME_REDEFINITION, "enum-name-redefinition", + "redefinition of name `%s' in number enumeration", NULL}, + { 2, ERR_ENUM_NUMBER_REDEFINITION, "enum-number-redefinition", + "redefinition of number `%d' in number enumeration", NULL}, + { 2, ERR_ENUM_NAME_NOT_DEFINED, "enum-name-not-defined", + "enumeration name `%s' not defined in this scope ", NULL}, + { 2, ERR_ENUM_ZERO, "enum-zero", + "number enumeration contains zero value in SMIv1 MIB", NULL}, + { 2, ERR_BITS_NAME_REDEFINITION, "bits-name-redefinition", + "redefinition of name `%s' in named bits list", NULL}, + { 2, ERR_BITS_NUMBER_REDEFINITION, "bits-number-redefinition", + "redefinition of number `%u' in named bits list", NULL}, + { 2, ERR_BITS_NUMBER_NEGATIVE, "bits-number-negative", + "there is negative number in bits definition", NULL}, + { 2, ERR_BITS_NUMBER_TOO_LARGE, "bits-number-too-large", + "named bit `%s(%u)' exceeds maximum bit position", NULL}, + { 4, ERR_BITS_NUMBER_LARGE, "bits-number-large", + "named bit `%s(%u)' may cause interoperability or implementation problems", NULL}, + { 4, ERR_BITS_ZERO_NOT_NAMED, "bits-zero-not-used", + "first bit (bit zero) has no name assigned", + "Named bits should start at bit position zero (RFC 2578,\n" + "Section 7.1.4)."}, + { 2, ERR_RANGE_OUT_OF_BASETYPE, "range-bounds", + "range limit exceeds underlying basetype", NULL}, + { 2, ERR_RANGE_OVERLAP, "range-overlap", + "overlapping range limits", NULL}, + { 5, ERR_RANGES_NOT_ASCENDING, "range-ascending", + "ranges not in ascending order", NULL}, + { 5, ERR_NAMED_NUMBERS_NOT_ASCENDING, "named-numbers-ascending", + "named numbers not in ascending order", NULL}, + { 2, ERR_EXCHANGED_RANGE_LIMITS, "range-exchanged", + "range limits must be `lower-bound .. upper-bound'", NULL}, + { 1, ERR_INDEX_BASETYPE, "index-illegal-basetype", + "illegal base type `%s' in index element `%s' of row %s", NULL}, + { 5, ERR_INDEX_TOO_LARGE, "index-exceeds-too-large", + "index of row `%s' can exceed OID size limit by %d subidentifier(s)", NULL}, + { 2, ERR_INDEX_NO_RANGE, "index-element-no-range", + "index element `%s' of row `%s' must have a range restriction", NULL}, + { 2, ERR_INDEX_NO_RANGE_MOD, "index-element-no-range", + "index element `%s::%s' of row `%s' must have a range restriction", NULL}, + { 3, ERR_INDEX_STRING_NO_SIZE, "index-element-no-size", + "index element `%s' of row `%s' must have a size restriction", + "Object identifiers are restricted in size to have at most 128\n" + "sub-identifiers. This implies that index elements used to form\n" + "instance identifiers must have a size contraint which ensures\n" + "that the 128 sub-identifier constraint is kept intact for any\n" + "possible combination of the index elements' values (RFC 2578,\n" + "Section 3.5)."}, + { 3, ERR_INDEX_STRING_NO_SIZE_MOD, "index-element-no-size", + "index element `%s::%s' of row `%s' must have a size restriction", + "Object identifiers are restricted in size to have at most 128\n" + "sub-identifiers. This implies that index elements used to form\n" + "instance identifiers must have a size contraint which ensures\n" + "that the 128 sub-identifier constraint is kept intact for any\n" + "possible combination of the index elements' values (RFC 2578,\n" + "Section 3.5)."}, + { 3, ERR_INDEX_OID_NO_SIZE, "index-element-no-size", + "index element `%s' of row `%s' should but cannot have a size restriction", + "Object identifiers are restricted in size to have at most 128\n" + "sub-identifiers. This implies that all index elements used to form\n" + "instance identifiers should have a size contraint which ensures\n" + "that the 128 sub-identifier constraint is kept intact for any\n" + "possible combination of the index elements' values (RFC 2578,\n" + "Section 3.5). However the type OBJECT IDENTIFIER cannot formally\n" + "be restricted in size (Section 9) although it is legal to use\n" + "objects of type OBJECT IDENTIFIER as index elements."}, + { 6, ERR_INDEX_OID_NO_SIZE_MOD, "index-element-no-size", + "index element `%s::%s' of row `%s' should but cannot have a size restriction", + "Object identifiers are restricted in size to have at most 128\n" + "sub-identifiers. This implies that all index elements used to form\n" + "instance identifiers should have a size contraint which ensures\n" + "that the 128 sub-identifier constraint is kept intact for any\n" + "possible combination of the index elements' values (RFC 2578,\n" + "Section 3.5). However the type OBJECT IDENTIFIER cannot formally\n" + "be restricted in size (Section 9) although it is legal to use\n" + "objects of type OBJECT IDENTIFIER as index elements."}, + { 1, ERR_INDEX_RANGE_NEGATIVE, "index-element-range-negative", + "range restriction of index element `%s' of row `%s' must be non-negative", NULL}, + { 1, ERR_INDEX_ENUM_NEGATIVE, "index-element-enum-negative", + "enumerations of index element `%s' of row `%s' must be non-negative", NULL}, + { 5, ERR_INDEX_NOT_COLUMN, "index-element-not-column", + "index element `%s' of row `%s' must be a column", NULL}, + { 2, ERR_AUGMENT_NESTED, "augment-nested", + "row `%s' augments `%s' which is not a base table row", NULL}, + { 2, ERR_AUGMENT_NO_ROW, "augment-no-row", + "row `%s' augments or extends `%s' which is not a row", NULL}, + { 4, ERR_NODE_NOT_IN_GROUP, "group-membership", + "node `%s' must be contained in at least one conformance group", NULL}, + { 4, ERR_NOTIFICATION_NOT_IN_GROUP, "group-membership", + "notification `%s' must be contained in at least one conformance group", NULL}, + { 3, ERR_INVALID_GROUP_MEMBER, "group-member-invalid", + "node `%s' is an invalid member of group `%s'", NULL}, + { 3, ERR_MIXED_GROUP_MEMBERS, "group-member-mixed", + "group `%s' contains scalars/columns and notifications", NULL}, + { 2, ERR_BAD_LOWER_IDENTIFIER_CASE, "bad-identifier-case", + "`%s' should start with a lower case letter", NULL}, + { 2, ERR_UNDERSCORE_IN_IDENTIFIER, "underscore-in-identifier", + "identifier `%s' must not contain an underscore", NULL}, + { 5, ERR_OID_REUSE, "oid-reuse", + "identifier `%s' reuses object identifier assigned to identifier `%s'", NULL}, + { 1, ERR_OID_REGISTERED, "oid-registered", + "identifier `%s' registers object identifier already registered by `%s'", NULL}, + { 1, ERR_OID_RECURSIVE, "oid-recursive", + "object identifier `%s' defined recursively or too long", NULL}, + { 5, ERR_COMMENT_TERMINATES, "comment-terminates", + "note, -- terminates a comment", NULL}, + { 5, ERR_OBSOLETE_IMPORT, "obsolete-import", + "identifier `%s' should be imported from `%s' instead of `%s'", NULL}, + { 4, ERR_GROUP_OBJECT_STATUS, "group-object-status", + "%s group `%s' includes %s object `%s'", NULL}, + { 4, ERR_COMPLIANCE_GROUP_STATUS, "compliance-group-status", + "%s compliance statement `%s' includes %s group `%s'", NULL}, + { 4, ERR_COMPLIANCE_OBJECT_STATUS, "compliance-object-status", + "%s compliance statement `%s' includes %s object `%s'", NULL}, + { 5, ERR_GROUP_UNREF, "group-unref", + "%s group `%s' is not referenced in this module", NULL}, + { 5, ERR_TYPE_UNREF, "type-unref", + "%s type `%s' is not referenced in this module", NULL}, + { 5, ERR_SEQUENCE_ORDER, "sequence-order", + "SEQUENCE element #%d `%s' does not match order of columnar objects under `%s'", NULL}, + { 3, ERR_SEQUENCE_NO_COLUMN, "sequence-no-column", + "SEQUENCE element #%d `%s' is not a child node under `%s'", NULL}, + { 3, ERR_SEQUENCE_MISSING_COLUMN, "sequence-missing-column", + "SEQUENCE of `%s' is missing columnar object `%s'", NULL}, + { 4, ERR_ILLEGAL_ROWSTATUS_DEFAULT, "rowstatus-default", + "illegal `RowStatus' default value `%s'", NULL}, + { 4, ERR_ILLEGAL_ROWSTATUS_ACCESS, "rowstatus-access", + "illegal `RowStatus' access value", NULL}, + { 4, ERR_ILLEGAL_STORAGETYPE_DEFAULT, "storagetype-default", + "illegal `StorageType' default value `%s'", NULL}, + { 2, ERR_DEFVAL_OUT_OF_BASETYPE, "defval-basetype", + "default value exceeds range of underlying basetype", NULL}, + { 2, ERR_DEFVAL_OUT_OF_RANGE, "defval-range", + "default value does not match range restriction of underlying type", NULL}, + { 2, ERR_DEFVAL_OUT_OF_ENUM, "defval-enum", + "default value does not match underlying enumeration type", NULL}, + { 5, ERR_TADDRESS_WITHOUT_TDOMAIN, "taddress-tdomain", + "`TAddress' object should have an accompanied `TDomain' object", NULL}, + { 5, ERR_INETADDRESS_WITHOUT_TYPE, "inetaddress-inetaddresstype", + "`InetAddress' object should have an accompanied preceding `InetAdressType' object", NULL}, + { 5, ERR_INETADDRESSTYPE_SUBTYPED, "inetaddresstype-subtyped", + "`InetAddressType' should not be subtyped", NULL}, + { 5, ERR_INETADDRESS_SPECIFIC, "inetaddress-specific", + "`InetAddress' should be used instead of `%s'", NULL}, + { 5, ERR_TRANSPORTADDRESS_WITHOUT_TYPE, "transportaddress-transportaddresstype", + "`TransportAddress' object should have an accompanied preceding `TransportAdressType' or `TransportDomain' object", NULL}, + { 5, ERR_TRANSPORTADDRESSTYPE_SUBTYPED, "transportaddresstype-subtyped", + "`TransportAddressType' should not be subtyped", NULL}, + { 5, ERR_TRANSPORTADDRESS_SPECIFIC, "transportaddress-specific", + "`TransportAddress' should be used instead of `%s'", NULL}, + { 3, ERR_NOTIFICATION_OBJECT_TYPE, "notification-object-type", + "object `%s' of notification `%s' must be a scalar or column", NULL}, + { 3, ERR_NOTIFICATION_OBJECT_ACCESS, "notification-object-access", + "object `%s' of notification `%s' must not be `not-accessible'", NULL}, + { 5, ERR_NOTIFICATION_OBJECT_MIX, "notification-object-mix", + "notification `%s' contains objects from multiple tables/groups", NULL}, + { 5, ERR_EMPTY_DESCRIPTION, "empty-description", + "zero-length description string", NULL}, + { 5, ERR_EMPTY_REFERENCE, "empty-reference", + "zero-length reference string", NULL}, + { 5, ERR_EMPTY_ORGANIZATION, "empty-organization", + "zero-length organization string", NULL}, + { 5, ERR_EMPTY_CONTACT, "empty-contact", + "zero-length contact string", NULL}, + { 5, ERR_EMPTY_FORMAT, "empty-format", + "zero-length format string", NULL}, + { 5, ERR_EMPTY_UNITS, "empty-units", + "zero-length units string", NULL}, + { 5, ERR_INDEX_DEFVAL, "index-element-has-default", + "index element `%s' of row `%s' has a default value", NULL}, + { 2, ERR_SEQUENCE_TYPE_MISMATCH, "sequence-type-mismatch", + "type of `%s' in sequence and object type definition do not match", NULL}, + { 5, ERR_INDEX_ACCESSIBLE, "index-element-accessible", + "index element `%s' of row `%s' should be not-accessible in SMIv2 MIB", NULL}, + { 5, ERR_INDEX_NON_ACCESSIBLE, "index-element-not-accessible", + "exactly one index element of row `%s' must be accessible", NULL}, + { 3, ERR_REFINEMENT_NOT_LISTED, "refinement-not-listed", + "refined object `%s' not listed in a mandatory or optional group", NULL}, + { 5, ERR_NOTIFICATION_NOT_REVERSIBLE, "notification-not-reversible", + "notification `%s' is not reverse mappable", NULL}, + { 5, ERR_NOTIFICATION_ID_TOO_LARGE, "notification-id-too-large", + "last sub-identifier of notification `%s' too large", NULL}, + { 2, ERR_NODE_PARENT_TYPE, "parent-node", + "node's parent node must be simple node", NULL}, + { 2, ERR_SCALAR_PARENT_TYPE, "parent-scalar", + "scalar's parent node must be simple node", NULL}, + { 2, ERR_TABLE_PARENT_TYPE, "parent-table", + "table's parent node must be simple node", NULL}, + { 2, ERR_TABLE_ROW_TYPE_MISMATCH, "table-type", + "table's SEQUENCE OF type does not match row type", NULL}, + { 2, ERR_ROW_PARENT_TYPE, "parent-row", + "row's parent node must be a table node", NULL}, + { 2, ERR_COLUMN_PARENT_TYPE, "parent-column", + "columnar object's parent node must be a row", NULL}, + { 2, ERR_NOTIFICATION_PARENT_TYPE, "parent-notification", + "notifications's parent node must be a simple node", NULL}, + { 2, ERR_GROUP_PARENT_TYPE, "parent-group", + "group's parent node must be a simple node", NULL}, + { 2, ERR_COMPLIANCE_PARENT_TYPE, "parent-compliance", + "compliance's parent node must be a simple node", NULL}, + { 2, ERR_CAPABILITIES_PARENT_TYPE, "parent-capabilities", + "capabilities' parent node must be a simple node", NULL}, + { 1, ERR_SPPI_SIGNED64_NUMBER_RANGE, "out-of-range-signed64", + "number `%s' is out of range for SPPI 64bit signed numbers", NULL}, + { 1, ERR_SPPI_UNSIGNED64_NUMBER_RANGE, "out-of-range-unsigned64", + "number `%s' is out of range for SPPI 64bit unsigned numbers", NULL}, + { 1, ERR_SMI_CONSTRUCT_IN_PIB, "keyword-illegal-in-pib", + "the SMI construct/keyword `%s' may not be used in a PIB", NULL}, + { 5, ERR_SMI_TYPE_IN_PIB, "smi-type-in-pib", + "`%s' is a base type in SMI", NULL}, + { 1, ERR_SPPI_CONSTRUCT_IN_MIB, "keyword-illegal-in-mib", + "the SPPI construct/keyword `%s' may not be used in a MIB", NULL}, + { 5, ERR_SPPI_TYPE_IN_MIB, "sppi-type-in-mib", + "`%s' is a base type in SPPI", NULL}, + { 2, ERR_POLICY_ACCESS_IN_PIB, "policy-access", + "the PIB uses POLICY-ACCESS where PIB-ACCESS is required", NULL}, + { 2, ERR_INVALID_SPPI_ACCESS, "access-invalid-sppi", + "invalid access `%s' in SPPI PIB", NULL}, + { 2, ERR_INVALID_SPPI_STATUS, "status-invalid-sppi", + "invalid status `%s' in SPPI PIB", NULL}, + { 1, ERR_SUBJECT_CATEGORIES_MISSING, "subject-categories-missing", + "a MODULE-IDENTITY clause lacks SUBJECT-CATEGORIES", NULL}, + { 2, ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS, "not-accessible-in-pib-access", + "PIB-ACCESS must not be set to `not-accessible'", NULL}, + { 2, ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS, "report-only-in-pib-min-access", + "PIB-MIN-ACCESS must not be set to `report-only'", NULL}, + { 1, ERR_INDEX_AND_AUGMENTS_USED, "index-and-augments", + "either INDEX or AUGMENTS may be used, but not both", NULL}, + { 1, ERR_INDEX_WITHOUT_PIB_INDEX, "index-without-pib-index", + "INDEX may not be used without PIB-INDEX", NULL}, + { 3, ERR_ERROR_NUMBER_RANGE, "install-error-range", + "the named-number for an INSTALL-ERROR is out of range: allowed 1..65535, current %d", NULL}, + { 2, ERR_SPPI_BASETYPE_NOT_IMPORTED, "sppi-basetype-not-imported", + "SPPI basetype `%s' must be imported from COPS-PR-SPPI", NULL}, + { 2, ERR_ROW_LACKS_PIB_INDEX, "row-lacks-pib-index", + "row definition lacks a PIB-INDEX/AUGMENTS/EXTENDS clause", NULL}, + { 2, ERR_PIB_INDEX_FOR_NON_ROW_TYPE, "pib-index-with-non-row-type", + "non row type contains a PIB-INDEX/AUGMENTS/EXTENDS clause", NULL}, + { 2, ERR_OPAQUE_IN_SYNTAX, "opaque-in-syntax", + "`Opaque' must not be used in SYNTAX clauses in PIB modules", NULL}, + { 2, ERR_IPADDRESS_IN_SYNTAX, "ipaddress-in-syntax", + "`IpAddress' must not be used in SYNTAX clauses in PIB modules", NULL}, + { 2, ERR_TABLE_LACKS_PIB_ACCESS, "table-lacks-pib-access", + "the table definition must contain a PIB-ACCESS clause", NULL}, + { 2, ERR_PIB_ACCESS_FOR_NON_TABLE, "pib-access-for-non-table", + "type is not a table but contains a PIB-ACCESS clause", NULL}, + { 2, ERR_INSTALL_ERRORS_FOR_NON_TABLE, "install-errors-for-non-table", + "type is not a table but contains a INSTALL-ERRORS clause", NULL}, + { 2, ERR_UNIQUENESS_FOR_NON_ROW, "uniqueness-for-non-row", + "type is not a row but contains a UNIQUENESS clause", NULL}, + { 2, ERR_NOT_A_COLUMN, "not-a-column", + "`%s', which is used in a UNIQUENESS clause, is not a column in this table", NULL}, + { 2, ERR_EXTENDS_WRONG_ROW_TYPE, "extend-row-type", + "row `%s' extends `%s' which is neither a base table row nor a sparsely-augmented table row", NULL}, + { 2, ERR_PIB_INDEX_NOT_INSTANCEID, "pib-index-not-instanceid", + "the PIB-INDEX `%s' must be of type `InstanceId'", NULL}, + { 2, ERR_LACKING_PIB_REFERENCES, "type-lacking-pib-references", + "objects with SYNTAX `ReferenceId' must contain a PIB-REFERENCES clause", NULL}, + { 2, ERR_PIB_REFERENCES_WRONG_TYPE, "pib-references-with-wrong-type", + "object contains a PIB-REFERENCES clause but is not of type `ReferenceId'", NULL}, + { 2, ERR_PIB_REFERENCES_NOT_ROW, "pib-references-not-row", + "the PIB-REFERENCES does not point to a row", NULL}, + { 2, ERR_LACKING_PIB_TAG, "type-lacking-pib-tag", + "objects with SYNTAX `TagReferenceId' must contain a PIB-TAG clause", NULL}, + { 2, ERR_PIB_TAG_WRONG_TYPE, "pib-tag-with-wrong-type", + "object contains a PIB-TAG clause but is not of type `TagReferenceId'", NULL}, + { 2, ERR_SUBJECT_CATEGORIES_MISSING_SUBID, "subject-categories-missing-subid", + "the SUBJECT-CATEGORIES are missing a sub-identifier", NULL}, + { 2, ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID, "subject-categories-all-with-subid", + "the SUBJECT-CATEGORIES `all' must not have a sub-identifier", NULL}, + { 3, ERR_SUBJECT_CATEGORIES_ALL, "subject-categories-all", + "SUBJECT-CATEGORIES contains several categories although `all' is used aswell", NULL}, + { 2, ERR_PIB_TAG_TYPE, "pib-tag-type", + "a PIB-TAG must point to an object with a SYNTAX of `TagId'", NULL}, + { 3, ERR_ATTRIBUTE_NOT_IN_GROUP, "attribute-not-in-group", + "attribute `%s' must be contained in at least one conformance group", NULL}, + { 0, ERR_OBJECTPTR_ELEMENT_IN_USE, "objectptr-element-in-use", + "objectPtr->%s is already in use (%s)", NULL}, + { 1, ERR_OID_ADMIN_ZERO, "last-subid-zero", + "last subidentifier assigned to `%s' may not be zero", NULL}, + { 5, ERR_TYPE_STATUS_DEPRECATED, "type-status-deprecated", + "type `%s' used by `%s' is deprecated", NULL}, + { 5, ERR_TYPE_STATUS_OBSOLETE, "type-status-obsolete", + "type `%s' used by `%s' is obsolete", + "This warning is generated in cases where something with status\n" + "`current' uses a type whose status has been changed to `obsolete'.\n" + "Note that the status of imported types can change without the\n" + "control of the modules using these types." }, + { 3, ERR_COMPLIANCE_MEMBER_NOT_LOCAL, "compliance-member-not-local", + "OBJECTS or NOTIFICATIONS member `%s' is not defined in this module", + "All elements of an OBJECTS statement within an OBJECT-GROUP clause\n" + "and all elements of a NOTIFICATIONS statement within a\n" + "NOTIFICATION-GROUP clause must be defined in the same module\n" + "where this OBJECT-GROUP or NOTIFICATION-GROUP appears (RFC 2580,\n" + "Sections 3.1 and 4.1)."}, + { 5, ERR_MIB_MODULENAME_SUFFIX, "module-name-suffix", + "module name `%s' should match `*-MIB'", NULL}, + { 5, ERR_PIB_MODULENAME_SUFFIX, "module-name-suffix", + "module name `%s' should match `*-PIB'", NULL}, + { 5, ERR_TYPE_WITHOUT_FORMAT, "type-without-format", + "type `%s' has no format specification", NULL}, + { 2, ERR_OBJECT_IN_NOTIFICATION_GROUP, "group-notifications-object", + "notification group `%s' includes object `%s'", NULL}, + { 2, ERR_NOTIFICATION_IN_OBJECT_GROUP, "group-objects-notification", + "object group `%s' includes notification `%s'", NULL}, + { 4, ERR_MODULE_IDENTITY_REGISTRATION, "module-identity-registration", + "uncontrolled MODULE-IDENTITY registration", + "The identities of IETF MIB modules should be registered below\n" + "mib-2, transmission, or snmpModules so that the registration\n" + "space can be controlled by IANA."}, + { 0, 0, NULL, NULL, NULL } +}; + + + +/* + *---------------------------------------------------------------------- + * + * smiSetErrorSeverity -- + * + * Sets the severity of errors with tags matching pattern. + * 0 <= severity <= 15 : sets severity to this value. + * severity == 128 : makes the parser to ignore the error. + * severity == -1 : makes the parser to allow the error. + * + * Results: + * None. + * + * Side effects: + * Changes the severity in the module internal error table. + * + *---------------------------------------------------------------------- + */ + +void +smiSetErrorSeverity(char *pattern, int severity) +{ + int i; + + for (i = 0; errors[i].fmt; i++) { + if (strstr(errors[i].tag, pattern) == errors[i].tag) { + if (severity == 128) { + errors[i].level |= 128; + } else if (severity == -1) { + errors[i].level &= 127; + } else { + errors[i].level = severity; + } + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiSetErrorHandler -- + * + * Set the function that is called to handle error messages. + * + * Results: + * None. + * + * Side effects: + * Changes the error handler used for subsequent error messages. + * + *---------------------------------------------------------------------- + */ + +void +smiSetErrorHandler(SmiErrorHandler smiErrorHandler) +{ + smiHandle->errorHandler = smiErrorHandler; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiGetErrorSeverity -- + * + * Return the severity of the error identified by id. + * + * Results: + * The error severity. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +smiGetErrorSeverity(int id) +{ + if (id < 0 || id >= (sizeof(errors) / sizeof(Error)) - 1) { + return -1; + } + return errors[id].level; +} + + +/* + *---------------------------------------------------------------------- + * + * smiGetErrorTag -- + * + * Return the tag of the error identified by id. + * + * Results: + * The error tag or NULL. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +char* +smiGetErrorTag(int id) +{ + if (id < 0 || id >= sizeof(errors) / sizeof(Error)) { + return NULL; + } + return errors[id].tag; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiGetErrorMsg -- + * + * Return the message of the error identified by id. + * + * Results: + * The error message or NULL. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +char* +smiGetErrorMsg(int id) +{ + if (id < 0 || id >= sizeof(errors) / sizeof(Error)) { + return NULL; + } + return errors[id].fmt; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiGetErrorDescription -- + * + * Return the description of the error identified by id. + * + * Results: + * The error description or NULL. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +char* +smiGetErrorDescription(int id) +{ + if (id < 0 || id >= sizeof(errors) / sizeof(Error)) { + return NULL; + } + return errors[id].description; +} + + + +/* + *---------------------------------------------------------------------- + * + * smiErrorHandler -- + * + * This is the default error printing function. This is the + * only place in the libsmi where any output is generated. + * This function may be replaced by an application specific + * error message handler. + * + * Results: + * None. + * + * Side effects: + * Prints error messages to the stderr output channel. + * + *---------------------------------------------------------------------- + */ + +void +smiErrorHandler(char *path, int line, int severity, char *msg, char *tag) +{ + if (path) { + fprintf(stderr, "%s:%d: ", path, line); + } + switch (severity) { + case 4: + case 5: + fprintf(stderr, "warning: "); + break; + case 6: + fprintf(stderr, "info: "); + break; + } + fprintf(stderr, "%s\n", msg); + + /* + * A severe error, no way to continue :-( + */ + if (severity <= 0) { + exit(1); + } +} + + + +/* + *---------------------------------------------------------------------- + * + * printError -- + * + * Internal error printer which is called by the varargs + * entry points (see below). If formats the error message + * and calls the error handling function that is currently + * registered. + * + * Results: + * None. + * + * Side effects: + * Terminates the program if the error is severe and there + * is no way to continue. + * + *---------------------------------------------------------------------- + */ + +static void +printError(Parser *parser, int id, int line, va_list ap) +{ + char *buffer; + int i; + + if (! smiHandle->errorHandler) { + return; + } + + /* + * Search for the tag instead of just using the id as an index so + * that we do not run into trouble if the id is bogus. + */ + + for (i = 0; errors[i].fmt; i++) { + if (errors[i].id == id) break; + } + if (! errors[i].fmt) { + i = 0; /* assumes that 0 is the internal error */ + } + + if (parser) { + + if (parser->modulePtr) { + if ((parser->modulePtr->export.conformance > errors[i].level) || + (parser->modulePtr->export.conformance == 0)) { + parser->modulePtr->export.conformance = errors[i].level; + } + } + + if ((errors[i].level <= smiHandle->errorLevel) && + (parser->flags & SMI_FLAG_ERRORS) && + ((smiDepth == 1) || (parser->flags & SMI_FLAG_RECURSIVE))) { + smiVasprintf(&buffer, errors[i].fmt, ap); + (smiHandle->errorHandler) (parser->path, line, + errors[i].level, buffer, errors[i].tag); + } + } else { + if (errors[i].level <= smiHandle->errorLevel) { + smiVasprintf(&buffer, errors[i].fmt, ap); + (smiHandle->errorHandler) (NULL, 0, errors[i].level, + buffer, errors[i].tag); + } + } +} + + + +/* + *---------------------------------------------------------------------- + * + * smiPrintErrorAtLine -- + * + * Like smiPrintError() but shows a specfic line no. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiPrintErrorAtLine(Parser *parser, int id, int line, ...) +{ + va_list ap; + + va_start(ap, line); + printError(parser, id, line, ap); + va_end(ap); +} + + + +/* + *---------------------------------------------------------------------- + * + * smiPrintError -- + * + * Prints an error message. The line number is taken from + * the current parser position. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +smiPrintError(Parser *parser, int id, ...) +{ + va_list ap; + + va_start(ap, id); + printError(parser, id, parser ? parser->line : 0, ap); + va_end(ap); +} diff --git a/lib/error.h b/lib/error.h new file mode 100644 index 0000000..3318ace --- /dev/null +++ b/lib/error.h @@ -0,0 +1,45 @@ +/* + * error.h -- + * + * Definitions for error handling. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: error.h 1151 2001-08-22 17:51:42Z strauss $ + */ + +#ifndef _ERROR_H +#define _ERROR_H + +#include "data.h" +#include "errormacros.h" /* list of error macros generated from error.c */ + + + +#ifdef yyerror +#undef yyerror +#endif +#define yyerror(msg) smiyyerror(msg, parserPtr) + + +extern int smiErrorLevel; /* Higher levels produce more warnings */ + +extern void smiErrorHandler(char *path, int line, int severity, + char *msg, char *tag); + +extern void smiSetErrorSeverity(char *pattern, int severity); + +extern int smiGetErrorSeverity(int id); + +extern char* smiGetErrorTag(int id); + +extern char* smiGetErrorMsg(int id); + +extern void smiPrintError(Parser *parser, int id, ...); + +extern void smiPrintErrorAtLine(Parser *parser, int id, int line, ...); + +#endif /* _ERROR_H */ diff --git a/lib/errormacros.h b/lib/errormacros.h new file mode 100644 index 0000000..2fe9896 --- /dev/null +++ b/lib/errormacros.h @@ -0,0 +1,275 @@ +#define ERR_INTERNAL 0 +#define ERR_MAX_LEX_DEPTH 1 +#define ERR_OUT_OF_MEMORY 2 +#define ERR_LEX_UNEXPECTED_CHAR 3 +#define ERR_OTHER_ERROR 4 +#define ERR_ILLEGAL_KEYWORD 5 +#define ERR_ID_ENDS_IN_HYPHEN 6 +#define ERR_LEADING_ZEROS 7 +#define ERR_NUMBER_TOO_LARGE 8 +#define ERR_MODULENAME_64 9 +#define ERR_MODULENAME_32 10 +#define ERR_TYPENAME_64 11 +#define ERR_TYPENAME_32 12 +#define ERR_OIDNAME_64 13 +#define ERR_OIDNAME_32 14 +#define ERR_ENUMNAME_64 15 +#define ERR_ENUMNAME_32 16 +#define ERR_BITNAME_64 17 +#define ERR_BITNAME_32 18 +#define ERR_UCIDENTIFIER_64 19 +#define ERR_LCIDENTIFIER_64 20 +#define ERR_TRAP_TYPE 21 +#define ERR_TOO_MANY_MODULE_IDENTITIES 22 +#define ERR_NO_MODULE_IDENTITY 23 +#define ERR_OID_DEFVAL_TOO_LONG_SMIV2 24 +#define ERR_OID_DEFVAL_TOO_LONG_SMIV1 25 +#define ERR_INVALID_SMIV1_ACCESS 26 +#define ERR_INVALID_SMIV2_ACCESS 27 +#define ERR_SMIV2_WRITE_ONLY 28 +#define ERR_SMIV1_WRITE_ONLY 29 +#define ERR_INVALID_NOTIFICATION_VARIATION_ACCESS 30 +#define ERR_INVALID_VARIATION_ACCESS 31 +#define ERR_NOTIFICATION_VARIATION_SYNTAX 32 +#define ERR_NOTIFICATION_VARIATION_WRITESYNTAX 33 +#define ERR_DEFVAL_SYNTAX 34 +#define ERR_NOTIFICATION_VARIATION_DEFVAL 35 +#define ERR_NOTIFICATION_VARIATION_CREATION 36 +#define ERR_MODULE_IDENTITY_NOT_FIRST 37 +#define ERR_INVALID_SMIV1_STATUS 38 +#define ERR_INVALID_SMIV2_STATUS 39 +#define ERR_INVALID_CAPABILITIES_STATUS 40 +#define ERR_OIDNAME_INCLUDES_HYPHEN 41 +#define ERR_ILLEGAL_CHAR_IN_STRING 42 +#define ERR_BIN_STRING_MUL8 43 +#define ERR_HEX_STRING_MUL2 44 +#define ERR_FLUSH_DECLARATION 45 +#define ERR_MAX_ACCESS_IN_SMIV1 46 +#define ERR_ACCESS_IN_SMIV2 47 +#define ERR_MODULE_NOT_FOUND 48 +#define ERR_OPENING_INPUTFILE 49 +#define ERR_ILLEGAL_INPUTFILE 50 +#define ERR_UNKNOWN_OIDLABEL 51 +#define ERR_OIDLABEL_CHANGED 52 +#define ERR_IDENTIFIER_OID_CHANGED 53 +#define ERR_EXISTENT_OBJECT 54 +#define ERR_IDENTIFIER_NOT_IN_MODULE 55 +#define ERR_MACRO 56 +#define ERR_CHOICE 57 +#define ERR_TYPE_SMI_OR_SPPI 58 +#define ERR_TYPE_SPPI 59 +#define ERR_TYPE_TAG 60 +#define ERR_EXPORTS 61 +#define ERR_ILLEGALLY_QUALIFIED 62 +#define ERR_MISSING_DESCRIPTION 63 +#define ERR_OIDLABEL_NOT_FIRST 64 +#define ERR_UNKNOWN_TYPE 65 +#define ERR_UNKNOWN_CLASS 66 +#define ERR_UNKNOWN_TYPE_OR_CLASS 67 +#define ERR_ATTRIBUTE_CLASS_ACCESS 68 +#define ERR_ATTRIBUTE_MISSING_ACCESS 69 +#define ERR_ATTRIBUTE_CLASS_DEFAULT 70 +#define ERR_ATTRIBUTE_CLASS_FORMAT 71 +#define ERR_ATTRIBUTE_CLASS_UNITS 72 +#define ERR_DUPLICATE_TYPE_NAME 73 +#define ERR_ATTRIBUTE_NOT_FOUND 74 +#define ERR_DUPLICATE_ATTRIBUTE_NAME 75 +#define ERR_DUPLICATE_CLASS_NAME 76 +#define ERR_ILLEGAL_RANGE_FOR_COUNTER 77 +#define ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE 78 +#define ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE 79 +#define ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE 80 +#define ERR_SMIV2_SIGNED_NUMBER_RANGE 81 +#define ERR_SMIV2_UNSIGNED_NUMBER_RANGE 82 +#define ERR_INTEGER32_TOO_LARGE 83 +#define ERR_UNEXPECTED_VALUETYPE 84 +#define ERR_FLOAT_OVERFLOW 85 +#define ERR_SMI_NOT_SUPPORTED 86 +#define ERR_SMING_NOT_SUPPORTED 87 +#define ERR_UNUSED_IMPORT 88 +#define ERR_MACRO_NOT_IMPORTED 89 +#define ERR_IMPLICIT_NODE 90 +#define ERR_SCALAR_READCREATE 91 +#define ERR_NAMEDNUMBER_INCLUDES_HYPHEN 92 +#define ERR_NAMEDBIT_INCLUDES_HYPHEN 93 +#define ERR_REDEFINITION 94 +#define ERR_EXT_REDEFINITION 95 +#define ERR_CASE_REDEFINITION 96 +#define ERR_EXT_CASE_REDEFINITION 97 +#define ERR_BASETYPE_REDEFINITION 98 +#define ERR_PREVIOUS_DEFINITION 99 +#define ERR_INVALID_FORMAT 100 +#define ERR_REFINEMENT_ALREADY_EXISTS 101 +#define ERR_OPTIONALGROUP_ALREADY_EXISTS 102 +#define ERR_UNEXPECTED_TYPE_RESTRICTION 103 +#define ERR_UNKNOWN_CONFIG_CMD 104 +#define ERR_CACHE_CONFIG_NOT_SUPPORTED 105 +#define ERR_SMIV2_OPAQUE_OBSOLETE 106 +#define ERR_SPPI_OPAQUE_OBSOLETE 107 +#define ERR_DATE_CHARACTER 108 +#define ERR_DATE_LENGTH 109 +#define ERR_DATE_VALUE 110 +#define ERR_DATE_YEAR_2DIGITS 111 +#define ERR_DATE_YEAR 112 +#define ERR_DATE_MONTH 113 +#define ERR_DATE_DAY 114 +#define ERR_DATE_HOUR 115 +#define ERR_DATE_MINUTES 116 +#define ERR_DATE_IN_FUTURE 117 +#define ERR_DATE_IN_PAST 118 +#define ERR_REVISION_NOT_DESCENDING 119 +#define ERR_REVISION_MISSING 120 +#define ERR_REVISION_AFTER_LAST_UPDATE 121 +#define ERR_INTEGER_IN_SMIV2 122 +#define ERR_MODULE_ALREADY_LOADED 123 +#define ERR_IDENTITY_PARENT_NOT_FOUND 124 +#define ERR_SMIV2_BASETYPE_NOT_IMPORTED 125 +#define ERR_BASETYPE_UNKNOWN 126 +#define ERR_ROW_SUBID_ONE 127 +#define ERR_ROWNAME_ENTRY 128 +#define ERR_TABLENAME_TABLE 129 +#define ERR_ROWNAME_TABLENAME 130 +#define ERR_SMIV2_TYPE_ASSIGNEMENT 131 +#define ERR_ILLEGAL_IMPORT 132 +#define ERR_SMIV2_NESTED_TEXTUAL_CONVENTION 133 +#define ERR_TABLE_ACCESS 134 +#define ERR_ROW_ACCESS 135 +#define ERR_COUNTER_ACCESS 136 +#define ERR_ENUM_SUBTYPE_OF 137 +#define ERR_BITS_SUBTYPE_OF 138 +#define ERR_ENUM_SUBTYPE 139 +#define ERR_BITS_SUBTYPE 140 +#define ERR_ENUM_NAME_REDEFINITION 141 +#define ERR_ENUM_NUMBER_REDEFINITION 142 +#define ERR_ENUM_NAME_NOT_DEFINED 143 +#define ERR_ENUM_ZERO 144 +#define ERR_BITS_NAME_REDEFINITION 145 +#define ERR_BITS_NUMBER_REDEFINITION 146 +#define ERR_BITS_NUMBER_NEGATIVE 147 +#define ERR_BITS_NUMBER_TOO_LARGE 148 +#define ERR_BITS_NUMBER_LARGE 149 +#define ERR_BITS_ZERO_NOT_NAMED 150 +#define ERR_RANGE_OUT_OF_BASETYPE 151 +#define ERR_RANGE_OVERLAP 152 +#define ERR_RANGES_NOT_ASCENDING 153 +#define ERR_NAMED_NUMBERS_NOT_ASCENDING 154 +#define ERR_EXCHANGED_RANGE_LIMITS 155 +#define ERR_INDEX_BASETYPE 156 +#define ERR_INDEX_TOO_LARGE 157 +#define ERR_INDEX_NO_RANGE 158 +#define ERR_INDEX_NO_RANGE_MOD 159 +#define ERR_INDEX_STRING_NO_SIZE 160 +#define ERR_INDEX_STRING_NO_SIZE_MOD 161 +#define ERR_INDEX_OID_NO_SIZE 162 +#define ERR_INDEX_OID_NO_SIZE_MOD 163 +#define ERR_INDEX_RANGE_NEGATIVE 164 +#define ERR_INDEX_ENUM_NEGATIVE 165 +#define ERR_INDEX_NOT_COLUMN 166 +#define ERR_AUGMENT_NESTED 167 +#define ERR_AUGMENT_NO_ROW 168 +#define ERR_NODE_NOT_IN_GROUP 169 +#define ERR_NOTIFICATION_NOT_IN_GROUP 170 +#define ERR_INVALID_GROUP_MEMBER 171 +#define ERR_MIXED_GROUP_MEMBERS 172 +#define ERR_BAD_LOWER_IDENTIFIER_CASE 173 +#define ERR_UNDERSCORE_IN_IDENTIFIER 174 +#define ERR_OID_REUSE 175 +#define ERR_OID_REGISTERED 176 +#define ERR_OID_RECURSIVE 177 +#define ERR_COMMENT_TERMINATES 178 +#define ERR_OBSOLETE_IMPORT 179 +#define ERR_GROUP_OBJECT_STATUS 180 +#define ERR_COMPLIANCE_GROUP_STATUS 181 +#define ERR_COMPLIANCE_OBJECT_STATUS 182 +#define ERR_GROUP_UNREF 183 +#define ERR_TYPE_UNREF 184 +#define ERR_SEQUENCE_ORDER 185 +#define ERR_SEQUENCE_NO_COLUMN 186 +#define ERR_SEQUENCE_MISSING_COLUMN 187 +#define ERR_ILLEGAL_ROWSTATUS_DEFAULT 188 +#define ERR_ILLEGAL_ROWSTATUS_ACCESS 189 +#define ERR_ILLEGAL_STORAGETYPE_DEFAULT 190 +#define ERR_DEFVAL_OUT_OF_BASETYPE 191 +#define ERR_DEFVAL_OUT_OF_RANGE 192 +#define ERR_DEFVAL_OUT_OF_ENUM 193 +#define ERR_TADDRESS_WITHOUT_TDOMAIN 194 +#define ERR_INETADDRESS_WITHOUT_TYPE 195 +#define ERR_INETADDRESSTYPE_SUBTYPED 196 +#define ERR_INETADDRESS_SPECIFIC 197 +#define ERR_TRANSPORTADDRESS_WITHOUT_TYPE 198 +#define ERR_TRANSPORTADDRESSTYPE_SUBTYPED 199 +#define ERR_TRANSPORTADDRESS_SPECIFIC 200 +#define ERR_NOTIFICATION_OBJECT_TYPE 201 +#define ERR_NOTIFICATION_OBJECT_ACCESS 202 +#define ERR_NOTIFICATION_OBJECT_MIX 203 +#define ERR_EMPTY_DESCRIPTION 204 +#define ERR_EMPTY_REFERENCE 205 +#define ERR_EMPTY_ORGANIZATION 206 +#define ERR_EMPTY_CONTACT 207 +#define ERR_EMPTY_FORMAT 208 +#define ERR_EMPTY_UNITS 209 +#define ERR_INDEX_DEFVAL 210 +#define ERR_SEQUENCE_TYPE_MISMATCH 211 +#define ERR_INDEX_ACCESSIBLE 212 +#define ERR_INDEX_NON_ACCESSIBLE 213 +#define ERR_REFINEMENT_NOT_LISTED 214 +#define ERR_NOTIFICATION_NOT_REVERSIBLE 215 +#define ERR_NOTIFICATION_ID_TOO_LARGE 216 +#define ERR_NODE_PARENT_TYPE 217 +#define ERR_SCALAR_PARENT_TYPE 218 +#define ERR_TABLE_PARENT_TYPE 219 +#define ERR_TABLE_ROW_TYPE_MISMATCH 220 +#define ERR_ROW_PARENT_TYPE 221 +#define ERR_COLUMN_PARENT_TYPE 222 +#define ERR_NOTIFICATION_PARENT_TYPE 223 +#define ERR_GROUP_PARENT_TYPE 224 +#define ERR_COMPLIANCE_PARENT_TYPE 225 +#define ERR_CAPABILITIES_PARENT_TYPE 226 +#define ERR_SPPI_SIGNED64_NUMBER_RANGE 227 +#define ERR_SPPI_UNSIGNED64_NUMBER_RANGE 228 +#define ERR_SMI_CONSTRUCT_IN_PIB 229 +#define ERR_SMI_TYPE_IN_PIB 230 +#define ERR_SPPI_CONSTRUCT_IN_MIB 231 +#define ERR_SPPI_TYPE_IN_MIB 232 +#define ERR_POLICY_ACCESS_IN_PIB 233 +#define ERR_INVALID_SPPI_ACCESS 234 +#define ERR_INVALID_SPPI_STATUS 235 +#define ERR_SUBJECT_CATEGORIES_MISSING 236 +#define ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS 237 +#define ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS 238 +#define ERR_INDEX_AND_AUGMENTS_USED 239 +#define ERR_INDEX_WITHOUT_PIB_INDEX 240 +#define ERR_ERROR_NUMBER_RANGE 241 +#define ERR_SPPI_BASETYPE_NOT_IMPORTED 242 +#define ERR_ROW_LACKS_PIB_INDEX 243 +#define ERR_PIB_INDEX_FOR_NON_ROW_TYPE 244 +#define ERR_OPAQUE_IN_SYNTAX 245 +#define ERR_IPADDRESS_IN_SYNTAX 246 +#define ERR_TABLE_LACKS_PIB_ACCESS 247 +#define ERR_PIB_ACCESS_FOR_NON_TABLE 248 +#define ERR_INSTALL_ERRORS_FOR_NON_TABLE 249 +#define ERR_UNIQUENESS_FOR_NON_ROW 250 +#define ERR_NOT_A_COLUMN 251 +#define ERR_EXTENDS_WRONG_ROW_TYPE 252 +#define ERR_PIB_INDEX_NOT_INSTANCEID 253 +#define ERR_LACKING_PIB_REFERENCES 254 +#define ERR_PIB_REFERENCES_WRONG_TYPE 255 +#define ERR_PIB_REFERENCES_NOT_ROW 256 +#define ERR_LACKING_PIB_TAG 257 +#define ERR_PIB_TAG_WRONG_TYPE 258 +#define ERR_SUBJECT_CATEGORIES_MISSING_SUBID 259 +#define ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID 260 +#define ERR_SUBJECT_CATEGORIES_ALL 261 +#define ERR_PIB_TAG_TYPE 262 +#define ERR_ATTRIBUTE_NOT_IN_GROUP 263 +#define ERR_OBJECTPTR_ELEMENT_IN_USE 264 +#define ERR_OID_ADMIN_ZERO 265 +#define ERR_TYPE_STATUS_DEPRECATED 266 +#define ERR_TYPE_STATUS_OBSOLETE 267 +#define ERR_COMPLIANCE_MEMBER_NOT_LOCAL 268 +#define ERR_MIB_MODULENAME_SUFFIX 269 +#define ERR_PIB_MODULENAME_SUFFIX 270 +#define ERR_TYPE_WITHOUT_FORMAT 271 +#define ERR_OBJECT_IN_NOTIFICATION_GROUP 272 +#define ERR_NOTIFICATION_IN_OBJECT_GROUP 273 +#define ERR_MODULE_IDENTITY_REGISTRATION 274 diff --git a/lib/libsmi.3 b/lib/libsmi.3 new file mode 100644 index 0000000..6e2cad4 --- /dev/null +++ b/lib/libsmi.3 @@ -0,0 +1,77 @@ +.\" +.\" $Id: libsmi.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH libsmi 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +libsmi \- library to access SMI management information +.SH DESCRIPTION +This library contains functions that allow access to SMI management +information stored in repositories that are managed by \fBlibsmi\fP, +currently directories containing SMIv1/v2 and SMIng MIB module files. +.PP +The libsmi API is defined in \fBsmi.h\fP. Functions are +documented in \fBsmi_config\fP(3), \fBsmi_module\fP(3), +\fBsmi_node\fP(3), \fBsmi_type\fP(3), and \fBsmi_macro\fP(3). +.PP +The purpose of libsmi is to separate the weird parsing and handling of +MIB modules from management applications. MIB modules conforming to +SMIv1, SMIv2 and SMIng - a new language for management information, +developed at the Technical University of Braunschweig, Germany - can +be handled by libsmi. +.PP +NOTE: SMIng support in the current release of libsmi is neither stable +nor representing the work done in the IETF SMING working group. It is +based research efforts at TU Braunschweig and within the IRTF in 1999-2000. +.PP +.SH "EXAMPLE" +.nf +#include +#include +#include + +int main(int argc, char *argv[]) +{ + SmiNode *smiNode; + int oidlen, first = 1; + + if (argc != 2) { + fprintf(stderr, "Usage: smisubtree oid\\n"); + exit(1); + } + + smiInit(NULL); + + for((smiNode = smiGetNode(NULL, argv[1])) && + (oidlen = smiNode->oidlen); + smiNode && (first || smiNode->oidlen > oidlen); + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY), + first = 0) { + + printf("%*s%-32s\\n", + (smiNode->oidlen - oidlen + 1) * 2, " ", + smiNode->name); + + }; + + exit(0); +} +.fi +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR "RFCs 2578-2580" +specify the SMIv2 standard [STD 58]. The (obsolete) SMIng specification +has been a working document of the IRTF +Network Management Working Group (NMRG) (draft-irtf-nmrg-sming-02). +.PP +.BR smi.h ", " +.BR smi_config "(3), " +.BR smi_module "(3), " +.BR smi_node "(3), " +.BR smi_type "(3), " +.BR smi_macro "(3), " +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/libsmi.3.in b/lib/libsmi.3.in new file mode 100644 index 0000000..c5dc0b1 --- /dev/null +++ b/lib/libsmi.3.in @@ -0,0 +1,77 @@ +.\" +.\" $Id: libsmi.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH libsmi 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +libsmi \- library to access SMI management information +.SH DESCRIPTION +This library contains functions that allow access to SMI management +information stored in repositories that are managed by \fBlibsmi\fP, +currently directories containing SMIv1/v2 and SMIng MIB module files. +.PP +The libsmi API is defined in \fBsmi.h\fP. Functions are +documented in \fBsmi_config\fP(3), \fBsmi_module\fP(3), +\fBsmi_node\fP(3), \fBsmi_type\fP(3), and \fBsmi_macro\fP(3). +.PP +The purpose of libsmi is to separate the weird parsing and handling of +MIB modules from management applications. MIB modules conforming to +SMIv1, SMIv2 and SMIng - a new language for management information, +developed at the Technical University of Braunschweig, Germany - can +be handled by libsmi. +.PP +NOTE: SMIng support in the current release of libsmi is neither stable +nor representing the work done in the IETF SMING working group. It is +based research efforts at TU Braunschweig and within the IRTF in 1999-2000. +.PP +.SH "EXAMPLE" +.nf +#include +#include +#include + +int main(int argc, char *argv[]) +{ + SmiNode *smiNode; + int oidlen, first = 1; + + if (argc != 2) { + fprintf(stderr, "Usage: smisubtree oid\\n"); + exit(1); + } + + smiInit(NULL); + + for((smiNode = smiGetNode(NULL, argv[1])) && + (oidlen = smiNode->oidlen); + smiNode && (first || smiNode->oidlen > oidlen); + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY), + first = 0) { + + printf("%*s%-32s\\n", + (smiNode->oidlen - oidlen + 1) * 2, " ", + smiNode->name); + + }; + + exit(0); +} +.fi +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR "RFCs 2578-2580" +specify the SMIv2 standard [STD 58]. The (obsolete) SMIng specification +has been a working document of the IRTF +Network Management Working Group (NMRG) (draft-irtf-nmrg-sming-02). +.PP +.BR smi.h ", " +.BR smi_config "(3), " +.BR smi_module "(3), " +.BR smi_node "(3), " +.BR smi_type "(3), " +.BR smi_macro "(3), " +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/parser-smi.c b/lib/parser-smi.c new file mode 100644 index 0000000..9fa7c9c --- /dev/null +++ b/lib/parser-smi.c @@ -0,0 +1,10065 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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, 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. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse smiparse +#define yylex smilex +#define yyerror smierror +#define yylval smilval +#define yychar smichar +#define yydebug smidebug +#define yynerrs sminerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DOT_DOT = 258, + COLON_COLON_EQUAL = 259, + UPPERCASE_IDENTIFIER = 260, + LOWERCASE_IDENTIFIER = 261, + NUMBER = 262, + NEGATIVENUMBER = 263, + NUMBER64 = 264, + NEGATIVENUMBER64 = 265, + BIN_STRING = 266, + HEX_STRING = 267, + QUOTED_STRING = 268, + ACCESS = 269, + AGENT_CAPABILITIES = 270, + APPLICATION = 271, + AUGMENTS = 272, + BEGIN_ = 273, + BITS = 274, + CHOICE = 275, + CONTACT_INFO = 276, + CREATION_REQUIRES = 277, + COUNTER32 = 278, + COUNTER64 = 279, + DEFINITIONS = 280, + DEFVAL = 281, + DESCRIPTION = 282, + DISPLAY_HINT = 283, + END = 284, + ENTERPRISE = 285, + EXPORTS = 286, + EXTENDS = 287, + FROM = 288, + GROUP = 289, + GAUGE32 = 290, + IDENTIFIER = 291, + IMPLICIT = 292, + IMPLIED = 293, + IMPORTS = 294, + INCLUDES = 295, + INDEX = 296, + INSTALL_ERRORS = 297, + INTEGER = 298, + INTEGER32 = 299, + INTEGER64 = 300, + IPADDRESS = 301, + LAST_UPDATED = 302, + MACRO = 303, + MANDATORY_GROUPS = 304, + MAX_ACCESS = 305, + MIN_ACCESS = 306, + MODULE = 307, + MODULE_COMPLIANCE = 308, + MODULE_IDENTITY = 309, + NOT_ACCESSIBLE = 310, + NOTIFICATIONS = 311, + NOTIFICATION_GROUP = 312, + NOTIFICATION_TYPE = 313, + OBJECT = 314, + OBJECT_GROUP = 315, + OBJECT_IDENTITY = 316, + OBJECT_TYPE = 317, + OBJECTS = 318, + OCTET = 319, + OF = 320, + ORGANIZATION = 321, + OPAQUE = 322, + PIB_ACCESS = 323, + PIB_DEFINITIONS = 324, + PIB_INDEX = 325, + PIB_MIN_ACCESS = 326, + PIB_REFERENCES = 327, + PIB_TAG = 328, + POLICY_ACCESS = 329, + PRODUCT_RELEASE = 330, + REFERENCE = 331, + REVISION = 332, + SEQUENCE = 333, + SIZE = 334, + STATUS = 335, + STRING = 336, + SUBJECT_CATEGORIES = 337, + SUPPORTS = 338, + SYNTAX = 339, + TEXTUAL_CONVENTION = 340, + TIMETICKS = 341, + TRAP_TYPE = 342, + UNIQUENESS = 343, + UNITS = 344, + UNIVERSAL = 345, + UNSIGNED32 = 346, + UNSIGNED64 = 347, + VALUE = 348, + VARIABLES = 349, + VARIATION = 350, + WRITE_SYNTAX = 351 + }; +#endif +/* Tokens. */ +#define DOT_DOT 258 +#define COLON_COLON_EQUAL 259 +#define UPPERCASE_IDENTIFIER 260 +#define LOWERCASE_IDENTIFIER 261 +#define NUMBER 262 +#define NEGATIVENUMBER 263 +#define NUMBER64 264 +#define NEGATIVENUMBER64 265 +#define BIN_STRING 266 +#define HEX_STRING 267 +#define QUOTED_STRING 268 +#define ACCESS 269 +#define AGENT_CAPABILITIES 270 +#define APPLICATION 271 +#define AUGMENTS 272 +#define BEGIN_ 273 +#define BITS 274 +#define CHOICE 275 +#define CONTACT_INFO 276 +#define CREATION_REQUIRES 277 +#define COUNTER32 278 +#define COUNTER64 279 +#define DEFINITIONS 280 +#define DEFVAL 281 +#define DESCRIPTION 282 +#define DISPLAY_HINT 283 +#define END 284 +#define ENTERPRISE 285 +#define EXPORTS 286 +#define EXTENDS 287 +#define FROM 288 +#define GROUP 289 +#define GAUGE32 290 +#define IDENTIFIER 291 +#define IMPLICIT 292 +#define IMPLIED 293 +#define IMPORTS 294 +#define INCLUDES 295 +#define INDEX 296 +#define INSTALL_ERRORS 297 +#define INTEGER 298 +#define INTEGER32 299 +#define INTEGER64 300 +#define IPADDRESS 301 +#define LAST_UPDATED 302 +#define MACRO 303 +#define MANDATORY_GROUPS 304 +#define MAX_ACCESS 305 +#define MIN_ACCESS 306 +#define MODULE 307 +#define MODULE_COMPLIANCE 308 +#define MODULE_IDENTITY 309 +#define NOT_ACCESSIBLE 310 +#define NOTIFICATIONS 311 +#define NOTIFICATION_GROUP 312 +#define NOTIFICATION_TYPE 313 +#define OBJECT 314 +#define OBJECT_GROUP 315 +#define OBJECT_IDENTITY 316 +#define OBJECT_TYPE 317 +#define OBJECTS 318 +#define OCTET 319 +#define OF 320 +#define ORGANIZATION 321 +#define OPAQUE 322 +#define PIB_ACCESS 323 +#define PIB_DEFINITIONS 324 +#define PIB_INDEX 325 +#define PIB_MIN_ACCESS 326 +#define PIB_REFERENCES 327 +#define PIB_TAG 328 +#define POLICY_ACCESS 329 +#define PRODUCT_RELEASE 330 +#define REFERENCE 331 +#define REVISION 332 +#define SEQUENCE 333 +#define SIZE 334 +#define STATUS 335 +#define STRING 336 +#define SUBJECT_CATEGORIES 337 +#define SUPPORTS 338 +#define SYNTAX 339 +#define TEXTUAL_CONVENTION 340 +#define TIMETICKS 341 +#define TRAP_TYPE 342 +#define UNIQUENESS 343 +#define UNITS 344 +#define UNIVERSAL 345 +#define UNSIGNED32 346 +#define UNSIGNED64 347 +#define VALUE 348 +#define VARIABLES 349 +#define VARIATION 350 +#define WRITE_SYNTAX 351 + + + + +/* Copy the first part of user declarations. */ +#line 14 "parser-smi.y" + + +#include + +#ifdef BACKEND_SMI + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#include +#endif + +#include "smi.h" +#include "error.h" +#include "parser-smi.h" +#include "scanner-smi.h" +#include "data.h" +#include "check.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* + * These arguments are passed to yyparse() and yylex(). + */ +#define YYPARSE_PARAM parserPtr +#define YYLEX_PARAM parserPtr + + + +#define thisParserPtr ((Parser *)parserPtr) +#define thisModulePtr (((Parser *)parserPtr)->modulePtr) + + + +/* + * NOTE: The argument lvalp is not really a void pointer. Unfortunately, + * we don't know it better at this point. bison generated C code declares + * YYSTYPE just a few lines below based on the `%union' declaration. + */ +extern int yylex(void *lvalp, Parser *parserPtr); + + + +static int impliedFlag; +static SmiNodekind variationkind; +static SmiBasetype defaultBasetype; +static int indexFlag; + +/* + * Values for the indexFlag variable + */ +#define INDEXFLAG_NONE 0 +#define INDEXFLAG_PIBINDEX 1 +#define INDEXFLAG_AUGMENTS 2 +#define INDEXFLAG_EXTENDS 3 + + +#define SMI_EPOCH 631152000 /* 01 Jan 1990 00:00:00 */ + + + +static char *convertImportv2[] = { + "RFC1155-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1155-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1155-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1155-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1155-SMI", "private", "SNMPv2-SMI", "private", + "RFC1155-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1155-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1155-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1155-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1155-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1155-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1065-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1065-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1065-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1065-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1065-SMI", "private", "SNMPv2-SMI", "private", + "RFC1065-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1065-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1065-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1065-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1065-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1065-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1213-MIB", "mib-2", "SNMPv2-SMI", "mib-2", + "RFC1213-MIB", "DisplayString", "SNMPv2-TC", "DisplayString", + NULL, NULL, NULL, NULL +}; + + + +static void +checkDescr(Parser *parser, char *descr) +{ + if (descr) { + if (descr[0] == 0) { + smiPrintError(parser, ERR_EMPTY_DESCRIPTION); + } + /* we might want to add more checks since I have recently + seen things like DESCRIPTION "." to cirumvent warnings */ + } +} + + + +static void +checkNameLen(Parser *parser, char *name, int error_32, int error_64) +{ + int len = strlen(name); + + if (len > 64) { + smiPrintError(parser, error_64, name); + } else if (len > 32) { + smiPrintError(parser, error_32, name); + } +} + + + +static void +checkModuleName(Parser *parserPtr, Module *modulePtr) +{ + static char *mib_ignore[] = { + "SNMPv2-SMI", "SNMPv2-TC", "SNMPv2-CONF", NULL + }; + + static char *pib_ignore[] = { + "COPS-PR-SPPI", "COPS-PR-SPPI-TC", + "SNMPv2-SMI", "SNMPv2-TC", "SNMPv2-CONF", NULL + }; + + const char *name = thisModulePtr->export.name; + const int len = strlen(name); + int i; + + switch (modulePtr->export.language) { + case SMI_LANGUAGE_SMIV1: + case SMI_LANGUAGE_SMIV2: + case SMI_LANGUAGE_SMING: + for (i = 0; mib_ignore[i]; i++) { + if (strcmp(mib_ignore[i], name) == 0) { + return; + } + } + if (len > 3 && (strcmp(name + len - 4, "-MIB") != 0)) { + smiPrintError(parserPtr, ERR_MIB_MODULENAME_SUFFIX, name); + return; + } + break; + case SMI_LANGUAGE_SPPI: + for (i = 0; pib_ignore[i]; i++) { + if (strcmp(pib_ignore[i], name) == 0) { + return; + } + } + if (len > 3 && (strcmp(name + len - 4, "-PIB") != 0)) { + smiPrintError(parserPtr, ERR_PIB_MODULENAME_SUFFIX, name); + } + break; + case SMI_LANGUAGE_UNKNOWN: + break; + } +} + + + +static void +checkModuleIdentity(Parser *parserPtr, Module *modulePtr) +{ + if ((modulePtr->export.language == SMI_LANGUAGE_SMIV2) + && (modulePtr->numModuleIdentities < 1) + && strcmp(modulePtr->export.name, "SNMPv2-SMI") + && strcmp(modulePtr->export.name, "SNMPv2-CONF") + && strcmp(modulePtr->export.name, "SNMPv2-TC") + && strcmp(modulePtr->export.name, "COPS-PR-SPPI")) { + smiPrintError(parserPtr, ERR_NO_MODULE_IDENTITY); + } +} + + + +static void +checkObjects(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + Node *nodePtr; + int i; + Type *counterTypePtr, *counter32TypePtr, *counter64TypePtr; + + counterTypePtr = findTypeByName("Counter"); + counter32TypePtr = findTypeByModulenameAndName("SNMPv2-SMI", "Counter32"); + counter64TypePtr = findTypeByModulenameAndName("SNMPv2-SMI", "Counter64"); + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + Object *parentPtr; + + if ((objectPtr->export.decl != SMI_DECL_UNKNOWN) && + objectPtr->nodePtr->parentPtr && + objectPtr->nodePtr->parentPtr->lastObjectPtr) { + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + } else { + parentPtr = NULL; + } + + /* + * Set nodekinds of all newly defined objects. + */ + + if (objectPtr->export.decl == SMI_DECL_MODULEIDENTITY) { + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + } else if ((objectPtr->export.decl == SMI_DECL_VALUEASSIGNMENT) || + (objectPtr->export.decl == SMI_DECL_OBJECTIDENTITY)) { + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->typePtr) && + (objectPtr->typePtr->export.decl == SMI_DECL_IMPL_SEQUENCEOF)) { + objectPtr->export.nodekind = SMI_NODEKIND_TABLE; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->export.indexkind != SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_ROW; + } else if ((objectPtr->export.decl == SMI_DECL_NOTIFICATIONTYPE) || + (objectPtr->export.decl == SMI_DECL_TRAPTYPE)) { + objectPtr->export.nodekind = SMI_NODEKIND_NOTIFICATION; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTGROUP) || + (objectPtr->export.decl == SMI_DECL_NOTIFICATIONGROUP)) { + objectPtr->export.nodekind = SMI_NODEKIND_GROUP; + } else if (objectPtr->export.decl == SMI_DECL_MODULECOMPLIANCE) { + objectPtr->export.nodekind = SMI_NODEKIND_COMPLIANCE; + } else if (objectPtr->export.decl == SMI_DECL_AGENTCAPABILITIES) { + objectPtr->export.nodekind = SMI_NODEKIND_CAPABILITIES; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (parentPtr) && + (parentPtr->export.indexkind != SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_COLUMN; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (parentPtr) && + (parentPtr->export.indexkind == SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_SCALAR; + } + } + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + Object *parentPtr; + + if (objectPtr->nodePtr->parentPtr && + objectPtr->nodePtr->parentPtr->lastObjectPtr) { + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + } else { + parentPtr = NULL; + } + + /* + * Check whether the associated type resolves to a known base type. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && objectPtr->typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + smiPrintErrorAtLine(parserPtr, ERR_BASETYPE_UNKNOWN, + objectPtr->line, + objectPtr->typePtr->export.name ? + objectPtr->typePtr->export.name : "[unknown]", + objectPtr->export.name); + if (objectPtr->nodePtr->parentPtr->firstObjectPtr->export.nodekind + == SMI_NODEKIND_TABLE) { + /* the parent node is a table node, so assume this is + * a row node. this adjusts missing INDEXs in RFC 1158. + */ + objectPtr->export.nodekind = SMI_NODEKIND_ROW; + } + } + + /* + * Mark types that are referenced in this module. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && (objectPtr->typePtr->export.decl == SMI_DECL_TYPEDEF + || objectPtr->typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION + || objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE)) { + addTypeFlags(objectPtr->typePtr, FLAG_INSYNTAX); + if (objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE) { + addTypeFlags(objectPtr->typePtr->parentPtr, FLAG_INSYNTAX); + } + } + + /* + * Check whether the status of the associated type matches the + * status of the object. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && (objectPtr->export.status < objectPtr->typePtr->export.status)) { + if (objectPtr->typePtr->export.status == SMI_STATUS_DEPRECATED) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_DEPRECATED, + objectPtr->line, + objectPtr->typePtr->export.name, + objectPtr->export.name); + } + if (objectPtr->typePtr->export.status == SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_OBSOLETE, + objectPtr->line, + objectPtr->typePtr->export.name, + objectPtr->export.name); + } + } + + /* + * Check the nodekind of the parent node. + */ + + if (parentPtr) { + switch (objectPtr->export.nodekind) { + case SMI_NODEKIND_COLUMN: + if (parentPtr->export.nodekind != SMI_NODEKIND_ROW) { + smiPrintErrorAtLine(parserPtr, ERR_COLUMN_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_ROW: + if (parentPtr->export.nodekind != SMI_NODEKIND_TABLE) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + if (parentPtr->typePtr && parentPtr->typePtr->parentPtr && + strcmp(parentPtr->typePtr->parentPtr->export.name, + objectPtr->typePtr->export.name)) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_ROW_TYPE_MISMATCH, + objectPtr->line, + objectPtr->export.name); + } + break; + case SMI_NODEKIND_TABLE: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_SCALAR: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_SCALAR_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_NOTIFICATION: + if ((parentPtr->export.nodekind != SMI_NODEKIND_NODE) && + (parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, ERR_NOTIFICATION_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + if (parserPtr && parentPtr->nodePtr->parentPtr && + parentPtr->nodePtr->parentPtr->lastObjectPtr) { + Object *parent2Ptr = parentPtr->nodePtr->parentPtr->lastObjectPtr; + if ((parent2Ptr->export.nodekind != SMI_NODEKIND_NODE) && + (parent2Ptr->export.nodekind != SMI_NODEKIND_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, + ERR_NOTIFICATION_PARENT_TYPE, + objectPtr->line, + objectPtr->export.name); + } + } + break; + case SMI_NODEKIND_NODE: + /* Node defined by OBJECT IDENTIFIER assignments can have + arbitrary parent node. */ + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE) && + (objectPtr->export.decl != SMI_DECL_VALUEASSIGNMENT)) { + smiPrintErrorAtLine(parserPtr, ERR_NODE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_GROUP: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_GROUP_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_COMPLIANCE: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_COMPLIANCE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_CAPABILITIES: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_CAPABILITIES_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + } + } + + /* + * Check whether groups only contain scalars, columns and + * notifications. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_GROUP) { + smiCheckGroupMembers(parserPtr, objectPtr); + } + + /* + * Check whether compliance statements contain out of date + * groups or objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_COMPLIANCE) { + smiCheckComplianceStatus(parserPtr, objectPtr); + } + + /* + * Check whether notification statements contain useful + * objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + smiCheckNotificationOid(parserPtr, modulePtr, objectPtr); + smiCheckNotificationMembers(parserPtr, objectPtr); + } + + if (modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * Check whether tables and rows are not accessible + * (RFC 2578 7.1.12). + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_TABLE + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_ACCESS, + objectPtr->line, objectPtr->export.name); + } + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_ACCESS, + objectPtr->line, objectPtr->export.name); + } + + /* + * Check whether counter objects are read-only or + * accessible-for-notify (RFC 2578, 7.1.6). + */ + if (((objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) || + (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN)) && + (objectPtr->export.access != SMI_ACCESS_NOTIFY) && + (objectPtr->export.access != SMI_ACCESS_READ_ONLY) && + (smiTypeDerivedFrom(objectPtr->typePtr, counterTypePtr) || + smiTypeDerivedFrom(objectPtr->typePtr, counter32TypePtr) || + smiTypeDerivedFrom(objectPtr->typePtr, counter64TypePtr))) { + smiPrintErrorAtLine(parserPtr, ERR_COUNTER_ACCESS, + objectPtr->line, objectPtr->export.name); + } + } + + /* + * Check whether a row's subid is 1, see RFC 2578 7.10 (1). + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW) { + int len; + + if (objectPtr->nodePtr->subid != 1) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_SUBID_ONE, + objectPtr->line, objectPtr->export.name); + } + + len = strlen(objectPtr->export.name); + if (len < 6 || strcmp(objectPtr->export.name+len-5, "Entry")) { + smiPrintErrorAtLine(parserPtr, ERR_ROWNAME_ENTRY, + objectPtr->line, objectPtr->export.name); + } else { + + /* + * This misreports some cases where the table name + * does not have the "*Table" suffix. This is trying + * to allow Entry names of either fooTableEntry or + * fooEntry. + */ + if (parentPtr && + !(((int)strlen(parentPtr->export.name) == len || + (int)strlen(parentPtr->export.name) == len - 5) && + !strncmp(objectPtr->export.name, parentPtr->export.name, + len - 5))) { + smiPrintErrorAtLine(parserPtr, ERR_ROWNAME_TABLENAME, + objectPtr->line, + objectPtr->export.name, + parentPtr->export.name); + } + } + } + + /* + * Check whether a row's SEQUENCE contains exactly the list + * of child nodes (columns). An unknown SEQUENCE type + * is handled later. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW && + ((objectPtr->typePtr->flags & FLAG_INCOMPLETE) == 0)) { + List *p; + Node *seqNodePtr, *childNodePtr; + Object *colPtr; + int i; + + /* + * Walk through the SEQUENCE elements and find those + * that are misordered or have no matching columnar object. + */ + for (p = objectPtr->typePtr->listPtr, i = 1, + childNodePtr = objectPtr->nodePtr->firstChildPtr; + p && childNodePtr; + p = p->nextPtr, childNodePtr = childNodePtr->nextPtr, i++) { + seqNodePtr = ((Object *)p->ptr)->nodePtr; + + if (seqNodePtr->parentPtr != childNodePtr->parentPtr) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_NO_COLUMN, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + continue; + } + + if (seqNodePtr != childNodePtr) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_ORDER, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + break; + } + } + if ((p != NULL) && (childNodePtr == NULL)) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_NO_COLUMN, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + } + + /* + * Walk through all child objects and find those + * that were missing in the SEQUENCE. + */ + for (childNodePtr = objectPtr->nodePtr->firstChildPtr; + childNodePtr; childNodePtr = childNodePtr->nextPtr) { + colPtr = findObjectByModuleAndNode(modulePtr, childNodePtr); + if (!colPtr) continue; + for (p = objectPtr->typePtr->listPtr; p; p = p->nextPtr) { + if (((Object *)p->ptr)->nodePtr == colPtr->nodePtr) + break; + } + if (!p) { + if (colPtr->export.name) { + /* + * Don't complain, if it's an implcitly defined + * unnamed node (could happen for parent node of + * TRAP-TYPE definitions). + */ + smiPrintErrorAtLine(parserPtr, + ERR_SEQUENCE_MISSING_COLUMN, + objectPtr->typePtr->line, + objectPtr->typePtr->export.name, + colPtr->export.name); + } + } + } + + } + + if (objectPtr->export.nodekind == SMI_NODEKIND_TABLE) { + int len; + + len = strlen(objectPtr->export.name); + if (len < 6 || strcmp(objectPtr->export.name+len-5, "Table")) { + smiPrintErrorAtLine(parserPtr, ERR_TABLENAME_TABLE, + objectPtr->line, objectPtr->export.name); + } + } + + /* + * TODO: check whether the row is the only node below the + * table node + */ + + /* + * Check references to unknown identifiers. + */ + + if ((objectPtr->flags & FLAG_INCOMPLETE) && + (objectPtr->export.decl != SMI_DECL_IMPL_OBJECT)) { + if (objectPtr->export.name) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_OIDLABEL, + objectPtr->line, objectPtr->export.name); + } else { + smiPrintErrorAtLine(parserPtr, ERR_IMPLICIT_NODE, + objectPtr->line); + } + } + + /* + * Adjust the status of implicit type definitions. + */ + + if (objectPtr->typePtr + && (objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE) + && (objectPtr->typePtr->export.status == SMI_STATUS_UNKNOWN)) { + objectPtr->typePtr->export.status = objectPtr->export.status; + } + + /* + * Link implicit type definition from refinements into + * the type derivation tree. Adjust the status of implicit + * type definitions in refinements. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_COMPLIANCE) { + + List *listPtr; + + for (listPtr = objectPtr->refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + + Refinement *refinementPtr; + Type *typePtr; + + refinementPtr = ((Refinement *)(listPtr->ptr)); + typePtr = refinementPtr->typePtr; + if (typePtr) { + if (typePtr->export.status == SMI_STATUS_UNKNOWN) { + typePtr->export.status = objectPtr->export.status; + } + } + + typePtr = refinementPtr->writetypePtr; + if (typePtr) { + if (typePtr->export.status == SMI_STATUS_UNKNOWN) { + typePtr->export.status = objectPtr->export.status; + } + } + + } + /* relocate the refinement type into the type tree */ + /* relocate the write refinement type into the type tree */ + } + + /* + * Set the oidlen/oid values that are not yet correct. + */ + + if (objectPtr->export.oidlen == 0) { + if (objectPtr->nodePtr->oidlen == 0) { + for (nodePtr = objectPtr->nodePtr, i = 1; + nodePtr->parentPtr != thisParserPtr->pendingNodePtr && + nodePtr->parentPtr != smiHandle->rootNodePtr && + nodePtr != nodePtr->parentPtr && + i <= 128; + nodePtr = nodePtr->parentPtr, i++); + if ((objectPtr->export.name) && + ((i > 128) || (nodePtr == nodePtr->parentPtr))) { + smiPrintErrorAtLine(parserPtr, ERR_OID_RECURSIVE, + objectPtr->line, + objectPtr->export.name); + } + objectPtr->nodePtr->oid = smiMalloc(i * sizeof(SmiSubid)); + objectPtr->nodePtr->oidlen = i; + for (nodePtr = objectPtr->nodePtr; i > 0; i--) { + objectPtr->nodePtr->oid[i-1] = nodePtr->subid; + nodePtr = nodePtr->parentPtr; + } + } + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen; + objectPtr->export.oid = objectPtr->nodePtr->oid; + } + + if ((objectPtr->export.decl != SMI_DECL_UNKNOWN) + && (objectPtr->export.nodekind != SMI_NODEKIND_NODE) + && objectPtr->export.name + && objectPtr->export.oid[objectPtr->export.oidlen-1] == 0 + && objectPtr->export.oidlen != 2 && objectPtr->export.oid[0] != 0) { + smiPrintErrorAtLine(parserPtr, ERR_OID_ADMIN_ZERO, + objectPtr->line, + objectPtr->export.name); + } + + /* + * Check whether the module identity is registered in a well + * known controlled location. + */ + + if (objectPtr->export.decl == SMI_DECL_MODULEIDENTITY) { + smiCheckModuleIdentityRegistration(parserPtr, objectPtr); + } + + /* + * Check table linkage constraints for row objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW) { + switch (objectPtr->export.indexkind) { + case SMI_INDEX_INDEX: + smiCheckIndex(parserPtr, objectPtr); + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + smiCheckAugment(parserPtr, objectPtr); + break; + default: + break; + } + } + + /* + * Determine the longest common OID prefix of all nodes. + */ + + if (!modulePtr->prefixNodePtr) { + modulePtr->prefixNodePtr = objectPtr->nodePtr; + } else { + if (objectPtr->nodePtr->oidlen < modulePtr->prefixNodePtr->oidlen) { + Node *nodePtr = findNodeByOid(objectPtr->nodePtr->oidlen, + modulePtr->prefixNodePtr->oid); + if (nodePtr) + modulePtr->prefixNodePtr = nodePtr; + else + smiPrintError(parserPtr, ERR_OTHER_ERROR, + "Failed to create complete object tree - " + "expect incorrect output"); + } + for (i = 0; i < modulePtr->prefixNodePtr->oidlen; i++) { + if (modulePtr->prefixNodePtr->oid[i] != + objectPtr->nodePtr->oid[i]) { + modulePtr->prefixNodePtr = + findNodeByOid(i, modulePtr->prefixNodePtr->oid); + break; + } + } + } + } + + if (modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + /* + * Check whether all objects and notifications are contained in at + * least one conformance group (RFC 2580 3.3 and 4.1). + */ + + smiCheckGroupMembership(parserPtr, objectPtr); + } + } + + if (modulePtr->export.language == SMI_LANGUAGE_SPPI) { + Object *parentPtr; + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + /* + * All checks for SPPI constructs + */ + if (objectPtr->nodePtr->parentPtr) + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + else + parentPtr = NULL; + + /* + * Do all rows contain a PIB-INDEX/AUGMENTS/EXTENDS ? + * See RFC 3159 7.5, 7.7, 7.8 + */ + if (parentPtr && + (parentPtr->export.nodekind == SMI_NODEKIND_TABLE) && + (objectPtr->export.indexkind != SMI_INDEX_INDEX) && + (objectPtr->export.indexkind != SMI_INDEX_AUGMENT) && + (objectPtr->export.indexkind != SMI_INDEX_SPARSE)) + smiPrintErrorAtLine(parserPtr, ERR_ROW_LACKS_PIB_INDEX, + objectPtr->line); + + /* + * Does any non row contain a PIB-INDEX/AUGMENTS/EXTENDS ? + * See RFC 3159 7.5, 7.7, 7.8 + */ + if ((objectPtr->export.nodekind != SMI_NODEKIND_ROW) && + (objectPtr->export.indexkind != SMI_INDEX_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_INDEX_FOR_NON_ROW_TYPE, + objectPtr->line); + + /* + * Check the PIB-INDEX and other indices + */ + if ((objectPtr->export.nodekind == SMI_NODEKIND_ROW) && + (objectPtr->export.indexkind == SMI_INDEX_INDEX)) { + + /* + * Only the first element (PIB-INDEX) has to be an InstanceId. + * See RFC 3159 7.5 + */ + if (objectPtr->listPtr && objectPtr->listPtr->ptr) { + Object *pibindex = (Object *)objectPtr->listPtr->ptr; + if (pibindex->typePtr && pibindex->typePtr->export.name && + strcmp(pibindex->typePtr->export.name, "InstanceId")) + smiPrintErrorAtLine(thisParserPtr, ERR_PIB_INDEX_NOT_INSTANCEID, + pibindex->line, pibindex->export.name); + } + } + + /* + * Do all tables contain a PIB-ACCESS clause? + * See RFC 3159 7.3 + */ + if ((objectPtr->export.nodekind == SMI_NODEKIND_TABLE) && + (objectPtr->export.access == SMI_ACCESS_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_TABLE_LACKS_PIB_ACCESS, + objectPtr->line); + + /* + * Does any non table types contain a PIB-ACCESS clause? + * See RFC 3159 7.3 + */ + if (((objectPtr->export.nodekind == SMI_NODEKIND_NODE) || + (objectPtr->export.nodekind == SMI_NODEKIND_ROW) || + (objectPtr->export.nodekind == SMI_NODEKIND_SCALAR)) && + (objectPtr->export.access != SMI_ACCESS_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_ACCESS_FOR_NON_TABLE, + objectPtr->line); + + /* + * Check the UNIQUENESS clause and its entries + * See RFC 3159 7.9 + */ + if (objectPtr->uniquenessPtr) { + if (objectPtr->export.nodekind != SMI_NODEKIND_ROW) + smiPrintErrorAtLine(parserPtr, ERR_UNIQUENESS_FOR_NON_ROW, + objectPtr->line); + else + smiCheckUniqueness(parserPtr, objectPtr); + } + + /* + * Does the PIB-REFERENCES object point to a PRC (table)? + * See RFC 3159 7.10 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "ReferenceId") && + objectPtr->relatedPtr && + (objectPtr->relatedPtr->export.nodekind != SMI_NODEKIND_ROW)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_REFERENCES_NOT_ROW, + objectPtr->line); + + /* + * Do all PIB-TAGs point to objects with a SYNTAX of TagId? + * See RFC 3159 7.12 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "TagReferenceId") && + objectPtr->relatedPtr && objectPtr->relatedPtr->typePtr && + objectPtr->relatedPtr->typePtr->export.name && + strcmp(objectPtr->relatedPtr->typePtr->export.name, "TagId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_TAG_TYPE, objectPtr->line); + + /* + * Is the attribute member of at least one compliance group? + * See RFC 3159 9.1 + */ + if (objectPtr->export.nodekind & SMI_NODEKIND_COLUMN) { + Object *group; + int found = 0; + + for (group = modulePtr->firstObjectPtr; group; + group = group->nextPtr) { + if ((group->export.nodekind == SMI_NODEKIND_GROUP) && + group->listPtr) { + List *l; + + for (l = group->listPtr; l; l = l->nextPtr) + if (((Object *)l->ptr)->export.name && + !strcmp(((Object *)l->ptr)->export.name, + objectPtr->export.name)) { + found = 1; + break; + } + } + if (found) + break; + } + if (!found) + smiPrintErrorAtLine(parserPtr, ERR_ATTRIBUTE_NOT_IN_GROUP, + objectPtr->line, objectPtr->export.name); + } + } + } +} + + + +static void +checkTypes(Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + + for (typePtr = modulePtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + + /* + * Check references to unknown types. + */ + + if ((typePtr->flags & FLAG_INCOMPLETE) + && typePtr->export.name + && (typePtr->export.decl == SMI_DECL_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_TYPE, + typePtr->line, typePtr->export.name); + } + + /* + * Use TCs instead of type assignments in SMIv2. + */ + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2 + && typePtr->export.decl == SMI_DECL_TYPEASSIGNMENT + && typePtr->export.basetype != SMI_BASETYPE_UNKNOWN + && strcmp(thisModulePtr->export.name, "SNMPv2-SMI")) { + smiPrintErrorAtLine(parserPtr, ERR_SMIV2_TYPE_ASSIGNEMENT, + typePtr->line, typePtr->export.name); + } + + /* + * Check whether we have types that are not used in this + * module. + */ + + if ((typePtr->export.decl == SMI_DECL_TYPEDEF + || typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION) + && ! (typePtr->flags & FLAG_INSYNTAX)) { + static char *status[] = { "Unknown", "current", "deprecated", + "mandatory", "optional", "obsolete" }; + smiPrintErrorAtLine(parserPtr, ERR_TYPE_UNREF, + typePtr->line, + status[typePtr->export.status], + typePtr->export.name); + } + + /* + * Complain about TCs derived from other TCs (RFC 2579 3.5). + */ + + if (typePtr->parentPtr + && typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION + && typePtr->export.decl == typePtr->parentPtr->export.decl) { + smiPrintErrorAtLine(parserPtr, ERR_SMIV2_NESTED_TEXTUAL_CONVENTION, + typePtr->line, + typePtr->export.name, + typePtr->parentPtr->export.name); + + if (typePtr->export.status < typePtr->parentPtr->export.status) { + if (typePtr->parentPtr->export.status == SMI_STATUS_DEPRECATED) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_DEPRECATED, + typePtr->line, + typePtr->parentPtr->export.name, + typePtr->export.name); + } + if (typePtr->parentPtr->export.status == SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_OBSOLETE, + typePtr->line, + typePtr->parentPtr->export.name, + typePtr->export.name); + } + } + } + + smiCheckTypeFormat(parserPtr, typePtr); + smiCheckNamedNumberRedefinition(parserPtr, typePtr); + smiCheckNamedNumberSubtyping(parserPtr, typePtr); + } +} + + + +static void +adjustDefval(Parser *parserPtr, SmiValue *valuePtr, Type *typePtr, int line) +{ + Object *object2Ptr; + List *bitsListPtr, *valueListPtr, *p, *pp, *nextPtr, *listPtr; + Import *importPtr; + int nBits, bit; + + if (valuePtr->basetype == SMI_BASETYPE_UNKNOWN) + return; + + if (valuePtr->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + /* a len of -1 indicates an unresolved label in ptr */ + if (valuePtr->len == -1) { + object2Ptr = findObjectByModuleAndName(parserPtr->modulePtr, + (char *)valuePtr->value.ptr); + if (!object2Ptr) { + importPtr = findImportByName( + (char *)valuePtr->value.ptr, parserPtr->modulePtr); + if (importPtr) { /* imported object */ + importPtr->use++; + object2Ptr = findObjectByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (!object2Ptr) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_OIDLABEL, + line, + (char *)valuePtr->value.ptr); + smiFree(valuePtr->value.ptr); + valuePtr->value.ptr = NULL; + valuePtr->basetype = SMI_BASETYPE_UNKNOWN; + } else { + smiFree(valuePtr->value.ptr); + valuePtr->len = object2Ptr->export.oidlen; + valuePtr->value.ptr = smiMalloc(object2Ptr->export.oidlen * + sizeof(SmiSubid)); + memcpy(valuePtr->value.ptr, + object2Ptr->export.oid, + object2Ptr->export.oidlen * sizeof(SmiSubid)); + } + } + } else if (valuePtr->basetype == SMI_BASETYPE_BITS) { + bitsListPtr = typePtr->listPtr; + valueListPtr = (void *)valuePtr->value.ptr; + for (nBits = 0, p = bitsListPtr; p; p = p->nextPtr) { + if (nBits < 1+((NamedNumber *)(p->ptr))->export.value.value.integer32) { + nBits = 1+((NamedNumber *)(p->ptr))->export.value.value.integer32; + } + } + valuePtr->value.ptr = smiMalloc((nBits+7)/8); + memset(valuePtr->value.ptr, 0, (nBits+7)/8); + valuePtr->len = (nBits+7)/8; + for (p = valueListPtr; p;) { + for (pp = bitsListPtr; pp; pp = pp->nextPtr) { + if (!strcmp(p->ptr, + ((NamedNumber *)(pp->ptr))->export.name)) { + bit = ((NamedNumber *)(pp->ptr))->export.value.value.integer32; + valuePtr->value.ptr[bit/8] |= + 1 << (7-(bit%8)); + } + } + smiFree(p->ptr); + nextPtr = p->nextPtr; + smiFree(p); + p = nextPtr; + } + } else if (valuePtr->basetype == SMI_BASETYPE_ENUM) { + /* a len of -1 indicates an unresolved enum label in ptr */ + if (valuePtr->len == -1) { + for (listPtr = typePtr->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (!strcmp(((NamedNumber *)(listPtr->ptr))->export.name, + (char *)valuePtr->value.ptr)) { + smiFree(valuePtr->value.ptr); + valuePtr->value.integer32 = + ((NamedNumber *)(listPtr->ptr))-> + export.value.value.integer32; + valuePtr->len = 1; + break; + } + } + } + } +} + + + +static void +checkDefvals(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + + /* + * Check unknown identifiers in OID DEFVALs. + */ + + for(objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + adjustDefval(parserPtr, &objectPtr->export.value, + objectPtr->typePtr, objectPtr->line); + + if (objectPtr->export.value.len == -1) { + smiPrintErrorAtLine(parserPtr, + ERR_DEFVAL_SYNTAX, objectPtr->line); + } + + smiCheckDefault(parserPtr, objectPtr); + } +} + + + +static void +checkImportsUsage(Parser *parserPtr, Module *modulePtr) +{ + Import *importPtr; + + /* + * Check usage of all imported identifiers. + */ + + if (strcmp(modulePtr->export.name, "SNMPv2-TC") && + strcmp(modulePtr->export.name, "SNMPv2-CONF") && + strcmp(modulePtr->export.name, "RFC-1212") && + strcmp(modulePtr->export.name, "RFC-1215")) { + for(importPtr = modulePtr->firstImportPtr; + importPtr; importPtr = importPtr->nextPtr) { + if (! strcmp(importPtr->export.module, "SNMPv2-SMI")) { + if (! strcmp(importPtr->export.name, "ExtUTCTime") + || !strcmp(importPtr->export.name, "ObjectName") + || !strcmp(importPtr->export.name, "NotificationName")) { + smiPrintErrorAtLine(parserPtr, ERR_ILLEGAL_IMPORT, + importPtr->line, + importPtr->export.name, + importPtr->export.module); + } + } + /* checkImports() handles KIND_NOTFOUND */ + if (importPtr->use == 0 && importPtr->kind != KIND_NOTFOUND) { + smiPrintErrorAtLine(parserPtr, ERR_UNUSED_IMPORT, + importPtr->line, + importPtr->export.name, + importPtr->export.module); + } + + if (modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + int j; + for (j = 0; convertImportv2[j]; j += 4) { + if ((strcmp(convertImportv2[j], + importPtr->export.module) == 0) + && (strcmp(convertImportv2[j+1], + importPtr->export.name) == 0)) { + smiPrintErrorAtLine(parserPtr, + ERR_OBSOLETE_IMPORT, + importPtr->line, + importPtr->export.name, + convertImportv2[j+2], + importPtr->export.module); + } + } + } + } + } +} + + + +static time_t +checkDate(Parser *parserPtr, char *date) +{ + struct tm tm; + time_t anytime; + int i, len; + char *p; + + memset(&tm, 0, sizeof(tm)); + anytime = 0; + + len = strlen(date); + if (len == 11 || len == 13) { + for (i = 0; i < len; i++) { + if ( (i < len-1 && ! isdigit((int) date[i])) + || (i == len-1 && date[len-1] != 'Z')) { + smiPrintError(parserPtr, ERR_DATE_CHARACTER, date); + anytime = (time_t) -1; + break; + } + } + } else { + smiPrintError(parserPtr, ERR_DATE_LENGTH, date); + anytime = (time_t) -1; + } + + if (anytime == 0) { + for (i = 0, p = date, tm.tm_year = 0; + i < ((len == 11) ? 2 : 4); i++, p++) { + tm.tm_year = tm.tm_year * 10 + (*p - '0'); + } + if (len == 11) { + tm.tm_year += 1900; + if (tm.tm_year < 1990) + smiPrintError(parserPtr, ERR_DATE_YEAR_2DIGITS, + date, tm.tm_year); + } + tm.tm_mon = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_mday = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_hour = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_min = (p[0]-'0') * 10 + (p[1]-'0'); + + if (tm.tm_mon < 1 || tm.tm_mon > 12) { + smiPrintError(parserPtr, ERR_DATE_MONTH, date); + } + if (tm.tm_mday < 1 || tm.tm_mday > 31) { + smiPrintError(parserPtr, ERR_DATE_DAY, date); + } + if (tm.tm_hour < 0 || tm.tm_hour > 23) { + smiPrintError(parserPtr, ERR_DATE_HOUR, date); + } + if (tm.tm_min < 0 || tm.tm_min > 59) { + smiPrintError(parserPtr, ERR_DATE_MINUTES, date); + } + + tm.tm_year -= 1900; + tm.tm_mon -= 1; + tm.tm_isdst = 0; + + anytime = timegm(&tm); + + if (anytime == (time_t) -1) { + smiPrintError(parserPtr, ERR_DATE_VALUE, date); + } else { + if (anytime < SMI_EPOCH) { + smiPrintError(parserPtr, ERR_DATE_IN_PAST, date); + } + if (anytime > time(NULL)) { + smiPrintError(parserPtr, ERR_DATE_IN_FUTURE, date); + } + } + } + + return (anytime == (time_t) -1) ? 0 : anytime; +} + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 1288 "parser-smi.y" +{ + char *text; /* scanned quoted text */ + char *id; /* identifier name */ + int err; /* actually just a dummy */ + time_t date; /* a date value */ + Object *objectPtr; /* object identifier */ + SmiStatus status; /* a STATUS value */ + SmiAccess access; /* an ACCESS value */ + Type *typePtr; + List *listPtr; /* SEQUENCE and INDEX lists */ + NamedNumber *namedNumberPtr; /* BITS or enum item */ + Range *rangePtr; /* type restricting range */ + SmiValue *valuePtr; + SmiUnsigned32 unsigned32; /* */ + SmiInteger32 integer32; /* */ + SmiUnsigned64 unsigned64; /* */ + SmiInteger64 integer64; /* */ + struct Compl compl; + struct Index index; + Module *modulePtr; + SubjectCategories *subjectCategoriesPtr; +} +/* Line 187 of yacc.c. */ +#line 1575 "parser-smi.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 1588 "parser-smi.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 6 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 664 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 107 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 224 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 427 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 712 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 351 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 101, 102, 2, 2, 100, 2, 105, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 99, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 103, 2, 104, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 97, 106, 98, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 6, 8, 11, 12, 23, 27, + 28, 30, 32, 34, 35, 39, 40, 41, 45, 47, + 48, 50, 53, 57, 59, 63, 65, 67, 69, 71, + 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, + 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, + 113, 115, 117, 119, 121, 122, 124, 127, 129, 131, + 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, + 154, 155, 156, 162, 164, 166, 168, 170, 172, 174, + 176, 178, 180, 182, 183, 187, 189, 191, 192, 201, + 202, 207, 209, 211, 213, 215, 217, 219, 221, 223, + 225, 227, 229, 231, 233, 235, 237, 239, 240, 241, + 253, 255, 259, 261, 266, 268, 272, 275, 277, 282, + 284, 286, 289, 291, 295, 296, 302, 303, 304, 305, + 320, 321, 322, 346, 347, 350, 351, 352, 364, 369, + 370, 372, 376, 378, 381, 382, 384, 386, 387, 390, + 392, 394, 395, 401, 402, 403, 409, 410, 411, 417, + 418, 420, 421, 423, 427, 429, 430, 436, 437, 439, + 443, 448, 449, 453, 454, 458, 459, 460, 461, 477, + 478, 479, 480, 481, 482, 483, 484, 485, 510, 515, + 516, 518, 520, 524, 526, 531, 533, 536, 538, 540, + 542, 544, 550, 556, 558, 560, 562, 564, 565, 569, + 570, 574, 576, 577, 581, 582, 586, 591, 594, 599, + 602, 603, 608, 611, 616, 620, 622, 624, 626, 628, + 630, 632, 634, 636, 640, 643, 646, 650, 654, 657, + 660, 663, 665, 668, 670, 673, 676, 678, 681, 684, + 687, 689, 692, 694, 697, 700, 703, 706, 709, 712, + 714, 717, 719, 721, 723, 725, 727, 728, 732, 739, + 741, 745, 747, 751, 753, 755, 757, 759, 761, 763, + 767, 769, 773, 774, 780, 782, 784, 786, 788, 791, + 792, 795, 796, 798, 799, 805, 810, 811, 817, 818, + 819, 825, 826, 828, 832, 835, 837, 839, 841, 846, + 847, 849, 853, 855, 856, 858, 862, 864, 866, 869, + 870, 872, 873, 875, 878, 879, 885, 890, 891, 896, + 898, 902, 904, 909, 911, 915, 917, 919, 921, 922, + 925, 927, 930, 932, 936, 938, 943, 950, 952, 954, + 957, 962, 964, 965, 966, 967, 983, 984, 985, 986, + 1002, 1003, 1004, 1005, 1021, 1023, 1025, 1028, 1029, 1035, + 1038, 1040, 1041, 1046, 1047, 1049, 1053, 1055, 1057, 1058, + 1060, 1063, 1065, 1067, 1068, 1074, 1075, 1084, 1087, 1088, + 1091, 1092, 1094, 1097, 1100, 1101, 1102, 1103, 1104, 1122, + 1124, 1125, 1127, 1130, 1131, 1140, 1142, 1146, 1148, 1151, + 1153, 1155, 1156, 1158, 1161, 1162, 1163, 1164, 1165, 1166, + 1181, 1184, 1185, 1187, 1192, 1193, 1195, 1199 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 108, 0, -1, 109, -1, -1, 110, -1, 109, 110, + -1, -1, 126, 111, 112, 113, 4, 18, 116, 114, + 127, 29, -1, 97, 269, 98, -1, -1, 25, -1, + 69, -1, 115, -1, -1, 39, 118, 99, -1, -1, + -1, 31, 117, 99, -1, 119, -1, -1, 120, -1, + 119, 120, -1, 121, 33, 126, -1, 122, -1, 121, + 100, 122, -1, 6, -1, 5, -1, 123, -1, 124, + -1, 125, -1, 19, -1, 44, -1, 46, -1, 49, + -1, 53, -1, 54, -1, 60, -1, 61, -1, 62, + -1, 67, -1, 85, -1, 86, -1, 91, -1, 15, + -1, 23, -1, 24, -1, 35, -1, 57, -1, 58, + -1, 87, -1, 45, -1, 92, -1, 5, -1, 128, + -1, -1, 129, -1, 128, 129, -1, 139, -1, 137, + -1, 159, -1, 163, -1, 167, -1, 193, -1, 197, + -1, 284, -1, 276, -1, 280, -1, 307, -1, 130, + -1, 1, 98, -1, -1, -1, 133, 131, 48, 132, + 29, -1, 54, -1, 62, -1, 87, -1, 58, -1, + 61, -1, 85, -1, 60, -1, 57, -1, 53, -1, + 15, -1, -1, 20, 135, 98, -1, 6, -1, 5, + -1, -1, 136, 138, 59, 36, 4, 97, 269, 98, + -1, -1, 141, 140, 4, 146, -1, 5, -1, 142, + -1, 145, -1, 143, -1, 144, -1, 46, -1, 86, + -1, 67, -1, 44, -1, 91, -1, 23, -1, 35, + -1, 24, -1, 45, -1, 92, -1, 154, -1, -1, + -1, 85, 147, 237, 80, 235, 27, 267, 148, 255, + 84, 154, -1, 134, -1, 78, 65, 150, -1, 5, + -1, 78, 97, 152, 98, -1, 153, -1, 152, 100, + 153, -1, 6, 155, -1, 210, -1, 19, 97, 156, + 98, -1, 212, -1, 19, -1, 5, 224, -1, 157, + -1, 156, 100, 157, -1, -1, 6, 158, 101, 7, + 102, -1, -1, -1, -1, 6, 160, 61, 161, 80, + 235, 27, 267, 162, 255, 4, 97, 269, 98, -1, + -1, -1, 6, 164, 62, 165, 84, 154, 238, 174, + 177, 179, 80, 235, 166, 186, 255, 240, 243, 181, + 249, 4, 97, 253, 98, -1, -1, 27, 267, -1, + -1, -1, 136, 168, 87, 169, 30, 269, 170, 173, + 255, 4, 7, -1, 94, 97, 171, 98, -1, -1, + 172, -1, 171, 100, 172, -1, 253, -1, 27, 267, + -1, -1, 190, -1, 175, -1, -1, 176, 239, -1, + 74, -1, 68, -1, -1, 72, 178, 97, 248, 98, + -1, -1, -1, 73, 180, 97, 253, 98, -1, -1, + -1, 88, 182, 97, 183, 98, -1, -1, 184, -1, + -1, 185, -1, 184, 100, 185, -1, 253, -1, -1, + 42, 187, 97, 188, 98, -1, -1, 189, -1, 188, + 100, 189, -1, 6, 101, 7, 102, -1, -1, 50, + 191, 239, -1, -1, 14, 192, 239, -1, -1, -1, + -1, 6, 194, 58, 195, 260, 80, 235, 27, 267, + 196, 255, 4, 97, 254, 98, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 6, 198, 54, 199, 206, + 200, 47, 268, 201, 66, 267, 202, 21, 267, 203, + 27, 267, 204, 256, 205, 4, 97, 269, 98, -1, + 82, 97, 207, 98, -1, -1, 208, -1, 209, -1, + 208, 100, 209, -1, 6, -1, 6, 101, 7, 102, + -1, 214, -1, 211, 214, -1, 149, -1, 150, -1, + 151, -1, 222, -1, 103, 16, 7, 104, 37, -1, + 103, 90, 7, 104, 37, -1, 221, -1, 223, -1, + 220, -1, 43, -1, -1, 43, 215, 225, -1, -1, + 43, 216, 230, -1, 44, -1, -1, 44, 217, 225, + -1, -1, 5, 218, 230, -1, 126, 105, 5, 230, + -1, 5, 225, -1, 126, 105, 5, 225, -1, 64, + 81, -1, -1, 64, 81, 219, 226, -1, 5, 226, + -1, 126, 105, 5, 226, -1, 59, 36, 224, -1, + 7, -1, 8, -1, 9, -1, 10, -1, 11, -1, + 12, -1, 6, -1, 13, -1, 97, 273, 98, -1, + 43, 224, -1, 44, 224, -1, 64, 81, 224, -1, + 59, 36, 224, -1, 46, 224, -1, 23, 224, -1, + 23, 225, -1, 35, -1, 35, 225, -1, 91, -1, + 91, 225, -1, 86, 224, -1, 67, -1, 67, 226, + -1, 24, 224, -1, 24, 225, -1, 45, -1, 45, + 225, -1, 92, -1, 92, 225, -1, 46, 224, -1, + 23, 224, -1, 35, 224, -1, 91, 224, -1, 86, + 224, -1, 67, -1, 24, 224, -1, 45, -1, 92, + -1, 225, -1, 226, -1, 230, -1, -1, 101, 227, + 102, -1, 101, 79, 101, 227, 102, 102, -1, 228, + -1, 227, 106, 228, -1, 229, -1, 229, 3, 229, + -1, 8, -1, 7, -1, 10, -1, 9, -1, 12, + -1, 11, -1, 97, 231, 98, -1, 232, -1, 231, + 100, 232, -1, -1, 6, 233, 101, 234, 102, -1, + 7, -1, 8, -1, 6, -1, 6, -1, 28, 267, + -1, -1, 89, 267, -1, -1, 6, -1, -1, 70, + 241, 97, 248, 98, -1, 17, 97, 248, 98, -1, + -1, 32, 242, 97, 248, 98, -1, -1, -1, 41, + 244, 97, 245, 98, -1, -1, 246, -1, 245, 100, + 246, -1, 38, 247, -1, 247, -1, 253, -1, 253, + -1, 26, 97, 250, 98, -1, -1, 213, -1, 97, + 251, 98, -1, 252, -1, -1, 6, -1, 252, 100, + 6, -1, 269, -1, 269, -1, 76, 267, -1, -1, + 257, -1, -1, 258, -1, 257, 258, -1, -1, 77, + 268, 259, 27, 267, -1, 63, 97, 262, 98, -1, + -1, 63, 97, 262, 98, -1, 263, -1, 262, 100, + 263, -1, 253, -1, 56, 97, 265, 98, -1, 266, + -1, 265, 100, 266, -1, 254, -1, 13, -1, 13, + -1, -1, 270, 271, -1, 272, -1, 271, 272, -1, + 136, -1, 126, 105, 6, -1, 7, -1, 6, 101, + 7, 102, -1, 126, 105, 6, 101, 7, 102, -1, + 274, -1, 275, -1, 274, 275, -1, 6, 101, 7, + 102, -1, 7, -1, -1, -1, -1, 6, 277, 60, + 278, 261, 80, 235, 27, 267, 279, 255, 4, 97, + 269, 98, -1, -1, -1, -1, 6, 281, 57, 282, + 264, 80, 235, 27, 267, 283, 255, 4, 97, 269, + 98, -1, -1, -1, -1, 6, 285, 53, 286, 80, + 235, 27, 267, 287, 255, 288, 4, 97, 269, 98, + -1, 289, -1, 290, -1, 289, 290, -1, -1, 52, + 292, 291, 293, 296, -1, 5, 269, -1, 5, -1, + -1, 49, 97, 294, 98, -1, -1, 295, -1, 294, + 100, 295, -1, 269, -1, 297, -1, -1, 298, -1, + 297, 298, -1, 299, -1, 301, -1, -1, 34, 300, + 269, 27, 267, -1, -1, 59, 302, 253, 303, 304, + 306, 27, 267, -1, 84, 154, -1, -1, 96, 305, + -1, -1, 154, -1, 51, 239, -1, 71, 239, -1, + -1, -1, -1, -1, 6, 308, 15, 309, 75, 267, + 80, 236, 27, 267, 310, 255, 311, 4, 97, 269, + 98, -1, 312, -1, -1, 313, -1, 312, 313, -1, + -1, 83, 317, 314, 40, 97, 315, 98, 318, -1, + 316, -1, 315, 100, 316, -1, 269, -1, 5, 269, + -1, 5, -1, 319, -1, -1, 320, -1, 319, 320, + -1, -1, -1, -1, -1, -1, 95, 253, 321, 303, + 322, 304, 323, 326, 328, 324, 249, 325, 27, 267, + -1, 14, 327, -1, -1, 6, -1, 22, 97, 329, + 98, -1, -1, 330, -1, 329, 100, 330, -1, 253, + -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 1586, 1586, 1591, 1596, 1598, 1607, 1606, 1668, 1671, + 1674, 1676, 1685, 1688, 1691, 1706, 1708, 1707, 1728, 1731, + 1735, 1737, 1741, 1786, 1788, 1796, 1802, 1808, 1824, 1834, + 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, + 1850, 1851, 1852, 1855, 1856, 1857, 1858, 1859, 1860, 1861, + 1864, 1865, 1868, 1880, 1883, 1887, 1889, 1893, 1898, 1903, + 1908, 1913, 1918, 1923, 1928, 1933, 1938, 1943, 1948, 1953, + 1968, 1980, 1967, 2013, 2014, 2015, 2016, 2017, 2018, 2019, + 2020, 2021, 2022, 2026, 2025, 2055, 2060, 2076, 2075, 2116, + 2115, 2281, 2285, 2309, 2323, 2324, 2333, 2334, 2335, 2336, + 2337, 2340, 2341, 2342, 2345, 2346, 2349, 2366, 2397, 2365, + 2433, 2441, 2455, 2500, 2508, 2514, 2534, 2617, 2623, 2645, + 2649, 2654, 2687, 2693, 2707, 2706, 2742, 2752, 2777, 2741, + 2805, 2815, 2804, 3111, 3120, 3128, 3138, 3127, 3210, 3215, + 3220, 3230, 3252, 3258, 3264, 3267, 3271, 3280, 3283, 3287, + 3291, 3296, 3295, 3303, 3307, 3306, 3314, 3319, 3318, 3326, + 3329, 3332, 3335, 3341, 3355, 3360, 3359, 3367, 3370, 3376, + 3390, 3412, 3411, 3423, 3422, 3436, 3446, 3466, 3435, 3497, + 3507, 3532, 3536, 3540, 3547, 3554, 3558, 3496, 3604, 3611, + 3618, 3625, 3631, 3646, 3667, 3690, 3694, 3714, 3719, 3724, + 3729, 3746, 3748, 3756, 3761, 3778, 3787, 3801, 3800, 3820, + 3819, 3834, 3861, 3860, 3892, 3891, 3945, 3992, 4047, 4097, + 4103, 4102, 4114, 4160, 4201, 4208, 4215, 4221, 4228, 4235, + 4261, 4284, 4304, 4321, 4354, 4358, 4383, 4387, 4393, 4421, + 4447, 4484, 4510, 4543, 4567, 4594, 4622, 4660, 4706, 4732, + 4769, 4795, 4832, 4858, 4901, 4929, 4955, 4981, 5005, 5033, + 5073, 5099, 5124, 5151, 5168, 5185, 5204, 5211, 5221, 5233, + 5239, 5253, 5260, 5270, 5276, 5282, 5288, 5294, 5317, 5344, + 5350, 5356, 5370, 5369, 5391, 5406, 5415, 5474, 5490, 5500, + 5505, 5515, 5520, 5587, 5586, 5604, 5615, 5614, 5628, 5634, + 5633, 5667, 5672, 5678, 5692, 5697, 5703, 5713, 5719, 5734, + 5738, 5740, 5748, 5751, 5754, 5760, 5773, 5779, 5785, 5795, + 5798, 5801, 5804, 5806, 5811, 5810, 5841, 5846, 5851, 5857, + 5863, 5876, 5888, 5894, 5900, 5913, 5924, 5935, 5941, 5941, + 5956, 5960, 5969, 6063, 6167, 6191, 6251, 6320, 6324, 6326, + 6330, 6332, 6337, 6347, 6366, 6336, 6397, 6407, 6429, 6396, + 6461, 6471, 6489, 6460, 6553, 6559, 6563, 6599, 6598, 6627, + 6636, 6646, 6651, 6656, 6661, 6667, 6680, 6703, 6710, 6717, + 6721, 6788, 6794, 6803, 6802, 6836, 6835, 6882, 6891, 6896, + 6908, 6913, 6919, 6925, 6934, 6940, 6950, 6972, 6939, 7007, + 7010, 7013, 7015, 7020, 7019, 7046, 7056, 7073, 7079, 7088, + 7098, 7101, 7104, 7106, 7111, 7119, 7126, 7134, 7141, 7110, + 7164, 7167, 7170, 7235, 7238, 7241, 7243, 7247 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "DOT_DOT", "COLON_COLON_EQUAL", + "UPPERCASE_IDENTIFIER", "LOWERCASE_IDENTIFIER", "NUMBER", + "NEGATIVENUMBER", "NUMBER64", "NEGATIVENUMBER64", "BIN_STRING", + "HEX_STRING", "QUOTED_STRING", "ACCESS", "AGENT_CAPABILITIES", + "APPLICATION", "AUGMENTS", "BEGIN_", "BITS", "CHOICE", "CONTACT_INFO", + "CREATION_REQUIRES", "COUNTER32", "COUNTER64", "DEFINITIONS", "DEFVAL", + "DESCRIPTION", "DISPLAY_HINT", "END", "ENTERPRISE", "EXPORTS", "EXTENDS", + "FROM", "GROUP", "GAUGE32", "IDENTIFIER", "IMPLICIT", "IMPLIED", + "IMPORTS", "INCLUDES", "INDEX", "INSTALL_ERRORS", "INTEGER", "INTEGER32", + "INTEGER64", "IPADDRESS", "LAST_UPDATED", "MACRO", "MANDATORY_GROUPS", + "MAX_ACCESS", "MIN_ACCESS", "MODULE", "MODULE_COMPLIANCE", + "MODULE_IDENTITY", "NOT_ACCESSIBLE", "NOTIFICATIONS", + "NOTIFICATION_GROUP", "NOTIFICATION_TYPE", "OBJECT", "OBJECT_GROUP", + "OBJECT_IDENTITY", "OBJECT_TYPE", "OBJECTS", "OCTET", "OF", + "ORGANIZATION", "OPAQUE", "PIB_ACCESS", "PIB_DEFINITIONS", "PIB_INDEX", + "PIB_MIN_ACCESS", "PIB_REFERENCES", "PIB_TAG", "POLICY_ACCESS", + "PRODUCT_RELEASE", "REFERENCE", "REVISION", "SEQUENCE", "SIZE", "STATUS", + "STRING", "SUBJECT_CATEGORIES", "SUPPORTS", "SYNTAX", + "TEXTUAL_CONVENTION", "TIMETICKS", "TRAP_TYPE", "UNIQUENESS", "UNITS", + "UNIVERSAL", "UNSIGNED32", "UNSIGNED64", "VALUE", "VARIABLES", + "VARIATION", "WRITE_SYNTAX", "'{'", "'}'", "';'", "','", "'('", "')'", + "'['", "']'", "'.'", "'|'", "$accept", "mibFile", "modules", "module", + "@1", "moduleOid", "definitions", "linkagePart", "linkageClause", + "exportsClause", "@2", "importPart", "imports", "import", + "importIdentifiers", "importIdentifier", "importedKeyword", + "importedSMIKeyword", "importedSPPIKeyword", "moduleName", + "declarationPart", "declarations", "declaration", "macroClause", "@3", + "@4", "macroName", "choiceClause", "@5", "fuzzy_lowercase_identifier", + "valueDeclaration", "@6", "typeDeclaration", "@7", "typeName", "typeSMI", + "typeSMIandSPPI", "typeSMIonly", "typeSPPIonly", "typeDeclarationRHS", + "@8", "@9", "conceptualTable", "row", "entryType", "sequenceItems", + "sequenceItem", "Syntax", "sequenceSyntax", "NamedBits", "NamedBit", + "@10", "objectIdentityClause", "@11", "@12", "@13", "objectTypeClause", + "@14", "@15", "descriptionClause", "trapTypeClause", "@16", "@17", + "VarPart", "VarTypes", "VarType", "DescrPart", "MaxOrPIBAccessPart", + "PibAccessPart", "PibAccess", "SPPIPibReferencesPart", "@18", + "SPPIPibTagPart", "@19", "SPPIUniquePart", "@20", "UniqueTypesPart", + "UniqueTypes", "UniqueType", "SPPIErrorsPart", "@21", "Errors", "Error", + "MaxAccessPart", "@22", "@23", "notificationTypeClause", "@24", "@25", + "@26", "moduleIdentityClause", "@27", "@28", "@29", "@30", "@31", "@32", + "@33", "@34", "SubjectCategoriesPart", "SubjectCategories", + "CategoryIDs", "CategoryID", "ObjectSyntax", "typeTag", + "sequenceObjectSyntax", "valueofObjectSyntax", "SimpleSyntax", "@35", + "@36", "@37", "@38", "@39", "valueofSimpleSyntax", + "sequenceSimpleSyntax", "ApplicationSyntax", "sequenceApplicationSyntax", + "anySubType", "integerSubType", "octetStringSubType", "ranges", "range", + "value", "enumSpec", "enumItems", "enumItem", "@40", "enumNumber", + "Status", "Status_Capabilities", "DisplayPart", "UnitsPart", "Access", + "IndexPart", "@41", "@42", "MibIndex", "@43", "IndexTypes", "IndexType", + "Index", "Entry", "DefValPart", "Value", "BitsValue", "BitNames", + "ObjectName", "NotificationName", "ReferPart", "RevisionPart", + "Revisions", "Revision", "@44", "NotificationObjectsPart", + "ObjectGroupObjectsPart", "Objects", "Object", "NotificationsPart", + "Notifications", "Notification", "Text", "ExtUTCTime", + "objectIdentifier", "@45", "subidentifiers", "subidentifier", + "objectIdentifier_defval", "subidentifiers_defval", + "subidentifier_defval", "objectGroupClause", "@46", "@47", "@48", + "notificationGroupClause", "@49", "@50", "@51", "moduleComplianceClause", + "@52", "@53", "@54", "ComplianceModulePart", "ComplianceModules", + "ComplianceModule", "@55", "ComplianceModuleName", "MandatoryPart", + "MandatoryGroups", "MandatoryGroup", "CompliancePart", "Compliances", + "Compliance", "ComplianceGroup", "@56", "ComplianceObject", "@57", + "SyntaxPart", "WriteSyntaxPart", "WriteSyntax", "AccessPart", + "agentCapabilitiesClause", "@58", "@59", "@60", + "ModulePart_Capabilities", "Modules_Capabilities", "Module_Capabilities", + "@61", "CapabilitiesGroups", "CapabilitiesGroup", + "ModuleName_Capabilities", "VariationPart", "Variations", "Variation", + "@62", "@63", "@64", "@65", "@66", "VariationAccessPart", + "VariationAccess", "CreationPart", "Cells", "Cell", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 123, 125, 59, + 44, 40, 41, 91, 93, 46, 124 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 107, 108, 108, 109, 109, 111, 110, 112, 112, + 113, 113, 114, 114, 115, 116, 117, 116, 118, 118, + 119, 119, 120, 121, 121, 122, 122, 122, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, + 125, 125, 126, 127, 127, 128, 128, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 131, 132, 130, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 135, 134, 136, 136, 138, 137, 140, + 139, 141, 141, 141, 142, 142, 143, 143, 143, 143, + 143, 144, 144, 144, 145, 145, 146, 147, 148, 146, + 146, 149, 150, 151, 152, 152, 153, 154, 154, 155, + 155, 155, 156, 156, 158, 157, 160, 161, 162, 159, + 164, 165, 163, 166, 166, 168, 169, 167, 170, 170, + 171, 171, 172, 173, 173, 174, 174, 174, 175, 176, + 176, 178, 177, 177, 180, 179, 179, 182, 181, 181, + 183, 183, 184, 184, 185, 187, 186, 186, 188, 188, + 189, 191, 190, 192, 190, 194, 195, 196, 193, 198, + 199, 200, 201, 202, 203, 204, 205, 197, 206, 206, + 207, 208, 208, 209, 209, 210, 210, 210, 210, 210, + 210, 211, 211, 212, 212, 213, 214, 215, 214, 216, + 214, 214, 217, 214, 218, 214, 214, 214, 214, 214, + 219, 214, 214, 214, 214, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 221, 221, 221, 221, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 224, 224, 224, 224, 225, 226, 227, + 227, 228, 228, 229, 229, 229, 229, 229, 229, 230, + 231, 231, 233, 232, 234, 234, 235, 236, 237, 237, + 238, 238, 239, 241, 240, 240, 242, 240, 240, 244, + 243, 243, 245, 245, 246, 246, 247, 248, 249, 249, + 250, 250, 251, 251, 252, 252, 253, 254, 255, 255, + 256, 256, 257, 257, 259, 258, 260, 260, 261, 262, + 262, 263, 264, 265, 265, 266, 267, 268, 270, 269, + 271, 271, 272, 272, 272, 272, 272, 273, 274, 274, + 275, 275, 277, 278, 279, 276, 281, 282, 283, 280, + 285, 286, 287, 284, 288, 289, 289, 291, 290, 292, + 292, 292, 293, 293, 294, 294, 295, 296, 296, 297, + 297, 298, 298, 300, 299, 302, 301, 303, 303, 304, + 304, 305, 306, 306, 306, 308, 309, 310, 307, 311, + 311, 312, 312, 314, 313, 315, 315, 316, 317, 317, + 318, 318, 319, 319, 321, 322, 323, 324, 325, 320, + 326, 326, 327, 328, 328, 329, 329, 330 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 0, 1, 2, 0, 10, 3, 0, + 1, 1, 1, 0, 3, 0, 0, 3, 1, 0, + 1, 2, 3, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 0, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 3, 1, 1, 0, 8, 0, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 11, + 1, 3, 1, 4, 1, 3, 2, 1, 4, 1, + 1, 2, 1, 3, 0, 5, 0, 0, 0, 14, + 0, 0, 23, 0, 2, 0, 0, 11, 4, 0, + 1, 3, 1, 2, 0, 1, 1, 0, 2, 1, + 1, 0, 5, 0, 0, 5, 0, 0, 5, 0, + 1, 0, 1, 3, 1, 0, 5, 0, 1, 3, + 4, 0, 3, 0, 3, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 4, 0, + 1, 1, 3, 1, 4, 1, 2, 1, 1, 1, + 1, 5, 5, 1, 1, 1, 1, 0, 3, 0, + 3, 1, 0, 3, 0, 3, 4, 2, 4, 2, + 0, 4, 2, 4, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 2, 2, 3, 3, 2, 2, + 2, 1, 2, 1, 2, 2, 1, 2, 2, 2, + 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, + 2, 1, 1, 1, 1, 1, 0, 3, 6, 1, + 3, 1, 3, 1, 1, 1, 1, 1, 1, 3, + 1, 3, 0, 5, 1, 1, 1, 1, 2, 0, + 2, 0, 1, 0, 5, 4, 0, 5, 0, 0, + 5, 0, 1, 3, 2, 1, 1, 1, 4, 0, + 1, 3, 1, 0, 1, 3, 1, 1, 2, 0, + 1, 0, 1, 2, 0, 5, 4, 0, 4, 1, + 3, 1, 4, 1, 3, 1, 1, 1, 0, 2, + 1, 2, 1, 3, 1, 4, 6, 1, 1, 2, + 4, 1, 0, 0, 0, 15, 0, 0, 0, 15, + 0, 0, 0, 15, 1, 1, 2, 0, 5, 2, + 1, 0, 4, 0, 1, 3, 1, 1, 0, 1, + 2, 1, 1, 0, 5, 0, 8, 2, 0, 2, + 0, 1, 2, 2, 0, 0, 0, 0, 17, 1, + 0, 1, 2, 0, 8, 1, 3, 1, 2, 1, + 1, 0, 1, 2, 0, 0, 0, 0, 0, 14, + 2, 0, 1, 4, 0, 1, 3, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 3, 52, 0, 2, 4, 6, 1, 5, 9, 338, + 0, 0, 0, 10, 11, 0, 8, 86, 85, 344, + 0, 342, 339, 340, 0, 0, 0, 341, 15, 0, + 343, 16, 13, 345, 0, 0, 19, 0, 12, 0, + 17, 26, 25, 43, 30, 44, 45, 46, 31, 50, + 32, 33, 34, 35, 47, 48, 36, 37, 38, 39, + 40, 41, 49, 42, 51, 0, 18, 20, 0, 23, + 27, 28, 29, 0, 86, 85, 82, 101, 103, 102, + 99, 104, 96, 81, 73, 80, 76, 79, 77, 74, + 98, 78, 97, 75, 100, 105, 0, 0, 55, 68, + 70, 87, 58, 57, 89, 92, 94, 95, 93, 59, + 60, 61, 62, 63, 65, 66, 64, 67, 346, 14, + 21, 0, 0, 69, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 56, 0, 0, 0, 0, 22, 24, + 127, 131, 176, 180, 353, 357, 361, 396, 71, 0, + 136, 0, 0, 0, 327, 189, 0, 0, 0, 0, + 0, 0, 0, 112, 0, 83, 266, 266, 241, 206, + 211, 250, 266, 0, 0, 246, 0, 107, 266, 243, + 252, 0, 0, 110, 90, 197, 198, 199, 106, 117, + 0, 195, 200, 0, 0, 0, 0, 0, 181, 0, + 0, 0, 0, 0, 0, 72, 0, 338, 0, 0, + 217, 222, 0, 0, 0, 239, 240, 264, 265, 248, + 249, 0, 242, 0, 0, 0, 251, 238, 263, 266, + 219, 0, 247, 0, 0, 289, 245, 244, 253, 0, + 0, 0, 52, 196, 286, 0, 291, 338, 0, 0, + 0, 338, 0, 338, 0, 0, 336, 0, 338, 139, + 274, 273, 276, 275, 278, 277, 0, 0, 269, 271, + 215, 124, 0, 122, 84, 282, 0, 280, 208, 210, + 213, 224, 0, 112, 111, 0, 0, 114, 0, 0, + 0, 0, 0, 0, 0, 147, 331, 0, 329, 316, + 0, 193, 0, 190, 191, 0, 0, 0, 335, 0, + 333, 317, 0, 0, 0, 0, 0, 144, 0, 267, + 0, 0, 0, 118, 0, 0, 279, 0, 221, 266, + 120, 266, 266, 266, 266, 266, 261, 266, 0, 0, + 259, 266, 266, 262, 116, 119, 203, 204, 113, 0, + 288, 0, 0, 0, 218, 223, 216, 128, 290, 173, + 171, 150, 149, 153, 146, 0, 145, 326, 338, 0, + 0, 188, 0, 337, 182, 328, 0, 332, 338, 0, + 362, 287, 0, 88, 338, 0, 319, 0, 270, 272, + 0, 123, 0, 281, 121, 255, 260, 256, 234, 235, + 254, 266, 266, 258, 257, 115, 0, 201, 202, 319, + 0, 0, 151, 156, 292, 148, 330, 177, 0, 192, + 0, 354, 334, 358, 319, 0, 0, 140, 142, 143, + 0, 0, 0, 0, 284, 285, 0, 237, 236, 0, + 0, 174, 172, 0, 154, 0, 319, 194, 0, 319, + 319, 0, 397, 138, 338, 318, 0, 268, 125, 283, + 108, 0, 338, 0, 0, 0, 183, 0, 0, 371, + 0, 364, 365, 319, 141, 137, 319, 338, 0, 307, + 338, 133, 0, 0, 0, 0, 370, 367, 0, 366, + 400, 0, 0, 152, 0, 0, 167, 338, 0, 338, + 338, 369, 373, 338, 0, 0, 399, 401, 0, 129, + 155, 134, 165, 319, 0, 184, 0, 0, 0, 378, + 0, 338, 403, 0, 402, 109, 0, 298, 178, 0, + 355, 359, 338, 383, 385, 368, 377, 379, 381, 382, + 363, 408, 0, 338, 0, 0, 296, 293, 301, 0, + 376, 0, 374, 338, 338, 380, 0, 0, 0, 0, + 168, 338, 0, 0, 299, 159, 185, 372, 338, 0, + 388, 338, 398, 0, 166, 0, 0, 338, 338, 0, + 157, 309, 321, 375, 0, 0, 390, 407, 0, 405, + 0, 169, 295, 0, 0, 338, 0, 0, 0, 0, + 186, 320, 322, 384, 387, 0, 394, 411, 338, 170, + 297, 294, 338, 0, 302, 305, 306, 338, 0, 0, + 324, 0, 323, 391, 389, 0, 0, 0, 338, 404, + 410, 412, 406, 304, 300, 338, 0, 160, 162, 164, + 231, 225, 226, 227, 228, 229, 230, 232, 313, 310, + 205, 0, 338, 0, 0, 392, 393, 0, 414, 413, + 303, 158, 338, 314, 351, 0, 312, 0, 347, 348, + 308, 0, 0, 338, 386, 388, 163, 0, 311, 0, + 233, 0, 349, 132, 325, 0, 415, 0, 315, 187, + 390, 350, 416, 421, 0, 424, 422, 420, 0, 417, + 338, 309, 427, 0, 425, 418, 423, 338, 0, 426, + 0, 419 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 2, 3, 4, 8, 10, 15, 37, 38, 32, + 35, 65, 66, 67, 68, 69, 70, 71, 72, 182, + 96, 97, 98, 99, 134, 160, 100, 183, 213, 21, + 102, 135, 103, 137, 104, 105, 106, 107, 108, 184, + 235, 476, 185, 186, 187, 286, 287, 188, 344, 272, + 273, 322, 109, 124, 152, 409, 110, 125, 153, 496, + 111, 136, 162, 317, 426, 427, 386, 363, 364, 365, + 413, 443, 445, 463, 581, 596, 636, 637, 638, 513, + 526, 559, 560, 366, 411, 410, 112, 126, 154, 446, + 113, 127, 155, 250, 420, 483, 529, 582, 621, 198, + 302, 303, 304, 189, 190, 345, 649, 191, 223, 224, + 225, 209, 282, 650, 346, 192, 347, 215, 228, 217, + 267, 268, 269, 218, 276, 277, 325, 436, 245, 382, + 289, 295, 415, 548, 563, 562, 565, 579, 613, 614, + 615, 478, 598, 651, 665, 666, 479, 308, 431, 600, + 601, 602, 653, 196, 200, 297, 298, 202, 309, 310, + 257, 374, 299, 12, 22, 23, 667, 668, 669, 114, + 128, 156, 449, 115, 129, 157, 450, 116, 130, 158, + 424, 470, 471, 472, 502, 487, 519, 551, 552, 535, + 536, 537, 538, 553, 539, 554, 586, 606, 624, 627, + 117, 131, 159, 473, 505, 506, 507, 542, 588, 589, + 522, 629, 630, 631, 675, 690, 693, 701, 708, 695, + 697, 699, 703, 704 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -461 +static const yytype_int16 yypact[] = +{ + 19, -461, 36, 19, -461, -461, -461, -461, -58, -461, + -5, -31, 54, -461, -461, 78, -461, -1, 9, -461, + 38, -461, 54, -461, 107, 154, 160, -461, 138, 88, + 90, -461, 153, -461, 186, 95, 561, 350, -461, 93, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, 97, 561, -461, -23, -461, + -461, -461, -461, 99, 195, 70, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, 171, 496, -461, -461, + -461, 115, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, 19, 561, -461, 140, 141, 146, 151, 149, 155, + 158, 191, -461, -461, 166, 156, 129, 213, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, 183, + -461, 202, 143, 134, 157, 142, 167, 173, 152, 161, + 204, 227, 205, 2, 145, -461, -47, -47, 150, -18, + 159, 150, -47, 203, 162, 169, -49, -461, -47, 150, + 150, -2, 148, -461, -461, -461, -461, -461, -461, -461, + 52, -461, -461, 244, 233, 165, 174, 170, -461, 176, + 178, 177, 179, 244, 242, -461, 184, -461, 35, 185, + -461, -461, 257, 187, 265, -461, -461, -461, -461, -461, + -461, 175, -461, 150, 185, 150, -461, -461, -461, -47, + 188, 193, -461, 270, 277, 256, -461, -461, -461, 279, + 283, 286, 5, -461, -461, 268, 207, -461, 244, 292, + 254, -461, 244, -461, 244, 275, -461, 223, -461, 210, + -461, -461, -461, -461, -461, -461, 206, 3, -461, 303, + -461, -461, 15, -461, -461, -461, 37, -461, -461, -461, + -461, -461, 169, -461, -461, 441, 41, -461, 242, 229, + 208, 209, -47, 242, 242, 13, -461, 44, -461, -461, + 287, 214, 212, 217, -461, 305, 48, 293, -461, 51, + -461, -461, 294, 242, 316, 225, 230, 299, 175, -461, + 175, 175, 228, -461, 257, 231, -461, 265, -461, -47, + -461, -47, -47, -47, -47, -47, -461, -47, 295, 247, + -461, -47, -47, -461, -461, -461, -461, -461, -461, 277, + -461, 244, 296, 297, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 258, -461, 329, -461, -461, -461, 242, + 330, -461, 292, -461, -461, -461, 242, -461, -461, 242, + -461, -461, 311, -461, -461, 242, 263, 6, -461, -461, + 333, -461, 126, -461, -461, -461, -461, -461, -461, -461, + -461, -47, -47, -461, -461, -461, 314, -461, -461, 263, + 329, 329, -461, 269, -461, -461, -461, -461, 241, -461, + 278, -461, -461, -461, 263, 242, 55, -461, -461, -461, + 242, 341, 245, 246, -461, -461, 248, -461, -461, 242, + 342, -461, -461, 255, -461, 273, 263, -461, 242, 263, + 263, 302, -461, -461, -461, -461, 351, -461, -461, -461, + -461, 260, -461, 262, 244, 356, -461, 357, 358, 359, + 363, 302, -461, 263, -461, -461, 263, -461, 272, -461, + -461, 336, 271, 354, 280, 281, 114, -461, 284, -461, + 300, 304, 282, -461, 288, 242, 334, -461, 242, -461, + -461, -461, 335, -461, 385, 387, 300, -461, 233, -461, + -461, -461, -461, 263, 301, -461, 307, 317, 312, -3, + 320, 352, -461, 322, -461, -461, 323, 20, -461, 370, + -461, -461, -461, -461, -461, -461, -3, -461, -461, -461, + -461, -461, 360, -461, 392, 324, -461, -461, 361, 242, + -461, 58, -461, -461, -461, -461, 325, 326, 313, 59, + -461, -461, 331, 332, -461, 338, -461, -461, -461, 374, + 339, -461, -461, 420, -461, 392, 340, -461, -461, 337, + -461, 404, 355, -461, 242, 233, 343, -461, 64, -461, + 345, -461, -461, 346, 347, 393, 353, 362, 429, 305, + -461, 355, -461, -461, -461, 233, -13, 348, -461, -461, + -461, -461, -461, 67, -461, -461, -461, 364, 63, 366, + -461, 436, -461, -461, -461, 329, 329, 421, -461, -461, + 348, -461, -461, -461, -461, 393, 368, 349, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, 172, -461, + -461, 369, -461, 424, 372, -461, -461, 242, -461, -461, + -461, -461, -461, 371, -461, 373, 375, 376, 182, -461, + -461, 380, 242, -461, -461, 339, -461, 445, -461, 447, + -461, 371, -461, -461, -461, 381, -461, 378, -461, -461, + 343, -461, -461, 442, 449, 435, -461, -461, 384, -461, + -461, 404, -461, 77, -461, -461, -461, -461, 431, -461, + 242, -461 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -461, -461, -461, 467, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 407, -461, 367, -461, -461, -461, 29, + -461, -461, 386, -461, -461, -461, -461, -461, -461, -4, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 249, -461, -461, 144, -192, -461, -461, + 168, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, 42, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -167, -461, + -461, -461, -77, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, 127, -461, -461, -461, -461, 319, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -161, -145, -156, + 189, 190, 192, -194, -461, 194, -461, -461, -199, -461, + -461, -461, -398, -461, -461, -461, -461, -461, -461, -132, + -108, -460, -195, -461, -461, -461, -246, 17, -384, -461, + -461, -86, -461, -461, -461, 266, 180, -461, -461, 196, + -285, -83, -9, -461, -461, 500, -461, -461, -150, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 53, -461, -461, -461, -461, -42, -461, + -461, -8, -461, -461, -461, -461, -146, -160, -461, -461, + -461, -461, -461, -461, -461, -461, 30, -461, -461, -73, + -461, -461, -461, -93, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -169 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -410 +static const yytype_int16 yytable[] = +{ + 11, 296, 246, 350, 255, 296, 219, 211, 357, 358, + 121, 227, 441, 442, 239, 270, 233, 236, 210, 232, + 13, 216, 220, 222, 1, 440, 226, 359, 380, 5, + 279, 533, 5, 101, 237, 238, 6, 545, 625, 9, + 451, 20, 260, 261, 262, 263, 264, 265, 234, 300, + 214, 20, 546, 307, 208, 312, 534, 242, 626, 17, + 18, 19, 465, 360, 14, 467, 468, 16, 281, 640, + 641, 642, 643, 644, 645, 646, 647, 122, 278, -209, + 280, 361, 24, -207, 417, -395, 211, 362, 240, 490, + 547, 421, 491, 101, 423, 169, 170, 210, 356, -214, + 429, 576, -214, 208, -52, 319, 208, -52, 432, 320, + 25, 173, 320, 323, 266, 324, 174, 593, 594, -338, + -338, -338, 296, -360, -179, 28, 328, -356, -175, 527, + -352, -126, -130, 434, 435, 326, 355, 327, 428, 348, + 452, 349, 367, 26, 368, 455, 375, 354, 368, 377, + 138, 378, 406, 453, 460, 454, 567, 574, 568, 575, + 648, 29, 607, 466, 608, 634, 30, 635, 394, 31, + 395, 396, 397, 398, 399, 706, 400, 707, 663, 664, + 403, 404, 260, 261, 262, 263, 264, 265, 681, 664, + 33, 34, 36, 39, 40, 118, 119, 123, 259, -91, + 132, 140, -135, 141, 142, 143, 147, 163, 428, 144, + 511, 146, 145, 515, 148, 149, 150, 151, 194, 161, + 195, 164, 165, 193, 197, 166, 167, 655, 656, 201, + 199, 206, 203, 205, 494, 207, 204, 168, 163, 229, + 437, 438, 212, 230, 311, 169, 170, 171, 172, 315, + 244, 221, 164, 241, 248, 256, 166, 167, 252, 254, + -212, 173, 247, 271, 566, 481, 174, 249, 168, 175, + 231, 275, 266, 251, 253, 283, 169, 170, 171, 172, + 176, 258, 214, 285, 288, 274, 290, 177, 178, -220, + 291, 292, 173, 179, 180, 293, 294, 174, 301, 603, + 175, 305, 313, 314, 316, 181, 321, 318, 570, 351, + 371, 176, 352, 353, 369, 370, 525, 372, 373, 178, + 376, 379, 381, 383, 179, 180, 385, 384, 402, 390, + 412, 401, 392, 407, 408, 414, 181, 418, 425, 430, + 433, 439, 444, 447, 448, 456, 461, 457, 458, 616, + 459, 73, 462, 464, 469, 74, 75, 477, 475, 480, + 482, 484, 485, 495, 486, 76, 616, 488, 497, 311, + 493, 639, 674, 77, 78, 498, 512, 499, 500, -54, + 509, 503, 658, 504, 518, 79, 510, 684, 508, 616, + 521, 523, -409, 604, 80, 81, 82, 549, 558, 528, + 556, 584, 564, 83, 84, 530, 671, 85, 86, 532, + 87, 88, 89, 623, 573, 531, 639, 90, 540, 543, + 544, 561, 571, 585, 572, 711, 580, 590, 577, 578, + 597, 612, 599, 619, 595, 91, 92, 93, 592, 605, + 654, 94, 95, 628, 610, 611, 329, 609, 657, 662, + 617, 672, 687, 688, 702, 696, 694, 698, 710, 618, + 330, 702, -161, 652, 331, 332, 661, 670, 492, 673, + 7, 678, 677, 120, 680, 679, 333, 501, 683, 689, + 691, 700, 284, 133, 334, 335, 336, 337, 311, 139, + 516, 517, 391, 405, 520, 676, 474, 73, 591, 419, + 338, 74, 75, 660, 633, 339, 705, 387, 340, 243, + 388, 76, 541, 389, 514, 622, 620, 306, 682, 77, + 78, 393, 27, 550, 489, -53, 583, 341, 555, 686, + 692, 79, 342, 343, 557, 632, 524, 659, 709, 0, + 80, 81, 82, 0, 569, 0, 0, 0, 416, 83, + 84, 0, 0, 85, 86, 0, 87, 88, 89, 550, + 0, 0, 587, 90, 0, 0, 41, 42, 0, 0, + 0, 0, 0, 0, 422, 0, 43, 0, 0, 0, + 44, 91, 92, 93, 45, 46, 0, 94, 95, 0, + 0, 0, 0, 0, 0, 0, 47, 0, 0, 587, + 0, 0, 0, 0, 0, 48, 49, 50, 0, 0, + 51, 0, 0, 0, 52, 53, 0, 0, 54, 55, + 0, 56, 57, 58, 0, 0, 0, 0, 59, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 61, 62, 0, + 0, 0, 63, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 685 +}; + +static const yytype_int16 yycheck[] = +{ + 9, 247, 194, 288, 203, 251, 167, 163, 293, 294, + 33, 172, 410, 411, 16, 209, 65, 178, 163, 175, + 25, 166, 167, 168, 5, 409, 171, 14, 313, 0, + 224, 34, 3, 37, 179, 180, 0, 17, 51, 97, + 424, 12, 7, 8, 9, 10, 11, 12, 97, 248, + 97, 22, 32, 252, 101, 254, 59, 5, 71, 5, + 6, 7, 446, 50, 69, 449, 450, 98, 229, 6, + 7, 8, 9, 10, 11, 12, 13, 100, 223, 97, + 225, 68, 4, 101, 369, 15, 242, 74, 90, 473, + 70, 376, 476, 97, 379, 43, 44, 242, 292, 97, + 385, 561, 97, 101, 105, 102, 101, 105, 102, 106, + 101, 59, 106, 98, 79, 100, 64, 577, 578, 5, + 6, 7, 368, 53, 54, 18, 282, 57, 58, 513, + 60, 61, 62, 7, 8, 98, 292, 100, 384, 98, + 425, 100, 98, 105, 100, 430, 98, 292, 100, 98, + 121, 100, 351, 98, 439, 100, 98, 98, 100, 100, + 97, 7, 98, 448, 100, 98, 6, 100, 329, 31, + 331, 332, 333, 334, 335, 98, 337, 100, 6, 7, + 341, 342, 7, 8, 9, 10, 11, 12, 6, 7, + 102, 101, 39, 7, 99, 102, 99, 98, 207, 4, + 29, 61, 87, 62, 58, 54, 15, 5, 454, 60, + 495, 53, 57, 498, 48, 59, 87, 4, 84, 36, + 63, 19, 20, 80, 82, 23, 24, 625, 626, 56, + 63, 4, 80, 29, 480, 30, 75, 35, 5, 36, + 401, 402, 97, 81, 253, 43, 44, 45, 46, 258, + 6, 101, 19, 105, 80, 13, 23, 24, 80, 80, + 101, 59, 97, 6, 549, 464, 64, 97, 35, 67, + 101, 6, 79, 97, 97, 5, 43, 44, 45, 46, + 78, 97, 97, 6, 28, 98, 7, 85, 86, 101, + 7, 5, 59, 91, 92, 27, 89, 64, 6, 584, + 67, 47, 27, 80, 94, 103, 3, 101, 554, 80, + 98, 78, 104, 104, 27, 101, 508, 100, 13, 86, + 27, 27, 6, 98, 91, 92, 27, 97, 81, 101, + 72, 36, 101, 37, 37, 6, 103, 7, 27, 76, + 7, 27, 73, 102, 66, 4, 4, 102, 102, 595, + 102, 1, 97, 80, 52, 5, 6, 97, 7, 97, + 4, 4, 4, 27, 5, 15, 612, 4, 97, 378, + 98, 617, 657, 23, 24, 21, 42, 97, 97, 29, + 98, 97, 628, 83, 49, 35, 98, 672, 84, 635, + 5, 4, 40, 585, 44, 45, 46, 27, 6, 98, + 40, 27, 41, 53, 54, 98, 652, 57, 58, 97, + 60, 61, 62, 605, 101, 98, 662, 67, 98, 97, + 97, 97, 97, 84, 98, 710, 88, 7, 97, 97, + 26, 38, 77, 4, 97, 85, 86, 87, 98, 96, + 4, 91, 92, 95, 98, 98, 5, 102, 27, 100, + 97, 27, 7, 6, 700, 6, 14, 22, 27, 97, + 19, 707, 98, 97, 23, 24, 98, 98, 477, 97, + 3, 98, 101, 66, 98, 100, 35, 486, 98, 98, + 102, 97, 233, 97, 43, 44, 45, 46, 497, 122, + 499, 500, 324, 349, 503, 662, 454, 1, 575, 372, + 59, 5, 6, 635, 612, 64, 701, 318, 67, 190, + 320, 15, 521, 321, 497, 601, 599, 251, 668, 23, + 24, 327, 22, 532, 471, 29, 568, 86, 536, 675, + 690, 35, 91, 92, 543, 608, 506, 630, 707, -1, + 44, 45, 46, -1, 553, -1, -1, -1, 368, 53, + 54, -1, -1, 57, 58, -1, 60, 61, 62, 568, + -1, -1, 571, 67, -1, -1, 5, 6, -1, -1, + -1, -1, -1, -1, 378, -1, 15, -1, -1, -1, + 19, 85, 86, 87, 23, 24, -1, 91, 92, -1, + -1, -1, -1, -1, -1, -1, 35, -1, -1, 608, + -1, -1, -1, -1, -1, 44, 45, 46, -1, -1, + 49, -1, -1, -1, 53, 54, -1, -1, 57, 58, + -1, 60, 61, 62, -1, -1, -1, -1, 67, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 85, 86, 87, -1, + -1, -1, 91, 92, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 673 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 5, 108, 109, 110, 126, 0, 110, 111, 97, + 112, 269, 270, 25, 69, 113, 98, 5, 6, 7, + 126, 136, 271, 272, 4, 101, 105, 272, 18, 7, + 6, 31, 116, 102, 101, 117, 39, 114, 115, 7, + 99, 5, 6, 15, 19, 23, 24, 35, 44, 45, + 46, 49, 53, 54, 57, 58, 60, 61, 62, 67, + 85, 86, 87, 91, 92, 118, 119, 120, 121, 122, + 123, 124, 125, 1, 5, 6, 15, 23, 24, 35, + 44, 45, 46, 53, 54, 57, 58, 60, 61, 62, + 67, 85, 86, 87, 91, 92, 127, 128, 129, 130, + 133, 136, 137, 139, 141, 142, 143, 144, 145, 159, + 163, 167, 193, 197, 276, 280, 284, 307, 102, 99, + 120, 33, 100, 98, 160, 164, 194, 198, 277, 281, + 285, 308, 29, 129, 131, 138, 168, 140, 126, 122, + 61, 62, 58, 54, 60, 57, 53, 15, 48, 59, + 87, 4, 161, 165, 195, 199, 278, 282, 286, 309, + 132, 36, 169, 5, 19, 20, 23, 24, 35, 43, + 44, 45, 46, 59, 64, 67, 78, 85, 86, 91, + 92, 103, 126, 134, 146, 149, 150, 151, 154, 210, + 211, 214, 222, 80, 84, 63, 260, 82, 206, 63, + 261, 56, 264, 80, 75, 29, 4, 30, 101, 218, + 225, 226, 97, 135, 97, 224, 225, 226, 230, 224, + 225, 101, 225, 215, 216, 217, 225, 224, 225, 36, + 81, 101, 226, 65, 97, 147, 224, 225, 225, 16, + 90, 105, 5, 214, 6, 235, 154, 97, 80, 97, + 200, 97, 80, 97, 80, 235, 13, 267, 97, 269, + 7, 8, 9, 10, 11, 12, 79, 227, 228, 229, + 230, 6, 156, 157, 98, 6, 231, 232, 225, 230, + 225, 224, 219, 5, 150, 6, 152, 153, 28, 237, + 7, 7, 5, 27, 89, 238, 253, 262, 263, 269, + 235, 6, 207, 208, 209, 47, 262, 235, 254, 265, + 266, 269, 235, 27, 80, 269, 94, 170, 101, 102, + 106, 3, 158, 98, 100, 233, 98, 100, 226, 5, + 19, 23, 24, 35, 43, 44, 45, 46, 59, 64, + 67, 86, 91, 92, 155, 212, 221, 223, 98, 100, + 267, 80, 104, 104, 225, 226, 230, 267, 267, 14, + 50, 68, 74, 174, 175, 176, 190, 98, 100, 27, + 101, 98, 100, 13, 268, 98, 27, 98, 100, 27, + 267, 6, 236, 98, 97, 27, 173, 227, 228, 229, + 101, 157, 101, 232, 224, 224, 224, 224, 224, 224, + 224, 36, 81, 224, 224, 153, 235, 37, 37, 162, + 192, 191, 72, 177, 6, 239, 263, 267, 7, 209, + 201, 267, 266, 267, 287, 27, 171, 172, 253, 267, + 76, 255, 102, 7, 7, 8, 234, 224, 224, 27, + 255, 239, 239, 178, 73, 179, 196, 102, 66, 279, + 283, 255, 267, 98, 100, 267, 4, 102, 102, 102, + 267, 4, 97, 180, 80, 255, 267, 255, 255, 52, + 288, 289, 290, 310, 172, 7, 148, 97, 248, 253, + 97, 235, 4, 202, 4, 4, 5, 292, 4, 290, + 255, 255, 269, 98, 253, 27, 166, 97, 21, 97, + 97, 269, 291, 97, 83, 311, 312, 313, 84, 98, + 98, 267, 42, 186, 254, 267, 269, 269, 49, 293, + 269, 5, 317, 4, 313, 154, 187, 255, 98, 203, + 98, 98, 97, 34, 59, 296, 297, 298, 299, 301, + 98, 269, 314, 97, 97, 17, 32, 70, 240, 27, + 269, 294, 295, 300, 302, 298, 40, 269, 6, 188, + 189, 97, 242, 241, 41, 243, 267, 98, 100, 269, + 253, 97, 98, 101, 98, 100, 248, 97, 97, 244, + 88, 181, 204, 295, 27, 84, 303, 269, 315, 316, + 7, 189, 98, 248, 248, 97, 182, 26, 249, 77, + 256, 257, 258, 267, 154, 96, 304, 98, 100, 102, + 98, 98, 38, 245, 246, 247, 253, 97, 97, 4, + 268, 205, 258, 154, 305, 51, 71, 306, 95, 318, + 319, 320, 316, 247, 98, 100, 183, 184, 185, 253, + 6, 7, 8, 9, 10, 11, 12, 13, 97, 213, + 220, 250, 97, 259, 4, 239, 239, 27, 253, 320, + 246, 98, 100, 6, 7, 251, 252, 273, 274, 275, + 98, 253, 27, 97, 267, 321, 185, 101, 98, 100, + 98, 6, 275, 98, 267, 269, 303, 7, 6, 98, + 322, 102, 304, 323, 14, 326, 6, 327, 22, 328, + 97, 324, 253, 329, 330, 249, 98, 100, 325, 330, + 27, 267 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 1587 "parser-smi.y" + { + (yyval.err) = 0; + ;} + break; + + case 3: +#line 1591 "parser-smi.y" + { + (yyval.err) = 0; + ;} + break; + + case 4: +#line 1597 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 5: +#line 1599 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 6: +#line 1607 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + thisParserPtr->modulePtr = findModuleByName((yyvsp[(1) - (1)].id)); + if (!thisParserPtr->modulePtr) { + thisParserPtr->modulePtr = + addModule((yyvsp[(1) - (1)].id), + smiStrdup(thisParserPtr->path), + 0, + thisParserPtr); + thisParserPtr->modulePtr-> + numImportedIdentifiers = 0; + thisParserPtr->modulePtr-> + numStatements = 0; + thisParserPtr->modulePtr-> + numModuleIdentities = 0; + if (!strcmp((yyvsp[(1) - (1)].id), "SNMPv2-SMI")) { + /* + * SNMPv2-SMI is an SMIv2 module + * that cannot be identified by + * importing from SNMPv2-SMI. + */ + thisModulePtr->export.language = + SMI_LANGUAGE_SMIV2; + } + } else { + smiPrintError(thisParserPtr, + ERR_MODULE_ALREADY_LOADED, + (yyvsp[(1) - (1)].id)); + /* + * this aborts parsing the whole file, + * not only the current module. + */ + YYABORT; + } + ;} + break; + + case 7: +#line 1651 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV1; + checkModuleName(thisParserPtr, thisModulePtr); + checkModuleIdentity(thisParserPtr, thisModulePtr); + checkObjects(thisParserPtr, thisModulePtr); + checkTypes(thisParserPtr, thisModulePtr); + checkDefvals(thisParserPtr, thisModulePtr); + checkImportsUsage(thisParserPtr, thisModulePtr); + smiCheckTypeUsage(thisParserPtr, thisModulePtr); + + thisParserPtr->capabilitiesModulePtr = NULL; + + (yyval.err) = 0; + ;} + break; + + case 8: +#line 1669 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 9: +#line 1671 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 10: +#line 1675 "parser-smi.y" + { ;} + break; + + case 11: +#line 1677 "parser-smi.y" + { + thisModulePtr->export.language = SMI_LANGUAGE_SPPI; + ;} + break; + + case 12: +#line 1686 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 13: +#line 1688 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 14: +#line 1692 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + if ((thisModulePtr->export.language != SMI_LANGUAGE_SMIV2) && + (thisModulePtr->export.language != SMI_LANGUAGE_SPPI)) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV1; + + (yyval.err) = 0; + ;} + break; + + case 15: +#line 1706 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 16: +#line 1708 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language == + SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "EXPORTS"); + + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + if (strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI")) { + smiPrintError(thisParserPtr, ERR_EXPORTS); + } + ;} + break; + + case 17: +#line 1725 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 18: +#line 1729 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 19: +#line 1731 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 20: +#line 1736 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 21: +#line 1738 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 22: +#line 1744 "parser-smi.y" + { + Import *importPtr; + Module *modulePtr; + + /* + * Recursively call the parser to suffer + * the IMPORTS, if the module is not yet + * loaded. + */ + modulePtr = findModuleByName((yyvsp[(3) - (3)].id)); + if (!modulePtr) { + modulePtr = loadModule((yyvsp[(3) - (3)].id), thisParserPtr); + } + checkImports(modulePtr, thisParserPtr); + + if (modulePtr && !strcmp((yyvsp[(3) - (3)].id), "SNMPv2-SMI")) { + /* + * A module that imports a macro or + * type definition from SNMPv2-SMI + * seems to be SMIv2 style - but only if + * it is not SPPI yet. + */ + if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + for (importPtr = + thisModulePtr->firstImportPtr; + importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importPtr->export.module, + (yyvsp[(3) - (3)].id))) && + ((importPtr->kind == KIND_MACRO) || + (importPtr->kind == KIND_TYPE))) { + thisModulePtr->export.language = + SMI_LANGUAGE_SMIV2; + } + } + } + } + + smiFree((yyvsp[(3) - (3)].id)); + ;} + break; + + case 23: +#line 1787 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 24: +#line 1790 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 25: +#line 1797 "parser-smi.y" + { + addImport((yyvsp[(1) - (1)].id), thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + (yyval.id) = 0; + ;} + break; + + case 26: +#line 1803 "parser-smi.y" + { + addImport((yyvsp[(1) - (1)].id), thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + (yyval.id) = 0; + ;} + break; + + case 27: +#line 1809 "parser-smi.y" + { + addImport(smiStrdup((yyvsp[(1) - (1)].id)), thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + (yyval.id) = 0; + ;} + break; + + case 28: +#line 1825 "parser-smi.y" + { + /* + * There are PIBs that import e.g. Counter64 - so + * don't complain here about SMI keywords. + */ + /* if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, $1);*/ + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 29: +#line 1835 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_TYPE_IN_MIB, (yyvsp[(1) - (1)].id)); + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 52: +#line 1869 "parser-smi.y" + { + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_MODULENAME_32, ERR_MODULENAME_64); + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 53: +#line 1881 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 54: +#line 1883 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 55: +#line 1888 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 56: +#line 1890 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 57: +#line 1894 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 58: +#line 1899 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 59: +#line 1904 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 60: +#line 1909 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 61: +#line 1914 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 62: +#line 1919 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 63: +#line 1924 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 64: +#line 1929 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 65: +#line 1934 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 66: +#line 1939 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 67: +#line 1944 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 68: +#line 1949 "parser-smi.y" + { + thisParserPtr->modulePtr->numStatements++; + (yyval.err) = 0; + ;} + break; + + case 69: +#line 1954 "parser-smi.y" + { + smiPrintError(thisParserPtr, + ERR_FLUSH_DECLARATION); + yyerrok; + (yyval.err) = 1; + ;} + break; + + case 70: +#line 1968 "parser-smi.y" + { + Macro *macroPtr; + + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MACRO; + + macroPtr = addMacro(smiStrdup((yyvsp[(1) - (1)].id)), + 0, thisParserPtr); + setMacroLine(macroPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + ;} + break; + + case 71: +#line 1980 "parser-smi.y" + { + /* + * ASN.1 macros are known to be in these + * modules. + */ + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1215") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI-TC")) { + smiPrintError(thisParserPtr, ERR_MACRO); + } + ;} + break; + + case 72: +#line 2008 "parser-smi.y" + { + (yyval.err) = 0; + ;} + break; + + case 73: +#line 2013 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 74: +#line 2014 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 75: +#line 2015 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 76: +#line 2016 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 77: +#line 2017 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 78: +#line 2018 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 79: +#line 2019 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 80: +#line 2020 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 81: +#line 2021 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 82: +#line 2022 "parser-smi.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); ;} + break; + + case 83: +#line 2026 "parser-smi.y" + { + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_CHOICE); + } + ;} + break; + + case 84: +#line 2046 "parser-smi.y" + { + (yyval.typePtr) = addType(NULL, SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + ;} + break; + + case 85: +#line 2056 "parser-smi.y" + { + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 86: +#line 2061 "parser-smi.y" + { + smiPrintError (thisParserPtr, + ERR_BAD_LOWER_IDENTIFIER_CASE, + (yyvsp[(1) - (1)].id)); + /* xxx + if ((thisParserPtr->flags & SMI_FLAG_BE_LAX) == 0) { + YYERROR; + } + */ + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 87: +#line 2076 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_VALUEASSIGNMENT; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr((yyvsp[(1) - (1)].id), '-') && + (strcmp((yyvsp[(1) - (1)].id), "mib-2") || + strcmp(thisModulePtr->export.name, "SNMPv2-SMI"))) { + smiPrintError(thisParserPtr, + ERR_OIDNAME_INCLUDES_HYPHEN, + (yyvsp[(1) - (1)].id)); + } + } + ;} + break; + + case 88: +#line 2097 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(7) - (8)].objectPtr); + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (8)].id), &objectPtr); + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (8)].id), thisParserPtr); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_VALUEASSIGNMENT); + (yyval.err) = 0; + ;} + break; + + case 89: +#line 2116 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_TYPEASSIGNMENT; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_TYPENAME_32, ERR_TYPENAME_64); + ;} + break; + + case 90: +#line 2124 "parser-smi.y" + { + Type *typePtr; + + if (strlen((yyvsp[(1) - (4)].id))) { + if ((yyvsp[(4) - (4)].typePtr)->export.basetype != SMI_BASETYPE_UNKNOWN) { + smiCheckTypeName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (4)].id), + thisParserPtr->firstStatementLine); + } + setTypeLine((yyvsp[(4) - (4)].typePtr), thisParserPtr->firstStatementLine, + thisParserPtr); + setTypeName((yyvsp[(4) - (4)].typePtr), (yyvsp[(1) - (4)].id)); + (yyval.err) = 0; + } else { + (yyval.err) = 0; + } + + /* + * If we are in an SMI module, some type + * definitions derived from ASN.1 `INTEGER' + * must be modified to libsmi basetypes. + */ + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "SNMPv2-SMI"))) { + if (!strcmp((yyvsp[(1) - (4)].id), "Counter32")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Gauge32")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Unsigned32")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "TimeTicks")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Counter64")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED64; + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned64 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + } + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned64Ptr); + } + } + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "RFC1155-SMI") || + !strcmp(thisModulePtr->export.name, "RFC1065-SMI"))) { + if (!strcmp((yyvsp[(1) - (4)].id), "Counter")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Gauge")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "TimeTicks")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "NetworkAddress")) { + setTypeName((yyvsp[(4) - (4)].typePtr), smiStrdup("NetworkAddress")); + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_OCTETSTRING; + setTypeParent((yyvsp[(4) - (4)].typePtr), findTypeByModuleAndName( + thisModulePtr, + "IpAddress")); + } else if (!strcmp((yyvsp[(1) - (4)].id), "IpAddress")) { + typePtr = findTypeByModuleAndName( + thisModulePtr, "NetworkAddress"); + if (typePtr) + setTypeParent(typePtr, (yyvsp[(4) - (4)].typePtr)); + } + } + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) { + if (!strcmp((yyvsp[(1) - (4)].id), "Unsigned32")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "TimeTicks")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp((yyvsp[(1) - (4)].id), "Unsigned64")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_UNSIGNED64; + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.unsigned64 = 0; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + } + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeUnsigned64Ptr); + } else if (!strcmp((yyvsp[(1) - (4)].id), "Integer64")) { + (yyvsp[(4) - (4)].typePtr)->export.basetype = SMI_BASETYPE_INTEGER64; + if ((yyvsp[(4) - (4)].typePtr)->listPtr) { + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_INTEGER64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.minValue.value.integer64 = SMI_BASETYPE_INTEGER64_MIN; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_INTEGER64; + ((Range *)(yyvsp[(4) - (4)].typePtr)->listPtr->ptr)->export.maxValue.value.integer64 = SMI_BASETYPE_INTEGER64_MAX; + } + setTypeParent((yyvsp[(4) - (4)].typePtr), smiHandle->typeInteger64Ptr); + } + } + ;} + break; + + case 91: +#line 2282 "parser-smi.y" + { + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 92: +#line 2286 "parser-smi.y" + { + (yyval.id) = smiStrdup((yyvsp[(1) - (1)].id)); + /* + * well known types (keywords in this grammar) + * are known to be defined in these modules. + */ + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_TYPE_SMI_OR_SPPI, (yyvsp[(1) - (1)].id)); + } + ;} + break; + + case 93: +#line 2310 "parser-smi.y" + { + (yyval.id) = smiStrdup((yyvsp[(1) - (1)].id)); + /* + * well known types (keywords in this grammar) + * are known to be defined in these modules. + */ + if ((strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) && + (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI)) + smiPrintError(thisParserPtr, ERR_TYPE_SPPI, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 95: +#line 2325 "parser-smi.y" + { + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName((yyvsp[(1) - (1)].id), thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, (yyvsp[(1) - (1)].id)); + (yyval.id) = (yyvsp[(1) - (1)].id); + ;} + break; + + case 106: +#line 2350 "parser-smi.y" + { + if ((yyvsp[(1) - (1)].typePtr)->export.name) { + /* + * If we found an already defined type, + * we have to inherit a new type structure. + * (Otherwise the `Syntax' rule created + * a new type for us.) + */ + (yyval.typePtr) = duplicateType((yyvsp[(1) - (1)].typePtr), 0, thisParserPtr); + setTypeDecl((yyval.typePtr), SMI_DECL_TYPEASSIGNMENT); + } else { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + setTypeDecl((yyval.typePtr), SMI_DECL_TYPEASSIGNMENT); + } + ;} + break; + + case 107: +#line 2366 "parser-smi.y" + { + Import *importPtr; + + thisParserPtr->currentDecl = SMI_DECL_TEXTUALCONVENTION; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + if (strcmp(thisModulePtr->export.name, "SNMPv2-TC")) { + importPtr = + findImportByName("TEXTUAL-CONVENTION", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TEXTUAL-CONVENTION", + "SNMPv2-TC"); + else + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TEXTUAL-CONVENTION", + "COPS-PR-SPPI"); + } + } + ;} + break; + + case 108: +#line 2397 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(7) - (7)].text)); + ;} + break; + + case 109: +#line 2402 "parser-smi.y" + { + if (((yyvsp[(11) - (11)].typePtr)) && !((yyvsp[(11) - (11)].typePtr)->export.name)) { + /* + * If the Type we found has just been + * defined, we don't have to allocate + * a new one. + */ + (yyval.typePtr) = (yyvsp[(11) - (11)].typePtr); + } else { + if (!((yyvsp[(11) - (11)].typePtr))) + smiPrintError(thisParserPtr, ERR_INTERNAL); + /* + * Otherwise, we have to allocate a + * new Type struct, inherited from $10. + */ + (yyval.typePtr) = duplicateType((yyvsp[(11) - (11)].typePtr), 0, thisParserPtr); + } + setTypeDescription((yyval.typePtr), (yyvsp[(7) - (11)].text), thisParserPtr); + if ((yyvsp[(9) - (11)].text)) { + setTypeReference((yyval.typePtr), (yyvsp[(9) - (11)].text), thisParserPtr); + } + setTypeStatus((yyval.typePtr), (yyvsp[(5) - (11)].status)); + if ((yyvsp[(3) - (11)].text)) { + if (smiCheckFormat(thisParserPtr, + (yyval.typePtr)->export.basetype, (yyvsp[(3) - (11)].text), + thisParserPtr->firstStatementLine)) { + setTypeFormat((yyval.typePtr), (yyvsp[(3) - (11)].text)); + } + } + setTypeDecl((yyval.typePtr), SMI_DECL_TEXTUALCONVENTION); + ;} + break; + + case 110: +#line 2434 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + setTypeDecl((yyval.typePtr), SMI_DECL_TYPEASSIGNMENT); + ;} + break; + + case 111: +#line 2442 "parser-smi.y" + { + if ((yyvsp[(3) - (3)].typePtr)) { + (yyval.typePtr) = addType(NULL, + SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + setTypeDecl((yyval.typePtr), SMI_DECL_IMPL_SEQUENCEOF); + setTypeParent((yyval.typePtr), (yyvsp[(3) - (3)].typePtr)); + } else { + (yyval.typePtr) = NULL; + } + ;} + break; + + case 112: +#line 2461 "parser-smi.y" + { + Type *typePtr; + Import *importPtr; + + (yyval.typePtr) = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, (yyvsp[(1) - (1)].id)); + if (! (yyval.typePtr)) { + importPtr = findImportByName((yyvsp[(1) - (1)].id), + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + typePtr = addType((yyvsp[(1) - (1)].id), + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = typePtr; + } else { + /* + * imported type. + * TODO: is this allowed in a SEQUENCE? + */ + importPtr->use++; + (yyval.typePtr) = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + smiFree((yyvsp[(1) - (1)].id)); + } + } else { + smiFree((yyvsp[(1) - (1)].id)); + } + ;} + break; + + case 113: +#line 2501 "parser-smi.y" + { + (yyval.typePtr) = addType(NULL, SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (4)].listPtr)); + ;} + break; + + case 114: +#line 2509 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 115: +#line 2516 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 116: +#line 2535 "parser-smi.y" + { + Object *objectPtr; + Import *importPtr; + Type *typePtr; + + objectPtr = + findObjectByModuleAndName(thisParserPtr->modulePtr, + (yyvsp[(1) - (2)].id)); + + if (!objectPtr) { + importPtr = findImportByName((yyvsp[(1) - (2)].id), + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + objectPtr = addObject((yyvsp[(1) - (2)].id), thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE | + FLAG_SEQTYPE, + thisParserPtr); + setObjectType(objectPtr, (yyvsp[(2) - (2)].typePtr)); + } else { + /* + * imported object. + */ + importPtr->use++; + objectPtr = findObjectByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (2)].id)); + smiFree((yyvsp[(1) - (2)].id)); + + if (objectPtr->typePtr->export.name) { + typePtr = objectPtr->typePtr; + } else { + typePtr = objectPtr->typePtr->parentPtr; + } + if (((yyvsp[(2) - (2)].typePtr) != typePtr) && + (((yyvsp[(2) - (2)].typePtr)->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + (((yyvsp[(2) - (2)].typePtr)->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + } + } else { + smiFree((yyvsp[(1) - (2)].id)); + if (objectPtr->typePtr) { + + if (objectPtr->typePtr->export.name) { + typePtr = objectPtr->typePtr; + } else { + typePtr = objectPtr->typePtr->parentPtr; + } + if (((yyvsp[(2) - (2)].typePtr) != typePtr) && + (((yyvsp[(2) - (2)].typePtr)->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + (((yyvsp[(2) - (2)].typePtr)->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + + } else { + setObjectType(objectPtr, (yyvsp[(2) - (2)].typePtr)); + addObjectFlags(objectPtr, + FLAG_SEQTYPE); + } + } + + (yyval.objectPtr) = objectPtr; + ;} + break; + + case 117: +#line 2618 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + if ((yyval.typePtr)) + defaultBasetype = (yyval.typePtr)->export.basetype; + ;} + break; + + case 118: +#line 2626 "parser-smi.y" + { + Type *typePtr; + List *p; + + defaultBasetype = SMI_BASETYPE_BITS; + typePtr = addType(NULL, SMI_BASETYPE_BITS, + FLAG_INCOMPLETE, + thisParserPtr); + setTypeDecl(typePtr, SMI_DECL_IMPLICIT_TYPE); + setTypeParent(typePtr, smiHandle->typeBitsPtr); + setTypeList(typePtr, (yyvsp[(3) - (4)].listPtr)); + for (p = (yyvsp[(3) - (4)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = typePtr; + smiCheckNamedNumbersOrder(parserPtr, typePtr); + (yyval.typePtr) = typePtr; + ;} + break; + + case 119: +#line 2646 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 120: +#line 2650 "parser-smi.y" + { + /* TODO: */ + (yyval.typePtr) = smiHandle->typeOctetStringPtr; + ;} + break; + + case 121: +#line 2655 "parser-smi.y" + { + Type *typePtr; + Import *importPtr; + + (yyval.typePtr) = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, (yyvsp[(1) - (2)].id)); + if (! (yyval.typePtr)) { + importPtr = findImportByName((yyvsp[(1) - (2)].id), + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + typePtr = addType((yyvsp[(1) - (2)].id), SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = typePtr; + } else { + importPtr->use++; + (yyval.typePtr) = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + smiFree((yyvsp[(1) - (2)].id)); + } + } else { + smiFree((yyvsp[(1) - (2)].id)); + } + ;} + break; + + case 122: +#line 2688 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].namedNumberPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 123: +#line 2694 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].namedNumberPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 124: +#line 2707 "parser-smi.y" + { + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_BITNAME_32, ERR_BITNAME_64); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr((yyvsp[(1) - (1)].id), '-')) { + smiPrintError(thisParserPtr, + ERR_NAMEDBIT_INCLUDES_HYPHEN, + (yyvsp[(1) - (1)].id)); + } + } + ;} + break; + + case 125: +#line 2720 "parser-smi.y" + { + (yyval.namedNumberPtr) = smiMalloc(sizeof(NamedNumber)); + (yyval.namedNumberPtr)->export.name = (yyvsp[(1) - (5)].id); + (yyval.namedNumberPtr)->export.value.basetype = + SMI_BASETYPE_UNSIGNED32; + (yyval.namedNumberPtr)->export.value.value.unsigned32 = (yyvsp[(4) - (5)].unsigned32); + /* RFC 2578 7.1.4 */ + if ((yyvsp[(4) - (5)].unsigned32) >= 65535*8) { + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_TOO_LARGE, + (yyvsp[(1) - (5)].id), (yyvsp[(4) - (5)].unsigned32)); + } else { + if ((yyvsp[(4) - (5)].unsigned32) >= 128) { + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_LARGE, + (yyvsp[(1) - (5)].id), (yyvsp[(4) - (5)].unsigned32)); + } + } + ;} + break; + + case 126: +#line 2742 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTIDENTITY; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 127: +#line 2752 "parser-smi.y" + { + Import *importPtr; + + if (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI")) { + importPtr = findImportByName("OBJECT-IDENTITY", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-IDENTITY", + "SNMPv2-SMI"); + else + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-IDENTITY", + "COPS-PR-SPPI"); + } + } + ;} + break; + + case 128: +#line 2777 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(8) - (8)].text)); + ;} + break; + + case 129: +#line 2783 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(13) - (14)].objectPtr); + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (14)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (14)].id), thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTIDENTITY); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectStatus(objectPtr, (yyvsp[(6) - (14)].status)); + setObjectDescription(objectPtr, (yyvsp[(8) - (14)].text), thisParserPtr); + if ((yyvsp[(10) - (14)].text)) { + setObjectReference(objectPtr, (yyvsp[(10) - (14)].text), thisParserPtr); + } + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + (yyval.err) = 0; + ;} + break; + + case 130: +#line 2805 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTTYPE; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 131: +#line 2815 "parser-smi.y" + { + Import *importPtr; + + importPtr = findImportByName("OBJECT-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "SNMPv2-SMI"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "COPS-PR-SPPI"); + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "RFC-1212"); + } + } + indexFlag = 0; + ;} + break; + + case 132: +#line 2855 "parser-smi.y" + { + Object *objectPtr, *parentPtr; + Type *typePtr = NULL; + + objectPtr = (yyvsp[(22) - (23)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (23)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (23)].id), thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + if (checkObjectFlags(objectPtr, FLAG_SEQTYPE)) { + deleteObjectFlags(objectPtr, FLAG_SEQTYPE); + if ((yyvsp[(6) - (23)].typePtr)) { + if ((yyvsp[(6) - (23)].typePtr)->export.name) { + typePtr = (yyvsp[(6) - (23)].typePtr); + /* + * According to RFC 3159 7.1.3. Opaque must not be used + * in a SYNTAX clause. + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + !strcmp(typePtr->export.name, "Opaque")) + smiPrintError(thisParserPtr, ERR_OPAQUE_IN_SYNTAX); + /* + * According to RFC 3159 7.1.4. IpAddress must not be used + * in a SYNTAX clause. + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + !strcmp(typePtr->export.name, "IpAddress")) + smiPrintError(thisParserPtr, ERR_IPADDRESS_IN_SYNTAX); + } else { + typePtr = (yyvsp[(6) - (23)].typePtr)->parentPtr; + } + if ((objectPtr->typePtr != typePtr) && + ((objectPtr->typePtr->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + ((objectPtr->typePtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + } + } + setObjectType(objectPtr, (yyvsp[(6) - (23)].typePtr)); + if (!((yyvsp[(6) - (23)].typePtr)->export.name)) { + /* + * An inlined type. + */ +#if 0 /* export implicitly defined types by the node's lowercase name */ + setTypeName((yyvsp[(6) - (23)].typePtr), (yyvsp[(1) - (23)].id)); +#endif + } + setObjectUnits(objectPtr, (yyvsp[(7) - (23)].text)); + setObjectAccess(objectPtr, (yyvsp[(8) - (23)].access)); + if (thisParserPtr->flags & FLAG_CREATABLE) { + thisParserPtr->flags &= ~FLAG_CREATABLE; + parentPtr = + objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (parentPtr && + parentPtr->export.indexkind != + SMI_INDEX_UNKNOWN) { + /* + * add objectPtr to the parent object's + * listPtr, which is the list of columns + * needed for row creation. + * + * Note, that this would clash, if the + * parent row object-type is not yet + * defined. + */ + /* + newlistPtr = smiMalloc(sizeof(List)); + newlistPtr->nextPtr = NULL; + newlistPtr->ptr = objectPtr; + */ + /* + * Look up the parent object-type. + */ + /* + if (parentPtr->listPtr) { + for(listPtr = parentPtr->listPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = newlistPtr; + } else { + parentPtr->listPtr = newlistPtr; + } + */ + addObjectFlags(parentPtr, FLAG_CREATABLE); + setObjectCreate(parentPtr, 1); + } else { + smiPrintError(thisParserPtr, + ERR_SCALAR_READCREATE); + } + } + setObjectStatus(objectPtr, (yyvsp[(12) - (23)].status)); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + if ((yyvsp[(13) - (23)].text)) { + setObjectDescription(objectPtr, (yyvsp[(13) - (23)].text), thisParserPtr); + } + if ((yyvsp[(15) - (23)].text)) { + setObjectReference(objectPtr, (yyvsp[(15) - (23)].text), thisParserPtr); + } + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * For SMI documents either $16 (IndexPart) or $17 (MibIndex) + * are used, but not both. This is signalled via the indexFlag + * which is 1 if IndexPart has been used. + */ + if (indexFlag == INDEXFLAG_AUGMENTS) { /* IndexPart was used */ + if ((yyvsp[(16) - (23)].index).indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, (yyvsp[(16) - (23)].index).listPtr); + setObjectImplied(objectPtr, (yyvsp[(16) - (23)].index).implied); + setObjectIndexkind(objectPtr, (yyvsp[(16) - (23)].index).indexkind); + setObjectRelated(objectPtr, (yyvsp[(16) - (23)].index).rowPtr); + } + } else { + if ((yyvsp[(17) - (23)].index).indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, (yyvsp[(17) - (23)].index).listPtr); + setObjectImplied(objectPtr, (yyvsp[(17) - (23)].index).implied); + setObjectIndexkind(objectPtr, (yyvsp[(17) - (23)].index).indexkind); + setObjectRelated(objectPtr, (yyvsp[(17) - (23)].index).rowPtr); + } + } + } else { + /* + * PIBs contain either PIB-INDEX or AUGMENTS or EXTENDS - + * but only with one Index entry. A PIB-INDEX may be + * followed by a full INDEX. We get the indexkind + * from the first. + * Note that PIB-INDEX/AUGMENTS/EXTENS is always + * the first element in objectPtr->listPtr. + * If an optional INDEX exists then it is + * appended to this list. + */ + if ((yyvsp[(16) - (23)].index).indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, (yyvsp[(16) - (23)].index).listPtr); + setObjectIndexkind(objectPtr, (yyvsp[(16) - (23)].index).indexkind); + setObjectRelated(objectPtr, (yyvsp[(16) - (23)].index).rowPtr); + } + if ((yyvsp[(17) - (23)].index).indexkind != SMI_INDEX_UNKNOWN) { + if (objectPtr->listPtr) { + List *p; + for (p = objectPtr->listPtr; p->nextPtr; + p = p->nextPtr); + p->nextPtr = (yyvsp[(17) - (23)].index).listPtr; + } + setObjectImplied(objectPtr, (yyvsp[(17) - (23)].index).implied); + } + } + if ((yyvsp[(18) - (23)].listPtr)) { + setObjectUniqueness(objectPtr, (yyvsp[(18) - (23)].listPtr)); + } + if ((yyvsp[(19) - (23)].valuePtr)) { + if (objectPtr->typePtr + && (((objectPtr->typePtr->export.basetype == SMI_BASETYPE_OCTETSTRING) && + ((yyvsp[(19) - (23)].valuePtr)->basetype != SMI_BASETYPE_OCTETSTRING)) + || ((objectPtr->typePtr->export.basetype == SMI_BASETYPE_OBJECTIDENTIFIER) && + ((yyvsp[(19) - (23)].valuePtr)->basetype != SMI_BASETYPE_OBJECTIDENTIFIER)))) { + smiPrintError(thisParserPtr, + ERR_DEFVAL_SYNTAX); + if ((yyvsp[(19) - (23)].valuePtr)->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + smiFree((yyvsp[(19) - (23)].valuePtr)->value.oid); + } + if (((yyvsp[(19) - (23)].valuePtr)->basetype == SMI_BASETYPE_BITS) || + ((yyvsp[(19) - (23)].valuePtr)->basetype == SMI_BASETYPE_OCTETSTRING)) { + smiFree((yyvsp[(19) - (23)].valuePtr)->value.ptr); + } + smiFree((yyvsp[(19) - (23)].valuePtr)); + } else { + setObjectValue(objectPtr, (yyvsp[(19) - (23)].valuePtr)); + } + } + if ((yyvsp[(9) - (23)].objectPtr)) { + if (objectPtr->relatedPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "relatedPtr", "PIB-REFERENCES"); + /* + * PIB-REFERENCES clauses are only allowed for + * objects with a SYNTAX of 'ReferenceId'. + * See RFC 3159 7.10 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + strcmp(objectPtr->typePtr->export.name, "ReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_REFERENCES_WRONG_TYPE, + objectPtr->line); + else + setObjectRelated(objectPtr, (yyvsp[(9) - (23)].objectPtr)); + } else { + /* + * Does this object have a SYNTAX of 'ReferenceId' + * and a PIB-REFERENCES clause? + * See RFC 3159 7.10 + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "ReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_LACKING_PIB_REFERENCES, + objectPtr->line); + } + if ((yyvsp[(10) - (23)].objectPtr)) { + if (objectPtr->relatedPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "relatedPtr", "PIB-TAG"); + /* + * PIB-TAG clauses are only allowed for + * objects with a SYNTAX of 'TagReferenceId'. + * See RFC 3159 7.11 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + strcmp(objectPtr->typePtr->export.name, "TagReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_TAG_WRONG_TYPE, + objectPtr->line); + else + setObjectRelated(objectPtr, (yyvsp[(10) - (23)].objectPtr)); + } else { + /* + * Does this object have a SYNTAX of 'TagReferenceId' + * and a PIB-TAG clause? + * See RFC 3159 7.11 + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "TagReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_LACKING_PIB_TAG, + objectPtr->line); + + } + if ((yyvsp[(14) - (23)].listPtr)) { + if (objectPtr->listPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "listPtr", "INSTALL-ERRORS"); + /* + * Are INSTALL-ERRORS only used with tables? + * See RFC 3159 7.4 + */ + if (!((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->typePtr) && + (objectPtr->typePtr->export.decl == SMI_DECL_IMPL_SEQUENCEOF))) + smiPrintErrorAtLine(parserPtr, ERR_INSTALL_ERRORS_FOR_NON_TABLE, + objectPtr->line); + else + setObjectList(objectPtr, (yyvsp[(14) - (23)].listPtr)); + } + (yyval.err) = 0; + ;} + break; + + case 133: +#line 3111 "parser-smi.y" + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) || + (thisModulePtr->export.language == SMI_LANGUAGE_SPPI)) + { + smiPrintError(thisParserPtr, + ERR_MISSING_DESCRIPTION); + } + (yyval.text) = NULL; + ;} + break; + + case 134: +#line 3121 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + checkDescr(thisParserPtr, (yyvsp[(2) - (2)].text)); + ;} + break; + + case 135: +#line 3128 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_TRAPTYPE; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 136: +#line 3138 "parser-smi.y" + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "TRAP-TYPE"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + smiPrintError(thisParserPtr, ERR_TRAP_TYPE); + } + + importPtr = findImportByName("TRAP-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TRAP-TYPE", "RFC-1215"); + } + ;} + break; + + case 137: +#line 3164 "parser-smi.y" + { + Object *objectPtr; + Node *nodePtr; + + objectPtr = (yyvsp[(6) - (11)].objectPtr); + nodePtr = findNodeByParentAndSubid( + objectPtr->nodePtr, 0); + if (nodePtr && nodePtr->lastObjectPtr && + (nodePtr->lastObjectPtr->modulePtr == thisModulePtr)) { + /* + * hopefully, the last defined Object for + * this Node is the one we expect. + */ + objectPtr = nodePtr->lastObjectPtr; + } else { + objectPtr = addObject(NULL, + objectPtr->nodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + } + objectPtr = addObject(NULL, + objectPtr->nodePtr, + (yyvsp[(11) - (11)].unsigned32), + FLAG_INCOMPLETE, + thisParserPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (11)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (11)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_TRAPTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectList(objectPtr, (yyvsp[(7) - (11)].listPtr)); + setObjectStatus(objectPtr, SMI_STATUS_CURRENT); + setObjectDescription(objectPtr, (yyvsp[(8) - (11)].text), thisParserPtr); + if ((yyvsp[(9) - (11)].text)) { + setObjectReference(objectPtr, (yyvsp[(9) - (11)].text), thisParserPtr); + } + (yyval.err) = 0; + ;} + break; + + case 138: +#line 3211 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 139: +#line 3215 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 140: +#line 3221 "parser-smi.y" + { + if ((yyvsp[(1) - (1)].objectPtr)) { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + } else { + (yyval.listPtr) = NULL; + } + ;} + break; + + case 141: +#line 3231 "parser-smi.y" + { + List *p, *pp; + + if ((yyvsp[(3) - (3)].objectPtr)) { + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + if ((yyvsp[(1) - (3)].listPtr)) { + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; + pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + } else { + (yyval.listPtr) = p; + } + } else { + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + } + ;} + break; + + case 142: +#line 3253 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 143: +#line 3259 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + checkDescr(thisParserPtr, (yyvsp[(2) - (2)].text)); + ;} + break; + + case 144: +#line 3264 "parser-smi.y" + { (yyval.text) = NULL; ;} + break; + + case 145: +#line 3268 "parser-smi.y" + { + (yyval.access) = (yyvsp[(1) - (1)].access); + ;} + break; + + case 146: +#line 3272 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "MAX-ACCESS"); + if ((yyvsp[(1) - (1)].access) == SMI_ACCESS_NOT_ACCESSIBLE) + smiPrintError(thisParserPtr, ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS); + (yyval.access) = (yyvsp[(1) - (1)].access); + ;} + break; + + case 147: +#line 3280 "parser-smi.y" + { (yyval.access) = 0; ;} + break; + + case 148: +#line 3284 "parser-smi.y" + { (yyval.access) = (yyvsp[(2) - (2)].access); ;} + break; + + case 149: +#line 3288 "parser-smi.y" + { + smiPrintError(thisParserPtr, ERR_POLICY_ACCESS_IN_PIB); + ;} + break; + + case 150: +#line 3292 "parser-smi.y" + { ;} + break; + + case 151: +#line 3296 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-REFERENCES"); + ;} + break; + + case 152: +#line 3301 "parser-smi.y" + { (yyval.objectPtr) = (yyvsp[(4) - (5)].objectPtr); ;} + break; + + case 153: +#line 3303 "parser-smi.y" + { (yyval.objectPtr) = 0; ;} + break; + + case 154: +#line 3307 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-TAG"); + ;} + break; + + case 155: +#line 3312 "parser-smi.y" + { (yyval.objectPtr) = (yyvsp[(4) - (5)].objectPtr); ;} + break; + + case 156: +#line 3314 "parser-smi.y" + { (yyval.objectPtr) = 0; ;} + break; + + case 157: +#line 3319 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "UNIQUENESS"); + ;} + break; + + case 158: +#line 3324 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(4) - (5)].listPtr); ;} + break; + + case 159: +#line 3326 "parser-smi.y" + { (yyval.listPtr) = NULL; ;} + break; + + case 160: +#line 3330 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); ;} + break; + + case 161: +#line 3332 "parser-smi.y" + { (yyval.listPtr) = NULL; ;} + break; + + case 162: +#line 3336 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 163: +#line 3343 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 164: +#line 3356 "parser-smi.y" + { (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); ;} + break; + + case 165: +#line 3360 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "INSTALL-ERRORS"); + ;} + break; + + case 166: +#line 3365 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(4) - (5)].listPtr); ;} + break; + + case 167: +#line 3367 "parser-smi.y" + { (yyval.listPtr) = NULL; ;} + break; + + case 168: +#line 3371 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 169: +#line 3378 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 170: +#line 3391 "parser-smi.y" + { + Object *objectPtr; + + if (((yyvsp[(3) - (4)].unsigned32) < 1) || ((yyvsp[(3) - (4)].unsigned32) > 65536)) + smiPrintError(thisParserPtr, ERR_ERROR_NUMBER_RANGE, (yyvsp[(3) - (4)].unsigned32)); + /* + * This is not a regular object that will be added vid + * 'addObject' as error identifier have no other + * meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = (yyvsp[(1) - (4)].id); + objectPtr->export.oidlen = 1; + objectPtr->export.oid = (void *)(yyvsp[(3) - (4)].unsigned32); + (yyval.objectPtr) = objectPtr; + ;} + break; + + case 171: +#line 3412 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV1) + { + smiPrintError(thisParserPtr, + ERR_MAX_ACCESS_IN_SMIV1); + } else if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "MAX-ACCESS"); + ;} + break; + + case 172: +#line 3421 "parser-smi.y" + { (yyval.access) = (yyvsp[(3) - (3)].access); ;} + break; + + case 173: +#line 3423 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + smiPrintError(thisParserPtr, ERR_ACCESS_IN_SMIV2); + } else if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "ACCESS"); + ;} + break; + + case 174: +#line 3432 "parser-smi.y" + { (yyval.access) = (yyvsp[(3) - (3)].access); ;} + break; + + case 175: +#line 3436 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_NOTIFICATIONTYPE; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 176: +#line 3446 "parser-smi.y" + { + Import *importPtr; + + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "NOTIFICATION-TYPE"); + + importPtr = findImportByName("NOTIFICATION-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "NOTIFICATION-TYPE", + "SNMPv2-SMI"); + } + ;} + break; + + case 177: +#line 3466 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(9) - (9)].text)); + ;} + break; + + case 178: +#line 3472 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(14) - (15)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (15)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (15)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_NOTIFICATIONTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectList(objectPtr, (yyvsp[(5) - (15)].listPtr)); + setObjectStatus(objectPtr, (yyvsp[(7) - (15)].status)); + setObjectDescription(objectPtr, (yyvsp[(9) - (15)].text), thisParserPtr); + if ((yyvsp[(11) - (15)].text)) { + setObjectReference(objectPtr, (yyvsp[(11) - (15)].text), thisParserPtr); + } + (yyval.err) = 0; + ;} + break; + + case 179: +#line 3497 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULEIDENTITY; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 180: +#line 3507 "parser-smi.y" + { + Import *importPtr; + + importPtr = findImportByName("MODULE-IDENTITY", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "MODULE-IDENTITY", + "SNMPv2-SMI"); + } + + if (thisParserPtr->modulePtr->numModuleIdentities > 0) + { + smiPrintError(thisParserPtr, + ERR_TOO_MANY_MODULE_IDENTITIES); + } + if (thisParserPtr->modulePtr->numStatements > 0) { + smiPrintError(thisParserPtr, + ERR_MODULE_IDENTITY_NOT_FIRST); + } + ;} + break; + + case 181: +#line 3532 "parser-smi.y" + { + /* do nothing at the moment */ + ;} + break; + + case 182: +#line 3536 "parser-smi.y" + { + setModuleLastUpdated(thisParserPtr->modulePtr, (yyvsp[(8) - (8)].date)); + ;} + break; + + case 183: +#line 3540 "parser-smi.y" + { + if ((yyvsp[(11) - (11)].text) && !strlen((yyvsp[(11) - (11)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_ORGANIZATION); + } + ;} + break; + + case 184: +#line 3547 "parser-smi.y" + { + if ((yyvsp[(14) - (14)].text) && !strlen((yyvsp[(14) - (14)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_CONTACT); + } + ;} + break; + + case 185: +#line 3554 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(17) - (17)].text)); + ;} + break; + + case 186: +#line 3558 "parser-smi.y" + { + if ((!thisModulePtr->firstRevisionPtr) || + (thisModulePtr->firstRevisionPtr->export.date != + thisModulePtr->lastUpdated)) { + smiPrintError(thisParserPtr, + ERR_REVISION_MISSING); + addRevision(thisModulePtr->lastUpdated, + smiStrdup( + "[Revision added by libsmi due to a LAST-UPDATED clause.]"), + thisParserPtr); + } + ;} + break; + + case 187: +#line 3572 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(23) - (24)].objectPtr); + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (24)].id), &objectPtr); + + thisParserPtr->modulePtr->numModuleIdentities++; + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (24)].id), thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_MODULEIDENTITY); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectStatus(objectPtr, SMI_STATUS_CURRENT); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setModuleIdentityObject(thisParserPtr->modulePtr, + objectPtr); + setModuleOrganization(thisParserPtr->modulePtr, + (yyvsp[(11) - (24)].text)); + setModuleContactInfo(thisParserPtr->modulePtr, + (yyvsp[(14) - (24)].text)); + setModuleDescription(thisParserPtr->modulePtr, + (yyvsp[(17) - (24)].text), thisParserPtr); + if ((yyvsp[(5) - (24)].subjectCategoriesPtr) != NULL) { + setObjectList(objectPtr, (yyvsp[(5) - (24)].subjectCategoriesPtr)->categories); + smiFree((yyvsp[(5) - (24)].subjectCategoriesPtr)); + } + /* setObjectDescription(objectPtr, $15); */ + (yyval.err) = 0; + ;} + break; + + case 188: +#line 3605 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "SUBJECT-CATEGORIES"); + (yyval.subjectCategoriesPtr) = (yyvsp[(3) - (4)].subjectCategoriesPtr); + ;} + break; + + case 189: +#line 3611 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_MISSING); + (yyval.subjectCategoriesPtr) = NULL; + ;} + break; + + case 190: +#line 3619 "parser-smi.y" + { + (yyval.subjectCategoriesPtr) = smiMalloc(sizeof(SubjectCategories)); + (yyval.subjectCategoriesPtr)->categories = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 191: +#line 3626 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 192: +#line 3632 "parser-smi.y" + { + List *p, *pp; + + if ((yyvsp[(1) - (3)].listPtr)->ptr == NULL) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_ALL); + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 193: +#line 3647 "parser-smi.y" + { + Object *objectPtr; + + if (strcmp((yyvsp[(1) - (1)].id), "all")) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_MISSING_SUBID); + else { + /* + * This is not a regular object that will be added via + * 'addObject' as subject category dentifier have no + * other meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = "all"; + objectPtr->export.oidlen = 0; + objectPtr->export.oid = 0; + (yyval.objectPtr) = objectPtr; + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 194: +#line 3668 "parser-smi.y" + { + Object *objectPtr; + + if (!strcmp((yyvsp[(1) - (4)].id), "all")) { + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID); + (yyval.objectPtr) = NULL; + } else { + /* + * This is not a regular object that will be added via + * 'addObject' as subject category dentifier have no + * other meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = (yyvsp[(1) - (4)].id); + objectPtr->export.oidlen = 1; + objectPtr->export.oid = (void *)(yyvsp[(3) - (4)].unsigned32); + (yyval.objectPtr) = objectPtr; + } + ;} + break; + + case 195: +#line 3691 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 196: +#line 3695 "parser-smi.y" + { + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_TYPE_TAG, (yyvsp[(1) - (2)].err)); + } + (yyval.typePtr) = (yyvsp[(2) - (2)].typePtr); + ;} + break; + + case 197: +#line 3715 "parser-smi.y" + { + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 198: +#line 3720 "parser-smi.y" + { + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 199: +#line 3725 "parser-smi.y" + { + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 200: +#line 3730 "parser-smi.y" + { + Import *importPtr; + + if ((yyvsp[(1) - (1)].typePtr) && (yyvsp[(1) - (1)].typePtr)->export.name) { + importPtr = findImportByName((yyvsp[(1) - (1)].typePtr)->export.name, + thisModulePtr); + if (importPtr) { + importPtr->use++; + } + } + + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 201: +#line 3747 "parser-smi.y" + { (yyval.err) = 0; /* TODO: check range */ ;} + break; + + case 202: +#line 3749 "parser-smi.y" + { (yyval.err) = 0; /* TODO: check range */ ;} + break; + + case 203: +#line 3757 "parser-smi.y" + { (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); ;} + break; + + case 204: +#line 3762 "parser-smi.y" + { + Import *importPtr; + + if ((yyvsp[(1) - (1)].typePtr) && (yyvsp[(1) - (1)].typePtr)->export.name) { + importPtr = findImportByName((yyvsp[(1) - (1)].typePtr)->export.name, + thisModulePtr); + if (importPtr) { + importPtr->use++; + } + } + + /* TODO */ + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 205: +#line 3779 "parser-smi.y" + { (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); ;} + break; + + case 206: +#line 3788 "parser-smi.y" + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + && + (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "SNMPv2-TC") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) + smiPrintError(thisParserPtr, + ERR_INTEGER_IN_SMIV2); + + defaultBasetype = SMI_BASETYPE_INTEGER32; + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + ;} + break; + + case 207: +#line 3801 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_INTEGER32; + ;} + break; + + case 208: +#line 3805 "parser-smi.y" + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + && + (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "SNMPv2-TC") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) + smiPrintError(thisParserPtr, + ERR_INTEGER_IN_SMIV2); + + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 209: +#line 3820 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_ENUM; + ;} + break; + + case 210: +#line 3824 "parser-smi.y" + { + List *p; + + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + for (p = (yyvsp[(3) - (3)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + smiCheckNamedNumbersOrder(parserPtr, (yyval.typePtr)); + ;} + break; + + case 211: +#line 3835 "parser-smi.y" + { + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_INTEGER32; + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + + /* TODO: any need to distinguish from INTEGER? */ + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + ;} + break; + + case 212: +#line 3861 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_INTEGER32; + ;} + break; + + case 213: +#line 3865 "parser-smi.y" + { + Import *importPtr; + + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 214: +#line 3892 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_ENUM; + ;} + break; + + case 215: +#line 3896 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + List *p; + + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (3)].id)); + if (!parentPtr) { + importPtr = findImportByName((yyvsp[(1) - (3)].id), + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (3)].id)); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_ENUM) && + (parentPtr->export.basetype != + SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, + (yyvsp[(1) - (3)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree((yyvsp[(1) - (3)].id)); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType((yyvsp[(1) - (3)].id), + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + for (p = (yyvsp[(3) - (3)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + smiCheckNamedNumbersOrder(parserPtr, (yyval.typePtr)); + ;} + break; + + case 216: +#line 3947 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + List *p; + + defaultBasetype = SMI_BASETYPE_ENUM; + parentPtr = findTypeByModulenameAndName((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + if (!parentPtr) { + importPtr = + findImportByModulenameAndName((yyvsp[(1) - (4)].id), + (yyvsp[(3) - (4)].id), thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = + findTypeByModulenameAndName((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_ENUM) && + (parentPtr->export.basetype != + SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, + (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } + setTypeList((yyval.typePtr), (yyvsp[(4) - (4)].listPtr)); + for (p = (yyvsp[(4) - (4)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + smiCheckNamedNumbersOrder(parserPtr, (yyval.typePtr)); + smiFree((yyvsp[(1) - (4)].id)); + smiFree((yyvsp[(3) - (4)].id)); + ;} + break; + + case 217: +#line 3993 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (2)].id)); + if (!parentPtr) { + importPtr = findImportByName((yyvsp[(1) - (2)].id), + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (2)].id)); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_INTEGER32) && + (parentPtr->export.basetype != + SMI_BASETYPE_INTEGER64) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED32) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED64)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, + (yyvsp[(1) - (2)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } else { + defaultBasetype = + parentPtr->export.basetype; + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree((yyvsp[(1) - (2)].id)); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType((yyvsp[(1) - (2)].id), + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 218: +#line 4049 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + if (!parentPtr) { + importPtr = findImportByModulenameAndName((yyvsp[(1) - (4)].id), + (yyvsp[(3) - (4)].id), thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_INTEGER32) && + (parentPtr->export.basetype != + SMI_BASETYPE_INTEGER64) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED32) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED64)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, + (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } else { + defaultBasetype = + parentPtr->export.basetype; + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + setTypeList((yyval.typePtr), (yyvsp[(4) - (4)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + smiFree((yyvsp[(1) - (4)].id)); + smiFree((yyvsp[(3) - (4)].id)); + ;} + break; + + case 219: +#line 4098 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + (yyval.typePtr) = smiHandle->typeOctetStringPtr; + ;} + break; + + case 220: +#line 4103 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + ;} + break; + + case 221: +#line 4107 "parser-smi.y" + { + + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(4) - (4)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 222: +#line 4115 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (2)].id)); + if (!parentPtr) { + importPtr = findImportByName((yyvsp[(1) - (2)].id), + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (2)].id)); + } + } + if (parentPtr) { + if (parentPtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, + (yyvsp[(1) - (2)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree((yyvsp[(1) - (2)].id)); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType((yyvsp[(1) - (2)].id), + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + ;} + break; + + case 223: +#line 4162 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + parentPtr = findTypeByModulenameAndName((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + if (!parentPtr) { + importPtr = findImportByModulenameAndName((yyvsp[(1) - (4)].id), + (yyvsp[(3) - (4)].id), thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].id)); + } + } + if (parentPtr) { + if (parentPtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, + (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, (yyvsp[(3) - (4)].id)); + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } + setTypeList((yyval.typePtr), (yyvsp[(4) - (4)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + smiFree((yyvsp[(1) - (4)].id)); + smiFree((yyvsp[(3) - (4)].id)); + ;} + break; + + case 224: +#line 4202 "parser-smi.y" + { + defaultBasetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.typePtr) = smiHandle->typeObjectIdentifierPtr; + ;} + break; + + case 225: +#line 4210 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = (yyvsp[(1) - (1)].unsigned32); + ;} + break; + + case 226: +#line 4216 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = (yyvsp[(1) - (1)].integer32); + ;} + break; + + case 227: +#line 4222 "parser-smi.y" + { + /* The scanner already checks for the language */ + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = (yyvsp[(1) - (1)].unsigned64); + ;} + break; + + case 228: +#line 4229 "parser-smi.y" + { + /* The scanner already checks for the language */ + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = (yyvsp[(1) - (1)].integer64); + ;} + break; + + case 229: +#line 4236 "parser-smi.y" + { + char s[9]; + int i, len, j; + + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = + smiMalloc((len+7)/8+1); + for (i = 0; i < len; i += 8) { + strncpy(s, &(yyvsp[(1) - (1)].text)[i], 8); + for (j = 1; j < 8; j++) { + if (!s[j]) s[j] = '0'; + } + s[8] = 0; + (yyval.valuePtr)->value.ptr[i/8] = + (unsigned char)strtol(s, 0, 2); + } + (yyval.valuePtr)->len = (len+7)/8; + } else { + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 2); + } + ;} + break; + + case 230: +#line 4262 "parser-smi.y" + { + char s[3]; + int i, len; + + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = smiMalloc((len+1)/2+1); + for (i = 0; i < len; i += 2) { + strncpy(s, &(yyvsp[(1) - (1)].text)[i], 2); + if (!s[1]) s[1] = '0'; + s[2] = 0; + (yyval.valuePtr)->value.ptr[i/2] = + (unsigned char)strtol(s, 0, 16); + } + (yyval.valuePtr)->len = (len+1)/2; + } else { + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 16); + } + ;} + break; + + case 231: +#line 4285 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if ((defaultBasetype != SMI_BASETYPE_ENUM) && + (defaultBasetype != SMI_BASETYPE_OBJECTIDENTIFIER)) { + smiPrintError(thisParserPtr, ERR_DEFVAL_SYNTAX); + (yyval.valuePtr)->basetype = defaultBasetype; + if (defaultBasetype == SMI_BASETYPE_ENUM) { + (yyval.valuePtr)->len = 1; + (yyval.valuePtr)->value.unsigned32 = 0; + } else { + (yyval.valuePtr)->len = 0; + (yyval.valuePtr)->value.ptr = NULL; + } + } else { + (yyval.valuePtr)->basetype = defaultBasetype; + (yyval.valuePtr)->len = -1; /* indicates unresolved ptr */ + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].id); /* JS: needs strdup? */ + } + ;} + break; + + case 232: +#line 4305 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + (yyval.valuePtr)->value.ptr = smiStrdup((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + ;} + break; + + case 233: +#line 4328 "parser-smi.y" + { + /* + * SMIv1 allows something like { 0 0 } ! + * SMIv2 does not! + */ + /* TODO: make it work correctly for SMIv1 */ + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_OID_DEFVAL_TOO_LONG_SMIV2); + } else { + smiPrintError(thisParserPtr, + ERR_OID_DEFVAL_TOO_LONG_SMIV1); + } + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->len = 2; + (yyval.valuePtr)->value.oid = smiMalloc(2 * sizeof(SmiSubid)); + (yyval.valuePtr)->value.oid[0] = 0; + (yyval.valuePtr)->value.oid[1] = 0; + ;} + break; + + case 234: +#line 4355 "parser-smi.y" + { + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + ;} + break; + + case 235: +#line 4359 "parser-smi.y" + { + Import *importPtr; + + /* TODO: any need to distinguish from INTEGER? */ + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + ;} + break; + + case 236: +#line 4384 "parser-smi.y" + { + (yyval.typePtr) = smiHandle->typeOctetStringPtr; + ;} + break; + + case 237: +#line 4388 "parser-smi.y" + { + (yyval.typePtr) = smiHandle->typeObjectIdentifierPtr; + ;} + break; + + case 238: +#line 4394 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("IpAddress"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "IpAddress"); + } + + importPtr = findImportByName("IpAddress", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } + } + ;} + break; + + case 239: +#line 4422 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "COUNTER32"); + (yyval.typePtr) = findTypeByName("Counter32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + ;} + break; + + case 240: +#line 4448 "parser-smi.y" + { + Import *importPtr; + List *listPtr, *nextListPtr; + + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_COUNTER, + "Counter32"); + for (listPtr = (yyvsp[(2) - (2)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)listPtr->ptr); + smiFree(listPtr); + } + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter32"); + (yyval.typePtr) = findTypeByName("Counter32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + ;} + break; + + case 241: +#line 4485 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + (yyval.typePtr) = findTypeByName("Gauge32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + ;} + break; + + case 242: +#line 4511 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + parentPtr = findTypeByName("Gauge32"); + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + (yyval.typePtr) = NULL; + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + ;} + break; + + case 243: +#line 4544 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = smiHandle->typeUnsigned32Ptr; + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + ;} + break; + + case 244: +#line 4568 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = duplicateType(smiHandle->typeUnsigned32Ptr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + ;} + break; + + case 245: +#line 4595 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("TimeTicks"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "TimeTicks"); + } + + importPtr = findImportByName("TimeTicks", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } + } + ;} + break; + + case 246: +#line 4623 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("Opaque"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE); + } + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + ;} + break; + + case 247: +#line 4661 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByName("Opaque"); + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + (yyval.typePtr) = NULL; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE, + "Opaque"); + } + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + ;} + break; + + case 248: +#line 4707 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + (yyval.typePtr) = findTypeByName("Counter64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + ;} + break; + + case 249: +#line 4733 "parser-smi.y" + { + Import *importPtr; + List *listPtr, *nextListPtr; + + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_COUNTER, + "Counter64"); + for (listPtr = (yyvsp[(2) - (2)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)listPtr->ptr); + smiFree(listPtr); + } + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + (yyval.typePtr) = findTypeByName("Counter64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + ;} + break; + + case 250: +#line 4770 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Integer64"); + if (! (yyval.typePtr)) { + importPtr = findImportByName("Integer64", + thisModulePtr); + if (!importPtr) { + (yyval.typePtr) = findTypeByName("Integer64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } else { + importPtr->use++; + (yyval.typePtr) = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + ;} + break; + + case 251: +#line 4796 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Integer64"); + if (! parentPtr) { + importPtr = findImportByName("Integer64", + thisModulePtr); + if (!importPtr) { + parentPtr = findTypeByName("Integer64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } else { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Integer64"); + (yyval.typePtr) = NULL; + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + } + ;} + break; + + case 252: +#line 4833 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Unsigned64"); + if (! (yyval.typePtr)) { + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if (!importPtr) { + (yyval.typePtr) = findTypeByName("Unsigned64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } else { + importPtr->use++; + (yyval.typePtr) = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + ;} + break; + + case 253: +#line 4859 "parser-smi.y" + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Unsigned64"); + if (! parentPtr) { + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if (!importPtr) { + parentPtr = findTypeByName("Unsigned64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } else { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Unsigned64"); + (yyval.typePtr) = NULL; + } else { + (yyval.typePtr) = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + smiCheckTypeRanges(thisParserPtr, (yyval.typePtr)); + } + ;} + break; + + case 254: +#line 4902 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("IpAddress"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "IpAddress"); + } + + importPtr = findImportByName("IpAddress", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } + } + ;} + break; + + case 255: +#line 4930 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter32"); + (yyval.typePtr) = findTypeByName("Counter32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + ;} + break; + + case 256: +#line 4956 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + (yyval.typePtr) = findTypeByName("Gauge32"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + ;} + break; + + case 257: +#line 4982 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = smiHandle->typeUnsigned32Ptr; + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + ;} + break; + + case 258: +#line 5006 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("TimeTicks"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "TimeTicks"); + } + + importPtr = findImportByName("TimeTicks", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } + } + ;} + break; + + case 259: +#line 5034 "parser-smi.y" + { + Import *importPtr; + + (yyval.typePtr) = findTypeByName("Opaque"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE, + "Opaque"); + } + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + ;} + break; + + case 260: +#line 5074 "parser-smi.y" + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisModulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + (yyval.typePtr) = findTypeByName("Counter64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + ;} + break; + + case 261: +#line 5100 "parser-smi.y" + { + Import *importPtr; + + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + (yyval.typePtr) = findTypeByName("Integer64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Integer64"); + } + + importPtr = findImportByName("Integer64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } + ;} + break; + + case 262: +#line 5125 "parser-smi.y" + { + Import *importPtr; + + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) && (!importPtr)) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + (yyval.typePtr) = findTypeByName("Unsigned64"); + if (! (yyval.typePtr)) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Unsigned64"); + } + + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } + ;} + break; + + case 263: +#line 5152 "parser-smi.y" + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = (yyvsp[(1) - (1)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)(listPtr->ptr)); + smiFree(listPtr); + } + + (yyval.listPtr) = NULL; + ;} + break; + + case 264: +#line 5169 "parser-smi.y" + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = (yyvsp[(1) - (1)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)(listPtr->ptr)); + smiFree(listPtr); + } + + (yyval.listPtr) = NULL; + ;} + break; + + case 265: +#line 5186 "parser-smi.y" + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = (yyvsp[(1) - (1)].listPtr); listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(((NamedNumber *)(listPtr->ptr))->export.name); + smiFree((NamedNumber *)(listPtr->ptr)); + smiFree(listPtr); + } + + (yyval.listPtr) = NULL; + ;} + break; + + case 266: +#line 5204 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 267: +#line 5218 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(2) - (3)].listPtr); ;} + break; + + case 268: +#line 5228 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(4) - (6)].listPtr); + ;} + break; + + case 269: +#line 5234 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].rangePtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 270: +#line 5240 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].rangePtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 271: +#line 5254 "parser-smi.y" + { + (yyval.rangePtr) = smiMalloc(sizeof(Range)); + (yyval.rangePtr)->export.minValue = *(yyvsp[(1) - (1)].valuePtr); + (yyval.rangePtr)->export.maxValue = *(yyvsp[(1) - (1)].valuePtr); + smiFree((yyvsp[(1) - (1)].valuePtr)); + ;} + break; + + case 272: +#line 5261 "parser-smi.y" + { + (yyval.rangePtr) = smiMalloc(sizeof(Range)); + (yyval.rangePtr)->export.minValue = *(yyvsp[(1) - (3)].valuePtr); + (yyval.rangePtr)->export.maxValue = *(yyvsp[(3) - (3)].valuePtr); + smiFree((yyvsp[(1) - (3)].valuePtr)); + smiFree((yyvsp[(3) - (3)].valuePtr)); + ;} + break; + + case 273: +#line 5271 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = (yyvsp[(1) - (1)].integer32); + ;} + break; + + case 274: +#line 5277 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = (yyvsp[(1) - (1)].unsigned32); + ;} + break; + + case 275: +#line 5283 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = (yyvsp[(1) - (1)].integer64); + ;} + break; + + case 276: +#line 5289 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = (yyvsp[(1) - (1)].unsigned64); + ;} + break; + + case 277: +#line 5295 "parser-smi.y" + { + char s[3]; + int i, len; + + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = smiMalloc((len+1)/2+1); + for (i = 0; i < len; i += 2) { + strncpy(s, &(yyvsp[(1) - (1)].text)[i], 2); + if (!s[1]) s[1] = '0'; + s[2] = 0; + (yyval.valuePtr)->value.ptr[i/2] = + (unsigned char)strtol(s, 0, 16); + } + (yyval.valuePtr)->len = (len+1)/2; + } else { + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 16); + } + ;} + break; + + case 278: +#line 5318 "parser-smi.y" + { + char s[9]; + int i, len, j; + + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = smiMalloc((len+7)/8+1); + for (i = 0; i < len; i += 8) { + strncpy(s, &(yyvsp[(1) - (1)].text)[i], 8); + for (j = 1; j < 8; j++) { + if (!s[j]) s[j] = '0'; + } + s[8] = 0; + (yyval.valuePtr)->value.ptr[i/8] = + (unsigned char)strtol(s, 0, 2); + } + (yyval.valuePtr)->len = (len+7)/8; + } else { + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 2); + } + ;} + break; + + case 279: +#line 5345 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 280: +#line 5351 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].namedNumberPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 281: +#line 5357 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)(yyvsp[(3) - (3)].namedNumberPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 282: +#line 5370 "parser-smi.y" + { + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_ENUMNAME_32, ERR_ENUMNAME_64); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr((yyvsp[(1) - (1)].id), '-')) { + smiPrintError(thisParserPtr, + ERR_NAMEDNUMBER_INCLUDES_HYPHEN, + (yyvsp[(1) - (1)].id)); + } + } + ;} + break; + + case 283: +#line 5383 "parser-smi.y" + { + (yyval.namedNumberPtr) = smiMalloc(sizeof(NamedNumber)); + (yyval.namedNumberPtr)->export.name = (yyvsp[(1) - (5)].id); + (yyval.namedNumberPtr)->export.value = *(yyvsp[(4) - (5)].valuePtr); + smiFree((yyvsp[(4) - (5)].valuePtr)); + ;} + break; + + case 284: +#line 5392 "parser-smi.y" + { + if ((yyvsp[(1) - (1)].unsigned32) > SMI_BASETYPE_INTEGER32_MAX) { + smiPrintError(thisParserPtr, + ERR_INTEGER32_TOO_LARGE, (yyvsp[(1) - (1)].unsigned32)); + } + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV1) && + ((yyvsp[(1) - (1)].unsigned32) == 0)) { + smiPrintError(thisParserPtr, + ERR_ENUM_ZERO); + } + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = (yyvsp[(1) - (1)].unsigned32); + ;} + break; + + case 285: +#line 5407 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = (yyvsp[(1) - (1)].integer32); + /* TODO: non-negative is suggested */ + ;} + break; + + case 286: +#line 5416 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (!strcmp((yyvsp[(1) - (1)].id), "current")) { + (yyval.status) = SMI_STATUS_CURRENT; + } else if (!strcmp((yyvsp[(1) - (1)].id), "deprecated")) { + (yyval.status) = SMI_STATUS_DEPRECATED; + } else if (!strcmp((yyvsp[(1) - (1)].id), "obsolete")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV2_STATUS, + (yyvsp[(1) - (1)].id)); + if (!strcmp((yyvsp[(1) - (1)].id), "mandatory") + || !strcmp((yyvsp[(1) - (1)].id), "optional")) { + /* best guess */ + (yyval.status) = SMI_STATUS_CURRENT; + } else { + (yyval.status) = SMI_STATUS_UNKNOWN; + } + } + } else if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + if (!strcmp((yyvsp[(1) - (1)].id), "mandatory")) { + (yyval.status) = SMI_STATUS_MANDATORY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "optional")) { + (yyval.status) = SMI_STATUS_OPTIONAL; + } else if (!strcmp((yyvsp[(1) - (1)].id), "obsolete")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "deprecated")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV1_STATUS, + (yyvsp[(1) - (1)].id)); + if (!strcmp((yyvsp[(1) - (1)].id), "current")) { + /* best guess */ + (yyval.status) = SMI_STATUS_MANDATORY; + } else { + (yyval.status) = SMI_STATUS_UNKNOWN; + } + } + } else { /* it is SPPI */ + if (!strcmp((yyvsp[(1) - (1)].id), "current")) { + (yyval.status) = SMI_STATUS_CURRENT; + } else if (!strcmp((yyvsp[(1) - (1)].id), "obsolete")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "deprecated")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SPPI_STATUS, (yyvsp[(1) - (1)].id)); + (yyval.status) = SMI_STATUS_UNKNOWN; + } + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 287: +#line 5475 "parser-smi.y" + { + if (!strcmp((yyvsp[(1) - (1)].id), "current")) { + (yyval.status) = SMI_STATUS_CURRENT; + } else if (!strcmp((yyvsp[(1) - (1)].id), "obsolete")) { + (yyval.status) = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_CAPABILITIES_STATUS, + (yyvsp[(1) - (1)].id)); + (yyval.status) = SMI_STATUS_UNKNOWN; + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 288: +#line 5491 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + + if ((yyvsp[(2) - (2)].text) && !strlen((yyvsp[(2) - (2)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_FORMAT); + } + ;} + break; + + case 289: +#line 5500 "parser-smi.y" + { + (yyval.text) = NULL; + ;} + break; + + case 290: +#line 5506 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + + if ((yyvsp[(2) - (2)].text) && !strlen((yyvsp[(2) - (2)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_UNITS); + } + ;} + break; + + case 291: +#line 5515 "parser-smi.y" + { + (yyval.text) = NULL; + ;} + break; + + case 292: +#line 5521 "parser-smi.y" + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (!strcmp((yyvsp[(1) - (1)].id), "not-accessible")) { + (yyval.access) = SMI_ACCESS_NOT_ACCESSIBLE; + } else if (!strcmp((yyvsp[(1) - (1)].id), + "accessible-for-notify")) { + (yyval.access) = SMI_ACCESS_NOTIFY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-only")) { + (yyval.access) = SMI_ACCESS_READ_ONLY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-write")) { + (yyval.access) = SMI_ACCESS_READ_WRITE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-create")) { + (yyval.access) = SMI_ACCESS_READ_WRITE; + thisParserPtr->flags |= FLAG_CREATABLE; + /* TODO:remember it's really read-create */ + } else if (!strcmp((yyvsp[(1) - (1)].id), "write-only")) { + smiPrintError(thisParserPtr, + ERR_SMIV2_WRITE_ONLY); + (yyval.access) = SMI_ACCESS_READ_WRITE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV2_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } + } else if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + if (!strcmp((yyvsp[(1) - (1)].id), "not-accessible")) { + (yyval.access) = SMI_ACCESS_NOT_ACCESSIBLE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-only")) { + (yyval.access) = SMI_ACCESS_READ_ONLY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-write")) { + (yyval.access) = SMI_ACCESS_READ_WRITE; + } else if (!strcmp((yyvsp[(1) - (1)].id), "write-only")) { + smiPrintError(thisParserPtr, + ERR_SMIV1_WRITE_ONLY); + (yyval.access) = SMI_ACCESS_READ_WRITE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV1_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } + } else { + if (!strcmp((yyvsp[(1) - (1)].id), "install")) { + (yyval.access) = SMI_ACCESS_INSTALL; + } else if (!strcmp((yyvsp[(1) - (1)].id), "install-notify")) { + (yyval.access) = SMI_ACCESS_INSTALL_NOTIFY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "notify")) { + (yyval.access) = SMI_ACCESS_NOTIFY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "report-only")) { + (yyval.access) = SMI_ACCESS_REPORT_ONLY; + } else if (!strcmp((yyvsp[(1) - (1)].id), "not-accessible")) { + (yyval.access) = SMI_ACCESS_NOT_ACCESSIBLE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SPPI_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 293: +#line 5587 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-INDEX"); + ;} + break; + + case 294: +#line 5592 "parser-smi.y" + { + List *p = smiMalloc(sizeof(List)); + + p->ptr = (yyvsp[(4) - (5)].objectPtr); + p->nextPtr = NULL; + + (yyval.index).indexkind = SMI_INDEX_INDEX; + (yyval.index).implied = impliedFlag; + (yyval.index).listPtr = p; + (yyval.index).rowPtr = NULL; + indexFlag = INDEXFLAG_PIBINDEX; + ;} + break; + + case 295: +#line 5607 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_AUGMENT; + (yyval.index).implied = 0; + (yyval.index).listPtr = NULL; + (yyval.index).rowPtr = (yyvsp[(3) - (4)].objectPtr); + indexFlag = INDEXFLAG_AUGMENTS; + ;} + break; + + case 296: +#line 5615 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "EXTENDS"); + ;} + break; + + case 297: +#line 5620 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_SPARSE; + (yyval.index).implied = 0; + (yyval.index).listPtr = NULL; + (yyval.index).rowPtr = (yyvsp[(4) - (5)].objectPtr); + indexFlag = INDEXFLAG_EXTENDS; + ;} + break; + + case 298: +#line 5628 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_UNKNOWN; + ;} + break; + + case 299: +#line 5634 "parser-smi.y" + { + /* + * To avoid ambiguity caused by merging + * the SMI and SPPI parser we use a flag. + */ + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * Only INDEX or AUGMENTS are allowed for SMI + */ + if (indexFlag != INDEXFLAG_NONE) + smiPrintError(thisParserPtr, ERR_INDEX_AND_AUGMENTS_USED); + } else { + /* + * INDEX may only be used if PIB_INDEX was used + */ + if (indexFlag != INDEXFLAG_PIBINDEX) + smiPrintError(thisParserPtr, ERR_INDEX_WITHOUT_PIB_INDEX); + } + + /* + * Use a global variable to fetch and remember + * whether we have seen an IMPLIED keyword. + */ + impliedFlag = 0; + ;} + break; + + case 300: +#line 5660 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_INDEX; + (yyval.index).implied = impliedFlag; + (yyval.index).listPtr = (yyvsp[(4) - (5)].listPtr); + (yyval.index).rowPtr = NULL; + ;} + break; + + case 301: +#line 5667 "parser-smi.y" + { + (yyval.index).indexkind = SMI_INDEX_UNKNOWN; + ;} + break; + + case 302: +#line 5673 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 303: +#line 5680 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 304: +#line 5693 "parser-smi.y" + { + impliedFlag = 1; + (yyval.objectPtr) = (yyvsp[(2) - (2)].objectPtr); + ;} + break; + + case 305: +#line 5698 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 306: +#line 5708 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 307: +#line 5714 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 308: +#line 5720 "parser-smi.y" + { + (yyval.valuePtr) = (yyvsp[(3) - (4)].valuePtr); + if ((defaultBasetype == SMI_BASETYPE_BITS) && + ((yyval.valuePtr)->basetype != SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_DEFVAL_SYNTAX); + if ((yyval.valuePtr)->basetype == SMI_BASETYPE_OCTETSTRING) { + smiFree((yyval.valuePtr)->value.ptr); + } + smiFree((yyval.valuePtr)); + (yyval.valuePtr) = NULL; + } + ;} + break; + + case 309: +#line 5734 "parser-smi.y" + { (yyval.valuePtr) = NULL; ;} + break; + + case 310: +#line 5739 "parser-smi.y" + { (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); ;} + break; + + case 311: +#line 5741 "parser-smi.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_BITS; + (yyval.valuePtr)->value.ptr = (void *)(yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 312: +#line 5749 "parser-smi.y" + { (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); ;} + break; + + case 313: +#line 5751 "parser-smi.y" + { (yyval.listPtr) = NULL; ;} + break; + + case 314: +#line 5755 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].id); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 315: +#line 5761 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].id); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 316: +#line 5774 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 317: +#line 5780 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 318: +#line 5786 "parser-smi.y" + { + (yyval.text) = (yyvsp[(2) - (2)].text); + + if ((yyvsp[(2) - (2)].text) && !strlen((yyvsp[(2) - (2)].text))) { + smiPrintError(thisParserPtr, + ERR_EMPTY_REFERENCE); + } + ;} + break; + + case 319: +#line 5795 "parser-smi.y" + { (yyval.text) = NULL; ;} + break; + + case 320: +#line 5799 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 321: +#line 5801 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 322: +#line 5805 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 323: +#line 5807 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 324: +#line 5811 "parser-smi.y" + { + thisParserPtr->firstRevisionLine = thisParserPtr->line; + + if (thisParserPtr->modulePtr->lastRevisionPtr && + ((yyvsp[(2) - (2)].date) >= thisParserPtr->modulePtr->lastRevisionPtr->export.date)) { + smiPrintError(thisParserPtr, + ERR_REVISION_NOT_DESCENDING); + } + + if ((yyvsp[(2) - (2)].date) > thisParserPtr->modulePtr->lastUpdated) { + smiPrintError(thisParserPtr, + ERR_REVISION_AFTER_LAST_UPDATE); + } + ;} + break; + + case 325: +#line 5826 "parser-smi.y" + { + Revision *revisionPtr; + + checkDescr(thisParserPtr, (yyvsp[(5) - (5)].text)); + + revisionPtr = addRevision((yyvsp[(2) - (5)].date), (yyvsp[(5) - (5)].text), thisParserPtr); + if (revisionPtr) { + setRevisionLine(revisionPtr, + thisParserPtr->firstRevisionLine, + thisParserPtr); + } + (yyval.err) = revisionPtr ? 0 : -1; + ;} + break; + + case 326: +#line 5842 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 327: +#line 5846 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 328: +#line 5852 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 329: +#line 5858 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 330: +#line 5864 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 331: +#line 5877 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + if ((thisParserPtr->currentDecl == SMI_DECL_OBJECTGROUP) && + (yyval.objectPtr)->modulePtr != thisParserPtr->modulePtr) { + smiPrintError(thisParserPtr, + ERR_COMPLIANCE_MEMBER_NOT_LOCAL, + (yyval.objectPtr)->export.name); + } + ;} + break; + + case 332: +#line 5889 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 333: +#line 5895 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 334: +#line 5901 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 335: +#line 5914 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + if ((yyval.objectPtr)->modulePtr != thisParserPtr->modulePtr) { + smiPrintError(thisParserPtr, + ERR_COMPLIANCE_MEMBER_NOT_LOCAL, + (yyval.objectPtr)->export.name); + } + ;} + break; + + case 336: +#line 5925 "parser-smi.y" + { + int len; + (yyval.text) = smiStrdup((yyvsp[(1) - (1)].text)); + len = strlen((yyval.text)); + while (len > 0 && (yyval.text)[len-1] == '\n') { + (yyval.text)[--len] = 0; + } + ;} + break; + + case 337: +#line 5936 "parser-smi.y" + { + (yyval.date) = checkDate(thisParserPtr, (yyvsp[(1) - (1)].text)); + ;} + break; + + case 338: +#line 5941 "parser-smi.y" + { + thisParserPtr->parentNodePtr = smiHandle->rootNodePtr; + ;} + break; + + case 339: +#line 5945 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(2) - (2)].objectPtr); + if ((yyval.objectPtr)) { + thisParserPtr->parentNodePtr = (yyvsp[(2) - (2)].objectPtr)->nodePtr; + } else { + thisParserPtr->parentNodePtr = NULL; + } + ;} + break; + + case 340: +#line 5957 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + ;} + break; + + case 341: +#line 5962 "parser-smi.y" + { + (yyval.objectPtr) = (yyvsp[(2) - (2)].objectPtr); + ;} + break; + + case 342: +#line 5970 "parser-smi.y" + { + Object *objectPtr; + Import *importPtr; + + if (thisParserPtr->parentNodePtr != smiHandle->rootNodePtr) { + smiPrintError(thisParserPtr, + ERR_OIDLABEL_NOT_FIRST, (yyvsp[(1) - (1)].id)); + } + objectPtr = findObjectByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (1)].id)); + if (objectPtr) { + (yyval.objectPtr) = objectPtr; + smiFree((yyvsp[(1) - (1)].id)); + } else { + importPtr = findImportByName((yyvsp[(1) - (1)].id), + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * If we are in a MODULE-COMPLIANCE + * statement with a given MODULE... + */ + if (thisParserPtr->complianceModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, (yyvsp[(1) - (1)].id)); + if (objectPtr) { + importPtr = addImport( + (yyvsp[(1) - (1)].id), + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->complianceModulePtr->export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject((yyvsp[(1) - (1)].id), + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, (yyvsp[(1) - (1)].id), + thisParserPtr->complianceModulePtr->export.name); + } + } else if (thisParserPtr->capabilitiesModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->capabilitiesModulePtr, (yyvsp[(1) - (1)].id)); + if (objectPtr) { + importPtr = addImport( + (yyvsp[(1) - (1)].id), + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->capabilitiesModulePtr-> + export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject((yyvsp[(1) - (1)].id), + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, (yyvsp[(1) - (1)].id), + thisParserPtr->capabilitiesModulePtr->export.name); + } + } else { + /* + * forward referenced node. + * create it, + * marked with FLAG_INCOMPLETE. + */ + objectPtr = addObject((yyvsp[(1) - (1)].id), + thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + } + (yyval.objectPtr) = objectPtr; + } else { + /* + * imported object. + */ + importPtr->use++; + (yyval.objectPtr) = findObjectByModulenameAndName( + importPtr->export.module, (yyvsp[(1) - (1)].id)); + smiFree((yyvsp[(1) - (1)].id)); + } + } + if ((yyval.objectPtr)) + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + ;} + break; + + case 343: +#line 6064 "parser-smi.y" + { + Object *objectPtr; + Import *importPtr; + char *md; + + if (thisParserPtr->parentNodePtr != smiHandle->rootNodePtr) { + md = smiMalloc(sizeof(char) * + (strlen((yyvsp[(1) - (3)].id)) + strlen((yyvsp[(3) - (3)].id)) + 2)); + sprintf(md, "%s.%s", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); + smiPrintError(thisParserPtr, + ERR_OIDLABEL_NOT_FIRST, md); + smiFree(md); + } else { + objectPtr = findObjectByModulenameAndName( + (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); + if (objectPtr) { + (yyval.objectPtr) = objectPtr; + smiFree((yyvsp[(1) - (3)].id)); + smiFree((yyvsp[(3) - (3)].id)); + } else { + importPtr = findImportByModulenameAndName( + (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id), thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* TODO: check: $1 == thisModule ? */ + /* + * If we are in a MODULE-COMPLIANCE + * statement with a given MODULE... + */ + if (thisParserPtr->complianceModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, (yyvsp[(1) - (3)].id)); + if (objectPtr) { + importPtr = addImport( + (yyvsp[(1) - (3)].id), + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->complianceModulePtr->export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject((yyvsp[(1) - (3)].id), + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, (yyvsp[(1) - (3)].id), + thisParserPtr->complianceModulePtr->export.name); + } + } else if (thisParserPtr->capabilitiesModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->capabilitiesModulePtr, (yyvsp[(1) - (3)].id)); + if (objectPtr) { + importPtr = addImport( + (yyvsp[(1) - (3)].id), + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->capabilitiesModulePtr-> + export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject((yyvsp[(1) - (3)].id), + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, (yyvsp[(1) - (3)].id), + thisParserPtr->capabilitiesModulePtr->export.name); + } + } else { + /* + * forward referenced node. + * create it, + * marked with FLAG_INCOMPLETE. + */ + objectPtr = addObject((yyvsp[(3) - (3)].id), + thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiFree((yyvsp[(1) - (3)].id)); + } + (yyval.objectPtr) = objectPtr; + } else { + /* + * imported object. + */ + importPtr->use++; + (yyval.objectPtr) = findObjectByModulenameAndName( + importPtr->export.module, (yyvsp[(3) - (3)].id)); + smiFree((yyvsp[(1) - (3)].id)); + smiFree((yyvsp[(3) - (3)].id)); + } + } + if ((yyval.objectPtr)) + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } + ;} + break; + + case 344: +#line 6168 "parser-smi.y" + { + Node *nodePtr; + Object *objectPtr; + + nodePtr = findNodeByParentAndSubid(thisParserPtr->parentNodePtr, + (yyvsp[(1) - (1)].unsigned32)); + if (nodePtr && nodePtr->lastObjectPtr && + (nodePtr->lastObjectPtr->modulePtr == thisModulePtr)) { + /* + * hopefully, the last defined Object for + * this Node is the one we expect. + */ + (yyval.objectPtr) = nodePtr->lastObjectPtr; + } else { + objectPtr = addObject(NULL, + thisParserPtr->parentNodePtr, + (yyvsp[(1) - (1)].unsigned32), + FLAG_INCOMPLETE, + thisParserPtr); + (yyval.objectPtr) = objectPtr; + } + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + ;} + break; + + case 345: +#line 6192 "parser-smi.y" + { + Object *objectPtr = NULL; + Object *oldObjectPtr = NULL; + Node *oldNodePtr = NULL; + + /* TODO: search in local module and + * in imported modules + */ + + oldNodePtr = findNodeByParentAndSubid( + thisParserPtr->parentNodePtr, (yyvsp[(3) - (4)].unsigned32)); + oldObjectPtr = findObjectByModuleAndName( + thisParserPtr->modulePtr, (yyvsp[(1) - (4)].id)); + + if (oldObjectPtr && + ((oldObjectPtr->nodePtr->subid != (yyvsp[(3) - (4)].unsigned32)) || + (oldObjectPtr->nodePtr->parentPtr != thisParserPtr->parentNodePtr))) { + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_OID_CHANGED, + (yyvsp[(1) - (4)].id)); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldObjectPtr->line, + oldObjectPtr->export.name); + objectPtr = addObject((yyvsp[(1) - (4)].id), + thisParserPtr->parentNodePtr, + (yyvsp[(3) - (4)].unsigned32), 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } else if (oldNodePtr && + oldNodePtr->lastObjectPtr && + oldNodePtr->lastObjectPtr->export.name && + strcmp(oldNodePtr->lastObjectPtr->export.name, (yyvsp[(1) - (4)].id))) { + smiPrintError(thisParserPtr, + ERR_OIDLABEL_CHANGED, + (yyvsp[(1) - (4)].id), oldNodePtr->lastObjectPtr->export.name); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldNodePtr->lastObjectPtr->line, + oldNodePtr->lastObjectPtr->export.name); + objectPtr = addObject((yyvsp[(1) - (4)].id), + thisParserPtr->parentNodePtr, + (yyvsp[(3) - (4)].unsigned32), 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } else { + objectPtr = addObject((yyvsp[(1) - (4)].id), thisParserPtr->parentNodePtr, + (yyvsp[(3) - (4)].unsigned32), 0, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } + ;} + break; + + case 346: +#line 6252 "parser-smi.y" + { + Object *objectPtr = NULL; + Object *oldObjectPtr = NULL; + Node *oldNodePtr = NULL; + char *md; + + md = smiMalloc(sizeof(char) * + (strlen((yyvsp[(1) - (6)].id)) + strlen((yyvsp[(3) - (6)].id)) + 2)); + sprintf(md, "%s.%s", (yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id)); + + oldNodePtr = findNodeByParentAndSubid( + thisParserPtr->parentNodePtr, (yyvsp[(5) - (6)].unsigned32)); + oldObjectPtr = findObjectByModulenameAndName( + (yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id)); + + if (oldObjectPtr && + ((oldObjectPtr->nodePtr->subid != (yyvsp[(5) - (6)].unsigned32)) || + (oldObjectPtr->nodePtr->parentPtr != thisParserPtr->parentNodePtr))) { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_OID_CHANGED, + (yyvsp[(3) - (6)].id)); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldObjectPtr->line, + oldObjectPtr->export.name); + objectPtr = addObject((yyvsp[(3) - (6)].id), + thisParserPtr->parentNodePtr, + (yyvsp[(5) - (6)].unsigned32), 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } else if (oldNodePtr && + oldNodePtr->lastObjectPtr && + strcmp(oldNodePtr->lastObjectPtr->export.name, (yyvsp[(3) - (6)].id))) { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + smiPrintError(thisParserPtr, + ERR_OIDLABEL_CHANGED, + (yyvsp[(3) - (6)].id), oldNodePtr->lastObjectPtr->export.name); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldNodePtr->lastObjectPtr->line, + oldNodePtr->lastObjectPtr->export.name); + objectPtr = addObject((yyvsp[(3) - (6)].id), + thisParserPtr->parentNodePtr, + (yyvsp[(5) - (6)].unsigned32), 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } else { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + objectPtr = addObject((yyvsp[(3) - (6)].id), thisParserPtr->parentNodePtr, + (yyvsp[(5) - (6)].unsigned32), 0, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + (yyval.objectPtr) = objectPtr; + thisParserPtr->parentNodePtr = (yyval.objectPtr)->nodePtr; + } + smiFree(md); + ;} + break; + + case 347: +#line 6321 "parser-smi.y" + { (yyval.text) = NULL; ;} + break; + + case 348: +#line 6325 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 349: +#line 6327 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 350: +#line 6331 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 351: +#line 6333 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 352: +#line 6337 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTGROUP; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 353: +#line 6347 "parser-smi.y" + { + Import *importPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("OBJECT-GROUP", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-GROUP", "SNMPv2-CONF"); + } + ;} + break; + + case 354: +#line 6366 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(9) - (9)].text)); + ;} + break; + + case 355: +#line 6371 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(14) - (15)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (15)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (15)].id), thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTGROUP); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, (yyvsp[(7) - (15)].status)); + setObjectDescription(objectPtr, (yyvsp[(9) - (15)].text), thisParserPtr); + if ((yyvsp[(11) - (15)].text)) { + setObjectReference(objectPtr, (yyvsp[(11) - (15)].text), thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, (yyvsp[(5) - (15)].listPtr)); + (yyval.err) = 0; + ;} + break; + + case 356: +#line 6397 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_NOTIFICATIONGROUP; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 357: +#line 6407 "parser-smi.y" + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "NOTIFICATION-GROUP"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("NOTIFICATION-GROUP", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "NOTIFICATION-GROUP", + "SNMPv2-CONF"); + } + ;} + break; + + case 358: +#line 6429 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(9) - (9)].text)); + ;} + break; + + case 359: +#line 6434 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(14) - (15)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (15)].id), &objectPtr); + + objectPtr = setObjectName(objectPtr, (yyvsp[(1) - (15)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_NOTIFICATIONGROUP); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, (yyvsp[(7) - (15)].status)); + setObjectDescription(objectPtr, (yyvsp[(9) - (15)].text), thisParserPtr); + if ((yyvsp[(11) - (15)].text)) { + setObjectReference(objectPtr, (yyvsp[(11) - (15)].text), thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, (yyvsp[(5) - (15)].listPtr)); + (yyval.err) = 0; + ;} + break; + + case 360: +#line 6461 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULECOMPLIANCE; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 361: +#line 6471 "parser-smi.y" + { + Import *importPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + importPtr = findImportByName("MODULE-COMPLIANCE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "MODULE-COMPLIANCE", + "SNMPv2-CONF"); + } + ;} + break; + + case 362: +#line 6489 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(8) - (8)].text)); + ;} + break; + + case 363: +#line 6495 "parser-smi.y" + { + Object *objectPtr; + Option *optionPtr; + Refinement *refinementPtr; + List *listPtr; + + objectPtr = (yyvsp[(14) - (15)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (15)].id), &objectPtr); + + setObjectName(objectPtr, (yyvsp[(1) - (15)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_MODULECOMPLIANCE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, (yyvsp[(6) - (15)].status)); + setObjectDescription(objectPtr, (yyvsp[(8) - (15)].text), thisParserPtr); + if ((yyvsp[(10) - (15)].text)) { + setObjectReference(objectPtr, (yyvsp[(10) - (15)].text), thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, (yyvsp[(11) - (15)].compl).mandatorylistPtr); + objectPtr->optionlistPtr = (yyvsp[(11) - (15)].compl).optionlistPtr; + objectPtr->refinementlistPtr = + (yyvsp[(11) - (15)].compl).refinementlistPtr; + + if ((yyvsp[(11) - (15)].compl).optionlistPtr) { + for (listPtr = (yyvsp[(11) - (15)].compl).optionlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + optionPtr = ((Option *)(listPtr->ptr)); + optionPtr->compliancePtr = objectPtr; + } + } + + /* + * Dirty: Fake the types' names in the + * refinement list: + * ``++type'' + * ``++writetype'' + */ + if ((yyvsp[(11) - (15)].compl).refinementlistPtr) { + for (listPtr = (yyvsp[(11) - (15)].compl).refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + refinementPtr = + ((Refinement *)(listPtr->ptr)); + refinementPtr->compliancePtr = objectPtr; + } + } + + (yyval.err) = 0; + ;} + break; + + case 364: +#line 6554 "parser-smi.y" + { + (yyval.compl) = (yyvsp[(1) - (1)].compl); + ;} + break; + + case 365: +#line 6560 "parser-smi.y" + { + (yyval.compl) = (yyvsp[(1) - (1)].compl); + ;} + break; + + case 366: +#line 6564 "parser-smi.y" + { + List *listPtr; + + /* concatenate lists in $1 and $2 */ + if ((yyvsp[(1) - (2)].compl).mandatorylistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).mandatorylistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).mandatorylistPtr; + (yyval.compl).mandatorylistPtr = (yyvsp[(1) - (2)].compl).mandatorylistPtr; + } else { + (yyval.compl).mandatorylistPtr = (yyvsp[(2) - (2)].compl).mandatorylistPtr; + } + if ((yyvsp[(1) - (2)].compl).optionlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).optionlistPtr; + (yyval.compl).optionlistPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + } else { + (yyval.compl).optionlistPtr = (yyvsp[(2) - (2)].compl).optionlistPtr; + } + if ((yyvsp[(1) - (2)].compl).refinementlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).refinementlistPtr; + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + } else { + (yyval.compl).refinementlistPtr = (yyvsp[(2) - (2)].compl).refinementlistPtr; + } + ;} + break; + + case 367: +#line 6599 "parser-smi.y" + { + /* + * Remember the module. SMIv2 is broken by + * design to allow subsequent clauses to + * refer identifiers that are not + * imported. Although, SMIv2 does not + * require, we will fake it by inserting + * appropriate imports. + */ + if ((yyvsp[(2) - (2)].modulePtr) == thisModulePtr) + thisParserPtr->complianceModulePtr = NULL; + else + thisParserPtr->complianceModulePtr = (yyvsp[(2) - (2)].modulePtr); + ;} + break; + + case 368: +#line 6615 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = (yyvsp[(4) - (5)].listPtr); + (yyval.compl).optionlistPtr = (yyvsp[(5) - (5)].compl).optionlistPtr; + (yyval.compl).refinementlistPtr = (yyvsp[(5) - (5)].compl).refinementlistPtr; + if (thisParserPtr->complianceModulePtr) { + checkImports(thisParserPtr->complianceModulePtr, + thisParserPtr); + thisParserPtr->complianceModulePtr = NULL; + } + ;} + break; + + case 369: +#line 6628 "parser-smi.y" + { + (yyval.modulePtr) = findModuleByName((yyvsp[(1) - (2)].id)); + /* TODO: handle objectIdentifier */ + if (!(yyval.modulePtr)) { + (yyval.modulePtr) = loadModule((yyvsp[(1) - (2)].id), thisParserPtr); + } + smiFree((yyvsp[(1) - (2)].id)); + ;} + break; + + case 370: +#line 6637 "parser-smi.y" + { + (yyval.modulePtr) = findModuleByName((yyvsp[(1) - (1)].id)); + if (!(yyval.modulePtr)) { + (yyval.modulePtr) = loadModule((yyvsp[(1) - (1)].id), thisParserPtr); + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 371: +#line 6646 "parser-smi.y" + { + (yyval.modulePtr) = thisModulePtr; + ;} + break; + + case 372: +#line 6652 "parser-smi.y" + { + (yyval.listPtr) = (yyvsp[(3) - (4)].listPtr); + ;} + break; + + case 373: +#line 6656 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 374: +#line 6662 "parser-smi.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].objectPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 375: +#line 6668 "parser-smi.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].objectPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); + ;} + break; + + case 376: +#line 6681 "parser-smi.y" + { + /* TODO: check that objectIdentifier is + found, is defined in thisParserPtr->complianceModulePtr, + and is a group node. */ + Import *importPtr; + + (yyval.objectPtr) = (yyvsp[(1) - (1)].objectPtr); + if (thisParserPtr->complianceModulePtr) { + (yyval.objectPtr) = findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, + (yyvsp[(1) - (1)].objectPtr)->export.name); + } + if (thisParserPtr->complianceModulePtr && (yyvsp[(1) - (1)].objectPtr)->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + (yyvsp[(1) - (1)].objectPtr)->export.name, thisModulePtr); + if (importPtr) + importPtr->use++; + } + ;} + break; + + case 377: +#line 6704 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = NULL; + (yyval.compl).optionlistPtr = (yyvsp[(1) - (1)].compl).optionlistPtr; + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (1)].compl).refinementlistPtr; + ;} + break; + + case 378: +#line 6710 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = NULL; + (yyval.compl).optionlistPtr = NULL; + (yyval.compl).refinementlistPtr = NULL; + ;} + break; + + case 379: +#line 6718 "parser-smi.y" + { + (yyval.compl) = (yyvsp[(1) - (1)].compl); + ;} + break; + + case 380: +#line 6722 "parser-smi.y" + { + List *listPtr; + int stop; + + (yyval.compl).mandatorylistPtr = NULL; + + /* check for duplicates in optionlist */ + stop = 0; + if ((yyvsp[(2) - (2)].compl).optionlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (((Option *)listPtr->ptr)->objectPtr == + ((Option *)(yyvsp[(2) - (2)].compl).optionlistPtr->ptr)->objectPtr) { + smiPrintError(thisParserPtr, + ERR_OPTIONALGROUP_ALREADY_EXISTS, + ((Option *)(yyvsp[(2) - (2)].compl).optionlistPtr->ptr)->objectPtr->export.name); + stop = 1; + (yyval.compl).optionlistPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + } + } + } + + /* concatenate optionlists */ + if ((yyvsp[(1) - (2)].compl).optionlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + if (!stop) { + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).optionlistPtr; + } + (yyval.compl).optionlistPtr = (yyvsp[(1) - (2)].compl).optionlistPtr; + } else { + (yyval.compl).optionlistPtr = (yyvsp[(2) - (2)].compl).optionlistPtr; + } + + /* check for duplicates in refinementlist */ + stop = 0; + if ((yyvsp[(2) - (2)].compl).refinementlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (((Refinement *)listPtr->ptr)->objectPtr == + ((Refinement *)(yyvsp[(2) - (2)].compl).refinementlistPtr->ptr)->objectPtr) { + smiPrintError(thisParserPtr, + ERR_REFINEMENT_ALREADY_EXISTS, + ((Refinement *)(yyvsp[(2) - (2)].compl).refinementlistPtr->ptr)->objectPtr->export.name); + stop = 1; + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + } + } + } + + /* concatenate refinementlists */ + if ((yyvsp[(1) - (2)].compl).refinementlistPtr) { + for (listPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + if (!stop) { + listPtr->nextPtr = (yyvsp[(2) - (2)].compl).refinementlistPtr; + } + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (2)].compl).refinementlistPtr; + } else { + (yyval.compl).refinementlistPtr = (yyvsp[(2) - (2)].compl).refinementlistPtr; + } + ;} + break; + + case 381: +#line 6789 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = NULL; + (yyval.compl).optionlistPtr = (yyvsp[(1) - (1)].listPtr); + (yyval.compl).refinementlistPtr = NULL; + ;} + break; + + case 382: +#line 6795 "parser-smi.y" + { + (yyval.compl).mandatorylistPtr = NULL; + (yyval.compl).optionlistPtr = NULL; + (yyval.compl).refinementlistPtr = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 383: +#line 6803 "parser-smi.y" + { + thisParserPtr->firstNestedStatementLine = thisParserPtr->line; + ;} + break; + + case 384: +#line 6808 "parser-smi.y" + { + Import *importPtr; + + if (thisParserPtr->complianceModulePtr && (yyvsp[(3) - (5)].objectPtr)->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + (yyvsp[(3) - (5)].objectPtr)->export.name, + thisModulePtr); + if (importPtr) + importPtr->use++; + } + + checkDescr(thisParserPtr, (yyvsp[(5) - (5)].text)); + + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->nextPtr = NULL; + (yyval.listPtr)->ptr = smiMalloc(sizeof(Option)); + ((Option *)((yyval.listPtr)->ptr))->line = thisParserPtr->firstNestedStatementLine; + ((Option *)((yyval.listPtr)->ptr))->objectPtr = (yyvsp[(3) - (5)].objectPtr); + if (! (thisModulePtr->flags & SMI_FLAG_NODESCR)) { + ((Option *)((yyval.listPtr)->ptr))->export.description = (yyvsp[(5) - (5)].text); + } else { + smiFree((yyvsp[(5) - (5)].text)); + } + ;} + break; + + case 385: +#line 6836 "parser-smi.y" + { + thisParserPtr->firstNestedStatementLine = thisParserPtr->line; + ;} + break; + + case 386: +#line 6844 "parser-smi.y" + { + Import *importPtr; + + if (thisParserPtr->complianceModulePtr && (yyvsp[(3) - (8)].objectPtr)->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + (yyvsp[(3) - (8)].objectPtr)->export.name, + thisModulePtr); + if (importPtr) + importPtr->use++; + } + + checkDescr(thisParserPtr, (yyvsp[(8) - (8)].text)); + + thisParserPtr->flags &= ~FLAG_CREATABLE; + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->nextPtr = NULL; + (yyval.listPtr)->ptr = smiMalloc(sizeof(Refinement)); + ((Refinement *)((yyval.listPtr)->ptr))->line = + thisParserPtr->firstNestedStatementLine; + ((Refinement *)((yyval.listPtr)->ptr))->objectPtr = (yyvsp[(3) - (8)].objectPtr); + ((Refinement *)((yyval.listPtr)->ptr))->typePtr = (yyvsp[(4) - (8)].typePtr); + if ((yyvsp[(4) - (8)].typePtr)) { + (yyvsp[(4) - (8)].typePtr)->parentPtr = (yyvsp[(3) - (8)].objectPtr)->typePtr; + } + ((Refinement *)((yyval.listPtr)->ptr))->writetypePtr = (yyvsp[(5) - (8)].typePtr); + if ((yyvsp[(5) - (8)].typePtr)) { + (yyvsp[(5) - (8)].typePtr)->parentPtr = (yyvsp[(3) - (8)].objectPtr)->typePtr; + } + ((Refinement *)((yyval.listPtr)->ptr))->export.access = (yyvsp[(6) - (8)].access); + if (! (thisParserPtr->flags & SMI_FLAG_NODESCR)) { + ((Refinement *)((yyval.listPtr)->ptr))->export.description = (yyvsp[(8) - (8)].text); + } else { + smiFree((yyvsp[(8) - (8)].text)); + } + ;} + break; + + case 387: +#line 6883 "parser-smi.y" + { + if ((yyvsp[(2) - (2)].typePtr)->export.name) { + (yyval.typePtr) = duplicateType((yyvsp[(2) - (2)].typePtr), 0, thisParserPtr); + } else { + (yyval.typePtr) = (yyvsp[(2) - (2)].typePtr); + } + ;} + break; + + case 388: +#line 6891 "parser-smi.y" + { + (yyval.typePtr) = NULL; + ;} + break; + + case 389: +#line 6897 "parser-smi.y" + { + /* must not be present in PIBs */ + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "WRITE-SYNTAX"); + if ((yyvsp[(2) - (2)].typePtr)->export.name) { + (yyval.typePtr) = duplicateType((yyvsp[(2) - (2)].typePtr), 0, thisParserPtr); + } else { + (yyval.typePtr) = (yyvsp[(2) - (2)].typePtr); + } + ;} + break; + + case 390: +#line 6908 "parser-smi.y" + { + (yyval.typePtr) = NULL; + ;} + break; + + case 391: +#line 6914 "parser-smi.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 392: +#line 6920 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "MIN-ACCESS"); + (yyval.access) = (yyvsp[(2) - (2)].access); + ;} + break; + + case 393: +#line 6926 "parser-smi.y" + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-MIN-ACCESS"); + if ((yyvsp[(2) - (2)].access) == SMI_ACCESS_REPORT_ONLY) + smiPrintError(thisParserPtr, ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS); + (yyval.access) = (yyvsp[(2) - (2)].access); + ;} + break; + + case 394: +#line 6934 "parser-smi.y" + { + (yyval.access) = SMI_ACCESS_UNKNOWN; + ;} + break; + + case 395: +#line 6940 "parser-smi.y" + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_AGENTCAPABILITIES; + + checkNameLen(thisParserPtr, (yyvsp[(1) - (1)].id), + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, (yyvsp[(1) - (1)].id)); + ;} + break; + + case 396: +#line 6950 "parser-smi.y" + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "AGENT-CAAPABILITIES"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("AGENT-CAPABILITIES", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "AGENT-CAPABILITIES", + "SNMPv2-CONF"); + } + ;} + break; + + case 397: +#line 6972 "parser-smi.y" + { + checkDescr(thisParserPtr, (yyvsp[(10) - (10)].text)); + ;} + break; + + case 398: +#line 6978 "parser-smi.y" + { + Object *objectPtr; + + objectPtr = (yyvsp[(16) - (17)].objectPtr); + + smiCheckObjectReuse(thisParserPtr, (yyvsp[(1) - (17)].id), &objectPtr); + + setObjectName(objectPtr, (yyvsp[(1) - (17)].id), thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_AGENTCAPABILITIES); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, (yyvsp[(8) - (17)].status)); + setObjectDescription(objectPtr, (yyvsp[(10) - (17)].text), thisParserPtr); + if ((yyvsp[(12) - (17)].text)) { + setObjectReference(objectPtr, (yyvsp[(12) - (17)].text), thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + /* + * TODO: PRODUCT_RELEASE Text + * TODO: ModulePart_Capabilities + */ + (yyval.err) = 0; + ;} + break; + + case 399: +#line 7008 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 400: +#line 7010 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 401: +#line 7014 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 402: +#line 7016 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 403: +#line 7020 "parser-smi.y" + { + /* + * Remember the module. SMIv2 is broken by + * design to allow subsequent clauses to + * refer identifiers that are not + * imported. Although, SMIv2 does not + * require, we will fake it by inserting + * appropriate imports. + */ + if ((yyvsp[(2) - (2)].modulePtr) == thisModulePtr) + thisParserPtr->capabilitiesModulePtr = NULL; + else + thisParserPtr->capabilitiesModulePtr = (yyvsp[(2) - (2)].modulePtr); + ;} + break; + + case 404: +#line 7036 "parser-smi.y" + { + if (thisParserPtr->capabilitiesModulePtr) { + checkImports(thisParserPtr->capabilitiesModulePtr, + thisParserPtr); + thisParserPtr->capabilitiesModulePtr = NULL; + } + (yyval.err) = 0; + ;} + break; + + case 405: +#line 7047 "parser-smi.y" + { +#if 0 + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].listPtr); + (yyval.listPtr)->nextPtr = NULL; +#else + (yyval.listPtr) = NULL; +#endif + ;} + break; + + case 406: +#line 7057 "parser-smi.y" + { +#if 0 + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(3) - (3)].listPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (3)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (3)].listPtr); +#else + (yyval.listPtr) = NULL; +#endif + ;} + break; + + case 407: +#line 7074 "parser-smi.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 408: +#line 7080 "parser-smi.y" + { + (yyval.modulePtr) = findModuleByName((yyvsp[(1) - (2)].id)); + /* TODO: handle objectIdentifier */ + if (!(yyval.modulePtr)) { + (yyval.modulePtr) = loadModule((yyvsp[(1) - (2)].id), thisParserPtr); + } + smiFree((yyvsp[(1) - (2)].id)); + ;} + break; + + case 409: +#line 7089 "parser-smi.y" + { + (yyval.modulePtr) = findModuleByName((yyvsp[(1) - (1)].id)); + if (!(yyval.modulePtr)) { + (yyval.modulePtr) = loadModule((yyvsp[(1) - (1)].id), thisParserPtr); + } + smiFree((yyvsp[(1) - (1)].id)); + ;} + break; + + case 410: +#line 7099 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 411: +#line 7101 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 412: +#line 7105 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 413: +#line 7107 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 414: +#line 7111 "parser-smi.y" + { + if ((yyvsp[(2) - (2)].objectPtr)) { + variationkind = (yyvsp[(2) - (2)].objectPtr)->export.nodekind; + } else { + variationkind = SMI_NODEKIND_UNKNOWN; + } + ;} + break; + + case 415: +#line 7119 "parser-smi.y" + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_SYNTAX); + } + ;} + break; + + case 416: +#line 7126 "parser-smi.y" + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_WRITESYNTAX); + } + ;} + break; + + case 417: +#line 7134 "parser-smi.y" + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_CREATION); + } + ;} + break; + + case 418: +#line 7141 "parser-smi.y" + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_DEFVAL); + } else if ((yyvsp[(11) - (11)].valuePtr)) { + adjustDefval(thisParserPtr, + (yyvsp[(11) - (11)].valuePtr), (yyvsp[(2) - (11)].objectPtr)->typePtr, + thisParserPtr->line); + smiCheckValueType(thisParserPtr, + (yyvsp[(11) - (11)].valuePtr), (yyvsp[(2) - (11)].objectPtr)->typePtr, + thisParserPtr->line); + } + ;} + break; + + case 419: +#line 7155 "parser-smi.y" + { + thisParserPtr->flags &= ~FLAG_CREATABLE; + (yyval.err) = 0; + variationkind = SMI_NODEKIND_UNKNOWN; + + checkDescr(thisParserPtr, (yyvsp[(14) - (14)].text)); + ;} + break; + + case 420: +#line 7165 "parser-smi.y" + { (yyval.access) = (yyvsp[(2) - (2)].access); ;} + break; + + case 421: +#line 7167 "parser-smi.y" + { (yyval.access) = 0; ;} + break; + + case 422: +#line 7171 "parser-smi.y" + { + if (!strcmp((yyvsp[(1) - (1)].id), "not-implemented")) { + (yyval.access) = SMI_ACCESS_NOT_IMPLEMENTED; + } else if (!strcmp((yyvsp[(1) - (1)].id), "accessible-for-notify")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_NOTIFY; + } + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-only")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_READ_ONLY; + } + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-write")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_READ_WRITE; + } + } else if (!strcmp((yyvsp[(1) - (1)].id), "read-create")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_READ_WRITE; + } + } else if (!strcmp((yyvsp[(1) - (1)].id), "write-only")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } else { + (yyval.access) = SMI_ACCESS_READ_WRITE; /* TODO */ + smiPrintError(thisParserPtr, + ERR_SMIV2_WRITE_ONLY); + } + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_VARIATION_ACCESS, + (yyvsp[(1) - (1)].id)); + (yyval.access) = SMI_ACCESS_UNKNOWN; + } + ;} + break; + + case 423: +#line 7236 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 424: +#line 7238 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 425: +#line 7242 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 426: +#line 7244 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + case 427: +#line 7248 "parser-smi.y" + { (yyval.err) = 0; ;} + break; + + +/* Line 1267 of yacc.c. */ +#line 9848 "parser-smi.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 7251 "parser-smi.y" + + +#endif + diff --git a/lib/parser-smi.h b/lib/parser-smi.h new file mode 100644 index 0000000..8c7b3a2 --- /dev/null +++ b/lib/parser-smi.h @@ -0,0 +1,32 @@ +/* + * parser-smi.h -- + * + * Definition for the SMIv1/v2 parser. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: parser-smi.h 1061 2000-12-11 09:11:00Z strauss $ + */ + +#ifndef _PARSER_SMI_H +#define _PARSER_SMI_H + +#include + +#include "data.h" + + + +#define YYERROR_VERBOSE + + + +extern int smiparse(); + + + +#endif /* _PARSER_SMI_H */ + diff --git a/lib/parser-smi.tab.h b/lib/parser-smi.tab.h new file mode 100644 index 0000000..a85fad8 --- /dev/null +++ b/lib/parser-smi.tab.h @@ -0,0 +1,271 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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, 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. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DOT_DOT = 258, + COLON_COLON_EQUAL = 259, + UPPERCASE_IDENTIFIER = 260, + LOWERCASE_IDENTIFIER = 261, + NUMBER = 262, + NEGATIVENUMBER = 263, + NUMBER64 = 264, + NEGATIVENUMBER64 = 265, + BIN_STRING = 266, + HEX_STRING = 267, + QUOTED_STRING = 268, + ACCESS = 269, + AGENT_CAPABILITIES = 270, + APPLICATION = 271, + AUGMENTS = 272, + BEGIN_ = 273, + BITS = 274, + CHOICE = 275, + CONTACT_INFO = 276, + CREATION_REQUIRES = 277, + COUNTER32 = 278, + COUNTER64 = 279, + DEFINITIONS = 280, + DEFVAL = 281, + DESCRIPTION = 282, + DISPLAY_HINT = 283, + END = 284, + ENTERPRISE = 285, + EXPORTS = 286, + EXTENDS = 287, + FROM = 288, + GROUP = 289, + GAUGE32 = 290, + IDENTIFIER = 291, + IMPLICIT = 292, + IMPLIED = 293, + IMPORTS = 294, + INCLUDES = 295, + INDEX = 296, + INSTALL_ERRORS = 297, + INTEGER = 298, + INTEGER32 = 299, + INTEGER64 = 300, + IPADDRESS = 301, + LAST_UPDATED = 302, + MACRO = 303, + MANDATORY_GROUPS = 304, + MAX_ACCESS = 305, + MIN_ACCESS = 306, + MODULE = 307, + MODULE_COMPLIANCE = 308, + MODULE_IDENTITY = 309, + NOT_ACCESSIBLE = 310, + NOTIFICATIONS = 311, + NOTIFICATION_GROUP = 312, + NOTIFICATION_TYPE = 313, + OBJECT = 314, + OBJECT_GROUP = 315, + OBJECT_IDENTITY = 316, + OBJECT_TYPE = 317, + OBJECTS = 318, + OCTET = 319, + OF = 320, + ORGANIZATION = 321, + OPAQUE = 322, + PIB_ACCESS = 323, + PIB_DEFINITIONS = 324, + PIB_INDEX = 325, + PIB_MIN_ACCESS = 326, + PIB_REFERENCES = 327, + PIB_TAG = 328, + POLICY_ACCESS = 329, + PRODUCT_RELEASE = 330, + REFERENCE = 331, + REVISION = 332, + SEQUENCE = 333, + SIZE = 334, + STATUS = 335, + STRING = 336, + SUBJECT_CATEGORIES = 337, + SUPPORTS = 338, + SYNTAX = 339, + TEXTUAL_CONVENTION = 340, + TIMETICKS = 341, + TRAP_TYPE = 342, + UNIQUENESS = 343, + UNITS = 344, + UNIVERSAL = 345, + UNSIGNED32 = 346, + UNSIGNED64 = 347, + VALUE = 348, + VARIABLES = 349, + VARIATION = 350, + WRITE_SYNTAX = 351 + }; +#endif +/* Tokens. */ +#define DOT_DOT 258 +#define COLON_COLON_EQUAL 259 +#define UPPERCASE_IDENTIFIER 260 +#define LOWERCASE_IDENTIFIER 261 +#define NUMBER 262 +#define NEGATIVENUMBER 263 +#define NUMBER64 264 +#define NEGATIVENUMBER64 265 +#define BIN_STRING 266 +#define HEX_STRING 267 +#define QUOTED_STRING 268 +#define ACCESS 269 +#define AGENT_CAPABILITIES 270 +#define APPLICATION 271 +#define AUGMENTS 272 +#define BEGIN_ 273 +#define BITS 274 +#define CHOICE 275 +#define CONTACT_INFO 276 +#define CREATION_REQUIRES 277 +#define COUNTER32 278 +#define COUNTER64 279 +#define DEFINITIONS 280 +#define DEFVAL 281 +#define DESCRIPTION 282 +#define DISPLAY_HINT 283 +#define END 284 +#define ENTERPRISE 285 +#define EXPORTS 286 +#define EXTENDS 287 +#define FROM 288 +#define GROUP 289 +#define GAUGE32 290 +#define IDENTIFIER 291 +#define IMPLICIT 292 +#define IMPLIED 293 +#define IMPORTS 294 +#define INCLUDES 295 +#define INDEX 296 +#define INSTALL_ERRORS 297 +#define INTEGER 298 +#define INTEGER32 299 +#define INTEGER64 300 +#define IPADDRESS 301 +#define LAST_UPDATED 302 +#define MACRO 303 +#define MANDATORY_GROUPS 304 +#define MAX_ACCESS 305 +#define MIN_ACCESS 306 +#define MODULE 307 +#define MODULE_COMPLIANCE 308 +#define MODULE_IDENTITY 309 +#define NOT_ACCESSIBLE 310 +#define NOTIFICATIONS 311 +#define NOTIFICATION_GROUP 312 +#define NOTIFICATION_TYPE 313 +#define OBJECT 314 +#define OBJECT_GROUP 315 +#define OBJECT_IDENTITY 316 +#define OBJECT_TYPE 317 +#define OBJECTS 318 +#define OCTET 319 +#define OF 320 +#define ORGANIZATION 321 +#define OPAQUE 322 +#define PIB_ACCESS 323 +#define PIB_DEFINITIONS 324 +#define PIB_INDEX 325 +#define PIB_MIN_ACCESS 326 +#define PIB_REFERENCES 327 +#define PIB_TAG 328 +#define POLICY_ACCESS 329 +#define PRODUCT_RELEASE 330 +#define REFERENCE 331 +#define REVISION 332 +#define SEQUENCE 333 +#define SIZE 334 +#define STATUS 335 +#define STRING 336 +#define SUBJECT_CATEGORIES 337 +#define SUPPORTS 338 +#define SYNTAX 339 +#define TEXTUAL_CONVENTION 340 +#define TIMETICKS 341 +#define TRAP_TYPE 342 +#define UNIQUENESS 343 +#define UNITS 344 +#define UNIVERSAL 345 +#define UNSIGNED32 346 +#define UNSIGNED64 347 +#define VALUE 348 +#define VARIABLES 349 +#define VARIATION 350 +#define WRITE_SYNTAX 351 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 1288 "parser-smi.y" +{ + char *text; /* scanned quoted text */ + char *id; /* identifier name */ + int err; /* actually just a dummy */ + time_t date; /* a date value */ + Object *objectPtr; /* object identifier */ + SmiStatus status; /* a STATUS value */ + SmiAccess access; /* an ACCESS value */ + Type *typePtr; + List *listPtr; /* SEQUENCE and INDEX lists */ + NamedNumber *namedNumberPtr; /* BITS or enum item */ + Range *rangePtr; /* type restricting range */ + SmiValue *valuePtr; + SmiUnsigned32 unsigned32; /* */ + SmiInteger32 integer32; /* */ + SmiUnsigned64 unsigned64; /* */ + SmiInteger64 integer64; /* */ + struct Compl compl; + struct Index index; + Module *modulePtr; + SubjectCategories *subjectCategoriesPtr; +} +/* Line 1489 of yacc.c. */ +#line 264 "parser-smi.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + diff --git a/lib/parser-smi.y b/lib/parser-smi.y new file mode 100644 index 0000000..d7ff04f --- /dev/null +++ b/lib/parser-smi.y @@ -0,0 +1,7253 @@ +/* + * parser-smi.y -- + * + * Syntax rules for parsing the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: parser-smi.y 8090 2008-04-18 12:56:29Z strauss $ + */ + +%{ + +#include + +#ifdef BACKEND_SMI + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#include +#endif + +#include "smi.h" +#include "error.h" +#include "parser-smi.h" +#include "scanner-smi.h" +#include "data.h" +#include "check.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* + * These arguments are passed to yyparse() and yylex(). + */ +#define YYPARSE_PARAM parserPtr +#define YYLEX_PARAM parserPtr + + + +#define thisParserPtr ((Parser *)parserPtr) +#define thisModulePtr (((Parser *)parserPtr)->modulePtr) + + + +/* + * NOTE: The argument lvalp is not really a void pointer. Unfortunately, + * we don't know it better at this point. bison generated C code declares + * YYSTYPE just a few lines below based on the `%union' declaration. + */ +extern int yylex(void *lvalp, Parser *parserPtr); + + + +static int impliedFlag; +static SmiNodekind variationkind; +static SmiBasetype defaultBasetype; +static int indexFlag; + +/* + * Values for the indexFlag variable + */ +#define INDEXFLAG_NONE 0 +#define INDEXFLAG_PIBINDEX 1 +#define INDEXFLAG_AUGMENTS 2 +#define INDEXFLAG_EXTENDS 3 + + +#define SMI_EPOCH 631152000 /* 01 Jan 1990 00:00:00 */ + + + +static char *convertImportv2[] = { + "RFC1155-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1155-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1155-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1155-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1155-SMI", "private", "SNMPv2-SMI", "private", + "RFC1155-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1155-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1155-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1155-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1155-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1155-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1065-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1065-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1065-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1065-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1065-SMI", "private", "SNMPv2-SMI", "private", + "RFC1065-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1065-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1065-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1065-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1065-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1065-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1213-MIB", "mib-2", "SNMPv2-SMI", "mib-2", + "RFC1213-MIB", "DisplayString", "SNMPv2-TC", "DisplayString", + NULL, NULL, NULL, NULL +}; + + + +static void +checkDescr(Parser *parser, char *descr) +{ + if (descr) { + if (descr[0] == 0) { + smiPrintError(parser, ERR_EMPTY_DESCRIPTION); + } + /* we might want to add more checks since I have recently + seen things like DESCRIPTION "." to cirumvent warnings */ + } +} + + + +static void +checkNameLen(Parser *parser, char *name, int error_32, int error_64) +{ + int len = strlen(name); + + if (len > 64) { + smiPrintError(parser, error_64, name); + } else if (len > 32) { + smiPrintError(parser, error_32, name); + } +} + + + +static void +checkModuleName(Parser *parserPtr, Module *modulePtr) +{ + static char *mib_ignore[] = { + "SNMPv2-SMI", "SNMPv2-TC", "SNMPv2-CONF", NULL + }; + + static char *pib_ignore[] = { + "COPS-PR-SPPI", "COPS-PR-SPPI-TC", + "SNMPv2-SMI", "SNMPv2-TC", "SNMPv2-CONF", NULL + }; + + const char *name = thisModulePtr->export.name; + const int len = strlen(name); + int i; + + switch (modulePtr->export.language) { + case SMI_LANGUAGE_SMIV1: + case SMI_LANGUAGE_SMIV2: + case SMI_LANGUAGE_SMING: + for (i = 0; mib_ignore[i]; i++) { + if (strcmp(mib_ignore[i], name) == 0) { + return; + } + } + if (len > 3 && (strcmp(name + len - 4, "-MIB") != 0)) { + smiPrintError(parserPtr, ERR_MIB_MODULENAME_SUFFIX, name); + return; + } + break; + case SMI_LANGUAGE_SPPI: + for (i = 0; pib_ignore[i]; i++) { + if (strcmp(pib_ignore[i], name) == 0) { + return; + } + } + if (len > 3 && (strcmp(name + len - 4, "-PIB") != 0)) { + smiPrintError(parserPtr, ERR_PIB_MODULENAME_SUFFIX, name); + } + break; + case SMI_LANGUAGE_UNKNOWN: + break; + } +} + + + +static void +checkModuleIdentity(Parser *parserPtr, Module *modulePtr) +{ + if ((modulePtr->export.language == SMI_LANGUAGE_SMIV2) + && (modulePtr->numModuleIdentities < 1) + && strcmp(modulePtr->export.name, "SNMPv2-SMI") + && strcmp(modulePtr->export.name, "SNMPv2-CONF") + && strcmp(modulePtr->export.name, "SNMPv2-TC") + && strcmp(modulePtr->export.name, "COPS-PR-SPPI")) { + smiPrintError(parserPtr, ERR_NO_MODULE_IDENTITY); + } +} + + + +static void +checkObjects(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + Node *nodePtr; + int i; + Type *counterTypePtr, *counter32TypePtr, *counter64TypePtr; + + counterTypePtr = findTypeByName("Counter"); + counter32TypePtr = findTypeByModulenameAndName("SNMPv2-SMI", "Counter32"); + counter64TypePtr = findTypeByModulenameAndName("SNMPv2-SMI", "Counter64"); + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + Object *parentPtr; + + if ((objectPtr->export.decl != SMI_DECL_UNKNOWN) && + objectPtr->nodePtr->parentPtr && + objectPtr->nodePtr->parentPtr->lastObjectPtr) { + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + } else { + parentPtr = NULL; + } + + /* + * Set nodekinds of all newly defined objects. + */ + + if (objectPtr->export.decl == SMI_DECL_MODULEIDENTITY) { + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + } else if ((objectPtr->export.decl == SMI_DECL_VALUEASSIGNMENT) || + (objectPtr->export.decl == SMI_DECL_OBJECTIDENTITY)) { + objectPtr->export.nodekind = SMI_NODEKIND_NODE; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->typePtr) && + (objectPtr->typePtr->export.decl == SMI_DECL_IMPL_SEQUENCEOF)) { + objectPtr->export.nodekind = SMI_NODEKIND_TABLE; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->export.indexkind != SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_ROW; + } else if ((objectPtr->export.decl == SMI_DECL_NOTIFICATIONTYPE) || + (objectPtr->export.decl == SMI_DECL_TRAPTYPE)) { + objectPtr->export.nodekind = SMI_NODEKIND_NOTIFICATION; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTGROUP) || + (objectPtr->export.decl == SMI_DECL_NOTIFICATIONGROUP)) { + objectPtr->export.nodekind = SMI_NODEKIND_GROUP; + } else if (objectPtr->export.decl == SMI_DECL_MODULECOMPLIANCE) { + objectPtr->export.nodekind = SMI_NODEKIND_COMPLIANCE; + } else if (objectPtr->export.decl == SMI_DECL_AGENTCAPABILITIES) { + objectPtr->export.nodekind = SMI_NODEKIND_CAPABILITIES; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (parentPtr) && + (parentPtr->export.indexkind != SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_COLUMN; + } else if ((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (parentPtr) && + (parentPtr->export.indexkind == SMI_INDEX_UNKNOWN)) { + objectPtr->export.nodekind = SMI_NODEKIND_SCALAR; + } + } + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + Object *parentPtr; + + if (objectPtr->nodePtr->parentPtr && + objectPtr->nodePtr->parentPtr->lastObjectPtr) { + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + } else { + parentPtr = NULL; + } + + /* + * Check whether the associated type resolves to a known base type. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && objectPtr->typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + smiPrintErrorAtLine(parserPtr, ERR_BASETYPE_UNKNOWN, + objectPtr->line, + objectPtr->typePtr->export.name ? + objectPtr->typePtr->export.name : "[unknown]", + objectPtr->export.name); + if (objectPtr->nodePtr->parentPtr->firstObjectPtr->export.nodekind + == SMI_NODEKIND_TABLE) { + /* the parent node is a table node, so assume this is + * a row node. this adjusts missing INDEXs in RFC 1158. + */ + objectPtr->export.nodekind = SMI_NODEKIND_ROW; + } + } + + /* + * Mark types that are referenced in this module. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && (objectPtr->typePtr->export.decl == SMI_DECL_TYPEDEF + || objectPtr->typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION + || objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE)) { + addTypeFlags(objectPtr->typePtr, FLAG_INSYNTAX); + if (objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE) { + addTypeFlags(objectPtr->typePtr->parentPtr, FLAG_INSYNTAX); + } + } + + /* + * Check whether the status of the associated type matches the + * status of the object. + */ + + if (objectPtr->typePtr + && (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN + || objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) + && (objectPtr->export.status < objectPtr->typePtr->export.status)) { + if (objectPtr->typePtr->export.status == SMI_STATUS_DEPRECATED) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_DEPRECATED, + objectPtr->line, + objectPtr->typePtr->export.name, + objectPtr->export.name); + } + if (objectPtr->typePtr->export.status == SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_OBSOLETE, + objectPtr->line, + objectPtr->typePtr->export.name, + objectPtr->export.name); + } + } + + /* + * Check the nodekind of the parent node. + */ + + if (parentPtr) { + switch (objectPtr->export.nodekind) { + case SMI_NODEKIND_COLUMN: + if (parentPtr->export.nodekind != SMI_NODEKIND_ROW) { + smiPrintErrorAtLine(parserPtr, ERR_COLUMN_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_ROW: + if (parentPtr->export.nodekind != SMI_NODEKIND_TABLE) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + if (parentPtr->typePtr && parentPtr->typePtr->parentPtr && + strcmp(parentPtr->typePtr->parentPtr->export.name, + objectPtr->typePtr->export.name)) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_ROW_TYPE_MISMATCH, + objectPtr->line, + objectPtr->export.name); + } + break; + case SMI_NODEKIND_TABLE: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_SCALAR: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_SCALAR_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_NOTIFICATION: + if ((parentPtr->export.nodekind != SMI_NODEKIND_NODE) && + (parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, ERR_NOTIFICATION_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + if (parserPtr && parentPtr->nodePtr->parentPtr && + parentPtr->nodePtr->parentPtr->lastObjectPtr) { + Object *parent2Ptr = parentPtr->nodePtr->parentPtr->lastObjectPtr; + if ((parent2Ptr->export.nodekind != SMI_NODEKIND_NODE) && + (parent2Ptr->export.nodekind != SMI_NODEKIND_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, + ERR_NOTIFICATION_PARENT_TYPE, + objectPtr->line, + objectPtr->export.name); + } + } + break; + case SMI_NODEKIND_NODE: + /* Node defined by OBJECT IDENTIFIER assignments can have + arbitrary parent node. */ + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE) && + (objectPtr->export.decl != SMI_DECL_VALUEASSIGNMENT)) { + smiPrintErrorAtLine(parserPtr, ERR_NODE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_GROUP: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_GROUP_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_COMPLIANCE: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_COMPLIANCE_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + case SMI_NODEKIND_CAPABILITIES: + if ((parentPtr->export.nodekind != SMI_NODEKIND_UNKNOWN) && + (parentPtr->export.nodekind != SMI_NODEKIND_NODE)) { + smiPrintErrorAtLine(parserPtr, ERR_CAPABILITIES_PARENT_TYPE, + objectPtr->line, objectPtr->export.name); + } + break; + } + } + + /* + * Check whether groups only contain scalars, columns and + * notifications. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_GROUP) { + smiCheckGroupMembers(parserPtr, objectPtr); + } + + /* + * Check whether compliance statements contain out of date + * groups or objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_COMPLIANCE) { + smiCheckComplianceStatus(parserPtr, objectPtr); + } + + /* + * Check whether notification statements contain useful + * objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_NOTIFICATION) { + smiCheckNotificationOid(parserPtr, modulePtr, objectPtr); + smiCheckNotificationMembers(parserPtr, objectPtr); + } + + if (modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * Check whether tables and rows are not accessible + * (RFC 2578 7.1.12). + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_TABLE + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parserPtr, ERR_TABLE_ACCESS, + objectPtr->line, objectPtr->export.name); + } + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW + && objectPtr->export.access != SMI_ACCESS_NOT_ACCESSIBLE) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_ACCESS, + objectPtr->line, objectPtr->export.name); + } + + /* + * Check whether counter objects are read-only or + * accessible-for-notify (RFC 2578, 7.1.6). + */ + if (((objectPtr->export.nodekind == SMI_NODEKIND_SCALAR) || + (objectPtr->export.nodekind == SMI_NODEKIND_COLUMN)) && + (objectPtr->export.access != SMI_ACCESS_NOTIFY) && + (objectPtr->export.access != SMI_ACCESS_READ_ONLY) && + (smiTypeDerivedFrom(objectPtr->typePtr, counterTypePtr) || + smiTypeDerivedFrom(objectPtr->typePtr, counter32TypePtr) || + smiTypeDerivedFrom(objectPtr->typePtr, counter64TypePtr))) { + smiPrintErrorAtLine(parserPtr, ERR_COUNTER_ACCESS, + objectPtr->line, objectPtr->export.name); + } + } + + /* + * Check whether a row's subid is 1, see RFC 2578 7.10 (1). + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW) { + int len; + + if (objectPtr->nodePtr->subid != 1) { + smiPrintErrorAtLine(parserPtr, ERR_ROW_SUBID_ONE, + objectPtr->line, objectPtr->export.name); + } + + len = strlen(objectPtr->export.name); + if (len < 6 || strcmp(objectPtr->export.name+len-5, "Entry")) { + smiPrintErrorAtLine(parserPtr, ERR_ROWNAME_ENTRY, + objectPtr->line, objectPtr->export.name); + } else { + + /* + * This misreports some cases where the table name + * does not have the "*Table" suffix. This is trying + * to allow Entry names of either fooTableEntry or + * fooEntry. + */ + if (parentPtr && + !(((int)strlen(parentPtr->export.name) == len || + (int)strlen(parentPtr->export.name) == len - 5) && + !strncmp(objectPtr->export.name, parentPtr->export.name, + len - 5))) { + smiPrintErrorAtLine(parserPtr, ERR_ROWNAME_TABLENAME, + objectPtr->line, + objectPtr->export.name, + parentPtr->export.name); + } + } + } + + /* + * Check whether a row's SEQUENCE contains exactly the list + * of child nodes (columns). An unknown SEQUENCE type + * is handled later. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW && + ((objectPtr->typePtr->flags & FLAG_INCOMPLETE) == 0)) { + List *p; + Node *seqNodePtr, *childNodePtr; + Object *colPtr; + int i; + + /* + * Walk through the SEQUENCE elements and find those + * that are misordered or have no matching columnar object. + */ + for (p = objectPtr->typePtr->listPtr, i = 1, + childNodePtr = objectPtr->nodePtr->firstChildPtr; + p && childNodePtr; + p = p->nextPtr, childNodePtr = childNodePtr->nextPtr, i++) { + seqNodePtr = ((Object *)p->ptr)->nodePtr; + + if (seqNodePtr->parentPtr != childNodePtr->parentPtr) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_NO_COLUMN, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + continue; + } + + if (seqNodePtr != childNodePtr) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_ORDER, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + break; + } + } + if ((p != NULL) && (childNodePtr == NULL)) { + smiPrintErrorAtLine(parserPtr, ERR_SEQUENCE_NO_COLUMN, + objectPtr->typePtr->line, + i, + ((Object *)p->ptr)->export.name, + objectPtr->export.name); + } + + /* + * Walk through all child objects and find those + * that were missing in the SEQUENCE. + */ + for (childNodePtr = objectPtr->nodePtr->firstChildPtr; + childNodePtr; childNodePtr = childNodePtr->nextPtr) { + colPtr = findObjectByModuleAndNode(modulePtr, childNodePtr); + if (!colPtr) continue; + for (p = objectPtr->typePtr->listPtr; p; p = p->nextPtr) { + if (((Object *)p->ptr)->nodePtr == colPtr->nodePtr) + break; + } + if (!p) { + if (colPtr->export.name) { + /* + * Don't complain, if it's an implcitly defined + * unnamed node (could happen for parent node of + * TRAP-TYPE definitions). + */ + smiPrintErrorAtLine(parserPtr, + ERR_SEQUENCE_MISSING_COLUMN, + objectPtr->typePtr->line, + objectPtr->typePtr->export.name, + colPtr->export.name); + } + } + } + + } + + if (objectPtr->export.nodekind == SMI_NODEKIND_TABLE) { + int len; + + len = strlen(objectPtr->export.name); + if (len < 6 || strcmp(objectPtr->export.name+len-5, "Table")) { + smiPrintErrorAtLine(parserPtr, ERR_TABLENAME_TABLE, + objectPtr->line, objectPtr->export.name); + } + } + + /* + * TODO: check whether the row is the only node below the + * table node + */ + + /* + * Check references to unknown identifiers. + */ + + if ((objectPtr->flags & FLAG_INCOMPLETE) && + (objectPtr->export.decl != SMI_DECL_IMPL_OBJECT)) { + if (objectPtr->export.name) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_OIDLABEL, + objectPtr->line, objectPtr->export.name); + } else { + smiPrintErrorAtLine(parserPtr, ERR_IMPLICIT_NODE, + objectPtr->line); + } + } + + /* + * Adjust the status of implicit type definitions. + */ + + if (objectPtr->typePtr + && (objectPtr->typePtr->export.decl == SMI_DECL_IMPLICIT_TYPE) + && (objectPtr->typePtr->export.status == SMI_STATUS_UNKNOWN)) { + objectPtr->typePtr->export.status = objectPtr->export.status; + } + + /* + * Link implicit type definition from refinements into + * the type derivation tree. Adjust the status of implicit + * type definitions in refinements. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_COMPLIANCE) { + + List *listPtr; + + for (listPtr = objectPtr->refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + + Refinement *refinementPtr; + Type *typePtr; + + refinementPtr = ((Refinement *)(listPtr->ptr)); + typePtr = refinementPtr->typePtr; + if (typePtr) { + if (typePtr->export.status == SMI_STATUS_UNKNOWN) { + typePtr->export.status = objectPtr->export.status; + } + } + + typePtr = refinementPtr->writetypePtr; + if (typePtr) { + if (typePtr->export.status == SMI_STATUS_UNKNOWN) { + typePtr->export.status = objectPtr->export.status; + } + } + + } + /* relocate the refinement type into the type tree */ + /* relocate the write refinement type into the type tree */ + } + + /* + * Set the oidlen/oid values that are not yet correct. + */ + + if (objectPtr->export.oidlen == 0) { + if (objectPtr->nodePtr->oidlen == 0) { + for (nodePtr = objectPtr->nodePtr, i = 1; + nodePtr->parentPtr != thisParserPtr->pendingNodePtr && + nodePtr->parentPtr != smiHandle->rootNodePtr && + nodePtr != nodePtr->parentPtr && + i <= 128; + nodePtr = nodePtr->parentPtr, i++); + if ((objectPtr->export.name) && + ((i > 128) || (nodePtr == nodePtr->parentPtr))) { + smiPrintErrorAtLine(parserPtr, ERR_OID_RECURSIVE, + objectPtr->line, + objectPtr->export.name); + } + objectPtr->nodePtr->oid = smiMalloc(i * sizeof(SmiSubid)); + objectPtr->nodePtr->oidlen = i; + for (nodePtr = objectPtr->nodePtr; i > 0; i--) { + objectPtr->nodePtr->oid[i-1] = nodePtr->subid; + nodePtr = nodePtr->parentPtr; + } + } + objectPtr->export.oidlen = objectPtr->nodePtr->oidlen; + objectPtr->export.oid = objectPtr->nodePtr->oid; + } + + if ((objectPtr->export.decl != SMI_DECL_UNKNOWN) + && (objectPtr->export.nodekind != SMI_NODEKIND_NODE) + && objectPtr->export.name + && objectPtr->export.oid[objectPtr->export.oidlen-1] == 0 + && objectPtr->export.oidlen != 2 && objectPtr->export.oid[0] != 0) { + smiPrintErrorAtLine(parserPtr, ERR_OID_ADMIN_ZERO, + objectPtr->line, + objectPtr->export.name); + } + + /* + * Check whether the module identity is registered in a well + * known controlled location. + */ + + if (objectPtr->export.decl == SMI_DECL_MODULEIDENTITY) { + smiCheckModuleIdentityRegistration(parserPtr, objectPtr); + } + + /* + * Check table linkage constraints for row objects. + */ + + if (objectPtr->export.nodekind == SMI_NODEKIND_ROW) { + switch (objectPtr->export.indexkind) { + case SMI_INDEX_INDEX: + smiCheckIndex(parserPtr, objectPtr); + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + smiCheckAugment(parserPtr, objectPtr); + break; + default: + break; + } + } + + /* + * Determine the longest common OID prefix of all nodes. + */ + + if (!modulePtr->prefixNodePtr) { + modulePtr->prefixNodePtr = objectPtr->nodePtr; + } else { + if (objectPtr->nodePtr->oidlen < modulePtr->prefixNodePtr->oidlen) { + Node *nodePtr = findNodeByOid(objectPtr->nodePtr->oidlen, + modulePtr->prefixNodePtr->oid); + if (nodePtr) + modulePtr->prefixNodePtr = nodePtr; + else + smiPrintError(parserPtr, ERR_OTHER_ERROR, + "Failed to create complete object tree - " + "expect incorrect output"); + } + for (i = 0; i < modulePtr->prefixNodePtr->oidlen; i++) { + if (modulePtr->prefixNodePtr->oid[i] != + objectPtr->nodePtr->oid[i]) { + modulePtr->prefixNodePtr = + findNodeByOid(i, modulePtr->prefixNodePtr->oid); + break; + } + } + } + } + + if (modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + /* + * Check whether all objects and notifications are contained in at + * least one conformance group (RFC 2580 3.3 and 4.1). + */ + + smiCheckGroupMembership(parserPtr, objectPtr); + } + } + + if (modulePtr->export.language == SMI_LANGUAGE_SPPI) { + Object *parentPtr; + + for (objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + /* + * All checks for SPPI constructs + */ + if (objectPtr->nodePtr->parentPtr) + parentPtr = objectPtr->nodePtr->parentPtr->lastObjectPtr; + else + parentPtr = NULL; + + /* + * Do all rows contain a PIB-INDEX/AUGMENTS/EXTENDS ? + * See RFC 3159 7.5, 7.7, 7.8 + */ + if (parentPtr && + (parentPtr->export.nodekind == SMI_NODEKIND_TABLE) && + (objectPtr->export.indexkind != SMI_INDEX_INDEX) && + (objectPtr->export.indexkind != SMI_INDEX_AUGMENT) && + (objectPtr->export.indexkind != SMI_INDEX_SPARSE)) + smiPrintErrorAtLine(parserPtr, ERR_ROW_LACKS_PIB_INDEX, + objectPtr->line); + + /* + * Does any non row contain a PIB-INDEX/AUGMENTS/EXTENDS ? + * See RFC 3159 7.5, 7.7, 7.8 + */ + if ((objectPtr->export.nodekind != SMI_NODEKIND_ROW) && + (objectPtr->export.indexkind != SMI_INDEX_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_INDEX_FOR_NON_ROW_TYPE, + objectPtr->line); + + /* + * Check the PIB-INDEX and other indices + */ + if ((objectPtr->export.nodekind == SMI_NODEKIND_ROW) && + (objectPtr->export.indexkind == SMI_INDEX_INDEX)) { + + /* + * Only the first element (PIB-INDEX) has to be an InstanceId. + * See RFC 3159 7.5 + */ + if (objectPtr->listPtr && objectPtr->listPtr->ptr) { + Object *pibindex = (Object *)objectPtr->listPtr->ptr; + if (pibindex->typePtr && pibindex->typePtr->export.name && + strcmp(pibindex->typePtr->export.name, "InstanceId")) + smiPrintErrorAtLine(thisParserPtr, ERR_PIB_INDEX_NOT_INSTANCEID, + pibindex->line, pibindex->export.name); + } + } + + /* + * Do all tables contain a PIB-ACCESS clause? + * See RFC 3159 7.3 + */ + if ((objectPtr->export.nodekind == SMI_NODEKIND_TABLE) && + (objectPtr->export.access == SMI_ACCESS_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_TABLE_LACKS_PIB_ACCESS, + objectPtr->line); + + /* + * Does any non table types contain a PIB-ACCESS clause? + * See RFC 3159 7.3 + */ + if (((objectPtr->export.nodekind == SMI_NODEKIND_NODE) || + (objectPtr->export.nodekind == SMI_NODEKIND_ROW) || + (objectPtr->export.nodekind == SMI_NODEKIND_SCALAR)) && + (objectPtr->export.access != SMI_ACCESS_UNKNOWN)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_ACCESS_FOR_NON_TABLE, + objectPtr->line); + + /* + * Check the UNIQUENESS clause and its entries + * See RFC 3159 7.9 + */ + if (objectPtr->uniquenessPtr) { + if (objectPtr->export.nodekind != SMI_NODEKIND_ROW) + smiPrintErrorAtLine(parserPtr, ERR_UNIQUENESS_FOR_NON_ROW, + objectPtr->line); + else + smiCheckUniqueness(parserPtr, objectPtr); + } + + /* + * Does the PIB-REFERENCES object point to a PRC (table)? + * See RFC 3159 7.10 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "ReferenceId") && + objectPtr->relatedPtr && + (objectPtr->relatedPtr->export.nodekind != SMI_NODEKIND_ROW)) + smiPrintErrorAtLine(parserPtr, ERR_PIB_REFERENCES_NOT_ROW, + objectPtr->line); + + /* + * Do all PIB-TAGs point to objects with a SYNTAX of TagId? + * See RFC 3159 7.12 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "TagReferenceId") && + objectPtr->relatedPtr && objectPtr->relatedPtr->typePtr && + objectPtr->relatedPtr->typePtr->export.name && + strcmp(objectPtr->relatedPtr->typePtr->export.name, "TagId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_TAG_TYPE, objectPtr->line); + + /* + * Is the attribute member of at least one compliance group? + * See RFC 3159 9.1 + */ + if (objectPtr->export.nodekind & SMI_NODEKIND_COLUMN) { + Object *group; + int found = 0; + + for (group = modulePtr->firstObjectPtr; group; + group = group->nextPtr) { + if ((group->export.nodekind == SMI_NODEKIND_GROUP) && + group->listPtr) { + List *l; + + for (l = group->listPtr; l; l = l->nextPtr) + if (((Object *)l->ptr)->export.name && + !strcmp(((Object *)l->ptr)->export.name, + objectPtr->export.name)) { + found = 1; + break; + } + } + if (found) + break; + } + if (!found) + smiPrintErrorAtLine(parserPtr, ERR_ATTRIBUTE_NOT_IN_GROUP, + objectPtr->line, objectPtr->export.name); + } + } + } +} + + + +static void +checkTypes(Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + + for (typePtr = modulePtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + + /* + * Check references to unknown types. + */ + + if ((typePtr->flags & FLAG_INCOMPLETE) + && typePtr->export.name + && (typePtr->export.decl == SMI_DECL_UNKNOWN)) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_TYPE, + typePtr->line, typePtr->export.name); + } + + /* + * Use TCs instead of type assignments in SMIv2. + */ + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2 + && typePtr->export.decl == SMI_DECL_TYPEASSIGNMENT + && typePtr->export.basetype != SMI_BASETYPE_UNKNOWN + && strcmp(thisModulePtr->export.name, "SNMPv2-SMI")) { + smiPrintErrorAtLine(parserPtr, ERR_SMIV2_TYPE_ASSIGNEMENT, + typePtr->line, typePtr->export.name); + } + + /* + * Check whether we have types that are not used in this + * module. + */ + + if ((typePtr->export.decl == SMI_DECL_TYPEDEF + || typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION) + && ! (typePtr->flags & FLAG_INSYNTAX)) { + static char *status[] = { "Unknown", "current", "deprecated", + "mandatory", "optional", "obsolete" }; + smiPrintErrorAtLine(parserPtr, ERR_TYPE_UNREF, + typePtr->line, + status[typePtr->export.status], + typePtr->export.name); + } + + /* + * Complain about TCs derived from other TCs (RFC 2579 3.5). + */ + + if (typePtr->parentPtr + && typePtr->export.decl == SMI_DECL_TEXTUALCONVENTION + && typePtr->export.decl == typePtr->parentPtr->export.decl) { + smiPrintErrorAtLine(parserPtr, ERR_SMIV2_NESTED_TEXTUAL_CONVENTION, + typePtr->line, + typePtr->export.name, + typePtr->parentPtr->export.name); + + if (typePtr->export.status < typePtr->parentPtr->export.status) { + if (typePtr->parentPtr->export.status == SMI_STATUS_DEPRECATED) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_DEPRECATED, + typePtr->line, + typePtr->parentPtr->export.name, + typePtr->export.name); + } + if (typePtr->parentPtr->export.status == SMI_STATUS_OBSOLETE) { + smiPrintErrorAtLine(parserPtr, ERR_TYPE_STATUS_OBSOLETE, + typePtr->line, + typePtr->parentPtr->export.name, + typePtr->export.name); + } + } + } + + smiCheckTypeFormat(parserPtr, typePtr); + smiCheckNamedNumberRedefinition(parserPtr, typePtr); + smiCheckNamedNumberSubtyping(parserPtr, typePtr); + } +} + + + +static void +adjustDefval(Parser *parserPtr, SmiValue *valuePtr, Type *typePtr, int line) +{ + Object *object2Ptr; + List *bitsListPtr, *valueListPtr, *p, *pp, *nextPtr, *listPtr; + Import *importPtr; + int nBits, bit; + + if (valuePtr->basetype == SMI_BASETYPE_UNKNOWN) + return; + + if (valuePtr->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + /* a len of -1 indicates an unresolved label in ptr */ + if (valuePtr->len == -1) { + object2Ptr = findObjectByModuleAndName(parserPtr->modulePtr, + (char *)valuePtr->value.ptr); + if (!object2Ptr) { + importPtr = findImportByName( + (char *)valuePtr->value.ptr, parserPtr->modulePtr); + if (importPtr) { /* imported object */ + importPtr->use++; + object2Ptr = findObjectByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (!object2Ptr) { + smiPrintErrorAtLine(parserPtr, ERR_UNKNOWN_OIDLABEL, + line, + (char *)valuePtr->value.ptr); + smiFree(valuePtr->value.ptr); + valuePtr->value.ptr = NULL; + valuePtr->basetype = SMI_BASETYPE_UNKNOWN; + } else { + smiFree(valuePtr->value.ptr); + valuePtr->len = object2Ptr->export.oidlen; + valuePtr->value.ptr = smiMalloc(object2Ptr->export.oidlen * + sizeof(SmiSubid)); + memcpy(valuePtr->value.ptr, + object2Ptr->export.oid, + object2Ptr->export.oidlen * sizeof(SmiSubid)); + } + } + } else if (valuePtr->basetype == SMI_BASETYPE_BITS) { + bitsListPtr = typePtr->listPtr; + valueListPtr = (void *)valuePtr->value.ptr; + for (nBits = 0, p = bitsListPtr; p; p = p->nextPtr) { + if (nBits < 1+((NamedNumber *)(p->ptr))->export.value.value.integer32) { + nBits = 1+((NamedNumber *)(p->ptr))->export.value.value.integer32; + } + } + valuePtr->value.ptr = smiMalloc((nBits+7)/8); + memset(valuePtr->value.ptr, 0, (nBits+7)/8); + valuePtr->len = (nBits+7)/8; + for (p = valueListPtr; p;) { + for (pp = bitsListPtr; pp; pp = pp->nextPtr) { + if (!strcmp(p->ptr, + ((NamedNumber *)(pp->ptr))->export.name)) { + bit = ((NamedNumber *)(pp->ptr))->export.value.value.integer32; + valuePtr->value.ptr[bit/8] |= + 1 << (7-(bit%8)); + } + } + smiFree(p->ptr); + nextPtr = p->nextPtr; + smiFree(p); + p = nextPtr; + } + } else if (valuePtr->basetype == SMI_BASETYPE_ENUM) { + /* a len of -1 indicates an unresolved enum label in ptr */ + if (valuePtr->len == -1) { + for (listPtr = typePtr->listPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (!strcmp(((NamedNumber *)(listPtr->ptr))->export.name, + (char *)valuePtr->value.ptr)) { + smiFree(valuePtr->value.ptr); + valuePtr->value.integer32 = + ((NamedNumber *)(listPtr->ptr))-> + export.value.value.integer32; + valuePtr->len = 1; + break; + } + } + } + } +} + + + +static void +checkDefvals(Parser *parserPtr, Module *modulePtr) +{ + Object *objectPtr; + + /* + * Check unknown identifiers in OID DEFVALs. + */ + + for(objectPtr = modulePtr->firstObjectPtr; + objectPtr; objectPtr = objectPtr->nextPtr) { + + adjustDefval(parserPtr, &objectPtr->export.value, + objectPtr->typePtr, objectPtr->line); + + if (objectPtr->export.value.len == -1) { + smiPrintErrorAtLine(parserPtr, + ERR_DEFVAL_SYNTAX, objectPtr->line); + } + + smiCheckDefault(parserPtr, objectPtr); + } +} + + + +static void +checkImportsUsage(Parser *parserPtr, Module *modulePtr) +{ + Import *importPtr; + + /* + * Check usage of all imported identifiers. + */ + + if (strcmp(modulePtr->export.name, "SNMPv2-TC") && + strcmp(modulePtr->export.name, "SNMPv2-CONF") && + strcmp(modulePtr->export.name, "RFC-1212") && + strcmp(modulePtr->export.name, "RFC-1215")) { + for(importPtr = modulePtr->firstImportPtr; + importPtr; importPtr = importPtr->nextPtr) { + if (! strcmp(importPtr->export.module, "SNMPv2-SMI")) { + if (! strcmp(importPtr->export.name, "ExtUTCTime") + || !strcmp(importPtr->export.name, "ObjectName") + || !strcmp(importPtr->export.name, "NotificationName")) { + smiPrintErrorAtLine(parserPtr, ERR_ILLEGAL_IMPORT, + importPtr->line, + importPtr->export.name, + importPtr->export.module); + } + } + /* checkImports() handles KIND_NOTFOUND */ + if (importPtr->use == 0 && importPtr->kind != KIND_NOTFOUND) { + smiPrintErrorAtLine(parserPtr, ERR_UNUSED_IMPORT, + importPtr->line, + importPtr->export.name, + importPtr->export.module); + } + + if (modulePtr->export.language == SMI_LANGUAGE_SMIV2) { + int j; + for (j = 0; convertImportv2[j]; j += 4) { + if ((strcmp(convertImportv2[j], + importPtr->export.module) == 0) + && (strcmp(convertImportv2[j+1], + importPtr->export.name) == 0)) { + smiPrintErrorAtLine(parserPtr, + ERR_OBSOLETE_IMPORT, + importPtr->line, + importPtr->export.name, + convertImportv2[j+2], + importPtr->export.module); + } + } + } + } + } +} + + + +static time_t +checkDate(Parser *parserPtr, char *date) +{ + struct tm tm; + time_t anytime; + int i, len; + char *p; + + memset(&tm, 0, sizeof(tm)); + anytime = 0; + + len = strlen(date); + if (len == 11 || len == 13) { + for (i = 0; i < len; i++) { + if ( (i < len-1 && ! isdigit((int) date[i])) + || (i == len-1 && date[len-1] != 'Z')) { + smiPrintError(parserPtr, ERR_DATE_CHARACTER, date); + anytime = (time_t) -1; + break; + } + } + } else { + smiPrintError(parserPtr, ERR_DATE_LENGTH, date); + anytime = (time_t) -1; + } + + if (anytime == 0) { + for (i = 0, p = date, tm.tm_year = 0; + i < ((len == 11) ? 2 : 4); i++, p++) { + tm.tm_year = tm.tm_year * 10 + (*p - '0'); + } + if (len == 11) { + tm.tm_year += 1900; + if (tm.tm_year < 1990) + smiPrintError(parserPtr, ERR_DATE_YEAR_2DIGITS, + date, tm.tm_year); + } + tm.tm_mon = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_mday = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_hour = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + tm.tm_min = (p[0]-'0') * 10 + (p[1]-'0'); + + if (tm.tm_mon < 1 || tm.tm_mon > 12) { + smiPrintError(parserPtr, ERR_DATE_MONTH, date); + } + if (tm.tm_mday < 1 || tm.tm_mday > 31) { + smiPrintError(parserPtr, ERR_DATE_DAY, date); + } + if (tm.tm_hour < 0 || tm.tm_hour > 23) { + smiPrintError(parserPtr, ERR_DATE_HOUR, date); + } + if (tm.tm_min < 0 || tm.tm_min > 59) { + smiPrintError(parserPtr, ERR_DATE_MINUTES, date); + } + + tm.tm_year -= 1900; + tm.tm_mon -= 1; + tm.tm_isdst = 0; + + anytime = timegm(&tm); + + if (anytime == (time_t) -1) { + smiPrintError(parserPtr, ERR_DATE_VALUE, date); + } else { + if (anytime < SMI_EPOCH) { + smiPrintError(parserPtr, ERR_DATE_IN_PAST, date); + } + if (anytime > time(NULL)) { + smiPrintError(parserPtr, ERR_DATE_IN_FUTURE, date); + } + } + } + + return (anytime == (time_t) -1) ? 0 : anytime; +} + +%} + +/* + * The grammars start symbol. + */ +%start mibFile + + + +/* + * We call the parser from within the parser when IMPORTing modules, + * hence we need reentrant parser code. This is a bison feature. + */ +%pure_parser + + + +/* + * The attributes. + */ +%union { + char *text; /* scanned quoted text */ + char *id; /* identifier name */ + int err; /* actually just a dummy */ + time_t date; /* a date value */ + Object *objectPtr; /* object identifier */ + SmiStatus status; /* a STATUS value */ + SmiAccess access; /* an ACCESS value */ + Type *typePtr; + List *listPtr; /* SEQUENCE and INDEX lists */ + NamedNumber *namedNumberPtr; /* BITS or enum item */ + Range *rangePtr; /* type restricting range */ + SmiValue *valuePtr; + SmiUnsigned32 unsigned32; /* */ + SmiInteger32 integer32; /* */ + SmiUnsigned64 unsigned64; /* */ + SmiInteger64 integer64; /* */ + struct Compl compl; + struct Index index; + Module *modulePtr; + SubjectCategories *subjectCategoriesPtr; +} + + + +/* + * Tokens and their attributes. + */ +%token DOT_DOT +%token COLON_COLON_EQUAL + +%token UPPERCASE_IDENTIFIER +%token LOWERCASE_IDENTIFIER +%token NUMBER +%token NEGATIVENUMBER +%token NUMBER64 +%token NEGATIVENUMBER64 +%token BIN_STRING +%token HEX_STRING +%token QUOTED_STRING + +%token ACCESS +%token AGENT_CAPABILITIES +%token APPLICATION +%token AUGMENTS +%token BEGIN_ +%token BITS +%token CHOICE +%token CONTACT_INFO +%token CREATION_REQUIRES +%token COUNTER32 +%token COUNTER64 +%token DEFINITIONS +%token DEFVAL +%token DESCRIPTION +%token DISPLAY_HINT +%token END +%token ENTERPRISE +%token EXPORTS +%token EXTENDS +%token FROM +%token GROUP +%token GAUGE32 +%token IDENTIFIER +%token IMPLICIT +%token IMPLIED +%token IMPORTS +%token INCLUDES +%token INDEX +%token INSTALL_ERRORS +%token INTEGER +%token INTEGER32 +%token INTEGER64 +%token IPADDRESS +%token LAST_UPDATED +%token MACRO +%token MANDATORY_GROUPS +%token MAX_ACCESS +%token MIN_ACCESS +%token MODULE +%token MODULE_COMPLIANCE +%token MODULE_IDENTITY +%token NOT_ACCESSIBLE +%token NOTIFICATIONS +%token NOTIFICATION_GROUP +%token NOTIFICATION_TYPE +%token OBJECT +%token OBJECT_GROUP +%token OBJECT_IDENTITY +%token OBJECT_TYPE +%token OBJECTS +%token OCTET +%token OF +%token ORGANIZATION +%token OPAQUE +%token PIB_ACCESS +%token PIB_DEFINITIONS +%token PIB_INDEX +%token PIB_MIN_ACCESS +%token PIB_REFERENCES +%token PIB_TAG +%token POLICY_ACCESS +%token PRODUCT_RELEASE +%token REFERENCE +%token REVISION +%token SEQUENCE +%token SIZE +%token STATUS +%token STRING +%token SUBJECT_CATEGORIES +%token SUPPORTS +%token SYNTAX +%token TEXTUAL_CONVENTION +%token TIMETICKS +%token TRAP_TYPE +%token UNIQUENESS +%token UNITS +%token UNIVERSAL +%token UNSIGNED32 +%token UNSIGNED64 +%token VALUE +%token VARIABLES +%token VARIATION +%token WRITE_SYNTAX + + + +/* + * Types of non-terminal symbols. + */ +%type mibFile +%type modules +%type module +%type moduleOid +%type moduleName +%type importIdentifier +%type importIdentifiers +%type importedKeyword +%type importedSMIKeyword +%type importedSPPIKeyword +%type linkagePart +%type linkageClause +%type importPart +%type imports +%type declarationPart +%type declarations +%type declaration +%type exportsClause +%type macroClause +%type macroName +%type choiceClause +%type typeName +%type typeSMI +%type typeSMIonly +%type typeSMIandSPPI +%type typeSPPIonly +%type typeTag +%type fuzzy_lowercase_identifier +%type valueDeclaration +%type conceptualTable +%type row +%type entryType +%type sequenceItems +%type sequenceItem +%type Syntax +%type sequenceSyntax +%type NamedBits +%type NamedBit +%type objectIdentityClause +%type objectTypeClause +%type trapTypeClause +%type descriptionClause +%type VarPart +%type VarTypes +%type VarType +%type DescrPart +%type MaxAccessPart +%type MaxOrPIBAccessPart +%type PibAccessPart +%type notificationTypeClause +%type moduleIdentityClause +%type typeDeclaration +%type typeDeclarationRHS +%type ObjectSyntax +%type sequenceObjectSyntax +%type valueofObjectSyntax +%type SimpleSyntax +%type valueofSimpleSyntax +%type sequenceSimpleSyntax +%type ApplicationSyntax +%type sequenceApplicationSyntax +%type anySubType +%type integerSubType +%type octetStringSubType +%type ranges +%type range +%type value +%type enumSpec +%type enumItems +%type enumItem +%type enumNumber +%type Status +%type Status_Capabilities +%type DisplayPart +%type UnitsPart +%type Access +%type IndexPart +%type MibIndex +%type IndexTypes +%type IndexType +%type Index +%type Entry +%type DefValPart +%type Value +%type BitsValue +%type BitNames +%type ObjectName +%type NotificationName +%type ReferPart +%type RevisionPart +%type Revisions +%type Revision +%type NotificationObjectsPart +%type ObjectGroupObjectsPart +%type Objects +%type Object +%type NotificationsPart +%type Notifications +%type Notification +%type Text +%type ExtUTCTime +%type objectIdentifier +%type subidentifiers +%type subidentifier +%type objectIdentifier_defval +%type subidentifiers_defval +%type subidentifier_defval +%type objectGroupClause +%type notificationGroupClause +%type moduleComplianceClause +%type ComplianceModulePart +%type ComplianceModules +%type ComplianceModule +%type ComplianceModuleName +%type MandatoryPart +%type MandatoryGroups +%type MandatoryGroup +%type CompliancePart +%type Compliances +%type Compliance +%type ComplianceGroup +%type ComplianceObject +%type SyntaxPart +%type WriteSyntaxPart +%type WriteSyntax +%type AccessPart +%type agentCapabilitiesClause +%type ModulePart_Capabilities +%type Modules_Capabilities +%type Module_Capabilities +%type ModuleName_Capabilities +%type CapabilitiesGroups +%type CapabilitiesGroup +%type VariationPart +%type Variations +%type Variation +%type VariationAccessPart +%type VariationAccess +%type CreationPart +%type Cells +%type Cell +%type SPPIPibReferencesPart +%type SPPIPibTagPart +%type SubjectCategoriesPart +%type SubjectCategories +%type CategoryIDs +%type CategoryID +%type UniqueType +%type UniqueTypes +%type UniqueTypesPart +%type SPPIUniquePart +%type Error +%type Errors +%type SPPIErrorsPart + +%% + +/* + * Yacc rules. + * + */ + + +/* + * One mibFile may contain multiple MIB modules. + * It's also possible that there's no module in a file. + */ +mibFile: + modules + { + $$ = 0; + } +| /* empty */ + { + $$ = 0; + } +; + +modules: module + { $$ = 0; } + | modules module + { $$ = 0; } + ; + +/* + * The general structure of a module is described at REF:RFC1902,3. . + * An example is given at REF:RFC1902,5.7. . + */ +module: moduleName + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + thisParserPtr->modulePtr = findModuleByName($1); + if (!thisParserPtr->modulePtr) { + thisParserPtr->modulePtr = + addModule($1, + smiStrdup(thisParserPtr->path), + 0, + thisParserPtr); + thisParserPtr->modulePtr-> + numImportedIdentifiers = 0; + thisParserPtr->modulePtr-> + numStatements = 0; + thisParserPtr->modulePtr-> + numModuleIdentities = 0; + if (!strcmp($1, "SNMPv2-SMI")) { + /* + * SNMPv2-SMI is an SMIv2 module + * that cannot be identified by + * importing from SNMPv2-SMI. + */ + thisModulePtr->export.language = + SMI_LANGUAGE_SMIV2; + } + } else { + smiPrintError(thisParserPtr, + ERR_MODULE_ALREADY_LOADED, + $1); + /* + * this aborts parsing the whole file, + * not only the current module. + */ + YYABORT; + } + } + moduleOid + definitions + COLON_COLON_EQUAL BEGIN_ + exportsClause + linkagePart + declarationPart + END + { + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV1; + checkModuleName(thisParserPtr, thisModulePtr); + checkModuleIdentity(thisParserPtr, thisModulePtr); + checkObjects(thisParserPtr, thisModulePtr); + checkTypes(thisParserPtr, thisModulePtr); + checkDefvals(thisParserPtr, thisModulePtr); + checkImportsUsage(thisParserPtr, thisModulePtr); + smiCheckTypeUsage(thisParserPtr, thisModulePtr); + + thisParserPtr->capabilitiesModulePtr = NULL; + + $$ = 0; + } + ; + +moduleOid: '{' objectIdentifier '}' + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +definitions: DEFINITIONS + { } + | PIB_DEFINITIONS + { + thisModulePtr->export.language = SMI_LANGUAGE_SPPI; + } + ; + +/* + * REF:RFC1902,3.2. + */ +linkagePart: linkageClause + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +linkageClause: IMPORTS importPart ';' + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + if ((thisModulePtr->export.language != SMI_LANGUAGE_SMIV2) && + (thisModulePtr->export.language != SMI_LANGUAGE_SPPI)) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV1; + + $$ = 0; + } + + ; + +exportsClause: /* empty */ + { $$ = 0; } + | EXPORTS + { + if (thisParserPtr->modulePtr->export.language == + SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "EXPORTS"); + + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULE; + + if (strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI")) { + smiPrintError(thisParserPtr, ERR_EXPORTS); + } + } + /* the scanner skips until... */ + ';' + { $$ = 0; } + ; + +importPart: imports + { $$ = 0; } + | /* empty */ + { $$ = 0; } + /* TODO: ``IMPORTS ;'' allowed? refer ASN.1! */ + ; + +imports: import + { $$ = 0; } + | imports import + { $$ = 0; } + ; + +import: importIdentifiers FROM moduleName + /* TODO: multiple clauses with same moduleName + * allowed? I guess so. refer ASN.1! */ + { + Import *importPtr; + Module *modulePtr; + + /* + * Recursively call the parser to suffer + * the IMPORTS, if the module is not yet + * loaded. + */ + modulePtr = findModuleByName($3); + if (!modulePtr) { + modulePtr = loadModule($3, thisParserPtr); + } + checkImports(modulePtr, thisParserPtr); + + if (modulePtr && !strcmp($3, "SNMPv2-SMI")) { + /* + * A module that imports a macro or + * type definition from SNMPv2-SMI + * seems to be SMIv2 style - but only if + * it is not SPPI yet. + */ + if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + for (importPtr = + thisModulePtr->firstImportPtr; + importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importPtr->export.module, + $3)) && + ((importPtr->kind == KIND_MACRO) || + (importPtr->kind == KIND_TYPE))) { + thisModulePtr->export.language = + SMI_LANGUAGE_SMIV2; + } + } + } + } + + smiFree($3); + } + ; + +importIdentifiers: importIdentifier + { $$ = 0; } + | importIdentifiers ',' importIdentifier + /* TODO: might this list list be empty? */ + { $$ = 0; } + ; + +/* + * Note that some named types must not be imported, REF:RFC1902,590 . + */ +importIdentifier: LOWERCASE_IDENTIFIER + { + addImport($1, thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + $$ = 0; + } + | UPPERCASE_IDENTIFIER + { + addImport($1, thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + $$ = 0; + } + | importedKeyword + { + addImport(smiStrdup($1), thisParserPtr); + thisParserPtr->modulePtr->numImportedIdentifiers++; + $$ = 0; + } + ; + +/* + * These keywords are no real keywords. They have to be imported + * from the SMI, TC, CONF MIBs. + */ +/* + * TODO: Think! Shall we really leave these words as keywords or should + * we prefer the symbol table appropriately?? + */ +importedKeyword: importedSMIKeyword + { + /* + * There are PIBs that import e.g. Counter64 - so + * don't complain here about SMI keywords. + */ + /* if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, $1);*/ + $$ = $1; + } + | importedSPPIKeyword + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_TYPE_IN_MIB, $1); + $$ = $1; + } + | BITS + | INTEGER32 + | IPADDRESS + | MANDATORY_GROUPS + | MODULE_COMPLIANCE + | MODULE_IDENTITY + | OBJECT_GROUP + | OBJECT_IDENTITY + | OBJECT_TYPE + | OPAQUE + | TEXTUAL_CONVENTION + | TIMETICKS + | UNSIGNED32 + ; + +importedSMIKeyword: AGENT_CAPABILITIES + | COUNTER32 + | COUNTER64 + | GAUGE32 + | NOTIFICATION_GROUP + | NOTIFICATION_TYPE + | TRAP_TYPE + ; + +importedSPPIKeyword: INTEGER64 + | UNSIGNED64 + ; + +moduleName: UPPERCASE_IDENTIFIER + { + checkNameLen(thisParserPtr, $1, + ERR_MODULENAME_32, ERR_MODULENAME_64); + $$ = $1; + } + ; + +/* + * The paragraph at REF:RFC1902,490 lists roughly what's allowed + * in the body of an information module. + */ +declarationPart: declarations + { $$ = 0; } + | /* empty */ + { $$ = 0; } + /* TODO: might this list really be emtpy? */ + ; + +declarations: declaration + { $$ = 0; } + | declarations declaration + { $$ = 0; } + ; + +declaration: typeDeclaration + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | valueDeclaration + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | objectIdentityClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | objectTypeClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | trapTypeClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | notificationTypeClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | moduleIdentityClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | moduleComplianceClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | objectGroupClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | notificationGroupClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | agentCapabilitiesClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | macroClause + { + thisParserPtr->modulePtr->numStatements++; + $$ = 0; + } + | error '}' + { + smiPrintError(thisParserPtr, + ERR_FLUSH_DECLARATION); + yyerrok; + $$ = 1; + } + ; + +/* + * Macro clauses. Its contents are not really parsed, but skipped by + * the scanner until 'END' is read. This is just to make the SMI + * documents readable. + */ +macroClause: macroName + { + Macro *macroPtr; + + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MACRO; + + macroPtr = addMacro(smiStrdup($1), + 0, thisParserPtr); + setMacroLine(macroPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + } + MACRO + { + /* + * ASN.1 macros are known to be in these + * modules. + */ + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1215") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI-TC")) { + smiPrintError(thisParserPtr, ERR_MACRO); + } + } + /* the scanner skips until... */ + END + { + $$ = 0; + } + ; + +macroName: MODULE_IDENTITY { $$ = $1; } + | OBJECT_TYPE { $$ = $1; } + | TRAP_TYPE { $$ = $1; } + | NOTIFICATION_TYPE { $$ = $1; } + | OBJECT_IDENTITY { $$ = $1; } + | TEXTUAL_CONVENTION { $$ = $1; } + | OBJECT_GROUP { $$ = $1; } + | NOTIFICATION_GROUP { $$ = $1; } + | MODULE_COMPLIANCE { $$ = $1; } + | AGENT_CAPABILITIES { $$ = $1; } + ; + +choiceClause: CHOICE + { + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_CHOICE); + } + } + /* the scanner skips until... */ + '}' + { + $$ = addType(NULL, SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + } + ; + +/* + * The only ASN.1 value declarations are for OIDs, REF:RFC1902,491 . + */ +fuzzy_lowercase_identifier: LOWERCASE_IDENTIFIER + { + $$ = $1; + } + | + UPPERCASE_IDENTIFIER + { + smiPrintError (thisParserPtr, + ERR_BAD_LOWER_IDENTIFIER_CASE, + $1); + /* xxx + if ((thisParserPtr->flags & SMI_FLAG_BE_LAX) == 0) { + YYERROR; + } + */ + $$ = $1; + } + ; + +/* valueDeclaration: LOWERCASE_IDENTIFIER */ +valueDeclaration: fuzzy_lowercase_identifier + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_VALUEASSIGNMENT; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr($1, '-') && + (strcmp($1, "mib-2") || + strcmp(thisModulePtr->export.name, "SNMPv2-SMI"))) { + smiPrintError(thisParserPtr, + ERR_OIDNAME_INCLUDES_HYPHEN, + $1); + } + } + } + OBJECT IDENTIFIER + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $7; + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_VALUEASSIGNMENT); + $$ = 0; + } + ; + +/* + * This is for simple ASN.1 style type assignments and textual conventions. + */ +typeDeclaration: typeName + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_TYPEASSIGNMENT; + + checkNameLen(thisParserPtr, $1, + ERR_TYPENAME_32, ERR_TYPENAME_64); + } + COLON_COLON_EQUAL typeDeclarationRHS + { + Type *typePtr; + + if (strlen($1)) { + if ($4->export.basetype != SMI_BASETYPE_UNKNOWN) { + smiCheckTypeName(thisParserPtr, + thisModulePtr, $1, + thisParserPtr->firstStatementLine); + } + setTypeLine($4, thisParserPtr->firstStatementLine, + thisParserPtr); + setTypeName($4, $1); + $$ = 0; + } else { + $$ = 0; + } + + /* + * If we are in an SMI module, some type + * definitions derived from ASN.1 `INTEGER' + * must be modified to libsmi basetypes. + */ + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "SNMPv2-SMI"))) { + if (!strcmp($1, "Counter32")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Gauge32")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Unsigned32")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "TimeTicks")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Counter64")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED64; + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned64 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + } + setTypeParent($4, smiHandle->typeUnsigned64Ptr); + } + } + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "RFC1155-SMI") || + !strcmp(thisModulePtr->export.name, "RFC1065-SMI"))) { + if (!strcmp($1, "Counter")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Gauge")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "TimeTicks")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "NetworkAddress")) { + setTypeName($4, smiStrdup("NetworkAddress")); + $4->export.basetype = SMI_BASETYPE_OCTETSTRING; + setTypeParent($4, findTypeByModuleAndName( + thisModulePtr, + "IpAddress")); + } else if (!strcmp($1, "IpAddress")) { + typePtr = findTypeByModuleAndName( + thisModulePtr, "NetworkAddress"); + if (typePtr) + setTypeParent(typePtr, $4); + } + } + if (thisModulePtr && + (!strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) { + if (!strcmp($1, "Unsigned32")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "TimeTicks")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED32; + setTypeParent($4, smiHandle->typeUnsigned32Ptr); + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned32 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED32; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned32 = 4294967295U; + } + } else if (!strcmp($1, "Unsigned64")) { + $4->export.basetype = SMI_BASETYPE_UNSIGNED64; + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)$4->listPtr->ptr)->export.minValue.value.unsigned64 = 0; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_UNSIGNED64; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + } + setTypeParent($4, smiHandle->typeUnsigned64Ptr); + } else if (!strcmp($1, "Integer64")) { + $4->export.basetype = SMI_BASETYPE_INTEGER64; + if ($4->listPtr) { + ((Range *)$4->listPtr->ptr)->export.minValue.basetype = SMI_BASETYPE_INTEGER64; + ((Range *)$4->listPtr->ptr)->export.minValue.value.integer64 = SMI_BASETYPE_INTEGER64_MIN; + ((Range *)$4->listPtr->ptr)->export.maxValue.basetype = SMI_BASETYPE_INTEGER64; + ((Range *)$4->listPtr->ptr)->export.maxValue.value.integer64 = SMI_BASETYPE_INTEGER64_MAX; + } + setTypeParent($4, smiHandle->typeInteger64Ptr); + } + } + } + ; + +typeName: UPPERCASE_IDENTIFIER + { + $$ = $1; + } + | typeSMI + { + $$ = smiStrdup($1); + /* + * well known types (keywords in this grammar) + * are known to be defined in these modules. + */ + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_TYPE_SMI_OR_SPPI, $1); + } + } + | typeSPPIonly + { + $$ = smiStrdup($1); + /* + * well known types (keywords in this grammar) + * are known to be defined in these modules. + */ + if ((strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) && + (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI)) + smiPrintError(thisParserPtr, ERR_TYPE_SPPI, $1); + } + ; + +typeSMI: typeSMIandSPPI + | typeSMIonly + { + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName($1, thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, $1); + $$ = $1; + } + ; + +typeSMIandSPPI: IPADDRESS + | TIMETICKS + | OPAQUE + | INTEGER32 + | UNSIGNED32 + ; + +typeSMIonly: COUNTER32 + | GAUGE32 + | COUNTER64 + ; + +typeSPPIonly: INTEGER64 + | UNSIGNED64 + ; + +typeDeclarationRHS: Syntax + { + if ($1->export.name) { + /* + * If we found an already defined type, + * we have to inherit a new type structure. + * (Otherwise the `Syntax' rule created + * a new type for us.) + */ + $$ = duplicateType($1, 0, thisParserPtr); + setTypeDecl($$, SMI_DECL_TYPEASSIGNMENT); + } else { + $$ = $1; + setTypeDecl($$, SMI_DECL_TYPEASSIGNMENT); + } + } + | TEXTUAL_CONVENTION + { + Import *importPtr; + + thisParserPtr->currentDecl = SMI_DECL_TEXTUALCONVENTION; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + if (strcmp(thisModulePtr->export.name, "SNMPv2-TC")) { + importPtr = + findImportByName("TEXTUAL-CONVENTION", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TEXTUAL-CONVENTION", + "SNMPv2-TC"); + else + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TEXTUAL-CONVENTION", + "COPS-PR-SPPI"); + } + } + } + DisplayPart + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $7); + } + ReferPart + SYNTAX Syntax + { + if (($11) && !($11->export.name)) { + /* + * If the Type we found has just been + * defined, we don't have to allocate + * a new one. + */ + $$ = $11; + } else { + if (!($11)) + smiPrintError(thisParserPtr, ERR_INTERNAL); + /* + * Otherwise, we have to allocate a + * new Type struct, inherited from $10. + */ + $$ = duplicateType($11, 0, thisParserPtr); + } + setTypeDescription($$, $7, thisParserPtr); + if ($9) { + setTypeReference($$, $9, thisParserPtr); + } + setTypeStatus($$, $5); + if ($3) { + if (smiCheckFormat(thisParserPtr, + $$->export.basetype, $3, + thisParserPtr->firstStatementLine)) { + setTypeFormat($$, $3); + } + } + setTypeDecl($$, SMI_DECL_TEXTUALCONVENTION); + } + | choiceClause + { + $$ = $1; + setTypeDecl($$, SMI_DECL_TYPEASSIGNMENT); + } + ; + +/* REF:RFC1902,7.1.12. */ +conceptualTable: SEQUENCE OF row + { + if ($3) { + $$ = addType(NULL, + SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + setTypeDecl($$, SMI_DECL_IMPL_SEQUENCEOF); + setTypeParent($$, $3); + } else { + $$ = NULL; + } + } + ; + +row: UPPERCASE_IDENTIFIER + /* + * In this case, we do NOT allow `Module.Type'. + * The identifier must be defined in the local + * module. + */ + { + Type *typePtr; + Import *importPtr; + + $$ = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, $1); + if (! $$) { + importPtr = findImportByName($1, + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + typePtr = addType($1, + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = typePtr; + } else { + /* + * imported type. + * TODO: is this allowed in a SEQUENCE? + */ + importPtr->use++; + $$ = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + smiFree($1); + } + } else { + smiFree($1); + } + } + /* TODO: this must be an entryType */ + ; + +/* REF:RFC1902,7.1.12. */ +entryType: SEQUENCE '{' sequenceItems '}' + { + $$ = addType(NULL, SMI_BASETYPE_UNKNOWN, 0, + thisParserPtr); + setTypeList($$, $3); + } +; + +sequenceItems: sequenceItem + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | sequenceItems ',' sequenceItem + /* TODO: might this list be emtpy? */ + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +/* + * In a SEQUENCE { ... } there are no sub-types, enumerations or + * named bits. REF: draft, p.29 + * NOTE: REF:RFC1902,7.1.12. was less clear, it said: + * `normally omitting the sub-typing information' + */ +sequenceItem: LOWERCASE_IDENTIFIER sequenceSyntax + { + Object *objectPtr; + Import *importPtr; + Type *typePtr; + + objectPtr = + findObjectByModuleAndName(thisParserPtr->modulePtr, + $1); + + if (!objectPtr) { + importPtr = findImportByName($1, + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + objectPtr = addObject($1, thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE | + FLAG_SEQTYPE, + thisParserPtr); + setObjectType(objectPtr, $2); + } else { + /* + * imported object. + */ + importPtr->use++; + objectPtr = findObjectByModulenameAndName( + importPtr->export.module, $1); + smiFree($1); + + if (objectPtr->typePtr->export.name) { + typePtr = objectPtr->typePtr; + } else { + typePtr = objectPtr->typePtr->parentPtr; + } + if (($2 != typePtr) && + (($2->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + (($2->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + } + } else { + smiFree($1); + if (objectPtr->typePtr) { + + if (objectPtr->typePtr->export.name) { + typePtr = objectPtr->typePtr; + } else { + typePtr = objectPtr->typePtr->parentPtr; + } + if (($2 != typePtr) && + (($2->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + (($2->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + + } else { + setObjectType(objectPtr, $2); + addObjectFlags(objectPtr, + FLAG_SEQTYPE); + } + } + + $$ = objectPtr; + } + ; + +Syntax: ObjectSyntax + { + $$ = $1; + if ($$) + defaultBasetype = $$->export.basetype; + } + | BITS '{' NamedBits '}' + /* TODO: standalone `BITS' ok? seen in RMON2-MIB */ + /* -> no, it's only allowed in a SEQUENCE {...} */ + { + Type *typePtr; + List *p; + + defaultBasetype = SMI_BASETYPE_BITS; + typePtr = addType(NULL, SMI_BASETYPE_BITS, + FLAG_INCOMPLETE, + thisParserPtr); + setTypeDecl(typePtr, SMI_DECL_IMPLICIT_TYPE); + setTypeParent(typePtr, smiHandle->typeBitsPtr); + setTypeList(typePtr, $3); + for (p = $3; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = typePtr; + smiCheckNamedNumbersOrder(parserPtr, typePtr); + $$ = typePtr; + } + ; + +sequenceSyntax: /* ObjectSyntax */ + sequenceObjectSyntax + { + $$ = $1; + } + | BITS + { + /* TODO: */ + $$ = smiHandle->typeOctetStringPtr; + } + | UPPERCASE_IDENTIFIER anySubType + { + Type *typePtr; + Import *importPtr; + + $$ = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, $1); + if (! $$) { + importPtr = findImportByName($1, + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + typePtr = addType($1, SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = typePtr; + } else { + importPtr->use++; + $$ = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + smiFree($1); + } + } else { + smiFree($1); + } + } + ; + +NamedBits: NamedBit + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | NamedBits ',' NamedBit + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +NamedBit: LOWERCASE_IDENTIFIER + { + checkNameLen(thisParserPtr, $1, + ERR_BITNAME_32, ERR_BITNAME_64); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr($1, '-')) { + smiPrintError(thisParserPtr, + ERR_NAMEDBIT_INCLUDES_HYPHEN, + $1); + } + } + } + '(' NUMBER ')' + { + $$ = smiMalloc(sizeof(NamedNumber)); + $$->export.name = $1; + $$->export.value.basetype = + SMI_BASETYPE_UNSIGNED32; + $$->export.value.value.unsigned32 = $4; + /* RFC 2578 7.1.4 */ + if ($4 >= 65535*8) { + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_TOO_LARGE, + $1, $4); + } else { + if ($4 >= 128) { + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_LARGE, + $1, $4); + } + } + } + ; + +objectIdentityClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTIDENTITY; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + OBJECT_IDENTITY + { + Import *importPtr; + + if (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI")) { + importPtr = findImportByName("OBJECT-IDENTITY", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-IDENTITY", + "SNMPv2-SMI"); + else + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-IDENTITY", + "COPS-PR-SPPI"); + } + } + } + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $8); + } + ReferPart + COLON_COLON_EQUAL + '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $13; + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTIDENTITY); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectStatus(objectPtr, $6); + setObjectDescription(objectPtr, $8, thisParserPtr); + if ($10) { + setObjectReference(objectPtr, $10, thisParserPtr); + } + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + $$ = 0; + } + ; + +objectTypeClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTTYPE; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + OBJECT_TYPE + { + Import *importPtr; + + importPtr = findImportByName("OBJECT-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "SNMPv2-SMI"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "COPS-PR-SPPI"); + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-TYPE", "RFC-1212"); + } + } + indexFlag = 0; + } + SYNTAX Syntax /* old $6, new $6 */ + UnitsPart /* old $7, new $7 */ + MaxOrPIBAccessPart /* old $8, new $8 */ + SPPIPibReferencesPart /* SPPI only, $9 */ + SPPIPibTagPart /* SPPI only, $10 */ + STATUS Status /* old $9 $10, new $11 $12 */ + descriptionClause /* old $11, new $13 */ + SPPIErrorsPart /* SPPI only, $14 */ + ReferPart /* old $12, new $15 */ + IndexPart /* modified, old $13, new $16 */ + MibIndex /* new, $17 */ + SPPIUniquePart /* SPPI only, $18 */ + DefValPart /* old $14, new $19 */ + COLON_COLON_EQUAL '{' ObjectName '}' /* old $17, new $22 */ + { + Object *objectPtr, *parentPtr; + Type *typePtr = NULL; + + objectPtr = $22; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + if (checkObjectFlags(objectPtr, FLAG_SEQTYPE)) { + deleteObjectFlags(objectPtr, FLAG_SEQTYPE); + if ($6) { + if ($6->export.name) { + typePtr = $6; + /* + * According to RFC 3159 7.1.3. Opaque must not be used + * in a SYNTAX clause. + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + !strcmp(typePtr->export.name, "Opaque")) + smiPrintError(thisParserPtr, ERR_OPAQUE_IN_SYNTAX); + /* + * According to RFC 3159 7.1.4. IpAddress must not be used + * in a SYNTAX clause. + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + !strcmp(typePtr->export.name, "IpAddress")) + smiPrintError(thisParserPtr, ERR_IPADDRESS_IN_SYNTAX); + } else { + typePtr = $6->parentPtr; + } + if ((objectPtr->typePtr != typePtr) && + ((objectPtr->typePtr->export.basetype != + SMI_BASETYPE_INTEGER32) || + (typePtr->export.basetype != + SMI_BASETYPE_ENUM)) && + ((objectPtr->typePtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) || + (typePtr->export.basetype != + SMI_BASETYPE_BITS))) { + smiPrintError(thisParserPtr, + ERR_SEQUENCE_TYPE_MISMATCH, + objectPtr->export.name); + } + } + } + setObjectType(objectPtr, $6); + if (!($6->export.name)) { + /* + * An inlined type. + */ +#if 0 /* export implicitly defined types by the node's lowercase name */ + setTypeName($6, $1); +#endif + } + setObjectUnits(objectPtr, $7); + setObjectAccess(objectPtr, $8); + if (thisParserPtr->flags & FLAG_CREATABLE) { + thisParserPtr->flags &= ~FLAG_CREATABLE; + parentPtr = + objectPtr->nodePtr->parentPtr->lastObjectPtr; + if (parentPtr && + parentPtr->export.indexkind != + SMI_INDEX_UNKNOWN) { + /* + * add objectPtr to the parent object's + * listPtr, which is the list of columns + * needed for row creation. + * + * Note, that this would clash, if the + * parent row object-type is not yet + * defined. + */ + /* + newlistPtr = smiMalloc(sizeof(List)); + newlistPtr->nextPtr = NULL; + newlistPtr->ptr = objectPtr; + */ + /* + * Look up the parent object-type. + */ + /* + if (parentPtr->listPtr) { + for(listPtr = parentPtr->listPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = newlistPtr; + } else { + parentPtr->listPtr = newlistPtr; + } + */ + addObjectFlags(parentPtr, FLAG_CREATABLE); + setObjectCreate(parentPtr, 1); + } else { + smiPrintError(thisParserPtr, + ERR_SCALAR_READCREATE); + } + } + setObjectStatus(objectPtr, $12); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + if ($13) { + setObjectDescription(objectPtr, $13, thisParserPtr); + } + if ($15) { + setObjectReference(objectPtr, $15, thisParserPtr); + } + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * For SMI documents either $16 (IndexPart) or $17 (MibIndex) + * are used, but not both. This is signalled via the indexFlag + * which is 1 if IndexPart has been used. + */ + if (indexFlag == INDEXFLAG_AUGMENTS) { /* IndexPart was used */ + if ($16.indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, $16.listPtr); + setObjectImplied(objectPtr, $16.implied); + setObjectIndexkind(objectPtr, $16.indexkind); + setObjectRelated(objectPtr, $16.rowPtr); + } + } else { + if ($17.indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, $17.listPtr); + setObjectImplied(objectPtr, $17.implied); + setObjectIndexkind(objectPtr, $17.indexkind); + setObjectRelated(objectPtr, $17.rowPtr); + } + } + } else { + /* + * PIBs contain either PIB-INDEX or AUGMENTS or EXTENDS - + * but only with one Index entry. A PIB-INDEX may be + * followed by a full INDEX. We get the indexkind + * from the first. + * Note that PIB-INDEX/AUGMENTS/EXTENS is always + * the first element in objectPtr->listPtr. + * If an optional INDEX exists then it is + * appended to this list. + */ + if ($16.indexkind != SMI_INDEX_UNKNOWN) { + setObjectList(objectPtr, $16.listPtr); + setObjectIndexkind(objectPtr, $16.indexkind); + setObjectRelated(objectPtr, $16.rowPtr); + } + if ($17.indexkind != SMI_INDEX_UNKNOWN) { + if (objectPtr->listPtr) { + List *p; + for (p = objectPtr->listPtr; p->nextPtr; + p = p->nextPtr); + p->nextPtr = $17.listPtr; + } + setObjectImplied(objectPtr, $17.implied); + } + } + if ($18) { + setObjectUniqueness(objectPtr, $18); + } + if ($19) { + if (objectPtr->typePtr + && (((objectPtr->typePtr->export.basetype == SMI_BASETYPE_OCTETSTRING) && + ($19->basetype != SMI_BASETYPE_OCTETSTRING)) + || ((objectPtr->typePtr->export.basetype == SMI_BASETYPE_OBJECTIDENTIFIER) && + ($19->basetype != SMI_BASETYPE_OBJECTIDENTIFIER)))) { + smiPrintError(thisParserPtr, + ERR_DEFVAL_SYNTAX); + if ($19->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + smiFree($19->value.oid); + } + if (($19->basetype == SMI_BASETYPE_BITS) || + ($19->basetype == SMI_BASETYPE_OCTETSTRING)) { + smiFree($19->value.ptr); + } + smiFree($19); + } else { + setObjectValue(objectPtr, $19); + } + } + if ($9) { + if (objectPtr->relatedPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "relatedPtr", "PIB-REFERENCES"); + /* + * PIB-REFERENCES clauses are only allowed for + * objects with a SYNTAX of 'ReferenceId'. + * See RFC 3159 7.10 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + strcmp(objectPtr->typePtr->export.name, "ReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_REFERENCES_WRONG_TYPE, + objectPtr->line); + else + setObjectRelated(objectPtr, $9); + } else { + /* + * Does this object have a SYNTAX of 'ReferenceId' + * and a PIB-REFERENCES clause? + * See RFC 3159 7.10 + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "ReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_LACKING_PIB_REFERENCES, + objectPtr->line); + } + if ($10) { + if (objectPtr->relatedPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "relatedPtr", "PIB-TAG"); + /* + * PIB-TAG clauses are only allowed for + * objects with a SYNTAX of 'TagReferenceId'. + * See RFC 3159 7.11 + */ + if (objectPtr->typePtr && objectPtr->typePtr->export.name && + strcmp(objectPtr->typePtr->export.name, "TagReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_PIB_TAG_WRONG_TYPE, + objectPtr->line); + else + setObjectRelated(objectPtr, $10); + } else { + /* + * Does this object have a SYNTAX of 'TagReferenceId' + * and a PIB-TAG clause? + * See RFC 3159 7.11 + */ + if ((thisModulePtr->export.language == SMI_LANGUAGE_SPPI) && + objectPtr->typePtr && objectPtr->typePtr->export.name && + !strcmp(objectPtr->typePtr->export.name, "TagReferenceId")) + smiPrintErrorAtLine(parserPtr, ERR_LACKING_PIB_TAG, + objectPtr->line); + + } + if ($14) { + if (objectPtr->listPtr) + smiPrintError(thisParserPtr, ERR_OBJECTPTR_ELEMENT_IN_USE, + "listPtr", "INSTALL-ERRORS"); + /* + * Are INSTALL-ERRORS only used with tables? + * See RFC 3159 7.4 + */ + if (!((objectPtr->export.decl == SMI_DECL_OBJECTTYPE) && + (objectPtr->typePtr) && + (objectPtr->typePtr->export.decl == SMI_DECL_IMPL_SEQUENCEOF))) + smiPrintErrorAtLine(parserPtr, ERR_INSTALL_ERRORS_FOR_NON_TABLE, + objectPtr->line); + else + setObjectList(objectPtr, $14); + } + $$ = 0; + } + ; + +descriptionClause: /* empty */ + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) || + (thisModulePtr->export.language == SMI_LANGUAGE_SPPI)) + { + smiPrintError(thisParserPtr, + ERR_MISSING_DESCRIPTION); + } + $$ = NULL; + } + | DESCRIPTION Text + { + $$ = $2; + checkDescr(thisParserPtr, $2); + } + ; + +trapTypeClause: fuzzy_lowercase_identifier + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_TRAPTYPE; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + TRAP_TYPE + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "TRAP-TYPE"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + smiPrintError(thisParserPtr, ERR_TRAP_TYPE); + } + + importPtr = findImportByName("TRAP-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "TRAP-TYPE", "RFC-1215"); + } + } + ENTERPRISE objectIdentifier + VarPart + DescrPart + ReferPart + COLON_COLON_EQUAL NUMBER + /* TODO: range of number? */ + { + Object *objectPtr; + Node *nodePtr; + + objectPtr = $6; + nodePtr = findNodeByParentAndSubid( + objectPtr->nodePtr, 0); + if (nodePtr && nodePtr->lastObjectPtr && + (nodePtr->lastObjectPtr->modulePtr == thisModulePtr)) { + /* + * hopefully, the last defined Object for + * this Node is the one we expect. + */ + objectPtr = nodePtr->lastObjectPtr; + } else { + objectPtr = addObject(NULL, + objectPtr->nodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + } + objectPtr = addObject(NULL, + objectPtr->nodePtr, + $11, + FLAG_INCOMPLETE, + thisParserPtr); + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_TRAPTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectList(objectPtr, $7); + setObjectStatus(objectPtr, SMI_STATUS_CURRENT); + setObjectDescription(objectPtr, $8, thisParserPtr); + if ($9) { + setObjectReference(objectPtr, $9, thisParserPtr); + } + $$ = 0; + } + ; + +VarPart: VARIABLES '{' VarTypes '}' + { + $$ = $3; + } + | /* empty */ + { + $$ = NULL; + } + ; + +VarTypes: VarType + { + if ($1) { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } else { + $$ = NULL; + } + } + | VarTypes ',' VarType + { + List *p, *pp; + + if ($3) { + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + if ($1) { + for (pp = $1; pp->nextPtr; + pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } else { + $$ = p; + } + } else { + $$ = $1; + } + } + ; + +VarType: ObjectName + { + $$ = $1; + } + ; + +DescrPart: DESCRIPTION Text + { + $$ = $2; + checkDescr(thisParserPtr, $2); + } + | /* empty */ + { $$ = NULL; } + ; + +MaxOrPIBAccessPart: MaxAccessPart + { + $$ = $1; + } + | PibAccessPart + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "MAX-ACCESS"); + if ($1 == SMI_ACCESS_NOT_ACCESSIBLE) + smiPrintError(thisParserPtr, ERR_NOT_ACCESSIBLE_IN_PIB_ACCESS); + $$ = $1; + } + | /* empty */ + { $$ = 0; } + ; + +PibAccessPart: PibAccess Access + { $$ = $2; } + ; + +PibAccess: POLICY_ACCESS + { + smiPrintError(thisParserPtr, ERR_POLICY_ACCESS_IN_PIB); + } + | PIB_ACCESS + { } + ; + +SPPIPibReferencesPart: PIB_REFERENCES + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-REFERENCES"); + } + '{' Entry '}' + { $$ = $4; } + | /* empty */ + { $$ = 0; } + ; + +SPPIPibTagPart: PIB_TAG + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-TAG"); + } + '{' ObjectName '}' + { $$ = $4; } + | /* empty */ + { $$ = 0; } + ; + + +SPPIUniquePart: UNIQUENESS + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "UNIQUENESS"); + } + '{' UniqueTypesPart '}' + { $$ = $4; } + | /* empty */ + { $$ = NULL; } + ; + +UniqueTypesPart: UniqueTypes + { $$ = $1; } + | /* empty */ + { $$ = NULL; } + ; + +UniqueTypes: UniqueType + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | UniqueTypes ',' UniqueType + /* TODO: might this list be emtpy? */ + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +UniqueType: ObjectName + { $$ = $1; } + ; + +SPPIErrorsPart: INSTALL_ERRORS + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "INSTALL-ERRORS"); + } + '{' Errors '}' + { $$ = $4; } + | /* empty */ + { $$ = NULL; } + ; + +Errors: Error + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | Errors ',' Error + /* TODO: might this list be emtpy? */ + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +Error: LOWERCASE_IDENTIFIER '(' NUMBER ')' + { + Object *objectPtr; + + if (($3 < 1) || ($3 > 65536)) + smiPrintError(thisParserPtr, ERR_ERROR_NUMBER_RANGE, $3); + /* + * This is not a regular object that will be added vid + * 'addObject' as error identifier have no other + * meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = $1; + objectPtr->export.oidlen = 1; + objectPtr->export.oid = (void *)$3; + $$ = objectPtr; + } + ; + + +MaxAccessPart: MAX_ACCESS + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV1) + { + smiPrintError(thisParserPtr, + ERR_MAX_ACCESS_IN_SMIV1); + } else if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "MAX-ACCESS"); + } + Access + { $$ = $3; } + | ACCESS + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + smiPrintError(thisParserPtr, ERR_ACCESS_IN_SMIV2); + } else if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "ACCESS"); + } + Access + /* TODO: limited values in v1 */ + { $$ = $3; } + ; + +notificationTypeClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_NOTIFICATIONTYPE; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + NOTIFICATION_TYPE + { + Import *importPtr; + + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "NOTIFICATION-TYPE"); + + importPtr = findImportByName("NOTIFICATION-TYPE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "NOTIFICATION-TYPE", + "SNMPv2-SMI"); + } + } + NotificationObjectsPart + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $9); + } + ReferPart + COLON_COLON_EQUAL + '{' NotificationName '}' + { + Object *objectPtr; + + objectPtr = $14; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_NOTIFICATIONTYPE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectList(objectPtr, $5); + setObjectStatus(objectPtr, $7); + setObjectDescription(objectPtr, $9, thisParserPtr); + if ($11) { + setObjectReference(objectPtr, $11, thisParserPtr); + } + $$ = 0; + } + ; + +moduleIdentityClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULEIDENTITY; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + MODULE_IDENTITY + { + Import *importPtr; + + importPtr = findImportByName("MODULE-IDENTITY", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "MODULE-IDENTITY", + "SNMPv2-SMI"); + } + + if (thisParserPtr->modulePtr->numModuleIdentities > 0) + { + smiPrintError(thisParserPtr, + ERR_TOO_MANY_MODULE_IDENTITIES); + } + if (thisParserPtr->modulePtr->numStatements > 0) { + smiPrintError(thisParserPtr, + ERR_MODULE_IDENTITY_NOT_FIRST); + } + } + SubjectCategoriesPart /* SPPI only */ + { + /* do nothing at the moment */ + } + LAST_UPDATED ExtUTCTime + { + setModuleLastUpdated(thisParserPtr->modulePtr, $8); + } + ORGANIZATION Text + { + if ($11 && !strlen($11)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_ORGANIZATION); + } + } + CONTACT_INFO Text + { + if ($14 && !strlen($14)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_CONTACT); + } + } + DESCRIPTION Text + { + checkDescr(thisParserPtr, $17); + } + RevisionPart + { + if ((!thisModulePtr->firstRevisionPtr) || + (thisModulePtr->firstRevisionPtr->export.date != + thisModulePtr->lastUpdated)) { + smiPrintError(thisParserPtr, + ERR_REVISION_MISSING); + addRevision(thisModulePtr->lastUpdated, + smiStrdup( + "[Revision added by libsmi due to a LAST-UPDATED clause.]"), + thisParserPtr); + } + } + COLON_COLON_EQUAL + '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $23; + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + thisParserPtr->modulePtr->numModuleIdentities++; + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_MODULEIDENTITY); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + setObjectStatus(objectPtr, SMI_STATUS_CURRENT); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setModuleIdentityObject(thisParserPtr->modulePtr, + objectPtr); + setModuleOrganization(thisParserPtr->modulePtr, + $11); + setModuleContactInfo(thisParserPtr->modulePtr, + $14); + setModuleDescription(thisParserPtr->modulePtr, + $17, thisParserPtr); + if ($5 != NULL) { + setObjectList(objectPtr, $5->categories); + smiFree($5); + } + /* setObjectDescription(objectPtr, $15); */ + $$ = 0; + } + ; + +SubjectCategoriesPart: SUBJECT_CATEGORIES '{' SubjectCategories '}' + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "SUBJECT-CATEGORIES"); + $$ = $3; + } + | /* empty */ + { + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_MISSING); + $$ = NULL; + } + ; + +SubjectCategories: CategoryIDs + { + $$ = smiMalloc(sizeof(SubjectCategories)); + $$->categories = $1; + } + ; + +CategoryIDs: CategoryID + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | CategoryIDs ',' CategoryID + { + List *p, *pp; + + if ($1->ptr == NULL) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_ALL); + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +CategoryID: LOWERCASE_IDENTIFIER + { + Object *objectPtr; + + if (strcmp($1, "all")) + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_MISSING_SUBID); + else { + /* + * This is not a regular object that will be added via + * 'addObject' as subject category dentifier have no + * other meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = "all"; + objectPtr->export.oidlen = 0; + objectPtr->export.oid = 0; + $$ = objectPtr; + } + smiFree($1); + } + | LOWERCASE_IDENTIFIER '(' NUMBER ')' + { + Object *objectPtr; + + if (!strcmp($1, "all")) { + smiPrintError(thisParserPtr, ERR_SUBJECT_CATEGORIES_ALL_WITH_SUBID); + $$ = NULL; + } else { + /* + * This is not a regular object that will be added via + * 'addObject' as subject category dentifier have no + * other meaning in PIBs. They are just used for + * a direct mapping to the actual protocol fields. + */ + objectPtr = smiMalloc(sizeof(Object)); + objectPtr->export.name = $1; + objectPtr->export.oidlen = 1; + objectPtr->export.oid = (void *)$3; + $$ = objectPtr; + } + } + ; + +ObjectSyntax: SimpleSyntax + { + $$ = $1; + } + | typeTag SimpleSyntax + { + if (strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-TC") && + strcmp(thisParserPtr->modulePtr->export.name, + "SNMPv2-CONF") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC-1212") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1065-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "RFC1155-SMI") && + strcmp(thisParserPtr->modulePtr->export.name, + "COPS-PR-SPPI")) { + smiPrintError(thisParserPtr, ERR_TYPE_TAG, $1); + } + $$ = $2; + } + | conceptualTable /* TODO: possible? row? entry? */ + { + /* TODO */ + $$ = $1; + } + | row /* the uppercase name of a row */ + { + /* TODO */ + $$ = $1; + } + | entryType /* SEQUENCE { ... } phrase */ + { + /* TODO */ + $$ = $1; + } + | ApplicationSyntax + { + Import *importPtr; + + if ($1 && $1->export.name) { + importPtr = findImportByName($1->export.name, + thisModulePtr); + if (importPtr) { + importPtr->use++; + } + } + + /* TODO */ + $$ = $1; + } + ; + +typeTag: '[' APPLICATION NUMBER ']' IMPLICIT + { $$ = 0; /* TODO: check range */ } + | '[' UNIVERSAL NUMBER ']' IMPLICIT + { $$ = 0; /* TODO: check range */ } + ; + +/* + * In a SEQUENCE { ... } there are no sub-types, enumerations or + * named bits. REF: draft, p.29 + */ +sequenceObjectSyntax: sequenceSimpleSyntax + { $$ = $1; } +/* | conceptualTable /* TODO: possible? row? entry? */ +/* | row /* the uppercase name of a row */ +/* | entryType /* it's SEQUENCE { ... } phrase */ + | sequenceApplicationSyntax + { + Import *importPtr; + + if ($1 && $1->export.name) { + importPtr = findImportByName($1->export.name, + thisModulePtr); + if (importPtr) { + importPtr->use++; + } + } + + /* TODO */ + $$ = $1; + } + ; + +valueofObjectSyntax: valueofSimpleSyntax + { $$ = $1; } + /* conceptualTables and rows do not have DEFVALs + */ + /* valueofApplicationSyntax would not introduce any + * further syntax of ObjectSyntax values. + */ + ; + +SimpleSyntax: INTEGER /* (-2147483648..2147483647) */ + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + && + (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "SNMPv2-TC") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) + smiPrintError(thisParserPtr, + ERR_INTEGER_IN_SMIV2); + + defaultBasetype = SMI_BASETYPE_INTEGER32; + $$ = smiHandle->typeInteger32Ptr; + } + | INTEGER + { + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + integerSubType + { + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + && + (strcmp(thisModulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisModulePtr->export.name, "SNMPv2-TC") && + strcmp(thisModulePtr->export.name, "COPS-PR-SPPI"))) + smiPrintError(thisParserPtr, + ERR_INTEGER_IN_SMIV2); + + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeList($$, $3); + smiCheckTypeRanges(thisParserPtr, $$); + } + | INTEGER + { + defaultBasetype = SMI_BASETYPE_ENUM; + } + enumSpec + { + List *p; + + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + setTypeList($$, $3); + for (p = $3; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + smiCheckNamedNumbersOrder(parserPtr, $$); + } + | INTEGER32 /* (-2147483648..2147483647) */ + { + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_INTEGER32; + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + + /* TODO: any need to distinguish from INTEGER? */ + $$ = smiHandle->typeInteger32Ptr; + } + | INTEGER32 + { + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + integerSubType + { + Import *importPtr; + + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeList($$, $3); + smiCheckTypeRanges(thisParserPtr, $$); + } + | UPPERCASE_IDENTIFIER + { + defaultBasetype = SMI_BASETYPE_ENUM; + } + enumSpec + { + Type *parentPtr; + Import *importPtr; + List *p; + + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, $1); + if (!parentPtr) { + importPtr = findImportByName($1, + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, $1); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_ENUM) && + (parentPtr->export.basetype != + SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, + $1); + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree($1); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType($1, + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + setTypeList($$, $3); + for (p = $3; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + smiCheckNamedNumbersOrder(parserPtr, $$); + } + | moduleName '.' UPPERCASE_IDENTIFIER enumSpec + /* TODO: UPPERCASE_IDENTIFIER must be an INTEGER */ + { + Type *parentPtr; + Import *importPtr; + List *p; + + defaultBasetype = SMI_BASETYPE_ENUM; + parentPtr = findTypeByModulenameAndName($1, $3); + if (!parentPtr) { + importPtr = + findImportByModulenameAndName($1, + $3, thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = + findTypeByModulenameAndName($1, $3); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_ENUM) && + (parentPtr->export.basetype != + SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_ENUM_FOR_PARENT_TYPE, + $3); + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, $3); + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + } + setTypeList($$, $4); + for (p = $4; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + smiCheckNamedNumbersOrder(parserPtr, $$); + smiFree($1); + smiFree($3); + } + | UPPERCASE_IDENTIFIER integerSubType + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, $1); + if (!parentPtr) { + importPtr = findImportByName($1, + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, $1); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_INTEGER32) && + (parentPtr->export.basetype != + SMI_BASETYPE_INTEGER64) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED32) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED64)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, + $1); + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } else { + defaultBasetype = + parentPtr->export.basetype; + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree($1); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType($1, + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + | moduleName '.' UPPERCASE_IDENTIFIER integerSubType + /* TODO: UPPERCASE_IDENTIFIER must be an INT/Int32. */ + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName($1, $3); + if (!parentPtr) { + importPtr = findImportByModulenameAndName($1, + $3, thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + $1, $3); + } + } + if (parentPtr) { + if ((parentPtr->export.basetype != + SMI_BASETYPE_INTEGER32) && + (parentPtr->export.basetype != + SMI_BASETYPE_INTEGER64) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED32) && + (parentPtr->export.basetype != + SMI_BASETYPE_UNSIGNED64)) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_PARENT_TYPE, + $3); + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } else { + defaultBasetype = + parentPtr->export.basetype; + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, $3); + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + defaultBasetype = SMI_BASETYPE_INTEGER32; + } + setTypeList($$, $4); + smiCheckTypeRanges(thisParserPtr, $$); + smiFree($1); + smiFree($3); + } + | OCTET STRING /* (SIZE (0..65535)) */ + { + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + $$ = smiHandle->typeOctetStringPtr; + } + | OCTET STRING + { + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + } + octetStringSubType + { + + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + setTypeList($$, $4); + smiCheckTypeRanges(thisParserPtr, $$); + } + | UPPERCASE_IDENTIFIER octetStringSubType + { + Type *parentPtr; + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + parentPtr = findTypeByModuleAndName( + thisParserPtr->modulePtr, $1); + if (!parentPtr) { + importPtr = findImportByName($1, + thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, $1); + } + } + if (parentPtr) { + if (parentPtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, + $1); + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + smiFree($1); + } else { + /* + * forward referenced type. create it, + * marked with FLAG_INCOMPLETE. + */ + parentPtr = addType($1, + SMI_BASETYPE_UNKNOWN, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + | moduleName '.' UPPERCASE_IDENTIFIER octetStringSubType + /* TODO: UPPERCASE_IDENTIFIER must be an OCTET STR. */ + { + Type *parentPtr; + Import *importPtr; + + defaultBasetype = SMI_BASETYPE_OCTETSTRING; + parentPtr = findTypeByModulenameAndName($1, $3); + if (!parentPtr) { + importPtr = findImportByModulenameAndName($1, + $3, thisModulePtr); + if (importPtr && + importPtr->kind == KIND_TYPE) { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + $1, $3); + } + } + if (parentPtr) { + if (parentPtr->export.basetype != + SMI_BASETYPE_OCTETSTRING) { + smiPrintError(thisParserPtr, + ERR_ILLEGAL_SIZE_FOR_PARENT_TYPE, + $3); + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE, $3); + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + } + setTypeList($$, $4); + smiCheckTypeRanges(thisParserPtr, $$); + smiFree($1); + smiFree($3); + } + | OBJECT IDENTIFIER anySubType + { + defaultBasetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$ = smiHandle->typeObjectIdentifierPtr; + } + ; + +valueofSimpleSyntax: NUMBER /* 0..2147483647 */ + /* NOTE: Counter64 must not have a DEFVAL */ + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = $1; + } + | NEGATIVENUMBER /* -2147483648..0 */ + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = $1; + } + | NUMBER64 /* 0..18446744073709551615 */ + { + /* The scanner already checks for the language */ + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = $1; + } + | NEGATIVENUMBER64 /* -9223372036854775807..0 */ + { + /* The scanner already checks for the language */ + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = $1; + } + | BIN_STRING /* number or OCTET STRING */ + { + char s[9]; + int i, len, j; + + $$ = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen($1); + $$->value.ptr = + smiMalloc((len+7)/8+1); + for (i = 0; i < len; i += 8) { + strncpy(s, &$1[i], 8); + for (j = 1; j < 8; j++) { + if (!s[j]) s[j] = '0'; + } + s[8] = 0; + $$->value.ptr[i/8] = + (unsigned char)strtol(s, 0, 2); + } + $$->len = (len+7)/8; + } else { + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 2); + } + } + | HEX_STRING /* number or OCTET STRING */ + { + char s[3]; + int i, len; + + $$ = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen($1); + $$->value.ptr = smiMalloc((len+1)/2+1); + for (i = 0; i < len; i += 2) { + strncpy(s, &$1[i], 2); + if (!s[1]) s[1] = '0'; + s[2] = 0; + $$->value.ptr[i/2] = + (unsigned char)strtol(s, 0, 16); + } + $$->len = (len+1)/2; + } else { + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 16); + } + } + | LOWERCASE_IDENTIFIER /* enumeration or named oid */ + { + $$ = smiMalloc(sizeof(SmiValue)); + if ((defaultBasetype != SMI_BASETYPE_ENUM) && + (defaultBasetype != SMI_BASETYPE_OBJECTIDENTIFIER)) { + smiPrintError(thisParserPtr, ERR_DEFVAL_SYNTAX); + $$->basetype = defaultBasetype; + if (defaultBasetype == SMI_BASETYPE_ENUM) { + $$->len = 1; + $$->value.unsigned32 = 0; + } else { + $$->len = 0; + $$->value.ptr = NULL; + } + } else { + $$->basetype = defaultBasetype; + $$->len = -1; /* indicates unresolved ptr */ + $$->value.ptr = $1; /* JS: needs strdup? */ + } + } + | QUOTED_STRING /* an OCTET STRING */ + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OCTETSTRING; + $$->value.ptr = smiStrdup($1); + $$->len = strlen($1); + } + /* NOTE: If the value is an OBJECT IDENTIFIER, then + * it must be expressed as a single ASN.1 + * identifier, and not as a collection of + * of sub-identifiers. + * REF: draft,p.34 + * Anyway, we try to accept it. But it's only + * possible for numbered sub-identifiers, since + * other identifiers would make something like + * { gaga } indistiguishable from a BitsValue. + */ + | '{' objectIdentifier_defval '}' + /* + * This is only for some MIBs with invalid numerical + * OID notation for DEFVALs. We DO NOT parse them + * correctly. We just don't want to produce a + * parser error. + */ + { + /* + * SMIv1 allows something like { 0 0 } ! + * SMIv2 does not! + */ + /* TODO: make it work correctly for SMIv1 */ + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_OID_DEFVAL_TOO_LONG_SMIV2); + } else { + smiPrintError(thisParserPtr, + ERR_OID_DEFVAL_TOO_LONG_SMIV1); + } + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->len = 2; + $$->value.oid = smiMalloc(2 * sizeof(SmiSubid)); + $$->value.oid[0] = 0; + $$->value.oid[1] = 0; + } + ; + +/* + * In a SEQUENCE { ... } there are no sub-types, enumerations or + * named bits. REF: draft, p.29 + */ +sequenceSimpleSyntax: INTEGER anySubType + { + $$ = smiHandle->typeInteger32Ptr; + } + | INTEGER32 anySubType + { + Import *importPtr; + + /* TODO: any need to distinguish from INTEGER? */ + $$ = smiHandle->typeInteger32Ptr; + + importPtr = findImportByName("Integer32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Integer32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer32"); + } + } + } + | OCTET STRING anySubType + { + $$ = smiHandle->typeOctetStringPtr; + } + | OBJECT IDENTIFIER anySubType + { + $$ = smiHandle->typeObjectIdentifierPtr; + } + ; + +ApplicationSyntax: IPADDRESS anySubType + { + Import *importPtr; + + $$ = findTypeByName("IpAddress"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "IpAddress"); + } + + importPtr = findImportByName("IpAddress", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } + } + } + | COUNTER32 anySubType /* (0..4294967295) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "COUNTER32"); + $$ = findTypeByName("Counter32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + } + | COUNTER32 integerSubType + { + Import *importPtr; + List *listPtr, *nextListPtr; + + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_COUNTER, + "Counter32"); + for (listPtr = $2; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)listPtr->ptr); + smiFree(listPtr); + } + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter32"); + $$ = findTypeByName("Counter32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + } + | GAUGE32 /* (0..4294967295) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + $$ = findTypeByName("Gauge32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + } + | GAUGE32 integerSubType + { + Type *parentPtr; + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + parentPtr = findTypeByName("Gauge32"); + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + $$ = NULL; + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + } + | UNSIGNED32 /* (0..4294967295) */ + { + Import *importPtr; + + $$ = smiHandle->typeUnsigned32Ptr; + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + } + | UNSIGNED32 integerSubType + { + Import *importPtr; + + $$ = duplicateType(smiHandle->typeUnsigned32Ptr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + } + | TIMETICKS anySubType + { + Import *importPtr; + + $$ = findTypeByName("TimeTicks"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "TimeTicks"); + } + + importPtr = findImportByName("TimeTicks", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } + } + } + | OPAQUE /* IMPLICIT OCTET STRING */ + { + Import *importPtr; + + $$ = findTypeByName("Opaque"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE); + } + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + } + | OPAQUE octetStringSubType + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByName("Opaque"); + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + $$ = NULL; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE, + "Opaque"); + } + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + } + | COUNTER64 anySubType /* (0..18446744073709551615) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + $$ = findTypeByName("Counter64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + } + | COUNTER64 integerSubType + { + Import *importPtr; + List *listPtr, *nextListPtr; + + smiPrintError(thisParserPtr, + ERR_ILLEGAL_RANGE_FOR_COUNTER, + "Counter64"); + for (listPtr = $2; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)listPtr->ptr); + smiFree(listPtr); + } + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + $$ = findTypeByName("Counter64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + } + | INTEGER64 /* (-9223372036854775807..9223372036854775807) */ + { + Import *importPtr; + + $$ = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Integer64"); + if (! $$) { + importPtr = findImportByName("Integer64", + thisModulePtr); + if (!importPtr) { + $$ = findTypeByName("Integer64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } else { + importPtr->use++; + $$ = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + } + | INTEGER64 integerSubType + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Integer64"); + if (! parentPtr) { + importPtr = findImportByName("Integer64", + thisModulePtr); + if (!importPtr) { + parentPtr = findTypeByName("Integer64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } else { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Integer64"); + $$ = NULL; + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + } + | UNSIGNED64 /* (0..18446744073709551615) */ + { + Import *importPtr; + + $$ = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Unsigned64"); + if (! $$) { + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if (!importPtr) { + $$ = findTypeByName("Unsigned64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } else { + importPtr->use++; + $$ = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + } + | UNSIGNED64 integerSubType + { + Type *parentPtr; + Import *importPtr; + + parentPtr = findTypeByModulenameAndName( + thisParserPtr->modulePtr->export.name, "Unsigned64"); + if (! parentPtr) { + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if (!importPtr) { + parentPtr = findTypeByName("Unsigned64"); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI)) { + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + } else { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } else { + importPtr->use++; + parentPtr = findTypeByModulenameAndName( + importPtr->export.module, + importPtr->export.name); + } + } + if (! parentPtr) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Unsigned64"); + $$ = NULL; + } else { + $$ = duplicateType(parentPtr, 0, + thisParserPtr); + setTypeList($$, $2); + smiCheckTypeRanges(thisParserPtr, $$); + } + } + ; + +/* + * In a SEQUENCE { ... } there are no sub-types, enumerations or + * named bits. REF: draft, p.29 + */ +sequenceApplicationSyntax: IPADDRESS anySubType + { + Import *importPtr; + + $$ = findTypeByName("IpAddress"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "IpAddress"); + } + + importPtr = findImportByName("IpAddress", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "IpAddress"); + } + } + } + | COUNTER32 anySubType + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter32"); + $$ = findTypeByName("Counter32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter32"); + } + + importPtr = findImportByName("Counter32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter32"); + } + } + } + | GAUGE32 anySubType /* (0..4294967295) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Gauge32", thisParserPtr->modulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Gauge32"); + $$ = findTypeByName("Gauge32"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Gauge32"); + } + + importPtr = findImportByName("Gauge32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Gauge32"); + } + } + } + | UNSIGNED32 anySubType /* (0..4294967295) */ + { + Import *importPtr; + + $$ = smiHandle->typeUnsigned32Ptr; + + importPtr = findImportByName("Unsigned32", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned32"); + } + } + } + | TIMETICKS anySubType /* (0..4294967295) */ + { + Import *importPtr; + + $$ = findTypeByName("TimeTicks"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "TimeTicks"); + } + + importPtr = findImportByName("TimeTicks", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "TimeTicks"); + } + } + } + | OPAQUE /* IMPLICIT OCTET STRING */ + { + Import *importPtr; + + $$ = findTypeByName("Opaque"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Opaque"); + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_OPAQUE_OBSOLETE, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_OPAQUE_OBSOLETE, + "Opaque"); + } + } + + importPtr = findImportByName("Opaque", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Opaque"); + } else if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Opaque"); + } + } + } + | COUNTER64 anySubType /* (0..18446744073709551615) */ + { + Import *importPtr; + + if ((thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) && + !findImportByName("Counter64", thisModulePtr)) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "Counter64"); + $$ = findTypeByName("Counter64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Counter64"); + } + + importPtr = findImportByName("Counter64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SMIV2) { + smiPrintError(thisParserPtr, + ERR_SMIV2_BASETYPE_NOT_IMPORTED, + "Counter64"); + } + } + } + | INTEGER64 /* (-9223372036854775807..9223372036854775807) */ + { + Import *importPtr; + + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Integer64"); + $$ = findTypeByName("Integer64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Integer64"); + } + + importPtr = findImportByName("Integer64", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Integer64"); + } + } + } + | UNSIGNED64 /* (0..18446744073709551615) */ + { + Import *importPtr; + + importPtr = findImportByName("Unsigned64", + thisModulePtr); + if ((thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) && (!importPtr)) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "Unsigned64"); + $$ = findTypeByName("Unsigned64"); + if (! $$) { + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, + "Unsigned64"); + } + + if (importPtr) { + importPtr->use++; + } else { + if (thisModulePtr->export.language == + SMI_LANGUAGE_SPPI) { + smiPrintError(thisParserPtr, + ERR_SPPI_BASETYPE_NOT_IMPORTED, + "Unsigned64"); + } + } + } + ; + +anySubType: integerSubType + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = $1; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)(listPtr->ptr)); + smiFree(listPtr); + } + + $$ = NULL; + } + | octetStringSubType + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = $1; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree((Range *)(listPtr->ptr)); + smiFree(listPtr); + } + + $$ = NULL; + } + | enumSpec + { + List *listPtr, *nextListPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_TYPE_RESTRICTION); + + for (listPtr = $1; listPtr; + listPtr = nextListPtr) { + nextListPtr = listPtr->nextPtr; + smiFree(((NamedNumber *)(listPtr->ptr))->export.name); + smiFree((NamedNumber *)(listPtr->ptr)); + smiFree(listPtr); + } + + $$ = NULL; + } + | /* empty */ + { + $$ = NULL; + } + ; + + +/* REF: draft,p.46 */ +integerSubType: '(' ranges ')' /* at least one range */ + /* + * the specification mentions an alternative of an + * empty RHS here. this would lead to reduce/reduce + * conflicts. instead, we differentiate the parent + * rule(s) (SimpleSyntax). + */ + { $$ = $2; } + ; + +octetStringSubType: '(' SIZE '(' ranges ')' ')' + /* + * the specification mentions an alternative of an + * empty RHS here. this would lead to reduce/reduce + * conflicts. instead, we differentiate the parent + * rule(s) (SimpleSyntax). + */ + { + $$ = $4; + } + ; + +ranges: range + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | ranges '|' range + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + + $$ = $1; + } + ; + +range: value + { + $$ = smiMalloc(sizeof(Range)); + $$->export.minValue = *$1; + $$->export.maxValue = *$1; + smiFree($1); + } + | value DOT_DOT value + { + $$ = smiMalloc(sizeof(Range)); + $$->export.minValue = *$1; + $$->export.maxValue = *$3; + smiFree($1); + smiFree($3); + } + ; + +value: NEGATIVENUMBER + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = $1; + } + | NUMBER + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = $1; + } + | NEGATIVENUMBER64 + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = $1; + } + | NUMBER64 + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = $1; + } + | HEX_STRING + { + char s[3]; + int i, len; + + $$ = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen($1); + $$->value.ptr = smiMalloc((len+1)/2+1); + for (i = 0; i < len; i += 2) { + strncpy(s, &$1[i], 2); + if (!s[1]) s[1] = '0'; + s[2] = 0; + $$->value.ptr[i/2] = + (unsigned char)strtol(s, 0, 16); + } + $$->len = (len+1)/2; + } else { + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 16); + } + } + | BIN_STRING + { + char s[9]; + int i, len, j; + + $$ = smiMalloc(sizeof(SmiValue)); + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$->basetype = SMI_BASETYPE_OCTETSTRING; + len = strlen($1); + $$->value.ptr = smiMalloc((len+7)/8+1); + for (i = 0; i < len; i += 8) { + strncpy(s, &$1[i], 8); + for (j = 1; j < 8; j++) { + if (!s[j]) s[j] = '0'; + } + s[8] = 0; + $$->value.ptr[i/8] = + (unsigned char)strtol(s, 0, 2); + } + $$->len = (len+7)/8; + } else { + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 2); + } + } + ; + +enumSpec: '{' enumItems '}' + { + $$ = $2; + } + ; + +enumItems: enumItem + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | enumItems ',' enumItem + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (void *)$3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +enumItem: LOWERCASE_IDENTIFIER + { + checkNameLen(thisParserPtr, $1, + ERR_ENUMNAME_32, ERR_ENUMNAME_64); + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (strchr($1, '-')) { + smiPrintError(thisParserPtr, + ERR_NAMEDNUMBER_INCLUDES_HYPHEN, + $1); + } + } + } + '(' enumNumber ')' + { + $$ = smiMalloc(sizeof(NamedNumber)); + $$->export.name = $1; + $$->export.value = *$4; + smiFree($4); + } + ; + +enumNumber: NUMBER + { + if ($1 > SMI_BASETYPE_INTEGER32_MAX) { + smiPrintError(thisParserPtr, + ERR_INTEGER32_TOO_LARGE, $1); + } + if ((thisModulePtr->export.language == SMI_LANGUAGE_SMIV1) && + ($1 == 0)) { + smiPrintError(thisParserPtr, + ERR_ENUM_ZERO); + } + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = $1; + } + | NEGATIVENUMBER + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = $1; + /* TODO: non-negative is suggested */ + } + ; + +Status: LOWERCASE_IDENTIFIER + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (!strcmp($1, "current")) { + $$ = SMI_STATUS_CURRENT; + } else if (!strcmp($1, "deprecated")) { + $$ = SMI_STATUS_DEPRECATED; + } else if (!strcmp($1, "obsolete")) { + $$ = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV2_STATUS, + $1); + if (!strcmp($1, "mandatory") + || !strcmp($1, "optional")) { + /* best guess */ + $$ = SMI_STATUS_CURRENT; + } else { + $$ = SMI_STATUS_UNKNOWN; + } + } + } else if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + if (!strcmp($1, "mandatory")) { + $$ = SMI_STATUS_MANDATORY; + } else if (!strcmp($1, "optional")) { + $$ = SMI_STATUS_OPTIONAL; + } else if (!strcmp($1, "obsolete")) { + $$ = SMI_STATUS_OBSOLETE; + } else if (!strcmp($1, "deprecated")) { + $$ = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV1_STATUS, + $1); + if (!strcmp($1, "current")) { + /* best guess */ + $$ = SMI_STATUS_MANDATORY; + } else { + $$ = SMI_STATUS_UNKNOWN; + } + } + } else { /* it is SPPI */ + if (!strcmp($1, "current")) { + $$ = SMI_STATUS_CURRENT; + } else if (!strcmp($1, "obsolete")) { + $$ = SMI_STATUS_OBSOLETE; + } else if (!strcmp($1, "deprecated")) { + $$ = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SPPI_STATUS, $1); + $$ = SMI_STATUS_UNKNOWN; + } + } + smiFree($1); + } + ; + +Status_Capabilities: LOWERCASE_IDENTIFIER + { + if (!strcmp($1, "current")) { + $$ = SMI_STATUS_CURRENT; + } else if (!strcmp($1, "obsolete")) { + $$ = SMI_STATUS_OBSOLETE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_CAPABILITIES_STATUS, + $1); + $$ = SMI_STATUS_UNKNOWN; + } + smiFree($1); + } + ; + +DisplayPart: DISPLAY_HINT Text + { + $$ = $2; + + if ($2 && !strlen($2)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_FORMAT); + } + } + | /* empty */ + { + $$ = NULL; + } + ; + +UnitsPart: UNITS Text + { + $$ = $2; + + if ($2 && !strlen($2)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_UNITS); + } + } + | /* empty */ + { + $$ = NULL; + } + ; + +Access: LOWERCASE_IDENTIFIER + { + if (thisModulePtr->export.language == SMI_LANGUAGE_SMIV2) + { + if (!strcmp($1, "not-accessible")) { + $$ = SMI_ACCESS_NOT_ACCESSIBLE; + } else if (!strcmp($1, + "accessible-for-notify")) { + $$ = SMI_ACCESS_NOTIFY; + } else if (!strcmp($1, "read-only")) { + $$ = SMI_ACCESS_READ_ONLY; + } else if (!strcmp($1, "read-write")) { + $$ = SMI_ACCESS_READ_WRITE; + } else if (!strcmp($1, "read-create")) { + $$ = SMI_ACCESS_READ_WRITE; + thisParserPtr->flags |= FLAG_CREATABLE; + /* TODO:remember it's really read-create */ + } else if (!strcmp($1, "write-only")) { + smiPrintError(thisParserPtr, + ERR_SMIV2_WRITE_ONLY); + $$ = SMI_ACCESS_READ_WRITE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV2_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } + } else if (thisModulePtr->export.language != SMI_LANGUAGE_SPPI) { + if (!strcmp($1, "not-accessible")) { + $$ = SMI_ACCESS_NOT_ACCESSIBLE; + } else if (!strcmp($1, "read-only")) { + $$ = SMI_ACCESS_READ_ONLY; + } else if (!strcmp($1, "read-write")) { + $$ = SMI_ACCESS_READ_WRITE; + } else if (!strcmp($1, "write-only")) { + smiPrintError(thisParserPtr, + ERR_SMIV1_WRITE_ONLY); + $$ = SMI_ACCESS_READ_WRITE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SMIV1_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } + } else { + if (!strcmp($1, "install")) { + $$ = SMI_ACCESS_INSTALL; + } else if (!strcmp($1, "install-notify")) { + $$ = SMI_ACCESS_INSTALL_NOTIFY; + } else if (!strcmp($1, "notify")) { + $$ = SMI_ACCESS_NOTIFY; + } else if (!strcmp($1, "report-only")) { + $$ = SMI_ACCESS_REPORT_ONLY; + } else if (!strcmp($1, "not-accessible")) { + $$ = SMI_ACCESS_NOT_ACCESSIBLE; + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_SPPI_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } + } + smiFree($1); + } + ; + +IndexPart: PIB_INDEX + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-INDEX"); + } + '{' Entry '}' + { + List *p = smiMalloc(sizeof(List)); + + p->ptr = $4; + p->nextPtr = NULL; + + $$.indexkind = SMI_INDEX_INDEX; + $$.implied = impliedFlag; + $$.listPtr = p; + $$.rowPtr = NULL; + indexFlag = INDEXFLAG_PIBINDEX; + } + | AUGMENTS '{' Entry '}' + /* TODO: no AUGMENTS clause in v1 */ + /* TODO: how to differ INDEX and AUGMENTS ? */ + { + $$.indexkind = SMI_INDEX_AUGMENT; + $$.implied = 0; + $$.listPtr = NULL; + $$.rowPtr = $3; + indexFlag = INDEXFLAG_AUGMENTS; + } + | EXTENDS + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "EXTENDS"); + } + '{' Entry '}' + { + $$.indexkind = SMI_INDEX_SPARSE; + $$.implied = 0; + $$.listPtr = NULL; + $$.rowPtr = $4; + indexFlag = INDEXFLAG_EXTENDS; + } + | /* empty */ + { + $$.indexkind = SMI_INDEX_UNKNOWN; + } + ; + +MibIndex: INDEX + { + /* + * To avoid ambiguity caused by merging + * the SMI and SPPI parser we use a flag. + */ + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) { + /* + * Only INDEX or AUGMENTS are allowed for SMI + */ + if (indexFlag != INDEXFLAG_NONE) + smiPrintError(thisParserPtr, ERR_INDEX_AND_AUGMENTS_USED); + } else { + /* + * INDEX may only be used if PIB_INDEX was used + */ + if (indexFlag != INDEXFLAG_PIBINDEX) + smiPrintError(thisParserPtr, ERR_INDEX_WITHOUT_PIB_INDEX); + } + + /* + * Use a global variable to fetch and remember + * whether we have seen an IMPLIED keyword. + */ + impliedFlag = 0; + } + '{' IndexTypes '}' + { + $$.indexkind = SMI_INDEX_INDEX; + $$.implied = impliedFlag; + $$.listPtr = $4; + $$.rowPtr = NULL; + } + | /* empty */ + { + $$.indexkind = SMI_INDEX_UNKNOWN; + } + ; + +IndexTypes: IndexType + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | IndexTypes ',' IndexType + /* TODO: might this list be emtpy? */ + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +IndexType: IMPLIED Index + { + impliedFlag = 1; + $$ = $2; + } + | Index + { + $$ = $1; + } + ; + +Index: ObjectName + /* + * TODO: use the SYNTAX value of the correspondent + * OBJECT-TYPE invocation + */ + { + $$ = $1; + } + ; + +Entry: ObjectName + { + $$ = $1; + } + ; + +DefValPart: DEFVAL '{' Value '}' + { + $$ = $3; + if ((defaultBasetype == SMI_BASETYPE_BITS) && + ($$->basetype != SMI_BASETYPE_BITS)) { + smiPrintError(thisParserPtr, + ERR_DEFVAL_SYNTAX); + if ($$->basetype == SMI_BASETYPE_OCTETSTRING) { + smiFree($$->value.ptr); + } + smiFree($$); + $$ = NULL; + } + } + | /* empty */ + { $$ = NULL; } + /* TODO: different for DefValPart in AgentCaps ? */ + ; + +Value: valueofObjectSyntax + { $$ = $1; } + | '{' BitsValue '}' + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_BITS; + $$->value.ptr = (void *)$2; + } + ; + +BitsValue: BitNames + { $$ = $1; } + | /* empty */ + { $$ = NULL; } + ; + +BitNames: LOWERCASE_IDENTIFIER + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | BitNames ',' LOWERCASE_IDENTIFIER + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +ObjectName: objectIdentifier + { + $$ = $1; + } + ; + +NotificationName: objectIdentifier + { + $$ = $1; + } + ; + +ReferPart: REFERENCE Text + { + $$ = $2; + + if ($2 && !strlen($2)) { + smiPrintError(thisParserPtr, + ERR_EMPTY_REFERENCE); + } + } + | /* empty */ + { $$ = NULL; } + ; + +RevisionPart: Revisions + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +Revisions: Revision + { $$ = 0; } + | Revisions Revision + { $$ = 0; } + ; + +Revision: REVISION ExtUTCTime + { + thisParserPtr->firstRevisionLine = thisParserPtr->line; + + if (thisParserPtr->modulePtr->lastRevisionPtr && + ($2 >= thisParserPtr->modulePtr->lastRevisionPtr->export.date)) { + smiPrintError(thisParserPtr, + ERR_REVISION_NOT_DESCENDING); + } + + if ($2 > thisParserPtr->modulePtr->lastUpdated) { + smiPrintError(thisParserPtr, + ERR_REVISION_AFTER_LAST_UPDATE); + } + } + DESCRIPTION Text + { + Revision *revisionPtr; + + checkDescr(thisParserPtr, $5); + + revisionPtr = addRevision($2, $5, thisParserPtr); + if (revisionPtr) { + setRevisionLine(revisionPtr, + thisParserPtr->firstRevisionLine, + thisParserPtr); + } + $$ = revisionPtr ? 0 : -1; + } + ; + +NotificationObjectsPart: OBJECTS '{' Objects '}' + { + $$ = $3; + } + | /* empty */ + { + $$ = NULL; + } + ; + +ObjectGroupObjectsPart: OBJECTS '{' Objects '}' + { + $$ = $3; + } + ; + +Objects: Object + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | Objects ',' Object + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +Object: ObjectName + { + $$ = $1; + if ((thisParserPtr->currentDecl == SMI_DECL_OBJECTGROUP) && + $$->modulePtr != thisParserPtr->modulePtr) { + smiPrintError(thisParserPtr, + ERR_COMPLIANCE_MEMBER_NOT_LOCAL, + $$->export.name); + } + } + ; + +NotificationsPart: NOTIFICATIONS '{' Notifications '}' + { + $$ = $3; + } + ; + +Notifications: Notification + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | Notifications ',' Notification + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +Notification: NotificationName + { + $$ = $1; + if ($$->modulePtr != thisParserPtr->modulePtr) { + smiPrintError(thisParserPtr, + ERR_COMPLIANCE_MEMBER_NOT_LOCAL, + $$->export.name); + } + } + ; + +Text: QUOTED_STRING + { + int len; + $$ = smiStrdup($1); + len = strlen($$); + while (len > 0 && $$[len-1] == '\n') { + $$[--len] = 0; + } + } + ; + +ExtUTCTime: QUOTED_STRING + { + $$ = checkDate(thisParserPtr, $1); + } + ; + +objectIdentifier: { + thisParserPtr->parentNodePtr = smiHandle->rootNodePtr; + } + subidentifiers + { + $$ = $2; + if ($$) { + thisParserPtr->parentNodePtr = $2->nodePtr; + } else { + thisParserPtr->parentNodePtr = NULL; + } + } + ; + +subidentifiers: + subidentifier + { + $$ = $1; + } + | subidentifiers + subidentifier + { + $$ = $2; + } + ; + +subidentifier: + /* LOWERCASE_IDENTIFIER */ + fuzzy_lowercase_identifier + { + Object *objectPtr; + Import *importPtr; + + if (thisParserPtr->parentNodePtr != smiHandle->rootNodePtr) { + smiPrintError(thisParserPtr, + ERR_OIDLABEL_NOT_FIRST, $1); + } + objectPtr = findObjectByModuleAndName( + thisParserPtr->modulePtr, $1); + if (objectPtr) { + $$ = objectPtr; + smiFree($1); + } else { + importPtr = findImportByName($1, + thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* + * If we are in a MODULE-COMPLIANCE + * statement with a given MODULE... + */ + if (thisParserPtr->complianceModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, $1); + if (objectPtr) { + importPtr = addImport( + $1, + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->complianceModulePtr->export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, $1, + thisParserPtr->complianceModulePtr->export.name); + } + } else if (thisParserPtr->capabilitiesModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->capabilitiesModulePtr, $1); + if (objectPtr) { + importPtr = addImport( + $1, + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->capabilitiesModulePtr-> + export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, $1, + thisParserPtr->capabilitiesModulePtr->export.name); + } + } else { + /* + * forward referenced node. + * create it, + * marked with FLAG_INCOMPLETE. + */ + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + } + $$ = objectPtr; + } else { + /* + * imported object. + */ + importPtr->use++; + $$ = findObjectByModulenameAndName( + importPtr->export.module, $1); + smiFree($1); + } + } + if ($$) + thisParserPtr->parentNodePtr = $$->nodePtr; + } + | moduleName '.' LOWERCASE_IDENTIFIER + { + Object *objectPtr; + Import *importPtr; + char *md; + + if (thisParserPtr->parentNodePtr != smiHandle->rootNodePtr) { + md = smiMalloc(sizeof(char) * + (strlen($1) + strlen($3) + 2)); + sprintf(md, "%s.%s", $1, $3); + smiPrintError(thisParserPtr, + ERR_OIDLABEL_NOT_FIRST, md); + smiFree(md); + } else { + objectPtr = findObjectByModulenameAndName( + $1, $3); + if (objectPtr) { + $$ = objectPtr; + smiFree($1); + smiFree($3); + } else { + importPtr = findImportByModulenameAndName( + $1, $3, thisModulePtr); + if (!importPtr || + (importPtr->kind == KIND_NOTFOUND)) { + /* TODO: check: $1 == thisModule ? */ + /* + * If we are in a MODULE-COMPLIANCE + * statement with a given MODULE... + */ + if (thisParserPtr->complianceModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, $1); + if (objectPtr) { + importPtr = addImport( + $1, + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->complianceModulePtr->export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, $1, + thisParserPtr->complianceModulePtr->export.name); + } + } else if (thisParserPtr->capabilitiesModulePtr) { + objectPtr = + findObjectByModuleAndName( + thisParserPtr->capabilitiesModulePtr, $1); + if (objectPtr) { + importPtr = addImport( + $1, + thisParserPtr); + setImportModulename(importPtr, + thisParserPtr->capabilitiesModulePtr-> + export.name); + addImportFlags(importPtr, + FLAG_INCOMPLIANCE); + importPtr->use++; + } else { + objectPtr = addObject($1, + thisParserPtr->pendingNodePtr, 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_NOT_IN_MODULE, $1, + thisParserPtr->capabilitiesModulePtr->export.name); + } + } else { + /* + * forward referenced node. + * create it, + * marked with FLAG_INCOMPLETE. + */ + objectPtr = addObject($3, + thisParserPtr->pendingNodePtr, + 0, + FLAG_INCOMPLETE, + thisParserPtr); + smiFree($1); + } + $$ = objectPtr; + } else { + /* + * imported object. + */ + importPtr->use++; + $$ = findObjectByModulenameAndName( + importPtr->export.module, $3); + smiFree($1); + smiFree($3); + } + } + if ($$) + thisParserPtr->parentNodePtr = $$->nodePtr; + } + } + | NUMBER + { + Node *nodePtr; + Object *objectPtr; + + nodePtr = findNodeByParentAndSubid(thisParserPtr->parentNodePtr, + $1); + if (nodePtr && nodePtr->lastObjectPtr && + (nodePtr->lastObjectPtr->modulePtr == thisModulePtr)) { + /* + * hopefully, the last defined Object for + * this Node is the one we expect. + */ + $$ = nodePtr->lastObjectPtr; + } else { + objectPtr = addObject(NULL, + thisParserPtr->parentNodePtr, + $1, + FLAG_INCOMPLETE, + thisParserPtr); + $$ = objectPtr; + } + thisParserPtr->parentNodePtr = $$->nodePtr; + } + | LOWERCASE_IDENTIFIER '(' NUMBER ')' + { + Object *objectPtr = NULL; + Object *oldObjectPtr = NULL; + Node *oldNodePtr = NULL; + + /* TODO: search in local module and + * in imported modules + */ + + oldNodePtr = findNodeByParentAndSubid( + thisParserPtr->parentNodePtr, $3); + oldObjectPtr = findObjectByModuleAndName( + thisParserPtr->modulePtr, $1); + + if (oldObjectPtr && + ((oldObjectPtr->nodePtr->subid != $3) || + (oldObjectPtr->nodePtr->parentPtr != thisParserPtr->parentNodePtr))) { + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_OID_CHANGED, + $1); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldObjectPtr->line, + oldObjectPtr->export.name); + objectPtr = addObject($1, + thisParserPtr->parentNodePtr, + $3, 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } else if (oldNodePtr && + oldNodePtr->lastObjectPtr && + oldNodePtr->lastObjectPtr->export.name && + strcmp(oldNodePtr->lastObjectPtr->export.name, $1)) { + smiPrintError(thisParserPtr, + ERR_OIDLABEL_CHANGED, + $1, oldNodePtr->lastObjectPtr->export.name); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldNodePtr->lastObjectPtr->line, + oldNodePtr->lastObjectPtr->export.name); + objectPtr = addObject($1, + thisParserPtr->parentNodePtr, + $3, 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } else { + objectPtr = addObject($1, thisParserPtr->parentNodePtr, + $3, 0, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } + } + | moduleName '.' LOWERCASE_IDENTIFIER '(' NUMBER ')' + { + Object *objectPtr = NULL; + Object *oldObjectPtr = NULL; + Node *oldNodePtr = NULL; + char *md; + + md = smiMalloc(sizeof(char) * + (strlen($1) + strlen($3) + 2)); + sprintf(md, "%s.%s", $1, $3); + + oldNodePtr = findNodeByParentAndSubid( + thisParserPtr->parentNodePtr, $5); + oldObjectPtr = findObjectByModulenameAndName( + $1, $3); + + if (oldObjectPtr && + ((oldObjectPtr->nodePtr->subid != $5) || + (oldObjectPtr->nodePtr->parentPtr != thisParserPtr->parentNodePtr))) { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + smiPrintError(thisParserPtr, + ERR_IDENTIFIER_OID_CHANGED, + $3); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldObjectPtr->line, + oldObjectPtr->export.name); + objectPtr = addObject($3, + thisParserPtr->parentNodePtr, + $5, 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } else if (oldNodePtr && + oldNodePtr->lastObjectPtr && + strcmp(oldNodePtr->lastObjectPtr->export.name, $3)) { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + smiPrintError(thisParserPtr, + ERR_OIDLABEL_CHANGED, + $3, oldNodePtr->lastObjectPtr->export.name); + smiPrintErrorAtLine(thisParserPtr, + ERR_PREVIOUS_DEFINITION, + oldNodePtr->lastObjectPtr->line, + oldNodePtr->lastObjectPtr->export.name); + objectPtr = addObject($3, + thisParserPtr->parentNodePtr, + $5, 0, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } else { + smiPrintError(thisParserPtr, + ERR_ILLEGALLY_QUALIFIED, md); + objectPtr = addObject($3, thisParserPtr->parentNodePtr, + $5, 0, + thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_IMPL_OBJECT); + $$ = objectPtr; + thisParserPtr->parentNodePtr = $$->nodePtr; + } + smiFree(md); + } + ; + +objectIdentifier_defval: subidentifiers_defval + { $$ = NULL; } + ; /* TODO */ + +subidentifiers_defval: subidentifier_defval + { $$ = 0; } + | subidentifiers_defval subidentifier_defval + { $$ = 0; } + ; /* TODO */ + +subidentifier_defval: LOWERCASE_IDENTIFIER '(' NUMBER ')' + { $$ = 0; } + | NUMBER + { $$ = 0; } + ; /* TODO */ + +objectGroupClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_OBJECTGROUP; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + OBJECT_GROUP + { + Import *importPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("OBJECT-GROUP", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "OBJECT-GROUP", "SNMPv2-CONF"); + } + } + ObjectGroupObjectsPart + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $9); + } + ReferPart + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $14; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, SMI_DECL_OBJECTGROUP); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, $7); + setObjectDescription(objectPtr, $9, thisParserPtr); + if ($11) { + setObjectReference(objectPtr, $11, thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, $5); + $$ = 0; + } + ; + +notificationGroupClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_NOTIFICATIONGROUP; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + NOTIFICATION_GROUP + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "NOTIFICATION-GROUP"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("NOTIFICATION-GROUP", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "NOTIFICATION-GROUP", + "SNMPv2-CONF"); + } + } + NotificationsPart + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $9); + } + ReferPart + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $14; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + objectPtr = setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_NOTIFICATIONGROUP); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, $7); + setObjectDescription(objectPtr, $9, thisParserPtr); + if ($11) { + setObjectReference(objectPtr, $11, thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, $5); + $$ = 0; + } + ; + +moduleComplianceClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_MODULECOMPLIANCE; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + MODULE_COMPLIANCE + { + Import *importPtr; + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + importPtr = findImportByName("MODULE-COMPLIANCE", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "MODULE-COMPLIANCE", + "SNMPv2-CONF"); + } + } + STATUS Status + DESCRIPTION Text + { + checkDescr(thisParserPtr, $8); + } + ReferPart + ComplianceModulePart + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + Option *optionPtr; + Refinement *refinementPtr; + List *listPtr; + + objectPtr = $14; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_MODULECOMPLIANCE); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, $6); + setObjectDescription(objectPtr, $8, thisParserPtr); + if ($10) { + setObjectReference(objectPtr, $10, thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + setObjectList(objectPtr, $11.mandatorylistPtr); + objectPtr->optionlistPtr = $11.optionlistPtr; + objectPtr->refinementlistPtr = + $11.refinementlistPtr; + + if ($11.optionlistPtr) { + for (listPtr = $11.optionlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + optionPtr = ((Option *)(listPtr->ptr)); + optionPtr->compliancePtr = objectPtr; + } + } + + /* + * Dirty: Fake the types' names in the + * refinement list: + * ``++type'' + * ``++writetype'' + */ + if ($11.refinementlistPtr) { + for (listPtr = $11.refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + refinementPtr = + ((Refinement *)(listPtr->ptr)); + refinementPtr->compliancePtr = objectPtr; + } + } + + $$ = 0; + } + ; + +ComplianceModulePart: ComplianceModules + { + $$ = $1; + } + ; + +ComplianceModules: ComplianceModule + { + $$ = $1; + } + | ComplianceModules ComplianceModule + { + List *listPtr; + + /* concatenate lists in $1 and $2 */ + if ($1.mandatorylistPtr) { + for (listPtr = $1.mandatorylistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = $2.mandatorylistPtr; + $$.mandatorylistPtr = $1.mandatorylistPtr; + } else { + $$.mandatorylistPtr = $2.mandatorylistPtr; + } + if ($1.optionlistPtr) { + for (listPtr = $1.optionlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = $2.optionlistPtr; + $$.optionlistPtr = $1.optionlistPtr; + } else { + $$.optionlistPtr = $2.optionlistPtr; + } + if ($1.refinementlistPtr) { + for (listPtr = $1.refinementlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + listPtr->nextPtr = $2.refinementlistPtr; + $$.refinementlistPtr = $1.refinementlistPtr; + } else { + $$.refinementlistPtr = $2.refinementlistPtr; + } + } + ; + +ComplianceModule: MODULE ComplianceModuleName + { + /* + * Remember the module. SMIv2 is broken by + * design to allow subsequent clauses to + * refer identifiers that are not + * imported. Although, SMIv2 does not + * require, we will fake it by inserting + * appropriate imports. + */ + if ($2 == thisModulePtr) + thisParserPtr->complianceModulePtr = NULL; + else + thisParserPtr->complianceModulePtr = $2; + } + MandatoryPart + CompliancePart + { + $$.mandatorylistPtr = $4; + $$.optionlistPtr = $5.optionlistPtr; + $$.refinementlistPtr = $5.refinementlistPtr; + if (thisParserPtr->complianceModulePtr) { + checkImports(thisParserPtr->complianceModulePtr, + thisParserPtr); + thisParserPtr->complianceModulePtr = NULL; + } + } + ; + +ComplianceModuleName: UPPERCASE_IDENTIFIER objectIdentifier + { + $$ = findModuleByName($1); + /* TODO: handle objectIdentifier */ + if (!$$) { + $$ = loadModule($1, thisParserPtr); + } + smiFree($1); + } + | UPPERCASE_IDENTIFIER + { + $$ = findModuleByName($1); + if (!$$) { + $$ = loadModule($1, thisParserPtr); + } + smiFree($1); + } + | /* empty, only if contained in MIB module */ + /* TODO: RFC 1904 looks a bit different, is this ok? */ + { + $$ = thisModulePtr; + } + ; + +MandatoryPart: MANDATORY_GROUPS '{' MandatoryGroups '}' + { + $$ = $3; + } + | /* empty */ + { + $$ = NULL; + } + ; + +MandatoryGroups: MandatoryGroup + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | MandatoryGroups ',' MandatoryGroup + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +MandatoryGroup: objectIdentifier + { + /* TODO: check that objectIdentifier is + found, is defined in thisParserPtr->complianceModulePtr, + and is a group node. */ + Import *importPtr; + + $$ = $1; + if (thisParserPtr->complianceModulePtr) { + $$ = findObjectByModuleAndName( + thisParserPtr->complianceModulePtr, + $1->export.name); + } + if (thisParserPtr->complianceModulePtr && $1->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + $1->export.name, thisModulePtr); + if (importPtr) + importPtr->use++; + } + } + ; + +CompliancePart: Compliances + { + $$.mandatorylistPtr = NULL; + $$.optionlistPtr = $1.optionlistPtr; + $$.refinementlistPtr = $1.refinementlistPtr; + } + | /* empty */ + { + $$.mandatorylistPtr = NULL; + $$.optionlistPtr = NULL; + $$.refinementlistPtr = NULL; + } + ; + +Compliances: Compliance + { + $$ = $1; + } + | Compliances Compliance + { + List *listPtr; + int stop; + + $$.mandatorylistPtr = NULL; + + /* check for duplicates in optionlist */ + stop = 0; + if ($2.optionlistPtr) { + for (listPtr = $1.optionlistPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (((Option *)listPtr->ptr)->objectPtr == + ((Option *)$2.optionlistPtr->ptr)->objectPtr) { + smiPrintError(thisParserPtr, + ERR_OPTIONALGROUP_ALREADY_EXISTS, + ((Option *)$2.optionlistPtr->ptr)->objectPtr->export.name); + stop = 1; + $$.optionlistPtr = $1.optionlistPtr; + } + } + } + + /* concatenate optionlists */ + if ($1.optionlistPtr) { + for (listPtr = $1.optionlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + if (!stop) { + listPtr->nextPtr = $2.optionlistPtr; + } + $$.optionlistPtr = $1.optionlistPtr; + } else { + $$.optionlistPtr = $2.optionlistPtr; + } + + /* check for duplicates in refinementlist */ + stop = 0; + if ($2.refinementlistPtr) { + for (listPtr = $1.refinementlistPtr; listPtr; + listPtr = listPtr->nextPtr) { + if (((Refinement *)listPtr->ptr)->objectPtr == + ((Refinement *)$2.refinementlistPtr->ptr)->objectPtr) { + smiPrintError(thisParserPtr, + ERR_REFINEMENT_ALREADY_EXISTS, + ((Refinement *)$2.refinementlistPtr->ptr)->objectPtr->export.name); + stop = 1; + $$.refinementlistPtr = $1.refinementlistPtr; + } + } + } + + /* concatenate refinementlists */ + if ($1.refinementlistPtr) { + for (listPtr = $1.refinementlistPtr; + listPtr->nextPtr; + listPtr = listPtr->nextPtr); + if (!stop) { + listPtr->nextPtr = $2.refinementlistPtr; + } + $$.refinementlistPtr = $1.refinementlistPtr; + } else { + $$.refinementlistPtr = $2.refinementlistPtr; + } + } + ; + +Compliance: ComplianceGroup + { + $$.mandatorylistPtr = NULL; + $$.optionlistPtr = $1; + $$.refinementlistPtr = NULL; + } + | ComplianceObject + { + $$.mandatorylistPtr = NULL; + $$.optionlistPtr = NULL; + $$.refinementlistPtr = $1; + } + ; + +ComplianceGroup: GROUP + { + thisParserPtr->firstNestedStatementLine = thisParserPtr->line; + } + objectIdentifier + DESCRIPTION Text + { + Import *importPtr; + + if (thisParserPtr->complianceModulePtr && $3->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + $3->export.name, + thisModulePtr); + if (importPtr) + importPtr->use++; + } + + checkDescr(thisParserPtr, $5); + + $$ = smiMalloc(sizeof(List)); + $$->nextPtr = NULL; + $$->ptr = smiMalloc(sizeof(Option)); + ((Option *)($$->ptr))->line = thisParserPtr->firstNestedStatementLine; + ((Option *)($$->ptr))->objectPtr = $3; + if (! (thisModulePtr->flags & SMI_FLAG_NODESCR)) { + ((Option *)($$->ptr))->export.description = $5; + } else { + smiFree($5); + } + } + ; + +ComplianceObject: OBJECT + { + thisParserPtr->firstNestedStatementLine = thisParserPtr->line; + } + ObjectName + SyntaxPart + WriteSyntaxPart /* modified for SPPI */ + AccessPart /* modified for SPPI */ + DESCRIPTION Text + { + Import *importPtr; + + if (thisParserPtr->complianceModulePtr && $3->export.name) { + importPtr = findImportByModulenameAndName( + thisParserPtr->complianceModulePtr->export.name, + $3->export.name, + thisModulePtr); + if (importPtr) + importPtr->use++; + } + + checkDescr(thisParserPtr, $8); + + thisParserPtr->flags &= ~FLAG_CREATABLE; + $$ = smiMalloc(sizeof(List)); + $$->nextPtr = NULL; + $$->ptr = smiMalloc(sizeof(Refinement)); + ((Refinement *)($$->ptr))->line = + thisParserPtr->firstNestedStatementLine; + ((Refinement *)($$->ptr))->objectPtr = $3; + ((Refinement *)($$->ptr))->typePtr = $4; + if ($4) { + $4->parentPtr = $3->typePtr; + } + ((Refinement *)($$->ptr))->writetypePtr = $5; + if ($5) { + $5->parentPtr = $3->typePtr; + } + ((Refinement *)($$->ptr))->export.access = $6; + if (! (thisParserPtr->flags & SMI_FLAG_NODESCR)) { + ((Refinement *)($$->ptr))->export.description = $8; + } else { + smiFree($8); + } + } + ; + +SyntaxPart: SYNTAX Syntax + { + if ($2->export.name) { + $$ = duplicateType($2, 0, thisParserPtr); + } else { + $$ = $2; + } + } + | /* empty */ + { + $$ = NULL; + } + ; + +WriteSyntaxPart: WRITE_SYNTAX WriteSyntax + { + /* must not be present in PIBs */ + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "WRITE-SYNTAX"); + if ($2->export.name) { + $$ = duplicateType($2, 0, thisParserPtr); + } else { + $$ = $2; + } + } + | /* empty */ + { + $$ = NULL; + } + ; + +WriteSyntax: Syntax + { + $$ = $1; + } + ; + +AccessPart: MIN_ACCESS Access + { + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "MIN-ACCESS"); + $$ = $2; + } + | PIB_MIN_ACCESS Access + { + if (thisParserPtr->modulePtr->export.language != SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SPPI_CONSTRUCT_IN_MIB, "PIB-MIN-ACCESS"); + if ($2 == SMI_ACCESS_REPORT_ONLY) + smiPrintError(thisParserPtr, ERR_REPORT_ONLY_IN_PIB_MIN_ACCESS); + $$ = $2; + } + | /* empty */ + { + $$ = SMI_ACCESS_UNKNOWN; + } + ; + +agentCapabilitiesClause: LOWERCASE_IDENTIFIER + { + thisParserPtr->firstStatementLine = thisParserPtr->line; + thisParserPtr->currentDecl = SMI_DECL_AGENTCAPABILITIES; + + checkNameLen(thisParserPtr, $1, + ERR_OIDNAME_32, ERR_OIDNAME_64); + smiCheckObjectName(thisParserPtr, + thisModulePtr, $1); + } + AGENT_CAPABILITIES + { + Import *importPtr; + if (thisParserPtr->modulePtr->export.language == SMI_LANGUAGE_SPPI) + smiPrintError(thisParserPtr, ERR_SMI_CONSTRUCT_IN_PIB, "AGENT-CAAPABILITIES"); + + if (thisModulePtr->export.language == SMI_LANGUAGE_UNKNOWN) + thisModulePtr->export.language = SMI_LANGUAGE_SMIV2; + + importPtr = findImportByName("AGENT-CAPABILITIES", + thisModulePtr); + if (importPtr) { + importPtr->use++; + } else { + smiPrintError(thisParserPtr, + ERR_MACRO_NOT_IMPORTED, + "AGENT-CAPABILITIES", + "SNMPv2-CONF"); + } + } + PRODUCT_RELEASE Text + STATUS Status_Capabilities + DESCRIPTION Text + { + checkDescr(thisParserPtr, $10); + } + ReferPart + ModulePart_Capabilities + COLON_COLON_EQUAL '{' objectIdentifier '}' + { + Object *objectPtr; + + objectPtr = $16; + + smiCheckObjectReuse(thisParserPtr, $1, &objectPtr); + + setObjectName(objectPtr, $1, thisParserPtr); + setObjectDecl(objectPtr, + SMI_DECL_AGENTCAPABILITIES); + setObjectLine(objectPtr, thisParserPtr->firstStatementLine, + thisParserPtr); + addObjectFlags(objectPtr, FLAG_REGISTERED); + deleteObjectFlags(objectPtr, FLAG_INCOMPLETE); + setObjectStatus(objectPtr, $8); + setObjectDescription(objectPtr, $10, thisParserPtr); + if ($12) { + setObjectReference(objectPtr, $12, thisParserPtr); + } + setObjectAccess(objectPtr, + SMI_ACCESS_NOT_ACCESSIBLE); + /* + * TODO: PRODUCT_RELEASE Text + * TODO: ModulePart_Capabilities + */ + $$ = 0; + } + ; + +ModulePart_Capabilities: Modules_Capabilities + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +Modules_Capabilities: Module_Capabilities + { $$ = 0; } + | Modules_Capabilities Module_Capabilities + { $$ = 0; } + ; + +Module_Capabilities: SUPPORTS ModuleName_Capabilities + { + /* + * Remember the module. SMIv2 is broken by + * design to allow subsequent clauses to + * refer identifiers that are not + * imported. Although, SMIv2 does not + * require, we will fake it by inserting + * appropriate imports. + */ + if ($2 == thisModulePtr) + thisParserPtr->capabilitiesModulePtr = NULL; + else + thisParserPtr->capabilitiesModulePtr = $2; + } + INCLUDES '{' CapabilitiesGroups '}' + VariationPart + { + if (thisParserPtr->capabilitiesModulePtr) { + checkImports(thisParserPtr->capabilitiesModulePtr, + thisParserPtr); + thisParserPtr->capabilitiesModulePtr = NULL; + } + $$ = 0; + } + ; + +CapabilitiesGroups: CapabilitiesGroup + { +#if 0 + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; +#else + $$ = NULL; +#endif + } + | CapabilitiesGroups ',' CapabilitiesGroup + { +#if 0 + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $3; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; +#else + $$ = NULL; +#endif + } + ; + +CapabilitiesGroup: objectIdentifier + { + $$ = NULL; + } + ; + +ModuleName_Capabilities: UPPERCASE_IDENTIFIER objectIdentifier + { + $$ = findModuleByName($1); + /* TODO: handle objectIdentifier */ + if (!$$) { + $$ = loadModule($1, thisParserPtr); + } + smiFree($1); + } + | UPPERCASE_IDENTIFIER + { + $$ = findModuleByName($1); + if (!$$) { + $$ = loadModule($1, thisParserPtr); + } + smiFree($1); + } + ; + +VariationPart: Variations + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +Variations: Variation + { $$ = 0; } + | Variations Variation + { $$ = 0; } + ; + +Variation: VARIATION ObjectName + { + if ($2) { + variationkind = $2->export.nodekind; + } else { + variationkind = SMI_NODEKIND_UNKNOWN; + } + } + SyntaxPart + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_SYNTAX); + } + } + WriteSyntaxPart + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_WRITESYNTAX); + } + } + VariationAccessPart + CreationPart + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_CREATION); + } + } + DefValPart + { + if (variationkind == SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_NOTIFICATION_VARIATION_DEFVAL); + } else if ($11) { + adjustDefval(thisParserPtr, + $11, $2->typePtr, + thisParserPtr->line); + smiCheckValueType(thisParserPtr, + $11, $2->typePtr, + thisParserPtr->line); + } + } + DESCRIPTION Text + { + thisParserPtr->flags &= ~FLAG_CREATABLE; + $$ = 0; + variationkind = SMI_NODEKIND_UNKNOWN; + + checkDescr(thisParserPtr, $14); + } + ; + +VariationAccessPart: ACCESS VariationAccess + { $$ = $2; } + | /* empty */ + { $$ = 0; } + ; + +VariationAccess: LOWERCASE_IDENTIFIER + { + if (!strcmp($1, "not-implemented")) { + $$ = SMI_ACCESS_NOT_IMPLEMENTED; + } else if (!strcmp($1, "accessible-for-notify")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_NOTIFY; + } + } else if (!strcmp($1, "read-only")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_READ_ONLY; + } + } else if (!strcmp($1, "read-write")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_READ_WRITE; + } + } else if (!strcmp($1, "read-create")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_READ_WRITE; + } + } else if (!strcmp($1, "write-only")) { + if (variationkind == + SMI_NODEKIND_NOTIFICATION) { + smiPrintError(thisParserPtr, + ERR_INVALID_NOTIFICATION_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } else { + $$ = SMI_ACCESS_READ_WRITE; /* TODO */ + smiPrintError(thisParserPtr, + ERR_SMIV2_WRITE_ONLY); + } + } else { + smiPrintError(thisParserPtr, + ERR_INVALID_VARIATION_ACCESS, + $1); + $$ = SMI_ACCESS_UNKNOWN; + } + } + ; + +CreationPart: CREATION_REQUIRES '{' Cells '}' + { $$ = 0; } + | /* empty */ + { $$ = 0; } + ; + +Cells: Cell + { $$ = 0; } + | Cells ',' Cell + { $$ = 0; } + ; + +Cell: ObjectName + { $$ = 0; } + ; + +%% + +#endif diff --git a/lib/parser-sming.c b/lib/parser-sming.c new file mode 100644 index 0000000..823b5a7 --- /dev/null +++ b/lib/parser-sming.c @@ -0,0 +1,5601 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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, 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. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse smingparse +#define yylex sminglex +#define yyerror smingerror +#define yylval sminglval +#define yychar smingchar +#define yydebug smingdebug +#define yynerrs smingnerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DOT = 258, + DOT_DOT = 259, + COLON_COLON = 260, + ucIdentifier = 261, + lcIdentifier = 262, + floatValue = 263, + textSegment = 264, + decimalNumber = 265, + hexadecimalNumber = 266, + OID = 267, + moduleKeyword = 268, + importKeyword = 269, + revisionKeyword = 270, + identityKeyword = 271, + oidKeyword = 272, + dateKeyword = 273, + organizationKeyword = 274, + contactKeyword = 275, + descriptionKeyword = 276, + referenceKeyword = 277, + extensionKeyword = 278, + typedefKeyword = 279, + typeKeyword = 280, + formatKeyword = 281, + unitsKeyword = 282, + statusKeyword = 283, + accessKeyword = 284, + defaultKeyword = 285, + impliedKeyword = 286, + indexKeyword = 287, + augmentsKeyword = 288, + reordersKeyword = 289, + sparseKeyword = 290, + expandsKeyword = 291, + createKeyword = 292, + membersKeyword = 293, + objectsKeyword = 294, + mandatoryKeyword = 295, + optionalKeyword = 296, + refineKeyword = 297, + abnfKeyword = 298, + OctetStringKeyword = 299, + ObjectIdentifierKeyword = 300, + Integer32Keyword = 301, + Unsigned32Keyword = 302, + Integer64Keyword = 303, + Unsigned64Keyword = 304, + Float32Keyword = 305, + Float64Keyword = 306, + Float128Keyword = 307, + BitsKeyword = 308, + EnumerationKeyword = 309, + currentKeyword = 310, + deprecatedKeyword = 311, + obsoleteKeyword = 312, + readonlyKeyword = 313, + readwriteKeyword = 314, + parentKeyword = 315, + classKeyword = 316, + extendsKeyword = 317, + attributeKeyword = 318, + uniqueKeyword = 319, + eventKeyword = 320, + PointerKeyword = 321, + eventonlyKeyword = 322, + neginfKeyword = 323, + posinfKeyword = 324, + snanKeyword = 325, + qnanKeyword = 326 + }; +#endif +/* Tokens. */ +#define DOT 258 +#define DOT_DOT 259 +#define COLON_COLON 260 +#define ucIdentifier 261 +#define lcIdentifier 262 +#define floatValue 263 +#define textSegment 264 +#define decimalNumber 265 +#define hexadecimalNumber 266 +#define OID 267 +#define moduleKeyword 268 +#define importKeyword 269 +#define revisionKeyword 270 +#define identityKeyword 271 +#define oidKeyword 272 +#define dateKeyword 273 +#define organizationKeyword 274 +#define contactKeyword 275 +#define descriptionKeyword 276 +#define referenceKeyword 277 +#define extensionKeyword 278 +#define typedefKeyword 279 +#define typeKeyword 280 +#define formatKeyword 281 +#define unitsKeyword 282 +#define statusKeyword 283 +#define accessKeyword 284 +#define defaultKeyword 285 +#define impliedKeyword 286 +#define indexKeyword 287 +#define augmentsKeyword 288 +#define reordersKeyword 289 +#define sparseKeyword 290 +#define expandsKeyword 291 +#define createKeyword 292 +#define membersKeyword 293 +#define objectsKeyword 294 +#define mandatoryKeyword 295 +#define optionalKeyword 296 +#define refineKeyword 297 +#define abnfKeyword 298 +#define OctetStringKeyword 299 +#define ObjectIdentifierKeyword 300 +#define Integer32Keyword 301 +#define Unsigned32Keyword 302 +#define Integer64Keyword 303 +#define Unsigned64Keyword 304 +#define Float32Keyword 305 +#define Float64Keyword 306 +#define Float128Keyword 307 +#define BitsKeyword 308 +#define EnumerationKeyword 309 +#define currentKeyword 310 +#define deprecatedKeyword 311 +#define obsoleteKeyword 312 +#define readonlyKeyword 313 +#define readwriteKeyword 314 +#define parentKeyword 315 +#define classKeyword 316 +#define extendsKeyword 317 +#define attributeKeyword 318 +#define uniqueKeyword 319 +#define eventKeyword 320 +#define PointerKeyword 321 +#define eventonlyKeyword 322 +#define neginfKeyword 323 +#define posinfKeyword 324 +#define snanKeyword 325 +#define qnanKeyword 326 + + + + +/* Copy the first part of user declarations. */ +#line 14 "parser-sming.y" + + +#include + +#ifdef BACKEND_SMING + +#define _ISOC99_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#include +#endif + +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "error.h" +#include "parser-sming.h" +#include "scanner-sming.h" +#include "data.h" +#include "check.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + +/* + * These arguments are passed to yyparse() and yylex(). + */ +#define YYPARSE_PARAM parserPtr +#define YYLEX_PARAM parserPtr + + + +#define thisParserPtr ((Parser *)parserPtr) +#define thisModulePtr (((Parser *)parserPtr)->modulePtr) + + + +/* + * NOTE: The argument lvalp ist not really a void pointer. Unfortunately, + * we don't know it better at this point. bison generated C code declares + * YYSTYPE just a few lines below based on the `%union' declaration. + */ +extern int yylex(void *lvalp, Parser *parserPtr); + + + +static char *typeIdentifier, *macroIdentifier, *identityIdentifier, + *classIdentifier, *attributeIdentifier; +static char *importModulename = NULL; +static Type *typePtr = NULL; +static Macro *macroPtr = NULL; +static Identity *identityPtr = NULL; +static Class *classPtr = NULL; +static Attribute *attributePtr = NULL; +static Event *eventPtr = NULL; +static SmiBasetype defaultBasetype = SMI_BASETYPE_UNKNOWN; +static NamedNumber *namedNumberPtr = NULL; +static int bitsFlag = 0; /* used to differentiate bits definition from enum*/ +static int attributeFlag = 0; /* + *Used to differentiate between attribute and + *and typedef to tie the type statement + *respectively to class or module. + */ + + +#define SMI_EPOCH 631152000 /* 01 Jan 1990 00:00:00 */ + + +static Type * +findType(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + Import *importPtr; + char *module, *type; + + type = strstr(spec, "::"); + if (!type) { + typePtr = findTypeByModuleAndName(modulePtr, spec); + if (!typePtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + typePtr = findTypeByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + type = &type[2]; + typePtr = findTypeByModulenameAndName(module, type); + } + return typePtr; +} + + +static Identity * +findIdentity(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Identity *identityPtr; + Import *importPtr; + char *module, *identity; + + identity = strstr(spec, "::"); + if (!identity) { + identityPtr = findIdentityByModuleAndName(modulePtr, spec); + if (!identityPtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + identityPtr = findIdentityByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + identity = &identity[2]; + identityPtr = findIdentityByModulenameAndName(module, identity); + } + return identityPtr; +} + +static Class * +findClass(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Class *classPtr; + Import *importPtr; + char *module, *class; + + class = strstr(spec, "::"); + if (!class) { + classPtr = findClassByModuleAndName(modulePtr, spec); + if (!classPtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + classPtr = findClassByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + class = &class[2]; + classPtr = findClassByModulenameAndName(module, class); + } + return classPtr; +} + +static void +checkTypes(Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + + for(typePtr = modulePtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + + /* + * Complain about empty description clauses. + */ + + if (! parserPtr->flags & SMI_FLAG_NODESCR + && (! typePtr->export.description + || ! typePtr->export.description[0])) { + smiPrintErrorAtLine(parserPtr, ERR_EMPTY_DESCRIPTION, + typePtr->line, typePtr->export.name); + } + + smiCheckNamedNumberRedefinition(parserPtr, typePtr); + smiCheckNamedNumberSubtyping(parserPtr, typePtr); + } +} + + + +static time_t +checkDate(Parser *parserPtr, char *date) +{ + struct tm tm; + time_t anytime; + int i, len; + char *p; + + memset(&tm, 0, sizeof(tm)); + anytime = 0; + + len = strlen(date); + if (len == 10 || len == 16) { + for (i = 0; i < len; i++) { + if (((i < 4 || i == 5 || i == 6 || i == 8 || i == 9 || i == 11 + || i == 12 || i == 14 || i == 15) && ! isdigit((int)date[i])) + || ((i == 4 || i == 7) && date[i] != '-') + || (i == 10 && date[i] != ' ') + || (i == 13 && date[i] != ':')) { + smiPrintError(parserPtr, ERR_DATE_CHARACTER, date); + anytime = (time_t) -1; + break; + } + } + } else { + smiPrintError(parserPtr, ERR_DATE_LENGTH, date); + anytime = (time_t) -1; + } + + if (anytime == 0) { + for (i = 0, p = date, tm.tm_year = 0; i < 4; i++, p++) { + tm.tm_year = tm.tm_year * 10 + (*p - '0'); + } + p++; + tm.tm_mon = (p[0]-'0') * 10 + (p[1]-'0'); + p += 3; + tm.tm_mday = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + if (len == 16) { + p++; + tm.tm_hour = (p[0]-'0') * 10 + (p[1]-'0'); + p += 3; + tm.tm_min = (p[0]-'0') * 10 + (p[1]-'0'); + } + + if (tm.tm_mon < 1 || tm.tm_mon > 12) { + smiPrintError(parserPtr, ERR_DATE_MONTH, date); + } + if (tm.tm_mday < 1 || tm.tm_mday > 31) { + smiPrintError(parserPtr, ERR_DATE_DAY, date); + } + if (tm.tm_hour < 0 || tm.tm_hour > 23) { + smiPrintError(parserPtr, ERR_DATE_HOUR, date); + } + if (tm.tm_min < 0 || tm.tm_min > 59) { + smiPrintError(parserPtr, ERR_DATE_MINUTES, date); + } + + tm.tm_year -= 1900; + tm.tm_mon -= 1; + tm.tm_isdst = 0; + + anytime = timegm(&tm); + + if (anytime == (time_t) -1) { + smiPrintError(parserPtr, ERR_DATE_VALUE, date); + } else { + if (anytime < SMI_EPOCH) { + smiPrintError(parserPtr, ERR_DATE_IN_PAST, date); + } + if (anytime > time(NULL)) { + smiPrintError(parserPtr, ERR_DATE_IN_FUTURE, date); + } + } + } + + return (anytime == (time_t) -1) ? 0 : anytime; +} + +static char *hexToStr(char *hexStr, int len) +{ + union{ + char ch; + long l; + } hex2char; + + char* res =(char*)malloc(sizeof(char)*len/2+1); + char* tmp =(char*)malloc(sizeof(char)*3); + int i,j = 0; + + tmp[2]=0; + for(i=2; i+1basetype != SMI_BASETYPE_BITS) + return; + + bitsListPtr = typePtr->listPtr; + valueListPtr = (void *)valuePtr->value.ptr; + for (nBits = 0, p = bitsListPtr; p; p = p->nextPtr) { + if (nBits < 1+((NamedNumber *)(p->ptr))->export.value.value.unsigned64) { + nBits = 1+((NamedNumber *)(p->ptr))->export.value.value.unsigned64; + } + } + valuePtr->value.ptr = smiMalloc((nBits+7)/8); + memset(valuePtr->value.ptr, 0, (nBits+7)/8); + valuePtr->len = (nBits+7)/8; + for (p = valueListPtr; p;) { + for (pp = bitsListPtr; pp; pp = pp->nextPtr) { + if (!strcmp(p->ptr, + ((NamedNumber *)(pp->ptr))->export.name)) { + bit = (int)(((NamedNumber *)(pp->ptr))->export.value.value.unsigned64); + valuePtr->value.ptr[bit/8] |= + 1 << (7-(bit%8)); + } + } + smiFree(p->ptr); + nextPtr = p->nextPtr; + smiFree(p); + p = nextPtr; + } +} + + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 360 "parser-sming.y" +{ + char *id; /* identifier name */ + int rc; /* >=0: ok, <0: error */ + time_t date; /* a date value */ + char *text; + Module *modulePtr; + Node *nodePtr; + Object *objectPtr; + Identity *identityPtr; + Macro *macroPtr; + Type *typePtr; + Class *classPtr; + Attribute *attributePtr; + Event *eventPtr; + Index index; + Option *optionPtr; + Refinement *refinementPtr; + SmiStatus status; + SmiAccess access; + NamedNumber *namedNumberPtr; + Range *rangePtr; + SmiValue *valuePtr; + List *listPtr; + Revision *revisionPtr; +} +/* Line 187 of yacc.c. */ +#line 600 "parser-sming.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 613 "parser-sming.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 542 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 80 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 175 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 271 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 545 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 326 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 75, 76, 2, 2, 78, 79, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 74, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 72, 77, 73, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 7, 9, 11, 14, 17, 18, + 19, 20, 21, 22, 50, 51, 53, 55, 58, 61, + 62, 63, 64, 65, 66, 85, 86, 88, 90, 93, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 130, + 131, 133, 135, 138, 141, 142, 143, 144, 145, 146, + 147, 170, 171, 173, 175, 178, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 217, 218, 220, 222, + 225, 228, 229, 230, 231, 232, 249, 250, 252, 254, + 257, 260, 261, 262, 276, 277, 279, 281, 284, 287, + 299, 300, 302, 304, 307, 310, 311, 312, 313, 314, + 315, 334, 340, 346, 352, 358, 364, 365, 368, 374, + 375, 378, 384, 385, 388, 394, 395, 398, 406, 408, + 412, 413, 416, 422, 423, 426, 432, 433, 436, 442, + 444, 446, 448, 449, 452, 458, 459, 462, 468, 469, + 472, 478, 479, 482, 488, 490, 492, 494, 496, 499, + 501, 504, 507, 510, 513, 516, 519, 522, 525, 528, + 529, 533, 536, 538, 541, 544, 547, 550, 553, 556, + 559, 562, 565, 566, 570, 573, 576, 577, 580, 582, + 584, 585, 588, 595, 596, 598, 600, 603, 608, 611, + 612, 614, 619, 620, 623, 630, 631, 633, 635, 638, + 643, 646, 647, 649, 654, 656, 658, 660, 662, 663, + 666, 672, 678, 682, 683, 685, 687, 690, 695, 703, + 707, 708, 710, 712, 715, 720, 726, 728, 732, 733, + 735, 737, 740, 745, 747, 749, 753, 755, 759, 761, + 764, 765, 767, 769, 772, 775, 777, 779, 781, 783, + 785, 788, 790, 792, 795, 797, 799, 801, 803, 807, + 809, 811, 813, 815, 817, 819, 822, 824, 826, 827, + 828, 829 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 81, 0, -1, 253, 82, -1, -1, 83, -1, 84, + -1, 83, 84, -1, 85, 253, -1, -1, -1, -1, + -1, -1, 13, 252, 6, 86, 253, 72, 254, 143, + 165, 254, 87, 166, 254, 88, 186, 254, 89, 187, + 90, 149, 91, 153, 100, 112, 73, 253, 74, -1, + -1, 92, -1, 93, -1, 92, 93, -1, 94, 254, + -1, -1, -1, -1, -1, -1, 23, 252, 7, 95, + 253, 72, 254, 171, 96, 185, 97, 187, 98, 189, + 99, 73, 253, 74, -1, -1, 101, -1, 102, -1, + 101, 102, -1, 103, 254, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 24, 252, 6, 104, 253, 72, + 254, 162, 254, 105, 178, 106, 167, 107, 169, 108, + 171, 109, 185, 110, 187, 111, 73, 253, 74, -1, + -1, 113, -1, 114, -1, 113, 114, -1, 115, 254, + -1, -1, -1, -1, -1, -1, -1, 61, 252, 6, + 116, 253, 72, 254, 176, 117, 122, 173, 118, 135, + 171, 119, 185, 120, 187, 121, 73, 253, 74, -1, + -1, 123, -1, 124, -1, 123, 124, -1, 125, 254, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 63, 252, 7, 126, 253, 72, 254, 163, 127, 180, + 128, 178, 129, 167, 130, 169, 131, 171, 132, 185, + 133, 187, 134, 73, 253, 74, -1, -1, 136, -1, + 137, -1, 136, 137, -1, 138, 254, -1, -1, -1, + -1, -1, 65, 252, 7, 139, 253, 72, 254, 171, + 140, 185, 141, 187, 142, 73, 253, 74, -1, -1, + 144, -1, 145, -1, 144, 145, -1, 146, 254, -1, + -1, -1, 14, 252, 6, 147, 253, 75, 253, 226, + 148, 253, 76, 253, 74, -1, -1, 150, -1, 151, + -1, 150, 151, -1, 152, 254, -1, 15, 253, 72, + 254, 164, 254, 186, 254, 73, 253, 74, -1, -1, + 154, -1, 155, -1, 154, 155, -1, 156, 254, -1, + -1, -1, -1, -1, -1, 16, 252, 7, 157, 253, + 72, 254, 183, 158, 171, 159, 185, 160, 187, 161, + 73, 253, 74, -1, 25, 252, 191, 253, 74, -1, + 25, 252, 192, 253, 74, -1, 18, 252, 242, 253, + 74, -1, 19, 252, 238, 253, 74, -1, 20, 252, + 238, 253, 74, -1, -1, 168, 254, -1, 26, 252, + 243, 253, 74, -1, -1, 170, 254, -1, 27, 252, + 244, 253, 74, -1, -1, 172, 254, -1, 28, 252, + 247, 253, 74, -1, -1, 174, 254, -1, 64, 252, + 75, 175, 76, 253, 74, -1, 251, -1, 7, 232, + 251, -1, -1, 177, 254, -1, 62, 252, 6, 253, + 74, -1, -1, 179, 254, -1, 30, 252, 245, 253, + 74, -1, -1, 181, 254, -1, 29, 252, 182, 253, + 74, -1, 58, -1, 59, -1, 67, -1, -1, 184, + 254, -1, 60, 252, 7, 253, 74, -1, -1, 186, + 254, -1, 21, 252, 238, 253, 74, -1, -1, 188, + 254, -1, 22, 252, 238, 253, 74, -1, -1, 190, + 254, -1, 43, 252, 238, 253, 74, -1, 193, -1, + 197, -1, 195, -1, 198, -1, 44, 201, -1, 45, + -1, 46, 201, -1, 47, 201, -1, 48, 201, -1, + 49, 201, -1, 50, 209, -1, 51, 209, -1, 52, + 209, -1, 66, 218, -1, 54, 220, -1, -1, 53, + 194, 220, -1, 44, 201, -1, 45, -1, 46, 201, + -1, 47, 201, -1, 48, 201, -1, 49, 201, -1, + 50, 209, -1, 51, 209, -1, 52, 209, -1, 66, + 218, -1, 54, 220, -1, -1, 53, 196, 220, -1, + 236, 199, -1, 236, 199, -1, -1, 253, 200, -1, + 202, -1, 210, -1, -1, 253, 202, -1, 75, 253, + 206, 203, 253, 76, -1, -1, 204, -1, 205, -1, + 204, 205, -1, 253, 77, 253, 206, -1, 250, 207, + -1, -1, 208, -1, 253, 4, 253, 250, -1, -1, + 253, 210, -1, 75, 253, 214, 211, 253, 76, -1, + -1, 212, -1, 213, -1, 212, 213, -1, 253, 77, + 253, 214, -1, 8, 215, -1, -1, 216, -1, 253, + 4, 253, 8, -1, 68, -1, 69, -1, 71, -1, + 70, -1, -1, 253, 219, -1, 75, 253, 237, 253, + 76, -1, 75, 253, 221, 253, 76, -1, 225, 222, + 251, -1, -1, 223, -1, 224, -1, 223, 224, -1, + 253, 78, 253, 225, -1, 7, 253, 75, 253, 250, + 253, 76, -1, 235, 227, 251, -1, -1, 228, -1, + 229, -1, 228, 229, -1, 253, 78, 253, 235, -1, + 75, 253, 231, 253, 76, -1, 251, -1, 7, 232, + 251, -1, -1, 233, -1, 234, -1, 233, 234, -1, + 253, 78, 253, 7, -1, 6, -1, 7, -1, 6, + 5, 6, -1, 6, -1, 6, 5, 7, -1, 7, + -1, 9, 239, -1, -1, 240, -1, 241, -1, 240, + 241, -1, 253, 9, -1, 9, -1, 9, -1, 9, + -1, 230, -1, 10, -1, 79, 10, -1, 11, -1, + 8, -1, 79, 8, -1, 217, -1, 238, -1, 237, + -1, 246, -1, 6, 5, 12, -1, 12, -1, 55, + -1, 56, -1, 57, -1, 11, -1, 10, -1, 79, + 10, -1, 248, -1, 249, -1, -1, -1, -1, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 611, 611, 622, 625, 631, 635, 650, 665, 695, + 702, 709, 716, 664, 736, 739, 749, 753, 769, 784, + 793, 799, 806, 813, 783, 827, 830, 840, 844, 860, + 875, 889, 909, 932, 941, 947, 953, 960, 874, 978, + 981, 991, 995, 1011, 1026, 1042, 1048, 1091, 1097, 1104, + 1025, 1118, 1121, 1131, 1135, 1151, 1166, 1180, 1191, 1211, + 1228, 1244, 1256, 1261, 1266, 1165, 1279, 1282, 1292, 1296, + 1312, 1327, 1333, 1338, 1343, 1326, 1355, 1358, 1364, 1368, + 1383, 1398, 1403, 1397, 1430, 1433, 1439, 1443, 1458, 1472, + 1482, 1485, 1495, 1499, 1515, 1530, 1538, 1544, 1550, 1557, + 1529, 1568, 1574, 1580, 1586, 1592, 1599, 1602, 1608, 1615, + 1618, 1624, 1631, 1634, 1640, 1647, 1650, 1656, 1662, 1670, + 1682, 1685, 1691, 1702, 1705, 1711, 1718, 1721, 1727, 1733, + 1737, 1741, 1748, 1751, 1757, 1767, 1770, 1776, 1783, 1786, + 1792, 1799, 1802, 1808, 1816, 1820, 1826, 1830, 1837, 1852, + 1856, 1871, 1886, 1901, 1916, 1931, 1946, 1961, 1972, 1988, + 1987, 2016, 2028, 2034, 2047, 2060, 2073, 2086, 2099, 2112, + 2125, 2134, 2148, 2147, 2173, 2187, 2220, 2223, 2229, 2233, + 2240, 2243, 2249, 2259, 2262, 2268, 2274, 2287, 2293, 2308, + 2311, 2317, 2324, 2327, 2333, 2343, 2346, 2352, 2358, 2371, + 2377, 2394, 2397, 2403, 2410, 2414, 2418, 2422, 2429, 2432, + 2441, 2447, 2453, 2463, 2466, 2472, 2478, 2493, 2499, 2507, + 2516, 2519, 2525, 2531, 2544, 2550, 2556, 2560, 2570, 2573, + 2579, 2585, 2598, 2604, 2608, 2614, 2625, 2631, 2640, 2646, + 2666, 2669, 2675, 2679, 2689, 2695, 2701, 2707, 2720, 2740, + 2778, 2798, 2835, 2883, 2924, 2965, 2978, 3011, 3025, 3034, + 3041, 3045, 3049, 3055, 3061, 3069, 3082, 3086, 3097, 3104, + 3110, 3116 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "DOT", "DOT_DOT", "COLON_COLON", + "ucIdentifier", "lcIdentifier", "floatValue", "textSegment", + "decimalNumber", "hexadecimalNumber", "OID", "moduleKeyword", + "importKeyword", "revisionKeyword", "identityKeyword", "oidKeyword", + "dateKeyword", "organizationKeyword", "contactKeyword", + "descriptionKeyword", "referenceKeyword", "extensionKeyword", + "typedefKeyword", "typeKeyword", "formatKeyword", "unitsKeyword", + "statusKeyword", "accessKeyword", "defaultKeyword", "impliedKeyword", + "indexKeyword", "augmentsKeyword", "reordersKeyword", "sparseKeyword", + "expandsKeyword", "createKeyword", "membersKeyword", "objectsKeyword", + "mandatoryKeyword", "optionalKeyword", "refineKeyword", "abnfKeyword", + "OctetStringKeyword", "ObjectIdentifierKeyword", "Integer32Keyword", + "Unsigned32Keyword", "Integer64Keyword", "Unsigned64Keyword", + "Float32Keyword", "Float64Keyword", "Float128Keyword", "BitsKeyword", + "EnumerationKeyword", "currentKeyword", "deprecatedKeyword", + "obsoleteKeyword", "readonlyKeyword", "readwriteKeyword", + "parentKeyword", "classKeyword", "extendsKeyword", "attributeKeyword", + "uniqueKeyword", "eventKeyword", "PointerKeyword", "eventonlyKeyword", + "neginfKeyword", "posinfKeyword", "snanKeyword", "qnanKeyword", "'{'", + "'}'", "';'", "'('", "')'", "'|'", "','", "'-'", "$accept", "smingFile", + "moduleStatement_optsep_0n", "moduleStatement_optsep_1n", + "moduleStatement_optsep", "moduleStatement", "@1", "@2", "@3", "@4", + "@5", "extensionStatement_stmtsep_0n", "extensionStatement_stmtsep_1n", + "extensionStatement_stmtsep", "extensionStatement", "@6", "@7", "@8", + "@9", "@10", "typedefStatement_stmtsep_0n", + "typedefStatement_stmtsep_1n", "typedefStatement_stmtsep", + "typedefStatement", "@11", "@12", "@13", "@14", "@15", "@16", "@17", + "@18", "classStatement_stmtsep_0n", "classStatement_stmtsep_1n", + "classStatement_stmtsep", "classStatement", "@19", "@20", "@21", "@22", + "@23", "@24", "attributeStatement_stmtsep_0n", + "attributeStatement_stmtsep_1n", "attributeStatement_stmtsep", + "attributeStatement", "@25", "@26", "@27", "@28", "@29", "@30", "@31", + "@32", "@33", "eventStatement_stmtsep_0n", "eventStatement_stmtsep_1n", + "eventStatement_stmtsep", "eventStatement", "@34", "@35", "@36", "@37", + "importStatement_stmtsep_0n", "importStatement_stmtsep_1n", + "importStatement_stmtsep", "importStatement", "@38", "@39", + "revisionStatement_stmtsep_0n", "revisionStatement_stmtsep_1n", + "revisionStatement_stmtsep", "revisionStatement", + "identityStatement_stmtsep_0n", "identityStatement_stmtsep_1n", + "identityStatement_stmtsep", "identityStatement", "@40", "@41", "@42", + "@43", "@44", "typedefTypeStatement", "attributeTypeStatement", + "dateStatement", "organizationStatement", "contactStatement", + "formatStatement_stmtsep_01", "formatStatement", + "unitsStatement_stmtsep_01", "unitsStatement", + "statusStatement_stmtsep_01", "statusStatement", + "uniqueStatement_stmtsep_01", "uniqueStatement", "uniqueSpec", + "extendsStatement_stmtsep_01", "extendsStatement", + "defaultStatement_stmtsep_01", "defaultStatement", + "accessStatement_stmtsep_01", "accessStatement", "access", + "parentStatement_stmtsep_01", "parentStatement", + "descriptionStatement_stmtsep_01", "descriptionStatement", + "referenceStatement_stmtsep_01", "referenceStatement", + "abnfStatement_stmtsep_01", "abnfStatement", + "refinedBaseType_refinedType", "attribute_refinedBaseType_refinedType", + "refinedBaseType", "@45", "attribute_refinedBaseType", "@46", + "refinedType", "attribute_refinedType", "optsep_anySpec_01", "anySpec", + "optsep_numberSpec_01", "numberSpec", "furtherNumberElement_0n", + "furtherNumberElement_1n", "furtherNumberElement", "numberElement", + "numberUpperLimit_01", "numberUpperLimit", "optsep_floatSpec_01", + "floatSpec", "furtherFloatElement_0n", "furtherFloatElement_1n", + "furtherFloatElement", "floatElement", "floatUpperLimit_01", + "floatUpperLimit", "specialFloatValue", "optsep_pointerRestr_01", + "pointerRestr", "bitsOrEnumerationSpec", "bitsOrEnumerationList", + "furtherBitsOrEnumerationItem_0n", "furtherBitsOrEnumerationItem_1n", + "furtherBitsOrEnumerationItem", "bitsOrEnumerationItem", + "identifierList", "furtherIdentifier_0n", "furtherIdentifier_1n", + "furtherIdentifier", "bitsValue", "bitsList", "furtherLcIdentifier_0n", + "furtherLcIdentifier_1n", "furtherLcIdentifier", "identifier", + "qucIdentifier", "qlcIdentifier", "text", "optsep_textSegment_0n", + "optsep_textSegment_1n", "optsep_textSegment", "date", "format", "units", + "anyValue", "qOID", "status", "number", "negativeNumber", "signedNumber", + "optsep_comma_01", "sep", "optsep", "stmtsep", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 123, 125, 59, 40, 41, 124, 44, 45 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 80, 81, 82, 82, 83, 83, 84, 86, 87, + 88, 89, 90, 85, 91, 91, 92, 92, 93, 95, + 96, 97, 98, 99, 94, 100, 100, 101, 101, 102, + 104, 105, 106, 107, 108, 109, 110, 111, 103, 112, + 112, 113, 113, 114, 116, 117, 118, 119, 120, 121, + 115, 122, 122, 123, 123, 124, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 125, 135, 135, 136, 136, + 137, 139, 140, 141, 142, 138, 143, 143, 144, 144, + 145, 147, 148, 146, 149, 149, 150, 150, 151, 152, + 153, 153, 154, 154, 155, 157, 158, 159, 160, 161, + 156, 162, 163, 164, 165, 166, 167, 167, 168, 169, + 169, 170, 171, 171, 172, 173, 173, 174, 175, 175, + 176, 176, 177, 178, 178, 179, 180, 180, 181, 182, + 182, 182, 183, 183, 184, 185, 185, 186, 187, 187, + 188, 189, 189, 190, 191, 191, 192, 192, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 194, + 193, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 196, 195, 197, 198, 199, 199, 200, 200, + 201, 201, 202, 203, 203, 204, 204, 205, 206, 207, + 207, 208, 209, 209, 210, 211, 211, 212, 212, 213, + 214, 215, 215, 216, 217, 217, 217, 217, 218, 218, + 219, 220, 221, 222, 222, 223, 223, 224, 225, 226, + 227, 227, 228, 228, 229, 230, 231, 231, 232, 232, + 233, 233, 234, 235, 235, 236, 236, 237, 237, 238, + 239, 239, 240, 240, 241, 242, 243, 244, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, + 247, 247, 247, 248, 248, 249, 250, 250, 251, 252, + 253, 254 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 0, 1, 1, 2, 2, 0, 0, + 0, 0, 0, 27, 0, 1, 1, 2, 2, 0, + 0, 0, 0, 0, 18, 0, 1, 1, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, + 22, 0, 1, 1, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 0, 1, 1, 2, + 2, 0, 0, 0, 0, 16, 0, 1, 1, 2, + 2, 0, 0, 13, 0, 1, 1, 2, 2, 11, + 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, + 18, 5, 5, 5, 5, 5, 0, 2, 5, 0, + 2, 5, 0, 2, 5, 0, 2, 7, 1, 3, + 0, 2, 5, 0, 2, 5, 0, 2, 5, 1, + 1, 1, 0, 2, 5, 0, 2, 5, 0, 2, + 5, 0, 2, 5, 1, 1, 1, 1, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, + 3, 2, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 3, 2, 2, 0, 2, 1, 1, + 0, 2, 6, 0, 1, 1, 2, 4, 2, 0, + 1, 4, 0, 2, 6, 0, 1, 1, 2, 4, + 2, 0, 1, 4, 1, 1, 1, 1, 0, 2, + 5, 5, 3, 0, 1, 1, 2, 4, 7, 3, + 0, 1, 1, 2, 4, 5, 1, 3, 0, 1, + 1, 2, 4, 1, 1, 3, 1, 3, 1, 2, + 0, 1, 1, 2, 2, 1, 1, 1, 1, 1, + 2, 1, 1, 2, 1, 1, 1, 1, 3, 1, + 1, 1, 1, 1, 1, 2, 1, 1, 0, 0, + 0, 0 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 270, 0, 3, 1, 269, 2, 4, 5, 270, 0, + 6, 7, 8, 270, 0, 271, 76, 269, 0, 77, + 78, 271, 0, 269, 271, 79, 80, 81, 0, 9, + 270, 240, 270, 0, 0, 239, 241, 242, 0, 0, + 269, 271, 270, 243, 244, 104, 0, 10, 0, 270, + 0, 233, 234, 82, 220, 0, 269, 271, 270, 268, + 221, 222, 0, 105, 0, 11, 0, 219, 223, 270, + 270, 138, 270, 0, 0, 269, 12, 271, 0, 224, + 137, 0, 84, 139, 83, 270, 270, 14, 85, 86, + 271, 0, 0, 269, 90, 15, 16, 271, 87, 88, + 140, 271, 0, 269, 25, 91, 92, 271, 17, 18, + 0, 19, 0, 269, 39, 26, 27, 271, 93, 94, + 269, 271, 270, 95, 0, 269, 0, 40, 41, 271, + 28, 29, 0, 0, 0, 270, 30, 0, 270, 42, + 43, 245, 270, 271, 271, 0, 270, 44, 0, 0, + 0, 112, 271, 0, 270, 13, 103, 270, 269, 20, + 271, 132, 271, 0, 0, 0, 135, 113, 269, 96, + 271, 0, 271, 89, 260, 261, 262, 270, 21, 271, + 0, 112, 133, 269, 271, 120, 0, 138, 136, 270, + 97, 0, 31, 269, 45, 271, 114, 22, 0, 135, + 236, 180, 149, 180, 180, 180, 180, 192, 192, 192, + 159, 0, 208, 270, 144, 145, 176, 123, 0, 51, + 121, 141, 134, 98, 0, 148, 0, 150, 151, 152, + 153, 154, 0, 155, 156, 0, 270, 158, 157, 0, + 0, 174, 0, 269, 32, 271, 270, 269, 115, 52, + 53, 271, 269, 23, 271, 138, 235, 270, 181, 270, + 193, 160, 0, 270, 209, 101, 270, 177, 178, 179, + 0, 106, 124, 0, 0, 269, 46, 271, 54, 55, + 0, 0, 142, 99, 0, 0, 270, 270, 213, 0, + 0, 0, 238, 252, 249, 251, 259, 204, 205, 207, + 206, 270, 0, 254, 248, 256, 255, 270, 257, 269, + 33, 271, 122, 56, 0, 66, 116, 270, 270, 0, + 264, 263, 0, 183, 266, 267, 189, 201, 195, 0, + 0, 268, 214, 215, 0, 0, 270, 0, 268, 253, + 250, 0, 0, 109, 107, 270, 268, 269, 112, 67, + 68, 271, 0, 0, 270, 265, 270, 184, 185, 0, + 188, 190, 0, 200, 202, 0, 270, 196, 197, 0, + 270, 211, 212, 216, 270, 0, 0, 237, 258, 228, + 270, 226, 125, 246, 270, 269, 34, 271, 0, 228, + 0, 118, 0, 47, 69, 70, 143, 24, 0, 0, + 186, 270, 270, 270, 0, 198, 270, 0, 0, 210, + 268, 229, 230, 0, 0, 0, 0, 112, 110, 271, + 268, 270, 71, 135, 100, 182, 0, 0, 0, 194, + 0, 270, 217, 227, 231, 270, 225, 108, 247, 270, + 35, 0, 119, 0, 270, 48, 187, 191, 203, 199, + 0, 0, 0, 135, 269, 57, 117, 0, 138, 218, + 232, 111, 36, 0, 126, 271, 49, 138, 180, 162, + 180, 180, 180, 180, 192, 192, 192, 172, 0, 208, + 270, 146, 147, 176, 269, 58, 271, 112, 0, 37, + 161, 163, 164, 165, 166, 167, 168, 169, 0, 171, + 170, 0, 175, 0, 123, 127, 72, 270, 0, 173, + 102, 129, 130, 131, 270, 59, 135, 0, 270, 0, + 106, 73, 50, 0, 128, 60, 138, 38, 109, 74, + 61, 0, 112, 270, 62, 0, 135, 75, 63, 138, + 64, 0, 270, 0, 65 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 1, 5, 6, 7, 8, 13, 33, 50, 71, + 82, 94, 95, 96, 97, 122, 166, 187, 221, 281, + 114, 115, 116, 117, 146, 217, 271, 343, 417, 453, + 467, 508, 126, 127, 128, 129, 154, 219, 315, 423, + 458, 488, 248, 249, 250, 251, 345, 464, 504, 520, + 528, 532, 536, 539, 541, 348, 349, 350, 351, 444, + 516, 526, 531, 18, 19, 20, 21, 30, 58, 87, + 88, 89, 90, 104, 105, 106, 107, 135, 181, 199, + 255, 319, 184, 455, 121, 24, 41, 310, 311, 386, + 387, 159, 160, 276, 277, 390, 194, 195, 244, 245, + 485, 486, 514, 169, 170, 178, 179, 76, 77, 253, + 254, 213, 480, 214, 235, 481, 498, 215, 482, 241, + 267, 225, 258, 356, 357, 358, 323, 360, 361, 231, + 260, 366, 367, 368, 328, 363, 364, 303, 238, 264, + 237, 287, 331, 332, 333, 288, 53, 59, 60, 61, + 304, 380, 410, 411, 412, 54, 216, 305, 32, 35, + 36, 37, 142, 384, 439, 307, 308, 177, 324, 325, + 326, 67, 9, 226, 16 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -391 +static const yytype_int16 yypact[] = +{ + -391, 11, 1, -391, -391, -391, 1, -391, -391, 35, + -391, -391, -391, -391, -54, -391, 30, -391, 34, 30, + -391, -391, 51, -391, -391, -391, -391, -391, 50, -391, + -391, 54, -391, 44, -10, -391, 54, -391, 57, -7, + -391, -391, -391, -391, -391, -391, 50, -391, 40, -391, + 47, -391, -391, -391, 9, -3, -391, -391, -391, -391, + 9, -391, 10, -391, 50, -391, 2, -391, -391, -391, + -391, 60, -391, 40, 15, -391, -391, -391, 18, -391, + -391, 50, 64, -391, -391, -391, -391, 70, 64, -391, + -391, 22, 27, -391, 67, 70, -391, -391, -391, -391, + -391, -391, 90, -391, 78, 67, -391, -391, -391, -391, + 85, -391, 97, -391, 45, 78, -391, -391, -391, -391, + -391, -391, -391, -391, 103, -391, 37, 45, -391, -391, + -391, -391, 104, 47, 42, -391, -391, 109, -391, -391, + -391, -391, -391, -391, -391, 46, -391, -391, 43, 52, + 55, 88, -391, 48, -391, -391, -391, -391, -391, -391, + -391, 59, -391, 58, 53, -5, 47, -391, -391, -391, + -391, 98, -391, -391, -391, -391, -391, -391, -391, -391, + 117, 88, -391, -391, -391, 69, 62, 60, -391, -391, + -391, 447, -391, -391, -391, -391, -391, -391, 63, 47, + 124, 65, -391, 65, 65, 65, 65, 65, 65, 65, + -391, 66, 65, -391, -391, -391, 65, 102, 128, 76, + -391, 100, -391, -391, 138, -391, 74, -391, -391, -391, + -391, -391, 75, -391, -391, 66, -391, -391, -391, 77, + 79, -391, 83, -391, -391, -391, -391, -391, 87, 76, + -391, -391, -391, -391, -391, 60, -391, -391, -391, -391, + -391, -391, 152, -391, -391, -391, -391, -391, -391, -391, + 386, 134, -391, 89, 154, -391, -391, -391, -391, -391, + 50, 92, -391, -391, 5, 159, -391, -391, 9, 49, + 12, 157, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, 25, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, 93, 106, -391, -391, -391, 99, + -391, -391, 163, 101, -391, -391, 171, 171, 101, 107, + 105, -391, 9, -391, 108, 174, -391, 17, 177, -391, + -391, 111, 178, 164, -391, -391, 183, -391, 88, 106, + -391, -391, 118, 119, -391, -391, -391, 101, -391, 120, + -391, -391, 190, -391, -391, 191, -391, 101, -391, 121, + -391, -391, -391, -391, -391, 189, 125, -391, -391, 9, + -391, -391, -391, -391, -391, -391, -391, -391, 130, 9, + 127, -391, 193, -391, -391, -391, -391, -391, 131, 135, + -391, -391, -391, -391, 139, -391, -391, 5, 152, -391, + -391, 9, -391, 126, 141, 132, 201, 88, -391, -391, + -391, -391, -391, 47, -391, -391, 5, 5, 206, -391, + 159, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, 194, -391, 144, -391, -391, -391, -391, -391, -391, + 145, 213, 148, 47, -391, -391, -391, 151, 60, -391, + -391, -391, -391, 475, 195, -391, -391, 60, 65, -391, + 65, 65, 65, 65, 65, 65, 65, -391, 66, 65, + -391, -391, -391, 65, -391, -391, -391, 88, 153, -391, + -391, -391, -391, -391, -391, -391, -391, -391, 66, -391, + -391, 155, -391, -19, 102, -391, -391, -391, 160, -391, + -391, -391, -391, -391, -391, -391, 47, 158, -391, 161, + 134, -391, -391, 166, -391, -391, 60, -391, 164, -391, + -391, 168, 88, -391, -391, 169, 47, -391, -391, 60, + -391, 172, -391, 173, -391 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -391, -391, -391, -391, 219, -391, -391, -391, -391, -391, + -391, -391, -391, 133, -391, -391, -391, -391, -391, -391, + -391, -391, 136, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, 115, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -1, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -99, -391, -391, + -391, -391, -391, -391, -391, 233, -391, -391, -391, -391, + -391, 165, -391, -391, -391, 149, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -264, -391, -268, + -391, -179, -391, -391, -391, -391, -391, -391, -239, -391, + -391, -391, -391, -391, -391, -192, -38, -178, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391, -216, + -391, -130, 26, -391, -391, -88, -156, -391, -391, -203, + 32, -391, -391, -92, -154, -391, -391, -391, -202, -391, + -234, -391, -391, -391, -53, -126, -391, -391, -391, 218, + -391, -391, -106, -391, -127, 212, -173, 3, -43, -391, + -391, 255, -391, -391, -391, -391, -391, -391, -391, -391, + -390, -312, -13, 0, 4 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -271 +static const yytype_int16 yytable[] = +{ + 2, 261, 190, 49, 22, 233, 234, 223, 11, 197, + 28, 3, 57, 14, 4, 320, 321, 431, 15, 372, + 327, 70, 320, 321, 377, 26, 381, 46, 29, 378, + 34, 38, 39, 339, 391, 340, 38, 447, 85, 511, + 512, 12, 48, 64, 17, 47, 51, 52, 513, 55, + 174, 175, 176, 23, 62, 335, 292, 27, 66, 31, + 62, 65, 81, -270, 40, 42, 44, 45, 56, 73, + 74, 63, 78, 227, 228, 229, 230, 283, 72, 86, + 102, 83, 75, 103, 322, 91, 92, -270, 69, 80, + 112, 322, 84, 93, 99, 143, 100, 111, 433, 101, + 124, 109, 113, 120, 123, 110, 125, 132, 442, 136, + 138, 119, 137, 141, 144, 147, 158, 155, 152, 168, + 162, 131, 134, 183, 189, 133, 156, 173, 157, 224, + 172, 193, 243, 140, 246, 145, 196, 222, 148, 247, + -270, 236, 149, 252, 256, 165, 153, 150, 151, 257, + 259, 275, 263, 265, 163, 180, 161, 164, 266, 286, + 309, 313, 337, 312, 167, 318, 171, 327, 346, 393, + 191, 347, 354, 355, 182, -270, 185, 186, -270, 375, + 218, 371, 370, 188, 379, 382, 374, 383, 192, 198, + 389, 385, 396, 397, 402, 403, 377, 401, 406, 220, + 422, 409, 419, 421, 435, 424, 437, 232, 232, 232, + 438, 425, 239, 240, 448, 429, 242, 436, 456, 454, + 460, 459, 461, 465, 484, 10, 507, 306, 108, 510, + 270, 445, 522, 518, 274, 524, 262, 317, 440, 280, + 527, 533, 139, 537, 499, 542, 273, 544, 278, 272, + 394, 130, 25, 98, 118, 279, 525, 284, 282, 285, + 530, 462, 314, 289, 509, 515, 290, 502, 268, 400, + 446, 495, 496, 497, 269, 405, 449, 500, 68, 373, + 466, 316, 432, 420, 434, 79, 329, 330, 334, 489, + 483, 43, 336, 0, 0, 0, 342, 0, 0, 0, + 0, 338, 0, 0, 0, 0, 0, 341, 506, 0, + 0, 0, 0, 0, 0, 344, 0, 352, 353, 0, + 0, 0, 0, 359, 521, 0, 362, 365, 369, 0, + 0, 0, 334, 0, 392, 0, 376, 0, 490, 0, + 491, 492, 493, 494, 538, 388, 0, 0, 529, 0, + 0, 0, 0, 534, 398, 395, 399, 359, 0, 0, + 0, 540, 0, 0, 0, 0, 404, 369, 0, 0, + 407, 0, 416, 0, 408, 0, 0, 0, 0, 413, + 414, 0, 0, 0, 415, 0, 0, 0, 0, 413, + 0, 418, 291, 292, 293, 31, 294, 295, 296, 0, + 0, 426, 427, 428, 0, 0, 430, 0, 0, 0, + 0, 413, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 443, 0, 441, 0, 0, 0, 0, 0, 0, + 0, 450, 0, 0, 0, 451, 0, 0, 0, 452, + 0, 463, 0, 0, 457, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 297, 298, 299, 300, 0, 0, + 0, 301, 0, 0, 0, 302, 0, 0, 0, 487, + 0, 503, 0, 0, 232, 232, 232, 0, 0, 239, + 501, 200, 0, 242, 0, 0, 0, 0, 0, 0, + 505, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 0, 0, 0, 0, 0, 517, 0, 0, + 0, 0, 0, 212, 519, 0, 0, 0, 523, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 0, 0, 0, 535, 0, 0, 0, 0, 0, 0, + 0, 479, 543 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 235, 181, 46, 17, 208, 209, 199, 8, 187, + 23, 0, 50, 13, 13, 10, 11, 407, 72, 331, + 8, 64, 10, 11, 7, 21, 338, 40, 24, 12, + 30, 31, 32, 8, 346, 10, 36, 427, 81, 58, + 59, 6, 42, 56, 14, 41, 6, 7, 67, 49, + 55, 56, 57, 19, 54, 6, 7, 6, 58, 9, + 60, 57, 75, 9, 20, 75, 9, 74, 21, 69, + 70, 74, 72, 203, 204, 205, 206, 255, 76, 15, + 93, 77, 22, 16, 79, 85, 86, 78, 78, 74, + 103, 79, 74, 23, 90, 133, 74, 7, 410, 72, + 113, 97, 24, 18, 7, 101, 61, 120, 420, 6, + 73, 107, 125, 9, 72, 6, 28, 74, 72, 60, + 72, 117, 122, 25, 7, 121, 74, 74, 73, 5, + 72, 62, 30, 129, 6, 135, 74, 74, 138, 63, + 75, 75, 142, 43, 6, 158, 146, 143, 144, 75, + 75, 64, 75, 74, 154, 168, 152, 157, 75, 7, + 26, 7, 5, 74, 160, 73, 162, 8, 75, 348, + 183, 65, 73, 10, 170, 4, 172, 177, 77, 5, + 193, 76, 75, 179, 7, 74, 78, 9, 184, 189, + 7, 27, 74, 74, 4, 4, 7, 77, 77, 195, + 7, 76, 72, 76, 78, 74, 74, 207, 208, 209, + 9, 76, 212, 213, 8, 76, 216, 76, 74, 25, + 7, 76, 74, 72, 29, 6, 73, 270, 95, 74, + 243, 423, 74, 73, 247, 74, 236, 280, 417, 252, + 74, 73, 127, 74, 478, 73, 246, 74, 249, 245, + 349, 115, 19, 88, 105, 251, 520, 257, 254, 259, + 528, 453, 275, 263, 498, 504, 266, 483, 242, 357, + 426, 474, 475, 476, 242, 367, 430, 479, 60, 332, + 458, 277, 408, 389, 411, 73, 286, 287, 288, 467, + 463, 36, 289, -1, -1, -1, 309, -1, -1, -1, + -1, 301, -1, -1, -1, -1, -1, 307, 487, -1, + -1, -1, -1, -1, -1, 311, -1, 317, 318, -1, + -1, -1, -1, 323, 516, -1, 326, 327, 328, -1, + -1, -1, 332, -1, 347, -1, 336, -1, 468, -1, + 470, 471, 472, 473, 536, 345, -1, -1, 526, -1, + -1, -1, -1, 532, 354, 351, 356, 357, -1, -1, + -1, 539, -1, -1, -1, -1, 366, 367, -1, -1, + 370, -1, 385, -1, 374, -1, -1, -1, -1, 379, + 380, -1, -1, -1, 384, -1, -1, -1, -1, 389, + -1, 387, 6, 7, 8, 9, 10, 11, 12, -1, + -1, 401, 402, 403, -1, -1, 406, -1, -1, -1, + -1, 411, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 421, -1, 419, -1, -1, -1, -1, -1, -1, + -1, 431, -1, -1, -1, 435, -1, -1, -1, 439, + -1, 454, -1, -1, 444, -1, -1, -1, -1, -1, + -1, -1, -1, 6, 68, 69, 70, 71, -1, -1, + -1, 75, -1, -1, -1, 79, -1, -1, -1, 465, + -1, 484, -1, -1, 474, 475, 476, -1, -1, 479, + 480, 6, -1, 483, -1, -1, -1, -1, -1, -1, + 486, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, -1, -1, -1, -1, -1, 507, -1, -1, + -1, -1, -1, 66, 514, -1, -1, -1, 518, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + -1, -1, -1, 533, -1, -1, -1, -1, -1, -1, + -1, 66, 542 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 81, 253, 0, 13, 82, 83, 84, 85, 252, + 84, 253, 6, 86, 253, 72, 254, 14, 143, 144, + 145, 146, 252, 19, 165, 145, 254, 6, 252, 254, + 147, 9, 238, 87, 253, 239, 240, 241, 253, 253, + 20, 166, 75, 241, 9, 74, 252, 254, 253, 238, + 88, 6, 7, 226, 235, 253, 21, 186, 148, 227, + 228, 229, 253, 74, 252, 254, 253, 251, 229, 78, + 238, 89, 76, 253, 253, 22, 187, 188, 253, 235, + 74, 252, 90, 254, 74, 238, 15, 149, 150, 151, + 152, 253, 253, 23, 91, 92, 93, 94, 151, 254, + 74, 72, 252, 16, 153, 154, 155, 156, 93, 254, + 254, 7, 252, 24, 100, 101, 102, 103, 155, 254, + 18, 164, 95, 7, 252, 61, 112, 113, 114, 115, + 102, 254, 252, 254, 253, 157, 6, 252, 73, 114, + 254, 9, 242, 186, 72, 253, 104, 6, 253, 253, + 254, 254, 72, 253, 116, 74, 74, 73, 28, 171, + 172, 254, 72, 253, 253, 252, 96, 254, 60, 183, + 184, 254, 72, 74, 55, 56, 57, 247, 185, 186, + 252, 158, 254, 25, 162, 254, 253, 97, 254, 7, + 171, 252, 254, 62, 176, 177, 74, 187, 253, 159, + 6, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 66, 191, 193, 197, 236, 105, 252, 117, + 254, 98, 74, 185, 5, 201, 253, 201, 201, 201, + 201, 209, 253, 209, 209, 194, 75, 220, 218, 253, + 253, 199, 253, 30, 178, 179, 6, 63, 122, 123, + 124, 125, 43, 189, 190, 160, 6, 75, 202, 75, + 210, 220, 253, 75, 219, 74, 75, 200, 202, 210, + 252, 106, 254, 253, 252, 64, 173, 174, 124, 254, + 252, 99, 254, 187, 253, 253, 7, 221, 225, 253, + 253, 6, 7, 8, 10, 11, 12, 68, 69, 70, + 71, 75, 79, 217, 230, 237, 238, 245, 246, 26, + 167, 168, 74, 7, 252, 118, 254, 238, 73, 161, + 10, 11, 79, 206, 248, 249, 250, 8, 214, 253, + 253, 222, 223, 224, 253, 6, 237, 5, 253, 8, + 10, 253, 252, 107, 254, 126, 75, 65, 135, 136, + 137, 138, 253, 253, 73, 10, 203, 204, 205, 253, + 207, 208, 253, 215, 216, 253, 211, 212, 213, 253, + 75, 76, 251, 224, 78, 5, 253, 7, 12, 7, + 231, 251, 74, 9, 243, 27, 169, 170, 253, 7, + 175, 251, 252, 171, 137, 254, 74, 74, 253, 253, + 205, 77, 4, 4, 253, 213, 77, 253, 253, 76, + 232, 233, 234, 253, 253, 253, 252, 108, 254, 72, + 232, 76, 7, 119, 74, 76, 253, 253, 253, 76, + 253, 250, 225, 251, 234, 78, 76, 74, 9, 244, + 171, 254, 251, 253, 139, 185, 206, 250, 8, 214, + 253, 253, 253, 109, 25, 163, 74, 253, 120, 76, + 7, 74, 185, 252, 127, 72, 187, 110, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 66, + 192, 195, 198, 236, 29, 180, 181, 254, 121, 187, + 201, 201, 201, 201, 201, 209, 209, 209, 196, 220, + 218, 253, 199, 252, 128, 254, 171, 73, 111, 220, + 74, 58, 59, 67, 182, 178, 140, 253, 73, 253, + 129, 185, 74, 253, 74, 167, 141, 74, 130, 187, + 169, 142, 131, 73, 171, 253, 132, 74, 185, 133, + 187, 134, 73, 253, 74 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 612 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed modules. + */ + (yyval.rc) = (yyvsp[(2) - (2)].rc); + ;} + break; + + case 3: +#line 622 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 4: +#line 626 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 5: +#line 632 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 6: +#line 636 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * modules or return -1, if at least one + * module failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 7: +#line 651 "parser-sming.y" + { + /* + * If we got a (Module *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].modulePtr) != NULL) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 8: +#line 665 "parser-sming.y" + { + thisParserPtr->modulePtr = findModuleByName((yyvsp[(3) - (3)].text)); + if (!thisParserPtr->modulePtr) { + thisParserPtr->modulePtr = + addModule((yyvsp[(3) - (3)].text), + smiStrdup(thisParserPtr->path), + 0, + thisParserPtr); + } else { + smiPrintError(thisParserPtr, + ERR_MODULE_ALREADY_LOADED, + (yyvsp[(3) - (3)].text)); + free((yyvsp[(3) - (3)].text)); + /* + * this aborts parsing the whole file, + * not only the current module. + */ + YYABORT; + } + thisModulePtr->export.language = SMI_LANGUAGE_SMING; + thisParserPtr->modulePtr->numImportedIdentifiers + = 0; + thisParserPtr->modulePtr->numStatements = 0; + thisParserPtr->modulePtr->numModuleIdentities = 0; + thisParserPtr->firstIndexlabelPtr = NULL; + thisParserPtr->identityObjectName = NULL; + ;} + break; + + case 9: +#line 695 "parser-sming.y" + { + if ((yyvsp[(9) - (10)].text)) { + setModuleOrganization(thisParserPtr->modulePtr, + (yyvsp[(9) - (10)].text)); + } + ;} + break; + + case 10: +#line 702 "parser-sming.y" + { + if ((yyvsp[(12) - (13)].text)) { + setModuleContactInfo(thisParserPtr->modulePtr, + (yyvsp[(12) - (13)].text)); + } + ;} + break; + + case 11: +#line 709 "parser-sming.y" + { + if ((yyvsp[(15) - (16)].text)) { + setModuleDescription(thisParserPtr->modulePtr, + (yyvsp[(15) - (16)].text), thisParserPtr); + } + ;} + break; + + case 12: +#line 716 "parser-sming.y" + { + if ((yyvsp[(18) - (18)].text)) { + setModuleReference(thisParserPtr->modulePtr, + (yyvsp[(18) - (18)].text), thisParserPtr); + } + ;} + break; + + case 13: +#line 728 "parser-sming.y" + { + checkTypes(thisParserPtr, thisModulePtr); + + (yyval.modulePtr) = thisModulePtr; + ;} + break; + + case 14: +#line 736 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 15: +#line 740 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed extension statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 16: +#line 750 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 17: +#line 755 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * extensions or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 18: +#line 770 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].macroPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 19: +#line 784 "parser-sming.y" + { + macroIdentifier = (yyvsp[(3) - (3)].text); + macroPtr = addMacro(macroIdentifier, + 0, + thisParserPtr); + setMacroDecl(macroPtr, SMI_DECL_EXTENSION); + ;} + break; + + case 20: +#line 793 "parser-sming.y" + { + if (macroPtr && (yyvsp[(8) - (8)].status)) { + setMacroStatus(macroPtr, (yyvsp[(8) - (8)].status)); + } + ;} + break; + + case 21: +#line 799 "parser-sming.y" + { + if (macroPtr && (yyvsp[(10) - (10)].text)) { + setMacroDescription(macroPtr, (yyvsp[(10) - (10)].text), + thisParserPtr); + } + ;} + break; + + case 22: +#line 806 "parser-sming.y" + { + if (macroPtr && (yyvsp[(12) - (12)].text)) { + setMacroReference(macroPtr, (yyvsp[(12) - (12)].text), + thisParserPtr); + } + ;} + break; + + case 23: +#line 813 "parser-sming.y" + { + if (macroPtr && (yyvsp[(14) - (14)].text)) { + setMacroAbnf(macroPtr, (yyvsp[(14) - (14)].text), + thisParserPtr); + } + ;} + break; + + case 24: +#line 820 "parser-sming.y" + { + (yyval.macroPtr) = 0; + macroPtr = NULL; + ;} + break; + + case 25: +#line 827 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 26: +#line 831 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 27: +#line 841 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 28: +#line 846 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * typedefs or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 29: +#line 861 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].typePtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 30: +#line 875 "parser-sming.y" + { + typeIdentifier = (yyvsp[(3) - (3)].text); + /* + *check for duplicate names in the module + */ + if(typePtr = + findType(typeIdentifier, thisParserPtr,thisModulePtr)) + if( typePtr->modulePtr == thisParserPtr->modulePtr) + smiPrintError(thisParserPtr, + ERR_DUPLICATE_TYPE_NAME, + typeIdentifier); + ;} + break; + + case 31: +#line 889 "parser-sming.y" + { + if ((yyvsp[(8) - (9)].typePtr)) { + if ((yyvsp[(8) - (9)].typePtr)->export.name) { + /* + * If the exact type has been found + * and no new Type structure has been + * created, we have to create a + * duplicate now. + */ + typePtr = duplicateType((yyvsp[(8) - (9)].typePtr), 0, + thisParserPtr); + } else { + typePtr = (yyvsp[(8) - (9)].typePtr); + } + typePtr = setTypeName(typePtr, typeIdentifier); + setTypeDecl(typePtr, SMI_DECL_TYPEDEF); + } + defaultBasetype = typePtr->export.basetype; + ;} + break; + + case 32: +#line 909 "parser-sming.y" + { + if (typePtr && (yyvsp[(11) - (11)].valuePtr)) { + if(typePtr->export.basetype == + SMI_BASETYPE_ENUM) + //check ENUM value for correctness + { + if((yyvsp[(11) - (11)].valuePtr)->len) + if(namedNumberPtr = findNamedNumberByName(typePtr, + (yyvsp[(11) - (11)].valuePtr)->value.ptr)){ + smiFree((yyvsp[(11) - (11)].valuePtr)); + (yyvsp[(11) - (11)].valuePtr) = &namedNumberPtr->export.value; + } + else{ smiPrintError(thisParserPtr, + ERR_ENUM_NAME_NOT_DEFINED, + (yyvsp[(11) - (11)].valuePtr)->value.ptr); + } + } + //NOTE that the bits default value is set in the anyval + //rule + setTypeValue(typePtr, (yyvsp[(11) - (11)].valuePtr)); + } + ;} + break; + + case 33: +#line 932 "parser-sming.y" + { + if (typePtr && (yyvsp[(13) - (13)].text) + && smiCheckFormat(thisParserPtr, + typePtr->export.basetype, + (yyvsp[(13) - (13)].text), 0)) { + setTypeFormat(typePtr, (yyvsp[(13) - (13)].text)); + } + ;} + break; + + case 34: +#line 941 "parser-sming.y" + { + if (typePtr && (yyvsp[(15) - (15)].text)) { + setTypeUnits(typePtr, (yyvsp[(15) - (15)].text)); + } + ;} + break; + + case 35: +#line 947 "parser-sming.y" + { + if (typePtr && (yyvsp[(17) - (17)].status)) { + setTypeStatus(typePtr, (yyvsp[(17) - (17)].status)); + } + ;} + break; + + case 36: +#line 953 "parser-sming.y" + { + if (typePtr && (yyvsp[(19) - (19)].text)) { + setTypeDescription(typePtr, (yyvsp[(19) - (19)].text), + thisParserPtr); + } + ;} + break; + + case 37: +#line 960 "parser-sming.y" + { + if (typePtr && (yyvsp[(21) - (21)].text)) { + setTypeReference(typePtr, (yyvsp[(21) - (21)].text), thisParserPtr); + } + ;} + break; + + case 38: +#line 966 "parser-sming.y" + { + smiCheckNamedNumberSubtyping(thisParserPtr , typePtr); + smiCheckNamedNumbersOrder(thisParserPtr , typePtr); + smiCheckNamedNumberRedefinition(thisParserPtr , typePtr); + (yyval.typePtr) = 0; + typePtr = NULL; + free(typeIdentifier); + defaultBasetype = SMI_BASETYPE_UNKNOWN; + ;} + break; + + case 39: +#line 978 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 40: +#line 982 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 41: +#line 992 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 42: +#line 997 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * classes or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 43: +#line 1012 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].classPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 44: +#line 1026 "parser-sming.y" + { + classIdentifier = (yyvsp[(3) - (3)].text); + if(findClassByModuleAndName(thisModulePtr, classIdentifier)) + { + smiPrintError(thisParserPtr, + ERR_DUPLICATE_CLASS_NAME, + attributeIdentifier); + } + else{ + classPtr = addClass(classIdentifier, + thisParserPtr); + setClassDecl(classPtr, SMI_DECL_CLASS); + } + ;} + break; + + case 45: +#line 1042 "parser-sming.y" + { + if(classPtr && (yyvsp[(8) - (8)].classPtr)) + classPtr->parentPtr = (yyvsp[(8) - (8)].classPtr); + ;} + break; + + case 46: +#line 1048 "parser-sming.y" + { + List *tmpList; + Attribute *tmpAttribute; + if(classPtr && (yyvsp[(11) - (11)].listPtr)) + { + + //Check for "magic" value #@# that defines + //scalar class. See NOTE after Class definitino in data.h + if(!strcmp((char*)((yyvsp[(11) - (11)].listPtr)->ptr),"#@#")) + { + classPtr->uniqueList = (List*)malloc(sizeof(List)); + classPtr->uniqueList->ptr = classPtr; + classPtr->uniqueList->nextPtr = NULL; + smiFree((yyvsp[(11) - (11)].listPtr)); + } + else + { + tmpList = (yyvsp[(11) - (11)].listPtr); + //convert all attribute names to atributes + for(tmpList; tmpList; tmpList=tmpList->nextPtr) + { + if(tmpAttribute = + (Attribute*)smiGetAttribute(&(classPtr->export),(char*)(tmpList->ptr))) + { + smiFree(tmpList->ptr); + tmpList->ptr = tmpAttribute; + } + else + { + smiFree(tmpList->ptr); + tmpList->ptr = NULL; + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_NOT_FOUND, + attributeIdentifier); + } + } + + classPtr->uniqueList = (yyvsp[(11) - (11)].listPtr); + } + } + ;} + break; + + case 47: +#line 1091 "parser-sming.y" + { + if (classPtr && (yyvsp[(14) - (14)].status)) { + setClassStatus(classPtr, (yyvsp[(14) - (14)].status)); + } + ;} + break; + + case 48: +#line 1097 "parser-sming.y" + { + if (classPtr && (yyvsp[(16) - (16)].text)) { + setClassDescription(classPtr, (yyvsp[(16) - (16)].text), + thisParserPtr); + } + ;} + break; + + case 49: +#line 1104 "parser-sming.y" + { + if (classPtr && (yyvsp[(18) - (18)].text)) { + setClassReference(classPtr, (yyvsp[(18) - (18)].text), + thisParserPtr); + } + ;} + break; + + case 50: +#line 1111 "parser-sming.y" + { + (yyval.classPtr) = 0; + classPtr = NULL; + ;} + break; + + case 51: +#line 1118 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 52: +#line 1122 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 53: +#line 1132 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 54: +#line 1137 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * attributes or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 55: +#line 1152 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].attributePtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 56: +#line 1166 "parser-sming.y" + { + attributeIdentifier = (yyvsp[(3) - (3)].text); + attributePtr = (Attribute*)smiGetAttribute(&(classPtr->export), + attributeIdentifier); + if(attributePtr) + { + smiPrintError(thisParserPtr, + ERR_DUPLICATE_ATTRIBUTE_NAME, + attributeIdentifier); + attributePtr = NULL; + } + ;} + break; + + case 57: +#line 1180 "parser-sming.y" + { + if ((yyvsp[(8) - (8)].attributePtr)) { + attributePtr = (yyvsp[(8) - (8)].attributePtr); + setAttributeName(attributePtr, + attributeIdentifier); + setAttributeDecl(attributePtr, + SMI_DECL_ATTRIBUTE); + defaultBasetype = attributePtr->export.basetype; + } + ;} + break; + + case 58: +#line 1191 "parser-sming.y" + { + if((yyvsp[(10) - (10)].access) && attributePtr){ + /* check whether there's access for class reference, + which is not allowed */ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_ACCESS, + attributeIdentifier); + else { + setAttributeAccess(attributePtr,(yyvsp[(10) - (10)].access)); + } + } + else if(attributePtr && attributePtr->parentTypePtr) + { + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_MISSING_ACCESS, + attributeIdentifier); + } + ;} + break; + + case 59: +#line 1211 "parser-sming.y" + { + if((yyvsp[(12) - (12)].valuePtr) && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_DEFAULT, + attributeIdentifier); + else{ + attributePtr->export.value = *(yyvsp[(12) - (12)].valuePtr); + } + } + else if(attributePtr) + { + attributePtr->export.value.basetype = + SMI_BASETYPE_UNKNOWN; + } + ;} + break; + + case 60: +#line 1228 "parser-sming.y" + { + if((yyvsp[(14) - (14)].text) && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_FORMAT, + attributeIdentifier); + else{ + if (smiCheckFormat(thisParserPtr, + attributePtr->export.basetype,(yyvsp[(14) - (14)].text), 0)) + { + attributePtr->export.format = (yyvsp[(14) - (14)].text); + } + } + } + ;} + break; + + case 61: +#line 1244 "parser-sming.y" + { + if((yyvsp[(16) - (16)].text) && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_UNITS, + attributeIdentifier); + else{ + attributePtr->export.units = (yyvsp[(16) - (16)].text); + } + } + ;} + break; + + case 62: +#line 1256 "parser-sming.y" + { + if (attributePtr && (yyvsp[(18) - (18)].status)) + attributePtr->export.status = (yyvsp[(18) - (18)].status); + ;} + break; + + case 63: +#line 1261 "parser-sming.y" + { + if (attributePtr && (yyvsp[(20) - (20)].text)) + attributePtr->export.description = (yyvsp[(20) - (20)].text); + ;} + break; + + case 64: +#line 1266 "parser-sming.y" + { + if (attributePtr && (yyvsp[(22) - (22)].text)) + attributePtr->export.reference = (yyvsp[(22) - (22)].text); + ;} + break; + + case 65: +#line 1271 "parser-sming.y" + { + (yyval.attributePtr) = attributePtr; + attributePtr = NULL; + defaultBasetype = SMI_BASETYPE_UNKNOWN; + ;} + break; + + case 66: +#line 1279 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 67: +#line 1283 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed event statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 68: +#line 1293 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 69: +#line 1298 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * events or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 70: +#line 1313 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].eventPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 71: +#line 1327 "parser-sming.y" + { + //TODO check for repeated names + eventPtr=addEvent((yyvsp[(3) - (3)].text),classPtr,thisParserPtr); + ;} + break; + + case 72: +#line 1333 "parser-sming.y" + { + if((yyvsp[(8) - (8)].status) && eventPtr) + eventPtr->export.status = (yyvsp[(8) - (8)].status); + ;} + break; + + case 73: +#line 1338 "parser-sming.y" + { + if((yyvsp[(10) - (10)].text) && eventPtr) + eventPtr->export.description = (yyvsp[(10) - (10)].text); + ;} + break; + + case 74: +#line 1343 "parser-sming.y" + { + if((yyvsp[(12) - (12)].text) && eventPtr) + eventPtr->export.reference = (yyvsp[(12) - (12)].text); + ;} + break; + + case 75: +#line 1348 "parser-sming.y" + { + (yyval.eventPtr) = eventPtr; + eventPtr = NULL; + ;} + break; + + case 76: +#line 1355 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 77: +#line 1359 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 78: +#line 1365 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 79: +#line 1369 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * imports or return -1, if at least one + * module failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 80: +#line 1384 "parser-sming.y" + { + /* + * If we got an (Object *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].listPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 81: +#line 1398 "parser-sming.y" + { + importModulename = smiStrdup((yyvsp[(3) - (3)].text)); + ;} + break; + + case 82: +#line 1403 "parser-sming.y" + { + List *listPtr, *nextPtr; + + for (listPtr = (yyvsp[(8) - (8)].listPtr); listPtr; listPtr = nextPtr) { + addImport(listPtr->ptr, thisParserPtr); + thisParserPtr->modulePtr-> + numImportedIdentifiers++; + nextPtr = listPtr->nextPtr; + free(listPtr); + } + ;} + break; + + case 83: +#line 1415 "parser-sming.y" + { + Module *modulePtr; + char *s = importModulename; + + modulePtr = findModuleByName(s); + if (!modulePtr) { + modulePtr = loadModule(s, thisParserPtr); + } + checkImports(modulePtr, thisParserPtr); + free(s); + (yyval.listPtr) = NULL; + ;} + break; + + case 84: +#line 1430 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 85: +#line 1434 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 86: +#line 1440 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 87: +#line 1444 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * revisions or return -1, if at least one + * module failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 88: +#line 1459 "parser-sming.y" + { + /* + * If we got a (Revision *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].revisionPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 89: +#line 1476 "parser-sming.y" + { + (yyval.revisionPtr) = addRevision((yyvsp[(5) - (11)].date), (yyvsp[(7) - (11)].text), thisParserPtr); + ;} + break; + + case 90: +#line 1482 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 91: +#line 1486 "parser-sming.y" + { + /* + * Return the number of successfully + * parsed identity statements. + */ + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 92: +#line 1496 "parser-sming.y" + { + (yyval.rc) = (yyvsp[(1) - (1)].rc); + ;} + break; + + case 93: +#line 1501 "parser-sming.y" + { + /* + * Sum up the number of successfully parsed + * identities or return -1, if at least one + * failed. + */ + if (((yyvsp[(1) - (2)].rc) >= 0) && ((yyvsp[(2) - (2)].rc) >= 0)) { + (yyval.rc) = (yyvsp[(1) - (2)].rc) + (yyvsp[(2) - (2)].rc); + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 94: +#line 1516 "parser-sming.y" + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ((yyvsp[(1) - (2)].identityPtr)) { + (yyval.rc) = 1; + } else { + (yyval.rc) = -1; + } + ;} + break; + + case 95: +#line 1530 "parser-sming.y" + { + identityIdentifier = (yyvsp[(3) - (3)].text); + identityPtr = addIdentity(identityIdentifier, + thisParserPtr); + setIdentityDecl(identityPtr, SMI_DECL_IDENTITY); + ;} + break; + + case 96: +#line 1538 "parser-sming.y" + { + if(identityPtr && (yyvsp[(8) - (8)].identityPtr)) { + setIdentityParent(identityPtr,(yyvsp[(8) - (8)].identityPtr)); + } + ;} + break; + + case 97: +#line 1544 "parser-sming.y" + { + if (identityPtr && (yyvsp[(10) - (10)].status)) { + setIdentityStatus(identityPtr, (yyvsp[(10) - (10)].status)); + } + ;} + break; + + case 98: +#line 1550 "parser-sming.y" + { + if (identityPtr && (yyvsp[(12) - (12)].text)) { + setIdentityDescription(identityPtr, (yyvsp[(12) - (12)].text), + thisParserPtr); + } + ;} + break; + + case 99: +#line 1557 "parser-sming.y" + { + setIdentityReference(identityPtr, (yyvsp[(14) - (14)].text), + thisParserPtr) + ;} + break; + + case 100: +#line 1562 "parser-sming.y" + { + (yyval.identityPtr) = 0; + identityPtr = NULL; + ;} + break; + + case 101: +#line 1569 "parser-sming.y" + { + (yyval.typePtr) = (yyvsp[(3) - (5)].typePtr); + ;} + break; + + case 102: +#line 1575 "parser-sming.y" + { + (yyval.attributePtr) = (yyvsp[(3) - (5)].attributePtr); + ;} + break; + + case 103: +#line 1581 "parser-sming.y" + { + (yyval.date) = (yyvsp[(3) - (5)].date); + ;} + break; + + case 104: +#line 1587 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 105: +#line 1593 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 106: +#line 1599 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 107: +#line 1603 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 108: +#line 1609 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 109: +#line 1615 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 110: +#line 1619 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 111: +#line 1625 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 112: +#line 1631 "parser-sming.y" + { + (yyval.status) = SMI_STATUS_CURRENT; + ;} + break; + + case 113: +#line 1635 "parser-sming.y" + { + (yyval.status) = (yyvsp[(1) - (2)].status); + ;} + break; + + case 114: +#line 1641 "parser-sming.y" + { + (yyval.status) = (yyvsp[(3) - (5)].status); + ;} + break; + + case 115: +#line 1647 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 116: +#line 1651 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 117: +#line 1657 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(4) - (7)].listPtr); + ;} + break; + + case 118: +#line 1663 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = "#@#"; //used to indicate that unique + //statement is present and empty + //i.e. the class is scalar + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 119: +#line 1671 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (3)].text); + (yyval.listPtr)->nextPtr = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 120: +#line 1682 "parser-sming.y" + { + (yyval.classPtr) = NULL; + ;} + break; + + case 121: +#line 1686 "parser-sming.y" + { + (yyval.classPtr) = (yyvsp[(1) - (2)].classPtr); + ;} + break; + + case 122: +#line 1692 "parser-sming.y" + { + (yyval.classPtr) = findClass((yyvsp[(3) - (5)].text), thisParserPtr,thisModulePtr); + if(!(yyval.classPtr))smiPrintError(thisParserPtr, + ERR_UNKNOWN_CLASS, + (yyvsp[(3) - (5)].text)); + + ;} + break; + + case 123: +#line 1702 "parser-sming.y" + { + (yyval.valuePtr) = NULL; + ;} + break; + + case 124: +#line 1706 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(1) - (2)].valuePtr); + ;} + break; + + case 125: +#line 1712 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(3) - (5)].valuePtr); + ;} + break; + + case 126: +#line 1718 "parser-sming.y" + { + (yyval.access) = SMI_ACCESS_UNKNOWN; + ;} + break; + + case 127: +#line 1722 "parser-sming.y" + { + (yyval.access) = (yyvsp[(1) - (2)].access); + ;} + break; + + case 128: +#line 1728 "parser-sming.y" + { + (yyval.access) = (yyvsp[(3) - (5)].access); + ;} + break; + + case 129: +#line 1734 "parser-sming.y" + { + (yyval.access) = SMI_ACCESS_READ_ONLY; + ;} + break; + + case 130: +#line 1738 "parser-sming.y" + { + (yyval.access) = SMI_ACCESS_READ_WRITE; + ;} + break; + + case 131: +#line 1742 "parser-sming.y" + { + (yyval.access) = SMI_ACCESS_EVENT_ONLY; + ;} + break; + + case 132: +#line 1748 "parser-sming.y" + { + (yyval.identityPtr) = NULL; + ;} + break; + + case 133: +#line 1752 "parser-sming.y" + { + (yyval.identityPtr) = (yyvsp[(1) - (2)].identityPtr); + ;} + break; + + case 134: +#line 1758 "parser-sming.y" + { + (yyval.identityPtr) = findIdentity((yyvsp[(3) - (5)].text), thisParserPtr, thisModulePtr); + if(!(yyval.identityPtr))smiPrintError(thisParserPtr, + ERR_IDENTITY_PARENT_NOT_FOUND, + (yyvsp[(3) - (5)].text)); + ;} + break; + + case 135: +#line 1767 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 136: +#line 1771 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 137: +#line 1777 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 138: +#line 1783 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 139: +#line 1787 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 140: +#line 1793 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 141: +#line 1799 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 142: +#line 1803 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (2)].text); + ;} + break; + + case 143: +#line 1809 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 144: +#line 1817 "parser-sming.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 145: +#line 1821 "parser-sming.y" + { + (yyval.typePtr) = (yyvsp[(1) - (1)].typePtr); + ;} + break; + + case 146: +#line 1827 "parser-sming.y" + { + (yyval.attributePtr) = (yyvsp[(1) - (1)].attributePtr); + ;} + break; + + case 147: +#line 1831 "parser-sming.y" + { + (yyval.attributePtr) = (yyvsp[(1) - (1)].attributePtr); + ;} + break; + + case 148: +#line 1838 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeOctetStringPtr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeOctetStringPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 149: +#line 1853 "parser-sming.y" + { + (yyval.typePtr) = smiHandle->typeObjectIdentifierPtr; + ;} + break; + + case 150: +#line 1857 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeInteger32Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeInteger32Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 151: +#line 1872 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeUnsigned32Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeUnsigned32Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeUnsigned32Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 152: +#line 1887 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeInteger64Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeInteger64Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeInteger64Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 153: +#line 1902 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeUnsigned64Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeUnsigned64Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeUnsigned64Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 154: +#line 1917 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeFloat32Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeFloat32Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeFloat32Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 155: +#line 1932 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeFloat64Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeFloat64Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeFloat64Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 156: +#line 1947 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeFloat128Ptr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeFloat128Ptr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeFloat128Ptr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 157: +#line 1962 "parser-sming.y" + { + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typePointerPtr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typePointerPtr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typePointerPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + } + ;} + break; + + case 158: +#line 1973 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(2) - (2)].listPtr)) { + (yyval.typePtr) = smiHandle->typeEnumPtr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeEnumPtr); + setTypeList((yyval.typePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + } + ;} + break; + + case 159: +#line 1988 "parser-sming.y" + { + bitsFlag = 1; //Since Enum elements can be + //negative we must make sure + //that bits is not negative, + //so we raise bitsFlag and + //give error if there is + //negative value + ;} + break; + + case 160: +#line 1997 "parser-sming.y" + { + List *p; + + if (!(yyvsp[(3) - (3)].listPtr)) { + (yyval.typePtr) = smiHandle->typeBitsPtr; + } else { + (yyval.typePtr) = duplicateType(smiHandle->typeBitsPtr, 0, + thisParserPtr); + setTypeParent((yyval.typePtr), smiHandle->typeBitsPtr); + setTypeList((yyval.typePtr), (yyvsp[(3) - (3)].listPtr)); + for (p = (yyvsp[(3) - (3)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (yyval.typePtr); + } + + bitsFlag = 0;//reset flag + ;} + break; + + case 161: +#line 2017 "parser-sming.y" + { + List *p; + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeOctetStringPtr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeOctetStringPtr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 162: +#line 2029 "parser-sming.y" + { + (yyval.attributePtr) = duplicateTypeToAttribute( + smiHandle->typeObjectIdentifierPtr, classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeObjectIdentifierPtr); + ;} + break; + + case 163: +#line 2035 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeInteger32Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeInteger32Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 164: +#line 2048 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeUnsigned32Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeUnsigned32Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 165: +#line 2061 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeInteger64Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeInteger64Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 166: +#line 2074 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeUnsigned64Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeUnsigned64Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 167: +#line 2087 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeFloat32Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeFloat32Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 168: +#line 2100 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeFloat64Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeFloat64Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 169: +#line 2113 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeFloat128Ptr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeFloat128Ptr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 170: +#line 2126 "parser-sming.y" + { + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typePointerPtr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typePointerPtr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + } + ;} + break; + + case 171: +#line 2135 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeEnumPtr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeEnumPtr); + if ((yyvsp[(2) - (2)].listPtr)) { + setAttributeList((yyval.attributePtr), (yyvsp[(2) - (2)].listPtr)); + for (p = (yyvsp[(2) - (2)].listPtr); p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (Type*)(yyval.attributePtr); + } + ;} + break; + + case 172: +#line 2148 "parser-sming.y" + { + bitsFlag = 1; //Since Enum elements can be + //negative we must make sure + //that bits is not negative, + //so we raise bitsFlag and + //give error if there is + //negative value + ;} + break; + + case 173: +#line 2157 "parser-sming.y" + { + List *p; + + (yyval.attributePtr) = duplicateTypeToAttribute(smiHandle->typeBitsPtr, + classPtr, thisParserPtr); + setAttributeParentType((yyval.attributePtr), smiHandle->typeBitsPtr); + if ((yyvsp[(1) - (3)].rc)) { + setAttributeList((yyval.attributePtr), (yyvsp[(1) - (3)].rc)); + for (p = (yyvsp[(1) - (3)].rc); p; p = p->nextPtr) + ((NamedNumber *)(p->ptr))->typePtr = (Type*)(yyval.attributePtr); + } + + bitsFlag = 0; /* reset flag */ + ;} + break; + + case 174: +#line 2174 "parser-sming.y" + { + typePtr = findType((yyvsp[(1) - (2)].text), thisParserPtr, + thisModulePtr); + if (typePtr && (yyvsp[(2) - (2)].listPtr)) { + typePtr = duplicateType(typePtr, 0, + thisParserPtr); + setTypeList(typePtr, (yyvsp[(2) - (2)].listPtr)); + } + + (yyval.typePtr) = typePtr; + ;} + break; + + case 175: +#line 2188 "parser-sming.y" + { + Class *tmp; + typePtr = findType((yyvsp[(1) - (2)].text), thisParserPtr, + thisModulePtr); + if (typePtr && (yyvsp[(2) - (2)].listPtr)) { + attributePtr = duplicateTypeToAttribute(typePtr, + classPtr, thisParserPtr); + setAttributeList(attributePtr, (yyvsp[(2) - (2)].listPtr)); + setAttributeParentType(attributePtr, typePtr); + } else if( typePtr ){ + attributePtr = duplicateTypeToAttribute(typePtr, + classPtr, thisParserPtr); + setAttributeParentType(attributePtr, typePtr); + } else if((yyvsp[(2) - (2)].listPtr)){ + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, (yyvsp[(1) - (2)].text)); + attributePtr = NULL; + } else if (tmp = findClass((yyvsp[(1) - (2)].text), + thisParserPtr,thisModulePtr)){ + attributePtr = addAttribute((yyvsp[(1) - (2)].text), classPtr, thisParserPtr); + setAttributeParentClass(attributePtr, tmp); + } else { + attributePtr = NULL; + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE_OR_CLASS, (yyvsp[(1) - (2)].text)); + } + + + (yyval.attributePtr) = attributePtr; + ;} + break; + + case 176: +#line 2220 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 177: +#line 2224 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(2) - (2)].listPtr); + ;} + break; + + case 178: +#line 2230 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 179: +#line 2234 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 180: +#line 2240 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 181: +#line 2244 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(2) - (2)].listPtr); + ;} + break; + + case 182: +#line 2251 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(3) - (6)].rangePtr); + (yyval.listPtr)->nextPtr = (yyvsp[(4) - (6)].listPtr); + ;} + break; + + case 183: +#line 2259 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 184: +#line 2263 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 185: +#line 2269 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].rangePtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 186: +#line 2275 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].rangePtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 187: +#line 2288 "parser-sming.y" + { + (yyval.rangePtr) = (yyvsp[(4) - (4)].rangePtr); + ;} + break; + + case 188: +#line 2294 "parser-sming.y" + { + (yyval.rangePtr) = smiMalloc(sizeof(Range)); + (yyval.rangePtr)->export.minValue = *(yyvsp[(1) - (2)].valuePtr); + if ((yyvsp[(2) - (2)].valuePtr)) { + (yyval.rangePtr)->export.maxValue = *(yyvsp[(2) - (2)].valuePtr); + smiFree((yyvsp[(2) - (2)].valuePtr)); + } else { + (yyval.rangePtr)->export.maxValue = *(yyvsp[(1) - (2)].valuePtr); + } + smiFree((yyvsp[(1) - (2)].valuePtr)); + ;} + break; + + case 189: +#line 2308 "parser-sming.y" + { + (yyval.valuePtr) = NULL; + ;} + break; + + case 190: +#line 2312 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); + ;} + break; + + case 191: +#line 2318 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(4) - (4)].valuePtr); + ;} + break; + + case 192: +#line 2324 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 193: +#line 2328 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(2) - (2)].listPtr); + ;} + break; + + case 194: +#line 2335 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(3) - (6)].rangePtr); + (yyval.listPtr)->nextPtr = (yyvsp[(4) - (6)].listPtr); + ;} + break; + + case 195: +#line 2343 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 196: +#line 2347 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 197: +#line 2353 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].rangePtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 198: +#line 2359 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].rangePtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 199: +#line 2372 "parser-sming.y" + { + (yyval.rangePtr) = (yyvsp[(4) - (4)].rangePtr); + ;} + break; + + case 200: +#line 2378 "parser-sming.y" + { + (yyval.rangePtr) = smiMalloc(sizeof(Range)); + (yyval.rangePtr)->export.minValue.basetype = SMI_BASETYPE_FLOAT64; + (yyval.rangePtr)->export.minValue.value.float64 = strtod((yyvsp[(1) - (2)].text), NULL); + if ((yyvsp[(2) - (2)].text)) { + (yyval.rangePtr)->export.maxValue.basetype = + SMI_BASETYPE_FLOAT64; + (yyval.rangePtr)->export.maxValue.value.float64 = + strtod((yyvsp[(2) - (2)].text), NULL); + } else { + (yyval.rangePtr)->export.maxValue = (yyval.rangePtr)->export.minValue; + } + ;} + break; + + case 201: +#line 2394 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 202: +#line 2398 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 203: +#line 2404 "parser-sming.y" + { + (yyval.text) = (yyvsp[(4) - (4)].text); + ;} + break; + + case 204: +#line 2411 "parser-sming.y" + { + (yyval.text)="-inf"; + ;} + break; + + case 205: +#line 2415 "parser-sming.y" + { + (yyval.text)="+inf"; + ;} + break; + + case 206: +#line 2419 "parser-sming.y" + { + (yyval.text)="nan"; + ;} + break; + + case 207: +#line 2423 "parser-sming.y" + { + (yyval.text)="nan"; + ;} + break; + + case 208: +#line 2429 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 209: +#line 2433 "parser-sming.y" + { + NamedNumber *nn =(NamedNumber*)smiMalloc(sizeof(NamedNumber)); + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = nn; + nn->export.name = (yyvsp[(2) - (2)].text); + ;} + break; + + case 210: +#line 2442 "parser-sming.y" + { + (yyval.text) = (yyvsp[(3) - (5)].text); + ;} + break; + + case 211: +#line 2448 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(3) - (5)].listPtr); + ;} + break; + + case 212: +#line 2455 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (3)].namedNumberPtr); + (yyval.listPtr)->nextPtr = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 213: +#line 2463 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 214: +#line 2467 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 215: +#line 2473 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].namedNumberPtr); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 216: +#line 2480 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].namedNumberPtr); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 217: +#line 2494 "parser-sming.y" + { + (yyval.namedNumberPtr) = (yyvsp[(4) - (4)].namedNumberPtr); + ;} + break; + + case 218: +#line 2500 "parser-sming.y" + { + (yyval.namedNumberPtr) = smiMalloc(sizeof(NamedNumber)); + (yyval.namedNumberPtr)->export.name = (yyvsp[(1) - (7)].text); + (yyval.namedNumberPtr)->export.value = *(yyvsp[(5) - (7)].valuePtr); + ;} + break; + + case 219: +#line 2508 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (3)].text); + (yyval.listPtr)->nextPtr = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 220: +#line 2516 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 221: +#line 2520 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 222: +#line 2526 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].text); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 223: +#line 2532 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].text); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 224: +#line 2545 "parser-sming.y" + { + (yyval.text) = (yyvsp[(4) - (4)].text); + ;} + break; + + case 225: +#line 2551 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(3) - (5)].listPtr); + ;} + break; + + case 226: +#line 2557 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 227: +#line 2561 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (3)].text); + (yyval.listPtr)->nextPtr = (yyvsp[(2) - (3)].listPtr); + ;} + break; + + case 228: +#line 2570 "parser-sming.y" + { + (yyval.listPtr) = NULL; + ;} + break; + + case 229: +#line 2574 "parser-sming.y" + { + (yyval.listPtr) = (yyvsp[(1) - (1)].listPtr); + ;} + break; + + case 230: +#line 2580 "parser-sming.y" + { + (yyval.listPtr) = smiMalloc(sizeof(List)); + (yyval.listPtr)->ptr = (yyvsp[(1) - (1)].text); + (yyval.listPtr)->nextPtr = NULL; + ;} + break; + + case 231: +#line 2586 "parser-sming.y" + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = (yyvsp[(2) - (2)].text); + p->nextPtr = NULL; + for (pp = (yyvsp[(1) - (2)].listPtr); pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + (yyval.listPtr) = (yyvsp[(1) - (2)].listPtr); + ;} + break; + + case 232: +#line 2599 "parser-sming.y" + { + (yyval.text) = (yyvsp[(4) - (4)].text); + ;} + break; + + case 233: +#line 2605 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 234: +#line 2609 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 235: +#line 2615 "parser-sming.y" + { + char *s; + + s = smiMalloc(strlen((yyvsp[(1) - (3)].text)) + + strlen((yyvsp[(3) - (3)].text)) + 3); + sprintf(s, "%s::%s", (yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text)); + (yyval.text) = s; + free((yyvsp[(1) - (3)].text)); + free((yyvsp[(3) - (3)].text)); + ;} + break; + + case 236: +#line 2626 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 237: +#line 2632 "parser-sming.y" + { + char *s; + + s = smiMalloc(strlen((yyvsp[(1) - (3)].text)) + + strlen((yyvsp[(3) - (3)].text)) + 3); + sprintf(s, "%s::%s", (yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text)); + (yyval.text) = s; + ;} + break; + + case 238: +#line 2641 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 239: +#line 2647 "parser-sming.y" + { + int len; + if ((yyvsp[(2) - (2)].text)) { + (yyval.text) = smiMalloc(strlen((yyvsp[(1) - (2)].text)) + strlen((yyvsp[(2) - (2)].text)) + 1); + strcpy((yyval.text), (yyvsp[(1) - (2)].text)); + strcat((yyval.text), (yyvsp[(2) - (2)].text)); + free((yyvsp[(1) - (2)].text)); + free((yyvsp[(2) - (2)].text)); + } else { + (yyval.text) = smiStrdup((yyvsp[(1) - (2)].text)); + } + len = strlen((yyval.text)); + while (len > 0 && (yyval.text)[len-1] == '\n') { + (yyval.text)[--len] = 0; + } + ;} + break; + + case 240: +#line 2666 "parser-sming.y" + { + (yyval.text) = NULL; + ;} + break; + + case 241: +#line 2670 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 242: +#line 2676 "parser-sming.y" + { + (yyval.text) = (yyvsp[(1) - (1)].text); + ;} + break; + + case 243: +#line 2680 "parser-sming.y" + { + (yyval.text) = smiMalloc(strlen((yyvsp[(1) - (2)].text)) + strlen((yyvsp[(2) - (2)].text)) + 1); + strcpy((yyval.text), (yyvsp[(1) - (2)].text)); + strcat((yyval.text), (yyvsp[(2) - (2)].text)); + free((yyvsp[(1) - (2)].text)); + free((yyvsp[(2) - (2)].text)); + ;} + break; + + case 244: +#line 2690 "parser-sming.y" + { + (yyval.text) = smiStrdup((yyvsp[(2) - (2)].text)); + ;} + break; + + case 245: +#line 2696 "parser-sming.y" + { + (yyval.date) = checkDate(thisParserPtr, (yyvsp[(1) - (1)].text)); + ;} + break; + + case 246: +#line 2702 "parser-sming.y" + { + (yyval.text) = smiStrdup((yyvsp[(1) - (1)].text)); + ;} + break; + + case 247: +#line 2708 "parser-sming.y" + { + (yyval.text) = smiStrdup((yyvsp[(1) - (1)].text)); + ;} + break; + + case 248: +#line 2721 "parser-sming.y" + { + if (defaultBasetype == SMI_BASETYPE_BITS) { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_BITS; + (yyval.valuePtr)->value.ptr = (void*)((yyvsp[(1) - (1)].listPtr)); + //set the bits value in the value.integer32 + if(typePtr){ + createBitsValue((yyval.valuePtr),typePtr); + } + else if(attributePtr){ + createBitsValue((yyval.valuePtr), + (Type*)smiGetAttributeParentType(&(attributePtr->export))); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + } + ;} + break; + + case 249: +#line 2741 "parser-sming.y" + { + /* Note: might also be an OID or signed */ + switch (defaultBasetype) { + case SMI_BASETYPE_UNSIGNED32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 10); + break; + case SMI_BASETYPE_UNSIGNED64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = strtoull((yyvsp[(1) - (1)].text), NULL, 10); + break; + case SMI_BASETYPE_INTEGER32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = strtol((yyvsp[(1) - (1)].text), NULL, 10); + break; + case SMI_BASETYPE_INTEGER64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = strtoll((yyvsp[(1) - (1)].text), NULL, 10); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->value.ptr = smiStrdup((yyvsp[(1) - (1)].text)); + /* TODO */ + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 250: +#line 2779 "parser-sming.y" + { + switch (defaultBasetype) { + case SMI_BASETYPE_INTEGER32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = - strtol((yyvsp[(2) - (2)].text), NULL, 10); + break; + case SMI_BASETYPE_INTEGER64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = - strtoll((yyvsp[(2) - (2)].text), NULL, 10); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 251: +#line 2799 "parser-sming.y" + { + /* Note: might also be an octet string */ + switch (defaultBasetype) { + case SMI_BASETYPE_UNSIGNED32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED32; + (yyval.valuePtr)->value.unsigned32 = strtoul((yyvsp[(1) - (1)].text), NULL, 16); + break; + case SMI_BASETYPE_UNSIGNED64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = strtoull((yyvsp[(1) - (1)].text), NULL, 16); + break; + case SMI_BASETYPE_INTEGER32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER32; + (yyval.valuePtr)->value.integer32 = strtol((yyvsp[(1) - (1)].text), NULL, 16); + break; + case SMI_BASETYPE_INTEGER64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = strtoll((yyvsp[(1) - (1)].text), NULL, 16); + break; + case SMI_BASETYPE_OCTETSTRING: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + (yyval.valuePtr)->value.ptr = hexToStr((yyvsp[(1) - (1)].text),strlen((yyvsp[(1) - (1)].text))); + (yyval.valuePtr)->len = strlen((yyval.valuePtr)->value.ptr); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 252: +#line 2836 "parser-sming.y" + { + /* Note: might also be an OID */ + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT32; + (yyval.valuePtr)->value.float32 = strtof((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT64; + (yyval.valuePtr)->value.float64 = strtod((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT128; + (yyval.valuePtr)->value.float128 = strtold((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->value.ptr = smiMalloc(strlen((yyvsp[(1) - (1)].text))+1); + strcpy((yyval.valuePtr)->value.ptr,(yyvsp[(1) - (1)].text)); + (yyval.valuePtr)->len = strlen((yyval.valuePtr)->value.ptr); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 253: +#line 2884 "parser-sming.y" + { + + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT32; + (yyval.valuePtr)->value.float32 = - strtof((yyvsp[(2) - (2)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(2) - (2)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT64; + (yyval.valuePtr)->value.float64 = - strtof((yyvsp[(2) - (2)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(2) - (2)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT128; + (yyval.valuePtr)->value.float128 = - strtof((yyvsp[(2) - (2)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(2) - (2)].text)); + errno = 0; + } + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 254: +#line 2925 "parser-sming.y" + { + /* Note: might also be an OID */ + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT32; + (yyval.valuePtr)->value.float32 = strtof((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT64; + (yyval.valuePtr)->value.float64 = strtod((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_FLOAT128; + (yyval.valuePtr)->value.float128 = strtold((yyvsp[(1) - (1)].text),NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, (yyvsp[(1) - (1)].text)); + errno = 0; + } + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 255: +#line 2966 "parser-sming.y" + { + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OCTETSTRING; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + } else { + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + } + ;} + break; + + case 256: +#line 2979 "parser-sming.y" + { + /* Note: might be an Enumeration item or OID */ + /* TODO: convert if it's an oid? */ + switch (defaultBasetype) { + case SMI_BASETYPE_ENUM: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_ENUM; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + /* TODO: XXX convert to int */ + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + /* TODO: XXX convert to oid if found */ + break; + case SMI_BASETYPE_POINTER: + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyvsp[(1) - (1)].text)); + /* TODO: XXX check if valid reference found */ + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + (yyval.valuePtr) = NULL; + break; + } + ;} + break; + + case 257: +#line 3012 "parser-sming.y" + { + if (defaultBasetype == SMI_BASETYPE_OBJECTIDENTIFIER){ + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + (yyval.valuePtr)->value.ptr = (yyvsp[(1) - (1)].text); + (yyval.valuePtr)->len = strlen((yyval.valuePtr)->value.ptr); + } + else + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + ;} + break; + + case 258: +#line 3026 "parser-sming.y" + { + char *s; + + s = smiMalloc(strlen((yyvsp[(1) - (3)].text)) + + strlen((yyvsp[(3) - (3)].text)) + 3); + sprintf(s, "%s::%s", (yyvsp[(1) - (3)].text), (yyvsp[(3) - (3)].text)); + (yyval.text) = s; + ;} + break; + + case 259: +#line 3035 "parser-sming.y" + { + (yyval.text) = smiMalloc(strlen((yyvsp[(1) - (1)].text))+1); + strcpy((yyval.text),(yyvsp[(1) - (1)].text)); + ;} + break; + + case 260: +#line 3042 "parser-sming.y" + { + (yyval.status) = SMI_STATUS_CURRENT; + ;} + break; + + case 261: +#line 3046 "parser-sming.y" + { + (yyval.status) = SMI_STATUS_DEPRECATED; + ;} + break; + + case 262: +#line 3050 "parser-sming.y" + { + (yyval.status) = SMI_STATUS_OBSOLETE; + ;} + break; + + case 263: +#line 3056 "parser-sming.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = strtoull((yyvsp[(1) - (1)].text), NULL, 16); + ;} + break; + + case 264: +#line 3062 "parser-sming.y" + { + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_UNSIGNED64; + (yyval.valuePtr)->value.unsigned64 = strtoull((yyvsp[(1) - (1)].text), NULL, 10); + ;} + break; + + case 265: +#line 3070 "parser-sming.y" + { + if(bitsFlag){ + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_NEGATIVE); + (yyval.valuePtr) = NULL; + } + (yyval.valuePtr) = smiMalloc(sizeof(SmiValue)); + (yyval.valuePtr)->basetype = SMI_BASETYPE_INTEGER64; + (yyval.valuePtr)->value.integer64 = - strtoll((yyvsp[(2) - (2)].text), NULL, 10); + ;} + break; + + case 266: +#line 3083 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); + ;} + break; + + case 267: +#line 3087 "parser-sming.y" + { + (yyval.valuePtr) = (yyvsp[(1) - (1)].valuePtr); + ;} + break; + + case 268: +#line 3097 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 269: +#line 3104 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 270: +#line 3110 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + case 271: +#line 3116 "parser-sming.y" + { + (yyval.rc) = 0; + ;} + break; + + +/* Line 1267 of yacc.c. */ +#line 5383 "parser-sming.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 3121 "parser-sming.y" + + +#endif + + diff --git a/lib/parser-sming.h b/lib/parser-sming.h new file mode 100644 index 0000000..ed78780 --- /dev/null +++ b/lib/parser-sming.h @@ -0,0 +1,32 @@ +/* + * parser-sming.h -- + * + * Definition for the SMIv1/v2 parser. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: parser-sming.h 1061 2000-12-11 09:11:00Z strauss $ + */ + +#ifndef _PARSER_SMING_H +#define _PARSER_SMING_H + +#include + +#include "data.h" + + + +#define YYERROR_VERBOSE + + + +extern int smingparse(); + + + +#endif /* _PARSER_SMING_H */ + diff --git a/lib/parser-sming.tab.h b/lib/parser-sming.tab.h new file mode 100644 index 0000000..dab3fec --- /dev/null +++ b/lib/parser-sming.tab.h @@ -0,0 +1,224 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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, 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. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DOT = 258, + DOT_DOT = 259, + COLON_COLON = 260, + ucIdentifier = 261, + lcIdentifier = 262, + floatValue = 263, + textSegment = 264, + decimalNumber = 265, + hexadecimalNumber = 266, + OID = 267, + moduleKeyword = 268, + importKeyword = 269, + revisionKeyword = 270, + identityKeyword = 271, + oidKeyword = 272, + dateKeyword = 273, + organizationKeyword = 274, + contactKeyword = 275, + descriptionKeyword = 276, + referenceKeyword = 277, + extensionKeyword = 278, + typedefKeyword = 279, + typeKeyword = 280, + formatKeyword = 281, + unitsKeyword = 282, + statusKeyword = 283, + accessKeyword = 284, + defaultKeyword = 285, + impliedKeyword = 286, + indexKeyword = 287, + augmentsKeyword = 288, + reordersKeyword = 289, + sparseKeyword = 290, + expandsKeyword = 291, + createKeyword = 292, + membersKeyword = 293, + objectsKeyword = 294, + mandatoryKeyword = 295, + optionalKeyword = 296, + refineKeyword = 297, + abnfKeyword = 298, + OctetStringKeyword = 299, + ObjectIdentifierKeyword = 300, + Integer32Keyword = 301, + Unsigned32Keyword = 302, + Integer64Keyword = 303, + Unsigned64Keyword = 304, + Float32Keyword = 305, + Float64Keyword = 306, + Float128Keyword = 307, + BitsKeyword = 308, + EnumerationKeyword = 309, + currentKeyword = 310, + deprecatedKeyword = 311, + obsoleteKeyword = 312, + readonlyKeyword = 313, + readwriteKeyword = 314, + parentKeyword = 315, + classKeyword = 316, + extendsKeyword = 317, + attributeKeyword = 318, + uniqueKeyword = 319, + eventKeyword = 320, + PointerKeyword = 321, + eventonlyKeyword = 322, + neginfKeyword = 323, + posinfKeyword = 324, + snanKeyword = 325, + qnanKeyword = 326 + }; +#endif +/* Tokens. */ +#define DOT 258 +#define DOT_DOT 259 +#define COLON_COLON 260 +#define ucIdentifier 261 +#define lcIdentifier 262 +#define floatValue 263 +#define textSegment 264 +#define decimalNumber 265 +#define hexadecimalNumber 266 +#define OID 267 +#define moduleKeyword 268 +#define importKeyword 269 +#define revisionKeyword 270 +#define identityKeyword 271 +#define oidKeyword 272 +#define dateKeyword 273 +#define organizationKeyword 274 +#define contactKeyword 275 +#define descriptionKeyword 276 +#define referenceKeyword 277 +#define extensionKeyword 278 +#define typedefKeyword 279 +#define typeKeyword 280 +#define formatKeyword 281 +#define unitsKeyword 282 +#define statusKeyword 283 +#define accessKeyword 284 +#define defaultKeyword 285 +#define impliedKeyword 286 +#define indexKeyword 287 +#define augmentsKeyword 288 +#define reordersKeyword 289 +#define sparseKeyword 290 +#define expandsKeyword 291 +#define createKeyword 292 +#define membersKeyword 293 +#define objectsKeyword 294 +#define mandatoryKeyword 295 +#define optionalKeyword 296 +#define refineKeyword 297 +#define abnfKeyword 298 +#define OctetStringKeyword 299 +#define ObjectIdentifierKeyword 300 +#define Integer32Keyword 301 +#define Unsigned32Keyword 302 +#define Integer64Keyword 303 +#define Unsigned64Keyword 304 +#define Float32Keyword 305 +#define Float64Keyword 306 +#define Float128Keyword 307 +#define BitsKeyword 308 +#define EnumerationKeyword 309 +#define currentKeyword 310 +#define deprecatedKeyword 311 +#define obsoleteKeyword 312 +#define readonlyKeyword 313 +#define readwriteKeyword 314 +#define parentKeyword 315 +#define classKeyword 316 +#define extendsKeyword 317 +#define attributeKeyword 318 +#define uniqueKeyword 319 +#define eventKeyword 320 +#define PointerKeyword 321 +#define eventonlyKeyword 322 +#define neginfKeyword 323 +#define posinfKeyword 324 +#define snanKeyword 325 +#define qnanKeyword 326 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 360 "parser-sming.y" +{ + char *id; /* identifier name */ + int rc; /* >=0: ok, <0: error */ + time_t date; /* a date value */ + char *text; + Module *modulePtr; + Node *nodePtr; + Object *objectPtr; + Identity *identityPtr; + Macro *macroPtr; + Type *typePtr; + Class *classPtr; + Attribute *attributePtr; + Event *eventPtr; + Index index; + Option *optionPtr; + Refinement *refinementPtr; + SmiStatus status; + SmiAccess access; + NamedNumber *namedNumberPtr; + Range *rangePtr; + SmiValue *valuePtr; + List *listPtr; + Revision *revisionPtr; +} +/* Line 1489 of yacc.c. */ +#line 217 "parser-sming.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + diff --git a/lib/parser-sming.y b/lib/parser-sming.y new file mode 100644 index 0000000..555e570 --- /dev/null +++ b/lib/parser-sming.y @@ -0,0 +1,3124 @@ +/* + * parser-sming.y -- + * + * Syntax rules for parsing the SMIng MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: parser-sming.y 7966 2008-03-27 21:25:52Z schoenw $ + */ + +%{ + +#include + +#ifdef BACKEND_SMING + +#define _ISOC99_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#include +#endif + +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "error.h" +#include "parser-sming.h" +#include "scanner-sming.h" +#include "data.h" +#include "check.h" +#include "util.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + +/* + * These arguments are passed to yyparse() and yylex(). + */ +#define YYPARSE_PARAM parserPtr +#define YYLEX_PARAM parserPtr + + + +#define thisParserPtr ((Parser *)parserPtr) +#define thisModulePtr (((Parser *)parserPtr)->modulePtr) + + + +/* + * NOTE: The argument lvalp ist not really a void pointer. Unfortunately, + * we don't know it better at this point. bison generated C code declares + * YYSTYPE just a few lines below based on the `%union' declaration. + */ +extern int yylex(void *lvalp, Parser *parserPtr); + + + +static char *typeIdentifier, *macroIdentifier, *identityIdentifier, + *classIdentifier, *attributeIdentifier; +static char *importModulename = NULL; +static Type *typePtr = NULL; +static Macro *macroPtr = NULL; +static Identity *identityPtr = NULL; +static Class *classPtr = NULL; +static Attribute *attributePtr = NULL; +static Event *eventPtr = NULL; +static SmiBasetype defaultBasetype = SMI_BASETYPE_UNKNOWN; +static NamedNumber *namedNumberPtr = NULL; +static int bitsFlag = 0; /* used to differentiate bits definition from enum*/ +static int attributeFlag = 0; /* + *Used to differentiate between attribute and + *and typedef to tie the type statement + *respectively to class or module. + */ + + +#define SMI_EPOCH 631152000 /* 01 Jan 1990 00:00:00 */ + + +static Type * +findType(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + Import *importPtr; + char *module, *type; + + type = strstr(spec, "::"); + if (!type) { + typePtr = findTypeByModuleAndName(modulePtr, spec); + if (!typePtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + typePtr = findTypeByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + type = &type[2]; + typePtr = findTypeByModulenameAndName(module, type); + } + return typePtr; +} + + +static Identity * +findIdentity(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Identity *identityPtr; + Import *importPtr; + char *module, *identity; + + identity = strstr(spec, "::"); + if (!identity) { + identityPtr = findIdentityByModuleAndName(modulePtr, spec); + if (!identityPtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + identityPtr = findIdentityByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + identity = &identity[2]; + identityPtr = findIdentityByModulenameAndName(module, identity); + } + return identityPtr; +} + +static Class * +findClass(char *spec, Parser *parserPtr, Module *modulePtr) +{ + Class *classPtr; + Import *importPtr; + char *module, *class; + + class = strstr(spec, "::"); + if (!class) { + classPtr = findClassByModuleAndName(modulePtr, spec); + if (!classPtr) { + importPtr = findImportByName(spec, modulePtr); + if (importPtr) { + classPtr = findClassByModulenameAndName(importPtr->export.module, + spec); + } + } + } else { + module = strtok(spec, ":"); + class = &class[2]; + classPtr = findClassByModulenameAndName(module, class); + } + return classPtr; +} + +static void +checkTypes(Parser *parserPtr, Module *modulePtr) +{ + Type *typePtr; + + for(typePtr = modulePtr->firstTypePtr; + typePtr; typePtr = typePtr->nextPtr) { + + /* + * Complain about empty description clauses. + */ + + if (! parserPtr->flags & SMI_FLAG_NODESCR + && (! typePtr->export.description + || ! typePtr->export.description[0])) { + smiPrintErrorAtLine(parserPtr, ERR_EMPTY_DESCRIPTION, + typePtr->line, typePtr->export.name); + } + + smiCheckNamedNumberRedefinition(parserPtr, typePtr); + smiCheckNamedNumberSubtyping(parserPtr, typePtr); + } +} + + + +static time_t +checkDate(Parser *parserPtr, char *date) +{ + struct tm tm; + time_t anytime; + int i, len; + char *p; + + memset(&tm, 0, sizeof(tm)); + anytime = 0; + + len = strlen(date); + if (len == 10 || len == 16) { + for (i = 0; i < len; i++) { + if (((i < 4 || i == 5 || i == 6 || i == 8 || i == 9 || i == 11 + || i == 12 || i == 14 || i == 15) && ! isdigit((int)date[i])) + || ((i == 4 || i == 7) && date[i] != '-') + || (i == 10 && date[i] != ' ') + || (i == 13 && date[i] != ':')) { + smiPrintError(parserPtr, ERR_DATE_CHARACTER, date); + anytime = (time_t) -1; + break; + } + } + } else { + smiPrintError(parserPtr, ERR_DATE_LENGTH, date); + anytime = (time_t) -1; + } + + if (anytime == 0) { + for (i = 0, p = date, tm.tm_year = 0; i < 4; i++, p++) { + tm.tm_year = tm.tm_year * 10 + (*p - '0'); + } + p++; + tm.tm_mon = (p[0]-'0') * 10 + (p[1]-'0'); + p += 3; + tm.tm_mday = (p[0]-'0') * 10 + (p[1]-'0'); + p += 2; + if (len == 16) { + p++; + tm.tm_hour = (p[0]-'0') * 10 + (p[1]-'0'); + p += 3; + tm.tm_min = (p[0]-'0') * 10 + (p[1]-'0'); + } + + if (tm.tm_mon < 1 || tm.tm_mon > 12) { + smiPrintError(parserPtr, ERR_DATE_MONTH, date); + } + if (tm.tm_mday < 1 || tm.tm_mday > 31) { + smiPrintError(parserPtr, ERR_DATE_DAY, date); + } + if (tm.tm_hour < 0 || tm.tm_hour > 23) { + smiPrintError(parserPtr, ERR_DATE_HOUR, date); + } + if (tm.tm_min < 0 || tm.tm_min > 59) { + smiPrintError(parserPtr, ERR_DATE_MINUTES, date); + } + + tm.tm_year -= 1900; + tm.tm_mon -= 1; + tm.tm_isdst = 0; + + anytime = timegm(&tm); + + if (anytime == (time_t) -1) { + smiPrintError(parserPtr, ERR_DATE_VALUE, date); + } else { + if (anytime < SMI_EPOCH) { + smiPrintError(parserPtr, ERR_DATE_IN_PAST, date); + } + if (anytime > time(NULL)) { + smiPrintError(parserPtr, ERR_DATE_IN_FUTURE, date); + } + } + } + + return (anytime == (time_t) -1) ? 0 : anytime; +} + +static char *hexToStr(char *hexStr, int len) +{ + union{ + char ch; + long l; + } hex2char; + + char* res =(char*)malloc(sizeof(char)*len/2+1); + char* tmp =(char*)malloc(sizeof(char)*3); + int i,j = 0; + + tmp[2]=0; + for(i=2; i+1basetype != SMI_BASETYPE_BITS) + return; + + bitsListPtr = typePtr->listPtr; + valueListPtr = (void *)valuePtr->value.ptr; + for (nBits = 0, p = bitsListPtr; p; p = p->nextPtr) { + if (nBits < 1+((NamedNumber *)(p->ptr))->export.value.value.unsigned64) { + nBits = 1+((NamedNumber *)(p->ptr))->export.value.value.unsigned64; + } + } + valuePtr->value.ptr = smiMalloc((nBits+7)/8); + memset(valuePtr->value.ptr, 0, (nBits+7)/8); + valuePtr->len = (nBits+7)/8; + for (p = valueListPtr; p;) { + for (pp = bitsListPtr; pp; pp = pp->nextPtr) { + if (!strcmp(p->ptr, + ((NamedNumber *)(pp->ptr))->export.name)) { + bit = (int)(((NamedNumber *)(pp->ptr))->export.value.value.unsigned64); + valuePtr->value.ptr[bit/8] |= + 1 << (7-(bit%8)); + } + } + smiFree(p->ptr); + nextPtr = p->nextPtr; + smiFree(p); + p = nextPtr; + } +} + + +%} + +/* + * The grammars start symbol. + */ +%start smingFile + + + +/* + * We call the parser from within the parser when IMPORTing modules, + * hence we need reentrant parser code. This is a bison feature. + */ +%pure_parser + + + +/* + * The attributes. + */ +%union { + char *id; /* identifier name */ + int rc; /* >=0: ok, <0: error */ + time_t date; /* a date value */ + char *text; + Module *modulePtr; + Node *nodePtr; + Object *objectPtr; + Identity *identityPtr; + Macro *macroPtr; + Type *typePtr; + Class *classPtr; + Attribute *attributePtr; + Event *eventPtr; + Index index; + Option *optionPtr; + Refinement *refinementPtr; + SmiStatus status; + SmiAccess access; + NamedNumber *namedNumberPtr; + Range *rangePtr; + SmiValue *valuePtr; + List *listPtr; + Revision *revisionPtr; +} + + + +/* + * Tokens and their attributes. + */ +%token DOT +%token DOT_DOT +%token COLON_COLON + +%token ucIdentifier +%token lcIdentifier + +%token floatValue +%token textSegment +%token decimalNumber +%token hexadecimalNumber +%token OID + +%token moduleKeyword +%token importKeyword +%token revisionKeyword +%token identityKeyword +%token oidKeyword +%token dateKeyword +%token organizationKeyword +%token contactKeyword +%token descriptionKeyword +%token referenceKeyword +%token extensionKeyword +%token typedefKeyword +%token typeKeyword +%token formatKeyword +%token unitsKeyword +%token statusKeyword +%token accessKeyword +%token defaultKeyword +%token impliedKeyword +%token indexKeyword +%token augmentsKeyword +%token reordersKeyword +%token sparseKeyword +%token expandsKeyword +%token createKeyword +%token membersKeyword +%token objectsKeyword +%token mandatoryKeyword +%token optionalKeyword +%token refineKeyword +%token abnfKeyword +%token OctetStringKeyword +%token ObjectIdentifierKeyword +%token Integer32Keyword +%token Unsigned32Keyword +%token Integer64Keyword +%token Unsigned64Keyword +%token Float32Keyword +%token Float64Keyword +%token Float128Keyword +%token BitsKeyword +%token EnumerationKeyword +%token currentKeyword +%token deprecatedKeyword +%token obsoleteKeyword +%token readonlyKeyword +%token readwriteKeyword + +%token parentKeyword +%token classKeyword +%token extendsKeyword +%token attributeKeyword +%token uniqueKeyword +%token eventKeyword +%token PointerKeyword +%token eventonlyKeyword +%token neginfKeyword +%token posinfKeyword +%token snanKeyword +%token qnanKeyword + + +/* + * Types of non-terminal symbols. + */ + +%type smingFile +%type moduleStatement_optsep_0n +%type moduleStatement_optsep_1n +%type moduleStatement_optsep +%type moduleStatement +%type extensionStatement_stmtsep_0n +%type extensionStatement_stmtsep_1n +%type extensionStatement_stmtsep +%type extensionStatement +%type identityStatement_stmtsep_0n +%type identityStatement_stmtsep_1n +%type identityStatement_stmtsep +%type identityStatement +%type parentStatement_stmtsep_01 +%type parentStatement +%type typedefStatement_stmtsep_0n +%type typedefStatement_stmtsep_1n +%type typedefStatement_stmtsep +%type typedefStatement +%type attributeStatement_stmtsep_0n +%type attributeStatement_stmtsep_1n +%type attributeStatement_stmtsep +%type attributeStatement +%type eventStatement_stmtsep_0n +%type eventStatement_stmtsep_1n +%type eventStatement_stmtsep +%type eventStatement +%type classStatement_stmtsep_0n +%type classStatement_stmtsep_1n +%type classStatement_stmtsep +%type classStatement +%type extendsStatement_stmtsep_01 +%type extendsStatement +%type importStatement_stmtsep_0n +%type importStatement_stmtsep_1n +%type importStatement_stmtsep +%type importStatement +%type revisionStatement_stmtsep_0n +%type revisionStatement_stmtsep_1n +%type revisionStatement_stmtsep +%type revisionStatement +%type typedefTypeStatement +%type attributeTypeStatement +%type dateStatement +%type organizationStatement +%type contactStatement +%type formatStatement_stmtsep_01 +%type formatStatement +%type unitsStatement_stmtsep_01 +%type unitsStatement +%type statusStatement_stmtsep_01 +%type statusStatement +%type defaultStatement_stmtsep_01 +%type defaultStatement +%type accessStatement_stmtsep_01 +%type accessStatement +%type access +%type descriptionStatement_stmtsep_01 +%type descriptionStatement +%type referenceStatement_stmtsep_01 +%type referenceStatement +%type abnfStatement_stmtsep_01 +%type abnfStatement +%type refinedBaseType_refinedType +%type refinedBaseType +%type refinedType +%type attribute_refinedBaseType_refinedType +%type attribute_refinedBaseType +%type attribute_refinedType +%type optsep_anySpec_01 +%type anySpec +%type optsep_numberSpec_01 +%type numberSpec +%type furtherNumberElement_0n +%type furtherNumberElement_1n +%type furtherNumberElement +%type numberElement +%type numberUpperLimit_01 +%type numberUpperLimit +%type optsep_floatSpec_01 +%type floatSpec +%type furtherFloatElement_0n +%type furtherFloatElement_1n +%type furtherFloatElement +%type floatElement +%type floatUpperLimit_01 +%type floatUpperLimit +%type specialFloatValue +%type optsep_pointerRestr_01 +%type pointerRestr +%type bitsOrEnumerationSpec +%type bitsOrEnumerationList +%type furtherBitsOrEnumerationItem_0n +%type furtherBitsOrEnumerationItem_1n +%type furtherBitsOrEnumerationItem +%type bitsOrEnumerationItem +%type identifierList +%type furtherIdentifier_0n +%type furtherIdentifier_1n +%type furtherIdentifier +%type uniqueStatement_stmtsep_01 +%type uniqueStatement +%type uniqueSpec +%type bitsValue +%type bitsList +%type furtherLcIdentifier_0n +%type furtherLcIdentifier_1n +%type furtherLcIdentifier +%type identifier +%type qucIdentifier +%type qlcIdentifier +%type text +%type optsep_textSegment_0n +%type optsep_textSegment_1n +%type optsep_textSegment +%type date +%type format +%type units +%type anyValue +%type status +%type number +%type negativeNumber +%type signedNumber +%type optsep_comma_01 +%type sep +%type optsep +%type stmtsep +%type qOID + +%% + +/* + * Yacc rules. + * + */ + + +/* + * One mibFile may contain multiple MIB modules. + * It's also possible that there's no module in a file. + */ +smingFile: optsep moduleStatement_optsep_0n + { + /* + * Return the number of successfully + * parsed modules. + */ + $$ = $2; + } + ; + +moduleStatement_optsep_0n: /* empty */ + { + $$ = 0; + } + | moduleStatement_optsep_1n + { + $$ = $1; + } + ; + +moduleStatement_optsep_1n: moduleStatement_optsep + { + $$ = $1; + } + | moduleStatement_optsep_1n moduleStatement_optsep + { + /* + * Sum up the number of successfully parsed + * modules or return -1, if at least one + * module failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +moduleStatement_optsep: moduleStatement optsep + { + /* + * If we got a (Module *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1 != NULL) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +moduleStatement: moduleKeyword sep ucIdentifier + { + thisParserPtr->modulePtr = findModuleByName($3); + if (!thisParserPtr->modulePtr) { + thisParserPtr->modulePtr = + addModule($3, + smiStrdup(thisParserPtr->path), + 0, + thisParserPtr); + } else { + smiPrintError(thisParserPtr, + ERR_MODULE_ALREADY_LOADED, + $3); + free($3); + /* + * this aborts parsing the whole file, + * not only the current module. + */ + YYABORT; + } + thisModulePtr->export.language = SMI_LANGUAGE_SMING; + thisParserPtr->modulePtr->numImportedIdentifiers + = 0; + thisParserPtr->modulePtr->numStatements = 0; + thisParserPtr->modulePtr->numModuleIdentities = 0; + thisParserPtr->firstIndexlabelPtr = NULL; + thisParserPtr->identityObjectName = NULL; + } + optsep '{' stmtsep + importStatement_stmtsep_0n + organizationStatement stmtsep + { + if ($9) { + setModuleOrganization(thisParserPtr->modulePtr, + $9); + } + } + contactStatement stmtsep + { + if ($12) { + setModuleContactInfo(thisParserPtr->modulePtr, + $12); + } + } + descriptionStatement stmtsep + { + if ($15) { + setModuleDescription(thisParserPtr->modulePtr, + $15, thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + if ($18) { + setModuleReference(thisParserPtr->modulePtr, + $18, thisParserPtr); + } + } + revisionStatement_stmtsep_0n + extensionStatement_stmtsep_0n + identityStatement_stmtsep_0n + typedefStatement_stmtsep_0n + classStatement_stmtsep_0n + '}' optsep ';' + { + checkTypes(thisParserPtr, thisModulePtr); + + $$ = thisModulePtr; + } + ; + +extensionStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | extensionStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed extension statements. + */ + $$ = $1; + } + ; + +extensionStatement_stmtsep_1n: extensionStatement_stmtsep + { + $$ = $1; + } + | extensionStatement_stmtsep_1n + extensionStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * extensions or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +extensionStatement_stmtsep: extensionStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +extensionStatement: extensionKeyword sep lcIdentifier + { + macroIdentifier = $3; + macroPtr = addMacro(macroIdentifier, + 0, + thisParserPtr); + setMacroDecl(macroPtr, SMI_DECL_EXTENSION); + } + optsep '{' stmtsep + statusStatement_stmtsep_01 + { + if (macroPtr && $8) { + setMacroStatus(macroPtr, $8); + } + } + descriptionStatement_stmtsep_01 + { + if (macroPtr && $10) { + setMacroDescription(macroPtr, $10, + thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + if (macroPtr && $12) { + setMacroReference(macroPtr, $12, + thisParserPtr); + } + } + abnfStatement_stmtsep_01 + { + if (macroPtr && $14) { + setMacroAbnf(macroPtr, $14, + thisParserPtr); + } + } + '}' optsep ';' + { + $$ = 0; + macroPtr = NULL; + } + ; + +typedefStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | typedefStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + $$ = $1; + } + ; + +typedefStatement_stmtsep_1n: typedefStatement_stmtsep + { + $$ = $1; + } + | typedefStatement_stmtsep_1n + typedefStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * typedefs or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +typedefStatement_stmtsep: typedefStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +typedefStatement: typedefKeyword sep ucIdentifier + { + typeIdentifier = $3; + /* + *check for duplicate names in the module + */ + if(typePtr = + findType(typeIdentifier, thisParserPtr,thisModulePtr)) + if( typePtr->modulePtr == thisParserPtr->modulePtr) + smiPrintError(thisParserPtr, + ERR_DUPLICATE_TYPE_NAME, + typeIdentifier); + } + optsep '{' stmtsep + typedefTypeStatement stmtsep + { + if ($8) { + if ($8->export.name) { + /* + * If the exact type has been found + * and no new Type structure has been + * created, we have to create a + * duplicate now. + */ + typePtr = duplicateType($8, 0, + thisParserPtr); + } else { + typePtr = $8; + } + typePtr = setTypeName(typePtr, typeIdentifier); + setTypeDecl(typePtr, SMI_DECL_TYPEDEF); + } + defaultBasetype = typePtr->export.basetype; + } + defaultStatement_stmtsep_01 + { + if (typePtr && $11) { + if(typePtr->export.basetype == + SMI_BASETYPE_ENUM) + //check ENUM value for correctness + { + if($11->len) + if(namedNumberPtr = findNamedNumberByName(typePtr, + $11->value.ptr)){ + smiFree($11); + $11 = &namedNumberPtr->export.value; + } + else{ smiPrintError(thisParserPtr, + ERR_ENUM_NAME_NOT_DEFINED, + $11->value.ptr); + } + } + //NOTE that the bits default value is set in the anyval + //rule + setTypeValue(typePtr, $11); + } + } + formatStatement_stmtsep_01 + { + if (typePtr && $13 + && smiCheckFormat(thisParserPtr, + typePtr->export.basetype, + $13, 0)) { + setTypeFormat(typePtr, $13); + } + } + unitsStatement_stmtsep_01 + { + if (typePtr && $15) { + setTypeUnits(typePtr, $15); + } + } + statusStatement_stmtsep_01 + { + if (typePtr && $17) { + setTypeStatus(typePtr, $17); + } + } + descriptionStatement_stmtsep_01 + { + if (typePtr && $19) { + setTypeDescription(typePtr, $19, + thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + if (typePtr && $21) { + setTypeReference(typePtr, $21, thisParserPtr); + } + } + '}' optsep ';' + { + smiCheckNamedNumberSubtyping(thisParserPtr , typePtr); + smiCheckNamedNumbersOrder(thisParserPtr , typePtr); + smiCheckNamedNumberRedefinition(thisParserPtr , typePtr); + $$ = 0; + typePtr = NULL; + free(typeIdentifier); + defaultBasetype = SMI_BASETYPE_UNKNOWN; + } + ; + +classStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | classStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + $$ = $1; + } + ; + +classStatement_stmtsep_1n: classStatement_stmtsep + { + $$ = $1; + } + | classStatement_stmtsep_1n + classStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * classes or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +classStatement_stmtsep: classStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +classStatement: classKeyword sep ucIdentifier + { + classIdentifier = $3; + if(findClassByModuleAndName(thisModulePtr, classIdentifier)) + { + smiPrintError(thisParserPtr, + ERR_DUPLICATE_CLASS_NAME, + attributeIdentifier); + } + else{ + classPtr = addClass(classIdentifier, + thisParserPtr); + setClassDecl(classPtr, SMI_DECL_CLASS); + } + } + optsep '{' stmtsep + extendsStatement_stmtsep_01 + { + if(classPtr && $8) + classPtr->parentPtr = $8; + } + attributeStatement_stmtsep_0n + uniqueStatement_stmtsep_01 + { + List *tmpList; + Attribute *tmpAttribute; + if(classPtr && $11) + { + + //Check for "magic" value #@# that defines + //scalar class. See NOTE after Class definitino in data.h + if(!strcmp((char*)($11->ptr),"#@#")) + { + classPtr->uniqueList = (List*)malloc(sizeof(List)); + classPtr->uniqueList->ptr = classPtr; + classPtr->uniqueList->nextPtr = NULL; + smiFree($11); + } + else + { + tmpList = $11; + //convert all attribute names to atributes + for(tmpList; tmpList; tmpList=tmpList->nextPtr) + { + if(tmpAttribute = + (Attribute*)smiGetAttribute(&(classPtr->export),(char*)(tmpList->ptr))) + { + smiFree(tmpList->ptr); + tmpList->ptr = tmpAttribute; + } + else + { + smiFree(tmpList->ptr); + tmpList->ptr = NULL; + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_NOT_FOUND, + attributeIdentifier); + } + } + + classPtr->uniqueList = $11; + } + } + } + eventStatement_stmtsep_0n + statusStatement_stmtsep_01 + { + if (classPtr && $14) { + setClassStatus(classPtr, $14); + } + } + descriptionStatement_stmtsep_01 + { + if (classPtr && $16) { + setClassDescription(classPtr, $16, + thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + if (classPtr && $18) { + setClassReference(classPtr, $18, + thisParserPtr); + } + } + '}' optsep ';' + { + $$ = 0; + classPtr = NULL; + } + ; + +attributeStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | attributeStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed typedef statements. + */ + $$ = $1; + } + ; + +attributeStatement_stmtsep_1n: attributeStatement_stmtsep + { + $$ = $1; + } + | attributeStatement_stmtsep_1n + attributeStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * attributes or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +attributeStatement_stmtsep: attributeStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +attributeStatement: attributeKeyword sep lcIdentifier + { + attributeIdentifier = $3; + attributePtr = (Attribute*)smiGetAttribute(&(classPtr->export), + attributeIdentifier); + if(attributePtr) + { + smiPrintError(thisParserPtr, + ERR_DUPLICATE_ATTRIBUTE_NAME, + attributeIdentifier); + attributePtr = NULL; + } + } + optsep '{' stmtsep + attributeTypeStatement + { + if ($8) { + attributePtr = $8; + setAttributeName(attributePtr, + attributeIdentifier); + setAttributeDecl(attributePtr, + SMI_DECL_ATTRIBUTE); + defaultBasetype = attributePtr->export.basetype; + } + } + accessStatement_stmtsep_01 + { + if($10 && attributePtr){ + /* check whether there's access for class reference, + which is not allowed */ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_ACCESS, + attributeIdentifier); + else { + setAttributeAccess(attributePtr,$10); + } + } + else if(attributePtr && attributePtr->parentTypePtr) + { + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_MISSING_ACCESS, + attributeIdentifier); + } + } + defaultStatement_stmtsep_01 + { + if($12 && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_DEFAULT, + attributeIdentifier); + else{ + attributePtr->export.value = *$12; + } + } + else if(attributePtr) + { + attributePtr->export.value.basetype = + SMI_BASETYPE_UNKNOWN; + } + } + formatStatement_stmtsep_01 + { + if($14 && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_FORMAT, + attributeIdentifier); + else{ + if (smiCheckFormat(thisParserPtr, + attributePtr->export.basetype,$14, 0)) + { + attributePtr->export.format = $14; + } + } + } + } + unitsStatement_stmtsep_01 + { + if($16 && attributePtr){ + if(attributePtr->parentClassPtr) + smiPrintError(thisParserPtr, + ERR_ATTRIBUTE_CLASS_UNITS, + attributeIdentifier); + else{ + attributePtr->export.units = $16; + } + } + } + statusStatement_stmtsep_01 + { + if (attributePtr && $18) + attributePtr->export.status = $18; + } + descriptionStatement_stmtsep_01 + { + if (attributePtr && $20) + attributePtr->export.description = $20; + } + referenceStatement_stmtsep_01 + { + if (attributePtr && $22) + attributePtr->export.reference = $22; + } + '}' optsep ';' + { + $$ = attributePtr; + attributePtr = NULL; + defaultBasetype = SMI_BASETYPE_UNKNOWN; + } + ; + +eventStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | eventStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed event statements. + */ + $$ = $1; + } + ; + +eventStatement_stmtsep_1n: eventStatement_stmtsep + { + $$ = $1; + } + | eventStatement_stmtsep_1n + eventStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * events or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +eventStatement_stmtsep: eventStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +eventStatement: eventKeyword sep lcIdentifier + { + //TODO check for repeated names + eventPtr=addEvent($3,classPtr,thisParserPtr); + } + optsep '{' stmtsep + statusStatement_stmtsep_01 + { + if($8 && eventPtr) + eventPtr->export.status = $8; + } + descriptionStatement_stmtsep_01 + { + if($10 && eventPtr) + eventPtr->export.description = $10; + } + referenceStatement_stmtsep_01 + { + if($12 && eventPtr) + eventPtr->export.reference = $12; + } + '}' optsep ';' + { + $$ = eventPtr; + eventPtr = NULL; + } + ; + +importStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | importStatement_stmtsep_1n + { + $$ = $1; + } + ; + +importStatement_stmtsep_1n: importStatement_stmtsep + { + $$ = $1; + } + | importStatement_stmtsep_1n importStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * imports or return -1, if at least one + * module failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +importStatement_stmtsep: importStatement stmtsep + { + /* + * If we got an (Object *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +importStatement: importKeyword sep ucIdentifier + { + importModulename = smiStrdup($3); + } + optsep '(' optsep + identifierList + { + List *listPtr, *nextPtr; + + for (listPtr = $8; listPtr; listPtr = nextPtr) { + addImport(listPtr->ptr, thisParserPtr); + thisParserPtr->modulePtr-> + numImportedIdentifiers++; + nextPtr = listPtr->nextPtr; + free(listPtr); + } + } + optsep ')' optsep ';' + { + Module *modulePtr; + char *s = importModulename; + + modulePtr = findModuleByName(s); + if (!modulePtr) { + modulePtr = loadModule(s, thisParserPtr); + } + checkImports(modulePtr, thisParserPtr); + free(s); + $$ = NULL; + } + ; + +revisionStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | revisionStatement_stmtsep_1n + { + $$ = $1; + } + ; + +revisionStatement_stmtsep_1n: revisionStatement_stmtsep + { + $$ = $1; + } + | revisionStatement_stmtsep_1n revisionStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * revisions or return -1, if at least one + * module failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +revisionStatement_stmtsep: revisionStatement stmtsep + { + /* + * If we got a (Revision *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +revisionStatement: revisionKeyword optsep '{' stmtsep + dateStatement stmtsep + descriptionStatement stmtsep + '}' optsep ';' + { + $$ = addRevision($5, $7, thisParserPtr); + } + ; + +identityStatement_stmtsep_0n: /* empty */ + { + $$ = 0; + } + | identityStatement_stmtsep_1n + { + /* + * Return the number of successfully + * parsed identity statements. + */ + $$ = $1; + } + ; + +identityStatement_stmtsep_1n: identityStatement_stmtsep + { + $$ = $1; + } + | identityStatement_stmtsep_1n + identityStatement_stmtsep + { + /* + * Sum up the number of successfully parsed + * identities or return -1, if at least one + * failed. + */ + if (($1 >= 0) && ($2 >= 0)) { + $$ = $1 + $2; + } else { + $$ = -1; + } + } + ; + +identityStatement_stmtsep: identityStatement stmtsep + { + /* + * If we got a (Type *) return rc == 1, + * otherwise parsing failed (rc == -1). + */ + if ($1) { + $$ = 1; + } else { + $$ = -1; + } + } + ; + +identityStatement: identityKeyword sep lcIdentifier + { + identityIdentifier = $3; + identityPtr = addIdentity(identityIdentifier, + thisParserPtr); + setIdentityDecl(identityPtr, SMI_DECL_IDENTITY); + } + optsep '{' stmtsep + parentStatement_stmtsep_01 + { + if(identityPtr && $8) { + setIdentityParent(identityPtr,$8); + } + } + statusStatement_stmtsep_01 + { + if (identityPtr && $10) { + setIdentityStatus(identityPtr, $10); + } + } + descriptionStatement_stmtsep_01 + { + if (identityPtr && $12) { + setIdentityDescription(identityPtr, $12, + thisParserPtr); + } + } + referenceStatement_stmtsep_01 + { + setIdentityReference(identityPtr, $14, + thisParserPtr) + } + '}' optsep ';' + { + $$ = 0; + identityPtr = NULL; + } + ; + +typedefTypeStatement: typeKeyword sep refinedBaseType_refinedType optsep ';' + { + $$ = $3; + } + ; + +attributeTypeStatement: typeKeyword sep attribute_refinedBaseType_refinedType optsep ';' + { + $$ = $3; + } + ; + +dateStatement: dateKeyword sep date optsep ';' + { + $$ = $3; + } + ; + +organizationStatement: organizationKeyword sep text optsep ';' + { + $$ = $3; + } + ; + +contactStatement: contactKeyword sep text optsep ';' + { + $$ = $3; + } + ; + +formatStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | formatStatement stmtsep + { + $$ = $1; + } + ; + +formatStatement: formatKeyword sep format optsep ';' + { + $$ = $3; + } + ; + +unitsStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | unitsStatement stmtsep + { + $$ = $1; + } + ; + +unitsStatement: unitsKeyword sep units optsep ';' + { + $$ = $3; + } + ; + +statusStatement_stmtsep_01: /* empty */ + { + $$ = SMI_STATUS_CURRENT; + } + | statusStatement stmtsep + { + $$ = $1; + } + ; + +statusStatement: statusKeyword sep status optsep ';' + { + $$ = $3; + } + ; + +uniqueStatement_stmtsep_01: + { + $$ = NULL; + } + | uniqueStatement stmtsep + { + $$ = $1; + } + ; + +uniqueStatement: uniqueKeyword sep '(' uniqueSpec ')' optsep ';' + { + $$ = $4; + } + ; + +uniqueSpec: optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = "#@#"; //used to indicate that unique + //statement is present and empty + //i.e. the class is scalar + $$->nextPtr = NULL; + } + | lcIdentifier furtherLcIdentifier_0n optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = $2; + } + ; + + + + +extendsStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | extendsStatement stmtsep + { + $$ = $1; + } + ; + +extendsStatement: extendsKeyword sep ucIdentifier optsep ';' + { + $$ = findClass($3, thisParserPtr,thisModulePtr); + if(!$$)smiPrintError(thisParserPtr, + ERR_UNKNOWN_CLASS, + $3); + + } + ; + +defaultStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | defaultStatement stmtsep + { + $$ = $1; + } + ; + +defaultStatement: defaultKeyword sep anyValue optsep ';' + { + $$ = $3; + } + ; + +accessStatement_stmtsep_01: /* empty */ + { + $$ = SMI_ACCESS_UNKNOWN; + } + | accessStatement stmtsep + { + $$ = $1; + } + ; + +accessStatement: accessKeyword sep access optsep ';' + { + $$ = $3; + } + ; + +access: readonlyKeyword + { + $$ = SMI_ACCESS_READ_ONLY; + } + | readwriteKeyword + { + $$ = SMI_ACCESS_READ_WRITE; + } + | eventonlyKeyword + { + $$ = SMI_ACCESS_EVENT_ONLY; + } + ; + +parentStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | parentStatement stmtsep + { + $$ = $1; + } + ; + +parentStatement: parentKeyword sep lcIdentifier optsep ';' + { + $$ = findIdentity($3, thisParserPtr, thisModulePtr); + if(!$$)smiPrintError(thisParserPtr, + ERR_IDENTITY_PARENT_NOT_FOUND, + $3); + } + ; + +descriptionStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | descriptionStatement stmtsep + { + $$ = $1; + } + ; + +descriptionStatement: descriptionKeyword sep text optsep ';' + { + $$ = $3; + } + ; + +referenceStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | referenceStatement stmtsep + { + $$ = $1; + } + ; + +referenceStatement: referenceKeyword sep text optsep ';' + { + $$ = $3; + } + ; + +abnfStatement_stmtsep_01: /* empty */ + { + $$ = NULL; + } + | abnfStatement stmtsep + { + $$ = $1; + } + ; + +abnfStatement: abnfKeyword sep text optsep ';' + { + $$ = $3; + } + ; + + + +refinedBaseType_refinedType: refinedBaseType + { + $$ = $1; + } + | refinedType + { + $$ = $1; + } + ; + +attribute_refinedBaseType_refinedType: attribute_refinedBaseType + { + $$ = $1; + } + | attribute_refinedType + { + $$ = $1; + } + ; + + +refinedBaseType: OctetStringKeyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeOctetStringPtr; + } else { + $$ = duplicateType(smiHandle->typeOctetStringPtr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeOctetStringPtr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | ObjectIdentifierKeyword + { + $$ = smiHandle->typeObjectIdentifierPtr; + } + | Integer32Keyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeInteger32Ptr; + } else { + $$ = duplicateType(smiHandle->typeInteger32Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeInteger32Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Unsigned32Keyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeUnsigned32Ptr; + } else { + $$ = duplicateType(smiHandle->typeUnsigned32Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeUnsigned32Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Integer64Keyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeInteger64Ptr; + } else { + $$ = duplicateType(smiHandle->typeInteger64Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeInteger64Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Unsigned64Keyword optsep_numberSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeUnsigned64Ptr; + } else { + $$ = duplicateType(smiHandle->typeUnsigned64Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeUnsigned64Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Float32Keyword optsep_floatSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeFloat32Ptr; + } else { + $$ = duplicateType(smiHandle->typeFloat32Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeFloat32Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Float64Keyword optsep_floatSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeFloat64Ptr; + } else { + $$ = duplicateType(smiHandle->typeFloat64Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeFloat64Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | Float128Keyword optsep_floatSpec_01 + { + List *p; + + if (!$2) { + $$ = smiHandle->typeFloat128Ptr; + } else { + $$ = duplicateType(smiHandle->typeFloat128Ptr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeFloat128Ptr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = $$; + } + } + | PointerKeyword optsep_pointerRestr_01 + { + if (!$2) { + $$ = smiHandle->typePointerPtr; + } else { + $$ = duplicateType(smiHandle->typePointerPtr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typePointerPtr); + setTypeList($$, $2); + } + } + | EnumerationKeyword bitsOrEnumerationSpec + { + List *p; + + if (!$2) { + $$ = smiHandle->typeEnumPtr; + } else { + $$ = duplicateType(smiHandle->typeEnumPtr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeEnumPtr); + setTypeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + } + } + | BitsKeyword + { + bitsFlag = 1; //Since Enum elements can be + //negative we must make sure + //that bits is not negative, + //so we raise bitsFlag and + //give error if there is + //negative value + } + bitsOrEnumerationSpec + { + List *p; + + if (!$3) { + $$ = smiHandle->typeBitsPtr; + } else { + $$ = duplicateType(smiHandle->typeBitsPtr, 0, + thisParserPtr); + setTypeParent($$, smiHandle->typeBitsPtr); + setTypeList($$, $3); + for (p = $3; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = $$; + } + + bitsFlag = 0;//reset flag + } + ; + + +attribute_refinedBaseType: OctetStringKeyword optsep_numberSpec_01 + { + List *p; + $$ = duplicateTypeToAttribute(smiHandle->typeOctetStringPtr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeOctetStringPtr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | ObjectIdentifierKeyword + { + $$ = duplicateTypeToAttribute( + smiHandle->typeObjectIdentifierPtr, classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeObjectIdentifierPtr); + } + | Integer32Keyword optsep_numberSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeInteger32Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeInteger32Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Unsigned32Keyword optsep_numberSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeUnsigned32Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeUnsigned32Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Integer64Keyword optsep_numberSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeInteger64Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeInteger64Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Unsigned64Keyword optsep_numberSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeUnsigned64Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeUnsigned64Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Float32Keyword optsep_floatSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeFloat32Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeFloat32Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Float64Keyword optsep_floatSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeFloat64Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeFloat64Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | Float128Keyword optsep_floatSpec_01 + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeFloat128Ptr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeFloat128Ptr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((Range *)p->ptr)->typePtr = (Type*)$$; + } + } + | PointerKeyword optsep_pointerRestr_01 + { + $$ = duplicateTypeToAttribute(smiHandle->typePointerPtr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typePointerPtr); + if ($2) { + setAttributeList($$, $2); + } + } + | EnumerationKeyword bitsOrEnumerationSpec + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeEnumPtr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeEnumPtr); + if ($2) { + setAttributeList($$, $2); + for (p = $2; p; p = p->nextPtr) + ((NamedNumber *)p->ptr)->typePtr = (Type*)$$; + } + } + | BitsKeyword + { + bitsFlag = 1; //Since Enum elements can be + //negative we must make sure + //that bits is not negative, + //so we raise bitsFlag and + //give error if there is + //negative value + } + bitsOrEnumerationSpec + { + List *p; + + $$ = duplicateTypeToAttribute(smiHandle->typeBitsPtr, + classPtr, thisParserPtr); + setAttributeParentType($$, smiHandle->typeBitsPtr); + if ($1) { + setAttributeList($$, $1); + for (p = $1; p; p = p->nextPtr) + ((NamedNumber *)(p->ptr))->typePtr = (Type*)$$; + } + + bitsFlag = 0; /* reset flag */ + } + ; + +refinedType: qucIdentifier optsep_anySpec_01 + { + typePtr = findType($1, thisParserPtr, + thisModulePtr); + if (typePtr && $2) { + typePtr = duplicateType(typePtr, 0, + thisParserPtr); + setTypeList(typePtr, $2); + } + + $$ = typePtr; + } + ; + +attribute_refinedType: qucIdentifier optsep_anySpec_01 + { + Class *tmp; + typePtr = findType($1, thisParserPtr, + thisModulePtr); + if (typePtr && $2) { + attributePtr = duplicateTypeToAttribute(typePtr, + classPtr, thisParserPtr); + setAttributeList(attributePtr, $2); + setAttributeParentType(attributePtr, typePtr); + } else if( typePtr ){ + attributePtr = duplicateTypeToAttribute(typePtr, + classPtr, thisParserPtr); + setAttributeParentType(attributePtr, typePtr); + } else if($2){ + smiPrintError(thisParserPtr, ERR_UNKNOWN_TYPE, $1); + attributePtr = NULL; + } else if (tmp = findClass($1, + thisParserPtr,thisModulePtr)){ + attributePtr = addAttribute($1, classPtr, thisParserPtr); + setAttributeParentClass(attributePtr, tmp); + } else { + attributePtr = NULL; + smiPrintError(thisParserPtr, + ERR_UNKNOWN_TYPE_OR_CLASS, $1); + } + + + $$ = attributePtr; + } + ; + +optsep_anySpec_01: /* empty */ + { + $$ = NULL; + } + | optsep anySpec + { + $$ = $2; + } + ; + +anySpec: numberSpec + { + $$ = $1; + } + | floatSpec + { + $$ = $1; + } + ; + +optsep_numberSpec_01: /* empty */ + { + $$ = NULL; + } + | optsep numberSpec + { + $$ = $2; + } + ; + +numberSpec: '(' optsep numberElement furtherNumberElement_0n + optsep ')' + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $3; + $$->nextPtr = $4; + } + ; + +furtherNumberElement_0n: /* empty */ + { + $$ = NULL; + } + | furtherNumberElement_1n + { + $$ = $1; + } + ; + +furtherNumberElement_1n: furtherNumberElement + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherNumberElement_1n furtherNumberElement + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +furtherNumberElement: optsep '|' optsep numberElement + { + $$ = $4; + } + ; + +numberElement: signedNumber numberUpperLimit_01 + { + $$ = smiMalloc(sizeof(Range)); + $$->export.minValue = *$1; + if ($2) { + $$->export.maxValue = *$2; + smiFree($2); + } else { + $$->export.maxValue = *$1; + } + smiFree($1); + } + ; + +numberUpperLimit_01: /* empty */ + { + $$ = NULL; + } + | numberUpperLimit + { + $$ = $1; + } + ; + +numberUpperLimit: optsep DOT_DOT optsep signedNumber + { + $$ = $4; + } + ; + +optsep_floatSpec_01: /* empty */ + { + $$ = NULL; + } + | optsep floatSpec + { + $$ = $2; + } + ; + +floatSpec: '(' optsep floatElement furtherFloatElement_0n + optsep ')' + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $3; + $$->nextPtr = $4; + } + ; + +furtherFloatElement_0n: /* empty */ + { + $$ = NULL; + } + | furtherFloatElement_1n + { + $$ = $1; + } + ; + +furtherFloatElement_1n: furtherFloatElement + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherFloatElement_1n furtherFloatElement + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +furtherFloatElement: optsep '|' optsep floatElement + { + $$ = $4; + } + ; + +floatElement: floatValue floatUpperLimit_01 + { + $$ = smiMalloc(sizeof(Range)); + $$->export.minValue.basetype = SMI_BASETYPE_FLOAT64; + $$->export.minValue.value.float64 = strtod($1, NULL); + if ($2) { + $$->export.maxValue.basetype = + SMI_BASETYPE_FLOAT64; + $$->export.maxValue.value.float64 = + strtod($2, NULL); + } else { + $$->export.maxValue = $$->export.minValue; + } + } + ; + +floatUpperLimit_01: /* empty */ + { + $$ = NULL; + } + | floatUpperLimit + { + $$ = $1; + } + ; + +floatUpperLimit: optsep DOT_DOT optsep floatValue + { + $$ = $4; + } + ; + +specialFloatValue: + neginfKeyword + { + $$="-inf"; + } + | posinfKeyword + { + $$="+inf"; + } + | qnanKeyword + { + $$="nan"; + } + | snanKeyword + { + $$="nan"; + } + ; + +optsep_pointerRestr_01: /* empty */ + { + $$ = NULL; + } + | optsep pointerRestr + { + NamedNumber *nn =(NamedNumber*)smiMalloc(sizeof(NamedNumber)); + $$ = smiMalloc(sizeof(List)); + $$->ptr = nn; + nn->export.name = $2; + } + ; + +pointerRestr: '(' optsep qlcIdentifier optsep ')' + { + $$ = $3; + } + ; + +bitsOrEnumerationSpec: '(' optsep bitsOrEnumerationList optsep ')' + { + $$ = $3; + } + ; + +bitsOrEnumerationList: bitsOrEnumerationItem furtherBitsOrEnumerationItem_0n + optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = $2; + } + ; + +furtherBitsOrEnumerationItem_0n: /* empty */ + { + $$ = NULL; + } + | furtherBitsOrEnumerationItem_1n + { + $$ = $1; + } + ; + +furtherBitsOrEnumerationItem_1n: furtherBitsOrEnumerationItem + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherBitsOrEnumerationItem_1n + furtherBitsOrEnumerationItem + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + + +furtherBitsOrEnumerationItem: optsep ',' optsep bitsOrEnumerationItem + { + $$ = $4; + } + ; + +bitsOrEnumerationItem: lcIdentifier optsep '(' optsep signedNumber optsep ')' + { + $$ = smiMalloc(sizeof(NamedNumber)); + $$->export.name = $1; + $$->export.value = *$5; + } + ; + +identifierList: identifier furtherIdentifier_0n optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = $2; + } + ; + +furtherIdentifier_0n: /* empty */ + { + $$ = NULL; + } + | furtherIdentifier_1n + { + $$ = $1; + } + ; + +furtherIdentifier_1n: furtherIdentifier + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherIdentifier_1n furtherIdentifier + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +furtherIdentifier: optsep ',' optsep identifier + { + $$ = $4; + } + ; + +bitsValue: '(' optsep bitsList optsep ')' + { + $$ = $3; + } + ; + +bitsList: optsep_comma_01 + { + $$ = NULL; + } + | lcIdentifier furtherLcIdentifier_0n optsep_comma_01 + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = $2; + } + ; + +//NOTE used also for unique statement +furtherLcIdentifier_0n: /* empty */ + { + $$ = NULL; + } + | furtherLcIdentifier_1n + { + $$ = $1; + } + ; + +furtherLcIdentifier_1n: furtherLcIdentifier + { + $$ = smiMalloc(sizeof(List)); + $$->ptr = $1; + $$->nextPtr = NULL; + } + | furtherLcIdentifier_1n furtherLcIdentifier + { + List *p, *pp; + + p = smiMalloc(sizeof(List)); + p->ptr = $2; + p->nextPtr = NULL; + for (pp = $1; pp->nextPtr; pp = pp->nextPtr); + pp->nextPtr = p; + $$ = $1; + } + ; + +furtherLcIdentifier: optsep ',' optsep lcIdentifier + { + $$ = $4; + } + ; + +identifier: ucIdentifier + { + $$ = $1; + } + | lcIdentifier + { + $$ = $1; + } + ; + +qucIdentifier: ucIdentifier COLON_COLON ucIdentifier + { + char *s; + + s = smiMalloc(strlen($1) + + strlen($3) + 3); + sprintf(s, "%s::%s", $1, $3); + $$ = s; + free($1); + free($3); + } + | ucIdentifier + { + $$ = $1; + } + ; + +qlcIdentifier: ucIdentifier COLON_COLON lcIdentifier + { + char *s; + + s = smiMalloc(strlen($1) + + strlen($3) + 3); + sprintf(s, "%s::%s", $1, $3); + $$ = s; + } + | lcIdentifier + { + $$ = $1; + } + ; + +text: textSegment optsep_textSegment_0n + { + int len; + if ($2) { + $$ = smiMalloc(strlen($1) + strlen($2) + 1); + strcpy($$, $1); + strcat($$, $2); + free($1); + free($2); + } else { + $$ = smiStrdup($1); + } + len = strlen($$); + while (len > 0 && $$[len-1] == '\n') { + $$[--len] = 0; + } + } + ; + +optsep_textSegment_0n: /* empty */ + { + $$ = NULL; + } + | optsep_textSegment_1n + { + $$ = $1; + } + ; + +optsep_textSegment_1n: optsep_textSegment + { + $$ = $1; + } + | optsep_textSegment_1n optsep_textSegment + { + $$ = smiMalloc(strlen($1) + strlen($2) + 1); + strcpy($$, $1); + strcat($$, $2); + free($1); + free($2); + } + ; + +optsep_textSegment: optsep textSegment + { + $$ = smiStrdup($2); + } + ; + +date: textSegment + { + $$ = checkDate(thisParserPtr, $1); + } + ; + +format: textSegment + { + $$ = smiStrdup($1); + } + ; + +units: textSegment + { + $$ = smiStrdup($1); + } + ; + +/* + * The type of `anyValue' must be determined from the + * context. `anyValue' appears only in default value clauses. Hence, + * we set a global variable defaultBasetype in the object type + * declaring clause to remember the expected type. Here, we use this + * variable to build an SmiValue with the appropriate base type. + */ +anyValue: bitsValue + { + if (defaultBasetype == SMI_BASETYPE_BITS) { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_BITS; + $$->value.ptr = (void*)($1); + //set the bits value in the value.integer32 + if(typePtr){ + createBitsValue($$,typePtr); + } + else if(attributePtr){ + createBitsValue($$, + (Type*)smiGetAttributeParentType(&(attributePtr->export))); + } + } else { + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + } + } + | decimalNumber + { + /* Note: might also be an OID or signed */ + switch (defaultBasetype) { + case SMI_BASETYPE_UNSIGNED32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 10); + break; + case SMI_BASETYPE_UNSIGNED64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = strtoull($1, NULL, 10); + break; + case SMI_BASETYPE_INTEGER32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = strtol($1, NULL, 10); + break; + case SMI_BASETYPE_INTEGER64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = strtoll($1, NULL, 10); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->len = strlen($1); + $$->value.ptr = smiStrdup($1); + /* TODO */ + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | '-' decimalNumber + { + switch (defaultBasetype) { + case SMI_BASETYPE_INTEGER32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = - strtol($2, NULL, 10); + break; + case SMI_BASETYPE_INTEGER64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = - strtoll($2, NULL, 10); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | hexadecimalNumber + { + /* Note: might also be an octet string */ + switch (defaultBasetype) { + case SMI_BASETYPE_UNSIGNED32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED32; + $$->value.unsigned32 = strtoul($1, NULL, 16); + break; + case SMI_BASETYPE_UNSIGNED64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = strtoull($1, NULL, 16); + break; + case SMI_BASETYPE_INTEGER32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER32; + $$->value.integer32 = strtol($1, NULL, 16); + break; + case SMI_BASETYPE_INTEGER64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = strtoll($1, NULL, 16); + break; + case SMI_BASETYPE_OCTETSTRING: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OCTETSTRING; + $$->value.ptr = hexToStr($1,strlen($1)); + $$->len = strlen($$->value.ptr); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | floatValue + { + /* Note: might also be an OID */ + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT32; + $$->value.float32 = strtof($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT64; + $$->value.float64 = strtod($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT128; + $$->value.float128 = strtold($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->value.ptr = smiMalloc(strlen($1)+1); + strcpy($$->value.ptr,$1); + $$->len = strlen($$->value.ptr); + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | '-' floatValue + { + + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT32; + $$->value.float32 = - strtof($2,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $2); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT64; + $$->value.float64 = - strtof($2,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $2); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT128; + $$->value.float128 = - strtof($2,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $2); + errno = 0; + } + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | specialFloatValue + { + /* Note: might also be an OID */ + switch (defaultBasetype) { + case SMI_BASETYPE_FLOAT32: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT32; + $$->value.float32 = strtof($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT64: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT64; + $$->value.float64 = strtod($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + case SMI_BASETYPE_FLOAT128: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_FLOAT128; + $$->value.float128 = strtold($1,NULL); + if(errno == ERANGE){ + smiPrintError(thisParserPtr, + ERR_FLOAT_OVERFLOW, $1); + errno = 0; + } + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | text + { + if (defaultBasetype == SMI_BASETYPE_OCTETSTRING) { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OCTETSTRING; + $$->value.ptr = $1; + $$->len = strlen($1); + } else { + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + } + } + | qlcIdentifier + { + /* Note: might be an Enumeration item or OID */ + /* TODO: convert if it's an oid? */ + switch (defaultBasetype) { + case SMI_BASETYPE_ENUM: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_ENUM; + $$->value.ptr = $1; + $$->len = strlen($1); + /* TODO: XXX convert to int */ + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->value.ptr = $1; + $$->len = strlen($1); + /* TODO: XXX convert to oid if found */ + break; + case SMI_BASETYPE_POINTER: + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->value.ptr = $1; + $$->len = strlen($1); + /* TODO: XXX check if valid reference found */ + break; + default: + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + $$ = NULL; + break; + } + } + | qOID + { + if (defaultBasetype == SMI_BASETYPE_OBJECTIDENTIFIER){ + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_OBJECTIDENTIFIER; + $$->value.ptr = $1; + $$->len = strlen($$->value.ptr); + } + else + smiPrintError(thisParserPtr, + ERR_UNEXPECTED_VALUETYPE); + } + ; + +qOID: ucIdentifier COLON_COLON OID + { + char *s; + + s = smiMalloc(strlen($1) + + strlen($3) + 3); + sprintf(s, "%s::%s", $1, $3); + $$ = s; + } + | OID + { + $$ = smiMalloc(strlen($1)+1); + strcpy($$,$1); + } + ; + +status: currentKeyword + { + $$ = SMI_STATUS_CURRENT; + } + | deprecatedKeyword + { + $$ = SMI_STATUS_DEPRECATED; + } + | obsoleteKeyword + { + $$ = SMI_STATUS_OBSOLETE; + } + ; + +number: hexadecimalNumber + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = strtoull($1, NULL, 16); + } + | decimalNumber + { + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_UNSIGNED64; + $$->value.unsigned64 = strtoull($1, NULL, 10); + } + ; + +negativeNumber: '-' decimalNumber + { + if(bitsFlag){ + smiPrintError(thisParserPtr, + ERR_BITS_NUMBER_NEGATIVE); + $$ = NULL; + } + $$ = smiMalloc(sizeof(SmiValue)); + $$->basetype = SMI_BASETYPE_INTEGER64; + $$->value.integer64 = - strtoll($2, NULL, 10); + } + ; + +signedNumber: number + { + $$ = $1; + } + | negativeNumber + { + $$ = $1; + } + ; + +/* decimalNumber, hexadecimalNumber, floatValue */ + +/* unknown... */ + +optsep_comma_01: /* empty */ + { + $$ = 0; + } +/* | optsep ',' */ + ; + +sep: /* empty, skipped by lexer */ + { + $$ = 0; + } + ; + +optsep: /* empty, skipped by lexer */ + { + $$ = 0; + } + ; + +stmtsep: /* empty, skipped by lexer */ + { + $$ = 0; + } + ; + +%% + +#endif + diff --git a/lib/scanner-smi.c b/lib/scanner-smi.c new file mode 100644 index 0000000..a900351 --- /dev/null +++ b/lib/scanner-smi.c @@ -0,0 +1,14173 @@ + +#line 3 "" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 33 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE smirestart(smiin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int smileng; + +extern FILE *smiin, *smiout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up smitext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up smitext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef unsigned int yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via smirestart()), so that the user can continue scanning by + * just pointing smiin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when smitext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int smileng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow smiwrap()'s to do buffer switches + * instead of setting up a fresh smiin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void smirestart (FILE *input_file ); +void smi_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE smi_create_buffer (FILE *file,int size ); +void smi_delete_buffer (YY_BUFFER_STATE b ); +void smi_flush_buffer (YY_BUFFER_STATE b ); +void smipush_buffer_state (YY_BUFFER_STATE new_buffer ); +void smipop_buffer_state (void ); + +static void smiensure_buffer_stack (void ); +static void smi_load_buffer_state (void ); +static void smi_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER smi_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE smi_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE smi_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE smi_scan_bytes (yyconst char *bytes,int len ); + +void *smialloc (yy_size_t ); +void *smirealloc (void *,yy_size_t ); +void smifree (void * ); + +#define yy_new_buffer smi_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + smiensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + smi_create_buffer(smiin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + smiensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + smi_create_buffer(smiin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define smiwrap() 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +FILE *smiin = (FILE *) 0, *smiout = (FILE *) 0; + +typedef int yy_state_type; + +extern int smilineno; + +int smilineno = 1; + +extern char *smitext; +#define yytext_ptr smitext +static yyconst flex_int16_t yy_nxt[][68] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 + }, + + { + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 24, 24, 24, 24, 24, 25, 20, 14, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 33, + + 33, 35, 36, 37, 38, 39, 33, 40, 41, 42, + 43, 44, 45, 33, 33, 33, 14, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 20 + }, + + { + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 24, 24, 24, 24, 24, 25, 20, 14, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 33, + 33, 35, 36, 37, 38, 39, 33, 40, 41, 42, + 43, 44, 45, 33, 33, 33, 14, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + + 46, 46, 46, 46, 46, 46, 46, 20 + }, + + { + 13, 47, 47, 48, 49, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 50, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47 + }, + + { + 13, 47, 47, 48, 49, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + + 47, 47, 47, 47, 50, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47 + }, + + { + 13, 51, 51, 52, 53, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 54 + }, + + { + 13, 51, 51, 52, 53, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 54 + }, + + { + 13, 55, 55, 56, 57, 55, 55, 55, 55, 55, + + 55, 55, 55, 55, 55, 55, 55, 55, 58, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55 + }, + + { + 13, 55, 55, 56, 57, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 58, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55 + }, + + { + 13, 59, 59, 60, 61, 59, 59, 59, 62, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59 + + }, + + { + 13, 59, 59, 60, 61, 59, 59, 59, 62, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59 + }, + + { + 13, 63, 63, 64, 65, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 13, 63, 63, 64, 65, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13 + }, + + { + 13, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14, -14 + }, + + { + 13, -15, 66, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + + -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, + -15, -15, -15, -15, -15, -15, -15, -15 + }, + + { + 13, -16, -16, -16, 67, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16 + }, + + { + 13, -17, -17, 67, -17, -17, -17, -17, -17, -17, + + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17, -17 + }, + + { + 13, 68, 68, 68, 68, 69, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68 + }, + + { + 13, -19, -19, -19, -19, -19, 70, -19, -19, -19, + 71, 71, 72, 72, 72, 72, 72, -19, -19, -19, + 72, 72, 72, 72, 72, 72, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, 72, 72, 72, + 72, 72, 72, -19, -19, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, -19, -19, -19 + + }, + + { + 13, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20, -20 + }, + + { + 13, -21, -21, -21, -21, -21, -21, -21, 73, -21, + 74, 75, 75, 75, 75, 75, 75, -21, -21, -21, + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, + + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, + -21, -21, -21, -21, -21, -21, -21, -21 + }, + + { + 13, -22, -22, -22, -22, -22, -22, -22, -22, 76, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, + + -22, -22, -22, -22, -22, -22, -22, -22 + }, + + { + 13, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 78, 79, 79, 79, 79, 79, 79, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77 + }, + + { + 13, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 80, 80, 80, 80, 80, 80, 80, 77, 77, 77, + + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77 + }, + + { + 13, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, 81, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + + -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, + -25, -25, -25, -25, -25, -25, -25, -25 + }, + + { + 13, -26, -26, -26, -26, -26, -26, -26, 82, -26, + 83, 83, 83, 83, 83, 83, 83, -26, -26, -26, + 83, 84, 85, 83, 83, 83, 86, 83, 83, 83, + 83, 83, 83, 87, 83, 88, 83, 83, 83, 83, + 89, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -26 + }, + + { + 13, -27, -27, -27, -27, -27, -27, -27, 82, -27, + + 83, 83, 83, 83, 83, 83, 83, -27, -27, -27, + 83, 83, 83, 83, 90, 83, 83, 83, 91, 83, + 83, 83, 83, 83, 92, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -27 + }, + + { + 13, -28, -28, -28, -28, -28, -28, -28, 82, -28, + 83, 83, 83, 83, 83, 83, 83, -28, -28, -28, + 83, 83, 83, 83, 83, 83, 83, 94, 83, 83, + 83, 83, 83, 83, 95, 83, 83, 96, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 97, 83, 83, 83, 83, 83, 83, -28 + }, + + { + 13, -29, -29, -29, -29, -29, -29, -29, 82, -29, + 83, 83, 83, 83, 83, 83, 83, -29, -29, -29, + 83, 83, 83, 83, 98, 83, 83, 83, 99, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -29 + + }, + + { + 13, -30, -30, -30, -30, -30, -30, -30, 82, -30, + 83, 83, 83, 83, 83, 83, 83, -30, -30, -30, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 100, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 101, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -30 + }, + + { + 13, -31, -31, -31, -31, -31, -31, -31, 82, -31, + 83, 83, 83, 83, 83, 83, 83, -31, -31, -31, + 102, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 103, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -31 + }, + + { + 13, -32, -32, -32, -32, -32, -32, -32, 82, -32, + 83, 83, 83, 83, 83, 83, 83, -32, -32, -32, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 104, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 105, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -32 + }, + + { + 13, -33, -33, -33, -33, -33, -33, -33, 82, -33, + 83, 83, 83, 83, 83, 83, 83, -33, -33, -33, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -33 + }, + + { + 13, -34, -34, -34, -34, -34, -34, -34, 82, -34, + 83, 83, 83, 83, 83, 83, 83, -34, -34, -34, + + 83, 83, 83, 106, 83, 83, 83, 83, 83, 83, + 83, 83, 107, 108, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 109, + 83, 110, 83, 83, 83, 83, 83, -34 + }, + + { + 13, -35, -35, -35, -35, -35, -35, -35, 82, -35, + 83, 83, 83, 83, 83, 83, 83, -35, -35, -35, + 111, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -35 + }, + + { + 13, -36, -36, -36, -36, -36, -36, -36, 82, -36, + 83, 83, 83, 83, 83, 83, 83, -36, -36, -36, + 112, 83, 83, 83, 83, 83, 83, 83, 113, 83, + 83, 83, 83, 83, 114, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -36 + }, + + { + 13, -37, -37, -37, -37, -37, -37, -37, 82, -37, + + 83, 83, 83, 83, 83, 83, 83, -37, -37, -37, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 115, 83, 83, 83, 83, 83, + 116, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -37 + }, + + { + 13, -38, -38, -38, -38, -38, -38, -38, 82, -38, + 83, 83, 83, 83, 83, 83, 83, -38, -38, -38, + 83, 117, 118, 83, 83, 119, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 120, 83, 121, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 122, 83, 83, 83, 83, 83, -38 + }, + + { + 13, -39, -39, -39, -39, -39, -39, -39, 82, -39, + 83, 83, 83, 83, 83, 83, 83, -39, -39, -39, + 83, 83, 83, 83, 83, 83, 83, 83, 123, 83, + 83, 124, 83, 83, 125, 83, 83, 126, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -39 + + }, + + { + 13, -40, -40, -40, -40, -40, -40, -40, 82, -40, + 83, 83, 83, 83, 83, 83, 83, -40, -40, -40, + 83, 83, 83, 83, 127, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -40 + }, + + { + 13, -41, -41, -41, -41, -41, -41, -41, 82, -41, + 83, 83, 83, 83, 83, 83, 83, -41, -41, -41, + 83, 83, 83, 83, 128, 83, 83, 83, 129, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 130, + 131, 83, 83, 83, 132, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -41 + }, + + { + 13, -42, -42, -42, -42, -42, -42, -42, 82, -42, + 83, 83, 83, 83, 83, 83, 83, -42, -42, -42, + 133, 83, 83, 83, 134, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 135, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 136, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -42 + }, + + { + 13, -43, -43, -43, -43, -43, -43, -43, 82, -43, + 83, 83, 83, 83, 83, 83, 83, -43, -43, -43, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 137, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 138, + 83, 83, 83, 83, 83, 83, 83, -43 + }, + + { + 13, -44, -44, -44, -44, -44, -44, -44, 82, -44, + 83, 83, 83, 83, 83, 83, 83, -44, -44, -44, + + 139, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -44 + }, + + { + 13, -45, -45, -45, -45, -45, -45, -45, 82, -45, + 83, 83, 83, 83, 83, 83, 83, -45, -45, -45, + 83, 83, 83, 83, 83, 83, 83, 83, 140, 83, + 83, 83, 83, 83, 83, 83, 83, 141, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -45 + }, + + { + 13, -46, -46, -46, -46, -46, -46, -46, 142, -46, + 143, 143, 143, 143, 143, 143, 143, -46, -46, -46, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, -46 + }, + + { + 13, -47, -47, -47, -47, -47, -47, -47, -47, -47, + + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47 + }, + + { + 13, -48, -48, -48, 144, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48 + }, + + { + 13, -49, -49, 144, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49 + + }, + + { + 13, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, 145, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50 + }, + + { + 13, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51 + }, + + { + 13, -52, -52, -52, 146, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + + -52, -52, -52, -52, -52, -52, -52, -52 + }, + + { + 13, -53, -53, 146, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53 + }, + + { + 13, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, -54 + }, + + { + 13, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, -55, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, 147, 147, 147, 148, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, -56, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, 147, 147, 148, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, -57, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58, -58 + }, + + { + 13, 149, 149, -59, -59, 149, 149, 149, -59, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149 + + }, + + { + 13, -60, -60, -60, 150, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60 + }, + + { + 13, -61, -61, 150, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61 + }, + + { + 13, -62, -62, -62, -62, -62, -62, -62, 151, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, + + -62, -62, -62, -62, -62, -62, -62, -62 + }, + + { + 13, 152, 152, 153, 154, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152 + }, + + { + 13, -64, -64, -64, 155, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64 + }, + + { + 13, 152, 152, 156, 154, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152 + }, + + { + 13, -66, 66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66 + }, + + { + 13, -67, -67, -67, -67, -67, -67, -67, -67, -67, + + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67 + }, + + { + 13, 68, 68, 68, 68, 69, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68 + }, + + { + 13, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69 + + }, + + { + 13, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, 157, -70, -70, -70, -70, -70, 158, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, 157, -70, + -70, -70, -70, -70, 158, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70 + }, + + { + 13, -71, -71, -71, -71, -71, 70, -71, -71, -71, + 71, 71, 72, 72, 72, 72, 72, -71, -71, -71, + 72, 72, 72, 72, 72, 72, -71, -71, -71, -71, + + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, 72, 72, 72, + 72, 72, 72, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71 + }, + + { + 13, -72, -72, -72, -72, -72, 159, -72, -72, -72, + 72, 72, 72, 72, 72, 72, 72, -72, -72, -72, + 72, 72, 72, 72, 72, 72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, 72, 72, 72, + 72, 72, 72, -72, -72, -72, -72, -72, -72, -72, + + -72, -72, -72, -72, -72, -72, -72, -72 + }, + + { + 13, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73 + }, + + { + 13, 160, 160, 160, 160, 160, 160, 160, 160, 160, + -74, -74, -74, -74, -74, -74, -74, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160 + }, + + { + 13, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 161, 161, 161, 161, 161, 161, 161, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160 + }, + + { + 13, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76 + }, + + { + 13, -77, -77, -77, -77, -77, -77, -77, -77, -77, + + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77 + }, + + { + 13, -78, -78, -78, -78, -78, -78, -78, -78, -78, + 78, 79, 79, 79, 79, 79, 79, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78 + }, + + { + 13, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79 + + }, + + { + 13, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 80, 80, 80, 80, 80, 80, 80, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77 + }, + + { + 13, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81, -81, 162, + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, + -81, -81, -81, -81, -81, -81, -81, -81 + }, + + { + 13, -82, -82, -82, -82, -82, -82, -82, -82, -82, + 83, 83, 83, 83, 83, 83, 83, -82, -82, -82, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -82 + }, + + { + 13, -83, -83, -83, -83, -83, -83, -83, 82, -83, + 83, 83, 83, 83, 83, 83, 83, -83, -83, -83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -83 + }, + + { + 13, -84, -84, -84, -84, -84, -84, -84, 82, -84, + 83, 83, 83, 83, 83, 83, 83, -84, -84, -84, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 163, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -84 + }, + + { + 13, -85, -85, -85, -85, -85, -85, -85, 82, -85, + 83, 83, 83, 83, 83, 83, 83, -85, -85, -85, + 83, 83, 164, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -85 + }, + + { + 13, -86, -86, -86, -86, -86, -86, -86, 82, -86, + 83, 83, 83, 83, 83, 83, 83, -86, -86, -86, + 83, 83, 83, 83, 165, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -86 + }, + + { + 13, -87, -87, -87, -87, -87, -87, -87, 82, -87, + + 83, 83, 83, 83, 83, 83, 83, -87, -87, -87, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -87 + }, + + { + 13, -88, -88, -88, -88, -88, -88, -88, 82, -88, + 83, 83, 83, 83, 83, 83, 83, -88, -88, -88, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 166, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -88 + }, + + { + 13, -89, -89, -89, -89, -89, -89, -89, 82, -89, + 83, 83, 83, 83, 83, 83, 83, -89, -89, -89, + 83, 83, 83, 83, 83, 83, 167, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -89 + + }, + + { + 13, -90, -90, -90, -90, -90, -90, -90, 82, -90, + 83, 83, 83, 83, 83, 83, 83, -90, -90, -90, + 83, 83, 83, 83, 83, 83, 168, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -90 + }, + + { + 13, -91, -91, -91, -91, -91, -91, -91, 82, -91, + 83, 83, 83, 83, 83, 83, 83, -91, -91, -91, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 169, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -91 + }, + + { + 13, -92, -92, -92, -92, -92, -92, -92, 82, -92, + 83, 83, 83, 83, 83, 83, 83, -92, -92, -92, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 170, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -92 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 172, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 171 + }, + + { + 13, -94, -94, -94, -94, -94, -94, -94, 82, -94, + 83, 83, 83, 83, 83, 83, 83, -94, -94, -94, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 174, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -94 + }, + + { + 13, -95, -95, -95, -95, -95, -95, -95, 82, -95, + 83, 83, 83, 83, 83, 83, 83, -95, -95, -95, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 175, 176, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -95 + }, + + { + 13, -96, -96, -96, -96, -96, -96, -96, 82, -96, + 83, 83, 83, 83, 83, 83, 83, -96, -96, -96, + 83, 83, 83, 83, 177, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -96 + }, + + { + 13, -97, -97, -97, -97, -97, -97, -97, 82, -97, + + 83, 83, 83, 83, 83, 83, 83, -97, -97, -97, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 178, -97 + }, + + { + 13, -98, -98, -98, -98, -98, -98, -98, 82, -98, + 83, 83, 83, 83, 83, 83, 83, -98, -98, -98, + 83, 83, 83, 83, 83, 179, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 180, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -98 + }, + + { + 13, -99, -99, -99, -99, -99, -99, -99, 82, -99, + 83, 83, 83, 83, 83, 83, 83, -99, -99, -99, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 181, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -99 + + }, + + { + 13, -100, -100, -100, -100, -100, -100, -100, 82, -100, + 83, 83, 83, 83, 83, 83, 83, -100, -100, -100, + 83, 83, 83, 182, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 183, + 184, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -100 + }, + + { + 13, -101, -101, -101, -101, -101, -101, -101, 82, -101, + 83, 83, 83, 83, 83, 83, 83, -101, -101, -101, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 185, 83, 83, 83, 186, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -101 + }, + + { + 13, -102, -102, -102, -102, -102, -102, -102, 82, -102, + 83, 83, 83, 83, 83, 83, 83, -102, -102, -102, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 187, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -102 + }, + + { + 13, -103, -103, -103, -103, -103, -103, -103, 82, -103, + 83, 83, 83, 83, 83, 83, 83, -103, -103, -103, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 188, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -103 + }, + + { + 13, -104, -104, -104, -104, -104, -104, -104, 82, -104, + 83, 83, 83, 83, 83, 83, 83, -104, -104, -104, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 189, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -104 + }, + + { + 13, -105, -105, -105, -105, -105, -105, -105, 82, -105, + 83, 83, 83, 83, 83, 83, 83, -105, -105, -105, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 190, -105 + }, + + { + 13, -106, -106, -106, -106, -106, -106, -106, 82, -106, + 83, 83, 83, 83, 83, 83, 83, -106, -106, -106, + 83, 83, 83, 83, 191, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -106 + }, + + { + 13, -107, -107, -107, -107, -107, -107, -107, 82, -107, + + 83, 83, 83, 83, 83, 83, 83, -107, -107, -107, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 192, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -107 + }, + + { + 13, -108, -108, -108, -108, -108, -108, -108, 82, -108, + 83, 83, 83, 83, 83, 83, 83, -108, -108, -108, + 83, 83, 193, 194, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 195, 196, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -108 + }, + + { + 13, -109, -109, -109, -109, -109, -109, -109, 82, -109, + 83, 83, 83, 83, 83, 83, 83, -109, -109, -109, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 197, 83, -109 + + }, + + { + 13, -110, -110, -110, -110, -110, -110, -110, 82, -110, + 83, 83, 83, 83, 83, 83, 83, -110, -110, -110, + 198, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -110 + }, + + { + 13, -111, -111, -111, -111, -111, -111, -111, 82, -111, + 83, 83, 83, 83, 83, 83, 83, -111, -111, -111, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 199, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -111 + }, + + { + 13, -112, -112, -112, -112, -112, -112, -112, 82, -112, + 83, 83, 83, 83, 83, 83, 83, -112, -112, -112, + 83, 83, 200, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 201, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 202, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -112 + }, + + { + 13, -113, -113, -113, -113, -113, -113, -113, 82, -113, + 83, 83, 83, 83, 83, 83, 83, -113, -113, -113, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 203, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -113 + }, + + { + 13, -114, -114, -114, -114, -114, -114, -114, 82, -114, + 83, 83, 83, 83, 83, 83, 83, -114, -114, -114, + + 83, 83, 83, 204, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -114 + }, + + { + 13, -115, -115, -115, -115, -115, -115, -115, 82, -115, + 83, 83, 83, 83, 83, 83, 83, -115, -115, -115, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 205, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -115 + }, + + { + 13, -116, -116, -116, -116, -116, -116, -116, 82, -116, + 83, 83, 83, 83, 83, 83, 83, -116, -116, -116, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 206, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -116 + }, + + { + 13, -117, -117, -117, -117, -117, -117, -117, 82, -117, + + 83, 83, 83, 83, 83, 83, 83, -117, -117, -117, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 207, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -117 + }, + + { + 13, -118, -118, -118, -118, -118, -118, -118, 82, -118, + 83, 83, 83, 83, 83, 83, 83, -118, -118, -118, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 208, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -118 + }, + + { + 13, 209, 209, 209, 209, 209, 209, 209, 210, 209, + 83, 83, 83, 83, 83, 83, 83, 209, 209, 209, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 211, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 209 + + }, + + { + 13, -120, -120, -120, -120, -120, -120, -120, 82, -120, + 83, 83, 83, 83, 83, 83, 83, -120, -120, -120, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 212, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -120 + }, + + { + 13, -121, -121, -121, -121, -121, -121, -121, 82, -121, + 83, 83, 83, 83, 83, 83, 83, -121, -121, -121, + 83, 83, 83, 83, 83, 83, 213, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -121 + }, + + { + 13, -122, -122, -122, -122, -122, -122, -122, 82, -122, + 83, 83, 83, 83, 83, 83, 83, -122, -122, -122, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 214, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -122 + }, + + { + 13, -123, -123, -123, -123, -123, -123, -123, 82, -123, + 83, 83, 83, 83, 83, 83, 83, -123, -123, -123, + 83, 215, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -123 + }, + + { + 13, -124, -124, -124, -124, -124, -124, -124, 82, -124, + 83, 83, 83, 83, 83, 83, 83, -124, -124, -124, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 216, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -124 + }, + + { + 13, -125, -125, -125, -125, -125, -125, -125, 82, -125, + 83, 83, 83, 83, 83, 83, 83, -125, -125, -125, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 217, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -125 + }, + + { + 13, -126, -126, -126, -126, -126, -126, -126, 82, -126, + 83, 83, 83, 83, 83, 83, 83, -126, -126, -126, + 83, 83, 83, 83, 218, 83, 83, 83, 219, 83, + 83, 83, 83, 83, 220, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -126 + }, + + { + 13, -127, -127, -127, -127, -127, -127, -127, 82, -127, + + 83, 83, 83, 83, 83, 83, 83, -127, -127, -127, + 221, 83, 83, 83, 83, 222, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 223, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -127 + }, + + { + 13, -128, -128, -128, -128, -128, -128, -128, 82, -128, + 83, 83, 83, 83, 83, 83, 83, -128, -128, -128, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 224, 83, 83, 93, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -128 + }, + + { + 13, -129, -129, -129, -129, -129, -129, -129, 82, -129, + 83, 83, 83, 83, 83, 83, 83, -129, -129, -129, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 225, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -129 + + }, + + { + 13, -130, -130, -130, -130, -130, -130, -130, 82, -130, + 83, 83, 83, 83, 83, 83, 83, -130, -130, -130, + 226, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 227, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -130 + }, + + { + 13, -131, -131, -131, -131, -131, -131, -131, 82, -131, + 83, 83, 83, 83, 83, 83, 83, -131, -131, -131, + 83, 228, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 229, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -131 + }, + + { + 13, -132, -132, -132, -132, -132, -132, -132, 82, -132, + 83, 83, 83, 83, 83, 83, 83, -132, -132, -132, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 230, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -132 + }, + + { + 13, -133, -133, -133, -133, -133, -133, -133, 82, -133, + 83, 83, 83, 83, 83, 83, 83, -133, -133, -133, + 83, 83, 83, 83, 83, 83, 231, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -133 + }, + + { + 13, -134, -134, -134, -134, -134, -134, -134, 82, -134, + 83, 83, 83, 83, 83, 83, 83, -134, -134, -134, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 232, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -134 + }, + + { + 13, -135, -135, -135, -135, -135, -135, -135, 82, -135, + 83, 83, 83, 83, 83, 83, 83, -135, -135, -135, + 233, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 234, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -135 + }, + + { + 13, -136, -136, -136, -136, -136, -136, -136, 82, -136, + 83, 83, 83, 83, 83, 83, 83, -136, -136, -136, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 235, 83, + 83, 83, 83, 83, 83, 83, 83, -136 + }, + + { + 13, -137, -137, -137, -137, -137, -137, -137, 82, -137, + + 83, 83, 83, 83, 83, 83, 83, -137, -137, -137, + 83, 83, 83, 83, 83, 83, 83, 83, 236, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -137 + }, + + { + 13, -138, -138, -138, -138, -138, -138, -138, 82, -138, + 83, 83, 83, 83, 83, 83, 83, -138, -138, -138, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 237, 83, 83, -138 + }, + + { + 13, -139, -139, -139, -139, -139, -139, -139, 82, -139, + 83, 83, 83, 83, 83, 83, 83, -139, -139, -139, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 238, 83, 83, 83, 83, 83, 239, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -139 + + }, + + { + 13, -140, -140, -140, -140, -140, -140, -140, 82, -140, + 83, 83, 83, 83, 83, 83, 83, -140, -140, -140, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 240, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -140 + }, + + { + 13, -141, -141, -141, -141, -141, -141, -141, 82, -141, + 83, 83, 83, 83, 83, 83, 83, -141, -141, -141, + 83, 83, 83, 83, 83, 83, 83, 83, 241, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -141 + }, + + { + 13, -142, -142, -142, -142, -142, -142, -142, -142, -142, + 143, 143, 143, 143, 143, 143, 143, -142, -142, -142, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + + 143, 143, 143, 143, 143, 143, 143, -142 + }, + + { + 13, -143, -143, -143, -143, -143, -143, -143, 142, -143, + 143, 143, 143, 143, 143, 143, 143, -143, -143, -143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, -143 + }, + + { + 13, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144 + }, + + { + 13, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, 242, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145 + }, + + { + 13, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146 + }, + + { + 13, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, -147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, -148, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147 + }, + + { + 13, 149, 149, -149, -149, 149, 149, 149, -149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149 + + }, + + { + 13, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150 + }, + + { + 13, -151, -151, -151, -151, -151, -151, -151, 243, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, + -151, -151, -151, -151, -151, -151, -151, -151 + }, + + { + 13, 152, 152, 153, 154, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152 + }, + + { + 13, -153, -153, -153, 155, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, + -153, -153, -153, -153, -153, -153, -153, -153 + }, + + { + 13, 152, 152, 156, 154, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152 + }, + + { + 13, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155 + }, + + { + 13, -156, -156, -156, 155, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, -156, -156 + }, + + { + 13, -157, -157, -157, -157, -157, -157, -157, -157, -157, + + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157 + }, + + { + 13, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, + -158, -158, -158, -158, -158, -158, -158, -158 + }, + + { + 13, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, 158, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, 158, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159 + + }, + + { + 13, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, + -160, -160, -160, -160, -160, -160, -160, -160 + }, + + { + 13, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 161, 161, 161, 161, 161, 161, 161, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160 + }, + + { + 13, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + + -162, -162, -162, -162, -162, -162, -162, -162 + }, + + { + 13, -163, -163, -163, -163, -163, -163, -163, 82, -163, + 83, 83, 83, 83, 83, 83, 83, -163, -163, -163, + 83, 83, 83, 83, 244, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -163 + }, + + { + 13, -164, -164, -164, -164, -164, -164, -164, 82, -164, + 83, 83, 83, 83, 83, 83, 83, -164, -164, -164, + + 83, 83, 83, 83, 245, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -164 + }, + + { + 13, -165, -165, -165, -165, -165, -165, -165, 82, -165, + 83, 83, 83, 83, 83, 83, 83, -165, -165, -165, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 246, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -165 + }, + + { + 13, -166, -166, -166, -166, -166, -166, -166, 82, -166, + 83, 83, 83, 83, 83, 83, 83, -166, -166, -166, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 247, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -166 + }, + + { + 13, -167, -167, -167, -167, -167, -167, -167, 82, -167, + + 83, 83, 83, 83, 83, 83, 83, -167, -167, -167, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 248, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -167 + }, + + { + 13, -168, -168, -168, -168, -168, -168, -168, 82, -168, + 83, 83, 83, 83, 83, 83, 83, -168, -168, -168, + 83, 83, 83, 83, 83, 83, 83, 83, 249, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -168 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 172, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 250, 83, + 83, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 171 + + }, + + { + 13, -170, -170, -170, -170, -170, -170, -170, 82, -170, + 83, 83, 83, 83, 83, 83, 83, -170, -170, -170, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 251, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -170 + }, + + { + 13, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171 + }, + + { + 13, -172, -172, -172, -172, -172, -172, -172, 252, -172, + 83, 83, 83, 83, 83, 83, 83, -172, -172, -172, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -172 + }, + + { + 13, -173, -173, -173, -173, -173, -173, -173, 82, -173, + 83, 83, 83, 83, 83, 83, 83, -173, -173, -173, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -173 + }, + + { + 13, -174, -174, -174, -174, -174, -174, -174, 82, -174, + 83, 83, 83, 83, 83, 83, 83, -174, -174, -174, + + 83, 83, 83, 83, 83, 83, 83, 83, 253, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -174 + }, + + { + 13, -175, -175, -175, -175, -175, -175, -175, 82, -175, + 83, 83, 83, 83, 83, 83, 83, -175, -175, -175, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 254, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -175 + }, + + { + 13, -176, -176, -176, -176, -176, -176, -176, 82, -176, + 83, 83, 83, 83, 83, 83, 83, -176, -176, -176, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 255, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -176 + }, + + { + 13, -177, -177, -177, -177, -177, -177, -177, 82, -177, + + 83, 83, 83, 83, 83, 83, 83, -177, -177, -177, + 256, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -177 + }, + + { + 13, -178, -178, -178, -178, -178, -178, -178, 82, -178, + 83, 83, 83, 83, 83, 83, 83, -178, -178, -178, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 257, + 83, 83, 83, 83, 83, 83, 83, -178 + }, + + { + 13, -179, -179, -179, -179, -179, -179, -179, 82, -179, + 83, 83, 83, 83, 83, 83, 83, -179, -179, -179, + 258, 83, 83, 83, 83, 83, 83, 83, 259, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 260, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -179 + + }, + + { + 13, -180, -180, -180, -180, -180, -180, -180, 82, -180, + 83, 83, 83, 83, 83, 83, 83, -180, -180, -180, + 83, 83, 261, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -180 + }, + + { + 13, -181, -181, -181, -181, -181, -181, -181, 82, -181, + 83, 83, 83, 83, 83, 83, 83, -181, -181, -181, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 262, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -181 + }, + + { + 13, 263, 263, 263, 263, 263, 263, 263, 264, 263, + 83, 83, 83, 83, 83, 83, 83, 263, 263, 263, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 265, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 263 + }, + + { + 13, -183, -183, -183, -183, -183, -183, -183, 82, -183, + 83, 83, 83, 83, 83, 83, 83, -183, -183, -183, + 83, 83, 83, 83, 266, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -183 + }, + + { + 13, -184, -184, -184, -184, -184, -184, -184, 82, -184, + 83, 83, 83, 83, 83, 83, 83, -184, -184, -184, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 267, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -184 + }, + + { + 13, -185, -185, -185, -185, -185, -185, -185, 82, -185, + 83, 83, 83, 83, 83, 83, 83, -185, -185, -185, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 268, 83, 83, 269, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -185 + }, + + { + 13, -186, -186, -186, -186, -186, -186, -186, 82, -186, + 83, 83, 83, 83, 83, 83, 83, -186, -186, -186, + 83, 83, 83, 83, 270, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -186 + }, + + { + 13, -187, -187, -187, -187, -187, -187, -187, 82, -187, + + 83, 83, 83, 83, 83, 83, 83, -187, -187, -187, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 271, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -187 + }, + + { + 13, -188, -188, -188, -188, -188, -188, -188, 82, -188, + 83, 83, 83, 83, 83, 83, 83, -188, -188, -188, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 272, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -188 + }, + + { + 13, -189, -189, -189, -189, -189, -189, -189, 82, -189, + 83, 83, 83, 83, 83, 83, 83, -189, -189, -189, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 273, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -189 + + }, + + { + 13, -190, -190, -190, -190, -190, -190, -190, 82, -190, + 83, 83, 83, 83, 83, 83, 83, -190, -190, -190, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 274, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -190 + }, + + { + 13, -191, -191, -191, -191, -191, -191, -191, 82, -191, + 83, 83, 83, 83, 83, 83, 83, -191, -191, -191, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 275, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -191 + }, + + { + 13, -192, -192, -192, -192, -192, -192, -192, 82, -192, + 83, 83, 83, 83, 83, 83, 83, -192, -192, -192, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 276, 83, 83, 277, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -192 + }, + + { + 13, -193, -193, -193, -193, -193, -193, -193, 82, -193, + 83, 83, 83, 83, 83, 83, 83, -193, -193, -193, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 278, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -193 + }, + + { + 13, -194, -194, -194, -194, -194, -194, -194, 82, -194, + 83, 83, 83, 83, 83, 83, 83, -194, -194, -194, + + 83, 83, 83, 83, 279, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -194 + }, + + { + 13, -195, -195, -195, -195, -195, -195, -195, 82, -195, + 83, 83, 83, 83, 83, 83, 83, -195, -195, -195, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 280, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -195 + }, + + { + 13, -196, -196, -196, -196, -196, -196, -196, 82, -196, + 83, 83, 83, 83, 83, 83, 83, -196, -196, -196, + 83, 83, 83, 83, 281, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -196 + }, + + { + 13, -197, -197, -197, -197, -197, -197, -197, 82, -197, + + 83, 83, 83, 83, 83, 83, 83, -197, -197, -197, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 282, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -197 + }, + + { + 13, -198, -198, -198, -198, -198, -198, -198, 82, -198, + 83, 83, 83, 83, 83, 83, 83, -198, -198, -198, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 283, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -198 + }, + + { + 13, -199, -199, -199, -199, -199, -199, -199, 82, -199, + 83, 83, 83, 83, 83, 83, 83, -199, -199, -199, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 284, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -199 + + }, + + { + 13, -200, -200, -200, -200, -200, -200, -200, 82, -200, + 83, 83, 83, 83, 83, 83, 83, -200, -200, -200, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 285, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -200 + }, + + { + 13, -201, -201, -201, -201, -201, -201, -201, 82, -201, + 83, 83, 83, 83, 83, 83, 83, -201, -201, -201, + 83, 83, 83, 286, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -201 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 287, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 171 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 288, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 289, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 171 + }, + + { + 13, -204, -204, -204, -204, -204, -204, -204, 82, -204, + 83, 83, 83, 83, 83, 83, 83, -204, -204, -204, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 290, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -204 + }, + + { + 13, -205, -205, -205, -205, -205, -205, -205, 82, -205, + 83, 83, 83, 83, 83, 83, 83, -205, -205, -205, + 83, 83, 83, 83, 83, 83, 83, 83, 291, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -205 + }, + + { + 13, -206, -206, -206, -206, -206, -206, -206, 82, -206, + 83, 83, 83, 83, 83, 83, 83, -206, -206, -206, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 93, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -206 + }, + + { + 13, -207, -207, -207, -207, -207, -207, -207, 82, -207, + + 83, 83, 83, 83, 83, 83, 83, -207, -207, -207, + 83, 83, 83, 83, 292, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -207 + }, + + { + 13, -208, -208, -208, -208, -208, -208, -208, 82, -208, + 83, 83, 83, 83, 83, 83, 83, -208, -208, -208, + 83, 83, 83, 83, 293, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -208 + }, + + { + 13, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209 + + }, + + { + 13, -210, -210, -210, -210, -210, -210, -210, 209, -210, + 83, 83, 83, 83, 83, 83, 83, -210, -210, -210, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -210 + }, + + { + 13, -211, -211, -211, -211, -211, -211, -211, 82, -211, + 83, 83, 83, 83, 83, 83, 83, -211, -211, -211, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -211 + }, + + { + 13, -212, -212, -212, -212, -212, -212, -212, 82, -212, + 83, 83, 83, 83, 83, 83, 83, -212, -212, -212, + 83, 83, 83, 83, 83, 83, 83, 83, 294, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -212 + }, + + { + 13, -213, -213, -213, -213, -213, -213, -213, 82, -213, + 83, 83, 83, 83, 83, 83, 83, -213, -213, -213, + 295, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -213 + }, + + { + 13, -214, -214, -214, -214, -214, -214, -214, 82, -214, + 83, 83, 83, 83, 83, 83, 83, -214, -214, -214, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 296, 83, 83, 83, 83, -214 + }, + + { + 13, -215, -215, -215, -215, -215, -215, -215, 297, -215, + 83, 83, 83, 83, 83, 83, 83, -215, -215, -215, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -215 + }, + + { + 13, -216, -216, -216, -216, -216, -216, -216, 82, -216, + 83, 83, 83, 83, 83, 83, 83, -216, -216, -216, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 298, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -216 + }, + + { + 13, -217, -217, -217, -217, -217, -217, -217, 82, -217, + + 83, 83, 83, 83, 83, 83, 83, -217, -217, -217, + 83, 83, 83, 83, 83, 83, 83, 83, 299, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -217 + }, + + { + 13, -218, -218, -218, -218, -218, -218, -218, 82, -218, + 83, 83, 83, 83, 83, 83, 83, -218, -218, -218, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 300, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -218 + }, + + { + 13, -219, -219, -219, -219, -219, -219, -219, 82, -219, + 83, 83, 83, 83, 83, 83, 83, -219, -219, -219, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 301, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -219 + + }, + + { + 13, -220, -220, -220, -220, -220, -220, -220, 82, -220, + 83, 83, 83, 83, 83, 83, 83, -220, -220, -220, + 83, 83, 83, 302, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -220 + }, + + { + 13, -221, -221, -221, -221, -221, -221, -221, 82, -221, + 83, 83, 83, 83, 83, 83, 83, -221, -221, -221, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 93, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -221 + }, + + { + 13, -222, -222, -222, -222, -222, -222, -222, 82, -222, + 83, 83, 83, 83, 83, 83, 83, -222, -222, -222, + 83, 83, 83, 83, 303, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -222 + }, + + { + 13, -223, -223, -223, -223, -223, -223, -223, 82, -223, + 83, 83, 83, 83, 83, 83, 83, -223, -223, -223, + 83, 83, 83, 83, 83, 83, 83, 83, 304, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -223 + }, + + { + 13, -224, -224, -224, -224, -224, -224, -224, 82, -224, + 83, 83, 83, 83, 83, 83, 83, -224, -224, -224, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 305, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -224 + }, + + { + 13, -225, -225, -225, -225, -225, -225, -225, 82, -225, + 83, 83, 83, 83, 83, 83, 83, -225, -225, -225, + 83, 83, 83, 83, 306, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -225 + }, + + { + 13, -226, -226, -226, -226, -226, -226, -226, 82, -226, + 83, 83, 83, 83, 83, 83, 83, -226, -226, -226, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 307, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -226 + }, + + { + 13, -227, -227, -227, -227, -227, -227, -227, 82, -227, + + 83, 83, 83, 83, 83, 83, 83, -227, -227, -227, + 83, 83, 83, 83, 83, 83, 83, 83, 308, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -227 + }, + + { + 13, -228, -228, -228, -228, -228, -228, -228, 82, -228, + 83, 83, 83, 83, 83, 83, 83, -228, -228, -228, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 309, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -228 + }, + + { + 13, -229, -229, -229, -229, -229, -229, -229, 82, -229, + 83, 83, 83, 83, 83, 83, 83, -229, -229, -229, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 310, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -229 + + }, + + { + 13, -230, -230, -230, -230, -230, -230, -230, 82, -230, + 83, 83, 83, 83, 83, 83, 83, -230, -230, -230, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 311, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -230 + }, + + { + 13, -231, -231, -231, -231, -231, -231, -231, 82, -231, + 83, 83, 83, 83, 83, 83, 83, -231, -231, -231, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 93, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -231 + }, + + { + 13, -232, -232, -232, -232, -232, -232, -232, 82, -232, + 83, 83, 83, 83, 83, 83, 83, -232, -232, -232, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 312, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -232 + }, + + { + 13, -233, -233, -233, -233, -233, -233, -233, 82, -233, + 83, 83, 83, 83, 83, 83, 83, -233, -233, -233, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 313, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -233 + }, + + { + 13, -234, -234, -234, -234, -234, -234, -234, 82, -234, + 83, 83, 83, 83, 83, 83, 83, -234, -234, -234, + + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -234 + }, + + { + 13, -235, -235, -235, -235, -235, -235, -235, 82, -235, + 83, 83, 83, 83, 83, 83, 83, -235, -235, -235, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 314, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -235 + }, + + { + 13, -236, -236, -236, -236, -236, -236, -236, 82, -236, + 83, 83, 83, 83, 83, 83, 83, -236, -236, -236, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 315, 83, 83, 316, + 83, 317, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -236 + }, + + { + 13, -237, -237, -237, -237, -237, -237, -237, 82, -237, + + 83, 83, 83, 83, 83, 83, 83, -237, -237, -237, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 318, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -237 + }, + + { + 13, -238, -238, -238, -238, -238, -238, -238, 82, -238, + 83, 83, 83, 83, 83, 83, 83, -238, -238, -238, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 319, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -238 + }, + + { + 13, -239, -239, -239, -239, -239, -239, -239, 82, -239, + 83, 83, 83, 83, 83, 83, 83, -239, -239, -239, + 83, 83, 83, 83, 83, 83, 83, 83, 320, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -239 + + }, + + { + 13, -240, -240, -240, -240, -240, -240, -240, 82, -240, + 83, 83, 83, 83, 83, 83, 83, -240, -240, -240, + 83, 83, 83, 83, 83, 83, 83, 93, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -240 + }, + + { + 13, -241, -241, -241, -241, -241, -241, -241, 82, -241, + 83, 83, 83, 83, 83, 83, 83, -241, -241, -241, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 321, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -241 + }, + + { + 13, 322, 322, 322, 322, 322, 322, 322, 323, 322, + -242, -242, -242, -242, -242, -242, -242, 322, 322, 322, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, 322, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + + -242, -242, -242, -242, -242, -242, -242, 322 + }, + + { + 13, -243, -243, 324, 325, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243 + }, + + { + 13, -244, -244, -244, -244, -244, -244, -244, 82, -244, + 83, 83, 83, 83, 83, 83, 83, -244, -244, -244, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 326, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -244 + }, + + { + 13, -245, -245, -245, -245, -245, -245, -245, 82, -245, + 83, 83, 83, 83, 83, 83, 83, -245, -245, -245, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 327, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -245 + }, + + { + 13, -246, -246, -246, -246, -246, -246, -246, 82, -246, + 83, 83, 83, 83, 83, 83, 83, -246, -246, -246, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 328, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -246 + }, + + { + 13, -247, -247, -247, -247, -247, -247, -247, 82, -247, + + 83, 83, 83, 83, 83, 83, 83, -247, -247, -247, + 83, 83, 83, 83, 83, 83, 83, 83, 329, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -247 + }, + + { + 13, -248, -248, -248, -248, -248, -248, -248, 82, -248, + 83, 83, 83, 83, 83, 83, 83, -248, -248, -248, + 83, 83, 83, 83, 330, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -248 + }, + + { + 13, -249, -249, -249, -249, -249, -249, -249, 82, -249, + 83, 83, 83, 83, 83, 83, 83, -249, -249, -249, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 331, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -249 + + }, + + { + 13, 332, 332, 332, 332, 332, 332, 332, 333, 332, + 83, 83, 83, 83, 83, 83, 83, 332, 332, 332, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 334, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 332 + }, + + { + 13, -251, -251, -251, -251, -251, -251, -251, 82, -251, + 83, 83, 83, 83, 83, 83, 83, -251, -251, -251, + 83, 83, 83, 83, 335, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -251 + }, + + { + 13, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + + -252, -252, -252, -252, -252, -252, -252, -252 + }, + + { + 13, -253, -253, -253, -253, -253, -253, -253, 82, -253, + 83, 83, 83, 83, 83, 83, 83, -253, -253, -253, + 83, 83, 336, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -253 + }, + + { + 13, -254, -254, -254, -254, -254, -254, -254, 82, -254, + 83, 83, 83, 83, 83, 83, 83, -254, -254, -254, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 337, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -254 + }, + + { + 13, -255, -255, -255, -255, -255, -255, -255, 82, -255, + 83, 83, 83, 83, 83, 83, 83, -255, -255, -255, + 338, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -255 + }, + + { + 13, -256, -256, -256, -256, -256, -256, -256, 82, -256, + 83, 83, 83, 83, 83, 83, 83, -256, -256, -256, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 339, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -256 + }, + + { + 13, -257, -257, -257, -257, -257, -257, -257, 82, -257, + + 83, 83, 83, 83, 83, 83, 83, -257, -257, -257, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 340, 83, -257 + }, + + { + 13, -258, -258, -258, -258, -258, -258, -258, 82, -258, + 83, 83, 83, 83, 83, 83, 83, -258, -258, -258, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 341, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -258 + }, + + { + 13, -259, -259, -259, -259, -259, -259, -259, 82, -259, + 83, 83, 83, 83, 83, 83, 83, -259, -259, -259, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 342, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -259 + + }, + + { + 13, -260, -260, -260, -260, -260, -260, -260, 82, -260, + 83, 83, 83, 83, 83, 83, 83, -260, -260, -260, + 343, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -260 + }, + + { + 13, -261, -261, -261, -261, -261, -261, -261, 82, -261, + 83, 83, 83, 83, 83, 83, 83, -261, -261, -261, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 344, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -261 + }, + + { + 13, -262, -262, -262, -262, -262, -262, -262, 82, -262, + 83, 83, 83, 83, 83, 83, 83, -262, -262, -262, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 345, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -262 + }, + + { + 13, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263 + }, + + { + 13, -264, -264, -264, -264, -264, -264, -264, 263, -264, + 83, 83, 83, 83, 83, 83, 83, -264, -264, -264, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -264 + }, + + { + 13, -265, -265, -265, -265, -265, -265, -265, 82, -265, + 83, 83, 83, 83, 83, 83, 83, -265, -265, -265, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -265 + }, + + { + 13, -266, -266, -266, -266, -266, -266, -266, 82, -266, + 83, 83, 83, 83, 83, 83, 83, -266, -266, -266, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 346, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -266 + }, + + { + 13, -267, -267, -267, -267, -267, -267, -267, 82, -267, + + 83, 83, 83, 83, 83, 83, 83, -267, -267, -267, + 83, 83, 83, 83, 347, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -267 + }, + + { + 13, -268, -268, -268, -268, -268, -268, -268, 82, -268, + 83, 83, 83, 83, 83, 83, 83, -268, -268, -268, + 83, 83, 83, 83, 83, 83, 83, 83, 348, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -268 + }, + + { + 13, -269, -269, -269, -269, -269, -269, -269, 82, -269, + 83, 83, 83, 83, 83, 83, 83, -269, -269, -269, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 349, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -269 + + }, + + { + 13, -270, -270, -270, -270, -270, -270, -270, 82, -270, + 83, 83, 83, 83, 83, 83, 83, -270, -270, -270, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 350, 83, 83, 83, 351, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -270 + }, + + { + 13, -271, -271, -271, -271, -271, -271, -271, 82, -271, + 83, 83, 83, 83, 83, 83, 83, -271, -271, -271, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -271 + }, + + { + 13, 352, 352, 352, 352, 352, 352, 352, 353, 352, + 83, 83, 83, 83, 83, 83, 83, 352, 352, 352, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 354, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 352 + }, + + { + 13, -273, -273, -273, -273, -273, -273, -273, 82, -273, + 83, 83, 83, 83, 83, 83, 83, -273, -273, -273, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 355, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -273 + }, + + { + 13, -274, -274, -274, -274, -274, -274, -274, 82, -274, + 83, 83, 83, 83, 83, 83, 83, -274, -274, -274, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 356, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -274 + }, + + { + 13, -275, -275, -275, -275, -275, -275, -275, 82, -275, + 83, 83, 83, 83, 83, 83, 83, -275, -275, -275, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 357, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -275 + }, + + { + 13, -276, -276, -276, -276, -276, -276, -276, 82, -276, + 83, 83, 83, 83, 83, 83, 83, -276, -276, -276, + 83, 83, 83, 83, 83, 83, 83, 83, 358, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -276 + }, + + { + 13, -277, -277, -277, -277, -277, -277, -277, 82, -277, + + 83, 83, 83, 83, 83, 83, 83, -277, -277, -277, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 359, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -277 + }, + + { + 13, -278, -278, -278, -278, -278, -278, -278, 82, -278, + 83, 83, 83, 83, 83, 83, 83, -278, -278, -278, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 360, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -278 + }, + + { + 13, -279, -279, -279, -279, -279, -279, -279, 82, -279, + 83, 83, 83, 83, 83, 83, 83, -279, -279, -279, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 361, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -279 + + }, + + { + 13, -280, -280, -280, -280, -280, -280, -280, 82, -280, + 83, 83, 83, 83, 83, 83, 83, -280, -280, -280, + 362, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -280 + }, + + { + 13, -281, -281, -281, -281, -281, -281, -281, 82, -281, + 83, 83, 83, 83, 83, 83, 83, -281, -281, -281, + 83, 83, 83, 83, 83, 83, 363, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -281 + }, + + { + 13, -282, -282, -282, -282, -282, -282, -282, 82, -282, + 83, 83, 83, 83, 83, 83, 83, -282, -282, -282, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 364, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -282 + }, + + { + 13, -283, -283, -283, -283, -283, -283, -283, 82, -283, + 83, 83, 83, 83, 83, 83, 83, -283, -283, -283, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 365, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -283 + }, + + { + 13, -284, -284, -284, -284, -284, -284, -284, 366, -284, + 83, 83, 83, 83, 83, 83, 83, -284, -284, -284, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -284 + }, + + { + 13, -285, -285, -285, -285, -285, -285, -285, 82, -285, + 83, 83, 83, 83, 83, 83, 83, -285, -285, -285, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 367, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -285 + }, + + { + 13, -286, -286, -286, -286, -286, -286, -286, 82, -286, + 83, 83, 83, 83, 83, 83, 83, -286, -286, -286, + 368, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -286 + }, + + { + 13, -287, -287, -287, -287, -287, -287, -287, 252, -287, + + 83, 83, 83, 83, 83, 83, 83, -287, -287, -287, + 369, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -287 + }, + + { + 13, -288, -288, -288, -288, -288, -288, -288, 252, -288, + 83, 83, 83, 83, 83, 83, 83, -288, -288, -288, + 370, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -288 + }, + + { + 13, -289, -289, -289, -289, -289, -289, -289, 82, -289, + 83, 83, 83, 83, 83, 83, 83, -289, -289, -289, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 371, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -289 + + }, + + { + 13, -290, -290, -290, -290, -290, -290, -290, 82, -290, + 83, 83, 83, 83, 83, 83, 83, -290, -290, -290, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 372, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -290 + }, + + { + 13, -291, -291, -291, -291, -291, -291, -291, 82, -291, + 83, 83, 83, 83, 83, 83, 83, -291, -291, -291, + 83, 83, 83, 83, 83, 373, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -291 + }, + + { + 13, -292, -292, -292, -292, -292, -292, -292, 82, -292, + 83, 83, 83, 83, 83, 83, 83, -292, -292, -292, + 83, 83, 374, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -292 + }, + + { + 13, -293, -293, -293, -293, -293, -293, -293, 82, -293, + 83, 83, 83, 83, 83, 83, 83, -293, -293, -293, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 375, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -293 + }, + + { + 13, -294, -294, -294, -294, -294, -294, -294, 82, -294, + 83, 83, 83, 83, 83, 83, 83, -294, -294, -294, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 376, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -294 + }, + + { + 13, -295, -295, -295, -295, -295, -295, -295, 82, -295, + 83, 83, 83, 83, 83, 83, 83, -295, -295, -295, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 377, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -295 + }, + + { + 13, -296, -296, -296, -296, -296, -296, -296, 82, -296, + 83, 83, 83, 83, 83, 83, 83, -296, -296, -296, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 378, -296 + }, + + { + 13, -297, -297, -297, -297, -297, -297, -297, -297, -297, + + 83, 83, 83, 83, 83, 83, 83, -297, -297, -297, + 379, 83, 83, 380, 83, 83, 83, 83, 381, 83, + 83, 83, 382, 83, 83, 83, 83, 383, 83, 384, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -297 + }, + + { + 13, -298, -298, -298, -298, -298, -298, -298, 385, -298, + 83, 83, 83, 83, 83, 83, 83, -298, -298, -298, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -298 + }, + + { + 13, -299, -299, -299, -299, -299, -299, -299, 82, -299, + 83, 83, 83, 83, 83, 83, 83, -299, -299, -299, + 83, 83, 386, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -299 + + }, + + { + 13, -300, -300, -300, -300, -300, -300, -300, 82, -300, + 83, 83, 83, 83, 83, 83, 83, -300, -300, -300, + 83, 83, 83, 83, 387, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -300 + }, + + { + 13, -301, -301, -301, -301, -301, -301, -301, 82, -301, + 83, 83, 83, 83, 83, 83, 83, -301, -301, -301, + 388, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -301 + }, + + { + 13, -302, -302, -302, -302, -302, -302, -302, 82, -302, + 83, 83, 83, 83, 83, 83, 83, -302, -302, -302, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 389, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -302 + }, + + { + 13, -303, -303, -303, -303, -303, -303, -303, 82, -303, + 83, 83, 83, 83, 83, 83, 83, -303, -303, -303, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 390, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -303 + }, + + { + 13, -304, -304, -304, -304, -304, -304, -304, 82, -304, + 83, 83, 83, 83, 83, 83, 83, -304, -304, -304, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 391, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -304 + }, + + { + 13, -305, -305, -305, -305, -305, -305, -305, 82, -305, + 83, 83, 83, 83, 83, 83, 83, -305, -305, -305, + 83, 83, 83, 83, 392, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -305 + }, + + { + 13, 393, 393, 393, 393, 393, 393, 393, 394, 393, + 83, 83, 83, 83, 83, 83, 83, 393, 393, 393, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 395, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 393 + }, + + { + 13, -307, -307, -307, -307, -307, -307, -307, 82, -307, + + 83, 83, 83, 83, 83, 83, 83, -307, -307, -307, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 396, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -307 + }, + + { + 13, -308, -308, -308, -308, -308, -308, -308, 82, -308, + 83, 83, 83, 83, 83, 83, 83, -308, -308, -308, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 397, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -308 + }, + + { + 13, -309, -309, -309, -309, -309, -309, -309, 82, -309, + 83, 83, 83, 83, 83, 83, 83, -309, -309, -309, + 83, 83, 83, 83, 398, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -309 + + }, + + { + 13, -310, -310, -310, -310, -310, -310, -310, 82, -310, + 83, 83, 83, 83, 83, 83, 83, -310, -310, -310, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 399, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -310 + }, + + { + 13, -311, -311, -311, -311, -311, -311, -311, 82, -311, + 83, 83, 83, 83, 83, 83, 83, -311, -311, -311, + 400, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -311 + }, + + { + 13, -312, -312, -312, -312, -312, -312, -312, 82, -312, + 83, 83, 83, 83, 83, 83, 83, -312, -312, -312, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 401, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -312 + }, + + { + 13, -313, -313, -313, -313, -313, -313, -313, 402, -313, + 83, 83, 83, 83, 83, 83, 83, -313, -313, -313, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -313 + }, + + { + 13, -314, -314, -314, -314, -314, -314, -314, 82, -314, + 83, 83, 83, 83, 83, 83, 83, -314, -314, -314, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 403, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -314 + }, + + { + 13, -315, -315, -315, -315, -315, -315, -315, 82, -315, + 83, 83, 83, 83, 83, 83, 83, -315, -315, -315, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 404, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -315 + }, + + { + 13, -316, -316, -316, -316, -316, -316, -316, 82, -316, + 83, 83, 83, 83, 83, 83, 83, -316, -316, -316, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 405, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -316 + }, + + { + 13, -317, -317, -317, -317, -317, -317, -317, 82, -317, + + 83, 83, 83, 83, 83, 83, 83, -317, -317, -317, + 83, 83, 83, 83, 406, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -317 + }, + + { + 13, -318, -318, -318, -318, -318, -318, -318, 82, -318, + 83, 83, 83, 83, 83, 83, 83, -318, -318, -318, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 407, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -318 + }, + + { + 13, -319, -319, -319, -319, -319, -319, -319, 82, -319, + 83, 83, 83, 83, 83, 83, 83, -319, -319, -319, + 83, 83, 83, 83, 408, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -319 + + }, + + { + 13, -320, -320, -320, -320, -320, -320, -320, 82, -320, + 83, 83, 83, 83, 83, 83, 83, -320, -320, -320, + 409, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -320 + }, + + { + 13, -321, -321, -321, -321, -321, -321, -321, 82, -321, + 83, 83, 83, 83, 83, 83, 83, -321, -321, -321, + 83, 83, 83, 83, 410, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -321 + }, + + { + 13, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + + -322, -322, -322, -322, -322, -322, -322, -322 + }, + + { + 13, -323, -323, -323, -323, -323, -323, -323, 322, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323 + }, + + { + 13, -324, -324, -324, 411, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, -324, -324, -324, -324, -324 + }, + + { + 13, -325, -325, 411, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + + -325, -325, -325, -325, -325, -325, -325, -325, -325, -325, + -325, -325, -325, -325, -325, -325, -325, -325 + }, + + { + 13, -326, -326, -326, -326, -326, -326, -326, 82, -326, + 83, 83, 83, 83, 83, 83, 83, -326, -326, -326, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 93, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -326 + }, + + { + 13, -327, -327, -327, -327, -327, -327, -327, 82, -327, + + 83, 83, 83, 83, 83, 83, 83, -327, -327, -327, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 412, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -327 + }, + + { + 13, -328, -328, -328, -328, -328, -328, -328, 413, -328, + 83, 83, 83, 83, 83, 83, 83, -328, -328, -328, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -328 + }, + + { + 13, -329, -329, -329, -329, -329, -329, -329, 82, -329, + 83, 83, 83, 83, 83, 83, 83, -329, -329, -329, + 83, 83, 414, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -329 + + }, + + { + 13, -330, -330, -330, -330, -330, -330, -330, 82, -330, + 83, 83, 83, 83, 83, 83, 83, -330, -330, -330, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 415, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -330 + }, + + { + 13, 416, 416, 416, 416, 416, 416, 416, 417, 416, + 83, 83, 83, 83, 83, 83, 83, 416, 416, 416, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 418, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 416 + }, + + { + 13, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, + + -332, -332, -332, -332, -332, -332, -332, -332 + }, + + { + 13, -333, -333, -333, -333, -333, -333, -333, 332, -333, + 83, 83, 83, 83, 83, 83, 83, -333, -333, -333, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -333 + }, + + { + 13, -334, -334, -334, -334, -334, -334, -334, 82, -334, + 83, 83, 83, 83, 83, 83, 83, -334, -334, -334, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -334 + }, + + { + 13, -335, -335, -335, -335, -335, -335, -335, 82, -335, + 83, 83, 83, 83, 83, 83, 83, -335, -335, -335, + 419, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -335 + }, + + { + 13, -336, -336, -336, -336, -336, -336, -336, 82, -336, + 83, 83, 83, 83, 83, 83, 83, -336, -336, -336, + 83, 83, 83, 83, 420, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -336 + }, + + { + 13, -337, -337, -337, -337, -337, -337, -337, 82, -337, + + 83, 83, 83, 83, 83, 83, 83, -337, -337, -337, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 421, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -337 + }, + + { + 13, -338, -338, -338, -338, -338, -338, -338, 82, -338, + 83, 83, 83, 83, 83, 83, 83, -338, -338, -338, + 83, 83, 422, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -338 + }, + + { + 13, -339, -339, -339, -339, -339, -339, -339, 82, -339, + 83, 83, 83, 83, 83, 83, 83, -339, -339, -339, + 83, 83, 83, 83, 83, 83, 83, 83, 423, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -339 + + }, + + { + 13, -340, -340, -340, -340, -340, -340, -340, 82, -340, + 83, 83, 83, 83, 83, 83, 83, -340, -340, -340, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 424, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -340 + }, + + { + 13, -341, -341, -341, -341, -341, -341, -341, 82, -341, + 83, 83, 83, 83, 83, 83, 83, -341, -341, -341, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 425, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -341 + }, + + { + 13, -342, -342, -342, -342, -342, -342, -342, 82, -342, + 83, 83, 83, 83, 83, 83, 83, -342, -342, -342, + 83, 83, 83, 83, 426, 83, 83, 83, 427, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -342 + }, + + { + 13, -343, -343, -343, -343, -343, -343, -343, 82, -343, + 83, 83, 83, 83, 83, 83, 83, -343, -343, -343, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 428, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -343 + }, + + { + 13, -344, -344, -344, -344, -344, -344, -344, 82, -344, + 83, 83, 83, 83, 83, 83, 83, -344, -344, -344, + + 83, 83, 83, 83, 83, 83, 83, 83, 429, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -344 + }, + + { + 13, -345, -345, -345, -345, -345, -345, -345, 82, -345, + 83, 83, 83, 83, 83, 83, 83, -345, -345, -345, + 430, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -345 + }, + + { + 13, -346, -346, -346, -346, -346, -346, -346, 82, -346, + 83, 83, 83, 83, 83, 83, 83, -346, -346, -346, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 431, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -346 + }, + + { + 13, -347, -347, -347, -347, -347, -347, -347, 82, -347, + + 83, 83, 83, 83, 83, 83, 83, -347, -347, -347, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 432, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -347 + }, + + { + 13, -348, -348, -348, -348, -348, -348, -348, 82, -348, + 83, 83, 83, 83, 83, 83, 83, -348, -348, -348, + 83, 83, 433, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -348 + }, + + { + 13, -349, -349, -349, -349, -349, -349, -349, 82, -349, + 83, 83, 83, 83, 83, 83, 83, -349, -349, -349, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 434, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -349 + + }, + + { + 13, -350, -350, -350, -350, -350, -350, -350, 82, -350, + 83, 83, 83, 83, 83, 83, 83, -350, -350, -350, + 83, 83, 83, 435, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -350 + }, + + { + 13, -351, -351, -351, -351, -351, -351, -351, 82, -351, + 83, 83, 83, 83, 83, 83, 83, -351, -351, -351, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 436, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -351 + }, + + { + 13, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + -352, -352, -352, -352, -352, -352, -352, -352, -352, -352, + + -352, -352, -352, -352, -352, -352, -352, -352 + }, + + { + 13, -353, -353, -353, -353, -353, -353, -353, 352, -353, + 83, 83, 83, 83, 83, 83, 83, -353, -353, -353, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -353 + }, + + { + 13, -354, -354, -354, -354, -354, -354, -354, 82, -354, + 83, 83, 83, 83, 83, 83, 83, -354, -354, -354, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -354 + }, + + { + 13, 437, 437, 437, 437, 437, 437, 437, 438, 437, + 83, 83, 83, 83, 83, 83, 83, 437, 437, 437, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 439, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 437 + }, + + { + 13, -356, -356, -356, -356, -356, -356, -356, 82, -356, + 83, 83, 83, 440, 83, 83, 83, -356, -356, -356, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -356 + }, + + { + 13, -357, -357, -357, -357, -357, -357, -357, 82, -357, + + 83, 83, 83, 83, 83, 83, 83, -357, -357, -357, + 83, 83, 83, 83, 83, 83, 83, 83, 441, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -357 + }, + + { + 13, -358, -358, -358, -358, -358, -358, -358, 82, -358, + 83, 83, 83, 83, 83, 83, 83, -358, -358, -358, + 83, 83, 442, 83, 443, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -358 + }, + + { + 13, -359, -359, -359, -359, -359, -359, -359, 82, -359, + 83, 83, 83, 83, 83, 83, 83, -359, -359, -359, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 444, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -359 + + }, + + { + 13, -360, -360, -360, -360, -360, -360, -360, 82, -360, + 83, 83, 83, 83, 83, 83, 83, -360, -360, -360, + 83, 83, 83, 445, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -360 + }, + + { + 13, 446, 446, 446, 446, 446, 446, 446, 447, 446, + 83, 83, 83, 83, 83, 83, 83, 446, 446, 446, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 448, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 446 + }, + + { + 13, -362, -362, -362, -362, -362, -362, -362, 82, -362, + 83, 83, 83, 83, 83, 83, 83, -362, -362, -362, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 449, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -362 + }, + + { + 13, -363, -363, -363, -363, -363, -363, -363, 82, -363, + 83, 83, 83, 83, 83, 83, 83, -363, -363, -363, + 83, 83, 83, 83, 450, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -363 + }, + + { + 13, -364, -364, -364, -364, -364, -364, -364, 82, -364, + 83, 83, 83, 83, 83, 83, 83, -364, -364, -364, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 451, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -364 + }, + + { + 13, -365, -365, -365, -365, -365, -365, -365, 82, -365, + 83, 83, 83, 83, 83, 83, 83, -365, -365, -365, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 452, 83, 83, 83, -365 + }, + + { + 13, -366, -366, -366, -366, -366, -366, -366, -366, -366, + 83, 83, 83, 83, 83, 83, 83, -366, -366, -366, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 453, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -366 + }, + + { + 13, -367, -367, -367, -367, -367, -367, -367, 82, -367, + + 83, 83, 83, 83, 83, 83, 83, -367, -367, -367, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -367 + }, + + { + 13, -368, -368, -368, -368, -368, -368, -368, 82, -368, + 83, 83, 83, 83, 83, 83, 83, -368, -368, -368, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 454, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -368 + }, + + { + 13, -369, -369, -369, -369, -369, -369, -369, 82, -369, + 83, 83, 83, 83, 83, 83, 83, -369, -369, -369, + 83, 83, 455, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -369 + + }, + + { + 13, -370, -370, -370, -370, -370, -370, -370, 82, -370, + 83, 83, 83, 83, 83, 83, 83, -370, -370, -370, + 83, 83, 456, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -370 + }, + + { + 13, -371, -371, -371, -371, -371, -371, -371, 457, -371, + 83, 83, 83, 83, 83, 83, 83, -371, -371, -371, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -371 + }, + + { + 13, -372, -372, -372, -372, -372, -372, -372, 82, -372, + 83, 83, 83, 83, 83, 83, 83, -372, -372, -372, + 83, 83, 83, 83, 458, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -372 + }, + + { + 13, -373, -373, -373, -373, -373, -373, -373, 82, -373, + 83, 83, 83, 83, 83, 83, 83, -373, -373, -373, + 83, 83, 83, 83, 83, 83, 83, 83, 459, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -373 + }, + + { + 13, -374, -374, -374, -374, -374, -374, -374, 82, -374, + 83, 83, 83, 83, 83, 83, 83, -374, -374, -374, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 460, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -374 + }, + + { + 13, 461, 461, 461, 461, 461, 461, 461, 462, 461, + 83, 83, 83, 83, 83, 83, 83, 461, 461, 461, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 463, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 461 + }, + + { + 13, -376, -376, -376, -376, -376, -376, -376, 82, -376, + 83, 83, 83, 83, 83, 83, 83, -376, -376, -376, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 464, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -376 + }, + + { + 13, -377, -377, -377, -377, -377, -377, -377, 82, -377, + + 83, 83, 83, 83, 83, 83, 83, -377, -377, -377, + 83, 83, 83, 83, 83, 83, 83, 83, 465, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -377 + }, + + { + 13, -378, -378, -378, -378, -378, -378, -378, 82, -378, + 83, 83, 83, 83, 83, 83, 83, -378, -378, -378, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 466, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -378 + }, + + { + 13, -379, -379, -379, -379, -379, -379, -379, 82, -379, + 83, 83, 83, 83, 83, 83, 83, -379, -379, -379, + 83, 83, 467, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -379 + + }, + + { + 13, -380, -380, -380, -380, -380, -380, -380, 82, -380, + 83, 83, 83, 83, 83, 83, 83, -380, -380, -380, + 83, 83, 83, 83, 468, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -380 + }, + + { + 13, -381, -381, -381, -381, -381, -381, -381, 82, -381, + 83, 83, 83, 83, 83, 83, 83, -381, -381, -381, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 469, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -381 + }, + + { + 13, -382, -382, -382, -382, -382, -382, -382, 82, -382, + 83, 83, 83, 83, 83, 83, 83, -382, -382, -382, + 83, 83, 83, 83, 83, 83, 83, 83, 470, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -382 + }, + + { + 13, -383, -383, -383, -383, -383, -383, -383, 82, -383, + 83, 83, 83, 83, 83, 83, 83, -383, -383, -383, + 83, 83, 83, 83, 471, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -383 + }, + + { + 13, -384, -384, -384, -384, -384, -384, -384, 82, -384, + 83, 83, 83, 83, 83, 83, 83, -384, -384, -384, + + 472, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -384 + }, + + { + 13, -385, -385, -385, -385, -385, -385, -385, -385, -385, + 83, 83, 83, 83, 83, 83, 83, -385, -385, -385, + 83, 83, 83, 83, 83, 83, 83, 83, 473, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -385 + }, + + { + 13, -386, -386, -386, -386, -386, -386, -386, 82, -386, + 83, 83, 83, 83, 83, 83, 83, -386, -386, -386, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 474, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -386 + }, + + { + 13, -387, -387, -387, -387, -387, -387, -387, 82, -387, + + 83, 83, 83, 83, 83, 83, 83, -387, -387, -387, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 475, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -387 + }, + + { + 13, -388, -388, -388, -388, -388, -388, -388, 82, -388, + 83, 83, 83, 83, 83, 83, 83, -388, -388, -388, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 476, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -388 + }, + + { + 13, -389, -389, -389, -389, -389, -389, -389, 82, -389, + 83, 83, 83, 83, 83, 83, 83, -389, -389, -389, + 83, 83, 477, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -389 + + }, + + { + 13, -390, -390, -390, -390, -390, -390, -390, 82, -390, + 83, 83, 83, 83, 83, 83, 83, -390, -390, -390, + 83, 83, 83, 83, 478, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -390 + }, + + { + 13, -391, -391, -391, -391, -391, -391, -391, 82, -391, + 83, 83, 83, 83, 83, 83, 83, -391, -391, -391, + 83, 83, 83, 83, 83, 83, 83, 83, 479, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -391 + }, + + { + 13, -392, -392, -392, -392, -392, -392, -392, 82, -392, + 83, 83, 83, 83, 83, 83, 83, -392, -392, -392, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 480, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -392 + }, + + { + 13, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, + -393, -393, -393, -393, -393, -393, -393, -393 + }, + + { + 13, -394, -394, -394, -394, -394, -394, -394, 393, -394, + 83, 83, 83, 83, 83, 83, 83, -394, -394, -394, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -394 + }, + + { + 13, -395, -395, -395, -395, -395, -395, -395, 82, -395, + 83, 83, 83, 83, 83, 83, 83, -395, -395, -395, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -395 + }, + + { + 13, -396, -396, -396, -396, -396, -396, -396, 82, -396, + 83, 83, 83, 83, 83, 83, 83, -396, -396, -396, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 481, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -396 + }, + + { + 13, -397, -397, -397, -397, -397, -397, -397, 82, -397, + + 83, 83, 83, 83, 83, 83, 83, -397, -397, -397, + 83, 83, 83, 83, 83, 83, 482, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -397 + }, + + { + 13, -398, -398, -398, -398, -398, -398, -398, 82, -398, + 83, 83, 83, 83, 83, 83, 83, -398, -398, -398, + 83, 83, 483, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -398 + }, + + { + 13, -399, -399, -399, -399, -399, -399, -399, 82, -399, + 83, 83, 83, 83, 83, 83, 83, -399, -399, -399, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 484, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -399 + + }, + + { + 13, -400, -400, -400, -400, -400, -400, -400, 82, -400, + 83, 83, 83, 83, 83, 83, 83, -400, -400, -400, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 485, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -400 + }, + + { + 13, -401, -401, -401, -401, -401, -401, -401, 82, -401, + 83, 83, 83, 83, 83, 83, 83, -401, -401, -401, + 486, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -401 + }, + + { + 13, -402, -402, -402, -402, -402, -402, -402, -402, -402, + 83, 83, 83, 83, 83, 83, 83, -402, -402, -402, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 487, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -402 + }, + + { + 13, -403, -403, -403, -403, -403, -403, -403, 82, -403, + 83, 83, 83, 83, 83, 83, 83, -403, -403, -403, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 488, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -403 + }, + + { + 13, -404, -404, -404, -404, -404, -404, -404, 82, -404, + 83, 83, 83, 83, 83, 83, 83, -404, -404, -404, + + 83, 83, 83, 83, 489, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -404 + }, + + { + 13, 490, 490, 490, 490, 490, 490, 490, 491, 490, + 83, 83, 83, 83, 83, 83, 83, 490, 490, 490, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 492, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 490 + }, + + { + 13, -406, -406, -406, -406, -406, -406, -406, 82, -406, + 83, 83, 83, 83, 83, 83, 83, -406, -406, -406, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 493, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -406 + }, + + { + 13, -407, -407, -407, -407, -407, -407, -407, 82, -407, + + 83, 83, 83, 83, 83, 83, 83, -407, -407, -407, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 494, + 83, 83, 83, 83, 83, 83, 83, -407 + }, + + { + 13, 495, 495, 495, 495, 495, 495, 495, 496, 495, + 83, 83, 83, 83, 83, 83, 83, 495, 495, 495, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 497, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 495 + }, + + { + 13, -409, -409, -409, -409, -409, -409, -409, 82, -409, + 83, 83, 83, 83, 83, 83, 83, -409, -409, -409, + 83, 498, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 499, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -409 + + }, + + { + 13, -410, -410, -410, -410, -410, -410, -410, 500, -410, + 83, 83, 83, 83, 83, 83, 83, -410, -410, -410, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -410 + }, + + { + 13, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411 + }, + + { + 13, 501, 501, 501, 501, 501, 501, 501, 502, 501, + 83, 83, 83, 83, 83, 83, 83, 501, 501, 501, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 503, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 501 + }, + + { + 13, -413, -413, -413, -413, -413, -413, -413, -413, -413, + 83, 83, 83, 83, 83, 83, 83, -413, -413, -413, + 83, 83, 504, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -413 + }, + + { + 13, -414, -414, -414, -414, -414, -414, -414, 82, -414, + 83, 83, 83, 83, 83, 83, 83, -414, -414, -414, + + 505, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -414 + }, + + { + 13, -415, -415, -415, -415, -415, -415, -415, 82, -415, + 83, 83, 83, 83, 83, 83, 83, -415, -415, -415, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 506, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -415 + }, + + { + 13, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416 + }, + + { + 13, -417, -417, -417, -417, -417, -417, -417, 416, -417, + + 83, 83, 83, 83, 83, 83, 83, -417, -417, -417, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -417 + }, + + { + 13, -418, -418, -418, -418, -418, -418, -418, 82, -418, + 83, 83, 83, 83, 83, 83, 83, -418, -418, -418, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -418 + }, + + { + 13, -419, -419, -419, -419, -419, -419, -419, 82, -419, + 83, 83, 83, 83, 83, 83, 83, -419, -419, -419, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 93, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -419 + + }, + + { + 13, -420, -420, -420, -420, -420, -420, -420, 82, -420, + 83, 83, 83, 83, 83, 83, 83, -420, -420, -420, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -420 + }, + + { + 13, -421, -421, -421, -421, -421, -421, -421, 82, -421, + 83, 83, 83, 83, 83, 83, 83, -421, -421, -421, + 83, 83, 83, 83, 507, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -421 + }, + + { + 13, -422, -422, -422, -422, -422, -422, -422, 82, -422, + 83, 83, 83, 83, 83, 83, 83, -422, -422, -422, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 508, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -422 + }, + + { + 13, -423, -423, -423, -423, -423, -423, -423, 82, -423, + 83, 83, 83, 83, 83, 83, 83, -423, -423, -423, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 509, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -423 + }, + + { + 13, -424, -424, -424, -424, -424, -424, -424, 82, -424, + 83, 83, 83, 83, 83, 83, 83, -424, -424, -424, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 510, 83, 83, 83, -424 + }, + + { + 13, -425, -425, -425, -425, -425, -425, -425, 82, -425, + 83, 83, 83, 83, 83, 83, 83, -425, -425, -425, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 93, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -425 + }, + + { + 13, -426, -426, -426, -426, -426, -426, -426, 82, -426, + 83, 83, 83, 83, 83, 83, 83, -426, -426, -426, + 83, 83, 83, 93, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -426 + }, + + { + 13, -427, -427, -427, -427, -427, -427, -427, 82, -427, + + 83, 83, 83, 83, 83, 83, 83, -427, -427, -427, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 511, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -427 + }, + + { + 13, 512, 512, 512, 512, 512, 512, 512, 513, 512, + 83, 83, 83, 83, 83, 83, 83, 512, 512, 512, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 514, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 512 + }, + + { + 13, -429, -429, -429, -429, -429, -429, -429, 82, -429, + 83, 83, 83, 83, 83, 83, 83, -429, -429, -429, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 515, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -429 + + }, + + { + 13, -430, -430, -430, -430, -430, -430, -430, 82, -430, + 83, 83, 83, 83, 83, 83, 83, -430, -430, -430, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 516, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -430 + }, + + { + 13, -431, -431, -431, -431, -431, -431, -431, 82, -431, + 83, 83, 83, 83, 83, 83, 83, -431, -431, -431, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 517, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -431 + }, + + { + 13, -432, -432, -432, -432, -432, -432, -432, 82, -432, + 83, 83, 83, 83, 83, 83, 83, -432, -432, -432, + 518, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -432 + }, + + { + 13, -433, -433, -433, -433, -433, -433, -433, 82, -433, + 83, 83, 83, 83, 83, 83, 83, -433, -433, -433, + 83, 83, 83, 83, 83, 83, 83, 83, 519, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -433 + }, + + { + 13, -434, -434, -434, -434, -434, -434, -434, 82, -434, + 83, 83, 83, 83, 83, 83, 83, -434, -434, -434, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 520, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -434 + }, + + { + 13, -435, -435, -435, -435, -435, -435, -435, 82, -435, + 83, 83, 83, 83, 83, 83, 83, -435, -435, -435, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 521, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -435 + }, + + { + 13, -436, -436, -436, -436, -436, -436, -436, 82, -436, + 83, 83, 83, 83, 83, 83, 83, -436, -436, -436, + 522, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -436 + }, + + { + 13, -437, -437, -437, -437, -437, -437, -437, -437, -437, + + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437, -437, -437, + -437, -437, -437, -437, -437, -437, -437, -437 + }, + + { + 13, -438, -438, -438, -438, -438, -438, -438, 437, -438, + 83, 83, 83, 83, 83, 83, 83, -438, -438, -438, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -438 + }, + + { + 13, -439, -439, -439, -439, -439, -439, -439, 82, -439, + 83, 83, 83, 83, 83, 83, 83, -439, -439, -439, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -439 + + }, + + { + 13, -440, -440, -440, -440, -440, -440, -440, 82, -440, + 83, 83, 523, 83, 83, 83, 83, -440, -440, -440, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -440 + }, + + { + 13, -441, -441, -441, -441, -441, -441, -441, 82, -441, + 83, 83, 83, 83, 83, 83, 83, -441, -441, -441, + 83, 83, 83, 83, 83, 524, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -441 + }, + + { + 13, -442, -442, -442, -442, -442, -442, -442, 82, -442, + 83, 83, 83, 83, 83, 83, 83, -442, -442, -442, + 83, 83, 83, 83, 83, 83, 83, 83, 525, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -442 + }, + + { + 13, -443, -443, -443, -443, -443, -443, -443, 82, -443, + 83, 83, 83, 83, 83, 83, 83, -443, -443, -443, + 83, 83, 83, 526, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -443 + }, + + { + 13, -444, -444, -444, -444, -444, -444, -444, 82, -444, + 83, 83, 83, 83, 83, 83, 83, -444, -444, -444, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 527, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -444 + }, + + { + 13, -445, -445, -445, -445, -445, -445, -445, 82, -445, + 83, 83, 83, 83, 83, 83, 83, -445, -445, -445, + 83, 83, 83, 83, 528, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -445 + }, + + { + 13, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446 + }, + + { + 13, -447, -447, -447, -447, -447, -447, -447, 446, -447, + + 83, 83, 83, 83, 83, 83, 83, -447, -447, -447, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -447 + }, + + { + 13, -448, -448, -448, -448, -448, -448, -448, 82, -448, + 83, 83, 83, 83, 83, 83, 83, -448, -448, -448, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -448 + }, + + { + 13, -449, -449, -449, -449, -449, -449, -449, 82, -449, + 83, 83, 83, 83, 83, 83, 83, -449, -449, -449, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 529, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -449 + + }, + + { + 13, -450, -450, -450, -450, -450, -450, -450, 82, -450, + 83, 83, 83, 83, 83, 83, 83, -450, -450, -450, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 530, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -450 + }, + + { + 13, -451, -451, -451, -451, -451, -451, -451, 82, -451, + 83, 83, 83, 83, 83, 83, 83, -451, -451, -451, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 531, 83, 83, 83, -451 + }, + + { + 13, -452, -452, -452, -452, -452, -452, -452, 82, -452, + 83, 83, 83, 83, 83, 83, 83, -452, -452, -452, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 532, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -452 + }, + + { + 13, -453, -453, -453, -453, -453, -453, -453, 82, -453, + 83, 83, 83, 83, 83, 83, 83, -453, -453, -453, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 533, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -453 + }, + + { + 13, -454, -454, -454, -454, -454, -454, -454, 82, -454, + 83, 83, 83, 83, 83, 83, 83, -454, -454, -454, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 534, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -454 + }, + + { + 13, -455, -455, -455, -455, -455, -455, -455, 82, -455, + 83, 83, 83, 83, 83, 83, 83, -455, -455, -455, + 83, 83, 535, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -455 + }, + + { + 13, -456, -456, -456, -456, -456, -456, -456, 82, -456, + 83, 83, 83, 83, 83, 83, 83, -456, -456, -456, + 83, 83, 536, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -456 + }, + + { + 13, -457, -457, -457, -457, -457, -457, -457, -457, -457, + + 83, 83, 83, 83, 83, 83, 83, -457, -457, -457, + 83, 83, 83, 83, 83, 83, 83, 83, 537, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -457 + }, + + { + 13, 538, 538, 538, 538, 538, 538, 538, 539, 538, + 83, 83, 83, 83, 83, 83, 83, 538, 538, 538, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 540, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 538 + }, + + { + 13, -459, -459, -459, -459, -459, -459, -459, 82, -459, + 83, 83, 83, 83, 83, 83, 83, -459, -459, -459, + 83, 83, 541, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -459 + + }, + + { + 13, 542, 542, 542, 542, 542, 542, 542, 543, 542, + 83, 83, 83, 83, 83, 83, 83, 542, 542, 542, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 544, 83, + 83, 83, 83, 83, 83, 83, 545, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 542 + }, + + { + 13, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, -461, -461, -461, -461, -461 + }, + + { + 13, -462, -462, -462, -462, -462, -462, -462, 461, -462, + 83, 83, 83, 83, 83, 83, 83, -462, -462, -462, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -462 + }, + + { + 13, -463, -463, -463, -463, -463, -463, -463, 82, -463, + 83, 83, 83, 83, 83, 83, 83, -463, -463, -463, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -463 + }, + + { + 13, -464, -464, -464, -464, -464, -464, -464, 82, -464, + 83, 83, 83, 83, 83, 83, 83, -464, -464, -464, + + 546, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -464 + }, + + { + 13, -465, -465, -465, -465, -465, -465, -465, 82, -465, + 83, 83, 83, 83, 83, 83, 83, -465, -465, -465, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 547, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -465 + }, + + { + 13, 548, 548, 548, 548, 548, 548, 548, 549, 548, + 83, 83, 83, 83, 83, 83, 83, 548, 548, 548, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 550, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 548 + }, + + { + 13, -467, -467, -467, -467, -467, -467, -467, 82, -467, + + 83, 83, 83, 83, 83, 83, 83, -467, -467, -467, + 83, 83, 551, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -467 + }, + + { + 13, -468, -468, -468, -468, -468, -468, -468, 82, -468, + 83, 83, 83, 83, 83, 83, 83, -468, -468, -468, + 83, 83, 83, 83, 83, 552, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -468 + }, + + { + 13, -469, -469, -469, -469, -469, -469, -469, 82, -469, + 83, 83, 83, 83, 83, 83, 83, -469, -469, -469, + 83, 83, 83, 553, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -469 + + }, + + { + 13, -470, -470, -470, -470, -470, -470, -470, 82, -470, + 83, 83, 83, 83, 83, 83, 83, -470, -470, -470, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 554, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -470 + }, + + { + 13, -471, -471, -471, -471, -471, -471, -471, 82, -471, + 83, 83, 83, 83, 83, 83, 83, -471, -471, -471, + 83, 83, 83, 83, 83, 555, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -471 + }, + + { + 13, -472, -472, -472, -472, -472, -472, -472, 82, -472, + 83, 83, 83, 83, 83, 83, 83, -472, -472, -472, + 83, 83, 83, 83, 83, 83, 556, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -472 + }, + + { + 13, -473, -473, -473, -473, -473, -473, -473, 82, -473, + 83, 83, 83, 83, 83, 83, 83, -473, -473, -473, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 557, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -473 + }, + + { + 13, -474, -474, -474, -474, -474, -474, -474, 558, -474, + 83, 83, 83, 83, 83, 83, 83, -474, -474, -474, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -474 + }, + + { + 13, -475, -475, -475, -475, -475, -475, -475, 82, -475, + 83, 83, 83, 83, 83, 83, 83, -475, -475, -475, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 93, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -475 + }, + + { + 13, -476, -476, -476, -476, -476, -476, -476, 82, -476, + 83, 83, 83, 83, 83, 83, 83, -476, -476, -476, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -476 + }, + + { + 13, -477, -477, -477, -477, -477, -477, -477, 82, -477, + + 83, 83, 83, 83, 83, 83, 83, -477, -477, -477, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 559, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -477 + }, + + { + 13, -478, -478, -478, -478, -478, -478, -478, 82, -478, + 83, 83, 83, 83, 83, 83, 83, -478, -478, -478, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 560, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -478 + }, + + { + 13, -479, -479, -479, -479, -479, -479, -479, 82, -479, + 83, 83, 83, 83, 83, 83, 83, -479, -479, -479, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 561, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -479 + + }, + + { + 13, -480, -480, -480, -480, -480, -480, -480, 82, -480, + 83, 83, 83, 83, 83, 83, 83, -480, -480, -480, + 83, 83, 562, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -480 + }, + + { + 13, 563, 563, 563, 563, 563, 563, 563, 564, 563, + 83, 83, 83, 83, 83, 83, 83, 563, 563, 563, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 565, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 563 + }, + + { + 13, 566, 566, 566, 566, 566, 566, 566, 567, 566, + 83, 83, 83, 83, 83, 83, 83, 566, 566, 566, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 568, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 566 + }, + + { + 13, -483, -483, -483, -483, -483, -483, -483, 82, -483, + 83, 83, 83, 83, 83, 83, 83, -483, -483, -483, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 569, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -483 + }, + + { + 13, -484, -484, -484, -484, -484, -484, -484, 82, -484, + 83, 83, 83, 83, 83, 83, 83, -484, -484, -484, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 570, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -484 + }, + + { + 13, 571, 571, 571, 571, 571, 571, 571, 572, 571, + 83, 83, 83, 83, 83, 83, 83, 571, 571, 571, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 573, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 571 + }, + + { + 13, -486, -486, -486, -486, -486, -486, -486, 82, -486, + 83, 83, 83, 83, 83, 83, 83, -486, -486, -486, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 574, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -486 + }, + + { + 13, -487, -487, -487, -487, -487, -487, -487, 82, -487, + + 83, 83, 83, 83, 83, 83, 83, -487, -487, -487, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 575, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -487 + }, + + { + 13, -488, -488, -488, -488, -488, -488, -488, 82, -488, + 83, 83, 83, 83, 83, 83, 83, -488, -488, -488, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 576, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -488 + }, + + { + 13, -489, -489, -489, -489, -489, -489, -489, 82, -489, + 83, 83, 83, 83, 83, 83, 83, -489, -489, -489, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 577, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -489 + + }, + + { + 13, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490, -490, -490, + -490, -490, -490, -490, -490, -490, -490, -490 + }, + + { + 13, -491, -491, -491, -491, -491, -491, -491, 490, -491, + 83, 83, 83, 83, 83, 83, 83, -491, -491, -491, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -491 + }, + + { + 13, -492, -492, -492, -492, -492, -492, -492, 82, -492, + 83, 83, 83, 83, 83, 83, 83, -492, -492, -492, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -492 + }, + + { + 13, -493, -493, -493, -493, -493, -493, -493, 82, -493, + 83, 83, 83, 83, 83, 83, 83, -493, -493, -493, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 578, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -493 + }, + + { + 13, -494, -494, -494, -494, -494, -494, -494, 82, -494, + 83, 83, 83, 83, 83, 83, 83, -494, -494, -494, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 579, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -494 + }, + + { + 13, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + + -495, -495, -495, -495, -495, -495, -495, -495, -495, -495, + -495, -495, -495, -495, -495, -495, -495, -495 + }, + + { + 13, -496, -496, -496, -496, -496, -496, -496, 495, -496, + 83, 83, 83, 83, 83, 83, 83, -496, -496, -496, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -496 + }, + + { + 13, -497, -497, -497, -497, -497, -497, -497, 82, -497, + + 83, 83, 83, 83, 83, 83, 83, -497, -497, -497, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -497 + }, + + { + 13, -498, -498, -498, -498, -498, -498, -498, 82, -498, + 83, 83, 83, 83, 83, 83, 83, -498, -498, -498, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 580, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -498 + }, + + { + 13, -499, -499, -499, -499, -499, -499, -499, 82, -499, + 83, 83, 83, 83, 83, 83, 83, -499, -499, -499, + 83, 83, 83, 83, 83, 83, 83, 83, 581, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -499 + + }, + + { + 13, -500, -500, -500, -500, -500, -500, -500, -500, -500, + 83, 83, 83, 83, 83, 83, 83, -500, -500, -500, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 582, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -500 + }, + + { + 13, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501, -501, -501, + -501, -501, -501, -501, -501, -501, -501, -501 + }, + + { + 13, -502, -502, -502, -502, -502, -502, -502, 501, -502, + 83, 83, 83, 83, 83, 83, 83, -502, -502, -502, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -502 + }, + + { + 13, -503, -503, -503, -503, -503, -503, -503, 82, -503, + 83, 83, 83, 83, 83, 83, 83, -503, -503, -503, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -503 + }, + + { + 13, -504, -504, -504, -504, -504, -504, -504, 82, -504, + 83, 83, 83, 83, 83, 83, 83, -504, -504, -504, + + 583, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -504 + }, + + { + 13, -505, -505, -505, -505, -505, -505, -505, 82, -505, + 83, 83, 83, 83, 83, 83, 83, -505, -505, -505, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 584, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -505 + }, + + { + 13, -506, -506, -506, -506, -506, -506, -506, 82, -506, + 83, 83, 83, 83, 83, 83, 83, -506, -506, -506, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 585, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -506 + }, + + { + 13, -507, -507, -507, -507, -507, -507, -507, 82, -507, + + 83, 83, 83, 83, 83, 83, 83, -507, -507, -507, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 586, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -507 + }, + + { + 13, -508, -508, -508, -508, -508, -508, -508, 587, -508, + 83, 83, 83, 83, 83, 83, 83, -508, -508, -508, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -508 + }, + + { + 13, -509, -509, -509, -509, -509, -509, -509, 82, -509, + 83, 83, 83, 83, 83, 83, 83, -509, -509, -509, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 588, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -509 + + }, + + { + 13, -510, -510, -510, -510, -510, -510, -510, 82, -510, + 83, 83, 83, 589, 83, 83, 590, -510, -510, -510, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -510 + }, + + { + 13, -511, -511, -511, -511, -511, -511, -511, 82, -511, + 83, 83, 83, 83, 83, 83, 83, -511, -511, -511, + 83, 83, 83, 83, 83, 83, 83, 83, 591, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -511 + }, + + { + 13, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + + -512, -512, -512, -512, -512, -512, -512, -512 + }, + + { + 13, -513, -513, -513, -513, -513, -513, -513, 512, -513, + 83, 83, 83, 83, 83, 83, 83, -513, -513, -513, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -513 + }, + + { + 13, -514, -514, -514, -514, -514, -514, -514, 82, -514, + 83, 83, 83, 83, 83, 83, 83, -514, -514, -514, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -514 + }, + + { + 13, -515, -515, -515, -515, -515, -515, -515, 82, -515, + 83, 83, 83, 83, 83, 83, 83, -515, -515, -515, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 592, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -515 + }, + + { + 13, -516, -516, -516, -516, -516, -516, -516, 593, -516, + 83, 83, 83, 83, 83, 83, 83, -516, -516, -516, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -516 + }, + + { + 13, -517, -517, -517, -517, -517, -517, -517, 82, -517, + + 83, 83, 83, 83, 83, 83, 83, -517, -517, -517, + 83, 83, 83, 83, 83, 83, 83, 83, 594, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -517 + }, + + { + 13, -518, -518, -518, -518, -518, -518, -518, 82, -518, + 83, 83, 83, 83, 83, 83, 83, -518, -518, -518, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 595, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -518 + }, + + { + 13, -519, -519, -519, -519, -519, -519, -519, 82, -519, + 83, 83, 83, 83, 83, 83, 83, -519, -519, -519, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 93, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -519 + + }, + + { + 13, -520, -520, -520, -520, -520, -520, -520, 82, -520, + 83, 83, 83, 83, 83, 83, 83, -520, -520, -520, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -520 + }, + + { + 13, 596, 596, 596, 596, 596, 596, 596, 597, 596, + 83, 83, 83, 83, 83, 83, 83, 596, 596, 596, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 598, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 596 + }, + + { + 13, -522, -522, -522, -522, -522, -522, -522, 82, -522, + 83, 83, 83, 83, 83, 83, 83, -522, -522, -522, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 93, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -522 + }, + + { + 13, 599, 599, 599, 599, 599, 599, 599, 600, 599, + 83, 83, 83, 83, 83, 83, 83, 599, 599, 599, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 601, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 599 + }, + + { + 13, -524, -524, -524, -524, -524, -524, -524, 82, -524, + 83, 83, 83, 83, 83, 83, 83, -524, -524, -524, + + 83, 83, 83, 83, 83, 83, 83, 83, 602, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -524 + }, + + { + 13, -525, -525, -525, -525, -525, -525, -525, 82, -525, + 83, 83, 83, 83, 83, 83, 83, -525, -525, -525, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 603, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -525 + }, + + { + 13, 604, 604, 604, 604, 604, 604, 604, 605, 604, + 83, 83, 83, 83, 83, 83, 83, 604, 604, 604, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 606, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 604 + }, + + { + 13, 607, 607, 607, 607, 607, 607, 607, 608, 607, + + 83, 83, 83, 83, 83, 83, 83, 607, 607, 607, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 609, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 607 + }, + + { + 13, -528, -528, -528, -528, -528, -528, -528, 82, -528, + 83, 83, 83, 83, 83, 83, 83, -528, -528, -528, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 610, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -528 + }, + + { + 13, -529, -529, -529, -529, -529, -529, -529, 611, -529, + 83, 83, 83, 83, 83, 83, 83, -529, -529, -529, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -529 + + }, + + { + 13, 612, 612, 612, 612, 612, 612, 612, 613, 612, + 83, 83, 83, 83, 83, 83, 83, 612, 612, 612, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 614, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 612 + }, + + { + 13, -531, -531, -531, -531, -531, -531, -531, 82, -531, + 83, 83, 83, 615, 83, 83, 616, -531, -531, -531, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -531 + }, + + { + 13, -532, -532, -532, -532, -532, -532, -532, 82, -532, + 83, 83, 83, 83, 83, 83, 83, -532, -532, -532, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 617, 83, 83, -532 + }, + + { + 13, -533, -533, -533, -533, -533, -533, -533, 82, -533, + 83, 83, 83, 83, 83, 83, 83, -533, -533, -533, + 83, 83, 83, 618, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -533 + }, + + { + 13, -534, -534, -534, -534, -534, -534, -534, 82, -534, + 83, 83, 83, 83, 83, 83, 83, -534, -534, -534, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 619, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -534 + }, + + { + 13, -535, -535, -535, -535, -535, -535, -535, 82, -535, + 83, 83, 83, 83, 83, 83, 83, -535, -535, -535, + 83, 83, 83, 83, 620, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -535 + }, + + { + 13, -536, -536, -536, -536, -536, -536, -536, 82, -536, + 83, 83, 83, 83, 83, 83, 83, -536, -536, -536, + 83, 83, 83, 83, 621, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -536 + }, + + { + 13, -537, -537, -537, -537, -537, -537, -537, 82, -537, + + 83, 83, 83, 83, 83, 83, 83, -537, -537, -537, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 622, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -537 + }, + + { + 13, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, + -538, -538, -538, -538, -538, -538, -538, -538 + }, + + { + 13, -539, -539, -539, -539, -539, -539, -539, 538, -539, + 83, 83, 83, 83, 83, 83, 83, -539, -539, -539, + 83, 83, 623, 83, 83, 83, 83, 83, 624, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -539 + + }, + + { + 13, -540, -540, -540, -540, -540, -540, -540, 82, -540, + 83, 83, 83, 83, 83, 83, 83, -540, -540, -540, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -540 + }, + + { + 13, -541, -541, -541, -541, -541, -541, -541, 82, -541, + 83, 83, 83, 83, 83, 83, 83, -541, -541, -541, + 625, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -541 + }, + + { + 13, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, + + -542, -542, -542, -542, -542, -542, -542, -542 + }, + + { + 13, -543, -543, -543, -543, -543, -543, -543, 542, -543, + 83, 83, 83, 83, 83, 83, 83, -543, -543, -543, + 83, 83, 83, 83, 83, 83, 626, 83, 627, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 628, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -543 + }, + + { + 13, 629, 629, 629, 629, 629, 629, 629, 630, 629, + 83, 83, 83, 83, 83, 83, 83, 629, 629, 629, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 631, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 629 + }, + + { + 13, -545, -545, -545, -545, -545, -545, -545, 82, -545, + 83, 83, 83, 83, 83, 83, 83, -545, -545, -545, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -545 + }, + + { + 13, -546, -546, -546, -546, -546, -546, -546, 82, -546, + 83, 83, 83, 83, 83, 83, 83, -546, -546, -546, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 93, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -546 + }, + + { + 13, -547, -547, -547, -547, -547, -547, -547, 82, -547, + + 83, 83, 83, 83, 83, 83, 83, -547, -547, -547, + 632, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -547 + }, + + { + 13, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, + -548, -548, -548, -548, -548, -548, -548, -548 + }, + + { + 13, -549, -549, -549, -549, -549, -549, -549, 548, -549, + 83, 83, 83, 83, 83, 83, 83, -549, -549, -549, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -549 + + }, + + { + 13, -550, -550, -550, -550, -550, -550, -550, 82, -550, + 83, 83, 83, 83, 83, 83, 83, -550, -550, -550, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -550 + }, + + { + 13, -551, -551, -551, -551, -551, -551, -551, 82, -551, + 83, 83, 83, 83, 83, 83, 83, -551, -551, -551, + 83, 83, 83, 83, 633, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -551 + }, + + { + 13, -552, -552, -552, -552, -552, -552, -552, 82, -552, + 83, 83, 83, 83, 83, 83, 83, -552, -552, -552, + 83, 83, 83, 83, 83, 83, 83, 83, 634, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -552 + }, + + { + 13, -553, -553, -553, -553, -553, -553, -553, 82, -553, + 83, 83, 83, 83, 83, 83, 83, -553, -553, -553, + 83, 83, 83, 83, 635, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -553 + }, + + { + 13, -554, -554, -554, -554, -554, -554, -554, 636, -554, + 83, 83, 83, 83, 83, 83, 83, -554, -554, -554, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -554 + }, + + { + 13, -555, -555, -555, -555, -555, -555, -555, 82, -555, + 83, 83, 83, 83, 83, 83, 83, -555, -555, -555, + 83, 83, 83, 83, 637, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -555 + }, + + { + 13, 638, 638, 638, 638, 638, 638, 638, 639, 638, + 83, 83, 83, 83, 83, 83, 83, 638, 638, 638, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 640, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 638 + }, + + { + 13, -557, -557, -557, -557, -557, -557, -557, 82, -557, + + 83, 83, 83, 83, 83, 83, 83, -557, -557, -557, + 83, 83, 83, 83, 83, 641, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -557 + }, + + { + 13, -558, -558, -558, -558, -558, -558, -558, -558, -558, + 83, 83, 83, 83, 83, 83, 83, -558, -558, -558, + 642, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -558 + }, + + { + 13, -559, -559, -559, -559, -559, -559, -559, 643, -559, + 83, 83, 83, 83, 83, 83, 83, -559, -559, -559, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -559 + + }, + + { + 13, -560, -560, -560, -560, -560, -560, -560, 82, -560, + 83, 83, 83, 83, 83, 83, 83, -560, -560, -560, + 83, 83, 644, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -560 + }, + + { + 13, -561, -561, -561, -561, -561, -561, -561, 82, -561, + 83, 83, 83, 83, 83, 83, 83, -561, -561, -561, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 645, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -561 + }, + + { + 13, -562, -562, -562, -562, -562, -562, -562, 82, -562, + 83, 83, 83, 83, 83, 83, 83, -562, -562, -562, + 83, 83, 83, 83, 646, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -562 + }, + + { + 13, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563, -563, -563, + -563, -563, -563, -563, -563, -563, -563, -563 + }, + + { + 13, -564, -564, -564, -564, -564, -564, -564, 563, -564, + 83, 83, 83, 83, 83, 83, 83, -564, -564, -564, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -564 + }, + + { + 13, -565, -565, -565, -565, -565, -565, -565, 82, -565, + 83, 83, 83, 83, 83, 83, 83, -565, -565, -565, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -565 + }, + + { + 13, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566, -566, -566, + -566, -566, -566, -566, -566, -566, -566, -566 + }, + + { + 13, -567, -567, -567, -567, -567, -567, -567, 566, -567, + + 83, 83, 83, 83, 83, 83, 83, -567, -567, -567, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -567 + }, + + { + 13, -568, -568, -568, -568, -568, -568, -568, 82, -568, + 83, 83, 83, 83, 83, 83, 83, -568, -568, -568, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -568 + }, + + { + 13, -569, -569, -569, -569, -569, -569, -569, 647, -569, + 83, 83, 83, 83, 83, 83, 83, -569, -569, -569, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -569 + + }, + + { + 13, -570, -570, -570, -570, -570, -570, -570, 82, -570, + 83, 83, 83, 83, 83, 83, 83, -570, -570, -570, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 648, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -570 + }, + + { + 13, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571, -571, -571, + -571, -571, -571, -571, -571, -571, -571, -571 + }, + + { + 13, -572, -572, -572, -572, -572, -572, -572, 571, -572, + 83, 83, 83, 83, 83, 83, 83, -572, -572, -572, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -572 + }, + + { + 13, -573, -573, -573, -573, -573, -573, -573, 82, -573, + 83, 83, 83, 83, 83, 83, 83, -573, -573, -573, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -573 + }, + + { + 13, -574, -574, -574, -574, -574, -574, -574, 649, -574, + 83, 83, 83, 83, 83, 83, 83, -574, -574, -574, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -574 + }, + + { + 13, -575, -575, -575, -575, -575, -575, -575, 82, -575, + 83, 83, 83, 83, 83, 83, 83, -575, -575, -575, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 650, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -575 + }, + + { + 13, -576, -576, -576, -576, -576, -576, -576, 82, -576, + 83, 83, 83, 83, 83, 83, 83, -576, -576, -576, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 651, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -576 + }, + + { + 13, -577, -577, -577, -577, -577, -577, -577, 82, -577, + + 83, 83, 83, 83, 83, 83, 83, -577, -577, -577, + 83, 83, 83, 83, 652, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -577 + }, + + { + 13, -578, -578, -578, -578, -578, -578, -578, 82, -578, + 83, 83, 83, 83, 83, 83, 83, -578, -578, -578, + 653, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -578 + }, + + { + 13, -579, -579, -579, -579, -579, -579, -579, 82, -579, + 83, 83, 83, 83, 83, 83, 83, -579, -579, -579, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 654, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -579 + + }, + + { + 13, -580, -580, -580, -580, -580, -580, -580, 82, -580, + 83, 83, 83, 83, 83, 83, 83, -580, -580, -580, + 83, 83, 83, 83, 655, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -580 + }, + + { + 13, -581, -581, -581, -581, -581, -581, -581, 82, -581, + 83, 83, 83, 83, 83, 83, 83, -581, -581, -581, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 656, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -581 + }, + + { + 13, -582, -582, -582, -582, -582, -582, -582, 82, -582, + 83, 83, 83, 83, 83, 83, 83, -582, -582, -582, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 657, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -582 + }, + + { + 13, -583, -583, -583, -583, -583, -583, -583, 82, -583, + 83, 83, 83, 83, 83, 83, 83, -583, -583, -583, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 658, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -583 + }, + + { + 13, -584, -584, -584, -584, -584, -584, -584, 82, -584, + 83, 83, 83, 83, 83, 83, 83, -584, -584, -584, + + 83, 83, 83, 83, 83, 83, 83, 83, 659, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -584 + }, + + { + 13, 660, 660, 660, 660, 660, 660, 660, 661, 660, + 83, 83, 83, 83, 83, 83, 83, 660, 660, 660, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 662, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 660 + }, + + { + 13, -586, -586, -586, -586, -586, -586, -586, 82, -586, + 83, 83, 83, 83, 83, 83, 83, -586, -586, -586, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 663, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -586 + }, + + { + 13, -587, -587, -587, -587, -587, -587, -587, -587, -587, + + 83, 83, 83, 83, 83, 83, 83, -587, -587, -587, + 83, 83, 83, 83, 83, 83, 83, 83, 664, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -587 + }, + + { + 13, -588, -588, -588, -588, -588, -588, -588, 665, -588, + 83, 83, 83, 83, 83, 83, 83, -588, -588, -588, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -588 + }, + + { + 13, -589, -589, -589, -589, -589, -589, -589, 82, -589, + 83, 83, 666, 83, 83, 83, 83, -589, -589, -589, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -589 + + }, + + { + 13, -590, -590, -590, -590, -590, -590, -590, 82, -590, + 83, 83, 83, 83, 667, 83, 83, -590, -590, -590, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -590 + }, + + { + 13, -591, -591, -591, -591, -591, -591, -591, 82, -591, + 83, 83, 83, 83, 83, 83, 83, -591, -591, -591, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 668, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -591 + }, + + { + 13, -592, -592, -592, -592, -592, -592, -592, 82, -592, + 83, 83, 83, 83, 83, 83, 83, -592, -592, -592, + 83, 83, 83, 83, 83, 83, 83, 83, 669, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -592 + }, + + { + 13, -593, -593, -593, -593, -593, -593, -593, -593, -593, + 83, 83, 83, 83, 83, 83, 83, -593, -593, -593, + 83, 83, 83, 83, 83, 83, 83, 670, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -593 + }, + + { + 13, -594, -594, -594, -594, -594, -594, -594, 82, -594, + 83, 83, 83, 83, 83, 83, 83, -594, -594, -594, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 671, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -594 + }, + + { + 13, -595, -595, -595, -595, -595, -595, -595, 82, -595, + 83, 83, 83, 83, 83, 83, 83, -595, -595, -595, + 83, 83, 83, 83, 672, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -595 + }, + + { + 13, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596, -596, -596, + -596, -596, -596, -596, -596, -596, -596, -596 + }, + + { + 13, -597, -597, -597, -597, -597, -597, -597, 596, -597, + + 83, 83, 83, 83, 83, 83, 83, -597, -597, -597, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -597 + }, + + { + 13, -598, -598, -598, -598, -598, -598, -598, 82, -598, + 83, 83, 83, 83, 83, 83, 83, -598, -598, -598, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -598 + }, + + { + 13, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599, -599, -599, + -599, -599, -599, -599, -599, -599, -599, -599 + + }, + + { + 13, -600, -600, -600, -600, -600, -600, -600, 599, -600, + 83, 83, 83, 83, 83, 83, 83, -600, -600, -600, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -600 + }, + + { + 13, -601, -601, -601, -601, -601, -601, -601, 82, -601, + 83, 83, 83, 83, 83, 83, 83, -601, -601, -601, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -601 + }, + + { + 13, -602, -602, -602, -602, -602, -602, -602, 82, -602, + 83, 83, 83, 83, 83, 83, 83, -602, -602, -602, + 83, 83, 83, 83, 673, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -602 + }, + + { + 13, 674, 674, 674, 674, 674, 674, 674, 675, 674, + 83, 83, 83, 83, 83, 83, 83, 674, 674, 674, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 676, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 674 + }, + + { + 13, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604, -604, -604, + -604, -604, -604, -604, -604, -604, -604, -604 + }, + + { + 13, -605, -605, -605, -605, -605, -605, -605, 604, -605, + 83, 83, 83, 83, 83, 83, 83, -605, -605, -605, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -605 + }, + + { + 13, -606, -606, -606, -606, -606, -606, -606, 82, -606, + 83, 83, 83, 83, 83, 83, 83, -606, -606, -606, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -606 + }, + + { + 13, -607, -607, -607, -607, -607, -607, -607, -607, -607, + + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607, -607, -607, + -607, -607, -607, -607, -607, -607, -607, -607 + }, + + { + 13, -608, -608, -608, -608, -608, -608, -608, 607, -608, + 83, 83, 83, 83, 83, 83, 83, -608, -608, -608, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -608 + }, + + { + 13, -609, -609, -609, -609, -609, -609, -609, 82, -609, + 83, 83, 83, 83, 83, 83, 83, -609, -609, -609, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -609 + + }, + + { + 13, 677, 677, 677, 677, 677, 677, 677, 678, 677, + 83, 83, 83, 83, 83, 83, 83, 677, 677, 677, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 679, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 677 + }, + + { + 13, -611, -611, -611, -611, -611, -611, -611, -611, -611, + 83, 83, 83, 83, 83, 83, 83, -611, -611, -611, + 83, 83, 83, 83, 680, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -611 + }, + + { + 13, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + -612, -612, -612, -612, -612, -612, -612, -612, -612, -612, + + -612, -612, -612, -612, -612, -612, -612, -612 + }, + + { + 13, -613, -613, -613, -613, -613, -613, -613, 612, -613, + 83, 83, 83, 83, 83, 83, 83, -613, -613, -613, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -613 + }, + + { + 13, -614, -614, -614, -614, -614, -614, -614, 82, -614, + 83, 83, 83, 83, 83, 83, 83, -614, -614, -614, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -614 + }, + + { + 13, -615, -615, -615, -615, -615, -615, -615, 82, -615, + 83, 83, 681, 83, 83, 83, 83, -615, -615, -615, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -615 + }, + + { + 13, -616, -616, -616, -616, -616, -616, -616, 82, -616, + 83, 83, 83, 83, 682, 83, 83, -616, -616, -616, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -616 + }, + + { + 13, -617, -617, -617, -617, -617, -617, -617, 82, -617, + + 83, 83, 83, 83, 83, 83, 83, -617, -617, -617, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 683, 83, 83, -617 + }, + + { + 13, -618, -618, -618, -618, -618, -618, -618, 82, -618, + 83, 83, 83, 83, 83, 83, 83, -618, -618, -618, + 684, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -618 + }, + + { + 13, -619, -619, -619, -619, -619, -619, -619, 82, -619, + 83, 83, 83, 83, 83, 83, 83, -619, -619, -619, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 685, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -619 + + }, + + { + 13, -620, -620, -620, -620, -620, -620, -620, 82, -620, + 83, 83, 83, 83, 83, 83, 83, -620, -620, -620, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 686, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -620 + }, + + { + 13, -621, -621, -621, -621, -621, -621, -621, 82, -621, + 83, 83, 83, 83, 83, 83, 83, -621, -621, -621, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 687, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -621 + }, + + { + 13, -622, -622, -622, -622, -622, -622, -622, 82, -622, + 83, 83, 83, 83, 83, 83, 83, -622, -622, -622, + 83, 83, 83, 83, 83, 688, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -622 + }, + + { + 13, -623, -623, -623, -623, -623, -623, -623, 82, -623, + 83, 83, 83, 83, 83, 83, 83, -623, -623, -623, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 689, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -623 + }, + + { + 13, -624, -624, -624, -624, -624, -624, -624, 82, -624, + 83, 83, 83, 83, 83, 83, 83, -624, -624, -624, + + 83, 83, 83, 690, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -624 + }, + + { + 13, -625, -625, -625, -625, -625, -625, -625, 82, -625, + 83, 83, 83, 83, 83, 83, 83, -625, -625, -625, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 691, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -625 + }, + + { + 13, -626, -626, -626, -626, -626, -626, -626, 82, -626, + 83, 83, 83, 83, 83, 83, 83, -626, -626, -626, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 692, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -626 + }, + + { + 13, -627, -627, -627, -627, -627, -627, -627, 82, -627, + + 83, 83, 83, 83, 83, 83, 83, -627, -627, -627, + 83, 83, 83, 693, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -627 + }, + + { + 13, -628, -628, -628, -628, -628, -628, -628, 82, -628, + 83, 83, 83, 83, 83, 83, 83, -628, -628, -628, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 694, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -628 + }, + + { + 13, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629, -629, -629, + -629, -629, -629, -629, -629, -629, -629, -629 + + }, + + { + 13, -630, -630, -630, -630, -630, -630, -630, 629, -630, + 83, 83, 83, 83, 83, 83, 83, -630, -630, -630, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -630 + }, + + { + 13, -631, -631, -631, -631, -631, -631, -631, 82, -631, + 83, 83, 83, 83, 83, 83, 83, -631, -631, -631, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -631 + }, + + { + 13, -632, -632, -632, -632, -632, -632, -632, 82, -632, + 83, 83, 83, 83, 83, 83, 83, -632, -632, -632, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 695, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -632 + }, + + { + 13, -633, -633, -633, -633, -633, -633, -633, 82, -633, + 83, 83, 83, 83, 83, 83, 83, -633, -633, -633, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 696, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -633 + }, + + { + 13, -634, -634, -634, -634, -634, -634, -634, 82, -634, + 83, 83, 83, 83, 83, 83, 83, -634, -634, -634, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 697, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -634 + }, + + { + 13, -635, -635, -635, -635, -635, -635, -635, 82, -635, + 83, 83, 83, 83, 83, 83, 83, -635, -635, -635, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 698, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -635 + }, + + { + 13, -636, -636, -636, -636, -636, -636, -636, -636, -636, + 83, 83, 83, 83, 83, 83, 83, -636, -636, -636, + 699, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -636 + }, + + { + 13, -637, -637, -637, -637, -637, -637, -637, 82, -637, + + 83, 83, 83, 83, 83, 83, 83, -637, -637, -637, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 700, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -637 + }, + + { + 13, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638, -638, -638, + -638, -638, -638, -638, -638, -638, -638, -638 + }, + + { + 13, -639, -639, -639, -639, -639, -639, -639, 638, -639, + 83, 83, 83, 83, 83, 83, 83, -639, -639, -639, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -639 + + }, + + { + 13, -640, -640, -640, -640, -640, -640, -640, 82, -640, + 83, 83, 83, 83, 83, 83, 83, -640, -640, -640, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -640 + }, + + { + 13, -641, -641, -641, -641, -641, -641, -641, 82, -641, + 83, 83, 83, 83, 83, 83, 83, -641, -641, -641, + 83, 83, 83, 83, 83, 83, 83, 83, 701, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -641 + }, + + { + 13, -642, -642, -642, -642, -642, -642, -642, 82, -642, + 83, 83, 83, 83, 83, 83, 83, -642, -642, -642, + 83, 83, 702, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -642 + }, + + { + 13, -643, -643, -643, -643, -643, -643, -643, -643, -643, + 83, 83, 83, 83, 83, 83, 83, -643, -643, -643, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 703, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -643 + }, + + { + 13, -644, -644, -644, -644, -644, -644, -644, 82, -644, + 83, 83, 83, 83, 83, 83, 83, -644, -644, -644, + + 83, 83, 83, 83, 704, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -644 + }, + + { + 13, 705, 705, 705, 705, 705, 705, 705, 706, 705, + 83, 83, 83, 83, 83, 83, 83, 705, 705, 705, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 707, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 705 + }, + + { + 13, 708, 708, 708, 708, 708, 708, 708, 709, 708, + 83, 83, 83, 83, 83, 83, 83, 708, 708, 708, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 710, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 708 + }, + + { + 13, -647, -647, -647, -647, -647, -647, -647, -647, -647, + + 83, 83, 83, 83, 83, 83, 83, -647, -647, -647, + 83, 83, 711, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -647 + }, + + { + 13, 712, 712, 712, 712, 712, 712, 712, 713, 712, + 83, 83, 83, 83, 83, 83, 83, 712, 712, 712, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 714, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 712 + }, + + { + 13, -649, -649, -649, -649, -649, -649, -649, -649, -649, + 83, 83, 83, 83, 83, 83, 83, -649, -649, -649, + 83, 83, 715, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -649 + + }, + + { + 13, -650, -650, -650, -650, -650, -650, -650, 82, -650, + 83, 83, 83, 83, 83, 83, 83, -650, -650, -650, + 83, 83, 83, 83, 716, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -650 + }, + + { + 13, -651, -651, -651, -651, -651, -651, -651, 82, -651, + 83, 83, 83, 83, 83, 83, 83, -651, -651, -651, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 717, 83, 83, -651 + }, + + { + 13, -652, -652, -652, -652, -652, -652, -652, 82, -652, + 83, 83, 83, 83, 83, 83, 83, -652, -652, -652, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 718, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -652 + }, + + { + 13, -653, -653, -653, -653, -653, -653, -653, 82, -653, + 83, 83, 83, 83, 83, 83, 83, -653, -653, -653, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 719, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -653 + }, + + { + 13, -654, -654, -654, -654, -654, -654, -654, 82, -654, + 83, 83, 83, 720, 83, 83, 721, -654, -654, -654, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -654 + }, + + { + 13, -655, -655, -655, -655, -655, -655, -655, 82, -655, + 83, 83, 83, 83, 83, 83, 83, -655, -655, -655, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 722, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -655 + }, + + { + 13, -656, -656, -656, -656, -656, -656, -656, 82, -656, + 83, 83, 83, 83, 83, 83, 83, -656, -656, -656, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 723, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -656 + }, + + { + 13, -657, -657, -657, -657, -657, -657, -657, 82, -657, + + 83, 83, 83, 83, 83, 83, 83, -657, -657, -657, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 724, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -657 + }, + + { + 13, -658, -658, -658, -658, -658, -658, -658, 82, -658, + 83, 83, 83, 83, 83, 83, 83, -658, -658, -658, + 725, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -658 + }, + + { + 13, -659, -659, -659, -659, -659, -659, -659, 82, -659, + 83, 83, 83, 83, 83, 83, 83, -659, -659, -659, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 726, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -659 + + }, + + { + 13, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660, -660, -660, + -660, -660, -660, -660, -660, -660, -660, -660 + }, + + { + 13, -661, -661, -661, -661, -661, -661, -661, 660, -661, + 83, 83, 83, 83, 83, 83, 83, -661, -661, -661, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -661 + }, + + { + 13, -662, -662, -662, -662, -662, -662, -662, 82, -662, + 83, 83, 83, 83, 83, 83, 83, -662, -662, -662, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -662 + }, + + { + 13, 171, 171, 171, 171, 171, 171, 171, 172, 171, + 83, 83, 83, 83, 83, 83, 83, 171, 171, 171, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 93, 83, + 83, 83, 83, 83, 83, 83, 173, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 171 + }, + + { + 13, -664, -664, -664, -664, -664, -664, -664, 82, -664, + 83, 83, 83, 83, 83, 83, 83, -664, -664, -664, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 727, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -664 + }, + + { + 13, -665, -665, -665, -665, -665, -665, -665, -665, -665, + 83, 83, 83, 83, 83, 83, 83, -665, -665, -665, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 728, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -665 + }, + + { + 13, 729, 729, 729, 729, 729, 729, 729, 730, 729, + 83, 83, 83, 83, 83, 83, 83, 729, 729, 729, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 731, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 729 + }, + + { + 13, 732, 732, 732, 732, 732, 732, 732, 733, 732, + + 83, 83, 83, 83, 83, 83, 83, 732, 732, 732, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 734, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 732 + }, + + { + 13, -668, -668, -668, -668, -668, -668, -668, 82, -668, + 83, 83, 83, 83, 83, 83, 83, -668, -668, -668, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 735, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -668 + }, + + { + 13, -669, -669, -669, -669, -669, -669, -669, 82, -669, + 83, 83, 83, 83, 83, 83, 83, -669, -669, -669, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 736, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -669 + + }, + + { + 13, -670, -670, -670, -670, -670, -670, -670, 82, -670, + 83, 83, 83, 83, 83, 83, 83, -670, -670, -670, + 83, 83, 83, 83, 83, 83, 83, 83, 737, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -670 + }, + + { + 13, -671, -671, -671, -671, -671, -671, -671, 82, -671, + 83, 83, 83, 83, 83, 83, 83, -671, -671, -671, + 83, 83, 83, 83, 738, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -671 + }, + + { + 13, -672, -672, -672, -672, -672, -672, -672, 82, -672, + 83, 83, 83, 83, 83, 83, 83, -672, -672, -672, + 83, 83, 83, 93, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -672 + }, + + { + 13, -673, -673, -673, -673, -673, -673, -673, 82, -673, + 83, 83, 83, 83, 83, 83, 83, -673, -673, -673, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 739, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -673 + }, + + { + 13, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674, -674, -674, + -674, -674, -674, -674, -674, -674, -674, -674 + }, + + { + 13, -675, -675, -675, -675, -675, -675, -675, 674, -675, + 83, 83, 83, 83, 83, 83, 83, -675, -675, -675, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -675 + }, + + { + 13, -676, -676, -676, -676, -676, -676, -676, 82, -676, + 83, 83, 83, 83, 83, 83, 83, -676, -676, -676, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -676 + }, + + { + 13, -677, -677, -677, -677, -677, -677, -677, -677, -677, + + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677, -677, -677, + -677, -677, -677, -677, -677, -677, -677, -677 + }, + + { + 13, -678, -678, -678, -678, -678, -678, -678, 677, -678, + 83, 83, 83, 83, 83, 83, 83, -678, -678, -678, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -678 + }, + + { + 13, -679, -679, -679, -679, -679, -679, -679, 82, -679, + 83, 83, 83, 83, 83, 83, 83, -679, -679, -679, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -679 + + }, + + { + 13, -680, -680, -680, -680, -680, -680, -680, 82, -680, + 83, 83, 83, 83, 83, 83, 83, -680, -680, -680, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 740, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -680 + }, + + { + 13, 741, 741, 741, 741, 741, 741, 741, 742, 741, + 83, 83, 83, 83, 83, 83, 83, 741, 741, 741, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 743, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 741 + }, + + { + 13, 744, 744, 744, 744, 744, 744, 744, 745, 744, + 83, 83, 83, 83, 83, 83, 83, 744, 744, 744, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 746, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 744 + }, + + { + 13, 747, 747, 747, 747, 747, 747, 747, 748, 747, + 83, 83, 83, 83, 83, 83, 83, 747, 747, 747, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 749, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 747 + }, + + { + 13, -684, -684, -684, -684, -684, -684, -684, 82, -684, + 83, 83, 83, 83, 83, 83, 83, -684, -684, -684, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 750, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -684 + }, + + { + 13, -685, -685, -685, -685, -685, -685, -685, 751, -685, + 83, 83, 83, 83, 83, 83, 83, -685, -685, -685, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -685 + }, + + { + 13, -686, -686, -686, -686, -686, -686, -686, 82, -686, + 83, 83, 83, 83, 83, 83, 83, -686, -686, -686, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 752, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -686 + }, + + { + 13, -687, -687, -687, -687, -687, -687, -687, 82, -687, + + 83, 83, 83, 83, 83, 83, 83, -687, -687, -687, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 753, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -687 + }, + + { + 13, -688, -688, -688, -688, -688, -688, -688, 82, -688, + 83, 83, 83, 83, 83, 83, 83, -688, -688, -688, + 83, 83, 83, 83, 83, 83, 83, 83, 754, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -688 + }, + + { + 13, -689, -689, -689, -689, -689, -689, -689, 82, -689, + 83, 83, 83, 83, 83, 83, 83, -689, -689, -689, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 755, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -689 + + }, + + { + 13, -690, -690, -690, -690, -690, -690, -690, 82, -690, + 83, 83, 83, 83, 83, 83, 83, -690, -690, -690, + 83, 83, 83, 83, 756, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -690 + }, + + { + 13, -691, -691, -691, -691, -691, -691, -691, 82, -691, + 83, 83, 83, 83, 83, 83, 83, -691, -691, -691, + 83, 83, 83, 83, 83, 83, 83, 83, 757, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -691 + }, + + { + 13, -692, -692, -692, -692, -692, -692, -692, 82, -692, + 83, 83, 83, 83, 83, 83, 83, -692, -692, -692, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 758, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -692 + }, + + { + 13, -693, -693, -693, -693, -693, -693, -693, 82, -693, + 83, 83, 83, 83, 83, 83, 83, -693, -693, -693, + 83, 83, 83, 83, 759, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -693 + }, + + { + 13, -694, -694, -694, -694, -694, -694, -694, 82, -694, + 83, 83, 83, 83, 83, 83, 83, -694, -694, -694, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 760, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -694 + }, + + { + 13, -695, -695, -695, -695, -695, -695, -695, 82, -695, + 83, 83, 83, 83, 83, 83, 83, -695, -695, -695, + 83, 83, 83, 83, 83, 83, 83, 83, 761, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -695 + }, + + { + 13, -696, -696, -696, -696, -696, -696, -696, 82, -696, + 83, 83, 83, 83, 83, 83, 83, -696, -696, -696, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 762, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -696 + }, + + { + 13, -697, -697, -697, -697, -697, -697, -697, 82, -697, + + 83, 83, 83, 83, 83, 83, 83, -697, -697, -697, + 83, 83, 83, 83, 83, 83, 83, 83, 763, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -697 + }, + + { + 13, 764, 764, 764, 764, 764, 764, 764, 765, 764, + 83, 83, 83, 83, 83, 83, 83, 764, 764, 764, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 766, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 764 + }, + + { + 13, -699, -699, -699, -699, -699, -699, -699, 82, -699, + 83, 83, 83, 83, 83, 83, 83, -699, -699, -699, + 83, 83, 767, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -699 + + }, + + { + 13, -700, -700, -700, -700, -700, -700, -700, 82, -700, + 83, 83, 83, 83, 83, 83, 83, -700, -700, -700, + 83, 83, 83, 83, 768, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -700 + }, + + { + 13, -701, -701, -701, -701, -701, -701, -701, 82, -701, + 83, 83, 83, 83, 83, 83, 83, -701, -701, -701, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 769, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -701 + }, + + { + 13, -702, -702, -702, -702, -702, -702, -702, 82, -702, + 83, 83, 83, 83, 83, 83, 83, -702, -702, -702, + 83, 83, 770, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -702 + }, + + { + 13, -703, -703, -703, -703, -703, -703, -703, 82, -703, + 83, 83, 83, 83, 83, 83, 83, -703, -703, -703, + 83, 83, 83, 83, 771, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -703 + }, + + { + 13, 772, 772, 772, 772, 772, 772, 772, 773, 772, + 83, 83, 83, 83, 83, 83, 83, 772, 772, 772, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 774, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 772 + }, + + { + 13, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + + -705, -705, -705, -705, -705, -705, -705, -705, -705, -705, + -705, -705, -705, -705, -705, -705, -705, -705 + }, + + { + 13, -706, -706, -706, -706, -706, -706, -706, 705, -706, + 83, 83, 83, 83, 83, 83, 83, -706, -706, -706, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -706 + }, + + { + 13, -707, -707, -707, -707, -707, -707, -707, 82, -707, + + 83, 83, 83, 83, 83, 83, 83, -707, -707, -707, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -707 + }, + + { + 13, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708, -708, -708, + -708, -708, -708, -708, -708, -708, -708, -708 + }, + + { + 13, -709, -709, -709, -709, -709, -709, -709, 708, -709, + 83, 83, 83, 83, 83, 83, 83, -709, -709, -709, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -709 + + }, + + { + 13, -710, -710, -710, -710, -710, -710, -710, 82, -710, + 83, 83, 83, 83, 83, 83, 83, -710, -710, -710, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -710 + }, + + { + 13, -711, -711, -711, -711, -711, -711, -711, 82, -711, + 83, 83, 83, 83, 83, 83, 83, -711, -711, -711, + 775, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -711 + }, + + { + 13, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + -712, -712, -712, -712, -712, -712, -712, -712, -712, -712, + + -712, -712, -712, -712, -712, -712, -712, -712 + }, + + { + 13, -713, -713, -713, -713, -713, -713, -713, 712, -713, + 83, 83, 83, 83, 83, 83, 83, -713, -713, -713, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -713 + }, + + { + 13, -714, -714, -714, -714, -714, -714, -714, 82, -714, + 83, 83, 83, 83, 83, 83, 83, -714, -714, -714, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -714 + }, + + { + 13, -715, -715, -715, -715, -715, -715, -715, 82, -715, + 83, 83, 83, 83, 83, 83, 83, -715, -715, -715, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 776, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -715 + }, + + { + 13, 777, 777, 777, 777, 777, 777, 777, 778, 777, + 83, 83, 83, 83, 83, 83, 83, 777, 777, 777, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 779, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 777 + }, + + { + 13, 780, 780, 780, 780, 780, 780, 780, 781, 780, + + 83, 83, 83, 83, 83, 83, 83, 780, 780, 780, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 782, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 780 + }, + + { + 13, -718, -718, -718, -718, -718, -718, -718, 82, -718, + 83, 83, 83, 83, 83, 83, 83, -718, -718, -718, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 783, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -718 + }, + + { + 13, 784, 784, 784, 784, 784, 784, 784, 785, 784, + 83, 83, 83, 83, 83, 83, 83, 784, 784, 784, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 786, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 784 + + }, + + { + 13, -720, -720, -720, -720, -720, -720, -720, 82, -720, + 83, 83, 787, 83, 83, 83, 83, -720, -720, -720, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -720 + }, + + { + 13, -721, -721, -721, -721, -721, -721, -721, 82, -721, + 83, 83, 83, 83, 788, 83, 83, -721, -721, -721, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -721 + }, + + { + 13, 789, 789, 789, 789, 789, 789, 789, 790, 789, + 83, 83, 83, 83, 83, 83, 83, 789, 789, 789, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 791, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 789 + }, + + { + 13, 792, 792, 792, 792, 792, 792, 792, 793, 792, + 83, 83, 83, 83, 83, 83, 83, 792, 792, 792, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 794, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 792 + }, + + { + 13, -724, -724, -724, -724, -724, -724, -724, 82, -724, + 83, 83, 83, 83, 83, 83, 83, -724, -724, -724, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 795, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -724 + }, + + { + 13, -725, -725, -725, -725, -725, -725, -725, 82, -725, + 83, 83, 83, 83, 83, 83, 83, -725, -725, -725, + 83, 796, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -725 + }, + + { + 13, -726, -726, -726, -726, -726, -726, -726, 82, -726, + 83, 83, 83, 83, 83, 83, 83, -726, -726, -726, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 797, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -726 + }, + + { + 13, -727, -727, -727, -727, -727, -727, -727, 82, -727, + + 83, 83, 83, 83, 83, 83, 83, -727, -727, -727, + 83, 83, 83, 83, 83, 798, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -727 + }, + + { + 13, -728, -728, -728, -728, -728, -728, -728, 82, -728, + 83, 83, 83, 83, 83, 83, 83, -728, -728, -728, + 83, 83, 83, 83, 799, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -728 + }, + + { + 13, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729, -729, -729, + -729, -729, -729, -729, -729, -729, -729, -729 + + }, + + { + 13, -730, -730, -730, -730, -730, -730, -730, 729, -730, + 83, 83, 83, 83, 83, 83, 83, -730, -730, -730, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -730 + }, + + { + 13, -731, -731, -731, -731, -731, -731, -731, 82, -731, + 83, 83, 83, 83, 83, 83, 83, -731, -731, -731, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -731 + }, + + { + 13, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + + -732, -732, -732, -732, -732, -732, -732, -732 + }, + + { + 13, -733, -733, -733, -733, -733, -733, -733, 732, -733, + 83, 83, 83, 83, 83, 83, 83, -733, -733, -733, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -733 + }, + + { + 13, -734, -734, -734, -734, -734, -734, -734, 82, -734, + 83, 83, 83, 83, 83, 83, 83, -734, -734, -734, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -734 + }, + + { + 13, -735, -735, -735, -735, -735, -735, -735, 82, -735, + 83, 83, 83, 83, 83, 83, 83, -735, -735, -735, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 800, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -735 + }, + + { + 13, -736, -736, -736, -736, -736, -736, -736, 82, -736, + 83, 83, 83, 83, 83, 83, 83, -736, -736, -736, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 801, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -736 + }, + + { + 13, -737, -737, -737, -737, -737, -737, -737, 82, -737, + + 83, 83, 83, 83, 83, 83, 83, -737, -737, -737, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 802, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -737 + }, + + { + 13, 803, 803, 803, 803, 803, 803, 803, 804, 803, + 83, 83, 83, 83, 83, 83, 83, 803, 803, 803, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 805, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 803 + }, + + { + 13, 806, 806, 806, 806, 806, 806, 806, 807, 806, + 83, 83, 83, 83, 83, 83, 83, 806, 806, 806, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 808, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 806 + + }, + + { + 13, -740, -740, -740, -740, -740, -740, -740, 82, -740, + 83, 83, 83, 83, 83, 83, 83, -740, -740, -740, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 809, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -740 + }, + + { + 13, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, + -741, -741, -741, -741, -741, -741, -741, -741 + }, + + { + 13, -742, -742, -742, -742, -742, -742, -742, 741, -742, + 83, 83, 83, 83, 83, 83, 83, -742, -742, -742, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -742 + }, + + { + 13, -743, -743, -743, -743, -743, -743, -743, 82, -743, + 83, 83, 83, 83, 83, 83, 83, -743, -743, -743, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -743 + }, + + { + 13, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744, -744, -744, + -744, -744, -744, -744, -744, -744, -744, -744 + }, + + { + 13, -745, -745, -745, -745, -745, -745, -745, 744, -745, + 83, 83, 83, 83, 83, 83, 83, -745, -745, -745, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -745 + }, + + { + 13, -746, -746, -746, -746, -746, -746, -746, 82, -746, + 83, 83, 83, 83, 83, 83, 83, -746, -746, -746, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -746 + }, + + { + 13, -747, -747, -747, -747, -747, -747, -747, -747, -747, + + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747, -747, -747, + -747, -747, -747, -747, -747, -747, -747, -747 + }, + + { + 13, -748, -748, -748, -748, -748, -748, -748, 747, -748, + 83, 83, 83, 83, 83, 83, 83, -748, -748, -748, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -748 + }, + + { + 13, -749, -749, -749, -749, -749, -749, -749, 82, -749, + 83, 83, 83, 83, 83, 83, 83, -749, -749, -749, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -749 + + }, + + { + 13, -750, -750, -750, -750, -750, -750, -750, 82, -750, + 83, 83, 83, 83, 83, 83, 83, -750, -750, -750, + 83, 83, 83, 83, 810, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -750 + }, + + { + 13, -751, -751, -751, -751, -751, -751, -751, -751, -751, + 83, 83, 83, 83, 83, 83, 83, -751, -751, -751, + 83, 83, 83, 83, 83, 83, 811, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -751 + }, + + { + 13, 812, 812, 812, 812, 812, 812, 812, 813, 812, + 83, 83, 83, 83, 83, 83, 83, 812, 812, 812, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 814, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 812 + }, + + { + 13, 815, 815, 815, 815, 815, 815, 815, 816, 815, + 83, 83, 83, 83, 83, 83, 83, 815, 815, 815, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 817, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 815 + }, + + { + 13, -754, -754, -754, -754, -754, -754, -754, 82, -754, + 83, 83, 83, 83, 83, 83, 83, -754, -754, -754, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 818, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -754 + }, + + { + 13, -755, -755, -755, -755, -755, -755, -755, 82, -755, + 83, 83, 83, 83, 83, 83, 83, -755, -755, -755, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 819, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -755 + }, + + { + 13, -756, -756, -756, -756, -756, -756, -756, 82, -756, + 83, 83, 83, 83, 83, 83, 83, -756, -756, -756, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 820, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -756 + }, + + { + 13, -757, -757, -757, -757, -757, -757, -757, 82, -757, + + 83, 83, 83, 83, 83, 83, 83, -757, -757, -757, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 821, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -757 + }, + + { + 13, -758, -758, -758, -758, -758, -758, -758, 82, -758, + 83, 83, 83, 83, 83, 83, 83, -758, -758, -758, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 822, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -758 + }, + + { + 13, -759, -759, -759, -759, -759, -759, -759, 82, -759, + 83, 83, 83, 83, 83, 83, 83, -759, -759, -759, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 823, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -759 + + }, + + { + 13, -760, -760, -760, -760, -760, -760, -760, 82, -760, + 83, 83, 83, 83, 83, 83, 83, -760, -760, -760, + 83, 83, 83, 83, 824, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -760 + }, + + { + 13, -761, -761, -761, -761, -761, -761, -761, 82, -761, + 83, 83, 83, 83, 83, 83, 83, -761, -761, -761, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 825, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -761 + }, + + { + 13, 826, 826, 826, 826, 826, 826, 826, 827, 826, + 83, 83, 83, 83, 83, 83, 83, 826, 826, 826, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 828, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 826 + }, + + { + 13, -763, -763, -763, -763, -763, -763, -763, 82, -763, + 83, 83, 83, 83, 83, 83, 83, -763, -763, -763, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 829, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -763 + }, + + { + 13, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764, -764, -764, + -764, -764, -764, -764, -764, -764, -764, -764 + }, + + { + 13, -765, -765, -765, -765, -765, -765, -765, 764, -765, + 83, 83, 83, 83, 83, 83, 83, -765, -765, -765, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -765 + }, + + { + 13, -766, -766, -766, -766, -766, -766, -766, 82, -766, + 83, 83, 83, 83, 83, 83, 83, -766, -766, -766, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -766 + }, + + { + 13, -767, -767, -767, -767, -767, -767, -767, 82, -767, + + 83, 83, 83, 83, 83, 83, 83, -767, -767, -767, + 83, 83, 830, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -767 + }, + + { + 13, -768, -768, -768, -768, -768, -768, -768, 82, -768, + 83, 83, 83, 83, 83, 83, 83, -768, -768, -768, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 831, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -768 + }, + + { + 13, -769, -769, -769, -769, -769, -769, -769, 82, -769, + 83, 83, 83, 83, 83, 83, 83, -769, -769, -769, + 83, 83, 83, 83, 83, 83, 83, 83, 832, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -769 + + }, + + { + 13, -770, -770, -770, -770, -770, -770, -770, 82, -770, + 83, 83, 83, 83, 83, 83, 83, -770, -770, -770, + 83, 83, 83, 83, 833, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -770 + }, + + { + 13, -771, -771, -771, -771, -771, -771, -771, 82, -771, + 83, 83, 83, 83, 83, 83, 83, -771, -771, -771, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 834, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -771 + }, + + { + 13, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + -772, -772, -772, -772, -772, -772, -772, -772, -772, -772, + + -772, -772, -772, -772, -772, -772, -772, -772 + }, + + { + 13, -773, -773, -773, -773, -773, -773, -773, 772, -773, + 83, 83, 83, 83, 83, 83, 83, -773, -773, -773, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -773 + }, + + { + 13, -774, -774, -774, -774, -774, -774, -774, 82, -774, + 83, 83, 83, 83, 83, 83, 83, -774, -774, -774, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -774 + }, + + { + 13, -775, -775, -775, -775, -775, -775, -775, 82, -775, + 83, 83, 83, 83, 83, 83, 83, -775, -775, -775, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 835, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -775 + }, + + { + 13, -776, -776, -776, -776, -776, -776, -776, 82, -776, + 83, 83, 83, 83, 83, 83, 83, -776, -776, -776, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 836, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -776 + }, + + { + 13, -777, -777, -777, -777, -777, -777, -777, -777, -777, + + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777 + }, + + { + 13, -778, -778, -778, -778, -778, -778, -778, 777, -778, + 83, 83, 83, 83, 83, 83, 83, -778, -778, -778, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -778 + }, + + { + 13, -779, -779, -779, -779, -779, -779, -779, 82, -779, + 83, 83, 83, 83, 83, 83, 83, -779, -779, -779, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -779 + + }, + + { + 13, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780, -780, -780, + -780, -780, -780, -780, -780, -780, -780, -780 + }, + + { + 13, -781, -781, -781, -781, -781, -781, -781, 780, -781, + 83, 83, 83, 83, 83, 83, 83, -781, -781, -781, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -781 + }, + + { + 13, -782, -782, -782, -782, -782, -782, -782, 82, -782, + 83, 83, 83, 83, 83, 83, 83, -782, -782, -782, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -782 + }, + + { + 13, 837, 837, 837, 837, 837, 837, 837, 838, 837, + 83, 83, 83, 83, 83, 83, 83, 837, 837, 837, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 839, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 837 + }, + + { + 13, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784, -784, -784, + -784, -784, -784, -784, -784, -784, -784, -784 + }, + + { + 13, -785, -785, -785, -785, -785, -785, -785, 784, -785, + 83, 83, 83, 83, 83, 83, 83, -785, -785, -785, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -785 + }, + + { + 13, -786, -786, -786, -786, -786, -786, -786, 82, -786, + 83, 83, 83, 83, 83, 83, 83, -786, -786, -786, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -786 + }, + + { + 13, 840, 840, 840, 840, 840, 840, 840, 841, 840, + + 83, 83, 83, 83, 83, 83, 83, 840, 840, 840, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 842, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 840 + }, + + { + 13, 843, 843, 843, 843, 843, 843, 843, 844, 843, + 83, 83, 83, 83, 83, 83, 83, 843, 843, 843, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 845, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 843 + }, + + { + 13, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789, -789, -789, + -789, -789, -789, -789, -789, -789, -789, -789 + + }, + + { + 13, -790, -790, -790, -790, -790, -790, -790, 789, -790, + 83, 83, 83, 83, 83, 83, 83, -790, -790, -790, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -790 + }, + + { + 13, -791, -791, -791, -791, -791, -791, -791, 82, -791, + 83, 83, 83, 83, 83, 83, 83, -791, -791, -791, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -791 + }, + + { + 13, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + -792, -792, -792, -792, -792, -792, -792, -792, -792, -792, + + -792, -792, -792, -792, -792, -792, -792, -792 + }, + + { + 13, -793, -793, -793, -793, -793, -793, -793, 792, -793, + 83, 83, 83, 83, 83, 83, 83, -793, -793, -793, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -793 + }, + + { + 13, -794, -794, -794, -794, -794, -794, -794, 82, -794, + 83, 83, 83, 83, 83, 83, 83, -794, -794, -794, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -794 + }, + + { + 13, -795, -795, -795, -795, -795, -795, -795, 82, -795, + 83, 83, 83, 83, 83, 83, 83, -795, -795, -795, + 846, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -795 + }, + + { + 13, -796, -796, -796, -796, -796, -796, -796, 82, -796, + 83, 83, 83, 83, 83, 83, 83, -796, -796, -796, + 83, 83, 83, 83, 83, 83, 83, 83, 847, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -796 + }, + + { + 13, 848, 848, 848, 848, 848, 848, 848, 849, 848, + + 83, 83, 83, 83, 83, 83, 83, 848, 848, 848, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 850, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 848 + }, + + { + 13, -798, -798, -798, -798, -798, -798, -798, 82, -798, + 83, 83, 83, 83, 83, 83, 83, -798, -798, -798, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 851, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -798 + }, + + { + 13, -799, -799, -799, -799, -799, -799, -799, 82, -799, + 83, 83, 83, 83, 83, 83, 83, -799, -799, -799, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 852, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -799 + + }, + + { + 13, 853, 853, 853, 853, 853, 853, 853, 854, 853, + 83, 83, 83, 83, 83, 83, 83, 853, 853, 853, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 855, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 853 + }, + + { + 13, 856, 856, 856, 856, 856, 856, 856, 857, 856, + 83, 83, 83, 83, 83, 83, 83, 856, 856, 856, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 858, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 856 + }, + + { + 13, -802, -802, -802, -802, -802, -802, -802, 82, -802, + 83, 83, 83, 83, 83, 83, 83, -802, -802, -802, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 859, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -802 + }, + + { + 13, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803, -803, -803, + -803, -803, -803, -803, -803, -803, -803, -803 + }, + + { + 13, -804, -804, -804, -804, -804, -804, -804, 803, -804, + 83, 83, 83, 83, 83, 83, 83, -804, -804, -804, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -804 + }, + + { + 13, -805, -805, -805, -805, -805, -805, -805, 82, -805, + 83, 83, 83, 83, 83, 83, 83, -805, -805, -805, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -805 + }, + + { + 13, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806, -806, -806, + -806, -806, -806, -806, -806, -806, -806, -806 + }, + + { + 13, -807, -807, -807, -807, -807, -807, -807, 806, -807, + + 83, 83, 83, 83, 83, 83, 83, -807, -807, -807, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -807 + }, + + { + 13, -808, -808, -808, -808, -808, -808, -808, 82, -808, + 83, 83, 83, 83, 83, 83, 83, -808, -808, -808, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -808 + }, + + { + 13, -809, -809, -809, -809, -809, -809, -809, 82, -809, + 83, 83, 83, 83, 83, 83, 83, -809, -809, -809, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 860, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -809 + + }, + + { + 13, -810, -810, -810, -810, -810, -810, -810, 82, -810, + 83, 83, 83, 83, 83, 83, 83, -810, -810, -810, + 83, 83, 83, 861, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -810 + }, + + { + 13, -811, -811, -811, -811, -811, -811, -811, 82, -811, + 83, 83, 83, 83, 83, 83, 83, -811, -811, -811, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 862, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -811 + }, + + { + 13, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + -812, -812, -812, -812, -812, -812, -812, -812, -812, -812, + + -812, -812, -812, -812, -812, -812, -812, -812 + }, + + { + 13, -813, -813, -813, -813, -813, -813, -813, 812, -813, + 83, 83, 83, 83, 83, 83, 83, -813, -813, -813, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -813 + }, + + { + 13, -814, -814, -814, -814, -814, -814, -814, 82, -814, + 83, 83, 83, 83, 83, 83, 83, -814, -814, -814, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -814 + }, + + { + 13, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + + -815, -815, -815, -815, -815, -815, -815, -815, -815, -815, + -815, -815, -815, -815, -815, -815, -815, -815 + }, + + { + 13, -816, -816, -816, -816, -816, -816, -816, 815, -816, + 83, 83, 83, 83, 83, 83, 83, -816, -816, -816, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -816 + }, + + { + 13, -817, -817, -817, -817, -817, -817, -817, 82, -817, + + 83, 83, 83, 83, 83, 83, 83, -817, -817, -817, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -817 + }, + + { + 13, -818, -818, -818, -818, -818, -818, -818, 82, -818, + 83, 83, 83, 83, 83, 83, 83, -818, -818, -818, + 83, 83, 83, 83, 83, 83, 83, 83, 863, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -818 + }, + + { + 13, -819, -819, -819, -819, -819, -819, -819, 82, -819, + 83, 83, 83, 83, 83, 83, 83, -819, -819, -819, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 864, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -819 + + }, + + { + 13, -820, -820, -820, -820, -820, -820, -820, 82, -820, + 83, 83, 83, 83, 83, 83, 83, -820, -820, -820, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 865, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -820 + }, + + { + 13, -821, -821, -821, -821, -821, -821, -821, 82, -821, + 83, 83, 83, 83, 83, 83, 83, -821, -821, -821, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 866, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -821 + }, + + { + 13, -822, -822, -822, -822, -822, -822, -822, 82, -822, + 83, 83, 83, 83, 83, 83, 83, -822, -822, -822, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 867, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -822 + }, + + { + 13, -823, -823, -823, -823, -823, -823, -823, 82, -823, + 83, 83, 83, 83, 83, 83, 83, -823, -823, -823, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 868, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -823 + }, + + { + 13, 869, 869, 869, 869, 869, 869, 869, 870, 869, + 83, 83, 83, 83, 83, 83, 83, 869, 869, 869, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 871, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 869 + }, + + { + 13, -825, -825, -825, -825, -825, -825, -825, 82, -825, + 83, 83, 83, 83, 83, 83, 83, -825, -825, -825, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 872, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -825 + }, + + { + 13, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, + -826, -826, -826, -826, -826, -826, -826, -826 + }, + + { + 13, -827, -827, -827, -827, -827, -827, -827, 826, -827, + + 83, 83, 83, 83, 83, 83, 83, -827, -827, -827, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -827 + }, + + { + 13, -828, -828, -828, -828, -828, -828, -828, 82, -828, + 83, 83, 83, 83, 83, 83, 83, -828, -828, -828, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -828 + }, + + { + 13, -829, -829, -829, -829, -829, -829, -829, 82, -829, + 83, 83, 83, 83, 83, 83, 83, -829, -829, -829, + 83, 83, 83, 83, 83, 83, 83, 83, 873, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -829 + + }, + + { + 13, -830, -830, -830, -830, -830, -830, -830, 82, -830, + 83, 83, 83, 83, 83, 83, 83, -830, -830, -830, + 83, 83, 83, 83, 874, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -830 + }, + + { + 13, -831, -831, -831, -831, -831, -831, -831, 82, -831, + 83, 83, 83, 83, 83, 83, 83, -831, -831, -831, + 83, 83, 875, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -831 + }, + + { + 13, -832, -832, -832, -832, -832, -832, -832, 82, -832, + 83, 83, 83, 83, 83, 83, 83, -832, -832, -832, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 876, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -832 + }, + + { + 13, -833, -833, -833, -833, -833, -833, -833, 82, -833, + 83, 83, 83, 83, 83, 83, 83, -833, -833, -833, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 877, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -833 + }, + + { + 13, -834, -834, -834, -834, -834, -834, -834, 82, -834, + 83, 83, 83, 83, 83, 83, 83, -834, -834, -834, + + 83, 83, 83, 83, 878, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -834 + }, + + { + 13, -835, -835, -835, -835, -835, -835, -835, 82, -835, + 83, 83, 83, 83, 83, 83, 83, -835, -835, -835, + 83, 83, 83, 83, 879, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -835 + }, + + { + 13, -836, -836, -836, -836, -836, -836, -836, 82, -836, + 83, 83, 83, 83, 83, 83, 83, -836, -836, -836, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 880, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -836 + }, + + { + 13, -837, -837, -837, -837, -837, -837, -837, -837, -837, + + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837 + }, + + { + 13, -838, -838, -838, -838, -838, -838, -838, 837, -838, + 83, 83, 83, 83, 83, 83, 83, -838, -838, -838, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -838 + }, + + { + 13, -839, -839, -839, -839, -839, -839, -839, 82, -839, + 83, 83, 83, 83, 83, 83, 83, -839, -839, -839, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -839 + + }, + + { + 13, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840, -840, -840, + -840, -840, -840, -840, -840, -840, -840, -840 + }, + + { + 13, -841, -841, -841, -841, -841, -841, -841, 840, -841, + 83, 83, 83, 83, 83, 83, 83, -841, -841, -841, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -841 + }, + + { + 13, -842, -842, -842, -842, -842, -842, -842, 82, -842, + 83, 83, 83, 83, 83, 83, 83, -842, -842, -842, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -842 + }, + + { + 13, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843, -843, -843, + -843, -843, -843, -843, -843, -843, -843, -843 + }, + + { + 13, -844, -844, -844, -844, -844, -844, -844, 843, -844, + 83, 83, 83, 83, 83, 83, 83, -844, -844, -844, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -844 + }, + + { + 13, -845, -845, -845, -845, -845, -845, -845, 82, -845, + 83, 83, 83, 83, 83, 83, 83, -845, -845, -845, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -845 + }, + + { + 13, -846, -846, -846, -846, -846, -846, -846, 82, -846, + 83, 83, 83, 83, 83, 83, 83, -846, -846, -846, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 881, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -846 + }, + + { + 13, -847, -847, -847, -847, -847, -847, -847, 82, -847, + + 83, 83, 83, 83, 83, 83, 83, -847, -847, -847, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 882, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -847 + }, + + { + 13, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848, -848, -848, + -848, -848, -848, -848, -848, -848, -848, -848 + }, + + { + 13, -849, -849, -849, -849, -849, -849, -849, 848, -849, + 83, 83, 83, 83, 83, 83, 83, -849, -849, -849, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -849 + + }, + + { + 13, -850, -850, -850, -850, -850, -850, -850, 82, -850, + 83, 83, 83, 83, 83, 83, 83, -850, -850, -850, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -850 + }, + + { + 13, 883, 883, 883, 883, 883, 883, 883, 884, 883, + 83, 83, 83, 83, 83, 83, 83, 883, 883, 883, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 885, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 883 + }, + + { + 13, -852, -852, -852, -852, -852, -852, -852, 82, -852, + 83, 83, 83, 83, 83, 83, 83, -852, -852, -852, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 886, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -852 + }, + + { + 13, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853, -853, -853, + -853, -853, -853, -853, -853, -853, -853, -853 + }, + + { + 13, -854, -854, -854, -854, -854, -854, -854, 853, -854, + 83, 83, 83, 83, 83, 83, 83, -854, -854, -854, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -854 + }, + + { + 13, -855, -855, -855, -855, -855, -855, -855, 82, -855, + 83, 83, 83, 83, 83, 83, 83, -855, -855, -855, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -855 + }, + + { + 13, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856, -856, -856, + -856, -856, -856, -856, -856, -856, -856, -856 + }, + + { + 13, -857, -857, -857, -857, -857, -857, -857, 856, -857, + + 83, 83, 83, 83, 83, 83, 83, -857, -857, -857, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -857 + }, + + { + 13, -858, -858, -858, -858, -858, -858, -858, 82, -858, + 83, 83, 83, 83, 83, 83, 83, -858, -858, -858, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -858 + }, + + { + 13, 887, 887, 887, 887, 887, 887, 887, 888, 887, + 83, 83, 83, 83, 83, 83, 83, 887, 887, 887, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 889, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 887 + + }, + + { + 13, -860, -860, -860, -860, -860, -860, -860, 82, -860, + 83, 83, 83, 83, 83, 83, 83, -860, -860, -860, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 890, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -860 + }, + + { + 13, 891, 891, 891, 891, 891, 891, 891, 892, 891, + 83, 83, 83, 83, 83, 83, 83, 891, 891, 891, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 893, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 891 + }, + + { + 13, -862, -862, -862, -862, -862, -862, -862, 82, -862, + 83, 83, 83, 83, 83, 83, 83, -862, -862, -862, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 894, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -862 + }, + + { + 13, -863, -863, -863, -863, -863, -863, -863, 82, -863, + 83, 83, 83, 83, 83, 83, 83, -863, -863, -863, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 895, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -863 + }, + + { + 13, -864, -864, -864, -864, -864, -864, -864, 82, -864, + 83, 83, 83, 83, 83, 83, 83, -864, -864, -864, + + 83, 83, 83, 83, 83, 83, 83, 83, 896, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -864 + }, + + { + 13, -865, -865, -865, -865, -865, -865, -865, 82, -865, + 83, 83, 83, 83, 83, 83, 83, -865, -865, -865, + 83, 83, 83, 83, 83, 83, 83, 83, 897, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -865 + }, + + { + 13, -866, -866, -866, -866, -866, -866, -866, 898, -866, + 83, 83, 83, 83, 83, 83, 83, -866, -866, -866, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 899, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -866 + }, + + { + 13, 900, 900, 900, 900, 900, 900, 900, 901, 900, + + 83, 83, 83, 83, 83, 83, 83, 900, 900, 900, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 902, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 900 + }, + + { + 13, -868, -868, -868, -868, -868, -868, -868, 82, -868, + 83, 83, 83, 83, 83, 83, 83, -868, -868, -868, + 83, 83, 83, 83, 83, 83, 83, 83, 903, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -868 + }, + + { + 13, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869, -869, -869, + -869, -869, -869, -869, -869, -869, -869, -869 + + }, + + { + 13, -870, -870, -870, -870, -870, -870, -870, 869, -870, + 83, 83, 83, 83, 83, 83, 83, -870, -870, -870, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -870 + }, + + { + 13, -871, -871, -871, -871, -871, -871, -871, 82, -871, + 83, 83, 83, 83, 83, 83, 83, -871, -871, -871, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -871 + }, + + { + 13, 904, 904, 904, 904, 904, 904, 904, 905, 904, + 83, 83, 83, 83, 83, 83, 83, 904, 904, 904, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 906, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 904 + }, + + { + 13, -873, -873, -873, -873, -873, -873, -873, 82, -873, + 83, 83, 83, 83, 83, 83, 83, -873, -873, -873, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 907, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -873 + }, + + { + 13, -874, -874, -874, -874, -874, -874, -874, 82, -874, + 83, 83, 83, 83, 83, 83, 83, -874, -874, -874, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 908, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -874 + }, + + { + 13, -875, -875, -875, -875, -875, -875, -875, 82, -875, + 83, 83, 83, 83, 83, 83, 83, -875, -875, -875, + 83, 83, 83, 83, 909, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -875 + }, + + { + 13, -876, -876, -876, -876, -876, -876, -876, 82, -876, + 83, 83, 83, 83, 83, 83, 83, -876, -876, -876, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -876 + }, + + { + 13, -877, -877, -877, -877, -877, -877, -877, 82, -877, + + 83, 83, 83, 83, 83, 83, 83, -877, -877, -877, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 910, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -877 + }, + + { + 13, -878, -878, -878, -878, -878, -878, -878, 82, -878, + 83, 83, 83, 83, 83, 83, 83, -878, -878, -878, + 911, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -878 + }, + + { + 13, -879, -879, -879, -879, -879, -879, -879, 82, -879, + 83, 83, 83, 83, 83, 83, 83, -879, -879, -879, + 83, 83, 83, 83, 83, 83, 912, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -879 + + }, + + { + 13, -880, -880, -880, -880, -880, -880, -880, 82, -880, + 83, 83, 83, 83, 83, 83, 83, -880, -880, -880, + 83, 83, 83, 83, 913, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -880 + }, + + { + 13, 914, 914, 914, 914, 914, 914, 914, 915, 914, + 83, 83, 83, 83, 83, 83, 83, 914, 914, 914, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 916, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 914 + }, + + { + 13, -882, -882, -882, -882, -882, -882, -882, 82, -882, + 83, 83, 83, 83, 83, 83, 83, -882, -882, -882, + 83, 83, 83, 83, 83, 83, 83, 83, 917, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -882 + }, + + { + 13, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883 + }, + + { + 13, -884, -884, -884, -884, -884, -884, -884, 883, -884, + 83, 83, 83, 83, 83, 83, 83, -884, -884, -884, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -884 + }, + + { + 13, -885, -885, -885, -885, -885, -885, -885, 82, -885, + 83, 83, 83, 83, 83, 83, 83, -885, -885, -885, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -885 + }, + + { + 13, -886, -886, -886, -886, -886, -886, -886, 82, -886, + 83, 83, 83, 83, 83, 83, 83, -886, -886, -886, + 83, 83, 83, 83, 83, 83, 83, 83, 918, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -886 + }, + + { + 13, -887, -887, -887, -887, -887, -887, -887, -887, -887, + + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887, -887, -887, + -887, -887, -887, -887, -887, -887, -887, -887 + }, + + { + 13, -888, -888, -888, -888, -888, -888, -888, 887, -888, + 83, 83, 83, 83, 83, 83, 83, -888, -888, -888, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -888 + }, + + { + 13, -889, -889, -889, -889, -889, -889, -889, 82, -889, + 83, 83, 83, 83, 83, 83, 83, -889, -889, -889, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -889 + + }, + + { + 13, -890, -890, -890, -890, -890, -890, -890, 82, -890, + 83, 83, 83, 83, 83, 83, 83, -890, -890, -890, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 919, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -890 + }, + + { + 13, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891, -891, -891, + -891, -891, -891, -891, -891, -891, -891, -891 + }, + + { + 13, -892, -892, -892, -892, -892, -892, -892, 891, -892, + 83, 83, 83, 83, 83, 83, 83, -892, -892, -892, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -892 + }, + + { + 13, -893, -893, -893, -893, -893, -893, -893, 82, -893, + 83, 83, 83, 83, 83, 83, 83, -893, -893, -893, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -893 + }, + + { + 13, -894, -894, -894, -894, -894, -894, -894, 82, -894, + 83, 83, 83, 83, 83, 83, 83, -894, -894, -894, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 920, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -894 + }, + + { + 13, -895, -895, -895, -895, -895, -895, -895, 82, -895, + 83, 83, 83, 83, 83, 83, 83, -895, -895, -895, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 93, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -895 + }, + + { + 13, -896, -896, -896, -896, -896, -896, -896, 82, -896, + 83, 83, 83, 83, 83, 83, 83, -896, -896, -896, + 921, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -896 + }, + + { + 13, -897, -897, -897, -897, -897, -897, -897, 82, -897, + + 83, 83, 83, 83, 83, 83, 83, -897, -897, -897, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 922, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -897 + }, + + { + 13, -898, -898, -898, -898, -898, -898, -898, -898, -898, + 83, 83, 83, 83, 83, 83, 83, -898, -898, -898, + 83, 83, 83, 83, 83, 83, 923, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 924, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -898 + }, + + { + 13, 925, 925, 925, 925, 925, 925, 925, 926, 925, + 83, 83, 83, 83, 83, 83, 83, 925, 925, 925, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 927, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 925 + + }, + + { + 13, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900, -900, -900, + -900, -900, -900, -900, -900, -900, -900, -900 + }, + + { + 13, -901, -901, -901, -901, -901, -901, -901, 900, -901, + 83, 83, 83, 83, 83, 83, 83, -901, -901, -901, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -901 + }, + + { + 13, -902, -902, -902, -902, -902, -902, -902, 82, -902, + 83, 83, 83, 83, 83, 83, 83, -902, -902, -902, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -902 + }, + + { + 13, -903, -903, -903, -903, -903, -903, -903, 82, -903, + 83, 83, 83, 83, 83, 83, 83, -903, -903, -903, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 928, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -903 + }, + + { + 13, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904, -904, -904, + -904, -904, -904, -904, -904, -904, -904, -904 + }, + + { + 13, -905, -905, -905, -905, -905, -905, -905, 904, -905, + 83, 83, 83, 83, 83, 83, 83, -905, -905, -905, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -905 + }, + + { + 13, -906, -906, -906, -906, -906, -906, -906, 82, -906, + 83, 83, 83, 83, 83, 83, 83, -906, -906, -906, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -906 + }, + + { + 13, -907, -907, -907, -907, -907, -907, -907, 82, -907, + + 83, 83, 83, 83, 83, 83, 83, -907, -907, -907, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 929, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -907 + }, + + { + 13, -908, -908, -908, -908, -908, -908, -908, 82, -908, + 83, 83, 83, 83, 83, 83, 83, -908, -908, -908, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 930, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -908 + }, + + { + 13, -909, -909, -909, -909, -909, -909, -909, 82, -909, + 83, 83, 83, 83, 83, 83, 83, -909, -909, -909, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 931, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -909 + + }, + + { + 13, 932, 932, 932, 932, 932, 932, 932, 933, 932, + 83, 83, 83, 83, 83, 83, 83, 932, 932, 932, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 934, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 932 + }, + + { + 13, -911, -911, -911, -911, -911, -911, -911, 82, -911, + 83, 83, 83, 83, 83, 83, 83, -911, -911, -911, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 935, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -911 + }, + + { + 13, -912, -912, -912, -912, -912, -912, -912, 82, -912, + 83, 83, 83, 83, 83, 83, 83, -912, -912, -912, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 936, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -912 + }, + + { + 13, -913, -913, -913, -913, -913, -913, -913, 82, -913, + 83, 83, 83, 83, 83, 83, 83, -913, -913, -913, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 937, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -913 + }, + + { + 13, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914, -914, -914, + -914, -914, -914, -914, -914, -914, -914, -914 + }, + + { + 13, -915, -915, -915, -915, -915, -915, -915, 914, -915, + 83, 83, 83, 83, 83, 83, 83, -915, -915, -915, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -915 + }, + + { + 13, -916, -916, -916, -916, -916, -916, -916, 82, -916, + 83, 83, 83, 83, 83, 83, 83, -916, -916, -916, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -916 + }, + + { + 13, -917, -917, -917, -917, -917, -917, -917, 82, -917, + + 83, 83, 83, 83, 83, 83, 83, -917, -917, -917, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 938, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -917 + }, + + { + 13, -918, -918, -918, -918, -918, -918, -918, 82, -918, + 83, 83, 83, 83, 83, 83, 83, -918, -918, -918, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 939, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -918 + }, + + { + 13, 940, 940, 940, 940, 940, 940, 940, 941, 940, + 83, 83, 83, 83, 83, 83, 83, 940, 940, 940, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 942, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 940 + + }, + + { + 13, -920, -920, -920, -920, -920, -920, -920, 82, -920, + 83, 83, 83, 83, 83, 83, 83, -920, -920, -920, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 943, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -920 + }, + + { + 13, -921, -921, -921, -921, -921, -921, -921, 82, -921, + 83, 83, 83, 83, 83, 83, 83, -921, -921, -921, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 944, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -921 + }, + + { + 13, -922, -922, -922, -922, -922, -922, -922, 82, -922, + 83, 83, 83, 83, 83, 83, 83, -922, -922, -922, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 945, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -922 + }, + + { + 13, -923, -923, -923, -923, -923, -923, -923, 82, -923, + 83, 83, 83, 83, 83, 83, 83, -923, -923, -923, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 946, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -923 + }, + + { + 13, -924, -924, -924, -924, -924, -924, -924, 82, -924, + 83, 83, 83, 83, 83, 83, 83, -924, -924, -924, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 947, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -924 + }, + + { + 13, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + + -925, -925, -925, -925, -925, -925, -925, -925, -925, -925, + -925, -925, -925, -925, -925, -925, -925, -925 + }, + + { + 13, -926, -926, -926, -926, -926, -926, -926, 925, -926, + 83, 83, 83, 83, 83, 83, 83, -926, -926, -926, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -926 + }, + + { + 13, -927, -927, -927, -927, -927, -927, -927, 82, -927, + + 83, 83, 83, 83, 83, 83, 83, -927, -927, -927, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -927 + }, + + { + 13, -928, -928, -928, -928, -928, -928, -928, 82, -928, + 83, 83, 83, 83, 83, 83, 83, -928, -928, -928, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 948, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -928 + }, + + { + 13, -929, -929, -929, -929, -929, -929, -929, 82, -929, + 83, 83, 83, 83, 83, 83, 83, -929, -929, -929, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 949, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -929 + + }, + + { + 13, 950, 950, 950, 950, 950, 950, 950, 951, 950, + 83, 83, 83, 83, 83, 83, 83, 950, 950, 950, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 952, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 950 + }, + + { + 13, 953, 953, 953, 953, 953, 953, 953, 954, 953, + 83, 83, 83, 83, 83, 83, 83, 953, 953, 953, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 955, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 953 + }, + + { + 13, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + -932, -932, -932, -932, -932, -932, -932, -932, -932, -932, + + -932, -932, -932, -932, -932, -932, -932, -932 + }, + + { + 13, -933, -933, -933, -933, -933, -933, -933, 932, -933, + 83, 83, 83, 83, 83, 83, 83, -933, -933, -933, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -933 + }, + + { + 13, -934, -934, -934, -934, -934, -934, -934, 82, -934, + 83, 83, 83, 83, 83, 83, 83, -934, -934, -934, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -934 + }, + + { + 13, -935, -935, -935, -935, -935, -935, -935, 82, -935, + 83, 83, 83, 83, 83, 83, 83, -935, -935, -935, + 83, 83, 83, 83, 956, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -935 + }, + + { + 13, -936, -936, -936, -936, -936, -936, -936, 82, -936, + 83, 83, 83, 83, 83, 83, 83, -936, -936, -936, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 957, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -936 + }, + + { + 13, -937, -937, -937, -937, -937, -937, -937, 82, -937, + + 83, 83, 83, 83, 83, 83, 83, -937, -937, -937, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 958, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -937 + }, + + { + 13, -938, -938, -938, -938, -938, -938, -938, 82, -938, + 83, 83, 83, 83, 83, 83, 83, -938, -938, -938, + 83, 83, 83, 83, 83, 83, 83, 83, 959, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -938 + }, + + { + 13, -939, -939, -939, -939, -939, -939, -939, 82, -939, + 83, 83, 83, 83, 83, 83, 83, -939, -939, -939, + 83, 83, 83, 83, 960, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -939 + + }, + + { + 13, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940, -940, -940, + -940, -940, -940, -940, -940, -940, -940, -940 + }, + + { + 13, -941, -941, -941, -941, -941, -941, -941, 940, -941, + 83, 83, 83, 83, 83, 83, 83, -941, -941, -941, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -941 + }, + + { + 13, -942, -942, -942, -942, -942, -942, -942, 82, -942, + 83, 83, 83, 83, 83, 83, 83, -942, -942, -942, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -942 + }, + + { + 13, -943, -943, -943, -943, -943, -943, -943, 82, -943, + 83, 83, 83, 83, 83, 83, 83, -943, -943, -943, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 961, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -943 + }, + + { + 13, -944, -944, -944, -944, -944, -944, -944, 82, -944, + 83, 83, 83, 83, 83, 83, 83, -944, -944, -944, + + 83, 83, 962, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -944 + }, + + { + 13, 963, 963, 963, 963, 963, 963, 963, 964, 963, + 83, 83, 83, 83, 83, 83, 83, 963, 963, 963, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 965, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 963 + }, + + { + 13, -946, -946, -946, -946, -946, -946, -946, 82, -946, + 83, 83, 83, 83, 83, 83, 83, -946, -946, -946, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 966, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -946 + }, + + { + 13, -947, -947, -947, -947, -947, -947, -947, 82, -947, + + 83, 83, 83, 83, 83, 83, 83, -947, -947, -947, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 967, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -947 + }, + + { + 13, 968, 968, 968, 968, 968, 968, 968, 969, 968, + 83, 83, 83, 83, 83, 83, 83, 968, 968, 968, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 970, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 968 + }, + + { + 13, 971, 971, 971, 971, 971, 971, 971, 972, 971, + 83, 83, 83, 83, 83, 83, 83, 971, 971, 971, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 973, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 971 + + }, + + { + 13, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950, -950, -950, + -950, -950, -950, -950, -950, -950, -950, -950 + }, + + { + 13, -951, -951, -951, -951, -951, -951, -951, 950, -951, + 83, 83, 83, 83, 83, 83, 83, -951, -951, -951, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -951 + }, + + { + 13, -952, -952, -952, -952, -952, -952, -952, 82, -952, + 83, 83, 83, 83, 83, 83, 83, -952, -952, -952, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -952 + }, + + { + 13, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953, -953, -953, + -953, -953, -953, -953, -953, -953, -953, -953 + }, + + { + 13, -954, -954, -954, -954, -954, -954, -954, 953, -954, + 83, 83, 83, 83, 83, 83, 83, -954, -954, -954, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -954 + }, + + { + 13, -955, -955, -955, -955, -955, -955, -955, 82, -955, + 83, 83, 83, 83, 83, 83, 83, -955, -955, -955, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -955 + }, + + { + 13, 974, 974, 974, 974, 974, 974, 974, 975, 974, + 83, 83, 83, 83, 83, 83, 83, 974, 974, 974, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 976, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 974 + }, + + { + 13, -957, -957, -957, -957, -957, -957, -957, 82, -957, + + 83, 83, 83, 83, 83, 83, 83, -957, -957, -957, + 83, 83, 83, 83, 83, 83, 83, 83, 977, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -957 + }, + + { + 13, -958, -958, -958, -958, -958, -958, -958, 82, -958, + 83, 83, 83, 83, 83, 83, 83, -958, -958, -958, + 83, 83, 83, 83, 83, 83, 83, 83, 978, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -958 + }, + + { + 13, -959, -959, -959, -959, -959, -959, -959, 82, -959, + 83, 83, 83, 83, 83, 83, 83, -959, -959, -959, + 83, 83, 83, 83, 979, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -959 + + }, + + { + 13, -960, -960, -960, -960, -960, -960, -960, 82, -960, + 83, 83, 83, 83, 83, 83, 83, -960, -960, -960, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 980, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -960 + }, + + { + 13, 981, 981, 981, 981, 981, 981, 981, 982, 981, + 83, 83, 83, 83, 83, 83, 83, 981, 981, 981, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 983, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 981 + }, + + { + 13, -962, -962, -962, -962, -962, -962, -962, 82, -962, + 83, 83, 83, 83, 83, 83, 83, -962, -962, -962, + 83, 83, 83, 83, 984, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -962 + }, + + { + 13, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963, -963, -963, + -963, -963, -963, -963, -963, -963, -963, -963 + }, + + { + 13, -964, -964, -964, -964, -964, -964, -964, 963, -964, + 83, 83, 83, 83, 83, 83, 83, -964, -964, -964, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -964 + }, + + { + 13, -965, -965, -965, -965, -965, -965, -965, 82, -965, + 83, 83, 83, 83, 83, 83, 83, -965, -965, -965, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -965 + }, + + { + 13, -966, -966, -966, -966, -966, -966, -966, 82, -966, + 83, 83, 83, 83, 83, 83, 83, -966, -966, -966, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 985, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -966 + }, + + { + 13, -967, -967, -967, -967, -967, -967, -967, 82, -967, + + 83, 83, 83, 83, 83, 83, 83, -967, -967, -967, + 83, 83, 83, 83, 986, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -967 + }, + + { + 13, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968, -968, -968, + -968, -968, -968, -968, -968, -968, -968, -968 + }, + + { + 13, -969, -969, -969, -969, -969, -969, -969, 968, -969, + 83, 83, 83, 83, 83, 83, 83, -969, -969, -969, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -969 + + }, + + { + 13, -970, -970, -970, -970, -970, -970, -970, 82, -970, + 83, 83, 83, 83, 83, 83, 83, -970, -970, -970, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -970 + }, + + { + 13, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971, -971, -971, + -971, -971, -971, -971, -971, -971, -971, -971 + }, + + { + 13, -972, -972, -972, -972, -972, -972, -972, 971, -972, + 83, 83, 83, 83, 83, 83, 83, -972, -972, -972, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -972 + }, + + { + 13, -973, -973, -973, -973, -973, -973, -973, 82, -973, + 83, 83, 83, 83, 83, 83, 83, -973, -973, -973, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -973 + }, + + { + 13, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, + -974, -974, -974, -974, -974, -974, -974, -974 + }, + + { + 13, -975, -975, -975, -975, -975, -975, -975, 974, -975, + 83, 83, 83, 83, 83, 83, 83, -975, -975, -975, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -975 + }, + + { + 13, -976, -976, -976, -976, -976, -976, -976, 82, -976, + 83, 83, 83, 83, 83, 83, 83, -976, -976, -976, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -976 + }, + + { + 13, -977, -977, -977, -977, -977, -977, -977, 82, -977, + + 83, 83, 83, 83, 83, 83, 83, -977, -977, -977, + 83, 83, 83, 83, 987, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -977 + }, + + { + 13, -978, -978, -978, -978, -978, -978, -978, 82, -978, + 83, 83, 83, 83, 83, 83, 83, -978, -978, -978, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 988, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -978 + }, + + { + 13, -979, -979, -979, -979, -979, -979, -979, 82, -979, + 83, 83, 83, 83, 83, 83, 83, -979, -979, -979, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 989, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -979 + + }, + + { + 13, 990, 990, 990, 990, 990, 990, 990, 991, 990, + 83, 83, 83, 83, 83, 83, 83, 990, 990, 990, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 992, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 990 + }, + + { + 13, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981, -981, -981, + -981, -981, -981, -981, -981, -981, -981, -981 + }, + + { + 13, -982, -982, -982, -982, -982, -982, -982, 981, -982, + 83, 83, 83, 83, 83, 83, 83, -982, -982, -982, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -982 + }, + + { + 13, -983, -983, -983, -983, -983, -983, -983, 82, -983, + 83, 83, 83, 83, 83, 83, 83, -983, -983, -983, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -983 + }, + + { + 13, 993, 993, 993, 993, 993, 993, 993, 994, 993, + 83, 83, 83, 83, 83, 83, 83, 993, 993, 993, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 995, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 993 + }, + + { + 13, -985, -985, -985, -985, -985, -985, -985, 82, -985, + 83, 83, 83, 83, 83, 83, 83, -985, -985, -985, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 996, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -985 + }, + + { + 13, 997, 997, 997, 997, 997, 997, 997, 998, 997, + 83, 83, 83, 83, 83, 83, 83, 997, 997, 997, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 999, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 997 + }, + + { + 13, -987, -987, -987, -987, -987, -987, -987, 82, -987, + + 83, 83, 83, 83, 83, 83, 83, -987, -987, -987, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 1000, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -987 + }, + + { + 13, -988, -988, -988, -988, -988, -988, -988, 82, -988, + 83, 83, 83, 83, 83, 83, 83, -988, -988, -988, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 1001, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -988 + }, + + { + 13, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1002, + 83, 83, 83, 83, 83, 83, 83, 1002, 1002, 1002, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 1004, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 1002 + + }, + + { + 13, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990, -990, -990, + -990, -990, -990, -990, -990, -990, -990, -990 + }, + + { + 13, -991, -991, -991, -991, -991, -991, -991, 990, -991, + 83, 83, 83, 83, 83, 83, 83, -991, -991, -991, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -991 + }, + + { + 13, -992, -992, -992, -992, -992, -992, -992, 82, -992, + 83, 83, 83, 83, 83, 83, 83, -992, -992, -992, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, -992 + }, + + { + 13, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993, -993, -993, + -993, -993, -993, -993, -993, -993, -993, -993 + }, + + { + 13, -994, -994, -994, -994, -994, -994, -994, 993, -994, + 83, 83, 83, 83, 83, 83, 83, -994, -994, -994, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -994 + }, + + { + 13, -995, -995, -995, -995, -995, -995, -995, 82, -995, + 83, 83, 83, 83, 83, 83, 83, -995, -995, -995, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -995 + }, + + { + 13, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1006, 1005, + 83, 83, 83, 83, 83, 83, 83, 1005, 1005, 1005, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 1007, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 1005 + }, + + { + 13, -997, -997, -997, -997, -997, -997, -997, -997, -997, + + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, + -997, -997, -997, -997, -997, -997, -997, -997 + }, + + { + 13, -998, -998, -998, -998, -998, -998, -998, 997, -998, + 83, 83, 83, 83, 83, 83, 83, -998, -998, -998, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -998 + }, + + { + 13, -999, -999, -999, -999, -999, -999, -999, 82, -999, + 83, 83, 83, 83, 83, 83, 83, -999, -999, -999, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, -999 + + }, + + { + 13, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1008, + 83, 83, 83, 83, 83, 83, 83, 1008, 1008, 1008, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 1010, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 1008 + }, + + { + 13, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1012, 1011, + 83, 83, 83, 83, 83, 83, 83, 1011, 1011, 1011, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 1013, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 1011 + }, + + { + 13,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002, + + -1002,-1002,-1002,-1002,-1002,-1002,-1002,-1002 + }, + + { + 13,-1003,-1003,-1003,-1003,-1003,-1003,-1003, 1002,-1003, + 83, 83, 83, 83, 83, 83, 83,-1003,-1003,-1003, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1003 + }, + + { + 13,-1004,-1004,-1004,-1004,-1004,-1004,-1004, 82,-1004, + 83, 83, 83, 83, 83, 83, 83,-1004,-1004,-1004, + + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1004 + }, + + { + 13,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005, + -1005,-1005,-1005,-1005,-1005,-1005,-1005,-1005 + }, + + { + 13,-1006,-1006,-1006,-1006,-1006,-1006,-1006, 1005,-1006, + 83, 83, 83, 83, 83, 83, 83,-1006,-1006,-1006, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1006 + }, + + { + 13,-1007,-1007,-1007,-1007,-1007,-1007,-1007, 82,-1007, + + 83, 83, 83, 83, 83, 83, 83,-1007,-1007,-1007, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1007 + }, + + { + 13,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008, + -1008,-1008,-1008,-1008,-1008,-1008,-1008,-1008 + }, + + { + 13,-1009,-1009,-1009,-1009,-1009,-1009,-1009, 1008,-1009, + 83, 83, 83, 83, 83, 83, 83,-1009,-1009,-1009, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1009 + + }, + + { + 13,-1010,-1010,-1010,-1010,-1010,-1010,-1010, 82,-1010, + 83, 83, 83, 83, 83, 83, 83,-1010,-1010,-1010, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1010 + }, + + { + 13,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011, + -1011,-1011,-1011,-1011,-1011,-1011,-1011,-1011 + }, + + { + 13,-1012,-1012,-1012,-1012,-1012,-1012,-1012, 1011,-1012, + 83, 83, 83, 83, 83, 83, 83,-1012,-1012,-1012, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + + 83, 83, 83, 83, 83, 83, 83,-1012 + }, + + { + 13,-1013,-1013,-1013,-1013,-1013,-1013,-1013, 82,-1013, + 83, 83, 83, 83, 83, 83, 83,-1013,-1013,-1013, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83,-1013 + }, + + } ; + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up smitext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + smileng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 115 +#define YY_END_OF_BUFFER 116 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[1014] = + { 0, + 22, 22, 0, 0, 0, 0, 7, 7, 17, 17, + 0, 0, 116, 114, 22, 23, 23, 114, 114, 19, + 19, 19, 114, 114, 19, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 106, 3, 2, 2, 3, + 11, 10, 10, 12, 7, 6, 6, 8, 17, 16, + 16, 18, 114, 113, 113, 22, 23, 0, 112, 0, + 0, 0, 13, 0, 0, 20, 108, 107, 107, 0, + 0, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 106, 106, 2, 0, 10, 7, 6, 17, 16, + 14, 0, 113, 113, 113, 113, 110, 111, 0, 109, + 0, 21, 105, 105, 105, 105, 105, 105, 105, 105, + 103, 105, 103, 105, 105, 105, 105, 105, 105, 105, + 105, 38, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 71, 105, + 71, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 0, 0, 105, 105, 105, 105, 105, 105, 105, + 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 38, 105, 38, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 4, 0, 15, 15, 105, 105, 105, 105, 105, + 105, 29, 105, 29, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 41, 105, 41, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 1, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 85, 105, 85, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 15, 105, 105, 105, 105, 28, 105, 28, 105, 9, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 42, 105, 42, 105, + 105, 105, 105, 105, 105, 49, 105, 49, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 70, 105, 70, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 95, + 105, 95, 105, 105, 99, 105, 99, 105, 105, 105, + + 24, 105, 24, 105, 105, 105, 105, 105, 105, 105, + 105, 35, 105, 35, 105, 105, 105, 105, 105, 5, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 59, 105, 59, + 105, 65, 105, 105, 65, 105, 105, 73, 105, 73, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 86, 105, 86, 87, 105, 87, 105, 105, + 90, 105, 90, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 40, 105, 40, 43, 105, + + 43, 105, 105, 46, 105, 46, 47, 105, 47, 105, + 105, 51, 105, 51, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 69, 105, + 69, 105, 105, 105, 105, 105, 105, 79, 105, 79, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 27, + 105, 27, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 45, 105, 45, 48, 105, 48, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 83, 105, 83, 84, 105, 84, + 105, 89, 105, 89, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 32, 105, + 32, 33, 105, 33, 105, 105, 105, 105, 105, 105, + 52, 105, 52, 53, 105, 53, 54, 105, 54, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 76, 105, 76, 105, 105, 105, 105, + 105, 82, 105, 82, 105, 105, 93, 105, 93, 92, + 105, 92, 105, 96, 105, 96, 105, 105, 100, 105, + 100, 101, 105, 101, 105, 105, 105, 105, 105, 105, + + 105, 105, 39, 105, 39, 44, 105, 44, 105, 105, + 105, 57, 105, 57, 58, 105, 58, 105, 105, 105, + 105, 105, 105, 105, 105, 74, 105, 74, 105, 105, + 105, 105, 105, 105, 105, 105, 94, 105, 94, 97, + 105, 97, 98, 105, 98, 105, 105, 26, 105, 26, + 105, 105, 34, 105, 34, 36, 105, 36, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 68, 105, + 68, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 30, 105, 30, 105, 37, 105, 37, 105, + 55, 105, 55, 105, 105, 105, 105, 105, 105, 66, + + 105, 66, 105, 72, 105, 72, 105, 105, 105, 105, + 105, 105, 105, 102, 105, 102, 105, 105, 105, 105, + 105, 105, 105, 105, 64, 105, 64, 105, 105, 105, + 105, 80, 105, 80, 105, 105, 105, 105, 105, 50, + 105, 50, 105, 105, 105, 105, 105, 105, 105, 77, + 105, 77, 78, 105, 78, 105, 105, 105, 105, 105, + 105, 105, 61, 105, 61, 105, 105, 67, 105, 67, + 75, 105, 75, 81, 105, 81, 105, 105, 105, 105, + 56, 105, 56, 105, 105, 105, 105, 105, 105, 31, + 105, 31, 60, 105, 60, 105, 63, 105, 63, 105, + + 105, 25, 105, 25, 62, 105, 62, 88, 105, 88, + 91, 105, 91 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 5, 1, 1, 1, 1, 6, 7, + 7, 1, 1, 7, 8, 9, 1, 10, 11, 12, + 13, 14, 15, 16, 15, 15, 15, 17, 18, 1, + 19, 1, 1, 1, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 7, 1, 7, 1, 46, 1, 47, 48, 49, 50, + + 51, 52, 53, 54, 55, 56, 57, 56, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 56, 56, 56, + 56, 56, 7, 7, 67, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int smi_flex_debug; +int smi_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *smitext; +#line 1 "scanner-smi.l" +/* + * scanner-smi.l -- + * + * Lexical rules for scanning the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-smi.l 6539 2007-02-01 08:23:54Z strauss $ + */ +#line 17 "scanner-smi.l" + +#include + + +#include +#include +#include +#include + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "parser-smi.h" +#include "parser-smi.tab.h" +#include "scanner-smi.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* we need a reentrant parser, so smilex gets arguments */ +#if 0 +#define YY_DECL int smilex YY_PROTO((YYSTYPE *lvalp, void *parser)) +#else +#define YY_DECL int smilex(YYSTYPE *lvalp,void *parser) +#endif + + +#define thisParser (*(Parser *) parser) + + +#define MAX_UNSIGNED64 "18446744073709551615" +#define MIN_UNSIGNED64 0 +#define MAX_UNSIGNED32 4294967295 +#define MIN_UNSIGNED32 0 +#define MAX_INTEGER32 2147483647 +#define MIN_INTEGER32 -2147483648 + + + +/* + * This makes the usual notation when referencing attributes also + * work with our pure parser code. + */ +#define yylval (*lvalp) + + +static YY_BUFFER_STATE yybuffer[MAX_LEX_DEPTH]; + +static int lexDepth = 0; + + +int +smiEnterLexRecursion(file) + FILE *file; +{ + if (lexDepth >= MAX_LEX_DEPTH) { + return (-1); + } + yybuffer[lexDepth++] = YY_CURRENT_BUFFER; + smi_switch_to_buffer(smi_create_buffer(file,YY_BUF_SIZE)); + return (lexDepth); +} + + + +void +smiLeaveLexRecursion() +{ + smi_delete_buffer(YY_CURRENT_BUFFER); + smi_switch_to_buffer(yybuffer[--lexDepth]); +} + + + +/* + * Lex pattern definitions. + */ +/* + * Lex state definitions. + */ + + + + + +#line 11498 "" + +#define INITIAL 0 +#define Macro 1 +#define Choice 2 +#define Exports 3 +#define Comment 4 +#define Skipline 5 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int smiwrap (void ); +#else +extern int smiwrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( smitext, smileng, 1, smiout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( smiin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( smiin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, smiin))==0 && ferror(smiin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(smiin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int smilex (void); + +#define YY_DECL int smilex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after smitext and smileng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 121 "scanner-smi.l" + + + + + /* + * Lex rules. + */ + + /* + * Lex rules for skipping MACRO. + */ + +#line 11669 "" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! smiin ) + smiin = stdin; + + if ( ! smiout ) + smiout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + smiensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + smi_create_buffer(smiin,YY_BUF_SIZE ); + } + + smi_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of smitext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + { + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + + ++yy_cp; + } + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos) + 1; + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 133 "scanner-smi.l" +{ + BEGIN(Macro); + yylval.id = smitext; + return MACRO; +} + YY_BREAK +case 2: +/* rule 2 can match eol */ +YY_RULE_SETUP +#line 139 "scanner-smi.l" +{ + thisParser.line++; +} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 143 "scanner-smi.l" +{ +} + YY_BREAK +case 4: +/* rule 4 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 3; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 146 "scanner-smi.l" +{ + BEGIN(INITIAL); + yylval.id = smitext; + return END; +} + YY_BREAK +/* + * Lex rules for skipping EXPORTS. + */ +case 5: +YY_RULE_SETUP +#line 156 "scanner-smi.l" +{ + BEGIN(Exports); + yylval.id = smitext; + return EXPORTS; +} + YY_BREAK +case 6: +/* rule 6 can match eol */ +YY_RULE_SETUP +#line 162 "scanner-smi.l" +{ + thisParser.line++; +} + YY_BREAK +case 7: +/* rule 7 can match eol */ +YY_RULE_SETUP +#line 166 "scanner-smi.l" +{ +} + YY_BREAK +case 8: +YY_RULE_SETUP +#line 169 "scanner-smi.l" +{ + BEGIN(INITIAL); + return smitext[0]; +} + YY_BREAK +/* + * Lex rules for skipping CHOICE. + */ +case 9: +YY_RULE_SETUP +#line 178 "scanner-smi.l" +{ + BEGIN(Choice); + yylval.id = smitext; + return CHOICE; +} + YY_BREAK +case 10: +/* rule 10 can match eol */ +YY_RULE_SETUP +#line 184 "scanner-smi.l" +{ + thisParser.line++; +} + YY_BREAK +case 11: +/* rule 11 can match eol */ +YY_RULE_SETUP +#line 188 "scanner-smi.l" +{ +} + YY_BREAK +case 12: +YY_RULE_SETUP +#line 191 "scanner-smi.l" +{ + BEGIN(INITIAL); + return smitext[0]; +} + YY_BREAK +/* + * Lex rules for comments. + */ +case 13: +YY_RULE_SETUP +#line 200 "scanner-smi.l" +{ + BEGIN(Comment); +} + YY_BREAK +case 14: +YY_RULE_SETUP +#line 204 "scanner-smi.l" +{ + thisParser.lcline = thisParser.line; + BEGIN(INITIAL); +} + YY_BREAK +/* Special-case a common error (dashed seperator lines with + * 4n+1 dashes, meaning a single dash outside the comment). + * Print the "lexically unexpected" error that you would normally + * get, and stick in the comment FYI also. + */ +case 15: +/* rule 15 can match eol */ +YY_RULE_SETUP +#line 214 "scanner-smi.l" +{ + smiPrintError(parser, ERR_COMMENT_TERMINATES); + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + thisParser.line++; + BEGIN(INITIAL); +} + YY_BREAK +case 16: +/* rule 16 can match eol */ +YY_RULE_SETUP +#line 221 "scanner-smi.l" +{ + thisParser.line++; + BEGIN(INITIAL); +} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 226 "scanner-smi.l" +{ +} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 228 "scanner-smi.l" +{ +} + YY_BREAK +/* + * Lex rules for some special tokens. + */ +case 19: +YY_RULE_SETUP +#line 235 "scanner-smi.l" +{ + return smitext[0]; +} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 239 "scanner-smi.l" +{ + return DOT_DOT; +} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 243 "scanner-smi.l" +{ + return COLON_COLON_EQUAL; +} + YY_BREAK +/* + * Lex rules for white space. + */ +case 22: +YY_RULE_SETUP +#line 251 "scanner-smi.l" +{ +} + YY_BREAK +case 23: +/* rule 23 can match eol */ +YY_RULE_SETUP +#line 254 "scanner-smi.l" +{ + thisParser.line++; +} + YY_BREAK +/* + * Lex rules for known keywords. + */ +/* SMI(ng) specific */ +case 24: +/* rule 24 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 263 "scanner-smi.l" +{ + yylval.id = smitext; + return ACCESS; +} + YY_BREAK +/* SMI(ng) specific */ +case 25: +/* rule 25 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 18; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 269 "scanner-smi.l" +{ + yylval.id = smitext; + return AGENT_CAPABILITIES; +} + YY_BREAK +case 26: +/* rule 26 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 274 "scanner-smi.l" +{ + yylval.id = smitext; + return APPLICATION; +} + YY_BREAK +case 27: +/* rule 27 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 279 "scanner-smi.l" +{ + yylval.id = smitext; + return AUGMENTS; +} + YY_BREAK +case 28: +/* rule 28 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 284 "scanner-smi.l" +{ + yylval.id = smitext; + return BEGIN_; +} + YY_BREAK +case 29: +/* rule 29 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 289 "scanner-smi.l" +{ + yylval.id = smitext; + return BITS; +} + YY_BREAK +case 30: +/* rule 30 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 294 "scanner-smi.l" +{ + yylval.id = smitext; + return CONTACT_INFO; +} + YY_BREAK +/* SMI(ng) specific */ +case 31: +/* rule 31 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 17; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 300 "scanner-smi.l" +{ + yylval.id = smitext; + return CREATION_REQUIRES; +} + YY_BREAK +/* SMI(ng) specific */ +case 32: +/* rule 32 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 306 "scanner-smi.l" +{ + yylval.id = smitext; + return COUNTER32; +} + YY_BREAK +/* SMI(ng) specific */ +case 33: +/* rule 33 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 312 "scanner-smi.l" +{ + yylval.id = smitext; + return COUNTER64; +} + YY_BREAK +/* SMI(ng) specific */ +case 34: +/* rule 34 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 318 "scanner-smi.l" +{ + yylval.id = smitext; + return DEFINITIONS; +} + YY_BREAK +case 35: +/* rule 35 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 323 "scanner-smi.l" +{ + yylval.id = smitext; + return DEFVAL; +} + YY_BREAK +case 36: +/* rule 36 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 328 "scanner-smi.l" +{ + yylval.id = smitext; + return DESCRIPTION; +} + YY_BREAK +case 37: +/* rule 37 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 333 "scanner-smi.l" +{ + yylval.id = smitext; + return DISPLAY_HINT; +} + YY_BREAK +case 38: +/* rule 38 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 3; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 338 "scanner-smi.l" +{ + yylval.id = smitext; + return END; +} + YY_BREAK +/* SMI(ng) specific */ +case 39: +/* rule 39 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 344 "scanner-smi.l" +{ + yylval.id = smitext; + return ENTERPRISE; +} + YY_BREAK +/* SPPI specific */ +case 40: +/* rule 40 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 350 "scanner-smi.l" +{ + yylval.id = smitext; + return EXTENDS; +} + YY_BREAK +case 41: +/* rule 41 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 355 "scanner-smi.l" +{ + yylval.id = smitext; + return FROM; +} + YY_BREAK +case 42: +/* rule 42 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 360 "scanner-smi.l" +{ + yylval.id = smitext; + return GROUP; +} + YY_BREAK +/* SMI(ng) specific */ +case 43: +/* rule 43 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 366 "scanner-smi.l" +{ + yylval.id = smitext; + return GAUGE32; +} + YY_BREAK +case 44: +/* rule 44 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 371 "scanner-smi.l" +{ + yylval.id = smitext; + return IDENTIFIER; +} + YY_BREAK +case 45: +/* rule 45 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 376 "scanner-smi.l" +{ + yylval.id = smitext; + return IMPLICIT; +} + YY_BREAK +case 46: +/* rule 46 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 381 "scanner-smi.l" +{ + yylval.id = smitext; + return IMPLIED; +} + YY_BREAK +case 47: +/* rule 47 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 386 "scanner-smi.l" +{ + yylval.id = smitext; + return IMPORTS; +} + YY_BREAK +/* SMI(ng) specific */ +case 48: +/* rule 48 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 392 "scanner-smi.l" +{ + yylval.id = smitext; + return INCLUDES; +} + YY_BREAK +case 49: +/* rule 49 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 397 "scanner-smi.l" +{ + yylval.id = smitext; + return INDEX; +} + YY_BREAK +/* SPPI specific */ +case 50: +/* rule 50 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 14; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 403 "scanner-smi.l" +{ + yylval.id = smitext; + return INSTALL_ERRORS; +} + YY_BREAK +case 51: +/* rule 51 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 408 "scanner-smi.l" +{ + yylval.id = smitext; + return INTEGER; +} + YY_BREAK +case 52: +/* rule 52 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 413 "scanner-smi.l" +{ + yylval.id = smitext; + return INTEGER32; +} + YY_BREAK +/* SPPI specific */ +case 53: +/* rule 53 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 419 "scanner-smi.l" +{ + yylval.id = smitext; + return INTEGER64; +} + YY_BREAK +case 54: +/* rule 54 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 424 "scanner-smi.l" +{ + yylval.id = smitext; + return IPADDRESS; +} + YY_BREAK +case 55: +/* rule 55 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 429 "scanner-smi.l" +{ + yylval.id = smitext; + return LAST_UPDATED; +} + YY_BREAK +case 56: +/* rule 56 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 16; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 434 "scanner-smi.l" +{ + yylval.id = smitext; + return MANDATORY_GROUPS; +} + YY_BREAK +/* SMI(ng) specific */ +case 57: +/* rule 57 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 440 "scanner-smi.l" +{ + yylval.id = smitext; + return MAX_ACCESS; +} + YY_BREAK +/* SMI(ng) specific */ +case 58: +/* rule 58 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 446 "scanner-smi.l" +{ + yylval.id = smitext; + return MIN_ACCESS; +} + YY_BREAK +case 59: +/* rule 59 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 451 "scanner-smi.l" +{ + yylval.id = smitext; + return MODULE; +} + YY_BREAK +case 60: +/* rule 60 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 17; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 456 "scanner-smi.l" +{ + yylval.id = smitext; + return MODULE_COMPLIANCE; +} + YY_BREAK +case 61: +/* rule 61 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 15; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 461 "scanner-smi.l" +{ + yylval.id = smitext; + return MODULE_IDENTITY; +} + YY_BREAK +/* SMI(ng) specific */ +case 62: +/* rule 62 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 18; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 467 "scanner-smi.l" +{ + yylval.id = smitext; + return NOTIFICATION_GROUP; +} + YY_BREAK +/* SMI(ng) specific */ +case 63: +/* rule 63 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 17; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 473 "scanner-smi.l" +{ + yylval.id = smitext; + return NOTIFICATION_TYPE; +} + YY_BREAK +/* SMI(ng) specific */ +case 64: +/* rule 64 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 13; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 479 "scanner-smi.l" +{ + yylval.id = smitext; + return NOTIFICATIONS; +} + YY_BREAK +case 65: +/* rule 65 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 484 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECT; +} + YY_BREAK +case 66: +/* rule 66 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 489 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECT_GROUP; +} + YY_BREAK +case 67: +/* rule 67 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 15; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 494 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECT_IDENTITY; +} + YY_BREAK +case 68: +/* rule 68 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 499 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECT_TYPE; +} + YY_BREAK +case 69: +/* rule 69 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 504 "scanner-smi.l" +{ + yylval.id = smitext; + return OBJECTS; +} + YY_BREAK +case 70: +/* rule 70 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 509 "scanner-smi.l" +{ + yylval.id = smitext; + return OCTET; +} + YY_BREAK +case 71: +/* rule 71 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 2; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 514 "scanner-smi.l" +{ + yylval.id = smitext; + return OF; +} + YY_BREAK +case 72: +/* rule 72 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 519 "scanner-smi.l" +{ + yylval.id = smitext; + return ORGANIZATION; +} + YY_BREAK +case 73: +/* rule 73 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 524 "scanner-smi.l" +{ + yylval.id = smitext; + return OPAQUE; +} + YY_BREAK +/* SPPI specific */ +case 74: +/* rule 74 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 530 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_ACCESS; +} + YY_BREAK +/* SPPI specific */ +case 75: +/* rule 75 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 15; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 536 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_DEFINITIONS; +} + YY_BREAK +/* SPPI specific */ +case 76: +/* rule 76 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 542 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_INDEX; +} + YY_BREAK +/* SPPI specific */ +case 77: +/* rule 77 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 14; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 548 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_MIN_ACCESS; +} + YY_BREAK +/* SPPI specific */ +case 78: +/* rule 78 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 14; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 554 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_REFERENCES; +} + YY_BREAK +/* SPPI specific */ +case 79: +/* rule 79 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 560 "scanner-smi.l" +{ + yylval.id = smitext; + return PIB_TAG; +} + YY_BREAK +/* SPPI specific */ +case 80: +/* rule 80 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 13; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 566 "scanner-smi.l" +{ + yylval.id = smitext; + return POLICY_ACCESS; +} + YY_BREAK +/* SMI(ng) specific */ +case 81: +/* rule 81 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 15; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 572 "scanner-smi.l" +{ + yylval.id = smitext; + return PRODUCT_RELEASE; +} + YY_BREAK +case 82: +/* rule 82 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 577 "scanner-smi.l" +{ + yylval.id = smitext; + return REFERENCE; +} + YY_BREAK +case 83: +/* rule 83 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 582 "scanner-smi.l" +{ + yylval.id = smitext; + return REVISION; +} + YY_BREAK +case 84: +/* rule 84 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 587 "scanner-smi.l" +{ + yylval.id = smitext; + return SEQUENCE; +} + YY_BREAK +case 85: +/* rule 85 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 592 "scanner-smi.l" +{ + yylval.id = smitext; + return SIZE; +} + YY_BREAK +case 86: +/* rule 86 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 597 "scanner-smi.l" +{ + yylval.id = smitext; + return STATUS; +} + YY_BREAK +case 87: +/* rule 87 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 602 "scanner-smi.l" +{ + yylval.id = smitext; + return STRING; +} + YY_BREAK +/* SPPI specific */ +case 88: +/* rule 88 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 18; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 608 "scanner-smi.l" +{ + yylval.id = smitext; + return SUBJECT_CATEGORIES; +} + YY_BREAK +/* SMI(ng) specific */ +case 89: +/* rule 89 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 614 "scanner-smi.l" +{ + yylval.id = smitext; + return SUPPORTS; +} + YY_BREAK +case 90: +/* rule 90 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 619 "scanner-smi.l" +{ + yylval.id = smitext; + return SYNTAX; +} + YY_BREAK +case 91: +/* rule 91 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 18; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 624 "scanner-smi.l" +{ + yylval.id = smitext; + return TEXTUAL_CONVENTION; +} + YY_BREAK +case 92: +/* rule 92 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 629 "scanner-smi.l" +{ + yylval.id = smitext; + return TIMETICKS; +} + YY_BREAK +/* SMI(ng) specific */ +case 93: +/* rule 93 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 635 "scanner-smi.l" +{ + yylval.id = smitext; + return TRAP_TYPE; +} + YY_BREAK +/* SPPI specific */ +case 94: +/* rule 94 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 641 "scanner-smi.l" +{ + yylval.id = smitext; + return UNIQUENESS; +} + YY_BREAK +case 95: +/* rule 95 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 646 "scanner-smi.l" +{ + yylval.id = smitext; + return UNITS; +} + YY_BREAK +/* SMI(ng) specific */ +case 96: +/* rule 96 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 652 "scanner-smi.l" +{ + yylval.id = smitext; + return UNIVERSAL; +} + YY_BREAK +case 97: +/* rule 97 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 657 "scanner-smi.l" +{ + yylval.id = smitext; + return UNSIGNED32; +} + YY_BREAK +/* SPPI specific */ +case 98: +/* rule 98 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 663 "scanner-smi.l" +{ + yylval.id = smitext; + return UNSIGNED64; +} + YY_BREAK +/* SPPI specific */ +case 99: +/* rule 99 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 669 "scanner-smi.l" +{ + yylval.id = smitext; + return VALUE; +} + YY_BREAK +/* SMI(ng) specific */ +case 100: +/* rule 100 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 675 "scanner-smi.l" +{ + yylval.id = smitext; + return VARIABLES; +} + YY_BREAK +/* SMI(ng) specific */ +case 101: +/* rule 101 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 681 "scanner-smi.l" +{ + yylval.id = smitext; + return VARIATION; +} + YY_BREAK +/* SMI(ng) specific */ +case 102: +/* rule 102 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 687 "scanner-smi.l" +{ + yylval.id = smitext; + return WRITE_SYNTAX; +} + YY_BREAK +/* + * Lex rules for forbidden keywords. Do you use {delim} here because it + * introduces a trailing context which is (a) slow and (b) causes + * REJECT to be used. + */ +case 103: +/* rule 103 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 698 "scanner-smi.l" +{ + smiPrintError(parser, ERR_ILLEGAL_KEYWORD, smitext); +} + YY_BREAK +case 104: +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 2; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 702 "scanner-smi.l" +{ + smiPrintError(parser, ERR_ILLEGAL_KEYWORD, smitext); +} + YY_BREAK +/* + * Lex rules for descriptors. + */ +/* e.g. module names: REF: draft,p.12-13 */ +case 105: +YY_RULE_SETUP +#line 711 "scanner-smi.l" +{ + if (smitext[smileng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, smitext); + } + if (strchr(smitext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, smitext); + } + yylval.id = smiStrdup(smitext); + return UPPERCASE_IDENTIFIER; +} + YY_BREAK +/* same for lowercase names */ +case 106: +YY_RULE_SETUP +#line 723 "scanner-smi.l" +{ + if (smitext[smileng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, smitext); + } + if (strchr(smitext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, smitext); + } + yylval.id = smiStrdup(smitext); + return LOWERCASE_IDENTIFIER; +} + YY_BREAK +/* + * Lex rules for numbers. + */ +case 107: +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 738 "scanner-smi.l" +{ + smiPrintError(parser, ERR_LEADING_ZEROS); +} + YY_BREAK +case 108: +/* rule 108 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 742 "scanner-smi.l" +{ + errno = 0; + yylval.unsigned32 = strtoul(smitext, NULL, 10); + if (errno == ERANGE) { + /* TODO: proper handling for SPPI vs SMI modules. */ + if ((thisParser.modulePtr->export.language == SMI_LANGUAGE_SPPI) || + (thisParser.modulePtr->export.language == SMI_LANGUAGE_SMIV2)) { + yylval.unsigned64 = strtoull(smitext, NULL, 10); + if (errno == ERANGE) { + /* + * Dirty hack - on my system strtoull returns ERANGE for + * numbers that definitely are in range for 64 bit types. + * Nevertheless strtoull returns the correct value. To + * check this we convert the number back to a string. + */ + char tmpbuf[24]; + sprintf(tmpbuf, "%llu", yylval.unsigned64); + if (strcmp(smitext, tmpbuf)) + smiPrintError(parser, ERR_SPPI_UNSIGNED64_NUMBER_RANGE, smitext); + } + return NUMBER64; + } + + /* We don't want to see this error for the SNMPv2-SMI module, + * neither for COPS-PR-SPPI. */ + if (strcmp(thisParser.modulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisParser.modulePtr->export.name, "COPS-PR-SPPI")) { + smiPrintError(parser, ERR_SMIV2_UNSIGNED_NUMBER_RANGE, smitext); + } + } + return NUMBER; +} + YY_BREAK +case 109: +/* rule 109 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smitext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smitext again */ +YY_RULE_SETUP +#line 775 "scanner-smi.l" +{ + errno = 0; + yylval.integer32 = strtol(smitext, NULL, 10); + if (errno == ERANGE) { + /* TODO: proper handling for SPPI vs SMI modules. */ + if (thisParser.modulePtr->export.language == SMI_LANGUAGE_SPPI) { + yylval.integer64 = strtoll(smitext, NULL, 10); + if (errno == ERANGE) { + /* + * Dirty hack - on my system strtoull returns ERANGE for + * numbers that definitely are in range for 64 bit types. + * Nevertheless strtoull returns the correct value. To + * check this we convert the number back to a string. + */ + char tmpbuf[24]; + sprintf(tmpbuf, "%lld", yylval.integer64); + if (strcmp(smitext, tmpbuf)) + smiPrintError(parser, ERR_SPPI_SIGNED64_NUMBER_RANGE, smitext); + } + return NEGATIVENUMBER64; + } + /* We don't want to see this error for the COPS-PR-SPPI module. */ + if (strcmp(thisParser.modulePtr->export.name, "COPS-PR-SPPI")) + smiPrintError(parser, ERR_SMIV2_SIGNED_NUMBER_RANGE, smitext); + } + return NEGATIVENUMBER; +} + YY_BREAK +/* + * Lex rules for binary, hexadecimal and quoted strings (RFC 2578 3.1.1) + */ +case 110: +YY_RULE_SETUP +#line 807 "scanner-smi.l" +{ + yylval.text = smitext + 1; + smitext[smileng-2] = '\0'; + if ((smileng-3) % 8) { + smiPrintError(parser, ERR_BIN_STRING_MUL8, yylval.text); + } + return BIN_STRING; +} + YY_BREAK +case 111: +YY_RULE_SETUP +#line 816 "scanner-smi.l" +{ + yylval.text = smitext + 1; + smitext[smileng-2] = '\0'; + if ((smileng-3) % 2) { + smiPrintError(parser, ERR_HEX_STRING_MUL2, yylval.text); + } + return HEX_STRING; +} + YY_BREAK +case 112: +/* rule 112 can match eol */ +YY_RULE_SETUP +#line 825 "scanner-smi.l" +{ + char *s, *d; /* the source and destination pointer */ + int column = 0; /* the current column */ + int newlineflag = 0; /* we have just passed a newline */ + int cutoffcolumn = 0; /* cut off white space up to this column */ + /* (computed by caculating the indentation */ + /* of the first column) */ + + smitext[smileng-1] = '\0'; + for (d = smitext, s = smitext+1; s[0]; s++, d++) { + + if ((s[0] == '\n' && s[1] == '\r') /* newline sequence */ + || (s[0] == '\r' && s[1] == '\n')) { + thisParser.line++; + d[0] = '\n'; + s++; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else if (s[0] == '\n' || s[0] == '\r') { /* simple newline */ + thisParser.line++; + d[0] = '\n'; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else { + if (newlineflag && isspace((int)(unsigned char)s[0])) { /* space after newline */ + if (cutoffcolumn <= 0) { + cutoffcolumn -= (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + } + column += (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + if (cutoffcolumn <= 0 || column <= cutoffcolumn) { + d--; + } else { + d[0] = s[0]; + newlineflag = 0; + } + } else { /* everything else */ + if (! isascii(s[0])) { + smiPrintError(parser, ERR_ILLEGAL_CHAR_IN_STRING, + s[0], (unsigned char) s[0]); + } + d[0] = s[0]; + newlineflag = 0; + if (cutoffcolumn < 0) { + cutoffcolumn *= -1; + } + } + } + } + d[0] = '\0'; + + yylval.text = smitext; + return QUOTED_STRING; +} + YY_BREAK +/* + * Skip the remainder of the line + */ +case 113: +/* rule 113 can match eol */ +YY_RULE_SETUP +#line 884 "scanner-smi.l" +{ + thisParser.line++; + BEGIN(INITIAL); +} + YY_BREAK +/* + * Everything else... + */ +case 114: +YY_RULE_SETUP +#line 893 "scanner-smi.l" +{ + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + BEGIN(Skipline); +} + YY_BREAK +case 115: +YY_RULE_SETUP +#line 898 "scanner-smi.l" +ECHO; + YY_BREAK +#line 13190 "" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(Macro): +case YY_STATE_EOF(Choice): +case YY_STATE_EOF(Exports): +case YY_STATE_EOF(Comment): +case YY_STATE_EOF(Skipline): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed smiin at a new source and called + * smilex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = smiin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( smiwrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * smitext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of smilex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + smirealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + smirestart(smiin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + if ( ! yy_is_jam ) + { + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + } + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up smitext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + smirestart(smiin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( smiwrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve smitext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void smirestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + smiensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + smi_create_buffer(smiin,YY_BUF_SIZE ); + } + + smi_init_buffer(YY_CURRENT_BUFFER,input_file ); + smi_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void smi_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * smipop_buffer_state(); + * smipush_buffer_state(new_buffer); + */ + smiensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + smi_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (smiwrap()) processing, but the only time this flag + * is looked at is after smiwrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void smi_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + smiin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE smi_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) smialloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in smi_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) smialloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in smi_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + smi_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with smi_create_buffer() + * + */ + void smi_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + smifree((void *) b->yy_ch_buf ); + + smifree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a smirestart() or at EOF. + */ + static void smi_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + smi_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then smi_init_buffer was _probably_ + * called from smirestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void smi_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + smi_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void smipush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + smiensure_buffer_stack(); + + /* This block is copied from smi_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from smi_switch_to_buffer. */ + smi_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void smipop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + smi_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + smi_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void smiensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)smialloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)smirealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE smi_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) smialloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in smi_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + smi_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to smilex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * smi_scan_bytes() instead. + */ +YY_BUFFER_STATE smi_scan_string (yyconst char * yystr ) +{ + + return smi_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to smilex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE smi_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) smialloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in smi_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = smi_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in smi_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up smitext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + smitext[smileng] = (yy_hold_char); \ + (yy_c_buf_p) = smitext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + smileng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int smiget_lineno (void) +{ + + return smilineno; +} + +/** Get the input stream. + * + */ +FILE *smiget_in (void) +{ + return smiin; +} + +/** Get the output stream. + * + */ +FILE *smiget_out (void) +{ + return smiout; +} + +/** Get the length of the current token. + * + */ +int smiget_leng (void) +{ + return smileng; +} + +/** Get the current token. + * + */ + +char *smiget_text (void) +{ + return smitext; +} + +/** Set the current line number. + * @param line_number + * + */ +void smiset_lineno (int line_number ) +{ + + smilineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see smi_switch_to_buffer + */ +void smiset_in (FILE * in_str ) +{ + smiin = in_str ; +} + +void smiset_out (FILE * out_str ) +{ + smiout = out_str ; +} + +int smiget_debug (void) +{ + return smi_flex_debug; +} + +void smiset_debug (int bdebug ) +{ + smi_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from smilex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + smiin = stdin; + smiout = stdout; +#else + smiin = (FILE *) 0; + smiout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * smilex_init() + */ + return 0; +} + +/* smilex_destroy is for both reentrant and non-reentrant scanners. */ +int smilex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + smi_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + smipop_buffer_state(); + } + + /* Destroy the stack itself. */ + smifree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * smilex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *smialloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *smirealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void smifree (void * ptr ) +{ + free( (char *) ptr ); /* see smirealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 898 "scanner-smi.l" + + + diff --git a/lib/scanner-smi.h b/lib/scanner-smi.h new file mode 100644 index 0000000..e9aa075 --- /dev/null +++ b/lib/scanner-smi.h @@ -0,0 +1,29 @@ +/* + * scanner-smi.h -- + * + * Definition of lexical tokens of the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-smi.h 973 2000-07-17 09:34:36Z strauss $ + */ + +#ifndef _SCANNER_SMI_H +#define _SCANNER_SMI_H + +#include + +#include "parser-smi.h" + +#define YY_NO_UNPUT + +extern char *yytext; +extern int yyleng; + +extern int smiEnterLexRecursion(FILE *file); +extern void smiLeaveLexRecursion(); + +#endif /* _SCANNER_SMI_H */ diff --git a/lib/scanner-smi.l b/lib/scanner-smi.l new file mode 100644 index 0000000..37b4743 --- /dev/null +++ b/lib/scanner-smi.l @@ -0,0 +1,898 @@ +/* + * scanner-smi.l -- + * + * Lexical rules for scanning the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-smi.l 6539 2007-02-01 08:23:54Z strauss $ + */ + +%option noyywrap + +%{ + +#include + + +#include +#include +#include +#include + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "parser-smi.h" +#include "parser-smi.tab.h" +#include "scanner-smi.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* we need a reentrant parser, so yylex gets arguments */ +#if 0 +#define YY_DECL int yylex YY_PROTO((YYSTYPE *lvalp, void *parser)) +#else +#define YY_DECL int yylex(YYSTYPE *lvalp, void *parser) +#endif + + +#define thisParser (*(Parser *) parser) + + +#define MAX_UNSIGNED64 "18446744073709551615" +#define MIN_UNSIGNED64 0 +#define MAX_UNSIGNED32 4294967295 +#define MIN_UNSIGNED32 0 +#define MAX_INTEGER32 2147483647 +#define MIN_INTEGER32 -2147483648 + + + +/* + * This makes the usual notation when referencing attributes also + * work with our pure parser code. + */ +#define yylval (*lvalp) + + +static YY_BUFFER_STATE yybuffer[MAX_LEX_DEPTH]; + +static int lexDepth = 0; + + +int +smiEnterLexRecursion(file) + FILE *file; +{ + if (lexDepth >= MAX_LEX_DEPTH) { + return (-1); + } + yybuffer[lexDepth++] = YY_CURRENT_BUFFER; + yy_switch_to_buffer(yy_create_buffer(file, YY_BUF_SIZE)); + return (lexDepth); +} + + + +void +smiLeaveLexRecursion() +{ + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(yybuffer[--lexDepth]); +} + + + +%} + + + +/* + * Lex pattern definitions. + */ +delim ([^a-zA-Z0-9-])|-- +enddelim ([^a-zA-Z0-9-])|--|"" +eol ("\n"|"\n\015"|"\015\n"|"\015") + + + +/* + * Lex state definitions. + */ +%s Macro +%s Choice +%s Exports +%s Comment +%s Skipline + + + +%% + + + + /* + * Lex rules. + */ + + /* + * Lex rules for skipping MACRO. + */ + +MACRO { + BEGIN(Macro); + yylval.id = yytext; + return MACRO; +} + +{eol} { + thisParser.line++; +} + +. { +} + +END/{delim} { + BEGIN(INITIAL); + yylval.id = yytext; + return END; +} + + /* + * Lex rules for skipping EXPORTS. + */ + +EXPORTS { + BEGIN(Exports); + yylval.id = yytext; + return EXPORTS; +} + +{eol} { + thisParser.line++; +} + +[^\;]* { +} + +\; { + BEGIN(INITIAL); + return yytext[0]; +} + + /* + * Lex rules for skipping CHOICE. + */ + +CHOICE { + BEGIN(Choice); + yylval.id = yytext; + return CHOICE; +} + +{eol} { + thisParser.line++; +} + +[^\}] { +} + +\} { + BEGIN(INITIAL); + return yytext[0]; +} + + /* + * Lex rules for comments. + */ + +"--" { + BEGIN(Comment); +} + +"--" { + thisParser.lcline = thisParser.line; + BEGIN(INITIAL); +} + + /* Special-case a common error (dashed seperator lines with + * 4n+1 dashes, meaning a single dash outside the comment). + * Print the "lexically unexpected" error that you would normally + * get, and stick in the comment FYI also. + */ +"---"{eol} { + smiPrintError(parser, ERR_COMMENT_TERMINATES); + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + thisParser.line++; + BEGIN(INITIAL); +} + +{eol} { + thisParser.line++; + BEGIN(INITIAL); +} + +[^-\n\015]* { +} +"-" { +} + + /* + * Lex rules for some special tokens. + */ + +[\[\]\{\}\(\)\:\;\,\-\.\|] { + return yytext[0]; +} + +".." { + return DOT_DOT; +} + +"::=" { + return COLON_COLON_EQUAL; +} + + /* + * Lex rules for white space. + */ + +[ \t]* { +} + +{eol} { + thisParser.line++; +} + + /* + * Lex rules for known keywords. + */ + + /* SMI(ng) specific */ +ACCESS/{delim} { + yylval.id = yytext; + return ACCESS; +} + + /* SMI(ng) specific */ +AGENT-CAPABILITIES/{delim} { + yylval.id = yytext; + return AGENT_CAPABILITIES; +} + +APPLICATION/{delim} { + yylval.id = yytext; + return APPLICATION; +} + +AUGMENTS/{delim} { + yylval.id = yytext; + return AUGMENTS; +} + +BEGIN/{delim} { + yylval.id = yytext; + return BEGIN_; +} + +BITS/{delim} { + yylval.id = yytext; + return BITS; +} + +CONTACT-INFO/{delim} { + yylval.id = yytext; + return CONTACT_INFO; +} + + /* SMI(ng) specific */ +CREATION-REQUIRES/{delim} { + yylval.id = yytext; + return CREATION_REQUIRES; +} + + /* SMI(ng) specific */ +Counter32/{delim} { + yylval.id = yytext; + return COUNTER32; +} + + /* SMI(ng) specific */ +Counter64/{delim} { + yylval.id = yytext; + return COUNTER64; +} + + /* SMI(ng) specific */ +DEFINITIONS/{delim} { + yylval.id = yytext; + return DEFINITIONS; +} + +DEFVAL/{delim} { + yylval.id = yytext; + return DEFVAL; +} + +DESCRIPTION/{delim} { + yylval.id = yytext; + return DESCRIPTION; +} + +DISPLAY-HINT/{delim} { + yylval.id = yytext; + return DISPLAY_HINT; +} + +END/{enddelim} { + yylval.id = yytext; + return END; +} + + /* SMI(ng) specific */ +ENTERPRISE/{delim} { + yylval.id = yytext; + return ENTERPRISE; +} + + /* SPPI specific */ +EXTENDS/{delim} { + yylval.id = yytext; + return EXTENDS; +} + +FROM/{delim} { + yylval.id = yytext; + return FROM; +} + +GROUP/{delim} { + yylval.id = yytext; + return GROUP; +} + + /* SMI(ng) specific */ +Gauge32/{delim} { + yylval.id = yytext; + return GAUGE32; +} + +IDENTIFIER/{delim} { + yylval.id = yytext; + return IDENTIFIER; +} + +IMPLICIT/{delim} { + yylval.id = yytext; + return IMPLICIT; +} + +IMPLIED/{delim} { + yylval.id = yytext; + return IMPLIED; +} + +IMPORTS/{delim} { + yylval.id = yytext; + return IMPORTS; +} + + /* SMI(ng) specific */ +INCLUDES/{delim} { + yylval.id = yytext; + return INCLUDES; +} + +INDEX/{delim} { + yylval.id = yytext; + return INDEX; +} + + /* SPPI specific */ +INSTALL-ERRORS/{delim} { + yylval.id = yytext; + return INSTALL_ERRORS; +} + +INTEGER/{delim} { + yylval.id = yytext; + return INTEGER; +} + +Integer32/{delim} { + yylval.id = yytext; + return INTEGER32; +} + + /* SPPI specific */ +Integer64/{delim} { + yylval.id = yytext; + return INTEGER64; +} + +IpAddress/{delim} { + yylval.id = yytext; + return IPADDRESS; +} + +LAST-UPDATED/{delim} { + yylval.id = yytext; + return LAST_UPDATED; +} + +MANDATORY-GROUPS/{delim} { + yylval.id = yytext; + return MANDATORY_GROUPS; +} + + /* SMI(ng) specific */ +MAX-ACCESS/{delim} { + yylval.id = yytext; + return MAX_ACCESS; +} + + /* SMI(ng) specific */ +MIN-ACCESS/{delim} { + yylval.id = yytext; + return MIN_ACCESS; +} + +MODULE/{delim} { + yylval.id = yytext; + return MODULE; +} + +MODULE-COMPLIANCE/{delim} { + yylval.id = yytext; + return MODULE_COMPLIANCE; +} + +MODULE-IDENTITY/{delim} { + yylval.id = yytext; + return MODULE_IDENTITY; +} + + /* SMI(ng) specific */ +NOTIFICATION-GROUP/{delim} { + yylval.id = yytext; + return NOTIFICATION_GROUP; +} + + /* SMI(ng) specific */ +NOTIFICATION-TYPE/{delim} { + yylval.id = yytext; + return NOTIFICATION_TYPE; +} + + /* SMI(ng) specific */ +NOTIFICATIONS/{delim} { + yylval.id = yytext; + return NOTIFICATIONS; +} + +OBJECT/{delim} { + yylval.id = yytext; + return OBJECT; +} + +OBJECT-GROUP/{delim} { + yylval.id = yytext; + return OBJECT_GROUP; +} + +OBJECT-IDENTITY/{delim} { + yylval.id = yytext; + return OBJECT_IDENTITY; +} + +OBJECT-TYPE/{delim} { + yylval.id = yytext; + return OBJECT_TYPE; +} + +OBJECTS/{delim} { + yylval.id = yytext; + return OBJECTS; +} + +OCTET/{delim} { + yylval.id = yytext; + return OCTET; +} + +OF/{delim} { + yylval.id = yytext; + return OF; +} + +ORGANIZATION/{delim} { + yylval.id = yytext; + return ORGANIZATION; +} + +Opaque/{delim} { + yylval.id = yytext; + return OPAQUE; +} + + /* SPPI specific */ +PIB-ACCESS/{delim} { + yylval.id = yytext; + return PIB_ACCESS; +} + + /* SPPI specific */ +PIB-DEFINITIONS/{delim} { + yylval.id = yytext; + return PIB_DEFINITIONS; +} + + /* SPPI specific */ +PIB-INDEX/{delim} { + yylval.id = yytext; + return PIB_INDEX; +} + + /* SPPI specific */ +PIB-MIN-ACCESS/{delim} { + yylval.id = yytext; + return PIB_MIN_ACCESS; +} + + /* SPPI specific */ +PIB-REFERENCES/{delim} { + yylval.id = yytext; + return PIB_REFERENCES; +} + + /* SPPI specific */ +PIB-TAG/{delim} { + yylval.id = yytext; + return PIB_TAG; +} + + /* SPPI specific */ +POLICY-ACCESS/{delim} { + yylval.id = yytext; + return POLICY_ACCESS; +} + + /* SMI(ng) specific */ +PRODUCT-RELEASE/{delim} { + yylval.id = yytext; + return PRODUCT_RELEASE; +} + +REFERENCE/{delim} { + yylval.id = yytext; + return REFERENCE; +} + +REVISION/{delim} { + yylval.id = yytext; + return REVISION; +} + +SEQUENCE/{delim} { + yylval.id = yytext; + return SEQUENCE; +} + +SIZE/{delim} { + yylval.id = yytext; + return SIZE; +} + +STATUS/{delim} { + yylval.id = yytext; + return STATUS; +} + +STRING/{delim} { + yylval.id = yytext; + return STRING; +} + + /* SPPI specific */ +SUBJECT-CATEGORIES/{delim} { + yylval.id = yytext; + return SUBJECT_CATEGORIES; +} + + /* SMI(ng) specific */ +SUPPORTS/{delim} { + yylval.id = yytext; + return SUPPORTS; +} + +SYNTAX/{delim} { + yylval.id = yytext; + return SYNTAX; +} + +TEXTUAL-CONVENTION/{delim} { + yylval.id = yytext; + return TEXTUAL_CONVENTION; +} + +TimeTicks/{delim} { + yylval.id = yytext; + return TIMETICKS; +} + + /* SMI(ng) specific */ +TRAP-TYPE/{delim} { + yylval.id = yytext; + return TRAP_TYPE; +} + + /* SPPI specific */ +UNIQUENESS/{delim} { + yylval.id = yytext; + return UNIQUENESS; +} + +UNITS/{delim} { + yylval.id = yytext; + return UNITS; +} + + /* SMI(ng) specific */ +UNIVERSAL/{delim} { + yylval.id = yytext; + return UNIVERSAL; +} + +Unsigned32/{delim} { + yylval.id = yytext; + return UNSIGNED32; +} + + /* SPPI specific */ +Unsigned64/{delim} { + yylval.id = yytext; + return UNSIGNED64; +} + + /* SPPI specific */ +VALUE/{delim} { + yylval.id = yytext; + return VALUE; +} + + /* SMI(ng) specific */ +VARIABLES/{delim} { + yylval.id = yytext; + return VARIABLES; +} + + /* SMI(ng) specific */ +VARIATION/{delim} { + yylval.id = yytext; + return VARIATION; +} + + /* SMI(ng) specific */ +WRITE-SYNTAX/{delim} { + yylval.id = yytext; + return WRITE_SYNTAX; +} + + /* + * Lex rules for forbidden keywords. Do you use {delim} here because it + * introduces a trailing context which is (a) slow and (b) causes + * REJECT to be used. + */ + +ABSENT|ANY|BIT|BOOLEAN|BY|COMPONENT|COMPONENTS|DEFAULT|DEFINED|ENUMERATED|EXPLICIT|EXTERNAL|FALSE|MAX|MIN|MINUS-INFINITY|NULL|OPTIONAL|PLUS-INFINITY|PRESENT|PRIVATE|REAL|SET|TAGS|TRUE|WITH/[^a-zA-Z0-9-] { + smiPrintError(parser, ERR_ILLEGAL_KEYWORD, yytext); +} + +ABSENT|ANY|BIT|BOOLEAN|BY|COMPONENT|COMPONENTS|DEFAULT|DEFINED|ENUMERATED|EXPLICIT|EXTERNAL|FALSE|MAX|MIN|MINUS-INFINITY|NULL|OPTIONAL|PLUS-INFINITY|PRESENT|PRIVATE|REAL|SET|TAGS|TRUE|WITH/-- { + smiPrintError(parser, ERR_ILLEGAL_KEYWORD, yytext); +} + + /* + * Lex rules for descriptors. + */ + + /* e.g. module names: REF: draft,p.12-13 */ +[A-Z](-?[a-zA-Z0-9_]+)*-? { + if (yytext[yyleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, yytext); + } + if (strchr(yytext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, yytext); + } + yylval.id = smiStrdup(yytext); + return UPPERCASE_IDENTIFIER; +} + + /* same for lowercase names */ +[a-z](-?[a-zA-Z0-9_]+)*-? { + if (yytext[yyleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, yytext); + } + if (strchr(yytext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, yytext); + } + yylval.id = smiStrdup(yytext); + return LOWERCASE_IDENTIFIER; +} + + /* + * Lex rules for numbers. + */ + +0+/[0-9] { + smiPrintError(parser, ERR_LEADING_ZEROS); +} + +([1-9][0-9]*|0)/[^0-9] { + errno = 0; + yylval.unsigned32 = strtoul(yytext, NULL, 10); + if (errno == ERANGE) { + /* TODO: proper handling for SPPI vs SMI modules. */ + if ((thisParser.modulePtr->export.language == SMI_LANGUAGE_SPPI) || + (thisParser.modulePtr->export.language == SMI_LANGUAGE_SMIV2)) { + yylval.unsigned64 = strtoull(yytext, NULL, 10); + if (errno == ERANGE) { + /* + * Dirty hack - on my system strtoull returns ERANGE for + * numbers that definitely are in range for 64 bit types. + * Nevertheless strtoull returns the correct value. To + * check this we convert the number back to a string. + */ + char tmpbuf[24]; + sprintf(tmpbuf, "%llu", yylval.unsigned64); + if (strcmp(yytext, tmpbuf)) + smiPrintError(parser, ERR_SPPI_UNSIGNED64_NUMBER_RANGE, yytext); + } + return NUMBER64; + } + + /* We don't want to see this error for the SNMPv2-SMI module, + * neither for COPS-PR-SPPI. */ + if (strcmp(thisParser.modulePtr->export.name, "SNMPv2-SMI") && + strcmp(thisParser.modulePtr->export.name, "COPS-PR-SPPI")) { + smiPrintError(parser, ERR_SMIV2_UNSIGNED_NUMBER_RANGE, yytext); + } + } + return NUMBER; +} + +-([1-9][0-9]*|0)/[^0-9] { + errno = 0; + yylval.integer32 = strtol(yytext, NULL, 10); + if (errno == ERANGE) { + /* TODO: proper handling for SPPI vs SMI modules. */ + if (thisParser.modulePtr->export.language == SMI_LANGUAGE_SPPI) { + yylval.integer64 = strtoll(yytext, NULL, 10); + if (errno == ERANGE) { + /* + * Dirty hack - on my system strtoull returns ERANGE for + * numbers that definitely are in range for 64 bit types. + * Nevertheless strtoull returns the correct value. To + * check this we convert the number back to a string. + */ + char tmpbuf[24]; + sprintf(tmpbuf, "%lld", yylval.integer64); + if (strcmp(yytext, tmpbuf)) + smiPrintError(parser, ERR_SPPI_SIGNED64_NUMBER_RANGE, yytext); + } + return NEGATIVENUMBER64; + } + /* We don't want to see this error for the COPS-PR-SPPI module. */ + if (strcmp(thisParser.modulePtr->export.name, "COPS-PR-SPPI")) + smiPrintError(parser, ERR_SMIV2_SIGNED_NUMBER_RANGE, yytext); + } + return NEGATIVENUMBER; +} + + /* + * Lex rules for binary, hexadecimal and quoted strings (RFC 2578 3.1.1) + */ + +\'[01]*\'[bB] { + yylval.text = yytext + 1; + yytext[yyleng-2] = '\0'; + if ((yyleng-3) % 8) { + smiPrintError(parser, ERR_BIN_STRING_MUL8, yylval.text); + } + return BIN_STRING; +} + +\'[0123456789AaBbCcDdEeFf]*\'[hH] { + yylval.text = yytext + 1; + yytext[yyleng-2] = '\0'; + if ((yyleng-3) % 2) { + smiPrintError(parser, ERR_HEX_STRING_MUL2, yylval.text); + } + return HEX_STRING; +} + +\"[^\"]*\" { + char *s, *d; /* the source and destination pointer */ + int column = 0; /* the current column */ + int newlineflag = 0; /* we have just passed a newline */ + int cutoffcolumn = 0; /* cut off white space up to this column */ + /* (computed by caculating the indentation */ + /* of the first column) */ + + yytext[yyleng-1] = '\0'; + for (d = yytext, s = yytext+1; s[0]; s++, d++) { + + if ((s[0] == '\n' && s[1] == '\r') /* newline sequence */ + || (s[0] == '\r' && s[1] == '\n')) { + thisParser.line++; + d[0] = '\n'; + s++; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else if (s[0] == '\n' || s[0] == '\r') { /* simple newline */ + thisParser.line++; + d[0] = '\n'; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else { + if (newlineflag && isspace((int)(unsigned char)s[0])) { /* space after newline */ + if (cutoffcolumn <= 0) { + cutoffcolumn -= (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + } + column += (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + if (cutoffcolumn <= 0 || column <= cutoffcolumn) { + d--; + } else { + d[0] = s[0]; + newlineflag = 0; + } + } else { /* everything else */ + if (! isascii(s[0])) { + smiPrintError(parser, ERR_ILLEGAL_CHAR_IN_STRING, + s[0], (unsigned char) s[0]); + } + d[0] = s[0]; + newlineflag = 0; + if (cutoffcolumn < 0) { + cutoffcolumn *= -1; + } + } + } + } + d[0] = '\0'; + + yylval.text = yytext; + return QUOTED_STRING; +} + + /* + * Skip the remainder of the line + */ +.*{eol} { + thisParser.line++; + BEGIN(INITIAL); +} + + /* + * Everything else... + */ + +. { + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + BEGIN(Skipline); +} + +%% diff --git a/lib/scanner-sming.c b/lib/scanner-sming.c new file mode 100644 index 0000000..2d6ef23 --- /dev/null +++ b/lib/scanner-sming.c @@ -0,0 +1,7508 @@ + +#line 3 "" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 33 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE smingrestart(smingin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int smingleng; + +extern FILE *smingin, *smingout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up smingtext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up smingtext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef unsigned int yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via smingrestart()), so that the user can continue scanning by + * just pointing smingin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when smingtext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int smingleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow smingwrap()'s to do buffer switches + * instead of setting up a fresh smingin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void smingrestart (FILE *input_file ); +void sming_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE sming_create_buffer (FILE *file,int size ); +void sming_delete_buffer (YY_BUFFER_STATE b ); +void sming_flush_buffer (YY_BUFFER_STATE b ); +void smingpush_buffer_state (YY_BUFFER_STATE new_buffer ); +void smingpop_buffer_state (void ); + +static void smingensure_buffer_stack (void ); +static void sming_load_buffer_state (void ); +static void sming_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER sming_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE sming_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE sming_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE sming_scan_bytes (yyconst char *bytes,int len ); + +void *smingalloc (yy_size_t ); +void *smingrealloc (void *,yy_size_t ); +void smingfree (void * ); + +#define yy_new_buffer sming_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + smingensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + sming_create_buffer(smingin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + smingensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + sming_create_buffer(smingin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define smingwrap() 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +FILE *smingin = (FILE *) 0, *smingout = (FILE *) 0; + +typedef int yy_state_type; + +extern int sminglineno; + +int sminglineno = 1; + +extern char *smingtext; +#define yytext_ptr smingtext +static yyconst flex_int16_t yy_nxt[][59] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + + { + 5, 6, 7, 8, 9, 7, 6, 10, 11, 6, + 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, + 15, 16, 17, 18, 19, 20, 17, 21, 22, 23, + 17, 24, 6, 6, 25, 26, 27, 28, 29, 30, + + 26, 26, 31, 26, 26, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 26, 26, 26, 26, 26 + }, + + { + 5, 6, 7, 8, 9, 7, 6, 10, 11, 6, + 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, + 15, 16, 17, 18, 19, 20, 17, 21, 22, 23, + 17, 24, 6, 6, 25, 26, 27, 28, 29, 30, + 26, 26, 31, 26, 26, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 26, 26, 26, 26, 26 + }, + + { + 5, 41, 41, 42, 43, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41 + }, + + { + 5, 41, 41, 42, 43, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41 + + }, + + { + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5 + }, + + { + 5, -6, -6, -6, -6, -6, -6, -6, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, + + -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, + -6, -6, -6, -6, -6, -6, -6, -6, -6 + }, + + { + 5, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, + -7, -7, -7, -7, -7, -7, -7, -7, -7 + }, + + { + 5, -8, -8, -8, 44, -8, -8, -8, -8, -8, + -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, + + -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, + -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, + -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, + -8, -8, -8, -8, -8, -8, -8, -8, -8 + }, + + { + 5, -9, -9, 44, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -9, -9, -9, -9, -9, -9, -9, -9, -9 + + }, + + { + 5, 45, 45, 45, 45, 45, 45, 46, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 47, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45 + }, + + { + 5, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11, -11, -11 + }, + + { + 5, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 49, 48, 50, 50, 50, 50, 50, 50, 50, + 50, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48 + }, + + { + 5, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, 51, -13, -13, -13, -13, -13, -13, -13, + + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13 + }, + + { + 5, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 54, 52, 55, 56, 56, 56, 56, 56, 56, + 56, 52, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 52, 52, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 58, 57, 57 + + }, + + { + 5, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 54, 52, 59, 59, 59, 59, 59, 59, 59, + 59, 52, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 52, 52, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57 + }, + + { + 5, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, 60, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16 + }, + + { + 5, -17, -17, -17, -17, -17, -17, -17, -17, -17, + 61, 62, -17, 63, 63, 63, 63, 63, 63, 63, + 63, -17, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -17, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -18, -18, -18, -18, -18, -18, -18, -18, -18, + 61, 62, -18, 63, 63, 63, 63, 63, 63, 63, + + 63, -18, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -18, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 65, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -19, -19, -19, -19, -19, -19, -19, -19, -19, + 61, 62, -19, 63, 63, 63, 63, 63, 63, 63, + 63, -19, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -19, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 66, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -20, -20, -20, -20, -20, -20, -20, -20, -20, + 61, 62, -20, 63, 63, 63, 63, 63, 63, 63, + 63, -20, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -20, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 67, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -21, -21, -21, -21, -21, -21, -21, -21, -21, + 61, 62, -21, 63, 63, 63, 63, 63, 63, 63, + 63, -21, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -21, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 68, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -22, -22, -22, -22, -22, -22, -22, -22, -22, + 61, 62, -22, 63, 63, 63, 63, 63, 63, 63, + 63, -22, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -22, 64, 63, 69, 70, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -23, -23, -23, -23, -23, -23, -23, -23, -23, + 61, 62, -23, 63, 63, 63, 63, 63, 63, 63, + + 63, -23, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -23, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 71, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -24, -24, -24, -24, -24, -24, -24, -24, -24, + 61, 62, -24, 63, 63, 63, 63, 63, 63, 63, + 63, -24, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -24, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 72, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -25, -25, -25, -25, -25, -25, -25, -25, -25, + 73, 62, -25, 74, 74, 74, 74, 74, 74, 74, + 74, -25, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -25, 75, 74, 76, 77, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 78, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -26, -26, -26, -26, -26, -26, -26, -26, -26, + 73, 62, -26, 74, 74, 74, 74, 74, 74, 74, + 74, -26, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -26, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -27, -27, -27, -27, -27, -27, -27, -27, -27, + 73, 62, -27, 74, 74, 74, 74, 74, 74, 74, + 74, -27, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -27, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 79, 74, 74, 80, 74, 74, + 74, 74, 74, 81, 74, 74, 74, 74, 74 + }, + + { + 5, -28, -28, -28, -28, -28, -28, -28, -28, -28, + 73, 62, -28, 74, 74, 74, 74, 74, 74, 74, + + 74, -28, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -28, 75, 82, 74, 74, 74, 83, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -29, -29, -29, -29, -29, -29, -29, -29, -29, + 73, 62, -29, 74, 74, 74, 74, 74, 74, 74, + 74, -29, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -29, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 84, 74, 85, 74, 74 + + }, + + { + 5, -30, -30, -30, -30, -30, -30, -30, -30, -30, + 73, 62, -30, 74, 74, 74, 74, 74, 74, 74, + 74, -30, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -30, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 86, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -31, -31, -31, -31, -31, -31, -31, -31, -31, + 73, 62, -31, 74, 74, 74, 74, 74, 74, 74, + 74, -31, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -31, 75, 74, 74, 74, 87, 74, 74, + + 74, 74, 74, 74, 74, 88, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -32, -32, -32, -32, -32, -32, -32, -32, -32, + 73, 62, -32, 74, 74, 74, 74, 74, 74, 74, + 74, -32, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -32, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 89, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -33, -33, -33, -33, -33, -33, -33, -33, -33, + 73, 62, -33, 74, 74, 74, 74, 74, 74, 74, + + 74, -33, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -33, 75, 74, 74, 74, 74, 90, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -34, -34, -34, -34, -34, -34, -34, -34, -34, + 73, 62, -34, 74, 74, 74, 74, 74, 74, 74, + 74, -34, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -34, 75, 74, 91, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 92, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -35, -35, -35, -35, -35, -35, -35, -35, -35, + 73, 62, -35, 74, 74, 74, 74, 74, 74, 74, + 74, -35, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -35, 75, 93, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 94, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -36, -36, -36, -36, -36, -36, -36, -36, -36, + 73, 62, -36, 74, 74, 74, 74, 74, 74, 74, + 74, -36, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -36, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 95, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -37, -37, -37, -37, -37, -37, -37, -37, -37, + 73, 62, -37, 74, 74, 74, 74, 74, 74, 74, + 74, -37, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -37, 75, 74, 74, 74, 74, 96, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -38, -38, -38, -38, -38, -38, -38, -38, -38, + 73, 62, -38, 74, 74, 74, 74, 74, 74, 74, + + 74, -38, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -38, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 97, 74, 74, 74, + 74, 74, 98, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -39, -39, -39, -39, -39, -39, -39, -39, -39, + 73, 62, -39, 74, 74, 74, 74, 74, 74, 74, + 74, -39, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -39, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 99, 74 + + }, + + { + 5, -40, -40, -40, -40, -40, -40, -40, -40, -40, + 73, 62, -40, 74, 74, 74, 74, 74, 74, 74, + 74, -40, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -40, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 100, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 101, 101, 102, 103, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101 + }, + + { + 5, -42, -42, -42, 104, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42 + }, + + { + 5, 101, 101, 105, 103, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101 + }, + + { + 5, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, -44, -44, -44, -44, -44, -44 + + }, + + { + 5, 45, 45, 45, 45, 45, 45, 46, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 47, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45 + }, + + { + 5, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46, -46, -46 + }, + + { + 5, 45, 45, 45, 45, 45, 45, 106, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 47, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45 + }, + + { + 5, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48 + }, + + { + 5, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, -49, -49 + + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 108, 108, 108, 108, 108, 108, 108, + 108, 107, 107, 107, 109, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 109, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107 + }, + + { + 5, -51, 110, 111, 112, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110 + }, + + { + 5, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52 + }, + + { + 5, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, 62, -53, 113, 113, 113, 113, 113, 113, 113, + + 113, -53, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -53, -53, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, 114, 114, 114, 114, 114, 114, 114, + 114, -54, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -54, -54, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -55, -55, -55, -55, -55, -55, -55, -55, -55, + 116, 117, -55, 55, 56, 56, 56, 56, 56, 56, + 56, -55, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -55, -55, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -56, -56, -56, -56, -56, -56, -56, -56, -56, + 116, 117, -56, 118, 118, 118, 118, 118, 118, 118, + 118, -56, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -56, -56, 113, 113, 113, 113, 113, 113, + + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -57, -57, -57, -57, -57, -57, -57, -57, -57, + 116, 62, -57, 113, 113, 113, 113, 113, 113, 113, + 113, -57, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -57, -57, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -58, -58, -58, -58, -58, -58, -58, -58, -58, + 116, 62, -58, 119, 119, 119, 119, 119, 119, 119, + + 119, -58, 119, 119, 119, 119, 113, 113, 113, 113, + 113, 113, -58, -58, 119, 119, 119, 119, 119, 119, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 54, 52, 59, 59, 59, 59, 59, 59, 59, + 59, 52, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 52, 52, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57 + + }, + + { + 5, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60 + }, + + { + 5, -61, -61, -61, -61, -61, -61, -61, -61, -61, + -61, 62, -61, 63, 63, 63, 63, 63, 63, 63, + 63, -61, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -61, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -62, -62, -62, -62, -62, -62, -62, -62, -62, + -62, -62, -62, 115, 115, 115, 115, 115, 115, 115, + 115, -62, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -62, -62, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -63, -63, -63, -63, -63, -63, -63, -63, -63, + 61, 62, -63, 63, 63, 63, 63, 63, 63, 63, + + 63, -63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -63, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -64, -64, -64, -64, -64, -64, -64, -64, -64, + 120, -64, -64, 64, 64, 64, 64, 64, 64, 64, + 64, -64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + + }, + + { + 5, -65, -65, -65, -65, -65, -65, -65, -65, -65, + 61, 62, -65, 63, 63, 63, 63, 63, 63, 63, + 63, -65, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -65, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 121, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -66, -66, -66, -66, -66, -66, -66, -66, -66, + 61, 62, -66, 63, 63, 63, 63, 63, 63, 63, + 63, -66, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -66, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 122, 63, 63, 63, 63, 63 + }, + + { + 5, -67, -67, -67, -67, -67, -67, -67, -67, -67, + 61, 62, -67, 63, 63, 63, 63, 63, 63, 63, + 63, -67, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -67, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 123, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -68, -68, -68, -68, -68, -68, -68, -68, -68, + 61, 62, -68, 63, 63, 63, 63, 63, 63, 63, + + 63, -68, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -68, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 124, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -69, -69, -69, -69, -69, -69, -69, -69, -69, + 61, 62, -69, 63, 63, 63, 63, 63, 63, 63, + 63, -69, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -69, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 125, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -70, -70, -70, -70, -70, -70, -70, -70, -70, + 61, 62, -70, 63, 63, 63, 63, 63, 63, 63, + 63, -70, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -70, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 126, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -71, -71, -71, -71, -71, -71, -71, -71, -71, + 61, 62, -71, 63, 63, 63, 63, 63, 63, 63, + 63, -71, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -71, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 127, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -72, -72, -72, -72, -72, -72, -72, -72, -72, + 61, 62, -72, 63, 63, 63, 63, 63, 63, 63, + 63, -72, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -72, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 128, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, 62, -73, 74, 74, 74, 74, 74, 74, 74, + + 74, -73, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -73, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -74, -74, -74, -74, -74, -74, -74, -74, -74, + 73, 62, -74, 74, 74, 74, 74, 74, 74, 74, + 74, -74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -74, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -75, -75, -75, -75, -75, -75, -75, -75, -75, + 129, -75, -75, 75, 75, 75, 75, 75, 75, 75, + 75, -75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -76, -76, -76, -76, -76, -76, -76, -76, -76, + 73, 62, -76, 74, 74, 74, 74, 74, 74, 74, + 74, -76, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -76, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 130, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -77, -77, -77, -77, -77, -77, -77, -77, -77, + 73, 62, -77, 74, 74, 74, 74, 74, 74, 74, + 74, -77, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -77, 75, 74, 74, 131, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -78, -78, -78, -78, -78, -78, -78, -78, -78, + 73, 62, -78, 74, 74, 74, 74, 74, 74, 74, + + 74, -78, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -78, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 132, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -79, -79, -79, -79, -79, -79, -79, -79, -79, + 73, 62, -79, 74, 74, 74, 74, 74, 74, 74, + 74, -79, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -79, 75, 133, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -80, -80, -80, -80, -80, -80, -80, -80, -80, + 73, 62, -80, 74, 74, 74, 74, 74, 74, 74, + 74, -80, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -80, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 134, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -81, -81, -81, -81, -81, -81, -81, -81, -81, + 73, 62, -81, 74, 74, 74, 74, 74, 74, 74, + 74, -81, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -81, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 135, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -82, -82, -82, -82, -82, -82, -82, -82, -82, + 73, 62, -82, 74, 74, 74, 74, 74, 74, 74, + 74, -82, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -82, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 136, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -83, -83, -83, -83, -83, -83, -83, -83, -83, + 73, 62, -83, 74, 74, 74, 74, 74, 74, 74, + + 74, -83, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -83, 75, 74, 74, 74, 74, 74, 137, + 74, 74, 74, 74, 74, 74, 74, 74, 138, 74, + 74, 139, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -84, -84, -84, -84, -84, -84, -84, -84, -84, + 73, 62, -84, 74, 74, 74, 74, 74, 74, 74, + 74, -84, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -84, 75, 74, 74, 74, 74, 140, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -85, -85, -85, -85, -85, -85, -85, -85, -85, + 73, 62, -85, 74, 74, 74, 74, 74, 74, 74, + 74, -85, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -85, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 141, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -86, -86, -86, -86, -86, -86, -86, -86, -86, + 73, 62, -86, 74, 74, 74, 74, 74, 74, 74, + 74, -86, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -86, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 142, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -87, -87, -87, -87, -87, -87, -87, -87, -87, + 73, 62, -87, 74, 74, 74, 74, 74, 74, 74, + 74, -87, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -87, 75, 74, 74, 74, 74, 143, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -88, -88, -88, -88, -88, -88, -88, -88, -88, + 73, 62, -88, 74, 74, 74, 74, 74, 74, 74, + + 74, -88, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -88, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 144, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -89, -89, -89, -89, -89, -89, -89, -89, -89, + 73, 62, -89, 74, 74, 74, 74, 74, 74, 74, + 74, -89, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -89, 75, 74, 74, 74, 145, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -90, -90, -90, -90, -90, -90, -90, -90, -90, + 73, 62, -90, 74, 74, 74, 74, 74, 74, 74, + 74, -90, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -90, 75, 74, 74, 74, 74, 74, 74, + 146, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -91, -91, -91, -91, -91, -91, -91, -91, -91, + 73, 62, -91, 74, 74, 74, 74, 74, 74, 74, + 74, -91, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -91, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 147, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -92, -92, -92, -92, -92, -92, -92, -92, -92, + 73, 62, -92, 74, 74, 74, 74, 74, 74, 74, + 74, -92, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -92, 75, 74, 74, 74, 74, 74, 74, + 148, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -93, -93, -93, -93, -93, -93, -93, -93, -93, + 73, 62, -93, 74, 74, 74, 74, 74, 74, 74, + + 74, -93, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -93, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 149, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -94, -94, -94, -94, -94, -94, -94, -94, -94, + 73, 62, -94, 74, 74, 74, 74, 74, 74, 74, + 74, -94, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -94, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 150, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -95, -95, -95, -95, -95, -95, -95, -95, -95, + 73, 62, -95, 74, 74, 74, 74, 74, 74, 74, + 74, -95, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -95, 75, 151, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -96, -96, -96, -96, -96, -96, -96, -96, -96, + 73, 62, -96, 74, 74, 74, 74, 74, 74, 74, + 74, -96, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -96, 75, 152, 74, 74, 74, 74, 153, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 154, 74, 74, 74, 74 + }, + + { + 5, -97, -97, -97, -97, -97, -97, -97, -97, -97, + 73, 62, -97, 74, 74, 74, 74, 74, 74, 74, + 74, -97, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -97, 75, 155, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -98, -98, -98, -98, -98, -98, -98, -98, -98, + 73, 62, -98, 74, 74, 74, 74, 74, 74, 74, + + 74, -98, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -98, 75, 156, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -99, -99, -99, -99, -99, -99, -99, -99, -99, + 73, 62, -99, 74, 74, 74, 74, 74, 74, 74, + 74, -99, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -99, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 157, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -100, -100, -100, -100, -100, -100, -100, -100, -100, + 73, 62, -100, 74, 74, 74, 74, 74, 74, 74, + 74, -100, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -100, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 158, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 101, 101, 102, 103, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101 + }, + + { + 5, -102, -102, -102, 104, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, + -102, -102, -102, -102, -102, -102, -102, -102, -102 + }, + + { + 5, 101, 101, 105, 103, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101 + }, + + { + 5, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, + -104, -104, -104, -104, -104, -104, -104, -104, -104 + + }, + + { + 5, -105, -105, -105, 104, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, + -105, -105, -105, -105, -105, -105, -105, -105, -105 + }, + + { + 5, 45, 45, 45, 45, 45, 45, 46, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 47, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45 + }, + + { + 5, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, + -107, -107, -107, -107, -107, -107, -107, -107, -107 + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 108, 108, 108, 108, 108, 108, 108, + + 108, 107, 107, 107, 109, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 109, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107 + }, + + { + 5, -109, -109, -109, -109, -109, -109, -109, -109, 159, + 159, -109, -109, 160, 160, 160, 160, 160, 160, 160, + 160, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109 + + }, + + { + 5, -110, 110, 111, 112, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110 + }, + + { + 5, -111, -111, -111, 161, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + + -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, -111, -111 + }, + + { + 5, -112, -112, 162, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112 + }, + + { + 5, -113, -113, -113, -113, -113, -113, -113, -113, -113, + 116, 62, -113, 113, 113, 113, 113, 113, 113, 113, + + 113, -113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -113, -113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 163, 164, 107, 114, 114, 114, 114, 114, 114, 114, + 114, 107, 165, 165, 166, 165, 165, 165, 165, 165, + 165, 165, 107, 107, 165, 165, 165, 165, 166, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165 + + }, + + { + 5, -115, -115, -115, -115, -115, -115, -115, -115, -115, + 167, 168, -115, 115, 115, 115, 115, 115, 115, 115, + 115, -115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -115, -115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, 62, -116, 113, 113, 113, 113, 113, 113, 113, + 113, -116, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -116, -116, 113, 113, 113, 113, 113, 113, + + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -117, -117, -117, -117, -117, -117, -117, -117, -117, + -117, -117, -117, 114, 114, 114, 114, 114, 114, 114, + 114, -117, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -117, -117, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -118, -118, -118, -118, -118, -118, -118, -118, -118, + 116, 117, -118, 118, 118, 118, 118, 118, 118, 118, + + 118, -118, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -118, -118, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 170, 171, 169, 119, 119, 119, 119, 119, 119, 119, + 119, 169, 119, 119, 119, 119, 172, 172, 172, 172, + 172, 172, 169, 169, 119, 119, 119, 119, 119, 119, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172 + + }, + + { + 5, -120, -120, -120, -120, -120, -120, -120, -120, -120, + -120, -120, -120, 64, 64, 64, 64, 64, 64, 64, + 64, -120, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -120, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -121, -121, -121, -121, -121, -121, -121, -121, -121, + 61, 62, -121, 63, 63, 63, 63, 63, 63, 63, + 63, -121, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -121, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 173, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -122, -122, -122, -122, -122, -122, -122, -122, -122, + 61, 62, -122, 63, 63, 63, 63, 63, 63, 63, + 63, -122, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -122, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 174, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -123, -123, -123, -123, -123, -123, -123, -123, -123, + 61, 62, -123, 63, 63, 63, 63, 63, 63, 63, + + 63, -123, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -123, 64, 175, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -124, -124, -124, -124, -124, -124, -124, -124, -124, + 61, 62, -124, 63, 63, 63, 63, 63, 63, 63, + 63, -124, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -124, 64, 63, 63, 63, 63, 176, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -125, -125, -125, -125, -125, -125, -125, -125, -125, + 61, 62, -125, 63, 63, 63, 63, 63, 63, 63, + 63, -125, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -125, 64, 63, 63, 63, 63, 177, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -126, -126, -126, -126, -126, -126, -126, -126, -126, + 61, 62, -126, 63, 63, 63, 63, 63, 63, 63, + 63, -126, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -126, 64, 63, 63, 63, 63, 178, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -127, -127, -127, -127, -127, -127, -127, -127, -127, + 61, 62, -127, 63, 63, 63, 63, 63, 63, 63, + 63, -127, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -127, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 179, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -128, -128, -128, -128, -128, -128, -128, -128, -128, + 61, 62, -128, 63, 63, 63, 63, 63, 63, 63, + + 63, -128, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -128, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 180, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, 75, 75, 75, 75, 75, 75, 75, + 75, -129, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -129, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -130, -130, -130, -130, -130, -130, -130, -130, -130, + 73, 62, -130, 74, 74, 74, 74, 74, 74, 74, + 74, -130, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -130, 75, 74, 74, 74, 74, 74, 181, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -131, -131, -131, -131, -131, -131, -131, -131, -131, + 73, 62, -131, 74, 74, 74, 74, 74, 74, 74, + 74, -131, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -131, 75, 74, 74, 74, 74, 182, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -132, -132, -132, -132, -132, -132, -132, -132, -132, + 73, 62, -132, 74, 74, 74, 74, 74, 74, 74, + 74, -132, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -132, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 183, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -133, -133, -133, -133, -133, -133, -133, -133, -133, + 73, 62, -133, 74, 74, 74, 74, 74, 74, 74, + + 74, -133, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -133, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 184, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -134, -134, -134, -134, -134, -134, -134, -134, -134, + 73, 62, -134, 74, 74, 74, 74, 74, 74, 74, + 74, -134, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -134, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 185, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -135, -135, -135, -135, -135, -135, -135, -135, -135, + 73, 62, -135, 74, 74, 74, 74, 74, 74, 74, + 74, -135, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -135, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 186, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -136, -136, -136, -136, -136, -136, -136, -136, -136, + 73, 62, -136, 74, 74, 74, 74, 74, 74, 74, + 74, -136, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -136, 75, 74, 74, 74, 74, 187, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -137, -137, -137, -137, -137, -137, -137, -137, -137, + 73, 62, -137, 74, 74, 74, 74, 74, 74, 74, + 74, -137, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -137, 75, 188, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -138, -138, -138, -138, -138, -138, -138, -138, -138, + 73, 62, -138, 74, 74, 74, 74, 74, 74, 74, + + 74, -138, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -138, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 189, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -139, -139, -139, -139, -139, -139, -139, -139, -139, + 73, 62, -139, 74, 74, 74, 74, 74, 74, 74, + 74, -139, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -139, 75, 74, 74, 190, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -140, -140, -140, -140, -140, -140, -140, -140, -140, + 73, 62, -140, 74, 74, 74, 74, 74, 74, 74, + 74, -140, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -140, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 191, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -141, -141, -141, -141, -141, -141, -141, -141, -141, + 73, 62, -141, 74, 74, 74, 74, 74, 74, 74, + 74, -141, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -141, 75, 74, 74, 74, 74, 192, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -142, -142, -142, -142, -142, -142, -142, -142, -142, + 73, 62, -142, 74, 74, 74, 74, 74, 74, 74, + 74, -142, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -142, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 193, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -143, -143, -143, -143, -143, -143, -143, -143, -143, + 73, 62, -143, 74, 74, 74, 74, 74, 74, 74, + + 74, -143, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -143, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 194, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -144, -144, -144, -144, -144, -144, -144, -144, -144, + 73, 62, -144, 74, 74, 74, 74, 74, 74, 74, + 74, -144, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -144, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 195, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -145, -145, -145, -145, -145, -145, -145, -145, -145, + 73, 62, -145, 74, 74, 74, 74, 74, 74, 74, + 74, -145, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -145, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 196, 74, 74, 74, 74, 74 + }, + + { + 5, -146, -146, -146, -146, -146, -146, -146, -146, -146, + 73, 62, -146, 74, 74, 74, 74, 74, 74, 74, + 74, -146, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -146, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 197, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -147, -147, -147, -147, -147, -147, -147, -147, -147, + 73, 62, -147, 74, 74, 74, 74, 74, 74, 74, + 74, -147, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -147, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 198, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -148, -148, -148, -148, -148, -148, -148, -148, -148, + 73, 62, -148, 74, 74, 74, 74, 74, 74, 74, + + 74, -148, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -148, 75, 199, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -149, -149, -149, -149, -149, -149, -149, -149, -149, + 73, 62, -149, 74, 74, 74, 74, 74, 74, 74, + 74, -149, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -149, 75, 74, 74, 74, 74, 200, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -150, -150, -150, -150, -150, -150, -150, -150, -150, + 73, 62, -150, 74, 74, 74, 74, 74, 74, 74, + 74, -150, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -150, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 201, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -151, -151, -151, -151, -151, -151, -151, -151, -151, + 73, 62, -151, 74, 74, 74, 74, 74, 74, 74, + 74, -151, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -151, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 202, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -152, -152, -152, -152, -152, -152, -152, -152, -152, + 73, 62, -152, 74, 74, 74, 74, 74, 74, 74, + 74, -152, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -152, 75, 74, 74, 74, 203, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -153, -153, -153, -153, -153, -153, -153, -153, -153, + 73, 62, -153, 74, 74, 74, 74, 74, 74, 74, + + 74, -153, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -153, 75, 74, 74, 74, 74, 204, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -154, -154, -154, -154, -154, -154, -154, -154, -154, + 73, 62, -154, 74, 74, 74, 74, 74, 74, 74, + 74, -154, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -154, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 205, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -155, -155, -155, -155, -155, -155, -155, -155, -155, + 73, 62, -155, 74, 74, 74, 74, 74, 74, 74, + 74, -155, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -155, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 206, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -156, -156, -156, -156, -156, -156, -156, -156, -156, + 73, 62, -156, 74, 74, 74, 74, 74, 74, 74, + 74, -156, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -156, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 207, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -157, -157, -157, -157, -157, -157, -157, -157, -157, + 73, 62, -157, 74, 74, 74, 74, 74, 74, 74, + 74, -157, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -157, 75, 74, 74, 74, 74, 208, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -158, -158, -158, -158, -158, -158, -158, -158, -158, + 73, 62, -158, 74, 74, 74, 74, 74, 74, 74, + + 74, -158, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -158, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 209, + 74, 74, 210, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, 160, 160, 160, 160, 160, 160, 160, + 160, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159 + + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 160, 160, 160, 160, 160, 160, 160, + 160, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107 + }, + + { + 5, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + + -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, + -161, -161, -161, -161, -161, -161, -161, -161, -161 + }, + + { + 5, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, + -162, -162, -162, -162, -162, -162, -162, -162, -162 + }, + + { + 5, -163, -163, -163, -163, -163, -163, -163, -163, -163, + -163, 168, -163, 115, 115, 115, 115, 115, 115, 115, + + 115, -163, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -163, -163, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, 211, 211, 211, 211, 211, 211, 211, + 211, -164, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, -164, -164, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211 + + }, + + { + 5, -165, -165, -165, -165, -165, -165, -165, -165, -165, + 167, 168, -165, 115, 115, 115, 115, 115, 115, 115, + 115, -165, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -165, -165, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -166, -166, -166, -166, -166, -166, -166, -166, 159, + 212, 168, -166, 213, 213, 213, 213, 213, 213, 213, + 213, -166, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -166, -166, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, 168, -167, 115, 115, 115, 115, 115, 115, 115, + 115, -167, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -167, -167, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -168, -168, -168, -168, -168, -168, -168, -168, -168, + -168, -168, -168, 211, 211, 211, 211, 211, 211, 211, + + 211, -168, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, -168, -168, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211 + }, + + { + 5, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169 + + }, + + { + 5, -170, -170, -170, -170, -170, -170, -170, -170, -170, + -170, 62, -170, 113, 113, 113, 113, 113, 113, 113, + 113, -170, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -170, -170, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, 115, 115, 115, 115, 115, 115, 115, + 115, -171, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -171, -171, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -172, -172, -172, -172, -172, -172, -172, -172, -172, + 116, 62, -172, 113, 113, 113, 113, 113, 113, 113, + 113, -172, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, -172, -172, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113 + }, + + { + 5, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 61, 215, 214, 63, 63, 63, 63, 63, 63, 63, + + 63, 214, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 214, 216, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -174, -174, -174, -174, -174, -174, -174, -174, -174, + 61, 62, -174, 63, 63, 63, 63, 63, 63, 63, + 63, -174, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -174, 64, 63, 63, 63, 63, 217, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -175, -175, -175, -175, -175, -175, -175, -175, -175, + 61, 62, -175, 63, 63, 63, 63, 63, 63, 63, + 63, -175, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -175, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 218, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -176, -176, -176, -176, -176, -176, -176, -176, -176, + 61, 62, -176, 63, 63, 63, 63, 63, 63, 63, + 63, -176, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -176, 64, 63, 63, 63, 63, 63, 63, + + 219, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -177, -177, -177, -177, -177, -177, -177, -177, -177, + 61, 62, -177, 63, 63, 63, 63, 63, 63, 63, + 63, -177, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -177, 64, 63, 63, 220, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -178, -178, -178, -178, -178, -178, -178, -178, -178, + 61, 62, -178, 63, 63, 63, 63, 63, 63, 63, + + 63, -178, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -178, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 221, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -179, -179, -179, -179, -179, -179, -179, -179, -179, + 61, 62, -179, 63, 63, 63, 63, 63, 63, 63, + 63, -179, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -179, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 222, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -180, -180, -180, -180, -180, -180, -180, -180, -180, + 61, 62, -180, 63, 63, 63, 63, 63, 63, 63, + 63, -180, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -180, 64, 63, 63, 63, 63, 63, 63, + 223, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 224, 224, 224, 224, 224, 224, 224, 224, 224, + 73, 225, 224, 74, 74, 74, 74, 74, 74, 74, + 74, 224, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 224, 226, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -182, -182, -182, -182, -182, -182, -182, -182, -182, + 73, 62, -182, 74, 74, 74, 74, 74, 74, 74, + 74, -182, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -182, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 227, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -183, -183, -183, -183, -183, -183, -183, -183, -183, + 73, 62, -183, 74, 74, 74, 74, 74, 74, 74, + + 74, -183, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -183, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 228, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -184, -184, -184, -184, -184, -184, -184, -184, -184, + 73, 62, -184, 74, 74, 74, 74, 74, 74, 74, + 74, -184, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -184, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 229, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -185, -185, -185, -185, -185, -185, -185, -185, -185, + 73, 62, -185, 74, 74, 74, 74, 74, 74, 74, + 74, -185, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -185, 75, 230, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -186, -186, -186, -186, -186, -186, -186, -186, -186, + 73, 62, -186, 74, 74, 74, 74, 74, 74, 74, + 74, -186, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -186, 75, 74, 74, 74, 74, 231, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 73, 233, 232, 74, 74, 74, 74, 74, 74, 74, + 74, 232, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 232, 234, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -188, -188, -188, -188, -188, -188, -188, -188, -188, + 73, 62, -188, 74, 74, 74, 74, 74, 74, 74, + + 74, -188, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -188, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 235, 74, 74, 74, 74, 74 + }, + + { + 5, -189, -189, -189, -189, -189, -189, -189, -189, -189, + 73, 62, -189, 74, 74, 74, 74, 74, 74, 74, + 74, -189, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -189, 75, 74, 74, 74, 74, 236, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -190, -190, -190, -190, -190, -190, -190, -190, -190, + 73, 62, -190, 74, 74, 74, 74, 74, 74, 74, + 74, -190, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -190, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 237, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -191, -191, -191, -191, -191, -191, -191, -191, -191, + 73, 62, -191, 74, 74, 74, 74, 74, 74, 74, + 74, -191, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -191, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 238, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -192, -192, -192, -192, -192, -192, -192, -192, -192, + 73, 62, -192, 74, 74, 74, 74, 74, 74, 74, + 74, -192, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -192, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 239, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -193, -193, -193, -193, -193, -193, -193, -193, -193, + 73, 62, -193, 74, 74, 74, 74, 74, 74, 74, + + 74, -193, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -193, 75, 240, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -194, -194, -194, -194, -194, -194, -194, -194, -194, + 73, 62, -194, 74, 74, 74, 74, 74, 74, 74, + 74, -194, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -194, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 241, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -195, -195, -195, -195, -195, -195, -195, -195, -195, + 73, 62, -195, 74, 74, 74, 74, 74, 74, 74, + 74, -195, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -195, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 242, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -196, -196, -196, -196, -196, -196, -196, -196, -196, + 73, 62, -196, 74, 74, 74, 74, 74, 74, 74, + 74, -196, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -196, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 243, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -197, -197, -197, -197, -197, -197, -197, -197, -197, + 73, 62, -197, 74, 74, 74, 74, 74, 74, 74, + 74, -197, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -197, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 244, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -198, -198, -198, -198, -198, -198, -198, -198, -198, + 73, 62, -198, 74, 74, 74, 74, 74, 74, 74, + + 74, -198, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -198, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 245, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -199, -199, -199, -199, -199, -199, -199, -199, -199, + 73, 62, -199, 74, 74, 74, 74, 74, 74, 74, + 74, -199, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -199, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 246, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -200, -200, -200, -200, -200, -200, -200, -200, -200, + 73, 62, -200, 74, 74, 74, 74, 74, 74, 74, + 74, -200, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -200, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 247, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -201, -201, -201, -201, -201, -201, -201, -201, -201, + 73, 62, -201, 74, 74, 74, 74, 74, 74, 74, + 74, -201, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -201, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 248, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 73, 250, 249, 74, 74, 74, 74, 74, 74, 74, + 74, 249, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 249, 251, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -203, -203, -203, -203, -203, -203, -203, -203, -203, + 73, 62, -203, 74, 74, 74, 74, 74, 74, 74, + + 74, -203, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -203, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 252, 74, 74, + 74, 74, 74, 74, 74, 253, 74, 74, 74 + }, + + { + 5, -204, -204, -204, -204, -204, -204, -204, -204, -204, + 73, 62, -204, 74, 74, 74, 74, 74, 74, 74, + 74, -204, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -204, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 254, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -205, -205, -205, -205, -205, -205, -205, -205, -205, + 73, 62, -205, 74, 74, 74, 74, 74, 74, 74, + 74, -205, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -205, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 255, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 256, 256, 256, 256, 256, 256, 256, 256, 256, + 73, 257, 256, 74, 74, 74, 74, 74, 74, 74, + 74, 256, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 256, 258, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -207, -207, -207, -207, -207, -207, -207, -207, -207, + 73, 62, -207, 74, 74, 74, 74, 74, 74, 74, + 74, -207, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -207, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 259, 74, 74, 74, 74, 74 + }, + + { + 5, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 73, 261, 260, 74, 74, 74, 74, 74, 74, 74, + + 74, 260, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 260, 262, 74, 74, 74, 263, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -209, -209, -209, -209, -209, -209, -209, -209, -209, + 73, 62, -209, 74, 74, 74, 74, 74, 74, 74, + 74, -209, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -209, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 264, 74, 74, 74, 74, 74 + + }, + + { + 5, -210, -210, -210, -210, -210, -210, -210, -210, -210, + 73, 62, -210, 74, 74, 74, 74, 74, 74, 74, + 74, -210, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -210, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 265, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 267, 268, 266, 211, 211, 211, 211, 211, 211, 211, + 211, 266, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 266, 266, 211, 211, 211, 211, 211, 211, + + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211 + }, + + { + 5, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, 168, -212, 213, 213, 213, 213, 213, 213, 213, + 213, -212, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -212, -212, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 163, 164, 107, 213, 213, 213, 213, 213, 213, 213, + + 213, 107, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 107, 107, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165 + }, + + { + 5, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214 + + }, + + { + 5, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, 115, 115, 115, 115, 115, 115, 115, + 115, -215, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -215, -215, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -216, -216, -216, -216, -216, -216, -216, -216, -216, + 120, -216, -216, 64, 64, 64, 64, 64, 64, 64, + 64, -216, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -216, 64, 64, 64, 64, 64, 64, 64, + + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -217, -217, -217, -217, -217, -217, -217, -217, -217, + 61, 62, -217, 63, 63, 63, 63, 63, 63, 63, + 63, -217, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -217, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 269, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -218, -218, -218, -218, -218, -218, -218, -218, -218, + 61, 62, -218, 63, 270, 63, 271, 63, 63, 272, + + 63, -218, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -218, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -219, -219, -219, -219, -219, -219, -219, -219, -219, + 61, 62, -219, 63, 63, 63, 63, 63, 63, 63, + 63, -219, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -219, 64, 63, 63, 63, 63, 273, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -220, -220, -220, -220, -220, -220, -220, -220, -220, + 61, 62, -220, 63, 63, 63, 63, 63, 63, 63, + 63, -220, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -220, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 274, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -221, -221, -221, -221, -221, -221, -221, -221, -221, + 61, 62, -221, 63, 63, 63, 63, 63, 63, 63, + 63, -221, 63, 63, 63, 63, 63, 63, 63, 63, + 275, 63, -221, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -222, -222, -222, -222, -222, -222, -222, -222, -222, + 61, 62, -222, 63, 63, 63, 63, 63, 63, 63, + 63, -222, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -222, 64, 63, 63, 63, 63, 276, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -223, -223, -223, -223, -223, -223, -223, -223, -223, + 61, 62, -223, 63, 63, 63, 63, 63, 63, 63, + + 63, -223, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -223, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 277, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224 + + }, + + { + 5, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, 115, 115, 115, 115, 115, 115, 115, + 115, -225, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -225, -225, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -226, -226, -226, -226, -226, -226, -226, -226, -226, + 129, -226, -226, 75, 75, 75, 75, 75, 75, 75, + 75, -226, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -226, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -227, -227, -227, -227, -227, -227, -227, -227, -227, + 73, 62, -227, 74, 74, 74, 74, 74, 74, 74, + 74, -227, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -227, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 278, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -228, -228, -228, -228, -228, -228, -228, -228, -228, + 73, 62, -228, 74, 74, 74, 74, 74, 74, 74, + + 74, -228, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -228, 75, 74, 279, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 280, 280, 280, 280, 280, 280, 280, 280, 280, + 73, 281, 280, 74, 74, 74, 74, 74, 74, 74, + 74, 280, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 280, 282, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -230, -230, -230, -230, -230, -230, -230, -230, -230, + 73, 62, -230, 74, 74, 74, 74, 74, 74, 74, + 74, -230, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -230, 75, 74, 74, 283, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -231, -231, -231, -231, -231, -231, -231, -231, -231, + 73, 62, -231, 74, 74, 74, 74, 74, 74, 74, + 74, -231, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -231, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 284, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232 + }, + + { + 5, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, 115, 115, 115, 115, 115, 115, 115, + + 115, -233, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -233, -233, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -234, -234, -234, -234, -234, -234, -234, -234, -234, + 129, -234, -234, 75, 75, 75, 75, 75, 75, 75, + 75, -234, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -234, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -235, -235, -235, -235, -235, -235, -235, -235, -235, + 73, 62, -235, 74, 74, 74, 74, 74, 74, 74, + 74, -235, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -235, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 285, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -236, -236, -236, -236, -236, -236, -236, -236, -236, + 73, 62, -236, 74, 74, 74, 74, 74, 74, 74, + 74, -236, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -236, 75, 74, 74, 286, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -237, -237, -237, -237, -237, -237, -237, -237, -237, + 73, 62, -237, 74, 74, 74, 74, 74, 74, 74, + 74, -237, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -237, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 287, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 288, 288, 288, 288, 288, 288, 288, 288, 288, + 73, 289, 288, 74, 74, 74, 74, 74, 74, 74, + + 74, 288, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 288, 290, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 291, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -239, -239, -239, -239, -239, -239, -239, -239, -239, + 73, 62, -239, 74, 74, 74, 74, 74, 74, 74, + 74, -239, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -239, 75, 74, 74, 74, 292, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 293, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -240, -240, -240, -240, -240, -240, -240, -240, -240, + 73, 62, -240, 74, 74, 74, 74, 74, 74, 74, + 74, -240, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -240, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 294, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -241, -241, -241, -241, -241, -241, -241, -241, -241, + 73, 62, -241, 74, 74, 74, 74, 74, 74, 74, + 74, -241, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -241, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 295, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -242, -242, -242, -242, -242, -242, -242, -242, -242, + 73, 62, -242, 74, 74, 74, 74, 74, 74, 74, + 74, -242, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -242, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 296, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -243, -243, -243, -243, -243, -243, -243, -243, -243, + 73, 62, -243, 74, 74, 74, 74, 74, 74, 74, + + 74, -243, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -243, 75, 74, 74, 74, 74, 297, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -244, -244, -244, -244, -244, -244, -244, -244, -244, + 73, 62, -244, 74, 74, 74, 74, 74, 74, 74, + 74, -244, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -244, 75, 74, 74, 74, 74, 74, 298, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -245, -245, -245, -245, -245, -245, -245, -245, -245, + 73, 62, -245, 74, 74, 74, 74, 74, 74, 74, + 74, -245, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -245, 75, 74, 74, 74, 74, 299, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -246, -246, -246, -246, -246, -246, -246, -246, -246, + 73, 62, -246, 74, 74, 74, 74, 74, 74, 74, + 74, -246, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -246, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 300, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -247, -247, -247, -247, -247, -247, -247, -247, -247, + 73, 62, -247, 74, 74, 74, 74, 74, 74, 74, + 74, -247, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -247, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 301, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -248, -248, -248, -248, -248, -248, -248, -248, -248, + 73, 62, -248, 74, 74, 74, 74, 74, 74, 74, + + 74, -248, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -248, 75, 74, 74, 74, 74, 74, 302, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249 + + }, + + { + 5, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, 115, 115, 115, 115, 115, 115, 115, + 115, -250, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -250, -250, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -251, -251, -251, -251, -251, -251, -251, -251, -251, + 129, -251, -251, 75, 75, 75, 75, 75, 75, 75, + 75, -251, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -251, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -252, -252, -252, -252, -252, -252, -252, -252, -252, + 73, 62, -252, 74, 74, 74, 74, 74, 74, 74, + 74, -252, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -252, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 303, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -253, -253, -253, -253, -253, -253, -253, -253, -253, + 73, 62, -253, 74, 74, 74, 74, 74, 74, 74, + + 74, -253, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -253, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 304, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -254, -254, -254, -254, -254, -254, -254, -254, -254, + 73, 62, -254, 74, 74, 74, 74, 74, 74, 74, + 74, -254, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -254, 75, 74, 74, 74, 74, 305, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -255, -255, -255, -255, -255, -255, -255, -255, -255, + 73, 62, -255, 74, 74, 74, 74, 74, 74, 74, + 74, -255, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -255, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 306, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256 + }, + + { + 5, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, 115, 115, 115, 115, 115, 115, 115, + 115, -257, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -257, -257, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -258, -258, -258, -258, -258, -258, -258, -258, -258, + 129, -258, -258, 75, 75, 75, 75, 75, 75, 75, + + 75, -258, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -258, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -259, -259, -259, -259, -259, -259, -259, -259, -259, + 73, 62, -259, 74, 74, 74, 74, 74, 74, 74, + 74, -259, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -259, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 307, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260 + }, + + { + 5, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, 115, 115, 115, 115, 115, 115, 115, + 115, -261, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -261, -261, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -262, -262, -262, -262, -262, -262, -262, -262, -262, + 129, -262, -262, 75, 75, 75, 75, 75, 75, 75, + 75, -262, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -262, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -263, -263, -263, -263, -263, -263, -263, -263, -263, + 73, 62, -263, 74, 74, 74, 74, 74, 74, 74, + + 74, -263, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -263, 75, 74, 74, 74, 74, 308, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -264, -264, -264, -264, -264, -264, -264, -264, -264, + 73, 62, -264, 74, 74, 74, 74, 74, 74, 74, + 74, -264, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -264, 75, 74, 74, 74, 74, 309, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 73, 311, 310, 74, 74, 74, 74, 74, 74, 74, + 74, 310, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 310, 312, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266 + }, + + { + 5, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 268, 266, 211, 211, 211, 211, 211, 211, 211, + 211, 266, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 266, 266, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211 + }, + + { + 5, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, 313, 313, 313, 313, 313, 313, 313, + + 313, -268, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, -268, -268, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313 + }, + + { + 5, -269, -269, -269, -269, -269, -269, -269, -269, -269, + 61, 62, -269, 63, 63, 63, 63, 63, 63, 63, + 63, -269, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -269, 64, 314, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -270, -270, -270, -270, -270, -270, -270, -270, -270, + 61, 62, -270, 63, 63, 315, 63, 63, 63, 63, + 63, -270, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -270, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -271, -271, -271, -271, -271, -271, -271, -271, -271, + 61, 62, -271, 63, 63, 316, 63, 63, 63, 63, + 63, -271, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -271, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -272, -272, -272, -272, -272, -272, -272, -272, -272, + 61, 62, -272, 63, 63, 63, 63, 317, 63, 63, + 63, -272, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -272, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -273, -273, -273, -273, -273, -273, -273, -273, -273, + 61, 62, -273, 63, 63, 63, 63, 63, 63, 63, + + 63, -273, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -273, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 318, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -274, -274, -274, -274, -274, -274, -274, -274, -274, + 61, 62, -274, 63, 63, 63, 63, 63, 63, 63, + 63, -274, 63, 63, 63, 63, 63, 319, 63, 63, + 63, 63, -274, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -275, -275, -275, -275, -275, -275, -275, -275, -275, + 61, 62, -275, 63, 63, 63, 63, 63, 63, 63, + 63, -275, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -275, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 320, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -276, -276, -276, -276, -276, -276, -276, -276, -276, + 61, 62, -276, 63, 63, 63, 63, 63, 63, 63, + 63, -276, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -276, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 321, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -277, -277, -277, -277, -277, -277, -277, -277, -277, + 61, 62, -277, 63, 63, 63, 63, 63, 63, 63, + 63, -277, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -277, 64, 63, 63, 63, 63, 322, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 323, 323, 323, 323, 323, 323, 323, 323, 323, + 73, 324, 323, 74, 74, 74, 74, 74, 74, 74, + + 74, 323, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 323, 325, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -279, -279, -279, -279, -279, -279, -279, -279, -279, + 73, 62, -279, 74, 74, 74, 74, 74, 74, 74, + 74, -279, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -279, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 326, 74, 74, 74, 74, 74 + + }, + + { + 5, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280 + }, + + { + 5, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, 115, 115, 115, 115, 115, 115, 115, + 115, -281, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -281, -281, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -282, -282, -282, -282, -282, -282, -282, -282, -282, + 129, -282, -282, 75, 75, 75, 75, 75, 75, 75, + 75, -282, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -282, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -283, -283, -283, -283, -283, -283, -283, -283, -283, + 73, 62, -283, 74, 74, 74, 74, 74, 74, 74, + + 74, -283, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -283, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 327, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -284, -284, -284, -284, -284, -284, -284, -284, -284, + 73, 62, -284, 74, 74, 74, 74, 74, 74, 74, + 74, -284, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -284, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 328, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -285, -285, -285, -285, -285, -285, -285, -285, -285, + 73, 62, -285, 74, 74, 74, 74, 74, 74, 74, + 74, -285, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -285, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 329, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -286, -286, -286, -286, -286, -286, -286, -286, -286, + 73, 62, -286, 74, 74, 74, 74, 74, 74, 74, + 74, -286, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -286, 75, 330, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -287, -287, -287, -287, -287, -287, -287, -287, -287, + 73, 62, -287, 74, 74, 74, 74, 74, 74, 74, + 74, -287, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -287, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 331, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288 + }, + + { + 5, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, 115, 115, 115, 115, 115, 115, 115, + 115, -289, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -289, -289, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -290, -290, -290, -290, -290, -290, -290, -290, -290, + 129, -290, -290, 75, 75, 75, 75, 75, 75, 75, + 75, -290, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -290, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -291, -291, -291, -291, -291, -291, -291, -291, -291, + 73, 62, -291, 74, 74, 74, 74, 74, 74, 74, + 74, -291, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -291, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 332, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -292, -292, -292, -292, -292, -292, -292, -292, -292, + 73, 62, -292, 74, 74, 74, 74, 74, 74, 74, + 74, -292, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -292, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 333, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -293, -293, -293, -293, -293, -293, -293, -293, -293, + 73, 62, -293, 74, 74, 74, 74, 74, 74, 74, + + 74, -293, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -293, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 334, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 73, 336, 335, 74, 74, 74, 74, 74, 74, 74, + 74, 335, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 335, 337, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -295, -295, -295, -295, -295, -295, -295, -295, -295, + 73, 62, -295, 74, 74, 74, 74, 74, 74, 74, + 74, -295, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -295, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 338, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 73, 340, 339, 74, 74, 74, 74, 74, 74, 74, + 74, 339, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 339, 341, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 73, 343, 342, 74, 74, 74, 74, 74, 74, 74, + 74, 342, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 342, 344, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 73, 346, 345, 74, 74, 74, 74, 74, 74, 74, + + 74, 345, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 345, 347, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 73, 62, -299, 74, 74, 74, 74, 74, 74, 74, + 74, -299, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -299, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 348, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -300, -300, -300, -300, -300, -300, -300, -300, -300, + 73, 62, -300, 74, 74, 74, 74, 74, 74, 74, + 74, -300, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -300, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 349 + }, + + { + 5, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 73, 351, 350, 74, 74, 74, 74, 74, 74, 74, + 74, 350, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 350, 352, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 73, 354, 353, 74, 74, 74, 74, 74, 74, 74, + 74, 353, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 353, 355, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -303, -303, -303, -303, -303, -303, -303, -303, -303, + 73, 62, -303, 74, 74, 74, 74, 74, 74, 74, + + 74, -303, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -303, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 356, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -304, -304, -304, -304, -304, -304, -304, -304, -304, + 73, 62, -304, 74, 74, 74, 74, 74, 74, 74, + 74, -304, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -304, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 357, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -305, -305, -305, -305, -305, -305, -305, -305, -305, + 73, 62, -305, 74, 74, 74, 74, 74, 74, 74, + 74, -305, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -305, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 358, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -306, -306, -306, -306, -306, -306, -306, -306, -306, + 73, 62, -306, 74, 74, 74, 74, 74, 74, 74, + 74, -306, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -306, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 359, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 360, 360, 360, 360, 360, 360, 360, 360, 360, + 73, 361, 360, 74, 74, 74, 74, 74, 74, 74, + 74, 360, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 360, 362, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -308, -308, -308, -308, -308, -308, -308, -308, -308, + 73, 62, -308, 74, 74, 74, 74, 74, 74, 74, + + 74, -308, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -308, 75, 74, 74, 74, 74, 74, 363, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 73, 365, 364, 74, 74, 74, 74, 74, 74, 74, + 74, 364, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 364, 366, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310 + }, + + { + 5, -311, -311, -311, -311, -311, -311, -311, -311, -311, + -311, -311, -311, 115, 115, 115, 115, 115, 115, 115, + 115, -311, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -311, -311, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -312, -312, -312, -312, -312, -312, -312, -312, -312, + 129, -312, -312, 75, 75, 75, 75, 75, 75, 75, + 75, -312, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -312, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 367, 268, 266, 313, 313, 313, 313, 313, 313, 313, + + 313, 266, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 266, 266, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313 + }, + + { + 5, -314, -314, -314, -314, -314, -314, -314, -314, -314, + 61, 62, -314, 63, 63, 63, 63, 63, 63, 63, + 63, -314, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -314, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 368, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -315, -315, -315, -315, -315, -315, -315, -315, -315, + 61, 62, -315, 63, 63, 63, 63, 63, 63, 63, + 369, -315, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -315, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 61, 371, 370, 63, 63, 63, 63, 63, 63, 63, + 63, 370, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 370, 372, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 61, 374, 373, 63, 63, 63, 63, 63, 63, 63, + 63, 373, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 373, 375, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -318, -318, -318, -318, -318, -318, -318, -318, -318, + 61, 62, -318, 63, 63, 63, 376, 63, 63, 377, + + 63, -318, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -318, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -319, -319, -319, -319, -319, -319, -319, -319, -319, + 61, 62, -319, 63, 63, 63, 63, 63, 63, 63, + 63, -319, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -319, 64, 63, 63, 63, 378, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -320, -320, -320, -320, -320, -320, -320, -320, -320, + 61, 62, -320, 63, 63, 63, 63, 63, 63, 63, + 63, -320, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -320, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 379, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 380, 380, 380, 380, 380, 380, 380, 380, 380, + 61, 381, 380, 63, 63, 63, 63, 63, 63, 63, + 63, 380, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 380, 382, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -322, -322, -322, -322, -322, -322, -322, -322, -322, + 61, 62, -322, 63, 63, 63, 63, 63, 63, 63, + 63, -322, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -322, 64, 63, 63, 63, 383, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323, -323, + -323, -323, -323, -323, -323, -323, -323, -323, -323 + }, + + { + 5, -324, -324, -324, -324, -324, -324, -324, -324, -324, + -324, -324, -324, 115, 115, 115, 115, 115, 115, 115, + 115, -324, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -324, -324, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -325, -325, -325, -325, -325, -325, -325, -325, -325, + 129, -325, -325, 75, 75, 75, 75, 75, 75, 75, + 75, -325, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -325, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -326, -326, -326, -326, -326, -326, -326, -326, -326, + 73, 62, -326, 74, 74, 74, 74, 74, 74, 74, + 74, -326, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -326, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 384, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 73, 386, 385, 74, 74, 74, 74, 74, 74, 74, + 74, 385, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 385, 387, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 73, 389, 388, 74, 74, 74, 74, 74, 74, 74, + + 74, 388, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 388, 390, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 73, 392, 391, 74, 74, 74, 74, 74, 74, 74, + 74, 391, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 391, 393, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -330, -330, -330, -330, -330, -330, -330, -330, -330, + 73, 62, -330, 74, 74, 74, 74, 74, 74, 74, + 74, -330, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -330, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 394, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -331, -331, -331, -331, -331, -331, -331, -331, -331, + 73, 62, -331, 74, 74, 74, 74, 74, 74, 74, + 74, -331, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -331, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 395, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -332, -332, -332, -332, -332, -332, -332, -332, -332, + 73, 62, -332, 74, 74, 74, 74, 74, 74, 74, + 74, -332, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -332, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 396, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 397, 397, 397, 397, 397, 397, 397, 397, 397, + 73, 398, 397, 74, 74, 74, 74, 74, 74, 74, + + 74, 397, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 397, 399, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -334, -334, -334, -334, -334, -334, -334, -334, -334, + 73, 62, -334, 74, 74, 74, 74, 74, 74, 74, + 74, -334, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -334, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 400, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335, -335, + -335, -335, -335, -335, -335, -335, -335, -335, -335 + }, + + { + 5, -336, -336, -336, -336, -336, -336, -336, -336, -336, + -336, -336, -336, 115, 115, 115, 115, 115, 115, 115, + 115, -336, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -336, -336, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -337, -337, -337, -337, -337, -337, -337, -337, -337, + 129, -337, -337, 75, 75, 75, 75, 75, 75, 75, + 75, -337, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -337, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -338, -338, -338, -338, -338, -338, -338, -338, -338, + 73, 62, -338, 74, 74, 74, 74, 74, 74, 74, + + 74, -338, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -338, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 401, 74 + }, + + { + 5, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339, -339, + -339, -339, -339, -339, -339, -339, -339, -339, -339 + + }, + + { + 5, -340, -340, -340, -340, -340, -340, -340, -340, -340, + -340, -340, -340, 115, 115, 115, 115, 115, 115, 115, + 115, -340, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -340, -340, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -341, -341, -341, -341, -341, -341, -341, -341, -341, + 129, -341, -341, 75, 75, 75, 75, 75, 75, 75, + 75, -341, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -341, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342, -342, + -342, -342, -342, -342, -342, -342, -342, -342, -342 + }, + + { + 5, -343, -343, -343, -343, -343, -343, -343, -343, -343, + -343, -343, -343, 115, 115, 115, 115, 115, 115, 115, + + 115, -343, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -343, -343, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -344, -344, -344, -344, -344, -344, -344, -344, -344, + 129, -344, -344, 75, 75, 75, 75, 75, 75, 75, + 75, -344, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -344, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345, -345, + -345, -345, -345, -345, -345, -345, -345, -345, -345 + }, + + { + 5, -346, -346, -346, -346, -346, -346, -346, -346, -346, + -346, -346, -346, 115, 115, 115, 115, 115, 115, 115, + 115, -346, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -346, -346, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -347, -347, -347, -347, -347, -347, -347, -347, -347, + 129, -347, -347, 75, 75, 75, 75, 75, 75, 75, + 75, -347, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -347, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -348, -348, -348, -348, -348, -348, -348, -348, -348, + 73, 62, -348, 74, 74, 74, 74, 74, 74, 74, + + 74, -348, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -348, 75, 74, 74, 74, 74, 402, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -349, -349, -349, -349, -349, -349, -349, -349, -349, + 73, 62, -349, 74, 74, 74, 74, 74, 74, 74, + 74, -349, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -349, 75, 403, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350 + }, + + { + 5, -351, -351, -351, -351, -351, -351, -351, -351, -351, + -351, -351, -351, 115, 115, 115, 115, 115, 115, 115, + 115, -351, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -351, -351, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -352, -352, -352, -352, -352, -352, -352, -352, -352, + 129, -352, -352, 75, 75, 75, 75, 75, 75, 75, + 75, -352, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -352, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -353, -353, -353, -353, -353, -353, -353, -353, -353, + -353, -353, -353, -353, -353, -353, -353, -353, -353, -353, + + -353, -353, -353, -353, -353, -353, -353, -353, -353, -353, + -353, -353, -353, -353, -353, -353, -353, -353, -353, -353, + -353, -353, -353, -353, -353, -353, -353, -353, -353, -353, + -353, -353, -353, -353, -353, -353, -353, -353, -353 + }, + + { + 5, -354, -354, -354, -354, -354, -354, -354, -354, -354, + -354, -354, -354, 115, 115, 115, 115, 115, 115, 115, + 115, -354, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -354, -354, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -355, -355, -355, -355, -355, -355, -355, -355, -355, + 129, -355, -355, 75, 75, 75, 75, 75, 75, 75, + 75, -355, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -355, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -356, -356, -356, -356, -356, -356, -356, -356, -356, + 73, 62, -356, 74, 74, 74, 74, 74, 74, 74, + 74, -356, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -356, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 404, 74 + }, + + { + 5, -357, -357, -357, -357, -357, -357, -357, -357, -357, + 73, 62, -357, 74, 74, 74, 74, 74, 74, 74, + 74, -357, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -357, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 405, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -358, -358, -358, -358, -358, -358, -358, -358, -358, + 73, 62, -358, 74, 74, 74, 74, 74, 74, 74, + + 74, -358, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -358, 75, 74, 74, 406, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -359, -359, -359, -359, -359, -359, -359, -359, -359, + 73, 62, -359, 74, 74, 74, 74, 74, 74, 74, + 74, -359, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -359, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 407, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360, -360, + -360, -360, -360, -360, -360, -360, -360, -360, -360 + }, + + { + 5, -361, -361, -361, -361, -361, -361, -361, -361, -361, + -361, -361, -361, 115, 115, 115, 115, 115, 115, 115, + 115, -361, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -361, -361, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -362, -362, -362, -362, -362, -362, -362, -362, -362, + 129, -362, -362, 75, 75, 75, 75, 75, 75, 75, + 75, -362, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -362, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 73, 409, 408, 74, 74, 74, 74, 74, 74, 74, + + 74, 408, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 408, 410, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364, -364, + -364, -364, -364, -364, -364, -364, -364, -364, -364 + + }, + + { + 5, -365, -365, -365, -365, -365, -365, -365, -365, -365, + -365, -365, -365, 115, 115, 115, 115, 115, 115, 115, + 115, -365, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -365, -365, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -366, -366, -366, -366, -366, -366, -366, -366, -366, + 129, -366, -366, 75, 75, 75, 75, 75, 75, 75, + 75, -366, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -366, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 268, 266, 313, 313, 313, 313, 313, 313, 313, + 313, 266, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 266, 266, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313 + }, + + { + 5, -368, -368, -368, -368, -368, -368, -368, -368, -368, + 61, 62, -368, 63, 63, 63, 63, 63, 63, 63, + + 63, -368, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -368, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 411, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 412, 412, 412, 412, 412, 412, 412, 412, 412, + 61, 413, 412, 63, 63, 63, 63, 63, 63, 63, + 63, 412, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 412, 414, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370, -370, + -370, -370, -370, -370, -370, -370, -370, -370, -370 + }, + + { + 5, -371, -371, -371, -371, -371, -371, -371, -371, -371, + -371, -371, -371, 115, 115, 115, 115, 115, 115, 115, + 115, -371, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -371, -371, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -372, -372, -372, -372, -372, -372, -372, -372, -372, + 120, -372, -372, 64, 64, 64, 64, 64, 64, 64, + 64, -372, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -372, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -373, -373, -373, -373, -373, -373, -373, -373, -373, + -373, -373, -373, -373, -373, -373, -373, -373, -373, -373, + + -373, -373, -373, -373, -373, -373, -373, -373, -373, -373, + -373, -373, -373, -373, -373, -373, -373, -373, -373, -373, + -373, -373, -373, -373, -373, -373, -373, -373, -373, -373, + -373, -373, -373, -373, -373, -373, -373, -373, -373 + }, + + { + 5, -374, -374, -374, -374, -374, -374, -374, -374, -374, + -374, -374, -374, 115, 115, 115, 115, 115, 115, 115, + 115, -374, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -374, -374, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -375, -375, -375, -375, -375, -375, -375, -375, -375, + 120, -375, -375, 64, 64, 64, 64, 64, 64, 64, + 64, -375, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -375, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -376, -376, -376, -376, -376, -376, -376, -376, -376, + 61, 62, -376, 63, 63, 415, 63, 63, 63, 63, + 63, -376, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -376, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -377, -377, -377, -377, -377, -377, -377, -377, -377, + 61, 62, -377, 63, 63, 63, 63, 416, 63, 63, + 63, -377, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -377, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -378, -378, -378, -378, -378, -378, -378, -378, -378, + 61, 62, -378, 63, 63, 63, 63, 63, 63, 63, + + 63, -378, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -378, 64, 63, 63, 63, 63, 417, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -379, -379, -379, -379, -379, -379, -379, -379, -379, + 61, 62, -379, 63, 63, 63, 63, 63, 63, 63, + 63, -379, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -379, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 418, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, + -380, -380, -380, -380, -380, -380, -380, -380, -380 + }, + + { + 5, -381, -381, -381, -381, -381, -381, -381, -381, -381, + -381, -381, -381, 115, 115, 115, 115, 115, 115, 115, + 115, -381, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -381, -381, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -382, -382, -382, -382, -382, -382, -382, -382, -382, + 120, -382, -382, 64, 64, 64, 64, 64, 64, 64, + 64, -382, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -382, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -383, -383, -383, -383, -383, -383, -383, -383, -383, + 61, 62, -383, 63, 63, 63, 419, 63, 63, 420, + + 63, -383, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -383, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -384, -384, -384, -384, -384, -384, -384, -384, -384, + 73, 62, -384, 74, 74, 74, 74, 74, 74, 74, + 74, -384, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -384, 75, 74, 74, 74, 74, 421, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385 + }, + + { + 5, -386, -386, -386, -386, -386, -386, -386, -386, -386, + -386, -386, -386, 115, 115, 115, 115, 115, 115, 115, + 115, -386, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -386, -386, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -387, -387, -387, -387, -387, -387, -387, -387, -387, + 129, -387, -387, 75, 75, 75, 75, 75, 75, 75, + 75, -387, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -387, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -388, -388, -388, -388, -388, -388, -388, -388, -388, + -388, -388, -388, -388, -388, -388, -388, -388, -388, -388, + + -388, -388, -388, -388, -388, -388, -388, -388, -388, -388, + -388, -388, -388, -388, -388, -388, -388, -388, -388, -388, + -388, -388, -388, -388, -388, -388, -388, -388, -388, -388, + -388, -388, -388, -388, -388, -388, -388, -388, -388 + }, + + { + 5, -389, -389, -389, -389, -389, -389, -389, -389, -389, + -389, -389, -389, 115, 115, 115, 115, 115, 115, 115, + 115, -389, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -389, -389, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -390, -390, -390, -390, -390, -390, -390, -390, -390, + 129, -390, -390, 75, 75, 75, 75, 75, 75, 75, + 75, -390, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -390, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, + + -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, + -391, -391, -391, -391, -391, -391, -391, -391, -391 + }, + + { + 5, -392, -392, -392, -392, -392, -392, -392, -392, -392, + -392, -392, -392, 115, 115, 115, 115, 115, 115, 115, + 115, -392, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -392, -392, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -393, -393, -393, -393, -393, -393, -393, -393, -393, + 129, -393, -393, 75, 75, 75, 75, 75, 75, 75, + + 75, -393, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -393, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -394, -394, -394, -394, -394, -394, -394, -394, -394, + 73, 62, -394, 74, 74, 74, 74, 74, 74, 74, + 74, -394, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -394, 75, 74, 74, 74, 74, 422, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -395, -395, -395, -395, -395, -395, -395, -395, -395, + 73, 62, -395, 74, 74, 74, 74, 74, 74, 74, + 74, -395, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -395, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 423, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -396, -396, -396, -396, -396, -396, -396, -396, -396, + 73, 62, -396, 74, 74, 74, 74, 74, 74, 74, + 74, -396, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -396, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 424, 74 + }, + + { + 5, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397, -397, + -397, -397, -397, -397, -397, -397, -397, -397, -397 + }, + + { + 5, -398, -398, -398, -398, -398, -398, -398, -398, -398, + -398, -398, -398, 115, 115, 115, 115, 115, 115, 115, + + 115, -398, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -398, -398, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -399, -399, -399, -399, -399, -399, -399, -399, -399, + 129, -399, -399, 75, 75, 75, 75, 75, 75, 75, + 75, -399, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -399, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -400, -400, -400, -400, -400, -400, -400, -400, -400, + 73, 62, -400, 74, 74, 74, 74, 74, 74, 74, + 74, -400, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -400, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 425, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 73, 427, 426, 74, 74, 74, 74, 74, 74, 74, + 74, 426, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 426, 428, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 429, 429, 429, 429, 429, 429, 429, 429, 429, + 73, 430, 429, 74, 74, 74, 74, 74, 74, 74, + 74, 429, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 429, 431, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -403, -403, -403, -403, -403, -403, -403, -403, -403, + 73, 62, -403, 74, 74, 74, 74, 74, 74, 74, + + 74, -403, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -403, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 432, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 433, 433, 433, 433, 433, 433, 433, 433, 433, + 73, 434, 433, 74, 74, 74, 74, 74, 74, 74, + 74, 433, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 433, 435, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -405, -405, -405, -405, -405, -405, -405, -405, -405, + 73, 62, -405, 74, 74, 74, 74, 74, 74, 74, + 74, -405, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -405, 75, 74, 74, 74, 74, 436, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -406, -406, -406, -406, -406, -406, -406, -406, -406, + 73, 62, -406, 74, 74, 74, 74, 74, 74, 74, + 74, -406, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -406, 75, 74, 74, 74, 74, 437, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 438, 438, 438, 438, 438, 438, 438, 438, 438, + 73, 439, 438, 74, 74, 74, 74, 74, 74, 74, + 74, 438, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 438, 440, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -408, -408, -408, -408, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, + + -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408, -408, + -408, -408, -408, -408, -408, -408, -408, -408, -408 + }, + + { + 5, -409, -409, -409, -409, -409, -409, -409, -409, -409, + -409, -409, -409, 115, 115, 115, 115, 115, 115, 115, + 115, -409, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -409, -409, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -410, -410, -410, -410, -410, -410, -410, -410, -410, + 129, -410, -410, 75, 75, 75, 75, 75, 75, 75, + 75, -410, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -410, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -411, -411, -411, -411, -411, -411, -411, -411, -411, + 61, 62, -411, 63, 63, 63, 63, 63, 63, 63, + 63, -411, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -411, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 441, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412, -412, + -412, -412, -412, -412, -412, -412, -412, -412, -412 + }, + + { + 5, -413, -413, -413, -413, -413, -413, -413, -413, -413, + -413, -413, -413, 115, 115, 115, 115, 115, 115, 115, + + 115, -413, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -413, -413, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -414, -414, -414, -414, -414, -414, -414, -414, -414, + 120, -414, -414, 64, 64, 64, 64, 64, 64, 64, + 64, -414, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -414, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + + }, + + { + 5, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 61, 443, 442, 63, 63, 63, 63, 63, 63, 63, + 63, 442, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 442, 444, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 61, 446, 445, 63, 63, 63, 63, 63, 63, 63, + 63, 445, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 445, 447, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -417, -417, -417, -417, -417, -417, -417, -417, -417, + 61, 62, -417, 63, 63, 63, 63, 63, 63, 63, + 63, -417, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -417, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 448, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -418, -418, -418, -418, -418, -418, -418, -418, -418, + 61, 62, -418, 63, 63, 63, 63, 63, 63, 63, + + 63, -418, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -418, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 449, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -419, -419, -419, -419, -419, -419, -419, -419, -419, + 61, 62, -419, 63, 63, 450, 63, 63, 63, 63, + 63, -419, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -419, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -420, -420, -420, -420, -420, -420, -420, -420, -420, + 61, 62, -420, 63, 63, 63, 63, 451, 63, 63, + 63, -420, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -420, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 73, 453, 452, 74, 74, 74, 74, 74, 74, 74, + 74, 452, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 452, 454, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -422, -422, -422, -422, -422, -422, -422, -422, -422, + 73, 62, -422, 74, 74, 74, 74, 74, 74, 74, + 74, -422, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -422, 75, 74, 74, 74, 455, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -423, -423, -423, -423, -423, -423, -423, -423, -423, + 73, 62, -423, 74, 74, 74, 74, 74, 74, 74, + + 74, -423, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -423, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 456, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 73, 458, 457, 74, 74, 74, 74, 74, 74, 74, + 74, 457, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 457, 459, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, 460, 460, 460, 460, 460, 460, 460, 460, 460, + 73, 461, 460, 74, 74, 74, 74, 74, 74, 74, + 74, 460, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 460, 462, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -426, -426, -426, -426, -426, -426, -426, -426, -426, + -426, -426, -426, -426, -426, -426, -426, -426, -426, -426, + -426, -426, -426, -426, -426, -426, -426, -426, -426, -426, + -426, -426, -426, -426, -426, -426, -426, -426, -426, -426, + + -426, -426, -426, -426, -426, -426, -426, -426, -426, -426, + -426, -426, -426, -426, -426, -426, -426, -426, -426 + }, + + { + 5, -427, -427, -427, -427, -427, -427, -427, -427, -427, + -427, -427, -427, 115, 115, 115, 115, 115, 115, 115, + 115, -427, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -427, -427, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -428, -428, -428, -428, -428, -428, -428, -428, -428, + 129, -428, -428, 75, 75, 75, 75, 75, 75, 75, + + 75, -428, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -428, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429, -429, + -429, -429, -429, -429, -429, -429, -429, -429, -429 + + }, + + { + 5, -430, -430, -430, -430, -430, -430, -430, -430, -430, + -430, -430, -430, 115, 115, 115, 115, 115, 115, 115, + 115, -430, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -430, -430, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -431, -431, -431, -431, -431, -431, -431, -431, -431, + 129, -431, -431, 75, 75, 75, 75, 75, 75, 75, + 75, -431, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -431, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -432, -432, -432, -432, -432, -432, -432, -432, -432, + 73, 62, -432, 74, 74, 74, 74, 74, 74, 74, + 74, -432, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -432, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 463, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -433, -433, -433, -433, -433, -433, -433, -433, -433, + -433, -433, -433, -433, -433, -433, -433, -433, -433, -433, + + -433, -433, -433, -433, -433, -433, -433, -433, -433, -433, + -433, -433, -433, -433, -433, -433, -433, -433, -433, -433, + -433, -433, -433, -433, -433, -433, -433, -433, -433, -433, + -433, -433, -433, -433, -433, -433, -433, -433, -433 + }, + + { + 5, -434, -434, -434, -434, -434, -434, -434, -434, -434, + -434, -434, -434, 115, 115, 115, 115, 115, 115, 115, + 115, -434, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -434, -434, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -435, -435, -435, -435, -435, -435, -435, -435, -435, + 129, -435, -435, 75, 75, 75, 75, 75, 75, 75, + 75, -435, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -435, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 464, 464, 464, 464, 464, 464, 464, 464, 464, + 73, 465, 464, 74, 74, 74, 74, 74, 74, 74, + 74, 464, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 464, 466, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, 467, 467, 467, 467, 467, 467, 467, 467, 467, + 73, 468, 467, 74, 74, 74, 74, 74, 74, 74, + 74, 467, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 467, 469, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -438, -438, -438, -438, -438, -438, -438, -438, -438, + -438, -438, -438, -438, -438, -438, -438, -438, -438, -438, + + -438, -438, -438, -438, -438, -438, -438, -438, -438, -438, + -438, -438, -438, -438, -438, -438, -438, -438, -438, -438, + -438, -438, -438, -438, -438, -438, -438, -438, -438, -438, + -438, -438, -438, -438, -438, -438, -438, -438, -438 + }, + + { + 5, -439, -439, -439, -439, -439, -439, -439, -439, -439, + -439, -439, -439, 115, 115, 115, 115, 115, 115, 115, + 115, -439, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -439, -439, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -440, -440, -440, -440, -440, -440, -440, -440, -440, + 129, -440, -440, 75, 75, 75, 75, 75, 75, 75, + 75, -440, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -440, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -441, -441, -441, -441, -441, -441, -441, -441, -441, + 61, 62, -441, 63, 63, 63, 63, 63, 63, 63, + 63, -441, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -441, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 470, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442, -442, + -442, -442, -442, -442, -442, -442, -442, -442, -442 + }, + + { + 5, -443, -443, -443, -443, -443, -443, -443, -443, -443, + -443, -443, -443, 115, 115, 115, 115, 115, 115, 115, + + 115, -443, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -443, -443, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -444, -444, -444, -444, -444, -444, -444, -444, -444, + 120, -444, -444, 64, 64, 64, 64, 64, 64, 64, + 64, -444, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -444, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + + }, + + { + 5, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, + -445, -445, -445, -445, -445, -445, -445, -445, -445 + }, + + { + 5, -446, -446, -446, -446, -446, -446, -446, -446, -446, + -446, -446, -446, 115, 115, 115, 115, 115, 115, 115, + 115, -446, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -446, -446, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -447, -447, -447, -447, -447, -447, -447, -447, -447, + 120, -447, -447, 64, 64, 64, 64, 64, 64, 64, + 64, -447, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -447, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -448, -448, -448, -448, -448, -448, -448, -448, -448, + 61, 62, -448, 63, 63, 63, 63, 63, 63, 63, + + 63, -448, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -448, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 471, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -449, -449, -449, -449, -449, -449, -449, -449, -449, + 61, 62, -449, 63, 63, 63, 63, 63, 63, 63, + 63, -449, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -449, 64, 63, 63, 63, 63, 63, 63, + 472, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, 473, 473, 473, 473, 473, 473, 473, 473, 473, + 61, 474, 473, 63, 63, 63, 63, 63, 63, 63, + 63, 473, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 473, 475, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 476, 476, 476, 476, 476, 476, 476, 476, 476, + 61, 477, 476, 63, 63, 63, 63, 63, 63, 63, + 63, 476, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 476, 478, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452, -452, + -452, -452, -452, -452, -452, -452, -452, -452, -452 + }, + + { + 5, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, 115, 115, 115, 115, 115, 115, 115, + + 115, -453, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -453, -453, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -454, -454, -454, -454, -454, -454, -454, -454, -454, + 129, -454, -454, 75, 75, 75, 75, 75, 75, 75, + 75, -454, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -454, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, 479, 479, 479, 479, 479, 479, 479, 479, 479, + 73, 480, 479, 74, 74, 74, 74, 74, 74, 74, + 74, 479, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 479, 481, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -456, -456, -456, -456, -456, -456, -456, -456, -456, + 73, 62, -456, 74, 74, 74, 74, 74, 74, 74, + 74, -456, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -456, 75, 74, 74, 74, 74, 74, 74, + + 74, 74, 74, 74, 74, 74, 482, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -457 + }, + + { + 5, -458, -458, -458, -458, -458, -458, -458, -458, -458, + -458, -458, -458, 115, 115, 115, 115, 115, 115, 115, + + 115, -458, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -458, -458, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -459, -459, -459, -459, -459, -459, -459, -459, -459, + 129, -459, -459, 75, 75, 75, 75, 75, 75, 75, + 75, -459, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -459, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460, -460, + -460, -460, -460, -460, -460, -460, -460, -460, -460 + }, + + { + 5, -461, -461, -461, -461, -461, -461, -461, -461, -461, + -461, -461, -461, 115, 115, 115, 115, 115, 115, 115, + 115, -461, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -461, -461, 115, 115, 115, 115, 115, 115, + + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -462, -462, -462, -462, -462, -462, -462, -462, -462, + 129, -462, -462, 75, 75, 75, 75, 75, 75, 75, + 75, -462, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -462, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -463, -463, -463, -463, -463, -463, -463, -463, -463, + 73, 62, -463, 74, 74, 74, 74, 74, 74, 74, + + 74, -463, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -463, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 483, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464 + + }, + + { + 5, -465, -465, -465, -465, -465, -465, -465, -465, -465, + -465, -465, -465, 115, 115, 115, 115, 115, 115, 115, + 115, -465, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -465, -465, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -466, -466, -466, -466, -466, -466, -466, -466, -466, + 129, -466, -466, 75, 75, 75, 75, 75, 75, 75, + 75, -466, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -466, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467, -467, + -467, -467, -467, -467, -467, -467, -467, -467, -467 + }, + + { + 5, -468, -468, -468, -468, -468, -468, -468, -468, -468, + -468, -468, -468, 115, 115, 115, 115, 115, 115, 115, + + 115, -468, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -468, -468, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -469, -469, -469, -469, -469, -469, -469, -469, -469, + 129, -469, -469, 75, 75, 75, 75, 75, 75, 75, + 75, -469, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -469, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + + }, + + { + 5, 484, 484, 484, 484, 484, 484, 484, 484, 484, + 61, 485, 484, 63, 63, 63, 63, 63, 63, 63, + 63, 484, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 484, 486, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -471, -471, -471, -471, -471, -471, -471, -471, -471, + 61, 62, -471, 63, 63, 63, 63, 63, 63, 63, + 63, -471, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -471, 64, 63, 63, 63, 63, 63, 63, + + 63, 63, 487, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 61, 489, 488, 63, 63, 63, 63, 63, 63, 63, + 63, 488, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 488, 490, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -473, -473, -473, -473, -473, -473, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473, -473, + -473, -473, -473, -473, -473, -473, -473, -473, -473 + }, + + { + 5, -474, -474, -474, -474, -474, -474, -474, -474, -474, + -474, -474, -474, 115, 115, 115, 115, 115, 115, 115, + 115, -474, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -474, -474, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -475, -475, -475, -475, -475, -475, -475, -475, -475, + 120, -475, -475, 64, 64, 64, 64, 64, 64, 64, + 64, -475, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -475, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -476, -476, -476, -476, -476, -476, -476, -476, -476, + -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, + -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, + -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, + + -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, + -476, -476, -476, -476, -476, -476, -476, -476, -476 + }, + + { + 5, -477, -477, -477, -477, -477, -477, -477, -477, -477, + -477, -477, -477, 115, 115, 115, 115, 115, 115, 115, + 115, -477, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -477, -477, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -478, -478, -478, -478, -478, -478, -478, -478, -478, + 120, -478, -478, 64, 64, 64, 64, 64, 64, 64, + + 64, -478, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -478, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479 + + }, + + { + 5, -480, -480, -480, -480, -480, -480, -480, -480, -480, + -480, -480, -480, 115, 115, 115, 115, 115, 115, 115, + 115, -480, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -480, -480, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -481, -481, -481, -481, -481, -481, -481, -481, -481, + 129, -481, -481, 75, 75, 75, 75, 75, 75, 75, + 75, -481, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -481, 75, 75, 75, 75, 75, 75, 75, + + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 73, 492, 491, 74, 74, 74, 74, 74, 74, 74, + 74, 491, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 491, 493, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -483, -483, -483, -483, -483, -483, -483, -483, -483, + 73, 62, -483, 74, 74, 74, 74, 74, 74, 74, + + 74, -483, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, -483, 75, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 494, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + }, + + { + 5, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484, -484, + -484, -484, -484, -484, -484, -484, -484, -484, -484 + + }, + + { + 5, -485, -485, -485, -485, -485, -485, -485, -485, -485, + -485, -485, -485, 115, 115, 115, 115, 115, 115, 115, + 115, -485, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -485, -485, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -486, -486, -486, -486, -486, -486, -486, -486, -486, + 120, -486, -486, 64, 64, 64, 64, 64, 64, 64, + 64, -486, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -486, 64, 64, 64, 64, 64, 64, 64, + + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -487, -487, -487, -487, -487, -487, -487, -487, -487, + 61, 62, -487, 63, 63, 63, 63, 63, 63, 63, + 63, -487, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -487, 64, 63, 63, 63, 63, 63, 495, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -488, -488, -488, -488, -488, -488, -488, -488, -488, + -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, + + -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, + -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, + -488, -488, -488, -488, -488, -488, -488, -488, -488, -488, + -488, -488, -488, -488, -488, -488, -488, -488, -488 + }, + + { + 5, -489, -489, -489, -489, -489, -489, -489, -489, -489, + -489, -489, -489, 115, 115, 115, 115, 115, 115, 115, + 115, -489, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -489, -489, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + + }, + + { + 5, -490, -490, -490, -490, -490, -490, -490, -490, -490, + 120, -490, -490, 64, 64, 64, 64, 64, 64, 64, + 64, -490, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -490, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + }, + + { + 5, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + + -491, -491, -491, -491, -491, -491, -491, -491, -491, -491, + -491, -491, -491, -491, -491, -491, -491, -491, -491 + }, + + { + 5, -492, -492, -492, -492, -492, -492, -492, -492, -492, + -492, -492, -492, 115, 115, 115, 115, 115, 115, 115, + 115, -492, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -492, -492, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -493, -493, -493, -493, -493, -493, -493, -493, -493, + 129, -493, -493, 75, 75, 75, 75, 75, 75, 75, + + 75, -493, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -493, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, 496, 496, 496, 496, 496, 496, 496, 496, 496, + 73, 497, 496, 74, 74, 74, 74, 74, 74, 74, + 74, 496, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 496, 498, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74 + + }, + + { + 5, -495, -495, -495, -495, -495, -495, -495, -495, -495, + 61, 62, -495, 63, 63, 63, 63, 63, 63, 63, + 63, -495, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -495, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 499, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -496, -496, -496, -496, -496, -496, -496, -496, -496, + -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, + -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, + -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, + + -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, + -496, -496, -496, -496, -496, -496, -496, -496, -496 + }, + + { + 5, -497, -497, -497, -497, -497, -497, -497, -497, -497, + -497, -497, -497, 115, 115, 115, 115, 115, 115, 115, + 115, -497, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -497, -497, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -498, -498, -498, -498, -498, -498, -498, -498, -498, + 129, -498, -498, 75, 75, 75, 75, 75, 75, 75, + + 75, -498, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, -498, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75 + }, + + { + 5, -499, -499, -499, -499, -499, -499, -499, -499, -499, + 61, 62, -499, 63, 63, 63, 63, 63, 63, 63, + 63, -499, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -499, 64, 63, 63, 63, 63, 500, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + + }, + + { + 5, -500, -500, -500, -500, -500, -500, -500, -500, -500, + 61, 62, -500, 63, 63, 63, 63, 63, 63, 63, + 63, -500, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, -500, 64, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 501, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 61, 503, 502, 63, 63, 63, 63, 63, 63, 63, + 63, 502, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 502, 504, 63, 63, 63, 63, 63, 63, + + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63 + }, + + { + 5, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502, -502, + -502, -502, -502, -502, -502, -502, -502, -502, -502 + }, + + { + 5, -503, -503, -503, -503, -503, -503, -503, -503, -503, + -503, -503, -503, 115, 115, 115, 115, 115, 115, 115, + + 115, -503, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, -503, -503, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115 + }, + + { + 5, -504, -504, -504, -504, -504, -504, -504, -504, -504, + 120, -504, -504, 64, 64, 64, 64, 64, 64, 64, + 64, -504, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, -504, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64 + + }, + + } ; + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up smingtext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + smingleng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 66 +#define YY_END_OF_BUFFER 67 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[505] = + { 0, + 0, 0, 0, 0, 67, 65, 9, 8, 65, 65, + 4, 4, 65, 65, 65, 65, 56, 56, 56, 56, + 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 65, 64, 65, 8, 0, 63, 0, 6, 5, 6, + 0, 59, 59, 59, 58, 58, 59, 59, 0, 7, + 56, 0, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + + 0, 64, 0, 64, 64, 63, 61, 0, 61, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 0, 0, + 2, 3, 61, 61, 61, 61, 0, 0, 60, 60, + 60, 60, 56, 56, 56, 56, 56, 56, 56, 56, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 0, 0, 0, 44, 44, 44, 56, 56, 56, 56, + 56, 56, 56, 33, 33, 33, 57, 57, 57, 57, + 57, 13, 13, 13, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 55, 55, + 55, 57, 57, 57, 57, 54, 54, 54, 57, 20, + 20, 20, 57, 57, 57, 62, 62, 62, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 57, 57, 23, + 23, 23, 57, 57, 57, 57, 57, 27, 27, 27, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + + 57, 57, 57, 57, 57, 57, 57, 57, 57, 29, + 29, 29, 0, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 31, 31, 31, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 28, 28, 28, 57, 11, 11, + 11, 10, 10, 10, 52, 52, 52, 57, 57, 21, + 21, 21, 53, 53, 53, 57, 57, 57, 57, 30, + 30, 30, 57, 26, 26, 26, 62, 56, 56, 41, + 41, 41, 42, 42, 42, 56, 56, 56, 56, 35, + 35, 35, 56, 57, 15, 15, 15, 46, 46, 46, + 32, 32, 32, 57, 57, 57, 24, 24, 24, 57, + + 57, 57, 57, 57, 57, 57, 57, 19, 19, 19, + 56, 43, 43, 43, 56, 56, 56, 56, 56, 56, + 57, 57, 57, 57, 57, 22, 22, 22, 48, 48, + 48, 57, 50, 50, 50, 57, 57, 12, 12, 12, + 56, 37, 37, 37, 38, 38, 38, 56, 56, 56, + 56, 25, 25, 25, 57, 57, 49, 49, 49, 18, + 18, 18, 57, 51, 51, 51, 17, 17, 17, 56, + 56, 56, 39, 39, 39, 40, 40, 40, 47, 47, + 47, 57, 57, 45, 45, 45, 56, 34, 34, 34, + 16, 16, 16, 57, 56, 14, 14, 14, 56, 56, + + 56, 36, 36, 36 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 6, 7, 6, 6, 6, 6, 6, 8, + 8, 6, 9, 8, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 18, 20, 18, 21, 8, 6, + 6, 6, 6, 6, 22, 23, 22, 22, 24, 25, + 26, 26, 27, 26, 26, 26, 26, 26, 28, 29, + 26, 26, 30, 26, 31, 26, 26, 26, 26, 26, + 6, 32, 6, 6, 33, 6, 34, 35, 36, 37, + + 38, 39, 40, 41, 42, 43, 41, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 8, 8, 8, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int sming_flex_debug; +int sming_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *smingtext; +#line 1 "scanner-sming.l" +/* + * scanner-sming.l -- + * + * Lexical rules for scanning the SMIng MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-sming.l 7734 2008-02-15 07:49:14Z schoenw $ + */ +#line 17 "scanner-sming.l" + +#include + +#ifdef BACKEND_SMING + +#include +#include +#include +#include + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "parser-sming.h" +#include "parser-sming.tab.h" +#include "scanner-sming.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* we need a reentrant parser, so sminglex gets arguments */ +#if 0 +#define YY_DECL int sminglex YY_PROTO((YYSTYPE *lvalp, void *parser)) +#else +#define YY_DECL int sminglex(YYSTYPE *lvalp,void *parser) +#endif + + + +#define thisParser (*(Parser *) parser) + + + +#define MAX_NUMBER "18446744073709551615" /* max Counter64 */ + + + +/* + * This makes the usual notation when referencing attributes also + * work with our pure parser code. + */ +#define yylval (*lvalp) + + +static YY_BUFFER_STATE yybuffer[MAX_LEX_DEPTH]; + +static int lexDepth = 0; + + +int +smingEnterLexRecursion(file) + FILE *file; +{ + if (lexDepth >= MAX_LEX_DEPTH) { + return (-1); + } + yybuffer[lexDepth++] = YY_CURRENT_BUFFER; + sming_switch_to_buffer(sming_create_buffer(file,YY_BUF_SIZE)); + return (lexDepth); +} + + + +void +smingLeaveLexRecursion() +{ + sming_delete_buffer(YY_CURRENT_BUFFER); + sming_switch_to_buffer(yybuffer[--lexDepth]); +} + + + +/* + * Lex pattern definitions. + */ +/* + * Lex state definitions. + */ + +#line 5435 "" + +#define INITIAL 0 +#define Skipline 1 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int smingwrap (void ); +#else +extern int smingwrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( smingtext, smingleng, 1, smingout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( smingin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( smingin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, smingin))==0 && ferror(smingin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(smingin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int sminglex (void); + +#define YY_DECL int sminglex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after smingtext and smingleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 115 "scanner-sming.l" + + + + + /* + * Lex rules for comments. Do you use {lineBreak} here because it + * introduces a trailing context which is (a) slow and (b) causes + * REJECT to be used. + */ + +#line 5600 "" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! smingin ) + smingin = stdin; + + if ( ! smingout ) + smingout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + smingensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + sming_create_buffer(smingin,YY_BUF_SIZE ); + } + + sming_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of smingtext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + { + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + + ++yy_cp; + } + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos) + 1; + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +/* rule 1 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 125 "scanner-sming.l" +{ +} + YY_BREAK +case 2: +/* rule 2 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 2; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 128 "scanner-sming.l" +{ +} + YY_BREAK +case 3: +/* rule 3 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 2; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 131 "scanner-sming.l" +{ +} + YY_BREAK +/* + * Lex rules for some special tokens. + */ +case 4: +YY_RULE_SETUP +#line 138 "scanner-sming.l" +{ + return smingtext[0]; +} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 142 "scanner-sming.l" +{ + return DOT_DOT; +} + YY_BREAK +case 6: +/* rule 6 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 146 "scanner-sming.l" +{ + return DOT; +} + YY_BREAK +case 7: +YY_RULE_SETUP +#line 150 "scanner-sming.l" +{ + return COLON_COLON; +} + YY_BREAK +/* + * Lex rules for separators. + */ +case 8: +/* rule 8 can match eol */ +YY_RULE_SETUP +#line 158 "scanner-sming.l" +{ + thisParser.line++; +} + YY_BREAK +case 9: +YY_RULE_SETUP +#line 162 "scanner-sming.l" +{ +} + YY_BREAK +/* + * Lex rules for known keywords. + */ +case 10: +/* rule 10 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 169 "scanner-sming.l" +{ + yylval.id = smingtext; + return moduleKeyword; +} + YY_BREAK +case 11: +/* rule 11 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 174 "scanner-sming.l" +{ + yylval.id = smingtext; + return importKeyword; +} + YY_BREAK +case 12: +/* rule 12 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 179 "scanner-sming.l" +{ + yylval.id = smingtext; + return revisionKeyword; +} + YY_BREAK +case 13: +/* rule 13 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 184 "scanner-sming.l" +{ + yylval.id = smingtext; + return dateKeyword; +} + YY_BREAK +case 14: +/* rule 14 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 12; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 189 "scanner-sming.l" +{ + yylval.id = smingtext; + return organizationKeyword; +} + YY_BREAK +case 15: +/* rule 15 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 194 "scanner-sming.l" +{ + yylval.id = smingtext; + return contactKeyword; +} + YY_BREAK +case 16: +/* rule 16 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 199 "scanner-sming.l" +{ + yylval.id = smingtext; + return descriptionKeyword; +} + YY_BREAK +case 17: +/* rule 17 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 204 "scanner-sming.l" +{ + yylval.id = smingtext; + return referenceKeyword; +} + YY_BREAK +case 18: +/* rule 18 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 209 "scanner-sming.l" +{ + yylval.id = smingtext; + return extensionKeyword; +} + YY_BREAK +case 19: +/* rule 19 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 214 "scanner-sming.l" +{ + yylval.id = smingtext; + return typedefKeyword; +} + YY_BREAK +case 20: +/* rule 20 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 219 "scanner-sming.l" +{ + yylval.id = smingtext; + return typeKeyword; +} + YY_BREAK +case 21: +/* rule 21 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 224 "scanner-sming.l" +{ + yylval.id = smingtext; + return parentKeyword; +} + YY_BREAK +case 22: +/* rule 22 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 229 "scanner-sming.l" +{ + yylval.id = smingtext; + return identityKeyword; +} + YY_BREAK +case 23: +/* rule 23 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 234 "scanner-sming.l" +{ + yylval.id = smingtext; + return classKeyword; +} + YY_BREAK +case 24: +/* rule 24 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 239 "scanner-sming.l" +{ + yylval.id = smingtext; + return extendsKeyword; +} + YY_BREAK +case 25: +/* rule 25 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 244 "scanner-sming.l" +{ + yylval.id = smingtext; + return attributeKeyword; +} + YY_BREAK +case 26: +/* rule 26 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 249 "scanner-sming.l" +{ + yylval.id = smingtext; + return uniqueKeyword; +} + YY_BREAK +case 27: +/* rule 27 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 254 "scanner-sming.l" +{ + yylval.id = smingtext; + return eventKeyword; +} + YY_BREAK +case 28: +/* rule 28 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 259 "scanner-sming.l" +{ + yylval.id = smingtext; + return formatKeyword; +} + YY_BREAK +case 29: +/* rule 29 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 5; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 264 "scanner-sming.l" +{ + yylval.id = smingtext; + return unitsKeyword; +} + YY_BREAK +case 30: +/* rule 30 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 269 "scanner-sming.l" +{ + yylval.id = smingtext; + return statusKeyword; +} + YY_BREAK +case 31: +/* rule 31 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 274 "scanner-sming.l" +{ + yylval.id = smingtext; + return accessKeyword; +} + YY_BREAK +case 32: +/* rule 32 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 279 "scanner-sming.l" +{ + yylval.id = smingtext; + return defaultKeyword; +} + YY_BREAK +case 33: +/* rule 33 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 284 "scanner-sming.l" +{ + yylval.id = smingtext; + return abnfKeyword; +} + YY_BREAK +/* + *Base types keywords + */ +case 34: +/* rule 34 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 293 "scanner-sming.l" +{ + yylval.id = smingtext; + return OctetStringKeyword; +} + YY_BREAK +case 35: +/* rule 35 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 298 "scanner-sming.l" +{ + yylval.id = smingtext; + return PointerKeyword; +} + YY_BREAK +case 36: +/* rule 36 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 16; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 303 "scanner-sming.l" +{ + yylval.id = smingtext; + return ObjectIdentifierKeyword; +} + YY_BREAK +case 37: +/* rule 37 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 308 "scanner-sming.l" +{ + yylval.id = smingtext; + return Integer32Keyword; +} + YY_BREAK +case 38: +/* rule 38 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 313 "scanner-sming.l" +{ + yylval.id = smingtext; + return Integer64Keyword; +} + YY_BREAK +case 39: +/* rule 39 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 318 "scanner-sming.l" +{ + yylval.id = smingtext; + return Unsigned32Keyword; +} + YY_BREAK +case 40: +/* rule 40 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 323 "scanner-sming.l" +{ + yylval.id = smingtext; + return Unsigned64Keyword; +} + YY_BREAK +case 41: +/* rule 41 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 328 "scanner-sming.l" +{ + yylval.id = smingtext; + return Float32Keyword; +} + YY_BREAK +case 42: +/* rule 42 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 333 "scanner-sming.l" +{ + yylval.id = smingtext; + return Float64Keyword; +} + YY_BREAK +case 43: +/* rule 43 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 338 "scanner-sming.l" +{ + yylval.id = smingtext; + return Float128Keyword; +} + YY_BREAK +case 44: +/* rule 44 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 343 "scanner-sming.l" +{ + yylval.id = smingtext; + return BitsKeyword; +} + YY_BREAK +case 45: +/* rule 45 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 11; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 348 "scanner-sming.l" +{ + yylval.id = smingtext; + return EnumerationKeyword; +} + YY_BREAK +/* + *Status keywords + */ +case 46: +/* rule 46 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 357 "scanner-sming.l" +{ + yylval.id = smingtext; + return currentKeyword; +} + YY_BREAK +case 47: +/* rule 47 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 10; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 362 "scanner-sming.l" +{ + yylval.id = smingtext; + return deprecatedKeyword; +} + YY_BREAK +case 48: +/* rule 48 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 367 "scanner-sming.l" +{ + yylval.id = smingtext; + return obsoleteKeyword; +} + YY_BREAK +/* + *Access keywords + */ +case 49: +/* rule 49 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 376 "scanner-sming.l" +{ + yylval.id = smingtext; + return eventonlyKeyword; +} + YY_BREAK +case 50: +/* rule 50 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 381 "scanner-sming.l" +{ + yylval.id = smingtext; + return readonlyKeyword; +} + YY_BREAK +case 51: +/* rule 51 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 386 "scanner-sming.l" +{ + yylval.id = smingtext; + return readwriteKeyword; +} + YY_BREAK +/* + *Special floating point values' keywords + */ +case 52: +/* rule 52 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 395 "scanner-sming.l" +{ + yylval.id = smingtext; + return neginfKeyword; +} + YY_BREAK +case 53: +/* rule 53 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 6; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 400 "scanner-sming.l" +{ + yylval.id = smingtext; + return posinfKeyword; +} + YY_BREAK +case 54: +/* rule 54 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 405 "scanner-sming.l" +{ + yylval.id = smingtext; + return snanKeyword; +} + YY_BREAK +case 55: +/* rule 55 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 410 "scanner-sming.l" +{ + yylval.id = smingtext; + return qnanKeyword; +} + YY_BREAK +/* + * Lex rules for identifiers. + */ +/* e.g. module names: REF: draft,p.12-13 */ +case 56: +YY_RULE_SETUP +#line 422 "scanner-sming.l" +{ + if (smingtext[smingleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, smingtext); + } + if (smingleng > 64) { + smiPrintError(parser, ERR_UCIDENTIFIER_64, smingtext); + } + if (strchr(smingtext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, smingtext); + } + yylval.text = smiStrdup(smingtext); + return ucIdentifier; +} + YY_BREAK +/* same for lowercase names */ +case 57: +YY_RULE_SETUP +#line 437 "scanner-sming.l" +{ + if (smingtext[smingleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, smingtext); + } + if (smingleng > 64) { + smiPrintError(parser, ERR_LCIDENTIFIER_64, smingtext); + } + if (strchr(smingtext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, smingtext); + } + yylval.text = smiStrdup(smingtext); + return lcIdentifier; +} + YY_BREAK +/* + * Lex rules for numbers. + * + * NOTE: `-' is a separate token. Hence, there are no negative numbers. + */ +case 58: +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 457 "scanner-sming.l" +{ + smiPrintError(parser, ERR_LEADING_ZEROS); +} + YY_BREAK +case 59: +/* rule 59 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 461 "scanner-sming.l" +{ + if ((smingleng > sizeof(MAX_NUMBER)-1) || + ((smingleng == sizeof(MAX_NUMBER)-1) && + (strcmp(smingtext, MAX_NUMBER) > 0))) { + smiPrintError(parser, ERR_NUMBER_TOO_LARGE, smingtext); + } + yylval.text = smingtext; + return decimalNumber; +} + YY_BREAK +case 60: +/* rule 60 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 471 "scanner-sming.l" +{ + if (smingleng % 2) { + smiPrintError(parser, ERR_HEX_STRING_MUL2, smingtext); + } + yylval.text = smingtext; + return hexadecimalNumber; +} + YY_BREAK +/* + * Lex rules for floating point values. + */ +case 61: +/* rule 61 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 482 "scanner-sming.l" +{ + yylval.text = smingtext; + return floatValue; +} + YY_BREAK +/* + * Lex rules for OID's. + */ +case 62: +/* rule 62 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up smingtext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up smingtext again */ +YY_RULE_SETUP +#line 491 "scanner-sming.l" +{ + yylval.text = smingtext; + return OID; +} + YY_BREAK +/* + * Lex rules for textSegments. + */ +case 63: +/* rule 63 can match eol */ +YY_RULE_SETUP +#line 501 "scanner-sming.l" +{ + char *s, *d; /* the source and destination pointer */ + int column = 0; /* the current column */ + int newlineflag = 0; /* we have just passed a newline */ + int cutoffcolumn = 0; /* cut off white space up to this column */ + /* (computed by caculating the indentation */ + /* of the first column) */ + + smingtext[smingleng-1] = '\0'; + for (d = smingtext, s = smingtext+1; s[0]; s++, d++) { + + if ((s[0] == '\n' && s[1] == '\r') /* newline sequence */ + || (s[0] == '\r' && s[1] == '\n')) { + thisParser.line += 1; + d[0] = '\n'; + s++; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else if (s[0] == '\n') { /* simple newline */ + thisParser.line += 1; + d[0] = '\n'; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else { + if (newlineflag && isspace((int)(unsigned char)s[0])) { /* space after newline */ + if (cutoffcolumn <= 0) { + cutoffcolumn -= (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + } + column += (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + if (cutoffcolumn <= 0 || column <= cutoffcolumn) { + d--; + } else { + d[0] = s[0]; + newlineflag = 0; + } + } else { /* everything else */ + if (! isascii(s[0])) { + smiPrintError(parser, ERR_ILLEGAL_CHAR_IN_STRING, + s[0], (unsigned char) s[0]); + } + d[0] = s[0]; + newlineflag = 0; + if (cutoffcolumn < 0) { + cutoffcolumn *= -1; + } + } + } + } + d[0] = '\0'; + + yylval.text = smingtext; + return textSegment; +} + YY_BREAK +/* + * Skip the remainder of the line + */ +case 64: +/* rule 64 can match eol */ +YY_RULE_SETUP +#line 560 "scanner-sming.l" +{ + thisParser.line++; + BEGIN(INITIAL); +} + YY_BREAK +/* + * Everything else... + */ +case 65: +YY_RULE_SETUP +#line 569 "scanner-sming.l" +{ + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + BEGIN(Skipline); +} + YY_BREAK +case 66: +YY_RULE_SETUP +#line 574 "scanner-sming.l" +ECHO; + YY_BREAK +#line 6527 "" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(Skipline): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed smingin at a new source and called + * sminglex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = smingin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( smingwrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * smingtext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of sminglex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + smingrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + smingrestart(smingin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + if ( ! yy_is_jam ) + { + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + } + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up smingtext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + smingrestart(smingin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( smingwrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve smingtext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void smingrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + smingensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + sming_create_buffer(smingin,YY_BUF_SIZE ); + } + + sming_init_buffer(YY_CURRENT_BUFFER,input_file ); + sming_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void sming_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * smingpop_buffer_state(); + * smingpush_buffer_state(new_buffer); + */ + smingensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + sming_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (smingwrap()) processing, but the only time this flag + * is looked at is after smingwrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void sming_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + smingin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE sming_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) smingalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in sming_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) smingalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in sming_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + sming_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with sming_create_buffer() + * + */ + void sming_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + smingfree((void *) b->yy_ch_buf ); + + smingfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a smingrestart() or at EOF. + */ + static void sming_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + sming_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then sming_init_buffer was _probably_ + * called from smingrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void sming_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + sming_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void smingpush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + smingensure_buffer_stack(); + + /* This block is copied from sming_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from sming_switch_to_buffer. */ + sming_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void smingpop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + sming_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + sming_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void smingensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)smingalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)smingrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE sming_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) smingalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in sming_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + sming_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to sminglex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * sming_scan_bytes() instead. + */ +YY_BUFFER_STATE sming_scan_string (yyconst char * yystr ) +{ + + return sming_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to sminglex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE sming_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) smingalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in sming_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = sming_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in sming_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up smingtext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + smingtext[smingleng] = (yy_hold_char); \ + (yy_c_buf_p) = smingtext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + smingleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int smingget_lineno (void) +{ + + return sminglineno; +} + +/** Get the input stream. + * + */ +FILE *smingget_in (void) +{ + return smingin; +} + +/** Get the output stream. + * + */ +FILE *smingget_out (void) +{ + return smingout; +} + +/** Get the length of the current token. + * + */ +int smingget_leng (void) +{ + return smingleng; +} + +/** Get the current token. + * + */ + +char *smingget_text (void) +{ + return smingtext; +} + +/** Set the current line number. + * @param line_number + * + */ +void smingset_lineno (int line_number ) +{ + + sminglineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see sming_switch_to_buffer + */ +void smingset_in (FILE * in_str ) +{ + smingin = in_str ; +} + +void smingset_out (FILE * out_str ) +{ + smingout = out_str ; +} + +int smingget_debug (void) +{ + return sming_flex_debug; +} + +void smingset_debug (int bdebug ) +{ + sming_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from sminglex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + smingin = stdin; + smingout = stdout; +#else + smingin = (FILE *) 0; + smingout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * sminglex_init() + */ + return 0; +} + +/* sminglex_destroy is for both reentrant and non-reentrant scanners. */ +int sminglex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + sming_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + smingpop_buffer_state(); + } + + /* Destroy the stack itself. */ + smingfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * sminglex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *smingalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *smingrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void smingfree (void * ptr ) +{ + free( (char *) ptr ); /* see smingrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 574 "scanner-sming.l" + + + +#endif + diff --git a/lib/scanner-sming.h b/lib/scanner-sming.h new file mode 100644 index 0000000..2213094 --- /dev/null +++ b/lib/scanner-sming.h @@ -0,0 +1,29 @@ +/* + * scanner-sming.h -- + * + * Definition of lexical tokens of the SMIv1/v2 MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-sming.h 973 2000-07-17 09:34:36Z strauss $ + */ + +#ifndef _SCANNER_SMING_H +#define _SCANNER_SMING_H + +#include + +#include "parser-sming.h" + +#define YY_NO_UNPUT + +extern char *yytext; +extern int yyleng; + +extern int smingEnterLexRecursion(FILE *file); +extern void smingLeaveLexRecursion(); + +#endif /* _SCANNER_SMING_H */ diff --git a/lib/scanner-sming.l b/lib/scanner-sming.l new file mode 100644 index 0000000..06de492 --- /dev/null +++ b/lib/scanner-sming.l @@ -0,0 +1,576 @@ +/* + * scanner-sming.l -- + * + * Lexical rules for scanning the SMIng MIB module language. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: scanner-sming.l 7734 2008-02-15 07:49:14Z schoenw $ + */ + +%option noyywrap + +%{ + +#include + +#ifdef BACKEND_SMING + +#include +#include +#include +#include + +#if defined(HAVE_WIN_H) +#include "win.h" +#endif + +#include "error.h" +#include "util.h" +#include "parser-sming.h" +#include "parser-sming.tab.h" +#include "scanner-sming.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +/* we need a reentrant parser, so yylex gets arguments */ +#if 0 +#define YY_DECL int yylex YY_PROTO((YYSTYPE *lvalp, void *parser)) +#else +#define YY_DECL int yylex(YYSTYPE *lvalp, void *parser) +#endif + + + +#define thisParser (*(Parser *) parser) + + + +#define MAX_NUMBER "18446744073709551615" /* max Counter64 */ + + + +/* + * This makes the usual notation when referencing attributes also + * work with our pure parser code. + */ +#define yylval (*lvalp) + + +static YY_BUFFER_STATE yybuffer[MAX_LEX_DEPTH]; + +static int lexDepth = 0; + + +int +smingEnterLexRecursion(file) + FILE *file; +{ + if (lexDepth >= MAX_LEX_DEPTH) { + return (-1); + } + yybuffer[lexDepth++] = YY_CURRENT_BUFFER; + yy_switch_to_buffer(yy_create_buffer(file, YY_BUF_SIZE)); + return (lexDepth); +} + + + +void +smingLeaveLexRecursion() +{ + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(yybuffer[--lexDepth]); +} + + + +%} + + + +/* + * Lex pattern definitions. + */ +delim ([^a-zA-Z0-9-]) +lineBreak ("\n"|"\n\015"|"\015\n") +WSP (" "|"\t") +VCHAR ([\041-\176]) +HTAB "\t" +SP " " + + +/* + * Lex state definitions. + */ +%s Skipline + +%% + + + + /* + * Lex rules for comments. Do you use {lineBreak} here because it + * introduces a trailing context which is (a) slow and (b) causes + * REJECT to be used. + */ + +"//"({WSP}|{VCHAR})*/"\n" { +} + +"//"({WSP}|{VCHAR})*/"\n\015" { +} + +"//"({WSP}|{VCHAR})*/"\015\n" { +} + + /* + * Lex rules for some special tokens. + */ + +[\{\}\(\)\;\,\-\.\|] { + return yytext[0]; +} + +".." { + return DOT_DOT; +} + +"."/[^\.] { + return DOT; +} + +"::" { + return COLON_COLON; +} + + /* + * Lex rules for separators. + */ + +{lineBreak} { + thisParser.line++; +} + +{WSP} { +} + + /* + * Lex rules for known keywords. + */ + +module/{delim} { + yylval.id = yytext; + return moduleKeyword; +} + +import/{delim} { + yylval.id = yytext; + return importKeyword; +} + +revision/{delim} { + yylval.id = yytext; + return revisionKeyword; +} + +date/{delim} { + yylval.id = yytext; + return dateKeyword; +} + +organization/{delim} { + yylval.id = yytext; + return organizationKeyword; +} + +contact/{delim} { + yylval.id = yytext; + return contactKeyword; +} + +description/{delim} { + yylval.id = yytext; + return descriptionKeyword; +} + +reference/{delim} { + yylval.id = yytext; + return referenceKeyword; +} + +extension/{delim} { + yylval.id = yytext; + return extensionKeyword; +} + +typedef/{delim} { + yylval.id = yytext; + return typedefKeyword; +} + +type/{delim} { + yylval.id = yytext; + return typeKeyword; +} + +parent/{delim} { + yylval.id = yytext; + return parentKeyword; +} + +identity/{delim} { + yylval.id = yytext; + return identityKeyword; +} + +class/{delim} { + yylval.id = yytext; + return classKeyword; +} + +extends/{delim} { + yylval.id = yytext; + return extendsKeyword; +} + +attribute/{delim} { + yylval.id = yytext; + return attributeKeyword; +} + +unique/{delim} { + yylval.id = yytext; + return uniqueKeyword; +} + +event/{delim} { + yylval.id = yytext; + return eventKeyword; +} + +format/{delim} { + yylval.id = yytext; + return formatKeyword; +} + +units/{delim} { + yylval.id = yytext; + return unitsKeyword; +} + +status/{delim} { + yylval.id = yytext; + return statusKeyword; +} + +access/{delim} { + yylval.id = yytext; + return accessKeyword; +} + +default/{delim} { + yylval.id = yytext; + return defaultKeyword; +} + +abnf/{delim} { + yylval.id = yytext; + return abnfKeyword; +} + + + /* + *Base types keywords + */ +OctetString/{delim} { + yylval.id = yytext; + return OctetStringKeyword; +} + +Pointer/{delim} { + yylval.id = yytext; + return PointerKeyword; +} + +ObjectIdentifier/{delim} { + yylval.id = yytext; + return ObjectIdentifierKeyword; +} + +Integer32/{delim} { + yylval.id = yytext; + return Integer32Keyword; +} + +Integer64/{delim} { + yylval.id = yytext; + return Integer64Keyword; +} + +Unsigned32/{delim} { + yylval.id = yytext; + return Unsigned32Keyword; +} + +Unsigned64/{delim} { + yylval.id = yytext; + return Unsigned64Keyword; +} + +Float32/{delim} { + yylval.id = yytext; + return Float32Keyword; +} + +Float64/{delim} { + yylval.id = yytext; + return Float64Keyword; +} + +Float128/{delim} { + yylval.id = yytext; + return Float128Keyword; +} + +Bits/{delim} { + yylval.id = yytext; + return BitsKeyword; +} + +Enumeration/{delim} { + yylval.id = yytext; + return EnumerationKeyword; +} + + /* + *Status keywords + */ + +current/{delim} { + yylval.id = yytext; + return currentKeyword; +} + +deprecated/{delim} { + yylval.id = yytext; + return deprecatedKeyword; +} + +obsolete/{delim} { + yylval.id = yytext; + return obsoleteKeyword; +} + + /* + *Access keywords + */ + +eventonly/{delim} { + yylval.id = yytext; + return eventonlyKeyword; +} + +readonly/{delim} { + yylval.id = yytext; + return readonlyKeyword; +} + +readwrite/{delim} { + yylval.id = yytext; + return readwriteKeyword; +} + + /* + *Special floating point values' keywords + */ + +neginf/{delim} { + yylval.id = yytext; + return neginfKeyword; +} + +posinf/{delim} { + yylval.id = yytext; + return posinfKeyword; +} + +snan/{delim} { + yylval.id = yytext; + return snanKeyword; +} + +qnan/{delim} { + yylval.id = yytext; + return qnanKeyword; +} + + + + /* + * Lex rules for identifiers. + */ + + /* e.g. module names: REF: draft,p.12-13 */ +[A-Z](-?[a-zA-Z0-9_]+)*-? { + if (yytext[yyleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, yytext); + } + if (yyleng > 64) { + smiPrintError(parser, ERR_UCIDENTIFIER_64, yytext); + } + if (strchr(yytext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, yytext); + } + yylval.text = smiStrdup(yytext); + return ucIdentifier; +} + + /* same for lowercase names */ +[a-z](-?[a-zA-Z0-9_]+)*-? { + if (yytext[yyleng-1] == '-') { + smiPrintError(parser, ERR_ID_ENDS_IN_HYPHEN, yytext); + } + if (yyleng > 64) { + smiPrintError(parser, ERR_LCIDENTIFIER_64, yytext); + } + if (strchr(yytext, '_')) { + smiPrintError(parser, ERR_UNDERSCORE_IN_IDENTIFIER, yytext); + } + yylval.text = smiStrdup(yytext); + return lcIdentifier; +} + + /* + * Lex rules for numbers. + * + * NOTE: `-' is a separate token. Hence, there are no negative numbers. + */ + +0+/[0-9] { + smiPrintError(parser, ERR_LEADING_ZEROS); +} + +([1-9][0-9]*|0)/[^0-9] { + if ((yyleng > sizeof(MAX_NUMBER)-1) || + ((yyleng == sizeof(MAX_NUMBER)-1) && + (strcmp(yytext, MAX_NUMBER) > 0))) { + smiPrintError(parser, ERR_NUMBER_TOO_LARGE, yytext); + } + yylval.text = yytext; + return decimalNumber; +} + +0x[0-9a-fA-F]+/[^0-9a-fA-F] { + if (yyleng % 2) { + smiPrintError(parser, ERR_HEX_STRING_MUL2, yytext); + } + yylval.text = yytext; + return hexadecimalNumber; +} + /* + * Lex rules for floating point values. + */ + +([0-9]*\.[0-9]+([eE][+-]?[0-9]+)?)/[^0-9] { + yylval.text = yytext; + return floatValue; +} + + /* + * Lex rules for OID's. + */ + +([0-9A-Za-z]-?)+\.([0-9A-Za-z]-?)+\.([0-9A-Za-z]-?)+(\.([0-9A-Za-z]-?)+)*/([^0-9A-Za-z]) { + yylval.text = yytext; + return OID; +} + + + /* + * Lex rules for textSegments. + */ + +\"([^\"]|(\\\"))*\" { + char *s, *d; /* the source and destination pointer */ + int column = 0; /* the current column */ + int newlineflag = 0; /* we have just passed a newline */ + int cutoffcolumn = 0; /* cut off white space up to this column */ + /* (computed by caculating the indentation */ + /* of the first column) */ + + yytext[yyleng-1] = '\0'; + for (d = yytext, s = yytext+1; s[0]; s++, d++) { + + if ((s[0] == '\n' && s[1] == '\r') /* newline sequence */ + || (s[0] == '\r' && s[1] == '\n')) { + thisParser.line += 1; + d[0] = '\n'; + s++; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else if (s[0] == '\n') { /* simple newline */ + thisParser.line += 1; + d[0] = '\n'; + newlineflag = 1; + column = 0; + if (cutoffcolumn < 0) cutoffcolumn = 0; + } else { + if (newlineflag && isspace((int)(unsigned char)s[0])) { /* space after newline */ + if (cutoffcolumn <= 0) { + cutoffcolumn -= (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + } + column += (s[0] == '\t') ? (8-((column-1) % 8)) : 1; + if (cutoffcolumn <= 0 || column <= cutoffcolumn) { + d--; + } else { + d[0] = s[0]; + newlineflag = 0; + } + } else { /* everything else */ + if (! isascii(s[0])) { + smiPrintError(parser, ERR_ILLEGAL_CHAR_IN_STRING, + s[0], (unsigned char) s[0]); + } + d[0] = s[0]; + newlineflag = 0; + if (cutoffcolumn < 0) { + cutoffcolumn *= -1; + } + } + } + } + d[0] = '\0'; + + yylval.text = yytext; + return textSegment; +} + + /* + * Skip the remainder of the line + */ +.*{lineBreak} { + thisParser.line++; + BEGIN(INITIAL); +} + + /* + * Everything else... + */ + +. { + smiPrintError(parser, ERR_LEX_UNEXPECTED_CHAR); + BEGIN(Skipline); +} + +%% + +#endif diff --git a/lib/smi.c b/lib/smi.c new file mode 100644 index 0000000..244629e --- /dev/null +++ b/lib/smi.c @@ -0,0 +1,2667 @@ +/* + * smi.c -- + * + * Interface Implementation of libsmi. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smi.c 8071 2008-04-17 11:14:46Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_PWD_H +#include +#endif + +#include "smi.h" +#include "data.h" +#include "error.h" +#include "util.h" +#include "snprintf.h" + +#ifdef BACKEND_SMI +#include "scanner-smi.h" +#include "parser-smi.h" +#endif + +#ifdef BACKEND_SMING +#include "scanner-sming.h" +#include "parser-sming.h" +#endif + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) < (b) ? (b) : (a)) +#endif + + + +const char *smi_library_version = SMI_LIBRARY_VERSION; +const char *smi_version_string = SMI_VERSION_STRING; + +Handle *smiHandle = NULL; + + + +/* + * Internal functions. + */ + +static void getModulenameAndName(const char *arg1, const char *arg2, + char **module, char **name) +{ + char *p; + int l; + + if ((!arg1) && (!arg2)) { + *module = NULL; + *name = NULL; + } else if (!arg2) { + if (isupper((int)arg1[0])) { + if ((p = strstr(arg1, "::"))) { + /* SMIng style module/label separator */ + *name = smiStrdup(&p[2]); + l = strcspn(arg1, "::"); + *module = smiStrndup(arg1, l); + } else if ((p = strchr(arg1, '!'))) { + /* old scotty style module/label separator */ + *name = smiStrdup(&p[1]); + l = strcspn(arg1, "!"); + *module = smiStrndup(arg1, l); + } else if ((p = strchr(arg1, '.'))) { + /* SMIv1/v2 style module/label separator */ + *name = smiStrdup(&p[1]); + l = strcspn(arg1, "."); + *module = smiStrndup(arg1, l); + } else { + *name = smiStrdup(arg1); + *module = smiStrdup(""); + } + } else { + *name = smiStrdup(arg1); + *module = smiStrdup(""); + } + } else if (!arg1) { + if (isupper((int)arg2[0])) { + if ((p = strstr(arg2, "::"))) { + /* SMIng style module/label separator */ + *name = smiStrdup(&p[2]); + l = strcspn(arg2, "::"); + *module = smiStrndup(arg2, l); + } else if ((p = strchr(arg2, '!'))) { + /* old scotty style module/label separator */ + *name = smiStrdup(&p[1]); + l = strcspn(arg2, "!"); + *module = smiStrndup(arg2, l); + } else if ((p = strchr(arg2, '.'))) { + /* SMIv1/v2 style module/label separator */ + *name = smiStrdup(&p[1]); + l = strcspn(arg2, "."); + *module = smiStrndup(arg2, l); + } else { + *name = smiStrdup(arg2); + *module = smiStrdup(""); + } + } else { + *name = smiStrdup(arg2); + *module = smiStrdup(""); + } + } else { + *module = smiStrdup(arg1); + *name = smiStrdup(arg2); + } +} + + + +static Node *getNode(unsigned int oidlen, SmiSubid oid[]) +{ + Node *nodePtr, *parentPtr; + unsigned int i; + + for(nodePtr = smiHandle->rootNodePtr, i=0; i < oidlen; i++) { + parentPtr = nodePtr; + nodePtr = findNodeByParentAndSubid(parentPtr, oid[i]); + if (!nodePtr) { + return parentPtr; + } + } + + return nodePtr; +} + + + +static Object *getNextChildObject(Node *startNodePtr, Module *modulePtr, + SmiNodekind nodekind) +{ + Node *nodePtr; + Object *objectPtr = NULL; + + if (!startNodePtr || !modulePtr) + return NULL; + + for (nodePtr = startNodePtr; nodePtr; nodePtr = nodePtr->nextPtr) { + for (objectPtr = nodePtr->firstObjectPtr; objectPtr; + objectPtr = objectPtr->nextSameNodePtr) { + if (((!modulePtr) || (objectPtr->modulePtr == modulePtr)) && + ((nodekind == SMI_NODEKIND_ANY) || + (nodekind & objectPtr->export.nodekind))) { + break; + } + } + if (objectPtr) break; + objectPtr = getNextChildObject(nodePtr->firstChildPtr, + modulePtr, nodekind); + if (objectPtr) break; + } + + return objectPtr; +} + + + +/* + * Interface Functions. + */ + +int smiInit(const char *tag) +{ + char *p, *pp, *tag2; +#ifdef HAVE_PWD_H + struct passwd *pw; +#endif + + smiHandle = findHandleByName(tag); + if (smiHandle) { + return 0; + } + smiHandle = addHandle(tag); + + smiDepth = 0; + + smiHandle->errorLevel = DEFAULT_ERRORLEVEL; + smiHandle->errorHandler = smiErrorHandler; +#if !defined(_MSC_VER) + smiHandle->cache = NULL; + smiHandle->cacheProg = NULL; +#endif + + if (smiInitData()) { + return -1; + } + + /* + * Setup the SMI MIB module search path: + * 1. set to builtin DEFAULT_SMIPATH + * 2. read global config file if present (append/prepend/replace) + * 3. read user config file if present (append/prepend/replace) + * 4. evaluate SMIPATH env-var if set (append/prepend/replace) + */ + + /* 1. set to builtin DEFAULT_SMIPATH */ + smiHandle->path = smiStrdup(DEFAULT_SMIPATH); + + tag2 = smiStrdup(tag); + if (tag2) tag2 = strtok(tag2, ":"); + if (tag2) { + /* 2. read global config file if present (append/prepend/replace) */ + smiReadConfig(DEFAULT_GLOBALCONFIG, tag2); +#ifdef HAVE_PWD_H + pw = getpwuid(getuid()); + if (pw && pw->pw_dir) { + /* 3. read user config file if present (append/prepend/replace) */ + smiAsprintf(&p, "%s%c%s", + pw->pw_dir, DIR_SEPARATOR, DEFAULT_USERCONFIG); + smiReadConfig(p, tag2); + smiFree(p); + } +#endif + } + smiFree(tag2); + + /* 4. evaluate SMIPATH env-var if set (append/prepend/replace) */ + p = getenv("SMIPATH"); + if (p) { + if (p[0] == PATH_SEPARATOR) { + smiAsprintf(&pp, "%s%s", smiHandle->path, p); + smiFree(smiHandle->path); + smiHandle->path = pp; + } else if (p[strlen(p)-1] == PATH_SEPARATOR) { + smiAsprintf(&pp, "%s%s", p, smiHandle->path); + smiFree(smiHandle->path); + smiHandle->path = pp; + } else { + smiHandle->path = smiStrdup(p); + } + } + + if (!smiHandle->path) { + return -1; + } + + return 0; +} + + + +void smiExit() +{ + if (!smiHandle) + return; + + smiFreeData(); + + smiFree(smiHandle->path); +#if !defined(_MSC_VER) + smiFree(smiHandle->cache); + smiFree(smiHandle->cacheProg); +#endif + + removeHandle(smiHandle); + + smiHandle = NULL; + return; +} + + + +char *smiGetPath() +{ + if (smiHandle->path) { + return smiStrdup(smiHandle->path); + } else { + return NULL; + } +} + + + +int smiSetPath(const char *s) +{ + char *s2; + + if (!smiHandle) smiInit(NULL); + + if (!s) { + smiFree(smiHandle->path); + smiHandle->path = NULL; + return 0; + } + + s2 = smiStrdup(s); + if (s2) { + smiFree(smiHandle->path); + smiHandle->path = s2; + return 0; + } else { + return -1; + } + +} + + + +void smiSetSeverity(char *pattern, int severity) +{ + smiSetErrorSeverity(pattern, severity); +} + + + +int smiReadConfig(const char *filename, const char *tag) +{ + FILE *file; + char buf[201]; + char *cmd, *arg, *s; + + file = fopen(filename, "r"); + if (file) { + while (!feof(file)) { + if (!fgets(buf, 200, file)) continue; + if ((!strlen(buf)) || (buf[0] == '#')) continue; + cmd = strtok(buf, " \t\n\r"); + if (!cmd) continue; + if (cmd[0] == '#') continue; + if (cmd[strlen(cmd)-1] == ':') { + if (!tag) continue; + cmd[strlen(cmd)-1] = 0; + if (strcmp(cmd, tag)) continue; + cmd = strtok(NULL, " \t\n\r"); + } + arg = strtok(NULL, " \t\n\r"); + if (!strcmp(cmd, "load")) { + smiLoadModule(arg); + } else if (!strcmp(cmd, "path")) { + if (arg) { + if (arg[0] == PATH_SEPARATOR) { + smiAsprintf(&s, "%s%s", smiHandle->path, arg); + smiFree(smiHandle->path); + smiHandle->path = s; + } else if (arg[strlen(arg)-1] == PATH_SEPARATOR) { + smiAsprintf(&s, "%s%s", arg, smiHandle->path); + smiFree(smiHandle->path); + smiHandle->path = s; + } else { + smiHandle->path = smiStrdup(arg); + } + } + } else if (!strcmp(cmd, "cache")) { +#if !defined(_MSC_VER) + smiFree(smiHandle->cache); + smiFree(smiHandle->cacheProg); +#endif + if (arg && strcmp(arg, "off")) { +#if !defined(_MSC_VER) + smiHandle->cache = smiStrdup(arg); + arg = strtok(NULL, "\n\r"); + smiHandle->cacheProg = smiStrdup(arg); +#else + smiPrintError(NULL, ERR_CACHE_CONFIG_NOT_SUPPORTED, + filename); +#endif + } + } else if (!strcmp(cmd, "level")) { + smiSetErrorLevel(atoi(arg)); + } else if (!strcmp(cmd, "hide")) { + smiSetSeverity(arg, 9); + } else { + smiPrintError(NULL, ERR_UNKNOWN_CONFIG_CMD, cmd, filename); + } + } + fclose(file); + return 0; + } + return -1; +} + + + +int smiIsLoaded(const char *module) +{ + if (!module) + return 0; + + return isInView(module); +} + + + +char *smiLoadModule(const char *module) +{ + Module *modulePtr; + + if (!smiHandle) smiInit(NULL); + + if (smiIsPath(module)) { + + modulePtr = loadModule(module, NULL); + + if (modulePtr) { + if (!isInView(modulePtr->export.name)) { + addView(modulePtr->export.name); + } + return modulePtr->export.name; + } else { + return NULL; + } + + } else { + + if ((modulePtr = findModuleByName(module))) { + /* already loaded. */ + if (!isInView(module)) { + addView(module); + } + return modulePtr->export.name; + } else { + if ((modulePtr = loadModule(module, NULL))) { + if (!isInView(module)) { + addView(module); + } + return modulePtr->export.name; + } else { + return NULL; + } + } + } +} + + + +void smiSetErrorLevel(int level) +{ + if (!smiHandle) smiInit(NULL); + + smiHandle->errorLevel = level; +} + + + +void smiSetFlags(int userflags) +{ + if (!smiHandle) smiInit(NULL); + + smiHandle->flags = (smiHandle->flags & ~SMI_FLAG_MASK) | userflags; +} + + + +int smiGetFlags() +{ + if (!smiHandle) smiInit(NULL); + + return smiHandle->flags & SMI_FLAG_MASK; +} + + + +SmiModule *smiGetModule(const char *module) +{ + Module *modulePtr; + + if (!module) { + return NULL; + } + + modulePtr = findModuleByName(module); + + if (!modulePtr) { + modulePtr = loadModule(module, NULL); + } + + return &modulePtr->export; +} + + + +SmiModule *smiGetFirstModule() +{ + Module *modulePtr; + + for (modulePtr = smiHandle->firstModulePtr; + modulePtr && modulePtr->export.name && + (strlen(modulePtr->export.name) == 0); + modulePtr = modulePtr->nextPtr); + + return &modulePtr->export; +} + + + +SmiModule *smiGetNextModule(SmiModule *smiModulePtr) +{ + Module *modulePtr; + + if (!smiModulePtr) { + return NULL; + } + + + for (modulePtr = ((Module *)smiModulePtr)->nextPtr; + modulePtr && modulePtr->export.name && + (strlen(modulePtr->export.name) == 0); + modulePtr = modulePtr->nextPtr); + + return &modulePtr->export; +} + + + +SmiImport *smiGetFirstImport(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return &((Module *)smiModulePtr)->firstImportPtr->export; +} + + + +SmiImport *smiGetNextImport(SmiImport *smiImportPtr) +{ + if (!smiImportPtr) { + return NULL; + } + + return &((Import *)smiImportPtr)->nextPtr->export; +} + + + +int smiIsImported(SmiModule *smiModulePtr, + SmiModule *importedModulePtr, + char *importedName) +{ + Import *importPtr; + Module *modulePtr; + char *importedModule; + + if ((!smiModulePtr) || (!importedName)) { + return 0; + } + + modulePtr = (Module *)smiModulePtr; + + if (importedModulePtr) { + importedModule = importedModulePtr->name; + } else { + importedModule = NULL; + } + + for (importPtr = modulePtr->firstImportPtr; importPtr; + importPtr = importPtr->nextPtr) { + if ((!strcmp(importedName, importPtr->export.name)) && + ((!importedModule) || + (!strcmp(importedModule, importPtr->export.module)))) { + return 1; + } + } + + return 0; +} + + + +SmiRevision *smiGetFirstRevision(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return &((Module *)smiModulePtr)->firstRevisionPtr->export; +} + + + +SmiRevision *smiGetNextRevision(SmiRevision *smiRevisionPtr) +{ + if (!smiRevisionPtr) { + return NULL; + } + + return &((Revision *)smiRevisionPtr)->nextPtr->export; +} + + + +int smiGetRevisionLine(SmiRevision *smiRevisionPtr) +{ + return ((Revision *)smiRevisionPtr)->line; +} + + + +SmiType *smiGetType(SmiModule *smiModulePtr, char *type) +{ + Type *typePtr = NULL; + Module *modulePtr = NULL; + char *module2, *type2; + + if (!type) { + return NULL; + } + + modulePtr = (Module *)smiModulePtr; + + getModulenameAndName(smiModulePtr ? smiModulePtr->name : NULL, type, + &module2, &type2); + + if (!modulePtr && module2 && strlen(module2)) { + if (!(modulePtr = findModuleByName(module2))) { + modulePtr = loadModule(module2, NULL); + } + } + + if (modulePtr) { + typePtr = findTypeByModuleAndName(modulePtr, type2); + } else { + typePtr = findTypeByName(type2); + } + + smiFree(module2); + smiFree(type2); + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +SmiType *smiGetFirstType(SmiModule *smiModulePtr) +{ + Type *typePtr; + + if (!smiModulePtr) { + return NULL; + } + + for (typePtr = ((Module *)smiModulePtr)->firstTypePtr; typePtr; + typePtr = typePtr->nextPtr) { + /* loop until we found a `real' type */ + if (typePtr->export.name && + typePtr->export.basetype != SMI_BASETYPE_UNKNOWN) { + break; + } + } + + return &typePtr->export; +} + + + +SmiType *smiGetNextType(SmiType *smiTypePtr) +{ + Type *typePtr; + + if (!smiTypePtr) { + return NULL; + } + + for (typePtr = ((Type *)smiTypePtr)->nextPtr; typePtr; + typePtr = typePtr->nextPtr) { + /* loop until we found a `real' type */ + if (typePtr->export.name && + typePtr->export.basetype != SMI_BASETYPE_UNKNOWN) { + break; + } + } + + return &typePtr->export; +} + + +SmiType *smiGetParentType(SmiType *smiTypePtr) +{ + Type *typePtr; + + if (!smiTypePtr) { + return NULL; + } + + typePtr = ((Type *)smiTypePtr)->parentPtr; + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +SmiModule *smiGetTypeModule(SmiType *smiTypePtr) +{ + return &((Type *)smiTypePtr)->modulePtr->export; +} + +int smiGetTypeLine(SmiType *smiTypePtr) +{ + return ((Type *)smiTypePtr)->line; +} + + + +SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr) +{ + Type *typePtr; + + typePtr = (Type *)smiTypePtr; + + if ((!typePtr) || (!typePtr->listPtr) || + ((typePtr->export.basetype != SMI_BASETYPE_ENUM) && + (typePtr->export.basetype != SMI_BASETYPE_BITS) && + (typePtr->export.basetype != SMI_BASETYPE_POINTER))) { + return NULL; + } + + return &((NamedNumber *)typePtr->listPtr->ptr)->export; +} + + + +SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber *smiNamedNumberPtr) +{ + Type *typePtr; + List *listPtr; + + if (!smiNamedNumberPtr) { + return NULL; + } + + typePtr = ((NamedNumber *)smiNamedNumberPtr)->typePtr; + + + if ((!typePtr) || (!typePtr->listPtr) || + ((typePtr->export.basetype != SMI_BASETYPE_ENUM) && + (typePtr->export.basetype != SMI_BASETYPE_BITS))) { + return NULL; + } + + for (listPtr = typePtr->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (((NamedNumber *)(listPtr->ptr))->export.name == + smiNamedNumberPtr->name) + break; + } + + if ((!listPtr) || (!listPtr->nextPtr)) { + return NULL; + } + + return &((NamedNumber *)listPtr->nextPtr->ptr)->export; +} + +SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr) +{ + Attribute *attributePtr; + + attributePtr = (Attribute *)smiAttributePtr; + + if ((!attributePtr) || (!attributePtr->listPtr) || + ((attributePtr->export.basetype != SMI_BASETYPE_ENUM) && + (attributePtr->export.basetype != SMI_BASETYPE_BITS) && + (attributePtr->export.basetype != SMI_BASETYPE_POINTER))) { + return NULL; + } + + return &((NamedNumber *)attributePtr->listPtr->ptr)->export; +} + + + +SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber *smiNamedNumberPtr) +{ + Attribute *attributePtr; + List *listPtr; + + if (!smiNamedNumberPtr) { + return NULL; + } + + attributePtr = (Attribute*)(((NamedNumber *)smiNamedNumberPtr)->typePtr); + + + if ((!attributePtr) || (!attributePtr->listPtr) || + ((attributePtr->export.basetype != SMI_BASETYPE_ENUM) && + (attributePtr->export.basetype != SMI_BASETYPE_BITS))) { + return NULL; + } + + for (listPtr = attributePtr->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (((NamedNumber *)(listPtr->ptr))->export.name == + smiNamedNumberPtr->name) + break; + } + + if ((!listPtr) || (!listPtr->nextPtr)) { + return NULL; + } + + return &((NamedNumber *)listPtr->nextPtr->ptr)->export; +} + +SmiRange *smiGetFirstRange(SmiType *smiTypePtr) +{ + Type *typePtr; + + typePtr = (Type *)smiTypePtr; + + if ((!typePtr) || (!typePtr->listPtr) || + (typePtr->export.basetype == SMI_BASETYPE_ENUM) || + (typePtr->export.basetype == SMI_BASETYPE_BITS)) { + return NULL; + } + + return &((Range *)typePtr->listPtr->ptr)->export; +} + + + +SmiRange *smiGetNextRange(SmiRange *smiRangePtr) +{ + Type *typePtr; + List *listPtr; + + if (!smiRangePtr) { + return NULL; + } + + typePtr = ((Range *)smiRangePtr)->typePtr; + + if ((!typePtr) || (!typePtr->listPtr) || + (typePtr->export.basetype == SMI_BASETYPE_ENUM) || + (typePtr->export.basetype == SMI_BASETYPE_BITS)) { + return NULL; + } + + for (listPtr = typePtr->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (!memcmp(&((Range *)listPtr->ptr)->export.minValue, + &smiRangePtr->minValue, sizeof(struct SmiValue))) + break; + } + + if ((!listPtr) || (!listPtr->nextPtr)) { + return NULL; + } + + return &((Range *)listPtr->nextPtr->ptr)->export; +} + +SmiRange *smiGetAttributeFirstRange(SmiAttribute *smiAttributePtr) +{ + Attribute *attributePtr; + + attributePtr = (Attribute *)smiAttributePtr; + + if ((!attributePtr) || (!attributePtr->listPtr) || + (attributePtr->export.basetype == SMI_BASETYPE_ENUM) || + (attributePtr->export.basetype == SMI_BASETYPE_BITS)) { + return NULL; + } + + return &((Range *)attributePtr->listPtr->ptr)->export; +} + + + +SmiRange *smiGetAttributeNextRange(SmiRange *smiRangePtr) +{ + Attribute *attributePtr; + List *listPtr; + + if (!smiRangePtr) { + return NULL; + } + + attributePtr = (Attribute*)((Range *)smiRangePtr)->typePtr; + + if ((!attributePtr) || (!attributePtr->listPtr) || + (attributePtr->export.basetype == SMI_BASETYPE_ENUM) || + (attributePtr->export.basetype == SMI_BASETYPE_BITS)) { + return NULL; + } + + for (listPtr = attributePtr->listPtr; listPtr; listPtr = listPtr->nextPtr) { + if (!memcmp(&((Range *)listPtr->ptr)->export.minValue, + &smiRangePtr->minValue, sizeof(struct SmiValue))) + break; + } + + if ((!listPtr) || (!listPtr->nextPtr)) { + return NULL; + } + + return &((Range *)listPtr->nextPtr->ptr)->export; +} + + +SmiIdentity *smiGetFirstIdentity(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return ((Module *)smiModulePtr)->firstIdentityPtr ? + &((Module *)smiModulePtr)->firstIdentityPtr->export : NULL; + +} + +SmiIdentity *smiGetNextIdentity(SmiIdentity *smiIdentityPtr) +{ + if (!smiIdentityPtr) { + return NULL; + } + + return ((Identity *)smiIdentityPtr)->nextPtr ? + &((Identity *)smiIdentityPtr)->nextPtr->export : NULL; +} + +SmiModule *smiGetIdentityModule(SmiIdentity *smiIdentityPtr) +{ + return &((Identity *)smiIdentityPtr)->modulePtr->export; +} + +SmiIdentity *smiGetParentIdentity(SmiIdentity *smiIdentityPtr) +{ + return (SmiIdentity*)(((Identity *)smiIdentityPtr)->parentPtr); +} + +SmiIdentity *smiGetIdentity(SmiModule *smiModulePtr, char *identity) +{ + + if (!smiModulePtr) { + return NULL; + } + else + { + SmiIdentity *ide; + + for(ide = smiGetFirstIdentity(smiModulePtr); + ide; + ide = smiGetNextIdentity(ide)) + if(!strncmp(ide->name,identity,64))return ide; + + return NULL; + } + +} + +int smiGetIdentityLine(SmiIdentity *smiIdentityPtr) +{ + return ((Identity *)smiIdentityPtr)->line; +} + + +SmiClass *smiGetFirstClass(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return ((Module *)smiModulePtr)->firstClassPtr ? + &((Module *)smiModulePtr)->firstClassPtr->export : NULL; + +} + +SmiClass *smiGetNextClass(SmiClass *smiClassPtr) +{ + if (!smiClassPtr) { + return NULL; + } + + return ((Class *)smiClassPtr)->nextPtr ? + &((Class *)smiClassPtr)->nextPtr->export : NULL; +} + +SmiModule *smiGetClassModule(SmiClass *smiClassPtr) +{ + return &((Class *)smiClassPtr)->modulePtr->export; +} + +SmiClass *smiGetParentClass(SmiClass *smiClassPtr) +{ + return (SmiClass*)(((Class *)smiClassPtr)->parentPtr); +} + +SmiClass *smiGetClass(SmiModule *smiModulePtr, char *class) +{ + + if (!smiModulePtr) { + return NULL; + } + else + { + SmiClass *cl; + + for(cl = smiGetFirstClass(smiModulePtr); + cl; + cl = smiGetNextClass(cl)) + if(!strncmp(cl->name,class,64))return cl; + + return NULL; + } + +} + +int smiGetClassLine(SmiClass *smiClassPtr) +{ + return ((Class *)smiClassPtr)->line; +} + +SmiAttribute *smiGetFirstAttribute(SmiClass *smiClassPtr) +{ + Attribute *attributePtr; + + if (!smiClassPtr) { + return NULL; + } + + attributePtr = ((Class *)smiClassPtr)->firstAttributePtr; + + return &attributePtr->export; +} + + SmiAttribute *smiGetNextAttribute( SmiAttribute *smiTypePtr) +{ + Attribute *attributePtr; + + if (!smiTypePtr) { + return NULL; + } + + attributePtr = ((Attribute *)smiTypePtr)->nextPtr; + + return &attributePtr->export; +} + +SmiAttribute *smiGetAttribute(SmiClass *smiClassPtr, char *attribute) +{ + Attribute *attributePtr; + + if (! smiClassPtr) { + return NULL; + } + + attributePtr = ((Class *)smiClassPtr)->firstAttributePtr; + + for (attributePtr = ((Class *)smiClassPtr)->firstAttributePtr; + attributePtr; attributePtr = attributePtr->nextPtr) + { + if (!strncmp(attributePtr->export.name, attribute,64)) { + return &attributePtr->export; + } + } + + /* + * attribute might belong to the parent so check parent if + * attribute not found + */ + + smiClassPtr = smiGetParentClass(smiClassPtr); + attributePtr = (Attribute*)smiGetAttribute(smiClassPtr , attribute); + + return &attributePtr->export; +} + +SmiType *smiGetAttributeParentType(SmiAttribute *smiAttributePtr) +{ + Type *parentTypePtr; + + if (! smiAttributePtr) { + return NULL; + } + + parentTypePtr = ((Attribute*)smiAttributePtr)->parentTypePtr; + + return (parentTypePtr) ? &parentTypePtr->export : NULL; +} + +SmiClass *smiGetAttributeParentClass( SmiAttribute *smiAttributePtr) +{ + Class *parentClassPtr; + + if (! smiAttributePtr) { + return NULL; + } + + parentClassPtr = ((Attribute*)smiAttributePtr)->parentClassPtr; + + return parentClassPtr ? &parentClassPtr->export : NULL; +} + +SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *smiClassPtr) +{ + Class *classPtr; + + if (! smiClassPtr) { + return NULL; + } + + classPtr = (Class*)smiClassPtr; + + if (! classPtr->uniqueList) { + return NULL; + } + + if (classPtr->uniqueList->ptr == classPtr) { + return NULL; /* scalar class */ + } + + return (SmiAttribute*)(classPtr->uniqueList->ptr); +} + +SmiAttribute *smiGetNextUniqueAttribute( SmiAttribute *smiTypePtr) +{ + Class *classPtr; + List *listPtr; + + if (! smiTypePtr) { + return NULL; + } + + classPtr = ((Attribute*)smiTypePtr)->classPtr; + + if (classPtr && classPtr->uniqueList) { + for (listPtr=classPtr->uniqueList;listPtr; listPtr=listPtr->nextPtr) { + if (&((Attribute*)(listPtr->ptr))->export == smiTypePtr) { + if (listPtr->nextPtr) { + return &((Attribute*)(listPtr->nextPtr->ptr))->export; + } + } + } + } + return NULL; +} + + + +int smiGetAttributeLine(SmiAttribute *smiAttributePtr) +{ + return ((Attribute *)smiAttributePtr)->line; +} + + + +int smiIsClassScalar(SmiClass *smiClassPtr) +{ + Class *classPtr; + + if (! smiClassPtr) { + return 0; + } + + classPtr = (Class*)smiClassPtr; + + if (! classPtr->uniqueList) { + return 0; + } + + return (classPtr->uniqueList->ptr == classPtr); +} + + + +SmiEvent *smiGetFirstEvent(SmiClass *smiClassPtr) +{ + Event *eventPtr; + + if (! smiClassPtr) { + return NULL; + } + + eventPtr = ((Class *)smiClassPtr)->firstEventPtr; + return &(eventPtr->export); +} + + + +SmiEvent *smiGetNextEvent(SmiEvent *smiEventPtr) +{ + Event *eventPtr; + + if (! smiEventPtr) { + return NULL; + } + + eventPtr = ((Event *)smiEventPtr)->nextPtr; + return &eventPtr->export; +} + + + +int smiGetEventLine(SmiEvent *smiEventPtr) +{ + return ((Event *)smiEventPtr)->line; +} + + + +SmiMacro *smiGetMacro(SmiModule *smiModulePtr, char *macro) +{ + Macro *macroPtr = NULL; + Module *modulePtr = NULL; + char *module2, *macro2; + + if (!macro) { + return NULL; + } + + modulePtr = (Module *)smiModulePtr; + + getModulenameAndName(smiModulePtr ? smiModulePtr->name : NULL, macro, + &module2, ¯o2); + + if (!modulePtr && module2 && strlen(module2)) { + if (!(modulePtr = findModuleByName(module2))) { + modulePtr = loadModule(module2, NULL); + } + } + + if (modulePtr) { + macroPtr = findMacroByModuleAndName(modulePtr, macro2); + } else { + macroPtr = findMacroByName(macro2); + } + + smiFree(module2); + smiFree(macro2); + return macroPtr ? ¯oPtr->export : NULL; +} + + + +SmiMacro *smiGetFirstMacro(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return ((Module *)smiModulePtr)->firstMacroPtr ? + &((Module *)smiModulePtr)->firstMacroPtr->export : NULL; +} + + + +SmiMacro *smiGetNextMacro(SmiMacro *smiMacroPtr) +{ + if (!smiMacroPtr) { + return NULL; + } + + return ((Macro *)smiMacroPtr)->nextPtr ? + &((Macro *)smiMacroPtr)->nextPtr->export : NULL; +} + + +SmiModule *smiGetMacroModule(SmiMacro *smiMacroPtr) +{ + return &((Macro *)smiMacroPtr)->modulePtr->export; +} + + +int smiGetMacroLine(SmiMacro *smiMacroPtr) +{ + return ((Macro *)smiMacroPtr)->line; +} + + +SmiNode *smiGetNode(SmiModule *smiModulePtr, const char *node) +{ + Object *objectPtr = NULL; + Module *modulePtr = NULL; + Node *nodePtr; + char *module2, *node2, *p; + unsigned int oidlen; + SmiSubid oid[128]; + + if (!node) { + return NULL; + } + + modulePtr = (Module *)smiModulePtr; + + getModulenameAndName(smiModulePtr ? smiModulePtr->name : NULL, node, + &module2, &node2); + + if (!modulePtr && module2 && strlen(module2)) { + if (!(modulePtr = findModuleByName(module2))) { + modulePtr = loadModule(module2, NULL); + } + } + + if (isdigit((int)node2[0])) { + for (oidlen = 0, p = strtok(node2, ". "); p; + oidlen++, p = strtok(NULL, ". ")) { + oid[oidlen] = strtoul(p, NULL, 0); + } + nodePtr = getNode(oidlen, oid); + if (nodePtr) { + if (modulePtr) { + objectPtr = findObjectByModuleAndNode(modulePtr, nodePtr); + } else { + objectPtr = findObjectByNode(nodePtr); + } + } + } else { + p = strtok(node2, ". "); + if (modulePtr) { + objectPtr = findObjectByModuleAndName(modulePtr, p); + } else { + objectPtr = findObjectByName(p); + } + } + + smiFree(module2); + smiFree(node2); + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetNodeByOID(unsigned int oidlen, SmiSubid oid[]) +{ + Node *nodePtr; + Object *objectPtr; + + if (!oidlen) { + return NULL; + } + + nodePtr = getNode(oidlen, oid); + + if (!nodePtr) { + return NULL; + } + + objectPtr = findObjectByNode(nodePtr); + + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetFirstNode(SmiModule *smiModulePtr, SmiNodekind nodekind) +{ + Module *modulePtr; + Node *nodePtr = NULL; + Object *objectPtr; + + if (!smiModulePtr) { + return NULL; + } + + modulePtr = (Module *)smiModulePtr; + + if (modulePtr && modulePtr->prefixNodePtr) { + /* start at the common oid prefix of this module */ + nodePtr = modulePtr->prefixNodePtr; + } else { + nodePtr = smiHandle->rootNodePtr->firstChildPtr; + } + + do { + objectPtr = getNextChildObject(nodePtr, modulePtr, nodekind); + + if (objectPtr) + return &objectPtr->export; + + if (nodePtr->firstChildPtr) { + nodePtr = nodePtr->firstChildPtr; + } else if (nodePtr->nextPtr) { + nodePtr = nodePtr->nextPtr; + } else { + for (nodePtr = nodePtr->parentPtr; + nodePtr && (nodePtr->parentPtr) && (!nodePtr->nextPtr); + nodePtr = nodePtr->parentPtr); + if (nodePtr) nodePtr = nodePtr->nextPtr; + } + } while (nodePtr); + + return NULL; +} + + + +SmiNode *smiGetNextNode(SmiNode *smiNodePtr, SmiNodekind nodekind) +{ + Module *modulePtr; + Object *objectPtr; + Node *nodePtr; + int i; + + if (!smiNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiNodePtr; + nodePtr = objectPtr->nodePtr; + modulePtr = objectPtr->modulePtr; + + if (!modulePtr) { + return NULL; + } + + if (!nodePtr) { + return NULL; + } + + do { + if (nodePtr->firstChildPtr) { + nodePtr = nodePtr->firstChildPtr; + } else if (nodePtr->nextPtr) { + nodePtr = nodePtr->nextPtr; + } else { + for (nodePtr = nodePtr->parentPtr; + (nodePtr->parentPtr) && (!nodePtr->nextPtr); + nodePtr = nodePtr->parentPtr); + nodePtr = nodePtr->nextPtr; + /* did we move outside the common oid prefix of this module? */ + for (i = 0; i < modulePtr->prefixNodePtr->oidlen; i++) + if ((!nodePtr) || (!nodePtr->oid) || + (nodePtr->oid[i] != modulePtr->prefixNodePtr->oid[i])) + return NULL; + } + + objectPtr = getNextChildObject(nodePtr, modulePtr, nodekind); + + if (objectPtr) + return &objectPtr->export; + + } while (nodePtr); + + return NULL; +} + + + +SmiNode *smiGetParentNode(SmiNode *smiNodePtr) +{ + Module *modulePtr; + Object *objectPtr; + Import *importPtr; + Node *nodePtr; + + if (!smiNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiNodePtr; + nodePtr = objectPtr->nodePtr; + modulePtr = objectPtr->modulePtr; + + if (!nodePtr) { + return NULL; + } + + if (nodePtr == smiHandle->rootNodePtr) { + return NULL; + } + + nodePtr = nodePtr->parentPtr; + if (! nodePtr) { + return NULL; + } + + /* + * First, try to find a definition in the same module. + */ + objectPtr = NULL; + if (modulePtr) { + objectPtr = findObjectByModuleAndNode(modulePtr, nodePtr); + } + + /* + * If found, check if it's imported. In case, get the original definition. + */ + if (objectPtr) { + importPtr = findImportByName(objectPtr->export.name, + objectPtr->modulePtr); + if (importPtr) { + objectPtr = findObjectByModulenameAndNode(importPtr->export.module, + nodePtr); + } else { + objectPtr = NULL; + } + } + + /* + * If not yet found, try to find any definition. + */ + if (!objectPtr) { + objectPtr = findObjectByNode(nodePtr); + + if ((!objectPtr) && (nodePtr->parentPtr)) { + /* an implicitly created node, e.g. gaga.0 in an object + * definition with oid == gaga.0.1. + */ + objectPtr = addObject(SMI_UNKNOWN_LABEL, + nodePtr->parentPtr, nodePtr->subid, + 0, NULL); + objectPtr->nodePtr = nodePtr; + objectPtr->modulePtr = modulePtr; + } + } + + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetRelatedNode(SmiNode *smiNodePtr) +{ + if (!smiNodePtr) { + return NULL; + } + + return &((Object *)smiNodePtr)->relatedPtr->export; +} + + + +SmiNode *smiGetFirstChildNode(SmiNode *smiNodePtr) +{ + Module *modulePtr; + Object *objectPtr; + Node *nodePtr; + + if (!smiNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiNodePtr; + nodePtr = objectPtr->nodePtr; + modulePtr = objectPtr->modulePtr; + + if (!nodePtr) { + return NULL; + } + + nodePtr = nodePtr->firstChildPtr; + + if (!nodePtr) { + return NULL; + } + + objectPtr = findObjectByModuleAndNode(modulePtr, nodePtr); + if (!objectPtr) objectPtr = findObjectByNode(nodePtr); + + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetNextChildNode(SmiNode *smiNodePtr) +{ + Module *modulePtr; + Object *objectPtr; + Node *nodePtr; + + if (!smiNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiNodePtr; + nodePtr = objectPtr->nodePtr; + modulePtr = objectPtr->modulePtr; + + if (!nodePtr) { + return NULL; + } + + nodePtr = nodePtr->nextPtr; + + if (!nodePtr) { + return NULL; + } + + objectPtr = findObjectByModuleAndNode(modulePtr, nodePtr); + if (!objectPtr) objectPtr = findObjectByNode(nodePtr); + + return objectPtr ? &objectPtr->export : NULL; +} + + + +SmiNode *smiGetModuleIdentityNode(SmiModule *smiModulePtr) +{ + if (!smiModulePtr) { + return NULL; + } + + return &((Module *)smiModulePtr)->objectPtr->export; +} + + + +SmiModule *smiGetNodeModule(SmiNode *smiNodePtr) +{ + return &((Object *)smiNodePtr)->modulePtr->export; +} + + + +SmiType *smiGetNodeType(SmiNode *smiNodePtr) +{ + Type *typePtr; + + typePtr = ((Object *)smiNodePtr)->typePtr; + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +int smiGetNodeLine(SmiNode *smiNodePtr) +{ + return ((Object *)smiNodePtr)->line; +} + + + +SmiElement *smiGetFirstElement(SmiNode *smiNodePtr) +{ + List *listPtr; + + if (!smiNodePtr) { + return NULL; + } + + listPtr = ((Object *)smiNodePtr)->listPtr; + + return (SmiElement *)listPtr; +} + + + +SmiElement *smiGetNextElement(SmiElement *smiElementPtr) +{ + List *listPtr; + + if (!smiElementPtr) { + return NULL; + } + + listPtr = ((List *)smiElementPtr)->nextPtr; + + return (SmiElement *)listPtr; +} + + + +SmiNode *smiGetElementNode(SmiElement *smiElementPtr) +{ + if ((Object *)((List *)smiElementPtr)->ptr) + return &((Object *)((List *)smiElementPtr)->ptr)->export; + else + return NULL; +} + + + +SmiOption *smiGetFirstOption(SmiNode *smiComplianceNodePtr) +{ + Object *objectPtr; + + if (!smiComplianceNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiComplianceNodePtr; + + if (!objectPtr->optionlistPtr) { + return NULL; + } + + if (objectPtr->export.nodekind != SMI_NODEKIND_COMPLIANCE) { + return NULL; + } + + return &((Option *)objectPtr->optionlistPtr->ptr)->export; +} + + + +SmiOption *smiGetNextOption(SmiOption *smiOptionPtr) +{ + List *listPtr; + + if (!smiOptionPtr) { + return NULL; + } + + for (listPtr = + ((Option *)smiOptionPtr)->compliancePtr->optionlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + if ((Option *)(listPtr->ptr) == (Option *)smiOptionPtr) { + if (listPtr->nextPtr) { + return &((Option *)listPtr->nextPtr->ptr)->export; + } else { + return NULL; + } + } + } + + return NULL; +} + + + +SmiNode *smiGetOptionNode(SmiOption *smiOptionPtr) +{ + return &((Option *)smiOptionPtr)->objectPtr->export; +} + + + +int smiGetOptionLine(SmiOption *smiOptionPtr) +{ + return ((Option *)smiOptionPtr)->line; +} + + + +SmiRefinement *smiGetFirstRefinement(SmiNode *smiComplianceNodePtr) +{ + Object *objectPtr; + + if (!smiComplianceNodePtr) { + return NULL; + } + + objectPtr = (Object *)smiComplianceNodePtr; + + if (!objectPtr->refinementlistPtr) { + return NULL; + } + + if (objectPtr->export.nodekind != SMI_NODEKIND_COMPLIANCE) { + return NULL; + } + + return &((Refinement *)objectPtr->refinementlistPtr->ptr)->export; +} + + + +SmiRefinement *smiGetNextRefinement(SmiRefinement *smiRefinementPtr) +{ + List *listPtr; + + if (!smiRefinementPtr) { + return NULL; + } + + for (listPtr = + ((Refinement *)smiRefinementPtr)->compliancePtr->refinementlistPtr; + listPtr; + listPtr = listPtr->nextPtr) { + if ((Refinement *)(listPtr->ptr) == (Refinement *)smiRefinementPtr) { + if (listPtr->nextPtr) { + return &((Refinement *)listPtr->nextPtr->ptr)->export; + } else { + return NULL; + } + } + } + + return NULL; +} + + + +SmiNode *smiGetRefinementNode(SmiRefinement *smiRefinementPtr) +{ + return &((Refinement *)smiRefinementPtr)->objectPtr->export; +} + + + +SmiType *smiGetRefinementType(SmiRefinement *smiRefinementPtr) +{ + Type *typePtr; + + typePtr = ((Refinement *)smiRefinementPtr)->typePtr; + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +SmiType *smiGetRefinementWriteType(SmiRefinement *smiRefinementPtr) +{ + Type *typePtr; + + typePtr = ((Refinement *)smiRefinementPtr)->writetypePtr; + + if (!typePtr || + typePtr->export.basetype == SMI_BASETYPE_UNKNOWN) { + return NULL; + } + + return &typePtr->export; +} + + + +int smiGetRefinementLine(SmiRefinement *smiRefinementPtr) +{ + return ((Refinement *)smiRefinementPtr)->line; +} + + + +SmiElement *smiGetFirstUniquenessElement(SmiNode *smiNodePtr) +{ + List *listPtr; + + if (!smiNodePtr) { + return NULL; + } + + listPtr = ((Object *)smiNodePtr)->uniquenessPtr; + + return (SmiElement *)listPtr; +} + + + +char *smiRenderOID(unsigned int oidlen, SmiSubid *oid, int flags) +{ + SmiNode *nodePtr = NULL; + SmiModule *modulePtr = NULL; + unsigned int i = 0; + char *ss, *s = NULL; + + if (!oid) { + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + return s; + } + + if (flags & (SMI_RENDER_NAME | SMI_RENDER_QUALIFIED)) { + int len; + for (len = oidlen; len; len--) { + nodePtr = smiGetNodeByOID(len, oid); + if (! nodePtr || nodePtr->name) break; + } + if (nodePtr && nodePtr->name) { + i = nodePtr->oidlen; + if (flags & SMI_RENDER_QUALIFIED) { + modulePtr = smiGetNodeModule(nodePtr); + } + if (modulePtr) { + smiAsprintf(&s, "%s::%s", + modulePtr->name, nodePtr->name); + } else { + smiAsprintf(&s, "%s", nodePtr->name); + } + } + } + + for (; i < oidlen; i++) { + ss = s; + smiAsprintf(&s, "%s%s%u", ss ? ss : "", i ? "." : "", oid[i]); + smiFree(ss); + } + + if ((!s) && (flags & SMI_RENDER_UNKNOWN)) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } + + return s; +} + + + +char *smiRenderValue(SmiValue *smiValuePtr, SmiType *smiTypePtr, int flags) +{ + unsigned int i, pfx; + int j, k, n, have_pfx; + char *last_fmt, *fmt; + SmiUnsigned64 vv; + int xlen; + SmiNamedNumber *nn; + char *s, *ss; + char f[8]; + SmiUnsigned32 v32; + SmiUnsigned64 v64; + + if (!smiValuePtr) { + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + return s; + } + + switch (smiValuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + if (!(flags & SMI_RENDER_FORMAT) || + !smiTypePtr || !smiTypePtr->format || + !strlen(smiTypePtr->format) || smiTypePtr->format[0] == 'd') { + if (smiTypePtr->format && (strlen(smiTypePtr->format) >= 3) && + (smiTypePtr->format[1] == '-')) { + i = atoi(&smiTypePtr->format[2]); + if (i < 0) i = 0; + if (i > 20) i = 20; + smiAsprintf(&s, "%0*lu.", + 1 + i, + smiValuePtr->value.unsigned32); + if (s) { + for (j = strlen(s) - 1; i > 0; i--, j--) { + s[j] = s[j-1]; + } + s[j] = '.'; + } + } else { + smiAsprintf(&s, "%lu", smiValuePtr->value.unsigned32); + } + } else if (smiTypePtr->format[0] == 'x') { + smiAsprintf(&s, "%lx", smiValuePtr->value.unsigned32); + } else if (smiTypePtr->format[0] == 'o') { + smiAsprintf(&s, "%lo", smiValuePtr->value.unsigned32); + } else if (smiTypePtr->format[0] == 'b') { + for (i = 32 - 1; + i > 0 && !(smiValuePtr->value.unsigned32 & (1 << i)); i--); + s = smiMalloc(i + 1 + 1); + if (s) { + for (j = 0; i >= 0; i--, j++) { + s[j] = smiValuePtr->value.unsigned32 & (1<format || + !strlen(smiTypePtr->format) || smiTypePtr->format[0] == 'd') { + if (smiTypePtr->format && (strlen(smiTypePtr->format) >= 3) && + (smiTypePtr->format[1] == '-')) { + i = atoi(&smiTypePtr->format[2]); + if (i < 0) i = 0; + if (i > 20) i = 20; + sprintf(f, "%%0%s.", UINT64_FORMAT); + f[2] = '*'; + smiAsprintf(&s, f, + 1 + i, + smiValuePtr->value.unsigned64); + if (s) { + for (j = strlen(s) - 1; i > 0; i--, j--) { + s[j] = s[j-1]; + } + s[j] = '.'; + } + } else { + smiAsprintf(&s, UINT64_FORMAT, smiValuePtr->value.unsigned64); + } + } else if (smiTypePtr->format[0] == 'x') { + strcpy(f, UINT64_FORMAT); + f[strlen(f)-1] = 'x'; + smiAsprintf(&s, f, smiValuePtr->value.unsigned64); + } else if (smiTypePtr->format[0] == 'o') { + strcpy(f, UINT64_FORMAT); + f[strlen(f)-1] = 'o'; + smiAsprintf(&s, f, smiValuePtr->value.unsigned64); + } else if (smiTypePtr->format[0] == 'b') { + for (i = 64 - 1; + i > 0 && !(smiValuePtr->value.unsigned64 & (1 << i)); i--); + s = smiMalloc(i + 1 + 1); + if (s) { + for (j = 0; i >= 0; i--, j++) { + s[j] = smiValuePtr->value.unsigned64 & (1<format || + !strlen(smiTypePtr->format) || smiTypePtr->format[0] == 'd') { + if (smiTypePtr->format && (strlen(smiTypePtr->format) >= 3) && + (smiTypePtr->format[1] == '-')) { + i = atoi(&smiTypePtr->format[2]); + if (i < 0) i = 0; + if (i > 20) i = 20; + smiAsprintf(&s, "%0*ld.", + 1 + i + (smiValuePtr->value.integer32 < 0 ? 1 : 0), + smiValuePtr->value.integer32); + if (s) { + for (j = strlen(s) - 1; i > 0; i--, j--) { + s[j] = s[j-1]; + } + s[j] = '.'; + } + } else { + smiAsprintf(&s, "%ld", smiValuePtr->value.integer32); + } + } else if (smiTypePtr->format[0] == 'x') { + if (smiValuePtr->value.integer32 >= 0) { + smiAsprintf(&s, "%lx", smiValuePtr->value.integer32); + } else { + smiAsprintf(&s, "-%lx", - smiValuePtr->value.integer32); + } + } else if (smiTypePtr->format[0] == 'o') { + if (smiValuePtr->value.integer32 >= 0) { + smiAsprintf(&s, "%lo", smiValuePtr->value.integer32); + } else { + smiAsprintf(&s, "-%lo", - smiValuePtr->value.integer32); + } + } else if (smiTypePtr->format[0] == 'b') { + if (smiValuePtr->value.integer32 >= 0) { + v32 = smiValuePtr->value.integer32; + j = 0; + } else { + v32 = - smiValuePtr->value.integer32; + j = 1; + } + for (i = 32 - 1; + i > 0 && !(v32 & (1 << i)); i--); + s = smiMalloc(i + j + 1 + 1); + if (s) { + s[0] = '-'; + for (; i >= 0; i--, j++) { + s[j] = v32 & (1<format || + !strlen(smiTypePtr->format) || smiTypePtr->format[0] == 'd') { + if (smiTypePtr->format && (strlen(smiTypePtr->format) >= 3) && + (smiTypePtr->format[1] == '-')) { + i = atoi(&smiTypePtr->format[2]); + if (i < 0) i = 0; + if (i > 20) i = 20; + sprintf(f, "%%0%s.", INT64_FORMAT); + f[2] = '*'; + smiAsprintf(&s, f, + 1 + i + (smiValuePtr->value.integer64 < 0 ? 1 : 0), + smiValuePtr->value.integer64); + if (s) { + for (j = strlen(s) - 1; i > 0; i--, j--) { + s[j] = s[j-1]; + } + s[j] = '.'; + } + } else { + smiAsprintf(&s, INT64_FORMAT, smiValuePtr->value.integer64); + } + } else if (smiTypePtr->format[0] == 'x') { + if (smiValuePtr->value.integer64 >= 0) { + strcpy(f, UINT64_FORMAT); + f[strlen(f)-1] = 'x'; + smiAsprintf(&s, f, smiValuePtr->value.integer64); + } else { + sprintf(f, "-%s", UINT64_FORMAT); + f[strlen(f)-1] = 'x'; + smiAsprintf(&s, f, - smiValuePtr->value.integer64); + } + } else if (smiTypePtr->format[0] == 'o') { + if (smiValuePtr->value.integer64 >= 0) { + strcpy(f, UINT64_FORMAT); + sprintf(f, "-%s", UINT64_FORMAT); + f[strlen(f)-1] = 'o'; + smiAsprintf(&s, f, smiValuePtr->value.integer64); + } else { + smiAsprintf(&s, f, - smiValuePtr->value.integer64); + } + } else if (smiTypePtr->format[0] == 'b') { + if (smiValuePtr->value.integer64 >= 0) { + v64 = smiValuePtr->value.integer64; + j = 0; + } else { + v64 = - smiValuePtr->value.integer64; + j = 1; + } + for (i = 64 - 1; + i > 0 && !(v64 & (1 << i)); i--); + s = smiMalloc(i + j + 1 + 1); + if (s) { + s[0] = '-'; + for (; i >= 0; i--, j++) { + s[j] = v64 & (1<len, smiValuePtr->value.oid, flags); + break; + case SMI_BASETYPE_OCTETSTRING: + if (!(flags & SMI_RENDER_FORMAT) || + (!smiTypePtr->format && + (smiTypePtr->name && strcmp( smiTypePtr->name, "IpAddress")) ) ) { + for (i = 0; i < smiValuePtr->len; i++) { + if (!isprint((int)smiValuePtr->value.ptr[i])) break; + } + if ((i < smiValuePtr->len) || + !(flags & SMI_RENDER_PRINTABLE)) { + smiAsprintf(&s, ""); + for (i=0; i < smiValuePtr->len; i++) { + ss = s; + smiAsprintf(&s, "%s%02x", ss, smiValuePtr->value.ptr[i]); + smiFree(ss); + } + } else { + smiAsprintf(&s, "%s", smiValuePtr->value.ptr); + } + } else { + i = 0; + smiAsprintf(&s, ""); + /* SNMPv2-SMI:IpAddress does not have a display hint. + ==> let's use this one: "1d." if we have an IpAddress here */ + fmt = (smiTypePtr->name && + strcmp( smiTypePtr->name, "IpAddress" ) ) ? + smiTypePtr->format : "1d."; + while (*fmt && i < smiValuePtr->len) { + last_fmt = fmt; + have_pfx = pfx = 0; /* scan prefix: */ + while (*fmt && isdigit((int)*fmt)) { + pfx = pfx * 10 + *fmt - '0', have_pfx = 1, fmt++; + } + if (! have_pfx) { + pfx = 1; + } + switch (*fmt) { + case 't': + /* XXX UTF-8 not implemented, fall through to ASCII (a) */ + case 'a': + n = (pfx < (smiValuePtr->len - i)) ? + pfx : smiValuePtr->len - i; + for (k = 0; k < n; k++) { + if (! isascii((int) smiValuePtr->value.ptr[i+k])) { + smiFree(s); + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + return s; + } + ss = s; + smiAsprintf(&s, "%s%c", ss, smiValuePtr->value.ptr[i+k]); + smiFree(ss); + } + i += n; + break; + case 'b': + case 'd': + case 'o': + case 'x': + /* XXX: limited to no more than + sizeof(SmiUnsigned64) octets */ + vv = 0; + xlen = pfx * 2; + while (pfx > 0 && i < smiValuePtr->len) { + vv = vv * 256 + + ((unsigned char)smiValuePtr->value.ptr[i]); + i++; + pfx--; + } + switch (*fmt) { + case 'd': + ss = s; + sprintf(f, "%%s%s", UINT64_FORMAT); + smiAsprintf(&s, f, ss, vv); + smiFree(ss); + break; + case 'o': + ss = s; + sprintf(f, "%%s%s", UINT64_FORMAT); + f[strlen(f)-1] = 'o'; + smiAsprintf(&s, f, ss, vv); + smiFree(ss); + break; + case 'x': + ss = s; + sprintf(f, "%%s%%0%s", UINT64_FORMAT); + f[4] = '*'; + f[strlen(f)-1] = 'x'; + smiAsprintf(&s, f, ss, xlen, vv); + smiFree(ss); + break; + case 'b': + k = pfx * 8 - 1; + if (k > sizeof(SmiUnsigned64) * 8 - 1) + k = sizeof(SmiUnsigned64) * 8 - 1; + for (j = 0; k >= 0; k--, j++) { + ss = s; + smiAsprintf(&s, "%s%c", + ss, vv & (1 << k) ? '1' : '0'); + smiFree(ss); + } + break; + } + break; + default: + smiFree(s); + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + return s; + } + fmt++; + + /* + * Check for a separator and repeat with last format if + * data is still available. + */ + if (*fmt && ! isdigit((int) *fmt) && *fmt != '*') { + if (i < smiValuePtr->len) { + ss = s; + smiAsprintf(&s, "%s%c", ss, fmt[0]); + smiFree(ss); + } + fmt++; + } + + if (! *fmt && (i < smiValuePtr->len)) { + fmt = last_fmt; + } + } + } + break; + case SMI_BASETYPE_ENUM: + if ((flags & SMI_RENDER_NAME) && (smiTypePtr)) { + for (nn = smiGetFirstNamedNumber(smiTypePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.integer32 == smiValuePtr->value.integer32) + break; + } + if (nn) { + if (flags & SMI_RENDER_NUMERIC) { + smiAsprintf(&s, "%s(%ld)", + nn->name, nn->value.value.integer32); + } else { + smiAsprintf(&s, "%s", nn->name); + } + } else { + smiAsprintf(&s, "%ld", smiValuePtr->value.integer32); + } + } else { + smiAsprintf(&s, "%ld", smiValuePtr->value.integer32); + } + break; + case SMI_BASETYPE_BITS: + smiAsprintf(&s, ""); + for (i = 0, nn = NULL; i < smiValuePtr->len * 8; i++) { + if (smiValuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if ((flags & SMI_RENDER_NAME) && (smiTypePtr)) { + for (nn = smiGetFirstNamedNumber(smiTypePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + } + ss = s; + if ((flags & SMI_RENDER_NAME) && + (flags & SMI_RENDER_NUMERIC) && nn) { + smiAsprintf(&s, "%s%s%s(%d)", + ss, strlen(ss) ? " " : "", nn->name, i); + } else if (nn) { + smiAsprintf(&s, "%s%s%s", + ss, strlen(ss) ? " " : "", nn->name); + } else { + smiAsprintf(&s, "%s%s%d", + ss, strlen(ss) ? " " : "", i); + } + smiFree(ss); + } + } + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + case SMI_BASETYPE_UNKNOWN: + default: + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + break; + } + + return s; +} + +char *smiRenderNode(SmiNode *smiNodePtr, int flags) +{ + char *s; + SmiModule *modulePtr; + + if ((!smiNodePtr) || (smiNodePtr->name == NULL)) { + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + } else { + modulePtr = smiGetNodeModule(smiNodePtr); + if ((!(flags & SMI_RENDER_QUALIFIED)) || + (!modulePtr) || + (!strlen(modulePtr->name))) { + smiAsprintf(&s, "%s", smiNodePtr->name); + } else { + smiAsprintf(&s, "%s::%s", modulePtr->name, smiNodePtr->name); + } + } + return s; +} + + + +char *smiRenderType(SmiType *smiTypePtr, int flags) +{ + char *s; + SmiModule *modulePtr; + + if ((!smiTypePtr) || (smiTypePtr->name == NULL)) { + if (flags & SMI_RENDER_UNKNOWN) { + smiAsprintf(&s, SMI_UNKNOWN_LABEL); + } else { + s = NULL; + } + } else { + modulePtr = smiGetTypeModule(smiTypePtr); + if ((!(flags & SMI_RENDER_QUALIFIED)) || + (!modulePtr) || + (!strlen(modulePtr->name))) { + smiAsprintf(&s, "%s", smiTypePtr->name); + } else { + smiAsprintf(&s, "%s::%s", modulePtr->name, smiTypePtr->name); + } + } + return s; +} + + + +unsigned int smiGetMinSize(SmiType *smiType) +{ + SmiRange *smiRange; + SmiType *parentType; + unsigned int min = 65535, size; + + switch (smiType->basetype) { + case SMI_BASETYPE_BITS: + return 0; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_OBJECTIDENTIFIER: + size = 0; + break; + default: + return 0; + } + + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + if (smiRange->minValue.value.unsigned32 < min) { + min = smiRange->minValue.value.unsigned32; + } + } + if (min < 65535 && min > size) { + size = min; + } + + parentType = smiGetParentType(smiType); + if (parentType) { + unsigned int psize = smiGetMinSize(parentType); + if (psize > size) { + size = psize; + } + } + + return size; +} + + + +unsigned int smiGetMaxSize(SmiType *smiType) +{ + SmiRange *smiRange; + SmiType *parentType; + SmiNamedNumber *nn; + unsigned int max = 0, size; + + switch (smiType->basetype) { + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OCTETSTRING: + size = 65535; + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + size = 128; + break; + default: + return 0xffffffff; + } + + if (smiType->basetype == SMI_BASETYPE_BITS) { + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 > max) { + max = nn->value.value.unsigned32; + } + } + size = (max / 8) + 1; + return size; + } + + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + if (smiRange->maxValue.value.unsigned32 > max) { + max = smiRange->maxValue.value.unsigned32; + } + } + if (max > 0 && max < size) { + size = max; + } + + parentType = smiGetParentType(smiType); + if (parentType) { + unsigned int psize = smiGetMaxSize(parentType); + if (psize < size) { + size = psize; + } + } + + return size; +} + + + +int smiUnpack(SmiNode *row, SmiSubid *oid, unsigned int oidlen, + SmiValue **vals, int *valslen) +{ + SmiNode *indexNode = NULL; + SmiElement *smiElement; + SmiNode *iNode; + SmiType *iType; + int i, j, last = 0; + + if (!vals || !valslen || !row || !oid) { + return 0; + } + + switch (row->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = row; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + indexNode = NULL; + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(row); + break; + case SMI_INDEX_UNKNOWN: + indexNode = NULL; + break; + } + + *valslen = 0; + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + iType = smiGetNodeType(iNode); + if (! iType) break; + (*valslen)++; + } + } + if (smiElement) { + return 0; + } + + *vals = smiMalloc(*valslen * sizeof(SmiValue)); + + for (smiElement = smiGetFirstElement(indexNode), i = 0, j = 0; + smiElement; smiElement = smiGetNextElement(smiElement), i++) { + iNode = smiGetElementNode(smiElement); + last = (smiGetNextElement(smiElement) == NULL); + iType = smiGetNodeType(iNode); + fprintf(stderr, "** %s (%s)\n", iNode->name, iType->name); + (*vals)[i].basetype = iType->basetype; + switch (iType->basetype) { + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + (*vals)[i].value.integer32 = oid[j]; j++; + break; + case SMI_BASETYPE_UNSIGNED32: + (*vals)[i].value.unsigned32 = oid[j]; j++; + break; + case SMI_BASETYPE_OCTETSTRING: + /* need to know whether implied/fixed length or not */ + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + /* need to know whether implied/fixed length or not */ + break; + default: + return 0; + } + } + + return *valslen; +} + + + +int smiAsprintf(char **strp, const char *format, ...) +{ + int rc; + va_list ap; + + va_start(ap, format); + rc = vasprintf(strp, format, ap); + va_end(ap); + if (! strp) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return rc; +} + + + +int smiVasprintf(char **strp, const char *format, va_list ap) +{ + int rc; + + rc = vasprintf(strp, format, ap); + if (! strp) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return rc; +} + + +int smiGetMinMaxRange(SmiType *smiType, SmiValue *min, SmiValue *max) +{ + SmiBasetype basetype = SMI_BASETYPE_UNKNOWN; + SmiRange *range; + + min->basetype = max->basetype = SMI_BASETYPE_UNKNOWN; + min->len = max->len = 0; + + range = smiGetFirstRange(smiType); + if (!range) { + return 0; + } + + basetype = range->minValue.basetype; + min->basetype = max->basetype = basetype; + + switch (basetype) { + case SMI_BASETYPE_INTEGER32: + min->value.integer32 = SMI_BASETYPE_INTEGER32_MAX; + max->value.integer32 = SMI_BASETYPE_INTEGER32_MIN; + break; + case SMI_BASETYPE_INTEGER64: + min->value.integer64 = SMI_BASETYPE_INTEGER64_MAX; + max->value.integer64 = SMI_BASETYPE_INTEGER64_MIN; + break; + case SMI_BASETYPE_UNSIGNED32: + min->value.unsigned32 = SMI_BASETYPE_UNSIGNED32_MAX; + max->value.unsigned32 = SMI_BASETYPE_UNSIGNED32_MIN; + break; + case SMI_BASETYPE_UNSIGNED64: + min->value.unsigned64 = SMI_BASETYPE_UNSIGNED64_MAX; + max->value.unsigned64 = SMI_BASETYPE_UNSIGNED32_MIN; + break; + default: + fprintf(stderr, "smidump: unexpected basetype %d\n", basetype); + return -1; + } + + for (range = smiGetFirstRange(smiType); + range; + range = smiGetNextRange(range)) { + switch (basetype) { + case SMI_BASETYPE_INTEGER32: + if (range->minValue.value.integer32 < min->value.integer32) { + min->value.integer32 = range->minValue.value.integer32; + } + if (range->maxValue.value.integer32 > max->value.integer32) { + max->value.integer32 = range->maxValue.value.integer32; + } + break; + case SMI_BASETYPE_INTEGER64: + if (range->minValue.value.integer64 < min->value.integer64) { + min->value.integer64 = range->minValue.value.integer64; + } + if (range->maxValue.value.integer64 > max->value.integer64) { + max->value.integer64 = range->maxValue.value.integer64; + } + break; + case SMI_BASETYPE_UNSIGNED32: + if (range->minValue.value.unsigned32 < min->value.unsigned32) { + min->value.unsigned32 = range->minValue.value.unsigned32; + } + if (range->maxValue.value.unsigned32 > max->value.unsigned32) { + max->value.unsigned32 = range->maxValue.value.unsigned32; + } + break; + case SMI_BASETYPE_UNSIGNED64: + if (range->minValue.value.unsigned64 < min->value.unsigned64) { + min->value.unsigned64 = range->minValue.value.unsigned64; + } + if (range->maxValue.value.unsigned64 > max->value.unsigned64) { + max->value.unsigned64 = range->maxValue.value.unsigned64; + } + break; + default: + fprintf(stderr, "smidump: unexpected basetype %d\n", basetype); + return -1; + } + } + + return 0; +} diff --git a/lib/smi.h b/lib/smi.h new file mode 100644 index 0000000..0875bc4 --- /dev/null +++ b/lib/smi.h @@ -0,0 +1,668 @@ +/* + * smi.h -- + * + * Interface Definition of libsmi (version 2:27:0). + * + * Copyright (c) 1999,2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smi.h.in 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _SMI_H +#define _SMI_H + +#include +#include +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_LIMITS_H +#include "limits.h" +#endif +#include + + +#ifdef __cplusplus +extern "C" { +#endif + + +#define SMI_LIBRARY_VERSION "2:27:0" +extern const char *smi_library_version; + +#define SMI_VERSION_MAJOR 0 +#define SMI_VERSION_MINOR 4 +#define SMI_VERSION_PATCHLEVEL 8 +#define SMI_VERSION_STRING "0.4.8" +extern const char *smi_version_string; + + + +#define SMI_FLAG_NODESCR 0x0800 /* do not load descriptions/references. */ +#define SMI_FLAG_VIEWALL 0x1000 /* all modules are `known', need no views. */ +#define SMI_FLAG_ERRORS 0x2000 /* print parser errors. */ +#define SMI_FLAG_RECURSIVE 0x4000 /* recursively parse imported modules. */ +#define SMI_FLAG_STATS 0x8000 /* print statistics after parsing module. */ +#define SMI_FLAG_MASK (SMI_FLAG_NODESCR|SMI_FLAG_VIEWALL|SMI_FLAG_STATS|\ + SMI_FLAG_RECURSIVE|SMI_FLAG_ERRORS) + + + +/* misc mappings of SMI types to C types */ +typedef char *SmiIdentifier; +typedef unsigned long SmiUnsigned32; +typedef long SmiInteger32; +#ifdef _MSC_VER /* if using MSVC and not configure */ +typedef __int64 SmiInteger64; +typedef unsigned __int64 SmiUnsigned64; +#else +typedef unsigned long long SmiUnsigned64; +typedef long long SmiInteger64; +#endif +typedef unsigned int SmiSubid; +typedef float SmiFloat32; +typedef double SmiFloat64; +typedef long double SmiFloat128; + + + +/* SmiLanguage -- language of an actual MIB module */ +typedef enum SmiLanguage { + SMI_LANGUAGE_UNKNOWN = 0, /* should not occur */ + SMI_LANGUAGE_SMIV1 = 1, + SMI_LANGUAGE_SMIV2 = 2, + SMI_LANGUAGE_SMING = 3, + SMI_LANGUAGE_SPPI = 4 +} SmiLanguage; + +/* SmiBasetype -- base types of all languages */ +typedef enum SmiBasetype { + SMI_BASETYPE_UNKNOWN = 0, /* should not occur */ + SMI_BASETYPE_INTEGER32 = 1, /* also SMIv1/v2 INTEGER */ + SMI_BASETYPE_OCTETSTRING = 2, + SMI_BASETYPE_OBJECTIDENTIFIER = 3, + SMI_BASETYPE_UNSIGNED32 = 4, + SMI_BASETYPE_INTEGER64 = 5, /* SMIng and SPPI */ + SMI_BASETYPE_UNSIGNED64 = 6, /* SMIv2, SMIng and SPPI */ + SMI_BASETYPE_FLOAT32 = 7, /* only SMIng */ + SMI_BASETYPE_FLOAT64 = 8, /* only SMIng */ + SMI_BASETYPE_FLOAT128 = 9, /* only SMIng */ + SMI_BASETYPE_ENUM = 10, + SMI_BASETYPE_BITS = 11, /* SMIv2, SMIng and SPPI */ + SMI_BASETYPE_POINTER = 12 /* only SMIng */ +} SmiBasetype; + +#ifdef INT32_MIN +#define SMI_BASETYPE_INTEGER32_MIN INT32_MIN +#else +#define SMI_BASETYPE_INTEGER32_MIN INT_MIN +#endif +#ifdef INT32_MAX +#define SMI_BASETYPE_INTEGER32_MAX INT32_MAX +#else +#define SMI_BASETYPE_INTEGER32_MAX INT_MAX +#endif +#define SMI_BASETYPE_INTEGER64_MIN LIBSMI_INT64_MIN +#define SMI_BASETYPE_INTEGER64_MAX LIBSMI_INT64_MAX +#define SMI_BASETYPE_UNSIGNED32_MIN 0 +#ifdef UINT32_MAX +#define SMI_BASETYPE_UNSIGNED32_MAX UINT32_MAX +#else +#define SMI_BASETYPE_UNSIGNED32_MAX UINT_MAX +#endif +#define SMI_BASETYPE_UNSIGNED64_MIN 0 +#define SMI_BASETYPE_UNSIGNED64_MAX LIBSMI_UINT64_MAX + +/* SmiStatus -- values of status levels */ +typedef enum SmiStatus { + SMI_STATUS_UNKNOWN = 0, /* should not occur */ + SMI_STATUS_CURRENT = 1, /* only SMIv2, SMIng and SPPI */ + SMI_STATUS_DEPRECATED = 2, /* SMIv1, SMIv2, SMIng and SPPI */ + SMI_STATUS_MANDATORY = 3, /* only SMIv1 */ + SMI_STATUS_OPTIONAL = 4, /* only SMIv1 */ + SMI_STATUS_OBSOLETE = 5 /* SMIv1, SMIv2, SMIng and SPPI */ +} SmiStatus; + +/* SmiAccess -- values of access levels */ +typedef enum SmiAccess { + SMI_ACCESS_UNKNOWN = 0, /* should not occur */ + SMI_ACCESS_NOT_IMPLEMENTED = 1, /* only for agent capability variations */ + SMI_ACCESS_NOT_ACCESSIBLE = 2, /* the values 2 to 5 are allowed to be */ + SMI_ACCESS_NOTIFY = 3, /* compared by relational operators. */ + SMI_ACCESS_READ_ONLY = 4, + SMI_ACCESS_READ_WRITE = 5, + SMI_ACCESS_INSTALL = 6, /* these three entries are only valid */ + SMI_ACCESS_INSTALL_NOTIFY = 7, /* for SPPI */ + SMI_ACCESS_REPORT_ONLY = 8, + SMI_ACCESS_EVENT_ONLY = 9 /* this entry is valid only for SMIng */ +} SmiAccess; + +/* SmiNodekind -- type or statement that leads to a definition */ +typedef unsigned int SmiNodekind; +#define SMI_NODEKIND_UNKNOWN 0x0000 /* should not occur */ +#define SMI_NODEKIND_NODE 0x0001 +#define SMI_NODEKIND_SCALAR 0x0002 +#define SMI_NODEKIND_TABLE 0x0004 +#define SMI_NODEKIND_ROW 0x0008 +#define SMI_NODEKIND_COLUMN 0x0010 +#define SMI_NODEKIND_NOTIFICATION 0x0020 +#define SMI_NODEKIND_GROUP 0x0040 +#define SMI_NODEKIND_COMPLIANCE 0x0080 +#define SMI_NODEKIND_CAPABILITIES 0x0100 +#define SMI_NODEKIND_ANY 0xffff + +/* SmiDecl -- type or statement that leads to a definition */ +typedef enum SmiDecl { + SMI_DECL_UNKNOWN = 0, /* should not occur */ + /* SMIv1/v2 ASN.1 statements and macros */ + SMI_DECL_IMPLICIT_TYPE = 1, + SMI_DECL_TYPEASSIGNMENT = 2, + SMI_DECL_IMPL_SEQUENCEOF = 4, /* this will go away */ + SMI_DECL_VALUEASSIGNMENT = 5, + SMI_DECL_OBJECTTYPE = 6, /* values >= 6 are assumed to be */ + SMI_DECL_OBJECTIDENTITY = 7, /* registering an OID, see check.c */ + SMI_DECL_MODULEIDENTITY = 8, + SMI_DECL_NOTIFICATIONTYPE = 9, + SMI_DECL_TRAPTYPE = 10, + SMI_DECL_OBJECTGROUP = 11, + SMI_DECL_NOTIFICATIONGROUP = 12, + SMI_DECL_MODULECOMPLIANCE = 13, + SMI_DECL_AGENTCAPABILITIES = 14, + SMI_DECL_TEXTUALCONVENTION = 15, + SMI_DECL_MACRO = 16, + SMI_DECL_COMPL_GROUP = 17, + SMI_DECL_COMPL_OBJECT = 18, + SMI_DECL_IMPL_OBJECT = 19, /* object label in sth like "iso(1)" */ + /* SMIng statements */ + SMI_DECL_MODULE = 33, + SMI_DECL_EXTENSION = 34, + SMI_DECL_TYPEDEF = 35, + SMI_DECL_NODE = 36, + SMI_DECL_SCALAR = 37, + SMI_DECL_TABLE = 38, + SMI_DECL_ROW = 39, + SMI_DECL_COLUMN = 40, + SMI_DECL_NOTIFICATION = 41, + SMI_DECL_GROUP = 42, + SMI_DECL_COMPLIANCE = 43, + SMI_DECL_IDENTITY = 44, + SMI_DECL_CLASS = 45, + SMI_DECL_ATTRIBUTE = 46, + SMI_DECL_EVENT = 47 +} SmiDecl; + +/* SmiIndexkind -- actual kind of a table row's index method */ +typedef enum SmiIndexkind { + SMI_INDEX_UNKNOWN = 0, + SMI_INDEX_INDEX = 1, + SMI_INDEX_AUGMENT = 2, + SMI_INDEX_REORDER = 3, + SMI_INDEX_SPARSE = 4, + SMI_INDEX_EXPAND = 5 +} SmiIndexkind; + +/* SmiValue -- any single value; for use in default values and subtyping */ +typedef struct SmiValue { + SmiBasetype basetype; + unsigned int len; /* OID, OctetString, Bits */ + union { + SmiUnsigned64 unsigned64; + SmiInteger64 integer64; + SmiUnsigned32 unsigned32; + SmiInteger32 integer32; + SmiFloat32 float32; + SmiFloat64 float64; + SmiFloat128 float128; + SmiSubid *oid; + char *ptr; /* OctetString, Bits */ + } value; +} SmiValue; + +/* SmiNamedNumber -- a named number; for enumeration and bitset types */ +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +/* SmiRange -- a min-max value range; for subtyping of sizes or numbers */ +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +/* SmiModule -- the main structure of a module */ +typedef struct SmiModule { + SmiIdentifier name; + char *path; + char *organization; + char *contactinfo; + char *description; + char *reference; + SmiLanguage language; + int conformance; +} SmiModule; + +/* SmiRevision -- content of a single module's revision clause */ +typedef struct SmiRevision { + time_t date; + char *description; +} SmiRevision; + +/* SmiImport -- an imported descriptor */ +typedef struct SmiImport { + SmiIdentifier module; + SmiIdentifier name; +} SmiImport; + +/* SmiMacro -- the main structure of a SMIv1/v2 macro or SMIng extension */ +typedef struct SmiMacro { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; + char *abnf; /* only for SMIng */ +} SmiMacro; + +/* SmiIdentity -- the main structure of a SMIng Identity. */ +/* NOTE: Not to be confused with SMIv2 MODULE-IDENTITY */ +typedef struct SmiIdentity { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiIdentity; + +/* SmiType -- the main structure of a type definition (also base types) */ +/* also SMIng attributes */ +typedef struct SmiType { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; +} SmiType; + +/* SmiNode -- the main structure of any clause that defines a node */ +typedef struct SmiNode { + SmiIdentifier name; + unsigned int oidlen; + SmiSubid *oid; /* array of length oidlen */ + SmiDecl decl; + SmiAccess access; + SmiStatus status; + char *format; + SmiValue value; + char *units; + char *description; + char *reference; + SmiIndexkind indexkind; /* only valid for rows */ + int implied; /* only valid for rows */ + int create; /* only valid for rows */ + SmiNodekind nodekind; +} SmiNode; + +/* SmiElement -- an item in a list (row index column, notification object) */ +typedef struct SmiElement { +#ifndef __GNUC__ + char dummy; /* many compilers are unhappy with empty structures. */ +#endif + /* no visible attributes */ +} SmiElement; + +/* SmiOption -- an optional group in a compliance statement */ +typedef struct SmiOption { + char *description; +} SmiOption; + +/* SmiRefinement -- a refined object in a compliance statement */ +typedef struct SmiRefinement { + SmiAccess access; + char *description; +} SmiRefinement; + +/* SmiClass -- main structure for SMIng class statement */ +typedef struct SmiClass { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiClass; + +/* SmiClass -- main structure for class attribute */ +typedef struct SmiAttribute { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; + SmiAccess access; +} SmiAttribute; + + +/* SmiEvent -- the main structure of a SMIng Event(part of class definition).*/ +typedef struct SmiEvent { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiEvent; + + + +extern int smiInit(const char *tag); + +extern void smiExit(void); + +extern void smiSetErrorLevel(int level); + +extern int smiGetFlags(void); + +extern void smiSetFlags(int userflags); + +extern char *smiGetPath(void); + +extern int smiSetPath(const char *path); + +extern void smiSetSeverity(char *pattern, int severity); + +extern int smiReadConfig(const char *filename, const char *tag); + +extern char *smiLoadModule(const char *module); + +extern int smiIsLoaded(const char *module); + + +typedef void (SmiErrorHandler) (char *path, int line, int severity, char *msg, char *tag); + +extern void smiSetErrorHandler(SmiErrorHandler smiErrorHandler); + + +extern SmiModule *smiGetModule(const char *module); + +extern SmiModule *smiGetFirstModule(void); + +extern SmiModule *smiGetNextModule(SmiModule *smiModulePtr); + +extern SmiNode *smiGetModuleIdentityNode(SmiModule *smiModulePtr); + +extern SmiImport *smiGetFirstImport(SmiModule *smiModulePtr); + +extern SmiImport *smiGetNextImport(SmiImport *smiImportPtr); + +extern int smiIsImported(SmiModule *smiModulePtr, + SmiModule *importedModulePtr, char *importedName); + +extern SmiRevision *smiGetFirstRevision(SmiModule *smiModulePtr); + +extern SmiRevision *smiGetNextRevision(SmiRevision *smiRevisionPtr); + +extern int smiGetRevisionLine(SmiRevision *smiRevisionPtr); + + + +extern SmiIdentity *smiGetFirstIdentity(SmiModule *smiModulePtr); + +extern SmiIdentity *smiGetNextIdentity(SmiIdentity *smiIdentityPtr); + +extern SmiIdentity *smiGetParentIdentity(SmiIdentity *smiIdentityPtr); + +extern int smiGetIdentityLine(SmiIdentity *smiIdentityPtr); + +extern SmiModule *smiGetIdentityModule(SmiIdentity *smiIdentityPtr); + +extern SmiIdentity *smiGetIdentity(SmiModule *smiModulePtr,char *identity); + + + +extern SmiType *smiGetType(SmiModule *smiModulePtr, char *type); + +extern SmiType *smiGetFirstType(SmiModule *smiModulePtr); + +extern SmiType *smiGetNextType(SmiType *smiTypePtr); + +extern SmiType *smiGetParentType(SmiType *smiTypePtr); + +extern SmiModule *smiGetTypeModule(SmiType *smiTypePtr); + +extern int smiGetTypeLine(SmiType *smiTypePtr); + +extern SmiRange *smiGetFirstRange(SmiType *smiTypePtr); + +extern SmiRange *smiGetNextRange(SmiRange *smiRangePtr); + +extern int smiGetMinMaxRange(SmiType *smiType, SmiValue *min, SmiValue *max); + +extern SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr); + +extern SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber + *smiNamedNumberPtr); + + +extern SmiClass *smiGetFirstClass(SmiModule *smiModulePtr); + +extern SmiClass *smiGetNextClass(SmiClass *smiClassPtr); + +extern SmiClass *smiGetParentClass(SmiClass *smiClassPtr); + +extern SmiModule *smiGetClassModule(SmiClass *smiClassPtr); + +extern SmiClass *smiGetClass(SmiModule *smiModulePtr,char *class); + +extern int smiGetClassLine(SmiClass *smiClassPtr); + + + +extern SmiAttribute *smiGetAttribute(SmiClass *smiClassPtr, char *attribute); + +extern SmiAttribute *smiGetFirstAttribute(SmiClass *smiClassPtr); + +extern SmiAttribute *smiGetNextAttribute(SmiAttribute *smiAtrributePtr); + +extern SmiType *smiGetAttributeParentType(SmiAttribute *smiAtrributePtr); + +extern SmiClass *smiGetAttributeParentClass(SmiAttribute *smiAtrributePtr); + +extern SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *smiClassPtr); + +extern SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *smiTypePtr); + +extern int smiIsClassScalar(SmiClass *smiClassPtr); + +extern SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr); + +extern SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber + *smiNamedNumberPtr); +extern SmiRange *smiGetAttributeFirstRange(SmiAttribute *smiAttributePtr); + +extern SmiRange *smiGetAttributeNextRange(SmiRange *smiRangePtr); + +extern int smiGetAttributeLine(SmiAttribute *smiAttributePtr); + + +extern SmiEvent *smiGetEvent(SmiClass *smiClassPtr, char *attribute); + +extern SmiEvent *smiGetFirstEvent(SmiClass *smiClassPtr); + +extern SmiEvent *smiGetNextEvent(SmiEvent *smiEventPtr); + +extern int smiGetEventLine(SmiEvent *smiEventPtr); + + +extern SmiMacro *smiGetMacro(SmiModule *smiModulePtr, char *macro); + +extern SmiMacro *smiGetFirstMacro(SmiModule *smiModulePtr); + +extern SmiMacro *smiGetNextMacro(SmiMacro *smiMacroPtr); + +extern SmiModule *smiGetMacroModule(SmiMacro *smiMacroPtr); + +extern int smiGetMacroLine(SmiMacro *smiMacroPtr); + + +extern SmiNode *smiGetNode(SmiModule *smiModulePtr, const char *name); + +extern SmiNode *smiGetNodeByOID(unsigned int oidlen, SmiSubid oid[]); + +extern SmiNode *smiGetFirstNode(SmiModule *smiModulePtr, SmiNodekind nodekind); + +extern SmiNode *smiGetNextNode(SmiNode *smiNodePtr, SmiNodekind nodekind); + +extern SmiNode *smiGetParentNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetRelatedNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetFirstChildNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetNextChildNode(SmiNode *smiNodePtr); + +extern SmiModule *smiGetNodeModule(SmiNode *smiNodePtr); + +extern SmiType *smiGetNodeType(SmiNode *smiNodePtr); + +extern int smiGetNodeLine(SmiNode *smiNodePtr); + + + + +extern SmiElement *smiGetFirstElement(SmiNode *smiNodePtr); + +extern SmiElement *smiGetNextElement(SmiElement *smiElementPtr); + +extern SmiNode *smiGetElementNode(SmiElement *smiElementPtr); + + + +extern SmiOption *smiGetFirstOption(SmiNode *smiComplianceNodePtr); + +extern SmiOption *smiGetNextOption(SmiOption *smiOptionPtr); + +extern SmiNode *smiGetOptionNode(SmiOption *smiOptionPtr); + +extern int smiGetOptionLine(SmiOption *smiOptionPtr); + + +extern SmiRefinement *smiGetFirstRefinement(SmiNode *smiComplianceNodePtr); + +extern SmiRefinement *smiGetNextRefinement(SmiRefinement *smiRefinementPtr); + +extern SmiNode *smiGetRefinementNode(SmiRefinement *smiRefinementPtr); + +extern SmiType *smiGetRefinementType(SmiRefinement *smiRefinementPtr); + +extern SmiType *smiGetRefinementWriteType(SmiRefinement *smiRefinementPtr); + +extern int smiGetRefinementLine(SmiRefinement *smiRefinementPtr); + + +extern SmiElement *smiGetFirstUniquenessElement(SmiNode *smiNodePtr); + +#define smiGetNextUniquenessElement(p) smiGetNextElement(p) + +extern char *smiRenderOID(unsigned int oidlen, SmiSubid *oid, int flags); + +extern char *smiRenderValue(SmiValue *smiValuePtr, SmiType *smiTypePtr, + int flags); + +extern char *smiRenderNode(SmiNode *smiNodePtr, int flags); + +extern char *smiRenderType(SmiType *smiTypePtr, int flags); + +#define SMI_RENDER_NUMERIC 0x01 /* render as numeric values */ +#define SMI_RENDER_NAME 0x02 /* render as names */ +#define SMI_RENDER_QUALIFIED 0x04 /* render names with module prefix */ +#define SMI_RENDER_FORMAT 0x08 /* render by applying the type's format if + type is given and format is present */ +#define SMI_RENDER_PRINTABLE 0x10 /* render string values as a printable + string if all octets are isprint() */ +#define SMI_RENDER_UNKNOWN 0x20 /* render even unknown items as strings + ("") so that we never get NULL */ +#define SMI_RENDER_ALL 0xff /* render as `human friendly' as possible */ + +#define SMI_UNKNOWN_LABEL "" + + +/* + * The functions smiGetMaxSize() and smiGetMinSize() compute the + * max size constraint on a given BITS, OCTET STRING or OBJECT + * IDENTIFIER type. The functions recurse towards the top of the + * type derivation tree. + */ + +extern unsigned int smiGetMinSize(SmiType *smiType); +extern unsigned int smiGetMaxSize(SmiType *smiType); + +/* + * Two utility functions to pack and unpack instance identifiers. + * The smiUnpack() function allocates the array of SmiValues and + * the smiPack() function allocates the array of SmiSubids. + */ + +extern int smiUnpack(SmiNode *row, SmiSubid *oid, unsigned int oidlen, + SmiValue **vals, int *valslen); + +extern int smiPack(SmiNode *row, SmiValue *vals, int valslen, + SmiSubid **oid, unsigned int *oidlen); + +/* + * Two printf functions that allocate memory dynamically. The call has + * to free the allocated memory. + */ + +extern int smiAsprintf(char **strp, const char *format, ...); + +extern int smiVasprintf(char **strp, const char *format, va_list ap); + + +/* + * The functions smiMalloc() and friends are used within the library + * for all memory allocations and deallocations. These functions are + * simple wrappers around the standard malloc() and friends functions, + * sometimes with some additional checking. We export these functions + * because on some systems (e.g. Windows) it is necessary to allocate + * / deallocate memory with the 'right' version of malloc() and + * friends. + */ + +#ifdef HAVE_DMALLOC_H + +extern void *_smiMalloc(char *, int, size_t); +extern void *_smiRealloc(char *, int, void *ptr, size_t size); +extern char *_smiStrdup(char *, int, const char *s1); +extern char *_smiStrndup(char *, int, const char *s1, size_t n); +extern void _smiFree(char *, int, void *ptr); + +#define smiMalloc(s) _smiMalloc(__FILE__, __LINE__, s) +#define smiRealloc(p,s) _smiRealloc(__FILE__, __LINE__, p, s) +#define smiStrdup(s) _smiStrdup(__FILE__, __LINE__, s) +#define smiStrndup(s,n) _smiStrndup(__FILE__, __LINE__, s, n) +#define smiFree(p) _smiFree(__FILE__, __LINE__, p) + +#else +extern void *smiMalloc(size_t size); +extern void *smiRealloc(void *ptr, size_t size); +extern char *smiStrdup(const char *s1); +extern char *smiStrndup(const char *s1, size_t n); +extern void smiFree(void *ptr); +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* _SMI_H */ diff --git a/lib/smi.h.in b/lib/smi.h.in new file mode 100644 index 0000000..c28fca8 --- /dev/null +++ b/lib/smi.h.in @@ -0,0 +1,668 @@ +/* + * smi.h -- + * + * Interface Definition of libsmi (version @VERSION_LIBTOOL@). + * + * Copyright (c) 1999,2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smi.h.in 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _SMI_H +#define _SMI_H + +#include +#include +#ifdef HAVE_STDINT_H +#include +#endif +#ifdef HAVE_LIMITS_H +#include "limits.h" +#endif +#include + + +#ifdef __cplusplus +extern "C" { +#endif + + +#define SMI_LIBRARY_VERSION "@VERSION_LIBTOOL@" +extern const char *smi_library_version; + +#define SMI_VERSION_MAJOR @LIBSMI_MAJOR@ +#define SMI_VERSION_MINOR @LIBSMI_MINOR@ +#define SMI_VERSION_PATCHLEVEL @LIBSMI_PATCHLEVEL@ +#define SMI_VERSION_STRING "@VERSION_STRING@" +extern const char *smi_version_string; + + + +#define SMI_FLAG_NODESCR 0x0800 /* do not load descriptions/references. */ +#define SMI_FLAG_VIEWALL 0x1000 /* all modules are `known', need no views. */ +#define SMI_FLAG_ERRORS 0x2000 /* print parser errors. */ +#define SMI_FLAG_RECURSIVE 0x4000 /* recursively parse imported modules. */ +#define SMI_FLAG_STATS 0x8000 /* print statistics after parsing module. */ +#define SMI_FLAG_MASK (SMI_FLAG_NODESCR|SMI_FLAG_VIEWALL|SMI_FLAG_STATS|\ + SMI_FLAG_RECURSIVE|SMI_FLAG_ERRORS) + + + +/* misc mappings of SMI types to C types */ +typedef char *SmiIdentifier; +typedef unsigned long SmiUnsigned32; +typedef long SmiInteger32; +#ifdef _MSC_VER /* if using MSVC and not configure */ +typedef __int64 SmiInteger64; +typedef unsigned __int64 SmiUnsigned64; +#else +typedef @UINT64_TYPE@ SmiUnsigned64; +typedef @INT64_TYPE@ SmiInteger64; +#endif +typedef unsigned int SmiSubid; +typedef float SmiFloat32; +typedef double SmiFloat64; +typedef long double SmiFloat128; + + + +/* SmiLanguage -- language of an actual MIB module */ +typedef enum SmiLanguage { + SMI_LANGUAGE_UNKNOWN = 0, /* should not occur */ + SMI_LANGUAGE_SMIV1 = 1, + SMI_LANGUAGE_SMIV2 = 2, + SMI_LANGUAGE_SMING = 3, + SMI_LANGUAGE_SPPI = 4 +} SmiLanguage; + +/* SmiBasetype -- base types of all languages */ +typedef enum SmiBasetype { + SMI_BASETYPE_UNKNOWN = 0, /* should not occur */ + SMI_BASETYPE_INTEGER32 = 1, /* also SMIv1/v2 INTEGER */ + SMI_BASETYPE_OCTETSTRING = 2, + SMI_BASETYPE_OBJECTIDENTIFIER = 3, + SMI_BASETYPE_UNSIGNED32 = 4, + SMI_BASETYPE_INTEGER64 = 5, /* SMIng and SPPI */ + SMI_BASETYPE_UNSIGNED64 = 6, /* SMIv2, SMIng and SPPI */ + SMI_BASETYPE_FLOAT32 = 7, /* only SMIng */ + SMI_BASETYPE_FLOAT64 = 8, /* only SMIng */ + SMI_BASETYPE_FLOAT128 = 9, /* only SMIng */ + SMI_BASETYPE_ENUM = 10, + SMI_BASETYPE_BITS = 11, /* SMIv2, SMIng and SPPI */ + SMI_BASETYPE_POINTER = 12 /* only SMIng */ +} SmiBasetype; + +#ifdef INT32_MIN +#define SMI_BASETYPE_INTEGER32_MIN INT32_MIN +#else +#define SMI_BASETYPE_INTEGER32_MIN INT_MIN +#endif +#ifdef INT32_MAX +#define SMI_BASETYPE_INTEGER32_MAX INT32_MAX +#else +#define SMI_BASETYPE_INTEGER32_MAX INT_MAX +#endif +#define SMI_BASETYPE_INTEGER64_MIN LIBSMI_INT64_MIN +#define SMI_BASETYPE_INTEGER64_MAX LIBSMI_INT64_MAX +#define SMI_BASETYPE_UNSIGNED32_MIN 0 +#ifdef UINT32_MAX +#define SMI_BASETYPE_UNSIGNED32_MAX UINT32_MAX +#else +#define SMI_BASETYPE_UNSIGNED32_MAX UINT_MAX +#endif +#define SMI_BASETYPE_UNSIGNED64_MIN 0 +#define SMI_BASETYPE_UNSIGNED64_MAX LIBSMI_UINT64_MAX + +/* SmiStatus -- values of status levels */ +typedef enum SmiStatus { + SMI_STATUS_UNKNOWN = 0, /* should not occur */ + SMI_STATUS_CURRENT = 1, /* only SMIv2, SMIng and SPPI */ + SMI_STATUS_DEPRECATED = 2, /* SMIv1, SMIv2, SMIng and SPPI */ + SMI_STATUS_MANDATORY = 3, /* only SMIv1 */ + SMI_STATUS_OPTIONAL = 4, /* only SMIv1 */ + SMI_STATUS_OBSOLETE = 5 /* SMIv1, SMIv2, SMIng and SPPI */ +} SmiStatus; + +/* SmiAccess -- values of access levels */ +typedef enum SmiAccess { + SMI_ACCESS_UNKNOWN = 0, /* should not occur */ + SMI_ACCESS_NOT_IMPLEMENTED = 1, /* only for agent capability variations */ + SMI_ACCESS_NOT_ACCESSIBLE = 2, /* the values 2 to 5 are allowed to be */ + SMI_ACCESS_NOTIFY = 3, /* compared by relational operators. */ + SMI_ACCESS_READ_ONLY = 4, + SMI_ACCESS_READ_WRITE = 5, + SMI_ACCESS_INSTALL = 6, /* these three entries are only valid */ + SMI_ACCESS_INSTALL_NOTIFY = 7, /* for SPPI */ + SMI_ACCESS_REPORT_ONLY = 8, + SMI_ACCESS_EVENT_ONLY = 9 /* this entry is valid only for SMIng */ +} SmiAccess; + +/* SmiNodekind -- type or statement that leads to a definition */ +typedef unsigned int SmiNodekind; +#define SMI_NODEKIND_UNKNOWN 0x0000 /* should not occur */ +#define SMI_NODEKIND_NODE 0x0001 +#define SMI_NODEKIND_SCALAR 0x0002 +#define SMI_NODEKIND_TABLE 0x0004 +#define SMI_NODEKIND_ROW 0x0008 +#define SMI_NODEKIND_COLUMN 0x0010 +#define SMI_NODEKIND_NOTIFICATION 0x0020 +#define SMI_NODEKIND_GROUP 0x0040 +#define SMI_NODEKIND_COMPLIANCE 0x0080 +#define SMI_NODEKIND_CAPABILITIES 0x0100 +#define SMI_NODEKIND_ANY 0xffff + +/* SmiDecl -- type or statement that leads to a definition */ +typedef enum SmiDecl { + SMI_DECL_UNKNOWN = 0, /* should not occur */ + /* SMIv1/v2 ASN.1 statements and macros */ + SMI_DECL_IMPLICIT_TYPE = 1, + SMI_DECL_TYPEASSIGNMENT = 2, + SMI_DECL_IMPL_SEQUENCEOF = 4, /* this will go away */ + SMI_DECL_VALUEASSIGNMENT = 5, + SMI_DECL_OBJECTTYPE = 6, /* values >= 6 are assumed to be */ + SMI_DECL_OBJECTIDENTITY = 7, /* registering an OID, see check.c */ + SMI_DECL_MODULEIDENTITY = 8, + SMI_DECL_NOTIFICATIONTYPE = 9, + SMI_DECL_TRAPTYPE = 10, + SMI_DECL_OBJECTGROUP = 11, + SMI_DECL_NOTIFICATIONGROUP = 12, + SMI_DECL_MODULECOMPLIANCE = 13, + SMI_DECL_AGENTCAPABILITIES = 14, + SMI_DECL_TEXTUALCONVENTION = 15, + SMI_DECL_MACRO = 16, + SMI_DECL_COMPL_GROUP = 17, + SMI_DECL_COMPL_OBJECT = 18, + SMI_DECL_IMPL_OBJECT = 19, /* object label in sth like "iso(1)" */ + /* SMIng statements */ + SMI_DECL_MODULE = 33, + SMI_DECL_EXTENSION = 34, + SMI_DECL_TYPEDEF = 35, + SMI_DECL_NODE = 36, + SMI_DECL_SCALAR = 37, + SMI_DECL_TABLE = 38, + SMI_DECL_ROW = 39, + SMI_DECL_COLUMN = 40, + SMI_DECL_NOTIFICATION = 41, + SMI_DECL_GROUP = 42, + SMI_DECL_COMPLIANCE = 43, + SMI_DECL_IDENTITY = 44, + SMI_DECL_CLASS = 45, + SMI_DECL_ATTRIBUTE = 46, + SMI_DECL_EVENT = 47 +} SmiDecl; + +/* SmiIndexkind -- actual kind of a table row's index method */ +typedef enum SmiIndexkind { + SMI_INDEX_UNKNOWN = 0, + SMI_INDEX_INDEX = 1, + SMI_INDEX_AUGMENT = 2, + SMI_INDEX_REORDER = 3, + SMI_INDEX_SPARSE = 4, + SMI_INDEX_EXPAND = 5 +} SmiIndexkind; + +/* SmiValue -- any single value; for use in default values and subtyping */ +typedef struct SmiValue { + SmiBasetype basetype; + unsigned int len; /* OID, OctetString, Bits */ + union { + SmiUnsigned64 unsigned64; + SmiInteger64 integer64; + SmiUnsigned32 unsigned32; + SmiInteger32 integer32; + SmiFloat32 float32; + SmiFloat64 float64; + SmiFloat128 float128; + SmiSubid *oid; + char *ptr; /* OctetString, Bits */ + } value; +} SmiValue; + +/* SmiNamedNumber -- a named number; for enumeration and bitset types */ +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +/* SmiRange -- a min-max value range; for subtyping of sizes or numbers */ +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +/* SmiModule -- the main structure of a module */ +typedef struct SmiModule { + SmiIdentifier name; + char *path; + char *organization; + char *contactinfo; + char *description; + char *reference; + SmiLanguage language; + int conformance; +} SmiModule; + +/* SmiRevision -- content of a single module's revision clause */ +typedef struct SmiRevision { + time_t date; + char *description; +} SmiRevision; + +/* SmiImport -- an imported descriptor */ +typedef struct SmiImport { + SmiIdentifier module; + SmiIdentifier name; +} SmiImport; + +/* SmiMacro -- the main structure of a SMIv1/v2 macro or SMIng extension */ +typedef struct SmiMacro { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; + char *abnf; /* only for SMIng */ +} SmiMacro; + +/* SmiIdentity -- the main structure of a SMIng Identity. */ +/* NOTE: Not to be confused with SMIv2 MODULE-IDENTITY */ +typedef struct SmiIdentity { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiIdentity; + +/* SmiType -- the main structure of a type definition (also base types) */ +/* also SMIng attributes */ +typedef struct SmiType { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; +} SmiType; + +/* SmiNode -- the main structure of any clause that defines a node */ +typedef struct SmiNode { + SmiIdentifier name; + unsigned int oidlen; + SmiSubid *oid; /* array of length oidlen */ + SmiDecl decl; + SmiAccess access; + SmiStatus status; + char *format; + SmiValue value; + char *units; + char *description; + char *reference; + SmiIndexkind indexkind; /* only valid for rows */ + int implied; /* only valid for rows */ + int create; /* only valid for rows */ + SmiNodekind nodekind; +} SmiNode; + +/* SmiElement -- an item in a list (row index column, notification object) */ +typedef struct SmiElement { +#ifndef __GNUC__ + char dummy; /* many compilers are unhappy with empty structures. */ +#endif + /* no visible attributes */ +} SmiElement; + +/* SmiOption -- an optional group in a compliance statement */ +typedef struct SmiOption { + char *description; +} SmiOption; + +/* SmiRefinement -- a refined object in a compliance statement */ +typedef struct SmiRefinement { + SmiAccess access; + char *description; +} SmiRefinement; + +/* SmiClass -- main structure for SMIng class statement */ +typedef struct SmiClass { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiClass; + +/* SmiClass -- main structure for class attribute */ +typedef struct SmiAttribute { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; + SmiAccess access; +} SmiAttribute; + + +/* SmiEvent -- the main structure of a SMIng Event(part of class definition).*/ +typedef struct SmiEvent { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiEvent; + + + +extern int smiInit(const char *tag); + +extern void smiExit(void); + +extern void smiSetErrorLevel(int level); + +extern int smiGetFlags(void); + +extern void smiSetFlags(int userflags); + +extern char *smiGetPath(void); + +extern int smiSetPath(const char *path); + +extern void smiSetSeverity(char *pattern, int severity); + +extern int smiReadConfig(const char *filename, const char *tag); + +extern char *smiLoadModule(const char *module); + +extern int smiIsLoaded(const char *module); + + +typedef void (SmiErrorHandler) (char *path, int line, int severity, char *msg, char *tag); + +extern void smiSetErrorHandler(SmiErrorHandler smiErrorHandler); + + +extern SmiModule *smiGetModule(const char *module); + +extern SmiModule *smiGetFirstModule(void); + +extern SmiModule *smiGetNextModule(SmiModule *smiModulePtr); + +extern SmiNode *smiGetModuleIdentityNode(SmiModule *smiModulePtr); + +extern SmiImport *smiGetFirstImport(SmiModule *smiModulePtr); + +extern SmiImport *smiGetNextImport(SmiImport *smiImportPtr); + +extern int smiIsImported(SmiModule *smiModulePtr, + SmiModule *importedModulePtr, char *importedName); + +extern SmiRevision *smiGetFirstRevision(SmiModule *smiModulePtr); + +extern SmiRevision *smiGetNextRevision(SmiRevision *smiRevisionPtr); + +extern int smiGetRevisionLine(SmiRevision *smiRevisionPtr); + + + +extern SmiIdentity *smiGetFirstIdentity(SmiModule *smiModulePtr); + +extern SmiIdentity *smiGetNextIdentity(SmiIdentity *smiIdentityPtr); + +extern SmiIdentity *smiGetParentIdentity(SmiIdentity *smiIdentityPtr); + +extern int smiGetIdentityLine(SmiIdentity *smiIdentityPtr); + +extern SmiModule *smiGetIdentityModule(SmiIdentity *smiIdentityPtr); + +extern SmiIdentity *smiGetIdentity(SmiModule *smiModulePtr,char *identity); + + + +extern SmiType *smiGetType(SmiModule *smiModulePtr, char *type); + +extern SmiType *smiGetFirstType(SmiModule *smiModulePtr); + +extern SmiType *smiGetNextType(SmiType *smiTypePtr); + +extern SmiType *smiGetParentType(SmiType *smiTypePtr); + +extern SmiModule *smiGetTypeModule(SmiType *smiTypePtr); + +extern int smiGetTypeLine(SmiType *smiTypePtr); + +extern SmiRange *smiGetFirstRange(SmiType *smiTypePtr); + +extern SmiRange *smiGetNextRange(SmiRange *smiRangePtr); + +extern int smiGetMinMaxRange(SmiType *smiType, SmiValue *min, SmiValue *max); + +extern SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr); + +extern SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber + *smiNamedNumberPtr); + + +extern SmiClass *smiGetFirstClass(SmiModule *smiModulePtr); + +extern SmiClass *smiGetNextClass(SmiClass *smiClassPtr); + +extern SmiClass *smiGetParentClass(SmiClass *smiClassPtr); + +extern SmiModule *smiGetClassModule(SmiClass *smiClassPtr); + +extern SmiClass *smiGetClass(SmiModule *smiModulePtr,char *class); + +extern int smiGetClassLine(SmiClass *smiClassPtr); + + + +extern SmiAttribute *smiGetAttribute(SmiClass *smiClassPtr, char *attribute); + +extern SmiAttribute *smiGetFirstAttribute(SmiClass *smiClassPtr); + +extern SmiAttribute *smiGetNextAttribute(SmiAttribute *smiAtrributePtr); + +extern SmiType *smiGetAttributeParentType(SmiAttribute *smiAtrributePtr); + +extern SmiClass *smiGetAttributeParentClass(SmiAttribute *smiAtrributePtr); + +extern SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *smiClassPtr); + +extern SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *smiTypePtr); + +extern int smiIsClassScalar(SmiClass *smiClassPtr); + +extern SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr); + +extern SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber + *smiNamedNumberPtr); +extern SmiRange *smiGetAttributeFirstRange(SmiAttribute *smiAttributePtr); + +extern SmiRange *smiGetAttributeNextRange(SmiRange *smiRangePtr); + +extern int smiGetAttributeLine(SmiAttribute *smiAttributePtr); + + +extern SmiEvent *smiGetEvent(SmiClass *smiClassPtr, char *attribute); + +extern SmiEvent *smiGetFirstEvent(SmiClass *smiClassPtr); + +extern SmiEvent *smiGetNextEvent(SmiEvent *smiEventPtr); + +extern int smiGetEventLine(SmiEvent *smiEventPtr); + + +extern SmiMacro *smiGetMacro(SmiModule *smiModulePtr, char *macro); + +extern SmiMacro *smiGetFirstMacro(SmiModule *smiModulePtr); + +extern SmiMacro *smiGetNextMacro(SmiMacro *smiMacroPtr); + +extern SmiModule *smiGetMacroModule(SmiMacro *smiMacroPtr); + +extern int smiGetMacroLine(SmiMacro *smiMacroPtr); + + +extern SmiNode *smiGetNode(SmiModule *smiModulePtr, const char *name); + +extern SmiNode *smiGetNodeByOID(unsigned int oidlen, SmiSubid oid[]); + +extern SmiNode *smiGetFirstNode(SmiModule *smiModulePtr, SmiNodekind nodekind); + +extern SmiNode *smiGetNextNode(SmiNode *smiNodePtr, SmiNodekind nodekind); + +extern SmiNode *smiGetParentNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetRelatedNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetFirstChildNode(SmiNode *smiNodePtr); + +extern SmiNode *smiGetNextChildNode(SmiNode *smiNodePtr); + +extern SmiModule *smiGetNodeModule(SmiNode *smiNodePtr); + +extern SmiType *smiGetNodeType(SmiNode *smiNodePtr); + +extern int smiGetNodeLine(SmiNode *smiNodePtr); + + + + +extern SmiElement *smiGetFirstElement(SmiNode *smiNodePtr); + +extern SmiElement *smiGetNextElement(SmiElement *smiElementPtr); + +extern SmiNode *smiGetElementNode(SmiElement *smiElementPtr); + + + +extern SmiOption *smiGetFirstOption(SmiNode *smiComplianceNodePtr); + +extern SmiOption *smiGetNextOption(SmiOption *smiOptionPtr); + +extern SmiNode *smiGetOptionNode(SmiOption *smiOptionPtr); + +extern int smiGetOptionLine(SmiOption *smiOptionPtr); + + +extern SmiRefinement *smiGetFirstRefinement(SmiNode *smiComplianceNodePtr); + +extern SmiRefinement *smiGetNextRefinement(SmiRefinement *smiRefinementPtr); + +extern SmiNode *smiGetRefinementNode(SmiRefinement *smiRefinementPtr); + +extern SmiType *smiGetRefinementType(SmiRefinement *smiRefinementPtr); + +extern SmiType *smiGetRefinementWriteType(SmiRefinement *smiRefinementPtr); + +extern int smiGetRefinementLine(SmiRefinement *smiRefinementPtr); + + +extern SmiElement *smiGetFirstUniquenessElement(SmiNode *smiNodePtr); + +#define smiGetNextUniquenessElement(p) smiGetNextElement(p) + +extern char *smiRenderOID(unsigned int oidlen, SmiSubid *oid, int flags); + +extern char *smiRenderValue(SmiValue *smiValuePtr, SmiType *smiTypePtr, + int flags); + +extern char *smiRenderNode(SmiNode *smiNodePtr, int flags); + +extern char *smiRenderType(SmiType *smiTypePtr, int flags); + +#define SMI_RENDER_NUMERIC 0x01 /* render as numeric values */ +#define SMI_RENDER_NAME 0x02 /* render as names */ +#define SMI_RENDER_QUALIFIED 0x04 /* render names with module prefix */ +#define SMI_RENDER_FORMAT 0x08 /* render by applying the type's format if + type is given and format is present */ +#define SMI_RENDER_PRINTABLE 0x10 /* render string values as a printable + string if all octets are isprint() */ +#define SMI_RENDER_UNKNOWN 0x20 /* render even unknown items as strings + ("") so that we never get NULL */ +#define SMI_RENDER_ALL 0xff /* render as `human friendly' as possible */ + +#define SMI_UNKNOWN_LABEL "" + + +/* + * The functions smiGetMaxSize() and smiGetMinSize() compute the + * max size constraint on a given BITS, OCTET STRING or OBJECT + * IDENTIFIER type. The functions recurse towards the top of the + * type derivation tree. + */ + +extern unsigned int smiGetMinSize(SmiType *smiType); +extern unsigned int smiGetMaxSize(SmiType *smiType); + +/* + * Two utility functions to pack and unpack instance identifiers. + * The smiUnpack() function allocates the array of SmiValues and + * the smiPack() function allocates the array of SmiSubids. + */ + +extern int smiUnpack(SmiNode *row, SmiSubid *oid, unsigned int oidlen, + SmiValue **vals, int *valslen); + +extern int smiPack(SmiNode *row, SmiValue *vals, int valslen, + SmiSubid **oid, unsigned int *oidlen); + +/* + * Two printf functions that allocate memory dynamically. The call has + * to free the allocated memory. + */ + +extern int smiAsprintf(char **strp, const char *format, ...); + +extern int smiVasprintf(char **strp, const char *format, va_list ap); + + +/* + * The functions smiMalloc() and friends are used within the library + * for all memory allocations and deallocations. These functions are + * simple wrappers around the standard malloc() and friends functions, + * sometimes with some additional checking. We export these functions + * because on some systems (e.g. Windows) it is necessary to allocate + * / deallocate memory with the 'right' version of malloc() and + * friends. + */ + +#ifdef HAVE_DMALLOC_H + +extern void *_smiMalloc(char *, int, size_t); +extern void *_smiRealloc(char *, int, void *ptr, size_t size); +extern char *_smiStrdup(char *, int, const char *s1); +extern char *_smiStrndup(char *, int, const char *s1, size_t n); +extern void _smiFree(char *, int, void *ptr); + +#define smiMalloc(s) _smiMalloc(__FILE__, __LINE__, s) +#define smiRealloc(p,s) _smiRealloc(__FILE__, __LINE__, p, s) +#define smiStrdup(s) _smiStrdup(__FILE__, __LINE__, s) +#define smiStrndup(s,n) _smiStrndup(__FILE__, __LINE__, s, n) +#define smiFree(p) _smiFree(__FILE__, __LINE__, p) + +#else +extern void *smiMalloc(size_t size); +extern void *smiRealloc(void *ptr, size_t size); +extern char *smiStrdup(const char *s1); +extern char *smiStrndup(const char *s1, size_t n); +extern void smiFree(void *ptr); +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* _SMI_H */ diff --git a/lib/smi_attribute.3 b/lib/smi_attribute.3 new file mode 100644 index 0000000..bd33272 --- /dev/null +++ b/lib/smi_attribute.3 @@ -0,0 +1,143 @@ +.TH "smi_attribute" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetAttribute, +smiGetFirstAttribute, +smiGetNextAttribute, +smiGetAttributeParentClass, +smiGetAttributeParentType, +smiGetFirstUniqueAttribute, +smiGetNextUniqueAttribute, +smiGetEvent, +smiGetFirstEvent, +smiGetNextEvent, +smiGetAttributeFirstRange, +smiGetAttributeNextRange, +smiGetAttributeFirstNamedNumber, +smiGetAttributeNextNamedNumber +.\" END OF MAN PAGE COPIES +\- SMI Attribute +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiAttribute *smiGetAttribute(SmiClass *" smiClassPtr ", char *" name); +.RE +.sp +.BI "SmiAttribute *smiGetFirstAttribute(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiAttribute *smiGetNextAttribute(SmiAttribute *" smiAttributePtr ); +.RE +.sp +.BI "SmiType *smiGetAttributeParentType(SmiType *" smiAttributePtr); +.RE +.sp +.BI "SmiClass *smiGetAttributeParentClass(SmiType *" smiAttributePtr); +.RE +.sp +.BI "SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *" smiClassPtr); +.RE +.sp +.BI "SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *" smiAttributePtr); +.RE +.sp +.BI "SmiRange *smiGetAttributeFirstRange(SmiAttribute *" smiAttributePtr); +.RE +.sp +.BI "SmiRange *smiGetAttributeNextRange(SmiRange *" smiRangePtr); +.RE +.sp +.BI "SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *" smiAttributePtr) ; +.RE +.sp +.BI "SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber *" smiNamedNumberPtr); +.RE + + +typedef struct SmiAttribute { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiAttribute; + +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng Attribute definition (SMIng). +.PP +\fBsmiGetAttribute(SmiClass *smiClassPtr, char *name)\fP returns a +pointer to \fBstruct SmiAttribute\fP for the Attribute with the given +\fIname\fP in the given class(\fIsmiClassPtr\fP), or NULL if the +attribute with the given name does not exist. +.PP +\fBsmiGetFirstAttribute(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextAttribute(SmiAttribute *smiAttributePtr)\fP are used to +iterate through the attributes of the class given by +\fIsmiClassPtr\fP. They return a pointer to \fBstruct SmiAttribute\fP +that represents an attribute or NULL if there are no attributes left +in the class, or error has occurred. +.PP +\fBsmiGetAttributeParentClass(SmiAttribute *smiAttributePtr)\fP +returns a pointer to a \fBstruct SmiClass\fP, pointing to the parent +class of the given \fIsmiAttributePtr\fP, or NULL if the attribute +does not reference class. Note that attributes always have either +parent type or parent class. +.PP +\fBsmiGetAttributeParentType(SmiType *smiAttributePtr)\fP returns a +pointer to a \fBstruct SmiType\fP, pointing to the parent type of the +given \fIsmiAttributePtr\fP, or NULL if the attribute does not +reference type. Note that attributes always have either parent type +or parent class. +.PP +\fBsmiGetFirstUniqueAttribute(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextUniqueAttribute(SmiType *smiAttributePtr)\fP are used to +iterate through the unique attributes of the class given by +\fIsmiClassPtr\fP. They return a pointer to \fBstruct SmiAttribute\fP +that represents a unique attribute or NULL if there are no unique +attributes left in the class, or error has occurred. This function +\fBMUST NOT\fP be used for scalar classes, so it should only be called +after \fBisClassScalar()\fP has returned 0. +.PP +\fBsmiGetAttributeFirstRange(SmiAttribute *smiAttributePtr)\fP, and +\fBsmiGetAttributeNextRange(SmiRange *smiRangePtr)\fP are used to +iterate through ranges that restrict number or octet string types. +Both functions return a pointer to the \fBstruct SmiRange\fP +representing the range, or NULL if there are no more ranges, or error +has occurred. +.PP +\fBsmiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr)\fP +and \fBsmiGetAttributeNextNamedNumber(SmiNamedNumber +*smiNamedNumberPtr)\fP are used to iterate through named numbers of +bits or enumerations for attributes, which reference types, and to +retrieve the reference restriction of a pointer. Both functions +return a pointer to the struct SmiNamedNumber representing the named +number, or NULL if there are no named numbers left, or error has +occurred. \fBsmiGetFirstNamedNumber()\fP can be used to retrieve the +name of the identity that is restricting Pointer type, as it is stored +as the name of the first named number. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_attribute.3.in b/lib/smi_attribute.3.in new file mode 100644 index 0000000..9bd7d0a --- /dev/null +++ b/lib/smi_attribute.3.in @@ -0,0 +1,143 @@ +.TH "smi_attribute" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetAttribute, +smiGetFirstAttribute, +smiGetNextAttribute, +smiGetAttributeParentClass, +smiGetAttributeParentType, +smiGetFirstUniqueAttribute, +smiGetNextUniqueAttribute, +smiGetEvent, +smiGetFirstEvent, +smiGetNextEvent, +smiGetAttributeFirstRange, +smiGetAttributeNextRange, +smiGetAttributeFirstNamedNumber, +smiGetAttributeNextNamedNumber +.\" END OF MAN PAGE COPIES +\- SMI Attribute +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiAttribute *smiGetAttribute(SmiClass *" smiClassPtr ", char *" name); +.RE +.sp +.BI "SmiAttribute *smiGetFirstAttribute(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiAttribute *smiGetNextAttribute(SmiAttribute *" smiAttributePtr ); +.RE +.sp +.BI "SmiType *smiGetAttributeParentType(SmiType *" smiAttributePtr); +.RE +.sp +.BI "SmiClass *smiGetAttributeParentClass(SmiType *" smiAttributePtr); +.RE +.sp +.BI "SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *" smiClassPtr); +.RE +.sp +.BI "SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *" smiAttributePtr); +.RE +.sp +.BI "SmiRange *smiGetAttributeFirstRange(SmiAttribute *" smiAttributePtr); +.RE +.sp +.BI "SmiRange *smiGetAttributeNextRange(SmiRange *" smiRangePtr); +.RE +.sp +.BI "SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *" smiAttributePtr) ; +.RE +.sp +.BI "SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber *" smiNamedNumberPtr); +.RE + + +typedef struct SmiAttribute { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiAttribute; + +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng Attribute definition (SMIng). +.PP +\fBsmiGetAttribute(SmiClass *smiClassPtr, char *name)\fP returns a +pointer to \fBstruct SmiAttribute\fP for the Attribute with the given +\fIname\fP in the given class(\fIsmiClassPtr\fP), or NULL if the +attribute with the given name does not exist. +.PP +\fBsmiGetFirstAttribute(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextAttribute(SmiAttribute *smiAttributePtr)\fP are used to +iterate through the attributes of the class given by +\fIsmiClassPtr\fP. They return a pointer to \fBstruct SmiAttribute\fP +that represents an attribute or NULL if there are no attributes left +in the class, or error has occurred. +.PP +\fBsmiGetAttributeParentClass(SmiAttribute *smiAttributePtr)\fP +returns a pointer to a \fBstruct SmiClass\fP, pointing to the parent +class of the given \fIsmiAttributePtr\fP, or NULL if the attribute +does not reference class. Note that attributes always have either +parent type or parent class. +.PP +\fBsmiGetAttributeParentType(SmiType *smiAttributePtr)\fP returns a +pointer to a \fBstruct SmiType\fP, pointing to the parent type of the +given \fIsmiAttributePtr\fP, or NULL if the attribute does not +reference type. Note that attributes always have either parent type +or parent class. +.PP +\fBsmiGetFirstUniqueAttribute(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextUniqueAttribute(SmiType *smiAttributePtr)\fP are used to +iterate through the unique attributes of the class given by +\fIsmiClassPtr\fP. They return a pointer to \fBstruct SmiAttribute\fP +that represents a unique attribute or NULL if there are no unique +attributes left in the class, or error has occurred. This function +\fBMUST NOT\fP be used for scalar classes, so it should only be called +after \fBisClassScalar()\fP has returned 0. +.PP +\fBsmiGetAttributeFirstRange(SmiAttribute *smiAttributePtr)\fP, and +\fBsmiGetAttributeNextRange(SmiRange *smiRangePtr)\fP are used to +iterate through ranges that restrict number or octet string types. +Both functions return a pointer to the \fBstruct SmiRange\fP +representing the range, or NULL if there are no more ranges, or error +has occurred. +.PP +\fBsmiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr)\fP +and \fBsmiGetAttributeNextNamedNumber(SmiNamedNumber +*smiNamedNumberPtr)\fP are used to iterate through named numbers of +bits or enumerations for attributes, which reference types, and to +retrieve the reference restriction of a pointer. Both functions +return a pointer to the struct SmiNamedNumber representing the named +number, or NULL if there are no named numbers left, or error has +occurred. \fBsmiGetFirstNamedNumber()\fP can be used to retrieve the +name of the identity that is restricting Pointer type, as it is stored +as the name of the first named number. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_class.3 b/lib/smi_class.3 new file mode 100644 index 0000000..bdeeeae --- /dev/null +++ b/lib/smi_class.3 @@ -0,0 +1,86 @@ +.\" +.TH "smi_class" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetClass +smiGetFirstClass, +smiGetNextClass, +smiGetClassModule, +smiGetParentClass, +smiIsClassScalar +.\" END OF MAN PAGE COPIES +\- SMI class +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiClass *smiGetClass(SmiModule *" smiModulePtr ", char *" name ); +.RE +.sp +.BI "SmiClass *smiGetFirstClass(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiClass *smiGetNextClass(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiClass *smiGetParentClass(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiModule *smiGetClassModule(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "int smiIsClassScalar(SmiClass *" smiClassPtr ); +.RE + +typedef struct SmiClass { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiClass; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng class definition (SMIng). +.PP +\fBsmiGetClass(SmiModule *smiModulePtr,char *name)\fP returns a +pointer to \fBstruct SmiClass\fP that represents the class with the +given \fIname\fP in the given module(\fIsmiModulePtr\fP ), or NULL if +the class with the given name does not exist. +.PP +\fBsmiGetFirstClass(SmiModule *smiModulePtr)\fP and +\fBsmiGetNextClass(SmiClass *smiClassPtr)\fP are used to iterate +through the classes of the module given by \fIsmiModulePtr\fP. They +return a pointer to \fBstruct SmiClass\fP that represents a class or +NULL if there are no classes left in the module, or error has +occurred. +.PP +\fBsmiGetClassModule(SmiClass *smiClassPtr)\fP returns a pointer to +\fBstruct SmiModule\fP, of the module containing the given class. +.PP +\fBsmiGetParentClass(SmiClass *smiClassPtr)\fP returns a pointer to +\fBstruct SmiClass\fP pointing to the parent of the given +\fIsmiClassPtr\fP, or NULL if the class is not derived. +.PP +\fBsmiIsClassScalar(SmiClass *smiClassPtr)\fP returns \fBint\fP +\fI1\fP if the class is scalar(its unique statement contains an empty +list) or \fI0\fP otherwise. This method can be used in conjunction +with \fBsmiGetFirstUniqueAttribute()\fP to determine whether the class +is meant to be instantiated separately (has unique statement with +nonempty list), or if it is meant to be used as part of another class +(has no unique statement). +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_class.3.in b/lib/smi_class.3.in new file mode 100644 index 0000000..6924ae9 --- /dev/null +++ b/lib/smi_class.3.in @@ -0,0 +1,86 @@ +.\" +.TH "smi_class" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetClass +smiGetFirstClass, +smiGetNextClass, +smiGetClassModule, +smiGetParentClass, +smiIsClassScalar +.\" END OF MAN PAGE COPIES +\- SMI class +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiClass *smiGetClass(SmiModule *" smiModulePtr ", char *" name ); +.RE +.sp +.BI "SmiClass *smiGetFirstClass(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiClass *smiGetNextClass(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiClass *smiGetParentClass(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "SmiModule *smiGetClassModule(SmiClass *" smiClassPtr ); +.RE +.sp +.BI "int smiIsClassScalar(SmiClass *" smiClassPtr ); +.RE + +typedef struct SmiClass { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiClass; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng class definition (SMIng). +.PP +\fBsmiGetClass(SmiModule *smiModulePtr,char *name)\fP returns a +pointer to \fBstruct SmiClass\fP that represents the class with the +given \fIname\fP in the given module(\fIsmiModulePtr\fP ), or NULL if +the class with the given name does not exist. +.PP +\fBsmiGetFirstClass(SmiModule *smiModulePtr)\fP and +\fBsmiGetNextClass(SmiClass *smiClassPtr)\fP are used to iterate +through the classes of the module given by \fIsmiModulePtr\fP. They +return a pointer to \fBstruct SmiClass\fP that represents a class or +NULL if there are no classes left in the module, or error has +occurred. +.PP +\fBsmiGetClassModule(SmiClass *smiClassPtr)\fP returns a pointer to +\fBstruct SmiModule\fP, of the module containing the given class. +.PP +\fBsmiGetParentClass(SmiClass *smiClassPtr)\fP returns a pointer to +\fBstruct SmiClass\fP pointing to the parent of the given +\fIsmiClassPtr\fP, or NULL if the class is not derived. +.PP +\fBsmiIsClassScalar(SmiClass *smiClassPtr)\fP returns \fBint\fP +\fI1\fP if the class is scalar(its unique statement contains an empty +list) or \fI0\fP otherwise. This method can be used in conjunction +with \fBsmiGetFirstUniqueAttribute()\fP to determine whether the class +is meant to be instantiated separately (has unique statement with +nonempty list), or if it is meant to be used as part of another class +(has no unique statement). +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_config.3 b/lib/smi_config.3 new file mode 100644 index 0000000..88217b1 --- /dev/null +++ b/lib/smi_config.3 @@ -0,0 +1,240 @@ +.\" +.\" $Id: smi_config.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_config 3 "August 22, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiInit, +smiExit, +smiSetErrorLevel, +smiGetFlags, +smiSetFlags, +smiLoadModule, +smiGetPath, +smiSetPath, +smiReadConfig +.\" END OF MAN PAGE COPIES +\- SMI library +configuration routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI +.RE +.sp +.BI "int smiInit(const char *" tag ); +.RE +.sp +.B "int smiExit();" +.RE +.sp +.BI "void smiSetErrorLevel(int " level ); +.RE +.sp +.BI "int smiGetFlags();" +.RE +.sp +.BI "void smiSetFlags(int " userflags ); +.RE +.sp +.BI "char *smiLoadModule(char *" module ); +.RE +.sp +.BI "int smiIsLoaded(char *" module ); +.RE +.sp +.BI "char *smiGetPath();" +.RE +.sp +.BI "int smiSetPath(char *" path ); +.RE +.sp +.BI "int smiSetSeverity(char *" pattern ", int " severity ); +.RE +.sp +.BI "int smiReadConfig(char *" filename ", const char *" tag ); +.RE +.sp +.BI "void smiSetErrorHandler(SmiErrorHandler *" smiErrorHandler ); +.RE + +typedef void (SmiErrorHandler) (char *path, int line, + int severity, char *msg, char *tag); + +.fi +.SH DESCRIPTION +These functions provide some initialization and adjustment operations +for the SMI library. +.PP +The \fBsmiInit()\fP function should be the first SMI function called +in an application. It initializes its internal structures. If \fItag\fP is +not NULL, the global configuration file and (on UNIX systems) +a user configuration file are read implicitly, if existent. All +global statements and those statements with a tag (a ``tag: '' prefix) that +matches the \fBtag\fP argument are executed. +(see also CONFIGURATION FILES below). +\fBsmiInit()\fP returns zero on success, or otherwise a negative value. +.PP +The \fBsmiInit()\fP function can also be used to support multiple sets +of MIB data. In this case, the \fBtag\fP argument may be prepended by +a colon and a name to differentiate the data sets. Any library +function call subsequent to an \fBsmiInit("tag:dataset")\fP call is +using the specified data set. +.PP +The \fBsmiExit()\fP function should be called when the application +no longer needs any SMI information to release any allocated SMI +resources. +.PP +The \fBsmiSetErrorLevel()\fP function sets the pedantic level (0-9) of +the SMI parsers of the SMI library, currently SMIv1/v2 and SMIng. +The higher the level, the louder it complains. Values up to 3 +should be regarded as errors, higher level could be interpreted as +warnings. But note that this classification is some kind of personal +taste. The default level is 0, since usually only MIB checkers want +to tune a higher level. +.PP +The \fBsmiGetFlags()\fP and \fBsmiSetFlags()\fP functions allow to +fetch, modify, and set some \fIuserflags\fP that control the SMI +library's behaviour. If \fBSMI_FLAG_ERRORS\fP is not set, no error messages +are printed at all to keep the SMI library totally quiet, which might +be mandatory for some applications. If \fBSMI_FLAG_STATS\fP is set, the +library prints some module statistics. If \fBSMI_FLAG_RECURSIVE\fP is set, +the library also complains about errors in modules that are read due +to import statements. If \fBSMI_FLAG_NODESCR\fP is set, no description +and references strings are stored in memory. This may save a huge amount +of memory in case of applications that do not need this information. +.PP +The \fBsmiSetSeverity()\fP function allows to set the severity of +all error that have name prefixed by \fBpattern\fP to the value \fBseverity\fP. +.PP +The \fBsmiLoadModule()\fP function specifies an additional MIB \fImodule\fP +that the application claims to know or an additional file path to read. +Only after a +module is made known through this function, iterating retrieval +functions and retrieval functions without fully qualified identifiers +will return results from this module. \fBsmiLoadModule()\fP returns the +name of the loaded module, of NULL if it could not be loaded. +.PP +The \fBsmiIsLoaded()\fP function returns a positive value if the +module named \fImodule\fP is already loaded, or zero otherwise. +.PP +The \fBsmiGetPath()\fP and \fBsmiSetPath()\fP functions allow to +fetch, modify, and set the path that is used to search MIB modules. +\fBsmiGetPath()\fP returns a copy of the current search path in the +form "DIR1:DIR2:...", or NULL if no path is set. +The application should free this string if it is +no longer needed. \fBsmiSetPath()\fP sets the search path to +\fIpath\fP. +.PP +The \fBsmiReadConfig()\fP function reads the configuration file \fIfilename\fP. +All global statements in the configuration file and those statements with +a tag (a ``tag: '' prefix) that matches the \fBtag\fP argument, if present, +are executed. +.PP +The \fBsmiSetErrorHandler()\fP function allows to set a callback function +that is called by the MIB parsers deviating from the builtin default +error handler, that prints error messages to stderr. The error handler +has to comply with the \fBSmiErrorHandler\fP function type. The \fBpath\fP, +\fBline\fP, \fBseverity\fP, \fBmsg\fP, and \fPtag\fP arguements carry the +module's pathname, the line number within the module, the error severity +level, a textual error message, and a short error name of the error being +reported. +.SH "MODULE LOCATIONS" +The SMI library may retrieve MIB modules from different kinds of +resources. Currently, SMIv1/v2 and SMIng module files are supported. +If in an \fBsmiLoadModule()\fP function call a module is specified by +a path name (identified by containing at least one dot or slash character), +this +is assumed to be the exact file to read. Otherwise, if a module is identified +by its plain module name, the correspondant file (either SMIv1/2 or +SMIng) is searched along a path. This path is initialized with /usr/local/share/mibs/ietf:/usr/local/share/mibs/iana:/usr/local/share/mibs/irtf:/usr/local/share/mibs/site:/usr/local/share/mibs/tubs:/usr/local/share/pibs/ietf:/usr/local/share/pibs/site:/usr/local/share/pibs/tubs. +Afterwards the optional global and user configuration files are parsed for +`path' commands, and finally the optional \fBSMIPATH\fP environment variable +is evaluated. The `path' command argument and the environment variable +either start with a path separator character (`:' on UNIX-like systems, `;' +on MS-Windows systems) to append +to the path, or end with a path separator character to prepend to the path, +or otherwise completely replace the path. +The path can also be controlled by the \fBsmiGetPath()\fP +and \fBsmiSetPath()\fP functions (see above). +.PP +When files are searched by a given module name, they might have no +extension or one of the extensions `.my', `.smiv2', `.sming', `.mib', +or `.txt'. However, the +MIB module language is identified by the file's content, not by its +file name extension. +.SH "CONFIGURATION FILES" +SMI library configuration files read at initialization and on demand +by \fBsmiReadConfig()\fP have a simple line oriented syntax. Empty lines +and those starting with `#' are ignored. Other lines start with an optional +tag (prepended by a colon), +followed by a command and options dependent on the command. Tags +are used to limit the scope of a command to those applications that are +using this tag. +.PP +The \fBload\fP command is used to preload a given MIB module. If multiple +modules shall be preloaded, multiple \fBload\fP commands must be used. +.PP +The \fBpath\fP command allows to prepend or append components to the +MIB module search path or to modify it completely (see +also MODULE LOCATIONS above). +.PP +The \fBcache\fP command allows to add an additional directory for +MIB module lookup as a last resort. The first argument specifies the +directory and the rest of the line starting from the second argument +specifies the caching method, which is invoked with the MIB module +name appended if the module is found neither in one of the regular directories +nor in the cache directory beforehand. +.PP +The \fBlevel\fP command sets the error level. +.PP +The \fBhide\fP command allows to tune the list of errors that are reported. +It raises all errors with names prefixed by the given pattern to severity +level 9. [Currently, there is no way to list the error names. RTFS: error.c.] +.PP +Example configuration: +.nf + + # + # $HOME/.smirc + # + + # add a private directory + path :/usr/home/strauss/lib/mibs + + # don't show any errors by default + level 0 + + # preload some basic modules + load SNMPv2-SMI + load SNMPv2-TC + load SNMPv2-CONF + + # want to make smilint shout + smilint: level 8 + + # but please don't claim about + # any names longer than 32 chars + smilint: hide namelength-32 + + tcpdump: load DISMAN-SCRIPT-MIB + + smiquery: load IF-MIB + smiquery: load DISMAN-SCRIPT-MIB +.fi +.SH "FILES" +.nf +${prefix}/etc/smi.conf global configuration file +$HOME/.smirc user configuration file +${prefix}/include/smi.h SMI library header file +/usr/local/share/mibs/ SMI module repository directory +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_config.3.in b/lib/smi_config.3.in new file mode 100644 index 0000000..940b98a --- /dev/null +++ b/lib/smi_config.3.in @@ -0,0 +1,240 @@ +.\" +.\" $Id: smi_config.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_config 3 "August 22, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiInit, +smiExit, +smiSetErrorLevel, +smiGetFlags, +smiSetFlags, +smiLoadModule, +smiGetPath, +smiSetPath, +smiReadConfig +.\" END OF MAN PAGE COPIES +\- SMI library +configuration routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI +.RE +.sp +.BI "int smiInit(const char *" tag ); +.RE +.sp +.B "int smiExit();" +.RE +.sp +.BI "void smiSetErrorLevel(int " level ); +.RE +.sp +.BI "int smiGetFlags();" +.RE +.sp +.BI "void smiSetFlags(int " userflags ); +.RE +.sp +.BI "char *smiLoadModule(char *" module ); +.RE +.sp +.BI "int smiIsLoaded(char *" module ); +.RE +.sp +.BI "char *smiGetPath();" +.RE +.sp +.BI "int smiSetPath(char *" path ); +.RE +.sp +.BI "int smiSetSeverity(char *" pattern ", int " severity ); +.RE +.sp +.BI "int smiReadConfig(char *" filename ", const char *" tag ); +.RE +.sp +.BI "void smiSetErrorHandler(SmiErrorHandler *" smiErrorHandler ); +.RE + +typedef void (SmiErrorHandler) (char *path, int line, + int severity, char *msg, char *tag); + +.fi +.SH DESCRIPTION +These functions provide some initialization and adjustment operations +for the SMI library. +.PP +The \fBsmiInit()\fP function should be the first SMI function called +in an application. It initializes its internal structures. If \fItag\fP is +not NULL, the global configuration file and (on UNIX systems) +a user configuration file are read implicitly, if existent. All +global statements and those statements with a tag (a ``tag: '' prefix) that +matches the \fBtag\fP argument are executed. +(see also CONFIGURATION FILES below). +\fBsmiInit()\fP returns zero on success, or otherwise a negative value. +.PP +The \fBsmiInit()\fP function can also be used to support multiple sets +of MIB data. In this case, the \fBtag\fP argument may be prepended by +a colon and a name to differentiate the data sets. Any library +function call subsequent to an \fBsmiInit("tag:dataset")\fP call is +using the specified data set. +.PP +The \fBsmiExit()\fP function should be called when the application +no longer needs any SMI information to release any allocated SMI +resources. +.PP +The \fBsmiSetErrorLevel()\fP function sets the pedantic level (0-9) of +the SMI parsers of the SMI library, currently SMIv1/v2 and SMIng. +The higher the level, the louder it complains. Values up to 3 +should be regarded as errors, higher level could be interpreted as +warnings. But note that this classification is some kind of personal +taste. The default level is 0, since usually only MIB checkers want +to tune a higher level. +.PP +The \fBsmiGetFlags()\fP and \fBsmiSetFlags()\fP functions allow to +fetch, modify, and set some \fIuserflags\fP that control the SMI +library's behaviour. If \fBSMI_FLAG_ERRORS\fP is not set, no error messages +are printed at all to keep the SMI library totally quiet, which might +be mandatory for some applications. If \fBSMI_FLAG_STATS\fP is set, the +library prints some module statistics. If \fBSMI_FLAG_RECURSIVE\fP is set, +the library also complains about errors in modules that are read due +to import statements. If \fBSMI_FLAG_NODESCR\fP is set, no description +and references strings are stored in memory. This may save a huge amount +of memory in case of applications that do not need this information. +.PP +The \fBsmiSetSeverity()\fP function allows to set the severity of +all error that have name prefixed by \fBpattern\fP to the value \fBseverity\fP. +.PP +The \fBsmiLoadModule()\fP function specifies an additional MIB \fImodule\fP +that the application claims to know or an additional file path to read. +Only after a +module is made known through this function, iterating retrieval +functions and retrieval functions without fully qualified identifiers +will return results from this module. \fBsmiLoadModule()\fP returns the +name of the loaded module, of NULL if it could not be loaded. +.PP +The \fBsmiIsLoaded()\fP function returns a positive value if the +module named \fImodule\fP is already loaded, or zero otherwise. +.PP +The \fBsmiGetPath()\fP and \fBsmiSetPath()\fP functions allow to +fetch, modify, and set the path that is used to search MIB modules. +\fBsmiGetPath()\fP returns a copy of the current search path in the +form "DIR1:DIR2:...", or NULL if no path is set. +The application should free this string if it is +no longer needed. \fBsmiSetPath()\fP sets the search path to +\fIpath\fP. +.PP +The \fBsmiReadConfig()\fP function reads the configuration file \fIfilename\fP. +All global statements in the configuration file and those statements with +a tag (a ``tag: '' prefix) that matches the \fBtag\fP argument, if present, +are executed. +.PP +The \fBsmiSetErrorHandler()\fP function allows to set a callback function +that is called by the MIB parsers deviating from the builtin default +error handler, that prints error messages to stderr. The error handler +has to comply with the \fBSmiErrorHandler\fP function type. The \fBpath\fP, +\fBline\fP, \fBseverity\fP, \fBmsg\fP, and \fPtag\fP arguements carry the +module's pathname, the line number within the module, the error severity +level, a textual error message, and a short error name of the error being +reported. +.SH "MODULE LOCATIONS" +The SMI library may retrieve MIB modules from different kinds of +resources. Currently, SMIv1/v2 and SMIng module files are supported. +If in an \fBsmiLoadModule()\fP function call a module is specified by +a path name (identified by containing at least one dot or slash character), +this +is assumed to be the exact file to read. Otherwise, if a module is identified +by its plain module name, the correspondant file (either SMIv1/2 or +SMIng) is searched along a path. This path is initialized with @smipath@. +Afterwards the optional global and user configuration files are parsed for +`path' commands, and finally the optional \fBSMIPATH\fP environment variable +is evaluated. The `path' command argument and the environment variable +either start with a path separator character (`:' on UNIX-like systems, `;' +on MS-Windows systems) to append +to the path, or end with a path separator character to prepend to the path, +or otherwise completely replace the path. +The path can also be controlled by the \fBsmiGetPath()\fP +and \fBsmiSetPath()\fP functions (see above). +.PP +When files are searched by a given module name, they might have no +extension or one of the extensions `.my', `.smiv2', `.sming', `.mib', +or `.txt'. However, the +MIB module language is identified by the file's content, not by its +file name extension. +.SH "CONFIGURATION FILES" +SMI library configuration files read at initialization and on demand +by \fBsmiReadConfig()\fP have a simple line oriented syntax. Empty lines +and those starting with `#' are ignored. Other lines start with an optional +tag (prepended by a colon), +followed by a command and options dependent on the command. Tags +are used to limit the scope of a command to those applications that are +using this tag. +.PP +The \fBload\fP command is used to preload a given MIB module. If multiple +modules shall be preloaded, multiple \fBload\fP commands must be used. +.PP +The \fBpath\fP command allows to prepend or append components to the +MIB module search path or to modify it completely (see +also MODULE LOCATIONS above). +.PP +The \fBcache\fP command allows to add an additional directory for +MIB module lookup as a last resort. The first argument specifies the +directory and the rest of the line starting from the second argument +specifies the caching method, which is invoked with the MIB module +name appended if the module is found neither in one of the regular directories +nor in the cache directory beforehand. +.PP +The \fBlevel\fP command sets the error level. +.PP +The \fBhide\fP command allows to tune the list of errors that are reported. +It raises all errors with names prefixed by the given pattern to severity +level 9. [Currently, there is no way to list the error names. RTFS: error.c.] +.PP +Example configuration: +.nf + + # + # $HOME/.smirc + # + + # add a private directory + path :/usr/home/strauss/lib/mibs + + # don't show any errors by default + level 0 + + # preload some basic modules + load SNMPv2-SMI + load SNMPv2-TC + load SNMPv2-CONF + + # want to make smilint shout + smilint: level 8 + + # but please don't claim about + # any names longer than 32 chars + smilint: hide namelength-32 + + tcpdump: load DISMAN-SCRIPT-MIB + + smiquery: load IF-MIB + smiquery: load DISMAN-SCRIPT-MIB +.fi +.SH "FILES" +.nf +@sysconfdir@/smi.conf global configuration file +$HOME/.smirc user configuration file +@includedir@/smi.h SMI library header file +@mibdir@/ SMI module repository directory +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_event.3 b/lib/smi_event.3 new file mode 100644 index 0000000..d770bce --- /dev/null +++ b/lib/smi_event.3 @@ -0,0 +1,58 @@ +.TH "smi_event" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetEvent, +smiGetFirstEvent, +smiGetNextEvent +.\" END OF MAN PAGE COPIES +\- SMI identity +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "smiGetEvent(SmiClass *" smiClassPtr, char *" name) ; +.RE +.sp +.BI "smiGetFirstEvent(SmiClass *" smiClassPtr); +.RE +.sp +.BI "smiGetNextEvent(SmiEvent *" smiEventPtr); +.RE + +typedef struct SmiEvent { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiEvent; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng event definition (SMIng). +.PP +\fBsmiGetEvent(SmiClass *smiClassPtr, char *name)\fP returns a pointer +to \fBstruct SmiEvent\fP for the event with the given \fIname\fP in +the given class(\fIsmiClassPtr\fP), or NULL if the event with the +given name does not exist +.PP +\fBsmiGetFirstEvent(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextEvent(SmiEvent *smiEventPtr)\fP are used to iterate +through the events of the class given by \fIsmiClassPtr\fP. They +return a pointer to \fBstruct SmiEvent\fP that represents an event or +NULL if there are no events left in the class, or error has occurred. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi_class "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_event.3.in b/lib/smi_event.3.in new file mode 100644 index 0000000..a21733a --- /dev/null +++ b/lib/smi_event.3.in @@ -0,0 +1,58 @@ +.TH "smi_event" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetEvent, +smiGetFirstEvent, +smiGetNextEvent +.\" END OF MAN PAGE COPIES +\- SMI identity +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "smiGetEvent(SmiClass *" smiClassPtr, char *" name) ; +.RE +.sp +.BI "smiGetFirstEvent(SmiClass *" smiClassPtr); +.RE +.sp +.BI "smiGetNextEvent(SmiEvent *" smiEventPtr); +.RE + +typedef struct SmiEvent { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiEvent; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng event definition (SMIng). +.PP +\fBsmiGetEvent(SmiClass *smiClassPtr, char *name)\fP returns a pointer +to \fBstruct SmiEvent\fP for the event with the given \fIname\fP in +the given class(\fIsmiClassPtr\fP), or NULL if the event with the +given name does not exist +.PP +\fBsmiGetFirstEvent(SmiClass *smiClassPtr)\fP and +\fBsmiGetNextEvent(SmiEvent *smiEventPtr)\fP are used to iterate +through the events of the class given by \fIsmiClassPtr\fP. They +return a pointer to \fBstruct SmiEvent\fP that represents an event or +NULL if there are no events left in the class, or error has occurred. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi_class "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_identity.3 b/lib/smi_identity.3 new file mode 100644 index 0000000..bad1389 --- /dev/null +++ b/lib/smi_identity.3 @@ -0,0 +1,74 @@ +.TH "smi_identity" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetIdentity, +smiGetFirstIdentity, +smiGetNextIdentity, +smiGetParentIdentity, +smiGetIdentityModule +.\" END OF MAN PAGE COPIES +\- SMI identity +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiIdentity *smiGetIdentity(SmiModule *" smiModulePtr ", char *" name); +.RE +.sp +.BI "SmiIdentity *smiGetFirstIdentity(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiIdentity *smiGetNextIdentity(SmiIdentity *" smiIdentityPtr ); +.RE +.sp +.BI "SmiIdentity *smiGetParentIdentity(SmiIdentity *" smiIdentityPtr ); +.RE +.sp +.BI "SmiModule *smiGetIdentityModule(SmiType *" smiIdentityPtr ); +.RE + +typedef struct SmiIdentity { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiIdentity; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng identity definition (SMIng). +.PP +\fBsmiGetIdentity(SmiModule *smiModulePtr,char *name)\fP returns a +pointer to \fBstruct SmiIdentity\fP for the identity with the given +\fIname\fP in the given module(\fIsmiModulePtr\fP), or NULL if the +idenity with the given name does not exist +.PP +\fBsmiGetFirstIdentity(SmiModule *smiModulePtr)\fP and +\fBsmiGetNextIdentity(SmiIdentity *smiIdentityPtr)\fP are used to +iterate through the identities of the module given by +\fIsmiModulePtr\fP. They return a pointer to \fBstruct SmiIdentity\fP +hat represents an identity or NULL if there are no identities left in +the module, or error has occurred. +.PP +\fBsmiGetIdentityModule(SmiIdentity *smiIdentityPtr)\fP returns a +pointer to \fBstruct SmiModule\fP, of the module containing the given +identity. +.PP +\fBsmiGetParentIdentity(SmiIdentity *smiIdentityPtr)\fP returns a +pointer to \fBstruct SmiIdentity\fP pointing to the parent of the +given \fIsmiIdentityPtr\fP, or NULL if the Identity is not derived. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_identity.3.in b/lib/smi_identity.3.in new file mode 100644 index 0000000..8c09144 --- /dev/null +++ b/lib/smi_identity.3.in @@ -0,0 +1,74 @@ +.TH "smi_identity" "3" "February 10, 2007" "" "SMI Management Information Library" +.SH "NAME" +.\" START OF MAN PAGE COPIES +smiGetIdentity, +smiGetFirstIdentity, +smiGetNextIdentity, +smiGetParentIdentity, +smiGetIdentityModule +.\" END OF MAN PAGE COPIES +\- SMI identity +information routines +.SH "SYNOPSIS" +.nf +.B #include +.RS +.RE +.sp +.BI "SmiIdentity *smiGetIdentity(SmiModule *" smiModulePtr ", char *" name); +.RE +.sp +.BI "SmiIdentity *smiGetFirstIdentity(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiIdentity *smiGetNextIdentity(SmiIdentity *" smiIdentityPtr ); +.RE +.sp +.BI "SmiIdentity *smiGetParentIdentity(SmiIdentity *" smiIdentityPtr ); +.RE +.sp +.BI "SmiModule *smiGetIdentityModule(SmiType *" smiIdentityPtr ); +.RE + +typedef struct SmiIdentity { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiIdentity; + +.fi +.SH "DESCRIPTION" +These functions retrieve information on a SMIng identity definition (SMIng). +.PP +\fBsmiGetIdentity(SmiModule *smiModulePtr,char *name)\fP returns a +pointer to \fBstruct SmiIdentity\fP for the identity with the given +\fIname\fP in the given module(\fIsmiModulePtr\fP), or NULL if the +idenity with the given name does not exist +.PP +\fBsmiGetFirstIdentity(SmiModule *smiModulePtr)\fP and +\fBsmiGetNextIdentity(SmiIdentity *smiIdentityPtr)\fP are used to +iterate through the identities of the module given by +\fIsmiModulePtr\fP. They return a pointer to \fBstruct SmiIdentity\fP +hat represents an identity or NULL if there are no identities left in +the module, or error has occurred. +.PP +\fBsmiGetIdentityModule(SmiIdentity *smiIdentityPtr)\fP returns a +pointer to \fBstruct SmiModule\fP, of the module containing the given +identity. +.PP +\fBsmiGetParentIdentity(SmiIdentity *smiIdentityPtr)\fP returns a +pointer to \fBstruct SmiIdentity\fP pointing to the parent of the +given \fIsmiIdentityPtr\fP, or NULL if the Identity is not derived. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2007 Kaloyan Kanev, Jacobs University, Germany +.br diff --git a/lib/smi_macro.3 b/lib/smi_macro.3 new file mode 100644 index 0000000..5aeffd5 --- /dev/null +++ b/lib/smi_macro.3 @@ -0,0 +1,70 @@ +.\" +.\" $Id: smi_macro.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_macro 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetMacro, +smiGetFirstMacro, +smiGetNextMacro, +smiGetMacroModule +\- SMI macro and extension information routines +.\" END OF MAN PAGE COPIES +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiMacro *smiGetMacro(SmiModule *" smiModulePtr ", char *" macro ); +.RE +.sp +.BI "SmiMacro *smiGetFirstMacro(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiMacro *smiGetNextMacro(SmiMacro *" smiMacroPtr ); +.RE +.sp +.BI "SmiModule *smiGetMacroModule(SmiMacro *" smiMacroPtr ); +.RE + +typedef struct SmiMacro { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiMacro; + +.fi +.SH DESCRIPTION +These functions retrieve information on an extension statement +definition (SMIng) or a macro (SMIv1/v2). +.PP +The \fBsmiGetMacro()\fP function retrieves a \fBstruct SmiMacro\fP that +represents an extension or macro definition. \fIMacro\fP may be either a +fully qualified descriptor or a simple macro or extension name. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the macro is not found, \fBsmiGetMacro()\fP returns NULL. +.PP +The \fBsmiGetFirstMacro()\fP and \fBsmiGetNextMacro()\fP functions are +used to iteratively retrieve \fBstruct SmiMacro\fPs. +\fBsmiGetFirstMacro()\fP returns the first one defined in the module +specified by \fIsmiModulePtr\fP. +Subsequent calls to \fBsmiGetNextMacro()\fP return the following ones. +If there are no +more extension or macro definitions in the module, NULL is returned. +.PP +The \fBsmiGetMacroModule()\fP function returns the module that defines +the macro or extension given by \fIstruct SmiMacroPtr\fP. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_macro.3.in b/lib/smi_macro.3.in new file mode 100644 index 0000000..884b3c9 --- /dev/null +++ b/lib/smi_macro.3.in @@ -0,0 +1,70 @@ +.\" +.\" $Id: smi_macro.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_macro 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetMacro, +smiGetFirstMacro, +smiGetNextMacro, +smiGetMacroModule +\- SMI macro and extension information routines +.\" END OF MAN PAGE COPIES +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiMacro *smiGetMacro(SmiModule *" smiModulePtr ", char *" macro ); +.RE +.sp +.BI "SmiMacro *smiGetFirstMacro(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiMacro *smiGetNextMacro(SmiMacro *" smiMacroPtr ); +.RE +.sp +.BI "SmiModule *smiGetMacroModule(SmiMacro *" smiMacroPtr ); +.RE + +typedef struct SmiMacro { + SmiIdentifier name; + SmiDecl decl; + SmiStatus status; + char *description; + char *reference; +} SmiMacro; + +.fi +.SH DESCRIPTION +These functions retrieve information on an extension statement +definition (SMIng) or a macro (SMIv1/v2). +.PP +The \fBsmiGetMacro()\fP function retrieves a \fBstruct SmiMacro\fP that +represents an extension or macro definition. \fIMacro\fP may be either a +fully qualified descriptor or a simple macro or extension name. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the macro is not found, \fBsmiGetMacro()\fP returns NULL. +.PP +The \fBsmiGetFirstMacro()\fP and \fBsmiGetNextMacro()\fP functions are +used to iteratively retrieve \fBstruct SmiMacro\fPs. +\fBsmiGetFirstMacro()\fP returns the first one defined in the module +specified by \fIsmiModulePtr\fP. +Subsequent calls to \fBsmiGetNextMacro()\fP return the following ones. +If there are no +more extension or macro definitions in the module, NULL is returned. +.PP +The \fBsmiGetMacroModule()\fP function returns the module that defines +the macro or extension given by \fIstruct SmiMacroPtr\fP. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_module.3 b/lib/smi_module.3 new file mode 100644 index 0000000..2b0a9ff --- /dev/null +++ b/lib/smi_module.3 @@ -0,0 +1,127 @@ +.\" +.\" $Id: smi_module.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_module 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetModule, +smiGetFirstModule, +smiGetNextModule, +smiGetModuleIdentityNode, +smiGetFirstImport, +smiGetNextImport, +smiIsImported, +smiGetFirstRevision, +smiGetNextRevision +.\" END OF MAN PAGE COPIES +\- SMI module information routines +.SH SYNOPSIS +.nf +.B #include +.B #include +.RS +.RE +.sp +.BI "SmiModule *smiGetModule(char *" module ); +.RE +.sp +.BI "SmiModule *smiGetFirstModule(); +.RE +.sp +.BI "SmiModule *smiGetNextModule(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiNode *smiGetModuleIdentityNode(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiImport *smiGetFirstImport(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiImport *smiGetNextImport(SmiImport *" smiImportPtr ); +.RE +.sp +.BI "int smiIsImported(SmiModule *" smiModulePtr ", SmiModule *" importedModulePtr ", char *" importedName ); +.RE +.sp +.BI "SmiRevision *smiGetFirstRevision(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiRevision *smiGetNextRevision(SmiRevision *" smiRevisionPtr ); +.RE + +typedef struct SmiModule { + SmiIdentifier name; + char *path; + char *organization; + char *contactinfo; + char *description; + char *reference; + SmiLanguage language; + int conformance; +} SmiModule; + +typedef struct SmiRevision { + time_t date; + char *description; +} SmiRevision; + +typedef struct SmiImport { + SmiIdentifier module; + SmiIdentifier name; +} SmiImport; + +.fi +.SH DESCRIPTION +These functions retrieve various meta information on MIB +modules. Other functions to retrieve the definitions within a module are +documented in \fBsmi_type\fP(3), \fBsmi_node\fP(3), and \fBsmi_macro\fP(3). +.PP +The \fBsmiGetModule()\fP function retrieves a \fBstruct SmiModule\fP +that represents the SMI module named \fBmodule\fP. Elements not available +or not present for this module contain NULL. If the module is not found, +\fBsmiGetModule()\fP returns NULL. +.PP +The \fBsmiGetFirstModule()\fP and \fBsmiGetNextModule()\fP functions are +used to iteratively retrieve \fBstruct SmiModule\fPs of all known modules. +\fBsmiGetFirstModule()\fP returns the first known module. +Subsequent calls to \fBsmiGetNextModule()\fP return the following ones. +If there are no more modules NULL is returned. +.PP +The \fBsmiGetModuleIdentityNode()\fP function retrieves +a \fBstruct SmiNode\fP that represents the node that is used to +identify the containing MIB module specified by \fIsmiModulePtr\fP. +If there is no such identity node, i.e. if this is not an SMIv2 or +SMIng module converted from SMIv2, \fBsmiGetModuleIdentityNode()\fP +returns NULL. +.PP +The \fBsmiGetFirstImport()\fP and \fBsmiGetNextImport()\fP functions are +used to iteratively retrieve \fBstruct SmiImport\fPs of a given module. +\fBsmiGetFirstImport()\fP returns the first identifier imported by +the module specified by \fIsmiModulePtr\fP. +Subsequent calls to \fBsmiGetNextImport()\fP return the following ones. +If there are no more imported identifiers NULL is returned. +.PP +The \fBsmiIsImported()\fP function returns a positive value if the +identifier \fIimportedName\fP defined in the module specified by +\fIimportedModulePtr\fP is imported in the module specified by +\fIsmiModulePtr\fP, or zero otherwise. +.PP +The \fBsmiGetFirstRevision()\fP and \fBsmiGetNextRevision()\fP +functions are used to iteratively retrieve \fBstruct SmiRevision\fPs of +a given module. \fBsmiGetFirstRevision()\fP returns the first (that is +most recent) revision information of the module specified by +\fIsmiModulePtr\fP. Subsequent calls to \fBsmiGetNextRevision()\fP +return the revision after (timely before) that one. If there are no +more revisions NULL is returned. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_config "(3), " +.BR smi_node "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_module.3.in b/lib/smi_module.3.in new file mode 100644 index 0000000..7b00b69 --- /dev/null +++ b/lib/smi_module.3.in @@ -0,0 +1,127 @@ +.\" +.\" $Id: smi_module.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_module 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetModule, +smiGetFirstModule, +smiGetNextModule, +smiGetModuleIdentityNode, +smiGetFirstImport, +smiGetNextImport, +smiIsImported, +smiGetFirstRevision, +smiGetNextRevision +.\" END OF MAN PAGE COPIES +\- SMI module information routines +.SH SYNOPSIS +.nf +.B #include +.B #include +.RS +.RE +.sp +.BI "SmiModule *smiGetModule(char *" module ); +.RE +.sp +.BI "SmiModule *smiGetFirstModule(); +.RE +.sp +.BI "SmiModule *smiGetNextModule(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiNode *smiGetModuleIdentityNode(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiImport *smiGetFirstImport(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiImport *smiGetNextImport(SmiImport *" smiImportPtr ); +.RE +.sp +.BI "int smiIsImported(SmiModule *" smiModulePtr ", SmiModule *" importedModulePtr ", char *" importedName ); +.RE +.sp +.BI "SmiRevision *smiGetFirstRevision(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiRevision *smiGetNextRevision(SmiRevision *" smiRevisionPtr ); +.RE + +typedef struct SmiModule { + SmiIdentifier name; + char *path; + char *organization; + char *contactinfo; + char *description; + char *reference; + SmiLanguage language; + int conformance; +} SmiModule; + +typedef struct SmiRevision { + time_t date; + char *description; +} SmiRevision; + +typedef struct SmiImport { + SmiIdentifier module; + SmiIdentifier name; +} SmiImport; + +.fi +.SH DESCRIPTION +These functions retrieve various meta information on MIB +modules. Other functions to retrieve the definitions within a module are +documented in \fBsmi_type\fP(3), \fBsmi_node\fP(3), and \fBsmi_macro\fP(3). +.PP +The \fBsmiGetModule()\fP function retrieves a \fBstruct SmiModule\fP +that represents the SMI module named \fBmodule\fP. Elements not available +or not present for this module contain NULL. If the module is not found, +\fBsmiGetModule()\fP returns NULL. +.PP +The \fBsmiGetFirstModule()\fP and \fBsmiGetNextModule()\fP functions are +used to iteratively retrieve \fBstruct SmiModule\fPs of all known modules. +\fBsmiGetFirstModule()\fP returns the first known module. +Subsequent calls to \fBsmiGetNextModule()\fP return the following ones. +If there are no more modules NULL is returned. +.PP +The \fBsmiGetModuleIdentityNode()\fP function retrieves +a \fBstruct SmiNode\fP that represents the node that is used to +identify the containing MIB module specified by \fIsmiModulePtr\fP. +If there is no such identity node, i.e. if this is not an SMIv2 or +SMIng module converted from SMIv2, \fBsmiGetModuleIdentityNode()\fP +returns NULL. +.PP +The \fBsmiGetFirstImport()\fP and \fBsmiGetNextImport()\fP functions are +used to iteratively retrieve \fBstruct SmiImport\fPs of a given module. +\fBsmiGetFirstImport()\fP returns the first identifier imported by +the module specified by \fIsmiModulePtr\fP. +Subsequent calls to \fBsmiGetNextImport()\fP return the following ones. +If there are no more imported identifiers NULL is returned. +.PP +The \fBsmiIsImported()\fP function returns a positive value if the +identifier \fIimportedName\fP defined in the module specified by +\fIimportedModulePtr\fP is imported in the module specified by +\fIsmiModulePtr\fP, or zero otherwise. +.PP +The \fBsmiGetFirstRevision()\fP and \fBsmiGetNextRevision()\fP +functions are used to iteratively retrieve \fBstruct SmiRevision\fPs of +a given module. \fBsmiGetFirstRevision()\fP returns the first (that is +most recent) revision information of the module specified by +\fIsmiModulePtr\fP. Subsequent calls to \fBsmiGetNextRevision()\fP +return the revision after (timely before) that one. If there are no +more revisions NULL is returned. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_config "(3), " +.BR smi_node "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_node.3 b/lib/smi_node.3 new file mode 100644 index 0000000..ac5ead6 --- /dev/null +++ b/lib/smi_node.3 @@ -0,0 +1,229 @@ +.\" +.\" $Id: smi_node.3.in 5762 2006-08-17 08:10:17Z schoenw $ +.\" +.TH smi_node 3 "March 30, 2004" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetNode, +smiGetNodeByOID, +smiGetFirstNode, +smiGetNextNode, +smiGetParentNode, +smiGetRelatedNode, +smiGetFirstChildNode, +smiGetNextChildNode, +smiGetNodeModule, +smiGetNodeType, +smiGetNodeLine, +smiGetFirstElement, +smiGetNextElement, +smiGetElementNode, +smiGetFirstOption, +smiGetNextOption, +smiGetOptionNode, +smiGetFirstRefinement, +smiGetNextRefinement, +smiGetRefinementModule, +smiGetRefinementNode, +smiGetRefinementType, +smiGetRefinementWriteType +.\" END OF MAN PAGE COPIES +\- SMI type +information routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiNode *smiGetNode(SmiModule *" smiModulePtr ", char *" node ); +.RE +.sp +.BI "SmiNode *smiGetNodeByOID(unsigned int " oidlen ", SmiSubid " oid[] ); +.RE +.sp +.BI "SmiNode *smiGetFirstNode(SmiModule *" smiModulePtr ", SmiNodekind " kinds ); +.RE +.sp +.BI "SmiNode *smiGetNextNode(SmiNode *" smiNodePtr ", SmiNodekind " kinds ); +.RE +.sp +.BI "SmiNode *smiGetParentNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetRelatedNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetFirstChildNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetNextChildNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiModule *smiGetNodeModule(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiType *smiGetNodeType(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "int smiGetNodeLine(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiElement *smiGetFirstElement(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiElement *smiGetNextElement(SmiElement *" smiElementPtr ); +.RE +.sp +.BI "SmiNode *smiGetElementNode(SmiElement *" smiElementPtr ); +.RE +.sp +.BI "SmiOption *smiGetFirstOption(SmiNode *" smiComplianceNodePtr ); +.RE +.sp +.BI "SmiOption *smiGetNextOption(SmiOption *" smiOptionPtr ); +.RE +.sp +.BI "SmiNode *smiGetOptionNode(SmiOption *" smiOptionPtr ); +.RE +.sp +.BI "SmiRefinement *smiGetFirstRefinement(SmiNode *" smiComplianceNodePtr ); +.RE +.sp +.BI "SmiRefinement *smiGetNextRefinement(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiNode *smiGetRefinementNode(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiType *smiGetRefinementType(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiType *smiGetRefinementWriteType(SmiRefinement *" smiRefinementPtr ); +.RE + +typedef struct SmiNode { + SmiIdentifier name; + int oidlen; + SmiSubid *oid; /* array of length oidlen */ + SmiDecl decl; + SmiAccess access; + SmiStatus status; + char *format; + SmiValue value; + char *units; + char *description; + char *reference; + SmiIndexkind indexkind; + int implied; + int create; + SmiNodekind nodekind; +} SmiNode; + +typedef struct SmiElement { + /* no visible attributes */ +} SmiElement; + +typedef struct SmiOption { + char *description; +} SmiOption; + +typedef struct SmiRefinement { + SmiAccess access; + char *description; +} SmiRefinement; + +.fi +.SH DESCRIPTION +These functions retrieve information on any SMI node definition in the +object identifier tree, these are ASN.1 object identifier assignments, +MODULE-IDENTITYs, OBJECT-IDENTITYs, OBJECT-TYPEs, NOTIFICATION-TYPEs, +TRAP-TYPEs, OBJECT-GROUPs, NOTIFICATION-GROUPs, MODULE-COMPLIANCEs, +and AGENT-CAPABILITYs in SMIv1/v2 and node, scalar, table, +row, column, notification, group, and compliance statements in SMIng. +.PP +The \fBsmiGetNode()\fP function retrieves a \fBstruct SmiNode\fP that +represents a node of any kind. \fINode\fP may be either a +fully qualified descriptor, a simple node name, or a numerical OID. +Nodes are also found, if \fInode\fP contains an instance identifier +suffix. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the node is not found, \fBsmiGetNode()\fP returns NULL. +.PP +The \fBsmiGetNodeByOID()\fP function retrieves a \fBstruct SmiNode\fP that +matches the longest prefix of the node that is specified by the +object identifier \fIoid[]\fP with the length \fIoidlen\fP. +If no such node is not found, \fBsmiGetNodeByOID()\fP returns NULL. +.PP +The \fBsmiGetFirstNode()\fP and \fBsmiGetNextNode()\fP functions are +used to iteratively retrieve \fBstruct SmiNode\fPs in tree pre-order. +\fBsmiGetFirstNode()\fP returns the first node defined in the module +specified by \fIsmiModulePtr\fP that is of any kind specified in +the \fIkinds\fP bitset. +Subsequent calls to \fBsmiGetNextNode()\fP return the next node of +any kind specified in the \fIkinds\fP bitset. If there are no +more node definitions in the module, NULL is returned. +.PP +The \fBsmiGetFirstChildNode()\fP and \fBsmiGetNextChildNode()\fP +functions are used to iteratively retrieve \fBstruct SmiNode\fPs that +represent the immediate child nodes of the node specified +by \fIsmiNodePtr\fP passed to the \fBsmiGetFirstChildNode()\fP call. +.PP +The \fBsmiGetParentNode()\fP function is used to retrieve +a \fBstruct SmiNode\fPs that represents the parent node of the node +specified by \fIsmiNodePtr\fP. +.PP +The \fBsmiGetRelatedNode()\fP function is used to retrieve +a \fBstruct SmiNode\fPs that is related to the node specified +by \fIsmiNodePtr\fP. Actually, this is used for SMIv2 table augmentation +entries and similar SMIng constructs. +.PP +The \fBsmiGetNodeModule()\fP function returns the module that defines +the node given by \fIstruct SmiNodePtr\fP. +.PP +The \fBsmiGetNodeType()\fP function returns the type of +the (scalar or columnar) node given by \fIstruct SmiNodePtr\fP. +If \fIstruct SmiNodePtr\fP does not specify a scalar or columnar +node, NULL is returned. +.PP +The \fBsmiGetFirstElement()\fP and \fBsmiGetNextElement()\fP functions are +used to iteratively retrieve \fBstruct SmiElement\fPs that represent +elements of index clauses or notification object lists, groups of object +types or notification types, and mandatory groups of module compliance +statements. The node to which the list belongs has to be specified +by \fIsmiNodePtr\fP. To retrieve the node that is represented by +a \fBstruct SmiElement\fP, the \fBsmiGetElementNode()\fP function has +to be called. +.PP +The \fBsmiGetFirstOption()\fP and \fBsmiGetNextOption()\fP functions are +used to iteratively retrieve \fBstruct SmiOption\fPs that represent +statements on optional (object or notification) groups within the compliance +statement specified by \fIsmiComplianceNodePtr\fP. The group node which is +subject of such a statement can be retrieved by the \fBsmiGetOptionNode()\fP +function. +.PP +Similarly, the \fBsmiGetFirstRefinement()\fP and \fBsmiGetNextRefinement()\fP +functions are used to iteratively retrieve \fBstruct SmiRefinement\fPs that +represent statements on optional object refinements within the compliance +statement specified by \fIsmiComplianceNodePtr\fP. The node which is +subject of such a refinement can be retrieved by +the \fBsmiGetRefinementNode()\fP function. The optional refined type and +write-type of a refinement can be retrieved by +the \fBsmiGetRefinementType()\fP and \fBsmiGetRefinementWriteType()\fP +functions. If they are not present, NULL is returned. +.PP +The \fBsmiGetNodeLine()\fP function returns the line number within the +module where the node specified by \fIsmiNodePtr\fP is defined. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_config "(3), " +.BR smi_type "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2004 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_node.3.in b/lib/smi_node.3.in new file mode 100644 index 0000000..8dc6b2a --- /dev/null +++ b/lib/smi_node.3.in @@ -0,0 +1,229 @@ +.\" +.\" $Id: smi_node.3.in 5762 2006-08-17 08:10:17Z schoenw $ +.\" +.TH smi_node 3 "March 30, 2004" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetNode, +smiGetNodeByOID, +smiGetFirstNode, +smiGetNextNode, +smiGetParentNode, +smiGetRelatedNode, +smiGetFirstChildNode, +smiGetNextChildNode, +smiGetNodeModule, +smiGetNodeType, +smiGetNodeLine, +smiGetFirstElement, +smiGetNextElement, +smiGetElementNode, +smiGetFirstOption, +smiGetNextOption, +smiGetOptionNode, +smiGetFirstRefinement, +smiGetNextRefinement, +smiGetRefinementModule, +smiGetRefinementNode, +smiGetRefinementType, +smiGetRefinementWriteType +.\" END OF MAN PAGE COPIES +\- SMI type +information routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiNode *smiGetNode(SmiModule *" smiModulePtr ", char *" node ); +.RE +.sp +.BI "SmiNode *smiGetNodeByOID(unsigned int " oidlen ", SmiSubid " oid[] ); +.RE +.sp +.BI "SmiNode *smiGetFirstNode(SmiModule *" smiModulePtr ", SmiNodekind " kinds ); +.RE +.sp +.BI "SmiNode *smiGetNextNode(SmiNode *" smiNodePtr ", SmiNodekind " kinds ); +.RE +.sp +.BI "SmiNode *smiGetParentNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetRelatedNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetFirstChildNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiNode *smiGetNextChildNode(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiModule *smiGetNodeModule(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiType *smiGetNodeType(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "int smiGetNodeLine(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiElement *smiGetFirstElement(SmiNode *" smiNodePtr ); +.RE +.sp +.BI "SmiElement *smiGetNextElement(SmiElement *" smiElementPtr ); +.RE +.sp +.BI "SmiNode *smiGetElementNode(SmiElement *" smiElementPtr ); +.RE +.sp +.BI "SmiOption *smiGetFirstOption(SmiNode *" smiComplianceNodePtr ); +.RE +.sp +.BI "SmiOption *smiGetNextOption(SmiOption *" smiOptionPtr ); +.RE +.sp +.BI "SmiNode *smiGetOptionNode(SmiOption *" smiOptionPtr ); +.RE +.sp +.BI "SmiRefinement *smiGetFirstRefinement(SmiNode *" smiComplianceNodePtr ); +.RE +.sp +.BI "SmiRefinement *smiGetNextRefinement(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiNode *smiGetRefinementNode(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiType *smiGetRefinementType(SmiRefinement *" smiRefinementPtr ); +.RE +.sp +.BI "SmiType *smiGetRefinementWriteType(SmiRefinement *" smiRefinementPtr ); +.RE + +typedef struct SmiNode { + SmiIdentifier name; + int oidlen; + SmiSubid *oid; /* array of length oidlen */ + SmiDecl decl; + SmiAccess access; + SmiStatus status; + char *format; + SmiValue value; + char *units; + char *description; + char *reference; + SmiIndexkind indexkind; + int implied; + int create; + SmiNodekind nodekind; +} SmiNode; + +typedef struct SmiElement { + /* no visible attributes */ +} SmiElement; + +typedef struct SmiOption { + char *description; +} SmiOption; + +typedef struct SmiRefinement { + SmiAccess access; + char *description; +} SmiRefinement; + +.fi +.SH DESCRIPTION +These functions retrieve information on any SMI node definition in the +object identifier tree, these are ASN.1 object identifier assignments, +MODULE-IDENTITYs, OBJECT-IDENTITYs, OBJECT-TYPEs, NOTIFICATION-TYPEs, +TRAP-TYPEs, OBJECT-GROUPs, NOTIFICATION-GROUPs, MODULE-COMPLIANCEs, +and AGENT-CAPABILITYs in SMIv1/v2 and node, scalar, table, +row, column, notification, group, and compliance statements in SMIng. +.PP +The \fBsmiGetNode()\fP function retrieves a \fBstruct SmiNode\fP that +represents a node of any kind. \fINode\fP may be either a +fully qualified descriptor, a simple node name, or a numerical OID. +Nodes are also found, if \fInode\fP contains an instance identifier +suffix. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the node is not found, \fBsmiGetNode()\fP returns NULL. +.PP +The \fBsmiGetNodeByOID()\fP function retrieves a \fBstruct SmiNode\fP that +matches the longest prefix of the node that is specified by the +object identifier \fIoid[]\fP with the length \fIoidlen\fP. +If no such node is not found, \fBsmiGetNodeByOID()\fP returns NULL. +.PP +The \fBsmiGetFirstNode()\fP and \fBsmiGetNextNode()\fP functions are +used to iteratively retrieve \fBstruct SmiNode\fPs in tree pre-order. +\fBsmiGetFirstNode()\fP returns the first node defined in the module +specified by \fIsmiModulePtr\fP that is of any kind specified in +the \fIkinds\fP bitset. +Subsequent calls to \fBsmiGetNextNode()\fP return the next node of +any kind specified in the \fIkinds\fP bitset. If there are no +more node definitions in the module, NULL is returned. +.PP +The \fBsmiGetFirstChildNode()\fP and \fBsmiGetNextChildNode()\fP +functions are used to iteratively retrieve \fBstruct SmiNode\fPs that +represent the immediate child nodes of the node specified +by \fIsmiNodePtr\fP passed to the \fBsmiGetFirstChildNode()\fP call. +.PP +The \fBsmiGetParentNode()\fP function is used to retrieve +a \fBstruct SmiNode\fPs that represents the parent node of the node +specified by \fIsmiNodePtr\fP. +.PP +The \fBsmiGetRelatedNode()\fP function is used to retrieve +a \fBstruct SmiNode\fPs that is related to the node specified +by \fIsmiNodePtr\fP. Actually, this is used for SMIv2 table augmentation +entries and similar SMIng constructs. +.PP +The \fBsmiGetNodeModule()\fP function returns the module that defines +the node given by \fIstruct SmiNodePtr\fP. +.PP +The \fBsmiGetNodeType()\fP function returns the type of +the (scalar or columnar) node given by \fIstruct SmiNodePtr\fP. +If \fIstruct SmiNodePtr\fP does not specify a scalar or columnar +node, NULL is returned. +.PP +The \fBsmiGetFirstElement()\fP and \fBsmiGetNextElement()\fP functions are +used to iteratively retrieve \fBstruct SmiElement\fPs that represent +elements of index clauses or notification object lists, groups of object +types or notification types, and mandatory groups of module compliance +statements. The node to which the list belongs has to be specified +by \fIsmiNodePtr\fP. To retrieve the node that is represented by +a \fBstruct SmiElement\fP, the \fBsmiGetElementNode()\fP function has +to be called. +.PP +The \fBsmiGetFirstOption()\fP and \fBsmiGetNextOption()\fP functions are +used to iteratively retrieve \fBstruct SmiOption\fPs that represent +statements on optional (object or notification) groups within the compliance +statement specified by \fIsmiComplianceNodePtr\fP. The group node which is +subject of such a statement can be retrieved by the \fBsmiGetOptionNode()\fP +function. +.PP +Similarly, the \fBsmiGetFirstRefinement()\fP and \fBsmiGetNextRefinement()\fP +functions are used to iteratively retrieve \fBstruct SmiRefinement\fPs that +represent statements on optional object refinements within the compliance +statement specified by \fIsmiComplianceNodePtr\fP. The node which is +subject of such a refinement can be retrieved by +the \fBsmiGetRefinementNode()\fP function. The optional refined type and +write-type of a refinement can be retrieved by +the \fBsmiGetRefinementType()\fP and \fBsmiGetRefinementWriteType()\fP +functions. If they are not present, NULL is returned. +.PP +The \fBsmiGetNodeLine()\fP function returns the line number within the +module where the node specified by \fIsmiNodePtr\fP is defined. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_config "(3), " +.BR smi_type "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2004 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_render.3 b/lib/smi_render.3 new file mode 100644 index 0000000..4308618 --- /dev/null +++ b/lib/smi_render.3 @@ -0,0 +1,94 @@ +.\" +.\" $Id: smi_render.3.in 1432 2002-07-24 11:54:18Z strauss $ +.\" +.TH smi_render 3 "July 24, 2002" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiRenderOID, +smiRenderValue, +smiRenderNode, +smiRenderType +.\" END OF MAN PAGE COPIES +\- SMI data and MIB data rendering routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI +.RE +.sp +.BI "char *smiRenderOID(unsigned int " oidlen ", SmiSubid *" oid ", int " flags ); +.RE +.sp +.BI "char *smiRenderValue(SmiValue *" smiValuePtr ", SmiType *" smiTypePtr ", int " flags ); +.RE +.sp +.BI "char *smiRenderNode(SmiNode *" smiNodePtr ", int " flags ); +.RE +.sp +.BI "char *smiRenderType(SmiType *" smiTypePtr ", int " flags ); +.RE +.SH DESCRIPTION +These functions provide can be used to render OIDs, values of MIB data, +or names of MIB nodes or types. +.PP +The \fBsmiRenderOID()\fP function renders an OID given by its +length \fIoidlen\fP and its array of sub-identifiers \fIoid*\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderValue()\fP function renders a MIB data value given by +\fIsmiValuePtr\fP. An underlying type \fIsmiTypePtr\fP may be supplied +to support a more human friendly rendering. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderNode()\fP function renders the name of a node given +by \fIsmiNodePtr\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderType()\fP function renders the name of a type given +by \fIsmiTypePtr\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.SH "FORMATS" +Each of these functions gets a last argument named \fIflags\fP. This is +a logcially or-ed set of flags that can be used to control the format +of the rendered items: +.TP +\fBSMI_RENDER_NUMERIC +Allow numeric representation (default). +.TP +\fBSMI_RENDER_NAME +Allow a representation by name(s) if possible. +.TP +\fBSMI_RENDER_QUALIFIED +In case of a name representation, force a module prefix, e.g. IF-MIB::ifIndex +instead of just ifIndex. +.TP +\fBSMI_RENDER_FORMAT +In case of \fIsmiRenderValue()\fP, force the application of a format +specification (e.g. an SMIv2 DISPLAY-HINT) of an underlying type if +the \fIsmiTypePtr\fP argument is not NULL and this type contains such a +format specification. +.TP +\fBSMI_RENDER_PRINTABLE +In case of octet string value rendering, force a printable representation +if all octets of the octet string are printable. +.TP +\fBSMI_RENDER_UNKNOWN +Force the return of a string containing SMI_LABEL_UNKNOWN (""), +if the rendering would fail. This way, the only condition where NULL can +be returned is the lack of memory. +.TP +\fBSMI_RENDER_ALL +Apply a combination of all these flags. This supports the (hopefully) most +human friendly representations. +.SH "RETURN VALUE" +All of these functions return a string, if successful, or NULL in case +of a rendering failure. See also the \fBSMI_RENDER_UNKNOWN\fP flag above. +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2002 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_render.3.in b/lib/smi_render.3.in new file mode 100644 index 0000000..4308618 --- /dev/null +++ b/lib/smi_render.3.in @@ -0,0 +1,94 @@ +.\" +.\" $Id: smi_render.3.in 1432 2002-07-24 11:54:18Z strauss $ +.\" +.TH smi_render 3 "July 24, 2002" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiRenderOID, +smiRenderValue, +smiRenderNode, +smiRenderType +.\" END OF MAN PAGE COPIES +\- SMI data and MIB data rendering routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI +.RE +.sp +.BI "char *smiRenderOID(unsigned int " oidlen ", SmiSubid *" oid ", int " flags ); +.RE +.sp +.BI "char *smiRenderValue(SmiValue *" smiValuePtr ", SmiType *" smiTypePtr ", int " flags ); +.RE +.sp +.BI "char *smiRenderNode(SmiNode *" smiNodePtr ", int " flags ); +.RE +.sp +.BI "char *smiRenderType(SmiType *" smiTypePtr ", int " flags ); +.RE +.SH DESCRIPTION +These functions provide can be used to render OIDs, values of MIB data, +or names of MIB nodes or types. +.PP +The \fBsmiRenderOID()\fP function renders an OID given by its +length \fIoidlen\fP and its array of sub-identifiers \fIoid*\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderValue()\fP function renders a MIB data value given by +\fIsmiValuePtr\fP. An underlying type \fIsmiTypePtr\fP may be supplied +to support a more human friendly rendering. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderNode()\fP function renders the name of a node given +by \fIsmiNodePtr\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.PP +The \fBsmiRenderType()\fP function renders the name of a type given +by \fIsmiTypePtr\fP. +The \fIflags\fP can be used to control the resulting format, see FORMATS below. +.SH "FORMATS" +Each of these functions gets a last argument named \fIflags\fP. This is +a logcially or-ed set of flags that can be used to control the format +of the rendered items: +.TP +\fBSMI_RENDER_NUMERIC +Allow numeric representation (default). +.TP +\fBSMI_RENDER_NAME +Allow a representation by name(s) if possible. +.TP +\fBSMI_RENDER_QUALIFIED +In case of a name representation, force a module prefix, e.g. IF-MIB::ifIndex +instead of just ifIndex. +.TP +\fBSMI_RENDER_FORMAT +In case of \fIsmiRenderValue()\fP, force the application of a format +specification (e.g. an SMIv2 DISPLAY-HINT) of an underlying type if +the \fIsmiTypePtr\fP argument is not NULL and this type contains such a +format specification. +.TP +\fBSMI_RENDER_PRINTABLE +In case of octet string value rendering, force a printable representation +if all octets of the octet string are printable. +.TP +\fBSMI_RENDER_UNKNOWN +Force the return of a string containing SMI_LABEL_UNKNOWN (""), +if the rendering would fail. This way, the only condition where NULL can +be returned is the lack of memory. +.TP +\fBSMI_RENDER_ALL +Apply a combination of all these flags. This supports the (hopefully) most +human friendly representations. +.SH "RETURN VALUE" +All of these functions return a string, if successful, or NULL in case +of a rendering failure. See also the \fBSMI_RENDER_UNKNOWN\fP flag above. +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 2002 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_type.3 b/lib/smi_type.3 new file mode 100644 index 0000000..8326456 --- /dev/null +++ b/lib/smi_type.3 @@ -0,0 +1,128 @@ +.\" +.\" $Id: smi_type.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_type 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetType, +smiGetFirstType, +smiGetNextType, +smiGetParentType, +smiGetTypeLine, +smiGetFirstRange, +smiGetNextRange, +smiGetFirstNamedNumber, +smiGetNextNamedNumber, +smiGetTypeModule +.\" END OF MAN PAGE COPIES +\- SMI type +information routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiType *smiGetType(SmiModule *" smiModulePtr ", char *" type ); +.RE +.sp +.BI "SmiType *smiGetFirstType(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiType *smiGetNextType(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiType *smiGetParentType(SmiType *" smiTypePtr ); +.RE +.sp +.BI "int smiGetTypeLine(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiRange *smiGetFirstRange(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiRange *smiGetNextRange(SmiRange *" smiRangePtr ); +.RE +.sp +.BI "SmiNamedNumber *smiGetFirstNamedNumber(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber *" smiNamedNumberPtr ); +.RE +.sp +.BI "SmiModule *smiGetTypeModule(SmiType *" smiTypePtr ); +.RE + +typedef struct SmiType { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; +} SmiType; + +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +.fi +.SH DESCRIPTION +These functions retrieve information on a type definition (SMIng) or +a simple ASN.1 type definition (SMIv1/v2) or a TEXTUAL-CONVENTION +definition (SMIv2). Base types may also be retrieved by these functions. +.PP +The \fBsmiGetType()\fP function retrieves a \fBstruct SmiType\fP that +represents a type. \fIType\fP may be either a +fully qualified descriptor or a simple type name. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the type is not found, \fBsmiGetType()\fP returns NULL. +.PP +The \fBsmiGetFirstType()\fP and \fBsmiGetNextType()\fP functions are +used to iteratively retrieve \fBstruct SmiType\fPs. \fBsmiGetFirstType()\fP +returns the first one defined in the module +specified by \fIsmiModulePtr\fP. Subsequent calls to +\fBsmiGetNextType()\fP return the following ones. If there are no +more type definitions in the module NULL is returned. +.PP +The \fBsmiGetParentType()\fP function retrieves a \fBstruct SmiType\fP +of the type from which the type specified by \fIsmiTypePtr\fP is +derived. If there is no parent type (i.e. the type specified +by \fIsmiTypePtr\fP is a base type), \fBsmiGetParentType()\fP returns NULL. +.PP +Similarly, the \fBsmiGetFirstRange()\fP and \fBsmiGetNextRange()\fP +functions are used to iteratively retrieve \fBstruct SmiRange\fPs +that represent range restrictions of the type specified by \fIsmiTypePtr\fP, +either size ranges of an octet string type or value +ranges in case of a numeric type. +.PP +Similarly, the \fBsmiGetFirstNamedNumber()\fP and \fBsmiGetNextNamedNumber()\fP +functions are used to iteratively retrieve \fBstruct SmiNamedNumber\fPs +that represent named numbers of the type specified by \fIsmiTypePtr\fP, which +has to be either a bit set or an enumeration type. +.PP +The \fBsmiGetTypeModule()\fP function returns the module that defines +the type given by \fIstruct SmiTypePtr\fP. +.PP +The \fBsmiGetTypeLine()\fP function returns the line number within the +module where the type specified by \fIsmiTypePtr\fP is defined. +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_type.3.in b/lib/smi_type.3.in new file mode 100644 index 0000000..7d99aaa --- /dev/null +++ b/lib/smi_type.3.in @@ -0,0 +1,128 @@ +.\" +.\" $Id: smi_type.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_type 3 "August 16, 2001" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetType, +smiGetFirstType, +smiGetNextType, +smiGetParentType, +smiGetTypeLine, +smiGetFirstRange, +smiGetNextRange, +smiGetFirstNamedNumber, +smiGetNextNamedNumber, +smiGetTypeModule +.\" END OF MAN PAGE COPIES +\- SMI type +information routines +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "SmiType *smiGetType(SmiModule *" smiModulePtr ", char *" type ); +.RE +.sp +.BI "SmiType *smiGetFirstType(SmiModule *" smiModulePtr ); +.RE +.sp +.BI "SmiType *smiGetNextType(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiType *smiGetParentType(SmiType *" smiTypePtr ); +.RE +.sp +.BI "int smiGetTypeLine(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiRange *smiGetFirstRange(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiRange *smiGetNextRange(SmiRange *" smiRangePtr ); +.RE +.sp +.BI "SmiNamedNumber *smiGetFirstNamedNumber(SmiType *" smiTypePtr ); +.RE +.sp +.BI "SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber *" smiNamedNumberPtr ); +.RE +.sp +.BI "SmiModule *smiGetTypeModule(SmiType *" smiTypePtr ); +.RE + +typedef struct SmiType { + SmiIdentifier name; + SmiBasetype basetype; + SmiDecl decl; + char *format; + SmiValue value; + char *units; + SmiStatus status; + char *description; + char *reference; +} SmiType; + +typedef struct SmiNamedNumber { + SmiIdentifier name; + SmiValue value; +} SmiNamedNumber; + +typedef struct SmiRange { + SmiValue minValue; + SmiValue maxValue; +} SmiRange; + +.fi +.SH DESCRIPTION +These functions retrieve information on a type definition (SMIng) or +a simple ASN.1 type definition (SMIv1/v2) or a TEXTUAL-CONVENTION +definition (SMIv2). Base types may also be retrieved by these functions. +.PP +The \fBsmiGetType()\fP function retrieves a \fBstruct SmiType\fP that +represents a type. \fIType\fP may be either a +fully qualified descriptor or a simple type name. +If \fIsmiModulePtr\fP is not NULL it used to limit the search to the +given module. If the type is not found, \fBsmiGetType()\fP returns NULL. +.PP +The \fBsmiGetFirstType()\fP and \fBsmiGetNextType()\fP functions are +used to iteratively retrieve \fBstruct SmiType\fPs. \fBsmiGetFirstType()\fP +returns the first one defined in the module +specified by \fIsmiModulePtr\fP. Subsequent calls to +\fBsmiGetNextType()\fP return the following ones. If there are no +more type definitions in the module NULL is returned. +.PP +The \fBsmiGetParentType()\fP function retrieves a \fBstruct SmiType\fP +of the type from which the type specified by \fIsmiTypePtr\fP is +derived. If there is no parent type (i.e. the type specified +by \fIsmiTypePtr\fP is a base type), \fBsmiGetParentType()\fP returns NULL. +.PP +Similarly, the \fBsmiGetFirstRange()\fP and \fBsmiGetNextRange()\fP +functions are used to iteratively retrieve \fBstruct SmiRange\fPs +that represent range restrictions of the type specified by \fIsmiTypePtr\fP, +either size ranges of an octet string type or value +ranges in case of a numeric type. +.PP +Similarly, the \fBsmiGetFirstNamedNumber()\fP and \fBsmiGetNextNamedNumber()\fP +functions are used to iteratively retrieve \fBstruct SmiNamedNumber\fPs +that represent named numbers of the type specified by \fIsmiTypePtr\fP, which +has to be either a bit set or an enumeration type. +.PP +The \fBsmiGetTypeModule()\fP function returns the module that defines +the type given by \fIstruct SmiTypePtr\fP. +.PP +The \fBsmiGetTypeLine()\fP function returns the line number within the +module where the type specified by \fIsmiTypePtr\fP is defined. +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_util.3 b/lib/smi_util.3 new file mode 100644 index 0000000..1e9f1fc --- /dev/null +++ b/lib/smi_util.3 @@ -0,0 +1,38 @@ +.\" +.\" $Id: smi_util.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_util 3 "August 21, 2006" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetMinSize, +smiGetMaxSize, +smiPack, +smiUnpack +.\" END OF MAN PAGE COPIES +\- SMI type utility functions +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "unsigned int smiGetMinSize(SmiType *" smiTypePtr ); +.RE +.sp +.BI "unsigned int smiGetMaxSize(SmiTyep *" smiTypePtr ); +.RE + +.fi +.SH DESCRIPTION +These functions +.SH "FILES" +.nf +${prefix}/include/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/smi_util.3.in b/lib/smi_util.3.in new file mode 100644 index 0000000..757b66c --- /dev/null +++ b/lib/smi_util.3.in @@ -0,0 +1,38 @@ +.\" +.\" $Id: smi_util.3.in 4432 2006-05-29 16:21:11Z strauss $ +.\" +.TH smi_util 3 "August 21, 2006" "IBR" "SMI Management Information Library" +.SH NAME +.\" START OF MAN PAGE COPIES +smiGetMinSize, +smiGetMaxSize, +smiPack, +smiUnpack +.\" END OF MAN PAGE COPIES +\- SMI type utility functions +.SH SYNOPSIS +.nf +.B #include +.RS +.RE +.sp +.BI "unsigned int smiGetMinSize(SmiType *" smiTypePtr ); +.RE +.sp +.BI "unsigned int smiGetMaxSize(SmiTyep *" smiTypePtr ); +.RE + +.fi +.SH DESCRIPTION +These functions +.SH "FILES" +.nf +@includedir@/smi.h SMI library header file +.fi +.SH "SEE ALSO" +.BR libsmi "(3), " +.BR smi_module "(3), " +.BR smi.h +.SH "AUTHOR" +(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/lib/snprintf.c b/lib/snprintf.c new file mode 100644 index 0000000..9b79511 --- /dev/null +++ b/lib/snprintf.c @@ -0,0 +1,631 @@ +/* + * Copyright (c) 1995-1999 Kungliga Tekniska H�gskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* $Id: snprintf.c 1429 2002-07-23 23:12:20Z strauss $ */ + +#include + +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_DMALLOC_H +#include +#endif + +#include "snprintf.h" + +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) < (b) ? (b) : (a)) +#endif + + + +enum format_flags { + minus_flag = 1, + plus_flag = 2, + space_flag = 4, + alternate_flag = 8, + zero_flag = 16 +}; + +/* + * Common state + */ + +struct state { + unsigned char *str; + unsigned char *s; + unsigned char *theend; + size_t sz; + size_t max_sz; + int (*append_char)(struct state *, unsigned char); + int (*reserve)(struct state *, size_t); + /* XXX - methods */ +}; + +#ifndef HAVE_VSNPRINTF +static int +sn_reserve (struct state *state, size_t n) +{ + return state->s + n > state->theend; +} + +static int +sn_append_char (struct state *state, unsigned char c) +{ + if (sn_reserve (state, 1)) { + return 1; + } else { + *state->s++ = c; + return 0; + } +} +#endif + +static int +as_reserve (struct state *state, size_t n) +{ + if (state->s + n > state->theend) { + int off = state->s - state->str; + unsigned char *tmp; + + if (state->max_sz && state->sz >= state->max_sz) + return 1; + + state->sz = MAX(state->sz * 2, state->sz + n); + if (state->max_sz) + state->sz = MIN(state->sz, state->max_sz); + tmp = realloc (state->str, state->sz); + if (tmp == NULL) + return 1; + state->str = tmp; + state->s = state->str + off; + state->theend = state->str + state->sz - 1; + } + return 0; +} + +static int +as_append_char (struct state *state, unsigned char c) +{ + if(as_reserve (state, 1)) + return 1; + else { + *state->s++ = c; + return 0; + } +} + +static int +append_number(struct state *state, + unsigned long num, unsigned base, char *rep, + int width, int prec, int flags, int minusp) +{ + int len = 0; + int i; + + /* given precision, ignore zero flag */ + if(prec != -1) + flags &= ~zero_flag; + else + prec = 1; + /* zero value with zero precision -> "" */ + if(prec == 0 && num == 0) + return 0; + do{ + if((*state->append_char)(state, rep[num % base])) + return 1; + len++; + num /= base; + }while(num); + prec -= len; + /* pad with prec zeros */ + while(prec-- > 0){ + if((*state->append_char)(state, '0')) + return 1; + len++; + } + /* add length of alternate prefix (added later) to len */ + if(flags & alternate_flag && (base == 16 || base == 8)) + len += base / 8; + /* pad with zeros */ + if(flags & zero_flag){ + width -= len; + if(minusp || (flags & space_flag) || (flags & plus_flag)) + width--; + while(width-- > 0){ + if((*state->append_char)(state, '0')) + return 1; + len++; + } + } + /* add alternate prefix */ + if(flags & alternate_flag && (base == 16 || base == 8)){ + if(base == 16) + if((*state->append_char)(state, rep[10] + 23)) /* XXX */ + return 1; + if((*state->append_char)(state, '0')) + return 1; + } + /* add sign */ + if(minusp){ + if((*state->append_char)(state, '-')) + return 1; + len++; + } else if(flags & plus_flag) { + if((*state->append_char)(state, '+')) + return 1; + len++; + } else if(flags & space_flag) { + if((*state->append_char)(state, ' ')) + return 1; + len++; + } + if(flags & minus_flag) + /* swap before padding with spaces */ + for(i = 0; i < len / 2; i++){ + char c = state->s[-i-1]; + state->s[-i-1] = state->s[-len+i]; + state->s[-len+i] = c; + } + width -= len; + while(width-- > 0){ + if((*state->append_char)(state, ' ')) + return 1; + len++; + } + if(!(flags & minus_flag)) + /* swap after padding with spaces */ + for(i = 0; i < len / 2; i++){ + char c = state->s[-i-1]; + state->s[-i-1] = state->s[-len+i]; + state->s[-len+i] = c; + } + + return 0; +} + +static int +append_string (struct state *state, + unsigned char *arg, + int width, + int prec, + int flags) +{ + if(prec != -1) + width -= prec; + else + width -= strlen((char *)arg); + if(!(flags & minus_flag)) + while(width-- > 0) + if((*state->append_char) (state, ' ')) + return 1; + if (prec != -1) { + while (*arg && prec--) + if ((*state->append_char) (state, *arg++)) + return 1; + } else { + while (*arg) + if ((*state->append_char) (state, *arg++)) + return 1; + } + if(flags & minus_flag) + while(width-- > 0) + if((*state->append_char) (state, ' ')) + return 1; + return 0; +} + +static int +append_char(struct state *state, + unsigned char arg, + int width, + int flags) +{ + while(!(flags & minus_flag) && --width > 0) + if((*state->append_char) (state, ' ')) + return 1; + + if((*state->append_char) (state, arg)) + return 1; + while((flags & minus_flag) && --width > 0) + if((*state->append_char) (state, ' ')) + return 1; + + return 0; +} + +/* + * This can't be made into a function... + */ + +#define PARSE_INT_FORMAT(res, arg, unsig) \ +if (long_flag) \ + res = (unsig long)va_arg(arg, unsig long); \ +else if (short_flag) \ + res = (unsig short)va_arg(arg, unsig int); \ +else \ + res = (unsig int)va_arg(arg, unsig int) + +/* + * zyxprintf - return 0 or -1 + */ + +static int +xyzprintf (struct state *state, const char *char_format, va_list ap) +{ + const unsigned char *format = (const unsigned char *)char_format; + unsigned char c; + + while((c = *format++)) { + if (c == '%') { + int flags = 0; + int width = 0; + int prec = -1; + int long_flag = 0; + int short_flag = 0; + + /* flags */ + while((c = *format++)){ + if(c == '-') + flags |= minus_flag; + else if(c == '+') + flags |= plus_flag; + else if(c == ' ') + flags |= space_flag; + else if(c == '#') + flags |= alternate_flag; + else if(c == '0') + flags |= zero_flag; + else + break; + } + + if((flags & space_flag) && (flags & plus_flag)) + flags ^= space_flag; + + if((flags & minus_flag) && (flags & zero_flag)) + flags ^= zero_flag; + + /* width */ + if (isdigit(c)) + do { + width = width * 10 + c - '0'; + c = *format++; + } while(isdigit(c)); + else if(c == '*') { + width = va_arg(ap, int); + c = *format++; + } + + /* precision */ + if (c == '.') { + prec = 0; + c = *format++; + if (isdigit(c)) + do { + prec = prec * 10 + c - '0'; + c = *format++; + } while(isdigit(c)); + else if (c == '*') { + prec = va_arg(ap, int); + c = *format++; + } + } + + /* size */ + + if (c == 'h') { + short_flag = 1; + c = *format++; + } else if (c == 'l') { + long_flag = 1; + c = *format++; + } + + switch (c) { + case 'c' : + if(append_char(state, va_arg(ap, int), width, flags)) + return -1; + break; + case 's' : + if (append_string(state, + va_arg(ap, unsigned char*), + width, + prec, + flags)) + return -1; + break; + case 'd' : + case 'i' : { + long arg; + unsigned long num; + int minusp = 0; + + PARSE_INT_FORMAT(arg, ap, signed); + + if (arg < 0) { + minusp = 1; + num = -arg; + } else + num = arg; + + if (append_number (state, num, 10, "0123456789", + width, prec, flags, minusp)) + return -1; + break; + } + case 'u' : { + unsigned long arg; + + PARSE_INT_FORMAT(arg, ap, unsigned); + + if (append_number (state, arg, 10, "0123456789", + width, prec, flags, 0)) + return -1; + break; + } + case 'o' : { + unsigned long arg; + + PARSE_INT_FORMAT(arg, ap, unsigned); + + if (append_number (state, arg, 010, "01234567", + width, prec, flags, 0)) + return -1; + break; + } + case 'x' : { + unsigned long arg; + + PARSE_INT_FORMAT(arg, ap, unsigned); + + if (append_number (state, arg, 0x10, "0123456789abcdef", + width, prec, flags, 0)) + return -1; + break; + } + case 'X' :{ + unsigned long arg; + + PARSE_INT_FORMAT(arg, ap, unsigned); + + if (append_number (state, arg, 0x10, "0123456789ABCDEF", + width, prec, flags, 0)) + return -1; + break; + } + case 'p' : { + unsigned long arg = (unsigned long)va_arg(ap, void*); + + if (append_number (state, arg, 0x10, "0123456789ABCDEF", + width, prec, flags, 0)) + return -1; + break; + } + case 'n' : { + int *arg = va_arg(ap, int*); + *arg = state->s - state->str; + break; + } + case '\0' : + --format; + /* FALLTHROUGH */ + case '%' : + if ((*state->append_char)(state, c)) + return -1; + break; + default : + if ( (*state->append_char)(state, '%') + || (*state->append_char)(state, c)) + return -1; + break; + } + } else + if ((*state->append_char) (state, c)) + return -1; + } + return 0; +} + +#ifndef HAVE_SNPRINTF +int +snprintf (char *str, size_t sz, const char *format, ...) +{ + va_list args; + int ret; + + va_start(args, format); + ret = vsnprintf (str, sz, format, args); + +#ifdef PARANOIA + { + int ret2; + char *tmp; + + tmp = malloc (sz); + if (tmp == NULL) + abort (); + + ret2 = vsprintf (tmp, format, args); + if (ret != ret2 || strcmp(str, tmp)) + abort (); + free (tmp); + } +#endif + + va_end(args); + return ret; +} +#endif + +#ifndef HAVE_ASPRINTF +int +asprintf (char **ret, const char *format, ...) +{ + va_list args; + int val; + + va_start(args, format); + val = vasprintf (ret, format, args); + +#ifdef PARANOIA + { + int ret2; + char *tmp; + tmp = malloc (val + 1); + if (tmp == NULL) + abort (); + + ret2 = vsprintf (tmp, format, args); + if (val != ret2 || strcmp(*ret, tmp)) + abort (); + free (tmp); + } +#endif + + va_end(args); + return val; +} +#endif + +#ifndef HAVE_ASNPRINTF +int +asnprintf (char **ret, size_t max_sz, const char *format, ...) +{ + va_list args; + int val; + + va_start(args, format); + val = vasnprintf (ret, max_sz, format, args); + +#ifdef PARANOIA + { + int ret2; + char *tmp; + tmp = malloc (val + 1); + if (tmp == NULL) + abort (); + + ret2 = vsprintf (tmp, format, args); + if (val != ret2 || strcmp(*ret, tmp)) + abort (); + free (tmp); + } +#endif + + va_end(args); + return val; +} +#endif + +#ifndef HAVE_VASPRINTF +int +vasprintf (char **ret, const char *format, va_list args) +{ + return vasnprintf (ret, 0, format, args); +} +#endif + + +#ifndef HAVE_VASNPRINTF +int +vasnprintf (char **ret, size_t max_sz, const char *format, va_list args) +{ + int st; + size_t len; + struct state state; + + state.max_sz = max_sz; + state.sz = 1; + state.str = malloc(state.sz); + if (state.str == NULL) { + *ret = NULL; + return -1; + } + state.s = state.str; + state.theend = state.s + state.sz - 1; + state.append_char = as_append_char; + state.reserve = as_reserve; + + st = xyzprintf (&state, format, args); + if (st) { + free (state.str); + *ret = NULL; + return -1; + } else { + char *tmp; + + *state.s = '\0'; + len = state.s - state.str; + tmp = realloc (state.str, len+1); + if (tmp == NULL) { + free (state.str); + *ret = NULL; + return -1; + } + *ret = tmp; + return len; + } +} +#endif + +#ifndef HAVE_VSNPRINTF +int +vsnprintf (char *str, size_t sz, const char *format, va_list args) +{ + struct state state; + int ret; + unsigned char *ustr = (unsigned char *)str; + + state.max_sz = 0; + state.sz = sz; + state.str = ustr; + state.s = ustr; + state.theend = ustr + sz - 1; + state.append_char = sn_append_char; + state.reserve = sn_reserve; + + ret = xyzprintf (&state, format, args); + *state.s = '\0'; + if (ret) + return sz; + else + return state.s - state.str; +} +#endif diff --git a/lib/snprintf.h b/lib/snprintf.h new file mode 100644 index 0000000..8ec656a --- /dev/null +++ b/lib/snprintf.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1995-1999 Kungliga Tekniska H�gskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +#include +#include +#include + +#ifndef HAVE_SNPRINTF +extern int snprintf (char *str, size_t sz, const char *format, ...); +#endif + +#ifndef HAVE_VSNPRINTF +extern int vsnprintf (char *str, size_t sz, const char *format, va_list args); +#endif + +extern int asprintf (char **ret, const char *format, ...); + +extern int asnprintf (char **ret, size_t max_sz, const char *format, ...); + +extern int vasprintf (char **ret, const char *format, va_list args); + +extern int vasnprintf (char **ret, size_t max_sz, const char *format, + va_list args); + diff --git a/lib/util.c b/lib/util.c new file mode 100644 index 0000000..8b7354d --- /dev/null +++ b/lib/util.c @@ -0,0 +1,192 @@ +/* + * util.c -- + * + * Misc utility functions. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: util.c 1470 2002-11-13 13:15:03Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include + +#include "util.h" +#include "snprintf.h" + +#ifdef HAVE_DMALLOC_H +#include +#endif + + + +#ifdef HAVE_DMALLOC_H + +void *_smiMalloc(char *file, int line, size_t size) +{ + char *m = _calloc_leap(file, line, 1, size); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; +} + +void *_smiRealloc(char *file, int line, void *ptr, size_t size) +{ + char *m = _realloc_leap(file, line, ptr, size); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; +} + +char *_smiStrdup(char *file, int line, const char *s1) +{ + if (s1) { + char *m = _strdup_leap(file, line, s1); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; + } else { + return NULL; + } +} + +char *_smiStrndup(char *file, int line, const char *s1, size_t n) +{ + char *m; + + m = _smiMalloc(file, line, n+1); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + strncpy(m, s1, n); + m[n] = 0; + return m; +} + +void _smiFree(char *file, int line, void *ptr) +{ + if (ptr) { + _free_leap(file, line, ptr); + } +} + +#else + +void *smiMalloc(size_t size) +{ + char *m = calloc(1, size); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; +} + +void *smiRealloc(void *ptr, size_t size) +{ + char *m = realloc(ptr, size); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; +} + +char *smiStrdup(const char *s1) +{ + if (s1) { + char *m = strdup(s1); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + return m; + } else { + return NULL; + } +} + +char *smiStrndup(const char *s1, size_t n) +{ + char *m; + + m = smiMalloc(n+1); + if (! m) { + smiPrintError(NULL, ERR_OUT_OF_MEMORY); + } + strncpy(m, s1, n); + m[n] = 0; + return m; +} + +void smiFree(void *ptr) +{ + if (ptr) { + free(ptr); + } +} + +#endif + + + +int smiIsPath(const char *s) +{ + return (strchr(s, '.') || strchr(s, DIR_SEPARATOR)); +} + + + +#ifndef HAVE_TIMEGM +time_t timegm(struct tm *tm) +{ + char *tz; + static char *s = NULL; + char *tofree = NULL; + time_t t; + + /* ensure to call mktime() for UTC */ + tz = getenv("TZ"); + if (tz) { + tofree = s; + smiAsprintf(&s, "TZ=%s", tz); + } + putenv("TZ=NULL"); + t = mktime(tm); + if (tz) { + putenv(s); + } else { + putenv("TZ="); + } + if (tofree) smiFree(tofree); + + return t; +} +#endif + + + +int smiTypeDerivedFrom(Type *typePtr, Type *parentTypePtr) +{ + Type *t; + + if ((!typePtr) || (!parentTypePtr)) { + return 0; + } + + for (t = typePtr; t != NULL; t = t->parentPtr) { + if (parentTypePtr == t) { + return 1; + } + } + + return 0; +} diff --git a/lib/util.h b/lib/util.h new file mode 100644 index 0000000..da68a10 --- /dev/null +++ b/lib/util.h @@ -0,0 +1,63 @@ +/* + * util.h -- + * + * Misc utility functions. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: util.h 8062 2008-04-16 14:25:53Z schoenw $ + */ + +#ifndef _UTIL_H +#define _UTIL_H + +#include +#include + +#include "smi.h" +#include "error.h" +#include "parser-smi.h" + + + +#ifdef __CHECKER__ +#undef HAVE_TIMEGM +#undef HAVE_STRTOULL +#undef HAVE_STRTOUQ +#undef HAVE_STRTOLL +#undef HAVE_STRTOQ +#endif + +/* + * Make sure we have strtoull() and strtoll() on this system. + */ + +#ifndef HAVE_STRTOULL +#ifdef HAVE_STRTOUQ +#define strtoull strtouq +#else +#define strtoull strtoul /* TODO */ +#endif +#endif + +#ifndef HAVE_STRTOLL +#ifdef HAVE_STRTOQ +#define strtoll strtoq +#else +#define strtoll strtol +#endif +#endif + +extern int smiIsPath(const char *s); + +#ifndef HAVE_TIMEGM +time_t timegm(struct tm *tm); +#endif + +int smiTypeDerivedFrom(Type *typePtr, Type *parentTypePtr); + +#endif /* _UTIL_H */ + diff --git a/libsmi.m4 b/libsmi.m4 new file mode 100644 index 0000000..29ce719 --- /dev/null +++ b/libsmi.m4 @@ -0,0 +1,38 @@ +# Configure paths for libsmi. + +dnl AM_PATH_LIBSMI() +dnl Test for libsmi and defines the symbol LIBSMI if the test is +dnl successful. Also defines HAVE_LIBSMI_H and adds -llibsmi to the +dnl LIBS variable. +dnl +AC_DEFUN([AM_PATH_LIBSMI], +[ + AC_CHECK_HEADERS(smi.h) + AC_CHECK_LIB(smi, smiInit) + AC_MSG_CHECKING([whether to enable libsmi]) + AC_TRY_RUN([ /* libsmi available check */ +#include +main() +{ + int current, revision, age, n; + const int required = 2; + if (smiInit("")) + exit(1); + if (strcmp(SMI_LIBRARY_VERSION, smi_library_version)) + exit(2); + n = sscanf(smi_library_version, "%d:%d:%d", ¤t, &revision, &age); + if (n != 3) + exit(3); + if (required < current - age || required > current) + exit(4); + exit(0); +} +], + [ AC_MSG_RESULT(yes) + libsmi=yes], + [ AC_MSG_RESULT(no) + libsmi=no], + [ AC_MSG_RESULT(not when cross-compiling) + libsmi=no] + ) +]) diff --git a/libsmi.pc b/libsmi.pc new file mode 100644 index 0000000..73d1069 --- /dev/null +++ b/libsmi.pc @@ -0,0 +1,12 @@ +prefix=/usr/local +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libsmi +Description: SMI parser library +Requires: +Version: 0.4.8 +Libs: -L${libdir} -lsmi +Cflags: -I${includedir} + diff --git a/libsmi.pc.in b/libsmi.pc.in new file mode 100644 index 0000000..dc7f962 --- /dev/null +++ b/libsmi.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libsmi +Description: SMI parser library +Requires: +Version: @VERSION@ +Libs: -L${libdir} -lsmi +Cflags: -I${includedir} + diff --git a/ltmain.sh b/ltmain.sh new file mode 100644 index 0000000..c715b59 --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,6871 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION="1.5.22 Debian 1.5.22-4" +TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + fi + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -pg pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ + -t[45]*|-txscale*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + else + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/mibs/Makefile.am b/mibs/Makefile.am new file mode 100644 index 0000000..1cabeff --- /dev/null +++ b/mibs/Makefile.am @@ -0,0 +1,15 @@ +# +# Makefile.am -- +# +# Template to generate the mibs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1606 2003-12-01 12:24:15Z strauss $ +# + +MIBDIRS = iana ietf irtf tubs site +SUBDIRS = $(MIBDIRS) diff --git a/mibs/Makefile.in b/mibs/Makefile.in new file mode 100644 index 0000000..0122e8a --- /dev/null +++ b/mibs/Makefile.in @@ -0,0 +1,514 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1606 2003-12-01 12:24:15Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +MIBDIRS = iana ietf irtf tubs site +SUBDIRS = $(MIBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/iana/IANA-ADDRESS-FAMILY-NUMBERS-MIB b/mibs/iana/IANA-ADDRESS-FAMILY-NUMBERS-MIB new file mode 100644 index 0000000..f3fcb1e --- /dev/null +++ b/mibs/iana/IANA-ADDRESS-FAMILY-NUMBERS-MIB @@ -0,0 +1,131 @@ + + + IANA-ADDRESS-FAMILY-NUMBERS-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, + mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + ianaAddressFamilyNumbers MODULE-IDENTITY + LAST-UPDATED "200203140000Z" -- March 14, 2002 + ORGANIZATION "IANA" + CONTACT-INFO + "Postal: Internet Assigned Numbers Authority + Internet Corporation for Assigned Names + and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + USA + + Tel: +1 310-823-9358 + E-Mail: iana&iana.org" + DESCRIPTION + "The MIB module defines the AddressFamilyNumbers + textual convention." + + -- revision history + + REVISION "200203140000Z" -- March 14, 2002 + DESCRIPTION "AddressFamilyNumbers assignment 22 to + fibreChannelWWPN. AddressFamilyNumbers + assignment 23 to fibreChannelWWNN. + AddressFamilyNumers assignment 24 to gwid." + + REVISION "200009080000Z" -- September 8, 2000 + DESCRIPTION "AddressFamilyNumbers assignment 19 to xtpOverIpv4. + AddressFamilyNumbers assignment 20 to xtpOverIpv6. + AddressFamilyNumbers assignment 21 to xtpNativeModeXTP." + + REVISION "200003010000Z" -- March 1, 2000 + DESCRIPTION "AddressFamilyNumbers assignment 17 to distinguishedName. + AddressFamilyNumbers assignment 18 to asNumber." + + REVISION "200002040000Z" -- February 4, 2000 + DESCRIPTION "AddressFamilyNumbers assignment 16 to dns." + + REVISION "9908260000Z" -- August 26, 1999 + DESCRIPTION "Initial version, published as RFC 2677." + + ::= { mib-2 72 } + + + AddressFamilyNumbers ::= TEXTUAL-CONVENTION + + STATUS current + DESCRIPTION + "The definition of this textual convention with the + addition of newly assigned values is published + periodically by the IANA, in either the Assigned + Numbers RFC, or some derivative of it specific to + Internet Network Management number assignments. + (The latest arrangements can be obtained by + contacting the IANA.) + + The enumerations are described as: + + other(0), -- none of the following + ipV4(1), -- IP Version 4 + ipV6(2), -- IP Version 6 + nsap(3), -- NSAP + hdlc(4), -- (8-bit multidrop) + bbn1822(5), + all802(6), -- (includes all 802 media + -- plus Ethernet 'canonical format') + e163(7), + e164(8), -- (SMDS, Frame Relay, ATM) + f69(9), -- (Telex) + x121(10), -- (X.25, Frame Relay) + ipx(11), -- IPX (Internet Protocol Exchange) + appleTalk(12), -- Apple Talk + decnetIV(13), -- DEC Net Phase IV + banyanVines(14), -- Banyan Vines + e164withNsap(15), + -- (E.164 with NSAP format subaddress) + dns(16), -- (Domain Name System) + distinguishedName(17), -- (Distinguished Name, per X.500) + asNumber(18), -- (16-bit quantity, per the AS number space) + xtpOverIpv4(19), -- XTP over IP version 4 + xtpOverIpv6(20), -- XTP over IP version 6 + xtpNativeModeXTP(21), -- XTP native mode XTP + fibreChannelWWPN(22), -- Fibre Channel World-Wide Port Name + fibreChannelWWNN(23), -- Fibre Channel World-Wide Node Name + gwid(24), -- Gateway Identifier + afi(25), -- AFI for L2VPN information + reserved(65535) + + + + Requests for new values should be made to IANA via + email (iana&iana.org)." + + SYNTAX INTEGER { + other(0), + ipV4(1), + ipV6(2), + nsap(3), + hdlc(4), + bbn1822(5), + all802(6), + e163(7), + e164(8), + f69(9), + x121(10), + ipx(11), + appleTalk(12), + decnetIV(13), + banyanVines(14), + e164withNsap(15), + dns(16), + distinguishedName(17), -- (Distinguished Name, per X.500) + asNumber(18), -- (16-bit quantity, per the AS number space) + xtpOverIpv4(19), + xtpOverIpv6(20), + xtpNativeModeXTP(21), + fibreChannelWWPN(22), + fibreChannelWWNN(23), + gwid(24), + afi(25), + reserved(65535) + } + END diff --git a/mibs/iana/IANA-CHARSET-MIB b/mibs/iana/IANA-CHARSET-MIB new file mode 100644 index 0000000..499d54e --- /dev/null +++ b/mibs/iana/IANA-CHARSET-MIB @@ -0,0 +1,345 @@ +IANA-CHARSET-MIB DEFINITIONS ::= BEGIN +-- http://www.iana.org/assignments/ianacharset-mib + +IMPORTS + MODULE-IDENTITY, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + +ianaCharsetMIB MODULE-IDENTITY + LAST-UPDATED "200705140000Z" + ORGANIZATION "IANA" + CONTACT-INFO " Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION "This MIB module defines the IANACharset + TEXTUAL-CONVENTION. The IANACharset TC is used to + specify the encoding of string objects defined in + a MIB. + + Each version of this MIB will be released based on + the IANA Charset Registry file (see RFC 2978) at + http://www.iana.org/assignments/character-sets. + + Note: The IANACharset TC, originally defined in + RFC 1759, was inaccurately named CodedCharSet. + + Note: Best practice is to define new MIB string + objects with invariant UTF-8 (RFC 3629) syntax + using the SnmpAdminString TC (defined in RFC 3411) + in accordance with IETF Policy on Character Sets and + Languages (RFC 2277). + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3808; for full legal notices see the RFC + itself. Supplementary information may be + available on + http://www.ietf.org/copyrights/ianamib.html." + + -- revision history + + REVISION "200705140000Z" + DESCRIPTION "Registration of new charset 2107." + + REVISION "200612070000Z" + DESCRIPTION "Registration of new charsets numbered 118, 119, + and 2106." + + REVISION "200406080000Z" + DESCRIPTION "Original version transferred from Printer MIB, + generated from the IANA maintained assignments + http://www.iana.org/assignments/character-sets." + + ::= { mib-2 106 } + +IANACharset ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies an IANA registered 'charset' - coded character set + (CCS) plus optional character encoding scheme (CES) - terms + defined in 'IANA Charset Registration Procedures' (RFC 2978). + + Objects of this syntax are used to specify the encoding for + string objects defined in one or more MIBs. For example, the + prtLocalizationCharacterSet, prtInterpreterDefaultCharSetIn, and + prtInterpreterDefaultCharSetOut objects defined in Printer MIB. + + The current list of 'charset' names and enumerated values + is contained in the IANA Character Set Registry at: + + http://www.iana.org/assignments/character-sets + + Enum names are derived from the IANA Charset Registry 'Alias' + fields that begin with 'cs' (for character set). + Enum values are derived from the parallel 'MIBenum' fields." + SYNTAX INTEGER { + other(1), -- used if the designated + -- character set is not currently + -- registered by IANA + unknown(2), -- used as a default value + csASCII(3), + csISOLatin1(4), + csISOLatin2(5), + csISOLatin3(6), + csISOLatin4(7), + csISOLatinCyrillic(8), + csISOLatinArabic(9), + csISOLatinGreek(10), + csISOLatinHebrew(11), + csISOLatin5(12), + csISOLatin6(13), + csISOTextComm(14), + csHalfWidthKatakana(15), + csJISEncoding(16), + csShiftJIS(17), + csEUCPkdFmtJapanese(18), + csEUCFixWidJapanese(19), + csISO4UnitedKingdom(20), + csISO11SwedishForNames(21), + csISO15Italian(22), + csISO17Spanish(23), + csISO21German(24), + csISO60DanishNorwegian(25), + csISO69French(26), + csISO10646UTF1(27), + csISO646basic1983(28), + csINVARIANT(29), + csISO2IntlRefVersion(30), + csNATSSEFI(31), + csNATSSEFIADD(32), + csNATSDANO(33), + csNATSDANOADD(34), + csISO10Swedish(35), + csKSC56011987(36), + csISO2022KR(37), + csEUCKR(38), + csISO2022JP(39), + csISO2022JP2(40), + csISO13JISC6220jp(41), + csISO14JISC6220ro(42), + csISO16Portuguese(43), + csISO18Greek7Old(44), + csISO19LatinGreek(45), + csISO25French(46), + csISO27LatinGreek1(47), + csISO5427Cyrillic(48), + csISO42JISC62261978(49), + csISO47BSViewdata(50), + csISO49INIS(51), + csISO50INIS8(52), + csISO51INISCyrillic(53), + csISO54271981(54), + csISO5428Greek(55), + csISO57GB1988(56), + csISO58GB231280(57), + csISO61Norwegian2(58), + csISO70VideotexSupp1(59), + csISO84Portuguese2(60), + csISO85Spanish2(61), + csISO86Hungarian(62), + csISO87JISX0208(63), + csISO88Greek7(64), + csISO89ASMO449(65), + csISO90(66), + csISO91JISC62291984a(67), + csISO92JISC62991984b(68), + csISO93JIS62291984badd(69), + csISO94JIS62291984hand(70), + csISO95JIS62291984handadd(71), + csISO96JISC62291984kana(72), + csISO2033(73), + csISO99NAPLPS(74), + csISO102T617bit(75), + csISO103T618bit(76), + csISO111ECMACyrillic(77), + csa71(78), + csa72(79), + csISO123CSAZ24341985gr(80), + csISO88596E(81), + csISO88596I(82), + csISO128T101G2(83), + csISO88598E(84), + csISO88598I(85), + csISO139CSN369103(86), + csISO141JUSIB1002(87), + csISO143IECP271(88), + csISO146Serbian(89), + csISO147Macedonian(90), + csISO150(91), + csISO151Cuba(92), + csISO6937Add(93), + csISO153GOST1976874(94), + csISO8859Supp(95), + csISO10367Box(96), + csISO158Lap(97), + csISO159JISX02121990(98), + csISO646Danish(99), + csUSDK(100), + csDKUS(101), + csKSC5636(102), + csUnicode11UTF7(103), + csISO2022CN(104), + csISO2022CNEXT(105), + csUTF8(106), + csISO885913(109), + csISO885914(110), + csISO885915(111), + csISO885916(112), + csGBK(113), + csGB18030(114), + csOSDEBCDICDF0415(115), + csOSDEBCDICDF03IRV(116), + csOSDEBCDICDF041(117), + csISO115481(118), + csKZ1048(119), + csUnicode(1000), + csUCS4(1001), + csUnicodeASCII(1002), + csUnicodeLatin1(1003), + csUnicodeIBM1261(1005), + csUnicodeIBM1268(1006), + csUnicodeIBM1276(1007), + csUnicodeIBM1264(1008), + csUnicodeIBM1265(1009), + csUnicode11(1010), + csSCSU(1011), + csUTF7(1012), + csUTF16BE(1013), + csUTF16LE(1014), + csUTF16(1015), + csCESU8(1016), + csUTF32(1017), + csUTF32BE(1018), + csUTF32LE(1019), + csBOCU1(1020), + csWindows30Latin1(2000), + csWindows31Latin1(2001), + csWindows31Latin2(2002), + csWindows31Latin5(2003), + csHPRoman8(2004), + csAdobeStandardEncoding(2005), + csVenturaUS(2006), + csVenturaInternational(2007), + csDECMCS(2008), + csPC850Multilingual(2009), + csPCp852(2010), + csPC8CodePage437(2011), + csPC8DanishNorwegian(2012), + csPC862LatinHebrew(2013), + csPC8Turkish(2014), + csIBMSymbols(2015), + csIBMThai(2016), + csHPLegal(2017), + csHPPiFont(2018), + csHPMath8(2019), + csHPPSMath(2020), + csHPDesktop(2021), + csVenturaMath(2022), + csMicrosoftPublishing(2023), + csWindows31J(2024), + csGB2312(2025), + csBig5(2026), + csMacintosh(2027), + csIBM037(2028), + csIBM038(2029), + csIBM273(2030), + csIBM274(2031), + csIBM275(2032), + csIBM277(2033), + csIBM278(2034), + csIBM280(2035), + csIBM281(2036), + csIBM284(2037), + csIBM285(2038), + csIBM290(2039), + csIBM297(2040), + csIBM420(2041), + csIBM423(2042), + csIBM424(2043), + csIBM500(2044), + csIBM851(2045), + csIBM855(2046), + csIBM857(2047), + csIBM860(2048), + csIBM861(2049), + csIBM863(2050), + csIBM864(2051), + csIBM865(2052), + csIBM868(2053), + csIBM869(2054), + csIBM870(2055), + csIBM871(2056), + csIBM880(2057), + csIBM891(2058), + csIBM903(2059), + csIBBM904(2060), + csIBM905(2061), + csIBM918(2062), + csIBM1026(2063), + csIBMEBCDICATDE(2064), + csEBCDICATDEA(2065), + csEBCDICCAFR(2066), + csEBCDICDKNO(2067), + csEBCDICDKNOA(2068), + csEBCDICFISE(2069), + csEBCDICFISEA(2070), + csEBCDICFR(2071), + csEBCDICIT(2072), + csEBCDICPT(2073), + csEBCDICES(2074), + csEBCDICESA(2075), + csEBCDICESS(2076), + csEBCDICUK(2077), + csEBCDICUS(2078), + csUnknown8BiT(2079), + csMnemonic(2080), + csMnem(2081), + csVISCII(2082), + csVIQR(2083), + csKOI8R(2084), + csHZGB2312(2085), + csIBM866(2086), + csPC775Baltic(2087), + csKOI8U(2088), + csIBM00858(2089), + csIBM00924(2090), + csIBM01140(2091), + csIBM01141(2092), + csIBM01142(2093), + csIBM01143(2094), + csIBM01144(2095), + csIBM01145(2096), + csIBM01146(2097), + csIBM01147(2098), + csIBM01148(2099), + csIBM01149(2100), + csBig5HKSCS(2101), + csIBM1047(2102), + csPTCP154(2103), + csAmiga1251(2104), + csKOI7switched(2105), + csBRF(2106), + csTSCII(2107), + cswindows1250(2250), + cswindows1251(2251), + cswindows1252(2252), + cswindows1253(2253), + cswindows1254(2254), + cswindows1255(2255), + cswindows1256(2256), + cswindows1257(2257), + cswindows1258(2258), + csTIS620(2259), + reserved(3000) + } +END + diff --git a/mibs/iana/IANA-FINISHER-MIB b/mibs/iana/IANA-FINISHER-MIB new file mode 100644 index 0000000..feda6be --- /dev/null +++ b/mibs/iana/IANA-FINISHER-MIB @@ -0,0 +1,283 @@ +IANA-FINISHER-MIB DEFINITIONS ::= BEGIN + -- http://www.iana.org/assignments/ianafinisher-mib + +IMPORTS + MODULE-IDENTITY, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + +ianafinisherMIB MODULE-IDENTITY + LAST-UPDATED "200406020000Z" -- June 2, 2004 + ORGANIZATION "IANA" + CONTACT-INFO "Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION "This MIB module defines a set of finishing-related + TEXTUAL-CONVENTIONs for use in Finisher MIB (RFC 3806) + and other MIBs which need to specify finishing + mechanism details. + + Any additions or changes to the contents of this MIB + module require either publication of an RFC, or + Designated Expert Review as defined in RFC 2434, + Guidelines for Writing an IANA Considerations Section + in RFCs. The Designated Expert will be selected by + the IESG Area Director(s) of the Applications Area. + + Copyright (C) The Internet Society (2004). The + + initial version of this MIB module was published + in RFC 3806. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200406020000Z" -- June 2, 2004 + DESCRIPTION "Original version, published in coordination + with Finisher MIB (RFC 3806)." + + ::= { mib-2 110 } + +-- TEXTUAL-CONVENTIONs for this MIB module + +FinDeviceTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined finishing device subunit process + enumerations." + SYNTAX INTEGER { + other(1), + unknown(2), + stitcher(3), + folder(4), + binder(5), + trimmer(6), + dieCutter(7), + puncher(8), + perforater(9), + slitter(10), + separationCutter(11), + imprinter(12), + wrapper(13), + bander(14), + makeEnvelope(15), + stacker(16), + sheetRotator(17), + inserter(18) + } + +FinAttributeTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION defines the set of enums for use in + the finDeviceAttributeTable. See section 5.7 for the complete + specification of each attribute." + SYNTAX INTEGER { + other(1), + deviceName(3), + + deviceVendorName(4), + deviceModel(5), + deviceVersion(6), + deviceSerialNumber(7), + maximumSheets(8), + finProcessOffsetUnits(9), + finReferenceEdge(10), + finAxisOffset(11), + finJogEdge(12), + finHeadLocation(13), + finOperationRestrictions(14), + finNumberOfPositions(15), + namedConfiguration(16), + finMediaTypeRestriction(17), + finPrinterInputTraySupported(18), + finPreviousFinishingOperation(19), + finNextFinishingOperation(20), + stitchingType(30), + stitchingDirection(31), + foldingType(40), + bindingType(50), + punchHoleType(80), + punchHoleSizeLongDim(81), + punchHoleSizeShortDim(82), + punchPattern(83), + slittingType(100), + wrappingType(130), + stackOutputType(160), + stackOffset(161), + stackRotation(162) + } + +FinEdgeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies an edge for a Finishing Process." + SYNTAX INTEGER { + topEdge(3), + bottomEdge(4), + leftEdge(5), + rightEdge(6) + } + +FinStitchingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined stitching type enumerations. For the edgeStitch and + stapleDual enums, the finReferenceEdge attribute is recommended + + to define the edge to which the operation applies." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + stapleTopLeft(4), + stapleBottomLeft(5), + stapleTopRight(6), + stapleBottomRight(7), + saddleStitch(8), + edgeStitch(9), + stapleDual(10) + } + +FinStitchingDirTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Defines the direction, relative to the top sheet in the output + subunit, that the stitching operation was performed. For a + topDown(3) process, the staple will be clinched on the bottom + of the stack. This parameter can be used to determine what + order the pages of a booklet are to be printed such that the + staple clinch will be on the inside of the resulting booklet." + SYNTAX INTEGER { + unknown(2), + topDown(3), + bottomUp(4) + } + +FinStitchingAngleTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This enumeration provides a description of the angular + orientation of each stitch in a single or multiple stitching + operation, relative to the 'X' axis. As with all finishing + operations, the 'X' axis is always relative to the portrait + orientation of the document regardless of the orientation + of the printed image. This enum is primarily applicable to + corner stitching operations." + SYNTAX INTEGER { + unknown(2), + horizontal(3), + vertical(4), + slanted(5) + } + +FinFoldingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + "The defined folding device process enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + zFold(3), + halfFold(4), + letterFold(5) + } + +FinBindingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined binding type enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + tape(4), + plastic(5), + velo(6), + perfect(7), + spiral(8), + adhesive(9), + comb(10), + padding(11) + } + +FinPunchHoleTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined hole type punch process enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + round(3), + oblong(4), + square(5), + rectangular(6), + star(7) + } + +FinPunchPatternTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined hole pattern punch process enumerations." + SYNTAX INTEGER { + other(1), --Pattern to be defined in other attributes + unknown(2), + twoHoleUSTop(4), --Letter/legal, 8.5 inch edge + + threeHoleUS(5), --Letter/ledger, 11 inch edge + twoHoleDIN(6), --A4/A3, 297 mm edge + fourHoleDIN(7), --A4/A3, 297 mm edge + twentyTwoHoleUS(8), --Letter/ledger, 11 inch edge + nineteenHoleUS(9), --Letter/ledger, 11 inch edge + twoHoleMetric(10), --B5/B4, 257 mm edge + swedish4Hole(11), --A4/A3, 297 mm edge + twoHoleUSSide(12), --Letter/ledger, 11 inch edge + fiveHoleUS(13), --Letter/ledger, 11 inch edge + sevenHoleUS(14), --Letter/ledger, 11 inch edge + mixed7H4S(15), --A4/A3, 297 mm edge + norweg6Hole(16), --A4/A3, 297 mm edge + metric26Hole(17), --B5/B4, 257 mm edge + metric30Hole(18) --A4/A3, 297 mm edge + } + +FinSlittingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined slitting type enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + slitAndSeparate(4), + slitAndMerge(5) + } + +FinWrappingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined wrapping device process enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + shrinkWrap(4), + paperWrap(5) + } + +FinStackOutputTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The defined stack output type enumerations." + SYNTAX INTEGER { + other(1), -- More information in other attributes + unknown(2), + straight(4), -- No offset, one on top of another + offset(5), + crissCross(6) -- Rotated + + } +END diff --git a/mibs/iana/IANA-GMPLS-TC-MIB b/mibs/iana/IANA-GMPLS-TC-MIB new file mode 100644 index 0000000..31bf3a0 --- /dev/null +++ b/mibs/iana/IANA-GMPLS-TC-MIB @@ -0,0 +1,292 @@ + +IANA-GMPLS-TC-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI -- RFC 2578 + TEXTUAL-CONVENTION FROM SNMPv2-TC; -- RFC 2579 + + ianaGmpls MODULE-IDENTITY + LAST-UPDATED + "200702270000Z" -- 27 February 2007 00:00:00 GMT + ORGANIZATION + "IANA" + CONTACT-INFO + "Internet Assigned Numbers Authority + Postal: 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + DESCRIPTION + "Copyright (C) The IETF Trust (2007). The initial version + of this MIB module was published in RFC 4802. For full legal + notices see the RFC itself. Supplementary information + may be available on: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION + "200702270000Z" -- 27 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version issued as part of RFC 4802." + + ::= { mib-2 152 } + + IANAGmplsLSPEncodingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This type is used to represent and control + the LSP encoding type of an LSP signaled by a GMPLS + signaling protocol. + + This textual convention is strongly tied to the LSP + Encoding Types sub-registry of the GMPLS Signaling + Parameters registry managed by IANA. Values should be + assigned by IANA in step with the LSP Encoding Types + sub-registry and using the same registry management rules. + However, the actual values used in this textual convention + are solely within the purview of IANA and do not + necessarily match the values in the LSP Encoding Types + sub-registry. + + The definition of this textual convention with the + addition of newly assigned values is published + periodically by the IANA, in either the Assigned + Numbers RFC, or some derivative of it specific to + Internet Network Management number assignments. (The + latest arrangements can be obtained by contacting the + IANA.) + + Requests for new values should be made to IANA via + email (iana&iana.org)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471, section + 3.1.1. + 2. Generalized MPLS Signalling Extensions for G.709 Optical + Transport Networks Control, RFC 4328, section 3.1.1." + SYNTAX INTEGER { + tunnelLspNotGmpls(0), -- GMPLS is not in use + tunnelLspPacket(1), -- Packet + tunnelLspEthernet(2), -- Ethernet + tunnelLspAnsiEtsiPdh(3), -- PDH + -- the value 4 is deprecated + tunnelLspSdhSonet(5), -- SDH or SONET + -- the value 6 is deprecated + tunnelLspDigitalWrapper(7), -- Digital Wrapper + tunnelLspLambda(8), -- Lambda + tunnelLspFiber(9), -- Fiber + -- the value 10 is deprecated + tunnelLspFiberChannel(11), -- Fiber Channel + + tunnelDigitalPath(12), -- Digital Path + tunnelOpticalChannel(13) -- Optical Channel + } + + IANAGmplsSwitchingTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This type is used to represent and + control the LSP switching type of an LSP signaled by a + GMPLS signaling protocol. + + This textual convention is strongly tied to the Switching + Types sub-registry of the GMPLS Signaling Parameters + registry managed by IANA. Values should be assigned by + IANA in step with the Switching Types sub-registry and + using the same registry management rules. However, the + actual values used in this textual convention are solely + within the purview of IANA and do not necessarily match + the values in the Switching Types sub-registry. + + The definition of this textual convention with the + addition of newly assigned values is published + periodically by the IANA, in either the Assigned + Numbers RFC, or some derivative of it specific to + Internet Network Management number assignments. (The + latest arrangements can be obtained by contacting the + IANA.) + + Requests for new values should be made to IANA via + email (iana&iana.org)." + REFERENCE + "1. Routing Extensions in Support of Generalized + Multi-Protocol Label Switching, RFC 4202, section 2.4. + 2. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471, section + 3.1.1." + SYNTAX INTEGER { + unknown(0), -- none of the following, or not known + psc1(1), -- Packet-Switch-Capable 1 + psc2(2), -- Packet-Switch-Capable 2 + psc3(3), -- Packet-Switch-Capable 3 + psc4(4), -- Packet-Switch-Capable 4 + l2sc(51), -- Layer-2-Switch-Capable + tdm(100), -- Time-Division-Multiplex + lsc(150), -- Lambda-Switch-Capable + fsc(200) -- Fiber-Switch-Capable + } + + IANAGmplsGeneralizedPidTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to represent and control the LSP + Generalized Protocol Identifier (G-PID) of an LSP + signaled by a GMPLS signaling protocol. + + This textual convention is strongly tied to the Generalized + PIDs (G-PID) sub-registry of the GMPLS Signaling Parameters + registry managed by IANA. Values should be assigned by + IANA in step with the Generalized PIDs (G-PID) sub-registry + and using the same registry management rules. However, the + actual values used in this textual convention are solely + within the purview of IANA and do not necessarily match the + values in the Generalized PIDs (G-PID) sub-registry. + + The definition of this textual convention with the + addition of newly assigned values is published + periodically by the IANA, in either the Assigned + Numbers RFC, or some derivative of it specific to + Internet Network Management number assignments. (The + latest arrangements can be obtained by contacting the + IANA.) + + Requests for new values should be made to IANA via + email (iana&iana.org)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471, section + 3.1.1. + 2. Generalized MPLS Signalling Extensions for G.709 Optical + Transport Networks Control, RFC 4328, section 3.1.3." + SYNTAX INTEGER { + unknown(0), -- unknown or none of the following + -- the values 1, 2, 3 and 4 are reserved in RFC 3471 + asynchE4(5), + asynchDS3T3(6), + asynchE3(7), + bitsynchE3(8), + bytesynchE3(9), + asynchDS2T2(10), + bitsynchDS2T2(11), + reservedByRFC3471first(12), + asynchE1(13), + bytesynchE1(14), + bytesynch31ByDS0(15), + asynchDS1T1(16), + bitsynchDS1T1(17), + + bytesynchDS1T1(18), + vc1vc12(19), + reservedByRFC3471second(20), + reservedByRFC3471third(21), + ds1SFAsynch(22), + ds1ESFAsynch(23), + ds3M23Asynch(24), + ds3CBitParityAsynch(25), + vtLovc(26), + stsSpeHovc(27), + posNoScramble16BitCrc(28), + posNoScramble32BitCrc(29), + posScramble16BitCrc(30), + posScramble32BitCrc(31), + atm(32), + ethernet(33), + sdhSonet(34), + digitalwrapper(36), + lambda(37), + ansiEtsiPdh(38), + lapsSdh(40), + fddi(41), + dqdb(42), + fiberChannel3(43), + hdlc(44), + ethernetV2DixOnly(45), + ethernet802dot3Only(46), + g709ODUj(47), + g709OTUk(48), + g709CBRorCBRa(49), + g709CBRb(50), + g709BSOT(51), + g709BSNT(52), + gfpIPorPPP(53), + gfpEthernetMAC(54), + gfpEthernetPHY(55), + g709ESCON(56), + g709FICON(57), + g709FiberChannel(58) + } + + IANAGmplsAdminStatusInformationTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type determines the setting of the + Admin Status flags in the Admin Status object or TLV, as + described in RFC 3471. Setting this object to a non-zero + value will result in the inclusion of the Admin Status + + object or TLV on signaling messages. + + This textual convention is strongly tied to the + Administrative Status Information Flags sub-registry of + the GMPLS Signaling Parameters registry managed by IANA. + Values should be assigned by IANA in step with the + Administrative Status Flags sub-registry and using the + same registry management rules. However, the actual + values used in this textual convention are solely + within the purview of IANA and do not necessarily match + the values in the Administrative Status Information + Flags sub-registry. + + The definition of this textual convention with the + addition of newly assigned values is published + periodically by the IANA, in either the Assigned + Numbers RFC, or some derivative of it specific to + Internet Network Management number assignments. (The + latest arrangements can be obtained by contacting the + IANA.) + + Requests for new values should be made to IANA via + email (iana&iana.org)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471, section 8. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, + RFC 3473, section 7. + 3. GMPLS - Communication of Alarm Information, + RFC 4783, section 3.2.1." + SYNTAX BITS { + reflect(0), -- Reflect bit (RFC 3471) + reserved1(1), -- reserved + reserved2(2), -- reserved + reserved3(3), -- reserved + reserved4(4), -- reserved + reserved5(5), -- reserved + reserved6(6), -- reserved + reserved7(7), -- reserved + reserved8(8), -- reserved + reserved9(9), -- reserved + reserved10(10), -- reserved + reserved11(11), -- reserved + reserved12(12), -- reserved + reserved13(13), -- reserved + reserved14(14), -- reserved + reserved15(15), -- reserved + reserved16(16), -- reserved + + reserved17(17), -- reserved + reserved18(18), -- reserved + reserved19(19), -- reserved + reserved20(20), -- reserved + reserved21(21), -- reserved + reserved22(22), -- reserved + reserved23(23), -- reserved + reserved24(24), -- reserved + reserved25(25), -- reserved + reserved26(26), -- reserved + reserved27(27), -- Inhibit Alarm bit (RFC 4783) + reserved28(28), -- reserved + testing(29), -- Testing bit (RFC 3473) + administrativelyDown(30), -- Admin down (RFC 3473) + deleteInProgress(31) -- Delete bit (RFC 3473) + } +END + diff --git a/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB b/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB new file mode 100644 index 0000000..ea85137 --- /dev/null +++ b/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB @@ -0,0 +1,448 @@ +IANA-IPPM-METRICS-REGISTRY-MIB DEFINITIONS ::= BEGIN + + IMPORTS + OBJECT-IDENTITY, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI; + + ianaIppmMetricsRegistry MODULE-IDENTITY + LAST-UPDATED "200612040000Z" -- December 04, 2006 + ORGANIZATION "IANA" + CONTACT-INFO "Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION + + "This module defines a registry for IP Performance Metrics. + + Registrations are done sequentially by IANA in the ianaIppmMetrics + subtree on the bases of 'Specification Required' as defined in + [RFC2434]. + + The reference of the specification must point to a stable document + including a title, a revision and a date. + + The name always starts with the name of the organization and must + respect the SMIv2 rules for descriptors defined in the section 3.1 + of [RFC2578]; + + A document that creates new metrics would have an IANA + considerations section in which it would describe new metrics to + register. + + An OBJECT IDENTITY assigned to a metric is definitive and cannot + be reused. If a new version of a metric is produced then it is + assigned with a new name and a new identifier. + + Copyright (C) The Internet Society (2005). The initial version of + this MIB module was published in RFC 4148; for full legal notices + see the RFC itself or see: + http://www.ietf.org/copyrights/ianamib.html. " + + REVISION "200612040000Z" -- September 27, 2006 + DESCRIPTION + "Added values 34-45 as published in RFC4737." + + + REVISION "200504120000Z" -- April 12th, 2005 + DESCRIPTION + "Initial version of the IPPM metrics registry module. + This version published as RFC 4148." + ::= { mib-2 128 } + + ianaIppmMetrics OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Registration point for IP Performance Metrics." + ::= { ianaIppmMetricsRegistry 1 } + + -- + -- Registry of the metrics of the IPPM WG RFCs + -- + + -- + -- RFC 2678 " IPPM Metrics for Measuring Connectivity" + -- + + ietfInstantUnidirConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Instantaneous-Unidirectional-Connectivity" + REFERENCE "RFC2678, section 2." + ::= { ianaIppmMetrics 1} + + ietfInstantBidirConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Instantaneous-Bidirectional-Connectivity" + REFERENCE "RFC2678, section 3." + ::= { ianaIppmMetrics 2} + + ietfIntervalUnidirConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Interval-Unidirectional-Connectivity" + REFERENCE "RFC2678, section 4." + ::= { ianaIppmMetrics 3 } + + ietfIntervalBidirConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Interval-Bidirectional-Connectivity" + REFERENCE "RFC2678, section 5." + ::= { ianaIppmMetrics 4 } + + ietfIntervalTemporalConnectivity OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P1-P2-Interval-Temporal-Connectivity" + REFERENCE "RFC2678, section 6." + ::= { ianaIppmMetrics 5 } + + + + + -- + -- RFC 2679 "A One-way Delay Metric for IPPM" + -- + + ietfOneWayDelay OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay" + REFERENCE "RFC2679, section 3." + ::= { ianaIppmMetrics 6 } + + ietfOneWayDelayPoissonStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Poisson-Stream" + REFERENCE "RFC2679, section 4." + ::= { ianaIppmMetrics 7 } + + ietfOneWayDelayPercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Percentile" + REFERENCE "RFC2679, section 5.1." + ::= { ianaIppmMetrics 8 } + + ietfOneWayDelayMedian OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Median" + REFERENCE "RFC2679, section 5.2." + ::= { ianaIppmMetrics 9 } + + ietfOneWayDelayMinimum OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Minimum" + REFERENCE "RFC2679, section 5.3." + ::= { ianaIppmMetrics 10 } + + ietfOneWayDelayInversePercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Inverse-Percentile" + REFERENCE "RFC2679, section 5.4." + ::= { ianaIppmMetrics 11 } + + -- + -- RFC 2680 "One Way Packet Loss Metric for IPPM" + -- + + ietfOneWayPktLoss OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Packet-Loss" + REFERENCE "RFC2680, section 2." + ::= { ianaIppmMetrics 12 } + + ietfOneWayPktLossPoissonStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Packet-Loss-Poisson-Stream" + REFERENCE "RFC2680, section 3." + ::= { ianaIppmMetrics 13 } + + ietfOneWayPktLossAverage OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Packet-Loss-Average" + REFERENCE "RFC2680, section 4." + ::= { ianaIppmMetrics 14 } + + + + + -- + -- RFC2681 "A Round-trip Delay Metric for IPPM" + -- + + ietfRoundTripDelay OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay" + REFERENCE " section 2 of the rfc2681." + ::= { ianaIppmMetrics 15 } + + ietfRoundTripDelayPoissonStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay-Poisson-Stream" + REFERENCE "RFC2681, section 4." + ::= { ianaIppmMetrics 16 } + + ietfRoundTripDelayPercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay-Percentile" + REFERENCE "RFC2681, section 4.1." + ::= { ianaIppmMetrics 17 } + + ietfRoundTripDelayMedian OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay-Median" + REFERENCE "RFC2681, section 4.2." + ::= { ianaIppmMetrics 18 } + + ietfRoundTripDelayMinimum OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Delay-Minimum" + REFERENCE "RFC2681, section 4.3." + ::= { ianaIppmMetrics 19 } + + ietfRoundTripDelayInvPercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Round-trip-Inverse-Percentile" + REFERENCE "RFC2681, section 4.4." + ::= { ianaIppmMetrics 20 } + + + + + -- + -- RFC3357: "One-way Loss Pattern Sample Metrics" + -- + + ietfOneWayLossDistanceStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Distance-Stream" + REFERENCE " RFC3357, section 5.4.1." + ::={ ianaIppmMetrics 21} + + ietfOneWayLossPeriodStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Period-Stream" + REFERENCE " RFC3357, section 5.4.2." + ::={ ianaIppmMetrics 22} + + ietfOneWayLossNoticeableRate OBJECT-IDENTITY + + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Noticeable-Rate" + REFERENCE " RFC3357, section 6.1." + ::= { ianaIppmMetrics 23 } + + ietfOneWayLossPeriodTotal OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Period-Total" + REFERENCE " RFC3357, section 6.2." + ::= { ianaIppmMetrics 24 } + + ietfOneWayLossPeriodLengths OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Loss-Period-Lengths" + REFERENCE " RFC3357, section 6.3." + ::= { ianaIppmMetrics 25 } + + ietfOneWayInterLossPeriodLengths OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-Way-Inter-Loss-Period-Lengths" + REFERENCE " RFC3357, section 6.4." + ::= { ianaIppmMetrics 26 } + + + + + -- + -- RFC3393: + -- IP Packet Delay Variation Metric for IP Performance Metrics (IPPM) + + ietfOneWayIpdv OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv" + REFERENCE " RFC3393, section 2." + ::= { ianaIppmMetrics 27 } + + ietfOneWayIpdvPoissonStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv-Poisson-stream" + REFERENCE " RFC3393, section 3." + ::= { ianaIppmMetrics 28 } + + ietfOneWayIpdvPercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv-percentile" + REFERENCE " RFC3393, section 4.3." + ::= { ianaIppmMetrics 29 } + + ietfOneWayIpdvInversePercentile OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv-inverse-percentile" + REFERENCE " RFC3393, section 4.4." + ::= { ianaIppmMetrics 30 } + + ietfOneWayIpdvJitter OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-ipdv-jitter" + REFERENCE " RFC3393, section 4.5." + ::= { ianaIppmMetrics 31 } + + ietfOneWayPeakToPeakIpdv OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-peak-to-peak-ipdv" + REFERENCE " RFC3393, section 4.6." + ::= { ianaIppmMetrics 32 } + + + + -- + -- RFC3432: "Network performance measurement with periodic streams" + -- + + ietfOneWayDelayPeriodicStream OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-One-way-Delay-Periodic-Stream" + REFERENCE " RFC3432, section 4." + ::= { ianaIppmMetrics 33 } + + + + -- + -- RFC4737 "Packet Reordering Metric for IPPM" + -- + + ietfReorderedSingleton OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Reordered" + REFERENCE + "Reference RFC4737, section 3" + ::= { ianaIppmMetrics 34 } + + ietfReorderedPacketRatio OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Reordered-Ratio-Stream" + REFERENCE + "Reference RFC4737, section 4.1" + ::= { ianaIppmMetrics 35 } + + ietfReorderingExtent OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Extent-Stream" + REFERENCE + "Reference RFC4737, section 4.2" + ::= { ianaIppmMetrics 36 } + + ietfReorderingLateTimeOffset OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Late-Time-Stream" + REFERENCE + "Reference RFC4737, section 4.3" + ::= { ianaIppmMetrics 37 } + + ietfReorderingByteOffset OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Byte-Offset-Stream" + REFERENCE + "Reference RFC4737, section 4.4" + ::= { ianaIppmMetrics 38 } + + ietfReorderingGap OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Gap-Stream" + REFERENCE + "Reference RFC4737, section 4.5" + ::= { ianaIppmMetrics 39 } + + ietfReorderingGapTime OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-GapTime-Stream" + REFERENCE + "Reference RFC4737, section 4.5" + ::= { ianaIppmMetrics 40 } + + ietfReorderingFreeRunx OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Free-Run-x-numruns-Stream" + REFERENCE + "Reference RFC4737, section 4.6" + ::= { ianaIppmMetrics 41 } + + ietfReorderingFreeRunq OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Free-Run-q-squruns-Stream" + REFERENCE + "Reference RFC4737, section 4.6" + ::= { ianaIppmMetrics 42 } + + ietfReorderingFreeRunp OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Free-Run-p-numpkts-Stream" + REFERENCE + "Reference RFC4737, section 4.6" + ::= { ianaIppmMetrics 43 } + + ietfReorderingFreeRuna OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-Reordering-Free-Run-a-accpkts-Stream" + REFERENCE + "Reference RFC4737, section 4.6" + ::= { ianaIppmMetrics 44 } + + ietfnReordering OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Type-P-Packet-n-Reordering-Stream" + REFERENCE + "Reference RFC4737, section 5" + ::= { ianaIppmMetrics 45 } + + + END + + + diff --git a/mibs/iana/IANA-ITU-ALARM-TC-MIB b/mibs/iana/IANA-ITU-ALARM-TC-MIB new file mode 100644 index 0000000..7c0da3e --- /dev/null +++ b/mibs/iana/IANA-ITU-ALARM-TC-MIB @@ -0,0 +1,333 @@ +IANA-ITU-ALARM-TC-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + ianaItuAlarmNumbers MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IANA" + CONTACT-INFO + "Postal: Internet Assigned Numbers Authority + Internet Corporation for Assigned Names + and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + USA + + Tel: +1 310-823-9358 + E-Mail: iana&iana.org" + DESCRIPTION + "The MIB module defines the ITU Alarm + textual convention for objects expected to require + regular extension. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" + DESCRIPTION + "Initial version, published as RFC 3877." + ::= { mib-2 119 } + + + IANAItuProbableCause ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ITU-T probable cause values. Duplicate values defined in + X.733 are appended with X733 to ensure syntactic uniqueness. + Probable cause value 0 is reserved for special purposes. + + The Internet Assigned Number Authority (IANA) is responsible + for the assignment of the enumerations in this TC. + IANAItuProbableCause value of 0 is reserved for special + purposes and MUST NOT be assigned. + + Values of IANAItuProbableCause in the range 1 to 1023 are + reserved for causes that correspond to ITU-T probable cause. + + All other requests for new causes will be handled on a + first-come, first served basis and will be assigned + enumeration values starting with 1025. + + Request should come in the form of well-formed + SMI [RFC2578] for enumeration names that are unique and + sufficiently descriptive. + + While some effort will be taken to ensure that new probable + causes do not conceptually duplicate existing probable + causes it is acknowledged that the existence of conceptual + duplicates in the starting probable cause list is an known + industry reality. + + To aid IANA in the administration of probable cause names + and values, the OPS Area Director will appoint one or more + experts to help review requests. + + See http://www.iana.org" + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992 + ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + + SYNTAX INTEGER + { + -- The following probable causes were defined in M.3100 + aIS (1), + callSetUpFailure (2), + degradedSignal (3), + farEndReceiverFailure (4), + framingError (5), + lossOfFrame (6), + lossOfPointer (7), + lossOfSignal (8), + payloadTypeMismatch (9), + transmissionError (10), + remoteAlarmInterface (11), + excessiveBER (12), + pathTraceMismatch (13), + unavailable (14), + signalLabelMismatch (15), + lossOfMultiFrame (16), + receiveFailure (17), + transmitFailure (18), + modulationFailure (19), + demodulationFailure (20), + broadcastChannelFailure (21), + connectionEstablishmentError (22), + invalidMessageReceived (23), + localNodeTransmissionError (24), + remoteNodeTransmissionError (25), + routingFailure (26), + --Values 27-50 are reserved for communications alarm related + --probable causes + -- The following are used with equipment alarm. + backplaneFailure (51), + dataSetProblem (52), + equipmentIdentifierDuplication (53), + externalIFDeviceProblem (54), + lineCardProblem (55), + multiplexerProblem (56), + nEIdentifierDuplication (57), + powerProblem (58), + processorProblem (59), + protectionPathFailure (60), + receiverFailure (61), + replaceableUnitMissing (62), + replaceableUnitTypeMismatch (63), + synchronizationSourceMismatch (64), + terminalProblem (65), + timingProblem (66), + transmitterFailure (67), + trunkCardProblem (68), + replaceableUnitProblem (69), + realTimeClockFailure (70), + --An equipment alarm to be issued if the system detects that the + --real time clock has failed + antennaFailure (71), + batteryChargingFailure (72), + diskFailure (73), + frequencyHoppingFailure (74), + iODeviceError (75), + lossOfSynchronisation (76), + lossOfRedundancy (77), + powerSupplyFailure (78), + signalQualityEvaluationFailure (79), + tranceiverFailure (80), + protectionMechanismFailure (81), + protectingResourceFailure (82), + -- Values 83-100 are reserved for equipment alarm related probable + -- causes + -- The following are used with environmental alarm. + airCompressorFailure (101), + airConditioningFailure (102), + airDryerFailure (103), + batteryDischarging (104), + batteryFailure (105), + commercialPowerFailure (106), + coolingFanFailure (107), + engineFailure (108), + fireDetectorFailure (109), + fuseFailure (110), + generatorFailure (111), + lowBatteryThreshold (112), + pumpFailure (113), + rectifierFailure (114), + rectifierHighVoltage (115), + rectifierLowFVoltage (116), + ventilationsSystemFailure (117), + enclosureDoorOpen (118), + explosiveGas (119), + fire (120), + flood (121), + highHumidity (122), + highTemperature (123), + highWind (124), + iceBuildUp (125), + intrusionDetection (126), + lowFuel (127), + lowHumidity (128), + lowCablePressure (129), + lowTemperatue (130), + lowWater (131), + smoke (132), + toxicGas (133), + coolingSystemFailure (134), + externalEquipmentFailure (135), + externalPointFailure (136), + -- Values 137-150 are reserved for environmental alarm related + -- probable causes + -- The following are used with Processing error alarm. + storageCapacityProblem (151), + memoryMismatch (152), + corruptData (153), + outOfCPUCycles (154), + sfwrEnvironmentProblem (155), + sfwrDownloadFailure (156), + lossOfRealTimel (157), + --A processing error alarm to be issued after the system has + --reinitialised. This will indicate + --to the management systems that the view they have of the managed + --system may no longer + --be valid. Usage example: The managed + --system issues this alarm after a reinitialization with severity + --warning to inform the + --management system about the event. No clearing notification will + --be sent. + applicationSubsystemFailure (158), + configurationOrCustomisationError (159), + databaseInconsistency (160), + fileError (161), + outOfMemory (162), + softwareError (163), + timeoutExpired (164), + underlayingResourceUnavailable (165), + versionMismatch (166), + --Values 168-200 are reserved for processing error alarm related + -- probable causes. + bandwidthReduced (201), + congestion (202), + excessiveErrorRate (203), + excessiveResponseTime (204), + excessiveRetransmissionRate (205), + reducedLoggingCapability (206), + systemResourcesOverload (207 ), + -- The following were defined X.733 + adapterError (500), + applicationSubsystemFailture (501), + bandwidthReducedX733 (502), + callEstablishmentError (503), + communicationsProtocolError (504), + communicationsSubsystemFailure (505), + configurationOrCustomizationError (506), + congestionX733 (507), + coruptData (508), + cpuCyclesLimitExceeded (509), + dataSetOrModemError (510), + degradedSignalX733 (511), + dteDceInterfaceError (512), + enclosureDoorOpenX733 (513), + equipmentMalfunction (514), + excessiveVibration (515), + fileErrorX733 (516), + fireDetected (517), + framingErrorX733 (518), + heatingVentCoolingSystemProblem (519), + humidityUnacceptable (520), + inputOutputDeviceError (521), + inputDeviceError (522), + lanError (523), + leakDetected (524), + localNodeTransmissionErrorX733 (525), + lossOfFrameX733 (526), + lossOfSignalX733 (527), + materialSupplyExhausted (528), + multiplexerProblemX733 (529), + outOfMemoryX733 (530), + ouputDeviceError (531), + performanceDegraded (532), + powerProblems (533), + pressureUnacceptable (534), + processorProblems (535), + pumpFailureX733 (536), + queueSizeExceeded (537), + receiveFailureX733 (538), + receiverFailureX733 (539), + remoteNodeTransmissionErrorX733 (540), + resourceAtOrNearingCapacity (541), + responseTimeExecessive (542), + retransmissionRateExcessive (543), + softwareErrorX733 (544), + softwareProgramAbnormallyTerminated (545), + softwareProgramError (546), + storageCapacityProblemX733 (547), + temperatureUnacceptable (548), + thresholdCrossed (549), + timingProblemX733 (550), + toxicLeakDetected (551), + transmitFailureX733 (552), + transmiterFailure (553), + underlyingResourceUnavailable (554), + versionMismatchX733 (555), + -- The following are defined in X.736 + authenticationFailure (600), + breachOfConfidentiality (601), + cableTamper (602), + delayedInformation (603), + denialOfService (604), + duplicateInformation (605), + informationMissing (606), + informationModificationDetected (607), + informationOutOfSequence (608), + keyExpired (609), + nonRepudiationFailure (610), + outOfHoursActivity (611), + outOfService (612), + proceduralError (613), + unauthorizedAccessAttempt (614), + unexpectedInformation (615), + + other (1024) + } + + IANAItuEventType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ITU event Type values. + + The Internet Assigned Number Authority (IANA) is + responsible for the assignment of the enumerations + in this TC. + + Request should come in the form of well-formed + SMI [RFC2578] for enumeration names that are unique + and sufficiently descriptive. + + See http://www.iana.org " + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + SYNTAX INTEGER + { + other (1), + communicationsAlarm (2), + qualityOfServiceAlarm (3), + processingErrorAlarm (4), + equipmentAlarm (5), + environmentalAlarm (6), + integrityViolation (7), + operationalViolation (8), + physicalViolation (9), + securityServiceOrMechanismViolation (10), + timeDomainViolation (11) + } + + END diff --git a/mibs/iana/IANA-LANGUAGE-MIB b/mibs/iana/IANA-LANGUAGE-MIB new file mode 100644 index 0000000..6210f72 --- /dev/null +++ b/mibs/iana/IANA-LANGUAGE-MIB @@ -0,0 +1,127 @@ + + IANA-LANGUAGE-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 + FROM SNMPv2-SMI; + + ianaLanguages MODULE-IDENTITY + LAST-UPDATED "200005100000Z" -- May 10, 2000 + ORGANIZATION "IANA" + CONTACT-INFO + "Internet Assigned Numbers Authority (IANA) + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 x20 + E-Mail: iana&iana.org" + DESCRIPTION + "The MIB module registers object identifier values for + well-known programming and scripting languages. Every + language registration MUST describe the format used + when transferring scripts written in this language. + + Any additions or changes to the contents of this MIB + module require Designated Expert Review as defined in + the Guidelines for Writing IANA Considerations Section + document. The Designated Expert will be selected by + the IESG Area Director of the OPS Area. + + Note, this module does not have to register all possible + languages since languages are identified by object + identifier values. It is therefore possible to registered + languages in private OID trees. The references given below are not + normative with regard to the language version. Other + references might be better suited to describe some newer + versions of this language. The references are only + provided as `a pointer into the right direction'." + + -- Revision log, in reverse chronological order + + REVISION "200005100000Z" -- May 10, 2000 + DESCRIPTION "Import mib-2 instead of experimental, so that + this module compiles" + + REVISION "199909090900Z" -- September 9, 1999 + DESCRIPTION "Initial version as published at time of + publication of RFC 2591." + + ::= { mib-2 73 } + + + ianaLangJavaByteCode OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Java byte code to be processed by a Java virtual machine. + A script written in Java byte code is transferred by using + the Java archive file format (JAR)." + REFERENCE + "The Java Virtual Machine Specification. + ISBN 0-201-63452-X" + ::= { ianaLanguages 1 } + + ianaLangTcl OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Tool Command Language (Tcl). A script written in the + Tcl language is transferred in Tcl source code format." + REFERENCE + "Tcl and the Tk Toolkit. + ISBN 0-201-63337-X" + ::= { ianaLanguages 2 } + + ianaLangPerl OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Perl language. A script written in the Perl language + is transferred in Perl source code format." + REFERENCE + "Programming Perl. + ISBN 1-56592-149-6" + ::= { ianaLanguages 3 } + + ianaLangScheme OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Scheme language. A script written in the Scheme + language is transferred in Scheme source code format." + REFERENCE + "The Revised^4 Report on the Algorithmic Language Scheme. + MIT Press" + ::= { ianaLanguages 4 } + + ianaLangSRSL OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP Script Language defined by SNMP Research. A + script written in the SNMP Script Language is transferred + in the SNMP Script Language source code format." + ::= { ianaLanguages 5 } + + ianaLangPSL OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Patrol Script Language defined by BMC Software. A script + written in the Patrol Script Language is transferred in the + Patrol Script Language source code format." + REFERENCE + "PATROL Script Language Reference Manual, Version 3.0, + November 30, 1995. BMC Software, Inc. 2101 City West Blvd., + Houston, Texas 77042." + ::= { ianaLanguages 6 } + + ianaLangSMSL OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Systems Management Scripting Language. A script written + in the SMSL language is transferred in the SMSL source code + format." + REFERENCE + "ISO/ITU Command Sequencer. + ISO 10164-21 or ITU X.753" + ::= { ianaLanguages 7 } + + END + diff --git a/mibs/iana/IANA-MALLOC-MIB b/mibs/iana/IANA-MALLOC-MIB new file mode 100644 index 0000000..7c007f5 --- /dev/null +++ b/mibs/iana/IANA-MALLOC-MIB @@ -0,0 +1,67 @@ + +IANA-MALLOC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +ianaMallocMIB MODULE-IDENTITY + LAST-UPDATED "200301271200Z" -- January 27, 2003 + ORGANIZATION "IANA" + CONTACT-INFO + " Internet Assigned Numbers Authority + Internet Corporation for Assigned Names and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + + Phone: +1 310 823 9358 + EMail: iana&iana.org" + DESCRIPTION + "This MIB module defines the IANAscopeSource and + IANAmallocRangeSource textual conventions for use in MIBs + which need to identify ways of learning multicast scope and + range information. + + Any additions or changes to the contents of this MIB module + require either publication of an RFC, or Designated Expert + Review as defined in the Guidelines for Writing IANA + Considerations Section document. The Designated Expert will + be selected by the IESG Area Director(s) of the Transport + Area." + + -- revision log + + REVISION "200301271200Z" -- January 27, 2003 + DESCRIPTION + "Initial version." + ::= { mib-2 102 } + +IANAscopeSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The source of multicast scope information." + SYNTAX INTEGER { + other(1), -- none of the following + manual(2), -- statically configured + local(3), -- automatically added by the system, + -- such as a Source-Specific Multicast + -- scope + mzap(4), -- MZAP + madcap(5) -- MADCAP + } + +IANAmallocRangeSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The source of multicast address allocation range + information." + SYNTAX INTEGER { + other(1), -- none of the following + manual(2), -- statically configured + local(3) -- automatically added by the system, + -- such as a Source-Specific Multicast + -- range + } + +END + diff --git a/mibs/iana/IANA-MAU-MIB b/mibs/iana/IANA-MAU-MIB new file mode 100644 index 0000000..35c3f4a --- /dev/null +++ b/mibs/iana/IANA-MAU-MIB @@ -0,0 +1,770 @@ +IANA-MAU-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + ; + + ianaMauMIB MODULE-IDENTITY + LAST-UPDATED "200704210000Z" -- April 21, 2007 + ORGANIZATION "IANA" + CONTACT-INFO " Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1-310-823-9358 + EMail: iana&iana.org" + + DESCRIPTION + "This MIB module defines dot3MauType OBJECT-IDENTITIES and + IANAifMauListBits, IANAifMauMediaAvailable, + IANAifMauAutoNegCapBits, and IANAifJackType + + TEXTUAL-CONVENTIONs, specifying enumerated values of the + ifMauTypeListBits, ifMauMediaAvailable / rpMauMediaAvailable, + ifMauAutoNegCapabilityBits / ifMauAutoNegCapAdvertisedBits / + ifMauAutoNegCapReceivedBits and ifJackType / rpJackType objects + respectively, defined in the MAU-MIB. + + It is intended that each new MAU type, Media Availability + state, Auto Negotiation capability and/or Jack type defined by + the IEEE 802.3 working group and approved for publication in a + revision of IEEE Std 802.3 will be added to this MIB module, + provided that it is suitable for being managed by the base + objects in the MAU-MIB. An Expert Review, as defined in + RFC 2434 [RFC2434], is REQUIRED for such additions. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for + Information technology - Telecommunications and information + exchange between systems - Local and metropolitan area + networks - Specific requirements - + Part 3: Carrier sense multiple access with collision + detection (CSMA/CD) access method and physical layer + specifications'. + + This reference should be updated as appropriate when new + MAU types, Media Availability states, Auto Negotiation + capabilities, and/or Jack types are added to this MIB module. + + Copyright (C) The IETF Trust (2007). + The initial version of this MIB module was published in + RFC 4836; for full legal notices see the RFC itself. + Supplementary information may be available at: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200704210000Z" -- April 21, 2007 + DESCRIPTION "Initial version of this MIB as published in + RFC 4836." + ::= { mib-2 154 } + + -- Textual Conventions + + IANAifMauTypeListBits ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the ifMauTypeListBits + object in the (updated) definition of MAU-MIB's ifMauTable. + + The most recent version of this textual convention is available + in the online version of this MIB module on the IANA web site. + + Requests for new values should be made to IANA via email + (iana&iana.org). + + Note that changes in this textual convention SHALL be + synchronized with relevant changes in the dot3MauType + OBJECT-IDENTITIES." + REFERENCE + "[IEEE802.3], Section 30.5.1.1.2" + SYNTAX BITS { + bOther(0), -- other or unknown + bAUI(1), -- AUI + b10base5(2), -- 10BASE-5 + bFoirl(3), -- FOIRL + + b10base2(4), -- 10BASE-2 + b10baseT(5), -- 10BASE-T duplex mode unknown + b10baseFP(6), -- 10BASE-FP + b10baseFB(7), -- 10BASE-FB + b10baseFL(8), -- 10BASE-FL duplex mode unknown + b10broad36(9), -- 10BROAD36 + b10baseTHD(10), -- 10BASE-T half duplex mode + b10baseTFD(11), -- 10BASE-T full duplex mode + b10baseFLHD(12), -- 10BASE-FL half duplex mode + b10baseFLFD(13), -- 10BASE-FL full duplex mode + b100baseT4(14), -- 100BASE-T4 + b100baseTXHD(15), -- 100BASE-TX half duplex mode + b100baseTXFD(16), -- 100BASE-TX full duplex mode + b100baseFXHD(17), -- 100BASE-FX half duplex mode + b100baseFXFD(18), -- 100BASE-FX full duplex mode + b100baseT2HD(19), -- 100BASE-T2 half duplex mode + b100baseT2FD(20), -- 100BASE-T2 full duplex mode + + b1000baseXHD(21), -- 1000BASE-X half duplex mode + b1000baseXFD(22), -- 1000BASE-X full duplex mode + b1000baseLXHD(23), -- 1000BASE-LX half duplex mode + b1000baseLXFD(24), -- 1000BASE-LX full duplex mode + b1000baseSXHD(25), -- 1000BASE-SX half duplex mode + b1000baseSXFD(26), -- 1000BASE-SX full duplex mode + b1000baseCXHD(27), -- 1000BASE-CX half duplex mode + b1000baseCXFD(28), -- 1000BASE-CX full duplex mode + b1000baseTHD(29), -- 1000BASE-T half duplex mode + b1000baseTFD(30), -- 1000BASE-T full duplex mode + + b10GbaseX(31), -- 10GBASE-X + b10GbaseLX4(32), -- 10GBASE-LX4 + + b10GbaseR(33), -- 10GBASE-R + b10GbaseER(34), -- 10GBASE-ER + b10GbaseLR(35), -- 10GBASE-LR + b10GbaseSR(36), -- 10GBASE-SR + b10GbaseW(37), -- 10GBASE-W + b10GbaseEW(38), -- 10GBASE-EW + b10GbaseLW(39), -- 10GBASE-LW + b10GbaseSW(40), -- 10GBASE-SW + -- new since RFC 3636 + b10GbaseCX4(41), -- 10GBASE-CX4 + b2BaseTL(42), -- 2BASE-TL + b10PassTS(43), -- 10PASS-TS + b100BaseBX10D(44), -- 100BASE-BX10D + b100BaseBX10U(45), -- 100BASE-BX10U + b100BaseLX10(46), -- 100BASE-LX10 + b1000BaseBX10D(47), -- 1000BASE-BX10D + b1000BaseBX10U(48), -- 1000BASE-BX10U + b1000BaseLX10(49), -- 1000BASE-LX10 + b1000BasePX10D(50), -- 1000BASE-PX10D + b1000BasePX10U(51), -- 1000BASE-PX10U + b1000BasePX20D(52), -- 1000BASE-PX20D + b1000BasePX20U(53) -- 1000BASE-PX20U + } + + IANAifMauMediaAvailable ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the + ifMauMediaAvailable and rpMauMediaAvailable objects in the + (updated) definition of MAU-MIB's ifMauTable and rpMauTable + respectively. + + Possible values are: + other(1) - undefined (not listed below) + unknown(2) - MAU's true state is unknown; e.g., + during initialization + available(3) - link, light, or loopback is normal + notAvailable(4) - link loss, low light, or no loopback + remoteFault(5) - a fault has been detected at the + remote end of the link. This value + applies to 10BASE-FB, 100BASE-T4 Far + End Fault Indication and non-specified + remote faults from a system running + auto-negotiation + invalidSignal(6) - invalid signal has been received from + the other end of the link, 10BASE-FB + only + remoteJabber(7) - remote fault, due to jabber + + remoteLinkLoss(8) - remote fault, due to link loss + remoteTest(9) - remote fault, due to test + offline(10) - offline, Clause 37 Auto-Negotiation + only + autoNegError(11) - Auto-Negotiation Error, Clause 37 + Auto-Negotiation only + pmdLinkFault(12) - PMA/PMD receive link fault. In case + of PAF (2BASE-TL / 10PASS-TS PHYs), + all PMEs in the aggregation group have + detected a link fault + wisFrameLoss(13) - WIS loss of frame, 10GBASE-W only + wisSignalLoss(14) - WIS loss of signal, 10GBASE-W only + pcsLinkFault(15) - PCS receive link fault + excessiveBER(16) - PCS Bit Error Ratio monitor + reporting excessive error ratio + dxsLinkFault(17) - DTE XGXS receive link fault, XAUI only + pxsLinkFault(18) - PHY XGXS receive link fault, XAUI only + availableReduced(19) - link normal, reduced bandwidth, + 2BASE-TL / 10PASS-TS only + ready(20) - at least one PME in the aggregation + group is detecting handshake tones, + 2BASE-TL / 10PASS-TS only + + If the MAU is a 10M b/s link or fiber type (FOIRL, 10BASE-T, + 10BASE-F), then this is equivalent to the link test fail + state/low light function. For an AUI, 10BASE2, 10BASE5, or + 10BROAD36 MAU, this indicates whether loopback is detected on + the DI circuit. The value of this attribute persists between + packets for MAU types AUI, 10BASE5, 10BASE2, 10BROAD36, and + 10BASEFP. + + At power-up or following a reset, the Media Available state + will be unknown(2) for AUI, 10BASE5, 10BASE2, 10BROAD36, and + 10BASE-FP MAUs. For these MAUs loopback will be tested on each + transmission during which no collision is detected. + If DI is receiving input when DO returns to IDL after a + transmission and there has been no collision during the + transmission, then loopback will be detected. The Media + Available state will only change during noncollided + transmissions for AUI, 10BASE2, 10BASE5, 10BROAD36, and + 10BASE-FP MAUs. + + For 100BASE-T2, 100BASE-T4, 100BASE-TX, 100BASE-FX, + 100BASE-LX10, and 100BASE-BX10 PHYs the enumerations match the + states within the link integrity state diagram. + Any MAU that implements management of [IEEE802.3] Clause + 28 Auto-Negotiation, will map remote fault indication to + remoteFault(5). + + Any MAU that implements management of Clause 37 + Auto-Negotiation, will map the received RF1 and RF2 bits as + follows: Offline maps to offline(10), Link_Failure maps to + remoteFault(5), and Auto-Negotiation Error maps to + autoNegError(11). + + The value remoteFault(5) applies to 10BASE-FB remote + fault indication, the 100BASE-X far-end fault indication, and + nonspecified remote faults from a system running Clause 28 + Auto-Negotiation. + + The value remoteJabber(7), remoteLink loss(8), or remoteTest(9) + SHOULD be used instead of remoteFault(5) where the reason for + remote fault is identified in the remote signaling protocol. + Where a Clause 22 MII or Clause 35 GMII is present, a logic + one in the remote fault bit maps to the value remoteFault(5), + a logic zero in the link status bit maps to the enumeration + notAvailable(4). The value notAvailable(4) takes precedence + over remoteFault(5). + + For 2BASE-TL and 10PASS-TS PHYs, the value unknown(2) maps to + the condition where the PHY (PCS with connected PMEs) is + initializing, the value ready(20) maps to the condition where + the interface is down and at least one PME in the aggregation + group is ready for handshake, the value available(3) maps to + the condition where all the PMEs in the aggregation group are + up, the value notAvailable(4) maps to the condition where all + the PMEs in the aggregation group are down and no handshake + tones are detected, the value availableReduced(19) maps to the + condition where the interface is up, a link fault is detected + at the receive direction by one or more PMEs in the + aggregation group, but at least one PME is up and the + enumeration pmdLinkFault(12) maps to the condition where a link + fault is detected at the receive direction by all of the PMEs + in the aggregation group. + + For 10 Gb/s the enumerations map to value of the link_fault + variable within the Link Fault Signaling state diagram + as follows: the value OK maps to the value available(3), + the value Local Fault maps to the value notAvailable(4), + and the value Remote Fault maps to the value remoteFault(5). + The value pmdLinkFault(12), wisFrameLoss(13), + wisSignalLoss(14), pcsLinkFault(15), excessiveBER(16), or + dxsLinkFault(17) SHOULD be used instead of the value + notAvailable(4), where the reason for the Local Fault state can + be identified through the use of the Clause 45 MDIO Interface. + Where multiple reasons for the Local Fault state can be + identified, only the highest precedence error SHOULD be + + reported. This precedence in descending order is as follows: + + pxsLinkFault + pmdLinkFault + wisFrameLoss + wisSignalLoss + pcsLinkFault + excessiveBER + dxsLinkFault. + + Where a Clause 45 MDIO interface is present a logic zero in + the PMA/PMD Receive link status bit ([IEEE802.3] + Section 45.2.1.2.2) maps to the value pmdLinkFault(12), + logic one in the LOF status bit (Section 45.2.2.10.4) maps + to the value wisFrameLoss(13), a logic one in the LOS + status bit (Section 45.2.2.10.5) maps to the value + wisSignalLoss, a logic zero in the PCS Receive + link status bit (Section 45.2.3.2.2) maps to the value + pcsLinkFault(15), a logic one in the 10GBASE-R PCS Latched + high BER status bit (Section 45.2.3.12.2) maps to the value + excessiveBER, a logic zero in the DTE XS receive link status + bit (Section 45.2.5.2.2) maps to the value dxsLinkFault(17) + and a logic zero in the PHY XS transmit link status bit + (Section 45.2.4.2.2) maps to the value pxsLinkFault(18). + + The most recent version of this textual convention is available + in the online version of this MIB module on the IANA web site. + + Requests for new values should be made to IANA via email + (iana&iana.org)." + REFERENCE + "[IEEE802.3], Section 30.5.1.1.4" + SYNTAX INTEGER { + other(1), + unknown(2), + available(3), + notAvailable(4), + remoteFault(5), + invalidSignal(6), + remoteJabber(7), + remoteLinkLoss(8), + remoteTest(9), + offline(10), + autoNegError(11), + pmdLinkFault(12), + wisFrameLoss(13), + wisSignalLoss(14), + pcsLinkFault(15), + + excessiveBER(16), + dxsLinkFault(17), + pxsLinkFault(18), + availableReduced(19), + ready(20) + } + + IANAifMauAutoNegCapBits ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the + ifMauAutoNegCapabilityBits, ifMauAutoNegCapAdvertisedBits, and + ifMauAutoNegCapReceivedBits objects in the (updated) definition + of MAU-MIB's ifMauAutoNegTable. + + The most recent version of this textual convention is available + in the online version of this MIB module on the IANA web site. + + Requests for new values should be made to IANA via email + (iana&iana.org)." + REFERENCE + "[IEEE802.3], Section 30.6.1.1.5" + SYNTAX BITS { + bOther(0), -- other or unknown + b10baseT(1), -- 10BASE-T half duplex mode + b10baseTFD(2), -- 10BASE-T full duplex mode + b100baseT4(3), -- 100BASE-T4 + b100baseTX(4), -- 100BASE-TX half duplex mode + b100baseTXFD(5), -- 100BASE-TX full duplex mode + b100baseT2(6), -- 100BASE-T2 half duplex mode + b100baseT2FD(7), -- 100BASE-T2 full duplex mode + bFdxPause(8), -- PAUSE for full-duplex links + bFdxAPause(9), -- Asymmetric PAUSE for full-duplex + -- links + bFdxSPause(10), -- Symmetric PAUSE for full-duplex + -- links + bFdxBPause(11), -- Asymmetric and Symmetric PAUSE for + -- full-duplex links + b1000baseX(12), -- 1000BASE-X, -LX, -SX, -CX half + -- duplex mode + b1000baseXFD(13), -- 1000BASE-X, -LX, -SX, -CX full + -- duplex mode + b1000baseT(14), -- 1000BASE-T half duplex mode + b1000baseTFD(15) -- 1000BASE-T full duplex mode + } + + IANAifJackType ::= TEXTUAL-CONVENTION + STATUS current + + DESCRIPTION + "Common enumeration values for repeater and interface MAU + jack types. This data type is used as the syntax of the + ifJackType and rpJackType objects in the (updated) definition + of MAU-MIB's ifJackTable and rpJackTable respectively. + + Possible values are: + other(1) - undefined or unknown + rj45(2) - RJ45 + rj45S(3) - RJ45 shielded + db9(4) - DB9 + bnc(5) - BNC + fAUI(6) - AUI female + mAUI(7) - AUI male + fiberSC(8) - SC fiber + fiberMIC(9) - MIC fiber + fiberST(10) - ST fiber + telco(11) - Telco + mtrj(12) - MT-RJ fiber + hssdc(13) - fiber channel style-2 + fiberLC(14) - LC fiber + cx4(15) - IB4X for 10GBASE-CX4 + + The most recent version of this textual convention is available + in the online version of this MIB module on the IANA web site. + + Requests for new values should be made to IANA via email + (iana&iana.org)." + SYNTAX INTEGER { + other(1), + rj45(2), + rj45S(3), + db9(4), + bnc(5), + fAUI(6), + mAUI(7), + fiberSC(8), + fiberMIC(9), + fiberST(10), + telco(11), + mtrj(12), + hssdc(13), + fiberLC(14), + -- new since RFC 3636 + cx4(15) + } + + -- OBJECT IDENTITIES for MAU types + + -- (see rpMauType and ifMauType of MAU-MIB for usage) + -- The following definitions has been moved from RFC 3636 and + -- no longer appear in its revision. + + dot3MauType OBJECT IDENTIFIER ::= { mib-2 snmpDot3MauMgt(26) 4 } + + dot3MauTypeAUI OBJECT-IDENTITY + STATUS current + DESCRIPTION "no internal MAU, view from AUI" + REFERENCE "[IEEE802.3], Section 7" + ::= { dot3MauType 1 } + + dot3MauType10Base5 OBJECT-IDENTITY + STATUS current + DESCRIPTION "thick coax MAU" + REFERENCE "[IEEE802.3], Section 7" + ::= { dot3MauType 2 } + + dot3MauTypeFoirl OBJECT-IDENTITY + STATUS current + DESCRIPTION "FOIRL MAU" + REFERENCE "[IEEE802.3], Section 9.9" + ::= { dot3MauType 3 } + + dot3MauType10Base2 OBJECT-IDENTITY + STATUS current + DESCRIPTION "thin coax MAU" + REFERENCE "[IEEE802.3], Section 10" + ::= { dot3MauType 4 } + + dot3MauType10BaseT OBJECT-IDENTITY + STATUS current + DESCRIPTION "UTP MAU. + Note that it is strongly recommended that + agents return either dot3MauType10BaseTHD or + dot3MauType10BaseTFD if the duplex mode is + known. However, management applications should + be prepared to receive this MAU type value from + older agent implementations." + REFERENCE "[IEEE802.3], Section 14" + ::= { dot3MauType 5 } + + dot3MauType10BaseFP OBJECT-IDENTITY + STATUS current + DESCRIPTION "passive fiber MAU" + REFERENCE "[IEEE802.3], Section 16" + ::= { dot3MauType 6 } + + dot3MauType10BaseFB OBJECT-IDENTITY + STATUS current + DESCRIPTION "sync fiber MAU" + REFERENCE "[IEEE802.3], Section 17" + ::= { dot3MauType 7 } + + dot3MauType10BaseFL OBJECT-IDENTITY + STATUS current + DESCRIPTION "async fiber MAU. + Note that it is strongly recommended that + agents return either dot3MauType10BaseFLHD or + dot3MauType10BaseFLFD if the duplex mode is + known. However, management applications should + be prepared to receive this MAU type value from + older agent implementations." + REFERENCE "[IEEE802.3], Section 18" + ::= { dot3MauType 8 } + + dot3MauType10Broad36 OBJECT-IDENTITY + STATUS current + DESCRIPTION "broadband DTE MAU. + Note that 10BROAD36 MAUs can be attached to + interfaces but not to repeaters." + REFERENCE "[IEEE802.3], Section 11" + ::= { dot3MauType 9 } + + ------ new since RFC 1515: + dot3MauType10BaseTHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "UTP MAU, half duplex mode" + REFERENCE "[IEEE802.3], Section 14" + ::= { dot3MauType 10 } + + dot3MauType10BaseTFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "UTP MAU, full duplex mode" + REFERENCE "[IEEE802.3], Section 14" + ::= { dot3MauType 11 } + + dot3MauType10BaseFLHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "async fiber MAU, half duplex mode" + REFERENCE "[IEEE802.3], Section 18" + ::= { dot3MauType 12 } + + dot3MauType10BaseFLFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "async fiber MAU, full duplex mode" + + REFERENCE "[IEEE802.3], Section 18" + ::= { dot3MauType 13 } + + dot3MauType100BaseT4 OBJECT-IDENTITY + STATUS current + DESCRIPTION "4 pair category 3 UTP" + REFERENCE "[IEEE802.3], Section 23" + ::= { dot3MauType 14 } + + dot3MauType100BaseTXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "2 pair category 5 UTP, half duplex mode" + REFERENCE "[IEEE802.3], Section 25" + ::= { dot3MauType 15 } + + dot3MauType100BaseTXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "2 pair category 5 UTP, full duplex mode" + REFERENCE "[IEEE802.3], Section 25" + ::= { dot3MauType 16 } + + dot3MauType100BaseFXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "X fiber over PMT, half duplex mode" + REFERENCE "[IEEE802.3], Section 26" + ::= { dot3MauType 17 } + + dot3MauType100BaseFXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "X fiber over PMT, full duplex mode" + REFERENCE "[IEEE802.3], Section 26" + ::= { dot3MauType 18 } + + dot3MauType100BaseT2HD OBJECT-IDENTITY + STATUS current + DESCRIPTION "2 pair category 3 UTP, half duplex mode" + REFERENCE "[IEEE802.3], Section 32" + ::= { dot3MauType 19 } + + dot3MauType100BaseT2FD OBJECT-IDENTITY + STATUS current + DESCRIPTION "2 pair category 3 UTP, full duplex mode" + REFERENCE "[IEEE802.3], Section 32" + ::= { dot3MauType 20 } + + ------ new since RFC 2239: + dot3MauType1000BaseXHD OBJECT-IDENTITY + STATUS current + + DESCRIPTION "PCS/PMA, unknown PMD, half duplex mode" + REFERENCE "[IEEE802.3], Section 36" + ::= { dot3MauType 21 } + + dot3MauType1000BaseXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "PCS/PMA, unknown PMD, full duplex mode" + REFERENCE "[IEEE802.3], Section 36" + ::= { dot3MauType 22 } + + dot3MauType1000BaseLXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Fiber over long-wavelength laser, half duplex + mode" + REFERENCE "[IEEE802.3], Section 38" + ::= { dot3MauType 23 } + + dot3MauType1000BaseLXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Fiber over long-wavelength laser, full duplex + mode" + REFERENCE "[IEEE802.3], Section 38" + ::= { dot3MauType 24 } + + dot3MauType1000BaseSXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Fiber over short-wavelength laser, half + duplex mode" + REFERENCE "[IEEE802.3], Section 38" + ::= { dot3MauType 25 } + + dot3MauType1000BaseSXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Fiber over short-wavelength laser, full + duplex mode" + REFERENCE "[IEEE802.3], Section 38" + ::= { dot3MauType 26 } + + dot3MauType1000BaseCXHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Copper over 150-Ohm balanced cable, half + duplex mode" + REFERENCE "[IEEE802.3], Section 39" + ::= { dot3MauType 27 } + + dot3MauType1000BaseCXFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Copper over 150-Ohm balanced cable, full + + duplex mode" + REFERENCE "[IEEE802.3], Section 39" + ::= { dot3MauType 28 } + + dot3MauType1000BaseTHD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Four-pair Category 5 UTP, half duplex mode" + REFERENCE "[IEEE802.3], Section 40" + ::= { dot3MauType 29 } + + dot3MauType1000BaseTFD OBJECT-IDENTITY + STATUS current + DESCRIPTION "Four-pair Category 5 UTP, full duplex mode" + REFERENCE "[IEEE802.3], Section 40" + ::= { dot3MauType 30 } + + ------ new since RFC 2668: + dot3MauType10GigBaseX OBJECT-IDENTITY + STATUS current + DESCRIPTION "X PCS/PMA, unknown PMD." + REFERENCE "[IEEE802.3], Section 48" + ::= { dot3MauType 31 } + + dot3MauType10GigBaseLX4 OBJECT-IDENTITY + STATUS current + DESCRIPTION "X fiber over WWDM optics" + REFERENCE "[IEEE802.3], Section 53" + ::= { dot3MauType 32 } + + dot3MauType10GigBaseR OBJECT-IDENTITY + STATUS current + DESCRIPTION "R PCS/PMA, unknown PMD." + REFERENCE "[IEEE802.3], Section 49" + ::= { dot3MauType 33 } + + dot3MauType10GigBaseER OBJECT-IDENTITY + STATUS current + DESCRIPTION "R fiber over 1550 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 34 } + + dot3MauType10GigBaseLR OBJECT-IDENTITY + STATUS current + DESCRIPTION "R fiber over 1310 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 35 } + + dot3MauType10GigBaseSR OBJECT-IDENTITY + + STATUS current + DESCRIPTION "R fiber over 850 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 36 } + + dot3MauType10GigBaseW OBJECT-IDENTITY + STATUS current + DESCRIPTION "W PCS/PMA, unknown PMD." + REFERENCE "[IEEE802.3], Section 49 and 50" + ::= { dot3MauType 37 } + + dot3MauType10GigBaseEW OBJECT-IDENTITY + STATUS current + DESCRIPTION "W fiber over 1550 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 38 } + + dot3MauType10GigBaseLW OBJECT-IDENTITY + STATUS current + DESCRIPTION "W fiber over 1310 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 39 } + + dot3MauType10GigBaseSW OBJECT-IDENTITY + STATUS current + DESCRIPTION "W fiber over 850 nm optics" + REFERENCE "[IEEE802.3], Section 52" + ::= { dot3MauType 40 } + + ------ new since RFC 3636: + dot3MauType10GigBaseCX4 OBJECT-IDENTITY + STATUS current + DESCRIPTION "X copper over 8 pair 100-Ohm balanced cable" + REFERENCE "[IEEE802.3], Section 54" + ::= { dot3MauType 41 } + + dot3MauType2BaseTL OBJECT-IDENTITY + STATUS current + DESCRIPTION "Voice grade UTP copper, up to 2700m, optional PAF" + REFERENCE "[IEEE802.3], Sections 61 and 63" + ::= { dot3MauType 42 } + + dot3MauType10PassTS OBJECT-IDENTITY + STATUS current + DESCRIPTION "Voice grade UTP copper, up to 750m, optional PAF" + REFERENCE "[IEEE802.3], Sections 61 and 62" + ::= { dot3MauType 43 } + + dot3MauType100BaseBX10D OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber OLT, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 58" + ::= { dot3MauType 44 } + + dot3MauType100BaseBX10U OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber ONU, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 58" + ::= { dot3MauType 45 } + + dot3MauType100BaseLX10 OBJECT-IDENTITY + STATUS current + DESCRIPTION "Two single-mode fibers, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 58" + ::= { dot3MauType 46 } + + dot3MauType1000BaseBX10D OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber OLT, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 59" + ::= { dot3MauType 47 } + + dot3MauType1000BaseBX10U OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber ONU, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 59" + ::= { dot3MauType 48 } + + dot3MauType1000BaseLX10 OBJECT-IDENTITY + STATUS current + DESCRIPTION "Two sigle-mode fiber, long wavelength, 10km" + REFERENCE "[IEEE802.3], Section 59" + ::= { dot3MauType 49 } + + dot3MauType1000BasePX10D OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber EPON OLT, 10km" + REFERENCE "[IEEE802.3], Section 60" + ::= { dot3MauType 50 } + + dot3MauType1000BasePX10U OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber EPON ONU, 10km" + REFERENCE "[IEEE802.3], Section 60" + ::= { dot3MauType 51 } + + dot3MauType1000BasePX20D OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber EPON OLT, 20km" + REFERENCE "[IEEE802.3], Section 60" + ::= { dot3MauType 52 } + + dot3MauType1000BasePX20U OBJECT-IDENTITY + STATUS current + DESCRIPTION "One single-mode fiber EPON ONU, 20km" + REFERENCE "[IEEE802.3], Section 60" + ::= { dot3MauType 53 } + +END diff --git a/mibs/iana/IANA-PRINTER-MIB b/mibs/iana/IANA-PRINTER-MIB new file mode 100644 index 0000000..1f322e9 --- /dev/null +++ b/mibs/iana/IANA-PRINTER-MIB @@ -0,0 +1,1319 @@ +IANA-PRINTER-MIB DEFINITIONS ::= BEGIN + -- http://www.iana.org/assignments/ianaprinter-mib + +IMPORTS + MODULE-IDENTITY, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + +ianaPrinterMIB MODULE-IDENTITY + LAST-UPDATED "200509140000Z" -- September 14, 2005 + + ORGANIZATION "IANA" + CONTACT-INFO "Internet Assigned Numbers Authority + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION "This MIB module defines a set of printing-related + TEXTUAL-CONVENTIONs for use in Printer MIB (RFC 3805), + Finisher MIB (RFC 3806), and other MIBs which need to + specify printing mechanism details. + + Any additions or changes to the contents of this MIB + module require either publication of an RFC, or + Designated Expert Review as defined in RFC 2434, + Guidelines for Writing an IANA Considerations Section + in RFCs. The Designated Expert will be selected by + the IESG Area Director(s) of the Applications Area. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3805. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200509140000Z" -- September 14, 2005 + DESCRIPTION "Updates to include missing 'unknown' values + for PrtCoverStatusTC, PrtChannelTypeTC, + PrtAlertGroupTC and removal of comment for + for PrtAlertGroupTC." + + REVISION "200406020000Z" -- June 2, 2004 + DESCRIPTION "Original version, published in coordination + with Printer MIB (RFC 3805)." + ::= { mib-2 109 } + +-- +-- Generic TEXTUAL-CONVENTIONs +-- + +PrtCoverStatusTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtCoverStatus in RFC 1759. + STATUS current + DESCRIPTION + "Values for encoding the state of a particular cover or + access panel on the printer case or enclosure." + SYNTAX INTEGER { + other(1), + unknown(2), + coverOpen(3), + coverClosed(4), + interlockOpen(5), + interlockClosed(6) + + } + +-- +-- General Group TEXTUAL-CONVENTIONs +-- + +PrtGeneralResetTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtGeneralReset in RFC 1759. + STATUS current + DESCRIPTION + "Values for reading and writing the prtGeneralReset object. + + If a device does not have NVRAM, the device shall none the + less respond to a SET with the value resetToNVRAM(5) with a + sort of warm reset that resets the device to implementation- + defined state that is preferably under control of the system + administrator by some means outside the scope of the Printer + MIB specification." + + SYNTAX INTEGER { + notResetting(3), + powerCycleReset(4), -- Cold Start + resetToNVRAM(5), -- Warm Start + resetToFactoryDefaults(6) -- Reset contents of + -- NVRAM to factory + -- defaults + } +-- +-- Channel Group TEXTUAL-CONVENTIONs +-- + +PrtChannelTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtChannelType in RFC 1759. + STATUS current + DESCRIPTION + "This enumeration indicates the type of channel that is + receiving jobs." + SYNTAX INTEGER { + other(1), + unknown(2), + chSerialPort(3), + chParallelPort(4), + chIEEE1284Port(5), + chSCSIPort(6), + chAppleTalkPAP(7), + -- AppleTalk Printer + -- Access Protocol (PAP) + -- + -- prtChannelInformation entry: + + -- + -- Printer Name + -- Keyword: Name + -- Syntax: Name + -- Status: Optional + -- Multiplicity: Single + -- Description: The name of the printer + -- within the AppleTalk naming scope + chLPDServer(8), + -- prtChannelInformation entry: + -- + -- Printer queue name + -- Keyword: Queue + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: queue name as + -- defined in [RFC1179]. + chNetwareRPrinter(9), + -- Novell, Inc. + -- For each entry of this type, the + -- prtChannelInformation must have a pair of + -- keywords. For Netware 3.x channels this must + -- be a (PServer, Printer) pair. For Netware + -- 4.x channels and for IntranetWare channels + -- this must be a (NDSTree, NDSPrinter) pair. + -- + -- prtChannelInformation entries: + + -- Print Server Name + -- Keyword: PServer + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The Pserver's SAP name + -- + -- Printer Number + -- Keyword: Printer + -- Syntax: Integer + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The printer number + -- + -- NDSTree + -- Keyword: NDSTree + -- Syntax: Name + -- Multiplicity: Single + -- Description: The tree's SAP name + + -- + -- NDS Printer object + -- Keyword: NDSPrinter + -- Syntax: Text (Unicode) + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The fully qualified + -- name of the Printer + -- + -- In the Netware 3.x environment, the + -- client checks the Bindery object + -- representing the named PServer. The + -- client then checks for queues which + -- are associated with the numbered + -- printer. In the 4.x and IntraNetware + -- environment, the client looks up the + -- queues which are associated with the + -- NDS Printer Object in the named Tree. + -- Depending on client access rights to + -- those queues, the client submits jobs + -- to the appropriate queue. + chNetwarePServer(10), + -- Novell,Inc. + -- For each entry of this type, the + -- prtChannelInformation must have a pair + -- of keywords. For Netware 3.x channels + -- this must be a (Server, PServer) pair. + -- For Netware 4.x and IntranetWare + -- channels, this must be a + -- (NDSTree, NDSPServer) pair. + -- + -- prtChannelInformation entries: + -- + -- Server Name + -- Keyword: Server + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The SAP name of the + -- server for which the PServer is defined. + -- + -- PServer + -- Keyword: PServer + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The bindery name of + -- the PServer + + -- + -- NDS Tree + -- Keyword: NDSTree + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The NDS Tree name + -- + -- PServer + -- Keyword: NDSPServer + -- Syntax: Text (Unicode) + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The fully qualified + -- name of the PServer object in the tree. + -- + -- In the 3.x environment, the client + -- checks the bindery object + -- representing the named PServer on the + -- named Server. In the 4.x and + -- IntranetWare environment, + -- the client checks the NDS object + -- representing the named PServer in the + -- named Tree. In either case, the + -- client then checks for all queues + -- associated with the Pserver object. + -- Depending on client access rights + -- to those queues, the client submits + -- jobs to the appropriate queue. + chPort9100(11), + -- DEPRECATED + -- (see chPortTCP - 37; chBidirPortTCP - 38) + chAppSocket(12), + -- A bi-directional, LPD-like, protocol using + -- 9101 for control and 9100 for data. + -- Adobe Systems, Inc. + chFTP(13), -- [RFC959] + chTFTP(14), -- [RFC1350] + chDLCLLCPort(15), + chIBM3270(16), -- IBM Coax + chIBM5250(17), -- IBM Twinax + chFax(18), + chIEEE1394(19), + chTransport1(20), + -- TCP port 35, for reserved TCP port list see + -- [RFC3232]. This RFC should also be + -- referenced for other channel + -- enumerations utilizing TCP port + + -- numbers 0 through 1024. + chCPAP(21), -- TCP port 170 + -- Digital Equipment Corp. + chDCERemoteProcCall(22), -- OSF + -- DEPRECATED + chONCRemoteProcCall(23), -- SUN Microsystems + -- DEPRECATED + chOLE(24), -- Microsoft + -- DEPRECATED + chNamedPipe(25), + chPCPrint(26), -- Banyan + chServerMessageBlock(27), + -- File/Print sharing protocol used by + -- various network operating systems + -- from IBM 3Com, Microsoft and others + -- + -- prtChannelInformation entry: + -- + -- Service Name + -- Keyword: Name + -- Syntax: Name + -- Status: Optional + -- Multiplicity: Single + -- Description: The service name of + -- the printer + chDPMF(28), -- IBM Infoprint + chDLLAPI(29), -- Microsoft + -- DEPRECATED + chVxDAPI(30), -- Microsoft + -- DEPRECATED + chSystemObjectManager(31), -- IBM + chDECLAT(32), + -- Digital Equipment Corp. + -- + -- prtChannelInformation entries: + -- + -- Port Name + -- Keyword: Port + -- Syntax: Name + -- Status: Conditionally + -- Mandatory + -- (see note below) + -- Multiplicity: Single + -- Description: LAT port name + -- + -- Service Name + -- Keyword: Service + -- Syntax: Name + + -- Status: Conditionally + -- Mandatory + -- Multiplicity: Single + -- Description: LAT service name + -- + -- The LAT channel may be + -- identified by either a port or + -- service, so either a + -- Port or Service entry must be + -- specified, but not both. + chNPAP(33), + chUSB(34), -- Not in RFC 1759 + -- Universal Serial Bus + chIRDA(35), -- Not in RFC 1759 + -- Infrared Data Assoc. Prot. + chPrintXChange(36), -- Not in RFC 1759 + -- PrintXChange Protocol + chPortTCP(37), -- Not in RFC 1759 + -- A unidirectional "raw" TCP + -- channel that uses an administratively + -- assigned TCP port address. + -- + -- prtChannelInformation entry: + -- + -- Port Number + -- Keyword: Port + -- Syntax: decimal number + -- Status: Mandatory + -- Multiplicity: Single + -- Description: TCP port number + chBidirPortTCP(38), -- Not in RFC 1759 + -- A bi-directional version of chPortTCP + -- + -- prtChannelInformation entries: + -- (See chPortTCP) + chUNPP(39), -- Not in RFC 1759 + -- Universal Network Printing + -- Protocol(UNPP). A bi-directional, + -- multiport network printing + -- application protocol available on + -- multiple transport protocols. + -- Underscore, Inc. + -- Contact: info&underscore.com + chAppleTalkADSP(40), -- Not in RFC 1759 + -- AppleTalk Data Stream Protocol. + -- ADSP is part of the AppleTalk + -- suite of protocols. + -- It is a symmetric, connection- + + -- oriented protocol that makes + -- possible the establishment + -- and maintenance of full-duplex + -- streams of data bytes between + -- two sockets in an AppleTalk + -- internet. + -- See [APPLEMAC]. + chPortSPX(41), -- Not in RFC 1759 + -- Sequenced Packet Exchange (SPX) + -- socket. + -- Novell, Inc. Similar to TCP, a + -- bi-directional data pipe using + -- Novell SPX as a transport. + -- + -- prtChannelInformation entries: + -- + -- Network Number + -- Keyword: Net + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The network number + -- + -- Node Number + -- Keyword: Node + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The node number + -- + -- Socket Number + -- Keyword: Socket + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The SPX socket number + -- + -- There must be exactly one "Net" and + -- one "Node" and one "Socket" entry. A + -- HexString is a binary value + -- represented as a string of + -- ASCII characters using hexadecimal + -- notation. + chPortHTTP(42), -- Not in RFC 1759 + -- Hypertext Transfer Protocol. See [RFC1945] + -- and [RFC2616]. + chNDPS(43), -- Not in RFC 1759 + -- Novell, Inc. + + -- + -- prtChannelInformation entry: + -- + -- Printer Agent Name + -- Keyword: PA + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The NDPS Printer + -- Agent Name + chIPP(44), -- Not in RFC 1759 + -- Internet Printing Protocol (IPP), + -- (IPP/1.1 - see [RFC2910] and [RFC2911]) + -- also applies to all future versions of IPP. + -- + -- IPP Printer URI + -- Keyword: URI + -- Syntax: URI (Unicode UTF-8 per + -- [RFC2396]) + -- Status: Mandatory + -- Multiplicity: Single + -- Default: not applicable + -- Description: URI of this IPP Printer + -- within Internet naming scope. Unicode + -- UTF-8 [RFC3629] string with + -- hexadecimal escapes for any non-ASCII + -- characters (per [RFC2396]). + -- Conformance: An IPP Printer shall list all + -- IPP URI it supports (one per IPP Channel + -- entry). If a URI contains the 'http:' + -- scheme it must have an explicit port. + -- See: [RFC3629], [RFC2396], [RFC2910], + -- [RFC2911]. + -- + -- IPP Printer Client Authentication + -- Keyword: Auth + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Single + -- Default: 'none' + -- Description: A client authentication + -- mechanism supported for this IPP Printer + -- URI: + -- 'none' + -- no client authentication mechanism + -- 'requesting-user-name' + -- authenticated user in 'requesting- + -- user-name' + + -- 'basic' + -- authenticated user via HTTP Basic + -- mechanism + -- 'digest' + -- authenticated user via HTTP Digest + -- mechanism + -- 'certificate' + -- authenticated user via certificate + -- mechanism + -- Conformance: An IPP Printer should list + -- all IPP client authentication mechanisms + -- it supports (one per IPP Channel entry). + -- See: [RFC2911] and [RFC2910]. + -- + -- IPP Printer Security + -- Keyword: Security + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Single + -- Default: 'none' + -- Description: A security mechanism + -- supported for this IPP Printer URI: + -- 'none' + -- no security mechanism + -- 'ssl3' + -- SSL3 secure communications channel + -- protocol + -- 'tls' + -- TLS secure communications channel + -- protocol + -- Conformance: An IPP Printer should list + -- all IPP security mechanisms it supports + -- (one per IPP Channel entry). + -- See: [RFC2246], [RFC2911]. + -- + -- IPP Printer Protocol Version + -- Keyword: Version + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Multiple + -- Default: '1.1' + -- Description: All of the IPP protocol + -- versions (major.minor) supported for + -- this IPP Printer URI: + -- '1.0' + -- IPP/1.0 conforming Printer + -- '1.1' + -- IPP/1.1 conforming Printer + + -- Conformance: An IPP Printer should list + -- all IPP versions it supports (all listed + -- in each IPP Channel entry). An IPP + -- Client should select the highest + -- numbered version the IPP Client supports + -- for use in all IPP Requests (for optimum + -- interworking). + -- See: [RFC2911]. + chSMTP(45) + -- Print Job submission via Simple Mail + -- Transfer Protocol (SMTP) - see [RFC2821] + -- + -- prtChannelInformation entry: + -- + -- Keyword: Mailto + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Default: not applicable + -- Description: The SMTP URL of the printer. +} + +-- +-- Interpreter Group TEXTUAL-CONVENTIONs +-- + +PrtInterpreterLangFamilyTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtInterpreterLangFamily in RFC 1759. + STATUS current + DESCRIPTION + "This enumeration indicates the type of interpreter that is + receiving jobs." + SYNTAX INTEGER { + other(1), + unknown(2), -- Not in RFC 1759 + langPCL(3), -- PCL. Starting with PCL version 5, + -- HP-GL/2 is included as part of the + -- PCL language. + -- PCL and HP-GL/2 are registered + -- trademarks of Hewlett-Packard + -- Company. + langHPGL(4), -- Hewlett-Packard Graphics Language. + -- HP-GL is a registered trademark of + -- Hewlett-Packard Company. + langPJL(5), -- Peripheral Job Language. Appears in + -- the data stream between data intended + -- for a page description language. + -- Hewlett-Packard Co. + + langPS(6), -- PostScript (tm) Language + -- Postscript - a trademark of Adobe + -- Systems Incorporated which may be + -- registered in certain jurisdictions + langIPDS(7), -- Intelligent Printer Data Stream + -- Bi-directional print data stream for + -- documents consisting of data objects + -- (text, image, graphics, bar codes), + -- resources (fonts, overlays) and page, + -- form and finishing instructions. + -- Facilitates system level device + -- control, document tracking and error + -- recovery throughout the print + -- process. + -- IBM Corporation. + langPPDS(8), -- IBM Personal Printer Data Stream. + -- Originally called IBM ASCII, the name + -- was changed to PPDS when the Laser + -- Printer was introduced in 1989. + -- Lexmark International, Inc. + langEscapeP(9), -- Epson Corp. + langEpson(10), + langDDIF(11), -- Digital Document Interchange Format + -- Digital Equipment Corp., Maynard MA + langInterpress(12), + -- Xerox Corp. + langISO6429(13), -- ISO 6429. Control functions for + -- Coded Character Sets (has ASCII + -- control characters, plus additional + -- controls for + -- character imaging devices.) + langLineData(14), -- line-data: Lines of data as + -- separate ASCII or EBCDIC records + -- and containing no control functions + -- (no CR, LF, HT, FF, etc.) + -- For use with traditional line + -- printers. May use CR and/or LF to + -- delimit lines, instead of records. + -- See ISO 10175 Document Printing + -- Application (DPA) [ISO10175]. + langMODCA(15), -- Mixed Object Document Content + -- Architecture + -- Definitions that allow the + -- composition, interchange, and + -- presentation of final form + -- documents as a collection of data + -- objects (text, image, graphics, bar + -- codes), resources (fonts, overlays) + + -- and page, form and finishing + -- instructions. + -- IBM Corporation. + langREGIS(16), -- Remote Graphics Instruction Set, + -- Digital Equipment Corp., Maynard MA + langSCS(17), -- SNA Character String + -- Bi-directional print data stream for + -- SNA LU-1 mode of communication. + -- IBM + langSPDL(18), -- ISO 10180 Standard Page Description + -- Language + -- ISO Standard + langTEK4014(19), -- Tektronix Corp. + langPDS(20), + langIGP(21), -- Printronix Corp. + langCodeV(22), -- Magnum Code-V, Image and printer + -- control language used to control + -- impact/dot-matrix printers. + -- QMS, Inc., Mobile AL + langDSCDSE(23), -- DSC-DSE: Data Stream Compatible and + -- Emulation Bi-directional print data + -- stream for non-SNA (DSC) and SNA LU-3 + -- 3270 controller (DSE) communications + -- IBM + langWPS(24), -- Windows Printing System, Resource + -- based command/data stream used by + -- Microsoft At Work Peripherals. + -- Developed by the Microsoft + -- Corporation. + langLN03(25), -- Early DEC-PPL3, Digital Equipment + -- Corp. + langCCITT(26), + langQUIC(27), -- QUIC (Quality Information Code), Page + -- Description Language for laser + -- printers. Included graphics, printer + -- control capability and emulation of + -- other well-known printer. + -- QMS, Inc. + langCPAP(28), -- Common Printer Access Protocol + -- Digital Equipment Corp. + langDecPPL(29), -- Digital ANSI-Compliant Printing + -- Protocol + -- (DEC-PPL) + -- Digital Equipment Corp. + langSimpleText(30), + -- simple-text: character coded data, + -- including NUL, CR , LF, HT, and FF + -- control characters. See ISO 10175 + + -- Document Printing Application (DPA) + -- [ISO10175]. + langNPAP(31), -- Network Printer Alliance Protocol + -- (NPAP). This protocol has been + -- superseded by the IEEE 1284.1 TIPSI + -- Std (ref. LangTIPSI(49)). + langDOC(32), -- Document Option Commands, Appears in + -- the data stream between data + -- intended for a page description. + -- QMS, Inc. + langimPress(33), -- imPRESS, Page description language + -- originally developed for the + -- ImageServer product line. A binary + -- language providing representations + -- of text, simple graphics, and some + -- large forms (simple + -- bit-map and CCITT group 3/4 + -- encoded).The + -- language was intended to be sent over + -- an 8-bit channel and supported early + -- document preparation languages (e.g., + -- TeX and TROFF). + -- QMS, Inc. + langPinwriter(34), + -- 24 wire dot matrix printer for + -- USA, Europe, and Asia except + -- Japan. + -- More widely used in Germany, and + -- some Asian countries than in US. + -- NEC + langNPDL(35), -- Page printer for Japanese market. + -- NEC + langNEC201PL(36), -- Serial printer language used in + -- the Japanese market. + -- NEC + langAutomatic(37), + -- Automatic PDL sensing. Automatic + -- sensing of the interpreter + -- language family by the printer + -- examining the document content. + -- Which actual interpreter language + -- families are sensed depends on + -- the printer implementation. + langPages(38), -- Page printer Advanced Graphic + -- Escape Set + -- IBM Japan + langLIPS(39), -- LBP Image Processing System + langTIFF(40), -- Tagged Image File Format (Aldus) + + langDiagnostic(41), + -- A hex dump of the input to the + -- interpreter + langPSPrinter(42), + -- The PostScript Language used for + -- control (with any PDLs) + -- Adobe Systems Incorporated + langCaPSL(43), -- Canon Print Systems Language + langEXCL(44), -- Extended Command Language + -- Talaris Systems Inc. + langLCDS(45), -- Line Conditioned Data Stream + -- Xerox Corporation + langXES(46), -- Xerox Escape Sequences + -- Xerox Corporation + langPCLXL(47), -- Not in RFC 1759 + -- Printer Control Language. Extended + -- language features for printing, and + -- printer control. + -- Hewlett-Packard Co. + langART(48), -- Not in RFC 1759 + -- Advanced Rendering Tools (ART). + -- Page Description language + -- originally developed for the Laser + -- Press printers. + -- Technical reference manual: "ART IV + -- Reference Manual", No F33M. + -- Fuji Xerox Co., Ltd. + langTIPSI(49), -- Not in RFC 1759 + -- Transport Independent Printer + -- System Interface (ref. IEEE Std. + -- 1284.1) + langPrescribe(50), -- Not in RFC 1759 + -- Page description and printer + -- control language. It can be + -- described with ordinary ASCII + -- Technical reference manual: + -- "PRESCRIBE II Programming Manual" + langLinePrinter(51), -- Not in RFC 1759 + -- A simple-text character stream which + -- supports the control codes LF, VT, + -- FF, and plus Centronics or + -- Dataproducts Vertical Format Unit + -- (VFU) language is commonly used on + -- many older model line and matrix + -- printers. + langIDP(52), -- Not in RFC 1759 + -- Imaging Device Protocol + -- Apple Computer. + + langXJCL(53), -- Not in RFC 1759 + -- Xerox Job Control Language (JCL). + -- A Job Control language originally + -- developed for the LaserPress printers + -- and is capable of switching PDLs. + -- Technical reference manual: + -- "ART IV Reference Manual", No F33M. + -- Fuji Xerox Co., Ltd. + langPDF(54), -- Not in RFC 1759 + -- Adobe Portable Document Format + -- Adobe Systems, Inc. + langRPDL(55), -- Not in RFC 1759 + -- Ricoh Page Description Language for + -- printers. + -- Technical manual "RPDL command + -- reference" No.307029 + -- RICOH, Co. LTD + langIntermecIPL(56), -- Not in RFC 1759 + -- Intermec Printer Language for label + -- printers. + -- Technical Manual: "IPL Programmers + -- Reference Manual" + -- Intermec Corporation + langUBIFingerprint(57), -- Not in RFC 1759 + -- An intelligent basic-like programming + -- language for label printers. + -- Reference Manual: "UBI Fingerprint + -- 7.1", No. 1-960434-00 + -- United Barcode Industries + langUBIDirectProtocol(58), -- Not in RFC 1759 + -- An intelligent control language for + -- label printers. + -- Programmers guide: " UBI Direct + -- Protocol", No. 1-960419-00 + -- United Barcode Industries + langFujitsu(59), -- Not in RFC 1759 + -- Fujitsu Printer Language + -- Reference Manual: + -- "FM Printer Sequence" No. 80HP-0770 + -- FUJITSU LIMITED + langCGM(60), -- Not in RFC 1759 + -- Computer Graphics Metafile + -- MIME type 'image/cgm' + langJPEG(61), -- Not in RFC 1759 + -- Joint Photographic Experts Group + -- MIME type 'image/jpeg' + langCALS1(62), -- Not in RFC 1759 + -- US DOD CALS1 (see MIL-STD-1840) + + -- MIME type 'application/cals-1840' + langCALS2(63), -- Not in RFC 1759 + -- US DOD CALS2 (see MIL-STD-1840) + -- MIME type 'application/cals-1840' + langNIRS(64), -- Not in RFC 1759 + -- US DOD NIRS (see MIL-STD-1840) + -- MIME type 'application/cals-1840' + langC4(65) -- Not in RFC 1759 + -- US DOD C4 (see MIL-STD-1840) + -- MIME type 'application/cals-1840' +} + +-- +-- Input/Output Group TEXTUAL-CONVENTIONs +-- + +PrtInputTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtInputType in RFC 1759. + STATUS current + DESCRIPTION + "The type of technology (discriminated primarily according to + feeder mechanism type) employed by a specific component or + components." + SYNTAX INTEGER { + other(1), + unknown(2), + sheetFeedAutoRemovableTray(3), + sheetFeedAutoNonRemovableTray(4), + sheetFeedManual(5), + continuousRoll(6), + continuousFanFold(7) + } + +PrtOutputTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtOutputType in RFC 1759. + STATUS current + DESCRIPTION + "The Type of technology supported by this output subunit." + SYNTAX INTEGER { + other(1), + unknown(2), + removableBin(3), + unRemovableBin(4), + continuousRollDevice(5), + mailBox(6), + continuousFanFold(7) + } + +-- +-- Marker Group TEXTUAL-CONVENTIONs +-- + +PrtMarkerMarkTechTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerMarkTech in RFC 1759. + STATUS current + DESCRIPTION + "The type of marking technology used for this marking + subunit." + SYNTAX INTEGER { + other(1), + unknown(2), + electrophotographicLED(3), + electrophotographicLaser(4), + electrophotographicOther(5), + impactMovingHeadDotMatrix9pin(6), + impactMovingHeadDotMatrix24pin(7), + impactMovingHeadDotMatrixOther(8), + impactMovingHeadFullyFormed(9), + impactBand(10), + impactOther(11), + inkjetAqueous(12), + inkjetSolid(13), + inkjetOther(14), + pen(15), + thermalTransfer(16), + thermalSensitive(17), + thermalDiffusion(18), + thermalOther(19), + electroerosion(20), + electrostatic(21), + photographicMicrofiche(22), + photographicImagesetter(23), + photographicOther(24), + ionDeposition(25), + eBeam(26), + typesetter(27) + } + +PrtMarkerSuppliesTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerSuppliesType in RFC 1759. + STATUS current + DESCRIPTION + "The type of this supply." + SYNTAX INTEGER { + other(1), + unknown(2), + + -- Values for Printer MIB + toner(3), + wasteToner(4), + ink(5), + inkCartridge(6), + inkRibbon(7), + wasteInk(8), + opc(9), -- photo conductor + developer(10), + fuserOil(11), + solidWax(12), + ribbonWax(13), + wasteWax(14), + fuser(15), -- Not in RFC 1759 + coronaWire(16), -- Not in RFC 1759 + fuserOilWick(17), -- Not in RFC 1759 + cleanerUnit(18), -- Not in RFC 1759 + fuserCleaningPad(19), -- Not in RFC 1759 + transferUnit(20), -- Not in RFC 1759 + tonerCartridge(21), -- Not in RFC 1759 + fuserOiler(22), -- Not in RFC 1759 + -- End of values for Printer MIB + -- Values for Finisher MIB + water(23), -- Not in RFC 1759 + wasteWater(24), -- Not in RFC 1759 + glueWaterAdditive(25),-- Not in RFC 1759 + wastePaper(26), -- Not in RFC 1759 + bindingSupply(27), -- Not in RFC 1759 + bandingSupply(28), -- Not in RFC 1759 + stitchingWire(29), -- Not in RFC 1759 + shrinkWrap(30), -- Not in RFC 1759 + paperWrap(31), -- Not in RFC 1759 + staples(32), -- Not in RFC 1759 + inserts(33), -- Not in RFC 1759 + covers(34) -- Not in RFC 1759 + -- End of values for Finisher MIB + } + +-- +-- Media Path TEXTUAL-CONVENTIONs +-- + +PrtMediaPathTypeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMediaPathType in RFC 1759. + STATUS current + DESCRIPTION + "The type of the media path for this media path." + SYNTAX INTEGER { + + other(1), + unknown(2), + longEdgeBindingDuplex(3), + shortEdgeBindingDuplex(4), + simplex(5) + } + +-- +-- Console Group TEXTUAL-CONVENTIONs +-- + +PrtConsoleColorTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtConsoleColor in RFC 1759. + STATUS current + DESCRIPTION + "The color of this light." + SYNTAX INTEGER { + other(1), + unknown(2), + white(3), + red(4), + green(5), + blue(6), + cyan(7), + magenta(8), + yellow(9), + orange(10) -- Not in RFC 1759 + } + +PrtConsoleDisableTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtConsoleDisable in RFC 1759. + STATUS current + DESCRIPTION + "This value indicates whether or not input is accepted from + the operator console. A value of 'enabled' indicates that + input is accepted from the console, and a value of 'disabled' + indicates that input is not accepted from the console. " + SYNTAX INTEGER { + enabled(3), + disabled(4) + } + +-- +-- Alert Group TEXTUAL-CONVENTIONs +-- + +PrtAlertTrainingLevelTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtAlertTrainingLevel in RFC 1759. + + STATUS current + DESCRIPTION + "The level of training required to handle this alert, if + human intervention is required. The noInterventionRequired + value should be used if the event does not require any human + intervention. The training level is an enumeration that is + determined and assigned by the printer manufacturer based on + the information or training required to handle this alert. + The printer will break alerts into these different training + levels. It is the responsibility of a management application + in the system to determine how a particular alert is handled + and how and to whom that alert is routed. The following are + the four training levels of alerts: + + Field Service - Alerts that typically require advanced + training and technical knowledge of the printer and its + subunits. An example of a technical person would be a + manufacturer's Field Service representative, or other + person formally trained by the manufacturer or similar + representative. + Trained - Alerts that require an intermediate or moderate + knowledge of the printer and its subunits. A typical + example of such an alert is replacing a toner cartridge. + Untrained - Alerts that can be fixed without prior + training either because the action to correct the alert + is obvious or the printer can help the untrained person + fix the problem. A typical example of such an alert is + reloading paper trays or emptying output bins on a low + end printer. + Management - Alerts that have to do with overall operation + of and configuration of the printer. Examples of such + management events are configuration change of subunits." + SYNTAX INTEGER { + other(1), + unknown(2), + untrained(3), + trained(4), + fieldService(5), + management(6), + noInterventionRequired(7) -- Not in RFC 1759 + } + +PrtAlertGroupTC ::= TEXTUAL-CONVENTION + -- Values in the range 1 to 29 must not be IANA-assigned without + -- re-publishing Printer MIB. + -- Values of 30 and greater are for use in MIBs that augment + -- the Printer MIB, such as the Finisher MIB. + -- This TC extracted from prtAlertGroup in RFC 1759. + + STATUS current + DESCRIPTION + "The type of subunit within the printer model that this alert + is related. Input, output, and markers are examples of + printer model groups, i.e., examples of types of subunits. + Wherever possible, the enumerations match the sub-identifier + that identifies the relevant table in the Printer MIB. + + NOTE: Alert type codes have been added for the Host Resources + MIB storage table and device table. These additional types + are for situations in which the printer's storage and device + objects must generate alerts (and possibly traps for critical + alerts)." + SYNTAX INTEGER { + other(1), + unknown(2), + -- Values for Host Resources MIB + hostResourcesMIBStorageTable(3), + hostResourcesMIBDeviceTable(4), + -- Values for Printer MIB + generalPrinter(5), + cover(6), + localization(7), + input(8), + output(9), + marker(10), + markerSupplies(11), + markerColorant(12), + mediaPath(13), + channel(14), + interpreter(15), + consoleDisplayBuffer(16), + consoleLights(17), + alert(18), -- Not in RFC 1759 + -- Values (5) to (29) reserved for Printer MIB + -- Values for Finisher MIB + finDevice(30), -- Not in RFC 1759 + finSupply(31), -- Not in RFC 1759 + finSupplyMediaInput(32), -- Not in RFC 1759 + finAttribute(33) -- Not in RFC 1759 + -- Values (30) to (39) reserved for Finisher MIB + } + +PrtAlertCodeTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtAlertCode in RFC 1759. + STATUS current + DESCRIPTION + "The code that describes the type of alert for this entry in + + the table. Binary change event alerts describe states of the + subunit while unary change event alerts describe a single + event. The same alert code can be used for a binary change + event or a unary change event, depending on implementation. + Also, the same alert code can be used to indicate a critical + or non-critical (warning) alert, depending on implementation. + The value of prtAlertSeverityLevel specifies binary vs. unary + and critical vs. non-critical for each event for the + implementation. + + While there are some specific codes for many subunits, the + generic codes should be used for most subunit alerts. The + network management station can then query the subunit + specified by prtAlertGroup to determine further subunit + status and other subunit information. + + An agent shall not add two entries to the alert table for the + same event, one containing a generic event code and the other + containing a specific event code; the agent shall add only + one entry in the alert table for each event; either generic + (preferred) or specific, not both. + + Implementation of the unary change event + alertRemovalOfBinaryChangeEntry(1801) is optional. When + implemented, this alert code shall indicate to network + management stations that the trailing edge of a binary change + event has occurred and the corresponding alert entry has been + removed from the alert table. As with all events, the + alertRemovalOfBinaryChangeEntry(1801) alert shall be placed + at the end of the alert table. Such an alert table entry + shall specify the following information: + + prtAlertSeverityLevel warningUnaryChangeEvent(4) + prtAlertTrainingLevel noInterventionRequired(7) + prtAlertGroup alert(18) + prtAlertGroupIndex the index of the row in the + alert table of the binary + change event that this event + has removed. + prtAlertLocation unknown (-2) + prtAlertCode alertRemovalOfBinaryChangeEntry(1801) + prtAlertDescription + prtAlertTime the value of sysUpTime at + the time of the removal of the + binary change event from the + alert table. + + Optionally, the agent may generate a trap coincident with + + removing the binary change event and placing the unary change + event alertRemovalOfBinaryChangeEntry(1801) in the alert + table. For such a trap, the prtAlertIndex sent with the above + trap parameters shall be the index of the + alertRemovalOfBinaryChangeEvent row that was added to the + prtAlertTable; not the index of the row that was removed from + the prtAlertTable." + SYNTAX INTEGER { + other(1), + -- an event that is not represented + -- by one of the alert codes + -- specified below. + unknown(2), + -- The following generic codes are common to + -- multiple groups. The NMS may examine the + -- prtAlertGroup object to determine what group + -- to query for further information. + coverOpen(3), + coverClosed(4), + interlockOpen(5), + interlockClosed(6), + configurationChange(7), + jam(8), + subunitMissing(9), -- Not in RFC 1759 + -- The subunit tray, bin, etc. + -- has been removed. + subunitLifeAlmostOver(10), -- Not in RFC 1759 + subunitLifeOver(11), -- Not in RFC 1759 + subunitAlmostEmpty(12), -- Not in RFC 1759 + subunitEmpty(13), -- Not in RFC 1759 + subunitAlmostFull(14), -- Not in RFC 1759 + subunitFull(15), -- Not in RFC 1759 + subunitNearLimit(16), -- Not in RFC 1759 + subunitAtLimit(17), -- Not in RFC 1759 + subunitOpened(18), -- Not in RFC 1759 + subunitClosed(19), -- Not in RFC 1759 + subunitTurnedOn(20), -- Not in RFC 1759 + subunitTurnedOff(21), -- Not in RFC 1759 + subunitOffline(22), -- Not in RFC 1759 + subunitPowerSaver(23), -- Not in RFC 1759 + subunitWarmingUp(24), -- Not in RFC 1759 + subunitAdded(25), -- Not in RFC 1759 + subunitRemoved(26), -- Not in RFC 1759 + subunitResourceAdded(27), -- Not in RFC 1759 + subunitResourceRemoved(28), -- Not in RFC 1759 + subunitRecoverableFailure(29), + -- Not in RFC 1759 + subunitUnrecoverableFailure(30), + + -- Not in RFC 1759 + subunitRecoverableStorageError(31), + -- Not in RFC 1759 + subunitUnrecoverableStorageError(32), + -- Not in RFC 1759 + subunitMotorFailure(33), -- Not in RFC 1759 + subunitMemoryExhausted(34), -- Not in RFC 1759 + subunitUnderTemperature(35), -- Not in RFC 1759 + subunitOverTemperature(36), -- Not in RFC 1759 + subunitTimingFailure(37), -- Not in RFC 1759 + subunitThermistorFailure(38), -- Not in RFC 1759 + + -- General Printer group + doorOpen(501), -- DEPRECATED + -- Use coverOpened(3) + doorClosed(502), -- DEPRECATED + -- Use coverClosed(4) + powerUp(503), + powerDown(504), + printerNMSReset(505), -- Not in RFC 1759 + -- The printer has been reset by some + -- network management station(NMS) + -- writing into 'prtGeneralReset'. + printerManualReset(506), -- Not in RFC 1759 + -- The printer has been reset manually. + printerReadyToPrint(507), -- Not in RFC 1759 + -- The printer is ready to print. (i.e., + -- not warming up, not in power save + -- state, not adjusting print quality, + -- etc.). + + -- Input Group + inputMediaTrayMissing(801), + inputMediaSizeChange(802), + inputMediaWeightChange(803), + inputMediaTypeChange(804), + inputMediaColorChange(805), + inputMediaFormPartsChange(806), + inputMediaSupplyLow(807), + inputMediaSupplyEmpty(808), + inputMediaChangeRequest(809), -- Not in RFC 1759 + -- An interpreter has detected that a + -- different medium is need in this input + -- tray subunit. The prtAlertDescription may + -- be used to convey a human readable + -- description of the medium required to + -- satisfy the request. + inputManualInputRequest(810), -- Not in RFC 1759 + + -- An interpreter has detected that manual + -- input is required in this subunit. The + -- prtAlertDescription may be used to convey + -- a human readable description of the medium + -- required to satisfy the request. + inputTrayPositionFailure(811), -- Not in RFC 1759 + -- The input tray failed to position correctly. + inputTrayElevationFailure(812), + -- Not in RFC 1759 + inputCannotFeedSizeSelected(813), + -- Not in RFC 1759 + -- Output Group + outputMediaTrayMissing(901), + outputMediaTrayAlmostFull(902), + outputMediaTrayFull(903), + outputMailboxSelectFailure(904), + -- Not in RFC 1759 + -- Marker group + markerFuserUnderTemperature(1001), + markerFuserOverTemperature(1002), + markerFuserTimingFailure(1003), + -- Not in RFC 1759 + markerFuserThermistorFailure(1004), + -- Not in RFC 1759 + markerAdjustingPrintQuality(1005), + -- Not in RFC 1759 + -- Marker Supplies group + markerTonerEmpty(1101), + markerInkEmpty(1102), + markerPrintRibbonEmpty(1103), + markerTonerAlmostEmpty(1104), + markerInkAlmostEmpty(1105), + markerPrintRibbonAlmostEmpty(1106), + markerWasteTonerReceptacleAlmostFull(1107), + markerWasteInkReceptacleAlmostFull(1108), + markerWasteTonerReceptacleFull(1109), + markerWasteInkReceptacleFull(1110), + markerOpcLifeAlmostOver(1111), + markerOpcLifeOver(1112), + markerDeveloperAlmostEmpty(1113), + markerDeveloperEmpty(1114), + markerTonerCartridgeMissing(1115), + -- Not in RFC 1759 + -- Media Path Device Group + mediaPathMediaTrayMissing(1301), + mediaPathMediaTrayAlmostFull(1302), + mediaPathMediaTrayFull(1303), + mediaPathCannotDuplexMediaSelected(1304), + + -- Not in RFC 1759 + -- Interpreter Group + interpreterMemoryIncrease(1501), + interpreterMemoryDecrease(1502), + interpreterCartridgeAdded(1503), + interpreterCartridgeDeleted(1504), + interpreterResourceAdded(1505), + interpreterResourceDeleted(1506), + interpreterResourceUnavailable(1507), + interpreterComplexPageEncountered(1509), + -- Not in RFC 1759 + -- The interpreter has encountered a page + -- that is too complex for the resources that + -- are available. + -- Alert Group + alertRemovalOfBinaryChangeEntry(1801) + -- Not in RFC 1759 + -- A binary change event entry has been + -- removed from the alert table. This unary + -- change alert table entry is added to the + -- end of the alert table. + } +END + + diff --git a/mibs/iana/IANA-RTPROTO-MIB b/mibs/iana/IANA-RTPROTO-MIB new file mode 100644 index 0000000..952c84e --- /dev/null +++ b/mibs/iana/IANA-RTPROTO-MIB @@ -0,0 +1,92 @@ + +IANA-RTPROTO-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +ianaRtProtoMIB MODULE-IDENTITY + LAST-UPDATED "200009260000Z" -- September 26, 2000 + ORGANIZATION "IANA" + CONTACT-INFO + " Internet Assigned Numbers Authority + Internet Corporation for Assigned Names and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + + Phone: +1 310 823 9358 + EMail: iana&iana.org" + DESCRIPTION + "This MIB module defines the IANAipRouteProtocol and + IANAipMRouteProtocol textual conventions for use in MIBs + which need to identify unicast or multicast routing + mechanisms. + + Any additions or changes to the contents of this MIB module + require either publication of an RFC, or Designated Expert + Review as defined in RFC 2434, Guidelines for Writing an + IANA Considerations Section in RFCs. The Designated Expert + will be selected by the IESG Area Director(s) of the Routing + Area." + + REVISION "200009260000Z" -- September 26, 2000 + DESCRIPTION "Original version, published in coordination + with RFC 2932." + + ::= { mib-2 84 } + +IANAipRouteProtocol ::= TEXTUAL-CONVENTION + STATUS current + + DESCRIPTION + "A mechanism for learning routes. Inclusion of values for + routing protocols is not intended to imply that those + protocols need be supported." + SYNTAX INTEGER { + other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + isIs (9), -- Dual IS-IS + esIs (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15), -- InterDomain Policy Routing + ciscoEigrp (16), -- Cisco EIGRP + dvmrp (17) -- DVMRP + } + +IANAipMRouteProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The multicast routing protocol. Inclusion of values for + multicast routing protocols is not intended to imply that + those protocols need be supported." + SYNTAX INTEGER { + other(1), -- none of the following + local(2), -- e.g., manually configured + netmgmt(3), -- set via net.mgmt protocol + dvmrp(4), + mospf(5), + pimSparseDense(6), -- PIMv1, both DM and SM + cbt(7), + pimSparseMode(8), -- PIM-SM + pimDenseMode(9), -- PIM-DM + igmpOnly(10), + bgmp(11), + msdp(12) + } + +END + + diff --git a/mibs/iana/IANATn3270eTC-MIB b/mibs/iana/IANATn3270eTC-MIB new file mode 100644 index 0000000..e774ac0 --- /dev/null +++ b/mibs/iana/IANATn3270eTC-MIB @@ -0,0 +1,306 @@ + + IANATn3270eTC-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + + ianaTn3270eTcMib MODULE-IDENTITY + LAST-UPDATED "200005100000Z" -- May 10, 2000 + ORGANIZATION "IANA" + CONTACT-INFO + "Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 x20 + E-Mail: iana&iana.org" + DESCRIPTION + "This module defines a set of textual conventions + for use by the TN3270E-MIB and the TN3270E-RT-MIB. + + Any additions or changes to the contents of this + MIB module must first be discussed on the tn3270e + working group list at: tn3270e&list.nih.gov + and approved by one of the following TN3270E + working group contacts: + + Ed Bailey (co-chair) - elbailey&us.ibm.com + Michael Boe (co-chair) - mboe&cisco.com + Ken White - kennethw&vnet.ibm.com + Robert Moore - remoore&us.ibm.com + + The above list of contacts can be altered with + the approval of the two co-chairs. + + The Textual Conventions defined within this MIB have + no security issues associated with them unless + explicitly stated in their corresponding + DESCRIPTION clause." + + -- revision log, in reverse chronological order + + REVISION "200005100000Z" -- May 10, 2000 + DESCRIPTION "Fix to import mib-2 instead of experimental." + + REVISION "199909011000Z" -- September 1, 1999 + DESCRIPTION + "Initial version transferred from the TN3270E + working group to IANA." + + ::= { mib-2 61 } + + + -- Textual Conventions + + IANATn3270eAddrType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for defining the type of a + client address. The enumeration value unknown(0) is + also used to indicate that no actual address is present." + SYNTAX INTEGER { + unknown(0), + ipv4(1), + ipv6(2) + } + + IANATn3270eAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a client address. The type of client address is + determined by use of the IANATn3270eAddrType textual +convention. + The length in octets of a IANATn3270eAddress object is: + + IANATn3270eAddrType Address Length + +++++++++++++++++++ ++++++++++++++ + unknown(0) not specified or unknown; the + actual length of the + IANATn3270eAddress octet string + indicates if an address + is present + ipv4(1) 4 OCTETS + ipv6(2) 16 OCTETS + + This textual convention is similar to the TAddress + TC defined by RFC1903 except that it allows a + zero-length octet string and is not a full transport + layer address." + SYNTAX OCTET STRING (SIZE (0..255)) + + IANATn3270eClientType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for defining the set of + enumerations used by tn3270eTcpConnClientIdFormat + in the TN3270E-MIB: + + ENUMERATION OCTETs DESCRIPTION + + none(1) 0 Not specified + other(2) 1..512 Implementation specific + ipv4(3) 6 4-octet IP Address plus + 2-octet TCP Port + ipv6(4) 18 16-octet IPv6 Address + plus 2-octet TCP Port + domainName(5) 1..512 The DNS name of a + client. + truncDomainName(6) 1..512 The (truncated) DNS name + of a client. + string(7) 1..512 Unknown Utf8String + certificate(8) 1..512 certificate + userId(9) 1..8 Client's userid + x509dn(10) 1..512 X.509 Distinguished Name + + Representation of a certificate(8) may be lead to + a security exposure and is NOT RECOMMENDED without + adequate security." + SYNTAX INTEGER { + none(1), + other(2), + ipv4(3), + ipv6(4), + domainName(5), + truncDomainName(6), + string(7), + certificate(8), + userId(9), + x509dn(10) + } + + IANATn3270Functions ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention reflects the current set of + TN3270 and TN3270E functions that can be negotiated + between a server and its client: + + RFC856 + transmitBinary The sender of this command REQUESTS + permission to begin transmitting, or + confirms that it will now begin + transmitting characters which are to + be interpreted as 8 bits of binary + data by the receiver of the data. + RFC860 + timingMark The sender of this command REQUESTS + that the receiver of this command + return a WILL TIMING-MARK in the data + stream at the 'appropriate place'. + RFC885 + endOfRecord The sender of this command requests + permission to begin transmission of + the Telnet END-OF-RECORD (EOR) code + when transmitting data characters, or + the sender of this command confirms it + will now begin transmission of EORs + with transmitted data characters. + RFC1091 + terminalType Sender is willing to send terminal + type information in a subsequent + sub-negotiation. + + RFC1041 + tn3270Regime Sender is willing to send list of + supported 3270 Regimes in a + subsequent sub-negotiation. + RFC2355 + scsCtlCodes (Printer sessions only). Allows the + use of the SNA Character Stream (SCS) + and SCS control codes on the session. + SCS is used with LU type 1 SNA sessions. + dataStreamCtl (Printer sessions only). Allows the use + of the standard 3270 data stream. This + corresponds to LU type 3 SNA sessions. + responses Provides support for positive and + negative response handling. Allows the + server to reflect to the client any and + all definite, exception, and no response + requests sent by the host application. + bindImage Allows the server to send the SNA Bind + image and Unbind notification to the + client. + sysreq Allows the client and server to emulate + some (or all, depending on the server) of + the functions of the SYSREQ key in an SNA + environment." + SYNTAX BITS { + transmitBinary(0),-- rfc856 + timemark(1), -- rfc860 + endOfRecord(2), -- rfc885 + terminalType(3), -- rfc1091 + tn3270Regime(4), -- rfc1041 + scsCtlCodes(5), -- rfc2355 + dataStreamCtl(6), -- rfc2355 + responses(7), -- rfc2355 + bindImage(8), -- rfc2355 + sysreq(9) -- rfc2355 + } + + IANATn3270ResourceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of resource defined by a resource pool. Refer + to tn3270eResPoolTable." + SYNTAX INTEGER { + other(1), + terminal(2), + printer(3), + terminalOrPrinter(4) + } + + IANATn3270DeviceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention defines the list of device + types that can be set, as defined by RFC 2355." + SYNTAX INTEGER { + -- terminals + ibm3278d2(1), -- (24 row x 80 col display) + ibm3278d2E(2), -- (24 row x 80 col display) + ibm3278d3(3), -- (32 row x 80 col display) + ibm3278d3E(4), -- (32 row x 80 col display) + ibm3278d4(5), -- (43 row x 80 col display) + ibm3278d4E(6), -- (43 row x 80 col display) + ibm3278d5(7), -- (27 row x 132 col display) + ibm3278d5E(8), -- (27 row x 132 col display) + ibmDynamic(9), -- (no pre-defined display size) + + -- printers + ibm3287d1(10), + + unknown(100) + } + + IANATn3270eLogData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string representing log data as pertaining to + either a TN3270 or TN3270E Session as reported from a + TN3270E Server. Log data is stored in an octet string + in time order (from earliest to latest). + + Each log element has the following form: + + +------+----+---------+------------+ + !length!type!TimeStamp! data ! + +------+----+---------+------------+ + + where + + length = one-octet length of the data portion of the + trace element, not including the length, + type, and TimeStamp fields + type = one-octet code point characterizing the data. + TimeStamp = A 4-octet field representing the number of + TimeTicks since the TN3270E server was last + activated. The server's last activation time + is available in the tn3270eSrvrConfLastActTime + object in the TN3270E MIB, which has the + syntax DateAndTime. + data = initial part of a PDU. + + length type + + 0-255 x'00' - unknown + 0 x'01' - inactivity timer expired + 0 x'02' - dynamic timer expired + 0 x'03' - actlu req + 0 x'04' - bind req + 0 x'05' - clear req + 0 x'06' - dactlu req + 0 x'07' - warm actpu req + 0 x'08' - sdt req + 0 x'09' - unbind req + 0 x'0A' - notify resp + 0 x'0B' - reply PSID neg rsp + 0 x'0C' - reply PSID pos rsp + 0 x'0D' - unbind rsp + 0 x'0E' - hierarchical reset + 0 x'0F' - client connect req + 0 x'10' - client disconnect req + 0 x'11' - timingmark received + 0 x'12' - flowControl timer expired + 0 x'13' - neg rsp to host + 0 x'14' - neg rsp from host + 0 x'15' - data contention + 0 x'16' - no buffer to send SNA data + 0 x'17' - receive response while inbound + 0 x'18' - client protocol error + 0 x'19' - badClientSequenceReceived + 1-255 x'1A' - utf8String + 2 x'1B' - hexCode, implementation dependent + + Log element entries have a minimum length of 6 octets. + The zero-length string indicates that no log data is + available." + SYNTAX OCTET STRING (SIZE (0 | 6..2048)) + + END + + diff --git a/mibs/iana/IANAifType-MIB b/mibs/iana/IANAifType-MIB new file mode 100644 index 0000000..39dddf9 --- /dev/null +++ b/mibs/iana/IANAifType-MIB @@ -0,0 +1,572 @@ + IANAifType-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + ianaifType MODULE-IDENTITY + LAST-UPDATED "200709130000Z" -- September 13, 2007 + ORGANIZATION "IANA" + CONTACT-INFO " Internet Assigned Numbers Authority + + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + + Tel: +1 310 823 9358 + E-Mail: iana&iana.org" + + DESCRIPTION "This MIB module defines the IANAifType Textual + Convention, and thus the enumerated values of + the ifType object defined in MIB-II's ifTable." + + REVISION "200709130000Z" -- September 13, 2007 + DESCRIPTION "Registration of new IANAifTypes 243 and 244." + + REVISION "200705290000Z" -- May 29, 2007 + DESCRIPTION "Changed the description for IANAifType 228." + + REVISION "200703080000Z" -- March 08, 2007 + DESCRIPTION "Registration of new IANAifType 242." + + REVISION "200701230000Z" -- January 23, 2007 + DESCRIPTION "Registration of new IANAifTypes 239, 240, and 241." + + REVISION "200610170000Z" -- October 17, 2006 + DESCRIPTION "Deprecated/Obsoleted IANAifType 230. Registration of + IANAifType 238." + + REVISION "200609250000Z" -- September 25, 2006 + DESCRIPTION "Changed the description for IANA ifType + 184 and added new IANA ifType 237." + + REVISION "200608170000Z" -- August 17, 2006 + DESCRIPTION "Changed the descriptions for IANAifTypes + 20 and 21." + + REVISION "200608110000Z" -- August 11, 2006 + DESCRIPTION "Changed the descriptions for IANAifTypes + 7, 11, 62, 69, and 117." + + REVISION "200607250000Z" -- July 25, 2006 + DESCRIPTION "Registration of new IANA ifType 236." + + REVISION "200606140000Z" -- June 14, 2006 + DESCRIPTION "Registration of new IANA ifType 235." + + REVISION "200603310000Z" -- March 31, 2006 + DESCRIPTION "Registration of new IANA ifType 234." + + REVISION "200603300000Z" -- March 30, 2006 + DESCRIPTION "Registration of new IANA ifType 233." + + REVISION "200512220000Z" -- December 22, 2005 + DESCRIPTION "Registration of new IANA ifTypes 231 and 232." + + REVISION "200510100000Z" -- October 10, 2005 + DESCRIPTION "Registration of new IANA ifType 230." + + REVISION "200509090000Z" -- September 09, 2005 + DESCRIPTION "Registration of new IANA ifType 229." + + REVISION "200505270000Z" -- May 27, 2005 + DESCRIPTION "Registration of new IANA ifType 228." + + REVISION "200503030000Z" -- March 3, 2005 + DESCRIPTION "Added the IANAtunnelType TC and deprecated + IANAifType sixToFour (215) per RFC4087." + + REVISION "200411220000Z" -- November 22, 2004 + DESCRIPTION "Registration of new IANA ifType 227 per RFC4631." + + REVISION "200406170000Z" -- June 17, 2004 + DESCRIPTION "Registration of new IANA ifType 226." + + REVISION "200405120000Z" -- May 12, 2004 + DESCRIPTION "Added description for IANAifType 6, and + changed the descriptions for IANAifTypes + 180, 181, and 182." + + REVISION "200405070000Z" -- May 7, 2004 + DESCRIPTION "Registration of new IANAifType 225." + + REVISION "200308250000Z" -- Aug 25, 2003 + DESCRIPTION "Deprecated IANAifTypes 7 and 11. Obsoleted + IANAifTypes 62, 69, and 117. ethernetCsmacd (6) + should be used instead of these values" + + REVISION "200308180000Z" -- Aug 18, 2003 + DESCRIPTION "Registration of new IANAifType + 224." + + REVISION "200308070000Z" -- Aug 7, 2003 + DESCRIPTION "Registration of new IANAifTypes + 222 and 223." + + REVISION "200303180000Z" -- Mar 18, 2003 + DESCRIPTION "Registration of new IANAifType + 221." + + REVISION "200301130000Z" -- Jan 13, 2003 + DESCRIPTION "Registration of new IANAifType + 220." + + REVISION "200210170000Z" -- Oct 17, 2002 + DESCRIPTION "Registration of new IANAifType + 219." + + REVISION "200207160000Z" -- Jul 16, 2002 + DESCRIPTION "Registration of new IANAifTypes + 217 and 218." + + REVISION "200207100000Z" -- Jul 10, 2002 + DESCRIPTION "Registration of new IANAifTypes + 215 and 216." + + REVISION "200206190000Z" -- Jun 19, 2002 + DESCRIPTION "Registration of new IANAifType + 214." + + REVISION "200201040000Z" -- Jan 4, 2002 + DESCRIPTION "Registration of new IANAifTypes + 211, 212 and 213." + + REVISION "200112200000Z" -- Dec 20, 2001 + DESCRIPTION "Registration of new IANAifTypes + 209 and 210." + + REVISION "200111150000Z" -- Nov 15, 2001 + DESCRIPTION "Registration of new IANAifTypes + 207 and 208." + + + REVISION "200111060000Z" -- Nov 6, 2001 + DESCRIPTION "Registration of new IANAifType + 206." + + + REVISION "200111020000Z" -- Nov 2, 2001 + DESCRIPTION "Registration of new IANAifType + 205." + + + REVISION "200110160000Z" -- Oct 16, 2001 + DESCRIPTION "Registration of new IANAifTypes + 199, 200, 201, 202, 203, and 204." + + + REVISION "200109190000Z" -- Sept 19, 2001 + DESCRIPTION "Registration of new IANAifType + 198." + + REVISION "200105110000Z" -- May 11, 2001 + DESCRIPTION "Registration of new IANAifType + 197." + + + REVISION "200101120000Z" -- Jan 12, 2001 + DESCRIPTION "Registration of new IANAifTypes + 195 and 196." + + REVISION "200012190000Z" -- Dec 19, 2000 + DESCRIPTION "Registration of new IANAifTypes + 193 and 194." + + REVISION "200012070000Z" -- Dec 07, 2000 + DESCRIPTION "Registration of new IANAifTypes + 191 and 192." + + REVISION "200012040000Z" -- Dec 04, 2000 + DESCRIPTION "Registration of new IANAifType + 190." + + REVISION "200010170000Z" -- Oct 17, 2000 + DESCRIPTION "Registration of new IANAifTypes + 188 and 189." + + REVISION "200010020000Z" -- Oct 02, 2000 + DESCRIPTION "Registration of new IANAifType 187." + + REVISION "200009010000Z" -- Sept 01, 2000 + DESCRIPTION "Registration of new IANAifTypes + 184, 185, and 186." + + REVISION "200008240000Z" -- Aug 24, 2000 + DESCRIPTION "Registration of new IANAifType 183." + + REVISION "200008230000Z" -- Aug 23, 2000 + DESCRIPTION "Registration of new IANAifTypes + 174-182." + + REVISION "200008220000Z" -- Aug 22, 2000 + DESCRIPTION "Registration of new IANAifTypes 170, + 171, 172 and 173." + + REVISION "200004250000Z" -- Apr 25, 2000 + DESCRIPTION "Registration of new IANAifTypes 168 and 169." + + REVISION "200003060000Z" -- Mar 6, 2000 + DESCRIPTION "Fixed a missing semi-colon in the IMPORT. + Also cleaned up the REVISION log a bit. + It is not complete, but from now on it will + be maintained and kept up to date with each + change to this MIB module." + + REVISION "199910081430Z" -- Oct 08, 1999 + DESCRIPTION "Include new name assignments up to cnr(85). + This is the first version available via the WWW + at: ftp://ftp.isi.edu/mib/ianaiftype.mib" + + REVISION "199401310000Z" -- Jan 31, 1994 + DESCRIPTION "Initial version of this MIB as published in + RFC 1573." + + ::= { mib-2 30 } + + + IANAifType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the ifType + object in the (updated) definition of MIB-II's + ifTable. + + The definition of this textual convention with the + addition of newly assigned values is published + periodically by the IANA, in either the Assigned + Numbers RFC, or some derivative of it specific to + Internet Network Management number assignments. (The + latest arrangements can be obtained by contacting the + IANA.) + + Requests for new values should be made to IANA via + email (iana&iana.org). + + The relationship between the assignment of ifType + values and of OIDs to particular media-specific MIBs + is solely the purview of IANA and is subject to change + without notice. Quite often, a media-specific MIB's + OID-subtree assignment within MIB-II's 'transmission' + subtree will be the same as its ifType value. + However, in some circumstances this will not be the + case, and implementors must not pre-assume any + specific relationship between ifType values and + transmission subtree OIDs." + SYNTAX INTEGER { + other(1), -- none of the following + regular1822(2), + hdh1822(3), + ddnX25(4), + rfc877x25(5), + ethernetCsmacd(6), -- for all ethernet-like interfaces, + -- regardless of speed, as per RFC3635 + iso88023Csmacd(7), -- Deprecated via RFC3635 + -- ethernetCsmacd (6) should be used instead + iso88024TokenBus(8), + iso88025TokenRing(9), + iso88026Man(10), + starLan(11), -- Deprecated via RFC3635 + -- ethernetCsmacd (6) should be used instead + proteon10Mbit(12), + proteon80Mbit(13), + hyperchannel(14), + fddi(15), + lapb(16), + sdlc(17), + ds1(18), -- DS1-MIB + e1(19), -- Obsolete see DS1-MIB + basicISDN(20), -- no longer used + -- see also RFC2127 + primaryISDN(21), -- no longer used + -- see also RFC2127 + propPointToPointSerial(22), -- proprietary serial + ppp(23), + softwareLoopback(24), + eon(25), -- CLNP over IP + ethernet3Mbit(26), + nsip(27), -- XNS over IP + slip(28), -- generic SLIP + ultra(29), -- ULTRA technologies + ds3(30), -- DS3-MIB + sip(31), -- SMDS, coffee + frameRelay(32), -- DTE only. + rs232(33), + para(34), -- parallel-port + arcnet(35), -- arcnet + arcnetPlus(36), -- arcnet plus + atm(37), -- ATM cells + miox25(38), + sonet(39), -- SONET or SDH + x25ple(40), + iso88022llc(41), + localTalk(42), + smdsDxi(43), + frameRelayService(44), -- FRNETSERV-MIB + v35(45), + hssi(46), + hippi(47), + modem(48), -- Generic modem + aal5(49), -- AAL5 over ATM + sonetPath(50), + sonetVT(51), + smdsIcip(52), -- SMDS InterCarrier Interface + propVirtual(53), -- proprietary virtual/internal + propMultiplexor(54),-- proprietary multiplexing + ieee80212(55), -- 100BaseVG + fibreChannel(56), -- Fibre Channel + hippiInterface(57), -- HIPPI interfaces + frameRelayInterconnect(58), -- Obsolete use either + -- frameRelay(32) or + -- frameRelayService(44). + aflane8023(59), -- ATM Emulated LAN for 802.3 + aflane8025(60), -- ATM Emulated LAN for 802.5 + cctEmul(61), -- ATM Emulated circuit + fastEther(62), -- Obsoleted via RFC3635 + -- ethernetCsmacd (6) should be used instead + isdn(63), -- ISDN and X.25 + v11(64), -- CCITT V.11/X.21 + v36(65), -- CCITT V.36 + g703at64k(66), -- CCITT G703 at 64Kbps + g703at2mb(67), -- Obsolete see DS1-MIB + qllc(68), -- SNA QLLC + fastEtherFX(69), -- Obsoleted via RFC3635 + -- ethernetCsmacd (6) should be used instead + channel(70), -- channel + ieee80211(71), -- radio spread spectrum + ibm370parChan(72), -- IBM System 360/370 OEMI Channel + escon(73), -- IBM Enterprise Systems Connection + dlsw(74), -- Data Link Switching + isdns(75), -- ISDN S/T interface + isdnu(76), -- ISDN U interface + lapd(77), -- Link Access Protocol D + ipSwitch(78), -- IP Switching Objects + rsrb(79), -- Remote Source Route Bridging + atmLogical(80), -- ATM Logical Port + ds0(81), -- Digital Signal Level 0 + ds0Bundle(82), -- group of ds0s on the same ds1 + bsc(83), -- Bisynchronous Protocol + async(84), -- Asynchronous Protocol + cnr(85), -- Combat Net Radio + iso88025Dtr(86), -- ISO 802.5r DTR + eplrs(87), -- Ext Pos Loc Report Sys + arap(88), -- Appletalk Remote Access Protocol + propCnls(89), -- Proprietary Connectionless Protocol + hostPad(90), -- CCITT-ITU X.29 PAD Protocol + termPad(91), -- CCITT-ITU X.3 PAD Facility + frameRelayMPI(92), -- Multiproto Interconnect over FR + x213(93), -- CCITT-ITU X213 + adsl(94), -- Asymmetric Digital Subscriber Loop + radsl(95), -- Rate-Adapt. Digital Subscriber Loop + sdsl(96), -- Symmetric Digital Subscriber Loop + vdsl(97), -- Very H-Speed Digital Subscrib. Loop + iso88025CRFPInt(98), -- ISO 802.5 CRFP + myrinet(99), -- Myricom Myrinet + voiceEM(100), -- voice recEive and transMit + voiceFXO(101), -- voice Foreign Exchange Office + voiceFXS(102), -- voice Foreign Exchange Station + voiceEncap(103), -- voice encapsulation + voiceOverIp(104), -- voice over IP encapsulation + atmDxi(105), -- ATM DXI + atmFuni(106), -- ATM FUNI + atmIma (107), -- ATM IMA + pppMultilinkBundle(108), -- PPP Multilink Bundle + ipOverCdlc (109), -- IBM ipOverCdlc + ipOverClaw (110), -- IBM Common Link Access to Workstn + stackToStack (111), -- IBM stackToStack + virtualIpAddress (112), -- IBM VIPA + mpc (113), -- IBM multi-protocol channel support + ipOverAtm (114), -- IBM ipOverAtm + iso88025Fiber (115), -- ISO 802.5j Fiber Token Ring + tdlc (116), -- IBM twinaxial data link control + gigabitEthernet (117), -- Obsoleted via RFC3635 + -- ethernetCsmacd (6) should be used instead + hdlc (118), -- HDLC + lapf (119), -- LAP F + v37 (120), -- V.37 + x25mlp (121), -- Multi-Link Protocol + x25huntGroup (122), -- X25 Hunt Group + trasnpHdlc (123), -- Transp HDLC + interleave (124), -- Interleave channel + fast (125), -- Fast channel + ip (126), -- IP (for APPN HPR in IP networks) + docsCableMaclayer (127), -- CATV Mac Layer + docsCableDownstream (128), -- CATV Downstream interface + docsCableUpstream (129), -- CATV Upstream interface + a12MppSwitch (130), -- Avalon Parallel Processor + tunnel (131), -- Encapsulation interface + coffee (132), -- coffee pot + ces (133), -- Circuit Emulation Service + atmSubInterface (134), -- ATM Sub Interface + l2vlan (135), -- Layer 2 Virtual LAN using 802.1Q + l3ipvlan (136), -- Layer 3 Virtual LAN using IP + l3ipxvlan (137), -- Layer 3 Virtual LAN using IPX + digitalPowerline (138), -- IP over Power Lines + mediaMailOverIp (139), -- Multimedia Mail over IP + dtm (140), -- Dynamic syncronous Transfer Mode + dcn (141), -- Data Communications Network + ipForward (142), -- IP Forwarding Interface + msdsl (143), -- Multi-rate Symmetric DSL + ieee1394 (144), -- IEEE1394 High Performance Serial Bus + if-gsn (145), -- HIPPI-6400 + dvbRccMacLayer (146), -- DVB-RCC MAC Layer + dvbRccDownstream (147), -- DVB-RCC Downstream Channel + dvbRccUpstream (148), -- DVB-RCC Upstream Channel + atmVirtual (149), -- ATM Virtual Interface + mplsTunnel (150), -- MPLS Tunnel Virtual Interface + srp (151), -- Spatial Reuse Protocol + voiceOverAtm (152), -- Voice Over ATM + voiceOverFrameRelay (153), -- Voice Over Frame Relay + idsl (154), -- Digital Subscriber Loop over ISDN + compositeLink (155), -- Avici Composite Link Interface + ss7SigLink (156), -- SS7 Signaling Link + propWirelessP2P (157), -- Prop. P2P wireless interface + frForward (158), -- Frame Forward Interface + rfc1483 (159), -- Multiprotocol over ATM AAL5 + usb (160), -- USB Interface + ieee8023adLag (161), -- IEEE 802.3ad Link Aggregate + bgppolicyaccounting (162), -- BGP Policy Accounting + frf16MfrBundle (163), -- FRF .16 Multilink Frame Relay + h323Gatekeeper (164), -- H323 Gatekeeper + h323Proxy (165), -- H323 Voice and Video Proxy + mpls (166), -- MPLS + mfSigLink (167), -- Multi-frequency signaling link + hdsl2 (168), -- High Bit-Rate DSL - 2nd generation + shdsl (169), -- Multirate HDSL2 + ds1FDL (170), -- Facility Data Link 4Kbps on a DS1 + pos (171), -- Packet over SONET/SDH Interface + dvbAsiIn (172), -- DVB-ASI Input + dvbAsiOut (173), -- DVB-ASI Output + plc (174), -- Power Line Communtications + nfas (175), -- Non Facility Associated Signaling + tr008 (176), -- TR008 + gr303RDT (177), -- Remote Digital Terminal + gr303IDT (178), -- Integrated Digital Terminal + isup (179), -- ISUP + propDocsWirelessMaclayer (180), -- Cisco proprietary Maclayer + propDocsWirelessDownstream (181), -- Cisco proprietary Downstream + propDocsWirelessUpstream (182), -- Cisco proprietary Upstream + hiperlan2 (183), -- HIPERLAN Type 2 Radio Interface + propBWAp2Mp (184), -- PropBroadbandWirelessAccesspt2multipt + -- use of this iftype for IEEE 802.16 WMAN + -- interfaces as per IEEE Std 802.16f is + -- deprecated and ifType 237 should be used instead. + sonetOverheadChannel (185), -- SONET Overhead Channel + digitalWrapperOverheadChannel (186), -- Digital Wrapper + aal2 (187), -- ATM adaptation layer 2 + radioMAC (188), -- MAC layer over radio links + atmRadio (189), -- ATM over radio links + imt (190), -- Inter Machine Trunks + mvl (191), -- Multiple Virtual Lines DSL + reachDSL (192), -- Long Reach DSL + frDlciEndPt (193), -- Frame Relay DLCI End Point + atmVciEndPt (194), -- ATM VCI End Point + opticalChannel (195), -- Optical Channel + opticalTransport (196), -- Optical Transport + propAtm (197), -- Proprietary ATM + voiceOverCable (198), -- Voice Over Cable Interface + infiniband (199), -- Infiniband + teLink (200), -- TE Link + q2931 (201), -- Q.2931 + virtualTg (202), -- Virtual Trunk Group + sipTg (203), -- SIP Trunk Group + sipSig (204), -- SIP Signaling + docsCableUpstreamChannel (205), -- CATV Upstream Channel + econet (206), -- Acorn Econet + pon155 (207), -- FSAN 155Mb Symetrical PON interface + pon622 (208), -- FSAN622Mb Symetrical PON interface + bridge (209), -- Transparent bridge interface + linegroup (210), -- Interface common to multiple lines + voiceEMFGD (211), -- voice E&M Feature Group D + voiceFGDEANA (212), -- voice FGD Exchange Access North American + voiceDID (213), -- voice Direct Inward Dialing + mpegTransport (214), -- MPEG transport interface + sixToFour (215), -- 6to4 interface (DEPRECATED) + gtp (216), -- GTP (GPRS Tunneling Protocol) + pdnEtherLoop1 (217), -- Paradyne EtherLoop 1 + pdnEtherLoop2 (218), -- Paradyne EtherLoop 2 + opticalChannelGroup (219), -- Optical Channel Group + homepna (220), -- HomePNA ITU-T G.989 + gfp (221), -- Generic Framing Procedure (GFP) + ciscoISLvlan (222), -- Layer 2 Virtual LAN using Cisco ISL + actelisMetaLOOP (223), -- Acteleis proprietary MetaLOOP High Speed Link + fcipLink (224), -- FCIP Link + rpr (225), -- Resilient Packet Ring Interface Type + qam (226), -- RF Qam Interface + lmp (227), -- Link Management Protocol + cblVectaStar (228), -- Cambridge Broadband Networks Limited VectaStar + docsCableMCmtsDownstream (229), -- CATV Modular CMTS Downstream Interface + adsl2 (230), -- Asymmetric Digital Subscriber Loop Version 2 + -- (DEPRECATED/OBSOLETED - please use adsl2plus 238 instead) + macSecControlledIF (231), -- MACSecControlled + macSecUncontrolledIF (232), -- MACSecUncontrolled + aviciOpticalEther (233), -- Avici Optical Ethernet Aggregate + atmbond (234), -- atmbond + voiceFGDOS (235), -- voice FGD Operator Services + mocaVersion1 (236), -- MultiMedia over Coax Alliance (MoCA) Interface + -- as documented in information provided privately to IANA + ieee80216WMAN (237), -- IEEE 802.16 WMAN interface + adsl2plus (238), -- Asymmetric Digital Subscriber Loop Version 2, + -- Version 2 Plus and all variants + dvbRcsMacLayer (239), -- DVB-RCS MAC Layer + dvbTdm (240), -- DVB Satellite TDM + dvbRcsTdma (241), -- DVB-RCS TDMA + x86Laps (242), -- LAPS based on ITU-T X.86/Y.1323 + wwanPP (243), -- 3GPP WWAN + wwanPP2 (244) -- 3GPP2 WWAN + } + +IANAtunnelType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The encapsulation method used by a tunnel. The value + direct indicates that a packet is encapsulated + directly within a normal IP header, with no + intermediate header, and unicast to the remote tunnel + endpoint (e.g., an RFC 2003 IP-in-IP tunnel, or an RFC + 1933 IPv6-in-IPv4 tunnel). The value minimal indicates + that a Minimal Forwarding Header (RFC 2004) is + inserted between the outer header and the payload + packet. The value UDP indicates that the payload + packet is encapsulated within a normal UDP packet + (e.g., RFC 1234). + + The values sixToFour, sixOverFour, and isatap + indicates that an IPv6 packet is encapsulated directly + within an IPv4 header, with no intermediate header, + and unicast to the destination determined by the 6to4, + 6over4, or ISATAP protocol. + + The remaining protocol-specific values indicate that a + header of the protocol of that name is inserted + between the outer header and the payload header. + + The assignment policy for IANAtunnelType values is + identical to the policy for assigning IANAifType + values." + SYNTAX INTEGER { + other(1), -- none of the following + direct(2), -- no intermediate header + gre(3), -- GRE encapsulation + minimal(4), -- Minimal encapsulation + l2tp(5), -- L2TP encapsulation + pptp(6), -- PPTP encapsulation + l2f(7), -- L2F encapsulation + udp(8), -- UDP encapsulation + atmp(9), -- ATMP encapsulation + msdp(10), -- MSDP encapsulation + sixToFour(11), -- 6to4 encapsulation + sixOverFour(12), -- 6over4 encapsulation + isatap(13), -- ISATAP encapsulation + teredo(14) -- Teredo encapsulation + } + + END + + + + + + + + + diff --git a/mibs/iana/Makefile.am b/mibs/iana/Makefile.am new file mode 100644 index 0000000..2f63cbd --- /dev/null +++ b/mibs/iana/Makefile.am @@ -0,0 +1,21 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/iana Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 6629 2007-03-05 14:59:30Z strauss $ +# + +ianadir = $(mibdir)/iana +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +iana_DATA = $(MIBS) +MIBURLS = http://www.iana.org/assignments/ianaaddressfamilynumbers-mib http://www.iana.org/assignments/ianacharset-mib http://www.iana.org/assignments/ianafinisher-mib http://www.iana.org/assignments/ianaiftype-mib http://www.iana.org/assignments/ianaiprouteprotocol-mib http://www.iana.org/assignments/ianalanguage-mib http://www.iana.org/assignments/ianamalloc-mib http://www.iana.org/assignments/ianaprinter-mib http://www.iana.org/assignments/ianatn3270etc-mib http://www.iana.org/assignments/ianagmplstc-mib http://www.iana.org/assignments/ianaippmmetricsregistry-mib http://www.iana.org/assignments/ianaitualarmtc-mib http://www.iana.org/assignments/ianamau-mib + +download: + mkdir tmp ; cd tmp ; for m in $(MIBURLS) ; do curl -s -O $$m ; b=`basename $$m` ; f=`head -5 $$b | grep DEFINITIONS | awk '{print $$1}'` ; cmp -s $$b ../$$f || cp -v $$b ../$$f ; done ; cd .. ; rm -rf tmp diff --git a/mibs/iana/Makefile.in b/mibs/iana/Makefile.in new file mode 100644 index 0000000..562e909 --- /dev/null +++ b/mibs/iana/Makefile.in @@ -0,0 +1,392 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/iana Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 6629 2007-03-05 14:59:30Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/iana +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(ianadir)" +ianaDATA_INSTALL = $(INSTALL_DATA) +DATA = $(iana_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ianadir = $(mibdir)/iana +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +iana_DATA = $(MIBS) +MIBURLS = http://www.iana.org/assignments/ianaaddressfamilynumbers-mib http://www.iana.org/assignments/ianacharset-mib http://www.iana.org/assignments/ianafinisher-mib http://www.iana.org/assignments/ianaiftype-mib http://www.iana.org/assignments/ianaiprouteprotocol-mib http://www.iana.org/assignments/ianalanguage-mib http://www.iana.org/assignments/ianamalloc-mib http://www.iana.org/assignments/ianaprinter-mib http://www.iana.org/assignments/ianatn3270etc-mib http://www.iana.org/assignments/ianagmplstc-mib http://www.iana.org/assignments/ianaippmmetricsregistry-mib http://www.iana.org/assignments/ianaitualarmtc-mib http://www.iana.org/assignments/ianamau-mib +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/iana/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/iana/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-ianaDATA: $(iana_DATA) + @$(NORMAL_INSTALL) + test -z "$(ianadir)" || $(MKDIR_P) "$(DESTDIR)$(ianadir)" + @list='$(iana_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(ianaDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ianadir)/$$f'"; \ + $(ianaDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ianadir)/$$f"; \ + done + +uninstall-ianaDATA: + @$(NORMAL_UNINSTALL) + @list='$(iana_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(ianadir)/$$f'"; \ + rm -f "$(DESTDIR)$(ianadir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(ianadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-ianaDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-ianaDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-ianaDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-ianaDATA + + +download: + mkdir tmp ; cd tmp ; for m in $(MIBURLS) ; do curl -s -O $$m ; b=`basename $$m` ; f=`head -5 $$b | grep DEFINITIONS | awk '{print $$1}'` ; cmp -s $$b ../$$f || cp -v $$b ../$$f ; done ; cd .. ; rm -rf tmp +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/ietf/ACCOUNTING-CONTROL-MIB b/mibs/ietf/ACCOUNTING-CONTROL-MIB new file mode 100644 index 0000000..4b66b7c --- /dev/null +++ b/mibs/ietf/ACCOUNTING-CONTROL-MIB @@ -0,0 +1,771 @@ +ACCOUNTING-CONTROL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + mib-2, Integer32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TestAndIncr, + DisplayString, TruthValue FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + ifIndex FROM IF-MIB; + + +accountingControlMIB MODULE-IDENTITY + LAST-UPDATED "9809281000Z" + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO "Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for managing the collection and storage of + accounting information for connections in a connection- + oriented network such as ATM." + ::= { mib-2 60 } + + +acctngMIBObjects OBJECT IDENTIFIER ::= { accountingControlMIB 1 } + +acctngSelectionControl OBJECT IDENTIFIER ::= { acctngMIBObjects 1 } +acctngFileControl OBJECT IDENTIFIER ::= { acctngMIBObjects 2 } +acctngInterfaceControl OBJECT IDENTIFIER ::= { acctngMIBObjects 3 } +acctngTrapControl OBJECT IDENTIFIER ::= { acctngMIBObjects 4 } + +-- Textual Conventions + + +DataCollectionSubtree ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The subtree component of a (subtree, list) tuple. Such a + (subtree, list) tuple defines a set of objects and their + values to be collected as accounting data for a connection. + The subtree specifies a single OBJECT IDENTIFIER value such + that each object in the set is named by the subtree value + appended with a single additional sub-identifier." + SYNTAX OBJECT IDENTIFIER + +DataCollectionList ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The list component of a (subtree, list) tuple. Such a + (subtree, list) tuple defines a set of objects and their + values to be collected as accounting data for a connection. + The subtree specifies a single OBJECT IDENTIFIER value such + that each object in the set is named by the subtree value + appended with a single additional sub-identifier. The list + specifies a set of data items, where the presence of an item + in the list indicates that the item is (to be) present in + the data collected for a connection; the absence of an item + from the list indicates that the item is not (to be) present + in the data collected for a connection. Each data item is + represented by an integer which when appended (as as + additional sub-identifier) to the OBJECT IDENTIFIER value of + the subtree identified by the tuple, is the name of an + object defining that data item (its description and its + syntax). + + The list is specified as an OCTET STRING in which each data + item is represented by a single bit, where data items 1 + through 8 are represented by the bits in the first octet, + data items 9 through 16 by the bits in the second octet, + etc. In each octet, the lowest numbered data item is + represented by the most significant bit, and the highest + numbered data item by the least significant bit. A data + item is present in the list when its bit is set, and absent + when its bit is reset. If the length of an OCTET STRING + value is too short to represent one or more data items + defined in a subtree, then those data items are absent from + the set identified by the tuple of that subtree and that + OCTET STRING value." + SYNTAX OCTET STRING (SIZE(0..8)) + +FileIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An arbitrary integer value identifying a file into which + accounting data is being collected." + SYNTAX Integer32 (1..65535) + + +-- The Accounting Information Selection table + +acctngSelectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF AcctngSelectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of accounting information selection entries. + + Note that additions, modifications and deletions of entries + in this table can occur at any time, but such changes only + take effect on the next occasion when collection begins into + a new file. Thus, between modification and the next 'swap', + the content of this table does not reflect the current + selection." + ::= { acctngSelectionControl 1 } + +acctngSelectionEntry OBJECT-TYPE + SYNTAX AcctngSelectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry identifying an (subtree, list) tuple used to + select a set of accounting information which is to be + collected." + INDEX { acctngSelectionIndex } + ::= { acctngSelectionTable 1 } + +AcctngSelectionEntry ::= + SEQUENCE { + acctngSelectionIndex Integer32, + acctngSelectionSubtree DataCollectionSubtree, + acctngSelectionList DataCollectionList, + acctngSelectionFile FileIndex, + acctngSelectionType BITS, + acctngSelectionRowStatus RowStatus + } + +acctngSelectionIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer value which uniquely identifies a + tuple stored in this table. This value is required to be + the permanent 'handle' for an entry in this table for as + long as that entry exists, including across restarts and + power outages." + ::= { acctngSelectionEntry 1 } + +acctngSelectionSubtree OBJECT-TYPE + SYNTAX DataCollectionSubtree + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The combination of acctngSelectionSubtree and + acctngSelectionList specifies one (subtree, list) tuple + which is to be collected." + ::= { acctngSelectionEntry 2 } + +acctngSelectionList OBJECT-TYPE + SYNTAX DataCollectionList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The combination of acctngSelectionSubtree and + acctngSelectionList specifies one (subtree, list) tuple + which is to be collected." + ::= { acctngSelectionEntry 3 } + +acctngSelectionFile OBJECT-TYPE + SYNTAX FileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of the file into which the accounting + information identified by this entry is to be stored. If + there is no conceptual row in the acctngFileTable for which + the value of acctngFileIndex has the same value as this + object, then the information selected by this entry is not + collected." + ::= { acctngSelectionEntry 4 } + +acctngSelectionType OBJECT-TYPE + SYNTAX BITS { svcIncoming(0), + svcOutgoing(1), + svpIncoming(2), + svpOutgoing(3), + pvc(4), + pvp(5), + spvcOriginator(6), + spvcTarget(7), + spvpOriginator(8), + spvpTarget(9) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the types of connections for which the + information selected by this entry are to be collected." + DEFVAL { { svcIncoming, svcOutgoing, + svpIncoming, svpOutgoing } } + ::= { acctngSelectionEntry 5 } + +acctngSelectionRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. An agent may refuse to + create new conceptual rows and/or modify existing conceptual + rows, if such creation/modification would cause multiple + rows to have the same values of acctngSelectionSubtree and + acctngSelectionList. + + A conceptual row can not have the status of 'active' until + values have been assigned to the acctngSelectionSubtree, + acctngSelectionList and acctngSelectionFile columnar objects + within that row. + + An agent must not refuse to change the values of the + acctngSelectionSubtree, acctngSelectionList and + acctngSelectionFile columnar objects within a conceptual row + even while that row's status is 'active'. Similarly, an + agent must not refuse to destroy an existing conceptual row + while the file referenced by that row's instance of + acctngSelectionFile is in active use, i.e., while the + corresponding instance of acctngFileRowStatus has the value + 'active'. However, such changes only take effect upon the + next occasion when collection begins into a new (version of + the) file." + ::= { acctngSelectionEntry 6 } + +-- The Accounting File table + +acctngFileTable OBJECT-TYPE + SYNTAX SEQUENCE OF AcctngFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of files into which accounting information is to be + stored." + ::= { acctngFileControl 1 } + +acctngFileEntry OBJECT-TYPE + SYNTAX AcctngFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry identifying a file into which accounting + information is to be collected." + INDEX { acctngFileIndex } + ::= { acctngFileTable 1 } + +AcctngFileEntry ::= + SEQUENCE { + acctngFileIndex FileIndex, + acctngFileName DisplayString, + acctngFileNameSuffix DisplayString, + acctngFileDescription DisplayString, + acctngFileCommand INTEGER, + acctngFileMaximumSize Integer32, + acctngFileCurrentSize Integer32, + acctngFileFormat INTEGER, + acctngFileCollectMode BITS, + acctngFileCollectFailedAttempts BITS, + acctngFileInterval Integer32, + acctngFileMinAge Integer32, + acctngFileRowStatus RowStatus + } + +acctngFileIndex OBJECT-TYPE + SYNTAX FileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value identifying a file into which accounting + data is to be stored. This value is required to be the + permanent 'handle' for an entry in this table for as long as + that entry exists, including across restarts and power + outages." + ::= { acctngFileEntry 1 } + +acctngFileName OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the file into which accounting data is to be + stored. If files are named using suffixes, then the name of + the current file is the concatenation of acctngFileName and + acctngFileNameSuffix. + + An agent will respond with an error (e.g., 'wrongValue') to + a management set operation which attempts to modify the + value of this object to the same value as already held by + another instance of acctngFileName. An agent will also + respond with an error (e.g., 'wrongValue') if the new value + is invalid for use as a file name on the local file system + (e.g., many file systems do not support white space embedded + in file names). + + The value of this object can not be modified while the + corresponding instance of acctngFileRowStatus is 'active'." + ::= { acctngFileEntry 2 } + +acctngFileNameSuffix OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The suffix, if any, of the name of a file into which + accounting data is currently being stored. If suffixes are + not used, then the value of this object is the zero-length + string. Note that if a separator, such as a period, is used + in appending the suffix to the file name, then that + separator appears as the first character of this value." + ::= { acctngFileEntry 3 } + +acctngFileDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The textual description of the accounting data which will + be stored (on the next occasion) when header information is + stored in the file. The value of this object may be + modified at any time." + DEFVAL { "" } + ::= { acctngFileEntry 4 } + +acctngFileCommand OBJECT-TYPE + SYNTAX INTEGER { + -- the following two values are states: + -- they may be read but not written + idle(1), + cmdInProgress(2), + -- the following two values are actions: + -- they may be written, but are never read + swapToNewFile(3), + collectNow(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control object for the collection of accounting data. + When read the value is either 'idle' or 'cmdInProgress'. + Writing a value is only allowed when the current value is + 'idle'. When a value is successfully written, the value + changes to 'cmdInProgress' until completion of the action, + at which time the value reverts to 'idle'. Actions are + invoked by writing the following values: + + 'swapToNewFile' - the collection of data into the current + file is terminated, and collection continues into + a new (version of the) file. + + 'collectNow' - the agent creates and stores a connection + record into the current file for each active + connection having a type matching + acctngSelectionType and an age greater than + acctngFileMinAge." + DEFVAL { idle } + ::= { acctngFileEntry 5 } + +acctngFileMaximumSize OBJECT-TYPE + SYNTAX Integer32 (100..2147483647) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum size of the file (including header + information). When the file of collected data reaches this + size, either the agent automatically swaps to a new version + (i.e., a new value acctngFileNameSuffix) of the file, or new + records are discarded. Since a file must contain an + integral number of connection records, the actual maximum + size of the file may be just less OR Just greater than the + value of this object. + + The value of this object can not be modified while the + corresponding instance of acctngFileRowStatus is 'active'. + The largest value of the maximum file size in some agents + will be less than 2147483647 bytes." + DEFVAL { 5000000 } + ::= { acctngFileEntry 6 } + +acctngFileCurrentSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current size of the file into which data is currently + being collected, including header information." + ::= { acctngFileEntry 7 } + +acctngFileFormat OBJECT-TYPE + SYNTAX INTEGER { other(1), ber(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of the format in which the accounting data is + to be stored in the file. If the value is modified, the new + value takes effect after the next 'swap' to a new file. The + value ber(2) indicates the standard format." + DEFVAL { ber } + ::= { acctngFileEntry 8 } + +acctngFileCollectMode OBJECT-TYPE + SYNTAX BITS { onRelease(0), periodically(1) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of when accounting data is to be written into + this file. Note that in addition to the occasions indicated + by the value of this object, an agent always writes + information on appropriate connections to the file when the + corresponding instance of acctngFileCommand is set to + 'collectNow'. + + - 'onRelease' - whenever a connection (or possibly, + connection attempt) is terminated, either through + a Release message or through management removal, + information on that connection is written. + + - 'periodically' - information on appropriate connections + is written on the expiry of a periodic timer, + + This value may be modified at any time." + DEFVAL { { onRelease } } + ::= { acctngFileEntry 9 } + +acctngFileCollectFailedAttempts OBJECT-TYPE + SYNTAX BITS { soft(0), regular(1) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of whether connection data is to be collected + for failed connection attempts when the value of the + corresponding instance of acctngFileCollectMode includes + 'onRelease'. The individual values have the following + meaning: + + 'soft' - indicates that connection data is to be collected + for failed Soft PVCs/PVPs which originate or terminate at + the relevant interface. + + 'regular' - indicates that connection data is to be + collected for failed SVCs, including Soft PVCs/PVPs not + originating or terminating at the relevant interface. + + This value may be modified at any time." + DEFVAL { { soft, regular } } + ::= { acctngFileEntry 10 } + +acctngFileInterval OBJECT-TYPE + SYNTAX Integer32 (60..86400) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between the periodic collections of + accounting data when the value of the corresponding instance + of acctngFileCollectMode includes 'periodically'. Some + agents may impose restrictions on the range of this + interval. This value may be modified at any time." + DEFVAL { 3600 } + ::= { acctngFileEntry 11 } + +acctngFileMinAge OBJECT-TYPE + SYNTAX Integer32 (60..86400) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum age of a connection, as used to determine the + set of connections for which data is to be collected at the + periodic intervals and/or when acctngFileCommand is set to + 'collectNow'. The age of a connection is the elapsed time + since it was last installed. + + When the periodic interval expires for a file or when + acctngFileCommand is set to 'collectNow', accounting data is + collected and stored in the file for each connection having + a type matching acctngSelectionType and whose age at that + time is greater than the value of acctngFileMinAge + associated with the file. This value may be modified at any + time." + DEFVAL { 3600 } + ::= { acctngFileEntry 12 } + +acctngFileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + This object can not be set to 'active' until a value has + been assigned to the corresponding instance of + acctngFileName. Collection of data into the file does not + begin until this object has the value 'active' and one or + more (active) instances of acctngSelectionFile refer to it. + If this value is modified after a collection has begun, + collection into this file terminates and a new (or new + version of the) file is immediately made ready for future + collection (as if acctngFileCommand had been set to + 'swapToNewFile'), but collection into the new (or new + version of the) file does not begin until the value is + subsequently set back to active." + ::= { acctngFileEntry 13 } + +-- Overall Control + +acctngAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control object to indicate the administratively desired + state of the collection of accounting records across all + interfaces. + + Modifying the value of acctngAdminStatus to 'disabled' does + not remove or change the current configuration as + represented by the active rows in the acctngSelectionTable, + acctngFileTable and acctngInterfaceTable tables." + ::= { acctngInterfaceControl 1 } + +acctngOperStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A status object to indicate the operational state of the + collection of accounting records across all interfaces. + + When the value of acctngAdminStatus is modified to be + 'enabled', the value of this object will change to 'enabled' + providing it is possible to begin collecting accounting + records. + + When the value of acctngAdminStatus is modified to be + 'disabled', the value of this object will change to + 'disabled' as soon as the collection of accounting records + has terminated." + ::= { acctngInterfaceControl 2 } + +acctngProtection OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control object to protect against duplication of control + commands. Over some transport/network protocols, it is + possible for SNMP messages to get duplicated. Such + duplication, if it occurred at just the wrong time could + cause serious disruption to the collection and retrieval of + accounting data, e.g., if a SNMP message setting + acctngFileCommand to 'swapToNewFile' were to be duplicated, + a whole file of accounting data could be lost. + + To protect against such duplication, a management + application should retrieve the value of this object, and + include in the Set operation needing protection, a variable + binding which sets this object to the retrieved value." + ::= { acctngInterfaceControl 3 } + +acctngAgentMode OBJECT-TYPE + SYNTAX INTEGER { swapOnCommand(1), swapOnFull(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the behaviour mode of the agent when a + file becomes full: + + 'swapOnCommand' - the agent does not automatically swap + to a new file; rather, it discards newly collected + data until a management application subsequently + instructs it to swap to a new file. + + 'swapOnFull' - the agent terminates collection into the + current file as and when that file becomes full." + ::= { acctngInterfaceControl 4 } + + +-- Per-interface control table + +acctngInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF AcctngInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table controlling the collection of accounting data on + specific interfaces of the switch." + ::= { acctngInterfaceControl 5 } + +acctngInterfaceEntry OBJECT-TYPE + SYNTAX AcctngInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry which controls whether accounting data is to be + collected on an interface. The types of interfaces which + are represented in this table is implementation-specific." + INDEX { ifIndex } + ::= { acctngInterfaceTable 1 } + +AcctngInterfaceEntry ::= + SEQUENCE { + acctngInterfaceEnable TruthValue + } + +acctngInterfaceEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the collection of accounting data is + enabled on this interface." + ::= { acctngInterfaceEntry 1 } + +-- Objects for controlling the use of Notifications + +acctngControlTrapThreshold OBJECT-TYPE + SYNTAX INTEGER (0..99) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A percentage of the maximum file size at which a 'nearly- + full' trap is generated. The value of 0 indicates that no + 'nearly-full' trap is to be generated." + ::= { acctngTrapControl 1 } + +acctngControlTrapEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An indication of whether the acctngFileNearlyFull and + acctngFileFull traps are enabled." + ::= { acctngTrapControl 2 } + +-- notifications + +acctngNotifications OBJECT IDENTIFIER ::= { accountingControlMIB 2 } + +acctngNotifyPrefix OBJECT IDENTIFIER ::= { acctngNotifications 0 } + + +acctngFileNearlyFull NOTIFICATION-TYPE + OBJECTS { acctngFileName, + acctngFileMaximumSize, + acctngControlTrapThreshold, + acctngFileNameSuffix } + STATUS current + DESCRIPTION + "An indication that the size of the file into which + accounting information is currently being collected has + exceeded the threshold percentage of its maximum file size. + This notification is generated only at the time of the + transition from not-exceeding to exceeding." + ::= { acctngNotifyPrefix 1 } + + +acctngFileFull NOTIFICATION-TYPE + OBJECTS { acctngFileName, + acctngFileMaximumSize, + acctngFileNameSuffix } + STATUS current + DESCRIPTION + "An indication that the size of the file into which + accounting information is currently being collected has + transistioned to its maximum file size. This notification + is generated (for all values of acctngAgentMode) at the time + of the transition from not-full to full. If acctngAgentMode + has the value 'swapOnCommand', it is also generated + periodically thereafter until such time as collection of + data is no longer inhibited by the file full condition." + ::= { acctngNotifyPrefix 2 } + + +-- conformance information + +acctngConformance OBJECT IDENTIFIER ::= { accountingControlMIB 3 } +acctngGroups OBJECT IDENTIFIER ::= { acctngConformance 1 } +acctngCompliances OBJECT IDENTIFIER ::= { acctngConformance 2 } + +acctngCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for switches which implement the + Accounting Control MIB." + + MODULE -- this module + MANDATORY-GROUPS { acctngBasicGroup, + acctngNotificationsGroup } + + OBJECT acctngSelectionType + SYNTAX BITS { svcIncoming(0), svcOutgoing(1) } + DESCRIPTION "The minimal requirement is collection for SVCs." + + OBJECT acctngSelectionRowStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileCommand + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileFormat + SYNTAX INTEGER { ber(2) } + MIN-ACCESS read-only + DESCRIPTION "Only the standard format is required, and write + access is not required." + + OBJECT acctngFileMaximumSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileCollectMode + SYNTAX BITS { onRelease(0) } + MIN-ACCESS read-only + DESCRIPTION "The minimal requirement is for collection on + connection release." + + OBJECT acctngFileInterval + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileCollectFailedAttempts + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT acctngFileRowStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { acctngCompliances 1 } + + +-- units of conformance + +acctngBasicGroup OBJECT-GROUP + OBJECTS { acctngSelectionSubtree, acctngSelectionList, + acctngSelectionFile, acctngSelectionType, + acctngSelectionRowStatus, acctngFileName, + acctngFileNameSuffix, acctngFileDescription, + acctngFileCommand, acctngFileMaximumSize, + acctngFileCurrentSize, acctngFileRowStatus, + acctngFileFormat, acctngFileCollectMode, + acctngFileCollectFailedAttempts, acctngFileInterval, + acctngFileMinAge, + acctngAdminStatus, acctngOperStatus, + acctngProtection, acctngAgentMode, + acctngInterfaceEnable, + acctngControlTrapThreshold, + acctngControlTrapEnable + } + STATUS current + DESCRIPTION + "A collection of objects providing control of the basic + collection of accounting data for connection-oriented + networks." + ::= { acctngGroups 1 } + +acctngNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { acctngFileNearlyFull, acctngFileFull } + STATUS current + DESCRIPTION + "The notifications of events relating to controlling the + collection of accounting data." + ::= { acctngGroups 2 } + +END diff --git a/mibs/ietf/ADSL-LINE-EXT-MIB b/mibs/ietf/ADSL-LINE-EXT-MIB new file mode 100644 index 0000000..f948ea9 --- /dev/null +++ b/mibs/ietf/ADSL-LINE-EXT-MIB @@ -0,0 +1,1245 @@ +ADSL-LINE-EXT-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter32, + Integer32, + NOTIFICATION-TYPE, + MODULE-IDENTITY, + OBJECT-TYPE FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + TEXTUAL-CONVENTION FROM SNMPv2-TC + PerfCurrentCount, + + + + PerfIntervalCount FROM PerfHist-TC-MIB + AdslPerfCurrDayCount, + AdslPerfPrevDayCount FROM ADSL-TC-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + adslLineAlarmConfProfileEntry, + adslLineConfProfileEntry, + adslAturIntervalEntry, + adslAturPerfDataEntry, + adslAtucIntervalEntry, + adslAtucPerfDataEntry, + adslLineEntry, + adslMIB FROM ADSL-LINE-MIB + ; + + adslExtMIB MODULE-IDENTITY + + LAST-UPDATED "200212100000Z" -- 10 Dec 2002 + + ORGANIZATION "IETF ADSL MIB Working Group" + + CONTACT-INFO + " + Faye Ly + Pedestal Networks + 6503 Dumbarton Circle, + Fremont, CA 94555 + Tel: +1 510-578-0158 + Fax: +1 510-744-5152 + E-Mail: faye@pedestalnetworks.com + + Gregory Bathrick + Nokia Networks + 2235 Mercury Way, + Fax: +1 707-535-7300 + E-Mail: greg.bathrick@nokia.com + + General Discussion:adslmib@ietf.org + To Subscribe: https://www1.ietf.org/mailman/listinfo/adslmib + Archive: https://www1.ietf.org/mailman/listinfo/adslmib + " + DESCRIPTION + "Copyright (C) The Internet Society (2002). This version of + this MIB module is part of RFC 3440; see the RFC itself for + full legal notices. + + This MIB Module is a supplement to the ADSL-LINE-MIB + [RFC2662]." + + + + + REVISION "200212100000Z" -- 10 dec 2002 + DESCRIPTION "Initial Version, published as RFC 3440. This MIB + module supplements the ADSL-LINE-MIB [RFC2662]." + ::= { adslMIB 3 } + + adslExtMibObjects OBJECT IDENTIFIER ::= { adslExtMIB 1 } + + AdslTransmissionModeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A set of ADSL line transmission modes, with one bit + per mode. The notes (F) and (L) denote Full-Rate + and G.Lite respectively: + Bit 00 : Regional Std. (ANSI T1.413) (F) + Bit 01 : Regional Std. (ETSI DTS/TM06006) (F) + Bit 02 : G.992.1 POTS non-overlapped (F) + Bit 03 : G.992.1 POTS overlapped (F) + Bit 04 : G.992.1 ISDN non-overlapped (F) + Bit 05 : G.992.1 ISDN overlapped (F) + Bit 06 : G.992.1 TCM-ISDN non-overlapped (F) + Bit 07 : G.992.1 TCM-ISDN overlapped (F) + Bit 08 : G.992.2 POTS non-overlapped (L) + Bit 09 : G.992.2 POTS overlapped (L) + Bit 10 : G.992.2 with TCM-ISDN non-overlapped (L) + Bit 11 : G.992.2 with TCM-ISDN overlapped (L) + Bit 12 : G.992.1 TCM-ISDN symmetric (F) + " + SYNTAX BITS { + ansit1413(0), + etsi(1), + q9921PotsNonOverlapped(2), + q9921PotsOverlapped(3), + q9921IsdnNonOverlapped(4), + q9921isdnOverlapped(5), + q9921tcmIsdnNonOverlapped(6), + q9921tcmIsdnOverlapped(7), + q9922potsNonOverlapeed(8), + q9922potsOverlapped(9), + q9922tcmIsdnNonOverlapped(10), + q9922tcmIsdnOverlapped(11), + q9921tcmIsdnSymmetric(12) + } + + adslLineExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslLineExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table is an extension of RFC 2662. It + contains ADSL line configuration and + monitoring information. This includes the ADSL + line's capabilities and actual ADSL transmission + system." + ::= { adslExtMibObjects 17 } + + adslLineExtEntry OBJECT-TYPE + SYNTAX AdslLineExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the adslLineEntry defined in + [RFC2662]. Each entry corresponds to an ADSL + line." + AUGMENTS { adslLineEntry } + ::= { adslLineExtTable 1 } + + AdslLineExtEntry ::= + SEQUENCE { + adslLineTransAtucCap AdslTransmissionModeType, + adslLineTransAtucConfig AdslTransmissionModeType, + adslLineTransAtucActual AdslTransmissionModeType, + adslLineGlitePowerState INTEGER, + adslLineConfProfileDualLite SnmpAdminString + } + + adslLineTransAtucCap OBJECT-TYPE + SYNTAX AdslTransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmission modes, represented by a + bitmask that the ATU-C is capable of + supporting. The modes available are limited + by the design of the equipment." + REFERENCE "Section 7.3.2 ITU G.997.1" + ::= { adslLineExtEntry 1 } + + adslLineTransAtucConfig OBJECT-TYPE + SYNTAX AdslTransmissionModeType + MAX-ACCESS read-write + STATUS current + + DESCRIPTION + "The transmission modes, represented by a bitmask, + currently enabled by the ATU-C. The manager can + only set those modes that are supported by the + + + + ATU-C. An ATU-C's supported modes are provided by + AdslLineTransAtucCap." + REFERENCE "Section 7.3.2 ITU G.997.1" + ::= { adslLineExtEntry 2 } + + adslLineTransAtucActual OBJECT-TYPE + SYNTAX AdslTransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual transmission mode of the ATU-C. + During ADSL line initialization, the ADSL + Transceiver Unit - Remote terminal end (ATU-R) + will determine the mode used for the link. + This value will be limited a single transmission + mode that is a subset of those modes enabled + by the ATU-C and denoted by + adslLineTransAtucConfig. After an initialization + has occurred, its mode is saved as the 'Current' + mode and is persistence should the link go + down. This object returns 0 (i.e. BITS with no + mode bit set) if the mode is not known." + REFERENCE "Section 7.3.2 ITU G.997.1 " + ::= { adslLineExtEntry 3 } + + adslLineGlitePowerState OBJECT-TYPE + SYNTAX INTEGER { + none(1), + l0(2), -- L0 Power on + l1(3), -- L1 Power on but reduced + l3(4) -- L3 Power off + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object specifies the power + state of this interface. L0 is power on, L1 is + power on but reduced and L3 is power off. Power + state cannot be configured by an operator but it + can be viewed via the ifOperStatus object for the + managed ADSL interface. The value of the object + ifOperStatus is set to down(2) if the ADSL + interface is in power state L3 and is set to up(1) + if the ADSL line interface is in power state L0 or + L1. If the object adslLineTransAtucActual is set to + a G.992.2 (G.Lite)-type transmission mode, the + value of this object will be one of the valid power + states: L0(2), L1(3), or L3(4). Otherwise, its + + + + value will be none(1)." + ::= { adslLineExtEntry 4 } + + adslLineConfProfileDualLite OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object extends the definition an ADSL line and + associated channels (when applicable) for cases + when it is configured in dual mode, and operating + in a G.Lite-type mode as denoted by + adslLineTransAtucActual. Dual mode exists when the + object, adslLineTransAtucConfig, is configured with + one or more full-rate modes and one or more G.Lite + modes simultaneously. + + When 'dynamic' profiles are implemented, the value + of object is equal to the index of the applicable + row in the ADSL Line Configuration Profile Table, + AdslLineConfProfileTable defined in ADSL-MIB + [RFC2662]. + + In the case when dual-mode has not been enabled, + the value of the object will be equal to the value + of the object adslLineConfProfile [RFC2662]. + + When `static' profiles are implemented, in much + like the case of the object, + adslLineConfProfileName [RFC2662], this object's + value will need to algorithmically represent the + characteristics of the line. In this case, the + value of the line's ifIndex plus a value indicating + the line mode type (e.g., G.Lite, Full-rate) will + be used. Therefore, the profile's name is a string + concatenating the ifIndex and one of the follow + values: Full or Lite. This string will be + fixed-length (i.e., 14) with leading zero(s). For + example, the profile name for ifIndex that equals + '15' and is a full rate line, it will be + '0000000015Full'." + REFERENCE "Section 5.4 Profiles, RFC 2662" + ::= { adslLineExtEntry 5 } + + adslAtucPerfDataExtTable OBJECT-TYPE + + SYNTAX SEQUENCE OF AdslAtucPerfDataExtEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table extends adslAtucPerfDataTable [RFC2662] + with additional ADSL physical line counter + information such as unavailable seconds-line and + severely errored seconds-line." + ::= { adslExtMibObjects 18 } + + adslAtucPerfDataExtEntry OBJECT-TYPE + SYNTAX AdslAtucPerfDataExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the adslAtucPerfDataEntry defined + in [RFC2662]. Each entry corresponds to an ADSL + line." + AUGMENTS { adslAtucPerfDataEntry } + ::= { adslAtucPerfDataExtTable 1 } + + AdslAtucPerfDataExtEntry ::= + SEQUENCE { + adslAtucPerfStatFastR Counter32, + adslAtucPerfStatFailedFastR Counter32, + adslAtucPerfStatSesL Counter32, + adslAtucPerfStatUasL Counter32, + adslAtucPerfCurr15MinFastR PerfCurrentCount, + adslAtucPerfCurr15MinFailedFastR PerfCurrentCount, + adslAtucPerfCurr15MinSesL PerfCurrentCount, + adslAtucPerfCurr15MinUasL PerfCurrentCount, + adslAtucPerfCurr1DayFastR AdslPerfCurrDayCount, + adslAtucPerfCurr1DayFailedFastR AdslPerfCurrDayCount, + adslAtucPerfCurr1DaySesL AdslPerfCurrDayCount, + adslAtucPerfCurr1DayUasL AdslPerfCurrDayCount, + adslAtucPerfPrev1DayFastR AdslPerfPrevDayCount, + adslAtucPerfPrev1DayFailedFastR AdslPerfPrevDayCount, + adslAtucPerfPrev1DaySesL AdslPerfPrevDayCount, + adslAtucPerfPrev1DayUasL AdslPerfPrevDayCount + } + + adslAtucPerfStatFastR OBJECT-TYPE + SYNTAX Counter32 + UNITS "line retrains" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + the number of fast line bs since last + agent reset." + + + + REFERENCE "ITU G.997.1 Section 7.4.15.1 " + ::= { adslAtucPerfDataExtEntry 1 } + + adslAtucPerfStatFailedFastR OBJECT-TYPE + SYNTAX Counter32 + UNITS "line retrains" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + the number of failed fast line retrains since + last agent reset." + REFERENCE "ITU G.997.1 Section 7.4.15.2 " + ::= { adslAtucPerfDataExtEntry 2 } + + adslAtucPerfStatSesL OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + the number of severely errored seconds-line since + last agent reset." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAtucPerfDataExtEntry 3 } + + adslAtucPerfStatUasL OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + the number of unavailable seconds-line since + last agent reset." + REFERENCE "ITU G.997.1 Section 7.2.1.1.9 " + ::= { adslAtucPerfDataExtEntry 4 } + + adslAtucPerfCurr15MinFastR OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAtucPerfCurr15MinFastR reports the current + number of seconds during which there have been + + + + fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.1 " + ::= { adslAtucPerfDataExtEntry 5 } + + adslAtucPerfCurr15MinFailedFastR OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAtucPerfCurr15MinFailedFastR reports the + current number of seconds during which there + have been failed fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.2 " + ::= { adslAtucPerfDataExtEntry 6 } + + adslAtucPerfCurr15MinSesL OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAtucPerfCurr15MinSesL reports the current + number of seconds during which there have been + severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAtucPerfDataExtEntry 7 } + + adslAtucPerfCurr15MinUasL OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAtucPerfCurr15MinUasL reports the current + number of seconds during which there have been + unavailable seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.9 " + ::= { adslAtucPerfDataExtEntry 8 } + + adslAtucPerfCurr1DayFastR OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "For the current day as measured by + adslAtucPerfCurr1DayTimeElapsed [RFC2662], + adslAtucPerfCurr1DayFastR reports the number + of seconds during which there have been + fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.1 " + ::= { adslAtucPerfDataExtEntry 9 } + + adslAtucPerfCurr1DayFailedFastR OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAtucPerfCurr1DayTimeElapsed [RFC2662], + adslAtucPerfCurr1DayFailedFastR reports the + number of seconds during which there have been + failed fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.2 " + ::= { adslAtucPerfDataExtEntry 10 } + + adslAtucPerfCurr1DaySesL OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAtucPerfCurr1DayTimeElapsed [RFC2662], + adslAtucPerfCurr1DaySesL reports the + number of seconds during which there have been + severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAtucPerfDataExtEntry 11 } + + adslAtucPerfCurr1DayUasL OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAtucPerfCurr1DayTimeElapsed [RFC2662], + adslAtucPerfCurr1DayUasL reports the + number of seconds during which there have been + unavailable seconds-line." + + + + REFERENCE "ITU G.997.1 Section 7.2.1.1.9 " + ::= { adslAtucPerfDataExtEntry 12 } + + adslAtucPerfPrev1DayFastR OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, adslAtucPerfPrev1DayFastR + reports the number of seconds during which there + were fast retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.1 " + ::= { adslAtucPerfDataExtEntry 13 } + + adslAtucPerfPrev1DayFailedFastR OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, + adslAtucPerfPrev1DayFailedFastR reports the number + of seconds during which there were failed fast + retrains." + REFERENCE "ITU G.997.1 Section 7.4.15.2 " + ::= { adslAtucPerfDataExtEntry 14 } + + adslAtucPerfPrev1DaySesL OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, adslAtucPerfPrev1DaySesL + reports the number of seconds during which there + were severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAtucPerfDataExtEntry 15 } + + adslAtucPerfPrev1DayUasL OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, adslAtucPerfPrev1DayUasL + reports the number of seconds during which there + + + + were unavailable seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.1.9 " + ::= { adslAtucPerfDataExtEntry 16 } + + adslAtucIntervalExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucIntervalExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATU-C + performance data collection interval for + ADSL physical interfaces whose + IfEntries' ifType is equal to adsl(94)." + ::= { adslExtMibObjects 19 } + + adslAtucIntervalExtEntry OBJECT-TYPE + SYNTAX AdslAtucIntervalExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the + adslAtucIntervalExtTable." + AUGMENTS { adslAtucIntervalEntry } + ::= { adslAtucIntervalExtTable 1 } + + AdslAtucIntervalExtEntry ::= + SEQUENCE { + adslAtucIntervalFastR PerfIntervalCount, + adslAtucIntervalFailedFastR PerfIntervalCount, + adslAtucIntervalSesL PerfIntervalCount, + adslAtucIntervalUasL PerfIntervalCount + } + + adslAtucIntervalFastR OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current interval, adslAtucIntervalFastR + reports the current number of seconds during which + there have been fast retrains." + ::= { adslAtucIntervalExtEntry 1 } + + adslAtucIntervalFailedFastR OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "For the each interval, adslAtucIntervalFailedFastR + reports the number of seconds during which + there have been failed fast retrains." + ::= { adslAtucIntervalExtEntry 2 } + + adslAtucIntervalSesL OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the each interval, adslAtucIntervalSesL + reports the number of seconds during which + there have been severely errored seconds-line." + ::= { adslAtucIntervalExtEntry 3 } + + adslAtucIntervalUasL OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the each interval, adslAtucIntervalUasL + reports the number of seconds during which + there have been unavailable seconds-line." + ::= { adslAtucIntervalExtEntry 4 } + + adslAturPerfDataExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturPerfDataExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ADSL physical line counters + not defined in the adslAturPerfDataTable + from the ADSL-LINE-MIB [RFC2662]." + ::= { adslExtMibObjects 20 } + + adslAturPerfDataExtEntry OBJECT-TYPE + SYNTAX AdslAturPerfDataExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the adslAturPerfDataEntry defined + in [RFC2662]. Each entry corresponds to an ADSL + line." + AUGMENTS { adslAturPerfDataEntry } + ::= { adslAturPerfDataExtTable 1 } + + + + AdslAturPerfDataExtEntry ::= + SEQUENCE { + adslAturPerfStatSesL Counter32, + adslAturPerfStatUasL Counter32, + adslAturPerfCurr15MinSesL PerfCurrentCount, + adslAturPerfCurr15MinUasL PerfCurrentCount, + adslAturPerfCurr1DaySesL AdslPerfCurrDayCount, + adslAturPerfCurr1DayUasL AdslPerfCurrDayCount, + adslAturPerfPrev1DaySesL AdslPerfPrevDayCount, + adslAturPerfPrev1DayUasL AdslPerfPrevDayCount + } + + adslAturPerfStatSesL OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + severely errored second-line since the last agent + reset." + REFERENCE "ITU G.997.1 Section 7.2.1.1.7 " + ::= { adslAturPerfDataExtEntry 1 } + + adslAturPerfStatUasL OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reports the count of + unavailable seconds-line since the last agent + reset." + REFERENCE "ITU G.997.1 Section 7.2.1.2.9 " + ::= { adslAturPerfDataExtEntry 2 } + + adslAturPerfCurr15MinSesL OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAturPerfCurr15MinSesL reports the current + number of seconds during which there have been + severely errored seconds-line." + + REFERENCE "ITU G.997.1 Section 7.2.1.2.7 " + + + + ::= { adslAturPerfDataExtEntry 3 } + + adslAturPerfCurr15MinUasL OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current 15-minute interval, + adslAturPerfCurr15MinUasL reports the current + number of seconds during which there have been + available seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.9 " + ::= { adslAturPerfDataExtEntry 4 } + + adslAturPerfCurr1DaySesL OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAturPerfCurr1DayTimeElapsed [RFC2662], + adslAturPerfCurr1DaySesL reports the + number of seconds during which there have been + severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.7 " + ::= { adslAturPerfDataExtEntry 5 } + + adslAturPerfCurr1DayUasL OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the current day as measured by + adslAturPerfCurr1DayTimeElapsed [RFC2662], + adslAturPerfCurr1DayUasL reports the + number of seconds during which there have been + unavailable seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.9 " + ::= { adslAturPerfDataExtEntry 6 } + + adslAturPerfPrev1DaySesL OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "For the previous day, adslAturPerfPrev1DaySesL + reports the number of seconds during which there + were severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.7 " + ::= { adslAturPerfDataExtEntry 7 } + + adslAturPerfPrev1DayUasL OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the previous day, adslAturPerfPrev1DayUasL + reports the number of seconds during which there + were severely errored seconds-line." + REFERENCE "ITU G.997.1 Section 7.2.1.2.9 " + ::= { adslAturPerfDataExtEntry 8 } + + adslAturIntervalExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturIntervalExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATU-R + performance data collection interval for + ADSL physical interfaces whose + IfEntries' ifType is equal to adsl(94)." + ::= { adslExtMibObjects 21 } + + adslAturIntervalExtEntry OBJECT-TYPE + SYNTAX AdslAturIntervalExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the + adslAturIntervalExtTable." + AUGMENTS { adslAturIntervalEntry } + ::= { adslAturIntervalExtTable 1 } + + AdslAturIntervalExtEntry ::= + SEQUENCE { + adslAturIntervalSesL PerfIntervalCount, + adslAturIntervalUasL PerfIntervalCount + } + + adslAturIntervalSesL OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the each interval, adslAturIntervalSesL + reports the number of seconds during which + there have been severely errored seconds-line." + ::= { adslAturIntervalExtEntry 1 } + + adslAturIntervalUasL OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For the each interval, adslAturIntervalUasL + reports the number of seconds during which + there have been unavailable seconds-line." + ::= { adslAturIntervalExtEntry 2 } + + adslConfProfileExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslConfProfileExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The adslConfProfileExtTable extends the ADSL line + profile configuration information in the + adslLineConfProfileTable from the ADSL-LINE-MIB + [RFC2662] by adding the ability to configure the + ADSL physical line mode." + ::= { adslExtMibObjects 22 } + + adslConfProfileExtEntry OBJECT-TYPE + SYNTAX AdslConfProfileExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the adslLineConfProfileEntry + defined in [RFC2662]. Each entry corresponds to an + ADSL line profile." + AUGMENTS { adslLineConfProfileEntry } + ::= { adslConfProfileExtTable 1 } + + AdslConfProfileExtEntry ::= + SEQUENCE { + adslConfProfileLineType INTEGER + } + + adslConfProfileLineType OBJECT-TYPE + + + + SYNTAX INTEGER { + noChannel (1), -- no channels exist + fastOnly (2), -- only fast channel exists + interleavedOnly (3), -- only interleaved channel + -- exist + fastOrInterleaved (4),-- either fast or interleaved + -- channels can exist, but + -- only one at any time + fastAndInterleaved (5)-- both the fast channel and + -- the interleaved channel + -- exist + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to configure the ADSL physical + line mode. It has following valid values: + + noChannel(1), when no channels exist. + fastOnly(2), when only fast channel exists. + interleavedOnly(3), when only interleaved channel + exist. + fastOrInterleaved(4), when either fast or + interleaved channels can exist, but only one + at any time. + fastAndInterleaved(5), when both the fast channel + and the interleaved channel exist. + + In the case when no value has been set, the default + Value is noChannel(1). + " + DEFVAL { fastOnly } + ::= { adslConfProfileExtEntry 1 } + + adslAlarmConfProfileExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAlarmConfProfileExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table extends the + adslLineAlarmConfProfileTable and provides + threshold parameters for all the counters defined + in this MIB module." + ::= { adslExtMibObjects 23 } + + adslAlarmConfProfileExtEntry OBJECT-TYPE + SYNTAX AdslAlarmConfProfileExtEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An entry extends the adslLineAlarmConfProfileTable + defined in [RFC2662]. Each entry corresponds to + an ADSL alarm profile." + AUGMENTS { adslLineAlarmConfProfileEntry } + ::= { adslAlarmConfProfileExtTable 1 } + + AdslAlarmConfProfileExtEntry ::= + SEQUENCE { + adslAtucThreshold15MinFailedFastR Integer32, + adslAtucThreshold15MinSesL Integer32, + adslAtucThreshold15MinUasL Integer32, + adslAturThreshold15MinSesL Integer32, + adslAturThreshold15MinUasL Integer32 + } + + adslAtucThreshold15MinFailedFastR OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAtucPerfCurr15MinFailedFastR + reaches or exceeds this value within a given + 15-minute performance data collection period, + an adslAtucFailedFastRThreshTrap notification + will be generated. The value '0' will disable + the notification. The default value of this + object is '0'." + DEFVAL { 0 } + ::= { adslAlarmConfProfileExtEntry 1 } + + adslAtucThreshold15MinSesL OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAtucPerf15MinSesL reaches or + exceeds this value within a given 15-minute + performance data collection period, an + adslAtucSesLThreshTrap notification will be + generated. The value '0' will disable the + notification. The default value of this + object is '0'." + + + + DEFVAL { 0 } + + ::= { adslAlarmConfProfileExtEntry 2 } + + adslAtucThreshold15MinUasL OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAtucPerf15MinUasL reaches or + exceeds this value within a given 15-minute + performance data collection period, an + adslAtucUasLThreshTrap notification will be + generated. The value '0' will disable the + notification. The default value of this + object is '0'." + DEFVAL { 0 } + ::= { adslAlarmConfProfileExtEntry 3 } + + adslAturThreshold15MinSesL OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAturPerf15MinSesL reaches or + exceeds this value within a given 15-minute + performance data collection period, an + adslAturSesLThreshTrap notification will be + generated. The value '0' will disable the + notification. The default value of this + object is '0'." + DEFVAL { 0 } + ::= { adslAlarmConfProfileExtEntry 4 } + + adslAturThreshold15MinUasL OBJECT-TYPE + SYNTAX Integer32(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first time the value of the corresponding + instance of adslAturPerf15MinUasL reaches or + exceeds this value within a given 15-minute + performance data collection period, an + + + + adslAturUasLThreshTrap notification will be + generated. The value '0' will disable the + notification. The default value of this + object is '0'." + DEFVAL { 0 } + + ::= { adslAlarmConfProfileExtEntry 5 } + + -- definitions + + adslExtTraps OBJECT IDENTIFIER ::= { adslExtMibObjects 24 } + + adslExtAtucTraps OBJECT IDENTIFIER ::= { adslExtTraps 1 } + + adslExtAtucTrapsPrefix OBJECT IDENTIFIER ::= { adslExtAtucTraps 0 } + + adslAtucFailedFastRThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinFailedFastR } + STATUS current + DESCRIPTION + "Failed Fast Retrains 15-minute threshold reached." + ::= { adslExtAtucTrapsPrefix 1 } + + adslAtucSesLThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinSesL } + STATUS current + DESCRIPTION + "Severely errored seconds-line 15-minute threshold + reached." + ::= { adslExtAtucTrapsPrefix 2 } + + adslAtucUasLThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinUasL } + STATUS current + DESCRIPTION + "Unavailable seconds-line 15-minute threshold + reached." + ::= { adslExtAtucTrapsPrefix 3 } + + + adslExtAturTraps OBJECT IDENTIFIER ::= { adslExtTraps 2 } + + adslExtAturTrapsPrefix OBJECT IDENTIFIER ::= { adslExtAturTraps 0 } + + adslAturSesLThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinSesL } + STATUS current + DESCRIPTION + + + + "Severely errored seconds-line 15-minute threshold + reached." + ::= { adslExtAturTrapsPrefix 1 } + + adslAturUasLThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinUasL } + STATUS current + DESCRIPTION + "Unavailable seconds-line 15-minute threshold + reached." + ::= { adslExtAturTrapsPrefix 2 } + + + -- conformance information + + adslExtConformance OBJECT IDENTIFIER ::= { adslExtMIB 2 } + + adslExtGroups OBJECT IDENTIFIER ::= { adslExtConformance 1 } + adslExtCompliances OBJECT IDENTIFIER ::= { adslExtConformance 2 } + + -- ATU-C agent compliance statements + + adslExtLineMibAtucCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + represent ADSL ATU-C interfaces." + + MODULE -- this module + MANDATORY-GROUPS + { + adslExtLineGroup, + adslExtLineConfProfileControlGroup, + adslExtLineAlarmConfProfileGroup + } + + GROUP adslExtAtucPhysPerfCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-C physical event counters + should implement this group." + + GROUP adslExtAturPhysPerfCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-R physical event counters + should implement this group." + + + + + GROUP adslExtNotificationsGroup + DESCRIPTION + "This group is optional. Implementations which + support TCA (Threshold Crossing Alert) should + implement this group." + + OBJECT adslAtucThreshold15MinFailedFastR + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslAtucThreshold15MinSesL + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslAtucThreshold15MinUasL + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslAturThreshold15MinSesL + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslAturThreshold15MinUasL + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + OBJECT adslLineConfProfileDualLite + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when + static profiles as defined in ADSL Line MIB + [RFC2662] are implemented." + + + + + ::= { adslExtCompliances 1 } + + -- units of conformance + adslExtLineGroup OBJECT-GROUP + OBJECTS { + adslLineConfProfileDualLite, + adslLineTransAtucCap, + adslLineTransAtucConfig, + adslLineTransAtucActual, + adslLineGlitePowerState + } + STATUS current + DESCRIPTION + "A collection of objects providing extended + configuration information about an ADSL Line." + ::= { adslExtGroups 1 } + + adslExtAtucPhysPerfCounterGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfStatFastR, + adslAtucPerfStatFailedFastR, + adslAtucPerfCurr15MinFastR, + adslAtucPerfCurr15MinFailedFastR, + adslAtucPerfCurr1DayFastR, + adslAtucPerfCurr1DayFailedFastR, + adslAtucPerfPrev1DayFastR, + adslAtucPerfPrev1DayFailedFastR, + adslAtucPerfStatSesL, + adslAtucPerfStatUasL, + adslAtucPerfCurr15MinSesL, + adslAtucPerfCurr15MinUasL, + adslAtucPerfCurr1DaySesL, + adslAtucPerfCurr1DayUasL, + adslAtucPerfPrev1DaySesL, + adslAtucPerfPrev1DayUasL, + adslAtucIntervalFastR, + adslAtucIntervalFailedFastR, + adslAtucIntervalSesL, + adslAtucIntervalUasL + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-C end)." + ::= { adslExtGroups 2 } + + adslExtAturPhysPerfCounterGroup OBJECT-GROUP + OBJECTS { + + + + adslAturPerfStatSesL, + adslAturPerfStatUasL, + adslAturPerfCurr15MinSesL, + adslAturPerfCurr15MinUasL, + adslAturPerfCurr1DaySesL, + adslAturPerfCurr1DayUasL, + adslAturPerfPrev1DaySesL, + adslAturPerfPrev1DayUasL, + adslAturIntervalSesL, adslAturIntervalUasL + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-C end)." + ::= { adslExtGroups 3 } + + adslExtLineConfProfileControlGroup OBJECT-GROUP + OBJECTS { + adslConfProfileLineType + } + STATUS current + DESCRIPTION + "A collection of objects providing profile + control for the ADSL system." + ::= { adslExtGroups 4 } + + adslExtLineAlarmConfProfileGroup OBJECT-GROUP + OBJECTS { + adslAtucThreshold15MinFailedFastR, + adslAtucThreshold15MinSesL, + adslAtucThreshold15MinUasL, + adslAturThreshold15MinSesL, + adslAturThreshold15MinUasL + } + STATUS current + DESCRIPTION + "A collection of objects providing alarm profile + control for the ADSL system." + ::= { adslExtGroups 5 } + + adslExtNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + adslAtucFailedFastRThreshTrap, + adslAtucSesLThreshTrap, + adslAtucUasLThreshTrap, + adslAturSesLThreshTrap, + adslAturUasLThreshTrap + } + + + + STATUS current + DESCRIPTION + "The collection of ADSL extension notifications." + ::= { adslExtGroups 6 } + +END diff --git a/mibs/ietf/ADSL-LINE-MIB b/mibs/ietf/ADSL-LINE-MIB new file mode 100644 index 0000000..addde98 --- /dev/null +++ b/mibs/ietf/ADSL-LINE-MIB @@ -0,0 +1,4313 @@ +ADSL-LINE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Gauge32, + NOTIFICATION-TYPE, + transmission, Unsigned32 FROM SNMPv2-SMI + RowStatus, + TruthValue, VariablePointer FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB + PerfCurrentCount, + PerfIntervalCount FROM PerfHist-TC-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + AdslPerfCurrDayCount, + AdslPerfPrevDayCount, + AdslPerfTimeElapsed, + AdslLineCodingType FROM ADSL-TC-MIB + ; + +adslMIB MODULE-IDENTITY + +LAST-UPDATED "9908190000Z" + +ORGANIZATION "IETF ADSL MIB Working Group" + +CONTACT-INFO + " + Gregory Bathrick + AG Communication Systems + A Subsidiary of Lucent Technologies + 2500 W Utopia Rd. + Phoenix, AZ 85027 USA + Tel: +1 602-582-7679 + Fax: +1 602-582-7697 + E-mail: bathricg@agcs.com + + Faye Ly + Copper Mountain Networks + Norcal Office + 2470 Embarcadero Way + Palo Alto, CA 94303 + Tel: +1 650-858-8500 + Fax: +1 650-858-8085 + E-Mail: faye@coppermountain.com + + (ADSL Forum input only) + John Burgess + Predictive Systems, Inc. + 25A Vreeland Rd. + Florham Park, NJ 07932 USA + Tel: +1 973-301-5610 + Fax: +1 973-301-5699 + E-mail: jtburgess@predictive.com + + IETF ADSL MIB Working Group (adsl@xlist.agcs.com) + " + +DESCRIPTION + "The MIB module defining objects for the management of a pair of + ADSL modems at each end of the ADSL line. Each such line has + an entry in an ifTable which may include multiple modem lines. + An agent may reside at either end of the ADSL line however the + MIB is designed to require no management communication between + them beyond that inherent in the low-level ADSL line protocol. + The agent may monitor and control this protocol for its needs. + + ADSL lines may support optional Fast or Interleaved channels. + If these are supported, additional entries corresponding to the + supported channels must be created in the ifTable. Thus an ADSL + line that supports both channels will have three entries in the + ifTable, one for each physical, fast, and interleaved, whose + ifType values are equal to adsl(94), fast(125), and + interleaved(124), respectively. The ifStackTable is used to + represent the relationship between the entries. + + Naming Conventions: + Atuc -- (ATUC) modem at near (Central) end of line + Atur -- (ATUR) modem at Remote end of line + Curr -- Current + Prev -- Previous + Atn -- Attenuation + ES -- Errored Second. + LCS -- Line Code Specific + Lof -- Loss of Frame + Lol -- Loss of Link + Los -- Loss of Signal + Lpr -- Loss of Power + xxxs-- interval of Seconds in which xxx occurs + (e.g., xxx=Lof, Los, Lpr) + Max -- Maximum + Mgn -- Margin + Min -- Minimum + Psd -- Power Spectral Density + Snr -- Signal to Noise Ratio + Tx -- Transmit + Blks-- Blocks, a data unit, see + adslAtuXChanCrcBlockLength + " + -- Revision history + REVISION "9908190000Z" -- 19 August 1999, midnight + DESCRIPTION "Initial Version, published as RFC 2662" + +::= { transmission 94 } + +adslLineMib OBJECT IDENTIFIER ::= { adslMIB 1 } + +adslMibObjects OBJECT IDENTIFIER ::= { adslLineMib 1 } + +-- objects + adslLineTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes common attributes describing + both ends of the line. It is required for all ADSL + physical interfaces. ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 1 } + + adslLineEntry OBJECT-TYPE + SYNTAX AdslLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslLineTable." + INDEX { ifIndex } + ::= { adslLineTable 1 } + + AdslLineEntry ::= + SEQUENCE { + adslLineCoding AdslLineCodingType, + adslLineType INTEGER, + adslLineSpecific VariablePointer, + adslLineConfProfile SnmpAdminString, + adslLineAlarmConfProfile SnmpAdminString + } + + adslLineCoding OBJECT-TYPE + SYNTAX AdslLineCodingType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the ADSL coding type used on this + line." + ::= { adslLineEntry 1 } + + adslLineType OBJECT-TYPE + SYNTAX INTEGER { + noChannel (1), -- no channels exist + fastOnly (2), -- fast channel exists only + interleavedOnly (3), -- interleaved channel exists + -- only + fastOrInterleaved (4),-- either fast or interleaved + -- channels can exist, but + -- only one at any time + fastAndInterleaved (5)-- both fast or interleaved + + -- channels exist + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of ADSL physical line + entity that exists, by defining whether and how + the line is channelized. If the line is channelized, + the value will be other than noChannel(1). This + object defines which channel type(s) are supported. + + In the case that the line is channelized, the manager + can use the ifStackTable to determine the ifIndex for + the associated channel(s)." + ::= { adslLineEntry 2 } + + adslLineSpecific OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "OID instance in vendor-specific MIB. The Instance may + be used to determine shelf/slot/port of the ATUC + interface in a DSLAM." + ::= { adslLineEntry 3 } + + adslLineConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the ADSL Line Configuration Profile Table, + (adslLineConfProfileTable), which applies for this + ADSL line, and channels if applicable. + + For `dynamic' mode, in the case which the + configuration profile has not been set, the + value will be set to `DEFVAL'. + + If the implementator of this MIB has chosen not + to implement `dynamic assignment' of profiles, this + object's MIN-ACCESS is read-only." + ::= { adslLineEntry 4 } + + adslLineAlarmConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the ADSL Line Alarm Configuration Profile Table, + (adslLineAlarmConfProfileTable), which applies to this + ADSL line, and channels if applicable. + + For `dynamic' mode, in the case which the + alarm profile has not been set, the + value will be set to `DEFVAL'. + + If the implementator of this MIB has chosen not + to implement `dynamic assignment' of profiles, this + object's MIN-ACCESS is read-only." + ::= { adslLineEntry 5 } + + adslAtucPhysTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC. + Each row contains the Physical Layer Parameters + table for that ATUC. ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 2 } + + adslAtucPhysEntry OBJECT-TYPE + SYNTAX AdslAtucPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAtucPhysTable." + INDEX { ifIndex } + ::= { adslAtucPhysTable 1 } + + AdslAtucPhysEntry ::= + SEQUENCE { + adslAtucInvSerialNumber SnmpAdminString, + adslAtucInvVendorID SnmpAdminString, + adslAtucInvVersionNumber SnmpAdminString, + adslAtucCurrSnrMgn INTEGER, + adslAtucCurrAtn Gauge32, + adslAtucCurrStatus BITS, + adslAtucCurrOutputPwr INTEGER, + adslAtucCurrAttainableRate Gauge32 + } + + -- inventory group + + -- + -- These items should describe the lowest level identifiable + -- component, be it a stand-alone modem, a card in a rack, + -- a child-board, etc. + -- + adslAtucInvSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific string that identifies the + vendor equipment." + ::= { adslAtucPhysEntry 1 } + + adslAtucInvVendorID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor ID code is a copy of the binary + vendor identification field defined by the + PHY[10] and expressed as readable characters." + + REFERENCE "ANSI T1.413[10]" + ::= { adslAtucPhysEntry 2 } + + adslAtucInvVersionNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific version number sent by this ATU + as part of the initialization messages. It is a copy + of the binary version number field defined by the + PHY[10] and expressed as readable characters." + REFERENCE "ANSI T1.413[10]" + ::= { adslAtucPhysEntry 3 } + + -- current status group + -- + adslAtucCurrSnrMgn OBJECT-TYPE + SYNTAX INTEGER (-640..640) + UNITS "tenth dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Noise Margin as seen by this ATU with respect to its + received signal in tenth dB." + ::= { adslAtucPhysEntry 4 } + + adslAtucCurrAtn OBJECT-TYPE + SYNTAX Gauge32(0..630) + UNITS "tenth dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured difference in the total power transmitted by + the peer ATU and the total power received by this ATU." + ::= { adslAtucPhysEntry 5 } + + adslAtucCurrStatus OBJECT-TYPE + SYNTAX BITS { + noDefect(0), + lossOfFraming(1), + lossOfSignal(2), + lossOfPower(3), + lossOfSignalQuality(4), + lossOfLink(5), + dataInitFailure(6), + configInitFailure(7), + protocolInitFailure(8), + noPeerAtuPresent(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates current state of the ATUC line. This is a + bit-map of possible conditions. The various bit + positions are: + + 0 noDefect There no defects on the line + + 1 lossOfFraming ATUC failure due to not + receiving valid frame. + + 2 lossOfSignal ATUC failure due to not + receiving signal. + + 3 lossOfPower ATUC failure due to loss of + power. + Note: the Agent may still + function. + + 4 lossOfSignalQuality Loss of Signal Quality is + declared when the Noise Margin + falls below the Minimum Noise + Margin, or the bit-error-rate + exceeds 10^-7. + + 5 lossOfLink ATUC failure due to inability + to link with ATUR. + + 6 dataInitFailure ATUC failure during + initialization due to bit + errors corrupting startup + exchange data. + + 7 configInitFailure ATUC failure during + initialization due to peer + ATU not able to support + requested configuration + + 8 protocolInitFailure ATUC failure during + initialization due to + incompatible protocol used by + the peer ATU. + + 9 noPeerAtuPresent ATUC failure during + initialization due to no + activation sequence detected + from peer ATU. + + This is intended to supplement ifOperStatus." + ::= { adslAtucPhysEntry 6 } + + adslAtucCurrOutputPwr OBJECT-TYPE + SYNTAX INTEGER (-310..310) + UNITS "tenth dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured total output power transmitted by this ATU. + This is the measurement that was reported during + the last activation sequence." + ::= { adslAtucPhysEntry 7 } + + adslAtucCurrAttainableRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum currently attainable data rate + by the ATU. This value will be equal or greater than + the current line rate." + ::= { adslAtucPhysEntry 8 } + + adslAturPhysTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR + Each row contains the Physical Layer Parameters + table for that ATUR. ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 3 } + + adslAturPhysEntry OBJECT-TYPE + SYNTAX AdslAturPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAturPhysTable." + INDEX { ifIndex } + ::= { adslAturPhysTable 1 } + + AdslAturPhysEntry ::= + SEQUENCE { + adslAturInvSerialNumber SnmpAdminString, + adslAturInvVendorID SnmpAdminString, + adslAturInvVersionNumber SnmpAdminString, + adslAturCurrSnrMgn INTEGER, + adslAturCurrAtn Gauge32, + adslAturCurrStatus BITS, + adslAturCurrOutputPwr INTEGER, + adslAturCurrAttainableRate Gauge32 + } + + -- inventory group + -- + adslAturInvSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific string that identifies the + vendor equipment." + ::= { adslAturPhysEntry 1 } + + adslAturInvVendorID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor ID code is a copy of the binary + vendor identification field defined by the + PHY[10] and expressed as readable characters." + REFERENCE "ANSI T1.413" + ::= { adslAturPhysEntry 2 } + + adslAturInvVersionNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific version number sent by this ATU + as part of the initialization messages. It is a copy + of the binary version number field defined by the + PHY[10] and expressed as readable characters." + REFERENCE "ANSI T1.413" + ::= { adslAturPhysEntry 3 } + + -- current status group + -- + adslAturCurrSnrMgn OBJECT-TYPE + SYNTAX INTEGER (-640..640) + UNITS "tenth dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Noise Margin as seen by this ATU with respect to its + received signal in tenth dB." + ::= { adslAturPhysEntry 4 } + + adslAturCurrAtn OBJECT-TYPE + SYNTAX Gauge32(0..630) + UNITS "tenth dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured difference in the total power transmitted by + the peer ATU and the total power received by this ATU." + ::= { adslAturPhysEntry 5 } + + adslAturCurrStatus OBJECT-TYPE + SYNTAX BITS { + noDefect(0), + lossOfFraming(1), + lossOfSignal(2), + lossOfPower(3), + lossOfSignalQuality(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates current state of the ATUR line. This is a + bit-map of possible conditions. Due to the isolation + of the ATUR when line problems occur, many state + conditions like loss of power, loss of quality signal, + and initialization errors, can not be determined. + While trouble shooting ATUR, also use object, + adslAtucCurrStatus. The various bit positions are: + + 0 noDefect There no defects on the line + + 1 lossOfFraming ATUR failure due to not + receiving valid frame + + 2 lossOfSignal ATUR failure due to not + receiving signal + + 3 lossOfPower ATUR failure due to loss of + power + + 4 lossOfSignalQuality Loss of Signal Quality is + declared when the Noise Margin + falls below the Minimum Noise + Margin, or the + bit-error-rate exceeds 10^-7. + + This is intended to supplement ifOperStatus." + ::= { adslAturPhysEntry 6 } + + adslAturCurrOutputPwr OBJECT-TYPE + SYNTAX INTEGER (-310..310) + UNITS "tenth dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured total output power transmitted by this ATU. + This is the measurement that was reported during + the last activation sequence." + ::= { adslAturPhysEntry 7 } + + adslAturCurrAttainableRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum currently attainable data rate + by the ATU. This value will be equal or greater than + the current line rate." + ::= { adslAturPhysEntry 8 } + + adslAtucChanTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC channel. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 4 } + + adslAtucChanEntry OBJECT-TYPE + SYNTAX AdslAtucChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAtucChanTable." + INDEX { ifIndex } + ::= { adslAtucChanTable 1 } + + AdslAtucChanEntry ::= + SEQUENCE { + adslAtucChanInterleaveDelay Gauge32, + adslAtucChanCurrTxRate Gauge32, + adslAtucChanPrevTxRate Gauge32, + adslAtucChanCrcBlockLength Gauge32 + } + + -- current group + -- + adslAtucChanInterleaveDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milli-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Interleave Delay for this channel. + + Interleave delay applies only to the + interleave channel and defines the mapping + (relative spacing) between subsequent input + bytes at the interleaver input and their placement + in the bit stream at the interleaver output. + Larger numbers provide greater separation between + consecutive input bytes in the output bit stream + allowing for improved impulse noise immunity at + the expense of payload latency. + + In the case where the ifType is Fast(125), use + noSuchObject." + ::= { adslAtucChanEntry 1 } + + adslAtucChanCurrTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual transmit rate on this channel." + ::= { adslAtucChanEntry 2 } + + adslAtucChanPrevTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rate at the time of the last + adslAtucRateChangeTrap event. It is also set at + initialization to prevent a trap being sent. + + Rate changes less than adslAtucThresh(*)RateDown + or less than adslAtucThresh(*)RateUp will not + cause a trap or cause this object to change. + (*) == Fast or Interleave. + See AdslLineAlarmConfProfileEntry." + ::= { adslAtucChanEntry 3 } + + adslAtucChanCrcBlockLength OBJECT-TYPE + SYNTAX Gauge32 + UNITS "byte" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the length of the channel data-block + on which the CRC operates. Refer to Line Code + Specific MIBs, [11] and [12] for more + information." + ::= { adslAtucChanEntry 4 } + + adslAturChanTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR channel. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 5 } + + adslAturChanEntry OBJECT-TYPE + SYNTAX AdslAturChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAturChanTable." + INDEX { ifIndex } + ::= { adslAturChanTable 1 } + + AdslAturChanEntry ::= + SEQUENCE { + adslAturChanInterleaveDelay Gauge32, + adslAturChanCurrTxRate Gauge32, + adslAturChanPrevTxRate Gauge32, + adslAturChanCrcBlockLength Gauge32 + } + + -- current group + -- + adslAturChanInterleaveDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milli-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Interleave Delay for this channel. + + Interleave delay applies only to the + interleave channel and defines the mapping + (relative spacing) between subsequent input + bytes at the interleaver input and their placement + in the bit stream at the interleaver output. + Larger numbers provide greater separation between + consecutive input bytes in the output bit stream + allowing for improved impulse noise immunity at + the expense of payload latency. + + In the case where the ifType is Fast(125), use + noSuchObject." + ::= { adslAturChanEntry 1 } + + adslAturChanCurrTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual transmit rate on this channel." + ::= { adslAturChanEntry 2 } + + adslAturChanPrevTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rate at the time of the last + adslAturRateChangeTrap event. It is also set at + initialization to prevent a trap being sent. + Rate changes less than adslAturThresh(*)RateDown + or less than adslAturThresh(*)RateUp will not + cause a trap or cause this object to change. + (*) == Fast or Interleave. + See AdslLineAlarmConfProfileEntry." + ::= { adslAturChanEntry 3 } + + adslAturChanCrcBlockLength OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the length of the channel data-block + on which the CRC operates. Refer to Line Code + Specific MIBs, [11] and [12] for more + information." + ::= { adslAturChanEntry 4 } + + adslAtucPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC. + ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 6 } + + adslAtucPerfDataEntry OBJECT-TYPE + SYNTAX AdslAtucPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslAtucPerfDataTable." + INDEX { ifIndex } + ::= { adslAtucPerfDataTable 1 } + + AdslAtucPerfDataEntry ::= + SEQUENCE { + adslAtucPerfLofs Counter32, + adslAtucPerfLoss Counter32, + adslAtucPerfLols Counter32, + adslAtucPerfLprs Counter32, + adslAtucPerfESs Counter32, + adslAtucPerfInits Counter32, + adslAtucPerfValidIntervals INTEGER, + adslAtucPerfInvalidIntervals INTEGER, + adslAtucPerfCurr15MinTimeElapsed AdslPerfTimeElapsed, + adslAtucPerfCurr15MinLofs PerfCurrentCount, + adslAtucPerfCurr15MinLoss PerfCurrentCount, + adslAtucPerfCurr15MinLols PerfCurrentCount, + adslAtucPerfCurr15MinLprs PerfCurrentCount, + adslAtucPerfCurr15MinESs PerfCurrentCount, + adslAtucPerfCurr15MinInits PerfCurrentCount, + adslAtucPerfCurr1DayTimeElapsed AdslPerfTimeElapsed, + adslAtucPerfCurr1DayLofs AdslPerfCurrDayCount, + adslAtucPerfCurr1DayLoss AdslPerfCurrDayCount, + adslAtucPerfCurr1DayLols AdslPerfCurrDayCount, + adslAtucPerfCurr1DayLprs AdslPerfCurrDayCount, + adslAtucPerfCurr1DayESs AdslPerfCurrDayCount, + adslAtucPerfCurr1DayInits AdslPerfCurrDayCount, + adslAtucPerfPrev1DayMoniSecs INTEGER, + adslAtucPerfPrev1DayLofs AdslPerfPrevDayCount, + adslAtucPerfPrev1DayLoss AdslPerfPrevDayCount, + adslAtucPerfPrev1DayLols AdslPerfPrevDayCount, + adslAtucPerfPrev1DayLprs AdslPerfPrevDayCount, + adslAtucPerfPrev1DayESs AdslPerfPrevDayCount, + adslAtucPerfPrev1DayInits AdslPerfPrevDayCount + } + + -- Event Counters + -- + -- Also see adslAtucIntervalTable for 15 minute interval + -- elapsed counters. + -- + adslAtucPerfLofs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Framing failures since + agent reset." + ::= { adslAtucPerfDataEntry 1 } + + adslAtucPerfLoss OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Signal failures since + agent reset." + ::= { adslAtucPerfDataEntry 2 } + + adslAtucPerfLols OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Link failures since + agent reset." + ::= { adslAtucPerfDataEntry 3 } + + adslAtucPerfLprs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Power failures since + agent reset." + ::= { adslAtucPerfDataEntry 4 } + + adslAtucPerfESs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Errored Seconds since agent + reset. The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAtucPerfDataEntry 5 } + + adslAtucPerfInits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts since + agent reset. Includes both successful and failed + attempts." + ::= { adslAtucPerfDataEntry 6 } + + -- general 15 min interval information + -- + + adslAtucPerfValidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals in the + interval table for which data was collected. Given + that is the maximum # of intervals supported. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available." + ::= { adslAtucPerfDataEntry 7 } + + adslAtucPerfInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to the value of adslAtucPerfValidIntervals + for which no data is available. This object + will typically be zero except in cases where + the data for some intervals are not available + (e.g., in proxy situations)." + ::= { adslAtucPerfDataEntry 8 } + + -- 15 min current performance group + -- + adslAtucPerfCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..899) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { adslAtucPerfDataEntry 9 } + + adslAtucPerfCurr15MinLofs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Framing." + ::= { adslAtucPerfDataEntry 10 } + + adslAtucPerfCurr15MinLoss OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Signal." + ::= { adslAtucPerfDataEntry 11 } + + adslAtucPerfCurr15MinLols OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Link." + ::= { adslAtucPerfDataEntry 12 } + + adslAtucPerfCurr15MinLprs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Power." + ::= { adslAtucPerfDataEntry 13 } + + adslAtucPerfCurr15MinESs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds in the current 15 minute + interval. The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAtucPerfDataEntry 14 } + + adslAtucPerfCurr15MinInits OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts in the + current 15 minute interval. Includes both successful + and failed attempts." + ::= { adslAtucPerfDataEntry 15 } + + -- 1-day current and previous performance group + -- + adslAtucPerfCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..86399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the + beginning of the current 1-day interval." + ::= { adslAtucPerfDataEntry 16 } + + adslAtucPerfCurr1DayLofs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss of + Framing during the current day as measured by + adslAtucPerfCurr1DayTimeElapsed." + ::= { adslAtucPerfDataEntry 17 } + + adslAtucPerfCurr1DayLoss OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss of + Signal during the current day as measured by + adslAtucPerfCurr1DayTimeElapsed." + ::= { adslAtucPerfDataEntry 18 } + + adslAtucPerfCurr1DayLols OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss of + Link during the current day as measured by + adslAtucPerfCurr1DayTimeElapsed." + ::= { adslAtucPerfDataEntry 19 } + + adslAtucPerfCurr1DayLprs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss of + Power during the current day as measured by + adslAtucPerfCurr1DayTimeElapsed." + ::= { adslAtucPerfDataEntry 20 } + + adslAtucPerfCurr1DayESs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds during the current day as + measured by adslAtucPerfCurr1DayTimeElapsed. + The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAtucPerfDataEntry 21 } + + adslAtucPerfCurr1DayInits OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts in the + day as measured by adslAtucPerfCurr1DayTimeElapsed. + Includes both successful and failed attempts." + ::= { adslAtucPerfDataEntry 22 } + + adslAtucPerfPrev1DayMoniSecs OBJECT-TYPE + SYNTAX INTEGER(0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the previous 1-day interval + over which the performance monitoring information + is actually counted. This value will be the same as + the interval duration except in a situation where + performance monitoring data could not be collected + for any reason." + ::= { adslAtucPerfDataEntry 23 } + + adslAtucPerfPrev1DayLofs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Framing within the most recent previous + 1-day period." + ::= { adslAtucPerfDataEntry 24 } + + adslAtucPerfPrev1DayLoss OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Signal within the most recent previous + 1-day period." + ::= { adslAtucPerfDataEntry 25 } + + adslAtucPerfPrev1DayLols OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Link within the most recent previous + 1-day period." + ::= { adslAtucPerfDataEntry 26 } + + adslAtucPerfPrev1DayLprs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Power within the most recent previous + 1-day period." + ::= { adslAtucPerfDataEntry 27 } + + adslAtucPerfPrev1DayESs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds within the most recent + previous 1-day period. The errored second parameter is + a count of one-second intervals containing one or more + crc anomalies, or one or more los or sef defects." + ::= { adslAtucPerfDataEntry 28 } + + adslAtucPerfPrev1DayInits OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts in the most + recent previous 1-day period. Includes both successful + and failed attempts." + ::= { adslAtucPerfDataEntry 29 } + + adslAturPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR. + ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 7 } + + adslAturPerfDataEntry OBJECT-TYPE + SYNTAX AdslAturPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslAturPerfDataTable." + INDEX { ifIndex } + ::= { adslAturPerfDataTable 1 } + + AdslAturPerfDataEntry ::= + SEQUENCE { + adslAturPerfLofs Counter32, + adslAturPerfLoss Counter32, + adslAturPerfLprs Counter32, + adslAturPerfESs Counter32, + adslAturPerfValidIntervals INTEGER, + adslAturPerfInvalidIntervals INTEGER, + adslAturPerfCurr15MinTimeElapsed AdslPerfTimeElapsed, + adslAturPerfCurr15MinLofs PerfCurrentCount, + adslAturPerfCurr15MinLoss PerfCurrentCount, + adslAturPerfCurr15MinLprs PerfCurrentCount, + adslAturPerfCurr15MinESs PerfCurrentCount, + adslAturPerfCurr1DayTimeElapsed AdslPerfTimeElapsed, + adslAturPerfCurr1DayLofs AdslPerfCurrDayCount, + adslAturPerfCurr1DayLoss AdslPerfCurrDayCount, + adslAturPerfCurr1DayLprs AdslPerfCurrDayCount, + adslAturPerfCurr1DayESs AdslPerfCurrDayCount, + adslAturPerfPrev1DayMoniSecs INTEGER, + adslAturPerfPrev1DayLofs AdslPerfPrevDayCount, + adslAturPerfPrev1DayLoss AdslPerfPrevDayCount, + adslAturPerfPrev1DayLprs AdslPerfPrevDayCount, + adslAturPerfPrev1DayESs AdslPerfPrevDayCount + } + + -- Event (Raw) Counters + -- + -- Also see adslAturIntervalTable for 15 minute interval + -- elapsed counters. + -- + adslAturPerfLofs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Framing failures since + agent reset." + ::= { adslAturPerfDataEntry 1 } + + adslAturPerfLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Signal failures since + agent reset." + ::= { adslAturPerfDataEntry 2 } + + adslAturPerfLprs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Loss of Power failures since + agent reset." + ::= { adslAturPerfDataEntry 3 } + + adslAturPerfESs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of Errored Seconds since agent + reset. The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAturPerfDataEntry 4 } + + -- general 15 min interval information + -- + adslAturPerfValidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals in the + interval table for which data was collected. Given + that is the maximum # of intervals supported. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available." + ::= { adslAturPerfDataEntry 5 } + + adslAturPerfInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to the value of adslAturPerfValidIntervals + for which no data is available. This object + will typically be zero except in cases where + the data for some intervals are not available + (e.g., in proxy situations)." + ::= { adslAturPerfDataEntry 6 } + + -- 15 min current performance group + -- + adslAturPerfCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..899) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { adslAturPerfDataEntry 7 } + + adslAturPerfCurr15MinLofs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Framing." + ::= { adslAturPerfDataEntry 8 } + + adslAturPerfCurr15MinLoss OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Signal." + ::= { adslAturPerfDataEntry 9 } + + adslAturPerfCurr15MinLprs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the current 15 minute interval + when there was Loss of Power." + ::= { adslAturPerfDataEntry 10 } + + adslAturPerfCurr15MinESs OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds in the current 15 minute + interval. The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + + ::= { adslAturPerfDataEntry 11 } + + -- 1-day current and previous performance group + -- + adslAturPerfCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..86399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the + beginning of the current 1-day interval." + ::= { adslAturPerfDataEntry 12 } + + adslAturPerfCurr1DayLofs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss + of Framing during the current day as measured by + adslAturPerfCurr1DayTimeElapsed." + ::= { adslAturPerfDataEntry 13 } + + adslAturPerfCurr1DayLoss OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss + of Signal during the current day as measured by + adslAturPerfCurr1DayTimeElapsed." + ::= { adslAturPerfDataEntry 14 } + + adslAturPerfCurr1DayLprs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of seconds when there was Loss + of Power during the current day as measured by + adslAturPerfCurr1DayTimeElapsed." + ::= { adslAturPerfDataEntry 15 } + + adslAturPerfCurr1DayESs OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds during the current day as + measured by adslAturPerfCurr1DayTimeElapsed. + The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAturPerfDataEntry 16 } + + adslAturPerfPrev1DayMoniSecs OBJECT-TYPE + SYNTAX INTEGER(0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the previous 1-day interval + over which the performance monitoring information + is actually counted. This value will be the same as + the interval duration except in a situation where + performance monitoring data could not be collected + for any reason." + ::= { adslAturPerfDataEntry 17 } + + adslAturPerfPrev1DayLofs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Framing within the most recent previous + 1-day period." + ::= { adslAturPerfDataEntry 18 } + + adslAturPerfPrev1DayLoss OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Signal within the most recent previous + 1-day period." + ::= { adslAturPerfDataEntry 19 } + + adslAturPerfPrev1DayLprs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Power within the most recent previous + 1-day period." + ::= { adslAturPerfDataEntry 20 } + + adslAturPerfPrev1DayESs OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds within the most recent + previous 1-day period. The errored second parameter is + a count of one-second intervals containing one or more + crc anomalies, or one or more los or sef defects." + ::= { adslAturPerfDataEntry 21 } + + adslAtucIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC + performance data collection interval. + ADSL physical interfaces are + those ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 8 } + + adslAtucIntervalEntry OBJECT-TYPE + SYNTAX AdslAtucIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAtucIntervalTable." + INDEX { ifIndex, adslAtucIntervalNumber } + ::= { adslAtucIntervalTable 1 } + + AdslAtucIntervalEntry ::= + SEQUENCE { + adslAtucIntervalNumber INTEGER, + adslAtucIntervalLofs PerfIntervalCount, + adslAtucIntervalLoss PerfIntervalCount, + adslAtucIntervalLols PerfIntervalCount, + adslAtucIntervalLprs PerfIntervalCount, + adslAtucIntervalESs PerfIntervalCount, + adslAtucIntervalInits PerfIntervalCount, + adslAtucIntervalValidData TruthValue + } + + adslAtucIntervalNumber OBJECT-TYPE + SYNTAX INTEGER(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the + the most recent previous interval; interval + 96 is 24 hours ago. Intervals 2..96 are + optional." + ::= { adslAtucIntervalEntry 1 } + + adslAtucIntervalLofs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Framing." + ::= { adslAtucIntervalEntry 2 } + + adslAtucIntervalLoss OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Signal." + ::= { adslAtucIntervalEntry 3 } + + adslAtucIntervalLols OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Link." + ::= { adslAtucIntervalEntry 4 } + + adslAtucIntervalLprs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Power." + ::= { adslAtucIntervalEntry 5 } + + adslAtucIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds in the interval. + The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAtucIntervalEntry 6 } + + adslAtucIntervalInits OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts + during the interval. Includes both successful + and failed attempts." + ::= { adslAtucIntervalEntry 7 } + + adslAtucIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { adslAtucIntervalEntry 8 } + + adslAturIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR + performance data collection interval. + ADSL physical interfaces are those + ifEntries where ifType is equal to adsl(94)." + ::= { adslMibObjects 9 } + + adslAturIntervalEntry OBJECT-TYPE + SYNTAX AdslAturIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAturIntervalTable." + INDEX { ifIndex, adslAturIntervalNumber } + ::= { adslAturIntervalTable 1 } + + AdslAturIntervalEntry ::= + SEQUENCE { + adslAturIntervalNumber INTEGER, + adslAturIntervalLofs PerfIntervalCount, + adslAturIntervalLoss PerfIntervalCount, + adslAturIntervalLprs PerfIntervalCount, + adslAturIntervalESs PerfIntervalCount, + adslAturIntervalValidData TruthValue + } + + adslAturIntervalNumber OBJECT-TYPE + SYNTAX INTEGER(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the + the most recent previous interval; interval + 96 is 24 hours ago. Intervals 2..96 are + optional." + ::= { adslAturIntervalEntry 1 } + + adslAturIntervalLofs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Framing." + ::= { adslAturIntervalEntry 2 } + + adslAturIntervalLoss OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Signal." + ::= { adslAturIntervalEntry 3 } + + adslAturIntervalLprs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was + Loss of Power." + ::= { adslAturIntervalEntry 4 } + + adslAturIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds in the interval. + The errored second parameter is a count of + one-second intervals containing one or more crc + anomalies, or one or more los or sef defects." + ::= { adslAturIntervalEntry 5 } + + adslAturIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { adslAturIntervalEntry 6 } + + adslAtucChanPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC channel. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 10 } + + adslAtucChanPerfDataEntry OBJECT-TYPE + + SYNTAX AdslAtucChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslAtucChanPerfDataTable." + INDEX { ifIndex } + ::= { adslAtucChanPerfDataTable 1 } + + AdslAtucChanPerfDataEntry ::= + SEQUENCE { + adslAtucChanReceivedBlks Counter32, + adslAtucChanTransmittedBlks Counter32, + adslAtucChanCorrectedBlks Counter32, + adslAtucChanUncorrectBlks Counter32, + adslAtucChanPerfValidIntervals INTEGER, + adslAtucChanPerfInvalidIntervals INTEGER, + adslAtucChanPerfCurr15MinTimeElapsed AdslPerfTimeElapsed, + adslAtucChanPerfCurr15MinReceivedBlks PerfCurrentCount, + adslAtucChanPerfCurr15MinTransmittedBlks PerfCurrentCount, + adslAtucChanPerfCurr15MinCorrectedBlks PerfCurrentCount, + adslAtucChanPerfCurr15MinUncorrectBlks PerfCurrentCount, + adslAtucChanPerfCurr1DayTimeElapsed AdslPerfTimeElapsed, + adslAtucChanPerfCurr1DayReceivedBlks AdslPerfCurrDayCount, + adslAtucChanPerfCurr1DayTransmittedBlks AdslPerfCurrDayCount, + adslAtucChanPerfCurr1DayCorrectedBlks AdslPerfCurrDayCount, + adslAtucChanPerfCurr1DayUncorrectBlks AdslPerfCurrDayCount, + adslAtucChanPerfPrev1DayMoniSecs INTEGER, + adslAtucChanPerfPrev1DayReceivedBlks AdslPerfPrevDayCount, + adslAtucChanPerfPrev1DayTransmittedBlks AdslPerfPrevDayCount, + adslAtucChanPerfPrev1DayCorrectedBlks AdslPerfPrevDayCount, + adslAtucChanPerfPrev1DayUncorrectBlks AdslPerfPrevDayCount + } + -- performance group + + -- + -- Note: block is intended to be the length of the channel + -- data-block on which the CRC operates. See + -- adslAtucChanCrcBlockLength for more information. + -- + adslAtucChanReceivedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + since agent reset." + ::= { adslAtucChanPerfDataEntry 1 } + + adslAtucChanTransmittedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel since agent reset." + ::= { adslAtucChanPerfDataEntry 2 } + + adslAtucChanCorrectedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected since agent reset. These blocks are passed + on as good data." + ::= { adslAtucChanPerfDataEntry 3 } + + adslAtucChanUncorrectBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors since agent reset." + ::= { adslAtucChanPerfDataEntry 4 } + + -- general 15 min interval information + -- + adslAtucChanPerfValidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals in the + interval table for which data was collected. Given + that is the maximum # of intervals supported. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available." + ::= { adslAtucChanPerfDataEntry 5 } + + adslAtucChanPerfInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to the value of adslAtucChanPerfValidIntervals + for which no data is available. This object + will typically be zero except in cases where + the data for some intervals are not available + (e.g., in proxy situations)." + ::= { adslAtucChanPerfDataEntry 6 } + + -- 15 min current performance group + -- + adslAtucChanPerfCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..899) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { adslAtucChanPerfDataEntry 7 } + + adslAtucChanPerfCurr15MinReceivedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + within the current 15 minute interval." + ::= { adslAtucChanPerfDataEntry 8 } + + adslAtucChanPerfCurr15MinTransmittedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel within the current 15 minute interval." + ::= { adslAtucChanPerfDataEntry 9 } + + adslAtucChanPerfCurr15MinCorrectedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel within the current 15 minute + interval." + ::= { adslAtucChanPerfDataEntry 10 } + + adslAtucChanPerfCurr15MinUncorrectBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel within the current 15 minute + interval." + ::= { adslAtucChanPerfDataEntry 11 } + + -- 1-day current and previous performance group + -- + adslAtucChanPerfCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..86399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the + beginning of the current 1-day interval." + ::= { adslAtucChanPerfDataEntry 12 } + + adslAtucChanPerfCurr1DayReceivedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel during the current day as measured by + adslAtucChanPerfCurr1DayTimeElapsed." + ::= { adslAtucChanPerfDataEntry 13 } + + adslAtucChanPerfCurr1DayTransmittedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel during the current day as measured by + adslAtucChanPerfCurr1DayTimeElapsed." + ::= { adslAtucChanPerfDataEntry 14 } + + adslAtucChanPerfCurr1DayCorrectedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel during the current day as + measured by adslAtucChanPerfCurr1DayTimeElapsed." + ::= { adslAtucChanPerfDataEntry 15 } + + adslAtucChanPerfCurr1DayUncorrectBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel during the current day as + measured by adslAtucChanPerfCurr1DayTimeElapsed." + ::= { adslAtucChanPerfDataEntry 16 } + + adslAtucChanPerfPrev1DayMoniSecs OBJECT-TYPE + SYNTAX INTEGER(0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the previous 1-day interval + over which the performance monitoring information + is actually counted. This value will be the same as + the interval duration except in a situation where + performance monitoring data could not be collected + for any reason." + ::= { adslAtucChanPerfDataEntry 17 } + + adslAtucChanPerfPrev1DayReceivedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel within the most recent previous 1-day + period." + ::= { adslAtucChanPerfDataEntry 18 } + + adslAtucChanPerfPrev1DayTransmittedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel within the most recent previous 1-day + period." + ::= { adslAtucChanPerfDataEntry 19 } + + adslAtucChanPerfPrev1DayCorrectedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel within the most recent + previous 1-day period." + ::= { adslAtucChanPerfDataEntry 20 } + + adslAtucChanPerfPrev1DayUncorrectBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel within the most recent previous + 1-day period." + ::= { adslAtucChanPerfDataEntry 21 } + + adslAturChanPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR channel. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 11 } + + adslAturChanPerfDataEntry OBJECT-TYPE + SYNTAX AdslAturChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in adslAturChanPerfDataTable." + INDEX { ifIndex } + ::= { adslAturChanPerfDataTable 1 } + + AdslAturChanPerfDataEntry ::= + SEQUENCE { + adslAturChanReceivedBlks Counter32, + adslAturChanTransmittedBlks Counter32, + adslAturChanCorrectedBlks Counter32, + adslAturChanUncorrectBlks Counter32, + adslAturChanPerfValidIntervals INTEGER, + adslAturChanPerfInvalidIntervals INTEGER, + adslAturChanPerfCurr15MinTimeElapsed AdslPerfTimeElapsed, + adslAturChanPerfCurr15MinReceivedBlks PerfCurrentCount, + adslAturChanPerfCurr15MinTransmittedBlks PerfCurrentCount, + adslAturChanPerfCurr15MinCorrectedBlks PerfCurrentCount, + adslAturChanPerfCurr15MinUncorrectBlks PerfCurrentCount, + adslAturChanPerfCurr1DayTimeElapsed AdslPerfTimeElapsed, + adslAturChanPerfCurr1DayReceivedBlks AdslPerfCurrDayCount, + adslAturChanPerfCurr1DayTransmittedBlks AdslPerfCurrDayCount, + adslAturChanPerfCurr1DayCorrectedBlks AdslPerfCurrDayCount, + adslAturChanPerfCurr1DayUncorrectBlks AdslPerfCurrDayCount, + adslAturChanPerfPrev1DayMoniSecs INTEGER, + adslAturChanPerfPrev1DayReceivedBlks AdslPerfPrevDayCount, + adslAturChanPerfPrev1DayTransmittedBlks AdslPerfPrevDayCount, + adslAturChanPerfPrev1DayCorrectedBlks AdslPerfPrevDayCount, + adslAturChanPerfPrev1DayUncorrectBlks AdslPerfPrevDayCount + } + -- performance group + -- + -- Note: block is intended to be the length of the channel + -- data-block on which the CRC operates. See + -- adslAturChanCrcBlockLength for more information. + -- + adslAturChanReceivedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + since agent reset." + ::= { adslAturChanPerfDataEntry 1 } + + adslAturChanTransmittedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel since agent reset." + ::= { adslAturChanPerfDataEntry 2 } + + adslAturChanCorrectedBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected since agent reset. These blocks are passed + on as good data." + ::= { adslAturChanPerfDataEntry 3 } + + adslAturChanUncorrectBlks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors since agent reset." + ::= { adslAturChanPerfDataEntry 4 } + + -- general 15 min interval information + -- + adslAturChanPerfValidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals in the + interval table for which data was collected. Given + that is the maximum # of intervals supported. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available." + ::= { adslAturChanPerfDataEntry 5 } + + adslAturChanPerfInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER(0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to the value of adslAturChanPerfValidIntervals + for which no data is available. This object + will typically be zero except in cases where + the data for some intervals are not available + (e.g., in proxy situations)." + ::= { adslAturChanPerfDataEntry 6 } + + -- 15 min current performance group + -- + adslAturChanPerfCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..899) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval. + A full interval is 900 seconds." + ::= { adslAturChanPerfDataEntry 7 } + + adslAturChanPerfCurr15MinReceivedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel within the current 15 minute interval." + ::= { adslAturChanPerfDataEntry 8 } + + adslAturChanPerfCurr15MinTransmittedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel within the current 15 minute interval." + ::= { adslAturChanPerfDataEntry 9 } + + adslAturChanPerfCurr15MinCorrectedBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel within the current 15 minute + interval." + ::= { adslAturChanPerfDataEntry 10 } + + adslAturChanPerfCurr15MinUncorrectBlks OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel within the current 15 minute + interval." + ::= { adslAturChanPerfDataEntry 11 } + + -- 1-day current and previous performance group + -- + adslAturChanPerfCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX AdslPerfTimeElapsed(0..86399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the + beginning of the current 1-day interval." + ::= { adslAturChanPerfDataEntry 12 } + + adslAturChanPerfCurr1DayReceivedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel during the current day as measured by + adslAturChanPerfCurr1DayTimeElapsed." + ::= { adslAturChanPerfDataEntry 13 } + + adslAturChanPerfCurr1DayTransmittedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel during the current day as measured by + adslAturChanPerfCurr1DayTimeElapsed." + + ::= { adslAturChanPerfDataEntry 14 } + + adslAturChanPerfCurr1DayCorrectedBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel during the current day as + measured by adslAturChanPerfCurr1DayTimeElapsed." + ::= { adslAturChanPerfDataEntry 15 } + + adslAturChanPerfCurr1DayUncorrectBlks OBJECT-TYPE + SYNTAX AdslPerfCurrDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel during the current day as + measured by adslAturChanPerfCurr1DayTimeElapsed." + ::= { adslAturChanPerfDataEntry 16 } + + adslAturChanPerfPrev1DayMoniSecs OBJECT-TYPE + SYNTAX INTEGER(0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the previous 1-day interval + over which the performance monitoring information + is actually counted. This value will be the same as + the interval duration except in a situation where + performance monitoring data could not be collected + for any reason." + ::= { adslAturChanPerfDataEntry 17 } + + adslAturChanPerfPrev1DayReceivedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this + channel within the most recent previous 1-day + period." + ::= { adslAturChanPerfDataEntry 18 } + + adslAturChanPerfPrev1DayTransmittedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel within the most recent previous 1-day + period." + ::= { adslAturChanPerfDataEntry 19 } + + adslAturChanPerfPrev1DayCorrectedBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel within the most recent + previous 1-day period." + ::= { adslAturChanPerfDataEntry 20 } + + adslAturChanPerfPrev1DayUncorrectBlks OBJECT-TYPE + SYNTAX AdslPerfPrevDayCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel within the most recent previous + 1-day period." + ::= { adslAturChanPerfDataEntry 21 } + + adslAtucChanIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAtucChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUC channel's + performance data collection interval. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 12 } + + adslAtucChanIntervalEntry OBJECT-TYPE + SYNTAX AdslAtucChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAtucIntervalTable." + INDEX { ifIndex, adslAtucChanIntervalNumber } + ::= { adslAtucChanIntervalTable 1 } + + AdslAtucChanIntervalEntry ::= + SEQUENCE { + adslAtucChanIntervalNumber INTEGER, + adslAtucChanIntervalReceivedBlks PerfIntervalCount, + adslAtucChanIntervalTransmittedBlks PerfIntervalCount, + adslAtucChanIntervalCorrectedBlks PerfIntervalCount, + adslAtucChanIntervalUncorrectBlks PerfIntervalCount, + adslAtucChanIntervalValidData TruthValue + } + adslAtucChanIntervalNumber OBJECT-TYPE + SYNTAX INTEGER(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the + the most recent previous interval; interval + 96 is 24 hours ago. Intervals 2..96 are + optional." + ::= { adslAtucChanIntervalEntry 1 } + + adslAtucChanIntervalReceivedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + during this interval." + ::= { adslAtucChanIntervalEntry 2 } + + adslAtucChanIntervalTransmittedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel during this interval." + ::= { adslAtucChanIntervalEntry 3 } + + adslAtucChanIntervalCorrectedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel during this interval." + ::= { adslAtucChanIntervalEntry 4 } + + adslAtucChanIntervalUncorrectBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel during this interval." + ::= { adslAtucChanIntervalEntry 5 } + + adslAtucChanIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { adslAtucChanIntervalEntry 6 } + + adslAturChanIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslAturChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each ATUR channel's + performance data collection interval. + ADSL channel interfaces are those ifEntries + where ifType is equal to adslInterleave(124) + or adslFast(125)." + ::= { adslMibObjects 13 } + + adslAturChanIntervalEntry OBJECT-TYPE + SYNTAX AdslAturChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the adslAturIntervalTable." + INDEX { ifIndex, adslAturChanIntervalNumber } + ::= { adslAturChanIntervalTable 1 } + + AdslAturChanIntervalEntry ::= + SEQUENCE { + adslAturChanIntervalNumber INTEGER, + adslAturChanIntervalReceivedBlks PerfIntervalCount, + adslAturChanIntervalTransmittedBlks PerfIntervalCount, + adslAturChanIntervalCorrectedBlks PerfIntervalCount, + adslAturChanIntervalUncorrectBlks PerfIntervalCount, + adslAturChanIntervalValidData TruthValue + } + adslAturChanIntervalNumber OBJECT-TYPE + SYNTAX INTEGER(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the + the most recent previous interval; interval + 96 is 24 hours ago. Intervals 2..96 are + optional." + ::= { adslAturChanIntervalEntry 1 } + + adslAturChanIntervalReceivedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks received on this channel + during this interval." + ::= { adslAturChanIntervalEntry 2 } + + adslAturChanIntervalTransmittedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all encoded blocks transmitted on this + channel during this interval." + ::= { adslAturChanIntervalEntry 3 } + + adslAturChanIntervalCorrectedBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with errors that were + corrected on this channel during this interval." + ::= { adslAturChanIntervalEntry 4 } + + adslAturChanIntervalUncorrectBlks OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of all blocks received with uncorrectable + errors on this channel during this interval." + ::= { adslAturChanIntervalEntry 5 } + + adslAturChanIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { adslAturChanIntervalEntry 6 } + + -- Profile Group + -- + + adslLineConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslLineConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the ADSL line + configuration. One entry in this table reflects a + profile defined by a manager which can be used to + configure the ADSL line." + ::= { adslMibObjects 14} + + adslLineConfProfileEntry OBJECT-TYPE + SYNTAX AdslLineConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of an ADSL modem. + + When `dynamic' profiles are implemented, a default + profile will always exist. This profile's name will + be set to `DEFVAL' and its parameters will be set + to vendor specific values, unless otherwise specified + in this document. + + When `static' profiles are implemented, profiles + are automaticly created or destroyed as ADSL + physical lines are discovered and removed by + the system. The name of the profile will be + equivalent to the decimal value of the line's + interface index. + " + INDEX { IMPLIED adslLineConfProfileName} + ::= { adslLineConfProfileTable 1} + + AdslLineConfProfileEntry ::= + SEQUENCE { + adslLineConfProfileName SnmpAdminString, + adslAtucConfRateMode INTEGER, + adslAtucConfRateChanRatio INTEGER, + adslAtucConfTargetSnrMgn INTEGER, + adslAtucConfMaxSnrMgn INTEGER, + adslAtucConfMinSnrMgn INTEGER, + adslAtucConfDownshiftSnrMgn INTEGER, + adslAtucConfUpshiftSnrMgn INTEGER, + adslAtucConfMinUpshiftTime INTEGER, + adslAtucConfMinDownshiftTime INTEGER, + adslAtucChanConfFastMinTxRate Unsigned32, + adslAtucChanConfInterleaveMinTxRate Unsigned32, + adslAtucChanConfFastMaxTxRate Unsigned32, + adslAtucChanConfInterleaveMaxTxRate Unsigned32, + adslAtucChanConfMaxInterleaveDelay INTEGER, + adslAturConfRateMode INTEGER, + adslAturConfRateChanRatio INTEGER, + adslAturConfTargetSnrMgn INTEGER, + adslAturConfMaxSnrMgn INTEGER, + adslAturConfMinSnrMgn INTEGER, + adslAturConfDownshiftSnrMgn INTEGER, + adslAturConfUpshiftSnrMgn INTEGER, + adslAturConfMinUpshiftTime INTEGER, + adslAturConfMinDownshiftTime INTEGER, + adslAturChanConfFastMinTxRate Unsigned32, + adslAturChanConfInterleaveMinTxRate Unsigned32, + adslAturChanConfFastMaxTxRate Unsigned32, + adslAturChanConfInterleaveMaxTxRate Unsigned32, + adslAturChanConfMaxInterleaveDelay INTEGER, + adslLineConfProfileRowStatus RowStatus + } + + adslLineConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is used by the line configuration table + in order to identify a row of this table. + + When `dynamic' profiles are implemented, the profile + name is user specified. Also, the system will always + provide a default profile whose name is `DEFVAL'. + + When `static' profiles are implemented, there is an + one-to-one relationship between each line and its + profile. In which case, the profile name will + need to algorithmicly represent the Line's ifIndex. + Therefore, the profile's name is a decimalized string + of the ifIndex that is fixed-length (i.e., 10) with + leading zero(s). For example, the profile name for + ifIndex which equals '15' will be '0000000015'." + ::= { adslLineConfProfileEntry 1 } + + adslAtucConfRateMode OBJECT-TYPE + SYNTAX INTEGER { + fixed (1), -- no rate adaptation + adaptAtStartup (2), -- perform rate adaptation + -- only at initialization + adaptAtRuntime (3) -- perform rate adaptation at + -- any time + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines what form of transmit rate adaptation is + configured on this modem. See ADSL Forum TR-005 [3] + for more information." + ::= { adslLineConfProfileEntry 2 } + + adslAtucConfRateChanRatio OBJECT-TYPE + SYNTAX INTEGER(0..100) + UNITS "%" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured allocation ratio of excess transmit + bandwidth between fast and interleaved channels. Only + applies when two channel mode and RADSL are supported. + Distribute bandwidth on each channel in excess of the + corresponding ChanConfMinTxRate so that: + adslAtucConfRateChanRatio = + + [Fast / (Fast + Interleaved)] * 100 + + In other words this value is the fast channel + percentage." + ::= { adslLineConfProfileEntry 3 } + + adslAtucConfTargetSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Target Signal/Noise Margin. + This is the Noise Margin the modem must achieve + with a BER of 10-7 or better to successfully complete + initialization." + ::= { adslLineConfProfileEntry 4 } + + adslAtucConfMaxSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum acceptable Signal/Noise Margin. + If the Noise Margin is above this the modem should + attempt to reduce its power output to optimize its + operation." + ::= { adslLineConfProfileEntry 5 } + + adslAtucConfMinSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum acceptable Signal/Noise Margin. + If the noise margin falls below this level, the modem + should attempt to increase its power output. If that + is not possible the modem will attempt to + re-initialize or shut down." + ::= { adslLineConfProfileEntry 6 } + + adslAtucConfDownshiftSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Signal/Noise Margin for rate downshift. + If the noise margin falls below this level, the modem + should attempt to decrease its transmit rate. In + the case that RADSL mode is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 7 } + + adslAtucConfUpshiftSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Signal/Noise Margin for rate upshift. + If the noise margin rises above this level, the modem + should attempt to increase its transmit rate. In + the case that RADSL is not present, the value will + be `0'." + ::= { adslLineConfProfileEntry 8 } + + adslAtucConfMinUpshiftTime OBJECT-TYPE + SYNTAX INTEGER(0..16383) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum time that the current margin is above + UpshiftSnrMgn before an upshift occurs. + In the case that RADSL is not present, the value will + be `0'." + ::= { adslLineConfProfileEntry 9 } + adslAtucConfMinDownshiftTime OBJECT-TYPE + SYNTAX INTEGER(0..16383) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum time that the current margin is below + DownshiftSnrMgn before a downshift occurs. + In the case that RADSL mode is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 10 } + + adslAtucChanConfFastMinTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum Transmit rate for `Fast' channels, + in bps. See adslAtucConfRateChanRatio for information + regarding RADSL mode and ATUR transmit rate for + ATUC receive rates." + ::= { adslLineConfProfileEntry 11 } + + adslAtucChanConfInterleaveMinTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum Transmit rate for `Interleave' + channels, in bps. See adslAtucConfRateChanRatio for + information regarding RADSL mode and see + ATUR transmit rate for receive rates." + ::= { adslLineConfProfileEntry 12 } + + adslAtucChanConfFastMaxTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum Transmit rate for `Fast' channels, + in bps. See adslAtucConfRateChanRatio for information + regarding RADSL mode and see ATUR transmit rate for + ATUC receive rates." + ::= { adslLineConfProfileEntry 13 } + + adslAtucChanConfInterleaveMaxTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum Transmit rate for `Interleave' + channels, in bps. See adslAtucConfRateChanRatio for + information regarding RADSL mode and ATUR transmit + rate for ATUC receive rates." + ::= { adslLineConfProfileEntry 14 } + + adslAtucChanConfMaxInterleaveDelay OBJECT-TYPE + SYNTAX INTEGER(0..255) + UNITS "milli-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured maximum Interleave Delay for this channel. + + Interleave delay applies only to the interleave channel + and defines the mapping (relative spacing) between + subsequent input bytes at the interleaver input and + their placement in the bit stream at the interleaver + output. Larger numbers provide greater separation + between consecutive input bytes in the output bit + stream allowing for improved impulse noise immunity + at the expense of payload latency." + ::= { adslLineConfProfileEntry 15 } + + adslAturConfRateMode OBJECT-TYPE + SYNTAX INTEGER { + fixed (1), -- no rate adaptation + adaptAtStartup (2), -- perform rate adaptation + + -- only at initialization + adaptAtRuntime (3) -- perform rate adaptation at + -- any time + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines what form of transmit rate adaptation is + configured on this modem. See ADSL Forum TR-005 [3] + for more information." + ::= { adslLineConfProfileEntry 16 } + + adslAturConfRateChanRatio OBJECT-TYPE + SYNTAX INTEGER(0..100) + UNITS "%" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured allocation ratio of excess transmit + bandwidth between fast and interleaved channels. Only + applies when two channel mode and RADSL are supported. + Distribute bandwidth on each channel in excess of the + corresponding ChanConfMinTxRate so that: + adslAturConfRateChanRatio = + + [Fast / (Fast + Interleaved)] * 100 + + In other words this value is the fast channel + percentage." + ::= { adslLineConfProfileEntry 17 } + + adslAturConfTargetSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Target Signal/Noise Margin. + This is the Noise Margin the modem must achieve + with a BER of 10-7 or better to successfully complete + initialization." + ::= { adslLineConfProfileEntry 18 } + + adslAturConfMaxSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum acceptable Signal/Noise Margin. + If the Noise Margin is above this the modem should + attempt to reduce its power output to optimize its + operation." + ::= { adslLineConfProfileEntry 19 } + + adslAturConfMinSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum acceptable Signal/Noise Margin. + If the noise margin falls below this level, the modem + should attempt to increase its power output. If that + is not possible the modem will attempt to + re-initialize or shut down." + ::= { adslLineConfProfileEntry 20 } + + adslAturConfDownshiftSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Signal/Noise Margin for rate downshift. + If the noise margin falls below this level, the modem + should attempt to decrease its transmit rate. + In the case that RADSL mode is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 21 } + + adslAturConfUpshiftSnrMgn OBJECT-TYPE + SYNTAX INTEGER (0..310) + UNITS "tenth dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Signal/Noise Margin for rate upshift. + If the noise margin rises above this level, the modem + should attempt to increase its transmit rate. + In the case that RADSL is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 22 } + + adslAturConfMinUpshiftTime OBJECT-TYPE + SYNTAX INTEGER(0..16383) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum time that the current margin is above + UpshiftSnrMgn before an upshift occurs. + In the case that RADSL is not present, the value will + be `0'." + ::= { adslLineConfProfileEntry 23 } + + adslAturConfMinDownshiftTime OBJECT-TYPE + SYNTAX INTEGER(0..16383) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum time that the current margin is below + DownshiftSnrMgn before a downshift occurs. + In the case that RADSL mode is not present, + the value will be `0'." + ::= { adslLineConfProfileEntry 24 } + + adslAturChanConfFastMinTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum Transmit rate for `Fast' channels, + in bps. See adslAturConfRateChanRatio for information + regarding RADSL mode and ATUC transmit rate + for ATUR receive rates." + ::= { adslLineConfProfileEntry 25 } + + adslAturChanConfInterleaveMinTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Minimum Transmit rate for `Interleave' + channels, in bps. See adslAturConfRateChanRatio for + information regarding RADSL mode and ATUC transmit rate + for ATUR receive rates." + ::= { adslLineConfProfileEntry 26 } + + adslAturChanConfFastMaxTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum Transmit rate for `Fast' channels, + in bps. See adslAturConfRateChanRatio for information + regarding RADSL mode and ATUC transmit rate + for ATUR receive rates." + ::= { adslLineConfProfileEntry 27 } + + adslAturChanConfInterleaveMaxTxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured Maximum Transmit rate for `Interleave' + channels, in bps. See adslAturConfRateChanRatio for + information regarding RADSL mode and see + ATUC transmit rate for ATUR receive rates." + ::= { adslLineConfProfileEntry 28 } + + adslAturChanConfMaxInterleaveDelay OBJECT-TYPE + SYNTAX INTEGER(0..255) + UNITS "milli-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Configured maximum Interleave Delay for this channel. + + Interleave delay applies only to the interleave channel + and defines the mapping (relative spacing) between + subsequent input bytes at the interleaver input and + their placement in the bit stream at the interleaver + output. Larger numbers provide greater separation + between consecutive input bytes in the output bit + stream allowing for improved impulse noise immunity + at the expense of payload latency." + ::= { adslLineConfProfileEntry 29 } + + adslLineConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + A profile activated by setting this object to + `active'. When `active' is set, the system + will validate the profile. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `outOfService') it must be first unreferenced + from all associated lines. + + If the implementator of this MIB has chosen not + to implement `dynamic assignment' of profiles, this + object's MIN-ACCESS is read-only and its value + is always to be `active'." + ::= { adslLineConfProfileEntry 30 } + + adslLineAlarmConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdslLineAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the ADSL line + configuration. One entry in this table reflects a + profile defined by a manager which can be used to + configure the modem for a physical line" + ::= { adslMibObjects 15} + + adslLineAlarmConfProfileEntry OBJECT-TYPE + SYNTAX AdslLineAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of an ADSL modem. + + When `dynamic' profiles are implemented, a default + profile will always exist. This profile's name will + be set to `DEFVAL' and its parameters will be set to + vendor specific values, unless otherwise specified + in this document. + + When `static' profiles are implemented, profiles + are automaticly created or destroyed as ADSL + physical lines are discovered and removed by + the system. The name of the profile will be + equivalent to the decimal value of the line's + interface index. + " + INDEX { IMPLIED adslLineAlarmConfProfileName} + ::= { adslLineAlarmConfProfileTable 1} + + AdslLineAlarmConfProfileEntry ::= + SEQUENCE { + adslLineAlarmConfProfileName SnmpAdminString, + adslAtucThresh15MinLofs INTEGER, + adslAtucThresh15MinLoss INTEGER, + adslAtucThresh15MinLols INTEGER, + adslAtucThresh15MinLprs INTEGER, + adslAtucThresh15MinESs INTEGER, + adslAtucThreshFastRateUp Unsigned32, + adslAtucThreshInterleaveRateUp Unsigned32, + adslAtucThreshFastRateDown Unsigned32, + adslAtucThreshInterleaveRateDown Unsigned32, + adslAtucInitFailureTrapEnable INTEGER, + adslAturThresh15MinLofs INTEGER, + adslAturThresh15MinLoss INTEGER, + adslAturThresh15MinLprs INTEGER, + adslAturThresh15MinESs INTEGER, + adslAturThreshFastRateUp Unsigned32, + adslAturThreshInterleaveRateUp Unsigned32, + adslAturThreshFastRateDown Unsigned32, + adslAturThreshInterleaveRateDown Unsigned32, + adslLineAlarmConfProfileRowStatus RowStatus + } + + adslLineAlarmConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is used by the line alarm configuration + table in order to identify a row of this table. + + When `dynamic' profiles are implemented, the profile + name is user specified. Also, the system will always + provide a default profile whose name is `DEFVAL'. + + When `static' profiles are implemented, there is an + one-to-one relationship between each line and its + profile. In which case, the profile name will + need to algorithmicly represent the Line's ifIndex. + Therefore, the profile's name is a decimalized string + of the ifIndex that is fixed-length (i.e., 10) with + leading zero(s). For example, the profile name for + ifIndex which equals '15' will be '0000000015'." + ::= { adslLineAlarmConfProfileEntry 1} + + adslAtucThresh15MinLofs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Frame Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfLofsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 2} + + adslAtucThresh15MinLoss OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Signal Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfLossThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 3} + + adslAtucThresh15MinLols OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Link Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfLolsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 4} + + adslAtucThresh15MinLprs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Power Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfLprsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 5} + + adslAtucThresh15MinESs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Errored Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAtucPerfESsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 6} + + adslAtucThreshFastRateUp OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Fast' channels only. + Configured change in rate causing an + adslAtucRateChangeTrap. A trap is produced when: + ChanCurrTxRate >= ChanPrevTxRate plus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 7} + + adslAtucThreshInterleaveRateUp OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Interleave' channels only. + Configured change in rate causing an + adslAtucRateChangeTrap. A trap is produced when: + ChanCurrTxRate >= ChanPrevTxRate plus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 8} + + adslAtucThreshFastRateDown OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Fast' channels only. + Configured change in rate causing an + adslAtucRateChangeTrap. A trap is produced when: + ChanCurrTxRate <= ChanPrevTxRate minus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 9 } + + adslAtucThreshInterleaveRateDown OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Interleave' channels only. + Configured change in rate causing an + adslAtucRateChangeTrap. A trap is produced when: + ChanCurrTxRate <= ChanPrevTxRate minus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 10 } + + adslAtucInitFailureTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enable (1), + disable (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Enables and disables the InitFailureTrap. This + object is defaulted disable(2)." + DEFVAL { disable } + ::= { adslLineAlarmConfProfileEntry 11 } + + adslAturThresh15MinLofs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Frame Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAturPerfLofsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 12 } + + adslAturThresh15MinLoss OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Signal Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAturPerfLossThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 13 } + + adslAturThresh15MinLprs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Loss of Power Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAturPerfLprsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 14 } + + adslAturThresh15MinESs OBJECT-TYPE + SYNTAX INTEGER(0..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of Errored Seconds + encountered by an ADSL interface within any given 15 + minutes performance data collection period, which + causes the SNMP agent to send an + adslAturPerfESsThreshTrap. + One trap will be sent per interval per interface. + A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 15 } + + adslAturThreshFastRateUp OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Fast' channels only. + Configured change in rate causing an + adslAturRateChangeTrap. A trap is produced when: + ChanCurrTxRate >= ChanPrevTxRate plus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 16 } + + adslAturThreshInterleaveRateUp OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Interleave' channels only. + configured change in rate causing an + adslAturRateChangeTrap. A trap is produced when: + ChanCurrTxRate >= ChanPrevTxRate plus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 17 } + + adslAturThreshFastRateDown OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Fast' channels only. + Configured change in rate causing an + adslAturRateChangeTrap. A trap is produced when: + ChanCurrTxRate <= ChanPrevTxRate minus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 18 } + + adslAturThreshInterleaveRateDown OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applies to `Interleave' channels only. + Configured change in rate causing an + adslAturRateChangeTrap. A trap is produced when: + ChanCurrTxRate <= ChanPrevTxRate minus the value of + this object. A value of `0' will disable the trap." + ::= { adslLineAlarmConfProfileEntry 19 } + + adslLineAlarmConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile activated by setting this object to + `active'. When `active' is set, the system + will validate the profile. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `outOfService') it must be first unreferenced + from all associated lines. + + If the implementator of this MIB has chosen not + to implement `dynamic assignment' of profiles, this + object's MIN-ACCESS is read-only and its value + is always to be `active'." + ::= { adslLineAlarmConfProfileEntry 20 } + + -- Line Code Specific Tables + + -- These are place holders for the Line Code Specific MIBs + -- once they become available. + + adslLCSMib OBJECT IDENTIFIER ::= { adslMibObjects 16 } + +-- trap definitions + +adslTraps OBJECT IDENTIFIER ::= { adslLineMib 2 } + +adslAtucTraps OBJECT IDENTIFIER ::= { adslTraps 1 } + + adslAtucPerfLofsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinLofs, + adslAtucThresh15MinLofs } + STATUS current + DESCRIPTION + "Loss of Framing 15-minute interval threshold reached." + ::= { adslAtucTraps 0 1 } + + adslAtucPerfLossThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinLoss, + adslAtucThresh15MinLoss } + STATUS current + DESCRIPTION + "Loss of Signal 15-minute interval threshold reached." + ::= { adslAtucTraps 0 2 } + + adslAtucPerfLprsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinLprs, + adslAtucThresh15MinLprs } + STATUS current + DESCRIPTION + "Loss of Power 15-minute interval threshold reached." + ::= { adslAtucTraps 0 3 } + + adslAtucPerfESsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinESs, + adslAtucThresh15MinESs } + STATUS current + DESCRIPTION + "Errored Second 15-minute interval threshold reached." + ::= { adslAtucTraps 0 4 } + + adslAtucRateChangeTrap NOTIFICATION-TYPE + OBJECTS { adslAtucChanCurrTxRate, + adslAtucChanPrevTxRate } + STATUS current + DESCRIPTION + "The ATUCs transmit rate has changed (RADSL mode only)" + ::= { adslAtucTraps 0 5 } + + adslAtucPerfLolsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAtucPerfCurr15MinLols, + adslAtucThresh15MinLols } + STATUS current + DESCRIPTION + "Loss of Link 15-minute interval threshold reached." + ::= { adslAtucTraps 0 6 } + + adslAtucInitFailureTrap NOTIFICATION-TYPE + OBJECTS { adslAtucCurrStatus } + STATUS current + DESCRIPTION + "ATUC initialization failed. See adslAtucCurrStatus + for potential reasons." + ::= { adslAtucTraps 0 7 } + +adslAturTraps OBJECT IDENTIFIER ::= { adslTraps 2 } + + adslAturPerfLofsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinLofs, + adslAturThresh15MinLofs } + STATUS current + DESCRIPTION + "Loss of Framing 15-minute interval threshold reached." + ::= { adslAturTraps 0 1 } + + adslAturPerfLossThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinLoss, + adslAturThresh15MinLoss } + STATUS current + DESCRIPTION + "Loss of Signal 15-minute interval threshold reached." + ::= { adslAturTraps 0 2 } + + adslAturPerfLprsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinLprs, + adslAturThresh15MinLprs } + STATUS current + DESCRIPTION + "Loss of Power 15-minute interval threshold reached." + ::= { adslAturTraps 0 3 } + + adslAturPerfESsThreshTrap NOTIFICATION-TYPE + OBJECTS { adslAturPerfCurr15MinESs, + adslAturThresh15MinESs } + STATUS current + DESCRIPTION + "Errored Second 15-minute interval threshold reached." + ::= { adslAturTraps 0 4 } + + adslAturRateChangeTrap NOTIFICATION-TYPE + OBJECTS { adslAturChanCurrTxRate, + adslAturChanPrevTxRate } + STATUS current + DESCRIPTION + "The ATURs transmit rate has changed (RADSL mode only)" + ::= { adslAturTraps 0 5 } + + -- no adslAturPerfLolsThreshTrap possible { 0 6 } + + -- no adslAturInitFailureTrap possible { 0 7 } + +-- conformance information + +adslConformance OBJECT IDENTIFIER ::= { adslLineMib 3 } + +adslGroups OBJECT IDENTIFIER ::= { adslConformance 1 } +adslCompliances OBJECT IDENTIFIER ::= { adslConformance 2 } + + -- ATU-C agent compliance statements + + adslLineMibAtucCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which manage ADSL ATU-C interfaces." + + MODULE -- this module + MANDATORY-GROUPS + { + adslLineGroup, adslPhysicalGroup, adslChannelGroup, + adslAtucPhysPerfIntervalGroup, + adslAturPhysPerfIntervalGroup, adslLineConfProfileGroup, + adslLineAlarmConfProfileGroup, + adslLineConfProfileControlGroup + } + + GROUP adslAtucPhysPerfRawCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-C physical event counters + should implement this group." + + GROUP adslAturPhysPerfRawCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-R physical event counters + should implement this group." + + GROUP adslAtucChanPerformanceGroup + DESCRIPTION + "This group is optional. Implementations which + require ATU-C channel block event counters should + implement this group." + GROUP adslAturChanPerformanceGroup + DESCRIPTION + "This group is optional. Implementations which + require ATU-R channel block event counters should + implement this group." + + OBJECT adslLineConfProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable when static + profiles are implemented." + + OBJECT adslAtucConfRateMode + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfRateChanRatio + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfTargetSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfMaxSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfMinSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfDownshiftSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAtucConfUpshiftSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfMinUpshiftTime + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucConfMinDownshiftTime + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfFastMinTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfInterleaveMinTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfFastMaxTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfInterleaveMaxTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucChanConfMaxInterleaveDelay + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAturConfRateMode + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfRateChanRatio + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfTargetSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfMaxSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfMinSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfDownshiftSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfUpshiftSnrMgn + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturConfMinUpshiftTime + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAturConfMinDownshiftTime + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfFastMinTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfInterleaveMinTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfFastMaxTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfInterleaveMaxTxRate + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturChanConfMaxInterleaveDelay + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslLineConfProfileRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + + OBJECT adslLineAlarmConfProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + OBJECT adslAtucThresh15MinLofs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinLoss + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinLols + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinLprs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinESs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshFastRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshInterleaveRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshFastRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAtucThreshInterleaveRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucInitFailureTrapEnable + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLofs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLoss + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLprs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinESs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshFastRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshInterleaveRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + OBJECT adslAturThreshFastRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshInterleaveRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslLineAlarmConfProfileRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + + ::= { adslCompliances 1 } + + -- ATU-R agent compliance statements + + adslLineMibAturCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which manage ADSL ATU-R interfaces." + + MODULE -- this module + MANDATORY-GROUPS + { + adslAturLineGroup, adslAturPhysicalGroup, + adslAturChannelGroup, + adslAturAtucPhysPerfIntervalGroup, + adslAturAturPhysPerfIntervalGroup, + adslAturLineAlarmConfProfileGroup, + adslAturLineConfProfileControlGroup + } + + GROUP adslAturAtucPhysPerfRawCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-C physical event counters + should implement this group." + + GROUP adslAturAturPhysPerfRawCounterGroup + DESCRIPTION + "This group is optional. Implementations which + require continuous ATU-R physical event counters + should implement this group." + + GROUP adslAturAtucChanPerformanceGroup + DESCRIPTION + "This group is optional. Implementations which + require ATU-C channel block event counters should + implement this group." + + GROUP adslAturAturChanPerformanceGroup + DESCRIPTION + "This group is optional. Implementations which + require ATU-R channel block event counters should + implement this group." + + OBJECT adslLineAlarmConfProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + + OBJECT adslAtucThresh15MinLofs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinLoss + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThresh15MinESs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshFastRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshInterleaveRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucThreshFastRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAtucInitFailureTrapEnable + MIN-ACCESS read-write + + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLofs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLoss + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinLprs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThresh15MinESs + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshFastRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshInterleaveRateUp + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshFastRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslAturThreshInterleaveRateDown + MIN-ACCESS read-write + DESCRIPTION + "Read-write access is applicable when + static profiles are implemented." + + OBJECT adslLineAlarmConfProfileRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Read-only access is applicable only when static + profiles are implemented." + + OBJECT adslAtucCurrStatus + SYNTAX BITS { + noDefect(0), + lossOfFraming(1), + lossOfSignal(2) + } + DESCRIPTION + "It is allowable to implement only noDefect(0), + lossOfFraming(1) and lossOfSignal(2) by the ATU-R + agent." + + ::= { adslCompliances 2 } + + -- units of conformance + adslLineGroup OBJECT-GROUP + OBJECTS { + adslLineCoding, adslLineType, adslLineSpecific + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ADSL Line." + ::= { adslGroups 1 } + + adslPhysicalGroup OBJECT-GROUP + OBJECTS { + adslAtucInvSerialNumber, adslAtucInvVendorID, + adslAtucInvVersionNumber, adslAtucCurrSnrMgn, + adslAtucCurrAtn, adslAtucCurrStatus, + adslAtucCurrOutputPwr, adslAtucCurrAttainableRate, + adslAturInvSerialNumber, adslAturInvVendorID, + adslAturInvVersionNumber, adslAturCurrSnrMgn, + adslAturCurrAtn, adslAturCurrStatus, + adslAturCurrOutputPwr, adslAturCurrAttainableRate + } + STATUS current + DESCRIPTION + "A collection of objects providing physical + configuration information of the ADSL Line." + ::= { adslGroups 2 } + + adslChannelGroup OBJECT-GROUP + OBJECTS { + adslAtucChanInterleaveDelay, adslAtucChanCurrTxRate, + adslAtucChanPrevTxRate, adslAtucChanCrcBlockLength, + adslAturChanInterleaveDelay, adslAturChanCurrTxRate, + adslAturChanPrevTxRate, adslAturChanCrcBlockLength + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ADSL channel." + ::= { adslGroups 3 } + + adslAtucPhysPerfRawCounterGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfLofs, adslAtucPerfLoss, + adslAtucPerfLols, adslAtucPerfLprs, + adslAtucPerfESs, adslAtucPerfInits + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-C end)." + ::= { adslGroups 4 } + + adslAtucPhysPerfIntervalGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfValidIntervals, + adslAtucPerfInvalidIntervals, + adslAtucPerfCurr15MinTimeElapsed, + adslAtucPerfCurr15MinLofs, adslAtucPerfCurr15MinLoss, + adslAtucPerfCurr15MinLols, adslAtucPerfCurr15MinLprs, + adslAtucPerfCurr15MinESs, adslAtucPerfCurr15MinInits, + adslAtucPerfCurr1DayLofs, adslAtucPerfCurr1DayLoss, + adslAtucPerfCurr1DayLols, adslAtucPerfCurr1DayLprs, + adslAtucPerfCurr1DayESs, adslAtucPerfCurr1DayInits, + adslAtucPerfPrev1DayMoniSecs, + adslAtucPerfPrev1DayLofs, adslAtucPerfPrev1DayLoss, + adslAtucPerfPrev1DayLols, adslAtucPerfPrev1DayLprs, + adslAtucPerfPrev1DayESs, adslAtucPerfPrev1DayInits, + adslAtucIntervalLofs, adslAtucIntervalLoss, + adslAtucIntervalLols, adslAtucIntervalLprs, + adslAtucIntervalESs, adslAtucIntervalInits, + adslAtucIntervalValidData + } + + STATUS current + DESCRIPTION + "A collection of objects providing current 15-minute, + 1-day; and previous 1-day performance counts on + ADSL Line (ATU-C end) ." + ::= { adslGroups 5 } + + adslAturPhysPerfRawCounterGroup OBJECT-GROUP + OBJECTS { + adslAturPerfLofs, adslAturPerfLoss, + adslAturPerfLprs, adslAturPerfESs + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-R end)." + ::= { adslGroups 6 } + + adslAturPhysPerfIntervalGroup OBJECT-GROUP + OBJECTS { + adslAturPerfValidIntervals, + adslAturPerfInvalidIntervals, + adslAturPerfCurr15MinTimeElapsed, + adslAturPerfCurr15MinLofs, adslAturPerfCurr15MinLoss, + adslAturPerfCurr15MinLprs, adslAturPerfCurr15MinESs, + adslAturPerfCurr1DayTimeElapsed, + adslAturPerfCurr1DayLofs, adslAturPerfCurr1DayLoss, + adslAturPerfCurr1DayLprs, adslAturPerfCurr1DayESs, + adslAturPerfPrev1DayMoniSecs, + adslAturPerfPrev1DayLofs, adslAturPerfPrev1DayLoss, + adslAturPerfPrev1DayLprs, adslAturPerfPrev1DayESs, + adslAturIntervalLofs, + adslAturIntervalLoss, adslAturIntervalLprs, + adslAturIntervalESs, adslAturIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing current 15-minute, + 1-day; and previous 1-day performance counts on + ADSL Line (ATU-R end)." + ::= { adslGroups 7 } + + adslAtucChanPerformanceGroup OBJECT-GROUP + OBJECTS { + adslAtucChanReceivedBlks, + adslAtucChanTransmittedBlks, + adslAtucChanCorrectedBlks, + adslAtucChanUncorrectBlks, + adslAtucChanPerfValidIntervals, + adslAtucChanPerfInvalidIntervals, + adslAtucChanPerfCurr15MinTimeElapsed, + adslAtucChanPerfCurr15MinReceivedBlks, + adslAtucChanPerfCurr15MinTransmittedBlks, + adslAtucChanPerfCurr15MinCorrectedBlks, + adslAtucChanPerfCurr15MinUncorrectBlks, + adslAtucChanPerfCurr1DayTimeElapsed, + adslAtucChanPerfCurr1DayReceivedBlks, + adslAtucChanPerfCurr1DayTransmittedBlks, + adslAtucChanPerfCurr1DayCorrectedBlks, + adslAtucChanPerfCurr1DayUncorrectBlks, + adslAtucChanPerfPrev1DayMoniSecs, + adslAtucChanPerfPrev1DayReceivedBlks, + adslAtucChanPerfPrev1DayTransmittedBlks, + adslAtucChanPerfPrev1DayCorrectedBlks, + adslAtucChanPerfPrev1DayUncorrectBlks, + adslAtucChanIntervalReceivedBlks, + adslAtucChanIntervalTransmittedBlks, + adslAtucChanIntervalCorrectedBlks, + adslAtucChanIntervalUncorrectBlks, + adslAtucChanIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing channel block + performance information on an ADSL channel + (ATU-C end)." + ::= { adslGroups 8 } + + adslAturChanPerformanceGroup OBJECT-GROUP + OBJECTS { + adslAturChanReceivedBlks, + adslAturChanTransmittedBlks, + adslAturChanCorrectedBlks, + adslAturChanUncorrectBlks, + adslAturChanPerfValidIntervals, + adslAturChanPerfInvalidIntervals, + adslAturChanPerfCurr15MinTimeElapsed, + adslAturChanPerfCurr15MinReceivedBlks, + adslAturChanPerfCurr15MinTransmittedBlks, + adslAturChanPerfCurr15MinCorrectedBlks, + adslAturChanPerfCurr15MinUncorrectBlks, + adslAturChanPerfCurr1DayTimeElapsed, + adslAturChanPerfCurr1DayReceivedBlks, + adslAturChanPerfCurr1DayTransmittedBlks, + adslAturChanPerfCurr1DayCorrectedBlks, + adslAturChanPerfCurr1DayUncorrectBlks, + adslAturChanPerfPrev1DayMoniSecs, + adslAturChanPerfPrev1DayReceivedBlks, + adslAturChanPerfPrev1DayTransmittedBlks, + adslAturChanPerfPrev1DayCorrectedBlks, + adslAturChanPerfPrev1DayUncorrectBlks, + adslAturChanIntervalReceivedBlks, + adslAturChanIntervalTransmittedBlks, + adslAturChanIntervalCorrectedBlks, + adslAturChanIntervalUncorrectBlks, + adslAturChanIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing channel block + performance information on an ADSL channel + (ATU-C end)." + ::= { adslGroups 9 } + + adslLineConfProfileGroup OBJECT-GROUP + OBJECTS { + adslAtucConfRateMode, adslAtucConfRateChanRatio, + adslAtucConfTargetSnrMgn, adslAtucConfMaxSnrMgn, + adslAtucConfMinSnrMgn, + adslAtucConfDownshiftSnrMgn, + adslAtucConfUpshiftSnrMgn, + adslAtucConfMinUpshiftTime, + adslAtucConfMinDownshiftTime, + adslAtucChanConfFastMinTxRate, + adslAtucChanConfInterleaveMinTxRate, + adslAtucChanConfFastMaxTxRate, + adslAtucChanConfInterleaveMaxTxRate, + adslAtucChanConfMaxInterleaveDelay, + adslAturConfRateMode, adslAturConfRateChanRatio, + adslAturConfTargetSnrMgn, adslAturConfMaxSnrMgn, + adslAturConfMinSnrMgn, adslAturConfDownshiftSnrMgn, + adslAturConfUpshiftSnrMgn, + adslAturConfMinUpshiftTime, + adslAturConfMinDownshiftTime, + adslAturChanConfFastMinTxRate, + adslAturChanConfInterleaveMinTxRate, + adslAturChanConfFastMaxTxRate, + adslAturChanConfInterleaveMaxTxRate, + adslAturChanConfMaxInterleaveDelay + } + STATUS current + DESCRIPTION + "A collection of objects providing provisioning + information about an ADSL Line." + ::= { adslGroups 10 } + + adslLineAlarmConfProfileGroup OBJECT-GROUP + OBJECTS { + adslAtucThresh15MinLofs, adslAtucThresh15MinLoss, + adslAtucThresh15MinLols, adslAtucThresh15MinLprs, + adslAtucThresh15MinESs, adslAtucThreshFastRateUp, + adslAtucThreshInterleaveRateUp, + adslAtucThreshFastRateDown, + adslAtucThreshInterleaveRateDown, + adslAtucInitFailureTrapEnable, + adslAturThresh15MinLofs, adslAturThresh15MinLoss, + adslAturThresh15MinLprs, adslAturThresh15MinESs, + adslAturThreshFastRateUp, + adslAturThreshInterleaveRateUp, + adslAturThreshFastRateDown, + adslAturThreshInterleaveRateDown + } + STATUS current + DESCRIPTION + "A collection of objects providing alarm provisioning + information about an ADSL Line." + ::= { adslGroups 11 } + + adslLineConfProfileControlGroup OBJECT-GROUP + OBJECTS { + adslLineConfProfile, adslLineAlarmConfProfile, + adslLineConfProfileRowStatus, + adslLineAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing profile + control for the ADSL system." + ::= { adslGroups 12 } + + adslNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + adslAtucPerfLofsThreshTrap, + adslAtucPerfLossThreshTrap, + adslAtucPerfLprsThreshTrap, + adslAtucPerfESsThreshTrap, + adslAtucRateChangeTrap, + adslAtucPerfLolsThreshTrap, + adslAtucInitFailureTrap, + adslAturPerfLofsThreshTrap, + adslAturPerfLossThreshTrap, + adslAturPerfLprsThreshTrap, + adslAturPerfESsThreshTrap, + adslAturRateChangeTrap + } + STATUS current + DESCRIPTION + "The collection of adsl notifications." + ::= { adslGroups 13 } + +-- units of conformance for ATU-R agent + + adslAturLineGroup OBJECT-GROUP + OBJECTS { + adslLineCoding + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ADSL Line on the ATU-R side." + ::= { adslGroups 14 } + + adslAturPhysicalGroup OBJECT-GROUP + OBJECTS { + adslAtucInvVendorID, + adslAtucInvVersionNumber, + adslAtucCurrOutputPwr, adslAtucCurrAttainableRate, + adslAturInvSerialNumber, adslAturInvVendorID, + adslAturInvVersionNumber, adslAturCurrSnrMgn, + adslAturCurrAtn, adslAturCurrStatus, + adslAturCurrOutputPwr, adslAturCurrAttainableRate, + adslAtucCurrStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing physical + configuration information of the ADSL Line on the + ATU-R side." + ::= { adslGroups 15 } + + adslAturChannelGroup OBJECT-GROUP + OBJECTS { + adslAtucChanInterleaveDelay, adslAtucChanCurrTxRate, + adslAtucChanPrevTxRate, + adslAturChanInterleaveDelay, adslAturChanCurrTxRate, + adslAturChanPrevTxRate, adslAturChanCrcBlockLength + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ADSL channel on the ATU-R + side." + ::= { adslGroups 16 } + + adslAturAtucPhysPerfRawCounterGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfLofs, adslAtucPerfLoss, + adslAtucPerfESs, adslAtucPerfInits + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-C end) provided by the + ATU-R agent." + ::= { adslGroups 17 } + + adslAturAtucPhysPerfIntervalGroup OBJECT-GROUP + OBJECTS { + adslAtucPerfValidIntervals, + adslAtucPerfInvalidIntervals, + adslAtucPerfCurr15MinTimeElapsed, + adslAtucPerfCurr15MinLofs, adslAtucPerfCurr15MinLoss, + adslAtucPerfCurr15MinESs, adslAtucPerfCurr15MinInits, + adslAtucPerfCurr1DayTimeElapsed, + adslAtucPerfCurr1DayLofs, adslAtucPerfCurr1DayLoss, + adslAtucPerfCurr1DayESs, adslAtucPerfCurr1DayInits, + adslAtucPerfPrev1DayMoniSecs, + adslAtucPerfPrev1DayLofs, adslAtucPerfPrev1DayLoss, + adslAtucPerfPrev1DayESs, adslAtucPerfPrev1DayInits, + adslAtucIntervalLofs, adslAtucIntervalLoss, + adslAtucIntervalESs, adslAtucIntervalInits, + adslAtucIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing current + 15-minute, 1-day; and previous 1-day performance + counts on ADSL Line (ATU-C end) provided by the + ATU-R agent." + ::= { adslGroups 18 } + + adslAturAturPhysPerfRawCounterGroup OBJECT-GROUP + OBJECTS { + adslAturPerfLofs, adslAturPerfLoss, + adslAturPerfLprs, adslAturPerfESs + } + STATUS current + DESCRIPTION + "A collection of objects providing raw performance + counts on an ADSL Line (ATU-R end) provided by the + ATU-R agent." + ::= { adslGroups 19 } + + adslAturAturPhysPerfIntervalGroup OBJECT-GROUP + OBJECTS { + adslAturPerfValidIntervals, + adslAturPerfInvalidIntervals, + adslAturPerfCurr15MinTimeElapsed, + adslAturPerfCurr15MinLofs, adslAturPerfCurr15MinLoss, + adslAturPerfCurr15MinLprs, adslAturPerfCurr15MinESs, + adslAturPerfCurr1DayTimeElapsed, + adslAturPerfCurr1DayLofs, adslAturPerfCurr1DayLoss, + adslAturPerfCurr1DayLprs, adslAturPerfCurr1DayESs, + adslAturPerfPrev1DayMoniSecs, + adslAturPerfPrev1DayLofs, adslAturPerfPrev1DayLoss, + adslAturPerfPrev1DayLprs, adslAturPerfPrev1DayESs, + adslAturIntervalLofs, + adslAturIntervalLoss, adslAturIntervalLprs, + adslAturIntervalESs, adslAturIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing current + 15-minute, 1-day; and previous 1-day performance + counts on ADSL Line (ATU-R end) provided by the + ATU-R agent." + ::= { adslGroups 20 } + + adslAturAtucChanPerformanceGroup OBJECT-GROUP + OBJECTS { + adslAtucChanReceivedBlks, + adslAtucChanTransmittedBlks, + adslAtucChanCorrectedBlks, + adslAtucChanUncorrectBlks, + adslAtucChanPerfCurr15MinTimeElapsed, + adslAtucChanPerfCurr15MinReceivedBlks, + adslAtucChanPerfCurr15MinTransmittedBlks, + adslAtucChanPerfCurr15MinCorrectedBlks, + adslAtucChanPerfCurr15MinUncorrectBlks, + adslAtucChanPerfCurr1DayTimeElapsed, + adslAtucChanPerfCurr1DayReceivedBlks, + adslAtucChanPerfCurr1DayTransmittedBlks, + adslAtucChanPerfCurr1DayCorrectedBlks, + adslAtucChanPerfCurr1DayUncorrectBlks, + adslAtucChanPerfPrev1DayMoniSecs, + adslAtucChanPerfPrev1DayReceivedBlks, + adslAtucChanPerfPrev1DayTransmittedBlks, + adslAtucChanPerfPrev1DayCorrectedBlks, + adslAtucChanPerfPrev1DayUncorrectBlks, + adslAtucChanPerfValidIntervals, + adslAtucChanPerfInvalidIntervals, + adslAtucChanIntervalReceivedBlks, + adslAtucChanIntervalTransmittedBlks, + adslAtucChanIntervalCorrectedBlks, + adslAtucChanIntervalUncorrectBlks, + adslAtucChanIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing channel block + performance information on an ADSL channel + (ATU-C end) provided by the ATU-R agent." + ::= { adslGroups 21 } + + adslAturAturChanPerformanceGroup OBJECT-GROUP + OBJECTS { + adslAturChanReceivedBlks, + adslAturChanTransmittedBlks, + adslAturChanCorrectedBlks, + adslAturChanUncorrectBlks, + adslAturChanPerfValidIntervals, + adslAturChanPerfInvalidIntervals, + adslAturChanPerfCurr15MinTimeElapsed, + adslAturChanPerfCurr15MinReceivedBlks, + adslAturChanPerfCurr15MinTransmittedBlks, + adslAturChanPerfCurr15MinCorrectedBlks, + adslAturChanPerfCurr15MinUncorrectBlks, + adslAturChanPerfCurr1DayTimeElapsed, + adslAturChanPerfCurr1DayReceivedBlks, + adslAturChanPerfCurr1DayTransmittedBlks, + adslAturChanPerfCurr1DayCorrectedBlks, + adslAturChanPerfCurr1DayUncorrectBlks, + adslAturChanPerfPrev1DayMoniSecs, + adslAturChanPerfPrev1DayReceivedBlks, + adslAturChanPerfPrev1DayTransmittedBlks, + adslAturChanPerfPrev1DayCorrectedBlks, + adslAturChanPerfPrev1DayUncorrectBlks, + adslAturChanIntervalReceivedBlks, + adslAturChanIntervalTransmittedBlks, + adslAturChanIntervalCorrectedBlks, + adslAturChanIntervalUncorrectBlks, + adslAturChanIntervalValidData + } + STATUS current + DESCRIPTION + "A collection of objects providing channel block + performance information on an ADSL channel + (ATU-R end) provided by the ATU-R agent." + ::= { adslGroups 22 } + + adslAturLineAlarmConfProfileGroup OBJECT-GROUP + OBJECTS { + adslAtucThresh15MinLofs, adslAtucThresh15MinLoss, + adslAtucThresh15MinESs, adslAtucThreshFastRateUp, + adslAtucThreshInterleaveRateUp, + adslAtucThreshFastRateDown, + adslAtucThreshInterleaveRateDown, + adslAtucInitFailureTrapEnable, + adslAturThresh15MinLofs, adslAturThresh15MinLoss, + adslAturThresh15MinLprs, adslAturThresh15MinESs, + adslAturThreshFastRateUp, + adslAturThreshInterleaveRateUp, + adslAturThreshFastRateDown, + adslAturThreshInterleaveRateDown + } + STATUS current + DESCRIPTION + "A collection of objects providing alarm +provisioning + information about an ADSL Line provided by the + ATU-R agent." + ::= { adslGroups 23 } + + adslAturLineConfProfileControlGroup OBJECT-GROUP + OBJECTS { + adslLineAlarmConfProfile, + adslLineAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing profile + control for the ADSL system by the ATU-R agent." + ::= { adslGroups 24 } + + adslAturNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + adslAtucPerfLofsThreshTrap, + adslAtucPerfLossThreshTrap, + adslAtucPerfESsThreshTrap, + adslAtucRateChangeTrap, + adslAturPerfLofsThreshTrap, + adslAturPerfLossThreshTrap, + adslAturPerfLprsThreshTrap, + adslAturPerfESsThreshTrap, + adslAturRateChangeTrap + } + STATUS current + DESCRIPTION + "The collection of ADSL notifications implemented by + the ATU-R agent." + ::= { adslGroups 25 } + +END diff --git a/mibs/ietf/ADSL-TC-MIB b/mibs/ietf/ADSL-TC-MIB new file mode 100644 index 0000000..6dec4e3 --- /dev/null +++ b/mibs/ietf/ADSL-TC-MIB @@ -0,0 +1,113 @@ +ADSL-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + transmission, + MODULE-IDENTITY, Gauge32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +adsltcmib MODULE-IDENTITY + +LAST-UPDATED "9908190000Z" + +ORGANIZATION "IETF ADSL MIB Working Group" + +CONTACT-INFO + " + Gregory Bathrick + AG Communication Systems + A Subsidiary of Lucent Technologies + 2500 W Utopia Rd. + Phoenix, AZ 85027 USA + Tel: +1 602-582-7679 + Fax: +1 602-582-7697 + E-mail: bathricg@agcs.com + + Faye Ly + Copper Mountain Networks + Norcal Office + 2470 Embarcadero Way + Palo Alto, CA 94303 + Tel: +1 650-858-8500 + Fax: +1 650-858-8085 + E-Mail: faye@coppermountain.com + IETF ADSL MIB Working Group (adsl@xlist.agcs.com) + " + DESCRIPTION + "The MIB module which provides a ADSL + Line Coding Textual Convention to be used + by ADSL Lines." + + -- Revision history + REVISION "9908190000Z" -- 19 August 1999, midnight + DESCRIPTION "Initial Version, published as RFC 2662" + + ::= { transmission 94 2 } -- adslMIB 2 + + AdslLineCodingType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax for the ADSL + Line Code." + SYNTAX INTEGER { + other(1),-- none of the following + dmt (2), -- Discrete MultiTone + cap (3), -- Carrierless Amplitude & Phase modulation + qam (4) -- Quadrature Amplitude Modulation + } + + AdslPerfCurrDayCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with interface performance + measurements in a current 1-day (24 hour) measurement + interval. + + The value of this counter starts at zero at the + beginning of an interval and is increased when + associated events occur, until the end of the + 1-day interval. At that time the value of the + counter is stored in the previous 1-day history + interval, if available, and the current interval + counter is restarted at zero. + + In the case where the agent has no valid data available + for this interval the corresponding object + instance is not available and upon a retrieval + request a corresponding error message shall be + returned to indicate that this instance does + not exist (for example, a noSuchName error for + SNMPv1 and a noSuchInstance for SNMPv2 GET + operation)." + SYNTAX Gauge32 + + AdslPerfPrevDayCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with interface performance + measurements during the most previous 1-day (24 hour) + measurement interval. The value of this counter is + equal to the value of the current day counter at + the end of its most recent interval. + + In the case where the agent has no valid data available + for this interval the corresponding object + instance is not available and upon a retrieval + request a corresponding error message shall be + returned to indicate that this instance does + not exist (for example, a noSuchName error for + SNMPv1 and a noSuchInstance for SNMPv2 GET + operation)." + SYNTAX Gauge32 + + AdslPerfTimeElapsed ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since + the beginning of the current measurement period. + If, for some reason, such as an adjustment in the + system's time-of-day clock, the current interval + exceeds the maximum value, the agent will return + the maximum value." + SYNTAX Gauge32 + +END diff --git a/mibs/ietf/ADSL2-LINE-MIB b/mibs/ietf/ADSL2-LINE-MIB new file mode 100644 index 0000000..2f9bb30 --- /dev/null +++ b/mibs/ietf/ADSL2-LINE-MIB @@ -0,0 +1,5795 @@ +ADSL2-LINE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + transmission, + Unsigned32, + NOTIFICATION-TYPE, + Integer32, + Counter32 + FROM SNMPv2-SMI + + ifIndex + FROM IF-MIB + + TruthValue, + RowStatus + FROM SNMPv2-TC + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + HCPerfIntervalThreshold, + HCPerfTimeElapsed + FROM HC-PerfHist-TC-MIB -- [RFC3705] + + Adsl2Unit, + Adsl2Direction, + Adsl2TransmissionModeType, + Adsl2RaMode, + Adsl2InitResult, + Adsl2OperationModes, + Adsl2PowerMngState, + Adsl2ConfPmsForce, + Adsl2LConfProfPmMode, + Adsl2LineLdsf, + Adsl2LdsfResult, + Adsl2SymbolProtection, + Adsl2MaxBer, + Adsl2ScMaskDs, + Adsl2ScMaskUs, + Adsl2RfiDs, + Adsl2PsdMaskDs, + Adsl2PsdMaskUs, + Adsl2Tssi, + Adsl2LastTransmittedState, + Adsl2LineStatus, + Adsl2ChAtmStatus, + + + Adsl2ChPtmStatus + FROM ADSL2-LINE-TC-MIB -- [This document] + + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +adsl2MIB MODULE-IDENTITY + LAST-UPDATED "200610040000Z" -- October 4th, 2006 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-732 + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair & Co-editor: + Menachem Dodge + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel. + Email: mbdodge@ieee.org + Phone: +972 3 926 8421 + + Co-editor: Moti Morgenstern + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel. + Email: moti.morgenstern@ecitele.com + Phone: +972 3 926 6258 + + Co-editor: Scott Baillie + NEC Australia + Postal: 649-655 Springvale Road, + Mulgrave, Victoria 3170, + Australia. + Email: scott.baillie@nec.com.au + Phone: +61 3 9264 3986 + + Co-editor: Umberto Bonollo + + + NEC Australia + Postal: 649-655 Springvale Road, + Mulgrave, Victoria 3170, + Australia. + Email: umberto.bonollo@nec.com.au + Phone: +61 3 9264 3385 + " + DESCRIPTION + " + This document defines a Management Information Base (MIB) + module for use with network management protocols in the + Internet community for the purpose of managing ADSL, ADSL2, + and ADSL2+ lines. The MIB module described in RFC 2662 + [RFC2662] describes objects used for managing Asymmetric + Bit-Rate DSL (ADSL) interfaces per [T1E1.413], [G.992.1], + and [G.992.2]. These object descriptions are based upon the + specifications for the ADSL Embedded Operations Channel + (EOC) as defined in American National Standards Institute + (ANSI) T1E1.413/1995 [T1E1.413] and International + Telecommunication Union (ITU-T) G.992.1 [G.992.1] and + G.992.2 [G.992.2]. + + This document does not obsolete RFC 2662 [RFC2662], but + rather provides a more comprehensive management model that + includes the ADSL2 and ADSL2+ technologies per G.992.3, + G.992.4, and G.992.5 ([G.992.3], [G.992.4], and [G.992.5], + respectively). In addition, objects have been added to + improve the management of ADSL, ADSL2, and ADSL2+ lines. + + Additionally, the management framework for New Generation + ADSL lines specified by the Digital Subscriber Line Forum + (DSLF) has been taken into consideration [TR-90]. That + framework is based on ITU-T G.997.1 standard [G.997.1] as + well as two amendments: [G.997.1am1] and [G.997.1am2]. + + Note that the revised ITU-T G.997.1 standard also refers to + the next generation of VDSL technology, known as VDSL2, per + ITU-T G.993.2 [G.993.2]. However, managing VDSL2 lines is + currently beyond the scope of this document. + + The MIB module is located in the MIB tree under MIB 2 + transmission, as discussed in the IANA Considerations section + of this document. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4706: see the RFC itself for + full legal notices." + + + + REVISION "200610040000Z" -- October 4th, 2006 + DESCRIPTION "Initial version, published as RFC 4706." + ::= { transmission 238 } + + adsl2 OBJECT IDENTIFIER ::= { adsl2MIB 1 } + ------------------------------------------------ + adsl2Line OBJECT IDENTIFIER ::= { adsl2 1 } + adsl2Status OBJECT IDENTIFIER ::= { adsl2 2 } + adsl2Inventory OBJECT IDENTIFIER ::= { adsl2 3 } + adsl2PM OBJECT IDENTIFIER ::= { adsl2 4 } + adsl2Profile OBJECT IDENTIFIER ::= { adsl2 5 } + adsl2Scalar OBJECT IDENTIFIER ::= { adsl2 6 } + adsl2Notifications OBJECT IDENTIFIER ::= { adsl2 0 } + adsl2Conformance OBJECT IDENTIFIER ::= { adsl2 7 } + ------------------------------------------------ + adsl2PMLine OBJECT IDENTIFIER ::= { adsl2PM 1 } + adsl2PMChannel OBJECT IDENTIFIER ::= { adsl2PM 2 } + ------------------------------------------------ + adsl2ProfileLine OBJECT IDENTIFIER ::= { adsl2Profile 1 } + adsl2ProfileChannel OBJECT IDENTIFIER ::= { adsl2Profile 2 } + adsl2ProfileAlarmConf OBJECT IDENTIFIER ::= { adsl2Profile 3 } + ------------------------------------------------ + adsl2ScalarSC OBJECT IDENTIFIER ::= { adsl2Scalar 1 } + ------------------------------------------------ + + +------------------------------------------------ +-- adsl2LineTable -- +------------------------------------------------ +adsl2LineTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2LineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineTable contains configuration, + command, and status parameters of the ADSL2 line. + The index of this table is an interface index where the + interface has an ifType of adsl2plus(238). + + Several objects in this table MUST be maintained in a + persistent manner." + ::= { adsl2Line 1 } + +adsl2LineEntry OBJECT-TYPE + SYNTAX Adsl2LineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "The table adsl2LineTable contains configuration, + commands, and status parameters of the ADSL2 line" + INDEX { ifIndex } + ::= { adsl2LineTable 1 } + +Adsl2LineEntry ::= + SEQUENCE { + adsl2LineCnfgTemplate SnmpAdminString, + adsl2LineAlarmCnfgTemplate SnmpAdminString, + adsl2LineCmndConfPmsf Adsl2ConfPmsForce, + adsl2LineCmndConfLdsf Adsl2LineLdsf, + adsl2LineCmndConfLdsfFailReason Adsl2LdsfResult, + adsl2LineCmndAutomodeColdStart TruthValue, + adsl2LineStatusAtuTransSys Adsl2TransmissionModeType, + adsl2LineStatusPwrMngState Adsl2PowerMngState, + adsl2LineStatusInitResult Adsl2InitResult, + adsl2LineStatusLastStateDs Adsl2LastTransmittedState, + adsl2LineStatusLastStateUs Adsl2LastTransmittedState, + adsl2LineStatusAtur Adsl2LineStatus, + adsl2LineStatusAtuc Adsl2LineStatus, + adsl2LineStatusLnAttenDs Unsigned32, + adsl2LineStatusLnAttenUs Unsigned32, + adsl2LineStatusSigAttenDs Unsigned32, + adsl2LineStatusSigAttenUs Unsigned32, + adsl2LineStatusSnrMarginDs Integer32, + adsl2LineStatusSnrMarginUs Integer32, + adsl2LineStatusAttainableRateDs Unsigned32, + adsl2LineStatusAttainableRateUs Unsigned32, + adsl2LineStatusActPsdDs Integer32, + adsl2LineStatusActPsdUs Integer32, + adsl2LineStatusActAtpDs Integer32, + adsl2LineStatusActAtpUs Integer32 + } + +adsl2LineCnfgTemplate OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 Line + Configuration Templates Table, (adsl2LineConfTemplateTable), + which applies for this ADSL2 line. + + This object MUST be maintained in a persistent manner." + REFERENCE "DSL Forum TR-90, paragraph 5.1.1" + DEFVAL { "DEFVAL" } + ::= { adsl2LineEntry 1 } + + + +adsl2LineAlarmCnfgTemplate OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 Line + Alarm Configuration Template Table, + (adsl2LineAlarmConfTemplateTable), which applies to this ADSL2 + line. + + This object MUST be maintained in a persistent manner." + REFERENCE "DSL Forum TR-90, paragraph 5.1.1" + DEFVAL { "DEFVAL" } + ::= { adsl2LineEntry 2 } + +adsl2LineCmndConfPmsf OBJECT-TYPE + SYNTAX Adsl2ConfPmsForce + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Power management state forced. Defines the line states to be + forced by the near-end ATU on this line. The various possible + values are: + l3toL0(0), + l0toL2(2), or + l0orL2toL3(3). + + This object MUST be maintained in a persistent manner." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.1.3" + DEFVAL { l3toL0 } + ::= { adsl2LineEntry 3 } + +adsl2LineCmndConfLdsf OBJECT-TYPE + SYNTAX Adsl2LineLdsf + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Loop diagnostics mode forced (LDSF). Defines whether the line + should be forced into the loop diagnostics mode by the + near-end ATU on this line or only be responsive to loop + diagnostics initiated by the far-end ATU. + + This object MUST be maintained in a persistent manner. + However, in case the operator forces loop diagnostics mode + then the access node should reset the object (inhibit) when + loop diagnostics mode procedures are completed." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.1.8" + DEFVAL { inhibit } + + + ::= { adsl2LineEntry 4 } + +adsl2LineCmndConfLdsfFailReason OBJECT-TYPE + SYNTAX Adsl2LdsfResult + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the recent occasion the Loop diagnostics mode + forced (LDSF) was issued for the associated line. Possible + values are: + none(1) - The default value in case LDSF was never + requested for the associated line. + success(2) - The recent command completed + successfully. + inProgress(3) - The Loop Diagnostics process is in + progress. + unsupported(4) - The NE or the line card doesn't support + LDSF. + cannotRun(5) - The NE cannot initiate the command, due + to a nonspecific reason. + aborted(6) - The Loop Diagnostics process aborted. + failed(7) - The Loop Diagnostics process failed. + illegalMode(8) - The NE cannot initiate the command, due + to the specific mode of the relevant + line. + adminUp(9) - The NE cannot initiate the command, as + the relevant line is administratively + 'Up'. + tableFull(10) - The NE cannot initiate the command, due + to reaching the maximum number of rows + in the results table. + noResources(11) - The NE cannot initiate the command, due + to lack of internal memory resources." + DEFVAL { none } + ::= { adsl2LineEntry 5 } + + adsl2LineCmndAutomodeColdStart OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Automode cold start forced. This parameter is defined + in order to improve testing of the performance of ATUs + supporting automode when it is enabled in the MIB. + Change the value of this parameter to 'true' indicates + a change in loop conditions applied to the devices under + test. The ATUs shall reset any historical information + used for automode and for shortening G.994.1 handshake + + + and initialization. + + Automode is the case where multiple operation-modes are + enabled through the adsl2LConfProfAtuTransSysEna object + in the line configuration profile being used for the + ADSL line, and where the selection of the actual + operation-mode depends not only on the common + capabilities of both ATUs (as exchanged in G.994.1), but + also on achievable data rates under given loop + conditions. + + This object MUST be maintained in a persistent manner." + + REFERENCE "ITU-T G.997.1 (amendment 1), 7.3.1.1.10" + DEFVAL { false } + ::= { adsl2LineEntry 6 } + + +adsl2LineStatusAtuTransSys OBJECT-TYPE + SYNTAX Adsl2TransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU Transmission System (ATS) in use. + It is coded in a bit-map representation with only a single bit + set to '1' (the selected coding for the ADSL line). This + parameter may be derived from the handshaking procedures + defined in Recommendation G.994.1. A set of ADSL2 line + transmission modes, with one bit per mode." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.1.1" + ::= { adsl2LineEntry 7 } + +adsl2LineStatusPwrMngState OBJECT-TYPE + SYNTAX Adsl2PowerMngState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current power management state. One of four possible + power management states: + L0 - Synchronized and full transmission (i.e., Showtime). + L1 - Low Power with reduced net data rate (G.992.2 only). + L2 - Low Power with reduced net data rate (G.992.3 and + G.992.4 only). + L3 - No power. + The various possible values are: l0(1), l1(2), l2(3), or + l3(4)." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.2" + ::= { adsl2LineEntry 8 } + + +adsl2LineStatusInitResult OBJECT-TYPE + SYNTAX Adsl2InitResult + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the result of the last full initialization performed + on the line. It is an enumeration type with the following + values: noFail(0), configError(1), configNotFeasible(2), + commFail(3), noPeerAtu(4), or otherCause(5)." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.3" + ::= { adsl2LineEntry 9 } + +adsl2LineStatusLastStateDs OBJECT-TYPE + SYNTAX Adsl2LastTransmittedState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last successful transmitted initialization state in + the downstream direction in the last full initialization + performed on the line." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.4" + ::= { adsl2LineEntry 10 } + +adsl2LineStatusLastStateUs OBJECT-TYPE + SYNTAX Adsl2LastTransmittedState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last successful transmitted initialization state in the + upstream direction in the last full initialization performed + on the line." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.5" + ::= { adsl2LineEntry 11 } + +adsl2LineStatusAtur OBJECT-TYPE + SYNTAX Adsl2LineStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates current state (existing failures) of the ATU-R. + This is a bit-map of possible conditions." + REFERENCE "ITU-T G.997.1, paragraph 7.1.1.2" + ::= { adsl2LineEntry 12 } + +adsl2LineStatusAtuc OBJECT-TYPE + SYNTAX Adsl2LineStatus + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "Indicates current state (existing failures) of the ATU-C. + This is a bit-map of possible conditions." + REFERENCE "ITU-T G.997.1, paragraph 7.1.1.1" + ::= { adsl2LineEntry 13 } + +adsl2LineStatusLnAttenDs OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The measured difference in the total power transmitted by the + ATU-C and the total power received by the ATU-R over all sub- + carriers during diagnostics mode and initialization. It + ranges from 0 to 1270 units of 0.1 dB (physical values + are 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the line + attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the line + attenuation measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.6" + ::= { adsl2LineEntry 14 } + +adsl2LineStatusLnAttenUs OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The measured difference in the total power transmitted by the + ATU-R and the total power received by the ATU-C over all sub- + carriers during diagnostics mode and initialization. + It ranges from 0 to 1270 units of 0.1 dB (physical values are + 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the line + attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the line + attenuation measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.7" + ::= { adsl2LineEntry 15 } + +adsl2LineStatusSigAttenDs OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The measured difference in the total power transmitted by the + ATU-C and the total power received by the ATU-R over all sub- + carriers during Showtime. It ranges from 0 to 1270 units of + 0.1 dB (physical values are 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + signal attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + signal attenuation measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.8" + ::= { adsl2LineEntry 16 } + +adsl2LineStatusSigAttenUs OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The measured difference in the total power transmitted by the + ATU-R and the total power received by the ATU-C over all sub- + carriers during Showtime. It ranges from 0 to 1270 units of + 0.1 dB (physical values are 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + signal attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + signal attenuation measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.9" + ::= { adsl2LineEntry 17 } + +adsl2LineStatusSnrMarginDs OBJECT-TYPE + SYNTAX Integer32 (-640..630 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Downstream SNR Margin is the maximum increase in dB of the + noise power received at the ATU-R, such that the BER + requirements are met for all downstream bearer channels. It + ranges from -640 to 630 units of 0.1 dB (physical values are + -64 to 63 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + SNR Margin is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + SNR Margin measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.10" + ::= { adsl2LineEntry 18 } + +adsl2LineStatusSnrMarginUs OBJECT-TYPE + SYNTAX Integer32 (-640..630 | 2147483646 | 2147483647) + + + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Upstream SNR Margin is the maximum increase in dB of the noise + power received at the ATU-C, such that the BER requirements + are met for all downstream bearer channels. It ranges from + -640 to 630 units of 0.1 dB (physical values are -64 to + 63 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + SNR Margin is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + SNR Margin measurement is currently unavailable." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.11" + ::= { adsl2LineEntry 19 } + +adsl2LineStatusAttainableRateDs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Attainable Data Rate Downstream. + The maximum downstream net data rate currently attainable by + the ATU-C transmitter and the ATU-R receiver, coded in + bits/second." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.12" + ::= { adsl2LineEntry 20 } + +adsl2LineStatusAttainableRateUs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Attainable Data Rate Upstream. + The maximum upstream net data rate currently attainable by the + ATU-R transmitter and the ATU-C receiver, coded in + bits/second." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.13" + ::= { adsl2LineEntry 21 } + +adsl2LineStatusActPsdDs OBJECT-TYPE + SYNTAX Integer32 (-900..0 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "Actual Power Spectrum Density (PSD) Downstream. The average + downstream transmit PSD over the sub-carriers used for + downstream. It ranges from -900 to 0 units of 0.1 dB + (physical values are -90 to 0 dBm/Hz). + A value of 0x7FFFFFFF (2147483647) indicates the measurement + is out of range to be represented." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.14" + ::= { adsl2LineEntry 22 } + +adsl2LineStatusActPsdUs OBJECT-TYPE + SYNTAX Integer32 (-900..0 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Power Spectrum Density (PSD) Upstream. The average + upstream transmit PSD over the sub-carriers used for upstream. + It ranges from -900 to 0 units of 0.1 dB (physical values + are -90 to 0 dBm/Hz). + A value of 0x7FFFFFFF (2147483647) indicates the measurement + is out of range to be represented." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.15" + ::= { adsl2LineEntry 23 } + +adsl2LineStatusActAtpDs OBJECT-TYPE + SYNTAX Integer32 (-310..310 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Aggregate Transmit Power Downstream. The total amount + of transmit power delivered by the ATU-C at the U-C reference + point, at the instant of measurement. It ranges from -310 to + 310 units of 0.1 dB (physical values are -31 to 31 dBm). + A value of 0x7FFFFFFF (2147483647) indicates the measurement + is out of range to be represented." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.16" + ::= { adsl2LineEntry 24 } + +adsl2LineStatusActAtpUs OBJECT-TYPE + SYNTAX Integer32 (-310..310 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Aggregate Transmit Power Upstream. The total amount of + transmit power delivered by the ATU-R at the U-R + reference point, at the instant of measurement. It ranges + + + from -310 to 310 units of 0.1 dB (physical values are -31 + to 31 dBm). + A value of 0x7FFFFFFF (2147483647) indicates the measurement + is out of range to be represented." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.17" + ::= { adsl2LineEntry 25 } + + +------------------------------------------------ +-- adsl2ChannelStatusTable -- +------------------------------------------------ +adsl2ChannelStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2ChannelStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2ChannelStatusTable contains status + parameters of the ADSL2 channel. This table contains live + data from equipment." + ::= { adsl2Status 1 } + +adsl2ChannelStatusEntry OBJECT-TYPE + SYNTAX Adsl2ChannelStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2ChannelStatusTable contains status + parameters of the ADSL2 channel. + The index of this table consists of an interface index, where + the interface has an ifType value that is applicable + for a DSL channel, along with a termination unit." + INDEX { ifIndex, adsl2ChStatusUnit } + ::= { adsl2ChannelStatusTable 1 } + +Adsl2ChannelStatusEntry ::= + SEQUENCE { + adsl2ChStatusUnit Adsl2Unit, + adsl2ChStatusChannelNum Unsigned32, + adsl2ChStatusActDataRate Unsigned32, + adsl2ChStatusPrevDataRate Unsigned32, + adsl2ChStatusActDelay Unsigned32, + adsl2ChStatusAtmStatus Adsl2ChAtmStatus, + adsl2ChStatusPtmStatus Adsl2ChPtmStatus + } + +adsl2ChStatusUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "The termination unit atuc(1) or atur(2)." + ::= { adsl2ChannelStatusEntry 1 } + +adsl2ChStatusChannelNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Provides the bearer channel number associated with this + row (i.e., the channel ifIndex). + This enables determining the channel configuration profile + and the channel thresholds profile applicable for this + bearer channel." + ::= { adsl2ChannelStatusEntry 2 } + +adsl2ChStatusActDataRate OBJECT-TYPE + SYNTAX Unsigned32(0..200000000) + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual net data rate that the bearer channel is operating + at, if in L0 power management state. In L1 or L2 states, it + relates to the previous L0 state. The data rate is coded in + bits/second." + REFERENCE "ITU-T G.997.1, paragraph 7.5.2.1" + ::= { adsl2ChannelStatusEntry 3 } + +adsl2ChStatusPrevDataRate OBJECT-TYPE + SYNTAX Unsigned32(0..200000000) + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The previous net data rate that the bearer channel was + operating at just before the latest rate change event. This + could be a full or short initialization, fast retrain, DRA or + power management transitions, excluding transitions between L0 + state and L1 or L2 states. The data rate is coded in + bits/second." + REFERENCE "ITU-T G.997.1, paragraph 7.5.2.2" + ::= { adsl2ChannelStatusEntry 4 } + +adsl2ChStatusActDelay OBJECT-TYPE + SYNTAX Unsigned32(0..8176) + UNITS "milliseconds" + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual one-way interleaving delay introduced by the + PMS-TC in the direction of the bearer channel, if in L0 + power management state. In L1 or L2 states, it relates to + the previous L0 state. It is coded in ms (rounded to the + nearest ms)." + REFERENCE "ITU-T G.997.1, paragraph 7.5.2.3" + ::= { adsl2ChannelStatusEntry 5 } + +adsl2ChStatusAtmStatus OBJECT-TYPE + SYNTAX Adsl2ChAtmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state (existing failures) of the ADSL + channel in case its Data Path is ATM. This is a bit-map of + possible conditions. The various bit positions are: + noDefect(0), + noCellDelineation(1), or + lossOfCellDelineation(2). + In the case where the channel is not an ATM Data Path, the + object is set to '0'." + REFERENCE "ITU-T G.997.1, paragraph 7.1.4" + ::= { adsl2ChannelStatusEntry 6 } + +adsl2ChStatusPtmStatus OBJECT-TYPE + SYNTAX Adsl2ChPtmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state (existing failures) of the ADSL + channel in case its Data Path is PTM. This is a bit-map of + possible conditions. The various bit positions are: + noDefect(0), or + outOfSync(1). + In the case where the channel is not a PTM Data Path, the + object is set to '0'." + REFERENCE "ITU-T G.997.1, paragraph 7.1.5" + ::= { adsl2ChannelStatusEntry 7 } + + +------------------------------------------------ +-- Scalars that relate to the adsl2SCStatusTable. +------------------------------------------------ + +adsl2ScalarSCMaxInterfaces OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value determines the upper size of adsl2SCStatusTable. + The maximum number of entries in adsl2SCStatusTable is equal + to two times the value of this attribute." + ::= { adsl2ScalarSC 1 } + +adsl2ScalarSCAvailInterfaces OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value determines the amount of space that is + currently available in adsl2SCStatusTable. + The number of entries available in adsl2SCStatusTable is equal + to two times the value of this attribute." + ::= { adsl2ScalarSC 2 } + +------------------------------------------------ +-- adsl2SCStatusTable -- +------------------------------------------------ + +adsl2SCStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2SCStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2SCStatusTable contains status parameters + of the ADSL2 sub-carriers. The following points apply to this + table: + 1. The main purpose of this table is to hold the results + of a DELT. + 2. This table also holds parameters obtained at line + initialization time. + 3. The rows in this table are volatile; that is, they are + lost if the SNMP agent is rebooted. + 4. Due to the large OCTET STRING attributes in this table, + the worst case memory requirements for this table are + very high. The manager may use the row status attribute + of this table to delete rows in order to reclaim memory. + 5. The manager may create rows in this table. The SNMP + agent may create rows in this table. Only the manager + may delete rows in this table. + 6. The maximum number of rows allowable in this table is + indicated by the scalar attribute + adsl2ScalarSCMaxInterfaces. + + + + The number of rows available in this table is indicated + by the scalar attribute adsl2ScalarSCAvailInterfaces. + 7. The SNMP agent is permitted to create rows in this table + when a DELT completes successfully or when line + initialization occurs. It is not mandatory for the SNMP + agent to create rows in this table; hence, it may be + necessary for the manager to create rows in this table + before any results can be stored. + 8. If the manager attempts to create a row in this table + and there are no more rows available, the creation + attempt will fail, and the response to the SNMP SET PDU + will contain the error noCreation(11). + 9. If the SNMP agent attempts to create a row in this table + and there are no more rows available, the creation + attempt will fail, and the attribute + adsl2LineCmndConfLdsfFailReason will indicate the + reason for the failure. The failure reason will be either + tableFull(10) or noResources(11). + 10. An example of use of this table is as follows: + Step 1. : The DELT is started by setting the + : adsl2LineCmndConfLdsf from inhibit to force. + Step 2. : The DELT completes, and valid data is + : available. + Step 3. : The row in the adsl2SCStatusTable where the + : results will be stored does not yet exist so + : the SNMP agent attempts to create the row. + Step 4. : Due to a low memory condition, a row in the + : adsl2SCStatusTable table cannot be created at + : this time. + Step 5. : The reason for the failure, tableFull(10), is + : indicated in the adsl2LineCmndConfLdsfFailReason + : attribute. + 11. Another example of use of this table is as follows : + Step 1. : The DELT is started by setting the + : adsl2LineCmndConfLdsf from inhibit to force. + Step 2. : The DELT completes and valid data is + : available. + Step 3. : The row in the adsl2SCStatusTable where the + : results will be stored does not yet exist so + : the SNMP agent attempts to create the row. + Step 4. : The row creation is successful. + Step 5. : The value of the attribute + : adsl2LineCmndConfLdsfFailReasonreason is set + : to success(2). + 12. Another example of use of this table is as follows: + Step 1. : The manager creates a row in adsl2SCStatusTable + : for a particular ADSL2 line. + Step 2. : The DELT is started on the above-mentioned + + + + : line by setting the adsl2LineCmndConfLdsf from + : inhibit to force. + Step 3. : The DELT completes, and valid data is + : available. + Step 4. : The value of the attribute + : adsl2LineCmndConfLdsfFailReasonreason is set + : to success(2)." + ::= { adsl2Status 2 } + +adsl2SCStatusEntry OBJECT-TYPE + SYNTAX Adsl2SCStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table Adsl2SCStatusEntry contains status parameters + of the ADSL2 sub-carriers. + The index of this table is an interface index where the + interface has an ifType of adsl2plus(238)." + INDEX { ifIndex, adsl2SCStatusDirection } + ::= { adsl2SCStatusTable 1 } + +Adsl2SCStatusEntry ::= + SEQUENCE { + adsl2SCStatusDirection Adsl2Direction, + adsl2SCStatusMtime Unsigned32, + adsl2SCStatusSnr OCTET STRING, + adsl2SCStatusBitsAlloc OCTET STRING, + adsl2SCStatusGainAlloc OCTET STRING, + adsl2SCStatusTssi Adsl2Tssi, + adsl2SCStatusLinScale Unsigned32, + adsl2SCStatusLinReal OCTET STRING, + adsl2SCStatusLinImg OCTET STRING, + adsl2SCStatusLogMt Unsigned32, + adsl2SCStatusLog OCTET STRING, + adsl2SCStatusQlnMt Unsigned32, + adsl2SCStatusQln OCTET STRING, + adsl2SCStatusLnAtten Unsigned32, + adsl2SCStatusSigAtten Unsigned32, + adsl2SCStatusSnrMargin Integer32, + adsl2SCStatusAttainableRate Unsigned32, + adsl2SCStatusActAtp Integer32, + adsl2SCStatusRowStatus RowStatus + } + +adsl2SCStatusDirection OBJECT-TYPE + SYNTAX Adsl2Direction + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The direction of the sub-carrier is either + upstream or downstream." + ::= { adsl2SCStatusEntry 1 } + +adsl2SCStatusMtime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "symbols" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "SNR Measurement Time. The number of symbols used to + measure the SNR values on the respective transmission + direction. It should correspond to the value specified in the + recommendation (e.g., the number of symbols in 1 second + time interval for G.992.3). This parameter corresponds to + 1 second in loop diagnostic procedure and should be updated + otherwise." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.20.1 (SNRMTds) + and paragraph 7.5.1.20.3 (SNRMTus)" + ::= { adsl2SCStatusEntry 2 } + +adsl2SCStatusSnr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..512)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNR Margin per sub-carrier, expressing the ratio between + the received signal power and received noise power per + subscriber. It is an array of 512 octets, designed for + supporting up to 512 (downstream) sub-carriers. + The number of utilized octets on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Octet i (0 <= i < NSC) is set to a value in the range 0 to + 254 to indicate that the respective downstream or upstream sub- + carrier i has SNR of: (-32 + Adsl2SubcarrierSnr(i)/2) in dB + (i.e., -32 to 95dB). + The special value 255 means that no measurement could be done + for the subcarrier because it is out of the PSD mask passband + or that the noise PSD is out of range to be represented. + Each value in this array is 8 bits wide." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.20.2 (SNRpsds) + and paragraph 7.5.1.20.4 (SNRpsus)" + ::= { adsl2SCStatusEntry 3 } + +adsl2SCStatusBitsAlloc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..256)) + + + + UNITS "bits" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bits allocation per sub-carrier. An array of 256 octets + (512 nibbles), designed for supporting up to 512 (downstream) + sub-carriers. + The number of utilized nibbles on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Nibble i (0 <= i < NSC) is set to a value in the range 0 + to 15 to indicate that the respective downstream or upstream + sub-carrier i has the same amount of bits allocation." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.21.1 (BITSpsds) + and paragraph 7.5.1.21.2 (BITSpsus)" + ::= { adsl2SCStatusEntry 4 } + +adsl2SCStatusGainAlloc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The gain allocation per sub-carrier. An array of 512 16-bits + values, designed for supporting up to 512 (downstream) sub- + carriers. + The number of utilized octets on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Value i (0 <= i < NSC) is in the range 0 to 4093 to indicate + that the respective downstream or upstream sub-carrier i has the + same amount of gain value. + The gain value is represented as a multiple of 1/512 on a + linear scale. Each value in this array is 16 bits wide and is + stored in big endian format." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.21.3 (GAINSpsds) + and paragraph 7.5.1.21.4 (GAINSpsus)" + ::= { adsl2SCStatusEntry 5 } + +adsl2SCStatusTssi OBJECT-TYPE + SYNTAX Adsl2Tssi + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmit spectrum shaping (TSSi) breakpoints expressed + as the set of breakpoints exchanged during G.994.1. + Each breakpoint is a pair of values occupying 3 octets with the + following structure: + First 2 octets - Index of the subcarrier used in the context of + + + + the breakpoint. + Third octet - The shaping parameter at the breakpoint. + Subcarrier index is an unsigned number in the range 1 to either + NSCds (downstream direction) or NSCus (upstream direction). + The shaping parameter value is in the range 0 to 127 (units of + -0.5dB). The special value 127 indicates that the subcarrier + is not transmitted." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.21.5 (TSSpsds) + and paragraph 7.5.1.21.6 (TSSpsus)" + ::= { adsl2SCStatusEntry 6 } + +adsl2SCStatusLinScale OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The scale factor to be applied to the H(f) linear + representation values for the respective transmission direction. + This parameter is only available after a loop diagnostic + procedure." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.1 (HLINSCds) + and paragraph 7.5.1.18.5 (HLINSCus)" + ::= { adsl2SCStatusEntry 7 } + +adsl2SCStatusLinReal OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An array of up to 512 complex H(f) linear representation + values in linear scale for the respective transmission + direction. It is designed to support up to 512 (downstream) + sub-carriers. + The number of utilized values on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Each array entry represents the real component [referred to here + as a(i)] of Hlin(f = i*Df) value for a particular sub-carrier + index i (0 <= i < NSC). + Hlin(f) is represented as ((scale/2^15)*((a(i)+j*b(i))/2^15)), + where scale is Adsl2SubcarrierLinScale and a(i) and b(i) + [provided by the Adsl2SubcarrierLinImg object] are in the range + (-2^15+1) to (+2^15-1). + A special value a(i)=b(i)= -2^15 indicates that no measurement + could be done for the subcarrier because it is out of the + passband or that the attenuation is out of range to be + represented. This parameter is only available after a loop + diagnostic procedure. + + + + Each value in this array is 16 bits wide and is stored in big + endian format." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.2 (HLINpsds) + and paragraph 7.5.1.18.6 (HLINpsds)" + ::= { adsl2SCStatusEntry 8 } + +adsl2SCStatusLinImg OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An array of up to 512 complex H(f) linear representation + values in linear scale for the respective transmission + direction. It is designed to support up to 512 (downstream) + sub-carriers. + The number of utilized values on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Each array entry represents the imaginary component [referred + to here as b(i)] of Hlin(f = i*Df) value for a particular sub- + carrier index i (0 <= i < NSC). + Hlin(f) is represented as ((scale/2^15)*((a(i)+j*b(i))/2^15)), + where scale is Adsl2SubcarrierLinScale and a(i) [provided by + the Adsl2SubcarrierLinReal object] and b(i) are in the range + (-2^15+1) to (+2^15-1). + A special value a(i)=b(i)= -2^15 indicates that no measurement + could be done for the subcarrier because it is out of the + passband or that the attenuation is out of range to be + represented. This parameter is only available after a loop + diagnostic procedure. + Each value in this array is 16 bits wide and is stored in big + endian format." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.2 (HLINpsds) + and paragraph 7.5.1.18.6 (HLINpsds)" + ::= { adsl2SCStatusEntry 9 } + +adsl2SCStatusLogMt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of symbols used to measure the H(f) logarithmic + measurement values for the respective transmission direction. + This parameter should correspond to the value specified in the + recommendation (e.g., the number of symbols in 1 second + time interval for G.992.3). This parameter corresponds to 1 + second in loop diagnostic procedure and should be updated in + initialization" + + + + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.3 (HLOGMTds) + and paragraph 7.5.1.18.7 (HLOGMTus)" + ::= { adsl2SCStatusEntry 10 } + +adsl2SCStatusLog OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An array of up to 512 real H(f) logarithmic representation + values in dB for the respective transmission direction. It is + designed to support up to 512 (downstream) sub-carriers. + The number of utilized values on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Each array entry represents the real Hlog(f = i*Df) value for a + particular sub-carrier index i, (0 <= i < NSC). + The real Hlog(f) value is represented as (6-m(i)/10), with m(i) + in the range 0 to 1022. A special value m=1023 indicates that + no measurement could be done for the subcarrier because it is + out of the passband or that the attenuation is out of range to + be represented. This parameter is applicable in loop + diagnostic procedure and initialization. + Each value in this array is 16 bits wide and is stored + in big endian format." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.18.4 (HLOGpsds) + and paragraph 7.5.1.18.8 (HLOGpsus)" + ::= { adsl2SCStatusEntry 11 } + +adsl2SCStatusQlnMt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of symbols used to measure the Quiet Line Noise + values on the respective transmission direction. This + parameter should correspond to the value specified in the + recommendation (e.g., the number of symbols in 1 second time + interval for G.992.3). This parameter corresponds to 1 second + in loop diagnostic procedure and should be updated in + initialization " + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.19.1 (QLNMTds) + and paragraph 7.5.1.19.3 (QLNMTus)" + ::= { adsl2SCStatusEntry 12 } + +adsl2SCStatusQln OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..512)) + UNITS "dBm/Hz" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An array of up to 512 real Quiet Line Noise values in dBm/Hz + for the respective transmission direction. It is designed for + up to 512 (downstream) sub-carriers. + The number of utilized values on downstream direction depends + on NSCds, and on upstream direction it depends on NSCus. This + value is referred to here as NSC. + Each array entry represents the QLN(f = i*Df) value for a + particular sub-carrier index i, (0 <= i < NSC). + The QLN(f) is represented as ( -23-n(i)/2), with n(i) in the + range 0 to 254. A special value n(i)=255 indicates that no + measurement could be done for the subcarrier because it is out + of the passband or that the noise PSD is out of range to be + represented. + This parameter is applicable in loop diagnostic procedure and + initialization. Each value in this array is 8 bits wide." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.19.2 (QLNpsds) + and paragraph 7.5.1.19.4 (QLNpsus)" + ::= { adsl2SCStatusEntry 13 } + +adsl2SCStatusLnAtten OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When referring to the downstream direction, it is the measured + difference in the total power transmitted by the ATU-C and the + total power received by the ATU-R over all sub-carriers during + diagnostics mode. + When referring to the upstream direction, it is the measured + difference in the total power transmitted by the ATU-R and the + total power received by the ATU-C over all sub-carriers during + diagnostics mode. + It ranges from 0 to 1270 units of 0.1 dB (physical values are + 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the line + attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the line + attenuation measurement is unavailable. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.6 (LATNds) + and paragraph 7.5.1.7 (LATNus)" + + + + ::= { adsl2SCStatusEntry 14 } + +adsl2SCStatusSigAtten OBJECT-TYPE + SYNTAX Unsigned32 (0..1270 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When referring to the downstream direction, it is the measured + difference in the total power transmitted by the + ATU-C and the total power received by the ATU-R over all sub- + carriers during Showtime after the diagnostics mode. + When referring to the upstream direction, it is the measured + difference in the total power transmitted by the + ATU-R and the total power received by the ATU-C over all sub- + carriers during Showtime after the diagnostics mode. + It ranges from 0 to 1270 units of 0.1 dB (physical values + are 0 to 127 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + signal attenuation is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + signal attenuation measurement is unavailable. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.8 (SATNds) + and paragraph 7.5.1.9 (SATNus)" + ::= { adsl2SCStatusEntry 15 } + +adsl2SCStatusSnrMargin OBJECT-TYPE + SYNTAX Integer32 (-640..630 | 2147483646 | 2147483647) + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "SNR Margin is the maximum increase in dB of the noise power + received at the ATU (ATU-R on downstream direction and ATU-C + on upstream direction), such that the BER requirements are met + for all bearer channels received at the ATU. It ranges from + -640 to 630 units of 0.1 dB (physical values are -64 to + 63 dB). + A special value of 0x7FFFFFFF (2147483647) indicates the + SNR Margin is out of range to be represented. + A special value of 0x7FFFFFFE (2147483646) indicates the + SNR Margin measurement is currently unavailable. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + + + + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.10 (SNRMds) + and paragraph 7.5.1.11 (SNRMus)" + ::= { adsl2SCStatusEntry 16 } + +adsl2SCStatusAttainableRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits/second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Attainable Data Rate. The maximum net data rate + currently attainable by the ATU-C transmitter and ATU-R + receiver (when referring to downstream direction) or by the + ATU-R transmitter and ATU-C receiver (when referring to + upstream direction). Value is coded in bits/second. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.12 (ATTNDRds) + and paragraph 7.5.1.13 (ATTNDRus)" + ::= { adsl2SCStatusEntry 17 } + +adsl2SCStatusActAtp OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Aggregate Transmit Power from the ATU (ATU-R on + downstream direction and ATU-C on upstream direction), at the + instant of measurement. It ranges from -310 to 310 units of + 0.1 dB (physical values are -31 to 31 dBm). A value of all + 1's indicates the measurement is out of range to be + represented. + This object reflects the value of the parameter following the + most recent DELT performed on the associated line. Once + the DELT process is over, the parameter no longer changes + until the row is deleted or a new DELT process is initiated." + REFERENCE "ITU-T G.997.1, paragraph 7.5.1.16 (ACTATPds) + and paragraph 7.5.1.17 (ACTATPus)" + ::= { adsl2SCStatusEntry 18 } + +adsl2SCStatusRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "Row Status. The manager may create and delete rows + of this table. Please see the description of + adsl2SCStatusTable above for more details." + ::= { adsl2SCStatusEntry 19 } + +------------------------------------------------ +-- adsl2LineInventoryTable -- +------------------------------------------------ +adsl2LineInventoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2LineInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineInventoryTable contains inventory of the + ADSL2 units." + ::= { adsl2Inventory 1 } + +adsl2LineInventoryEntry OBJECT-TYPE + SYNTAX Adsl2LineInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineInventoryTable contains inventory of the + ADSL2 units. + The index of this table is an interface index where the + interface has an ifType of adsl2plus(238)." + INDEX { ifIndex, adsl2LInvUnit } + ::= { adsl2LineInventoryTable 1 } + +Adsl2LineInventoryEntry ::= + SEQUENCE { + adsl2LInvUnit Adsl2Unit, + adsl2LInvG994VendorId OCTET STRING, + adsl2LInvSystemVendorId OCTET STRING, + adsl2LInvVersionNumber OCTET STRING, + adsl2LInvSerialNumber OCTET STRING, + adsl2LInvSelfTestResult Unsigned32, + adsl2LInvTransmissionCapabilities Adsl2TransmissionModeType + } + +adsl2LInvUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit atuc(1) or atur(2)." + + + + ::= { adsl2LineInventoryEntry 1 } + +adsl2LInvG994VendorId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU G.994.1 Vendor ID as inserted in the G.994.1 CL/CLR + message. It consists of 8 binary octets, including a country + code followed by a (regionally allocated) provider code, as + defined in Recommendation T.35." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 2 } + +adsl2LInvSystemVendorId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU System Vendor ID (identifies the ATU system + integrator) as inserted in the Overhead Messages (both ATUs + for G.992.3 and G.992.4) or in the Embedded Operations + Channel (only ATU-R in G.992.1 and G.992.2). It consists of + 8 binary octets, with the same format as used for + Adsl2InvG994VendorId." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 3 } + +adsl2LInvVersionNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU version number (vendor-specific information) as + inserted in the Overhead Messages (both ATUs for G.992.3 and + G.992.4) or in the Embedded Operations Channel (only ATU-R in + G.992.1 and G.992.2). It consists of up to 16 binary octets." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 4 } + +adsl2LInvSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU serial number (vendor-specific information) as + inserted in the Overhead Messages (both ATUs for G.992.3 and + G.992.4) or in the Embedded Operations Channel (only ATU-R in + + + + G.992.1 and G.992.2). It is vendor-specific information. It + consists of up to 32 ASCII characters." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 5 } + +adsl2LInvSelfTestResult OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU self-test result, coded as a 32-bit value. The + most significant octet of the result is '0' if the self-test + passed, and '1' if the self-test failed. The interpretation + of the other octets is vendor discretionary." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 6 } + +adsl2LInvTransmissionCapabilities OBJECT-TYPE + SYNTAX Adsl2TransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATU transmission system capability list of the different + coding types. It is coded in a bit-map representation with 1 + or more bits set. A bit set to '1' means that the ATU + supports the respective coding. The value may be derived + from the handshaking procedures defined in G.994.1. A set + of ADSL2 line transmission modes, with one bit per mode." + REFERENCE "ITU-T G.997.1, paragraph 7.4" + ::= { adsl2LineInventoryEntry 7 } + + +------------------------------------------------ +-- adsl2LineConfTemplateTable -- +------------------------------------------------ +adsl2LineConfTemplateTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2LineConfTemplateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineConfTemplateTable contains ADSL2 line + configuration templates. + + Entries in this table MUST be maintained in a + persistent manner." + ::= { adsl2ProfileLine 1 } + +adsl2LineConfTemplateEntry OBJECT-TYPE + + + + SYNTAX Adsl2LineConfTemplateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineConfTemplateTable contains the ADSL2 line + configuration template. + A default template with an index of 'DEFVAL' will + always exist, and its parameters will be set to vendor- + specific values, unless otherwise specified in this document." + INDEX { adsl2LConfTempTemplateName } + ::= { adsl2LineConfTemplateTable 1 } + +Adsl2LineConfTemplateEntry ::= + SEQUENCE { + adsl2LConfTempTemplateName SnmpAdminString, + adsl2LConfTempLineProfile SnmpAdminString, + adsl2LConfTempChan1ConfProfile SnmpAdminString, + adsl2LConfTempChan1RaRatioDs Unsigned32, + adsl2LConfTempChan1RaRatioUs Unsigned32, + adsl2LConfTempChan2ConfProfile SnmpAdminString, + adsl2LConfTempChan2RaRatioDs Unsigned32, + adsl2LConfTempChan2RaRatioUs Unsigned32, + adsl2LConfTempChan3ConfProfile SnmpAdminString, + adsl2LConfTempChan3RaRatioDs Unsigned32, + adsl2LConfTempChan3RaRatioUs Unsigned32, + adsl2LConfTempChan4ConfProfile SnmpAdminString, + adsl2LConfTempChan4RaRatioDs Unsigned32, + adsl2LConfTempChan4RaRatioUs Unsigned32, + adsl2LConfTempRowStatus RowStatus + } + +adsl2LConfTempTemplateName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies a row in this table." + REFERENCE "DSL Forum TR-90, paragraph 5.1.4" + ::= { adsl2LineConfTemplateEntry 1 } + +adsl2LConfTempLineProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 Line + Configuration Profile Table, (adsl2LineConfProfTable), + which applies for this ADSL2 line." + + + + REFERENCE "DSL Forum TR-90, paragraph 5.1.4" + DEFVAL { "DEFVAL" } + ::= { adsl2LineConfTemplateEntry 2 } + +adsl2LConfTempChan1ConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 + Channel Configuration Profile Table, + (adsl2ChConfProfileTable) that applies to ADSL2 bearer + channel #1. The channel profile name specified here must + match the name of an existing row in the + adsl2ChConfProfileTable table." + DEFVAL { "DEFVAL" } + ::= { adsl2LineConfTemplateEntry 3 } + +adsl2LConfTempChan1RaRatioDs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #1 when performing rate + adaptation on Downstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the 100 - + adsl2LConfTempChan1RaRatioDs is the ratio of excess data + rate to be assigned to all other bearer channels on Downstream + direction. The sum of rate adaptation ratios over all bearers + on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 100 } + ::= { adsl2LineConfTemplateEntry 4 } + +adsl2LConfTempChan1RaRatioUs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #1 when performing rate + adaptation on Upstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the + + + + 100 - adsl2LConfTempChan1RaRatioUs is the ratio of excess + data rate to be assigned to all other bearer channels on + Upstream direction. The sum of rate adaptation ratios over + all bearers on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 100 } + ::= { adsl2LineConfTemplateEntry 5 } + +adsl2LConfTempChan2ConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 + Channel Configuration Profile Table + (adsl2ChConfProfileTable) that applies to ADSL2 bearer + channel #2. If the channel is unused, then the object is set + to a zero-length string. + This object may be set to a zero-length string only if + adsl2LConfTempChan3ConfProfile contains a zero-length + string." + + DEFVAL { "" } + ::= { adsl2LineConfTemplateEntry 6 } + +adsl2LConfTempChan2RaRatioDs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #2 when performing rate + adaptation on Downstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the + 100 - adsl2LConfTempChan2RaRatioDs is the ratio of excess + data rate to be assigned to all other bearer channels on + Downstream direction. The sum of rate adaptation ratios + over all bearers on the same direction shall be equal to + 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 7 } + +adsl2LConfTempChan2RaRatioUs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #2 when performing rate + adaptation on Upstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the + 100 - adsl2LConfTempChan2RaRatioUs is the ratio of excess + data rate to be assigned to all other bearer channels on + Upstream direction. The sum of rate adaptation ratios over + all bearers on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 8 } + +adsl2LConfTempChan3ConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 + Channel Configuration Profile Table + (adsl2ChConfProfileTable) that applies to ADSL2 bearer + channel #3. If the channel is unused, then the object is set + to a zero-length string. + This object may be set to a zero-length string only if + adsl2LConfTempChan4ConfProfile contains a zero-length + string. + This object may be set to a non-zero-length string only if + adsl2LConfTempChan2ConfProfile contains a non-zero-length + string." + DEFVAL { "" } + ::= { adsl2LineConfTemplateEntry 9 } + +adsl2LConfTempChan3RaRatioDs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #3 when performing rate + adaptation on Downstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the 100 - + adsl2LConfTempChan3RaRatioDs is the ratio of excess data + rate to be assigned to all other bearer channels on Downstream + + + + direction. The sum of rate adaptation ratios over all bearers + on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 10 } + +adsl2LConfTempChan3RaRatioUs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #3 when performing rate + adaptation on Upstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the + 100 - adsl2LConfTempChan3RaRatioUs is the ratio of excess + data rate to be assigned to all other bearer channels on + Upstream direction. The sum of rate adaptation ratios over + all bearers on the same direction shall be equal to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 11 } + +adsl2LConfTempChan4ConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ADSL2 + Channel Configuration Profile Table + (adsl2ChConfProfileTable) that applies to ADSL2 bearer + channel #4. If the channel is unused, then the object is set + to a zero-length string. + This object may be set to a non-zero-length string only if + adsl2LConfTempChan3ConfProfile contains a non-zero-length + string." + DEFVAL { "" } + ::= { adsl2LineConfTemplateEntry 12 } + +adsl2LConfTempChan4RaRatioDs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + + + + into account for the bearer channel #4 when performing rate + adaptation on Downstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over all + bearer channels. Also, the 100 - + adsl2LConfTempChan4RaRatioDs is the ratio of + excess data rate to be assigned to all other bearer channels. + The sum of rate adaptation ratios over all bearers on the same + direction shall sum to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 13 } + +adsl2LConfTempChan4RaRatioUs OBJECT-TYPE + SYNTAX Unsigned32(0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Rate Adaptation Ratio. The ratio (in %) that should be taken + into account for the bearer channel #4 when performing rate + adaptation on Upstream. The ratio refers to the available + data rate in excess of the Minimum Data Rate, summed over + all bearer channels. Also, the 100 - + adsl2LConfTempChan4RaRatioUs is the + ratio of excess data rate to be assigned to all other bearer + channels. The sum of rate adaptation ratios over all bearers + on the same direction shall sum to 100%." + REFERENCE "ITU-T G.997.1, paragraph 7.3.2.1" + DEFVAL { 0 } + ::= { adsl2LineConfTemplateEntry 14 } + +adsl2LConfTempRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or to modify or + delete an existing row in this table. + + A template is activated by setting this object to 'active'. + When 'active' is set, the system will validate the template. + + Before a template can be deleted or taken out of service + (by setting this object to 'destroy' or 'notInService'), + it must first be unreferenced from all associated + lines." + ::= { adsl2LineConfTemplateEntry 15 } + + + + +------------------------------------------ +-- adsl2LineConfProfTable -- +------------------------------------------ +adsl2LineConfProfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2LineConfProfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineConfProfTable contains ADSL2 line profile + configuration. + + Entries in this table MUST be maintained in a + persistent manner." + ::= { adsl2ProfileLine 2 } + +adsl2LineConfProfEntry OBJECT-TYPE + SYNTAX Adsl2LineConfProfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2LineConfProfTable contains ADSL2 line profile + configuration. + + A default profile with an index of 'DEFVAL' will + always exist, and its parameters will be set to vendor- + specific values, unless otherwise specified in this document." + INDEX { adsl2LConfProfProfileName } + ::= { adsl2LineConfProfTable 1 } + +Adsl2LineConfProfEntry ::= + SEQUENCE { + adsl2LConfProfProfileName SnmpAdminString, + adsl2LConfProfScMaskDs Adsl2ScMaskDs, + adsl2LConfProfScMaskUs Adsl2ScMaskUs, + adsl2LConfProfRfiBandsDs Adsl2RfiDs, + adsl2LConfProfRaModeDs Adsl2RaMode, + adsl2LConfProfRaModeUs Adsl2RaMode, + adsl2LConfProfRaUsNrmDs Unsigned32, + adsl2LConfProfRaUsNrmUs Unsigned32, + adsl2LConfProfRaUsTimeDs Unsigned32, + adsl2LConfProfRaUsTimeUs Unsigned32, + adsl2LConfProfRaDsNrmsDs Unsigned32, + adsl2LConfProfRaDsNrmsUs Unsigned32, + adsl2LConfProfRaDsTimeDs Unsigned32, + adsl2LConfProfRaDsTimeUs Unsigned32, + adsl2LConfProfTargetSnrmDs Unsigned32, + adsl2LConfProfTargetSnrmUs Unsigned32, + adsl2LConfProfMaxSnrmDs Unsigned32, + + + + adsl2LConfProfMaxSnrmUs Unsigned32, + adsl2LConfProfMinSnrmDs Unsigned32, + adsl2LConfProfMinSnrmUs Unsigned32, + adsl2LConfProfMsgMinUs Unsigned32, + adsl2LConfProfMsgMinDs Unsigned32, + adsl2LConfProfAtuTransSysEna Adsl2TransmissionModeType, + adsl2LConfProfPmMode Adsl2LConfProfPmMode, + adsl2LConfProfL0Time Unsigned32, + adsl2LConfProfL2Time Unsigned32, + adsl2LConfProfL2Atpr Unsigned32, + adsl2LConfProfL2Atprt Unsigned32, + adsl2LConfProfRowStatus RowStatus + } + +adsl2LConfProfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies a row in this table." + ::= { adsl2LineConfProfEntry 1 } + +adsl2LConfProfScMaskDs OBJECT-TYPE + SYNTAX Adsl2ScMaskDs + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Sub-carriers mask. A bitmap of 512 bits that allows masking + up to 512 downstream sub-carriers, depending on NSCds. If bit + i (0 <= i < NSCds) is set to '1', the respective + downstream sub-carrier i is masked, and if set to '0', the + respective sub-carrier is unmasked. Note that there should + always be unmasked sub-carriers (i.e., the object cannot be + all 1's). Also note that if NSCds < 512, all bits + i (NSCds < i <= 512) should be set to '1'." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.2.6" + ::= { adsl2LineConfProfEntry 2 } + +adsl2LConfProfScMaskUs OBJECT-TYPE + SYNTAX Adsl2ScMaskUs + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Sub-carriers mask. A bitmap of 64 bits that allows masking + up to 64 downstream sub-carriers, depending on NSCds. If + bit i (0 <= i < NSCus) is set to '1', the respective + upstream sub-carrier i is masked, and if set to '0', the + respective sub-carrier is unmasked. Note that there + + + + should always be unmasked sub-carriers (i.e., the object + cannot be all 1's). Also note that if NSCus < + 64, all bits i (NSCus < i <= 64) should be set to '1'." + REFERENCE "ITU-T G.997.1, paragraph 7.3.1.2.7" + ::= { adsl2LineConfProfEntry 3 } + +adsl2LConfProfRfiBandsDs OBJECT-TYPE + SYNTAX Adsl2RfiDs + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The subset of downstream PSD mask breakpoints that shall be + used to notch an RFI band. + The specific interpolation around these points is defined in + G.992.5. It is a bitmap of 512 bits that allows referring to + up to 512 downstream sub-carriers, depending on NSCds. If bit + i (0 <= i < NSCds) is set to '1', the respective downstream + sub-carrier i is part of a notch filter, and if set to '0', + the respective sub-carrier is not part of a notch filter. + This information complements the specification provided by + adsl2LConfProfPsdMaskDs. + Note that if NSCds < 512, all bits i (NSCds= 1 for one or more bearer channels OR + LOS >= 1 OR SEF >=1 OR LPR >= 1 + ATU-R: FEBE >= 1 for one or more bearer channels OR + LOS-FE >=1 OR RDI >=1 OR LPR-FE >=1 . + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 6 } + +adsl2PMLCurr15MSes OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: (CRC-8 summed over all bearer channels) >= 18 OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: (FEBE summed over all bearer channels) >= 18 OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1 . + This parameter is inhibited during UAS." + + + + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 7 } + +adsl2PMLCurr15MLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was LOS (or + LOS-FE for ATU-R)." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 8 } + +adsl2PMLCurr15MUas OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in Unavailability State during this + interval. Unavailability begins at the onset of 10 + contiguous severely-errored seconds, and ends at the + onset of 10 contiguous seconds with no severely-errored + seconds." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 9 } + +adsl2PMLCurr1DayValidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid intervals." + ::= { adsl2PMLineCurrEntry 10 } + +adsl2PMLCurr1DayInvalidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid intervals." + ::= { adsl2PMLineCurrEntry 11 } + +adsl2PMLCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMLineCurrEntry 12 } + +adsl2PMLCurr1DayFecs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was at least + one FEC correction event for one or more bearer channels in + this line. This parameter is inhibited during UAS or SES." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 13 } + +adsl2PMLCurr1DayEs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: CRC-8 >= 1 for one or more bearer channels OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: FEBE >= 1 for one or more bearer channels OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 14 } + +adsl2PMLCurr1DaySes OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: (CRC-8 summed over all bearer channels) >= 18 OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: (FEBE summed over all bearer channels) >= 18 OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1 + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + + + + ::= { adsl2PMLineCurrEntry 15 } + +adsl2PMLCurr1DayLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was LOS (or + LOS-FE for ATU-R)." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 16 } + +adsl2PMLCurr1DayUas OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in Unavailability State during this interval. + Unavailability begins at the onset of 10 contiguous severely- + errored seconds, and ends at the onset of 10 contiguous + seconds with no severely-errored seconds." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrEntry 17 } + + +------------------------------------------------ +-- PM line init current counters -- +------------------------------------------------ + +adsl2PMLineCurrInitTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineCurrInitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineCurrInitTable contains current + initialization counters of the ADSL2 line. + The PM counters in the table are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMLine 2 } + +adsl2PMLineCurrInitEntry OBJECT-TYPE + SYNTAX Adsl2PMLineCurrInitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The table adsl2PMLineCurrInitTable contains current + initialization counters of the ADSL2 line. + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), and a + termination unit." + INDEX { ifIndex } + ::= { adsl2PMLineCurrInitTable 1 } + +Adsl2PMLineCurrInitEntry ::= + SEQUENCE { + adsl2PMLCurrInit15MTimeElapsed Unsigned32, + adsl2PMLCurrInit15MFullInits Unsigned32, + adsl2PMLCurrInit15MFailedFullInits Unsigned32, + adsl2PMLCurrInit15MShortInits Unsigned32, + adsl2PMLCurrInit15MFailedShortInits Unsigned32, + adsl2PMLCurrInit1DayTimeElapsed Unsigned32, + adsl2PMLCurrInit1DayFullInits Unsigned32, + adsl2PMLCurrInit1DayFailedFullInits Unsigned32, + adsl2PMLCurrInit1DayShortInits Unsigned32, + adsl2PMLCurrInit1DayFailedShortInits Unsigned32 + } + +adsl2PMLCurrInit15MTimeElapsed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMLineCurrInitEntry 1 } + +adsl2PMLCurrInit15MFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of full initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 2 } + +adsl2PMLCurrInit15MFailedFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Count of failed full initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 3 } + +adsl2PMLCurrInit15MShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of short initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 4 } + +adsl2PMLCurrInit15MFailedShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed short initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 5 } + +adsl2PMLCurrInit1DayTimeElapsed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMLineCurrInitEntry 6 } + +adsl2PMLCurrInit1DayFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of full initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 7 } + + + + +adsl2PMLCurrInit1DayFailedFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed full initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 8 } + +adsl2PMLCurrInit1DayShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of short initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 9 } + +adsl2PMLCurrInit1DayFailedShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed short initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineCurrInitEntry 10 } + + + +------------------------------------------- +-- PM line history 15 Minutes -- +------------------------------------------- +adsl2PMLineHist15MinTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineHist15MinTable contains PM line history + for 15min intervals of the ADSL2 line." + ::= { adsl2PMLine 3 } + +adsl2PMLineHist15MinEntry OBJECT-TYPE + SYNTAX Adsl2PMLineHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The table adsl2PMLineHist15MinTable contains PM line history + for 15min intervals of the ADSL2 line. + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), along with a + termination unit, and an interval number." + INDEX { ifIndex, + adsl2PMLHist15MUnit, + adsl2PMLHist15MInterval } + ::= { adsl2PMLineHist15MinTable 1 } + +Adsl2PMLineHist15MinEntry ::= + SEQUENCE { + adsl2PMLHist15MUnit Adsl2Unit, + adsl2PMLHist15MInterval Unsigned32, + adsl2PMLHist15MMonitoredTime Unsigned32, + adsl2PMLHist15MFecs Counter32, + adsl2PMLHist15MEs Counter32, + adsl2PMLHist15MSes Counter32, + adsl2PMLHist15MLoss Counter32, + adsl2PMLHist15MUas Counter32, + adsl2PMLHist15MValidInterval TruthValue + } + +adsl2PMLHist15MUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit atuc(1) or atur(2)." + ::= { adsl2PMLineHist15MinEntry 1 } + +adsl2PMLHist15MInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMLineHist15MinEntry 2 } + +adsl2PMLHist15MMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMLineHist15MinEntry 3 } + + + +adsl2PMLHist15MFecs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was at least + one FEC correction event for one or more bearer channels in + this line. This parameter is inhibited during UAS or SES." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 4 } + +adsl2PMLHist15MEs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: CRC-8 >= 1 for one or more bearer channels OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: FEBE >= 1 for one or more bearer channels OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 5 } + +adsl2PMLHist15MSes OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: (CRC-8 summed over all bearer channels) >= 18 OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: (FEBE summed over all bearer channels) >= 18 OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 6 } + +adsl2PMLHist15MLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Count of seconds during this interval where there was LOS (or + LOS-FE for ATU-R)." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 7 } + +adsl2PMLHist15MUas OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in Unavailability State during this interval. + Unavailability begins at the onset of 10 contiguous severely- + errored seconds, and ends at the onset of 10 contiguous + seconds with no severely-errored seconds." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist15MinEntry 8 } + +adsl2PMLHist15MValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMLineHist15MinEntry 9 } + + + +--------------------------------------- +-- PM line history 1 Day -- +--------------------------------------- +adsl2PMLineHist1DayTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineHist1DayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineHist1DayTable contains PM line history + for 24-hour intervals of the ADSL2 line." + ::= { adsl2PMLine 4 } + +adsl2PMLineHist1DayEntry OBJECT-TYPE + SYNTAX Adsl2PMLineHist1DayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineHist1DayTable contains PM line history + for 24-hour intervals of the ADSL2 line. + + + + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), along with a + termination unit, and an interval number." + INDEX { ifIndex, + adsl2PMLHist1DUnit, + adsl2PMLHist1DInterval } + ::= { adsl2PMLineHist1DayTable 1 } + +Adsl2PMLineHist1DayEntry ::= + SEQUENCE { + adsl2PMLHist1DUnit Adsl2Unit, + adsl2PMLHist1DInterval Unsigned32, + adsl2PMLHist1DMonitoredTime Unsigned32, + adsl2PMLHist1DFecs Counter32, + adsl2PMLHist1DEs Counter32, + adsl2PMLHist1DSes Counter32, + adsl2PMLHist1DLoss Counter32, + adsl2PMLHist1DUas Counter32, + adsl2PMLHist1DValidInterval TruthValue + } + +adsl2PMLHist1DUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit." + ::= { adsl2PMLineHist1DayEntry 1 } + +adsl2PMLHist1DInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMLineHist1DayEntry 2 } + +adsl2PMLHist1DMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMLineHist1DayEntry 3 } + +adsl2PMLHist1DFecs OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was at least + one FEC correction event for one or more bearer channels in + this line. This parameter is inhibited during UAS or SES." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 4 } + +adsl2PMLHist1DEs OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: CRC-8 >= 1 for one or more bearer channels OR + LOS >= 1 OR SEF >= 1 OR LPR >= 1 + ATU-R: FEBE >= 1 for one or more bearer channels OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 5 } + +adsl2PMLHist1DSes OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was: + ATU-C: (CRC-8 summed over all bearer channels) >= 18 OR + LOS >= 1 OR SEF >> 1 OR LPR >= 1 + ATU-R: (FEBE summed over all bearer channels) >= 18 OR + LOS-FE >= 1 OR RDI >= 1 OR LPR-FE >= 1. + This parameter is inhibited during UAS." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 6 } + +adsl2PMLHist1DLoss OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval where there was LOS (or + LOS-FE for ATU-R)." + + + + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 7 } + +adsl2PMLHist1DUas OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in Unavailability State during this interval. + Unavailability begins at the onset of 10 contiguous severely- + errored seconds, and ends at the onset of 10 contiguous + seconds with no severely-errored seconds." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineHist1DayEntry 8 } + +adsl2PMLHist1DValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMLineHist1DayEntry 9 } + + + + +------------------------------------------- +-- PM line init history 15 Minutes -- +------------------------------------------- + +adsl2PMLineInitHist15MinTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineInitHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineInitHist15MinTable contains PM line + initialization history for 15-minute intervals of the ADSL2 + line." + ::= { adsl2PMLine 5 } + +adsl2PMLineInitHist15MinEntry OBJECT-TYPE + SYNTAX Adsl2PMLineInitHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineInitHist15MinTable contains PM line + + + + initialization history for 15 minutes intervals of the ADSL2 + line. + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), and an interval + number." + INDEX { ifIndex, + adsl2PMLHistInit15MInterval } + ::= { adsl2PMLineInitHist15MinTable 1 } + +Adsl2PMLineInitHist15MinEntry ::= + SEQUENCE { + adsl2PMLHistInit15MInterval Unsigned32, + adsl2PMLHistInit15MMonitoredTime Unsigned32, + adsl2PMLHistInit15MFullInits Unsigned32, + adsl2PMLHistInit15MFailedFullInits Unsigned32, + adsl2PMLHistInit15MShortInits Unsigned32, + adsl2PMLHistInit15MFailedShortInits Unsigned32, + adsl2PMLHistInit15MValidInterval TruthValue + } + +adsl2PMLHistInit15MInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMLineInitHist15MinEntry 1 } + +adsl2PMLHistInit15MMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMLineInitHist15MinEntry 2 } + +adsl2PMLHistInit15MFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of full initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist15MinEntry 3 } + +adsl2PMLHistInit15MFailedFullInits OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed full initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist15MinEntry 4 } + +adsl2PMLHistInit15MShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of short initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist15MinEntry 5 } + +adsl2PMLHistInit15MFailedShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed short initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist15MinEntry 6 } + +adsl2PMLHistInit15MValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMLineInitHist15MinEntry 7 } + + + +------------------------------------------- +-- PM line init history 1 Day -- +------------------------------------------- +adsl2PMLineInitHist1DayTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMLineInitHist1DayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The table adsl2PMLineInitHist1DayTable contains PM line + initialization history for 24-hour intervals of the ADSL2 + line." + ::= { adsl2PMLine 6 } + +adsl2PMLineInitHist1DayEntry OBJECT-TYPE + SYNTAX Adsl2PMLineInitHist1DayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMLineInitHist1DayTable contains PM line + initialization history for 24-hour intervals of the ADSL2 + line. + The index of this table consists of an interface index, where + the interface has an ifType of adsl2plus(238), and an interval + number." + INDEX { ifIndex, + adsl2PMLHistinit1DInterval } + ::= { adsl2PMLineInitHist1DayTable 1 } + +Adsl2PMLineInitHist1DayEntry ::= + SEQUENCE { + adsl2PMLHistinit1DInterval Unsigned32, + adsl2PMLHistinit1DMonitoredTime Unsigned32, + adsl2PMLHistinit1DFullInits Unsigned32, + adsl2PMLHistinit1DFailedFullInits Unsigned32, + adsl2PMLHistinit1DShortInits Unsigned32, + adsl2PMLHistinit1DFailedShortInits Unsigned32, + adsl2PMLHistinit1DValidInterval TruthValue + } + +adsl2PMLHistinit1DInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMLineInitHist1DayEntry 1 } + +adsl2PMLHistinit1DMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMLineInitHist1DayEntry 2 } + + + + +adsl2PMLHistinit1DFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of full initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist1DayEntry 3 } + +adsl2PMLHistinit1DFailedFullInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed full initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist1DayEntry 4 } + +adsl2PMLHistinit1DShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of short initializations attempted on the line + (successful and failed) during this interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist1DayEntry 5 } + +adsl2PMLHistinit1DFailedShortInits OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of failed short initializations on the line during this + interval." + REFERENCE "ITU-T G.997.1, paragraph 7.2.1" + ::= { adsl2PMLineInitHist1DayEntry 6 } + +adsl2PMLHistinit1DValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMLineInitHist1DayEntry 7 } + + + +--------------------------------------------------- +-- PM channel current counters -- +--------------------------------------------------- +adsl2PMChCurrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMChCurrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChCurrTable contains current Performance + Monitoring results of the ADSL2 channel. + The PM counters in the table are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMChannel 1 } + +adsl2PMChCurrEntry OBJECT-TYPE + SYNTAX Adsl2PMChCurrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChCurrTable contains current Performance + Monitoring results of the ADSL2 channel. + The index of this table consists of an interface index, where + the interface has an ifType value that is applicable + for a DSL channel, along with a termination unit." + INDEX { ifIndex, adsl2PMChCurrUnit } + ::= { adsl2PMChCurrTable 1 } + +Adsl2PMChCurrEntry ::= + SEQUENCE { + adsl2PMChCurrUnit Adsl2Unit, + adsl2PMChCurrValidIntervals Unsigned32, + adsl2PMChCurrInvalidIntervals Unsigned32, + adsl2PMChCurr15MTimeElapsed HCPerfTimeElapsed, + adsl2PMChCurr15MCodingViolations Unsigned32, + adsl2PMChCurr15MCorrectedBlocks Unsigned32, + adsl2PMChCurr1DayValidIntervals Unsigned32, + adsl2PMChCurr1DayInvalidIntervals Unsigned32, + adsl2PMChCurr1DayTimeElapsed HCPerfTimeElapsed, + adsl2PMChCurr1DayCodingViolations Unsigned32, + adsl2PMChCurr1DayCorrectedBlocks Unsigned32 + } + +adsl2PMChCurrUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The termination unit." + ::= { adsl2PMChCurrEntry 1 } + +adsl2PMChCurrValidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid intervals." + ::= { adsl2PMChCurrEntry 2 } + +adsl2PMChCurrInvalidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid intervals." + ::= { adsl2PMChCurrEntry 3 } + +adsl2PMChCurr15MTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMChCurrEntry 4 } + +adsl2PMChCurr15MCodingViolations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC-8 (FEBE for ATU-R) anomalies occurring in the + channel during the interval. This parameter is inhibited + during UAS or SES. If the CRC is applied over multiple + channels, then each related CRC-8 (or FEBE) anomaly should + increment each of the counters related to the individual + channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChCurrEntry 5 } + +adsl2PMChCurr15MCorrectedBlocks OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Count of FEC (FFEC for ATU-R) anomalies (corrected code words) + occurring in the channel during the interval. This parameter + is inhibited during UAS or SES. If the FEC is applied over + multiple channels, then each related FEC (or FFEC) anomaly + should increment each of the counters related to the + individual channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChCurrEntry 6 } + +adsl2PMChCurr1DayValidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid intervals." + ::= { adsl2PMChCurrEntry 7 } + +adsl2PMChCurr1DayInvalidIntervals OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid intervals." + ::= { adsl2PMChCurrEntry 8 } + +adsl2PMChCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds since this PM interval began. + Note that the PM counters are not reset even when the XTU + is reinitialized. They are reinitialized only when the + agent itself is reset or reinitialized." + ::= { adsl2PMChCurrEntry 9 } + +adsl2PMChCurr1DayCodingViolations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC-8 (FEBE for ATU-R) anomalies occurring in the + channel during the interval. This parameter is inhibited + during UAS or SES. If the CRC is applied over multiple + channels, then each related CRC-8 (or FEBE) anomaly should + + + + increment each of the counters related to the individual + channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChCurrEntry 10 } + +adsl2PMChCurr1DayCorrectedBlocks OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of FEC (FFEC for ATU-R) anomalies (corrected code words) + occurring in the channel during the interval. This parameter + is inhibited during UAS or SES. If the FEC is applied over + multiple channels, then each related FEC (or FFEC) anomaly + should increment each of the counters related to the + individual channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChCurrEntry 11 } + + + +------------------------------------------- +-- PM channel history 15 Minutes -- +------------------------------------------- +adsl2PMChHist15MinTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMChHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChCurrTable contains current Performance + Monitoring results of the ADSL2 channel." + ::= { adsl2PMChannel 2 } + +adsl2PMChHist15MinEntry OBJECT-TYPE + SYNTAX Adsl2PMChHist15MinEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChCurrTable contains current Performance + Monitoring results of the ADSL2 channel. + The index of this table consists of an interface index, where + the interface has an ifType value that is applicable + for a DSL channel, along with a termination unit, and the + interval number." + INDEX { ifIndex, + adsl2PMChHist15MUnit, + adsl2PMChHist15MInterval } + ::= { adsl2PMChHist15MinTable 1 } + + + +Adsl2PMChHist15MinEntry ::= + SEQUENCE { + adsl2PMChHist15MUnit Adsl2Unit, + adsl2PMChHist15MInterval Unsigned32, + adsl2PMChHist15MMonitoredTime Unsigned32, + adsl2PMChHist15MCodingViolations Unsigned32, + adsl2PMChHist15MCorrectedBlocks Unsigned32, + adsl2PMChHist15MValidInterval TruthValue + } + +adsl2PMChHist15MUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit." + ::= { adsl2PMChHist15MinEntry 1 } + +adsl2PMChHist15MInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMChHist15MinEntry 2 } + +adsl2PMChHist15MMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMChHist15MinEntry 3 } + +adsl2PMChHist15MCodingViolations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC-8 (FEBE for ATU-R) anomalies occurring in the + channel during the interval. This parameter is inhibited + during UAS or SES. If the CRC is applied over multiple + channels, then each related CRC-8 (or FEBE) anomaly should + increment each of the counters related to the individual + channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChHist15MinEntry 4 } + + + +adsl2PMChHist15MCorrectedBlocks OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of FEC (FFEC for ATU-R) anomalies (corrected code words) + occurring in the channel during the interval. This parameter + is inhibited during UAS or SES. If the FEC is applied over + multiple channels, then each related FEC (or FFEC) anomaly + should increment each of the counters related to the + individual channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChHist15MinEntry 5 } + +adsl2PMChHist15MValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMChHist15MinEntry 6 } + + + +------------------------------------------ +-- PM channel history 1 Day -- +------------------------------------------ +adsl2PMChHist1DTable OBJECT-TYPE + SYNTAX SEQUENCE OF Adsl2PMChHist1DEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChHist1DayTable contains PM channel history + for 1-day intervals of ADSL2." + ::= { adsl2PMChannel 3 } + +adsl2PMChHist1DEntry OBJECT-TYPE + SYNTAX Adsl2PMChHist1DEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table adsl2PMChHist1DayTable contains PM channel history + for 1-day intervals of ADSL2. + The index of this table consists of an interface index, where + the interface has an ifType value that is applicable + for a DSL channel, along with a termination unit, and the + interval number." + + + + INDEX { ifIndex, + adsl2PMChHist1DUnit, + adsl2PMChHist1DInterval } + ::= { adsl2PMChHist1DTable 1 } + +Adsl2PMChHist1DEntry ::= + SEQUENCE { + adsl2PMChHist1DUnit Adsl2Unit, + adsl2PMChHist1DInterval Unsigned32, + adsl2PMChHist1DMonitoredTime Unsigned32, + adsl2PMChHist1DCodingViolations Unsigned32, + adsl2PMChHist1DCorrectedBlocks Unsigned32, + adsl2PMChHist1DValidInterval TruthValue + } + +adsl2PMChHist1DUnit OBJECT-TYPE + SYNTAX Adsl2Unit + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The termination unit." + ::= { adsl2PMChHist1DEntry 1 } + +adsl2PMChHist1DInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interval number." + ::= { adsl2PMChHist1DEntry 2 } + +adsl2PMChHist1DMonitoredTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total seconds monitored in this interval." + ::= { adsl2PMChHist1DEntry 3 } + +adsl2PMChHist1DCodingViolations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC-8 (FEBE for ATU-R) anomalies occurring in the + channel during the interval. This parameter is inhibited + during UAS or SES. If the CRC is applied over multiple + + + + channels, then each related CRC-8 (or FEBE) anomaly should + increment each of the counters related to the individual + channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChHist1DEntry 4 } + +adsl2PMChHist1DCorrectedBlocks OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of FEC (FFEC for ATU-R) anomalies (corrected code words) + occurring in the channel during the interval. This parameter + is inhibited during UAS or SES. If the FEC is applied over + multiple channels, then each related FEC (or FFEC) anomaly + should increment each of the counters related to the + individual channels." + REFERENCE "ITU-T G.997.1, paragraph 7.2.2" + ::= { adsl2PMChHist1DEntry 5 } + +adsl2PMChHist1DValidInterval OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this interval is + valid." + ::= { adsl2PMChHist1DEntry 6 } + +------------------------------------------- +-- Notifications Group -- +------------------------------------------- + +adsl2LinePerfFECSThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MFecs, + adsl2LineAlarmConfProfileAtucThresh15MinFecs + } + STATUS current + DESCRIPTION + "This notification indicates that the FEC seconds threshold + has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 1 } + +adsl2LinePerfFECSThreshAtur NOTIFICATION-TYPE + OBJECTS + { + + + + adsl2PMLCurr15MFecs, + adsl2LineAlarmConfProfileAturThresh15MinFecs + } + STATUS current + DESCRIPTION + "This notification indicates that the FEC seconds threshold + has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 2 } + +adsl2LinePerfESThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MEs, + adsl2LineAlarmConfProfileAtucThresh15MinEs + } + STATUS current + DESCRIPTION + "This notification indicates that the errored seconds threshold + has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 3 } + +adsl2LinePerfESThreshAtur NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MEs, + adsl2LineAlarmConfProfileAturThresh15MinEs + } + STATUS current + DESCRIPTION + "This notification indicates that the errored seconds threshold + has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 4 } + +adsl2LinePerfSESThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MSes, + adsl2LineAlarmConfProfileAtucThresh15MinSes + } + STATUS current + DESCRIPTION + "This notification indicates that the severely-errored seconds + threshold has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 5 } + +adsl2LinePerfSESThreshAtur NOTIFICATION-TYPE + OBJECTS + { + + + + adsl2PMLCurr15MSes, + adsl2LineAlarmConfProfileAturThresh15MinSes + } + STATUS current + DESCRIPTION + "This notification indicates that the severely-errored seconds + threshold has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 6 } + +adsl2LinePerfLOSSThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MLoss, + adsl2LineAlarmConfProfileAtucThresh15MinLoss + } + STATUS current + DESCRIPTION + "This notification indicates that the LOS seconds + threshold has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 7 } + +adsl2LinePerfLOSSThreshAtur NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MLoss, + adsl2LineAlarmConfProfileAturThresh15MinLoss + } + STATUS current + DESCRIPTION + "This notification indicates that the LOS seconds + threshold has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 8 } + +adsl2LinePerfUASThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurr15MUas, + adsl2LineAlarmConfProfileAtucThresh15MinUas + } + STATUS current + DESCRIPTION + "This notification indicates that the unavailable seconds + threshold has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 9 } + +adsl2LinePerfUASThreshAtur NOTIFICATION-TYPE + OBJECTS + { + + + + adsl2PMLCurr15MUas, + adsl2LineAlarmConfProfileAturThresh15MinUas + } + STATUS current + DESCRIPTION + "This notification indicates that the unavailable seconds + threshold has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 10 } + +adsl2LinePerfCodingViolationsThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMChCurr15MCodingViolations, + adsl2ChAlarmConfProfileAtucThresh15MinCodingViolations + } + STATUS current + DESCRIPTION + "This notification indicates that the coding violations + threshold has been reached/exceeded for the referred ATU-C." + ::= { adsl2Notifications 11 } + +adsl2LinePerfCodingViolationsThreshAtur NOTIFICATION-TYPE + OBJECTS + { + adsl2PMChCurr15MCodingViolations, + adsl2ChAlarmConfProfileAturThresh15MinCodingViolations + } + STATUS current + DESCRIPTION + "This notification indicates that the coding violations + threshold has been reached/exceeded for the referred ATU-R." + ::= { adsl2Notifications 12 } + +adsl2LinePerfCorrectedThreshAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2PMChCurr15MCorrectedBlocks, + adsl2ChAlarmConfProfileAtucThresh15MinCorrected + } + STATUS current + DESCRIPTION + "This notification indicates that the corrected blocks + (FEC events) threshold has been reached/exceeded for the + referred ATU-C." + ::= { adsl2Notifications 13 } + +adsl2LinePerfCorrectedThreshAtur NOTIFICATION-TYPE + OBJECTS + + + + { + adsl2PMChCurr15MCorrectedBlocks, + adsl2ChAlarmConfProfileAturThresh15MinCorrected + } + STATUS current + DESCRIPTION + "This notification indicates that the corrected blocks + (FEC events) threshold has been reached/exceeded for the + referred ATU-R." + ::= { adsl2Notifications 14 } + +adsl2LinePerfFailedFullInitThresh NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurrInit15MFailedFullInits, + adsl2LineAlarmConfProfileThresh15MinFailedFullInt + } + STATUS current + DESCRIPTION + "This notification indicates that the failed full + initializations threshold has been reached/exceeded for the + referred ADSL/ADSL2 or ADSL2+ line." + ::= { adsl2Notifications 15 } + +adsl2LinePerfFailedShortInitThresh NOTIFICATION-TYPE + OBJECTS + { + adsl2PMLCurrInit15MFailedShortInits, + adsl2LineAlarmConfProfileThresh15MinFailedShrtInt + } + STATUS current + DESCRIPTION + "This notification indicates that the failed short + initializations threshold has been reached/exceeded for the + referred ADSL/ADSL2 or ADSL2+ line." + ::= { adsl2Notifications 16 } + +adsl2LineStatusChangeAtuc NOTIFICATION-TYPE + OBJECTS + { + adsl2LineStatusAtuc + } + STATUS current + DESCRIPTION + "This notification indicates that a status change is + detected for the referred ATU-C." + ::= { adsl2Notifications 17 } + + + + +adsl2LineStatusChangeAtur NOTIFICATION-TYPE + OBJECTS + { + adsl2LineStatusAtur + } + STATUS current + DESCRIPTION + "This notification indicates that a status change is + detected for the referred ATU-R." + ::= { adsl2Notifications 18 } + + + -- conformance information + + adsl2Groups OBJECT IDENTIFIER ::= { adsl2Conformance 1 } + adsl2Compliances OBJECT IDENTIFIER ::= { adsl2Conformance 2 } + + adsl2LineMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that + manage ADSL/ADSL2 or ADSL2+ interfaces." + MODULE -- this module + MANDATORY-GROUPS + { + adsl2LineGroup, + adsl2ChannelStatusGroup, + adsl2SCStatusGroup, + adsl2LineInventoryGroup, + adsl2LineConfTemplateGroup, + adsl2LineConfProfGroup, + adsl2LineConfProfModeSpecGroup, + adsl2ChConfProfileGroup, + adsl2LineAlarmConfTemplateGroup, + adsl2PMLineCurrGroup, + adsl2PMLineCurrInitGroup, + adsl2PMLineHist15MinGroup, + adsl2PMLineHist1DayGroup, + adsl2PMLineInitHist15MinGroup, + adsl2PMLineInitHist1DayGroup, + adsl2PMChCurrGroup, + adsl2PMChHist15MinGroup, + adsl2PMChHist1DGroup + } + + GROUP adsl2ChannelStatusAtmGroup + DESCRIPTION + "The group of status objects required when the data path + + + + is ATM." + + GROUP adsl2ChannelStatusPtmGroup + DESCRIPTION + "The group of status objects required when the data path + is PTM." + + GROUP adsl2LineConfProfRaGroup + DESCRIPTION + "The group of objects required for controlling the rate- + adaptive behavior of the line." + + GROUP adsl2LineConfProfMsgMinGroup + DESCRIPTION + "The group of objects required for controlling the rate + reserved for Overhead traffic." + + GROUP adsl2LineAlarmConfProfileGroup + DESCRIPTION + "The group of objects that define the alarm thresholds + on line-level PM counters." + + GROUP adsl2ChAlarmConfProfileGroup + DESCRIPTION + "The group of objects that define the alarm thresholds + on channel-level PM counters." + + GROUP adsl2ChConfProfileAtmGroup + DESCRIPTION + "The group of configuration objects required when the data + path is ATM." + + GROUP adsl2ChConfProfileMinResGroup + DESCRIPTION + "The group of configuration objects required for the + reserved data rate." + + GROUP adsl2PMLineCurrInitShortGroup + DESCRIPTION + "The group of PM counters for the current interval's + short initializations." + + GROUP adsl2PMLineInitHist15MinShortGroup + DESCRIPTION + "The group of PM counters for the previous 15-minute + interval's short initializations." + + GROUP adsl2PMLineInitHist1DayShortGroup + + + + DESCRIPTION + "The group of PM counters for the previous 24-hour + interval's short initializations." + + GROUP adsl2ScalarSCGroup + DESCRIPTION + "The group of objects that report the available memory + resources for DELT processes." + + GROUP adsl2ThreshNotificationGroup + DESCRIPTION + "The group of threshold crossing notifications." + + GROUP adsl2StatusChangeNotificationGroup + DESCRIPTION + "The group of status change notifications." + + ::= { adsl2Compliances 1 } + + -- units of conformance + + adsl2LineGroup OBJECT-GROUP + OBJECTS + { + adsl2LineCnfgTemplate, + adsl2LineAlarmCnfgTemplate, + adsl2LineCmndConfPmsf, + adsl2LineCmndConfLdsf, + adsl2LineCmndConfLdsfFailReason, + adsl2LineCmndAutomodeColdStart, + adsl2LineStatusAtuTransSys, + adsl2LineStatusPwrMngState, + adsl2LineStatusInitResult, + adsl2LineStatusLastStateDs, + adsl2LineStatusLastStateUs, + adsl2LineStatusAtur, + adsl2LineStatusAtuc, + adsl2LineStatusLnAttenDs, + adsl2LineStatusLnAttenUs, + adsl2LineStatusSigAttenDs, + adsl2LineStatusSigAttenUs, + adsl2LineStatusSnrMarginDs, + adsl2LineStatusSnrMarginUs, + adsl2LineStatusAttainableRateDs, + adsl2LineStatusAttainableRateUs, + adsl2LineStatusActPsdDs, + adsl2LineStatusActPsdUs, + adsl2LineStatusActAtpDs, + + + + adsl2LineStatusActAtpUs + } + STATUS current + DESCRIPTION + "The group of configuration, status, and commands objects + on the line level." + ::= { adsl2Groups 1 } + + adsl2ChannelStatusGroup OBJECT-GROUP + OBJECTS + { + adsl2ChStatusChannelNum, + adsl2ChStatusActDataRate, + adsl2ChStatusPrevDataRate, + adsl2ChStatusActDelay + } + STATUS current + DESCRIPTION + "The group of status objects on the channel level." + ::= { adsl2Groups 2 } + + adsl2ChannelStatusAtmGroup OBJECT-GROUP + OBJECTS + { + adsl2ChStatusAtmStatus + } + STATUS current + DESCRIPTION + "The group of status objects on the data path level + when it is ATM." + ::= { adsl2Groups 3 } + + adsl2ChannelStatusPtmGroup OBJECT-GROUP + OBJECTS + { + adsl2ChStatusPtmStatus + } + STATUS current + DESCRIPTION + "The group of status objects on the data path level + when it is PTM." + ::= { adsl2Groups 4 } + + adsl2SCStatusGroup OBJECT-GROUP + OBJECTS + { + adsl2SCStatusMtime, + adsl2SCStatusSnr, + + + + adsl2SCStatusBitsAlloc, + adsl2SCStatusGainAlloc, + adsl2SCStatusTssi, + adsl2SCStatusLinScale, + adsl2SCStatusLinReal, + adsl2SCStatusLinImg, + adsl2SCStatusLogMt, + adsl2SCStatusLog, + adsl2SCStatusQlnMt, + adsl2SCStatusQln, + adsl2SCStatusLnAtten, + adsl2SCStatusSigAtten, + adsl2SCStatusSnrMargin, + adsl2SCStatusAttainableRate, + adsl2SCStatusActAtp, + adsl2SCStatusRowStatus + } + STATUS current + DESCRIPTION + "The group of status objects on the sub-carrier level. + They are updated as a result of a DELT process." + ::= { adsl2Groups 5 } + + adsl2LineInventoryGroup OBJECT-GROUP + OBJECTS + { + adsl2LInvG994VendorId, + adsl2LInvSystemVendorId, + adsl2LInvVersionNumber, + adsl2LInvSerialNumber, + adsl2LInvSelfTestResult, + adsl2LInvTransmissionCapabilities + } + STATUS current + DESCRIPTION + "The group of inventory objects per XTU." + ::= { adsl2Groups 6 } + + adsl2LineConfTemplateGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfTempLineProfile, + adsl2LConfTempChan1ConfProfile, + adsl2LConfTempChan1RaRatioDs, + adsl2LConfTempChan1RaRatioUs, + adsl2LConfTempChan2ConfProfile, + adsl2LConfTempChan2RaRatioDs, + adsl2LConfTempChan2RaRatioUs, + + + + adsl2LConfTempChan3ConfProfile, + adsl2LConfTempChan3RaRatioDs, + adsl2LConfTempChan3RaRatioUs, + adsl2LConfTempChan4ConfProfile, + adsl2LConfTempChan4RaRatioDs, + adsl2LConfTempChan4RaRatioUs, + adsl2LConfTempRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line configuration template." + ::= { adsl2Groups 7 } + + adsl2LineConfProfGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfProfScMaskDs, + adsl2LConfProfScMaskUs, + adsl2LConfProfRfiBandsDs, + adsl2LConfProfRaModeDs, + adsl2LConfProfRaModeUs, + adsl2LConfProfTargetSnrmDs, + adsl2LConfProfTargetSnrmUs, + adsl2LConfProfMaxSnrmDs, + adsl2LConfProfMaxSnrmUs, + adsl2LConfProfMinSnrmDs, + adsl2LConfProfMinSnrmUs, + adsl2LConfProfAtuTransSysEna, + adsl2LConfProfPmMode, + adsl2LConfProfL0Time, + adsl2LConfProfL2Time, + adsl2LConfProfL2Atpr, + adsl2LConfProfL2Atprt, + adsl2LConfProfRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line configuration profile." + ::= { adsl2Groups 8 } + + adsl2LineConfProfRaGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfProfRaUsNrmDs, + adsl2LConfProfRaUsNrmUs, + adsl2LConfProfRaUsTimeDs, + adsl2LConfProfRaUsTimeUs, + adsl2LConfProfRaDsNrmsDs, + + + + adsl2LConfProfRaDsNrmsUs, + adsl2LConfProfRaDsTimeDs, + adsl2LConfProfRaDsTimeUs + } + STATUS current + DESCRIPTION + "The group of objects required for controlling the rate- + adaptive behavior of the line." + ::= { adsl2Groups 9 } + + adsl2LineConfProfMsgMinGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfProfMsgMinUs, + adsl2LConfProfMsgMinDs + } + STATUS current + DESCRIPTION + "The group of objects required for controlling the rate + reserved for Overhead traffic." + ::= { adsl2Groups 10 } + + adsl2LineConfProfModeSpecGroup OBJECT-GROUP + OBJECTS + { + adsl2LConfProfMaxNomPsdDs, + adsl2LConfProfMaxNomPsdUs, + adsl2LConfProfMaxNomAtpDs, + adsl2LConfProfMaxNomAtpUs, + adsl2LConfProfMaxAggRxPwrUs, + adsl2LConfProfPsdMaskDs, + adsl2LConfProfPsdMaskUs, + adsl2LConfProfPsdMaskSelectUs, + adsl2LConfProfModeSpecRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line configuration profile + that have an instance for each operation mode allowed." + ::= { adsl2Groups 11 } + + adsl2ChConfProfileGroup OBJECT-GROUP + OBJECTS + { + adsl2ChConfProfMinDataRateDs, + adsl2ChConfProfMinDataRateUs, + adsl2ChConfProfMaxDataRateDs, + adsl2ChConfProfMaxDataRateUs, + + + + adsl2ChConfProfMinDataRateLowPwrDs, + adsl2ChConfProfMaxDelayDs, + adsl2ChConfProfMaxDelayUs, + adsl2ChConfProfMinProtectionDs, + adsl2ChConfProfMinProtectionUs, + adsl2ChConfProfMaxBerDs, + adsl2ChConfProfMaxBerUs, + adsl2ChConfProfUsDataRateDs, + adsl2ChConfProfDsDataRateDs, + adsl2ChConfProfUsDataRateUs, + adsl2ChConfProfDsDataRateUs, + adsl2ChConfProfRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a channel configuration profile." + ::= { adsl2Groups 12 } + + adsl2ChConfProfileAtmGroup OBJECT-GROUP + OBJECTS + { + adsl2ChConfProfImaEnabled, + adsl2ChStatusAtmStatus + } + STATUS current + DESCRIPTION + "The group of configuration objects required when the data + path is ATM." + ::= { adsl2Groups 13 } + + adsl2ChConfProfileMinResGroup OBJECT-GROUP + OBJECTS + { + adsl2ChConfProfMinResDataRateDs, + adsl2ChConfProfMinResDataRateUs + } + STATUS current + DESCRIPTION + "The group of configuration objects required for the + reserved data rate." + ::= { adsl2Groups 14 } + + adsl2LineAlarmConfTemplateGroup OBJECT-GROUP + OBJECTS + { + adsl2LAlarmConfTempLineProfile, + adsl2LAlarmConfTempChan1ConfProfile, + adsl2LAlarmConfTempChan2ConfProfile, + + + + adsl2LAlarmConfTempChan3ConfProfile, + adsl2LAlarmConfTempChan4ConfProfile, + adsl2LAlarmConfTempRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line alarm + template." + ::= { adsl2Groups 15 } + + adsl2LineAlarmConfProfileGroup OBJECT-GROUP + OBJECTS + { + adsl2LineAlarmConfProfileAtucThresh15MinFecs, + adsl2LineAlarmConfProfileAtucThresh15MinEs, + adsl2LineAlarmConfProfileAtucThresh15MinSes, + adsl2LineAlarmConfProfileAtucThresh15MinLoss, + adsl2LineAlarmConfProfileAtucThresh15MinUas, + adsl2LineAlarmConfProfileAturThresh15MinFecs, + adsl2LineAlarmConfProfileAturThresh15MinEs, + adsl2LineAlarmConfProfileAturThresh15MinSes, + adsl2LineAlarmConfProfileAturThresh15MinLoss, + adsl2LineAlarmConfProfileAturThresh15MinUas, + adsl2LineAlarmConfProfileThresh15MinFailedFullInt, + adsl2LineAlarmConfProfileThresh15MinFailedShrtInt, + adsl2LineAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a line alarm profile." + ::= { adsl2Groups 16 } + + adsl2ChAlarmConfProfileGroup OBJECT-GROUP + OBJECTS + { + adsl2ChAlarmConfProfileAtucThresh15MinCodingViolations, + adsl2ChAlarmConfProfileAtucThresh15MinCorrected, + adsl2ChAlarmConfProfileAturThresh15MinCodingViolations, + adsl2ChAlarmConfProfileAturThresh15MinCorrected, + adsl2ChAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "The group of objects in a channel alarm profile." + ::= { adsl2Groups 17 } + + adsl2PMLineCurrGroup OBJECT-GROUP + OBJECTS + + + + { + adsl2PMLCurrValidIntervals, + adsl2PMLCurrInvalidIntervals, + adsl2PMLCurr15MTimeElapsed, + adsl2PMLCurr15MFecs, + adsl2PMLCurr15MEs, + adsl2PMLCurr15MSes, + adsl2PMLCurr15MLoss, + adsl2PMLCurr15MUas, + adsl2PMLCurr1DayValidIntervals, + adsl2PMLCurr1DayInvalidIntervals, + adsl2PMLCurr1DayTimeElapsed, + adsl2PMLCurr1DayFecs, + adsl2PMLCurr1DayEs, + adsl2PMLCurr1DaySes, + adsl2PMLCurr1DayLoss, + adsl2PMLCurr1DayUas + } + STATUS current + DESCRIPTION + "The group of objects that report the line-level + counters for current PM intervals." + ::= { adsl2Groups 18 } + + adsl2PMLineCurrInitGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLCurrInit15MTimeElapsed, + adsl2PMLCurrInit15MFullInits, + adsl2PMLCurrInit15MFailedFullInits, + adsl2PMLCurrInit1DayTimeElapsed, + adsl2PMLCurrInit1DayFullInits, + adsl2PMLCurrInit1DayFailedFullInits + } + STATUS current + DESCRIPTION + "The group of objects that report the full + initialization counters for current PM intervals." + ::= { adsl2Groups 19 } + + adsl2PMLineCurrInitShortGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLCurrInit15MShortInits, + adsl2PMLCurrInit15MFailedShortInits, + adsl2PMLCurrInit1DayShortInits, + adsl2PMLCurrInit1DayFailedShortInits + } + + + + STATUS current + DESCRIPTION + "The group of objects that report the short + initialization counters for current PM intervals." + ::= { adsl2Groups 20 } + + adsl2PMLineHist15MinGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHist15MMonitoredTime, + adsl2PMLHist15MFecs, + adsl2PMLHist15MEs, + adsl2PMLHist15MSes, + adsl2PMLHist15MLoss, + adsl2PMLHist15MUas, + adsl2PMLHist15MValidInterval + } + STATUS current + DESCRIPTION + "The group of line-level PM counters for the previous + 15-minute interval." + ::= { adsl2Groups 21 } + + adsl2PMLineHist1DayGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHist1DMonitoredTime, + adsl2PMLHist1DFecs, + adsl2PMLHist1DEs, + adsl2PMLHist1DSes, + adsl2PMLHist1DLoss, + adsl2PMLHist1DUas, + adsl2PMLHist1DValidInterval + } + STATUS current + DESCRIPTION + "The group of line-level PM counters for the previous + 24-hour interval." + ::= { adsl2Groups 22 } + + adsl2PMLineInitHist15MinGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHistInit15MMonitoredTime, + adsl2PMLHistInit15MFullInits, + adsl2PMLHistInit15MFailedFullInits, + adsl2PMLHistInit15MValidInterval + } + + + + STATUS current + DESCRIPTION + "The group of PM counters for the previous 15-minute + interval's full initializations." + ::= { adsl2Groups 23 } + + adsl2PMLineInitHist15MinShortGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHistInit15MShortInits, + adsl2PMLHistInit15MFailedShortInits + } + STATUS current + DESCRIPTION + "The group of PM counters for the previous 15-minute + interval's short initializations." + ::= { adsl2Groups 24 } + + adsl2PMLineInitHist1DayGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHistinit1DMonitoredTime, + adsl2PMLHistinit1DFullInits, + adsl2PMLHistinit1DFailedFullInits, + adsl2PMLHistinit1DValidInterval + } + STATUS current + DESCRIPTION + "The group of PM counters for the previous 24-hour + interval's full initializations." + ::= { adsl2Groups 25 } + + adsl2PMLineInitHist1DayShortGroup OBJECT-GROUP + OBJECTS + { + adsl2PMLHistinit1DShortInits, + adsl2PMLHistinit1DFailedShortInits + } + STATUS current + DESCRIPTION + "The group of PM counters for the previous 24-hour + interval's short initializations." + ::= { adsl2Groups 26 } + + adsl2PMChCurrGroup OBJECT-GROUP + OBJECTS + { + adsl2PMChCurrValidIntervals, + + + + adsl2PMChCurrInvalidIntervals, + adsl2PMChCurr15MTimeElapsed, + adsl2PMChCurr15MCodingViolations, + adsl2PMChCurr15MCorrectedBlocks, + adsl2PMChCurr1DayValidIntervals, + adsl2PMChCurr1DayInvalidIntervals, + adsl2PMChCurr1DayTimeElapsed, + adsl2PMChCurr1DayCodingViolations, + adsl2PMChCurr1DayCorrectedBlocks + } + STATUS current + DESCRIPTION + "The group of objects that report the channel-level + counters for current PM intervals." + ::= { adsl2Groups 27 } + + adsl2PMChHist15MinGroup OBJECT-GROUP + OBJECTS + { + adsl2PMChHist15MMonitoredTime, + adsl2PMChHist15MCodingViolations, + adsl2PMChHist15MCorrectedBlocks, + adsl2PMChHist15MValidInterval + } + STATUS current + DESCRIPTION + "The group of objects that report the channel-level + counters for previous 15-minute PM intervals." + ::= { adsl2Groups 28 } + + adsl2PMChHist1DGroup OBJECT-GROUP + OBJECTS + { + adsl2PMChHist1DMonitoredTime, + adsl2PMChHist1DCodingViolations, + adsl2PMChHist1DCorrectedBlocks, + adsl2PMChHist1DValidInterval + } + STATUS current + DESCRIPTION + "The group of objects that report the channel-level + counters for previous 24-hour PM intervals." + ::= { adsl2Groups 29 } + + adsl2ScalarSCGroup OBJECT-GROUP + OBJECTS + { + adsl2ScalarSCMaxInterfaces, + + + + adsl2ScalarSCAvailInterfaces + } + STATUS current + DESCRIPTION + "The group of objects that report the available memory + resources for DELT processes." + ::= { adsl2Groups 30 } + + adsl2ThreshNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS + { + adsl2LinePerfFECSThreshAtuc, + adsl2LinePerfFECSThreshAtur, + adsl2LinePerfESThreshAtuc, + adsl2LinePerfESThreshAtur, + adsl2LinePerfSESThreshAtuc, + adsl2LinePerfSESThreshAtur, + adsl2LinePerfLOSSThreshAtuc, + adsl2LinePerfLOSSThreshAtur, + adsl2LinePerfUASThreshAtuc, + adsl2LinePerfUASThreshAtur, + adsl2LinePerfCodingViolationsThreshAtuc, + adsl2LinePerfCodingViolationsThreshAtur, + adsl2LinePerfCorrectedThreshAtuc, + adsl2LinePerfCorrectedThreshAtur, + adsl2LinePerfFailedFullInitThresh, + adsl2LinePerfFailedShortInitThresh + } + STATUS current + DESCRIPTION + "This group supports notifications of significant conditions + associated with ADSL/ADSL2/ADSL2+ lines." + ::= { adsl2Groups 31 } + + adsl2StatusChangeNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS + { + adsl2LineStatusChangeAtuc, + adsl2LineStatusChangeAtur + } + STATUS current + DESCRIPTION + "This group supports notifications of threshold crossing + associated with ADSL/ADSL2/ADSL2+ lines." + ::= { adsl2Groups 32 } + +END diff --git a/mibs/ietf/ADSL2-LINE-TC-MIB b/mibs/ietf/ADSL2-LINE-TC-MIB new file mode 100644 index 0000000..dd132d8 --- /dev/null +++ b/mibs/ietf/ADSL2-LINE-TC-MIB @@ -0,0 +1,781 @@ +ADSL2-LINE-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + transmission + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +adsl2TCMIB MODULE-IDENTITY + LAST-UPDATED "200610040000Z" -- October 4th, 2006 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-732 + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair & Co-editor: + Menachem Dodge + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel. + Email: mbdodge@ieee.org + Phone: +972 3 926 8421 + + + + + + + Co-editor: Moti Morgenstern + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel. + Email: moti.morgenstern@ecitele.com + Phone: +972 3 926 6258 + + Co-editor: Scott Baillie + NEC Australia + Postal: 649-655 Springvale Road, + Mulgrave, Victoria 3170, + Australia. + Email: scott.baillie@nec.com.au + Phone: +61 3 9264 3986 + + Co-editor: Umberto Bonollo + NEC Australia + Postal: 649-655 Springvale Road, + Mulgrave, Victoria 3170, + Australia. + Email: umberto.bonollo@nec.com.au + Phone: +61 3 9264 3385 + " + DESCRIPTION + "This MIB Module provides Textual Conventions to be + used by the ADSL2-LINE-MIB module for the purpose of + managing ADSL, ADSL2, and ADSL2+ lines. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4706: see the RFC itself for + full legal notices." + + REVISION "200610040000Z" -- October 4th, 2006 + DESCRIPTION "Initial version, published as RFC 4706." + ::= { transmission 238 2 } -- adsl2MIB 2 + +------------------------------------------------ +-- Textual Conventions -- +------------------------------------------------ + +Adsl2Unit ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies a transceiver as being either an ATU-C or + an ATU-R. An ADSL line consists of two transceivers, an ATU-C + and an ATU-R. Attributes with this syntax reference the two + sides of a line. Specified as an INTEGER, the two values + + + + are: + + atuc(1) -- Central office ADSL terminal unit (ATU-C). + atur(2) -- Remote ADSL terminal unit (ATU-R)." + SYNTAX INTEGER { + atuc(1), + atur(2) + } + +Adsl2Direction ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the direction of a band as being + either upstream or downstream. Specified as an INTEGER, + the two values are: + upstream(1), and + downstream(2)." + SYNTAX INTEGER { + upstream(1), + downstream(2) + } + + + +Adsl2TransmissionModeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A set of ADSL2 line transmission modes, with one bit + per mode. The notes (F) and (L) denote Full-Rate + and Lite/splitterless, respectively: + Bit 00 : Regional Std. (ANSI T1.413) (F) + Bit 01 : Regional Std. (ETSI DTS/TM06006) (F) + Bit 02 : G.992.1 POTS non-overlapped (F) + Bit 03 : G.992.1 POTS overlapped (F) + Bit 04 : G.992.1 ISDN non-overlapped (F) + Bit 05 : G.992.1 ISDN overlapped (F) + Bit 06 : G.992.1 TCM-ISDN non-overlapped (F) + Bit 07 : G.992.1 TCM-ISDN overlapped (F) + Bit 08 : G.992.2 POTS non-overlapped (L) + Bit 09 : G.992.2 POTS overlapped (L) + Bit 10 : G.992.2 with TCM-ISDN non-overlapped (L) + Bit 11 : G.992.2 with TCM-ISDN overlapped (L) + Bit 12 : G.992.1 TCM-ISDN symmetric (F) -- not in G.997.1 + Bit 13-17: Reserved + Bit 18 : G.992.3 POTS non-overlapped (F) + Bit 19 : G.992.3 POTS overlapped (F) + Bit 20 : G.992.3 ISDN non-overlapped (F) + Bit 21 : G.992.3 ISDN overlapped (F) + + + + Bit 22-23: Reserved + Bit 24 : G.992.4 POTS non-overlapped (L) + Bit 25 : G.992.4 POTS overlapped (L) + Bit 26-27: Reserved + Bit 28 : G.992.3 Annex I All-Digital non-overlapped (F) + Bit 29 : G.992.3 Annex I All-Digital overlapped (F) + Bit 30 : G.992.3 Annex J All-Digital non-overlapped (F) + Bit 31 : G.992.3 Annex J All-Digital overlapped (F) + Bit 32 : G.992.4 Annex I All-Digital non-overlapped (L) + Bit 33 : G.992.4 Annex I All-Digital overlapped (L) + Bit 34 : G.992.3 Annex L POTS non-overlapped, mode 1, + wide U/S (F) + Bit 35 : G.992.3 Annex L POTS non-overlapped, mode 2, + narrow U/S(F) + Bit 36 : G.992.3 Annex L POTS overlapped, mode 3, + wide U/S (F) + Bit 37 : G.992.3 Annex L POTS overlapped, mode 4, + narrow U/S (F) + Bit 38 : G.992.3 Annex M POTS non-overlapped (F) + Bit 39 : G.992.3 Annex M POTS overlapped (F) + Bit 40 : G.992.5 POTS non-overlapped (F) + Bit 41 : G.992.5 POTS overlapped (F) + Bit 42 : G.992.5 ISDN non-overlapped (F) + Bit 43 : G.992.5 ISDN overlapped (F) + Bit 44-45: Reserved + Bit 46 : G.992.5 Annex I All-Digital non-overlapped (F) + Bit 47 : G.992.5 Annex I All-Digital overlapped (F) + Bit 48 : G.992.5 Annex J All-Digital non-overlapped (F) + Bit 49 : G.992.5 Annex J All-Digital overlapped (F) + Bit 50 : G.992.5 Annex M POTS non-overlapped (F) + Bit 51 : G.992.5 Annex M POTS overlapped (F) + Bit 52-55: Reserved" + SYNTAX BITS { + ansit1413(0), + etsi(1), + g9921PotsNonOverlapped(2), + g9921PotsOverlapped(3), + g9921IsdnNonOverlapped(4), + g9921isdnOverlapped(5), + g9921tcmIsdnNonOverlapped(6), + g9921tcmIsdnOverlapped(7), + g9922potsNonOverlapped(8), + g9922potsOverlapped(9), + g9922tcmIsdnNonOverlapped(10), + g9922tcmIsdnOverlapped(11), + g9921tcmIsdnSymmetric(12), + reserved1(13), + reserved2(14), + + + + reserved3(15), + reserved4(16), + reserved5(17), + g9923PotsNonOverlapped(18), + g9923PotsOverlapped(19), + g9923IsdnNonOverlapped(20), + g9923isdnOverlapped(21), + reserved6(22), + reserved7(23), + g9924potsNonOverlapped(24), + g9924potsOverlapped(25), + reserved8(26), + reserved9(27), + g9923AnnexIAllDigNonOverlapped(28), + g9923AnnexIAllDigOverlapped(29), + g9923AnnexJAllDigNonOverlapped(30), + g9923AnnexJAllDigOverlapped(31), + g9924AnnexIAllDigNonOverlapped(32), + g9924AnnexIAllDigOverlapped(33), + g9923AnnexLMode1NonOverlapped(34), + g9923AnnexLMode2NonOverlapped(35), + g9923AnnexLMode3Overlapped(36), + g9923AnnexLMode4Overlapped(37), + g9923AnnexMPotsNonOverlapped(38), + g9923AnnexMPotsOverlapped(39), + g9925PotsNonOverlapped(40), + g9925PotsOverlapped(41), + g9925IsdnNonOverlapped(42), + g9925isdnOverlapped(43), + reserved10(44), + reserved11(45), + g9925AnnexIAllDigNonOverlapped(46), + g9925AnnexIAllDigOverlapped(47), + g9925AnnexJAllDigNonOverlapped(48), + g9925AnnexJAllDigOverlapped(49), + g9925AnnexMPotsNonOverlapped(50), + g9925AnnexMPotsOverlapped(51), + reserved12(52), + reserved13(53), + reserved14(54), + reserved15(55) + } + +Adsl2RaMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the rate adaptation behavior for the line. + The three possible behaviors are: + + + + manual(1) - No Rate-Adaptation. The initialization + process attempts to synchronize to a + specified rate. + raInit(2) - Rate-Adaptation during initialization process + only, which attempts to synchronize to a rate + between minimum and maximum specified values. + dynamicRa(3) - Dynamic Rate-Adaptation during initialization + process as well as during SHOWTIME." + SYNTAX INTEGER { + manual(1), + raInit(2), + dynamicRa(3) + } + +Adsl2InitResult ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the result of a full initialization attempt; the + six possible result values are: + noFail(0) - Successful initialization. + configError(1) - Configuration failure. + configNotFeasible(2) - Configuration details not supported. + commFail(3) - Communication failure. + noPeerAtu(4) - Peer ATU not detected. + otherCause(5) - Other initialization failure reason. + + The values used are as defined in ITU-T G.997.1, + paragraph 7.5.1.3" + + SYNTAX INTEGER { + noFail(0), + configError(1), + configNotFeasible(2), + commFail(3), + noPeerAtu(4), + otherCause(5) + } + +Adsl2OperationModes ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ADSL2 management model specified includes an ADSL Mode + attribute that identifies an instance of ADSL Mode-Specific + PSD Configuration object in the ADSL Line Profile. The + following classes of ADSL operating mode are defined. + The notes (F) and (L) denote Full-Rate and Lite/splitterless + respectively: + + + + + +-------+--------------------------------------------------+ + | Value | ADSL operation mode description | + +-------+--------------------------------------------------+ + + 1 - The default/generic PSD configuration. Default + configuration will be used when no other matching + mode-specific configuration can be found. + 2 - ADSL family. The attributes included in the Mode- + Specific PSD Configuration are irrelevant for + ITU-T G.992.1 and G.992.2 ADSL modes. Hence, it + is possible to map those modes to this generic + class. + 3-7 - Unused. Reserved for future ITU-T specification. + 8 - G.992.3 POTS non-overlapped (F) + 9 - G.992.3 POTS overlapped (F) + 10 - G.992.3 ISDN non-overlapped (F) + 11 - G.992.3 ISDN overlapped (F) + 12-13 - Unused. Reserved for future ITU-T specification. + 14 - G.992.4 POTS non-overlapped (L) + 15 - G.992.4 POTS overlapped (L) + 16-17 - Unused. Reserved for future ITU-T specification. + 18 - G.992.3 Annex I All-Digital non-overlapped (F) + 19 - G.992.3 Annex I All-Digital overlapped (F) + 20 - G.992.3 Annex J All-Digital non-overlapped (F) + 21 - G.992.3 Annex J All-Digital overlapped (F) + 22 - G.992.4 Annex I All-Digital non-overlapped (L) + 23 - G.992.4 Annex I All-Digital overlapped (L) + 24 - G.992.3 Annex L POTS non-overlapped, mode 1, + wide U/S (F) + 25 - G.992.3 Annex L POTS non-overlapped, mode 2, + narrow U/S(F) + 26 - G.992.3 Annex L POTS overlapped, mode 3, + wide U/S (F) + 27 - G.992.3 Annex L POTS overlapped, mode 4, + narrow U/S (F) + 28 - G.992.3 Annex M POTS non-overlapped (F) + 29 - G.992.3 Annex M POTS overlapped (F) + 30 - G.992.5 POTS non-overlapped (F) + 31 - G.992.5 POTS overlapped (F) + 32 - G.992.5 ISDN non-overlapped (F) + 33 - G.992.5 ISDN overlapped (F) + 34-35 - Unused. Reserved for future ITU-T specification. + 36 - G.992.5 Annex I All-Digital non-overlapped (F) + 37 - G.992.5 Annex I All-Digital overlapped (F) + 38 - G.992.5 Annex J All-Digital non-overlapped (F) + 39 - G.992.5 Annex J All-Digital overlapped (F) + 40 - G.992.5 Annex M POTS non-overlapped (F) + 41 - G.992.5 Annex M POTS overlapped (F) + + + + " + SYNTAX INTEGER { + defMode (1), + adsl(2), + g9923PotsNonOverlapped(8), + g9923PotsOverlapped(9), + g9923IsdnNonOverlapped(10), + g9923isdnOverlapped(11), + g9924potsNonOverlapped(14), + g9924potsOverlapped(15), + g9923AnnexIAllDigNonOverlapped(18), + g9923AnnexIAllDigOverlapped(19), + g9923AnnexJAllDigNonOverlapped(20), + g9923AnnexJAllDigOverlapped(21), + g9924AnnexIAllDigNonOverlapped(22), + g9924AnnexIAllDigOverlapped(23), + g9923AnnexLMode1NonOverlapped(24), + g9923AnnexLMode2NonOverlapped(25), + g9923AnnexLMode3Overlapped(26), + g9923AnnexLMode4Overlapped(27), + g9923AnnexMPotsNonOverlapped(28), + g9923AnnexMPotsOverlapped(29), + g9925PotsNonOverlapped(30), + g9925PotsOverlapped(31), + g9925IsdnNonOverlapped(32), + g9925isdnOverlapped(33), + g9925AnnexIAllDigNonOverlapped(36), + g9925AnnexIAllDigOverlapped(37), + g9925AnnexJAllDigNonOverlapped(38), + g9925AnnexJAllDigOverlapped(39), + g9925AnnexMPotsNonOverlapped(40), + g9925AnnexMPotsOverlapped(41) + } + + +Adsl2PowerMngState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax uniquely identify each power + management state defined for the ADSL/ADSL2 or ADSL2+ link. + The possible values are: + l0(1) - L0 - Full power management state. + l1(2) - L1 - Low power management state (for G.992.2). + l2(3) - L2 - Low power management state (for G.992.3, + G.992.4, and G.992.5). + l3(4) - L3 - Idle power management state." + + SYNTAX INTEGER { + + + + l0(1), + l1(2), + l2(3), + l3(4) + } + +Adsl2ConfPmsForce ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that reference the desired power management state for the + ADSL/ADSL2 or ADSL2+ link: + l3toL0(0) - Perform a transition from L3 to L0 + (Full power management state). + l0toL2(2) - Perform a transition from L0 to L2 + (Low power management state). + l0orL2toL3(3) - Perform a transition into L3 (Idle + power management state). + + The values used are as defined in ITU-T G.997.1, + paragraph 7.3.1.1.3" + + SYNTAX INTEGER { + l3toL0(0), + l0toL2(2), + l0orL2toL3(3) + } + +Adsl2LConfProfPmMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that reference the power modes/states into which the ATU-C or + ATU-R may autonomously transit. + + It is a BITS structure that allows control of the following + transit options: + allowTransitionsToIdle(0) - XTU may autonomously transit + to idle (L3) state. + allowTransitionsToLowPower(1) - XTU may autonomously transit + to low-power (L2) state." + + SYNTAX BITS { + allowTransitionsToIdle(0), + allowTransitionsToLowPower(1) + } + +Adsl2LineLdsf ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that control the Loop Diagnostic mode for the ADSL/ADSL2 or + ADSL2+ link. The possible values are: + inhibit(0) - Inhibit Loop Diagnostic mode. + force(1) - Force/Initiate Loop Diagnostic mode. + + The values used are as defined in ITU-T G.997.1, + paragraph 7.3.1.1.8" + + SYNTAX INTEGER { + inhibit(0), + force(1) + } + +Adsl2LdsfResult ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Possible failure reasons associated with performing + a Dual Ended Loop Test (DELT) on a DSL line. + Possible values are: + none(1) - The default value in case LDSF was never + requested for the associated line. + success(2) - The recent command completed + successfully. + inProgress(3) - The Loop Diagnostics process is in + progress. + unsupported(4) - The NE or the line card doesn't support + LDSF. + cannotRun(5) - The NE cannot initiate the command, due + to a nonspecific reason. + aborted(6) - The Loop Diagnostics process aborted. + failed(7) - The Loop Diagnostics process failed. + illegalMode(8) - The NE cannot initiate the command, due + to the specific mode of the relevant + line. + adminUp(9) - The NE cannot initiate the command, as + the relevant line is administratively + 'Up'. + tableFull(10) - The NE cannot initiate the command, due + to reaching the maximum number of rows + in the results table. + noResources(11) - The NE cannot initiate the command, due + to lack of internal memory resources." + SYNTAX INTEGER { + none(1), + success(2), + + + + inProgress(3), + unsupported(4), + cannotRun(5), + aborted(6), + failed(7), + illegalMode(8), + adminUp(9), + tableFull(10), + noResources(11) + } + +Adsl2SymbolProtection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that reference the minimum-length impulse noise protection + (INP) in terms of number of symbols. The possible values are: + noProtection (i.e., INP not required), halfSymbol (i.e., INP + length is 1/2 symbol), and 1-16 symbols in steps of 1 symbol." + + SYNTAX INTEGER { + noProtection(1), + halfSymbol(2), + singleSymbol(3), + twoSymbols(4), + threeSymbols(5), + fourSymbols(6), + fiveSymbols(7), + sixSymbols(8), + sevenSymbols(9), + eightSymbols(10), + nineSymbols(11), + tenSymbols(12), + elevenSymbols(13), + twelveSymbols(14), + thirteeSymbols(15), + fourteenSymbols(16), + fifteenSymbols(17), + sixteenSymbols(18) + } +Adsl2MaxBer ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are configuration parameters + that reference the maximum Bit Error Rate (BER). + The possible values are: + + eminus3(1) - Maximum BER=E^-3 + + + + eminus5(2) - Maximum BER=E^-5 + eminus7(3) - Maximum BER=E^-7" + SYNTAX INTEGER { + eminus3(1), + eminus5(2), + eminus7(3) + } + +Adsl2ScMaskDs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each one of the 512 bits in this OCTET + STRING array represents the corresponding bin + in the downstream direction. A value of one + indicates that the bin is not in use." + SYNTAX OCTET STRING (SIZE(0..64)) + +Adsl2ScMaskUs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each one of the 64 bits in this OCTET + STRING array represents the corresponding bin + in the upstream direction. A value of one + indicates that the bin is not in use." + SYNTAX OCTET STRING (SIZE(0..8)) + +Adsl2RfiDs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Each one of the 512 bits in this OCTET + STRING array represents the corresponding bin + in the downstream direction. A value of one + indicates that the bin is part of a notch + filter." + SYNTAX OCTET STRING (SIZE(0..64)) + +Adsl2PsdMaskDs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is a structure that represents up to + 32 PSD Mask breakpoints. + Each breakpoint occupies 3 octets: The first + two octets hold the index of the sub-carrier + associated with the breakpoint. The third octet + holds the PSD reduction at the breakpoint from 0 + (0 dBm/Hz) to 255 (-127.5 dBm/Hz) using units of + 0.5 dBm/Hz." + SYNTAX OCTET STRING (SIZE(0..96)) + + + +Adsl2PsdMaskUs ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is a structure that represents up to + 4 PSD Mask breakpoints. + Each breakpoint occupies 3 octets: The first + two octets hold the index of the sub-carrier + associated with the breakpoint. The third octet + holds the PSD reduction at the breakpoint from 0 + (0 dBm/Hz) to 255 (-127.5 dBm/Hz) using units of + 0.5 dBm/Hz." + SYNTAX OCTET STRING (SIZE(0..12)) + +Adsl2Tssi ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is a structure that represents up to + 32 transmit spectrum shaping (TSSi) breakpoints. + Each breakpoint occupies 3 octets: The first + two octets hold the index of the sub-carrier + associated with the breakpoint. The third octet + holds the shaping parameter at the breakpoint. It + is a value from 0 to 127 (units of -0.5 dB). The + special value 127 indicates that the sub-carrier + is not transmitted." + SYNTAX OCTET STRING (SIZE(0..96)) + +Adsl2LastTransmittedState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This parameter represents the last successfully + transmitted initialization state in the last full + initialization performed on the line. States are + per the specific xDSL technology and are numbered + from 0 (if G.994.1 is used) or 1 (if G.994.1 is + not used) up to Showtime." + SYNTAX INTEGER { + atucG9941(0), + atucQuiet1(1), + atucComb1(2), + atucQuiet2(3), + atucComb2(4), + atucIcomb1(5), + atucLineprob(6), + atucQuiet3(7), + atucComb3(8), + atucIComb2(9), + atucMsgfmt(10), + + + + atucMsgpcb(11), + atucQuiet4(12), + atucReverb1(13), + atucTref1(14), + atucReverb2(15), + atucEct(16), + atucReverb3(17), + atucTref2(18), + atucReverb4(19), + atucSegue1(20), + atucMsg1(21), + atucReverb5(22), + atucSegue2(23), + atucMedley(24), + atucExchmarker(25), + atucMsg2(26), + atucReverb6(27), + atucSegue3(28), + atucParams(29), + atucReverb7(30), + atucSegue4(31), + atucShowtime(32), + -- + aturG9941(100), + aturQuiet1(101), + aturComb1(102), + aturQuiet2(103), + aturComb2(104), + aturIcomb1(105), + aturLineprob(106), + aturQuiet3(107), + aturComb3(108), + aturIcomb2(109), + aturMsgfmt(110), + aturMsgpcb(111), + aturReverb1(112), + aturQuiet4(113), + aturReverb2(114), + aturQuiet5(115), + aturReverb3(116), + aturEct(117), + aturReverb4(118), + aturSegue1(119), + aturReverb5(120), + aturSegue2(121), + aturMsg1(122), + aturMedley(123), + aturExchmarker(124), + + + + aturMsg2(125), + aturReverb6(126), + aturSegue3(127), + aturParams(128), + aturReverb7(129), + aturSegue4(130), + aturShowtime(131) + } + +Adsl2LineStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are status parameters + that reflect the failure status for a given endpoint of + ADSL/ADSL2 or ADSL2+ link. + + This BITS structure can report the following failures: + + noDefect(0) - This bit position positively reports + that no defect or failure exists. + lossOfFrame(1) - Loss of frame synchronization. + lossOfSignal(2) - Loss of signal. + lossOfPower(3) - Loss of power. Usually this failure may + be reported for ATU-Rs only. + initFailure(4) - Recent initialization process failed. + Never active on ATU-R." + + SYNTAX BITS { + noDefect(0), + lossOfFrame(1), + lossOfSignal(2), + lossOfPower(3), + initFailure(4) + } + +Adsl2ChAtmStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are status parameters that + reflect the failure status for Transmission Convergence (TC) + layer of a given ATM interface (data path over an ADSL/ADSL2 + or ADSL2+ link). + + This BITS structure can report the following failures: + noDefect(0) - This bit position positively + reports that no defect or failure + exists. + noCellDelineation(1) - The link was successfully + + + + initialized, but cell delineation + was never acquired on the + associated ATM data path. + lossOfCellDelineation(2) - Loss of cell delineation on the + associated ATM data path." + + SYNTAX BITS { + noDefect(0), + noCellDelineation(1), + lossOfCellDelineation(2) + } + +Adsl2ChPtmStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Attributes with this syntax are status parameters that + reflect the failure status for a given PTM interface (packet + data path over an ADSL/ADSL2 or ADSL2+ link). + + This BITS structure can report the following failures: + noDefect(0) - This bit position positively + reports that no defect or failure exists. + outOfSync(1) - Out of synchronization." + + SYNTAX BITS { + noDefect(0), + outOfSync(1) + } + +END diff --git a/mibs/ietf/AGENTX-MIB b/mibs/ietf/AGENTX-MIB new file mode 100644 index 0000000..0a1b91f --- /dev/null +++ b/mibs/ietf/AGENTX-MIB @@ -0,0 +1,547 @@ +AGENTX-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, mib-2 + FROM SNMPv2-SMI + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION, TimeStamp, TruthValue, TDomain + FROM SNMPv2-TC; +agentxMIB MODULE-IDENTITY + LAST-UPDATED "200001100000Z" -- Midnight 10 January 2000 + ORGANIZATION "AgentX Working Group" + CONTACT-INFO "WG-email: agentx@dorothy.bmc.com + Subscribe: agentx-request@dorothy.bmc.com + WG-email Archive: ftp://ftp.peer.com/pub/agentx/archives + FTP repository: ftp://ftp.peer.com/pub/agentx + http://www.ietf.org/html.charters/agentx-charter.html + + Chair: Bob Natale + ACE*COMM Corporation + Email: bnatale@acecomm.com + + WG editor: Mark Ellison + Ellison Software Consulting, Inc. + Email: ellison@world.std.com + + Co-author: Lauren Heintz + Cisco Systems, + EMail: lheintz@cisco.com + + Co-author: Smitha Gudur + Independent Consultant + Email: sgudur@hotmail.com + + + " + DESCRIPTION "This is the MIB module for the SNMP Agent Extensibility + Protocol (AgentX). This MIB module will be implemented by + the master agent. + " + + REVISION "200001100000Z" -- Midnight 10 January 2000 + DESCRIPTION + "Initial version published as RFC 2742." + + ::= { mib-2 74 } + + -- Textual Conventions + + AgentxTAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a transport service address. This is identical to + the TAddress textual convention (SNMPv2-SMI) except that + zero-length values are permitted. + " + SYNTAX OCTET STRING (SIZE (0..255)) + + -- Administrative assignments + + agentxObjects OBJECT IDENTIFIER ::= { agentxMIB 1 } + agentxGeneral OBJECT IDENTIFIER ::= { agentxObjects 1 } + agentxConnection OBJECT IDENTIFIER ::= { agentxObjects 2 } + agentxSession OBJECT IDENTIFIER ::= { agentxObjects 3 } + agentxRegistration OBJECT IDENTIFIER ::= { agentxObjects 4 } + + agentxDefaultTimeout OBJECT-TYPE + SYNTAX INTEGER (0..255) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The default length of time, in seconds, that the master + agent should allow to elapse after dispatching a message + to a session before it regards the subagent as not + responding. This is a system-wide value that may + override the timeout value associated with a particular + session (agentxSessionTimeout) or a particular registered + MIB region (agentxRegTimeout). If the associated value of + agentxSessionTimeout and agentxRegTimeout are zero, or + impractical in accordance with implementation-specific + procedure of the master agent, the value represented by + this object will be the effective timeout value for the + + + master agent to await a response to a dispatch from a + given subagent. + " + DEFVAL { 5 } + ::= { agentxGeneral 1 } + + agentxMasterAgentXVer OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The AgentX protocol version supported by this master agent. + The current protocol version is 1. Note that the master agent + must also allow interaction with earlier version subagents. + " + ::= { agentxGeneral 2 } + + -- The AgentX Subagent Connection Group + + agentxConnTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last row creation or deletion + occurred in the agentxConnectionTable. + " + ::= { agentxConnection 1 } + + agentxConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentxConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The agentxConnectionTable tracks all current AgentX transport + connections. There may be zero, one, or more AgentX sessions + carried on a given AgentX connection. + " + ::= { agentxConnection 2 } + + agentxConnectionEntry OBJECT-TYPE + SYNTAX AgentxConnectionEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "An agentxConnectionEntry contains information describing a + single AgentX transport connection. A connection may be + + + used to support zero or more AgentX sessions. An entry is + created when a new transport connection is established, + and is destroyed when the transport connection is terminated. + " + INDEX { agentxConnIndex } + ::= { agentxConnectionTable 1 } + + AgentxConnectionEntry ::= SEQUENCE { + agentxConnIndex Unsigned32, + agentxConnOpenTime TimeStamp, + agentxConnTransportDomain TDomain, + agentxConnTransportAddress AgentxTAddress } + + agentxConnIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "agentxConnIndex contains the value that uniquely identifies + an open transport connection used by this master agent + to provide AgentX service. Values of this index should + not be re-used. The value assigned to a given transport + connection is constant for the lifetime of that connection. + " + ::= { agentxConnectionEntry 1 } + + agentxConnOpenTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this connection was established + and, therefore, its value when this entry was added to the table. + " + ::= { agentxConnectionEntry 2 } + + agentxConnTransportDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport protocol in use for this connection to the + subagent. + " + ::= { agentxConnectionEntry 3 } + + agentxConnTransportAddress OBJECT-TYPE + SYNTAX AgentxTAddress + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport address of the remote (subagent) end of this + connection to the master agent. This object may be zero-length + for unix-domain sockets (and possibly other types of transport + addresses) since the subagent need not bind a filename to its + local socket. + " + ::= { agentxConnectionEntry 4 } + + -- The AgentX Subagent Session Group + + agentxSessionTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last row creation or deletion + occurred in the agentxSessionTable. + " + ::= { agentxSession 1 } + + agentxSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentxSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of AgentX subagent sessions currently in effect. + " + ::= { agentxSession 2 } + + agentxSessionEntry OBJECT-TYPE + SYNTAX AgentxSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single open session between the AgentX + master agent and a subagent is contained in this entry. An + entry is created when a new session is successfully established + and is destroyed either when the subagent transport connection + has terminated or when the subagent session is closed. + " + INDEX { agentxConnIndex, agentxSessionIndex } + ::= { agentxSessionTable 1 } + + AgentxSessionEntry ::= SEQUENCE { + agentxSessionIndex Unsigned32, + + + agentxSessionObjectID OBJECT IDENTIFIER, + agentxSessionDescr SnmpAdminString, + agentxSessionAdminStatus INTEGER, + agentxSessionOpenTime TimeStamp, + agentxSessionAgentXVer INTEGER, + agentxSessionTimeout INTEGER + } + + agentxSessionIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for the subagent session. It is the same as + h.sessionID defined in the agentx header. Note that if + a subagent's session with the master agent is closed for + any reason its index should not be re-used. + A value of zero(0) is specifically allowed in order + to be compatible with the definition of h.sessionId. + " + ::= { agentxSessionEntry 1 } + + agentxSessionObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is taken from the o.id field of the agentx-Open-PDU. + This attribute will report a value of '0.0' for subagents + not supporting the notion of an AgentX session object + identifier. + " + ::= { agentxSessionEntry 2 } + + agentxSessionDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the session. This is analogous to + sysDescr defined in the SNMPv2-MIB in RFC 1907 [19] and is + taken from the o.descr field of the agentx-Open-PDU. + This attribute will report a zero-length string value for + subagents not supporting the notion of a session description. + " + ::= { agentxSessionEntry 3 } + + agentxSessionAdminStatus OBJECT-TYPE + + + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative (desired) status of the session. Setting + the value to 'down(2)' closes the subagent session (with c.reason + set to 'reasonByManager'). + " + ::= { agentxSessionEntry 4 } + + agentxSessionOpenTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this session was opened and, + therefore, its value when this entry was added to the table. + " + ::= { agentxSessionEntry 5 } + + agentxSessionAgentXVer OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of the AgentX protocol supported by the + session. This must be less than or equal to the value of + agentxMasterAgentXVer. + " + ::= { agentxSessionEntry 6 } + + agentxSessionTimeout OBJECT-TYPE + SYNTAX INTEGER (0..255) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time, in seconds, that a master agent should + allow to elapse after dispatching a message to this session + before it regards the subagent as not responding. This value + is taken from the o.timeout field of the agentx-Open-PDU. + This is a session-specific value that may be overridden by + values associated with the specific registered MIB regions + (see agentxRegTimeout). A value of zero(0) indicates that + the master agent's default timeout value should be used + + + (see agentxDefaultTimeout). + " + ::= { agentxSessionEntry 7 } + + -- The AgentX Registration Group + + agentxRegistrationTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last row creation or deletion + occurred in the agentxRegistrationTable. + " + ::= { agentxRegistration 1 } + + agentxRegistrationTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentxRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of registered regions. + " + ::= { agentxRegistration 2 } + + agentxRegistrationEntry OBJECT-TYPE + SYNTAX AgentxRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains information for a single registered region. An + entry is created when a session successfully registers a + region and is destroyed for any of three reasons: this region + is unregistered by the session, the session is closed, + or the subagent connection is closed. + " + INDEX { agentxConnIndex, agentxSessionIndex, agentxRegIndex } + ::= { agentxRegistrationTable 1 } + + AgentxRegistrationEntry ::= SEQUENCE { + agentxRegIndex Unsigned32, + agentxRegContext OCTET STRING, + agentxRegStart OBJECT IDENTIFIER, + agentxRegRangeSubId Unsigned32, + agentxRegUpperBound Unsigned32, + agentxRegPriority Unsigned32, + agentxRegTimeout INTEGER, + agentxRegInstance TruthValue } + + + agentxRegIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "agentxRegIndex uniquely identifies a registration entry. + This value is constant for the lifetime of an entry. + " + ::= { agentxRegistrationEntry 1 } + + agentxRegContext OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The context in which the session supports the objects in this + region. A zero-length context indicates the default context. + " + ::= { agentxRegistrationEntry 2 } + + agentxRegStart OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The starting OBJECT IDENTIFIER of this registration entry. The + session identified by agentxSessionIndex implements objects + starting at this value (inclusive). Note that this value could + identify an object type, an object instance, or a partial object + instance. + " + ::= { agentxRegistrationEntry 3 } + + agentxRegRangeSubId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "agentxRegRangeSubId is used to specify the range. This is + taken from r.region_subid in the registration PDU. If the value + of this object is zero, no range is specified. If it is non-zero, + it identifies the `nth' sub-identifier in r.region for which + this entry's agentxRegUpperBound value is substituted in the + OID for purposes of defining the region's upper bound. + " + ::= { agentxRegistrationEntry 4 } + + agentxRegUpperBound OBJECT-TYPE + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "agentxRegUpperBound represents the upper-bound sub-identifier in + a registration. This is taken from the r.upper_bound in the + registration PDU. If agentxRegRangeSubid (r.region_subid) is + zero, this value is also zero and is not used to define an upper + bound for this registration. + " + ::= { agentxRegistrationEntry 5 } + + agentxRegPriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The registration priority. Lower values have higher priority. + This value is taken from r.priority in the register PDU. + Sessions should use the value of 127 for r.priority if a + default value is desired. + " + ::= { agentxRegistrationEntry 6 } + + agentxRegTimeout OBJECT-TYPE + SYNTAX INTEGER (0..255) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timeout value, in seconds, for responses to + requests associated with this registered MIB region. + A value of zero(0) indicates the default value (indicated + by by agentxSessionTimeout or agentxDefaultTimeout) is to + be used. This value is taken from the r.timeout field of + the agentx-Register-PDU. + " + ::= { agentxRegistrationEntry 7 } + + agentxRegInstance OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of agentxRegInstance is `true' for + registrations for which the INSTANCE_REGISTRATION + was set, and is `false' for all other registrations. + " + + + ::= { agentxRegistrationEntry 8 } + + -- Conformance Statements for AgentX + + agentxConformance OBJECT IDENTIFIER ::= { agentxMIB 2 } + agentxMIBGroups OBJECT IDENTIFIER ::= { agentxConformance 1 } + agentxMIBCompliances OBJECT IDENTIFIER ::= { agentxConformance 2 } + + -- Compliance Statements for AgentX + + agentxMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement the + AgentX protocol. Note that a compliant agent can implement all + objects in this MIB module as read-only. + " + MODULE -- this module + MANDATORY-GROUPS { agentxMIBGroup } + + OBJECT agentxSessionAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + " + ::= { agentxMIBCompliances 1 } + + agentxMIBGroup OBJECT-GROUP + OBJECTS { + agentxDefaultTimeout, + agentxMasterAgentXVer, + agentxConnTableLastChange, + agentxConnOpenTime, + agentxConnTransportDomain, + agentxConnTransportAddress, + agentxSessionTableLastChange, + agentxSessionTimeout, + agentxSessionObjectID, + agentxSessionDescr, + agentxSessionAdminStatus, + agentxSessionOpenTime, + agentxSessionAgentXVer, + agentxRegistrationTableLastChange, + agentxRegContext, + agentxRegStart, + agentxRegRangeSubId, + agentxRegUpperBound, + agentxRegPriority, + + + agentxRegTimeout, + agentxRegInstance + } + STATUS current + DESCRIPTION + "All accessible objects in the AgentX MIB. + " + ::= { agentxMIBGroups 1 } + + END diff --git a/mibs/ietf/AGGREGATE-MIB b/mibs/ietf/AGGREGATE-MIB new file mode 100644 index 0000000..9e21d50 --- /dev/null +++ b/mibs/ietf/AGGREGATE-MIB @@ -0,0 +1,506 @@ + AGGREGATE-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, experimental, Unsigned32, + OBJECT-TYPE, Opaque + FROM SNMPv2-SMI + OwnerString + FROM RMON-MIB + RowStatus, StorageType, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + aggrMIB MODULE-IDENTITY + LAST-UPDATED "200604270000Z" -- 27th April, 2006 + ORGANIZATION "Cyber Solutions Inc. NetMan Working Group" + CONTACT-INFO + " Glenn Mansfield Keeni + Postal: Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, Japan 989-3204. + Tel: +81-22-303-4012 + Fax: +81-22-303-4015 + E-mail: glenn@cysols.com + + Support Group E-mail: mibsupport@cysols.com" + + + + DESCRIPTION + "The MIB for servicing aggregate objects. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4498; + see the RFC itself for full legal notices. + " + REVISION "200604270000Z" -- 27th April, 2006 + DESCRIPTION "Initial version, published as RFC 4498." + ::= { experimental 123 } + + AggrMOErrorStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the error status of the + constituent MO instances. The error status for a + constituent MO instance is given in terms of two elements: + o The moIndex, which indicates the position of the MO + instance (starting at 1) in the value of the aggregated + MO instance. + o The moError, which indicates the error that was + encountered in fetching that MO instance. + The syntax in ASN.1 Notation will be + ErrorStatus :: = SEQUENCE { + moIndex Integer32, + moError SnmpPduErrorStatus + } + AggrMOErrorStatus ::= SEQUENCE OF { + ErrorStatus + } + Note1: The command responder will supply values for all + constituent MO instances, in the same order in + which the MO instances are specified for the AgMO. + If an error is encountered for an MO instance, then + the corresponding value will have an ASN.1 value NULL, + and an error will be flagged in the corresponding + AggrMOErrorStatus object. + Only MOs for which errors have been encountered will + have their corresponding moIndex and moError values + set. + Note2: The error code for the component MO instances will be + in accordance with the SnmpPduErrorStatus TC defined + in the DISMAN-SCHEDULE-MIB [RFC3231]. + Note3: The command generator will need to know + constituent MO instances and their order to correctly + interpret AggrMOErrorStatus. + " + SYNTAX Opaque (SIZE (0..1024)) + + + + AggrMOValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the aggregate + MOs. It will have a format dependent on the constituent + MOs, a sequence of values. The syntax in ASN.1 Notation will + be + MOValue :: = SEQUENCE { + value ObjectSyntax + } + where 'value' is the value of a constituent MO instance. + AggrMOValue :: = SEQUENCE OF { + MOValue + } + + Note: The command generator will need to know the + constituent MO instances and their order to + correctly interpret AggrMOValue." + SYNTAX Opaque (SIZE (0..1024)) + + AggrMOCompressedValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the compressed + aggregate MOs." + SYNTAX OCTET STRING (SIZE (0..1024)) + +-- +-- The aggregation control table +-- There will be a row for each aggregate MO +-- + aggrCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF AggrCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that controls the aggregation of the MOs." + ::= {aggrMIB 1} + + aggrCtlEntry OBJECT-TYPE + SYNTAX AggrCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of the control table that defines one aggregated + MO. + + + + + + Entries in this table are required to survive a reboot + of the managed entity depending on the value of the + corresponding aggrCtlEntryStorageType instance. + " + INDEX {aggrCtlEntryID } + ::= {aggrCtlTable 1 } + + AggrCtlEntry ::= SEQUENCE { + aggrCtlEntryID + SnmpAdminString, + aggrCtlMOIndex + Unsigned32, + aggrCtlMODescr + SnmpAdminString, + aggrCtlCompressionAlgorithm + INTEGER, + aggrCtlEntryOwner + OwnerString, + aggrCtlEntryStorageType + StorageType, + aggrCtlEntryStatus + RowStatus + } + + aggrCtlEntryID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally unique, administratively assigned name + for this aggregated MO. It is used as an index to + uniquely identify this row in the table." + ::= { aggrCtlEntry 1 } + + aggrCtlMOIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to a group of MOs identified by aggrMOEntryID + in the aggrMOTable. This is the group of MOs that will + be aggregated." + ::= { aggrCtlEntry 2 } + + aggrCtlMODescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..64)) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "A textual description of the object that is + being aggregated." + ::= {aggrCtlEntry 3} + + -- only one compression algorithm is defined as of now. + aggrCtlCompressionAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + none (1), + deflate (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The compression algorithm that will be used by + the agent to compress the value of the aggregated + object. + The deflate algorithm and corresponding data format + specification is described in RFC 1951. It is + compatible with the widely used gzip utility. + " + REFERENCE + "RFC1951 : DEFLATE Compressed Data Format Specification + version 1.3 + " + DEFVAL { none } + ::= {aggrCtlEntry 4} + + aggrCtlEntryOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that created this entry." + ::= {aggrCtlEntry 5} + + aggrCtlEntryStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether the parameters defined in + this row are kept in volatile storage and lost upon + reboot or backed up by non-volatile (permanent) + storage. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + + + + " + ::= {aggrCtlEntry 6} + + aggrCtlEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + Objects in a row can be modified only when the value of + this object in the corresponding conceptual row is not + 'active'. + Thus, to modify one or more of the objects in this + conceptual row, + a. change the row status to 'notInService', + b. change the values of the row, and + c. change the row status to 'active'. + The aggrCtlEntryStatus may be changed to 'active' if + all the MOs in the conceptual row have been assigned + valid values. + " + ::= {aggrCtlEntry 7} + +-- +-- The Table of primary(simple) MOs +-- + aggrMOTable OBJECT-TYPE + SYNTAX SEQUENCE OF AggrMOEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of primary(simple) MOs that will be aggregated. + Each row in this table represents a MO that will be + aggregated. The aggrMOEntryID index is used to identify + the group of MOs that will be aggregated. The + aggrMOIndex instance in the corresponding row of the + aggrCtlTable will have a value equal to the value of + aggrMOEntryID. The aggrMOEntryMOID index is used to + identify an MO in the group. + " + ::= {aggrMIB 2} + + aggrMOEntry OBJECT-TYPE + SYNTAX AggrMOEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A row of the table that specifies one MO. + Entries in this table are required to survive a reboot + of the managed entity depending on the value of the + corresponding aggrMOEntryStorageType instance. + " + INDEX { aggrMOEntryID, aggrMOEntryMOID } + ::= {aggrMOTable 1 } + + AggrMOEntry ::= SEQUENCE { + aggrMOEntryID + Unsigned32, + aggrMOEntryMOID + Unsigned32, + aggrMOInstance + OBJECT IDENTIFIER, + aggrMODescr + SnmpAdminString, + aggrMOEntryStorageType + StorageType, + aggrMOEntryStatus + RowStatus + } + + aggrMOEntryID OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index uniquely identifying a group of MOs + that will be aggregated." + ::= { aggrMOEntry 1 } + + aggrMOEntryMOID OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index to uniquely identify an MO instance in the + group of MO instances that will be aggregated." + ::= { aggrMOEntry 2 } + + aggrMOInstance OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OID of the MO instance, the value of which will + be sampled by the agent." + + + + ::= { aggrMOEntry 3 } + + aggrMODescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual description of the object that will + be aggregated." + ::= {aggrMOEntry 4} + + aggrMOEntryStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether the parameters defined in + this row are kept in volatile storage and lost upon + reboot or backed up by non-volatile (permanent) + storage. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + ::= {aggrMOEntry 5} + + aggrMOEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + Objects in a row can be modified only when the value of + this object in the corresponding conceptual row is not + 'active'. + Thus, to modify one or more of the objects in this + conceptual row, + a. change the row status to 'notInService', + b. change the values of the row, and + c. change the row status to 'active'. + The aggrMOEntryStatus may be changed to 'active' iff + all the MOs in the conceptual row have been assigned + valid values. + " + ::= {aggrMOEntry 6} + + -- + -- aggrDataTable: The Table of Data. Each row represents a Data + + + + -- set. aggrCtlEntryID is the key to the table. + -- It is used to identify instances of the + -- aggregated MO that are present in the table. + -- + aggrDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF AggrDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row of this table contains information + about an aggregateMO indexed by aggrCtlEntryID." + ::= {aggrMIB 3} + + aggrDataEntry OBJECT-TYPE + SYNTAX AggrDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information pertaining to + an aggregate MO." + INDEX {aggrCtlEntryID} + ::= {aggrDataTable 1 } + + AggrDataEntry ::= SEQUENCE { + aggrDataRecord + AggrMOValue, + aggrDataRecordCompressed + AggrMOCompressedValue, + aggrDataErrorRecord + AggrMOErrorStatus + } + + aggrDataRecord OBJECT-TYPE + SYNTAX AggrMOValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The snapshot value of the aggregated MO. + Note that the access privileges to this object will be + governed by the access privileges of the component + objects. Thus, an entity attempting to access an + instance of this MO MUST have access rights to all the + component instance objects and this MO instance. + " + ::= { aggrDataEntry 1} + + aggrDataRecordCompressed OBJECT-TYPE + SYNTAX AggrMOCompressedValue + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The compressed value of the aggregated MO. + The compression algorithm will depend on the + aggrCtlCompressionAlgorithm given in the corresponding + aggrCtlEntry. If the value of the corresponding + aggrCtlCompressionAlgorithm is (1) 'none', then the value + of all instances of this object will be a string of zero + length. + Note that the access privileges to this object will be + governed by the access privileges of the component + objects. Thus, an entity attempting to access an instance + of this MO MUST have access rights to all the component + instance objects and this MO instance. + " + ::= { aggrDataEntry 2} + + aggrDataErrorRecord OBJECT-TYPE + SYNTAX AggrMOErrorStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The error status corresponding to the MO instances + aggregated in aggrDataRecord (and + aggrDataRecordCompressed)." + ::= { aggrDataEntry 3} + + -- Conformance information + aggrConformance OBJECT IDENTIFIER ::= { aggrMIB 4 } + aggrGroups OBJECT IDENTIFIER ::= { aggrConformance 1 } + aggrCompliances OBJECT IDENTIFIER ::= { aggrConformance 2 } + + -- Compliance statements + aggrMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the AGGREGATE-MIB." + MODULE -- this module + MANDATORY-GROUPS { aggrMibBasicGroup } + ::= { aggrCompliances 1 } + + -- Units of conformance + aggrMibBasicGroup OBJECT-GROUP + OBJECTS { + aggrCtlMOIndex, + aggrCtlMODescr, + + + + aggrCtlCompressionAlgorithm, + aggrCtlEntryOwner, + aggrCtlEntryStorageType, + aggrCtlEntryStatus, + aggrMOInstance, + aggrMODescr, + aggrMOEntryStorageType, + aggrMOEntryStatus, + aggrDataRecord, + aggrDataRecordCompressed, + aggrDataErrorRecord + } + STATUS current + DESCRIPTION + "A collection of objects for aggregation of MOs." + ::= { aggrGroups 1 } + END diff --git a/mibs/ietf/ALARM-MIB b/mibs/ietf/ALARM-MIB new file mode 100644 index 0000000..1fb6827 --- /dev/null +++ b/mibs/ietf/ALARM-MIB @@ -0,0 +1,1191 @@ +ALARM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, Gauge32, + TimeTicks, Counter32, Counter64, + IpAddress, Opaque, mib-2, + zeroDotZero + FROM SNMPv2-SMI -- [RFC2578] + DateAndTime, + RowStatus, RowPointer, + TEXTUAL-CONVENTION + FROM SNMPv2-TC -- [RFC2579] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB -- [RFC3291] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ZeroBasedCounter32 + FROM RMON2-MIB; -- [RFC2021] + + alarmMIB MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@ietf.org + Subscribe: disman-request@ietf.org + http://www.ietf.org/html.charters/disman-charter.html + + + + Chair: Randy Presuhn + randy_presuhn@mindspring.com + + Editors: Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortelnetworks.com + + Dan Romascanu + Avaya + Atidim Technology Park, Bldg. #3 + Tel Aviv, 61131 + Israel + Tel: +972-3-645-8414 + Email: dromasca@avaya.com" + DESCRIPTION + "The MIB module describes a generic solution + to model alarms and to store the current list + of active alarms. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3877." + ::= { mib-2 118 } + +alarmObjects OBJECT IDENTIFIER ::= { alarmMIB 1 } + +alarmNotifications OBJECT IDENTIFIER ::= { alarmMIB 0 } + +alarmModel OBJECT IDENTIFIER ::= { alarmObjects 1 } + +alarmActive OBJECT IDENTIFIER ::= { alarmObjects 2 } + +alarmClear OBJECT IDENTIFIER ::= { alarmObjects 3 } + +-- Textual Conventions + + -- ResourceId is intended to be a general textual convention + -- that can be used outside of the set of MIBs related to + -- Alarm Management. + + + + +ResourceId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique identifier for this resource. + + The type of the resource can be determined by looking + at the OID that describes the resource. + + Resources must be identified in a consistent manner. + For example, if this resource is an interface, this + object MUST point to an ifIndex and if this resource + is a physical entity [RFC2737], then this MUST point + to an entPhysicalDescr, given that entPhysicalIndex + is not accessible. In general, the value is the + name of the instance of the first accessible columnar + object in the conceptual row of a table that is + meaningful for this resource type, which SHOULD + be defined in an IETF standard MIB." + SYNTAX OBJECT IDENTIFIER + + -- LocalSnmpEngineOrZeroLenStr is intended to be a general + -- textual convention that can be used outside of the set of + -- MIBs related to Alarm Management. + + LocalSnmpEngineOrZeroLenStr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An SNMP Engine ID or a zero-length string. The + instantiation of this textual convention will provide + guidance on when this will be an SNMP Engine ID and + when it will be a zero lengths string" + SYNTAX OCTET STRING (SIZE(0 | 5..32)) + +-- Alarm Model + +alarmModelLastChanged OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + creation, deletion or modification of an entry in + the alarmModelTable. + + If the number and content of entries has been unchanged + since the last re-initialization of the local network + management subsystem, then the value of this object + MUST be zero." + + + + ::= { alarmModel 1 } + +alarmModelTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmModelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about possible alarms on the system, + and how they have been modelled." + ::= { alarmModel 2 } + +alarmModelEntry OBJECT-TYPE + SYNTAX AlarmModelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table for each possible alarm state. + This table MUST be persistent across system reboots." + INDEX { alarmListName, alarmModelIndex, alarmModelState } + ::= { alarmModelTable 1 } + +AlarmModelEntry ::= SEQUENCE { + alarmModelIndex Unsigned32, + alarmModelState Unsigned32, + alarmModelNotificationId OBJECT IDENTIFIER, + alarmModelVarbindIndex Unsigned32, + alarmModelVarbindValue Integer32, + alarmModelDescription SnmpAdminString, + alarmModelSpecificPointer RowPointer, + alarmModelVarbindSubtree OBJECT IDENTIFIER, + alarmModelResourcePrefix OBJECT IDENTIFIER, + alarmModelRowStatus RowStatus + } + +alarmModelIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer that acts as an alarm Id + to uniquely identify each alarm + within the named alarm list. " + ::= { alarmModelEntry 1 } + +alarmModelState OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A value of 1 MUST indicate a clear alarm state. + The value of this object MUST be less than the + alarmModelState of more severe alarm states for + this alarm. The value of this object MUST be more + than the alarmModelState of less severe alarm states + for this alarm." + ::= { alarmModelEntry 2 } + +alarmModelNotificationId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NOTIFICATION-TYPE object identifier of this alarm + state transition. If there is no notification associated + with this alarm state, the value of this object MUST be + '0.0'" + DEFVAL { zeroDotZero } + ::= { alarmModelEntry 3 } + +alarmModelVarbindIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index into the varbind listing of the notification + indicated by alarmModelNotificationId which helps + signal that the given alarm has changed state. + If there is no applicable varbind, the value of this + object MUST be zero. + + Note that the value of alarmModelVarbindIndex acknowledges + the existence of the first two obligatory varbinds in + the InformRequest-PDU and SNMPv2-Trap-PDU (sysUpTime.0 + and snmpTrapOID.0). That is, a value of 2 refers to + the snmpTrapOID.0. + + If the incoming notification is instead an SNMPv1 Trap-PDU, + then an appropriate value for sysUpTime.0 or snmpTrapOID.0 + shall be determined by using the rules in section 3.1 of + [RFC3584]" + DEFVAL { 0 } + ::= { alarmModelEntry 4 } + +alarmModelVarbindValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The value that the varbind indicated by + alarmModelVarbindIndex takes to indicate + that the alarm has entered this state. + + If alarmModelVarbindIndex has a value of 0, so + MUST alarmModelVarbindValue. + " + DEFVAL { 0 } + ::= { alarmModelEntry 5 } + +alarmModelDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A brief description of this alarm and state suitable + to display to operators." + DEFVAL { "" } + ::= { alarmModelEntry 6 } + +alarmModelSpecificPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If no additional, model-specific Alarm MIB is supported by + the system the value of this object is `0.0'and attempts + to set it to any other value MUST be rejected appropriately. + + When a model-specific Alarm MIB is supported, this object + MUST refer to the first accessible object in a corresponding + row of the model definition in one of these model-specific + MIB and attempts to set this object to { 0 0 } or any other + value MUST be rejected appropriately." + DEFVAL { zeroDotZero } + ::= { alarmModelEntry 7 } + + alarmModelVarbindSubtree OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name portion of each VarBind in the notification, + in order, is compared to the value of this object. + If the name is equal to or a subtree of the value + of this object, for purposes of computing the value + + + + of AlarmActiveResourceID the 'prefix' will be the + matching portion, and the 'indexes' will be any + remainder. The examination of varbinds ends with + the first match. If the value of this object is 0.0, + then the first varbind, or in the case of v2, the + first varbind after the timestamp and the trap + OID, will always be matched. + " + DEFVAL { zeroDotZero } + ::= { alarmModelEntry 8 } + + alarmModelResourcePrefix OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of AlarmActiveResourceId is computed + by appending any indexes extracted in accordance + with the description of alarmModelVarbindSubtree + onto the value of this object. If this object's + value is 0.0, then the 'prefix' extracted is used + instead. + " + DEFVAL { zeroDotZero } + ::= { alarmModelEntry 9 } + +alarmModelRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for creating and deleting entries. Entries may be + modified while active. Alarms whose alarmModelRowStatus is + not active will not appear in either the alarmActiveTable + or the alarmClearTable. Setting this object to notInService + cannot be used as an alarm suppression mechanism. Entries + that are notInService will disappear as described in RFC2579. + + This row can not be modified while it is being + referenced by a value of alarmActiveModelPointer. In these + cases, an error of `inconsistentValue' will be returned to + the manager. + + This entry may be deleted while it is being + referenced by a value of alarmActiveModelPointer. This results + in the deletion of this entry and entries in the active alarms + referencing this entry via an alarmActiveModelPointer. + + + + + As all read-create objects in this table have a DEFVAL clause, + there is no requirement that any object be explicitly set + before this row can become active. Note that a row consisting + only of default values is not very meaningful." + ::= { alarmModelEntry 10 } + +-- Active Alarm Table -- + +alarmActiveLastChanged OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + creation or deletion of an entry in the alarmActiveTable. + If the number of entries has been unchanged since the + last re-initialization of the local network management + subsystem, then this object contains a zero value." + ::= { alarmActive 1 } + + alarmActiveOverflow OBJECT-TYPE + SYNTAX Counter32 + UNITS "active alarms" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of active alarms that have not been put into + the alarmActiveTable since system restart as a result + of extreme resource constraints." + ::= { alarmActive 5 } + +alarmActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Active Alarms entries." + ::= { alarmActive 2 } + +alarmActiveEntry OBJECT-TYPE + SYNTAX AlarmActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table when alarms are raised. They + are removed when the alarm is cleared. + + If under extreme resource constraint the system is unable to + + + + add any more entries into this table, then the + alarmActiveOverflow statistic will be increased by one." + INDEX { alarmListName, alarmActiveDateAndTime, + alarmActiveIndex } + ::= { alarmActiveTable 1 } + +AlarmActiveEntry ::= SEQUENCE { + alarmListName SnmpAdminString, + alarmActiveDateAndTime DateAndTime, + alarmActiveIndex Unsigned32, + alarmActiveEngineID LocalSnmpEngineOrZeroLenStr, + alarmActiveEngineAddressType InetAddressType, + alarmActiveEngineAddress InetAddress, + alarmActiveContextName SnmpAdminString, + alarmActiveVariables Unsigned32, + alarmActiveNotificationID OBJECT IDENTIFIER, + alarmActiveResourceId ResourceId, + alarmActiveDescription SnmpAdminString, + alarmActiveLogPointer RowPointer, + alarmActiveModelPointer RowPointer, + alarmActiveSpecificPointer RowPointer } + +alarmListName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the list of alarms. This SHOULD be the same as + nlmLogName if the Notification Log MIB [RFC3014] is supported. + This SHOULD be the same as, or contain as a prefix, the + applicable snmpNotifyFilterProfileName if the + SNMP-NOTIFICATION-MIB DEFINITIONS [RFC3413] is supported. + + An implementation may allow multiple named alarm lists, up to + some implementation-specific limit (which may be none). A + zero-length list name is reserved for creation and deletion + by the managed system, and MUST be used as the default log + name by systems that do not support named alarm lists." + ::= { alarmActiveEntry 1 } + +alarmActiveDateAndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local date and time when the error occurred. + + This object facilitates retrieving all instances of + + + + alarms that have been raised or have changed state + since a given point in time. + + Implementations MUST include the offset from UTC, + if available. Implementation in environments in which + the UTC offset is not available is NOT RECOMMENDED." + ::= { alarmActiveEntry 2 } + +alarmActiveIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A strictly monotonically increasing integer which + acts as the index of entries within the named alarm + list. It wraps back to 1 after it reaches its + maximum value." + ::= { alarmActiveEntry 3 } + +alarmActiveEngineID OBJECT-TYPE + SYNTAX LocalSnmpEngineOrZeroLenStr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identification of the SNMP engine at which the alarm + originated. If the alarm is from an SNMPv1 system this + object is a zero length string." + ::= { alarmActiveEntry 4 } + +alarmActiveEngineAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates what type of address is stored in + the alarmActiveEngineAddress object - IPv4, IPv6, DNS, etc." + ::= { alarmActiveEntry 5 } + +alarmActiveEngineAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the SNMP engine on which the alarm is + occurring. + + This object MUST always be instantiated, even if the list + can contain alarms from only one engine." + + + + ::= { alarmActiveEntry 6 } + +alarmActiveContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the SNMP MIB context from which the alarm came. + For SNMPv1 alarms this is the community string from the Trap. + Note that care MUST be taken when selecting community + strings to ensure that these can be represented as a + well-formed SnmpAdminString. Community or Context names + that are not well-formed SnmpAdminStrings will be mapped + to zero length strings. + + If the alarm's source SNMP engine is known not to support + multiple contexts, this object is a zero length string." + ::= { alarmActiveEntry 7 } + +alarmActiveVariables OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of variables in alarmActiveVariableTable for this + alarm." + ::= { alarmActiveEntry 8 } + +alarmActiveNotificationID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NOTIFICATION-TYPE object identifier of the alarm + state transition that is occurring." + ::= { alarmActiveEntry 9 } + +alarmActiveResourceId OBJECT-TYPE + SYNTAX ResourceId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the resource under alarm. + + If there is no corresponding resource, then + the value of this object MUST be 0.0." + ::= { alarmActiveEntry 10 } + + + + +alarmActiveDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object provides a textual description of the + active alarm. This text is generated dynamically by the + notification generator to provide useful information + to the human operator. This information SHOULD + provide information allowing the operator to locate + the resource for which this alarm is being generated. + This information is not intended for consumption by + automated tools." + ::= { alarmActiveEntry 11 } + +alarmActiveLogPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the corresponding row in a + notification logging MIB where the state change + notification for this active alarm is logged. + If no log entry applies to this active alarm, + then this object MUST have the value of 0.0" + ::= { alarmActiveEntry 12 } + +alarmActiveModelPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the corresponding row in the + alarmModelTable for this active alarm. This + points not only to the alarm model being + instantiated, but also to the specific alarm + state that is active." + ::= { alarmActiveEntry 13 } + +alarmActiveSpecificPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If no additional, model-specific, Alarm MIB is supported by + the system this object is `0.0'. When a model-specific Alarm + MIB is supported, this object is the instance pointer to the + specific model-specific active alarm list." + + + + ::= { alarmActiveEntry 14 } + +-- Active Alarm Variable Table -- + +alarmActiveVariableTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmActiveVariableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of variables to go with active alarm entries." + ::= { alarmActive 3 } + +alarmActiveVariableEntry OBJECT-TYPE + SYNTAX AlarmActiveVariableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table when there are variables in + the varbind list of a corresponding alarm in + alarmActiveTable. + + Entries appear in this table as though + the trap/notification had been transported using a + SNMPv2-Trap-PDU, as defined in [RFC3416] - i.e., the + alarmActiveVariableIndex 1 will always be sysUpTime + and alarmActiveVariableIndex 2 will always be + snmpTrapOID. + + If the incoming notification is instead an SNMPv1 Trap-PDU and + the value of alarmModelVarbindIndex is 1 or 2, an appropriate + value for sysUpTime.0 or snmpTrapOID.0 shall be determined + by using the rules in section 3.1 of [RFC3584]." + INDEX { alarmListName, alarmActiveIndex, + alarmActiveVariableIndex } + ::= { alarmActiveVariableTable 1 } + +AlarmActiveVariableEntry ::= SEQUENCE { + alarmActiveVariableIndex Unsigned32, + alarmActiveVariableID OBJECT IDENTIFIER, + alarmActiveVariableValueType INTEGER, + alarmActiveVariableCounter32Val Counter32, + alarmActiveVariableUnsigned32Val Unsigned32, + alarmActiveVariableTimeTicksVal TimeTicks, + alarmActiveVariableInteger32Val Integer32, + alarmActiveVariableOctetStringVal OCTET STRING, + alarmActiveVariableIpAddressVal IpAddress, + alarmActiveVariableOidVal OBJECT IDENTIFIER, + alarmActiveVariableCounter64Val Counter64, + + + + alarmActiveVariableOpaqueVal Opaque } + +alarmActiveVariableIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A strictly monotonically increasing integer, starting at + 1 for a given alarmActiveIndex, for indexing variables + within the active alarm variable list. " + ::= { alarmActiveVariableEntry 1 } + +alarmActiveVariableID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarm variable's object identifier." + ::= { alarmActiveVariableEntry 2 } + +alarmActiveVariableValueType OBJECT-TYPE + SYNTAX INTEGER { + counter32(1), + unsigned32(2), + timeTicks(3), + integer32(4), + ipAddress(5), + octetString(6), + objectId(7), + counter64(8), + opaque(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the value. One and only one of the value + objects that follow is used for a given row in this table, + based on this type." + ::= { alarmActiveVariableEntry 3 } + +alarmActiveVariableCounter32Val OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'counter32'." + ::= { alarmActiveVariableEntry 4 } + + + + +alarmActiveVariableUnsigned32Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'unsigned32'." + ::= { alarmActiveVariableEntry 5 } + +alarmActiveVariableTimeTicksVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'timeTicks'." + ::= { alarmActiveVariableEntry 6 } + +alarmActiveVariableInteger32Val OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'integer32'." + ::= { alarmActiveVariableEntry 7 } + +alarmActiveVariableOctetStringVal OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'octetString'." + ::= { alarmActiveVariableEntry 8 } + +alarmActiveVariableIpAddressVal OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'ipAddress'." + ::= { alarmActiveVariableEntry 9 } + +alarmActiveVariableOidVal OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'objectId'." + ::= { alarmActiveVariableEntry 10 } + + + + +alarmActiveVariableCounter64Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'counter64'." + ::= { alarmActiveVariableEntry 11 } + +alarmActiveVariableOpaqueVal OBJECT-TYPE + SYNTAX Opaque (SIZE(0..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when alarmActiveVariableType is 'opaque'. + + Note that although RFC2578 [RFC2578] forbids the use + of Opaque in 'standard' MIB modules, this particular + usage is driven by the need to be able to accurately + represent any well-formed notification, and justified + by the need for backward compatibility." + ::= { alarmActiveVariableEntry 12 } + +-- Statistics -- + +alarmActiveStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmActiveStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the alarm statistics + information." + ::= { alarmActive 4 } + +alarmActiveStatsEntry OBJECT-TYPE + SYNTAX AlarmActiveStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics on the current active alarms." + INDEX { alarmListName } + + ::= { alarmActiveStatsTable 1 } + +AlarmActiveStatsEntry ::= + SEQUENCE { + alarmActiveStatsActiveCurrent Gauge32, + alarmActiveStatsActives ZeroBasedCounter32, + alarmActiveStatsLastRaise TimeTicks, + + + + alarmActiveStatsLastClear TimeTicks + } + +alarmActiveStatsActiveCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of currently active alarms on the system." + ::= { alarmActiveStatsEntry 1 } + +alarmActiveStatsActives OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of active alarms since system restarted." + ::= { alarmActiveStatsEntry 2 } + +alarmActiveStatsLastRaise OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + alarm raise for this alarm list. + If no alarm raises have occurred since the + last re-initialization of the local network management + subsystem, then this object contains a zero value." + ::= { alarmActiveStatsEntry 3 } + +alarmActiveStatsLastClear OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + alarm clear for this alarm list. + If no alarm clears have occurred since the + last re-initialization of the local network management + subsystem, then this object contains a zero value." + ::= { alarmActiveStatsEntry 4 } + +-- Alarm Clear + +alarmClearMaximum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "This object specifies the maximum number of cleared + alarms to store in the alarmClearTable. When this + number is reached, the cleared alarms with the + earliest clear time will be removed from the table." + ::= { alarmClear 1 } + +alarmClearTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmClearEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on + cleared alarms." + ::= { alarmClear 2 } + +alarmClearEntry OBJECT-TYPE + SYNTAX AlarmClearEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a cleared alarm." + INDEX { alarmListName, alarmClearDateAndTime, +alarmClearIndex } + + ::= { alarmClearTable 1 } + +AlarmClearEntry ::= + SEQUENCE { + alarmClearIndex Unsigned32, + alarmClearDateAndTime DateAndTime, + alarmClearEngineID LocalSnmpEngineOrZeroLenStr, + alarmClearEngineAddressType InetAddressType, + alarmClearEngineAddress InetAddress, + alarmClearContextName SnmpAdminString, + alarmClearNotificationID OBJECT IDENTIFIER, + alarmClearResourceId ResourceId, + alarmClearLogIndex Unsigned32, + alarmClearModelPointer RowPointer + } + +alarmClearIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer which acts as the index of entries within + + + + the named alarm list. It wraps back to 1 after it + reaches its maximum value. + + This object has the same value as the alarmActiveIndex that + this alarm instance had when it was active." + ::= { alarmClearEntry 1 } + +alarmClearDateAndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local date and time when the alarm cleared. + + This object facilitates retrieving all instances of + alarms that have been cleared since a given point in time. + + Implementations MUST include the offset from UTC, + if available. Implementation in environments in which + the UTC offset is not available is NOT RECOMMENDED." + ::= { alarmClearEntry 2 } + +alarmClearEngineID OBJECT-TYPE + SYNTAX LocalSnmpEngineOrZeroLenStr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identification of the SNMP engine at which the alarm + originated. If the alarm is from an SNMPv1 system this + object is a zero length string." + ::= { alarmClearEntry 3 } + +alarmClearEngineAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates what type of address is stored in + the alarmActiveEngineAddress object - IPv4, IPv6, DNS, etc." + ::= { alarmClearEntry 4 } + +alarmClearEngineAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Address of the SNMP engine on which the alarm was + occurring. This is used to identify the source of an SNMPv1 + + + + trap, since an alarmActiveEngineId cannot be extracted from the + SNMPv1 trap PDU. + + This object MUST always be instantiated, even if the list + can contain alarms from only one engine." + ::= { alarmClearEntry 5 } + +alarmClearContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the SNMP MIB context from which the alarm came. + For SNMPv1 traps this is the community string from the Trap. + Note that care needs to be taken when selecting community + strings to ensure that these can be represented as a + well-formed SnmpAdminString. Community or Context names + that are not well-formed SnmpAdminStrings will be mapped + to zero length strings. + + If the alarm's source SNMP engine is known not to support + multiple contexts, this object is a zero length string." + ::= { alarmClearEntry 6 } + +alarmClearNotificationID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NOTIFICATION-TYPE object identifier of the alarm + clear." + ::= { alarmClearEntry 7 } + +alarmClearResourceId OBJECT-TYPE + SYNTAX ResourceId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the resource that was under alarm. + + If there is no corresponding resource, then + the value of this object MUST be 0.0." + ::= { alarmClearEntry 8 } + +alarmClearLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This number MUST be the same as the log index of the + applicable row in the notification log MIB, if it exists. + If no log index applies to the trap, then this object + MUST have the value of 0." + ::= { alarmClearEntry 9 } + +alarmClearModelPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the corresponding row in the + alarmModelTable for this cleared alarm." + ::= { alarmClearEntry 10 } + +-- Notifications + +alarmActiveState NOTIFICATION-TYPE + OBJECTS { alarmActiveModelPointer, + alarmActiveResourceId } + STATUS current + DESCRIPTION + "An instance of the alarm indicated by + alarmActiveModelPointer has been raised + against the entity indicated by + alarmActiveResourceId. + + The agent must throttle the generation of + consecutive alarmActiveState traps so that there is at + least a two-second gap between traps of this + type against the same alarmActiveModelPointer and + alarmActiveResourceId. When traps are throttled, + they are dropped, not queued for sending at a future time. + + A management application should periodically check + the value of alarmActiveLastChanged to detect any + missed alarmActiveState notification-events, e.g., + due to throttling or transmission loss." + ::= { alarmNotifications 2 } + +alarmClearState NOTIFICATION-TYPE + OBJECTS { alarmActiveModelPointer, + alarmActiveResourceId } + STATUS current + DESCRIPTION + "An instance of the alarm indicated by + alarmActiveModelPointer has been cleared against + + + + the entity indicated by alarmActiveResourceId. + + The agent must throttle the generation of + consecutive alarmActiveClear traps so that there is at + least a two-second gap between traps of this + type against the same alarmActiveModelPointer and + alarmActiveResourceId. When traps are throttled, + they are dropped, not queued for sending at a future time. + + A management application should periodically check + the value of alarmActiveLastChanged to detect any + missed alarmClearState notification-events, e.g., + due to throttling or transmission loss." + ::= { alarmNotifications 3 } + +-- Conformance + +alarmConformance OBJECT IDENTIFIER ::= { alarmMIB 2 } + +alarmCompliances OBJECT IDENTIFIER ::= { alarmConformance 1 } + +alarmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems supporting + the Alarm MIB." + MODULE -- this module + MANDATORY-GROUPS { + alarmActiveGroup, + alarmModelGroup + } + GROUP alarmActiveStatsGroup + DESCRIPTION + "This group is optional." + GROUP alarmClearGroup + DESCRIPTION + "This group is optional." + GROUP alarmNotificationsGroup + DESCRIPTION + "This group is optional." + ::= { alarmCompliances 1 } + +alarmGroups OBJECT IDENTIFIER ::= { alarmConformance 2 } + +alarmModelGroup OBJECT-GROUP + OBJECTS { + alarmModelLastChanged, + alarmModelNotificationId, + + + + alarmModelVarbindIndex, + alarmModelVarbindValue, + alarmModelDescription, + alarmModelSpecificPointer, + alarmModelVarbindSubtree, + alarmModelResourcePrefix, + alarmModelRowStatus + } + STATUS current + DESCRIPTION + "Alarm model group." + ::= { alarmGroups 1} + +alarmActiveGroup OBJECT-GROUP + OBJECTS { + alarmActiveLastChanged, + alarmActiveOverflow, + alarmActiveEngineID, + alarmActiveEngineAddressType, + alarmActiveEngineAddress, + alarmActiveContextName, + alarmActiveVariables, + alarmActiveNotificationID, + alarmActiveResourceId, + alarmActiveDescription, + alarmActiveLogPointer, + alarmActiveModelPointer, + alarmActiveSpecificPointer, + alarmActiveVariableID, + alarmActiveVariableValueType, + alarmActiveVariableCounter32Val, + alarmActiveVariableUnsigned32Val, + alarmActiveVariableTimeTicksVal, + alarmActiveVariableInteger32Val, + alarmActiveVariableOctetStringVal, + alarmActiveVariableIpAddressVal, + alarmActiveVariableOidVal, + alarmActiveVariableCounter64Val, + alarmActiveVariableOpaqueVal + } + STATUS current + DESCRIPTION + "Active Alarm list group." + ::= { alarmGroups 2} + + alarmActiveStatsGroup OBJECT-GROUP + OBJECTS { + alarmActiveStatsActives, + + + + alarmActiveStatsActiveCurrent, + alarmActiveStatsLastRaise, + alarmActiveStatsLastClear + } + STATUS current + DESCRIPTION + "Active alarm summary group." + ::= { alarmGroups 3} + +alarmClearGroup OBJECT-GROUP + OBJECTS { + alarmClearMaximum, + alarmClearEngineID, + alarmClearEngineAddressType, + alarmClearEngineAddress, + alarmClearContextName, + alarmClearNotificationID, + alarmClearResourceId, + alarmClearLogIndex, + alarmClearModelPointer + } + STATUS current + DESCRIPTION + "Cleared alarm group." + ::= { alarmGroups 4} + +alarmNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { alarmActiveState, alarmClearState } + STATUS current + DESCRIPTION + "The collection of notifications that can be used to + model alarms for faults lacking pre-existing + notification definitions." + ::= { alarmGroups 6 } + +END diff --git a/mibs/ietf/APM-MIB b/mibs/ietf/APM-MIB new file mode 100644 index 0000000..c35324e --- /dev/null +++ b/mibs/ietf/APM-MIB @@ -0,0 +1,2245 @@ +APM-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, + Counter32, Unsigned32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TimeStamp, + TimeInterval, TruthValue, DateAndTime, + StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + rmon, OwnerString FROM RMON-MIB + protocolDirLocalIndex FROM RMON2-MIB; + +-- Application Performance Measurement MIB + +apm MODULE-IDENTITY + LAST-UPDATED "200402190000Z" -- February 19, 2004 + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Author: + Steve Waldbusser + + + + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + Cisco Systems, Inc. + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + Tel: +1 408 527-3711 + E-mail: abierman@cisco.com + + Working Group Mailing List: + To subscribe send email to: + " + DESCRIPTION + "The MIB module for measuring application performance + as experienced by end-users. + + Copyright (C) The Internet Society (2004). This version of + this MIB module is part of RFC 3729; see the RFC itself for + full legal notices." + + REVISION "200402190000Z" -- February 19, 2004 + DESCRIPTION + "The original version of this MIB Module, published as + RFC3729." + + ::= { rmon 23 } + +apmMibObjects OBJECT IDENTIFIER ::= { apm 1 } +apmConformance OBJECT IDENTIFIER ::= { apm 2 } +apmCompliances OBJECT IDENTIFIER ::= { apmConformance 1 } +apmGroups OBJECT IDENTIFIER ::= { apmConformance 2 } + + +AppLocalIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A locally arbitrary unique identifier associated with an + application or application verb. + + All objects of type AppLocalIndex are assigned by the agent + out of a common number space. In other words, AppLocalIndex + values assigned to entries in one table must not overlap with + AppLocalIndex values assigned to entries in another + table. Further, every protocolDirLocalIndex value registered + by the agent automatically assigns the same value out of the + + + + AppLocalIndex number space. + + For example, if the protocolDirLocalIndex values { 1, 3, 5, 7 } + have been assigned, and the apmHttpFilterAppLocalIndex values + { 6, 8, 9 } have been assigned: + + - Assignment of new AppLocalIndex values must not use the + values { 1, 3, 5, 6, 7, 8, 9 }. + - AppLocalIndex values { 1, 3, 5, 7 } are automatically + assigned and are associated with the identical value of + protocolDirLocalIndex. In particular, an entry in the + apmAppDirTable indexed by a value provides further + information about a protocol indexed by the same value + in the protocolDirTable of RMON2. + + The value for each supported application must remain constant + at least from one re-initialization of the entity's network + management system to the next re-initialization, except that + if an application 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. An AppLocalIndex value must not be re-used until the + next agent restart." + SYNTAX Unsigned32 (1..2147483647) + +ProtocolDirNetworkAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A network level address whose semantics and encoding are + specified by an associated protocolDirLocalIndex + value. Objects of this type must specify which + protocolDirLocalIndex value is used. This value is encoded + according to the encoding rules for the identified + protocolDirectory entry. + + For example, if the associated 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. + + Objects of this type may allow this value to be the zero + length string. If so, they must identify they meaning of this + value." + SYNTAX OCTET STRING (SIZE(0..255)) + +DataSourceOrZero ::= 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 [4], 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 the source of the data isn't an interface or cannot be + localized to an interface, this object would be set to 0.0" + + REFERENCE "The DataSource textual convention is defined in + RFC 2021 [5]." + SYNTAX OBJECT IDENTIFIER + +RmonClientID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A long-lived unique ID assigned to an end-system. This ID is + assigned by the agent using an implementation-specific + algorithm. + + Because a client machine may be assigned multiple addresses + over any time period it can be difficult to attribute + behavior to a particular client based solely on its + address. A ClientID may be assigned to provide a more + stable handle for referencing that client. The entity that + assigns the ClientID may use various implementation + techniques to keep track of a client but if the assigning + entity is unable to track client address mappings, it may map + client identifiers to client addresses rather than to + distinct client machines. + + This is named ClientID because it helps to solve a problem + seen in network clients (servers usually have well-known, + long-lived addresses). However, ClientID's may be assigned to + any end-system regardless of its role on the network." + SYNTAX Unsigned32 (0..4294967295) + + +TransactionAggregationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "Specifies one of 4 different techniques for aggregating + transactions. + + The metrics for a single transaction are the responsiveness of + the transaction and whether the transaction succeeded (a + boolean). When such metrics are aggregated in this MIB Module, + these metrics are replaced by averages and distributions of + responsiveness and availability. The metrics describing + aggregates are constant no matter which type of aggregation is + being performed. These metrics may be found in the + apmReportTable. + + The flows(1) aggregation is the simplest. All transactions + that share common application/server/client 3-tuples are + aggregated together, resulting in a set of metrics for all + such unique 3-tuples. + + The clients(2) aggregation results in somewhat more + aggregation (i.e., fewer resulting records). All transactions + that share common application/client tuples are aggregated + together, resulting in a set of metrics for all such unique + tuples. + + The servers(3) aggregation usually results in still more + aggregation (i.e., fewer resulting records). All transactions + that share common application/server tuples are aggregated + together, resulting in a set of metrics for all such unique + tuples. + + The applications(4) aggregation results in the most + aggregation (i.e., the fewest resulting records). All + transactions that share a common application are aggregated + together, resulting in a set of metrics for all such unique + applications. + + Note that it is not meaningful to aggregate applications, as + different applications have widely varying characteristics. As a + result, this set of aggregations is complete." + SYNTAX INTEGER { + flows(1), -- Least Aggregation + clients(2), + servers(3), + applications(4) -- Most Aggregation + } + +-- The APM Application Directory Group + +-- The Application Directory Table contains a record for every + + + +-- application monitored by this agent. This table is also used to +-- configure whether or not an application will be measured and which +-- bucket boundaries will be used for the application. +-- +-- The bucket boundaries define the break-points between bins of a +-- histogram analysis for that application. As an example of how this +-- works, consider an entry representing response-time for http. +-- If the boundaries are set as follows: +-- Boundary1: 500 milliseconds +-- Boundary2: 1 second +-- Boundary3: 2 seconds +-- Boundary4: 5 +-- Boundary5: 15 +-- Boundary6: 60 +-- +-- If the following measurements are made (all in milliseconds): +-- 377, 8645, 1300, 487, 1405, 775, 1115, 850, 945, 1054, 7745, 9380 +-- +-- A report run during this interval would report the following +-- counts: +-- Bucket1: 2 +-- Bucket2: 3 +-- Bucket3: 4 +-- Bucket4: 0 +-- Bucket5: 3 +-- Bucket6: 0 +-- Bucket7: 0 + +apmAppDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmAppDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The APM MIB directory of applications and application + verbs. The agent will populate this table with all + applications/verbs of any responsivenessType it has the + capability to monitor. Since the agent populates this table + with every entry it has the capability to monitor, the + entries in this table are read-write, allowing the management + station to modify parameters in this table but not to add new + entries or delete entries (however, entries may be + disabled). If new entries are added to the apmHttpFilterTable + or the apmUserDefinedAppTable, the agent will add the + corresponding entries to this table. + + It is an implementation-dependent matter as to how the agent + sets these default parameters. For example, it may leave + certain entries in this table 'off(0)' if the agent developer + + + + believes that combination will be infrequently used, allowing + a manager that needs that capability to set it to 'on(1)'. + + Some applications are registered in the RMON2 protocol + directory and some are registered in other tables in this + MIB Module. Regardless of where an application is originally + registered, it is assigned an AppLocalIndex value that is the + primary index for this table. + + The contents of this table affect all reports and exceptions + generated by this agent. Accordingly, modification of this + table should be performed by a manager acting in the role of + administrator. In particular, management software should not + require or enforce particular configuration of this table - it + should reflect the preferences of the site administrator, not + the software author. As a practical matter, this requires + management software to allow the administrator to configure + the values it will use so that it can be adapted to the site + policy." + ::= { apmMibObjects 1 } + +apmAppDirEntry OBJECT-TYPE + SYNTAX ApmAppDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The APM MIB directory of applications and application + verbs. An entry will exist in this table for all applications + for which application performance measurement is supported." + INDEX { apmAppDirAppLocalIndex, + apmAppDirResponsivenessType } + ::= { apmAppDirTable 1 } + +ApmAppDirEntry ::= SEQUENCE { + apmAppDirAppLocalIndex AppLocalIndex, + apmAppDirResponsivenessType INTEGER, + apmAppDirConfig INTEGER, + apmAppDirResponsivenessBoundary1 Unsigned32, + apmAppDirResponsivenessBoundary2 Unsigned32, + apmAppDirResponsivenessBoundary3 Unsigned32, + apmAppDirResponsivenessBoundary4 Unsigned32, + apmAppDirResponsivenessBoundary5 Unsigned32, + apmAppDirResponsivenessBoundary6 Unsigned32 +} + +apmAppDirAppLocalIndex OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The AppLocalIndex assigned for this application Directory + entry." + ::= { apmAppDirEntry 1 } + +apmAppDirResponsivenessType OBJECT-TYPE + SYNTAX INTEGER { + transactionOriented(1), + throughputOriented(2), + streamingOriented(3) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object describes and configures the agent's support for + application performance measurement for this application. + There are 3 types of measurements for different types of + applications: + + Transaction-Oriented applications have a fairly constant + workload to perform for all transactions. The responsiveness + metric for transaction-oriented applications is application + response time (from first request to final delivery of + service) and is measured in milliseconds. This is + commonly referred to as end-user response time. + + Throughput-Oriented applications have widely varying workloads + based on the nature of the client request. In particular, + throughput-oriented applications vary widely in the amount of + data that must be transported to satisfy the request. The + responsiveness metric for throughput-oriented applications is + kilobits per second. + + Streaming-Oriented applications deliver data at a constant + metered rate of speed regardless of the responsiveness of the + networking and computing infrastructure. This constant rate of + speed is generally specified to be below (sometimes well + below) the nominal capability of the infrastructure. However, + when the infrastructures cannot deliver data at this speed, + interruption of service or degradation of service can + result. The responsiveness metric for streaming-oriented + applications is the ratio of time that the service is degraded + or interrupted to the total service time. This metric is + measured in parts per million. + + Note that for some applications, measuring more than one + responsiveness type may be interesting. For agents that wish + + + + to support more than one measurement for a application, they + will populate this table with multiple entries for that + application, one for each type." + ::= { apmAppDirEntry 2 } + +apmAppDirConfig OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object describes and configures support for application + performance measurement for this application. + + If the value of this object is on(2), the agent supports + measurement of application performance metrics for this + application and is configured to measure such metrics for all + APM MIB functions and all interfaces. If the value of this + object is off(1), the agent supports measurement of + application performance for this application but is configured + to not measure these metrics for any APM MIB functions or + interfaces. Whenever this value changes from on(2) to off(1), + the agent shall delete all related entries in all tables in + this MIB Module. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 3 } + +apmAppDirResponsivenessBoundary1 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket1 and bucket 2. If this + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 4 } + +apmAppDirResponsivenessBoundary2 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket2 and bucket 3. If this + + + + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 5 } + +apmAppDirResponsivenessBoundary3 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket3 and bucket 4. If this + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 6 } + +apmAppDirResponsivenessBoundary4 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket4 and bucket 5. If this + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 7 } + +apmAppDirResponsivenessBoundary5 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket5 and bucket 6. If this + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 8 } + +apmAppDirResponsivenessBoundary6 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The boundary value between bucket6 and bucket 7. If this + + + + value is modified, all entries in the apmReportTable must be + deleted by the agent. + + The value of this object must persist across reboots." + ::= { apmAppDirEntry 9 } + +-- Scalars related to the Application Directory table + +apmBucketBoundaryLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime the last time that any bucket boundary + in any appDirEntry was changed. This object can help to + determine if two managers are both trying to enforce different + configurations of this table." + ::= { apmMibObjects 2 } + +apmAppDirID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object allows managers to avoid downloading application + directory information when the directory is set to a known + (usually fixed) configuration. + + If the value of this object isn't 0.0, it signifies + that the entire contents of the apmAppDirTable, + apmHttpFilterTable, apmUserDefinedAppTable and + protocolDirTable are equal to a known state identified + by the value of this object. If a manager recognizes this + value as identifying a directory configuration it has a local + copy of, it may use this local copy rather than downloading + these tables. Note that it may have downloaded this local copy + (and the ID) from another agent and used this copy for all + other agents that advertised the same ID. + + If an agent recognizes that the entire contents of the + apmAppDirTable, apmHttpFilterTable, + apmUserDefinedAppTable and protocolDirTable are equal to + a known state to which an ID has been assigned, it should set + this object to that ID. + + In many cases when this feature is used, the application + directory information will be in read-only memory and thus the + tables may not be modified via SNMP requests. In the event + + + + that the tables are writable and a modification is made, the + agent is responsible for setting this object to 0.0 if it + cannot determine that the state is equal to a known state. + + An agent is not obligated to recognize and advertise all such + registered states as it may not have knowledge of all states. + Thus, a manager may encounter agents whose DirectoryID value + is 0.0 even though the contents of the directory were equal to + a registered state. + + Note that the contents of those tables includes the + protocolDirLocalIndex and appLocalIndex values. In other + words, these values can't be assigned randomly on each agent, + but must be equal to values that are part of the known + state. While it is possible for a manager to download + application directory details using SNMP and to set the + appropriate directoryID, the manager would need to have some + scheme to ensure consistent values of LocalIndex variables + from agent to agent. Such schemes are outside the scope of + this specification. + + Application directory registrations are unique within an + administrative domain. + + Typically these registrations will be made by an agent + software developer who will set the application directory + tables to a read-only state and assign a DirectoryID to that + state. Thus, all agents running this software would share the + same DirectoryID. As the application directory might change + from one software release to the next, the developer may + register different DirectoryID's for each software release. + + A customer could also create a site-wide application directory + configuration and assign a DirectoryID to that configuration + as long as consistent values of LocalIndex variables can be + ensured. + + The value of this object must persist across reboots." + ::= { apmMibObjects 3 } + +-- APM HTTP Filter Table + +-- The HTTP Filter Table creates virtual applications which measure the +-- performance of certain web pages or sets of web pages. Some +-- circumstances where this is particularly useful are: +-- +-- - An Intranet or ASP scenario where a business application is +-- running on one or more web pages or scripts. + + + +-- (i.e., /expense/submit.cgi?employeeID=3426&...) +-- - A web-hosting scenario where one wants to measure the +-- service level for a particular customer +-- - An e-commerce scenario where the performance of certain +-- pages needs to be monitored more closely. +-- (i.e., shopping cart, shipping, credit card authorization) + +apmHttpFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmHttpFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that creates virtual applications which measure the + performance of certain web pages or sets of web pages. + + When an entry is added to this table, the agent will + automatically create one or more entries in the + apmAppDirTable (one for each responsivenessType it is + capable of measuring). + + Note that when entries exist in this table some HTTP + transactions will be summarized twice: in applications + represented here as well as the HTTP application. If entries + in this table overlap, these transactions may be summarized + additional times. + + The contents of this table affect all reports and exceptions + generated by this agent. Accordingly, modification of this + table should be performed by a manager acting in the role of + administrator. In particular, management software should not + require or enforce particular configuration of this table - it + should reflect the preferences of the site administrator, not + the software author." + ::= { apmMibObjects 4 } + +apmHttpFilterEntry OBJECT-TYPE + SYNTAX ApmHttpFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A virtual application which measure the performance of certain + web pages or sets of web pages." + INDEX { apmHttpFilterIndex } + ::= { apmHttpFilterTable 1 } + +ApmHttpFilterEntry ::= SEQUENCE { + apmHttpFilterIndex Unsigned32, + apmHttpFilterAppLocalIndex AppLocalIndex, + + + + apmHttpFilterServerProtocol Unsigned32, + apmHttpFilterServerAddress ProtocolDirNetworkAddress, + apmHttpFilterURLPath OCTET STRING, + apmHttpFilterMatchType INTEGER, + apmHttpFilterOwner OwnerString, + apmHttpFilterStorageType StorageType, + apmHttpFilterRowStatus RowStatus +} + +apmHttpFilterIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + apmHttpFilterTable." + ::= { apmHttpFilterEntry 1 } + +apmHttpFilterAppLocalIndex OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The AppLocalIndex that represents HTTP transactions + that match this entry. + + This object is read-only. A value is created by the agent from + an unused AppLocalIndex value when this apmHttpFilterEntry is + created." + ::= { apmHttpFilterEntry 2 } + +apmHttpFilterServerProtocol OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value of the network level protocol + of the apmHttpFilterServerAddress." + ::= { apmHttpFilterEntry 3 } + +apmHttpFilterServerAddress OBJECT-TYPE + SYNTAX ProtocolDirNetworkAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This entry will only represent transactions coming from the + network address specified in this object. + + + + + This is represented as an octet string with + specific semantics and length as identified + by the associated apmHttpFilterServerProtocol object. + + If this object is the zero-length string, then this entry will + match one of the addresses represented by the 'host' component + of the associated apmHttpFilterURLPath object, where the + format if a URL [9] is + http://:/?." + ::= { apmHttpFilterEntry 4 } + +apmHttpFilterURLPath OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65535)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This entry will only represent HTTP transactions + where the URL path component in the request matches this + value. This value represents the requested path regardless of + any substitution that the server might perform. + + Prior to the matching, the URL is stripped of any server + address or DNS name and consists solely of the path name on + that server. + + If the length of this object is zero, then this entry will + match if the associated apmHttpFilterServerAddress match. If + the length of that object is also zero, then this entry will + match nothing. + + The value of the associated apmHttpFilterMatchType dictates + the type of matching that will be attempted." + ::= { apmHttpFilterEntry 5 } + +apmHttpFilterMatchType OBJECT-TYPE + SYNTAX INTEGER { + exact(1), + stripTrailingSlash(2), + prefix(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The matching algorithm used to compare the URL pathname. + + If the value is exact(1), then the pathname component will be + compared with the associated apmHttpFilterURLPath and + will only be associated with this entry if it matches exactly. + + + + If the value is stripTrailingSlash(2), then the pathname + component will be compared with the associated + apmHttpFilterURLPath and will only be associated with this + entry if it matches exactly or if the pathname ends with a '/' + symbol and matches apmHttpFilterURLPath if the '/' symbol is + removed from the pathname. This option exists for those paths + where an optional trailing slash is possible but for which a + prefix match would be too broad. + + If the value is prefix(3), then the pathname component will be + compared with the associated apmHttpFilterURLPath and will + only be associated with this entry if the beginning of the + pathname matches every octet of this value. Octets that extend + beyond the length of this value are ignored." + ::= { apmHttpFilterEntry 6 } + +apmHttpFilterOwner 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." + ::= { apmHttpFilterEntry 7 } + +apmHttpFilterStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this apmHttpFilterEntry. If the value of + this object is 'permanent', no objects in this row need to be + writable." + ::= { apmHttpFilterEntry 8 } + +apmHttpFilterRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this apmHttpFilterEntry. No objects in this row + may be modified while the row's status is 'active'." + ::= { apmHttpFilterEntry 9 } + +apmHttpIgnoreUnregisteredURLs OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "When true, APM measurements of HTTP transactions will only + measure transactions relating to URLs that match a filter in + the apmHttpFilterTable. Thus, measurements for the HTTP + application will present aggregated statistics for + URL-matching HTTP transactions and measurements for the HTTP + GET application verb will present aggregated statistics for + URL-matching HTTP GET transactions. + + This will be used in environments that wish to monitor only + targeted URLs and to ignore large volumes of internet web + browsing traffic. + + This object affects all APM reports and exceptions generated + by this agent. Accordingly, modification of this object should + be performed by a manager acting in the role of + administrator. In particular, management software should not + require or enforce particular configuration of this object - + it should reflect the preferences of the site administrator, + not the software author. + + The value of this object must persist across reboots." + ::= { apmMibObjects 5 } + +apmHttp4xxIsFailure OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When true, this agent will recognize HTTP errors in the range + of 400 through 499 and will treat them as unavailable + transactions. When false or when this object isn't supported, + they will be treated as successful transactions. + + This object allows such error pages to be tracked at the + possible expense of having user typos treated as poor service + on the part of the web server. + + This object affects all reports and exceptions generated by + this agent. Accordingly, modification of this object should be + performed by a manager acting in the role of administrator. In + particular, management software should not require or enforce + particular configuration of this object - it should reflect + the preferences of the site administrator, not the software + author. + + The value of this object must persist across reboots." + ::= { apmMibObjects 6 } + + + +-- The APM User-Defined Application Table + +-- Many application protocols will never be registered with a +-- standards body (and thus included in a protocol directory standard) +-- because they are custom, in-house or proprietary +-- applications. Nevertheless, implementation strategies exist for +-- monitoring the end-user experience of these applications. +-- +-- This read-only table provides a means for the agent to advertise +-- which user-defined applications it is monitoring and to associate +-- each with an AppLocalIndex value. It is an implementation-dependent +-- matter as to how the agent learns how to monitor these +-- applications. + +apmUserDefinedAppTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmUserDefinedAppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that advertises user-defined applications that the + agent is measuring. + + The agent will automatically create one or more entries in the + apmAppDirTable (one for each responsivenessType it is + capable of measuring) for each entry in this table. + + Note that when entries exist in this table some + transactions can be summarized more than once if there is + overlap between applications defined here and applications + defined in the protocol directory or in the httpFilter table." + ::= { apmMibObjects 7 } + +apmUserDefinedAppEntry OBJECT-TYPE + SYNTAX ApmUserDefinedAppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A user-defined application that the agent is measuring, along + with its AppLocalIndex assignment. + + The apmAppDirAppLocalIndex value in the index identifies + the agent-assigned AppLocalIndex value for this user-defined + application." + INDEX { apmAppDirAppLocalIndex } + ::= { apmUserDefinedAppTable 1 } + +ApmUserDefinedAppEntry ::= SEQUENCE { + apmUserDefinedAppParentIndex Unsigned32, + + + + apmUserDefinedAppApplication SnmpAdminString +} + +apmUserDefinedAppParentIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value of the highest-layer + protocol defined in the protocolDirTable that this + application is a child of." + ::= { apmUserDefinedAppEntry 1 } + +apmUserDefinedAppApplication OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A human readable descriptive tag for this application." + ::= { apmUserDefinedAppEntry 2 } + +-- The APM Name Table + +apmNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A client machine may have multiple addresses during a period + of monitoring. The apmNameTable assigns a long-lived + identifier to a client and records what addresses were + assigned to that client for periods of time. Various + implementation techniques exist for tracking this mapping but + if an agent is unable to track client address mappings, it may + map client identifiers to client addresses rather than to + distinct client machines. + + A particular apmNameClientID should be a constant attribute of + a particular client. When available, the agent may also record + the machine name and/or user name which may be valuable for + displaying to humans. The apmNameMachineName and + apmNameUserName are relatively constant, changing only if + these attributes actually change on the client. + + The agent will store a historical log of these entries, aging + out old entries as the log becomes too large. Since this table + contains information vital to the interpretation of other + tables (e.g., the apmReportTable), the agent should ensure that + + + + the log doesn't age out entries that would be referenced by + data in those tables. + + Note that an entry for a clientID is active from its + StartTime until the StartTime of another entry (for the same + clientID) that supersedes it, or 'now' if none supersede + it. Therefore, if a clientID only has a single entry, it is by + definition very new and should never be aged out. No entry for + a clientID should be aged out unless it has been updated by a + new entry for the client (i.e., with an updated address) and + only if the new entry is 'old' enough. + + To determine how old is old enough, compute the maximum value + of Interval * (NumReports + 1) of all entries in the + apmReportControlTable (the '+ 1' is to allow a reasonable + period of time for the report to be downloaded). Then take the + larger of this value and the age in seconds of the oldest + entry in the current transaction table. If an entry for a + clientID is superseded by another entry whose StartTime is + more than this many seconds ago, then the older entry may be + deleted." + ::= { apmMibObjects 8 } + +apmNameEntry OBJECT-TYPE + SYNTAX ApmNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the APM name table. An entry exists for each + period of time that a client has been associated with a + particular address. + + The protocolDirLocalIndex value in the index identifies + the network layer protocol for the ClientAddress for this + entry. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { apmNameClientID, + protocolDirLocalIndex, apmNameClientAddress, + apmNameMappingStartTime } + ::= { apmNameTable 1 } + +ApmNameEntry ::= SEQUENCE { + apmNameClientID RmonClientID, + apmNameClientAddress ProtocolDirNetworkAddress, + + + + apmNameMappingStartTime DateAndTime, + apmNameMachineName SnmpAdminString, + apmNameUserName SnmpAdminString +} + +apmNameClientID OBJECT-TYPE + SYNTAX RmonClientID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique ID assigned to the machine represented by this + mapping. This ID is assigned by the agent using an + implementation-specific algorithm." + ::= { apmNameEntry 1 } + +apmNameClientAddress OBJECT-TYPE + SYNTAX ProtocolDirNetworkAddress (SIZE(1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network client address for this client when this mapping + was active. + + This is represented as an octet string with specific semantics + and length as identified by the protocolDirLocalIndex + component of the index. This object may not be the zero length + string. + + Since this object is an index variable, it is encoded in the + index according to the index encoding rules. For example, if + the protocolDirLocalIndex component of the index 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. Care should be taken to avoid values of this + object that, in conjunction with the other index variables, + would result in an index longer than SNMP's maximum of 128 + subidentifiers." + ::= { apmNameEntry 2 } + +apmNameMappingStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The time that the agent first discovered this mapping + as active." + ::= { apmNameEntry 3 } + + + + +apmNameMachineName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The human readable name of the client machine. + + If the client has no machine name or the agent is + unable to learn the machine name, this object will be + a zero-length string." + ::= { apmNameEntry 4 } + +apmNameUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The human readable name of a human user using the client + machine. If more than one user name are available + simultaneously, it is an implementation-dependent matter as to + which is used here. However, if the user name changes, this + object should change to reflect that change. + + Non-human user names like 'root' or 'administrator' aren't + intended as values for this object. If the client has no + recorded user name or the agent is unable to learn a user + name, this object will be a zero-length string." + ::= { apmNameEntry 5 } + +-- The APM Report Group + +apmReportControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmReportControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Parameters that control the creation of a set of reports that + aggregate application performance." + ::= { apmMibObjects 9 } + +apmReportControlEntry OBJECT-TYPE + SYNTAX ApmReportControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apmReportControlTable. + + An example of the indexing of this table is + + + + apmReportControlInterval.3" + INDEX { apmReportControlIndex } + ::= { apmReportControlTable 1 } + +ApmReportControlEntry ::= SEQUENCE { + apmReportControlIndex Unsigned32, + apmReportControlDataSource DataSourceOrZero, + apmReportControlAggregationType TransactionAggregationType, + apmReportControlInterval Unsigned32, + apmReportControlRequestedSize Unsigned32, + apmReportControlGrantedSize Unsigned32, + apmReportControlRequestedReports Unsigned32, + apmReportControlGrantedReports Unsigned32, + apmReportControlStartTime TimeStamp, + apmReportControlReportNumber Unsigned32, + apmReportControlDeniedInserts Counter32, + apmReportControlDroppedFrames Counter32, + apmReportControlOwner OwnerString, + apmReportControlStorageType StorageType, + apmReportControlStatus RowStatus +} + + +apmReportControlIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + apmReportControlTable. Each such entry defines a unique + report whose results are placed in the apmReportTable on + behalf of this apmReportControlEntry." + ::= { apmReportControlEntry 1 } + +apmReportControlDataSource OBJECT-TYPE + SYNTAX DataSourceOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of the data for APM Reports generated on + behalf of this apmReportControlEntry. + + If the measurement is being performed by a probe, this should + be set to interface or port where data was received for + analysis. If the measurement isn't being performed by a probe, + this should be set to the primary interface over which the + measurement is being performed. If the measurement isn't being + performed by a probe and there is no primary interface or this + + + + information isn't known, this object should be set to 0.0. + + This object may not be modified if the associated + apmReportControlStatus object is equal to active(1)." + ::= { apmReportControlEntry 2 } + +apmReportControlAggregationType OBJECT-TYPE + SYNTAX TransactionAggregationType + -- INTEGER { + -- flows(1), + -- clients(2), + -- servers(3), + -- applications(4) + -- } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of aggregation being performed for this set of + reports. + + The metrics for a single transaction are the responsiveness of + the transaction and whether the transaction succeeded (a + boolean). When such metrics are aggregated in this MIB Module, + these metrics are replaced by averages and distributions of + responsiveness and availability. The metrics describing + aggregates are constant no matter which type of aggregation is + being performed. These metrics may be found in the + apmReportTable. + + The flows(1) aggregation is the simplest. All transactions + that share common application/server/client 3-tuples are + aggregated together, resulting in a set of metrics for all + such unique 3-tuples. + + The clients(2) aggregation results in somewhat more + aggregation (i.e., fewer resulting records). All transactions + that share common application/client tuples are aggregated + together, resulting in a set of metrics for all such unique + tuples. + + The servers(3) aggregation usually results in still more + aggregation (i.e., fewer resulting records). All transactions + that share common application/server tuples are aggregated + together, resulting in a set of metrics for all such unique + tuples. + + The applications(4) aggregation results in the most + aggregation (i.e., the fewest resulting records). All + + + + transactions that share a common application are aggregated + together, resulting in a set of metrics for all such unique + applications. + + Note that it is not meaningful to aggregate applications, as + different applications have widely varying characteristics. + As a result, this set of aggregations is complete. + + This object may not be modified if the associated + apmReportControlStatus object is equal to active(1)." + ::= { apmReportControlEntry 3 } + +apmReportControlInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which data is accumulated before + being aggregated into a report in the apmReportTable. All + reports with the same apmReportControlIndex will be based on + the same interval. This object must be greater than zero. + + Many users desire that these reports be synchronized to within + seconds of the beginning of the hour because the results may + be correlated more meaningfully to business behavior and so + that data from multiple agents is aggregated over the same + time periods. Thus management software may take extra effort + to synchronize reports to the beginning of the hour and to one + another. However, the agent must not allow reports to 'drift' + over time as they will quickly become unsynchronized. In + particular, if there is any fixed processing delay between + reports, the reports should deduct this time from the interval + so that reports don't drift. + + This object may not be modified if the associated + apmReportControlStatus object is equal to active(1)." + DEFVAL { 3600 } + ::= { apmReportControlEntry 4 } + +apmReportControlRequestedSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of entries requested to be allocated for each + report generated on behalf of this entry." + ::= { apmReportControlEntry 5 } + + + +apmReportControlGrantedSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries per report the agent has allocated + based on the requested amount in apmReportControlRequestedSize. + Since multiple reports are saved, the total number of entries + allocated will be this number multiplied by the value of + apmReportControlGrantedReports, or 1 if that object doesn't + exist. + + When the associated apmReportControlRequestedSize object is + created or modified, the agent should set this object as + closely to the requested value as is possible for the + particular implementation and available resources. When + considering resources available, the agent must consider its + ability to allocate this many entries for all reports. + + Note that while the actual number of entries stored in the + reports may fluctuate due to changing conditions, the agent + must continue to have storage available to satisfy the full + report size for all reports when necessary. Further, the agent + must not lower this value except as a result of a set to the + associated apmReportControlRequestedSize object." + ::= { apmReportControlEntry 6 } + +apmReportControlRequestedReports OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of saved reports requested to be allocated on + behalf of this entry." + ::= { apmReportControlEntry 7 } + +apmReportControlGrantedReports OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of saved reports the agent has allocated + based on the requested amount in + apmReportControlRequestedReports. Since each report can have + many entries, the total number of entries allocated will be + this number multiplied by the value of + apmReportControlGrantedSize, or 1 if that object doesn't + exist. + + + + When the associated apmReportControlRequestedReports object is + created or modified, the agent should set this object as + closely to the requested value as is possible for the + particular implementation and available resources. When + considering resources available, the agent must consider its + ability to allocate this many reports each with the number of + entries represented by apmReportControlGrantedSize, or 1 if + that object doesn't exist. + + Note that while the storage required for each report may + fluctuate due to changing conditions, the agent must continue + to have storage available to satisfy the full report size for + all reports when necessary. Further, the agent must not lower + this value except as a result of a set to the associated + apmReportControlRequestedSize object." + ::= { apmReportControlEntry 8 } + +apmReportControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the system began processing the + report in progress. Note that the report in progress is not + available. + + This object may be used by the management station to figure + out the start time for all previous reports saved for this + apmReportControlEntry, as reports are started at fixed + intervals." + ::= { apmReportControlEntry 9 } + +apmReportControlReportNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of the report in progress. When an + apmReportControlEntry is activated, the first report will be + numbered one." + ::= { apmReportControlEntry 10 } + +apmReportControlDeniedInserts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of failed attempts to add an entry to reports for + + + + this apmReportControlEntry because the number of entries + would have exceeded apmReportControlGrantedSize. + + This number is valuable in determining if enough entries have + been allocated for reports in light of fluctuating network + usage. Note that since an entry that is denied will often be + attempted again, this number will not predict the exact number + of additional entries needed, but can be used to understand + the relative magnitude of the problem. + + Also note that there is no ordering specified for the entries + in the report, thus there are no rules for which entries will + be omitted when not enough entries are available. As a + consequence, the agent is not required to delete 'least + valuable' entries first." + ::= { apmReportControlEntry 11 } + +apmReportControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of frames which were received by the agent + and therefore not accounted for in the *StatsDropEvents, but + for which the agent chose not to count for this entry for + whatever reason. Most often, this event occurs when the agent + 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. + + This counter is only relevant if this apm report is based on + a data source whose collection methodology is based on + analyzing network traffic. + + Note that if the apmReportTables are inactive because no + applications are enabled in the application directory, this + value should be 0. + + Note that, unlike the dropEvents counter, this number is the + exact number of frames dropped." + ::= { apmReportControlEntry 12 } + +apmReportControlOwner 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." + ::= { apmReportControlEntry 13 } + +apmReportControlStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this apmReportControlEntry. If the value + of this object is 'permanent', no objects in this row need to + be writable." + ::= { apmReportControlEntry 14 } + +apmReportControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this apmReportControlEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. The only + objects in the entry that may be modified while the entry is + in the active state are apmReportControlRequestedSize and + apmReportControlRequestedReports. + + If this object is not equal to active(1), all + associated entries in the apmReportTable shall be deleted + by the agent." + ::= { apmReportControlEntry 15 } + +-- The APM Report Table + +apmReportTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmReportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The data resulting from aggregated APM reports. Consult the + definition of apmReportControlAggregationType for the + definition of the various types of aggregations." + ::= { apmMibObjects 10 } + +apmReportEntry OBJECT-TYPE + SYNTAX ApmReportEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A conceptual row in the apmReportTable. + The apmReportControlIndex value in the index identifies the + apmReportControlEntry on whose behalf this entry was created. + The apmReportIndex value in the index identifies which report + (in the series of reports) this entry is a part of. + The apmAppDirAppLocalIndex value in the index identifies + the common application of the transactions aggregated in this + entry. + The apmAppDirResponsivenessType value in the index + identifies the type of responsiveness metric reported by + this entry and uniquely identifies this entry when more + than one responsiveness metric is measured for a flow. + Entries will only exist in this table for those + combinations of AppLocalIndex and ResponsivenessType + that are configured 'on(1)'. + The protocolDirLocalIndex value in the index identifies + the network layer protocol of the apmReportServerAddress. + When the associated apmReportControlAggregationType value is + equal to applications(4) or clients(2), this + protocolDirLocalIndex value will equal 0. + The apmReportServerAddress value in the index identifies the + network layer address of the server in transactions aggregated + in this entry. + The apmNameClientID value in the index identifies the + client in transactions aggregated in this entry. If the + associated apmReportControlAggregationType is equal to + applications(4) or servers(3), then this protocolDirLocalIndex + value will equal 0. + + An example of the indexing of this entry is + apmReportTransactionCount.3.15.3.1.8.4.192.168.1.2.3232235788 + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { apmReportControlIndex, apmReportIndex, + apmAppDirAppLocalIndex, + apmAppDirResponsivenessType, + protocolDirLocalIndex, apmReportServerAddress, + apmNameClientID } + ::= { apmReportTable 1 } + +ApmReportEntry ::= SEQUENCE { + apmReportIndex Unsigned32, + apmReportServerAddress ProtocolDirNetworkAddress, + + + + apmReportTransactionCount Unsigned32, + apmReportSuccessfulTransactions Unsigned32, + apmReportResponsivenessMean Unsigned32, + apmReportResponsivenessMin Unsigned32, + apmReportResponsivenessMax Unsigned32, + apmReportResponsivenessB1 Unsigned32, + apmReportResponsivenessB2 Unsigned32, + apmReportResponsivenessB3 Unsigned32, + apmReportResponsivenessB4 Unsigned32, + apmReportResponsivenessB5 Unsigned32, + apmReportResponsivenessB6 Unsigned32, + apmReportResponsivenessB7 Unsigned32 +} + +apmReportIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of apmReportControlReportNumber for the report to + which this entry belongs." + ::= { apmReportEntry 1 } + +apmReportServerAddress OBJECT-TYPE + SYNTAX ProtocolDirNetworkAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network server address for this apmReportEntry. + + This is represented as an octet string with + specific semantics and length as identified + by the protocolDirLocalIndex component of the index. + + Since this object is an index variable, it is encoded in the + index according to the index encoding rules. 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. Care + should be taken to avoid values of this object that, in + conjunction with the other index variables, would result in an + index longer than SNMP's maximum of 128 subidentifiers. + + If the associated apmReportControlAggregationType is equal to + applications(4) or clients(2), then this object will be a null + string and will be encoded simply as a length octet of 0." + ::= { apmReportEntry 2 } + + + + +apmReportTransactionCount OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of transactions aggregated into this record." + ::= { apmReportEntry 3 } + +apmReportSuccessfulTransactions OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of successful transactions aggregated into + this record." + ::= { apmReportEntry 4 } + +apmReportResponsivenessMean OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The arithmetic mean of the responsiveness metrics for all + successful transactions aggregated into this record." + ::= { apmReportEntry 5 } + +apmReportResponsivenessMin OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum of the responsiveness metrics for all + successful transactions aggregated into this record." + ::= { apmReportEntry 6 } + +apmReportResponsivenessMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum of the responsiveness metrics for all + successful transactions aggregated into this record." + ::= { apmReportEntry 7 } + +-- Note that when updating a report entry, a transaction will not be +-- counted in more than 1 bucket in an entry. It will be counted in +-- the first bucket that matches, starting with Bucket 1 (B1). Note +-- that if a transaction matches 2 application types, it will update + + + +-- one bucket in each of 2 entries in this table. + +apmReportResponsivenessB1 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness was less than boundary1 value for + this application." + ::= { apmReportEntry 8 } + +apmReportResponsivenessB2 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Bucket 1 and was + greater than or equal to the boundary1 value for this + application and less than the boundary2 value for this + application." + ::= { apmReportEntry 9 } + +apmReportResponsivenessB3 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Bucket 1 or 2 + and as greater than or equal to the boundary2 value for this + application and less than the boundary3 value for this + application." + ::= { apmReportEntry 10 } + +apmReportResponsivenessB4 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Buckets 1 + through 3 and was greater than or equal to the boundary3 value + for this application and less than the boundary4 value for + this application." + ::= { apmReportEntry 11 } + + + + +apmReportResponsivenessB5 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Buckets 1 + through 4 and was greater than or equal to the boundary4 value + for this application and less than the boundary5 value for + this application." + ::= { apmReportEntry 12 } + +apmReportResponsivenessB6 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Buckets 1 + through 5 and was greater than or equal to the + boundary5 value for this application and less than the + boundary6 value for this application." + ::= { apmReportEntry 13 } + +apmReportResponsivenessB7 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful transactions aggregated into this + record whose responsiveness did not fall into Buckets 1 + through 6 and was greater than or equal to the boundary6 value + for this application." + ::= { apmReportEntry 14 } + +-- APM Transaction Table + +apmTransactionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmTransactionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transactions that are currently running + or have recently finished." + ::= { apmMibObjects 11 } + +apmTransactionEntry OBJECT-TYPE + SYNTAX ApmTransactionEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apmTransactionTable. + + The apmAppDirAppLocalIndex value in the index identifies + the application of the transaction represented by this entry. + The apmAppDirResponsivenessType value in the index + identifies the type of responsiveness metric reported by + this entry and uniquely identifies this entry when more + than one responsiveness metric is measured for a flow. + Entries will only exist in this table for those + combinations of AppLocalIndex and ResponsivenessType + that are configured 'on(1)'. + The protocolDirLocalIndex value in the index identifies + the network layer protocol of the apmTransactionServerAddress. + The apmTransactionServerAddress value in the index identifies + the network layer address of the server in the transaction + represented by this entry. + The apmNameClientID value in the index identifies the + client in the transaction represented by this entry. + + An example of the indexing of this entry is + apmTransactionCount.3.1.8.4.192.168.1.2.3232235788.2987 + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { apmAppDirAppLocalIndex, + apmAppDirResponsivenessType, + protocolDirLocalIndex, apmTransactionServerAddress, + apmNameClientID, apmTransactionID } + ::= { apmTransactionTable 1 } + +ApmTransactionEntry ::= SEQUENCE { + apmTransactionServerAddress ProtocolDirNetworkAddress, + apmTransactionID Unsigned32, + apmTransactionResponsiveness Unsigned32, + apmTransactionAge TimeInterval, + apmTransactionSuccess TruthValue +} + +apmTransactionServerAddress OBJECT-TYPE + SYNTAX ProtocolDirNetworkAddress (SIZE (1..255)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The network server address for this apmTransactionEntry. + + This is represented as an octet string with specific semantics + and length as identified by the protocolDirLocalIndex + component of the index. This object may not be the zero length + string. + + 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. Care should be taken to avoid values of this + object that, in conjunction with the other index variables, + would result in an index longer than SNMP's maximum of 128 + subidentifiers." + ::= { apmTransactionEntry 1 } + +apmTransactionID OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for this transaction amongst other + transactions sharing the same application layer protocol and + server and client addresses. Implementations may choose to use + the value of the client's source port, when possible." + ::= { apmTransactionEntry 2 } + +apmTransactionResponsiveness OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value of the responsiveness metric for this + transaction. If this transaction has completed, the final + value of the metric will be available. + + Note that this value may change over the lifetime of the + transaction and it is the final value of this metric that is + recorded as the responsiveness of the transaction for use in + other APM MIB functions." + ::= { apmTransactionEntry 3 } + +apmTransactionAge OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this transaction is still executing, this value shall be + + + + the length of time since it was started. If it has completed, + this value shall be the length of time it was executing." + ::= { apmTransactionEntry 4 } + +apmTransactionSuccess OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The success of this transaction up to this time. Once a + transaction has been marked as failed, it cannot move back + into the successful state." + ::= { apmTransactionEntry 5 } + +apmTransactionsRequestedHistorySize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of completed transactions desired to be + retained in the apmTransactionTable. If the agent doesn't have + enough resources to retain this many, it will retain as many as + possible. Regardless of this value, the agent must attempt to + keep records for all current transactions it is monitoring. + + The value of this object must persist across reboots." + ::= { apmMibObjects 12 } + +-- The APM Exception table +-- The APM Exception Table creates filters so that a management +-- station can get immediate notification of a transaction that has +-- had poor availability or responsiveness. +-- +-- This function is particularly helpful in unaggregated situations +-- where the numbers of agents is relatively high and the transaction +-- rate per agent is relatively low (such as agents for desktops or +-- dedicated to small workgroups). Polling agents in such an +-- environment would either cause scalability problems (high rate) or +-- lead to long notification delays (low rate). + + +apmExceptionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApmExceptionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table creates filters so that a management station can + get immediate notification of a transaction that has had poor + + + + availability or responsiveness. + + Each apmExceptionEntry is associated with a particular type of + transaction and is applied to all transactions of that + type. Multiple apmExceptionEntries may be associated with a + particular type of transaction. A transaction type is + identified by the value of the apmAppDirAppLocalIndex + component of the index. + + Because the quality of a transaction is not known until it is + completed, these thresholds are only applied after the + transaction has completed." + ::= { apmMibObjects 13 } + +apmExceptionEntry OBJECT-TYPE + SYNTAX ApmExceptionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apmExceptionTable. + + The apmAppDirAppLocalIndex value in the index identifies + the application this entry will monitor. + The apmAppDirResponsivenessType value in the index + identifies the type of responsiveness metric this entry will + monitor." + + INDEX { apmAppDirAppLocalIndex, + apmAppDirResponsivenessType, apmExceptionIndex } + ::= { apmExceptionTable 1 } + +ApmExceptionEntry ::= SEQUENCE { + apmExceptionIndex Unsigned32, + apmExceptionResponsivenessComparison INTEGER, + apmExceptionResponsivenessThreshold Unsigned32, + apmExceptionUnsuccessfulException INTEGER, + apmExceptionResponsivenessEvents Counter32, + apmExceptionUnsuccessfulEvents Counter32, + apmExceptionOwner OwnerString, + apmExceptionStorageType StorageType, + apmExceptionStatus RowStatus +} + +apmExceptionIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An index that uniquely identifies an entry in the + apmExceptionTable amongst other entries with equivalent index + values for apmAppDirAppLocalIndex and + apmAppDirResponsivenessType. Each such entry sets up + thresholds for a particular measurement of a particular + application." + ::= { apmExceptionEntry 1 } + +apmExceptionResponsivenessComparison OBJECT-TYPE + SYNTAX INTEGER { + none(1), + greater(2), + less(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this value is greater(2) or less(3), the associated + apmExceptionResponsivenessThreshold will be compared to this + value and an exception will be created if the responsiveness + is greater than the threshold (greater(2)) or less than the + threshold (less(3))." + ::= { apmExceptionEntry 2 } + +apmExceptionResponsivenessThreshold OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold that responsiveness metrics are compared to." + ::= { apmExceptionEntry 3 } + +apmExceptionUnsuccessfulException OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this value is on(2), an exception will be created if a + transaction of the associated type is unsuccessful." + ::= { apmExceptionEntry 4 } + +apmExceptionResponsivenessEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The total number of responsiveness exceptions generated. This + counter will be incremented even if no notification was sent + due to notifications not being configured or due to exceeding + the apmNotificationMaxRate value." + ::= { apmExceptionEntry 5 } + +apmExceptionUnsuccessfulEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of unsuccessful exceptions generated. This + counter will be incremented even if no notification was sent + due to notifications not being configured or due to exceeding + the apmNotificationMaxRate value." + ::= { apmExceptionEntry 6 } + +apmExceptionOwner 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." + ::= { apmExceptionEntry 7 } + +apmExceptionStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this apmReportControlEntry. If the value + of this object is 'permanent', no objects in this row need to + be writable." + ::= { apmExceptionEntry 8 } + +apmExceptionStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this apmExceptionEntry. The only objects in the + entry that may be modified while the entry is in the active + state are apmExceptionResponsivenessComparison, + apmExceptionResponsivenessThreshold and + apmExceptionUnsuccessfulException." + ::= { apmExceptionEntry 9 } + + + +apmThroughputExceptionMinTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Because the responsiveness for throughput-oriented + transactions is divided by the elapsed time, it can be very + sensitive to short-term performance variations for + transactions that take a short period of time. For example, + when downloading a very short file, a single dropped packet + could double or triple the total response time. + + Further, throughput is usually examined for applications that + transfer a lot of data, and when doing so it is helpful to + conceptualize transaction costs that are proportional to the + amount of data separately from those costs that are relatively + fixed (i.e., independent of the amount of data). For very + short transactions, these fixed transaction costs (handshake, + setup time, authentication, round-trip time) may dominate the + total response time for the transaction, resulting in + throughput measurements that aren't really proportional to the + network's, server's and client's combined data throughput + capability. + + This object controls the minimum number of seconds that an + throughput-based transaction must exceed before an exception + can be generated for it. If this object is set to zero, then + all throughput-based transactions are candidates for + exceptions. + + The value of this object must persist across reboots." + DEFVAL { 10 } + ::= { apmMibObjects 14 } + +apmNotificationMaxRate OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of notifications that can be generated + from this agent by the apmExceptionTable in any 60 second + period. + + The value of this object must persist across reboots." + DEFVAL { 1 } + ::= { apmMibObjects 15 } + + + + +-- APM Notifications + +apmNotifications OBJECT IDENTIFIER ::= { apm 0 } + +apmTransactionResponsivenessAlarm NOTIFICATION-TYPE + OBJECTS { apmExceptionResponsivenessThreshold, + apmTransactionResponsiveness } + STATUS current + DESCRIPTION + "Notification sent when a transaction exceeds a threshold + defined in the apmException table. The index of the + included apmExceptionResponsivenessThreshold object identifies + the apmExceptionEntry that specified the threshold. The + apmTransactionResponsiveness variable identifies the actual + transaction and its responsiveness. + + Agent implementors are urged to include additional data + objects in the alarm that may explain the reason for the + alarm. It is helpful to include such data in the alarm because + it describes the situation at the time the alarm was + generated, where polls after the fact may not provide + meaningful information. Examples of such information are CPU + load, memory utilization, network utilization, and transaction + statistics." + ::= { apmNotifications 1 } + +apmTransactionUnsuccessfulAlarm NOTIFICATION-TYPE + OBJECTS { apmExceptionResponsivenessThreshold } + STATUS current + DESCRIPTION + "Notification sent when a transaction is unsuccessful. + The index of the included apmExceptionResponsivenessThreshold + object identifies both the type of the transaction that caused + this notification as well as the apmExceptionEntry that + specified the threshold. + + Agent implementors are urged to include additional data + objects in the alarm that may explain the reason for the + alarm. It is helpful to include such data in the alarm because + it describes the situation at the time the alarm was + generated, where polls after the fact may not provide + meaningful information. Examples of such information are CPU + load, memory utilization, network utilization, and transaction + statistics." + ::= { apmNotifications 2 } + +apmCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "Describes the requirements for conformance to + the APM MIB" + MODULE -- this module + MANDATORY-GROUPS { apmAppDirGroup, apmReportGroup } + + GROUP apmUserDefinedApplicationsGroup + DESCRIPTION + "Implementation of the apmUserDefinedApplicationsGroup + is optional." + + GROUP apmTransactionGroup + DESCRIPTION + "Implementation of the apmTransactionGroup is optional." + + GROUP apmExceptionGroup + DESCRIPTION + "Implementation of the apmExceptionGroup is optional." + + GROUP apmNotificationGroup + DESCRIPTION + "Implementation of the apmNotificationGroup is optional." + + ::= { apmCompliances 1 } + +apmAppDirGroup OBJECT-GROUP + OBJECTS { apmAppDirConfig, + apmAppDirResponsivenessBoundary1, + apmAppDirResponsivenessBoundary2, + apmAppDirResponsivenessBoundary3, + apmAppDirResponsivenessBoundary4, + apmAppDirResponsivenessBoundary5, + apmAppDirResponsivenessBoundary6, + apmBucketBoundaryLastChange, apmAppDirID, + apmNameMachineName, apmNameUserName } + STATUS current + DESCRIPTION + "The APM MIB directory of applications and application verbs." + ::= { apmGroups 1 } + +apmUserDefinedApplicationsGroup OBJECT-GROUP + OBJECTS { apmHttpFilterAppLocalIndex, + apmHttpFilterServerProtocol, + apmHttpFilterServerAddress, apmHttpFilterURLPath, + apmHttpFilterMatchType, apmHttpFilterOwner, + apmHttpFilterStorageType, apmHttpFilterRowStatus, + apmHttpIgnoreUnregisteredURLs, apmHttp4xxIsFailure, + apmUserDefinedAppParentIndex, + + + + apmUserDefinedAppApplication } + STATUS current + DESCRIPTION + "Objects used for creating and managing user-defined + applications." + ::= { apmGroups 2 } + +apmReportGroup OBJECT-GROUP + OBJECTS { apmReportControlDataSource, + apmReportControlAggregationType, + apmReportControlInterval, + apmReportControlRequestedSize, + apmReportControlGrantedSize, + apmReportControlRequestedReports, + apmReportControlGrantedReports, + apmReportControlStartTime, + apmReportControlReportNumber, + apmReportControlDeniedInserts, + apmReportControlDroppedFrames, + apmReportControlOwner, + apmReportControlStorageType, + apmReportControlStatus, + apmReportTransactionCount, + apmReportSuccessfulTransactions, + apmReportResponsivenessMean, + apmReportResponsivenessMin, + apmReportResponsivenessMax, + apmReportResponsivenessB1, + apmReportResponsivenessB2, + apmReportResponsivenessB3, + apmReportResponsivenessB4, + apmReportResponsivenessB5, + apmReportResponsivenessB6, + apmReportResponsivenessB7 } + STATUS current + DESCRIPTION + "The apm report group controls the creation and retrieval of + reports that aggregate application performance." + ::= { apmGroups 3 } + +apmTransactionGroup OBJECT-GROUP + OBJECTS { apmTransactionResponsiveness, + apmTransactionAge, apmTransactionSuccess, + apmTransactionsRequestedHistorySize } + STATUS current + DESCRIPTION + "The apm transaction group contains statistics for + individual transactions." + + + + ::= { apmGroups 4 } + +apmExceptionGroup OBJECT-GROUP + OBJECTS { apmExceptionResponsivenessComparison, + apmExceptionResponsivenessThreshold, + apmExceptionUnsuccessfulException, + apmExceptionResponsivenessEvents, + apmExceptionUnsuccessfulEvents, + apmExceptionOwner, apmExceptionStorageType, + apmExceptionStatus, apmThroughputExceptionMinTime, + apmNotificationMaxRate } + STATUS current + DESCRIPTION + "The apm exception group causes notifications to be sent + whenever transactions are detected that had poor availability + or responsiveness." + ::= { apmGroups 5 } + +apmNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { apmTransactionResponsivenessAlarm, + apmTransactionUnsuccessfulAlarm } + STATUS current + DESCRIPTION + "Notifications sent by an APM MIB agent." + ::= { apmGroups 6 } + +END diff --git a/mibs/ietf/APPC-MIB b/mibs/ietf/APPC-MIB new file mode 100644 index 0000000..c9f1c4e --- /dev/null +++ b/mibs/ietf/APPC-MIB @@ -0,0 +1,5387 @@ +APPC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + DisplayString, InstancePointer, TEXTUAL-CONVENTION, DateAndTime + FROM SNMPv2-TC + + mib-2, Counter32, Gauge32, Integer32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY + FROM SNMPv2-SMI + + snanauMIB + FROM SNA-NAU-MIB + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + +appcMIB MODULE-IDENTITY + LAST-UPDATED "9512150000Z" + ORGANIZATION "IETF SNA NAU MIB Working Group" + CONTACT-INFO + + " + Michael Allen + Wall Data Inc. + P.O.Box 1120 + Duval, WA 98019, USA + Tel: 1 206 844 3505 + E-mail: mallen@hq.walldata.com + + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Zbigniew Kielczewski + Cisco Systems + 3100 Smoketree Court + Raleigh, NC 27604, USA + Tel: 1 919 871 6326 + E-mail: zbig@cisco.com + William Kwan + Jupiter Technology Inc. + 200 Prospect Street + Waltham, MA 02254, USA + Tel: 1 617 894 9300, x423 + E-mail: billk@jti.com + + Bob Moore + IBM Corporation + 800 Park Offices Drive + CNMA/664 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@ralvm6.vnet.ibm.com + " + DESCRIPTION + "This is the MIB module for objects used to manage network + devices with APPC capabilities." + +::= { snanauMIB 3 } + +appcObjects OBJECT IDENTIFIER ::= { appcMIB 1 } + appcGlobal OBJECT IDENTIFIER ::= { appcObjects 1 } + appcLu OBJECT IDENTIFIER ::= { appcObjects 2 } + appcTp OBJECT IDENTIFIER ::= { appcObjects 3 } + appcSession OBJECT IDENTIFIER ::= { appcObjects 4 } + appcConversation OBJECT IDENTIFIER ::= { appcObjects 5 } + appcCPIC OBJECT IDENTIFIER ::= { appcObjects 6 } + + +-- ********************************************************************* +-- Objects in this MIB are used to model an SNA device that supports +-- APPC LUs. +-- Following is the overall organization of the MIB. +-- +-- 1. APPC Global Objects - global values, defaults, +-- controls (including CNOS) +-- 2. APPC Defined Lu Tables - Admin and Oper +-- 3. APPC Defined LU Pair Tables - Admin and Oper +-- 4. APPC Mode Tables - Admin and Oper +-- 5. APPC TP Tables - Admin only +-- 6. APPC Session Tables - Active, Stats, History, RTP +-- 7. APPC Conversation Table - Active, History +-- 8. APPC CPIC side info - Admin and Oper +-- ********************************************************************* + +-- ********************************************************************* + +-- Textual Convention + +-- --------------------------------------------------------------------- +SnaSenseData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To facilitate their display by a Management Station, sense + data objects in the MIB are represented as DisplayStrings of + size 8. Eight '0' characters indicates that no sense data + identifying an SNA error condition is available." + + SYNTAX DisplayString (SIZE (8)) +-- ********************************************************************* +-- APPC Control Objects +-- --------------------------------------------------------------------- +-- The following objects allow: +-- * the collection of APPC Session information counters +-- to be started and stopped +-- * the collection of APPC Session RSCVs +-- to be started and stopped +-- * the collection of APPC tracing information to be started and +-- stopped +-- +-- These objects are for implementations that wish to provide +-- this level of operational control. This group is +-- conditionally mandatory in the conformance section of the MIB. +-- +-- ********************************************************************* + +-- ********************************************************************* +-- Control Admin +-- These objects contain the desired states for the controls. +-- The actual states are in the Oper objects. +-- ********************************************************************* +appcCntrlAdminGroup OBJECT IDENTIFIER ::= { appcGlobal 1 } + +appcCntrlAdminStat OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the desired state of statistics collection: + + notActive collection of counters is not active. + active collection of counters is active. + When this object is set to notActive, all of the entries are + removed from the appcSessStatsTable." + + ::= { appcCntrlAdminGroup 1 } + +appcCntrlAdminRscv OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the desired state of RSCV information collection: + notActive collection of route selection control vectors + is not active. + active collection of route selection control vectors + is active." + + ::= { appcCntrlAdminGroup 2 } + +appcCntrlAdminTrace OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the desired state of tracing: + + notActive collection of tracing information is not active + active collection of tracing information is active" + + ::= { appcCntrlAdminGroup 3 } + +appcCntrlAdminTraceParm OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the parameter to be used in conjunction with + activating tracing. The actual content is implementation + dependent." + + ::= { appcCntrlAdminGroup 4 } + +-- ********************************************************************* + +-- Control Oper +-- These objects contain the actual states of the controls. +-- ********************************************************************* +appcCntrlOperGroup OBJECT IDENTIFIER ::= { appcGlobal 2 } + +appcCntrlOperStat OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current collection options in effect: + + notActive collection of counters is not active. + active collection of counters is active. + + Statistical entries are present in the appcSessStatsTable + only when the value of this object is 'active'." + + ::= { appcCntrlOperGroup 1 } + +appcCntrlOperStatTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the appcCntrlOperStat object last changed. + This time is in hundreds of a second." + + ::= { appcCntrlOperGroup 2 } + +appcCntrlOperRscv OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current collection options in effect: + + notActive collection of route selection control vectors + is not active. + active collection of route selection control vectors + is active." + ::= { appcCntrlOperGroup 3 } + +appcCntrlOperRscvTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the appcCntrlOperRscv object last changed. + This time is in hundreds of a second." + + ::= { appcCntrlOperGroup 4 } + +appcCntrlOperTrace OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state of tracing: + + notActive collection of tracing information is not active. + active collection of tracing information is active." + + ::= { appcCntrlOperGroup 5 } + +appcCntrlOperTraceTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the appcCntrlOperTrace object last changed. + This time is in hundreds of a second." + + ::= { appcCntrlOperGroup 6 } + +appcCntrlOperTraceParm OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the parameter used in conjunction with activating + tracing. The actual content is implementation dependent." + + ::= { appcCntrlOperGroup 7 } + +-- ****************************************************************** + +-- +-- APPC global settings +-- +-- ****************************************************************** +appcGlobalObjects OBJECT IDENTIFIER ::= { appcGlobal 3 } + +appcUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time, in hundredths of a second, since the + APPC portion of the system was last reinitialized." + + ::= { appcGlobalObjects 1 } + +appcDefaultModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the mode name to be used under the following + conditions: + + When an incoming BIND request contains a mode name not + defined at the local node. The parameters defined for + this mode are used for the inbound implicit mode + capability. + + When an APPC program issues an [MC_]ALLOCATE, + [MC_]SEND_CONVERSATION, or CNOS verb, or when a CPI-C + program issues an Allocate (CMALLC) call, + specifying a mode name not defined at the local node. The + parameters defined for this mode are used for the outbound + implicit mode capability. + + This mode name must match a defined entry in the + appcModeAdminTable." + + ::= { appcGlobalObjects 2 } + +appcDefaultLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the local LU that is to serve as the + default LU. This is the default LU to which are routed inbound + BIND requests that exclude the secondary LU name. This field + is from 1 to 17 characters in length, including a period (.) + which separates the NetId from the NAU name if the NetId is + present. This local LU name must match a defined entry in the + appcLluAdminTable." + + ::= { appcGlobalObjects 3 } + +appcDefaultImplInbndPlu OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether or not inbound implicit partner LU support + is enabled. The following values are defined: + + no - Specifies that inbound implicit partner LU support + is disabled, which means that an incoming bind that + specifies a partner LU that is not defined at the + local node will be rejected. + + yes - Specifies that inbound implicit partner LU support + is enabled, which provides the capability to accept + an incoming BIND request that contains a partner LU + name that is not defined at the local node." + + ::= { appcGlobalObjects 4 } + +appcDefaultMaxMcLlSndSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum size of a logical record to be used for + a mapped conversation when sending data to either the inbound + or outbound implicit partner LU. This size is the maximum + number of bytes in a single logical record, as indicated in the + LL field of the record. The default value is 32767. + + Note that this object does not limit the maximum size that an + application program can supply on the Send Data call for a + mapped conversation." + + ::= { appcGlobalObjects 5 } + +appcDefaultFileSpec OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..80)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local file specification that is to be searched by the + APPC attach manager when no DEFINE_TP verb has been issued + for the TP name received on an incoming attach. In this + case, the attach manager will attempt to start a program + whose file name is the same as the incoming TP name. If + found, the program is loaded. If not found, the attach is + rejected. + + The value '*' indicates that the normal search path for + executable programs is to be used for locating an undefined + transaction program. + + A null string indicates that there is no default file + specification for undefined transaction programs." + + ::= { appcGlobalObjects 6 } + +appcDefaultTpOperation OBJECT-TYPE + SYNTAX INTEGER { + other(1), + queuedOperatorStarted(2), + queuedOperatorPreloaded(3), + queuedAmStarted(4), + nonqueuedAmStarted(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies how the program will be started. + + other - Specifies that the default TP operation is none of + the methods specified below. It may be a + product-specific method. + + queuedOperatorStarted - Specifies that one version of the + program will be run at a time. If an incoming + attach arrives and the program has not been started + yet, APPC will issue a message to the operator to + start the specified program. Subsequent attaches + that arrive while the program is active will be + queued. + + queuedOperatorPreloaded - Specifies that one version + of the program will be run at a time. If an + incoming attach arrives and the program has not + been started yet, the Attach will be rejected. The + APPC attach manager determines that a TP has + started upon reception of an APPC RECEIVE_ALLOCATE + verb, or a CPI-C Accept_Conversation (CMACCP) or + Specify_Local_TP_Name (CMSLTP) call. No message is + sent to the operator. Subsequent attaches that + arrive while the program is active are queued. + + queuedAmStarted - Specifies that one version of the + program will be run at a time and will be started + by the APPC attach manager. Subsequent attaches + that arrive while the program is active will be + queued. + + nonqueuedAmStarted - Specifies that multiple copies of + the program will be run at a time and will be + started by the APPC attach manager. " + + ::= { appcGlobalObjects 7 } + +appcDefaultTpConvSecRqd OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether or not conversation security will be used + for default TPs. + + no - Specifies that the incoming attach does not have to + contain security information. + yes - Specifies that the incoming attach must contain + valid authentication information (e.g., user ID and + password)." + + ::= { appcGlobalObjects 8 } + +appcLocalCpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the local control point. This field is + from 0 to 17 characters in length, including a period (.) which + separates the NetId from the NAU name if the NetId is present. + A null string indicates that the value is unknown." + + ::= { appcGlobalObjects 9 } + +appcActiveSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the total number of active APPC sessions supported + by this implementation. Sessions for which both LUs are local + are counted twice." + + ::= { appcGlobalObjects 10 } + +appcActiveHprSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the total number of active HPR APPC sessions." + + ::= { appcGlobalObjects 11 } + +-- ****************************************************************** +-- APPC CNOS control +-- +-- This group contains objects for issuing APPC Change-Number-of-Session +-- (CNOS) commands to a specific mode. Specifically, the commands +-- supported are: +-- INITIALIZE_SESSION_LIMIT +-- CHANGE_SESSION_LIMIT +-- RESET_SESSION_LIMIT +-- +-- +-- ****************************************************************** +appcCnosControl OBJECT IDENTIFIER ::= { appcGlobal 4 } + + +appcCnosCommand OBJECT-TYPE + SYNTAX INTEGER { + initSesslimit(1), + changeSesslimit(2), + resetSesslimit(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the CNOS command or verb to issue. First set the + values of the particular CNOS parameter objects (from the range + { appcCnosControl 2 } through { appcCnosControl 8 }) that apply + to the CNOS command to be executed, set the three CNOS target + objects ({ appcCnosControl 9 } through { appcCnosControl 11 }), + then set this object to the command to be executed. + + Here is the list of parameter objects that must be set for each + of the CNOS commands: + + INIT_SESSION_LIMIT - + appcCnosMaxSessLimit + appcCnosMinCwinLimit + appcCnosMinClosLimit + appcCnosTargetLocLuName + appcCnosTargetParLuName + appcCnosTargetModeName + + CHANGE_SESSION_LIMIT - + appcCnosMaxSessLimit + appcCnosMinCwinLimit + appcCnosMinClosLimit + appcCnosResponsible + appcCnosTargetLocLuName + appcCnosTargetParLuName + appcCnosTargetModeName + + RESET_SESSION_LIMIT - + appcCnosResponsible + appcCnosDrainPart + appcCnosForce + appcCnosTargetLocLuName + appcCnosTargetParLuName + appcCnosTargetModeName + " + + ::= { appcCnosControl 1 } + +appcCnosMaxSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the maximum value that the local LU is to use, + during CNOS processing, for the session limit. The local LU, + as a target LU, will negotiate a higher session limit it + receives in the CNOS request down to this maximum value. The + local LU, as a source LU, will restrict the session limit it + sends in a CNOS request to a value less than or equal to this + maximum value. + + If set (i.e., greater than 0), this overrides the maximum + session limit defined in the appcModeAdminTable. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies to the INITIALIZE_SESSION_LIMIT and + CHANGE_SESSION_LIMIT verbs." + + DEFVAL { 0 } + + ::= { appcCnosControl 2 } + +appcCnosMinCwinLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the default minimum contention winner sessions + limit. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies to the INITIALIZE_SESSION_LIMIT and + CHANGE_SESSION_LIMIT verbs." + + DEFVAL { 0 } + + ::= { appcCnosControl 3 } + +appcCnosMinClosLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the default minimum contention loser sessions limit. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies to the INITIALIZE_SESSION_LIMIT and + CHANGE_SESSION_LIMIT verbs." + DEFVAL { 0 } + + ::= { appcCnosControl 4 } + +appcCnosDrainSelf OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether the local LU is draining its conversations + for this mode. When a mode session limit is reset (via a CNOS + RESET_SESSION_LIMIT request), the local LU could be set to + process all queued conversations before deactivating all of the + sessions (using the SNA Bracket Initiation Stopped or BIS + protocol). + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies only to the RESET_SESSION_LIMIT verb." + + DEFVAL { no } + + ::= { appcCnosControl 5 } + +appcCnosDrainPart OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether the partner LU is draining its conversations + for this mode. When a mode session limit is reset (via a CNOS + RESET_SESSION_LIMIT request), the partner LU could be set to + process all queued conversations before deactivating all of the + sessions (using the SNA Bracket Initiation Stop or BIS + protocol). + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies only to the RESET_SESSION_LIMIT verb." + DEFVAL { yes } + + ::= { appcCnosControl 6 } + +appcCnosResponsible OBJECT-TYPE + SYNTAX INTEGER { + source(1), + target(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies which LU is responsible for selecting and + deactivating sessions as a result of a change that decreases + the session limit or the maximum number of contention winner + sessions for the source or target LU. If no session need to be + deactivated, this parameter is ignored. + + source - specifies that the source (local) LU is + responsible. The target (partner) LU + cannot negotiate this value. + target - specifies that the target (partner) LU is + responsible. The target LU can negotiate + this value to source. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies to the RESET_SESSION_LIMIT and + CHANGE_SESSION_LIMIT verbs." + + DEFVAL { source } + + ::= { appcCnosControl 7 } + +appcCnosForce OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether the local LU should force the resetting of + the session limit when certain error conditions occur that + prevent the successful exchange of CNOS request and reply. + + This parameter should be set to the desired value before + setting the command (appcCnosCommand). + + This parameter applies only to the RESET_SESSION_LIMIT verb." + + DEFVAL { no } + + ::= { appcCnosControl 8 } + +appcCnosTargetLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SNA name of the local LU to which the CNOS command is + to be applied. This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present. + + This object should be set to the desired value before setting + the command (appcCnosCommand). + + This parameter applies to all CNOS verbs." + + ::= { appcCnosControl 9 } + +appcCnosTargetParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SNA name of the partner LU to which the CNOS command is + to be applied. This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present. + + This object should be set to the desired value before setting + the command (appcCnosCommand). + + This parameter applies to all CNOS verbs." + + ::= { appcCnosControl 10 } + +appcCnosTargetModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the mode name to which the CNOS command is to be + applied. + + This object should be set to the desired value before setting + the command (appcCnosCommand). + + This parameter applies to all CNOS verbs." + + ::= { appcCnosControl 11 } + + +-- ********************************************************************* +-- APPC LU information +-- --------------------------------------------------------------------- +-- Local LU +-- Partner LU +-- Mode +-- ********************************************************************* + +-- ********************************************************************* +-- APPC Local LU +-- +-- The entries in the following tables provide information for +-- independent and dependent LU 6.2. +-- +-- ********************************************************************* + +-- ********************************************************************* +-- APPC Local LU Admin Table +-- Objects in this table contain default or expected configuration +-- values for local 6.2 LUs. +-- ********************************************************************* + +appcLluAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcLluAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Local LU Admin Table." + + ::= { appcLu 1 } + +appcLluAdminEntry OBJECT-TYPE + SYNTAX AppcLluAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about local APPC LUs. " + INDEX { appcLluAdminName } + + ::= { appcLluAdminTable 1 } + +AppcLluAdminEntry ::= SEQUENCE { + appcLluAdminName DisplayString, + appcLluAdminDepType INTEGER, + appcLluAdminLocalAddress OCTET STRING, + appcLluAdminSessLimit Integer32, + appcLluAdminBindRspMayQ INTEGER, + appcLluAdminCompression INTEGER, + appcLluAdminInBoundCompLevel INTEGER, + appcLluAdminOutBoundCompLevel INTEGER, + appcLluAdminCompRleBeforeLZ INTEGER, + appcLluAdminAlias DisplayString + } + +appcLluAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the local LU. This field is from 1 to + 17 characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcLluAdminEntry 1 } + +appcLluAdminDepType OBJECT-TYPE + SYNTAX INTEGER { + dependent(1), + independent(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies whether the LU is dependent or + independent." + + ::= { appcLluAdminEntry 2 } + +appcLluAdminLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local address for this LU is a byte with a value ranging + from 0 to 254. For dependent LUs, this value ranges from 1 to + 254; for independent LUs this value is always 0." + + ::= { appcLluAdminEntry 3 } + +appcLluAdminSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of sessions supported by this LU." + + ::= { appcLluAdminEntry 4 } + +appcLluAdminBindRspMayQ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not the local LU, as the sender of a BIND + request, allows a partner partner LU to delay sending the BIND + response if the partner LU cannot process the BIND request + immediately." + + ::= { appcLluAdminEntry 5 } + +appcLluAdminCompression OBJECT-TYPE + SYNTAX INTEGER { + prohibited(1), + required(2), + negotiable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether compression is supported. The local LU uses + this value for negotiation during session activation + (SNA BIND). + + prohibited - specifies that no compression is to be used. + required - specifies that compression is required. + negotiable - specifies that the usage of compression + is to be negotiated between the LUs. The + level of compression is also negotiated." + + ::= { appcLluAdminEntry 6 } + +appcLluAdminInBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + inbound data. The local LU uses this value in conjunction with + appcLluAdminCompression for negotiation during session + activation (SNA BIND). + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger number bits used for the code, the more + storage space is required for the dictionary, but + the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcLluAdminEntry 7 } + +appcLluAdminOutBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + outbound data. The local LU uses this value in conjunction + with appcLluAdminCompression for negotiation during session + activation (SNA BIND). + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcLluAdminEntry 8 } + +appcLluAdminCompRleBeforeLZ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether run-length encoding is to be applied to the + data before applying Lempel-Ziv-like compression. The local LU + uses this value for negotiation during session activation (SNA + BIND). This parameter is only supported if LZ compression is + used." + + ::= { appcLluAdminEntry 9 } + +appcLluAdminAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the local LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcLluAdminEntry 10 } + + +-- ********************************************************************* +-- APPC Local LU Oper Table + +-- Objects in this table contain current operational values, such +-- as state values or negotiated parameters, for local 6.2 LUs. +-- ********************************************************************* + +appcLluOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcLluOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Local LU Operational Table." + ::= { appcLu 2 } + +appcLluOperEntry OBJECT-TYPE + SYNTAX AppcLluOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about local APPC LUs." + + INDEX { appcLluOperName } + + ::= { appcLluOperTable 1 } + +AppcLluOperEntry ::= SEQUENCE { + appcLluOperName DisplayString, + appcLluOperDepType INTEGER, + appcLluOperLocalAddress OCTET STRING, + appcLluOperSessLimit Integer32, + appcLluOperBindRspMayQ INTEGER, + appcLluOperCompression INTEGER, + appcLluOperInBoundCompLevel INTEGER, + appcLluOperOutBoundCompLevel INTEGER, + appcLluOperCompRleBeforeLZ INTEGER, + appcLluOperAlias DisplayString, + appcLluOperActiveSessions Gauge32 + } + +appcLluOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the local LU. This field is from 1 to + 17 characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcLluOperEntry 1 } + +appcLluOperDepType OBJECT-TYPE + SYNTAX INTEGER { + dependent(1), + independent(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies whether the LU is dependent or + independent." + + ::= { appcLluOperEntry 2 } + +appcLluOperLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local address for this LU is a byte with a value ranging + from 0 to 254. For dependent LUs, this value ranges from 1 to + 254; for independent LUs this value is always 0." + + ::= { appcLluOperEntry 3 } + +appcLluOperSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of sessions supported by this LU." + + ::= { appcLluOperEntry 4 } + +appcLluOperBindRspMayQ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not the local LU, as the sender of a BIND + request, allows a partner LU to delay sending the BIND + response if the partner LU cannot process the BIND request + immediately." + + ::= { appcLluOperEntry 5 } + +appcLluOperCompression OBJECT-TYPE + SYNTAX INTEGER { + prohibited(1), + required(2), + negotiable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether compression is supported. The local LU uses + this value for negotiation during session activation (SNA + BIND). + + prohibited - specifies that no compression is to be used. + required - specifies that compression is required. + negotiable - specifies that the usage of compression + is to be negotiated between the LUs. The + level of compression is also negotiated." + + ::= { appcLluOperEntry 6 } + +appcLluOperInBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + inbound data. The local LU uses this value in conjunction with + appcLluOperCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + ::= { appcLluOperEntry 7 } + +appcLluOperOutBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + outbound data. The local LU uses this value in conjunction + with appcLluAdminCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcLluOperEntry 8 } + +appcLluOperCompRleBeforeLZ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether run-length encoding is to be applied to the + data before applying Lempel-Ziv-like compression. The local LU + uses this value for negotiation during session activation (SNA + BIND). This parameter is only supported if LZ compression is + used." + + ::= { appcLluOperEntry 9 } + +appcLluOperAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the local LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcLluOperEntry 10 } + +appcLluOperActiveSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the total number of active APPC sessions for this + LU." + + ::= { appcLluOperEntry 11 } + +-- ********************************************************************* +-- APPC LU Pair Admin Table +-- Objects in this table contain default or expected configuration +-- values for 6.2 LU pairs. An LU pair consists of a local LU and +-- a partner LU, which may or may not be local. +-- ********************************************************************* +appcLuPairAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcLuPairAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Partner LU administrative Table" + + ::= { appcLu 3 } + +appcLuPairAdminEntry OBJECT-TYPE + SYNTAX AppcLuPairAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Partner LU Information Table. + It is indexed by the local and partner LU Names." + + INDEX { appcLuPairAdminLocLuName, + appcLuPairAdminParLuName } + + ::= { appcLuPairAdminTable 1 } + +AppcLuPairAdminEntry ::= SEQUENCE { + + appcLuPairAdminLocLuName DisplayString, + appcLuPairAdminParLuName DisplayString, + appcLuPairAdminParLuAlias DisplayString, + appcLuPairAdminSessLimit Integer32, + appcLuPairAdminSessSec INTEGER, + appcLuPairAdminSecAccept INTEGER, + appcLuPairAdminLinkObjId InstancePointer, + appcLuPairAdminParaSessSup INTEGER + + } + +appcLuPairAdminLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this partner LU + definition applies. This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the partner LU + definition applies to all local LUs, and not just to a single + local LU." + + ::= { appcLuPairAdminEntry 1 } + +appcLuPairAdminParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU. + This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present." + ::= { appcLuPairAdminEntry 2 } + +appcLuPairAdminParLuAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the partner LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcLuPairAdminEntry 3 } + +appcLuPairAdminSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of sessions supported by this partner LU." + + ::= { appcLuPairAdminEntry 4 } + +appcLuPairAdminSessSec OBJECT-TYPE + SYNTAX INTEGER { + required(1), + accepted(2), + notAllowed(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the type of session-level security information that + a local LU will accept on BIND requests it receives from the + partner LU. + + required - Specifies that the BIND request must carry + session level verification information that + will be verified upon receipt. + accepted - Specifies that the BIND request may carry + session level verification information that + will be verified upon receipt. + notAllowed - Specifies that the BIND request must not carry + session level verification information." + ::= { appcLuPairAdminEntry 5 } + + +appcLuPairAdminSecAccept OBJECT-TYPE + SYNTAX INTEGER { + none(1), + conversation(2), + alreadyVerified(3), + persistentVerification(4), + aVandpV(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies support for different levels of access security + information in ATTACH requests received from this partner LU. + + Possible values are: + + none - No access security information will be + accepted on allocation requests (ATTACH) from + this LU. + conversation + - Allocation requests will not be accepted that + include already verified or persistent + verification indicators. Accept + conversation-level access security + information, which must include both a user + Id and password, and may also include a + profile. + alreadyVerified + - Allocation requests will be accepted that + include already verified indicators. + Persistent verification indicators will not + be accepted. + persistentVerification + - Allocation requests will be accepted that + include persistent verification indicators. + Already verified indicators will not be + accepted. + aVandpV - Allocation requests will be accepted that + include already verified or persistent + verification indicators." + + ::= { appcLuPairAdminEntry 6 } + +appcLuPairAdminLinkObjId OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the link associated with this partner LU. This + value points to the row in the table containing information on + the link instance. (e.g., the sdlcLSAdminTable of the SNA DLC + MIB module). This object may be NULL if the link is not + specified or if a link is not applicable (as for APPN-level + nodes)." + + ::= { appcLuPairAdminEntry 7 } + +appcLuPairAdminParaSessSup OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defined Parallel Sessions Supported. + + Indicates whether or not multiple sessions between the partner + LU and its associated local LU are permitted. Parallel session + support also indicates that Change Number of Sessions (CNOS) + will be used to negotiate session limits between the LUs." + + ::= { appcLuPairAdminEntry 8 } + + +-- ********************************************************************* +-- APPC LU Pair Oper Table +-- Objects in this table contain current operational values, such +-- as state values or negotiated parameters, for 6.2 LU pairs. +-- ********************************************************************* + +appcLuPairOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcLuPairOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of active partner/local LU pairs. Two entries are + present in the table when both LUs in a pair are local." + ::= { appcLu 4 } + +appcLuPairOperEntry OBJECT-TYPE + SYNTAX AppcLuPairOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry representing one partner/local LU pair." + + INDEX { appcLuPairOperLocLuName, + appcLuPairOperParLuName } + + ::= { appcLuPairOperTable 1 } + +AppcLuPairOperEntry ::= SEQUENCE { + appcLuPairOperLocLuName DisplayString, + appcLuPairOperParLuName DisplayString, + appcLuPairOperParLuAlias DisplayString, + appcLuPairOperSessLimit Integer32, + appcLuPairOperSessSec INTEGER, + appcLuPairOperSecAccept INTEGER, + appcLuPairOperLinkObjId InstancePointer, + appcLuPairOperParaSessSup INTEGER, + appcLuPairOperParaSessSupLS INTEGER, + appcLuPairOperState INTEGER + } + +appcLuPairOperLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + + If this object has the same value as appcLluOperName, + then the two entries being indexed apply to the same + resource (specifically, to the same local LU)." + + ::= { appcLuPairOperEntry 1 } + +appcLuPairOperParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU. + This field is from 1 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name if the NetId is present." + + ::= { appcLuPairOperEntry 2 } + +appcLuPairOperParLuAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the partner LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcLuPairOperEntry 3 } + +appcLuPairOperSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of sessions supported by this partner LU." + + ::= { appcLuPairOperEntry 4 } + +appcLuPairOperSessSec OBJECT-TYPE + SYNTAX INTEGER { + required(1), + accepted(2), + notAllowed(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the type of security information that a local LU + will accept on BIND requests it receives from the partner LU. + + required - Specifies that the BIND request must carry + session level verification information that + will be verified upon receipt. + accepted - Specifies that the BIND request may carry + session level verification information that + will be verified upon receipt. + notAllowed - Specifies that the BIND request must not carry + session level verification information." + + ::= { appcLuPairOperEntry 5 } + +appcLuPairOperSecAccept OBJECT-TYPE + SYNTAX INTEGER { + none(1), + conversation(2), + alreadyVerified(3), + persistentVerification(4), + aVandpV(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies support for different levels of security acceptance + information in ATTACH requests received from this partner LU. + + Possible values are: + + none - No access security information will be + accepted on allocation requests (ATTACH) from + this LU. + conversation + - Allocation requests will not be accepted that + include already verified or persistent + verification indicators. Accept + conversation-level access security + information, which must include both a user + Id and password, and may also include a + profile. + alreadyVerified + - Allocation requests will be accepted that + include already verified indicators. + Persistent verification indicators will not + be accepted. + persistentVerification + - Allocation requests will be accepted that + include persistent verification indicators. + Already verified indicators will not be + accepted. + aVandpV - Allocation requests will be accepted that + include already verified or persistent + verification indicators." + ::= { appcLuPairOperEntry 6 } + +appcLuPairOperLinkObjId OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the link associated with this partner LU. This + value points to the row in the table containing information on + the link instance. (e.g., the sdlcLSAdminTable of the SNA DLC + MIB module). This object may be NULL if the link is not + specified or if a link is not applicable (as for APPN-level + nodes)." + + ::= { appcLuPairOperEntry 7 } + +appcLuPairOperParaSessSup OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Active Parallel Sessions Supported. + + Indicates whether or not multiple session between the partner + LU and its associated local LU are permitted. Parallel + session support also indicates that Change Number of Sessions + (CNOS) will be used to negotiate session limits between the + LUs." + + ::= { appcLuPairOperEntry 8 } + +appcLuPairOperParaSessSupLS OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Active Parallel Sessions Supported - last starting value. + + This object represents the initial value proposed by the local + LU the last time this capability was negotiated, i.e., when + the first session was bound between the local LU and its + partner." + + ::= { appcLuPairOperEntry 9 } + +appcLuPairOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive (1), + active (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current operational state of this LU + pair: + + inactive (1) - no active or pending session exists + between the LUs. + active (2) - an active or pending session exists + between the LUs." + + ::= { appcLuPairOperEntry 10 } + + +-- ********************************************************************* +-- APPC Mode Admin Table +-- Objects in this table contain default or expected configuration +-- values for session modes. +-- Modes that have active sessions appear in the appcModeOperTable. +-- ********************************************************************* +appcModeAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcModeAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Mode Table" + + ::= { appcLu 5 } + +appcModeAdminEntry OBJECT-TYPE + SYNTAX AppcModeAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Mode Information Table." + INDEX { appcModeAdminLocLuName, + appcModeAdminParLuName, + appcModeAdminModeName } + + ::= { appcModeAdminTable 1 } + +AppcModeAdminEntry ::= SEQUENCE { + appcModeAdminLocLuName DisplayString, + appcModeAdminParLuName DisplayString, + appcModeAdminModeName DisplayString, + appcModeAdminCosName DisplayString, + appcModeAdminSessEndTpName DisplayString, + appcModeAdminMaxSessLimit Integer32, + appcModeAdminMinCwinLimit Integer32, + appcModeAdminMinClosLimit Integer32, + appcModeAdminConWinAutoActLmt Integer32, + appcModeAdminRecvPacWinSz Integer32, + appcModeAdminSendPacWinSz Integer32, + appcModeAdminPrefRecvRuSz Integer32, + appcModeAdminPrefSendRuSz Integer32, + appcModeAdminRecvRuSzUpBnd Integer32, + appcModeAdminSendRuSzUpBnd Integer32, + appcModeAdminRecvRuSzLoBnd Integer32, + appcModeAdminSendRuSzLoBnd Integer32, + appcModeAdminSingSessReinit INTEGER, + appcModeAdminCompression INTEGER, + appcModeAdminInBoundCompLevel INTEGER, + appcModeAdminOutBoundCompLevel INTEGER, + appcModeAdminCompRleBeforeLZ INTEGER, + appcModeAdminSyncLvl INTEGER, + appcModeAdminCrypto INTEGER + + } + +appcModeAdminLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this mode definition + applies. This field is from 1 to 17 characters in length, + including a period (.) which separates the NetId from the + NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the mode definition + applies to all local LUs for the SNA node identified by + appcLocalCpName, and not just to a single local LU." + + ::= { appcModeAdminEntry 1 } + +appcModeAdminParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU to which this mode definition + applies. This field is from 1 to 17 characters in length, + including a period (.) which separates the NetId from the + NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the mode definition + applies to all partner LUs for the SNA node identified by + appcModeAdminLocLuName, and not just to a single partner LU." + + ::= { appcModeAdminEntry 2 } + +appcModeAdminModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the mode name. A mode defines the characteristics + for a group of sessions. The mode name can be blank (8 + space characters). " + + ::= { appcModeAdminEntry 3 } + +appcModeAdminCosName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the class of service (COS) name associated with + this mode. If the implementation does not support COS names, + a null string is returned." + + ::= { appcModeAdminEntry 4 } + +appcModeAdminSessEndTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the transaction program (TP) to be + invoked when a session using this mode is deactivated or ended. + If no such TP is defined, this object is a null string. When + the TP name consists entirely of displayable EBCDIC code + points, it is mapped directly to the equivalent ASCII display + string. However, registered TP names always have a non- + displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes). + " + + ::= { appcModeAdminEntry 5 } + +appcModeAdminMaxSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum value that the local LU is to use, + during CNOS processing, for the session limit. The local LU, + as a target LU, will negotiate a higher session limit it + receives in the CNOS request down to this maximum value. The + local LU, as a source LU, will restrict the session limit it + sends in a CNOS request to a value less than or equal to this + maximum value." + + ::= { appcModeAdminEntry 6 } + +appcModeAdminMinCwinLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the default minimum contention winner sessions + limit. Some implementations internally issue a + INITIALIZE_SESSION_LIMIT verb when a Mode is created. This + value is the parameter used for the CNOS processing of that + verb. This parameter is not used when issuing an explicit + INITIALIZE_SESSION_LIMIT verb. The equivalent object in + appcCnosCommandTable is used." + ::= { appcModeAdminEntry 7 } + +appcModeAdminMinClosLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the default minimum contention loser sessions limit. + Some implementations internally issue a + INITIALIZE_SESSION_LIMIT verb when a Mode is created. This + value is the parameter used for the CNOS processing of that + verb. This is the same as target minimum contention winner + sessions. This parameter is not used when issuing an explicit + INITIALIZE_SESSION_LIMIT verb. The equivalent object in + appcCnosCommandTable is used." + + ::= { appcModeAdminEntry 8 } + +appcModeAdminConWinAutoActLmt OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the limit on the number of contention winner + sessions to be automatically activated when the minimum number + of contention winner sessions increases (as a result of CNOS + processing). The actual number of sessions activated is the + lesser of this value and the new minimum number of contention + winner sessions. " + ::= { appcModeAdminEntry 9 } + +appcModeAdminRecvPacWinSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the size of the receive pacing window. This value is + used for negotiation during session activations (SNA BIND). + + The meaning of this value when set to 0 depends on whether + adaptive pacing is supported: + adaptive pacing No limit on window size + fixed pacing No pacing is supported" + + ::= { appcModeAdminEntry 10 } + +appcModeAdminSendPacWinSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the size of the send pacing window. This value is + used for negotiation during session activations (SNA BIND). + + The meaning of this value when set to 0 depends on whether + adaptive pacing is supported: + adaptive pacing No limit on window size + fixed pacing No pacing is supported" + + ::= { appcModeAdminEntry 11 } + +appcModeAdminPrefRecvRuSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the preferred receive RU (Request Unit) size of + normal-flow requests on the sessions. This value must be less + than or equal to the value specified in + appcModeAdminRecvRuSzUpBnd and greater than or equal to the + value specified in appcModeAdminRecvRuSzLoBnd. + + The local LU specifies this value for the receive maximum RU + size in session activation (SNA BIND) requests and responses. + It will allow negotiation up to the appcModeAdminRecvRuSzUpBnd + value or down to the appcModeAdminRecvRuSzLoBnd value." + ::= { appcModeAdminEntry 12 } + +appcModeAdminPrefSendRuSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the preferred send RU (Request Unit) size of normal- + flow requests on the sessions. This value must be less than or + equal to the value specified in appcModeAdminSendRuSzUpBnd and + greater than or equal to the value specified in + appcModeAdminSendRuSzLoBnd. + + The local LU specifies this value for the send maximum RU + size in session activation (SNA BIND) requests and responses. + It will allow negotiation up to the appcModeAdminSendRuSzUpBnd + value or down to the appcModeAdminSendRuSzLoBnd value." + + ::= { appcModeAdminEntry 13 } + +appcModeAdminRecvRuSzUpBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the upper bound for the maximum receive RU + (Request Unit) size of normal-flow requests. This is used + for negotiation during session activations (SNA BIND). " + + ::= { appcModeAdminEntry 14 } + +appcModeAdminSendRuSzUpBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the upper bound for the maximum send RU (Request + Unit) size of normal-flow requests. This is used for + negotiation during session activations (SNA BIND). " + + ::= { appcModeAdminEntry 15 } + +appcModeAdminRecvRuSzLoBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the lower bound for the maximum receive RU (Request + Unit) size of normal-flow requests. This is used for + negotiation during session activations (SNA BIND). " + + ::= { appcModeAdminEntry 16 } + +appcModeAdminSendRuSzLoBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the lower bound for the maximum send RU (Request + Unit) size of normal-flow requests. This is used for + negotiation during session activations (SNA BIND). " + + ::= { appcModeAdminEntry 17 } + +appcModeAdminSingSessReinit OBJECT-TYPE + SYNTAX INTEGER { + notApplicable(1), + operatorControlled(2), + primaryOnly(3), + secondaryOnly(4), + primaryOrSecondary(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the responsibility for session reinitiation of a + single session with the partner LU (when the session goes + down). The local LU uses this parameter to specify the session + reinitiation responsibility in session activation (SNA BIND) + requests and responses. + + notApplicable - specifies that this parameter has + no meaning since the value of + appcLuPairAdminParaSessSup is yes. + The field in the SNA BIND is + reserved (set to zero). + operatorControlled - specifies that neither LU will + automatically attempt to reinitiate + the session. The operator on either + side will manually reactivate the + session. A contention race (both + side reinitiating at the same time) + is won by the LU with the + lexicographically greater fully- + qualified LU name. + primaryOnly - specifies that the primary LU will + automatically attempt to reinitiate + the session. + secondaryOnly - specifies that the secondary LU will + automatically attempt to reinitiate + the session. + primaryOrSecondary - specifies that either the primary or + the secondary may automatically + attempt to reinitiate the session. + A contention race is handled the + same way as with operatorControlled. + " + ::= { appcModeAdminEntry 18 } + +appcModeAdminCompression OBJECT-TYPE + SYNTAX INTEGER { + prohibited(1), + required(2), + negotiable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether compression is supported. The local LU uses + this value for negotiation during session activation (SNA + BIND). + + prohibited - specifies that no compression is to be used. + required - specifies that compression is required. + negotiable - specifies that the usage of compression + is to be negotiated between the LUs. The + level of compression is also negotiated." + + ::= { appcModeAdminEntry 19 } + +appcModeAdminInBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + inbound data. The local LU uses this value in conjunction with + appcModeAdminCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcModeAdminEntry 20 } + +appcModeAdminOutBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + outbound data. The local LU uses this value in conjunction + with appcModeAdminCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcModeAdminEntry 21 } + +appcModeAdminCompRleBeforeLZ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether run-length encoding is to be applied to the + data before applying Lempel-Ziv-like compression. The local LU + uses this value for negotiation during session activation (SNA + BIND). This parameter is only supported if LZ compression is + used." + + ::= { appcModeAdminEntry 22 } + +appcModeAdminSyncLvl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + noneConfirm(2), + noneConfirmSyncPoint(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the sync level support. This value is used for + negotiation during session activations (SNA BIND). + + none - No sync level is supported. + noneConfirm - None and Confirm levels supported. + noneConfirmSyncPoint - None, Confirm, and Sync Point is + supported. + " + + ::= { appcModeAdminEntry 23 } + +appcModeAdminCrypto OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + mandatory(2), + selective(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether session-level cryptography is supported. + This value is used for negotiation during session activations + (SNA BIND). + notSupported - Specifies session-level cryptography + is not to be used. + mandatory - Specifies session-level cryptography + must be used. + selective - Specifies session-level cryptography + is required just on selected requests + flowing on the sessions." + + ::= { appcModeAdminEntry 24 } + +-- ********************************************************************* +-- APPC Mode Oper Table +-- Objects in this table contain current operational values, such +-- as state values or negotiated parameters, for session modes. +-- +-- ********************************************************************* +appcModeOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcModeOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Operational APPC Mode Information. Two entries are present in + the table when both LUs in a pair are local." + + ::= { appcLu 6 } + +appcModeOperEntry OBJECT-TYPE + SYNTAX AppcModeOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC mode operational information table. This entry + does not augment the appcModeAdminEntry, but reflects an actual + operational mode for a given local LU - partner LU pair." + + INDEX { appcModeOperLocLuName, + appcModeOperParLuName, + appcModeOperModeName } + + ::= { appcModeOperTable 1 } + +AppcModeOperEntry ::= SEQUENCE { + + appcModeOperLocLuName DisplayString, + appcModeOperParLuName DisplayString, + appcModeOperModeName DisplayString, + appcModeOperCosName DisplayString, + appcModeOperSessEndTpName DisplayString, + appcModeOperSessLimit Integer32, + appcModeOperMaxSessLimit Integer32, + appcModeOperMinCwinLimit Integer32, + appcModeOperMinClosLimit Integer32, + appcModeOperConWinAutoActLmt Integer32, + appcModeOperRecvPacWinSz Integer32, + appcModeOperSendPacWinSz Integer32, + appcModeOperPrefRecvRuSz Integer32, + appcModeOperPrefSendRuSz Integer32, + appcModeOperRecvRuSzUpBnd Integer32, + appcModeOperSendRuSzUpBnd Integer32, + appcModeOperRecvRuSzLoBnd Integer32, + appcModeOperSendRuSzLoBnd Integer32, + appcModeOperSingSessReinit INTEGER, + appcModeOperCompression INTEGER, + appcModeOperInBoundCompLevel INTEGER, + appcModeOperOutBoundCompLevel INTEGER, + appcModeOperCompRleBeforeLZ INTEGER, + appcModeOperSyncLvl INTEGER, + appcModeOperCrypto INTEGER, + appcModeOperSyncLvlLastStart INTEGER, + appcModeOperCryptoLastStart INTEGER, + appcModeOperCNOSNeg INTEGER, + appcModeOperActCwin Gauge32, + appcModeOperActClos Gauge32, + appcModeOperPndCwin Gauge32, + appcModeOperPndClos Gauge32, + appcModeOperPtmCwin Gauge32, + appcModeOperPtmClos Gauge32, + appcModeOperDrainSelf INTEGER, + appcModeOperDrainPart INTEGER + } + +appcModeOperLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + If this object has the same value as appcLluOperName, + then the two entries being indexed apply to the same + resource (specifically, to the same local LU)." + + ::= { appcModeOperEntry 1 } + +appcModeOperParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + + If this object has the same value as appcLuPairOperParLuName, + then the two entries being indexed apply to the same + resource (specifically, to the same partner LU)." + + ::= { appcModeOperEntry 2 } + +appcModeOperModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the mode name. A mode defines the characteristics + for a group of sessions. The mode name can be blank (8 + space characters). " + + ::= { appcModeOperEntry 3 } + +appcModeOperCosName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the class of service (COS) name associated with + this mode. If the implementation does not support COS names, + a zero-length string is returned." + + ::= { appcModeOperEntry 4 } + +appcModeOperSessEndTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the transaction program (TP) to be + invoked when a session using this mode is deactivated or ended. + If the name is NULL, no transaction program is invoked. When + the TP name consists entirely of displayable EBCDIC code + points, it is mapped directly to the equivalent ASCII display + string. However, registered TP names always have a non- + displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes)." + + ::= { appcModeOperEntry 5 } + +appcModeOperSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the current session limit of this mode as negotiated + through APPC CNOS (Change Number of Sessions) processing. + Identifies the total number of sessions that can be established + between the local and partner LU using this mode." + + ::= { appcModeOperEntry 6 } + +appcModeOperMaxSessLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum value that the local LU is to use, + during CNOS processing, for the session limit. The local LU, + as a target LU, will negotiate a higher session limit it + receives in the CNOS request down to this maximum value. The + local LU, as a source LU, will restrict the session limit it + sends in a CNOS request to a value less than or equal to this + maximum value." + + ::= { appcModeOperEntry 7 } + +appcModeOperMinCwinLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the minimum contention winner sessions limit that + was negotiated via CNOS processing." + + ::= { appcModeOperEntry 8 } + +appcModeOperMinClosLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the minimum contention loser sessions limit that + was negotiated via CNOS processing. This is the same as + target minimum contention winner sessions." + + ::= { appcModeOperEntry 9 } + +appcModeOperConWinAutoActLmt OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the limit on the number of contention winner sessions + to be automatically activated when the minimum number of + contention winner sessions increases (as a result of CNOS + processing). The actual number of sessions activated is the + lesser of this value and the new minimum number of contention + winner sessions. " + + ::= { appcModeOperEntry 10 } + +appcModeOperRecvPacWinSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the size of the receive pacing window. This value is + used for negotiation during session activations (SNA BIND). + + The meaning of this value when set to 0 depends on whether + adaptive pacing is supported: + adaptive pacing - No limit on window size + fixed pacing - No pacing is supported" + + ::= { appcModeOperEntry 11 } + +appcModeOperSendPacWinSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the size of the send pacing window. This value is + used for negotiation during session activations (SNA BIND). + + The meaning of this value when set to 0 depends on whether + adaptive pacing is supported: + adaptive pacing No limit on window size + fixed pacing No pacing is supported" + + ::= { appcModeOperEntry 12 } + +appcModeOperPrefRecvRuSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the preferred receive RU (Request Unit) size of + normal-flow requests on the sessions. This value must be less + than or equal to the value specified in + appcModeOperRecvRuSzUpBnd and greater than or equal to the + value specified in appcModeOperRecvRuSzLoBnd. + + The local LU specifies this value for the receive maximum RU + size in session activation (SNA BIND) requests and responses. + It will allow negotiation up to the appcModeOperRecvRuSzUpBnd + value or down to the appcModeOperRecvRuSzLoBnd value." + + ::= { appcModeOperEntry 13 } + +appcModeOperPrefSendRuSz OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the preferred send RU (Request Unit) size of normal- + flow requests on the sessions. This value must be less than or + equal to the value specified in appcModeOperSendRuSzUpBnd and + greater than or equal to the value specified in + appcModeOperSendRuSzLoBnd. + + The local LU specifies this value for the send maximum RU + size in session activation (SNA BIND) requests and responses. + It will allow negotiation up to the appcModeOperSendRuSzUpBnd + value or down to the appcModeOperSendRuSzLoBnd value." + + ::= { appcModeOperEntry 14 } + +appcModeOperRecvRuSzUpBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the upper bound for the maximum receive RU + (Request Unit) size of normal-flow requests. This is used + for negotiation during session activations (SNA BIND). " + + ::= { appcModeOperEntry 15 } + +appcModeOperSendRuSzUpBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the upper bound for the maximum send RU (Request + Unit) size of normal-flow requests. This is used for + negotiation during session activations (SNA BIND). " + + ::= { appcModeOperEntry 16 } + +appcModeOperRecvRuSzLoBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the lower bound for the maximum receive RU + (Request Unit) size of normal-flow requests. This is used + for negotiation during session activations (SNA BIND). " + + ::= { appcModeOperEntry 17 } + +appcModeOperSendRuSzLoBnd OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the lower bound for the maximum send RU + (Request Unit) size of normal-flow requests. This is used + for negotiation during session activations (SNA BIND). " + + ::= { appcModeOperEntry 18 } + +appcModeOperSingSessReinit OBJECT-TYPE + SYNTAX INTEGER { + notApplicable(1), + operatorControlled(2), + primaryOnly(3), + secondaryOnly(4), + primaryOrSecondary(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the responsibility for session reinitiation of a + single session with the partner LU (when the session goes + down). The local LU uses this parameter to specify the session + reinitiation responsibility in session activation (SNA BIND) + requests and responses. + + notApplicable - specifies that this parameter has + no meaning since the value of + appcLuPairOperParaSessSup is yes. + The field in the SNA BIND is + reserved (set to zero). + operatorControlled - specifies that neither LU will + automatically attempt to reinitiate + the session. The operator on either + side will manually reactivate the + session. A contention race (both + side reinitiating at the same time) + is won by the LU with the + lexicographically greater fully- + qualified LU name. + primaryOnly - specifies that the primary LU will + automatically attempt to reinitiate + the session. + secondaryOnly - specifies that the secondary LU will + automatically attempt to reinitiate + the session. + primaryOrSecondary - specifies that either the primary or + the secondary may automatically + attempt to reinitiate the session. + A contention race is handled the + same way as with operatorControlled. + " + ::= { appcModeOperEntry 19 } + +appcModeOperCompression OBJECT-TYPE + SYNTAX INTEGER { + prohibited(1), + required(2), + negotiable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether compression is supported. The local LU uses + this value for negotiation during session activation (SNA + BIND). + + prohibited - specifies that no compression is to be used. + required - specifies that compression is required. + negotiable - specifies that the usage of compression + is to be negotiated between the LUs. The + level of compression is also negotiated." + + ::= { appcModeOperEntry 20 } + +appcModeOperInBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + inbound data. The local LU uses this value in conjunction with + appcModeOperCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcModeOperEntry 21 } + +appcModeOperOutBoundCompLevel OBJECT-TYPE + SYNTAX INTEGER { + none(1), + rle(2), + lz9(3), + lz10(4), + lz12(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the maximum level of compression supported for + outbound data. The local LU uses this value in conjunction + with appcModeOperCompression for negotiation during session + activation (SNA BIND). + + none - specifies that no compression is to be used. + rle - specifies run-length encoding compression + in which a 1 or 2 byte sequence substitution is + used for each repeated run of the same character. + lz9 - specifies Lempel-Ziv-like compression in which + 9 bit codes are used to substitute repeated + substrings in the data stream. These codes are + indices that refer to entries in a common + dictionary generated adaptively at both sender and + receiver as the data flows and compression occurs. + The larger of number bits used for the code, the + more storage space is required for the dictionary, + but the larger the compression ratio. + lz10 - specifies a 10 bit code Lempel-Ziv-like compression. + lz12 - specifies a 12 bit code Lempel-Ziv-like compression." + + ::= { appcModeOperEntry 22 } + +appcModeOperCompRleBeforeLZ OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether run-length encoding is to be applied to the + data before applying Lempel-Ziv-like compression. The local LU + uses this value for negotiation during session activation (SNA + BIND). This parameter is only supported if LZ compression is + used." + ::= { appcModeOperEntry 23 } + +appcModeOperSyncLvl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + noneConfirm(2), + noneConfirmSyncPoint(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the sync level support for sessions involving this + LU pair and mode name. + + none - No sync level is supported. + noneConfirm - None and Confirm level supported. + noneConfirmSyncPoint - None, Confirm and Sync Point is + supported. + " + + ::= { appcModeOperEntry 24 } + +appcModeOperCrypto OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + mandatory(2), + selective(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether session-level cryptography is supported for + sessions involving this LU pair and mode name. + + notSupported - Specifies session-level cryptography + is not being used. + mandatory - Specifies session-level cryptography + in being used on all requests + flowing on the sessions. + selective - Specifies session-level cryptography + is required just on selected + requests flowing on the sessions." + + ::= { appcModeOperEntry 25 } + +appcModeOperSyncLvlLastStart OBJECT-TYPE + SYNTAX INTEGER { + none(1), + noneConfirm(2), + noneConfirmSyncPoint(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the sync level support. This value represents the + initial value proposed by the local LU the last time this + capability was negotiated, i.e., when the first session was + bound between the local LU and its partner. + + none - No sync level is supported. + noneConfirm - None and Confirm level supported. + noneConfirmSyncPoint - None, Confirm and Sync Point is + supported. + " + + ::= { appcModeOperEntry 26 } + +appcModeOperCryptoLastStart OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + mandatory(2), + selective(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether session-level cryptography is supported. + This value represents the initial value proposed by the local + LU the last time this capability was negotiated, i.e., when + the first session was bound between the local LU and its + partner. + notSupported - Specifies session-level cryptography + is not to be used. + mandatory - Specifies session-level cryptography + must be used. + selective - Specifies session-level cryptography + is required just on selected + requests flowing on the sessions." + + ::= { appcModeOperEntry 27 } + +appcModeOperCNOSNeg OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether CNOS negotiation is in process. CNOS + negotiation is used to set or change the various session limits + for a mode." + + ::= { appcModeOperEntry 28 } + +appcModeOperActCwin OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of active contention winner sessions." + + ::= { appcModeOperEntry 29 } + +appcModeOperActClos OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of active contention loser sessions." + + ::= { appcModeOperEntry 30 } + +appcModeOperPndCwin OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of contention winner sessions that are + pending activation." + + ::= { appcModeOperEntry 31 } + +appcModeOperPndClos OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of contention loser sessions that are + pending activation." + + ::= { appcModeOperEntry 32 } + +appcModeOperPtmCwin OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of contention winner sessions that are + pending termination." + + ::= { appcModeOperEntry 33 } + +appcModeOperPtmClos OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of contention loser sessions that are + pending termination." + + ::= { appcModeOperEntry 34 } + +appcModeOperDrainSelf OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the local LU is draining its conversations + for this mode. When a mode session limit is reset (via a CNOS + RESET_SESSION_LIMIT request), the local LU could be set to + process all queued conversations before deactivating all of the + sessions (using the SNA Bracket Initiation Stopped or BIS + protocol). " + + ::= { appcModeOperEntry 35 } + +appcModeOperDrainPart OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the partner LU is draining its conversations + for this mode. When a mode session limit is reset (via a CNOS + RESET_SESSION_LIMIT request), the partner LU could be set to + process all queued conversations before deactivating all of the + sessions (using the SNA Bracket Initiation Stop or BIS + protocol). " + + ::= { appcModeOperEntry 36 } + +-- ********************************************************************* +-- APPC TP Admin Table +-- Objects in this table contain default or expected configuration +-- values for remotely attachable transaction programs. +-- ********************************************************************* +appcTpAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcTpAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC Local TP Table" + + ::= { appcTp 1 } + +appcTpAdminEntry OBJECT-TYPE + SYNTAX AppcTpAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Local TP Information Table." + + INDEX { appcTpAdminLocLuName, + appcTpAdminTpName } + + ::= { appcTpAdminTable 1 } + +AppcTpAdminEntry ::= SEQUENCE { + appcTpAdminLocLuName DisplayString, + appcTpAdminTpName DisplayString, + appcTpAdminFileSpec DisplayString, + appcTpAdminStartParm DisplayString, + appcTpAdminTpOperation INTEGER, + appcTpAdminInAttachTimeout Integer32, + appcTpAdminRcvAllocTimeout Integer32, + appcTpAdminSyncLvl INTEGER, + appcTpAdminInstLmt Integer32, + appcTpAdminStatus INTEGER, + appcTpAdminLongRun INTEGER, + appcTpAdminConvType INTEGER, + appcTpAdminConvDuplex INTEGER, + appcTpAdminConvSecReq INTEGER, + appcTpAdminVerPip INTEGER, + appcTpAdminPipSubNum Integer32 + } + +appcTpAdminLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this TP definition + applies. This field is from 1 to 17 characters in length, + including a period (.) which separates the NetId from the NAU + name if the NetId is present. + + The reserved value '*ALL' indicates that the TP definition + applies to all local LUs, and not just to a single local LU." + + ::= { appcTpAdminEntry 1 } + +appcTpAdminTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local transaction program name. This name is sent on an + ATTACH remote allocation request. + + When the TP name consists entirely of displayable EBCDIC + code points, it is mapped directly to the equivalent ASCII + display string. However, registered TP names always have a + non-displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes)." + + ::= { appcTpAdminEntry 2 } + +appcTpAdminFileSpec OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..80)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local file specification of the transaction program. + May be a zero-length string if not applicable." + + ::= { appcTpAdminEntry 3 } + +appcTpAdminStartParm OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A parameter string passed to the transaction program when it + is started. May be a zero-length string if not supported. " + + ::= { appcTpAdminEntry 4 } + +appcTpAdminTpOperation OBJECT-TYPE + SYNTAX INTEGER { + other(1), + queuedOperatorStarted(2), + queuedOperatorPreloaded(3), + queuedAmStarted(4), + nonqueuedAmStarted(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies how the program will be started. + other - Specifies that the program operation is none of + the methods specified. It may be a + product-specific method. + + queuedOperatorStarted - Specifies that one version of the + program will be run at a time. If an incoming + attach arrives and the program has not been started + yet, APPC will issue a message to the operator to + start the specified program. Subsequent attaches + that arrive while the program is active will be + queued. + + queuedOperatorPreloaded - Specifies that one version of the + program will be run at a time. If an incoming + attach arrives and the program has not been started + yet, the Attach will be rejected. The APPC attach + manager determines that a TP has started upon + reception of an APPC RECEIVE_ALLOCATE verb, or a + CPI-C Accept_Conversation (CMACCP) or + Specify_Local_TP_Name (CMSLTP) call. No message is + sent to the operator. Subsequent attaches that + arrive while the program is active are queued. + + queuedAmStarted - Specifies that one version of the + program will be run at a time and will be started + by the APPC attach manager. Subsequent attaches + that arrive while the program is active will be + queued. + + nonqueuedAmStarted - Specifies that multiple copies of the + program will be run at a time and will be started + by the APPC attach manager." + + ::= { appcTpAdminEntry 5 } + +appcTpAdminInAttachTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the number of seconds incoming attaches + will be queued waiting for an APPC program to issue a + RECEIVE_ALLOCATE verb or for a CPI-C program to issue an + Accept_Conversation (CMACCP) call. This parameter is + meaningful only when appcTpAdminTpOperation has one of the + following values: + queuedOperatorStarted + queuedOperatorPreloaded + queuedAmStarted + + A value of zero indicates that there is no timeout." + + ::= { appcTpAdminEntry 6 } + +appcTpAdminRcvAllocTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the number of seconds an APPC program's + RECEIVE_ALLOCATE verb or a CPI-C program's Accept_Conversation + (CMACCP) call will wait for an incoming attach to arrive. + + A value of zero indicates that there is no timeout." + + ::= { appcTpAdminEntry 7 } + +appcTpAdminSyncLvl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + confirm(2), + noneAndConfirm(3), + syncpoint(4), + noneAndSyncpoint(5), + confirmAndSyncpoint(6), + all(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the synchronization level or levels that the + transaction program supports. The levels are defined as + follows: + + none - allocation requests indicating a + synchronization level of none are allowed to + start the program. + confirm - allocation requests indicating a + synchronization level of confirm are allowed + to start the program. + syncpoint - allocation requests indicating a + synchronization level of sync point are + allowed to start the program." + + ::= { appcTpAdminEntry 8 } + +appcTpAdminInstLmt OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of concurrent instances of this transaction + program that will be supported for a local LU. A value of + zero indicates that there is no limit." + + ::= { appcTpAdminEntry 9 } + +appcTpAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + tempDisabled(2), + permDisabled(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the status of the TP relative to starting execution + when the local LU receives an allocation (ATTACH) request + naming this program. + + enabled - the local LU can start the program. + tempDisabled - the local LU cannot start the + program. The local LU rejects the + request with an indication that the + TP is not available but retry is + possible. + permDisabled - the local LU cannot start the + program. The local LU rejects the + request with an indication that the + TP is not available and retry is + not possible." + + ::= { appcTpAdminEntry 10 } + +appcTpAdminLongRun OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this is a long-running transaction program + (i.e., one that stays around even after the conversation goes + away)." + + ::= { appcTpAdminEntry 11 } + +appcTpAdminConvType OBJECT-TYPE + SYNTAX INTEGER { + basic(1), + mapped(2), + basicOrMapped(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the conversation type (basic or mapped) that will be + used by the TP. This value is verified upon receipt of an + incoming attach. The acceptable values are: + + basic - Indicates that this transaction program + supports basic conversations. + + mapped - Indicates that this transaction program + supports mapped conversations. + + basicOrMapped - Indicates that this transaction program + supports both basic and mapped + conversations." + ::= { appcTpAdminEntry 12 } + +appcTpAdminConvDuplex OBJECT-TYPE + SYNTAX INTEGER { + half(1), + full(2), + halfOrFull(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the conversation duplex type (half or full) that + will be used by the TP. This value is verified upon receipt of + an incoming attach. The acceptable values are: + + half - Indicates that this transaction program + supports half duplex conversations. + + full - Indicates that this transaction program + supports full duplex conversations. + + halfOrFull - Indicates that this transaction program + supports either half or full duplex + conversations." + + ::= { appcTpAdminEntry 13 } + +appcTpAdminConvSecReq OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether conversation-level security information is + required on incoming attaches designating this TP name. + Conversation-level security verification is always performed on + those requests that include security information. + + yes - Indicates that conversation-level security + information is required. ATTACHs designating the + transaction program must carry a user_id and + either a password or an already verified + indicator. + + no - Indicates that no security information is + required. ATTACHs designating the transaction + program can omit or include security information." + + ::= { appcTpAdminEntry 14 } + +appcTpAdminVerPip OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the number of PIP (Program Initialization + Parameters) subfields should be verified against the number + expected (appcTpAdminPipSubNum)." + + ::= { appcTpAdminEntry 15 } + +appcTpAdminPipSubNum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of PIP subfields expected by the TP." + + ::= { appcTpAdminEntry 16 } + + +-- ********************************************************************* +-- APPC Active Session Table +-- --------------------------------------------------------------------- +-- This table contains information about active APPC sessions. +-- ********************************************************************* +appcActSessTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcActSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of active APPC sessions. Two entries are present in the + table when both session partners are local." + + ::= { appcSession 1 } + +appcActSessEntry OBJECT-TYPE + SYNTAX AppcActSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Session Information Table. Indexed by LU pair + and integer-valued session index." + + INDEX { appcActSessLocLuName, + appcActSessParLuName, + appcActSessIndex } + + ::= { appcActSessTable 1 } + +AppcActSessEntry ::= SEQUENCE { + appcActSessLocLuName DisplayString, + appcActSessParLuName DisplayString, + appcActSessIndex Integer32, + appcActSessPcidCpName DisplayString, + appcActSessPcid OCTET STRING, + appcActSessPluIndicator INTEGER, + appcActSessModeName DisplayString, + appcActSessCosName DisplayString, + appcActSessTransPriority INTEGER, + appcActSessEnhanceSecSup INTEGER, + appcActSessSendPacingType INTEGER, + appcActSessSendRpc Gauge32, + appcActSessSendNxWndwSize Gauge32, + appcActSessRecvPacingType INTEGER, + appcActSessRecvRpc Gauge32, + appcActSessRecvNxWndwSize Gauge32, + appcActSessRscv OCTET STRING, + appcActSessInUse INTEGER, + appcActSessMaxSndRuSize INTEGER, + appcActSessMaxRcvRuSize INTEGER, + appcActSessSndPacingSize INTEGER, + appcActSessRcvPacingSize INTEGER, + appcActSessOperState INTEGER, + appcActSessUpTime TimeTicks, + appcActSessRtpNceId OCTET STRING, + appcActSessRtpTcid OCTET STRING, + appcActSessLinkIndex InstancePointer + } + + +appcActSessLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the local LU for the session. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLluOperName, then the + two entries being indexed apply to the same resource + (specifically, to the same local LU)." + + ::= { appcActSessEntry 1 } + +appcActSessParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the partner LU for the session. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLuPairOperParLuName, + then the two entries being indexed apply to the same resource + (specifically, to the same partner LU)." + + ::= { appcActSessEntry 2 } + +appcActSessIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value identifies the index of the session, which is + unique for this LU pair. It is recommended that an Agent not + reuse the index of a deactivated session for a significant + period of time (e.g., one week)." + + ::= { appcActSessEntry 3 } + +appcActSessPcidCpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified CP name of the node at which the session + and PCID originated. For APPN and LEN nodes, this is either CP + name of the APPN node at which the origin LU is located or the + CP name of the NN serving the LEN node at which the origin LU + is located. This field is from 3 to 17 characters in length, + including a period (.) which separates the NetId from the NAU + name. A null string indicates that the value is unknown." + ::= { appcActSessEntry 4 } + +appcActSessPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0|8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of a session. It + is an 8-octet value assigned by the control point providing + session services for the primary LU. A null string indicates + that the value is unknown." + + ::= { appcActSessEntry 5 } + +appcActSessPluIndicator OBJECT-TYPE + SYNTAX INTEGER { + localLuIsPlu(1), + partnerLuIsPlu(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which LU is the PLU for this session. For + independent LUs, the PLU (primary LU) is the one that initiated + the session (sent BIND), while the SLU (secondary LU) is the + one that accepted the session initiation (received BIND). + + The 'local' LU is the one identified by appcLluOperName. + + The 'partner' LU is the one identified by + appcLuPairOperParLuName." + + ::= { appcActSessEntry 6 } + +appcActSessModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode name used for this session." + + ::= { appcActSessEntry 7 } + +appcActSessCosName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Class of Service (COS) name used for this session. + A null string indicates that the value is unknown." + + ::= { appcActSessEntry 8 } + +appcActSessTransPriority OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + low(2), + medium(3), + high(4), + network(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmission priority of this session. + 1 = unknown priority + 2 = low priority + 3 = medium priority + 4 = high priority + 5 = network priority + " + + ::= { appcActSessEntry 9 } + +appcActSessEnhanceSecSup OBJECT-TYPE + SYNTAX INTEGER { + none(1), + level1(2), + level2(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Enhanced security supported. Indicates the level of enhanced + security support: + + 1 = none + 2 = level 1 + 3 = level 2 + " + + ::= { appcActSessEntry 10 } + +appcActSessSendPacingType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + fixed(2), + adaptive(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of pacing being used for sending data." + + ::= { appcActSessEntry 11 } + +appcActSessSendRpc OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The send residual pace count. This represents the number of + MUs that can still be sent in the current session window." + + ::= { appcActSessEntry 12 } + +appcActSessSendNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the next window which will be used to send data." + + ::= { appcActSessEntry 13 } + +appcActSessRecvPacingType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + fixed(2), + adaptive(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of pacing being used for receiving data." + + ::= { appcActSessEntry 14 } + +appcActSessRecvRpc OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The receive residual pace count. This represents the number + of MUs that can still be received in the current session + window." + + ::= { appcActSessEntry 15 } + +appcActSessRecvNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the next window which will be used to receive + data." + + ::= { appcActSessEntry 16 } +appcActSessRscv OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The route selection control vector (RSCV CV2B) used for this + session. It is present for APPN-level implementations. + LEN-level implementations will return a null string. The + internal format of this vector is described in SNA Formats. + This object contains an uninterpreted copy of the control + vector (including the length and key fields)." + + ::= { appcActSessEntry 17 } + +appcActSessInUse OBJECT-TYPE + SYNTAX INTEGER { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the session is currently in use (i.e., in + bracket with a conversation)." + + ::= { appcActSessEntry 18 } + +appcActSessMaxSndRuSize OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum RU size used on this session for sending RUs." + ::= { appcActSessEntry 19 } + +appcActSessMaxRcvRuSize OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum RU size used on this session for receiving RUs." + + ::= { appcActSessEntry 20 } + +appcActSessSndPacingSize OBJECT-TYPE + SYNTAX INTEGER (1..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the send pacing window on this session." + + ::= { appcActSessEntry 21 } + +appcActSessRcvPacingSize OBJECT-TYPE + SYNTAX INTEGER (1..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the receive pacing window on this session." + + ::= { appcActSessEntry 22 } + +appcActSessOperState OBJECT-TYPE + SYNTAX INTEGER { + unbound (1), + pendingBind (2), + bound (3), + pendingUnbind (4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value indicates the current operational state of the + session. + + 'unbound (1)' - session has been unbound; + in this state it will be removed from the + session table by the Agent. + + 'pendingBind (2)' - this state has different + meanings for dependent and independent LUs; + for dependent LU - waiting for BIND from + the host, for independent LU - waiting for + BIND response. When a session enters this + state, the corresponding entry in the + session table is created by the Agent. + + 'bound (3)' - session has been successfully bound. + + 'pendingUnbind (4)' - session enters this state + when an UNBIND is sent and before the + rsp(UNBIND) is received. + + Session deactivation: + + If a session is in the operational state + 'bound (3)' then setting the value of this + object to 'unbound (1)' will initiate the + session shutdown. + + If a session is in the operational state + 'pendingBind (2)' then setting the value of this + object to 'unbound (1)' will initiate the session + shutdown. + + If a session is in the operational state + 'pendingUnbind (4)' for an abnormally long period + of time (e.g., three minutes) then setting the value + of this object to 'unbound (1)' will change the + session operational state to 'unbound (1)'. " + + ::= { appcActSessEntry 23 } + +appcActSessUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time the session has been active, measured in + hundredths of a second." + + ::= { appcActSessEntry 24 } + +appcActSessRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local HPR Network Connection Endpoint of the session." + ::= { appcActSessEntry 25 } + +appcActSessRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0|8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local RTP connection TCID of the session." + + ::= { appcActSessEntry 26 } + +appcActSessLinkIndex OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the link over which the session passes. + This value points to the row in the table containing + information on the link instance. (e.g., the sdlcLSAdminTable + of the SNA DLC MIB module). This object may be NULL if the + link is not specified or if a link is not applicable (as for + APPN-level nodes)." + + ::= { appcActSessEntry 27 } + + +-- *************************************************************** +-- The following table contains session statistics for APPC sessions. +-- *************************************************************** + +appcSessStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcSessStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains dynamic statistical information relating + to active APPC sessions. The entries in this table cannot be + created by a Management Station. Two entries are present in + the table when both session partners are local. This table is + populated only when the value of appcCntrlOperStat is + 'active'." + + ::= { appcSession 2 } + +appcSessStatsEntry OBJECT-TYPE + SYNTAX AppcSessStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains statistics information for an APPC session. Each + entry is created by the Agent. Objects in this table have + read-only access. Each session from appcActSessTable has one + entry in this table." + + INDEX { appcSessStatsLocLuName, + appcSessStatsParLuName, + appcSessStatsSessIndex } + + ::= { appcSessStatsTable 1 } + +AppcSessStatsEntry ::= SEQUENCE { + appcSessStatsLocLuName DisplayString, + appcSessStatsParLuName DisplayString, + appcSessStatsSessIndex Integer32, + appcSessStatsSentFmdBytes Counter32, + appcSessStatsSentNonFmdBytes Counter32, + appcSessStatsRcvdFmdBytes Counter32, + appcSessStatsRcvdNonFmdBytes Counter32, + appcSessStatsSentFmdRus Counter32, + appcSessStatsSentNonFmdRus Counter32, + appcSessStatsRcvdFmdRus Counter32, + appcSessStatsRcvdNonFmdRus Counter32, + appcSessStatsCtrUpTime TimeTicks + } + +appcSessStatsLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the local LU for the session. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLluOperName, then the + two entries being indexed apply to the same resource + (specifically, to the same local LU)." + + ::= { appcSessStatsEntry 1 } + +appcSessStatsParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the name of the partner LU for the session. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLuPairOperParLuName, + then the two entries being indexed apply to the same resource + (specifically, to the same partner LU)." + + ::= { appcSessStatsEntry 2 } + +appcSessStatsSessIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value identifies the index of the session, which is + unique for this LU pair. It is recommended that an Agent not + reuse the index of a deactivated session for a significant + period of time (e.g., one week). + + If this object has the same value as appcActSessIndex for the + same LU pair, then the two entries being indexed apply to the + same resource (specifically, to the same session)." + + ::= { appcSessStatsEntry 3 } + +appcSessStatsSentFmdBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of function management data (FMD) bytes sent by the + local LU." + + ::= { appcSessStatsEntry 4 } + +appcSessStatsSentNonFmdBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-function management data (non-FMD) bytes + sent by the local LU." + + ::= { appcSessStatsEntry 5 } + +appcSessStatsRcvdFmdBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of function management data (FMD) bytes received by + the local LU." + + ::= { appcSessStatsEntry 6 } + +appcSessStatsRcvdNonFmdBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-function management data (non-FMD) bytes + received by the local LU." + + ::= { appcSessStatsEntry 7 } + +appcSessStatsSentFmdRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of function management data (FMD) RUs sent by the + local LU." + + ::= { appcSessStatsEntry 8 } + +appcSessStatsSentNonFmdRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-function management data (non-FMD) RUs sent + by the local LU." + + ::= { appcSessStatsEntry 9 } + +appcSessStatsRcvdFmdRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of function management data (FMD) RUs received by + the local LU." + + ::= { appcSessStatsEntry 10 } + +appcSessStatsRcvdNonFmdRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-function management data (non-FMD) RUs + received by the local LU." + + ::= { appcSessStatsEntry 11 } + +appcSessStatsCtrUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time the counters for this session have been + active, measured in hundredths of a second." + + ::= { appcSessStatsEntry 12 } + + +-- ********************************************************************* +-- APPC Historical Session Table +-- --------------------------------------------------------------------- +-- This table contains historical information about APPC sessions that +-- terminated abnormally. It is an implementation choice how long to +-- retain information on a given session. +-- ********************************************************************* +appcHistSessTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcHistSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of historical information about APPC sessions that + terminated abnormally. Two entries may be present in the table + when both session partners are local. It is an implementation + choice how long to retain information about a given session." + + ::= { appcSession 3 } + +appcHistSessEntry OBJECT-TYPE + SYNTAX AppcHistSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC Session History Table. This table is indexed by + an integer which is continuously incremented until it + eventually wraps." + INDEX + { appcHistSessIndex } + + ::= { appcHistSessTable 1 } + +AppcHistSessEntry ::= SEQUENCE { + appcHistSessIndex INTEGER, + appcHistSessTime DateAndTime, + appcHistSessType INTEGER, + appcHistSessLocLuName DisplayString, + appcHistSessParLuName DisplayString, + appcHistSessModeName DisplayString, + appcHistSessUnbindType OCTET STRING, + appcHistSessSenseData SnaSenseData, + appcHistSessComponentId DisplayString, + appcHistSessDetectModule DisplayString + } + + +appcHistSessIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table index. The value of the index begins at zero + and is incremented up to a maximum value of 2**31-1 + (2,147,483,647) before wrapping." + + ::= { appcHistSessEntry 1 } + +appcHistSessTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the session was either terminated or + failed to be established." + + ::= { appcHistSessEntry 2 } + +appcHistSessType OBJECT-TYPE + SYNTAX INTEGER { + recvNegBindRsp(1), + sendNegBindRsp(2), + sessActRejected(3), + unbindSent(4), + unbindReceived(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of event that caused the entry to be made: + + recvNegBindRsp - Received a negative bind response from + the partner LU. + sendNegBindRsp - Sent a negative bind response to the + partner LU. + sessActRejected - Session activation rejected by the + partner LU. + unbindSent - Unbind sent to the partner LU. + unbindReceived - Unbind received from the partner LU. + + These event types correspond to the five SNA/MS Alerts + LU62001 through LU62005, documented in the SNA Management + Services Reference." + + ::= { appcHistSessEntry 3 } + +appcHistSessLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified local LU name. This field is from 3 to + 17 characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcHistSessEntry 4 } + +appcHistSessParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified partner LU name. This field is from 3 + to 17 characters in length, including a period (.) which + separates the NetId from the NAU name if the NetId is present." + + ::= { appcHistSessEntry 5 } + +appcHistSessModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode name of the session." + ::= { appcHistSessEntry 6 } + +appcHistSessUnbindType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of unbind which terminated the session. This + value is consists of one (1) octet; and its meaning + is defined in SNA Formats." + + ::= { appcHistSessEntry 7 } + +appcHistSessSenseData OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data associated with the termination of the + session, taken from the negative BIND response or UNBIND + request." + + ::= { appcHistSessEntry 8 } + +appcHistSessComponentId OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation-specific name of the component which + detected the problem." + + ::= { appcHistSessEntry 9 } + +appcHistSessDetectModule OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation-specific name of the module which + detected the problem." + + ::= { appcHistSessEntry 10 } + + +-- ********************************************************************* +-- APPC Session RTP Connection Table +-- --------------------------------------------------------------------- + +-- This table contains information on APPC sessions that are being +-- transported on RTP connections by High Performance Routing (HPR). +-- ********************************************************************* +appcSessRtpTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcSessRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table indicating how many APPC sessions terminating in this + node are transported by each RTP connection." + + ::= { appcSession 4 } + +appcSessRtpEntry OBJECT-TYPE + SYNTAX AppcSessRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC session RTP table." + + INDEX { appcSessRtpNceId, + appcSessRtpTcid } + + ::= { appcSessRtpTable 1 } + +AppcSessRtpEntry ::= SEQUENCE { + appcSessRtpNceId OCTET STRING, + appcSessRtpTcid OCTET STRING, + appcSessRtpSessions Gauge32 + } + +appcSessRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local Network Connection Endpoint of the RTP connection." + + ::= { appcSessRtpEntry 1 } + +appcSessRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local TCID of the RTP connection." + + ::= { appcSessRtpEntry 2 } + +appcSessRtpSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of APPC sessions terminating in this node + that are using this RTP connection." + + ::= { appcSessRtpEntry 3 } + + +-- ********************************************************************* +-- APPC Active Conversation Table +-- This table contains information about active APPC conversations. +-- ********************************************************************* + +appcActiveConvTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcActiveConvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of information about active APPC Conversations. In this + context 'active' means that a conversation is currently + associated with a particular session. Two entries are present + in the table when both LUs for the session are local." + + ::= { appcConversation 1 } + +appcActiveConvEntry OBJECT-TYPE + SYNTAX AppcActiveConvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry representing one active APPC Conversation." + + INDEX { appcActiveConvLocLuName, + appcActiveConvParLuName, + appcActiveConvSessIndex } + + ::= { appcActiveConvTable 1} + +AppcActiveConvEntry ::= SEQUENCE { + appcActiveConvLocLuName DisplayString, + appcActiveConvParLuName DisplayString, + appcActiveConvSessIndex Integer32, + appcActiveConvId OCTET STRING, + appcActiveConvState INTEGER, + appcActiveConvType INTEGER, + appcActiveConvCorrelator OCTET STRING, + appcActiveConvSyncLvl INTEGER, + appcActiveConvSource INTEGER, + appcActiveConvDuplex INTEGER, + appcActiveConvUpTime TimeTicks, + appcActiveConvSendBytes Counter32, + appcActiveConvRcvBytes Counter32, + appcActiveConvUserid DisplayString, + appcActiveConvPcidNauName DisplayString, + appcActiveConvPcid OCTET STRING, + appcActiveConvModeName DisplayString, + appcActiveConvLuwIdName DisplayString, + appcActiveConvLuwIdInstance OCTET STRING, + appcActiveConvLuwIdSequence OCTET STRING, + appcActiveConvTpName DisplayString + } + +appcActiveConvLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU for the conversation. This field + is from 1 to 17 characters in length, including a period (.) + which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLluOperName, + then the two entries being indexed apply to the same + resource (specifically, to the same local LU)." + + ::= { appcActiveConvEntry 1 } + +appcActiveConvParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the partner LU for the conversation. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present. + + If this object has the same value as appcLuPairOperParLuName, + then the two entries being indexed apply to the same + resource (specifically, to the same partner LU)." + + ::= { appcActiveConvEntry 2 } + +appcActiveConvSessIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of entry in appcActSessTable that is associated with + this conversation. If this object has the same value as + appcActSessIndex for the same LU pair, then the two entries + being indexed apply to the same resource (specifically, to the + same session)." + + ::= { appcActiveConvEntry 3 } + +appcActiveConvId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 4-byte ID of the conversation." + + ::= { appcActiveConvEntry 4 } + +appcActiveConvState OBJECT-TYPE + SYNTAX INTEGER { + reset(1), + send(2), + receive(3), + confirm(4), + confirmSend(5), + confirmDealloc(6), + pendingDeallocate(7), + pendingPost(8), + sendReceive(9), + sendOnly(10), + receiveOnly(11), + deferReceive(12), + deferDeallocate(13), + syncpoint(14), + syncpointSend(15), + syncpointDeallocate(16), + backoutRequired(17) + } + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the state of the conversation at the instant when + the information was retrieved. The values are: + reset + The conversation is reset (i.e., deallocated). + send + The conversation can send data. This value also + is returned if the conversation is in + Send-Pending state. + receive + The conversation can receive data. + confirm + The conversation has received a confirm + indicator. It can issue an [MC_]CONFIRMED or + [MC_]SEND_ERROR verb to change state. It will + continue in Receive state if an [MC_]CONFIRMED + verb is issued. + confirmSend + The conversation is in Confirm state and changes + to Send state when an [MC_]CONFIRMED verb is + issued. + confirmDealloc + The conversation is in Confirm state and becomes + inactive when an [MC_]CONFIRMED verb is issued. + pendingDeallocate + The conversation is in Pending-Deallocate state + while it waits for (MC_)DEALLOCATE TYPE + (sync_level) to complete. + pendingPost + The conversation is in Pending-Post state while + it waits for the [MC_]RECEIVE_AND_POST verb to + complete its receive function. + sendReceive + The full-duplex conversation can send or receive + data. + sendOnly + The full-duplex conversation can send data, but + it does not have permission to receive data, + because the partner TP has already deallocated + its side of the conversation. + receiveOnly + The full-duplex conversation can receive data, + but it does not have permission to send data, + because it has already deallocated its side of + the conversation. + deferReceive + Waiting for a successful SYNCPT verb operation to + go into the receive state. + deferDeallocate + Waiting for a successful SYNCPT verb operation to + go into the reset state. + syncpoint + Need to response to a SYNCPT verb issued. After + successful operation, the next state will be + receive. + syncpointSend + Need to response to a SYNCPT verb issued. After + successful operation, the next state will be + send. + syncpointDeallocate + Need to response to a SYNCPT verb issued. After + successful operation, the next state will be + reset. + backoutRequired + TP must execute a BACKOUT verb to backout the + transaction." + + ::= { appcActiveConvEntry 5 } + +appcActiveConvType OBJECT-TYPE + SYNTAX INTEGER { + basic(1), + mapped(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of conversation. The values are: + + basic + Indicates that this conversation supports + basic verbs. + + mapped + Indicates that this conversation supports + mapped verbs." + + + ::= { appcActiveConvEntry 6 } + +appcActiveConvCorrelator OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is an 8-byte identifier that the source LU assigns to the + conversation; the source LU is the one that sent the allocation + request. The conversation correlator is included on the + allocation request. The conversation correlator uniquely + identifies a conversation, from among all conversations, + between the local and partner LUs. It may be used, for + example, during problem determination associated with a + conversation. A length of 0 indicates that no conversation + correlator is defined." + + ::= { appcActiveConvEntry 7 } + +appcActiveConvSyncLvl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + confirm(2), + syncpt(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the highest sync level support for the conversation. + The values are: + + none + Indicates that no sync-level processing can be + performed on this conversation. The + transaction program does not issue verbs or + recognize any returned parameters + relating to any sync-level function. + + confirm + Indicates that confirmation processing can be + performed on this conversation. The + transaction program can issue verbs and + recognize returned parameters relating to + confirmation. + + syncpt + Indicates that syncpt and confirmation processing + can be performed on this conversation. The + transaction program can issue verbs and recognize + returned parameters relating to syncpt and + confirmation." + + ::= { appcActiveConvEntry 8 } + +appcActiveConvSource OBJECT-TYPE + SYNTAX INTEGER { + localLu(1), + partnerLu(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the local or partner LU is the source of the + conversation, that is, which LU started the conversation by + sending the allocation request. + + localLu + The local LU is the source of the conversation, + and the partner LU is the target of the + conversation. + + partnerLu + The partner LU is the source of the + conversation, and the local LU is the target of + the conversation." + + ::= { appcActiveConvEntry 9 } + +appcActiveConvDuplex OBJECT-TYPE + SYNTAX INTEGER { + half(1), + full(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the conversation duplex style in effect for the + conversation. + + half Indicates that information can be transferred in + both directions, but only in one direction at a + time. + + full Indicates that information can be transferred in + both directions at the same time." + + ::= { appcActiveConvEntry 10 } + +appcActiveConvUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time since the conversation started, measured in + hundredths of a second." + + ::= { appcActiveConvEntry 11 } + +appcActiveConvSendBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of bytes that was sent on the + conversation. The count includes all SNA RU bytes sent, + including those in the FMH-5 (Attach), FMH-7 (Error + Description), SIGNAL, LUSTAT, and SNA responses; it does not + include SNA TH and RH bytes." + + ::= { appcActiveConvEntry 12 } + +appcActiveConvRcvBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of bytes that was received on the + conversation. The count includes all SNA RU bytes sent, + including those in the FMH-5 (Attach), FMH-7 (Error + Description), SIGNAL, LUSTAT, and SNA responses; it does not + include SNA TH and RH bytes." + + ::= { appcActiveConvEntry 13 } + +appcActiveConvUserid OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user ID that the initiating program provided in the + incoming attach." + + ::= { appcActiveConvEntry 14 } + +appcActiveConvPcidNauName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified NAU name of the + node at which the session and PCID originated. For APPN + and LEN nodes, this is either CP name of the APPN node at + which the origin LU is located or the CP name of the + NN serving the LEN node at which the origin LU is + located. This field is from 3 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name. A null string indicates + that the value is unknown." + + ::= { appcActiveConvEntry 15 } + +appcActiveConvPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0|8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of the session. + It is an 8-octet value assigned by the control point providing + session services for the primary LU. A null string indicates + that the value is unknown." + + ::= { appcActiveConvEntry 16 } + +appcActiveConvModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Mode Name used for this conversation. + This is a 1-8 character name." + + ::= { appcActiveConvEntry 17 } + +appcActiveConvLuwIdName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the LU that initiated the logical unit of work + that is associated with this active TP. This field is from + 1 to 17 characters in length, including a period (.) which + separates the NetId from the LU name if the NetId is present." + + ::= { appcActiveConvEntry 18 } + +appcActiveConvLuwIdInstance OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The instance identifier for the logical unit of work." + + ::= { appcActiveConvEntry 19 } + +appcActiveConvLuwIdSequence OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence identifier for the logical unit of work." + + ::= { appcActiveConvEntry 20 } + +appcActiveConvTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transaction program name which started this conversation. + This name could either be from a FMH5 ATTACH for a remotely + started conversation, otherwise it could the name of the local + TP if available. + + When the TP name consists entirely of displayable EBCDIC code + points, it is mapped directly to the equivalent ASCII display + string. However, registered TP names always have a non- + displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes). + + This name is NULL if the conversation is started locally + (i.e., not with a FMH5 ATTACH)." + + ::= { appcActiveConvEntry 21 } + +-- ********************************************************************* +-- APPC Historical Conversation Table +-- This table contains historical information about APPC +-- conversations that ended abnormally. It is an implementation +-- choice how long to retain information on a given conversation. +-- ********************************************************************* + +appcHistConvTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcHistConvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of historical information about APPC Conversations that + ended in error. Possible categories of error conditions that + could be saved in this table are: + + - allocation errors, + - deallocate abend, + - program errors, and + - service errors." + + ::= { appcConversation 2 } + +appcHistConvEntry OBJECT-TYPE + SYNTAX AppcHistConvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry representing one APPC Conversation." + + INDEX + { appcHistConvIndex } + + ::= { appcHistConvTable 1} + +AppcHistConvEntry ::= SEQUENCE { + appcHistConvIndex Integer32, + appcHistConvEndTime DateAndTime, + appcHistConvLocLuName DisplayString, + appcHistConvParLuName DisplayString, + appcHistConvTpName DisplayString, + appcHistConvPcidNauName DisplayString, + appcHistConvPcid OCTET STRING, + appcHistConvSenseData SnaSenseData, + appcHistConvLogData OCTET STRING, + appcHistConvEndedBy INTEGER + } + +appcHistConvIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index for entry in Conversation table. This value identifies + the unique index of the conversation. It is recommended that + an Agent not reuse the index of a deactivated conversation for + a significant period of time (e.g. one week)." + + ::= { appcHistConvEntry 1 } + +appcHistConvEndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the conversation ended." + + ::= { appcHistConvEntry 2 } + +appcHistConvLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the local LU for this conversation. This field is + from 1 to 17 characters in length, including a period (.) which + separates the NetId from the NAU name if the NetId is present." + + ::= { appcHistConvEntry 3 } + +appcHistConvParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the partner LU for the conversation. This + field is from 1 to 17 characters in length, including a period + (.) which separates the NetId from the NAU name if the NetId is + present." + + ::= { appcHistConvEntry 4 } + +appcHistConvTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transaction program name which started this conversation. + This name could either be from a FMH5 ATTACH for a remotely + started conversation, otherwise it could the name of the local + TP if available. + + When the TP name consists entirely of displayable EBCDIC code + points, it is mapped directly to the equivalent ASCII display + string. However, registered TP names always have a non- + displayable EBCDIC code point (value less than or equal to + x'3F') as the first character, so they cannot be directly + mapped to an ASCII display string. These TP names are + converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For example, + the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte + ASCII display string '06F1' (including the two single quotes). + + This name is NULL if the conversation is started locally + (i.e., not with a FMH5 ATTACH)." + + ::= { appcHistConvEntry 5 } + +appcHistConvPcidNauName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network-qualified NAU name of the + node at which the session and PCID originated. For APPN + and LEN nodes, this is either CP name of the APPN node at + which the origin LU is located or the CP name of the + NN serving the LEN node at which the origin LU is + located. This field is from 3 to 17 characters in + length, including a period (.) which separates the + NetId from the NAU name. A null string indicates that the + value is unknown." + + ::= { appcHistConvEntry 6 } + +appcHistConvPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0|8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of the session. + It is an 8-octet value assigned by the control point providing + session services for the primary LU. A null string indicates + that the value is unknown." + + ::= { appcHistConvEntry 7 } + +appcHistConvSenseData OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data associated with the action that ended this + conversation, e.g., FMH-7 or UNBIND." + + ::= { appcHistConvEntry 8 } + +appcHistConvLogData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The first 32 bytes of the data portion of the Log Data GDS + Variable that is associated with the last FMH-7 that occurred + on this conversation. If there was no Log Data GDS Variable + associated with the FMH-7, this object is null. + + This object reflects only the data portion of the Log Data + GDS Variable (i.e. not the LL or GDS Id)." + + ::= { appcHistConvEntry 9 } + +appcHistConvEndedBy OBJECT-TYPE + SYNTAX INTEGER { + localLu(1), + partnerLu(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which LU ended the conversation." + + ::= { appcHistConvEntry 10 } + +-- ********************************************************************* +-- APPC CPIC Admin Table +-- Objects in this table contain default or expected configuration +-- values for CPI-C side information. +-- ********************************************************************* +appcCpicAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcCpicAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC CPI-C side information table." + + ::= { appcCPIC 1 } + +appcCpicAdminEntry OBJECT-TYPE + SYNTAX AppcCpicAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC CPI-C side information Table." + INDEX { appcCpicAdminLocLuName, + appcCpicAdminSymbDestName } + + ::= { appcCpicAdminTable 1 } + +AppcCpicAdminEntry ::= SEQUENCE { + appcCpicAdminLocLuName DisplayString, + appcCpicAdminSymbDestName DisplayString, + appcCpicAdminParLuAlias DisplayString, + appcCpicAdminParLuName DisplayString, + appcCpicAdminModeName DisplayString, + appcCpicAdminTpNameType INTEGER, + appcCpicAdminTpName DisplayString, + appcCpicAdminUserid DisplayString, + appcCpicAdminSecurity INTEGER + } + +appcCpicAdminLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this CPI-C side + information definition applies. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the definition applies + to all local LUs, and not just to a single local LU." + + ::= { appcCpicAdminEntry 1 } + +appcCpicAdminSymbDestName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the symbolic destination name used by CPI-C + applications to identify this definition." + + ::= { appcCpicAdminEntry 2 } + +appcCpicAdminParLuAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the partner LU. If not known or + not applicable, this object contains a zero-length + string." + + ::= { appcCpicAdminEntry 3 } + + +appcCpicAdminParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the partner LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcCpicAdminEntry 4 } + + +appcCpicAdminModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the mode name. A mode defines the characteristics + for a group of sessions. The mode name can be blank (8 space + characters)." + + ::= { appcCpicAdminEntry 5 } + + +appcCpicAdminTpNameType OBJECT-TYPE + SYNTAX INTEGER { + normal(1), + snaServiceTp(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the TP name in appcCpicAdminTpName + identifies a normal TP or an SNA service TP. In this context, + a normal TP is one with a name consisting only of displayable + characters, while an SNA service TP has a name containing + octets that do not map to displayable characters." + + ::= { appcCpicAdminEntry 6 } + +appcCpicAdminTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the partner TP to be used when a CPI-C + application initiates a conversation specifying this side + information entry. + + Display convention + + When the TP name consists entirely of displayable EBCDIC + code points, it is mapped directly to the equivalent ASCII + display string. However, registered TP names always have a + non-displayable EBCDIC code point (value less than or equal + to x'3F') as the first character, so they cannot be + directly mapped to an ASCII display string. These TP names + are converted to a display string that is equivalent to a + hexadecimal display of the EBCDIC code points. For + example, the 2-byte TP name x'06F1' (CNOS) is converted to + the 6-byte ASCII display string '06F1' (including the two + single quotes)." + + ::= { appcCpicAdminEntry 7 } + +appcCpicAdminUserid OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The security userid, if any, associated with the side + information definition." + + ::= { appcCpicAdminEntry 8 } + +appcCpicAdminSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), + same(2), + pgm(3), + pgmStrong(4), + distributed(5), + mutual(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the security information to be used for allocating + the conversation. + none - No security information. + same - Use the security environment currently + associated with this TP. + pgm - Use the program-supplied user_id and password. + pgmStrong - Use the program-supplied user_id and password. + The local LU will insure that the password is + not exposed in clear-text form on the physical + network. + distributed - Use the security environment and a distributed + security system to generate the authentication + information for this request. If distributed + security tokens cannot be generated, then fail + the conversation. + mutual - Authenticate both the user to the destination + system and the destination system to the user." + + ::= { appcCpicAdminEntry 9 } + + +-- ********************************************************************* +-- APPC CPIC Oper Table +-- Objects in this table contain current operational values, such +-- as state values or negotiated parameters, for CPI-C side +-- information. +-- ********************************************************************* + +appcCpicOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppcCpicOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPC CPI-C side information operational table." + + ::= { appcCPIC 2 } + +appcCpicOperEntry OBJECT-TYPE + SYNTAX AppcCpicOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of APPC CPI-C side information Table." + + INDEX { appcCpicOperLocLuName, + appcCpicOperSymbDestName } + + ::= { appcCpicOperTable 1 } + +AppcCpicOperEntry ::= SEQUENCE { + appcCpicOperLocLuName DisplayString, + appcCpicOperSymbDestName DisplayString, + appcCpicOperParLuAlias DisplayString, + appcCpicOperParLuName DisplayString, + appcCpicOperModeName DisplayString, + appcCpicOperTpNameType INTEGER, + appcCpicOperTpName DisplayString, + appcCpicOperUserid DisplayString, + appcCpicOperSecurity INTEGER + } + +appcCpicOperLocLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of the local LU to which this CPI-C side + information definition applies. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present. + + The reserved value '*ALL' indicates that the definition applies + to all local LUs, and not just to a single local LU." + + ::= { appcCpicOperEntry 1 } + +appcCpicOperSymbDestName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the symbolic destination name used by CPI-C + applications to identify this definition." + + ::= { appcCpicOperEntry 2 } + +appcCpicOperParLuAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A local alias for the partner LU. If not known or not + applicable, this object contains a zero-length string." + + ::= { appcCpicOperEntry 3 } + +appcCpicOperParLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the partner LU. This field is from 1 to 17 + characters in length, including a period (.) which separates + the NetId from the NAU name if the NetId is present." + + ::= { appcCpicOperEntry 4 } + + +appcCpicOperModeName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the mode name. A mode defines the characteristics + for a group of sessions. The mode name can be blank (8 space + characters)." + + ::= { appcCpicOperEntry 5 } + + +appcCpicOperTpNameType OBJECT-TYPE + SYNTAX INTEGER { + normal(1), + snaServiceTp(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies whether the TP name in appcCpicOperTpName identifies + a normal TP or an SNA service TP. In this context, a normal TP + is one with a name consisting only of displayable characters, + while an SNA service TP has a name containing octets that do + not map to displayable characters." + + ::= { appcCpicOperEntry 6 } + +appcCpicOperTpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the name of the partner TP to be used when a CPI-C + application initiates a conversation specifying this side + information entry. + Display convention + + When the TP name consists entirely of displayable EBCDIC + code points, it is mapped directly to the equivalent ASCII + display string. However, registered TP names always have + a non-displayable EBCDIC code point (value less than or + equal to x'3F') as the first character, so they cannot be + directly mapped to an ASCII display string. These TP + names are converted to a display string that is equivalent + to a hexadecimal display of the EBCDIC code points. For + example, the 2-byte TP name x'06F1' (CNOS) is converted to + the 6-byte ASCII display string '06F1' (including the two + single quotes)." + + ::= { appcCpicOperEntry 7 } + +appcCpicOperUserid OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The security userid, if any, associated with the active side + information definition." + + ::= { appcCpicOperEntry 8 } + +appcCpicOperSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), + same(2), + pgm(3), + pgmStrong(4), + distributed(5), + mutual(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the security information to be used for allocating + the conversation. + + none - No security information. + same - Use the security environment currently + associated with this TP. + pgm - Use the program-supplied user_id and password. + pgmStrong - Use the program-supplied user_id and password. + The local LU will insure that the password is + not exposed in clear-text form on the physical + network. + distributed - Use the security environment and a distributed + security system to generate the authentication + information for this request. If distributed + security tokens cannot be generated, then fail + the conversation. + mutual - Authenticate both the user to the destination + system and the destination system to the user." + + ::= { appcCpicOperEntry 9 } + + +-- *************************************************************** +-- Conformance information +-- *************************************************************** + +appcConformance OBJECT IDENTIFIER ::= {appcMIB 2 } + +appcCompliances OBJECT IDENTIFIER ::= {appcConformance 1 } +appcGroups OBJECT IDENTIFIER ::= {appcConformance 2 } + +-- Compliance statements +appcCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities which + implement the APPC MIB." + + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { + appcGlobalConfGroup, + appcLluConfGroup, + appcParLuConfGroup, + appcModeConfGroup, + appcTpConfGroup, + appcSessionConfGroup + } + +-- Conditionally mandatory groups + GROUP appcControlConfGroup + DESCRIPTION + "The appcControlConfGroup is mandatory only for those + entities which implement activation and deactivation of + specific controls such as statistics collecting and + counting." + GROUP appcCnosConfGroup + DESCRIPTION + "The appcCnosConfGroup is mandatory only for those entities + which implement CNOS. " + + GROUP appcCpicConfGroup + DESCRIPTION + "The appcCpicConfGroup is mandatory only for those entities + which implement CPI-C. " + + + GROUP appcConversationConfGroup + DESCRIPTION + "The appcConversationConfGroup is mandatory only for those + entities which implement session endpoints for non-control + APPC sessions." + +-- MIN-ACCESS for objects + OBJECT appcActSessOperState + MIN-ACCESS read-only + DESCRIPTION + "An implementation is not required to support session + deactivation via this object." + + ::= {appcCompliances 1 } + +-- Units of conformance +appcGlobalConfGroup OBJECT-GROUP + OBJECTS { + appcUpTime, + appcDefaultModeName, + appcDefaultLuName, + appcDefaultImplInbndPlu, + appcDefaultMaxMcLlSndSize, + appcDefaultFileSpec, + appcDefaultTpOperation, + appcDefaultTpConvSecRqd, + appcLocalCpName, + appcActiveSessions, + appcActiveHprSessions + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + global information and defaults." + + ::= { appcGroups 1 } + +appcLluConfGroup OBJECT-GROUP + OBJECTS { + appcLluAdminDepType, + appcLluAdminLocalAddress, + appcLluAdminSessLimit, + appcLluAdminBindRspMayQ, + appcLluAdminCompression, + appcLluAdminInBoundCompLevel, + appcLluAdminOutBoundCompLevel, + appcLluAdminCompRleBeforeLZ, + appcLluAdminAlias, + + appcLluOperDepType, + appcLluOperLocalAddress, + appcLluOperSessLimit, + appcLluOperBindRspMayQ, + appcLluOperCompression, + appcLluOperInBoundCompLevel, + appcLluOperOutBoundCompLevel, + appcLluOperCompRleBeforeLZ, + appcLluOperAlias, + appcLluOperActiveSessions + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + local LU6.2s." + + ::= { appcGroups 2 } + +appcParLuConfGroup OBJECT-GROUP + OBJECTS { + appcLuPairAdminParLuAlias, + appcLuPairAdminSessLimit, + appcLuPairAdminSessSec, + appcLuPairAdminSecAccept, + appcLuPairAdminLinkObjId, + appcLuPairAdminParaSessSup, + + appcLuPairOperParLuAlias, + appcLuPairOperSessLimit, + appcLuPairOperSessSec, + appcLuPairOperSecAccept, + appcLuPairOperLinkObjId, + appcLuPairOperParaSessSup, + appcLuPairOperParaSessSupLS, + appcLuPairOperState + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + partner LUs." + + ::= { appcGroups 3 } + +appcModeConfGroup OBJECT-GROUP + OBJECTS { + appcModeAdminCosName, + appcModeAdminSessEndTpName, + appcModeAdminMaxSessLimit, + appcModeAdminMinCwinLimit, + appcModeAdminMinClosLimit, + appcModeAdminConWinAutoActLmt, + appcModeAdminRecvPacWinSz, + appcModeAdminSendPacWinSz, + appcModeAdminPrefRecvRuSz, + + appcModeAdminPrefSendRuSz, + appcModeAdminRecvRuSzUpBnd, + appcModeAdminSendRuSzUpBnd, + appcModeAdminRecvRuSzLoBnd, + appcModeAdminSendRuSzLoBnd, + appcModeAdminSingSessReinit, + appcModeAdminCompression, + appcModeAdminInBoundCompLevel, + appcModeAdminOutBoundCompLevel, + appcModeAdminCompRleBeforeLZ, + appcModeAdminSyncLvl, + appcModeAdminCrypto, + + appcModeOperCosName, + appcModeOperSessEndTpName, + appcModeOperSessLimit, + appcModeOperMaxSessLimit, + appcModeOperMinCwinLimit, + appcModeOperMinClosLimit, + appcModeOperConWinAutoActLmt, + appcModeOperRecvPacWinSz, + appcModeOperSendPacWinSz, + appcModeOperPrefRecvRuSz, + appcModeOperPrefSendRuSz, + appcModeOperRecvRuSzUpBnd, + appcModeOperSendRuSzUpBnd, + appcModeOperRecvRuSzLoBnd, + appcModeOperSendRuSzLoBnd, + appcModeOperSingSessReinit, + appcModeOperCompression, + appcModeOperInBoundCompLevel, + appcModeOperOutBoundCompLevel, + appcModeOperCompRleBeforeLZ, + appcModeOperSyncLvl, + appcModeOperCrypto, + appcModeOperSyncLvlLastStart, + appcModeOperCryptoLastStart, + appcModeOperCNOSNeg, + appcModeOperActCwin, + appcModeOperActClos, + appcModeOperPndCwin, + appcModeOperPndClos, + appcModeOperPtmCwin, + appcModeOperPtmClos, + appcModeOperDrainSelf, + appcModeOperDrainPart + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + modes." + + ::= { appcGroups 4 } + +appcTpConfGroup OBJECT-GROUP + OBJECTS { + appcTpAdminFileSpec, + appcTpAdminStartParm, + appcTpAdminTpOperation, + appcTpAdminInAttachTimeout, + appcTpAdminRcvAllocTimeout, + appcTpAdminSyncLvl, + appcTpAdminInstLmt, + appcTpAdminStatus, + appcTpAdminLongRun, + appcTpAdminConvType, + appcTpAdminConvDuplex, + appcTpAdminConvSecReq, + appcTpAdminVerPip, + appcTpAdminPipSubNum + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + Transaction Programs." + + ::= { appcGroups 5 } + +appcSessionConfGroup OBJECT-GROUP + OBJECTS { + appcActSessPcidCpName, + appcActSessPcid, + appcActSessPluIndicator, + appcActSessModeName, + appcActSessCosName, + appcActSessTransPriority, + appcActSessEnhanceSecSup, + appcActSessSendPacingType, + appcActSessSendRpc, + appcActSessSendNxWndwSize, + appcActSessRecvPacingType, + appcActSessRecvRpc, + appcActSessRecvNxWndwSize, + appcActSessRscv, + appcActSessInUse, + appcActSessMaxSndRuSize, + appcActSessMaxRcvRuSize, + appcActSessSndPacingSize, + appcActSessRcvPacingSize, + appcActSessOperState, + appcActSessUpTime, + appcActSessRtpNceId, + appcActSessRtpTcid, + appcActSessLinkIndex, + + appcSessStatsSentFmdBytes, + appcSessStatsSentNonFmdBytes, + appcSessStatsRcvdFmdBytes, + appcSessStatsRcvdNonFmdBytes, + appcSessStatsSentFmdRus, + appcSessStatsSentNonFmdRus, + appcSessStatsRcvdFmdRus, + appcSessStatsRcvdNonFmdRus, + appcSessStatsCtrUpTime, + + appcHistSessTime, + appcHistSessType, + appcHistSessLocLuName, + appcHistSessParLuName, + appcHistSessModeName, + appcHistSessUnbindType, + appcHistSessSenseData, + appcHistSessComponentId, + appcHistSessDetectModule, + + appcSessRtpSessions + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + LU6.2 sessions." + + ::= { appcGroups 6 } + +appcControlConfGroup OBJECT-GROUP + OBJECTS { + appcCntrlAdminStat, + appcCntrlAdminRscv, + appcCntrlAdminTrace, + appcCntrlAdminTraceParm, + appcCntrlOperStat, + appcCntrlOperStatTime, + appcCntrlOperRscv, + appcCntrlOperRscvTime, + appcCntrlOperTrace, + appcCntrlOperTraceTime, + appcCntrlOperTraceParm + + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + control." + + ::= { appcGroups 7 } + +appcCnosConfGroup OBJECT-GROUP + OBJECTS { + appcCnosCommand, + appcCnosMaxSessLimit, + appcCnosMinCwinLimit, + appcCnosMinClosLimit, + appcCnosDrainSelf, + appcCnosDrainPart, + appcCnosResponsible, + appcCnosForce, + appcCnosTargetLocLuName, + appcCnosTargetParLuName, + appcCnosTargetModeName + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + CNOS processing." + ::= { appcGroups 8 } + +appcCpicConfGroup OBJECT-GROUP + OBJECTS { + appcCpicAdminParLuAlias, + appcCpicAdminParLuName, + appcCpicAdminModeName, + appcCpicAdminTpNameType, + appcCpicAdminTpName, + appcCpicAdminUserid, + appcCpicAdminSecurity, + appcCpicOperParLuAlias, + appcCpicOperParLuName, + appcCpicOperModeName, + appcCpicOperTpNameType, + appcCpicOperTpName, + appcCpicOperUserid, + appcCpicOperSecurity + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + CPI-C side information." + + ::= { appcGroups 9 } + +appcConversationConfGroup OBJECT-GROUP + OBJECTS { + appcActiveConvId, + appcActiveConvState, + appcActiveConvType, + appcActiveConvCorrelator, + appcActiveConvSyncLvl, + appcActiveConvSource, + appcActiveConvDuplex, + appcActiveConvUpTime, + appcActiveConvSendBytes, + appcActiveConvRcvBytes, + appcActiveConvUserid, + appcActiveConvPcidNauName, + appcActiveConvPcid, + appcActiveConvModeName, + appcActiveConvLuwIdName, + appcActiveConvLuwIdInstance, + appcActiveConvLuwIdSequence, + appcActiveConvTpName, + + appcHistConvEndTime, + appcHistConvLocLuName, + appcHistConvParLuName, + appcHistConvTpName, + appcHistConvPcidNauName, + appcHistConvPcid, + appcHistConvSenseData, + appcHistConvLogData, + appcHistConvEndedBy + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of APPC + conversations." + + ::= { appcGroups 10 } + +-- end of conformance statement + +END diff --git a/mibs/ietf/APPLETALK-MIB b/mibs/ietf/APPLETALK-MIB new file mode 100644 index 0000000..198124e --- /dev/null +++ b/mibs/ietf/APPLETALK-MIB @@ -0,0 +1,3409 @@ +APPLETALK-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter, IpAddress, TimeTicks + FROM RFC1155-SMI + DisplayString, mib-2 + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in RFC-1212. + +-- The following reference is used in this MIB: +-- [Inside AppleTalk] +-- This refers to Gursharan S. Sidhu, Richard F. Andrews, and +-- Alan B. Oppenheimer, Inside AppleTalk, Second Edition, +-- Addison Wesley, (1990). + + + +-- AppleTalk MIB + + appletalk OBJECT IDENTIFIER ::= { mib-2 13 } + + + ATNetworkNumber ::= -- 2 octets of net number + -- in network byte order + OCTET STRING (SIZE (2)) + + DdpNodeAddress ::= -- 2 octets of net number + -- in network byte order, + -- 1 octet of node number + OCTET STRING (SIZE (3)) + + DdpSocketAddress ::= -- 2 octets of net number + -- in network byte order, + -- 1 octet of node number, + + -- 1 octet of socket number + -- (0..255) + OCTET STRING (SIZE (4)) + + ATName ::= -- 0 to 32 octets of AppleTalk + -- ASCII [Inside AppleTalk] + OCTET STRING (SIZE (0..32)) + + + llap OBJECT IDENTIFIER ::= { appletalk 1 } + aarp OBJECT IDENTIFIER ::= { appletalk 2 } + atport OBJECT IDENTIFIER ::= { appletalk 3 } + ddp OBJECT IDENTIFIER ::= { appletalk 4 } + rtmp OBJECT IDENTIFIER ::= { appletalk 5 } + kip OBJECT IDENTIFIER ::= { appletalk 6 } + zipRouter OBJECT IDENTIFIER ::= { appletalk 7 } + nbp OBJECT IDENTIFIER ::= { appletalk 8 } + atecho OBJECT IDENTIFIER ::= { appletalk 9 } + atp OBJECT IDENTIFIER ::= { appletalk 10 } + pap OBJECT IDENTIFIER ::= { appletalk 11 } + asp OBJECT IDENTIFIER ::= { appletalk 12 } + adsp OBJECT IDENTIFIER ::= { appletalk 13 } + atportptop OBJECT IDENTIFIER ::= { appletalk 14 } + rtmpStub OBJECT IDENTIFIER ::= { appletalk 16 } + zipEndNode OBJECT IDENTIFIER ::= { appletalk 17 } + perPort OBJECT IDENTIFIER ::= { appletalk 18 } + + +-- The LLAP Group +-- +-- Implementation of this group is mandatory for all +-- entities that implement LLAP +-- +-- Notes for the interfaces group +-- +-- When implementing the Interfaces Group of MIB-II, it is +-- suggested that the following values be used for any +-- LocalTalk interfaces: +-- ifMtu: 600 +-- ifSpeed: 230000 +-- ifPhysAddress: the one octet node number for the +-- particular interface +-- +-- Note also that LLAP control packets should not be +-- included in the Interfaces Group packet or octet +-- counters. + +llapTable OBJECT-TYPE + SYNTAX SEQUENCE OF LlapEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The list of LLAP entries." + ::= { llap 1 } + +llapEntry OBJECT-TYPE + SYNTAX LlapEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An LLAP entry containing objects for the LocalTalk + Link Access Protocol for a particular LocalTalk + interface. + + As an example, an instance of the llapOutPkts object + might be named llapOutPks.1" + INDEX { llapIfIndex } + ::= { llapTable 1 } + +LlapEntry ::= SEQUENCE { + llapIfIndex INTEGER, + llapInPkts Counter, + llapOutPkts Counter, + llapInNoHandlers Counter, + llapInLengthErrors Counter, + llapInErrors Counter, + llapCollisions Counter, + llapDefers Counter, + llapNoDataErrors Counter, + llapRandomCTSErrors Counter, + llapFCSErrors Counter +} + +llapIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The LLAP interface to which this entry pertains. + The interface identified by a particular value of + this index is the same interface as identified + by the same value of ifIndex." + ::= { llapEntry 1 } + +-- this object has been deprecated because it duplicates the +-- sum of the MIB-II variables ifInUcastPkts and +-- ifInNUcastPkts + +llapInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of good data packets received on + this LocalTalk interface." + ::= { llapEntry 2 } + +-- this object has been deprecated because it duplicates the +-- sum of the MIB-II variables ifOutUcastPkts and +-- ifOutNUcastPkts + +llapOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of data packets transmitted on + this LocalTalk interface." + ::= { llapEntry 3 } + +-- this object has been deprecated because it duplicates the +-- MIB-II variable ifInUnknownProtos + +llapInNoHandlers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of good packets received on this + LocalTalk interface for which there was no protocol + handler." + ::= { llapEntry 4 } + +llapInLengthErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received on this LocalTalk + interface whose actual length did not match the length + in the header." + ::= { llapEntry 5 } + +-- this object has been deprecated because it duplicates the +-- MIB-II variable ifInErrors + +llapInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of packets containing errors received + on this LocalTalk interface." + ::= { llapEntry 6 } + +llapCollisions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of collisions assumed on this + LocalTalk interface due to the lack of a lapCTS reply." + ::= { llapEntry 7 } + +llapDefers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times this LocalTalk interface + deferred to other packets." + ::= { llapEntry 8 } + +llapNoDataErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times this LocalTalk interface + received a lapRTS packet and expected a data packet, + but did not receive any data packet." + ::= { llapEntry 9 } + +llapRandomCTSErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times this LocalTalk interface + received a lapCTS packet that was not solicited by a + lapRTS packet." + ::= { llapEntry 10 } + +llapFCSErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of times this LocalTalk interface + received a packet with an FCS (Frame Check Sequence) + error." + ::= { llapEntry 11 } + + +-- The AARP Group +-- +-- Implementation of this group is mandatory for all entities +-- that implement AARP + +aarpTable OBJECT-TYPE + SYNTAX SEQUENCE OF AarpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The AppleTalk Address Translation Table contains an + equivalence of AppleTalk Network Addresses to the link + layer physical address." + ::= { aarp 1 } + +aarpEntry OBJECT-TYPE + SYNTAX AarpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Each entry contains one AppleTalk Network Address to + physical address equivalence. + + As an example, an instance of the aarpPhysAddress + object might be named aarpPhysAddress.1.0.80.234" + INDEX { aarpIfIndex, aarpNetAddress } + ::= { aarpTable 1 } + +AarpEntry ::= SEQUENCE { + aarpIfIndex INTEGER, + aarpPhysAddress OCTET STRING, + aarpNetAddress DdpNodeAddress, + aarpStatus INTEGER +} + +aarpIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The interface on which this entry's equivalence is + effective. The interface identified by a particular + value of this index is the same interface as + identified by the same value of ifIndex." + ::= { aarpEntry 1 } + +aarpPhysAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The media-dependent physical address." + ::= { aarpEntry 2 } + +aarpNetAddress OBJECT-TYPE + SYNTAX DdpNodeAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The AppleTalk Network Address corresponding to the + media-dependent physical address." + ::= { aarpEntry 3 } + +aarpStatus OBJECT-TYPE + SYNTAX INTEGER { + valid(1), + invalid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this AARP entry. + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in the + aarpTable. That is, it effectively disassociates + the mapping identified with said entry. It is an + implementation-specific matter as to whether the agent + removes an invalidated entry from the table. + Accordingly, management stations must be prepared to + receive from agents tabular information corresponding + to entries not currently in use. Proper + interpretation of such entries requires examination + of the relevant aarpStatus object." + ::= { aarpEntry 4 } + +aarpLookups OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the AARP cache for this entity + was searched." + ::= { aarp 2 } + +aarpHits OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an entry was searched for and + found in the AARP cache for this entity." + ::= { aarp 3 } + + +-- The ATPort Group +-- +-- Implementation of this group is mandatory for all entities +-- that implement AppleTalk ports +-- +-- Note that to be compliant with this group, all variables +-- that have read-write access must be implemented as +-- read-write. + +atportTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtportEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of AppleTalk ports for this entity." + ::= { atport 1 } + +atportEntry OBJECT-TYPE + SYNTAX AtportEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The description of one of the AppleTalk + ports on this entity. + + As an example, an instance of the atportNetFrom object + might be named atportNetFrom.2" + INDEX { atportIndex } + ::= { atportTable 1 } + +AtportEntry ::= SEQUENCE { + atportIndex INTEGER, + atportDescr DisplayString, + atportType INTEGER, + atportNetStart ATNetworkNumber, + atportNetEnd ATNetworkNumber, + atportNetAddress DdpNodeAddress, + atportStatus INTEGER, + atportNetConfig INTEGER, + atportZoneConfig INTEGER, + atportZoneDefault ATName, + atportIfIndex INTEGER, + atportNetFrom DdpNodeAddress, + atportZoneFrom DdpNodeAddress, + atportInPkts Counter, + atportOutPkts Counter, + atportHome INTEGER, + atportCurrentZone ATName, + atportConflictPhysAddr OCTET STRING +} + +atportIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each AppleTalk port. + Its value is between 1 and the total number of + AppleTalk ports. The value for each port must + remain constant at least from the re-initialization + of the entity's network management system to the + next re-initialization." + ::= { atportEntry 1 } + +atportDescr OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A text string containing information about the + port. This string is intended for presentation + to a human; it must not contain anything but printable + ASCII characters." + ::= { atportEntry 2 } + +-- Several objects throughout the MIB key off of atportType to +-- determine the format of OCTET STRING addresses of peers. +-- The address formats are as follows: +-- localtalk, ethertalk1, ethertalk2, tokentalk, iptalk, +-- fdditalk, smdstalk, arctalk, and virtual take the +-- format of DdpNodeAddress +-- serialPPP: null OCTET STRING +-- serialNonstandard: vendor specific +-- aurp: see AURP MIB to determine format +-- frameRelay: 32 bit DLCI in network byte order +-- (OCTET STRING (SIZE (4))) +-- x25: X121Address (see RFC 1382) +-- ip: IP address (OCTET STRING (SIZE (4))) +-- osi: NSAP (OCTET STRING (SIZE (3..20))) +-- decnetIV: 6 bit area, 10 bit host in network byte order +-- (OCTET STRING (SIZE (2))) +-- arap: ??? +-- nonAppleTalk3Com: based on ifType +-- ipx: 32 bit network number in network byte order +-- followed by datalink address of host +-- arns: 32 bit ARNS header +-- hdlc: DdpNodeAddress or null OCTET STRING + +atportType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + localtalk(2), + ethertalk1(3), + ethertalk2(4), + tokentalk(5), + iptalk(6), + serialPPP(7), + serialNonstandard(8), + virtual(9), -- an internal interface + fdditalk(10), + arctalk(11), + smdstalk(12), + aurp(13), + frameRelay(14), + x25(15), + ip(16), + osi(17), + decnetIV(18), + arap(19), + isdnInThePacketMode(20), + nonAppleTalk3Com(21), + ipx(22), + arns(23), + hdlc(24) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of port, distinguished by the protocol + immediately below DDP in the protocol stack." + ::= { atportEntry 3 } + +atportNetStart OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The first AppleTalk network address in the range + configured for this port. If this port is not a + native AppleTalk port, this object shall have the + value of two octets of zero." + ::= { atportEntry 4 } + +atportNetEnd OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The last AppleTalk network address in the range + configured for this port. If the network to which + this AppleTalk port is connected is a non-extended + network, or if it is not a native AppleTalk port, + the value for atportNetEnd shall be two octets of + zero." + ::= { atportEntry 5 } + +atportNetAddress OBJECT-TYPE + SYNTAX DdpNodeAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The AppleTalk network address configured for this + port. In addition, this value may be used as a hint + for an initial node number used during node-finding. + If this port is not a native AppleTalk port, this + object shall have the value of three octets of zero." + ::= { atportEntry 6 } + +atportStatus OBJECT-TYPE + SYNTAX INTEGER { + routing(1), --this port is fully configured & routing + unconfigured(2), + off(3), + invalid(4), + endNode(5), -- this port is acting as an end node + offDueToConflict(6), -- port is off due to + -- configuration conflict + other(7) -- none of the states defined above + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The configuration status of this port. + + Setting this object to the value invalid(4) has the + effect of invalidating the corresponding entry in the + atportTable. That is, it effectively disassociates the + mapping identified with said entry. It is an + implementation-specific matter as to whether the agent + removes an invalidated entry from the table. + Accordingly, management stations must be prepared to + receive from agents tabular information corresponding + to entries not currently in use. Proper + interpretation of such entries requires examination + of the relevant atportStatus object." + ::= { atportEntry 7 } + +atportNetConfig OBJECT-TYPE + SYNTAX INTEGER { + conflictOrientedSeed(1), -- use configured network + -- range even if it conflicts with another + -- AppleTalk device + garnered(2), -- acquire from another AppleTalk device + guessed(3), -- generate a "random" network range + unconfigured(4), -- no other value applies + conflictAverseSeed(5), -- use configured network + -- range, but don't come up if it conflicts + softSeed(6) -- attempt to use configured network + -- range, but use network range from another + -- router if our configuration conflicts + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of the network information for this port. + If this port is not a native AppleTalk port, this + object shall have the value unconfigured(4)." + ::= { atportEntry 8 } + +atportZoneConfig OBJECT-TYPE + SYNTAX INTEGER { + conflictOrientedSeed(1), -- use configured zone + -- information even if it conflicts with + -- another AppleTalk device + garnered(2), -- acquire from another AppleTalk device + guessed(3), -- generate "random" zone information + unconfigured(4), -- no other value applies + conflictAverseSeed(5), -- use configured zone + -- information, but don't come up if it + -- conflicts + softSeed(6) -- attempt to use configured zone + -- information, but use zone information + -- from another router if our configuration + -- conflicts + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of the zone information for this port. + If this port is not a native AppleTalk port, this + object shall have the value unconfigured(4)." + ::= { atportEntry 9 } + +atportZoneDefault OBJECT-TYPE + SYNTAX ATName + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The name of the default zone for this port. If + this port only has one zone, that zone is + represented here. If this port is not a native + AppleTalk port, this object shall contain an octet + string of zero length. + + When this value is changed in a router, the router + must send a zipNotify packet on the associated + network." + ::= { atportEntry 10 } + +atportIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The physical interface associated with this + AppleTalk port. The interface identified by a + particular value of this index is the same interface + as identified by the same value of ifIndex." + ::= { atportEntry 11 } + +atportNetFrom OBJECT-TYPE + SYNTAX DdpNodeAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "When atportNetConfig is set to garnered(2), this + variable contains the DDP address of an entity from + which the AppleTalk network number was garnered. + When atportNetConfig is set to + conflictOrientedSeed(1), conflictAverseSeed(5), + or softSeed(6), this variable contains the DDP + address of an entity which confirmed or supplied our + AppleTalk network number, for example by replying to + a ZIP GetNetInfo request. + + If atportNetConfig is set to guessed(3) or + unconfigured(4), or if the entity has not received + any network number confirmation, this variable + should be set to three octets of zero." + ::= { atportEntry 12 } + +atportZoneFrom OBJECT-TYPE + SYNTAX DdpNodeAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "When atportZoneConfig is set to garnered(2), this + variable contains the DDP address of an entity from + which the AppleTalk zone list was garnered. + + When atportZoneConfig is set to + conflictOrientedSeed(1), conflictAverseSeed(5), or + softSeed(6), this variable contains the DDP address + of an entity which confirmed or supplied our + AppleTalk zone information, for example by replying + to a ZIP GetNetInfo request or a ZIP Query. + + If atportZoneConfig is set to guessed(3) or + unconfigured(4), or if the entity has not received + any zone confirmation, this variable should be set + to three octets of zero." + ::= { atportEntry 13 } + +atportInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received by this entity on + this port." + ::= { atportEntry 14 } + +atportOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets transmitted by this entity on + this port." + ::= { atportEntry 15 } + +atportHome OBJECT-TYPE + SYNTAX INTEGER { + home(1), + notHome(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An indication of whether or not the entity is + homed on this port, that is to say, a port on which + the entity could perform NBP registrations for + services that it chooses to advertise." + ::= { atportEntry 16 } + +atportCurrentZone OBJECT-TYPE + SYNTAX ATName + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The current zone for the port. In general, this is + the zone name in which services on this port will + be registered. If this port is not a native + AppleTalk port, this object shall contain an octet + string of zero length. Note that modifications to + this object do not affect the nbpTable." + ::= { atportEntry 17 } + +atportConflictPhysAddr OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The link-layer address of a device which caused + this entity to set atportStatus to + offDueToConflict(6). If this address is not + available, or if the entity has not set atportStatus + to offDueToConflict, this object shall be a zero + length OCTET STRING." + ::= { atportEntry 18 } + +-- The atportZoneTable stores information about the zones +-- associated with each port. The default zone for each +-- port is stored in the port's atportZoneDefault variable; +-- all other zones for the port are listed in this table. +-- If a port only has one zone, it should be stored in the +-- port's atportZoneDefault variable, and this table should +-- be empty. +-- +-- One of the indexes for this table is atportZoneName. +-- Even though AppleTalk zone name matches are +-- case-insensitive, this table will store zone names +-- regardless of case. SNMP Get, GetNext and Set operations +-- are performed on these (potentially) mixed case strings +-- according to the normal SNMP rules with the following +-- caveat: in processing a SET request, the agent shall +-- perform a case-insensitive search and a case-sensitive +-- search. If the case-insensitive search matches and the +-- case-sensitive search does not match, the "equivalent" +-- zone name exists in another entry with a different +-- capitalization and the SET request shall fail due +-- to the name being inconsistent (SNMPv1 should return a +-- genErr.) This insures that only one version of a zone +-- name will appear in each agent, at the expense of forcing +-- a management station to query using that exact name. + +atportZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtportZoneEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of zone information for non-default + zones on ports." + ::= { atport 2 } + +atportZoneEntry OBJECT-TYPE + SYNTAX AtportZoneEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry of zone information for a port. + + As an example, an instance of the atportZoneStatus + object might be named + atportZoneStatus.2.8.84.119.105.108.105.103.104.116" + INDEX { atportZonePort, atportZoneName } + ::= { atportZoneTable 1 } + +AtportZoneEntry ::= SEQUENCE { + atportZonePort INTEGER, + atportZoneName ATName (SIZE (1..32)), + atportZoneStatus INTEGER +} + +atportZonePort OBJECT-TYPE + SYNTAX INTEGER + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An integer representing the port to which this zone + belongs. The port identified by a particular value + of this object is the same port as identified by the + same value of atportIndex." + ::= { atportZoneEntry 1 } + +atportZoneName OBJECT-TYPE + SYNTAX ATName (SIZE (1..32)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A zone name configured for the AppleTalk port + referred to in the corresponding entry of + atportZonePort. + + When this value is changed in a router, the router + must send a zipNotify packet on the associated + network." + ::= { atportZoneEntry 2 } + +atportZoneStatus OBJECT-TYPE + SYNTAX INTEGER { + valid(1), + invalid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this zone entry. + + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in + the atportZoneTable. That is, it effectively + disassociates the mapping identified with said + entry. It is an implementation-specific matter as + to whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive from agents tabular + information corresponding to entries not currently + in use. Proper interpretation of such entries + requires examination of the relevant + atportZoneStatus object." + ::= { atportZoneEntry 3 } + + +-- The DDP Group +-- +-- Implementation of this group is mandatory for all +-- entities that implement DDP +-- +-- This group consists of DDP variables that would be +-- implemented by either a router or an end node. The +-- following variables are included: +-- ddpOutRequests +-- ddpOutShorts +-- ddpOutLongs +-- ddpInReceives +-- ddpInLocalDatagrams +-- ddpNoProtocolHandlers +-- ddpTooShortErrors +-- ddpTooLongErrors +-- ddpShortDDPErrors +-- ddpChecksumErrors +-- ddpListenerTable +-- +-- Note that the variables in this group are not numbered +-- sequentially. This was done so that it was not necessary +-- to deprecate variables from RFC 1243. + +ddpOutRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of DDP datagrams which were + supplied to DDP by local DDP clients in requests for + transmission. Note that this counter does not + include any datagrams counted in ddpForwRequests." + ::= { ddp 1 } + +ddpOutShorts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of short DDP datagrams which were + transmitted from this entity." + ::= { ddp 2 } + +ddpOutLongs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of long DDP datagrams which were + transmitted from this entity." + ::= { ddp 3 } + +ddpInReceives OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input datagrams received by + DDP, including those received in error." + ::= { ddp 4 } + +ddpInLocalDatagrams OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams for which + this + entity was their final DDP destination." + ::= { ddp 6 } + +ddpNoProtocolHandlers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of DDP datagrams addressed to this + entity that were addressed to an upper layer protocol + for which no protocol handler existed." + ::= { ddp 7 } + +ddpTooShortErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams dropped + because the received data length was less than the + data length specified in the DDP header or the + received data length was less than the length of the + expected DDP header." + ::= { ddp 9 } + +ddpTooLongErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams dropped + because they exceeded the maximum DDP datagram + size." + ::= { ddp 10 } + +ddpShortDDPErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams dropped + because this entity was not their final destination + and their type was short DDP." + ::= { ddp 12 } + +ddpChecksumErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams for which + this DDP entity was their final destination, and + which were dropped because of a checksum error." + ::= { ddp 14 } + +ddpListenerTable OBJECT-TYPE + SYNTAX SEQUENCE OF DdpListenerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The ddpListenerTable stores information for each + DDP socket that has a listener." + ::= { ddp 15 } + +ddpListenerEntry OBJECT-TYPE + SYNTAX DdpListenerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This ddpListenerEntry contains information about a + particular socket that has a socket listener. + + As an example, an instance of the ddpListenerStatus + object might be named ddpListenerStatus.0.80.220.1" + INDEX { ddpListenerAddress } + ::= { ddpListenerTable 1 } + +DdpListenerEntry ::= SEQUENCE { + ddpListenerAddress DdpSocketAddress, + ddpListenerInPkts Counter, + ddpListenerStatus INTEGER +} + +ddpListenerAddress OBJECT-TYPE + SYNTAX DdpSocketAddress + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The DDP address that this socket listener is bound + to. If this socket listener isn't bound to a + particular address, for instance if it is intended + for all interfaces, this object shall have the value + of three octets of zero followed by one octet of + socket number. The socket number must not equal + zero." + ::= { ddpListenerEntry 1 } + +ddpListenerInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received for this listener." + ::= { ddpListenerEntry 2 } + +ddpListenerStatus OBJECT-TYPE + SYNTAX INTEGER { + valid(1), + invalid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this socket listener. + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in the + ddpListenerTable. That is, it effectively + disassociates the mapping identified with said + entry. It is an implementation-specific matter as + to whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive from agents tabular + information corresponding to entries not currently + in use. Proper interpretation of such entries + requires examination of the relevant + ddpListenerStatus object." + ::= { ddpListenerEntry 3 } + + +-- The DDP Router Group +-- +-- Implementation of this group is required for all routers +-- which implement DDP +-- +-- This group consists of DDP variables that only a router +-- would implement. The following variables are included: +-- ddpForwRequests +-- ddpOutNoRoutes +-- ddpBroadcastErrors +-- ddpHopCountErrors +-- ddpForwardingTable +-- +-- Note that the variables in this group are not numbered +-- sequentially. This was done so that variables from +-- RFC 1243 did not need to be deprecated. + +ddpForwRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input datagrams for which this entity + was not their final DDP destination, as a result of + which an attempt was made to find a route to forward + them to that final destination." + ::= { ddp 5 } + +ddpOutNoRoutes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of DDP datagrams dropped because a + route could not be found to their final destination." + ::= { ddp 8 } + +ddpBroadcastErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams dropped + because this entity was not their final destination + and they were addressed to the link level broadcast." + ::= { ddp 11 } + +ddpHopCountErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams dropped + because this entity was not their final destination + and their hop count would exceed 15." + ::= { ddp 13 } + +-- The ddpForwardingTable is a read-only table which shows the +-- next hop that a datagram will take when being routed to a +-- specific network. If a manager wishes to change data in +-- this table via SNMP, he must change it in the MIB for the +-- routing protocol itself (by incrementing hop counts, +-- etc), rather than in this table. This table is derived +-- by the managed entity from the information it receives +-- from the routing protocols that it supports. +-- +-- This table also shows the routing table from which the next +-- hop was derived. When a MIB is written for an AppleTalk +-- routing protocol, it should include the definition of an +-- object identifier which will be used in the +-- ddpForwardingProto variable defined here. (For example, +-- a value for RTMP is defined as { ddp-forw-proto-oids 1 } + +-- below.) +-- +-- To look for a specific net N in this table, it is suggested +-- that the management station perform a get-next query for +-- ddpForwardingNetEnd.(N-1). This will retrieve the correct +-- row if it exists in the table. + +ddpForwardingTable OBJECT-TYPE + SYNTAX SEQUENCE OF DdpForwardingEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table of forwarding entries for DDP. This table + contains a route for each AppleTalk network currently + known to the entity." + ::= { ddp 16 } + +ddpForwardingEntry OBJECT-TYPE + SYNTAX DdpForwardingEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A forwarding entry for a particular AppleTalk + network. + + As an example, an instance of the ddpForwardingPort + object might be named ddpForwardingPort.0.90" + INDEX { ddpForwardingNetEnd } + ::= { ddpForwardingTable 1 } + +DdpForwardingEntry ::= SEQUENCE { + ddpForwardingNetEnd ATNetworkNumber, + ddpForwardingNetStart ATNetworkNumber, + ddpForwardingNextHop OCTET STRING, + ddpForwardingProto OBJECT IDENTIFIER, + ddpForwardingModifiedTime TimeTicks, + ddpForwardingUseCounts Counter, + ddpForwardingPort INTEGER +} + +ddpForwardingNetEnd OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The last network number in the network range + matched by this forwarding entry. This will not be + zero even if this corresponds to a non-extended + net." + ::= { ddpForwardingEntry 1 } + +ddpForwardingNetStart OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The first network number in the network range + matched by this forwarding entry." + ::= { ddpForwardingEntry 2 } + +ddpForwardingNextHop OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The next hop in the route to this entry's + destination network. The format of this address can + be determined by examinating the atportType + corresponding to this entry." + ::= { ddpForwardingEntry 3 } + +ddpForwardingProto OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The routing mechanism by which this route was + learned." + ::= { ddpForwardingEntry 4 } + +ddpForwardingModifiedTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time of the last + modification to this entry. The initial value of + ddpForwardingModified time shall be the value of + sysUpTime at the time the entry is created." + ::= { ddpForwardingEntry 5 } + +ddpForwardingUseCounts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this entry has been used to + route a packet to the destination network. Note + that this counter is not cleared when the + corresponding ddpForwardingNextHop variable + changes." + ::= { ddpForwardingEntry 6 } + +ddpForwardingPort OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The AppleTalk port through which + ddpForwardingNextHop is reached. The interface + identified by a particular value of this variable is + the same interface as identified by the same value + of atportIndex." + ::= { ddpForwardingEntry 7 } + + +ddpForwProtoOids OBJECT IDENTIFIER ::= { ddp 17 } + +-- The value to be assigned to ddpForwardingProto when the +-- routing protocol is RTMP. +rtmpRoutingProto OBJECT IDENTIFIER ::= { ddpForwProtoOids 1 } + +-- The value to be assigned to ddpForwardingProto when the +-- routing protocol is KIP. +kipRoutingProto OBJECT IDENTIFIER ::= { ddpForwProtoOids 2 } + +ddpForwardingTableOverflows OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the entity attempted to add an + entry to the forwarding table but failed due to + overflow." + ::= { ddp 18 } + + +-- The RTMP Group +-- +-- Implementation of this group is required for all routers +-- which implement RTMP + +rtmpTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtmpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Routing Table Maintenance Protocol + entries for this entity." + ::= { rtmp 1 } + +rtmpEntry OBJECT-TYPE + SYNTAX RtmpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The route entry to a particular network range. + + As an example, an instance of the rtmpPort object + might be named rtmpPort.0.80" + INDEX { rtmpRangeStart } + ::= { rtmpTable 1 } + +RtmpEntry ::= SEQUENCE { + rtmpRangeStart ATNetworkNumber, + rtmpRangeEnd ATNetworkNumber, + rtmpNextHop OCTET STRING, + rtmpType INTEGER, + rtmpPort INTEGER, + rtmpHops INTEGER, + rtmpState INTEGER +} + +rtmpRangeStart OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The first DDP network address in the network range + to which this routing entry pertains. This is a two + octet DDP network address in network byte order." + ::= { rtmpEntry 1 } + +rtmpRangeEnd OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last DDP network address in the network range + to which this routing entry pertains. This is a two + octet DDP network address in network byte order. If + the network to which this routing entry pertains is + a non-extended network, the value for rtmpRangeEnd + shall be two octets of zero." + ::= { rtmpEntry 2 } + +rtmpNextHop OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The next internet router in the route to this + entry's destination network. The format of this + address can be determined by examinating the + atportType corresponding to this entry." + ::= { rtmpEntry 3 } + +rtmpType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + appletalk(2), + serialPPP(3), + serialNonstandard(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of network over which this route points." + ::= { rtmpEntry 4 } + +rtmpPort OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The AppleTalk port over which this route points. + The interface identified by a particular value of + this variable is the same interface as identified by + the same value of atportIndex." + ::= { rtmpEntry 5 } + +rtmpHops OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hops required to reach the + destination network to which this routing entry + pertains." + ::= { rtmpEntry 6 } + +rtmpState OBJECT-TYPE + SYNTAX INTEGER { + good(1), + suspect(2), + badZero(3), + badOne(4), + invalid(5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of the information contained in this + route entry. + + Setting this object to the value invalid(5) has the + effect of invalidating the corresponding entry in + the rtmpTable. That is, it effectively + disassociates the mapping identified with said + entry. It is an implementation-specific matter as + to whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive from agents tabular + information corresponding to entries not currently + in use. Proper interpretation of such entries + requires examination of the relevant rtmpState + object." + ::= { rtmpEntry 7 } + +rtmpInDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of good RTMP data packets + received by this entity." + ::= { rtmp 2 } + +rtmpOutDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of RTMP packets sent by this + entity." + ::= { rtmp 3 } + +rtmpInRequestPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of good RTMP Request packets + received by this entity." + ::= { rtmp 4 } + +rtmpNextIREqualChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times RTMP changes the + Next Internet Router in a routing entry because the + hop count advertised in a routing tuple was equal to + the current hop count for a particular network." + ::= { rtmp 5 } + +rtmpNextIRLessChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times RTMP changes the + Next Internet Router in a routing entry because the + hop count advertised in a routing tuple was less + than the current hop count for a particular network." + ::= { rtmp 6 } + +rtmpRouteDeletes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times RTMP deletes a route + because it was aged out of the table. This can help + to detect routing problems." + ::= { rtmp 7 } + +rtmpRoutingTableOverflows OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times RTMP attempted to add a route + to the RTMP table but failed due to lack of space." + ::= { rtmp 8 } + +-- The RTMP Stub Group +-- +-- Implementation of this group is mandatory for all +-- entities that implement RTMP +-- +-- It is intended that this group be implemented by routers +-- and end nodes. + +rtmpOutRequestPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of RTMP Request packets sent + by this entity." + ::= { rtmpStub 1 } + +rtmpInVersionMismatches OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of RTMP packets received by + this entity that were rejected due to a version + mismatch." + ::= { rtmpStub 2 } + +rtmpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of RTMP packets received by + this entity that were rejected for an error other + than version mismatch." + ::= { rtmpStub 3 } + + +-- The KIP Group +-- +-- Implementation of this group is mandatory for all +-- entities that implement KIP + +kipTable OBJECT-TYPE + SYNTAX SEQUENCE OF KipEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of routing information for KIP networks." + ::= { kip 1 } + +kipEntry OBJECT-TYPE + SYNTAX KipEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the routing table for KIP networks. + + As an example, an instance of the kipCore object + might be named kipCore.0.80" + INDEX { kipNetStart } + ::= { kipTable 1 } + +KipEntry ::= SEQUENCE { + kipNetStart ATNetworkNumber, + kipNetEnd ATNetworkNumber, + kipNextHop IpAddress, + kipHopCount INTEGER, + kipBCastAddr IpAddress, + kipCore INTEGER, + kipType INTEGER, + kipState INTEGER, + kipShare INTEGER, + kipFrom IpAddress +} + +kipNetStart OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The first AppleTalk network address in the range + for this routing entry. This address is a two octet + DDP network address in network byte order." + ::= { kipEntry 1 } + +kipNetEnd OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The last AppleTalk network address in the range for + this routing entry. This address is a two octet DDP + network address in network byte order. If the + network to which this AppleTalk port is connected is + a non-extended network, the value for kipNetEnd + shall be two octets of zero." + ::= { kipEntry 2 } + +kipNextHop OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The IP address of the next hop in the route to this + entry's destination network." + ::= { kipEntry 3 } + +kipHopCount OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of hops required to reach the destination + network to which this entry pertains." + ::= { kipEntry 4 } + +kipBCastAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The form of the IP address used to broadcast on this + network." + ::= { kipEntry 5 } + +kipCore OBJECT-TYPE + SYNTAX INTEGER { + core(1), + notcore(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of kipNextHop as a core gateway." + ::= { kipEntry 6 } + +kipType OBJECT-TYPE + SYNTAX INTEGER { + kipRouter(1), + net(2), + host(3), + other(4), + async(5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of the entity that this route points to." + ::= { kipEntry 7 } + +kipState OBJECT-TYPE + SYNTAX INTEGER { + configured(1), -- this entry is not aged + learned(2), + invalid(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this network entry. + + Setting this object to the value invalid(3) has the + effect of invalidating the corresponding entry in the + kipTable. That is, it effectively disassociates the + mapping identified with said entry. It is an + implementation-specific matter as to whether the agent + removes an invalidated entry from the table. + Accordingly, management stations must be prepared to + receive from agents tabular information corresponding + to entries not currently in use. Proper + interpretation of such entries requires examination + of the relevant kipState object." + ::= { kipEntry 8 } + +kipShare OBJECT-TYPE + SYNTAX INTEGER { + shared(1), + private(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If the information in this entry is propagated to + other routers as part of the AA routing protocol, + the value of this variable is equal to shared(1). + Otherwise its value is private(2)." + ::= { kipEntry 9 } + +kipFrom OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP address from which the routing entry was + learned via the AA protocol. If this entry was not + created via the AA protocol, it should contain IP + address 0.0.0.0." + ::= { kipEntry 10 } + + +-- The ZIP Router Group +-- +-- Implementation of this group is required for all routers +-- which implement ZIP +-- +-- This group consists of ZIP variables that would be +-- implemented by a router. + +zipTable OBJECT-TYPE + SYNTAX SEQUENCE OF ZipEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of zone information for reachable + AppleTalk networks." + ::= { zipRouter 1 } + +zipEntry OBJECT-TYPE + SYNTAX ZipEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry of zone information for a particular zone + and network combination. + + As an example, an instance of the zipZoneState object + might be named zipZoneState.0.80.4" + INDEX { zipZoneNetStart, zipZoneIndex } + ::= { zipTable 1 } + +ZipEntry ::= SEQUENCE { + zipZoneName ATName, + zipZoneIndex INTEGER, + zipZoneNetStart ATNetworkNumber, + zipZoneNetEnd ATNetworkNumber, + zipZoneState INTEGER, + zipZoneFrom OCTET STRING, + zipZonePort INTEGER +} + +zipZoneName OBJECT-TYPE + SYNTAX ATName + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The zone name of this entry. This is stored in + Mac ASCII format. If the full zone list for the + entry is not known, the value for zipZoneName shall + be a zero length octet string." + ::= { zipEntry 1 } + +zipZoneIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An integer that is unique to the zipZoneName that + is present in this entry. For any given zone name, + every zipEntry that has an equal zone name will have + the same zipZoneIndex. When a zone name is + discovered which is not currently in the table, it + will be assigned an index greater than any + previously assigned index." + ::= { zipEntry 2 } + +zipZoneNetStart OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network that starts the range for this entry. + This address is a two octet DDP network address in + network byte order." + ::= { zipEntry 3 } + +zipZoneNetEnd OBJECT-TYPE + SYNTAX ATNetworkNumber + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network that ends the range for this entry. + This address is a two octet DDP network address in + network byte order. If the network to which this + zip entry pertains is a non-extended network, the + value for zipZoneNetEnd shall be two octets of + zero." + ::= { zipEntry 4 } + +zipZoneState OBJECT-TYPE + SYNTAX INTEGER { + valid(1), + invalid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this zip entry. + + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in + the zipTable. That is, it effectively + disassociates the mapping identified with said + entry. It is an implementation-specific matter as + to whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive from agents tabular + information corresponding to entries not currently + in use. Proper interpretation of such entries + requires examination of the relevant zipZoneState + object." + ::= { zipEntry 5 } + +zipZoneFrom OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address from which this zone name to network + number mapping was learned. The format of this + address can be determined by examining the + atportType corresponding to this entry. When this + mapping is learned from the entity itself, this + object shall have the value of three + octets of zero." + ::= { zipEntry 6 } + +zipZonePort OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The AppleTalk port through which this zone name to + network number mapping was learned. The interface + identified by a particular value of this variable is + the same interface as identified by the same value + of atportIndex." + ::= { zipEntry 7 } + +zipInZipQueries OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP Queries received by this entity." + ::= { zipRouter 2 } + +zipInZipReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP Replies received by this entity." + ::= { zipRouter 3 } + +zipInZipExtendedReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP Extended Replies received by this + entity." + ::= { zipRouter 4 } + +zipZoneConflictErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a conflict has been detected + between this entity's zone information and another + entity's zone information." + ::= { zipRouter 5 } + +zipInObsoletes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP Takedown or ZIP Bringup packets + received by this entity. Note that as the ZIP + Takedown and ZIP Bringup packets have been + obsoleted, the receipt of one of these packets + indicates that a node sent it in error." + ::= { zipRouter 6 } + +-- The zipRouterNetInfoTable is used to record information +-- about zipGetNetInfo and zipGetNetInfo Reply packets that +-- were received on each port for a router. This table +-- augments the atportTable. + +zipRouterNetInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF ZipRouterNetInfoEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of Net Info packets received by each port + on this entity." + ::= { zipRouter 7 } + +zipRouterNetInfoEntry OBJECT-TYPE + SYNTAX ZipRouterNetInfoEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The description of the Net Info packets received on + a particular port on this entity. One such entry + shall exist for each atport on this router entity. + + As an example, an instance of the zipInGetNetInfos + object might be named zipInGetNetInfos.2" + INDEX { atportIndex } + ::= { zipRouterNetInfoTable 1 } + +ZipRouterNetInfoEntry ::= SEQUENCE { + zipInGetNetInfos Counter, + zipOutGetNetInfoReplies Counter, + zipZoneOutInvalids Counter, + zipAddressInvalids Counter +} + +zipInGetNetInfos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP GetNetInfo packets received on + this port by this entity." + ::= { zipRouterNetInfoEntry 1 } + +zipOutGetNetInfoReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP GetNetInfo Reply packets sent out + this port by this entity." + ::= { zipRouterNetInfoEntry 2 } + +zipZoneOutInvalids OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this entity has sent a ZIP + GetNetInfo Reply with the zone invalid bit set in + response to a GetNetInfo Request with an invalid + zone name." + ::= { zipRouterNetInfoEntry 3 } + +zipAddressInvalids OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this entity had to broadcast a + ZIP GetNetInfo Reply because the GetNetInfo Request + had an invalid address." + ::= { zipRouterNetInfoEntry 4 } + + +-- The ZIP End Node Group +-- +-- Implementation of this group is mandatory for all entities +-- that implement ZIP +-- +-- This group consists of ZIP variables that would be +-- implemented by either a router or an end node. + +-- The zipNetInfoTable is used to record information about +-- zipGetNetInfo and zipGetNetInfo Reply packets that were +-- received on each port of an entity. This table augments +-- the atportTable. + +zipNetInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF ZipNetInfoEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of Net Info packets received by each port + on this entity." + ::= { zipEndNode 1 } + +zipNetInfoEntry OBJECT-TYPE + SYNTAX ZipNetInfoEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The description of the Net Info packets received on + a particular port on this entity. One such entry + shall exist for each atport on this entity. + + As an example, an instance of the zipOutGetNetInfos + object might be named zipOutGetNetInfos.2" + INDEX { atportIndex } + ::= { zipNetInfoTable 1 } + +ZipNetInfoEntry ::= SEQUENCE { + zipOutGetNetInfos Counter, + zipInGetNetInfoReplies Counter, + zipZoneInInvalids Counter +} + +zipOutGetNetInfos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP GetNetInfo packets sent out this + port by this entity." + ::= { zipNetInfoEntry 1 } + +zipInGetNetInfoReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP GetNetInfo Reply packets received + on this port by this entity." + ::= { zipNetInfoEntry 2 } + +zipZoneInInvalids OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this entity has received a ZIP + GetNetInfo Reply with the zone invalid bit set + because the corresponding GetNetInfo Request had an + invalid zone name." + ::= { zipNetInfoEntry 3 } + +zipInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP packets received by this entity + that were rejected for any error." + ::= { zipEndNode 2 } + + +-- The NBP Group +-- +-- Implementation of this group is mandatory for all entities +-- that implement NBP + +nbpTable OBJECT-TYPE + SYNTAX SEQUENCE OF NbpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of NBP services registered on this entity." + ::= { nbp 1 } + +nbpEntry OBJECT-TYPE + SYNTAX NbpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The description of an NBP service registered on this + entity. + + As an example, an instance of the nbpZone object + might be named nbpZone.2" + INDEX { nbpIndex } + ::= { nbpTable 1 } + +NbpEntry ::= SEQUENCE { + nbpIndex INTEGER, + nbpObject ATName (SIZE (1..32)), + nbpType ATName (SIZE (1..32)), + nbpZone ATName, + nbpState INTEGER, + nbpAddress DdpSocketAddress, + nbpEnumerator INTEGER (0..255) +} + +nbpIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The index of this NBP entry. This index is unique + with respect to the indexes of all other NBP entries, + and shall remain constant throughout the lifetime + of this object." + ::= { nbpEntry 1 } + +nbpObject OBJECT-TYPE + SYNTAX ATName (SIZE (1..32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The name of the service described by this entity. + When this variable is changed, the entity should + perform an NBP registration using the new nbpObject." + ::= { nbpEntry 2 } + +nbpType OBJECT-TYPE + SYNTAX ATName (SIZE (1..32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of the service described by this entity. + When this variable is changed, the entity should + perform an NBP registration using the new nbpType." + ::= { nbpEntry 3 } + +nbpZone OBJECT-TYPE + SYNTAX ATName + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The zone the service described by this entity is + registered in. This must be the actual zone name, + without any wildcard characters. When this variable + is changed, the entity should perform an NBP + registration using the new nbpZone." + ::= { nbpEntry 4 } + +nbpState OBJECT-TYPE + SYNTAX INTEGER { + valid(1), + registering(2), -- attempting to register the service + registrationFailed(3), + invalid(4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this NBP entry. + When the registration for an entry in the nbpTable + fails, it is an implementation-specific matter as to + how long the entry will remain in the + registrationFailed(3) state before moving to the + invalid(4) state. Note that the entry may pass + immediately from the registrationFailed state to + the invalid state. + + Setting this object to the value invalid(4) has the + effect of invalidating the corresponding entry in the + nbpTable. That is, it effectively disassociates the + mapping identified with said entry. It is an + implementation-specific matter as to whether the agent + removes an invalidated entry from the table. + Accordingly, management stations must be prepared to + receive from agents tabular information corresponding + to entries not currently in use. Proper + interpretation of such entries requires examination + of the relevant nbpState object." + ::= { nbpEntry 5 } + +nbpAddress OBJECT-TYPE + SYNTAX DdpSocketAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The DDP network, node, and socket number of this + entity. If this is unspecified, for instance if the + registration is on all ports of a multiport device, + this object shall have the value of three octets of + zero, followed by one octet of socket number." + ::= { nbpEntry 6 } + +nbpEnumerator OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The enumerator assigned to this entity." + ::= { nbpEntry 7 } + + +nbpInLookUpRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP LookUp Requests received." + ::= { nbp 2 } + +nbpInLookUpReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP LookUp Replies received." + ::= { nbp 3 } + +nbpInBroadcastRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP Broadcast Requests received." + ::= { nbp 4 } + +nbpInForwardRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP Forward Requests received." + ::= { nbp 5 } + +nbpOutLookUpReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP LookUp Replies sent." + ::= { nbp 6 } + +nbpRegistrationFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this node experienced a failure + in attempting to register an NBP entity." + ::= { nbp 7 } + + nbpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP packets received by this entity + that were rejected for any error." + ::= { nbp 8 } + + +-- The ATEcho Group +-- +-- Implementation of this group is mandatory for all +-- entities that implement ATEcho + +atechoRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of AppleTalk Echo requests received." + ::= { atecho 1 } + +atechoReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of AppleTalk Echo replies sent." + ::= { atecho 2 } + +atechoOutRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of AppleTalk Echo requests sent." + ::= { atecho 3 } + +atechoInReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of AppleTalk Echo replies received." + ::= { atecho 4 } + +-- The ATP Group +-- +-- Implementation of this group is mandatory for all entities +-- that implement ATP + +atpInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ATP packets received by this entity." + ::= { atp 1 } + +atpOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ATP packets sent by this entity." + ::= { atp 2 } + +atpTRequestRetransmissions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times that a timeout occurred and a + Transaction Request packet needed to be + retransmitted by this host." + ::= { atp 3 } + +atpTResponseRetransmissions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a timeout was detected and a + Transaction Response packet needed to be + retransmitted by this host." + ::= { atp 4 } + +atpReleaseTimerExpiredCounts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the release timer expired, as a + result of which a Request Control Block had to be + deleted." + ::= { atp 5 } + +atpRetryCountExceededs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the retry count was exceeded, + and an error was returned to the client of ATP." + ::= { atp 6 } + +atpListenerTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtpListenerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The atpListenerTable stores information for each ATP + socket that has a listener." + ::= { atp 7 } + +atpListenerEntry OBJECT-TYPE + SYNTAX AtpListenerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This atpListenerEntry contains information about a + particular socket that has a socket listener. + + As an example, an instance of the atpListenerStatus + object might be named atpListenerStatus.0.80.220.3" + INDEX { atpListenerAddress } + ::= { atpListenerTable 1 } + +AtpListenerEntry ::= SEQUENCE { + atpListenerAddress DdpSocketAddress, + atpListenerStatus INTEGER +} + +atpListenerAddress OBJECT-TYPE + SYNTAX DdpSocketAddress + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The DDP address that this socket listener is bound + to. If this socket listener isn't bound to a + particular address, for instance if it is intended + for all interfaces, this object shall have the value + of three octets of zero followed by one octet of + socket number." + ::= { atpListenerEntry 1 } + +atpListenerStatus OBJECT-TYPE + SYNTAX INTEGER { + valid(1), + invalid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this socket. + + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in + the atpListenerTable. That is, it effectively + disassociates the mapping identified with said + entry. It is an implementation-specific matter as + to whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive from agents tabular + information corresponding to entries not currently + in use. Proper interpretation of such entries + requires examination of the relevant + atpListenerStatus object." + ::= { atpListenerEntry 2 } + + +-- The PAP group +-- +-- Implementation of this group is mandatory for all entities +-- that implement PAP + +papInOpenConns OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PAP Open Connection requests received + by this entity." + ::= { pap 1 } + +papOutOpenConns OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PAP Open Connection requests sent by + this entity." + ::= { pap 2 } + +papInDatas OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PAP Data messages received by + this entity." + ::= { pap 3 } + +papOutDatas OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PAP Data messages sent by + this entity." + ::= { pap 4 } + +papInCloseConns OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PAP Close Connection requests + received by this entity." + ::= { pap 5 } + +papOutCloseConns OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PAP Close Connection requests sent by + this entity." + ::= { pap 6 } + +papTickleTimeoutCloses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the PAP entity on this node + closed a connection because it didn't receive a + Tickle message before its timer expired." + ::= { pap 7 } + +papServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF PapServerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of servers on this entity that are + accessible through the Printer Access Protocol." + ::= { pap 8 } + +papServerEntry OBJECT-TYPE + SYNTAX PapServerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of information about a particular PAP server's + configuration and performance. + + As an example, an instance of the papServerStatus + object might be named papServerStatus.1" + INDEX { papServerIndex } + ::= { papServerTable 1 } + +PapServerEntry ::= SEQUENCE { + papServerIndex INTEGER, + papServerListeningSocket DdpSocketAddress, + papServerStatus DisplayString, + papServerCompletedJobs Counter, + papServerBusyJobs INTEGER, + papServerFreeJobs INTEGER, + papServerAuthenticationFailures Counter, + papServerAccountingFailures Counter, + papServerGeneralFailures Counter, + papServerState INTEGER, + papServerLastStatusMsg DisplayString +} + +papServerIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An unique value for each Printer Access Protocol + Server." + ::= { papServerEntry 1 } + +papServerListeningSocket OBJECT-TYPE + SYNTAX DdpSocketAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Server Listening Socket that this PAP server is + listening on." + ::= { papServerEntry 2 } + +papServerStatus OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The status string of this server. This is the + message as it would appear in a PAP Status Reply + from this server." + ::= { papServerEntry 3 } + +papServerCompletedJobs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of jobs that have been accepted and + successfully executed by this server." + ::= { papServerEntry 4 } + +papServerBusyJobs OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of GetNextJob calls that have accepted + and are currently executing a job." + ::= { papServerEntry 5 } + +papServerFreeJobs OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The minimum number of GetNextJob calls that are + currently waiting for a job." + ::= { papServerEntry 6 } + +papServerAuthenticationFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this PAP server rejected a job + because the job was not correctly authenticated." + ::= { papServerEntry 7 } + +papServerAccountingFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this PAP server rejected a job + because the job did not fit some accounting rule, + such as exceeding a quota." + ::= { papServerEntry 8 } + +papServerGeneralFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this PAP server rejected a job + for some reason other than authentication or + accounting failures." + ::= { papServerEntry 9 } + +papServerState OBJECT-TYPE + SYNTAX INTEGER { + valid(1), + invalid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this PAP Server entry. + + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in + the papServerTable. That is, it effectively + disassociates the mapping identified with said + entry. It is an implementation-specific matter as + to whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive from agents tabular + information corresponding to entries not currently + in use. Proper interpretation of such entries + requires examination of the relevant papServerState + object." + ::= { papServerEntry 10 } + +papServerLastStatusMsg OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last status message that was transmitted by + this server." + ::= { papServerEntry 11 } + + +-- The ASP Group +-- +-- Implementation of this group is mandatory for all entities +-- that implement ASP + +aspInputTransactions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ASP requests and replies received by + this entity. Note that this is not necessarily the + number of packets containing ASP transactions." + ::= { asp 1 } + +aspOutputTransactions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ASP requests and replies sent by this + entity. Note that this is not necessarily the number + of packets containing ASP transactions." + ::= { asp 2 } + +aspInOpenSessions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ASP Open Session requests and replies + received by this entity." + ::= { asp 3 } + +aspOutOpenSessions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ASP Open Session requests and replies + sent by this entity." + ::= { asp 4 } + +aspInCloseSessions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ASP Close Session requests and replies + received by this entity." + ::= { asp 5 } + +aspOutCloseSessions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ASP Close Session requests and replies + sent by this entity." + ::= { asp 6 } + +aspNoMoreSessionsErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times an error condition was returned + because this server implementation could not support + another session." + ::= { asp 7 } + +aspTickleTimeOutCloses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the ASP entity on this node + closed a connection because it didn't receive any + messages from the remote end before its timer + expired." + ::= { asp 8 } + +aspConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF AspConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ASP connections on this entity." + ::= { asp 9 } + +aspConnEntry OBJECT-TYPE + SYNTAX AspConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of information describing an ASP connection. + + As an example, an instance of the aspConnState object + might be named + aspConnState.0.80.220.135.0.80.239.119.12" + INDEX { aspConnLocalAddress, aspConnRemoteAddress, + aspConnID } + ::= { aspConnTable 1 } + +AspConnEntry ::= SEQUENCE { + aspConnLocalAddress DdpSocketAddress, + aspConnRemoteAddress DdpSocketAddress, + aspConnID INTEGER (1..255), + aspConnLastReqNum INTEGER (1..65535), + aspConnServerEnd INTEGER, + aspConnState INTEGER +} + +aspConnLocalAddress OBJECT-TYPE + SYNTAX DdpSocketAddress + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The local address of this ASP connection." + ::= { aspConnEntry 1 } + +aspConnRemoteAddress OBJECT-TYPE + SYNTAX DdpSocketAddress + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The remote address of this ASP connection. If + this entry is in the listening mode, this object + shall have a value of four octets of zero." + ::= { aspConnEntry 2 } + +aspConnID OBJECT-TYPE + SYNTAX INTEGER (1..255) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The remote Connection ID of this ASP connection. If + this entry is in the listening mode, this object + shall have a value of zero." + ::= { aspConnEntry 3 } + +aspConnLastReqNum OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last request number on this ASP connection. If + this entry is in the listening mode, this object + shall have a value of zero." + ::= { aspConnEntry 4 } + +aspConnServerEnd OBJECT-TYPE + SYNTAX INTEGER { + sss(1), -- Server Session Socket + wss(2), -- Workstation Session Socket + sls(3) -- Server Listening Socket + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Specifies what mode the local session end is in." + ::= { aspConnEntry 5 } + +aspConnState OBJECT-TYPE + SYNTAX INTEGER { + open(1), + closed(2), + invalid(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this ASP connection. + Setting this object to the value invalid(3) has the + effect of invalidating the corresponding entry in the + aspConnTable. That is, it effectively disassociates + the mapping identified with said entry. It is an + implementation-specific matter as to whether the agent + removes an invalidated entry from the table. + Accordingly, management stations must be prepared to + receive from agents tabular information corresponding + to entries not currently in use. Proper + interpretation of such entries requires examination + of the relevant aspConnState object." + ::= { aspConnEntry 6 } + + +-- The ADSP Group +-- +-- Implementation of this group is mandatory for all entities +-- that implement ADSP + + +adspInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ADSP packets received by this entity." + ::= { adsp 1 } + +adspOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ADSP packets sent by this entity." + ::= { adsp 2 } + +adspInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of data octets contained in ADSP packets + received by this entity. Note that this does not + include EOM bits." + ::= { adsp 3 } + +adspOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of data octets contained in ADSP packets + sent by this entity. Note that this does not include + EOM bits." + ::= { adsp 4 } + +adspInDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ADSP data packets this entity has + received." + ::= { adsp 5 } + +adspOutDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ADSP data packets this entity has + sent." + ::= { adsp 6 } + +adspTimeoutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the ADSP on this entity detected + an expired connection timer." + ::= { adsp 7 } + +adspTimeoutCloseErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the ADSP on this entity closed a + connection because of too many timeouts." + ::= { adsp 8 } + +adspConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF AdspConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ADSP connections on this entity." + ::= { adsp 9 } + +adspConnEntry OBJECT-TYPE + SYNTAX AdspConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of information describing an ADSP connection. + As an example, an instance of the adspConnState object + might be named + adspConnState.0.80.220.7.0.80.239.142.31231" + INDEX { adspConnLocalAddress, adspConnRemoteAddress, + adspConnLocalConnID } + ::= { adspConnTable 1 } + +AdspConnEntry ::= SEQUENCE { + adspConnLocalAddress DdpSocketAddress, + adspConnLocalConnID INTEGER (0..65535), + adspConnRemoteAddress DdpSocketAddress, + adspConnRemoteConnID INTEGER (0..65535), + adspConnState INTEGER +} + +adspConnLocalAddress OBJECT-TYPE + SYNTAX DdpSocketAddress + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The local DDP address of this ADSP connection." + ::= { adspConnEntry 1 } + +adspConnLocalConnID OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The local Connection ID of this ADSP connection. If + this entry specifies an ADSP listener, this value + shall be zero." + ::= { adspConnEntry 2 } + +adspConnRemoteAddress OBJECT-TYPE + SYNTAX DdpSocketAddress + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The remote DDP address of this ADSP connection. If + this entry specifies an ADSP listener, this value + shall be zero." + ::= { adspConnEntry 3 } + +adspConnRemoteConnID OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote Connection ID of this ADSP connection. + If this entry specifies an ADSP listener, this value + shall be zero." + ::= { adspConnEntry 4 } + +adspConnState OBJECT-TYPE + SYNTAX INTEGER { + open(1), + localHalfOpen(2), + remoteHalfOpen(3), + listening(4), + closed(5), + invalid(6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this ADSP connection. The state is + open if both ends are established. If only one end + is established, then the state is half-open. If + neither end is established, then the state is + closed. If an ADSP server is listening on a socket + and is not yet connected, its state is set to + listening, and the adspConnRemoteAddress, + adspConnRemoteSocket, adspConnRemoteConnID, and + adspConnRemoteWindowSize are all set to zero. + + Setting this object to the value invalid(6) has the + effect of invalidating the corresponding entry in + the adspConnTable. That is, it effectively + disassociates the mapping identified with said + entry. It is an implementation-specific matter as + to whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive from agents tabular + information corresponding to entries not currently + in use. Proper interpretation of such entries + requires examination of the relevant adspConnState + object." + ::= { adspConnEntry 5 } + +-- The ATPortPtoP Group +-- +-- Implementation of this group is mandatory for all entities +-- that implement AppleTalk point-to-point links + +atportPtoPTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtportPtoPEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of AppleTalk point-to-point connections for + this entity." + ::= { atportptop 1 } + +atportPtoPEntry OBJECT-TYPE + SYNTAX AtportPtoPEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The description of one of the AppleTalk + point-to-point connections on this entity. + + As an example, an instance of the + atportPtoPRemoteAddress object might be named + atportPtoPRemoteAddress.2" + INDEX { atportPtoPIndex } + ::= { atportPtoPTable 1 } + +AtportPtoPEntry ::= SEQUENCE { + atportPtoPIndex INTEGER, + atportPtoPProtocol OBJECT IDENTIFIER, + atportPtoPRemoteName DisplayString, + atportPtoPRemoteAddress OCTET STRING, + atportPtoPPortIndex INTEGER, + atportPtoPStatus INTEGER +} + +atportPtoPIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A unique value for each AppleTalk point-to-point + connection. Its value is between 1 and the total + number of AppleTalk point-to-point connections. The + value for each connection must remain constant at + least from the re-initialization of the entity's + network management system to the next + re-initialization." + ::= { atportPtoPEntry 1 } + +atportPtoPProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The protocol type used over the point-to-point + connection." + ::= { atportPtoPEntry 2 } + +atportPtoPRemoteName OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A text string containing the network node name of the + entity at the other end of the point-to-point link. + If the name is unknown or undefined, then this + string is zero length." + ::= { atportPtoPEntry 3 } + +atportPtoPRemoteAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The network address of the entity at the other end + of the point-to-point link in network byte order. + The format of this address can be determined + by examinating the atportType corresponding to this + entry. If the address is unknown or undefined, then + this string is zero length." + ::= { atportPtoPEntry 4 } + +atportPtoPPortIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The AppleTalk port associated with this + point-to-point connection. The interface identified + by a particular value of this index is the same + interface as identified by the same value of + atportIndex." + ::= { atportPtoPEntry 5 } + +atportPtoPStatus OBJECT-TYPE + SYNTAX INTEGER { + valid(1), + invalid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this entry in the atportPtoPTable. + + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in + the atportPtoPTable. That is, it effectively + disassociates the mapping identified with said + entry. It is an implementation-specific matter as + to whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive from agents tabular + information corresponding to entries not currently + in use. Proper interpretation of such entries + requires examinationr of the relevant + atportPtoPStatus object." + ::= { atportPtoPEntry 6 } + +atportPtoPProtoOids OBJECT IDENTIFIER ::= { atportptop 2 } + +-- A list of values to be used for the atportPtoPProtocol +-- variable. +-- When new protocols are defined, their oids may be defined +-- in separate MIB documents in different branches of the tree. + +pToPProtoOther OBJECT IDENTIFIER ::= { atportPtoPProtoOids 1 } +pToPProtoAurp OBJECT IDENTIFIER ::= { atportPtoPProtoOids 2 } +pToPProtoCaymanUdp OBJECT IDENTIFIER ::= + { atportPtoPProtoOids 3 } +pToPProtoAtkvmsDecnetIV OBJECT IDENTIFIER ::= + { atportPtoPProtoOids 4 } +pToPProtoLiaisonUdp OBJECT IDENTIFIER ::= + { atportPtoPProtoOids 5 } +pToPProtoIpx OBJECT IDENTIFIER ::= { atportPtoPProtoOids 6 } +pToPProtoShivaIp OBJECT IDENTIFIER ::= + { atportPtoPProtoOids 7 } + +-- The Per Port Counters Group +-- +-- Implementation of this group is optional. + +perPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF PerPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of per-port statistics for this entity." + ::= { perPort 1 } + +perPortEntry OBJECT-TYPE + SYNTAX PerPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The statistics available for a particular port on + this entity. + + As an example, an instance of the perPortAarpInProbes + object might be named perPortAarpInProbes.2" + INDEX { atportIndex } + ::= { perPortTable 1 } + +PerPortEntry ::= SEQUENCE { + perPortAarpInProbes Counter, + perPortAarpOutProbes Counter, + perPortAarpInReqs Counter, + perPortAarpOutReqs Counter, + perPortAarpInRsps Counter, + perPortAarpOutRsps Counter, + perPortDdpInReceives Counter, + perPortDdpInLocalDatagrams Counter, + perPortDdpNoProtocolHandlers Counter, + perPortDdpTooShortErrors Counter, + perPortDdpTooLongErrors Counter, + perPortDdpChecksumErrors Counter, + perPortDdpForwRequests Counter, + perPortRtmpInDataPkts Counter, + perPortRtmpOutDataPkts Counter, + perPortRtmpInRequestPkts Counter, + perPortRtmpRouteDeletes Counter, + perPortZipInZipQueries Counter, + perPortZipInZipReplies Counter, + perPortZipInZipExtendedReplies Counter, + perPortZipZoneConflictErrors Counter, + perPortZipInErrors Counter, + perPortNbpInLookUpRequests Counter, + perPortNbpInLookUpReplies Counter, + perPortNbpInBroadcastRequests Counter, + perPortNbpInForwardRequests Counter, + perPortNbpOutLookUpReplies Counter, + perPortNbpRegistrationFailures Counter, + perPortNbpInErrors Counter, + perPortEchoRequests Counter, + perPortEchoReplies Counter +} + +perPortAarpInProbes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AARP Probe packets received + by this entity on this port." + ::= { perPortEntry 1 } + +perPortAarpOutProbes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AARP Probe packets sent by + this entity on this port." + ::= { perPortEntry 2 } + +perPortAarpInReqs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AARP Request packets received + by this entity on this port." + ::= { perPortEntry 3 } + +perPortAarpOutReqs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AARP Request packets sent by + this entity on this port." + ::= { perPortEntry 4 } + +perPortAarpInRsps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AARP Response packets received + by this entity on this port." + ::= { perPortEntry 5 } + +perPortAarpOutRsps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of AARP Response packets sent by + this entity on this port." + ::= { perPortEntry 6 } + + +perPortDdpInReceives OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input datagrams received by DDP + on this port, including those received in error." + ::= { perPortEntry 7 } + +perPortDdpInLocalDatagrams OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams on this + port for which this entity was their final DDP + destination." + ::= { perPortEntry 8 } + +perPortDdpNoProtocolHandlers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of DDP datagrams addressed to this + entity on this port that were addressed to an upper + layer protocol for which no protocol handler + existed." + ::= { perPortEntry 9 } + +perPortDdpTooShortErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams on this + port dropped because the received data length was + less than the data length specified in the DDP + header or the received data length was less than the + length of the expected DDP header." + ::= { perPortEntry 10 } + +perPortDdpTooLongErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams on this + port dropped because they exceeded the maximum DDP + datagram size." + ::= { perPortEntry 11 } + +perPortDdpChecksumErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input DDP datagrams on this + port for which this DDP entity was their final + destination, and which were dropped because of a + checksum error." ::= { perPortEntry 12 } + +perPortDdpForwRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input datagrams on this port for + which this entity was not their final DDP + destination, as a result of which an attempt was + made to find a route to forward them to that final + destination." + ::= { perPortEntry 13 } + + +perPortRtmpInDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of good RTMP data packets + received by this entity on this port." + ::= { perPortEntry 14 } + +perPortRtmpOutDataPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of RTMP packets sent by this + entity on this port." + ::= { perPortEntry 15 } + +perPortRtmpInRequestPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of good RTMP Request packets + received by this entity on this port." + ::= { perPortEntry 16 } + +perPortRtmpRouteDeletes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times RTMP deletes a route + on this port because it was aged out of the table." + ::= { perPortEntry 17 } + + +perPortZipInZipQueries OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP Queries received by this entity + on this port." + ::= { perPortEntry 18 } + +perPortZipInZipReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP Replies received by this entity + on this port." + ::= { perPortEntry 19 } + +perPortZipInZipExtendedReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP Extended Replies received by this + entity on this port." + ::= { perPortEntry 20 } + +perPortZipZoneConflictErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a conflict has been detected on + this port between this entity's zone information and + another entity's zone information." + ::= { perPortEntry 21 } + +perPortZipInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ZIP packets received by this entity + on this port that were rejected for any error." + ::= { perPortEntry 22 } + + +perPortNbpInLookUpRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP LookUp Requests received on this + port." + ::= { perPortEntry 23 } + +perPortNbpInLookUpReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP LookUp Replies received on this + port." + ::= { perPortEntry 24 } + +perPortNbpInBroadcastRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP Broadcast Requests received on + this port." + ::= { perPortEntry 25 } + +perPortNbpInForwardRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP Forward Requests received on this + port." + ::= { perPortEntry 26 } + +perPortNbpOutLookUpReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP LookUp Replies sent on this port." + ::= { perPortEntry 27 } + +perPortNbpRegistrationFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this node experienced a failure + in attempting to register an NBP entity on this + port." + ::= { perPortEntry 28 } + +perPortNbpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of NBP packets received by this entity + on this port that were rejected for any error." + ::= { perPortEntry 29 } + +perPortEchoRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of AppleTalk Echo requests received on + this port." + ::= { perPortEntry 30 } + +perPortEchoReplies OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of AppleTalk Echo replies received on + this port." + ::= { perPortEntry 31 } + +END diff --git a/mibs/ietf/APPLICATION-MIB b/mibs/ietf/APPLICATION-MIB new file mode 100644 index 0000000..71e5797 --- /dev/null +++ b/mibs/ietf/APPLICATION-MIB @@ -0,0 +1,2999 @@ +APPLICATION-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter64, Counter32, Gauge32, + mib-2, Unsigned32, zeroDotZero FROM SNMPv2-SMI + + DateAndTime, TEXTUAL-CONVENTION, + TestAndIncr, TDomain, + TimeStamp, TruthValue FROM SNMPv2-TC + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + LongUtf8String, sysApplElmtRunIndex FROM SYSAPPL-MIB; + +applicationMib MODULE-IDENTITY + LAST-UPDATED "9811171815Z" + ORGANIZATION "Application MIB Working Group" + CONTACT-INFO + "http://www.ietf.org/html.charters/applmib-charter.html + + Randy Presuhn + BMC Software, Inc. + 965 Stewart Drive + Sunnyvale, CA 94086 + USA + + Telephone: +1 408 616-3100 + Facsimile: +1 408 616-3101 + EMail: randy_presuhn@bmc.com + " + DESCRIPTION + "This MIB defines objects representing generic aspects of + applications that are of interest to management but typically + require instrumentation within managed application elements. + " + ::= { mib-2 62 } + + +-- +-- Registration hierarchy for this MIB +-- +applicationMibObjects OBJECT IDENTIFIER ::= + { applicationMib 1 } +applicationMibConformance OBJECT IDENTIFIER ::= + { applicationMib 2 } + + +-- +-- Groups defined in this MIB +-- +applServiceGroup OBJECT IDENTIFIER ::= + { applicationMibObjects 1 } + +applChannelGroup OBJECT IDENTIFIER ::= + { applicationMibObjects 2 } + +applPastChannelGroup OBJECT IDENTIFIER ::= + { applicationMibObjects 3 } + +applElmtRunControlGroup OBJECT IDENTIFIER ::= + { applicationMibObjects 4 } + + +Unsigned64TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A non-negative 64-bit bit integer, without counter + semantics." + SYNTAX Counter64 + +ApplTAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a transport service address. + + For snmpUDPDomain, an ApplTAddress is 6 octets long, + the initial 4 octets containing the IP-address in + network-byte order and the last 2 containing the UDP + port in network-byte order. Consult 'Transport Mappings + for Version 2 of the Simple Network Management Protocol + (SNMPv2)' for further information on snmpUDPDomain." + SYNTAX OCTET STRING (SIZE (0..255)) + +-- **************************************************************** +-- +-- applServiceGroup - +-- +-- The service-level tables permit the identification of one +-- or more instances of named services on a system, and the +-- association of running application elements to services. +-- +-- **************************************************************** + + +-- **************************************************************** +-- +-- The service name to service instance table +-- +-- **************************************************************** + +applSrvNameToSrvInstTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplSrvNameToSrvInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The service name to service instance table uses + service name as its primary key, and service instance + identifier as its secondary key. It facilitates the + identification and lookup of the instances of a given + service in a system." + ::= { applServiceGroup 1 } + +applSrvNameToSrvInstEntry OBJECT-TYPE + SYNTAX ApplSrvNameToSrvInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applSrvNameToSrvInstEntry identifies an instance of + a given service. The allocation and reservation + of unique values for applSrvIndex is an administrative + issue. + + An applSrvNameToSrvInstEntry exists for the lifetime of + that instance of that service; the index values may not + change during that lifetime. " + INDEX { applSrvName, applSrvIndex } + ::= { applSrvNameToSrvInstTable 1 } + +ApplSrvNameToSrvInstEntry ::= SEQUENCE + { + applSrvInstQual SnmpAdminString + } + + +applSrvInstQual OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of applSrcInstQual provides additional + information about this particular instance of this + service. + + Although not used for indexing purposes, the value of + this attribute should be sufficiently unique to be + helpful to an administrator in distinguishing among + service instances. " + ::= { applSrvNameToSrvInstEntry 1 } + + +-- **************************************************************** +-- +-- Service instance to Service Name table +-- +-- **************************************************************** + +applSrvInstToSrvNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplSrvInstToSrvNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The service instance to service name table uses + service instance identifier as its primary key, and + service name as its secondary key. Given a service + instance identifier, it facilitates the lookup of the + name of the service being provided." + ::= { applServiceGroup 2 } + +applSrvInstToSrvNameEntry OBJECT-TYPE + SYNTAX ApplSrvInstToSrvNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applSrvInstToSrvNameEntry maps a service instance + identifier back to a service name." + INDEX { applSrvIndex, applSrvName } + ::= { applSrvInstToSrvNameTable 1 } + +ApplSrvInstToSrvNameEntry ::= SEQUENCE + { + applSrvName SnmpAdminString + } + +applSrvName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The human-readable name of a service. Where + appropriate, as in the case where a service can be + identified in terms of a single protocol, the strings + should be established names such as those assigned by + IANA and found in STD 2 [13], or defined by some other + authority. In some cases private conventions apply + and the string should in these cases be consistent + with these non-standard conventions. An applicability + statement may specify the service name(s) to be used. + " + ::= { applSrvInstToSrvNameEntry 1 } + +-- **************************************************************** +-- +-- The service instance to running application element table +-- +-- **************************************************************** + +applSrvInstToRunApplElmtTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplSrvInstToRunApplElmtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The service instance to running application element + table uses the service instance identifier as its primary + key, and the running application element index as its + secondary key. This facilitates the identification + of the set of running application elements providing a + given instance of a service." + ::= { applServiceGroup 3 } + +applSrvInstToRunApplElmtEntry OBJECT-TYPE + SYNTAX ApplSrvInstToRunApplElmtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applSrvInstToRunApplElmtEntry identifies a running + application element providing an instance of a service. + Note that there may be multiple running application + elements involved in the provision of an instance of + a service." + INDEX { applSrvIndex, sysApplElmtRunIndex } + ::= { applSrvInstToRunApplElmtTable 1 } + +ApplSrvInstToRunApplElmtEntry ::= SEQUENCE + { + applSrvIndex Unsigned32 + } + +applSrvIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An applSrvIndex is the system-unique identifier of + an instance of a service. The value is unique not only + across all instances of a given service, but also across + all services in a system. + + Re-use of values for this index should be avoided. + No two service instances in a given system shall + concurrently have the same value for this index. + + The value zero is excluded from the set of permitted + values for this index. This allows other tables to + potentially represent things which cannot be associated + with a specific service instance. + " + ::= { applSrvInstToRunApplElmtEntry 1 } + +-- **************************************************************** +-- +-- The running application element to service instance table +-- +-- **************************************************************** + +applRunApplElmtToSrvInstTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplRunApplElmtToSrvInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The running application element to service instance + table uses the running application element index as + its primary key and the service instance identifier as + its secondary key. It identifies the set of services + provided by a given running application element." + ::= { applServiceGroup 4 } + +applRunApplElmtToSrvInstEntry OBJECT-TYPE + SYNTAX ApplRunApplElmtToSrvInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applRunApplElmtToSrvInstEntry serves to identify an + instance of a service being provided by a given running + application element. Note that a particular running + application element may provide multiple services." + INDEX { sysApplElmtRunIndex, applSrvInstance } + ::= { applRunApplElmtToSrvInstTable 1 } + +ApplRunApplElmtToSrvInstEntry ::= SEQUENCE + { + applSrvInstance Unsigned32 + } + +applSrvInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An applSrvInstance is the system-unique identifier of an + instance of a service. The value is unique not only + across all instances of a given service, but also across + all services. + + Re-use of values for this index should be avoided. + No two service instances in a given system shall + concurrently have the same value for this index. + The value zero is excluded from the set of permitted + values for this index. This allows other tables to + potentially represent things which cannot be associated + with a specific service instance. + + This attribute is semantically identical to + applSrvIndex." + ::= { applRunApplElmtToSrvInstEntry 1 } + + +-- **************************************************************** +-- +-- applChannelGroup - group with tables for I/O +-- +-- In this group, the common abstraction is the Channel. +-- Channels are realized as files or connections. +-- The information flowing on a channel can always be +-- measured in terms of a byte stream. Furthermore, for many +-- channels, this information may also be measured in terms +-- of transactions. +-- +-- For all of these tables, the first two indexes determines +-- whether what is being measured is for a single running +-- application element or for an instance of a service. +-- +-- The second index identifies the running application element +-- or service instance. +-- +-- The third index is the channel id, which uniquely identifies +-- a channel within the context of a running application element +-- or service instance. +-- +-- Any remaining indexes are table-specific. +-- +-- **************************************************************** + + +-- **************************************************************** +-- +-- applOpenChannelTable - Table of Open Channels +-- +-- **************************************************************** + +applOpenChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplOpenChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applOpenChannelTable reports information on open + channels for running application elements + and for service instances. This table is + indexed by applElmtOrSvc, applElmtOrSvcId, and + applOpenChannelIndex. This effectively groups all + entries for a given running application element + or service instance together. ApplChannelIndex uniquely + identifies an open channel (and, consequently, a file + or connection) within the context of a particular + running application element or service instance. + + Some of the information in this table is available + through both sixty-four and thirty-two bit counters. + The sixty-four bit counters are not accessible in + protocols that do not support this data type." + ::= { applChannelGroup 1 } + +applOpenChannelEntry OBJECT-TYPE + SYNTAX ApplOpenChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applOpenChannelEntry indicates that a channel has been + opened by this running application element or service + instance and is still open. Note that if a file has been + opened multiple times, even by the same process, it will + have multiple channel entries." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applOpenChannelIndex } + ::= { applOpenChannelTable 1 } + +ApplOpenChannelEntry ::= SEQUENCE + { + applElmtOrSvc INTEGER, + applElmtOrSvcId Unsigned32, + applOpenChannelIndex Unsigned32, + applOpenChannelOpenTime TimeStamp, + applOpenChannelReadRequests Counter64, + applOpenChannelReadRequestsLow Counter32, + applOpenChannelReadFailures Counter32, + applOpenChannelBytesRead Counter64, + applOpenChannelBytesReadLow Counter32, + applOpenChannelLastReadTime DateAndTime, + applOpenChannelWriteRequests Counter64, + applOpenChannelWriteRequestsLow Counter32, + applOpenChannelWriteFailures Counter32, + applOpenChannelBytesWritten Counter64, + applOpenChannelBytesWrittenLow Counter32, + applOpenChannelLastWriteTime DateAndTime + } + +applElmtOrSvc OBJECT-TYPE + SYNTAX INTEGER { service(1), + element(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applElmtOrSvc attribute serves as an index for tables + that can hold information both for individual running + application elements as well as for service instances. + + If the value is service(1), the row contains information + gathered at the level of a service. + + If the value is element(2), the row contains information + for an individual running application element." + ::= { applOpenChannelEntry 1 } + +applElmtOrSvcId OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applElmtOrSvcId attribute is used as an index in + conjunction with the applElmtOrSvc attribute. + + When the value of applElmtOrSvc is service(1), this + attribute's value corresponds to that of applSrvIndex, + when the value of applElmtOrSvc is element(2), this + attribute's value corresponds to sysApplElmtRunIndex." + ::= { applOpenChannelEntry 2 } + +applOpenChannelIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This attribute serves to uniquely identify this open + connection in the context of the running application + element or service instance. Where suitable, the + application's native descriptor number should be used." + ::= { applOpenChannelEntry 3 } + +applOpenChannelOpenTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the value of sysUpTime.0 + when this channel was opened and this entry was added to + this table. This attribute serves as a discontinuity + indicator for the counter attributes in this entry + and for any corresponding entries in the + applOpenConnectionTable, applOpenFileTable, and the + applTransactionStreamTable." + ::= { applOpenChannelEntry 4 } + +applOpenChannelReadRequests OBJECT-TYPE + SYNTAX Counter64 + UNITS "read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of read requests + for this channel. All read requests for this channel + by this entity, regardless of completion status, are + included in this count. + + Read requests are counted in terms of system calls, + rather than API calls. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 5 } + +applOpenChannelReadRequestsLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the low thirty-two bits of + applOpenChannelReadRequests. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 6 } + +applOpenChannelReadFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of failed read + requests. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 7 } + +applOpenChannelBytesRead OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of bytes read from + this channel. Only bytes successfully read are included + in this count. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 8 } + +applOpenChannelBytesReadLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applOpenChannelBytesRead. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 9 } + +applOpenChannelLastReadTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the time of the most recent read + request made by this entity, regardless of completion + status, for this open channel. + + If no read requests have been made the value of this + attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applOpenChannelEntry 10 } + +applOpenChannelWriteRequests OBJECT-TYPE + SYNTAX Counter64 + UNITS "write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of write requests for + this channel made by this entity. All write requests + for this channel, regardless of completion status, are + included in this count. + + Write requests are counted in terms of system calls, + rather than API calls. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 11 } + +applOpenChannelWriteRequestsLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applOpenChannelWriteRequests. + + Discontinuities in this counter can be detected + by monitoring the applOpenChannelOpenTime value for + this entry." + ::= { applOpenChannelEntry 12 } + +applOpenChannelWriteFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of failed write + requests. + + Discontinuities in this counter can be detected + by monitoring the applOpenChannelOpenTime value for + this entry." + ::= { applOpenChannelEntry 13 } + +applOpenChannelBytesWritten OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of bytes written to + this channel. Only bytes successfully written (without + errors reported by the system to the API in use by the + application) are included in this count. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 14 } + +applOpenChannelBytesWrittenLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applOpenChannelBytesWritten. + + Discontinuities in this counter can be detected by + monitoring the applOpenChannelOpenTime value for this + entry." + ::= { applOpenChannelEntry 15 } + +applOpenChannelLastWriteTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the time of the most recent write + request made by this running application element or + service instance, regardless of completion status, for + this open channel. + If no write requests have been made, the value + of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applOpenChannelEntry 16 } + +-- **************************************************************** +-- +-- applOpenFileTable - Table of Open Files +-- +-- **************************************************************** + +applOpenFileTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplOpenFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applOpenFileTable reports information on open files + for service instances or application elements. This + table is indexed by applElmtOrSvc and applElmtOrSvcId, + effectively grouping all entries for a given running + service instance or application element together, and + by applOpenChannelIndex, uniquely identifying an open + channel (and, consequently, a file) within the context + of a particular service instance or application element. + + Elements in this table correspond to elements in the + applOpenChannelTable that represent files. For rows in + the applOpenChannelTable that do not represent files, + corresponding rows in this table will not exist." + ::= { applChannelGroup 2 } + +applOpenFileEntry OBJECT-TYPE + SYNTAX ApplOpenFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applOpenFileEntry indicates that a file has been + opened by this running application element and is + still open. Note that if a file has been opened + multiple times, even by the same process, it will have + multiple entries." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applOpenChannelIndex } + ::= { applOpenFileTable 1 } + +ApplOpenFileEntry ::= SEQUENCE + { + applOpenFileName LongUtf8String, + applOpenFileSizeHigh Unsigned32, + applOpenFileSizeLow Unsigned32, + applOpenFileMode INTEGER + } + +applOpenFileName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the name of this open file. + Wherever practical, a fully qualified path name should + be reported. + + The values 'stdin', 'stdout', and 'stderr' are reserved + in accordance with common usage when the fully qualified + path name cannot be determined." + ::= { applOpenFileEntry 1 } + +applOpenFileSizeHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "2^32 byte blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This file's current size in 2^32 byte blocks. + + For example, for a file with a total size of 4,294,967,296 + bytes, this attribute would have a value of 1; for a file + with a total size of 4,294,967,295 bytes this attribute's + value would be 0." + ::= { applOpenFileEntry 2 } + +applOpenFileSizeLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This file's current size modulo 2^32 bytes. + + For example, for a file with a total size of + 4,294,967,296 bytes this attribute would have a value + of 0; for a file with a total size of 4,294,967,295 + bytes this attribute's value would be 4,294,967,295." + ::= { applOpenFileEntry 3 } + +applOpenFileMode OBJECT-TYPE + SYNTAX INTEGER { read(1), + write(2), + readWrite(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the current mode of this file from + the perspective of this running application element. + + These values have the following meanings: + + read(1) - file opened for reading only + write(2) - file opened for writing only + readWrite(3) - file opened for read and write. + + These values correspond to the POSIX/ANSI C library + function fopen() 'type' parameter, using the following + mappings: + + r -> read(1) + w -> write(2) + a -> write(2) + + -> readWrite(3) + " + ::= { applOpenFileEntry 4 } + + +-- **************************************************************** +-- +-- applOpenConnectionTable - Open Connection Table +-- +-- **************************************************************** + +applOpenConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplOpenConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applOpenConnectionTable provides information about + open and listening connections from the perspective + of a running application element or service instance. + Entries in this table are indexed by applElmtOrSvc, + applElmtOrSvcID, and by applOpenChannelIndex, which + serves to uniquely identify each connection in the + context of a service instance or running application + element. + + For each row in this table, a corresponding row will + exist in the applOpenChannel table. For rows in the + applOpenChannelTable which do not represent open or + listening connections, no corresponding rows will exist + in this table." + ::= { applChannelGroup 3 } + +applOpenConnectionEntry OBJECT-TYPE + SYNTAX ApplOpenConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applOpenConnectionEntry indicates that a running + application element or service instance has an open + connection. The entry has information describing that + connection. + + In the case of a TCP transport, the element + applOpenConnectionNearEndAddr and that row's + applOpenConnectionFarEndAddr would correspond + to a tcpConnEntry. For a UDP transport, a + similar relationship exists with respect to + a udpEntry." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applOpenChannelIndex } + ::= { applOpenConnectionTable 1 } + +ApplOpenConnectionEntry ::= SEQUENCE + { + applOpenConnectionTransport TDomain, + applOpenConnectionNearEndAddr ApplTAddress, + applOpenConnectionNearEndpoint SnmpAdminString, + applOpenConnectionFarEndAddr ApplTAddress, + applOpenConnectionFarEndpoint SnmpAdminString, + applOpenConnectionApplication SnmpAdminString + } + +applOpenConnectionTransport OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionTransport attribute identifies the + transport protocol in use for this connection. If it is + not practical to determine the underlying transport, this + attribute's value shall have a value of {0 0}." + DEFVAL { zeroDotZero } + ::= { applOpenConnectionEntry 1 } + +applOpenConnectionNearEndAddr OBJECT-TYPE + SYNTAX ApplTAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionNearEndAddr attribute reports the + transport address and port information for the near end + of this connection. + + If the value is not known, the value has a length + of zero." + DEFVAL { "" } + ::= { applOpenConnectionEntry 2 } + +applOpenConnectionNearEndpoint OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionNearEndpoint attribute reports the + fully-qualified domain name and port information for the + near end of this connection. + + The format of this attribute for TCP and UDP-based + protocols is the fully-qualified domain name immediately + followed by a colon which is immediately followed by + the decimal representation of the port number. + + If the value is not known, the value has a length + of zero." + DEFVAL { "" } + ::= { applOpenConnectionEntry 3 } + +applOpenConnectionFarEndAddr OBJECT-TYPE + SYNTAX ApplTAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionFarEndAddr attribute reports the + transport address and port information for the far end + of this connection. + + If not known, as in the case of a connectionless + transport, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applOpenConnectionEntry 4 } + +applOpenConnectionFarEndpoint OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionFarEndpoint attribute reports + the fully-qualified domain name and port information + for the far end of this connection. + + The format of this attribute for TCP and UDP-based + protocols is the fully-qualified domain name immediately + followed by a colon which is immediately followed by + the decimal representation of the port number. + + If not known, as in the case of a connectionless + transport, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applOpenConnectionEntry 5 } + +applOpenConnectionApplication OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applOpenConnectionApplication attribute identifies + the application layer protocol in use. If not known, + the value of this attribute shall be a zero-length + string. + + When possible, protocol names should be those used in + the 'ASSIGNED NUMBERS' [13]. For example, an SMTP mail + server would use 'SMTP'." + DEFVAL { "" } + ::= { applOpenConnectionEntry 6 } + +-- **************************************************************** +-- +-- applTransactionStreamTable - common +-- information for transaction stream monitoring +-- +-- **************************************************************** + +applTransactionStreamTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplTransactionStreamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactionStreamTable contains common + information for transaction statistic accumulation." + ::= { applChannelGroup 4 } + +applTransactionStreamEntry OBJECT-TYPE + SYNTAX ApplTransactionStreamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applTransactionStreamEntry contains information for + a single transaction stream. A transaction stream + can be a network connection, file, or other source + of transactions." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applOpenChannelIndex } + ::= { applTransactionStreamTable 1 } + +ApplTransactionStreamEntry ::= SEQUENCE { + applTransactStreamDescr SnmpAdminString, + applTransactStreamUnitOfWork SnmpAdminString, + applTransactStreamInvokes Counter64, + applTransactStreamInvokesLow Counter32, + applTransactStreamInvCumTimes Counter32, + applTransactStreamInvRspTimes Counter32, + applTransactStreamPerforms Counter64, + applTransactStreamPerformsLow Counter32, + applTransactStreamPrfCumTimes Counter32, + applTransactStreamPrfRspTimes Counter32 } + +applTransactStreamDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamDescr attribute provides a + human-readable description of this transaction stream. + If no descriptive information is available, this + attribute's value shall be a zero-length string." + DEFVAL { "" } + ::= { applTransactionStreamEntry 1 } + +applTransactStreamUnitOfWork OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamUnitOfWork attribute provides a + human-readable definition of what the unit of work is + for this transaction stream. + + If no descriptive information is available, this + attribute's value shall be a zero-length string." + DEFVAL { "" } + ::= { applTransactionStreamEntry 2 } + +applTransactStreamInvokes OBJECT-TYPE + SYNTAX Counter64 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cumulative count of requests / invocations issued. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 3 } + +applTransactStreamInvokesLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter corresponds to the low thirty-two + bits of applTransactStreamInvokes. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 4 } + +applTransactStreamInvCumTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamInvCumTimes attribute reports the + cumulative sum of the lengths of the intervals measured + between the transmission of requests and the receipt of + (the first of) the corresponding response(s). + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 5 } + +applTransactStreamInvRspTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamInvRspTimes attribute reports the + cumulative sum of the lengths of the intervals measured + between the receipt of the first and last of multiple + responses to a request. + + For transaction streams which do not permit multiple + responses to a single request, this attribute will be + constant. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 6 } + +applTransactStreamPerforms OBJECT-TYPE + SYNTAX Counter64 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cumulative count of transactions performed. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 7 } + +applTransactStreamPerformsLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter reports the low thirty-two bits of + applTransactStreamPerforms. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 8 } + +applTransactStreamPrfCumTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactStreamPrfCumTimes attribute reports the + cumulative sum of the interval lengths measured between + receipt of requests and the transmission of the + corresponding responses. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 9 } + +applTransactStreamPrfRspTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For each transaction performed, the elapsed time between + when the first response is enqueued and when the last + response is enqueued is added to this cumulative sum. + + For single-response protocols, the value of + applTransactStreamPrfRspTimes will be constant. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactionStreamEntry 10 } + +-- **************************************************************** +-- +-- applTransactFlowTable +-- +-- **************************************************************** + +applTransactFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplTransactFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactFlowTable contains entries, organized by + application instance or running application element, + direction of flow, and type (request/response) for each + open transaction stream. + + The simple model of a transaction used here looks like + this: + + invoker | Request | performer + | - - - - - - > | + | | + | Response | + | < - - - - - - | + | | + + Since in some protocols it is possible for an entity + to take on both the invoker and performer roles, + information here is accumulated for transmitted and + received requests, as well as for transmitted and + received responses. Counts are maintained for both + transactions and bytes transferred." + ::= { applChannelGroup 5 } + +applTransactFlowEntry OBJECT-TYPE + SYNTAX ApplTransactFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applTransactFlowEntry reports transaction throughput + information for requests or response in a particular + direction (transmit / receive) for a transaction stream. + + Entries in this table correspond to those in the + applTransactionStreamTable with identical values for the + applElmtOrSvc, applElmtOrSvcId, and applOpenChannelIndex. + + For all counter objects in one of these entries, + the corresponding (same value for applElmtOrSvc, + applElmtOrSvcId, and applOpenChannelIndex) + applOpenChannelOpenTime object serves as a discontinuity + indicator. " + INDEX { applElmtOrSvc, + applElmtOrSvcId, + applOpenChannelIndex, + applTransactFlowDirection, + applTransactFlowReqRsp } + ::= { applTransactFlowTable 1 } + +ApplTransactFlowEntry ::= SEQUENCE { + applTransactFlowDirection INTEGER, + applTransactFlowReqRsp INTEGER, + applTransactFlowTrans Counter64, + applTransactFlowTransLow Counter32, + applTransactFlowBytes Counter64, + applTransactFlowBytesLow Counter32, + applTransactFlowTime DateAndTime } + +applTransactFlowDirection OBJECT-TYPE + SYNTAX INTEGER { transmit(1), + receive(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactFlowDirection index serves to identify + an entry as containing information pertaining to the + transmit (1) or receive (2) flow of a transaction + stream." + ::= { applTransactFlowEntry 1 } + +applTransactFlowReqRsp OBJECT-TYPE + SYNTAX INTEGER { request(1), + response(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the applTransactFlowReqRsp index indicates + whether this entry contains information on requests + (1), or responses (2)." + ::= { applTransactFlowEntry 2 } + +applTransactFlowTrans OBJECT-TYPE + SYNTAX Counter64 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactFlowTrans attribute reports the number + of request/response transactions (as indicated by + the applTransactFlowReqRsp index) received/generated + (as indicated by the applTransactFlowDirection index) + that this service instance or running application + element has processed for this transaction stream. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactFlowEntry 3 } + +applTransactFlowTransLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applTransactFlowTrans. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactFlowEntry 4 } + +applTransactFlowBytes OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactFlowBytes attribute reports the number + of request/response (as indicated by the + applTransactFlowReqRsp index) bytes received/generated + (as indicated by the applTransactFlowDirection index) + handled by this application element or service instance + on this transaction stream. + + All application layer bytes are included in this count, + including any application layer wrappers, headers, or + other overhead. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactFlowEntry 5 } + +applTransactFlowBytesLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applTransactFlowBytes. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactFlowEntry 6 } + +applTransactFlowTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactFlowTime attribute records the time of + the processing (receipt or transmission as indicated + by the applTransactFlowDirection index) by this + running application element or service instance of + the most recent request/response (as indicated by + the applTransactFlowReqRsp index) on this transaction + stream. + + If no requests/responses been received/transmitted by + this entity over this transaction stream, the value + of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applTransactFlowEntry 7 } + +-- **************************************************************** +-- +-- applTransactKindTable - transaction statistics broken down +-- according to the kinds of transactions in each direction +-- for a transaction stream. +-- +-- **************************************************************** + +applTransactKindTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplTransactKindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactKindTable provides transaction statistics + broken down by kinds of transaction. The definition of + the kinds of transactions is specific to the application + protocol in use, and may be documented in the form of an + applicability statement. " + ::= { applChannelGroup 6 } + +applTransactKindEntry OBJECT-TYPE + SYNTAX ApplTransactKindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applTransactKindEntry reports information for a + specific service instance or running application + element's use of a specific transaction stream in + a particular direction in requests or responses + (as indicated by the applTransactFlowReqRsp index) + broken down by transaction kind, as indicated by the + applTransactKind index. + + Discontinuities in any of the counters in an entry can + be detected by monitoring the corresponding instance of + applOpenChannelOpenTime." + + INDEX { applElmtOrSvc, + applElmtOrSvcId, + applOpenChannelIndex, + applTransactFlowDirection, + applTransactFlowReqRsp, + applTransactKind } + ::= { applTransactKindTable 1 } + +ApplTransactKindEntry ::= SEQUENCE + { + applTransactKind SnmpAdminString, + applTransactKindTrans Counter64, + applTransactKindTransLow Counter32, + applTransactKindBytes Counter64, + applTransactKindBytesLow Counter32, + applTransactKindTime DateAndTime + } + +applTransactKind OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1 .. 32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applTransactKind index is the human-readable + identifier for a particular transaction kind within + the context of an application protocol. The values + to be used for a particular protocol may be identified + in an applicability statement." + ::= { applTransactKindEntry 1 } + +applTransactKindTrans OBJECT-TYPE + SYNTAX Counter64 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindTrans attribute reports the number + of request/response (as indicated by the + applTransactFlowReqRsp index) transactions + received/generated (as indicated by the + applTransactFlowDirection index) handled by this + application instance or application element on this + transaction stream for this transaction kind. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactKindEntry 2 } + +applTransactKindTransLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindTransLow attribute reports + the low thirty-two bits of applTransactKindTrans. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactKindEntry 3 } + +applTransactKindBytes OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindBytes attribute reports the number + of request/response (as indicated by the + applTransactFlowReqRsp index) bytes received/generated + (as indicated by the applTransactFlowDirection index) + handled by this application element on this transaction + stream for this transaction kind. + + All application layer bytes are included in this count, + including any application layer wrappers, headers, or + other overhead. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactKindEntry 4 } + +applTransactKindBytesLow OBJECT-TYPE + SYNTAX Counter32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindBytesLow attribute corresponds + to the low thirty-two bits of applTransactKindBytes. + + Discontinuities in this counter can be detected + by monitoring the corresponding instance of + applOpenChannelOpenTime." + ::= { applTransactKindEntry 5 } + +applTransactKindTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applTransactKindTime attribute records the time of + the processing (receipt or transmission as indicated + by the applTransactFlowDirection index) by this + running application element or service instance of + the most recent request/response (as indicated by + the applTransactFlowReqRsp index) of this kind of + transaction on this transaction stream. + + If no requests/responses of this kind been + received/transmitted by this running application element + or service instance over this transaction stream, the + value of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applTransactKindEntry 6 } + +-- **************************************************************** +-- +-- applPastChannelGroup - logged information on former channels. +-- These tables control the collection of channel history +-- information and represent the accumulated historical data. +-- +-- **************************************************************** + +applPastChannelControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastChannelControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastChannelControlTable controls the + accumulation of history information about channels + from the perspective of service instances and running + application elements. Entries in this table are indexed + by applElmtOrSvc and applElmtOrSvcId, giving control + of channel history accumulation at the level of each + service instance and running application element." + ::= { applPastChannelGroup 1 } + +applPastChannelControlEntry OBJECT-TYPE + SYNTAX ApplPastChannelControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastChannelControlEntry provides the ability + to control the retention of channel history information + by service instances and running application elements." + INDEX { applElmtOrSvc, applElmtOrSvcId } + ::= { applPastChannelControlTable 1 } + +ApplPastChannelControlEntry ::= SEQUENCE + { + applPastChannelControlCollect INTEGER, + applPastChannelControlMaxRows Unsigned32, + applPastChannelControlTimeLimit Unsigned32, + applPastChannelControlRemItems Counter32 + } + +applPastChannelControlCollect OBJECT-TYPE + SYNTAX INTEGER { enabled (1), + frozen (2), + disabled (3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When the value of applPastChannelControlCollect is + 'enabled', each time the corresponding running + application element or service instance closes + an open channel a new entry will be added to the + applPastChannelTable. + + When the value of applPastChannelControlCollect + is 'frozen', no new entries are added to the + applPastChannelTable for this running application + element or service instance, and old entries are not + aged out. + + When the value of applPastChannelControlCollect + is 'disabled', all entries are removed from + applPastChannelTable for this running application or + service instance, and no new entries are added." + DEFVAL { enabled } + ::= { applPastChannelControlEntry 1 } + +applPastChannelControlMaxRows OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "channel history entries" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries allowed in the + applPastChannelTable for this running application element + or service instance. Once the number of rows for this + running application element or service instance in the + applPastChannelTable reaches this value, when new + entries are to be added the management subsystem will + make room for them by removing the oldest entries. + Entries will be removed on the basis of oldest + applPastChannelCloseTime value first." + DEFVAL { 500 } + ::= { applPastChannelControlEntry 2 } + +applPastChannelControlTimeLimit OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum time in seconds which an entry for this + running application element or service instance + may exist in the applPastChannelTable before it + is removed. Any entry that is older than this value + will be removed (aged out) from the table, unless the + applPastChannelControlCollect is set to 'frozen'. + + Note that an entry may be aged out prior to reaching + this time limit if it is the oldest entry in the table + and must be removed to make space for a new entry so + as to not exceed applPastChannelControlMaxRows, or if the + applPastChannelControlCollect is set to 'disabled'." + DEFVAL { 7200 } + ::= { applPastChannelControlEntry 3 } + +applPastChannelControlRemItems OBJECT-TYPE + SYNTAX Counter32 + UNITS "channel history entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastChannelControlRemItems attribute reports the + number of applPastChannelControlTable entries for this + running application element or service instance that + were deleted in order to make room for new history + entries. + + This count does NOT include entries deleted for the + following reasons: + - the corresponding applPastChannelControlCollect + attribute has been set to 'disabled' + + - the entry has been in the table longer that the + time limit indicated by the corresponding + applPastChannelControlTimeLimit. + " + ::= { applPastChannelControlEntry 4 } + + +-- **************************************************************** +-- +-- applPastChannelTable - Table of former channels +-- +-- **************************************************************** + +applPastChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastChannelTable provides history information + about channels from the perspective of running + application elements and service instances. + Entries in this table are indexed by applElmtOrSvc, + applElmtOrSvcId, and by applPastChannelIndex, which + serves to uniquely identify each former channel in the + context of a running application element or service + instance. + + Note that the value of applPastChannelIndex is + independent of the value applOpenChannelIndex had when + this channel was open. + + Entries for closed channels for a given running + application element or service instance can + be added to this table only if its entry in the + applPastChannelControlTable has the value 'enabled' + for the attribute applPastChannelControlCollect. + + Entries for closed channels are removed under the + following circumstances: + + - the running application element or service + instance no longer exists + + - the corresponding applPastChannelControlCollect + attribute has been set to 'disabled' + + - the entry has been in the table longer that the + time limit indicated by the corresponding + applPastChannelControlTimeLimit and the value of + applPastChannelControlCollect is not 'frozen' + + - this is the oldest entry for the running + application element or service instance in + question and the addition of a new element would + otherwise cause applPastChannelControlMaxRows to + be exceeded for this running application element + or service instance. + + - a value of applPastChannelIndex has been re-used. + Note that under normal circumstances, this is + unlikely. + + Removal/replacement of an entry under the + last two conditions causes the corresponding + applPastChannelControlRemItems to be incremented." + ::= { applPastChannelGroup 2 } + +applPastChannelEntry OBJECT-TYPE + SYNTAX ApplPastChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastChannelEntry indicates that a running + application element or service instance once had an open + channel, which is now closed. The entry has information + describing that channel." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applPastChannelIndex } + ::= { applPastChannelTable 1 } + +ApplPastChannelEntry ::= SEQUENCE + { + applPastChannelIndex Unsigned32, + applPastChannelOpenTime DateAndTime, + applPastChannelCloseTime DateAndTime, + applPastChannelReadRequests Unsigned64TC, + applPastChannelReadReqsLow Unsigned32, + applPastChannelReadFailures Unsigned32, + applPastChannelBytesRead Unsigned64TC, + applPastChannelBytesReadLow Unsigned32, + applPastChannelLastReadTime DateAndTime, + applPastChannelWriteRequests Unsigned64TC, + applPastChannelWriteReqsLow Unsigned32, + applPastChannelWriteFailures Unsigned32, + applPastChannelBytesWritten Unsigned64TC, + applPastChannelBytesWritLow Unsigned32, + applPastChannelLastWriteTime DateAndTime + } + +applPastChannelIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This attribute serves to uniquely identify this closed + channel in the context of the running application + element or service instance. This attribute has no + other semantics. + + Note that the value of applPastChannelIndex is + independent of the value applOpenChannelIndex had when + this channel was active. + + In issuing this index value, the implementation must + avoid re-issuing an index value which has already been + assigned to an entry which has not yet been deleted due + to age or space considerations. + + The value zero is excluded from the set of permitted + values for this index in order to permit other tables to + possibly represent information that cannot be associated + with a specific entry in this table. " + ::= { applPastChannelEntry 1 } + +applPastChannelOpenTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the time when this channel was + originally opened. Note that this information is quite + different from applOpenChannelOpenTime, which is used + for the detection of counter discontinuities." + ::= { applPastChannelEntry 2 } + +applPastChannelCloseTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the time when this channel + was closed." + ::= { applPastChannelEntry 3 } + +applPastChannelReadRequests OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the number of read requests for + this channel made by this running application element or + service instance. All read requests for this channel by + this running application element or service instance, + regardless of completion status, are included in this + count. Read requests are counted in terms of system + calls, rather than API calls." + + ::= { applPastChannelEntry 4 } + +applPastChannelReadReqsLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applPastChannelReadRequests." + ::= { applPastChannelEntry 5 } + +applPastChannelReadFailures OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "failed read requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of failed read + requests." + ::= { applPastChannelEntry 6 } + +applPastChannelBytesRead OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of bytes read from this + channel by this running application element or service + instance. Only bytes successfully read are included in + this count. " + ::= { applPastChannelEntry 7 } + +applPastChannelBytesReadLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits + of applPastChannelBytesRead." + ::= { applPastChannelEntry 8 } + +applPastChannelLastReadTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the time of the most recent read + request made by this running application element or + service instance regardless of completion status, for + this former channel. + + If no read requests have been made , the value of this + attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applPastChannelEntry 9 } + +applPastChannelWriteRequests OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastChannelWriteRequests attribute reports + the number of write requests, regardless of completion + status, made by this running application element or + service instance for this former channel. + + Write requests are counted in terms of system calls, + rather than API calls." + ::= { applPastChannelEntry 10 } + +applPastChannelWriteReqsLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applPastChannelWriteRequests." + ::= { applPastChannelEntry 11 } + +applPastChannelWriteFailures OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "failed write requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of failed write + requests." + ::= { applPastChannelEntry 12 } + +applPastChannelBytesWritten OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute reports the number of bytes written to + this former channel by this running application element + or service instance. Only bytes successfully written + (no errors reported by the API in use by the application) + are included in this count." + ::= { applPastChannelEntry 13 } + +applPastChannelBytesWritLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two bits of + applPastChannelBytesWritten." + ::= { applPastChannelEntry 14 } + +applPastChannelLastWriteTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastChannelLastWriteTime attribute reports + the time of the most recent write request made by + this running application element or service instance, + regardless of completion status, for this former + channel. + + If no write requests have been made the value of this + attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applPastChannelEntry 15 } + +-- **************************************************************** +-- +-- applPastFileTable - information specific to former files +-- +-- **************************************************************** + +applPastFileTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastFileTable supplements the + applPastChannelTable for entries corresponding to + channels which were files. The indexing structure is + identical to applPastChannelTable. An entry exists in + the applPastFileTable only if there is a corresponding + (same index values) entry in the applPastChannelTable + and if the channel was a file. + + Entries for closed files are removed when the + corresponding entries are removed from the + applPastChannelTable." + ::= { applPastChannelGroup 3 } + +applPastFileEntry OBJECT-TYPE + SYNTAX ApplPastFileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastFileEntry provides additional, file-specific + information to complement the corresponding + applPastChannelEntry for a channel which was a file." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applPastChannelIndex } + ::= { applPastFileTable 1 } + +ApplPastFileEntry ::= SEQUENCE + { + applPastFileName LongUtf8String, + applPastFileSizeHigh Unsigned32, + applPastFileSizeLow Unsigned32, + applPastFileMode INTEGER + } + + +applPastFileName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the last known value of + applOpenFileName before the channel was closed." + ::= { applPastFileEntry 1 } + +applPastFileSizeHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "2^32 byte blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the value of applOpenFileSizeHigh + at the time this channel was closed. + + For example, for a file with a total size of + 4,294,967,296 bytes, this attribute would have a value + of 1; for a file with a total size of 4,294,967,295 + bytes this attribute's value would be 0." + ::= { applPastFileEntry 2 } + +applPastFileSizeLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the value of applOpenFileSizeLow + at the time this channel was closed. + + For example, for a file with a total size of + 4,294,967,296 bytes this attribute would have a value + of 0; for a file with a total size of 4,294,967,295 + bytes this attribute's value would be 4,294,967,295." + ::= { applPastFileEntry 3 } + +applPastFileMode OBJECT-TYPE + SYNTAX INTEGER { read(1), + write(2), + readWrite(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute records the value of applOpenFileMode + at the time this channel was closed. " + ::= { applPastFileEntry 4 } + +-- **************************************************************** +-- +-- applPastConTable - information specific to former connections +-- +-- **************************************************************** + +applPastConTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastConEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastConTable supplements the applPastChannelTable + for entries corresponding to channels which were + connections. The indexing structure is identical + to applPastChannelTable. An entry exists in the + applPastConTable only if there is a corresponding + (same index values) entry in the applPastChannelTable + and if the channel was a connection. + + Entries for closed connections are removed when + the corresponding entries are removed from the + applPastChannelTable." + ::= { applPastChannelGroup 4 } + +applPastConEntry OBJECT-TYPE + SYNTAX ApplPastConEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastConEntry provides additional, + connection-specific information to complement the + corresponding applPastChannelEntry for a channel which + was a connection." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applPastChannelIndex } + ::= { applPastConTable 1 } + +ApplPastConEntry ::= SEQUENCE + { + applPastConTransport TDomain, + applPastConNearEndAddr ApplTAddress, + applPastConNearEndpoint SnmpAdminString, + applPastConFarEndAddr ApplTAddress, + applPastConFarEndpoint SnmpAdminString, + applPastConApplication SnmpAdminString + } + +applPastConTransport OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConTransport attribute identifies the + transport protocol that was in use for this former + connection. If the transport protocol could not be + determined, the value { 0 0 } shall be used." + DEFVAL { zeroDotZero } + ::= { applPastConEntry 1 } + +applPastConNearEndAddr OBJECT-TYPE + SYNTAX ApplTAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConNearEndAddr attribute reports the + transport address and port information for the near + end of this former connection. + + If the information could not be determined, the value + shall be a zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 2 } + +applPastConNearEndpoint OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConNearEndpoint attribute reports the + fully-qualified domain name and port information for the + near end of this former connection. + + The format of this attribute for TCP and UDP-based + protocols is the fully-qualified domain name immediately + followed by a colon which is immediately followed by + the decimal representation of the port number. + + If the information could not be determined, the value + shall be a zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 3 } + +applPastConFarEndAddr OBJECT-TYPE + SYNTAX ApplTAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConFarEnd attribute reports the transport + address and port information for the far end of this + former connection. + + If not known, as in the case of a connectionless + transport, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 4 } + +applPastConFarEndpoint OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConFarEndpoint attribute reports the + transport address and port information for the far + end of this former connection. + + The format of this attribute for TCP and UDP-based + protocols is the fully-qualified domain name immediately + followed by a colon which is immediately followed by + the decimal representation of the port number. + + If not known, as in the case of a connectionless + transport, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 5 } + +applPastConApplication OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastConApplication attribute identifies the + application layer protocol that was in use. Where + possible, the values defined in [13] shall be used. + If not known, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applPastConEntry 6 } + + +-- **************************************************************** +-- +-- applPastTransStreamTable - historical +-- information for transaction stream monitoring +-- +-- **************************************************************** + +applPastTransStreamTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastTransStreamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransStreamTable contains common + information for historical transaction statistics." + ::= { applPastChannelGroup 5 } + +applPastTransStreamEntry OBJECT-TYPE + SYNTAX ApplPastTransStreamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastTransStreamEntry contains information for + a single former transaction stream. A transaction + stream could have been a network connection, file, or + other source of transactions." + INDEX { applElmtOrSvc, applElmtOrSvcId, + applPastChannelIndex } + ::= { applPastTransStreamTable 1 } + +ApplPastTransStreamEntry ::= SEQUENCE { + applPastTransStreamDescr SnmpAdminString, + applPastTransStreamUnitOfWork SnmpAdminString, + applPastTransStreamInvokes Unsigned64TC, + applPastTransStreamInvokesLow Unsigned32, + applPastTransStreamInvCumTimes Unsigned32, + applPastTransStreamInvRspTimes Unsigned32, + applPastTransStreamPerforms Unsigned64TC, + applPastTransStreamPerformsLow Unsigned32, + applPastTransStreamPrfCumTimes Unsigned32, + applPastTransStreamPrfRspTimes Unsigned32 } +applPastTransStreamDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamDescr attribute provides a + human-readable description of this transaction stream. + + If no descriptive information is available, this + attribute's value shall be a zero-length string." + DEFVAL { "" } + ::= { applPastTransStreamEntry 1 } + +applPastTransStreamUnitOfWork OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamUnitOfWork attribute provides a + human-readable definition of what the unit of work is + for this transaction stream. + + If no descriptive information is available, this + attribute's value shall be a zero-length string." + DEFVAL { "" } + ::= { applPastTransStreamEntry 2 } + +applPastTransStreamInvokes OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cumulative count of requests / invocations issued + for this transaction stream when it was active." + ::= { applPastTransStreamEntry 3 } + +applPastTransStreamInvokesLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object corresponds to the low thirty-two + bits of applPastTransStreamInvokes." + ::= { applPastTransStreamEntry 4 } + +applPastTransStreamInvCumTimes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamInvCumTimes attribute reports the + cumulative sum of the lengths of the intervals times + measured between the transmission of requests and the + receipt of (the first of) the corresponding response(s)." + ::= { applPastTransStreamEntry 5 } + +applPastTransStreamInvRspTimes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamInvRspTimes attribute reports the + cumulative sum of the lengths of the intervals measured + between the receipt of the first and last of multiple + responses to a request. + + For transaction streams which do not permit multiple + responses to a single request, this attribute will be + zero." + ::= { applPastTransStreamEntry 6 } + +applPastTransStreamPerforms OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of transactions performed." + ::= { applPastTransStreamEntry 7 } + +applPastTransStreamPerformsLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This objecy reports the low thirty-two bits of + applPastTransStreamPerforms." + ::= { applPastTransStreamEntry 8 } + +applPastTransStreamPrfCumTimes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransStreamPrfCumTimes attribute reports the + cumulative sum of the lengths of the intervals measured + between receipt of requests and the transmission of the + corresponding responses." + ::= { applPastTransStreamEntry 9 } + +applPastTransStreamPrfRspTimes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For each transaction performed, the elapsed time between + when the first response is enqueued and when the last + response is enqueued is added to this cumulative sum. + + For single-response protocols, the value of + applPastTransStreamPrfRspTimes will be zero." + ::= { applPastTransStreamEntry 10 } + + +-- **************************************************************** +-- +-- applPastTransFlowTable +-- +-- **************************************************************** + +applPastTransFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastTransFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransFlowTable contains entries, organized by + application instance or running application element, + direction of flow, and type (request/response) for each + former transaction stream. + + The simple model of a transaction used here looks like + this: + + invoker | Request | performer + | - - - - - - > | + | | + | Response | + | < - - - - - - | + | | + + Since in some protocols it is possible for an entity + to take on both the invoker and performer roles, + information here is accumulated for transmitted and + received requests, as well as for transmitted and + received responses. Counts are maintained for both + transactions and bytes transferred." + ::= { applPastChannelGroup 6 } + +applPastTransFlowEntry OBJECT-TYPE + SYNTAX ApplPastTransFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastTransFlowEntry records transaction throughput + information for requests or response in a particular + direction (transmit / receive) for a transaction stream. + + Entries in this table correspond to those in the + applPastTransStreamTable with identical values + for the applElmtOrSvc, applElmtOrSvcId, and the + applPastChannelIndex." + INDEX { applElmtOrSvc, + applElmtOrSvcId, + applPastChannelIndex, + applPastTransFlowDirection, + applPastTransFlowReqRsp } + ::= { applPastTransFlowTable 1 } + +ApplPastTransFlowEntry ::= SEQUENCE { + applPastTransFlowDirection INTEGER, + applPastTransFlowReqRsp INTEGER, + applPastTransFlowTrans Unsigned64TC, + applPastTransFlowTransLow Unsigned32, + applPastTransFlowBytes Unsigned64TC, + applPastTransFlowBytesLow Unsigned32, + applPastTransFlowTime DateAndTime } + +applPastTransFlowDirection OBJECT-TYPE + SYNTAX INTEGER { transmit(1), + receive(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransFlowDirection index serves + to identify an entry as containing information + pertaining to the transmit (1) or receive (2) flow + of a past transaction stream. This index corresponds + to applTransactFlowDirection." + ::= { applPastTransFlowEntry 1 } + +applPastTransFlowReqRsp OBJECT-TYPE + SYNTAX INTEGER { request(1), + response(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the applPastTransFlowReqRsp index indicates + whether this entry contains information on requests + (1), or responses (2). This index corresponds to + applTransactFlowReqRsp." + ::= { applPastTransFlowEntry 2 } + +applPastTransFlowTrans OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransFlowTrans attribute reports the number + of request/response (as indicated by the + applPastTransFlowReqRsp index) transactions + received/generated (as indicated by the + applPastTransFlowDirection index) handled on this + transaction stream." + ::= { applPastTransFlowEntry 3 } + +applPastTransFlowTransLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applPastTransFlowTrans." + ::= { applPastTransFlowEntry 4 } + +applPastTransFlowBytes OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransFlowBytes attribute reports the number + of request/response (as indicated by the + applPastTransFlowReqRsp index) bytes received/generated + (as indicated by the applPastTransFlowDirection index) + handled on this transaction stream. + + All application layer bytes are included in this count, + including any application layer wrappers, headers, or + other overhead." + ::= { applPastTransFlowEntry 5 } + +applPastTransFlowBytesLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute corresponds to the low thirty-two + bits of applPastTransFlowBytes." + ::= { applPastTransFlowEntry 6 } + +applPastTransFlowTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransFlowTime attribute records the time of + the processing (receipt or transmission as + indicated by the applPastTransFlowDirection index) + of the last request/response (as indicated by the + applPastTransFlowReqRsp index) on this transaction + stream. + + If no requests/responses been received/transmitted by + this entity over this transaction stream, the value + of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applPastTransFlowEntry 7 } + +-- **************************************************************** +-- +-- applPastTransKindTable - transaction statistics broken down +-- according to the kinds of transactions in each direction +-- for a transaction stream. +-- +-- **************************************************************** + +applPastTransKindTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplPastTransKindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransKindTable provides transaction + statistics broken down by kinds of transaction. + The definition of the kinds of transactions is + specific to the application protocol in use, and may be + documented in the form of an applicability statement. " + ::= { applPastChannelGroup 7 } + +applPastTransKindEntry OBJECT-TYPE + SYNTAX ApplPastTransKindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applPastTransKindEntry reports historical data for a + specific service instance or running application + element's use of a specific transaction stream in + a particular direction in requests or responses + (as indicated by the applPastTransFlowReqRsp index) + broken down by transaction kind, as indicated by the + applPastTransKind index." + INDEX { applElmtOrSvc, + applElmtOrSvcId, + applPastChannelIndex, + applPastTransFlowDirection, + applPastTransFlowReqRsp, + applPastTransKind } + ::= { applPastTransKindTable 1 } + +ApplPastTransKindEntry ::= SEQUENCE + { + applPastTransKind SnmpAdminString, + applPastTransKindTrans Unsigned64TC, + applPastTransKindTransLow Unsigned32, + applPastTransKindBytes Unsigned64TC, + applPastTransKindBytesLow Unsigned32, + applPastTransKindTime DateAndTime + } + +applPastTransKind OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1 .. 32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The applPastTransKind index is the human-readable + identifier for a particular transaction kind within + the context of an application protocol. The values + to be used for a particular protocol may be identified + in an applicability statement. This index corresponds + to applTransactKind." + ::= { applPastTransKindEntry 1 } + +applPastTransKindTrans OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For this transaction stream, this attribute records + the total number of transactions of the type + identified by the indexes. The type is characterized + according to the receive/transmit direction + (applPastTransFlowDirecton), whether it was a request + or a response (applPastTransFlowReqRsp), and the + protocol-specific transaction kind (applPastTransKind). + stream for this transaction kind." + ::= { applPastTransKindEntry 2 } + +applPastTransKindTransLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransKindTransLow attribute reports + the low thirty-two bits of applPastTransKindTrans." + ::= { applPastTransKindEntry 3 } + +applPastTransKindBytes OBJECT-TYPE + SYNTAX Unsigned64TC + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For this transaction stream and transaction kind, the + applPastTransKindBytes attribute reports the number + of bytes received or generated (as indicated by + the applPastTransFlowDirection index) in requests or + responses (as indicated by the applPastTransFlowReqRsp + index). + + All application layer bytes are included in this count, + including any application layer wrappers, headers, or + other overhead." + ::= { applPastTransKindEntry 4 } + +applPastTransKindBytesLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransKindBytesLow attribute corresponds + to the low thirty-two bits of applPastTransKindBytes." + ::= { applPastTransKindEntry 5 } + +applPastTransKindTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applPastTransKindTime attribute records the time of + the processing (receipt or transmission as + indicated by the applPastTransFlowDirection index) + of the last request/response (as indicated by the + applPastTransFlowReqRsp index) of this kind of + transaction on this transaction stream. + + If no requests/responses of this kind were + received/transmitted over this transaction stream, the + value of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applPastTransKindEntry 6 } + + +-- **************************************************************** +-- +-- applElmtRunControlGroup - monitor and control running +-- application elements +-- +-- **************************************************************** + +applElmtRunStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplElmtRunStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides information on running application + elements, complementing information available in the + correspondingly indexed sysApplElmtRunTable [31]." + ::= { applElmtRunControlGroup 1 } + +applElmtRunStatusEntry OBJECT-TYPE + SYNTAX ApplElmtRunStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applElmtRunStatusEntry contains information to support + the control and monitoring of a single running application + element." + INDEX { sysApplElmtRunIndex } + ::= { applElmtRunStatusTable 1 } + +ApplElmtRunStatusEntry ::= SEQUENCE { + applElmtRunStatusSuspended TruthValue, + applElmtRunStatusHeapUsage Unsigned32, + applElmtRunStatusOpenConnections Unsigned32, + applElmtRunStatusOpenFiles Gauge32, + applElmtRunStatusLastErrorMsg SnmpAdminString, + applElmtRunStatusLastErrorTime DateAndTime } + +applElmtRunStatusSuspended OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusSuspended attribute reports + whether processing by this running application element + has been suspended, whether by management request or by + other means." + ::= { applElmtRunStatusEntry 1 } + +applElmtRunStatusHeapUsage OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusHeapUsage reports the current + approximate heap usage by this running application + element." + ::= { applElmtRunStatusEntry 2 } + +applElmtRunStatusOpenConnections OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "connections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusOpenConnections attribute reports + the current number of open connections in use by this + running application element." + ::= { applElmtRunStatusEntry 3 } + +applElmtRunStatusOpenFiles OBJECT-TYPE + SYNTAX Gauge32 + UNITS "files" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusOpenFiles attribute reports the + current number of open files in use by this running + application element." + ::= { applElmtRunStatusEntry 4 } + +applElmtRunStatusLastErrorMsg OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusLastErrorMessage attribute reports + the most recent error message (typically written to + stderr or a system error logging facility) from this + running application element. If no such message has yet + been generated, the value of this attribute shall be a + zero-length string." + DEFVAL { "" } + ::= { applElmtRunStatusEntry 5 } + +applElmtRunStatusLastErrorTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The applElmtRunStatusLastErrorTime attribute reports the + time of the most recent error message in + applElmtRunStatusLastErrorMsg. + + If no such message has yet been generated, the value + of this attribute shall be '0000000000000000'H " + DEFVAL { '0000000000000000'H } + ::= { applElmtRunStatusEntry 6 } + + +-- **************************************************************** +-- +-- applElmtRunControlTable - control running application +-- elements +-- +-- **************************************************************** + +applElmtRunControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplElmtRunControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides the ability to control application + elements, complementing information available in the + correspondingly indexed sysApplElmtRunTable [31]." + ::= { applElmtRunControlGroup 2 } + +applElmtRunControlEntry OBJECT-TYPE + SYNTAX ApplElmtRunControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An applElmtRunControlEntry contains information to + support the control of a single running application + element." + INDEX { sysApplElmtRunIndex } + ::= { applElmtRunControlTable 1 } + +ApplElmtRunControlEntry ::= SEQUENCE { + applElmtRunControlSuspend TruthValue, + applElmtRunControlReconfigure TestAndIncr, + applElmtRunControlTerminate TruthValue } + +applElmtRunControlSuspend OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this variable to 'true' requests the suspension + of processing by this running application element. + Setting this variable to 'false' requests that processing + be resumed. The effect, if any, will be reported by the + applElmtRunStatusSuspended attribute." + DEFVAL { false } + ::= { applElmtRunControlEntry 1 } + +applElmtRunControlReconfigure OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Changing the value of this variable requests that the + running application element re-load its configuration + (like SIGHUP for many UNIX-based daemons). + + Note that completion of a SET on this object only implies + that configuration reload was initiated, not necessarily + that the reload has been completed." + ::= { applElmtRunControlEntry 2 } + +applElmtRunControlTerminate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting the value of applElmtRunControlTerminate to + 'true' requests that the running application element + terminate processing and exit in an orderly manner. + This is a 'polite' shutdown request. + + When read, this object's value will be 'false' except + when orderly termination is in progress. + + Note that completion of a SET on this object only implies + that termination was initiated, not necessarily that the + termination has been completed." + DEFVAL { false } + ::= { applElmtRunControlEntry 3 } + + +-- **************************************************************** +-- +-- Conformance requirements +-- +-- **************************************************************** + +applicationMibGroups OBJECT IDENTIFIER ::= + { applicationMibConformance 1} + +applicationMonitorGroup OBJECT-GROUP + OBJECTS { applSrvInstQual, + applSrvName, + applSrvIndex, + applSrvInstance, + applOpenChannelOpenTime, + applOpenChannelReadRequestsLow, + applOpenChannelReadFailures, + applOpenChannelBytesReadLow, + applOpenChannelLastReadTime, + applOpenChannelWriteRequestsLow, + applOpenChannelWriteFailures, + applOpenChannelBytesWrittenLow, + applOpenChannelLastWriteTime, + applOpenFileName, + applOpenFileSizeHigh, + applOpenFileSizeLow, + applOpenFileMode, + applOpenConnectionTransport, + applOpenConnectionNearEndAddr, + applOpenConnectionNearEndpoint, + applOpenConnectionFarEndAddr, + applOpenConnectionFarEndpoint, + applOpenConnectionApplication } + STATUS current + DESCRIPTION + "This group represents the basic capabilities of this MIB." + ::= { applicationMibGroups 1 } + +applicationFastMonitorGroup OBJECT-GROUP + OBJECTS { applOpenChannelReadRequests, + applOpenChannelBytesRead, + applOpenChannelWriteRequests, + applOpenChannelBytesWritten } + STATUS current + DESCRIPTION + "This group comprises 64-bit counters mandatory in + high-throughput environments, where 32-bit counters + could wrap in less than an hour." + ::= { applicationMibGroups 2 } + +applicationTransactGroup OBJECT-GROUP + OBJECTS { applTransactStreamDescr, + applTransactStreamUnitOfWork, + applTransactStreamInvokesLow, + applTransactStreamInvCumTimes, + applTransactStreamInvRspTimes, + applTransactStreamPerformsLow, + applTransactStreamPrfCumTimes, + applTransactStreamPrfRspTimes, + applTransactFlowTransLow, + applTransactFlowBytesLow, + applTransactFlowTime, + applTransactKindTransLow, + applTransactKindBytesLow, + applTransactKindTime } + STATUS current + DESCRIPTION + "This group comprises objects appropriate from monitoring + transaction-structured flows." + ::= { applicationMibGroups 3 } + +applicationFastTransactGroup OBJECT-GROUP + OBJECTS { applTransactStreamInvokes, + applTransactStreamPerforms, + applTransactFlowTrans, + applTransactFlowBytes, + applTransactKindTrans, + applTransactKindBytes } + STATUS current + DESCRIPTION + "This group comprises 64-bit transaction counters required in + high-throughput environments, where 32-bit counters could + wrap in less than an hour." + ::= { applicationMibGroups 4 } + +applicationHistoryGroup OBJECT-GROUP + OBJECTS { applPastChannelControlCollect, + applPastChannelControlMaxRows, + applPastChannelControlTimeLimit, + applPastChannelControlRemItems, + applPastChannelOpenTime, + applPastChannelCloseTime, + applPastChannelReadReqsLow, + applPastChannelReadFailures, + applPastChannelBytesReadLow, + applPastChannelLastReadTime, + applPastChannelWriteReqsLow, + applPastChannelWriteFailures, + applPastChannelBytesWritLow, + applPastChannelLastWriteTime, + applPastFileName, + applPastFileSizeHigh, + applPastFileSizeLow, + applPastFileMode, + applPastConTransport, + applPastConNearEndAddr, + applPastConNearEndpoint, + applPastConFarEndAddr, + applPastConFarEndpoint, + applPastConApplication} + STATUS current + DESCRIPTION + "This group models basic historical data." + ::= { applicationMibGroups 5 } + +applicationFastHistoryGroup OBJECT-GROUP + OBJECTS { applPastChannelReadRequests, + applPastChannelBytesRead, + applPastChannelWriteRequests, + applPastChannelBytesWritten} + STATUS current + DESCRIPTION + "This group comprises additional 64-bit objects required + for recording historical data in high-volume environments, + where a 32-bit integer would be insufficient." + ::= { applicationMibGroups 6 } + +applicationTransHistoryGroup OBJECT-GROUP + OBJECTS { applPastTransStreamDescr, + applPastTransStreamUnitOfWork, + applPastTransStreamInvokesLow, + applPastTransStreamInvCumTimes, + applPastTransStreamInvRspTimes, + applPastTransStreamPerformsLow, + applPastTransStreamPrfCumTimes, + applPastTransStreamPrfRspTimes, + applPastTransFlowTransLow, + applPastTransFlowBytesLow, + applPastTransFlowTime, + applPastTransKindTransLow, + applPastTransKindBytesLow, + applPastTransKindTime } + STATUS current + DESCRIPTION + "This group represents historical data for transaction- + structured information streams." + ::= { applicationMibGroups 7 } + +applicationFastTransHistoryGroup OBJECT-GROUP + OBJECTS { applPastTransFlowTrans, + applPastTransFlowBytes, + applPastTransKindTrans, + applPastTransKindBytes, + applPastTransStreamPerforms, + applPastTransStreamInvokes } + STATUS current + DESCRIPTION + "This group contains 64-bit objects required for historical + records on high-volume transaction-structured streams, + where 32-bit integers would be insufficient." + ::= { applicationMibGroups 8 } + +applicationRunGroup OBJECT-GROUP + OBJECTS { applElmtRunStatusSuspended, + applElmtRunStatusHeapUsage, + applElmtRunStatusOpenConnections, + applElmtRunStatusOpenFiles, + applElmtRunStatusLastErrorMsg, + applElmtRunStatusLastErrorTime, + applElmtRunControlSuspend, + applElmtRunControlReconfigure, + applElmtRunControlTerminate } + STATUS current + DESCRIPTION + "This group represents extensions to the system application + MIB." + ::= { applicationMibGroups 9 } + +applicationMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for the application MIB." + MODULE + MANDATORY-GROUPS { applicationMonitorGroup, + applicationHistoryGroup, + applicationRunGroup } + + OBJECT applPastChannelControlCollect + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + OBJECT applPastChannelControlMaxRows + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + OBJECT applPastChannelControlTimeLimit + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + OBJECT applElmtRunControlSuspend + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + OBJECT applElmtRunControlReconfigure + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + OBJECT applElmtRunControlTerminate + MIN-ACCESS read-only + DESCRIPTION + "This object should be limited to read-only + access in environments with inadequate + security." + + GROUP applicationTransactGroup + DESCRIPTION + "The applicationTransactGroup is required when the + information stream processed has a transaction + structure. " + + GROUP applicationTransHistoryGroup + DESCRIPTION + "The applicationTransHistoryGroup must be implemented + if applicationTransactGroup and applicationHistoryGroup + are implemented." + + GROUP applicationFastMonitorGroup + DESCRIPTION + "The applicationFastMonitorGroup is mandatory when + the applicationMonitorGroup is implemented and its + counts group may exceed what can be represented in 32 bits." + + GROUP applicationFastTransactGroup + DESCRIPTION + "The applicationFastTransactGroup is mandatory when + the applicationTransactGroup is implemented and its + counts may exceed what can be represented in 32 bits." + + GROUP applicationFastHistoryGroup + DESCRIPTION + "The applicationFastHistoryGroup is mandatory when + the applicationHistoryGroup is implemented and its + counts may exceed what can be represented in 32 bits." + GROUP applicationFastTransHistoryGroup + DESCRIPTION + "The applicationFastTransHistoryGroup is mandatory when + the applicationTransHistoryGroup is implemented and its + counts may exceed what can be represented in 32 bits." + ::= { applicationMibConformance 2 } + +END diff --git a/mibs/ietf/APPN-DLUR-MIB b/mibs/ietf/APPN-DLUR-MIB new file mode 100644 index 0000000..c19997f --- /dev/null +++ b/mibs/ietf/APPN-DLUR-MIB @@ -0,0 +1,666 @@ +APPN-DLUR-MIB DEFINITIONS ::= BEGIN + +IMPORTS + DisplayString, TruthValue + FROM SNMPv2-TC + + OBJECT-TYPE, MODULE-IDENTITY, Unsigned32 + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + snanauMIB + FROM SNA-NAU-MIB + + SnaControlPointName + FROM APPN-MIB; + +dlurMIB MODULE-IDENTITY + LAST-UPDATED "9705101500Z" + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN/HPR MIBs SIG" + CONTACT-INFO + + " + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 800 Park Offices Drive + RHJA/664 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@ralvm6.vnet.ibm.com + " + DESCRIPTION + "This is the MIB module for objects used to manage + network devices with DLUR capabilities. This MIB + contains information that is useful for managing an APPN + product that implements a DLUR (Dependent Logical Unit + Requester). The DLUR product has a client/server + relationship with an APPN product that implements a DLUS + (Dependent Logical Unit Server)." + +::= { snanauMIB 5 } +-- snanauMIB ::= { mib-2 34 } + +-- ********************************************************************* +-- Textual Convention +-- ********************************************************************* +-- SnaControlPointName is imported from the APPN MIB + +-- ********************************************************************* + dlurObjects OBJECT IDENTIFIER ::= { dlurMIB 1 } +-- ********************************************************************* + + +dlurNodeInfo OBJECT IDENTIFIER ::= { dlurObjects 1 } +-- ********************************************************************* +-- DLUR Capabilities of the node +-- +-- This group represents the capabilities and options of the DLUR +-- implementation. +-- ********************************************************************* +dlurNodeCapabilities OBJECT IDENTIFIER ::= { dlurNodeInfo 1 } + +dlurNodeCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for the APPN node where + this DLUR implementation resides. If this object has the same + value as the appnNodeCpName object in the APPN MIB, then the + two objects are referring to the same APPN node." + + ::= { dlurNodeCapabilities 1 } + +dlurReleaseLevel OBJECT-TYPE + SYNTAX DisplayString (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DLUR release level of this implementation. This is the + value that is encoded in the DLUR/DLUS Capabilites (CV 51). + To insure consistent display, this one-byte value is encoded + here as two displayable characters that are equivalent to a + hexadecimal display. For example, if the one-byte value as + encoded in CV51 is X'01', this object will contain the + displayable string '01'." + + ::= { dlurNodeCapabilities 2 } + +dlurAnsSupport OBJECT-TYPE + SYNTAX INTEGER { + continueOrStop(1), + stopOnly(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Automatic Network Shutdown (ANS) capability of this node. + + - 'continueOrStop' indicates that the DLUR implementation + supports either ANS value (continue or stop) as + specified by the DLUS on ACTPU for each PU. + + - 'stopOnly' indicates that the DLUR implementation only + supports the ANS value of stop. + + ANS = continue means that the DLUR node will keep LU-LU + sessions active even if SSCP-PU and SSCP-LU control sessions + are interrupted. + + ANS = stop means that LU-LU sessions will be interrupted when + the SSCP-PU and SSCP-LU sessions are interrupted." + + ::= { dlurNodeCapabilities 3 } + +dlurMultiSubnetSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether this DLUR implementation can support + CPSVRMGR sessions that cross NetId boundaries." + + ::= { dlurNodeCapabilities 4 } + +dlurDefaultDefPrimDlusName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the defined default primary DLUS for all of + the PUs served by this DLUR. This can be overridden for a + particular PU by a defined primary DLUS for that PU, + represented by the dlurPuDefPrimDlusName object." + + ::= { dlurNodeCapabilities 5 } + +dlurNetworkNameForwardingSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether this DLUR implementation supports + forwarding of Network Name control vectors on ACTPUs and + ACTLUs to DLUR-served PUs and their associated LUs. + + This object corresponds to byte 9. bit 3 of cv51." + + ::= { dlurNodeCapabilities 6 } + +dlurNondisDlusDlurSessDeactSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether this DLUR implementation supports + nondisruptive deactivation of its DLUR-DLUS sessions. + Upon receiving from a DLUS an UNBIND for the CPSVRMGR pipe + with sense data X'08A0 000B', a DLUR that supports this + option immediately begins attempting to activate a CPSVRMGR + pipe with a DLUS other than the one that sent the UNBIND. + + This object corresponds to byte 9. bit 4 of cv51." + + ::= { dlurNodeCapabilities 7 } + +-- ********************************************************************* +-- DLUR default defined backup DLUS table +-- ********************************************************************* + +dlurDefaultDefBackupDlusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlurDefaultDefBackupDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains an ordered list of defined backup DLUSs + for all of the PUs served by this DLUR. These can be + overridden for a particular PU by a list of defined backup + DLUSs for that PU, represented by the + dlurPuDefBackupDlusNameTable. Entries in this table are + ordered from most preferred default backup DLUS to least + preferred." + + ::= { dlurNodeInfo 2 } + +dlurDefaultDefBackupDlusEntry OBJECT-TYPE + SYNTAX DlurDefaultDefBackupDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by an integer-valued index, which + orders the entries from most preferred default backup DLUS + to least preferred." + + INDEX { dlurDefaultDefBackupDlusIndex } + + ::= { dlurDefaultDefBackupDlusTable 1 } + +DlurDefaultDefBackupDlusEntry ::= SEQUENCE { + dlurDefaultDefBackupDlusIndex Unsigned32, + dlurDefaultDefBackupDlusName SnaControlPointName + } + +dlurDefaultDefBackupDlusIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index for this table. The index values start at 1, + which identifies the most preferred default backup DLUS." + + ::= { dlurDefaultDefBackupDlusEntry 1 } + +dlurDefaultDefBackupDlusName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified name of a default backup DLUS for PUs served + by this DLUR." + + ::= { dlurDefaultDefBackupDlusEntry 2 } + +-- ********************************************************************* +-- PU Information +-- +-- The following table carries information about the PUs that this APPN +-- node is supporting via DLUR. + +-- ********************************************************************* +dlurPuInfo OBJECT IDENTIFIER ::= { dlurObjects 2 } + +dlurPuTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlurPuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the PUs supported by this DLUR." + + ::= { dlurPuInfo 1 } + +dlurPuEntry OBJECT-TYPE + SYNTAX DlurPuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in a table of PU information, indexed by PU name." + + INDEX { dlurPuName } + + ::= { dlurPuTable 1 } + +DlurPuEntry ::= SEQUENCE { + dlurPuName DisplayString, + dlurPuSscpSuppliedName DisplayString, + dlurPuStatus INTEGER, + dlurPuAnsSupport INTEGER, + dlurPuLocation INTEGER, + dlurPuLsName DisplayString, + dlurPuDlusSessnStatus INTEGER, + dlurPuActiveDlusName DisplayString, + dlurPuDefPrimDlusName DisplayString + } + +dlurPuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Locally administered name of the PU." + + ::= { dlurPuEntry 1 } + + +dlurPuSscpSuppliedName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the PU. This value is supplied to a PU by the + SSCP that activated it. If a value has not been supplied, a + zero-length string is returned." + + ::= { dlurPuEntry 2 } + +dlurPuStatus OBJECT-TYPE + SYNTAX INTEGER { + reset(1), + pendReqActpuRsp(2), + pendActpu(3), + pendActpuRsp(4), + active(5), + pendLinkact(6), + pendDactpuRsp(7), + pendInop(8), + pendInopActpu(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the DLUR-supported PU. The following values are + defined: + + reset(1) - reset + pendReqActpuRsp(2) - pending a response from the DLUS + to a Request ACTPU + pendActpu(3) - pending an ACTPU from the DLUS + pendActpuRsp(4) - pending an ACTPU response from the PU + active(5) - active + pendLinkact(6) - pending activation of the link to a + downstream PU + pendDactpuRsp(7) - pending a DACTPU response from the PU + pendInop(8) - the CPSVRMGR pipe became inoperative + while the DLUR was pending an ACTPU + response from the PU + pendInopActpu(9) - when the DLUR was in the pendInop + state, a CPSVRMGR pipe became active + and a new ACTPU was received over it, + before a response to the previous + ACTPU was received from the PU." + + ::= { dlurPuEntry 3 } + +dlurPuAnsSupport OBJECT-TYPE + SYNTAX INTEGER { + continue(1), + stop(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Automatic Network Shutdown (ANS) support configured for + this PU. This value (as configured by the network + administrator) is sent by DLUS with ACTPU for each PU. + + - 'continue' means that the DLUR node will attempt to keep + LU-LU sessions active even if SSCP-PU and SSCP-LU + control sessions are interrupted. + + - 'stop' means that LU-LU sessions will be interrupted + when the SSCP-PU and SSCP-LU sessions are interrupted." + + ::= { dlurPuEntry 4 } + +dlurPuLocation OBJECT-TYPE + SYNTAX INTEGER { + internal(1), + downstream(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Location of the DLUR-support PU: + internal(1) - internal to the APPN node itself (no link) + downstream(2) - downstream of the APPN node (connected via + a link)." + + ::= { dlurPuEntry 5 } + +dlurPuLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name of the link station through + which a downstream PU is connected to this DLUR. A zero-length + string is returned for internal PUs. If this object has the + same value as the appnLsName object in the APPN MIB, then the + two are identifying the same link station." + + ::= { dlurPuEntry 6 } + +dlurPuDlusSessnStatus OBJECT-TYPE + SYNTAX INTEGER { + reset(1), + pendingActive(2), + active(3), + pendingInactive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the control session to the DLUS identified in + dlurPuActiveDlusName. This is a combination of the separate + states for the contention-winner and contention-loser sessions: + + reset(1) - none of the cases below + pendingActive(2) - either contention-winner session or + contention-loser session is pending active + active(3) - contention-winner and contention-loser + sessions are both active + pendingInactive(4) - either contention-winner session or + contention-loser session is pending + inactive - this test is made AFTER the + 'pendingActive' test. + + The following matrix provides a different representation of + how the values of this object are related to the individual + states of the contention-winner and contention-loser sessions: + + Conwinner + | pA | pI | A | X = !(pA | pI | A) + C ++++++++++++++++++++++++++++++++++ + o pA | 2 | 2 | 2 | 2 + n ++++++++++++++++++++++++++++++++++ + l pI | 2 | 4 | 4 | 4 + o ++++++++++++++++++++++++++++++++++ + s A | 2 | 4 | 3 | 1 + e ++++++++++++++++++++++++++++++++++ + r X | 2 | 4 | 1 | 1 + ++++++++++++++++++++++++++++++++++ + " + + ::= { dlurPuEntry 7 } + +dlurPuActiveDlusName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the active DLUS for this PU. If its length + is not zero, this name follows the SnaControlPointName textual + convention. A zero-length string indicates that the PU does + not currently have an active DLUS." + + ::= { dlurPuEntry 8 } + +dlurPuDefPrimDlusName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNA name of the defined primary DLUS for this PU, if one + has been defined. If present, this name follows the + SnaControlPointName textual convention. A zero-length string + indicates that no primary DLUS has been defined for this PU, in + which case the global default represented by the + dlurDefaultDefPrimDlusName object is used." + + ::= { dlurPuEntry 9 } + +-- ***************************************** +-- Defined backup DLUS table for a PU +-- ***************************************** + +dlurPuDefBackupDlusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlurPuDefBackupDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains an ordered list of defined backup DLUSs + for those PUs served by this DLUR that have their own defined + backup DLUSs. PUs that have no entries in this table use the + global default backup DLUSs for the DLUR, represented by the + dlurDefaultDefBackupDlusNameTable. Entries in this table are + ordered from most preferred backup DLUS to least preferred for + each PU." + + ::= { dlurPuInfo 2 } + +dlurPuDefBackupDlusEntry OBJECT-TYPE + SYNTAX DlurPuDefBackupDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by PU name and by an integer-valued + index, which orders the entries from most preferred backup DLUS + for the PU to least preferred." + + INDEX { dlurPuDefBackupDlusPuName, + dlurPuDefBackupDlusIndex } + + ::= { dlurPuDefBackupDlusTable 1 } + +DlurPuDefBackupDlusEntry ::= SEQUENCE { + dlurPuDefBackupDlusPuName DisplayString, + dlurPuDefBackupDlusIndex Unsigned32, + dlurPuDefBackupDlusName SnaControlPointName + } + +dlurPuDefBackupDlusPuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Locally administered name of the PU. If this object has the + same value as the dlurPuName object, then the two are + identifying the same PU." + + ::= { dlurPuDefBackupDlusEntry 1 } + +dlurPuDefBackupDlusIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index for this table. The index values start at 1, + which identifies the most preferred backup DLUS for the PU." + + ::= { dlurPuDefBackupDlusEntry 2 } + +dlurPuDefBackupDlusName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified name of a backup DLUS for this PU." + + ::= { dlurPuDefBackupDlusEntry 3 } + +-- ********************************************************************* +-- DLUS Control Sessions (CPSVRMGR Pipes) +-- +-- This table contains information about DLUS control sessions, also +-- known as CPSVRMGR pipes. Although DLUR uses a pair of CPSVRMGR +-- sessions for communication, for the purpose of status, information +-- about these two sessions is combined to yield a single status for the +-- requester/server connection. + +-- ********************************************************************* + +dlurDlusInfo OBJECT IDENTIFIER ::= { dlurObjects 3 } + +dlurDlusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlurDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about DLUS control sessions." + + ::= { dlurDlusInfo 1} + +dlurDlusEntry OBJECT-TYPE + SYNTAX DlurDlusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry is indexed by the name of the DLUS." + + INDEX { dlurDlusName } + + ::= { dlurDlusTable 1 } + +DlurDlusEntry ::= SEQUENCE { + dlurDlusName SnaControlPointName, + dlurDlusSessnStatus INTEGER + } + +dlurDlusName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SNA name of a DLUS with which this DLUR currently has a + CPSVRMGR pipe established." + + ::= { dlurDlusEntry 1 } + +dlurDlusSessnStatus OBJECT-TYPE + SYNTAX INTEGER { + reset(1), + pendingActive(2), + active(3), + pendingInactive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the CPSVRMGR pipe between the DLUR and this DLUS. + This is a combination of the separate states for the + contention-winner and contention-loser sessions: + + reset(1) - none of the cases below + pendingActive(2) - either contention-winner session or + contention-loser session is pending active + active(3) - contention-winner and contention-loser + sessions are both active + pendingInactive(4) - either contention-winner session or + contention-loser session is pending + inactive - this test is made AFTER the + 'pendingActive' test. + + The following matrix provides a different representation of + how the values of this object are related to the individual + states of the contention-winner and contention-loser sessions: + + Conwinner + | pA | pI | A | X = !(pA | pI | A) + C ++++++++++++++++++++++++++++++++++ + o pA | 2 | 2 | 2 | 2 + n ++++++++++++++++++++++++++++++++++ + l pI | 2 | 4 | 4 | 4 + o ++++++++++++++++++++++++++++++++++ + s A | 2 | 4 | 3 | 1 + e ++++++++++++++++++++++++++++++++++ + r X | 2 | 4 | 1 | 1 + ++++++++++++++++++++++++++++++++++ + " + + ::= { dlurDlusEntry 2 } + +-- *************************************************************** +-- Conformance information +-- *************************************************************** + +dlurConformance OBJECT IDENTIFIER ::= { dlurMIB 2 } + +dlurCompliances OBJECT IDENTIFIER ::= { dlurConformance 1 } +dlurGroups OBJECT IDENTIFIER ::= { dlurConformance 2 } + +-- Compliance statements + +dlurCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities which + implement the DLUR MIB." + + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { dlurConfGroup } + + ::= { dlurCompliances 1 } + +-- Units of conformance +dlurConfGroup OBJECT-GROUP + OBJECTS { + dlurNodeCpName, + dlurReleaseLevel, + dlurAnsSupport, + dlurMultiSubnetSupport, + dlurNetworkNameForwardingSupport, + dlurNondisDlusDlurSessDeactSup, + dlurDefaultDefPrimDlusName, + dlurDefaultDefBackupDlusName, + dlurPuSscpSuppliedName, + dlurPuStatus, + dlurPuAnsSupport, + dlurPuLocation, + dlurPuLsName, + dlurPuDlusSessnStatus, + dlurPuActiveDlusName, + dlurPuDefPrimDlusName, + dlurPuDefBackupDlusName, + dlurDlusSessnStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information on an + implementation of APPN DLUR." + + ::= { dlurGroups 1 } + +-- end of conformance statement + +END diff --git a/mibs/ietf/APPN-MIB b/mibs/ietf/APPN-MIB new file mode 100644 index 0000000..595d769 --- /dev/null +++ b/mibs/ietf/APPN-MIB @@ -0,0 +1,5980 @@ +APPN-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + IANAifType + FROM IANAifType-MIB + + DisplayString, VariablePointer, RowPointer, DateAndTime, + TruthValue, TimeStamp, TEXTUAL-CONVENTION + FROM SNMPv2-TC + + Counter32, Gauge32, Unsigned32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + snanauMIB + FROM SNA-NAU-MIB; + +appnMIB MODULE-IDENTITY + LAST-UPDATED "9807151800Z" -- July 15, 1998 + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN MIBs SIG" + CONTACT-INFO + + " + + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 4205 S. Miami Boulevard + BRQA/501 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@us.ibm.com + + " + DESCRIPTION + "This is the MIB module for objects used to + manage network devices with APPN capabilities." + + -- Revision tracking starts with Proposed Standard (RFC 2155) + REVISION "9807151800Z" + DESCRIPTION + "Minor editorial fixes; new value 'none(5)' added + to the enumeration for the appnLocalTgBranchLinkType + object." + REVISION "9805261800Z" + DESCRIPTION + "Post-RFC 2155 conformance definitions added, + appnNodeLsCounterType and appnNodeBrNn objects + added, appnNodeMibVersion object deprecated." + + REVISION "9707311800Z" + DESCRIPTION + "Branch network node (Branch Extender) objects added." + REVISION "9703311800Z" + DESCRIPTION + "MLTG objects added." + REVISION "9703201200Z" + DESCRIPTION + "RFC 2155 (Proposed Standard)" + +::= { snanauMIB 4 } +-- snanauMIB ::= { mib-2 34 } + +-- ********************************************************************* +-- Textual Conventions +-- ********************************************************************* +SnaNodeIdentification ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An SNA Node Identification consists of two parts, which + together comprise four bytes of hexadecimal data. In SNA the + Node Identification is transported in bytes 2-5 of the XID. + + The block number is the first three digits of the Node + Identification. These 3 hexadecimal digits identify the + product. + + The ID number is the last 5 digits of the Node Identification. + These 5 hexadecimal digits are administratively defined and + combined with the 3-digit block number form the 8-digit Node + Identification. A unique value is required for connections to + SNA subarea. In some implementations, the value 'bbb00000' + (where 'bbb' represents a 3-digit block number) is returned to + mean that the ID number is not unique on this node. + + An SNA Node Identification is represented as eight + ASCII-encoded hexadecimal digits, using the characters '0' - + '9' and 'A' - 'F'." + + SYNTAX OCTET STRING (SIZE (8)) + +SnaControlPointName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A fully qualified SNA control point name, consisting of a 1 to + 8 character network identifier (NetId), a period ('.'), and a 1 + to 8 character control point name (CpName). + + The NetId and CpName are constructed from the uppercase letters + 'A' - 'Z' and the numerics '0' - '9', all encoded in ASCII, + with the restriction that the first character of each must be + a letter. Trailing blanks are not allowed. + + Earlier versions of SNA permitted three additional characters + in NetIds and CpNames: '#', '@', and '$'. While this use of + these characters has been retired, a Management Station should + still accept them for backward compatibility." + + SYNTAX OCTET STRING (SIZE (3..17)) + +SnaClassOfServiceName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An SNA class-of-service (COS) name, ranging from 1 to 8 + ASCII characters. COS names take one of two forms: + + - a user-defined COS name is constructed from the uppercase + letters 'A' - 'Z' and the numerics '0' - '9', with the + restriction that the first character of the name must be + a letter. + - an SNA-defined user-session COS name begins with the + character '#', which is followed by up to seven + additional characters from the set of uppercase letters + and numerics. + + Trailing blanks are not allowed in either form of COS name. + + A zero-length string indicates that a COS name is not + available." + + SYNTAX OCTET STRING (SIZE (0..8)) + +SnaModeName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An SNA mode name, ranging from 1 to 8 ASCII characters. + Mode names take one of two forms: + + - a user-defined mode name is constructed from the + uppercase letters 'A' - 'Z' and the numerics '0' - '9', + with the restriction that the first character of the name + must be a letter. + - an SNA-defined user-session mode name begins with the + character '#', which is followed by up to seven + additional characters from the set of uppercase letters + and numerics. + + Trailing blanks are not allowed in either form of mode name, + with the single exception of the all-blank mode name, where + a string consisting of 8 blanks is returned. + + A zero-length string indicates that a mode name is not + available." + + SYNTAX OCTET STRING (SIZE (0..8)) + +SnaSenseData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To facilitate their display by a Management Station, sense + data objects in the MIB are represented as OCTET STRINGS + containing eight ASCII characters. Eight '0' characters + indicates that no sense data identifying an SNA error + condition is available. + + An SNA sense data is represented as eight hexadecimal digits, + using the characters '0' - '9' and 'A' - 'F'." + + SYNTAX OCTET STRING (SIZE (8)) + +DisplayableDlcAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "DLC address of a port or link station, represented as an + OCTET STRING containing 0 to 64 ASCII characters. + A Management Station should use a value of this type only + for display. The 'real' DLC address, i.e., the sequence of + bytes that flow in the DLC header, is often available in a + DLC-specific MIB. + + The zero-length string indicates that the DLC address in + question is not known to the agent." + + SYNTAX OCTET STRING (SIZE (0..64)) + +AppnNodeCounter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object providing global statistics for the entire APPN + node. A Management Station can detect discontinuities in this + counter by monitoring the appnNodeCounterDisconTime object." + + SYNTAX Counter32 + +AppnPortCounter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object providing statistics for an APPN port. A + Management Station can detect discontinuities in this counter + by monitoring the appnPortCounterDisconTime object." + + SYNTAX Counter32 + +AppnLinkStationCounter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object providing statistics for an APPN link station. A + Management Station can detect discontinuities in this counter + by monitoring the appnLsCounterDisconTime object." + + SYNTAX Counter32 + +AppnTopologyEntryTimeLeft ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Number of days before deletion of this entry from the topology + database. Range is 0-15. A value of 0 indicates that the + entry is either in the process of being deleted, or is being + marked for deletion at the next garbage collection cycle." + + SYNTAX INTEGER (0..15) + +AppnTgDlcData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "DLC-specific data related to a connection network transmission + group. For other TGs, a zero-length string is returned. + + Examples of the type of data returned by an object with this + syntax include the following: + + Token-Ring - MAC/SAP + X.25 Switched - dial digits + X.21 Switched - dial digits + Circuit Switch - dial digits + This MIB does not specify formats for these or any other types + of DLC-specific data. Formats may, however, be specified in + documents related to a particular DLC. + + The contents of an object with this syntax correspond to the + contents of the DLC-specific subfields of cv46, documented in + (6)." + + SYNTAX OCTET STRING (SIZE (0..64)) + +AppnTgEffectiveCapacity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value representing the effective capacity of a transmission + group. This is an administratively assigned value derived from + the link bandwidth and maximum load factor. It is encoded in + the same way as byte 7 of cv47, and represents a floating-point + number in units of 300 bits per second." + + SYNTAX OCTET STRING (SIZE (1)) + +AppnTgSecurity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value representing the level of security on a transmission + group. A class of service definition includes an indication of + the acceptable TG security value(s) for that class of service. + + The following seven values are defined: + + nonsecure(1) - + (X'01'): none of the values listed below; + for example, satellite-connected or + located in a nonsecure country + publicSwitchedNetwork(32) - + (X'20'): public switched network; secure + in the sense that there is no + predetermined route that traffic will take + undergroundCable(64) - + (X'40'): underground cable; located in a + secure country (as determined by the + network administrator) + secureConduit(96) - + (X'60'): secure conduit, not guarded; for + example, pressurized pipe + guardedConduit(128) - + (X'80'): guarded conduit; protected + against physical tapping + encrypted(160) - + (X'A0'): link-level encryption is provided + guardedRadiation(192) - + (X'C0'): guarded conduit containing the + transmission medium; protected against + physical and radiation tapping" + + SYNTAX INTEGER { + nonsecure(1), -- X'01' + publicSwitchedNetwork(32), -- X'20' + undergroundCable(64), -- X'40' + secureConduit(96), -- X'60' + guardedConduit(128), -- X'80' + encrypted(160), -- X'A0' + guardedRadiation(192) -- X'C0' + } + +AppnTgDelay ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Relative amount of time that it takes for a signal to travel + the length of a logical link. This time is represented in + microseconds, using the same encoding scheme used in cv47 in a + topology update. Some of the more common values, along with + their encoded hex values, are: + + minimum(0), X'00' + negligible(384), X'4C' + terrestrial(9216), X'71' + packet(147456), X'91' + long(294912), X'99' + maximum(2013265920) X'FF' + + " + + SYNTAX OCTET STRING (SIZE (1)) + +-- ********************************************************************* + appnObjects OBJECT IDENTIFIER ::= { appnMIB 1 } +-- ********************************************************************* + +-- ******************** The APPN Node Group **************************** + +appnNode OBJECT IDENTIFIER ::= { appnObjects 1 } + appnGeneralInfoAndCaps OBJECT IDENTIFIER ::= { appnNode 1 } + appnNnUniqueInfoAndCaps OBJECT IDENTIFIER ::= { appnNode 2 } + appnEnUniqueCaps OBJECT IDENTIFIER ::= { appnNode 3 } + appnPortInformation OBJECT IDENTIFIER ::= { appnNode 4 } + appnLinkStationInformation OBJECT IDENTIFIER ::= { appnNode 5 } + appnVrnInfo OBJECT IDENTIFIER ::= { appnNode 6 } + +-- This group provides global information about an APPN network node, +-- an APPN end node, an APPN branch network node, or an LEN node. + +-- APPN General Information +-- This section applies to APPN network nodes, end nodes, and branch +-- network nodes, as well as to LEN end nodes. + +appnNodeCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for this node." + + ::= { appnGeneralInfoAndCaps 1 } + +-- appnNodeMibVersion OBJECT-TYPE (deprecated: moved to end of module) + +appnNodeId OBJECT-TYPE + SYNTAX SnaNodeIdentification + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This node's Node Identification, which it sends in bytes + 2-5 of XID." + + ::= { appnGeneralInfoAndCaps 3 } + +appnNodeType OBJECT-TYPE + SYNTAX INTEGER { + networkNode(1), + endNode(2), + t21len(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Type of APPN node: + + networkNode(1) - APPN network node + endNode(2) - APPN end node + t21len(4) - LEN end node + + Note: A branch network node SHALL return endNode(2) + as the value of this object. A management application + can distinguish between a branch network node and an + actual end node by retrieving the appnNodeBrNn object." + + ::= { appnGeneralInfoAndCaps 4 } + +appnNodeUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Amount of time (in hundredths of a second) since the APPN node + was last reinitialized." + + ::= { appnGeneralInfoAndCaps 5 } + +appnNodeParallelTg OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node supports parallel TGs." + + ::= { appnGeneralInfoAndCaps 6 } + +appnNodeAdaptiveBindPacing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node supports adaptive bind pacing for + dependent LUs." + + ::= { appnGeneralInfoAndCaps 7 } + +appnNodeHprSupport OBJECT-TYPE + SYNTAX INTEGER { + noHprSupport(1), + hprBaseOnly(2), + rtpTower(3), + controlFlowsOverRtpTower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates this node's level of support for high-performance + routing (HPR): + noHprSupport(1) - no HPR support + hprBaseOnly(2) - HPR base (option set 1400) + supported + rtpTower(3) - HPR base and RTP tower + (option set 1401) supported + controlFlowsOverRtpTower(4) - HPR base, RTP tower, and + control flows over RTP + (option set 1402) supported + + This object corresponds to cv4580, byte 9, bits 3-4." + + ::= { appnGeneralInfoAndCaps 8 } + +appnNodeMaxSessPerRtpConn OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a configuration parameter indicating + the maximum number of sessions that the APPN node is to put on + any HPR connection. The value is zero if not applicable." + + ::= { appnGeneralInfoAndCaps 9 } + +appnNodeHprIntRteSetups OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of HPR route setups received for routes + passing through this node since the node was last + reinitialized." + + ::= { appnGeneralInfoAndCaps 10 } + +appnNodeHprIntRteRejects OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of HPR route setups rejected by this node for + routes passing through it since the node was last + reinitialized." + + ::= { appnGeneralInfoAndCaps 11 } + +appnNodeHprOrgRteSetups OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of HPR route setups sent for routes + originating in this node since the node was last + reinitialized." + + ::= { appnGeneralInfoAndCaps 12 } + +appnNodeHprOrgRteRejects OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of HPR route setups rejected by other nodes for + routes originating in this node since the node was last + reinitialized." + + ::= { appnGeneralInfoAndCaps 13 } + +appnNodeHprEndRteSetups OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of HPR route setups received for routes + ending in this node since the node was last reinitialized." + + ::= { appnGeneralInfoAndCaps 14 } + +appnNodeHprEndRteRejects OBJECT-TYPE + SYNTAX AppnNodeCounter + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of HPR route setups rejected by this node for + routes ending in it since the node was last reinitialized." + + ::= { appnGeneralInfoAndCaps 15 } + +appnNodeCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time the APPN node + was reinitialized." + ::= { appnGeneralInfoAndCaps 16 } + +appnNodeLsCounterType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + noAnr(2), + anrForLocalNces(3), + allAnr(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which ANR traffic, if any, the node includes in the + counts returned by the APPN link station counters + appnLsInXidBytes, appnLsInMsgBytes, appnLsInXidFrames, + appnLsInMsgFrames, appnLsOutXidBytes, appnLsOutMsgBytes, + appnLsOutXidFrames, and appnLsOutMsgFrames. These counters + are always incremented for ISR traffic. + + The following values are defined: + + other(1) - the node does something different + from all the options listed below + noAnr(2) - the node does not include any ANR + traffic in these counts + anrForLocalNces(3) - the node includes in these counts + ANR traffic for RTP connections + that terminate in this node, but + not ANR traffic for RTP connections + that pass through this node without + terminating in it + allAnr(4) - the node includes all ANR traffic + in these counts." + + ::= { appnGeneralInfoAndCaps 17 } + +appnNodeBrNn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node is currently configured as a + branch network node. + + Note: throughout the remainder of this MIB module, branch + network node is treated as a third node type, parallel to + network node and end node. This is not how branch network + nodes are treated in the base APPN architecture, but it + increases clarity to do it here." + + ::= { appnGeneralInfoAndCaps 18 } + +-- ********************************************************************* +-- APPN Network Node Information +-- This section provides global information about an APPN network node. +-- ********************************************************************* + +appnNodeNnCentralDirectory OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node supports central directory + services. + + This object corresponds to cv4580, byte 8, bit 1." + + ::= { appnNnUniqueInfoAndCaps 1 } + +appnNodeNnTreeCache OBJECT-TYPE + SYNTAX INTEGER { + noCache(1), + cacheNoIncrUpdate(2), + cacheWithIncrUpdate(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates this node's level of support for caching of route + trees. Three levels are specified: + + noCache(1) - caching of route trees is not + supported + cacheNoIncrUpdate(2) - caching of route trees is + supported, but without incremental + updates + cacheWithIncrUpdate(3) - caching of route trees with + incremental updates is supported" + + ::= { appnNnUniqueInfoAndCaps 2 } + +appnNodeNnRouteAddResist OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Route addition resistance. + + This administratively assigned value indicates the relative + desirability of using this node for intermediate session + traffic. The value, which can be any integer 0-255, is used + in route computation. The lower the value, the more + desirable the node is for intermediate routing. + + This object corresponds to cv4580, byte 6." + + ::= { appnNnUniqueInfoAndCaps 3 } + +appnNodeNnIsr OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node supports intermediate session + routing. + + This object corresponds to cv4580, byte 8, bit 2." + + ::= { appnNnUniqueInfoAndCaps 4 } + +appnNodeNnFrsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last flow-reduction sequence number (FRSN) sent by this + node in a topology update to an adjacent network node." + + ::= { appnNnUniqueInfoAndCaps 5 } + +appnNodeNnPeriBorderSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has peripheral border node + support. + + This object corresponds to cv4580, byte 9, bit 0." + + ::= { appnNnUniqueInfoAndCaps 6 } + +appnNodeNnInterchangeSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has interchange node support. + + This object corresponds to cv4580, byte 9, bit 1." + + ::= { appnNnUniqueInfoAndCaps 7 } + +appnNodeNnExteBorderSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has extended border node support. + + This object corresponds to cv4580, byte 9, bit 2." + + ::= { appnNnUniqueInfoAndCaps 8 } + + +appnNodeNnSafeStoreFreq OBJECT-TYPE + SYNTAX INTEGER (0..32767) + UNITS "TDUs" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The topology safe store frequency. + + If this number is not zero, then the topology database is saved + each time the total number of topology database updates (TDUs) + received by this node increases by this number. A value of + zero indicates that the topology database is not being saved." + + ::= { appnNnUniqueInfoAndCaps 9 } + +appnNodeNnRsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Resource sequence number for this node, which it assigns and + controls. + + This object corresponds to the numeric value in cv4580, bytes + 2-5." + + ::= { appnNnUniqueInfoAndCaps 10 } + +appnNodeNnCongested OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node is congested. Other network nodes + stop routing traffic to this node while this flag is on. + + This object corresponds to cv4580, byte 7, bit 0." + ::= { appnNnUniqueInfoAndCaps 11 } + +appnNodeNnIsrDepleted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicate whether intermediated session routing resources are + depleted. Other network nodes stop routing traffic through + this node while this flag is on. + + This object corresponds to cv4580, byte 7, bit 1." + + ::= { appnNnUniqueInfoAndCaps 12 } + +appnNodeNnQuiescing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node is quiescing. + + This object corresponds to cv4580, byte 7, bit 5." + + ::= { appnNnUniqueInfoAndCaps 13 } + +appnNodeNnGateway OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node has gateway services support. + + This object corresponds to cv4580, byte 8, bit 0." + + ::= { appnNnUniqueInfoAndCaps 14 } + + +-- ********************************************************************* + +-- APPN End Node Information +-- This section provides global information about an APPN end node. Two +-- of the objects are also implemented by a branch network node. +-- ********************************************************************* + +appnNodeEnModeCosMap OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this end node supports mode name to COS name + mapping." + + ::= { appnEnUniqueCaps 1 } + +appnNodeEnNnServer OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The fully qualified name of the current NN server for this end + node. An NN server is identified using the format specified in + the SnaControlPointName textual convention. The value is a + zero-length string when there is no active NN server. + + A branch network node shall also implement this object." + + ::= { appnEnUniqueCaps 2 } + +appnNodeEnLuSearch OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node is to be searched for LUs as part + of a network broadcast search. + + A branch network node shall also implement this object." + + ::= { appnEnUniqueCaps 3 } + + +-- ********************************************************************* +-- APPN Port information +-- This section provides information about an APPN node's ports. +-- ********************************************************************* + +appnPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Port table describes the configuration and current status + of the ports used by APPN. When it is known to the APPN + component, an OBJECT IDENTIFIER pointing to additional + information related to the port is included. This may, but + need not, be a RowPointer to an ifTable entry for a DLC + interface immediately 'below' the port." + + ::= { appnPortInformation 1 } + +appnPortEntry OBJECT-TYPE + SYNTAX AppnPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The port name is used as the index to this table." + + INDEX + { appnPortName } + + ::= { appnPortTable 1 } + +AppnPortEntry ::= SEQUENCE { + appnPortName DisplayString, + appnPortCommand INTEGER, + appnPortOperState INTEGER, + appnPortDlcType IANAifType, + appnPortPortType INTEGER, + appnPortSIMRIM TruthValue, + appnPortLsRole INTEGER, + appnPortNegotLs TruthValue, + appnPortDynamicLinkSupport TruthValue, + appnPortMaxRcvBtuSize INTEGER, + appnPortMaxIframeWindow Gauge32, + appnPortDefLsGoodXids AppnPortCounter, + appnPortDefLsBadXids AppnPortCounter, + appnPortDynLsGoodXids AppnPortCounter, + appnPortDynLsBadXids AppnPortCounter, + appnPortSpecific RowPointer, + appnPortDlcLocalAddr DisplayableDlcAddress, + appnPortCounterDisconTime TimeStamp + } + +appnPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "Administratively assigned name for this APPN port." + + ::= { appnPortEntry 1 } + +appnPortCommand OBJECT-TYPE + SYNTAX INTEGER { + deactivate(1), + activate(2), + recycle(3), + ready(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Object by which a Management Station can activate, deactivate, + or recycle (i.e., cause to be deactivated and then immediately + activated) a port, by setting the value to activate(1), + deactivate(2), or recycle(3), respectively. The value ready(4) + is returned on GET operations until a SET has been processed; + after that the value received on the most recent SET is + returned." + + ::= { appnPortEntry 2 } + +appnPortOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + pendactive(2), + active(3), + pendinact(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state of this port: + + inactive(1) - port is inactive + pendactive(2) - port is pending active + active(3) - port is active + pendinact(4) - port is pending inactive" + + + ::= { appnPortEntry 3 } + +appnPortDlcType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of DLC interface, distinguished according to the + protocol immediately 'below' this layer." + + ::= { appnPortEntry 4 } + +appnPortPortType OBJECT-TYPE + SYNTAX INTEGER { + leased(1), + switched(2), + sharedAccessFacilities(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the type of line used by this port: + + leased(1) - leased line + switched(2) - switched line + sharedAccessFacilities(3) - shared access facility, such + as a LAN." + + ::= { appnPortEntry 5 } + +appnPortSIMRIM OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether Set Initialization Mode (SIM) and Receive + Initialization Mode (RIM) are supported for this port." + + ::= { appnPortEntry 6 } + +appnPortLsRole OBJECT-TYPE + SYNTAX INTEGER { + primary(1), + secondary(2), + negotiable(3), + abm(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Initial role for link stations activated through this port. + The values map to the following settings in the initial XID, + where 'ABM' indicates asynchronous balanced mode and 'NRM' + indicated normal response mode: + + primary(1): ABM support = 0 ( = NRM) + role = 01 ( = primary) + secondary(2): ABM support = 0 ( = NRM) + role = 00 ( = secondary) + negotiable(3): ABM support = 0 ( = NRM) + role = 11 ( = negotiable) + abm(4): ABM support = 1 ( = ABM) + role = 11 ( = negotiable)" + + ::= { appnPortEntry 7 } + +appnPortNegotLs OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node supports negotiable link stations + for this port." + + ::= { appnPortEntry 8 } + +appnPortDynamicLinkSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node allows call-in on this port from + nodes not defined locally." + + ::= { appnPortEntry 9 } + +appnPortMaxRcvBtuSize OBJECT-TYPE + SYNTAX INTEGER (99..32767) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Basic Transmission Unit (BTU) size that a link station + on this port can receive. + + This object corresponds to bytes 21-22 of XID3." + + ::= { appnPortEntry 10 } + +appnPortMaxIframeWindow OBJECT-TYPE + SYNTAX Gauge32 + UNITS "I-frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of I-frames that can be received by the XID + sender before an acknowledgement is received." + + ::= { appnPortEntry 11 } + +appnPortDefLsGoodXids OBJECT-TYPE + SYNTAX AppnPortCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of successful XID exchanges that have + occurred on all defined link stations on this port since the + last time this port was started." + + ::= { appnPortEntry 12 } + +appnPortDefLsBadXids OBJECT-TYPE + SYNTAX AppnPortCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of unsuccessful XID exchanges that have + occurred on all defined link stations on this port since the + last time this port was started." + + ::= { appnPortEntry 13 } + +appnPortDynLsGoodXids OBJECT-TYPE + SYNTAX AppnPortCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of successful XID exchanges that have + occurred on all dynamic link stations on this port since the + last time this port was started." + + ::= { appnPortEntry 14 } + +appnPortDynLsBadXids OBJECT-TYPE + SYNTAX AppnPortCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of unsuccessful XID exchanges that have + occurred on all dynamic link stations on this port since the + last time this port was started." + + ::= { appnPortEntry 15 } + +appnPortSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the object, e.g., one in a DLC-specific MIB, that + can provide additional information related to this port. + + If the agent is unable to identify such an object, the value + 0.0 is returned." + + ::= { appnPortEntry 16 } + +appnPortDlcLocalAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Local DLC address of this port." + + ::= { appnPortEntry 17 } + +appnPortCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time the port was + started." + + ::= { appnPortEntry 18 } + +-- ********************************************************************* +-- APPN Link Station Information +-- This section provides information about an APPN node's link stations. +-- ********************************************************************* + +appnLsTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains detailed information about the link + station configuration and its current status." + + ::= { appnLinkStationInformation 1 } + +appnLsEntry OBJECT-TYPE + SYNTAX AppnLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the link station name." + + INDEX + { appnLsName } + + ::= { appnLsTable 1 } + +AppnLsEntry ::= SEQUENCE { + appnLsName DisplayString, + appnLsCommand INTEGER, + appnLsOperState INTEGER, + + appnLsPortName DisplayString, + appnLsDlcType IANAifType, + appnLsDynamic TruthValue, + + appnLsAdjCpName OCTET STRING, + appnLsAdjNodeType INTEGER, + appnLsTgNum INTEGER, + appnLsLimResource TruthValue, + appnLsActOnDemand TruthValue, + appnLsMigration TruthValue, + appnLsPartnerNodeId SnaNodeIdentification, + appnLsCpCpSessionSupport TruthValue, + + appnLsMaxSendBtuSize INTEGER, +-- performance data + appnLsInXidBytes AppnLinkStationCounter, + appnLsInMsgBytes AppnLinkStationCounter, + appnLsInXidFrames AppnLinkStationCounter, + appnLsInMsgFrames AppnLinkStationCounter, + appnLsOutXidBytes AppnLinkStationCounter, + appnLsOutMsgBytes AppnLinkStationCounter, + appnLsOutXidFrames AppnLinkStationCounter, + appnLsOutMsgFrames AppnLinkStationCounter, +-- propagation delay + appnLsEchoRsps AppnLinkStationCounter, + appnLsCurrentDelay Gauge32, + appnLsMaxDelay Gauge32, + appnLsMinDelay Gauge32, + appnLsMaxDelayTime DateAndTime, +-- XID Statistics + appnLsGoodXids AppnLinkStationCounter, + appnLsBadXids AppnLinkStationCounter, +-- DLC-specific + appnLsSpecific RowPointer, + appnLsActiveTime Unsigned32, + appnLsCurrentStateTime TimeTicks, +-- HPR-specific + appnLsHprSup INTEGER, + appnLsErrRecoSup TruthValue, + appnLsForAnrLabel OCTET STRING, + appnLsRevAnrLabel OCTET STRING, + appnLsCpCpNceId OCTET STRING, + appnLsRouteNceId OCTET STRING, + appnLsBfNceId OCTET STRING, + + appnLsLocalAddr DisplayableDlcAddress, + appnLsRemoteAddr DisplayableDlcAddress, + appnLsRemoteLsName DisplayString, + appnLsCounterDisconTime TimeStamp, + appnLsMltgMember TruthValue + } + +appnLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for the link station. + The name can be from one to ten characters." + + ::= { appnLsEntry 1 } + +appnLsCommand OBJECT-TYPE + SYNTAX INTEGER { + deactivate(1), + activate(2), + recycle(3), + ready(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Object by which a Management Station can activate, deactivate, + or recycle (i.e., cause to be deactivated and then immediately + reactivated) a link station, by setting the value to + activate(1), deactivate(2), or recycle(3), respectively. The + value ready(4) is returned on GET operations until a SET has + been processed; after that the value received on the most + recent SET is returned." + + ::= { appnLsEntry 2 } + +appnLsOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + sentConnectOut(2), -- pending active + pendXidExch(3), -- pending active + sendActAs(4), -- pending active + sendSetMode(5), -- pending active + otherPendingActive(6),-- pending active + active(7), + sentDeactAsOrd(8), -- pending inactive + sentDiscOrd(9), -- pending inactive + sentDiscImmed(10), -- pending inactive + otherPendingInact(11) -- pending inactive + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of this link station. The comments map these more + granular states to the 'traditional' four states for SNA + resources. Values (2) through (5) represent the normal + progression of states when a link station is being activated. + Value (6) represents some other state of a link station in + the process of being activated. Values (8) through (10) + represent different ways a link station can be deactivated. + Value (11) represents some other state of a link station in + the process of being deactivated." + + ::= { appnLsEntry 3 } + +appnLsPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name for the port associated with + this link station. The name can be from one to ten + characters." + + ::= { appnLsEntry 4 } + +appnLsDlcType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of DLC interface, distinguished according to the + protocol immediately 'below' this layer." + + ::= { appnLsEntry 5 } + +appnLsDynamic OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies whether this is a dynamic link station. Dynamic + link stations are created when links that have not been locally + defined are established by adjacent nodes." + + ::= { appnLsEntry 6 } + +appnLsAdjCpName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified name of the adjacent node for this link + station. An adjacent node is identified using the format + specified in the SnaControlPointName textual convention. + + The value of this object is determined as follows: + + 1. If the adjacent node's name was received on XID, it + is returned. + + 2. If the adjacent node's name was not received on XID, + but a locally-defined value is available, it is + returned. + + 3. Otherwise a string of length 0 is returned, indicating + that no name is known for the adjacent node." + + ::= { appnLsEntry 7 } + +appnLsAdjNodeType OBJECT-TYPE + SYNTAX INTEGER { + networkNode(1), + endNode(2), + t21len(4), + unknown(255) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Node type of the adjacent node on this link: + + networkNode(1) - APPN network node + endNode(2) - APPN end node + t21len(4) - LEN end node + unknown(255) - the agent does not know the node type + of the adjacent node + " + + ::= { appnLsEntry 8 } + +appnLsTgNum OBJECT-TYPE + SYNTAX INTEGER (0..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number associated with the TG to this link station, with a + range from 0 to 256. A value of 256 indicates that the TG + number has not been negotiated and is unknown at this time." + + ::= { appnLsEntry 9 } + +appnLsLimResource OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the link station is a limited resource. A + link station that is a limited resource is deactivated when it + is no longer in use." + + ::= { appnLsEntry 10 } + +appnLsActOnDemand OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the link station is activatable on demand. + + Such a link station is reported in the topology as active + regardless of its actual state, so that it can be considered in + route calculations. If the link station is inactive and is + chosen for a route, it will be activated at that time." + + ::= { appnLsEntry 11 } + +appnLsMigration OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this link station will be used for + connections to down-level or migration partners. + + In general, migration nodes do not append their CP names on + XID3. Such nodes: (1) will not support parallel TGs, (2) + should be sent an ACTIVATE PHYSICAL UNIT (ACTPU), provided that + the partner supports ACTPUs, and (3) should not be sent + segmented BINDs. However, if this node receives an XID3 with + an appended CP name, then the partner node will not be treated + as a migration node. + + In the case of DYNAMIC TGs this object should be set to 'no'." + + ::= { appnLsEntry 12 } + +appnLsPartnerNodeId OBJECT-TYPE + SYNTAX SnaNodeIdentification + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The partner's Node Identification, from bytes 2-5 of the XID + received from the partner. If this value is not available, + then the characters '00000000' are returned." + + ::= { appnLsEntry 13 } + +appnLsCpCpSessionSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether CP-CP sessions are supported by this + link station. For a dynamic link, this object represents + the default ('Admin') value." + ::= { appnLsEntry 14 } + +appnLsMaxSendBtuSize OBJECT-TYPE + SYNTAX INTEGER (99..32767) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Numeric value between 99 and 32767 inclusive indicating the + maximum number of bytes in a Basic Transmission Unit (BTU) sent + on this link. + + When the link state (returned by the appnLsOperState object) is + inactive or pending active, the value configured at this node + is returned. When the link state is active, the value that was + negotiated for it is returned. This negotiated value is the + smaller of the value configured at this node and the partner's + maximum receive BTU length, received in XID." + + ::= { appnLsEntry 15 } + +appnLsInXidBytes OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of XID bytes received. All of the bytes in the SNA + basic transmission unit (BTU), i.e., all of the bytes in the + DLC XID Information Field, are counted." + + ::= { appnLsEntry 16 } + +appnLsInMsgBytes OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of message (I-frame) bytes received. All of the bytes + in the SNA basic transmission unit (BTU), including the + transmission header (TH), are counted." + + ::= { appnLsEntry 17 } + +appnLsInXidFrames OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "XID frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of XID frames received." + + ::= { appnLsEntry 18 } + +appnLsInMsgFrames OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "I-frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of message (I-frame) frames received." + + ::= { appnLsEntry 19 } + +appnLsOutXidBytes OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of XID bytes sent. All of the bytes in the SNA basic + transmission unit (BTU), i.e., all of the bytes in the DLC XID + Information Field, are counted." + + ::= { appnLsEntry 20 } + +appnLsOutMsgBytes OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of message (I-frame) bytes sent. All of the bytes + in the SNA basic transmission unit (BTU), including the + transmission header (TH), are counted." + + ::= { appnLsEntry 21 } + +appnLsOutXidFrames OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "XID frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of XID frames sent." + ::= { appnLsEntry 22 } + +appnLsOutMsgFrames OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "I-frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of message (I-frame) frames sent." + + ::= { appnLsEntry 23 } + +appnLsEchoRsps OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "echo responses" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of echo responses returned from adjacent link station. + A response should be returned for each test frame sent by this + node. Test frames are sent to adjacent nodes periodically to + verify connectivity and to measure the actual round trip time, + that is, the time interval from when the test frame is sent + until when the response is received." + + + ::= { appnLsEntry 24 } + +appnLsCurrentDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time that it took for the last test signal to be sent and + returned from this link station to the adjacent link station. + This time is represented in milliseconds." + + ::= { appnLsEntry 25 } + +appnLsMaxDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The longest time it took for a test signal to be sent and + returned from this link station to the adjacent link station. + This time is represented in milliseconds . + + The value 0 is returned if no test signal has been sent and + returned." + + ::= { appnLsEntry 26 } + +appnLsMinDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The shortest time it took for a test signal to be sent and + returned from this link station to the adjacent link station. + This time is represented in milliseconds. + + The value 0 is returned if no test signal has been sent and + returned." + + ::= { appnLsEntry 27 } + +appnLsMaxDelayTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the longest delay occurred. This time can be + used to identify when this high water mark occurred in relation + to other events in the APPN node, for example, the time at + which an APPC session was either terminated or failed to be + established. This latter time is available in the + appcHistSessTime object in the APPC MIB. + + The value 00000000 is returned if no test signal has been sent + and returned." + + ::= { appnLsEntry 28 } + +appnLsGoodXids OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of successful XID exchanges that have + occurred on this link station since the time it was started." + ::= { appnLsEntry 29 } + +appnLsBadXids OBJECT-TYPE + SYNTAX AppnLinkStationCounter + UNITS "XID exchanges" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of unsuccessful XID exchanges that have + occurred on this link station since the time it was started." + + ::= { appnLsEntry 30 } + +appnLsSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the object, e.g., one in a DLC-specific MIB, that + can provide additional information related to this link + station. + + If the agent is unable to identify such an object, the value + 0.0 is returned." + + ::= { appnLsEntry 31 } + +appnLsActiveTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative amount of time since the node was last + reinitialized, measured in hundredths of a second, that this + link station has been in the active state. A zero value + indicates that the link station has never been active since + the node was last reinitialized." + + ::= { appnLsEntry 32 } + +appnLsCurrentStateTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time, measured in hundredths of a second, that + the link station has been in its current state." + + ::= { appnLsEntry 33 } + +appnLsHprSup OBJECT-TYPE + SYNTAX INTEGER { + noHprSupport(1), + hprBaseOnly(2), + rtpTower(3), + controlFlowsOverRtpTower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the level of high performance routing (HPR) support + over this link: + + noHprSupport(1) - no HPR support + hprBaseOnly(2) - HPR base (option set 1400) + supported + rtpTower(3) - HPR base and RTP tower + (option set 1401) supported + controlFlowsOverRtpTower(4) - HPR base, RTP tower, and + control flows over RTP + (option set 1402) supported + + If the link is not active, the defined value is returned." + + ::= { appnLsEntry 34 } + +appnLsErrRecoSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the link station is supporting + HPR link-level error recovery." + + ::= { appnLsEntry 35 } + +appnLsForAnrLabel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The forward Automatic Network Routing (ANR) label for this + link station. If the link does not support HPR or the value is + unknown, a zero-length string is returned." + ::= { appnLsEntry 36 } + +appnLsRevAnrLabel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The reverse Automatic Network Routing (ANR) label for this + link station. If the link does not support HPR or the value is + unknown, a zero-length string is returned." + + ::= { appnLsEntry 37 } + +appnLsCpCpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network connection endpoint identifier (NCE ID) for CP-CP + sessions if this node supports the HPR transport tower, a + zero-length string if the value is unknown or not meaningful + for this node." + + ::= { appnLsEntry 38 } + +appnLsRouteNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network connection endpoint identifier (NCE ID) for Route + Setup if this node supports the HPR transport tower, a zero- + length string if the value is unknown or not meaningful for + this node." + + ::= { appnLsEntry 39 } + +appnLsBfNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network connection endpoint identifier (NCE ID) for the + APPN/HPR boundary function if this node supports the HPR + transport tower, a zero-length string if the value is unknown + or not meaningful for this node." + + ::= { appnLsEntry 40 } + +appnLsLocalAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Local address of this link station." + + ::= { appnLsEntry 41 } + + +appnLsRemoteAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the remote link station on this link." + + ::= { appnLsEntry 42 } + +appnLsRemoteLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remote link station discovered from the XID exchange. + The name can be from one to ten characters. A zero-length + string indicates that the value is not known." + + ::= { appnLsEntry 43 } + +appnLsCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time the link + station was started." + + ::= { appnLsEntry 44 } + +appnLsMltgMember OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the link is a member of a multi-link TG. If + the link's TG has been brought up as a multi-link TG, then the + link is reported as a member of a multi-link TG, even if it is + currently the only active link in the TG." + + ::= { appnLsEntry 45 } + + + +--******************************************************************** +-- This table provides information about errors this node encountered +-- with connections to adjacent nodes. Entries are added for exceptional +-- conditions encountered establishing connections, and for exceptional +-- conditions that resulted in termination of a connection. It is an +-- implementation option when entries are removed from this table. +--******************************************************************** + +appnLsStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnLsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information related to exceptional and + potentially exceptional conditions that occurred during the + activation, XID exchange, and termination of a connection. No + entries are created when these activities proceed normally. + + It is an implementation option when entries are removed from + this table." + + ::= { appnLinkStationInformation 2 } + +appnLsStatusEntry OBJECT-TYPE + SYNTAX AppnLsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the LsStatusIndex, which is an + integer that is continuously updated until it eventually + wraps." + + INDEX + { appnLsStatusIndex } + + ::= { appnLsStatusTable 1 } + +AppnLsStatusEntry ::= SEQUENCE { + appnLsStatusIndex INTEGER, + appnLsStatusTime DateAndTime, + appnLsStatusLsName DisplayString, + appnLsStatusCpName DisplayString, + appnLsStatusPartnerId SnaNodeIdentification, + appnLsStatusTgNum INTEGER, + appnLsStatusGeneralSense SnaSenseData, + appnLsStatusRetry TruthValue, + appnLsStatusEndSense SnaSenseData, + appnLsStatusXidLocalSense SnaSenseData, + appnLsStatusXidRemoteSense SnaSenseData, + appnLsStatusXidByteInError INTEGER, + appnLsStatusXidBitInError INTEGER, + appnLsStatusDlcType IANAifType, + appnLsStatusLocalAddr DisplayableDlcAddress, + appnLsStatusRemoteAddr DisplayableDlcAddress + } + + +appnLsStatusIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table index. The value of the index begins at zero + and is incremented up to a maximum value of 2**31-1 + (2,147,483,647) before wrapping." + + ::= { appnLsStatusEntry 1 } + +appnLsStatusTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time when the exception condition occurred. This time can be + used to identify when this event occurred in relation to other + events in the APPN node, for example, the time at which an APPC + session was either terminated or failed to be established. + This latter time is available in the appcHistSessTime object in + the APPC MIB." + + ::= { appnLsStatusEntry 2 } + +appnLsStatusLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name for the link station + experiencing the condition." + ::= { appnLsStatusEntry 3 } + +appnLsStatusCpName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified name of the adjacent node for this link + station. An adjacent node is identified using the format + specified in the SnaControlPointName textual convention. + + The value of this object is determined as follows: + + 1. If the adjacent node's name was received on XID, it + is returned. + + 2. If the adjacent node's name was not received on XID, + but a locally-defined value is available, it is + returned. + + 3. Otherwise a string of length 0 is returned, indicating + that no name is known for the adjacent node." + + ::= { appnLsStatusEntry 4 } + +appnLsStatusPartnerId OBJECT-TYPE + SYNTAX SnaNodeIdentification + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The partner's Node Identification, from bytes 2-5 of the XID + received from the partner. If this value is not available, + then the characters '00000000' are returned." + + ::= { appnLsStatusEntry 5 } + +appnLsStatusTgNum OBJECT-TYPE + SYNTAX INTEGER (0..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number associated with the TG to this link station, with a + range from 0 to 256. A value of 256 indicates that the TG + number was unknown at the time of the failure." + + ::= { appnLsStatusEntry 6 } + +appnLsStatusGeneralSense OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The error sense data associated with the start sequence of + activation of a link up to the beginning of the XID sequence. + + This is the sense data that came from Configuration Services + whenever the link did not activate or when it went inactive." + + ::= { appnLsStatusEntry 7 } + +appnLsStatusRetry OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node will retry the start request to + activate the link." + + ::= { appnLsStatusEntry 8 } + +appnLsStatusEndSense OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data associated with the termination of the link + connection to adjacent node. + + This is the sense data that came from the DLC layer." + + ::= { appnLsStatusEntry 9 } + +appnLsStatusXidLocalSense OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data associated with the rejection of the XID. + + This is the sense data that came from the local node (this + node) when it built the XID Negotiation Error control vector + (cv22) to send to the remote node." + + ::= { appnLsStatusEntry 10 } + +appnLsStatusXidRemoteSense OBJECT-TYPE + SYNTAX SnaSenseData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sense data the adjacent node returned to this node + indicating the reason the XID was rejected. + + This is the sense data that came from the remote node in the + XID Negotiation Error control vector (cv22) it sent to the + local node (this node)." + + ::= { appnLsStatusEntry 11 } + +appnLsStatusXidByteInError OBJECT-TYPE + SYNTAX INTEGER (0..65536) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the actual byte in the XID that caused + the error. The value 65536 indicates that the object has no + meaning. + + For values in the range 0-65535, this object corresponds to + bytes 2-3 of the XID Negotiation (X'22') control vector." + + ::= { appnLsStatusEntry 12 } + +appnLsStatusXidBitInError OBJECT-TYPE + SYNTAX INTEGER (0..8) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the actual bit in error (0 through 7) + within the errored byte of the XID. The value 8 indicates that + this object has no meaning. + + For values in the range 0-7, this object corresponds to byte 4 + of the XID Negotiation (X'22') control vector." + + ::= { appnLsStatusEntry 13 } + +appnLsStatusDlcType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of DLC interface, distinguished according to the + protocol immediately 'below' this layer." + ::= { appnLsStatusEntry 14 } + +appnLsStatusLocalAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Local address of this link station." + + ::= { appnLsStatusEntry 15 } + +appnLsStatusRemoteAddr OBJECT-TYPE + SYNTAX DisplayableDlcAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the remote link station on this link." + + ::= { appnLsStatusEntry 16 } + +-- ********************************************************************* +-- APPN Virtual Routing Node Information +-- This section provides information relating a virtual routing node to +-- an APPN port. +-- ********************************************************************* + + +appnVrnTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnVrnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table relates a virtual routing node to an APPN port." + + ::= { appnVrnInfo 1 } + +appnVrnEntry OBJECT-TYPE + SYNTAX AppnVrnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the virtual routing node name, TG + number, and port name. There will be a matching entry in the + appnLocalTgTable to represent status and characteristics of the + TG representing each virtual routing node definition." + + INDEX + { appnVrnName, appnVrnTgNum, appnVrnPortName } + ::= { appnVrnTable 1 } + +AppnVrnEntry ::= SEQUENCE { + appnVrnName SnaControlPointName, + appnVrnTgNum INTEGER, + appnVrnPortName DisplayString +} + +appnVrnName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name of the virtual routing node. + This is a fully qualified name, and matches the appnLocalTgDest + name in the appnLocalTgTable." + + ::= { appnVrnEntry 1 } + +appnVrnTgNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Number associated with the transmission group representing + this virtual routing node definition." + + ::= { appnVrnEntry 2 } + +appnVrnPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the port this virtual routing node definition is + defined to." + + ::= { appnVrnEntry 3 } + +-- ************** The APPN Topology Group ****************************** + +appnNn OBJECT IDENTIFIER ::= { appnObjects 2 } +appnNnTopo OBJECT IDENTIFIER ::= { appnNn 1 } +appnNnTopology OBJECT IDENTIFIER ::= { appnNn 2 } + +-- This group is used to represent the entire APPN network-node topology +-- including network nodes, virtual routing nodes and all TGs associated +-- with these nodes, including intersubnetwork TGs (ISTGs) and branch TGs. + +-- +-- Network nodes +-- The APPN topology database consists of information about every APPN +-- network node in this network node's topology subnetwork. This +-- information is learned over time as each network node exchanges +-- topology information with the network nodes adjacent to it. The +-- database consists of information about each node, and information +-- about all of the transmission groups used by these nodes. +-- +-- Virtual routing nodes +-- Information about virtual routing nodes (representing connection +-- networks) is treated in the same way as information about network +-- nodes, and is replicated at each network node. The FRSN, node name, +-- and node type are the only meaningful fields for a virtual routing +-- node. The other node objects return unspecified values. Each +-- node that has defined a TG with this virtual routing node as the +-- destination also defines a TG on this virtual routing node. There +-- is a TG record for each node that uses this virtual routing node. +-- +-- The APPN node table represents node information from the APPN topology +-- database, with the FRSN and APPN fully qualified CP name serving as +-- the index. The FRSN is the agent's relative time stamp of an update +-- to the network topology database. After collecting the entire database +-- once, a management application can issue GET NEXT commands starting +-- from the last rows it has retrieved from the appnNnTopologyFRTable and +-- from the appnNnTgTopologyFRTable. When the response to either of these +-- GET NEXT commands returns another row of its respective table, this +-- indicates a change to the agent's topology database. The management +-- application can then retrieve only the updates to the table, using +-- GET NEXT commands starting from the last retrieved node or TG entry. +-- +-- The format of the actual APPN topology database is as follows: +-- +-- Node table (entry for each node in network) +-- TG table (entry for each TG owned by node) +-- +-- Due to SNMP's ASN.1 limitations, we cannot represent the TG table +-- within the node table in this way. We define separate tables for +-- nodes and TGs, adding the node name to each TG entry to provide a +-- means of correlating the TG with its originating node. + +appnNnTopoMaxNodes OBJECT-TYPE + SYNTAX Gauge32 + UNITS "node entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of node entries allowed in the APPN topology + database. It is an implementation choice whether to count only + network-node entries, or to count all node entries. If the + number of node entries exceeds this value, APPN will issue an + Alert and the node can no longer participate as a network node. + The value 0 indicates that the local node has no defined limit, + and the number of node entries is bounded only by memory." + + ::= { appnNnTopo 1 } + +appnNnTopoCurNumNodes OBJECT-TYPE + SYNTAX Gauge32 + UNITS "node entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of node entries in this node's topology + database. It is an implementation choice whether to count only + network-node entries, or to count all node entries, but an + implementation must make the same choice here that it makes for + the appnNnTopoMaxNodes object. If this value exceeds the + maximum number of nodes allowed (appnNnTopoMaxNodes, if that + field in not 0), APPN Alert CPDB002 is issued." + + ::= { appnNnTopo 2 } + +appnNnTopoNodePurges OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "node entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of topology node records purged from this node's + topology database since the node was last reinitialized." + + ::= { appnNnTopo 3 } + +appnNnTopoTgPurges OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "TG entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of topology TG records purged from this node's + topology database since the node was last reinitialized." + + ::= { appnNnTopo 4 } + +appnNnTopoTotalTduWars OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "TDU wars" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of TDU wars detected by this node since its last + initialization." + + ::= { appnNnTopo 5 } + + + +-- APPN network node topology table (using FRSN and name as index) + +-- This table describes every APPN network node and virtual routing node +-- represented in this node's topology database. + +appnNnTopologyFRTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnNnTopologyFREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Portion of the APPN topology database that describes all of + the APPN network nodes and virtual routing nodes known to this + node." + + ::= { appnNnTopology 3 } + +appnNnTopologyFREntry OBJECT-TYPE + SYNTAX AppnNnTopologyFREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FRSN and the fully qualified node name are used to index + this table." + + INDEX + {appnNnNodeFRFrsn, + appnNnNodeFRName} + + ::= { appnNnTopologyFRTable 1 } + +AppnNnTopologyFREntry ::= SEQUENCE { + appnNnNodeFRFrsn Unsigned32, + appnNnNodeFRName SnaControlPointName, + appnNnNodeFREntryTimeLeft AppnTopologyEntryTimeLeft, + appnNnNodeFRType INTEGER, + appnNnNodeFRRsn Unsigned32, + appnNnNodeFRRouteAddResist INTEGER, + appnNnNodeFRCongested TruthValue, + appnNnNodeFRIsrDepleted TruthValue, + appnNnNodeFRQuiescing TruthValue, + appnNnNodeFRGateway TruthValue, + appnNnNodeFRCentralDirectory TruthValue, + appnNnNodeFRIsr TruthValue, + appnNnNodeFRGarbageCollect TruthValue, + + appnNnNodeFRHprSupport INTEGER, + appnNnNodeFRPeriBorderSup TruthValue, + appnNnNodeFRInterchangeSup TruthValue, + appnNnNodeFRExteBorderSup TruthValue, + appnNnNodeFRBranchAwareness TruthValue +} + +appnNnNodeFRFrsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Flow reduction sequence numbers (FRSNs) are associated with + Topology Database Updates (TDUs) and are unique only within + each APPN network node. A TDU can be associated with multiple + APPN resources. This FRSN indicates the last relative time + this resource was updated at the agent node." + + ::= { appnNnTopologyFREntry 1 } + +appnNnNodeFRName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned network name that is locally defined + at each network node." + + ::= { appnNnTopologyFREntry 2 } + +appnNnNodeFREntryTimeLeft OBJECT-TYPE + SYNTAX AppnTopologyEntryTimeLeft + UNITS "days" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of days before deletion of this network node entry." + ::= { appnNnTopologyFREntry 3 } + +appnNnNodeFRType OBJECT-TYPE + SYNTAX INTEGER { + networkNode(1), + virtualRoutingNode(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Type of APPN node." + + ::= { appnNnTopologyFREntry 4 } + +appnNnNodeFRRsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Resource sequence number, which is assigned and controlled by + the network node that owns this resource. An odd number + indicates that information about the resource is inconsistent. + + This object corresponds to the numeric value in cv4580, bytes + 2-5." + + ::= { appnNnTopologyFREntry 5 } + +appnNnNodeFRRouteAddResist OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Route addition resistance. + + This administratively assigned value indicates the relative + desirability of using this node for intermediate session + traffic. The value, which can be any integer 0-255, is used + in route computation. The lower the value, the more + desirable the node is for intermediate routing. + + This object corresponds to cv4580, byte 6." + + ::= { appnNnTopologyFREntry 6 } + +appnNnNodeFRCongested OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node is congested. This node is not be + included in route selection by other nodes when this congestion + exists. + + This object corresponds to cv4580, byte 7, bit 0." + + ::= { appnNnTopologyFREntry 7 } + +appnNnNodeFRIsrDepleted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether intermediate session routing resources are + depleted. This node is not included in intermediate route + selection by other nodes when resources are depleted. + + This object corresponds to cv4580, byte 7, bit 1." + + ::= { appnNnTopologyFREntry 8 } + +appnNnNodeFRQuiescing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node is quiescing. This node is not + included in route selection by other nodes when the node is + quiescing. + + This object corresponds to cv4580, byte 7, bit 5." + + ::= { appnNnTopologyFREntry 9 } + +appnNnNodeFRGateway OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node provide gateway services. + + This object corresponds to cv4580, byte 8, bit 0." + + + ::= { appnNnTopologyFREntry 10 } + +appnNnNodeFRCentralDirectory OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node supports central directory + services. + + This object corresponds to cv4580, byte 8, bit 1." + + + ::= { appnNnTopologyFREntry 11 } + +appnNnNodeFRIsr OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node supports intermediate session + routing (ISR). + + This object corresponds to cv4580, byte 8, bit 2." + + ::= { appnNnTopologyFREntry 12 } + +appnNnNodeFRGarbageCollect OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the node has been marked for garbage + collection (deletion from the topology database) upon the next + garbage collection cycle. + + This object corresponds to cv4580, byte 7, bit 3." + + ::= { appnNnTopologyFREntry 13 } + +appnNnNodeFRHprSupport OBJECT-TYPE + SYNTAX INTEGER { + noHprSupport(1), + hprBaseOnly(2), + rtpTower(3), + controlFlowsOverRtpTower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the node's level of support for high-performance + routing (HPR): + + noHprSupport(1) - no HPR support + hprBaseOnly(2) - HPR base (option set 1400) + supported + rtpTower(3) - HPR base and RTP tower + (option set 1401) supported + controlFlowsOverRtpTower(4) - HPR base, RTP tower, and + control flows over RTP + (option set 1402) supported + + This object corresponds to cv4580, byte 9, bits 3-4." + + ::= { appnNnTopologyFREntry 14 } + +appnNnNodeFRPeriBorderSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has peripheral border node + support. + + This object corresponds to cv4580, byte 9, bit 0." + + ::= { appnNnTopologyFREntry 15 } + +appnNnNodeFRInterchangeSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has interchange node support. + + This object corresponds to cv4580, byte 9, bit 1." + + ::= { appnNnTopologyFREntry 16 } + +appnNnNodeFRExteBorderSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node has extended border node + support. + + This object corresponds to cv4580, byte 9, bit 2." + ::= { appnNnTopologyFREntry 17 } + +appnNnNodeFRBranchAwareness OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this node supports branch awareness. + + This object corresponds to cv4580, byte 8, bit 4." + + ::= { appnNnTopologyFREntry 18 } + + +--APPN transmission group (TG) table + +-- This table describes the TGs associated with all the APPN network +-- nodes known to this node. The originating (owning) node for each +-- TG is repeated here to provide a means of correlating the TGs with +-- the nodes. + +appnNnTgTopologyFRTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnNnTgTopologyFREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Portion of the APPN topology database that describes all of + the APPN transmissions groups between nodes in the database." + + ::= { appnNnTopology 4 } + +appnNnTgTopologyFREntry OBJECT-TYPE + SYNTAX AppnNnTgTopologyFREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by four columns: FRSN, TG owner fully + qualified node name, TG destination fully qualified node name, + and TG number." + + INDEX + {appnNnTgFRFrsn, + appnNnTgFROwner, + appnNnTgFRDest, + appnNnTgFRNum} + + ::= { appnNnTgTopologyFRTable 1 } + +AppnNnTgTopologyFREntry ::= SEQUENCE { + + appnNnTgFRFrsn Unsigned32, + appnNnTgFROwner SnaControlPointName, + appnNnTgFRDest SnaControlPointName, + appnNnTgFRNum INTEGER, + appnNnTgFREntryTimeLeft AppnTopologyEntryTimeLeft, + + appnNnTgFRDestVirtual TruthValue, + appnNnTgFRDlcData AppnTgDlcData, + + appnNnTgFRRsn Unsigned32, + appnNnTgFROperational TruthValue, + appnNnTgFRQuiescing TruthValue, + appnNnTgFRCpCpSession INTEGER, + appnNnTgFREffCap AppnTgEffectiveCapacity, + appnNnTgFRConnCost INTEGER, + appnNnTgFRByteCost INTEGER, + appnNnTgFRSecurity AppnTgSecurity, + appnNnTgFRDelay AppnTgDelay, + appnNnTgFRUsr1 INTEGER, + appnNnTgFRUsr2 INTEGER, + appnNnTgFRUsr3 INTEGER, + appnNnTgFRGarbageCollect TruthValue, + appnNnTgFRSubareaNum Unsigned32, + + appnNnTgFRHprSup TruthValue, + appnNnTgFRDestHprTrans TruthValue, + appnNnTgFRTypeIndicator INTEGER, + appnNnTgFRIntersubnet TruthValue, + appnNnTgFRMltgLinkType TruthValue, + appnNnTgFRBranchTg TruthValue +} + + +appnNnTgFRFrsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Flow reduction sequence numbers (FRSNs) are associated with + Topology Database Updates (TDUs) and are unique only within + each APPN network node. A TDU can be associated with multiple + APPN resources. This FRSN indicates the last time this + resource was updated at this node." + + ::= { appnNnTgTopologyFREntry 1 } + +appnNnTgFROwner OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for the originating node for + this TG. This is the same name specified in the node table." + + ::= { appnNnTgTopologyFREntry 2 } + +appnNnTgFRDest OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned fully qualified network name for the + destination node for this TG." + + ::= { appnNnTgTopologyFREntry 3 } + +appnNnTgFRNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Number associated with this transmission group. Range is + 0-255." + + ::= { appnNnTgTopologyFREntry 4 } + +appnNnTgFREntryTimeLeft OBJECT-TYPE + SYNTAX AppnTopologyEntryTimeLeft + UNITS "days" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of days before deletion of this network node TG entry + if it is not operational or has an odd (inconsistent) RSN." + + ::= { appnNnTgTopologyFREntry 5 } + +appnNnTgFRDestVirtual OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the destination node is a virtual routing + node." + ::= { appnNnTgTopologyFREntry 6 } + +appnNnTgFRDlcData OBJECT-TYPE + SYNTAX AppnTgDlcData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DLC-specific data related to a link connection network." + + ::= { appnNnTgTopologyFREntry 7 } + +appnNnTgFRRsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current owning node's resource sequence number for this + resource. An odd number indicates that information about the + resource is inconsistent. + + This object corresponds to the numeric value in cv47, bytes + 2-5" + + ::= { appnNnTgTopologyFREntry 8 } + +appnNnTgFROperational OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is operational. + + This object corresponds to cv47, byte 6, bit 0." + + ::= { appnNnTgTopologyFREntry 9 } + +appnNnTgFRQuiescing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is quiescing. + + If the TG owner is either an extended border node or a + branch-aware network node (indicated, respectively, by + the appnNnNodeFRExteBorderSup and appnNnNodeFRBranchAwareness + objects in the corresponding appnNnTopologyFREntry), then + this indicator is artificially set to TRUE in the APPN + topology database, to remove the TG from other nodes' + route calculations. A management application can + determine whether the TG is actually quiescing by + examining its appnLocalTgQuiescing object at the TG owner. + + This object corresponds to cv47, byte 6, bit 2." + + ::= { appnNnTgTopologyFREntry 10 } + +appnNnTgFRCpCpSession OBJECT-TYPE + SYNTAX INTEGER { + supportedUnknownStatus(1), + supportedActive(2), + notSupported(3), + supportedNotActive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether CP-CP sessions are supported on this TG, and + whether the TG owner's contention-winner session is active on + this TG. Some nodes in the network are not able to + differentiate support and status of CP-CP sessions, and thus + may report the 'supportedUnknownStatus' value. + + This object corresponds to cv47, byte 6, bits 3-4." + + ::= { appnNnTgTopologyFREntry 11 } + + +appnNnTgFREffCap OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Effective capacity for this TG." + + ::= { appnNnTgTopologyFREntry 12 } + +appnNnTgFRConnCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cost per connect time. + + This is an administratively assigned value representing the + relative cost per unit of time to use this TG. Range is from + 0, which means no cost, to 255, which indicates maximum cost. + + This object corresponds to cv47, byte 13." + + ::= { appnNnTgTopologyFREntry 13 } + +appnNnTgFRByteCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cost per byte transmitted. + + This is an administratively assigned value representing the + relative cost of transmitting a byte over this TG. Range is + from 0, which means no cost, to 255, which indicates maximum + cost. + + This object corresponds to cv47, byte 14." + + ::= { appnNnTgTopologyFREntry 14 } + +appnNnTgFRSecurity OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned security level of this TG. + + This object corresponds to cv47, byte 16." + + ::= { appnNnTgTopologyFREntry 15 } + +appnNnTgFRDelay OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned delay associated with this TG. + + This object corresponds to cv47, byte 17." + + ::= { appnNnTgTopologyFREntry 16 } + +appnNnTgFRUsr1 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "First user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG. + + This object corresponds to cv47, byte 19." + + ::= { appnNnTgTopologyFREntry 17 } + +appnNnTgFRUsr2 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Second user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG. + + This object corresponds to cv47, byte 20." + + ::= { appnNnTgTopologyFREntry 18 } + +appnNnTgFRUsr3 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Third user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG. + + This object corresponds to cv47, byte 21." + + ::= { appnNnTgTopologyFREntry 19 } + +appnNnTgFRGarbageCollect OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the TG has been marked for garbage + collection (deletion from the topology database) upon the next + garbage collection cycle. + + This object corresponds to cv47, byte 6, bit 1." + + ::= { appnNnTgTopologyFREntry 20 } + +appnNnTgFRSubareaNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subarea number associated with this TG. + + This object corresponds to cv4680, bytes m+2 through m+5." + + ::= { appnNnTgTopologyFREntry 21 } + +appnNnTgFRHprSup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether high performance routing (HPR) + is supported over this TG. + + This object corresponds to cv4680, byte m+1, bit 2." + + ::= { appnNnTgTopologyFREntry 22 } + +appnNnTgFRDestHprTrans OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the destination node supports + high performance routing (HPR) transport tower. + + This object corresponds to cv4680, byte m+1, bit 7." + + ::= { appnNnTgTopologyFREntry 23 } + +appnNnTgFRTypeIndicator OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + appnOrBfTg(2), + interchangeTg(3), + virtualRouteTg(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of the TG. + + This object corresponds to cv4680, byte m+1, bits 3-4." + + ::= { appnNnTgTopologyFREntry 24 } + +appnNnTgFRIntersubnet OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is an intersubnet TG, + which defines a border between subnetworks. + + This object corresponds to cv4680, byte m+1, bit 5." + + ::= { appnNnTgTopologyFREntry 25 } + +appnNnTgFRMltgLinkType OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the transmission group is a + multi-link TG. A TG that has been brought up as a multi-link + TG is reported as one, even if it currently has only one link + active. + + This object corresponds to cv47, byte 6, bit 5." + + ::= { appnNnTgTopologyFREntry 26 } + +appnNnTgFRBranchTg OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is a branch TG + (equivalently, whether the destination of the transmission + group is a branch network node). + + This object corresponds to cv4680, byte m+1, bit 1." + ::= { appnNnTgTopologyFREntry 27 } + + +-- ************** The APPN Local Topology Group ************************ +-- This MIB Group represents the local topology maintained in +-- APPN network nodes, end nodes, and branch network nodes. It consists +-- of two tables: +-- - a table containing information about all of the TGs owned +-- by this node, which is implemented by all node types. +-- - a table containing all of the information known to this node +-- about the TGs owned by its end nodes, which is implemented only +-- by network nodes. +appnLocalTopology OBJECT IDENTIFIER ::= { appnObjects 3 } + +-- APPN Local Transmission Group (TG) table +-- This table describes the TGs associated with this node only. + +appnLocalTgTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnLocalTgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "TG Table describes all of the TGs owned by this node. The TG + destination can be a virtual node, network node, LEN node, or + end node." + + ::= { appnLocalTopology 1 } + +appnLocalTgEntry OBJECT-TYPE + SYNTAX AppnLocalTgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the destination CpName and the TG + number." + + INDEX + {appnLocalTgDest, + appnLocalTgNum} + + ::= { appnLocalTgTable 1 } + +AppnLocalTgEntry ::= SEQUENCE { + + appnLocalTgDest SnaControlPointName, + appnLocalTgNum INTEGER, + appnLocalTgDestVirtual TruthValue, + appnLocalTgDlcData AppnTgDlcData, + appnLocalTgPortName DisplayString, + + appnLocalTgQuiescing TruthValue, + appnLocalTgOperational TruthValue, + appnLocalTgCpCpSession INTEGER, + appnLocalTgEffCap AppnTgEffectiveCapacity, + appnLocalTgConnCost INTEGER, + appnLocalTgByteCost INTEGER, + appnLocalTgSecurity AppnTgSecurity, + appnLocalTgDelay AppnTgDelay, + appnLocalTgUsr1 INTEGER, + appnLocalTgUsr2 INTEGER, + appnLocalTgUsr3 INTEGER, + appnLocalTgHprSup INTEGER, + appnLocalTgIntersubnet TruthValue, + appnLocalTgMltgLinkType TruthValue, + appnLocalTgBranchLinkType INTEGER + } + +appnLocalTgDest OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name of the destination node for + this TG. This is the fully qualified name of a network node, + end node, LEN node, or virtual routing node." + + ::= { appnLocalTgEntry 1 } + +appnLocalTgNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Number associated with this transmission group." + + ::= { appnLocalTgEntry 2 } + +appnLocalTgDestVirtual OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the destination node for this TG is a + virtual routing node." + + ::= { appnLocalTgEntry 3 } + +appnLocalTgDlcData OBJECT-TYPE + SYNTAX AppnTgDlcData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DLC-specific data related to a link connection network." + + ::= { appnLocalTgEntry 4 } + +appnLocalTgPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name for the local port associated + with this TG. A zero-length string indicates that this value + is unknown." + + ::= { appnLocalTgEntry 5 } + +appnLocalTgQuiescing OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is quiescing." + + ::= { appnLocalTgEntry 6 } + +appnLocalTgOperational OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is operational." + + ::= { appnLocalTgEntry 7 } + +appnLocalTgCpCpSession OBJECT-TYPE + SYNTAX INTEGER { + supportedUnknownStatus(1), + supportedActive(2), + notSupported(3), + supportedNotActive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether CP-CP sessions are supported on this TG, and + whether the TG owner's contention-winner session is active on + this TG. Some nodes in the network are not able to + differentiate support and status of CP-CP sessions, and thus + may report the 'supportedUnknownStatus' value." + + ::= { appnLocalTgEntry 8 } + +appnLocalTgEffCap OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Effective capacity for this TG." + + ::= { appnLocalTgEntry 9 } + +appnLocalTgConnCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cost per connect time: a value representing the relative cost + per unit of time to use the TG. Range is from 0, which means + no cost, to 255." + + ::= { appnLocalTgEntry 10 } + +appnLocalTgByteCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Relative cost of transmitting a byte over this link. + Range is from 0 (lowest cost) to 255." + + ::= { appnLocalTgEntry 11 } + +appnLocalTgSecurity OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned security level of this TG." + + ::= { appnLocalTgEntry 12 } + +appnLocalTgDelay OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned delay associated with this TG." + ::= { appnLocalTgEntry 13 } + +appnLocalTgUsr1 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "First user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalTgEntry 14 } + +appnLocalTgUsr2 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Second user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalTgEntry 15 } + +appnLocalTgUsr3 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Third user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalTgEntry 16 } + +appnLocalTgHprSup OBJECT-TYPE + SYNTAX INTEGER { + noHprSupport(1), + hprBaseOnly(2), + rtpTower(3), + controlFlowsOverRtpTower(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the level of high performance routing (HPR) support + over this TG : + + noHprSupport(1) - no HPR support + hprBaseOnly(2) - HPR base (option set 1400) + supported + rtpTower(3) - HPR base and RTP tower + (option set 1401) supported + controlFlowsOverRtpTower(4) - HPR base, RTP tower, and + control flows over RTP + (option set 1402) supported" + ::= { appnLocalTgEntry 17 } + +appnLocalTgIntersubnet OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is an intersubnet TG, + which defines a border between subnetworks." + + ::= { appnLocalTgEntry 18 } + +appnLocalTgMltgLinkType OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the transmission group is a + multi-link TG. A TG that has been brought up as a multi-link + TG is reported as one, even if it currently has only one link + active." + + ::= { appnLocalTgEntry 19 } + +appnLocalTgBranchLinkType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + uplink(2), + downlink(3), + downlinkToBranchNetworkNode(4), + none(5), + unknown(255) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Branch link type of this TG: + other(1) = the agent has determined the TG's + branch link type to be a value other + than branch uplink or branch + downlink. This is the value used + for a connection network TG owned by + a branch network node. + uplink(2) = the TG is a branch uplink. + downlink(3) = the TG is a branch downlink to an + end node. + downlinkToBranchNetworkNode(4) = the TG is a branch + downlink to a cascaded branch + network node. + none(5) = the TG is not a branch TG. + unknown(255) = the agent cannot determine the + branch link type of the TG." + + ::= { appnLocalTgEntry 20 } + + +-- APPN Local End Node Transmission Group (TG) table +-- This table describes the TGs associated with all of the end nodes +-- known to this node. + +appnLocalEnTgTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnLocalEnTgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table describing all of the TGs owned by the end nodes known + to this node via TG registration. This node does not represent + its own view of the TG on behalf of the partner node in this + table. The TG destination can be a virtual routing node, + network node, or end node." + + ::= { appnLocalTopology 2 } + +appnLocalEnTgEntry OBJECT-TYPE + SYNTAX AppnLocalEnTgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table requires multiple indexes to uniquely identify each + TG. They are originating CPname, destination CPname, and the + TG number." + + INDEX + {appnLocalEnTgOrigin, + appnLocalEnTgDest, + appnLocalEnTgNum} + + ::= { appnLocalEnTgTable 1 } + +AppnLocalEnTgEntry ::= SEQUENCE { + appnLocalEnTgOrigin SnaControlPointName, + appnLocalEnTgDest SnaControlPointName, + appnLocalEnTgNum INTEGER, + appnLocalEnTgEntryTimeLeft AppnTopologyEntryTimeLeft, + + appnLocalEnTgDestVirtual TruthValue, + appnLocalEnTgDlcData AppnTgDlcData, + + appnLocalEnTgOperational TruthValue, + appnLocalEnTgCpCpSession INTEGER, + appnLocalEnTgEffCap AppnTgEffectiveCapacity, + appnLocalEnTgConnCost INTEGER, + appnLocalEnTgByteCost INTEGER, + appnLocalEnTgSecurity AppnTgSecurity, + appnLocalEnTgDelay AppnTgDelay, + appnLocalEnTgUsr1 INTEGER, + appnLocalEnTgUsr2 INTEGER, + appnLocalEnTgUsr3 INTEGER, + appnLocalEnTgMltgLinkType TruthValue + } + +appnLocalEnTgOrigin OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name of the origin node for this + TG. This is a fully qualified network name." + + ::= { appnLocalEnTgEntry 1 } + +appnLocalEnTgDest OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name of the destination node for + this TG. This is the fully qualified name of a network node, + end node, LEN node, or virtual routing node." + + ::= { appnLocalEnTgEntry 2 } + +appnLocalEnTgNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Number associated with this transmission group." + + ::= { appnLocalEnTgEntry 3 } + +appnLocalEnTgEntryTimeLeft OBJECT-TYPE + SYNTAX AppnTopologyEntryTimeLeft + UNITS "days" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of days before deletion of this end node TG entry." + + ::= { appnLocalEnTgEntry 4 } + +appnLocalEnTgDestVirtual OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the destination node is a virtual routing + node." + + ::= { appnLocalEnTgEntry 5 } + +appnLocalEnTgDlcData OBJECT-TYPE + SYNTAX AppnTgDlcData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "DLC-specific data related to a link connection network." + + ::= { appnLocalEnTgEntry 6 } + +appnLocalEnTgOperational OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the transmission group is operational." + + ::= { appnLocalEnTgEntry 7 } + +appnLocalEnTgCpCpSession OBJECT-TYPE + SYNTAX INTEGER { + supportedUnknownStatus(1), + supportedActive(2), + notSupported(3), + supportedNotActive(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether CP-CP sessions are supported on this TG, and + whether the TG owner's contention-winner session is active on + this TG. Some nodes in the network are not able to + differentiate support and status of CP-CP sessions, and thus + may report the 'supportedUnknownStatus' value." + + ::= { appnLocalEnTgEntry 8 } + +appnLocalEnTgEffCap OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Effective capacity for this TG." + + ::= { appnLocalEnTgEntry 9 } + +appnLocalEnTgConnCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Cost per connect time: a value representing the relative cost + per unit of time to use the TG. Range is from 0, which means + no cost, to 255." + + ::= { appnLocalEnTgEntry 10 } + +appnLocalEnTgByteCost OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Relative cost of transmitting a byte over this link. + Range is from 0, which means no cost, to 255." + + ::= { appnLocalEnTgEntry 11 } + +appnLocalEnTgSecurity OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned security level of this TG." + + ::= { appnLocalEnTgEntry 12 } + +appnLocalEnTgDelay OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned delay associated with this TG." + + ::= { appnLocalEnTgEntry 13 } + +appnLocalEnTgUsr1 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "First user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalEnTgEntry 14 } + +appnLocalEnTgUsr2 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Second user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalEnTgEntry 15 } + +appnLocalEnTgUsr3 OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Third user-defined TG characteristic for this TG. This is + an administratively assigned value associated with the TG." + + ::= { appnLocalEnTgEntry 16 } + +appnLocalEnTgMltgLinkType OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the transmission group is a + multi-link TG. A TG that has been brought up as a multi-link + TG is reported as one, even if it currently has only one link + active." + + ::= { appnLocalEnTgEntry 17 } + +-- ************** The APPN Directory Group ***************************** +appnDir OBJECT IDENTIFIER ::= { appnObjects 4 } +appnDirPerf OBJECT IDENTIFIER ::= { appnDir 1 } + +-- The APPN Directory Group + +-- The APPN Directory Database + +-- Each APPN network node and branch network node maintains directories +-- containing information on which LUs (applications) are available and +-- where they are located. LUs can be located in an APPN network node, +-- in any of its attached end nodes or branch network nodes, or in any +-- of the nodes below one of its attached branch network nodes. + +appnDirMaxCaches OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "directory entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of cache entries allowed. This is an + administratively assigned value." + + ::= { appnDirPerf 1 } + +appnDirCurCaches OBJECT-TYPE + SYNTAX Gauge32 + UNITS "directory entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of cache entries." + + ::= { appnDirPerf 2 } + +appnDirCurHomeEntries OBJECT-TYPE + SYNTAX Gauge32 + UNITS "directory entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of home entries." + + ::= { appnDirPerf 3 } + +appnDirRegEntries OBJECT-TYPE + SYNTAX Gauge32 + UNITS "directory entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of registered entries." + + ::= { appnDirPerf 4 } + +appnDirInLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of directed Locates received since the node was last + reinitialized." + + ::= { appnDirPerf 5 } + +appnDirInBcastLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of broadcast Locates received since the node was last + reinitialized." + + ::= { appnDirPerf 6 } + +appnDirOutLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of directed Locates sent since the node was last + reinitialized." + + ::= { appnDirPerf 7 } + +appnDirOutBcastLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of broadcast Locates sent since the node was last + reinitialized." + ::= { appnDirPerf 8 } + +appnDirNotFoundLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of directed Locates returned with a 'not found' since + the node was last reinitialized." + + ::= { appnDirPerf 9 } + +appnDirNotFoundBcastLocates OBJECT-TYPE + SYNTAX AppnNodeCounter + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of broadcast Locates returned with a 'not found' since + the node was last reinitialized." + + ::= { appnDirPerf 10 } + +appnDirLocateOutstands OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Locate messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of outstanding Locates, both directed and + broadcast. This value varies. A value of zero indicates + that no Locates are unanswered." + + ::= { appnDirPerf 11 } + + +--APPN Directory table + +-- This table contains information about all known LUs. + +appnDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing information about all known LUs." + ::= { appnDir 2 } + +appnDirEntry OBJECT-TYPE + SYNTAX AppnDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the LU name." + + INDEX + {appnDirLuName} + + ::= { appnDirTable 1 } + +AppnDirEntry ::= SEQUENCE { + appnDirLuName DisplayString, + appnDirNnServerName SnaControlPointName, + appnDirLuOwnerName SnaControlPointName, + appnDirLuLocation INTEGER, + appnDirType INTEGER, + appnDirApparentLuOwnerName DisplayString + } +appnDirLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..17)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network LU name in the domain of the + serving network node. Entries take one of three forms: + + - Explicit entries do not contain the character '*'. + - Partial wildcard entries have the form 'ccc*', where + 'ccc' represents one to sixteen characters in a + legal SNA LuName. + - A full wildcard entry consists of the single + character '*'" + + ::= { appnDirEntry 1 } + +appnDirNnServerName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified control point (CP) name of the network node + server. For unassociated end node entries, a zero-length + string is returned." + ::= { appnDirEntry 2 } + +appnDirLuOwnerName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified CP name of the node at which the LU is + located. This name is the same as the serving NN name when + the LU is located at a network node. It is also the same as + the fully qualified LU name when this is the control point + LU for this node." + + ::= { appnDirEntry 3 } + +appnDirLuLocation OBJECT-TYPE + SYNTAX INTEGER { + local(1), --Local + domain(2), --Domain + xdomain(3) --Cross Domain + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the location of the LU with respect to the local + node." + + ::= { appnDirEntry 4 } + +appnDirType OBJECT-TYPE + SYNTAX INTEGER { + home(1), --defined as home entry + cache(2), --learned over time + registered(3) --registered by end node + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Directory types are: + 1 - Home + The LU is in the domain of the local node, and the LU + information has been configured at the local node. + + 2 - Cache + The LU has previously been located by a broadcast + search, and the location information has been saved. + 3 - Registered + The LU is at an end node that is in the domain + of the local network node. Registered entries + are registered by the served end node." + + ::= { appnDirEntry 5 } + +appnDirApparentLuOwnerName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fully qualified CP name of the node at which the LU appears to + be located. This object and the appnDirLuOwnerName object are + related as follows: + + Implementations that support this object save in their + directory database information about an LU's owning control + point that was communicated in two control vectors: + + - an Associated Resource Entry (X'3C') CV with resource + type X'00F4' (ENCP) + + - a Real Owning Control Point (X'4A') CV. + + The X'4A' CV is created by a branch network node to preserve + the name of the real owning control point for an LU below the + branch network node, before it overwrites this name with its + own name in the X'3C' CV. The X'4A' CV is not present for LUs + that are not below branch network nodes. + + If the information a node has about an LU's owning CP came only + in a X'3C' CV, then the name from the X'3C' is returned in the + appnDirLuOwnerName object, and a null string is returned in + this object. + + If the information a node has about an LU's owning CP came in + both X'3C' and X'4A' CVs, then the name from the X'4A' is + returned in the appnDirLuOwnerName object, and the name from + the X'3C' (which will be the branch network node's name) is + returned in this object." + + ::= { appnDirEntry 6 } + + +-- ************** The APPN Class of Service Group ********************** + +appnCos OBJECT IDENTIFIER ::= { appnObjects 5 } + +-- The APPN Class of Service (COS) + +-- Class of Service is a means of expressing the quality of routes and +-- the transmission priority of traffic that flows on these routes. +-- The quality of routes is specified by two tables, a COS weight table +-- for TGs and a COS weight table for nodes. Values in these COS tables +-- are administratively assigned at each APPN node, with seven default +-- tables specified by the APPN architecture. +-- ********************************************************************* + +appnCosModeTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnCosModeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table representing all of the defined mode names for this + node. The table contains the matching COS name for each + mode name." + + ::= { appnCos 1 } + +appnCosModeEntry OBJECT-TYPE + SYNTAX AppnCosModeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by the mode name." + + INDEX + {appnCosModeName} + + ::= { appnCosModeTable 1 } + +AppnCosModeEntry ::= SEQUENCE { + appnCosModeName SnaModeName, + appnCosModeCosName SnaClassOfServiceName + } + +appnCosModeName OBJECT-TYPE + SYNTAX SnaModeName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this mode." + + ::= { appnCosModeEntry 1 } + +appnCosModeCosName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned name for this class of service." + + ::= { appnCosModeEntry 2 } + + +-- ********************************************************************* +appnCosNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnCosNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table mapping all of the defined class-of-service names for + this node to their network transmission priorities." + + ::= { appnCos 2 } + +appnCosNameEntry OBJECT-TYPE + SYNTAX AppnCosNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The COS name is the index to this table." + + INDEX + {appnCosName} + + ::= { appnCosNameTable 1 } + +AppnCosNameEntry ::= SEQUENCE { + appnCosName SnaClassOfServiceName, + appnCosTransPriority INTEGER + } + + +appnCosName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this class of service." + + ::= { appnCosNameEntry 1 } + +appnCosTransPriority OBJECT-TYPE + SYNTAX INTEGER { + low(1), --X'01' + medium(2), --X'02' + high(3), --X'03' + network(4) --X'04' + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transmission priority for this class of service: + + low(1) - (X'01'): low priority + medium(2) - (X'02'): medium priority + high(3) - (X'03'): high priority + network(4) - (X'04'): network priority" + + ::= { appnCosNameEntry 2 } + + +-- ********************************************************************* +appnCosNodeRowTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnCosNodeRowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all node-row information for all classes + of service defined in this node." + + ::= { appnCos 3 } + +appnCosNodeRowEntry OBJECT-TYPE + SYNTAX AppnCosNodeRowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A node entry for a given class of service." + + INDEX + {appnCosNodeRowName, + appnCosNodeRowIndex} + + ::= { appnCosNodeRowTable 1 } + +AppnCosNodeRowEntry ::= SEQUENCE { + appnCosNodeRowName SnaClassOfServiceName, + appnCosNodeRowIndex INTEGER, + appnCosNodeRowWgt DisplayString, + appnCosNodeRowResistMin INTEGER, + appnCosNodeRowResistMax INTEGER, + appnCosNodeRowMinCongestAllow INTEGER, + appnCosNodeRowMaxCongestAllow INTEGER + } + +appnCosNodeRowName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this class of service." + + ::= { appnCosNodeRowEntry 1 } + +appnCosNodeRowIndex OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Subindex under appnCosNodeRowName, corresponding to a row in + the node table for the class of service identified in + appnCosNodeRowName. + + For each class of service, this subindex orders rows in the + appnCosNodeRowTable in the same order as that used for route + calculation in the APPN node." + + ::= { appnCosNodeRowEntry 2 } + +appnCosNodeRowWgt OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Weight to be associated with the nodes that fit the criteria + specified by this node row. + + This value can either be a character representation of an + integer, or a formula for calculating the weight." + + ::= { appnCosNodeRowEntry 3 } + +appnCosNodeRowResistMin OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum route addition resistance value for this node. + Range of values is 0-255. The lower the value, the more + desirable the node is for intermediate routing." + + ::= { appnCosNodeRowEntry 4 } + +appnCosNodeRowResistMax OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum route addition resistance value for this node. + Range of values is 0-255. The lower the value, the more + desirable the node is for intermediate routing." + + ::= { appnCosNodeRowEntry 5 } + +appnCosNodeRowMinCongestAllow OBJECT-TYPE + SYNTAX INTEGER (0..1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether low congestion will be tolerated. This + object and appnCosNodeRowMaxCongestAllow together delineate a + range of acceptable congestion states for a node. For the + ordered pair (minimum congestion allowed, maximum congestion + allowed), the values are interpreted as follows: + + - (0,0): only low congestion is acceptable + - (0,1): either low or high congestion is acceptable + - (1,1): only high congestion is acceptable. + + Note that the combination (1,0) is not defined, since it + would identify a range whose lower bound was high congestion + and whose upper bound was low congestion." + + + ::= { appnCosNodeRowEntry 6 } + +appnCosNodeRowMaxCongestAllow OBJECT-TYPE + SYNTAX INTEGER (0..1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether low congestion will be tolerated. This + object and appnCosNodeRowMinCongestAllow together delineate a + range of acceptable congestion states for a node. For the + ordered pair (minimum congestion allowed, maximum congestion + allowed), the values are interpreted as follows: + - (0,0): only low congestion is acceptable + - (0,1): either low or high congestion is acceptable + - (1,1): only high congestion is acceptable. + + Note that the combination (1,0) is not defined, since it + would identify a range whose lower bound was high congestion + and whose upper bound was low congestion." + + ::= { appnCosNodeRowEntry 7 } + + +-- ********************************************************************* +appnCosTgRowTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnCosTgRowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing all the TG-row information for all classes of + service defined in this node." + + ::= { appnCos 4 } + +appnCosTgRowEntry OBJECT-TYPE + SYNTAX AppnCosTgRowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TG entry for a given class of service." + + INDEX + {appnCosTgRowName, + appnCosTgRowIndex} + + ::= { appnCosTgRowTable 1 } + +AppnCosTgRowEntry ::= SEQUENCE { + appnCosTgRowName SnaClassOfServiceName, + appnCosTgRowIndex INTEGER, + appnCosTgRowWgt DisplayString, + appnCosTgRowEffCapMin AppnTgEffectiveCapacity, + appnCosTgRowEffCapMax AppnTgEffectiveCapacity, + appnCosTgRowConnCostMin INTEGER, + appnCosTgRowConnCostMax INTEGER, + appnCosTgRowByteCostMin INTEGER, + appnCosTgRowByteCostMax INTEGER, + appnCosTgRowSecurityMin AppnTgSecurity, + appnCosTgRowSecurityMax AppnTgSecurity, + appnCosTgRowDelayMin AppnTgDelay, + appnCosTgRowDelayMax AppnTgDelay, + appnCosTgRowUsr1Min INTEGER, + appnCosTgRowUsr1Max INTEGER, + appnCosTgRowUsr2Min INTEGER, + appnCosTgRowUsr2Max INTEGER, + appnCosTgRowUsr3Min INTEGER, + appnCosTgRowUsr3Max INTEGER + } + +appnCosTgRowName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this class of service." + + ::= { appnCosTgRowEntry 1 } + +appnCosTgRowIndex OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Subindex under appnCosTgRowName, corresponding to a row in the + TG table for the class of service identified in + appnCosTgRowName. + + For each class of service, this subindex orders rows in the + appnCosTgRowTable in the same order as that used for route + calculation in the APPN node." + + ::= { appnCosTgRowEntry 2 } + +appnCosTgRowWgt OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Weight to be associated with the TGs that fit the criteria + specified by this TG row. + + This value can either be a character representation of an + integer, or a formula for calculating the weight." + + ::= { appnCosTgRowEntry 3 } + +appnCosTgRowEffCapMin OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable capacity for this class of service." + + ::= { appnCosTgRowEntry 4 } + +appnCosTgRowEffCapMax OBJECT-TYPE + SYNTAX AppnTgEffectiveCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable capacity for this class of service." + + ::= { appnCosTgRowEntry 5 } + +appnCosTgRowConnCostMin OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable cost per connect time for this class of + service. + + Cost per connect time: a value representing the relative + cost per unit of time to use this TG. Range is from 0, which + means no cost, to 255." + + ::= { appnCosTgRowEntry 6 } + +appnCosTgRowConnCostMax OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable cost per connect time for this class of + service. + + Cost per connect time: a value representing the relative + cost per unit of time to use this TG. Range is from 0, which + means no cost, to 255." + + ::= { appnCosTgRowEntry 7 } + +appnCosTgRowByteCostMin OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable cost per byte transmitted for this class + of service. + + Cost per byte transmitted: a value representing the relative + cost per unit of time to use this TG. Range is from 0, which + means no cost, to 255." + + ::= { appnCosTgRowEntry 8 } + +appnCosTgRowByteCostMax OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable cost per byte transmitted for this class + of service. + + Cost per byte transmitted: a value representing the relative + cost of transmitting a byte over this TG. Range is from 0, + which means no cost, to 255." + + ::= { appnCosTgRowEntry 9 } + +appnCosTgRowSecurityMin OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable security for this class of service." + + ::= { appnCosTgRowEntry 10 } + +appnCosTgRowSecurityMax OBJECT-TYPE + SYNTAX AppnTgSecurity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable security for this class of service." + + ::= { appnCosTgRowEntry 11 } + +appnCosTgRowDelayMin OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable propagation delay for this class of + service." + + ::= { appnCosTgRowEntry 12 } + +appnCosTgRowDelayMax OBJECT-TYPE + SYNTAX AppnTgDelay + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable propagation delay for this class of + service." + + ::= { appnCosTgRowEntry 13 } + +appnCosTgRowUsr1Min OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 14 } + +appnCosTgRowUsr1Max OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 15 } + +appnCosTgRowUsr2Min OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 16 } + +appnCosTgRowUsr2Max OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 17 } + +appnCosTgRowUsr3Min OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 18 } + +appnCosTgRowUsr3Max OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum acceptable value for this user-defined + characteristic." + + ::= { appnCosTgRowEntry 19 } + +-- ********************************************************************* +-- Intermediate Session Information +-- ********************************************************************* +appnSessIntermediate OBJECT IDENTIFIER ::= { appnObjects 6 } + +-- ********************************************************************* +-- Intermediate Session Information Global Objects +-- ********************************************************************* +-- The following simple objects allow the collection of intermediate +-- session Information to be started and stopped. +-- ********************************************************************* +appnIsInGlobal OBJECT IDENTIFIER ::= { appnSessIntermediate 1 } + +appnIsInGlobeCtrAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2), + ready(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Object by which a Management Station can deactivate or + activate capture of intermediate-session counts and names, by + setting the value to notActive(1) or active(2), respectively. + The value ready(3) is returned on GET operations until a SET + has been processed; after that the value received on the most + recent SET is returned. + + The counts referred to here are the eight objects in the + AppnIsInTable, from appnIsInP2SFmdPius through + appnIsInS2PNonFmdBytes. The names are the four objects in this + table, from appnIsInPriLuName through appnIsInCosName. + + Setting this object to the following values has the following + effects: + + notActive(1) stop collecting count data. If a count + is queried, it returns the value 0. + Collection of names may, but need not be, + disabled. + active(2) start collecting count data. If it is + supported, collection of names is enabled." + + ::= { appnIsInGlobal 1 } + +appnIsInGlobeCtrOperStatus OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not the intermediate session counts + are active. The counts referred to here are the eight + objects in the AppnIsInTable, from appnIsInP2SFmdPius through + appnIsInS2PNonFmdBytes. These eight counts are of type + Unsigned32 rather than Counter32 because when this object + enters the notActive state, either because a Management + Station has set appnInInGlobeCtrAdminStatus to notActive or + because of a locally-initiated transition, the counts are + all reset to 0. + + The values for this object are: + + notActive(1): collection of counts is not active; if it + is queried, a count returns the value 0. + active(2): collection of counts is active." + ::= { appnIsInGlobal 2 } + +appnIsInGlobeCtrStatusTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the appnIsInGlobeCtrOperStatus object last + changed, measured in hundredths of a second. This time can be + used to identify when this change occurred in relation to other + events in the agent, such as the last time the APPN node was + reinitialized." + + ::= { appnIsInGlobal 3 } + +appnIsInGlobeRscv OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the current route selection control vector (RSCV) + collection option in effect, and allows a Management Station to + change the option. + + The values for this object are: + + notActive(1): collection of route selection control vectors + is not active. + active(2): collection of route selection control vectors + is active." + + ::= { appnIsInGlobal 4 } + +appnIsInGlobeRscvTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the appnIsInGlobeRscv object last changed, + measured in hundredths of a second. This time can be used to + identify when this change occurred in relation to other events + in the agent, such as the last time the APPN node was + reinitialized." + ::= { appnIsInGlobal 5 } + + +appnIsInGlobeActSess OBJECT-TYPE + SYNTAX Gauge32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active intermediate sessions." + + ::= { appnIsInGlobal 6 } + +appnIsInGlobeHprBfActSess OBJECT-TYPE + SYNTAX Gauge32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active HPR intermediate sessions." + + ::= { appnIsInGlobal 7 } + +-- ********************************************************************* +-- Intermediate Session Information Table +-- ********************************************************************* +-- This table contains information on intermediate sessions +-- which are currently active. +-- ********************************************************************* +appnIsInTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnIsInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Intermediate Session Information Table" + + ::= { appnSessIntermediate 2 } + +appnIsInEntry OBJECT-TYPE + SYNTAX AppnIsInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of Intermediate Session Information Table." + + INDEX + { appnIsInFqCpName, + appnIsInPcid } + ::= { appnIsInTable 1 } + +AppnIsInEntry ::= SEQUENCE { + appnIsInFqCpName SnaControlPointName, + appnIsInPcid OCTET STRING, + + appnIsInSessState INTEGER, + appnIsInPriLuName DisplayString, + appnIsInSecLuName DisplayString, + appnIsInModeName SnaModeName, + appnIsInCosName SnaClassOfServiceName, + appnIsInTransPriority INTEGER, + + appnIsInSessType INTEGER, + appnIsInSessUpTime TimeTicks, + appnIsInCtrUpTime TimeTicks, + + appnIsInP2SFmdPius Unsigned32, + appnIsInS2PFmdPius Unsigned32, + appnIsInP2SNonFmdPius Unsigned32, + appnIsInS2PNonFmdPius Unsigned32, + appnIsInP2SFmdBytes Unsigned32, + appnIsInS2PFmdBytes Unsigned32, + appnIsInP2SNonFmdBytes Unsigned32, + appnIsInS2PNonFmdBytes Unsigned32, + + appnIsInPsAdjCpName SnaControlPointName, + appnIsInPsAdjTgNum INTEGER, + appnIsInPsSendMaxBtuSize INTEGER, + appnIsInPsSendPacingType INTEGER, + appnIsInPsSendRpc Gauge32, + appnIsInPsSendNxWndwSize Gauge32, + appnIsInPsRecvPacingType INTEGER, + appnIsInPsRecvRpc Gauge32, + appnIsInPsRecvNxWndwSize Gauge32, + appnIsInSsAdjCpName SnaControlPointName, + appnIsInSsAdjTgNum INTEGER, + appnIsInSsSendMaxBtuSize INTEGER, + appnIsInSsSendPacingType INTEGER, + appnIsInSsSendRpc Gauge32, + appnIsInSsSendNxWndwSize Gauge32, + appnIsInSsRecvPacingType INTEGER, + appnIsInSsRecvRpc Gauge32, + appnIsInSsRecvNxWndwSize Gauge32, + + appnIsInRouteInfo OCTET STRING, + + appnIsInRtpNceId OCTET STRING, + appnIsInRtpTcid OCTET STRING + } + +appnIsInFqCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network-qualified control point name of the node at which + the session and PCID originated. For APPN and LEN nodes, this + is either CP name of the APPN node at which the origin LU is + located or the CP name of the NN serving the LEN node at which + the origin LU is located. For resources served by a dependent + LU requester (DLUR), it is the name of the owning system + services control point (SSCP)." + + ::= { appnIsInEntry 1 } + +appnIsInPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of a session. It + is an 8-byte value assigned by the primary LU." + + ::= { appnIsInEntry 2 } + +appnIsInSessState OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + pendactive(2), + active(3), + pendinact(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the state of the session: + + inactive(1) - session is inactive + pendactive(2) - session is pending active + active(3) - session is active + pendinact(4) - session is pending inactive + + Active sessions can be deactivated by setting this object + to inactive(1)." + ::= { appnIsInEntry 3 } + +appnIsInPriLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary LU name of the session. A zero-length + string indicates that this name is not available." + + ::= { appnIsInEntry 4 } + +appnIsInSecLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary LU name of the session. A zero-length + string indicates that this name is not available." + + ::= { appnIsInEntry 5 } + +appnIsInModeName OBJECT-TYPE + SYNTAX SnaModeName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode name used for this session." + + ::= { appnIsInEntry 6 } + +appnIsInCosName OBJECT-TYPE + SYNTAX SnaClassOfServiceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Class of Service (COS) name used for this session." + + ::= { appnIsInEntry 7 } + +appnIsInTransPriority OBJECT-TYPE + SYNTAX INTEGER { + low(1), --X'01' + medium(2), --X'02' + high(3), --X'03' + network(4) --X'04' + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transmission priority for this class of service. Values are: + + low(1) - (X'01'): low priority + medium(2) - (X'02'): medium priority + high(3) - (X'03'): high priority + network(4) - (X'04'): network priority" + + ::= { appnIsInEntry 8 } + +appnIsInSessType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + lu62(2), + lu0thru3(3), + lu62dlur(4), + lu0thru3dlur(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of intermediate session. Defined values are + + unknown The session type is not known. + + lu62 A session between LUs of type 6.2 + (as indicated by the LU type in Bind) + + lu0thru3 A session between LUs of type 0, 1, 2, or 3 + (as indicated by the LU type in Bind) + + lu62dlur A session between LUs of type 6.2 + (as indicated by the LU type in Bind). + One of the LUs is a dependent LU supported + by the dependent LU requester (DLUR) + function at this node. + + lu0thru3dlur A session between LUs of type 0, 1, 2, or 3 + (as indicated by the LU type in Bind) + One of the LUs is a dependent LU supported + by the dependent LU requester (DLUR) + function at this node." + + ::= { appnIsInEntry 9 } + +appnIsInSessUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Length of time the session has been active, measured in + hundredths of a second." + + ::= { appnIsInEntry 10 } + +appnIsInCtrUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Length of time the session counters have been active, measured + in hundredths of a second." + + ::= { appnIsInEntry 11 } + +appnIsInP2SFmdPius OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "path information units (PIUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of function management data (FMD) path information + units (PIUs) sent from the Primary LU to the Secondary LU since + the counts were last activated." + + ::= { appnIsInEntry 12 } + +appnIsInS2PFmdPius OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "path information units (PIUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of FMD PIUs sent from the Secondary LU to the Primary + LU since the counts were last activated." + + ::= { appnIsInEntry 13 } + +appnIsInP2SNonFmdPius OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "path information units (PIUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of non-FMD PIUs sent from the Primary LU to the + Secondary LU since the counts were last activated." + + ::= { appnIsInEntry 14 } + +appnIsInS2PNonFmdPius OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "path information units (PIUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of non-FMD PIUs sent from the Secondary LU to the + Primary LU since the counts were last activated." + + ::= { appnIsInEntry 15 } + +appnIsInP2SFmdBytes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of FMD bytes sent from the Primary LU to the Secondary + LU since the counts were last activated." + + ::= { appnIsInEntry 16 } + +appnIsInS2PFmdBytes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of FMD bytes sent from the Secondary LU to the Primary + LU since the counts were last activated." + + ::= { appnIsInEntry 17 } + +appnIsInP2SNonFmdBytes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of non-FMD bytes sent from the Primary LU to the + Secondary LU since the counts were last activated." + ::= { appnIsInEntry 18 } + +appnIsInS2PNonFmdBytes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of non-FMD bytes sent from the Secondary LU to the + Primary LU since the counts were last activated." + + ::= { appnIsInEntry 19 } + +appnIsInPsAdjCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage adjacent CP name of this session. If the + session stage traverses an RTP connection, the CP name of the + remote RTP endpoint is returned." + + ::= { appnIsInEntry 20 } + +appnIsInPsAdjTgNum OBJECT-TYPE + SYNTAX INTEGER (0..300) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage adjacent transmission group (TG) number + associated with this session. If the session stage traverses + an RTP connection, the value 256 is returned. + + Values between 257 and 300 are available for other possible + TG 'stand-ins' that may be added to APPN in the future." + + ::= { appnIsInEntry 21 } + +appnIsInPsSendMaxBtuSize OBJECT-TYPE + SYNTAX INTEGER (99..32767) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage maximum basic transmission unit (BTU) size + for sending data." + + ::= { appnIsInEntry 22 } + +appnIsInPsSendPacingType OBJECT-TYPE + SYNTAX INTEGER { + fixed(1), + adaptive(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage type of pacing being used for sending data." + + ::= { appnIsInEntry 23 } + +appnIsInPsSendRpc OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage send residual pace count. This represents + the primary stage number of message units (MUs) that can still + be sent in the current session window." + + ::= { appnIsInEntry 24 } + +appnIsInPsSendNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage size of the next window which will be used + to send data." + + ::= { appnIsInEntry 25 } + +appnIsInPsRecvPacingType OBJECT-TYPE + SYNTAX INTEGER { + fixed(1), + adaptive(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage type of pacing being used for receiving + data." + + ::= { appnIsInEntry 26 } + +appnIsInPsRecvRpc OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage receive residual pace count. This + represents the primary stage number of message units (MUs) that + can still be received in the current session window." + + ::= { appnIsInEntry 27 } + +appnIsInPsRecvNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary stage size of the next window which will be used + to receive data." + + ::= { appnIsInEntry 28 } + +appnIsInSsAdjCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage adjacent CP name of this session. If the + session stage traverses an RTP connection, the CP name of the + remote RTP endpoint is returned." + + ::= { appnIsInEntry 29 } + +appnIsInSsAdjTgNum OBJECT-TYPE + SYNTAX INTEGER (0..300) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage adjacent transmission group (TG) number + associated with this session. If the session stage traverses + an RTP connection, the value 256 is returned. + + Values between 257 and 300 are available for other possible + TG 'stand-ins' that may be added to APPN in the future." + + ::= { appnIsInEntry 30 } + +appnIsInSsSendMaxBtuSize OBJECT-TYPE + SYNTAX INTEGER (99..32767) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage maximum basic transmission unit (BTU) size + for sending data." + + ::= { appnIsInEntry 31 } + +appnIsInSsSendPacingType OBJECT-TYPE + SYNTAX INTEGER { + fixed(1), + adaptive(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage type of pacing being used for sending + data." + + ::= { appnIsInEntry 32 } + +appnIsInSsSendRpc OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage send residual pace count. This represents + the secondary stage number of message units (MUs) that can + still be sent in the current session window." + + ::= { appnIsInEntry 33 } + +appnIsInSsSendNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage size of the next window which will be used + to send data." + + ::= { appnIsInEntry 34 } + +appnIsInSsRecvPacingType OBJECT-TYPE + SYNTAX INTEGER { + fixed(1), + adaptive(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage type of pacing being used for receiving + data." + + ::= { appnIsInEntry 35 } + +appnIsInSsRecvRpc OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage receive residual pace count. This + represents the secondary stage number of message units (MUs) + that can still be received in the current session window." + + ::= { appnIsInEntry 36 } + +appnIsInSsRecvNxWndwSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "message units (MUs)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary stage size of the next window which will be used + to receive data." + + ::= { appnIsInEntry 37 } + +appnIsInRouteInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The route selection control vector (RSCV X'2B') used for this + session. It is present for APPN nodes; but is not present for + LEN nodes. The format of this vector is described in SNA + Formats. If no RSCV is available, a zero-length string is + returned." + + ::= { appnIsInEntry 38 } + +appnIsInRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The HPR local Network Connection Endpoint of the session." + + ::= { appnIsInEntry 39 } + +appnIsInRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RTP connection local TCID of the session." + + ::= { appnIsInEntry 40 } + +-- ********************************************************************* +-- Intermediate Session RTP Table +-- ********************************************************************* +-- This table contains information on intermediate sessions that are +-- being transported on Rapid Transport Protocol (RTP) connections by +-- High Performance Routing (HPR). +-- ********************************************************************* +appnIsRtpTable OBJECT-TYPE + SYNTAX SEQUENCE OF AppnIsRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table indicating how many ISR sessions are transported by + each RTP connection." + + ::= { appnSessIntermediate 3 } + +appnIsRtpEntry OBJECT-TYPE + SYNTAX AppnIsRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of Intermediate Session RTP Table." + + INDEX + { appnIsRtpNceId, + appnIsRtpTcid } + + ::= { appnIsRtpTable 1 } + +AppnIsRtpEntry ::= SEQUENCE { + appnIsRtpNceId OCTET STRING, + appnIsRtpTcid OCTET STRING, + appnIsRtpSessions Gauge32 + } + +appnIsRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local Network Connection Endpoint of the RTP connection." + + ::= { appnIsRtpEntry 1 } + +appnIsRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local TCID of the RTP connection." + + ::= { appnIsRtpEntry 2 } + +appnIsRtpSessions OBJECT-TYPE + SYNTAX Gauge32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intermediate sessions using this RTP + connection." + + ::= { appnIsRtpEntry 3 } + + +-- ********************************************************************* + appnTraps OBJECT IDENTIFIER ::= { appnMIB 2 } +-- ********************************************************************* + +alertTrap NOTIFICATION-TYPE + OBJECTS { alertIdNumber, affectedObject } + STATUS current + DESCRIPTION + "This trap carries a 32-bit SNA Management Services (SNA/MS) + Alert ID Number, as specified in SNA/MS Formats." + + ::= { appnTraps 1 } + +alertIdNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "A 32-bit SNA Management Services (SNA/MS) Alert ID Number, as + specified in SNA/MS Formats." + + ::= { appnTraps 2 } + +affectedObject OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The MIB object associated with the Alert condition, if there + is an object associated with it. If no associated object can + be identified, the value 0.0 is passed in the trap." + + ::= { appnTraps 3 } + +-- ********************************************************************* +-- Conformance information +-- ********************************************************************* + +appnConformance OBJECT IDENTIFIER ::= { appnMIB 3 } + +appnCompliances OBJECT IDENTIFIER ::= { appnConformance 1 } +appnGroups OBJECT IDENTIFIER ::= { appnConformance 2 } + +-- Compliance statements + +-- appnCompliance MODULE-COMPLIANCE (deprecated: moved to end of module) + +appnCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities that + implement the APPN MIB. + + In the descriptions for the conditionally mandatory groups that + follow, the branch network node is treated as a third node type, + parallel to network node and end node. This is not how branch + network nodes are treated in the base APPN architecture, but it + increases clarity here to do it." + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { + appnGeneralConfGroup2, + appnPortConfGroup, + appnLinkConfGroup2, + appnLocalTgConfGroup2, + appnDirTableConfGroup2 + } + +-- Conditionally mandatory groups + GROUP appnNnUniqueConfGroup + DESCRIPTION + "The appnNnUniqueConfGroup is mandatory for + network nodes." + + GROUP appnEnUniqueConfGroup + DESCRIPTION + "The appnEnUniqueConfGroup is mandatory for end + nodes." + + GROUP appnVrnConfGroup + DESCRIPTION + "The appnVrnConfGroup is mandatory for network + nodes, end nodes, and branch network nodes that + implement virtual routing node support." + + GROUP appnNnTopoConfGroup2 + DESCRIPTION + "The appnNnTopoConfGroup2 is mandatory for + network nodes." + + GROUP appnLocalEnTopoConfGroup2 + DESCRIPTION + "The appnLocalEnTopoConfGroup2 is mandatory for + network nodes." + + GROUP appnLocalDirPerfConfGroup + DESCRIPTION + "The appnLocalDirPerfConfGroup is mandatory for + APPN network nodes, end nodes, and branch network + nodes." + + GROUP appnCosConfGroup + DESCRIPTION + "The appnCosConfGroup is mandatory for APPN + network nodes, end nodes, and branch network + nodes." + + GROUP appnIntSessConfGroup + DESCRIPTION + "The appnIntSessConfGroup is mandatory for + network nodes and branch network nodes." + + GROUP appnHprBaseConfGroup + DESCRIPTION + "The appnHprBaseConfGroup is mandatory for nodes + that implement the HPR base (APPN option set 1400)." + GROUP appnHprRtpConfGroup + DESCRIPTION + "The appnHprRtpConfGroup is mandatory for nodes + that implement the HPR RTP tower (APPN option set + 1401)." + + GROUP appnHprCtrlFlowsRtpConfGroup + DESCRIPTION + "The appnHprCtrlFlowsRtpConfGroup is mandatory for + nodes that implement the HPR Control Flows over + RTP tower (APPN option set 1402)." + + GROUP appnHprBfConfGroup + DESCRIPTION + "The appnHprBfConfGroup is mandatory for nodes + that implement the APPN/HPR boundary function." + + GROUP appnTrapConfGroup + DESCRIPTION + "Traps are optional for all nodes." + + GROUP appnTrapNotifGroup + DESCRIPTION + "Traps are optional for all nodes." + + GROUP appnBrNnConfGroup + DESCRIPTION + "The appnBrNnConfGroup is mandatory for branch + network nodes." + + ::= { appnCompliances 3 } + -- { appnCompliances 2 } is used by the APPN-TRAP-MIB + +-- Units of conformance +appnGeneralConfGroup2 OBJECT-GROUP + OBJECTS { + appnNodeCpName, + appnNodeId, + appnNodeType, + appnNodeUpTime, + appnNodeParallelTg, + appnNodeAdaptiveBindPacing, + appnNodeHprSupport, + appnNodeCounterDisconTime, + appnNodeLsCounterType, + appnNodeBrNn + + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN general information and capabilities." + ::= { appnGroups 26 } + -- { appnGroups 21 - 25 } are used by the APPN-TRAP-MIB + +appnPortConfGroup OBJECT-GROUP + OBJECTS { + appnPortCommand, + appnPortOperState, + appnPortDlcType, + appnPortPortType, + appnPortSIMRIM, + appnPortLsRole, + appnPortNegotLs, + appnPortDynamicLinkSupport, + appnPortMaxRcvBtuSize, + appnPortMaxIframeWindow, + appnPortDefLsGoodXids, + appnPortDefLsBadXids, + appnPortDynLsGoodXids, + appnPortDynLsBadXids, + appnPortSpecific, + appnPortDlcLocalAddr, + appnPortCounterDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN port information." + ::= { appnGroups 2 } + +appnLinkConfGroup2 OBJECT-GROUP + OBJECTS { + appnLsCommand, + appnLsOperState, + appnLsPortName, + appnLsDlcType, + appnLsDynamic, + appnLsAdjCpName, + appnLsAdjNodeType, + appnLsTgNum, + appnLsLimResource, + appnLsActOnDemand, + appnLsMigration, + appnLsPartnerNodeId, + appnLsCpCpSessionSupport, + appnLsMaxSendBtuSize, + appnLsInXidBytes, + appnLsInMsgBytes, + appnLsInXidFrames, + appnLsInMsgFrames, + appnLsOutXidBytes, + appnLsOutMsgBytes, + appnLsOutXidFrames, + appnLsOutMsgFrames, + appnLsEchoRsps, + appnLsCurrentDelay, + appnLsMaxDelay, + appnLsMinDelay, + appnLsMaxDelayTime, + appnLsGoodXids, + appnLsBadXids, + appnLsSpecific, + appnLsActiveTime, + appnLsCurrentStateTime, + appnLsHprSup, + appnLsLocalAddr, + appnLsRemoteAddr, + appnLsRemoteLsName, + appnLsStatusTime, + appnLsStatusLsName, + appnLsStatusCpName, + appnLsStatusPartnerId, + appnLsStatusTgNum, + appnLsStatusGeneralSense, + appnLsStatusRetry, + appnLsStatusEndSense, + appnLsStatusXidLocalSense, + appnLsStatusXidRemoteSense, + appnLsStatusXidByteInError, + appnLsStatusXidBitInError, + appnLsStatusDlcType, + appnLsStatusLocalAddr, + appnLsStatusRemoteAddr, + appnLsCounterDisconTime, + appnLsMltgMember + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN link information." + ::= { appnGroups 27 } + +appnLocalTgConfGroup2 OBJECT-GROUP + OBJECTS { + appnLocalTgDestVirtual, + appnLocalTgDlcData, + appnLocalTgPortName, + appnLocalTgQuiescing, + appnLocalTgOperational, + appnLocalTgCpCpSession, + appnLocalTgEffCap, + appnLocalTgConnCost, + appnLocalTgByteCost, + appnLocalTgSecurity, + appnLocalTgDelay, + appnLocalTgUsr1, + appnLocalTgUsr2, + appnLocalTgUsr3, + appnLocalTgHprSup, + appnLocalTgIntersubnet, + appnLocalTgMltgLinkType + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN local TG information." + ::= { appnGroups 28 } + +appnDirTableConfGroup2 OBJECT-GROUP + OBJECTS { + appnDirNnServerName, + appnDirLuOwnerName, + appnDirLuLocation, + appnDirType, + appnDirApparentLuOwnerName + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of the + APPN directory database." + ::= { appnGroups 29 } + +appnNnUniqueConfGroup OBJECT-GROUP + OBJECTS { + appnNodeNnCentralDirectory, + appnNodeNnTreeCache, + appnNodeNnRouteAddResist, + appnNodeNnIsr, + appnNodeNnFrsn, + appnNodeNnPeriBorderSup, + appnNodeNnInterchangeSup, + appnNodeNnExteBorderSup, + appnNodeNnSafeStoreFreq, + appnNodeNnRsn, + appnNodeNnCongested, + appnNodeNnIsrDepleted, + appnNodeNnQuiescing, + appnNodeNnGateway + } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation unique + to APPN network nodes." + ::= { appnGroups 6 } + +appnEnUniqueConfGroup OBJECT-GROUP + OBJECTS { + appnNodeEnModeCosMap, + appnNodeEnNnServer, + appnNodeEnLuSearch + } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation for + APPN end nodes. Some of these objects also appear in the + instrumentation for a branch network node." + ::= { appnGroups 7 } + +appnVrnConfGroup OBJECT-GROUP + OBJECTS { + appnVrnPortName + } + STATUS current + DESCRIPTION + "An object providing the instrumentation for virtual + routing node support in an APPN node." + ::= { appnGroups 8 } + +appnNnTopoConfGroup2 OBJECT-GROUP + OBJECTS { + appnNnTopoMaxNodes, + appnNnTopoCurNumNodes, + appnNnTopoNodePurges, + appnNnTopoTgPurges, + appnNnTopoTotalTduWars, + appnNnNodeFREntryTimeLeft, + appnNnNodeFRType, + appnNnNodeFRRsn, + appnNnNodeFRRouteAddResist, + appnNnNodeFRCongested, + appnNnNodeFRIsrDepleted, + appnNnNodeFRQuiescing, + appnNnNodeFRGateway, + appnNnNodeFRCentralDirectory, + appnNnNodeFRIsr, + appnNnNodeFRGarbageCollect, + appnNnNodeFRHprSupport, + appnNnNodeFRPeriBorderSup, + appnNnNodeFRInterchangeSup, + appnNnNodeFRExteBorderSup, + appnNnNodeFRBranchAwareness, + appnNnTgFREntryTimeLeft, + appnNnTgFRDestVirtual, + appnNnTgFRDlcData, + appnNnTgFRRsn, + appnNnTgFROperational, + appnNnTgFRQuiescing, + appnNnTgFRCpCpSession, + appnNnTgFREffCap, + appnNnTgFRConnCost, + appnNnTgFRByteCost, + appnNnTgFRSecurity, + appnNnTgFRDelay, + appnNnTgFRUsr1, + appnNnTgFRUsr2, + appnNnTgFRUsr3, + appnNnTgFRGarbageCollect, + appnNnTgFRSubareaNum, + appnNnTgFRHprSup, + appnNnTgFRDestHprTrans, + appnNnTgFRTypeIndicator, + appnNnTgFRIntersubnet, + appnNnTgFRMltgLinkType, + appnNnTgFRBranchTg + } + STATUS current + DESCRIPTION + "The appnNnTopoConfGroup is mandatory only for network + nodes." + ::= { appnGroups 30 } + +appnLocalEnTopoConfGroup2 OBJECT-GROUP + OBJECTS { + appnLocalEnTgEntryTimeLeft, + appnLocalEnTgDestVirtual, + appnLocalEnTgDlcData, + appnLocalEnTgOperational, + appnLocalEnTgCpCpSession, + appnLocalEnTgEffCap, + appnLocalEnTgConnCost, + appnLocalEnTgByteCost, + appnLocalEnTgSecurity, + appnLocalEnTgDelay, + appnLocalEnTgUsr1, + appnLocalEnTgUsr2, + appnLocalEnTgUsr3, + appnLocalEnTgMltgLinkType + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation + of the information that a network node possesses about + the end nodes directly attached to it." + ::= { appnGroups 31 } + +appnLocalDirPerfConfGroup OBJECT-GROUP + OBJECTS { + appnDirMaxCaches, + appnDirCurCaches, + appnDirCurHomeEntries, + appnDirRegEntries, + appnDirInLocates, + appnDirInBcastLocates, + appnDirOutLocates, + appnDirOutBcastLocates, + appnDirNotFoundLocates, + appnDirNotFoundBcastLocates, + appnDirLocateOutstands + } + STATUS current + DESCRIPTION + "The appnLocalDirPerfConfGroup is mandatory only for APPN + network nodes and end nodes." + ::= { appnGroups 11 } + +appnCosConfGroup OBJECT-GROUP + OBJECTS { + appnCosModeCosName, + appnCosTransPriority, + appnCosNodeRowWgt, + appnCosNodeRowResistMin, + appnCosNodeRowResistMax, + appnCosNodeRowMinCongestAllow, + appnCosNodeRowMaxCongestAllow, + appnCosTgRowWgt, + appnCosTgRowEffCapMin, + appnCosTgRowEffCapMax, + appnCosTgRowConnCostMin, + appnCosTgRowConnCostMax, + appnCosTgRowByteCostMin, + appnCosTgRowByteCostMax, + appnCosTgRowSecurityMin, + appnCosTgRowSecurityMax, + appnCosTgRowDelayMin, + appnCosTgRowDelayMax, + appnCosTgRowUsr1Min, + appnCosTgRowUsr1Max, + appnCosTgRowUsr2Min, + appnCosTgRowUsr2Max, + appnCosTgRowUsr3Min, + appnCosTgRowUsr3Max + } + STATUS current + DESCRIPTION + "The appnCosConfGroup is mandatory only for APPN network + nodes and end nodes." + ::= { appnGroups 12 } + +appnIntSessConfGroup OBJECT-GROUP + OBJECTS { + appnIsInGlobeCtrAdminStatus, + appnIsInGlobeCtrOperStatus, + appnIsInGlobeCtrStatusTime, + appnIsInGlobeRscv, + appnIsInGlobeRscvTime, + appnIsInGlobeActSess, + appnIsInSessState, + appnIsInPriLuName, + appnIsInSecLuName, + appnIsInModeName, + appnIsInCosName, + appnIsInTransPriority, + appnIsInSessType, + appnIsInSessUpTime, + appnIsInCtrUpTime, + appnIsInP2SFmdPius, + appnIsInS2PFmdPius, + appnIsInP2SNonFmdPius, + appnIsInS2PNonFmdPius, + appnIsInP2SFmdBytes, + appnIsInS2PFmdBytes, + appnIsInP2SNonFmdBytes, + appnIsInS2PNonFmdBytes, + appnIsInPsAdjCpName, + appnIsInPsAdjTgNum, + appnIsInPsSendMaxBtuSize, + appnIsInPsSendPacingType, + appnIsInPsSendRpc, + appnIsInPsSendNxWndwSize, + appnIsInPsRecvPacingType, + appnIsInPsRecvRpc, + appnIsInPsRecvNxWndwSize, + appnIsInSsAdjCpName, + appnIsInSsAdjTgNum, + appnIsInSsSendMaxBtuSize, + appnIsInSsSendPacingType, + appnIsInSsSendRpc, + appnIsInSsSendNxWndwSize, + appnIsInSsRecvPacingType, + appnIsInSsRecvRpc, + appnIsInSsRecvNxWndwSize, + appnIsInRouteInfo + } + STATUS current + DESCRIPTION + "The appnIntSessConfGroup is mandatory only for network + nodes." + ::= { appnGroups 13 } + +appnHprBaseConfGroup OBJECT-GROUP + OBJECTS { + appnNodeHprIntRteSetups, + appnNodeHprIntRteRejects, + appnLsErrRecoSup, + appnLsForAnrLabel, + appnLsRevAnrLabel + } + STATUS current + DESCRIPTION + "The appnHprBaseConfGroup is mandatory only for nodes that + implement the HPR base (APPN option set 1400)." + ::= { appnGroups 14 } + +appnHprRtpConfGroup OBJECT-GROUP + OBJECTS { + appnNodeMaxSessPerRtpConn, + appnNodeHprOrgRteSetups, + appnNodeHprOrgRteRejects, + appnNodeHprEndRteSetups, + appnNodeHprEndRteRejects, + appnLsBfNceId + } + STATUS current + DESCRIPTION + "The appnHprRtpConfGroup is mandatory only for nodes that + implement the HPR RTP tower (APPN option set 1401)." + ::= { appnGroups 15 } + +appnHprCtrlFlowsRtpConfGroup OBJECT-GROUP + OBJECTS { + appnLsCpCpNceId, + appnLsRouteNceId + } + STATUS current + DESCRIPTION + "The appnHprCtrlFlowsRtpConfGroup is mandatory only for nodes + that implement the HPR Control Flows over RTP tower (APPN + option set 1402)." + ::= { appnGroups 16 } + +appnHprBfConfGroup OBJECT-GROUP + OBJECTS { + appnIsInGlobeHprBfActSess, + appnIsInRtpNceId, + appnIsInRtpTcid, + appnIsRtpSessions + } + STATUS current + DESCRIPTION + "The appnHprBfConfGroup is mandatory only for nodes that + implement the APPN/HPR boundary function." + ::= { appnGroups 17 } + +appnTrapConfGroup OBJECT-GROUP + OBJECTS { + alertIdNumber, + affectedObject + } + STATUS current + DESCRIPTION + "The appnTrapConfGroup is optional for all APPN nodes. Nodes + implementing this group shall also implement the + appnTrapNotifGroup." + ::= { appnGroups 18 } + +appnTrapNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + alertTrap + } + STATUS current + DESCRIPTION + "The appnTrapNotifGroup is optional for all APPN nodes. + Nodes implementing this group shall also implement the + appnTrapConfGroup." + ::= { appnGroups 19 } + +appnBrNnConfGroup OBJECT-GROUP + OBJECTS { + appnNodeEnNnServer, + appnNodeEnLuSearch, + appnLocalTgBranchLinkType + } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation for + branch network nodes. Some of these objects also appear + in the instrumentation for an end node. + + Note: A branch network node always returns endNode(2) + as the value of the appnNodeType object from the + appnGeneralConfGroup2 conformance group." + ::= { appnGroups 20 } + + +-- ********************************************************************* +-- Deprecated definitions +-- ********************************************************************* + +appnNodeMibVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (11)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of LAST-UPDATED from this module's MODULE-IDENTITY + macro. This object gives a Management Station an easy way of + determining the level of the MIB supported by an agent. + + Since this object incorporates the Year 2000-unfriendly + 2-digit year specified in SMI for the LAST-UPDATED field, and + since it was not found to be particularly useful, it has been + deprecated. No replacement object has been defined." + + ::= { appnGeneralInfoAndCaps 2 } + +appnCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for the SNMPv2 entities that + implement the APPN MIB. + + This is the compliance statement for the RFC 2155-level version + of the APPN MIB. It was deprecated as new objects were added + to the MIB for MLTG, branch network node, and other extensions + to the APPN architecture." + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { + appnGeneralConfGroup, + appnPortConfGroup, + appnLinkConfGroup, + appnLocalTgConfGroup, + appnDirTableConfGroup + } + +-- Conditionally mandatory groups + GROUP appnNnUniqueConfGroup + DESCRIPTION + "The appnNnUniqueConfGroup is mandatory only for + network nodes." + + GROUP appnEnUniqueConfGroup + DESCRIPTION + "The appnEnUniqueConfGroup is mandatory only for end + nodes." + + GROUP appnVrnConfGroup + DESCRIPTION + "The appnVrnConfGroup is mandatory only for network + nodes and end nodes that implement virtual routing + node support." + + GROUP appnNnTopoConfGroup + DESCRIPTION + "The appnNnTopoConfGroup is mandatory only for + network nodes." + GROUP appnLocalEnTopoConfGroup + DESCRIPTION + "The appnLocalEnTopoConfGroup is mandatory only for + network nodes." + + GROUP appnLocalDirPerfConfGroup + DESCRIPTION + "The appnLocalDirPerfConfGroup is mandatory only for + APPN network nodes and end nodes." + + GROUP appnCosConfGroup + DESCRIPTION + "The appnCosConfGroup is mandatory only for APPN + network nodes and end nodes." + + GROUP appnIntSessConfGroup + DESCRIPTION + "The appnIntSessConfGroup is mandatory only for + network nodes." + + GROUP appnHprBaseConfGroup + DESCRIPTION + "The appnHprBaseConfGroup is mandatory only for nodes + that implement the HPR base (APPN option set 1400)." + + GROUP appnHprRtpConfGroup + DESCRIPTION + "The appnHprRtpConfGroup is mandatory only for nodes + that implement the HPR RTP tower (APPN option set + 1401)." + GROUP appnHprCtrlFlowsRtpConfGroup + DESCRIPTION + "The appnHprCtrlFlowsRtpConfGroup is mandatory only + for nodes that implement the HPR Control Flows over + RTP tower (APPN option set 1402)." + + GROUP appnHprBfConfGroup + DESCRIPTION + "The appnHprBfConfGroup is mandatory only for nodes + that implement the APPN/HPR boundary function." + + GROUP appnTrapConfGroup + DESCRIPTION + "Traps are optional for all nodes." + + GROUP appnTrapNotifGroup + DESCRIPTION + "Traps are optional for all nodes." + ::= { appnCompliances 1 } + +appnGeneralConfGroup OBJECT-GROUP + OBJECTS { + appnNodeCpName, + appnNodeMibVersion, + appnNodeId, + appnNodeType, + appnNodeUpTime, + appnNodeParallelTg, + appnNodeAdaptiveBindPacing, + appnNodeHprSupport, + appnNodeCounterDisconTime + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN general information and capabilities. + + This RFC 2155-level group was deprecated when the + appnNodeMibVersion object was removed and the + appnNodeLsCounterType and appnNodeBrNn objects were added." + ::= { appnGroups 1 } + +appnLinkConfGroup OBJECT-GROUP + OBJECTS { + appnLsCommand, + appnLsOperState, + appnLsPortName, + appnLsDlcType, + appnLsDynamic, + appnLsAdjCpName, + appnLsAdjNodeType, + appnLsTgNum, + appnLsLimResource, + appnLsActOnDemand, + appnLsMigration, + appnLsPartnerNodeId, + appnLsCpCpSessionSupport, + appnLsMaxSendBtuSize, + appnLsInXidBytes, + appnLsInMsgBytes, + appnLsInXidFrames, + appnLsInMsgFrames, + appnLsOutXidBytes, + appnLsOutMsgBytes, + appnLsOutXidFrames, + appnLsOutMsgFrames, + appnLsEchoRsps, + appnLsCurrentDelay, + appnLsMaxDelay, + appnLsMinDelay, + appnLsMaxDelayTime, + appnLsGoodXids, + appnLsBadXids, + appnLsSpecific, + appnLsActiveTime, + appnLsCurrentStateTime, + appnLsHprSup, + appnLsLocalAddr, + appnLsRemoteAddr, + appnLsRemoteLsName, + appnLsStatusTime, + appnLsStatusLsName, + appnLsStatusCpName, + appnLsStatusPartnerId, + appnLsStatusTgNum, + appnLsStatusGeneralSense, + appnLsStatusRetry, + appnLsStatusEndSense, + appnLsStatusXidLocalSense, + appnLsStatusXidRemoteSense, + appnLsStatusXidByteInError, + appnLsStatusXidBitInError, + appnLsStatusDlcType, + appnLsStatusLocalAddr, + appnLsStatusRemoteAddr, + appnLsCounterDisconTime + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN link information. + + This RFC 2155-level group was deprecated when the + appnLsMltgMember object was added." + + ::= { appnGroups 3 } + +appnLocalTgConfGroup OBJECT-GROUP + OBJECTS { + appnLocalTgDestVirtual, + appnLocalTgDlcData, + appnLocalTgPortName, + appnLocalTgQuiescing, + appnLocalTgOperational, + appnLocalTgCpCpSession, + appnLocalTgEffCap, + appnLocalTgConnCost, + appnLocalTgByteCost, + appnLocalTgSecurity, + appnLocalTgDelay, + appnLocalTgUsr1, + appnLocalTgUsr2, + appnLocalTgUsr3, + appnLocalTgHprSup, + appnLocalTgIntersubnet + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the instrumentation of + APPN local TG information. + + This RFC 2155-level group was deprecated when the + appnLocalTgMltgLinkType object was added." + + ::= { appnGroups 4 } + +appnDirTableConfGroup OBJECT-GROUP + OBJECTS { + appnDirNnServerName, + appnDirLuOwnerName, + appnDirLuLocation, + appnDirType + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the instrumentation of the + APPN directory database. + + This RFC 2155-level group was deprecated when the + appnDirApparentLuOwnerName object was added." + + ::= { appnGroups 5 } + +appnNnTopoConfGroup OBJECT-GROUP + OBJECTS { + appnNnTopoMaxNodes, + appnNnTopoCurNumNodes, + appnNnTopoNodePurges, + appnNnTopoTgPurges, + appnNnTopoTotalTduWars, + appnNnNodeFREntryTimeLeft, + appnNnNodeFRType, + appnNnNodeFRRsn, + appnNnNodeFRRouteAddResist, + appnNnNodeFRCongested, + appnNnNodeFRIsrDepleted, + appnNnNodeFRQuiescing, + appnNnNodeFRGateway, + appnNnNodeFRCentralDirectory, + appnNnNodeFRIsr, + appnNnNodeFRGarbageCollect, + appnNnNodeFRHprSupport, + appnNnNodeFRPeriBorderSup, + appnNnNodeFRInterchangeSup, + appnNnNodeFRExteBorderSup, + appnNnTgFREntryTimeLeft, + appnNnTgFRDestVirtual, + appnNnTgFRDlcData, + appnNnTgFRRsn, + appnNnTgFROperational, + appnNnTgFRQuiescing, + appnNnTgFRCpCpSession, + appnNnTgFREffCap, + appnNnTgFRConnCost, + appnNnTgFRByteCost, + appnNnTgFRSecurity, + appnNnTgFRDelay, + appnNnTgFRUsr1, + appnNnTgFRUsr2, + appnNnTgFRUsr3, + appnNnTgFRGarbageCollect, + appnNnTgFRSubareaNum, + appnNnTgFRHprSup, + appnNnTgFRDestHprTrans, + appnNnTgFRTypeIndicator, + appnNnTgFRIntersubnet + } + STATUS deprecated + DESCRIPTION + "The appnNnTopoConfGroup is mandatory only for network + nodes. + + This RFC 2155-level group was deprecated when the + appnNnNodeFRBranchAwareness, appnNnTgFRMltgLinkType, and + appnNnFRBranchTg objects were added." + + ::= { appnGroups 9 } + +appnLocalEnTopoConfGroup OBJECT-GROUP + OBJECTS { + appnLocalEnTgEntryTimeLeft, + appnLocalEnTgDestVirtual, + appnLocalEnTgDlcData, + appnLocalEnTgOperational, + appnLocalEnTgCpCpSession, + appnLocalEnTgEffCap, + appnLocalEnTgConnCost, + appnLocalEnTgByteCost, + appnLocalEnTgSecurity, + appnLocalEnTgDelay, + appnLocalEnTgUsr1, + appnLocalEnTgUsr2, + appnLocalEnTgUsr3 + } + STATUS deprecated + DESCRIPTION + "The appnLocalEnTopoConfGroup is mandatory only for network + nodes. + + This RFC 2155-level group was deprecated when the + appnLocalEnTgMltgLinkType object was added." + + + ::= { appnGroups 10 } + + +END diff --git a/mibs/ietf/APPN-TRAP-MIB b/mibs/ietf/APPN-TRAP-MIB new file mode 100644 index 0000000..e812f49 --- /dev/null +++ b/mibs/ietf/APPN-TRAP-MIB @@ -0,0 +1,493 @@ +APPN-TRAP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + Counter32, OBJECT-TYPE, MODULE-IDENTITY, + NOTIFICATION-TYPE + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + appnMIB, appnIsInP2SFmdPius, appnIsInS2PFmdPius, + appnIsInP2SNonFmdPius, appnIsInS2PNonFmdPius, + appnIsInP2SFmdBytes, appnIsInS2PFmdBytes, + appnIsInP2SNonFmdBytes, appnIsInS2PNonFmdBytes, + appnIsInSessUpTime, appnObjects, + appnLocalTgOperational, appnLocalTgCpCpSession, + appnPortOperState, appnLsOperState, + appnCompliances, appnGroups + FROM APPN-MIB + + dlurDlusSessnStatus + FROM APPN-DLUR-MIB; + +appnTrapMIB MODULE-IDENTITY + LAST-UPDATED "9808310000Z" -- August 31, 1998 + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN MIBs SIG" + CONTACT-INFO + + " + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 4205 S. Miami Boulevard + BRQA/501 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@us.ibm.com + " + DESCRIPTION + "This MIB module defines notifications to be generated by + network devices with APPN capabilities. It presupposes + support for the APPN MIB. It also presupposes + support for the DLUR MIB for implementations + that support the DLUR-related groups." +::= { appnMIB 0 } + +-- ********************************************************************* +-- Notifications +-- ********************************************************************* + +appnIsrAccountingDataTrap NOTIFICATION-TYPE + OBJECTS { + appnIsInP2SFmdPius, + appnIsInS2PFmdPius, + appnIsInP2SNonFmdPius, + appnIsInS2PNonFmdPius, + appnIsInP2SFmdBytes, + appnIsInS2PFmdBytes, + appnIsInP2SNonFmdBytes, + appnIsInS2PNonFmdBytes, + appnIsInSessUpTime + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is generated by an + APPN node whenever an ISR session passing through the node is + taken down, regardless of whether the session went down + normally or abnormally. Its purpose is to allow a management + application (primarily an accounting application) that is + monitoring the ISR counts to receive the final values of these + counts, so that the application can properly account for the + amounts the counts were incremented since the last time the + application polled them. The appnIsInSessUpTime object + provides the total amount of time that the session was active. + + This notification is not a substitute for polling the ISR + counts. In particular, the count values reported in this + notification cannot be assumed to be the complete totals for + the life of the session, since they may have wrapped while the + session was up. + + The session to which the objects in this notification apply is + identified by the fully qualified CP name and PCID that make up + the table index. An instance of this notification will contain + exactly one instance of each of its objects, and these objects + will all belong to the same conceptual row of the + appnIsInTable. + + Generation of this notification is controlled by the same + object in the APPN MIB, appnIsInGlobeCtrAdminStatus, that + controls whether the count objects themselves are being + incremented." + ::= { appnTrapMIB 1 } + +appnLocalTgOperStateChangeTrap NOTIFICATION-TYPE + OBJECTS { + appnLocalTgTableChanges, + appnLocalTgOperational + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of local TG operational state changes, + and thus to reduce the frequency with which it polls + for these changes. + + This notification is sent whenever there is a change to + the appnLocalTgOperational object in a row of the + appnLocalTgTable. This notification is only sent for row + creation if the row is created with a value of 'true' for + appnLocalTgOperational. This notification is only sent for + row deletion if the last value of appnLocalTgOperational was + 'true'. In this case, the value of appnLocalTgOperational + in the notification shall be 'false', since the deletion of + a row indicates that the TG is no longer operational. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of local TG topology changes, and the + current operational state itself. The count of changes allows an + application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point it + knows it must retrieve the entire appnLocalTgTable again. + This is the same count as used in the appnLocalCpCpStateChangeTrap. + A lost notification could indicate a local TG CP-CP session state + change or an operational state change. + + Generation of this notification is controlled by the + appnTrapControl object." + + ::= { appnTrapMIB 2 } + +appnLocalTgCpCpChangeTrap NOTIFICATION-TYPE + OBJECTS { + appnLocalTgTableChanges, + appnLocalTgCpCpSession + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of local TG control-point to control-point (CP-CP) + session state changes, and thus to reduce the + frequency with which it polls for these changes. + + This notification is sent whenever there is a change to + the appnLocalTgCpCpSession object but NOT the + appnLocalTgOperational object in a row of the appnLocalTgTable. + This notification is never sent for appnLocalTgTable row + creation or deletion. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of local TG topology changes, and the + current CP-CP session state itself. The count of changes allows + an application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point it + knows it must retrieve the entire appnLocalTgTable again. This + is the same count as used in the appnLocalTgOperStateChangeTrap. + A lost notification could indicate a local TG CP-CP session + state change or an operational state change. + + Generation of this notification is controlled by the + appnTrapControl object." + + ::= { appnTrapMIB 3 } + +appnPortOperStateChangeTrap NOTIFICATION-TYPE + OBJECTS { + appnPortTableChanges, + appnPortOperState + } + + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of port operational state changes, and thus to + reduce the frequency with which it polls for these changes. + This notification is only sent when a appnPortOperState has + transitioned to a value of 'active' or 'inactive'. + + This notification is sent whenever there is a appnPortOperState + object transition to 'inactive' or 'active' state in the + appnPortTable. This notification is only sent for row creation + if the row is created with a value of 'active' for + appnPortOperState. This notification is only sent for + row deletion if the last value of appnPortOperState was + 'active'. In this case, the value of appnPortOperState + in the notification shall be 'inactive', since the deletion of + a row indicates that the port is no longer active. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of port table changes, and the + operational state itself. The count of changes allows an + application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point + it knows it must retrieve the entire appnPortTable again. + + Generation of this notification is controlled by the + appnTrapControl object." + + ::= { appnTrapMIB 4 } + +appnLsOperStateChangeTrap NOTIFICATION-TYPE + OBJECTS { + appnLsTableChanges, + appnLsOperState + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of link station operational state changes, and + thus to reduce the frequency with which it polls for these + changes. This notification is only sent when a appnLsOperState + has transitioned to a value of 'active' or 'inactive'. + + This notification is sent whenever there is a appnLsOperState + object transition to 'inactive' or 'active' state in the + appnLsTable. This notification is only sent for row creation + if the row is created with a value of 'active' for + appnLsOperState. This notification is only sent for + row deletion if the last value of appnLsOperState was + 'active'. In this case, the value of appnLsOperState + in the notification shall be 'inactive', since the deletion of + a row indicates that the link station is no longer active. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of link station table changes, and the + operational state itself. The count of changes allows an + application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point it + knows it must retrieve the entire appnLsTable again. + + Generation of this notification is controlled by the + appnTrapControl object." + ::= { appnTrapMIB 5 } + +dlurDlusStateChangeTrap NOTIFICATION-TYPE + OBJECTS { + dlurDlusTableChanges, + dlurDlusSessnStatus + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification makes it possible + for an APPN topology application to get asynchronous + notifications of DLUR-DLUS session changes, and thus to reduce + the frequency with which it polls for these changes. + + This notification is sent whenever there is a dlurDlusSessnStatus + object transition to 'inactive' or 'active' state in the + dlurDlusTable. This notification is only sent for row creation + if the row is created with a value of 'active' for + dlurDlusSessnStatus. This notification is only sent for + row deletion if the last value of dlurDlusSessnStatus was + 'active'. In this case, the value of dlurDlusSessnStatus + in the notification shall be 'inactive', since the deletion of + a row indicates that the session is no longer active. + + The notification is more than a simple 'poll me now' indication. + It carries both a count of DLUR-DLUS table changes, and the + session status itself. The count of changes allows an + application to detect lost notifications, either when polling + or upon receiving a subsequent notification, at which point it + knows it must retrieve the entire dlurDlusTable again. + + Generation of this notification is controlled by the + appnTrapControl object." + + ::= { appnTrapMIB 6 } + +-- ********************************************************************* +-- Supporting Objects +-- ********************************************************************* + +appnTrapObjects OBJECT IDENTIFIER ::= { appnObjects 7 } + +appnTrapControl OBJECT-TYPE + + SYNTAX BITS { + appnLocalTgOperStateChangeTrap(0), + appnLocalTgCpCpChangeTrap(1), + appnPortOperStateChangeTrap(2), + appnLsOperStateChangeTrap(3), + dlurDlusStateChangeTrap(4) + -- add other notification types here + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object to turn APPN notification generation on and off. + Setting a notification type's bit to 1 enables generation of + notifications of that type, subject to further filtering + resulting from entries in the snmpNotificationMIB. Setting + this bit to 0 disables generation of notifications of that + type. + + Note that generation of the appnIsrAccountingDataTrap is + controlled by the appnIsInGlobeCtrAdminStatus object in + the APPN MIB: if counts of intermediate session traffic + are being kept at all, then the notification is also enabled." + + ::= { appnTrapObjects 1 } + +appnLocalTgTableChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a row in the appnLocalTgTable + has changed status since the APPN node was last reinitialized. + This counter is incremented whenever a condition is detected + that would cause a appnLocalTgOperStateChangeTrap or + appnLocalTgCpCpChangeTrap notification to be sent, whether + or not those notifications are enabled." + + ::= { appnTrapObjects 2 } + +appnPortTableChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a row in the appnPortTable + has changed status since the APPN node was last reinitialized. + This counter is incremented whenever a condition is detected + that would cause a appnPortOperStateChangeTrap notification + to be sent, whether or not this notification is enabled." + + ::= { appnTrapObjects 3 } + +appnLsTableChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a row in the appnLsTable + has changed status since the APPN node was last reinitialized. + This counter is incremented whenever a condition is detected + that would cause a appnLsOperStateChangeTrap notification + to be sent, whether or not this notification is enabled." + + ::= { appnTrapObjects 4 } + +dlurDlusTableChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a row in the dlurDlusTable + has changed status since the APPN node was last reinitialized. + This counter is incremented whenever a condition is detected + that would cause a dlurDlusStateChangeTrap notification + to be sent, whether or not this notification is enabled." + + ::= { appnTrapObjects 5 } + +-- ********************************************************************* +-- Conformance information +-- ********************************************************************* + +-- Tie into the conformance structure in the APPN MIB: +-- appnConformance OBJECT IDENTIFIER ::= {appnMIB 3 } +-- +-- appnCompliances OBJECT IDENTIFIER ::= {appnConformance 1 } +-- appnGroups OBJECT IDENTIFIER ::= {appnConformance 2 } + +-- Compliance statement +appnTrapMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMP entities that + implement the APPN-TRAP-MIB." + + MODULE -- this module + +-- Conditionally mandatory groups + GROUP appnTrapMibIsrNotifGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + reporting of final ISR counter values via notifications." + + GROUP appnTrapMibTopoConfGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + polling reduction for local topology." + + GROUP appnTrapMibTopoNotifGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + polling reduction for local topology." + + GROUP appnTrapMibDlurConfGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + polling reduction for the dlurDlusTable." + + GROUP appnTrapMibDlurNotifGroup + DESCRIPTION + "This group is mandatory for APPN nodes supporting + polling reduction for the dlurDlusTable." + + OBJECT appnTrapControl + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to support a set to + this object." + + ::= {appnCompliances 2 } + +-- Units of conformance +appnTrapMibIsrNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + appnIsrAccountingDataTrap + } + STATUS current + DESCRIPTION + "A notification for reporting the final values of the + APPN MIB's ISR counters." + + ::= { appnGroups 21 } + +appnTrapMibTopoConfGroup OBJECT-GROUP + OBJECTS { + appnTrapControl, + appnLocalTgTableChanges, + appnPortTableChanges, + appnLsTableChanges + } + STATUS current + DESCRIPTION + "A collection of objects for reducing the polling + associated with the local topology tables in the + APPN MIB. Nodes that implement this group SHALL + also implement the appnTrapMibTopoNotifGroup." + + ::= { appnGroups 22 } + +appnTrapMibTopoNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + appnLocalTgOperStateChangeTrap, + appnLocalTgCpCpChangeTrap, + appnPortOperStateChangeTrap, + appnLsOperStateChangeTrap + + } + STATUS current + DESCRIPTION + "A collection of notifications for reducing the polling + associated with the local topology tables in the + APPN MIB. Nodes that implement this group SHALL + also implement the appnTrapMibTopoConfGroup." + + ::= { appnGroups 23 } + +appnTrapMibDlurConfGroup OBJECT-GROUP + OBJECTS { + appnTrapControl, + dlurDlusTableChanges + } + STATUS current + DESCRIPTION + "A collection of objects for reducing the polling + associated with the dlurDlusTable in the DLUR + MIB. Nodes that implement this group SHALL also + implement the appnTrapMibDlurNotifGroup." + + ::= { appnGroups 24 } + +appnTrapMibDlurNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + dlurDlusStateChangeTrap + } + STATUS current + DESCRIPTION + "A notification for reducing the polling associated + with the dlurDlusTable in the DLUR MIB. Nodes that + implement this group SHALL also implement the + appnTrapMibDlurConfGroup." + + ::= { appnGroups 25 } + +END diff --git a/mibs/ietf/APS-MIB b/mibs/ietf/APS-MIB new file mode 100644 index 0000000..9bb067e --- /dev/null +++ b/mibs/ietf/APS-MIB @@ -0,0 +1,1780 @@ +APS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-TYPE, + Gauge32, Counter32, Integer32, transmission + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, RowStatus, + TimeStamp, StorageType + FROM SNMPv2-TC + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + + + + + ifIndex, InterfaceIndex + FROM IF-MIB + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +apsMIB MODULE-IDENTITY + LAST-UPDATED "200302280000Z" -- February 28, 2003 + ORGANIZATION "IETF AToMMIB Working Group" + CONTACT-INFO + " Jim Kuhfeld + Postal: RedBack Networks. Inc. + 300 Holger Way + San Jose, CA 95134-1362 + Tel: +1 408 750 5465 + Email: jkuhfeld@redback.com + + Jeff Johnson + Postal: RedBack Networks. Inc. + 300 Holger Way + San Jose, CA 95134-1362 + Tel: +1 408 750 5460 + Email: jeff@redback.com + + Michael Thatcher + Postal: RedBack Networks. Inc. + 300 Holger Way + San Jose, CA 95134-1362 + Tel: +1 408 750 5449 + Email: thatcher@redback.com" + DESCRIPTION + "This management information module supports the configuration + and management of SONET linear APS groups. The definitions and + descriptions used in this MIB have been derived from + Synchronous Optical Network (SONET) Transport Systems: + Common Generic Criteria, GR-253-CORE Issue 3, September 2000, + section 5.3. The MIB is also consistent with the Multiplex + Section Protection (MSP) protocol as specified in ITU-T + Recommendation G.783, Characteristics of synchronous digital + hierarchy (SDH) equipment function blocks, Annex A and B. + + Copyright (C) The Internet Society (2003). This version of + this MIB module is part of RFC 3498; see the RFC itself for + full legal notices. + " + + + + + + + REVISION "200302280000Z" -- February 28, 2003 + DESCRIPTION + "Initial version of this MIB, published as RFC 3498." + ::= { transmission 49 } + +apsMIBObjects OBJECT IDENTIFIER + ::= { apsMIB 1 } + +apsMIBNotifications OBJECT IDENTIFIER + ::= { apsMIB 2 } + +apsMIBConformance OBJECT IDENTIFIER + ::= { apsMIB 3 } + +ApsK1K2 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This Textual Convention describes an object that stores + a SONET K1 and K2 byte APS protocol field. + + K1 is located in the first octet, K2 is located in + the second octet. Bits are numbered from left to right. + + Bits 1-4 of the K1 byte indicate a request. + + 1111 Lockout of Protection + 1110 Forced Switch + 1101 SF - High Priority + 1100 SF - Low Priority + 1011 SD - High Priority + 1010 SD - Low Priority + 1001 not used + 1000 Manual Switch + 0111 not used + 0110 Wait-to-Restore + 0101 not used + 0100 Exercise + 0011 not used + 0010 Reverse Request + 0001 Do Not Revert + 0000 No Request + + Bits 5-8 of the K1 byte indicate the channel associated with + the request defined in bits 1-4. + + 0000 is the Null channel. + + + + + + 1-14 are working channels. + 15 is the extra traffic channel + + Bits 1-4 of the K2 byte indicate a channel. The channel is + defined with the same syntax as K1 Bits 5-8. + + Bit 5 of the K2 byte indicates the + architecture. + + 0 if the architecture is 1+1 + 1 if the architecture is 1:n + + Bits 6-8 of the K2 byte indicates the mode. + + 000 - 011 are reserved for future use + 100 indicates the mode is unidirectional + 101 indicates the mode is bidirectional + 110 RDI-L + 111 AIS-L + " + REFERENCE + "Bellcore (Telcordia Technologies) GR-253-CORE, Issue 3, + September 2000, 5.3.5." + SYNTAX OCTET STRING (SIZE (2)) + +ApsSwitchCommand ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An APS switch command allows a user to perform protection + switch actions. + + If the APS switch command cannot be executed because an + equal or higher priority request is in effect, an + inconsistentValue error is returned. + + The Switch command values are: + + noCmd + + This value should be returned by a read request when no switch + command has been written to the object in question since + initialization. This value may not be used in a write + operation. If noCmd is used in a write operation a wrongValue + error is returned. + + + + + + + + clear + + Clears all of the switch commands listed below for the + specified channel. + + lockoutOfProtection + + Prevents any of the working channels from switching to the + protection line. The specified channel should be the protection + channel, otherwise an inconsistentValue error is returned. + + forcedSwitchWorkToProtect + + Switches the specified working channel to the protection line. + If the protection channel is specified an inconsistentValue + error is returned. + + forcedSwitchProtectToWork + + Switches the working channel back from the protection + line to the working line. The specified channel should be + the protection channel, otherwise an inconsistentValue + error is returned. + + manualSwitchWorkToProtect + + Switches the specified working channel to the protection line. + If the protection channel is specified an inconsistentValue + error is returned. + + manualSwitchProtectToWork + + Switches the working channel back from the protection + line to the working line. The specified channel should be + the protection channel, otherwise an inconsistentValue + error is returned. + + exercise + + Exercises the protocol for a protection switch of the specified + channel by issuing an Exercise request for that channel and + checking the response on the APS channel. " + SYNTAX INTEGER { + noCmd(1), + clear(2), + lockoutOfProtection(3), + forcedSwitchWorkToProtect(4), + forcedSwitchProtectToWork(5), + + + + manualSwitchWorkToProtect(6), + manualSwitchProtectToWork(7), + exercise(8) + } + +ApsControlCommand ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An APS control command applies only to LTE that support the + 1:n architecture and performs the following actions. + + The Control command values are: + + noCmd + + This value should be returned by a read request when no control + command has been written to the object in question since + initialization. This value may not be used in a write + operation. If noCmd is used in a write operation a wrongValue + error is returned. + + lockoutWorkingChannel + + Prevents the specified working channel from switching to the + protection line. If the protection line is specified an + inconsistentValue error is returned. + + clearLockoutWorkingChannel + + Clears the lockout a working channel command for the channel + specified. If the protection line is specified an + inconsistentValue error is returned." + SYNTAX INTEGER { + noCmd(1), + lockoutWorkingChannel(2), + clearLockoutWorkingChannel(3) + } + +-- +-- APS Configuration Table +-- +-- This table supports the addition, configuration and deletion of APS +-- groups. +-- + +apsConfig OBJECT IDENTIFIER ::= { apsMIBObjects 1 } + + + + + +apsConfigGroups OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of APS groups. This count includes all rows in + apsConfigTable, regardless of the value of apsConfigRowStatus." + ::= { apsConfig 1 } + +apsConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the APS groups that have been configured + on the system." + ::= { apsConfig 2 } + +apsConfigEntry OBJECT-TYPE + SYNTAX ApsConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsConfigTable." + INDEX { IMPLIED apsConfigName } + ::= { apsConfigTable 1 } + +ApsConfigEntry ::= SEQUENCE { + apsConfigName SnmpAdminString, + apsConfigRowStatus RowStatus, + apsConfigMode INTEGER, + apsConfigRevert INTEGER, + apsConfigDirection INTEGER, + apsConfigExtraTraffic INTEGER, + apsConfigSdBerThreshold Integer32, + apsConfigSfBerThreshold Integer32, + apsConfigWaitToRestore Integer32, + apsConfigCreationTime TimeStamp, + apsConfigStorageType StorageType +} + +apsConfigName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A textual name for the APS group." + ::= { apsConfigEntry 1 } + + + +apsConfigRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this APS group entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. Also, + all associated apsChanConfigEntry rows must represent + a set of consecutive channel numbers beginning with + 0 or 1, depending on the selected architecture. + + When set to notInService changes may be made to apsConfigMode, + apsConfigRevert, apsConfigDirection, apsConfigExtraTraffic, + apsConfigSdBerThreshold, apsConfigSfBerThreshold, + and apsConfigWaitToRestore. Also, associated apsChanConfigTable + objects may be added, deleted and modified." + ::= { apsConfigEntry 2 } + +apsConfigMode OBJECT-TYPE + SYNTAX INTEGER { + onePlusOne(1), + oneToN(2), + onePlusOneCompatible(3), + onePlusOneOptimized(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The architecture of the APS group. + + onePlusOne + + The 1+1 architecture permanently bridges the working + line to the protection line. + + oneToN + + The 1:n architecture allows one protection channel to + protect up to n working channels. When a fault is detected + on one of the n working channels that channel is bridged + over the protection channel. + + onePlusOneCompatible + + + + + + + This refers to 1 + 1 bidirectional switching compatible with + 1:n bidirectional switching as specified in ITU-T + Recommendation G.783 (04/97) section A.3.4.1. Since this + mode necessitates bidirectional switching, apsConfigDirection + must be set to bidirectional whenever onePlusOneCompatible + is set. + + onePlusOneOptimized + + This refers to 1 + 1 bidirectional switching optimized + for a network using predominantly 1 + 1 bidirectional + switching as specified in ITU-T Recommendation G.783 (04/97) + section B.1. Since this mode necessitates bidirectional + switching, apsConfigDirection must be set to bidirectional + whenever onePlusOneOptimized is set. + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1)." + DEFVAL {onePlusOne} + ::= { apsConfigEntry 3 } + +apsConfigRevert OBJECT-TYPE + SYNTAX INTEGER { nonrevertive(1), revertive(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The revertive mode of the APS group. + + nonrevertive + + Traffic remains on the protection line until another switch + request is received. + + revertive + + When the condition that caused a switch to the protection + line has been cleared the signal is switched back to the + working line. Since switching is revertive with the 1:n + architecture, apsConfigRevert must be set to revertive if + apsConfigMode is set to oneToN. + + Switching may optionally be revertive with the 1+1 architecture. + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1). " + DEFVAL { nonrevertive } + ::= { apsConfigEntry 4 } + + + + +apsConfigDirection OBJECT-TYPE + SYNTAX INTEGER { unidirectional(1), bidirectional(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The directional mode of the APS group. + + unidirectional + + The unidirectional mode provides protection in one direction. + + bidirectional + + The bidirectional mode provides protection in both + directions. + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1). " + DEFVAL {unidirectional} + ::= { apsConfigEntry 5 } + +apsConfigExtraTraffic OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables or disables the transfer of extra traffic + on the protection channel in a 1:n architecture. This object + must be set to disabled if the architecture is 1+1. It may be + necessary to disable this in order to interwork with other SONET + network elements that don't support extra traffic. + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1). " + DEFVAL { disabled } + ::= { apsConfigEntry 6 } + +apsConfigSdBerThreshold OBJECT-TYPE + SYNTAX Integer32 (5..9) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Signal Degrade Bit Error Rate. + + The negated value of this number is used as the exponent of + 10 for computing the threshold value for the Bit Error Rate + (BER). For example, a value of 5 indicates a BER threshold of + 10^-5. + + + + This object may be modified if the associated + apsConfigRowStatus object is equal to active(1)." + DEFVAL { 5 } + ::= { apsConfigEntry 7 } + +apsConfigSfBerThreshold OBJECT-TYPE + SYNTAX Integer32 (3..5) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Signal Failure Bit Error Rate. + + The negated value of this number is used as the exponent of + 10 for computing the threshold value for the Bit Error Rate + (BER). For example, a value of 5 indicates a BER threshold of + 10^-5. + + This object may be modified if the associated + apsConfigRowStatus object is equal to active(1)." + DEFVAL { 3 } + ::= { apsConfigEntry 8 } + +apsConfigWaitToRestore OBJECT-TYPE + SYNTAX Integer32 (0..720) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Wait To Restore period in seconds. + + After clearing of a condition that necessitated an + automatic switch, the wait to restore period must elapse + before reverting. This is intended to avoid rapid switch + oscillations. + + GR-253-CORE specifies a Wait To Restore range of 5 to 12 + minutes. G.783 defines a 5 to 12 minute Wait To Restore + range in section 5.4.1.1.3, but also allows for a shorter + WTR period in Table 2-1, + WaitToRestore value (MI_WTRtime: 0..(5)..12 minutes). + + This object may not be modified if the associated + apsConfigRowStatus object is equal to active(1)." + DEFVAL { 300 } + ::= { apsConfigEntry 9 } + + + + + + +apsConfigCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the row was + created" + ::= { apsConfigEntry 10 } + +apsConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { apsConfigEntry 11 } + +-- +-- APS Status Table +-- +-- This table provides APS group statistics. +-- + +apsStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides status information about APS groups + that have been configured on the system." + ::= { apsMIBObjects 2 } + +apsStatusEntry OBJECT-TYPE + SYNTAX ApsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsStatusTable." + AUGMENTS { apsConfigEntry } + ::= { apsStatusTable 1 } + +ApsStatusEntry ::= SEQUENCE { + apsStatusK1K2Rcv ApsK1K2, + apsStatusK1K2Trans ApsK1K2, + apsStatusCurrent BITS, + + + + apsStatusModeMismatches Counter32, + apsStatusChannelMismatches Counter32, + apsStatusPSBFs Counter32, + apsStatusFEPLFs Counter32, + apsStatusSwitchedChannel Integer32, + apsStatusDiscontinuityTime TimeStamp +} + +apsStatusK1K2Rcv OBJECT-TYPE + SYNTAX ApsK1K2 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value of the K1 and K2 bytes received on the + protection channel." + ::= { apsStatusEntry 1 } + +apsStatusK1K2Trans OBJECT-TYPE + SYNTAX ApsK1K2 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value of the K1 and K2 bytes transmitted on the + protection channel." + ::= { apsStatusEntry 2 } + +apsStatusCurrent OBJECT-TYPE + SYNTAX BITS { + modeMismatch(0), + channelMismatch(1), + psbf(2), + feplf(3), + extraTraffic(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of the APS group. + + modeMismatch + + Modes other than 1+1 unidirectional monitor protection line + K2 bit 5, which indicates the architecture and K2 bits + 6-8, which indicate if the mode is unidirectional or + bidirectional. A conflict between the current local mode + and the received K2 mode information constitutes a + mode mismatch. + + + + + channelMismatch + + This bit indicates a mismatch between the transmitted K1 + channel and the received K2 channel has been detected. + + psbf + + This bit indicates a Protection Switch Byte Failure (PSBF) is + in effect. This condition occurs when either an inconsistent + APS byte or an invalid code is detected. An inconsistent APS + byte occurs when no three consecutive K1 bytes of the last 12 + successive frames are identical, starting with the last frame + containing a previously consistent byte. An invalid code occurs + when the incoming K1 byte contains an unused code or a code + irrelevant for the specific switching operation (e.g., Reverse + Request while no switching request is outstanding) in three + consecutive frames. An invalid code also occurs when the + incoming K1 byte contains an invalid channel number in three + consecutive frames. + + feplf + + Modes other than 1+1 unidirectional monitor the K1 byte + for Far-End Protection-Line failures. A Far-End + Protection-Line defect is declared based on receiving + SF on the protection line. + + extraTraffic + + This bit indicates whether extra traffic is currently being + accepted on the protection line. " + ::= { apsStatusEntry 3 } + +apsStatusModeMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Mode Mismatch conditions. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + apsStatusDiscontinuityTime." + ::= { apsStatusEntry 4 } + + + + + + +apsStatusChannelMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Channel Mismatch conditions. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + apsStatusDiscontinuityTime." + ::= { apsStatusEntry 5 } + +apsStatusPSBFs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Protection Switch Byte Failure conditions. + This condition occurs when either an inconsistent APS + byte or an invalid code is detected. An inconsistent APS + byte occurs when no three consecutive K1 bytes of the last + 12 successive frames are identical, starting with the last + frame containing a previously consistent byte. An invalid + code occurs when the incoming K1 byte contains an unused + code or a code irrelevant for the specific switching + operation (e.g., Reverse Request while no switching request + is outstanding) in three consecutive frames. An invalid code + also occurs when the incoming K1 byte contains an invalid + channel number in three consecutive frames. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + apsStatusDiscontinuityTime." + ::= { apsStatusEntry 6 } + +apsStatusFEPLFs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Far-End Protection-Line Failure conditions. + This condition is declared based on receiving SF on + the protection line in the K1 byte. + + + + + + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + apsStatusDiscontinuityTime." + ::= { apsStatusEntry 7 } + +apsStatusSwitchedChannel OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is set to the number of the channel that is + currently switched to protection. The value 0 indicates no + channel is switched to protection. The values 1-14 indicate + that working channel is switched to protection." + ::= { apsStatusEntry 8 } + +apsStatusDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this APS group's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this APS group of any Counter32 + object contained in apsStatusTable. If no such + discontinuities have occurred since the last re-initialization + of the local management subsystem, then this object contains + a zero value." + ::= { apsStatusEntry 9 } + +-- +-- APS Map Group +-- +-- Lists the SONET LTE interfaces that may be used to create APS groups. +-- + +apsMap OBJECT IDENTIFIER ::= { apsMIBObjects 3 } + +apsChanLTEs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of SONET LTE interfaces on the system. + Each interface that is included has an ifType value of + sonet(39)." + + + + ::= { apsMap 1 } + +apsMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the SONET LTE interfaces on the system. + Each interface that is listed has an ifType value of + sonet(39)." + ::= { apsMap 2 } + +apsMapEntry OBJECT-TYPE + SYNTAX ApsMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsMapTable." + INDEX { ifIndex } + ::= { apsMapTable 1 } + +ApsMapEntry ::= SEQUENCE { + apsMapGroupName SnmpAdminString, + apsMapChanNumber Integer32 +} + +apsMapGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual name for the APS group which this channel is + included in. If the channel is not part of an APS group + this value is set to a string of size 0. + + When an instance of apsChanConfigIfIndex is set equal to an + instance of ifIndex that has an ifType value of sonet(39), + apsMapGroupName is set equal to the corresponding value of + apsChanConfigGroupName. + + If an instance of ifIndex that has an ifType value of + sonet(39) ceases to be equal to an instance of + apsChanConfigIfIndex, either because of a change in the value + of apsChanConfigIfIndex, or because of row deletion in the + ApsChanConfigTable, apsMapGroupName is set to a string of + size 0." + ::= { apsMapEntry 2 } + + + + +apsMapChanNumber OBJECT-TYPE + SYNTAX Integer32 (-1..14) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is set to a unique channel number within an APS + group. The value 0 indicates the null channel. The values + 1-14 define a working channel. If the SONET LTE is not part + of an APS group this value is set to -1. + + When an instance of apsChanConfigIfIndex is set equal to an + instance of ifIndex that has an ifType value of sonet(39), + apsMapChanNumber is set equal to the corresponding value of + apsChanConfigNumber. + + If an instance of ifIndex that has an ifType value of + sonet(39) ceases to be equal to an instance of + apsChanConfigIfIndex, either because of a change in the + value of apsChanConfigIfIndex, or because of row deletion + in the ApsChanConfigTable, apsMapChanNumber is set to -1." + ::= { apsMapEntry 3 } + +-- +-- APS Channel Configuration Table +-- +-- This table supports the addition, configuration and deletion of +-- channels in APS groups. +-- + +apsChanConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsChanConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the APS channels that have been configured + in APS groups." + ::= { apsMIBObjects 4 } + +apsChanConfigEntry OBJECT-TYPE + SYNTAX ApsChanConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsChanConfigTable." + INDEX {apsChanConfigGroupName, apsChanConfigNumber} + ::= { apsChanConfigTable 1 } + + + + + +ApsChanConfigEntry ::= SEQUENCE { + apsChanConfigGroupName SnmpAdminString, + apsChanConfigNumber Integer32, + apsChanConfigRowStatus RowStatus, + apsChanConfigIfIndex InterfaceIndex, + apsChanConfigPriority INTEGER, + apsChanConfigStorageType StorageType +} + +apsChanConfigGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A textual name for the APS group which this channel is + included in." + ::= { apsChanConfigEntry 1 } + +apsChanConfigNumber OBJECT-TYPE + SYNTAX Integer32 (0..14) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This field is set to a unique channel number within an APS + group. The value 0 indicates the null channel. The values + 1-14 define a working channel. + + This field must be assigned a unique number within the group." + ::= { apsChanConfigEntry 2 } + +apsChanConfigRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this APS channel entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + A row in the apsChanConfigTable may not be created, + deleted, set to notInService or otherwise modified + if the apsChanConfigGroupName value is equal to an + apsConfigName value and the associated apsConfigRowStatus + object is equal to active. However, if the apsConfigRowStatus + object is equal to notInService, a row may be created, deleted + or modified. In other words, a channel may not be added, + deleted or modified if the group is active. + + + + A row may be created with an apsChanConfigGroupName value + that is not equal to any existing instance of apsConfigName. + This action is the initial step in adding a SONET LTE to a + new APS group. + + If this object is set to destroy, the associated instance + of apsMapGroupName will be set to a string of size 0 and + the apsMapChanNumber will be set to -1. The channel status + entry will also be deleted by this action. + + apsChanConfigNumber must be set to a unique channel number + within the APS group. The value 0 indicates the null channel. + The values 1-14 define a working channel. When an attempt is + made to set the corresponding apsConfigRowStatus field to + active the apsChanConfigNumber values of all entries with equal + apsChanConfigGroupName fields must represent a set of + consecutive integer values beginning with 0 or 1, depending on + the architecture of the group, and ending with n, where n is + greater than or equal to 1 and less than or equal to 14. + Otherwise, the error inconsistentValue is returned to the + apsConfigRowStatus set attempt." + ::= { apsChanConfigEntry 3 } + +apsChanConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Interface Index assigned to a SONET LTE. This is an + interface with ifType sonet(39). The value of this object + must be unique among all instances of apsChanConfigIfIndex. + In other words, a particular SONET LTE can only be configured + in one APS group. + + This object cannot be set if the apsChanConfigGroupName + instance associated with this row is equal to an instance of + apsConfigName and the corresponding apsConfigRowStatus object + is set to active. In other words this value cannot be changed + if the APS group is active. However, this value may be changed + if the apsConfigRowStatus value is equal to notInService." + ::= { apsChanConfigEntry 4 } + +apsChanConfigPriority OBJECT-TYPE + SYNTAX INTEGER {low(1), high(2)} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of the channel. + + + + This field determines whether high or low priority + SD and SF codes are used in K1 requests. + + This field is only applicable if the channel is to be included + in a group using the 1:n architecture. It is not applicable if + the channel is to be included in a group using the 1+1 + architecture, and is ignored in that case. + + This object cannot be set if the apsChanConfigGroupName + instance associated with this row is equal to an instance of + apsConfigName and the corresponding apsConfigRowStatus object + is set to active. In other words this value cannot be changed + if the APS group is active. However, this value may be changed + if the apsConfigRowStatus value is equal to notInService." + DEFVAL { low } + ::= { apsChanConfigEntry 5 } + +apsChanConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { apsChanConfigEntry 6 } + +-- +-- APS Command Table +-- +-- This table provides the ability to initiate APS commands. +-- + +apsCommandTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsCommandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows commands to be sent to configured APS + groups." + ::= { apsMIBObjects 5 } + +apsCommandEntry OBJECT-TYPE + SYNTAX ApsCommandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A conceptual row in the apsCommandTable. This row exists only + if the associated apsConfigEntry is active." + INDEX {apsChanConfigGroupName, apsChanConfigNumber} + ::= { apsCommandTable 1 } + +ApsCommandEntry ::= SEQUENCE { + apsCommandSwitch ApsSwitchCommand, + apsCommandControl ApsControlCommand +} + +apsCommandSwitch OBJECT-TYPE + SYNTAX ApsSwitchCommand + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows the initiation of an APS switch command on the + APS group and channel specified by the index values. + + When read this object returns the last command written + or noCmd if no command has been written to this + channel since initialization. The return of the last command + written does not imply that this command is currently in + effect. This request may have been preempted by a higher + priority local or remote request. In order to determine the + current state of the APS group it is necessary to read + the objects apsStatusK1K2Rcv and apsStatusK1K2Trans. + + The value lockoutOfProtection should only be applied to the + protection line channel since that switch command prevents any + of the working channels from switching to the protection line. + Following the same logic, forcedSwitchProtectToWork and + manualSwitchProtectToWork should only be applied to the + protection line channel. + + forcedSwitchWorkToProtect and manualSwitchWorkToProtect + should only be applied to a working channel." + ::= { apsCommandEntry 1 } + +apsCommandControl OBJECT-TYPE + SYNTAX ApsControlCommand + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows the initiation of an APS control command on the + APS group and channel specified by the index values. + + + + + + + When read this object returns the last command written or + noCmd if no command has been written to this channel since + initialization. + + This object does not apply to the protection line." + ::= { apsCommandEntry 2 } + +-- +-- APS Channel Status Table +-- +-- This table provides APS channel statistics. +-- + +apsChanStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApsChanStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains status information for all SONET LTE + interfaces that are included in APS groups." + ::= { apsMIBObjects 6 } + +apsChanStatusEntry OBJECT-TYPE + SYNTAX ApsChanStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the apsChanStatusTable." + AUGMENTS { apsChanConfigEntry } + ::= { apsChanStatusTable 1 } + +ApsChanStatusEntry ::= SEQUENCE { + apsChanStatusCurrent BITS, + apsChanStatusSignalDegrades Counter32, + apsChanStatusSignalFailures Counter32, + apsChanStatusSwitchovers Counter32, + apsChanStatusLastSwitchover TimeStamp, + apsChanStatusSwitchoverSeconds Counter32, + apsChanStatusDiscontinuityTime TimeStamp +} + +apsChanStatusCurrent OBJECT-TYPE + SYNTAX BITS { + lockedOut(0), + sd(1), + sf(2), + switched(3), + wtr(4) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current state of the port. + + lockedOut + + This bit, when applied to a working channel, indicates that + the channel is prevented from switching to the protection + line. When applied to the null channel, this bit indicates + that no working channel may switch to the protection line. + + sd + + A signal degrade condition is in effect. + + sf + + A signal failure condition is in effect. + + switched + + The switched bit is applied to a working channel if that + channel is currently switched to the protection line. + + wtr + + A Wait-to-Restore state is in effect." + ::= { apsChanStatusEntry 1 } + +apsChanStatusSignalDegrades OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Signal Degrade conditions. This condition + occurs when the line Bit Error Rate exceeds the currently + configured value of the relevant instance of + apsConfigSdBerThreshold. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + apsChanStatusDiscontinuityTime." + + ::= { apsChanStatusEntry 2 } + + + + +apsChanStatusSignalFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of Signal Failure conditions that have been + detected on the incoming signal. This condition occurs + when a loss of signal, loss of frame, AIS-L or a Line + bit error rate exceeding the currently configured value of + the relevant instance of apsConfigSfBerThreshold. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + apsChanStatusDiscontinuityTime." + + ::= { apsChanStatusEntry 3 } + +apsChanStatusSwitchovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When queried with index value apsChanConfigNumber other than + 0, this object will return the number of times this channel + has switched to the protection line. + + When queried with index value apsChanConfigNumber set to 0, + which is the protection line, this object will return the + number of times that any working channel has been switched + back to the working line from this protection line. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + apsChanStatusDiscontinuityTime." + + ::= { apsChanStatusEntry 4 } + +apsChanStatusLastSwitchover OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When queried with index value apsChanConfigNumber other than + 0, this object will return the value of sysUpTime when this + channel last completed a switch to the protection line. If + + + + + this channel has never switched to the protection line, the + value 0 will be returned. + + When queried with index value apsChanConfigNumber set to 0, + which is the protection line, this object will return the + value of sysUpTime the last time that a working channel was + switched back to the working line from this protection line. + If no working channel has ever switched back to the working + line from this protection line, the value 0 will be returned." + + ::= { apsChanStatusEntry 5 } + +apsChanStatusSwitchoverSeconds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative Protection Switching Duration (PSD) time in + seconds. For a working channel, this is the cumulative number + of seconds that service was carried on the protection line. + For the protection line, this is the cumulative number of + seconds that the protection line has been used to carry any + working channel traffic. This information is only valid if + revertive switching is enabled. The value 0 will be returned + otherwise. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + apsChanStatusDiscontinuityTime. For example, if the value + of an instance of apsChanStatusSwitchoverSeconds changes + from a non-zero value to zero due to revertive switching + being disabled, it is expected that the corresponding + value of apsChanStatusDiscontinuityTime will be updated + to reflect the time of the configuration change. + " + ::= { apsChanStatusEntry 6 } + +apsChanStatusDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this channel's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this channel of any Counter32 + object contained in apsChanStatusTable. If no such + + + + discontinuities have occurred since the last re-initialization + of the local management subsystem, then this object contains + a zero value." + ::= { apsChanStatusEntry 7 } + +apsNotificationEnable OBJECT-TYPE + SYNTAX BITS { + switchover(0), + modeMismatch(1), + channelMismatch(2), + psbf(3), + feplf(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Provides the ability to enable and disable notifications + defined in this MIB. + + switchover + + Indicates apsEventSwitchover notifications + should be generated. + + modeMismatch + + Indicates apsEventModeMismatch notifications + should be generated. + + channelMismatch + + Indicates apsEventChannelMismatch notifications + should be generated. + + psbf + + Indicates apsEventPSBF notifications + should be generated. + + feplf + + Indicates apsEventFEPLF notifications + should be generated. " + DEFVAL { { } } + ::= { apsMIBObjects 7 } + +-- +-- APS EVENTS + + + +-- + +apsNotificationsPrefix OBJECT IDENTIFIER + ::= { apsMIBNotifications 0 } + +apsEventSwitchover NOTIFICATION-TYPE + OBJECTS { apsChanStatusSwitchovers, apsChanStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventSwitchover notification is sent when the + value of an instance of apsChanStatusSwitchovers increments." + ::= { apsNotificationsPrefix 1 } + +apsEventModeMismatch NOTIFICATION-TYPE + OBJECTS { apsStatusModeMismatches, apsStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventModeMismatch notification is sent when the + value of an instance of apsStatusModeMismatches increments." + ::= { apsNotificationsPrefix 2 } + +apsEventChannelMismatch NOTIFICATION-TYPE + OBJECTS { apsStatusChannelMismatches, apsStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventChannelMismatch notification is sent when the + value of an instance of apsStatusChannelMismatches increments." + ::= { apsNotificationsPrefix 3 } + +apsEventPSBF NOTIFICATION-TYPE + OBJECTS { apsStatusPSBFs, apsStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventPSBF notification is sent when the + value of an instance of apsStatusPSBFs increments." + ::= { apsNotificationsPrefix 4 } + +apsEventFEPLF NOTIFICATION-TYPE + OBJECTS { apsStatusFEPLFs, apsStatusCurrent } + STATUS current + DESCRIPTION + "An apsEventFEPLFs notification is sent when the + value of an instance of apsStatusFEPLFs increments." + ::= { apsNotificationsPrefix 5 } + +-- conformance information + + + + + +apsGroups OBJECT IDENTIFIER ::= { apsMIBConformance 1 } +apsCompliances OBJECT IDENTIFIER ::= { apsMIBConformance 2 } + +apsFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented with support for read-create, then + such an implementation can claim read/write compliance. Linear + APS groups can then be both monitored and configured with this + MIB. + + Note that An agent is not required to process SNMP Set Requests + that affect multiple control objects within this MIB. This is + intended to simplify the processing of Set Requests for the + various control tables by eliminating the possibility that a + single Set PDU will contain multiple varbinds which are in + conflict. " + + MODULE + MANDATORY-GROUPS { apsConfigGeneral, apsStatusGeneral, + apsChanGeneral } + + OBJECT apsConfigRowStatus + SYNTAX INTEGER { active(1) } + WRITE-SYNTAX INTEGER { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + OBJECT apsChanConfigRowStatus + SYNTAX INTEGER { active(1) } + WRITE-SYNTAX INTEGER { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + GROUP apsConfigWtr + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups supporting a configurable + WTR period." + + GROUP apsCommandOnePlusOne + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + + + + APS 1+1 architecture and supporting set operations." + + GROUP apsCommandOneToN + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1:n architecture and supporting set operations." + + GROUP apsChanOneToN + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1:n architecture." + + GROUP apsTotalsGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + GROUP apsMapGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + GROUP apsEventGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + ::= { apsCompliances 1 } + +-- +-- Read-Only Compliance +-- + +apsReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for read-create + (i.e. in read-only mode), then that implementation can claim + read-only compliance. In that case, linear APS groups can be + monitored but cannot be configured with this MIB." + + MODULE + MANDATORY-GROUPS { apsConfigGeneral, apsStatusGeneral, + apsChanGeneral } + + + + OBJECT apsConfigMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigRevert + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigDirection + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigExtraTraffic + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigSdBerThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigSfBerThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigWaitToRestore + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsConfigRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status + that needs to be supported." + + OBJECT apsConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsChanConfigIfIndex + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsChanConfigPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsChanConfigRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status + that needs to be supported." + + OBJECT apsChanConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT apsNotificationEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP apsConfigWtr + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups supporting a configurable + WTR period." + + GROUP apsCommandOnePlusOne + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1+1 architecture and supporting set operations." + + GROUP apsCommandOneToN + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1:n architecture and supporting set operations." + + GROUP apsChanOneToN + + + + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations. The information is + applicable to groups implementing the linear + APS 1:n architecture." + + GROUP apsTotalsGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + GROUP apsMapGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + GROUP apsEventGroup + DESCRIPTION + "Implementation of this group is optional for all + linear APS implementations." + + ::= { apsCompliances 2 } + +-- units of conformance + +apsConfigGeneral OBJECT-GROUP + OBJECTS + { + apsConfigMode, + apsConfigRevert, + apsConfigDirection, + apsConfigExtraTraffic, + apsConfigSdBerThreshold, + apsConfigSfBerThreshold, + apsConfigCreationTime, + apsConfigRowStatus, + apsConfigStorageType, + apsNotificationEnable + } + STATUS current + DESCRIPTION + "A collection of apsConfigTable objects providing configuration + information applicable to all linear APS groups." + ::= { apsGroups 1 } + +apsConfigWtr OBJECT-GROUP + OBJECTS + { + + + + apsConfigWaitToRestore + } + STATUS current + DESCRIPTION + "The apsConfigTable object that provides information which is + applicable to groups supporting a configurable WTR period." + ::= { apsGroups 2 } + +-- If set operations are not supported neither of the following two +-- groups are implemented. If sets are supported only one of these +-- groups is implemented for a linear APS group instance. + +apsCommandOnePlusOne OBJECT-GROUP + OBJECTS + { + apsCommandSwitch + } + STATUS current + DESCRIPTION + "The apsCommandTable object which is applicable to groups + implementing the linear APS 1+1 architecture. Also, set + operations must be supported." + ::= { apsGroups 3 } + +apsCommandOneToN OBJECT-GROUP + OBJECTS + { + apsCommandSwitch, + apsCommandControl + } + STATUS current + DESCRIPTION + "A collection of apsCommandTable objects which are applicable to + groups implementing the linear APS 1:n architecture. Also, set + operations must be supported." + ::= { apsGroups 4 } + +apsStatusGeneral OBJECT-GROUP + OBJECTS + { + apsStatusK1K2Rcv, + apsStatusK1K2Trans, + apsStatusCurrent, + apsStatusModeMismatches, + apsStatusChannelMismatches, + apsStatusPSBFs, + apsStatusFEPLFs, + apsStatusSwitchedChannel, + + + + apsStatusDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of apsStatusTable objects providing status + information applicable to all linear APS groups." + ::= { apsGroups 5 } + +apsChanGeneral OBJECT-GROUP + OBJECTS + { + apsChanConfigIfIndex, + apsChanConfigRowStatus, + apsChanConfigStorageType, + apsChanStatusCurrent, + apsChanStatusSignalDegrades, + apsChanStatusSignalFailures, + apsChanStatusSwitchovers, + apsChanStatusLastSwitchover, + apsChanStatusSwitchoverSeconds, + apsChanStatusDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of channel objects providing information + applicable to all linear APS channels." + ::= { apsGroups 6 } + +apsChanOneToN OBJECT-GROUP + OBJECTS + { + apsChanConfigPriority + } + STATUS current + DESCRIPTION + "The apsChanConfigTable object that provides information which + is only applicable to groups implementing the linear APS 1:n + architecture." + ::= { apsGroups 7 } + +apsTotalsGroup OBJECT-GROUP + OBJECTS + { + apsConfigGroups, + apsChanLTEs + } + STATUS current + DESCRIPTION + + + + "A collection of objects providing optional counts of configured + APS groups and SONET LTE interfaces." + ::= { apsGroups 8 } + +apsMapGroup OBJECT-GROUP + OBJECTS + { + apsMapGroupName, + apsMapChanNumber + } + STATUS current + DESCRIPTION + "A collection of apsMapTable objects providing a mapping + from sonet(39) InterfaceIndex to group name and channel + number for assigned APS channels and a list of unassigned + sonet(39) interfaces." + ::= { apsGroups 9 } + +apsEventGroup NOTIFICATION-GROUP + NOTIFICATIONS {apsEventSwitchover, apsEventModeMismatch, + apsEventChannelMismatch, apsEventPSBF, + apsEventFEPLF } + STATUS current + DESCRIPTION + "A collection of SONET linear APS notifications." + ::= { apsGroups 10 } + +END diff --git a/mibs/ietf/ARC-MIB b/mibs/ietf/ARC-MIB new file mode 100644 index 0000000..66e5a63 --- /dev/null +++ b/mibs/ietf/ARC-MIB @@ -0,0 +1,423 @@ +ARC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, RowStatus, StorageType + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ResourceId + FROM ALARM-MIB; -- [RFC3877] + +arcMibModule MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@ietf.org + Subscribe: disman-request@ietf.org + http://www.ietf.org/html.charters/disman-charter.html + + Chair: Randy Presuhn + E-mail: randy_presuhn@mindspring.com + + Editor: Hing-Kam Lam + Lucent Technologies, 4C-616 + 101 Crawfords Corner Road + + + + Holmdel, NJ 07733 + USA + Tel: +1 732 949 8338 + E-mail: hklam@lucent.com" + + DESCRIPTION + "The MIB module describes the objects for controlling a resource + in reporting alarm conditions that it detects. + + Copyright (C) The Internet Society (2004). This version + of this MIB module is part of RFC 3878; see the RFC + itself for full legal notices." + + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3878." + ::={ mib-2 117 } + +------------------ +-- TEXTUAL-CONVENTION +------------------ + +IANAItuProbableCauseOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC can take any value of IANAItuProbableCause or 0. + IANAItuProbableCause is defined in the IANA-ITU-ALARM-TC + module, which is maintained at the IANA web site and + published in the Alarm MIB document (see RFC 3877)." + REFERENCE + "IANA-ITU-ALARM-TC MIB module as maintained at the IANA web site. + The initial module was also published in RFC 3877." +-- + SYNTAX INTEGER (0..2147483647) + +------------------ +-- MIB Objects +------------------ + +arcTimeIntervals OBJECT IDENTIFIER ::= { arcMibModule 1 } +arcObjects OBJECT IDENTIFIER ::= { arcMibModule 2 } + +arcTITimeInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This variable indicates the time interval used for the nalmTI + state, in units of second. It is a pre-defined length of time + in which the resource will stay in the nalmTI state before + transition into the alm state. + + Instances of this object SHOULD persist across agent restarts." + ::= { arcTimeIntervals 1 } + +arcCDTimeInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the time interval used for the nalmQICD + state, in units of second. It is a pre-defined length of time + in which the resource will stay in the nalmQICD state before + transition into the alm state after it is problem-free. + + Instances of this object SHOULD persist across agent restarts." + ::= { arcTimeIntervals 2 } + +arcTable OBJECT-TYPE + SYNTAX SEQUENCE OF ArcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Alarm Reporting Control (ARC) settings on the system. + + Alarm Reporting Control is a feature that provides an automatic + in-service provisioning capability. Alarm reporting is turned + off on a per-resource basis for a selective set of potential + alarm conditions to allow sufficient time for customer testing + and other maintenance activities in an 'alarm free' state. + Once a resource is ready for service, alarm reporting is + automatically or manually turned on. + + Functional description and requirements of Alarm Reporting + Control are defined in ITU-T Recommendation M.3100 Amendment 3 + [M.3100 Amd3]." + + REFERENCE + "ITU Recommendation M.3100 Amendment 3, 'Generic Network + Information Model', January 2001." + ::= { arcObjects 1 } + +arcEntry OBJECT-TYPE + SYNTAX ArcEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains information about an ARC setting + of a resource in the system. + + Implementation need to be aware that if the total size of + arcIndex and arcNotificationId exceeds 114 sub-IDs, then OIDs + of column instances in this table will have more than 128 + sub-IDs and cannot be access using SNMPv1, SNMPv2c, or snmpv3." + + INDEX { arcIndex, arcAlarmType, arcNotificationId } + ::= { arcTable 1 } + +ArcEntry ::= + SEQUENCE { + arcIndex ResourceId, + arcAlarmType IANAItuProbableCauseOrZero, + arcNotificationId OBJECT IDENTIFIER, + arcState INTEGER, + arcNalmTimeRemaining Unsigned32, + arcRowStatus RowStatus, + arcStorageType StorageType + } + +arcIndex OBJECT-TYPE + SYNTAX ResourceId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies a resource, which is under the + arcState's control for the associated arcAlarmType. + + For example, if the resource is an interface, this object will + point to an instance of interface, e.g., ifIndex.1." + ::= { arcEntry 1 } + +arcAlarmType OBJECT-TYPE + SYNTAX IANAItuProbableCauseOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the alarm condition type controlled by the + arcState. It specifies the value 0 or a value of + IANAItuProbableCause that is applicable to the resource. + IANAItuProbableCause is defined in the IANA-ITU-ALARM-TC + module in the Alarm MIB document. + + + + + The value of zero (0) implies any probable causes that are + applicable to the resource. Usually, the applicable probable + causes of a resource are specified in the resource-specific mib." + ::= { arcEntry 2 } + +arcNotificationId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the type of notification to be suppressed. + The notification type identified should be the one normally used + by the resource for reporting its alarms. When the value of 0.0 is + specified for this object, it implies all applicable notification + types." + ::= { arcEntry 3 } + +arcState OBJECT-TYPE + SYNTAX INTEGER { + nalm (1), + nalmQI (2), + nalmTI (3), + nalmQICD (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defined in M.3100 Amendment 3 [M.3100 Amd3], there are five + ARC states: alm, nalm, nalmQI, nalmQICD, and nalmTI. + + alm: Alarm reporting is turned on (i.e., is allowed). + nalm: Alarm reporting is turned off (i.e., not allowed). + nalmQI: nalm - Qualified Inhibit. Alarm reporting is + turned off until the managed entity is qualified + problem-free for an optional persistence interval. + Problem-free means that the condition corresponding + to the specified alarm type is cleared. + nalmQICD: nalmQI - Count down. This is a substate of nalmQI + and performs the persistence timing countdown + function after the managed entity is qualified + problem-free. + nalmTI: nalm - Timed Inhibit. Alarm reporting is turned + off for a specified time interval. + + alm may transition to nalm, nalmQI or nalmTI by management request. + + nalm may transition to alm, nalmQI or nalmTI by management request. + + + + + nalmQI may transition to nalm or alm by management request. + + nalmQI may transition to alm automatically + if qualified problem-free (if nalmQICD is not supported) or + if the CD timer expired (if nalmQICD is supported) + + nalmTI may transition to alm or nalm by management request. + + nalmTI may transition to alm automatically if the TI timer expired. + + Further details of ARC state transitions are defined in Figure 3 + of M.3100 Amd3 [M.3100 Amd3]. + + According to the requirements in M.3100 Amd3, a resource + supporting the ARC feature shall support the alm state and at + least one of the nalm, nalmTI, and nalmQI states. The nalmQICD + state is an optional substate of nalmQI. + + The arcState object controls the alarm reporting state of a + resource. Note that the state alm (alarm reporting is allowed) is + not listed in the enumeration of the value of this object. However, + this state is implicitly supported by the mib. + Once a resource enters the normal reporting mode (i.e., in the alm + state) for the specified alarm type, the corresponding + row will be automatically deleted from the arc table. + Also the manual setting of arcState to alm can be achieved through + setting the RowStatus object to 'destroy'. + + The nalamQICD state is a transitional state from nalmQI to alm. It + is optional depending on the resource type and the implementation + of the resource. If it is supported, before the state + transitions from nalmQI to alm, a count down period is activated + for a duration set by the object arcNalmCDTimeInterval. When the + time is up, the arcState transitions to alm." + + ::= { arcEntry 4 } + +arcNalmTimeRemaining OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the time remaining in the nalmTI state + or the nalmQICD state, in units of second. + + At the moment the resource enters the nalmTI state, this variable + will have the initial value equal to the value of + + + + arcNalmTITimeInterval and then starts decrementing as time goes by. + + Similarly at the moment the resource enters the nalmQICD state, + this variable will have the initial value equal to the value of + arcNalmCDTimeInterval and then starts decrementing as time goes by. + + This variable is read-create and thus will allow the manager to + write (extend or shorten), as needed, the remaining time when the + resource is in the nalmTI or nalmQICD state. + + If this variable is supported and the resource is currently not in + the nalmTI nor nalmQICD state, the value of this variable shall + equal to zero." + ::= { arcEntry 5 } + +arcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting a conceptual + row of the arcTable. It is used to create and delete an arc + setting. + + Setting RowStatus to createAndGo or createAndWait implies creating + a new ARC setting for the specified resource and alarm type. + Setting RowStatus to destroy implies removing the ARC setting and + thus has the effect of resuming normal reporting behaviour of the + resource for the alarm type. + + Only the objects arcState, arcNalmTimeRemaining, and arcRowStatus + can be updated when a row is active. All the objects, except + arcNalmTimeRemaining, must be set before the row can be activated." + ::= { arcEntry 6 } + +arcStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' must + allow write-access at a minimum to arcState. + Note that arcState must allow change by management request. + Therefore, no row can be created with 'readOnly'. + If a set operation tries to set the value to 'readOnly', + then an 'inconsistentValue' error must be returned." + DEFVAL { nonVolatile } + + + + ::= { arcEntry 7} + +-------------------------- +-- conformance information +-------------------------- + +arcConformance OBJECT IDENTIFIER ::= { arcMibModule 3 } + +arcCompliances OBJECT IDENTIFIER ::= { arcConformance 1 } + +arcCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems supporting + the ARC MIB module." + + MODULE -- this module + MANDATORY-GROUPS { + arcSettingGroup + } + + OBJECT arcStorageType + WRITE-SYNTAX StorageType { + volatile(2), + nonVolatile(3), + permanent(4) + } + DESCRIPTION + "Support for value 'other' is not required. + The arcState object must allow change by management + request. Therefore, no row can be created with + 'readOnly'." + + GROUP arcTIGroup + DESCRIPTION + "This group is REQUIRED for ARC settings + that provide the Time Inhibit (TI) function." + + GROUP arcQICDGroup + DESCRIPTION + "This group is REQUIRED for ARC settings + that provide the Quality Inhibit (QI) Count Down (CD) + function." + + ::= { arcCompliances 1 } + +arcGroups OBJECT IDENTIFIER ::= { arcConformance 2 } + + + + +arcSettingGroup OBJECT-GROUP + OBJECTS { + arcState, + arcRowStatus, + arcStorageType + } + STATUS current + DESCRIPTION + "A collection of objects applicable to + basic ARC setting." + ::= { arcGroups 1} + +arcTIGroup OBJECT-GROUP + OBJECTS { + arcTITimeInterval, + arcNalmTimeRemaining + } + STATUS current + DESCRIPTION + "A collection of objects applicable to + ARC setting that support the Time Inhibit (TI) + function." + ::= { arcGroups 2} + +arcQICDGroup OBJECT-GROUP + OBJECTS { + arcCDTimeInterval, + arcNalmTimeRemaining + } + STATUS current + DESCRIPTION + "A collection of objects applicable to + ARC setting that support the Quality Inhibit (QI) + Count Down (CD) function." + ::= { arcGroups 3} + +END diff --git a/mibs/ietf/ATM-ACCOUNTING-INFORMATION-MIB b/mibs/ietf/ATM-ACCOUNTING-INFORMATION-MIB new file mode 100644 index 0000000..ecadae9 --- /dev/null +++ b/mibs/ietf/ATM-ACCOUNTING-INFORMATION-MIB @@ -0,0 +1,404 @@ +ATM-ACCOUNTING-INFORMATION-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + mib-2, Integer32, Counter64 FROM SNMPv2-SMI + DisplayString, DateAndTime FROM SNMPv2-TC + AtmAddr FROM ATM-TC-MIB; + + +atmAccountingInformationMIB MODULE-IDENTITY + LAST-UPDATED "9611052000Z" + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO " + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for identifying items of accounting + information which are applicable to ATM connections." + ::= { mib-2 59 } + + +atmAcctngMIBObjects OBJECT IDENTIFIER ::= + { atmAccountingInformationMIB 1 } + + +-- Definitions of objects for use in specifying ATM accounting +-- data to be collected + +atmAcctngDataObjects OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identifier defines a subtree under which various + objects are defined such that a set of objects to be + collected as ATM accounting data can be specified as a + (subtree, list) tuple using this identifier as the subtree." + ::= { atmAcctngMIBObjects 1 } + +-- Objects defined under the atmAcctngDataObjects subtree +-- +-- In each case the semantics of the object are interpreted with +-- respect to the creation/storage of an accounting record for a +-- particular connection on a particular interface. + +atmAcctngConnectionType OBJECT-TYPE + SYNTAX INTEGER { pvc(1), + pvp(2), + svcIncoming(3), + svcOutgoing(4), + svpIncoming(5), + svpOutgoing(6), + spvcInitiator(7), + spvcTarget(8), + spvpInitiator(9), + spvpTarget(10) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of connection." + ::= { atmAcctngDataObjects 1 } + +atmAcctngCastType OBJECT-TYPE + SYNTAX INTEGER { p2p(1), p2mp(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An indication of whether the connection is point-to-point + or point-to-multipoint." + ::= { atmAcctngDataObjects 2 } + +atmAcctngIfName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A textual name for the interface on which the data for the + connection was collected. If the local SNMP agent supports + the object ifName, the value of this object must be + identical to that of ifName in the conceptual row of the + ifTable corresponding to this interface." + ::= { atmAcctngDataObjects 3 } + +atmAcctngIfAlias OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 'alias' name for the interface as specified by a + network manager, e.g., via a management set operation to + modify the relevant instance of the ifAlias object. Note + that in contrast to ifIndex, ifAlias provides a non-volatile + 'handle' for the interface, the value of which is retained + across agent reboots." + ::= { atmAcctngDataObjects 4 } + +atmAcctngVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI used for the connection." + ::= { atmAcctngDataObjects 5 } + +atmAcctngVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI used for the connection." + ::= { atmAcctngDataObjects 6 } + +atmAcctngCallingParty OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's calling party. If unknown (e.g., for a + PVC), then the value of this object is the zero-length + string." + ::= { atmAcctngDataObjects 7 } + +atmAcctngCalledParty OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's called party. If unknown (e.g., for a + PVC), then the value of this object is the zero-length + string." + ::= { atmAcctngDataObjects 8 } + +atmAcctngCallReference OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..3)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's call reference value (e.g., from Q.2931). + If unknown (e.g., for a PVC), then the value of this object + is the zero-length string." + ::= { atmAcctngDataObjects 9 } + +atmAcctngStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The time when the connection was established." + ::= { atmAcctngDataObjects 10 } + +atmAcctngCollectionTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The time at which the data in this record was collected." + ::= { atmAcctngDataObjects 11 } + +atmAcctngCollectMode OBJECT-TYPE + SYNTAX INTEGER { onRelease(1), + periodically(2), + onCommand(3) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reason why this connection data was collected." + ::= { atmAcctngDataObjects 12 } + +atmAcctngReleaseCause OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the connection data was collected because of the release + of an SVC, then this is the cause code in the Release + message for the connection; otherwise, this object has the + value zero." + ::= { atmAcctngDataObjects 13 } + +atmAcctngServiceCategory OBJECT-TYPE + SYNTAX INTEGER { other(1), cbr(2), vbrRt(3), vbrNrt(4), + abr(5), ubr(6), unknown(7) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's service category." + ::= { atmAcctngDataObjects 14 } + +atmAcctngTransmittedCells OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of cells, including OAM cells, transmitted by + this switch on this connection." + ::= { atmAcctngDataObjects 15 } + +atmAcctngTransmittedClp0Cells OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of cells with CLP=0, including OAM cells, + transmitted by this switch on this connection." + ::= { atmAcctngDataObjects 16 } + +atmAcctngReceivedCells OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of cells, including OAM cells, received by this + switch on this connection." + ::= { atmAcctngDataObjects 17 } + +atmAcctngReceivedClp0Cells OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of cells with CLP=0, including OAM cells, + received by this switch on this connection." + ::= { atmAcctngDataObjects 18 } + +atmAcctngTransmitTrafficDescriptorType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The traffic descriptor type (as defined in RFC 1695 and its + successors) in the direction in which the switch transmits + cells on the connection." + REFERENCE + "See atmTrafficDescriptorTypes in ATM-MIB.my in RFC 1695 and + its successors." + ::= { atmAcctngDataObjects 19 } + +atmAcctngTransmitTrafficDescriptorParam1 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 20 } + +atmAcctngTransmitTrafficDescriptorParam2 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The second traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 21 } + +atmAcctngTransmitTrafficDescriptorParam3 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The third traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 22 } + +atmAcctngTransmitTrafficDescriptorParam4 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The fourth traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 23 } + +atmAcctngTransmitTrafficDescriptorParam5 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The fifth traffic descriptor parameter in the direction in + which this switch transmits cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngTransmitTrafficDescriptorType." + ::= { atmAcctngDataObjects 24 } + +atmAcctngReceiveTrafficDescriptorType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The traffic descriptor type (as defined in RFC 1695 and its + successors) in the direction in which this switch receives + cells on this connection." + REFERENCE + "See atmTrafficDescriptorTypes in ATM-MIB.my in RFC 1695 and + its successors." + ::= { atmAcctngDataObjects 25 } + +atmAcctngReceiveTrafficDescriptorParam1 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 26 } + +atmAcctngReceiveTrafficDescriptorParam2 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The second traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 27 } + +atmAcctngReceiveTrafficDescriptorParam3 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The third traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 28 } + +atmAcctngReceiveTrafficDescriptorParam4 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The fourth traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 29 } + +atmAcctngReceiveTrafficDescriptorParam5 OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The fifth traffic descriptor parameter in the direction in + which this switch receives cells on this connection. + Interpretation of this parameter is dependent on the value + of atmAcctngReceiveTrafficDescriptorType." + ::= { atmAcctngDataObjects 30 } + +atmAcctngCallingPartySubAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's calling party sub-address. If the + connection has no calling party sub-address, or it's value + is unknown, then the value of this object is the zero-length + string." + ::= { atmAcctngDataObjects 31 } + +atmAcctngCalledPartySubAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The connection's called party sub-address. If the + connection has no called party sub-address, or it's value is + unknown, then the value of this object is the zero-length + string." + ::= { atmAcctngDataObjects 32 } + +atmAcctngRecordCrc16 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the CRC-16 checksum (as defined by ISO 3309 + (HDLC) and/or ITU X.25) calculated over the accounting + record containing this object. + + While the mechanism for calculating/encoding the checksum + value is specific to the method of encoding the accounting + record, an accounting record containing this object is + typically generated by initializing the value of this object + to the all-zeros string ('0000'H), with the location of + these zeros being saved. After generating the record, the + checksum is calculated over the whole connection record and + then the all-zeros value is overwritten (at the saved + location) by the calculated value of the checksum." + ::= { atmAcctngDataObjects 33 } +END diff --git a/mibs/ietf/ATM-MIB b/mibs/ietf/ATM-MIB new file mode 100644 index 0000000..c5b84f1 --- /dev/null +++ b/mibs/ietf/ATM-MIB @@ -0,0 +1,3020 @@ +ATM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Integer32, IpAddress, mib-2 + FROM SNMPv2-SMI + DisplayString, RowStatus, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + InterfaceIndex, ifIndex + FROM IF-MIB + AtmAddr, AtmConnKind, AtmConnCastType, + AtmServiceCategory, AtmTrafficDescrParamIndex, + AtmVpIdentifier, AtmVcIdentifier, + AtmVorXAdminStatus, AtmVorXLastChange, + AtmVorXOperStatus, atmNoClpNoScr + FROM ATM-TC-MIB; + + +atmMIB MODULE-IDENTITY + LAST-UPDATED "9810191200Z" + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO + " Kaj Tesink + Postal: Bellcore + 331 Newman Springs Road + Red Bank, NJ 07701 + Tel: 732-758-5254 + Fax: 732-758-2269 + E-mail: kaj@bellcore.com" + DESCRIPTION + "This is the MIB Module for ATM and AAL5-related + objects for managing ATM interfaces, ATM virtual + links, ATM cross-connects, AAL5 entities, and + and AAL5 connections." + REVISION "9810191200Z" + DESCRIPTION + "The initial revision of this module was published + as RFC 1695. Key revisions include: + o Textual Conventions and OBJECT IDENTITIES have + been moved to a separate MIB module. + o Applicability of objects to PVCs, SVCs and Soft + PVCs has been clarified. + o DEFVAL clauses have been added. + o The relationship of ifIndex values with different + layers and sublayers related to ATM has been + clarified. + o atmTrafficQosClass has been deprecated + and replaced with atmServiceCategory. + o atmInterfaceCurrentMaxVpiBits and + atmInterfaceCurrentMaxVciBits have been added with + a description on their relationship with other + objects. + o atmInterfaceAddressType and atmInterfaceAdminAddress + have been deprecated and replaced by + atmInterfaceSubscrAddress. + o atmInterfaceTCAlarmState has been clarified. + o atmTrafficDescrParamIndexNext has been introduced + in order to provide a manager a free + atmTrafficDescrParamIndex value. + o The atmTrafficFrameDiscard capability has been added. + o A connection topology type (atmVpl/VclCastType) and + a call control type (atmVpl/VclConnKind) have been + added. + o aal2 has been added to atmVccAalType." + REVISION "9406072245Z" + DESCRIPTION + "The RFC1695 version of this MIB module." + ::= { mib-2 37 } + + +atmMIBObjects OBJECT IDENTIFIER ::= {atmMIB 1} + +-- {atmMIBObjects 1} has been moved to a separate +-- specification [19]. + + +-- This ATM MIB Module consists of the following tables: +-- (1) ATM Interface configuration table +-- (2) ATM Interface DS3 PLCP table +-- (3) ATM Interface TC Sublayer table + +-- (4) Atm Traffic Descriptor table +-- (5) ATM Interface VPL configuration table +-- (6) ATM Interface VCL configuration table +-- (7) ATM VP Cross Connect table (for PVCs) +-- (8) ATM VC Cross Connect table (for PVCs) +-- (9) ATM Interface AAL5 VCC performance statistics +-- table + +-- ATM Interface Configuration Parameters Table + +-- This table contains ATM specific +-- configuration information associated with +-- an ATM interface beyond those +-- supported using the ifTable. + + + + +atmInterfaceConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM local interface + configuration parameters, one entry per ATM + interface port." + ::= { atmMIBObjects 2 } + +atmInterfaceConfEntry OBJECT-TYPE + SYNTAX AtmInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains ATM interface configuration + parameters and state variables and is indexed + by ifIndex values of ATM interfaces." + INDEX { ifIndex } + ::= { atmInterfaceConfTable 1} + +AtmInterfaceConfEntry ::= SEQUENCE { + atmInterfaceMaxVpcs INTEGER, + atmInterfaceMaxVccs INTEGER, + atmInterfaceConfVpcs INTEGER, + atmInterfaceConfVccs INTEGER, + atmInterfaceMaxActiveVpiBits INTEGER, + atmInterfaceMaxActiveVciBits INTEGER, + atmInterfaceIlmiVpi AtmVpIdentifier, + atmInterfaceIlmiVci AtmVcIdentifier, + atmInterfaceAddressType INTEGER, + atmInterfaceAdminAddress AtmAddr, + atmInterfaceMyNeighborIpAddress IpAddress, + atmInterfaceMyNeighborIfName DisplayString, + atmInterfaceCurrentMaxVpiBits INTEGER, + atmInterfaceCurrentMaxVciBits INTEGER, + atmInterfaceSubscrAddress AtmAddr + } + + +atmInterfaceMaxVpcs OBJECT-TYPE + SYNTAX INTEGER (0..4096) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of VPCs (PVPCs and SVPCs) + supported at this ATM interface. At the ATM UNI, + the maximum number of VPCs (PVPCs and SVPCs) + ranges from 0 to 256 only." + ::= { atmInterfaceConfEntry 1} + +atmInterfaceMaxVccs OBJECT-TYPE + SYNTAX INTEGER (0..65536) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of VCCs (PVCCs and SVCCs) + supported at this ATM interface." + ::= { atmInterfaceConfEntry 2} + +atmInterfaceConfVpcs OBJECT-TYPE + SYNTAX INTEGER (0..4096) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of VPCs (PVPC, Soft PVPC and SVPC) + currently in use at this ATM interface. It includes + the number of PVPCs and Soft PVPCs that are configured + at the interface, plus the number of SVPCs + that are currently established at the + interface. + + At the ATM UNI, the configured number of + VPCs (PVPCs and SVPCs) can range from + 0 to 256 only." + ::= { atmInterfaceConfEntry 3} + +atmInterfaceConfVccs OBJECT-TYPE + SYNTAX INTEGER (0..65536) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of VCCs (PVCC, Soft PVCC and SVCC) + currently in use at this ATM interface. It includes + the number of PVCCs and Soft PVCCs that are configured + at the interface, plus the number of SVCCs + that are currently established at the + interface." + ::= { atmInterfaceConfEntry 4} + +atmInterfaceMaxActiveVpiBits OBJECT-TYPE + SYNTAX INTEGER (0..12) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of active VPI bits + configured for use at the ATM interface. + At the ATM UNI, the maximum number of active + VPI bits configured for use ranges from + 0 to 8 only." + ::= { atmInterfaceConfEntry 5} + +atmInterfaceMaxActiveVciBits OBJECT-TYPE + SYNTAX INTEGER (0..16) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of active VCI bits + configured for use at this ATM interface." + ::= { atmInterfaceConfEntry 6} + +atmInterfaceIlmiVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The VPI value of the VCC supporting + the ILMI at this ATM interface. If the values of + atmInterfaceIlmiVpi and atmInterfaceIlmiVci are + both equal to zero then the ILMI is not + supported at this ATM interface." + DEFVAL { 0 } + ::= { atmInterfaceConfEntry 7} + +atmInterfaceIlmiVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The VCI value of the VCC supporting + the ILMI at this ATM interface. If the values of + atmInterfaceIlmiVpi and atmInterfaceIlmiVci are + both equal to zero then the ILMI is not + supported at this ATM interface." + DEFVAL { 16 } + ::= { atmInterfaceConfEntry 8} + +atmInterfaceAddressType OBJECT-TYPE + SYNTAX INTEGER { + private(1), + nsapE164(2), + nativeE164(3), + other(4) + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The type of primary ATM address configured + for use at this ATM interface." + ::= { atmInterfaceConfEntry 9 } + +-- The atmInterfaceAdminAddress object has been replaced by +-- atmInterfaceSubscrAddress. + +atmInterfaceAdminAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The primary address assigned for administrative purposes, + for example, an address associated with the + service provider side of a public network UNI + (thus, the value of this address corresponds + with the value of ifPhysAddress at the host side). + If this interface has no assigned administrative + address, or when the address used for + administrative purposes is the same as that used + for ifPhysAddress, then this is an octet string of + zero length." + ::= { atmInterfaceConfEntry 10 } + +atmInterfaceMyNeighborIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP address of the neighbor system connected to + the far end of this interface, to which a Network + Management Station can send SNMP messages, as IP + datagrams sent to UDP port 161, in order to access + network management information concerning the + operation of that system. Note that the value + of this object may be obtained in different ways, + e.g., by manual configuration, or through ILMI + interaction with the neighbor system." + ::= { atmInterfaceConfEntry 11 } + +atmInterfaceMyNeighborIfName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual name of the interface on the neighbor + system on the far end of this interface, and to + which this interface connects. If the neighbor + system is manageable through SNMP and supports + the object ifName, the value of this object must + be identical with that of ifName for the ifEntry + of the lowest level physical interface + for this port. If this interface does not have a + textual name, the value of this object is a zero + length string. Note that the value of this object + may be obtained in different ways, e.g., by manual + configuration, or through ILMI interaction with + the neighbor system." + ::= { atmInterfaceConfEntry 12 } + +atmInterfaceCurrentMaxVpiBits OBJECT-TYPE + SYNTAX INTEGER (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of VPI Bits that may + currently be used at this ATM interface. + The value is the minimum of + atmInterfaceMaxActiveVpiBits, and the + atmInterfaceMaxActiveVpiBits of the interface's + UNI/NNI peer. + + If the interface does not negotiate with + its peer to determine the number of VPI Bits + that can be used on the interface, then the + value of this object must equal + atmInterfaceMaxActiveVpiBits." + ::= { atmInterfaceConfEntry 13 } + +atmInterfaceCurrentMaxVciBits OBJECT-TYPE + SYNTAX INTEGER (0..16) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of VCI Bits that may + currently be used at this ATM interface. + The value is the minimum of + atmInterfaceMaxActiveVciBits, and the + atmInterfaceMaxActiveVciBits of the interface's + UNI/NNI peer. + + If the interface does not negotiate with + its peer to determine the number of VCI Bits + that can be used on the interface, then the + value of this object must equal + atmInterfaceMaxActiveVciBits." + ::= { atmInterfaceConfEntry 14 } + +atmInterfaceSubscrAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The identifier assigned by a service provider + to the network side of a public network UNI. + If this interface has no assigned service provider + address, or for other interfaces this is an octet string + of zero length." + ::= { atmInterfaceConfEntry 15 } + +-- The ATM Interface DS3 PLCP Table + +-- This table contains the DS3 PLCP configuration and +-- state parameters of those ATM interfaces +-- which use DS3 PLCP for carrying ATM cells over DS3. + +atmInterfaceDs3PlcpTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmInterfaceDs3PlcpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM interface DS3 PLCP + parameters and state variables, one entry per + ATM interface port." + ::= { atmMIBObjects 3} + +atmInterfaceDs3PlcpEntry OBJECT-TYPE + SYNTAX AtmInterfaceDs3PlcpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains DS3 PLCP parameters and + state variables at the ATM interface and is + indexed by the ifIndex value of the ATM interface." + INDEX { ifIndex } + ::= { atmInterfaceDs3PlcpTable 1} + +AtmInterfaceDs3PlcpEntry ::= SEQUENCE { + atmInterfaceDs3PlcpSEFSs Counter32, + atmInterfaceDs3PlcpAlarmState INTEGER, + atmInterfaceDs3PlcpUASs Counter32 + } + + +atmInterfaceDs3PlcpSEFSs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of DS3 PLCP Severely Errored Framing + Seconds (SEFS). Each SEFS represents a + one-second interval which contains + one or more SEF events." + ::= { atmInterfaceDs3PlcpEntry 1} + +atmInterfaceDs3PlcpAlarmState OBJECT-TYPE + SYNTAX INTEGER { + noAlarm(1), + receivedFarEndAlarm(2), + incomingLOF(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if there is an + alarm present for the DS3 PLCP. The value + receivedFarEndAlarm means that the DS3 PLCP + has received an incoming Yellow + Signal, the value incomingLOF means that + the DS3 PLCP has declared a loss of frame (LOF) + failure condition, and the value noAlarm + means that there are no alarms present. + Transition from the failure to the no alarm state + occurs when no defects (e.g., LOF) are received + for more than 10 seconds." + ::= { atmInterfaceDs3PlcpEntry 2} + +atmInterfaceDs3PlcpUASs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds encountered by the PLCP." + ::= { atmInterfaceDs3PlcpEntry 3} + + +-- The ATM Interface TC Sublayer Table + +-- This table contains TC sublayer configuration and +-- state parameters of those ATM interfaces +-- which use TC sublayer for carrying ATM cells over +-- SONET/SDH or DS3. + + +atmInterfaceTCTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmInterfaceTCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM interface TC + Sublayer parameters and state variables, + one entry per ATM interface port." + ::= { atmMIBObjects 4} + +atmInterfaceTCEntry OBJECT-TYPE + SYNTAX AtmInterfaceTCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains TC Sublayer parameters + and state variables at the ATM interface and is + indexed by the ifIndex value of the ATM interface." + INDEX {ifIndex } + ::= { atmInterfaceTCTable 1} + +AtmInterfaceTCEntry ::= SEQUENCE { + atmInterfaceOCDEvents Counter32, + atmInterfaceTCAlarmState INTEGER + } + +atmInterfaceOCDEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the Out of Cell + Delineation (OCD) events occur. If seven + consecutive ATM cells have Header Error + Control (HEC) violations, an OCD event occurs. + A high number of OCD events may indicate a + problem with the TC Sublayer." + ::= { atmInterfaceTCEntry 1} + + +atmInterfaceTCAlarmState OBJECT-TYPE + SYNTAX INTEGER { + noAlarm(1), + lcdFailure(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if there is an + alarm present for the TC Sublayer. The value + lcdFailure(2) indicates that the TC Sublayer + is currently in the Loss of Cell Delineation + (LCD) defect maintenance state. The value + noAlarm(1) indicates that the TC Sublayer + is currently not in the LCD defect + maintenance state." + ::= { atmInterfaceTCEntry 2} + +-- ATM Traffic Descriptor Parameter Table + +-- This table contains a set of self-consistent +-- ATM traffic parameters including the +-- ATM traffic service category. + +-- The ATM virtual link tables (i.e., VPL and VCL tables) +-- will use this ATM Traffic Descriptor table +-- to assign traffic parameters and service category +-- to the receive and transmit directions of +-- the ATM virtual links (i.e., VPLs and VCLs). +-- The ATM VPL or VCL table will indicate a row +-- in the atmTrafficDescrParamTable +-- using its atmTrafficDescrParamIndex value. + +-- The management application can then compare a set of +-- ATM traffic parameters with a single value. + +-- If no suitable row(s) in the atmTrafficDescrParamTable +-- exists, the manager must create a new row(s) in this +-- table. If such a row is created, agent checks the +-- sanity of that set of ATM traffic parameter values. + +-- The manager may use atmTrafficDescrParamIndexNext +-- in order to obtain a free atmTrafficDescrParamIndex +-- value. + +-- When creating a new row, the parameter values +-- will be checked for self-consistency. +-- Predefined/template rows may be supported. + +-- A row in the atmTrafficDescrParamTable is deleted +-- by setting the atmTrafficDescrRowStatus to destroy(6). +-- The agent will check whether this row is still in use +-- by any entry of the atmVplTable or atmVclTable. +-- The agent denies the request if the row is still in +-- use. + +-- The ATM Traffic Descriptor Parameter Table + + +atmTrafficDescrParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmTrafficDescrParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on ATM traffic + descriptor type and the associated parameters." + ::= { atmMIBObjects 5} + +atmTrafficDescrParamEntry OBJECT-TYPE + SYNTAX AtmTrafficDescrParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains ATM traffic descriptor + type and the associated parameters." + INDEX {atmTrafficDescrParamIndex} + ::= { atmTrafficDescrParamTable 1} + +AtmTrafficDescrParamEntry ::= SEQUENCE { + atmTrafficDescrParamIndex AtmTrafficDescrParamIndex, + atmTrafficDescrType OBJECT IDENTIFIER, + atmTrafficDescrParam1 Integer32, + atmTrafficDescrParam2 Integer32, + atmTrafficDescrParam3 Integer32, + atmTrafficDescrParam4 Integer32, + atmTrafficDescrParam5 Integer32, + atmTrafficQoSClass INTEGER, + atmTrafficDescrRowStatus RowStatus, + atmServiceCategory AtmServiceCategory, + atmTrafficFrameDiscard TruthValue + } + +atmTrafficDescrParamIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is used by the virtual link + table (i.e., VPL or VCL table) + to identify the row of this table. + When creating a new row in the table + the value of this index may be obtained + by retrieving the value of + atmTrafficDescrParamIndexNext." + ::= { atmTrafficDescrParamEntry 1} + +atmTrafficDescrType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the type + of ATM traffic descriptor. + The type may indicate no traffic descriptor or + traffic descriptor with one or more parameters. + These parameters are specified as a parameter + vector, in the corresponding instances of the + objects: + atmTrafficDescrParam1 + atmTrafficDescrParam2 + atmTrafficDescrParam3 + atmTrafficDescrParam4 + atmTrafficDescrParam5." + DEFVAL { atmNoClpNoScr } + ::= { atmTrafficDescrParamEntry 2} + +atmTrafficDescrParam1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 3} + +atmTrafficDescrParam2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The second parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 4} + +atmTrafficDescrParam3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The third parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 5} + +atmTrafficDescrParam4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The fourth parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 6} + +atmTrafficDescrParam5 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The fifth parameter of the ATM traffic descriptor + used according to the value of + atmTrafficDescrType." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 7} + +atmTrafficQoSClass OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The value of this object identifies the QoS Class. + Four Service classes have been + specified in the ATM Forum UNI Specification: + Service Class A: Constant bit rate video and + Circuit emulation + Service Class B: Variable bit rate video/audio + Service Class C: Connection-oriented data + Service Class D: Connectionless data + Four QoS classes numbered 1, 2, 3, and 4 have + been specified with the aim to support service + classes A, B, C, and D respectively. + An unspecified QoS Class numbered `0' is used + for best effort traffic." + DEFVAL { 0 } + ::= { atmTrafficDescrParamEntry 8} + +atmTrafficDescrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create + a new row or modify or delete an + existing row in this table." + DEFVAL { active } + ::= {atmTrafficDescrParamEntry 9} + +atmServiceCategory OBJECT-TYPE + SYNTAX AtmServiceCategory + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM service category." + DEFVAL { ubr } + ::= { atmTrafficDescrParamEntry 10} + + +atmTrafficFrameDiscard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If set to 'true', this object indicates that the network + is requested to treat data for this connection, in the + given direction, as frames (e.g. AAL5 CPCS_PDU's) rather + than as individual cells. While the precise + implementation is network-specific, this treatment may + for example involve discarding entire frames during + congestion, rather than a few cells from many frames." + DEFVAL { true } + ::= { atmTrafficDescrParamEntry 11 } + +-- ATM Interface Virtual Path Link (VPL) Table + +-- This table contains configuration and state +-- information of a bi-directional Virtual Path Link +-- (VPL) + +-- This table can be used to create, delete or modify +-- a VPL that is terminated in an ATM host or switch. +-- This table can also be used to create, delete or +-- modify a VPL which is cross-connected to another +-- VPL. + +-- In the example below, the traffic flows on the receive +-- and transmit directions of the VPLs are characterized +-- by atmVplReceiveTrafficDescrIndex and +-- atmVplTransmitTrafficDescrIndex respectively. +-- The cross-connected VPLs are identified by +-- atmVplCrossConnectIdentifier. + + + +-- ________________________________ +-- | | +-- VPL | ATM Host, Switch, or Network | VPL +-- receive | | receive +-- ========> X X <======= +-- <======== X X ========> +-- transmit | | transmit +-- |______________________________| + + + +-- The ATM Interface VPL Table + +atmVplTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Virtual Path Link (VPL) table. A + bi-directional VPL is modeled as one entry + in this table. This table can be used for + PVCs, SVCs and Soft PVCs. + Entries are not present in this table for + the VPIs used by entries in the atmVclTable." + ::= { atmMIBObjects 6} + +atmVplEntry OBJECT-TYPE + SYNTAX AtmVplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the VPL table. This entry is + used to model a bi-directional VPL. + To create a VPL at an ATM interface, + either of the following procedures are used: + + Negotiated VPL establishment + + (1) The management application creates + a VPL entry in the atmVplTable + by setting atmVplRowStatus to createAndWait(5). + This may fail for the following reasons: + - The selected VPI value is unavailable, + - The selected VPI value is in use. + Otherwise, the agent creates a row and + reserves the VPI value on that port. + + (2) The manager selects an existing row(s) in the + atmTrafficDescrParamTable, + thereby, selecting a set of self-consistent + ATM traffic parameters and the service category + for receive and transmit directions of the VPL. + + (2a) If no suitable row(s) in the + atmTrafficDescrParamTable exists, + the manager must create a new row(s) + in that table. + + (2b) The manager characterizes the VPL's traffic + parameters through setting the + atmVplReceiveTrafficDescrIndex and the + atmVplTransmitTrafficDescrIndex values + in the VPL table, which point to the rows + containing desired ATM traffic parameter values + in the atmTrafficDescrParamTable. The agent + will check the availability of resources and + may refuse the request. + If the transmit and receive service categories + are inconsistent, the agent should refuse the + request. + + (3) The manager activates the VPL by setting the + the atmVplRowStatus to active(1). + If this set is successful, the agent has + reserved the resources to satisfy the requested + traffic parameter values and the service category + for that VPL. + + (4) If the VPL terminates a VPC in the ATM host + or switch, the manager turns on the + atmVplAdminStatus to up(1) to turn the VPL + traffic flow on. Otherwise, the + atmVpCrossConnectTable must be used + to cross-connect the VPL to another VPL(s) + in an ATM switch or network. + + One-Shot VPL Establishment + + A VPL may also be established in one step by a + set-request with all necessary VPL parameter + values and atmVplRowStatus set to createAndGo(4). + + In contrast to the negotiated VPL establishment + which allows for detailed error checking + (i.e., set errors are explicitly linked to + particular resource acquisition failures), + the one-shot VPL establishment + performs the setup on one operation but + does not have the advantage of step-wise + error checking. + + VPL Retirement + + A VPL is released by setting atmVplRowStatus to + destroy(6), and the agent may release all + associated resources." + INDEX {ifIndex, atmVplVpi } + ::= { atmVplTable 1} + +AtmVplEntry ::= SEQUENCE { + atmVplVpi AtmVpIdentifier, + atmVplAdminStatus AtmVorXAdminStatus, + atmVplOperStatus AtmVorXOperStatus, + atmVplLastChange AtmVorXLastChange, + atmVplReceiveTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmVplTransmitTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmVplCrossConnectIdentifier INTEGER, + atmVplRowStatus RowStatus, + atmVplCastType AtmConnCastType, + atmVplConnKind AtmConnKind + } + + +atmVplVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value of the VPL." + ::= { atmVplEntry 1} + +atmVplAdminStatus OBJECT-TYPE + SYNTAX AtmVorXAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is instanciated only for a VPL + which terminates a VPC (i.e., one which is + NOT cross-connected to other VPLs). + Its value specifies the desired + administrative state of the VPL." + DEFVAL { down } + ::= { atmVplEntry 2} + +atmVplOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the VPL." + ::= { atmVplEntry 3} + +atmVplLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VPL entered its current operational state." + ::= { atmVplEntry 4 } + +atmVplReceiveTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the atmTrafficDescrParamTable which + applies to the receive direction of the VPL." + DEFVAL { 0 } + ::= { atmVplEntry 5} + +atmVplTransmitTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the atmTrafficDescrParamTable which + applies to the transmit direction of the VPL." + DEFVAL { 0 } + ::= { atmVplEntry 6} + +atmVplCrossConnectIdentifier OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is instantiated only for a VPL + which is cross-connected to other VPLs + that belong to the same VPC. All such + associated VPLs have the same value of this + object, and all their cross-connections are + identified either by entries that are indexed + by the same value of atmVpCrossConnectIndex in + the atmVpCrossConnectTable of this MIB module or by + the same value of the cross-connect index in + the cross-connect table for SVCs and Soft PVCs + (defined in a separate MIB module). + At no time should entries in these respective + cross-connect tables exist simultaneously + with the same cross-connect index value. + The value of this object is initialized by the + agent after the associated entries in the + atmVpCrossConnectTable have been created." + ::= {atmVplEntry 7} + +atmVplRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create, delete + or modify a row in this table. + To create a new VCL, this object is + initially set to 'createAndWait' or + 'createAndGo'. This object should not be + set to 'active' unless the following columnar + objects have been set to their desired value + in this row: + atmVplReceiveTrafficDescrIndex and + atmVplTransmitTrafficDescrIndex. + The DESCRIPTION of atmVplEntry provides + further guidance to row treatment in this table." + DEFVAL { createAndWait } + ::= {atmVplEntry 8} + +atmVplCastType OBJECT-TYPE + SYNTAX AtmConnCastType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The connection topology type." + DEFVAL { p2p } + ::= {atmVplEntry 9} + +atmVplConnKind OBJECT-TYPE + SYNTAX AtmConnKind + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The use of call control." + DEFVAL { pvc } + ::= {atmVplEntry 10} + +-- ATM Interface Virtual Channel Link (VCL) Table + +-- This table contains configuration and state +-- information of a bi-directional Virtual Channel +-- Link (VCL) at an ATM interface. + +-- This table can be used to create, delete or modify +-- a VCL that is terminated in an ATM host or switch. +-- This table can also be +-- used to create, delete or modify a VCL that is +-- cross-connected to another VCL. + + +-- The ATM Interface VCL Table + + +atmVclTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Virtual Channel Link (VCL) table. A + bi-directional VCL is modeled as one entry + in this table. This table can be used for + PVCs, SVCs and Soft PVCs." + ::= { atmMIBObjects 7} + +atmVclEntry OBJECT-TYPE + SYNTAX AtmVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the VCL table. This entry is + used to model a bi-directional VCL. + To create a VCL at an ATM interface, + either of the following procedures are used: + + Negotiated VCL establishment + + (1) The management application creates + a VCL entry in the atmVclTable + by setting atmVclRowStatus to createAndWait(5). + This may fail for the following reasons: + - The selected VPI/VCI values are unavailable, + - The selected VPI/VCI values are in use. + Otherwise, the agent creates a row and + reserves the VPI/VCI values on that port. + + (2) The manager selects an existing row(s) in the + atmTrafficDescrParamTable, + thereby, selecting a set of self-consistent + ATM traffic parameters and the service category + for receive and transmit directions of the VCL. + (2a) If no suitable row(s) in the + atmTrafficDescrParamTable exists, + the manager must create a new row(s) + in that table. + + (2b) The manager characterizes the VCL's traffic + parameters through setting the + atmVclReceiveTrafficDescrIndex and the + atmVclTransmitTrafficDescrIndex values + in the VCL table, which point to the rows + containing desired ATM traffic parameter values + in the atmTrafficDescrParamTable. The agent + will check the availability of resources and + may refuse the request. + If the transmit and receive service categories + are inconsistent, the agent should refuse the + request. + + (3) The manager activates the VCL by setting the + the atmVclRowStatus to active(1) (for + requirements on this activation see the + description of atmVclRowStatus). + If this set is successful, the agent has + reserved the resources to satisfy the requested + traffic parameter values and the service category + for that VCL. + (4) If the VCL terminates a VCC in the ATM host + or switch, the manager turns on the + atmVclAdminStatus to up(1) to turn the VCL + traffic flow on. Otherwise, the + atmVcCrossConnectTable must be used + to cross-connect the VCL to another VCL(s) + in an ATM switch or network. + + One-Shot VCL Establishment + + A VCL may also be established in one step by a + set-request with all necessary VCL parameter + values and atmVclRowStatus set to createAndGo(4). + + In contrast to the negotiated VCL establishment + which allows for detailed error checking + (i.e., set errors are explicitly linked to + particular resource acquisition failures), + the one-shot VCL establishment + performs the setup on one operation but + does not have the advantage of step-wise + error checking. + VCL Retirement + + A VCL is released by setting atmVclRowStatus to + destroy(6), and the agent may release all + associated resources." + INDEX {ifIndex, atmVclVpi, atmVclVci } + ::= { atmVclTable 1} + +AtmVclEntry ::= SEQUENCE { + atmVclVpi AtmVpIdentifier, + atmVclVci AtmVcIdentifier, + atmVclAdminStatus AtmVorXAdminStatus, + atmVclOperStatus AtmVorXOperStatus, + atmVclLastChange AtmVorXLastChange, + atmVclReceiveTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmVclTransmitTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmVccAalType INTEGER, + atmVccAal5CpcsTransmitSduSize INTEGER, + atmVccAal5CpcsReceiveSduSize INTEGER, + atmVccAal5EncapsType INTEGER, + atmVclCrossConnectIdentifier INTEGER, + atmVclRowStatus RowStatus, + atmVclCastType AtmConnCastType, + atmVclConnKind AtmConnKind + } + +atmVclVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value of the VCL." + ::= { atmVclEntry 1} + +atmVclVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value of the VCL." + ::= { atmVclEntry 2} + +atmVclAdminStatus OBJECT-TYPE + SYNTAX AtmVorXAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is instanciated only for a VCL which + terminates a VCC (i.e., one which is NOT + cross-connected to other VCLs). Its value + specifies the desired administrative state of + the VCL." + DEFVAL { down } + ::= { atmVclEntry 3} + +atmVclOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the VCL." + ::= { atmVclEntry 4} + +atmVclLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this VCL + entered its current operational state." + ::= { atmVclEntry 5 } + +atmVclReceiveTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row + in the ATM Traffic Descriptor Table which + applies to the receive direction of this VCL." + DEFVAL { 0 } + ::= { atmVclEntry 6} + +atmVclTransmitTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row + of the ATM Traffic Descriptor Table which applies + to the transmit direction of this VCL." + DEFVAL { 0 } + ::= { atmVclEntry 7} + +atmVccAalType OBJECT-TYPE + SYNTAX INTEGER { + aal1(1), + aal34(2), + aal5(3), + other(4), + unknown(5), + aal2(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An instance of this object only exists when the + local VCL end-point is also the VCC end-point, + and AAL is in use. + The type of AAL used on this VCC. + The AAL type includes AAL1, AAL2, AAL3/4, + and AAL5. The other(4) may be user-defined + AAL type. The unknown type indicates that + the AAL type cannot be determined." + DEFVAL { aal5 } + ::= { atmVclEntry 8 } + +atmVccAal5CpcsTransmitSduSize OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An instance of this object only exists when the + local VCL end-point is also the VCC end-point, + and AAL5 is in use. + The maximum AAL5 CPCS SDU size in octets that is + supported on the transmit direction of this VCC." + DEFVAL { 9188 } + ::= { atmVclEntry 9 } + +atmVccAal5CpcsReceiveSduSize OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An instance of this object only exists when the + local VCL end-point is also the VCC end-point, + and AAL5 is in use. + The maximum AAL5 CPCS SDU size in octets that is + supported on the receive direction of this VCC." + DEFVAL { 9188 } + ::= { atmVclEntry 10 } + +atmVccAal5EncapsType OBJECT-TYPE + SYNTAX INTEGER { + vcMultiplexRoutedProtocol(1), + vcMultiplexBridgedProtocol8023(2), + vcMultiplexBridgedProtocol8025(3), + vcMultiplexBridgedProtocol8026(4), + vcMultiplexLANemulation8023(5), + vcMultiplexLANemulation8025(6), + llcEncapsulation(7), + multiprotocolFrameRelaySscs(8), + other(9), + unknown(10) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An instance of this object only exists when the + local VCL end-point is also the VCC end-point, + and AAL5 is in use. + The type of data encapsulation used over + the AAL5 SSCS layer. The definitions reference + RFC 1483 Multiprotocol Encapsulation + over ATM AAL5 and to the ATM Forum + LAN Emulation specification." + DEFVAL { llcEncapsulation } + ::= { atmVclEntry 11 } + +atmVclCrossConnectIdentifier OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is instantiated only for a VCL + which is cross-connected to other VCLs + that belong to the same VCC. All such + associated VCLs have the same value of this + object, and all their cross-connections are + identified either by entries that are indexed + by the same value of atmVcCrossConnectIndex in + the atmVcCrossConnectTable of this MIB module or by + the same value of the cross-connect index in + the cross-connect table for SVCs and Soft PVCs + (defined in a separate MIB module). + + At no time should entries in these respective + cross-connect tables exist simultaneously + with the same cross-connect index value. + The value of this object is initialized by the + agent after the associated entries in the + atmVcCrossConnectTable have been created." + ::= {atmVclEntry 12} + +atmVclRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create, delete or + modify a row in this table. To create + a new VCL, this object is initially set + to 'createAndWait' or 'createAndGo'. + This object should not be + set to 'active' unless the following columnar + objects have been set to their desired value + in this row: + atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex. + In addition, if the local VCL end-point + is also the VCC end-point: + atmVccAalType. + In addition, for AAL5 connections only: + atmVccAal5CpcsTransmitSduSize, + atmVccAal5CpcsReceiveSduSize, and + atmVccAal5EncapsType. (The existence + of these objects imply the AAL connection type.). + The DESCRIPTION of atmVclEntry provides + further guidance to row treatment in this table." + DEFVAL { createAndWait } + ::= {atmVclEntry 13} + +atmVclCastType OBJECT-TYPE + SYNTAX AtmConnCastType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The connection topology type." + DEFVAL { p2p } + ::= {atmVclEntry 14} + + +atmVclConnKind OBJECT-TYPE + SYNTAX AtmConnKind + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The use of call control." + DEFVAL { pvc } + ::= {atmVclEntry 15} + + +-- ATM Virtual Path (VP) Cross Connect Table + +-- This table contains configuration and state +-- information of point-to-point, +-- point-to-multipoint, or multipoint-to-multipoint +-- VP cross-connects for PVCs. + +-- This table has read-create access and can be used +-- to cross-connect the VPLs together in an ATM switch +-- or network. The atmVpCrossConnectIndex +-- is used to associate the related +-- VPLs that are cross-connected together. + +-- The ATM VP Cross Connect Table +-- models each bi-directional VPC +-- cross-connect as a set of entries in +-- the atmVpCrossConnectTable. A +-- point-to-point VPC cross-connect is modeled +-- as one entry; a point-to-multipoint (N leafs) VPC +-- cross-connect as N entries in this table; and +-- a multipoint-to-multipoint (N parties) VPC cross- +-- connect as N(N-1)/2 entries in this table. +-- In the latter cases, all the N (or N(N-1)/2) entries +-- are associated with a single VPC cross-connect by +-- having the same value of atmVpCrossConnectIndex. + + +-- _________________________________________ +-- | | +-- Low | ATM Switch or Network | High +-- port| | port +-- _____|>> from low to high VPC traffic flow >>|______ +-- |<< from high to low VPC traffic flow <<| +-- | | +-- |_______________________________________| +-- + +-- The terms low and high are chosen to represent +-- numerical ordering of the two interfaces associated +-- with a VPC cross-connect. That is, the ATM interface +-- with the lower value of ifIndex is termed 'low', +-- while the other ATM interface associated with the +-- VPC cross-connect is termed 'high'. This terminology + +-- is used to provide directional information; for +-- example, the atmVpCrossConnectL2HOperStatus applies +-- to the low->high direction, and +-- atmVpCrossConnectH2LOperStatus applies to the +-- high->low direction, as illustrated above. + + + + +atmVpCrossConnectIndexNext OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for atmVpCrossConnectIndex when creating + entries in the atmVpCrossConnectTable. The value + 0 indicates that no unassigned entries are + available. To obtain the atmVpCrossConnectIndex + value for a new entry, the manager issues a + management protocol retrieval operation to obtain + the current value of this object. After each + retrieval, the agent should modify the value to + the next unassigned index. + After a manager retrieves a value the agent will + determine through its local policy when this index + value will be made available for reuse." + ::= { atmMIBObjects 8 } + + +-- The ATM VP Cross Connect Table + + +atmVpCrossConnectTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVpCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM VP Cross Connect table for PVCs. + An entry in this table models two + cross-connected VPLs. + Each VPL must have its atmConnKind set + to pvc(1)." + ::= { atmMIBObjects 9 } + + +atmVpCrossConnectEntry OBJECT-TYPE + SYNTAX AtmVpCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM VP Cross Connect table. + This entry is used to model a bi-directional + ATM VP cross-connect which cross-connects + two VPLs. + + Step-wise Procedures to set up a VP Cross-connect + + Once the entries in the atmVplTable are created, + the following procedures are used + to cross-connect the VPLs together. + + (1) The manager obtains a unique + atmVpCrossConnectIndex by reading the + atmVpCrossConnectIndexNext object. + + (2) Next, the manager creates a set of one + or more rows in the ATM VP Cross Connect + Table, one for each cross-connection between + two VPLs. Each row is indexed by the ATM + interface port numbers and VPI values of the + two ends of that cross-connection. + This set of rows specifies the topology of the + VPC cross-connect and is identified by a single + value of atmVpCrossConnectIndex. + + Negotiated VP Cross-Connect Establishment + + (2a) The manager creates a row in this table by + setting atmVpCrossConnectRowStatus to + createAndWait(5). The agent checks the + requested topology and the mutual sanity of + the ATM traffic parameters and + service categories, i.e., the row creation + fails if: + - the requested topology is incompatible with + associated values of atmVplCastType, + - the requested topology is not supported + by the agent, + - the traffic/service category parameter values + associated with the requested row are + incompatible with those of already existing + rows for this VP cross-connect. + [For example, for setting up + a point-to-point VP cross-connect, the + ATM traffic parameters in the receive direction + of a VPL at the low end of the cross-connect + must equal to the traffic parameters in the + transmit direction of the other VPL at the + high end of the cross-connect, + otherwise, the row creation fails.] + The agent also checks for internal errors + in building the cross-connect. + + The atmVpCrossConnectIndex values in the + corresponding atmVplTable rows are filled + in by the agent at this point. + + (2b) The manager promotes the row in the + atmVpCrossConnectTable by setting + atmVpCrossConnectRowStatus to active(1). If + this set is successful, the agent has reserved + the resources specified by the ATM traffic + parameter and Service category values + for each direction of the VP cross-connect + in an ATM switch or network. + + (3) The manager sets the + atmVpCrossConnectAdminStatus to up(1) in all + rows of this VP cross-connect to turn the + traffic flow on. + + + One-Shot VP Cross-Connect Establishment + + A VP cross-connect may also be established in + one step by a set-request with all necessary + parameter values and atmVpCrossConnectRowStatus + set to createAndGo(4). + + In contrast to the negotiated VP cross-connect + establishment which allows for detailed error + checking (i.e., set errors are explicitly linked + to particular resource acquisition failures), + the one-shot VP cross-connect establishment + performs the setup on one operation but does not + have the advantage of step-wise error checking. + + VP Cross-Connect Retirement + + A VP cross-connect identified by a particular + value of atmVpCrossConnectIndex is released by: + + (1) Setting atmVpCrossConnectRowStatus of all + rows identified by this value of + atmVpCrossConnectIndex to destroy(6). + The agent may release all + associated resources, and the + atmVpCrossConnectIndex values in the + corresponding atmVplTable row are removed. + Note that a situation when only a subset of + the associated rows are deleted corresponds + to a VP topology change. + + (2) After deletion of the appropriate + atmVpCrossConnectEntries, the manager may + set atmVplRowStatus to destroy(6) the + associated VPLs. The agent releases + the resources and removes the associated + rows in the atmVplTable. + + VP Cross-connect Reconfiguration + + At the discretion of the agent, a VP + cross-connect may be reconfigured by + adding and/or deleting leafs to/from + the VP topology as per the VP cross-connect + establishment/retirement procedures. + Reconfiguration of traffic/service category parameter + values requires release of the VP cross-connect + before those parameter values may by changed + for individual VPLs." + INDEX { atmVpCrossConnectIndex, + atmVpCrossConnectLowIfIndex, + atmVpCrossConnectLowVpi, + atmVpCrossConnectHighIfIndex, + atmVpCrossConnectHighVpi } + ::= { atmVpCrossConnectTable 1 } + +AtmVpCrossConnectEntry ::= SEQUENCE { + atmVpCrossConnectIndex INTEGER, + atmVpCrossConnectLowIfIndex InterfaceIndex, + atmVpCrossConnectLowVpi AtmVpIdentifier, + atmVpCrossConnectHighIfIndex InterfaceIndex, + atmVpCrossConnectHighVpi AtmVpIdentifier, + atmVpCrossConnectAdminStatus AtmVorXAdminStatus, + atmVpCrossConnectL2HOperStatus AtmVorXOperStatus, + atmVpCrossConnectH2LOperStatus AtmVorXOperStatus, + atmVpCrossConnectL2HLastChange AtmVorXLastChange, + atmVpCrossConnectH2LLastChange AtmVorXLastChange, + atmVpCrossConnectRowStatus RowStatus + } + +atmVpCrossConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify this VP cross-connect. + For each VPL associated with this cross-connect, + the agent reports this cross-connect index value + in the atmVplCrossConnectIdentifier attribute of + the corresponding atmVplTable entries." + ::= { atmVpCrossConnectEntry 1 } + +atmVpCrossConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the ATM interface for + this VP cross-connect. The term low implies + that this ATM interface has the numerically lower + ifIndex value than the other ATM interface + identified in the same atmVpCrossConnectEntry." + ::= { atmVpCrossConnectEntry 2 } + +atmVpCrossConnectLowVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value at the ATM interface + associated with the VP cross-connect that is + identified by atmVpCrossConnectLowIfIndex." + ::= { atmVpCrossConnectEntry 3 } + +atmVpCrossConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the ATM interface for + this VP cross-connect. The term high implies that + this ATM interface has the numerically higher + ifIndex value than the other ATM interface + identified in the same atmVpCrossConnectEntry." + ::= { atmVpCrossConnectEntry 4 } + +atmVpCrossConnectHighVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value at the ATM interface + associated with the VP cross-connect that is + identified by atmVpCrossConnectHighIfIndex." + ::= { atmVpCrossConnectEntry 5 } + +atmVpCrossConnectAdminStatus OBJECT-TYPE + SYNTAX AtmVorXAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired administrative status of this + bi-directional VP cross-connect." + DEFVAL { down } + ::= { atmVpCrossConnectEntry 6 } + +atmVpCrossConnectL2HOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of the VP cross-connect + in one direction; (i.e., from the low to + high direction)." + ::= { atmVpCrossConnectEntry 7 } + +atmVpCrossConnectH2LOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of the VP cross-connect + in one direction; (i.e., from the high to + low direction)." + ::= { atmVpCrossConnectEntry 8 } + +atmVpCrossConnectL2HLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VP cross-connect entered its current operational + state in the low to high direction." + ::= { atmVpCrossConnectEntry 9 } + +atmVpCrossConnectH2LLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VP cross-connect entered its current operational + in the high to low direction." + ::= { atmVpCrossConnectEntry 10 } + +atmVpCrossConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry in the + atmVpCrossConnectTable. This object is used to + create a cross-connect for cross-connecting + VPLs which are created using the atmVplTable + or to change or delete an existing cross-connect. + This object must be initially set + to `createAndWait' or 'createAndGo'. + To turn on a VP cross-connect, + the atmVpCrossConnectAdminStatus + is set to `up'." + DEFVAL { createAndWait } + ::= { atmVpCrossConnectEntry 11 } + + +-- ATM Virtual Channel (VC) Cross Connect Table + +-- This table contains configuration and state +-- information of point-to-point, +-- point-to-multipoint or multipoint-to-multipoint +-- VC cross-connects for PVCs. + +-- This table has read-create access and is used +-- to cross-connect the VCLs together in an ATM switch +-- or network that belong to a VC connection. +-- The atmVcCrossConnectIndex is used to associate +-- the related VCLs that are cross-connected together. + + + +-- The model using step-wise procedures described for setting +-- up a VP cross-connect is also used for setting up +-- a VC cross-connect. + +atmVcCrossConnectIndexNext OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for atmVcCrossConnectIndex when creating + entries in the atmVcCrossConnectTable. The value + 0 indicates that no unassigned entries are + available. To obtain the atmVcCrossConnectIndex + value for a new entry, the manager issues a + management protocol retrieval operation to obtain + the current value of this object. After each + retrieval, the agent should modify the value to + the next unassigned index. + After a manager retrieves a value the agent will + determine through its local policy when this index + value will be made available for reuse." + ::= { atmMIBObjects 10 } + + +-- The ATM VC Cross Connect Table + + +atmVcCrossConnectTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVcCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM VC Cross Connect table for PVCs. + An entry in this table models two + cross-connected VCLs. + Each VCL must have its atmConnKind set + to pvc(1)." + ::= { atmMIBObjects 11 } + + +atmVcCrossConnectEntry OBJECT-TYPE + SYNTAX AtmVcCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM VC Cross Connect table. + This entry is used to model a bi-directional ATM + VC cross-connect cross-connecting two end points. + + Step-wise Procedures to set up a VC Cross-connect + Once the entries in the atmVclTable are created, + the following procedures are used + to cross-connect the VCLs together to + form a VCC segment. + + (1) The manager obtains a unique + atmVcCrossConnectIndex by reading the + atmVcCrossConnectIndexNext object. + + (2) Next, the manager creates a set of one + or more rows in the ATM VC Cross Connect + Table, one for each cross-connection between + two VCLs. Each row is indexed by the ATM + interface port numbers and VPI/VCI values of + the two ends of that cross-connection. + This set of rows specifies the topology of the + VCC cross-connect and is identified by a single + value of atmVcCrossConnectIndex. + + Negotiated VC Cross-Connect Establishment + + (2a) The manager creates a row in this table by + setting atmVcCrossConnectRowStatus to + createAndWait(5). The agent checks the + requested topology and the mutual sanity of + the ATM traffic parameters and + service categories, i.e., the row creation + fails if: + - the requested topology is incompatible with + associated values of atmVclCastType, + - the requested topology is not supported + by the agent, + - the traffic/service category parameter values + associated with the requested row are + incompatible with those of already existing + rows for this VC cross-connect. + [For example, for setting up + a point-to-point VC cross-connect, the + ATM traffic parameters in the receive direction + of a VCL at the low end of the cross-connect + must equal to the traffic parameters in the + transmit direction of the other VCL at the + high end of the cross-connect, + otherwise, the row creation fails.] + The agent also checks for internal errors + in building the cross-connect. + + The atmVcCrossConnectIndex values in the + corresponding atmVclTable rows are filled + in by the agent at this point. + + (2b) The manager promotes the row in the + atmVcCrossConnectTable by setting + atmVcCrossConnectRowStatus to active(1). If + this set is successful, the agent has reserved + the resources specified by the ATM traffic + parameter and Service category values + for each direction of the VC cross-connect + in an ATM switch or network. + + (3) The manager sets the + atmVcCrossConnectAdminStatus to up(1) + in all rows of this VC cross-connect to + turn the traffic flow on. + + + One-Shot VC Cross-Connect Establishment + + A VC cross-connect may also be established in + one step by a set-request with all necessary + parameter values and atmVcCrossConnectRowStatus + set to createAndGo(4). + + In contrast to the negotiated VC cross-connect + establishment which allows for detailed error + checking i.e., set errors are explicitly linked to + particular resource acquisition failures), the + one-shot VC cross-connect establishment + performs the setup on one operation but does + not have the advantage of step-wise error + checking. + + VC Cross-Connect Retirement + + A VC cross-connect identified by a particular + value of atmVcCrossConnectIndex is released by: + + (1) Setting atmVcCrossConnectRowStatus of all rows + identified by this value of + atmVcCrossConnectIndex to destroy(6). + The agent may release all + associated resources, and the + atmVcCrossConnectIndex values in the + corresponding atmVclTable row are removed. + Note that a situation when only a subset of + the associated rows are deleted corresponds + to a VC topology change. + + (2) After deletion of the appropriate + atmVcCrossConnectEntries, the manager may + set atmVclRowStatus to destroy(6) the + associated VCLs. The agent releases + the resources and removes the associated + rows in the atmVclTable. + + VC Cross-Connect Reconfiguration + + At the discretion of the agent, a VC + cross-connect may be reconfigured by + adding and/or deleting leafs to/from + the VC topology as per the VC cross-connect + establishment/retirement procedures. + Reconfiguration of traffic/service category parameter + values requires release of the VC cross-connect + before those parameter values may by changed + for individual VCLs." + INDEX { atmVcCrossConnectIndex, + atmVcCrossConnectLowIfIndex, + atmVcCrossConnectLowVpi, + atmVcCrossConnectLowVci, + atmVcCrossConnectHighIfIndex, + atmVcCrossConnectHighVpi, + atmVcCrossConnectHighVci } + ::= { atmVcCrossConnectTable 1 } + +AtmVcCrossConnectEntry ::= SEQUENCE { + atmVcCrossConnectIndex INTEGER, + atmVcCrossConnectLowIfIndex InterfaceIndex, + atmVcCrossConnectLowVpi AtmVpIdentifier, + atmVcCrossConnectLowVci AtmVcIdentifier, + atmVcCrossConnectHighIfIndex InterfaceIndex, + atmVcCrossConnectHighVpi AtmVpIdentifier, + atmVcCrossConnectHighVci AtmVcIdentifier, + atmVcCrossConnectAdminStatus AtmVorXAdminStatus, + atmVcCrossConnectL2HOperStatus AtmVorXOperStatus, + atmVcCrossConnectH2LOperStatus AtmVorXOperStatus, + atmVcCrossConnectL2HLastChange AtmVorXLastChange, + atmVcCrossConnectH2LLastChange AtmVorXLastChange, + atmVcCrossConnectRowStatus RowStatus + } + +atmVcCrossConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify this VC cross-connect. + For each VCL associated with this cross-connect, + the agent reports this cross-connect index value + in the atmVclCrossConnectIdentifier attribute of + the corresponding atmVclTable entries." + ::= { atmVcCrossConnectEntry 1 } + +atmVcCrossConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the ATM interface for this + VC cross-connect. The term low implies + that this ATM interface has the numerically lower + ifIndex value than the other ATM interface + identified in the same atmVcCrossConnectEntry." + ::= { atmVcCrossConnectEntry 2 } + +atmVcCrossConnectLowVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value at the ATM interface + associated with the VC cross-connect that is + identified by atmVcCrossConnectLowIfIndex." + ::= { atmVcCrossConnectEntry 3 } + +atmVcCrossConnectLowVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value at the ATM interface + associated with this VC cross-connect that is + identified by atmVcCrossConnectLowIfIndex." + ::= { atmVcCrossConnectEntry 4 } + +atmVcCrossConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value for the ATM interface for + this VC cross-connect. The term high implies + that this ATM interface has the numerically higher + ifIndex value than the other ATM interface + identified in the same atmVcCrossConnectEntry." + ::= { atmVcCrossConnectEntry 5 } + +atmVcCrossConnectHighVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value at the ATM interface + associated with the VC cross-connect that is + identified by atmVcCrossConnectHighIfIndex." + ::= { atmVcCrossConnectEntry 6 } + +atmVcCrossConnectHighVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value at the ATM interface + associated with the VC cross-connect that is + identified by atmVcCrossConnectHighIfIndex." + ::= { atmVcCrossConnectEntry 7 } + +atmVcCrossConnectAdminStatus OBJECT-TYPE + SYNTAX AtmVorXAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired administrative status of this + bi-directional VC cross-connect." + DEFVAL { down } + ::= { atmVcCrossConnectEntry 8 } + +atmVcCrossConnectL2HOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the + VC cross-connect in one direction; (i.e., + from the low to high direction)." + ::= { atmVcCrossConnectEntry 9 } + + +atmVcCrossConnectH2LOperStatus OBJECT-TYPE + SYNTAX AtmVorXOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the + VC cross-connect in one direction; (i.e., + from the high to low direction)." + ::= { atmVcCrossConnectEntry 10 } + +atmVcCrossConnectL2HLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VC cross-connect entered its current + operational state in low to high direction." + ::= { atmVcCrossConnectEntry 11 } + +atmVcCrossConnectH2LLastChange OBJECT-TYPE + SYNTAX AtmVorXLastChange + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + VC cross-connect entered its current + operational state in high to low direction." + ::= { atmVcCrossConnectEntry 12 } + +atmVcCrossConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry in the + atmVcCrossConnectTable. This object is used to + create a new cross-connect for cross-connecting + VCLs which are created using the atmVclTable + or to change or delete existing cross-connect. + This object must be initially set to + `createAndWait' or 'createAndGo'. + To turn on a VC cross-connect, + the atmVcCrossConnectAdminStatus + is set to `up'." + DEFVAL { createAndWait } + ::= { atmVcCrossConnectEntry 13 } + + +-- AAL5 Virtual Channel Connection Performance Statistics + +-- Table + +-- This table contains the AAL5 +-- performance statistics of a VCC at the +-- interface associated with an AAL5 entity in an ATM +-- host or ATM switch. + + +aal5VccTable OBJECT-TYPE + SYNTAX SEQUENCE OF Aal5VccEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains AAL5 VCC performance + parameters." + ::= { atmMIBObjects 12 } + +aal5VccEntry OBJECT-TYPE + SYNTAX Aal5VccEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains the AAL5 VCC + performance parameters and is indexed + by ifIndex values of AAL5 interfaces + and the associated VPI/VCI values." + INDEX { ifIndex, aal5VccVpi, aal5VccVci } + ::= { aal5VccTable 1 } + +Aal5VccEntry ::= SEQUENCE { + aal5VccVpi AtmVpIdentifier, + aal5VccVci AtmVcIdentifier, + aal5VccCrcErrors Counter32, + aal5VccSarTimeOuts Counter32, + aal5VccOverSizedSDUs Counter32 + } + + +aal5VccVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value of the AAL5 VCC at the + interface identified by the ifIndex." + ::= { aal5VccEntry 1 } + +aal5VccVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value of the AAL5 VCC at the + interface identified by the ifIndex." + ::= { aal5VccEntry 2 } + +aal5VccCrcErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AAL5 CPCS PDUs received with + CRC-32 errors on this AAL5 VCC at the + interface associated with an AAL5 entity." + ::= { aal5VccEntry 3 } + +aal5VccSarTimeOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of partially re-assembled AAL5 + CPCS PDUs which were discarded + on this AAL5 VCC at the interface associated + with an AAL5 entity because they + were not fully re-assembled within the + required time period. If the re-assembly + timer is not supported, then this object + contains a zero value." + ::= { aal5VccEntry 4 } + +aal5VccOverSizedSDUs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AAL5 CPCS PDUs discarded + on this AAL5 VCC at the interface + associated with an AAL5 entity because the + AAL5 SDUs were too large." + ::= { aal5VccEntry 5 } + + +-- +-- The following object may be used in conjunction with +-- the atmTrafficDescrParamTable for the creation of + +-- new table entries. +-- + +atmTrafficDescrParamIndexNext OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for atmTrafficDescrParamIndex when + creating entries in the + atmTrafficDescrParamTable. + The value 0 indicates that no unassigned + entries are available. To obtain the + atmTrafficDescrParamIndex value for a new + entry, the manager issues a management + protocol retrieval operation to obtain the + current value of this object. After each + retrieval, the agent should modify the value + to the next unassigned index. + After a manager retrieves a value the agent will + determine through its local policy when this index + value will be made available for reuse." + ::= { atmMIBObjects 13 } + + +-- Conformance Information + +atmMIBConformance OBJECT IDENTIFIER ::= { atmMIB 2 } + +atmMIBGroups OBJECT IDENTIFIER + ::= { atmMIBConformance 1 } +atmMIBCompliances OBJECT IDENTIFIER + ::= { atmMIBConformance 2 } + + +-- Compliance Statements + +atmMIBCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + including networks which have ATM and + AAL5 interfaces." + + MODULE -- this module +-- +-- ****** Interface and Traffic Descriptor Support *** + +-- + MANDATORY-GROUPS {atmInterfaceConfGroup2, + atmTrafficDescrGroup2 } + + OBJECT atmInterfaceMaxVpcs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxVccs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxActiveVpiBits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + At the ATM UNI the maximum number of + active VPI bits configured for use ranges + from 0 to 8 only. + Implementations may support smaller ranges." + OBJECT atmInterfaceMaxActiveVciBits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + Implementations may support smaller ranges." + + OBJECT atmInterfaceIlmiVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceIlmiVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMyNeighborIpAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMyNeighborIfName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT atmInterfaceSubscrAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParamIndexNext + DESCRIPTION + "This object is only required for systems + that support the creation of entries in + the atmTrafficDescrParamTable." + + OBJECT atmTrafficDescrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam1 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmServiceCategory + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrRowStatus + SYNTAX INTEGER {active(1)} + + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT atmTrafficFrameDiscard + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +-- +-- ****** DS3 PLCP Support ************************** +-- + GROUP atmInterfaceDs3PlcpGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement the + DS3 PLCP layer." +-- +-- ****** TC Sublayer Support ******************************** +-- + GROUP atmInterfaceTCGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement the + TC Sublayer." + +-- +-- ****** VPC Support ******************************* +-- + GROUP atmVpcTerminationGroup2 + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that terminate VPCs (i.e., ones which + are NOT cross-connected to other VPLs)." + + GROUP atmVplCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that are not associated with VCLs + and are cross-connected to other VPLs + for VPCs." + GROUP atmVpPvcCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that are not associated with VCLs + and are cross-connected to other VPLs + for permanent VPCs (i.e., PVCs). + This group is not used to crossconnect + a PVC with an SVC to form a Soft PVC." + + OBJECT atmVplAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplReceiveTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplTransmitTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplRowStatus + SYNTAX INTEGER {active(1)} + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT atmVplCastType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplConnKind + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVpCrossConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVpCrossConnectRowStatus + SYNTAX INTEGER {active(1)} + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + +-- +-- ****** VCC Support ******************************* +-- + GROUP atmVccTerminationGroup2 + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that terminate VCCs (i.e., ones which + are NOT cross-connected to other VCLs)." + + GROUP atmVclCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that are cross-connected to other VCLs + for VCCs." + + GROUP atmVcPvcCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that are cross-connected to other + VCLs for permanent VCCs (i.e., PVCs). + This group is not used to crossconnect + a PVC with an SVC to form a Soft PVC." + + OBJECT atmVclAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclReceiveTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT atmVclTransmitTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAalType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclRowStatus + SYNTAX INTEGER {active(1)} + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT atmVclCastType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclConnKind + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVcCrossConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVcCrossConnectRowStatus + SYNTAX INTEGER { active(1)} + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." +-- +-- ****** AAL5 Support ****************************** +-- + GROUP aal5VccGroup + DESCRIPTION + "This group is mandatory for the + AAL5 virtual connections only." + OBJECT atmVccAal5CpcsTransmitSduSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAal5CpcsReceiveSduSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAal5EncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { atmMIBCompliances 2 } + + +-- Units of Conformance + +atmInterfaceDs3PlcpGroup OBJECT-GROUP + OBJECTS {atmInterfaceDs3PlcpSEFSs, + atmInterfaceDs3PlcpAlarmState, + atmInterfaceDs3PlcpUASs} + STATUS current + DESCRIPTION + "A collection of objects providing information + about DS3 PLCP layer at an ATM interface." + ::= { atmMIBGroups 3 } + +atmInterfaceTCGroup OBJECT-GROUP + OBJECTS { atmInterfaceOCDEvents, + atmInterfaceTCAlarmState } + STATUS current + DESCRIPTION + "A collection of objects providing information + about TC sublayer at an ATM interface." + ::= { atmMIBGroups 4 } + +aal5VccGroup OBJECT-GROUP + OBJECTS {atmVccAal5CpcsTransmitSduSize, + atmVccAal5CpcsReceiveSduSize, + atmVccAal5EncapsType, + aal5VccCrcErrors, aal5VccSarTimeOuts, + aal5VccOverSizedSDUs } + STATUS current + DESCRIPTION + "A collection of objects providing + AAL5 configuration and performance statistics + of a VCC." + ::= { atmMIBGroups 9 } + +atmInterfaceConfGroup2 OBJECT-GROUP + OBJECTS { + atmInterfaceMaxVpcs, atmInterfaceMaxVccs, + atmInterfaceConfVpcs, atmInterfaceConfVccs, + atmInterfaceMaxActiveVpiBits, + atmInterfaceMaxActiveVciBits, + atmInterfaceIlmiVpi, + atmInterfaceIlmiVci, + atmInterfaceMyNeighborIpAddress, + atmInterfaceMyNeighborIfName, + atmInterfaceCurrentMaxVpiBits, + atmInterfaceCurrentMaxVciBits, + atmInterfaceSubscrAddress } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information about an ATM interface." + ::= { atmMIBGroups 10 } + +atmTrafficDescrGroup2 OBJECT-GROUP + OBJECTS { + atmTrafficDescrType, atmTrafficDescrParam1, + atmTrafficDescrParam2, atmTrafficDescrParam3, + atmTrafficDescrParam4, atmTrafficDescrParam5, + atmTrafficDescrRowStatus, atmServiceCategory, + atmTrafficFrameDiscard, + atmTrafficDescrParamIndexNext } + STATUS current + DESCRIPTION + "A collection of objects providing information + about ATM traffic descriptor type and + the associated parameters." + ::= { atmMIBGroups 11 } + +atmVpcTerminationGroup2 OBJECT-GROUP + OBJECTS {atmVplOperStatus, atmVplAdminStatus, + atmVplLastChange, + atmVplReceiveTrafficDescrIndex, + atmVplTransmitTrafficDescrIndex, + atmVplRowStatus, atmVplCastType, + atmVplConnKind } + STATUS current + DESCRIPTION + "A collection of objects providing information + about a VPL at an ATM interface which + terminates a VPC (i.e., one which is NOT + cross-connected to other VPLs)." + ::= { atmMIBGroups 12 } + +atmVccTerminationGroup2 OBJECT-GROUP + OBJECTS {atmVclOperStatus, atmVclAdminStatus, + atmVclLastChange, + atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex, + atmVccAalType, atmVclRowStatus, + atmVclCastType, atmVclConnKind } + STATUS current + DESCRIPTION + "A collection of objects providing information + about a VCL at an ATM interface + which terminates a VCC (i.e., one which is + NOT cross-connected to other VCLs)." + ::= { atmMIBGroups 13 } + +atmVplCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVplReceiveTrafficDescrIndex, + atmVplTransmitTrafficDescrIndex, + atmVplOperStatus, atmVplLastChange, + atmVplRowStatus, + atmVplCastType, atmVplConnKind } + STATUS current + DESCRIPTION + "A collection of objects providing + information about the VPLs that + are cross-connected together." + ::= { atmMIBGroups 14 } + +atmVpPvcCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVpCrossConnectAdminStatus, + atmVpCrossConnectL2HOperStatus, + atmVpCrossConnectH2LOperStatus, + atmVpCrossConnectL2HLastChange, + atmVpCrossConnectH2LLastChange, + atmVpCrossConnectRowStatus, + atmVplCrossConnectIdentifier, + atmVpCrossConnectIndexNext } + STATUS current + DESCRIPTION + "A collection of objects providing + information about a VP cross-connect + for PVCs. These objects are not used + for Soft PVCs or SVCs." + ::= { atmMIBGroups 15 } + +atmVclCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex, + atmVclOperStatus, atmVclLastChange, + atmVclRowStatus, + atmVclCastType, atmVclConnKind } + STATUS current + DESCRIPTION + "A collection of objects providing + information about the VCLs that + are cross-connected together." + ::= { atmMIBGroups 16 } + +atmVcPvcCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVcCrossConnectAdminStatus, + atmVcCrossConnectL2HOperStatus, + atmVcCrossConnectH2LOperStatus, + atmVcCrossConnectL2HLastChange, + atmVcCrossConnectH2LLastChange, + atmVcCrossConnectRowStatus, + atmVclCrossConnectIdentifier, + atmVcCrossConnectIndexNext } + STATUS current + DESCRIPTION + "A collection of objects providing + information about a VC cross-connect + for PVCs. These objects are not used + for Soft PVCs or SVCs." + ::= { atmMIBGroups 17 } + + +-- Deprecated Definitions - Objects + +-- atmInterfaceAddressType +-- atmTrafficQoSClass + + +-- Deprecated Definitions - Compliance + +atmMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities + including networks which have ATM and + AAL5 interfaces." + + MODULE -- this module + MANDATORY-GROUPS {atmInterfaceConfGroup, + atmTrafficDescrGroup} + + OBJECT atmInterfaceMaxVpcs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxVccs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxActiveVpiBits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMaxActiveVciBits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceIlmiVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceIlmiVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMyNeighborIpAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmInterfaceMyNeighborIfName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam1 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrParam5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficQoSClass + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmTrafficDescrRowStatus + SYNTAX INTEGER {active(1)} + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + GROUP atmInterfaceDs3PlcpGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement the + DS3 PLCP layer." + GROUP atmInterfaceTCGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement the + TC Sublayer." + + GROUP atmVpcTerminationGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that terminate VPCs (i.e., ones which + are NOT cross-connected to other VPLs)." + + GROUP atmVpCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VPLs that are not associated with VCLs + and are cross-connected to other VPLs." + + OBJECT atmVplAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplReceiveTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplTransmitTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVplRowStatus + SYNTAX INTEGER {active(1)} + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT atmVpCrossConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVpCrossConnectRowStatus + SYNTAX INTEGER {active(1)} + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + GROUP atmVccTerminationGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that terminate VCCs (i.e., ones which + are NOT cross-connected to other VCLs)." + + GROUP atmVcCrossConnectGroup + DESCRIPTION + "This group is mandatory only for those + ATM interfaces which implement ATM + VCLs that are cross-connected to + other VCLs." + + OBJECT atmVclAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclReceiveTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclTransmitTrafficDescrIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAalType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclRowStatus + SYNTAX INTEGER {active(1)} + + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT atmVcCrossConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVcCrossConnectRowStatus + SYNTAX INTEGER { active(1)} + -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + GROUP aal5VccGroup + DESCRIPTION + "This group is mandatory for the + AAL5 virtual connections only." + + OBJECT atmVccAal5CpcsTransmitSduSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAal5CpcsReceiveSduSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVccAal5EncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { atmMIBCompliances 1 } + + +-- Deprecated Definitions - Groups + +atmInterfaceConfGroup OBJECT-GROUP + OBJECTS { + atmInterfaceMaxVpcs, atmInterfaceMaxVccs, + atmInterfaceConfVpcs, atmInterfaceConfVccs, + atmInterfaceMaxActiveVpiBits, + atmInterfaceMaxActiveVciBits, + atmInterfaceIlmiVpi, + atmInterfaceIlmiVci, + atmInterfaceAddressType, + atmInterfaceAdminAddress, + atmInterfaceMyNeighborIpAddress, + atmInterfaceMyNeighborIfName } + STATUS deprecated + DESCRIPTION + "A collection of objects providing configuration + information about an ATM interface." + ::= { atmMIBGroups 1 } + +atmTrafficDescrGroup OBJECT-GROUP + OBJECTS { + atmTrafficDescrType, atmTrafficDescrParam1, + atmTrafficDescrParam2, atmTrafficDescrParam3, + atmTrafficDescrParam4, atmTrafficDescrParam5, + atmTrafficQoSClass, atmTrafficDescrRowStatus} + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + about ATM traffic descriptor type and + the associated parameters." + ::= { atmMIBGroups 2 } + +atmVpcTerminationGroup OBJECT-GROUP + OBJECTS {atmVplOperStatus, atmVplAdminStatus, + atmVplLastChange, + atmVplReceiveTrafficDescrIndex, + atmVplTransmitTrafficDescrIndex, + atmVplRowStatus } + STATUS deprecated + DESCRIPTION + "A collection of objects providing + information about a VPL at an ATM interface + which terminates a VPC + (i.e., one which is NOT cross-connected + to other VPLs)." + ::= { atmMIBGroups 5 } + +atmVccTerminationGroup OBJECT-GROUP + OBJECTS {atmVclOperStatus, atmVclAdminStatus, + atmVclLastChange, + atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex, + atmVccAalType, atmVclRowStatus } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + about a VCL at an ATM interface + which terminates a VCC (i.e., one which is + NOT cross-connected to other VCLs)." + ::= { atmMIBGroups 6 } + +atmVpCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVplReceiveTrafficDescrIndex, + atmVplTransmitTrafficDescrIndex, + atmVplOperStatus, atmVplRowStatus, + atmVpCrossConnectAdminStatus, + atmVpCrossConnectL2HOperStatus, + atmVpCrossConnectH2LOperStatus, + atmVpCrossConnectL2HLastChange, + atmVpCrossConnectH2LLastChange, + atmVpCrossConnectRowStatus, + atmVplCrossConnectIdentifier, + atmVpCrossConnectIndexNext } + STATUS deprecated + DESCRIPTION + "A collection of objects providing + information about a VP cross-connect + and the associated VPLs that are + cross-connected together." + ::= { atmMIBGroups 7 } + +atmVcCrossConnectGroup OBJECT-GROUP + OBJECTS { atmVclReceiveTrafficDescrIndex, + atmVclTransmitTrafficDescrIndex, + atmVclOperStatus, atmVclRowStatus, + atmVcCrossConnectAdminStatus, + atmVcCrossConnectL2HOperStatus, + atmVcCrossConnectH2LOperStatus, + atmVcCrossConnectL2HLastChange, + atmVcCrossConnectH2LLastChange, + atmVcCrossConnectRowStatus, + atmVclCrossConnectIdentifier, + atmVcCrossConnectIndexNext } + STATUS deprecated + DESCRIPTION + "A collection of objects providing + information about a VC cross-connect + and the associated VCLs that are + cross-connected together." + ::= { atmMIBGroups 8 } + + +-- {atmMIB 3} has been used by [19]. + +END diff --git a/mibs/ietf/ATM-TC-MIB b/mibs/ietf/ATM-TC-MIB new file mode 100644 index 0000000..b5acf32 --- /dev/null +++ b/mibs/ietf/ATM-TC-MIB @@ -0,0 +1,710 @@ + ATM-TC-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, + TimeTicks, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + + + atmTCMIB MODULE-IDENTITY + LAST-UPDATED "9810190200Z" + ORGANIZATION "IETF AToMMIB Working Group" + CONTACT-INFO + " Michael Noto + Postal: 3Com Corporation + 5400 Bayfront Plaza, M/S 3109 + Santa Clara, CA 95052 + USA + Tel: +1 408 326 2218 + E-mail: mike_noto@3com.com + + Ethan Mickey Spiegel + Postal: Cisco Systems + 170 W. Tasman Dr. + San Jose, CA 95134 + USA + Tel: +1 408 526 6408 + E-mail: mspiegel@cisco.com + + Kaj Tesink + Postal: Bellcore + 331 Newman Springs Road + Red Bank, NJ 07701 + USA + Tel: +1 732 758 5254 + Fax: +1 732 758 4177 + E-mail: kaj@bellcore.com" + DESCRIPTION + "This MIB Module provides Textual Conventions + and OBJECT-IDENTITY Objects to be used by + ATM systems." + ::= { mib-2 37 3 } -- atmMIB 3 (see [3]) + + -- The Textual Conventions defined below are organized + -- alphabetically + + + AtmAddr ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x" + STATUS current + DESCRIPTION + "An ATM address. The semantics are implied by + the length. The address types are: - no + address (0 octets) - E.164 (8 octets) - NSAP + (20 octets) In addition, when subaddresses + are used the AtmAddr may represent the + concatenation of address and subaddress. The + associated address types are: - E.164, E.164 + (16 octets) - E.164, NSAP (28 octets) - NSAP, + NSAP (40 octets) Address lengths other than + defined in this definition imply address + types defined elsewhere. Note: The E.164 + address is encoded in BCD format." + SYNTAX OCTET STRING (SIZE(0..40)) + + + AtmConnCastType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of topology of a connection (point- + to-point, point-to-multipoint). In the case + of point-to-multipoint, the orientation of + this VPL or VCL in the connection. + On a host: + - p2mpRoot indicates that the host + is the root of the p2mp connection. + - p2mpLeaf indicates that the host + is a leaf of the p2mp connection. + On a switch interface: + - p2mpRoot indicates that cells received + by the switching fabric from the interface + are from the root of the p2mp connection. + - p2mpLeaf indicates that cells transmitted + to the interface from the switching fabric + are to the leaf of the p2mp connection." + SYNTAX INTEGER { + p2p(1), + p2mpRoot(2), + p2mpLeaf(3) + } + + AtmConnKind ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of call control used for an ATM + connection at a particular interface. The use + is as follows: + pvc(1) + Virtual link of a PVC. Should not be + used for an PVC/SVC (i.e., Soft PVC) + crossconnect. + svcIncoming(2) + Virtual link established after a + received signaling request to setup + an SVC. + svcOutgoing(3) + Virtual link established after a + transmitted or forwarded signaling + request to setup an SVC. + spvcInitiator(4) + Virtual link at the PVC side of an + SVC/PVC crossconnect, where the + switch is the initiator of the Soft PVC + setup. + spvcTarget(5) + Virtual link at the PVC side of an + SVC/PVC crossconnect, where the + switch is the target of the Soft PVC + setup. + + For PVCs, a pvc virtual link is always cross- + connected to a pvc virtual link. + + For SVCs, an svcIncoming virtual link is always cross- + connected to an svcOutgoing virtual link. + +For Soft PVCs, an spvcInitiator is either cross-connected to +an svcOutgoing or an spvcTarget, and an spvcTarget is either +cross-connected to an svcIncoming or an spvcInitiator." + SYNTAX INTEGER { + pvc(1), + svcIncoming(2), + svcOutgoing(3), + spvcInitiator(4), + spvcTarget(5) + } + + AtmIlmiNetworkPrefix ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A network prefix used for ILMI address + registration. In the case of ATM endsystem + addresses (AESAs), the network prefix is the first + 13 octets of the address which includes the AFI, + IDI, and HO-DSP fields. In the case of native + E.164 addresses, the network prefix is the entire + E.164 address encoded in 8 octets, as if it were + an E.164 IDP in an ATM endsystem address + structure." + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, + af-ilmi-0065.000, September 1996, Section 9 + ATM Forum, ATM User-Network Interface Signalling + Specification, Version 4.0 (UNI 4.0), + af-sig-0061.000, June 1996, Section 3" + SYNTAX OCTET STRING (SIZE(8|13)) + +AtmInterfaceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The connection setup procedures used for the + identified interface. + + Other: Connection setup procedures other than + those listed below. + Auto-configuration: + Indicates that the connection setup + procedures are to be determined dynamically, + or that determination has not yet been + completed. One such mechanism is via ATM + Forum ILMI auto-configuration procedures. + + ITU-T DSS2: + - ITU-T Recommendation Q.2931, Broadband + Integrated Service Digital Network (B-ISDN) + Digital Subscriber Signalling System No.2 + (DSS2) User-Network Interface (UNI) Layer 3 + Specification for Basic Call/Connection + Control (September 1994) + - ITU-T Draft Recommendation Q.2961, + B-ISDN DSS 2 Support of Additional Traffic + Parameters (May 1995) + + - ITU-T Draft Recommendation Q.2971, + B-ISDN DSS 2 User Network Interface Layer 3 + Specification for Point-to-multipoint + Call/connection Control (May 1995) + + ATM Forum UNI 3.0: + ATM Forum, ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, + (1994). + + ATM Forum UNI 3.1: + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + (November 1994). + + ATM Forum UNI Signalling 4.0: + ATM Forum, ATM User-Network Interface (UNI) + Signalling Specification Version 4.0, + af-sig-0061.000 (June 1996). + + ATM Forum IISP (based on UNI 3.0 or UNI 3.1) : + Interim Inter-switch Signaling Protocol + (IISP) Specification, Version 1.0, + af-pnni-0026.000, (December 1994). + + ATM Forum PNNI 1.0 : + ATM Forum, Private Network-Network Interface + Specification, Version 1.0, af-pnni-0055.000, + (March 1996). + ATM Forum B-ICI: + ATM Forum, B-ICI Specification, Version 2.0, + af-bici-0013.002, (November 1995). + + ATM Forum UNI PVC Only: + An ATM Forum compliant UNI with the + signalling disabled. + ATM Forum NNI PVC Only: + An ATM Forum compliant NNI with the + signalling disabled." + SYNTAX INTEGER { + other(1), + autoConfig(2), + ituDss2(3), + atmfUni3Dot0(4), + atmfUni3Dot1(5), + atmfUni4Dot0(6), + atmfIispUni3Dot0(7), + atmfIispUni3Dot1(8), + atmfIispUni4Dot0(9), + atmfPnni1Dot0(10), + atmfBici2Dot0(11), + atmfUniPvcOnly(12), + atmfNniPvcOnly(13) } + +AtmServiceCategory ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The service category for a connection." + REFERENCE + "ATM Forum Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + SYNTAX INTEGER { + other(1), -- none of the following + cbr(2), -- constant bit rate + rtVbr(3), -- real-time variable bit rate + nrtVbr(4), -- non real-time variable bit rate + abr(5), -- available bit rate + ubr(6) -- unspecified bit rate + } + +AtmSigDescrParamIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of this object identifies a row in the + atmSigDescrParamTable. The value 0 signifies that + none of the signalling parameters defined in the + atmSigDescrParamTable are applicable." + SYNTAX INTEGER (0..2147483647) + +AtmTrafficDescrParamIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of this object identifies a row in the + atmTrafficDescrParamTable. The value 0 signifies + that no row has been identified." + SYNTAX INTEGER (0..2147483647) + +AtmVcIdentifier ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The VCI value for a VCL. The maximum VCI value + cannot exceed the value allowable by + atmInterfaceMaxVciBits defined in ATM-MIB." + SYNTAX INTEGER (0..65535) + +AtmVpIdentifier ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The VPI value for a VPL or VCL. The value VPI=0 + is only allowed for a VCL. For ATM UNIs supporting + VPCs the VPI value ranges from 0 to 255. The VPI + value 0 is supported for ATM UNIs conforming to + the ATM Forum UNI 4.0 Annex 8 (Virtual UNIs) + specification. For ATM UNIs supporting VCCs the + VPI value ranges from 0 to 255. For ATM NNIs the + VPI value ranges from 0 to 4095. The maximum VPI + value cannot exceed the value allowable by + atmInterfaceMaxVpiBits defined in ATM-MIB." + SYNTAX INTEGER (0..4095) + +AtmVorXAdminStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value determines the desired administrative + status of a virtual link or cross-connect. The up + and down states indicate that the traffic flow is + enabled or disabled respectively on the virtual + link or cross-connect." + SYNTAX INTEGER { + up(1), + down(2) + } + +AtmVorXLastChange ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of MIB II's sysUpTime at the time a + virtual link or cross-connect entered its current + operational state. If the current state was + entered prior to the last re-initialization of the + agent then this object contains a zero value." + SYNTAX TimeTicks + +AtmVorXOperStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value determines the operational status of a + virtual link or cross-connect. The up and down + states indicate that the traffic flow is enabled + or disabled respectively on the virtual link or + cross-connect. The unknown state indicates that + the state of it cannot be determined. The state + will be down or unknown if the supporting ATM + interface(s) is down or unknown respectively." + SYNTAX INTEGER { + up(1), + down(2), + unknown(3) + } + + + + +-- OBJECT-IDENTITIES: + +-- The following atmTrafficDescriptorTypes has been moved +-- from RFC1695 and no longer appear in the revision of +-- RFC1695[3]. + +atmTrafficDescriptorTypes OBJECT IDENTIFIER ::= {mib-2 37 1 1} + -- atmMIBObjects + -- See [3]. + +-- All other and new OBJECT IDENTITIES +-- are defined under the following subtree: + + atmObjectIdentities OBJECT IDENTIFIER ::= {atmTCMIB 1} + +-- The following values are defined for use as +-- possible values of the ATM traffic descriptor type. + +atmNoTrafficDescriptor OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION + "This identifies the no ATM traffic + descriptor type. Parameters 1, 2, 3, 4, + and 5 are not used. This traffic descriptor + type can be used for best effort traffic." + ::= {atmTrafficDescriptorTypes 1} + +atmNoClpNoScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + and no Sustained Cell Rate. The use of the + parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: not used + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 2} + +atmClpNoTaggingNoScr OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION + "This traffic descriptor is for CLP without + tagging and no Sustained Cell Rate. The use + of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: peak cell rate in cells/second + for CLP=0 traffic + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used." + ::= {atmTrafficDescriptorTypes 3} + +atmClpTaggingNoScr OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION + "This traffic descriptor is for CLP with + tagging and no Sustained Cell Rate. The use + of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: peak cell rate in cells/second + for CLP=0 traffic, excess + tagged as CLP=1 + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used." + ::= {atmTrafficDescriptorTypes 4} + +atmNoClpScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + with Sustained Cell Rate. The use of the + parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0+1 traffic + Parameter 3: maximum burst size in cells + Parameter 4: not used + Parameter 5: not used." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 5} + +atmClpNoTaggingScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + Sustained Cell Rate and no tagging. The use + of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0 traffic + Parameter 3: maximum burst size in cells + Parameter 4: not used + Parameter 5: not used." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 6} + +atmClpTaggingScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + tagging and Sustained Cell Rate. The use of + the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0 traffic, excess tagged as + CLP=1 + Parameter 3: maximum burst size in cells + Parameter 4: not used + Parameter 5: not used." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 7} + +atmClpNoTaggingMcr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + Minimum Cell Rate and no tagging. The use of + the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: CDVT in tenths of microseconds + Parameter 3: minimum cell rate in cells/second + Parameter 4: unused + Parameter 5: unused." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994." + ::= {atmTrafficDescriptorTypes 8} + +atmClpTransparentNoScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for the CLP- + transparent model and no Sustained Cell Rate. + The use of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: CDVT in tenths of microseconds + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the CBR.1 conformance + definition. + + Connections specifying this traffic descriptor + type will be rejected at UNI 3.0 or UNI 3.1 + interfaces. For a similar traffic descriptor + type that can be accepted at UNI 3.0 and + UNI 3.1 interfaces, see atmNoClpNoScr." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 9} + +atmClpTransparentScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for the CLP- + transparent model with Sustained Cell Rate. + The use of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0+1 traffic + Parameter 3: maximum burst size in cells + Parameter 4: CDVT in tenths of microseconds + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the VBR.1 conformance + definition. + Connections specifying this traffic descriptor + type will be rejected at UNI 3.0 or UNI 3.1 + interfaces. For a similar traffic descriptor + type that can be accepted at UNI 3.0 and + UNI 3.1 interfaces, see atmNoClpScr." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 10} + +atmNoClpTaggingNoScr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + with tagging and no Sustained Cell Rate. The + use of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: CDVT in tenths of microseconds + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the UBR.2 conformance + definition ." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 11} + +atmNoClpNoScrCdvt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + and no Sustained Cell Rate. The use of the + parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: CDVT in tenths of microseconds + Parameter 3: not used + Parameter 4: not used + Parameter 5: not used. + + This traffic descriptor type is applicable to + CBR connections following the UNI 3.0/3.1 + conformance definition for PCR CLP=0+1. + These CBR connections differ from CBR.1 + connections in that the CLR objective + applies only to the CLP=0 cell flow. + + This traffic descriptor type is also + applicable to connections following the UBR.1 + conformance definition." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 12} + +atmNoClpScrCdvt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for no CLP + with Sustained Cell Rate. The use of the + parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0+1 traffic + Parameter 3: maximum burst size in cells + Parameter 4: CDVT in tenths of microseconds + Parameter 5: not used. + + This traffic descriptor type is applicable + to VBR connections following the UNI 3.0/3.1 + conformance definition for PCR CLP=0+1 and + SCR CLP=0+1. These VBR connections + differ from VBR.1 connections in that + the CLR objective applies only to the CLP=0 + cell flow." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 13} + +atmClpNoTaggingScrCdvt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + Sustained Cell Rate and no tagging. The use + of the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0 traffic + Parameter 3: maximum burst size in cells + Parameter 4: CDVT in tenths of microseconds + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the VBR.2 conformance + definition." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 14} + +atmClpTaggingScrCdvt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This traffic descriptor type is for CLP with + tagging and Sustained Cell Rate. The use of + the parameter vector for this type: + Parameter 1: peak cell rate in cells/second + for CLP=0+1 traffic + Parameter 2: sustainable cell rate in cells/second + for CLP=0 traffic, excess tagged as + CLP=1 + Parameter 3: maximum burst size in cells + Parameter 4: CDVT in tenths of microseconds + Parameter 5: not used. + + This traffic descriptor type is applicable to + connections following the VBR.3 conformance + definition." + REFERENCE + "ATM Forum,ATM User-Network Interface, + Version 3.0 (UNI 3.0) Specification, 1994. + ATM Forum, ATM User-Network Interface, + Version 3.1 (UNI 3.1) Specification, + November 1994. + ATM Forum, Traffic Management Specification, + Version 4.0, af-tm-0056.000, June 1996." + ::= {atmTrafficDescriptorTypes 15} + +END diff --git a/mibs/ietf/ATM2-MIB b/mibs/ietf/ATM2-MIB new file mode 100644 index 0000000..4db8fa8 --- /dev/null +++ b/mibs/ietf/ATM2-MIB @@ -0,0 +1,3452 @@ +ATM2-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Gauge32, Counter32, Integer32 + FROM SNMPv2-SMI + TruthValue, RowStatus, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InterfaceIndex, InterfaceIndexOrZero, ifIndex + FROM IF-MIB + atmMIBObjects, atmInterfaceConfEntry, + atmVplEntry, atmVplVpi, + atmVclEntry, atmVclVpi, atmVclVci, + + + + atmVpCrossConnectEntry, atmVcCrossConnectEntry + FROM ATM-MIB + AtmAddr, AtmSigDescrParamIndex, + AtmInterfaceType, AtmIlmiNetworkPrefix, + AtmVcIdentifier, AtmVpIdentifier, + AtmTrafficDescrParamIndex + FROM ATM-TC-MIB; + + atm2MIB MODULE-IDENTITY + LAST-UPDATED "200309230000Z" + ORGANIZATION "IETF AToMMIB Working Group" + CONTACT-INFO + "AToMMIB WG + http://www.ietf.org/html.charters/atommib-charter.html + Editors: + Faye Ly + Postal: Pedestal Networks + 6503 Dumbarton Circle + Fremont, CA 94555 + USA + Tel: +1 510 896 2908 + E-Mail: faye@pedestalnetworks.com + + Michael Noto + Postal: Cisco Systems + 170 W. Tasman Drive + San Jose, CA 95134-1706 + USA + + E-mail: mnoto@cisco.com + + Andrew Smith + Postal: Consultant + + E-Mail: ah_smith@acm.org + + Ethan Mickey Spiegel + Postal: Cisco Systems + 170 W. Tasman Drive + San Jose, CA 95134-1706 + USA + Tel: +1 408 526 6408 + Fax: +1 408 526 6488 + E-Mail: mspiegel@cisco.com + + Kaj Tesink + Postal: Telcordia Technologies + 331 Newman Springs Road + + + + Red Bank, NJ 07701 + USA + Tel: +1 732 758 5254 + E-mail: kaj@research.telcordia.com" + DESCRIPTION + "Copyright (C) The Internet Society (2003). This version of + this MIB module is part of RFC 3606; see the RFC itself for + full legal notices. + + This MIB Module is a supplement to the ATM-MIB + defined in RFC 2515." + REVISION "200309230000Z" + DESCRIPTION + "Initial version of this MIB, published as RFC 3606." + + ::= { atmMIBObjects 14 } + + atm2MIBObjects OBJECT IDENTIFIER ::= {atm2MIB 1} + + atm2MIBTraps OBJECT IDENTIFIER ::= {atm2MIB 2} + + -- This ATM2-MIB Module consists of the following tables, + -- plus ATM trap support: + -- 1. atmSvcVpCrossConnectTable + -- 2. atmSvcVcCrossConnectTable + -- 3. atmSigStatTable + -- 4. atmSigSupportTable + -- 5. atmSigDescrParamTable + -- 6. atmIfRegisteredAddrTable + -- 7. atmVclAddrTable + -- 8. atmAddrVclTable + -- 9. atmVplStatTable + -- 10. atmVplLogicalPortTable + -- 11. atmVclStatTable + -- 12. atmAal5VclStatTable + -- 13. atmVclGenTable + -- 14. atmInterfaceExtTable + -- 15. atmIlmiSrvcRegTable + -- 16. atmIlmiNetworkPrefixTable + -- 17. atmSwitchAddressTable + -- 18. atmVpCrossConnectXTable + -- 19. atmVcCrossConnectXTable + -- 20. atmCurrentlyFailingPVplTable + -- 21. atmCurrentlyFailingPVclTable + + -- 1. ATM VPL SVC Cross-Connect Table + + atmSvcVpCrossConnectTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF + AtmSvcVpCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM SVPC Cross-Connect table. A + bi-directional VP cross-connect between two + switched VPLs is modeled as one entry in this + table. A Soft PVPC cross-connect, between a + soft permanent VPL and a switched VPL, is + also modeled as one entry in this table." + ::= { atm2MIBObjects 1 } + + atmSvcVpCrossConnectEntry OBJECT-TYPE + SYNTAX AtmSvcVpCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM SVPC Cross-Connect table. + This entry is used to model a bi-directional + ATM VP cross-connect between two VPLs." + INDEX { atmSvcVpCrossConnectIndex, + atmSvcVpCrossConnectLowIfIndex, + atmSvcVpCrossConnectLowVpi, + atmSvcVpCrossConnectHighIfIndex, + atmSvcVpCrossConnectHighVpi } + ::= { atmSvcVpCrossConnectTable 1 } + + AtmSvcVpCrossConnectEntry ::= SEQUENCE { + atmSvcVpCrossConnectIndex INTEGER, + atmSvcVpCrossConnectLowIfIndex InterfaceIndex, + atmSvcVpCrossConnectLowVpi AtmVpIdentifier, + atmSvcVpCrossConnectHighIfIndex InterfaceIndex, + atmSvcVpCrossConnectHighVpi AtmVpIdentifier, + atmSvcVpCrossConnectCreationTime TimeStamp, + atmSvcVpCrossConnectRowStatus RowStatus + } + + atmSvcVpCrossConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify this SVPC + cross-connect. For each VP associated + with this cross-connect, the agent reports + this cross-connect index value in the + atmVplCrossConnectIdentifer attribute of the + + + + corresponding atmVplTable entries." + ::= { atmSvcVpCrossConnectEntry 1 } + + atmSvcVpCrossConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + ifIndex value of the ATM interface port for this + SVPC cross-connect. The term low implies + that this ATM interface has the numerically lower + ifIndex value than the other ATM interface + identified in the same atmSvcVpCrossConnectEntry." + ::= { atmSvcVpCrossConnectEntry 2 } + + atmSvcVpCrossConnectLowVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VPI + value associated with the SVPC cross-connect + at the ATM interface that is identified by + atmSvcVpCrossConnectLowIfIndex. The VPI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvpcVpi at the low ATM interface + port." + ::= { atmSvcVpCrossConnectEntry 3 } + + atmSvcVpCrossConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + ifIndex value of the ATM interface port for + this SVC VP cross-connect. The term high + implies that this ATM interface has the + numerically higher ifIndex value than the + other ATM interface identified in the same + atmSvcVpCrossConnectEntry." + ::= { atmSvcVpCrossConnectEntry 4 } + + atmSvcVpCrossConnectHighVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The value of this object is equal to the VPI + value associated with the SVPC cross-connect + at the ATM interface that is identified by + atmSvcVpCrossConnectHighIfIndex. The VPI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvpcVpi at the high ATM interface + port." + ::= { atmSvcVpCrossConnectEntry 5 } + + atmSvcVpCrossConnectCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object + at the time this bi-directional SVPC + cross-connect was created. If the current + state was entered prior to the last + re-initialization of the agent, then this + object contains a zero value." + ::= { atmSvcVpCrossConnectEntry 6 } + + atmSvcVpCrossConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to delete rows in the + atmSvcVpCrossConnectTable." + ::= { atmSvcVpCrossConnectEntry 7 } + + -- 2. ATM VCL SVC Cross-Connect Table + + atmSvcVcCrossConnectTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSvcVcCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM SVCC Cross-Connect table. A + bi-directional VC cross-connect between two + switched VCLs is modeled as one entry in + this table. A Soft PVCC cross-connect, + between a soft permanent VCL and a switched + VCL, is also modeled as one entry in this + table." + ::= { atm2MIBObjects 2 } + + + + + atmSvcVcCrossConnectEntry OBJECT-TYPE + SYNTAX AtmSvcVcCrossConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM SVCC Cross-Connect table. + This entry is used to model a bi-directional ATM + VC cross-connect between two VCLs." + INDEX { atmSvcVcCrossConnectIndex, + atmSvcVcCrossConnectLowIfIndex, + atmSvcVcCrossConnectLowVpi, + atmSvcVcCrossConnectLowVci, + atmSvcVcCrossConnectHighIfIndex, + atmSvcVcCrossConnectHighVpi, + atmSvcVcCrossConnectHighVci } + ::= { atmSvcVcCrossConnectTable 1 } + + AtmSvcVcCrossConnectEntry ::= SEQUENCE { + atmSvcVcCrossConnectIndex INTEGER, + atmSvcVcCrossConnectLowIfIndex InterfaceIndex, + atmSvcVcCrossConnectLowVpi AtmVpIdentifier, + atmSvcVcCrossConnectLowVci AtmVcIdentifier, + atmSvcVcCrossConnectHighIfIndex InterfaceIndex, + atmSvcVcCrossConnectHighVpi AtmVpIdentifier, + atmSvcVcCrossConnectHighVci AtmVcIdentifier, + atmSvcVcCrossConnectCreationTime TimeStamp, + atmSvcVcCrossConnectRowStatus RowStatus + } + + atmSvcVcCrossConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify this SVCC cross-connect. + For each VP associated with this cross-connect, the + agent reports this cross-connect index value in the + atmVclCrossConnectIdentifier attribute of the + corresponding atmVplTable entries." + ::= { atmSvcVcCrossConnectEntry 1 } + + atmSvcVcCrossConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + ifIndex value of the ATM interface port for this + + + + SVCC cross-connect. The term low implies that + this ATM interface has the numerically lower + ifIndex value than the other ATM interface + identified in the same atmSvcVcCrossConnectEntry." + ::= { atmSvcVcCrossConnectEntry 2 } + + atmSvcVcCrossConnectLowVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VPI + value associated with the SVCC cross-connect + at the ATM interface that is identified by + atmSvcVcCrossConnectLowIfIndex. The VPI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvccVpi at the low ATM interface + port." + ::= { atmSvcVcCrossConnectEntry 3 } + + atmSvcVcCrossConnectLowVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VCI + value associated with the SVCC cross-connect + at the ATM interface that is identified by + atmSvcVcCrossConnectLowIfIndex. The VCI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvccVci at the low ATM interface + port." + ::= { atmSvcVcCrossConnectEntry 4 } + + atmSvcVcCrossConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + ifIndex value for the ATM interface port for + this SVCC cross-connect. The term high implies + that this ATM interface has the numerically + higher ifIndex value than the other ATM interface + identified in the same atmSvcVcCrossConnectEntry." + ::= { atmSvcVcCrossConnectEntry 5 } + + atmSvcVcCrossConnectHighVpi OBJECT-TYPE + + + + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VPI + value associated with the SVCC cross-connect + at the ATM interface that is identified by + atmSvcVcCrossConnectHighIfIndex. The VPI value + cannot exceed the number supported by the + atmInterfaceCurrentMaxSvccVpi at the high ATM interface + port." + ::= { atmSvcVcCrossConnectEntry 6 } + + atmSvcVcCrossConnectHighVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the VCI + value associated with the SVCC cross-connect + at the ATM interface that is identified by + atmSvcVcCrossConnectHighIfIndex. The VCI value + cannot exceed the number supported by the + atmInterfaceMaxVciBits at the high ATM interface + port." + ::= { atmSvcVcCrossConnectEntry 7 } + + atmSvcVcCrossConnectCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object + at the time this bi-directional SVCC + cross-connect was created. If the current + state was entered prior to the last + re-initialization of the agent, then this + object contains a zero value." + ::= { atmSvcVcCrossConnectEntry 8 } + + atmSvcVcCrossConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to delete rows in the + atmSvcVcCrossConnectTable." + ::= { atmSvcVcCrossConnectEntry 9 } + + + + -- 3. ATM Interface Signalling Statistics Table -- + + atmSigStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSigStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM interface signalling + statistics, one entry per ATM signalling + interface." + ::= { atm2MIBObjects 3 } + + atmSigStatEntry OBJECT-TYPE + SYNTAX AtmSigStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains signalling statistics variables." + INDEX { ifIndex } + ::= { atmSigStatTable 1} + + AtmSigStatEntry ::= SEQUENCE { + atmSigSSCOPConEvents Counter32, + atmSigSSCOPErrdPdus Counter32, + atmSigDetectSetupAttempts Counter32, + atmSigEmitSetupAttempts Counter32, + atmSigDetectUnavailRoutes Counter32, + atmSigEmitUnavailRoutes Counter32, + atmSigDetectUnavailResrcs Counter32, + atmSigEmitUnavailResrcs Counter32, + atmSigDetectCldPtyEvents Counter32, + atmSigEmitCldPtyEvents Counter32, + atmSigDetectMsgErrors Counter32, + atmSigEmitMsgErrors Counter32, + atmSigDetectClgPtyEvents Counter32, + atmSigEmitClgPtyEvents Counter32, + atmSigDetectTimerExpireds Counter32, + atmSigEmitTimerExpireds Counter32, + atmSigDetectRestarts Counter32, + atmSigEmitRestarts Counter32, + atmSigInEstabls Counter32, + atmSigOutEstabls Counter32 + } + + atmSigSSCOPConEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "SSCOP Connection Events Counter. This counter counts + the sum of the following errors: + + 1) SSCOP Connection Disconnect Counter + + The abnormal occurrence of this event is + characterized by the expiry of Timer_NO_RESPONSE. + (This event is communicated to the layer management + with MAA-ERROR code P. See ITU-T Q.2110.) + + 2) SSCOP Connection Initiation Failure + + This condition indicates the inability to establish + an SSCOP connection. This event occurs whenever the + number of expiries of the connection control timer + (Timer_CC) equals or exceeds the MaxCC, or upon + receipt of a connection reject message BGREJ PDU. + (This event is communicated to layer management with + MAA-ERROR code O. See ITU-T Q.2110.) + + 3) SSCOP Connection Re-Establ/Resynch + + This event occurs upon receipt of a BGN PDU or + RS PDU." + REFERENCE + "ITU-T Recommendation Q.2110, Broadband + Integrated Services Digital Network + (B-ISDN) - ATM Adaptation Layer - Service + Specific Connection Oriented Protocol (SSCOP) + Specification, July 1994." + ::= { atmSigStatEntry 1} + + atmSigSSCOPErrdPdus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "SSCOP Errored PDUs Counter. This counter counts the + sum of the following errors: + + 1) Invalid PDUs. + These are defined in SSCOP and consist of PDUs + with an incorrect length (MAA-ERROR code U), an + undefined PDU type code, or that are not 32-bit + aligned. + + 2) PDUs that result in MAA-ERROR codes and are + + + + discarded. + + See MAA-ERROR codes A-D, F-M, and Q-T defined in + ITU-T Q.2110." + REFERENCE + "ITU-T Recommendation Q.2110, Broadband + Integrated Services Digital Network + (B-ISDN) - ATM Adaptation Layer - Service + Specific Connection Oriented Protocol (SSCOP) + Specification, July 1994." + ::= { atmSigStatEntry 2 } + + atmSigDetectSetupAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Call Setup Attempts Counter. This counter counts + the number of call setup attempts (both successful + and unsuccessful) detected on this interface." + ::= { atmSigStatEntry 3 } + + atmSigEmitSetupAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Call Setup Attempts Counter. This counter counts + the number of call setup attempts (both successful + and unsuccessful) transmitted on this interface." + ::= { atmSigStatEntry 4 } + + atmSigDetectUnavailRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Route Unavailability detected on this interface. + This counter is incremented when a RELEASE, RELEASE COMPLETE + (only when not preceded by a RELEASE message for the same + call), ADD PARTY REJECT, or STATUS message that + contains one of the following cause code values is + received (Note: These cause values + apply to both UNI3.0 and UNI3.1): + + Cause Value Meaning + + + + + + 1 unallocated (unassigned) number + 2 no route to specified transit network + 3 no route to destination + + NOTE: For this counter, RELEASE COMPLETE + messages that are a reply to a previous RELEASE + message and contain the same cause value, are + redundant (for counting purposes) and should not + be counted." + + ::= { atmSigStatEntry 5 } + + atmSigEmitUnavailRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Route Unavailability transmitted from this + interface. This counter is incremented when a RELEASE, + RELEASE COMPLETE (only when not preceded by a RELEASE + message for the same call), ADD PARTY REJECT, or + STATUS message that contains one of the following cause + code values is transmitted (Note: These cause values apply + to both UNI3.0 and UNI3.1): + + Cause Value Meaning + + 1 unallocated (unassigned) number + 2 no route to specified transit network + 3 no route to destination + + NOTE: For this counter, RELEASE COMPLETE + messages that are a reply to a previous RELEASE + message and contain the same cause value, are + redundant (for counting purposes) and should not + be counted." + ::= { atmSigStatEntry 6 } + + atmSigDetectUnavailResrcs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Resource Unavailability detected on this + interface. This counter is incremented when a RELEASE, + RELEASE COMPLETE (only when not preceded by a RELEASE + message for the same call), ADD PARTY REJECT, or + STATUS message that contains one of the following + + + + cause code values is received (Note: These cause + values apply to both UNI3.0 and UNI3.1 unless + otherwise stated): + + Cause Value Meaning + + 35 requested VPCI/VCI not available + 37 user cell rate not available (UNI3.1 + only) + 38 network out of order + 41 temporary failure + 45 no VPCI/VCI available + 47 resource unavailable, unspecified + 49 Quality of Service unavailable + 51 user cell rate not available (UNI3.0 + only) + 58 bearer capability not presently + available + 63 Service or option not available, + unspecified + 92 too many pending add party requests + + NOTE: For this counter, RELEASE COMPLETE + messages that are a reply to a previous RELEASE + message and contain the same cause value, are + redundant (for counting purposes) and should not + be counted." + ::= { atmSigStatEntry 7 } + + atmSigEmitUnavailResrcs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Resource Unavailability transmitted from this + interface. This counter is incremented when a RELEASE, + RELEASE COMPLETE (only when not preceded by a RELEASE message + for the same call), ADD PARTY REJECT, or STATUS message that + contains one of the following cause code values is transmitted + (Note: These cause values apply to both UNI3.0 and UNI3.1 + unless otherwise stated): + + Cause Value Meaning + + 35 requested VPCI/VCI not available + 37 user cell rate not available (UNI3.1 + only) + 38 network out of order + + + + 41 temporary failure + 45 no VPCI/VCI available + 47 resource unavailable, unspecified + 49 Quality of Service unavailable + 51 user cell rate not available (UNI3.0 + only) + 58 bearer capability not presently + available + 63 Service or option not available, + unspecified + 92 too many pending add party requests + + NOTE: For this counter, RELEASE COMPLETE messages that are a + reply to a previous RELEASE message and contain the same cause + value, are redundant (for counting purposes) and should not be + counted." + + ::= { atmSigStatEntry 8 } + + atmSigDetectCldPtyEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Called Party Responsible For Unsuccessful Call + detected on this interface. This counter is incremented when a + RELEASE, RELEASE COMPLETE (only when not preceded by a RELEASE + message for the same call), ADD PARTY REJECT, or STATUS message + that contains one of the following cause code values is + received (Note: These cause values apply to both UNI3.0 and + UNI3.1): + + Cause Value Meaning + + 17 user busy + 18 no user responding + 21 call rejected + 22 number changed + 23 user rejects all calls with calling + line identification restriction (CLIR) + 27 destination out of order + 31 normal, unspecified + 88 incompatible destination + + + NOTE: For this counter, RELEASE COMPLETE messages that are a + reply to a previous RELEASE message and contain the same cause + value, are redundant (for counting purposes) and should not be + + + + counted. + + Note: Cause Value #30 'response to STATUS ENQUIRY' was not + included in this memo since it did not apply to a hard + failure." + + ::= { atmSigStatEntry 9 } + + atmSigEmitCldPtyEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "Number of Called Party Responsible For Unsuccessful Call + transmitted from this interface. This counter is incremented + when a RELEASE, RELEASE COMPLETE (only when not preceded by a + RELEASE message for the same call), ADD PARTY REJECT, or STATUS + message that contains one of the following cause code values is + transmitted (Note: These cause values apply to both UNI3.0 and + UNI3.1): + + Cause Value Meaning + + 17 user busy + 18 no user responding + 21 call rejected + 22 number changed + 23 user rejects all calls with calling + line identification restriction (CLIR) + 27 destination out of order + 31 normal, unspecified + 88 incompatible destination + + NOTE: For this counter, RELEASE COMPLETE messages that are a + reply to a previous RELEASE message and contain the same cause + value, are redundant (for counting purposes) and should not be + counted. + + Note: Cause Value #30 'response to STATUS ENQUIRY' was not + included in this memo since it did not apply to a hard failure." + + ::= { atmSigStatEntry 10 } + +atmSigDetectMsgErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Number of Incorrect Messages detected on this interface. The + Incorrect Messages Counter reflects any sort of incorrect + information in a message. This includes: + + - RELEASE, RELEASE COMPLETE, ADD PARTY REJECT, + and STATUS messages transmitted, that contain any of + the Cause values listed below. + + - Ignored messages. These messages are dropped + because the message was so damaged that it could + not be further processed. A list of dropped + messages is compiled below: + + 1. Message with invalid protocol discriminator + + 2. Message with errors in the call reference I.E. + - Bits 5-8 of the first octet not equal to + '0000' + - Bits 1-4 of the first octet indicating a + length other than 3 octets + - RELEASE COMPLETE message received with a + call reference that does not relate to a + call active or in progress + - SETUP message received with call reference + flag incorrectly set to 1 + - SETUP message received with a call + reference for a call that is already + active or in progress. + + 3. Message too short + + The following cause values are monitored by this counter (Note: + These cause values apply to both UNI3.0 and UNI3.1 unless + otherwise stated): + + Cause Value Meaning + + 10 VPCI/VCI unacceptable (UNI3.0 only) + 36 VPCI/VCI assignment failure (UNI3.1 only) + 81 invalid call reference value + 82 identified channel does not exist + 89 invalid endpoint reference + 96 mandatory information element is missing + 97 message type non-existent or not + implemented + 99 information element non-existent or not + implemented + + + + 100 invalid information element contents + 101 message not compatible with call state + 104 incorrect message length + 111 protocol error, unspecified + + NOTE: For this counter, RELEASE COMPLETE messages that are + a reply to a previous RELEASE message and contain the same + cause value, are redundant (for counting purposes) and + should not be counted." + + ::= { atmSigStatEntry 11 } + +atmSigEmitMsgErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Incorrect Messages transmitted on this interface. + The Incorrect Messages Counter reflects any sort of incorrect + information in a message. This includes: + + - RELEASE, RELEASE COMPLETE, ADD PARTY REJECT, + and STATUS messages transmitted or + received, that contain any of the Cause values + listed below. + + - Ignored messages. These messages are dropped + because the message was so damaged that it could + not be further processed. A list of dropped + messages is compiled below: + + 1. Message with invalid protocol discriminator + + 2. Message with errors in the call reference I.E. + - Bits 5-8 of the first octet not equal to + '0000' + - Bits 1-4 of the first octet indicating a + length other than 3 octets + - RELEASE COMPLETE message received with a + call reference that does not relate to a + call active or in progress + - SETUP message received with call reference + flag incorrectly set to 1 + - SETUP message received with a call + reference for a call that is already + active or in progress. + + 3. Message too short + + + + The following cause values are monitored by this counter + (Note: These cause values apply to both UNI3.0 and UNI3.1 + unless otherwise stated): + + Cause Value Meaning + + 10 VPCI/VCI unacceptable (UNI3.0 only) + 36 VPCI/VCI assignment failure (UNI3.1 only) + 81 invalid call reference value + 82 identified channel does not exist + 89 invalid endpoint reference + 96 mandatory information element is missing + 97 message type non-existent or not + implemented + 99 information element non-existent or not + implemented + 100 invalid information element contents + 101 message not compatible with call state + 104 incorrect message length + 111 protocol error, unspecified + + NOTE: For this counter, RELEASE COMPLETE messages that are + a reply to a previous RELEASE message and contain the same + cause value, are redundant (for counting purposes) and + should not be counted." + + ::= { atmSigStatEntry 12 } + +atmSigDetectClgPtyEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Calling Party Events detected on this interface. + This counter monitors error events that occur due to the + originating user doing something wrong. This counter is + incremented when a RELEASE, RELEASE COMPLETE (only when not + preceded by a RELEASE message for the same call), ADD PARTY + REJECT, or STATUS message that contains one of the following + cause code values is received (Note: These cause values + apply to both UNI3.0 and UNI3.1): + + Cause Value Meaning + + 28 invalid number format (address incomplete) + 43 access information discarded + 57 bearer capability not authorized + 65 bearer capability not implemented + + + + 73 unsupported combination of traffic + parameters + 78 AAL parameters cannot be supported (UNI3.1 + only) + 91 invalid transit network selection + 93 AAL parameters cannot be supported (UNI3.0 + only) + + NOTE: For this counter, RELEASE COMPLETE messages that + are a reply to a previous RELEASE message and contain + the same cause value, are redundant (for counting purposes) + and should not be counted." + + ::= { atmSigStatEntry 13 } + +atmSigEmitClgPtyEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Calling Party Events transmitted from this interface. + This counter monitors error events that occur due to the + originating user doing something wrong. This counter is + incremented when a RELEASE, RELEASE COMPLETE (only when not + preceded by a RELEASE message for the same call), ADD PARTY + REJECT, or STATUS message that contains one of the following + cause code values is transmitted (Note: These cause values + apply to both UNI3.0 and UNI3.1): + + Cause Value Meaning + + 28 invalid number format (address incomplete) + 43 access information discarded + 57 bearer capability not authorized + 65 bearer capability not implemented + 73 unsupported combination of traffic + parameters + 78 AAL parameters cannot be supported (UNI3.1 + only) + 91 invalid transit network selection + 93 AAL parameters cannot be supported (UNI3.0 + only) + + NOTE: For this counter, RELEASE COMPLETE messages that are + a reply to a previous RELEASE message and contain the same + cause value, are redundant (for counting purposes) and + should not be counted." + + + + + ::= { atmSigStatEntry 14 } + +atmSigDetectTimerExpireds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Timer Expiries detected on this interface. The Timer + Expiries Counter provides a count of network timer expiries, and + to some extent, host or switch timer expiries. The conditions + for incrementing this counter are: + + - Expiry of any network timer + + - Receipt of a RELEASE or RELEASE COMPLETE + message with Cause #102, 'recovery on + timer expiry'. + + NOTE: For this counter, RELEASE COMPLETE messages that are + a reply to a previous RELEASE message and contain the same + cause value, are redundant (for counting purposes) and + should not be counted." + + ::= { atmSigStatEntry 15 } + +atmSigEmitTimerExpireds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Timer Expiries transmitted from this interface. + The Timer Expiries Counter provides a count of network timer + expiries, and to some extent, host or switch timer expiries. + The conditions for incrementing this counter are: + + - Expiry of any network timer + + - Receipt of a RELEASE or RELEASE COMPLETE + message with Cause #102, 'recovery on + timer expiry'. + + NOTE: For this counter, RELEASE COMPLETE messages that are a + reply to a previous RELEASE message and contain the same cause + value, are redundant (for counting purposes) and should not be + counted." + + ::= { atmSigStatEntry 16 } + + + + +atmSigDetectRestarts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Restart Activity errors detected on this interface. + The Restart Activity Counter provides a count of host, switch, + or network restart activity. This counter is incremented when + receiving a RESTART message." + + ::= { atmSigStatEntry 17 } + +atmSigEmitRestarts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Restart Activity errors transmitted from this + interface. The Restart Activity Counter provides a count of + host, switch, or network restart activity. This counter is + incremented when transmitting a RESTART message." + + ::= { atmSigStatEntry 18 } + +atmSigInEstabls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of SVCs established at this signalling entity for + incoming connections." + ::= { atmSigStatEntry 19 } + +atmSigOutEstabls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of SVCs established at this signalling entity for + outgoing connections." + ::= { atmSigStatEntry 20 } + + -- 4. ATM Interface Signalling Support Table + -- + -- This table provides information to support + -- the signalling process which is used to establish + -- ATM Switched Virtual Connections (SVCs). + + + + +atmSigSupportTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSigSupportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM local interface configuration + parameters, one entry per ATM signalling interface." + ::= { atm2MIBObjects 4 } + +atmSigSupportEntry OBJECT-TYPE + SYNTAX AtmSigSupportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains signalling configuration parameters + and state variables." + INDEX { ifIndex } + ::= { atmSigSupportTable 1} + +AtmSigSupportEntry ::= SEQUENCE { + atmSigSupportClgPtyNumDel INTEGER, + atmSigSupportClgPtySubAddr INTEGER, + atmSigSupportCldPtySubAddr INTEGER, + atmSigSupportHiLyrInfo INTEGER, + atmSigSupportLoLyrInfo INTEGER, + atmSigSupportBlliRepeatInd INTEGER, + atmSigSupportAALInfo INTEGER, + atmSigSupportPrefCarrier OCTET STRING +} + +atmSigSupportClgPtyNumDel OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether the Calling Party Number + Information Element is transferred to the called party + address. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 1 } + +atmSigSupportClgPtySubAddr OBJECT-TYPE + + + + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept and transfer the Calling + Party Subaddress Information Element from the calling party to + the called party. Calling party subaddress information shall + only be transferred to the called party if calling party number + delivery is enabled (i.e., atmSigSupportClgPtyNumDel = + 'enabled(1)'. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 2 } + +atmSigSupportCldPtySubAddr OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept, transfer, and deliver + the Called Party Subaddress Information Element from the calling + party to the called party. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 3 } + +atmSigSupportHiLyrInfo OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept, transfer, and deliver + the Broadband High Layer Information Element from the calling + party to the called party. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + + + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 4 } + +atmSigSupportLoLyrInfo OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept, transfer, and deliver + the Broadband Low Layer Information Element from the calling + party to the called party. The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 5 } + +atmSigSupportBlliRepeatInd OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether to accept, transfer, and deliver + the Broadband Repeat Indicator with two or three instances of + the Broadband Low Layer Information Element for low layer + information selection from the calling party to the called + party. This object's value should always be disabled(2) if + the value of atmSigSupportLolyrInfo is disabled(2). + + The value of this object can be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + ::= { atmSigSupportEntry 6 } + +atmSigSupportAALInfo OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This object indicates whether to accept, transfer, and deliver + the ATM Adaptation Layer Parameters Information Element from the + calling party to the called party. The value of this object can + be: + + - enabled(1) This Information Element is transferred + to the called party + + - disabled(2) This Information Element is NOT + transferred to the called party." + + ::= { atmSigSupportEntry 7 } + +atmSigSupportPrefCarrier OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0|4)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter identifies the carrier to which intercarrier + calls originated from this interface are routed when transit + network selection information is not provided by the calling + party. If a Carrier Identification Code (CIC) is used the + parameter shall contain the CIC. For three-digit CICs, the first + octet shall be '0' and the CIC is contained in the three + following octets. If the preferred carrier feature is not + supported the value is a zero-length string." + + ::= { atmSigSupportEntry 8 } + + -- 5. ATM Signalling Descriptor Parameter Table + + atmSigDescrParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSigDescrParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table contains signalling capabilities of VCLs except the + Traffic Descriptor. Traffic descriptors are described in + the atmTrafficDescrParamTable." + + REFERENCE + "ATM User-Network Interface Specification, Version 3.1 (UNI + 3.1), September 1994, Section 5.4.5 Variable Length + Information Elements." + + ::= { atm2MIBObjects 5 } + + atmSigDescrParamEntry OBJECT-TYPE + + + + SYNTAX AtmSigDescrParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a + set of signalling capabilities that can + be applied to a VCL. There is no requirement + for unique entries, except that the index must + be unique." + INDEX { atmSigDescrParamIndex } + ::= { atmSigDescrParamTable 1 } + + AtmSigDescrParamEntry ::= + SEQUENCE { + atmSigDescrParamIndex + AtmSigDescrParamIndex, + atmSigDescrParamAalType INTEGER, + atmSigDescrParamAalSscsType INTEGER, + atmSigDescrParamBhliType INTEGER, + + + atmSigDescrParamBhliInfo OCTET STRING, + atmSigDescrParamBbcConnConf INTEGER, + atmSigDescrParamBlliLayer2 INTEGER, + atmSigDescrParamBlliLayer3 INTEGER, + atmSigDescrParamBlliPktSize INTEGER, + atmSigDescrParamBlliSnapId INTEGER, + atmSigDescrParamBlliOuiPid OCTET STRING, + atmSigDescrParamRowStatus RowStatus + } + + atmSigDescrParamIndex OBJECT-TYPE + SYNTAX AtmSigDescrParamIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is used by the + atmVclGenSigDescrIndex object in the atmVclGenTable to + identify a row in this table." + + ::= { atmSigDescrParamEntry 1 } + + atmSigDescrParamAalType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not defined + aal1(2), -- AAL type 1 + aal34(3), -- AAL type 3/4 + aal5(4), -- AAL type 5 + + + + userDefined(5), -- User-Defined AAL + aal2(6) -- AAL type 2 + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The AAL type. The value of this object is set to other(1) + when not defined." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 2 } + + atmSigDescrParamAalSscsType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- other, or not used + assured(2), -- Data SSCS based on SSCOP + -- assured operation + nonassured(3), -- Data SSCS based on SSCOP + -- non-assured operation + frameRelay(4), -- frame relay SSCS + null(5) -- null + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SSCS type used by this entry." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 3 } + + atmSigDescrParamBhliType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not defined + iso(2), -- ISO + user(3), -- User specific + hiProfile(4), -- Higher layer profile + -- this enum applicable to + -- UNI 3.0 only + vendorSpecific(5) -- Vender specific + -- application identifier + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband high layer type." + + DEFVAL { other } + + + + ::= { atmSigDescrParamEntry 4 } + + atmSigDescrParamBhliInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..8)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband high layer information. When + atmSigDescrParamBhliType is set to iso(2), the value of this + object is a zero length string. When + atmSigDescrParamBhliType is set to user(3), the value of + this object is an octet string with length ranging from 0 to + 8. When atmSigDescrParamBhliType is set to hiProfile(4), + the value of this object is a length of 4 octet string + containing user to user profile identifier. When + atmSigDescrParamBhliType is set to vendorSpecific(5), the + value of this object is a length of 7 octet string, where + the most significant 3 octets consist of a globally- + administered OUI, and the least significant 4 octets are the + vender administered application OUI." + + DEFVAL { ''H } + + ::= { atmSigDescrParamEntry 5 } + + atmSigDescrParamBbcConnConf OBJECT-TYPE + SYNTAX INTEGER { + ptp(1), -- point-to-point + ptmp(2) -- point-to-multipoint + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband bearer capability user plane connection + configuration parameter." + DEFVAL { ptp } + ::= { atmSigDescrParamEntry 6 } + + atmSigDescrParamBlliLayer2 OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not specified + iso1745(2), -- Basic mode ISO 1745 + q921(3), -- CCITT Recommendation Q.921 + x25linklayer(4), -- CCITT Recommendation X.25 + -- Link Layer + x25multilink(5), -- CCITT Recommendation X.25 + -- Multilink + lapb(6), -- Extended LAPB; for half + + + + -- duplex operation + hdlcArm(7), -- HDLC ARM (ISO 4335) + hdlcNrm(8), -- HDLC NRM (ISO 4335) + hdlcAbm(9), -- HDLC ABM (ISO 4335) + iso88022(10), -- LAN logical link control + -- (ISO 8802/2) + x75slp(11), -- CCITT Recommendation X.75, + -- single link + -- procedure (SLP) + q922(12), -- CCITT Recommendation Q.922 + userDef(13), -- User specified + iso7776(14) -- ISO 7776 DTE-DTE operation + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband low layer information, protocol type of layer + 2. The value of this object is other(1) if layer 2 protocol + is not used." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 7 } + + atmSigDescrParamBlliLayer3 OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not specified + x25pkt(2), -- CCITT Recommendation X.25 + -- packet layer + isoiec8208(3), -- ISO/IEC 8208 (X.25 packet + -- level protocol for data + -- terminal equipment) + x223iso8878(4), -- X.223/ISO 8878 + isoiec8473(5), -- ISO/IEC 8473 OSI + -- connectionless + -- mode protocol + t70(6), -- CCITT Recommendation T.70 + -- minimum + -- network layer + tr9577(7), -- ISO/IEC TR 9577 Protocol + -- Identification in the + -- network layer + userDef(8) -- user specified + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Broadband low layer information, protocol type of layer + + + + 3. The value of this object is other(1) if layer 3 protocol + is not used." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 8 } + + atmSigDescrParamBlliPktSize OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not used + s16(2), -- 16 octets + s32(3), -- 32 octets + s64(4), -- 64 octets + s128(5), -- 128 octets + s256(6), -- 256 octets + s512(7), -- 512 octets + s1024(8), -- 1028 octets + s2048(9), -- 2048 octets + s4096(10) -- 4096 octets + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default packet size defined in B-LLI." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 9 } + + atmSigDescrParamBlliSnapId OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- not used + true(2), -- SNAP ID is 1 + false(3) -- SNAP ID is 0 + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SNAP ID used for Broadband low layer protocol layer 3. + The value of this object is other(1) if + atmSigDescrParamBlliLayer3 is set to other(1)." + + DEFVAL { other } + ::= { atmSigDescrParamEntry 10 } + + atmSigDescrParamBlliOuiPid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0|5)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The OUI/PID encoding for Broadband low layer protocol layer + 3. The value of this object is a zero length string if + atmSigDescrParamBlliLayer3 is set to other(1). When used, + it is always 5 octets with the most significant octet as the + OUI Octet 1 and the least significant octet as the PID Octet + 2." + + DEFVAL { ''H } + ::= { atmSigDescrParamEntry 11 } + + atmSigDescrParamRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + atmSigDescrParamTable." + + ::= { atmSigDescrParamEntry 12 } + + -- 6. ATM Interface Registered Address Table -- + +atmIfRegisteredAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmIfRegisteredAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of ATM addresses that can be used for + calls to and from a given interface by a switch or service. The + ATM addresses are either registered by the endsystem via ILMI or + statically configured. This table does not expose PNNI + reachability information. ILMI registered addresses cannot be + deleted using this table. This table only applies to switches + and network services." + ::= { atm2MIBObjects 6 } + +atmIfRegisteredAddrEntry OBJECT-TYPE + SYNTAX AtmIfRegisteredAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM Interface Registered Address table." + + INDEX { ifIndex, atmIfRegAddrAddress } + ::= { atmIfRegisteredAddrTable 1} + +AtmIfRegisteredAddrEntry ::= SEQUENCE { + atmIfRegAddrAddress AtmAddr, + + + + atmIfRegAddrAddressSource INTEGER, + atmIfRegAddrOrgScope INTEGER, + atmIfRegAddrRowStatus RowStatus + } + +atmIfRegAddrAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An address registered for a given switch or service interface." + + ::= { atmIfRegisteredAddrEntry 1} + +atmIfRegAddrAddressSource OBJECT-TYPE + SYNTAX INTEGER { + other(1), + static(2), + dynamic(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address source for a given ATM Address. The value + dynamic(3) is indicated when ILMI is used." + ::= { atmIfRegisteredAddrEntry 2} + +atmIfRegAddrOrgScope OBJECT-TYPE + SYNTAX INTEGER { + localNetwork(1), + localNetworkPlusOne(2), + localNetworkPlusTwo(3), + siteMinusOne(4), + intraSite(5), + sitePlusOne(6), + organizationMinusOne(7), + intraOrganization(8), + organizationPlusOne(9), + communityMinusOne(10), + intraCommunity(11), + communityPlusOne(12), + regional(13), + interRegional(14), + global(15) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object indicates the organizational scope for + the referenced address. The information of the + referenced address shall not be distributed outside + the indicated scope. Refer to Annex 5.3 of ATM + Forum UNI Signalling 4.0 for guidelines regarding + the use of organizational scopes. + + This value cannot be configured for ILMI-registered + addresses. + + The default values for organizational scope are + localNetwork(1) for ATM group addresses, and + global(15) for individual addresses." + ::= { atmIfRegisteredAddrEntry 3} + +atmIfRegAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + atmIfRegisteredAddrTable. Rows created dynamically (e.g., ILMI- + registered addresses) cannot be deleted using this object." + + ::= { atmIfRegisteredAddrEntry 4} + + -- 7. ATM VPI/VCI to Address Mapping Table + + atmVclAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVclAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a mapping between the atmVclTable and + the ATM called party/calling party address. This table can + be used to retrieve the calling party and called party ATM + address pair for a given VCL. Note that there can be more + than one pair of calling party and called party ATM + addresses for a VCL in a point to multi-point call." + ::= { atm2MIBObjects 7 } + + atmVclAddrEntry OBJECT-TYPE + SYNTAX AtmVclAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a binding between a VCL + and an ATM address associated with this call. This ATM + + + + address can be either the called party address or the + calling party address. There can be more than one pair of + calling/called party ATM addresses associated with the VCL + entry for point to multi-point calls. Objects + atmVclAddrType, and atmVclAddrRowStatus are + required during row creation." + INDEX { ifIndex, atmVclVpi, atmVclVci, + atmVclAddrAddr } + ::= { atmVclAddrTable 1 } + + AtmVclAddrEntry ::= + SEQUENCE { + atmVclAddrAddr AtmAddr, + atmVclAddrType INTEGER, + atmVclAddrRowStatus RowStatus + } + + atmVclAddrAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ATM address on one end of the VCL. For SVCs, the agent + supplies the value of this object at creation time. For PVC + VCL, the manager can supply the value of this object during + or after the PVC VCL creation." + ::= { atmVclAddrEntry 1 } + + atmVclAddrType OBJECT-TYPE + SYNTAX INTEGER { + callingParty(1), + calledParty(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of ATM Address represented by the object + atmVclAddrAddr. Choices are either the calling party ATM + address or the called party ATM address." + ::= { atmVclAddrEntry 2 } + + atmVclAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create or destroy an + entry from this table. Note that the manager entity + + + + can only destroy the PVC VCLs." + ::= { atmVclAddrEntry 3 } + + -- 8. ATM Address to VPI/VCI Mapping Table + -- + -- This table provides an alternative way to access + -- a row in the atmVclAddrTable by using + -- an ATM address as an index, instead of + -- the ifIndex + + atmAddrVclTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmAddrVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides an alternative way to retrieve the + atmVclTable. This table can be used to retrieve the + indexing to the atmVclTable by an ATM address." + + ::= { atm2MIBObjects 8 } + + atmAddrVclEntry OBJECT-TYPE + SYNTAX AtmAddrVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents an entry in the + atmVclTable of the ATM-MIB by its ATM address. The ATM + address is either the calling or called party ATM address + of the call. Entries in this table are read only. + They show up when entries are created in the + atmVclAddrTable." + REFERENCE + "Tesink, K., Editor, Definitions of Managed Objects + for ATM Management, RFC 2515, Bell Communications + Research, February, 1999." + INDEX { atmVclAddrAddr, atmAddrVclAtmIfIndex, + atmAddrVclVpi, atmAddrVclVci } + ::= { atmAddrVclTable 1 } + + AtmAddrVclEntry ::= + SEQUENCE { + atmAddrVclAtmIfIndex InterfaceIndex, + atmAddrVclVpi AtmVpIdentifier, + atmAddrVclVci AtmVcIdentifier, + atmAddrVclAddrType INTEGER + } + + + + + atmAddrVclAtmIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index of the ATM interface to which this + VCL pertains. This object combined with the + atmAddrVclVpi and atmAddrVclVci objects serves as an + index to the atmVclTable." + ::= { atmAddrVclEntry 1 } + + atmAddrVclVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value of the VCL. This object combined with the + atmAddrVclAtmIfIndex and atmAddrVclVci objects serves as + an index to the atmVclTable." + ::= { atmAddrVclEntry 2 } + + atmAddrVclVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value of the VCL. This object combined with the + atmAddrVclAtmIfIndex and atmAddrVclVpi objects serves as + an index to the atmVclTable." + ::= { atmAddrVclEntry 3 } + + atmAddrVclAddrType OBJECT-TYPE + SYNTAX INTEGER { + callingParty(1), + calledParty(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of ATM Address represented by the object + atmVclAddrAddr. Choices are either calling party address + or called party address." + ::= { atmAddrVclEntry 4 } + + -- 9. ATM VPL Statistics Table + + atmVplStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVplStatEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table contains all statistics counters per VPL. It is + used to monitor the usage of the VPL in terms of incoming + cells and outgoing cells." + ::= { atm2MIBObjects 9 } + + atmVplStatEntry OBJECT-TYPE + SYNTAX AtmVplStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a VPL." + INDEX { ifIndex, atmVplVpi } + ::= { atmVplStatTable 1 } + + AtmVplStatEntry ::= + SEQUENCE { + atmVplStatTotalCellIns Counter32, + atmVplStatClp0CellIns Counter32, + atmVplStatTotalDiscards Counter32, + atmVplStatClp0Discards Counter32, + atmVplStatTotalCellOuts Counter32, + atmVplStatClp0CellOuts Counter32, + atmVplStatClp0Tagged Counter32 + } + + atmVplStatTotalCellIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells received by this VPL + including both CLP=0 and CLP=1 cells. The cells are + counted prior to the application of the traffic policing." + ::= { atmVplStatEntry 1 } + + atmVplStatClp0CellIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid ATM cells received by this VPL with + CLP=0. The cells are counted prior to the application of + the traffic policing." + ::= { atmVplStatEntry 2 } + + atmVplStatTotalDiscards OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells discarded by the + traffic policing entity. This includes cells originally + received with CLP=0 and CLP=1." + ::= { atmVplStatEntry 3 } + + atmVplStatClp0Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells received with CLP=0 and + discarded by the traffic policing entity." + ::= { atmVplStatEntry 4 } + + atmVplStatTotalCellOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells transmitted by this + VPL. This includes both CLP=0 and CLP=1 cells." + ::= { atmVplStatEntry 5 } + + atmVplStatClp0CellOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells transmitted with CLP=0 + by this VPL." + ::= { atmVplStatEntry 6 } + + atmVplStatClp0Tagged OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells tagged by the traffic + policing entity from CLP=0 to CLP=1." + ::= { atmVplStatEntry 7 } + + -- 10. ATM Logical Port Configuration Table + + atmVplLogicalPortTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF AtmVplLogicalPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates whether the VPL is an ATM Logical Port interface + (ifType=80)." + ::= { atm2MIBObjects 10 } + + atmVplLogicalPortEntry OBJECT-TYPE + SYNTAX AtmVplLogicalPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry with information about the ATM Logical Port + interface." + AUGMENTS { atmVplEntry } + ::= { atmVplLogicalPortTable 1 } + + AtmVplLogicalPortEntry ::= + SEQUENCE { + atmVplLogicalPortDef INTEGER, + atmVplLogicalPortIndex InterfaceIndexOrZero + } + + atmVplLogicalPortDef OBJECT-TYPE + SYNTAX INTEGER { + notLogicalIf(1), + isLogicalIf(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the VPC at this VPL interface is an ATM + Logical Port interface." + DEFVAL { notLogicalIf } + ::= { atmVplLogicalPortEntry 1 } + + atmVplLogicalPortIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifTable index of the ATM logical port interface + associated with this VPL. The distinguished value of zero + indicates that the agent has not (yet) assigned such an + ifTable Index. The zero value must be assigned by the agent + if the value of atmVplLogicalPortDef is set to notLogicalIf, + or if the VPL row is not active." + + + + ::= { atmVplLogicalPortEntry 2 } + + -- 11. ATM VCL Statistics Table + + atmVclStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVclStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all statistics counters per VCL. It is + used to monitor the usage of the VCL in terms of incoming + cells and outgoing cells." + ::= { atm2MIBObjects 11 } + + atmVclStatEntry OBJECT-TYPE + SYNTAX AtmVclStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a VCL." + INDEX { ifIndex, atmVclVpi, atmVclVci } + ::= { atmVclStatTable 1 } + + AtmVclStatEntry ::= + SEQUENCE { + atmVclStatTotalCellIns Counter32, + atmVclStatClp0CellIns Counter32, + atmVclStatTotalDiscards Counter32, + atmVclStatClp0Discards Counter32, + atmVclStatTotalCellOuts Counter32, + atmVclStatClp0CellOuts Counter32, + atmVclStatClp0Tagged Counter32 + } + + atmVclStatTotalCellIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells received by this VCL + including both CLP=0 and CLP=1 cells. The cells are counted + prior to the application of the traffic policing." + ::= { atmVclStatEntry 1 } + + atmVclStatClp0CellIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of valid ATM cells received by this VCL with + CLP=0. The cells are counted prior to the application of + the traffic policing." + ::= { atmVclStatEntry 2 } + + atmVclStatTotalDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells discarded by the + traffic policing entity. This includes cells originally + received with CLP=0 and CLP=1." + ::= { atmVclStatEntry 3 } + + atmVclStatClp0Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells received with CLP=0 + and discarded by the traffic policing entity." + ::= { atmVclStatEntry 4 } + + atmVclStatTotalCellOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells transmitted by this + VCL. This includes both CLP=0 and CLP=1 cells." + ::= { atmVclStatEntry 5 } + + atmVclStatClp0CellOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of valid ATM cells transmitted with CLP=0 + by this VCL." + ::= { atmVclStatEntry 6 } + + atmVclStatClp0Tagged OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of valid ATM cells tagged by the traffic + policing entity from CLP=0 to CLP=1." + ::= { atmVclStatEntry 7 } + + -- 12. ATM AAL5 per-VCC Statistics Table + + atmAal5VclStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmAal5VclStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a collection of objects providing AAL5 + configuration and performance statistics of a VCL." + ::= { atm2MIBObjects 12 } + + atmAal5VclStatEntry OBJECT-TYPE + SYNTAX AtmAal5VclStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents an AAL5 VCL, and + is indexed by ifIndex values of AAL5 interfaces and + the associated VPI/VCI values." + INDEX { ifIndex, atmVclVpi, atmVclVci } + ::= { atmAal5VclStatTable 1 } + + AtmAal5VclStatEntry ::= + SEQUENCE { + atmAal5VclInPkts Counter32, + atmAal5VclOutPkts Counter32, + atmAal5VclInOctets Counter32, + atmAal5VclOutOctets Counter32 + } + + atmAal5VclInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AAL5 CPCS PDUs received on the AAL5 VCC at + the interface identified by the ifIndex." + ::= { atmAal5VclStatEntry 1 } + + atmAal5VclOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of AAL5 CPCS PDUs transmitted on the AAL5 VCC + at the interface identified by the ifIndex." + ::= { atmAal5VclStatEntry 2 } + + atmAal5VclInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in AAL5 CPCS PDUs received + on the AAL5 VCC at the interface identified by the ifIndex." + ::= { atmAal5VclStatEntry 3 } + + atmAal5VclOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in AAL5 CPCS PDUs + transmitted on the AAL5 VCC at the interface identified by + the ifIndex." + ::= { atmAal5VclStatEntry 4 } + + -- 13. ATM VC General Information Table + + atmVclGenTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVclGenEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "General Information for each VC." + ::= { atm2MIBObjects 13 } + + atmVclGenEntry OBJECT-TYPE + SYNTAX AtmVclGenEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry with general information about the ATM VC." + + AUGMENTS { atmVclEntry } + ::= { atmVclGenTable 1 } + + AtmVclGenEntry ::= + SEQUENCE { + atmVclGenSigDescrIndex AtmSigDescrParamIndex + } + + + + + atmVclGenSigDescrIndex OBJECT-TYPE + SYNTAX AtmSigDescrParamIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the row in the ATM + Signalling Descriptor Parameter Table which applies to this + VCL." + ::= { atmVclGenEntry 1 } + + -- 14. ATM Interface Configuration Extension Table + +atmInterfaceExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmInterfaceExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM interface configuration and monitoring + information not defined in the atmInterfaceConfTable from the + ATM-MIB. This includes the type of connection setup procedures, + ILMI information, and information on the VPI/VCI range." + REFERENCE + "Tesink, K., Editor, Definitions of Managed Objects + for ATM Management, RFC 2515, Bell Communications + Research, February, 1999." + ::= { atm2MIBObjects 14 } + +atmInterfaceExtEntry OBJECT-TYPE + SYNTAX AtmInterfaceExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry extends the atmInterfaceConfEntry defined in the ATM- + MIB. Each entry corresponds to an ATM interface." + REFERENCE + "Tesink, K., Editor, Definitions of Managed Objects + for ATM Management, RFC 2515, Bell Communications + Research, February, 1999." + AUGMENTS { atmInterfaceConfEntry } + ::= { atmInterfaceExtTable 1 } + +AtmInterfaceExtEntry ::= SEQUENCE { + atmIntfConfigType AtmInterfaceType, + atmIntfActualType AtmInterfaceType, + atmIntfConfigSide INTEGER, + atmIntfActualSide INTEGER, + atmIntfIlmiAdminStatus BITS, + atmIntfIlmiOperStatus BITS, + + + + atmIntfIlmiFsmState INTEGER, + atmIntfIlmiEstablishConPollIntvl Integer32, + atmIntfIlmiCheckConPollIntvl Integer32, + atmIntfIlmiConPollInactFactor Integer32, + atmIntfIlmiPublicPrivateIndctr INTEGER, + atmInterfaceConfMaxSvpcVpi INTEGER, + atmInterfaceCurrentMaxSvpcVpi INTEGER, + atmInterfaceConfMaxSvccVpi INTEGER, + atmInterfaceCurrentMaxSvccVpi INTEGER, + atmInterfaceConfMinSvccVci INTEGER, + atmInterfaceCurrentMinSvccVci INTEGER, + atmIntfSigVccRxTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmIntfSigVccTxTrafficDescrIndex + AtmTrafficDescrParamIndex, + atmIntfPvcFailures Counter32, + atmIntfCurrentlyFailingPVpls Gauge32, + atmIntfCurrentlyFailingPVcls Gauge32, + atmIntfPvcFailuresTrapEnable TruthValue, + atmIntfPvcNotificationInterval INTEGER, + atmIntfLeafSetupFailures Counter32, + atmIntfLeafSetupRequests Counter32 } + +atmIntfConfigType OBJECT-TYPE + SYNTAX AtmInterfaceType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of connection setup procedures configured for the ATM + interface. Setting this variable to a value of 'other' is not + allowed." + DEFVAL { autoConfig } + ::= { atmInterfaceExtEntry 1 } + +atmIntfActualType OBJECT-TYPE + SYNTAX AtmInterfaceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of connection setup procedures currently being used on + the interface. This may reflect a manually configured value for + the interface type, or may be determined by other means such as + auto-configuration. A value of `autoConfig' indicates that + auto-configuration was requested but has not yet been completed." + ::= { atmInterfaceExtEntry 2 } + +atmIntfConfigSide OBJECT-TYPE + SYNTAX INTEGER { + + + + other(1), + user(2), + network(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The configured role of the managed entity as one side of the ATM + interface. This value does not apply when the object + atmIntfConfigType is set to `autoConfig', `atmfPnni1Dot0', or + `atmfBici2Dot0'." + ::= { atmInterfaceExtEntry 3 } + +atmIntfActualSide OBJECT-TYPE + SYNTAX INTEGER { + other(1), + user(2), + network(3), + symmetric(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current role used by the managed entity to represent one + side of the ATM interface." + ::= { atmInterfaceExtEntry 4 } + +atmIntfIlmiAdminStatus OBJECT-TYPE + SYNTAX BITS { ilmi(0), + ilmiAddressRegistration(1), + ilmiConnectivity(2), + ilmiPvcPvpMgmt(3), + ilmiSigVccParamNegotiation(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates which components of ILMI are administratively enabled + on this interface. If the 'ilmi' bit is not set, then no ILMI + components are operational. ILMI components other than auto- + configuration that are not represented in the value have their + administrative status determined according to the 'ilmi' bit. + The ILMI auto-configuration component is enabled/disabled by the + atmIntfConfigType object." + ::= { atmInterfaceExtEntry 5 } + +atmIntfIlmiOperStatus OBJECT-TYPE + SYNTAX BITS { ilmi(0), + ilmiAddressRegistration(1), + ilmiConnectivity(2), + ilmiPvcPvpMgmt(3), + + + + ilmiSigVccParamNegotiation(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which components of ILMI are operational on this + interface." + ::= { atmInterfaceExtEntry 6 } + +atmIntfIlmiFsmState OBJECT-TYPE + SYNTAX INTEGER { stopped(1), + linkFailing(2), + establishing(3), + configuring(4), + retrievingNetworkPrefixes(5), + registeringNetworkPrefixes(6), + retrievingAddresses(7), + registeringAddresses(8), + verifying(9) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the state of the ILMI Finite State Machine associated + with this interface." + + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, af-ilmi-0065.000, + September 1996, Appendix 1" + ::= { atmInterfaceExtEntry 7 } + +atmIntfIlmiEstablishConPollIntvl OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time S between successive transmissions of ILMI + messages on this interface for the purpose of detecting + establishment of ILMI connectivity." + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, af-ilmi-0065.000, + September 1996, Section 8.3.1" + DEFVAL { 1 } + ::= { atmInterfaceExtEntry 8 } + +atmIntfIlmiCheckConPollIntvl OBJECT-TYPE + SYNTAX Integer32 (0..65535) + + + + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time T between successive transmissions of ILMI + messages on this interface for the purpose of detecting loss of + ILMI connectivity. The distinguished value zero disables ILMI + connectivity procedures on this interface." + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, af-ilmi-0065.000, + September 1996, Section 8.3.1" + DEFVAL { 5 } + ::= { atmInterfaceExtEntry 9 } + +atmIntfIlmiConPollInactFactor OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number K of consecutive polls on this interface for which no + ILMI response message is received before ILMI connectivity is + declared lost." + REFERENCE + "ATM Forum, Integrated Local Management Interface + (ILMI) Specification, Version 4.0, af-ilmi-0065.000, + September 1996, Section 8.3.1" + DEFVAL { 4 } + ::= { atmInterfaceExtEntry 10 } + +atmIntfIlmiPublicPrivateIndctr OBJECT-TYPE + SYNTAX INTEGER { + other(1), + public(2), + private(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether this end of the interface is advertised in + ILMI as a device of the `public' or `private' type." + DEFVAL { private } + ::= { atmInterfaceExtEntry 11 } + +atmInterfaceConfMaxSvpcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The maximum VPI that the signalling stack on the ATM interface + is configured to support for allocation to switched virtual path + connections." + ::= { atmInterfaceExtEntry 12 } + +atmInterfaceCurrentMaxSvpcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum VPI that the signalling stack on the ATM interface + may currently allocate to switched virtual path connections. + This value is the minimum of atmInterfaceConfMaxSvpcVpi, and the + atmInterfaceMaxSvpcVpi of the interface's UNI/NNI peer. + + If the interface does not negotiate with its peer to determine + the maximum VPI that can be allocated to SVPCs on the interface, + then the value of this object must equal + atmInterfaceConfMaxSvpcVpi. " + ::= { atmInterfaceExtEntry 13 } + +atmInterfaceConfMaxSvccVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum VPI that the signalling stack on the ATM interface + is configured to support for allocation to switched virtual + channel connections." + ::= { atmInterfaceExtEntry 14 } + +atmInterfaceCurrentMaxSvccVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum VPI that the signalling stack on the ATM interface + may currently allocate to switched virtual channel connections. + This value is the minimum of atmInterfaceConfMaxSvccVpi, and the + atmInterfaceConfMaxSvccVpi of the interface's UNI/NNI peer. + + If the interface does not negotiate with its peer to determine + the maximum VPI that can be allocated to SVCCs on the interface, + then the value of this object must equal + atmInterfaceConfMaxSvccVpi." + ::= { atmInterfaceExtEntry 15 } + + + + +atmInterfaceConfMinSvccVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum VCI that the signalling stack on the ATM interface + is configured to support for allocation to switched virtual + channel connections." + ::= { atmInterfaceExtEntry 16 } + +atmInterfaceCurrentMinSvccVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum VCI that the signalling stack on the ATM interface + may currently allocate to switched virtual channel connections. + This value is the maximum of atmInterfaceConfMinSvccVci, and the + atmInterfaceConfMinSvccVci of the interface's UNI/NNI peer. + If the interface does not negotiate with its peer to determine + the minimum VCI that can be allocated to SVCCs on the interface, + then the value of this object must equal + atmInterfaceConfMinSvccVci." + ::= { atmInterfaceExtEntry 17 } + +atmIntfSigVccRxTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the row in the atmTrafficDescrParamTable + used during ILMI auto-configuration to specify the advertised + signalling VCC traffic parameters for the receive direction. + The traffic descriptor resulting from ILMI auto-configuration of + the signalling VCC is indicated in the atmVclTable." + ::= { atmInterfaceExtEntry 18 } + +atmIntfSigVccTxTrafficDescrIndex OBJECT-TYPE + SYNTAX AtmTrafficDescrParamIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the row in the atmTrafficDescrParamTable + used during ILMI auto-configuration to specify the advertised + signalling VCC traffic parameters for the transmit direction. + The traffic descriptor resulting from ILMI auto-configuration of + the signalling VCC is indicated in the atmVclTable." + ::= { atmInterfaceExtEntry 19 } + + + +atmIntfPvcFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the operational status of a PVPL or PVCL on + this interface has gone down." + ::= { atmInterfaceExtEntry 20 } + +atmIntfCurrentlyFailingPVpls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of VPLs on this interface for which there is + an active row in the atmVplTable having an atmVplConnKind value + of `pvc' and an atmVplOperStatus with a value other than `up'." + ::= { atmInterfaceExtEntry 21 } + +atmIntfCurrentlyFailingPVcls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of VCLs on this interface for which there is + an active row in the atmVclTable having an atmVclConnKind value + of `pvc' and an atmVclOperStatus with a value other than `up'." + ::= { atmInterfaceExtEntry 22 } + +atmIntfPvcFailuresTrapEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows the generation of traps in response to PVCL or PVPL + failures on this interface." + DEFVAL { false } + ::= { atmInterfaceExtEntry 23 } + +atmIntfPvcNotificationInterval OBJECT-TYPE + SYNTAX INTEGER (1..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum interval between the sending of + atmIntfPvcFailuresTrap notifications for this interface." + DEFVAL { 30 } + + + + ::= { atmInterfaceExtEntry 24 } + +atmIntfLeafSetupFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of setup failures. For root, this is the number of + rejected setup requests and for leaf, this is the number of setup + failure received." + ::= { atmInterfaceExtEntry 25 } + +atmIntfLeafSetupRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of setup requests. For root, this includes both incoming + setup request and root intiated setup requests." + ::= { atmInterfaceExtEntry 26 } + + -- 15. ATM ILMI Service Registry Table + +atmIlmiSrvcRegTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmIlmiSrvcRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of all the ATM network services known + by this device. + + The characteristics of these services are made available through + the ILMI, using the ILMI general-purpose service registry MIB. + These services may be made available to all ATM interfaces + (atmIlmiSrvcRegIndex = 0) or to some specific ATM interfaces only + (atmIlmiSrvcRegIndex = ATM interface index)." + ::= { atm2MIBObjects 15 } + +atmIlmiSrvcRegEntry OBJECT-TYPE + SYNTAX AtmIlmiSrvcRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single service provider that is available to + the user-side of an adjacent device through the ILMI. + + Implementors need to be aware that if the size of the + atmIlmiSrvcRegServiceID exceeds 112 sub-identifiers then OIDs of + + + + column instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2, or + SNMPv3." + + INDEX { atmIlmiSrvcRegIndex, + atmIlmiSrvcRegServiceID, + atmIlmiSrvcRegAddressIndex } + ::= { atmIlmiSrvcRegTable 1 } + +AtmIlmiSrvcRegEntry ::= SEQUENCE { + atmIlmiSrvcRegIndex InterfaceIndexOrZero, + atmIlmiSrvcRegServiceID OBJECT IDENTIFIER, + atmIlmiSrvcRegAddressIndex INTEGER, + atmIlmiSrvcRegATMAddress AtmAddr, + atmIlmiSrvcRegParm1 OCTET STRING, + atmIlmiSrvcRegRowStatus RowStatus + } + +atmIlmiSrvcRegIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM interface where the service defined in this entry can be + made available to an ATM device attached to this interface. + + The value of 0 has a special meaning: when an ATM service is + defined in an entry whose atmIlmiSrvcRegIndex is zero, the ATM + service is available to ATM devices connected to any ATM + interface. (default value(s)). + + When the user-side of an adjacent device queries the content of + the ILMI service registry MIB (using the ILMI protocol), the + local network-side responds with the ATM services defined in + atmIlmiSrvcRegTable entries, provided that these entries are + indexed by: + + - the corresponding ifIndex value (atmIlmiSrvcRegIndex + equal to the ifIndex of the interface to which the + adjacent device is connected) - zero (atmIlmiSrvcRegIndex=0)." + ::= { atmIlmiSrvcRegEntry 1 } + +atmIlmiSrvcRegServiceID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the service identifier which uniquely identifies the + + + + type of service at the address provided in the table. The object + identifiers for the LAN Emulation Configuration Server (LECS) and + the ATM Name Server (ANS) are defined in the ATM Forum ILMI + Service Registry MIB. The object identifiers for the ATMARP + Server, the Multicast Address Resolution Server (MARS), and the + NHRP Server (NHS) are defined in RFC 2601, RFC 2602, and RFC + 2603, respectively." + ::= { atmIlmiSrvcRegEntry 2 } + +atmIlmiSrvcRegAddressIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer to differentiate multiple rows containing + different ATM addresses for the same service on the same + interface. This number need NOT be the same as the corresponding + ILMI atmfSrvcRegAddressIndex MIB object." + ::= { atmIlmiSrvcRegEntry 3 } + +atmIlmiSrvcRegATMAddress OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the full address of the service. The user-side of the + adjacent device may use this address to establish a connection + with the service." + ::= { atmIlmiSrvcRegEntry 4 } + +atmIlmiSrvcRegParm1 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An octet string used according to the value of + atmIlmiSrvcRegServiceID." + ::= { atmIlmiSrvcRegEntry 5 } + +atmIlmiSrvcRegRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create or destroy an entry from this + table." + ::= { atmIlmiSrvcRegEntry 6 } + + + + + -- 16. ILMI Network Prefix Table + +atmIlmiNetworkPrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmIlmiNetworkPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table specifying per-interface network prefix(es) supplied by + the network side of the UNI during ILMI address registration. + When no network prefixes are specified for a particular + interface, one or more network prefixes based on the switch + address(es) may be used for ILMI address registration." + ::= { atm2MIBObjects 16 } + +atmIlmiNetworkPrefixEntry OBJECT-TYPE + SYNTAX AtmIlmiNetworkPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single network prefix supplied by the + network side of the UNI during ILMI address registration. Note + that the index variable atmIlmiNetPrefixPrefix is a variable- + length string, and as such the rule for variable-length strings + in section 7.7 of RFC 2578 applies." + INDEX { ifIndex, + atmIlmiNetPrefixPrefix } + ::= { atmIlmiNetworkPrefixTable 1 } + +AtmIlmiNetworkPrefixEntry ::= + SEQUENCE { + atmIlmiNetPrefixPrefix AtmIlmiNetworkPrefix, + atmIlmiNetPrefixRowStatus RowStatus + } + +atmIlmiNetPrefixPrefix OBJECT-TYPE + SYNTAX AtmIlmiNetworkPrefix + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network prefix specified for use in ILMI address + registration." + ::= { atmIlmiNetworkPrefixEntry 1 } + +atmIlmiNetPrefixRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Used to create, delete, activate and de-activate network + prefixes used in ILMI address registration." + + ::= { atmIlmiNetworkPrefixEntry 2 } + + -- 17. ATM Switch Address Table + +atmSwitchAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmSwitchAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one or more ATM endsystem addresses on a + per-switch basis. These addresses are used to identify the + switch. When no ILMI network prefixes are configured for certain + interfaces, network prefixes based on the switch address(es) may + be used for ILMI address registration." + ::= { atm2MIBObjects 17 } + +atmSwitchAddressEntry OBJECT-TYPE + SYNTAX AtmSwitchAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ATM Switch Address table." + INDEX { atmSwitchAddressIndex } + ::= { atmSwitchAddressTable 1 } + +AtmSwitchAddressEntry ::= + SEQUENCE { + atmSwitchAddressIndex Integer32, + atmSwitchAddressAddress OCTET STRING, + atmSwitchAddressRowStatus RowStatus + } + +atmSwitchAddressIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index used to enumerate the ATM endsystem addresses + for this switch." + ::= { atmSwitchAddressEntry 1 } + +atmSwitchAddressAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(13|20)) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "An ATM endsystem address or address prefix used to identify this + switch. When no ESI or SEL field is specified, the switch may + generate the ESI and SEL fields automatically to obtain a + complete 20-byte ATM endsystem address." + ::= { atmSwitchAddressEntry 2 } + +atmSwitchAddressRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Used to create, delete, activate, and de-activate addresses used + to identify this switch." + ::= { atmSwitchAddressEntry 3 } + + -- 18. ATM VP Cross-Connect Extension Table + +atmVpCrossConnectXTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVpCrossConnectXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per VP Cross-Connect represented in + the atmVpCrossConnectTable." + ::= { atm2MIBObjects 18 } + +atmVpCrossConnectXEntry OBJECT-TYPE + SYNTAX AtmVpCrossConnectXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular ATM VP Cross-Connect. + Each entry provides an two objects that name the Cross-Connect. + One is assigned by the Service User and the other by the Service + Provider." + AUGMENTS { atmVpCrossConnectEntry } + ::= { atmVpCrossConnectXTable 1 } + +AtmVpCrossConnectXEntry ::= SEQUENCE { + atmVpCrossConnectUserName SnmpAdminString, + atmVpCrossConnectProviderName SnmpAdminString +} + +atmVpCrossConnectUserName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This is a service user assigned textual representation of a VPC + PVC." + ::= { atmVpCrossConnectXEntry 1 } + +atmVpCrossConnectProviderName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is a system supplied textual representation of VPC PVC. It + is assigned by the service provider." + ::= { atmVpCrossConnectXEntry 2 } + + -- 19. ATM VC Cross-Connect Extension Table + +atmVcCrossConnectXTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmVcCrossConnectXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per VC Cross-Connect represented in + the atmVcCrossConnectTable." + ::= { atm2MIBObjects 19 } + +atmVcCrossConnectXEntry OBJECT-TYPE + SYNTAX AtmVcCrossConnectXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular ATM VC Cross-Connect. + Each entry provides an two objects that name the Cross-Connect. + One is assigned by the Service User and the other by the Service + Provider." + AUGMENTS { atmVcCrossConnectEntry } + ::= { atmVcCrossConnectXTable 1 } + +AtmVcCrossConnectXEntry ::= SEQUENCE { + atmVcCrossConnectUserName SnmpAdminString, + atmVcCrossConnectProviderName SnmpAdminString +} + +atmVcCrossConnectUserName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is a service user assigned textual representation of a VCC + + + + PVC." + ::= { atmVcCrossConnectXEntry 1 } + +atmVcCrossConnectProviderName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is a system supplied textual representation of VCC PVC. It + is assigned by the service provider." + ::= { atmVcCrossConnectXEntry 2 } + + + -- 20. Currently Failing PVPL Table + +atmCurrentlyFailingPVplTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmCurrentlyFailingPVplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table indicating all VPLs for which there is an active row in + the atmVplTable having an atmVplConnKind value of `pvc' and an + atmVplOperStatus with a value other than `up'." + ::= { atm2MIBObjects 20 } + +atmCurrentlyFailingPVplEntry OBJECT-TYPE + SYNTAX AtmCurrentlyFailingPVplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a VPL for which the + atmVplRowStatus is `active', the atmVplConnKind is `pvc', and the + atmVplOperStatus is other than `up'." + INDEX { ifIndex, atmVplVpi } + ::= { atmCurrentlyFailingPVplTable 1 } + +AtmCurrentlyFailingPVplEntry ::= + SEQUENCE { + atmCurrentlyFailingPVplTimeStamp TimeStamp + } + +atmCurrentlyFailingPVplTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which this PVPL began to fail." + ::= { atmCurrentlyFailingPVplEntry 1 } + + + + -- 21. Currently Failing PVCL Table + +atmCurrentlyFailingPVclTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtmCurrentlyFailingPVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table indicating all VCLs for which there is an active row in + the atmVclTable having an atmVclConnKind value of `pvc' and an + atmVclOperStatus with a value other than `up'." + ::= { atm2MIBObjects 21 } + +atmCurrentlyFailingPVclEntry OBJECT-TYPE + SYNTAX AtmCurrentlyFailingPVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table represents a VCL for which the + atmVclRowStatus is `active', the atmVclConnKind is `pvc', and the + atmVclOperStatus is other than `up'." + INDEX { ifIndex, atmVclVpi, atmVclVci } + ::= { atmCurrentlyFailingPVclTable 1 } + +AtmCurrentlyFailingPVclEntry ::= + SEQUENCE { + atmCurrentlyFailingPVclTimeStamp TimeStamp + } + +atmCurrentlyFailingPVclTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which this PVCL began to fail." + ::= { atmCurrentlyFailingPVclEntry 1 } + + -- ATM PVC Traps + + atmPvcTraps OBJECT IDENTIFIER ::= { atm2MIBTraps 1 } + + atmPvcTrapsPrefix OBJECT IDENTIFIER ::= { atmPvcTraps 0 } + + atmIntfPvcFailuresTrap NOTIFICATION-TYPE + OBJECTS { ifIndex, atmIntfPvcFailures, + atmIntfCurrentlyFailingPVpls, + atmIntfCurrentlyFailingPVcls } + STATUS current + DESCRIPTION + + + + "A notification indicating that one or more PVPLs or PVCLs on + this interface has failed since the last atmPvcFailuresTrap was + sent. If this trap has not been sent for the last + atmIntfPvcNotificationInterval, then it will be sent on the next + increment of atmIntfPvcFailures." + ::= { atmPvcTrapsPrefix 1 } + + -- Conformance Information + +atm2MIBConformance OBJECT IDENTIFIER ::= {atm2MIB 3} + +atm2MIBGroups OBJECT IDENTIFIER ::= {atm2MIBConformance 1} + +atm2MIBCompliances OBJECT IDENTIFIER ::= {atm2MIBConformance 2} + + -- Compliance Statements + +atm2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which represent ATM + interfaces. The compliance statements are used to determine + if a particular group or object applies to hosts, + networks/switches, or both. The Common group is defined as + applicable to all three." + + MODULE -- this module + MANDATORY-GROUPS { atmCommonGroup } + + -- Objects in the ATM Switch/Service/Host Group + + GROUP atmCommonStatsGroup + DESCRIPTION + "This group is mandatory for systems that are supporting + per-VPC or per-VCC counters." + + OBJECT atmVplLogicalPortDef + MIN-ACCESS read-only + DESCRIPTION + "This object is mandatory for systems support ATM Logical + Port interfaces." + + OBJECT atmIntfSigVccRxTrafficDescrIndex + DESCRIPTION + "This object is mandatory for systems that support negotiation + of signalling VCC traffic parameters through ILMI." + + OBJECT atmIntfSigVccTxTrafficDescrIndex + + + + DESCRIPTION + "This object is mandatory for systems that support negotiation + of signalling VCC traffic parameters through ILMI." + + OBJECT atmCurrentlyFailingPVplTimeStamp + DESCRIPTION + "This object is optional." + + OBJECT atmCurrentlyFailingPVclTimeStamp + DESCRIPTION + "This object is optional." + + OBJECT atmIntfLeafSetupFailures + DESCRIPTION + "This object is optional." + + OBJECT atmIntfLeafSetupRequests + DESCRIPTION + "This object is optional." + + -- Objects in the ATM Switch/Service Group + + GROUP atmSwitchServcGroup + DESCRIPTION + "This group is mandatory for a Switch/Service that implements + ATM interfaces." + + OBJECT atmIfRegAddrRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + OBJECT atmSvcVpCrossConnectRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)" + + OBJECT atmSvcVcCrossConnectRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)" + + + + + -- Objects in the ATM Switch/Service Signalling Group + + GROUP atmSwitchServcSigGroup + DESCRIPTION + "This group's write access is not required." + + -- Objects in the ATM Switch/Service Notifications Group + + GROUP atmSwitchServcNotifGroup + DESCRIPTION + "This group is optional for systems implementing support for + an ATM Switch or an ATM Network Service." + + -- Objects in the ATM Switch Group + + GROUP atmSwitchGroup + DESCRIPTION + "This group is optional for a switch that implements ATM + interfaces." + + -- Objects in the ATM Service Group + + GROUP atmServcGroup + DESCRIPTION + "This group is mandatory for systems implementing support for + an ATM Network Service." + + -- Objects in the ATM Host Group + + GROUP atmHostGroup + DESCRIPTION + "This group is mandatory for a Host that implements ATM + interfaces." + + OBJECT atmVclAddrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT atmVclAddrRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + -- ATM Host Sig Descriptor Parameter Group + + + + + GROUP atmHostSigDescrGroup + DESCRIPTION + "This group is mandatory for a Host that implements ATM + interfaces. Write access is not required for this group." + + ::= { atm2MIBCompliances 1 } + + -- ********************************************** + + -- Units of Conformance + -- Mandatory for ATM hosts and switch/service providers + +atmCommonGroup OBJECT-GROUP + +OBJECTS { + atmSigSSCOPConEvents, + atmSigSSCOPErrdPdus, + atmSigDetectSetupAttempts, + atmSigEmitSetupAttempts, + atmSigDetectUnavailRoutes, + atmSigEmitUnavailRoutes, + atmSigDetectUnavailResrcs, + atmSigEmitUnavailResrcs, + atmSigDetectCldPtyEvents, + atmSigEmitCldPtyEvents, + atmSigDetectMsgErrors, + atmSigEmitMsgErrors, + atmSigDetectClgPtyEvents, + atmSigEmitClgPtyEvents, + atmSigDetectTimerExpireds, + atmSigEmitTimerExpireds, + atmSigDetectRestarts, + atmSigEmitRestarts, + atmSigInEstabls, + atmSigOutEstabls, + atmVplLogicalPortDef, + atmVplLogicalPortIndex, + atmInterfaceConfMaxSvpcVpi, + atmInterfaceCurrentMaxSvpcVpi, + atmInterfaceConfMaxSvccVpi, + atmInterfaceCurrentMaxSvccVpi, + atmInterfaceConfMinSvccVci, + atmInterfaceCurrentMinSvccVci, + atmIntfSigVccRxTrafficDescrIndex, + atmIntfSigVccTxTrafficDescrIndex, + atmIntfPvcFailures, + atmIntfCurrentlyFailingPVpls, + atmIntfCurrentlyFailingPVcls, + + + + atmIntfPvcNotificationInterval, + atmIntfPvcFailuresTrapEnable, + atmIntfLeafSetupFailures, + atmIntfLeafSetupRequests, + atmIntfConfigType, + atmIntfActualType, + atmIntfConfigSide, + atmIntfActualSide, + atmIntfIlmiAdminStatus, + atmIntfIlmiOperStatus, + atmIntfIlmiFsmState, + atmIntfIlmiEstablishConPollIntvl, + atmIntfIlmiCheckConPollIntvl, + atmIntfIlmiConPollInactFactor, + atmIntfIlmiPublicPrivateIndctr, + atmCurrentlyFailingPVplTimeStamp, + atmCurrentlyFailingPVclTimeStamp +} + + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Switch/Service/Host that implements + ATM interfaces." + ::= { atm2MIBGroups 1 } + +atmCommonStatsGroup OBJECT-GROUP + +OBJECTS { + atmVclStatTotalCellIns, + atmVclStatClp0CellIns, + atmVclStatTotalDiscards, + atmVclStatClp0Discards, + atmVclStatTotalCellOuts, + atmVclStatClp0CellOuts, + atmVclStatClp0Tagged, + atmVplStatTotalCellIns, + atmVplStatClp0CellIns, + atmVplStatTotalDiscards, + atmVplStatClp0Discards, + atmVplStatTotalCellOuts, + atmVplStatClp0CellOuts, + atmVplStatClp0Tagged +} + + STATUS current + DESCRIPTION + "A collection of objects providing information + + + + for a Switch/Service/Host that implements + ATM VCL and VPL Statistics" + ::= { atm2MIBGroups 2 } + + atmSwitchServcGroup OBJECT-GROUP + + OBJECTS { + atmIlmiSrvcRegATMAddress, + atmIlmiSrvcRegParm1, + atmIlmiSrvcRegRowStatus, + atmIlmiNetPrefixRowStatus, + atmSvcVpCrossConnectCreationTime, + atmSvcVpCrossConnectRowStatus, + atmSvcVcCrossConnectCreationTime, + atmSvcVcCrossConnectRowStatus, + atmIfRegAddrAddressSource, + atmIfRegAddrOrgScope, + atmIfRegAddrRowStatus} + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Switch/Service that implements ATM interfaces." + ::= { atm2MIBGroups 3 } + + atmSwitchServcSigGroup OBJECT-GROUP + + OBJECTS { + atmSigSupportClgPtyNumDel, + atmSigSupportClgPtySubAddr, + atmSigSupportCldPtySubAddr, + atmSigSupportHiLyrInfo, + atmSigSupportLoLyrInfo, + atmSigSupportBlliRepeatInd, + atmSigSupportAALInfo, + atmSigSupportPrefCarrier} + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Switch/Service that implements ATM signalling." + ::= { atm2MIBGroups 4 } + + atmSwitchServcNotifGroup NOTIFICATION-GROUP + + NOTIFICATIONS { atmIntfPvcFailuresTrap } + STATUS current + DESCRIPTION + "A collection of notifications providing information + for a Switch/Service that implements ATM interfaces." + + + + ::= { atm2MIBGroups 5 } + + atmSwitchGroup OBJECT-GROUP + OBJECTS { + atmSwitchAddressAddress, + atmSwitchAddressRowStatus } + STATUS current + DESCRIPTION + "A collection of objects providing information + for an ATM switch." + ::= { atm2MIBGroups 6 } + + atmServcGroup OBJECT-GROUP + + OBJECTS { + atmVpCrossConnectUserName, + atmVpCrossConnectProviderName, + atmVcCrossConnectUserName, + atmVcCrossConnectProviderName } + STATUS current + DESCRIPTION + "A collection of objects providing information + for an ATM Network Service." + ::= { atm2MIBGroups 7 } + + atmHostGroup OBJECT-GROUP + + OBJECTS { + atmAal5VclInPkts, + atmAal5VclOutPkts, + atmAal5VclInOctets, + atmAal5VclOutOctets, + atmVclAddrType, + atmVclAddrRowStatus, + atmAddrVclAddrType, + atmVclGenSigDescrIndex} + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Host that implements ATM interfaces." + ::= { atm2MIBGroups 8 } + + atmHostSigDescrGroup OBJECT-GROUP + + OBJECTS { + atmSigDescrParamAalType, + atmSigDescrParamAalSscsType, + atmSigDescrParamBhliType, + + + + atmSigDescrParamBhliInfo, + atmSigDescrParamBbcConnConf, + atmSigDescrParamBlliLayer2, + atmSigDescrParamBlliLayer3, + atmSigDescrParamBlliPktSize, + atmSigDescrParamBlliSnapId, + atmSigDescrParamBlliOuiPid, + atmSigDescrParamRowStatus} + STATUS current + DESCRIPTION + "A collection of objects providing information + for a Host that implements ATM interfaces." + ::= { atm2MIBGroups 9 } + +END diff --git a/mibs/ietf/BGP4-MIB b/mibs/ietf/BGP4-MIB new file mode 100644 index 0000000..a40e974 --- /dev/null +++ b/mibs/ietf/BGP4-MIB @@ -0,0 +1,1298 @@ +BGP4-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + IpAddress, Integer32, Counter32, Gauge32, mib-2 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + + bgp MODULE-IDENTITY + LAST-UPDATED "200601110000Z" + ORGANIZATION "IETF IDR Working Group" + CONTACT-INFO "E-mail: idr@ietf.org + + Jeffrey Haas, Susan Hares (Editors) + NextHop Technologies + 825 Victors Way + Suite 100 + Ann Arbor, MI 48108-2738 + Tel: +1 734 222-1600 + Fax: +1 734 222-1602 + E-mail: jhaas@nexthop.com + skh@nexthop.com" + + DESCRIPTION + "The MIB module for the BGP-4 protocol. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4273; + see the RFC itself for full legal notices." + + REVISION "200601110000Z" + DESCRIPTION + "Changes from RFC 1657: + + 1) Fixed the definitions of the notifications + to make them equivalent to their initial + definition in RFC 1269. + 2) Added compliance and conformance info. + 3) Updated information for the values of + bgpPeerNegotiatedVersion, bgp4PathAttrLocalPref, + bgp4PathAttrCalcLocalPref, + bgp4PathAttrMultiExitDisc, + bgp4PathAttrASPathSegement. + 4) Added additional clarification comments where + needed. + + + + 5) Noted where objects do not fully reflect + the protocol as Known Issues. + 6) Updated the DESCRIPTION for the + bgp4PathAttrAtomicAggregate object. + 7) The following objects have had their DESCRIPTION + clause modified to remove the text that suggested + (using 'should' verb) initializing the counter + to zero on a transition to the established state: + bgpPeerInUpdates, bgpPeerOutUpdates, + bgpPeerInTotalMessages, bgpPeerOutTotalMessages + Those implementations that still do this are + still compliant with this new wording. + Applications should not assume counters have + started at zero. + + Published as RFC 4273." + + REVISION "199405050000Z" + DESCRIPTION + "Translated to SMIv2 and published as RFC 1657." + + REVISION "199110261839Z" + DESCRIPTION + "Initial version, published as RFC 1269." + ::= { mib-2 15 } + + bgpVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vector of supported BGP protocol version + numbers. Each peer negotiates the version + from this vector. Versions are identified + via the string of bits contained within this + object. The first octet contains bits 0 to + 7, the second octet contains bits 8 to 15, + and so on, with the most significant bit + referring to the lowest bit number in the + octet (e.g., the MSB of the first octet + refers to bit 0). If a bit, i, is present + and set, then the version (i+1) of the BGP + is supported." + REFERENCE + "RFC 4271, Section 4.2." + ::= { bgp 1 } + + bgpLocalAs OBJECT-TYPE + + + + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local autonomous system number." + REFERENCE + "RFC 4271, Section 4.2, 'My Autonomous System'." + ::= { bgp 2 } + + -- BGP Peer table. This table contains, one entry per + -- BGP peer, information about the BGP peer. + + bgpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF BgpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "BGP peer table. This table contains, + one entry per BGP peer, information about the + connections with BGP peers." + ::= { bgp 3 } + + bgpPeerEntry OBJECT-TYPE + SYNTAX BgpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information about the + connection with a BGP peer." + INDEX { bgpPeerRemoteAddr } + ::= { bgpPeerTable 1 } + + BgpPeerEntry ::= SEQUENCE { + bgpPeerIdentifier + IpAddress, + bgpPeerState + INTEGER, + bgpPeerAdminStatus + INTEGER, + bgpPeerNegotiatedVersion + Integer32, + bgpPeerLocalAddr + IpAddress, + bgpPeerLocalPort + Integer32, + bgpPeerRemoteAddr + IpAddress, + bgpPeerRemotePort + + + + Integer32, + bgpPeerRemoteAs + Integer32, + bgpPeerInUpdates + Counter32, + bgpPeerOutUpdates + Counter32, + bgpPeerInTotalMessages + Counter32, + bgpPeerOutTotalMessages + Counter32, + bgpPeerLastError + OCTET STRING, + bgpPeerFsmEstablishedTransitions + Counter32, + bgpPeerFsmEstablishedTime + Gauge32, + bgpPeerConnectRetryInterval + Integer32, + bgpPeerHoldTime + Integer32, + bgpPeerKeepAlive + Integer32, + bgpPeerHoldTimeConfigured + Integer32, + bgpPeerKeepAliveConfigured + Integer32, + bgpPeerMinASOriginationInterval + Integer32, + bgpPeerMinRouteAdvertisementInterval + Integer32, + bgpPeerInUpdateElapsedTime + Gauge32 + } + + bgpPeerIdentifier OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The BGP Identifier of this entry's BGP peer. + This entry MUST be 0.0.0.0 unless the + bgpPeerState is in the openconfirm or the + established state." + REFERENCE + "RFC 4271, Section 4.2, 'BGP Identifier'." + ::= { bgpPeerEntry 1 } + + + + + bgpPeerState OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + connect(2), + active(3), + opensent(4), + openconfirm(5), + established(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The BGP peer connection state." + REFERENCE + "RFC 4271, Section 8.2.2." + ::= { bgpPeerEntry 2 } + + bgpPeerAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + stop(1), + start(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the BGP connection. + A transition from 'stop' to 'start' will cause + the BGP Manual Start Event to be generated. + A transition from 'start' to 'stop' will cause + the BGP Manual Stop Event to be generated. + This parameter can be used to restart BGP peer + connections. Care should be used in providing + write access to this object without adequate + authentication." + REFERENCE + "RFC 4271, Section 8.1.2." + ::= { bgpPeerEntry 3 } + + bgpPeerNegotiatedVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The negotiated version of BGP running between + the two peers. + + This entry MUST be zero (0) unless the + bgpPeerState is in the openconfirm or the + + + + established state. + + Note that legal values for this object are + between 0 and 255." + REFERENCE + "RFC 4271, Section 4.2. + RFC 4271, Section 7." + ::= { bgpPeerEntry 4 } + + bgpPeerLocalAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local IP address of this entry's BGP + connection." + ::= { bgpPeerEntry 5 } + + bgpPeerLocalPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local port for the TCP connection between + the BGP peers." + ::= { bgpPeerEntry 6 } + + bgpPeerRemoteAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote IP address of this entry's BGP + peer." + ::= { bgpPeerEntry 7 } + + bgpPeerRemotePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote port for the TCP connection + between the BGP peers. Note that the + objects bgpPeerLocalAddr, + bgpPeerLocalPort, bgpPeerRemoteAddr, and + bgpPeerRemotePort provide the appropriate + reference to the standard MIB TCP + connection table." + + + + ::= { bgpPeerEntry 8 } + + bgpPeerRemoteAs OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote autonomous system number received in + the BGP OPEN message." + REFERENCE + "RFC 4271, Section 4.2." + ::= { bgpPeerEntry 9 } + + bgpPeerInUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of BGP UPDATE messages + received on this connection." + REFERENCE + "RFC 4271, Section 4.3." + ::= { bgpPeerEntry 10 } + + bgpPeerOutUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of BGP UPDATE messages + transmitted on this connection." + REFERENCE + "RFC 4271, Section 4.3." + ::= { bgpPeerEntry 11 } + + bgpPeerInTotalMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages received + from the remote peer on this connection." + REFERENCE + "RFC 4271, Section 4." + ::= { bgpPeerEntry 12 } + + bgpPeerOutTotalMessages OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages transmitted to + the remote peer on this connection." + REFERENCE + "RFC 4271, Section 4." + ::= { bgpPeerEntry 13 } + + bgpPeerLastError OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last error code and subcode seen by this + peer on this connection. If no error has + occurred, this field is zero. Otherwise, the + first byte of this two byte OCTET STRING + contains the error code, and the second byte + contains the subcode." + REFERENCE + "RFC 4271, Section 4.5." + ::= { bgpPeerEntry 14 } + + bgpPeerFsmEstablishedTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times the BGP FSM + transitioned into the established state + for this peer." + REFERENCE + "RFC 4271, Section 8." + ::= { bgpPeerEntry 15 } + + bgpPeerFsmEstablishedTime OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This timer indicates how long (in + seconds) this peer has been in the + established state or how long + since this peer was last in the + established state. It is set to zero when + a new peer is configured or when the router is + + + + booted." + REFERENCE + "RFC 4271, Section 8." + ::= { bgpPeerEntry 16 } + + bgpPeerConnectRetryInterval OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Time interval (in seconds) for the + ConnectRetry timer. The suggested value + for this timer is 120 seconds." + REFERENCE + "RFC 4271, Section 8.2.2. This is the value used + to initialize the 'ConnectRetryTimer'." + ::= { bgpPeerEntry 17 } + + bgpPeerHoldTime OBJECT-TYPE + SYNTAX Integer32 ( 0 | 3..65535 ) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time interval (in seconds) for the Hold + Timer established with the peer. The + value of this object is calculated by this + BGP speaker, using the smaller of the + values in bgpPeerHoldTimeConfigured and the + Hold Time received in the OPEN message. + + This value must be at least three seconds + if it is not zero (0). + + If the Hold Timer has not been established + with the peer this object MUST have a value + of zero (0). + + If the bgpPeerHoldTimeConfigured object has + a value of (0), then this object MUST have a + value of (0)." + REFERENCE + "RFC 4271, Section 4.2." + ::= { bgpPeerEntry 18 } + + bgpPeerKeepAlive OBJECT-TYPE + SYNTAX Integer32 ( 0 | 1..21845 ) + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time interval (in seconds) for the KeepAlive + timer established with the peer. The value + of this object is calculated by this BGP + speaker such that, when compared with + bgpPeerHoldTime, it has the same proportion + that bgpPeerKeepAliveConfigured has, + compared with bgpPeerHoldTimeConfigured. + + If the KeepAlive timer has not been established + with the peer, this object MUST have a value + of zero (0). + + If the of bgpPeerKeepAliveConfigured object + has a value of (0), then this object MUST have + a value of (0)." + REFERENCE + "RFC 4271, Section 4.4." + ::= { bgpPeerEntry 19 } + + bgpPeerHoldTimeConfigured OBJECT-TYPE + SYNTAX Integer32 ( 0 | 3..65535 ) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Time interval (in seconds) for the Hold Time + configured for this BGP speaker with this + peer. This value is placed in an OPEN + message sent to this peer by this BGP + speaker, and is compared with the Hold + Time field in an OPEN message received + from the peer when determining the Hold + Time (bgpPeerHoldTime) with the peer. + This value must not be less than three + seconds if it is not zero (0). If it is + zero (0), the Hold Time is NOT to be + established with the peer. The suggested + value for this timer is 90 seconds." + REFERENCE + "RFC 4271, Section 4.2. + RFC 4271, Section 10." + ::= { bgpPeerEntry 20 } + + bgpPeerKeepAliveConfigured OBJECT-TYPE + + + + SYNTAX Integer32 ( 0 | 1..21845 ) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Time interval (in seconds) for the + KeepAlive timer configured for this BGP + speaker with this peer. The value of this + object will only determine the + KEEPALIVE messages' frequency relative to + the value specified in + bgpPeerHoldTimeConfigured; the actual + time interval for the KEEPALIVE messages is + indicated by bgpPeerKeepAlive. A + reasonable maximum value for this timer + would be one third of that of + bgpPeerHoldTimeConfigured. + If the value of this object is zero (0), + no periodical KEEPALIVE messages are sent + to the peer after the BGP connection has + been established. The suggested value for + this timer is 30 seconds." + REFERENCE + "RFC 4271, Section 4.4. + RFC 4271, Section 10." + ::= { bgpPeerEntry 21 } + + bgpPeerMinASOriginationInterval OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Time interval (in seconds) for the + MinASOriginationInterval timer. + The suggested value for this timer is 15 + seconds." + REFERENCE + "RFC 4271, Section 9.2.1.2. + RFC 4271, Section 10." + ::= { bgpPeerEntry 22 } + + bgpPeerMinRouteAdvertisementInterval OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "Time interval (in seconds) for the + MinRouteAdvertisementInterval timer. + The suggested value for this timer is 30 + seconds for EBGP connections and 5 + seconds for IBGP connections." + REFERENCE + "RFC 4271, Section 9.2.1.1. + RFC 4271, Section 10." + ::= { bgpPeerEntry 23 } + + bgpPeerInUpdateElapsedTime OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed time (in seconds) since the last BGP + UPDATE message was received from the peer. + Each time bgpPeerInUpdates is incremented, + the value of this object is set to zero (0)." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 8.2.2, Established state." + ::= { bgpPeerEntry 24 } + + bgpIdentifier OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The BGP Identifier of the local system." + REFERENCE + "RFC 4271, Section 4.2." + ::= { bgp 4 } + + -- BGP Received Path Attribute Table. This table contains + -- one entry per path to a network, and path attributes + -- received from all peers running BGP version 3 or less. + -- This table is obsolete, having been replaced in + -- functionality by the bgp4PathAttrTable. + + bgpRcvdPathAttrTable OBJECT-TYPE + SYNTAX SEQUENCE OF BgpPathAttrEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "The BGP Received Path Attribute Table + contains information about paths to + + + + destination networks, received from all + peers running BGP version 3 or less." + ::= { bgp 5 } + + bgpPathAttrEntry OBJECT-TYPE + SYNTAX BgpPathAttrEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "Information about a path to a network." + INDEX { bgpPathAttrDestNetwork, + bgpPathAttrPeer } + ::= { bgpRcvdPathAttrTable 1 } + + BgpPathAttrEntry ::= SEQUENCE { + bgpPathAttrPeer + IpAddress, + bgpPathAttrDestNetwork + IpAddress, + bgpPathAttrOrigin + INTEGER, + bgpPathAttrASPath + OCTET STRING, + bgpPathAttrNextHop + IpAddress, + bgpPathAttrInterASMetric + Integer32 + } + + bgpPathAttrPeer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The IP address of the peer where the path + information was learned." + ::= { bgpPathAttrEntry 1 } + + bgpPathAttrDestNetwork OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The address of the destination network." + REFERENCE + "RFC 1267, Section 4.3." + ::= { bgpPathAttrEntry 2 } + + + + + bgpPathAttrOrigin OBJECT-TYPE + SYNTAX INTEGER { + igp(1),-- networks are interior + egp(2),-- networks learned via the + -- EGP protocol + incomplete(3) -- networks that + -- are learned by some other + -- means + } + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The ultimate origin of the path information." + REFERENCE + "RFC 1267, Section 4.3. + RFC 1267, Section 5." + ::= { bgpPathAttrEntry 3 } + + bgpPathAttrASPath OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2..255)) + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The set of ASes that must be traversed to reach + the network. This object is probably best + represented as SEQUENCE OF INTEGER. For SMI + compatibility, though, it is represented as + OCTET STRING. Each AS is represented as a pair + of octets according to the following algorithm: + + first-byte-of-pair = ASNumber / 256; + second-byte-of-pair = ASNumber & 255;" + REFERENCE + "RFC 1267, Section 4.3. + RFC 1267, Section 5." + ::= { bgpPathAttrEntry 4 } + + bgpPathAttrNextHop OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The address of the border router that should + be used for the destination network." + REFERENCE + "RFC 1267, Section 4.3. + RFC 1267, Section 5." + ::= { bgpPathAttrEntry 5 } + + + + bgpPathAttrInterASMetric OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The optional inter-AS metric. If this + attribute has not been provided for this route, + the value for this object is 0." + REFERENCE + "RFC 1267, Section 4.3. + RFC 1267, Section 5." + ::= { bgpPathAttrEntry 6 } + + -- BGP-4 Received Path Attribute Table. This table + -- contains one entry per path to a network, and path + -- attributes received from all peers running BGP-4. + + bgp4PathAttrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Bgp4PathAttrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The BGP-4 Received Path Attribute Table + contains information about paths to + destination networks, received from all + BGP4 peers." + ::= { bgp 6 } + + bgp4PathAttrEntry OBJECT-TYPE + SYNTAX Bgp4PathAttrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a path to a network." + INDEX { bgp4PathAttrIpAddrPrefix, + bgp4PathAttrIpAddrPrefixLen, + bgp4PathAttrPeer } + ::= { bgp4PathAttrTable 1 } + + Bgp4PathAttrEntry ::= SEQUENCE { + bgp4PathAttrPeer + IpAddress, + bgp4PathAttrIpAddrPrefixLen + Integer32, + bgp4PathAttrIpAddrPrefix + IpAddress, + bgp4PathAttrOrigin + INTEGER, + + + + bgp4PathAttrASPathSegment + OCTET STRING, + bgp4PathAttrNextHop + IpAddress, + bgp4PathAttrMultiExitDisc + Integer32, + bgp4PathAttrLocalPref + Integer32, + bgp4PathAttrAtomicAggregate + INTEGER, + bgp4PathAttrAggregatorAS + Integer32, + bgp4PathAttrAggregatorAddr + IpAddress, + bgp4PathAttrCalcLocalPref + Integer32, + bgp4PathAttrBest + INTEGER, + bgp4PathAttrUnknown + OCTET STRING + } + + bgp4PathAttrPeer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the peer where the path + information was learned." + ::= { bgp4PathAttrEntry 1 } + + bgp4PathAttrIpAddrPrefixLen OBJECT-TYPE + SYNTAX Integer32 (0..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Length in bits of the IP address prefix in + the Network Layer Reachability + Information field." + ::= { bgp4PathAttrEntry 2 } + + bgp4PathAttrIpAddrPrefix OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An IP address prefix in the Network Layer + Reachability Information field. This object + + + + is an IP address containing the prefix with + length specified by + bgp4PathAttrIpAddrPrefixLen. + Any bits beyond the length specified by + bgp4PathAttrIpAddrPrefixLen are zeroed." + REFERENCE + "RFC 4271, Section 4.3." + ::= { bgp4PathAttrEntry 3 } + + bgp4PathAttrOrigin OBJECT-TYPE + SYNTAX INTEGER { + igp(1),-- networks are interior + egp(2),-- networks learned via the + -- EGP protocol + incomplete(3) -- networks that + -- are learned by some other + -- means + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ultimate origin of the path + information." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.1." + ::= { bgp4PathAttrEntry 4 } + + bgp4PathAttrASPathSegment OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence of AS path segments. Each AS + path segment is represented by a triple + . + + The type is a 1-octet field that has two + possible values: + 1 AS_SET: unordered set of ASes that a + route in the UPDATE message + has traversed + + 2 AS_SEQUENCE: ordered set of ASes that + a route in the UPDATE message + has traversed. + + The length is a 1-octet field containing the + + + + number of ASes in the value field. + + The value field contains one or more AS + numbers. Each AS is represented in the octet + string as a pair of octets according to the + following algorithm: + + first-byte-of-pair = ASNumber / 256; + second-byte-of-pair = ASNumber & 255; + + Known Issues: + o BGP Confederations will result in + a type of either 3 or 4. + o An AS Path may be longer than 255 octets. + This may result in this object containing + a truncated AS Path." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.2." + ::= { bgp4PathAttrEntry 5 } + + bgp4PathAttrNextHop OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the border router that + should be used for the destination + network. This address is the NEXT_HOP + address received in the UPDATE packet." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.3." + ::= { bgp4PathAttrEntry 6 } + + bgp4PathAttrMultiExitDisc OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This metric is used to discriminate + between multiple exit points to an + adjacent autonomous system. A value of -1 + indicates the absence of this attribute. + + Known Issues: + o The BGP-4 specification uses an + unsigned 32 bit number. Thus, this + + + + object cannot represent the full + range of the protocol." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.4." + ::= { bgp4PathAttrEntry 7 } + + bgp4PathAttrLocalPref OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The originating BGP4 speaker's degree of + preference for an advertised route. A + value of -1 indicates the absence of this + attribute. + + Known Issues: + o The BGP-4 specification uses an + unsigned 32 bit number and thus this + object cannot represent the full + range of the protocol." + REFERENCE + "RFC 4271, Section 4.3. + RFC 4271, Section 5.1.5." + ::= { bgp4PathAttrEntry 8 } + + bgp4PathAttrAtomicAggregate OBJECT-TYPE + SYNTAX INTEGER { + lessSpecificRouteNotSelected(1), + -- Typo corrected from RFC 1657 + lessSpecificRouteSelected(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the ATOMIC_AGGREGATE attribute is present + in the Path Attributes then this object MUST + have a value of 'lessSpecificRouteNotSelected'. + + If the ATOMIC_AGGREGATE attribute is missing + in the Path Attributes then this object MUST + have a value of 'lessSpecificRouteSelected'. + + Note that ATOMIC_AGGREGATE is now a primarily + informational attribute." + REFERENCE + "RFC 4271, Sections 5.1.6 and 9.1.4." + + + + ::= { bgp4PathAttrEntry 9 } + + bgp4PathAttrAggregatorAS OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The AS number of the last BGP4 speaker that + performed route aggregation. A value of + zero (0) indicates the absence of this + attribute. + + Note that propagation of AS of zero is illegal + in the Internet." + REFERENCE + "RFC 4271, Section 5.1.7. + RFC 4271, Section 9.2.2.2." + ::= { bgp4PathAttrEntry 10 } + + bgp4PathAttrAggregatorAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the last BGP4 speaker + that performed route aggregation. A + value of 0.0.0.0 indicates the absence + of this attribute." + REFERENCE + "RFC 4271, Section 5.1.7. + RFC 4271, Section 9.2.2.2." + ::= { bgp4PathAttrEntry 11 } + + bgp4PathAttrCalcLocalPref OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The degree of preference calculated by the + receiving BGP4 speaker for an advertised + route. A value of -1 indicates the + absence of this attribute. + + Known Issues: + o The BGP-4 specification uses an + unsigned 32 bit number and thus this + object cannot represent the full + range of the protocol." + + + + REFERENCE + "RFC 4271, Section 9.1.1." + ::= { bgp4PathAttrEntry 12 } + + bgp4PathAttrBest OBJECT-TYPE + SYNTAX INTEGER { + false(1),-- not chosen as best route + true(2) -- chosen as best route + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this route + was chosen as the best BGP4 route for this + destination." + REFERENCE + "RFC 4271, Section 9.1.2." + ::= { bgp4PathAttrEntry 13 } + + bgp4PathAttrUnknown OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One or more path attributes not understood by + this BGP4 speaker. + + Path attributes are recorded in the Update Path + attribute format of type, length, value. + + Size zero (0) indicates the absence of such + attributes. + + Octets beyond the maximum size, if any, are not + recorded by this object. + + Known Issues: + o Attributes understood by this speaker, but not + represented in this MIB, are unavailable to + the agent." + REFERENCE + "RFC 4271, Section 5." + ::= { bgp4PathAttrEntry 14 } + + -- Traps. + -- Note that in RFC 1657, bgpTraps was incorrectly + -- assigned a value of { bgp 7 } and each of the + -- traps had the bgpPeerRemoteAddr object inappropriately + + + + -- removed from their OBJECTS clause. The following + -- definitions restore the semantics of the traps as + -- they were initially defined in RFC 1269. + + bgpNotification OBJECT IDENTIFIER ::= { bgp 0 } + + bgpEstablishedNotification NOTIFICATION-TYPE + OBJECTS { bgpPeerRemoteAddr, + bgpPeerLastError, + bgpPeerState } + STATUS current + DESCRIPTION + "The bgpEstablishedNotification event is generated + when the BGP FSM enters the established state. + + This Notification replaces the bgpEstablished + Notification." + ::= { bgpNotification 1 } + + bgpBackwardTransNotification NOTIFICATION-TYPE + OBJECTS { bgpPeerRemoteAddr, + bgpPeerLastError, + bgpPeerState } + STATUS current + DESCRIPTION + "The bgpBackwardTransNotification event is + generated when the BGP FSM moves from a higher + numbered state to a lower numbered state. + + This Notification replaces the + bgpBackwardsTransition Notification." + ::= { bgpNotification 2 } + + -- { bgp 7 } is deprecated. Do not allocate new objects or + -- notifications underneath this branch. + + bgpTraps OBJECT IDENTIFIER ::= { bgp 7 } -- deprecated + + bgpEstablished NOTIFICATION-TYPE + OBJECTS { bgpPeerLastError, + bgpPeerState } + STATUS deprecated + DESCRIPTION + "The bgpEstablished event is generated when + the BGP FSM enters the established state. + + This Notification has been replaced by the + bgpEstablishedNotification Notification." + + + + ::= { bgpTraps 1 } + + bgpBackwardTransition NOTIFICATION-TYPE + OBJECTS { bgpPeerLastError, + bgpPeerState } + STATUS deprecated + DESCRIPTION + "The bgpBackwardTransition event is generated + when the BGP FSM moves from a higher numbered + state to a lower numbered state. + + This Notification has been replaced by the + bgpBackwardTransNotification Notification." + ::= { bgpTraps 2 } + + -- Conformance information + + bgp4MIBConformance OBJECT IDENTIFIER + ::= { bgp 8 } + bgp4MIBCompliances OBJECT IDENTIFIER + ::= { bgp4MIBConformance 1 } + bgp4MIBGroups OBJECT IDENTIFIER + ::= { bgp4MIBConformance 2 } + + -- Compliance statements + + bgp4MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which + implement the BGP4 mib." + MODULE -- this module + MANDATORY-GROUPS { bgp4MIBGlobalsGroup, + bgp4MIBPeerGroup, + bgp4MIBPathAttrGroup } + GROUP bgp4MIBNotificationGroup + DESCRIPTION + "Implementation of BGP Notifications are + completely optional in this MIB." + ::= { bgp4MIBCompliances 1 } + + bgp4MIBDeprecatedCompliances MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement documenting deprecated + objects in the BGP4 mib." + MODULE -- this module + GROUP bgp4MIBTrapGroup + + + + DESCRIPTION + "Group containing TRAP objects that were + improperly converted from SMIv1 in RFC 1657. + The proper semantics have been restored + with the objects in bgp4MIBNotificationGroup." + ::= { bgp4MIBCompliances 2 } + + bgp4MIBObsoleteCompliances MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement documenting obsolete + objects in the BGP4 mib." + MODULE -- this module + GROUP bgpRcvdPathAttrGroup + DESCRIPTION + "Group containing objects relevant to BGP-3 + and earlier objects." + ::= { bgp4MIBCompliances 3 } + + -- Units of conformance + + bgp4MIBGlobalsGroup OBJECT-GROUP + OBJECTS { bgpVersion, + bgpLocalAs, + bgpIdentifier } + STATUS current + DESCRIPTION + "A collection of objects providing + information on global BGP state." + ::= { bgp4MIBGroups 1 } + + bgp4MIBPeerGroup OBJECT-GROUP + OBJECTS { bgpPeerIdentifier, + bgpPeerState, + bgpPeerAdminStatus, + bgpPeerNegotiatedVersion, + bgpPeerLocalAddr, + bgpPeerLocalPort, + bgpPeerRemoteAddr, + bgpPeerRemotePort, + bgpPeerRemoteAs, + bgpPeerInUpdates, + bgpPeerOutUpdates, + bgpPeerInTotalMessages, + bgpPeerOutTotalMessages, + bgpPeerLastError, + bgpPeerFsmEstablishedTransitions, + bgpPeerFsmEstablishedTime, + + + + bgpPeerConnectRetryInterval, + bgpPeerHoldTime, + bgpPeerKeepAlive, + bgpPeerHoldTimeConfigured, + bgpPeerKeepAliveConfigured, + bgpPeerMinASOriginationInterval, + bgpPeerMinRouteAdvertisementInterval, + bgpPeerInUpdateElapsedTime } + STATUS current + DESCRIPTION + "A collection of objects for managing + BGP peers." + ::= { bgp4MIBGroups 2 } + + bgpRcvdPathAttrGroup OBJECT-GROUP + OBJECTS { bgpPathAttrPeer, + bgpPathAttrDestNetwork, + bgpPathAttrOrigin, + bgpPathAttrASPath, + bgpPathAttrNextHop, + bgpPathAttrInterASMetric } + STATUS obsolete + DESCRIPTION + "A collection of objects for managing BGP-3 and + earlier path entries. + + This conformance group, like BGP-3, is obsolete." + ::= { bgp4MIBGroups 3 } + + bgp4MIBPathAttrGroup OBJECT-GROUP + OBJECTS { bgp4PathAttrPeer, + bgp4PathAttrIpAddrPrefixLen, + bgp4PathAttrIpAddrPrefix, + bgp4PathAttrOrigin, + bgp4PathAttrASPathSegment, + bgp4PathAttrNextHop, + bgp4PathAttrMultiExitDisc, + bgp4PathAttrLocalPref, + bgp4PathAttrAtomicAggregate, + bgp4PathAttrAggregatorAS, + bgp4PathAttrAggregatorAddr, + bgp4PathAttrCalcLocalPref, + bgp4PathAttrBest, + bgp4PathAttrUnknown } + STATUS current + DESCRIPTION + "A collection of objects for managing + BGP path entries." + + + + ::= { bgp4MIBGroups 4 } + + bgp4MIBTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { bgpEstablished, + bgpBackwardTransition } + STATUS deprecated + DESCRIPTION + "A collection of notifications for signaling + changes in BGP peer relationships. + + Obsoleted by bgp4MIBNotificationGroup" + ::= { bgp4MIBGroups 5 } + + bgp4MIBNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { bgpEstablishedNotification, + bgpBackwardTransNotification } + STATUS current + DESCRIPTION + "A collection of notifications for signaling + changes in BGP peer relationships. + + Obsoletes bgp4MIBTrapGroup." + ::= { bgp4MIBGroups 6 } + +END diff --git a/mibs/ietf/BLDG-HVAC-MIB b/mibs/ietf/BLDG-HVAC-MIB new file mode 100644 index 0000000..b609022 --- /dev/null +++ b/mibs/ietf/BLDG-HVAC-MIB @@ -0,0 +1,612 @@ +BLDG-HVAC-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, Counter32, + Gauge32, OBJECT-TYPE, Unsigned32, experimental + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION, + TimeStamp, RowStatus, StorageType + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + +bldgHVACMIB MODULE-IDENTITY + LAST-UPDATED "200303270000Z" + ORGANIZATION "SNMPCONF working group + E-mail: snmpconf@snmp.com" + CONTACT-INFO + "Jon Saperia + Postal: JDS Consulting + 174 Chapman Street + Watertown, MA 02472 + U.S.A. + Phone: +1 617 744 1079 + E-mail: saperia@jdscons.com + + Wayne Tackabury + Postal: Gold Wire Technology + 411 Waverley Oaks Rd. + Waltham, MA 02452 + U.S.A. + Phone: +1 781 398 8800 + E-mail: wayne@goldwiretech.com + + + + Michael MacFaden + Postal: Riverstone Networks + 5200 Great America Pkwy. + Santa Clara, CA 95054 + U.S.A. + Phone: +1 408 878 6500 + E-mail: mrm@riverstonenet.com + + David Partain + Postal: Ericsson AB + P.O. Box 1248 + SE-581 12 Linkoping + Sweden + E-mail: David.Partain@ericsson.com" + DESCRIPTION + "This example MIB module defines a set of management objects + for heating ventilation and air conditioning systems. It + also includes objects that can be used to create policies + that are applied to rooms. This eliminates the need to send + per-instance configuration commands to the system. + + Copyright (C) The Internet Society (2003). This version of + this MIB module is part of RFC 3512; see the RFC itself for + full legal notices." + + REVISION "200303270000Z" + DESCRIPTION + "Initial version of BLDG-HVAC-MIB as published in RFC 3512." + ::= { experimental 122 } + +bldgHVACObjects OBJECT IDENTIFIER ::= { bldgHVACMIB 1 } +bldgConformance OBJECT IDENTIFIER ::= { bldgHVACMIB 2 } + +-- +-- Textual Conventions +-- + +BldgHvacOperation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Operations supported by a heating and cooling system. + A reference to underlying general systems would go here." + SYNTAX INTEGER { + heat(1), + cool(2) + } +-- +-- HVAC Objects Group + + + +-- + +bldgHVACTable OBJECT-TYPE + SYNTAX SEQUENCE OF BldgHVACEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is the representation and data control + for building HVAC by each individual office. + The table has rows for, and is indexed by a specific + floor and office number. Each such row includes + HVAC statistical and current status information for + the associated office. The row also contains a + bldgHVACCfgTemplate columnar object that relates the + bldgHVACTable row to a row in the bldgHVACCfgTemplateTable. + If this value is nonzero, then the instance in the row + that has a value for how the HVAC has been configured + in the associated template (bldgHVACCfgTeplateTable row). + Hence, the bldgHVACCfgTeplateTable row contains the + specific configuration values for the offices as described + in this table." + ::= { bldgHVACObjects 1 } + +bldgHVACEntry OBJECT-TYPE + SYNTAX BldgHVACEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the bldgHVACTable. Each row represents a particular + office in the building, qualified by its floor and office + number. A given row instance can be created or deleted by + set operations upon its bldgHVACStatus columnar + object instance." + INDEX { bldgHVACFloor, bldgHVACOffice } + ::= { bldgHVACTable 1 } + +BldgHVACEntry ::= SEQUENCE { + bldgHVACFloor Unsigned32, + bldgHVACOffice Unsigned32, + bldgHVACCfgTemplate Unsigned32, + bldgHVACFanSpeed Gauge32, + bldgHVACCurrentTemp Gauge32, + bldgHVACCoolOrHeatMins Counter32, + bldgHVACDiscontinuityTime TimeStamp, + bldgHVACOwner SnmpAdminString, + bldgHVACStorageType StorageType, + bldgHVACStatus RowStatus + } + + + +bldgHVACFloor OBJECT-TYPE + SYNTAX Unsigned32 (1..1000) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This portion of the index indicates the floor of the + building. The ground floor is considered the + first floor. For the purposes of this example, + floors under the ground floor cannot be + controlled using this MIB module." + ::= { bldgHVACEntry 1 } + +bldgHVACOffice OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This second component of the index specifies the + office number." + ::= { bldgHVACEntry 2 } + +bldgHVACCfgTemplate OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index (bldgHVACCfgTemplateIndex instance) + of an entry in the 'bldgHVACCfgTemplateTable'. + The bldgHVACCfgTable row instance referenced + is a pre-made configuration 'template' + that represents the configuration described + by the bldgHVACCfgTemplateInfoDescr object. Note + that not all configurations will be under a + defined template. As a result, a row in this + bldgHVACTable may point to an entry in the + bldgHVACCfgTemplateTable that does not in turn + have a reference (bldgHVACCfgTemplateInfo) to an + entry in the bldgHVACCfgTemplateInfoTable. The + benefit of this approach is that all + configuration information is available in one + table whether all elements in the system are + derived from configured templates or not. + + Where the instance value for this colunmar object + is zero, this row represents data for an office + whose HVAC status can be monitored using the + read-only columnar object instances of this + row, but is not under the configuration control + + + + of the agent." + ::= { bldgHVACEntry 3 } + +bldgHVACFanSpeed OBJECT-TYPE + SYNTAX Gauge32 + UNITS "revolutions per minute" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Shows the revolutions per minute of the fan. Fan speed + will vary based on the difference between + bldgHVACCfgTemplateDesiredTemp and bldgHVACCurrentTemp. The + speed is measured in revolutions of the fan blade per minute." + ::= { bldgHVACEntry 4 } + +bldgHVACCurrentTemp OBJECT-TYPE + SYNTAX Gauge32 + UNITS "degrees in celsius" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current measured temperature in the office. Should + the current temperature be measured at a value of less + than zero degrees celsius, a read of the instance + for this object will return a value of zero." + ::= { bldgHVACEntry 5 } + +bldgHVACCoolOrHeatMins OBJECT-TYPE + SYNTAX Counter32 + UNITS "minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of heating or cooling minutes that have + been consumed since the row was activated. Notice that + whether the minutes represent heating or cooling is a + function of the configuration of this row. If the system + is re-initialized from a cooling to heating function or + vice versa, then the counter would start over again. This + effect is similar to a reconfiguration of some network + interface cards. When parameters that impact + configuration are changed, the subsystem must be + re-initialized. Discontinuities in the value of this counter + can occur at re-initialization of the management system, + and at other times as indicated by the value of + bldgHVACDiscontinuityTime." + ::= { bldgHVACEntry 6 } + + + + +bldgHVACDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any heating or cooling operation for the office designated + by this row instance experienced a discontinuity. If + no such discontinuities have occurred since the last re- + initialization of the this row, then this object contains a + zero value." + ::= { bldgHVACEntry 7 } + +bldgHVACOwner OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The identity of the operator/system that + last modified this entry. When a new entry + is created, a valid SnmpAdminString must + be supplied. If, on the other hand, this + entry is populated by the agent 'discovering' + unconfigured rooms, the empty string is a valid + value for this object." + ::= { bldgHVACEntry 8 } + +bldgHVACStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The persistence of this row of the table in system storage, + as it pertains to permanence across system resets. A columnar + instance of this object with value 'permanent' need not allow + write-access to any of the columnar object instances in the + containing row." + ::= { bldgHVACEntry 9 } + +bldgHVACStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls and reflects the creation and activation status of + a row in this table. + + No attempt to modify a row columnar object instance value in + + + + the bldgHVACTable should be issued while the value of + bldgHVACStatus is active(1). Should an agent receive a SET + PDU attempting such a modification in this state, an + inconsistentValue error should be returned as a result of + the SET attempt." + ::= { bldgHVACEntry 10 } +-- +-- HVAC Configuration Template Table +-- + +bldgHVACCfgTemplateInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF BldgHVACCfgTemplateInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides unique string identification for + HVAC templates in a network. If it were necessary to + configure rooms to deliver a particular quality of climate + control with regard to cooling or heating, the index string + of a row in this table could be the template name. + The bldgHVACCfgCfgTemplateInfoDescription + contains a brief description of the template service objective + such as: provides summer cooling settings for executive + offices. The bldgHVACCfgTemplateInfo in the + bldgHVACCfgTemplateTable will contain the pointer to the + relevant row in this table if it is intended that items + that point to a row in the bldgHVACCfgTemplateInfoTable be + identifiable as being under template control though this + mechanism." + + ::= { bldgHVACObjects 2 } + +bldgHVACCfgTemplateInfoEntry OBJECT-TYPE + SYNTAX BldgHVACCfgTemplateInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row represents a particular template and + description. A given row instance can be created or + deleted by set operations upon its + bldgHVACCfgTemplateInfoStatus columnar object + instance." + INDEX { bldgHVACCfgTemplateInfoIndex } + ::= { bldgHVACCfgTemplateInfoTable 1 } + +BldgHVACCfgTemplateInfoEntry ::= SEQUENCE { + bldgHVACCfgTemplateInfoIndex Unsigned32, + bldgHVACCfgTemplateInfoID SnmpAdminString, + + + + bldgHVACCfgTemplateInfoDescr SnmpAdminString, + bldgHVACCfgTemplateInfoOwner SnmpAdminString, + bldgHVACCfgTemplateInfoStatus RowStatus, + bldgHVACCfgTemplateInfoStorType StorageType + } + +bldgHVACCfgTemplateInfoIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique index to a row in this table." + ::= { bldgHVACCfgTemplateInfoEntry 1 } + +bldgHVACCfgTemplateInfoID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Textual identifier for this table row, and, consequently + the template. This should be a unique name within + an administrative domain for a particular template so that + all systems in a network that are under the same template + can have the same 'handle' (e.g., 'Executive Offices', + 'Lobby Areas')." + ::= { bldgHVACCfgTemplateInfoEntry 2 } + + +bldgHVACCfgTemplateInfoDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A general description of the template. One example might + be - Controls the cooling for offices on higher floors + during the summer." + ::= { bldgHVACCfgTemplateInfoEntry 3 } + +bldgHVACCfgTemplateInfoOwner OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The identity of the operator/system that last modified + this entry." + ::= { bldgHVACCfgTemplateInfoEntry 4 } + +bldgHVACCfgTemplateInfoStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The activation status of this row. + + No attempt to modify a row columnar object instance value in + the bldgHVACCfgTemplateInfo Table should be issued while the + value of bldgHVACCfgTemplateInfoStatus is active(1). + Should an agent receive a SET PDU attempting such a modification + in this state, an inconsistentValue error should be returned as + a result of the SET attempt." + ::= { bldgHVACCfgTemplateInfoEntry 5 } + +bldgHVACCfgTemplateInfoStorType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The persistence of this row of the table in system storage, + as it pertains to permanence across system resets. A columnar + instance of this object with value 'permanent' need not allow + write-access to any of the columnar object instances in the + containing row." + ::= { bldgHVACCfgTemplateInfoEntry 6 } + +-- +-- HVAC Configuration Template Table +-- +bldgHVACCfgTemplateTable OBJECT-TYPE + SYNTAX SEQUENCE OF BldgHVACCfgTemplateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the templates, which + can be used to set defaults that will + be applied to specific offices. The application + of those values is accomplished by having a row + instance of the bldgHVACTable reference a row of + this table (by the value of the former's + bldgHVACCfgTemplate columnar instance). Identifying + information concerning a row instance of this table + can be found in the columnar data of the row instance + of the bldgHVACCfgTemplateInfoTable entry referenced + by the bldgHVACCfgTemplateInfo columnar object of + this table." + ::= { bldgHVACObjects 3 } + + + + +bldgHVACCfgTemplateEntry OBJECT-TYPE + SYNTAX BldgHVACCfgTemplateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row represents a single set of template parameters + that can be applied to selected instances - in this case + offices. These policies will be turned on and off by the + policy module through its scheduling facilities. + + A given row instance can be created or + deleted by set operations upon its + bldgHVACCfgTemplateStatus columnar object instance." + INDEX { bldgHVACCfgTemplateIndex } + ::= { bldgHVACCfgTemplateTable 1 } + +BldgHVACCfgTemplateEntry ::= SEQUENCE { + bldgHVACCfgTemplateIndex Unsigned32, + bldgHVACCfgTemplateDesiredTemp Gauge32, + bldgHVACCfgTemplateCoolOrHeat BldgHvacOperation, + bldgHVACCfgTemplateInfo Unsigned32, + bldgHVACCfgTemplateOwner SnmpAdminString, + bldgHVACCfgTemplateStorage StorageType, + bldgHVACCfgTemplateStatus RowStatus +} + +bldgHVACCfgTemplateIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each defined template in this + table. This value can be referenced as a row index + by any MIB module that needs access to this information. + The bldgHVACCfgTemplate will point to entries in this + table." + ::= { bldgHVACCfgTemplateEntry 1 } + +bldgHVACCfgTemplateDesiredTemp OBJECT-TYPE + SYNTAX Gauge32 + UNITS "degrees in celsius" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the desired temperature setting. It might be + changed at different times of the day or based on + seasonal conditions. It is permitted to change this value + by first moving the row to an inactive state, making the + + + + change and then reactivating the row." + ::= { bldgHVACCfgTemplateEntry 2 } + +bldgHVACCfgTemplateCoolOrHeat OBJECT-TYPE + SYNTAX BldgHvacOperation + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This controls the heating and cooling mechanism and is + set-able by building maintenance. It is permitted to + change this value by first moving the row to an inactive + state, making the change and then reactivating the row." + ::= { bldgHVACCfgTemplateEntry 3 } + +bldgHVACCfgTemplateInfo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object points to a row in the + bldgHVACCfgTemplateInfoTable. This controls the + heating and cooling mechanism and is set-able by + building maintenance. It is permissible to change + this value by first moving the row to an inactive + state, making the change and then reactivating + the row. A value of zero means that this entry + is not associated with a named template found + in the bldgHVACCfgTemplateInfoTable." + ::= { bldgHVACCfgTemplateEntry 4 } + +bldgHVACCfgTemplateOwner OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The identity of the administrative entity + that created this row of the table." + ::= { bldgHVACCfgTemplateEntry 5 } + +bldgHVACCfgTemplateStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The persistence of this row of the table across + system resets. A columnar instance of this object with + value 'permanent' need not allow write-access to any + of the columnar object instances in the containing row." + + + + ::= { bldgHVACCfgTemplateEntry 6 } + +bldgHVACCfgTemplateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The activation status of this row of the table. + + No attempt to modify a row columnar object instance value in + the bldgHVACCfgTemplateTable should be issued while the + value of bldgHVACCfgTemplateStatus is active(1). + Should an agent receive a SET PDU attempting such a modification + in this state, an inconsistentValue error should be returned as + a result of the SET attempt." + ::= { bldgHVACCfgTemplateEntry 7 } + +-- +-- Conformance Information +-- + +bldgCompliances OBJECT IDENTIFIER ::= { bldgConformance 1 } +bldgGroups OBJECT IDENTIFIER ::= { bldgConformance 2 } + +-- Compliance Statements + +bldgCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The requirements for conformance to the BLDG-HVAC-MIB. The + bldgHVACObjects group must be implemented to conform to the + BLDG-HVAC-MIB." + MODULE -- this module + + GROUP bldgHVACObjectsGroup + DESCRIPTION + "The bldgHVACObjects is mandatory for all systems that + support HVAC systems." + ::= { bldgCompliances 1 } + +bldgHVACObjectsGroup OBJECT-GROUP + OBJECTS { + bldgHVACCfgTemplate, + bldgHVACFanSpeed, bldgHVACCurrentTemp, + bldgHVACCoolOrHeatMins, bldgHVACDiscontinuityTime, + bldgHVACOwner, bldgHVACStatus, + bldgHVACStorageType, bldgHVACCfgTemplateInfoID, + bldgHVACCfgTemplateInfoDescr, bldgHVACCfgTemplateInfoOwner, + + + + bldgHVACCfgTemplateInfoStatus, + bldgHVACCfgTemplateInfoStorType, + bldgHVACCfgTemplateDesiredTemp, + bldgHVACCfgTemplateCoolOrHeat, + bldgHVACCfgTemplateInfo, + bldgHVACCfgTemplateOwner,bldgHVACCfgTemplateStorage, + bldgHVACCfgTemplateStatus + } + STATUS current + DESCRIPTION + "The bldgHVACObjects Group." + ::= { bldgGroups 1 } + +END diff --git a/mibs/ietf/BRIDGE-MIB b/mibs/ietf/BRIDGE-MIB new file mode 100644 index 0000000..a0a5edc --- /dev/null +++ b/mibs/ietf/BRIDGE-MIB @@ -0,0 +1,1556 @@ +BRIDGE-MIB DEFINITIONS ::= BEGIN + +-- ---------------------------------------------------------- -- +-- MIB for IEEE 802.1D devices +-- ---------------------------------------------------------- -- +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32, TimeTicks, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, MacAddress + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + InterfaceIndex FROM IF-MIB + ; + +dot1dBridge MODULE-IDENTITY + LAST-UPDATED "200509190000Z" + ORGANIZATION "IETF Bridge MIB Working Group" + CONTACT-INFO + "Email: bridge-mib@ietf.org + + K.C. Norseth (Editor) + L-3 Communications + Tel: +1 801-594-2809 + Email: kenyon.c.norseth@L-3com.com + Postal: 640 N. 2200 West. + Salt Lake City, Utah 84116-0850 + + + + + Les Bell (Editor) + 3Com Europe Limited + Phone: +44 1442 438025 + Email: elbell@ntlworld.com + Postal: 3Com Centre, Boundary Way + Hemel Hempstead + Herts. HP2 7YU + UK + + Send comments to " + DESCRIPTION + "The Bridge MIB module for managing devices that support + IEEE 802.1D. + + Copyright (C) The Internet Society (2005). This version of + this MIB module is part of RFC 4188; see the RFC itself for + full legal notices." + REVISION "200509190000Z" + DESCRIPTION + "Third revision, published as part of RFC 4188. + + The MIB module has been converted to SMIv2 format. + Conformance statements have been added and some + description and reference clauses have been updated. + + The object dot1dStpPortPathCost32 was added to + support IEEE 802.1t and the permissible values of + dot1dStpPriority and dot1dStpPortPriority have been + clarified for bridges supporting IEEE 802.1t or + IEEE 802.1w. + + The interpretation of dot1dStpTimeSinceTopologyChange + has been clarified for bridges supporting the Rapid + Spanning Tree Protocol (RSTP)." + REVISION "199307310000Z" + DESCRIPTION + "Second revision, published as part of RFC 1493." + REVISION "199112310000Z" + DESCRIPTION + "Initial revision, published as part of RFC 1286." + ::= { mib-2 17 } + + +-- ---------------------------------------------------------- -- +-- Textual Conventions +-- ---------------------------------------------------------- -- + +BridgeId ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "The Bridge-Identifier, as used in the Spanning Tree + Protocol, to uniquely identify a bridge. Its first two + octets (in network byte order) contain a priority value, + and its last 6 octets contain the MAC address used to + refer to a bridge in a unique fashion (typically, the + numerically smallest MAC address of all ports on the + bridge)." + SYNTAX OCTET STRING (SIZE (8)) + +Timeout ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A Spanning Tree Protocol (STP) timer in units of 1/100 + seconds. Several objects in this MIB module represent + values of timers used by the Spanning Tree Protocol. + In this MIB, these timers have values in units of + hundredths of a second (i.e., 1/100 secs). + + These timers, when stored in a Spanning Tree Protocol's + BPDU, are in units of 1/256 seconds. Note, however, that + 802.1D-1998 specifies a settable granularity of no more + than one second for these timers. To avoid ambiguity, + a conversion algorithm is defined below for converting + between the different units, which ensures a timer's + value is not distorted by multiple conversions. + + To convert a Timeout value into a value in units of + 1/256 seconds, the following algorithm should be used: + + b = floor( (n * 256) / 100) + + where: + floor = quotient [ignore remainder] + n is the value in 1/100 second units + b is the value in 1/256 second units + + To convert the value from 1/256 second units back to + 1/100 seconds, the following algorithm should be used: + + n = ceiling( (b * 100) / 256) + + where: + ceiling = quotient [if remainder is 0], or + quotient + 1 [if remainder is nonzero] + n is the value in 1/100 second units + + + + b is the value in 1/256 second units + + Note: it is important that the arithmetic operations are + done in the order specified (i.e., multiply first, + divide second)." + SYNTAX Integer32 + +-- ---------------------------------------------------------- -- +-- subtrees in the Bridge MIB +-- ---------------------------------------------------------- -- + +dot1dNotifications OBJECT IDENTIFIER ::= { dot1dBridge 0 } + +dot1dBase OBJECT IDENTIFIER ::= { dot1dBridge 1 } +dot1dStp OBJECT IDENTIFIER ::= { dot1dBridge 2 } + +dot1dSr OBJECT IDENTIFIER ::= { dot1dBridge 3 } +-- documented in RFC 1525 + +dot1dTp OBJECT IDENTIFIER ::= { dot1dBridge 4 } +dot1dStatic OBJECT IDENTIFIER ::= { dot1dBridge 5 } + +-- Subtrees used by Bridge MIB Extensions: +-- pBridgeMIB MODULE-IDENTITY ::= { dot1dBridge 6 } +-- qBridgeMIB MODULE-IDENTITY ::= { dot1dBridge 7 } +-- Note that the practice of registering related MIB modules +-- below dot1dBridge has been discouraged since there is no +-- robust mechanism to track such registrations. + +dot1dConformance OBJECT IDENTIFIER ::= { dot1dBridge 8 } + +-- ---------------------------------------------------------- -- +-- the dot1dBase subtree +-- ---------------------------------------------------------- -- +-- Implementation of the dot1dBase subtree is mandatory for all +-- bridges. +-- ---------------------------------------------------------- -- + +dot1dBaseBridgeAddress OBJECT-TYPE + + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MAC address used by this bridge when it must be + referred to in a unique fashion. It is recommended + that this be the numerically smallest MAC address of + all ports that belong to this bridge. However, it is only + + + + required to be unique. When concatenated with + dot1dStpPriority, a unique BridgeIdentifier is formed, + which is used in the Spanning Tree Protocol." + REFERENCE + "IEEE 802.1D-1998: clauses 14.4.1.1.3 and 7.12.5" + ::= { dot1dBase 1 } + +dot1dBaseNumPorts OBJECT-TYPE + SYNTAX Integer32 + UNITS "ports" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ports controlled by this bridging + entity." + REFERENCE + "IEEE 802.1D-1998: clause 14.4.1.1.3" + ::= { dot1dBase 2 } + +dot1dBaseType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + transparent-only(2), + sourceroute-only(3), + srt(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates what type of bridging this bridge can + perform. If a bridge is actually performing a + certain type of bridging, this will be indicated by + entries in the port table for the given type." + ::= { dot1dBase 3 } + +-- ---------------------------------------------------------- -- +-- The Generic Bridge Port Table +-- ---------------------------------------------------------- -- +dot1dBasePortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dBasePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains generic information about every + port that is associated with this bridge. Transparent, + source-route, and srt ports are included." + ::= { dot1dBase 4 } + + + + +dot1dBasePortEntry OBJECT-TYPE + SYNTAX Dot1dBasePortEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "A list of information for each port of the bridge." + REFERENCE + "IEEE 802.1D-1998: clause 14.4.2, 14.6.1" + INDEX { dot1dBasePort } + ::= { dot1dBasePortTable 1 } + +Dot1dBasePortEntry ::= + SEQUENCE { + dot1dBasePort + Integer32, + dot1dBasePortIfIndex + InterfaceIndex, + dot1dBasePortCircuit + OBJECT IDENTIFIER, + dot1dBasePortDelayExceededDiscards + Counter32, + dot1dBasePortMtuExceededDiscards + Counter32 + } + +dot1dBasePort OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number of the port for which this entry + contains bridge management information." + ::= { dot1dBasePortEntry 1 } + +dot1dBasePortIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the instance of the ifIndex object, + defined in IF-MIB, for the interface corresponding + to this port." + ::= { dot1dBasePortEntry 2 } + +dot1dBasePortCircuit OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "For a port that (potentially) has the same value of + dot1dBasePortIfIndex as another port on the same bridge. + This object contains the name of an object instance + unique to this port. For example, in the case where + multiple ports correspond one-to-one with multiple X.25 + virtual circuits, this value might identify an (e.g., + the first) object instance associated with the X.25 + virtual circuit corresponding to this port. + + For a port which has a unique value of + dot1dBasePortIfIndex, this object can have the value + { 0 0 }." + ::= { dot1dBasePortEntry 3 } + +dot1dBasePortDelayExceededDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames discarded by this port due + to excessive transit delay through the bridge. It + is incremented by both transparent and source + route bridges." + REFERENCE + "IEEE 802.1D-1998: clause 14.6.1.1.3" + ::= { dot1dBasePortEntry 4 } + +dot1dBasePortMtuExceededDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames discarded by this port due + to an excessive size. It is incremented by both + transparent and source route bridges." + REFERENCE + "IEEE 802.1D-1998: clause 14.6.1.1.3" + ::= { dot1dBasePortEntry 5 } + +-- ---------------------------------------------------------- -- +-- the dot1dStp subtree +-- ---------------------------------------------------------- -- +-- Implementation of the dot1dStp subtree is optional. It is +-- implemented by those bridges that support the Spanning Tree +-- Protocol. +-- ---------------------------------------------------------- -- + + + +dot1dStpProtocolSpecification OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + decLb100(2), + ieee8021d(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of what version of the Spanning Tree + Protocol is being run. The value 'decLb100(2)' + indicates the DEC LANbridge 100 Spanning Tree protocol. + IEEE 802.1D implementations will return 'ieee8021d(3)'. + If future versions of the IEEE Spanning Tree Protocol + that are incompatible with the current version + are released a new value will be defined." + ::= { dot1dStp 1 } + +dot1dStpPriority OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the write-able portion of the Bridge ID + (i.e., the first two octets of the (8 octet long) Bridge + ID). The other (last) 6 octets of the Bridge ID are + given by the value of dot1dBaseBridgeAddress. + On bridges supporting IEEE 802.1t or IEEE 802.1w, + permissible values are 0-61440, in steps of 4096." + REFERENCE + "IEEE 802.1D-1998 clause 8.10.2, Table 8-4, + IEEE 802.1t clause 8.10.2, Table 8-4, clause 14.3." + ::= { dot1dStp 2 } + +dot1dStpTimeSinceTopologyChange OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centi-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + last time a topology change was detected by the + bridge entity. + For RSTP, this reports the time since the tcWhile + timer for any port on this Bridge was nonzero." + REFERENCE + "IEEE 802.1D-1998 clause 14.8.1.1., + IEEE 802.1w clause 14.8.1.1." + + + + ::= { dot1dStp 3 } + +dot1dStpTopChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of topology changes detected by + this bridge since the management entity was last + reset or initialized." + REFERENCE + "IEEE 802.1D-1998 clause 14.8.1.1." + ::= { dot1dStp 4 } + +dot1dStpDesignatedRoot OBJECT-TYPE + SYNTAX BridgeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bridge identifier of the root of the spanning + tree, as determined by the Spanning Tree Protocol, + as executed by this node. This value is used as + the Root Identifier parameter in all Configuration + Bridge PDUs originated by this node." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.1" + ::= { dot1dStp 5 } + +dot1dStpRootCost OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cost of the path to the root as seen from + this bridge." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.2" + ::= { dot1dStp 6 } + +dot1dStpRootPort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number of the port that offers the lowest + cost path from this bridge to the root bridge." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.3" + + + + ::= { dot1dStp 7 } + +dot1dStpMaxAge OBJECT-TYPE + SYNTAX Timeout + UNITS "centi-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum age of Spanning Tree Protocol information + learned from the network on any port before it is + discarded, in units of hundredths of a second. This is + the actual value that this bridge is currently using." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.4" + ::= { dot1dStp 8 } + +dot1dStpHelloTime OBJECT-TYPE + SYNTAX Timeout + UNITS "centi-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time between the transmission of + Configuration bridge PDUs by this node on any port when + it is the root of the spanning tree, or trying to become + so, in units of hundredths of a second. This is the + actual value that this bridge is currently using." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.5" + ::= { dot1dStp 9 } + +dot1dStpHoldTime OBJECT-TYPE + SYNTAX Integer32 + UNITS "centi-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This time value determines the interval length + during which no more than two Configuration bridge + PDUs shall be transmitted by this node, in units + of hundredths of a second." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.14" + ::= { dot1dStp 10 } + +dot1dStpForwardDelay OBJECT-TYPE + SYNTAX Timeout + UNITS "centi-seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This time value, measured in units of hundredths of a + second, controls how fast a port changes its spanning + state when moving towards the Forwarding state. The + value determines how long the port stays in each of the + Listening and Learning states, which precede the + Forwarding state. This value is also used when a + topology change has been detected and is underway, to + age all dynamic entries in the Forwarding Database. + [Note that this value is the one that this bridge is + currently using, in contrast to + dot1dStpBridgeForwardDelay, which is the value that this + bridge and all others would start using if/when this + bridge were to become the root.]" + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.6" + ::= { dot1dStp 11 } + +dot1dStpBridgeMaxAge OBJECT-TYPE + SYNTAX Timeout (600..4000) + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value that all bridges use for MaxAge when this + bridge is acting as the root. Note that 802.1D-1998 + specifies that the range for this parameter is related + to the value of dot1dStpBridgeHelloTime. The + granularity of this timer is specified by 802.1D-1998 to + be 1 second. An agent may return a badValue error if a + set is attempted to a value that is not a whole number + of seconds." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.8" + ::= { dot1dStp 12 } + +dot1dStpBridgeHelloTime OBJECT-TYPE + SYNTAX Timeout (100..1000) + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value that all bridges use for HelloTime when this + bridge is acting as the root. The granularity of this + timer is specified by 802.1D-1998 to be 1 second. An + agent may return a badValue error if a set is attempted + + + + to a value that is not a whole number of seconds." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.9" + ::= { dot1dStp 13 } + +dot1dStpBridgeForwardDelay OBJECT-TYPE + SYNTAX Timeout (400..3000) + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value that all bridges use for ForwardDelay when + this bridge is acting as the root. Note that + 802.1D-1998 specifies that the range for this parameter + is related to the value of dot1dStpBridgeMaxAge. The + granularity of this timer is specified by 802.1D-1998 to + be 1 second. An agent may return a badValue error if a + set is attempted to a value that is not a whole number + of seconds." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.3.10" + ::= { dot1dStp 14 } + +-- ---------------------------------------------------------- -- +-- The Spanning Tree Port Table +-- ---------------------------------------------------------- -- + +dot1dStpPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dStpPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains port-specific information + for the Spanning Tree Protocol." + ::= { dot1dStp 15 } + +dot1dStpPortEntry OBJECT-TYPE + SYNTAX Dot1dStpPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information maintained by every port about + the Spanning Tree Protocol state for that port." + INDEX { dot1dStpPort } + ::= { dot1dStpPortTable 1 } + +Dot1dStpPortEntry ::= + SEQUENCE { + + + + dot1dStpPort + Integer32, + dot1dStpPortPriority + Integer32, + dot1dStpPortState + INTEGER, + dot1dStpPortEnable + INTEGER, + dot1dStpPortPathCost + Integer32, + dot1dStpPortDesignatedRoot + BridgeId, + dot1dStpPortDesignatedCost + Integer32, + dot1dStpPortDesignatedBridge + BridgeId, + dot1dStpPortDesignatedPort + OCTET STRING, + dot1dStpPortForwardTransitions + Counter32, + dot1dStpPortPathCost32 + Integer32 + } + +dot1dStpPort OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number of the port for which this entry + contains Spanning Tree Protocol management information." + REFERENCE + "IEEE 802.1D-1998: clause 14.8.2.1.2" + ::= { dot1dStpPortEntry 1 } + +dot1dStpPortPriority OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the priority field that is contained in + the first (in network byte order) octet of the (2 octet + long) Port ID. The other octet of the Port ID is given + by the value of dot1dStpPort. + On bridges supporting IEEE 802.1t or IEEE 802.1w, + permissible values are 0-240, in steps of 16." + REFERENCE + "IEEE 802.1D-1998 clause 8.10.2, Table 8-4, + + + + IEEE 802.1t clause 8.10.2, Table 8-4, clause 14.3." + ::= { dot1dStpPortEntry 2 } + +dot1dStpPortState OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + blocking(2), + listening(3), + learning(4), + forwarding(5), + broken(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's current state, as defined by application of + the Spanning Tree Protocol. This state controls what + action a port takes on reception of a frame. If the + bridge has detected a port that is malfunctioning, it + will place that port into the broken(6) state. For + ports that are disabled (see dot1dStpPortEnable), this + object will have a value of disabled(1)." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.2" + ::= { dot1dStpPortEntry 3 } + +dot1dStpPortEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The enabled/disabled status of the port." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.2" + ::= { dot1dStpPortEntry 4 } + +dot1dStpPortPathCost OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The contribution of this port to the path cost of + paths towards the spanning tree root which include + this port. 802.1D-1998 recommends that the default + value of this parameter be in inverse proportion to + + + + the speed of the attached LAN. + + New implementations should support dot1dStpPortPathCost32. + If the port path costs exceeds the maximum value of this + object then this object should report the maximum value, + namely 65535. Applications should try to read the + dot1dStpPortPathCost32 object if this object reports + the maximum value." + REFERENCE "IEEE 802.1D-1998: clause 8.5.5.3" + ::= { dot1dStpPortEntry 5 } + +dot1dStpPortDesignatedRoot OBJECT-TYPE + SYNTAX BridgeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unique Bridge Identifier of the Bridge + recorded as the Root in the Configuration BPDUs + transmitted by the Designated Bridge for the + segment to which the port is attached." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.4" + ::= { dot1dStpPortEntry 6 } + +dot1dStpPortDesignatedCost OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The path cost of the Designated Port of the segment + connected to this port. This value is compared to the + Root Path Cost field in received bridge PDUs." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.5" + ::= { dot1dStpPortEntry 7 } + +dot1dStpPortDesignatedBridge OBJECT-TYPE + SYNTAX BridgeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Bridge Identifier of the bridge that this + port considers to be the Designated Bridge for + this port's segment." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.6" + ::= { dot1dStpPortEntry 8 } + + + + +dot1dStpPortDesignatedPort OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Identifier of the port on the Designated + Bridge for this port's segment." + REFERENCE + "IEEE 802.1D-1998: clause 8.5.5.7" + ::= { dot1dStpPortEntry 9 } + +dot1dStpPortForwardTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this port has transitioned + from the Learning state to the Forwarding state." + ::= { dot1dStpPortEntry 10 } + +dot1dStpPortPathCost32 OBJECT-TYPE + SYNTAX Integer32 (1..200000000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The contribution of this port to the path cost of + paths towards the spanning tree root which include + this port. 802.1D-1998 recommends that the default + value of this parameter be in inverse proportion to + the speed of the attached LAN. + + This object replaces dot1dStpPortPathCost to support + IEEE 802.1t." + REFERENCE + "IEEE 802.1t clause 8.10.2, Table 8-5." + ::= { dot1dStpPortEntry 11 } + +-- ---------------------------------------------------------- -- +-- the dot1dTp subtree +-- ---------------------------------------------------------- -- +-- Implementation of the dot1dTp subtree is optional. It is +-- implemented by those bridges that support the transparent +-- bridging mode. A transparent or SRT bridge will implement +-- this subtree. +-- ---------------------------------------------------------- -- + +dot1dTpLearnedEntryDiscards OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Forwarding Database entries that + have been or would have been learned, but have been + discarded due to a lack of storage space in the + Forwarding Database. If this counter is increasing, it + indicates that the Forwarding Database is regularly + becoming full (a condition that has unpleasant + performance effects on the subnetwork). If this counter + has a significant value but is not presently increasing, + it indicates that the problem has been occurring but is + not persistent." + REFERENCE + "IEEE 802.1D-1998: clause 14.7.1.1.3" + ::= { dot1dTp 1 } + +dot1dTpAgingTime OBJECT-TYPE + SYNTAX Integer32 (10..1000000) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The timeout period in seconds for aging out + dynamically-learned forwarding information. + 802.1D-1998 recommends a default of 300 seconds." + REFERENCE + "IEEE 802.1D-1998: clause 14.7.1.1.3" + ::= { dot1dTp 2 } + + +-- ---------------------------------------------------------- -- +-- The Forwarding Database for Transparent Bridges +-- ---------------------------------------------------------- -- + +dot1dTpFdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTpFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about unicast + entries for which the bridge has forwarding and/or + filtering information. This information is used + by the transparent bridging function in + determining how to propagate a received frame." + ::= { dot1dTp 3 } + +dot1dTpFdbEntry OBJECT-TYPE + + + + SYNTAX Dot1dTpFdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a specific unicast MAC address + for which the bridge has some forwarding and/or + filtering information." + INDEX { dot1dTpFdbAddress } + ::= { dot1dTpFdbTable 1 } + +Dot1dTpFdbEntry ::= + SEQUENCE { + dot1dTpFdbAddress + MacAddress, + dot1dTpFdbPort + Integer32, + dot1dTpFdbStatus + INTEGER + } + +dot1dTpFdbAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unicast MAC address for which the bridge has + forwarding and/or filtering information." + REFERENCE + "IEEE 802.1D-1998: clause 7.9.1, 7.9.2" + ::= { dot1dTpFdbEntry 1 } + +dot1dTpFdbPort OBJECT-TYPE + SYNTAX Integer32 + 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 dot1dTpFdbAddress has + been seen. A value of '0' indicates that the port + number has not been learned, but that the bridge does + have some forwarding/filtering information about this + address (e.g., in the dot1dStaticTable). Implementors + are encouraged to assign the port value to this object + whenever it is learned, even for addresses for which the + corresponding value of dot1dTpFdbStatus is not + learned(3)." + ::= { dot1dTpFdbEntry 2 } + + + +dot1dTpFdbStatus 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 would + include the case where some other MIB object + (not the corresponding instance of + dot1dTpFdbPort, nor an entry in the + dot1dStaticTable) is being used to determine if + and how frames addressed to the value of the + corresponding instance of dot1dTpFdbAddress 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 dot1dTpFdbPort was learned, and is being + used. + self(4) - the value of the corresponding instance of + dot1dTpFdbAddress represents one of the bridge's + addresses. The corresponding instance of + dot1dTpFdbPort indicates which of the bridge's + ports has this address. + mgmt(5) - the value of the corresponding instance of + dot1dTpFdbAddress is also the value of an + existing instance of dot1dStaticAddress." + ::= { dot1dTpFdbEntry 3 } + +-- ---------------------------------------------------------- -- +-- Port Table for Transparent Bridges +-- ---------------------------------------------------------- -- + +dot1dTpPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dTpPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains information about every port that + is associated with this transparent bridge." + + + + ::= { dot1dTp 4 } + +dot1dTpPortEntry OBJECT-TYPE + SYNTAX Dot1dTpPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information for each port of a transparent + bridge." + INDEX { dot1dTpPort } + ::= { dot1dTpPortTable 1 } + +Dot1dTpPortEntry ::= + SEQUENCE { + dot1dTpPort + Integer32, + dot1dTpPortMaxInfo + Integer32, + dot1dTpPortInFrames + Counter32, + dot1dTpPortOutFrames + Counter32, + dot1dTpPortInDiscards + Counter32 + } + +dot1dTpPort OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number of the port for which this entry + contains Transparent bridging management information." + ::= { dot1dTpPortEntry 1 } + +-- It would be nice if we could use ifMtu as the size of the +-- largest INFO field, but we can't because ifMtu is defined +-- to be the size that the (inter-)network layer can use, which +-- can differ from the MAC layer (especially if several layers +-- of encapsulation are used). + +dot1dTpPortMaxInfo OBJECT-TYPE + SYNTAX Integer32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum size of the INFO (non-MAC) field that + + + + this port will receive or transmit." + ::= { dot1dTpPortEntry 2 } + +dot1dTpPortInFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + 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 + "IEEE 802.1D-1998: clause 14.6.1.1.3" + ::= { dot1dTpPortEntry 3 } + +dot1dTpPortOutFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + 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 + "IEEE 802.1D-1998: clause 14.6.1.1.3" + ::= { dot1dTpPortEntry 4 } + +dot1dTpPortInDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of received valid frames that were discarded + (i.e., filtered) by the Forwarding Process." + REFERENCE + "IEEE 802.1D-1998: clause 14.6.1.1.3" + ::= { dot1dTpPortEntry 5 } + +-- ---------------------------------------------------------- -- + + + +-- The Static (Destination-Address Filtering) Database +-- ---------------------------------------------------------- -- +-- Implementation of this subtree is optional. +-- ---------------------------------------------------------- -- + +dot1dStaticTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing filtering information configured + into the bridge by (local or network) management + specifying the set of ports to which frames received + from specific ports and containing specific destination + addresses are allowed to be forwarded. The 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 and for + group/broadcast addresses." + REFERENCE + "IEEE 802.1D-1998: clause 14.7.2" + ::= { dot1dStatic 1 } + +dot1dStaticEntry OBJECT-TYPE + SYNTAX Dot1dStaticEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Filtering information configured into the bridge by + (local or network) management specifying the set of + ports to which frames received from a specific port and + containing a specific destination address are allowed to + be forwarded." + REFERENCE + "IEEE 802.1D-1998: clause 14.7.2" + INDEX { dot1dStaticAddress, dot1dStaticReceivePort } + ::= { dot1dStaticTable 1 } + +Dot1dStaticEntry ::= + SEQUENCE { + dot1dStaticAddress MacAddress, + dot1dStaticReceivePort Integer32, + dot1dStaticAllowedToGoTo OCTET STRING, + dot1dStaticStatus INTEGER + } + + + + +dot1dStaticAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination MAC address in a frame to which this + entry's filtering information applies. This object can + take the value of a unicast address, a group address, or + the broadcast address." + REFERENCE + "IEEE 802.1D-1998: clause 7.9.1, 7.9.2" + ::= { dot1dStaticEntry 1 } + +dot1dStaticReceivePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + 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 + bridge for which there is no other applicable entry." + ::= { dot1dStaticEntry 2 } + +dot1dStaticAllowedToGoTo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..512)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of ports to which frames received from a + specific port and destined for a specific MAC address, + are allowed to be forwarded. Each octet within the + value of this object 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'. (Note + that the setting of the bit corresponding to the port + from which a frame is received is irrelevant.) The + default value of this object is a string of ones of + appropriate length. + + + + + The value of this object may exceed the required minimum + maximum message size of some SNMP transport (484 bytes, + in the case of SNMP over UDP, see RFC 3417, section 3.2). + SNMP engines on bridges supporting a large number of + ports must support appropriate maximum message sizes." + ::= { dot1dStaticEntry 3 } + +dot1dStaticStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + invalid(2), + permanent(3), + deleteOnReset(4), + deleteOnTimeout(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the status of this entry. + The default value is permanent(3). + other(1) - this entry is currently in use but the + conditions under which it will remain so are + different from each of 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." + ::= { dot1dStaticEntry 4 } + +-- ---------------------------------------------------------- -- +-- Notifications for use by Bridges +-- ---------------------------------------------------------- -- +-- Notifications for the Spanning Tree Protocol +-- ---------------------------------------------------------- -- + +newRoot NOTIFICATION-TYPE + -- OBJECTS { } + STATUS current + DESCRIPTION + "The newRoot trap indicates that the sending agent has + become the new root of the Spanning Tree; the trap is + sent by a bridge soon after its election as the new + + + + root, e.g., upon expiration of the Topology Change Timer, + immediately subsequent to its election. Implementation + of this trap is optional." + ::= { dot1dNotifications 1 } + +topologyChange NOTIFICATION-TYPE + -- OBJECTS { } + STATUS current + DESCRIPTION + "A topologyChange trap is sent by a bridge when any of + its configured ports transitions from the Learning state + to the Forwarding state, or from the Forwarding state to + the Blocking state. The trap is not sent if a newRoot + trap is sent for the same transition. Implementation of + this trap is optional." + ::= { dot1dNotifications 2 } + +-- ---------------------------------------------------------- -- +-- IEEE 802.1D MIB - Conformance Information +-- ---------------------------------------------------------- -- + +dot1dGroups OBJECT IDENTIFIER ::= { dot1dConformance 1 } +dot1dCompliances OBJECT IDENTIFIER ::= { dot1dConformance 2 } + +-- ---------------------------------------------------------- -- +-- units of conformance +-- ---------------------------------------------------------- -- + +-- ---------------------------------------------------------- -- +-- the dot1dBase group +-- ---------------------------------------------------------- -- + +dot1dBaseBridgeGroup OBJECT-GROUP + OBJECTS { + dot1dBaseBridgeAddress, + dot1dBaseNumPorts, + dot1dBaseType + } + STATUS current + DESCRIPTION + "Bridge level information for this device." + ::= { dot1dGroups 1 } + +dot1dBasePortGroup OBJECT-GROUP + OBJECTS { + dot1dBasePort, + dot1dBasePortIfIndex, + dot1dBasePortCircuit, + + + + dot1dBasePortDelayExceededDiscards, + dot1dBasePortMtuExceededDiscards + } + STATUS current + DESCRIPTION + "Information for each port on this device." + ::= { dot1dGroups 2 } + +-- ---------------------------------------------------------- -- +-- the dot1dStp group +-- ---------------------------------------------------------- -- + +dot1dStpBridgeGroup OBJECT-GROUP + OBJECTS { + dot1dStpProtocolSpecification, + dot1dStpPriority, + dot1dStpTimeSinceTopologyChange, + dot1dStpTopChanges, + dot1dStpDesignatedRoot, + dot1dStpRootCost, + dot1dStpRootPort, + dot1dStpMaxAge, + dot1dStpHelloTime, + dot1dStpHoldTime, + dot1dStpForwardDelay, + dot1dStpBridgeMaxAge, + dot1dStpBridgeHelloTime, + dot1dStpBridgeForwardDelay + } + STATUS current + DESCRIPTION + "Bridge level Spanning Tree data for this device." + ::= { dot1dGroups 3 } + +dot1dStpPortGroup OBJECT-GROUP + OBJECTS { + dot1dStpPort, + dot1dStpPortPriority, + dot1dStpPortState, + dot1dStpPortEnable, + dot1dStpPortPathCost, + dot1dStpPortDesignatedRoot, + dot1dStpPortDesignatedCost, + dot1dStpPortDesignatedBridge, + dot1dStpPortDesignatedPort, + dot1dStpPortForwardTransitions + } + STATUS current + + + + DESCRIPTION + "Spanning Tree data for each port on this device." + ::= { dot1dGroups 4 } + +dot1dStpPortGroup2 OBJECT-GROUP + OBJECTS { + dot1dStpPort, + dot1dStpPortPriority, + dot1dStpPortState, + dot1dStpPortEnable, + dot1dStpPortDesignatedRoot, + dot1dStpPortDesignatedCost, + dot1dStpPortDesignatedBridge, + dot1dStpPortDesignatedPort, + dot1dStpPortForwardTransitions, + dot1dStpPortPathCost32 + } + STATUS current + DESCRIPTION + "Spanning Tree data for each port on this device." + ::= { dot1dGroups 5 } + +dot1dStpPortGroup3 OBJECT-GROUP + OBJECTS { + dot1dStpPortPathCost32 + } + STATUS current + DESCRIPTION + "Spanning Tree data for devices supporting 32-bit + path costs." + ::= { dot1dGroups 6 } + +-- ---------------------------------------------------------- -- +-- the dot1dTp group +-- ---------------------------------------------------------- -- + +dot1dTpBridgeGroup OBJECT-GROUP + OBJECTS { + dot1dTpLearnedEntryDiscards, + dot1dTpAgingTime + } + STATUS current + DESCRIPTION + "Bridge level Transparent Bridging data." + ::= { dot1dGroups 7 } + +dot1dTpFdbGroup OBJECT-GROUP + OBJECTS { + + + + dot1dTpFdbAddress, + dot1dTpFdbPort, + dot1dTpFdbStatus + } + + STATUS current + DESCRIPTION + "Filtering Database information for the Bridge." + ::= { dot1dGroups 8 } + +dot1dTpGroup OBJECT-GROUP + OBJECTS { + dot1dTpPort, + dot1dTpPortMaxInfo, + dot1dTpPortInFrames, + dot1dTpPortOutFrames, + dot1dTpPortInDiscards + } + STATUS current + DESCRIPTION + "Dynamic Filtering Database information for each port of + the Bridge." + ::= { dot1dGroups 9 } + +-- ---------------------------------------------------------- -- +-- The Static (Destination-Address Filtering) Database +-- ---------------------------------------------------------- -- + +dot1dStaticGroup OBJECT-GROUP + OBJECTS { + dot1dStaticAddress, + dot1dStaticReceivePort, + dot1dStaticAllowedToGoTo, + dot1dStaticStatus + } + STATUS current + DESCRIPTION + "Static Filtering Database information for each port of + the Bridge." + ::= { dot1dGroups 10 } + +-- ---------------------------------------------------------- -- +-- The Trap Notification Group +-- ---------------------------------------------------------- -- + +dot1dNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + newRoot, + + + + topologyChange + } + STATUS current + DESCRIPTION + "Group of objects describing notifications (traps)." + ::= { dot1dGroups 11 } + +-- ---------------------------------------------------------- -- +-- compliance statements +-- ---------------------------------------------------------- -- + +bridgeCompliance1493 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of bridging + services, as per RFC1493." + + MODULE + MANDATORY-GROUPS { + dot1dBaseBridgeGroup, + dot1dBasePortGroup + } + + GROUP dot1dStpBridgeGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the Spanning Tree Protocol." + + GROUP dot1dStpPortGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the Spanning Tree Protocol." + + GROUP dot1dTpBridgeGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the transparent bridging mode. A + transparent or SRT bridge will implement this group." + + GROUP dot1dTpFdbGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the transparent bridging mode. A + transparent or SRT bridge will implement this group." + + GROUP dot1dTpGroup + DESCRIPTION + "Implementation of this group is mandatory for bridges + + + + that support the transparent bridging mode. A + transparent or SRT bridge will implement this group." + + GROUP dot1dStaticGroup + DESCRIPTION + "Implementation of this group is optional." + + GROUP dot1dNotificationGroup + DESCRIPTION + "Implementation of this group is optional." + ::= { dot1dCompliances 1 } + +bridgeCompliance4188 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of bridging + services. This supports 32-bit Path Cost values and the + more restricted bridge and port priorities, as per IEEE + 802.1t. + + Full support for the 802.1D management objects requires that + the SNMPv2-MIB [RFC3418] objects sysDescr, and sysUpTime, as + well as the IF-MIB [RFC2863] objects ifIndex, ifType, + ifDescr, ifPhysAddress, and ifLastChange are implemented." + + MODULE + MANDATORY-GROUPS { + dot1dBaseBridgeGroup, + dot1dBasePortGroup + } + + GROUP dot1dStpBridgeGroup + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the Spanning Tree Protocol." + + OBJECT dot1dStpPriority + SYNTAX Integer32 (0|4096|8192|12288|16384|20480|24576 + |28672|32768|36864|40960|45056|49152 + |53248|57344|61440) + DESCRIPTION + "The possible values defined by IEEE 802.1t." + + GROUP dot1dStpPortGroup2 + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the Spanning Tree Protocol." + + + + + GROUP dot1dStpPortGroup3 + DESCRIPTION + "Implementation of this group is mandatory for bridges + that support the Spanning Tree Protocol and 32-bit path + costs. In particular, this includes devices supporting + IEEE 802.1t and IEEE 802.1w." + + OBJECT dot1dStpPortPriority + SYNTAX Integer32 (0|16|32|48|64|80|96|112|128 + |144|160|176|192|208|224|240) + DESCRIPTION + "The possible values defined by IEEE 802.1t." + + GROUP dot1dTpBridgeGroup + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the transparent bridging + mode. A transparent or SRT bridge will implement + this group." + + GROUP dot1dTpFdbGroup + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the transparent bridging + mode. A transparent or SRT bridge will implement + this group." + + GROUP dot1dTpGroup + DESCRIPTION + "Implementation of this group is mandatory for + bridges that support the transparent bridging + mode. A transparent or SRT bridge will implement + this group." + + GROUP dot1dStaticGroup + DESCRIPTION + "Implementation of this group is optional." + + GROUP dot1dNotificationGroup + DESCRIPTION + "Implementation of this group is optional." + + ::= { dot1dCompliances 2 } + +END diff --git a/mibs/ietf/CHARACTER-MIB b/mibs/ietf/CHARACTER-MIB new file mode 100644 index 0000000..610883d --- /dev/null +++ b/mibs/ietf/CHARACTER-MIB @@ -0,0 +1,648 @@ +CHARACTER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32, Gauge32, TimeTicks + FROM SNMPv2-SMI + AutonomousType, InstancePointer, TEXTUAL-CONVENTION, + DisplayString + FROM SNMPv2-TC + InterfaceIndex + FROM IF-MIB + transmission, mib-2 + FROM RFC1213-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +char MODULE-IDENTITY + LAST-UPDATED "9405261700Z" + ORGANIZATION "IETF Character MIB Working Group" + CONTACT-INFO + " Bob Stewart + Postal: Xyplex, Inc. + 295 Foster Street + Littleton, MA 01460 + + Tel: 508-952-4816 + Fax: 508-952-4887 + E-mail: rlstewart@eng.xyplex.com" + DESCRIPTION + "The MIB module for character stream devices." + ::= { mib-2 19 } + +PortIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each + character port in the managed system. It is + recommended that values are assigned contiguously + starting from 1. The value for each interface sub- + layer must remain constant at least from one re- + initialization of the entity's network management + system to the next re-initialization. + + In a system where the character ports are attached + to hardware represented by an ifIndex, it is + conventional, but not required, to make the + character port index equal to the corresponding + ifIndex." + SYNTAX Integer32 + + +-- Generic Character information + +charNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in charPortTable, regardless + of their current state." + ::= { char 1 } + + +-- the Character Port table + +charPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF CharPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port entries. The number of entries is + given by the value of charNumber." + ::= { char 2 } + +charPortEntry OBJECT-TYPE + SYNTAX CharPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a character port." + INDEX { charPortIndex } + ::= { charPortTable 1 } + +CharPortEntry ::= + SEQUENCE { + charPortIndex + PortIndex, + charPortName + DisplayString, + charPortType + INTEGER, + charPortHardware + AutonomousType, + charPortReset + INTEGER, + charPortAdminStatus + INTEGER, + charPortOperStatus + INTEGER, + charPortLastChange + TimeTicks, + charPortInFlowType + INTEGER, + charPortOutFlowType + INTEGER, + charPortInFlowState + INTEGER, + charPortOutFlowState + INTEGER, + charPortInCharacters + Counter32, + charPortOutCharacters + Counter32, + charPortAdminOrigin + INTEGER, + charPortSessionMaximum + INTEGER, + charPortSessionNumber + Gauge32, + charPortSessionIndex + INTEGER, + charPortInFlowTypes + OCTET STRING, + charPortOutFlowTypes + OCTET STRING, + charPortLowerIfIndex + InterfaceIndex + } + +charPortIndex OBJECT-TYPE + SYNTAX PortIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each character port, perhaps + corresponding to the same value of ifIndex when the + character port is associated with a hardware port + represented by an ifIndex." + ::= { charPortEntry 1 } + +charPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administratively assigned name for the port, + typically with some local significance." + ::= { charPortEntry 2 } + +charPortType OBJECT-TYPE + SYNTAX INTEGER { physical(1), virtual(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's type, 'physical' if the port represents + an external hardware connector, 'virtual' if it does + not." + ::= { charPortEntry 3 } + +charPortHardware OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A reference to hardware MIB definitions specific to + a physical port's external connector. For example, + if the connector is RS-232, then the value of this + object refers to a MIB sub-tree defining objects + specific to RS-232. If an agent is not configured + to have such values, the agent returns the object + identifier: + + nullHardware OBJECT IDENTIFIER ::= { 0 0 } + " + ::= { charPortEntry 4 } + +charPortReset OBJECT-TYPE + SYNTAX INTEGER { ready(1), execute(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to force the port into a clean, initial + state, both hardware and software, disconnecting all + the port's existing sessions. In response to a + get-request or get-next-request, the agent always + returns 'ready' as the value. Setting the value to + 'execute' causes a reset." + ::= { charPortEntry 5 } + +charPortAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2), off(3), + maintenance(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's desired state, independent of flow + control. 'enabled' indicates that the port is + allowed to pass characters and form new sessions. + 'disabled' indicates that the port is allowed to + pass characters but not form new sessions. 'off' + indicates that the port is not allowed to pass + characters or have any sessions. 'maintenance' + indicates a maintenance mode, exclusive of normal + operation, such as running a test. + + 'enabled' corresponds to ifAdminStatus 'up'. + 'disabled' and 'off' correspond to ifAdminStatus + 'down'. 'maintenance' corresponds to ifAdminStatus + 'test'." + ::= { charPortEntry 6 } + +charPortOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), + maintenance(3), absent(4), active(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's actual, operational state, independent + of flow control. 'up' indicates able to function + normally. 'down' indicates inability to function + for administrative or operational reasons. + 'maintenance' indicates a maintenance mode, + exclusive of normal operation, such as running a + test. 'absent' indicates that port hardware is not + present. 'active' indicates up with a user present + (e.g. logged in). + + 'up' and 'active' correspond to ifOperStatus 'up'. + 'down' and 'absent' correspond to ifOperStatus + 'down'. 'maintenance' corresponds to ifOperStatus + 'test'." + ::= { charPortEntry 7 } + +charPortLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the port entered + its current operational state. If the current state + was entered prior to the last reinitialization of + the local network management subsystem, then this + object contains a zero value." + ::= { charPortEntry 8 } + +-- charPortInFlowType is deprecated in favor of +-- charPortInFlowTypes + +charPortInFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), xonXoff(2), hardware(3), + ctsRts(4), dsrDtr(5) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The port's type of input flow control. 'none' + indicates no flow control at this level or below. + 'xonXoff' indicates software flow control by + recognizing XON and XOFF characters. 'hardware' + indicates flow control delegated to the lower level, + for example a parallel port. + + 'ctsRts' and 'dsrDtr' are specific to RS-232-like + ports. Although not architecturally pure, they are + included here for simplicity's sake." + ::= { charPortEntry 9 } + +-- charPortOutFlowType is deprecated in favor of +-- charPortOutFlowTypes + +charPortOutFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), xonXoff(2), hardware(3), + ctsRts(4), dsrDtr(5) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The port's type of output flow control. 'none' + indicates no flow control at this level or below. + 'xonXoff' indicates software flow control by + recognizing XON and XOFF characters. 'hardware' + indicates flow control delegated to the lower level, + for example a parallel port. + + 'ctsRts' and 'dsrDtr' are specific to RS-232-like + ports. Although not architecturally pure, they are + included here for simplicy's sake." + ::= { charPortEntry 10 } + +charPortInFlowState OBJECT-TYPE + SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of input flow control + on the port. 'none' indicates not applicable. + 'unknown' indicates this level does not know. + 'stop' indicates flow not allowed. 'go' indicates + flow allowed." + ::= { charPortEntry 11 } + +charPortOutFlowState OBJECT-TYPE + SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of output flow + control on the port. 'none' indicates not + applicable. 'unknown' indicates this level does not + know. 'stop' indicates flow not allowed. 'go' + indicates flow allowed." + ::= { charPortEntry 12 } + +charPortInCharacters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters detected as input from + the port since system re-initialization and while + the port operational state was 'up', 'active', or + 'maintenance', including, for example, framing, flow + control (i.e. XON and XOFF), each occurrence of a + BREAK condition, locally-processed input, and input + sent to all sessions." + ::= { charPortEntry 13 } + +charPortOutCharacters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters detected as output to + the port since system re-initialization and while + the port operational state was 'up', 'active', or + 'maintenance', including, for example, framing, flow + control (i.e. XON and XOFF), each occurrence of a + BREAK condition, locally-created output, and output + received from all sessions." + ::= { charPortEntry 14 } + +charPortAdminOrigin OBJECT-TYPE + SYNTAX INTEGER { dynamic(1), network(2), local(3), + none(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administratively allowed origin for + establishing session on the port. 'dynamic' allows + 'network' or 'local' session establishment. 'none' + disallows session establishment." + ::= { charPortEntry 15 } + +charPortSessionMaximum OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of concurrent sessions allowed + on the port. A value of -1 indicates no maximum. + Setting the maximum to less than the current number + of sessions has unspecified results." + ::= { charPortEntry 16 } + +charPortSessionNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of open sessions on the port that are in + the connecting, connected, or disconnecting state." + ::= { charPortEntry 17 } + +charPortSessionIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of charSessIndex for the port's first or + only active session. If the port has no active + session, the agent returns the value zero." + ::= { charPortEntry 18 } + +charPortInFlowTypes OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's types of input flow control at the + software level. Hardware-level flow control is + independently controlled by the appropriate + hardware-level MIB. + + A value of zero indicates no flow control. + Depending on the specific implementation, any or + all combinations of flow control may be chosen by + adding the values: + + 128 xonXoff, recognizing XON and XOFF characters + 64 enqHost, ENQ/ACK to allow input to host + 32 enqTerm, ACK to allow output to port + " + ::= { charPortEntry 19 } + +charPortOutFlowTypes OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's types of output flow control at the + software level. Hardware-level flow control is + independently controlled by the appropriate + hardware-level MIB. + + A value of zero indicates no flow control. + Depending on the specific implementation, any or + all combinations of flow control may be chosen by + adding the values: + + 128 xonXoff, recognizing XON and XOFF characters + 64 enqHost, ENQ/ACK to allow input to host + 32 enqTerm, ACK to allow output to port + " + ::= { charPortEntry 20 } + +charPortLowerIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the lower level hardware supporting + this character port, zero if none." + ::= { charPortEntry 21 } + + +-- the Character Session table + +charSessTable OBJECT-TYPE + SYNTAX SEQUENCE OF CharSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port session entries." + ::= { char 3 } + +charSessEntry OBJECT-TYPE + SYNTAX CharSessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a character port + session." + INDEX { charSessPortIndex, charSessIndex } + ::= { charSessTable 1 } + +CharSessEntry ::= + SEQUENCE { + charSessPortIndex + PortIndex, + charSessIndex + INTEGER, + charSessKill + INTEGER, + charSessState + INTEGER, + charSessProtocol + AutonomousType, + charSessOperOrigin + INTEGER, + charSessInCharacters + Counter32, + charSessOutCharacters + Counter32, + charSessConnectionId + InstancePointer, + charSessStartTime + TimeTicks + } + +charSessPortIndex OBJECT-TYPE + SYNTAX PortIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of charPortIndex for the port to which + this session belongs." + ::= { charSessEntry 1 } + +charSessIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The session index in the context of the port, a + non-zero positive integer. Session indexes within a + port need not be sequential. Session indexes may be + reused for different ports. For example, port 1 and + port 3 may both have a session 2 at the same time. + Session indexes may have any valid integer value, + with any meaning convenient to the agent + implementation." + ::= { charSessEntry 2 } + +charSessKill OBJECT-TYPE + SYNTAX INTEGER { ready(1), execute(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to terminate the session. In response to + a get-request or get-next-request, the agent always + returns 'ready' as the value. Setting the value to + 'execute' causes termination." + ::= { charSessEntry 3 } + +charSessState OBJECT-TYPE + SYNTAX INTEGER { connecting(1), connected(2), + disconnecting(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the session, + disregarding flow control. 'connected' indicates + that character data could flow on the network side + of session. 'connecting' indicates moving from + nonexistent toward 'connected'. 'disconnecting' + indicates moving from 'connected' or 'connecting' to + nonexistent." + ::= { charSessEntry 4 } + +charSessProtocol OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network protocol over which the session is + running. Other OBJECT IDENTIFIER values may be + defined elsewhere, in association with specific + protocols. However, this document assigns those of + known interest as of this writing." + ::= { charSessEntry 5 } + +wellKnownProtocols OBJECT IDENTIFIER ::= { char 4 } + +protocolOther OBJECT IDENTIFIER ::= { wellKnownProtocols 1 } +protocolTelnet OBJECT IDENTIFIER ::= { wellKnownProtocols 2 } +protocolRlogin OBJECT IDENTIFIER ::= { wellKnownProtocols 3 } +protocolLat OBJECT IDENTIFIER ::= { wellKnownProtocols 4 } +protocolX29 OBJECT IDENTIFIER ::= { wellKnownProtocols 5 } +protocolVtp OBJECT IDENTIFIER ::= { wellKnownProtocols 6 } + + +charSessOperOrigin OBJECT-TYPE + SYNTAX INTEGER { unknown(1), network(2), local(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The session's source of establishment." + ::= { charSessEntry 6 } + +charSessInCharacters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This session's subset of charPortInCharacters." + ::= { charSessEntry 7 } + +charSessOutCharacters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This session's subset of charPortOutCharacters." + ::= { charSessEntry 8 } + +charSessConnectionId OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A reference to additional local MIB information. + This should be the highest available related MIB, + corresponding to charSessProtocol, such as Telnet. + For example, the value for a TCP connection (in the + absence of a Telnet MIB) is the object identifier of + tcpConnState. If an agent is not configured to have + such values, the agent returns the object + identifier: + + nullConnectionId OBJECT IDENTIFIER ::= { 0 0 } + " + ::= { charSessEntry 9 } + +charSessStartTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime in MIB-2 when the session + entered connecting state." + ::= { charSessEntry 10 } + +-- conformance information + +charConformance OBJECT IDENTIFIER ::= { char 5 } + +charGroups OBJECT IDENTIFIER ::= { charConformance 1 } +charCompliances OBJECT IDENTIFIER ::= { charConformance 2 } + + +-- compliance statements + +charCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which have Character hardware interfaces." + + MODULE -- this module + MANDATORY-GROUPS { charGroup } + ::= { charCompliances 1 } + + +-- units of conformance + +charGroup OBJECT-GROUP + OBJECTS { charNumber, charPortIndex, charPortName, + charPortType, charPortHardware, charPortReset, + charPortAdminStatus, charPortOperStatus, + charPortLastChange, + charPortInFlowState, charPortOutFlowState, + charPortAdminOrigin, charPortSessionMaximum, + charPortInFlowTypes, charPortOutFlowTypes, + charPortInCharacters, charPortOutCharacters, + charPortSessionNumber, charPortSessionIndex, + charPortLowerIfIndex, + charSessPortIndex, charSessIndex, + charSessKill, charSessState, + charSessProtocol, charSessOperOrigin, + charSessInCharacters, charSessOutCharacters, + charSessConnectionId, charSessStartTime } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all Character interfaces." + ::= { charGroups 1 } + +END diff --git a/mibs/ietf/CIRCUIT-IF-MIB b/mibs/ietf/CIRCUIT-IF-MIB new file mode 100644 index 0000000..45c16f9 --- /dev/null +++ b/mibs/ietf/CIRCUIT-IF-MIB @@ -0,0 +1,383 @@ +CIRCUIT-IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + mib-2, Gauge32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, + TimeStamp, RowPointer, StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifIndex, InterfaceIndex FROM IF-MIB; + + circuitIfMIB MODULE-IDENTITY + LAST-UPDATED "200201030000Z" -- January 3, 2002 + ORGANIZATION "IETF Frame Relay Service MIB Working Group" + CONTACT-INFO + + + "IETF Frame Relay Service MIB (frnetmib) Working Group + + WG Charter: http://www.ietf.org/html.charters/ + frnetmib-charter.html + WG-email: frnetmib@sunroof.eng.sun.com + Subscribe: frnetmib-request@sunroof.eng.sun.com + Email Archive: ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + Chair: Andy Malis + Vivace Networks + Email: Andy.Malis@vivacenetworks.com + + WG editor: Robert Steinberger + Paradyne Networks and + Fujitsu Network Communications + Email: robert.steinberger@fnc.fujitsu.com + + Co-author: Orly Nicklass + RAD Data Communications Ltd. + EMail: Orly_n@rad.co.il" + DESCRIPTION + "The MIB module to allow insertion of selected circuit into + the ifTable." + REVISION "200201030000Z" -- January 3, 2002 + DESCRIPTION + "Initial version, published as RFC 3201" + ::= { mib-2 94 } + + -- Textual Conventions + + CiFlowDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The direction of data flow thru a circuit. + + transmit(1) - Only transmitted data + receive(2) - Only received data + both(3) - Both transmitted and received data." + SYNTAX INTEGER { + transmit(1), + receive(2), + both(3) + } + + ciObjects OBJECT IDENTIFIER ::= { circuitIfMIB 1 } + ciCapabilities OBJECT IDENTIFIER ::= { circuitIfMIB 2 } + ciConformance OBJECT IDENTIFIER ::= { circuitIfMIB 3 } + + + + -- The Circuit Interface Circuit Table + -- + -- This table is used to define and display the circuits that + -- are added to the ifTable. It maps circuits to their respective + -- ifIndex values. + + ciCircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF CiCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Circuit Interface Circuit Table." + ::= { ciObjects 1 } + + ciCircuitEntry OBJECT-TYPE + SYNTAX CiCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Circuit Interface Circuit Table." + INDEX { ciCircuitObject, ciCircuitFlow } + ::= { ciCircuitTable 1 } + + CiCircuitEntry ::= + SEQUENCE { + -- + -- Index Control Variables + -- + ciCircuitObject RowPointer, + ciCircuitFlow CiFlowDirection, + ciCircuitStatus RowStatus, + -- + -- Data variables + -- + ciCircuitIfIndex InterfaceIndex, + ciCircuitCreateTime TimeStamp, + -- + -- Data Persistence + -- + ciCircuitStorageType StorageType + } + + ciCircuitObject OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value contains the RowPointer that uniquely + + + describes the circuit that is to be added to this table. + Any RowPointer that will force the size of OBJECT + IDENTIFIER of the row to grow beyond the legal limit + MUST be rejected. + + The purpose of this object is to point a network manager + to the table in which the circuit was created as well as + define the circuit on which the interface is defined. + + Valid tables for this object include the frCircuitTable + from the Frame Relay DTE MIB(FRAME-RELAY-DTE-MIB), the + frPVCEndptTable from the Frame Relay Service MIB + (FRNETSERV-MIB), and the aal5VccTable from the ATM MIB + (ATM MIB). However, including circuits from other MIB + tables IS NOT prohibited." + ::= { ciCircuitEntry 1 } + + ciCircuitFlow OBJECT-TYPE + SYNTAX CiFlowDirection + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The direction of data flow through the circuit for which + the virtual interface is defined. The following define + the information that the virtual interface will report. + + transmit(1) - Only transmitted frames + receive(2) - Only received frames + both(3) - Both transmitted and received frames. + + It is recommended that the ifDescr of the circuit + interfaces that are not both(3) SHOULD have text warning + the operators that the particular interface represents + only half the traffic on the circuit." + ::= { ciCircuitEntry 2 } + + ciCircuitStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the current row. This object is + used to add, delete, and disable rows in this + table. When the status changes to active(1), a row + will also be added to the interface map table below + and a row will be added to the ifTable. These rows + SHOULD not be removed until the status is changed + from active(1). The value of ifIndex for the row that + + + is added to the ifTable is determined by the agent + and MUST follow the rules of the ifTable. The value + of ifType for that interface will be frDlciEndPt(193) + for a frame relay circuit, atmVciEndPt(194) for an + ATM circuit, or another ifType defining the circuit + type for any other circuit. + + When this object is set to destroy(6), the associated + row in the interface map table will be removed and the + ifIndex will be removed from the ifTable. Removing + the ifIndex MAY initiate a chain of events that causes + changes to other tables as well. + + The rows added to this table MUST have a valid object + identifier for ciCircuitObject. This means that the + referenced object must exist and it must be in a table + that supports circuits. + + The object referenced by ciCircuitObject MUST exist + prior to transitioning a row to active(1). If at any + point the object referenced by ciCircuitObject does not + exist or the row containing it is not in the active(1) + state, the status SHOULD either age out the row or + report notReady(3). The effects transitioning from + active(1) to notReady(3) are the same as those caused + by setting the status to destroy(6). + + Each row in this table relies on information from other + MIB modules. The rules persistence of data SHOULD follow + the same rules as those of the underlying MIB module. + For example, if the circuit defined by ciCircuitObject + would normally be stored in non-volatile memory, then + the row SHOULD also be non-volatile." + ::= { ciCircuitEntry 3 } + + ciCircuitIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex that the agent assigns to this row." + ::= { ciCircuitEntry 4 } + + ciCircuitCreateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "This object returns the value of sysUpTime at the time + the value of ciCircuitStatus last transitioned to + active(1). If ciCircuitStatus has never been active(1), + this object SHOULD return 0." + ::= { ciCircuitEntry 5 } + + ciCircuitStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type used for this row." + ::= { ciCircuitEntry 6 } + + -- The Circuit Interface Map Table + -- + -- This table maps the ifIndex values that are assigned to + -- rows in the circuit table back to the objects that define + -- the circuits. + + ciIfMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF CiIfMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Circuit Interface Map Table." + ::= { ciObjects 2 } + + ciIfMapEntry OBJECT-TYPE + SYNTAX CiIfMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Circuit Interface Map Table." + INDEX { ifIndex } + ::= { ciIfMapTable 1 } + + CiIfMapEntry ::= + SEQUENCE { + -- + -- Mapped Object Variables + -- + ciIfMapObject RowPointer, + ciIfMapFlow CiFlowDirection + } + + ciIfMapObject OBJECT-TYPE + SYNTAX RowPointer + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value contains the value of RowPointer that + corresponds to the current ifIndex." + ::= { ciIfMapEntry 1 } + + ciIfMapFlow OBJECT-TYPE + SYNTAX CiFlowDirection + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value contains the value of ciCircuitFlow that + corresponds to the current ifIndex." + ::= { ciIfMapEntry 2 } + + -- Change tracking metrics + + ciIfLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the most recent change to + ciCircuitStatus for any row in ciCircuitTable." + ::= { ciObjects 3 } + + ciIfNumActive OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of active rows in ciCircuitTable." + ::= { ciObjects 4 } + + -- Conformance Information + + ciMIBGroups OBJECT IDENTIFIER ::= { ciConformance 1 } + ciMIBCompliances OBJECT IDENTIFIER ::= { ciConformance 2 } + + -- + -- Compliance Statements + -- + + ciCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + + + which support of the Circuit Interfaces MIB module. + This group defines the minimum level of support + required for compliance." + MODULE -- this module + MANDATORY-GROUPS { ciCircuitGroup, + ciIfMapGroup, + ciStatsGroup } + + OBJECT ciCircuitStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Row creation can be done outside of the scope of + the SNMP protocol. If this object is implemented with + max-access of read-only, then the only value that MUST + be returned is active(1)." + + OBJECT ciCircuitStorageType + MIN-ACCESS read-only + DESCRIPTION + "It is legal to support ciCircuitStorageType as read- + only as long as the value reported in consistent + with the actual storage mechanism employed within the + agent." + + ::= { ciMIBCompliances 1 } + + -- + -- Units of Conformance + -- + ciCircuitGroup OBJECT-GROUP + OBJECTS { + ciCircuitStatus, + ciCircuitIfIndex, + ciCircuitCreateTime, + ciCircuitStorageType + } + STATUS current + DESCRIPTION + "A collection of required objects providing + information from the circuit table." + ::= { ciMIBGroups 1 } + + ciIfMapGroup OBJECT-GROUP + OBJECTS { + ciIfMapObject, + ciIfMapFlow + } + + + STATUS current + DESCRIPTION + "A collection of required objects providing + information from the interface map table." + ::= { ciMIBGroups 2 } + + ciStatsGroup OBJECT-GROUP + OBJECTS { + ciIfLastChange, + ciIfNumActive + } + STATUS current + DESCRIPTION + "A collection of statistical metrics used to help manage + the ciCircuitTable." + ::= { ciMIBGroups 3 } +END diff --git a/mibs/ietf/CLNS-MIB b/mibs/ietf/CLNS-MIB new file mode 100644 index 0000000..bd07fb3 --- /dev/null +++ b/mibs/ietf/CLNS-MIB @@ -0,0 +1,1297 @@ +CLNS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + experimental, Counter + FROM RFC1155-SMI + PhysAddress + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [9] + + +-- the CLNS MIB module + +clns OBJECT IDENTIFIER ::= { experimental 1 } + + +-- textual conventions + +ClnpAddress ::= + OCTET STRING (SIZE (1..21)) +-- This data type is used to model NSAP addresses. + + +-- groups in the CLNS MIB + +clnp OBJECT IDENTIFIER ::= { clns 1 } + +error OBJECT IDENTIFIER ::= { clns 2 } + +echo OBJECT IDENTIFIER ::= { clns 3 } + +es-is OBJECT IDENTIFIER ::= { clns 4 } + + +-- the CLNP group + +-- Implementation of this group is recommended for all +-- systems which implement the CLNP. + +clnpForwarding OBJECT-TYPE + SYNTAX INTEGER { + is(1), -- entity is an intermediate system + + -- entity is an end system and does + es(2) -- not forward PDUs + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The indication of whether this entity is active + as an intermediate or end system. Only + intermediate systems will forward PDUs onward that + are not addressed to them." + ::= { clnp 1 } + +clnpDefaultLifeTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default value inserted into the Lifetime + field of the CLNP PDU header of PDUs sourced by + this entity." + ::= { clnp 2 } + +clnpInReceives OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input PDUs received from all + connected network interfaces running CLNP, + including errors." + ::= { clnp 3 } + +clnpInHdrErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input PDUs discarded due to errors + in the CLNP header, including bad checksums, + version mismatch, lifetime exceeded, errors + discovered in processing options, etc." + ::= { clnp 4 } + +clnpInAddrErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input PDUs discarded because the + NSAP address in the CLNP header's destination + field was not a valid NSAP to be received at this + entity. This count includes addresses not + understood. For end systems, this is a count of + PDUs which arrived with a destination NSAP which + was not local." + ::= { clnp 5 } + +clnpForwPDUs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input PDUs for which this entity + was not the final destination and which an attempt + was made to forward them onward." + ::= { clnp 6 } + +clnpInUnknownNLPs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of locally-addressed PDUs successfully + received but discarded because the network layer + protocol was unknown or unsupported (e.g., not + CLNP or ES-IS)." + ::= { clnp 7 } + +clnpInUnknownULPs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of locally-addressed PDUs successfully + received but discarded because the upper layer + protocol was unknown or unsupported (e.g., not + TP4)." + ::= { clnp 8 } + +clnpInDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input CLNP PDUs for which no + problems were encountered to prevent their + continued processing, but were discarded (e.g., + for lack of buffer space). Note that this counter + does not include any PDUs discarded while awaiting + re-assembly." + ::= { clnp 9 } + +clnpInDelivers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input PDUs successfully + delivered to the CLNS transport user." + ::= { clnp 10 } + +clnpOutRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of CLNP PDUs which local CLNS + user protocols supplied to CLNP for transmission + requests. This counter does not include any PDUs + counted in clnpForwPDUs." + ::= { clnp 11 } + +clnpOutDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of output CLNP PDUs for which no other + problem was encountered to prevent their + transmission but were discarded (e.g., for lack of + buffer space). Note this counter includes PDUs + counted in clnpForwPDUs." + ::= { clnp 12 } + +clnpOutNoRoutes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDUs discarded because no + route could be found to transmit them to their + destination. This counter includes any PDUs + counted in clnpForwPDUs." + ::= { clnp 13 } + +clnpReasmTimeout OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of seconds which received + segments are held while they are awaiting + reassembly at this entity." + ::= { clnp 14 } + +clnpReasmReqds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP segments received which needed + to be reassembled at this entity." + ::= { clnp 15 } + +clnpReasmOKs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDUs successfully re-assembled + at this entity." + ::= { clnp 16 } + +clnpReasmFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of failures detected by the CLNP + reassembly algorithm (for any reason: timed out, + buffer size, etc)." + ::= { clnp 17 } + +clnpSegOKs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDUs that have been + successfully segmented at this entity." + ::= { clnp 18 } + +clnpSegFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDUs that have been discarded + because they needed to be fragmented at this + entity but could not." + ::= { clnp 19 } + +clnpSegCreates OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDU segments that have been + generated as a result of segmentation at this + entity." + ::= { clnp 20 } + +clnpInOpts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDU segments that have been + input with options at this entity." + ::= { clnp 25 } + +clnpOutOpts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP PDU segments that have been + generated with options by this entity." + ::= { clnp 26 } + +clnpRoutingDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of routing entries which were chosen + to be discarded even though they are valid. One + possible reason for discarding such an entry could + be to free-up buffer space for other routing + entries." + ::= { clnp 27 } + + +-- the CLNP Interfaces table + +-- The CLNP interfaces table contains information on the +-- entity's interfaces which are running the CLNP. + +clnpAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClnpAddrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of addressing information relevant to + this entity's CLNP addresses. " + ::= { clnp 21 } + +clnpAddrEntry OBJECT-TYPE + SYNTAX ClnpAddrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The addressing information for one of this + entity's CLNP addresses." + INDEX { clnpAdEntAddr } + ::= { clnpAddrTable 1 } + +ClnpAddrEntry ::= + SEQUENCE { + clnpAdEntAddr + ClnpAddress, + clnpAdEntIfIndex + INTEGER, + clnpAdEntReasmMaxSize + INTEGER (0..65535) + } + +clnpAdEntAddr OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The CLNP address to which this entry's addressing + information pertains." + ::= { clnpAddrEntry 1 } + +clnpAdEntIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The index value which uniquely identifies the + interface to which this entry is applicable. The + interface identified by a particular value of this + index is the same interface as identified by the + same value of ifIndex." + ::= { clnpAddrEntry 2 } + +clnpAdEntReasmMaxSize OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the largest CLNP PDU which this + entity can re-assemble from incoming CLNP + segmented PDUs received on this interface." + ::= { clnpAddrEntry 3 } + + +-- The CLNP Routing table + +-- The CLNP routing table contains an entry for each route +-- known to the entity. + +clnpRoutingTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClnpRouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entity's CLNP routing table." + ::= { clnp 22 } + +clnpRouteEntry OBJECT-TYPE + SYNTAX ClnpRouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A route to a particular destination." + INDEX { clnpRouteDest } + ::= { clnpRoutingTable 1 } + +ClnpRouteEntry ::= + SEQUENCE { + clnpRouteDest + ClnpAddress, + clnpRouteIfIndex + INTEGER, + clnpRouteMetric1 + INTEGER, + clnpRouteMetric2 + INTEGER, + clnpRouteMetric3 + INTEGER, + clnpRouteMetric4 + INTEGER, + clnpRouteNextHop + ClnpAddress, + clnpRouteType + INTEGER, + clnpRouteProto + INTEGER, + clnpRouteAge + INTEGER, + clnpRouteMetric5 + INTEGER, + clnpRouteInfo + OBJECT IDENTIFIER + } + +clnpRouteDest OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The destination CLNP address of this route." + ::= { clnpRouteEntry 1 } + +clnpRouteIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The index value which uniquely identifies the + local interface through which the next hop of this + route should be reached. The interface identified + by a particular value of this index is the same as + identified by the same value of ifIndex." + ::= { clnpRouteEntry 2 } + +clnpRouteMetric1 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 3 } + +clnpRouteMetric2 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 4 } + +clnpRouteMetric3 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 5 } + +clnpRouteMetric4 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 6 } + +clnpRouteNextHop OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The CLNP address of the next hop of this route." + ::= { clnpRouteEntry 7 } + +clnpRouteType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + invalid(2), -- an invalidated route + + -- route to directly + direct(3), -- connected (sub-)network + + -- route to a non-local + remote(4) -- host/network/sub-network + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of route. + + Setting this object to the value invalid(2) has + the effect of invaliding the corresponding entry + in the clnpRoutingTable. That is, it effectively + dissasociates the destination identified with said + entry from the route identified with said entry. + It is an implementation-specific matter as to + whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive tabular information + from agents that corresponds to entries not + currently in use. Proper interpretation of such + entries requires examination of the relevant + clnpRouteType object." + ::= { clnpRouteEntry 8 } + +clnpRouteProto OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + -- non-protocol information + -- e.g., manually + local(2), -- configured entries + + -- set via a network + netmgmt(3), -- management protocol + + -- similar to ipRouteProto but + -- omits several IP-specific + -- protocols + + is-is(9), + ciscoIgrp(11), + bbnSpfIgp(12), + ospf(13), + bgp(14) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The routing mechanism via which this route was + learned. Inclusion of values for gateway routing + protocols is not intended to imply that hosts + should support those protocols." + ::= { clnpRouteEntry 9 } + +clnpRouteAge OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds since this route was last + updated or otherwise determined to be correct. + Note that no semantics of `too old' can be implied + except through knowledge of the routing protocol + by which the route was learned." + ::= { clnpRouteEntry 10 } + +clnpRouteMetric5 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + clnpRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { clnpRouteEntry 11 } + +clnpRouteInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A reference to MIB definitions specific to the + particular routing protocol which is responsible + for this route, as determined by the value + specified in the route's clnpRouteProto value. If + this information is not present, its value should + be set to the OBJECT IDENTIFIER { 0 0 }, which is + a syntatically valid object identifier, and any + conformant implementation of ASN.1 and BER must be + able to generate and recognize this value." + ::= { clnpRouteEntry 12 } + + +-- the CLNP Address Translation table + +-- The Address Translation tables contain the CLNP address +-- to physical address equivalences. Some interfaces do not +-- use translation tables for determining address +-- equivalences; if all interfaces are of this type, then the +-- Address Translation table is empty, i.e., has zero +-- entries. + +clnpNetToMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClnpNetToMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The CLNP Address Translation table used for + mapping from CLNP addresses to physical + addresses." + ::= { clnp 23 } + +clnpNetToMediaEntry OBJECT-TYPE + SYNTAX ClnpNetToMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Each entry contains one CLNP address to + `physical' address equivalence." + INDEX { clnpNetToMediaIfIndex, clnpNetToMediaNetAddress } + ::= { clnpNetToMediaTable 1 } + +ClnpNetToMediaEntry ::= + SEQUENCE { + clnpNetToMediaIfIndex + INTEGER, + clnpNetToMediaPhysAddress + PhysAddress, + clnpNetToMediaNetAddress + ClnpAddress, + clnpNetToMediaType + INTEGER, + clnpNetToMediaAge + INTEGER, + clnpNetToMediaHoldTime + INTEGER + } + +clnpNetToMediaIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The interface on which this entry's equivalence + is effective. The interface identified by a + particular value of this index is the same + interface as identified by the same value of + ifIndex." + ::= { clnpNetToMediaEntry 1 } + +clnpNetToMediaPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The media-dependent `physical' address." + ::= { clnpNetToMediaEntry 2 } + +clnpNetToMediaNetAddress OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The CLNP address corresponding to the media- + dependent `physical' address." + ::= { clnpNetToMediaEntry 3 } + +clnpNetToMediaType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + invalid(2), -- an invalidated mapping + dynamic(3), + static(4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of mapping. + + Setting this object to the value invalid(2) has + the effect of invalidating the corresponding entry + in the clnpNetToMediaTable. That is, it + effectively dissassociates the interface + identified with said entry from the mapping + identified with said entry. It is an + implementation-specific matter as to whether the + agent removes an invalidated entry from the table. + Accordingly, management stations must be prepared + to receive tabular information from agents that + corresponds to entries not currently in use. + Proper interpretation of such entries requires + examination of the relevant clnpNetToMediaType + object." + ::= { clnpNetToMediaEntry 4 } + +clnpNetToMediaAge OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds since this entry was last + updated or otherwise determined to be correct. + Note that no semantics of `too old' can be implied + except through knowledge of the type of entry." + ::= { clnpNetToMediaEntry 5 } + +clnpNetToMediaHoldTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The time in seconds this entry will be valid. + Static entries should always report this field as + -1." + ::= { clnpNetToMediaEntry 6 } + +clnpMediaToNetTable OBJECT-TYPE + SYNTAX SEQUENCE OF ClnpMediaToNetEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The CLNP Address Translation table used for + mapping from physical addresses to CLNP + addresses." + ::= { clnp 24 } + +clnpMediaToNetEntry OBJECT-TYPE + SYNTAX ClnpMediaToNetEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Each entry contains on ClnpAddress to `physical' + address equivalence." + INDEX { clnpMediaToNetIfIndex, clnpMediaToNetPhysAddress } + ::= { clnpMediaToNetTable 1 } + +ClnpMediaToNetEntry ::= + SEQUENCE { + clnpMediaToNetIfIndex + INTEGER, + clnpMediaToNetAddress + ClnpAddress, + clnpMediaToNetPhysAddress + PhysAddress, + clnpMediaToNetType + INTEGER, + clnpMediaToNetAge + INTEGER, + clnpMediaToNetHoldTime + INTEGER + } + +clnpMediaToNetIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The interface on which this entry's equivalence + is effective. The interface identified by a + particular value of this index is the same + interface as identified by the same value of + ifIndex." + ::= { clnpMediaToNetEntry 1 } + +clnpMediaToNetAddress OBJECT-TYPE + SYNTAX ClnpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The ClnpAddress corresponding to the media- + dependent `physical' address." + ::= { clnpMediaToNetEntry 2 } + +clnpMediaToNetPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The media-dependent `physical' address." + ::= { clnpMediaToNetEntry 3 } + +clnpMediaToNetType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + invalid(2), -- an invalidated mapping + dynamic(3), + static(4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of mapping. + + Setting this object to the value invalid(2) has + the effect of invalidating the corresponding entry + in the clnpMediaToNetTable. That is, it + effectively dissassociates the interface + identified with said entry from the mapping + identified with said entry. It is an + implementation-specific matter as to whether the + agent removes an invalidated entry from the table. + Accordingly, management stations must be prepared + to receive tabular information from agents that + corresponds to entries not currently in use. + Proper interpretation of such entries requires + examination of the relevant clnpMediaToNetType + object." + ::= { clnpMediaToNetEntry 4 } + +clnpMediaToNetAge OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds since this entry was last + updated or otherwise determined to be correct. + Note that no semantics of `too old' can be implied + except through knowledge of the type of entry." + ::= { clnpMediaToNetEntry 5 } + +clnpMediaToNetHoldTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The time in seconds this entry will be valid. + Static entries should always report this field as + -1." + ::= { clnpMediaToNetEntry 6 } + + +-- the CLNP Error group + +-- Implementation of this group is recommended for all +-- systems which implement the CLNP Error protocol. + +clnpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP Error PDUs received by this + entity." + ::= { error 1 } + +clnpOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of CLNP Error PDUs sent by this + entity." + ::= { error 2 } + +clnpInErrUnspecs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unspecified CLNP Error PDUs + received by this entity." + ::= { error 3 } + +clnpInErrProcs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of protocol procedure CLNP Error PDUs + received by this entity." + ::= { error 4 } + +clnpInErrCksums OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of checksum CLNP Error PDUs received + by this entity." + ::= { error 5 } + +clnpInErrCongests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of congestion drop CLNP Error PDUs + received by this entity." + ::= { error 6 } + +clnpInErrHdrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of header syntax CLNP Error PDUs + received by this entity." + ::= { error 7 } + +clnpInErrSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of segmentation disallowed CLNP Error + PDUs received by this entity." + ::= { error 8 } + +clnpInErrIncomps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of incomplete PDU CLNP Error PDUs + received by this entity." + ::= { error 9 } + +clnpInErrDups OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of duplicate option CLNP Error PDUs + received by this entity." + ::= { error 10 } + +clnpInErrUnreachDsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unreachable destination CLNP Error + PDUs received by this entity." + ::= { error 11 } + +clnpInErrUnknownDsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unknown destination CLNP Error PDUs + received by this entity." + ::= { error 12 } + +clnpInErrSRUnspecs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unspecified source route CLNP Error + PDUs received by this entity." + ::= { error 13 } + +clnpInErrSRSyntaxes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route syntax CLNP Error PDUs + received by this entity." + ::= { error 14 } + +clnpInErrSRUnkAddrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route unknown address CLNP + Error PDUs received by this entity." + ::= { error 15 } + +clnpInErrSRBadPaths OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route bad path CLNP Error + PDUs received by this entity." + ::= { error 16 } + +clnpInErrHops OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hop count exceeded CLNP Error PDUs + received by this entity." + ::= { error 17 } + +clnpInErrHopReassms OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hop count exceeded while + reassembling CLNP Error PDUs received by this + entity." + ::= { error 18 } + +clnpInErrUnsOptions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported option CLNP Error PDUs + received by this entity." + ::= { error 19 } + +clnpInErrUnsVersions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of version mismatch CLNP Error PDUs + received by this entity." + ::= { error 20 } + +clnpInErrUnsSecurities OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported security option CLNP + Error PDUs received by this entity." + ::= { error 21 } + +clnpInErrUnsSRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported source route option + CLNP Error PDUs received by this entity." + ::= { error 22 } + +clnpInErrUnsRRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported record route option + CLNP Error PDUs received by this entity." + ::= { error 23 } + +clnpInErrInterferences OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reassembly interference CLNP Error + PDUs received by this entity." + ::= { error 24 } + +clnpOutErrUnspecs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unspecified CLNP Error PDUs sent by + this entity." + ::= { error 25 } + +clnpOutErrProcs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of protocol procedure CLNP Error PDUs + sent by this entity." + ::= { error 26 } + +clnpOutErrCksums OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of checksum CLNP Error PDUs sent by + this entity." + ::= { error 27 } + +clnpOutErrCongests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of congestion drop CLNP Error PDUs + sent by this entity." + ::= { error 28 } + +clnpOutErrHdrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of header syntax CLNP Error PDUs sent + by this entity." + ::= { error 29 } + +clnpOutErrSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of segmentation disallowed CLNP Error + PDUs sent by this entity." + ::= { error 30 } + +clnpOutErrIncomps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of incomplete PDU CLNP Error PDUs sent + by this entity." + ::= { error 31 } + +clnpOutErrDups OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of duplicate option CLNP Error PDUs + sent by this entity." + ::= { error 32 } + +clnpOutErrUnreachDsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unreachable destination CLNP Error + PDUs sent by this entity." + ::= { error 33 } + +clnpOutErrUnknownDsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unknown destination CLNP Error PDUs + sent by this entity." + ::= { error 34 } + +clnpOutErrSRUnspecs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unspecified source route CLNP Error + PDUs sent by this entity." + ::= { error 35 } + +clnpOutErrSRSyntaxes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route syntax CLNP Error PDUs + sent by this entity." + ::= { error 36 } + +clnpOutErrSRUnkAddrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route unknown address CLNP + Error PDUs sent by this entity." + ::= { error 37 } + +clnpOutErrSRBadPaths OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of source route bad path CLNP Error + PDUs sent by this entity." + ::= { error 38 } + +clnpOutErrHops OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hop count exceeded CLNP Error PDUs + sent by this entity." + ::= { error 39 } + +clnpOutErrHopReassms OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hop count exceeded while + reassembling CLNP Error PDUs sent by this entity." + ::= { error 40 } + +clnpOutErrUnsOptions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported option CLNP Error PDUs + sent by this entity." + ::= { error 41 } + +clnpOutErrUnsVersions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of version mismatch CLNP Error PDUs + sent by this entity." + ::= { error 42 } + +clnpOutErrUnsSecurities OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported security option CLNP + Error PDUs sent by this entity." + ::= { error 43 } + +clnpOutErrUnsSRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported source route option + CLNP Error PDUs sent by this entity." + ::= { error 44 } + +clnpOutErrUnsRRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of unsupported record route option + CLNP Error PDUs sent by this entity." + ::= { error 45 } + +clnpOutErrInterferences OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reassembly interference CLNP Error + PDUs sent by this entity." + ::= { error 46 } + +-- the ES-IS group + +-- Implementation of this group is recommended for all +-- systems which implement the End-System to Intermediate +-- System protocol. + +esisESHins OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ESH PDUs received by this entity." + ::= { es-is 1 } + +esisESHouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ESH PDUs sent by this entity." + ::= { es-is 2 } + +esisISHins OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ISH PDUs received by this entity." + ::= { es-is 3 } + +esisISHouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ISH PDUs sent by this entity." + ::= { es-is 4 } + +esisRDUins OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of RDU PDUs received by this entity." + ::= { es-is 5 } + +esisRDUouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of RDU PDUs sent by this entity." + ::= { es-is 6 } + +END diff --git a/mibs/ietf/COFFEE-POT-MIB b/mibs/ietf/COFFEE-POT-MIB new file mode 100644 index 0000000..af88900 --- /dev/null +++ b/mibs/ietf/COFFEE-POT-MIB @@ -0,0 +1,145 @@ +COFFEE-POT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, transmission + FROM SNMPv2-SMI + TimeInterval, DisplayString + FROM SNMPv2-TC; + +coffee MODULE-IDENTITY + LAST-UPDATED "9803231700Z" + ORGANIZATION "Networked Appliance Management Working Group" + + CONTACT-INFO + " Michael Slavitch + Loran Technologies, + 955 Green Valley Crescent + Ottawa, Ontario Canada K2A 0B6 + + Tel: 613-723-7505 + Fax: 613-723-7209 + E-mail: slavitch@loran.com" + DESCRIPTION + "The MIB Module for coffee vending devices." + ::= { transmission 132 } + +potName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The vendor description of the pot under management" + ::= { coffee 1 } + + +potCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of units of beverage supported by this device + (regardless of its current state) ." + ::= { coffee 2 } + + +potType OBJECT-TYPE + SYNTAX INTEGER { + automatic-drip(1), + percolator(2), + french-press(3), + espresso(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The brew type of the coffee pot." + ::= { coffee 3 } + +potLocation OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical location of the pot in question" + ::= { coffee 4 } + + +potMonitor OBJECT IDENTIFIER ::= { coffee 6 } + + +potOperStatus OBJECT-TYPE + SYNTAX INTEGER { + off(1), + brewing(2), + holding(3), + other(4), + waiting(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operating status of the pot in question. Note + that this is a read-only feature. Current hardware + prevents us from changing the port state via SNMP." + ::= { potMonitor 1 } + + potLevel OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of units of coffee under management. The + units of level are defined in potMetric below." + ::= { potMonitor 2 } + + potMetric OBJECT-TYPE + SYNTAX INTEGER { + espresso(1), + demi-tasse(2), + cup(3), + mug(4), + bucket(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor description of the pot under management" + ::= { potMonitor 3 } + + +potStartTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time in seconds since Jan 1 1970 to start the pot + if and only if potOperStatus is waiting(5)" + ::= { potMonitor 4 } + + + lastStartTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The amount of time, in TimeTicks, since the coffee + making process was initiated." + ::= { potMonitor 5 } + + + potTemperature OBJECT-TYPE + SYNTAX Integer32 + UNITS "degrees Centigrade" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ambient temperature of the coffee within the pot" + + ::= { potMonitor 6 } + +END diff --git a/mibs/ietf/COPS-CLIENT-MIB b/mibs/ietf/COPS-CLIENT-MIB new file mode 100644 index 0000000..ff1e59b --- /dev/null +++ b/mibs/ietf/COPS-CLIENT-MIB @@ -0,0 +1,879 @@ +COPS-CLIENT-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- ------------------------------------------------------------- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, + Unsigned32, mib-2 + FROM SNMPv2-SMI + TimeStamp, TimeInterval, RowStatus, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB; + + +-- REFERENCE + + +-- "The COPS (Common Open Policy Service) Protocol RFC 2748 + +copsClientMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" + ORGANIZATION "IETF RSVP Admission Policy Working Group" + CONTACT-INFO + " Andrew Smith (WG co-chair) + Phone: +1 408 579 2821 + Email: ah_smith@pacbell.net + + Mark Stevens (WG co-chair) + Phone: +1 978 287 9102 + Email: markstevens@lucent.com + + Editor: Andrew Smith + Phone: +1 408 579 2821 + Email: ah_smith@pacbell.net + + Editor: David Partain + Phone: +46 13 28 41 44 + Email: David.Partain@ericsson.com + + Editor: John Seligson + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + + DESCRIPTION + "The COPS Client MIB module" + + REVISION "200009280000Z" + DESCRIPTION "This version published as RFC 2940" + + ::= { mib-2 89 } + +copsClientMIBObjects OBJECT IDENTIFIER ::= { copsClientMIB 1 } + +-- ------------------------------------------------------------- +-- Textual Conventions +-- ------------------------------------------------------------- + +CopsClientState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value indicating the state of a COPS client." + SYNTAX INTEGER { + copsClientInvalid(1), -- default state. + copsClientTcpconnected(2), -- TCP connection up but COPS + -- not yet open. + + + copsClientAuthenticating(3), -- TCP connection up but still + -- authenticating. + copsClientSecAccepted(4), -- connection authenticated. + copsClientAccepted(5), -- COPS server accepted client. + copsClientTimingout(6) -- Keepalive timer has expired, + -- client is in process of + -- tearing down connection. + } + +CopsServerEntryType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value indicating how a COPS server entry came into existence." + SYNTAX INTEGER { + copsServerStatic(1), -- configured by manager + copsServerRedirect(2) -- notified by COPS server + } + +CopsErrorCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value describing a COPS protocol error. Codes are identical + to those used by the COPS protocol itself." + SYNTAX INTEGER { + errorOther(0), -- none of the below + errorBadHandle(1), + errorInvalidHandleReference(2), + errorBadMessageFormat(3), + errorUnableToProcess(4), + errorMandatoryClientSiMissing(5), + errorUnsupportedClientType(6), + errorMandatoryCopsObjectMissing(7), + errorClientFailure(8), + errorCommunicationFailure(9), + errorUnspecified(10), -- client-type specific subcode + errorShuttingDown(11), + errorRedirectToPreferredServer(12), + errorUnknownCopsObject(13), + errorAuthenticationFailure(14), + errorAuthenticationMissing(15) + } +-- REFERENCE +-- "RFC 2748 section 2.2.8" + +CopsTcpPort ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value indicating a TCP protocol port number." + + + SYNTAX INTEGER (0..65535) + +CopsAuthType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value indicating a type of security authentication mechanism." + SYNTAX INTEGER { + authNone(0), + authOther(1), + authIpSecAh(2), + authIpSecEsp(3), + authTls(4), + authCopsIntegrity(5) + } + +-- ------------------------------------------------------------- + +copsClientCapabilitiesGroup OBJECT IDENTIFIER + ::= { copsClientMIBObjects 1 } + +-- ------------------------------------------------------------- +-- +-- Capabilities of the COPS client to connect to a COPS server: +-- +copsClientCapabilities OBJECT-TYPE + SYNTAX BITS { + copsClientVersion1(0), -- supports version1 of COPS protocol + copsClientAuthIpSecAh(1) , -- supports IP-SEC Authentication + copsClientAuthIpSecEsp(2), -- supports IP-SEC Encryption + copsClientAuthTls(3), -- supports Transport-Layer Security + copsClientAuthInteg(4) -- supports COPS Integrity + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A list of the optional capabilities that this COPS client + supports." + ::= { copsClientCapabilitiesGroup 1 } + +-- ------------------------------------------------------------- + +copsClientStatusGroup OBJECT IDENTIFIER ::= { copsClientMIBObjects 2 } + +-- ------------------------------------------------------------- +-- +-- Current status of COPS server connections, all read-only. +-- + + + +copsClientServerCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF CopsClientServerCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information regarding COPS servers as seen from the + point of view of a COPS client. This table contains entries + for both statically-configured and dynamically-learned servers + (from a PDP Redirect operation). One entry exists in this table + for each COPS Client-Type served by the COPS server. In addition, + an entry will exist with copsClientServerClientType 0 (zero) + representing information about the underlying connection itself: + this is consistent with the COPS specification which reserves + this value for this purpose." + + ::= { copsClientStatusGroup 1 } + +copsClientServerCurrentEntry OBJECT-TYPE + SYNTAX CopsClientServerCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of information regarding a single COPS server serving + a single COPS Client-Type from the point of view of a COPS + client." + INDEX { copsClientServerAddressType, copsClientServerAddress, + copsClientServerClientType } + ::= { copsClientServerCurrentTable 1 } + +CopsClientServerCurrentEntry ::= + SEQUENCE { + copsClientServerAddressType InetAddressType, + copsClientServerAddress InetAddress, + copsClientServerClientType INTEGER, + copsClientServerTcpPort CopsTcpPort, + copsClientServerType CopsServerEntryType, + copsClientServerAuthType CopsAuthType, + copsClientServerLastConnAttempt TimeStamp, + copsClientState CopsClientState, + copsClientServerKeepaliveTime TimeInterval, + copsClientServerAccountingTime TimeInterval, + copsClientInPkts Counter32, + copsClientOutPkts Counter32, + copsClientInErrs Counter32, + copsClientLastError CopsErrorCode, + copsClientTcpConnectAttempts Counter32, + copsClientTcpConnectFailures Counter32, + copsClientOpenAttempts Counter32, + + + copsClientOpenFailures Counter32, + copsClientErrUnsupportClienttype Counter32, + copsClientErrUnsupportedVersion Counter32, + copsClientErrLengthMismatch Counter32, + copsClientErrUnknownOpcode Counter32, + copsClientErrUnknownCnum Counter32, + copsClientErrBadCtype Counter32, + copsClientErrBadSends Counter32, + copsClientErrWrongObjects Counter32, + copsClientErrWrongOpcode Counter32, + copsClientKaTimedoutClients Counter32, + copsClientErrAuthFailures Counter32, + copsClientErrAuthMissing Counter32 + } + +copsClientServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of address in copsClientServerAddress." + ::= { copsClientServerCurrentEntry 1 } + +copsClientServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv4, IPv6 or DNS address of a COPS Server. Note that, + since this is an index to the table, the DNS name must be + short enough to fit into the maximum length of indices allowed + by the management protocol in use." + REFERENCE + "RFC 2748 section 2.3" + ::= { copsClientServerCurrentEntry 2 } + +copsClientServerClientType OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The COPS protocol Client-Type for which this entry + applies. Multiple Client-Types can be served by a single + COPS server. The value 0 (zero) indicates that this + entry contains information about the underlying connection + itself." + REFERENCE + "RFC 2748 section 6, IANA" + + + ::= { copsClientServerCurrentEntry 3 } + +copsClientServerTcpPort OBJECT-TYPE + SYNTAX CopsTcpPort + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP port number on the COPS server to which the + client should connect/is connected." + ::= { copsClientServerCurrentEntry 4 } + +copsClientServerType OBJECT-TYPE + SYNTAX CopsServerEntryType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicator of the source of this COPS server information. + COPS servers may be configured by network management + into copsClientServerConfigTable and appear in this entry + with type copsServerStatic(1). Alternatively, the may be + notified from another COPS server by means of the COPS + PDP-Redirect mechanism and appear as copsServerRedirect(2)." + ::= { copsClientServerCurrentEntry 5 } + +copsClientServerAuthType OBJECT-TYPE + SYNTAX CopsAuthType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicator of the current security mode in use between + client and this COPS server." + ::= { copsClientServerCurrentEntry 6 } + +copsClientServerLastConnAttempt OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Timestamp of the last time that this client attempted to + connect to this COPS server." + ::= { copsClientServerCurrentEntry 7 } + +copsClientState OBJECT-TYPE + SYNTAX CopsClientState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the connection and COPS protocol with respect + + + to this COPS server." + ::= { copsClientServerCurrentEntry 8 } + +copsClientServerKeepaliveTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the COPS protocol Keepalive timeout, in + centiseconds, currently in use by this client, as + specified by this COPS server in the Client-Accept operation. + A value of zero indicates no keepalive activity is expected." + REFERENCE + "RFC 2748 section 3.7, 4.4" + ::= { copsClientServerCurrentEntry 9 } + +copsClientServerAccountingTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the COPS protocol Accounting timeout, in + centiseconds, currently in use by this client, as specified + by the COPS server in the Client-Accept operation. A value + of zero indicates no accounting activity is to be performed." + REFERENCE + "RFC 2748 section 3.7" + ::= { copsClientServerCurrentEntry 10 } + +copsClientInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from this COPS server marked for this Client-Type. + This value is cumulative since agent restart and is not zeroed + on new connections." + ::= { copsClientServerCurrentEntry 11 } + +copsClientOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has sent to this COPS server marked for this Client-Type. This + value is cumulative since agent restart and is not zeroed on new + + + connections." + ::= { copsClientServerCurrentEntry 12 } + +copsClientInErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from this COPS server marked for this Client-Type + that contained errors in syntax. This value is cumulative since + agent restart and is not zeroed on new connections." + ::= { copsClientServerCurrentEntry 13 } + +copsClientLastError OBJECT-TYPE + SYNTAX CopsErrorCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The code contained in the last COPS protocol Error Object + received by this client from this COPS server marked for this + Client-Type. This value is not zeroed on COPS Client-Open + operations." + REFERENCE + "RFC 2748 section 2.2.8" + ::= { copsClientServerCurrentEntry 14 } + +copsClientTcpConnectAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that this COPS client has tried + (successfully or otherwise) to open an TCP connection to a COPS + server. This value is cumulative since agent restart and is not + zeroed on new connections. This value is not incremented for + entries representing a non-zero Client-Type." + ::= { copsClientServerCurrentEntry 15 } + +copsClientTcpConnectFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that this COPS client has failed + to open an TCP connection to a COPS server. This value is + cumulative since agent restart and is not zeroed on new + connections. This value is not incremented for + + + entries representing a non-zero Client-Type." + ::= { copsClientServerCurrentEntry 16 } + +copsClientOpenAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that this COPS client has tried + to perform a COPS Client-Open to a COPS server for this + Client-Type. This value is cumulative since agent restart and is + not zeroed on new connections." + ::= { copsClientServerCurrentEntry 17 } + +copsClientOpenFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that this COPS client has failed + to perform a COPS Client-Open to a COPS server for this + Client-Type. This value is cumulative since agent restart and is + not zeroed on new connections." + ::= { copsClientServerCurrentEntry 18 } + +copsClientErrUnsupportClienttype OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers that referred to Client-Types + that are unsupported by this client. This value is cumulative + since agent restart and is not zeroed on new connections. This + value is not incremented for entries representing a non-zero + Client-Type." + ::= { copsClientServerCurrentEntry 19 } + +copsClientErrUnsupportedVersion OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + had a COPS protocol Version number that is unsupported by this + client. This value is cumulative since agent restart and is not + zeroed on new connections." + + + ::= { copsClientServerCurrentEntry 20 } + +copsClientErrLengthMismatch OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + had a COPS protocol Message Length that did not match the actual + received message. This value is cumulative since agent restart + and is not zeroed on new connections." + ::= { copsClientServerCurrentEntry 21 } + +copsClientErrUnknownOpcode OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + had a COPS protocol Op Code that was unrecognised by this + client. This value is cumulative since agent restart and is not + zeroed on new connections." + ::= { copsClientServerCurrentEntry 22 } + +copsClientErrUnknownCnum OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + contained a COPS protocol object C-Num that was unrecognised by + this client. This value is cumulative since agent restart and is + not zeroed on new connections." + ::= { copsClientServerCurrentEntry 23 } + +copsClientErrBadCtype OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + contained a COPS protocol object C-Type that was not defined for + the C-Nums known by this client. This value is cumulative since + agent restart and is not zeroed on new connections." + + + ::= { copsClientServerCurrentEntry 24 } + +copsClientErrBadSends OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + attempted to send to COPS servers marked for this Client-Type + that resulted in a transmit error. This value is cumulative + since agent restart and is not zeroed on new connections." + ::= { copsClientServerCurrentEntry 25 } + +copsClientErrWrongObjects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + did not contain a permitted set of COPS protocol objects. This + value is cumulative since agent restart and is not zeroed on new + connections." + ::= { copsClientServerCurrentEntry 26 } + +copsClientErrWrongOpcode OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of COPS messages that this client + has received from COPS servers marked for this Client-Type that + had a COPS protocol Op Code that should not have been sent to a + COPS client e.g. Open-Requests. This value is cumulative since + agent restart and is not zeroed on new connections." + ::= { copsClientServerCurrentEntry 27 } + +copsClientKaTimedoutClients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of times that this client has + been shut down for this Client-Type by COPS servers that had + detected a COPS protocol Keepalive timeout. This value is + cumulative since agent restart and is not zeroed on new + connections." + ::= { copsClientServerCurrentEntry 28 } + + +copsClientErrAuthFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of times that this client has + received a COPS message marked for this Client-Type which + could not be authenticated using the authentication mechanism + used by this client." + ::= { copsClientServerCurrentEntry 29 } + +copsClientErrAuthMissing OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of times that this client has + received a COPS message marked for this Client-Type which did not + contain authentication information." + ::= { copsClientServerCurrentEntry 30 } + + +-- ------------------------------------------------------------- + +copsClientConfigGroup OBJECT IDENTIFIER ::= { copsClientMIBObjects 3 } + +-- ------------------------------------------------------------- + +copsClientServerConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF CopsClientServerConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of possible COPS servers to try to connect to in order + of copsClientServerConfigPriority. There may be multiple + entries in this table for the same server and client-type which + specify different security mechanisms: these mechanisms will + be attempted by the client in the priority order given. Note + that a server learned by means of PDPRedirect always takes + priority over any of these configured entries." + ::= { copsClientConfigGroup 1 } + +copsClientServerConfigEntry OBJECT-TYPE + SYNTAX CopsClientServerConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of configuration information regarding a single + + + COPS server from the point of view of a COPS client." + INDEX { copsClientServerConfigAddrType, + copsClientServerConfigAddress, + copsClientServerConfigClientType, + copsClientServerConfigAuthType } + ::= { copsClientServerConfigTable 1 } + +CopsClientServerConfigEntry ::= + SEQUENCE { + copsClientServerConfigAddrType InetAddressType, + copsClientServerConfigAddress InetAddress, + copsClientServerConfigClientType INTEGER, + copsClientServerConfigAuthType CopsAuthType, + copsClientServerConfigTcpPort CopsTcpPort, + copsClientServerConfigPriority Integer32, + copsClientServerConfigRowStatus RowStatus + } + +copsClientServerConfigAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of address in copsClientServerConfigAddress." + ::= { copsClientServerConfigEntry 1 } + +copsClientServerConfigAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv4, IPv6 or DNS address of a COPS Server. Note that, + since this is an index to the table, the DNS name must be + short enough to fit into the maximum length of indices allowed + by the management protocol in use." + REFERENCE + "RFC 2748 section 2.3" + ::= { copsClientServerConfigEntry 2 } + +copsClientServerConfigClientType OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The COPS protocol Client-Type for which this entry + applies and for which this COPS server is capable + of serving. Multiple Client-Types can be served by a + single COPS server." + + + REFERENCE + "RFC 2748 section 6, IANA" + ::= { copsClientServerConfigEntry 3 } + +copsClientServerConfigAuthType OBJECT-TYPE + SYNTAX CopsAuthType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of authentication mechanism for this COPS client + to request when negotiating security at the start of a + connection to a COPS server." + REFERENCE + "RFC 2748 section 4." + ::= { copsClientServerConfigEntry 4 } + + +copsClientServerConfigTcpPort OBJECT-TYPE + SYNTAX CopsTcpPort + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TCP port number on the COPS server to which the + client should connect." + ::= { copsClientServerConfigEntry 5 } + +copsClientServerConfigPriority OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this entry relative to other entries. + COPS client will attempt to contact COPS servers for the + appropriate Client-Type. Higher numbers are tried first. The + order to be used amongst server entries with the same priority + is undefined. COPS servers that are notified to the client using + the COPS protocol PDP-Redirect mechanism are always used in + preference to any entries in this table." + ::= { copsClientServerConfigEntry 6 } + +copsClientServerConfigRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "State of this entry in the table." + ::= { copsClientServerConfigEntry 7 } + + + +copsClientServerConfigRetryAlgrm OBJECT-TYPE + SYNTAX INTEGER { + other(1), + sequential(2), + roundRobin(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The algorithm by which the client should retry when it + fails to connect to a COPS server." + DEFVAL { sequential } + ::= { copsClientConfigGroup 2 } + +copsClientServerConfigRetryCount OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A retry count for use by the retry algorithm. Each retry + algorithm needs to specify how it uses this value. + + For the 'sequential(2)' algorithm, this value is the + number of times the client should retry to connect + to one COPS server before moving on to another. + For the 'roundRobin(3)' algorithm, this value is not used." + DEFVAL { 1 } + ::= { copsClientConfigGroup 3 } + +copsClientServerConfigRetryIntvl OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A retry interval for use by the retry algorithm. Each retry + algorithm needs to specify how it uses this value. + + For the 'sequential(2)' algorithm, this value is the time to + wait between retries of a connection to the same COPS server. + + For the 'roundRobin(3)' algorithm, the client always attempts + to connect to each Server in turn, until one succeeds or they + all fail; if they all fail, then the client waits for the value + of this interval before restarting the algorithm." + DEFVAL { 1000 } + ::= { copsClientConfigGroup 4 } + + + +-- ------------------------------------------------------------- +-- Conformance Information +-- ------------------------------------------------------------- + +copsClientConformance OBJECT IDENTIFIER ::= { copsClientMIB 2 } + +copsClientGroups OBJECT IDENTIFIER ::= { copsClientConformance 1 } +copsClientCompliances OBJECT IDENTIFIER ::= { copsClientConformance 2 } + +-- ------------------------------------------------------------- +-- units of conformance +-- ------------------------------------------------------------- + +copsDeviceStatusGroup OBJECT-GROUP + OBJECTS { + copsClientCapabilities, + copsClientServerTcpPort, copsClientServerType, + copsClientServerAuthType, copsClientServerLastConnAttempt, + copsClientState, copsClientServerKeepaliveTime, + copsClientServerAccountingTime, copsClientInPkts, + copsClientOutPkts, copsClientInErrs, copsClientLastError, + copsClientTcpConnectAttempts, copsClientTcpConnectFailures, + copsClientOpenAttempts, copsClientOpenFailures, + copsClientErrUnsupportClienttype, + copsClientErrUnsupportedVersion, copsClientErrLengthMismatch, + copsClientErrUnknownOpcode, copsClientErrUnknownCnum, + copsClientErrBadCtype, copsClientErrBadSends, + copsClientErrWrongObjects, copsClientErrWrongOpcode, + copsClientKaTimedoutClients, copsClientErrAuthFailures, + copsClientErrAuthMissing + } + STATUS current + DESCRIPTION + "A collection of objects for monitoring the status of + connections to COPS servers and statistics for a COPS client." + ::= { copsClientGroups 1 } + +copsDeviceConfigGroup OBJECT-GROUP + OBJECTS { + copsClientServerConfigTcpPort, copsClientServerConfigPriority, + copsClientServerConfigRowStatus, + copsClientServerConfigRetryAlgrm, + copsClientServerConfigRetryCount, + copsClientServerConfigRetryIntvl + } + STATUS current + DESCRIPTION + "A collection of objects for configuring COPS server + + + information." + ::= { copsClientGroups 2 } + +-- ------------------------------------------------------------- +-- compliance statements +-- ------------------------------------------------------------- + +copsClientCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for device support of + management of the COPS client." + + MODULE + MANDATORY-GROUPS { + copsDeviceStatusGroup, copsDeviceConfigGroup + } + + OBJECT copsClientServerConfigTcpPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + OBJECT copsClientServerConfigPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + OBJECT copsClientServerConfigRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + OBJECT copsClientServerConfigRetryAlgrm + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + OBJECT copsClientServerConfigRetryCount + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + + + OBJECT copsClientServerConfigRetryIntvl + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the device supports the + configuration of COPS server information." + + ::= { copsClientCompliances 1 } + +END diff --git a/mibs/ietf/DECNET-PHIV-MIB b/mibs/ietf/DECNET-PHIV-MIB new file mode 100644 index 0000000..1604769 --- /dev/null +++ b/mibs/ietf/DECNET-PHIV-MIB @@ -0,0 +1,3020 @@ + DECNET-PHIV-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Gauge + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + mib-2, DisplayString + FROM RFC1213-MIB; + +-- DECNet Phase-IV MIB + + phiv OBJECT IDENTIFIER ::= { mib-2 18 } + +-- textual conventions + +PhivAddr ::= OCTET STRING (SIZE (2)) +-- This data type is intended as a short word representation of +-- standard DECnet Phase IV addresses. DECnet addresses are +-- hierarchically structured numbers assigned to a particular +-- DECnet node. The address is structured so that the area +-- number is contained in the most significant 6 bits of the +-- first octet. The next 2 bits of the first octet contain +-- the first two bits of the host address. The remainder of +-- the host address is contained in the second octet. + +PhivCounter ::= INTEGER +-- This data type has been created for DECnet counters. These +-- counters latch at their maximum specified value until either +-- the system is restarted, or they are reset to zero by the user + +-- or management software. + +InterfaceIndex ::= INTEGER +-- The range of ifIndex, i.e., (1..2147483647) + + +-- groups in the decnetiv mib + + phivSystem OBJECT IDENTIFIER ::= { phiv 1 } + phivManagement OBJECT IDENTIFIER ::= { phiv 2 } + session OBJECT IDENTIFIER ::= { phiv 3 } + end OBJECT IDENTIFIER ::= { phiv 4 } + routing OBJECT IDENTIFIER ::= { phiv 5 } + circuit OBJECT IDENTIFIER ::= { phiv 6 } + ddcmp OBJECT IDENTIFIER ::= { phiv 7 } + control OBJECT IDENTIFIER ::= { phiv 8 } + ethernet OBJECT IDENTIFIER ::= { phiv 9 } + counters OBJECT IDENTIFIER ::= { phiv 10 } + adjacency OBJECT IDENTIFIER ::= { phiv 11 } + line OBJECT IDENTIFIER ::= { phiv 12 } + nonBroadcastLine OBJECT IDENTIFIER ::= { phiv 14 } + area OBJECT IDENTIFIER ::= { phiv 15 } + +-- System Group + +-- The implementation of the System Group is mandatory for +-- all systems. + +phivSystemState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (2), + shut (3), + restricted (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This represents the operational state of the executor + node. + The possible states are: + ON Allows logical links. + OFF Allows no new links, terminates existing + links, and stops routing traffic through. + SHUT Allows no new logical links, does not + destroy existing logical links, and goes + to the OFF state when all logical links are + gone. + RESTRICTED Allows no new incoming logical links from + other nodes. + + NOTE: These values are incremented by one compared to + the standard DECnet values in order to maintain + compliance with RFC 1155)." + ::= { phivSystem 1 } + +phivExecIdent OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This is a text string that describes the executor node + (for example, 'Research Lab'). The string is up to 32 + characters of any type." + ::= { phivSystem 2 } + +-- Network Management Group + +-- The implementation of the Network Management Group is +-- mandatory for all systems which contain a DECnet-style +-- management version. + + +phivMgmtMgmtVers OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This is the read-only Network Management Version, + consisting of the version number, the Engineering + Change Order (ECO) number, and the user ECO number + (for example, 3.0.0). This parameter applies to the + executor node only." + ::= { phivManagement 1 } + +-- Session Layer Group + +-- The implementation of the Session Layer Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +phivSessionSystemName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Name to be associated with the node identification. + Only one name can be assigned to a node address or a + circuit identification. No name should be used more than + once in a DECnet network. Node-name is one to six upper + case alphanumeric characters with at least one alpha + character. A length of 0 indicates no name." + ::= { session 1 } + +phivSessionInTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum duration between the + time a connect is received for a process at the + executor node and the time that process accepts or + rejects it. If the connect is not accepted or rejected + by the user within the number of seconds specified, + Session Control rejects it for the user. A value of 0 + indicates no timer is running." + ::= { session 2 } + +phivSessionOutTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the duration between the time the + executor requests a connect and the time that connect is + acknowledged by the destination node. If the connect is + not acknowledged within the number of seconds + specified, Session Control returns an error. A value of 0 + indicates no timer is running." + ::= { session 3 } + +-- End Communication Layer Group + +-- The implementation of the End Communication Layer Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +-- Remote State Table + +phivEndRemoteTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivEndRemoteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the state of sessions between the + node under study and the nodes found in the table." + ::= { end 1 } + +phivEndRemoteEntry OBJECT-TYPE + SYNTAX PhivEndRemoteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular remote node as seen + from the end communication layer." + INDEX { phivEndRemoteHostNodeID } + ::= { phivEndRemoteTable 1 } + +PhivEndRemoteEntry ::= + SEQUENCE { + phivEndRemoteHostNodeID + PhivAddr, + phivEndRemoteState + INTEGER, + phivEndCircuitIndex + INTEGER, + phivEndActiveLinks + INTEGER, + phivEndDelay + INTEGER + } + +phivEndRemoteHostNodeID OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the address of the remote node to be + evaluated." + ::= { phivEndRemoteEntry 1 } + +phivEndRemoteState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (2), + shut (3), + restricted (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This represents the operational state of the remote node + being evaluated. + The possible states are: + + ON Allows logical links. + OFF Allows no new links, terminates existing + links, and stops routing traffic through. + SHUT Allows no new logical links, does not + destroy existing logical links, and goes + to the OFF state when all logical links are + gone. + RESTRICTED Allows no new incoming logical links from + other nodes. + + NOTE: These values are incremented by one compared to + the standard DECnet values in order to maintain + compliance with RFC 1155." + ::= { phivEndRemoteEntry 2 } + +phivEndCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit used to + communicate with the remote node. This is the same + value as phivCircuitIndex." + ::= { phivEndRemoteEntry 3 } + +phivEndActiveLinks OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter represents the number of active + logical links from the executor to the destination node." + ::= { phivEndRemoteEntry 4 } + +phivEndDelay OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter is the average round trip + delay in seconds to the destination node. This + parameter is kept on a remote node basis." + ::= { phivEndRemoteEntry 5 } + +-- End System Counter Table + +phivEndCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivEndCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the counters associated with each end + system that is known to the entity. These counters + reflect totals from the perspective of the executor + node." + ::= { end 2 } + +phivEndCountEntry OBJECT-TYPE + SYNTAX PhivEndCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular session between two end + systems." + INDEX { phivEndCountHostNodeID } + ::= { phivEndCountTable 1 } + +PhivEndCountEntry ::= + SEQUENCE { + phivEndCountHostNodeID + PhivAddr, + phivEndCountSecsLastZeroed + PhivCounter, + phivEndCountUsrBytesRec + PhivCounter, + phivEndCountUsrBytesSent + PhivCounter, + phivEndUCountUsrMessRec + PhivCounter, + phivEndCountUsrMessSent + PhivCounter, + phivEndCountTotalBytesRec + PhivCounter, + phivEndCountTotalBytesSent + PhivCounter, + phivEndCountTotalMessRec + PhivCounter, + phivEndCountTotalMessSent + PhivCounter, + phivEndCountConnectsRecd + PhivCounter, + phivEndCountConnectsSent + PhivCounter, + phivEndCountReponseTimeouts + PhivCounter, + phivEndCountRecdConnectResErrs + PhivCounter + } + +phivEndCountHostNodeID OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the address of the remote node to be + evaluated." + ::= { phivEndCountEntry 1 } + +phivEndCountSecsLastZeroed OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the number of seconds that have elapsed + since the counters for the node in this table row were + last set to zero. This counter is located in the + network management layer, but is returned with the + end system information which follows." + ::= { phivEndCountEntry 2 } + +phivEndCountUsrBytesRec OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user bytes received from the target host." + ::= { phivEndCountEntry 3 } + +phivEndCountUsrBytesSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user bytes sent to the target host." + ::= { phivEndCountEntry 4 } + +phivEndUCountUsrMessRec OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user messages received from the target host." + ::= { phivEndCountEntry 5 } + +phivEndCountUsrMessSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user messages sent to the target host." + ::= { phivEndCountEntry 6 } + +phivEndCountTotalBytesRec OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes received from the target host." + ::= { phivEndCountEntry 7 } + +phivEndCountTotalBytesSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes sent to the target host." + ::= { phivEndCountEntry 8 } + +phivEndCountTotalMessRec OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of messages received from the target host." + ::= { phivEndCountEntry 9 } + +phivEndCountTotalMessSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of messages sent to the target host." + ::= { phivEndCountEntry 10 } + +phivEndCountConnectsRecd OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of connects received from the target host." + ::= { phivEndCountEntry 11 } + +phivEndCountConnectsSent OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of connects sent to the target host." + ::= {phivEndCountEntry 12 } + +phivEndCountReponseTimeouts OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of response timeouts." + ::= { phivEndCountEntry 13 } + +phivEndCountRecdConnectResErrs OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of received connect resource errors." + ::= {phivEndCountEntry 14 } + +-- additional End System objects + +phivEndMaxLinks OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum active logical + link count allowed for the executor." + ::= { end 3 } + +phivEndNSPVers OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter represents the version number + of the node End Communication S/W. The format is + version number, ECO, and user ECO, e.g., 4.1.0" + ::= { end 4 } + +phivEndRetransmitFactor OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of times the + source End Communication at the executor node will + restart the retransmission timer when it expires. If + the number is exceeded, Session Control disconnects the + logical link for the user." + ::= { end 5 } + +phivEndDelayFact OBJECT-TYPE + SYNTAX INTEGER (1..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This is the number by which to multiply one sixteenth + of the estimated round trip delay to a node to set the + retransmission timer to that node." + ::= { end 6 } + +phivEndDelayWeight OBJECT-TYPE + SYNTAX INTEGER (1..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This number represents the weight to apply to a + current round trip delay estimate to a remote node + when updating the estimated round trip delay to a node. + On some systems the number must be 1 less than a power + of 2 for computational efficiency." + ::= { end 7 } + +phivEndInactivityTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum duration of inactivity + (no data in either direction) on a logical link before + the node checks to see if the logical link still works. + If no activity occurs within the minimum number of + seconds, End Communication generates artificial + traffic to test the link (End Communication + specification)." + ::= { end 8 } + +phivEndCountZeroCount OBJECT-TYPE + SYNTAX INTEGER { + other (1), + reset (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "When this value is set to 2, all of the counters in + the End System Counter Table are set to zero." + ::= { end 9 } + +phivEndMaxLinksActive OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the high water mark for the + number of links that were active at any one time." + ::= { end 10 } + +-- Routing Layer Group + +-- The implementation of the Routing Layer Group is mandatory for +-- all systems that implement level 1 routing layer +-- communications. + +phivRouteBroadcastRouteTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value determines the maximum time in seconds + allowed between Routing updates on Ethernet + circuits. When this timer expired before a routing + update occurs, a routing update is forced. With a + standard calculation, Routing also uses this timer + to enforce a minimum delay between routing updates." + ::= { routing 1 } + +phivRouteBuffSize OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter value determines the maximum size of + a Routing message. It therefore determines the maximum + size message that can be forwarded. This size includes + protocol overhead down to and including the End + Communication layer, plus a constant value of 6. (This + value of 6 is included to provide compatibility with + the parameter definition in Phase III, which included + the Routing overhead.) It does not include Routing or + Data link overhead (except for the constant value of + 6). There is one buffer size for all circuits. + + NOTE: The BUFFER SIZE defines the maximum size messages + that the Routing layer can forward. The SEGMENT BUFFER + SIZE (defined below) defines the maximum size messages + that the End Communication layer can transmit or + receive. The SEGMENT BUFFER SIZE is always less than + or equal to the BUFFER SIZE. Normally the two + parameters will be equal. They may be different to + allow the network manager to alter buffer sizes + on all nodes without interruption of service. They both + include an extra 6 bytes for compatibility with Phase + III." + ::= { routing 2 } + +phivRouteRoutingVers OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter identifies the executor node's + Routing version number. The format is version number, + ECO, and user ECO, e.g., 4.1.0" + ::= { routing 3 } + +phivRouteMaxAddr OBJECT-TYPE + SYNTAX INTEGER (1..1023) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the largest node number and, + therefore, number of nodes that can be known about + by the executor node's home area." + ::= { routing 4 } + +phivRouteMaxBdcastNonRouters OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum total number of + nonrouters the executor node can have on its Ethernet + circuits." + ::= { routing 5 } + +phivRouteMaxBdcastRouters OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum total number of + routers the executor node can have on its Ethernet + circuits." + ::= { routing 6 } + +phivRouteMaxBuffs OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of transmit + buffers that Routing may use for all circuits." + ::= { routing 7 } + +phivRouteMaxCircuits OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of Routing + circuits that the executor node can know about." + ::= { routing 8 } + +phivRouteMaxCost OBJECT-TYPE + SYNTAX INTEGER (1..1022) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum total path cost + allowed from the executor to any node within an area. + The path cost is the sum of the circuit costs along + a path between two nodes. This parameter defines the + point where the executor node's Routing routing + decision algorithm declares another node unreachable + because the cost of the least costly path to the + other node is excessive. For correct operation, this + parameter must not be less than the maximum path cost + of the network." + ::= { routing 9 } + +phivRouteMaxHops OBJECT-TYPE + SYNTAX INTEGER (1..30) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of routing hops + allowable from the executor to any other reachable node + within an area. (A hop is the logical distance over a + circuit between two adjacent nodes.) This parameter + defines the point where the executor node's Routing + routing decision algorithm declares another node + unreachable because the length of the shortest path + between the two nodes is too long. For correct + operation, this parameter must not be less than the + network diameter. (The network diameter is the + reachability distance between the two nodes of the + network having the greatest reachability distance, + where reachability distance is the length the shortest + path between a given pair of nodes.)" + ::= { routing 10 } + +phivRouteMaxVisits OBJECT-TYPE + SYNTAX INTEGER (1..63) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of nodes a + message coming into the executor node can have visited. + If the message is not for this node and the MAXIMUM + VISITS number is exceeded, the message is discarded. + The MAXIMUM VISITS parameter defines the point where + the packet lifetime control algorithm discards + a packet that has traversed too many nodes. For correct + operation, this parameter must not be less than the + maximum path length of the network. (The maximum path + length is the routing distance between the two nodes of + the network having the greatest routing distance, where + routing distance is the length of the least costly + path between a given pair of nodes.)" + ::= { routing 11 } + +phivRouteRoutingTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value determines the maximum time in seconds + allowed between Routing updates on non-Ethernet + circuits. When this timer expires before a routing + update occurs, a routing update is forced." + ::= { routing 12 } + +phivRouteSegBuffSize OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter value determines the maximum size of an + end-to-end segment. The size is a decimal integer in + the range 1-65535. This size is in bytes. This size + includes protocol overhead down to and including the + End Communication layer, plus a constant value of 6. + (This value of 6 is included to provide compatibility + with the BUFFER SIZE parameter definition.) It does not + include Routing or Data link overhead (except for the + constant value of 6)." + ::= { routing 13 } + +phivRouteType OBJECT-TYPE + SYNTAX INTEGER { + routing-III (1), + nonrouting-III (2), + area (3), + routing-IV (4), + nonrouting-IV (5) + } + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This parameter indicates the type of the executor + node. The node-type is one of the following: + + routing-III + nonrouting-III + routing-IV + ronrouting-IV + area + + A routing node has full routing capability. A + nonrouting node contains a subset of the Routing + routing modules. The III and IV indicate the DNA + phase of the node. Nonrouting nodes can deliver + and receive packets to and from any node, but cannot + route packets from other nodes through to other nodes. + An area node routes between areas. Refer to the Routing + specification for details. + For adjacent nodes, this is a read-only parameter that + indicates the type of the reachable adjacent node. + NOTE: The ROUTING-III and NONROUTING-III values are + incremented by one compared to the standard DECnet + values in order to maintain compliance with RFC 1155)" + ::= { routing 14 } + +phivRouteCountAgedPktLoss OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of aged packet losses." + ::= { routing 15 } + +phivRouteCountNodeUnrPktLoss OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of node unreachable packet losses." + ::= { routing 16 } + +phivRouteCountOutRngePktLoss OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of node out-of-range packet losses." + ::= { routing 17 } + +phivRouteCountOverSzePktLoss OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of Oversized packet losses." + ::= { routing 18 } + +phivRouteCountPacketFmtErr OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of packet format errors." + ::= { routing 19 } + +phivRouteCountPtlRteUpdtLoss OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of partial routing update losses." + ::= { routing 20 } + +phivRouteCountVerifReject OBJECT-TYPE + SYNTAX PhivCounter (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of verification rejects." + ::= { routing 21 } + +-- Level 1 Routing Table + +phivLevel1RouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivLevel1RouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the currently known DECnet Phase + IV Routes." + ::= { routing 22 } + +phivLevel1RouteEntry OBJECT-TYPE + SYNTAX PhivLevel1RouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the currently known DECnet Phase + IV Routes." + INDEX { phivLevel1RouteNodeAddr } + ::= { phivLevel1RouteTable 1 } + +PhivLevel1RouteEntry ::= + SEQUENCE { + phivLevel1RouteNodeAddr + PhivAddr, + phivLevel1RouteCircuitIndex + INTEGER, + phivLevel1RouteCost + INTEGER, + phivLevel1RouteHops + INTEGER, + phivLevel1RouteNextNode + PhivAddr + } + +phivLevel1RouteNodeAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the address of the node about which + routing information is contained in this level 1 + routing table." + ::= { phivLevel1RouteEntry 1 } + +phivLevel1RouteCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit. This is + the index to the circuit state table and is the same + value as phivCircuitIndex." + ::= { phivLevel1RouteEntry 2 } + +phivLevel1RouteCost OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter represents the total cost + over the current path to the destination node. Cost is + a positive integer value associated with using a + circuit. Routing routes messages (data) along the path + between two nodes with the smallest cost. COST is kept + on a remote node basis." + ::= { phivLevel1RouteEntry 3 } + +phivLevel1RouteHops OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter represents the number of hops + over to a destination node. A hop is Routing value + representing the logical distance between two nodes in + a network. HOPS is kept on a remote node basis." + ::= { phivLevel1RouteEntry 4 } + +phivLevel1RouteNextNode OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only value indicates the next node on the + circuit used to get to the node under scrutiny + (next hop)." + ::= { phivLevel1RouteEntry 5 } + +-- Additional routing parameters + +phivRouteCountZeroCount OBJECT-TYPE + SYNTAX INTEGER { + other (1), + reset (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "When this value is set to 2, the following objects are + set to Zero: phivRouteCountAgedPktLoss, + phivRouteCountNodeUnrPktLoss, + phivRouteCountOutRngePktLoss, + phivRouteCountOverSzePktLoss, + phivRouteCountPacketFmtErr, + phivRouteCountPtlRteUpdtLoss, and + phivRouteCountVerifReject." + ::= { routing 23 } + +phivRouteSystemAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "DECnet Phase IV node address." + ::= { routing 24 } + +phivRouteRoutingType OBJECT-TYPE + SYNTAX INTEGER { + routing-III (1), + nonrouting-III (2), + area (3), + routing-IV (4), + nonrouting-IV (5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This read-write parameter indicates the type of the executor + node. The node-type is one of the following: + + routing-III + nonrouting-III + routing-IV + ronrouting-IV + area + + A routing node has full routing capability. A + nonrouting node contains a subset of the Routing + routing modules. The III and IV indicate the DNA + phase of the node. Nonrouting nodes can deliver + and receive packets to and from any node, but cannot + route packets from other nodes through to other nodes. + An area node routes between areas. Refer to the Routing + specification for details. + + For adjacent nodes, this is a read-only parameter that + indicates the type of the reachable adjacent node. + NOTE: The ROUTING-III and NONROUTING-III values are + incremented by one compared to the standard DECnet + values in order to maintain compliance with RFC 1155)" + ::= { routing 25 } + +phivRouteSystemAddress OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "DECnet Phase IV node address." + ::= { routing 26 } + +-- Circuit Group + +-- The implementation of the Circuit Group is mandatory for +-- all systems. + +-- Circuit Parameters Table + +phivCircuitParametersTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivCircuitParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the parameters associated with all + circuits currently known." + ::= {circuit 1 } + +phivCircuitParametersEntry OBJECT-TYPE + SYNTAX PhivCircuitParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Parameters information about all circuits currently + known." + INDEX { phivCircuitIndex } + ::= { phivCircuitParametersTable 1 } + +PhivCircuitParametersEntry ::= + SEQUENCE { + phivCircuitIndex + INTEGER, + phivCircuitLineIndex + INTEGER, + phivCircuitCommonState + INTEGER, + phivCircuitCommonSubState + INTEGER, + phivCircuitCommonName + DisplayString, + phivCircuitExecRecallTimer + INTEGER, + phivCircuitCommonType + INTEGER, + phivCircuitService + INTEGER, + phivCircuitExecCost + INTEGER, + phivCircuitExecHelloTimer + INTEGER + } + +phivCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit." + ::= { phivCircuitParametersEntry 1 } + +phivCircuitLineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The line on which this circuit is active. This is + the same as the ifIndex." + ::= { phivCircuitParametersEntry 2 } + +phivCircuitCommonState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (2), + service (3), + cleared (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the circuit's Network Management + operational state. NOTE: These values are incremented + by one compared to the standard DECnet values in order + to maintain compliance with RFC 1155." + ::= { phivCircuitParametersEntry 3 } + +phivCircuitCommonSubState OBJECT-TYPE + SYNTAX INTEGER { + starting (1), + reflecting (2), + looping (3), + loading (4), + dumping (5), + triggering (6), + autoservice (7), + autoloading (8), + autodumping (9), + autotriggering (10), + synchronizing (11), + failed (12), + running (13) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the circuit's Network Management + operational and service substate. NOTE: These values are + incremented by one compared to the standard DECnet values + in order to maintain compliance with RFC 1155." + ::= { phivCircuitParametersEntry 4 } + +phivCircuitCommonName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..16)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The name of the circuit entry in the table, for example, + SVA-0 or in a level 2 router ASYNC-8 or ETHER-1)." + ::= { phivCircuitParametersEntry 5 } + +phivCircuitExecRecallTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter represents the minimum number of + seconds to wait before restarting the circuit. A + value of 0 indicates not timer is running." + ::= { phivCircuitParametersEntry 6 } + +phivCircuitCommonType OBJECT-TYPE + SYNTAX INTEGER { + ddcmp-point (1), + ddcmp-control (2), + ddcmp-tributary (3), + x25 (4), + ddcmp-dmc (5), + ethernet (6), + ci (7), + qp2-dte20 (8), + bisync (9), + other (14), + fddi (15) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Represents the type of the circuit. For X.25 circuits, + the value must be set to X25. For DDCMP and Ethernet + circuits it is read only and is the same value as the + protocol of the associated line. + NOTE: Values 1 - 5 are incremented by one compared to the + standard DECnet values in order to maintain compliance + with RFC 1155." + ::= { phivCircuitParametersEntry 7 } + +phivCircuitService OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value indicates whether or not Network Management + allows service operations on a circuit. The values for + service-control are as follows: + + ENABLED SERVICE state and/or service functions are + allowed. + + DISABLED SERVICE state and/or service functions are not + allowed. + + NOTE: These values are incremented by one compared to the + standard DECnet values in order to maintain compliance + with RFC 1155." + ::= { phivCircuitParametersEntry 8 } + +phivCircuitExecCost OBJECT-TYPE + SYNTAX INTEGER (1..25) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the routing cost of the circuit. + Routing sends messages along the path between two nodes + having the smallest cost." + ::= { phivCircuitParametersEntry 9 } + +phivCircuitExecHelloTimer OBJECT-TYPE + SYNTAX INTEGER (1..8191) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value determines the frequency of Routing Hello + messages sent to the adjacent node on the circuit." + ::= { phivCircuitParametersEntry 10 } + +-- Circuit Counters Table + +phivCircuitCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivCircuitCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the counters associated with all + circuits currently known." + ::= { circuit 2 } + + phivCircuitCountEntry OBJECT-TYPE + SYNTAX PhivCircuitCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Counter information about all circuits currently known" + INDEX { phivCircuitIndex } + ::= { phivCircuitCountTable 1 } + +PhivCircuitCountEntry ::= + SEQUENCE { + phivCircuitCountSecLastZeroed + PhivCounter, + phivCircuitCountTermPacketsRecd + PhivCounter, + phivCircuitCountOriginPackSent + PhivCounter, + phivCircuitCountTermCongLoss + PhivCounter, + phivCircuitCountCorruptLoss + PhivCounter, + phivCircuitCountTransitPksRecd + PhivCounter, + phivCircuitCountTransitPkSent + PhivCounter, + phivCircuitCountTransitCongestLoss + PhivCounter, + phivCircuitCountCircuitDown + PhivCounter, + phivCircuitCountInitFailure + PhivCounter, + phivCircuitCountAdjDown + PhivCounter, + phivCircuitCountPeakAdj + PhivCounter, + phivCircuitCountBytesRecd + PhivCounter, + phivCircuitCountBytesSent + PhivCounter, + phivCircuitCountDataBlocksRecd + PhivCounter, + phivCircuitCountDataBlocksSent + PhivCounter, + phivCircuitCountUsrBuffUnav + PhivCounter + } + +phivCircuitCountSecLastZeroed OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of seconds since the circuit counters for this + circuit were last zeroed." + ::= { phivCircuitCountEntry 1 } + +phivCircuitCountTermPacketsRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of terminating packets received on this circuit." + ::= { phivCircuitCountEntry 2 } + +phivCircuitCountOriginPackSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of originating packets sent on this circuit." + ::= { phivCircuitCountEntry 3 } + +phivCircuitCountTermCongLoss OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of terminating congestion losses on this + circuit." + ::= { phivCircuitCountEntry 4 } + +phivCircuitCountCorruptLoss OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of corruption losses on this circuit." + ::= { phivCircuitCountEntry 5 } + +phivCircuitCountTransitPksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of Transit packets received on this circuit." + ::= { phivCircuitCountEntry 6 } + +phivCircuitCountTransitPkSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of transit packets sent on this circuit." + ::= { phivCircuitCountEntry 7 } + +phivCircuitCountTransitCongestLoss OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of transit congestion losses on this circuit." + ::= { phivCircuitCountEntry 8 } + +phivCircuitCountCircuitDown OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of circuit downs on this circuit." + ::= { phivCircuitCountEntry 9 } + +phivCircuitCountInitFailure OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of Initialization failures on this circuit." + ::= { phivCircuitCountEntry 10 } + +phivCircuitCountAdjDown OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This counter indicates the number of adjacency losses + that result from any of the following: + Node listener timeout + Invalid data received at node listener + Unexpected control (initialization or verification) + message received + Routing message received with a checksum error + Node identification from a routing message or a + Hello message that is not the one expected Hello + message received indicating that connectivity + became one-way + Adjacency idled." + ::= { phivCircuitCountEntry 11 } + +phivCircuitCountPeakAdj OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This counter indicates the maximum number of nodes + that are up on the circuit." + ::= { phivCircuitCountEntry 12 } + +phivCircuitCountBytesRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes received on this circuit." + ::= { phivCircuitCountEntry 13 } + +phivCircuitCountBytesSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes sent on this circuit." + ::= { phivCircuitCountEntry 14 } + +phivCircuitCountDataBlocksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data blocks received on this circuit." + ::= { phivCircuitCountEntry 15 } + +phivCircuitCountDataBlocksSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data blocks sent on this circuit." + ::= { phivCircuitCountEntry 16 } + +phivCircuitCountUsrBuffUnav OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user buffer unavailable errors." + ::= { phivCircuitCountEntry 17 } + +-- Additional Circuit Parameters + +phivCircuitOrigQueueLimit OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter indicates the maximum number of + originating packets that may be outstanding on this + circuit. This does not include route-thru traffic." + ::= { circuit 3 } + +phivCircuitCountZeroCount OBJECT-TYPE + SYNTAX INTEGER { + other (1), + reset (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "When this value is set to 2, all of the counters in the + Circuit Counter Table are set to zero." + ::= { circuit 4 } + +-- DDCMP Circuit Group + +-- The implementation of the DDCMP Circuit Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +-- DDCMP Parameters Table + +phivDDCMPCircuitParametersTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivDDCMPCircuitParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about DDCMP circuit parameters." + ::= { ddcmp 1} + +phivDDCMPCircuitParametersEntry OBJECT-TYPE + SYNTAX PhivDDCMPCircuitParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Parameters information about DDCMP circuits currently + known." + INDEX { phivDDCMPCircuitIndex } + ::= { phivDDCMPCircuitParametersTable 1 } + +PhivDDCMPCircuitParametersEntry ::= + SEQUENCE { + phivDDCMPCircuitIndex + INTEGER, + phivDDCMPCircuitAdjNodeAddr + INTEGER, + phivDDCMPCircuitTributary + INTEGER + } + +phivDDCMPCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known DDCMP circuit. + This is the same value as phivCircuitIndex." + ::= { phivDDCMPCircuitParametersEntry 1 } + +phivDDCMPCircuitAdjNodeAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the adjacent node." + ::= { phivDDCMPCircuitParametersEntry 2 } + +phivDDCMPCircuitTributary OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Data Link physical tributary + address of the circuit." + ::= { phivDDCMPCircuitParametersEntry 3 } + +-- DDCMP Circuit Counter Table + +phivDDCMPCircuitCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivDDCMPCircuitCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the DDCMP counters associated with all + circuits currently known." + ::= { ddcmp 2 } + +phivDDCMPCircuitCountEntry OBJECT-TYPE + SYNTAX PhivDDCMPCircuitCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Counter information about DDCMP circuits now known" + INDEX { phivCircuitIndex } + ::= { phivDDCMPCircuitCountTable 1 } + +PhivDDCMPCircuitCountEntry ::= + SEQUENCE { + phivDDCMPCircuitErrorsInbd + PhivCounter, + phivDDCMPCircuitErrorsOutbd + PhivCounter, + phivDDCMPCircuitRmteReplyTimeouts + PhivCounter, + phivDDCMPCircuitLocalReplyTimeouts + PhivCounter, + phivDDCMPCircuitRmteBuffErrors + PhivCounter, + phivDDCMPCircuitLocalBuffErrors + PhivCounter, + phivDDCMPCircuitSelectIntervalsElap + PhivCounter, + phivDDCMPCircuitSelectTimeouts + PhivCounter + } + +phivDDCMPCircuitErrorsInbd OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of Data errors inbound." + ::= { phivDDCMPCircuitCountEntry 1 } + +phivDDCMPCircuitErrorsOutbd OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of outbound data errors." + ::= { phivDDCMPCircuitCountEntry 2 } + +phivDDCMPCircuitRmteReplyTimeouts OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of remote reply timeouts." + ::= { phivDDCMPCircuitCountEntry 3 } + +phivDDCMPCircuitLocalReplyTimeouts OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of local Reply timeouts." + ::= { phivDDCMPCircuitCountEntry 4 } + +phivDDCMPCircuitRmteBuffErrors OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of remote reply time out errors." + ::= { phivDDCMPCircuitCountEntry 5 } + +phivDDCMPCircuitLocalBuffErrors OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of local buffer errors." + ::= { phivDDCMPCircuitCountEntry 6 } + +phivDDCMPCircuitSelectIntervalsElap OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Selection intervals that have elapsed." + ::= {phivDDCMPCircuitCountEntry 7 } + +phivDDCMPCircuitSelectTimeouts OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of selection timeouts." + ::= {phivDDCMPCircuitCountEntry 8 } + +-- DDCMP Line Count Table + +phivDDCMPLineCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivDDCMPLineCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The DDCMP Line Count Table." + ::= { ddcmp 3 } + +phivDDCMPLineCountEntry OBJECT-TYPE + SYNTAX PhivDDCMPLineCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "There is one entry in the table for each line." + INDEX { phivDDCMPLineCountIndex } + ::= { phivDDCMPLineCountTable 1 } + +PhivDDCMPLineCountEntry ::= + SEQUENCE { + phivDDCMPLineCountIndex + InterfaceIndex, + phivDDCMPLineCountDataErrsIn + PhivCounter, + phivDDCMPLineCountRmteStationErrs + PhivCounter, + phivDDCMPLineCountLocalStationErrs + PhivCounter + } + +phivDDCMPLineCountIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The line on which this entry's equivalence is + effective. The interface identified by a particular + value of this index is the same interface as + identified by the same value of phivLineIndex. + This value is the ifIndex." + ::= { phivDDCMPLineCountEntry 1 } + +phivDDCMPLineCountDataErrsIn OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data errors inbound." + ::= { phivDDCMPLineCountEntry 2 } + +phivDDCMPLineCountRmteStationErrs OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of remote station errors." + ::= { phivDDCMPLineCountEntry 3 } + +phivDDCMPLineCountLocalStationErrs OBJECT-TYPE + SYNTAX PhivCounter (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of local station errors." + ::= { phivDDCMPLineCountEntry 4 } + +-- DDCMP Multipoint Circuit Control Group + +-- The implementation of the DDCMP Multipoint Circuit Control +-- Group is optional. A system can be said to implement this group +-- if and only if all objects in this group are implemented. + +phivControlSchedTimer OBJECT-TYPE + SYNTAX INTEGER (50..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds + between recalculation of tributary polling priorities." + DEFVAL { 200 } + ::= { control 1 } + +phivControlDeadTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds + between polls of one of the set of dead + tributaries." + DEFVAL { 10000 } + ::= { control 2 } + +phivControlDelayTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the minimum number of + milliseconds to delay between polls. The delay timer + limits the effect of a very fast control station on + slow tributaries." + ::= { control 3 } + +phivControlStreamTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds a + tributary or a half duplex remote station is + allowed to hold the line. + + NOTE: This parameter can also be applied to + half-duplex lines of type DDCMP POINT." + DEFVAL { 6000 } + ::= { control 4 } + +-- DDCMP Multipoint Circuit Control Parameters Table + +phivControlParametersTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivControlParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about control circuit parameters." + ::= { control 5 } + +phivControlParametersEntry OBJECT-TYPE + SYNTAX PhivControlParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Parameters information about control circuits + currently known." + INDEX { phivControlCircuitIndex } + ::= { phivControlParametersTable 1 } + +PhivControlParametersEntry ::= + SEQUENCE { + phivControlCircuitIndex + INTEGER, + phivControlBabbleTimer + INTEGER, + phivControlMaxBuffs + INTEGER, + phivControlMaxTransmits + INTEGER, + phivControlDyingBase + INTEGER, + phivControlDyingIncrement + INTEGER, + phivControlDeadThreshold + INTEGER, + phivControlDyingThreshold + INTEGER, + phivControlInactTreshold + INTEGER, + phivControlPollingState + INTEGER, + phivControlPollingSubState + INTEGER, + phivControlTransTimer + INTEGER + } + +phivControlCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known multipoint + control circuit. + This is the same value as phivCircuitIndex." + ::= { phivControlParametersEntry 1 } + +phivControlBabbleTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds that a + selected tributary or remote half-duplex station is + allowed to transmit." + DEFVAL { 6000 } + ::= { phivControlParametersEntry 2 } + +phivControlMaxBuffs OBJECT-TYPE + SYNTAX INTEGER (1..254) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of buffers the + tributary can use from a common buffer pool. If not + set, there is no common buffer pool and buffers are + explicitly supplied by the higher level. Count is a + decimal integer in the range 1-254." + ::= { phivControlParametersEntry 3 } + +phivControlMaxTransmits OBJECT-TYPE + SYNTAX INTEGER (1..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of data + messages that can be transmitted at one time. Count + is a decimal integer in the range 1-255." + DEFVAL { 4 } + ::= { phivControlParametersEntry 4 } + +phivControlDyingBase OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the base priority to which a + tributary is reset each time it has been polled. A + separate base can be set for each of the indicated + polling states. Base is a decimal integer in the range + 0-255. If not set, the defaults are: active, 255; + inactive, 0; and dying, 0." + ::= { phivControlParametersEntry 5 } + +phivControlDyingIncrement OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the increment added to the + tributary priority each time the scheduling timer + expires. If not set, the defaults are: active, 0; + inactive, 64; and dying, 16." + ::= { phivControlParametersEntry 6 } + +phivControlDeadThreshold OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of times to poll the + active, inactive, or dying tributary before changing + its polling state to dead because of receive timeouts. + Count is a decimal integer in the range 0-255." + DEFVAL { 8 } + ::= { phivControlParametersEntry 7 } + +phivControlDyingThreshold OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of times to poll the + active or inactive tributary before changing its + polling state to dying because of receive timeouts. + Count is a decimal integer in the range 0-255." + DEFVAL { 2 } + ::= { phivControlParametersEntry 8 } + +phivControlInactTreshold OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of times to poll the + active tributary before changing its polling state to + inactive because of no data response. Count is a + decimal integer in the range + 0-255." + DEFVAL { 8 } + ::= { phivControlParametersEntry 9 } + +phivControlPollingState OBJECT-TYPE + SYNTAX INTEGER { + automatic (1), + active (2), + inactive (3), + dying (4), + dead (5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the state of the tributary + relative to the multipoint polling algorithm. If not + set the default is AUTOMATIC. The possible states are: + AUTOMATIC + + The tributary's state is allowed to vary according to + the operation of the polling algorithm. + + ACTIVE/INACTIVE/DYING/DEAD + + The tributary is locked in the specified state. + + NOTE: These values are incremented by one compared to + the standard DECnet values in order to maintain + compliance with RFC 1155." + ::= { phivControlParametersEntry 10 } + +phivControlPollingSubState OBJECT-TYPE + SYNTAX INTEGER { + active (1), + inactive (2), + dying (3), + dead (4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the tributary's state as + determined by the polling algorithm. This applies + only when the polling state is AUTOMATIC and is + read-only to Network Management. Polling-substate is + one of ACTIVE, INACTIVE, DYING, or DEAD. It is + displayed as a tag on the polling state, for example: + AUTOMATIC-INACTIVE." + ::= { phivControlParametersEntry 11 } + +phivControlTransTimer OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the number of milliseconds to + delay between data message transmits. Milliseconds is + a decimal integer in the range 0-65535." + DEFVAL { 0 } + ::= { phivControlParametersEntry 12 } + +-- Ethernet Group + +-- The implementation of the Ethernet Group is mandatory +-- for all systems which support ethernet links. + +-- Ethernet Parameters Table + +phivEthLinkParametersTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivEthLinkParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about ethernet link parameters." + ::= { ethernet 1} + +phivEthLinkParametersEntry OBJECT-TYPE + SYNTAX PhivEthLinkParametersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Parameter information about ethernet links currently + known." + INDEX { phivEthLinkIndex } + ::= { phivEthLinkParametersTable 1 } + +PhivEthLinkParametersEntry ::= + SEQUENCE { + phivEthLinkIndex + INTEGER, + phivEthDesigRouterNodeAddr + PhivAddr, + phivEthMaxRouters + INTEGER, + phivEthRouterPri + INTEGER, + phivEthHardwareAddr + OCTET STRING + } + +phivEthLinkIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The circuit over which this links information is + collected. This is the same as phivCircuitIndex." + ::= { phivEthLinkParametersEntry 1 } + +phivEthDesigRouterNodeAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value is the address of the designated router." + ::= { phivEthLinkParametersEntry 2 } + +phivEthMaxRouters OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter is the maximum number of routers (other + than the executor itself) allowed on the circuit by + Routing for circuits that are owned by the executor + node." + ::= { phivEthLinkParametersEntry 3 } + +phivEthRouterPri OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This parameter is the priority that this router is to + have in the selection of designated router for the + circuit on circuits that are owned by the executor + node." + DEFVAL { 64 } + ::= { phivEthLinkParametersEntry 4 } + +phivEthHardwareAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter is the address that is + associated with the line device hardware as seen by + the DECnet Software. This value is not the same as + ifPhysAddress." + ::= { phivEthLinkParametersEntry 5 } + +-- Counters Group + +-- The implementation of the Counters Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +-- Counters Table + +phivCountersCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivCountersCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about ethernet link counters." + ::= { counters 1 } + +phivCountersCountEntry OBJECT-TYPE + SYNTAX PhivCountersCountEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Counter information about ethernet links currently + known." + INDEX { phivCountersIndex } + ::= { phivCountersCountTable 1 } + +PhivCountersCountEntry ::= + SEQUENCE { + phivCountersIndex + InterfaceIndex, + phivCountersCountBytesRecd + PhivCounter, + phivCountersCountBytesSent + PhivCounter, + phivCountersCountDataBlocksRecd + PhivCounter, + phivCountersCountDataBlocksSent + PhivCounter, + phivCountersCountEthUsrBuffUnav + PhivCounter, + phivCountersCountMcastBytesRecd + PhivCounter, + phivCountersCountDataBlksRecd + PhivCounter, + phivCountersCountDataBlksSent + PhivCounter, + phivCountersCountMcastBlksRecd + PhivCounter, + phivCountersCountBlksSentDef + PhivCounter, + phivCountersCountBlksSentSingleCol + PhivCounter, + phivCountersCountBlksSentMultCol + PhivCounter, + phivCountersCountSendFailure + PhivCounter, + phivCountersCountCollDetectFailure + PhivCounter, + phivCountersCountReceiveFailure + PhivCounter, + phivCountersCountUnrecFrameDest + PhivCounter, + phivCountersCountDataOver + PhivCounter, + phivCountersCountSysBuffUnav + PhivCounter, + phivCountersCountUsrBuffUnav + PhivCounter + } + +phivCountersIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The interface to which these counters apply. This is + the same interface as identified by the same value of + phivLineIndex. This value is the ifIndex." + ::= { phivCountersCountEntry 1 } + +phivCountersCountBytesRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes received over this link." + ::= { phivCountersCountEntry 2 } + +phivCountersCountBytesSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of bytes sent over this link." + ::= { phivCountersCountEntry 3 } + +phivCountersCountDataBlocksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "Number of data blocks received over this link." + ::= { phivCountersCountEntry 4 } + +phivCountersCountDataBlocksSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "Number of data blocks sent over this link." + ::= { phivCountersCountEntry 5 } + +phivCountersCountEthUsrBuffUnav OBJECT-TYPE + SYNTAX PhivCounter (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user buffer unavailable errors over this + link." + ::= { phivCountersCountEntry 6 } + +phivCountersCountMcastBytesRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of multicast bytes received over this link." + ::= { phivCountersCountEntry 7 } + +phivCountersCountDataBlksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data blocks received over this link." + ::= { phivCountersCountEntry 8 } + +phivCountersCountDataBlksSent OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data blocks sent over this link." + ::= { phivCountersCountEntry 9 } + +phivCountersCountMcastBlksRecd OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of multicast blocks received over this link." + ::= { phivCountersCountEntry 10 } + +phivCountersCountBlksSentDef OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of blocks sent, initially deferred over this + link." + ::= { phivCountersCountEntry 11 } + +phivCountersCountBlksSentSingleCol OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of blocks sent, single collision over this link." + ::= { phivCountersCountEntry 12 } + +phivCountersCountBlksSentMultCol OBJECT-TYPE + SYNTAX PhivCounter (0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of blocks sent, multiple collisions over this + link." + ::= { phivCountersCountEntry 13 } + +phivCountersCountSendFailure OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of send failures over this link." + ::= { phivCountersCountEntry 14 } + +phivCountersCountCollDetectFailure OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of collision detect check failures over this + link." + ::= { phivCountersCountEntry 15 } + +phivCountersCountReceiveFailure OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of receive failures over this link." + ::= { phivCountersCountEntry 16 } + +phivCountersCountUnrecFrameDest OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of unrecognized frame destinations over this + link." + ::= { phivCountersCountEntry 17 } + +phivCountersCountDataOver OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of data overruns over this link." + ::= { phivCountersCountEntry 18 } + +phivCountersCountSysBuffUnav OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of system buffer unavailables over this link." + ::= { phivCountersCountEntry 19 } + +phivCountersCountUsrBuffUnav OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Number of user buffer unavailables." + ::= { phivCountersCountEntry 20 } + +-- Adjacency Group + +-- The implementation of the Adjacency Group is mandatory for all +-- conformant implementations of this memo. + +-- The phivAdjTable has been made obsolete it has been replaced with +-- the phivAdjNodeTable. + +phivAdjTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivAdjEntry + ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "The Adjacency Table." + ::= { adjacency 1 } + +phivAdjEntry OBJECT-TYPE + SYNTAX PhivAdjEntry + ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "There is one entry in the table for each adjacency." + INDEX { phivAdjCircuitIndex } + ::= { phivAdjTable 1 } + +PhivAdjEntry ::= + SEQUENCE { + phivAdjCircuitIndex + INTEGER, + phivAdjNodeAddr + PhivAddr, + phivAdjBlockSize + INTEGER, + phivAdjListenTimer + INTEGER (1..65535), + phivAdjCircuitEtherServPhysAddr + OCTET STRING, + phivAdjType + INTEGER, + phivAdjState + INTEGER, + phivAdjPriority + INTEGER, + phivAdjExecListenTimer + INTEGER (1..65535) + } +phivAdjCircuitIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS obsolete + DESCRIPTION + "A unique index value for each known circuit." + ::= { phivAdjEntry 1 } + +phivAdjNodeAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The address of the adjacent node." + ::= { phivAdjEntry 2 } + +phivAdjBlockSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This read-only parameter is the block size that was + negotiated with the adjacent Routing layer during Routing + initialization over a particular circuit. It includes the + routing header, but excludes the data link header. This + parameter is qualified by ADJACENT NODE." + ::= { phivAdjEntry 3 } + +phivAdjListenTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This value determines the maximum number of seconds + allowed to elapse before Routing receives some message + (either a Hello message or a user message) from the + adjacent node on the circuit. It was agreed during + Routing initialization with the adjacent Routing layer. + This parameter is qualified by ADJACENT NODE." + ::= { phivAdjEntry 4 } + +phivAdjCircuitEtherServPhysAddr OBJECT-TYPE + SYNTAX OCTET STRING ( SIZE (6) ) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This parameter indicates the Ethernet physical address + of an adjacent node that is being serviced on this + circuit. This parameter is a qualifier for SERVICE + SUBSTATE." + ::= { phivAdjEntry 5 } + +phivAdjType OBJECT-TYPE + SYNTAX INTEGER { + routing-III (1), + nonrouting-III (2), + area (3), + routing-IV (4), + nonrouting-IV (5) + } + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This parameter indicates the type of adjacency. + + For adjacent nodes, this is a read-only parameter that + indicates the type of the reachable adjacent node. + NOTE: The routing-III and nonrouting-III values are + incremented by one compared to the standard DECnet + values in order to maintain compliance with RFC 1155)" + ::= { phivAdjEntry 6 } + +phivAdjState OBJECT-TYPE + SYNTAX INTEGER { + initializing (1), -- Ethernet one-way + up (2), -- Ethernet two-way + run (3), -- The eight DDCMP/X.25 states + circuit-rejected (4), + data-link-start (5), + routing-layer-initialize (6), + routing-layer-verify (7), + routing-layer-complete (8), + off (9), + halt (10) + } + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This value indicates the state of a router adjacency. + On adjacencies over a circuit of type + (phivCircuitCommonType) Ethernet, CI, or FDDI, with an + adjacent node of type (phivAdjType) ROUTING IV or AREA, + this variable is the state of the Ethernet + Initialization Layer for this adjacency, and can have + values INITIALIZING or UP. (See Section 9.1.1 of + DECnet Phase IV Routing Layer Functional Specification.) + + On adjacencies over a circuit of type + (phivCircuitCommonType) Ethernet, CI, or FDDI, with an + adjacent node of type (phivAdjType) NONROUTING IV, + this variable will always take on the value UP. + + On adjacencies over a circuit of type + (phivCircuitCommonType) DDCMP POINT, DDCMP CONTROL, + DDCMP TRIBUTARY, DDCMP DMC, or X.25, this variable is + the state of the Routing Layer Initialization Circuit + State. (See section 7.3, ibid.) It can have values + between RUN and HALT. + + On adjacencies over a circuit of type + (phivCircuitCommonType) OTHER, this variable may be + used in a manner consistent with the Initialization + Layer used on that circuit." + ::= { phivAdjEntry 7 } + +phivAdjPriority OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "Priority assigned by the adjacent node for this + circuit." + ::= { phivAdjEntry 8 } + +phivAdjExecListenTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS obsolete + DESCRIPTION + "This read-only value determines the maximum number of + seconds allowed to elapse before Routing receives some + message (either a Hello message or a user message) from + the adjacent node on the circuit. It was agreed during + Routing initialization with the adjacent Routing layer." + ::= { phivAdjEntry 9 } + +-- New Adjacency Table this replaces the phivAdjTable. + +phivAdjNodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivAdjNodeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The Adjacent Node Table." + ::= { adjacency 2 } + +phivAdjNodeEntry OBJECT-TYPE + SYNTAX PhivAdjNodeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "There is one entry in the table for each adjacency." + INDEX { phivAdjNodeCircuitIndex, phivAdjAddr } + ::= { phivAdjNodeTable 1 } + +PhivAdjNodeEntry ::= + SEQUENCE { + phivAdjNodeCircuitIndex + INTEGER, + phivAdjAddr + PhivAddr, + phivAdjNodeBlockSize + INTEGER, + phivAdjNodeListenTimer + INTEGER, + phivAdjNodeCircuitEtherServPhysAddr + OCTET STRING, + phivAdjNodeType + INTEGER, + phivAdjNodeState + INTEGER, + phivAdjNodePriority + INTEGER + } + +phivAdjNodeCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit. This + value is the same as phivCircuitIndex and identifies the + circuit over which the adjacency is realized." + ::= { phivAdjNodeEntry 1 } + +phivAdjAddr OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the adjacent node." + ::= { phivAdjNodeEntry 2 } + +phivAdjNodeBlockSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This read-only parameter is the block size that was + negotiated with the adjacent Routing layer during Routing + initialization over a particular circuit. It includes the + routing header, but excludes the data link header. This + parameter is qualified by ADJACENT NODE." + ::= { phivAdjNodeEntry 3 } + +phivAdjNodeListenTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value determines the maximum number of seconds + allowed to elapse before Routing receives some message + (either a Hello message or a user message) from the + adjacent node on the circuit. It was agreed during + Routing initialization with the adjacent Routing layer. + This parameter is qualified by ADJACENT NODE." + ::= { phivAdjNodeEntry 4 } + +phivAdjNodeCircuitEtherServPhysAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This parameter indicates the Ethernet physical address + of an adjacent node that is being serviced on this + circuit. This parameter is a qualifier for SERVICE + SUBSTATE." + ::= { phivAdjNodeEntry 5 } + +phivAdjNodeType OBJECT-TYPE + SYNTAX INTEGER { + routing-III (1), + nonrouting-III (2), + area (3), + routing-IV (4), + nonrouting-IV (5) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This parameter indicates the type of adjacency. + + For adjacent nodes, this is a read-only parameter that + indicates the type of the reachable adjacent node. + NOTE: The routing-III and nonrouting-III values are + incremented by one compared to the standard DECnet + values in order to maintain compliance with RFC 1155)" + ::= { phivAdjNodeEntry 6 } + +phivAdjNodeState OBJECT-TYPE + SYNTAX INTEGER { + initializing (1), -- Ethernet one-way + up (2), -- Ethernet two-way + run (3), -- The eight DDCMP/X.25 states + circuit-rejected (4), + data-link-start (5), + routing-layer-initialize (6), + routing-layer-verify (7), + routing-layer-complete (8), + off (9), + halt (10) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value indicates the state of a router adjacency. + On adjacencies over a circuit of type + (phivCircuitCommonType) Ethernet, CI, or FDDI, with an + adjacent node of type (phivAdjNodeType) ROUTING IV or AREA, + this variable is the state of the Ethernet + Initialization Layer for this adjacency, and can have + values INITIALIZING or UP. (See Section 9.1.1 of + DECnet Phase IV Routing Layer Functional Specification.) + + On adjacencies over a circuit of type + (phivCircuitCommonType) Ethernet, CI, or FDDI, with an + adjacent node of type (phivAdjNodeType) NONROUTING IV, + this variable will always take on the value UP. + + On adjacencies over a circuit of type + (phivCircuitCommonType) DDCMP POINT, DDCMP CONTROL, + DDCMP TRIBUTARY, DDCMP DMC, or X.25, this variable is + the state of the Routing Layer Initialization Circuit + State. (See section 7.3, ibid.) It can have values + between RUN and HALT. + + On adjacencies over a circuit of type + (phivCircuitCommonType) OTHER, this variable may be + used in a manner consistent with the Initialization + Layer used on that circuit." + ::= { phivAdjNodeEntry 7 } + +phivAdjNodePriority OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Priority assigned by the adjacent node for this + circuit." + ::= { phivAdjNodeEntry 8 } + +-- Line Group + +-- The implementation of the Line Group is mandatory for all +-- conformant implementations of this memo. + +phivLineTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivLineEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The Line Table." + ::= { line 1 } + +phivLineEntry OBJECT-TYPE + SYNTAX PhivLineEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "There is one entry in the table for each line." + INDEX { phivLineIndex } + ::= { phivLineTable 1 } + +PhivLineEntry ::= + SEQUENCE { + phivLineIndex + InterfaceIndex, + phivLineName + DisplayString, + phivLineState + INTEGER, + phivLineSubstate + INTEGER, + phivLineService + INTEGER, + phivLineDevice + DisplayString, + phivLineReceiveBuffs + INTEGER, + phivLineProtocol + INTEGER, + phivLineServiceTimer + INTEGER, + phivLineMaxBlock + INTEGER + } + +phivLineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The line on which this entry's equivalence is effective. + This is the same as the ifIndex." + ::= { phivLineEntry 1 } + +phivLineName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..16)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The name of the line on this row of the table." + ::= { phivLineEntry 2 } + +phivLineState OBJECT-TYPE + SYNTAX INTEGER { + on (1), + off (2), + service (3), + cleared (4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents Network Management operational + state. + NOTE that these values are incremented by one compared to + the standard DECnet values." + ::= { phivLineEntry 3 } + +phivLineSubstate OBJECT-TYPE + SYNTAX INTEGER { + starting (1), + reflecting (2), + looping (3), + loading (4), + dumping (5), + triggering (6), + auto-service (7), + auto-loading (8), + auto-dumping (9), + auto-triggering (10), + synchronizing (11), + failed (12), + running (13) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the line's read-only Network + Management substate. + NOTE that these values are incremented by one compared to + the standard DECnet values." + ::= { phivLineEntry 4 } + +phivLineService OBJECT-TYPE + SYNTAX INTEGER { + starting (1), + reflecting (2), + looping (3), + other (4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the line's read-only Network + Management service. + NOTE that these values are incremented by one compared to + the standard DECnet values and OTHER is a new addition." + ::= { phivLineEntry 5 } + +phivLineDevice OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..16)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Physical Link device to be + used on the line." + ::= { phivLineEntry 6 } + +phivLineReceiveBuffs OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the number of receive buffers + reserved for the line. It is a decimal number in + the range 0-65535. 0 is supported for those vendors + that do not reserve buffers on a per line basis and + use a pool of buffers that can be used by any line." + ::= { phivLineEntry 7 } + +phivLineProtocol OBJECT-TYPE + SYNTAX INTEGER { + ddcmp-point (1), + ddcmp-control (2), + ddcmp-tributary (3), + reserved (4), + ddcmp-dmc (5), + olapb (6), + ethernet (7), + ci (8), + qp2 (9), + other (14), + fddi (15) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the protocol used on the line + device. Note that these values are incremented by + one compared to the standard DECnet values." + ::= { phivLineEntry 8 } + +phivLineServiceTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the amount of time in + milliseconds allowed to elapse before a Data Link + receive request completes while doing service + operations." + ::= { phivLineEntry 9 } + +phivLineMaxBlock OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Data Link maximum block + size on the line." + ::= { phivLineEntry 10 } + +-- Non Broadcast Line Group + +-- The implementation of the Non Broadcast Line Group is optional. +-- A system can be said to implement this group if and only if +-- all objects in this group are implemented. + +phivNonBroadcastTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivNonBroadcastEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The Non Broadcast Table." + ::= { nonBroadcastLine 1 } + +phivNonBroadcastEntry OBJECT-TYPE + SYNTAX PhivNonBroadcastEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "There is one entry in the table for each + Non Broadcast line." + INDEX { phivNonBroadcastIndex } + ::= { phivNonBroadcastTable 1 } + +PhivNonBroadcastEntry ::= + SEQUENCE { + phivNonBroadcastIndex + InterfaceIndex, + phivNonBroadcastController + INTEGER, + phivNonBroadcastDuplex + INTEGER, + phivNonBroadcastClock + INTEGER, + phivNonBroadcastRetransmitTimer + INTEGER + } + +phivNonBroadcastIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Non Broadcast line on which this entry's + equivalence is effective. This is the same value + as the ifIndex." + ::= { phivNonBroadcastEntry 1 } + +phivNonBroadcastController OBJECT-TYPE + SYNTAX INTEGER { + normal (1), + loopback (2), + other (3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Physical Link hardware + controller mode for the line device. The values + for controller-mode are: + + NORMAL For normal controller operating mode. + + LOOPBACK For software controllable loopback of the + controller. On those devices that can support this + mode, it causes all transmitted messages to be looped + back from within the controller itself. This is + accomplished without any manual intervention other + than the setting of this parameter value. + + OTHER indicates function is not supported + Note that these values are incremented by one compared to + the standard DECnet values." + ::= { phivNonBroadcastEntry 2 } + +phivNonBroadcastDuplex OBJECT-TYPE + SYNTAX INTEGER { + full (1), + half (2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Physical Link hardware + duplex mode of the line device. The possible modes + are: + + FULL Full-duplex + HALF Half-duplex + + Note that these values are incremented by one compared to + the standard DECnet values." + ::= { phivNonBroadcastEntry 3 } + +phivNonBroadcastClock OBJECT-TYPE + SYNTAX INTEGER { + external (1), + internal (2), + other (3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents the Physical Link hardware clock + mode for the line device. The values for clock-mode are: + INTERNAL For software controllable loopback use of + the clock. On those devices that can support this + mode, it causes the device to supply a clock signal + such that a transmitted messages can be looped + back from outside the device. This may require manual + intervention other than the setting of this parameter + value. For example, the operator may have to connect + a loopback plug in place of the normal line. + + EXTERNAL For normal clock operating mode, where the + clock signal is supplied externally to the controller. + Note that these values are incremented by one compared to + the standard DECnet values." + ::= { phivNonBroadcastEntry 4 } + +phivNonBroadcastRetransmitTimer OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value represents number of milliseconds before + the Data Link retransmits a block on the line. On + half-duplex lines, this parameter is the select timer." + DEFVAL { 3000 } + ::= { phivNonBroadcastEntry 5 } + +-- Area Parameters Group + +-- The implementation of the Area Parameters Group is mandatory +-- for all systems which implement level 2 routing. + +phivAreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF PhivAreaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table of information kept on all areas known to + this unit." + ::= { area 1 } + +phivAreaEntry OBJECT-TYPE + SYNTAX PhivAreaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The area routing information." + INDEX { phivAreaNum } + ::= { phivAreaTable 1 } + +PhivAreaEntry ::= + SEQUENCE { + phivAreaNum + INTEGER, + phivAreaState + INTEGER, + phivAreaCost + Gauge, + phivAreaHops + INTEGER, + phivAreaNextNode + PhivAddr, + phivAreaCircuitIndex + INTEGER + } + +phivAreaNum OBJECT-TYPE + SYNTAX INTEGER (0..64) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value indicates the area number of this entry." + ::= { phivAreaEntry 1 } + +phivAreaState OBJECT-TYPE + SYNTAX INTEGER { + reachable (4), + unreachable (5) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value indicates the state of the area" + ::= { phivAreaEntry 2 } + +phivAreaCost OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total cost over the current path to the + destination area. Cost is a value associated with + using a circuit. Routing routes messages (data) + along the path between 2 areas with the smallest + cost." + ::= { phivAreaEntry 3 } + +phivAreaHops OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hops to a destination area. A hop is + the routing value representing the logical distance + between two areas in network." + ::= { phivAreaEntry 4 } + +phivAreaNextNode OBJECT-TYPE + SYNTAX PhivAddr -- OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The next node on the circuit used to get to the + area under scrutiny." + ::= { phivAreaEntry 5 } + +phivAreaCircuitIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique index value for each known circuit." + ::= { phivAreaEntry 6 } + +-- Additional Area Parameters + +phivAreaMaxCost OBJECT-TYPE + SYNTAX INTEGER (1..1022) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum total path cost + allowed from the executor to any other level 2 routing + node. The AREA MAXIMUM COST number is decimal in the + range 1-1022. This parameter is only applicable if + the executor node is of type AREA." + ::= { area 2 } + +phivAreaMaxHops OBJECT-TYPE + SYNTAX INTEGER (1..30) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the maximum number of routing hops + allowable from the executor to any other level 2 + routing node. This parameter is only applicable if the + executor node is of type AREA." + ::= { area 3 } + +phivRouteMaxArea OBJECT-TYPE + SYNTAX INTEGER (1..63) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This value represents the largest area number and, + therefore, number of areas that can be known about + by the executor node's Routing. This parameter is only + applicable if the executor node is of type AREA." + ::= { area 4 } + + END diff --git a/mibs/ietf/DIAL-CONTROL-MIB b/mibs/ietf/DIAL-CONTROL-MIB new file mode 100644 index 0000000..0d25b33 --- /dev/null +++ b/mibs/ietf/DIAL-CONTROL-MIB @@ -0,0 +1,1267 @@ +DIAL-CONTROL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + NOTIFICATION-TYPE, + OBJECT-TYPE, + Unsigned32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + DisplayString, + TimeStamp, + RowStatus + FROM SNMPv2-TC + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF + IANAifType + FROM IANAifType-MIB + ifOperStatus, + ifIndex, + InterfaceIndex, + InterfaceIndexOrZero + FROM IF-MIB + transmission + FROM RFC1213-MIB; + +dialControlMib MODULE-IDENTITY + LAST-UPDATED "9609231544Z" -- Sep 23, 1996 + ORGANIZATION "IETF ISDN Working Group" + CONTACT-INFO + " Guenter Roeck + Postal: cisco Systems + 170 West Tasman Drive + San Jose, CA 95134 + U.S.A. + Phone: +1 408 527 3143 + E-mail: groeck@cisco.com" + DESCRIPTION + "The MIB module to describe peer information for + demand access and possibly other kinds of interfaces." + ::= { transmission 21 } + +AbsoluteCounter32 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a Counter32-like value that starts at zero, + does not decrease, and does not wrap. This may be used + only in situations where wrapping is not possible or + extremely unlikely. Should such a counter overflow, + it locks at the maxium value of 4,294,967,295. + + The primary use of this type of counter is situations + where a counter value is to be recorded as history + and is thus no longer subject to reading for changing + values." + SYNTAX Unsigned32 + +-- Dial Control Mib objects definitions + +dialControlMibObjects OBJECT IDENTIFIER ::= { dialControlMib 1 } + +-- General configuration group + +dialCtlConfiguration OBJECT IDENTIFIER ::= { dialControlMibObjects 1 } + +-- general configuration data/parameters + +dialCtlAcceptMode OBJECT-TYPE + SYNTAX INTEGER { + acceptNone(1), + acceptAll(2), + acceptKnown(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The security level for acceptance of incoming calls. + acceptNone(1) - incoming calls will not be accepted + acceptAll(2) - incoming calls will be accepted, + even if there is no matching entry + in the dialCtlPeerCfgTable + acceptKnown(3) - incoming calls will be accepted only + if there is a matching entry in the + dialCtlPeerCfgTable + " + ::= { dialCtlConfiguration 1 } + +dialCtlTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether dialCtlPeerCallInformation + and dialCtlPeerCallSetup traps should be generated for + all peers. If the value of this object is enabled(1), + traps will be generated for all peers. If the value + of this object is disabled(2), traps will be generated + only for peers having dialCtlPeerCfgTrapEnable set + to enabled(1)." + DEFVAL { disabled } + ::= { dialCtlConfiguration 2 } + + +-- Peer group + +dialCtlPeer OBJECT IDENTIFIER ::= { dialControlMibObjects 2 } + +-- peer configuration table + +dialCtlPeerCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF DialCtlPeerCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of peers from which the managed device + will accept calls or to which it will place them." + ::= { dialCtlPeer 1 } + +dialCtlPeerCfgEntry OBJECT-TYPE + SYNTAX DialCtlPeerCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration data for a single Peer. This entry is + effectively permanent, and contains information + to identify the peer, how to connect to the peer, + how to identify the peer and its permissions. + The value of dialCtlPeerCfgOriginateAddress must be + specified before a new row in this table can become + active(1). Any writeable parameters in an existing entry + can be modified while the entry is active. The modification + will take effect when the peer in question will be + called the next time. + An entry in this table can only be created if the + associated ifEntry already exists." + INDEX { dialCtlPeerCfgId, ifIndex } + ::= { dialCtlPeerCfgTable 1 } + +DialCtlPeerCfgEntry ::= SEQUENCE { + dialCtlPeerCfgId INTEGER, + dialCtlPeerCfgIfType IANAifType, + dialCtlPeerCfgLowerIf InterfaceIndexOrZero, + dialCtlPeerCfgOriginateAddress DisplayString, + dialCtlPeerCfgAnswerAddress DisplayString, + dialCtlPeerCfgSubAddress DisplayString, + dialCtlPeerCfgClosedUserGroup DisplayString, + dialCtlPeerCfgSpeed INTEGER, + dialCtlPeerCfgInfoType INTEGER, + dialCtlPeerCfgPermission INTEGER, + dialCtlPeerCfgInactivityTimer INTEGER, + dialCtlPeerCfgMinDuration INTEGER, + dialCtlPeerCfgMaxDuration INTEGER, + dialCtlPeerCfgCarrierDelay INTEGER, + dialCtlPeerCfgCallRetries INTEGER, + dialCtlPeerCfgRetryDelay INTEGER, + dialCtlPeerCfgFailureDelay INTEGER, + dialCtlPeerCfgTrapEnable INTEGER, + dialCtlPeerCfgStatus RowStatus + } + +dialCtlPeerCfgId OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies a single peer. There may + be several entries in this table for one peer, + defining different ways of reaching this peer. + Thus, there may be several entries in this table + with the same value of dialCtlPeerCfgId. + Multiple entries for one peer may be used to support + multilink as well as backup lines. + A single peer will be identified by a unique value + of this object. Several entries for one peer MUST + have the same value of dialCtlPeerCfgId, but different + ifEntries and thus different values of ifIndex." + ::= { dialCtlPeerCfgEntry 1 } + +dialCtlPeerCfgIfType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interface type to be used for calling this peer. + In case of ISDN, the value of isdn(63) is to be used." + DEFVAL { other } + ::= { dialCtlPeerCfgEntry 2 } + +dialCtlPeerCfgLowerIf OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "ifIndex value of an interface the peer will have to be + called on. For example, on an ISDN interface, this can be + the ifIndex value of a D channel or the ifIndex value of a + B channel, whatever is appropriate for a given peer. + As an example, for Basic Rate leased lines it will be + necessary to specify a B channel ifIndex, while for + semi-permanent connections the D channel ifIndex has + to be specified. + If the interface can be dynamically assigned, this object + has a value of zero." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 3 } + +dialCtlPeerCfgOriginateAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Call Address at which the peer will be called. + Think of this as the set of characters following 'ATDT ' + or the 'phone number' included in a D channel call request. + + The structure of this information will be switch type + specific. If there is no address information required + for reaching the peer, i.e., for leased lines, + this object will be a zero length string." + ::= { dialCtlPeerCfgEntry 4 } + +dialCtlPeerCfgAnswerAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Calling Party Number information element, as for example + passed in an ISDN SETUP message by a PBX or switch, + for incoming calls. + This address can be used to identify the peer. + If this address is either unknown or identical + to dialCtlPeerCfgOriginateAddress, this object will be + a zero length string." + DEFVAL { "" } + ::= { dialCtlPeerCfgEntry 5 } + +dialCtlPeerCfgSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Subaddress at which the peer will be called. + If the subaddress is undefined for the given media or + unused, this is a zero length string." + DEFVAL { "" } + ::= { dialCtlPeerCfgEntry 6 } + +dialCtlPeerCfgClosedUserGroup OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Closed User Group at which the peer will be called. + If the Closed User Group is undefined for the given media + or unused, this is a zero length string." + REFERENCE + "Q.931, chapter 4.6.1." + DEFVAL { "" } + ::= { dialCtlPeerCfgEntry 7 } + +dialCtlPeerCfgSpeed OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired information transfer speed in bits/second + when calling this peer. + The detailed media specific information, e.g. information + type and information transfer rate for ISDN circuits, + has to be extracted from this object. + If the transfer speed to be used is unknown or the default + speed for this type of interfaces, the value of this object + may be zero." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 8 } + +dialCtlPeerCfgInfoType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + speech(2), + unrestrictedDigital(3), -- 64k/s data + unrestrictedDigital56(4), -- with 56k rate adaption + restrictedDigital(5), + audio31(6), -- 3.1 kHz audio + audio7(7), -- 7 kHz audio + video(8), + packetSwitched(9), + fax(10) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Information Transfer Capability to be used when + calling this peer. + + speech(2) refers to a non-data connection, whereas + audio31(6) and audio7(7) refer to data mode + connections." + DEFVAL { other } + ::= { dialCtlPeerCfgEntry 9 } + +dialCtlPeerCfgPermission OBJECT-TYPE + SYNTAX INTEGER { + originate(1), + answer(2), + both(3), -- both originate & answer + callback(4), + none(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable permissions. callback(4) either rejects the + call and then calls back, or uses the 'Reverse charging' + information element if it is available. + Note that callback(4) is supposed to control charging, not + security, and applies to callback prior to accepting a + call. Callback for security reasons can be handled using + PPP callback." + DEFVAL { both } + ::= { dialCtlPeerCfgEntry 10 } + +dialCtlPeerCfgInactivityTimer OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The connection will be automatically disconnected + if no longer carrying useful data for a time + period, in seconds, specified in this object. + Useful data in this context refers to forwarding + packets, including routing information; it + excludes the encapsulator maintenance frames. + A value of zero means the connection will not be + automatically taken down due to inactivity, + which implies that it is a dedicated circuit." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 11 } + +dialCtlPeerCfgMinDuration OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum duration of a call in seconds, starting from the + time the call is connected until the call is disconnected. + This is to accomplish the fact that in most countries + charging applies to units of time, which should be matched + as closely as possible." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 12 } + +dialCtlPeerCfgMaxDuration OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum call duration in seconds. Zero means 'unlimited'." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 13 } + +dialCtlPeerCfgCarrierDelay OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The call timeout time in seconds. The default value + of zero means that the call timeout as specified for + the media in question will apply." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 14 } + +dialCtlPeerCfgCallRetries OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of calls to a non-responding address + that may be made. A retry count of zero means + there is no bound. The intent is to bound + the number of successive calls to an address + which is inaccessible, or which refuses those calls. + + Some countries regulate the number of call retries + to a given peer that can be made." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 15 } + +dialCtlPeerCfgRetryDelay OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time in seconds between call retries if a peer + cannot be reached. + A value of zero means that call retries may be done + without any delay." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 16 } + +dialCtlPeerCfgFailureDelay OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time in seconds after which call attempts are + to be placed again after a peer has been noticed + to be unreachable, i.e. after dialCtlPeerCfgCallRetries + unsuccessful call attempts. + A value of zero means that a peer will not be called + again after dialCtlPeerCfgCallRetries unsuccessful call + attempts." + DEFVAL { 0 } + ::= { dialCtlPeerCfgEntry 17 } + +dialCtlPeerCfgTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether dialCtlPeerCallInformation + and dialCtlPeerCallSetup traps should be generated for + this peer." + DEFVAL { disabled } + ::= { dialCtlPeerCfgEntry 18 } + +dialCtlPeerCfgStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Status of one row in this table." + ::= { dialCtlPeerCfgEntry 19 } + +-- Peer statistics table + +dialCtlPeerStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DialCtlPeerStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics information for each peer entry. + There will be one entry in this table for each entry + in the dialCtlPeerCfgTable." + ::= { dialCtlPeer 2 } + +dialCtlPeerStatsEntry OBJECT-TYPE + SYNTAX DialCtlPeerStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics information for a single Peer. This entry + is effectively permanent, and contains information + describing the last call attempt as well as supplying + statistical information." + AUGMENTS { dialCtlPeerCfgEntry } + ::= { dialCtlPeerStatsTable 1 } + +DialCtlPeerStatsEntry ::= + SEQUENCE { + dialCtlPeerStatsConnectTime AbsoluteCounter32, + dialCtlPeerStatsChargedUnits AbsoluteCounter32, + dialCtlPeerStatsSuccessCalls AbsoluteCounter32, + dialCtlPeerStatsFailCalls AbsoluteCounter32, + dialCtlPeerStatsAcceptCalls AbsoluteCounter32, + dialCtlPeerStatsRefuseCalls AbsoluteCounter32, + dialCtlPeerStatsLastDisconnectCause OCTET STRING, + dialCtlPeerStatsLastDisconnectText DisplayString, + dialCtlPeerStatsLastSetupTime TimeStamp + } + +dialCtlPeerStatsConnectTime OBJECT-TYPE + SYNTAX AbsoluteCounter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Accumulated connect time to the peer since system startup. + This is the total connect time, i.e. the connect time + for outgoing calls plus the time for incoming calls." + ::= { dialCtlPeerStatsEntry 1 } + +dialCtlPeerStatsChargedUnits OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of charging units applying to this + peer since system startup. + Only the charging units applying to the local interface, + i.e. for originated calls or for calls with 'Reverse + charging' being active, will be counted here." + ::= { dialCtlPeerStatsEntry 2 } + +dialCtlPeerStatsSuccessCalls OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of completed calls to this peer." + ::= { dialCtlPeerStatsEntry 3 } + +dialCtlPeerStatsFailCalls OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of failed call attempts to this peer since system + startup." + ::= { dialCtlPeerStatsEntry 4 } + +dialCtlPeerStatsAcceptCalls OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from this peer accepted since system + startup." + ::= { dialCtlPeerStatsEntry 5 } + +dialCtlPeerStatsRefuseCalls OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from this peer refused since system + startup." + ::= { dialCtlPeerStatsEntry 6 } + +dialCtlPeerStatsLastDisconnectCause OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The encoded network cause value associated with the last + call. + This object will be updated whenever a call is started + or cleared. + The value of this object will depend on the interface type + as well as on the protocol and protocol version being + used on this interface. Some references for possible cause + values are given below." + REFERENCE + "- Bellcore SR-NWT-001953, Generic Guidelines for + ISDN Terminal Equipment On Basic Access Interfaces, + chapter 5.2.5.8. + - Bellcore SR-NWT-002343, ISDN Primary Rate Interface + Generic Guidelines for Customer Premises Equipment, + chapter 8.2.5.8. + - ITU-T Q.931, Appendix I. + - ITU-T X.25, CAUSE and DIAGNOSTIC field values. + - German Telekom FTZ 1TR6, chapter 3.2.3.4.4.4." + ::= { dialCtlPeerStatsEntry 7 } + +dialCtlPeerStatsLastDisconnectText OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ASCII text describing the reason for the last call + termination. + This object exists because it would be impossible for + a management station to store all possible cause values + for all types of interfaces. It should be used only if + a management station is unable to decode the value of + dialCtlPeerStatsLastDisconnectCause. + + This object will be updated whenever a call is started + or cleared." + ::= { dialCtlPeerStatsEntry 8 } + +dialCtlPeerStatsLastSetupTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last call to this peer + was started. + For ISDN media, this will be the time when the setup + message was received from or sent to the network. + This object will be updated whenever a call is started + or cleared." + ::= { dialCtlPeerStatsEntry 9 } + +-- +-- the active call group +-- + +callActive OBJECT IDENTIFIER ::= { dialControlMibObjects 3 } + +-- callActiveTable +-- Table to store active call information. +-- These calls could be circuit switched or they could +-- be virtual circuits. +-- An entry will be created when a call is started and deleted +-- when a call is cleared. + +callActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF CallActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about active + calls to a specific destination." + ::= { callActive 1 } + +callActiveEntry OBJECT-TYPE + SYNTAX CallActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single active Connection. + An entry in this table will be created when a call is + started. An entry in this table will be deleted when + an active call clears." + INDEX { callActiveSetupTime, callActiveIndex } + ::= { callActiveTable 1 } + + +CallActiveEntry ::= + SEQUENCE { + callActiveSetupTime TimeStamp, + callActiveIndex INTEGER, + callActivePeerAddress DisplayString, + callActivePeerSubAddress DisplayString, + callActivePeerId INTEGER, + callActivePeerIfIndex INTEGER, + callActiveLogicalIfIndex InterfaceIndexOrZero, + callActiveConnectTime TimeStamp, + callActiveCallState INTEGER, + callActiveCallOrigin INTEGER, + callActiveChargedUnits AbsoluteCounter32, + callActiveInfoType INTEGER, + callActiveTransmitPackets AbsoluteCounter32, + callActiveTransmitBytes AbsoluteCounter32, + callActiveReceivePackets AbsoluteCounter32, + callActiveReceiveBytes AbsoluteCounter32 + } + +callActiveSetupTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of sysUpTime when the call associated to this + entry was started. This will be useful for an NMS to + retrieve all calls after a specific time. Also, this object + can be useful in finding large delays between the time the + call was started and the time the call was connected. + For ISDN media, this will be the time when the setup + message was received from or sent to the network." + ::= { callActiveEntry 1 } + +callActiveIndex OBJECT-TYPE + SYNTAX INTEGER (1..'7fffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Small index variable to distinguish calls that start in + the same hundredth of a second." + ::= { callActiveEntry 2 } + +callActivePeerAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number this call is connected to. If the number is + not available, then it will have a length of zero." + ::= { callActiveEntry 3 } + +callActivePeerSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subaddress this call is connected to. If the subaddress + is undefined or not available, this will be a zero length + string." + ::= { callActiveEntry 4 } + +callActivePeerId OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the Id value of the peer table entry + to which this call was made. If a peer table entry + for this call does not exist or is unknown, the value + of this object will be zero." + ::= { callActiveEntry 5 } + +callActivePeerIfIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the ifIndex value of the peer table entry + to which this call was made. If a peer table entry + for this call does not exist or is unknown, the value + of this object will be zero." + ::= { callActiveEntry 6 } + +callActiveLogicalIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the ifIndex value of the logical interface through + which this call was made. For ISDN media, this would be + the ifIndex of the B channel which was used for this call. + If the ifIndex value is unknown, the value of this object + will be zero." + ::= { callActiveEntry 7 } + +callActiveConnectTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the call was connected. + If the call is not connected, this object will have a + value of zero." + ::= { callActiveEntry 8 } + +callActiveCallState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + connecting(2), + connected(3), + active(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current call state. + unknown(1) - The call state is unknown. + connecting(2) - A connection attempt (outgoing call) + is being made. + connected(3) - An incoming call is in the process + of validation. + active(4) - The call is active. + " + ::= { callActiveEntry 9 } + +callActiveCallOrigin OBJECT-TYPE + SYNTAX INTEGER { + originate(1), + answer(2), + callback(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The call origin." + ::= { callActiveEntry 10 } + +callActiveChargedUnits OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of charged units for this connection. + For incoming calls or if charging information is + not supplied by the switch, the value of this object + will be zero." + ::= { callActiveEntry 11 } + +callActiveInfoType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- e.g. for non-isdn media + speech(2), + unrestrictedDigital(3), -- 64k/s data + unrestrictedDigital56(4), -- with 56k rate adaption + restrictedDigital(5), + audio31(6), -- 3.1 kHz audio + audio7(7), -- 7 kHz audio + video(8), + packetSwitched(9), + fax(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The information type for this call." + ::= { callActiveEntry 12 } + +callActiveTransmitPackets OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which were transmitted for this + call." + ::= { callActiveEntry 13 } + +callActiveTransmitBytes OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes which were transmitted for this + call." + ::= { callActiveEntry 14 } + +callActiveReceivePackets OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which were received for this + call." + ::= { callActiveEntry 15 } + +callActiveReceiveBytes OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes which were received for this call." + ::= { callActiveEntry 16 } + +-- +-- the call history group +-- + +callHistory OBJECT IDENTIFIER ::= { dialControlMibObjects 4 } + +callHistoryTableMaxLength OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit on the number of entries that the + callHistoryTable may contain. A value of 0 + will prevent any history from being retained. When + this table is full, the oldest entry will be deleted + and the new one will be created." + ::= { callHistory 1 } + +callHistoryRetainTimer OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum amount of time that an callHistoryEntry + will be maintained before being deleted. A value of + 0 will prevent any history from being retained in the + callHistoryTable, but will neither prevent callCompletion + traps being generated nor affect other tables." + ::= { callHistory 2 } + +-- callHistoryTable +-- Table to store the past call information. The Destination number +-- and the call connect and disconnect time, the disconnection cause +-- are stored. These calls could be circuit switched or they could +-- be virtual circuits. History of each and every call is stored, +-- of successful calls as well as of unsuccessful and rejected calls. +-- An entry will be created when a call is cleared. + +callHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF CallHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about specific + calls to a specific destination." + ::= { callHistory 3 } + +callHistoryEntry OBJECT-TYPE + SYNTAX CallHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single Connection." + INDEX { callActiveSetupTime, callActiveIndex } + ::= { callHistoryTable 1 } + + +CallHistoryEntry ::= + SEQUENCE { + callHistoryPeerAddress DisplayString, + callHistoryPeerSubAddress DisplayString, + callHistoryPeerId INTEGER, + callHistoryPeerIfIndex INTEGER, + callHistoryLogicalIfIndex InterfaceIndex, + callHistoryDisconnectCause OCTET STRING, + callHistoryDisconnectText DisplayString, + callHistoryConnectTime TimeStamp, + callHistoryDisconnectTime TimeStamp, + callHistoryCallOrigin INTEGER, + callHistoryChargedUnits AbsoluteCounter32, + callHistoryInfoType INTEGER, + callHistoryTransmitPackets AbsoluteCounter32, + callHistoryTransmitBytes AbsoluteCounter32, + callHistoryReceivePackets AbsoluteCounter32, + callHistoryReceiveBytes AbsoluteCounter32 + } + +callHistoryPeerAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number this call was connected to. If the number is + not available, then it will have a length of zero." + ::= { callHistoryEntry 1 } + +callHistoryPeerSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subaddress this call was connected to. If the subaddress + is undefined or not available, this will be a zero length + string." + ::= { callHistoryEntry 2 } + +callHistoryPeerId OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the Id value of the peer table entry + to which this call was made. If a peer table entry + for this call does not exist, the value of this object + will be zero." + ::= { callHistoryEntry 3 } + +callHistoryPeerIfIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the ifIndex value of the peer table entry + to which this call was made. If a peer table entry + for this call does not exist, the value of this object + will be zero." + ::= { callHistoryEntry 4 } + +callHistoryLogicalIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the ifIndex value of the logical interface through + which this call was made. For ISDN media, this would be + the ifIndex of the B channel which was used for this call." + ::= { callHistoryEntry 5 } + +callHistoryDisconnectCause OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The encoded network cause value associated with this call. + + The value of this object will depend on the interface type + as well as on the protocol and protocol version being + used on this interface. Some references for possible cause + values are given below." + REFERENCE + "- Bellcore SR-NWT-001953, Generic Guidelines for + ISDN Terminal Equipment On Basic Access Interfaces, + chapter 5.2.5.8. + - Bellcore SR-NWT-002343, ISDN Primary Rate Interface + Generic Guidelines for Customer Premises Equipment, + chapter 8.2.5.8. + - ITU-T Q.931, Appendix I. + - ITU-T X.25, CAUSE and DIAGNOSTIC field values. + - German Telekom FTZ 1TR6, chapter 3.2.3.4.4.4." + ::= { callHistoryEntry 6 } + +callHistoryDisconnectText OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ASCII text describing the reason for call termination. + + This object exists because it would be impossible for + a management station to store all possible cause values + for all types of interfaces. It should be used only if + a management station is unable to decode the value of + dialCtlPeerStatsLastDisconnectCause." + ::= { callHistoryEntry 7 } + +callHistoryConnectTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the call was connected." + ::= { callHistoryEntry 8 } + +callHistoryDisconnectTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the call was disconnected." + ::= { callHistoryEntry 9 } + +callHistoryCallOrigin OBJECT-TYPE + SYNTAX INTEGER { + originate(1), + answer(2), + callback(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The call origin." + ::= { callHistoryEntry 10 } + +callHistoryChargedUnits OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of charged units for this connection. + For incoming calls or if charging information is + not supplied by the switch, the value of this object + will be zero." + ::= { callHistoryEntry 11 } + +callHistoryInfoType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- e.g. for non-isdn media + speech(2), + unrestrictedDigital(3), -- 64k/s data + unrestrictedDigital56(4), -- with 56k rate adaption + restrictedDigital(5), + audio31(6), -- 3.1 kHz audio + audio7(7), -- 7 kHz audio + video(8), + packetSwitched(9), + fax(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The information type for this call." + ::= { callHistoryEntry 12 } + +callHistoryTransmitPackets OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which were transmitted while this + call was active." + ::= { callHistoryEntry 13 } + +callHistoryTransmitBytes OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes which were transmitted while this + call was active." + ::= { callHistoryEntry 14 } + +callHistoryReceivePackets OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which were received while this + call was active." + ::= { callHistoryEntry 15 } + +callHistoryReceiveBytes OBJECT-TYPE + SYNTAX AbsoluteCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes which were received while this + call was active." + ::= { callHistoryEntry 16 } + +-- Traps related to Connection management + +dialControlMibTrapPrefix OBJECT IDENTIFIER ::= { dialControlMib 2 } +dialControlMibTraps OBJECT IDENTIFIER ::= { dialControlMibTrapPrefix 0 } + +dialCtlPeerCallInformation NOTIFICATION-TYPE + OBJECTS { + callHistoryPeerId, + callHistoryPeerIfIndex, + callHistoryLogicalIfIndex, + ifOperStatus, + callHistoryPeerAddress, + callHistoryPeerSubAddress, + callHistoryDisconnectCause, + callHistoryConnectTime, + callHistoryDisconnectTime, + callHistoryInfoType, + callHistoryCallOrigin + } + STATUS current + DESCRIPTION + "This trap/inform is sent to the manager whenever + a successful call clears, or a failed call attempt + is determined to have ultimately failed. In the + event that call retry is active, then this is after + all retry attempts have failed. However, only one such + trap is sent in between successful call attempts; + subsequent call attempts result in no trap. + ifOperStatus will return the operational status of the + virtual interface associated with the peer to whom + this call was made to." + ::= { dialControlMibTraps 1 } + +dialCtlPeerCallSetup NOTIFICATION-TYPE + OBJECTS { + callActivePeerId, + callActivePeerIfIndex, + callActiveLogicalIfIndex, + ifOperStatus, + callActivePeerAddress, + callActivePeerSubAddress, + callActiveInfoType, + callActiveCallOrigin + } + STATUS current + DESCRIPTION + "This trap/inform is sent to the manager whenever + a call setup message is received or sent. + ifOperStatus will return the operational status of the + virtual interface associated with the peer to whom + this call was made to." + ::= { dialControlMibTraps 2 } + +-- conformance information +dialControlMibConformance OBJECT IDENTIFIER ::= + { dialControlMib 3 } +dialControlMibCompliances OBJECT IDENTIFIER ::= + { dialControlMibConformance 1 } +dialControlMibGroups OBJECT IDENTIFIER ::= + { dialControlMibConformance 2 } + +-- compliance statements + +dialControlMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which + implement the DIAL CONTROL MIB" + MODULE -- this module + MANDATORY-GROUPS + { dialControlGroup, callActiveGroup, callHistoryGroup, + callNotificationsGroup } + ::= { dialControlMibCompliances 1 } + +-- units of conformance + +dialControlGroup OBJECT-GROUP + OBJECTS { + dialCtlAcceptMode, + dialCtlTrapEnable, + dialCtlPeerCfgIfType, + dialCtlPeerCfgLowerIf, + dialCtlPeerCfgOriginateAddress, + dialCtlPeerCfgAnswerAddress, + dialCtlPeerCfgSubAddress, + dialCtlPeerCfgClosedUserGroup, + dialCtlPeerCfgSpeed, + dialCtlPeerCfgInfoType, + dialCtlPeerCfgPermission, + dialCtlPeerCfgInactivityTimer, + dialCtlPeerCfgMinDuration, + dialCtlPeerCfgMaxDuration, + dialCtlPeerCfgCarrierDelay, + dialCtlPeerCfgCallRetries, + dialCtlPeerCfgRetryDelay, + dialCtlPeerCfgFailureDelay, + dialCtlPeerCfgTrapEnable, + dialCtlPeerCfgStatus, + dialCtlPeerStatsConnectTime, + dialCtlPeerStatsChargedUnits, + dialCtlPeerStatsSuccessCalls, + dialCtlPeerStatsFailCalls, + dialCtlPeerStatsAcceptCalls, + dialCtlPeerStatsRefuseCalls, + dialCtlPeerStatsLastDisconnectCause, + dialCtlPeerStatsLastDisconnectText, + dialCtlPeerStatsLastSetupTime + } + STATUS current + DESCRIPTION + "A collection of objects providing the DIAL CONTROL + capability." + ::= { dialControlMibGroups 1 } + +callActiveGroup OBJECT-GROUP + OBJECTS { + callActivePeerAddress, + callActivePeerSubAddress, + callActivePeerId, + callActivePeerIfIndex, + callActiveLogicalIfIndex, + callActiveConnectTime, + callActiveCallState, + callActiveCallOrigin, + callActiveChargedUnits, + callActiveInfoType, + callActiveTransmitPackets, + callActiveTransmitBytes, + callActiveReceivePackets, + callActiveReceiveBytes + } + STATUS current + DESCRIPTION + "A collection of objects providing the active call + capability." + ::= { dialControlMibGroups 2 } + +callHistoryGroup OBJECT-GROUP + OBJECTS { + callHistoryTableMaxLength, + callHistoryRetainTimer, + callHistoryPeerAddress, + callHistoryPeerSubAddress, + callHistoryPeerId, + callHistoryPeerIfIndex, + callHistoryLogicalIfIndex, + callHistoryDisconnectCause, + callHistoryDisconnectText, + callHistoryConnectTime, + callHistoryDisconnectTime, + callHistoryCallOrigin, + callHistoryChargedUnits, + callHistoryInfoType, + callHistoryTransmitPackets, + callHistoryTransmitBytes, + callHistoryReceivePackets, + callHistoryReceiveBytes + } + STATUS current + DESCRIPTION + "A collection of objects providing the Call History + capability." + ::= { dialControlMibGroups 3 } + +callNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { dialCtlPeerCallInformation, dialCtlPeerCallSetup } + STATUS current + DESCRIPTION + "The notifications which a Dial Control MIB entity is + required to implement." + ::= { dialControlMibGroups 4 } + + +END diff --git a/mibs/ietf/DIFFSERV-CONFIG-MIB b/mibs/ietf/DIFFSERV-CONFIG-MIB new file mode 100644 index 0000000..b6b2167 --- /dev/null +++ b/mibs/ietf/DIFFSERV-CONFIG-MIB @@ -0,0 +1,258 @@ +DIFFSERV-CONFIG-MIB DEFINITIONS ::= BEGIN + IMPORTS + + OBJECT-TYPE, MODULE-IDENTITY, + zeroDotZero, mib-2 FROM SNMPv2-SMI -- [RFC2578] + + RowStatus, StorageType, + RowPointer, DateAndTime FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + + + + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; -- [RFC3411] + +diffServConfigMib MODULE-IDENTITY + LAST-UPDATED "200401220000Z" -- 22 January 2004 + ORGANIZATION "SNMPCONF WG" + CONTACT-INFO + "SNMPCONF Working Group + http://www.ietf.org/html.charters/snmpconf-charter.html + WG mailing list: snmpconf@snmp.com + + Editors: + Harrie Hazewinkel + I.Net + via Darwin 85 + 20019 - Settimo Milanese (MI) + Italy + EMail: harrie@inet.it + + David Partain + Ericsson AB + P.O. Box 1248 + SE-581 12 Linkoping + Sweden + E-mail: David.Partain@ericsson.com" + DESCRIPTION + "This MIB module contains differentiated services + specific managed objects to perform higher-level + configuration management. This MIB allows policies + to use 'templates' to instantiate Differentiated + Services functional datapath configurations to + be assigned (associated with an interface and + direction) when a policy is activated. + + Copyright (C) The Internet Society (2004). This version + of this MIB module is part of RFC 3747; see the RFC + itself for full legal notices." + REVISION "200401220000Z" -- 22 January 2004 + DESCRIPTION + "Initial version published as RFC 3747" + ::= { mib-2 108 } + +diffServConfigMIBObjects OBJECT IDENTIFIER ::= { diffServConfigMib 1 } +diffServConfigMIBConformance OBJECT IDENTIFIER ::= + { diffServConfigMib 2 } + +-- +-- The Differentiated Services configuration objects +-- + + + +diffServConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table which defines the various per-hop-behaviors + for which the system has default 'templates'." + ::= { diffServConfigMIBObjects 2 } + +diffServConfigEntry OBJECT-TYPE + SYNTAX DiffServConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry defining a per-hop-behavior. Each entry in + this table combines the various parameters (entries) + into a specific per-hop-behavior. Entries in this + table might be defined by a vendor (pre-configured) + or defined by a management application." + INDEX { diffServConfigId } + ::= { diffServConfigTable 1 } + +DiffServConfigEntry ::= SEQUENCE { + diffServConfigId SnmpAdminString, + diffServConfigDescr SnmpAdminString, + diffServConfigOwner SnmpAdminString, + diffServConfigLastChange DateAndTime, + diffServConfigStart RowPointer, + diffServConfigStorage StorageType, + diffServConfigStatus RowStatus +} + +diffServConfigId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..116)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique id for the per-hop-behavior policy for at + least the SNMP agent. For ease of administration the + value may be unique within an administrative domain, + but this is not required. + + The range of up to 116 octets is chosen to stay within + the SMI limit of 128 sub-identifiers in an object + identifier." + ::= { diffServConfigEntry 1 } + +diffServConfigDescr OBJECT-TYPE + + + + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A human-readable description to identify this defined + per-hop-behavior. Note that this is an SnmpAdminString, + which permits UTF-8 strings. An administratively assigned + identifier for a template that would be unique within + an administrative domain. It is up to the management + applications to agree how these are assigned within the + administrative domain. Once a description, such as + 'EF' is assigned, that has a certain set of parameters + that achieve 'EF' from box to box. Management + application code or script code can then scan + the table to find the proper template and then + assign it." + ::= { diffServConfigEntry 2 } + +diffServConfigOwner OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The owner who created this entry." + ::= { diffServConfigEntry 3 } + +diffServConfigLastChange OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this entry was last changed." + ::= { diffServConfigEntry 4 } + +diffServConfigStart OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The pointer to a functional datapath configuration template as + set up in the DIFFSERV-MIB. This RowPointer should + point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + + + + A value of zeroDotZero in this attribute indicates no + further Diffserv treatment is performed on traffic of + this functional datapath. This also means that the + template described by this row is not defined. + + If the row pointed to does not exist, the treatment + is as if this attribute contains a value of zeroDotZero." + REFERENCE + "Differentiated Services MIB module" + DEFVAL { zeroDotZero } + ::= { diffServConfigEntry 5 } + +diffServConfigStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of storage used for this row. + + Since an entry in this table serves as a starting + point for a configuration, it is recommended that + all entries comprising the configuration started by + diffServConfigStart follow the storage type of this + entry. Otherwise, after agent reboots a configuration + may differ. It may very well be that the agent is + not capable of detecting such changes and therefore, + the management application should verify the correct + configuration after a reboot. Rows with a StorageType + of 'permanent' do not need to allow write access to + any of the columnar objects in that row." + DEFVAL { nonVolatile } + ::= { diffServConfigEntry 6 } + +diffServConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "RowStatus object used for creation and deletion of + rows in this table. All writable objects in this row + may be modified at any time." + DEFVAL { notInService } + ::= { diffServConfigEntry 7 } + +-- +-- MIB Compliance statements. +-- + + + + +diffServConfigMIBCompliances + OBJECT IDENTIFIER ::= { diffServConfigMIBConformance 1 } +diffServConfigMIBGroups + OBJECT IDENTIFIER ::= { diffServConfigMIBConformance 2 } + +diffServConfigMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The full compliance for this MIB module. + + For this compliance level the 'diffServMIBFullCompliance' + must be met, since this MIB module depends on it in order + to provide the configuration entries. + " + MODULE -- This module + MANDATORY-GROUPS { diffServConfigMIBConfigGroup } + + OBJECT diffServConfigStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + ::= { diffServConfigMIBCompliances 1 } + +diffServConfigMIBConfigGroup OBJECT-GROUP + OBJECTS { diffServConfigDescr, + diffServConfigOwner, + diffServConfigLastChange, + diffServConfigStart, + diffServConfigStorage, + diffServConfigStatus + } + STATUS current + DESCRIPTION + "The per-hop-behavior Group defines the MIB objects that + describe the configuration template for the per-hop-behavior." + ::= { diffServConfigMIBGroups 1 } +END diff --git a/mibs/ietf/DIFFSERV-DSCP-TC b/mibs/ietf/DIFFSERV-DSCP-TC new file mode 100644 index 0000000..041014a --- /dev/null +++ b/mibs/ietf/DIFFSERV-DSCP-TC @@ -0,0 +1,68 @@ +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/ietf/DIFFSERV-MIB b/mibs/ietf/DIFFSERV-MIB new file mode 100644 index 0000000..fabbe5f --- /dev/null +++ b/mibs/ietf/DIFFSERV-MIB @@ -0,0 +1,3704 @@ +DIFFSERV-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Counter64, MODULE-IDENTITY, OBJECT-TYPE, + OBJECT-IDENTITY, zeroDotZero, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, RowPointer, + StorageType, AutonomousType + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex, InterfaceIndexOrZero + FROM IF-MIB + InetAddressType, InetAddress, InetAddressPrefixLength, + InetPortNumber + FROM INET-ADDRESS-MIB + BurstSize + FROM INTEGRATED-SERVICES-MIB + Dscp, DscpOrAny + FROM DIFFSERV-DSCP-TC; + +diffServMib MODULE-IDENTITY + LAST-UPDATED "200202070000Z" + 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 + "This MIB defines the objects necessary to manage a device that + uses the Differentiated Services Architecture described in RFC + 2475. The Conceptual Model of a Differentiated Services Router + provides supporting information on how such a router is modeled." + REVISION "200202070000Z" + DESCRIPTION + "Initial version, published as RFC 3289." + ::= { mib-2 97 } + +diffServMIBObjects OBJECT IDENTIFIER ::= { diffServMib 1 } +diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 } +diffServMIBAdmin OBJECT IDENTIFIER ::= { diffServMib 3 } + +IndexInteger ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An integer which may be used as a table index." + SYNTAX Unsigned32 (1..4294967295) + +IndexIntegerNextFree ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An integer which may be used as a new Index in a table. + + The special value of 0 indicates that no more new entries can be + created in the relevant table. + + When a MIB is used for configuration, an object with this SYNTAX + always contains a legal value (if non-zero) for an index that is + not currently used in the relevant table. The Command Generator + (Network Management Application) reads this variable and uses the + (non-zero) value read when creating a new row with an SNMP SET. + When the SET is performed, the Command Responder (agent) must + determine whether the value is indeed still unused; Two Network + Management Applications may attempt to create a row + (configuration entry) simultaneously and use the same value. If + it is currently unused, the SET succeeds and the Command + Responder (agent) changes the value of this object, according to + an implementation-specific algorithm. If the value is in use, + + + + however, the SET fails. The Network Management Application must + then re-read this variable to obtain a new usable value. + + An OBJECT-TYPE definition using this SYNTAX MUST specify the + relevant table for which the object is providing this + functionality." + SYNTAX Unsigned32 (0..4294967295) + +IfDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "IfDirection specifies a direction of data travel on an + interface. 'inbound' traffic is operated on during reception from + the interface, while 'outbound' traffic is operated on prior to + transmission on the interface." + SYNTAX INTEGER { + inbound(1), -- ingress interface + outbound(2) -- egress interface +} + +-- +-- Data Path +-- + +diffServDataPath OBJECT IDENTIFIER ::= { diffServMIBObjects 1 } + +-- +-- Data Path Table +-- +-- The Data Path Table enumerates the Differentiated Services +-- Functional Data Paths within this device. Each entry in this table +-- is indexed by ifIndex and ifDirection. Each entry provides the +-- first Differentiated Services Functional Data Path Element to +-- process data flowing along specific data path. This table should +-- have at most two entries for each interface capable of +-- Differentiated Services processing on this device: ingress and +-- egress. + +-- Note that Differentiated Services Functional Data Path Elements +-- linked together using their individual next pointers and anchored by +-- an entry of the diffServDataPathTable constitute a functional data +-- path. +-- + +diffServDataPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServDataPathEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The data path table contains RowPointers indicating the start of + the functional data path for each interface and traffic direction + in this device. These may merge, or be separated into parallel + data paths." + ::= { diffServDataPath 1 } + +diffServDataPathEntry OBJECT-TYPE + SYNTAX DiffServDataPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the data path table indicates the start of a single + Differentiated Services Functional Data Path in this device. + + These are associated with individual interfaces, logical or + physical, and therefore are instantiated by ifIndex. Therefore, + the interface index must have been assigned, according to the + procedures applicable to that, before it can be meaningfully + used. Generally, this means that the interface must exist. + + When diffServDataPathStorage is of type nonVolatile, however, + this may reflect the configuration for an interface whose ifIndex + has been assigned but for which the supporting implementation is + not currently present." + INDEX { ifIndex, diffServDataPathIfDirection } + ::= { diffServDataPathTable 1 } + +DiffServDataPathEntry ::= SEQUENCE { + diffServDataPathIfDirection IfDirection, + diffServDataPathStart RowPointer, + diffServDataPathStorage StorageType, + diffServDataPathStatus RowStatus +} + +diffServDataPathIfDirection OBJECT-TYPE + SYNTAX IfDirection + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IfDirection specifies whether the reception or transmission path + for this interface is in view." + ::= { diffServDataPathEntry 1 } + +diffServDataPathStart OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This selects the first Differentiated Services Functional Data + Path Element to handle traffic for this data path. This + RowPointer should point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates that no + Differentiated Services treatment is performed on traffic of this + data path. A pointer with the value zeroDotZero normally + terminates a functional data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServDataPathEntry 2 } + +diffServDataPathStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServDataPathEntry 3 } + +diffServDataPathStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time." + ::= { diffServDataPathEntry 4 } + +-- +-- Classifiers +-- + +diffServClassifier OBJECT IDENTIFIER ::= { diffServMIBObjects 2 } + +-- + + + +-- Classifier Table +-- +-- The Classifier Table allows multiple classifier elements, of same or +-- different types, to be used together. A classifier must completely +-- classify all packets presented to it. This means that all traffic +-- presented to a classifier must match at least one classifier element +-- within the classifier, with the classifier element parameters +-- specified by a filter. + +-- If there is ambiguity between classifier elements of different +-- classifier, classifier linkage order indicates their precedence; the +-- first classifier in the link is applied to the traffic first. + +-- Entries in the classifier element table serves as the anchor for +-- each classification pattern, defined in filter table entries. Each +-- classifier element table entry also specifies the subsequent +-- downstream Differentiated Services Functional Data Path Element when +-- the classification pattern is satisfied. Each entry in the +-- classifier element table describes one branch of the fan-out +-- characteristic of a classifier indicated in the Informal +-- Differentiated Services Model section 4.1. A classifier is composed +-- of one or more classifier elements. + +diffServClfrNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServClfrId, or a + zero to indicate that none exist." + ::= { diffServClassifier 1 } + +diffServClfrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServClfrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table enumerates all the diffserv classifier functional + data path elements of this device. The actual classification + definitions are defined in diffServClfrElementTable entries + belonging to each classifier. + + An entry in this table, pointed to by a RowPointer specifying an + instance of diffServClfrStatus, is frequently used as the name + for a set of classifier elements, which all use the index + diffServClfrId. Per the semantics of the classifier element + table, these entries constitute one or more unordered sets of + tests which may be simultaneously applied to a message to + + + + classify it. + + The primary function of this table is to ensure that the value of + diffServClfrId is unique before attempting to use it in creating + a diffServClfrElementEntry. Therefore, the diffServClfrEntry must + be created on the same SET as the diffServClfrElementEntry, or + before the diffServClfrElementEntry is created." + ::= { diffServClassifier 2 } + +diffServClfrEntry OBJECT-TYPE + SYNTAX DiffServClfrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the classifier table describes a single classifier. + All classifier elements belonging to the same classifier use the + classifier's diffServClfrId as part of their index." + INDEX { diffServClfrId } + ::= { diffServClfrTable 1 } + +DiffServClfrEntry ::= SEQUENCE { + diffServClfrId IndexInteger, + diffServClfrStorage StorageType, + diffServClfrStatus RowStatus +} + +diffServClfrId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the classifier entries. Managers + should obtain new values for row creation in this table by + reading diffServClfrNextFree." + ::= { diffServClfrEntry 1 } + +diffServClfrStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServClfrEntry 2 } + +diffServClfrStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServClfrEntry 3 } + +-- +-- Classifier Element Table +-- +diffServClfrElementNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServClfrElementId, + or a zero to indicate that none exist." + ::= { diffServClassifier 3 } + +diffServClfrElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServClfrElementEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The classifier element table enumerates the relationship between + classification patterns and subsequent downstream Differentiated + Services Functional Data Path elements. + diffServClfrElementSpecific points to a filter that specifies the + classification parameters. A classifier may use filter tables of + different types together. + + One example of a filter table defined in this MIB is + diffServMultiFieldClfrTable, for IP Multi-Field Classifiers + (MFCs). Such an entry might identify anything from a single + micro-flow (an identifiable sub-session packet stream directed + from one sending transport to the receiving transport or + transports), or aggregates of those such as the traffic from a + host, traffic for an application, or traffic between two hosts + using an application and a given DSCP. The standard Behavior + Aggregate used in the Differentiated Services Architecture is + encoded as a degenerate case of such an aggregate - the traffic + using a particular DSCP value. + + Filter tables for other filter types may be defined elsewhere." + + + + ::= { diffServClassifier 4 } + +diffServClfrElementEntry OBJECT-TYPE + SYNTAX DiffServClfrElementEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the classifier element table describes a single + element of the classifier." + INDEX { diffServClfrId, diffServClfrElementId } + ::= { diffServClfrElementTable 1 } + +DiffServClfrElementEntry ::= SEQUENCE { + diffServClfrElementId IndexInteger, + diffServClfrElementPrecedence Unsigned32, + diffServClfrElementNext RowPointer, + diffServClfrElementSpecific RowPointer, + diffServClfrElementStorage StorageType, + diffServClfrElementStatus RowStatus +} + +diffServClfrElementId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Classifier Element entries. + Managers obtain new values for row creation in this table by + reading diffServClfrElementNextFree." + ::= { diffServClfrElementEntry 1 } + +diffServClfrElementPrecedence OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The relative order in which classifier elements are applied: + higher numbers represent classifier element with higher + precedence. Classifier elements with the same order must be + unambiguous i.e. they must define non-overlapping patterns, and + are considered to be applied simultaneously to the traffic + stream. Classifier elements with different order may overlap in + their filters: the classifier element with the highest order + that matches is taken. + + On a given interface, there must be a complete classifier in + place at all times in the ingress direction. This means one or + more filters must match any possible pattern. There is no such + + + + requirement in the egress direction." + ::= { diffServClfrElementEntry 2 } + +diffServClfrElementNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute provides one branch of the fan-out functionality + of a classifier described in the Informal Differentiated Services + Model section 4.1. + + This selects the next Differentiated Services Functional Data + Path Element to handle traffic for this data path. This + RowPointer should point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates no further + Differentiated Services treatment is performed on traffic of this + data path. The use of zeroDotZero is the normal usage for the + last functional data path element of the current data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + + ::= { diffServClfrElementEntry 3 } + +diffServClfrElementSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to a valid entry in another table, filter table, that + describes the applicable classification parameters, e.g. an entry + in diffServMultiFieldClfrTable. + + The value zeroDotZero is interpreted to match anything not + matched by another classifier element - only one such entry may + exist for each classifier. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + + + + becomes inactive by other means, the element is ignored." + ::= { diffServClfrElementEntry 4 } + +diffServClfrElementStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServClfrElementEntry 5 } + +diffServClfrElementStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServClfrElementEntry 6 } + +-- +-- IP Multi-field Classification Table +-- +-- Classification based on six different fields in the IP header. +-- Functional Data Paths may share definitions by using the same entry. +-- + +diffServMultiFieldClfrNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for + diffServMultiFieldClfrId, or a zero to indicate that none exist." + ::= { diffServClassifier 5 } + +diffServMultiFieldClfrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServMultiFieldClfrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of IP Multi-field Classifier filter entries that a + + + + system may use to identify IP traffic." + ::= { diffServClassifier 6 } + +diffServMultiFieldClfrEntry OBJECT-TYPE + SYNTAX DiffServMultiFieldClfrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An IP Multi-field Classifier entry describes a single filter." + INDEX { diffServMultiFieldClfrId } + ::= { diffServMultiFieldClfrTable 1 } + +DiffServMultiFieldClfrEntry ::= SEQUENCE { + diffServMultiFieldClfrId IndexInteger, + diffServMultiFieldClfrAddrType InetAddressType, + diffServMultiFieldClfrDstAddr InetAddress, + diffServMultiFieldClfrDstPrefixLength InetAddressPrefixLength, + diffServMultiFieldClfrSrcAddr InetAddress, + diffServMultiFieldClfrSrcPrefixLength InetAddressPrefixLength, + diffServMultiFieldClfrDscp DscpOrAny, + diffServMultiFieldClfrFlowId Unsigned32, + diffServMultiFieldClfrProtocol Unsigned32, + diffServMultiFieldClfrDstL4PortMin InetPortNumber, + diffServMultiFieldClfrDstL4PortMax InetPortNumber, + diffServMultiFieldClfrSrcL4PortMin InetPortNumber, + diffServMultiFieldClfrSrcL4PortMax InetPortNumber, + diffServMultiFieldClfrStorage StorageType, + diffServMultiFieldClfrStatus RowStatus +} + +diffServMultiFieldClfrId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the MultiField Classifier filter + entries. Managers obtain new values for row creation in this + table by reading diffServMultiFieldClfrNextFree." + + ::= { diffServMultiFieldClfrEntry 1 } + +diffServMultiFieldClfrAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of IP address used by this classifier entry. While + other types of addresses are defined in the InetAddressType + + + + textual convention, and DNS names, a classifier can only look at + packets on the wire. Therefore, this object is limited to IPv4 + and IPv6 addresses." + ::= { diffServMultiFieldClfrEntry 2 } + +diffServMultiFieldClfrDstAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP address to match against the packet's destination IP + address. This may not be a DNS name, but may be an IPv4 or IPv6 + prefix. diffServMultiFieldClfrDstPrefixLength indicates the + number of bits that are relevant." + ::= { diffServMultiFieldClfrEntry 3 } + +diffServMultiFieldClfrDstPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the CIDR Prefix carried in + diffServMultiFieldClfrDstAddr. In IPv4 addresses, a length of 0 + indicates a match of any address; a length of 32 indicates a + match of a single host address, and a length between 0 and 32 + indicates the use of a CIDR Prefix. IPv6 is similar, except that + prefix lengths range from 0..128." + DEFVAL { 0 } + ::= { diffServMultiFieldClfrEntry 4 } + +diffServMultiFieldClfrSrcAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP address to match against the packet's source IP address. + This may not be a DNS name, but may be an IPv4 or IPv6 prefix. + diffServMultiFieldClfrSrcPrefixLength indicates the number of + bits that are relevant." + ::= { diffServMultiFieldClfrEntry 5 } + +diffServMultiFieldClfrSrcPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The length of the CIDR Prefix carried in + diffServMultiFieldClfrSrcAddr. In IPv4 addresses, a length of 0 + indicates a match of any address; a length of 32 indicates a + match of a single host address, and a length between 0 and 32 + indicates the use of a CIDR Prefix. IPv6 is similar, except that + prefix lengths range from 0..128." + DEFVAL { 0 } + ::= { diffServMultiFieldClfrEntry 6 } + +diffServMultiFieldClfrDscp OBJECT-TYPE + SYNTAX DscpOrAny + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value that the DSCP in the packet must have to match this + entry. A value of -1 indicates that a specific DSCP value has not + been defined and thus all DSCP values are considered a match." + DEFVAL { -1 } + ::= { diffServMultiFieldClfrEntry 7 } + +diffServMultiFieldClfrFlowId OBJECT-TYPE + SYNTAX Unsigned32 (0..1048575) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The flow identifier in an IPv6 header." + ::= { diffServMultiFieldClfrEntry 8 } + +diffServMultiFieldClfrProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP protocol to match against the IPv4 protocol number or the + IPv6 Next- Header number in the packet. A value of 255 means + match all. Note the protocol number of 255 is reserved by IANA, + and Next-Header number of 0 is used in IPv6." + DEFVAL { 255 } + ::= { diffServMultiFieldClfrEntry 9 } + +diffServMultiFieldClfrDstL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum value that the layer-4 destination port number in + the packet must have in order to match this classifier entry." + DEFVAL { 0 } + + + + ::= { diffServMultiFieldClfrEntry 10 } + +diffServMultiFieldClfrDstL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum value that the layer-4 destination port number in + the packet must have in order to match this classifier entry. + This value must be equal to or greater than the value specified + for this entry in diffServMultiFieldClfrDstL4PortMin." + DEFVAL { 65535 } + ::= { diffServMultiFieldClfrEntry 11 } + +diffServMultiFieldClfrSrcL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum value that the layer-4 source port number in the + packet must have in order to match this classifier entry." + DEFVAL { 0 } + ::= { diffServMultiFieldClfrEntry 12 } + +diffServMultiFieldClfrSrcL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum value that the layer-4 source port number in the + packet must have in order to match this classifier entry. This + value must be equal to or greater than the value specified for + this entry in diffServMultiFieldClfrSrcL4PortMin." + DEFVAL { 65535 } + ::= { diffServMultiFieldClfrEntry 13 } + +diffServMultiFieldClfrStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServMultiFieldClfrEntry 14 } + +diffServMultiFieldClfrStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServMultiFieldClfrEntry 15 } + +-- +-- Meters +-- + +diffServMeter OBJECT IDENTIFIER ::= { diffServMIBObjects 3 } + +-- +-- This MIB supports a variety of Meters. It includes a specific +-- definition for Token Bucket Meter, which are but one type of +-- specification. Other metering parameter sets can be defined in other +-- MIBs. + +-- Multiple meter elements may be logically cascaded using their +-- diffServMeterSucceedNext and diffServMeterFailNext pointers if +-- required. One example of this might be for an AF PHB implementation +-- that uses multiple level conformance meters. + +-- Cascading of individual meter elements in the MIB is intended to be +-- functionally equivalent to multiple level conformance determination +-- of a packet. The sequential nature of the representation is merely +-- a notational convenience for this MIB. + +-- srTCM meters (RFC 2697) can be specified using two sets of +-- diffServMeterEntry and diffServTBParamEntry. The first set specifies +-- the Committed Information Rate and Committed Burst Size +-- token-bucket. The second set specifies the Excess Burst Size +-- token-bucket. + +-- trTCM meters (RFC 2698) can be specified using two sets of +-- diffServMeterEntry and diffServTBParamEntry. The first set specifies +-- the Committed Information Rate and Committed Burst Size +-- token-bucket. The second set specifies the Peak Information Rate +-- and Peak Burst Size token-bucket. + +-- tswTCM meters (RFC 2859) can be specified using two sets of +-- diffServMeterEntry and diffServTBParamEntry. The first set specifies +-- the Committed Target Rate token-bucket. The second set specifies + + + +-- the Peak Target Rate token-bucket. diffServTBParamInterval in each +-- token bucket reflects the Average Interval. +-- + +diffServMeterNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServMeterId, or a + zero to indicate that none exist." + ::= { diffServMeter 1 } + +diffServMeterTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServMeterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table enumerates specific meters that a system may use to + police a stream of traffic. The traffic stream to be metered is + determined by the Differentiated Services Functional Data Path + Element(s) upstream of the meter i.e. by the object(s) that point + to each entry in this table. This may include all traffic on an + interface. + + Specific meter details are to be found in table entry referenced + by diffServMeterSpecific." + ::= { diffServMeter 2 } + +diffServMeterEntry OBJECT-TYPE + SYNTAX DiffServMeterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the meter table describes a single conformance level + of a meter." + INDEX { diffServMeterId } + ::= { diffServMeterTable 1 } + +DiffServMeterEntry ::= SEQUENCE { + diffServMeterId IndexInteger, + diffServMeterSucceedNext RowPointer, + diffServMeterFailNext RowPointer, + diffServMeterSpecific RowPointer, + diffServMeterStorage StorageType, + diffServMeterStatus RowStatus +} + + + + +diffServMeterId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Meter entries. Managers obtain new + values for row creation in this table by reading + diffServMeterNextFree." + ::= { diffServMeterEntry 1 } + +diffServMeterSucceedNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the traffic does conform, this selects the next + Differentiated Services Functional Data Path element to handle + traffic for this data path. This RowPointer should point to an + instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates that no + further Differentiated Services treatment is performed on traffic + of this data path. The use of zeroDotZero is the normal usage for + the last functional data path element of the current data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServMeterEntry 2 } + +diffServMeterFailNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the traffic does not conform, this selects the next + Differentiated Services Functional Data Path element to handle + traffic for this data path. This RowPointer should point to an + instance of one of: + diffServClfrEntry + diffServMeterEntry + + + + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates no further + Differentiated Services treatment is performed on traffic of this + data path. The use of zeroDotZero is the normal usage for the + last functional data path element of the current data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServMeterEntry 3 } + +diffServMeterSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This indicates the behavior of the meter by pointing to an entry + containing detailed parameters. Note that entries in that + specific table must be managed explicitly. + + For example, diffServMeterSpecific may point to an entry in + diffServTBParamTable, which contains an instance of a single set + of Token Bucket parameters. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the meter always succeeds." + ::= { diffServMeterEntry 4 } + +diffServMeterStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServMeterEntry 5 } + +diffServMeterStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServMeterEntry 6 } + +-- +-- Token Bucket Parameter Table +-- + +diffServTBParam OBJECT IDENTIFIER ::= { diffServMIBObjects 4 } + +-- Each entry in the Token Bucket Parameter Table parameterize a single +-- token bucket. Multiple token buckets can be used together to +-- parameterize multiple levels of conformance. + +-- Note that an entry in the Token Bucket Parameter Table can be shared +-- by multiple diffServMeterTable entries. +-- + +diffServTBParamNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServTBParamId, or a + zero to indicate that none exist." + ::= { diffServTBParam 1 } + +diffServTBParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServTBParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table enumerates a single set of token bucket meter + parameters that a system may use to police a stream of traffic. + Such meters are modeled here as having a single rate and a single + burst size. Multiple entries are used when multiple rates/burst + sizes are needed." + ::= { diffServTBParam 2 } + +diffServTBParamEntry OBJECT-TYPE + SYNTAX DiffServTBParamEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An entry that describes a single set of token bucket + parameters." + INDEX { diffServTBParamId } + ::= { diffServTBParamTable 1 } + +DiffServTBParamEntry ::= SEQUENCE { + diffServTBParamId IndexInteger, + diffServTBParamType AutonomousType, + diffServTBParamRate Unsigned32, + diffServTBParamBurstSize BurstSize, + diffServTBParamInterval Unsigned32, + diffServTBParamStorage StorageType, + diffServTBParamStatus RowStatus +} + +diffServTBParamId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Token Bucket Parameter entries. + Managers obtain new values for row creation in this table by + reading diffServTBParamNextFree." + ::= { diffServTBParamEntry 1 } + +diffServTBParamType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Metering algorithm associated with the Token Bucket + parameters. zeroDotZero indicates this is unknown. + + Standard values for generic algorithms: + diffServTBParamSimpleTokenBucket, diffServTBParamAvgRate, + diffServTBParamSrTCMBlind, diffServTBParamSrTCMAware, + diffServTBParamTrTCMBlind, diffServTBParamTrTCMAware, and + diffServTBParamTswTCM are specified in this MIB as OBJECT- + IDENTITYs; additional values may be further specified in other + MIBs." + ::= { diffServTBParamEntry 2 } + +diffServTBParamRate OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The token-bucket rate, in kilobits per second (kbps). This + attribute is used for: + 1. CIR in RFC 2697 for srTCM + 2. CIR and PIR in RFC 2698 for trTCM + 3. CTR and PTR in RFC 2859 for TSWTCM + 4. AverageRate in RFC 3290." + ::= { diffServTBParamEntry 3 } + +diffServTBParamBurstSize OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of bytes in a single transmission burst. This + attribute is used for: + 1. CBS and EBS in RFC 2697 for srTCM + 2. CBS and PBS in RFC 2698 for trTCM + 3. Burst Size in RFC 3290." + ::= { diffServTBParamEntry 4 } + +diffServTBParamInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time interval used with the token bucket. For: + 1. Average Rate Meter, the Informal Differentiated Services Model + section 5.2.1, - Delta. + 2. Simple Token Bucket Meter, the Informal Differentiated + Services Model section 5.1, - time interval t. + 3. RFC 2859 TSWTCM, - AVG_INTERVAL. + 4. RFC 2697 srTCM, RFC 2698 trTCM, - token bucket update time + interval." + ::= { diffServTBParamEntry 5 } + +diffServTBParamStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServTBParamEntry 6 } + + + +diffServTBParamStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServTBParamEntry 7 } + +-- +-- OIDs for diffServTBParamType definitions. +-- + +diffServTBMeters OBJECT IDENTIFIER ::= { diffServMIBAdmin 1 } + +diffServTBParamSimpleTokenBucket OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Two Parameter Token Bucket Meter as described in the Informal + Differentiated Services Model section 5.2.3." + ::= { diffServTBMeters 1 } + +diffServTBParamAvgRate OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Average Rate Meter as described in the Informal Differentiated + Services Model section 5.2.1." + ::= { diffServTBMeters 2 } + +diffServTBParamSrTCMBlind OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Single Rate Three Color Marker Metering as defined by RFC 2697, + in the `Color Blind' mode as described by the RFC." + REFERENCE + "RFC 2697" + ::= { diffServTBMeters 3 } + +diffServTBParamSrTCMAware OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Single Rate Three Color Marker Metering as defined by RFC 2697, + in the `Color Aware' mode as described by the RFC." + REFERENCE + "RFC 2697" + + + + ::= { diffServTBMeters 4 } + +diffServTBParamTrTCMBlind OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Two Rate Three Color Marker Metering as defined by RFC 2698, in + the `Color Blind' mode as described by the RFC." + REFERENCE + "RFC 2698" + ::= { diffServTBMeters 5 } + +diffServTBParamTrTCMAware OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Two Rate Three Color Marker Metering as defined by RFC 2698, in + the `Color Aware' mode as described by the RFC." + REFERENCE + "RFC 2698" + ::= { diffServTBMeters 6 } + +diffServTBParamTswTCM OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Time Sliding Window Three Color Marker Metering as defined by + RFC 2859." + REFERENCE + "RFC 2859" + ::= { diffServTBMeters 7 } + +-- +-- Actions +-- + +diffServAction OBJECT IDENTIFIER ::= { diffServMIBObjects 5 } + +-- +-- The Action Table allows enumeration of the different types of +-- actions to be applied to a traffic flow. +-- + +diffServActionNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServActionId, or a + zero to indicate that none exist." + ::= { diffServAction 1 } + + + +diffServActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServActionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Action Table enumerates actions that can be performed to a + stream of traffic. Multiple actions can be concatenated. For + example, traffic exiting from a meter may be counted, marked, and + potentially dropped before entering a queue. + + Specific actions are indicated by diffServActionSpecific which + points to an entry of a specific action type parameterizing the + action in detail." + ::= { diffServAction 2 } + +diffServActionEntry OBJECT-TYPE + SYNTAX DiffServActionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in the action table allows description of one + specific action to be applied to traffic." + INDEX { diffServActionId } + ::= { diffServActionTable 1 } + +DiffServActionEntry ::= SEQUENCE { + diffServActionId IndexInteger, + diffServActionInterface InterfaceIndexOrZero, + diffServActionNext RowPointer, + diffServActionSpecific RowPointer, + diffServActionStorage StorageType, + diffServActionStatus RowStatus +} + +diffServActionId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Action entries. Managers obtain + new values for row creation in this table by reading + diffServActionNextFree." + ::= { diffServActionEntry 1 } + +diffServActionInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The interface index (value of ifIndex) that this action occurs + on. This may be derived from the diffServDataPathStartEntry's + index by extension through the various RowPointers. However, as + this may be difficult for a network management station, it is + placed here as well. If this is indeterminate, the value is + zero. + + This is of especial relevance when reporting the counters which + may apply to traffic crossing an interface: + diffServCountActOctets, + diffServCountActPkts, + diffServAlgDropOctets, + diffServAlgDropPkts, + diffServAlgRandomDropOctets, and + diffServAlgRandomDropPkts. + + It is also especially relevant to the queue and scheduler which + may be subsequently applied." + ::= { diffServActionEntry 2 } + +diffServActionNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This selects the next Differentiated Services Functional Data + Path Element to handle traffic for this data path. This + RowPointer should point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServAlgDropEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates no further + Differentiated Services treatment is performed on traffic of this + data path. The use of zeroDotZero is the normal usage for the + last functional data path element of the current data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServActionEntry 3 } + +diffServActionSpecific OBJECT-TYPE + + + + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to an object instance providing additional information + for the type of action indicated by this action table entry. + + For the standard actions defined by this MIB module, this should + point to either a diffServDscpMarkActEntry or a + diffServCountActEntry. For other actions, it may point to an + object instance defined in some other MIB. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the Meter should be treated as + if it were not present. This may lead to incorrect policy + behavior." + ::= { diffServActionEntry 4 } + +diffServActionStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServActionEntry 5 } + +diffServActionStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServActionEntry 6 } + +-- DSCP Mark Action Table +-- +-- Rows of this table are pointed to by diffServActionSpecific to +-- provide detailed parameters specific to the DSCP Mark action. +-- +-- A single entry in this table can be shared by multiple + + + +-- diffServActionTable entries. +-- + +diffServDscpMarkActTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServDscpMarkActEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table enumerates specific DSCPs used for marking or + remarking the DSCP field of IP packets. The entries of this table + may be referenced by a diffServActionSpecific attribute." + ::= { diffServAction 3 } + +diffServDscpMarkActEntry OBJECT-TYPE + SYNTAX DiffServDscpMarkActEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DSCP mark action table that describes a single + DSCP used for marking." + INDEX { diffServDscpMarkActDscp } + ::= { diffServDscpMarkActTable 1 } + +DiffServDscpMarkActEntry ::= SEQUENCE { + diffServDscpMarkActDscp Dscp +} + +diffServDscpMarkActDscp OBJECT-TYPE + SYNTAX Dscp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DSCP that this Action will store into the DSCP field of the + subject. It is quite possible that the only packets subject to + this Action are already marked with this DSCP. Note also that + Differentiated Services processing may result in packet being + marked on both ingress to a network and on egress from it, and + that ingress and egress can occur in the same router." + ::= { diffServDscpMarkActEntry 1 } + +-- +-- Count Action Table +-- +-- Because the MIB structure allows multiple cascading +-- diffServActionEntry be used to describe multiple actions for a data +-- path, the counter became an optional action type. In normal +-- implementation, either a data path has counters or it does not, as +-- opposed to being configurable. The management entity may choose to + + + +-- read the counter or not. Hence it is recommended for implementation +-- that have counters to always configure the count action as the first +-- of multiple actions. +-- + +diffServCountActNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for + diffServCountActId, or a zero to indicate that none exist." + ::= { diffServAction 4 } + +diffServCountActTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServCountActEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains counters for all the traffic passing through + an action element." + ::= { diffServAction 5 } + +diffServCountActEntry OBJECT-TYPE + SYNTAX DiffServCountActEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the count action table describes a single set of + traffic counters." + INDEX { diffServCountActId } + ::= { diffServCountActTable 1 } + +DiffServCountActEntry ::= SEQUENCE { + diffServCountActId IndexInteger, + diffServCountActOctets Counter64, + diffServCountActPkts Counter64, + diffServCountActStorage StorageType, + diffServCountActStatus RowStatus +} + +diffServCountActId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Count Action entries. Managers + obtain new values for row creation in this table by reading + + + + diffServCountActNextFree." + ::= { diffServCountActEntry 1 } + +diffServCountActOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets at the Action data path element. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system and at other times as + indicated by the value of ifCounterDiscontinuityTime on the + relevant interface." + ::= { diffServCountActEntry 2 } + +diffServCountActPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets at the Action data path element. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system and at other times as + indicated by the value of ifCounterDiscontinuityTime on the + relevant interface." + ::= { diffServCountActEntry 3 } + +diffServCountActStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServCountActEntry 4 } + +diffServCountActStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + + + + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServCountActEntry 5 } + +-- +-- Algorithmic Drop Table +-- + +diffServAlgDrop OBJECT IDENTIFIER ::= { diffServMIBObjects 6 } + +diffServAlgDropNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServAlgDropId, or a + zero to indicate that none exist." + ::= { diffServAlgDrop 1 } + +diffServAlgDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServAlgDropEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The algorithmic drop table contains entries describing an + element that drops packets according to some algorithm." + ::= { diffServAlgDrop 2 } + +diffServAlgDropEntry OBJECT-TYPE + SYNTAX DiffServAlgDropEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describes a process that drops packets according to + some algorithm. Further details of the algorithm type are to be + found in diffServAlgDropType and with more detail parameter entry + pointed to by diffServAlgDropSpecific when necessary." + INDEX { diffServAlgDropId } + ::= { diffServAlgDropTable 1 } + +DiffServAlgDropEntry ::= SEQUENCE { + diffServAlgDropId IndexInteger, + diffServAlgDropType INTEGER, + diffServAlgDropNext RowPointer, + diffServAlgDropQMeasure RowPointer, + diffServAlgDropQThreshold Unsigned32, + diffServAlgDropSpecific RowPointer, + diffServAlgDropOctets Counter64, + + + + diffServAlgDropPkts Counter64, + diffServAlgRandomDropOctets Counter64, + diffServAlgRandomDropPkts Counter64, + diffServAlgDropStorage StorageType, + diffServAlgDropStatus RowStatus +} + +diffServAlgDropId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Algorithmic Dropper entries. + Managers obtain new values for row creation in this table by + reading diffServAlgDropNextFree." + ::= { diffServAlgDropEntry 1 } + +diffServAlgDropType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + tailDrop(2), + headDrop(3), + randomDrop(4), + alwaysDrop(5) +} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of algorithm used by this dropper. The value other(1) + requires further specification in some other MIB module. + + In the tailDrop(2) algorithm, diffServAlgDropQThreshold + represents the maximum depth of the queue, pointed to by + diffServAlgDropQMeasure, beyond which all newly arriving packets + will be dropped. + + In the headDrop(3) algorithm, if a packet arrives when the + current depth of the queue, pointed to by + diffServAlgDropQMeasure, is at diffServAlgDropQThreshold, packets + currently at the head of the queue are dropped to make room for + the new packet to be enqueued at the tail of the queue. + + In the randomDrop(4) algorithm, on packet arrival, an Active + Queue Management algorithm is executed which may randomly drop a + packet. This algorithm may be proprietary, and it may drop either + the arriving packet or another packet in the queue. + diffServAlgDropSpecific points to a diffServRandomDropEntry that + describes the algorithm. For this algorithm, + + + + diffServAlgDropQThreshold is understood to be the absolute + maximum size of the queue and additional parameters are described + in diffServRandomDropTable. + + The alwaysDrop(5) algorithm is as its name specifies; always + drop. In this case, the other configuration values in this Entry + are not meaningful; There is no useful 'next' processing step, + there is no queue, and parameters describing the queue are not + useful. Therefore, diffServAlgDropNext, diffServAlgDropMeasure, + and diffServAlgDropSpecific are all zeroDotZero." + ::= { diffServAlgDropEntry 2 } + +diffServAlgDropNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This selects the next Differentiated Services Functional Data + Path Element to handle traffic for this data path. This + RowPointer should point to an instance of one of: + diffServClfrEntry + diffServMeterEntry + diffServActionEntry + diffServQEntry + + A value of zeroDotZero in this attribute indicates no further + Differentiated Services treatment is performed on traffic of this + data path. The use of zeroDotZero is the normal usage for the + last functional data path element of the current data path. + + When diffServAlgDropType is alwaysDrop(5), this object is + ignored. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServAlgDropEntry 3 } + +diffServAlgDropQMeasure OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Points to an entry in the diffServQTable to indicate the queue + that a drop algorithm is to monitor when deciding whether to drop + a packet. If the row pointed to does not exist, the algorithmic + dropper element is considered inactive. + + + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServAlgDropEntry 4 } + +diffServAlgDropQThreshold OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A threshold on the depth in bytes of the queue being measured at + which a trigger is generated to the dropping algorithm, unless + diffServAlgDropType is alwaysDrop(5) where this object is + ignored. + + For the tailDrop(2) or headDrop(3) algorithms, this represents + the depth of the queue, pointed to by diffServAlgDropQMeasure, at + which the drop action will take place. Other algorithms will need + to define their own semantics for this threshold." + ::= { diffServAlgDropEntry 5 } + +diffServAlgDropSpecific OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Points to a table entry that provides further detail regarding a + drop algorithm. + + Entries with diffServAlgDropType equal to other(1) may have this + point to a table defined in another MIB module. + + Entries with diffServAlgDropType equal to randomDrop(4) must have + this point to an entry in diffServRandomDropTable. + + For all other algorithms specified in this MIB, this should take + the value zeroDotZero. + + The diffServAlgDropType is authoritative for the type of the drop + algorithm and the specific parameters for the drop algorithm + needs to be evaluated based on the diffServAlgDropType. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + + + + ::= { diffServAlgDropEntry 6 } + +diffServAlgDropOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that have been deterministically dropped by + this drop process. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system and at other times as + indicated by the value of ifCounterDiscontinuityTime on the + relevant interface." + ::= { diffServAlgDropEntry 7 } + +diffServAlgDropPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that have been deterministically dropped + by this drop process. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system and at other times as + indicated by the value of ifCounterDiscontinuityTime on the + relevant interface." + ::= { diffServAlgDropEntry 8 } + +diffServAlgRandomDropOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that have been randomly dropped by this + drop process. This counter applies, therefore, only to random + droppers. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system and at other times as + indicated by the value of ifCounterDiscontinuityTime on the + relevant interface." + ::= { diffServAlgDropEntry 9 } + +diffServAlgRandomDropPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of packets that have been randomly dropped by this + drop process. This counter applies, therefore, only to random + droppers. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system and at other times as + indicated by the value of ifCounterDiscontinuityTime on the + relevant interface." + ::= { diffServAlgDropEntry 10 } + +diffServAlgDropStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServAlgDropEntry 11 } + +diffServAlgDropStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServAlgDropEntry 12 } + +-- +-- Random Drop Table +-- + +diffServRandomDropNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServRandomDropId, + or a zero to indicate that none exist." + ::= { diffServAlgDrop 3 } + + + + +diffServRandomDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServRandomDropEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The random drop table contains entries describing a process that + drops packets randomly. Entries in this table are pointed to by + diffServAlgDropSpecific." + ::= { diffServAlgDrop 4 } + +diffServRandomDropEntry OBJECT-TYPE + SYNTAX DiffServRandomDropEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describes a process that drops packets according to a + random algorithm." + INDEX { diffServRandomDropId } + ::= { diffServRandomDropTable 1 } + +DiffServRandomDropEntry ::= SEQUENCE { + diffServRandomDropId IndexInteger, + diffServRandomDropMinThreshBytes Unsigned32, + diffServRandomDropMinThreshPkts Unsigned32, + diffServRandomDropMaxThreshBytes Unsigned32, + diffServRandomDropMaxThreshPkts Unsigned32, + diffServRandomDropProbMax Unsigned32, + diffServRandomDropWeight Unsigned32, + diffServRandomDropSamplingRate Unsigned32, + diffServRandomDropStorage StorageType, + diffServRandomDropStatus RowStatus +} + +diffServRandomDropId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Random Drop entries. Managers + obtain new values for row creation in this table by reading + diffServRandomDropNextFree." + ::= { diffServRandomDropEntry 1 } + +diffServRandomDropMinThreshBytes OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The average queue depth in bytes, beyond which traffic has a + non-zero probability of being dropped. Changes in this variable + may or may not be reflected in the reported value of + diffServRandomDropMinThreshPkts." + ::= { diffServRandomDropEntry 2 } + +diffServRandomDropMinThreshPkts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "packets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The average queue depth in packets, beyond which traffic has a + non-zero probability of being dropped. Changes in this variable + may or may not be reflected in the reported value of + diffServRandomDropMinThreshBytes." + ::= { diffServRandomDropEntry 3 } + +diffServRandomDropMaxThreshBytes OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The average queue depth beyond which traffic has a probability + indicated by diffServRandomDropProbMax of being dropped or + marked. Note that this differs from the physical queue limit, + which is stored in diffServAlgDropQThreshold. Changes in this + variable may or may not be reflected in the reported value of + diffServRandomDropMaxThreshPkts." + ::= { diffServRandomDropEntry 4 } + +diffServRandomDropMaxThreshPkts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "packets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The average queue depth beyond which traffic has a probability + indicated by diffServRandomDropProbMax of being dropped or + marked. Note that this differs from the physical queue limit, + which is stored in diffServAlgDropQThreshold. Changes in this + variable may or may not be reflected in the reported value of + diffServRandomDropMaxThreshBytes." + ::= { diffServRandomDropEntry 5 } + +diffServRandomDropProbMax OBJECT-TYPE + + + + SYNTAX Unsigned32 (0..1000) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The worst case random drop probability, expressed in drops per + thousand packets. + + For example, if in the worst case every arriving packet may be + dropped (100%) for a period, this has the value 1000. + Alternatively, if in the worst case only one percent (1%) of + traffic may be dropped, it has the value 10." + ::= { diffServRandomDropEntry 6 } + +diffServRandomDropWeight OBJECT-TYPE + SYNTAX Unsigned32 (0..65536) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The weighting of past history in affecting the Exponentially + Weighted Moving Average function that calculates the current + average queue depth. The equation uses + diffServRandomDropWeight/65536 as the coefficient for the new + sample in the equation, and (65536 - + diffServRandomDropWeight)/65536 as the coefficient of the old + value. + + Implementations may limit the values of diffServRandomDropWeight + to a subset of the possible range of values, such as powers of + two. Doing this would facilitate implementation of the + Exponentially Weighted Moving Average using shift instructions or + registers." + ::= { diffServRandomDropEntry 7 } + +diffServRandomDropSamplingRate OBJECT-TYPE + SYNTAX Unsigned32 (0..1000000) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times per second the queue is sampled for queue + average calculation. A value of zero is used to mean that the + queue is sampled approximately each time a packet is enqueued (or + dequeued)." + ::= { diffServRandomDropEntry 8 } + +diffServRandomDropStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServRandomDropEntry 9 } + +diffServRandomDropStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServRandomDropEntry 10 } + +-- +-- Queue Table +-- + +diffServQueue OBJECT IDENTIFIER ::= { diffServMIBObjects 7 } + +-- +-- An entry of diffServQTable represents a FIFO queue Differentiated +-- Services Functional Data Path element as described in the Informal +-- Differentiated Services Model section 7.1.1. Note that the +-- specification of scheduling parameters for a queue as part of the +-- input to a scheduler functional data path element as described in +-- the Informal Differentiated Services Model section 7.1.2. This +-- allows building of hierarchical queuing/scheduling. A queue +-- therefore has these attributes: +-- +-- 1. Which scheduler will service this queue, diffServQNext. +-- 2. How the scheduler will service this queue, with respect +-- to all the other queues the same scheduler needs to service, +-- diffServQMinRate. +-- +-- Note that upstream Differentiated Services Functional Data Path +-- elements may point to a shared diffServQTable entry as described +-- in the Informal Differentiated Services Model section 7.1.1. +-- + +diffServQNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object contains an unused value for diffServQId, or a zero + to indicate that none exist." + ::= { diffServQueue 1 } + +diffServQTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServQEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Queue Table enumerates the individual queues. Note that the + MIB models queuing systems as composed of individual queues, one + per class of traffic, even though they may in fact be structured + as classes of traffic scheduled using a common calendar queue, or + in other ways." + ::= { diffServQueue 2 } + +diffServQEntry OBJECT-TYPE + SYNTAX DiffServQEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Queue Table describes a single queue or class of + traffic." + INDEX { diffServQId } + ::= { diffServQTable 1 } + +DiffServQEntry ::= SEQUENCE { + diffServQId IndexInteger, + diffServQNext RowPointer, + diffServQMinRate RowPointer, + diffServQMaxRate RowPointer, + diffServQStorage StorageType, + diffServQStatus RowStatus +} + +diffServQId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Queue entries. Managers obtain new + values for row creation in this table by reading + diffServQNextFree." + ::= { diffServQEntry 1 } + +diffServQNext OBJECT-TYPE + + + + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This selects the next Differentiated Services Scheduler. The + RowPointer must point to a diffServSchedulerEntry. + + A value of zeroDotZero in this attribute indicates an incomplete + diffServQEntry instance. In such a case, the entry has no + operational effect, since it has no parameters to give it + meaning. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServQEntry 2 } + +diffServQMinRate OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This RowPointer indicates the diffServMinRateEntry that the + scheduler, pointed to by diffServQNext, should use to service + this queue. + + If the row pointed to is zeroDotZero, the minimum rate and + priority is unspecified. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServQEntry 3 } + +diffServQMaxRate OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This RowPointer indicates the diffServMaxRateEntry that the + scheduler, pointed to by diffServQNext, should use to service + this queue. + + If the row pointed to is zeroDotZero, the maximum rate is the + line speed of the interface. + + + + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + ::= { diffServQEntry 4 } + +diffServQStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServQEntry 5 } + +diffServQStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServQEntry 6 } + +-- +-- Scheduler Table +-- + +diffServScheduler OBJECT IDENTIFIER ::= { diffServMIBObjects 8 } + +-- +-- A Scheduler Entry represents a packet scheduler, such as a priority +-- scheduler or a WFQ scheduler. It provides flexibility for multiple +-- scheduling algorithms, each servicing multiple queues, to be used on +-- the same logical/physical interface. +-- +-- Note that upstream queues or schedulers specify several of the +-- scheduler's parameters. These must be properly specified if the +-- scheduler is to behave as expected. +-- +-- The diffServSchedulerMaxRate attribute specifies the parameters when +-- a scheduler's output is sent to another scheduler. This is used in +-- building hierarchical queues or schedulers. + + + +-- +-- More discussion of the scheduler functional data path element is in +-- the Informal Differentiated Services Model section 7.1.2. +-- + +diffServSchedulerNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServSchedulerId, or + a zero to indicate that none exist." + ::= { diffServScheduler 1 } + +diffServSchedulerTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServSchedulerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Scheduler Table enumerates packet schedulers. Multiple + scheduling algorithms can be used on a given data path, with each + algorithm described by one diffServSchedulerEntry." + ::= { diffServScheduler 2 } + +diffServSchedulerEntry OBJECT-TYPE + SYNTAX DiffServSchedulerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Scheduler Table describing a single instance of + a scheduling algorithm." + INDEX { diffServSchedulerId } + ::= { diffServSchedulerTable 1 } + +DiffServSchedulerEntry ::= SEQUENCE { + diffServSchedulerId IndexInteger, + diffServSchedulerNext RowPointer, + diffServSchedulerMethod AutonomousType, + diffServSchedulerMinRate RowPointer, + diffServSchedulerMaxRate RowPointer, + diffServSchedulerStorage StorageType, + diffServSchedulerStatus RowStatus +} + +diffServSchedulerId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An index that enumerates the Scheduler entries. Managers obtain + new values for row creation in this table by reading + diffServSchedulerNextFree." + ::= { diffServSchedulerEntry 1 } + +diffServSchedulerNext OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This selects the next Differentiated Services Functional Data + Path Element to handle traffic for this data path. This normally + is null (zeroDotZero), or points to a diffServSchedulerEntry or a + diffServQEntry. + + However, this RowPointer may also point to an instance of: + diffServClfrEntry, + diffServMeterEntry, + diffServActionEntry, + diffServAlgDropEntry. + + It would point another diffServSchedulerEntry when implementing + multiple scheduler methods for the same data path, such as having + one set of queues scheduled by WRR and that group participating + in a priority scheduling system in which other queues compete + with it in that way. It might also point to a second scheduler + in a hierarchical scheduling system. + + If the row pointed to is zeroDotZero, no further Differentiated + Services treatment is performed on traffic of this data path. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServSchedulerEntry 2 } + +diffServSchedulerMethod OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The scheduling algorithm used by this Scheduler. zeroDotZero + indicates that this is unknown. Standard values for generic + algorithms: diffServSchedulerPriority, diffServSchedulerWRR, and + diffServSchedulerWFQ are specified in this MIB; additional values + + + + may be further specified in other MIBs." + ::= { diffServSchedulerEntry 3 } + +diffServSchedulerMinRate OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This RowPointer indicates the entry in diffServMinRateTable + which indicates the priority or minimum output rate from this + scheduler. This attribute is used only when there is more than + one level of scheduler. + + When it has the value zeroDotZero, it indicates that no minimum + rate or priority is imposed. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServSchedulerEntry 4 } + +diffServSchedulerMaxRate OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This RowPointer indicates the entry in diffServMaxRateTable + which indicates the maximum output rate from this scheduler. + When more than one maximum rate applies (eg, when a multi-rate + shaper is in view), it points to the first of those rate entries. + This attribute is used only when there is more than one level of + scheduler. + + When it has the value zeroDotZero, it indicates that no maximum + rate is imposed. + + Setting this to point to a target that does not exist results in + an inconsistentValue error. If the row pointed to is removed or + becomes inactive by other means, the treatment is as if this + attribute contains a value of zeroDotZero." + DEFVAL { zeroDotZero } + ::= { diffServSchedulerEntry 5 } + +diffServSchedulerStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServSchedulerEntry 6 } + +diffServSchedulerStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServSchedulerEntry 7 } + +-- +-- OIDs for diffServTBParamType definitions. +-- + +diffServSchedulers OBJECT IDENTIFIER ::= { diffServMIBAdmin 2 } + +diffServSchedulerPriority OBJECT-IDENTITY + STATUS current + DESCRIPTION + "For use with diffServSchedulerMethod to indicate the Priority + scheduling method. This is defined as an algorithm in which the + presence of data in a queue or set of queues absolutely precludes + dequeue from another queue or set of queues of lower priority. + Note that attributes from diffServMinRateEntry of the + queues/schedulers feeding this scheduler are used when + determining the next packet to schedule." + ::= { diffServSchedulers 1 } + +diffServSchedulerWRR OBJECT-IDENTITY + STATUS current + DESCRIPTION + "For use with diffServSchedulerMethod to indicate the Weighted + Round Robin scheduling method, defined as any algorithm in which + a set of queues are visited in a fixed order, and varying amounts + of traffic are removed from each queue in turn to implement an + average output rate by class. Notice attributes from + diffServMinRateEntry of the queues/schedulers feeding this + scheduler are used when determining the next packet to schedule." + + + + ::= { diffServSchedulers 2 } + +diffServSchedulerWFQ OBJECT-IDENTITY + STATUS current + DESCRIPTION + "For use with diffServSchedulerMethod to indicate the Weighted + Fair Queuing scheduling method, defined as any algorithm in which + a set of queues are conceptually visited in some order, to + implement an average output rate by class. Notice attributes from + diffServMinRateEntry of the queues/schedulers feeding this + scheduler are used when determining the next packet to schedule." + ::= { diffServSchedulers 3 } + +-- +-- Minimum Rate Parameters Table +-- +-- The parameters used by a scheduler for its inputs or outputs are +-- maintained separately from the Queue or Scheduler table entries for +-- reusability reasons and so that they may be used by both queues and +-- schedulers. This follows the approach for separation of data path +-- elements from parameterization that is used throughout this MIB. +-- Use of these Minimum Rate Parameter Table entries by Queues and +-- Schedulers allows the modeling of hierarchical scheduling systems. +-- +-- Specifically, a Scheduler has one or more inputs and one output. +-- Any queue feeding a scheduler, or any scheduler which feeds a second +-- scheduler, might specify a minimum transfer rate by pointing to an +-- Minimum Rate Parameter Table entry. +-- +-- The diffServMinRatePriority/Abs/Rel attributes are used as +-- parameters to the work-conserving portion of a scheduler: +-- "work-conserving" implies that the scheduler can continue to emit +-- data as long as there is data available at its input(s). This has +-- the effect of guaranteeing a certain priority relative to other +-- scheduler inputs and/or a certain minimum proportion of the +-- available output bandwidth. Properly configured, this means a +-- certain minimum rate, which may be exceeded should traffic be +-- available should there be spare bandwidth after all other classes +-- have had opportunities to consume their own minimum rates. +-- + +diffServMinRateNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServMinRateId, or a + zero to indicate that none exist." + + + + ::= { diffServScheduler 3 } + +diffServMinRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServMinRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Minimum Rate Parameters Table enumerates individual sets of + scheduling parameter that can be used/reused by Queues and + Schedulers." + ::= { diffServScheduler 4 } + +diffServMinRateEntry OBJECT-TYPE + SYNTAX DiffServMinRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Minimum Rate Parameters Table describes a single + set of scheduling parameters for use by one or more queues or + schedulers." + INDEX { diffServMinRateId } + ::= { diffServMinRateTable 1 } + +DiffServMinRateEntry ::= SEQUENCE { + diffServMinRateId IndexInteger, + diffServMinRatePriority Unsigned32, + diffServMinRateAbsolute Unsigned32, + diffServMinRateRelative Unsigned32, + diffServMinRateStorage StorageType, + diffServMinRateStatus RowStatus +} + +diffServMinRateId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Scheduler Parameter entries. + Managers obtain new values for row creation in this table by + reading diffServMinRateNextFree." + ::= { diffServMinRateEntry 1 } + +diffServMinRatePriority OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this input to the associated scheduler, relative + + + + to the scheduler's other inputs. A queue or scheduler with a + larger numeric value will be served before another with a smaller + numeric value." + ::= { diffServMinRateEntry 2 } + +diffServMinRateAbsolute OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum absolute rate, in kilobits/sec, that a downstream + scheduler element should allocate to this queue. If the value is + zero, then there is effectively no minimum rate guarantee. If the + value is non-zero, the scheduler will assure the servicing of + this queue to at least this rate. + + Note that this attribute value and that of + diffServMinRateRelative are coupled: changes to one will affect + the value of the other. They are linked by the following + equation, in that setting one will change the other: + + diffServMinRateRelative = + (diffServMinRateAbsolute*1000000)/ifSpeed + + or, if appropriate: + + diffServMinRateRelative = diffServMinRateAbsolute/ifHighSpeed" + REFERENCE + "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863" + ::= { diffServMinRateEntry 3 } + +diffServMinRateRelative OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum rate that a downstream scheduler element should + allocate to this queue, relative to the maximum rate of the + interface as reported by ifSpeed or ifHighSpeed, in units of + 1/1000 of 1. If the value is zero, then there is effectively no + minimum rate guarantee. If the value is non-zero, the scheduler + will assure the servicing of this queue to at least this rate. + + Note that this attribute value and that of + diffServMinRateAbsolute are coupled: changes to one will affect + the value of the other. They are linked by the following + equation, in that setting one will change the other: + + + + diffServMinRateRelative = + (diffServMinRateAbsolute*1000000)/ifSpeed + + or, if appropriate: + + diffServMinRateRelative = diffServMinRateAbsolute/ifHighSpeed" + REFERENCE + "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863" + ::= { diffServMinRateEntry 4 } + +diffServMinRateStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServMinRateEntry 5 } + +diffServMinRateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServMinRateEntry 6 } + +-- +-- Maximum Rate Parameter Table +-- +-- The parameters used by a scheduler for its inputs or outputs are +-- maintained separately from the Queue or Scheduler table entries for +-- reusability reasons and so that they may be used by both queues and +-- schedulers. This follows the approach for separation of data path +-- elements from parameterization that is used throughout this MIB. +-- Use of these Maximum Rate Parameter Table entries by Queues and +-- Schedulers allows the modeling of hierarchical scheduling systems. +-- +-- Specifically, a Scheduler has one or more inputs and one output. +-- Any queue feeding a scheduler, or any scheduler which feeds a second +-- scheduler, might specify a maximum transfer rate by pointing to a +-- Maximum Rate Parameter Table entry. Multi-rate shapers, such as a + + + +-- Dual Leaky Bucket algorithm, specify their rates using multiple +-- Maximum Rate Parameter Entries with the same diffServMaxRateId but +-- different diffServMaxRateLevels. +-- +-- The diffServMaxRateLevel/Abs/Rel attributes are used as +-- parameters to the non-work-conserving portion of a scheduler: +-- non-work-conserving implies that the scheduler may sometimes not +-- emit a packet, even if there is data available at its input(s). +-- This has the effect of limiting the servicing of the queue/scheduler +-- input or output, in effect performing shaping of the packet stream +-- passing through the queue/scheduler, as described in the Informal +-- Differentiated Services Model section 7.2. +-- + +diffServMaxRateNextFree OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for diffServMaxRateId, or a + zero to indicate that none exist." + ::= { diffServScheduler 5 } + +diffServMaxRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF DiffServMaxRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Maximum Rate Parameter Table enumerates individual sets of + scheduling parameter that can be used/reused by Queues and + Schedulers." + ::= { diffServScheduler 6 } + +diffServMaxRateEntry OBJECT-TYPE + SYNTAX DiffServMaxRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Maximum Rate Parameter Table describes a single + set of scheduling parameters for use by one or more queues or + schedulers." + INDEX { diffServMaxRateId, diffServMaxRateLevel } + ::= { diffServMaxRateTable 1 } + +DiffServMaxRateEntry ::= SEQUENCE { + diffServMaxRateId IndexInteger, + diffServMaxRateLevel Unsigned32, + diffServMaxRateAbsolute Unsigned32, + + + + diffServMaxRateRelative Unsigned32, + diffServMaxRateThreshold BurstSize, + diffServMaxRateStorage StorageType, + diffServMaxRateStatus RowStatus +} + +diffServMaxRateId OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that enumerates the Maximum Rate Parameter entries. + Managers obtain new values for row creation in this table by + reading diffServMaxRateNextFree." + ::= { diffServMaxRateEntry 1 } + +diffServMaxRateLevel OBJECT-TYPE + SYNTAX Unsigned32 (1..32) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that indicates which level of a multi-rate shaper is + being given its parameters. A multi-rate shaper has some number + of rate levels. Frame Relay's dual rate specification refers to a + 'committed' and an 'excess' rate; ATM's dual rate specification + refers to a 'mean' and a 'peak' rate. This table is generalized + to support an arbitrary number of rates. The committed or mean + rate is level 1, the peak rate (if any) is the highest level rate + configured, and if there are other rates they are distributed in + monotonically increasing order between them." + ::= { diffServMaxRateEntry 2 } + +diffServMaxRateAbsolute OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum rate in kilobits/sec that a downstream scheduler + element should allocate to this queue. If the value is zero, then + there is effectively no maximum rate limit and that the scheduler + should attempt to be work conserving for this queue. If the value + is non-zero, the scheduler will limit the servicing of this queue + to, at most, this rate in a non-work-conserving manner. + + Note that this attribute value and that of + diffServMaxRateRelative are coupled: changes to one will affect + the value of the other. They are linked by the following + + + + equation, in that setting one will change the other: + + diffServMaxRateRelative = + (diffServMaxRateAbsolute*1000000)/ifSpeed + + or, if appropriate: + + diffServMaxRateRelative = diffServMaxRateAbsolute/ifHighSpeed" + REFERENCE + "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863" + ::= { diffServMaxRateEntry 3 } + +diffServMaxRateRelative OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum rate that a downstream scheduler element should + allocate to this queue, relative to the maximum rate of the + interface as reported by ifSpeed or ifHighSpeed, in units of + 1/1000 of 1. If the value is zero, then there is effectively no + maximum rate limit and the scheduler should attempt to be work + conserving for this queue. If the value is non-zero, the + scheduler will limit the servicing of this queue to, at most, + this rate in a non-work-conserving manner. + + Note that this attribute value and that of + diffServMaxRateAbsolute are coupled: changes to one will affect + the value of the other. They are linked by the following + equation, in that setting one will change the other: + + diffServMaxRateRelative = + (diffServMaxRateAbsolute*1000000)/ifSpeed + + or, if appropriate: + + diffServMaxRateRelative = diffServMaxRateAbsolute/ifHighSpeed" + REFERENCE + "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863" + ::= { diffServMaxRateEntry 4 } + +diffServMaxRateThreshold OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of bytes of queue depth at which the rate of a + + + + multi-rate scheduler will increase to the next output rate. In + the last conceptual row for such a shaper, this threshold is + ignored and by convention is zero." + REFERENCE + "Adaptive rate Shaper, RFC 2963" + ::= { diffServMaxRateEntry 5 } + +diffServMaxRateStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to any + columnar objects in the row." + DEFVAL { nonVolatile } + ::= { diffServMaxRateEntry 6 } + +diffServMaxRateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable objects in this + row may be modified at any time. Setting this variable to + 'destroy' when the MIB contains one or more RowPointers pointing + to it results in destruction being delayed until the row is no + longer used." + ::= { diffServMaxRateEntry 7 } + +-- +-- MIB Compliance statements. +-- + +diffServMIBCompliances OBJECT IDENTIFIER ::= + { diffServMIBConformance 1 } +diffServMIBGroups OBJECT IDENTIFIER ::= + { diffServMIBConformance 2 } + +diffServMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented with support for read-create, then + such an implementation can claim full compliance. Such devices + can then be both monitored and configured with this MIB." + + MODULE IF-MIB -- The interfaces MIB, RFC2863 + MANDATORY-GROUPS { + + + + ifCounterDiscontinuityGroup + } + + MODULE -- This Module + MANDATORY-GROUPS { + diffServMIBDataPathGroup, diffServMIBClfrGroup, + diffServMIBClfrElementGroup, diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, diffServMIBAlgDropGroup, + diffServMIBQGroup, diffServMIBSchedulerGroup, + diffServMIBMaxRateGroup, diffServMIBMinRateGroup, + diffServMIBCounterGroup + } + + GROUP diffServMIBMeterGroup + DESCRIPTION + "This group is mandatory for devices that implement metering + functions." + + GROUP diffServMIBTBParamGroup + DESCRIPTION + "This group is mandatory for devices that implement token-bucket + metering functions." + + GROUP diffServMIBDscpMarkActGroup + DESCRIPTION + "This group is mandatory for devices that implement DSCP-Marking + functions." + + GROUP diffServMIBRandomDropGroup + DESCRIPTION + "This group is mandatory for devices that implement Random Drop + functions." + + OBJECT diffServDataPathStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServClfrStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServClfrElementStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + + + + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServMultiFieldClfrAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv4 and IPv6 + addresses." + + OBJECT diffServMultiFieldClfrDstAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 and globally + unique IPv6 addresses." + + OBJECT diffServAlgDropStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServRandomDropStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServQStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServSchedulerStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServMinRateStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT diffServMaxRateStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + + + + DESCRIPTION + "Support for createAndWait and notInService is not required." + + ::= { diffServMIBCompliances 1 } + +-- +-- Read-Only Compliance +-- + +diffServMIBReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for read-create + (i.e. in read-only mode), then such an implementation can claim + read-only compliance. Such a device can then be monitored but can + not be configured with this MIB." + + MODULE IF-MIB -- The interfaces MIB, RFC2863 + MANDATORY-GROUPS { + ifCounterDiscontinuityGroup + } + + MODULE -- This Module + MANDATORY-GROUPS { + diffServMIBDataPathGroup, diffServMIBClfrGroup, + diffServMIBClfrElementGroup, diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, diffServMIBAlgDropGroup, + diffServMIBQGroup, diffServMIBSchedulerGroup, + diffServMIBMaxRateGroup, diffServMIBMinRateGroup, + diffServMIBCounterGroup + } + + GROUP diffServMIBMeterGroup + DESCRIPTION + "This group is mandatory for devices that implement metering + functions." + + GROUP diffServMIBTBParamGroup + DESCRIPTION + "This group is mandatory for devices that implement token-bucket + metering functions." + + GROUP diffServMIBDscpMarkActGroup + DESCRIPTION + "This group is mandatory for devices that implement DSCP-Marking + functions." + + GROUP diffServMIBRandomDropGroup + + + + DESCRIPTION + "This group is mandatory for devices that implement Random Drop + functions." + + OBJECT diffServDataPathStart + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServDataPathStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServDataPathStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServClfrNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object not needed when diffServClfrTable is implemented read- + only" + + OBJECT diffServClfrStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServClfrStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServClfrElementNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object not needed when diffServClfrelementTable is implemented + read-only" + + OBJECT diffServClfrElementPrecedence + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT diffServClfrElementNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServClfrElementSpecific + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServClfrElementStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServClfrElementStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServMultiFieldClfrNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServMultiFieldClfrTable is + implemented in read-only mode." + + OBJECT diffServMultiFieldClfrAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only required + to support IPv4 and IPv6 addresses." + + OBJECT diffServMultiFieldClfrDstAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only required + to support IPv4 and globally unique IPv6 addresses." + + OBJECT diffServMultiFieldClfrDstPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT diffServMultiFieldClfrSrcAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only required + to support IPv4 and globally unique IPv6 addresses." + + OBJECT diffServMultiFieldClfrSrcPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrDscp + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrFlowId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrProtocol + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrDstL4PortMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrDstL4PortMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrSrcL4PortMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrSrcL4PortMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrStorage + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServMultiFieldClfrStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, createAndWait and notInService + support is not required." + + OBJECT diffServMeterNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServMultiFieldClfrTable is + implemented in read-only mode." + + OBJECT diffServMeterSucceedNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMeterFailNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMeterSpecific + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMeterStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMeterStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServTBParamNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServTBParamTable is implemented in + read-only mode." + + + + + OBJECT diffServTBParamType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamBurstSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServTBParamStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServActionNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServActionTable is implemented in + read-only mode." + + OBJECT diffServActionInterface + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServActionNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT diffServActionSpecific + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServActionStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServActionStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServCountActNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServCountActTable is implemented + in read-only mode." + + OBJECT diffServCountActStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServCountActStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServAlgDropNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServAlgDropTable is implemented in + read-only mode." + + OBJECT diffServAlgDropType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropNext + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropQMeasure + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropQThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropSpecific + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServAlgDropStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServRandomDropNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServRandomDropTable is implemented + in read-only mode." + + OBJECT diffServRandomDropMinThreshBytes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropMinThreshPkts + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropMaxThreshBytes + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropMaxThreshPkts + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropProbMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropWeight + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropSamplingRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServRandomDropStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServQNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServQTable is implemented in + read-only mode." + + OBJECT diffServQNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServQMinRate + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServQMaxRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServQStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServQStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServSchedulerNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServSchedulerTable is implemented + in read-only mode." + + OBJECT diffServSchedulerNext + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerMethod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerMinRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerMaxRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerStorage + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT diffServSchedulerStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServMinRateNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServMinRateTable is implemented in + read-only mode." + + OBJECT diffServMinRatePriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMinRateAbsolute + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMinRateRelative + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMinRateStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMinRateStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + OBJECT diffServMaxRateNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when diffServMaxrateTable is implemented in + read-only mode." + + + + OBJECT diffServMaxRateAbsolute + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMaxRateRelative + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMaxRateThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMaxRateStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT diffServMaxRateStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only status that + needs to be supported." + + ::= { diffServMIBCompliances 2 } + +diffServMIBDataPathGroup OBJECT-GROUP + OBJECTS { + diffServDataPathStart, diffServDataPathStorage, + diffServDataPathStatus + } + STATUS current + DESCRIPTION + "The Data Path Group defines the MIB Objects that describe a + functional data path." + ::= { diffServMIBGroups 1 } + +diffServMIBClfrGroup OBJECT-GROUP + OBJECTS { + diffServClfrNextFree, diffServClfrStorage, + diffServClfrStatus + } + STATUS current + DESCRIPTION + "The Classifier Group defines the MIB Objects that describe the + + + + list the starts of individual classifiers." + ::= { diffServMIBGroups 2 } + +diffServMIBClfrElementGroup OBJECT-GROUP + OBJECTS { + diffServClfrElementNextFree, + diffServClfrElementPrecedence, diffServClfrElementNext, + diffServClfrElementSpecific, diffServClfrElementStorage, + diffServClfrElementStatus + } + STATUS current + DESCRIPTION + "The Classifier Element Group defines the MIB Objects that + describe the classifier elements that make up a generic + classifier." + ::= { diffServMIBGroups 3 } + +diffServMIBMultiFieldClfrGroup OBJECT-GROUP + OBJECTS { + diffServMultiFieldClfrNextFree, + diffServMultiFieldClfrAddrType, + diffServMultiFieldClfrDstAddr, + diffServMultiFieldClfrDstPrefixLength, + diffServMultiFieldClfrFlowId, + diffServMultiFieldClfrSrcAddr, + diffServMultiFieldClfrSrcPrefixLength, + diffServMultiFieldClfrDscp, + diffServMultiFieldClfrProtocol, + diffServMultiFieldClfrDstL4PortMin, + diffServMultiFieldClfrDstL4PortMax, + diffServMultiFieldClfrSrcL4PortMin, + diffServMultiFieldClfrSrcL4PortMax, + diffServMultiFieldClfrStorage, + diffServMultiFieldClfrStatus + } + STATUS current + DESCRIPTION + "The Multi-field Classifier Group defines the MIB Objects that + describe a classifier element for matching on various fields of + an IP and upper-layer protocol header." + ::= { diffServMIBGroups 4 } + +diffServMIBMeterGroup OBJECT-GROUP + OBJECTS { + diffServMeterNextFree, diffServMeterSucceedNext, + diffServMeterFailNext, diffServMeterSpecific, + diffServMeterStorage, diffServMeterStatus + } + + + + STATUS current + DESCRIPTION + "The Meter Group defines the objects used in describing a generic + meter element." + ::= { diffServMIBGroups 5 } + +diffServMIBTBParamGroup OBJECT-GROUP + OBJECTS { + diffServTBParamNextFree, diffServTBParamType, + diffServTBParamRate, diffServTBParamBurstSize, + diffServTBParamInterval, diffServTBParamStorage, + diffServTBParamStatus + } + STATUS current + DESCRIPTION + "The Token-Bucket Meter Group defines the objects used in + describing a token bucket meter element." + ::= { diffServMIBGroups 6 } + +diffServMIBActionGroup OBJECT-GROUP + OBJECTS { + diffServActionNextFree, diffServActionNext, + diffServActionSpecific, diffServActionStorage, + diffServActionInterface, diffServActionStatus + } + STATUS current + DESCRIPTION + "The Action Group defines the objects used in describing a + generic action element." + ::= { diffServMIBGroups 7 } + +diffServMIBDscpMarkActGroup OBJECT-GROUP + OBJECTS { + diffServDscpMarkActDscp + } + STATUS current + DESCRIPTION + "The DSCP Mark Action Group defines the objects used in + describing a DSCP Marking Action element." + ::= { diffServMIBGroups 8 } + +diffServMIBCounterGroup OBJECT-GROUP + OBJECTS { + diffServCountActOctets, diffServCountActPkts, + diffServAlgDropOctets, diffServAlgDropPkts, + diffServAlgRandomDropOctets, diffServAlgRandomDropPkts, + diffServCountActStorage, diffServCountActStatus, + diffServCountActNextFree + + + + } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + packet-oriented network interfaces." + ::= { diffServMIBGroups 9 } + +diffServMIBAlgDropGroup OBJECT-GROUP + OBJECTS { + diffServAlgDropNextFree, diffServAlgDropType, + diffServAlgDropNext, diffServAlgDropQMeasure, + diffServAlgDropQThreshold, diffServAlgDropSpecific, + diffServAlgDropStorage, diffServAlgDropStatus + } + STATUS current + DESCRIPTION + "The Algorithmic Drop Group contains the objects that describe + algorithmic dropper operation and configuration." + ::= { diffServMIBGroups 10 } + +diffServMIBRandomDropGroup OBJECT-GROUP + OBJECTS { + diffServRandomDropNextFree, + diffServRandomDropMinThreshBytes, + diffServRandomDropMinThreshPkts, + diffServRandomDropMaxThreshBytes, + diffServRandomDropMaxThreshPkts, + diffServRandomDropProbMax, + diffServRandomDropWeight, + diffServRandomDropSamplingRate, + diffServRandomDropStorage, + diffServRandomDropStatus + } + STATUS current + DESCRIPTION + "The Random Drop Group augments the Algorithmic Drop Group for + random dropper operation and configuration." + ::= { diffServMIBGroups 11 } + +diffServMIBQGroup OBJECT-GROUP + + OBJECTS { + diffServQNextFree, diffServQNext, diffServQMinRate, + diffServQMaxRate, diffServQStorage, diffServQStatus + } + STATUS current + DESCRIPTION + "The Queue Group contains the objects that describe an + + + + interface's queues." + ::= { diffServMIBGroups 12 } + +diffServMIBSchedulerGroup OBJECT-GROUP + OBJECTS { + diffServSchedulerNextFree, diffServSchedulerNext, + diffServSchedulerMethod, diffServSchedulerMinRate, + diffServSchedulerMaxRate, diffServSchedulerStorage, + diffServSchedulerStatus + } + STATUS current + DESCRIPTION + "The Scheduler Group contains the objects that describe packet + schedulers on interfaces." + ::= { diffServMIBGroups 13 } + +diffServMIBMinRateGroup OBJECT-GROUP + OBJECTS { + diffServMinRateNextFree, diffServMinRatePriority, + diffServMinRateAbsolute, diffServMinRateRelative, + diffServMinRateStorage, diffServMinRateStatus + } + STATUS current + DESCRIPTION + "The Minimum Rate Parameter Group contains the objects that + describe packet schedulers' minimum rate or priority guarantees." + ::= { diffServMIBGroups 14 } + +diffServMIBMaxRateGroup OBJECT-GROUP + OBJECTS { + diffServMaxRateNextFree, diffServMaxRateAbsolute, + diffServMaxRateRelative, diffServMaxRateThreshold, + diffServMaxRateStorage, diffServMaxRateStatus + } + STATUS current + DESCRIPTION + "The Maximum Rate Parameter Group contains the objects that + describe packet schedulers' maximum rate guarantees." + ::= { diffServMIBGroups 15 } + +END diff --git a/mibs/ietf/DIRECTORY-SERVER-MIB b/mibs/ietf/DIRECTORY-SERVER-MIB new file mode 100644 index 0000000..cfaa342 --- /dev/null +++ b/mibs/ietf/DIRECTORY-SERVER-MIB @@ -0,0 +1,788 @@ +DIRECTORY-SERVER-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, Counter32, Gauge32, OBJECT-TYPE + FROM SNMPv2-SMI + mib-2 FROM RFC1213-MIB + DisplayString, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ZeroBasedCounter32 + FROM RMON2-MIB + applIndex, DistinguishedName, URLString + + FROM NETWORK-SERVICES-MIB; + + dsMIB MODULE-IDENTITY + LAST-UPDATED "9906070000Z" + ORGANIZATION "IETF Mail and Directory Management Working + Group" + CONTACT-INFO + " Glenn Mansfield + Postal: Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, Japan 989-3204. + + Tel: +81-22-303-4012 + Fax: +81-22-303-4015 + E-mail: glenn@cysols.com + Working Group E-mail: ietf-madman@innosoft.com + To subscribe: ietf-madman-request@innosoft.com" + + DESCRIPTION + " The MIB module for monitoring Directory Services." + + -- revision information + + REVISION "9906070000Z" + DESCRIPTION + "This revision of this MIB is published in RFC 2605. + + This revision obsoletes RFC 1567. It is incompatible with + the original MIB and so it has been renamed from dsaMIB + to dsMIB." + + REVISION "9311250000Z" -- 25th November 1993 + DESCRIPTION + "The original version of this MIB was published in RFC 1567." + ::= { mib-2 66 } + + dsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The table holding information related to the Directory + Servers." + ::= {dsMIB 1} + + dsTableEntry OBJECT-TYPE + SYNTAX DsTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing summary description for a Directory + Server." + INDEX { applIndex } + ::= {dsTable 1} + +-- General description of the Directory Server application will be +-- available in the applTable of the NETWORK-SERVICES-MIB indexed by +-- applIndex. + + DsTableEntry ::= SEQUENCE { + dsServerType + BITS, + dsServerDescription + DisplayString, + + -- Entry statistics/Cache performance + dsMasterEntries + Gauge32, + dsCopyEntries + Gauge32, + dsCacheEntries + Gauge32, + dsCacheHits + Counter32, + dsSlaveHits + Counter32 + } + + dsServerType OBJECT-TYPE + SYNTAX BITS { + frontEndDirectoryServer(0), + backEndDirectoryServer(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the server is + a frontend or, a backend or, both. If the server + is a frontend, then the frontEndDirectoryServer + bit will be set. Similarly for the backend." + ::= {dsTableEntry 1} + + dsServerDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A text description of the application. This information + is intended to identify and briefly describe the + application in a status display." + ::= {dsTableEntry 2} + + +-- A (C)LDAP frontend to the X.500 Directory will not have +-- MasterEntries, CopyEntries; the following counters will +-- be inaccessible for LDAP/CLDAP frontends to the X.500 +-- directory: dsMasterEntries, dsCopyEntries, dsSlaveHits. + + dsMasterEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries mastered in the Directory Server." + ::= {dsTableEntry 3} + + dsCopyEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries for which systematic (slave) + copies are maintained in the Directory Server." + ::= {dsTableEntry 4} + + dsCacheEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries cached (non-systematic copies) in + the Directory Server. This will include the entries that + are cached partially. The negative cache is not counted." + ::= {dsTableEntry 5} + + dsCacheHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that were serviced from + the locally held cache." + ::= {dsTableEntry 6} + + dsSlaveHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that were serviced from + the locally held object replications ( copy- + entries)." + ::= {dsTableEntry 7} + + dsApplIfOpsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsApplIfOpsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The table holding information related to the + Directory Server operations." + ::= {dsMIB 2} + + dsApplIfOpsEntry OBJECT-TYPE + SYNTAX DsApplIfOpsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing operations related statistics + for a Directory Server." + INDEX { applIndex, dsApplIfProtocolIndex } + ::= {dsApplIfOpsTable 1} + DsApplIfOpsEntry ::= SEQUENCE { + + dsApplIfProtocolIndex + INTEGER, + dsApplIfProtocol + OBJECT IDENTIFIER, + + -- Bindings + + dsApplIfUnauthBinds + Counter32, + dsApplIfSimpleAuthBinds + Counter32, + dsApplIfStrongAuthBinds + Counter32, + dsApplIfBindSecurityErrors + Counter32, + + -- In-coming operations + + dsApplIfInOps + Counter32, + dsApplIfReadOps + Counter32, + dsApplIfCompareOps + Counter32, + dsApplIfAddEntryOps + Counter32, + dsApplIfRemoveEntryOps + Counter32, + dsApplIfModifyEntryOps + Counter32, + dsApplIfModifyRDNOps + Counter32, + dsApplIfListOps + Counter32, + dsApplIfSearchOps + Counter32, + dsApplIfOneLevelSearchOps + Counter32, + dsApplIfWholeSubtreeSearchOps + Counter32, + + -- Out going operations + + dsApplIfReferrals + Counter32, + dsApplIfChainings + Counter32, + + -- Errors + + dsApplIfSecurityErrors + Counter32, + dsApplIfErrors + Counter32, + +-- replications + + dsApplIfReplicationUpdatesIn + Counter32, + dsApplIfReplicationUpdatesOut + Counter32, + + -- Traffic Volume + + dsApplIfInBytes + Counter32, + dsApplIfOutBytes + Counter32 + } + + -- CLDAP does not use binds; for the CLDAP interface of a Directory + -- Server the bind related counters will be inaccessible. + -- + -- CLDAP and LDAP implement "Read" and "List" operations + -- indirectly via the "search" operation; the following + -- counters will be inaccessible for the CLDAP and LDAP interfaces of + -- Directory Servers: dsApplIfReadOps, dsApplIfListOps + -- + -- CLDAP does not implement "Compare", "Add", "Remove", + -- "Modify", "ModifyRDN"; the following counters will be + -- inaccessible for the CLDAP interfaces of Directory Servers: + -- dsApplIfCompareOps, dsApplIfAddEntryOps, dsApplIfRemoveEntryOps, + -- dsApplIfModifyEntryOps, dsApplIfModifyRDNOps. + -- + -- CLDAP Directory Servers do not return Referrals + -- the following fields will remain inaccessible for + -- CLDAP interfaces of Directory Servers: dsApplIfReferrals. + + dsApplIfProtocolIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index to uniquely identify an entry corresponding to a + application-layer protocol interface. This index is used + for lexicographic ordering of the table." + ::= {dsApplIfOpsEntry 1} + + dsApplIfProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identification of the protocol being used by the application + on this interface. For an OSI Application, this will be the + Application Context. For Internet applications, the IANA + maintains a registry[22] of the OIDs which correspond to + well-known applications. If the application protocol is + not listed in the registry, an OID value of the form + {applTCPProtoID port} or {applUDProtoID port} are used for + TCP-based and UDP-based protocols, respectively. In either + case 'port' corresponds to the primary port number being + used by the protocol. The OIDs applTCPProtoID and + applUDPProtoID are defined in NETWORK-SERVICES-MIB" + ::= {dsApplIfOpsEntry 2} + + dsApplIfUnauthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of unauthenticated/anonymous bind requests + received." + ::= {dsApplIfOpsEntry 3} + + dsApplIfSimpleAuthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of bind requests that were authenticated + using simple authentication procedures like password + checks. This includes the + password authentication using SASL mechanisms like + CRAM-MD5." + ::= {dsApplIfOpsEntry 4} + + dsApplIfStrongAuthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of bind requests that were authenticated + using TLS and X.500 strong authentication procedures. + This includes the binds that were + authenticated using external authentication procedures." + ::= {dsApplIfOpsEntry 5} + + dsApplIfBindSecurityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of bind requests that have been rejected + due to inappropriate authentication or + invalid credentials." + ::= {dsApplIfOpsEntry 6} + + dsApplIfInOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of requests received from DUAs or other + Directory Servers." + ::= {dsApplIfOpsEntry 7} + + dsApplIfReadOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of read requests received." + ::= {dsApplIfOpsEntry 8} + + + dsApplIfCompareOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of compare requests received." + ::= {dsApplIfOpsEntry 9} + + dsApplIfAddEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of addEntry requests received." + ::= {dsApplIfOpsEntry 10} + + + dsApplIfRemoveEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of removeEntry requests received." + ::= {dsApplIfOpsEntry 11} + + + dsApplIfModifyEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of modifyEntry requests received." + ::= {dsApplIfOpsEntry 12} + + + dsApplIfModifyRDNOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of modifyRDN requests received." + ::= {dsApplIfOpsEntry 13} + + dsApplIfListOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of list requests received." + ::= {dsApplIfOpsEntry 14} + + dsApplIfSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of search requests- baseObject searches, + oneLevel searches and whole subtree searches, + received." + ::= {dsApplIfOpsEntry 15} + + dsApplIfOneLevelSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of oneLevel search requests received." + ::= {dsApplIfOpsEntry 16} + + + dsApplIfWholeSubtreeSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of whole subtree search requests received." + ::= {dsApplIfOpsEntry 17} + + + dsApplIfReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of referrals returned in response + to requests for operations." + ::= {dsApplIfOpsEntry 18} + + dsApplIfChainings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations forwarded by this Directory Server + to other Directory Servers." + ::= {dsApplIfOpsEntry 19} + + dsApplIfSecurityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of requests received + which did not meet the security requirements. " + ::= {dsApplIfOpsEntry 20} + + dsApplIfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of requests that could not be serviced + due to errors other than security errors, and + referrals. + A partially serviced operation will not be counted + as an error. + The errors include naming-related, update-related, + attribute-related and service-related errors." + ::= {dsApplIfOpsEntry 21} + +-- Replication operations + + dsApplIfReplicationUpdatesIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of replication updates fetched or received from + supplier Directory Servers." + ::= {dsApplIfOpsEntry 22} + + dsApplIfReplicationUpdatesOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of replication updates sent to or taken by + consumer Directory Servers." + ::= {dsApplIfOpsEntry 23} + + dsApplIfInBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Incoming traffic, in bytes, on the interface. + This will include requests from DUAs as well + as responses from other Directory Servers." + ::= {dsApplIfOpsEntry 24} + + dsApplIfOutBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Outgoing traffic in bytes on the interface. + This will include responses to DUAs and Directory + Servers as well as requests to other Directory Servers." + ::= {dsApplIfOpsEntry 25} + + + -- The dsIntTable contains statistical data on the peer + -- Directory Servers with which the monitored Directory + -- Server interacts or, attempts to interact. This table is + -- expected to provide a useful insight into the effect of + -- neighbours on the Directory Server's performance. + -- The table keeps track of the last "N" Directory Servers + -- with which the monitored Directory has interacted + -- (attempted to interact), where "N" is a locally-defined + -- constant. + -- For a multiprotocol server, statistics for each protocol + + -- are kept separetely. + + dsIntTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIntEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Each row of this table contains some details + related to the history of the interaction + of the monitored Directory Server with its + peer Directory Servers." + ::= { dsMIB 3 } + + dsIntEntry OBJECT-TYPE + SYNTAX DsIntEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing interaction details of a Directory + Server with a peer Directory Server." + INDEX { applIndex,dsIntEntIndex, dsApplIfProtocolIndex } + ::= { dsIntTable 1 } + + DsIntEntry ::= SEQUENCE { + dsIntEntIndex + INTEGER, + dsIntEntDirectoryName + DistinguishedName, + dsIntEntTimeOfCreation + TimeStamp, + dsIntEntTimeOfLastAttempt + TimeStamp, + dsIntEntTimeOfLastSuccess + TimeStamp, + dsIntEntFailuresSinceLastSuccess + Gauge32, + dsIntEntFailures + ZeroBasedCounter32, + dsIntEntSuccesses + ZeroBasedCounter32, + dsIntEntURL + URLString + } + + dsIntEntIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Together with applIndex and dsApplIfProtocolIndex, this + object forms the unique key to + identify the conceptual row which contains useful info + on the (attempted) interaction between the Directory + Server (referred to by applIndex) and a peer Directory + Server using a particular protocol." + ::= {dsIntEntry 1} + + dsIntEntDirectoryName OBJECT-TYPE + SYNTAX DistinguishedName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Distinguished Name of the peer Directory Server to + which this entry pertains." + ::= {dsIntEntry 2} + + dsIntEntTimeOfCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when this row was created. + If the entry was created before the network management + subsystem was initialized, this object will contain + a value of zero." + ::= {dsIntEntry 3} + + dsIntEntTimeOfLastAttempt OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the last attempt was made + to contact the peer Directory Server. If the last attempt + was made before the network management subsystem was + initialized, this object will contain a value of zero." + ::= {dsIntEntry 4} + + dsIntEntTimeOfLastSuccess OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the last attempt made to + contact the peer Directory Server was successful. If there + have been no successful attempts this entry will have a value + of zero. If the last successful attempt was made before + the network management subsystem was initialized, this + object will contain a value of zero." + ::= {dsIntEntry 5} + + dsIntEntFailuresSinceLastSuccess OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The number of failures since the last time an + attempt to contact the peer Directory Server was successful. + If there have been no successful attempts, this counter + will contain the number of failures since this entry + was created." + ::= {dsIntEntry 6} + +-- note this gauge has a maximum value of 4294967295 and, +-- it does not wrap.[5] + + dsIntEntFailures OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Cumulative failures in contacting the peer Directory Server + since the creation of this entry." + ::= {dsIntEntry 7} + + dsIntEntSuccesses OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Cumulative successes in contacting the peer Directory Server + since the creation of this entry." + ::= {dsIntEntry 8} + + dsIntEntURL OBJECT-TYPE + SYNTAX URLString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " URL of the peer Directory Server." + ::= {dsIntEntry 9} + + + -- Conformance information + dsConformance OBJECT IDENTIFIER ::= { dsMIB 4 } + + dsGroups OBJECT IDENTIFIER ::= { dsConformance 1 } + dsCompliances OBJECT IDENTIFIER ::= { dsConformance 2 } + + -- Compliance statements + + dsEntryCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which implement the DIRECTORY-SERVER-MIB for + a summary overview of the Directory Servers ." + + MODULE -- this module + MANDATORY-GROUPS { dsEntryGroup } + + ::= { dsCompliances 1 } + + dsOpsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which implement the DIRECTORY-SERVER-MIB for monitoring + Directory Server operations, entry statistics and cache + performance." + + MODULE -- this module + MANDATORY-GROUPS { dsEntryGroup, dsOpsGroup } + + ::= { dsCompliances 2 } + + dsIntCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for SNMP entities + which implement the DIRECTORY-SERVER-MIB for + monitoring Directory Server operations and the + interaction of the Directory Server with peer + Directory Servers." + + MODULE -- this module + MANDATORY-GROUPS { dsEntryGroup, dsIntGroup } + + ::= { dsCompliances 3 } + + dsOpsIntCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for SNMP entities + which implement the DIRECTORY-SERVER-MIB for monitoring + Directory Server operations and the interaction of the + Directory Server with peer Directory Servers." + + MODULE -- this module + MANDATORY-GROUPS { dsEntryGroup, dsOpsGroup, dsIntGroup } + + ::= { dsCompliances 4 } + + + -- Units of conformance + + dsEntryGroup OBJECT-GROUP + OBJECTS {dsServerType, dsServerDescription, + dsMasterEntries, dsCopyEntries, + dsCacheEntries, dsCacheHits, + dsSlaveHits} + STATUS current + DESCRIPTION + " A collection of objects for a summary overview of the + Directory Servers." + ::= { dsGroups 1 } + + dsOpsGroup OBJECT-GROUP + OBJECTS { + dsApplIfProtocolIndex, dsApplIfProtocol, + dsApplIfUnauthBinds, dsApplIfSimpleAuthBinds, + dsApplIfStrongAuthBinds, dsApplIfBindSecurityErrors, + dsApplIfInOps, dsApplIfReadOps, + dsApplIfCompareOps, dsApplIfAddEntryOps, + dsApplIfRemoveEntryOps, dsApplIfModifyEntryOps, + dsApplIfModifyRDNOps, dsApplIfListOps, + dsApplIfSearchOps, dsApplIfOneLevelSearchOps, + dsApplIfWholeSubtreeSearchOps, dsApplIfReferrals, + dsApplIfChainings, dsApplIfSecurityErrors, + dsApplIfErrors, dsApplIfReplicationUpdatesIn, + dsApplIfReplicationUpdatesOut, dsApplIfInBytes, + dsApplIfOutBytes } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the Directory + Server operations." + ::= { dsGroups 2 } + + dsIntGroup OBJECT-GROUP + OBJECTS { + dsIntEntDirectoryName, dsIntEntTimeOfCreation, + dsIntEntTimeOfLastAttempt, dsIntEntTimeOfLastSuccess, + dsIntEntFailuresSinceLastSuccess, dsIntEntFailures, + dsIntEntSuccesses, dsIntEntURL} + STATUS current + DESCRIPTION + " A collection of objects for monitoring the Directory + Server's interaction with peer Directory Servers." + ::= { dsGroups 3 } + + +END diff --git a/mibs/ietf/DISMAN-EVENT-MIB b/mibs/ietf/DISMAN-EVENT-MIB new file mode 100644 index 0000000..bde1cdb --- /dev/null +++ b/mibs/ietf/DISMAN-EVENT-MIB @@ -0,0 +1,1955 @@ +DISMAN-EVENT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Unsigned32, + NOTIFICATION-TYPE, Counter32, + Gauge32, mib-2, zeroDotZero FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, + TruthValue FROM SNMPv2-TC + + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + sysUpTime FROM SNMPv2-MIB + SnmpTagValue FROM SNMP-TARGET-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + +dismanEventMIB MODULE-IDENTITY + LAST-UPDATED "200010160000Z" -- 16 October 2000 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO "Ramanathan Kavasseri + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 526 4527 + Email: ramk@cisco.com" + DESCRIPTION + "The MIB module for defining event triggers and actions + for network management purposes." +-- Revision History + + REVISION "200010160000Z" -- 16 October 2000 + DESCRIPTION "This is the initial version of this MIB. + Published as RFC 2981" + ::= { mib-2 88 } + +dismanEventMIBObjects OBJECT IDENTIFIER ::= { dismanEventMIB 1 } + +-- Management Triggered Event (MTE) objects + +mteResource OBJECT IDENTIFIER ::= { dismanEventMIBObjects 1 } +mteTrigger OBJECT IDENTIFIER ::= { dismanEventMIBObjects 2 } +mteObjects OBJECT IDENTIFIER ::= { dismanEventMIBObjects 3 } +mteEvent OBJECT IDENTIFIER ::= { dismanEventMIBObjects 4 } + +-- +-- Textual Conventions +-- + +FailureReason ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Reasons for failures in an attempt to perform a management + request. + + The first group of errors, numbered less than 0, are related + to problems in sending the request. The existence of a + particular error code here does not imply that all + implementations are capable of sensing that error and + + + returning that code. + + The second group, numbered greater than 0, are copied + directly from SNMP protocol operations and are intended to + carry exactly the meanings defined for the protocol as returned + in an SNMP response. + + localResourceLack some local resource such as memory + lacking or + mteResourceSampleInstanceMaximum + exceeded + badDestination unrecognized domain name or otherwise + invalid destination address + destinationUnreachable can't get to destination address + noResponse no response to SNMP request + badType the data syntax of a retrieved object + as not as expected + sampleOverrun another sample attempt occurred before + the previous one completed" + + SYNTAX INTEGER { localResourceLack(-1), + badDestination(-2), + destinationUnreachable(-3), + noResponse(-4), + badType(-5), + sampleOverrun(-6), + + noError(0), + + tooBig(1), + noSuchName(2), + badValue(3), + readOnly(4), + genErr(5), + noAccess(6), + wrongType(7), + wrongLength(8), + wrongEncoding(9), + wrongValue(10), + noCreation(11), + inconsistentValue(12), + resourceUnavailable(13), + commitFailed(14), + undoFailed(15), + authorizationError(16), + notWritable(17), + inconsistentName(18) } +-- + + +-- Resource Control Section +-- + +mteResourceSampleMinimum OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum mteTriggerFrequency this system will + accept. A system may use the larger values of this minimum to + lessen the impact of constant sampling. For larger + sampling intervals the system samples less often and + suffers less overhead. This object provides a way to enforce + such lower overhead for all triggers created after it is + set. + + Unless explicitly resource limited, a system's value for + this object SHOULD be 1, allowing as small as a 1 second + interval for ongoing trigger sampling. + + Changing this value will not invalidate an existing setting + of mteTriggerFrequency." + ::= { mteResource 1 } + +mteResourceSampleInstanceMaximum OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "instances" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of instance entries this system will + support for sampling. + + These are the entries that maintain state, one for each + instance of each sampled object as selected by + mteTriggerValueID. Note that wildcarded objects result + in multiple instances of this state. + + A value of 0 indicates no preset limit, that is, the limit + is dynamic based on system operation and resources. + + Unless explicitly resource limited, a system's value for + this object SHOULD be 0. + + Changing this value will not eliminate or inhibit existing + sample state but could prevent allocation of additional state + information." + + + ::= { mteResource 2 } + +mteResourceSampleInstances OBJECT-TYPE + SYNTAX Gauge32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active instance entries as + defined for mteResourceSampleInstanceMaximum." + ::= { mteResource 3 } + +mteResourceSampleInstancesHigh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest value of mteResourceSampleInstances that has + occurred since initialization of the management system." + ::= { mteResource 4 } + +mteResourceSampleInstanceLacks OBJECT-TYPE + SYNTAX Counter32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this system could not take a new sample + because that allocation would have exceeded the limit set by + mteResourceSampleInstanceMaximum." + ::= { mteResource 5 } + +-- +-- Trigger Section +-- + +-- Counters + +mteTriggerFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failures" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an attempt to check for a trigger + condition has failed. This counts individually for each + attempt in a group of targets or each attempt for a + + + wildcarded object." + ::= { mteTrigger 1 } + +-- +-- Trigger Table +-- + +mteTriggerTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information." + ::= { mteTrigger 2 } + +mteTriggerEntry OBJECT-TYPE + SYNTAX MteTriggerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single trigger. Applications create and + delete entries using mteTriggerEntryStatus." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerTable 1 } + +MteTriggerEntry ::= SEQUENCE { + mteOwner SnmpAdminString, + mteTriggerName SnmpAdminString, + mteTriggerComment SnmpAdminString, + mteTriggerTest BITS, + mteTriggerSampleType INTEGER, + mteTriggerValueID OBJECT IDENTIFIER, + mteTriggerValueIDWildcard TruthValue, + mteTriggerTargetTag SnmpTagValue, + mteTriggerContextName SnmpAdminString, + mteTriggerContextNameWildcard TruthValue, + mteTriggerFrequency Unsigned32, + mteTriggerObjectsOwner SnmpAdminString, + mteTriggerObjects SnmpAdminString, + mteTriggerEnabled TruthValue, + mteTriggerEntryStatus RowStatus +} + +mteOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "The owner of this entry. The exact semantics of this + string are subject to the security policy defined by the + security administrator." + ::= { mteTriggerEntry 1 } + +mteTriggerName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally-unique, administratively assigned name for the + trigger within the scope of mteOwner." + ::= { mteTriggerEntry 2 } + +mteTriggerComment OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A description of the trigger's function and use." + DEFVAL { ''H } + ::= { mteTriggerEntry 3 } + +mteTriggerTest OBJECT-TYPE + SYNTAX BITS { existence(0), boolean(1), threshold(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of trigger test to perform. For 'boolean' and + 'threshold' tests, the object at mteTriggerValueID MUST + evaluate to an integer, that is, anything that ends up encoded + for transmission (that is, in BER, not ASN.1) as an integer. + + For 'existence', the specific test is as selected by + mteTriggerExistenceTest. When an object appears, vanishes + or changes value, the trigger fires. If the object's + appearance caused the trigger firing, the object MUST + vanish before the trigger can be fired again for it, and + vice versa. If the trigger fired due to a change in the + object's value, it will be fired again on every successive + value change for that object. + + For 'boolean', the specific test is as selected by + mteTriggerBooleanTest. If the test result is true the trigger + fires. The trigger will not fire again until the value has + become false and come back to true. + + For 'threshold' the test works as described below for + + + mteTriggerThresholdStartup, mteTriggerThresholdRising, and + mteTriggerThresholdFalling. + + Note that combining 'boolean' and 'threshold' tests on the + same object may be somewhat redundant." + DEFVAL { { boolean } } + ::= { mteTriggerEntry 4 } + +mteTriggerSampleType OBJECT-TYPE + SYNTAX INTEGER { absoluteValue(1), deltaValue(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of sampling to perform. + + An 'absoluteValue' sample requires only a single sample to be + meaningful, and is exactly the value of the object at + mteTriggerValueID at the sample time. + + A 'deltaValue' requires two samples to be meaningful and is + thus not available for testing until the second and subsequent + samples after the object at mteTriggerValueID is first found + to exist. It is the difference between the two samples. For + unsigned values it is always positive, based on unsigned + arithmetic. For signed values it can be positive or negative. + + For SNMP counters to be meaningful they should be sampled as a + 'deltaValue'. + + For 'deltaValue' mteTriggerDeltaTable contains further + parameters. + + If only 'existence' is set in mteTriggerTest this object has + no meaning." + DEFVAL { absoluteValue } + ::= { mteTriggerEntry 5 } + +mteTriggerValueID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of the MIB object to sample to see + if the trigger should fire. + + This may be wildcarded by truncating all or part of the + instance portion, in which case the value is obtained + as if with a GetNext function, checking multiple values + + + if they exist. If such wildcarding is applied, + mteTriggerValueIDWildcard must be 'true' and if not it must + be 'false'. + + Bad object identifiers or a mismatch between truncating the + identifier and the value of mteTriggerValueIDWildcard result + in operation as one would expect when providing the wrong + identifier to a Get or GetNext operation. The Get will fail + or get the wrong object. The GetNext will indeed get whatever + is next, proceeding until it runs past the initial part of the + identifier and perhaps many unintended objects for confusing + results. If the value syntax of those objects is not usable, + that results in a 'badType' error that terminates the scan. + + Each instance that fills the wildcard is independent of any + additional instances, that is, wildcarded objects operate + as if there were a separate table entry for each instance + that fills the wildcard without having to actually predict + all possible instances ahead of time." + DEFVAL { zeroDotZero } + ::= { mteTriggerEntry 6 } + +mteTriggerValueIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for whether mteTriggerValueID is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard." + DEFVAL { false } + ::= { mteTriggerEntry 7 } + +mteTriggerTargetTag OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The tag for the target(s) from which to obtain the condition + for a trigger check. + + A length of 0 indicates the local system. In this case, + access to the objects indicated by mteTriggerValueID is under + the security credentials of the requester that set + mteTriggerEntryStatus to 'active'. Those credentials are the + input parameters for isAccessAllowed from the Architecture for + Describing SNMP Management Frameworks. + + Otherwise access rights are checked according to the security + + + parameters resulting from the tag." + DEFVAL { ''H } + ::= { mteTriggerEntry 8 } + +mteTriggerContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The management context from which to obtain mteTriggerValueID. + + This may be wildcarded by leaving characters off the end. For + example use 'Repeater' to wildcard to 'Repeater1', + 'Repeater2', 'Repeater-999.87b', and so on. To indicate such + wildcarding is intended, mteTriggerContextNameWildcard must + be 'true'. + + Each instance that fills the wildcard is independent of any + additional instances, that is, wildcarded objects operate + as if there were a separate table entry for each instance + that fills the wildcard without having to actually predict + all possible instances ahead of time. + + Operation of this feature assumes that the local system has a + list of available contexts against which to apply the + wildcard. If the objects are being read from the local + system, this is clearly the system's own list of contexts. + For a remote system a local version of such a list is not + defined by any current standard and may not be available, so + this function MAY not be supported." + DEFVAL { ''H } + ::= { mteTriggerEntry 9 } + +mteTriggerContextNameWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for whether mteTriggerContextName is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard." + DEFVAL { false } + ::= { mteTriggerEntry 10 } + +mteTriggerFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + + + DESCRIPTION + "The number of seconds to wait between trigger samples. To + encourage consistency in sampling, the interval is measured + from the beginning of one check to the beginning of the next + and the timer is restarted immediately when it expires, not + when the check completes. + + If the next sample begins before the previous one completed the + system may either attempt to make the check or treat this as an + error condition with the error 'sampleOverrun'. + + A frequency of 0 indicates instantaneous recognition of the + condition. This is not possible in many cases, but may + be supported in cases where it makes sense and the system is + able to do so. This feature allows the MIB to be used in + implementations where such interrupt-driven behavior is + possible and is not likely to be supported for all MIB objects + even then since such sampling generally has to be tightly + integrated into low-level code. + + Systems that can support this SHOULD document those cases + where it can be used. In cases where it can not, setting this + object to 0 should be disallowed." + DEFVAL { 600 } + ::= { mteTriggerEntry 11 } + +mteTriggerObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "To go with mteTriggerObjects, the mteOwner of a group of + objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteTriggerEntry 12 } + +mteTriggerObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable. These objects are to be added to any + Notification resulting from the firing of this trigger. + + A list of objects may also be added based on the event or on + the value of mteTriggerTest. + + + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteTriggerEntry 13 } + +mteTriggerEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control to allow a trigger to be configured but not used. + When the value is 'false' the trigger is not sampled." + DEFVAL { false } + ::= { mteTriggerEntry 14 } + +mteTriggerEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The control that allows creation and deletion of entries. + Once made active an entry may not be modified except to + delete it." + ::= { mteTriggerEntry 15 } + +-- +-- Trigger Delta Table +-- + +mteTriggerDeltaTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerDeltaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information for delta + sampling." + ::= { mteTrigger 3 } + +mteTriggerDeltaEntry OBJECT-TYPE + SYNTAX MteTriggerDeltaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single trigger's delta sampling. Entries + automatically exist in this this table for each mteTriggerEntry + that has mteTriggerSampleType set to 'deltaValue'." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerDeltaTable 1 } + + + +MteTriggerDeltaEntry ::= SEQUENCE { + mteTriggerDeltaDiscontinuityID OBJECT IDENTIFIER, + mteTriggerDeltaDiscontinuityIDWildcard TruthValue, + mteTriggerDeltaDiscontinuityIDType INTEGER +} + +sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 } + +mteTriggerDeltaDiscontinuityID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The OBJECT IDENTIFIER (OID) of a TimeTicks, TimeStamp, or + DateAndTime object that indicates a discontinuity in the value + at mteTriggerValueID. + + The OID may be for a leaf object (e.g. sysUpTime.0) or may + be wildcarded to match mteTriggerValueID. + + This object supports normal checking for a discontinuity in a + counter. Note that if this object does not point to sysUpTime + discontinuity checking MUST still check sysUpTime for an overall + discontinuity. + + If the object identified is not accessible the sample attempt + is in error, with the error code as from an SNMP request. + + Bad object identifiers or a mismatch between truncating the + identifier and the value of mteDeltaDiscontinuityIDWildcard + result in operation as one would expect when providing the + wrong identifier to a Get operation. The Get will fail or get + the wrong object. If the value syntax of those objects is not + usable, that results in an error that terminates the sample + with a 'badType' error code." + DEFVAL { sysUpTimeInstance } + ::= { mteTriggerDeltaEntry 1 } + +mteTriggerDeltaDiscontinuityIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control for whether mteTriggerDeltaDiscontinuityID is to be + treated as fully-specified or wildcarded, with 'true' + indicating wildcard. Note that the value of this object will + be the same as that of the corresponding instance of + mteTriggerValueIDWildcard when the corresponding + + + mteTriggerSampleType is 'deltaValue'." + DEFVAL { false } + ::= { mteTriggerDeltaEntry 2 } + +mteTriggerDeltaDiscontinuityIDType OBJECT-TYPE + SYNTAX INTEGER { timeTicks(1), timeStamp(2), dateAndTime(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value 'timeTicks' indicates the + mteTriggerDeltaDiscontinuityID of this row is of syntax + TimeTicks. The value 'timeStamp' indicates syntax TimeStamp. + The value 'dateAndTime' indicates syntax DateAndTime." + DEFVAL { timeTicks } + ::= { mteTriggerDeltaEntry 3 } + +-- +-- Trigger Existence Table +-- + +mteTriggerExistenceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerExistenceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information for existence + triggers." + ::= { mteTrigger 4 } + +mteTriggerExistenceEntry OBJECT-TYPE + SYNTAX MteTriggerExistenceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single existence trigger. Entries + automatically exist in this this table for each mteTriggerEntry + that has 'existence' set in mteTriggerTest." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerExistenceTable 1 } + +MteTriggerExistenceEntry ::= SEQUENCE { + mteTriggerExistenceTest BITS, + mteTriggerExistenceStartup BITS, + mteTriggerExistenceObjectsOwner SnmpAdminString, + mteTriggerExistenceObjects SnmpAdminString, + mteTriggerExistenceEventOwner SnmpAdminString, + mteTriggerExistenceEvent SnmpAdminString +} + + +mteTriggerExistenceTest OBJECT-TYPE + SYNTAX BITS { present(0), absent(1), changed(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of existence test to perform. The trigger fires + when the object at mteTriggerValueID is seen to go from + present to absent, from absent to present, or to have it's + value changed, depending on which tests are selected: + + present(0) - when this test is selected, the trigger fires + when the mteTriggerValueID object goes from absent to present. + + absent(1) - when this test is selected, the trigger fires + when the mteTriggerValueID object goes from present to absent. + changed(2) - when this test is selected, the trigger fires + the mteTriggerValueID object value changes. + + Once the trigger has fired for either presence or absence it + will not fire again for that state until the object has been + to the other state. " + DEFVAL { { present, absent } } + ::= { mteTriggerExistenceEntry 1 } + +mteTriggerExistenceStartup OBJECT-TYPE + SYNTAX BITS { present(0), absent(1) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control for whether an event may be triggered when this entry + is first set to 'active' and the test specified by + mteTriggerExistenceTest is true. Setting an option causes + that trigger to fire when its test is true." + DEFVAL { { present, absent } } + ::= { mteTriggerExistenceEntry 2 } + +mteTriggerExistenceObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerExistenceObjects, the mteOwner of a + group of objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteTriggerExistenceEntry 3 } + +mteTriggerExistenceObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable. These objects are to be added to any + Notification resulting from the firing of this trigger for + this test. + + A list of objects may also be added based on the overall + trigger, the event or other settings in mteTriggerTest. + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteTriggerExistenceEntry 4 } + +mteTriggerExistenceEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerExistenceEvent, the mteOwner of an event + entry from the mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerExistenceEntry 5 } + +mteTriggerExistenceEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'existence' and this trigger fires. A length of 0 indicates no + event." + DEFVAL { ''H } + ::= { mteTriggerExistenceEntry 6 } + +-- +-- Trigger Boolean Table +-- + +mteTriggerBooleanTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerBooleanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information for boolean + triggers." + ::= { mteTrigger 5 } + + +mteTriggerBooleanEntry OBJECT-TYPE + SYNTAX MteTriggerBooleanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single boolean trigger. Entries + automatically exist in this this table for each mteTriggerEntry + that has 'boolean' set in mteTriggerTest." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerBooleanTable 1 } + +MteTriggerBooleanEntry ::= SEQUENCE { + mteTriggerBooleanComparison INTEGER, + mteTriggerBooleanValue Integer32, + mteTriggerBooleanStartup TruthValue, + mteTriggerBooleanObjectsOwner SnmpAdminString, + mteTriggerBooleanObjects SnmpAdminString, + mteTriggerBooleanEventOwner SnmpAdminString, + mteTriggerBooleanEvent SnmpAdminString +} + +mteTriggerBooleanComparison OBJECT-TYPE + SYNTAX INTEGER { unequal(1), equal(2), + less(3), lessOrEqual(4), + greater(5), greaterOrEqual(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of boolean comparison to perform. + + The value at mteTriggerValueID is compared to + mteTriggerBooleanValue, so for example if + mteTriggerBooleanComparison is 'less' the result would be true + if the value at mteTriggerValueID is less than the value of + mteTriggerBooleanValue." + DEFVAL { unequal } + ::= { mteTriggerBooleanEntry 1 } + +mteTriggerBooleanValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value to use for the test specified by + mteTriggerBooleanTest." + DEFVAL { 0 } + ::= { mteTriggerBooleanEntry 2 } + + + +mteTriggerBooleanStartup OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control for whether an event may be triggered when this entry + is first set to 'active' or a new instance of the object at + mteTriggerValueID is found and the test specified by + mteTriggerBooleanComparison is true. In that case an event is + triggered if mteTriggerBooleanStartup is 'true'." + DEFVAL { true } + ::= { mteTriggerBooleanEntry 3 } + +mteTriggerBooleanObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerBooleanObjects, the mteOwner of a group + of objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteTriggerBooleanEntry 4 } + +mteTriggerBooleanObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable. These objects are to be added to any + Notification resulting from the firing of this trigger for + this test. + + A list of objects may also be added based on the overall + trigger, the event or other settings in mteTriggerTest. + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteTriggerBooleanEntry 5 } + +mteTriggerBooleanEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerBooleanEvent, the mteOwner of an event + entry from mteEventTable." + DEFVAL { ''H } + + + ::= { mteTriggerBooleanEntry 6 } + +mteTriggerBooleanEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'boolean' and this trigger fires. A length of 0 indicates no + event." + DEFVAL { ''H } + ::= { mteTriggerBooleanEntry 7 } + +-- +-- Trigger Threshold Table +-- + +mteTriggerThresholdTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteTriggerThresholdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event trigger information for threshold + triggers." + ::= { mteTrigger 6 } + +mteTriggerThresholdEntry OBJECT-TYPE + SYNTAX MteTriggerThresholdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single threshold trigger. Entries + automatically exist in this table for each mteTriggerEntry + that has 'threshold' set in mteTriggerTest." + INDEX { mteOwner, IMPLIED mteTriggerName } + ::= { mteTriggerThresholdTable 1 } + +MteTriggerThresholdEntry ::= SEQUENCE { + mteTriggerThresholdStartup INTEGER, + mteTriggerThresholdRising Integer32, + mteTriggerThresholdFalling Integer32, + mteTriggerThresholdDeltaRising Integer32, + mteTriggerThresholdDeltaFalling Integer32, + mteTriggerThresholdObjectsOwner SnmpAdminString, + mteTriggerThresholdObjects SnmpAdminString, + mteTriggerThresholdRisingEventOwner SnmpAdminString, + mteTriggerThresholdRisingEvent SnmpAdminString, + mteTriggerThresholdFallingEventOwner SnmpAdminString, + + + mteTriggerThresholdFallingEvent SnmpAdminString, + mteTriggerThresholdDeltaRisingEventOwner SnmpAdminString, + mteTriggerThresholdDeltaRisingEvent SnmpAdminString, + mteTriggerThresholdDeltaFallingEventOwner SnmpAdminString, + mteTriggerThresholdDeltaFallingEvent SnmpAdminString +} + +mteTriggerThresholdStartup OBJECT-TYPE + SYNTAX INTEGER { rising(1), falling(2), risingOrFalling(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The event that may be triggered when this entry is first + set to 'active' and a new instance of the object at + mteTriggerValueID is found. If the first sample after this + instance becomes active is greater than or equal to + mteTriggerThresholdRising and mteTriggerThresholdStartup is + equal to 'rising' or 'risingOrFalling', then one + mteTriggerThresholdRisingEvent is triggered for that instance. + If the first sample after this entry becomes active is less + than or equal to mteTriggerThresholdFalling and + mteTriggerThresholdStartup is equal to 'falling' or + 'risingOrFalling', then one mteTriggerThresholdRisingEvent is + triggered for that instance." + DEFVAL { risingOrFalling } + ::= { mteTriggerThresholdEntry 1 } + +mteTriggerThresholdRising OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A threshold value to check against if mteTriggerType is + 'threshold'. + + When the current sampled value is greater than or equal to + this threshold, and the value at the last sampling interval + was less than this threshold, one + mteTriggerThresholdRisingEvent is triggered. That event is + also triggered if the first sample after this entry becomes + active is greater than or equal to this threshold and + mteTriggerThresholdStartup is equal to 'rising' or + 'risingOrFalling'. + + After a rising event is generated, another such event is not + triggered until the sampled value falls below this threshold + and reaches mteTriggerThresholdFalling." + DEFVAL { 0 } + + + ::= { mteTriggerThresholdEntry 2 } + +mteTriggerThresholdFalling OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A threshold value to check against if mteTriggerType is + 'threshold'. + + When the current sampled value is less than or equal to this + threshold, and the value at the last sampling interval was + greater than this threshold, one + mteTriggerThresholdFallingEvent is triggered. That event is + also triggered if the first sample after this entry becomes + active is less than or equal to this threshold and + mteTriggerThresholdStartup is equal to 'falling' or + 'risingOrFalling'. + + After a falling event is generated, another such event is not + triggered until the sampled value rises above this threshold + and reaches mteTriggerThresholdRising." + DEFVAL { 0 } + ::= { mteTriggerThresholdEntry 3 } + +mteTriggerThresholdDeltaRising OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A threshold value to check against if mteTriggerType is + 'threshold'. + + When the delta value (difference) between the current sampled + value (value(n)) and the previous sampled value (value(n-1)) + is greater than or equal to this threshold, + and the delta value calculated at the last sampling interval + (i.e. value(n-1) - value(n-2)) was less than this threshold, + one mteTriggerThresholdDeltaRisingEvent is triggered. That event + is also triggered if the first delta value calculated after this + entry becomes active, i.e. value(2) - value(1), where value(1) + is the first sample taken of that instance, is greater than or + equal to this threshold. + + After a rising event is generated, another such event is not + triggered until the delta value falls below this threshold and + reaches mteTriggerThresholdDeltaFalling." + DEFVAL { 0 } + + + ::= { mteTriggerThresholdEntry 4 } + +mteTriggerThresholdDeltaFalling OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A threshold value to check against if mteTriggerType is + 'threshold'. + + When the delta value (difference) between the current sampled + value (value(n)) and the previous sampled value (value(n-1)) + is less than or equal to this threshold, + and the delta value calculated at the last sampling interval + (i.e. value(n-1) - value(n-2)) was greater than this threshold, + one mteTriggerThresholdDeltaFallingEvent is triggered. That event + is also triggered if the first delta value calculated after this + entry becomes active, i.e. value(2) - value(1), where value(1) + is the first sample taken of that instance, is less than or + equal to this threshold. + + After a falling event is generated, another such event is not + triggered until the delta value falls below this threshold and + reaches mteTriggerThresholdDeltaRising." + DEFVAL { 0 } + ::= { mteTriggerThresholdEntry 5 } + +mteTriggerThresholdObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdObjects, the mteOwner of a group + of objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 6 } + +mteTriggerThresholdObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable. These objects are to be added to any + Notification resulting from the firing of this trigger for + this test. + + A list of objects may also be added based on the overall + + + trigger, the event or other settings in mteTriggerTest. + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 7 } + +mteTriggerThresholdRisingEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdRisingEvent, the mteOwner of an + event entry from mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 8 } + +mteTriggerThresholdRisingEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'threshold' and this trigger fires based on + mteTriggerThresholdRising. A length of 0 indicates no event." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 9 } + +mteTriggerThresholdFallingEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdFallingEvent, the mteOwner of an + event entry from mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 10 } + +mteTriggerThresholdFallingEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'threshold' and this trigger fires based on + mteTriggerThresholdFalling. A length of 0 indicates no event." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 11 } + + + +mteTriggerThresholdDeltaRisingEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdDeltaRisingEvent, the mteOwner + of an event entry from mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 12 } + +mteTriggerThresholdDeltaRisingEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'threshold' and this trigger fires based on + mteTriggerThresholdDeltaRising. A length of 0 indicates + no event." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 13 } + +mteTriggerThresholdDeltaFallingEventOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteTriggerThresholdDeltaFallingEvent, the mteOwner + of an event entry from mteEventTable." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 14 } + +mteTriggerThresholdDeltaFallingEvent OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteEventName of the event to invoke when mteTriggerType is + 'threshold' and this trigger fires based on + mteTriggerThresholdDeltaFalling. A length of 0 indicates + no event." + DEFVAL { ''H } + ::= { mteTriggerThresholdEntry 15 } + +-- +-- Objects Table +-- + + + +mteObjectsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of objects that can be added to notifications based + on the trigger, trigger test, or event, as pointed to by + entries in those tables." + ::= { mteObjects 1 } + +mteObjectsEntry OBJECT-TYPE + SYNTAX MteObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A group of objects. Applications create and delete entries + using mteObjectsEntryStatus. + + When adding objects to a notification they are added in the + lexical order of their index in this table. Those associated + with a trigger come first, then trigger test, then event." + INDEX { mteOwner, mteObjectsName, mteObjectsIndex } + ::= { mteObjectsTable 1 } + +MteObjectsEntry ::= SEQUENCE { + mteObjectsName SnmpAdminString, + mteObjectsIndex Unsigned32, + mteObjectsID OBJECT IDENTIFIER, + mteObjectsIDWildcard TruthValue, + mteObjectsEntryStatus RowStatus + } + +mteObjectsName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally-unique, administratively assigned name for a group + of objects." + ::= { mteObjectsEntry 1 } + +mteObjectsIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer for the purpose of identifying + individual objects within a mteObjectsName group. + + + Objects within a group are placed in the notification in the + numerical order of this index. + + Groups are placed in the notification in the order of the + selections for overall trigger, trigger test, and event. + Within trigger test they are in the same order as the + numerical values of the bits defined for mteTriggerTest. + + Bad object identifiers or a mismatch between truncating the + identifier and the value of mteDeltaDiscontinuityIDWildcard + result in operation as one would expect when providing the + wrong identifier to a Get operation. The Get will fail or get + the wrong object. If the object is not available it is omitted + from the notification." + ::= { mteObjectsEntry 2 } + +mteObjectsID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier of a MIB object to add to a + Notification that results from the firing of a trigger. + + This may be wildcarded by truncating all or part of the + instance portion, in which case the instance portion of the + OID for obtaining this object will be the same as that used + in obtaining the mteTriggerValueID that fired. If such + wildcarding is applied, mteObjectsIDWildcard must be + 'true' and if not it must be 'false'. + + Each instance that fills the wildcard is independent of any + additional instances, that is, wildcarded objects operate + as if there were a separate table entry for each instance + that fills the wildcard without having to actually predict + all possible instances ahead of time." + DEFVAL { zeroDotZero } + ::= { mteObjectsEntry 3 } + +mteObjectsIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for whether mteObjectsID is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard." + DEFVAL { false } + ::= { mteObjectsEntry 4 } + + +mteObjectsEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The control that allows creation and deletion of entries. + Once made active an entry MAY not be modified except to + delete it." + ::= { mteObjectsEntry 5 } + +-- +-- Event Section +-- + +-- Counters + +mteEventFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an attempt to invoke an event + has failed. This counts individually for each + attempt in a group of targets or each attempt for a + wildcarded trigger object." + ::= { mteEvent 1 } + +-- +-- Event Table +-- + +mteEventTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteEventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event action information." + ::= { mteEvent 2 } + +mteEventEntry OBJECT-TYPE + SYNTAX MteEventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single event. Applications create and + delete entries using mteEventEntryStatus." + INDEX { mteOwner, IMPLIED mteEventName } + ::= { mteEventTable 1 } + + +MteEventEntry ::= SEQUENCE { + mteEventName SnmpAdminString, + mteEventComment SnmpAdminString, + mteEventActions BITS, + mteEventEnabled TruthValue, + mteEventEntryStatus RowStatus + } + +mteEventName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally-unique, administratively assigned name for the + event." + ::= { mteEventEntry 1 } + +mteEventComment OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A description of the event's function and use." + DEFVAL { ''H } + ::= { mteEventEntry 2 } + +mteEventActions OBJECT-TYPE + SYNTAX BITS { notification(0), set(1) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The actions to perform when this event occurs. + + For 'notification', Traps and/or Informs are sent according + to the configuration in the SNMP Notification MIB. + + For 'set', an SNMP Set operation is performed according to + control values in this entry." + DEFVAL { {} } -- No bits set. + ::= { mteEventEntry 3 } + +mteEventEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control to allow an event to be configured but not used. + When the value is 'false' the event does not execute even if + + + triggered." + DEFVAL { false } + ::= { mteEventEntry 4 } + +mteEventEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The control that allows creation and deletion of entries. + Once made active an entry MAY not be modified except to + delete it." + ::= { mteEventEntry 5 } + +-- +-- Event Notification Table +-- + +mteEventNotificationTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteEventNotificationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about notifications to be sent as a + consequence of management events." + ::= { mteEvent 3 } + +mteEventNotificationEntry OBJECT-TYPE + SYNTAX MteEventNotificationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single event's notification. Entries + automatically exist in this this table for each mteEventEntry + that has 'notification' set in mteEventActions." + INDEX { mteOwner, IMPLIED mteEventName } + ::= { mteEventNotificationTable 1 } + +MteEventNotificationEntry ::= SEQUENCE { + mteEventNotification OBJECT IDENTIFIER, + mteEventNotificationObjectsOwner SnmpAdminString, + mteEventNotificationObjects SnmpAdminString + } + +mteEventNotification OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + + + DESCRIPTION + "The object identifier from the NOTIFICATION-TYPE for the + notification to use if metEventActions has 'notification' set." + DEFVAL { zeroDotZero } + ::= { mteEventNotificationEntry 1 } + +mteEventNotificationObjectsOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "To go with mteEventNotificationObjects, the mteOwner of a + group of objects from mteObjectsTable." + DEFVAL { ''H } + ::= { mteEventNotificationEntry 2 } + +mteEventNotificationObjects OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mteObjectsName of a group of objects from + mteObjectsTable if mteEventActions has 'notification' set. + These objects are to be added to any Notification generated by + this event. + + Objects may also be added based on the trigger that stimulated + the event. + + A length of 0 indicates no additional objects." + DEFVAL { ''H } + ::= { mteEventNotificationEntry 3 } + +-- +-- Event Set Table +-- + +mteEventSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF MteEventSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of management event action information." + ::= { mteEvent 4 } + +mteEventSetEntry OBJECT-TYPE + SYNTAX MteEventSetEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "Information about a single event's set option. Entries + automatically exist in this this table for each mteEventEntry + that has 'set' set in mteEventActions." + INDEX { mteOwner, IMPLIED mteEventName } + ::= { mteEventSetTable 1 } + +MteEventSetEntry ::= SEQUENCE { + mteEventSetObject OBJECT IDENTIFIER, + mteEventSetObjectWildcard TruthValue, + mteEventSetValue Integer32, + mteEventSetTargetTag SnmpTagValue, + mteEventSetContextName SnmpAdminString, + mteEventSetContextNameWildcard TruthValue + } + +mteEventSetObject OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The object identifier from the MIB object to set if + mteEventActions has 'set' set. + + This object identifier may be wildcarded by leaving + sub-identifiers off the end, in which case + nteEventSetObjectWildCard must be 'true'. + + If mteEventSetObject is wildcarded the instance used to set the + object to which it points is the same as the instance from the + value of mteTriggerValueID that triggered the event. + + Each instance that fills the wildcard is independent of any + additional instances, that is, wildcarded objects operate + as if there were a separate table entry for each instance + that fills the wildcard without having to actually predict + all possible instances ahead of time. + + Bad object identifiers or a mismatch between truncating the + identifier and the value of mteSetObjectWildcard + result in operation as one would expect when providing the + wrong identifier to a Set operation. The Set will fail or set + the wrong object. If the value syntax of the destination + object is not correct, the Set fails with the normal SNMP + error code." + DEFVAL { zeroDotZero } + ::= { mteEventSetEntry 1 } + + +mteEventSetObjectWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control over whether mteEventSetObject is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard + if mteEventActions has 'set' set." + DEFVAL { false } + ::= { mteEventSetEntry 2 } + +mteEventSetValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value to which to set the object at mteEventSetObject + if mteEventActions has 'set' set." + DEFVAL { 0 } + ::= { mteEventSetEntry 3 } + +mteEventSetTargetTag OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The tag for the target(s) at which to set the object at + mteEventSetObject to mteEventSetValue if mteEventActions + has 'set' set. + + Systems limited to self management MAY reject a non-zero + length for the value of this object. + + A length of 0 indicates the local system. In this case, + access to the objects indicated by mteEventSetObject is under + the security credentials of the requester that set + mteTriggerEntryStatus to 'active'. Those credentials are the + input parameters for isAccessAllowed from the Architecture for + Describing SNMP Management Frameworks. + + Otherwise access rights are checked according to the security + parameters resulting from the tag." + DEFVAL { ''H } + ::= { mteEventSetEntry 4 } + +mteEventSetContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + + + STATUS current + DESCRIPTION + "The management context in which to set mteEventObjectID. + if mteEventActions has 'set' set. + + This may be wildcarded by leaving characters off the end. To + indicate such wildcarding mteEventSetContextNameWildcard must + be 'true'. + + If this context name is wildcarded the value used to complete + the wildcarding of mteTriggerContextName will be appended." + DEFVAL { ''H } + ::= { mteEventSetEntry 5 } + +mteEventSetContextNameWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Control for whether mteEventSetContextName is to be treated as + fully-specified or wildcarded, with 'true' indicating wildcard + if mteEventActions has 'set' set." + DEFVAL { false } + ::= { mteEventSetEntry 6 } + +-- +-- Notifications +-- + +dismanEventMIBNotificationPrefix OBJECT IDENTIFIER ::= + { dismanEventMIB 2 } +dismanEventMIBNotifications OBJECT IDENTIFIER ::= + { dismanEventMIBNotificationPrefix 0 } +dismanEventMIBNotificationObjects OBJECT IDENTIFIER + ::= { dismanEventMIBNotificationPrefix 1 } + +-- +-- Notification Objects +-- + +mteHotTrigger OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The name of the trigger causing the notification." + ::= { dismanEventMIBNotificationObjects 1 } + + + +mteHotTargetName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The SNMP Target MIB's snmpTargetAddrName related to the + notification." + ::= { dismanEventMIBNotificationObjects 2 } + +mteHotContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The context name related to the notification. This MUST be as + fully-qualified as possible, including filling in wildcard + information determined in processing." + ::= { dismanEventMIBNotificationObjects 3 } + +mteHotOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The object identifier of the destination object related to the + notification. This MUST be as fully-qualified as possible, + including filling in wildcard information determined in + processing. + + For a trigger-related notification this is from + mteTriggerValueID. + + For a set failure this is from mteEventSetObject." + ::= { dismanEventMIBNotificationObjects 4 } + +mteHotValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The value of the object at mteTriggerValueID when a + trigger fired." + ::= { dismanEventMIBNotificationObjects 5 } + +mteFailedReason OBJECT-TYPE + SYNTAX FailureReason + MAX-ACCESS accessible-for-notify + STATUS current + + + DESCRIPTION + "The reason for the failure of an attempt to check for a + trigger condition or set an object in response to an event." + ::= { dismanEventMIBNotificationObjects 6 } + +-- +-- Notifications +-- + +mteTriggerFired NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteHotValue } + STATUS current + DESCRIPTION + "Notification that the trigger indicated by the object + instances has fired, for triggers with mteTriggerType + 'boolean' or 'existence'." + ::= { dismanEventMIBNotifications 1 } + +mteTriggerRising NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteHotValue } + STATUS current + DESCRIPTION + "Notification that the rising threshold was met for triggers + with mteTriggerType 'threshold'." + ::= { dismanEventMIBNotifications 2 } + +mteTriggerFalling NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteHotValue } + STATUS current + DESCRIPTION + "Notification that the falling threshold was met for triggers + with mteTriggerType 'threshold'." + ::= { dismanEventMIBNotifications 3 } + +mteTriggerFailure NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + + + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteFailedReason } + STATUS current + DESCRIPTION + "Notification that an attempt to check a trigger has failed. + + The network manager must enable this notification only with + a certain fear and trembling, as it can easily crowd out more + important information. It should be used only to help diagnose + a problem that has appeared in the error counters and can not + be found otherwise." + ::= { dismanEventMIBNotifications 4 } + +mteEventSetFailure NOTIFICATION-TYPE + OBJECTS { mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteFailedReason } + STATUS current + DESCRIPTION + "Notification that an attempt to do a set in response to an + event has failed. + + The network manager must enable this notification only with + a certain fear and trembling, as it can easily crowd out more + important information. It should be used only to help diagnose + a problem that has appeared in the error counters and can not + be found otherwise." + ::= { dismanEventMIBNotifications 5 } + +-- +-- Conformance +-- + +dismanEventMIBConformance OBJECT IDENTIFIER ::= { dismanEventMIB 3 } +dismanEventMIBCompliances OBJECT IDENTIFIER ::= + { dismanEventMIBConformance 1 } +dismanEventMIBGroups OBJECT IDENTIFIER ::= + { dismanEventMIBConformance 2 } + +-- Compliance + +dismanEventMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + + "The compliance statement for entities which implement + the Event MIB." + MODULE -- this module + MANDATORY-GROUPS { + dismanEventResourceGroup, + dismanEventTriggerGroup, + dismanEventObjectsGroup, + dismanEventEventGroup, + dismanEventNotificationObjectGroup, + dismanEventNotificationGroup + } + + OBJECT mteTriggerTargetTag + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus limiting + monitoring to the local system or pre-configured + remote systems." + + OBJECT mteEventSetTargetTag + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus limiting + setting to the local system or pre-configured + remote systems." + + OBJECT mteTriggerValueIDWildcard + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus allowing + the system not to implement wildcarding." + + OBJECT mteTriggerContextNameWildcard + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus allowing + the system not to implement wildcarding." + + + OBJECT mteObjectsIDWildcard + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, thus allowing + the system not to implement wildcarding." + + OBJECT mteEventSetContextNameWildcard + MIN-ACCESS read-only + DESCRIPTION + + + "Write access is not required, thus allowing + the system not to implement wildcarding." + + ::= { dismanEventMIBCompliances 1 } + +-- Units of Conformance + +dismanEventResourceGroup OBJECT-GROUP + OBJECTS { + mteResourceSampleMinimum, + mteResourceSampleInstanceMaximum, + mteResourceSampleInstances, + mteResourceSampleInstancesHigh, + mteResourceSampleInstanceLacks + } + STATUS current + DESCRIPTION + "Event resource status and control objects." + ::= { dismanEventMIBGroups 1 } + +dismanEventTriggerGroup OBJECT-GROUP + OBJECTS { + mteTriggerFailures, + + mteTriggerComment, + mteTriggerTest, + mteTriggerSampleType, + mteTriggerValueID, + mteTriggerValueIDWildcard, + mteTriggerTargetTag, + mteTriggerContextName, + mteTriggerContextNameWildcard, + mteTriggerFrequency, + mteTriggerObjectsOwner, + mteTriggerObjects, + mteTriggerEnabled, + mteTriggerEntryStatus, + + mteTriggerDeltaDiscontinuityID, + mteTriggerDeltaDiscontinuityIDWildcard, + mteTriggerDeltaDiscontinuityIDType, + mteTriggerExistenceTest, + mteTriggerExistenceStartup, + mteTriggerExistenceObjectsOwner, + mteTriggerExistenceObjects, + mteTriggerExistenceEventOwner, + mteTriggerExistenceEvent, + + + + mteTriggerBooleanComparison, + mteTriggerBooleanValue, + mteTriggerBooleanStartup, + mteTriggerBooleanObjectsOwner, + mteTriggerBooleanObjects, + mteTriggerBooleanEventOwner, + mteTriggerBooleanEvent, + + mteTriggerThresholdStartup, + mteTriggerThresholdObjectsOwner, + mteTriggerThresholdObjects, + mteTriggerThresholdRising, + mteTriggerThresholdFalling, + mteTriggerThresholdDeltaRising, + mteTriggerThresholdDeltaFalling, + mteTriggerThresholdRisingEventOwner, + mteTriggerThresholdRisingEvent, + mteTriggerThresholdFallingEventOwner, + mteTriggerThresholdFallingEvent, + mteTriggerThresholdDeltaRisingEventOwner, + mteTriggerThresholdDeltaRisingEvent, + mteTriggerThresholdDeltaFallingEventOwner, + mteTriggerThresholdDeltaFallingEvent + } + STATUS current + DESCRIPTION + "Event triggers." + ::= { dismanEventMIBGroups 2 } + +dismanEventObjectsGroup OBJECT-GROUP + OBJECTS { + mteObjectsID, + mteObjectsIDWildcard, + mteObjectsEntryStatus + } + STATUS current + DESCRIPTION + "Supplemental objects." + ::= { dismanEventMIBGroups 3 } + +dismanEventEventGroup OBJECT-GROUP + OBJECTS { + mteEventFailures, + + mteEventComment, + mteEventActions, + mteEventEnabled, + mteEventEntryStatus, + + + mteEventNotification, + mteEventNotificationObjectsOwner, + mteEventNotificationObjects, + + mteEventSetObject, + mteEventSetObjectWildcard, + mteEventSetValue, + mteEventSetTargetTag, + mteEventSetContextName, + mteEventSetContextNameWildcard + } + STATUS current + DESCRIPTION + "Events." + ::= { dismanEventMIBGroups 4 } + +dismanEventNotificationObjectGroup OBJECT-GROUP + OBJECTS { + mteHotTrigger, + mteHotTargetName, + mteHotContextName, + mteHotOID, + mteHotValue, + mteFailedReason + } + STATUS current + DESCRIPTION + "Notification objects." + ::= { dismanEventMIBGroups 5 } + +dismanEventNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mteTriggerFired, + mteTriggerRising, + mteTriggerFalling, + mteTriggerFailure, + mteEventSetFailure + } + STATUS current + DESCRIPTION + "Notifications." + ::= { dismanEventMIBGroups 6 } + +END diff --git a/mibs/ietf/DISMAN-EXPRESSION-MIB b/mibs/ietf/DISMAN-EXPRESSION-MIB new file mode 100644 index 0000000..ad9dba3 --- /dev/null +++ b/mibs/ietf/DISMAN-EXPRESSION-MIB @@ -0,0 +1,1227 @@ +DISMAN-EXPRESSION-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Gauge32, Unsigned32, + Counter32, Counter64, IpAddress, + TimeTicks, mib-2, zeroDotZero FROM SNMPv2-SMI + RowStatus, TruthValue, TimeStamp FROM SNMPv2-TC + sysUpTime FROM SNMPv2-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +dismanExpressionMIB MODULE-IDENTITY + LAST-UPDATED "200010160000Z" -- 16 October 2000 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO "Ramanathan Kavasseri + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 527 2446 + Email: ramk@cisco.com" + DESCRIPTION + "The MIB module for defining expressions of MIB objects for + management purposes." +-- Revision History + + REVISION "200010160000Z" -- 16 October 2000 + DESCRIPTION "This is the initial version of this MIB. + Published as RFC 2982" + ::= { mib-2 90 } + + +dismanExpressionMIBObjects OBJECT IDENTIFIER ::= + { dismanExpressionMIB 1 } + +expResource OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 1 } +expDefine OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 2 } +expValue OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 3 } + +-- +-- Resource Control +-- + + + +expResourceDeltaMinimum OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum expExpressionDeltaInterval this system will + accept. A system may use the larger values of this minimum to + lessen the impact of constantly computing deltas. For larger + delta sampling intervals the system samples less often and + suffers less overhead. This object provides a way to enforce + such lower overhead for all expressions created after it is + set. + + The value -1 indicates that expResourceDeltaMinimum is + irrelevant as the system will not accept 'deltaValue' as a + value for expObjectSampleType. + + Unless explicitly resource limited, a system's value for + this object should be 1, allowing as small as a 1 second + interval for ongoing delta sampling. + + Changing this value will not invalidate an existing setting + of expObjectSampleType." + ::= { expResource 1 } + +expResourceDeltaWildcardInstanceMaximum OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "instances" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "For every instance of a deltaValue object, one dynamic instance + entry is needed for holding the instance value from the previous + sample, i.e. to maintain state. + + This object limits maximum number of dynamic instance entries + this system will support for wildcarded delta objects in + expressions. For a given delta expression, the number of + dynamic instances is the number of values that meet all criteria + to exist times the number of delta values in the expression. + + A value of 0 indicates no preset limit, that is, the limit + is dynamic based on system operation and resources. + + Unless explicitly resource limited, a system's value for + this object should be 0. + + + + Changing this value will not eliminate or inhibit existing delta + wildcard instance objects but will prevent the creation of more + such objects. + + An attempt to allocate beyond the limit results in expErrorCode + being tooManyWildcardValues for that evaluation attempt." + ::= { expResource 2 } + +expResourceDeltaWildcardInstances OBJECT-TYPE + SYNTAX Gauge32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active instance entries as + defined for expResourceDeltaWildcardInstanceMaximum." + ::= { expResource 3 } + +expResourceDeltaWildcardInstancesHigh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest value of expResourceDeltaWildcardInstances + that has occurred since initialization of the managed + system." + ::= { expResource 4 } + +expResourceDeltaWildcardInstanceResourceLacks OBJECT-TYPE + SYNTAX Counter32 + UNITS "instances" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this system could not evaluate an + expression because that would have created a value instance in + excess of expResourceDeltaWildcardInstanceMaximum." + ::= { expResource 5 } + +-- + +-- Definition +-- +-- Expression Definition Table +-- + +expExpressionTable OBJECT-TYPE + + + SYNTAX SEQUENCE OF ExpExpressionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of expression definitions." + ::= { expDefine 1 } + +expExpressionEntry OBJECT-TYPE + SYNTAX ExpExpressionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single expression. New expressions + can be created using expExpressionRowStatus. + + To create an expression first create the named entry in this + table. Then use expExpressionName to populate expObjectTable. + For expression evaluation to succeed all related entries in + expExpressionTable and expObjectTable must be 'active'. If + these conditions are not met the corresponding values in + expValue simply are not instantiated. + + Deleting an entry deletes all related entries in expObjectTable + and expErrorTable. + + Because of the relationships among the multiple tables for an + expression (expExpressionTable, expObjectTable, and + expValueTable) and the SNMP rules for independence in setting + object values, it is necessary to do final error checking when + an expression is evaluated, that is, when one of its instances + in expValueTable is read or a delta interval expires. Earlier + checking need not be done and an implementation may not impose + any ordering on the creation of objects related to an + expression. + + To maintain security of MIB information, when creating a new row in + this table, the managed system must record the security credentials + of the requester. These security credentials are the parameters + necessary as inputs to isAccessAllowed from the Architecture for + + Describing SNMP Management Frameworks. When obtaining the objects + that make up the expression, the system must (conceptually) use + isAccessAllowed to ensure that it does not violate security. + + The evaluation of the expression takes place under the + security credentials of the creator of its expExpressionEntry. + + Values of read-write objects in this table may be changed + + + at any time." + INDEX { expExpressionOwner, expExpressionName } + ::= { expExpressionTable 1 } + +ExpExpressionEntry ::= SEQUENCE { + expExpressionOwner SnmpAdminString, + expExpressionName SnmpAdminString, + expExpression OCTET STRING, + expExpressionValueType INTEGER, + expExpressionComment SnmpAdminString, + expExpressionDeltaInterval Integer32, + expExpressionPrefix OBJECT IDENTIFIER, + expExpressionErrors Counter32, + expExpressionEntryStatus RowStatus +} + +expExpressionOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The owner of this entry. The exact semantics of this + string are subject to the security policy defined by the + security administrator." + ::= { expExpressionEntry 1 } + +expExpressionName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the expression. This is locally unique, within + the scope of an expExpressionOwner." + ::= { expExpressionEntry 2 } + +expExpression OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The expression to be evaluated. This object is the same + as a DisplayString (RFC 1903) except for its maximum length. + + Except for the variable names the expression is in ANSI C + syntax. Only the subset of ANSI C operators and functions + listed here is allowed. + + Variables are expressed as a dollar sign ('$') and an + + + integer that corresponds to an expObjectIndex. An + example of a valid expression is: + + ($1-$5)*100 + + Expressions must not be recursive, that is although an expression + may use the results of another expression, it must not contain + any variable that is directly or indirectly a result of its own + evaluation. The managed system must check for recursive + expressions. + + The only allowed operators are: + + ( ) + - (unary) + + - * / % + & | ^ << >> ~ + ! && || == != > >= < <= + + Note the parentheses are included for parenthesizing the + expression, not for casting data types. + + The only constant types defined are: + + int (32-bit signed) + long (64-bit signed) + unsigned int + unsigned long + hexadecimal + character + string + oid + + The default type for a positive integer is int unless it is too + large in which case it is long. + + All but oid are as defined for ANSI C. Note that a + hexadecimal constant may end up as a scalar or an array of + 8-bit integers. A string constant is enclosed in double + quotes and may contain back-slashed individual characters + as in ANSI C. + + An oid constant comprises 32-bit, unsigned integers and at + least one period, for example: + + 0. + .0 + 1.3.6.1 + + + No additional leading or trailing subidentifiers are automatically + added to an OID constant. The constant is taken as expressed. + + Integer-typed objects are treated as 32- or 64-bit, signed + or unsigned integers, as appropriate. The results of + mixing them are as for ANSI C, including the type of the + result. Note that a 32-bit value is thus promoted to 64 bits + only in an operation with a 64-bit value. There is no + provision for larger values to handle overflow. + + Relative to SNMP data types, a resulting value becomes + unsigned when calculating it uses any unsigned value, + including a counter. To force the final value to be of + data type counter the expression must explicitly use the + counter32() or counter64() function (defined below). + + OCTET STRINGS and OBJECT IDENTIFIERs are treated as + one-dimensioned arrays of unsigned 8-bit integers and + unsigned 32-bit integers, respectively. + + IpAddresses are treated as 32-bit, unsigned integers in + network byte order, that is, the hex version of 255.0.0.0 is + 0xff000000. + + Conditional expressions result in a 32-bit, unsigned integer + of value 0 for false or 1 for true. When an arbitrary value + is used as a boolean 0 is false and non-zero is true. + + Rules for the resulting data type from an operation, based on + the operator: + + For << and >> the result is the same as the left hand operand. + + For &&, ||, ==, !=, <, <=, >, and >= the result is always + Unsigned32. + + For unary - the result is always Integer32. + + For +, -, *, /, %, &, |, and ^ the result is promoted according + to the following rules, in order from most to least preferred: + + If left hand and right hand operands are the same type, + use that. + + If either side is Counter64, use that. + + If either side is IpAddress, use that. + + + + If either side is TimeTicks, use that. + + If either side is Counter32, use that. + + Otherwise use Unsigned32. + + The following rules say what operators apply with what data + types. Any combination not explicitly defined does not work. + + For all operators any of the following can be the left hand or + right hand operand: Integer32, Counter32, Unsigned32, Counter64. + + The operators +, -, *, /, %, <, <=, >, and >= work with + TimeTicks. + + The operators &, |, and ^ work with IpAddress. + + The operators << and >> work with IpAddress but only as the + left hand operand. + + The + operator performs a concatenation of two OCTET STRINGs or + two OBJECT IDENTIFIERs. + + The operators &, | perform bitwise operations on OCTET STRINGs. + If the OCTET STRING happens to be a DisplayString the results + may be meaningless, but the agent system does not check this as + some such systems do not have this information. + + The operators << and >> perform bitwise operations on OCTET + STRINGs appearing as the left hand operand. + + The only functions defined are: + + counter32 + counter64 + arraySection + stringBegins + stringEnds + stringContains + oidBegins + oidEnds + oidContains + average + maximum + minimum + sum + exists + + + + The following function definitions indicate their parameters by + naming the data type of the parameter in the parameter's position + in the parameter list. The parameter must be of the type indicated + and generally may be a constant, a MIB object, a function, or an + expression. + + counter32(integer) - wrapped around an integer value counter32 + forces Counter32 as a data type. + + counter64(integer) - similar to counter32 except that the + resulting data type is 'counter64'. + + arraySection(array, integer, integer) - selects a piece of an + array (i.e. part of an OCTET STRING or OBJECT IDENTIFIER). The + integer arguments are in the range 0 to 4,294,967,295. The + first is an initial array index (one-dimensioned) and the second + is an ending array index. A value of 0 indicates first or last + element, respectively. If the first element is larger than the + array length the result is 0 length. If the second integer is + less than or equal to the first, the result is 0 length. If the + second is larger than the array length it indicates last + element. + + stringBegins/Ends/Contains(octetString, octetString) - looks for + the second string (which can be a string constant) in the first + and returns the one-dimensioned arrayindex where the match began. + A return value of 0 indicates no match (i.e. boolean false). + + oidBegins/Ends/Contains(oid, oid) - looks for the second OID + (which can be an OID constant) in the first and returns the + the one-dimensioned index where the match began. A return value + of 0 indicates no match (i.e. boolean false). + + average/maximum/minimum(integer) - calculates the average, + minimum, or maximum value of the integer valued object over + multiple sample times. If the object disappears for any + sample period, the accumulation and the resulting value object + cease to exist until the object reappears at which point the + calculation starts over. + + sum(integerObject*) - sums all available values of the + wildcarded integer object, resulting in an integer scalar. Must + be used with caution as it wraps on overflow with no + notification. + + exists(anyTypeObject) - verifies the object instance exists. A + return value of 0 indicates NoSuchInstance (i.e. boolean + false)." + + + ::= { expExpressionEntry 3 } + +expExpressionValueType OBJECT-TYPE + SYNTAX INTEGER { counter32(1), unsigned32(2), timeTicks(3), + integer32(4), ipAddress(5), octetString(6), + objectId(7), counter64(8) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the expression value. One and only one of the + value objects in expValueTable will be instantiated to match + this type. + + If the result of the expression can not be made into this type, + an invalidOperandType error will occur." + DEFVAL { counter32 } + ::= { expExpressionEntry 4 } + +expExpressionComment OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A comment to explain the use or meaning of the expression." + DEFVAL { ''H } + ::= { expExpressionEntry 5 } + +expExpressionDeltaInterval OBJECT-TYPE + SYNTAX Integer32 (0..86400) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Sampling interval for objects in this expression with + expObjectSampleType 'deltaValue'. + + This object has no effect if the the expression has no + deltaValue objects. + + A value of 0 indicates no automated sampling. In this case + the delta is the difference from the last time the expression + was evaluated. Note that this is subject to unpredictable + delta times in the face of retries or multiple managers. + + A value greater than zero is the number of seconds between + automated samples. + + Until the delta interval has expired once the delta for the + + + object is effectively not instantiated and evaluating + the expression has results as if the object itself were not + instantiated. + + Note that delta values potentially consume large amounts of + system CPU and memory. Delta state and processing must + continue constantly even if the expression is not being used. + That is, the expression is being evaluated every delta interval, + even if no application is reading those values. For wildcarded + objects this can be substantial overhead. + + Note that delta intervals, external expression value sampling + intervals and delta intervals for expressions within other + expressions can have unusual interactions as they are impossible + to synchronize accurately. In general one interval embedded + below another must be enough shorter that the higher sample + sees relatively smooth, predictable behavior. So, for example, + to avoid the higher level getting the same sample twice, the + lower level should sample at least twice as fast as the higher + level does." + DEFVAL { 0 } + ::= { expExpressionEntry 6 } + +expExpressionPrefix OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object prefix to assist an application in determining + the instance indexing to use in expValueTable, relieving the + application of the need to scan the expObjectTable to + determine such a prefix. + + See expObjectTable for information on wildcarded objects. + + If the expValueInstance portion of the value OID may + be treated as a scalar (that is, normally, 0) the value of + expExpressionPrefix is zero length, that is, no OID at all. + Note that zero length implies a null OID, not the OID 0.0. + + Otherwise, the value of expExpressionPrefix is the expObjectID + value of any one of the wildcarded objects for the expression. + This is sufficient, as the remainder, that is, the instance + fragment relevant to instancing the values, must be the same for + all wildcarded objects in the expression." + ::= { expExpressionEntry 7 } + +expExpressionErrors OBJECT-TYPE + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of errors encountered while evaluating this + expression. + + Note that an object in the expression not being accessible, + is not considered an error. An example of an inaccessible + object is when the object is excluded from the view of the + user whose security credentials are used in the expression + evaluation. In such cases, it is a legitimate condition + that causes the corresponding expression value not to be + instantiated." + ::= { expExpressionEntry 8 } + +expExpressionEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The control that allows creation and deletion of entries." + ::= { expExpressionEntry 9 } + +-- +-- Expression Error Table +-- + +expErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF ExpErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of expression errors." + ::= { expDefine 2 } + +expErrorEntry OBJECT-TYPE + SYNTAX ExpErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about errors in processing an expression. + + Entries appear in this table only when there is a matching + expExpressionEntry and then only when there has been an + error for that expression as reflected by the error codes + defined for expErrorCode." + INDEX { expExpressionOwner, expExpressionName } + + + ::= { expErrorTable 1 } + +ExpErrorEntry ::= SEQUENCE { + expErrorTime TimeStamp, + expErrorIndex Integer32, + expErrorCode INTEGER, + expErrorInstance OBJECT IDENTIFIER +} + +expErrorTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime the last time an error caused a + failure to evaluate this expression." + ::= { expErrorEntry 1 } + +expErrorIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The one-dimensioned character array index into + expExpression for where the error occurred. The value + zero indicates irrelevance." + ::= { expErrorEntry 2 } + +expErrorCode OBJECT-TYPE + SYNTAX INTEGER { + invalidSyntax(1), + undefinedObjectIndex(2), + unrecognizedOperator(3), + unrecognizedFunction(4), + invalidOperandType(5), + unmatchedParenthesis(6), + tooManyWildcardValues(7), + recursion(8), + deltaTooShort(9), + resourceUnavailable(10), + divideByZero(11) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The error that occurred. In the following explanations the + expected timing of the error is in parentheses. 'S' means + the error occurs on a Set request. 'E' means the error + + + occurs on the attempt to evaluate the expression either due to + Get from expValueTable or in ongoing delta processing. + + invalidSyntax the value sent for expExpression is not + valid Expression MIB expression syntax + (S) + undefinedObjectIndex an object reference ($n) in + expExpression does not have a matching + instance in expObjectTable (E) + unrecognizedOperator the value sent for expExpression held an + unrecognized operator (S) + unrecognizedFunction the value sent for expExpression held an + unrecognized function name (S) + invalidOperandType an operand in expExpression is not the + right type for the associated operator + or result (SE) + unmatchedParenthesis the value sent for expExpression is not + correctly parenthesized (S) + tooManyWildcardValues evaluating the expression exceeded the + limit set by + expResourceDeltaWildcardInstanceMaximum + (E) + recursion through some chain of embedded + expressions the expression invokes itself + (E) + deltaTooShort the delta for the next evaluation passed + before the system could evaluate the + present sample (E) + resourceUnavailable some resource, typically dynamic memory, + was unavailable (SE) + divideByZero an attempt to divide by zero occurred + (E) + + For the errors that occur when the attempt is made to set + expExpression Set request fails with the SNMP error code + 'wrongValue'. Such failures refer to the most recent failure to + Set expExpression, not to the present value of expExpression + which must be either unset or syntactically correct. + + Errors that occur during evaluation for a Get* operation return + the SNMP error code 'genErr' except for 'tooManyWildcardValues' + and 'resourceUnavailable' which return the SNMP error code + 'resourceUnavailable'." + ::= { expErrorEntry 3 } + +expErrorInstance OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The expValueInstance being evaluated when the error + occurred. A zero-length indicates irrelevance." + ::= { expErrorEntry 4 } + +-- +-- Object Table +-- + +expObjectTable OBJECT-TYPE + SYNTAX SEQUENCE OF ExpObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of object definitions for each expExpression. + + Wildcarding instance IDs: + + It is legal to omit all or part of the instance portion for + some or all of the objects in an expression. (See the + DESCRIPTION of expObjectID for details. However, note that + if more than one object in the same expression is wildcarded + in this way, they all must be objects where that portion of + the instance is the same. In other words, all objects may be + in the same SEQUENCE or in different SEQUENCEs but with the + same semantic index value (e.g., a value of ifIndex) + for the wildcarded portion." + ::= { expDefine 3 } + +expObjectEntry OBJECT-TYPE + SYNTAX ExpObjectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about an object. An application uses + expObjectEntryStatus to create entries in this table while + in the process of defining an expression. + + Values of read-create objects in this table may be + changed at any time." + INDEX { expExpressionOwner, expExpressionName, expObjectIndex } + ::= { expObjectTable 1 } + +ExpObjectEntry ::= SEQUENCE { + expObjectIndex Unsigned32, + expObjectID OBJECT IDENTIFIER, + expObjectIDWildcard TruthValue, + + + expObjectSampleType INTEGER, + expObjectDeltaDiscontinuityID OBJECT IDENTIFIER, + expObjectDiscontinuityIDWildcard TruthValue, + expObjectDiscontinuityIDType INTEGER, + expObjectConditional OBJECT IDENTIFIER, + expObjectConditionalWildcard TruthValue, + expObjectEntryStatus RowStatus +} + +expObjectIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Within an expression, a unique, numeric identification for an + object. Prefixed with a dollar sign ('$') this is used to + reference the object in the corresponding expExpression." + ::= { expObjectEntry 1 } + +expObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OBJECT IDENTIFIER (OID) of this object. The OID may be + fully qualified, meaning it includes a complete instance + identifier part (e.g., ifInOctets.1 or sysUpTime.0), or it + may not be fully qualified, meaning it may lack all or part + of the instance identifier. If the expObjectID is not fully + qualified, then expObjectWildcard must be set to true(1). + The value of the expression will be multiple + values, as if done for a GetNext sweep of the object. + + An object here may itself be the result of an expression but + recursion is not allowed. + + NOTE: The simplest implementations of this MIB may not allow + wildcards." + ::= { expObjectEntry 2 } + +expObjectIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A true value indicates the expObjecID of this row is a wildcard + object. False indicates that expObjectID is fully instanced. + If all expObjectWildcard values for a given expression are FALSE, + + + expExpressionPrefix will reflect a scalar object (i.e. will + be 0.0). + + NOTE: The simplest implementations of this MIB may not allow + wildcards." + DEFVAL { false } + ::= { expObjectEntry 3 } + +expObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { absoluteValue(1), deltaValue(2), + changedValue(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable. + + An 'absoluteValue' is simply the present value of the object. + + A 'deltaValue' is the present value minus the previous value, + which was sampled expExpressionDeltaInterval seconds ago. + This is intended primarily for use with SNMP counters, which are + meaningless as an 'absoluteValue', but may be used with any + integer-based value. + + A 'changedValue' is a boolean for whether the present value is + different from the previous value. It is applicable to any data + type and results in an Unsigned32 with value 1 if the object's + value is changed and 0 if not. In all other respects it is as a + 'deltaValue' and all statements and operation regarding delta + values apply to changed values. + + When an expression contains both delta and absolute values + the absolute values are obtained at the end of the delta + period." + DEFVAL { absoluteValue } + ::= { expObjectEntry 4 } + +sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 } + +expObjectDeltaDiscontinuityID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OBJECT IDENTIFIER (OID) of a TimeTicks, TimeStamp, or + DateAndTime object that indicates a discontinuity in the value + at expObjectID. + + + + This object is instantiated only if expObjectSampleType is + 'deltaValue' or 'changedValue'. + + The OID may be for a leaf object (e.g. sysUpTime.0) or may + be wildcarded to match expObjectID. + + This object supports normal checking for a discontinuity in a + counter. Note that if this object does not point to sysUpTime + discontinuity checking must still check sysUpTime for an overall + discontinuity. + + If the object identified is not accessible no discontinuity + check will be made." + DEFVAL { sysUpTimeInstance } + ::= { expObjectEntry 5 } + +expObjectDiscontinuityIDWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A true value indicates the expObjectDeltaDiscontinuityID of + this row is a wildcard object. False indicates that + expObjectDeltaDiscontinuityID is fully instanced. + + This object is instantiated only if expObjectSampleType is + 'deltaValue' or 'changedValue'. + + NOTE: The simplest implementations of this MIB may not allow + wildcards." + DEFVAL { false } + ::= { expObjectEntry 6 } + +expObjectDiscontinuityIDType OBJECT-TYPE + SYNTAX INTEGER { timeTicks(1), timeStamp(2), dateAndTime(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value 'timeTicks' indicates the expObjectDeltaDiscontinuityID + of this row is of syntax TimeTicks. The value 'timeStamp' indicates + syntax TimeStamp. The value 'dateAndTime indicates syntax + DateAndTime. + + This object is instantiated only if expObjectSampleType is + 'deltaValue' or 'changedValue'." + DEFVAL { timeTicks } + ::= { expObjectEntry 7 } + + + +expObjectConditional OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OBJECT IDENTIFIER (OID) of an object that overrides + whether the instance of expObjectID is to be considered + usable. If the value of the object at expObjectConditional + is 0 or not instantiated, the object at expObjectID is + treated as if it is not instantiated. In other words, + expObjectConditional is a filter that controls whether or + not to use the value at expObjectID. + + The OID may be for a leaf object (e.g. sysObjectID.0) or may be + wildcarded to match expObjectID. If expObject is wildcarded and + expObjectID in the same row is not, the wild portion of + expObjectConditional must match the wildcarding of the rest of + the expression. If no object in the expression is wildcarded + but expObjectConditional is, use the lexically first instance + (if any) of expObjectConditional. + + If the value of expObjectConditional is 0.0 operation is + as if the value pointed to by expObjectConditional is a + non-zero (true) value. + + Note that expObjectConditional can not trivially use an object + of syntax TruthValue, since the underlying value is not 0 or 1." + DEFVAL { zeroDotZero } + ::= { expObjectEntry 8 } + + expObjectConditionalWildcard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "A true value indicates the expObjectConditional of this row is + a wildcard object. False indicates that expObjectConditional is + fully instanced. + + NOTE: The simplest implementations of this MIB may not allow + wildcards." + DEFVAL { false } + ::= { expObjectEntry 9 } + +expObjectEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The control that allows creation/deletion of entries. + + Objects in this table may be changed while + expObjectEntryStatus is in any state." + ::= { expObjectEntry 10 } + +-- +-- Expression Value Table +-- + +expValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF ExpValueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of values from evaluated expressions." + ::= { expValue 1 } + +expValueEntry OBJECT-TYPE + SYNTAX ExpValueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single value from an evaluated expression. For a given + instance, only one 'Val' object in the conceptual row will be + instantiated, that is, the one with the appropriate type for + the value. For values that contain no objects of + expObjectSampleType 'deltaValue' or 'changedValue', reading a + value from the table causes the evaluation of the expression + for that value. For those that contain a 'deltaValue' or + 'changedValue' the value read is as of the last sampling + interval. + + If in the attempt to evaluate the expression one or more + of the necessary objects is not available, the corresponding + entry in this table is effectively not instantiated. + + To maintain security of MIB information, when creating a new + row in this table, the managed system must record the security + credentials of the requester. These security credentials are + the parameters necessary as inputs to isAccessAllowed from + [RFC2571]. When obtaining the objects that make up the + expression, the system must (conceptually) use isAccessAllowed to + ensure that it does not violate security. + + The evaluation of that expression takes place under the + + + security credentials of the creator of its expExpressionEntry. + + To maintain security of MIB information, expression evaluation must + take place using security credentials for the implied Gets of the + objects in the expression as inputs (conceptually) to + isAccessAllowed from the Architecture for Describing SNMP + Management Frameworks. These are the security credentials of the + creator of the corresponding expExpressionEntry." + INDEX { expExpressionOwner, expExpressionName, + IMPLIED expValueInstance } + ::= { expValueTable 1 } + +ExpValueEntry ::= SEQUENCE { + expValueInstance OBJECT IDENTIFIER, + expValueCounter32Val Counter32, + expValueUnsigned32Val Unsigned32, + expValueTimeTicksVal TimeTicks, + expValueInteger32Val Integer32, + expValueIpAddressVal IpAddress, + expValueOctetStringVal OCTET STRING, + expValueOidVal OBJECT IDENTIFIER, + expValueCounter64Val Counter64 +} + +expValueInstance OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The final instance portion of a value's OID according to + the wildcarding in instances of expObjectID for the + expression. The prefix of this OID fragment is 0.0, + leading to the following behavior. + + If there is no wildcarding, the value is 0.0.0. In other + words, there is one value which standing alone would have + been a scalar with a 0 at the end of its OID. + + If there is wildcarding, the value is 0.0 followed by + a value that the wildcard can take, thus defining one value + instance for each real, possible value of the wildcard. + So, for example, if the wildcard worked out to be an ifIndex, + there is an expValueInstance for each applicable ifIndex." + ::= { expValueEntry 1 } + +expValueCounter32Val OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'counter32'." + ::= { expValueEntry 2 } + +expValueUnsigned32Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'unsigned32'." + ::= { expValueEntry 3 } + +expValueTimeTicksVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'timeTicks'." + ::= { expValueEntry 4 } + +expValueInteger32Val OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'integer32'." + ::= { expValueEntry 5 } + +expValueIpAddressVal OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'ipAddress'." + ::= { expValueEntry 6 } + +expValueOctetStringVal OBJECT-TYPE + SYNTAX OCTET STRING -- (SIZE (0..65536)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'octetString'." + ::= { expValueEntry 7 } + +expValueOidVal OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'objectId'." + ::= { expValueEntry 8 } + +expValueCounter64Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when expExpressionValueType is 'counter64'." + ::= { expValueEntry 9 } + +-- +-- Conformance +-- + +dismanExpressionMIBConformance OBJECT IDENTIFIER ::= + { dismanExpressionMIB 3 } +dismanExpressionMIBCompliances OBJECT IDENTIFIER ::= + { dismanExpressionMIBConformance 1 } +dismanExpressionMIBGroups OBJECT IDENTIFIER ::= + { dismanExpressionMIBConformance 2 } + +-- Compliance + +dismanExpressionMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which implement + the Expression MIB." + MODULE -- this module + MANDATORY-GROUPS { + dismanExpressionResourceGroup, + dismanExpressionDefinitionGroup, + dismanExpressionValueGroup + } + + OBJECT expResourceDeltaMinimum + SYNTAX Integer32 (-1 | 60..600) + DESCRIPTION + "Implementation need not allow deltas or it may + implement them and restrict them to higher values." + + OBJECT expObjectSampleType + WRITE-SYNTAX INTEGER { absoluteValue(1) } + DESCRIPTION + "Implementation may disallow deltas calculation or + + + change detection." + + OBJECT expObjectIDWildcard + WRITE-SYNTAX INTEGER { false(2) } + DESCRIPTION + "Implementation may allow wildcards." + + OBJECT expObjectDiscontinuityIDWildcard + WRITE-SYNTAX INTEGER { false(2) } + DESCRIPTION + "Implementation need not allow wildcards." + + OBJECT expObjectConditionalWildcard + WRITE-SYNTAX INTEGER { false(2) } + DESCRIPTION + "Implementation need not allow deltas wildcards." + + ::= { dismanExpressionMIBCompliances 1 } + +-- Units of Conformance + +dismanExpressionResourceGroup OBJECT-GROUP + OBJECTS { + expResourceDeltaMinimum, + expResourceDeltaWildcardInstanceMaximum, + expResourceDeltaWildcardInstances, + expResourceDeltaWildcardInstancesHigh, + expResourceDeltaWildcardInstanceResourceLacks + } + STATUS current + DESCRIPTION + "Expression definition resource management." + ::= { dismanExpressionMIBGroups 1 } + +dismanExpressionDefinitionGroup OBJECT-GROUP + OBJECTS { + expExpression, + expExpressionValueType, + expExpressionComment, + expExpressionDeltaInterval, + expExpressionPrefix, + expExpressionErrors, + expExpressionEntryStatus, + + expErrorTime, + expErrorIndex, + expErrorCode, + expErrorInstance, + + + expObjectID, + expObjectIDWildcard, + expObjectSampleType, + expObjectDeltaDiscontinuityID, + expObjectDiscontinuityIDWildcard, + expObjectDiscontinuityIDType, + expObjectConditional, + expObjectConditionalWildcard, + expObjectEntryStatus + } + STATUS current + DESCRIPTION + "Expression definition." + ::= { dismanExpressionMIBGroups 2 } + +dismanExpressionValueGroup OBJECT-GROUP + OBJECTS { + expValueCounter32Val, + expValueUnsigned32Val, + expValueTimeTicksVal, + expValueInteger32Val, + expValueIpAddressVal, + expValueOctetStringVal, + expValueOidVal, + expValueCounter64Val + } + STATUS current + DESCRIPTION + "Expression value." + ::= { dismanExpressionMIBGroups 3 } + +END diff --git a/mibs/ietf/DISMAN-NSLOOKUP-MIB b/mibs/ietf/DISMAN-NSLOOKUP-MIB new file mode 100644 index 0000000..b828948 --- /dev/null +++ b/mibs/ietf/DISMAN-NSLOOKUP-MIB @@ -0,0 +1,533 @@ +DISMAN-NSLOOKUP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, mib-2, Integer32 + FROM SNMPv2-SMI -- RFC2578 + RowStatus + FROM SNMPv2-TC -- RFC2579 + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- RFC2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC3411 + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB; -- RFC4001 + + lookupMIB MODULE-IDENTITY + LAST-UPDATED "200606130000Z" -- 13 June 2006 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "Juergen Quittek + + + + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + + Phone: +49 6221 4342-115 + Email: quittek@netlab.nec.de" + DESCRIPTION + "The Lookup MIB (DISMAN-NSLOOKUP-MIB) enables determination + of either the name(s) corresponding to a host address or of + the address(es) associated with a host name at a remote + host. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4560; see the RFC itself for + full legal notices." + + -- Revision history + + REVISION "200606130000Z" -- 13 June 2006 + DESCRIPTION + "Updated version, published as RFC 4560. + - Replaced references to RFC 2575 by RFC 3415 + - Replaced references to RFC 2571 by RFC 3411 + - Replaced references to RFC 2851 by RFC 4001 + - Added value enabled(1) to SYNTAX clause of + lookupCtlOperStatus + - Added lookupMinimumCompliance + - Defined semantics of value 0 for object + lookupPurgeTime + - Added DEFVAL { unknown } to object + lookupCtlTargetAddressType OBJECT-TYPE" + + REVISION "200009210000Z" -- 21 September 2000 + DESCRIPTION + "Initial version, published as RFC 2925." + + ::= { mib-2 82 } + + -- Top level structure of the MIB + + lookupObjects OBJECT IDENTIFIER ::= { lookupMIB 1 } + lookupConformance OBJECT IDENTIFIER ::= { lookupMIB 2 } + + -- Simple Object Definitions + + lookupMaxConcurrentRequests OBJECT-TYPE + + + SYNTAX Unsigned32 + UNITS "requests" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of concurrent active lookup requests + that are allowed within an agent implementation. A value + of 0 for this object implies that there is no limit for + the number of concurrent active requests in effect. + + The limit applies only to new requests being activated. + When a new value is set, the agent will continue processing + all the requests already active, even if their number + exceed the limit just imposed." + DEFVAL { 10 } + ::= { lookupObjects 1 } + + lookupPurgeTime OBJECT-TYPE + SYNTAX Unsigned32 (0..86400) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time to wait before automatically + deleting an entry in the lookupCtlTable and any + dependent lookupResultsTable entries + after the lookup operation represented by a + lookupCtlEntry has been completed. + A lookupCtEntry is considered complete + when its lookupCtlOperStatus object has a + value of completed(3). + + A value of 0 indicates that automatic deletion + of entries is disabled." + DEFVAL { 900 } -- 15 minutes as default + ::= { lookupObjects 2 } + + -- Lookup Control Table + + lookupCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF LookupCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Lookup Control Table for providing + the capability of performing a lookup operation + for a symbolic host name or for a host address + from a remote host." + + + ::= { lookupObjects 3 } + + lookupCtlEntry OBJECT-TYPE + SYNTAX LookupCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the lookupCtlTable. A + lookupCtlEntry is initially indexed by + lookupCtlOwnerIndex, which is a type of SnmpAdminString, + a textual convention that allows for the use of the SNMPv3 + View-Based Access Control Model (RFC 3415, VACM) + and that also allows a management application to identify + its entries. The second index element, + lookupCtlOperationName, enables the same + lookupCtlOwnerIndex entity to have multiple outstanding + requests. The value of lookupCtlTargetAddressType + determines which lookup function to perform." + INDEX { + lookupCtlOwnerIndex, + lookupCtlOperationName + } + ::= { lookupCtlTable 1 } + + LookupCtlEntry ::= + SEQUENCE { + lookupCtlOwnerIndex SnmpAdminString, + lookupCtlOperationName SnmpAdminString, + lookupCtlTargetAddressType InetAddressType, + lookupCtlTargetAddress InetAddress, + lookupCtlOperStatus INTEGER, + lookupCtlTime Unsigned32, + lookupCtlRc Integer32, + lookupCtlRowStatus RowStatus + } + + lookupCtlOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 2575, VACM) for tables in which + multiple users may need to create or + modify entries independently, the initial index is used as + an 'owner index'. Such an initial index has a syntax of + SnmpAdminString and can thus be trivially mapped to a + + + securityName or groupName defined in VACM, in + accordance with a security policy. + + When used in conjunction with such a security policy all + entries in the table belonging to a particular user (or + group) will have the same value for this initial index. + For a given user's entries in a particular table, the + object identifiers for the information in these entries + will have the same subidentifiers (except for the + 'column' subidentifier) up to the end of the encoded + owner index. To configure VACM to permit access to this + portion of the table, one would create + vacmViewTreeFamilyTable entries with the value of + vacmViewTreeFamilySubtree including the owner index + portion, and vacmViewTreeFamilyMask 'wildcarding' the + column subidentifier. More elaborate configurations + are possible." + ::= { lookupCtlEntry 1 } + + lookupCtlOperationName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a lookup operation. This is locally unique, + within the scope of an lookupCtlOwnerIndex." + ::= { lookupCtlEntry 2 } + + lookupCtlTargetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "Specifies the type of address for performing a + lookup operation for a symbolic host name or for a host + address from a remote host. + + Specification of dns(16) as the value for this object + means that a function such as, for example, getaddrinfo() + or gethostbyname() should be performed to return one or + more numeric addresses. Use of a value of either ipv4(1) + or ipv6(2) means that a functions such as, for example, + getnameinfo() or gethostbyaddr() should be used to return + the symbolic names associated with a host." + DEFVAL { unknown } + ::= { lookupCtlEntry 3 } + + + + lookupCtlTargetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the address used for a resolver lookup at a + remote host. The corresponding lookupCtlTargetAddressType + objects determines its type, as well as the function + that can be requested. + + A value for this object MUST be set prior to + transitioning its corresponding lookupCtlEntry to + active(1) via lookupCtlRowStatus." + ::= { lookupCtlEntry 4 } + + lookupCtlOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), -- operation is active + notStarted(2), -- operation has not started + completed(3) -- operation is done + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the operational state of an lookupCtlEntry: + + enabled(1) - Operation is active. + notStarted(2) - Operation has not been enabled. + completed(3) - Operation has been completed. + + An operation is automatically enabled(1) when its + lookupCtlRowStatus object is transitioned to active(1) + status. Until this occurs, lookupCtlOperStatus MUST + report a value of notStarted(2). After the lookup + operation is completed (success or failure), the value + for lookupCtlOperStatus MUST be transitioned to + completed(3)." + ::= { lookupCtlEntry 5 } + + lookupCtlTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reports the number of milliseconds that a lookup + operation required to be completed at a remote host. + Completed means operation failure as well as + + + success." + ::= { lookupCtlEntry 6 } + + lookupCtlRc OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system-specific return code from a lookup + operation. All implementations MUST return a value + of 0 for this object when the remote lookup + operation succeeds. A non-zero value for this + objects indicates failure. It is recommended that + implementations return the error codes that are + generated by the lookup function used." + ::= { lookupCtlEntry 7 } + + lookupCtlRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the lookupCtlTable. + + A remote lookup operation is started when an + entry in this table is created via an SNMP set + request and the entry is activated. This + occurs by setting the value of this object + to CreateAndGo(4) during row creation or + by setting this object to active(1) after + the row is created. + + A value MUST be specified for lookupCtlTargetAddress + prior to the acceptance of a transition to active(1) state. + A remote lookup operation starts when its entry + first becomes active(1). Transitions in and + out of active(1) state have no effect on the + operational behavior of a remote lookup + operation, with the exception that deletion of + an entry in this table by setting its RowStatus + object to destroy(6) will stop an active + remote lookup operation. + + The operational state of a remote lookup operation + can be determined by examination of its + lookupCtlOperStatus object." + REFERENCE + + + "See definition of RowStatus in RFC 2579, + 'Textual Conventions for SMIv2.'" + ::= { lookupCtlEntry 8 } + + +-- Lookup Results Table + + lookupResultsTable OBJECT-TYPE + SYNTAX SEQUENCE OF LookupResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Lookup Results Table for providing + the capability of determining the results of a + operation at a remote host. + + One or more entries are added to the + lookupResultsTable when a lookup operation, + as reflected by an lookupCtlEntry, is completed + successfully. All entries related to a + successful lookup operation MUST be added + to the lookupResultsTable at the same time + that the associating lookupCtlOperStatus + object is transitioned to completed(2). + + The number of entries added depends on the + results determined for a particular lookup + operation. All entries associated with an + lookupCtlEntry are removed when the + lookupCtlEntry is deleted. + + A remote host can be multi-homed and have more than one IP + address associated with it (returned by lookup function), + or it can have more than one symbolic name (returned + by lookup function). + + A function such as, for example, getnameinfo() or + gethostbyaddr() is called with a host address as its + parameter and is used primarily to determine a symbolic + name to associate with the host address. Entries in the + lookupResultsTable MUST be made for each host name + returned. If the function identifies an 'official host + name,' then this symbolic name MUST be assigned a + lookupResultsIndex of 1. + + A function such as, for example, getaddrinfo() or + gethostbyname() is called with a symbolic host name and is + used primarily to retrieve a host address. The entries + + + MUST be stored in the order that they are retrieved from + the lookup function. lookupResultsIndex 1 MUST be + assigned to the first entry." + ::= { lookupObjects 4 } + + lookupResultsEntry OBJECT-TYPE + SYNTAX LookupResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the lookupResultsTable. The + first two index elements identify the + lookupCtlEntry that a lookupResultsEntry belongs + to. The third index element selects a single + lookup operation result." + INDEX { + lookupCtlOwnerIndex, + lookupCtlOperationName, + lookupResultsIndex + } + ::= { lookupResultsTable 1 } + + LookupResultsEntry ::= + SEQUENCE { + lookupResultsIndex Unsigned32, + lookupResultsAddressType InetAddressType, + lookupResultsAddress InetAddress + } + + lookupResultsIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in the lookupResultsTable are created when + the result of a lookup operation is determined. + + Entries MUST be stored in the lookupResultsTable in + the order that they are retrieved. Values assigned + to lookupResultsIndex MUST start at 1 and increase + consecutively." + ::= { lookupResultsEntry 1 } + + lookupResultsAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "Indicates the type of result of a remote lookup + operation. A value of unknown(0) implies either that + the operation hasn't been started or that + it has failed." + ::= { lookupResultsEntry 2 } + + lookupResultsAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects a result for a remote lookup operation + as per the value of lookupResultsAddressType. + + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of lookupResultsAddress." + + ::= { lookupResultsEntry 3 } + + + -- Conformance information + -- Compliance statements + + lookupCompliances OBJECT IDENTIFIER ::= { lookupConformance 1 } + lookupGroups OBJECT IDENTIFIER ::= { lookupConformance 2 } + + -- Compliance statements + + lookupCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that + fully implement the DISMAN-NSLOOKUP-MIB." + MODULE -- this module + MANDATORY-GROUPS { lookupGroup } + + OBJECT lookupMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT lookupPurgeTime + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set + operation to this object." + + + ::= { lookupCompliances 1 } + + lookupMinimumCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The minimum compliance statement for SNMP entities + that implement the minimal subset of the + DISMAN-NSLOOKUP-MIB. Implementors might choose this + subset for small devices with limited resources." + MODULE -- this module + MANDATORY-GROUPS { lookupGroup } + + OBJECT lookupMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT lookupPurgeTime + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set + operation to this object." + + OBJECT lookupCtlRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, then at least one entry in the + lookupCtlTable MUST be established already when the SNMP + agent starts offering access to the NSLOOKUP-MIB module. + If, in such a case, only a single entry is offered, then + it is RECOMMENDED that this entry use strings with a + length of 0 for both of its two index objects." + ::= { lookupCompliances 2 } + + -- MIB groupings + + lookupGroup OBJECT-GROUP + OBJECTS { + lookupMaxConcurrentRequests, + lookupPurgeTime, + lookupCtlOperStatus, + lookupCtlTargetAddressType, + lookupCtlTargetAddress, + lookupCtlTime, + lookupCtlRc, + lookupCtlRowStatus, + + + lookupResultsAddressType, + lookupResultsAddress + } + STATUS current + DESCRIPTION + "The group of objects that constitute the remote + Lookup operation." + ::= { lookupGroups 1 } + +END diff --git a/mibs/ietf/DISMAN-PING-MIB b/mibs/ietf/DISMAN-PING-MIB new file mode 100644 index 0000000..5629470 --- /dev/null +++ b/mibs/ietf/DISMAN-PING-MIB @@ -0,0 +1,1661 @@ +DISMAN-PING-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, + Unsigned32, Gauge32, mib-2, + NOTIFICATION-TYPE, OBJECT-IDENTITY + FROM SNMPv2-SMI -- RFC2578 + TEXTUAL-CONVENTION, RowStatus, + StorageType, DateAndTime, TruthValue + FROM SNMPv2-TC -- RFC2579 + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC2580 + InterfaceIndexOrZero -- RFC2863 + FROM IF-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC3411 + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB; -- RFC4001 + + pingMIB MODULE-IDENTITY + LAST-UPDATED "200606130000Z" -- 13 June 2006 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "Juergen Quittek + + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + + Phone: +49 6221 4342-115 + + + + Email: quittek@netlab.nec.de" + DESCRIPTION + "The Ping MIB (DISMAN-PING-MIB) provides the capability of + controlling the use of the ping function at a remote + host. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4560; see the RFC itself for + full legal notices." + + -- Revision history + + REVISION "200606130000Z" -- 13 June 2006 + DESCRIPTION + "Updated version, published as RFC 4560. + - Correctly considered IPv6 in DESCRIPTION + clause of pingCtlDataSize + - Replaced references to RFC 2575 by RFC 3415 + - Replaced references to RFC 2571 by RFC 3411 + - Replaced references to RFC 2851 by RFC 4001 + - Added DEFVAL { {} } to definition of + pingCtlTrapGeneration + - Changed DEFVAL of object pingCtlDescr from + DEFVAL { '00'H } to DEFVAL { ''H } + - Changed DEFVAL of object pingCtlSourceAddressType + from DEFVAL { ipv4 } to DEFVAL { unknown } + - Extended DESCRIPTION clause of pingResultsTable + describing re-initialization of entries + - Changed SYNTAX of pingResultsProbeResponses and + pingResultsSentProbes from Unsigned32 to Gauge32 + - Changed status of pingCompliance to deprecated + - Added pingFullCompliance and pingMinimumCompliance + - Changed status of pingGroup and pingTimeStampGroup + to deprecated + - Added pingMinimumGroup, pingCtlRowStatusGroup, + and pingHistoryGroup" + + REVISION "200009210000Z" -- 21 September 2000 + DESCRIPTION + "Initial version, published as RFC 2925." + + ::= { mib-2 80 } + + -- Textual Conventions + + OperationResponseStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "Used to report the result of an operation: + + responseReceived(1) - Operation is completed successfully. + unknown(2) - Operation failed due to unknown error. + internalError(3) - An implementation detected an error + in its own processing that caused an operation + to fail. + requestTimedOut(4) - Operation failed to receive a + valid reply within the time limit imposed on it. + unknownDestinationAddress(5) - Invalid destination + address. + noRouteToTarget(6) - Could not find a route to target. + interfaceInactiveToTarget(7) - The interface to be + used in sending a probe is inactive, and an + alternate route does not exist. + arpFailure(8) - Unable to resolve a target address to a + media-specific address. + maxConcurrentLimitReached(9) - The maximum number of + concurrent active operations would have been exceeded + if the corresponding operation was allowed. + unableToResolveDnsName(10) - The DNS name specified was + unable to be mapped to an IP address. + invalidHostAddress(11) - The IP address for a host + has been determined to be invalid. Examples of this + are broadcast or multicast addresses." + SYNTAX INTEGER { + responseReceived(1), + unknown(2), + internalError(3), + requestTimedOut(4), + unknownDestinationAddress(5), + noRouteToTarget(6), + interfaceInactiveToTarget(7), + arpFailure(8), + maxConcurrentLimitReached(9), + unableToResolveDnsName(10), + invalidHostAddress(11) + } + + -- Top level structure of the MIB + + pingNotifications OBJECT IDENTIFIER ::= { pingMIB 0 } + pingObjects OBJECT IDENTIFIER ::= { pingMIB 1 } + pingConformance OBJECT IDENTIFIER ::= { pingMIB 2 } + + + -- The registration node (point) for ping implementation types + + + + + pingImplementationTypeDomains OBJECT IDENTIFIER ::= { pingMIB 3 } + + pingIcmpEcho OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is using the Internet + Control Message Protocol (ICMP) 'ECHO' facility." + ::= { pingImplementationTypeDomains 1 } + + pingUdpEcho OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is using the UDP echo + port (7)." + + REFERENCE + "RFC 862, 'Echo Protocol'." + ::= { pingImplementationTypeDomains 2 } + + pingSnmpQuery OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is using an SNMP query + to calculate a round trip time." + ::= { pingImplementationTypeDomains 3 } + + pingTcpConnectionAttempt OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is attempting to + connect to a TCP port in order to calculate a round + trip time." + ::= { pingImplementationTypeDomains 4 } + + + -- Simple Object Definitions + + pingMaxConcurrentRequests OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "requests" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of concurrent active ping requests + that are allowed within an agent implementation. A value + of 0 for this object implies that there is no limit for + the number of concurrent active requests in effect. + + + + + The limit applies only to new requests being activated. + When a new value is set, the agent will continue processing + all the requests already active, even if their number + exceeds the limit just imposed." + DEFVAL { 10 } + ::= { pingObjects 1 } + + -- Ping Control Table + + pingCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF PingCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the ping Control Table for providing, via SNMP, + the capability of performing ping operations at + a remote host. The results of these operations are + stored in the pingResultsTable and the + pingProbeHistoryTable." + ::= { pingObjects 2 } + + pingCtlEntry OBJECT-TYPE + SYNTAX PingCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the pingCtlTable. The first index + element, pingCtlOwnerIndex, is of type SnmpAdminString, + a textual convention that allows for use of the SNMPv3 + View-Based Access Control Model (RFC 3415, VACM) + and that allows a management application to identify its + entries. The second index, pingCtlTestName (also an + SnmpAdminString), enables the same management + application to have multiple outstanding requests." + INDEX { + pingCtlOwnerIndex, + pingCtlTestName + } + ::= { pingCtlTable 1 } + + PingCtlEntry ::= + SEQUENCE { + pingCtlOwnerIndex SnmpAdminString, + pingCtlTestName SnmpAdminString, + pingCtlTargetAddressType InetAddressType, + pingCtlTargetAddress InetAddress, + pingCtlDataSize Unsigned32, + pingCtlTimeOut Unsigned32, + + + + pingCtlProbeCount Unsigned32, + pingCtlAdminStatus INTEGER, + pingCtlDataFill OCTET STRING, + pingCtlFrequency Unsigned32, + pingCtlMaxRows Unsigned32, + pingCtlStorageType StorageType, + pingCtlTrapGeneration BITS, + pingCtlTrapProbeFailureFilter Unsigned32, + pingCtlTrapTestFailureFilter Unsigned32, + pingCtlType OBJECT IDENTIFIER, + pingCtlDescr SnmpAdminString, + pingCtlSourceAddressType InetAddressType, + pingCtlSourceAddress InetAddress, + pingCtlIfIndex InterfaceIndexOrZero, + pingCtlByPassRouteTable TruthValue, + pingCtlDSField Unsigned32, + pingCtlRowStatus RowStatus + } + + pingCtlOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 2575, VACM) for tables in which + multiple users may need to create or + modify entries independently, the initial index is used + as an 'owner index'. Such an initial index has a syntax + of SnmpAdminString and can thus be trivially mapped to a + securityName or groupName defined in VACM, in + accordance with a security policy. + + When used in conjunction with such a security policy, all + entries in the table belonging to a particular user (or + group) will have the same value for this initial index. + For a given user's entries in a particular table, the + object identifiers for the information in these entries + will have the same subidentifiers (except for the 'column' + subidentifier) up to the end of the encoded owner index. + To configure VACM to permit access to this portion of the + table, one would create vacmViewTreeFamilyTable entries + with the value of vacmViewTreeFamilySubtree including + the owner index portion, and vacmViewTreeFamilyMask + 'wildcarding' the column subidentifier. More elaborate + configurations are possible." + ::= { pingCtlEntry 1 } + + + + pingCtlTestName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the ping test. This is locally unique, within + the scope of a pingCtlOwnerIndex." + ::= { pingCtlEntry 2 } + + pingCtlTargetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the type of host address to be used at a remote + host for performing a ping operation." + DEFVAL { unknown } + ::= { pingCtlEntry 3 } + + pingCtlTargetAddress OBJECT-TYPE + + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the host address to be used at a remote host for + performing a ping operation. The host address type is + determined by the value of the corresponding + pingCtlTargetAddressType. + + A value for this object MUST be set prior to transitioning + its corresponding pingCtlEntry to active(1) via + pingCtlRowStatus." + DEFVAL { ''H } + ::= { pingCtlEntry 4 } + + pingCtlDataSize OBJECT-TYPE + SYNTAX Unsigned32 (0..65507) + UNITS "octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the size of the data portion to be + transmitted in a ping operation, in octets. Whether this + value can be applied depends on the selected + implementation method for performing a ping operation, + indicated by pingCtlType in the same conceptual row. + If the method used allows applying the value contained + + + + in this object, then it MUST be applied. If the specified + size is not appropriate for the chosen ping method, the + implementation SHOULD use whatever size (appropriate to + the method) is closest to the specified size. + + The maximum value for this object was computed by + subtracting the smallest possible IP header size of + 20 octets (IPv4 header with no options) and the UDP + header size of 8 octets from the maximum IP packet size. + An IP packet has a maximum size of 65535 octets + (excluding IPv6 Jumbograms)." + DEFVAL { 0 } + ::= { pingCtlEntry 5 } + + pingCtlTimeOut OBJECT-TYPE + SYNTAX Unsigned32 (1..60) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the time-out value, in seconds, for a + remote ping operation." + DEFVAL { 3 } + + ::= { pingCtlEntry 6 } + + pingCtlProbeCount OBJECT-TYPE + SYNTAX Unsigned32 (1..15) + UNITS "probes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the number of times to perform a ping + operation at a remote host as part of a single ping test." + DEFVAL { 1 } + ::= { pingCtlEntry 7 } + + pingCtlAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), -- test should be started + disabled(2) -- test should be stopped + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Reflects the desired state that a pingCtlEntry should be + in: + + + + + enabled(1) - Attempt to activate the test as defined by + this pingCtlEntry. + disabled(2) - Deactivate the test as defined by this + pingCtlEntry. + + Refer to the corresponding pingResultsOperStatus to + determine the operational state of the test defined by + this entry." + DEFVAL { disabled } + ::= { pingCtlEntry 8 } + + pingCtlDataFill OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The content of this object is used together with the + corresponding pingCtlDataSize value to determine how to + fill the data portion of a probe packet. The option of + selecting a data fill pattern can be useful when links + are compressed or have data pattern sensitivities. The + contents of pingCtlDataFill should be repeated in a ping + packet when the size of the data portion of the ping + packet is greater than the size of pingCtlDataFill." + DEFVAL { '00'H } + ::= { pingCtlEntry 9 } + + pingCtlFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds to wait before repeating a ping test + as defined by the value of the various objects in the + corresponding row. + + A single ping test consists of a series of ping probes. + The number of probes is determined by the value of the + corresponding pingCtlProbeCount object. After a single + test is completed the number of seconds as defined by the + value of pingCtlFrequency MUST elapse before the + next ping test is started. + + A value of 0 for this object implies that the test + as defined by the corresponding entry will not be + repeated." + DEFVAL { 0 } + + + + ::= { pingCtlEntry 10 } + + pingCtlMaxRows OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "rows" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of corresponding entries allowed + in the pingProbeHistoryTable. An implementation of this + MIB will remove the oldest corresponding entry in the + pingProbeHistoryTable to allow the addition of an + new entry once the number of corresponding rows in the + pingProbeHistoryTable reaches this value. + + Old entries are not removed when a new test is + started. Entries are added to the pingProbeHistoryTable + until pingCtlMaxRows is reached before entries begin to + be removed. + + A value of 0 for this object disables creation of + pingProbeHistoryTable entries." + DEFVAL { 50 } + ::= { pingCtlEntry 11 } + + pingCtlStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { pingCtlEntry 12 } + + pingCtlTrapGeneration OBJECT-TYPE + SYNTAX BITS { + probeFailure(0), + testFailure(1), + testCompletion(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object determines when and whether + to generate a notification for this entry: + + + + probeFailure(0) - Generate a pingProbeFailed + notification subject to the value of + pingCtlTrapProbeFailureFilter. The object + pingCtlTrapProbeFailureFilter can be used + to specify the number of consecutive probe + failures that are required before a + pingProbeFailed notification can be generated. + testFailure(1) - Generate a pingTestFailed + notification. In this instance the object + pingCtlTrapTestFailureFilter can be used to + determine the number of probe failures that + signal when a test fails. + testCompletion(2) - Generate a pingTestCompleted + notification. + + By default, no bits are set, indicating that + none of the above options is selected." + DEFVAL { {} } -- no bits set. + ::= { pingCtlEntry 13 } + + pingCtlTrapProbeFailureFilter OBJECT-TYPE + SYNTAX Unsigned32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used to determine when + to generate a pingProbeFailed NOTIFICATION. + + Setting BIT probeFailure(0) of object + pingCtlTrapGeneration to '1' implies that a + pingProbeFailed NOTIFICATION is generated only when + + a number of consecutive ping probes equal to the + value of pingCtlTrapProbeFailureFilter fail within + a given ping test. After triggering the notification, + the probe failure counter is reset to zero." + DEFVAL { 1 } + ::= { pingCtlEntry 14 } + + pingCtlTrapTestFailureFilter OBJECT-TYPE + SYNTAX Unsigned32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used to determine when + to generate a pingTestFailed NOTIFICATION. + + Setting BIT testFailure(1) of object + + + + pingCtlTrapGeneration to '1' implies that a + pingTestFailed NOTIFICATION is generated only when + a number of consecutive ping tests equal to the + value of pingCtlTrapProbeFailureFilter fail. + After triggering the notification, the test failure + counter is reset to zero." + DEFVAL { 1 } + ::= { pingCtlEntry 15 } + + pingCtlType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used either to report or + to select the implementation method to be used for + calculating a ping response time. The value of this + object MAY be selected from pingImplementationTypeDomains. + + Additional implementation types SHOULD be allocated as + required by implementers of the DISMAN-PING-MIB under + their enterprise-specific registration point and not + beneath pingImplementationTypeDomains." + DEFVAL { pingIcmpEcho } + ::= { pingCtlEntry 16 } + + pingCtlDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The purpose of this object is to provide a + descriptive name of the remote ping test." + DEFVAL { ''H } + + ::= { pingCtlEntry 17 } + + pingCtlSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the type of the source address, + pingCtlSourceAddress, to be used at a remote host + when a ping operation is performed." + DEFVAL { unknown } + ::= { pingCtlEntry 18 } + + + + + pingCtlSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Use the specified IP address (which must be given in + numeric form, not as a hostname) as the source address + in outgoing probe packets. On hosts with more than one + IP address, this option can be used to select the address + to be used. If the IP address is not one of this + machine's interface addresses, an error is returned and + nothing is sent. A zero-length octet string value for + this object disables source address specification. + + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of pingCtlSourceAddressType." + DEFVAL { ''H } + ::= { pingCtlEntry 19 } + + pingCtlIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Setting this object to an interface's ifIndex prior + to starting a remote ping operation directs + the ping probes to be transmitted over the + specified interface. A value of zero for this object + means that this option is not enabled." + DEFVAL { 0 } + ::= { pingCtlEntry 20 } + + pingCtlByPassRouteTable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "The purpose of this object is to enable optional + bypassing the route table. If enabled, the remote + host will bypass the normal routing tables and send + directly to a host on an attached network. If the + host is not on a directly attached network, an + error is returned. This option can be used to perform + the ping operation to a local host through an + interface that has no route defined (e.g., after the + interface was dropped by the routing daemon at the host)." + + + + DEFVAL { false } + ::= { pingCtlEntry 21 } + + pingCtlDSField OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the value to store in the Type of Service + (TOS) octet in the IPv4 header or in the Traffic + Class octet in the IPv6 header, respectively, of the + IP packet used to encapsulate the ping probe. + + The octet to be set in the IP header contains the + Differentiated Services (DS) Field in the six most + significant bits. + + This option can be used to determine what effect an + explicit DS Field setting has on a ping response. + Not all values are legal or meaningful. A value of 0 + means that the function represented by this option is + not supported. DS Field usage is often not supported + by IP implementations, and not all values are supported. + Refer to RFC 2474 and RFC 3260 for guidance on usage of + this field." + REFERENCE + "Refer to RFC 1812 for the definition of the IPv4 TOS + octet and to RFC 2460 for the definition of the IPv6 + Traffic Class octet. Refer to RFC 2474 and RFC 3260 + for the definition of the Differentiated Services Field." + DEFVAL { 0 } + ::= { pingCtlEntry 22 } + + pingCtlRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the pingCtlTable. Deletion of an entry in this + table results in the deletion of all corresponding (same + pingCtlOwnerIndex and pingCtlTestName index values) + pingResultsTable and pingProbeHistoryTable entries. + + A value MUST be specified for pingCtlTargetAddress + prior to acceptance of a transition to active(1) state. + + When a value for pingCtlTargetAddress is set, + + + + the value of object pingCtlRowStatus changes + from notReady(3) to notInService(2). + + Activation of a remote ping operation is controlled + via pingCtlAdminStatus, not by changing + this object's value to active(1). + + Transitions in and out of active(1) state are not + allowed while an entry's pingResultsOperStatus is + active(1), with the exception that deletion of + an entry in this table by setting its RowStatus + object to destroy(6) will stop an active + ping operation. + + The operational state of a ping operation + can be determined by examination of its + pingResultsOperStatus object." + REFERENCE + "See definition of RowStatus in RFC 2579, 'Textual + Conventions for SMIv2.'" + ::= { pingCtlEntry 23 } + +-- Ping Results Table + + pingResultsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PingResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Ping Results Table for providing + the capability of performing ping operations at + a remote host. The results of these operations are + stored in the pingResultsTable and the pingProbeHistoryTable. + + An entry is added to the pingResultsTable when an + pingCtlEntry is started by successful transition + of its pingCtlAdminStatus object to enabled(1). + + If the object pingCtlAdminStatus already has the value + enabled(1), and if the corresponding pingResultsOperStatus + object has the value completed(3), then successfully writing + enabled(1) to object pingCtlAdminStatus re-initializes the + already existing entry in the pingResultsTable. The values + of objects in the re-initialized entry are the same as the + values of objects in a new entry would be. + + An entry is removed from the pingResultsTable when + its corresponding pingCtlEntry is deleted." + + + + ::= { pingObjects 3 } + + pingResultsEntry OBJECT-TYPE + SYNTAX PingResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the pingResultsTable. The + pingResultsTable has the same indexing as the + pingCtlTable so that a pingResultsEntry + corresponds to the pingCtlEntry that caused it to + be created." + INDEX { + pingCtlOwnerIndex, + pingCtlTestName + } + ::= { pingResultsTable 1 } + + PingResultsEntry ::= + SEQUENCE { + pingResultsOperStatus INTEGER, + pingResultsIpTargetAddressType InetAddressType, + pingResultsIpTargetAddress InetAddress, + pingResultsMinRtt Unsigned32, + pingResultsMaxRtt Unsigned32, + pingResultsAverageRtt Unsigned32, + pingResultsProbeResponses Gauge32, + pingResultsSentProbes Gauge32, + pingResultsRttSumOfSquares Unsigned32, + pingResultsLastGoodProbe DateAndTime + } + + pingResultsOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), -- test is in progress + disabled(2), -- test has stopped + completed(3) -- test is completed + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the operational state of a pingCtlEntry: + + enabled(1) - Test is active. + disabled(2) - Test has stopped. + completed(3) - Test is completed." + ::= { pingResultsEntry 1 } + + + + + pingResultsIpTargetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of address stored + in the corresponding pingResultsIpTargetAddress + object." + DEFVAL { unknown } + ::= { pingResultsEntry 2 } + + pingResultsIpTargetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reports the IP address associated + with a pingCtlTargetAddress value when the destination + address is specified as a DNS name. The value of + this object should be a zero-length octet string + when a DNS name is not specified or when a + specified DNS name fails to resolve. + + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of pingResultsIpTargetAddressType." + DEFVAL { ''H } + ::= { pingResultsEntry 3 } + + pingResultsMinRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum ping round-trip-time (RTT) received. A value + of 0 for this object implies that no RTT has been received." + ::= { pingResultsEntry 4 } + + pingResultsMaxRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The maximum ping round-trip-time (RTT) received. A value + of 0 for this object implies that no RTT has been received." + + + + ::= { pingResultsEntry 5 } + + pingResultsAverageRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current average ping round-trip-time (RTT)." + ::= { pingResultsEntry 6 } + + pingResultsProbeResponses OBJECT-TYPE + SYNTAX Gauge32 + UNITS "responses" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received for the corresponding + pingCtlEntry and pingResultsEntry. The value of this object + MUST be reported as 0 when no probe responses have been + received." + ::= { pingResultsEntry 7 } + + pingResultsSentProbes OBJECT-TYPE + SYNTAX Gauge32 + UNITS "probes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reflects the number of probes sent + for the corresponding pingCtlEntry and pingResultsEntry. + The value of this object MUST be reported as 0 when no probes + have been sent." + ::= { pingResultsEntry 8 } + + pingResultsRttSumOfSquares OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the sum of the squares for all ping + responses received. Its purpose is to enable standard + deviation calculation. The value of this object MUST + be reported as 0 when no ping responses have been + received." + ::= { pingResultsEntry 9 } + + + + + pingResultsLastGoodProbe OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Date and time when the last response was received for + a probe." + ::= { pingResultsEntry 10 } + + -- Ping Probe History Table + + pingProbeHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF PingProbeHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a table for storing the results of ping + operations. The number of entries in this table is + limited per entry in the pingCtlTable by the value + of the corresponding pingCtlMaxRows object. + + An entry in this table is created when the result of + a ping probe is determined. The initial 2 instance + identifier index values identify the pingCtlEntry + that a probe result (pingProbeHistoryEntry) belongs + to. An entry is removed from this table when + its corresponding pingCtlEntry is deleted. + + An implementation of this MIB will remove the oldest + entry in the pingProbeHistoryTable of the + corresponding entry in the pingCtlTable to allow + the addition of an new entry once the number of rows + in the pingProbeHistoryTable reaches the value + specified by pingCtlMaxRows for the corresponding + entry in the pingCtlTable." + ::= { pingObjects 4 } + + pingProbeHistoryEntry OBJECT-TYPE + SYNTAX PingProbeHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the pingProbeHistoryTable. + The first two index elements identify the + pingCtlEntry that a pingProbeHistoryEntry belongs + to. The third index element selects a single + probe result." + INDEX { + + + + pingCtlOwnerIndex, + pingCtlTestName, + pingProbeHistoryIndex + } + ::= { pingProbeHistoryTable 1 } + + PingProbeHistoryEntry ::= + SEQUENCE { + pingProbeHistoryIndex Unsigned32, + pingProbeHistoryResponse Unsigned32, + pingProbeHistoryStatus OperationResponseStatus, + pingProbeHistoryLastRC Integer32, + pingProbeHistoryTime DateAndTime + } + + pingProbeHistoryIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created when the result of + a ping probe is determined. The initial 2 instance + identifier index values identify the pingCtlEntry + that a probe result (pingProbeHistoryEntry) belongs + to. + + An implementation MUST start assigning + pingProbeHistoryIndex values at 1 and wrap after + exceeding the maximum possible value as defined by + the limit of this object ('ffffffff'h)." + ::= { pingProbeHistoryEntry 1 } + + pingProbeHistoryResponse OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time measured in milliseconds from when + a probe was sent to when its response was received or + when it timed out. The value of this object is reported + as 0 when it is not possible to transmit a probe." + ::= { pingProbeHistoryEntry 2 } + + pingProbeHistoryStatus OBJECT-TYPE + SYNTAX OperationResponseStatus + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The result of a particular probe done by a remote host." + ::= { pingProbeHistoryEntry 3 } + + pingProbeHistoryLastRC OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last implementation-method-specific reply code received. + If the ICMP Echo capability is being used, then a successful + probe ends when an ICMP response is received that contains + the code ICMP_ECHOREPLY(0). The ICMP codes are maintained + by IANA. Standardized ICMP codes are listed at + http://www.iana.org/assignments/icmp-parameters. + The ICMPv6 codes are listed at + http://www.iana.org/assignments/icmpv6-parameters." + ::= { pingProbeHistoryEntry 4 } + + pingProbeHistoryTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Timestamp for when this probe result was determined." + ::= { pingProbeHistoryEntry 5 } + + + -- Notification Definition section + + pingProbeFailed NOTIFICATION-TYPE + OBJECTS { + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingResultsLastGoodProbe + } + STATUS current + DESCRIPTION + "Generated when a probe failure is detected, when the + + + + corresponding pingCtlTrapGeneration object is set to + probeFailure(0), subject to the value of + pingCtlTrapProbeFailureFilter. The object + pingCtlTrapProbeFailureFilter can be used to specify the + number of consecutive probe failures that are required + before this notification can be generated." + + ::= { pingNotifications 1 } + + pingTestFailed NOTIFICATION-TYPE + OBJECTS { + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingResultsLastGoodProbe + } + STATUS current + DESCRIPTION + "Generated when a ping test is determined to have failed, + when the corresponding pingCtlTrapGeneration object is + set to testFailure(1). In this instance, + pingCtlTrapTestFailureFilter should specify the number of + probes in a test required to have failed in order to + consider the test failed." + ::= { pingNotifications 2 } + + pingTestCompleted NOTIFICATION-TYPE + OBJECTS { + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingResultsLastGoodProbe + + + + } + STATUS current + DESCRIPTION + "Generated at the completion of a ping test when the + corresponding pingCtlTrapGeneration object has the + testCompletion(2) bit set." + ::= { pingNotifications 3 } + + -- Conformance information + + -- Compliance statements + + pingCompliances OBJECT IDENTIFIER ::= { pingConformance 1 } + pingGroups OBJECT IDENTIFIER ::= { pingConformance 2 } + + -- Compliance statements + + pingFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that + fully implement the DISMAN-PING-MIB." + MODULE -- this module + MANDATORY-GROUPS { + pingMinimumGroup, + pingCtlRowStatusGroup, + pingHistoryGroup, + pingNotificationsGroup + } + + OBJECT pingMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT pingCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that MUST be supported by an implementation is + pingIcmpEcho." + + + + + OBJECT pingCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT pingCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT pingCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of its + implementation. The function represented by this + object is implementable if the setsockopt + SOL_SOCKET SO_DONTROUTE option is supported." + + OBJECT pingCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingResultsIpTargetAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to + + + + support IPv4 and IPv6 addresses." + + OBJECT pingResultsIpTargetAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + + OBJECT pingResultsLastGoodProbe + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT pingProbeHistoryTime + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + ::= { pingCompliances 2 } + + pingMinimumCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The minimum compliance statement for SNMP entities + that implement the minimal subset of the + DISMAN-PING-MIB. Implementors might choose this + subset for small devices with limited resources." + MODULE -- this module + MANDATORY-GROUPS { pingMinimumGroup } + + GROUP pingCtlRowStatusGroup + DESCRIPTION + "A compliant implementation does not have to implement + the pingCtlRowStatusGroup." + + GROUP pingHistoryGroup + DESCRIPTION + "A compliant implementation does not have to implement + the pingHistoryGroup." + + GROUP pingNotificationsGroup + DESCRIPTION + "A compliant implementation does not have to implement + + + + the pingNotificationsGroup." + + OBJECT pingMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlDataFill + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlFrequency + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingCtlMaxRows + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + pingHistoryGroup is not implemented, then write + access to this object MUST be disabled, and the object + MUST return a value of 0 when retrieved." + + OBJECT pingCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT pingCtlTrapGeneration + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + pingNotificationsGroup is not implemented, then write + access to this object MUST be disabled, and the object + MUST return a value with no bit set when retrieved. + No bit set indicates that not notification is + generated." + + OBJECT pingCtlTrapProbeFailureFilter + MIN-ACCESS read-only + DESCRIPTION + + + + "If write access to pingCtlTrapGeneration is not + supported, then write access to this object must also + not be supported. In this case, return 0 as the value + of this object." + + OBJECT pingCtlTrapTestFailureFilter + MIN-ACCESS read-only + DESCRIPTION + "If write access to pingCtlTrapGeneration is not + supported, then write access to this object must also + not be supported. In this case, return 0 as the value + of this object." + + OBJECT pingCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that MUST be supported by an implementation is + pingIcmpEcho." + + OBJECT pingCtlDescr + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT pingCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT pingCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + + + + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return false(2) as the value of this + object. A value of false(2) means that the function + represented by this option is not supported." + + OBJECT pingCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingResultsIpTargetAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + + DESCRIPTION + "An implementation is only required to + support IPv4 and IPv6 addresses." + + OBJECT pingResultsIpTargetAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + + OBJECT pingResultsLastGoodProbe + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT pingProbeHistoryTime + DESCRIPTION + "If the pingHistoryGroup is implemented, then this + object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + + + + be reported as '0000000000000000'H." + + ::= { pingCompliances 3 } + + pingCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for the DISMAN-PING-MIB. This + compliance statement has been deprecated because the + group pingGroup and the pingTimeStampGroup have been + split and deprecated. The pingFullCompliance statement + is semantically identical to the deprecated + pingCompliance statement." + + MODULE -- this module + MANDATORY-GROUPS { + pingGroup, + pingNotificationsGroup + } + GROUP pingTimeStampGroup + DESCRIPTION + "This group is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this group is not supported the values + for the objects in this group be reported as + '0000000000000000'H." + + OBJECT pingMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT pingCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. It is also allowed + that implementations support only the volatile + StorageType enumeration." + + OBJECT pingCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that MUST be supported by an implementation is + pingIcmpEcho." + + + + + OBJECT pingCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of its implementation. The function + represented by this object is implementable if the + setsockopt SOL_SOCKET SO_DONTROUTE option is + supported." + + OBJECT pingCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of binding the send socket with a + source address. An implementation is only required to + support IPv4 and IPv6 addresses." + + OBJECT pingCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of binding the send socket with a + source address. An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + + OBJECT pingCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return a 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + + OBJECT pingResultsIpTargetAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to + support IPv4 and IPv6 addresses." + + + + OBJECT pingResultsIpTargetAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + ::= { pingCompliances 1 } + + -- MIB groupings + + pingMinimumGroup OBJECT-GROUP + OBJECTS { + pingMaxConcurrentRequests, + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingCtlDataSize, + pingCtlTimeOut, + pingCtlProbeCount, + pingCtlAdminStatus, + pingCtlDataFill, + pingCtlFrequency, + pingCtlMaxRows, + pingCtlStorageType, + pingCtlTrapGeneration, + pingCtlTrapProbeFailureFilter, + pingCtlTrapTestFailureFilter, + pingCtlType, + pingCtlDescr, + + pingCtlByPassRouteTable, + pingCtlSourceAddressType, + pingCtlSourceAddress, + pingCtlIfIndex, + pingCtlDSField, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingResultsLastGoodProbe + } + STATUS current + DESCRIPTION + "The group of objects that constitute the remote ping + capability." + + + + ::= { pingGroups 4 } + + pingCtlRowStatusGroup OBJECT-GROUP + OBJECTS { + pingCtlRowStatus + } + STATUS current + DESCRIPTION + "The RowStatus object of the pingCtlTable." + ::= { pingGroups 5 } + + pingHistoryGroup OBJECT-GROUP + OBJECTS { + pingProbeHistoryResponse, + pingProbeHistoryStatus, + pingProbeHistoryLastRC, + pingProbeHistoryTime + } + STATUS current + DESCRIPTION + "The group of objects that constitute the history + capability." + ::= { pingGroups 6 } + + pingNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + pingProbeFailed, + pingTestFailed, + pingTestCompleted + } + + STATUS current + DESCRIPTION + "The notification that are required to be supported by + implementations of this MIB." + ::= { pingGroups 3 } + + pingGroup OBJECT-GROUP + OBJECTS { + pingMaxConcurrentRequests, + pingCtlTargetAddressType, + pingCtlTargetAddress, + pingCtlDataSize, + pingCtlTimeOut, + pingCtlProbeCount, + pingCtlAdminStatus, + pingCtlDataFill, + pingCtlFrequency, + + + + pingCtlMaxRows, + pingCtlStorageType, + pingCtlTrapGeneration, + pingCtlTrapProbeFailureFilter, + pingCtlTrapTestFailureFilter, + pingCtlType, + pingCtlDescr, + pingCtlByPassRouteTable, + pingCtlSourceAddressType, + pingCtlSourceAddress, + pingCtlIfIndex, + pingCtlDSField, + pingCtlRowStatus, + pingResultsOperStatus, + pingResultsIpTargetAddressType, + pingResultsIpTargetAddress, + pingResultsMinRtt, + pingResultsMaxRtt, + pingResultsAverageRtt, + pingResultsProbeResponses, + pingResultsSentProbes, + pingResultsRttSumOfSquares, + pingProbeHistoryResponse, + pingProbeHistoryStatus, + pingProbeHistoryLastRC + } + STATUS deprecated + DESCRIPTION + "The group of objects that constitute the remote ping + capability." + ::= { pingGroups 1 } + + pingTimeStampGroup OBJECT-GROUP + + OBJECTS { + pingResultsLastGoodProbe, + pingProbeHistoryTime + } + STATUS deprecated + DESCRIPTION + "The group of DateAndTime objects." + ::= { pingGroups 2 } + +END diff --git a/mibs/ietf/DISMAN-SCHEDULE-MIB b/mibs/ietf/DISMAN-SCHEDULE-MIB new file mode 100644 index 0000000..596fe51 --- /dev/null +++ b/mibs/ietf/DISMAN-SCHEDULE-MIB @@ -0,0 +1,720 @@ +DISMAN-SCHEDULE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, Counter32, mib-2, zeroDotZero + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, + DateAndTime, RowStatus, StorageType, VariablePointer + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +schedMIB MODULE-IDENTITY + LAST-UPDATED "200201070000Z" + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@dorothy.bmc.com + Subscribe: disman-request@dorothy.bmc.com + + Chair: Randy Presuhn + BMC Software, Inc. + Postal: Office 1-3141 + 2141 North First Street + San Jose, California 95131 + USA + EMail: rpresuhn@bmc.com + Phone: +1 408 546-1006 + + Editor: David B. Levi + Nortel Networks + Postal: 4401 Great America Parkway + Santa Clara, CA 95052-8185 + USA + EMail: dlevi@nortelnetworks.com + Phone: +1 865 686 0432 + + + + Editor: Juergen Schoenwaelder + TU Braunschweig + Postal: Bueltenweg 74/75 + 38106 Braunschweig + Germany + EMail: schoenw@ibr.cs.tu-bs.de + Phone: +49 531 391-3283" + DESCRIPTION + "This MIB module defines a MIB which provides mechanisms to + schedule SNMP set operations periodically or at specific + points in time." + REVISION "200201070000Z" + DESCRIPTION + "Revised version, published as RFC 3231. + + This revision introduces a new object type called + schedTriggers. Created new conformance and compliance + statements that take care of the new schedTriggers object. + + Several clarifications have been added to remove ambiguities + that were discovered and reported by implementors." + REVISION "199811171800Z" + DESCRIPTION + "Initial version, published as RFC 2591." + ::= { mib-2 63 } + +-- +-- The various groups defined within this MIB definition: +-- + +schedObjects OBJECT IDENTIFIER ::= { schedMIB 1 } +schedNotifications OBJECT IDENTIFIER ::= { schedMIB 2 } +schedConformance OBJECT IDENTIFIER ::= { schedMIB 3 } + +-- +-- Textual Conventions: +-- + +SnmpPduErrorStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC enumerates the SNMPv1 and SNMPv2 PDU error status + codes as defined in RFC 1157 and RFC 1905. It also adds a + pseudo error status code `noResponse' which indicates a + timeout condition." + SYNTAX INTEGER { + noResponse(-1), + noError(0), + + + tooBig(1), + noSuchName(2), + badValue(3), + readOnly(4), + genErr(5), + noAccess(6), + wrongType(7), + wrongLength(8), + wrongEncoding(9), + wrongValue(10), + noCreation(11), + inconsistentValue(12), + resourceUnavailable(13), + commitFailed(14), + undoFailed(15), + authorizationError(16), + notWritable(17), + inconsistentName(18) + } + +-- +-- Some scalars which provide information about the local time zone. +-- + +schedLocalTime OBJECT-TYPE + SYNTAX DateAndTime (SIZE (11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local time used by the scheduler. Schedules which + refer to calendar time will use the local time indicated + by this object. An implementation MUST return all 11 bytes + of the DateAndTime textual-convention so that a manager + may retrieve the offset from GMT time." + ::= { schedObjects 1 } + +-- +-- The schedule table which controls the scheduler. +-- + +schedTable OBJECT-TYPE + SYNTAX SEQUENCE OF SchedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines scheduled actions triggered by + SNMP set operations." + ::= { schedObjects 2 } + + +schedEntry OBJECT-TYPE + SYNTAX SchedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular scheduled action. + + Unless noted otherwise, writable objects of this row + can be modified independent of the current value of + schedRowStatus, schedAdminStatus and schedOperStatus. + In particular, it is legal to modify schedInterval + and the objects in the schedCalendarGroup when + schedRowStatus is active and schedAdminStatus and + schedOperStatus are both enabled." + INDEX { schedOwner, schedName } + ::= { schedTable 1 } + +SchedEntry ::= SEQUENCE { + schedOwner SnmpAdminString, + schedName SnmpAdminString, + schedDescr SnmpAdminString, + schedInterval Unsigned32, + schedWeekDay BITS, + schedMonth BITS, + schedDay BITS, + schedHour BITS, + schedMinute BITS, + schedContextName SnmpAdminString, + schedVariable VariablePointer, + schedValue Integer32, + schedType INTEGER, + schedAdminStatus INTEGER, + schedOperStatus INTEGER, + schedFailures Counter32, + schedLastFailure SnmpPduErrorStatus, + schedLastFailed DateAndTime, + schedStorageType StorageType, + schedRowStatus RowStatus, + schedTriggers Counter32 +} + +schedOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The owner of this scheduling entry. The exact semantics of + this string are subject to the security policy defined by + + + the security administrator." + ::= { schedEntry 1 } + +schedName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + scheduling entry. This object allows a schedOwner to have + multiple entries in the schedTable." + ::= { schedEntry 2 } + +schedDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The human readable description of the purpose of this + scheduling entry." + DEFVAL { "" } + ::= { schedEntry 3 } + +schedInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between two action invocations of + a periodic scheduler. Implementations must guarantee + that action invocations will not occur before at least + schedInterval seconds have passed. + + The scheduler must ignore all periodic schedules that + have a schedInterval value of 0. A periodic schedule + with a scheduling interval of 0 seconds will therefore + never invoke an action. + + Implementations may be forced to delay invocations in the + face of local constraints. A scheduled management function + should therefore not rely on the accuracy provided by the + scheduler implementation. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { 0 } + + + ::= { schedEntry 4 } + +schedWeekDay OBJECT-TYPE + SYNTAX BITS { + sunday(0), + monday(1), + tuesday(2), + wednesday(3), + thursday(4), + friday(5), + saturday(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of weekdays on which the scheduled action should + take place. Setting multiple bits will include several + weekdays in the set of possible weekdays for this schedule. + Setting all bits will cause the scheduler to ignore the + weekday. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 5 } + +schedMonth OBJECT-TYPE + SYNTAX BITS { + january(0), + february(1), + march(2), + april(3), + may(4), + june(5), + july(6), + august(7), + september(8), + october(9), + november(10), + december(11) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of months during which the scheduled action should + take place. Setting multiple bits will include several + months in the set of possible months for this schedule. + + + Setting all bits will cause the scheduler to ignore the + month. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 6 } + +schedDay OBJECT-TYPE + SYNTAX BITS { + d1(0), d2(1), d3(2), d4(3), d5(4), + d6(5), d7(6), d8(7), d9(8), d10(9), + d11(10), d12(11), d13(12), d14(13), d15(14), + d16(15), d17(16), d18(17), d19(18), d20(19), + d21(20), d22(21), d23(22), d24(23), d25(24), + d26(25), d27(26), d28(27), d29(28), d30(29), + d31(30), + r1(31), r2(32), r3(33), r4(34), r5(35), + r6(36), r7(37), r8(38), r9(39), r10(40), + r11(41), r12(42), r13(43), r14(44), r15(45), + r16(46), r17(47), r18(48), r19(49), r20(50), + r21(51), r22(52), r23(53), r24(54), r25(55), + r26(56), r27(57), r28(58), r29(59), r30(60), + r31(61) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of days in a month on which a scheduled action + should take place. There are two sets of bits one can + use to define the day within a month: + + Enumerations starting with the letter 'd' indicate a + day in a month relative to the first day of a month. + The first day of the month can therefore be specified + by setting the bit d1(0) and d31(30) means the last + day of a month with 31 days. + + Enumerations starting with the letter 'r' indicate a + day in a month in reverse order, relative to the last + day of a month. The last day in the month can therefore + be specified by setting the bit r1(31) and r31(61) means + the first day of a month with 31 days. + + Setting multiple bits will include several days in the set + of possible days for this schedule. Setting all bits will + cause the scheduler to ignore the day within a month. + + + Setting all bits starting with the letter 'd' or the + letter 'r' will also cause the scheduler to ignore the + day within a month. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 7 } + +schedHour OBJECT-TYPE + SYNTAX BITS { + h0(0), h1(1), h2(2), h3(3), h4(4), + h5(5), h6(6), h7(7), h8(8), h9(9), + h10(10), h11(11), h12(12), h13(13), h14(14), + h15(15), h16(16), h17(17), h18(18), h19(19), + h20(20), h21(21), h22(22), h23(23) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The set of hours within a day during which the scheduled + action should take place. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 8 } + +schedMinute OBJECT-TYPE + SYNTAX BITS { + m0(0), m1(1), m2(2), m3(3), m4(4), + m5(5), m6(6), m7(7), m8(8), m9(9), + m10(10), m11(11), m12(12), m13(13), m14(14), + m15(15), m16(16), m17(17), m18(18), m19(19), + m20(20), m21(21), m22(22), m23(23), m24(24), + m25(25), m26(26), m27(27), m28(28), m29(29), + m30(30), m31(31), m32(32), m33(33), m34(34), + m35(35), m36(36), m37(37), m38(38), m39(39), + m40(40), m41(41), m42(42), m43(43), m44(44), + m45(45), m46(46), m47(47), m48(48), m49(49), + m50(50), m51(51), m52(52), m53(53), m54(54), + m55(55), m56(56), m57(57), m58(58), m59(59) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The set of minutes within an hour when the scheduled action + should take place. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { {} } + ::= { schedEntry 9 } + +schedContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The context which contains the local MIB variable pointed + to by schedVariable." + DEFVAL { "" } + ::= { schedEntry 10 } + +schedVariable OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object identifier pointing to a local MIB variable + which resolves to an ASN.1 primitive type of INTEGER." + DEFVAL { zeroDotZero } + ::= { schedEntry 11 } + +schedValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value which is written to the MIB object pointed to by + schedVariable when the scheduler invokes an action. The + implementation shall enforce the use of access control + rules when performing the set operation on schedVariable. + This is accomplished by calling the isAccessAllowed abstract + service interface as defined in RFC 2571. + + Note that an implementation may choose to issue an SNMP Set + message to the SNMP engine and leave the access control + decision to the normal message processing procedure." + DEFVAL { 0 } + ::= { schedEntry 12 } + +schedType OBJECT-TYPE + + + SYNTAX INTEGER { + periodic(1), + calendar(2), + oneshot(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of this schedule. The value periodic(1) indicates + that this entry specifies a periodic schedule. A periodic + schedule is defined by the value of schedInterval. The + values of schedWeekDay, schedMonth, schedDay, schedHour + and schedMinute are ignored. + + The value calendar(2) indicates that this entry describes a + calendar schedule. A calendar schedule is defined by the + values of schedWeekDay, schedMonth, schedDay, schedHour and + schedMinute. The value of schedInterval is ignored. A + calendar schedule will trigger on all local times that + satisfy the bits set in schedWeekDay, schedMonth, schedDay, + schedHour and schedMinute. + + The value oneshot(3) indicates that this entry describes a + one-shot schedule. A one-shot schedule is similar to a + calendar schedule with the additional feature that it + disables itself by changing in the `finished' + schedOperStatus once the schedule triggers an action. + + Note that implementations which maintain a list of pending + activations must re-calculate them when this object is + changed." + DEFVAL { periodic } + ::= { schedEntry 13 } + +schedAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired state of the schedule." + DEFVAL { disabled } + ::= { schedEntry 14 } + +schedOperStatus OBJECT-TYPE + SYNTAX INTEGER { + + + enabled(1), + disabled(2), + finished(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of this schedule. The state + enabled(1) indicates this entry is active and that the + scheduler will invoke actions at appropriate times. The + disabled(2) state indicates that this entry is currently + inactive and ignored by the scheduler. The finished(3) + state indicates that the schedule has ended. Schedules + in the finished(3) state are ignored by the scheduler. + A one-shot schedule enters the finished(3) state when it + deactivates itself. + + Note that the operational state must not be enabled(1) + when the schedRowStatus is not active." + ::= { schedEntry 15 } + +schedFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable counts the number of failures while invoking + the scheduled action. This counter at most increments once + for a triggered action." + ::= { schedEntry 16 } + +schedLastFailure OBJECT-TYPE + SYNTAX SnmpPduErrorStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent error that occurred during the invocation of + a scheduled action. The value noError(0) is returned + if no errors have occurred yet." + DEFVAL { noError } + ::= { schedEntry 17 } + +schedLastFailed OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the most recent failure occurred. + + + The value '0000000000000000'H is returned if no failure + occurred since the last re-initialization of the scheduler." + DEFVAL { '0000000000000000'H } + ::= { schedEntry 18 } + +schedStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this scheduled action is kept + in volatile storage and lost upon reboot or if this row is + backed up by non-volatile or permanent storage. + + Conceptual rows having the value `permanent' must allow + write access to the columnar objects schedDescr, + schedInterval, schedContextName, schedVariable, schedValue, + and schedAdminStatus. If an implementation supports the + schedCalendarGroup, write access must be also allowed to + the columnar objects schedWeekDay, schedMonth, schedDay, + schedHour, schedMinute." + DEFVAL { volatile } + ::= { schedEntry 19 } + +schedRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this scheduled action. A control that allows + entries to be added and removed from this table. + + Note that the operational state must change to enabled + when the administrative state is enabled and the row + status changes to active(1). + + Attempts to destroy(6) a row or to set a row + notInService(2) while the operational state is enabled + result in inconsistentValue errors. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { schedEntry 20 } + +schedTriggers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "This variable counts the number of attempts (either + successful or failed) to invoke the scheduled action." + ::= { schedEntry 21 } + +-- +-- Notifications that are emitted to indicate failures. The +-- definition of schedTraps makes notification registrations +-- reversible (see STD 58, RFC 2578). +-- + +schedTraps OBJECT IDENTIFIER ::= { schedNotifications 0 } + +schedActionFailure NOTIFICATION-TYPE + OBJECTS { schedLastFailure, schedLastFailed } + STATUS current + DESCRIPTION + "This notification is generated whenever the invocation of a + scheduled action fails." + ::= { schedTraps 1 } + +-- conformance information + +schedCompliances OBJECT IDENTIFIER ::= { schedConformance 1 } +schedGroups OBJECT IDENTIFIER ::= { schedConformance 2 } + +-- compliance statements + +schedCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the scheduling MIB." + MODULE -- this module + MANDATORY-GROUPS { + schedGroup2, schedNotificationsGroup + } + GROUP schedCalendarGroup + DESCRIPTION + "The schedCalendarGroup is mandatory only for those + implementations that support calendar based schedules." + OBJECT schedType + DESCRIPTION + "The values calendar(2) or oneshot(3) are not valid for + implementations that do not implement the + schedCalendarGroup. Such an implementation must return + inconsistentValue error responses for attempts to set + schedAdminStatus to calendar(2) or oneshot(3)." + + + ::= { schedCompliances 2 } + +schedGroup2 OBJECT-GROUP + OBJECTS { + schedDescr, schedInterval, schedContextName, + schedVariable, schedValue, schedType, + schedAdminStatus, schedOperStatus, schedFailures, + schedLastFailure, schedLastFailed, schedStorageType, + schedRowStatus, schedTriggers + } + STATUS current + DESCRIPTION + "A collection of objects providing scheduling capabilities." + ::= { schedGroups 4 } + +schedCalendarGroup OBJECT-GROUP + OBJECTS { + schedLocalTime, schedWeekDay, schedMonth, + schedDay, schedHour, schedMinute + } + STATUS current + DESCRIPTION + "A collection of objects providing calendar based schedules." + ::= { schedGroups 2 } + +schedNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + schedActionFailure + } + STATUS current + DESCRIPTION + "The notifications emitted by the scheduler." + ::= { schedGroups 3 } + +-- +-- Deprecated compliance and conformance group definitions +-- from RFC 2591. +-- + +schedCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities which implement + the scheduling MIB." + MODULE -- this module + MANDATORY-GROUPS { + schedGroup, schedNotificationsGroup + } + + + GROUP schedCalendarGroup + DESCRIPTION + "The schedCalendarGroup is mandatory only for those + implementations that support calendar based schedules." + OBJECT schedType + DESCRIPTION + "The values calendar(2) or oneshot(3) are not valid for + implementations that do not implement the + schedCalendarGroup. Such an implementation must return + inconsistentValue error responses for attempts to set + schedAdminStatus to calendar(2) or oneshot(3)." + ::= { schedCompliances 1 } + +schedGroup OBJECT-GROUP + OBJECTS { + schedDescr, schedInterval, schedContextName, + schedVariable, schedValue, schedType, + schedAdminStatus, schedOperStatus, schedFailures, + schedLastFailure, schedLastFailed, schedStorageType, + schedRowStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing scheduling capabilities." + ::= { schedGroups 1 } + +END diff --git a/mibs/ietf/DISMAN-SCRIPT-MIB b/mibs/ietf/DISMAN-SCRIPT-MIB new file mode 100644 index 0000000..a303497 --- /dev/null +++ b/mibs/ietf/DISMAN-SCRIPT-MIB @@ -0,0 +1,1820 @@ +DISMAN-SCRIPT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, mib-2 + FROM SNMPv2-SMI + + RowStatus, TimeInterval, DateAndTime, StorageType, DisplayString + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +scriptMIB MODULE-IDENTITY + LAST-UPDATED "200108210000Z" + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@dorothy.bmc.com + Subscribe: disman-request@dorothy.bmc.com + + Chair: Randy Presuhn + BMC Software, Inc. + + + Postal: Office 1-3141 + 2141 North First Street + San Jose, California 95131 + USA + EMail: rpresuhn@bmc.com + Phone: +1 408 546-1006 + + Editor: David B. Levi + Nortel Networks + Postal: 4401 Great America Parkway + Santa Clara, CA 95052-8185 + USA + EMail: dlevi@nortelnetworks.com + Phone: +1 423 686 0432 + + Editor: Juergen Schoenwaelder + TU Braunschweig + Postal: Bueltenweg 74/75 + 38106 Braunschweig + Germany + EMail: schoenw@ibr.cs.tu-bs.de + Phone: +49 531 391-3283" + DESCRIPTION + "This MIB module defines a set of objects that allow to + delegate management scripts to distributed managers." + REVISION "200108210000Z" + DESCRIPTION + "Revised version, published as RFC 3165. + + This revision introduces several new objects: smScriptError, + smScriptLastChange, smLaunchError, smLaunchLastChange, + smLaunchRowExpireTime, smRunResultTime, and smRunErrorTime. + + The following existing objects were updated: the maximum + value of smRunLifeTime now disables the timer, an + autostart value was added to the smLaunchAdminStatus + object, and a new expired state was added to the + smLaunchOperStatus object. + + A new smScriptException notification has been added to + support runtime error notifications. + + Created new conformance and compliance statements that + take care of the new objects and notifications. + + Clarifications have been added in several places to remove + ambiguities or contradictions that were discovered and + reported by implementors." + + + REVISION "199902221800Z" + DESCRIPTION + "Initial version, published as RFC 2592." + ::= { mib-2 64 } + +-- +-- The groups defined within this MIB module: +-- + +smObjects OBJECT IDENTIFIER ::= { scriptMIB 1 } +smNotifications OBJECT IDENTIFIER ::= { scriptMIB 2 } +smConformance OBJECT IDENTIFIER ::= { scriptMIB 3 } + +-- +-- Script language and language extensions. +-- +-- This group defines tables which list the languages and the +-- language extensions supported by a Script MIB implementation. +-- Languages are uniquely identified by object identifier values. +-- + +smLangTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmLangEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists supported script languages." + ::= { smObjects 1 } + +smLangEntry OBJECT-TYPE + SYNTAX SmLangEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular language." + INDEX { smLangIndex } + ::= { smLangTable 1 } + +SmLangEntry ::= SEQUENCE { + smLangIndex Integer32, + smLangLanguage OBJECT IDENTIFIER, + smLangVersion SnmpAdminString, + smLangVendor OBJECT IDENTIFIER, + smLangRevision SnmpAdminString, + smLangDescr SnmpAdminString +} + +smLangIndex OBJECT-TYPE + + + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this language entry. + + The value is expected to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization. + + Note that the data type and the range of this object must + be consistent with the definition of smScriptLanguage." + ::= { smLangEntry 1 } + +smLangLanguage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique identification of the language." + ::= { smLangEntry 2 } + +smLangVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language. The zero-length string + shall be used if the language does not have a version + number. + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smLangEntry 3 } + +smLangVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifier which identifies the vendor who + provides the implementation of the language. This object + identifier SHALL point to the object identifier directly + below the enterprise object identifier {1 3 6 1 4 1} + allocated for the vendor. The value must be the object + identifier {0 0} if the vendor is not known." + + + ::= { smLangEntry 4 } + +smLangRevision OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language implementation. + The value of this object must be an empty string if + version number of the implementation is unknown. + + It is suggested that the value consist of one or more + decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smLangEntry 5 } + +smLangDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the language." + ::= { smLangEntry 6 } + + +smExtsnTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmExtsnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists supported language extensions." + ::= { smObjects 2 } + +smExtsnEntry OBJECT-TYPE + SYNTAX SmExtsnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular language extension." + INDEX { smLangIndex, smExtsnIndex } + ::= { smExtsnTable 1 } + +SmExtsnEntry ::= SEQUENCE { + smExtsnIndex Integer32, + smExtsnExtension OBJECT IDENTIFIER, + smExtsnVersion SnmpAdminString, + smExtsnVendor OBJECT IDENTIFIER, + smExtsnRevision SnmpAdminString, + + + smExtsnDescr SnmpAdminString +} + +smExtsnIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this language extension entry. + + The value is expected to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization." + ::= { smExtsnEntry 1} + +smExtsnExtension OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique identification of the language + extension." + ::= { smExtsnEntry 2 } + +smExtsnVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language extension. + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smExtsnEntry 3 } + +smExtsnVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifier which identifies the vendor who + provides the implementation of the extension. The + object identifier value should point to the OID node + directly below the enterprise OID {1 3 6 1 4 1} + allocated for the vendor. The value must by the object + identifier {0 0} if the vendor is not known." + ::= { smExtsnEntry 4 } + + +smExtsnRevision OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the extension implementation. + The value of this object must be an empty string if + version number of the implementation is unknown. + + It is suggested that the value consist of one or more + decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smExtsnEntry 5 } + +smExtsnDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the language extension." + ::= { smExtsnEntry 6 } + +-- +-- Scripts known by the Script MIB implementation. +-- +-- This group defines a table which lists all known scripts. +-- Scripts can be added and removed through manipulation of the +-- smScriptTable. +-- + +smScriptObjects OBJECT IDENTIFIER ::= { smObjects 3 } + +smScriptTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmScriptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes locally known scripts." + ::= { smScriptObjects 1 } + +smScriptEntry OBJECT-TYPE + SYNTAX SmScriptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular script. Every script that + is stored in non-volatile memory is required to appear in + this script table." + + + INDEX { smScriptOwner, smScriptName } + ::= { smScriptTable 1 } + +SmScriptEntry ::= SEQUENCE { + smScriptOwner SnmpAdminString, + smScriptName SnmpAdminString, + smScriptDescr SnmpAdminString, + smScriptLanguage Integer32, + smScriptSource DisplayString, + smScriptAdminStatus INTEGER, + smScriptOperStatus INTEGER, + smScriptStorageType StorageType, + smScriptRowStatus RowStatus, + smScriptError SnmpAdminString, + smScriptLastChange DateAndTime +} + +smScriptOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The manager who owns this row in the smScriptTable." + ::= { smScriptEntry 1 } + +smScriptName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + script. This object allows an smScriptOwner to have multiple + entries in the smScriptTable. + + This value of this object may be used to derive the name + (e.g. a file name) which is used by the Script MIB + implementation to access the script in non-volatile + storage. The details of this mapping are implementation + specific. However, the mapping needs to ensure that scripts + created by different owners with the same script name do not + map to the same name in non-volatile storage." + ::= { smScriptEntry 2 } + +smScriptDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "A description of the purpose of the script." + ::= { smScriptEntry 3 } + +smScriptLanguage OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object type identifies an entry in the + smLangTable which is used to execute this script. + The special value 0 may be used by hard-wired scripts + that can not be modified and that are executed by + internal functions. + + Set requests to change this object are invalid if the + value of smScriptOperStatus is `enabled' or `compiling' + and will result in an inconsistentValue error. + + Note that the data type and the range of this object must + be consistent with the definition of smLangIndex." + ::= { smScriptEntry 4 } + +smScriptSource OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object either contains a reference to the script + source or an empty string. A reference must be given + in the form of a Uniform Resource Locator (URL) as + defined in RFC 2396. The allowed character sets and the + encoding rules defined in RFC 2396 section 2 apply. + + When the smScriptAdminStatus object is set to `enabled', + the Script MIB implementation will `pull' the script + source from the URL contained in this object if the URL + is not empty. + + An empty URL indicates that the script source is loaded + from local storage. The script is read from the smCodeTable + if the value of smScriptStorageType is volatile. Otherwise, + the script is read from non-volatile storage. + + Note: This document does not mandate implementation of any + specific URL scheme. An attempt to load a script from a + nonsupported URL scheme will cause the smScriptOperStatus + to report an `unknownProtocol' error. + + + + Set requests to change this object are invalid if the + value of smScriptOperStatus is `enabled', `editing', + `retrieving' or `compiling' and will result in an + inconsistentValue error." + DEFVAL { ''H } + ::= { smScriptEntry 5 } + +smScriptAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + editing(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of + the script. See the definition of smScriptOperStatus for + a description of the values. + + When the smScriptAdminStatus object is set to `enabled' and + the smScriptOperStatus is `disabled' or one of the error + states, the Script MIB implementation will `pull' the script + source from the URL contained in the smScriptSource object + if the URL is not empty." + DEFVAL { disabled } + ::= { smScriptEntry 6 } + +smScriptOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + editing(3), + retrieving(4), + compiling(5), + noSuchScript(6), + accessDenied(7), + wrongLanguage(8), + wrongVersion(9), + compilationFailed(10), + noResourcesLeft(11), + unknownProtocol(12), + protocolFailure(13), + genericError(14) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The actual status of the script in the runtime system. The + value of this object is only meaningful when the value of + the smScriptRowStatus object is `active'. + + The smScriptOperStatus object may have the following values: + + - `enabled' indicates that the script is available and can + be started by a launch table entry. + + - `disabled' indicates that the script can not be used. + + - `editing' indicates that the script can be modified in the + smCodeTable. + + - `retrieving' indicates that the script is currently being + loaded from non-volatile storage or a remote system. + + - `compiling' indicates that the script is currently being + compiled by the runtime system. + + - `noSuchScript' indicates that the script does not exist + at the smScriptSource. + + - `accessDenied' indicates that the script can not be loaded + from the smScriptSource due to a lack of permissions. + + - `wrongLanguage' indicates that the script can not be + loaded from the smScriptSource because of a language + mismatch. + + - `wrongVersion' indicates that the script can not be loaded + from the smScriptSource because of a language version + mismatch. + + - `compilationFailed' indicates that the compilation failed. + + - `noResourcesLeft' indicates that the runtime system does + not have enough resources to load the script. + + - `unknownProtocol' indicates that the script could not be + loaded from the smScriptSource because the requested + protocol is not supported. + + - `protocolFailure' indicates that the script could not be + loaded from the smScriptSource because of a protocol + failure. + + - `genericError' indicates that the script could not be + + + loaded due to an error condition not listed above. + + The `retrieving' and `compiling' states are transient states + which will either lead to one of the error states or the + `enabled' state. The `disabled' and `editing' states are + administrative states which are only reached by explicit + management operations. + + All launch table entries that refer to this script table + entry shall have an smLaunchOperStatus value of `disabled' + when the value of this object is not `enabled'." + DEFVAL { disabled } + ::= { smScriptEntry 7 } + +smScriptStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row and the script + controlled by this row are kept in volatile storage and + lost upon reboot or if this row is backed up by + non-volatile or permanent storage. + + The storage type of this row always complies with the value + of this entry if the value of the corresponding RowStatus + object is `active'. + + However, the storage type of the script controlled by this + row may be different, if the value of this entry is + `non-volatile'. The script controlled by this row is written + into local non-volatile storage if the following condition + becomes true: + + (a) the URL contained in the smScriptSource object is empty + and + (b) the smScriptStorageType is `nonVolatile' + and + (c) the smScriptOperStatus is `enabled' + + Setting this object to `volatile' removes a script from + non-volatile storage if the script controlled by this row + has been in non-volatile storage before. Attempts to set + this object to permanent will always fail with an + inconsistentValue error. + + The value of smScriptStorageType is only meaningful if the + value of the corresponding RowStatus object is `active'. + + + If smScriptStorageType has the value permanent(4), then all + objects whose MAX-ACCESS value is read-create must be + writable, with the exception of the smScriptStorageType and + smScriptRowStatus objects, which shall be read-only." + DEFVAL { volatile } + ::= { smScriptEntry 8 } + +smScriptRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + Changing the smScriptRowStatus from `active' to + `notInService' will remove the associated script from the + runtime system. + + Deleting conceptual rows from this table may affect the + deletion of other resources associated with this row. For + example, a script stored in non-volatile storage may be + removed from non-volatile storage. + + An entry may not exist in the `active' state unless all + required objects in the entry have appropriate values. Rows + that are not complete or not in service are not known by the + script runtime system. + + Attempts to `destroy' a row or to set a row `notInService' + while the smScriptOperStatus is `enabled' will result in an + inconsistentValue error. + + Attempts to `destroy' a row or to set a row `notInService' + where the value of the smScriptStorageType object is + `permanent' or `readOnly' will result in an + inconsistentValue error. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { smScriptEntry 9 } + +smScriptError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a descriptive error message if the + + + transition into the operational status `enabled' failed. + Implementations must reset the error message to a + zero-length string when a new attempt to change the + script status to `enabled' is started." + DEFVAL { ''H } + ::= { smScriptEntry 10 } + +smScriptLastChange OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this script table entry was last + modified. The value '0000000000000000'H is returned if + the script table entry has not yet been modified. + + Note that the resetting of smScriptError is not considered + a change of the script table entry." + DEFVAL { '0000000000000000'H } + ::= { smScriptEntry 11 } + +-- +-- Access to script code via SNMP +-- +-- The smCodeTable allows script code to be read and modified +-- via SNMP. +-- + +smCodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the script code for scripts that are + written via SNMP write operations." + ::= { smScriptObjects 2 } + +smCodeEntry OBJECT-TYPE + SYNTAX SmCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular fragment of a script." + INDEX { smScriptOwner, smScriptName, smCodeIndex } + ::= { smCodeTable 1 } + +SmCodeEntry ::= SEQUENCE { + smCodeIndex Unsigned32, + + + smCodeText OCTET STRING, + smCodeRowStatus RowStatus +} + +smCodeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value identifying this code fragment." + ::= { smCodeEntry 1 } + +smCodeText OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The code that makes up a fragment of a script. The format + of this code fragment depends on the script language which + is identified by the associated smScriptLanguage object." + ::= { smCodeEntry 2 } + +smCodeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { smCodeEntry 3 } + +-- +-- Script execution. +-- +-- This group defines tables which allow script execution to be +-- initiated, suspended, resumed, and terminated. It also provides +-- a mechanism for keeping a history of recent script executions +-- and their results. +-- + +smRunObjects OBJECT IDENTIFIER ::= { smObjects 4 } + +smLaunchTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmLaunchEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "This table lists and describes scripts that are ready + to be executed together with their parameters." + ::= { smRunObjects 1 } + +smLaunchEntry OBJECT-TYPE + SYNTAX SmLaunchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular executable script." + INDEX { smLaunchOwner, smLaunchName } + ::= { smLaunchTable 1 } + +SmLaunchEntry ::= SEQUENCE { + smLaunchOwner SnmpAdminString, + smLaunchName SnmpAdminString, + smLaunchScriptOwner SnmpAdminString, + smLaunchScriptName SnmpAdminString, + smLaunchArgument OCTET STRING, + smLaunchMaxRunning Unsigned32, + smLaunchMaxCompleted Unsigned32, + smLaunchLifeTime TimeInterval, + smLaunchExpireTime TimeInterval, + smLaunchStart Integer32, + smLaunchControl INTEGER, + smLaunchAdminStatus INTEGER, + smLaunchOperStatus INTEGER, + smLaunchRunIndexNext Integer32, + smLaunchStorageType StorageType, + smLaunchRowStatus RowStatus, + smLaunchError SnmpAdminString, + smLaunchLastChange DateAndTime, + smLaunchRowExpireTime TimeInterval +} + +smLaunchOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The manager who owns this row in the smLaunchTable. Every + instance of a running script started from a particular entry + in the smLaunchTable (i.e. entries in the smRunTable) will + be owned by the same smLaunchOwner used to index the entry + in the smLaunchTable. This owner is not necessarily the same + as the owner of the script itself (smLaunchScriptOwner)." + + + ::= { smLaunchEntry 1 } + +smLaunchName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + launch table entry. This object allows an smLaunchOwner to + have multiple entries in the smLaunchTable. The smLaunchName + is an arbitrary name that must be different from any other + smLaunchTable entries with the same smLaunchOwner but can be + the same as other entries in the smLaunchTable with + different smLaunchOwner values. Note that the value of + smLaunchName is not related in any way to the name of the + script being launched." + ::= { smLaunchEntry 2 } + +smLaunchScriptOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object in combination with the value of + smLaunchScriptName identifies the script that can be + launched from this smLaunchTable entry. Attempts to write + this object will fail with an inconsistentValue error if + the value of smLaunchOperStatus is `enabled'." + ::= { smLaunchEntry 3 } + +smLaunchScriptName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object in combination with the value of + the smLaunchScriptOwner identifies the script that can be + launched from this smLaunchTable entry. The zero-length + string may be used to point to a non-existing script. + + Attempts to write this object will fail with an + inconsistentValue error if the value of smLaunchOperStatus + is `enabled'." + DEFVAL { ''H } + ::= { smLaunchEntry 4 } + +smLaunchArgument OBJECT-TYPE + SYNTAX OCTET STRING + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The argument supplied to the script. When a script is + invoked, the value of this object is used to initialize + the smRunArgument object." + DEFVAL { ''H } + ::= { smLaunchEntry 5 } + +smLaunchMaxRunning OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of concurrently running scripts that may + be invoked from this entry in the smLaunchTable. Lowering + the current value of this object does not affect any scripts + that are already executing." + DEFVAL { 1 } + ::= { smLaunchEntry 6 } + +smLaunchMaxCompleted OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of finished scripts invoked from this + entry in the smLaunchTable allowed to be retained in the + smRunTable. Whenever the value of this object is changed + and whenever a script terminates, entries in the smRunTable + are deleted if necessary until the number of completed + scripts is smaller than the value of this object. Scripts + whose smRunEndTime value indicates the oldest completion + time are deleted first." + DEFVAL { 1 } + ::= { smLaunchEntry 7 } + +smLaunchLifeTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum amount of time a script launched + from this entry may run. The value of this object is used + to initialize the smRunLifeTime object when a script is + launched. Changing the value of an smLaunchLifeTime + instance does not affect scripts previously launched from + + + this entry." + DEFVAL { 360000 } + ::= { smLaunchEntry 8 } + +smLaunchExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum amount of time information about a + script launched from this entry is kept in the smRunTable + after the script has completed execution. The value of + this object is used to initialize the smRunExpireTime + object when a script is launched. Changing the value of an + smLaunchExpireTime instance does not affect scripts + previously launched from this entry." + DEFVAL { 360000 } + ::= { smLaunchEntry 9 } + +smLaunchStart OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to start the execution of scripts. + When retrieved, the value will be the value of smRunIndex + for the last script that started execution by manipulating + this object. The value will be zero if no script started + execution yet. + + A script is started by setting this object to an unused + smRunIndex value. A new row in the smRunTable will be + created which is indexed by the value supplied by the + set-request in addition to the value of smLaunchOwner and + smLaunchName. An unused value can be obtained by reading + the smLaunchRunIndexNext object. + + Setting this object to the special value 0 will start + the script with a self-generated smRunIndex value. The + consequence is that the script invoker has no reliable + way to determine the smRunIndex value for this script + invocation and that the invoker has therefore no way + to obtain the results from this script invocation. The + special value 0 is however useful for scheduled script + invocations. + + If this object is set, the following checks must be + + + performed: + + 1) The value of the smLaunchOperStatus object in this + entry of the smLaunchTable must be `enabled'. + 2) The values of smLaunchScriptOwner and + smLaunchScriptName of this row must identify an + existing entry in the smScriptTable. + 3) The value of smScriptOperStatus of this entry must + be `enabled'. + 4) The principal performing the set operation must have + read access to the script. This must be checked by + calling the isAccessAllowed abstract service interface + defined in RFC 2271 on the row in the smScriptTable + identified by smLaunchScriptOwner and smLaunchScriptName. + The isAccessAllowed abstract service interface must be + called on all columnar objects in the smScriptTable with + a MAX-ACCESS value different than `not-accessible'. The + test fails as soon as a call indicates that access is + not allowed. + 5) If the value provided by the set operation is not 0, + a check must be made that the value is currently not + in use. Otherwise, if the value provided by the set + operation is 0, a suitable unused value must be + generated. + 6) The number of currently executing scripts invoked + from this smLaunchTable entry must be less than + smLaunchMaxRunning. + + Attempts to start a script will fail with an + inconsistentValue error if one of the checks described + above fails. + + Otherwise, if all checks have been passed, a new entry + in the smRunTable will be created indexed by smLaunchOwner, + smLaunchName and the new value for smRunIndex. The value + of smLaunchArgument will be copied into smRunArgument, + the value of smLaunchLifeTime will be copied to + smRunLifeTime, and the value of smLaunchExpireTime + will be copied to smRunExpireTime. + + The smRunStartTime will be set to the current time and + the smRunState will be set to `initializing' before the + script execution is initiated in the appropriate runtime + system. + + Note that the data type and the range of this object must + be consistent with the smRunIndex object. Since this + object might be written from the scheduling MIB, the + + + data type Integer32 rather than Unsigned32 is used." + DEFVAL { 0 } + ::= { smLaunchEntry 10 } + +smLaunchControl OBJECT-TYPE + SYNTAX INTEGER { + abort(1), + suspend(2), + resume(3), + nop(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to request a state change for all + running scripts in the smRunTable that were started from + this row in the smLaunchTable. + + Setting this object to abort(1), suspend(2) or resume(3) + will set the smRunControl object of all applicable rows + in the smRunTable to abort(1), suspend(2) or resume(3) + respectively. The phrase `applicable rows' means the set of + rows which were created from this entry in the smLaunchTable + and whose value of smRunState allows the corresponding + state change as described in the definition of the + smRunControl object. Setting this object to nop(4) has no + effect. + + Attempts to set this object lead to an inconsistentValue + error only if all implicated sets on all the applicable + rows lead to inconsistentValue errors. It is not allowed + to return an inconsistentValue error if at least one state + change on one of the applicable rows was successful." + DEFVAL { nop } + ::= { smLaunchEntry 11 } + +smLaunchAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + autostart(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of + this launch table entry. The values enabled(1) and + autostart(3) both indicate that the launch table entry + + + should transition into the operational enabled(1) state as + soon as the associated script table entry is enabled(1). + + The value autostart(3) further indicates that the script + is started automatically by conceptually writing the + value 0 into the associated smLaunchStart object during + the transition from the `disabled' into the `enabled' + operational state. This is useful for scripts that are + to be launched on system start-up." + DEFVAL { disabled } + ::= { smLaunchEntry 12 } + +smLaunchOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + expired(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the actual status of + this launch table entry. The smLaunchOperStatus object + may have the following values: + + - `enabled' indicates that the launch table entry is + available and can be used to start scripts. + + - `disabled' indicates that the launch table entry can + not be used to start scripts. + + - `expired' indicates that the launch table entry can + not be used to start scripts and will disappear as + soon as all smRunTable entries associated with this + launch table entry have disappeared. + + The value `enabled' requires that the smLaunchRowStatus + object is active. The value `disabled' requires that there + are no entries in the smRunTable associated with this + smLaunchTable entry." + DEFVAL { disabled } + ::= { smLaunchEntry 13 } + +smLaunchRunIndexNext OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "This variable is used for creating rows in the smRunTable. + The value of this variable is a currently unused value + for smRunIndex, which can be written into the smLaunchStart + object associated with this row to launch a script. + + The value returned when reading this variable must be unique + for the smLaunchOwner and smLaunchName associated with this + row. Subsequent attempts to read this variable must return + different values. + + This variable will return the special value 0 if no new rows + can be created. + + Note that the data type and the range of this object must be + consistent with the definition of smRunIndex." + ::= { smLaunchEntry 14 } + +smLaunchStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines if this row is kept in volatile storage + and lost upon reboot or if this row is backed up by stable + storage. + + The value of smLaunchStorageType is only meaningful if the + value of the corresponding RowStatus object is active. + + If smLaunchStorageType has the value permanent(4), then all + objects whose MAX-ACCESS value is read-create must be + writable, with the exception of the smLaunchStorageType and + smLaunchRowStatus objects, which shall be read-only." + DEFVAL { volatile } + ::= { smLaunchEntry 15 } + +smLaunchRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + Attempts to `destroy' a row or to set a row `notInService' + while the smLaunchOperStatus is `enabled' will result in + an inconsistentValue error. + + + + Attempts to `destroy' a row or to set a row `notInService' + where the value of the smLaunchStorageType object is + `permanent' or `readOnly' will result in an + inconsistentValue error. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { smLaunchEntry 16 } + +smLaunchError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a descriptive error message if an + attempt to launch a script fails. Implementations must reset + the error message to a zero-length string when a new attempt + to launch a script is started." + DEFVAL { ''H } + ::= { smLaunchEntry 17 } + +smLaunchLastChange OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this launch table entry was last + modified. The value '0000000000000000'H is returned if + the launch table entry has not yet been modified. + + Note that a change of smLaunchStart, smLaunchControl, + smLaunchRunIndexNext, smLaunchRowExpireTime, or the + resetting of smLaunchError is not considered a change + of this launch table entry." + DEFVAL { '0000000000000000'H } + ::= { smLaunchEntry 18 } + +smLaunchRowExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object specifies how long this row remains + in the `enabled' or `disabled' operational state. The value + reported by this object ticks backwards. When the value + reaches 0, it stops ticking backward and the row is + deleted if there are no smRunTable entries associated with + + + this smLaunchTable entry. Otherwise, the smLaunchOperStatus + changes to `expired' and the row deletion is deferred + until there are no smRunTable entries associated with this + smLaunchTable entry. + + The smLaunchRowExpireTime will not tick backwards if it is + set to its maximum value (2147483647). In other words, + setting this object to its maximum value turns the timer + off. + + The value of this object may be set in order to increase + or reduce the remaining time that the launch table entry + may be used. Setting the value to 0 will cause an immediate + row deletion or transition into the `expired' operational + state. + + It is not possible to set this object while the operational + status is `expired'. Attempts to modify this object while + the operational status is `expired' leads to an + inconsistentValue error. + + Note that the timer ticks backwards independent of the + operational state of the launch table entry." + DEFVAL { 2147483647 } + ::= { smLaunchEntry 19 } + + +smRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes scripts that are currently + running or have been running in the past." + ::= { smRunObjects 2 } + +smRunEntry OBJECT-TYPE + SYNTAX SmRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular running or finished + script." + INDEX { smLaunchOwner, smLaunchName, smRunIndex } + ::= { smRunTable 1 } + +SmRunEntry ::= SEQUENCE { + smRunIndex Integer32, + + + smRunArgument OCTET STRING, + smRunStartTime DateAndTime, + smRunEndTime DateAndTime, + smRunLifeTime TimeInterval, + smRunExpireTime TimeInterval, + smRunExitCode INTEGER, + smRunResult OCTET STRING, + smRunControl INTEGER, + smRunState INTEGER, + smRunError SnmpAdminString, + smRunResultTime DateAndTime, + smRunErrorTime DateAndTime +} + +smRunIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this running or finished script. This value must be + unique for all rows in the smRunTable with the same + smLaunchOwner and smLaunchName. + + Note that the data type and the range of this object must + be consistent with the definition of smLaunchRunIndexNext + and smLaunchStart." + ::= { smRunEntry 1 } + +smRunArgument OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The argument supplied to the script when it started." + DEFVAL { ''H } + ::= { smRunEntry 2 } + +smRunStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the execution started. The value + '0000000000000000'H is returned if the script has not + started yet." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 3 } + + +smRunEndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the execution terminated. The value + '0000000000000000'H is returned if the script has not + terminated yet." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 4 } + +smRunLifeTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies how long the script can execute. + This object returns the remaining time that the script + may run. The object is initialized with the value of the + associated smLaunchLifeTime object and ticks backwards. + The script is aborted immediately when the value reaches 0. + + The value of this object may be set in order to increase or + reduce the remaining time that the script may run. Setting + this value to 0 will abort script execution immediately, + and, if the value of smRunExpireTime is also 0, will remove + this entry from the smRunTable once it has terminated. + + If smRunLifeTime is set to its maximum value (2147483647), + either by a set operation or by its initialization from the + smLaunchLifeTime object, then it will not tick backwards. + A running script with a maximum smRunLifeTime value will + thus never be terminated with a `lifeTimeExceeded' exit + code. + + The value of smRunLifeTime reflects the real-time execution + time as seen by the outside world. The value of this object + will always be 0 for a script that finished execution, that + is smRunState has the value `terminated'. + + The value of smRunLifeTime does not change while a script + is suspended, that is smRunState has the value `suspended'. + Note that this does not affect set operations. It is legal + to modify smRunLifeTime via set operations while a script + is suspended." + ::= { smRunEntry 5 } + + + +smRunExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object specifies how long this row can + exist in the smRunTable after the script has terminated. + This object returns the remaining time that the row may + exist before it is aged out. The object is initialized with + the value of the associated smLaunchExpireTime object and + ticks backwards. The entry in the smRunTable is destroyed + when the value reaches 0 and the smRunState has the value + `terminated'. + + The value of this object may be set in order to increase or + reduce the remaining time that the row may exist. Setting + the value to 0 will destroy this entry as soon as the + smRunState has the value `terminated'." + ::= { smRunEntry 6 } + +smRunExitCode OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + halted(2), + lifeTimeExceeded(3), + noResourcesLeft(4), + languageError(5), + runtimeError(6), + invalidArgument(7), + securityViolation(8), + genericError(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the reason why a + script finished execution. The smRunExitCode code may have + one of the following values: + + - `noError', which indicates that the script completed + successfully without errors; + + - `halted', which indicates that the script was halted + by a request from an authorized manager; + + - `lifeTimeExceeded', which indicates that the script + exited because a time limit was exceeded; + + + - `noResourcesLeft', which indicates that the script + exited because it ran out of resources (e.g. memory); + + - `languageError', which indicates that the script exited + because of a language error (e.g. a syntax error in an + interpreted language); + + - `runtimeError', which indicates that the script exited + due to a runtime error (e.g. a division by zero); + + - `invalidArgument', which indicates that the script could + not be run because of invalid script arguments; + + - `securityViolation', which indicates that the script + exited due to a security violation; + + - `genericError', which indicates that the script exited + for an unspecified reason. + + If the script has not yet begun running, or is currently + running, the value will be `noError'." + DEFVAL { noError } + ::= { smRunEntry 7 } + +smRunResult OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The result value produced by the running script. Note that + the result may change while the script is executing." + DEFVAL { ''H } + ::= { smRunEntry 8 } + +smRunControl OBJECT-TYPE + SYNTAX INTEGER { + abort(1), + suspend(2), + resume(3), + nop(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of the + script execution defined by this row. + + Setting this object to `abort' will abort execution if the + + + value of smRunState is `initializing', `executing', + `suspending', `suspended' or `resuming'. Setting this object + to `abort' when the value of smRunState is `aborting' or + `terminated', or if the implementation can determine that + the attempt to abort the execution would fail, will result + in an inconsistentValue error. + + Setting this object to `suspend' will suspend execution + if the value of smRunState is `executing'. Setting this + object to `suspend' will cause an inconsistentValue error + if the value of smRunState is not `executing' or if the + implementation can determine that the attempt to suspend + the execution would fail. + + Setting this object to `resume' will resume execution + if the value of smRunState is `suspending' or + `suspended'. Setting this object to `resume' will cause an + inconsistentValue error if the value of smRunState is + not `suspended' or if the implementation can determine + that the attempt to resume the execution would fail. + + Setting this object to nop(4) has no effect." + DEFVAL { nop } + ::= { smRunEntry 9 } + +smRunState OBJECT-TYPE + SYNTAX INTEGER { + initializing(1), + executing(2), + suspending(3), + suspended(4), + resuming(5), + aborting(6), + terminated(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the script's execution + state. If the script has been invoked but has not yet + begun execution, the value will be `initializing'. If the + script is running, the value will be `executing'. + + A running script which received a request to suspend + execution first transitions into a temporary `suspending' + state. The temporary `suspending' state changes to + `suspended' when the script has actually been suspended. The + temporary `suspending' state changes back to `executing' if + + + the attempt to suspend the running script fails. + + A suspended script which received a request to resume + execution first transitions into a temporary `resuming' + state. The temporary `resuming' state changes to `running' + when the script has actually been resumed. The temporary + `resuming' state changes back to `suspended' if the attempt + to resume the suspended script fails. + + A script which received a request to abort execution but + which is still running first transitions into a temporary + `aborting' state. + + A script which has finished its execution is `terminated'." + ::= { smRunEntry 10 } + +smRunError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a descriptive error message if the + script startup or execution raised an abnormal condition. + An implementation must store a descriptive error message + in this object if the script exits with the smRunExitCode + `genericError'." + DEFVAL { ''H } + ::= { smRunEntry 11 } + +smRunResultTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the smRunResult was last updated. + The value '0000000000000000'H is returned if smRunResult + has not yet been updated after the creation of this + smRunTable entry." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 12 } + +smRunErrorTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the smRunError was last updated. + The value '0000000000000000'H is returned if smRunError + + + has not yet been updated after the creation of this + smRunTable entry." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 13 } + +-- +-- Notifications. The definition of smTraps makes notification +-- registrations reversible (see STD 58, RFC 2578). +-- + +smTraps OBJECT IDENTIFIER ::= { smNotifications 0 } + +smScriptAbort NOTIFICATION-TYPE + OBJECTS { smRunExitCode, smRunEndTime, smRunError } + STATUS current + DESCRIPTION + "This notification is generated whenever a running script + terminates with an smRunExitCode unequal to `noError'." + ::= { smTraps 1 } + +smScriptResult NOTIFICATION-TYPE + OBJECTS { smRunResult } + STATUS current + DESCRIPTION + "This notification can be used by scripts to notify other + management applications about results produced by the + script. + + This notification is not automatically generated by the + Script MIB implementation. It is the responsibility of + the executing script to emit this notification where it + is appropriate to do so." + ::= { smTraps 2 } + +smScriptException NOTIFICATION-TYPE + OBJECTS { smRunError } + STATUS current + DESCRIPTION + "This notification can be used by scripts to notify other + management applications about script errors. + + This notification is not automatically generated by the + Script MIB implementation. It is the responsibility of + the executing script or the runtime system to emit this + notification where it is appropriate to do so." + ::= { smTraps 3 } + +-- conformance information + + +smCompliances OBJECT IDENTIFIER ::= { smConformance 1 } +smGroups OBJECT IDENTIFIER ::= { smConformance 2 } + +-- compliance statements + +smCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the Script MIB." + MODULE -- this module + MANDATORY-GROUPS { + smLanguageGroup, smScriptGroup2, smLaunchGroup2, + smRunGroup2, smNotificationsGroup2 + } + GROUP smCodeGroup + DESCRIPTION + "The smCodeGroup is mandatory only for those implementations + that support the downloading of scripts via SNMP." + OBJECT smScriptSource + MIN-ACCESS read-only + DESCRIPTION + "The smScriptSource object is read-only for implementations + that are not able to download script code from a URL." + OBJECT smCodeText + DESCRIPTION + "A compliant implementation need only support write access to + the smCodeText object only during row creation." + OBJECT smLaunchArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smLaunchArgument of 255 octets." + OBJECT smRunArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunArgument of 255 octets." + OBJECT smRunResult + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunResult of 255 octets." + OBJECT smRunState + DESCRIPTION + "A compliant implementation does not have to support script + suspension and the smRunState `suspended'. Such an + implementation will change into the `suspending' state + when the smRunControl is set to `suspend' and remain in this + state until smRunControl is set to `resume' or the script + terminates." + + + ::= { smCompliances 2 } + +smLanguageGroup OBJECT-GROUP + OBJECTS { + smLangLanguage, smLangVersion, + smLangVendor, smLangRevision, + smLangDescr, smExtsnExtension, + smExtsnVersion, smExtsnVendor, + smExtsnRevision, smExtsnDescr + } + STATUS current + DESCRIPTION + "A collection of objects providing information about the + capabilities of the scripting engine." + ::= { smGroups 1 } + +smScriptGroup2 OBJECT-GROUP + OBJECTS { + smScriptDescr, smScriptLanguage, + smScriptSource, smScriptAdminStatus, + smScriptOperStatus, smScriptStorageType, + smScriptRowStatus, smScriptError, + smScriptLastChange + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + installed scripts." + ::= { smGroups 7 } + +smCodeGroup OBJECT-GROUP + OBJECTS { + smCodeText, smCodeRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects used to download or modify scripts + by using SNMP set requests." + ::= { smGroups 3 } + +smLaunchGroup2 OBJECT-GROUP + OBJECTS { + smLaunchScriptOwner, smLaunchScriptName, + smLaunchArgument, smLaunchMaxRunning, + smLaunchMaxCompleted, smLaunchLifeTime, + smLaunchExpireTime, smLaunchStart, + smLaunchControl, smLaunchAdminStatus, + smLaunchOperStatus, smLaunchRunIndexNext, + + + smLaunchStorageType, smLaunchRowStatus, + smLaunchError, smLaunchLastChange, + smLaunchRowExpireTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about scripts + that can be launched." + ::= { smGroups 8 } + +smRunGroup2 OBJECT-GROUP + OBJECTS { + smRunArgument, smRunStartTime, + smRunEndTime, smRunLifeTime, + smRunExpireTime, smRunExitCode, + smRunResult, smRunState, + smRunControl, smRunError, + smRunResultTime, smRunErrorTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about running + scripts." + ::= { smGroups 9 } + +smNotificationsGroup2 NOTIFICATION-GROUP + NOTIFICATIONS { + smScriptAbort, + smScriptResult, + smScriptException + } + STATUS current + DESCRIPTION + "The notifications emitted by the Script MIB." + ::= { smGroups 10 } + +-- +-- Deprecated compliance and conformance group definitions +-- from RFC 2592. +-- + +smCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities which implement + the Script MIB." + MODULE -- this module + MANDATORY-GROUPS { + + + smLanguageGroup, smScriptGroup, smLaunchGroup, smRunGroup + } + GROUP smCodeGroup + DESCRIPTION + "The smCodeGroup is mandatory only for those implementations + that support the downloading of scripts via SNMP." + OBJECT smScriptSource + MIN-ACCESS read-only + DESCRIPTION + "The smScriptSource object is read-only for implementations + that are not able to download script code from a URL." + OBJECT smCodeText + DESCRIPTION + "A compliant implementation need only support write access + to the smCodeText object during row creation." + OBJECT smLaunchArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smLaunchArgument of 255 octets." + OBJECT smRunArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunArgument of 255 octets." + OBJECT smRunResult + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunResult of 255 octets." + OBJECT smRunState + DESCRIPTION + "A compliant implementation does not have to support script + suspension and the smRunState `suspended'. Such an + implementation will change into the `suspending' state + when the smRunControl is set to `suspend' and remain in this + state until smRunControl is set to `resume' or the script + terminates." + ::= { smCompliances 1 } + +smScriptGroup OBJECT-GROUP + OBJECTS { + smScriptDescr, smScriptLanguage, + smScriptSource, smScriptAdminStatus, + smScriptOperStatus, smScriptStorageType, + smScriptRowStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information about + installed scripts." + + + ::= { smGroups 2 } + +smLaunchGroup OBJECT-GROUP + OBJECTS { + smLaunchScriptOwner, smLaunchScriptName, + smLaunchArgument, smLaunchMaxRunning, + smLaunchMaxCompleted, smLaunchLifeTime, + smLaunchExpireTime, smLaunchStart, + smLaunchControl, smLaunchAdminStatus, + smLaunchOperStatus, smLaunchRunIndexNext, + smLaunchStorageType, smLaunchRowStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information about scripts + that can be launched." + ::= { smGroups 4 } + +smRunGroup OBJECT-GROUP + OBJECTS { + smRunArgument, smRunStartTime, + smRunEndTime, smRunLifeTime, + smRunExpireTime, smRunExitCode, + smRunResult, smRunState, + smRunControl, smRunError + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information about running + scripts." + ::= { smGroups 5 } + +smNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + smScriptAbort, + smScriptResult + } + STATUS deprecated + DESCRIPTION + "The notifications emitted by the Script MIB." + ::= { smGroups 6 } + +END diff --git a/mibs/ietf/DISMAN-TRACEROUTE-MIB b/mibs/ietf/DISMAN-TRACEROUTE-MIB new file mode 100644 index 0000000..402cd49 --- /dev/null +++ b/mibs/ietf/DISMAN-TRACEROUTE-MIB @@ -0,0 +1,1946 @@ +DISMAN-TRACEROUTE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, + Gauge32, Unsigned32, mib-2, + NOTIFICATION-TYPE, + OBJECT-IDENTITY + FROM SNMPv2-SMI -- RFC2578 + RowStatus, StorageType, + TruthValue, DateAndTime + FROM SNMPv2-TC -- RFC2579 + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC3411 + InterfaceIndexOrZero -- RFC2863 + FROM IF-MIB + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB -- RFC4001 + OperationResponseStatus + FROM DISMAN-PING-MIB; -- RFC4560 + + traceRouteMIB MODULE-IDENTITY + LAST-UPDATED "200606130000Z" -- 13 June 2006 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "Juergen Quittek + + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + + Phone: +49 6221 4342-115 + Email: quittek@netlab.nec.de" + DESCRIPTION + "The Traceroute MIB (DISMAN-TRACEROUTE-MIB) provides + access to the traceroute capability at a remote host. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4560; see the RFC itself for + full legal notices." + + -- Revision history + + + REVISION "200606130000Z" -- 13 June 2006 + DESCRIPTION + "Updated version, published as RFC 4560. + - Correctly considered IPv6 in DESCRIPTION clause of + object traceRouteCtlDataSize + - Replaced references to RFC 2575 by RFC 3415 + - Replaced references to RFC 2571 by RFC 3411 + - Replaced references to RFC 2851 by RFC 4001 + - Clarified DESCRIPTION clause of object + traceRouteResultsLastGoodPath + - Changed range of object traceRouteCtlInitialTtl + from (0..255) to (1..255) + - Extended DESCRIPTION clause of traceRouteResultsTable + describing re-initialization of entries + - Changed SYNTAX of traceRouteResultsTestAttempts and + traceRouteResultsTestSuccesses from Unsigned32 to + Gauge32 + - Changed status of traceRouteCompliance to deprecated + - Added traceRouteFullCompliance and + traceRouteMinimumCompliance + - Changed status of traceRouteGroup and + traceRouteTimeStampGroup to deprecated + - Added traceRouteMinimumGroup, + traceRouteCtlRowStatusGroup, and + traceRouteHistoryGroup + - Changed DEFVAL of object + traceRouteCtlTargetAddressType from { ipv4 } + to { unknown } + - Changed DEFVAL of object traceRouteCtlDescr + from { '00'H } to { ''H } + - Added DEFVAL for object traceRouteCtlTrapGeneration + of DEFVAL { { } }" + REVISION "200009210000Z" -- 21 September 2000 + DESCRIPTION + "Initial version, published as RFC 2925." + + ::= { mib-2 81 } + + -- Top level structure of the MIB + + traceRouteNotifications OBJECT IDENTIFIER ::= { traceRouteMIB 0 } + traceRouteObjects OBJECT IDENTIFIER ::= { traceRouteMIB 1 } + traceRouteConformance OBJECT IDENTIFIER ::= { traceRouteMIB 2 } + + -- The registration node (point) for traceroute implementation types + + traceRouteImplementationTypeDomains OBJECT IDENTIFIER + ::= { traceRouteMIB 3 } + + + traceRouteUsingUdpProbes OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Indicates that an implementation is using UDP probes to + perform the traceroute operation." + ::= { traceRouteImplementationTypeDomains 1 } + + + -- Simple Object Definitions + + traceRouteMaxConcurrentRequests OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "requests" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of concurrent active traceroute requests + that are allowed within an agent implementation. A value + of 0 for this object implies that there is no limit for + the number of concurrent active requests in effect. + + The limit applies only to new requests being activated. + When a new value is set, the agent will continue processing + all the requests already active, even if their number + exceeds the limit just imposed." + DEFVAL { 10 } + ::= { traceRouteObjects 1 } + + + -- Traceroute Control Table + + traceRouteCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF TraceRouteCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Remote Operations Traceroute Control Table for + providing the capability of invoking traceroute from a remote + host. The results of traceroute operations can be stored in + the traceRouteResultsTable, traceRouteProbeHistoryTable, and + the traceRouteHopsTable." + ::= { traceRouteObjects 2 } + + traceRouteCtlEntry OBJECT-TYPE + SYNTAX TraceRouteCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "Defines an entry in the traceRouteCtlTable. The first + index element, traceRouteCtlOwnerIndex, is of type + SnmpAdminString, a textual convention that allows for + use of the SNMPv3 View-Based Access Control Model + (RFC 3415, VACM) and that allows a management + application to identify its entries. The second index, + traceRouteCtlTestName (also an SnmpAdminString), + enables the same management application to have + multiple requests outstanding." + INDEX { + traceRouteCtlOwnerIndex, + traceRouteCtlTestName + } + ::= { traceRouteCtlTable 1 } + + TraceRouteCtlEntry ::= + SEQUENCE { + traceRouteCtlOwnerIndex SnmpAdminString, + traceRouteCtlTestName SnmpAdminString, + traceRouteCtlTargetAddressType InetAddressType, + traceRouteCtlTargetAddress InetAddress, + traceRouteCtlByPassRouteTable TruthValue, + traceRouteCtlDataSize Unsigned32, + traceRouteCtlTimeOut Unsigned32, + traceRouteCtlProbesPerHop Unsigned32, + traceRouteCtlPort Unsigned32, + traceRouteCtlMaxTtl Unsigned32, + traceRouteCtlDSField Unsigned32, + traceRouteCtlSourceAddressType InetAddressType, + traceRouteCtlSourceAddress InetAddress, + traceRouteCtlIfIndex InterfaceIndexOrZero, + traceRouteCtlMiscOptions SnmpAdminString, + traceRouteCtlMaxFailures Unsigned32, + traceRouteCtlDontFragment TruthValue, + traceRouteCtlInitialTtl Unsigned32, + traceRouteCtlFrequency Unsigned32, + traceRouteCtlStorageType StorageType, + traceRouteCtlAdminStatus INTEGER, + traceRouteCtlDescr SnmpAdminString, + traceRouteCtlMaxRows Unsigned32, + traceRouteCtlTrapGeneration BITS, + traceRouteCtlCreateHopsEntries TruthValue, + traceRouteCtlType OBJECT IDENTIFIER, + traceRouteCtlRowStatus RowStatus + } + + traceRouteCtlOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 3415, VACM) for tables in which + multiple users may need to create or + modify entries independently, the initial index is used as + an 'owner index'. Such an initial index has a syntax of + SnmpAdminString and can thus be trivially mapped to a + securityName or groupName defined in VACM, in + accordance with a security policy. + + When used in conjunction with such a security policy, + all entries in the table belonging to a particular user + (or group) will have the same value for this initial + index. For a given user's entries in a particular + table, the object identifiers for the information in + these entries will have the same subidentifiers (except + for the 'column' subidentifier) up to the end of the + encoded owner index. To configure VACM to permit access + to this portion of the table, one would create + vacmViewTreeFamilyTable entries with the value of + vacmViewTreeFamilySubtree including the owner index + portion, and vacmViewTreeFamilyMask 'wildcarding' the + column subidentifier. More elaborate configurations + are possible." + ::= { traceRouteCtlEntry 1 } + + traceRouteCtlTestName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a traceroute test. This is locally unique, + within the scope of a traceRouteCtlOwnerIndex." + ::= { traceRouteCtlEntry 2 } + + traceRouteCtlTargetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the type of host address to be used on the + traceroute request at the remote host." + DEFVAL { unknown } + ::= { traceRouteCtlEntry 3 } + + + + traceRouteCtlTargetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the host address used on the + traceroute request at the remote host. The + host address type can be determined by + examining the value of the corresponding + traceRouteCtlTargetAddressType. + + A value for this object MUST be set prior to + transitioning its corresponding traceRouteCtlEntry to + active(1) via traceRouteCtlRowStatus." + ::= { traceRouteCtlEntry 4 } + + traceRouteCtlByPassRouteTable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The purpose of this object is to enable optional + bypassing the route table. If enabled, the remote + host will bypass the normal routing tables and send + directly to a host on an attached network. If the + host is not on a directly attached network, an + error is returned. This option can be used to perform + the traceroute operation to a local host through an + interface that has no route defined (e.g., after the + interface was dropped by the routing daemon at the host)." + DEFVAL { false } + ::= { traceRouteCtlEntry 5 } + + traceRouteCtlDataSize OBJECT-TYPE + SYNTAX Unsigned32 (0..65507) + UNITS "octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the size of the data portion of a traceroute + request, in octets. If the RECOMMENDED traceroute method + (UDP datagrams as probes) is used, then the value + contained in this object MUST be applied. If another + traceroute method is used for which the specified size + is not appropriate, then the implementation SHOULD use + whatever size (appropriate to the method) is closest to + the specified size. + + + + + The maximum value for this object was computed by + subtracting the smallest possible IP header size of + 20 octets (IPv4 header with no options) and the UDP + header size of 8 octets from the maximum IP packet size. + An IP packet has a maximum size of 65535 octets + (excluding IPv6 Jumbograms)." + DEFVAL { 0 } + ::= { traceRouteCtlEntry 6 } + + traceRouteCtlTimeOut OBJECT-TYPE + SYNTAX Unsigned32 (1..60) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the time-out value, in seconds, for + a traceroute request." + DEFVAL { 3 } + ::= { traceRouteCtlEntry 7 } + + traceRouteCtlProbesPerHop OBJECT-TYPE + SYNTAX Unsigned32 (1..10) + UNITS "probes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the number of times to reissue a traceroute + request with the same time-to-live (TTL) value." + DEFVAL { 3 } + ::= { traceRouteCtlEntry 8 } + + traceRouteCtlPort OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "UDP Port" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the (initial) UDP port to send the traceroute + request to. A port needs to be specified that is not in + use at the destination (target) host. The default + value for this object is the IANA assigned port, + 33434, for the traceroute function." + DEFVAL { 33434 } + ::= { traceRouteCtlEntry 9 } + + traceRouteCtlMaxTtl OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + UNITS "time-to-live value" + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum time-to-live value." + DEFVAL { 30 } + ::= { traceRouteCtlEntry 10 } + + traceRouteCtlDSField OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "Specifies the value to store in the Type of Service + (TOS) octet in the IPv4 header or in the Traffic + Class octet in the IPv6 header, respectively, of the + IP packet used to encapsulate the traceroute probe. + + The octet to be set in the IP header contains the + Differentiated Services (DS) Field in the six most + significant bits. + + This option can be used to determine what effect an + explicit DS Field setting has on a traceroute response. + Not all values are legal or meaningful. A value of 0 + means that the function represented by this option is + not supported. DS Field usage is often not supported + by IP implementations, and not all values are supported. + Refer to RFC 2474 and RFC 3260 for guidance on usage of + this field." + REFERENCE + "Refer to RFC 1812 for the definition of the IPv4 TOS + octet and to RFC 2460 for the definition of the IPv6 + Traffic Class octet. Refer to RFC 2474 and RFC 3260 + for the definition of the Differentiated Services Field." + DEFVAL { 0 } + ::= { traceRouteCtlEntry 11 } + + traceRouteCtlSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the type of the source address, + traceRouteCtlSourceAddress, to be used at a remote host + when a traceroute operation is performed." + DEFVAL { unknown } + ::= { traceRouteCtlEntry 12 } + + + traceRouteCtlSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Use the specified IP address (which must be given as an + IP number, not a hostname) as the source address in + outgoing probe packets. On hosts with more than one IP + address, this option can be used to select the address + to be used. If the IP address is not one of this + machine's interface addresses, an error is returned, and + nothing is sent. A zero-length octet string value for + this object disables source address specification. + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of traceRouteCtlSourceAddressType." + DEFVAL { ''H } + ::= { traceRouteCtlEntry 13 } + + traceRouteCtlIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Setting this object to an interface's ifIndex prior + to starting a remote traceroute operation directs + the traceroute probes to be transmitted over the + specified interface. A value of zero for this object + implies that this option is not enabled." + DEFVAL { 0 } + ::= { traceRouteCtlEntry 14 } + + traceRouteCtlMiscOptions OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Enables an application to specify implementation-dependent + options." + DEFVAL { ''H } + ::= { traceRouteCtlEntry 15 } + + traceRouteCtlMaxFailures OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "timeouts" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The value of this object indicates the maximum number + of consecutive timeouts allowed before a remote traceroute + request is terminated. A value of either 255 (maximum + hop count/possible TTL value) or 0 indicates that the + function of terminating a remote traceroute request when a + specific number of consecutive timeouts are detected is + disabled." + DEFVAL { 5 } + ::= { traceRouteCtlEntry 16 } + + traceRouteCtlDontFragment OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables setting of the don't fragment flag (DF) + in the IP header for a probe. Use of this object enables + a manual PATH MTU test is performed." + DEFVAL { false } + ::= { traceRouteCtlEntry 17 } + + traceRouteCtlInitialTtl OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object specifies the initial TTL value to + use. This enables bypassing the initial (often well known) + portion of a path." + DEFVAL { 1 } + ::= { traceRouteCtlEntry 18 } + + traceRouteCtlFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds to wait before repeating a + traceroute test, as defined by the value of the + various objects in the corresponding row. + + After a single test is completed the number of seconds + as defined by the value of traceRouteCtlFrequency MUST + elapse before the next traceroute test is started. + + A value of 0 for this object implies that the test + as defined by the corresponding entry will not be + + + repeated." + DEFVAL { 0 } + ::= { traceRouteCtlEntry 19 } + + traceRouteCtlStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { traceRouteCtlEntry 20 } + + traceRouteCtlAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + + enabled(1), -- operation should be started + disabled(2) -- operation should be stopped + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Reflects the desired state that an traceRouteCtlEntry + should be in: + + enabled(1) - Attempt to activate the test as defined by + this traceRouteCtlEntry. + disabled(2) - Deactivate the test as defined by this + traceRouteCtlEntry. + + Refer to the corresponding traceRouteResultsOperStatus to + determine the operational state of the test defined by + this entry." + DEFVAL { disabled } + ::= { traceRouteCtlEntry 21 } + + traceRouteCtlDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The purpose of this object is to provide a + descriptive name of the remote traceroute + test." + DEFVAL { ''H } + ::= { traceRouteCtlEntry 22 } + + + traceRouteCtlMaxRows OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "rows" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of corresponding entries allowed + in the traceRouteProbeHistoryTable. An implementation + of this MIB will remove the oldest corresponding entry + in the traceRouteProbeHistoryTable to allow the + addition of an new entry once the number of + corresponding rows in the traceRouteProbeHistoryTable + reaches this value. + + Old entries are not removed when a new test is + started. Entries are added to the + traceRouteProbeHistoryTable until traceRouteCtlMaxRows + is reached before entries begin to be removed. + A value of 0 for this object disables creation of + traceRouteProbeHistoryTable entries." + DEFVAL { 50 } + ::= { traceRouteCtlEntry 23 } + + traceRouteCtlTrapGeneration OBJECT-TYPE + SYNTAX BITS { + pathChange(0), + testFailure(1), + testCompletion(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object determines when and whether to + generate a notification for this entry: + + pathChange(0) - Generate a traceRoutePathChange + notification when the current path varies from a + previously determined path. + testFailure(1) - Generate a traceRouteTestFailed + notification when the full path to a target + can't be determined. + testCompletion(2) - Generate a traceRouteTestCompleted + notification when the path to a target has been + determined. + + The value of this object defaults to an empty set, + indicating that none of the above options has been + selected." + + + DEFVAL { { } } + ::= { traceRouteCtlEntry 24 } + + traceRouteCtlCreateHopsEntries OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The current path for a traceroute test is kept in the + traceRouteHopsTable on a per-hop basis when the value of + this object is true(1)." + DEFVAL { false } + ::= { traceRouteCtlEntry 25 } + + traceRouteCtlType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used either to report or to + select the implementation method to be used for + performing a traceroute operation. The value of this + object may be selected from + traceRouteImplementationTypeDomains. + + Additional implementation types should be allocated as + required by implementers of the DISMAN-TRACEROUTE-MIB + under their enterprise specific registration point, + not beneath traceRouteImplementationTypeDomains." + DEFVAL { traceRouteUsingUdpProbes } + ::= { traceRouteCtlEntry 26 } + + traceRouteCtlRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the traceRouteCtlTable. Deletion of an entry in + this table results in a deletion of all corresponding (same + traceRouteCtlOwnerIndex and traceRouteCtlTestName + index values) traceRouteResultsTable, + traceRouteProbeHistoryTable, and traceRouteHopsTable + entries. + + A value MUST be specified for traceRouteCtlTargetAddress + prior to acceptance of a transition to active(1) state. + + + + + When a value for pingCtlTargetAddress is set, + the value of object pingCtlRowStatus changes + from notReady(3) to notInService(2). + + Activation of a remote traceroute operation is + controlled via traceRouteCtlAdminStatus, and not + by transitioning of this object's value to active(1). + + Transitions in and out of active(1) state are not + allowed while an entry's traceRouteResultsOperStatus + is active(1), with the exception that deletion of + an entry in this table by setting its RowStatus + object to destroy(6) will stop an active + traceroute operation. + + The operational state of an traceroute operation + can be determined by examination of the corresponding + traceRouteResultsOperStatus object." + REFERENCE + "See definition of RowStatus in RFC 2579, 'Textual + Conventions for SMIv2.'" + ::= { traceRouteCtlEntry 27 } + + + -- Traceroute Results Table + + traceRouteResultsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TraceRouteResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Remote Operations Traceroute Results Table for + keeping track of the status of a traceRouteCtlEntry. + + An entry is added to the traceRouteResultsTable when an + traceRouteCtlEntry is started by successful transition + of its traceRouteCtlAdminStatus object to enabled(1). + + If the object traceRouteCtlAdminStatus already has the value + enabled(1), and if the corresponding + traceRouteResultsOperStatus object has the value + completed(3), then successfully writing enabled(1) to the + object traceRouteCtlAdminStatus re-initializes the already + existing entry in the traceRouteResultsTable. The values of + objects in the re-initialized entry are the same as + the values of objects in a new entry would be. + + An entry is removed from the traceRouteResultsTable when + + + + its corresponding traceRouteCtlEntry is deleted." + ::= { traceRouteObjects 3 } + + traceRouteResultsEntry OBJECT-TYPE + SYNTAX TraceRouteResultsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the traceRouteResultsTable. The + traceRouteResultsTable has the same indexing as the + traceRouteCtlTable so that a traceRouteResultsEntry + corresponds to the traceRouteCtlEntry that caused it to + be created." + INDEX { + traceRouteCtlOwnerIndex, + traceRouteCtlTestName + } + ::= { traceRouteResultsTable 1 } + + TraceRouteResultsEntry ::= + SEQUENCE { + traceRouteResultsOperStatus INTEGER, + traceRouteResultsCurHopCount Gauge32, + traceRouteResultsCurProbeCount Gauge32, + traceRouteResultsIpTgtAddrType InetAddressType, + traceRouteResultsIpTgtAddr InetAddress, + traceRouteResultsTestAttempts Gauge32, + traceRouteResultsTestSuccesses Gauge32, + traceRouteResultsLastGoodPath DateAndTime + } + + traceRouteResultsOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), -- test is in progress + disabled(2), -- test has stopped + completed(3) -- test is completed + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the operational state of an traceRouteCtlEntry: + + enabled(1) - Test is active. + disabled(2) - Test has stopped. + completed(3) - Test is completed." + ::= { traceRouteResultsEntry 1 } + + traceRouteResultsCurHopCount OBJECT-TYPE + + + SYNTAX Gauge32 + UNITS "hops" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the current TTL value (from 1 to + 255) for a remote traceroute operation. + Maximum TTL value is determined by + traceRouteCtlMaxTtl." + ::= { traceRouteResultsEntry 2 } + + traceRouteResultsCurProbeCount OBJECT-TYPE + SYNTAX Gauge32 + UNITS "probes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the current probe count (1..10) for + a remote traceroute operation. The maximum + probe count is determined by + traceRouteCtlProbesPerHop." + ::= { traceRouteResultsEntry 3 } + + traceRouteResultsIpTgtAddrType OBJECT-TYPE + SYNTAX InetAddressType + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of address stored + in the corresponding traceRouteResultsIpTgtAddr + object." + ::= { traceRouteResultsEntry 4 } + + traceRouteResultsIpTgtAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reports the IP address associated + with a traceRouteCtlTargetAddress value when the + destination address is specified as a DNS name. + The value of this object should be a zero-length + octet string when a DNS name is not specified or + when a specified DNS name fails to resolve." + ::= { traceRouteResultsEntry 5 } + + traceRouteResultsTestAttempts OBJECT-TYPE + + + SYNTAX Gauge32 + UNITS "tests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of attempts to determine a path + to a target. The value of this object MUST be started + at 0." + ::= { traceRouteResultsEntry 6 } + + traceRouteResultsTestSuccesses OBJECT-TYPE + SYNTAX Gauge32 + UNITS "tests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of attempts to determine a path + to a target that have succeeded. The value of this + object MUST be reported as 0 when no attempts have + succeeded." + ::= { traceRouteResultsEntry 7 } + + traceRouteResultsLastGoodPath OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the last complete path + was determined. A path is complete if responses + were received or timeout occurred for each hop on + the path; i.e., for each TTL value from the value + of the corresponding traceRouteCtlInitialTtl object + up to the end of the path or (if no reply from the + target IP address was received) up to the value of + the corresponding traceRouteCtlMaxTtl object." + ::= { traceRouteResultsEntry 8 } + + -- Trace Route Probe History Table + + traceRouteProbeHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF TraceRouteProbeHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Remote Operations Traceroute Results Table + for storing the results of a traceroute operation. + + An implementation of this MIB will remove the oldest + + + entry in the traceRouteProbeHistoryTable of the + corresponding entry in the traceRouteCtlTable to allow + the addition of a new entry once the number of rows in + the traceRouteProbeHistoryTable reaches the value specified + by traceRouteCtlMaxRows for the corresponding entry in the + traceRouteCtlTable." + ::= { traceRouteObjects 4 } + + traceRouteProbeHistoryEntry OBJECT-TYPE + SYNTAX TraceRouteProbeHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a table for storing the results of a traceroute + operation. Entries in this table are limited by + the value of the corresponding traceRouteCtlMaxRows + object. + + The first two index elements identify the + traceRouteCtlEntry that a traceRouteProbeHistoryEntry + belongs to. The third index element selects a single + traceroute operation result. The fourth and fifth indexes + select the hop and the probe for a particular + traceroute operation." + INDEX { + traceRouteCtlOwnerIndex, + traceRouteCtlTestName, + traceRouteProbeHistoryIndex, + traceRouteProbeHistoryHopIndex, + traceRouteProbeHistoryProbeIndex + + } + ::= { traceRouteProbeHistoryTable 1 } + + TraceRouteProbeHistoryEntry ::= + SEQUENCE { + traceRouteProbeHistoryIndex Unsigned32, + traceRouteProbeHistoryHopIndex Unsigned32, + traceRouteProbeHistoryProbeIndex Unsigned32, + traceRouteProbeHistoryHAddrType InetAddressType, + traceRouteProbeHistoryHAddr InetAddress, + traceRouteProbeHistoryResponse Unsigned32, + traceRouteProbeHistoryStatus OperationResponseStatus, + traceRouteProbeHistoryLastRC Integer32, + traceRouteProbeHistoryTime DateAndTime + } + + traceRouteProbeHistoryIndex OBJECT-TYPE + + + + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created when the result of + a traceroute probe is determined. The initial 2 instance + identifier index values identify the traceRouteCtlEntry + that a probe result (traceRouteProbeHistoryEntry) belongs + to. An entry is removed from this table when + its corresponding traceRouteCtlEntry is deleted. + + An implementation MUST start assigning + traceRouteProbeHistoryIndex values at 1 and wrap after + exceeding the maximum possible value, as defined by the + limit of this object ('ffffffff'h)." + ::= { traceRouteProbeHistoryEntry 1 } + + traceRouteProbeHistoryHopIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates which hop in a traceroute path the probe's + results are for. The value of this object is initially + determined by the value of traceRouteCtlInitialTtl." + ::= { traceRouteProbeHistoryEntry 2 } + + traceRouteProbeHistoryProbeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..10) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the index of a probe for a particular + hop in a traceroute path. The number of probes per + hop is determined by the value of the corresponding + traceRouteCtlProbesPerHop object." + ::= { traceRouteProbeHistoryEntry 3 } + + traceRouteProbeHistoryHAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This objects indicates the type of address stored + in the corresponding traceRouteProbeHistoryHAddr + object." + ::= { traceRouteProbeHistoryEntry 4 } + + + + + traceRouteProbeHistoryHAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of a hop in a traceroute path. This object + is not allowed to be a DNS name. The value of the + corresponding object, traceRouteProbeHistoryHAddrType, + indicates this object's IP address type." + ::= { traceRouteProbeHistoryEntry 5 } + + traceRouteProbeHistoryResponse OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time measured in milliseconds from when + a probe was sent to when its response was received or + when it timed out. The value of this object is reported + as 0 when it is not possible to transmit a probe." + ::= { traceRouteProbeHistoryEntry 6 } + + traceRouteProbeHistoryStatus OBJECT-TYPE + SYNTAX OperationResponseStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The result of a traceroute operation made by a remote + host for a particular probe." + ::= { traceRouteProbeHistoryEntry 7 } + + traceRouteProbeHistoryLastRC OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The last implementation-method-specific reply code received. + + Traceroute is usually implemented by transmitting a series of + probe packets with increasing time-to-live values. A probe + packet is a UDP datagram encapsulated into an IP packet. + Each hop in a path to the target (destination) host rejects + the probe packets (probe's TTL too small, ICMP reply) until + either the maximum TTL is exceeded or the target host is + received." + ::= { traceRouteProbeHistoryEntry 8 } + + + + traceRouteProbeHistoryTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Timestamp for when this probe's results were determined." + ::= { traceRouteProbeHistoryEntry 9 } + + -- Traceroute Hop Results Table + + traceRouteHopsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TraceRouteHopsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the Remote Operations Traceroute Hop Table for + keeping track of the results of traceroute tests on a + per-hop basis." + ::= { traceRouteObjects 5 } + + traceRouteHopsEntry OBJECT-TYPE + SYNTAX TraceRouteHopsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the traceRouteHopsTable. + The first two index elements identify the + traceRouteCtlEntry that a traceRouteHopsEntry + belongs to. The third index element, + traceRouteHopsHopIndex, selects a + hop in a traceroute path." + INDEX { + traceRouteCtlOwnerIndex, + traceRouteCtlTestName, + traceRouteHopsHopIndex + } + + ::= { traceRouteHopsTable 1 } + + TraceRouteHopsEntry ::= + SEQUENCE { + traceRouteHopsHopIndex Unsigned32, + traceRouteHopsIpTgtAddressType InetAddressType, + traceRouteHopsIpTgtAddress InetAddress, + traceRouteHopsMinRtt Unsigned32, + traceRouteHopsMaxRtt Unsigned32, + traceRouteHopsAverageRtt Unsigned32, + traceRouteHopsRttSumOfSquares Unsigned32, + + + + traceRouteHopsSentProbes Unsigned32, + traceRouteHopsProbeResponses Unsigned32, + traceRouteHopsLastGoodProbe DateAndTime + } + + traceRouteHopsHopIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the hop index for a traceroute hop. Values + for this object with respect to the same + traceRouteCtlOwnerIndex and traceRouteCtlTestName + MUST start at 1 and be given increasing values for + subsequent hops. The value of traceRouteHopsHopIndex is not + necessarily the number of the hop on the traced path. + + The traceRouteHopsTable keeps the current traceroute + path per traceRouteCtlEntry if enabled by + setting the corresponding traceRouteCtlCreateHopsEntries + to true(1). + + All hops (traceRouteHopsTable entries) in a traceroute + path MUST be updated at the same time when a traceroute + operation is completed. Care needs to be applied when a path + either changes or can't be determined. The initial portion + of the path, up to the first hop change, MUST retain the + same traceRouteHopsHopIndex values. The remaining portion + of the path SHOULD be assigned new traceRouteHopsHopIndex + values." + ::= { traceRouteHopsEntry 1 } + + traceRouteHopsIpTgtAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of address stored + in the corresponding traceRouteHopsIpTgtAddress + object." + ::= { traceRouteHopsEntry 2 } + + traceRouteHopsIpTgtAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reports the IP address associated with + + + + the hop. A value for this object should be reported + as a numeric IP address, not as a DNS name. + + The address type (InetAddressType) that relates to + this object is specified by the corresponding value + of pingCtlSourceAddressType." + ::= { traceRouteHopsEntry 3 } + + traceRouteHopsMinRtt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum traceroute round-trip-time (RTT) received for + this hop. A value of 0 for this object implies that no + RTT has been received." + ::= { traceRouteHopsEntry 4 } + + traceRouteHopsMaxRtt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum traceroute round-trip-time (RTT) received for + this hop. A value of 0 for this object implies that no + RTT has been received." + ::= { traceRouteHopsEntry 5 } + + traceRouteHopsAverageRtt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current average traceroute round-trip-time (RTT) for + this hop." + ::= { traceRouteHopsEntry 6 } + + traceRouteHopsRttSumOfSquares OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the sum of the squares of all + round-trip-times received for this hop. Its purpose is + to enable standard deviation calculation." + ::= { traceRouteHopsEntry 7 } + + traceRouteHopsSentProbes OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object reflects the number of probes sent + for this hop during this traceroute test. The value of this + object should start at 0." + ::= { traceRouteHopsEntry 8 } + + traceRouteHopsProbeResponses OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received for this hop during this + traceroute test. This value of this object should start + at 0." + ::= { traceRouteHopsEntry 9 } + + traceRouteHopsLastGoodProbe OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Date and time at which the last response was received for a + probe for this hop during this traceroute test." + ::= { traceRouteHopsEntry 10 } + + -- Notification Definition section + + traceRoutePathChange NOTIFICATION-TYPE + OBJECTS { + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr + } + STATUS current + DESCRIPTION + "The path to a target has changed." + ::= { traceRouteNotifications 1 } + + traceRouteTestFailed NOTIFICATION-TYPE + OBJECTS { + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr + + + + } + STATUS current + DESCRIPTION + "Could not determine the path to a target." + ::= { traceRouteNotifications 2 } + + traceRouteTestCompleted NOTIFICATION-TYPE + OBJECTS { + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr + } + STATUS current + DESCRIPTION + "The path to a target has just been determined." + ::= { traceRouteNotifications 3 } + + -- Conformance information + -- Compliance statements + + traceRouteCompliances OBJECT IDENTIFIER + ::= { traceRouteConformance 1 } + traceRouteGroups OBJECT IDENTIFIER + ::= { traceRouteConformance 2 } + + -- Compliance statements + + traceRouteFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that + fully implement the DISMAN-TRACEROUTE-MIB." + MODULE -- this module + MANDATORY-GROUPS { + traceRouteMinimumGroup, + traceRouteCtlRowStatusGroup, + traceRouteHistoryGroup + } + + GROUP traceRouteHopsTableGroup + DESCRIPTION + "This group lists the objects that make up a + traceRouteHopsEntry. Support of the traceRouteHopsTable + is optional." + + GROUP traceRouteNotificationsGroup + DESCRIPTION + + + + "This group defines a collection of optional + notifications." + + OBJECT traceRouteMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support SET + operations to this object." + + OBJECT traceRouteCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of its + implementation. The function represented by this + object is implementable if the setsockopt + SOL_SOCKET SO_DONTROUTE option is supported." + + OBJECT traceRouteCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + + + + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlMiscOptions + MIN-ACCESS read-only + DESCRIPTION + "Support of this object is optional. If not + supporting, do not allow write access and return a + zero-length octet string as the value of the object." + + OBJECT traceRouteCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. It is also allowed + that implementations support only the volatile(2) + StorageType enumeration." + + OBJECT traceRouteCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that is RECOMMENDED to be supported by an + implementation is traceRouteUsingUdpProbes." + + OBJECT traceRouteResultsIpTgtAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsIpTgtAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsLastGoodPath + DESCRIPTION + "If the traceRouteHopsTableGroup is implemented, then + this object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT traceRouteProbeHistoryHAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + + + + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryHAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryTime + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT traceRouteHopsIpTgtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsIpTgtAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsLastGoodProbe + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + ::= { traceRouteCompliances 2 } + + traceRouteMinimumCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The minimum compliance statement for SNMP entities + which implement the minimal subset of the + DISMAN-TRACEROUTE-MIB. Implementors might choose this + subset for small devices with limited resources." + MODULE -- this module + + + + MANDATORY-GROUPS { traceRouteMinimumGroup } + + GROUP traceRouteCtlRowStatusGroup + DESCRIPTION + "A compliant implementation does not have to implement + the traceRouteCtlRowStatusGroup." + + GROUP traceRouteHistoryGroup + DESCRIPTION + "A compliant implementation does not have to implement + the traceRouteHistoryGroup." + + GROUP traceRouteHopsTableGroup + DESCRIPTION + "This group lists the objects that make up a + traceRouteHopsEntry. Support of the traceRouteHopsTable + is optional." + + GROUP traceRouteNotificationsGroup + DESCRIPTION + "This group defines a collection of optional + notifications." + + OBJECT traceRouteMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support SET + operations to this object." + + OBJECT traceRouteCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a false(2) as the value of this + object. A value of false(2) means that the function + represented by this option is not supported." + + OBJECT traceRouteCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + + DESCRIPTION + "Write access to this object is not required by + implementations that are not capable of binding the + send socket with a source address. An implementation + is only required to support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlMiscOptions + MIN-ACCESS read-only + DESCRIPTION + "Support of this object is optional. If not + supporting, do not allow write access, and return a + zero-length octet string as the value of the object." + + OBJECT traceRouteCtlDontFragment + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a false(2) as the value of this + object. A value of false(2) means that the function + represented by this option is not supported." + + OBJECT traceRouteCtlInitialTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If write access is + not supported, return a 1 as the value of this object." + + OBJECT traceRouteCtlFrequency + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required. If write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. It is also allowed + that implementations support only the volatile(2) + StorageType enumeration." + + OBJECT traceRouteCtlDescr + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support set + operations to this object." + + OBJECT traceRouteCtlMaxRows + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + traceRouteHistoryGroup is not implemented, then write + access to this object MUST be disabled, and the object + MUST return a value of 0 when retrieved." + + OBJECT traceRouteCtlTrapGeneration + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + traceRouteNotificationsGroup is not implemented, then + write access to this object MUST be disabled, and the + object MUST return a value with no bit set when + retrieved. No bit set indicates that no notification + is generated." + + OBJECT traceRouteCtlCreateHopsEntries + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If the + traceRouteHopsTableGroup is not implemented, then + write access to this object MUST be disabled, and the + object MUST return a value of false(2) when retrieved." + + OBJECT traceRouteCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + + + + value that is RECOMMENDED to be supported by an + implementation is traceRouteUsingUdpProbes." + + OBJECT traceRouteResultsIpTgtAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsIpTgtAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsLastGoodPath + DESCRIPTION + "This object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT traceRouteProbeHistoryHAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryHAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryTime + DESCRIPTION + "If the traceRouteHistoryGroup is implemented, then + this object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + OBJECT traceRouteHopsIpTgtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + + + + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsIpTgtAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsLastGoodProbe + DESCRIPTION + "If the traceRouteHopsTableGroup is implemented, then + this object is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects. It is RECOMMENDED + that when this object is not supported its values + be reported as '0000000000000000'H." + + ::= { traceRouteCompliances 3 } + + traceRouteCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for the DISMAN-TRACEROUTE-MIB. + This compliance statement has been deprecated because + the traceRouteGroup and the traceRouteTimeStampGroup + have been split and deprecated. The + traceRouteFullCompliance is semantically identical to the + deprecated traceRouteCompliance statement." + MODULE -- this module + MANDATORY-GROUPS { + traceRouteGroup + } + GROUP traceRouteTimeStampGroup + DESCRIPTION + "This group is mandatory for implementations that have + access to a system clock and that are capable of setting + the values for DateAndTime objects." + + GROUP traceRouteNotificationsGroup + DESCRIPTION + "This group defines a collection of optional + notifications." + + GROUP traceRouteHopsTableGroup + DESCRIPTION + "This group lists the objects that make up a + traceRouteHopsEntry. Support of the traceRouteHopsTable + is optional." + + + + OBJECT traceRouteMaxConcurrentRequests + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support SET + operations to this object." + + OBJECT traceRouteCtlByPassRouteTable + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of its implementation. The function + represented by this object is implementable if the + setsockopt SOL_SOCKET SO_DONTROUTE option is + supported." + + OBJECT traceRouteCtlSourceAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + + DESCRIPTION + "This object is not required by implementations that + are not capable of binding the send socket with a + source address. An implementation is only required to + support IPv4 and IPv6 addresses." + + OBJECT traceRouteCtlSourceAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "This object is not required by implementations that + are not capable of binding the send socket with a + source address. An implementation is only required to + support IPv4 and globally unique IPv6 addresses." + + OBJECT traceRouteCtlIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlMiscOptions + MIN-ACCESS read-only + DESCRIPTION + "Support of this object is optional. When not + supporting, do not allow write access, and return a + zero-length octet string as the value of the object." + + + + OBJECT traceRouteCtlStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. It is also allowed + that implementations support only the volatile + StorageType enumeration." + + OBJECT traceRouteCtlDSField + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return a 0 as the value of this object. + A value of 0 implies that the function represented by + this option is not supported." + + OBJECT traceRouteCtlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. In addition, the only + value that is RECOMMENDED to be supported by an + implementation is traceRouteUsingUdpProbes." + + OBJECT traceRouteResultsIpTgtAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteResultsIpTgtAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryHAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteProbeHistoryHAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsIpTgtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + + + + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + + OBJECT traceRouteHopsIpTgtAddress + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation should only support IPv4 and + globally unique IPv6 address values for this object." + ::= { traceRouteCompliances 1 } + + -- MIB groupings + + traceRouteMinimumGroup OBJECT-GROUP + OBJECTS { + traceRouteMaxConcurrentRequests, + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteCtlByPassRouteTable, + traceRouteCtlDataSize, + traceRouteCtlTimeOut, + traceRouteCtlProbesPerHop, + traceRouteCtlPort, + traceRouteCtlMaxTtl, + traceRouteCtlDSField, + traceRouteCtlSourceAddressType, + traceRouteCtlSourceAddress, + traceRouteCtlIfIndex, + traceRouteCtlMiscOptions, + traceRouteCtlMaxFailures, + traceRouteCtlDontFragment, + traceRouteCtlInitialTtl, + traceRouteCtlFrequency, + traceRouteCtlStorageType, + traceRouteCtlAdminStatus, + traceRouteCtlMaxRows, + traceRouteCtlTrapGeneration, + traceRouteCtlDescr, + traceRouteCtlCreateHopsEntries, + traceRouteCtlType, + traceRouteResultsOperStatus, + traceRouteResultsCurHopCount, + traceRouteResultsCurProbeCount, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr, + traceRouteResultsTestAttempts, + traceRouteResultsTestSuccesses, + traceRouteResultsLastGoodPath + + + + } + STATUS current + DESCRIPTION + "The group of objects that constitute the remote traceroute + operation." + ::= { traceRouteGroups 5 } + + traceRouteCtlRowStatusGroup OBJECT-GROUP + OBJECTS { + traceRouteCtlRowStatus + } + STATUS current + DESCRIPTION + "The RowStatus object of the traceRouteCtlTable." + ::= { traceRouteGroups 6 } + + traceRouteHistoryGroup OBJECT-GROUP + OBJECTS { + traceRouteProbeHistoryHAddrType, + traceRouteProbeHistoryHAddr, + traceRouteProbeHistoryResponse, + traceRouteProbeHistoryStatus, + traceRouteProbeHistoryLastRC, + traceRouteProbeHistoryTime + } + + STATUS current + DESCRIPTION + "The group of objects that constitute the history + capability." + ::= { traceRouteGroups 7 } + + traceRouteNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + traceRoutePathChange, + traceRouteTestFailed, + traceRouteTestCompleted + } + STATUS current + DESCRIPTION + "The notifications that are required to be supported by + implementations of this MIB." + ::= { traceRouteGroups 3 } + + traceRouteHopsTableGroup OBJECT-GROUP + OBJECTS { + traceRouteHopsIpTgtAddressType, + traceRouteHopsIpTgtAddress, + + + + traceRouteHopsMinRtt, + traceRouteHopsMaxRtt, + traceRouteHopsAverageRtt, + traceRouteHopsRttSumOfSquares, + traceRouteHopsSentProbes, + traceRouteHopsProbeResponses, + traceRouteHopsLastGoodProbe + } + STATUS current + DESCRIPTION + "The group of objects that constitute the + traceRouteHopsTable." + ::= { traceRouteGroups 4 } + + traceRouteGroup OBJECT-GROUP + OBJECTS { + traceRouteMaxConcurrentRequests, + traceRouteCtlTargetAddressType, + traceRouteCtlTargetAddress, + traceRouteCtlByPassRouteTable, + traceRouteCtlDataSize, + traceRouteCtlTimeOut, + traceRouteCtlProbesPerHop, + traceRouteCtlPort, + traceRouteCtlMaxTtl, + traceRouteCtlDSField, + traceRouteCtlSourceAddressType, + traceRouteCtlSourceAddress, + traceRouteCtlIfIndex, + traceRouteCtlMiscOptions, + traceRouteCtlMaxFailures, + traceRouteCtlDontFragment, + traceRouteCtlInitialTtl, + traceRouteCtlFrequency, + traceRouteCtlStorageType, + traceRouteCtlAdminStatus, + traceRouteCtlMaxRows, + traceRouteCtlTrapGeneration, + traceRouteCtlDescr, + traceRouteCtlCreateHopsEntries, + traceRouteCtlType, + traceRouteCtlRowStatus, + traceRouteResultsOperStatus, + traceRouteResultsCurHopCount, + traceRouteResultsCurProbeCount, + traceRouteResultsIpTgtAddrType, + traceRouteResultsIpTgtAddr, + traceRouteResultsTestAttempts, + + + + traceRouteResultsTestSuccesses, + traceRouteProbeHistoryHAddrType, + traceRouteProbeHistoryHAddr, + traceRouteProbeHistoryResponse, + traceRouteProbeHistoryStatus, + traceRouteProbeHistoryLastRC + } + STATUS deprecated + DESCRIPTION + "The group of objects that constitute the remote traceroute + operation." + ::= { traceRouteGroups 1 } + + traceRouteTimeStampGroup OBJECT-GROUP + OBJECTS { + traceRouteResultsLastGoodPath, + traceRouteProbeHistoryTime + } + STATUS deprecated + DESCRIPTION + "The group of DateAndTime objects." + ::= { traceRouteGroups 2 } + +END diff --git a/mibs/ietf/DLSW-MIB b/mibs/ietf/DLSW-MIB new file mode 100644 index 0000000..84a0dad --- /dev/null +++ b/mibs/ietf/DLSW-MIB @@ -0,0 +1,3571 @@ +DLSW-MIB DEFINITIONS ::= BEGIN + +IMPORTS + DisplayString, RowStatus, + RowPointer, TruthValue, + TEXTUAL-CONVENTION FROM SNMPv2-TC + Counter32, Gauge32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY, + NOTIFICATION-TYPE, mib-2 FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB + sdlcLSAddress FROM SNA-SDLC-MIB; + +dlsw MODULE-IDENTITY + LAST-UPDATED "9606040900Z" + ORGANIZATION "AIW DLSw MIB RIGLET and IETF DLSw MIB Working Group" + CONTACT-INFO + "David D. Chen + IBM Corporation + 800 Park, Highway 54 + Research Triangle Park, NC 27709-9990 + Tel: 1 919 254 6182 + E-mail: dchen@vnet.ibm.com" + DESCRIPTION + "This MIB module contains objects to manage Data Link + Switches." +::= { mib-2 46 } + +dlswMIB OBJECT IDENTIFIER ::= { dlsw 1 } +dlswDomains OBJECT IDENTIFIER ::= { dlsw 2 } + +-- ******************************************************************* +-- Textual convention definitions +-- ******************************************************************* + +NBName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a single qualified NetBIOS name, which can include + `don't care' and `wildcard' characters to represent a number + of real NetBIOS names. If an individual character position in + the qualified name contains a `?', the corresponding character + position in a real NetBIOS name is a `don't care'. If the + qualified name ends in `*', the remainder of a real NetBIOS + name is a `don't care'. `*' is only considered a wildcard if it + appears at the end of a name." + SYNTAX OCTET STRING (SIZE (0..16)) + +MacAddressNC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "Represents an 802 MAC address represented in + non-canonical format. That is, the most significant + bit will be transmitted first. If this information + is not available, the value is a zero length string." + SYNTAX OCTET STRING (SIZE (0 | 6)) + +TAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a transport service address. + For dlswTCPDomain, a TAddress is 4 octets long, + containing the IP-address in network-byte order." + SYNTAX OCTET STRING (SIZE (0..255)) + +EndStationLocation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Representing the location of an end station related + to the managed DLSw node." + SYNTAX INTEGER { + other (1), + internal (2), -- local virtual MAC address + remote (3), -- via DLSw partner + local (4) -- locally attached + } + +DlcType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Representing the type of DLC of an end station, if + applicable." + SYNTAX INTEGER { + other (1), -- not assigned yet + na (2), -- not applicable + llc (3), -- 802.2 Logical Link Control + sdlc (4), -- SDLC + qllc (5) -- QLLC + } + +LFSize ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The largest size of the INFO field (including DLC header, + not including any MAC-level or framing octets). + 64 valid values as defined by the IEEE 802.1D + Addendum are acceptable." + SYNTAX INTEGER { + lfs516(516), lfs635(635), lfs754(754), lfs873(873), + lfs993(993), lfs1112(1112), lfs1231(1231), + lfs1350(1350), lfs1470(1470), lfs1542(1542), + lfs1615(1615), lfs1688(1688), lfs1761(1761), + lfs1833(1833), lfs1906(1906), lfs1979(1979), + lfs2052(2052), lfs2345(2345), lfs2638(2638), + lfs2932(2932), lfs3225(3225), lfs3518(3518), + lfs3812(3812), lfs4105(4105), lfs4399(4399), + lfs4865(4865), lfs5331(5331), lfs5798(5798), + lfs6264(6264), lfs6730(6730), lfs7197(7197), + lfs7663(7663), lfs8130(8130), lfs8539(8539), + lfs8949(8949), lfs9358(9358), lfs9768(9768), + lfs10178(10178), lfs10587(10587), lfs10997(10997), + lfs11407(11407), lfs12199(12199), lfs12992(12992), + lfs13785(13785), lfs14578(14578), lfs15370(15370), + lfs16163(16163), lfs16956(16956), lfs17749(17749), + lfs20730(20730), lfs23711(23711), lfs26693(26693), + lfs29674(29674), lfs32655(32655), lfs38618(38618), + lfs41600(41600), lfs44591(44591), lfs47583(47583), + lfs50575(50575), lfs53567(53567), lfs56559(56559), + lfs59551(59551), lfs65535(65535) + } + +null OBJECT IDENTIFIER ::= { 0 0 } + + +-- ******************************************************************* +-- DLSw Transport Domain definitions +-- ******************************************************************* + +-- DLSw over TCP +dlswTCPDomain OBJECT IDENTIFIER ::= { dlswDomains 1 } +-- for an IP address of length 4: +-- +-- octets contents encoding +-- 1-4 IP-address network-byte order +-- +DlswTCPAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d" + STATUS current + DESCRIPTION + "Represents the IP address of a DLSw which uses + TCP as a transport protocol." + SYNTAX OCTET STRING (SIZE (4)) + + +-- ******************************************************************* +-- DLSw MIB Definition +-- ******************************************************************* + +-- The DLSw MIB module contains an object part and a conformance part. +-- Object part is organized in the following groups: +-- (1) dlswNode - information about this DLSw +-- (2) dlswTConn - about adjacent DLSw partners +-- (3) dlswInterface - about which interfaces DLSw is active on +-- (4) dlswDirectory - about any directory of local/remote resources +-- (5) dlswCircuit - about established circuits. +-- (6) dlswSdlc - about SDLC data link switched devices + +dlswNode OBJECT IDENTIFIER ::= { dlswMIB 1 } +dlswTConn OBJECT IDENTIFIER ::= { dlswMIB 2 } +dlswInterface OBJECT IDENTIFIER ::= { dlswMIB 3 } +dlswDirectory OBJECT IDENTIFIER ::= { dlswMIB 4 } +dlswCircuit OBJECT IDENTIFIER ::= { dlswMIB 5 } +dlswSdlc OBJECT IDENTIFIER ::= { dlswMIB 6 } -- SDLC + +-- ******************************************************************* +-- THE NODE GROUP +-- ******************************************************************* + +-- ------------------------------------------------------------------ +-- DLSw Node Identity +-- ------------------------------------------------------------------ +dlswNodeVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the particular version of the DLSw + standard supported by this DLSw. The first octet is a + hexadecimal value representing the DLSw standard Version + number of this DLSw, and the second is a hexadecimal value + representing the DLSw standard Release number. This + information is reported in DLSw Capabilities Exchange." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswNode 1 } + +dlswNodeVendorID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the manufacturer's IEEE-assigned + organizationally Unique Identifier (OUI) of this DLSw. + This information is reported in DLSw Capabilities + Exchange." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswNode 2 } + +dlswNodeVersionString OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This string gives product-specific information about + this DLSw (e.g., product name, code release and fix level). + This flows in Capabilities Exchange messages." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswNode 3 } + +-- ------------------------------------------------------------------ +-- DLSw Code Capability +-- ------------------------------------------------------------------ +dlswNodeStdPacingSupport OBJECT-TYPE + SYNTAX INTEGER { + none (1), -- does not support DLSw + -- Standard pacing scheme + adaptiveRcvWindow (2), -- the receive window size + -- varies + fixedRcvWindow (3) -- the receive window size + -- remains constant + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Circuit pacing, as defined in the DLSw Standard, allows each + of the two DLSw nodes on a circuit to control the amount + of data the other is permitted to send to them. This object + reflects the level of support the DLSw node has for this + protocol. (1) means the node has no support for the standard + circuit pacing flows; it may use RFC 1434+ methods only, or + a proprietary flow control scheme. (2) means the node supports + the standard scheme and can vary the window sizes it grants as + a data receiver. (3) means the node supports the standard + scheme but never varies its receive window size." + ::= { dlswNode 4 } + +-- ------------------------------------------------------------------ +-- DLSw Node Operational Objects +-- ------------------------------------------------------------------ +dlswNodeStatus OBJECT-TYPE + SYNTAX INTEGER { + active (1), + inactive (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of the DLSw part of the system. Changing the + value from active to inactive causes DLSw to take + the following actions - (1) it disconnects all circuits + through all DLSw partners, (2) it disconnects all + transport connections to all DLSw partners, (3) it + disconnects all local DLC connections, and (4) it stops + processing all DLC connection set-up traffic. + Since these are destructive actions, the user should + query the circuit and transport connection tables in + advance to understand the effect this action will have. + Changing the value from inactive to active causes DLSw + to come up in its initial state, i.e., transport + connections established and ready to bring up circuits." + ::= { dlswNode 5 } + +dlswNodeUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since + the DLSw portion of the system was last re-initialized. + That is, if dlswState is in the active state, + the time the dlswState entered the active state. + It will remain zero if dlswState is in the + inactive state." + ::= { dlswNode 6 } + +dlswNodeVirtualSegmentLFSize OBJECT-TYPE + SYNTAX LFSize + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The largest frame size (including DLC header and info field + but not any MAC-level or framing octets) this DLSw can forward + on any path through itself. This object can represent any box- + level frame size forwarding restriction (e.g., from the use + of fixed-size buffers). Some DLSw implementations will have + no such restriction. + + This value will affect the LF size of circuits during circuit + creation. The LF size of an existing circuit can be found in + the RIF (Routing Information Field)." + DEFVAL { lfs65535 } + ::= { dlswNode 7 } + +-- ................................................................... +-- NETBIOS Resources +-- ................................................................... + +dlswNodeResourceNBExclusivity OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of true indicates that the NetBIOS Names + configured in dlswDirNBTable are the only ones accessible + via this DLSw. + + If a node supports sending run-time capabilities exchange + messages, changes to this object should cause that action. + It is up to the implementation exactly when to start the + run-time capabilities exchange." + ::= { dlswNode 8 } + +-- ................................................................... +-- MAC Address List +-- ................................................................... + +dlswNodeResourceMacExclusivity OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of true indicates that the MAC addresses + configured in the dlswDirMacTable are the only ones + accessible via this DLSw. + + If a node supports sending run-time capabilities exchange + messages, changes to this object should cause that action. + It is up to the implementation exactly when to start the + run-time capabilities exchange." + ::= { dlswNode 9 } + + +-- ******************************************************************* +-- TRANSPORT CONNECTION (aka: PARTNER DLSW) +-- ******************************************************************* + +-- ------------------------------------------------------------------ + +-- Transport Connection Statistics Objects +-- ------------------------------------------------------------------ +dlswTConnStat OBJECT IDENTIFIER ::= { dlswTConn 1 } + +dlswTConnStatActiveConnections OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transport connections that are not in + `disconnected' state." + ::= { dlswTConnStat 1 } + +dlswTConnStatCloseIdles OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times transport connections in this node + exited the connected state with zero active circuits on + the transport connection." + ::= { dlswTConnStat 2 } + +dlswTConnStatCloseBusys OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times transport connections in this node + exited the connected state with some non-zero number + of active circuits on the transport connection. Normally + this means the transport connection failed unexpectedly." + ::= { dlswTConnStat 3 } + +-- ------------------------------------------------------------------ +-- Transport Connection Configuration Table +-- ------------------------------------------------------------------ +dlswTConnConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswTConnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the transport connections + that will be initiated or accepted by this + DLSw. Structure of masks allows wildcard + definition for a collection of transport + connections by a conceptual row. For a + specific transport connection, there may + be multiple of conceptual rows match the + transport address. The `best' match will + the one to determine the characteristics + of the transport connection." + ::= { dlswTConn 2 } + +dlswTConnConfigEntry OBJECT-TYPE + SYNTAX DlswTConnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each conceptual row defines a collection of + transport connections." + INDEX { dlswTConnConfigIndex } + ::= { dlswTConnConfigTable 1 } + +DlswTConnConfigEntry ::= SEQUENCE { + dlswTConnConfigIndex INTEGER, + dlswTConnConfigTDomain OBJECT IDENTIFIER, + dlswTConnConfigLocalTAddr TAddress, + dlswTConnConfigRemoteTAddr TAddress, + dlswTConnConfigLastModifyTime TimeTicks, + dlswTConnConfigEntryType INTEGER, + dlswTConnConfigGroupDefinition RowPointer, + dlswTConnConfigSetupType INTEGER, + dlswTConnConfigSapList OCTET STRING, + dlswTConnConfigAdvertiseMacNB TruthValue, + dlswTConnConfigInitCirRecvWndw INTEGER, + dlswTConnConfigOpens Counter32, + dlswTConnConfigRowStatus RowStatus + } + +dlswTConnConfigIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to the conceptual row of the table. + Negative numbers are not allowed. There + are objects defined that point to conceptual + rows of this table with this index value. + Zero is used to denote that no corresponding + row exists. + + Index values are assigned by the agent, and + should not be reused but should continue to + increase in value." + ::= { dlswTConnConfigEntry 1 } + +dlswTConnConfigTDomain OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object identifier which indicates the transport + domain of this conceptual row." + ::= { dlswTConnConfigEntry 2 } + +dlswTConnConfigLocalTAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local transport address for this conceptual row + of the transport connection definition." + ::= { dlswTConnConfigEntry 3 } + +dlswTConnConfigRemoteTAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The remote transport address. Together with + dlswTConnConfigEntryType and dlswTConnConfigGroupDefinition, + the object instance of this conceptual row identifies a + collection of the transport connections that will be + either initiated by this DLSw or initiated by a partner + DLSw and accepted by this DLSw." + ::= { dlswTConnConfigEntry 4 } + +dlswTConnConfigLastModifyTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the value of + any object in this conceptual row except for + dlswTConnConfigOpens was last changed. This value + may be compared to dlswTConnOperConnectTime to + determine whether values in this row are completely + valid for a transport connection created using + this row definition." + ::= { dlswTConnConfigEntry 5 } + +dlswTConnConfigEntryType OBJECT-TYPE + SYNTAX INTEGER { + individual (1), + global (2), + group (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object instance signifies the type of entry in the + associated conceptual row. The value of `individual' + means that the entry applies to a specific partner DLSw + node as identified by dlswTConnConfigRemoteTAddr and + dlswTConnConfigTDomain. The value of `global' + means that the entry applies to all partner DLSw nodes + of the TDomain. The value of 'group' means that the entry + applies to a specific set of DLSw nodes in the TDomain. + Any group definitions are enterprise-specific and are pointed + to by dlswTConnConfigGroupDefinition. In the cases of + `global' and `group', the value in dlswTConnConfigRemoteTAddr + may not have any significance." + ::= { dlswTConnConfigEntry 6 } + +dlswTConnConfigGroupDefinition OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For conceptual rows of `individual' and `global' as + specified in dlswTConnConfigEntryType, the instance + of this object is `0.0'. For conceptual rows of + `group', the instance points to the specific + group definition." + ::= { dlswTConnConfigEntry 7 } + +dlswTConnConfigSetupType OBJECT-TYPE + + SYNTAX INTEGER { + other (1), + activePersistent (2), + activeOnDemand (3), + passive (4), + excluded (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value of the instance of a conceptual row + identifies the behavior of the collection of + transport connections that this conceptual row + defines. The value of activePersistent, activeOnDemand + and passive means this DLSw will accept any transport + connections, initiated by partner DLSw nodes, which + are defined by this conceptual row. The value of + activePersistent means this DLSw will also initiate + the transport connections of this conceptual row and + retry periodically if necessary. The value of + activeOnDemand means this DLSw will initiate a + transport connection of this conceptual row, if + there is a directory cache hits. The value of + other is implementation specific. The value of exclude + means that the specified node is not allowed to be + a partner to this DLSw node. To take a certain + conceptual row definition out of service, a value of + notInService for dlswTConnConfigRowStatus should be + used." + DEFVAL { passive } + ::= { dlswTConnConfigEntry 8 } + +dlswTConnConfigSapList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAP list indicates which SAPs are advertised to + the transport connection defined by this conceptual + row. Only SAPs with even numbers are represented, + in the form of the most significant bit of the first + octet representing the SAP 0, the next most significant + bit representing the SAP 2, to the least significant + bit of the last octet representing the SAP 254. Data + link switching is allowed for those SAPs which have + one in its corresponding bit, not allowed otherwise. + The whole SAP list has to be changed together. Changing + the SAP list affects only new circuit establishments + and has no effect on established circuits. + + This list can be used to restrict specific partners + from knowing about all the SAPs used by DLSw on all its + interfaces (these are represented in dlswIfSapList for + each interface). For instance, one may want to run NetBIOS + with some partners but not others. + + If a node supports sending run-time capabilities exchange + messages, changes to this object should cause that action. + When to start the run-time capabilities exchange is + implementation-specific. + The DEFVAL below indicates support for SAPs 0, 4, 8, and C." + DEFVAL { 'AA000000000000000000000000000000'H } + ::= { dlswTConnConfigEntry 9 } + +dlswTConnConfigAdvertiseMacNB OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of true indicates that any defined local MAC + addresses and NetBIOS names will be advertised to a + partner node via initial and (if supported) run-time + capabilities exchange messages. The DLSw node should send + the appropriate exclusivity control vector to accompany + each list it sends, or to represent that the node is + explicitly configured to have a null list. + + The value of false indicates that the DLSw node should not + send a MAC address list or NetBIOS name list, and should + also not send their corresponding exclusivity control + vectors." + DEFVAL { true } + ::= { dlswTConnConfigEntry 10 } + +dlswTConnConfigInitCirRecvWndw OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "SSP messages" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial circuit receive pacing window size, in the unit + of SSP messages, to be used for future transport connections + activated using this table row. The managed node sends this + value as its initial receive pacing window in its initial + capabilities exchange message. Changing this value does not + affect the initial circuit receive pacing window size of + currently active transport connections. If the standard window + pacing scheme is not supported, the value is zero. + + A larger receive window value may be appropriate for partners + that are reachable only via physical paths that have longer + network delays." + DEFVAL { 1 } + ::= { dlswTConnConfigEntry 11 } + +dlswTConnConfigOpens OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times transport connections entered + connected state according to the definition of + this conceptual row." + ::= { dlswTConnConfigEntry 12 } + +dlswTConnConfigRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by the manager to create + or delete the row entry in the dlswTConnConfigTable + following the RowStatus textual convention. The value + of notInService will be used to take a conceptual + row definition out of use." + ::= { dlswTConnConfigEntry 13 } + +-- ------------------------------------------------------------------ +-- Transport Connection Operation Table +-- ------------------------------------------------------------------ +-- (1) At most one transport connection can be connected between +-- this DLSw and one of its DLSw partners at a given time. +-- (2) Multiple transport types are supported. +-- (3) Since the entries may be reused, dlswTConnOperEntryTime +-- needs to be consulted for the possibility of counter reset. +-- ------------------------------------------------------------------ + +dlswTConnOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswTConnOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of transport connections. It is optional but + desirable for the agent to keep an entry for some + period of time after the transport connection is + disconnected. This allows the manager to capture + additional useful information about the connection, in + particular, statistical information and the cause of the + disconnection." + ::= { dlswTConn 3 } + +dlswTConnOperEntry OBJECT-TYPE + SYNTAX DlswTConnOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr } + ::= { dlswTConnOperTable 1 } + +DlswTConnOperEntry ::= SEQUENCE { + dlswTConnOperTDomain OBJECT IDENTIFIER, + dlswTConnOperLocalTAddr TAddress, + dlswTConnOperRemoteTAddr TAddress, + + dlswTConnOperEntryTime TimeTicks, + dlswTConnOperConnectTime TimeTicks, + dlswTConnOperState INTEGER, + dlswTConnOperConfigIndex INTEGER, + dlswTConnOperFlowCntlMode INTEGER, + + dlswTConnOperPartnerVersion OCTET STRING, + dlswTConnOperPartnerVendorID OCTET STRING, + dlswTConnOperPartnerVersionStr DisplayString, + dlswTConnOperPartnerInitPacingWndw INTEGER, + + dlswTConnOperPartnerSapList OCTET STRING, + dlswTConnOperPartnerNBExcl TruthValue, + dlswTConnOperPartnerMacExcl TruthValue, + dlswTConnOperPartnerNBInfo INTEGER, + dlswTConnOperPartnerMacInfo INTEGER, + + dlswTConnOperDiscTime TimeTicks, + dlswTConnOperDiscReason INTEGER, + dlswTConnOperDiscActiveCir INTEGER, + + dlswTConnOperInDataPkts Counter32, + dlswTConnOperOutDataPkts Counter32, + dlswTConnOperInDataOctets Counter32, + dlswTConnOperOutDataOctets Counter32, + + dlswTConnOperInCntlPkts Counter32, + dlswTConnOperOutCntlPkts Counter32, + + dlswTConnOperCURexSents Counter32, + dlswTConnOperICRexRcvds Counter32, + dlswTConnOperCURexRcvds Counter32, + dlswTConnOperICRexSents Counter32, + + dlswTConnOperNQexSents Counter32, + dlswTConnOperNRexRcvds Counter32, + dlswTConnOperNQexRcvds Counter32, + dlswTConnOperNRexSents Counter32, + dlswTConnOperCirCreates Counter32, + dlswTConnOperCircuits Gauge32 + } + +dlswTConnOperTDomain OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The object identifier indicates the transport domain + of this transport connection." + ::= { dlswTConnOperEntry 1 } + +dlswTConnOperLocalTAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local transport address for this transport connection. + This value could be different from dlswTConnConfigLocalAddr, + if the value of the latter were changed after this transport + connection was established." + ::= { dlswTConnOperEntry 2 } + +dlswTConnOperRemoteTAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote transport address of this transport connection." + ::= { dlswTConnOperEntry 3 } + +dlswTConnOperEntryTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since this + transport connection conceptual row was created." + ::= { dlswTConnOperEntry 4 } + +-- ................................................................... +-- DLSw Transport Connection Operational Objects +-- ................................................................... + +dlswTConnOperConnectTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since this + transport connection last entered the 'connected' state. + A value of zero means this transport connection has never + been established." + ::= { dlswTConnOperEntry 5 } + +dlswTConnOperState OBJECT-TYPE + SYNTAX INTEGER { + connecting (1), + initCapExchange (2), + connected (3), + quiescing (4), + disconnecting (5), + disconnected (6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this transport connection. The transport + connection enters `connecting' state when DLSw makes + a connection request to the transport layer. Once initial + Capabilities Exchange is sent, the transport connection + enters enters `initCapExchange' state. When partner + capabilities have been determined and the transport + connection is ready for sending CanUReach (CUR) messages, + it moves to the `connected' state. When DLSw is in the + process of bringing down the connection, it is in the + `disconnecting' state. When the transport layer + indicates one of its connections is disconnected, the + transport connection moves to the `disconnected' state. + + Whereas all of the values will be returned in response + to a management protocol retrieval operation, only two + values may be specified in a management protocol set + operation: `quiescing' and `disconnecting'. Changing + the value to `quiescing' prevents new circuits from being + established, and will cause a transport disconnect when + the last circuit on the connection goes away. Changing + the value to `disconnecting' will force off all circuits + immediately and bring the connection to `disconnected' + state." + ::= { dlswTConnOperEntry 6 } + +dlswTConnOperConfigIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of dlswTConnConfigIndex of the dlswTConnConfigEntry + that governs the configuration information used by this + dlswTConnOperEntry. The manager can therefore normally + examine both configured and operational information + for this transport connection. + + This value is zero if the corresponding dlswTConnConfigEntry + was deleted after the creation of this dlswTConnOperEntry. + If some fields in the former were changed but the conceptual + row was not deleted, some configuration information may not + be valid for this operational transport connection. The + manager can compare dlswTConnOperConnectTime and + dlswTConnConfigLastModifyTime to determine if this condition + exists." + ::= { dlswTConnOperEntry 7 } + +-- ................................................................... +-- Transport Connection Characteristics +-- ................................................................... + +dlswTConnOperFlowCntlMode OBJECT-TYPE + SYNTAX INTEGER { + undetermined (1), + pacing (2), -- DLSw standard flow control + other (3) -- non-DLSw standard flow control + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow control mechanism in use on this transport connection. + This value is undetermined (1) before the mode of flow control + can be established on a new transport connection (i.e., after + CapEx is sent but before Capex or other SSP control messages + have been received). Pacing (2) indicates that the standard + RFC 1795 pacing mechanism is in use. Other (3) may be either + the RFC 1434+ xBusy mechanism operating to a back-level DLSw, + or a vendor-specific flow control method. Whether it is xBusy + or not can be inferred from dlswTConnOperPartnerVersion." + ::= { dlswTConnOperEntry 8 } + +-- ................................................................... + +dlswTConnOperPartnerVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies which version (first octet) and release + (second octet) of the DLSw standard is supported by this + partner DLSw. This information is obtained from a DLSw + capabilities exchange message received from the partner DLSw. + A string of zero length is returned before a Capabilities + Exchange message is received, or if one is never received. + A conceptual row with a dlswTConnOperState of `connected' but + a zero length partner version indicates that the partner is + a non-standard DLSw partner. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswTConnOperEntry 9 } + +dlswTConnOperPartnerVendorID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the IEEE-assigned organizationally + Unique Identifier (OUI) of the maker of this partner + DLSw. This information is obtained from a DLSw + capabilities exchange message received from the partner DLSw. + A string of zero length is returned before a Capabilities + Exchange message is received, or if one is never received. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 10 } + +dlswTConnOperPartnerVersionStr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..253)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the particular product version (e.g., + product name, code level, fix level) of this partner DLSw. + The format of the actual version string is vendor-specific. + This information is obtained from a DLSw capabilities exchange + message received from the partner DLSw. + A string of zero length is returned before a Capabilities + Exchange message is received, if one is never received, or + if one is received but it does not contain a version string. + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswTConnOperEntry 11 } + +dlswTConnOperPartnerInitPacingWndw OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the partner initial receive pacing window. This + is our initial send pacing window for all new circuits on this + transport connection, as modified and granted by the first flow + control indication the partner sends on each circuit. + This information is obtained from a DLSw capabilities exchange + message received from the partner DLSw. + A value of zero is returned before a Capabilities + Exchange message is received, or if one is never received. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + REFERENCE + "DLSW: Switch-to-Switch Protocol RFC 1795" + ::= { dlswTConnOperEntry 12 } + +-- ................................................................... + +dlswTConnOperPartnerSapList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Supported SAP List received in the capabilities + exchange message from the partner DLSw. This list has + the same format described for dlswTConnConfigSapList. + A string of zero length is returned before a Capabilities + Exchange message is received, or if one is never received. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 13 } + +dlswTConnOperPartnerNBExcl OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of true signifies that the NetBIOS names received + from this partner in the NetBIOS name list in its capabilities + exchange message are the only NetBIOS names reachable by + that partner. `False' indicates that other NetBIOS names may + be reachable. `False' should be returned before a Capabilities + Exchange message is received, if one is never received, or if + one is received without a NB Name Exclusivity CV. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 14 } + +dlswTConnOperPartnerMacExcl OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of true signifies that the MAC addresses received + from this partner in the MAC address list in its capabilities + exchange message are the only MAC addresses reachable by + that partner. `False' indicates that other MAC addresses may + be reachable. `False' should be returned before a Capabilities + Exchange message is received, if one is never received, or if + one is received without a MAC Address Exclusivity CV. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 15 } + +dlswTConnOperPartnerNBInfo OBJECT-TYPE + SYNTAX INTEGER { + none (1), -- none is kept + partial (2), -- partial list is kept + complete (3), -- complete list is kept + notApplicable (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "It is up to this DSLw whether to keep either none, some, + or all of the NetBIOS name list that was received in + the capabilities exchange message sent by this partner DLSw. + This object identifies how much information was kept by + this DLSw. These names are stored as userConfigured + remote entries in dlswDirNBTable. + A value of (4), notApplicable, should be returned before + a Capabilities Exchange message is received, or if one is + never received. + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 16 } + +dlswTConnOperPartnerMacInfo OBJECT-TYPE + SYNTAX INTEGER { + none (1), -- none is kept + partial (2), -- partial list is kept + complete (3), -- complete list is kept + notApplicable (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "It is up to this DLSw whether to keep either none, some, + or all of the MAC address list that was received in the + capabilities exchange message sent by this partner DLSw. + This object identifies how much information was kept by + this DLSw. These names are stored as userConfigured + remote entries in dlswDirMACTable. + A value of (4), notApplicable, should be returned before + a Capabilities Exchange message is received, or if one is + never received. + + If an implementation chooses to keep dlswTConnOperEntrys in + the `disconnected' state, this value should remain unchanged." + ::= { dlswTConnOperEntry 17 } + +-- ................................................................... +-- Information about the last disconnect of this transport connection. +-- These objects make sense only for implementations that keep +-- transport connection information around after disconnection. +-- ................................................................... +dlswTConnOperDiscTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since the + dlswTConnOperState last entered `disconnected' state." + ::= { dlswTConnOperEntry 18 } + +dlswTConnOperDiscReason OBJECT-TYPE + SYNTAX INTEGER { + other (1), + capExFailed (2), + transportLayerDisc (3), + operatorCommand (4), + lastCircuitDiscd (5), + protocolError (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object signifies the reason that either prevented the + transport connection from entering the connected state, or + caused the transport connection to enter the disconnected + state." + ::= { dlswTConnOperEntry 19 } + +dlswTConnOperDiscActiveCir OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of circuits active (not in DISCONNECTED state) + at the time the transport connection was last disconnected. + This value is zero if the transport connection has never + been connected." + ::= { dlswTConnOperEntry 20 } + +-- ................................................................... +-- Transport Connection Statistics +-- (1) Traffic counts +-- ................................................................... +dlswTConnOperInDataPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "SSP messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Switch-to-Switch Protocol (SSP) messages of + type DGRMFRAME, DATAFRAME, or INFOFRAME received on this + transport connection." + ::= { dlswTConnOperEntry 21 } + +dlswTConnOperOutDataPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "SSP messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Switch-to-Switch Protocol (SSP) messages of + type DGRMFRAME, DATAFRAME, or INFOFRAME transmitted on this + transport connection." + ::= { dlswTConnOperEntry 22 } + +dlswTConnOperInDataOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number octets in Switch-to-Switch Protocol (SSP) messages + of type DGRMFRAME, DATAFRAME, or INFOFRAME received on this + transport connection. Each message is counted starting with + the first octet following the SSP message header." + ::= { dlswTConnOperEntry 23 } + +dlswTConnOperOutDataOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number octets in Switch-to-Switch Protocol (SSP) messages + of type DGRMFRAME, DATAFRAME, or INFOFRAME transmitted on this + transport connection. Each message is counted starting with + the first octet following the SSP message header." + ::= { dlswTConnOperEntry 24 } + +dlswTConnOperInCntlPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "SSP messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Switch-to-Switch Protocol (SSP) messages + received on this transport connection which were not of + type DGRMFRAME, DATAFRAME, or INFOFRAME." + ::= { dlswTConnOperEntry 25 } + +dlswTConnOperOutCntlPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "SSP messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Switch-to-Switch Protocol (SSP) messages of + transmitted on this transport connection which were not of + type DGRMFRAME, DATAFRAME, or INFOFRAME." + ::= { dlswTConnOperEntry 26 } + +-- ................................................................... +-- (2) Directory activities (Explorer messages) +-- ................................................................... + +dlswTConnOperCURexSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CanUReach_ex messages sent on this transport + connection." + ::= { dlswTConnOperEntry 27 } + +dlswTConnOperICRexRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICanReach_ex messages received on this transport + connection." + ::= { dlswTConnOperEntry 28 } + +dlswTConnOperCURexRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CanUReach_ex messages received on this transport + connection." + ::= { dlswTConnOperEntry 29 } + +dlswTConnOperICRexSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICanReach_ex messages sent on this transport + connection." + ::= { dlswTConnOperEntry 30 } + +-- ................................................................... + +dlswTConnOperNQexSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NetBIOS_NQ_ex (NetBIOS Name Query-explorer) + messages sent on this transport connection." + ::= { dlswTConnOperEntry 31 } + +dlswTConnOperNRexRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NETBIOS_NR_ex (NetBIOS Name Recognized-explorer) + messages received on this transport connection." + ::= { dlswTConnOperEntry 32 } + +dlswTConnOperNQexRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NETBIOS_NQ_ex messages received on this + transport connection." + ::= { dlswTConnOperEntry 33 } + +dlswTConnOperNRexSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NETBIOS_NR_ex messages sent on this transport + connection." + ::= { dlswTConnOperEntry 34 } + +-- ................................................................... +-- (3) Circuit activities on each transport connection +-- ................................................................... +dlswTConnOperCirCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that circuits entered `circuit_established' + state (not counting transitions from `circuit_restart')." + ::= { dlswTConnOperEntry 35 } + +dlswTConnOperCircuits OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active circuits on this transport + connection, where `active' means not in `disconnected' state." + ::= { dlswTConnOperEntry 36 } + + +-- ------------------------------------------------------------------ +-- Transport Connection Specific +-- ------------------------------------------------------------------ +dlswTConnSpecific OBJECT IDENTIFIER ::= { dlswTConn 4 } +dlswTConnTcp OBJECT IDENTIFIER ::= { dlswTConnSpecific 1 } + +-- ................................................................... +-- TCP Transport Connection Specific - Configuration +-- ................................................................... +dlswTConnTcpConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswTConnTcpConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the TCP transport connections that + will be either initiated by or accepted by this DSLw. + It augments the entries in dlswTConnConfigTable whose domain + is dlswTCPDomain." + ::= { dlswTConnTcp 1 } + +dlswTConnTcpConfigEntry OBJECT-TYPE + SYNTAX DlswTConnTcpConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each conceptual row defines parameters that are + specific to dlswTCPDomain transport connections." + INDEX { dlswTConnConfigIndex } + ::= { dlswTConnTcpConfigTable 1 } + +DlswTConnTcpConfigEntry ::= SEQUENCE { + dlswTConnTcpConfigKeepAliveInt INTEGER, + dlswTConnTcpConfigTcpConnections INTEGER, + dlswTConnTcpConfigMaxSegmentSize INTEGER + } + +dlswTConnTcpConfigKeepAliveInt OBJECT-TYPE + SYNTAX INTEGER (0..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time in seconds between TCP keepAlive messages when + no traffic is flowing. Zero signifies no keepAlive protocol. + Changes take effect only for new TCP connections." + DEFVAL { 0 } + ::= { dlswTConnTcpConfigEntry 1 } + +dlswTConnTcpConfigTcpConnections OBJECT-TYPE + SYNTAX INTEGER (1..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is our preferred number of TCP connections within a + TCP transport connection. The actual number used is negotiated + at capabilities exchange time. Changes take effect only + for new transport connections." + DEFVAL { 2 } + ::= { dlswTConnTcpConfigEntry 2 } + +dlswTConnTcpConfigMaxSegmentSize OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "packets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the number of bytes that this node is + willing to receive over the read TCP connection(s). + Changes take effect for new transport connections." + DEFVAL { 4096 } + ::= { dlswTConnTcpConfigEntry 3 } + + +-- ................................................................... +-- TCP Transport Connection Specific - Operation +-- ................................................................... +dlswTConnTcpOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswTConnTcpOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of TCP transport connections. It is optional + but desirable for the agent to keep an entry for some + period of time after the transport connection is + disconnected. This allows the manager to capture + additional useful information about the connection, in + particular, statistical information and the cause of the + disconnection." + ::= { dlswTConnTcp 2 } + +dlswTConnTcpOperEntry OBJECT-TYPE + SYNTAX DlswTConnTcpOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr } + ::= { dlswTConnTcpOperTable 1 } + +DlswTConnTcpOperEntry ::= SEQUENCE { + dlswTConnTcpOperKeepAliveInt INTEGER, + dlswTConnTcpOperPrefTcpConnections INTEGER, + dlswTConnTcpOperTcpConnections INTEGER + } + +dlswTConnTcpOperKeepAliveInt OBJECT-TYPE + SYNTAX INTEGER (0..1800) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time in seconds between TCP keepAlive messages when + no traffic is flowing. Zero signifies no keepAlive protocol is + operating." + ::= { dlswTConnTcpOperEntry 1 } + +dlswTConnTcpOperPrefTcpConnections OBJECT-TYPE + SYNTAX INTEGER (1..16) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the number of TCP connections preferred by this DLSw + partner, as received in its capabilities exchange message." + ::= { dlswTConnTcpOperEntry 2 } + + +dlswTConnTcpOperTcpConnections OBJECT-TYPE + SYNTAX INTEGER (1..16) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the actual current number of TCP connections within + this transport connection." + ::= { dlswTConnTcpOperEntry 3 } + +-- ******************************************************************* +-- DLSW INTERFACE GROUP +-- ******************************************************************* + +dlswIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of interfaces on which DLSw is active." + ::= { dlswInterface 1 } + +dlswIfEntry OBJECT-TYPE + SYNTAX DlswIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { ifIndex } + ::= { dlswIfTable 1 } + +DlswIfEntry ::= SEQUENCE { + dlswIfRowStatus RowStatus, + dlswIfVirtualSegment INTEGER, + dlswIfSapList OCTET STRING + } + +dlswIfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by the manager to create + or delete the row entry in the dlswIfTable + following the RowStatus textual convention." + ::= { dlswIfEntry 1 } + +dlswIfVirtualSegment OBJECT-TYPE + SYNTAX INTEGER (0..4095 | 65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The segment number that uniquely identifies the virtual + segment to which this DLSw interface is connected. + Current source routing protocols limit this value to + the range 0 - 4095. (The value 0 is used by some + management applications for special test cases.) + A value of 65535 signifies that no virtual segment + is assigned to this interface. For instance, + in a non-source routing environment, segment number + assignment is not required." + DEFVAL { 65535 } + ::= { dlswIfEntry 2 } + +dlswIfSapList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAP list indicates which SAPs are allowed to be + data link switched through this interface. This list + has the same format described for dlswTConnConfigSapList. + + When changes to this object take effect is implementation- + specific. Turning off a particular SAP can destroy + active circuits that are using that SAP. An agent + implementation may reject such changes until there are no + active circuits if it so chooses. In this case, it is up + to the manager to close the circuits first, using + dlswCircuitState. + + The DEFVAL below indicates support for SAPs 0, 4, 8, and C." + DEFVAL { 'AA000000000000000000000000000000'H } + ::= { dlswIfEntry 3 } + + +-- ******************************************************************* +-- DIRECTORY +-- Directory services caches the locations of MAC addresses +-- and NetBIOS names. For resources which are attached via +-- local interfaces, the ifIndex may be cached, and for +-- resources which are reachable via a DLSw partner, the +-- transport address of the DLSw partner is cached. +-- ******************************************************************* + +-- ------------------------------------------------------------------ +-- Directory Related Statistical Objects +-- ------------------------------------------------------------------ +dlswDirStat OBJECT IDENTIFIER ::= { dlswDirectory 1 } + +dlswDirMacEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of entries in the dlswDirMacTable." + ::= { dlswDirStat 1 } + +dlswDirMacCacheHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a cache search for a particular MAC address + resulted in success." + ::= { dlswDirStat 2 } + +dlswDirMacCacheMisses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a cache search for a particular MAC address + resulted in failure." + ::= { dlswDirStat 3 } + +dlswDirMacCacheNextIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The next value of dlswDirMacIndex to be assigned by + the agent. A retrieval of this object atomically reserves + the returned value for use by the manager to create a row + in dlswDirMacTable. This makes it possible for the agent + to control the index space of the MAC address cache, yet + allows the manager to administratively create new rows." + ::= { dlswDirStat 4 } + +dlswDirNBEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of entries in the dlswDirNBTable." + ::= { dlswDirStat 5 } + +dlswDirNBCacheHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a cache search for a particular NetBIOS + name resulted in success." + ::= { dlswDirStat 6 } + +dlswDirNBCacheMisses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a cache search for a particular NetBIOS + name resulted in failure." + ::= { dlswDirStat 7 } + +dlswDirNBCacheNextIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The next value of dlswDirNBIndex to be assigned by the + agent. A retrieval of this object atomically reserves + the returned value for use by the manager to create + a row in dlswDirNBTable. This makes it possible for the + agent to control the index space for the NetBIOS name + cache, yet allows the manager to administratively + create new rows." + ::= { dlswDirStat 8 } + +-- ------------------------------------------------------------------ +-- Directory Cache +-- ------------------------------------------------------------------ +dlswDirCache OBJECT IDENTIFIER ::= { dlswDirectory 2 } + +-- ................................................................... +-- Directory for MAC Addresses. +-- All Possible combinations of values of these objects. +-- +-- EntryType LocationType Location Status +-- -------------- ------------ ------------------ -------------- +-- userConfigured local ifEntry or 0.0 reachable, or +-- notReachable, or +-- unknown +-- userConfigured remote TConnConfigEntry reachable, or +-- notReachable, or +-- unknown +-- partnerCapExMsg remote TConnOperEntry unknown +-- dynamic local ifEntry or 0.0 reachable +-- dynamic remote TConnOperEntry reachable +-- +-- ................................................................... +dlswDirMacTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswDirMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains locations of MAC addresses. + They could be either verified or not verified, + local or remote, and configured locally or learned + from either Capabilities Exchange messages or + directory searches." + ::= { dlswDirCache 1 } + +dlswDirMacEntry OBJECT-TYPE + SYNTAX DlswDirMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indexed by dlswDirMacIndex." + INDEX { dlswDirMacIndex } + ::= { dlswDirMacTable 1 } + +DlswDirMacEntry ::= SEQUENCE { + dlswDirMacIndex INTEGER, + dlswDirMacMac MacAddressNC, + dlswDirMacMask MacAddressNC, + dlswDirMacEntryType INTEGER, + dlswDirMacLocationType INTEGER, + dlswDirMacLocation RowPointer, + dlswDirMacStatus INTEGER, + dlswDirMacLFSize LFSize, + dlswDirMacRowStatus RowStatus + } + +dlswDirMacIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies a conceptual row of this table." + ::= { dlswDirMacEntry 1 } + +dlswDirMacMac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MAC address, together with the dlswDirMacMask, + specifies a set of MAC addresses that are defined or + discovered through an interface or partner DLSw nodes." + ::= { dlswDirMacEntry 2 } + +dlswDirMacMask OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MAC address mask, together with the dlswDirMacMac, + specifies a set of MAC addresses that are defined or + discovered through an interface or partner DLSw nodes." + DEFVAL { 'FFFFFFFFFFFF'H } + ::= { dlswDirMacEntry 3 } + +dlswDirMacEntryType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + userConfiguredPublic (2), + userConfiguredPrivate (3), + partnerCapExMsg (4), + dynamic (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The cause of the creation of this conceptual row. + It could be one of the three methods: (1) user + configured, including via management protocol + set operations, configuration file, command line + or equivalent methods; (2) learned from the + partner DLSw Capabilities Exchange messages; + and (3) dynamic, e.g., learned from ICanReach + messages, or LAN explorer frames. Since only + individual MAC addresses can be dynamically learned, + dynamic entries will all have a mask of all FFs. + + The public versus private distinction for user- + configured resources applies only to local resources + (UC remote resources are private), and indicates + whether that resource should be advertised in + capabilities exchange messages sent by this node." + DEFVAL { userConfiguredPublic } + ::= { dlswDirMacEntry 4 } + +dlswDirMacLocationType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + local (2), + remote (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The location of the resource (or a collection of + resources using a mask) of this conceptual row + is either (1) local - the resource is reachable + via an interface, or (2) remote - the resource + is reachable via a partner DLSw node (or a set + of partner DLSw nodes)." + DEFVAL { local } + ::= { dlswDirMacEntry 5 } + +dlswDirMacLocation OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Points to either the ifEntry, dlswTConnConfigEntry, + dlswTConnOperEntry, 0.0, or something that is implementation + specific. It identifies the location of the MAC address + (or the collection of MAC addresses.)" + DEFVAL { null } + ::= { dlswDirMacEntry 6 } + +dlswDirMacStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown (1), + reachable (2), + notReachable (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies whether DLSw currently believes + the MAC address to be accessible at the specified location. + The value `notReachable' allows a configured resource + definition to be taken out of service when a search to + that resource fails (avoiding a repeat of the search)." + DEFVAL { unknown } + ::= { dlswDirMacEntry 7 } + +dlswDirMacLFSize OBJECT-TYPE + SYNTAX LFSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The largest size of the MAC INFO field (LLC header and data) + that a circuit to the MAC address can carry through this path." + DEFVAL { lfs65535 } + ::= { dlswDirMacEntry 8 } + +dlswDirMacRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by the manager to create + or delete the row entry in the dlswDirMacTable + following the RowStatus textual convention." + ::= { dlswDirMacEntry 9 } + +-- ................................................................... +-- Directory for NetBIOS Names +-- All Possible combinations of values of these objects. +-- +-- EntryType LocationType Location Status +-- -------------- ------------ ------------------ -------------- +-- userConfigured local ifEntry or 0.0 reachable, or +-- notReachable, or +-- unknown +-- userConfigured remote TConnConfigEntry reachable, or +-- notReachable, or +-- unknown +-- partnerCapExMsg remote TConnOperEntry unknown +-- dynamic local ifEntry or 0.0 reachable +-- dynamic remote TConnOperEntry reachable +-- +-- ................................................................... +dlswDirNBTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswDirNBEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains locations of NetBIOS names. + They could be either verified or not verified, + local or remote, and configured locally or learned + from either Capabilities Exchange messages or + directory searches." + ::= { dlswDirCache 2 } + +dlswDirNBEntry OBJECT-TYPE + SYNTAX DlswDirNBEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indexed by dlswDirNBIndex." + INDEX { dlswDirNBIndex } + ::= { dlswDirNBTable 1 } + +DlswDirNBEntry ::= SEQUENCE { + dlswDirNBIndex INTEGER, + dlswDirNBName NBName, + dlswDirNBNameType INTEGER, + dlswDirNBEntryType INTEGER, + dlswDirNBLocationType INTEGER, + dlswDirNBLocation RowPointer, + dlswDirNBStatus INTEGER, + dlswDirNBLFSize LFSize, + dlswDirNBRowStatus RowStatus + } + +dlswDirNBIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies a conceptual row of this table." + ::= { dlswDirNBEntry 1 } + +dlswDirNBName OBJECT-TYPE + SYNTAX NBName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NetBIOS name (including `any char' and `wildcard' + characters) specifies a set of NetBIOS names that are + defined or discovered through an interface or partner + DLSw nodes." + ::= { dlswDirNBEntry 2 } + +dlswDirNBNameType OBJECT-TYPE + SYNTAX INTEGER { + unknown (1), + individual (2), + group (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether dlswDirNBName represents an (or a set of) individual + or group NetBIOS name(s)." + DEFVAL { unknown } + ::= { dlswDirNBEntry 3 } + +dlswDirNBEntryType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + userConfiguredPublic (2), + userConfiguredPrivate (3), + partnerCapExMsg (4), + dynamic (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The cause of the creation of this conceptual row. + It could be one of the three methods: (1) user + configured, including via management protocol + set operations, configuration file, command line, + or equivalent methods; (2) learned from the + partner DLSw Capabilities Exchange messages; + and (3) dynamic, e.g., learned from ICanReach + messages, or test frames. Since only actual + NetBIOS names can be dynamically learned, dynamic + entries will not contain any char or wildcard + characters. + + The public versus private distinction for user- + configured resources applies only to local resources + (UC remote resources are private), and indicates + whether that resource should be advertised in + capabilities exchange messages sent by this node." + DEFVAL { userConfiguredPublic } + ::= { dlswDirNBEntry 4 } + +dlswDirNBLocationType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + local (2), + remote (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The location of the resource (or a collection of resources + using any char/wildcard characters) of this conceptual row + is either (1) local - the resource is reachable via an + interface, or (2) remote - the resource is reachable via a + a partner DLSw node (or a set of partner DLSw nodes)." + DEFVAL { local } + ::= { dlswDirNBEntry 5 } + +dlswDirNBLocation OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Points to either the ifEntry, dlswTConnConfigEntry, + dlswTConnOperEntry, 0.0, or something that is implementation + specific. It identifies the location of the NetBIOS name + or the set of NetBIOS names." + DEFVAL { null } + ::= { dlswDirNBEntry 6 } + +dlswDirNBStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown (1), + reachable (2), + notReachable (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies whether DLSw currently believes + the NetBIOS name to be accessible at the specified location. + The value `notReachable' allows a configured resource + definition to be taken out of service when a search to + that resource fails (avoiding a repeat of the search)." + DEFVAL { unknown } + ::= { dlswDirNBEntry 7 } + +dlswDirNBLFSize OBJECT-TYPE + SYNTAX LFSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The largest size of the MAC INFO field (LLC header and data) + that a circuit to the NB name can carry through this path." + DEFVAL { lfs65535 } + ::= { dlswDirNBEntry 8 } + +dlswDirNBRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by manager to create + or delete the row entry in the dlswDirNBTable + following the RowStatus textual convention." + ::= { dlswDirNBEntry 9 } + + +-- ------------------------------------------------------------------ +-- Resource Locations +-- ------------------------------------------------------------------ +dlswDirLocate OBJECT IDENTIFIER ::= { dlswDirectory 3 } + +-- ................................................................... +-- Locate Entries in the dlswDirMacTable for a given MAC address +-- ................................................................... +dlswDirLocateMacTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswDirLocateMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to retrieve all entries in the + dlswDirMacTable that match a given MAC address, + in the order of the best matched first, the + second best matched second, and so on, till + no more entries match the given MAC address." + ::= { dlswDirLocate 1 } + +dlswDirLocateMacEntry OBJECT-TYPE + SYNTAX DlswDirLocateMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indexed by dlswDirLocateMacMac and dlswDirLocateMacMatch. + The first object is the MAC address of interest, and + the second object is the order in the list of all + entries that match the MAC address." + INDEX { dlswDirLocateMacMac, dlswDirLocateMacMatch } + ::= { dlswDirLocateMacTable 1 } + +DlswDirLocateMacEntry ::= SEQUENCE { + dlswDirLocateMacMac MacAddressNC, + dlswDirLocateMacMatch INTEGER, + dlswDirLocateMacLocation RowPointer + } + +dlswDirLocateMacMac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MAC address to be located." + ::= { dlswDirLocateMacEntry 1 } + +dlswDirLocateMacMatch OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The order of the entries of dlswDirMacTable + that match dlswDirLocateMacMac. A value of + one represents the entry that best matches the + MAC address. A value of two represents the second + best matched entry, and so on." + ::= { dlswDirLocateMacEntry 2 } + +dlswDirLocateMacLocation OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Points to the dlswDirMacEntry." + ::= { dlswDirLocateMacEntry 3 } + +-- ................................................................... +-- Locate Entries in the dlswDirNBTable for a given NetBIOS name +-- ................................................................... +dlswDirLocateNBTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswDirLocateNBEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to retrieve all entries in the + dlswDirNBTable that match a given NetBIOS name, + in the order of the best matched first, the + second best matched second, and so on, till + no more entries match the given NetBIOS name." + ::= { dlswDirLocate 2 } + +dlswDirLocateNBEntry OBJECT-TYPE + SYNTAX DlswDirLocateNBEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indexed by dlswDirLocateNBName and dlswDirLocateNBMatch. + The first object is the NetBIOS name of interest, and + the second object is the order in the list of all + entries that match the NetBIOS name." + INDEX { dlswDirLocateNBName, dlswDirLocateNBMatch } + ::= { dlswDirLocateNBTable 1 } + +DlswDirLocateNBEntry ::= SEQUENCE { + dlswDirLocateNBName NBName, + dlswDirLocateNBMatch INTEGER, + dlswDirLocateNBLocation RowPointer + } + +dlswDirLocateNBName OBJECT-TYPE + SYNTAX NBName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The NetBIOS name to be located (no any char or wildcards)." + ::= { dlswDirLocateNBEntry 1 } + +dlswDirLocateNBMatch OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The order of the entries of dlswDirNBTable + that match dlswDirLocateNBName. A value of + one represents the entry that best matches the + NetBIOS name. A value of two represents the second + best matched entry, and so on." + ::= { dlswDirLocateNBEntry 2 } + +dlswDirLocateNBLocation OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Points to the dlswDirNBEntry." + ::= { dlswDirLocateNBEntry 3 } + + +-- ******************************************************************* +-- CIRCUIT +-- A circuit is the end-to-end association of two DLSw entities +-- through one or two DLSw nodes. It is the concatenation of +-- two "data links", optionally with an intervening transport +-- connection. The origin of the circuit is the end station that +-- initiates the circuit. The target of the circuit is the end +-- station that receives the initiation. +-- ******************************************************************* + +-- ------------------------------------------------------------------ +-- Statistics Related to Circuits +-- ------------------------------------------------------------------ +dlswCircuitStat OBJECT IDENTIFIER ::= { dlswCircuit 1 } + +dlswCircuitStatActives OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of circuits in dlswCircuitTable that are + not in the disconnected state." + ::= { dlswCircuitStat 1 } + +dlswCircuitStatCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of entries ever added to dlswCircuitTable, + or reactivated upon exiting `disconnected' state." + ::= { dlswCircuitStat 2 } + + +-- ------------------------------------------------------------------ +-- Circuit Table +-- +-- This table is the DLSw entity's view of circuits. There will be +-- a conceptual row in the table associated with each data link. +-- +-- The chart below lists the various possible combinations of +-- origin and target MAC locations and the number of entries in +-- this Circuit Table: +-- +-- number of | Origin End Station Location +-- entries in the |-------------------------------------- +-- Circuit Table | internal local remote +-- --------------------- |-------------------------------------- +-- Target | internal | NA 2 1 +-- End | local | 2 2 1 +-- Station | remote | 1 1 NA +-- Location | | +-- +-- NA: Not applicable +-- +-- Note: +-- (a) IfIndex and RouteInfo are applied only if location is local. +-- (b) TDomain and TAddr are applied only if location is remote. +-- +-- Most of statistics related to circuits can be collected +-- from LLC-2 Link Station Table. +-- ------------------------------------------------------------------ +dlswCircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is the circuit representation in the DLSw + entity. Virtual data links are used to represent any internal + end stations. There is a conceptual row associated with + each data link. Thus, for circuits without an intervening + transport connection, there are two conceptual rows + for each circuit. + + The table consists of the circuits being established, + established, and as an implementation option, circuits that + have been disconnected. For circuits carried over + transport connections, an entry is created after + the CUR_cs was sent or received. For circuits between + two locally attached devices, or internal virtual MAC + addresses, an entry is created when the equivalent of + CUR_cs sent/received status is reached. + + End station 1 (S1) and End station 2 (S2) are used to + represent the two end stations of the circuit. + S1 is always an end station which is locally attached. + S2 may be locally attached or remote. If it is locally + attached, the circuit will be represented by two rows indexed + by (A, B) and (B, A) where A & B are the relevant MACs/SAPs. + + The table may be used to store the causes of disconnection of + circuits. It is recommended that the oldest disconnected + circuit entry be removed from this table when the memory + space of disconnected circuits is needed." + ::= { dlswCircuit 2 } + +dlswCircuitEntry OBJECT-TYPE + SYNTAX DlswCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { dlswCircuitS1Mac, + dlswCircuitS1Sap, + dlswCircuitS2Mac, + dlswCircuitS2Sap } + ::= { dlswCircuitTable 1 } + +DlswCircuitEntry ::= SEQUENCE { + dlswCircuitS1Mac MacAddressNC, + dlswCircuitS1Sap OCTET STRING, + dlswCircuitS1IfIndex INTEGER, + dlswCircuitS1DlcType DlcType, + dlswCircuitS1RouteInfo OCTET STRING, + dlswCircuitS1CircuitId OCTET STRING, + dlswCircuitS1Dlc RowPointer, + + dlswCircuitS2Mac MacAddressNC, + dlswCircuitS2Sap OCTET STRING, + dlswCircuitS2Location EndStationLocation, + dlswCircuitS2TDomain OBJECT IDENTIFIER, + dlswCircuitS2TAddress TAddress, + dlswCircuitS2CircuitId OCTET STRING, + + dlswCircuitOrigin INTEGER, + + dlswCircuitEntryTime TimeTicks, + dlswCircuitStateTime TimeTicks, + dlswCircuitState INTEGER, + + dlswCircuitPriority INTEGER, + + dlswCircuitFCSendGrantedUnits INTEGER, + dlswCircuitFCSendCurrentWndw INTEGER, + dlswCircuitFCRecvGrantedUnits INTEGER, + dlswCircuitFCRecvCurrentWndw INTEGER, + dlswCircuitFCLargestRecvGranted Gauge32, + dlswCircuitFCLargestSendGranted Gauge32, + dlswCircuitFCHalveWndwSents Counter32, + dlswCircuitFCResetOpSents Counter32, + dlswCircuitFCHalveWndwRcvds Counter32, + dlswCircuitFCResetOpRcvds Counter32, + dlswCircuitDiscReasonLocal INTEGER, + dlswCircuitDiscReasonRemote INTEGER, + dlswCircuitDiscReasonRemoteData OCTET STRING + } + +-- ................................................................... +-- Information related to the End Station 1 (S1). +-- ................................................................... +dlswCircuitS1Mac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MAC Address of End Station 1 (S1) used for this circuit." + ::= { dlswCircuitEntry 1 } + +dlswCircuitS1Sap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SAP at End Station 1 (S1) used for this circuit." + ::= { dlswCircuitEntry 2 } + +dlswCircuitS1IfIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifEntry index of the local interface through which S1 + can be reached." + ::= { dlswCircuitEntry 3 } + +dlswCircuitS1DlcType OBJECT-TYPE + SYNTAX DlcType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DLC protocol in use between the DLSw node and S1." + ::= { dlswCircuitEntry 4 } + +dlswCircuitS1RouteInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..30)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If source-route bridging is in use between the DLSw + node and S1, this is the routing information field + describing the path between the two devices. + Otherwise the value will be an OCTET STRING of + zero length." + ::= { dlswCircuitEntry 5 } + +dlswCircuitS1CircuitId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Circuit ID assigned by this DLSw node to this circuit. + The first four octets are the DLC port Id, and + the second four octets are the Data Link Correlator. + If the DLSw SSP was not used to establish this circuit, + the value will be a string of zero length." + ::= { dlswCircuitEntry 6 } + +dlswCircuitS1Dlc OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Points to a conceptual row of the underlying DLC MIB, + which could either be the standard MIBs (e.g., the SDLC), + or an enterprise-specific DLC MIB." + ::= { dlswCircuitEntry 7 } + +-- ................................................................... +-- Information related to the End Station 2 (S2). +-- ................................................................... +dlswCircuitS2Mac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MAC Address of End Station 2 (S2) used for this circuit." + ::= { dlswCircuitEntry 8 } + +dlswCircuitS2Sap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SAP at End Station 2 (S2) used for this circuit." + ::= { dlswCircuitEntry 9 } + +dlswCircuitS2Location OBJECT-TYPE + SYNTAX EndStationLocation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The location of End Station 2 (S2). + If the location of End Station 2 is local, the + interface information will be available in the + conceptual row whose S1 and S2 are the S2 and + the S1 of this conceptual row, respectively." + ::= { dlswCircuitEntry 10 } + +dlswCircuitS2TDomain OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the location of End Station 2 is remote, + this value is the transport domain of the + transport protocol the circuit is running + over. Otherwise, the value is 0.0." + ::= { dlswCircuitEntry 11 } + +dlswCircuitS2TAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the location of End Station 2 is remote, + this object contains the address of the partner + DLSw, else it will be an OCTET STRING of zero length." + ::= { dlswCircuitEntry 12 } + +dlswCircuitS2CircuitId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Circuit ID assigned to this circuit by the partner + DLSw node. The first four octets are the DLC port Id, and + the second four octets are the Data Link Correlator. + If the DLSw SSP was not used to establish this circuit, + the value will be a string of zero length." + ::= { dlswCircuitEntry 13 } + +-- ................................................................... +dlswCircuitOrigin OBJECT-TYPE + SYNTAX INTEGER { + s1 (1), + s2 (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies which of the two end stations + initiated the establishment of this circuit." + ::= { dlswCircuitEntry 14 } + +-- ................................................................... +-- Operational information related to this circuit. +-- ................................................................... +dlswCircuitEntryTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since this + circuit table conceptual row was created." + ::= { dlswCircuitEntry 15 } + +dlswCircuitStateTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time (in hundredths of a second) since this + circuit entered the current state." + ::= { dlswCircuitEntry 16 } + +dlswCircuitState OBJECT-TYPE + SYNTAX INTEGER { + disconnected (1), + circuitStart (2), + resolvePending (3), + circuitPending (4), + circuitEstablished (5), + connectPending (6), + contactPending (7), + connected (8), + disconnectPending (9), + haltPending (10), + haltPendingNoack (11), + circuitRestart (12), + restartPending (13) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of this circuit. The agent, implementation + specific, may choose to keep entries for some period of time + after circuit disconnect, so the manager can gather the time + and cause of disconnection. + + While all of the specified values may be returned from a GET + operation, the only SETable value is `disconnectPending'. + When this value is set, DLSw should perform the appropriate + action given its previous state (e.g., send HALT_DL if the + state was `connected') to bring the circuit down to the + `disconnected' state. Both the partner DLSw and local end + station(s) should be notified as appropriate. + + This MIB provides no facility to re-establish a disconnected + circuit, because in DLSw this should be an end station-driven + function." + ::= { dlswCircuitEntry 17 } + +dlswCircuitPriority OBJECT-TYPE + SYNTAX INTEGER { + unsupported (1), + low (2), + medium (3), + high (4), + highest (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmission priority of this circuit as understood by + this DLSw node. This value is determined by the two DLSw + nodes at circuit startup time. If this DLSw node does not + support DLSw circuit priority, the value `unsupported' should + be returned." + ::= { dlswCircuitEntry 18 } + +-- ................................................................... +-- Pacing Objects: +-- These objects are applicable if DLSw is using the SSP circuit +-- pacing protocol to control the flow between the two data links +-- in this circuit. +-- ................................................................... +dlswCircuitFCSendGrantedUnits OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of paced SSP messages that this DLSw is currently + authorized to send on this circuit before it must stop and + wait for an additional flow control indication from the + partner DLSw. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 19 } + +dlswCircuitFCSendCurrentWndw OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current window size that this DLSw is using in its role + as a data sender. This is the value by which this DLSw would + increase the number of messages it is authorized to send, if + it were to receive a flow control indication with the bits + specifying `repeat window'. + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 20 } + +dlswCircuitFCRecvGrantedUnits OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of paced SSP messages that this DLSw has + authorized the partner DLSw to send on this circuit before + the partner DLSw must stop and wait for an additional flow + control indication from this DLSw. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 21 } + +dlswCircuitFCRecvCurrentWndw OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current window size that this DLSw is using in its role + as a data receiver. This is the number of additional paced + SSP messages that this DLSw would be authorizing its DLSw + partner to send, if this DLSw were to send a flow control + indication with the bits specifying `repeat window'. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 22 } + +dlswCircuitFCLargestRecvGranted OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest receive window size granted by this DLSw during + the current activation of this circuit. This is not the + largest number of messages granted at any time, but the + largest window size as represented by FCIND operator bits. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 23 } + +dlswCircuitFCLargestSendGranted OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest send (with respect to this DLSw) window size + granted by the partner DLSw during the current activation of + this circuit. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 24 } + +dlswCircuitFCHalveWndwSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Halve Window operations this DLSw has sent on + this circuit, in its role as a data receiver. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 25 } + +dlswCircuitFCResetOpSents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Reset Window operations this DLSw has sent on + this circuit, in its role as a data receiver. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 26 } + +dlswCircuitFCHalveWndwRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Halve Window operations this DLSw has received on + this circuit, in its role as a data sender. + + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 27 } + +dlswCircuitFCResetOpRcvds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Reset Window operations this DLSw has received on + this circuit, in its role as a data sender. + The value zero should be returned if this circuit is not + running the DLSw pacing protocol." + ::= { dlswCircuitEntry 28 } + + +-- ................................................................... +-- Information about the circuit disconnection +-- ................................................................... +dlswCircuitDiscReasonLocal OBJECT-TYPE + SYNTAX INTEGER { + endStationDiscRcvd (1), + endStationDlcError (2), + protocolError (3), + operatorCommand (4), + haltDlRcvd (5), + haltDlNoAckRcvd (6), + transportConnClosed (7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The reason why this circuit was last disconnected, as seen + by this DLSw node. + + This object is present only if the agent keeps circuit + table entries around for some period after circuit disconnect." + ::= { dlswCircuitEntry 29 } + +dlswCircuitDiscReasonRemote OBJECT-TYPE + SYNTAX INTEGER { + unknown (1), + endStationDiscRcvd (2), + endStationDlcError (3), + protocolError (4), + operatorCommand (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The generic reason code why this circuit was last + disconnected, as reported by the DLSw partner in a HALT_DL + or HALT_DL_NOACK. If the partner does not send a reason + code in these messages, or the DLSw implementation does + not report receiving one, the value `unknown' is returned. + + This object is present only if the agent keeps circuit table + entries around for some period after circuit disconnect." + ::= { dlswCircuitEntry 30 } + +dlswCircuitDiscReasonRemoteData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Implementation-specific data reported by the DLSw partner in + a HALT_DL or HALT_DL_NOACK, to help specify how and why this + circuit was last disconnected. If the partner does not send + this data in these messages, or the DLSw implementation does + not report receiving it, a string of zero length is returned. + + This object is present only if the agent keeps circuit table + entries around for some period after circuit disconnect." + ::= { dlswCircuitEntry 31 } + + +-- ................................................................... +-- Statistics related to this circuit. +-- All statistics are in LLC-2 Link Station Statistical Table. +-- All SDLC statistics are in SDLC MIB +-- ................................................................... + + +-- ******************************************************************* +-- DLSW SDLC EXTENSION +-- ******************************************************************* +dlswSdlcLsEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in dlswSdlcLsTable." + ::= { dlswSdlc 1 } + +-- ................................................................... +dlswSdlcLsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DlswSdlcLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table defines the virtual MAC addresses for those + SDLC link stations that participate in data link switching." + ::= { dlswSdlc 2 } + +dlswSdlcLsEntry OBJECT-TYPE + SYNTAX DlswSdlcLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this table is the ifIndex value for the + SDLC port which owns this link station and the poll + address of the particular SDLC link station." + INDEX { ifIndex, sdlcLSAddress } + ::= { dlswSdlcLsTable 1 } + +DlswSdlcLsEntry ::= SEQUENCE { + dlswSdlcLsLocalMac MacAddressNC, + dlswSdlcLsLocalSap OCTET STRING, + dlswSdlcLsLocalIdBlock DisplayString, + dlswSdlcLsLocalIdNum DisplayString, + dlswSdlcLsRemoteMac MacAddressNC, + dlswSdlcLsRemoteSap OCTET STRING, + dlswSdlcLsRowStatus RowStatus + } + +dlswSdlcLsLocalMac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The virtual MAC address used to represent the SDLC-attached + link station to the rest of the DLSw network." + ::= { dlswSdlcLsEntry 1 } + +dlswSdlcLsLocalSap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAP used to represent this link station." + ::= { dlswSdlcLsEntry 2 } + +dlswSdlcLsLocalIdBlock OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The block number is the first three digits of the node_id, + if available. These 3 hexadecimal digits identify the + product." + DEFVAL { ''H } + ::= { dlswSdlcLsEntry 3 } + +dlswSdlcLsLocalIdNum OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 5)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ID number is the last 5 digits of the node_id, if + available. These 5 hexadecimal digits are + administratively defined and combined with the 3 digit + block number form the node_id. This node_id is used to + identify the local node and is included in SNA XIDs." + DEFVAL { ''H } + ::= { dlswSdlcLsEntry 4 } + +dlswSdlcLsRemoteMac OBJECT-TYPE + SYNTAX MacAddressNC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MAC address to which DLSw should attempt to connect + this link station. If this information is not available, + a length of zero for this object should be returned." + DEFVAL { ''H } + ::= { dlswSdlcLsEntry 5 } + +dlswSdlcLsRemoteSap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 1)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAP of the remote station to which this link + station should be connected. If this information + is not available, a length of zero for this object + should be returned." + DEFVAL { ''H } + ::= { dlswSdlcLsEntry 6 } + +dlswSdlcLsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by the manager to create + or delete the row entry in the dlswSdlcLsTable + following the RowStatus textual convention." + ::= { dlswSdlcLsEntry 7 } + + +-- ******************************************************************* +-- TRAP GENERATION CONTROL +-- ******************************************************************* +dlswTrapControl OBJECT IDENTIFIER ::= { dlswNode 10} + +dlswTrapCntlTConnPartnerReject OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2), + partial (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the DLSw is permitted to emit partner + reject related traps. With the value of `enabled' + the DLSw will emit all partner reject related traps. + With the value of `disabled' the DLSw will not emit + any partner reject related traps. With the value + of `partial' the DLSw will only emits partner reject + traps for CapEx reject. The changes take effect + immediately." + ::= { dlswTrapControl 1 } + +dlswTrapCntlTConnProtViolation OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the DLSw is permitted to generate + protocol-violation traps on the events such as + window size violation. The changes take effect + immediately." + ::= { dlswTrapControl 2 } + +dlswTrapCntlTConn OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2), + partial (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the DLSw is permitted to emit transport + connection up and down traps. With the value of `enabled' + the DLSw will emit traps when connections enter `connected' + and `disconnected' states. With the value of `disabled' + the DLSw will not emit traps when connections enter of + `connected' and `disconnected' states. With the value + of `partial' the DLSw will only emits transport connection + down traps when the connection is closed with busy. + The changes take effect immediately." + ::= { dlswTrapControl 3 } + +dlswTrapCntlCircuit OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2), + partial (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the DLSw is permitted to generate + circuit up and down traps. With the value of `enabled' + the DLSw will emit traps when circuits enter `connected' + and `disconnected' states. With the value of `disabled' + the DLSw will not emit traps when circuits enter of + `connected' and `disconnected' states. With the value + of `partial' the DLSw will emit traps only for those + circuits that are initiated by this DLSw, e.g., + originating the CUR_CS message. The changes take effect + immediately." + ::= { dlswTrapControl 4 } + +-- ******************************************************************* +-- NOTIFICATIONS, i.e., TRAP DEFINITIONS +-- ******************************************************************* +dlswTraps OBJECT IDENTIFIER ::= { dlswMIB 0 } + +-- ------------------------------------------------------------------ +-- This section defines the well-known notifications sent by +-- DLSW agents. +-- Care must be taken to insure that no particular notification +-- is sent to a single receiving entity more often than once +-- every five seconds. +-- +-- Traps includes: +-- (1) Partner rejected (capEx rejection, not in partner list, etc.) +-- (2) DLSw protocol violation (e.g., window size violation, etc.) +-- (3) Transport connection up/down + +-- (4) Circuit up/down +-- ------------------------------------------------------------------ +-- + +dlswTrapTConnPartnerReject NOTIFICATION-TYPE + OBJECTS { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr + } + STATUS current + DESCRIPTION + "This trap is sent each time a transport connection + is rejected by a partner DLSw during Capabilities + Exchanges. The emission of this trap is controlled + by dlswTrapCntlTConnPartnerReject." + ::= { dlswTraps 1 } + +dlswTrapTConnProtViolation NOTIFICATION-TYPE + OBJECTS { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr + } + STATUS current + DESCRIPTION + "This trap is sent each time a protocol violation is + detected for a transport connection. The emission of this + trap is controlled by dlswTrapCntlTConnProtViolation." + ::= { dlswTraps 2 } + +dlswTrapTConnUp NOTIFICATION-TYPE + OBJECTS { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr + } + STATUS current + DESCRIPTION + "This trap is sent each time a transport connection + enters `connected' state. The emission of this trap + is controlled by dlswTrapCntlTConn." + ::= { dlswTraps 3 } + +dlswTrapTConnDown NOTIFICATION-TYPE + OBJECTS { dlswTConnOperTDomain, dlswTConnOperRemoteTAddr + } + STATUS current + DESCRIPTION + "This trap is sent each time a transport connection + enters `disconnected' state. The emission of this trap + is controlled by dlswTrapCntlTConn." + ::= { dlswTraps 4 } + +dlswTrapCircuitUp NOTIFICATION-TYPE + OBJECTS { dlswCircuitS1Mac, dlswCircuitS1Sap, + dlswCircuitS2Mac, dlswCircuitS2Sap + } + STATUS current + DESCRIPTION + "This trap is sent each time a circuit enters `connected' + state. The emission of this trap is controlled by + dlswTrapCntlCircuit." + ::= { dlswTraps 5 } + +dlswTrapCircuitDown NOTIFICATION-TYPE + OBJECTS { dlswCircuitS1Mac, dlswCircuitS1Sap, + dlswCircuitS2Mac, dlswCircuitS2Sap + } + STATUS current + DESCRIPTION + "This trap is sent each time a circuit enters `disconnected' + state. The emission of this trap is controlled by + dlswTrapCntlCircuit." + ::= { dlswTraps 6 } + + +-- ******************************************************************* +-- CONFORMANCE INFORMATION +-- ******************************************************************* +dlswConformance OBJECT IDENTIFIER ::= { dlsw 3 } + +dlswCompliances OBJECT IDENTIFIER ::= { dlswConformance 1 } +dlswGroups OBJECT IDENTIFIER ::= { dlswConformance 2 } + +-- ------------------------------------------------------------------ +-- COMPLIANCE STATEMENTS +-- ------------------------------------------------------------------ + +-- ................................................................... +-- Core compliance for all DLSw entities +-- ................................................................... +dlswCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The core compliance statement for all DLSw nodes." + MODULE + MANDATORY-GROUPS { + dlswNodeGroup, + dlswTConnStatGroup, + dlswTConnConfigGroup, + dlswTConnOperGroup, + dlswInterfaceGroup, + dlswCircuitGroup, + dlswCircuitStatGroup, + dlswNotificationGroup } + + GROUP dlswNodeNBGroup + DESCRIPTION + "The DLSw NetBIOS Node group is mandatory only for + those DLSw entities that implement NetBIOS." + + GROUP dlswTConnNBGroup + DESCRIPTION + "The DLSw NetBIOS Transport Connection group is + mandatory only for those DLSw entities that + implement NetBIOS." + + OBJECT dlswNodeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswNodeVirtualSegmentLFSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswNodeResourceNBExclusivity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswNodeResourceMacExclusivity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTrapCntlTConnPartnerReject + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTrapCntlTConnProtViolation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTrapCntlTConn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT dlswTrapCntlCircuit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigTDomain + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigLocalTAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigRemoteTAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigEntryType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigGroupDefinition + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigSetupType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigSapList + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigAdvertiseMacNB + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigInitCirRecvWndw + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnConfigRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnOperState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswIfRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswIfVirtualSegment + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswIfSapList + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswCircuitState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dlswCompliances 1 } + +-- ................................................................... +-- Compliance for all DLSw entities that provide TCP transport. +-- ................................................................... +dlswTConnTcpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for DLSw nodes that use TCP as a + transport connection protocol." + MODULE + MANDATORY-GROUPS { + dlswTConnTcpConfigGroup, + dlswTConnTcpOperGroup } + + OBJECT dlswTConnTcpConfigKeepAliveInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnTcpConfigTcpConnections + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswTConnTcpConfigMaxSegmentSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dlswCompliances 2 } + +-- ................................................................... +-- Compliance for all DLSw Entities that implement a directory +-- ................................................................... +dlswDirCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for DLSw nodes that provide a directory + function." + MODULE + MANDATORY-GROUPS { + dlswDirGroup } + + GROUP dlswDirNBGroup + DESCRIPTION + "The DLSw NetBIOS group is mandatory only for + those DLSw entities that implement NetBIOS." + + OBJECT dlswDirMacMac + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacEntryType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT dlswDirMacLocationType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacLocation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacLFSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirMacRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBNameType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBEntryType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBLocationType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBLocation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBLFSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswDirNBRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dlswCompliances 3 } + +-- ................................................................... +-- Compliance for all DLSw entities that provide an ordered +-- list of directory entries that match a resource +-- ................................................................... +dlswDirLocateCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for DLSw nodes that provide an ordered + list of directory entries for a given resource." + MODULE + MANDATORY-GROUPS { + dlswDirLocateGroup } + + GROUP dlswDirLocateNBGroup + DESCRIPTION + "The DLSw NetBIOS group is mandatory only for + those DLSw entities that implement NetBIOS." + + ::= { dlswCompliances 4 } + +-- ................................................................... +-- Compliance for all DLSw entities that support SDLC end stations +-- ................................................................... +dlswSdlcCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for DLSw nodes that support SDLC." + MODULE + MANDATORY-GROUPS { + dlswSdlcGroup } + + OBJECT dlswSdlcLsLocalMac + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsLocalSap + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsLocalIdBlock + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsLocalIdNum + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsRemoteMac + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsRemoteSap + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dlswSdlcLsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dlswCompliances 5 } + +-- ------------------------------------------------------------------ +-- CONFORMANCE GROUPS +-- ------------------------------------------------------------------ + +-- ................................................................... +-- Node Conformance Group +-- ................................................................... +dlswNodeGroup OBJECT-GROUP + OBJECTS { + dlswNodeVersion, + dlswNodeVendorID, + dlswNodeVersionString, + dlswNodeStdPacingSupport, + dlswNodeStatus, + dlswNodeUpTime, + dlswNodeVirtualSegmentLFSize, + dlswNodeResourceMacExclusivity, + dlswTrapCntlTConnPartnerReject, + dlswTrapCntlTConnProtViolation, + dlswTrapCntlTConn, + dlswTrapCntlCircuit + } + STATUS current + DESCRIPTION + "Conformance group for DLSw node general information." + ::= { dlswGroups 1 } + +-- ................................................................... +dlswNodeNBGroup OBJECT-GROUP + OBJECTS { + dlswNodeResourceNBExclusivity + } + STATUS current + DESCRIPTION + "Conformance group for DLSw node general information + specifically for nodes that support NetBIOS." + ::= { dlswGroups 2 } + +-- ................................................................... +dlswTConnStatGroup OBJECT-GROUP + OBJECTS { + dlswTConnStatActiveConnections, + dlswTConnStatCloseIdles, + dlswTConnStatCloseBusys + } + STATUS current + DESCRIPTION + "Conformance group for statistics for transport + connections." + ::= { dlswGroups 3 } + +-- ................................................................... +dlswTConnConfigGroup OBJECT-GROUP + OBJECTS { + dlswTConnConfigTDomain, + dlswTConnConfigLocalTAddr, + dlswTConnConfigRemoteTAddr, + dlswTConnConfigLastModifyTime, + dlswTConnConfigEntryType, + dlswTConnConfigGroupDefinition, + dlswTConnConfigSetupType, + dlswTConnConfigSapList, + dlswTConnConfigAdvertiseMacNB, + dlswTConnConfigInitCirRecvWndw, + dlswTConnConfigOpens, + dlswTConnConfigRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for the configuration of + transport connections." + ::= { dlswGroups 4 } + +-- ................................................................... +dlswTConnOperGroup OBJECT-GROUP + OBJECTS { + dlswTConnOperLocalTAddr, + dlswTConnOperEntryTime, + dlswTConnOperConnectTime, + dlswTConnOperState, + dlswTConnOperConfigIndex, + dlswTConnOperFlowCntlMode, + dlswTConnOperPartnerVersion, + dlswTConnOperPartnerVendorID, + dlswTConnOperPartnerVersionStr, + dlswTConnOperPartnerInitPacingWndw, + dlswTConnOperPartnerSapList, + dlswTConnOperPartnerMacExcl, + dlswTConnOperPartnerMacInfo, + dlswTConnOperDiscTime, + dlswTConnOperDiscReason, + dlswTConnOperDiscActiveCir, + dlswTConnOperInDataPkts, + dlswTConnOperOutDataPkts, + dlswTConnOperInDataOctets, + dlswTConnOperOutDataOctets, + dlswTConnOperInCntlPkts, + dlswTConnOperOutCntlPkts, + dlswTConnOperCURexSents, + dlswTConnOperICRexRcvds, + dlswTConnOperCURexRcvds, + dlswTConnOperICRexSents, + dlswTConnOperCirCreates, + dlswTConnOperCircuits + } + STATUS current + DESCRIPTION + "Conformance group for operation information for + transport connections." + ::= { dlswGroups 5 } +-- ................................................................... +dlswTConnNBGroup OBJECT-GROUP + OBJECTS { + dlswTConnOperPartnerNBExcl, + dlswTConnOperPartnerNBInfo, + dlswTConnOperNQexSents, + dlswTConnOperNRexRcvds, + dlswTConnOperNQexRcvds, + dlswTConnOperNRexSents + } + STATUS current + DESCRIPTION + "Conformance group for operation information for + transport connections, specifically for nodes + that support NetBIOS." + ::= { dlswGroups 6 } + +-- ................................................................... +dlswTConnTcpConfigGroup OBJECT-GROUP + OBJECTS { + dlswTConnTcpConfigKeepAliveInt, + dlswTConnTcpConfigTcpConnections, + dlswTConnTcpConfigMaxSegmentSize + } + STATUS current + DESCRIPTION + "Conformance group for configuration information for + transport connections using TCP." + ::= { dlswGroups 7 } + +-- ................................................................... +dlswTConnTcpOperGroup OBJECT-GROUP + OBJECTS { + dlswTConnTcpOperKeepAliveInt, + dlswTConnTcpOperPrefTcpConnections, + dlswTConnTcpOperTcpConnections + } + STATUS current + DESCRIPTION + "Conformance group for operation information for + transport connections using TCP." + ::= { dlswGroups 8 } + +-- ................................................................... +dlswInterfaceGroup OBJECT-GROUP + OBJECTS { + dlswIfRowStatus, + dlswIfVirtualSegment, + dlswIfSapList + } + STATUS current + DESCRIPTION + "Conformance group for DLSw interfaces." + ::= { dlswGroups 9 } + +-- ................................................................... +dlswDirGroup OBJECT-GROUP + OBJECTS { + dlswDirMacEntries, + dlswDirMacCacheHits, + dlswDirMacCacheMisses, + dlswDirMacCacheNextIndex, + dlswDirMacMac, + dlswDirMacMask, + dlswDirMacEntryType, + dlswDirMacLocationType, + dlswDirMacLocation, + dlswDirMacStatus, + dlswDirMacLFSize, + dlswDirMacRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for DLSw directory using MAC + addresses." + ::= { dlswGroups 10 } + +-- ................................................................... +dlswDirNBGroup OBJECT-GROUP + OBJECTS { + dlswDirNBEntries, + dlswDirNBCacheHits, + dlswDirNBCacheMisses, + dlswDirNBCacheNextIndex, + dlswDirNBName, + dlswDirNBNameType, + dlswDirNBEntryType, + dlswDirNBLocationType, + dlswDirNBLocation, + dlswDirNBStatus, + dlswDirNBLFSize, + dlswDirNBRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for DLSw directory using NetBIOS + names." + ::= { dlswGroups 11 } + +-- ................................................................... +dlswDirLocateGroup OBJECT-GROUP + OBJECTS { + dlswDirLocateMacLocation + } + STATUS current + DESCRIPTION + "Conformance group for a node that can return directory + entry order for a given MAC address." + ::= { dlswGroups 12 } + +-- ................................................................... +dlswDirLocateNBGroup OBJECT-GROUP + OBJECTS { + dlswDirLocateNBLocation + } + STATUS current + DESCRIPTION + "Conformance group for a node that can return directory + entry order for a given NetBIOS name." + ::= { dlswGroups 13 } + +-- ................................................................... +dlswCircuitStatGroup OBJECT-GROUP + OBJECTS { + dlswCircuitStatActives, + dlswCircuitStatCreates + } + STATUS current + DESCRIPTION + "Conformance group for statistics about circuits." + ::= { dlswGroups 14 } + +-- ................................................................... +dlswCircuitGroup OBJECT-GROUP + OBJECTS { + dlswCircuitS1IfIndex, + dlswCircuitS1DlcType, + dlswCircuitS1RouteInfo, + dlswCircuitS1CircuitId, + dlswCircuitS1Dlc, + dlswCircuitS2Location, + dlswCircuitS2TDomain, + dlswCircuitS2TAddress, + dlswCircuitS2CircuitId, + dlswCircuitOrigin, + dlswCircuitEntryTime, + dlswCircuitStateTime, + dlswCircuitState, + dlswCircuitPriority, + dlswCircuitFCSendGrantedUnits, + dlswCircuitFCSendCurrentWndw, + dlswCircuitFCRecvGrantedUnits, + dlswCircuitFCRecvCurrentWndw, + dlswCircuitFCLargestRecvGranted, + dlswCircuitFCLargestSendGranted, + dlswCircuitFCHalveWndwSents, + dlswCircuitFCResetOpSents, + dlswCircuitFCHalveWndwRcvds, + dlswCircuitFCResetOpRcvds, + dlswCircuitDiscReasonLocal, + dlswCircuitDiscReasonRemote, + dlswCircuitDiscReasonRemoteData + } + STATUS current + DESCRIPTION + "Conformance group for DLSw circuits." + ::= { dlswGroups 15 } + +-- ................................................................... +dlswSdlcGroup OBJECT-GROUP + OBJECTS { + dlswSdlcLsEntries, + dlswSdlcLsLocalMac, + dlswSdlcLsLocalSap, + dlswSdlcLsLocalIdBlock, + dlswSdlcLsLocalIdNum, + dlswSdlcLsRemoteMac, + dlswSdlcLsRemoteSap, + dlswSdlcLsRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for DLSw SDLC support." + ::= { dlswGroups 16 } + +-- ................................................................... +dlswNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + dlswTrapTConnPartnerReject, + dlswTrapTConnProtViolation, + dlswTrapTConnUp, + dlswTrapTConnDown, + dlswTrapCircuitUp, + dlswTrapCircuitDown + } + STATUS current + DESCRIPTION + "Conformance group for DLSw notifications." + ::= { dlswGroups 17 } + +END diff --git a/mibs/ietf/DNS-RESOLVER-MIB b/mibs/ietf/DNS-RESOLVER-MIB new file mode 100644 index 0000000..6cee854 --- /dev/null +++ b/mibs/ietf/DNS-RESOLVER-MIB @@ -0,0 +1,1197 @@ +DNS-RESOLVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, IpAddress, Counter32, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, DisplayString + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + dns, DnsName, DnsNameAsIndex, DnsClass, DnsType, DnsQClass, + DnsQType, DnsTime, DnsOpCode, DnsRespCode + FROM DNS-SERVER-MIB; + +-- DNS Resolver MIB + +dnsResMIB MODULE-IDENTITY + LAST-UPDATED "9401282250Z" + ORGANIZATION "IETF DNS Working Group" + CONTACT-INFO + " Rob Austein + Postal: Epilogue Technology Corporation + 268 Main Street, Suite 283 + North Reading, MA 10864 + US + Tel: +1 617 245 0804 + Fax: +1 617 245 8122 + E-Mail: sra@epilogue.com + + Jon Saperia + Postal: Digital Equipment Corporation + 110 Spit Brook Road + ZKO1-3/H18 + Nashua, NH 03062-2698 + US + Tel: +1 603 881 0480 + Fax: +1 603 881 0120 + E-mail: saperia@zko.dec.com" + DESCRIPTION + "The MIB module for entities implementing the client + (resolver) side of the Domain Name System (DNS) + protocol." + ::= { dns 2 } + +dnsResMIBObjects OBJECT IDENTIFIER ::= { dnsResMIB 1 } + +-- (Old-style) groups in the DNS resolver MIB. + +dnsResConfig OBJECT IDENTIFIER ::= { dnsResMIBObjects 1 } +dnsResCounter OBJECT IDENTIFIER ::= { dnsResMIBObjects 2 } +dnsResLameDelegation OBJECT IDENTIFIER ::= { dnsResMIBObjects 3 } +dnsResCache OBJECT IDENTIFIER ::= { dnsResMIBObjects 4 } +dnsResNCache OBJECT IDENTIFIER ::= { dnsResMIBObjects 5 } +dnsResOptCounter OBJECT IDENTIFIER ::= { dnsResMIBObjects 6 } + + +-- Resolver Configuration Group + +dnsResConfigImplementIdent OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation identification string for the + resolver software in use on the system, for example; + `RES-2.1'" + ::= { dnsResConfig 1 } + +dnsResConfigService OBJECT-TYPE + SYNTAX INTEGER { recursiveOnly(1), + iterativeOnly(2), + recursiveAndIterative(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Kind of DNS resolution service provided: + + recursiveOnly(1) indicates a stub resolver. + + iterativeOnly(2) indicates a normal full service + resolver. + + recursiveAndIterative(3) indicates a full-service + resolver which performs a mix of recursive and iterative + queries." + ::= { dnsResConfig 2 } + +dnsResConfigMaxCnames OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Limit on how many CNAMEs the resolver should allow + before deciding that there's a CNAME loop. Zero means + that resolver has no explicit CNAME limit." + REFERENCE + "RFC-1035 section 7.1." + ::= { dnsResConfig 3 } + +-- DNS Resolver Safety Belt Table + +dnsResConfigSbeltTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResConfigSbeltEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of safety belt information used by the resolver + when it hasn't got any better idea of where to send a + query, such as when the resolver is booting or is a stub + resolver." + ::= { dnsResConfig 4 } + +dnsResConfigSbeltEntry OBJECT-TYPE + SYNTAX DnsResConfigSbeltEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the resolver's Sbelt table. + Rows may be created or deleted at any time by the DNS + resolver and by SNMP SET requests. Whether the values + changed via SNMP are saved in stable storage across + `reset' operations is implementation-specific." + INDEX { dnsResConfigSbeltAddr, + dnsResConfigSbeltSubTree, + dnsResConfigSbeltClass } + ::= { dnsResConfigSbeltTable 1 } + +DnsResConfigSbeltEntry ::= + SEQUENCE { + dnsResConfigSbeltAddr + IpAddress, + dnsResConfigSbeltName + DnsName, + dnsResConfigSbeltRecursion + INTEGER, + dnsResConfigSbeltPref + INTEGER, + dnsResConfigSbeltSubTree + DnsNameAsIndex, + dnsResConfigSbeltClass + DnsClass, + dnsResConfigSbeltStatus + RowStatus + } + +dnsResConfigSbeltAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the Sbelt name server identified by + this row of the table." + ::= { dnsResConfigSbeltEntry 1 } + +dnsResConfigSbeltName OBJECT-TYPE + SYNTAX DnsName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The DNS name of a Sbelt nameserver identified by this + row of the table. A zero-length string indicates that + the name is not known by the resolver." + ::= { dnsResConfigSbeltEntry 2 } + +dnsResConfigSbeltRecursion OBJECT-TYPE + SYNTAX INTEGER { iterative(1), + recursive(2), + recursiveAndIterative(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Kind of queries resolver will be sending to the name + server identified in this row of the table: + + iterative(1) indicates that resolver will be directing + iterative queries to this name server (RD bit turned + off). + + recursive(2) indicates that resolver will be directing + recursive queries to this name server (RD bit turned + on). + + recursiveAndIterative(3) indicates that the resolver + will be directing both recursive and iterative queries + to the server identified in this row of the table." + ::= { dnsResConfigSbeltEntry 3 } + +dnsResConfigSbeltPref OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the preference for the name server + identified in this row of the table. The lower the + value, the more desirable the resolver considers this + server." + ::= { dnsResConfigSbeltEntry 4 } + +dnsResConfigSbeltSubTree OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Queries sent to the name server identified by this row + of the table are limited to those for names in the name + subtree identified by this variable. If no such + limitation applies, the value of this variable is the + name of the root domain (a DNS name consisting of a + single zero octet)." + ::= { dnsResConfigSbeltEntry 5 } + +dnsResConfigSbeltClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The class of DNS queries that will be sent to the server + identified by this row of the table." + ::= { dnsResConfigSbeltEntry 6 } + +dnsResConfigSbeltStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Row status column for this row of the Sbelt table." + ::= { dnsResConfigSbeltEntry 7 } + +dnsResConfigUpTime OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the resolver has a persistent state (e.g., a + process), this value will be the time elapsed since it + started. For software without persistant state, this + value will be 0." + ::= { dnsResConfig 5 } + +dnsResConfigResetTime OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the resolver has a persistent state (e.g., a process) + and supports a `reset' operation (e.g., can be told to + re-read configuration files), this value will be the + time elapsed since the last time the resolver was + `reset.' For software that does not have persistence or + does not support a `reset' operation, this value will be + zero." + ::= { dnsResConfig 6 } + +dnsResConfigReset OBJECT-TYPE + SYNTAX INTEGER { other(1), + reset(2), + initializing(3), + running(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action object to reinitialize any persistant + resolver state. When set to reset(2), any persistant + resolver state (such as a process) is reinitialized as if + the resolver had just been started. This value will + never be returned by a read operation. When read, one of + the following values will be returned: + other(1) - resolver in some unknown state; + initializing(3) - resolver (re)initializing; + running(4) - resolver currently running." + ::= { dnsResConfig 7 } + + +-- Resolver Counters Group + +-- Resolver Counter Table + +dnsResCounterByOpcodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResCounterByOpcodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of the current count of resolver queries and + answers." + ::= { dnsResCounter 3 } + +dnsResCounterByOpcodeEntry OBJECT-TYPE + SYNTAX DnsResCounterByOpcodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in the resolver counter table. Entries are + indexed by DNS OpCode." + INDEX { dnsResCounterByOpcodeCode } + ::= { dnsResCounterByOpcodeTable 1 } + +DnsResCounterByOpcodeEntry ::= + SEQUENCE { + dnsResCounterByOpcodeCode + DnsOpCode, + dnsResCounterByOpcodeQueries + Counter32, + dnsResCounterByOpcodeResponses + Counter32 + } + +dnsResCounterByOpcodeCode OBJECT-TYPE + SYNTAX DnsOpCode + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to this table. The OpCodes that have already + been defined are found in RFC-1035." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsResCounterByOpcodeEntry 1 } + +dnsResCounterByOpcodeQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of queries that have sent out by the + resolver since initialization for the OpCode which is + the index to this row of the table." + ::= { dnsResCounterByOpcodeEntry 2 } + +dnsResCounterByOpcodeResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of responses that have been received by the + resolver since initialization for the OpCode which is + the index to this row of the table." + ::= { dnsResCounterByOpcodeEntry 3 } + +-- Resolver Response Code Counter Table + +dnsResCounterByRcodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResCounterByRcodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of the current count of responses to resolver + queries." + ::= { dnsResCounter 4 } + +dnsResCounterByRcodeEntry OBJECT-TYPE + SYNTAX DnsResCounterByRcodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in the resolver response table. Entries are + indexed by DNS response code." + INDEX { dnsResCounterByRcodeCode } + ::= { dnsResCounterByRcodeTable 1 } + +DnsResCounterByRcodeEntry ::= + SEQUENCE { + dnsResCounterByRcodeCode + DnsRespCode, + dnsResCounterByRcodeResponses + Counter32 + } + +dnsResCounterByRcodeCode OBJECT-TYPE + SYNTAX DnsRespCode + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to this table. The Response Codes that have + already been defined are found in RFC-1035." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsResCounterByRcodeEntry 1 } + +dnsResCounterByRcodeResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses the resolver has received for the + response code value which identifies this row of the + table." + ::= { dnsResCounterByRcodeEntry 2 } + +-- Additional DNS Resolver Counter Objects + +dnsResCounterNonAuthDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests made by the resolver for which a + non-authoritative answer (cached data) was received." + ::= { dnsResCounter 5 } + +dnsResCounterNonAuthNoDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests made by the resolver for which a + non-authoritative answer - no such data response (empty + answer) was received." + ::= { dnsResCounter 6 } + +dnsResCounterMartians OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received which were received from + servers that the resolver does not think it asked." + ::= { dnsResCounter 7 } + +dnsResCounterRecdResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received to all queries." + ::= { dnsResCounter 8 } + +dnsResCounterUnparseResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses received which were unparseable." + ::= { dnsResCounter 9 } + +dnsResCounterFallbacks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the resolver had to fall back to its + seat belt information." + ::= { dnsResCounter 10 } + + +-- Lame Delegation Group + +dnsResLameDelegationOverflows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the resolver attempted to add an entry + to the Lame Delegation table but was unable to for some + reason such as space constraints." + ::= { dnsResLameDelegation 1 } + +-- Lame Delegation Table + +dnsResLameDelegationTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResLameDelegationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of name servers returning lame delegations. + + A lame delegation has occured when a parent zone + delegates authority for a child zone to a server that + appears not to think that it is authoritative for the + child zone in question." + ::= { dnsResLameDelegation 2 } + +dnsResLameDelegationEntry OBJECT-TYPE + SYNTAX DnsResLameDelegationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in lame delegation table. Only the resolver may + create rows in this table. SNMP SET requests may be used + to delete rows." + INDEX { dnsResLameDelegationSource, + dnsResLameDelegationName, + dnsResLameDelegationClass } + ::= { dnsResLameDelegationTable 1 } + +DnsResLameDelegationEntry ::= + SEQUENCE { + dnsResLameDelegationSource + IpAddress, + dnsResLameDelegationName + DnsNameAsIndex, + dnsResLameDelegationClass + DnsClass, + dnsResLameDelegationCounts + Counter32, + dnsResLameDelegationStatus + RowStatus + } + +dnsResLameDelegationSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Source of lame delegation." + ::= { dnsResLameDelegationEntry 1 } + +dnsResLameDelegationName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS name for which lame delegation was received." + ::= { dnsResLameDelegationEntry 2 } + +dnsResLameDelegationClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS class of received lame delegation." + ::= { dnsResLameDelegationEntry 3 } + +dnsResLameDelegationCounts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "How many times this lame delegation has been received." + ::= { dnsResLameDelegationEntry 4 } + +dnsResLameDelegationStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status column for the lame delegation table. Since only + the agent (DNS resolver) creates rows in this table, the + only values that a manager may write to this variable + are active(1) and destroy(6)." + ::= { dnsResLameDelegationEntry 5 } + + +-- Resolver Cache Group + +dnsResCacheStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2), clear(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action for the resolver's cache. + + enabled(1) means that the use of the cache is allowed. + Query operations can return this state. + + disabled(2) means that the cache is not being used. + Query operations can return this state. + + Setting this variable to clear(3) deletes the entire + contents of the resolver's cache, but does not otherwise + change the resolver's state. The status will retain its + previous value from before the clear operation (i.e., + enabled(1) or disabled(2)). The value of clear(3) can + NOT be returned by a query operation." + ::= { dnsResCache 1 } + +dnsResCacheMaxTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum Time-To-Live for RRs in this cache. If the + resolver does not implement a TTL ceiling, the value of + this field should be zero." + ::= { dnsResCache 2 } + +dnsResCacheGoodCaches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of RRs the resolver has cached successfully." + ::= { dnsResCache 3 } + +dnsResCacheBadCaches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of RRs the resolver has refused to cache because + they appear to be dangerous or irrelevant. E.g., RRs + with suspiciously high TTLs, unsolicited root + information, or that just don't appear to be relevant to + the question the resolver asked." + ::= { dnsResCache 4 } + +-- Resolver Cache Table + +dnsResCacheRRTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResCacheRREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about all the resource + records currently in the resolver's cache." + ::= { dnsResCache 5 } + +dnsResCacheRREntry OBJECT-TYPE + SYNTAX DnsResCacheRREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the resolvers's cache. Rows may be created + only by the resolver. SNMP SET requests may be used to + delete rows." + INDEX { dnsResCacheRRName, + dnsResCacheRRClass, + dnsResCacheRRType, + dnsResCacheRRIndex } + ::= { dnsResCacheRRTable 1 } + +DnsResCacheRREntry ::= + SEQUENCE { + dnsResCacheRRName + DnsNameAsIndex, + dnsResCacheRRClass + DnsClass, + dnsResCacheRRType + DnsType, + dnsResCacheRRTTL + DnsTime, + dnsResCacheRRElapsedTTL + DnsTime, + dnsResCacheRRSource + IpAddress, + dnsResCacheRRData + OCTET STRING, + dnsResCacheRRStatus + RowStatus, + dnsResCacheRRIndex + Integer32, + dnsResCacheRRPrettyName + DnsName + } + +dnsResCacheRRName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Owner name of the Resource Record in the cache which is + identified in this row of the table. As described in + RFC-1034, the owner of the record is the domain name + were the RR is found." + REFERENCE + "RFC-1034 section 3.6." + ::= { dnsResCacheRREntry 1 } + +dnsResCacheRRClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS class of the Resource Record in the cache which is + identified in this row of the table." + ::= { dnsResCacheRREntry 2 } + +dnsResCacheRRType OBJECT-TYPE + SYNTAX DnsType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS type of the Resource Record in the cache which is + identified in this row of the table." + ::= { dnsResCacheRREntry 3 } + +dnsResCacheRRTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time-To-Live of RR in DNS cache. This is the initial + TTL value which was received with the RR when it was + originally received." + ::= { dnsResCacheRREntry 4 } + +dnsResCacheRRElapsedTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed seconds since RR was received." + ::= { dnsResCacheRREntry 5 } + +dnsResCacheRRSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Host from which RR was received, 0.0.0.0 if unknown." + ::= { dnsResCacheRREntry 6 } + +dnsResCacheRRData OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "RDATA portion of a cached RR. The value is in the + format defined for the particular DNS class and type of + the resource record." + REFERENCE + "RFC-1035 section 3.2.1." + ::= { dnsResCacheRREntry 7 } + +dnsResCacheRRStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status column for the resolver cache table. Since only + the agent (DNS resolver) creates rows in this table, the + only values that a manager may write to this variable + are active(1) and destroy(6)." + ::= { dnsResCacheRREntry 8 } + +dnsResCacheRRIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value which makes entries in the table unique when the + other index values (dnsResCacheRRName, + dnsResCacheRRClass, and dnsResCacheRRType) do not + provide a unique index." + ::= { dnsResCacheRREntry 9 } + +dnsResCacheRRPrettyName OBJECT-TYPE + SYNTAX DnsName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the RR at this row in the table. This is + identical to the dnsResCacheRRName variable, except that + character case is preserved in this variable, per DNS + conventions." + REFERENCE + "RFC-1035 section 2.3.3." + ::= { dnsResCacheRREntry 10 } + +-- Resolver Negative Cache Group + +dnsResNCacheStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2), clear(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action for the resolver's negative response + cache. + + enabled(1) means that the use of the negative response + cache is allowed. Query operations can return this + state. + disabled(2) means that the negative response cache is + not being used. Query operations can return this state. + + Setting this variable to clear(3) deletes the entire + contents of the resolver's negative response cache. The + status will retain its previous value from before the + clear operation (i.e., enabled(1) or disabled(2)). The + value of clear(3) can NOT be returned by a query + operation." + ::= { dnsResNCache 1 } + +dnsResNCacheMaxTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum Time-To-Live for cached authoritative errors. + If the resolver does not implement a TTL ceiling, the + value of this field should be zero." + ::= { dnsResNCache 2 } + +dnsResNCacheGoodNCaches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of authoritative errors the resolver has cached + successfully." + ::= { dnsResNCache 3 } + +dnsResNCacheBadNCaches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of authoritative errors the resolver would have + liked to cache but was unable to because the appropriate + SOA RR was not supplied or looked suspicious." + REFERENCE + "RFC-1034 section 4.3.4." + ::= { dnsResNCache 4 } + +-- Resolver Negative Cache Table + +dnsResNCacheErrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsResNCacheErrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The resolver's negative response cache. This table + contains information about authoritative errors that + have been cached by the resolver." + ::= { dnsResNCache 5 } + +dnsResNCacheErrEntry OBJECT-TYPE + SYNTAX DnsResNCacheErrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the resolver's negative response cache + table. Only the resolver can create rows. SNMP SET + requests may be used to delete rows." + INDEX { dnsResNCacheErrQName, + dnsResNCacheErrQClass, + dnsResNCacheErrQType, + dnsResNCacheErrIndex } + ::= { dnsResNCacheErrTable 1 } + +DnsResNCacheErrEntry ::= + SEQUENCE { + dnsResNCacheErrQName + DnsNameAsIndex, + dnsResNCacheErrQClass + DnsQClass, + dnsResNCacheErrQType + DnsQType, + dnsResNCacheErrTTL + DnsTime, + dnsResNCacheErrElapsedTTL + DnsTime, + dnsResNCacheErrSource + IpAddress, + dnsResNCacheErrCode + INTEGER, + dnsResNCacheErrStatus + RowStatus, + dnsResNCacheErrIndex + Integer32, + dnsResNCacheErrPrettyName + DnsName + } + +dnsResNCacheErrQName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "QNAME associated with a cached authoritative error." + REFERENCE + "RFC-1034 section 3.7.1." + ::= { dnsResNCacheErrEntry 1 } + +dnsResNCacheErrQClass OBJECT-TYPE + SYNTAX DnsQClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS QCLASS associated with a cached authoritative + error." + ::= { dnsResNCacheErrEntry 2 } + +dnsResNCacheErrQType OBJECT-TYPE + SYNTAX DnsQType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS QTYPE associated with a cached authoritative error." + ::= { dnsResNCacheErrEntry 3 } + +dnsResNCacheErrTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time-To-Live of a cached authoritative error at the time + of the error, it should not be decremented by the number + of seconds since it was received. This should be the + TTL as copied from the MINIMUM field of the SOA that + accompanied the authoritative error, or a smaller value + if the resolver implements a ceiling on negative + response cache TTLs." + REFERENCE + "RFC-1034 section 4.3.4." + ::= { dnsResNCacheErrEntry 4 } + +dnsResNCacheErrElapsedTTL OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed seconds since authoritative error was received." + ::= { dnsResNCacheErrEntry 5 } + +dnsResNCacheErrSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Host which sent the authoritative error, 0.0.0.0 if + unknown." + ::= { dnsResNCacheErrEntry 6 } + +dnsResNCacheErrCode OBJECT-TYPE + SYNTAX INTEGER { nonexistantName(1), noData(2), other(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The authoritative error that has been cached: + + nonexistantName(1) indicates an authoritative name error + (RCODE = 3). + + noData(2) indicates an authoritative response with no + error (RCODE = 0) and no relevant data. + + other(3) indicates some other cached authoritative + error. At present, no such errors are known to exist." + ::= { dnsResNCacheErrEntry 7 } + +dnsResNCacheErrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status column for the resolver negative response cache + table. Since only the agent (DNS resolver) creates rows + in this table, the only values that a manager may write + to this variable are active(1) and destroy(6)." + ::= { dnsResNCacheErrEntry 8 } + +dnsResNCacheErrIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which makes entries in the table unique when the + other index values (dnsResNCacheErrQName, + dnsResNCacheErrQClass, and dnsResNCacheErrQType) do not + provide a unique index." + ::= { dnsResNCacheErrEntry 9 } + +dnsResNCacheErrPrettyName OBJECT-TYPE + SYNTAX DnsName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "QNAME associated with this row in the table. This is + identical to the dnsResNCacheErrQName variable, except + that character case is preserved in this variable, per + DNS conventions." + REFERENCE + "RFC-1035 section 2.3.3." + ::= { dnsResNCacheErrEntry 10 } + + +-- Resolver Optional Counters Group + +dnsResOptCounterReferals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses which were received from servers + redirecting query to another server." + ::= { dnsResOptCounter 1 } + +dnsResOptCounterRetrans OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number requests retransmitted for all reasons." + ::= { dnsResOptCounter 2 } + +dnsResOptCounterNoResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries that were retransmitted because of no + response." + ::= { dnsResOptCounter 3 } + +dnsResOptCounterRootRetrans OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries that were retransmitted that were to + root servers." + ::= { dnsResOptCounter 4 } + +dnsResOptCounterInternals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests internally generated by the + resolver." + ::= { dnsResOptCounter 5 } + +dnsResOptCounterInternalTimeOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests internally generated which timed + out." + ::= { dnsResOptCounter 6 } + + +-- SNMPv2 groups. + +dnsResMIBGroups OBJECT IDENTIFIER ::= { dnsResMIB 2 } + +dnsResConfigGroup OBJECT-GROUP + OBJECTS { dnsResConfigImplementIdent, + dnsResConfigService, + dnsResConfigMaxCnames, + dnsResConfigSbeltAddr, + dnsResConfigSbeltName, + dnsResConfigSbeltRecursion, + dnsResConfigSbeltPref, + dnsResConfigSbeltSubTree, + dnsResConfigSbeltClass, + dnsResConfigSbeltStatus, + dnsResConfigUpTime, + dnsResConfigResetTime } + STATUS current + DESCRIPTION + "A collection of objects providing basic configuration + information for a DNS resolver implementation." + ::= { dnsResMIBGroups 1 } + +dnsResCounterGroup OBJECT-GROUP + OBJECTS { dnsResCounterByOpcodeCode, + dnsResCounterByOpcodeQueries, + dnsResCounterByOpcodeResponses, + dnsResCounterByRcodeCode, + dnsResCounterByRcodeResponses, + dnsResCounterNonAuthDataResps, + dnsResCounterNonAuthNoDataResps, + dnsResCounterMartians, + dnsResCounterRecdResponses, + dnsResCounterUnparseResps, + dnsResCounterFallbacks } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a DNS resolver implementation." + ::= { dnsResMIBGroups 2 } + +dnsResLameDelegationGroup OBJECT-GROUP + OBJECTS { dnsResLameDelegationOverflows, + dnsResLameDelegationSource, + dnsResLameDelegationName, + dnsResLameDelegationClass, + dnsResLameDelegationCounts, + dnsResLameDelegationStatus } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation of + `lame delegation' failures." + ::= { dnsResMIBGroups 3 } + + +dnsResCacheGroup OBJECT-GROUP + OBJECTS { dnsResCacheStatus, + dnsResCacheMaxTTL, + dnsResCacheGoodCaches, + dnsResCacheBadCaches, + dnsResCacheRRName, + dnsResCacheRRClass, + dnsResCacheRRType, + dnsResCacheRRTTL, + dnsResCacheRRElapsedTTL, + dnsResCacheRRSource, + dnsResCacheRRData, + dnsResCacheRRStatus, + dnsResCacheRRIndex, + dnsResCacheRRPrettyName } + STATUS current + DESCRIPTION + "A collection of objects providing access to and control + of a DNS resolver's cache." + ::= { dnsResMIBGroups 4 } + +dnsResNCacheGroup OBJECT-GROUP + OBJECTS { dnsResNCacheStatus, + dnsResNCacheMaxTTL, + dnsResNCacheGoodNCaches, + dnsResNCacheBadNCaches, + dnsResNCacheErrQName, + dnsResNCacheErrQClass, + dnsResNCacheErrQType, + dnsResNCacheErrTTL, + dnsResNCacheErrElapsedTTL, + dnsResNCacheErrSource, + dnsResNCacheErrCode, + dnsResNCacheErrStatus, + dnsResNCacheErrIndex, + dnsResNCacheErrPrettyName } + STATUS current + DESCRIPTION + "A collection of objects providing access to and control + of a DNS resolver's negative response cache." + ::= { dnsResMIBGroups 5 } + +dnsResOptCounterGroup OBJECT-GROUP + OBJECTS { dnsResOptCounterReferals, + dnsResOptCounterRetrans, + dnsResOptCounterNoResponses, + dnsResOptCounterRootRetrans, + dnsResOptCounterInternals, + dnsResOptCounterInternalTimeOuts } + STATUS current + DESCRIPTION + "A collection of objects providing further + instrumentation applicable to many but not all DNS + resolvers." + ::= { dnsResMIBGroups 6 } + + +-- Compliances. + +dnsResMIBCompliances OBJECT IDENTIFIER ::= { dnsResMIB 3 } + +dnsResMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents implementing the DNS + resolver MIB extensions." + MODULE -- This MIB module + MANDATORY-GROUPS { dnsResConfigGroup, dnsResCounterGroup } + GROUP dnsResCacheGroup + DESCRIPTION + "The resolver cache group is mandatory for resolvers that + implement a cache." + GROUP dnsResNCacheGroup + DESCRIPTION + "The resolver negative cache group is mandatory for + resolvers that implement a negative response cache." + GROUP dnsResLameDelegationGroup + DESCRIPTION + "The lame delegation group is unconditionally optional." + GROUP dnsResOptCounterGroup + DESCRIPTION + "The optional counters group is unconditionally + optional." + OBJECT dnsResConfigMaxCnames + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResConfigSbeltName + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResConfigSbeltRecursion + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResConfigSbeltPref + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResConfigReset + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResCacheMaxTTL + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResNCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsResNCacheMaxTTL + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + ::= { dnsResMIBCompliances 1 } + +END diff --git a/mibs/ietf/DNS-SERVER-MIB b/mibs/ietf/DNS-SERVER-MIB new file mode 100644 index 0000000..2463b3e --- /dev/null +++ b/mibs/ietf/DNS-SERVER-MIB @@ -0,0 +1,1079 @@ +DNS-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + mib-2 + FROM RFC1213-MIB + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + IpAddress, Counter32, Gauge32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, DisplayString, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + +dnsServMIB MODULE-IDENTITY + LAST-UPDATED "9401282251Z" + ORGANIZATION "IETF DNS Working Group" + CONTACT-INFO + " Rob Austein + Postal: Epilogue Technology Corporation + 268 Main Street, Suite 283 + North Reading, MA 10864 + US + Tel: +1 617 245 0804 + Fax: +1 617 245 8122 + E-Mail: sra@epilogue.com + + Jon Saperia + Postal: Digital Equipment Corporation + 110 Spit Brook Road + ZKO1-3/H18 + Nashua, NH 03062-2698 + US + Tel: +1 603 881 0480 + Fax: +1 603 881 0120 + Email: saperia@zko.dec.com" + DESCRIPTION + "The MIB module for entities implementing the server side + of the Domain Name System (DNS) protocol." + ::= { dns 1 } + +dns OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to DNS MIB work by the IANA." + ::= { mib-2 32 } + +dnsServMIBObjects OBJECT IDENTIFIER ::= { dnsServMIB 1 } + +-- (Old-style) groups in the DNS server MIB. + +dnsServConfig OBJECT IDENTIFIER ::= { dnsServMIBObjects 1 } +dnsServCounter OBJECT IDENTIFIER ::= { dnsServMIBObjects 2 } +dnsServOptCounter OBJECT IDENTIFIER ::= { dnsServMIBObjects 3 } +dnsServZone OBJECT IDENTIFIER ::= { dnsServMIBObjects 4 } + + +-- Textual conventions + +DnsName ::= TEXTUAL-CONVENTION + -- A DISPLAY-HINT would be nice, but difficult to express. + STATUS current + DESCRIPTION + "A DNS name is a sequence of labels. When DNS names are + displayed, the boundaries between labels are typically + indicated by dots (e.g. `Acme' and `COM' are labels in + the name `Acme.COM'). In the DNS protocol, however, no + such separators are needed because each label is encoded + as a length octet followed by the indicated number of + octets of label. For example, `Acme.COM' is encoded as + the octet sequence { 4, 'A', 'c', 'm', 'e', 3, 'C', 'O', + 'M', 0 } (the final 0 is the length of the name of the + root domain, which appears implicitly at the end of any + DNS name). This MIB uses the same encoding as the DNS + protocol. + + A DnsName must always be a fully qualified name. It is + an error to encode a relative domain name as a DnsName + without first making it a fully qualified name." + REFERENCE + "RFC-1034 section 3.1." + SYNTAX OCTET STRING (SIZE (0..255)) + +DnsNameAsIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is like a DnsName, but is used + as an index componant in tables. Alphabetic characters + in names of this type are restricted to uppercase: the + characters 'a' through 'z' are mapped to the characters + 'A' through 'Z'. This restriction is intended to make + the lexical ordering imposed by SNMP useful when applied + to DNS names. + + Note that it is theoretically possible for a valid DNS + name to exceed the allowed length of an SNMP object + identifer, and thus be impossible to represent in tables + in this MIB that are indexed by DNS name. Sampling of + DNS names in current use on the Internet suggests that + this limit does not pose a serious problem in practice." + REFERENCE + "RFC-1034 section 3.1, RFC-1448 section 4.1." + SYNTAX DnsName + +DnsClass ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to represent the class values + which appear in Resource Records in the DNS. A 16-bit + unsigned integer is used to allow room for new classes + of records to be defined. Existing standard classes are + listed in the DNS specifications." + REFERENCE + "RFC-1035 section 3.2.4." + SYNTAX INTEGER (0..65535) + +DnsType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to represent the type values + which appear in Resource Records in the DNS. A 16-bit + unsigned integer is used to allow room for new record + types to be defined. Existing standard types are listed + in the DNS specifications." + REFERENCE + "RFC-1035 section 3.2.2." + SYNTAX INTEGER (0..65535) + +DnsQClass ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to represent the QClass values + which appear in Resource Records in the DNS. A 16-bit + unsigned integer is used to allow room for new QClass + records to be defined. Existing standard QClasses are + listed in the DNS specification." + REFERENCE + "RFC-1035 section 3.2.5." + SYNTAX INTEGER (0..65535) + +DnsQType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to represent the QType values + which appear in Resource Records in the DNS. A 16-bit + unsigned integer is used to allow room for new QType + records to be defined. Existing standard QTypes are + listed in the DNS specification." + REFERENCE + "RFC-1035 section 3.2.3." + SYNTAX INTEGER (0..65535) + +DnsTime ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "DnsTime values are 32-bit unsigned integers which + measure time in seconds." + REFERENCE + "RFC-1035." + SYNTAX Gauge32 + + +DnsOpCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is used to represent the DNS + OPCODE values used in the header section of DNS + messages. Existing standard OPCODE values are listed in + the DNS specifications." + REFERENCE + "RFC-1035 section 4.1.1." + SYNTAX INTEGER (0..15) + +DnsRespCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to represent the DNS RCODE value + in DNS response messages. Existing standard RCODE + values are listed in the DNS specifications." + REFERENCE + "RFC-1035 section 4.1.1." + SYNTAX INTEGER (0..15) + +-- Server Configuration Group + +dnsServConfigImplementIdent OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation identification string for the DNS + server software in use on the system, for example; + `FNS-2.1'" + ::= { dnsServConfig 1 } + +dnsServConfigRecurs OBJECT-TYPE + SYNTAX INTEGER { available(1), + restricted(2), + unavailable(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This represents the recursion services offered by this + name server. The values that can be read or written + are: + + available(1) - performs recursion on requests from + clients. + + restricted(2) - recursion is performed on requests only + from certain clients, for example; clients on an access + control list. + + unavailable(3) - recursion is not available." + ::= { dnsServConfig 2 } + +dnsServConfigUpTime OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a process), + this value will be the time elapsed since it started. + For software without persistant state, this value will + be zero." + ::= { dnsServConfig 3 } + +dnsServConfigResetTime OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a process) + and supports a `reset' operation (e.g., can be told to + re-read configuration files), this value will be the + time elapsed since the last time the name server was + `reset.' For software that does not have persistence or + does not support a `reset' operation, this value will be + zero." + ::= { dnsServConfig 4 } + +dnsServConfigReset OBJECT-TYPE + SYNTAX INTEGER { other(1), + reset(2), + initializing(3), + running(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action object to reinitialize any persistant name + server state. When set to reset(2), any persistant + name server state (such as a process) is reinitialized as + if the name server had just been started. This value + will never be returned by a read operation. When read, + one of the following values will be returned: + other(1) - server in some unknown state; + initializing(3) - server (re)initializing; + running(4) - server currently running." + ::= { dnsServConfig 5 } + + +-- Server Counter Group + +dnsServCounterAuthAns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries which were authoritatively answered." + ::= { dnsServCounter 2 } + +dnsServCounterAuthNoNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries for which `authoritative no such name' + responses were made." + ::= { dnsServCounter 3 } + +dnsServCounterAuthNoDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries for which `authoritative no such data' + (empty answer) responses were made." + ::= { dnsServCounter 4 } + +dnsServCounterNonAuthDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries which were non-authoritatively + answered (cached data)." + ::= { dnsServCounter 5 } + +dnsServCounterNonAuthNoDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries which were non-authoritatively + answered with no data (empty answer)." + ::= { dnsServCounter 6 } + +dnsServCounterReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests that were referred to other servers." + ::= { dnsServCounter 7 } + +dnsServCounterErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed that were + answered with errors (RCODE values other than 0 and 3)." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsServCounter 8 } + +dnsServCounterRelNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received by the server for names that + are only 1 label long (text form - no internal dots)." + ::= { dnsServCounter 9 } + +dnsServCounterReqRefusals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of DNS requests refused by the server." + ::= { dnsServCounter 10 } + +dnsServCounterReqUnparses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received which were unparseable." + ::= { dnsServCounter 11 } + +dnsServCounterOtherErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests which were aborted for other (local) + server errors." + ::= { dnsServCounter 12 } + +-- DNS Server Counter Table + +dnsServCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsServCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Counter information broken down by DNS class and type." + ::= { dnsServCounter 13 } + +dnsServCounterEntry OBJECT-TYPE + SYNTAX DnsServCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains count information for each DNS class + and type value known to the server. The index allows + management software to to create indices to the table to + get the specific information desired, e.g., number of + queries over UDP for records with type value `A' which + came to this server. In order to prevent an + uncontrolled expansion of rows in the table; if + dnsServCounterRequests is 0 and dnsServCounterResponses + is 0, then the row does not exist and `no such' is + returned when the agent is queried for such instances." + INDEX { dnsServCounterOpCode, + dnsServCounterQClass, + dnsServCounterQType, + dnsServCounterTransport } + ::= { dnsServCounterTable 1 } + +DnsServCounterEntry ::= + SEQUENCE { + dnsServCounterOpCode + DnsOpCode, + dnsServCounterQClass + DnsClass, + dnsServCounterQType + DnsType, + dnsServCounterTransport + INTEGER, + dnsServCounterRequests + Counter32, + dnsServCounterResponses + Counter32 + } + +dnsServCounterOpCode OBJECT-TYPE + SYNTAX DnsOpCode + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DNS OPCODE being counted in this row of the table." + ::= { dnsServCounterEntry 1 } + +dnsServCounterQClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The class of record being counted in this row of the + table." + ::= { dnsServCounterEntry 2 } + +dnsServCounterQType OBJECT-TYPE + SYNTAX DnsType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of record which is being counted in this row in + the table." + ::= { dnsServCounterEntry 3 } + +dnsServCounterTransport OBJECT-TYPE + SYNTAX INTEGER { udp(1), tcp(2), other(3) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value of udp(1) indicates that the queries reported on + this row were sent using UDP. + + A value of tcp(2) indicates that the queries reported on + this row were sent using TCP. + + A value of other(3) indicates that the queries reported + on this row were sent using a transport that was neither + TCP nor UDP." + ::= { dnsServCounterEntry 4 } + +dnsServCounterRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests (queries) that have been recorded in + this row of the table." + ::= { dnsServCounterEntry 5 } + +dnsServCounterResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of responses made by the server since + initialization for the kind of query identified on this + row of the table." + ::= { dnsServCounterEntry 6 } + +-- Server Optional Counter Group + +-- The Server Optional Counter Group is intended for those systems +-- which make distinctions between the different sources of the DNS +-- queries as defined below. +-- +-- Objects in this group are implemented on servers which distinguish +-- between queries which originate from the same host as the server, +-- queries from one of an arbitrary group of hosts that are on an +-- access list defined by the server, and queries from hosts that do +-- not fit either of these descriptions. +-- +-- The objects found in the Server Counter group are totals. Thus if +-- one wanted to identify, for example, the number of queries from +-- `remote' hosts which have been given authoritative answers, one +-- would subtract the current values of ServOptCounterFriendsAuthAns +-- and ServOptCounterSelfAuthAns from servCounterAuthAns. +-- +-- The purpose of these distinctions is to allow for implementations +-- to group queries and responses on this basis. One way in which +-- servers may make these distinctions is by looking at the source IP +-- address of the DNS query. If the source of the query is `your +-- own' then the query should be counted as `yourself' (local host). +-- If the source of the query matches an `access list,' the query +-- came from a friend. What constitutes an `access list' is +-- implementation dependent and could be as simple as a rule that all +-- hosts on the same IP network as the DNS server are classed +-- `friends.' +-- +-- In order to avoid double counting, the following rules apply: +-- +-- 1. No host is in more than one of the three groups defined above. +-- +-- 2. All queries from the local host are always counted in the +-- `yourself' group regardless of what the access list, if any, +-- says. +-- +-- 3. The access list should not define `your friends' in such a way +-- that it includes all hosts. That is, not everybody is your +-- `friend.' + +dnsServOptCounterSelfAuthAns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which + there has been an authoritative answer." + ::= { dnsServOptCounter 1 } + +dnsServOptCounterSelfAuthNoNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which + there has been an authoritative no such name answer + given." + ::= { dnsServOptCounter 2 } + +dnsServOptCounterSelfAuthNoDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which + there has been an authoritative no such data answer + (empty answer) made." + ::= { dnsServOptCounter 3 } + +dnsServOptCounterSelfNonAuthDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which a + non-authoritative answer (cached data) was made." + ::= { dnsServOptCounter 4 } + +dnsServOptCounterSelfNonAuthNoDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host for which a + `non-authoritative, no such data' response was made + (empty answer)." + ::= { dnsServOptCounter 5 } + +dnsServOptCounterSelfReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries the server has processed which + originated from a resolver on the same host and were + referred to other servers." + ::= { dnsServOptCounter 6 } + +dnsServOptCounterSelfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from a resolver on the same host which have + been answered with errors (RCODEs other than 0 and 3)." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsServOptCounter 7 } + +dnsServOptCounterSelfRelNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received for names that are only 1 + label long (text form - no internal dots) the server has + processed which originated from a resolver on the same + host." + ::= { dnsServOptCounter 8 } + +dnsServOptCounterSelfReqRefusals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of DNS requests refused by the server which + originated from a resolver on the same host." + ::= { dnsServOptCounter 9 } + +dnsServOptCounterSelfReqUnparses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received which were unparseable and + which originated from a resolver on the same host." + ::= { dnsServOptCounter 10 } + +dnsServOptCounterSelfOtherErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests which were aborted for other (local) + server errors and which originated on the same host." + ::= { dnsServOptCounter 11 } + +dnsServOptCounterFriendsAuthAns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends which were + authoritatively answered. The definition of friends is + a locally defined matter." + ::= { dnsServOptCounter 12 } + +dnsServOptCounterFriendsAuthNoNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends, for which + authoritative `no such name' responses were made. The + definition of friends is a locally defined matter." + ::= { dnsServOptCounter 13 } + +dnsServOptCounterFriendsAuthNoDataResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends for which + authoritative no such data (empty answer) responses were + made. The definition of friends is a locally defined + matter." + ::= { dnsServOptCounter 14 } + +dnsServOptCounterFriendsNonAuthDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends which were + non-authoritatively answered (cached data). The + definition of friends is a locally defined matter." + ::= { dnsServOptCounter 15 } + +dnsServOptCounterFriendsNonAuthNoDatas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of queries originating from friends which were + non-authoritatively answered with no such data (empty + answer)." + ::= { dnsServOptCounter 16 } + +dnsServOptCounterFriendsReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests which originated from friends that + were referred to other servers. The definition of + friends is a locally defined matter." + ::= { dnsServOptCounter 17 } + +dnsServOptCounterFriendsErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests the server has processed which + originated from friends and were answered with errors + (RCODE values other than 0 and 3). The definition of + friends is a locally defined matter." + REFERENCE + "RFC-1035 section 4.1.1." + ::= { dnsServOptCounter 18 } + +dnsServOptCounterFriendsRelNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received for names from friends that + are only 1 label long (text form - no internal dots) the + server has processed." + ::= { dnsServOptCounter 19 } + +dnsServOptCounterFriendsReqRefusals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of DNS requests refused by the server which were + received from `friends'." + ::= { dnsServOptCounter 20 } + +dnsServOptCounterFriendsReqUnparses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests received which were unparseable and + which originated from `friends'." + ::= { dnsServOptCounter 21 } + +dnsServOptCounterFriendsOtherErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of requests which were aborted for other (local) + server errors and which originated from `friends'." + ::= { dnsServOptCounter 22 } + + +-- Server Zone Group + +-- DNS Management Zone Configuration Table + +-- This table contains zone configuration information. + +dnsServZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsServZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of zones for which this name server provides + information. Each of the zones may be loaded from stable + storage via an implementation-specific mechanism or may + be obtained from another name server via a zone transfer. + + If name server doesn't load any zones, this table is + empty." + ::= { dnsServZone 1 } + +dnsServZoneEntry OBJECT-TYPE + SYNTAX DnsServZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the name server zone table. New rows may be + added either via SNMP or by the name server itself." + INDEX { dnsServZoneName, + dnsServZoneClass } + ::= { dnsServZoneTable 1 } + +DnsServZoneEntry ::= + SEQUENCE { + dnsServZoneName + DnsNameAsIndex, + dnsServZoneClass + DnsClass, + dnsServZoneLastReloadSuccess + DnsTime, + dnsServZoneLastReloadAttempt + DnsTime, + dnsServZoneLastSourceAttempt + IpAddress, + dnsServZoneStatus + RowStatus, + dnsServZoneSerial + Counter32, + dnsServZoneCurrent + TruthValue, + dnsServZoneLastSourceSuccess + IpAddress + } + +dnsServZoneName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS name of the zone described by this row of the table. + This is the owner name of the SOA RR that defines the + top of the zone. This is name is in uppercase: + characters 'a' through 'z' are mapped to 'A' through 'Z' + in order to make the lexical ordering useful." + ::= { dnsServZoneEntry 1 } + +dnsServZoneClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS class of the RRs in this zone." + ::= { dnsServZoneEntry 2 } + +dnsServZoneLastReloadSuccess OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed time in seconds since last successful reload of + this zone." + ::= { dnsServZoneEntry 3 } + +dnsServZoneLastReloadAttempt OBJECT-TYPE + SYNTAX DnsTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed time in seconds since last attempted reload of + this zone." + ::= { dnsServZoneEntry 4 } + +dnsServZoneLastSourceAttempt OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "IP address of host from which most recent zone transfer + of this zone was attempted. This value should match the + value of dnsServZoneSourceSuccess if the attempt was + succcessful. If zone transfer has not been attempted + within the memory of this name server, this value should + be 0.0.0.0." + ::= { dnsServZoneEntry 5 } + +dnsServZoneStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the information represented in this row of + the table." + ::= { dnsServZoneEntry 6 } + +dnsServZoneSerial OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Zone serial number (from the SOA RR) of the zone + represented by this row of the table. If the zone has + not been successfully loaded within the memory of this + name server, the value of this variable is zero." + ::= { dnsServZoneEntry 7 } + +dnsServZoneCurrent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the server's copy of the zone represented by + this row of the table is currently valid. If the zone + has never been successfully loaded or has expired since + it was last succesfully loaded, this variable will have + the value false(2), otherwise this variable will have + the value true(1)." + ::= { dnsServZoneEntry 8 } + +dnsServZoneLastSourceSuccess OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "IP address of host which was the source of the most + recent successful zone transfer for this zone. If + unknown (e.g., zone has never been successfully + transfered) or irrelevant (e.g., zone was loaded from + stable storage), this value should be 0.0.0.0." + ::= { dnsServZoneEntry 9 } + +-- DNS Zone Source Table + +dnsServZoneSrcTable OBJECT-TYPE + SYNTAX SEQUENCE OF DnsServZoneSrcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is a list of IP addresses from which the + server will attempt to load zone information using DNS + zone transfer operations. A reload may occur due to SNMP + operations that create a row in dnsServZoneTable or a + SET to object dnsServZoneReload. This table is only + used when the zone is loaded via zone transfer." + ::= { dnsServZone 2 } + +dnsServZoneSrcEntry OBJECT-TYPE + SYNTAX DnsServZoneSrcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the name server zone source table." + INDEX { dnsServZoneSrcName, + dnsServZoneSrcClass, + dnsServZoneSrcAddr } + ::= { dnsServZoneSrcTable 1 } + +DnsServZoneSrcEntry ::= + SEQUENCE { + dnsServZoneSrcName + DnsNameAsIndex, + dnsServZoneSrcClass + DnsClass, + dnsServZoneSrcAddr + IpAddress, + dnsServZoneSrcStatus + RowStatus + } + +dnsServZoneSrcName OBJECT-TYPE + SYNTAX DnsNameAsIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS name of the zone to which this entry applies." + ::= { dnsServZoneSrcEntry 1 } + +dnsServZoneSrcClass OBJECT-TYPE + SYNTAX DnsClass + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "DNS class of zone to which this entry applies." + ::= { dnsServZoneSrcEntry 2 } + +dnsServZoneSrcAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IP address of name server host from which this zone + might be obtainable." + ::= { dnsServZoneSrcEntry 3 } + +dnsServZoneSrcStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the information represented in this row of + the table." + ::= { dnsServZoneSrcEntry 4 } + + +-- SNMPv2 groups. + +dnsServMIBGroups OBJECT IDENTIFIER ::= { dnsServMIB 2 } + +dnsServConfigGroup OBJECT-GROUP + OBJECTS { dnsServConfigImplementIdent, + dnsServConfigRecurs, + dnsServConfigUpTime, + dnsServConfigResetTime, + dnsServConfigReset } + STATUS current + DESCRIPTION + "A collection of objects providing basic configuration + control of a DNS name server." + ::= { dnsServMIBGroups 1 } + +dnsServCounterGroup OBJECT-GROUP + OBJECTS { dnsServCounterAuthAns, + dnsServCounterAuthNoNames, + dnsServCounterAuthNoDataResps, + dnsServCounterNonAuthDatas, + dnsServCounterNonAuthNoDatas, + dnsServCounterReferrals, + dnsServCounterErrors, + dnsServCounterRelNames, + dnsServCounterReqRefusals, + dnsServCounterReqUnparses, + dnsServCounterOtherErrors, + dnsServCounterOpCode, + dnsServCounterQClass, + dnsServCounterQType, + dnsServCounterTransport, + dnsServCounterRequests, + dnsServCounterResponses } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a DNS name server." + ::= { dnsServMIBGroups 2 } + +dnsServOptCounterGroup OBJECT-GROUP + OBJECTS { dnsServOptCounterSelfAuthAns, + dnsServOptCounterSelfAuthNoNames, + dnsServOptCounterSelfAuthNoDataResps, + dnsServOptCounterSelfNonAuthDatas, + dnsServOptCounterSelfNonAuthNoDatas, + dnsServOptCounterSelfReferrals, + dnsServOptCounterSelfErrors, + dnsServOptCounterSelfRelNames, + dnsServOptCounterSelfReqRefusals, + dnsServOptCounterSelfReqUnparses, + dnsServOptCounterSelfOtherErrors, + dnsServOptCounterFriendsAuthAns, + dnsServOptCounterFriendsAuthNoNames, + dnsServOptCounterFriendsAuthNoDataResps, + dnsServOptCounterFriendsNonAuthDatas, + dnsServOptCounterFriendsNonAuthNoDatas, + dnsServOptCounterFriendsReferrals, + dnsServOptCounterFriendsErrors, + dnsServOptCounterFriendsRelNames, + dnsServOptCounterFriendsReqRefusals, + dnsServOptCounterFriendsReqUnparses, + dnsServOptCounterFriendsOtherErrors } + STATUS current + DESCRIPTION + "A collection of objects providing extended + instrumentation of a DNS name server." + ::= { dnsServMIBGroups 3 } + +dnsServZoneGroup OBJECT-GROUP + OBJECTS { dnsServZoneName, + dnsServZoneClass, + dnsServZoneLastReloadSuccess, + dnsServZoneLastReloadAttempt, + dnsServZoneLastSourceAttempt, + dnsServZoneLastSourceSuccess, + dnsServZoneStatus, + dnsServZoneSerial, + dnsServZoneCurrent, + dnsServZoneSrcName, + dnsServZoneSrcClass, + dnsServZoneSrcAddr, + dnsServZoneSrcStatus } + STATUS current + DESCRIPTION + "A collection of objects providing configuration control + of a DNS name server which loads authoritative zones." + ::= { dnsServMIBGroups 4 } + +-- Compliances. + +dnsServMIBCompliances OBJECT IDENTIFIER ::= { dnsServMIB 3 } + +dnsServMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents implementing the DNS + name server MIB extensions." + MODULE -- This MIB module + MANDATORY-GROUPS { dnsServConfigGroup, dnsServCounterGroup } + GROUP dnsServOptCounterGroup + DESCRIPTION + "The server optional counter group is unconditionally + optional." + GROUP dnsServZoneGroup + DESCRIPTION + "The server zone group is mandatory for any name server + that acts as an authoritative server for any DNS zone." + OBJECT dnsServConfigRecurs + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + OBJECT dnsServConfigReset + MIN-ACCESS read-only + DESCRIPTION + "This object need not be writable." + ::= { dnsServMIBCompliances 1 } + +END diff --git a/mibs/ietf/DOCS-BPI-MIB b/mibs/ietf/DOCS-BPI-MIB new file mode 100644 index 0000000..76915bf --- /dev/null +++ b/mibs/ietf/DOCS-BPI-MIB @@ -0,0 +1,1625 @@ +DOCS-BPI-MIB DEFINITIONS ::= BEGIN + +IMPORTS +MODULE-IDENTITY, OBJECT-TYPE, +Integer32, Counter32, IpAddress +FROM SNMPv2-SMI +DisplayString, MacAddress, RowStatus, TruthValue, DateAndTime +FROM SNMPv2-TC +OBJECT-GROUP, MODULE-COMPLIANCE +FROM SNMPv2-CONF +ifIndex +FROM IF-MIB +docsIfMib, docsIfCmServiceId, docsIfCmtsServiceId +FROM DOCS-IF-MIB +; + +docsBpiMIB MODULE-IDENTITY +LAST-UPDATED "200103130000Z" +ORGANIZATION "IETF IPCDN Working Group" +CONTACT-INFO "Rich Woundy + Postal: Cisco Systems + 250 Apollo Drive + Chelmsford, MA 01824 U.S.A. + Tel: +1 978 244 8000 + E-mail: rwoundy@cisco.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, rwoundy@cisco.com + Andrew Valentine, a.valentine@eu.hns.com" +DESCRIPTION +"This is the MIB Module for the DOCSIS Baseline Privacy Interface +(BPI) at cable modems (CMs) and cable modem termination systems +(CMTSs). CableLabs requires the implementation of this MIB in +DOCSIS 1.0 cable modems that implement the Baseline Privacy +Interface, as a prerequisite for DOCSIS 1.0 certification." + +REVISION "200103130000Z" +DESCRIPTION +"Version published as RFC 3083." + +REVISION "200011031930Z" +DESCRIPTION +"Modified by Richard Woundy to fix problems identified by the MIB + + +doctor. I marked docsBpiCmtsDefaultAuthGraceTime and +docsBpiCmtsDefaultTEKGraceTime as obsolete objects, to prevent OID +reassignment. Several object descriptions were also corrected." + +REVISION "200002161930Z" +DESCRIPTION +"Initial version. +CableLabs requires the implementation of this MIB in certified DOCSIS +1.0 cable modems implementing the Baseline Privacy Interface, per +DOCSIS 1.0 engineering change notice oss-n-99027." +::= { docsIfMib 5 } + +docsBpiMIBObjects OBJECT IDENTIFIER ::= { docsBpiMIB 1 } + +-- Cable Modem Group + +docsBpiCmObjects OBJECT IDENTIFIER ::= { docsBpiMIBObjects 1 } + +-- +-- The BPI base and authorization table for CMs, indexed by ifIndex +-- + +docsBpiCmBaseTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmBaseEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the basic and authorization-related Baseline +Privacy attributes of each CM MAC interface." +::= { docsBpiCmObjects 1 } + +docsBpiCmBaseEntry OBJECT-TYPE +SYNTAX DocsBpiCmBaseEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing attributes of one CM MAC +interface. An entry in this table exists for each ifEntry with an +ifType of docsCableMaclayer(127)." +INDEX { ifIndex } +::= { docsBpiCmBaseTable 1 } + +DocsBpiCmBaseEntry ::= SEQUENCE { +docsBpiCmPrivacyEnable TruthValue, +docsBpiCmPublicKey OCTET STRING, +docsBpiCmAuthState INTEGER, +docsBpiCmAuthKeySequenceNumber Integer32, +docsBpiCmAuthExpires DateAndTime, + + +docsBpiCmAuthReset TruthValue, +docsBpiCmAuthGraceTime Integer32, +docsBpiCmTEKGraceTime Integer32, +docsBpiCmAuthWaitTimeout Integer32, +docsBpiCmReauthWaitTimeout Integer32, +docsBpiCmOpWaitTimeout Integer32, +docsBpiCmRekeyWaitTimeout Integer32, +docsBpiCmAuthRejectWaitTimeout Integer32, +docsBpiCmAuthRequests Counter32, +docsBpiCmAuthReplies Counter32, +docsBpiCmAuthRejects Counter32, +docsBpiCmAuthInvalids Counter32, +docsBpiCmAuthRejectErrorCode INTEGER, +docsBpiCmAuthRejectErrorString DisplayString, +docsBpiCmAuthInvalidErrorCode INTEGER, +docsBpiCmAuthInvalidErrorString DisplayString +} + +docsBpiCmPrivacyEnable OBJECT-TYPE +SYNTAX TruthValue +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"This object identifies whether this CM is provisioned to run +Baseline Privacy. This is analogous to the presence (or absence) +of the Baseline Privacy Configuration Setting option. The status +of each individual SID with respect to Baseline Privacy is +captured in the docsBpiCmTEKPrivacyEnable object." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1." +::= { docsBpiCmBaseEntry 1 } + +docsBpiCmPublicKey OBJECT-TYPE +SYNTAX OCTET STRING (SIZE (74 | 106 | 140 | 270)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is a DER-encoded RSAPublicKey ASN.1 type +string, as defined in the RSA Encryption Standard (PKCS #1) [22], +corresponding to the public key of the CM. The 74, 106, 140, and +270 byte key encoding lengths correspond to 512 bit, 768 bit, 1024 +bit, and 2048 public moduli respectively." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.2.4." +::= { docsBpiCmBaseEntry 2 } + +docsBpiCmAuthState OBJECT-TYPE +SYNTAX INTEGER { + + + authWait(2), + authorized(3), + reauthWait(4), + authRejectWait(5) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the state of the CM authorization +FSM. The start state indicates that FSM is in its initial state." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.2.1." +::= { docsBpiCmBaseEntry 3 } + +docsBpiCmAuthKeySequenceNumber OBJECT-TYPE +SYNTAX Integer32 (0..15) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the authorization key sequence number +for this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.2 +and 4.2.2.10." +::= { docsBpiCmBaseEntry 4 } + +docsBpiCmAuthExpires OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time when the current +authorization for this FSM expires. If the CM does not have an active +authorization, then the value is of the expiration date and time of +the last active authorization." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.2 +and 4.2.2.9." +::= { docsBpiCmBaseEntry 5 } + +docsBpiCmAuthReset OBJECT-TYPE +SYNTAX TruthValue +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"Setting this object to TRUE generates a Reauthorize event in the +authorization FSM. Reading this object always returns FALSE." +REFERENCE + + +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.2.3.4." +::= { docsBpiCmBaseEntry 6 } + +docsBpiCmAuthGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the grace time for an authorization key. +A CM is expected to start trying to get a new authorization key +beginning AuthGraceTime seconds before the authorization key actually +expires." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.3." +::= { docsBpiCmBaseEntry 7 } + +docsBpiCmTEKGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the grace time for a TEK. A CM is +expected to start trying to get a new TEK beginning TEKGraceTime +seconds before the TEK actually expires." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.6." +::= { docsBpiCmBaseEntry 8 } + +docsBpiCmAuthWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..30) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Authorize Wait Timeout." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.1." +::= { docsBpiCmBaseEntry 9 } + +docsBpiCmReauthWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..30) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Reauthorize Wait Timeout in seconds." + + +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.2." +::= { docsBpiCmBaseEntry 10 } + +docsBpiCmOpWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..10) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Operational Wait Timeout in seconds." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.4." +::= { docsBpiCmBaseEntry 11 } + +docsBpiCmRekeyWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..10) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Rekey Wait Timeout in seconds." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.5." +::= { docsBpiCmBaseEntry 12 } + +docsBpiCmAuthRejectWaitTimeout OBJECT-TYPE +SYNTAX Integer32 (1..600) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Authorization Reject Wait Timeout in +seconds." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.7." +::= { docsBpiCmBaseEntry 13 } + +docsBpiCmAuthRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has +transmitted an Authorization Request message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.1." +::= { docsBpiCmBaseEntry 14 } + + +docsBpiCmAuthReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has +received an Authorization Reply message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.2." +::= { docsBpiCmBaseEntry 15 } + +docsBpiCmAuthRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has +received an Authorization Reject message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.3." +::= { docsBpiCmBaseEntry 16 } + +docsBpiCmAuthInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has +received an Authorization Invalid message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.7." +::= { docsBpiCmBaseEntry 17 } + +docsBpiCmAuthRejectErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unauthorizedSid(4) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Authorization Reject message received by +the CM. This has value unknown(2) if the last Error-Code value was +0, and none(1) if no Authorization Reject message has been received +since reboot." + + +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.3 +and 4.2.2.16." +::= { docsBpiCmBaseEntry 18 } + +docsBpiCmAuthRejectErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent +Authorization Reject message received by the CM. This is a zero +length string if no Authorization Reject message has been received +since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.3 +and 4.2.2.6." +::= { docsBpiCmBaseEntry 19 } + +docsBpiCmAuthInvalidErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unsolicited(5), + invalidKeySequence(6), + keyRequestAuthenticationFailure(7) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Authorization Invalid message received by +the CM. This has value unknown(2) if the last Error-Code value was +0, and none(1) if no Authorization Invalid message has been received +since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.7 +and 4.2.2.16." +::= { docsBpiCmBaseEntry 20 } + +docsBpiCmAuthInvalidErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent +Authorization Invalid message received by the CM. This is a zero + + +length string if no Authorization Invalid message has been received +since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.7 +and 4.2.2.6." +::= { docsBpiCmBaseEntry 21 } + +-- +-- The CM TEK Table, indexed by ifIndex and SID +-- + +docsBpiCmTEKTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmTEKEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the attributes of each CM Traffic Encryption Key +(TEK) association. The CM maintains (no more than) one TEK association +per SID per CM MAC interface." +::= { docsBpiCmObjects 2 } + +docsBpiCmTEKEntry OBJECT-TYPE +SYNTAX DocsBpiCmTEKEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing the TEK association attributes +of one SID. The CM MUST create one entry per unicast SID, regardless +of whether the SID was obtained from a Registration Response message, +or from an Authorization Reply message." +INDEX { ifIndex, docsIfCmServiceId } +::= { docsBpiCmTEKTable 1 } + +DocsBpiCmTEKEntry ::= SEQUENCE { +docsBpiCmTEKPrivacyEnable TruthValue, +docsBpiCmTEKState INTEGER, +docsBpiCmTEKExpiresOld DateAndTime, +docsBpiCmTEKExpiresNew DateAndTime, +docsBpiCmTEKKeyRequests Counter32, +docsBpiCmTEKKeyReplies Counter32, +docsBpiCmTEKKeyRejects Counter32, +docsBpiCmTEKInvalids Counter32, +docsBpiCmTEKAuthPends Counter32, +docsBpiCmTEKKeyRejectErrorCode INTEGER, +docsBpiCmTEKKeyRejectErrorString DisplayString, +docsBpiCmTEKInvalidErrorCode INTEGER, +docsBpiCmTEKInvalidErrorString DisplayString +} + + +docsBpiCmTEKPrivacyEnable OBJECT-TYPE +SYNTAX TruthValue +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"This object identifies whether this SID is provisioned to run +Baseline Privacy. This is analogous to enabling Baseline Privacy on +a provisioned SID using the Class-of-Service Privacy Enable option. +Baseline Privacy is not effectively enabled for any SID unless +Baseline Privacy is enabled for the CM, which is managed via the +docsBpiCmPrivacyEnable object." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.2." +::= { docsBpiCmTEKEntry 1 } + +docsBpiCmTEKState OBJECT-TYPE +SYNTAX INTEGER { + start(1), + opWait(2), + opReauthWait(3), + operational(4), + rekeyWait(5), + rekeyReauthWait(6) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the state of the indicated TEK FSM. +The start(1) state indicates that FSM is in its initial state." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.3.1." +::= { docsBpiCmTEKEntry 2 } + +docsBpiCmTEKExpiresOld OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time for expiration +of the immediate predecessor of the most recent TEK for this FSM. +If this FSM has only one TEK, then the value is the time of activation +of this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.5 and +4.2.2.9." +::= { docsBpiCmTEKEntry 3 } + +docsBpiCmTEKExpiresNew OBJECT-TYPE + + +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time for expiration +of the most recent TEK for this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.5 and +4.2.2.9." +::= { docsBpiCmTEKEntry 4 } + +docsBpiCmTEKKeyRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has transmitted +a Key Request message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.4." +::= { docsBpiCmTEKEntry 5 } + +docsBpiCmTEKKeyReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has received +a Key Reply message, including a message whose authentication failed." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.5." +::= { docsBpiCmTEKEntry 6 } + +docsBpiCmTEKKeyRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CM has received +a Key Reject message, including a message whose authentication failed." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.6." +::= { docsBpiCmTEKEntry 7 } + +docsBpiCmTEKInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current + + +DESCRIPTION +"The value of this object is the count of times the CM has received +a TEK Invalid message, including a message whose authentication failed." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.8." +::= { docsBpiCmTEKEntry 8 } + +docsBpiCmTEKAuthPends OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times an Authorization +Pending (Auth Pend) event occurred in this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.3.3.3." +::= { docsBpiCmTEKEntry 9 } + +docsBpiCmTEKKeyRejectErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedSid(4) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Key Reject message received by the CM. This +has value unknown(2) if the last Error-Code value was 0, and none(1) +if no Key Reject message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.6 +and 4.2.2.16." +::= { docsBpiCmTEKEntry 10 } + +docsBpiCmTEKKeyRejectErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent Key +Reject message received by the CM. This is a zero length string if no +Key Reject message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.6 +and 4.2.2.6." +::= { docsBpiCmTEKEntry 11 } + + +docsBpiCmTEKInvalidErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + invalidKeySequence(6) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent TEK Invalid message received by the CM. +This has value unknown(2) if the last Error-Code value was 0, and +none(1) if no TEK Invalid message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.8 +and 4.2.2.16." +::= { docsBpiCmTEKEntry 12 } + +docsBpiCmTEKInvalidErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent TEK +Invalid message received by the CM. This is a zero length string if +no TEK Invalid message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.8 +and 4.2.2.6." +::= { docsBpiCmTEKEntry 13 } + +-- Cable Modem Termination System Group + +docsBpiCmtsObjects OBJECT IDENTIFIER ::= { docsBpiMIBObjects 2 } + +-- +-- The BPI base table for CMTSs, indexed by ifIndex +-- + +docsBpiCmtsBaseTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmtsBaseEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the basic Baseline Privacy attributes of each +CMTS MAC interface." +::= { docsBpiCmtsObjects 1 } + + + +docsBpiCmtsBaseEntry OBJECT-TYPE +SYNTAX DocsBpiCmtsBaseEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing attributes of one CMTS MAC +interface. An entry in this table exists for each ifEntry with an +ifType of docsCableMaclayer(127)." +INDEX { ifIndex } +::= { docsBpiCmtsBaseTable 1 } + +DocsBpiCmtsBaseEntry ::= SEQUENCE { +docsBpiCmtsDefaultAuthLifetime Integer32, +docsBpiCmtsDefaultTEKLifetime Integer32, +docsBpiCmtsDefaultAuthGraceTime Integer32, +docsBpiCmtsDefaultTEKGraceTime Integer32, +docsBpiCmtsAuthRequests Counter32, +docsBpiCmtsAuthReplies Counter32, +docsBpiCmtsAuthRejects Counter32, +docsBpiCmtsAuthInvalids Counter32 +} + +docsBpiCmtsDefaultAuthLifetime OBJECT-TYPE +SYNTAX Integer32 (1..6048000) +UNITS "seconds" +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"The value of this object is the default lifetime, in seconds, the +CMTS assigns to a new authorization key." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.2." +::= { docsBpiCmtsBaseEntry 1 } + +docsBpiCmtsDefaultTEKLifetime OBJECT-TYPE +SYNTAX Integer32 (1..604800) +UNITS "seconds" +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"The value of this object is the default lifetime, in seconds, the +CMTS assigns to a new Traffic Encryption Key (TEK)." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.2." +::= { docsBpiCmtsBaseEntry 2 } + +-- Note: the following two objects have been obsoleted from this MIB. + + + +docsBpiCmtsDefaultAuthGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-write +STATUS obsolete +DESCRIPTION +"This object was obsoleted because the provisioning system, not the CMTS, +manages the authorization key grace time for DOCSIS CMs." +::= { docsBpiCmtsBaseEntry 3 } + +docsBpiCmtsDefaultTEKGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-write +STATUS obsolete +DESCRIPTION +"This object was obsoleted because the provisioning system, not the CMTS, +manages the Traffic Encryption Key (TEK) grace time for DOCSIS CMs." +::= { docsBpiCmtsBaseEntry 4 } + +docsBpiCmtsAuthRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +received an Authorization Request message from any CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.1." +::= { docsBpiCmtsBaseEntry 5 } + +docsBpiCmtsAuthReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Reply message to any CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.2." +::= { docsBpiCmtsBaseEntry 6 } + +docsBpiCmtsAuthRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has + + +transmitted an Authorization Reject message to any CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.3." +::= { docsBpiCmtsBaseEntry 7 } + +docsBpiCmtsAuthInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Invalid message to any CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.7." +::= { docsBpiCmtsBaseEntry 8 } + +-- +-- The CMTS Authorization Table, indexed by ifIndex and CM MAC address +-- + +docsBpiCmtsAuthTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmtsAuthEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the attributes of each CM authorization +association. The CMTS maintains one authorization association with +each Baseline Privacy-enabled CM on each CMTS MAC interface." +::= { docsBpiCmtsObjects 2 } + +docsBpiCmtsAuthEntry OBJECT-TYPE +SYNTAX DocsBpiCmtsAuthEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing attributes of one +authorization association. The CMTS MUST create one entry per CM per +MAC interface, based on the receipt of an Authorization Request +message, and MUST not delete the entry before the CM authorization +permanently expires." +INDEX { ifIndex, docsBpiCmtsAuthCmMacAddress } +::= { docsBpiCmtsAuthTable 1 } + +DocsBpiCmtsAuthEntry ::= SEQUENCE { +docsBpiCmtsAuthCmMacAddress MacAddress, +docsBpiCmtsAuthCmPublicKey OCTET STRING, +docsBpiCmtsAuthCmKeySequenceNumber Integer32, +docsBpiCmtsAuthCmExpires DateAndTime, + + +docsBpiCmtsAuthCmLifetime Integer32, +docsBpiCmtsAuthCmGraceTime Integer32, +docsBpiCmtsAuthCmReset INTEGER, +docsBpiCmtsAuthCmRequests Counter32, +docsBpiCmtsAuthCmReplies Counter32, +docsBpiCmtsAuthCmRejects Counter32, +docsBpiCmtsAuthCmInvalids Counter32, +docsBpiCmtsAuthRejectErrorCode INTEGER, +docsBpiCmtsAuthRejectErrorString DisplayString, +docsBpiCmtsAuthInvalidErrorCode INTEGER, +docsBpiCmtsAuthInvalidErrorString DisplayString +} + +docsBpiCmtsAuthCmMacAddress OBJECT-TYPE +SYNTAX MacAddress +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"The value of this object is the physical address of the CM to +which the authorization association applies." +::= { docsBpiCmtsAuthEntry 1 } + +docsBpiCmtsAuthCmPublicKey OBJECT-TYPE +SYNTAX OCTET STRING + (SIZE (0 | 74 | 106 | 140 | 270)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is a DER-encoded RSAPublicKey ASN.1 type +string, as defined in the RSA Encryption Standard (PKCS #1) [22], +corresponding to the public key of the CM. The 74, 106, 140, and +270 byte key encoding lengths correspond to 512 bit, 768 bit, 1024 +bit, and 2048 public moduli respectively. This is a zero-length +string if the CMTS does not retain the public key." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.2.4." +::= { docsBpiCmtsAuthEntry 2 } + +docsBpiCmtsAuthCmKeySequenceNumber OBJECT-TYPE +SYNTAX Integer32 (0..15) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the authorization key sequence number +for this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.2 +and 4.2.2.10." + + +::= { docsBpiCmtsAuthEntry 3 } + +docsBpiCmtsAuthCmExpires OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time when the current +authorization for this CM expires. If this CM does not have an +active authorization, then the value is of the expiration date and +time of the last active authorization." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.2 +and 4.2.2.9." +::= { docsBpiCmtsAuthEntry 4 } + +docsBpiCmtsAuthCmLifetime OBJECT-TYPE +SYNTAX Integer32 (1..6048000) +UNITS "seconds" +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"The value of this object is the lifetime, in seconds, the CMTS +assigns to an authorization key for this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.2 +and Appendix A.2." +::= { docsBpiCmtsAuthEntry 5 } + +docsBpiCmtsAuthCmGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the grace time for the authorization key +in seconds. The CM is expected to start trying to get a new +authorization key beginning AuthGraceTime seconds before the +authorization key actually expires." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.3." +::= { docsBpiCmtsAuthEntry 6 } + +docsBpiCmtsAuthCmReset OBJECT-TYPE +SYNTAX INTEGER { + noResetRequested(1), + invalidateAuth(2), + sendAuthInvalid(3), + + + invalidateTeks(4) + } +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"Setting this object to invalidateAuth(2) causes the CMTS to +invalidate the current CM authorization key, but not to transmit an +Authorization Invalid message nor to invalidate unicast TEKs. Setting +this object to sendAuthInvalid(3) causes the CMTS to invalidate the +current CM authorization key, and to transmit an Authorization Invalid +message to the CM, but not to invalidate unicast TEKs. Setting this +object to invalidateTeks(4) causes the CMTS to invalidate the current +CM authorization key, to transmit an Authorization Invalid message to +the CM, and to invalidate all unicast TEKs associated with this CM +authorization. Reading this object returns the most-recently-set value +of this object, or returns noResetRequested(1) if the object has not +been set since the last CMTS reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.1.2.3.4, +4.1.2.3.5, and 4.1.3.3.5." +::= { docsBpiCmtsAuthEntry 7 } + +docsBpiCmtsAuthCmRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +received an Authorization Request message from this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.1." +::= { docsBpiCmtsAuthEntry 8 } + +docsBpiCmtsAuthCmReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Reply message to this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.2." +::= { docsBpiCmtsAuthEntry 9 } + +docsBpiCmtsAuthCmRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current + + +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Reject message to this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.3." +::= { docsBpiCmtsAuthEntry 10 } + +docsBpiCmtsAuthCmInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted an Authorization Invalid message to this CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.7." +::= { docsBpiCmtsAuthEntry 11 } + +docsBpiCmtsAuthRejectErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unauthorizedSid(4) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Authorization Reject message transmitted to +the CM. This has value unknown(2) if the last Error-Code value was +0, and none(1) if no Authorization Reject message has been transmitted +to the CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.3 +and 4.2.2.16." +::= { docsBpiCmtsAuthEntry 12 } + +docsBpiCmtsAuthRejectErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent +Authorization Reject message transmitted to the CM. This is a +zero length string if no Authorization Reject message has been +transmitted to the CM." +REFERENCE + + +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.3 +and 4.2.2.6." +::= { docsBpiCmtsAuthEntry 13 } + +docsBpiCmtsAuthInvalidErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unsolicited(5), + invalidKeySequence(6), + keyRequestAuthenticationFailure(7) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in most recent Authorization Invalid message transmitted +to the CM. This has value unknown(2) if the last Error-Code value was +0, and none(1) if no Authorization Invalid message has been +transmitted to the CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.7 +and 4.2.2.16." +::= { docsBpiCmtsAuthEntry 14 } + +docsBpiCmtsAuthInvalidErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in most recent +Authorization Invalid message transmitted to the CM. This is a +zero length string if no Authorization Invalid message has been +transmitted to the CM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.7 +and 4.2.2.6." +::= { docsBpiCmtsAuthEntry 15 } + +-- +-- The CMTS TEK Table, indexed by ifIndex and SID +-- + +docsBpiCmtsTEKTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiCmtsTEKEntry +MAX-ACCESS not-accessible +STATUS current + + +DESCRIPTION +"This table describes the attributes of each CM Traffic Encryption +Key (TEK) association. The CMTS maintains one TEK association per BPI +SID on each CMTS MAC interface." +::= { docsBpiCmtsObjects 3 } + +docsBpiCmtsTEKEntry OBJECT-TYPE +SYNTAX DocsBpiCmtsTEKEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing attributes of one TEK +association on a particular CMTS MAC interface. The CMTS MUST create +one entry per SID per MAC interface, based on the receipt of an +Key Request message, and MUST not delete the entry before the CM +authorization for the SID permanently expires." +INDEX { ifIndex, docsIfCmtsServiceId } +::= { docsBpiCmtsTEKTable 1 } + +DocsBpiCmtsTEKEntry ::= SEQUENCE { +docsBpiCmtsTEKLifetime Integer32, +docsBpiCmtsTEKGraceTime Integer32, +docsBpiCmtsTEKExpiresOld DateAndTime, +docsBpiCmtsTEKExpiresNew DateAndTime, +docsBpiCmtsTEKReset TruthValue, +docsBpiCmtsKeyRequests Counter32, +docsBpiCmtsKeyReplies Counter32, +docsBpiCmtsKeyRejects Counter32, +docsBpiCmtsTEKInvalids Counter32, +docsBpiCmtsKeyRejectErrorCode INTEGER, +docsBpiCmtsKeyRejectErrorString DisplayString, +docsBpiCmtsTEKInvalidErrorCode INTEGER, +docsBpiCmtsTEKInvalidErrorString DisplayString +} + +docsBpiCmtsTEKLifetime OBJECT-TYPE +SYNTAX Integer32 (1..604800) +UNITS "seconds" +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"The value of this object is the lifetime, in seconds, the CMTS assigns +to keys for this TEK association." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.5 +and Appendix A.2." +::= { docsBpiCmtsTEKEntry 1 } + + + +docsBpiCmtsTEKGraceTime OBJECT-TYPE +SYNTAX Integer32 (1..1800) +UNITS "seconds" +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the grace time for the TEK in seconds. +The CM is expected to start trying to get a new TEK beginning +TEKGraceTime seconds before the TEK actually expires." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Appendix A.1.1.1.6." +::= { docsBpiCmtsTEKEntry 2 } + +docsBpiCmtsTEKExpiresOld OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time for expiration +of the immediate predecessor of the most recent TEK for this FSM. +If this FSM has only one TEK, then the value is the time of activation +of this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.5 +and 4.2.2.9." +::= { docsBpiCmtsTEKEntry 3 } + +docsBpiCmtsTEKExpiresNew OBJECT-TYPE +SYNTAX DateAndTime +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the actual clock time for expiration +of the most recent TEK for this FSM." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.5 +and 4.2.2.9." +::= { docsBpiCmtsTEKEntry 4 } + +docsBpiCmtsTEKReset OBJECT-TYPE +SYNTAX TruthValue +MAX-ACCESS read-write +STATUS current +DESCRIPTION +"Setting this object to TRUE causes the CMTS to invalidate the current +active TEK(s) (plural due to key transition periods), and to generate +a new TEK for the associated SID; the CMTS MAY also generate an +unsolicited TEK Invalid message, to optimize the TEK synchronization + + +between the CMTS and the CM. Reading this object always returns +FALSE." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.1.3.3.5." +::= { docsBpiCmtsTEKEntry 5 } + +docsBpiCmtsKeyRequests OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +received a Key Request message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.4." +::= { docsBpiCmtsTEKEntry 6 } + +docsBpiCmtsKeyReplies OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted a Key Reply message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.5." +::= { docsBpiCmtsTEKEntry 7 } + +docsBpiCmtsKeyRejects OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted a Key Reject message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.6." +::= { docsBpiCmtsTEKEntry 8 } + +docsBpiCmtsTEKInvalids OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the count of times the CMTS has +transmitted a TEK Invalid message." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Section 4.2.1.8." + + +::= { docsBpiCmtsTEKEntry 9 } + +docsBpiCmtsKeyRejectErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedSid(4) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in the most recent Key Reject message sent in response to +a Key Request for this BPI SID. This has value unknown(2) if the last +Error-Code value was 0, and none(1) if no Key Reject message has been +received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.6 +and 4.2.2.16." +::= { docsBpiCmtsTEKEntry 10 } + +docsBpiCmtsKeyRejectErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in the most recent +Key Reject message sent in response to a Key Request for this BPI +SID. This is a zero length string if no Key Reject message has been +received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.6 +and 4.2.2.6." +::= { docsBpiCmtsTEKEntry 11 } + +docsBpiCmtsTEKInvalidErrorCode OBJECT-TYPE +SYNTAX INTEGER { + none(1), + unknown(2), + invalidKeySequence(6) + } +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the enumerated description of the +Error-Code in the most recent TEK Invalid message sent in association +with this BPI SID. This has value unknown(2) if the last Error-Code +value was 0, and none(1) if no TEK Invalid message has been received + + +since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.8 +and 4.2.2.16." +::= { docsBpiCmtsTEKEntry 12 } + +docsBpiCmtsTEKInvalidErrorString OBJECT-TYPE +SYNTAX DisplayString (SIZE (0..128)) +MAX-ACCESS read-only +STATUS current +DESCRIPTION +"The value of this object is the Display-String in the most recent TEK +Invalid message sent in association with this BPI SID. This is a zero +length string if no TEK Invalid message has been received since reboot." +REFERENCE +"DOCSIS Baseline Privacy Interface Specification, Sections 4.2.1.8 +and 4.2.2.6." +::= { docsBpiCmtsTEKEntry 13 } + +-- +-- The CMTS Multicast Control Group +-- + +docsBpiMulticastControl OBJECT IDENTIFIER ::= { docsBpiCmtsObjects 4 } + +-- +-- The CMTS IP Multicast Mapping Table, indexed by IP multicast +-- address and prefix, and by ifindex +-- + +docsBpiIpMulticastMapTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiIpMulticastMapEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the mapping of IP multicast address prefixes to +multicast SIDs on each CMTS MAC interface." +::= { docsBpiMulticastControl 1 } + +docsBpiIpMulticastMapEntry OBJECT-TYPE +SYNTAX DocsBpiIpMulticastMapEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing the mapping of one IP +multicast address prefix to one multicast SID on one CMTS MAC +interface. The CMTS uses the mapping when forwarding downstream IP +multicast traffic." + + +INDEX { ifIndex, docsBpiIpMulticastAddress, + docsBpiIpMulticastPrefixLength } +::= { docsBpiIpMulticastMapTable 1 } + +DocsBpiIpMulticastMapEntry ::= SEQUENCE { +docsBpiIpMulticastAddress IpAddress, +docsBpiIpMulticastPrefixLength Integer32, +docsBpiIpMulticastServiceId Integer32, +docsBpiIpMulticastMapControl RowStatus +} + +docsBpiIpMulticastAddress OBJECT-TYPE +SYNTAX IpAddress +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This object represents the IP multicast address (prefix) to be +mapped by this row, in conjunction with +docsBpiIpMulticastPrefixLength." +::= { docsBpiIpMulticastMapEntry 1 } + +docsBpiIpMulticastPrefixLength OBJECT-TYPE +SYNTAX Integer32 (0..32) +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This object represents the IP multicast address prefix length +for this row. The value of this object represents the length in +bits of docsBpiIpMulticastAddress for multicast address +comparisons, using big-endian ordering. An IP multicast address +matches this row if the (docsBpiIpMulticastPrefixLength) most +significant bits of the IP multicast address and of the +(docsBpiIpMulticastAddress) are identical. +This object is similar in usage to an IP address mask. The value +0 corresponds to IP address mask 0.0.0.0, the value 1 corresponds +to IP address mask 128.0.0.0, the value 8 corresponds to IP +address mask 255.0.0.0, and the value 32 corresponds to IP +address mask 255.255.255.255." +::= { docsBpiIpMulticastMapEntry 2 } + +docsBpiIpMulticastServiceId OBJECT-TYPE +SYNTAX Integer32 (8192..16368) +MAX-ACCESS read-create +STATUS current +DESCRIPTION +"This object represents the multicast SID to be used in this +IP multicast address prefix mapping entry." +-- DEFVAL is an unused multicast SID value chosen by CMTS. + + +::= { docsBpiIpMulticastMapEntry 3 } + +docsBpiIpMulticastMapControl OBJECT-TYPE +SYNTAX RowStatus +MAX-ACCESS read-create +STATUS current +DESCRIPTION +"This object controls and reflects the IP multicast address prefix +mapping entry. There is no restriction on the ability to change values +in this row while the row is active." +::= { docsBpiIpMulticastMapEntry 4 } + +-- +-- The CMTS Multicast SID Authorization Table, indexed by ifIndex by +-- multicast SID by CM MAC address +-- + +docsBpiMulticastAuthTable OBJECT-TYPE +SYNTAX SEQUENCE OF DocsBpiMulticastAuthEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This table describes the multicast SID authorization for each +CM on each CMTS MAC interface." +::= { docsBpiMulticastControl 2 } + +docsBpiMulticastAuthEntry OBJECT-TYPE +SYNTAX DocsBpiMulticastAuthEntry +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"Each entry contains objects describing the key authorization of one +cable modem for one multicast SID for one CMTS MAC interface." +INDEX { ifIndex, docsBpiMulticastServiceId, + docsBpiMulticastCmMacAddress } +::= { docsBpiMulticastAuthTable 1 } + +DocsBpiMulticastAuthEntry ::= SEQUENCE { +docsBpiMulticastServiceId Integer32, +docsBpiMulticastCmMacAddress MacAddress, +docsBpiMulticastAuthControl RowStatus +} + +docsBpiMulticastServiceId OBJECT-TYPE +SYNTAX Integer32 (8192..16368) +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION + + +"This object represents the multicast SID for authorization." +::= { docsBpiMulticastAuthEntry 1 } + +docsBpiMulticastCmMacAddress OBJECT-TYPE +SYNTAX MacAddress +MAX-ACCESS not-accessible +STATUS current +DESCRIPTION +"This object represents the MAC address of the CM to which the +multicast SID authorization applies." +::= { docsBpiMulticastAuthEntry 2 } + +docsBpiMulticastAuthControl OBJECT-TYPE +SYNTAX RowStatus +MAX-ACCESS read-create +STATUS current +DESCRIPTION +"This object controls and reflects the CM authorization for each +multicast SID. There is no restriction on the ability to change +values in this row while the row is active." +::= { docsBpiMulticastAuthEntry 3 } + +-- +-- The BPI MIB Conformance Statements (with a placeholder for +-- notifications) +-- + +docsBpiNotification OBJECT IDENTIFIER ::= { docsBpiMIB 2 } +docsBpiConformance OBJECT IDENTIFIER ::= { docsBpiMIB 3 } +docsBpiCompliances OBJECT IDENTIFIER ::= { docsBpiConformance 1 } +docsBpiGroups OBJECT IDENTIFIER ::= { docsBpiConformance 2 } + +docsBpiBasicCompliance MODULE-COMPLIANCE +STATUS current +DESCRIPTION +"This is the compliance statement for devices which implement the +DOCSIS Baseline Privacy Interface." + +MODULE -- docsBpiMIB + +-- conditionally mandatory group +GROUP docsBpiCmGroup +DESCRIPTION +"This group is implemented only in CMs, not in CMTSs." + +-- conditionally mandatory group +GROUP docsBpiCmtsGroup +DESCRIPTION + + +"This group is implemented only in CMTSs, not in CMs." + +-- relaxation on mandatory range (unnecessary since object is read-only) +-- OBJECT docsBpiCmAuthGraceTime +-- SYNTAX Integer32 (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (unnecessary since object is read-only) +-- OBJECT docsBpiCmTEKGraceTime +-- SYNTAX Integer32 (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range +OBJECT docsBpiCmtsDefaultAuthLifetime +SYNTAX Integer32 (86400..6048000) +DESCRIPTION +"The refined range corresponds to the minimum and maximum values in +operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range +OBJECT docsBpiCmtsDefaultTEKLifetime +SYNTAX Integer32 (1800..604800) +DESCRIPTION +"The refined range corresponds to the minimum and maximum values in +operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (object removed from MIB) +-- OBJECT docsBpiCmtsDefaultAuthGraceTime +-- SYNTAX INTEGER (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (object removed from MIB) +-- OBJECT docsBpiCmtsDefaultTEKGraceTime +-- SYNTAX INTEGER (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range +OBJECT docsBpiCmtsAuthCmLifetime +SYNTAX Integer32 (86400..6048000) +DESCRIPTION + + +"The refined range corresponds to the minimum and maximum values in +operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (unnecessary since object is read-only) +-- OBJECT docsBpiCmtsAuthCmGraceTime +-- SYNTAX Integer32 (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range +OBJECT docsBpiCmtsTEKLifetime +SYNTAX Integer32 (1800..604800) +DESCRIPTION +"The refined range corresponds to the minimum and maximum values in +operational networks, according to Appendix A.2 in [18]." + +-- relaxation on mandatory range (unnecessary since object is read-only) +-- OBJECT docsBpiCmtsTEKGraceTime +-- SYNTAX Integer32 (300..1800) +-- DESCRIPTION +-- "The refined range corresponds to the minimum and maximum values in +-- operational networks, according to Appendix A.2 in [18]." + +::= { docsBpiCompliances 1 } + +docsBpiCmGroup OBJECT-GROUP +OBJECTS { +docsBpiCmPrivacyEnable, +docsBpiCmPublicKey, +docsBpiCmAuthState, +docsBpiCmAuthKeySequenceNumber, +docsBpiCmAuthExpires, +docsBpiCmAuthReset, +docsBpiCmAuthGraceTime, +docsBpiCmTEKGraceTime, +docsBpiCmAuthWaitTimeout, +docsBpiCmReauthWaitTimeout, +docsBpiCmOpWaitTimeout, +docsBpiCmRekeyWaitTimeout, +docsBpiCmAuthRejectWaitTimeout, +docsBpiCmAuthRequests, +docsBpiCmAuthReplies, +docsBpiCmAuthRejects, +docsBpiCmAuthInvalids, +docsBpiCmAuthRejectErrorCode, +docsBpiCmAuthRejectErrorString, +docsBpiCmAuthInvalidErrorCode, + + +docsBpiCmAuthInvalidErrorString, +docsBpiCmTEKPrivacyEnable, +docsBpiCmTEKState, +docsBpiCmTEKExpiresOld, +docsBpiCmTEKExpiresNew, +docsBpiCmTEKKeyRequests, +docsBpiCmTEKKeyReplies, +docsBpiCmTEKKeyRejects, +docsBpiCmTEKInvalids, +docsBpiCmTEKAuthPends, +docsBpiCmTEKKeyRejectErrorCode, +docsBpiCmTEKKeyRejectErrorString, +docsBpiCmTEKInvalidErrorCode, +docsBpiCmTEKInvalidErrorString +} +STATUS current +DESCRIPTION +"This collection of objects provides CM BPI status and control." +::= { docsBpiGroups 1 } + +docsBpiCmtsGroup OBJECT-GROUP +OBJECTS { +docsBpiCmtsDefaultAuthLifetime, +docsBpiCmtsDefaultTEKLifetime, +docsBpiCmtsAuthRequests, +docsBpiCmtsAuthReplies, +docsBpiCmtsAuthRejects, +docsBpiCmtsAuthInvalids, +docsBpiCmtsAuthCmPublicKey, +docsBpiCmtsAuthCmKeySequenceNumber, +docsBpiCmtsAuthCmExpires, +docsBpiCmtsAuthCmLifetime, +docsBpiCmtsAuthCmGraceTime, +docsBpiCmtsAuthCmReset, +docsBpiCmtsAuthCmRequests, +docsBpiCmtsAuthCmReplies, +docsBpiCmtsAuthCmRejects, +docsBpiCmtsAuthCmInvalids, +docsBpiCmtsAuthRejectErrorCode, +docsBpiCmtsAuthRejectErrorString, +docsBpiCmtsAuthInvalidErrorCode, +docsBpiCmtsAuthInvalidErrorString, +docsBpiCmtsTEKLifetime, +docsBpiCmtsTEKGraceTime, +docsBpiCmtsTEKExpiresOld, +docsBpiCmtsTEKExpiresNew, +docsBpiCmtsTEKReset, +docsBpiCmtsKeyRequests, + + +docsBpiCmtsKeyReplies, +docsBpiCmtsKeyRejects, +docsBpiCmtsTEKInvalids, +docsBpiCmtsKeyRejectErrorCode, +docsBpiCmtsKeyRejectErrorString, +docsBpiCmtsTEKInvalidErrorCode, +docsBpiCmtsTEKInvalidErrorString, +docsBpiIpMulticastServiceId, +docsBpiIpMulticastMapControl, +docsBpiMulticastAuthControl +} +STATUS current +DESCRIPTION +"This collection of objects provides CMTS BPI status and control." +::= { docsBpiGroups 2 } + +docsBpiObsoleteObjectsGroup OBJECT-GROUP +OBJECTS { +docsBpiCmtsDefaultAuthGraceTime, +docsBpiCmtsDefaultTEKGraceTime +} +STATUS obsolete +DESCRIPTION +"This is a collection of obsolete BPI objects." +::= { docsBpiGroups 3 } + +END diff --git a/mibs/ietf/DOCS-CABLE-DEVICE-MIB b/mibs/ietf/DOCS-CABLE-DEVICE-MIB new file mode 100644 index 0000000..44f4160 --- /dev/null +++ b/mibs/ietf/DOCS-CABLE-DEVICE-MIB @@ -0,0 +1,3313 @@ +DOCS-CABLE-DEVICE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + IpAddress, + Unsigned32, + Counter32, + Integer32, + zeroDotZero, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + RowStatus, + RowPointer, + DateAndTime, + TruthValue, + StorageType + FROM SNMPv2-TC -- RFC 2579 + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB -- RFC 4001 + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF -- RFC 2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + InterfaceIndexOrZero + FROM IF-MIB -- RFC 2863 + ZeroBasedCounter32 + FROM RMON2-MIB -- RFC 4502 + diffServMIBDataPathGroup, + diffServMIBClfrGroup, + diffServMIBClfrElementGroup, + diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, + diffServMIBDscpMarkActGroup, + diffServMIBCounterGroup, + diffServMIBAlgDropGroup, + + + + diffServDataPathStatus, + diffServClfrStatus, + diffServClfrElementStatus, + diffServMultiFieldClfrAddrType, + diffServMultiFieldClfrSrcAddr, + diffServMultiFieldClfrDstAddr, + diffServAlgDropStatus, + diffServDataPathStorage, + diffServClfrStorage, + diffServClfrElementStorage, + diffServMultiFieldClfrStorage, + diffServActionStorage, + diffServCountActStorage, + diffServAlgDropStorage, + diffServAlgDropType + FROM DIFFSERV-MIB; -- RFC 3289 + + +docsDev MODULE-IDENTITY + LAST-UPDATED "200612200000Z" -- December 20, 2006 + ORGANIZATION "IETF IP over Cable Data Network + Working Group" + CONTACT-INFO + " Rich Woundy + Postal: Comcast Cable + 27 Industrial Avenue + Chelmsford, MA 01824 U.S.A. + Phone: +1 978 244 4010 + E-mail: richard_woundy@cable.comcast.com + + Kevin Marez + Postal: Motorola Corporation + 6450 Sequence Drive + San Diego, CA 92121 U.S.A. + Phone: +1 858 404 3785 + E-mail: kevin.marez@motorola.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, + richard_woundy@cable.comcast.com + Jean-Francois Mule, + jf.mule@cablelabs.com" + + DESCRIPTION + "This is the MIB Module for DOCSIS-compliant cable modems + + + + and cable-modem termination systems. + + Copyright (C) The IETF Trust (2006). This version + of this MIB module was published in RFC 4639; for full + legal notices see the RFC itself." + + REVISION "200612200000Z" -- December 20, 2006 + DESCRIPTION + "Second version, published as RFC 4639. + + Modifications to this MIB module since RFC 2669 include: + - Deprecation of the docsDevFilter group in favor of the + DiffServ MIB groups, to enable support for IPv6 + filtering and DiffServ Code Point (DSCP) marking. + - Deprecation of the docsDevCpeGroup in favor of the + docsDevCpeInetGroup, to enable support of IPv6. + - Addition of various InetAddress objects to enable + support of IPv6. + - Deprecation of docsDevNmAccessTable in favor of SNMP + Coexistence and SNMPv3 -- yet adding + docsDevNmAccessTrapVersion and clarifying + docsDevNmAccessIp for current use of this table, + - Addition of docsDevIgmpModeControl for management and + control of the IGMP mode of operation, + - Addition of docsDevMaxCpe for management of the + maxmium number of CPEs permitted access through a + cable modem, + - Addition of docsDevSwServerTransportProtocol, and + modifications to docsDevSoftware object DESCRIPTIONS, + to enable software downloads via either TFTP or HTTP, + - Replacement of docsDevEvThrottleInhibited with + docsDevEvThrottleThresholdExceeded to simplify + event threshold management, + - Modification of docsDevEvReporting to enable local + logging to the internal volatile log, and not to the + internal non-volatile log, + - Modification of the compliance statement to make the + docsDevCpe objects optional + - Created placeholders for two OIDs in the + docsDevFilterPolicyTable that were never used + - Modified the DESCRIPTION of + docsDevSwServerTransportProtocol and + docsDevSwServerAddressType to address the + dependence between each object + - Added a reference to docsDevServerConfigTftpAddress + - Clarified the scope of notifications that are covered + by docsDevEvThrottleThreshold + - Clarified an error condition that could occur when + + + + doing a SET to docsDevEvReporting + - Defined each of the enumerated types for both + docsDevEvLevel and docsDevEvPriority + - Added UNITS clause to docsDevFilterLLCMatches, + docsDevFilterIpMatches, docsDevMaxCpe, + docsDevEvThrottleThreshold and docsDevEvCounts. + - Added REFERENCE clause to docsDevFilterIpProtocol + - Modified DESCRIPTION of docsDevCpeInetAddr to be + more protocol-neutral + - Removed the enumerated value (1) from both + docsDevCpeInetSource and docsDevCpeSource + - Covered additional read-write and read-create objects + in the Security Considerations section + - Modified the default value of docsDevNmAccessIpMask + to be consistent with OSSI specification + - Modified the SYNTAX of docsDevNmAccessCommunity and + docsDevNmAccessInterfaces in the Conformance + Statement section + - Added SYNTAX clause to docsDevEvReporting in the + Conformance Statement section + - Modified SYNTAX clause of docsDevEvReporting to + move new enumerated type to byte boundary + - Added references to DOCSIS 2.0 specifications to + multiple objects + - Clarified non-persistency across reboots for + all tables + - Clarified functionality of docsDevSw objects as + they relate to docsDevSwOperStatus + - Clarified enumerated types (9) and (10) for + docsDevServerBootState + - Defined the state of unknown(0) for the following + objects: docsDevServerDhcpAddressType, + docsDevServerTimeAddressType, + docsDevServerConfigTftpAddressType and + docsDevServerConfigTftpAddressType + - Modified the value in docsDevFilterIpDaddr to be + consistent with the SYNTAX + - Specified which rows could be modified in an + active row for docsDevFilterPolicyStatus + - Defined the term 'manually' in docsDevCpeEnroll + - Clarified the description for + docsDevFilterTosOrMask + - Covered the case of a non-existent row for + docsDevFilterPolicyPtr + - Added DEFVAL clauses for multiple objects + - Replaced docsDevNotification OBJECT IDENTIFIER + with docsDevNotifications to address possible + compatibility issues + + + + - Added support for the usage of RFC 3413 and RFC 3014 + as event notification mechanisms + - Removed docsDevFilterPolicyObsoleteGroup + - Added stdInterface(9) type to docsDevEvReporting to + support the usage of RFC3413 and RFC3014 + - Modified DESCRIPTION for docsDevMaxCpe" + + REVISION "199908190000Z" + DESCRIPTION + "Initial version, published as RFC 2669." + + ::= { mib-2 69 } + +docsDevMIBObjects OBJECT IDENTIFIER ::= { docsDev 1 } + +docsDevBase OBJECT IDENTIFIER ::= { docsDevMIBObjects 1 } + +-- +-- For the following object, there is no concept in the +-- RFI specification corresponding to a backup CMTS. The +-- enumeration is provided here in case someone is able +-- to define such a role or device. +-- + +docsDevRole OBJECT-TYPE + SYNTAX INTEGER { + cm(1), + cmtsActive(2), + cmtsBackup(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the current role of this device. cm(1) is a + Cable Modem, cmtsActive(2) is a Cable Modem Termination + System that is controlling the system of cable modems, + and cmtsBackup(3) is a CMTS that is currently connected + but is not controlling the system (not currently used). + + In general, if this device is a 'cm', its role will not + change during operation or between reboots. If the + device is a 'cmts' it may change between cmtsActive and + cmtsBackup and back again during normal operation. NB: + At this time, the DOCSIS standards do not support the + concept of a backup CMTS, but cmtsBackup is included for + completeness." + ::= { docsDevBase 1 } + + + + +docsDevDateTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current date and time, with time zone information + (if known). + + If the real data and time cannot be determined, this + shall represent elapsed time from boot relative to + the standard epoch '1970-1-1,0:0:0.0'. In other + words, if this agent has been up for 3 minutes and + not been able to determine what the actual date and + time are, this object will return the value + '1970-1-1,0:03:0.0'." + ::= { docsDevBase 2 } + +docsDevResetNow OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to true(1) causes the device to + reset. Reading this object always returns false(2)." + ::= { docsDevBase 3 } + +docsDevSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The manufacturer's serial number for this device." + ::= { docsDevBase 4 } + +docsDevSTPControl OBJECT-TYPE + SYNTAX INTEGER { + stEnabled(1), + noStFilterBpdu(2), + noStPassBpdu(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls operation of the spanning tree + protocol (as distinguished from transparent bridging). + + If set to stEnabled(1), then the spanning tree protocol + is enabled, subject to bridging constraints. + + + + If noStFilterBpdu(2), then spanning tree is not active, + and Bridge PDUs received are discarded. + + If noStPassBpdu(3), then spanning tree is not active, + and Bridge PDUs are transparently forwarded. + + Note that a device need not implement all of these + options, but that noStFilterBpdu(2) is required." + DEFVAL { noStFilterBpdu } + ::= { docsDevBase 5 } + +docsDevIgmpModeControl OBJECT-TYPE + SYNTAX INTEGER { + passive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the IGMP mode of operation for + the CM or CMTS. In passive mode, the device forwards + IGMP between interfaces as based on knowledge of + Multicast Session activity on the subscriber side + interface and the rules defined in the DOCSIS RFI + specification. In active mode, the device terminates + at and initiates IGMP through its interfaces as based + on the knowledge of Multicast Session activity on the + subscriber side interface." + REFERENCE + "DOCSIS RFI 1.1 Specification, Section 3.3.1. and + DOCSIS RFI 2.0 Specification, Section 5.3.1." + DEFVAL { passive } + ::= { docsDevBase 6 } + +docsDevMaxCpe OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "CPEs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of CPEs that can be granted access + through a CM during a CM epoch. This value can be + obtained from the CM configuration file; however, + it may be adjusted by the CM according to hardware or + software limitations that have been imposed on the + implementation." + REFERENCE + "DOCSIS RFI 1.0 Specification, Appendix C.7.20., and + + + + DOCSIS RFI 1.1 Specification, Appendix C.1.1.7. and + DOCSIS RFI 2.0 Specification, Appendix C.1.1.7." + ::= { docsDevBase 7 } + + +-- +-- The following table provides one level of security for access +-- to the device by network management stations. +-- Note that access is also constrained by the +-- community strings and any vendor-specific security. +-- + +docsDevNmAccessTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevNmAccessEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table controls access to SNMP objects by network + management stations. If the table is empty, access to + SNMP objects is unrestricted. The objects in this table + MUST NOT persist across reboots. The objects in this + table are only accessible from cable devices that are + not capable of operating in SNMP Coexistence mode + (RFC 3584) or in SNMPv3 mode (RFC 3410). + See the conformance section for + details. Note that some devices are required by other + specifications (e.g., the DOCSIS OSSIv1.1 specification) + to support the legacy SNMPv1/v2c docsDevNmAccess mode + for backward compatibility. + + This table is deprecated. Instead, use the SNMP + coexistence MIBs from RFC 3584, the TARGET and + NOTIFICATION MIBs from RFC 3413, and + the View-Based Access Control Model (VACM) MIBs for + all SNMP protocol versions from RFC 3415." + ::= { docsDevMIBObjects 2 } + +docsDevNmAccessEntry OBJECT-TYPE + SYNTAX DocsDevNmAccessEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry describing access to SNMP objects by a + particular network management station. An entry in + this table is not readable unless the management station + has read-write permission (either implicit if the table + is empty, or explicit through an entry in this table). + Entries are ordered by docsDevNmAccessIndex. The first + + + + matching entry (e.g., matching IP address and community + string) is used to derive access." + INDEX { docsDevNmAccessIndex } + ::= { docsDevNmAccessTable 1 } + +DocsDevNmAccessEntry ::= SEQUENCE { + docsDevNmAccessIndex Integer32, + docsDevNmAccessIp IpAddress, + docsDevNmAccessIpMask IpAddress, + docsDevNmAccessCommunity OCTET STRING, + docsDevNmAccessControl INTEGER, + docsDevNmAccessInterfaces OCTET STRING, + docsDevNmAccessStatus RowStatus, + docsDevNmAccessTrapVersion INTEGER + } + +docsDevNmAccessIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Index used to order the application of access + entries." + ::= { docsDevNmAccessEntry 1 } + +docsDevNmAccessIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP address (or subnet) of the network management + station. The address 0.0.0.0 is defined to mean + any Network Management Station (NMS). If traps are + enabled for this entry, then the value must be the + address of a specific device. Implementations MAY + recognize 255.255.255.255 as equivalent to 0.0.0.0." + DEFVAL { '00000000'h } + ::= { docsDevNmAccessEntry 2 } + +docsDevNmAccessIpMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP subnet mask of the network management stations. + If traps are enabled for this entry, then the value must + be 0.0.0.0. Implementations MAY recognize + 255.255.255.255 as equivalent to 0.0.0.0." + + + + DEFVAL { '00000000'h } + ::= { docsDevNmAccessEntry 3 } + +docsDevNmAccessCommunity OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The community string to be matched for access by this + entry. If set to a zero-length string, then any + community string will match. When read, this object + SHOULD return a zero-length string." + DEFVAL { "public" } + ::= { docsDevNmAccessEntry 4 } + +docsDevNmAccessControl OBJECT-TYPE + SYNTAX INTEGER { + none(1), + read(2), + readWrite(3), + roWithTraps(4), + rwWithTraps(5), + trapsOnly(6) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Specifies the type of access allowed to this NMS. + Setting this object to none(1) causes the table entry + to be destroyed. Read(2) allows access by 'get' and + 'get-next' PDUs. ReadWrite(3) allows access by 'set' as + well. RoWithtraps(4), rwWithTraps(5), and trapsOnly(6) + control distribution of Trap PDUs transmitted by this + device." + DEFVAL { read } + ::= { docsDevNmAccessEntry 5 } + +-- The syntax of the following object was copied from RFC 1493, +-- dot1dStaticAllowedToGoTo. + +docsDevNmAccessInterfaces OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..32)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Specifies the set of interfaces from which requests from + this NMS will be accepted. Each octet within + the value of this object specifies a set of eight + + + + interfaces, the first octet specifying ports 1 + through 8, the second octet specifying interfaces 9 + through 16, etc. Within each octet, the most + significant bit represents the lowest numbered + interface, and the least significant bit represents the + highest numbered interface. Thus, each interface is + represented by a single bit within the value of this + object. If that bit has a value of '1' then that + interface is included in the set. + + Note that entries in this table apply only to link-layer + interfaces (e.g., Ethernet and CATV MAC). Bits + representing upstream and downstream channel interfaces + MUST NOT be set to '1'. + + Note that if bits corresponding to non-existing + interfaces are set, the result is implementation + specific. + + Note that according to the DOCSIS OSSIv1.1 + specification, when ifIndex '1' is included in the + set, then this row applies to all CPE + (customer-facing) interfaces. + + The size of this object is the minimum required to + represent all configured interfaces for this device." + ::= { docsDevNmAccessEntry 6 } + +docsDevNmAccessStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Controls and reflects the status of rows in this + table. Rows in this table may be created by either the + create-and-go or create-and-wait paradigm. There is no + restriction on changing values in a row of this table + while the row is active. + + The following objects MUST have valid values before this + object can be set to active: docsDevNmAccessIp, + docsDevNmAccessStatus, docsDevNmAccessIpMask, + docsDevNmAccessCommunity, docsDevNmAccessControl, and + docsDevNmAccessInterfaces." + ::= { docsDevNmAccessEntry 7 } + +docsDevNmAccessTrapVersion OBJECT-TYPE + SYNTAX INTEGER { + + + + disableSNMPv2trap(1), + enableSNMPv2trap(2) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Specifies the TRAP version that is sent to this NMS. + Setting this object to disableSNMPv2trap (1) causes the + trap in SNMPv1 format to be sent to a particular NMS. + Setting this object to enableSNMPv2trap (2) causes the + trap in SNMPv2 format be sent to a particular NMS." + DEFVAL { disableSNMPv2trap } + ::= { docsDevNmAccessEntry 8 } + +-- +-- The following group describes control objects used for downloading +-- firmware to a cable device. Procedures for software download are +-- described in Section 3.2.1 of the RFC containing this MIB module. +-- + +docsDevSoftware OBJECT IDENTIFIER ::= { docsDevMIBObjects 3 } + +docsDevSwServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The address of the TFTP server used for software + upgrades. If the TFTP server is unknown or is a + non-IPv4 address, return 0.0.0.0. + + This object is deprecated. See docsDevSwServerAddress + for its replacement. This object will have its value + modified, given a valid SET to docsDevSwServerAddress." + ::= { docsDevSoftware 1 } + +docsDevSwFilename OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The filename of the software image to be downloaded via + TFTP, or the abs_path (as defined in RFC 2616) of the + software image to be downloaded via HTTP. + + Unless set via SNMP, this is the filename or abs_path + specified by the provisioning server during the boot + process that corresponds to the software version that + + + + is desired for this device. + + If unknown, the value of this object is the zero-length + string." + ::= { docsDevSoftware 2 } + +docsDevSwAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + upgradeFromMgt(1), + allowProvisioningUpgrade(2), + ignoreProvisioningUpgrade(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If set to upgradeFromMgt(1), the device will initiate a + TFTP or HTTP software image download. After + successfully receiving an image, the device will set + its state to ignoreProvisioningUpgrade(3) and reboot. + If the download process is interrupted (e.g., by a reset + or power failure), the device will load the previous + image and, after re-initialization, continue to attempt + loading the image specified in docsDevSwFilename. + + If set to allowProvisioningUpgrade(2), the device will + use the software version information supplied by the + provisioning server when next rebooting (this does not + cause a reboot). + + When set to ignoreProvisioningUpgrade(3), the device + will disregard software image upgrade information + from the provisioning server. + + Note that reading this object can return + upgradeFromMgt(1). This indicates that a software + download is currently in progress, and that the device + will reboot after successfully receiving an image." + DEFVAL { allowProvisioningUpgrade } + ::= { docsDevSoftware 3 } + +docsDevSwOperStatus OBJECT-TYPE + SYNTAX INTEGER { + inProgress(1), + completeFromProvisioning(2), + completeFromMgt(3), + failed(4), + other(5) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "InProgress(1) indicates that a TFTP or HTTP download is + underway, either as a result of a version mismatch at + provisioning or as a result of a upgradeFromMgt request. + No other docsDevSw* objects can be modified in + this state. + + CompleteFromProvisioning(2) indicates that the last + software upgrade was a result of version mismatch at + provisioning. + + CompleteFromMgt(3) indicates that the last software + upgrade was a result of setting docsDevSwAdminStatus to + upgradeFromMgt. + + Failed(4) indicates that the last attempted download + failed, ordinarily due to TFTP or HTTP timeout." + REFERENCE + "DOCSIS RFI 1.0 Specification, Section 8.2., and + DOCSIS RFI 1.1 Specification, Section 10.1. and + DOCSIS RFI 2.0 Specification, Section 12.1." + ::= { docsDevSoftware 4 } + +docsDevSwCurrentVers OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The software version currently operating in this device. + This string's syntax is that used by the + individual vendor to identify software versions. + For a CM, this string will describe the current + software load. For a CMTS, this object SHOULD contain + a human-readable representation either of the vendor + specific designation of the software for the chassis, + or of the software for the control processor. If + neither of these is applicable, the value MUST be a + zero-length string." + ::= { docsDevSoftware 5 } + +docsDevSwServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of address of the TFTP or HTTP server used for + + + + software upgrades. + + If docsDevSwServerTransportProtocol is currently set to + tftp(1), attempting to set this object to dns(16) MUST + result in an error." + ::= { docsDevSoftware 6 } + +docsDevSwServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The address of the TFTP or HTTP server used for software + upgrades. + + If the TFTP/HTTP server is unknown, return the zero- + length address string (see the TextualConvention). + + If docsDevSwServer is also implemented in this agent, + this object is tied to it. A set of this object to an + IPv4 address will result in also setting the value of + docsDevSwServer to that address. If this object is set + to an IPv6 address, docsDevSwServer is set to 0.0.0.0. + If docsDevSwServer is set, this object is also set to + that value. Note that if both are set in the same + action, the order of which one sets the other is + undefined." + ::= { docsDevSoftware 7 } + +docsDevSwServerTransportProtocol OBJECT-TYPE + SYNTAX INTEGER { + tftp(1), + http(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the transport protocol (TFTP or + HTTP) to be used for software upgrades. + + If the value of this object is tftp(1), then the cable + device uses TFTP (RFC 1350) read request packets to + download the docsDevSwFilename from the + docsDevSwServerAddress in octet mode. + + If the value of this object is http(2), then the cable + device uses HTTP 1.0 (RFC 1945) or HTTP 1.1 (RFC 2616) + GET requests sent to host docsDevSwServerAddress to + + + + download the software image from path docsDevSwFilename. + + If docsDevSwServerAddressType is currently set to + dns(16), attempting to set this object to tftp(1) MUST + result in an error." + DEFVAL { tftp } + ::= { docsDevSoftware 8 } + +-- +-- The following group describes server access and parameters used +-- for initial provisioning and bootstrapping. +-- + +docsDevServer OBJECT IDENTIFIER ::= { docsDevMIBObjects 4 } + +docsDevServerBootState OBJECT-TYPE + SYNTAX INTEGER { + operational(1), + disabled(2), + waitingForDhcpOffer(3), + waitingForDhcpResponse(4), + waitingForTimeServer(5), + waitingForTftp(6), + refusedByCmts(7), + forwardingDenied(8), + other(9), + unknown(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If operational(1), the device has completed loading and + processing of configuration parameters, and the CMTS has + completed the Registration exchange. + + If disabled(2), then the device was administratively + disabled, possibly by being refused network access in + the configuration file. + + If waitingForDhcpOffer(3), then a Dynamic Host + Configuration Protocol (DHCP) Discover has been + transmitted, and no offer has yet been received. + + If waitingForDhcpResponse(4), then a DHCP Request has + been transmitted, and no response has yet been received. + + If waitingForTimeServer(5), then a Time Request has been + transmitted, and no response has yet been received. + + + + If waitingForTftp(6), then a request to the TFTP + parameter server has been made, and no response + received. + + If refusedByCmts(7), then the Registration + Request/Response exchange with the CMTS failed. + + If forwardingDenied(8), then the registration process + was completed, but the network access option in the + received configuration file prohibits forwarding. + + If other(9), then the registration process reached a + point that does not fall into one of the above + categories. + + If unknown(10), then the device has not yet begun the + registration process or is in some other indeterminate + state." + REFERENCE + "DOCSIS RFI 1.0 Specification, Figure 7-1, and + DOCSIS RFI 1.1 Specification, Figure 9-1 and + DOCSIS RFI 2.0 Specification, Figure 11-1." + ::= { docsDevServer 1 } + +docsDevServerDhcp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the DHCP server that assigned an IP + address to this device. Returns 0.0.0.0 if DHCP is not + used for IP address assignment, or if this agent is + not assigned an IPv4 address. + + This object is deprecated and is replaced by + docsDevServerDhcpAddress." + ::= { docsDevServer 2 } + +docsDevServerTime OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the Time server (RFC 0868). Returns + 0.0.0.0 if the time server IP address is unknown, or if + the time server is not an IPv4 server. + + This object is deprecated and is replaced by + + + + docsDevServerTimeAddress." + ::= { docsDevServer 3 } + +docsDevServerTftp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the TFTP server responsible for + downloading provisioning and configuration parameters + to this device. Returns 0.0.0.0 if the TFTP server + address is unknown or is not an IPv4 address. + + This object is deprecated and is replaced by + docsDevServerConfigTftpAddress." + ::= { docsDevServer 4 } + +docsDevServerConfigFile OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the device configuration file read from + the TFTP server. Returns a zero-length string if + the configuration file name is unknown." + ::= { docsDevServer 5 } + +docsDevServerDhcpAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address of docsDevServerDhcpAddress. If + DHCP was not used, this value should return + unknown(0)." + ::= { docsDevServer 6 } + +docsDevServerDhcpAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The internet address of the DHCP server that assigned + an IP address to this device. Returns the zero length + octet string if DHCP was not used for IP address + assignment." + ::= { docsDevServer 7 } + + + + +docsDevServerTimeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address of docsDevServerTimeAddress. If + no time server exists, this value should return + unknown(0)." + ::= { docsDevServer 8 } + +docsDevServerTimeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet address of the RFC 868 Time server, + as provided by DHCP option 4. + + Note that if multiple values are provided to the + CM in DHCP option 4, the value of this MIB object + MUST be the Time server address from which the Time + of Day reference was acquired as based on the DOCSIS + RFI specification. During the period of time where + the Time of Day have not been acquired, the Time + server address reported by the CM may report the + first address value in the DHCP option value or the + last server address the CM attempted to get the Time + of day value. + + Returns the zero-length octet string if the time server + IP address is not provisioned." + REFERENCE + "DOCSIS RFI 1.1 Specification, Section 9.2.7. and + DOCSIS RFI 2.0 Specification, Section 11.2.7." + ::= { docsDevServer 9 } + +docsDevServerConfigTftpAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address of docsDevServerConfigTftpAddress. + If no TFTP server exists, this value should return + unknown(0)." + ::= { docsDevServer 10 } + +docsDevServerConfigTftpAddress OBJECT-TYPE + SYNTAX InetAddress + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The internet address of the TFTP server responsible for + downloading provisioning and configuration parameters + to this device. Returns the zero-length octet string if + the config server address is unknown. There are certain + security risks that are involved with using TFTP." + REFERENCE + "RFC 3617, Section 5" + ::= { docsDevServer 11 } + + +-- +-- Event Reporting +-- + +docsDevEvent OBJECT IDENTIFIER ::= { docsDevMIBObjects 5 } + +docsDevEvControl OBJECT-TYPE + SYNTAX INTEGER { + resetLog(1), + useDefaultReporting(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to resetLog(1) empties the event + log. All data is deleted. Setting it to + useDefaultReporting(2) returns all event priorities to + their factory-default reporting. Reading this object + always returns useDefaultReporting(2)." + ::= { docsDevEvent 1 } + +docsDevEvSyslog OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The IP address of the Syslog server. If 0.0.0.0, either + syslog transmission is inhibited, or the Syslog server + address is not an IPv4 address. + + This object is deprecated and is replaced by + docsDevEvSyslogAddress." + ::= { docsDevEvent 2 } + +docsDevEvThrottleAdminStatus OBJECT-TYPE + + + + SYNTAX INTEGER { + unconstrained(1), + maintainBelowThreshold(2), + stopAtThreshold(3), + inhibited(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the transmission of traps and syslog messages + with respect to the trap pacing threshold. + + unconstrained(1) causes traps and syslog messages to be + transmitted without regard to the threshold settings. + + maintainBelowThreshold(2) causes trap transmission and + syslog messages to be suppressed if the number of traps + would otherwise exceed the threshold. + + stopAtThreshold(3) causes trap transmission to cease at + the threshold and not to resume until directed to do so. + + inhibited(4) causes all trap transmission and syslog + messages to be suppressed. + + A single event is always treated as a single event for + threshold counting. That is, an event causing both a + trap and a syslog message is still treated as a single + event. + + Writing to this object resets the thresholding state." + DEFVAL { unconstrained } + ::= { docsDevEvent 3 } + +docsDevEvThrottleInhibited OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "If true(1), trap and syslog transmission is currently + inhibited due to thresholds and/or the current setting + of docsDevEvThrottleAdminStatus. In addition, this is + true(1) when transmission is inhibited because no + syslog (docsDevEvSyslog) or trap (docsDevNmAccessEntry) + destinations have been set. + + This object is deprecated and is replaced by + docsDevEvThrottleThresholdExceeded." + + + + ::= { docsDevEvent 4 } + +docsDevEvThrottleThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Number of events per docsDevEvThrottleInterval permitted + before throttling is to occur. + + A single event, whether the notification could result in + messages transmitted using syslog, SNMP, or both + protocols, and regardless of the number of destinations, + (including zero) is always treated as a single event for + threshold counting. For example, an event causing both + a trap and a syslog message is still treated as a single + event. + + All system notifications that occur within the device + should be taken into consideration when calculating + and monitoring the threshold." + DEFVAL { 0 } + ::= { docsDevEvent 5 } + +docsDevEvThrottleInterval OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval over which docsDevEvThrottleThreshold + applies." + DEFVAL { 1 } + ::= { docsDevEvent 6 } + +-- +-- The following table controls the reporting of the various classes +-- of events. +-- + +docsDevEvControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevEvControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows control of the reporting of event + classes. For each event priority, a combination of + + + + logging and reporting mechanisms may be chosen. The + mapping of event types to priorities is + vendor dependent. Vendors may also choose to allow + the user to control that mapping through proprietary + means. Table entries MUST persist across reboots for + CMTS devices and MUST NOT persist across reboots for CM + devices." + ::= { docsDevEvent 7 } + +docsDevEvControlEntry OBJECT-TYPE + SYNTAX DocsDevEvControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Allows configuration of the reporting mechanisms for a + particular event priority." + INDEX { docsDevEvPriority } + ::= { docsDevEvControlTable 1 } + +DocsDevEvControlEntry ::= SEQUENCE { + docsDevEvPriority INTEGER, + docsDevEvReporting BITS + } + +docsDevEvPriority OBJECT-TYPE + SYNTAX INTEGER { + emergency(1), + alert(2), + critical(3), + error(4), + warning(5), + notice(6), + information(7), + debug(8) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority level that is controlled by this + entry. These are ordered from most (emergency) to least + (debug) critical. Each event with a CM or CMTS has a + particular priority level associated with it (as defined + by the vendor). + + emergency(1) events indicate vendor-specific fatal + hardware or software errors that prevent normal system + operation. + + + + + alert(2) events indicate a serious failure that causes + the reporting system to reboot but is not caused by + hardware or software malfunctioning. + + critical(3) events indicate a serious failure that + requires attention and prevents the device from + transmitting data but that could be recovered without + rebooting the system. + + error(4) and warning(5) events indicate that a failure + occurred that could interrupt the normal data flow but + that does not cause the device to re-register. + + notice(6) and information(7) events indicate a + milestone or checkpoint in normal operation that could + be of particular importance for troubleshooting. + + debug(8) events are reserved for vendor-specific + events. + + During normal operation, no event more + critical than notice(6) should be generated. Events + between warning and emergency should be generated at + appropriate levels of problems (e.g., emergency when the + box is about to crash)." + ::= { docsDevEvControlEntry 1 } + +docsDevEvReporting OBJECT-TYPE + SYNTAX BITS { + local(0), + traps(1), + syslog(2), + -- The following are extensions to the original set of + -- labels. The extensions start at an octet boundary. + -- So for bits 3 - 7, one MUST set them to zero on send + -- and one MUST ignore them on receipt. + localVolatile(8), + stdInterface(9) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Defines the action to be taken on occurrence of this + event class. Implementations may not necessarily + support all options for all event classes but at + minimum must allow traps and syslogging to be + disabled. + + + + + If the local(0) bit is set, then log to the internal + log and update non-volatile store, for backward + compatibility with the original RFC 2669 definition. + If the traps(1) bit is set, then generate + an SNMP trap; if the syslog(2) bit is set, then + send a syslog message (assuming that the syslog address + is set). If the localVolatile(8) bit is set, then + log to the internal log without updating non-volatile + store. If the stdInterface(9) bit is set, then the + agent ignores all other bits except the local(0), + syslog(2), and localVolatile(8) bits. Setting the + stdInterface(9) bit indicates that RFC3413 and + RFC3014 are being used to control event reporting + mechanisms." + ::= { docsDevEvControlEntry 2 } + +docsDevEventTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevEventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains a log of network and device events that may be + of interest in fault isolation and troubleshooting. + If the local(0) bit is set in docsDevEvReporting, + entries in this table MUST persist across reboots." + ::= { docsDevEvent 8 } + +docsDevEventEntry OBJECT-TYPE + SYNTAX DocsDevEventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a network or device event that may be of + interest in fault isolation and troubleshooting. + Multiple sequential identical events are represented by + incrementing docsDevEvCounts and setting + docsDevEvLastTime to the current time rather than + creating multiple rows. + + Entries are created with the first occurrence of an + event. docsDevEvControl can be used to clear the + table. Individual events cannot be deleted." + INDEX { docsDevEvIndex } + ::= { docsDevEventTable 1 } + +DocsDevEventEntry ::= SEQUENCE { + docsDevEvIndex Integer32, + docsDevEvFirstTime DateAndTime, + + + + docsDevEvLastTime DateAndTime, + docsDevEvCounts Counter32, + docsDevEvLevel INTEGER, + docsDevEvId Unsigned32, + docsDevEvText SnmpAdminString + } + +docsDevEvIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides relative ordering of the objects in the event + log. This object will always increase except when + (a) the log is reset via docsDevEvControl, + (b) the device reboots and does not implement + non-volatile storage for this log, or (c) it reaches + the value 2^31. The next entry for all the above + cases is 1." + ::= { docsDevEventEntry 1 } + +docsDevEvFirstTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of docsDevDateTime at the time this entry was + created." + ::= { docsDevEventEntry 2 } + +docsDevEvLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When an entry reports only one event, this object will + have the same value as the corresponding instance of + docsDevEvFirstTime. When an entry reports multiple + events, this object will record the value that + docsDevDateTime had when the most recent event for this + entry occurred." + ::= { docsDevEventEntry 3 } + +-- This object was renamed from docsDevEvCount to meet naming +-- requirements for Counter32 +docsDevEvCounts OBJECT-TYPE + SYNTAX Counter32 + UNITS "events" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of consecutive event instances reported by + this entry. This starts at 1 with the creation of this + row and increments by 1 for each subsequent duplicate + event." + ::= { docsDevEventEntry 4 } +docsDevEvLevel OBJECT-TYPE + SYNTAX INTEGER { + emergency(1), + alert(2), + critical(3), + error(4), + warning(5), + notice(6), + information(7), + debug(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The priority level of this event, as defined by the + vendor. These are ordered from most serious (emergency) + to least serious (debug). + + emergency(1) events indicate vendor-specific fatal + hardware or software errors that prevent normal system + operation. + + alert(2) events indicate a serious failure that causes + the reporting system to reboot but that is not caused by + hardware or software malfunctioning. + + critical(3) events indicate a serious failure that + requires attention and prevents the device from + transmitting data but that could be recovered without + rebooting the system. + + error(4) and warning(5) events indicate that a failure + occurred that could interrupt the normal data flow but + that does not cause the device to re-register. + + notice(6) and information(7) events indicate a + milestone or checkpoint in normal operation that could + be of particular importance for troubleshooting. + + debug(8) events are reserved for vendor-specific + + + + events. + + During normal operation, no event more + critical than notice(6) should be generated. Events + between warning and emergency should be generated at + appropriate levels of problems (e.g., emergency when the + box is about to crash)." + ::= { docsDevEventEntry 5 } + +-- +-- It is strongly recommended that implementors follow the CableLabs +-- enumerations for docsDevEvId, per the DOCSIS OSSIv1.1 spec +-- and follow-on specifications. +-- + +docsDevEvId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For this product, uniquely identifies the type of event + that is reported by this entry." + REFERENCE + "DOCSIS OSSI 1.1 Specification, Appendix H and + DOCSIS OSSI 2.0 Specification, Annex D." + ::= { docsDevEventEntry 6 } + +docsDevEvText OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Provides a human-readable description of the event, + including all relevant context (interface numbers, + etc.)." + ::= { docsDevEventEntry 7 } + +docsDevEvSyslogAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of address of docsDevEvSyslogAddress. If + no syslog server exists, this value should return + unknown(0)." + DEFVAL { unknown } + ::= { docsDevEvent 9 } + + + + +docsDevEvSyslogAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Internet address of the Syslog server, as provided + by DHCP option 7 or set via SNMP management. If the + address of the server is set to the zero-length + string, the 0.0.0.0 IPv4 address, or the 0: IPv6 + address, Syslog transmission is inhibited. + + Note that if multiple values are provided to the CM in + DHCP option 7, the value of this MIB object MUST be the + first Syslog server address received. + + By default at agent boot, this object returns the zero + length string." + ::= { docsDevEvent 10 } + +docsDevEvThrottleThresholdExceeded OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true(1), trap and syslog transmission is currently + inhibited due to exceeding the trap/syslog event + threshold in the current interval." + ::= { docsDevEvent 11 } + +-- +-- Link Level Control Filtering +-- + +docsDevFilter OBJECT IDENTIFIER ::= { docsDevMIBObjects 6 } + +docsDevFilterLLCUnmatchedAction OBJECT-TYPE + SYNTAX INTEGER { + discard(1), + accept(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "LLC (Link Level Control) filters can be defined on an + inclusive or exclusive basis: CMs can be configured to + forward only packets matching a set of layer three + protocols, or to drop packets matching a set of layer + three protocols. Typical use of these filters is to + + + + filter out possibly harmful (given the context of a + large metropolitan LAN) protocols. + + If set to discard(1), any L2 packet that does not match + at least one filter in the docsDevFilterLLCTable will be + discarded. If set to accept(2), any L2 packet that + does not match at least one filter in the + docsDevFilterLLCTable will be accepted for further + processing (e.g., bridging). In other words, if the + packet does not match an entry in the table, it takes + this action; if it does match an entry in the table, it + takes the opposite of this action." + DEFVAL { accept } + ::= { docsDevFilter 1 } + +docsDevFilterLLCTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevFilterLLCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of filters to apply to (bridged) LLC + traffic. The filters in this table are applied to + incoming traffic on the appropriate interface(s) prior + to any further processing (e.g., before the packet + is handed off for level 3 processing, or for bridging). + The specific action taken when no filter is matched is + controlled by docsDevFilterLLCUnmatchedAction. Table + entries MUST NOT persist across reboots for any device." + ::= { docsDevFilter 2 } + +docsDevFilterLLCEntry OBJECT-TYPE + SYNTAX DocsDevFilterLLCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a single filter to apply to (bridged) LLC + traffic received on a specified interface. " + INDEX { docsDevFilterLLCIndex } + ::= { docsDevFilterLLCTable 1 } + +DocsDevFilterLLCEntry ::= SEQUENCE { + docsDevFilterLLCIndex Integer32, + docsDevFilterLLCStatus RowStatus, + docsDevFilterLLCIfIndex InterfaceIndexOrZero, + docsDevFilterLLCProtocolType INTEGER, + docsDevFilterLLCProtocol Integer32, + docsDevFilterLLCMatches Counter32 + } + + + +docsDevFilterLLCIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index used for the identification of filters (note that + LLC filter order is irrelevant)." + ::= { docsDevFilterLLCEntry 1 } +docsDevFilterLLCStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls and reflects the status of rows in this + table. There is no restriction on changing any of the + associated columns for this row while this object is set + to active. + + Specifying only this object (with the + appropriate index) on a CM is sufficient to create a + filter row that matches all inbound packets on the + ethernet interface and results in the packets being + discarded. docsDevFilterLLCIfIndex (at least) must be + specified on a CMTS to create a row." + ::= { docsDevFilterLLCEntry 2} + +docsDevFilterLLCIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entry interface to which this filter applies. The + value corresponds to ifIndex for either a CATV MAC or + another network interface. If the value is zero, the + filter applies to all interfaces. In Cable Modems, the + default value is the customer side interface(s). In + CMTSs, this object has to be specified to + create a row in this table. + + Note that according to the DOCSIS OSSIv1.1 + specification, ifIndex '1' in the CM means that this + row applies to all Cable Modem-to-CPE Interfaces + (CMCI)." + REFERENCE + "DOCSIS OSSI 1.1 Specification, Section 3.3.4.1. and + DOCSIS OSSI 2.0 Specification, Section 6.3.4.1." + ::= { docsDevFilterLLCEntry 3 } + + + + +docsDevFilterLLCProtocolType OBJECT-TYPE + SYNTAX INTEGER { + ethertype(1), + dsap(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The format of the value in docsDevFilterLLCProtocol: + either a two-byte Ethernet Ethertype, or a one-byte + 802.2 Service Access Point (SAP) value. ethertype(1) + also applies to Standard Network Access Protocol + (SNAP) encapsulated frames." + DEFVAL { ethertype } + ::= { docsDevFilterLLCEntry 4 } + +docsDevFilterLLCProtocol OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The layer-three protocol for which this filter applies. + The protocol value format depends on + docsDevFilterLLCProtocolType. Note that for SNAP + frames, ethertype filtering is performed rather than + Destination Service Access Point (DSAP) =0xAA." + DEFVAL { 0 } + ::= { docsDevFilterLLCEntry 5 } + +docsDevFilterLLCMatches OBJECT-TYPE + SYNTAX Counter32 + UNITS "matches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Counts the number of times this filter was matched." + ::= { docsDevFilterLLCEntry 6 } + +-- +-- IPv4 Filtering +-- + +docsDevFilterIpDefault OBJECT-TYPE + SYNTAX INTEGER { + discard(1), + accept(2) + } + MAX-ACCESS read-write + + + + STATUS deprecated + DESCRIPTION + "The default behavior for (bridged) packets that do not + match IP filters (or Internet filters, if implemented) + is defined by docsDevFilterIpDefault. + + If set to discard(1), all packets not matching an IP + filter in docsDevFilterIpTable will be discarded. If + set to accept(2), all packets not matching an IP filter + or an Internet filter will be accepted for further + processing (e.g., bridging)." + DEFVAL { accept } + ::= { docsDevFilter 3 } + +docsDevFilterIpTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevFilterIpEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An ordered list of filters or classifiers to apply to + IP traffic. Filter application is ordered by the filter + index, rather than by a best match algorithm (note that + this implies that the filter table may have gaps in the + index values). Packets that match no filters will have + policy 0 in the docsDevFilterPolicyTable applied to + them, if it exists. Otherwise, Packets that match no + filters are discarded or forwarded according to the + setting of docsDevFilterIpDefault. + + Any IP packet can theoretically match multiple rows of + this table. When considering a packet, the table is + scanned in row index order (e.g., filter 10 is checked + before filter 20). If the packet matches that filter + (which means that it matches ALL criteria for that row), + actions appropriate to docsDevFilterIpControl and + docsDevFilterPolicyId are taken. If the packet was + discarded processing is complete. If + docsDevFilterIpContinue is set to true, the filter + comparison continues with the next row in the table, + looking for additional matches. + + If the packet matches no filter in the table, the packet + is accepted or dropped for further processing + according to the setting of docsDevFilterIpDefault. + If the packet is accepted, the actions specified by + policy group 0 (e.g., the rows in + docsDevFilterPolicyTable that have a value of 0 for + docsDevFilterPolicyId) are taken, if that policy + + + + group exists. + + Logically, this table is consulted twice during the + processing of any IP packet: once upon its acceptance + from the L2 entity, and once upon its transmission to + the L2 entity. In actuality, for cable modems, IP + filtering is generally the only IP processing done for + transit traffic. This means that inbound and outbound + filtering can generally be done at the same time with + one pass through the filter table. + + The objects in this table are only accessible from cable + devices that are not operating in DiffServ MIB mode + (RFC 3289). See the conformance section for details. + + Note that some devices are required by other + specifications (e.g., the DOCSIS OSSIv1.1 specification) + to support the legacy SNMPv1/v2c docsDevFilter mode + for backward compatibility. + + Table entries MUST NOT persist across reboots for any + device. + + This table is deprecated. Instead, use the DiffServ MIB + from RFC 3289." + ::= { docsDevFilter 4 } + +docsDevFilterIpEntry OBJECT-TYPE + SYNTAX DocsDevFilterIpEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Describes a filter to apply to IP traffic received on a + specified interface. All identity objects in this table + (e.g., source and destination address/mask, protocol, + source/dest port, TOS/mask, interface and direction) + must match their respective fields in the packet for + any given filter to match. + + To create an entry in this table, docsDevFilterIpIfIndex + must be specified." + INDEX { docsDevFilterIpIndex } + ::= { docsDevFilterIpTable 1 } + +DocsDevFilterIpEntry ::= SEQUENCE { + docsDevFilterIpIndex Integer32, + docsDevFilterIpStatus RowStatus, + docsDevFilterIpControl INTEGER, + + + + docsDevFilterIpIfIndex InterfaceIndexOrZero, + docsDevFilterIpDirection INTEGER, + docsDevFilterIpBroadcast TruthValue, + docsDevFilterIpSaddr IpAddress, + docsDevFilterIpSmask IpAddress, + docsDevFilterIpDaddr IpAddress, + docsDevFilterIpDmask IpAddress, + docsDevFilterIpProtocol Integer32, + docsDevFilterIpSourcePortLow Integer32, + docsDevFilterIpSourcePortHigh Integer32, + docsDevFilterIpDestPortLow Integer32, + docsDevFilterIpDestPortHigh Integer32, + docsDevFilterIpMatches ZeroBasedCounter32, + docsDevFilterIpTos OCTET STRING, + docsDevFilterIpTosMask OCTET STRING, + docsDevFilterIpContinue TruthValue, + docsDevFilterIpPolicyId Integer32 + } + +docsDevFilterIpIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Index used to order the application of filters. + The filter with the lowest index is always applied + first." + ::= { docsDevFilterIpEntry 1 } + +docsDevFilterIpStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Controls and reflects the status of rows in this + table. Specifying only this object (with the + appropriate index) on a CM is sufficient to create a + filter row that matches all inbound packets on the + ethernet interface and results in the packets being + discarded. docsDevFilterIpIfIndex (at least) must be + specified on a CMTS to create a row. Creation of the + rows may be done via either create-and-wait or + create-and-go, but the filter is not applied until this + object is set to (or changes to) active. There is no + restriction in changing any object in a row while this + object is set to active." + ::= { docsDevFilterIpEntry 2 } + + + + +docsDevFilterIpControl OBJECT-TYPE + SYNTAX INTEGER { + discard(1), + accept(2), + policy(3) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "If set to discard(1), all packets matching this filter + will be discarded, and scanning of the remainder of the + filter list will be aborted. If set to accept(2), all + packets matching this filter will be accepted for + further processing (e.g., bridging). If + docsDevFilterIpContinue is set to true, see if there + are other matches; otherwise, done. If set to + policy (3), execute the policy entries + matched by docsDevFilterIpPolicyId in + docsDevFilterPolicyTable. + + If docsDevFilterIpContinue is set to true, continue + scanning the table for other matches; otherwise, done." + DEFVAL { discard } + ::= { docsDevFilterIpEntry 3 } + +docsDevFilterIpIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The entry interface to which this filter applies. The + value corresponds to ifIndex for either a CATV MAC or + another interface. If the value is zero, the + filter applies to all interfaces. Default value in CMs + is the index of the customer-side (e.g., ethernet) + interface(s). In CMTSes, this object MUST be + specified to create a row in this table. + + Note that according to the DOCSIS OSSIv1.1 + specification, ifIndex '1' in the Cable Modem means + that this row applies to all CMCI (customer-facing) + interfaces." + REFERENCE + "DOCSIS OSSI 1.1 Specification, Section 3.3.4.1. and + DOCSIS OSSI 2.0 Specification, Section 6.3.4.1." + ::= { docsDevFilterIpEntry 4 } + +docsDevFilterIpDirection OBJECT-TYPE + + + + SYNTAX INTEGER { + inbound(1), + outbound(2), + both(3) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Determines whether the filter is applied to inbound(1) + traffic, outbound(2) traffic, or traffic in both(3) + directions." + DEFVAL { inbound } + ::= { docsDevFilterIpEntry 5 } + +docsDevFilterIpBroadcast OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "If set to true(1), the filter only applies to multicast + and broadcast traffic. If set to false(2), the filter + applies to all traffic." + DEFVAL { false } + ::= { docsDevFilterIpEntry 6 } + +docsDevFilterIpSaddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The source IP address, or portion thereof, that is to be + matched for this filter. The source address is first + masked (ANDed) against docsDevFilterIpSmask before + being compared to this value. A value of 0 for this + object and 0 for the mask matches all IP addresses." + DEFVAL { '00000000'h } + ::= { docsDevFilterIpEntry 7 } + +docsDevFilterIpSmask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A bit mask that is to be applied to the source address + prior to matching. This mask is not necessarily the + same as a subnet mask, but 1s bits must be leftmost and + contiguous." + DEFVAL { '00000000'h } + + + + ::= { docsDevFilterIpEntry 8 } + +docsDevFilterIpDaddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The destination IP address, or portion thereof, that is + to be matched for this filter. The destination address + is first masked (ANDed) against docsDevFilterIpDmask + before being compared to this value. A value of + 00000000 for this object and 00000000 for the mask + matches all IP addresses." + DEFVAL { '00000000'h } + ::= { docsDevFilterIpEntry 9 } + +docsDevFilterIpDmask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "A bit mask that is to be applied to the destination + address prior to matching. This mask is not necessarily + the same as a subnet mask, but 1s bits MUST be leftmost + and contiguous." + DEFVAL { '00000000'h } + ::= { docsDevFilterIpEntry 10 } + +docsDevFilterIpProtocol OBJECT-TYPE + SYNTAX Integer32 (0..256) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IP protocol value that is to be matched. For + example, icmp is 1, tcp is 6, and udp is 17. A value of + 256 matches ANY protocol." + REFERENCE "www.iana.org/assignments/protocol-numbers" + DEFVAL { 256 } + ::= { docsDevFilterIpEntry 11 } + +docsDevFilterIpSourcePortLow OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the inclusive lower bound of the transport-layer + source port range that is to be matched. If the IP + protocol of the packet is neither UDP nor TCP, this + + + + object is ignored during matching." + REFERENCE "www.iana.org/assignments/port-numbers" + DEFVAL { 0 } + ::= { docsDevFilterIpEntry 12 } + +docsDevFilterIpSourcePortHigh OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the inclusive upper bound of the transport-layer + source port range that is to be matched. If the IP + protocol of the packet is neither UDP nor TCP, this + object is ignored during matching." + REFERENCE "www.iana.org/assignments/port-numbers" + DEFVAL { 65535 } + ::= { docsDevFilterIpEntry 13 } + +docsDevFilterIpDestPortLow OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the inclusive lower bound of the transport-layer + destination port range that is to be matched. If the IP + protocol of the packet is neither UDP nor TCP, this + object is ignored during matching." + REFERENCE "www.iana.org/assignments/port-numbers" + DEFVAL { 0 } + ::= { docsDevFilterIpEntry 14 } + +docsDevFilterIpDestPortHigh OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the inclusive upper bound of the transport-layer + destination port range that is to be matched. If the IP + protocol of the packet is neither UDP nor TCP, this + object is ignored during matching." + REFERENCE "www.iana.org/assignments/port-numbers" + DEFVAL { 65535 } + ::= { docsDevFilterIpEntry 15 } + +docsDevFilterIpMatches OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "matches" + MAX-ACCESS read-only + + + + STATUS deprecated + DESCRIPTION + "Counts the number of times this filter was matched. + This object is initialized to 0 at boot, or at row + creation, and is reset only upon reboot." + ::= { docsDevFilterIpEntry 16 } + +docsDevFilterIpTos OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This is the value to be matched to the packet's + TOS (Type of Service) value (after the TOS value + is ANDed with docsDevFilterIpTosMask). A value for this + object of 0 and a mask of 0 matches all TOS values." + DEFVAL { '00'h } + ::= { docsDevFilterIpEntry 17 } + +docsDevFilterIpTosMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The mask to be applied to the packet's TOS value before + matching." + DEFVAL { '00'h } + ::= { docsDevFilterIpEntry 18 } + +docsDevFilterIpContinue OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "If this value is set to true and docsDevFilterIpControl + is anything but discard (1), continue scanning and + applying policies. See Section 3.3.3 for more + details." + DEFVAL { false } + ::= { docsDevFilterIpEntry 19 } + +docsDevFilterIpPolicyId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This object points to an entry in + docsDevFilterPolicyTable. If docsDevFilterIpControl + + + + is set to policy (3), execute all matching policies + in docsDevFilterPolicyTable. If no matching policy + exists, treat as if docsDevFilterIpControl were set + to accept (1). If this object is set to the value of + 0, there is no matching policy, and + docsDevFilterPolicyTable MUST NOT be consulted." + DEFVAL { 0 } + ::= { docsDevFilterIpEntry 20 } + +-- +-- Policy Mapping Table +-- + +docsDevFilterPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevFilterPolicyEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A Table that maps between a policy group ID and a set + of pointers to policies to be applied. All rows with + the same docsDevFilterPolicyId are part of the same + group of policy pointers and are applied in the order + in this table. docsDevFilterPolicyTable exists to + allow multiple policy actions (referenced by policy + pointers) to be applied to any given classified packet. + The policy actions are applied in index order. + For example: + + Index ID Type Action + 1 1 TOS 1 + 9 5 TOS 1 + 12 1 IPSEC 3 + + This says that a packet that matches a filter with + policy id 1 first has TOS policy 1 applied (which might + set the TOS bits to enable a higher priority) and next + has the IPSEC policy 3 applied (which may result in the + packets being dumped into a secure VPN to a remote + encryptor). + + Policy ID 0 is reserved for default actions and is + applied only to packets that match no filters in + docsDevFilterIpTable. + + Table entries MUST NOT persist across reboots for any + device. + + This table is deprecated. Instead, use the DiffServ MIB + + + + from RFC 3289." + ::= { docsDevFilter 5 } + +docsDevFilterPolicyEntry OBJECT-TYPE + SYNTAX DocsDevFilterPolicyEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry in the docsDevFilterPolicyTable. Entries are + created by Network Management. To create an entry, + docsDevFilterPolicyId MUST be specified." + INDEX { docsDevFilterPolicyIndex } + ::= { docsDevFilterPolicyTable 1 } + +DocsDevFilterPolicyEntry ::= SEQUENCE { + docsDevFilterPolicyIndex Integer32, + docsDevFilterPolicyId Integer32, +-- docsDevFilterPolicyType INTEGER, +-- docsDevFilterPolicyAction Integer32, + docsDevFilterPolicyStatus RowStatus, + docsDevFilterPolicyPtr RowPointer + } + +docsDevFilterPolicyIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION "Index value for the table." + ::= { docsDevFilterPolicyEntry 1 } + +docsDevFilterPolicyId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Policy ID for this entry. If a policy ID can apply to + multiple rows of this table, all relevant policies are + executed. Policy 0 (if populated) is applied to all + packets that do not match any of the filters. N.B. If + docsDevFilterIpPolicyId is set to 0, it DOES NOT match + policy 0 of this table." + ::= { docsDevFilterPolicyEntry 2 } + +-- The following two objects were removed and never used; however, +-- to preserve OID numbering, they are simply commented out to +-- to ensure that they are not used again. +-- docsDevFilterPolicyType ::= { docsDevFilterPolicyEntry 3 } +-- docsDevFilterPolicyAction ::= { docsDevFilterPolicyEntry 4 } + + + +docsDevFilterPolicyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Object used to create an entry in this table. There is + no restriction in changing any object in a row while + this object is set to active. + The following object MUST have a valid value before this + object can be set to active: docsDevFilterPolicyPtr." + ::= { docsDevFilterPolicyEntry 5 } + +docsDevFilterPolicyPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This object points to a row in an applicable filter + policy table. Currently, the only standard policy + table is docsDevFilterTosTable. + + Per the textual convention, this object points to the + first accessible object in the row; e.g., to point to a + row in docsDevFilterTosTable with an index of 21, the + value of this object would be the object identifier + docsDevTosStatus.21. + + Vendors are recommended to adhere to the same convention + when adding vendor-specific policy table extensions. + + If this pointer references an empty or non-existent + row, then no policy action is taken. + + The default upon row creation is a null pointer that + results in no policy action being taken." + DEFVAL { zeroDotZero } + ::= { docsDevFilterPolicyEntry 6 } + +-- +-- TOS Policy action table +-- + +docsDevFilterTosTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevFilterTosEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Table used to describe Type of Service (TOS) bits + + + + processing. + + This table is an adjunct to the docsDevFilterIpTable + and the docsDevFilterPolicy table. Entries in the + latter table can point to specific rows in this (and + other) tables and cause specific actions to be taken. + This table permits the manipulation of the value of the + Type of Service bits in the IP header of the matched + packet as follows: + + Set the tosBits of the packet to + (tosBits & docsDevFilterTosAndMask) | + docsDevFilterTosOrMask + + This construct allows you to do a clear and set of all + the TOS bits in a flexible manner. + + Table entries MUST NOT persist across reboots for any + device. + + This table is deprecated. Instead, use the DiffServ MIB + from RFC 3289." + ::= { docsDevFilter 6 } + +docsDevFilterTosEntry OBJECT-TYPE + SYNTAX DocsDevFilterTosEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A TOS policy entry." + INDEX { docsDevFilterTosIndex } + ::= { docsDevFilterTosTable 1 } + +DocsDevFilterTosEntry ::= SEQUENCE { + docsDevFilterTosIndex Integer32, + docsDevFilterTosStatus RowStatus, + docsDevFilterTosAndMask OCTET STRING, + docsDevFilterTosOrMask OCTET STRING + } + +docsDevFilterTosIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The unique index for this row. There are no ordering + requirements for this table, and any valid index may be + specified." + + + + ::= { docsDevFilterTosEntry 1 } + +docsDevFilterTosStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The object used to create and delete entries in this + table. A row created by specifying just this object + results in a row that specifies no change to the TOS + bits. A row may be created using either the + create-and-go or create-and-wait paradigms. There is + no restriction on the ability to change values in this + row while the row is active." + ::= { docsDevFilterTosEntry 2 } + +docsDevFilterTosAndMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This value is bitwise ANDed with the matched packet's + TOS bits." + DEFVAL { 'ff'h } + ::= { docsDevFilterTosEntry 3 } + +docsDevFilterTosOrMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This value is bitwise ORed with the result from the + AND procedure (tosBits & docsDevFilterTosAndMask). + The result then replaces the packet's TOS bits." + DEFVAL { '00'h } + ::= { docsDevFilterTosEntry 4 } + +-- +-- CPE IP Management and anti-spoofing group. Only implemented on +-- Cable Modems. +-- + +docsDevCpe OBJECT IDENTIFIER ::= { docsDevMIBObjects 7 } + +docsDevCpeEnroll OBJECT-TYPE + SYNTAX INTEGER { + none(1), + any(2) + + + + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the population of + docsDevFilterCpeTable. + If set to none, the filters must be set manually + by a network management action (either configuration + or SNMP set). + If set to any, the CM wiretaps the packets originating + from the ethernet and enrolls up to docsDevCpeIpMax + addresses as based on the source IPv4 or v6 addresses of + those packets." + DEFVAL { any } + ::= { docsDevCpe 1 } + +docsDevCpeIpMax OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the maximum number of CPEs allowed + to be learned behind this device. If set to zero, any + number of CPEs may connect up to the maximum permitted + for the device. + If set to -1, no filtering is done on CPE source + addresses, and no entries are made in the + docsDevFilterCpeTable via learning. If an attempt is + made to set this to a number greater than that + permitted for the device, it is set to that maximum." + DEFVAL { -1 } + ::= { docsDevCpe 2 } + +docsDevCpeTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevCpeEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table lists the IPv4 addresses seen (or permitted) + as source addresses in packets originating from the + customer interface on this device. In addition, this + table can be provisioned with the specific addresses + permitted for the CPEs via the normal row creation + mechanisms. Table entries MUST NOT persist across + reboots for any device. + + N.B. Management action can add entries in this table + and in docsDevCpeIpTable past the value of + + + + docsDevCpeIpMax. docsDevCpeIpMax ONLY restricts the + ability of the CM to add learned addresses + automatically. + + This table is deprecated and is replaced by + docsDevCpeInetTable." + ::= { docsDevCpe 3 } + +docsDevCpeEntry OBJECT-TYPE + SYNTAX DocsDevCpeEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry in the docsDevFilterCpeTable. There is one + entry for each IPv4 CPE seen or provisioned. If + docsDevCpeIpMax is set to -1, this table is ignored; + otherwise, upon receipt of an IP packet from the + customer interface of the CM, the source IP address is + checked against this table. If the address is in the + table, packet processing continues. If the address is + not in the table but docsDevCpeEnroll is set to any + and the sum of the table sizes of docsDevCpeTable and + docsDevCpeInetTable is less than docsDevCpeIpMax, the + address is added to the table, and packet processing + continues. Otherwise, the packet is dropped. + + The filtering actions specified by this table occur + after any LLC filtering (docsDevFilterLLCTable), but + prior to any IP filtering (docsDevFilterIpTable, + docsDevNmAccessTable)." + INDEX { docsDevCpeIp } + ::= {docsDevCpeTable 1 } + +DocsDevCpeEntry ::= SEQUENCE { + docsDevCpeIp IpAddress, + docsDevCpeSource INTEGER, + docsDevCpeStatus RowStatus + } + +docsDevCpeIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The IPv4 address to which this entry applies. + + N.B. Attempts to set all zeros or all ones address + values MUST be rejected." + + + + ::= { docsDevCpeEntry 1 } + +docsDevCpeSource OBJECT-TYPE + SYNTAX INTEGER { + other(1), + manual(2), + learned(3) + } + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object describes how this entry was created. If + the value is manual(2), this row was created by a + network management action (either configuration or + SNMP set). If set to learned(3), then it was found via + looking at the source IPv4 address of a received packet. + The value other(1) is used for any entries that do not + meet manual(2) or learned(3) criteria." + ::= { docsDevCpeEntry 2 } + +docsDevCpeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Standard object to manipulate rows. To create a row in + this table, one only needs to specify this object. + Management stations SHOULD use the create-and-go + mechanism for creating rows in this table." + ::= { docsDevCpeEntry 3 } + +-- +-- Internet CPE Management and anti spoofing group, for support of +-- non-IPv4 CPEs. +-- + +docsDevCpeInetTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsDevCpeInetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the IP addresses seen (or permitted) as + source addresses in packets originating from the + customer interface on this device. In addition, this + table can be provisioned with the specific addresses + permitted for the CPEs via the normal row creation + mechanisms. + + + + N.B. Management action can add entries in this table + and in docsDevCpeIpTable past the value of + docsDevCpeIpMax. docsDevCpeIpMax ONLY restricts the + ability of the CM to add learned addresses + automatically. + + Table entries MUST NOT persist across reboots for any + device. + + This table exactly mirrors docsDevCpeTable and applies + to IPv4 and IPv6 addresses." + ::= { docsDevCpe 4 } + +docsDevCpeInetEntry OBJECT-TYPE + SYNTAX DocsDevCpeInetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the docsDevFilterCpeInetTable. There is one + entry for each IP CPE seen or provisioned. If + docsDevCpeIpMax is set to -1, this table is ignored; + otherwise, upon receipt of an IP packet from the + customer interface of the CM, the source IP address is + checked against this table. If the address is in the + table, packet processing continues. If the address is + not in the table but docsDevCpeEnroll is set to any and + the sum of the table sizes for docsDevCpeTable and + docsDevCpeInetTable is less than docsDevCpeIpMax, the + address is added to the table, and packet processing + continues. Otherwise, the packet is dropped. + + The filtering actions specified by this table occur + after any LLC filtering (docsDevFilterLLCTable), but + prior to any IP filtering (docsDevFilterIpTable, + docsDevNmAccessTable). + + When an agent (cable modem) restarts, then all + dynamically created rows are lost." + INDEX { docsDevCpeInetType, docsDevCpeInetAddr } + ::= { docsDevCpeInetTable 1 } + +DocsDevCpeInetEntry ::= SEQUENCE { + docsDevCpeInetType InetAddressType, + docsDevCpeInetAddr InetAddress, + docsDevCpeInetSource INTEGER, + docsDevCpeInetRowStatus RowStatus + } + + + + +docsDevCpeInetType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of internet address of docsDevCpeInetAddr." + ::= { docsDevCpeInetEntry 1 } + +docsDevCpeInetAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Internet address to which this entry applies. + + Implementors need to be aware that if the size of + docsDevCpeInetAddr exceeds 114 octets OIDs of + instances of columns in this row will have more + than 128 sub-identifiers and cannot be accessed + using SNMPv1, SNMPv2c, or SNMPv3. Only unicast + address are allowed for this object." + ::= { docsDevCpeInetEntry 2 } + +docsDevCpeInetSource OBJECT-TYPE + SYNTAX INTEGER { + manual(2), + learned(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes how this entry was created. If + the value is manual(2), this row was created by a + network management action (either configuration or + SNMP set). If set to learned(3), then it was found + via looking at the source IP address of a received + packet." + ::= { docsDevCpeInetEntry 3 } + +docsDevCpeInetRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Standard object to manipulate rows. To create a row in + this table, one only needs to specify this object. + Management stations SHOULD use the create-and-go + mechanism for creating rows in this table." + + + + ::= { docsDevCpeInetEntry 4 } + + +-- +-- Placeholder for notifications/traps. +-- + +-- erroneous, DO NOT USE docsDevNotification +docsDevNotification OBJECT IDENTIFIER ::= { docsDev 2 } +-- erroneous, DO NOT USE docsDevNotification + +docsDevNotifications OBJECT IDENTIFIER ::= { docsDev 0 } + + +-- +-- RFC 2669 Conformance definitions +-- + +docsDevConformance OBJECT IDENTIFIER ::= { docsDev 3 } +docsDevGroups OBJECT IDENTIFIER ::= { docsDevConformance 1 } +docsDevCompliances OBJECT IDENTIFIER ::= { docsDevConformance 2 } + +docsDevBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The RFC 2669 compliance statement for MCNS/DOCSIS + Cable Modems and Cable Modem Termination Systems." + +MODULE -- docsDev + +-- conditionally mandatory groups + +GROUP docsDevBaseGroup + DESCRIPTION + "Mandatory in Cable Modems, optional in Cable Modem + Termination Systems." + +GROUP docsDevEventGroup + DESCRIPTION + "Mandatory in Cable Modems, optional in Cable Modem + Termination Systems." + +GROUP docsDevFilterGroup + DESCRIPTION + "Mandatory in Cable Modems, optional in Cable Modem + Termination Systems." + +GROUP docsDevNmAccessGroup + + + + DESCRIPTION + "This group is only implemented in devices that do not + implement the SNMPv3 User Security Model. It SHOULD NOT + be implemented by devices that conform to SNMPv3. + + For devices that do not implement SNMPv3 or later, this + group is Mandatory in Cable Modems and is optional + in Cable Modem Termination Systems." + +GROUP docsDevServerGroup + DESCRIPTION + "This group is implemented only in Cable Modems, and is + not implemented in Cable Modem Termination Systems." + +GROUP docsDevSoftwareGroup + DESCRIPTION + "This group is Mandatory in Cable Modems and optional in + Cable Modem Termination Systems." + +GROUP docsDevCpeGroup + DESCRIPTION + "This group is Mandatory in Cable Modems, and is + not implemented in Cable Modem Termination Systems." + +OBJECT docsDevSTPControl + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support noStFilterBpdu(2)." + +OBJECT docsDevNmAccessIp + DESCRIPTION + "It is compliant to recognize the IP address + 255.255.255.255 as referring to any NMS." + +OBJECT docsDevEvReporting + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support local(0). An agent need not + enforce that trap or syslog logging be accompanied + by local(0) or localVolatile(3) logging." + ::= { docsDevCompliances 1 } + +docsDevBaseGroup OBJECT-GROUP + OBJECTS { + docsDevRole, + docsDevDateTime, + + + + docsDevResetNow, + docsDevSerialNumber, + docsDevSTPControl + } + STATUS current + DESCRIPTION + "A collection of objects providing device status and + control." + ::= { docsDevGroups 1 } + +docsDevNmAccessGroup OBJECT-GROUP + OBJECTS { + docsDevNmAccessIp, + docsDevNmAccessIpMask, + docsDevNmAccessCommunity, + docsDevNmAccessControl, + docsDevNmAccessInterfaces, + docsDevNmAccessStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects for controlling access to SNMP + objects on cable devices. + + This group has been deprecated because all the + objects have been deprecated in favor of SNMPv3 and + Coexistence MIBs." + ::= { docsDevGroups 2 } + +docsDevSoftwareGroup OBJECT-GROUP + OBJECTS { + docsDevSwServer, + docsDevSwFilename, + docsDevSwAdminStatus, + docsDevSwOperStatus, + docsDevSwCurrentVers + } + STATUS deprecated + DESCRIPTION + "A collection of objects for controlling software + downloads. + + This group has been deprecated and replaced by + docsDevSoftwareGroupV2. Object docsDevSwServer + has been replaced by docsDevSwServerAddressType + and docsDevSwServerAddress, and + docsDevSwServerTransportProtocol has been added to + support TFTP and HTTP firmware downloads." + + + + ::= { docsDevGroups 3 } + +docsDevServerGroup OBJECT-GROUP + OBJECTS { + docsDevServerBootState, + docsDevServerDhcp, + docsDevServerTime, + docsDevServerTftp, + docsDevServerConfigFile + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing status about server + provisioning. + + This group has been deprecated and replaced by + docsDevServerGroupV2. The objects docsDevServerDhcp, + docsDevServerTime, and docsDevServerTftp have + been replaced by docsDevServerDhcpAddressType, + docsDevServerDhcpAddress, docsDevServerTimeAddressType, + docsDevServerTimeAddress, + docsDevServerConfigTftpAddressType, and + docsDevServerConfigTftpAddress." + ::= { docsDevGroups 4 } + +docsDevEventGroup OBJECT-GROUP + OBJECTS { + docsDevEvControl, + docsDevEvSyslog, + docsDevEvThrottleAdminStatus, + docsDevEvThrottleInhibited, + docsDevEvThrottleThreshold, + docsDevEvThrottleInterval, + docsDevEvReporting, + docsDevEvFirstTime, + docsDevEvLastTime, + docsDevEvCounts, + docsDevEvLevel, + docsDevEvId, + docsDevEvText + } + STATUS deprecated + DESCRIPTION + "A collection of objects used to control and monitor + events. + + This group has been deprecated and replaced by + docsDevEventGroupV2. The object docsDevEvSyslog has + + + + been replaced by docsDevEvSyslogAddressType and + docsDevEvSyslogAddress, and docsDevEvThrottleInhibited + has been replaced by + docsDevEvThrottleThresholdExceeded." + ::= { docsDevGroups 5 } + +docsDevFilterGroup OBJECT-GROUP + OBJECTS { + docsDevFilterLLCUnmatchedAction, + docsDevFilterIpDefault, + docsDevFilterLLCStatus, + docsDevFilterLLCIfIndex, + docsDevFilterLLCProtocolType, + docsDevFilterLLCProtocol, + docsDevFilterLLCMatches, + docsDevFilterIpControl, + docsDevFilterIpIfIndex, + docsDevFilterIpStatus, + docsDevFilterIpDirection, + docsDevFilterIpBroadcast, + docsDevFilterIpSaddr, + docsDevFilterIpSmask, + docsDevFilterIpDaddr, + docsDevFilterIpDmask, + docsDevFilterIpProtocol, + docsDevFilterIpSourcePortLow, + docsDevFilterIpSourcePortHigh, + docsDevFilterIpDestPortLow, + docsDevFilterIpDestPortHigh, + docsDevFilterIpMatches, + docsDevFilterIpTos, + docsDevFilterIpTosMask, + docsDevFilterIpContinue, + docsDevFilterIpPolicyId, + docsDevFilterPolicyId, + docsDevFilterPolicyStatus, + docsDevFilterPolicyPtr, + docsDevFilterTosStatus, + docsDevFilterTosAndMask, + docsDevFilterTosOrMask + } + STATUS deprecated + DESCRIPTION + "A collection of objects to specify filters at the link + layer and IPv4 layer. + + This group has been deprecated and replaced by various + groups from the DiffServ MIB." + + + + ::= { docsDevGroups 6 } + +docsDevCpeGroup OBJECT-GROUP + OBJECTS { + docsDevCpeEnroll, + docsDevCpeIpMax, + docsDevCpeSource, + docsDevCpeStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects used to control the number + and specific values of IPv4 addresses allowed for + associated Customer Premises Equipment (CPE). + + This group has been deprecated and replaced by + docsDevInetCpeGroup. The object docsDevCpeSource has + been replaced by docsDevCpeInetSource, and + docsDevCpeStatus has been replaced by + docsDevCpeInetRowStatus." + ::= { docsDevGroups 7 } + +-- +-- RFC 4639 Conformance definitions +-- + +docsDevGroupsV2 OBJECT IDENTIFIER ::= { docsDevConformance 3 } +docsDevCompliancesV2 OBJECT IDENTIFIER ::= { docsDevConformance 4 } + +docsDevCmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DOCSIS Cable Modems. + + This compliance statement applies to implementations + of DOCSIS versions that are not IPv6 capable." + +MODULE DIFFSERV-MIB -- RFC 3289 + +MANDATORY-GROUPS { + diffServMIBDataPathGroup, + diffServMIBClfrGroup, + diffServMIBClfrElementGroup, + diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, + diffServMIBDscpMarkActGroup, + diffServMIBCounterGroup, + diffServMIBAlgDropGroup + + + + } + +OBJECT diffServDataPathStatus -- same as RFC 3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + +OBJECT diffServClfrStatus -- same as RFC 3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + +OBJECT diffServClfrElementStatus -- same as RFC 3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + +OBJECT diffServMultiFieldClfrAddrType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServMultiFieldClfrSrcAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServMultiFieldClfrDstAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServAlgDropStatus -- same as RFC 3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + + + +OBJECT diffServDataPathStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServClfrStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServClfrElementStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServMultiFieldClfrStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServActionStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServCountActStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServAlgDropStorage + SYNTAX StorageType { volatile(2) } + DESCRIPTION + "An implementation is only required to support + volatile storage." + +OBJECT diffServAlgDropType + SYNTAX INTEGER { alwaysDrop(5) } + DESCRIPTION + "This object is only used to provide packet + filtering. Implementations need not support other + values of this enumeration." + + + +MODULE -- docsDev + +MANDATORY-GROUPS { + docsDevBaseGroup, + docsDevBaseIgmpGroup, + docsDevBaseMaxCpeGroup, + docsDevSoftwareGroupV2, + docsDevServerGroupV2, + docsDevEventGroupV2, + docsDevFilterLLCGroup + } + +-- conditionally mandatory groups + +GROUP docsDevInetCpeGroup + DESCRIPTION + "This group is optional in Cable Modems." + +OBJECT docsDevDateTime + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsDevSTPControl + SYNTAX INTEGER { noStFilterBpdu(2) } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support noStFilterBpdu(2)." + +OBJECT docsDevIgmpModeControl + SYNTAX INTEGER { passive(1) } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support passive(1)." + +OBJECT docsDevSwServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevSwServerAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + + + +OBJECT docsDevServerDhcpAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerDhcpAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerTimeAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerTimeAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerConfigTftpAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevServerConfigTftpAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevEvReporting + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support local(0)." + +OBJECT docsDevEvSyslogAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + + + + +OBJECT docsDevEvSyslogAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevSwServerTransportProtocol + SYNTAX INTEGER { tftp(1) } + DESCRIPTION + "An implementation is only required to support TFTP + software image downloads." + + ::= { docsDevCompliancesV2 1 } + +docsDevCmtsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DOCSIS Cable Modem + Termination Systems. + + This compliance statement applies to implementations + of DOCSIS versions that are not IPv6 capable." + +MODULE -- docsDev + +-- conditionally mandatory groups + +GROUP docsDevBaseGroup + DESCRIPTION + "Optional in Cable Modem Termination Systems." + +GROUP docsDevBaseIgmpGroup + DESCRIPTION + "Optional in Cable Modem Termination Systems." + +GROUP docsDevBaseMaxCpeGroup + DESCRIPTION + "This group MUST NOT be implemented in Cable Modem + Termination Systems." + +GROUP docsDevSoftwareGroupV2 + DESCRIPTION + "Optional in Cable Modem Termination Systems." + +GROUP docsDevServerGroupV2 + DESCRIPTION + "This group MUST NOT be implemented in Cable Modem + Termination Systems." + + + +GROUP docsDevEventGroupV2 + DESCRIPTION + "Optional in Cable Modem Termination Systems." + +GROUP docsDevFilterLLCGroup + DESCRIPTION + "This group MUST NOT be implemented in Cable Modem + Termination Systems. See the Subscriber Management + MIB for similar CMTS capability." + +GROUP docsDevInetCpeGroup + DESCRIPTION + "This group MUST NOT be implemented in Cable Modem + Termination Systems. See the Subscriber Management + MIB for similar CMTS capability." + +OBJECT docsDevDateTime + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsDevSTPControl + SYNTAX INTEGER { noStFilterBpdu(2) } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support noStFilterBpdu(2)." + +OBJECT docsDevIgmpModeControl + SYNTAX INTEGER { passive(1) } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support passive(1)." + +OBJECT docsDevSwServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevSwServerAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevEvReporting + + + + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only. + Devices need only support local(0)." + +OBJECT docsDevEvSyslogAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevEvSyslogAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsDevSwServerTransportProtocol + SYNTAX INTEGER { tftp(1) } + DESCRIPTION + "An implementation is only required to support TFTP + software image downloads." + + ::= { docsDevCompliancesV2 2 } + +docsDevBaseIgmpGroup OBJECT-GROUP + OBJECTS { + docsDevIgmpModeControl + } + STATUS current + DESCRIPTION + "An object providing cable device IGMP status and + control." + ::= { docsDevGroupsV2 1 } + +docsDevBaseMaxCpeGroup OBJECT-GROUP + OBJECTS { + docsDevMaxCpe + } + STATUS current + DESCRIPTION + "An object providing management of the maximum number of + CPEs permitted access through a cable modem." + ::= { docsDevGroupsV2 2 } + +docsDevNmAccessExtGroup OBJECT-GROUP + OBJECTS { + docsDevNmAccessTrapVersion + + + + } + STATUS deprecated + DESCRIPTION + "An object, in addition to the objects in + docsDevNmAccessGroup, for controlling access to + SNMP objects on cable devices. + + This group is included in this MIB due to existing + implementations of docsDevNmAccessTrapVersion in + DOCSIS cable modems. + + This group has been deprecated because the object has + been deprecated in favor of SNMPv3 and Coexistence + MIBs." + ::= { docsDevGroupsV2 3 } + +docsDevSoftwareGroupV2 OBJECT-GROUP + OBJECTS { + docsDevSwFilename, + docsDevSwAdminStatus, + docsDevSwOperStatus, + docsDevSwCurrentVers, + docsDevSwServerAddressType, + docsDevSwServerAddress, + docsDevSwServerTransportProtocol + } + STATUS current + DESCRIPTION + "A collection of objects for controlling software + downloads. This group replaces docsDevSoftwareGroup." + ::= { docsDevGroupsV2 4 } + +docsDevServerGroupV2 OBJECT-GROUP + OBJECTS { + docsDevServerBootState, + docsDevServerDhcpAddressType, + docsDevServerDhcpAddress, + docsDevServerTimeAddressType, + docsDevServerTimeAddress, + docsDevServerConfigTftpAddressType, + docsDevServerConfigTftpAddress, + docsDevServerConfigFile + } + STATUS current + DESCRIPTION + "A collection of objects providing status about server + provisioning. This group replaces docsDevServerGroup." + ::= { docsDevGroupsV2 5 } + + + +docsDevEventGroupV2 OBJECT-GROUP + OBJECTS { + docsDevEvControl, + docsDevEvThrottleAdminStatus, + docsDevEvThrottleThreshold, + docsDevEvThrottleInterval, + docsDevEvReporting, + docsDevEvFirstTime, + docsDevEvLastTime, + docsDevEvCounts, + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsDevEvSyslogAddressType, + docsDevEvSyslogAddress, + docsDevEvThrottleThresholdExceeded + } + STATUS current + DESCRIPTION + "A collection of objects used to control and monitor + events. This group replaces docsDevEventGroup. + The event reporting mechanism, and more specifically + docsDevEvReporting, can be used to take advantage of + the event reporting features of RFC3413 and RFC3014." + ::= { docsDevGroupsV2 6 } + +docsDevFilterLLCGroup OBJECT-GROUP + OBJECTS { + docsDevFilterLLCUnmatchedAction, + docsDevFilterLLCStatus, + docsDevFilterLLCIfIndex, + docsDevFilterLLCProtocolType, + docsDevFilterLLCProtocol, + docsDevFilterLLCMatches + } + STATUS current + DESCRIPTION + "A collection of objects to specify link layer filters." + ::= { docsDevGroupsV2 7 } + +docsDevInetCpeGroup OBJECT-GROUP + OBJECTS { + docsDevCpeEnroll, + docsDevCpeIpMax, + docsDevCpeInetSource, + docsDevCpeInetRowStatus + } + STATUS current + + + + DESCRIPTION + "A collection of objects used to control the number + and specific values of Internet (e.g., IPv4 and IPv6) + addresses allowed for associated Customer Premises + Equipment (CPE)." + ::= { docsDevGroupsV2 8 } + +END diff --git a/mibs/ietf/DOCS-IETF-BPI2-MIB b/mibs/ietf/DOCS-IETF-BPI2-MIB new file mode 100644 index 0000000..f538a3e --- /dev/null +++ b/mibs/ietf/DOCS-IETF-BPI2-MIB @@ -0,0 +1,3644 @@ +DOCS-IETF-BPI2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, + Unsigned32, + Counter32, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + TEXTUAL-CONVENTION, + MacAddress, + RowStatus, + TruthValue, + DateAndTime, + StorageType + FROM SNMPv2-TC -- [RFC2579] + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF -- [RFC2580] + ifIndex + FROM IF-MIB -- [RFC2863] + InetAddressType, + InetAddress + + + + FROM INET-ADDRESS-MIB; -- [RFC4001] + + docsBpi2MIB MODULE-IDENTITY + LAST-UPDATED "200507200000Z" -- July 20, 2005 + ORGANIZATION "IETF IP over Cable Data Network (IPCDN) + Working Group" + CONTACT-INFO "--------------------------------------- + Stuart M. Green + E-mail: rubbersoul3@yahoo.com + --------------------------------------- + Kaz Ozawa + Automotive Systems Development Center + TOSHIBA CORPORATION + 1-1, Shibaura 1-Chome + Minato-ku, Tokyo 105-8001 + Japan + Phone: +81-3-3457-8569 + Fax: +81-3-5444-9325 + E-mail: Kazuyoshi.Ozawa@toshiba.co.jp + --------------------------------------- + Alexander Katsnelson + Postal: + Tel: +1-303-680-3924 + E-mail: katsnelson6@peoplepc.com + --------------------------------------- + Eduardo Cardona + Postal: + Cable Television Laboratories, Inc. + 858 Coal Creek Circle + Louisville, CO 80027- 9750 + U.S.A. + Tel: +1 303 661 9100 + Fax: +1 303 661 9199 + E-mail: e.cardona@cablelabs.com + --------------------------------------- + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn. + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn. + Co-chairs: Richard Woundy, rwoundy@cisco.com + Jean-Francois Mule, jfm@cablelabs.com" + DESCRIPTION + "This is the MIB module for the DOCSIS Baseline + Privacy Plus Interface (BPI+) at cable modems (CMs) + and cable modem termination systems (CMTSs). + + Copyright (C) The Internet Society (2005). This + + + + version of this MIB module is part of RFC 4131; see + the RFC itself for full legal notices." + + REVISION "200507200000Z" -- July 20, 2005 + DESCRIPTION + "Initial version of the IETF BPI+ MIB module. + This version published as RFC 4131." + ::= { mib-2 126 } + + -- Textual conventions + +DocsX509ASN1DEREncodedCertificate ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An X509 digital certificate encoded as an ASN.1 DER + object." + SYNTAX OCTET STRING (SIZE (0..4096)) + +DocsSAId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Security Association identifier (SAID)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface + specification, Section 2.1.3, BPI+ Security + Associations" + SYNTAX Integer32 (1..16383) + +DocsSAIdOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Security Association identifier (SAID). The value + zero indicates that the SAID is yet to be determined." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface + specification, Section 2.1.3, BPI+ Security + Associations" + SYNTAX Unsigned32 (0 | 1..16383) + +DocsBpkmSAType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of security association (SA). + The values of the named-numbers are associated + with the BPKM SA-Type attributes: + 'primary' corresponds to code '1', 'static' to code '2', + + + + and 'dynamic' to code '3'. + The 'none' value must only be used if the SA type has yet + to be determined." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface + specification, Section 4.2.2.24" + SYNTAX INTEGER { + none(0), + primary(1), + static(2), + dynamic(3) + } + +DocsBpkmDataEncryptAlg ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The list of data encryption algorithms defined for + the DOCSIS interface in the BPKM cryptographic-suite + parameter. The value 'none' indicates that the SAID + being referenced has no data encryption." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + SYNTAX INTEGER { + none(0), + des56CbcMode(1), + des40CbcMode(2), + t3Des128CbcMode(3), + aes128CbcMode(4), + aes256CbcMode(5) + } + +DocsBpkmDataAuthentAlg ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The list of data integrity algorithms defined for the + DOCSIS interface in the BPKM cryptographic-suite parameter. + The value 'none' indicates that no data integrity is used for + the SAID being referenced." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + SYNTAX INTEGER { + none(0), + hmacSha196(1) + } + + docsBpi2MIBObjects OBJECT IDENTIFIER ::= { docsBpi2MIB 1 } + + + + -- Cable Modem Group + + docsBpi2CmObjects OBJECT IDENTIFIER ::= { docsBpi2MIBObjects 1 } + + -- + -- The BPI+ base and authorization table for CMs, + -- indexed by ifIndex + -- + + docsBpi2CmBaseTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmBaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the basic and authorization- + related Baseline Privacy Plus attributes of each CM MAC + interface." + ::= { docsBpi2CmObjects 1 } + + docsBpi2CmBaseEntry OBJECT-TYPE + SYNTAX DocsBpi2CmBaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing attributes of + one CM MAC interface. An entry in this table exists for + each ifEntry with an ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsBpi2CmBaseTable 1 } + + DocsBpi2CmBaseEntry ::= SEQUENCE { + docsBpi2CmPrivacyEnable TruthValue, + docsBpi2CmPublicKey OCTET STRING, + docsBpi2CmAuthState INTEGER, + docsBpi2CmAuthKeySequenceNumber Integer32, + docsBpi2CmAuthExpiresOld DateAndTime, + docsBpi2CmAuthExpiresNew DateAndTime, + docsBpi2CmAuthReset TruthValue, + docsBpi2CmAuthGraceTime Integer32, + docsBpi2CmTEKGraceTime Integer32, + docsBpi2CmAuthWaitTimeout Integer32, + docsBpi2CmReauthWaitTimeout Integer32, + docsBpi2CmOpWaitTimeout Integer32, + docsBpi2CmRekeyWaitTimeout Integer32, + docsBpi2CmAuthRejectWaitTimeout Integer32, + docsBpi2CmSAMapWaitTimeout Integer32, + docsBpi2CmSAMapMaxRetries Integer32, + docsBpi2CmAuthentInfos Counter32, + + + + docsBpi2CmAuthRequests Counter32, + docsBpi2CmAuthReplies Counter32, + docsBpi2CmAuthRejects Counter32, + docsBpi2CmAuthInvalids Counter32, + docsBpi2CmAuthRejectErrorCode INTEGER, + docsBpi2CmAuthRejectErrorString SnmpAdminString, + docsBpi2CmAuthInvalidErrorCode INTEGER, + docsBpi2CmAuthInvalidErrorString SnmpAdminString + } + + docsBpi2CmPrivacyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies whether this CM is + provisioned to run Baseline Privacy Plus." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1." + ::= { docsBpi2CmBaseEntry 1 } + + docsBpi2CmPublicKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..524)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is a DER-encoded + RSAPublicKey ASN.1 type string, as defined in the RSA + Encryption Standard (PKCS #1), corresponding to the + public key of the CM." + + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.4." + ::= { docsBpi2CmBaseEntry 2 } + + docsBpi2CmAuthState OBJECT-TYPE + SYNTAX INTEGER { + start(1), + authWait(2), + authorized(3), + reauthWait(4), + authRejectWait(5), + silent(6) + } + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The value of this object is the state of the CM + authorization FSM. The start state indicates that FSM is + in its initial state." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.2.1." + ::= { docsBpi2CmBaseEntry 3 } + + docsBpi2CmAuthKeySequenceNumber OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the most recent + authorization key sequence number for this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.10." + ::= { docsBpi2CmBaseEntry 4 } + + docsBpi2CmAuthExpiresOld OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time for + expiration of the immediate predecessor of the most recent + authorization key for this FSM. If this FSM has only one + authorization key, then the value is the time of activation + of this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.9." + ::= { docsBpi2CmBaseEntry 5 } + + docsBpi2CmAuthExpiresNew OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time for + expiration of the most recent authorization key for this + FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.9." + ::= { docsBpi2CmBaseEntry 6 } + + + + docsBpi2CmAuthReset OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'true' generates a Reauthorize + event in the authorization FSM. Reading this object always + returns FALSE. + + This object is for testing purposes only, and therefore it + is not required to be associated with a last reset + object." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.2.3.4." + ::= { docsBpi2CmBaseEntry 7 } + + docsBpi2CmAuthGraceTime OBJECT-TYPE + SYNTAX Integer32 (1..6047999) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the grace time for an + authorization key in seconds. A CM is expected to start + trying to get a new authorization key beginning + AuthGraceTime seconds before the most recent authorization + key actually expires." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.3." + ::= { docsBpi2CmBaseEntry 8 } + + docsBpi2CmTEKGraceTime OBJECT-TYPE + SYNTAX Integer32 (1..302399) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the grace time for + the TEK in seconds. The CM is expected to start trying to + acquire a new TEK beginning TEK GraceTime seconds before + the expiration of the most recent TEK." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.6." + ::= { docsBpi2CmBaseEntry 9 } + + + + + docsBpi2CmAuthWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..30) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Authorize Wait + Timeout in seconds." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.1." + ::= { docsBpi2CmBaseEntry 10 } + + docsBpi2CmReauthWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..30) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Reauthorize Wait + Timeout in seconds." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.2." + ::= { docsBpi2CmBaseEntry 11 } + + docsBpi2CmOpWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..10) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Operational Wait + Timeout in seconds." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.4." + ::= { docsBpi2CmBaseEntry 12 } + + docsBpi2CmRekeyWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..10) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Rekey Wait Timeout + in seconds." + REFERENCE + + + + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.5." + ::= { docsBpi2CmBaseEntry 13 } + + docsBpi2CmAuthRejectWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..600) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Authorization Reject + Wait Timeout in seconds." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.7." + ::= { docsBpi2CmBaseEntry 14 } + + docsBpi2CmSAMapWaitTimeout OBJECT-TYPE + SYNTAX Integer32 (1..10) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the retransmission + interval, in seconds, of SA Map Requests from the MAP Wait + state." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.8." + ::= { docsBpi2CmBaseEntry 15 } + + docsBpi2CmSAMapMaxRetries OBJECT-TYPE + SYNTAX Integer32 (0..10) + UNITS "count" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the maximum number of + Map Request retries allowed." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.1.1.1.9." + ::= { docsBpi2CmBaseEntry 16 } + + docsBpi2CmAuthentInfos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The value of this object is the number of times + the CM has transmitted an Authentication Information + message. Discontinuities in the value of this counter can + occur at re-initialization of the management system, and at + other times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.9." + ::= { docsBpi2CmBaseEntry 17 } + + docsBpi2CmAuthRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has transmitted an Authorization Request message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.1." + ::= { docsBpi2CmBaseEntry 18 } + + docsBpi2CmAuthReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has received an Authorization Reply message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.2." + ::= { docsBpi2CmBaseEntry 19 } + + docsBpi2CmAuthRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The value of this object is the number of times the CM + has received an Authorization Reject message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.3." + ::= { docsBpi2CmBaseEntry 20 } + + docsBpi2CmAuthInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the count of times the CM + has received an Authorization Invalid message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.7." + ::= { docsBpi2CmBaseEntry 21 } + + docsBpi2CmAuthRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unauthorizedSaid(4), + permanentAuthorizationFailure(8), + timeOfDayNotAcquired(11) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent + Authorization Reject message received by the CM. This has + the value unknown(2) if the last Error-Code value was 0 and + none(1) if no Authorization Reject message has been received + since reboot." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Sections 4.2.1.3 and 4.2.2.15." + ::= { docsBpi2CmBaseEntry 22 } + + docsBpi2CmAuthRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Authorization Reject message received by the + CM. This is a zero length string if no Authorization + Reject message has been received since reboot." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.3 and 4.2.2.6." + ::= { docsBpi2CmBaseEntry 23 } + + docsBpi2CmAuthInvalidErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unsolicited(5), + invalidKeySequence(6), + keyRequestAuthenticationFailure(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent + Authorization Invalid message received by the CM. This has + the value unknown(2) if the last Error-Code value was 0 and + none(1) if no Authorization Invalid message has been received + since reboot." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.7 and 4.2.2.15." + ::= { docsBpi2CmBaseEntry 24 } + + docsBpi2CmAuthInvalidErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Authorization Invalid message received by the + CM. This is a zero length string if no Authorization + + + + Invalid message has been received since reboot." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.7 and 4.2.2.6." + ::= { docsBpi2CmBaseEntry 25 } + + -- + -- The CM TEK Table, indexed by ifIndex and SAID + -- + + docsBpi2CmTEKTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmTEKEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of each CM + Traffic Encryption Key (TEK) association. The CM maintains + (no more than) one TEK association per SAID per CM MAC + interface." + ::= { docsBpi2CmObjects 2 } + + docsBpi2CmTEKEntry OBJECT-TYPE + SYNTAX DocsBpi2CmTEKEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing the TEK + association attributes of one SAID. The CM MUST create one + entry per SAID, regardless of whether the SAID was obtained + from a Registration Response message, from an Authorization + Reply message, or from any dynamic SAID establishment + mechanisms." + INDEX { ifIndex, docsBpi2CmTEKSAId } + ::= { docsBpi2CmTEKTable 1 } + + DocsBpi2CmTEKEntry ::= SEQUENCE { + docsBpi2CmTEKSAId DocsSAId, + docsBpi2CmTEKSAType DocsBpkmSAType, + docsBpi2CmTEKDataEncryptAlg DocsBpkmDataEncryptAlg, + docsBpi2CmTEKDataAuthentAlg DocsBpkmDataAuthentAlg, + docsBpi2CmTEKState INTEGER, + docsBpi2CmTEKKeySequenceNumber Integer32, + docsBpi2CmTEKExpiresOld DateAndTime, + docsBpi2CmTEKExpiresNew DateAndTime, + docsBpi2CmTEKKeyRequests Counter32, + docsBpi2CmTEKKeyReplies Counter32, + docsBpi2CmTEKKeyRejects Counter32, + docsBpi2CmTEKInvalids Counter32, + + + + docsBpi2CmTEKAuthPends Counter32, + docsBpi2CmTEKKeyRejectErrorCode INTEGER, + docsBpi2CmTEKKeyRejectErrorString SnmpAdminString, + docsBpi2CmTEKInvalidErrorCode INTEGER, + docsBpi2CmTEKInvalidErrorString SnmpAdminString + } + + docsBpi2CmTEKSAId OBJECT-TYPE + SYNTAX DocsSAId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is the DOCSIS Security + Association ID (SAID)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.12." + ::= { docsBpi2CmTEKEntry 1 } + + docsBpi2CmTEKSAType OBJECT-TYPE + SYNTAX DocsBpkmSAType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the type of security + association." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 2.1.3." + ::= { docsBpi2CmTEKEntry 2 } + + docsBpi2CmTEKDataEncryptAlg OBJECT-TYPE + SYNTAX DocsBpkmDataEncryptAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data encryption + algorithm for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmTEKEntry 3 } + + docsBpi2CmTEKDataAuthentAlg OBJECT-TYPE + SYNTAX DocsBpkmDataAuthentAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the data authentication + algorithm for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmTEKEntry 4 } + + docsBpi2CmTEKState OBJECT-TYPE + SYNTAX INTEGER { + start(1), + opWait(2), + opReauthWait(3), + operational(4), + rekeyWait(5), + rekeyReauthWait(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the state of the + indicated TEK FSM. The start(1) state indicates that the + FSM is in its initial state." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.3.1." + ::= { docsBpi2CmTEKEntry 5 } + + docsBpi2CmTEKKeySequenceNumber OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the most recent TEK + key sequence number for this TEK FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.2.10 and 4.2.2.13." + ::= { docsBpi2CmTEKEntry 6 } + + docsBpi2CmTEKExpiresOld OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time for + expiration of the immediate predecessor of the most recent + TEK for this FSM. If this FSM has only one TEK, then the + value is the time of activation of this FSM." + + + + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.5 and 4.2.2.9." + ::= { docsBpi2CmTEKEntry 7 } + + docsBpi2CmTEKExpiresNew OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time for + expiration of the most recent TEK for this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.5 and 4.2.2.9." + ::= { docsBpi2CmTEKEntry 8 } + + docsBpi2CmTEKKeyRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has transmitted a Key Request message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.4." + ::= { docsBpi2CmTEKEntry 9 } + + docsBpi2CmTEKKeyReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has received a Key Reply message, including a message whose + authentication failed. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Section 4.2.1.5." + ::= { docsBpi2CmTEKEntry 10 } + + docsBpi2CmTEKKeyRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has received a Key Reject message, including a message + whose authentication failed. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.6." + ::= { docsBpi2CmTEKEntry 11 } + + docsBpi2CmTEKInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the CM + has received a TEK Invalid message, including a message + whose authentication failed. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.8." + ::= { docsBpi2CmTEKEntry 12 } + + docsBpi2CmTEKAuthPends OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the count of times an + Authorization Pending (Auth Pend) event occurred in this + FSM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.3.3.3." + ::= { docsBpi2CmTEKEntry 13 } + + docsBpi2CmTEKKeyRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedSaid(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent Key Reject + message received by the CM. This has the value unknown(2) if + the last Error-Code value was 0 and none(1) if no Key + Reject message has been received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.6 and 4.2.2.15." + ::= { docsBpi2CmTEKEntry 14 } + + docsBpi2CmTEKKeyRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Key Reject message received by the CM. This is + a zero length string if no Key Reject message has been + received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.6 and 4.2.2.6." + ::= { docsBpi2CmTEKEntry 15 } + + docsBpi2CmTEKInvalidErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + invalidKeySequence(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the enumerated + description of the Error-Code in the most recent TEK Invalid + message received by the CM. This has the value unknown(2) if + the last Error-Code value was 0 and none(1) if no TEK + Invalid message has been received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.8 and 4.2.2.15." + ::= { docsBpi2CmTEKEntry 16 } + + docsBpi2CmTEKInvalidErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent TEK Invalid message received by the CM. This is + a zero length string if no TEK Invalid message has been + received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.8 and 4.2.2.6." + ::= { docsBpi2CmTEKEntry 17 } + + -- + -- The CM Multicast Objects Group + -- + + docsBpi2CmMulticastObjects OBJECT IDENTIFIER + ::= { docsBpi2CmObjects 3 } + + -- + -- The CM Dynamic IP Multicast Mapping Table, indexed by + -- docsBpi2CmIpMulticastIndex and by ifIndex + -- + + docsBpi2CmIpMulticastMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmIpMulticastMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maps multicast IP addresses to SAIDs per + CM MAC Interface. + It is intended to map multicast IP addresses associated + with SA MAP Request messages." + ::= { docsBpi2CmMulticastObjects 1 } + + docsBpi2CmIpMulticastMapEntry OBJECT-TYPE + + + + SYNTAX DocsBpi2CmIpMulticastMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing the mapping of + one multicast IP address to one SAID, as well as + associated state, message counters, and error information. + + An entry may be removed from this table upon the reception + of an SA Map Reject." + INDEX { ifIndex, docsBpi2CmIpMulticastIndex } + ::= { docsBpi2CmIpMulticastMapTable 1 } + + DocsBpi2CmIpMulticastMapEntry ::= SEQUENCE { + docsBpi2CmIpMulticastIndex Unsigned32, + docsBpi2CmIpMulticastAddressType InetAddressType, + docsBpi2CmIpMulticastAddress InetAddress, + docsBpi2CmIpMulticastSAId DocsSAIdOrZero, + docsBpi2CmIpMulticastSAMapState INTEGER, + docsBpi2CmIpMulticastSAMapRequests Counter32, + docsBpi2CmIpMulticastSAMapReplies Counter32, + docsBpi2CmIpMulticastSAMapRejects Counter32, + docsBpi2CmIpMulticastSAMapRejectErrorCode INTEGER, + docsBpi2CmIpMulticastSAMapRejectErrorString SnmpAdminString + } + + docsBpi2CmIpMulticastIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this row." + ::= { docsBpi2CmIpMulticastMapEntry 1 } + + docsBpi2CmIpMulticastAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet address for + docsBpi2CmIpMulticastAddress." + ::= { docsBpi2CmIpMulticastMapEntry 2 } + + docsBpi2CmIpMulticastAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object represents the IP multicast address + to be mapped. The type of this address is determined by + the value of the docsBpi2CmIpMulticastAddressType object." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 5.4." + ::= { docsBpi2CmIpMulticastMapEntry 3 } + + docsBpi2CmIpMulticastSAId OBJECT-TYPE + SYNTAX DocsSAIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the SAID to which the IP + multicast address has been mapped. If no SA Map Reply has + been received for the IP address, this object should have + the value 0." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.12." + ::= { docsBpi2CmIpMulticastMapEntry 4 } + + docsBpi2CmIpMulticastSAMapState OBJECT-TYPE + SYNTAX INTEGER { + start(1), + mapWait(2), + mapped(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the state of the SA + Mapping FSM for this IP." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 5.3.1." + ::= { docsBpi2CmIpMulticastMapEntry 5 } + + docsBpi2CmIpMulticastSAMapRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CM has transmitted an SA Map Request message for this IP. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.10." + ::= { docsBpi2CmIpMulticastMapEntry 6 } + + docsBpi2CmIpMulticastSAMapReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CM has received an SA Map Reply message for this IP. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.11." + ::= { docsBpi2CmIpMulticastMapEntry 7 } + + docsBpi2CmIpMulticastSAMapRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CM has received an SA MAP Reject message for this IP. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.12." + ::= { docsBpi2CmIpMulticastMapEntry 8 } + + docsBpi2CmIpMulticastSAMapRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + noAuthForRequestedDSFlow(9), + dsFlowNotMappedToSA(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the enumerated + description of the Error-Code in the most recent SA Map + Reject message sent in response to an SA Map Request for + This IP. It has the value none(1) if no SA MAP Reject + message has been received since entry creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.12 and 4.2.2.15." + ::= { docsBpi2CmIpMulticastMapEntry 9 } + + docsBpi2CmIpMulticastSAMapRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in + the most recent SA Map Reject message sent in response to + an SA Map Request for this IP. It is a zero length string + if no SA Map Reject message has been received since entry + creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.12 and 4.2.2.6." + ::= { docsBpi2CmIpMulticastMapEntry 10 } + + -- + -- CM Cert Objects + -- + + docsBpi2CmCertObjects OBJECT IDENTIFIER + ::= { docsBpi2CmObjects 4 } + + -- + -- CM Device Cert Table + -- + + docsBpi2CmDeviceCertTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmDeviceCertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the Baseline Privacy Plus + device certificates for each CM MAC interface." + ::= { docsBpi2CmCertObjects 1 } + + docsBpi2CmDeviceCertEntry OBJECT-TYPE + SYNTAX DocsBpi2CmDeviceCertEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Each entry contains the device certificates of + one CM MAC interface. An entry in this table exists for + each ifEntry with an ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsBpi2CmDeviceCertTable 1 } + + DocsBpi2CmDeviceCertEntry ::= SEQUENCE { + docsBpi2CmDeviceCmCert + DocsX509ASN1DEREncodedCertificate, + docsBpi2CmDeviceManufCert + DocsX509ASN1DEREncodedCertificate + } + + docsBpi2CmDeviceCmCert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The X509 DER-encoded cable modem certificate. + Note: This object can be set only when the value is the + zero-length OCTET STRING; otherwise, an error of + 'inconsistentValue' is returned. Once the object + contains the certificate, its access MUST be read-only + and persists after re-initialization of the + managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.1." + ::= { docsBpi2CmDeviceCertEntry 1 } + + docsBpi2CmDeviceManufCert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The X509 DER-encoded manufacturer certificate that + signed the cable modem certificate." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.1." + ::= { docsBpi2CmDeviceCertEntry 2 } + + -- + -- CM Crypto Suite Table + -- + + + + + docsBpi2CmCryptoSuiteTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmCryptoSuiteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the Baseline Privacy Plus + cryptographic suite capabilities for each CM MAC + interface." + ::= { docsBpi2CmObjects 5 } + + docsBpi2CmCryptoSuiteEntry OBJECT-TYPE + SYNTAX DocsBpi2CmCryptoSuiteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a cryptographic suite pair + that this CM MAC supports." + INDEX { ifIndex, docsBpi2CmCryptoSuiteIndex } + ::= { docsBpi2CmCryptoSuiteTable 1 } + + DocsBpi2CmCryptoSuiteEntry ::= SEQUENCE { + docsBpi2CmCryptoSuiteIndex Unsigned32, + docsBpi2CmCryptoSuiteDataEncryptAlg + DocsBpkmDataEncryptAlg, + docsBpi2CmCryptoSuiteDataAuthentAlg + DocsBpkmDataAuthentAlg + } + + docsBpi2CmCryptoSuiteIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..1000) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for a cryptographic suite row." + ::= { docsBpi2CmCryptoSuiteEntry 1 } + + docsBpi2CmCryptoSuiteDataEncryptAlg OBJECT-TYPE + SYNTAX DocsBpkmDataEncryptAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data encryption + algorithm for this cryptographic suite capability." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmCryptoSuiteEntry 2 } + + + + + docsBpi2CmCryptoSuiteDataAuthentAlg OBJECT-TYPE + SYNTAX DocsBpkmDataAuthentAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data authentication + algorithm for this cryptographic suite capability." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmCryptoSuiteEntry 3 } + + -- Cable Modem Termination System Group + +docsBpi2CmtsObjects OBJECT IDENTIFIER ::= { docsBpi2MIBObjects 2 } + + -- + -- SPECIAL NOTE: For the following CMTS tables, when a CM is + -- running in BPI mode, replace SAID (Security Association ID) + -- with SID (Service ID). The CMTS is required to map SAIDs and + -- SIDs to one contiguous space. + -- + + -- + -- The BPI+ base table for CMTSs, indexed by ifIndex + -- + + docsBpi2CmtsBaseTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsBaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the basic Baseline Privacy + attributes of each CMTS MAC interface." + ::= { docsBpi2CmtsObjects 1 } + + docsBpi2CmtsBaseEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsBaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing attributes of + one CMTS MAC interface. An entry in this table exists for + each ifEntry with an ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsBpi2CmtsBaseTable 1 } + + DocsBpi2CmtsBaseEntry ::= SEQUENCE { + + + + docsBpi2CmtsDefaultAuthLifetime Integer32, + docsBpi2CmtsDefaultTEKLifetime Integer32, + docsBpi2CmtsDefaultSelfSignedManufCertTrust INTEGER, + docsBpi2CmtsCheckCertValidityPeriods TruthValue, + docsBpi2CmtsAuthentInfos Counter32, + docsBpi2CmtsAuthRequests Counter32, + docsBpi2CmtsAuthReplies Counter32, + docsBpi2CmtsAuthRejects Counter32, + docsBpi2CmtsAuthInvalids Counter32, + docsBpi2CmtsSAMapRequests Counter32, + docsBpi2CmtsSAMapReplies Counter32, + docsBpi2CmtsSAMapRejects Counter32 + } + + docsBpi2CmtsDefaultAuthLifetime OBJECT-TYPE + SYNTAX Integer32 (1..6048000) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the default lifetime, in + seconds, that the CMTS assigns to a new authorization key. + This object value persists after re-initialization of the + managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.2." + DEFVAL { 604800 } + ::= { docsBpi2CmtsBaseEntry 1 } + + docsBpi2CmtsDefaultTEKLifetime OBJECT-TYPE + SYNTAX Integer32 (1..604800) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the default lifetime, in + seconds, that the CMTS assigns to a new Traffic Encryption + Key (TEK). + This object value persists after re-initialization of the + managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Appendix A.2." + DEFVAL { 43200 } + ::= { docsBpi2CmtsBaseEntry 2 } + + docsBpi2CmtsDefaultSelfSignedManufCertTrust OBJECT-TYPE + + + + SYNTAX INTEGER { + trusted (1), + untrusted (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines the default trust of + self-signed manufacturer certificate entries, contained + in docsBpi2CmtsCACertTable, and created after this + object is set. + This object need not persist after re-initialization + of the managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1" + ::= { docsBpi2CmtsBaseEntry 3 } + + docsBpi2CmtsCheckCertValidityPeriods OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'true' causes all chained and + root certificates in the chain to have their validity + periods checked against the current time of day, when + the CMTS receives an Authorization Request from the + CM. + A 'false' setting causes all certificates in the chain + not to have their validity periods checked against the + current time of day. + This object need not persist after re-initialization + of the managed system." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.2" + ::= { docsBpi2CmtsBaseEntry 4 } + + docsBpi2CmtsAuthentInfos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an Authentication Information message + from any CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.9." + ::= { docsBpi2CmtsBaseEntry 5 } + + docsBpi2CmtsAuthRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an Authorization Request message from any + CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.1." + ::= { docsBpi2CmtsBaseEntry 6 } + + docsBpi2CmtsAuthReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Reply message to any + CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.2." + ::= { docsBpi2CmtsBaseEntry 7 } + + docsBpi2CmtsAuthRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Reject message to any + + + + CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.3." + ::= { docsBpi2CmtsBaseEntry 8 } + + docsBpi2CmtsAuthInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times + the CMTS has transmitted an Authorization Invalid message + to any CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.7." + ::= { docsBpi2CmtsBaseEntry 9 } + + docsBpi2CmtsSAMapRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an SA Map Request message from any CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.10." + ::= { docsBpi2CmtsBaseEntry 10 } + + docsBpi2CmtsSAMapReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the number of times the + CMTS has transmitted an SA Map Reply message to any CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.11." + ::= { docsBpi2CmtsBaseEntry 11 } + + docsBpi2CmtsSAMapRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an SA Map Reject message to any CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.12." + ::= { docsBpi2CmtsBaseEntry 12 } + + -- + -- The CMTS Authorization Table, indexed by ifIndex and CM MAC + -- address + -- + + docsBpi2CmtsAuthTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsAuthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of each CM + authorization association. The CMTS maintains one + authorization association with each Baseline Privacy- + enabled CM, registered on each CMTS MAC interface, + regardless of whether the CM is authorized or rejected." + ::= { docsBpi2CmtsObjects 2 } + + docsBpi2CmtsAuthEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsAuthEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Each entry contains objects describing attributes of + one authorization association. The CMTS MUST create one + entry per CM per MAC interface, based on the receipt of an + Authorization Request message, and MUST not delete the + entry until the CM loses registration." + INDEX { ifIndex, docsBpi2CmtsAuthCmMacAddress } + ::= { docsBpi2CmtsAuthTable 1 } + + DocsBpi2CmtsAuthEntry ::= SEQUENCE { + docsBpi2CmtsAuthCmMacAddress MacAddress, + docsBpi2CmtsAuthCmBpiVersion INTEGER, + docsBpi2CmtsAuthCmPublicKey OCTET STRING, + docsBpi2CmtsAuthCmKeySequenceNumber Integer32, + docsBpi2CmtsAuthCmExpiresOld DateAndTime, + docsBpi2CmtsAuthCmExpiresNew DateAndTime, + docsBpi2CmtsAuthCmLifetime Integer32, + docsBpi2CmtsAuthCmReset INTEGER, + docsBpi2CmtsAuthCmInfos Counter32, + docsBpi2CmtsAuthCmRequests Counter32, + docsBpi2CmtsAuthCmReplies Counter32, + docsBpi2CmtsAuthCmRejects Counter32, + docsBpi2CmtsAuthCmInvalids Counter32, + docsBpi2CmtsAuthRejectErrorCode INTEGER, + docsBpi2CmtsAuthRejectErrorString SnmpAdminString, + docsBpi2CmtsAuthInvalidErrorCode INTEGER, + docsBpi2CmtsAuthInvalidErrorString SnmpAdminString, + docsBpi2CmtsAuthPrimarySAId DocsSAIdOrZero, + docsBpi2CmtsAuthBpkmCmCertValid INTEGER, + docsBpi2CmtsAuthBpkmCmCert + DocsX509ASN1DEREncodedCertificate, + docsBpi2CmtsAuthCACertIndexPtr Unsigned32 + } + + docsBpi2CmtsAuthCmMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is the physical address of + the CM to which the authorization association applies." + ::= { docsBpi2CmtsAuthEntry 1 } + + docsBpi2CmtsAuthCmBpiVersion OBJECT-TYPE + SYNTAX INTEGER { + bpi (0), + bpiPlus (1) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the version of Baseline + Privacy for which this CM has registered. The value + 'bpiplus' represents the value of BPI-Version Attribute of + the Baseline Privacy Key Management BPKM attribute + BPI-Version (1). The value 'bpi' is used to represent the + CM registered using DOCSIS 1.0 Baseline Privacy." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.22; ANSI/SCTE 22-2 2002(formerly DSS 02-03) + Data-Over-Cable Service Interface Specification DOCSIS 1.0 + Baseline Privacy Interface (BPI)" + ::= { docsBpi2CmtsAuthEntry 2 } + + docsBpi2CmtsAuthCmPublicKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..524)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is a DER-encoded + RSAPublicKey ASN.1 type string, as defined in the RSA + Encryption Standard (PKCS #1), corresponding to the + public key of the CM. This is the zero-length OCTET + STRING if the CMTS does not retain the public key." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.4." + ::= { docsBpi2CmtsAuthEntry 3 } + + docsBpi2CmtsAuthCmKeySequenceNumber OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the most recent + authorization key sequence number for this CM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.10." + ::= { docsBpi2CmtsAuthEntry 4 } + + docsBpi2CmtsAuthCmExpiresOld OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of this object is the actual clock time + for expiration of the immediate predecessor of the most + recent authorization key for this FSM. If this FSM has only + one authorization key, then the value is the time of + activation of this FSM. + Note: This object has no meaning for CMs running in BPI + mode; therefore, this object is not instantiated for entries + associated to those CMs." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.9." + ::= { docsBpi2CmtsAuthEntry 5 } + + docsBpi2CmtsAuthCmExpiresNew OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock + time for expiration of the most recent authorization key + for this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.2 and 4.2.2.9." + ::= { docsBpi2CmtsAuthEntry 6 } + + docsBpi2CmtsAuthCmLifetime OBJECT-TYPE + SYNTAX Integer32 (1..6048000) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the lifetime, in seconds, + that the CMTS assigns to an authorization key for this CM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.2 and Appendix A.2." + ::= { docsBpi2CmtsAuthEntry 7 } + + docsBpi2CmtsAuthCmReset OBJECT-TYPE + SYNTAX INTEGER { + noResetRequested(1), + invalidateAuth(2), + sendAuthInvalid(3), + invalidateTeks(4) + } + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "Setting this object to invalidateAuth(2) causes the + CMTS to invalidate the current CM authorization key(s), but + not to transmit an Authorization Invalid message nor to + invalidate the primary SAID's TEKs. Setting this object to + sendAuthInvalid(3) causes the CMTS to invalidate the + current CM authorization key(s), and to transmit an + Authorization Invalid message to the CM, but not to + invalidate the primary SAID's TEKs. Setting this object to + invalidateTeks(4) causes the CMTS to invalidate the current + CM authorization key(s), to transmit an Authorization + Invalid message to the CM, and to invalidate the TEKs + associated with this CM's primary SAID. + For BPI mode, substitute all of the CM's unicast + TEKs for the primary SAID's TEKs in the previous + paragraph. + Reading this object returns the most recently set + value of this object or, if the object has not been set + since entry creation, returns noResetRequested(1)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.1.2.3.4, 4.1.2.3.5, and 4.1.3.3.5." + ::= { docsBpi2CmtsAuthEntry 8 } + + docsBpi2CmtsAuthCmInfos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an Authentication Information message + from this CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.9." + ::= { docsBpi2CmtsAuthEntry 9 } + + docsBpi2CmtsAuthCmRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an Authorization Request message from + + + + this CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.1." + ::= { docsBpi2CmtsAuthEntry 10 } + + docsBpi2CmtsAuthCmReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Reply message to this + CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.2." + ::= { docsBpi2CmtsAuthEntry 11 } + + docsBpi2CmtsAuthCmRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Reject message to + this CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.3." + ::= { docsBpi2CmtsAuthEntry 12 } + + docsBpi2CmtsAuthCmInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an Authorization Invalid message to + this CM. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.7." + ::= { docsBpi2CmtsAuthEntry 13 } + + docsBpi2CmtsAuthRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unauthorizedSaid(4), + permanentAuthorizationFailure(8), + timeOfDayNotAcquired(11) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent + Authorization Reject message transmitted to the CM. This has + the value unknown(2) if the last Error-Code value was 0 and + none(1) if no Authorization Reject message has been + transmitted to the CM since entry creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.3 and 4.2.2.15." + ::= { docsBpi2CmtsAuthEntry 14 } + + docsBpi2CmtsAuthRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Authorization Reject message transmitted to the + CM. This is a zero length string if no Authorization + Reject message has been transmitted to the CM since entry + creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Sections 4.2.1.3 and 4.2.2.6." + ::= { docsBpi2CmtsAuthEntry 15 } + + docsBpi2CmtsAuthInvalidErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedCm(3), + unsolicited(5), + invalidKeySequence(6), + keyRequestAuthenticationFailure(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent + Authorization Invalid message transmitted to the CM. This + has the value unknown(2) if the last Error-Code value was 0 + and none(1) if no Authorization Invalid message has been + transmitted to the CM since entry creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.7 and 4.2.2.15." + ::= { docsBpi2CmtsAuthEntry 16 } + + docsBpi2CmtsAuthInvalidErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in the + most recent Authorization Invalid message transmitted to + the CM. This is a zero length string if no Authorization + Invalid message has been transmitted to the CM since entry + creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.7 and 4.2.2.6." + ::= { docsBpi2CmtsAuthEntry 17 } + + docsBpi2CmtsAuthPrimarySAId OBJECT-TYPE + SYNTAX DocsSAIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the Primary Security + Association identifier. For BPI mode, the value must be + + + + any unicast SID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 2.1.3." + ::= { docsBpi2CmtsAuthEntry 18 } + + docsBpi2CmtsAuthBpkmCmCertValid OBJECT-TYPE + SYNTAX INTEGER { + unknown (0), + validCmChained (1), + validCmTrusted (2), + invalidCmUntrusted (3), + invalidCAUntrusted (4), + invalidCmOther (5), + invalidCAOther (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the reason why a CM's certificate is deemed + valid or invalid. + Return unknown(0) if the CM is running BPI mode. + ValidCmChained(1) means the certificate is valid + because it chains to a valid certificate. + ValidCmTrusted(2) means the certificate is valid + because it has been provisioned (in the + docsBpi2CmtsProvisionedCmCert table) to be trusted. + InvalidCmUntrusted(3) means the certificate is invalid + because it has been provisioned (in the + docsBpi2CmtsProvisionedCmCert table) to be untrusted. + InvalidCAUntrusted(4) means the certificate is invalid + because it chains to an untrusted certificate. + InvalidCmOther(5) and InvalidCAOther(6) refer to + errors in parsing, validity periods, etc., which are + attributable to the CM certificate or its chain, + respectively; additional information may be found + in docsBpi2AuthRejectErrorString for these types + of errors." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.2." + ::= { docsBpi2CmtsAuthEntry 19 } + + docsBpi2CmtsAuthBpkmCmCert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The X509 CM Certificate sent as part of a BPKM + Authorization Request. + Note: The zero-length OCTET STRING must be returned if the + Entire certificate is not retained in the CMTS." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2." + ::= { docsBpi2CmtsAuthEntry 20 } + + docsBpi2CmtsAuthCACertIndexPtr OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A row index into docsBpi2CmtsCACertTable. + Returns the index in docsBpi2CmtsCACertTable to which + CA certificate this CM is chained to. A value of + 0 means it could not be found or not applicable." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2." + ::= { docsBpi2CmtsAuthEntry 21 } + + -- + -- The CMTS TEK Table, indexed by ifIndex and SAID + -- + + docsBpi2CmtsTEKTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsTEKEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of each + Traffic Encryption Key (TEK) association. The CMTS + Maintains one TEK association per SAID on each CMTS MAC + interface." + ::= { docsBpi2CmtsObjects 3 } + + docsBpi2CmtsTEKEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsTEKEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing attributes of + one TEK association on a particular CMTS MAC interface. The + CMTS MUST create one entry per SAID per MAC interface, + based on the receipt of a Key Request message, and MUST not + delete the entry before the CM authorization for the SAID + + + + permanently expires." + INDEX { ifIndex, docsBpi2CmtsTEKSAId } + ::= { docsBpi2CmtsTEKTable 1 } + + DocsBpi2CmtsTEKEntry ::= SEQUENCE { + docsBpi2CmtsTEKSAId DocsSAId, + docsBpi2CmtsTEKSAType DocsBpkmSAType, + docsBpi2CmtsTEKDataEncryptAlg DocsBpkmDataEncryptAlg, + docsBpi2CmtsTEKDataAuthentAlg DocsBpkmDataAuthentAlg, + docsBpi2CmtsTEKLifetime Integer32, + docsBpi2CmtsTEKKeySequenceNumber Integer32, + docsBpi2CmtsTEKExpiresOld DateAndTime, + docsBpi2CmtsTEKExpiresNew DateAndTime, + docsBpi2CmtsTEKReset TruthValue, + docsBpi2CmtsKeyRequests Counter32, + docsBpi2CmtsKeyReplies Counter32, + docsBpi2CmtsKeyRejects Counter32, + docsBpi2CmtsTEKInvalids Counter32, + docsBpi2CmtsKeyRejectErrorCode INTEGER, + docsBpi2CmtsKeyRejectErrorString SnmpAdminString, + docsBpi2CmtsTEKInvalidErrorCode INTEGER, + docsBpi2CmtsTEKInvalidErrorString SnmpAdminString + } + + docsBpi2CmtsTEKSAId OBJECT-TYPE + SYNTAX DocsSAId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is the DOCSIS Security + Association ID (SAID)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.12." + ::= { docsBpi2CmtsTEKEntry 1 } + + docsBpi2CmtsTEKSAType OBJECT-TYPE + SYNTAX DocsBpkmSAType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the type of security + association. 'dynamic' does not apply to CMs running in + BPI mode. Unicast BPI TEKs must utilize the 'primary' + encoding, and multicast BPI TEKs must utilize the 'static' + encoding." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Section 2.1.3." + ::= { docsBpi2CmtsTEKEntry 2 } + + docsBpi2CmtsTEKDataEncryptAlg OBJECT-TYPE + SYNTAX DocsBpkmDataEncryptAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data encryption + algorithm for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmtsTEKEntry 3 } + + docsBpi2CmtsTEKDataAuthentAlg OBJECT-TYPE + SYNTAX DocsBpkmDataAuthentAlg + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the data authentication + algorithm for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + ::= { docsBpi2CmtsTEKEntry 4 } + + docsBpi2CmtsTEKLifetime OBJECT-TYPE + SYNTAX Integer32 (1..604800) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the lifetime, in + seconds, that the CMTS assigns to keys for this TEK + association." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.5 and Appendix A.2." + ::= { docsBpi2CmtsTEKEntry 5 } + + + docsBpi2CmtsTEKKeySequenceNumber OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the most recent TEK + + + + key sequence number for this SAID." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.2.10 and 4.2.2.13." + ::= { docsBpi2CmtsTEKEntry 6 } + + docsBpi2CmtsTEKExpiresOld OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time + for expiration of the immediate predecessor of the most + recent TEK for this FSM. If this FSM has only one TEK, then + the value is the time of activation of this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.5 and 4.2.2.9." + ::= { docsBpi2CmtsTEKEntry 7 } + + docsBpi2CmtsTEKExpiresNew OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the actual clock time + for expiration of the most recent TEK for this FSM." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.5 and 4.2.2.9." + ::= { docsBpi2CmtsTEKEntry 8 } + + docsBpi2CmtsTEKReset OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'true' causes the CMTS to + invalidate all currently active TEKs and to generate new + TEKs for the associated SAID; the CMTS MAY also generate + unsolicited TEK Invalid messages, to optimize the TEK + synchronization between the CMTS and the CM(s). Reading + this object always returns FALSE." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.1.3.3.5." + ::= { docsBpi2CmtsTEKEntry 9 } + + + + + docsBpi2CmtsKeyRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received a Key Request message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.4." + ::= { docsBpi2CmtsTEKEntry 10 } + + docsBpi2CmtsKeyReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted a Key Reply message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.5." + ::= { docsBpi2CmtsTEKEntry 11 } + + docsBpi2CmtsKeyRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted a Key Reject message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.6." + ::= { docsBpi2CmtsTEKEntry 12 } + + + + + docsBpi2CmtsTEKInvalids OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted a TEK Invalid message. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.8." + ::= { docsBpi2CmtsTEKEntry 13 } + + docsBpi2CmtsKeyRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + unauthorizedSaid(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent Key Reject + message sent in response to a Key Request for this SAID. + This has the value unknown(2) if the last Error-Code value + was 0 and none(1) if no Key Reject message has been + received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.6 and 4.2.2.15." + ::= { docsBpi2CmtsTEKEntry 14 } + + docsBpi2CmtsKeyRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in + the most recent Key Reject message sent in response to a + Key Request for this SAID. This is a zero length string if + no Key Reject message has been received since + registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Sections 4.2.1.6 and 4.2.2.6." + ::= { docsBpi2CmtsTEKEntry 15 } + + docsBpi2CmtsTEKInvalidErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + invalidKeySequence(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent TEK + Invalid message sent in association with this SAID. This + has the value unknown(2) if the last Error-Code value was 0 + and none(1) if no TEK Invalid message has been received + since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.8 and 4.2.2.15." + ::= { docsBpi2CmtsTEKEntry 16 } + + docsBpi2CmtsTEKInvalidErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in + the most recent TEK Invalid message sent in association + with this SAID. This is a zero length string if no TEK + Invalid message has been received since registration." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.8 and 4.2.2.6." + ::= { docsBpi2CmtsTEKEntry 17 } + + -- + -- The CMTS Multicast Objects Group + -- + + docsBpi2CmtsMulticastObjects OBJECT IDENTIFIER + ::= { docsBpi2CmtsObjects 4 } + + -- + -- The CMTS IP Multicast Mapping Table, indexed by + -- docsBpi2CmtsIpMulticastIndex, and by ifIndex + -- + + + + docsBpi2CmtsIpMulticastMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsIpMulticastMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maps multicast IP addresses to SAIDs. + If a multicast IP address is mapped by multiple rows + in the table, the row with the lowest + docsBpi2CmtsIpMulticastIndex must be utilized for the + mapping." + ::= { docsBpi2CmtsMulticastObjects 1 } + + docsBpi2CmtsIpMulticastMapEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsIpMulticastMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing the mapping of + a set of multicast IP address and the mask to one SAID + associated to a CMTS MAC Interface, as well as associated + message counters and error information." + INDEX { ifIndex, docsBpi2CmtsIpMulticastIndex } + ::= { docsBpi2CmtsIpMulticastMapTable 1 } + + DocsBpi2CmtsIpMulticastMapEntry ::= SEQUENCE { + docsBpi2CmtsIpMulticastIndex Unsigned32, + docsBpi2CmtsIpMulticastAddressType InetAddressType, + docsBpi2CmtsIpMulticastAddress InetAddress, + docsBpi2CmtsIpMulticastMask InetAddress, + docsBpi2CmtsIpMulticastSAId DocsSAIdOrZero, + docsBpi2CmtsIpMulticastSAType DocsBpkmSAType, + docsBpi2CmtsIpMulticastDataEncryptAlg + DocsBpkmDataEncryptAlg, + docsBpi2CmtsIpMulticastDataAuthentAlg + DocsBpkmDataAuthentAlg, + docsBpi2CmtsIpMulticastSAMapRequests Counter32, + docsBpi2CmtsIpMulticastSAMapReplies Counter32, + docsBpi2CmtsIpMulticastSAMapRejects Counter32, + docsBpi2CmtsIpMulticastSAMapRejectErrorCode + INTEGER, + docsBpi2CmtsIpMulticastSAMapRejectErrorString + SnmpAdminString, + docsBpi2CmtsIpMulticastMapControl RowStatus, + docsBpi2CmtsIpMulticastMapStorageType StorageType + } + + docsBpi2CmtsIpMulticastIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this row. Conceptual rows having the + value 'permanent' need not allow write-access to any + columnar objects in the row." + ::= { docsBpi2CmtsIpMulticastMapEntry 1 } + + docsBpi2CmtsIpMulticastAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address for + docsBpi2CmtsIpMulticastAddress + and docsBpi2CmtsIpMulticastMask." + DEFVAL { ipv4 } + ::= { docsBpi2CmtsIpMulticastMapEntry 2 } + + docsBpi2CmtsIpMulticastAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the IP multicast address + to be mapped, in conjunction with + docsBpi2CmtsIpMulticastMask. The type of this address is + determined by the value of the object + docsBpi2CmtsIpMulticastAddressType." + ::= { docsBpi2CmtsIpMulticastMapEntry 3 } + + docsBpi2CmtsIpMulticastMask OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the IP multicast address mask + for this row. + An IP multicast address matches this row if the logical + AND of the address with docsBpi2CmtsIpMulticastMask is + identical to the logical AND of + docsBpi2CmtsIpMulticastAddr with + docsBpi2CmtsIpMulticastMask. The type of this address is + determined by the value of the object + docsBpi2CmtsIpMulticastAddressType. + Note: For IPv6, this object need not represent a + contiguous netmask; e.g., to associate a SAID to a + multicast group matching 'any' multicast scope. The TC + + + + InetAddressPrefixLength is not used, as it only + represents contiguous netmask." + ::= { docsBpi2CmtsIpMulticastMapEntry 4 } + + docsBpi2CmtsIpMulticastSAId OBJECT-TYPE + SYNTAX DocsSAIdOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the multicast SAID to be + used in this IP multicast address mapping entry." + ::= { docsBpi2CmtsIpMulticastMapEntry 5 } + + docsBpi2CmtsIpMulticastSAType OBJECT-TYPE + SYNTAX DocsBpkmSAType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the type of security + association. 'dynamic' does not apply to CMs running in + BPI mode. Unicast BPI TEKs must utilize the 'primary' + encoding, and multicast BPI TEKs must utilize the 'static' + encoding. By default, SNMP created entries set this object + to 'static' if not set at row creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 2.1.3." + ::= { docsBpi2CmtsIpMulticastMapEntry 6 } + + docsBpi2CmtsIpMulticastDataEncryptAlg OBJECT-TYPE + SYNTAX DocsBpkmDataEncryptAlg + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the data encryption + algorithm for this IP." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + DEFVAL { des56CbcMode } + ::= { docsBpi2CmtsIpMulticastMapEntry 7 } + + docsBpi2CmtsIpMulticastDataAuthentAlg OBJECT-TYPE + SYNTAX DocsBpkmDataAuthentAlg + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the data authentication + + + + algorithm for this IP." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.2.20." + DEFVAL { none } + ::= { docsBpi2CmtsIpMulticastMapEntry 8 } + + docsBpi2CmtsIpMulticastSAMapRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has received an SA Map Request message for this IP. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.10." + ::= { docsBpi2CmtsIpMulticastMapEntry 9 } + + docsBpi2CmtsIpMulticastSAMapReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an SA Map Reply message for this IP. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.11." + ::= { docsBpi2CmtsIpMulticastMapEntry 10 } + + docsBpi2CmtsIpMulticastSAMapRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the number of times the + CMTS has transmitted an SA Map Reject message for this IP. + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + + times as indicated by the value of + ifCounterDiscontinuityTime." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 4.2.1.12." + ::= { docsBpi2CmtsIpMulticastMapEntry 11 } + + docsBpi2CmtsIpMulticastSAMapRejectErrorCode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + unknown(2), + noAuthForRequestedDSFlow(9), + dsFlowNotMappedToSA(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the enumerated + description of the Error-Code in the most recent SA Map + Reject message sent in response to an SA Map Request for + this IP. It has the value unknown(2) if the last Error-Code + Value was 0 and none(1) if no SA MAP Reject message has + been received since entry creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.12 and 4.2.2.15." + ::= { docsBpi2CmtsIpMulticastMapEntry 12 } + + docsBpi2CmtsIpMulticastSAMapRejectErrorString OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the text string in + the most recent SA Map Reject message sent in response to + an SA Map Request for this IP. It is a zero length string + if no SA Map Reject message has been received since entry + creation." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections 4.2.1.12 and 4.2.2.6." + ::= { docsBpi2CmtsIpMulticastMapEntry 13 } + + docsBpi2CmtsIpMulticastMapControl OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object controls and reflects the IP multicast + address mapping entry. There is no restriction on the + ability to change values in this row while the row is + active. + A created row can be set to active only after the + Corresponding instances of docsBpi2CmtsIpMulticastAddress, + docsBpi2CmtsIpMulticastMask, docsBpi2CmtsIpMulticastSAId, + and docsBpi2CmtsIpMulticastSAType have all been set." + ::= { docsBpi2CmtsIpMulticastMapEntry 14 } + + docsBpi2CmtsIpMulticastMapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not allow + write-access to any columnar objects in the row." + ::= { docsBpi2CmtsIpMulticastMapEntry 15 } + + -- + -- The CMTS Multicast SAID Authorization Table, + -- indexed by ifIndex by + -- multicast SAID by CM MAC address + -- + + docsBpi2CmtsMulticastAuthTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsMulticastAuthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the multicast SAID + authorization for each CM on each CMTS MAC interface." + ::= { docsBpi2CmtsMulticastObjects 2 } + + docsBpi2CmtsMulticastAuthEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsMulticastAuthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains objects describing the key + authorization of one cable modem for one multicast SAID + for one CMTS MAC interface. + Row entries persist after re-initialization of + the managed system." + INDEX { ifIndex, docsBpi2CmtsMulticastAuthSAId, + docsBpi2CmtsMulticastAuthCmMacAddress } + ::= { docsBpi2CmtsMulticastAuthTable 1 } + + + + DocsBpi2CmtsMulticastAuthEntry ::= SEQUENCE + { + docsBpi2CmtsMulticastAuthSAId DocsSAId, + docsBpi2CmtsMulticastAuthCmMacAddress MacAddress, + docsBpi2CmtsMulticastAuthControl RowStatus + } + + docsBpi2CmtsMulticastAuthSAId OBJECT-TYPE + SYNTAX DocsSAId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the multicast SAID for + authorization." + ::= { docsBpi2CmtsMulticastAuthEntry 1 } + + docsBpi2CmtsMulticastAuthCmMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the MAC address of the CM + to which the multicast SAID authorization applies." + ::= { docsBpi2CmtsMulticastAuthEntry 2 } + + docsBpi2CmtsMulticastAuthControl OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row for the + authorization of multicast SAIDs to CMs." + ::= { docsBpi2CmtsMulticastAuthEntry 3 } + + -- + -- CMTS Cert Objects + -- + + docsBpi2CmtsCertObjects OBJECT IDENTIFIER + ::= { docsBpi2CmtsObjects 5 } + + -- + -- CMTS Provisioned CM Cert Table + -- + + docsBpi2CmtsProvisionedCmCertTable OBJECT-TYPE + SYNTAX SEQUENCE OF + DocsBpi2CmtsProvisionedCmCertEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of CM certificate trust entries provisioned + to the CMTS. The trust object for a certificate in this + table has an overriding effect on the validity object of a + certificate in the authorization table, as long as the + entire contents of the two certificates are identical." + ::= { docsBpi2CmtsCertObjects 1 } + + docsBpi2CmtsProvisionedCmCertEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsProvisionedCmCertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the CMTS's provisioned CM certificate + table. Row entries persist after re-initialization of + the managed system." + REFERENCE + "Data-Over-Cable Service Interface Specifications: + Operations Support System Interface Specification + SP-OSSIv2.0-I05-040407, Section 6.2.14" + INDEX { docsBpi2CmtsProvisionedCmCertMacAddress } + ::= { docsBpi2CmtsProvisionedCmCertTable 1 } + + DocsBpi2CmtsProvisionedCmCertEntry ::= SEQUENCE + { + docsBpi2CmtsProvisionedCmCertMacAddress MacAddress, + docsBpi2CmtsProvisionedCmCertTrust INTEGER, + docsBpi2CmtsProvisionedCmCertSource INTEGER, + docsBpi2CmtsProvisionedCmCertStatus RowStatus, + docsBpi2CmtsProvisionedCmCert + DocsX509ASN1DEREncodedCertificate + } + + docsBpi2CmtsProvisionedCmCertMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this row." + ::= { docsBpi2CmtsProvisionedCmCertEntry 1 } + + docsBpi2CmtsProvisionedCmCertTrust OBJECT-TYPE + SYNTAX INTEGER { + trusted(1), + untrusted(2) + } + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Trust state for the provisioned CM certificate entry. + Note: Setting this object need only override the validity + of CM certificates sent in future authorization requests; + instantaneous effect need not occur." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1." + DEFVAL { untrusted } + ::= { docsBpi2CmtsProvisionedCmCertEntry 2 } + + docsBpi2CmtsProvisionedCmCertSource OBJECT-TYPE + SYNTAX INTEGER { + snmp(1), + configurationFile(2), + externalDatabase(3), + other(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates how the certificate reached the + CMTS. Other(4) means that it originated from a source not + identified above." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1." + ::= { docsBpi2CmtsProvisionedCmCertEntry 3 } + + docsBpi2CmtsProvisionedCmCertStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. Values in this row + cannot be changed while the row is 'active'." + ::= { docsBpi2CmtsProvisionedCmCertEntry 4 } + + docsBpi2CmtsProvisionedCmCert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An X509 DER-encoded Certificate Authority + certificate. + Note: The zero-length OCTET STRING must be returned, on + + + + reads, if the entire certificate is not retained in the + CMTS." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2." + ::= { docsBpi2CmtsProvisionedCmCertEntry 5 } + + -- + -- CMTS CA Cert Table + -- + + docsBpi2CmtsCACertTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsBpi2CmtsCACertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of known Certificate Authority certificates + acquired by this device." + ::= { docsBpi2CmtsCertObjects 2 } + + docsBpi2CmtsCACertEntry OBJECT-TYPE + SYNTAX DocsBpi2CmtsCACertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the Certificate Authority certificate + table. Row entries with the trust status 'trusted', + 'untrusted', or 'root' persist after re-initialization + of the managed system." + REFERENCE + "Data-Over-Cable Service Interface Specifications: + Operations Support System Interface Specification + SP-OSSIv2.0-I05-040407, Section 6.2.14" + INDEX { docsBpi2CmtsCACertIndex } + ::= {docsBpi2CmtsCACertTable 1 } + + DocsBpi2CmtsCACertEntry ::= SEQUENCE { + docsBpi2CmtsCACertIndex Unsigned32, + docsBpi2CmtsCACertSubject SnmpAdminString, + docsBpi2CmtsCACertIssuer SnmpAdminString, + docsBpi2CmtsCACertSerialNumber OCTET STRING, + docsBpi2CmtsCACertTrust INTEGER, + docsBpi2CmtsCACertSource INTEGER, + docsBpi2CmtsCACertStatus RowStatus, + docsBpi2CmtsCACert + DocsX509ASN1DEREncodedCertificate, + docsBpi2CmtsCACertThumbprint OCTET STRING + } + + + + docsBpi2CmtsCACertIndex OBJECT-TYPE + SYNTAX Unsigned32 (1.. 4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this row." + ::= { docsBpi2CmtsCACertEntry 1 } + + docsBpi2CmtsCACertSubject OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The subject name exactly as it is encoded in the + X509 certificate. + The organizationName portion of the certificate's subject + name must be present. All other fields are optional. Any + optional field present must be prepended with + (carriage return, U+000D) (line feed, U+000A). + Ordering of fields present must conform to the following: + + organizationName + countryName + stateOrProvinceName + localityName + organizationalUnitName + organizationalUnitName= + commonName" + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2.4" + ::= { docsBpi2CmtsCACertEntry 2 } + + docsBpi2CmtsCACertIssuer OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The issuer name exactly as it is encoded in the + X509 certificate. + The commonName portion of the certificate's issuer + name must be present. All other fields are optional. Any + optional field present must be prepended with + (carriage return, U+000D) (line feed, U+000A). + Ordering of fields present must conform to the following: + + CommonName + countryName + + + + stateOrProvinceName + localityName + organizationName + organizationalUnitName + organizationalUnitName=" + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2.4" + ::= { docsBpi2CmtsCACertEntry 3 } + + docsBpi2CmtsCACertSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This CA certificate's serial number, represented as + an octet string." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.2.2" + ::= { docsBpi2CmtsCACertEntry 4 } + + docsBpi2CmtsCACertTrust OBJECT-TYPE + SYNTAX INTEGER { + trusted (1), + untrusted (2), + chained (3), + root (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the trust status of this + certificate. Root certificates must be given root(4) + trust; manufacturer certificates must not be given root(4) + trust. Trust on root certificates must not change. + Note: Setting this object need only affect the validity of + CM certificates sent in future authorization requests; + instantaneous effect need not occur." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1" + DEFVAL { chained } + ::= { docsBpi2CmtsCACertEntry 5 } + + docsBpi2CmtsCACertSource OBJECT-TYPE + SYNTAX INTEGER { + snmp (1), + + + + configurationFile (2), + externalDatabase (3), + other (4), + authentInfo (5), + compiledIntoCode (6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates how the certificate reached + the CMTS. Other(4) means that it originated from a source + not identified above." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.1" + ::= { docsBpi2CmtsCACertEntry 6 } + + docsBpi2CmtsCACertStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. An attempt + to set writable columnar values while this row is active + behaves as follows: + - Sets to the object docsBpi2CmtsCACertTrust are allowed. + - Sets to the object docsBpi2CmtsCACert will return an + error of 'inconsistentValue'. + A newly created entry cannot be set to active until the + value of docsBpi2CmtsCACert is being set." + ::= { docsBpi2CmtsCACertEntry 7 } + + docsBpi2CmtsCACert OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An X509 DER-encoded Certificate Authority + certificate. + To help identify certificates, either this object or + docsBpi2CmtsCACertThumbprint must be returned by a CMTS for + self-signed CA certificates. + + Note: The zero-length OCTET STRING must be returned, on + reads, if the entire certificate is not retained in the + CMTS." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + + + + Section 9.2." + ::= { docsBpi2CmtsCACertEntry 8 } + + docsBpi2CmtsCACertThumbprint OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SHA-1 hash of a CA certificate. + To help identify certificates, either this object or + docsBpi2CmtsCACert must be returned by a CMTS for + self-signed CA certificates. + + Note: The zero-length OCTET STRING must be returned, on + reads, if the CA certificate thumb print is not retained + in the CMTS." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section 9.4.3" + ::= { docsBpi2CmtsCACertEntry 9 } + + -- + -- Authenticated Software Download Objects + -- + + -- + -- Note: the authenticated software download objects are a + -- CM requirement only. + -- + + docsBpi2CodeDownloadControl OBJECT IDENTIFIER + ::= { docsBpi2MIBObjects 4 } + + docsBpi2CodeDownloadStatusCode OBJECT-TYPE + SYNTAX INTEGER { + configFileCvcVerified (1), + configFileCvcRejected (2), + snmpCvcVerified (3), + snmpCvcRejected (4), + codeFileVerified (5), + codeFileRejected (6), + other (7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the result of the latest config + file CVC verification, SNMP CVC verification, or code file + + + + verification." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Sections D.3.3.2 and D.3.5.1." + ::= { docsBpi2CodeDownloadControl 1 } + + docsBpi2CodeDownloadStatusString OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the additional + information to the status code. The value will include + the error code and error description, which will be defined + separately." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.7" + ::= { docsBpi2CodeDownloadControl 2 } + + docsBpi2CodeMfgOrgName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the device manufacturer's + organizationName." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 3 } + + docsBpi2CodeMfgCodeAccessStart OBJECT-TYPE + SYNTAX DateAndTime (SIZE(11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the device manufacturer's + current codeAccessStart value. This value will always + refer to Greenwich Mean Time (GMT), and the value + format must contain TimeZone information (fields 8-10)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 4 } + + docsBpi2CodeMfgCvcAccessStart OBJECT-TYPE + SYNTAX DateAndTime (SIZE(11)) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the device manufacturer's + current cvcAccessStart value. This value will always + refer to Greenwich Mean Time (GMT), and the value + format must contain TimeZone information (fields 8-10)." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 5 } + + docsBpi2CodeCoSignerOrgName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the co-signer's + organizationName. The value is a zero length string if + the co-signer is not specified." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 6 } + + docsBpi2CodeCoSignerCodeAccessStart OBJECT-TYPE + SYNTAX DateAndTime (SIZE(11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the co-signer's current + codeAccessStart value. This value will always refer to + Greenwich Mean Time (GMT), and the value format must contain + TimeZone information (fields 8-10). + If docsBpi2CodeCoSignerOrgName is a zero + length string, the value of this object is meaningless." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 7 } + + docsBpi2CodeCoSignerCvcAccessStart OBJECT-TYPE + SYNTAX DateAndTime (SIZE(11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the co-signer's current + cvcAccessStart value. This value will always refer to + + + + Greenwich Mean Time (GMT), and the value format must contain + TimeZone information (fields 8-10). + If docsBpi2CodeCoSignerOrgName is a zero + length string, the value of this object is meaningless." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.2.2." + ::= { docsBpi2CodeDownloadControl 8 } + + docsBpi2CodeCvcUpdate OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting a CVC to this object triggers the device + to verify the CVC and update the cvcAccessStart values. + The content of this object is then discarded. + If the device is not enabled to upgrade codefiles, or if + the CVC verification fails, the CVC will be rejected. + Reading this object always returns the zero-length OCTET + STRING." + REFERENCE + "DOCSIS Baseline Privacy Plus Interface Specification, + Section D.3.3.2.2." + ::= { docsBpi2CodeDownloadControl 9 } + + -- + -- The BPI+ MIB Conformance Statements (with a placeholder for + -- notifications) + -- + + docsBpi2Notification OBJECT IDENTIFIER + ::= { docsBpi2MIB 0 } + docsBpi2Conformance OBJECT IDENTIFIER + ::= { docsBpi2MIB 2 } + docsBpi2Compliances OBJECT IDENTIFIER + ::= { docsBpi2Conformance 1 } + docsBpi2Groups OBJECT IDENTIFIER + ::= { docsBpi2Conformance 2 } + + + docsBpi2CmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "This is the compliance statement for CMs that + implement the DOCSIS Baseline Privacy Interface Plus." + + MODULE -- docsBpi2MIB + + + + -- unconditionally mandatory group + MANDATORY-GROUPS { + docsBpi2CmGroup, + docsBpi2CodeDownloadGroup + } + + -- constrain on Encryption algorithms + OBJECT docsBpi2CmTEKDataEncryptAlg + SYNTAX DocsBpkmDataEncryptAlg { + none(0), + des56CbcMode(1), + des40CbcMode(2) + } + DESCRIPTION + "It is compliant to support des56CbcMode(1) and + des40CbcMode(2) for data encryption algorithms." + + -- constrain on Integrity algorithms + OBJECT docsBpi2CmTEKDataAuthentAlg + SYNTAX DocsBpkmDataAuthentAlg { + none(0) + } + DESCRIPTION + "It is compliant to not support data message + authentication algorithms." + + -- constrain on IP addressing + OBJECT docsBpi2CmIpMulticastAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Support for other address types may be defined + in future versions of this MIB module." + + -- constrain on IP addressing + OBJECT docsBpi2CmIpMulticastAddress + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses Other address types support may be defined in + future versions of this MIB module." + + -- constrain on Encryption algorithms + OBJECT docsBpi2CmCryptoSuiteDataEncryptAlg + SYNTAX DocsBpkmDataEncryptAlg { + none(0), + des56CbcMode(1), + des40CbcMode(2) + + + + } + DESCRIPTION + "It is compliant to only support des56CbcMode(1) + and des40CbcMode(2) for data encryption algorithms." + + -- constrain on Integrity algorithms + OBJECT docsBpi2CmCryptoSuiteDataAuthentAlg + SYNTAX DocsBpkmDataAuthentAlg { + none(0) + } + DESCRIPTION + "It is compliant to not support data message + authentication algorithms." + + ::= { docsBpi2Compliances 1 } + + + docsBpi2CmtsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "This is the compliance statement for CMTSs that + implement the DOCSIS Baseline Privacy Interface Plus." + + MODULE -- docsBpi2MIB + -- unconditionally mandatory group + MANDATORY-GROUPS { + docsBpi2CmtsGroup + } + + -- unconditionally optional group + GROUP docsBpi2CodeDownloadGroup + DESCRIPTION + "This group is optional for CMTSes. The implementation + decision of this group is left to the vendor" + + -- constrain on mandatory range + + OBJECT docsBpi2CmtsDefaultAuthLifetime + SYNTAX Integer32 (86400..6048000) + DESCRIPTION + "The refined range corresponds to the minimum and + maximum values in operational networks." + + -- constrain on mandatory range + + OBJECT docsBpi2CmtsDefaultTEKLifetime + SYNTAX Integer32 (1800..604800) + DESCRIPTION + + + + "The refined range corresponds to the minimum and + maximum values in operational networks." + + -- constrain on mandatory range + + OBJECT docsBpi2CmtsAuthCmLifetime + SYNTAX Integer32 (86400..6048000) + DESCRIPTION + "The refined range corresponds to the minimum and + maximum values in operational networks." + + -- constrain on Encryption algorithms + +OBJECT docsBpi2CmtsTEKDataEncryptAlg + SYNTAX DocsBpkmDataEncryptAlg { + none(0), + des56CbcMode(1), + des40CbcMode(2) + } + DESCRIPTION + "It is compliant to only support des56CbcMode(1) + and des40CbcMode(2) for data encryption." + + -- constrain on Integrity algorithms + +OBJECT docsBpi2CmtsTEKDataAuthentAlg + SYNTAX DocsBpkmDataAuthentAlg { + none(0) + } + DESCRIPTION + "It is compliant to not support data message + authentication algorithms." + + -- constrain on mandatory range + + OBJECT docsBpi2CmtsTEKLifetime + SYNTAX Integer32 (1800..604800) + DESCRIPTION + "The refined range corresponds to the minimum and + maximum values in operational networks." + + -- constrain on access + -- constrain on IP Addressing + + OBJECT docsBpi2CmtsIpMulticastAddressType + SYNTAX InetAddressType { ipv4(1) } + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required. + An implementation is only required to support IPv4 + addresses. Support for other address types may be defined + in future versions of this MIB module." + + OBJECT docsBpi2CmtsIpMulticastAddress + SYNTAX InetAddress (SIZE(4)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support IPv4 + addresses. Support for other address types may be defined + in future versions of this MIB module." + + OBJECT docsBpi2CmtsIpMulticastMask + SYNTAX InetAddress (SIZE(4)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support IPv4 + addresses. Support for other address types may be defined + in future versions of this MIB module." + + -- constrain on access + + OBJECT docsBpi2CmtsIpMulticastSAId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT docsBpi2CmtsIpMulticastSAType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- constrain on access + -- constrain on Encryption algorithms + + OBJECT docsBpi2CmtsIpMulticastDataEncryptAlg + SYNTAX DocsBpkmDataEncryptAlg { + none(0), + des56CbcMode(1), + des40CbcMode(2) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + It is compliant to only support des56CbcMode(1) + + + + and des40CbcMode(2) for data encryption" + + -- constrain on access + -- constrain on Integrity algorithms + + OBJECT docsBpi2CmtsIpMulticastDataAuthentAlg + SYNTAX DocsBpkmDataAuthentAlg { + none(0) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + It is compliant to not support data message + authentication algorithms." + + -- constrain on access + + OBJECT docsBpi2CmtsMulticastAuthControl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { docsBpi2Compliances 2 } + + docsBpi2CmGroup OBJECT-GROUP + OBJECTS { + docsBpi2CmPrivacyEnable, + docsBpi2CmPublicKey, + docsBpi2CmAuthState, + docsBpi2CmAuthKeySequenceNumber, + docsBpi2CmAuthExpiresOld, + docsBpi2CmAuthExpiresNew, + docsBpi2CmAuthReset, + docsBpi2CmAuthGraceTime, + docsBpi2CmTEKGraceTime, + docsBpi2CmAuthWaitTimeout, + docsBpi2CmReauthWaitTimeout, + docsBpi2CmOpWaitTimeout, + docsBpi2CmRekeyWaitTimeout, + docsBpi2CmAuthRejectWaitTimeout, + docsBpi2CmSAMapWaitTimeout, + docsBpi2CmSAMapMaxRetries, + docsBpi2CmAuthentInfos, + docsBpi2CmAuthRequests, + docsBpi2CmAuthReplies, + docsBpi2CmAuthRejects, + docsBpi2CmAuthInvalids, + docsBpi2CmAuthRejectErrorCode, + + + + docsBpi2CmAuthRejectErrorString, + docsBpi2CmAuthInvalidErrorCode, + docsBpi2CmAuthInvalidErrorString, + docsBpi2CmTEKSAType, + docsBpi2CmTEKDataEncryptAlg, + docsBpi2CmTEKDataAuthentAlg, + docsBpi2CmTEKState, + docsBpi2CmTEKKeySequenceNumber, + docsBpi2CmTEKExpiresOld, + docsBpi2CmTEKExpiresNew, + docsBpi2CmTEKKeyRequests, + docsBpi2CmTEKKeyReplies, + docsBpi2CmTEKKeyRejects, + docsBpi2CmTEKInvalids, + docsBpi2CmTEKAuthPends, + docsBpi2CmTEKKeyRejectErrorCode, + docsBpi2CmTEKKeyRejectErrorString, + docsBpi2CmTEKInvalidErrorCode, + docsBpi2CmTEKInvalidErrorString, + docsBpi2CmIpMulticastAddressType, + docsBpi2CmIpMulticastAddress, + docsBpi2CmIpMulticastSAId, + docsBpi2CmIpMulticastSAMapState, + docsBpi2CmIpMulticastSAMapRequests, + docsBpi2CmIpMulticastSAMapReplies, + docsBpi2CmIpMulticastSAMapRejects, + docsBpi2CmIpMulticastSAMapRejectErrorCode, + docsBpi2CmIpMulticastSAMapRejectErrorString, + docsBpi2CmDeviceCmCert, + docsBpi2CmDeviceManufCert, + docsBpi2CmCryptoSuiteDataEncryptAlg, + docsBpi2CmCryptoSuiteDataAuthentAlg + } + STATUS current + DESCRIPTION + "This collection of objects provides CM BPI+ status + and control." + ::= { docsBpi2Groups 1 } + + docsBpi2CmtsGroup OBJECT-GROUP + OBJECTS { + docsBpi2CmtsDefaultAuthLifetime, + docsBpi2CmtsDefaultTEKLifetime, + docsBpi2CmtsDefaultSelfSignedManufCertTrust, + docsBpi2CmtsCheckCertValidityPeriods, + docsBpi2CmtsAuthentInfos, + docsBpi2CmtsAuthRequests, + docsBpi2CmtsAuthReplies, + + + + docsBpi2CmtsAuthRejects, + docsBpi2CmtsAuthInvalids, + docsBpi2CmtsSAMapRequests, + docsBpi2CmtsSAMapReplies, + docsBpi2CmtsSAMapRejects, + docsBpi2CmtsAuthCmBpiVersion, + docsBpi2CmtsAuthCmPublicKey, + docsBpi2CmtsAuthCmKeySequenceNumber, + docsBpi2CmtsAuthCmExpiresOld, + docsBpi2CmtsAuthCmExpiresNew, + docsBpi2CmtsAuthCmLifetime, + docsBpi2CmtsAuthCmReset, + docsBpi2CmtsAuthCmInfos, + docsBpi2CmtsAuthCmRequests, + docsBpi2CmtsAuthCmReplies, + docsBpi2CmtsAuthCmRejects, + docsBpi2CmtsAuthCmInvalids, + docsBpi2CmtsAuthRejectErrorCode, + docsBpi2CmtsAuthRejectErrorString, + docsBpi2CmtsAuthInvalidErrorCode, + docsBpi2CmtsAuthInvalidErrorString, + docsBpi2CmtsAuthPrimarySAId, + docsBpi2CmtsAuthBpkmCmCertValid, + docsBpi2CmtsAuthBpkmCmCert, + docsBpi2CmtsAuthCACertIndexPtr, + docsBpi2CmtsTEKSAType, + docsBpi2CmtsTEKDataEncryptAlg, + docsBpi2CmtsTEKDataAuthentAlg, + docsBpi2CmtsTEKLifetime, + docsBpi2CmtsTEKKeySequenceNumber, + docsBpi2CmtsTEKExpiresOld, + docsBpi2CmtsTEKExpiresNew, + docsBpi2CmtsTEKReset, + docsBpi2CmtsKeyRequests, + docsBpi2CmtsKeyReplies, + docsBpi2CmtsKeyRejects, + docsBpi2CmtsTEKInvalids, + docsBpi2CmtsKeyRejectErrorCode, + docsBpi2CmtsKeyRejectErrorString, + docsBpi2CmtsTEKInvalidErrorCode, + docsBpi2CmtsTEKInvalidErrorString, + docsBpi2CmtsIpMulticastAddressType, + docsBpi2CmtsIpMulticastAddress, + docsBpi2CmtsIpMulticastMask, + docsBpi2CmtsIpMulticastSAId, + docsBpi2CmtsIpMulticastSAType, + docsBpi2CmtsIpMulticastDataEncryptAlg, + docsBpi2CmtsIpMulticastDataAuthentAlg, + + + + docsBpi2CmtsIpMulticastSAMapRequests, + docsBpi2CmtsIpMulticastSAMapReplies, + docsBpi2CmtsIpMulticastSAMapRejects, + docsBpi2CmtsIpMulticastSAMapRejectErrorCode, + docsBpi2CmtsIpMulticastSAMapRejectErrorString, + docsBpi2CmtsIpMulticastMapControl, + docsBpi2CmtsIpMulticastMapStorageType, + docsBpi2CmtsMulticastAuthControl, + docsBpi2CmtsProvisionedCmCertTrust, + docsBpi2CmtsProvisionedCmCertSource, + docsBpi2CmtsProvisionedCmCertStatus, + docsBpi2CmtsProvisionedCmCert, + docsBpi2CmtsCACertSubject, + docsBpi2CmtsCACertIssuer, + docsBpi2CmtsCACertSerialNumber, + docsBpi2CmtsCACertTrust, + docsBpi2CmtsCACertSource, + docsBpi2CmtsCACertStatus, + docsBpi2CmtsCACert, + docsBpi2CmtsCACertThumbprint + } + STATUS current + DESCRIPTION + "This collection of objects provides CMTS BPI+ status + and control." + ::= { docsBpi2Groups 2 } + + docsBpi2CodeDownloadGroup OBJECT-GROUP + OBJECTS { + docsBpi2CodeDownloadStatusCode, + docsBpi2CodeDownloadStatusString, + docsBpi2CodeMfgOrgName, + docsBpi2CodeMfgCodeAccessStart, + docsBpi2CodeMfgCvcAccessStart, + docsBpi2CodeCoSignerOrgName, + docsBpi2CodeCoSignerCodeAccessStart, + docsBpi2CodeCoSignerCvcAccessStart, + docsBpi2CodeCvcUpdate + } + STATUS current + DESCRIPTION + "This collection of objects provides authenticated + software download support." + ::= { docsBpi2Groups 3 } + + END diff --git a/mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB b/mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB new file mode 100644 index 0000000..d943fcf --- /dev/null +++ b/mibs/ietf/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB @@ -0,0 +1,1532 @@ +DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + NOTIFICATION-TYPE, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + MODULE-COMPLIANCE, + + + + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsDevSwFilename, + docsDevSwServer, + docsDevServerDhcp, + docsDevServerTime + FROM DOCS-CABLE-DEVICE-MIB -- RFC 2669 + + docsIfCmCmtsAddress, + docsIfCmtsCmStatusMacAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType, + docsIfCmtsCmStatusDocsisRegMode, + docsIfCmtsCmStatusModulationType + FROM DOCS-IF-MIB -- RFC 4546 + + ifPhysAddress + FROM IF-MIB; -- RFC 2863 + + docsDevNotifMIB MODULE-IDENTITY + + LAST-UPDATED "200605240000Z" -- May 24, 2006 + ORGANIZATION "IETF IP over Cable Data Network + Working Group" + + CONTACT-INFO + " Azlina Ahmad + Postal: Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134, U.S.A. + Phone: 408 853 7927 + E-mail: azlina@cisco.com + + Greg Nakanishi + Postal: Motorola + 6450 Sequence Drive + San Diego, CA 92121, U.S.A. + Phone: 858 404 2366 + E-mail: gnakanishi@motorola.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + + + + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, + richard_woundy@cable.comcast.com + Jean-Francois Mule, jf.mule@cablelabs.com" + + DESCRIPTION + "The Event Notification MIB is an extension of the + CABLE DEVICE MIB. It defines various notification + objects for both cable modem and cable modem termination + systems. Two groups of SNMP notification objects are + defined. One group is for notifying cable modem events, + and one group is for notifying cable modem termination + system events. + + DOCSIS defines numerous events, and each event is + assigned to a functional category. This MIB defines + a notification object for each functional category. + The varbinding list of each notification includes + information about the event that occurred on the + device. + + Copyright (C) The Internet Society (2006). This version + of this MIB module is part of RFC 4547; see the RFC + itself for full legal notices." + + REVISION "200605240000Z" -- May 24, 2006 + DESCRIPTION + "Initial version, published as RFC 4547." + ::= { mib-2 132 } + +docsDevNotifControl OBJECT IDENTIFIER ::= { docsDevNotifMIB 1} +docsDevCmNotifs OBJECT IDENTIFIER ::= { docsDevNotifMIB 2 0 } +docsDevCmtsNotifs OBJECT IDENTIFIER ::= { docsDevNotifMIB 3 0 } + +docsDevCmNotifControl OBJECT-TYPE + SYNTAX BITS { + cmInitTLVUnknownNotif( 0), + cmDynServReqFailNotif( 1), + cmDynServRspFailNotif( 2), + cmDynServAckFailNotif( 3), + cmBpiInitNotif( 4), + cmBPKMNotif( 5), + cmDynamicSANotif( 6), + cmDHCPFailNotif( 7), + cmSwUpgradeInitNotif( 8), + cmSwUpgradeFailNotif( 9), + cmSwUpgradeSuccessNotif( 10), + + + + cmSwUpgradeCVCNotif( 11), + cmTODFailNotif( 12), + cmDCCReqFailNotif( 13), + cmDCCRspFailNotif( 14), + cmDCCAckFailNotif( 15) + } + MAX-ACCESS read-write + + STATUS current + DESCRIPTION + "The object is used to enable specific CM notifications. + For example, if the first bit is set, then + docsDevCmInitTLVUnknownNotif is enabled. If it is not set, + the notification is disabled. Note that notifications are + also under the control of the MIB modules defined in + RFC3413. + + If the device is rebooted,the value of this object SHOULD + revert to the default value. + " + DEFVAL { {} } + ::= { docsDevNotifControl 1 } + +docsDevCmtsNotifControl OBJECT-TYPE + SYNTAX BITS { + cmtsInitRegReqFailNotif( 0), + cmtsInitRegRspFailNotif( 1), + cmtsInitRegAckFailNotif( 2), + cmtsDynServReqFailNotif( 3), + cmtsDynServRspFailNotif( 4), + cmtsDynServAckFailNotif( 5), + cmtsBpiInitNotif( 6), + cmtsBPKMNotif( 7), + cmtsDynamicSANotif( 8), + cmtsDCCReqFailNotif( 9), + cmtsDCCRspFailNotif( 10), + cmtsDCCAckFailNotif( 11) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The object is used to enable specific CMTS notifications. + For example, if the first bit is set, then + docsDevCmtsInitRegRspFailNotif is enabled. If it is not set, + the notification is disabled. Note that notifications are + also under the control of the MIB modules defined in + RFC3413. + + + + + If the device is rebooted,the value of this object SHOULD + revert to the default value. + " + DEFVAL { {} } + ::= { docsDevNotifControl 2 } + +docsDevCmInitTLVUnknownNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "Notification to indicate that an unknown TLV was + encountered during the TLV parsing process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 1 } + + + + + +docsDevCmDynServReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + + "A notification to report the failure of a dynamic service + request during the dynamic services process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected to (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 2 } + +docsDevCmDynServRspFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + + + + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + " A notification to report the failure of a dynamic service + response during the dynamic services process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 3} + +docsDevCmDynServAckFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + + + + "A notification to report the failure of a dynamic service + acknowledgement during the dynamic services process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 4} + +docsDevCmBpiInitNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a BPI + initialization attempt during the registration process. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + + + + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 5 } + +docsDevCmBPKMNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a Baseline + Privacy Key Management (BPKM) operation. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + + + + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 6 } + +docsDevCmDynamicSANotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic security + association operation. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + + + + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 7 } + +docsDevCmDHCPFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsDevServerDhcp, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a DHCP operation. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsDevServerDhcp: the IP address of the DHCP server. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 8 } + + + +docsDevCmSwUpgradeInitNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsDevSwFilename, + docsDevSwServer, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to indicate that a software upgrade + has been initiated on the device. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 9 } + +docsDevCmSwUpgradeFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + + + + ifPhysAddress, + docsIfCmCmtsAddress, + docsDevSwFilename, + docsDevSwServer, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a software upgrade + attempt. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsDevSwFilename: the software image file name + - docsDevSwServer: the IP address of the server that + the image is retrieved from. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 10 } + +docsDevCmSwUpgradeSuccessNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + + + + docsDevSwFilename, + docsDevSwServer, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the software upgrade success + status. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsDevSwFilename: the software image file name + - docsDevSwServer: the IP address of the server that + the image is retrieved from. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 11 } + +docsDevCmSwUpgradeCVCFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + + + + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report that the verification of the + code file has failed during a secure software upgrade + attempt. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 12 } + +docsDevCmTODFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsDevServerTime, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a time of day + + + + operation. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsDevServerTime: the IP address of the time server. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 13 } + +docsDevCmDCCReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + " A notification to report the failure of a dynamic channel + change request during the dynamic channel change process + on the CM. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + + + + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 14 } + +docsDevCmDCCRspFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change response during the dynamic channel + change process on the CM. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + + + + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmStatusModulationType: the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 15 } + +docsDevCmDCCAckFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + ifPhysAddress, + docsIfCmCmtsAddress, + docsIfDocsisBaseCapability, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change acknowledgement during the dynamic channel + change process on the CM. + + This notification sends additional information about + the event by including the following objects in its + + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - ifPhysAddress: the MAC address of the cable + interface of this cable modem. + - docsIfCmCmtsAddress: the MAC address of the CMTS + to which the CM is connected (if there is a cable + card/interface in the CMTS, then it is actually the + MAC address of the cable interface to which it is + + + + connected). + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmStatusDocsisOperMode: the QOS level (1.0, 1.1) + that the CM is operating in. + - docsIfCmtsCmStatusModulationType the upstream modulation + methodology used by the CM. + " + ::= { docsDevCmNotifs 16} + +docsDevCmtsInitRegReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a registration + request from a CM during the CM initialization + process that was detected on the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + + + + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 1 } + +docsDevCmtsInitRegRspFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a registration + response during the CM initialization + process that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 2 } + +docsDevCmtsInitRegAckFailNotif NOTIFICATION-TYPE + + + + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a registration + acknowledgement from the CM during the CM + initialization process that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 3 } + +docsDevCmtsDynServReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + + + + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic service + request during the dynamic services process + that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 4 } + +docsDevCmtsDynServRspFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + + + + "A notification to report the failure of a dynamic service + response during the dynamic services process + that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 5 } + +docsDevCmtsDynServAckFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic service + acknowledgement during the dynamic services + process that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + + + + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 6 } + + +docsDevCmtsBpiInitNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a BPI + initialization attempt during the CM registration process + that was detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + + + + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 7 } + +docsDevCmtsBPKMNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a BPKM operation + that is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + + + + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 8 } + +docsDevCmtsDynamicSANotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic security + association operation that is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + + + + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 9 } + +docsDevCmtsDCCReqFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change request during the dynamic channel + change process and is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 10 } + +docsDevCmtsDCCRspFailNotif NOTIFICATION-TYPE + + + + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change response during the dynamic channel + change process and is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 11 } + +docsDevCmtsDCCAckFailNotif NOTIFICATION-TYPE + OBJECTS { + docsDevEvLevel, + docsDevEvId, + docsDevEvText, + docsIfCmtsCmStatusMacAddress, + + + + ifPhysAddress, + docsIfCmtsCmStatusDocsisRegMode, + docsIfDocsisBaseCapability, + docsIfCmtsCmStatusModulationType + } + STATUS current + DESCRIPTION + "A notification to report the failure of a dynamic channel + change acknowledgement during the dynamic channel + change process and is detected by the CMTS. + + This notification sends additional information about + the event by including the following objects in its + varbinding list. + - docsDevEvLevel: the priority level associated with the + event. + - docsDevEvId: the unique identifier of the event that + occurred. + - docsDevEvText: a textual description of the event. + - docsIfCmtsCmStatusMacAddress: the MAC address of the CM + with which this notification is associated. + - ifPhysAddress: the MAC address of the CMTS + (if there is a cable card/interface in the CMTS, + then it is actually the MAC address of the cable + interface that connected to the CM) cable interface + connected to the CM. + - docsIfCmtsCmStatusDocsisRegMode: the QOS level (1.0, 1.1) + that the reporting CM is operating in. + - docsIfDocsisBaseCapability: the highest + version of the DOCSIS specification (1.0, 1.1, 2.0) + that the device is capable of supporting. + - docsIfCmtsCmStatusModulationType: the upstream + modulation methodology used by the CM. + " + ::= { docsDevCmtsNotifs 12} + +-- +--Conformance definitions +-- + +docsDevNotifConformance OBJECT IDENTIFIER + ::= { docsDevNotifMIB 4 } +docsDevNotifGroups OBJECT IDENTIFIER + ::= { docsDevNotifConformance 1 } +docsDevNotifCompliances OBJECT IDENTIFIER + ::= { docsDevNotifConformance 2 } +docsDevCmNotifCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "The compliance statement for CM Notifications and Control." + + MODULE --docsDevNotif + MANDATORY-GROUPS { + docsDevCmNotifControlGroup, + docsDevCmNotificationGroup + } + ::= { docsDevNotifCompliances 1 } + +docsDevCmNotifControlGroup OBJECT-GROUP + OBJECTS { + docsDevCmNotifControl + } + STATUS current + DESCRIPTION + "This group represents objects that allow control + over CM Notifications." + ::= { docsDevNotifGroups 1 } + +docsDevCmNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + docsDevCmInitTLVUnknownNotif, + docsDevCmDynServReqFailNotif, + docsDevCmDynServRspFailNotif, + docsDevCmDynServAckFailNotif, + docsDevCmBpiInitNotif, + docsDevCmBPKMNotif, + docsDevCmDynamicSANotif, + docsDevCmDHCPFailNotif, + docsDevCmSwUpgradeInitNotif, + docsDevCmSwUpgradeFailNotif, + docsDevCmSwUpgradeSuccessNotif, + docsDevCmSwUpgradeCVCFailNotif, + docsDevCmTODFailNotif, + docsDevCmDCCReqFailNotif, + docsDevCmDCCRspFailNotif, + docsDevCmDCCAckFailNotif + } + STATUS current + DESCRIPTION + "A collection of CM notifications providing device status + and control." + ::= { docsDevNotifGroups 2 } + +docsDevCmtsNotifCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + + + "The compliance statement for DOCSIS CMTS Notification + and Control." + MODULE --docsDevNotif + MANDATORY-GROUPS { + docsDevCmtsNotifControlGroup, + docsDevCmtsNotificationGroup + } + ::= { docsDevNotifCompliances 2 } + +docsDevCmtsNotifControlGroup OBJECT-GROUP + OBJECTS { + docsDevCmtsNotifControl + } + STATUS current + DESCRIPTION + "This group represents objects that allow control + over CMTS Notifications." + ::= { docsDevNotifGroups 3 } + +docsDevCmtsNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + docsDevCmtsInitRegReqFailNotif, + docsDevCmtsInitRegRspFailNotif, + docsDevCmtsInitRegAckFailNotif , + docsDevCmtsDynServReqFailNotif, + docsDevCmtsDynServRspFailNotif, + docsDevCmtsDynServAckFailNotif, + docsDevCmtsBpiInitNotif, + docsDevCmtsBPKMNotif, + docsDevCmtsDynamicSANotif, + docsDevCmtsDCCReqFailNotif, + docsDevCmtsDCCRspFailNotif, + docsDevCmtsDCCAckFailNotif + } + STATUS current + DESCRIPTION + "A collection of CMTS notifications providing device + status and control." + ::= { docsDevNotifGroups 4 } + +END diff --git a/mibs/ietf/DOCS-IETF-QOS-MIB b/mibs/ietf/DOCS-IETF-QOS-MIB new file mode 100644 index 0000000..4e6a41c --- /dev/null +++ b/mibs/ietf/DOCS-IETF-QOS-MIB @@ -0,0 +1,3241 @@ +DOCS-IETF-QOS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + Counter32, + Unsigned32, + Counter64, + mib-2 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, + MacAddress, + RowStatus, + TruthValue, + TimeStamp, + StorageType + FROM SNMPv2-TC + + OBJECT-GROUP, + MODULE-COMPLIANCE + + + + FROM SNMPv2-CONF + + ifIndex, + InterfaceIndex + FROM IF-MIB + + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB + + DscpOrAny + FROM DIFFSERV-DSCP-TC + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +docsIetfQosMIB MODULE-IDENTITY + LAST-UPDATED "200601230000Z" -- January 23, 2006 + ORGANIZATION "IETF IP over Cable Data Network (IPCDN) + Working Group" + CONTACT-INFO + " + Co-Author: Michael Patrick + Postal: Motorola BCS + 111 Locke Drive + Marlborough, MA 01752-7214 + U.S.A. + Phone: +1 508 786 7563 + E-mail: michael.patrick@motorola.com + + Co-Author: William Murwin + Postal: Motorola BCS + 111 Locke Drive + Marlborough, MA 01752-7214 + U.S.A. + Phone: +1 508 786 7594 + E-mail: w.murwin@motorola.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, Richard_Woundy@cable.comcast.com + Jean-Francois Mule, jfm@cablelabs.com" + DESCRIPTION + "This is the management information for + Quality Of Service (QOS) for DOCSIS 1.1 and 2.0. + + + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4323; see the RFC itself for + full legal notices." + + REVISION "200601230000Z" -- January 23, 2006 + DESCRIPTION + "Initial version, published as RFC 4323." + ::= { mib-2 127 } + +-- +-- Placeholder for notifications/traps. +-- +docsIetfQosNotifications OBJECT IDENTIFIER ::= { docsIetfQosMIB 0 } + +docsIetfQosMIBObjects OBJECT IDENTIFIER ::= { docsIetfQosMIB 1 } + +-- Textual Conventions +DocsIetfQosRfMacIfDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Indicates a direction on an RF MAC interface. + + The value downstream(1) is from Cable Modem + Termination System to Cable Modem. + + The value upstream(2) is from Cable Modem to + Cable Modem Termination System." + SYNTAX INTEGER { + downstream(1), + upstream(2) + } + +DocsIetfQosBitRate ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The rate of traffic in unit of bits per second. + Used to specify traffic rate for QOS." + SYNTAX Unsigned32 + +DocsIetfQosSchedulingType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "The scheduling service provided by a CMTS for an + upstream Service Flow. If the parameter is omitted + from an upstream QOS Parameter Set, this object + takes the value of bestEffort (2). This parameter + must be reported as undefined (1) for downstream + QOS Parameter Sets." + SYNTAX INTEGER { + undefined (1), + + + + bestEffort (2), + nonRealTimePollingService(3), + realTimePollingService(4), + unsolictedGrantServiceWithAD(5), + unsolictedGrantService(6) + } + +----------------------------------------------------------------------- +-- +-- Packet Classifier Table +-- +docsIetfQosPktClassTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosPktClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the packet classification + configured on the CM or CMTS. + The model is that a packet either received + as input from an interface or transmitted + for output on an interface may be compared + against an ordered list of rules pertaining to + the packet contents. Each rule is a row of this + table. A matching rule provides a Service Flow + ID to which the packet is classified. + All rules need to match for a packet to match + a classifier. + + The objects in this row correspond to a set of + Classifier Encoding parameters in a DOCSIS + MAC management message. The + docsIetfQosPktClassBitMap indicates which + particular parameters were present in the + classifier as signaled in the DOCSIS message. + If the referenced parameter was not present + in the signaled DOCSIS 1.1 and 2.0 Classifier, the + corresponding object in this row reports a + value as specified in the DESCRIPTION section." + ::= { docsIetfQosMIBObjects 1 } + + +docsIetfQosPktClassEntry OBJECT-TYPE + SYNTAX DocsIetfQosPktClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in this table provides a single packet + classifier rule. The index ifIndex is an ifType + of docsCableMaclayer(127)." + INDEX { + + + + ifIndex, + docsIetfQosServiceFlowId, + docsIetfQosPktClassId + } + ::= { docsIetfQosPktClassTable 1 } + + + +DocsIetfQosPktClassEntry ::= SEQUENCE { + docsIetfQosPktClassId Unsigned32, + docsIetfQosPktClassDirection DocsIetfQosRfMacIfDirection, + docsIetfQosPktClassPriority Integer32, + docsIetfQosPktClassIpTosLow OCTET STRING, + docsIetfQosPktClassIpTosHigh OCTET STRING, + docsIetfQosPktClassIpTosMask OCTET STRING, + docsIetfQosPktClassIpProtocol Integer32, + docsIetfQosPktClassInetAddressType InetAddressType, + docsIetfQosPktClassInetSourceAddr InetAddress, + docsIetfQosPktClassInetSourceMask InetAddress, + docsIetfQosPktClassInetDestAddr InetAddress, + docsIetfQosPktClassInetDestMask InetAddress, + docsIetfQosPktClassSourcePortStart InetPortNumber, + docsIetfQosPktClassSourcePortEnd InetPortNumber, + docsIetfQosPktClassDestPortStart InetPortNumber, + docsIetfQosPktClassDestPortEnd InetPortNumber, + docsIetfQosPktClassDestMacAddr MacAddress, + docsIetfQosPktClassDestMacMask MacAddress, + docsIetfQosPktClassSourceMacAddr MacAddress, + docsIetfQosPktClassEnetProtocolType INTEGER, + docsIetfQosPktClassEnetProtocol Integer32, + docsIetfQosPktClassUserPriLow Integer32, + docsIetfQosPktClassUserPriHigh Integer32, + docsIetfQosPktClassVlanId Integer32, + docsIetfQosPktClassStateActive TruthValue, + docsIetfQosPktClassPkts Counter64, + docsIetfQosPktClassBitMap BITS + } + +docsIetfQosPktClassId OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index assigned to packet classifier entry by + the CMTS, which is unique per Service Flow." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.3.2" + ::= { docsIetfQosPktClassEntry 1 } + +docsIetfQosPktClassDirection OBJECT-TYPE + + + + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Indicates the direction to which the classifier + is applied." + ::= { docsIetfQosPktClassEntry 2 } + +docsIetfQosPktClassPriority OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value specifies the order of evaluation + of the classifiers. + + The higher the value, the higher the priority. + The value of 0 is used as default in + provisioned Service Flows Classifiers. + The default value of 64 is used for dynamic + Service Flow Classifiers. + + If the referenced parameter is not present + in a classifier, this object reports the default + value as defined above." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.3.5" + ::= { docsIetfQosPktClassEntry 3 } + +docsIetfQosPktClassIpTosLow OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The low value of a range of TOS byte values. + If the referenced parameter is not present + in a classifier, this object reports the value + of 0. + + The IP TOS octet, as originally defined in RFC 791, + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). This object is defined as an 8-bit + octet as per the DOCSIS Specification + for packet classification." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.1" + ::= { docsIetfQosPktClassEntry 4 } + +docsIetfQosPktClassIpTosHigh OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION "The 8-bit high value of a range of TOS byte + values. + + If the referenced parameter is not present + in a classifier, this object reports the + value of 0. + + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). This object is defined as an 8-bit + octet as defined by the DOCSIS Specification + for packet classification." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.1" + ::= { docsIetfQosPktClassEntry 5 } + +docsIetfQosPktClassIpTosMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The mask value is bitwise ANDed with TOS byte + in an IP packet, and this value is used for + range checking of TosLow and TosHigh. + + If the referenced parameter is not present + in a classifier, this object reports the value + of 0. + + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). This object is defined as an 8-bit + octet per the DOCSIS Specification for packet + classification." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.1" + ::= { docsIetfQosPktClassEntry 6 } + +docsIetfQosPktClassIpProtocol OBJECT-TYPE + SYNTAX Integer32 (0..258) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates the value of the IP + Protocol field required for IP packets to match + this rule. + + + + + The value 256 matches traffic with any IP Protocol + value. The value 257 by convention matches both TCP + and UDP. + + If the referenced parameter is not present + in a classifier, this object reports the value + of 258." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.2" + ::= { docsIetfQosPktClassEntry 7 } + +docsIetfQosPktClassInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The type of the Internet address for + docsIetfQosPktClassInetSourceAddr, + docsIetfQosPktClassInetSourceMask, + docsIetfQosPktClassInetDestAddr, and + docsIetfQosPktClassInetDestMask. + + If the referenced parameter is not present + in a classifier, this object reports the value of + ipv4(1)." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.3" + ::= { docsIetfQosPktClassEntry 8 } + +docsIetfQosPktClassInetSourceAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the value of the IP + Source Address required for packets to match + this rule. + + An IP packet matches the rule when the packet + IP Source Address bitwise ANDed with the + docsIetfQosPktClassInetSourceMask value equals the + docsIetfQosPktClassInetSourceAddr value. + + The address type of this object is specified by + docsIetfQosPktClassInetAddressType. + + If the referenced parameter is not present + in a classifier, this object reports the value of + '00000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.3" + ::= { docsIetfQosPktClassEntry 9 } + + + + +docsIetfQosPktClassInetSourceMask OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies which bits of a packet's + IP Source Address are compared to match + this rule. + + An IP packet matches the rule when the packet + source address bitwise ANDed with the + docsIetfQosPktClassInetSourceMask value equals the + docsIetfQosIpPktClassInetSourceAddr value. + + The address type of this object is specified by + docsIetfQosPktClassInetAddressType. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 'FFFFFFFF'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.4" + ::= { docsIetfQosPktClassEntry 10 } + +docsIetfQosPktClassInetDestAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the value of the IP + Destination Address required for packets to match + this rule. + + An IP packet matches the rule when the packet + IP Destination Address bitwise ANDed with the + docsIetfQosPktClassInetDestMask value + equals the docsIetfQosPktClassInetDestAddr value. + + The address type of this object is specified by + docsIetfQosPktClassInetAddressType. + + If the referenced parameter is not present + in a classifier, this object reports the value of + '00000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.5" + ::= { docsIetfQosPktClassEntry 11 } + +docsIetfQosPktClassInetDestMask OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "This object specifies which bits of a packet's + IP Destination Address are compared to + match this rule. + + An IP packet matches the rule when the packet + destination address bitwise ANDed with the + docsIetfQosPktClassInetDestMask value equals the + docsIetfQosIpPktClassInetDestAddr value. + + The address type of this object is specified by + docsIetfQosPktClassInetAddressType. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 'FFFFFFFF'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.6" + ::= { docsIetfQosPktClassEntry 12 } + +docsIetfQosPktClassSourcePortStart OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the low-end inclusive + range of TCP/UDP source port numbers to which + a packet is compared. This object is irrelevant + for non-TCP/UDP IP packets. + + If the referenced parameter is not present + in a classifier, this object reports the value + of 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.7" + ::= { docsIetfQosPktClassEntry 13 } + +docsIetfQosPktClassSourcePortEnd OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the high-end inclusive + range of TCP/UDP source port numbers to which + a packet is compared. This object is irrelevant + for non-TCP/UDP IP packets. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 65535." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.8" + ::= { docsIetfQosPktClassEntry 14 } + + + + +docsIetfQosPktClassDestPortStart OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the low-end inclusive + range of TCP/UDP destination port numbers to + which a packet is compared. + + If the referenced parameter is not present + in a classifier, this object reports the value + of 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.9" + ::= { docsIetfQosPktClassEntry 15 } + +docsIetfQosPktClassDestPortEnd OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object specifies the high-end inclusive + range of TCP/UDP destination port numbers to which + a packet is compared. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 65535." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.5.10" + ::= { docsIetfQosPktClassEntry 16 } + +docsIetfQosPktClassDestMacAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An Ethernet packet matches an entry when its + destination MAC address bitwise ANDed with + docsIetfQosPktClassDestMacMask equals the value of + docsIetfQosPktClassDestMacAddr. + + + If the referenced parameter is not present + in a classifier, this object reports the value of + '000000000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.1" + ::= { docsIetfQosPktClassEntry 17 } + +docsIetfQosPktClassDestMacMask OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "An Ethernet packet matches an entry when its + destination MAC address bitwise ANDed with + docsIetfQosPktClassDestMacMask equals the value of + docsIetfQosPktClassDestMacAddr. + + If the referenced parameter is not present + in a classifier, this object reports the value of + '000000000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.1" + ::= { docsIetfQosPktClassEntry 18 } + +docsIetfQosPktClassSourceMacAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An Ethernet packet matches this entry when its + source MAC address equals the value of + this object. + + If the referenced parameter is not present + in a classifier, this object reports the value of + 'FFFFFFFFFFFF'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.2" + ::= { docsIetfQosPktClassEntry 19 } + +docsIetfQosPktClassEnetProtocolType OBJECT-TYPE + SYNTAX INTEGER { + none(0), + ethertype(1), + dsap(2), + mac(3), + all(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates the format of the layer 3 + protocol ID in the Ethernet packet. A value of + none(0) means that the rule does not use the + layer 3 protocol type as a matching criteria. + + A value of ethertype(1) means that the rule + applies only to frames that contain an + EtherType value. Ethertype values are contained + in packets using the Dec-Intel-Xerox (DIX) + encapsulation or the RFC1042 Sub-Network Access + Protocol (SNAP) encapsulation formats. + + A value of dsap(2) means that the rule applies + + + + only to frames using the IEEE802.3 + encapsulation format with a Destination Service + Access Point (DSAP) other + than 0xAA (which is reserved for SNAP). + + A value of mac(3) means that the rule applies + only to MAC management messages for MAC management + messages. + + A value of all(4) means that the rule matches + all Ethernet packets. + + If the Ethernet frame contains an 802.1P/Q Tag + header (i.e., EtherType 0x8100), this object + applies to the embedded EtherType field within + the 802.1P/Q header. + + If the referenced parameter is not present in a + classifier, this object reports the value of 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.3" + ::= { docsIetfQosPktClassEntry 20 } + +docsIetfQosPktClassEnetProtocol OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "If docsIetfQosEthPktClassProtocolType is none(0), + this object is ignored when considering whether + a packet matches the current rule. + + If dosQosPktClassEnetProtocolType is ethertype(1), + this object gives the 16-bit value of the + EtherType that the packet must match in order to + match the rule. + + If docsIetfQosPktClassEnetProtocolType is dsap(2), + the lower 8 bits of this object's value must match + the DSAP byte of the packet in order to match the + rule. + + If docsIetfQosPktClassEnetProtocolType is mac(3), + the lower 8 bits of this object's value represent a + lower bound (inclusive) of MAC management message + type codes matched, and the upper 8 bits represent + the upper bound (inclusive) of matched MAC message + type codes. Certain message type codes are + excluded from matching, as specified in the + reference. + + + + If the Ethernet frame contains an 802.1P/Q Tag + header (i.e., EtherType 0x8100), this object applies + to the embedded EtherType field within the 802.1P/Q + header. + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.6.3" + ::= { docsIetfQosPktClassEntry 21 } + +docsIetfQosPktClassUserPriLow OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object applies only to Ethernet frames + using the 802.1P/Q tag header (indicated with + EtherType 0x8100). Such frames include a 16-bit + Tag that contains a 3-bit Priority field and + a 12-bit VLAN number. + + Tagged Ethernet packets must have a 3-bit + Priority field within the range of + docsIetfQosPktClassPriLow to + docsIetfQosPktClassPriHigh in order to match this + rule. + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.7.1" + ::= { docsIetfQosPktClassEntry 22 } + +docsIetfQosPktClassUserPriHigh OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object applies only to Ethernet frames + using the 802.1P/Qtag header (indicated with + EtherType 0x8100). Such frames include a 16-bit + Tag that contains a 3-bit Priority field and + a 12-bit VLAN number. + + Tagged Ethernet packets must have a 3-bit + Priority field within the range of + docsIetfQosPktClassPriLow to + docsIetfQosPktClassPriHigh in order to match this + rule. + + + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as 7." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.7.1" + ::= { docsIetfQosPktClassEntry 23 } + +docsIetfQosPktClassVlanId OBJECT-TYPE + SYNTAX Integer32 (0 | 1..4094) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object applies only to Ethernet frames + using the 802.1P/Q tag header. + + Tagged packets must have a VLAN Identifier that + matches the value in order to match the rule. + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.7.2" + ::= { docsIetfQosPktClassEntry 24 } + +docsIetfQosPktClassStateActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates whether or not the classifier + is enabled to classify packets to a Service Flow. + + If the referenced parameter is not present in the + classifier, the value of this object is reported + as true(1)." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.3.6" + ::= { docsIetfQosPktClassEntry 25 } + +docsIetfQosPktClassPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object counts the number of packets that have + been classified using this entry. This + includes all packets delivered to a Service Flow + maximum rate policing function, whether or not that + function drops the packets. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + + + + ::= { docsIetfQosPktClassEntry 26 } + + +docsIetfQosPktClassBitMap OBJECT-TYPE + SYNTAX BITS { -- Reference SP-RFIv2.0-I06-040804 + rulePriority(0), -- Appendix C.2.1.3.4 + activationState(1), -- Appendix C.2.1.3.6 + ipTos(2), -- Appendix C.2.1.5.1 + ipProtocol(3), -- Appendix C.2.1.5.2 + ipSourceAddr(4), -- Appendix C.2.1.5.3 + ipSourceMask(5), -- Appendix C.2.1.5.4 + ipDestAddr(6), -- Appendix C.2.1.5.5 + ipDestMask(7), -- Appendix C.2.1.5.6 + sourcePortStart(8), -- Appendix C.2.1.5.7 + sourcePortEnd(9), -- Appendix C.2.1.5.8 + destPortStart(10), -- Appendix C.2.1.5.9 + destPortEnd(11), -- Appendix C.2.1.5.10 + destMac(12), -- Appendix C.2.1.6.1 + sourceMac(13), -- Appendix C.2.1.6.2 + ethertype(14), -- Appendix C.2.1.6.3 + userPri(15), -- Appendix C.2.1.7.1 + vlanId(16) -- Appendix C.2.1.7.2 + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates which parameter encodings + were actually present in the DOCSIS packet + classifier encoding signaled in the DOCSIS message + that created or modified the classifier. Note that + Dynamic Service Change messages have replace + semantics, so that all non-default parameters must + be present whether the classifier is being created + or changed. + + A bit of this object is set to 1 if the parameter + indicated by the comment was present in the + classifier encoding, and to 0 otherwise. + + Note that BITS are encoded most significant bit + first, so that if, for example, bits 6 and 7 are + set, this object is encoded as the octet string + '030000'H." + ::= { docsIetfQosPktClassEntry 27 } + +-- +-- QOS Parameter Set Table +-- + + + +docsIetfQosParamSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosParamSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of DOCSIS 1.1 and 2.0 + QOS parameters defined in a managed device. + + The ifIndex index specifies a DOCSIS MAC Domain. + The docsIetfQosServiceFlowId index specifies a + particular Service Flow. + The docsIetfQosParamSetType index indicates whether + the active, admitted, or provisioned QOS Parameter + Set is being described by the row. + + Only the QOS Parameter Sets of DOCSIS 1.1 and 2.0 + Service Flows are represented in this table. + + DOCSIS 1.0 QOS service profiles are not + represented in this table. + + Each row corresponds to a DOCSIS QOS Parameter Set + as signaled via DOCSIS MAC management messages. + Each object in the row corresponds to one or + part of one DOCSIS 1.1 Service Flow Encoding. + The docsIetfQosParamSetBitMap object in the row + indicates which particular parameters were signaled + in the original registration or dynamic service + request message that created the QOS Parameter Set. + + In many cases, even if a QOS Parameter Set parameter + was not signaled, the DOCSIS specification calls + for a default value to be used. That default value + is reported as the value of the corresponding object + in this row. + + Many objects are not applicable, depending on + the Service Flow direction or upstream scheduling + type. The object value reported in this case + is specified in the DESCRIPTION clause." + ::= { docsIetfQosMIBObjects 2 } + +docsIetfQosParamSetEntry OBJECT-TYPE + SYNTAX DocsIetfQosParamSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A unique set of QOS parameters." + INDEX { + ifIndex, docsIetfQosServiceFlowId, docsIetfQosParamSetType + + + + } + ::= { docsIetfQosParamSetTable 1 } + +DocsIetfQosParamSetEntry ::= SEQUENCE { + docsIetfQosParamSetServiceClassName SnmpAdminString, + docsIetfQosParamSetPriority Integer32, + docsIetfQosParamSetMaxTrafficRate DocsIetfQosBitRate, + docsIetfQosParamSetMaxTrafficBurst Unsigned32, + docsIetfQosParamSetMinReservedRate DocsIetfQosBitRate, + docsIetfQosParamSetMinReservedPkt Integer32, + docsIetfQosParamSetActiveTimeout Integer32, + docsIetfQosParamSetAdmittedTimeout Integer32, + docsIetfQosParamSetMaxConcatBurst Integer32, + docsIetfQosParamSetSchedulingType DocsIetfQosSchedulingType, + docsIetfQosParamSetNomPollInterval Unsigned32, + docsIetfQosParamSetTolPollJitter Unsigned32, + docsIetfQosParamSetUnsolicitGrantSize Integer32, + docsIetfQosParamSetNomGrantInterval Unsigned32, + docsIetfQosParamSetTolGrantJitter Unsigned32, + docsIetfQosParamSetGrantsPerInterval Integer32, + docsIetfQosParamSetTosAndMask OCTET STRING, + docsIetfQosParamSetTosOrMask OCTET STRING, + docsIetfQosParamSetMaxLatency Unsigned32, + docsIetfQosParamSetType INTEGER, + docsIetfQosParamSetRequestPolicyOct OCTET STRING, + docsIetfQosParamSetBitMap BITS + } + +docsIetfQosParamSetServiceClassName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Refers to the Service Class Name from which the + parameter set values were derived. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is a zero-length string." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.3.4" + ::= { docsIetfQosParamSetEntry 1 } + +docsIetfQosParamSetPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The relative priority of a Service Flow. + Higher numbers indicate higher priority. + This priority should only be used to differentiate + + + + Service Flow from identical parameter sets. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is 0. If the parameter is + not applicable, the reported value is 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.1" + ::= { docsIetfQosParamSetEntry 2 } + +docsIetfQosParamSetMaxTrafficRate OBJECT-TYPE + SYNTAX DocsIetfQosBitRate + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Maximum sustained traffic rate allowed for this + Service Flow in bits/sec. Must count all MAC frame + data PDU from the bytes following the MAC header + HCS to the end of the CRC. The number of bytes + forwarded is limited during any time interval. + The value 0 means no maximum traffic rate is + enforced. This object applies to both upstream and + downstream Service Flows. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is 0. If the parameter is + not applicable, it is reported as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.2" + ::= { docsIetfQosParamSetEntry 3 } + +docsIetfQosParamSetMaxTrafficBurst OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the token bucket size in bytes + for this parameter set. The value is calculated + from the byte following the MAC header HCS to + the end of the CRC. This object is applied in + conjunction with docsIetfQosParamSetMaxTrafficRate + to calculate maximum sustained traffic rate. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object for scheduling types + bestEffort (2), nonRealTimePollingService(3), + and realTimePollingService(4) is 3044. + + If this parameter is not applicable, it is reported + as 0. + + + + " + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.3" + ::= { docsIetfQosParamSetEntry 4 } + +docsIetfQosParamSetMinReservedRate OBJECT-TYPE + SYNTAX DocsIetfQosBitRate + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the guaranteed minimum rate in + bits/sec for this parameter set. The value is + calculated from the byte following the MAC + header HCS to the end of the CRC. The default + value of 0 means that no bandwidth is reserved. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is 0. If the parameter + is not applicable, it is reported as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.4" + ::= { docsIetfQosParamSetEntry 5 } + +docsIetfQosParamSetMinReservedPkt OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies an assumed minimum packet size in + bytes for which the + docsIetfQosParamSetMinReservedRate will be + provided. The value is calculated from the byte + following the MAC header HCS to the end of the + CRC. + + If the referenced parameter is omitted from a + DOCSIS QOS parameter set, the default value is + CMTS implementation dependent. In this case, the + CMTS reports the default value it is using, and the + CM reports a value of 0. If the referenced + parameter is not applicable to the direction or + scheduling type of the Service Flow, both CMTS and + CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.5" + ::= { docsIetfQosParamSetEntry 6 } + +docsIetfQosParamSetActiveTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "Specifies the maximum duration in seconds that + resources remain unused on an active service + flow before CMTS signals that both active and + admitted parameters set are null. The default + value of 0 signifies an infinite amount of time. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object is 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.6" + ::= { docsIetfQosParamSetEntry 7 } + +docsIetfQosParamSetAdmittedTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum duration in seconds that + resources remain in admitted state before + resources must be released. + + The value of 0 signifies an infinite amount + of time. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the + default value of this object is 200. + " + + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.5.7" + DEFVAL { 200 } + ::= { docsIetfQosParamSetEntry 8 } + +docsIetfQosParamSetMaxConcatBurst OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum concatenated burst in + bytes that an upstream Service Flow is allowed. + The value is calculated from the FC byte of the + Concatenation MAC Header to the last CRC byte in + of the last concatenated MAC frame, inclusive. + The value of 0 specifies no maximum burst. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set, the default + value of this object for scheduling types + bestEffort(2), nonRealTimePollingService(3), and + + + + realTimePollingService(4) is 1522. If the parameter + is not applicable, this object's value is reported + as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.1" + ::= { docsIetfQosParamSetEntry 9 } + + +docsIetfQosParamSetSchedulingType OBJECT-TYPE + SYNTAX DocsIetfQosSchedulingType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the upstream scheduling service used for + upstream Service Flow. + + If the referenced parameter is not present in the + corresponding DOCSIS QOS Parameter Set of an + upstream Service Flow, the default value of this + object is bestEffort(2). For QOS parameter sets of + downstream Service Flows, this object's value is + reported as undefined(1)." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.2" + ::= { docsIetfQosParamSetEntry 10 } + +docsIetfQosParamSetNomPollInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the nominal interval in microseconds + between successive unicast request + opportunities on an upstream Service Flow. + + This object applies only to upstream Service Flows + with DocsIetfQosSchedulingType of value + nonRealTimePollingService(3), + realTimePollingService(4), and + unsolictedGrantServiceWithAD(5). The parameter is + mandatory for realTimePollingService(4). If the + parameter is omitted with + nonRealTimePollingService(3), the CMTS uses an + implementation-dependent value. If the parameter + is omitted with unsolictedGrantServiceWithAD(5), + the CMTS uses as a default value the value of the + Nominal Grant Interval parameter. In all cases, + the CMTS reports the value it is using when the + parameter is applicable. The CM reports the + signaled parameter value if it was signaled, + and 0 otherwise. + + + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.4" + ::= { docsIetfQosParamSetEntry 11 } + +docsIetfQosParamSetTolPollJitter OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum amount of time in + microseconds that the unicast request interval + may be delayed from the nominal periodic + schedule on an upstream Service Flow. + + This parameter is applicable only to upstream + Service Flows with a DocsIetfQosSchedulingType of + realTimePollingService(4) or + unsolictedGrantServiceWithAD(5). + + If the referenced parameter is applicable but not + present in the corresponding DOCSIS QOS Parameter + Set, the CMTS uses an implementation-dependent + value and reports the value it is using. + The CM reports a value of 0 in this case. + + If the parameter is not applicable to the + direction or upstream scheduling type of the + Service Flow, both CMTS and CM report this + object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.5" + ::= { docsIetfQosParamSetEntry 12 } + +docsIetfQosParamSetUnsolicitGrantSize OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the unsolicited grant size in bytes. + The grant size includes the entire MAC frame + data PDU from the Frame Control byte to the end + of the MAC frame. + + The referenced parameter is applicable only + for upstream flows with a DocsIetfQosSchedulingType + of unsolicitedGrantServicewithAD(5) or + unsolicitedGrantService(6), and it is mandatory + + + + when applicable. Both CMTS and CM report + the signaled value of the parameter in this + case. + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.6" + ::= { docsIetfQosParamSetEntry 13 } + +docsIetfQosParamSetNomGrantInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the nominal interval in microseconds + between successive data grant opportunities + on an upstream Service Flow. + + The referenced parameter is applicable only + for upstream flows with a DocsIetfQosSchedulingType + of unsolicitedGrantServicewithAD(5) or + unsolicitedGrantService(6), and it is mandatory + when applicable. Both CMTS and CM report the + signaled value of the parameter in this case. + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.7" + ::= { docsIetfQosParamSetEntry 14 } + +docsIetfQosParamSetTolGrantJitter OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum amount of time in + microseconds that the transmission opportunities + may be delayed from the nominal periodic schedule. + + The referenced parameter is applicable only + for upstream flows with a DocsIetfQosSchedulingType + of unsolicitedGrantServicewithAD(5) or + unsolicitedGrantService(6), and it is mandatory + when applicable. Both CMTS and CM report the + + + + signaled value of the parameter in this case. + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.8" + ::= { docsIetfQosParamSetEntry 15 } + +docsIetfQosParamSetGrantsPerInterval OBJECT-TYPE + SYNTAX Integer32 (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the number of data grants per Nominal + Grant Interval + (docsIetfQosParamSetNomGrantInterval). + + The referenced parameter is applicable only + for upstream flows with a DocsIetfQosSchedulingType + of unsolicitedGrantServicewithAD(5) or + unsolicitedGrantService(6), and it is mandatory + when applicable. Both CMTS and CM report the + signaled value of the parameter in this case. + + If the referenced parameter is not applicable to + the direction or scheduling type of the + corresponding DOCSIS QOS Parameter Set, both + CMTS and CM report this object's value as 0." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.9" + ::= { docsIetfQosParamSetEntry 16 } + +docsIetfQosParamSetTosAndMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the AND mask for the IP TOS byte for + overwriting IP packet's TOS value. The IP packet + TOS byte is bitwise ANDed with + docsIetfQosParamSetTosAndMask, and the result is + bitwise ORed with docsIetfQosParamSetTosORMask and + the result is written to the IP packet TOS byte. + A value of 'FF'H for docsIetfQosParamSetTosAndMask + and a value of '00'H for + docsIetfQosParamSetTosOrMask means that the IP + Packet TOS byte is not overwritten. + + This combination is reported if the referenced + parameter is not present in a QOS Parameter Set. + + + + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). Network operators SHOULD avoid + specifying values of docsIetfQosParamSetTosAndMask + and docsIetfQosParamSetTosORMask that would result + in the modification of the ECN bits. + + In particular, operators should not use values of + docsIetfQosParamSetTosAndMask that have either of + the least-significant two bits set to 0. Similarly, + operators should not use values of + docsIetfQosParamSetTosORMask that have either of + the least-significant two bits set to 1. + + Even though this object is only enforced by the + Cable Modem Termination System (CMTS), + Cable Modems MUST report the value as signaled in + the referenced parameter." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.10; + RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + Diffserv." + ::= { docsIetfQosParamSetEntry 17 } + +docsIetfQosParamSetTosOrMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the OR mask for the IP TOS byte. + + See the description of docsIetfQosParamSetTosAndMask + for further details. + + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). Network operators SHOULD avoid + specifying values of docsIetfQosParamSetTosAndMask + and docsIetfQosParamSetTosORMask that would result + in the modification of the ECN bits." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.10; + RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + + + + Diffserv." + ::= { docsIetfQosParamSetEntry 18 } + +docsIetfQosParamSetMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies the maximum latency between the + reception of a packet by the CMTS on its NSI + and the forwarding of the packet to the RF + interface. A value of 0 signifies no maximum + latency is enforced. This object only applies to + downstream Service Flows. + + If the referenced parameter is not present in the + corresponding downstream DOCSIS QOS Parameter Set, + the default value is 0. This parameter is + not applicable to upstream DOCSIS QOS Parameter + Sets, and its value is reported as 0 in this case." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.7.1" + ::= { docsIetfQosParamSetEntry 19 } + + +docsIetfQosParamSetType OBJECT-TYPE + SYNTAX INTEGER { + active (1), + admitted (2), + provisioned (3) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Defines the type of the QOS parameter set defined + by this row. active(1) indicates the Active QOS + parameter set, describing the service currently + being provided by the DOCSIS MAC domain to the + Service Flow. admitted(2) indicates the Admitted + QOS Parameter Set, describing services reserved by + the DOCSIS MAC domain for use by the service + flow. provisioned (3) describes the QOS Parameter + Set defined in the DOCSIS CM Configuration file for + the Service Flow." + REFERENCE "SP-RFIv2.0-I06-040804, 8.1.5" + ::= { docsIetfQosParamSetEntry 20 } + +docsIetfQosParamSetRequestPolicyOct OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + -- A 32-bit mask represented most significant byte + + + + -- first. The 32-bit integer represented in this + -- manner equals the binary value of the referenced + -- integer parameter of the DOCSIS RFI + -- specification. + -- The BITS syntax is not used in order to avoid + -- the confusion caused by different bit-numbering + -- conventions. + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Specifies which transmit interval opportunities + the CM omits for upstream transmission requests and + packet transmissions. This object takes its + default value for downstream Service Flows. + + Unless otherwise indicated, a bit value of 1 means + that a CM must not use that opportunity for + upstream transmission. + + If bit 0 is the least significant bit of the + least significant (4th) octet, and if bit number + is increased with significance, the bit definitions + are defined as follows: + + broadcastReqOpp(0): + all CMs broadcast request opportunities + + priorityReqMulticastReq(1): + priority request multicast request + opportunities + + reqDataForReq(2): + request/data opportunities for requests + + reqDataForData(3): + request/data opportunities for data + + piggybackReqWithData(4): + piggyback requests with data + + concatenateData(5): + concatenate data + + fragmentData(6): + fragment data + + suppresspayloadheaders(7): + suppress payload headers + + + + + dropPktsExceedUGSize(8): + A value of 1 means that the Service Flow must + drop packets that do not fit in the Unsolicited + Grant size. + + If the referenced parameter is not present in + a QOS Parameter Set, the value of this object is + reported as '00000000'H." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.3" + ::= { docsIetfQosParamSetEntry 21 } + +docsIetfQosParamSetBitMap OBJECT-TYPE + -- Each bit corresponds to a parameter + -- from SP-RFI-v1.1-I10-037030, + -- Appendix C in the indicated + SYNTAX BITS { -- section number. + trafficPriority(0), -- C.2.2.5.1 + maxTrafficRate(1), -- C.2.2.5.2 + maxTrafficBurst(2), -- C.2.2.5.3 + minReservedRate(3), -- C.2.2.5.4 + minReservedPkt(4), -- C.2.2.5.5 + activeTimeout(5), -- C.2.2.5.6 + admittedTimeout(6), -- C.2.2.5.7 + maxConcatBurst(7), -- C.2.2.6.1 + schedulingType(8), -- C.2.2.6.2 + requestPolicy(9), -- C.2.2.6.3 + nomPollInterval(10), -- C.2.2.6.4 + tolPollJitter(11), -- C.2.2.6.5 + unsolicitGrantSize(12), -- C.2.2.6.6 + nomGrantInterval(13), -- C.2.2.6.7 + tolGrantJitter(14), -- C.2.2.6.8 + grantsPerInterval(15), -- C.2.2.6.9 + tosOverwrite(16), -- C.2.2.6.10 + maxLatency(17) -- C.2.2.7.1 + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates the set of QOS Parameter + Set parameters actually signaled in the + DOCSIS registration or dynamic service request + message that created or modified the QOS Parameter + Set. A bit is set to 1 when the parameter described + by the indicated reference section is present + in the original request. + + Note that when Service Class names are expanded, + the registration or dynamic response message may + contain parameters as expanded by the CMTS based + + + + on a stored service class. These expanded + parameters are not indicated by a 1 bit in this + object. + + Note that even though some QOS Parameter Set + parameters may not be signaled in a message + (so that the paramater's bit in this object is 0), + the DOCSIS specification requires that default + values be used. These default values are reported + as the corresponding object's value in the row. + + Note that BITS objects are encoded most + significant bit first. For example, if bits + 1 and 16 are set, the value of this object + is the octet string '400080'H." + ::= { docsIetfQosParamSetEntry 22 } + +-- +-- Service Flow Table +-- +docsIetfQosServiceFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of DOCSIS-QOS + Service Flows in a managed device." + ::= { docsIetfQosMIBObjects 3 } + +docsIetfQosServiceFlowEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Describes a Service Flow. + An entry in the table exists for each + Service Flow ID. The ifIndex is an + ifType of docsCableMaclayer(127)." + INDEX { + ifIndex, + docsIetfQosServiceFlowId + } + ::= { docsIetfQosServiceFlowTable 1 } + +DocsIetfQosServiceFlowEntry ::= SEQUENCE { + docsIetfQosServiceFlowId Unsigned32, + docsIetfQosServiceFlowSID Unsigned32, + docsIetfQosServiceFlowDirection DocsIetfQosRfMacIfDirection, + docsIetfQosServiceFlowPrimary TruthValue + } + + + +docsIetfQosServiceFlowId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An index assigned to a Service Flow by CMTS." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.3.2" + ::= { docsIetfQosServiceFlowEntry 1 } + +docsIetfQosServiceFlowSID OBJECT-TYPE + SYNTAX Unsigned32 (0..16383) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Service Identifier (SID) assigned to an + admitted or active Service Flow. This object + reports a value of 0 if a Service ID is not + associated with the Service Flow. Only active + or admitted upstream Service Flows will have a + Service ID (SID)." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.3.3" + ::= { docsIetfQosServiceFlowEntry 2 } + +docsIetfQosServiceFlowDirection OBJECT-TYPE + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The direction of the Service Flow." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.1/2" + ::= { docsIetfQosServiceFlowEntry 3 } + +docsIetfQosServiceFlowPrimary OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Object reflects whether Service Flow is the primary + or a secondary Service Flow. + + A primary Service Flow is the default Service Flow + for otherwise unclassified traffic and all MAC + messages." + REFERENCE "SP-RFIv2.0-I06-040804, Section 8.1 " + ::= { docsIetfQosServiceFlowEntry 4 } + +-- +-- Service Flow Stats Table +-- +docsIetfQosServiceFlowStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceFlowStatsEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION "This table describes statistics associated with the + Service Flows in a managed device." + ::= { docsIetfQosMIBObjects 4 } + +docsIetfQosServiceFlowStatsEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceFlowStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Describes a set of Service Flow statistics. + An entry in the table exists for each + Service Flow ID. The ifIndex is an + ifType of docsCableMaclayer(127)." + INDEX { + ifIndex, + docsIetfQosServiceFlowId + } + ::= { docsIetfQosServiceFlowStatsTable 1 } + +DocsIetfQosServiceFlowStatsEntry ::= SEQUENCE { + docsIetfQosServiceFlowPkts Counter64, + docsIetfQosServiceFlowOctets Counter64, + docsIetfQosServiceFlowTimeCreated TimeStamp, + docsIetfQosServiceFlowTimeActive Counter32, + docsIetfQosServiceFlowPHSUnknowns Counter32, + docsIetfQosServiceFlowPolicedDropPkts Counter32, + docsIetfQosServiceFlowPolicedDelayPkts Counter32 + } + +docsIetfQosServiceFlowPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For outgoing Service Flows, this object counts the + number of Packet Data PDUs forwarded to this + Service Flow. For incoming upstream CMTS service + flows, this object counts the number of Packet + Data PDUs actually received on the Service Flow + identified by the SID for which the packet was + scheduled. CMs not classifying downstream packets + may report this object's value as 0 for downstream + Service Flows. This object does not count + MAC-specific management messages. + + Particularly for UGS flows, packets sent on the + primary Service Flow in violation of the UGS grant + size should be counted only by the instance of this + object that is associated with the primary service + + + + flow. + + Unclassified upstream user data packets (i.e., non- + MAC-management) forwarded to the primary upstream + Service Flow should be counted by the instance of + this object that is associated with the primary + service flow. + + This object does include packets counted by + docsIetfQosServiceFlowPolicedDelayPkts, but does not + include packets counted by + docsIetfQosServiceFlowPolicedDropPkts + and docsIetfQosServiceFlowPHSUnknowns. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 1 } + +docsIetfQosServiceFlowOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of octets from the byte after the MAC + header HCS to the end of the CRC for all packets + counted in the docsIetfQosServiceFlowPkts object for + this row. Note that this counts the octets after + payload header suppression and before payload + header expansion have been applied. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 2 } + +docsIetfQosServiceFlowTimeCreated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of sysUpTime when the service flow + was created." + ::= { docsIetfQosServiceFlowStatsEntry 3 } + +docsIetfQosServiceFlowTimeActive OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "The number of seconds that the service flow + has been active. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 4 } + +docsIetfQosServiceFlowPHSUnknowns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For incoming upstream CMTS service flows, this + object counts the number of packets received + with an unknown payload header suppression index. + The service flow is identified by the SID for which + the packet was scheduled. + + On a CM, only this object's instance for the primary + downstream service flow counts packets received with + an unknown payload header suppression index. All + other downstream service flows on CM report this + objects value as 0. + + All outgoing service flows report this object's + value as 0. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 5 } + +docsIetfQosServiceFlowPolicedDropPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For outgoing service flows, this object counts the + number of Packet Data PDUs classified to this + service flow dropped due to: + (1) implementation-dependent excessive delay + while enforcing the Maximum Sustained + Traffic Rate; or + (2) UGS packets dropped due to exceeding the + Unsolicited Grant Size with a + Request/Transmission policy that requires + such packets to be dropped. + + Classified packets dropped due to other reasons + + + + must be counted in ifOutDiscards for the interface + of this service flow. This object reports 0 for + incoming service flows. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 6 } + +docsIetfQosServiceFlowPolicedDelayPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object counts only outgoing packets delayed in + order to maintain the Maximum Sustained Traffic + Rate. This object will always report a value of 0 + for UGS flows because the Maximum Sustained Traffic + Rate does not apply. This object is 0 for incoming + service flows. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosServiceFlowStatsEntry 7 } + +-- +-- Upstream Service Flow Stats Table (CMTS ONLY) +-- +docsIetfQosUpstreamStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosUpstreamStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes statistics associated with + upstream service flows. All counted frames must + be received without a Frame Check Sequence (FCS) + error." + ::= { docsIetfQosMIBObjects 5 } + +docsIetfQosUpstreamStatsEntry OBJECT-TYPE + SYNTAX DocsIetfQosUpstreamStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Describes a set of upstream service flow + statistics. An entry in the table exists for each + upstream Service Flow in a managed device. + The ifIndex is an ifType of + docsCableMaclayer(127)." + INDEX { + + + + ifIndex, + docsIetfQosSID + } + ::= { docsIetfQosUpstreamStatsTable 1 } + +DocsIetfQosUpstreamStatsEntry ::= SEQUENCE { + docsIetfQosSID Unsigned32, + docsIetfQosUpstreamFragments Counter32, + docsIetfQosUpstreamFragDiscards Counter32, + docsIetfQosUpstreamConcatBursts Counter32 + } + +docsIetfQosSID OBJECT-TYPE + SYNTAX Unsigned32 (1..16383) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Identifies a service ID for an admitted or active + upstream service flow." + ::= { docsIetfQosUpstreamStatsEntry 1 } + +docsIetfQosUpstreamFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of fragmentation headers received on an + upstream service flow, regardless of whether + the fragment was correctly reassembled into a + valid packet. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosUpstreamStatsEntry 2 } + +docsIetfQosUpstreamFragDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of upstream fragments discarded and not + assembled into a valid upstream packet. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosUpstreamStatsEntry 3 } + +docsIetfQosUpstreamConcatBursts OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of concatenation headers received on an + upstream service flow. + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosUpstreamStatsEntry 4 } + + +-- +-- Dynamic Service Stats Table +-- +docsIetfQosDynamicServiceStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosDynamicServiceStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes statistics associated with the + Dynamic Service Flows in a managed device." + ::= { docsIetfQosMIBObjects 6 } + +docsIetfQosDynamicServiceStatsEntry OBJECT-TYPE + SYNTAX DocsIetfQosDynamicServiceStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Describes a set of dynamic service flow statistics. + Two entries exist for each DOCSIS MAC layer + interface for the upstream and downstream + direction. On the CMTS, the downstream direction + row indicates messages transmitted or transactions + originated by the CMTS. The upstream direction row + indicates messages received or transaction + originated by the CM. On the CM, the downstream + direction row indicates messages received or + transactions originated by the CMTS. The upstream + direction row indicates messages transmitted by + the CM or transactions originated by the CM. + The ifIndex is an ifType of + docsCableMaclayer(127)." + INDEX { + ifIndex, + docsIetfQosIfDirection + } + ::= { docsIetfQosDynamicServiceStatsTable 1 } + +DocsIetfQosDynamicServiceStatsEntry ::= SEQUENCE { + docsIetfQosIfDirection DocsIetfQosRfMacIfDirection, + docsIetfQosDSAReqs Counter32, + + + + docsIetfQosDSARsps Counter32, + docsIetfQosDSAAcks Counter32, + docsIetfQosDSCReqs Counter32, + docsIetfQosDSCRsps Counter32, + docsIetfQosDSCAcks Counter32, + docsIetfQosDSDReqs Counter32, + docsIetfQosDSDRsps Counter32, + docsIetfQosDynamicAdds Counter32, + docsIetfQosDynamicAddFails Counter32, + docsIetfQosDynamicChanges Counter32, + docsIetfQosDynamicChangeFails Counter32, + docsIetfQosDynamicDeletes Counter32, + docsIetfQosDynamicDeleteFails Counter32, + docsIetfQosDCCReqs Counter32, + docsIetfQosDCCRsps Counter32, + docsIetfQosDCCAcks Counter32, + docsIetfQosDCCs Counter32, + docsIetfQosDCCFails Counter32 + } + +docsIetfQosIfDirection OBJECT-TYPE + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The direction of interface." + ::= { docsIetfQosDynamicServiceStatsEntry 1 } + +docsIetfQosDSAReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Addition Requests, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 2 } + +docsIetfQosDSARsps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Addition Responses, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + + + + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 3 } + +docsIetfQosDSAAcks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Addition + Acknowledgements, including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 4 } + +docsIetfQosDSCReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Change Requests, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 5 } + +docsIetfQosDSCRsps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Change Responses, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 6 } + +docsIetfQosDSCAcks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Change + Acknowledgements, including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + + + + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 7 } + +docsIetfQosDSDReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Delete Requests, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 8 } + +docsIetfQosDSDRsps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Service Delete Responses, + including retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 9 } + +docsIetfQosDynamicAdds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of successful Dynamic Service Addition + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 10 } + +docsIetfQosDynamicAddFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of failed Dynamic Service Addition + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + + + + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 11 } + +docsIetfQosDynamicChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of successful Dynamic Service Change + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 12 } + +docsIetfQosDynamicChangeFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of failed Dynamic Service Change + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 13 } + +docsIetfQosDynamicDeletes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of successful Dynamic Service Delete + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 14 } + +docsIetfQosDynamicDeleteFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of failed Dynamic Service Delete + transactions. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + + + + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 15 } + + +docsIetfQosDCCReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Channel Change Request + messages traversing an interface. This count + is nonzero only on downstream direction rows. + This count should include the number of retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex + that indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 16 } + +docsIetfQosDCCRsps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Channel Change Response + messages traversing an interface. This count is + nonzero only on upstream direction rows. This count + should include the number of retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 17 } + +docsIetfQosDCCAcks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of Dynamic Channel Change Acknowledgement + messages traversing an interface. This count + is nonzero only on downstream direction rows. + This count should include the number of retries. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 18 } + +docsIetfQosDCCs OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of successful Dynamic Channel Change + transactions. This count is nonzero only on + downstream direction rows. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 19 } + +docsIetfQosDCCFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of failed Dynamic Channel Change + transactions. This count is nonzero only on + downstream direction rows. + + This counter's last discontinuity is the + ifCounterDiscontinuityTime for the same ifIndex that + indexes this object." + ::= { docsIetfQosDynamicServiceStatsEntry 20 } + + +-- +-- Service Flow Log Table (CMTS ONLY) +-- +docsIetfQosServiceFlowLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceFlowLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table contains a log of the disconnected + Service Flows in a managed device." + ::= { docsIetfQosMIBObjects 7 } + +docsIetfQosServiceFlowLogEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceFlowLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The information regarding a single disconnected + service flow." + INDEX { + docsIetfQosServiceFlowLogIndex + } + ::= { docsIetfQosServiceFlowLogTable 1 } + +DocsIetfQosServiceFlowLogEntry ::= SEQUENCE { + + + + docsIetfQosServiceFlowLogIndex Unsigned32, + docsIetfQosServiceFlowLogIfIndex InterfaceIndex, + docsIetfQosServiceFlowLogSFID Unsigned32, + docsIetfQosServiceFlowLogCmMac MacAddress, + docsIetfQosServiceFlowLogPkts Counter64, + docsIetfQosServiceFlowLogOctets Counter64, + docsIetfQosServiceFlowLogTimeDeleted TimeStamp, + docsIetfQosServiceFlowLogTimeCreated TimeStamp, + docsIetfQosServiceFlowLogTimeActive Counter32, + docsIetfQosServiceFlowLogDirection DocsIetfQosRfMacIfDirection, + docsIetfQosServiceFlowLogPrimary TruthValue, + docsIetfQosServiceFlowLogServiceClassName SnmpAdminString, + docsIetfQosServiceFlowLogPolicedDropPkts Counter32, + docsIetfQosServiceFlowLogPolicedDelayPkts Counter32, + docsIetfQosServiceFlowLogControl INTEGER + } + +docsIetfQosServiceFlowLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Unique index for a logged service flow." + ::= { docsIetfQosServiceFlowLogEntry 1 } + +docsIetfQosServiceFlowLogIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The ifIndex of ifType docsCableMaclayer(127) + on the CMTS where the service flow was present." + ::= { docsIetfQosServiceFlowLogEntry 2 } + +docsIetfQosServiceFlowLogSFID OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The index assigned to the service flow by the CMTS." + ::= { docsIetfQosServiceFlowLogEntry 3 } + +docsIetfQosServiceFlowLogCmMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The MAC address for the cable modem associated with + the service flow." + ::= { docsIetfQosServiceFlowLogEntry 4 } + +docsIetfQosServiceFlowLogPkts OBJECT-TYPE + + + + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of packets counted on this service flow + after payload header suppression." + ::= { docsIetfQosServiceFlowLogEntry 5 } + +docsIetfQosServiceFlowLogOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of octets counted on this service flow + after payload header suppression." + ::= { docsIetfQosServiceFlowLogEntry 6 } + +docsIetfQosServiceFlowLogTimeDeleted OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of sysUpTime when the service flow + was deleted." + ::= { docsIetfQosServiceFlowLogEntry 7 } + +docsIetfQosServiceFlowLogTimeCreated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of sysUpTime when the service flow + was created." + ::= { docsIetfQosServiceFlowLogEntry 8 } + +docsIetfQosServiceFlowLogTimeActive OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total time that the service flow was active." + ::= { docsIetfQosServiceFlowLogEntry 9 } + +docsIetfQosServiceFlowLogDirection OBJECT-TYPE + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of docsIetfQosServiceFlowDirection + for the service flow." + ::= { docsIetfQosServiceFlowLogEntry 10 } + +docsIetfQosServiceFlowLogPrimary OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of docsIetfQosServiceFlowPrimary for the + service flow." + ::= { docsIetfQosServiceFlowLogEntry 11 } + +docsIetfQosServiceFlowLogServiceClassName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of docsIetfQosParamSetServiceClassName for + the provisioned QOS Parameter Set of the + service flow." + ::= { docsIetfQosServiceFlowLogEntry 12 } + +docsIetfQosServiceFlowLogPolicedDropPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The final value of + docsIetfQosServiceFlowPolicedDropPkts for the + service flow." + ::= { docsIetfQosServiceFlowLogEntry 13 } + +docsIetfQosServiceFlowLogPolicedDelayPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The final value of + docsIetfQosServiceFlowPolicedDelayPkts for the + service flow." + ::= { docsIetfQosServiceFlowLogEntry 14 } + +docsIetfQosServiceFlowLogControl OBJECT-TYPE + SYNTAX INTEGER { + active(1), + destroy(6) + } + + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Setting this object to the value destroy(6) removes + this entry from the table. + + Reading this object returns the value active(1)." + ::= { docsIetfQosServiceFlowLogEntry 15 } + + + + +-- +-- Service Class Table (CMTS ONLY) +-- +docsIetfQosServiceClassTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of DOCSIS-QOS + Service Classes in a CMTS." + ::= { docsIetfQosMIBObjects 8 } + +docsIetfQosServiceClassEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceClassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A provisioned service class on a CMTS. + Each entry defines a template for certain + DOCSIS QOS Parameter Set values. When a CM + creates or modifies an Admitted QOS Parameter Set + for a Service Flow, it may reference a Service Class + Name instead of providing explicit QOS Parameter + Set values. In this case, the CMTS populates + the QOS Parameter Set with the applicable + corresponding values from the named Service Class. + Subsequent changes to a Service Class row do not + affect the QOS Parameter Set values of any service + flows already admitted. + + A service class template applies to only + a single direction, as indicated in the + docsIetfQosServiceClassDirection object." + INDEX { + docsIetfQosServiceClassName + } + ::= { docsIetfQosServiceClassTable 1 } + +DocsIetfQosServiceClassEntry ::= SEQUENCE { + docsIetfQosServiceClassName SnmpAdminString, + docsIetfQosServiceClassStatus RowStatus, + docsIetfQosServiceClassPriority Integer32, + docsIetfQosServiceClassMaxTrafficRate DocsIetfQosBitRate, + docsIetfQosServiceClassMaxTrafficBurst Unsigned32, + docsIetfQosServiceClassMinReservedRate DocsIetfQosBitRate, + docsIetfQosServiceClassMinReservedPkt Integer32, + docsIetfQosServiceClassMaxConcatBurst Integer32, + docsIetfQosServiceClassNomPollInterval Unsigned32, + docsIetfQosServiceClassTolPollJitter Unsigned32, + docsIetfQosServiceClassUnsolicitGrantSize Integer32, + + + + docsIetfQosServiceClassNomGrantInterval Unsigned32, + docsIetfQosServiceClassTolGrantJitter Unsigned32, + docsIetfQosServiceClassGrantsPerInterval Integer32, + docsIetfQosServiceClassMaxLatency Unsigned32, + docsIetfQosServiceClassActiveTimeout Integer32, + docsIetfQosServiceClassAdmittedTimeout Integer32, + docsIetfQosServiceClassSchedulingType DocsIetfQosSchedulingType, + docsIetfQosServiceClassRequestPolicy OCTET STRING, + docsIetfQosServiceClassTosAndMask OCTET STRING, + docsIetfQosServiceClassTosOrMask OCTET STRING, + docsIetfQosServiceClassDirection DocsIetfQosRfMacIfDirection, + docsIetfQosServiceClassStorageType StorageType, + docsIetfQosServiceClassDSCPOverwrite DscpOrAny + } + +docsIetfQosServiceClassName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..15)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Service Class Name. DOCSIS specifies that the + maximum size is 16 ASCII characters including + a terminating zero. The terminating zero is not + represented in this SnmpAdminString syntax object." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.3.4" + ::= { docsIetfQosServiceClassEntry 1 } + +docsIetfQosServiceClassStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Used to create or delete rows in this table. + There is no restriction on the ability to change + values in this row while the row is active. + Inactive rows need not be timed out." + ::= { docsIetfQosServiceClassEntry 2 } + +docsIetfQosServiceClassPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetPriority." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 3 } + +docsIetfQosServiceClassMaxTrafficRate OBJECT-TYPE + SYNTAX DocsIetfQosBitRate + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION "Template for docsIetfQosParamSetMaxTrafficRate." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 4 } + +docsIetfQosServiceClassMaxTrafficBurst OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetMaxTrafficBurst." + DEFVAL { 3044 } + ::= { docsIetfQosServiceClassEntry 5 } + +docsIetfQosServiceClassMinReservedRate OBJECT-TYPE + SYNTAX DocsIetfQosBitRate + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSEtMinReservedRate." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 6 } + +docsIetfQosServiceClassMinReservedPkt OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetMinReservedPkt." + ::= { docsIetfQosServiceClassEntry 7 } + +docsIetfQosServiceClassMaxConcatBurst OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetMaxConcatBurst." + DEFVAL { 1522 } + ::= { docsIetfQosServiceClassEntry 8 } + +docsIetfQosServiceClassNomPollInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetNomPollInterval." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 9 } + +docsIetfQosServiceClassTolPollJitter OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetTolPollJitter." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 10 } + +docsIetfQosServiceClassUnsolicitGrantSize OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetUnsolicitGrantSize." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 11 } + +docsIetfQosServiceClassNomGrantInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetNomGrantInterval." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 12 } + +docsIetfQosServiceClassTolGrantJitter OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetTolGrantJitter." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 13 } + +docsIetfQosServiceClassGrantsPerInterval OBJECT-TYPE + SYNTAX Integer32 (0..127) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetGrantsPerInterval." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 14 } + +docsIetfQosServiceClassMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetClassMaxLatency." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.7.1" + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 15 } + + + +docsIetfQosServiceClassActiveTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetActiveTimeout." + DEFVAL { 0 } + ::= { docsIetfQosServiceClassEntry 16 } + +docsIetfQosServiceClassAdmittedTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetAdmittedTimeout." + DEFVAL { 200 } + ::= { docsIetfQosServiceClassEntry 17 } + +docsIetfQosServiceClassSchedulingType OBJECT-TYPE + SYNTAX DocsIetfQosSchedulingType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetSchedulingType." + DEFVAL { bestEffort } + ::= { docsIetfQosServiceClassEntry 18 } + +docsIetfQosServiceClassRequestPolicy OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetRequestPolicyOct." + DEFVAL { '00000000'H } -- no bits are set + ::= { docsIetfQosServiceClassEntry 19 } + +docsIetfQosServiceClassTosAndMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetTosAndMask. + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). Network operators SHOULD avoid + specifying values of + docsIetfQosServiceClassTosAndMask and + docsIetfQosServiceClassTosOrMask that would result + in the modification of the ECN bits. + + + + In particular, operators should not use values of + docsIetfQosServiceClassTosAndMask that have either + of the least-significant two bits set to 0. + Similarly,operators should not use values of + docsIetfQosServiceClassTosOrMask that have either + of the least-significant two bits set to 1." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.10; + RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + Diffserv." + ::= { docsIetfQosServiceClassEntry 20 } + +docsIetfQosServiceClassTosOrMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Template for docsIetfQosParamSetTosOrMask. + The IP TOS octet as originally defined in RFC 791 + has been superseded by the 6-bit Differentiated + Services Field (DSField, RFC 3260) and the 2-bit + Explicit Congestion Notification Field (ECN field, + RFC 3168). Network operators SHOULD avoid + specifying values of + docsIetfQosServiceClassTosAndMask and + docsIetfQosServiceClassTosOrMask that would result + in the modification of the ECN bits. + + In particular, operators should not use values of + docsIetfQosServiceClassTosAndMask that have either + of the least-significant two bits set to 0. + Similarly, operators should not use values of + docsIetfQosServiceClassTosOrMask that have either + of the least-significant two bits set to 1." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.6.10; + RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + Diffserv." + ::= { docsIetfQosServiceClassEntry 21 } + +docsIetfQosServiceClassDirection OBJECT-TYPE + SYNTAX DocsIetfQosRfMacIfDirection + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Specifies whether the service class template + applies to upstream or downstream service flows." + DEFVAL { upstream } + + + + ::= { docsIetfQosServiceClassEntry 22 } + +docsIetfQosServiceClassStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This object defines whether this row is kept in + volatile storage and lost upon reboot or whether + it is backed up by non-volatile or permanent + storage. 'permanent' entries need not allow + writable access to any object." + DEFVAL { nonVolatile } + ::= { docsIetfQosServiceClassEntry 23 } + +docsIetfQosServiceClassDSCPOverwrite OBJECT-TYPE + SYNTAX DscpOrAny + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This object allows the overwrite of the DSCP + field per RFC 3260. + + If this object is -1, then the corresponding entry's + docsIetfQosServiceClassTosAndMask value MUST be + 'FF'H and docsIetfQosServiceClassTosOrMask MUST be + '00'H. Otherwise, this object is in the range of + 0..63, and the corresponding entry's + docsIetfQosServiceClassTosAndMask value MUST be + '03'H and the docsIetfQosServiceClassTosOrMask MUST + be this object's value shifted left by two bit + positions." + REFERENCE "RFC 3168, The Addition of Explicit Congestion + Notification (ECN) to IP; + RFC 3260, New Terminology and Clarifications for + Diffserv." + DEFVAL { -1 } + ::= { docsIetfQosServiceClassEntry 24 } + +-- +-- Service Class PolicyTable +-- +docsIetfQosServiceClassPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosServiceClassPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of DOCSIS-QOS + Service Class Policies. + + This table is an adjunct to the + + + + docsDevFilterPolicy table. Entries in the + docsDevFilterPolicy table can point to + specific rows in this table. + + This table permits mapping a packet to a service + class name of an active service flow so long as + a classifier does not exist at a higher + priority." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix E.2.1" + ::= { docsIetfQosMIBObjects 9 } + +docsIetfQosServiceClassPolicyEntry OBJECT-TYPE + SYNTAX DocsIetfQosServiceClassPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A service class name policy entry." + INDEX { + docsIetfQosServiceClassPolicyIndex + } + ::= { docsIetfQosServiceClassPolicyTable 1 } + +DocsIetfQosServiceClassPolicyEntry ::= SEQUENCE { + docsIetfQosServiceClassPolicyIndex Unsigned32, + docsIetfQosServiceClassPolicyName SnmpAdminString, + docsIetfQosServiceClassPolicyRulePriority Integer32, + docsIetfQosServiceClassPolicyStatus RowStatus, + docsIetfQosServiceClassPolicyStorageType StorageType + } + +docsIetfQosServiceClassPolicyIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index value to identify an entry in + this table uniquely." + ::= { docsIetfQosServiceClassPolicyEntry 1 } + +docsIetfQosServiceClassPolicyName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Service Class Name to identify the name of the + service class flow to which the packet should be + directed." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix E.2.1" + ::= { docsIetfQosServiceClassPolicyEntry 2 } + +docsIetfQosServiceClassPolicyRulePriority OBJECT-TYPE + + + + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Service Class Policy rule priority for the + entry." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.1.3.5" + ::= { docsIetfQosServiceClassPolicyEntry 3 } + +docsIetfQosServiceClassPolicyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Used to create or delete rows in this table. + This object should not be deleted if it is + referenced by an entry in docsDevFilterPolicy. + The reference should be deleted first. + There is no restriction on the ability + to change values in this row while the row is + active. Inactive rows need not be timed out." + ::= { docsIetfQosServiceClassPolicyEntry 4 } + +docsIetfQosServiceClassPolicyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This object defines whether this row is kept in + volatile storage and lost upon reboot or whether + it is backed up by non-volatile or permanent + storage. 'permanent' entries need not allow + writable access to any object." + DEFVAL { nonVolatile } + ::= { docsIetfQosServiceClassPolicyEntry 5 } + +-- +-- Payload Header Suppression(PHS) Table +-- +docsIetfQosPHSTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosPHSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table describes the set of payload header + suppression entries." + ::= { docsIetfQosMIBObjects 10 } + +docsIetfQosPHSEntry OBJECT-TYPE + SYNTAX DocsIetfQosPHSEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION "A payload header suppression entry. + + The ifIndex is an ifType of docsCableMaclayer(127). + The index docsIetfQosServiceFlowId selects one + service flow from the cable MAC layer interface. + The docsIetfQosPktClassId index matches an + index of the docsIetfQosPktClassTable." + INDEX { + ifIndex, + docsIetfQosServiceFlowId, + docsIetfQosPktClassId + } + ::= { docsIetfQosPHSTable 1 } + +DocsIetfQosPHSEntry ::= SEQUENCE { + docsIetfQosPHSField OCTET STRING, + docsIetfQosPHSMask OCTET STRING, + docsIetfQosPHSSize Integer32, + docsIetfQosPHSVerify TruthValue, + docsIetfQosPHSIndex Integer32 + } + +docsIetfQosPHSField OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression field defines the + bytes of the header that must be + suppressed/restored by the sending/receiving + device. + + The number of octets in this object should be + the same as the value of docsIetfQosPHSSize." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.1" + ::= { docsIetfQosPHSEntry 1 } + +docsIetfQosPHSMask OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression mask defines the + bit mask that is used in combination with the + docsIetfQosPHSField. It defines which bytes in + the header must be suppressed/restored by the + sending or receiving device. + + Each bit of this bit mask corresponds to a byte + in the docsIetfQosPHSField, with the least + + + + significant bit corresponding to the first byte + of the docsIetfQosPHSField. + + Each bit of the bit mask specifies whether + the corresponding byte should be suppressed + in the packet. A bit value of '1' indicates that + the byte should be suppressed by the sending + device and restored by the receiving device. + A bit value of '0' indicates that + the byte should not be suppressed by the sending + device or restored by the receiving device. + + If the bit mask does not contain a bit for each + byte in the docsIetfQosPHSField, then the bit mask + is extended with bit values of '1' to be the + necessary length." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.3" + ::= { docsIetfQosPHSEntry 2 } + +docsIetfQosPHSSize OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression size specifies the + number of bytes in the header to be suppressed + and restored. + + The value of this object must match the number + of bytes in the docsIetfQosPHSField." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.4" + ::= { docsIetfQosPHSEntry 3 } + +docsIetfQosPHSVerify OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression verification value. If + 'true', the sender must verify docsIetfQosPHSField + is the same as what is contained in the packet + to be suppressed." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.5" + ::= { docsIetfQosPHSEntry 4 } + +docsIetfQosPHSIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Payload header suppression index uniquely + + + + references the PHS rule for a given service flow." + REFERENCE "SP-RFIv2.0-I06-040804, Appendix C.2.2.10.2" + ::= { docsIetfQosPHSEntry 5 } + + +-- +-- docsIetfQosCmtsMacToSrvFlowTable (CMTS Only) +-- +docsIetfQosCmtsMacToSrvFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIetfQosCmtsMacToSrvFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table provides for referencing the service + flows associated with a particular cable modem. + This allows indexing into other docsIetfQos + tables that are indexed by docsIetfQosServiceFlowId + and ifIndex." + ::= { docsIetfQosMIBObjects 11 } + +docsIetfQosCmtsMacToSrvFlowEntry OBJECT-TYPE + SYNTAX DocsIetfQosCmtsMacToSrvFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry is created by CMTS for each service flow + connected to this CMTS." + INDEX { + docsIetfQosCmtsCmMac, + docsIetfQosCmtsServiceFlowId + } + ::= { docsIetfQosCmtsMacToSrvFlowTable 1 } + +DocsIetfQosCmtsMacToSrvFlowEntry ::= SEQUENCE { + docsIetfQosCmtsCmMac MacAddress, + docsIetfQosCmtsServiceFlowId Unsigned32, + docsIetfQosCmtsIfIndex InterfaceIndex + } + +docsIetfQosCmtsCmMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The MAC address for the referenced CM." + ::= { docsIetfQosCmtsMacToSrvFlowEntry 1 } + +docsIetfQosCmtsServiceFlowId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION "An index assigned to a service flow by CMTS." + ::= { docsIetfQosCmtsMacToSrvFlowEntry 2 } + +docsIetfQosCmtsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The ifIndex of ifType docsCableMacLayer(127) + on the CMTS that is connected to the Cable Modem." + ::= { docsIetfQosCmtsMacToSrvFlowEntry 3 } + +-- +-- Conformance definitions +-- +docsIetfQosConformance OBJECT IDENTIFIER + ::= { docsIetfQosMIB 2 } + +docsIetfQosGroups OBJECT IDENTIFIER + ::= { docsIetfQosConformance 1 } + +docsIetfQosCompliances OBJECT IDENTIFIER + ::= { docsIetfQosConformance 2 } + +docsIetfQosCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for MCNS Cable Modems and + Cable Modem Termination Systems that implement DOCSIS + Service Flows." + + MODULE -- docsIetfQosMIB + MANDATORY-GROUPS { docsIetfQosBaseGroup } + + GROUP docsIetfQosCmtsGroup + DESCRIPTION + "This group is mandatory for Cable Modem Termination + Systems (CMTS) and is not implemented for Cable Modems + (CM)." + + GROUP docsIetfQosParamSetGroup + DESCRIPTION + "This group is mandatory for Cable Modem Termination + Systems (CMTS) and Cable Modems. Cable modems only + implement objects in this group as read-only." + + GROUP docsIetfQosSrvClassPolicyGroup + DESCRIPTION + "This group is optional for Cable Modem Termination + + + + Systems (CMTS) and Cable Modems. This group is relevant + if policy-based service flow classification + is implemented. See docsDevPolicyTable in + DOCS-CABLE-DEVICE-MIB for more details." + + GROUP docsIetfQosServiceClassGroup + DESCRIPTION + "This group is mandatory for a Cable Modem Termination + System (CMTS) that implements expansion of Service Class + Names in a QOS Parameter Set. This group is + not implemented on the Cable Modems." + + OBJECT docsIetfQosPktClassPkts + DESCRIPTION + "This object only needs to be implemented in entries + that are classifying packets and not policing packets." + + OBJECT docsIetfQosPktClassInetAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosPktClassInetSourceAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosPktClassInetSourceMask + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosPktClassInetDestAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosPktClassInetDestMask + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + address." + + OBJECT docsIetfQosServiceClassStorageType + + + + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + + OBJECT docsIetfQosServiceClassPolicyStorageType + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + + ::= { docsIetfQosCompliances 1 } + +docsIetfQosBaseGroup OBJECT-GROUP + OBJECTS { + docsIetfQosPktClassDirection, + docsIetfQosPktClassPriority, + docsIetfQosPktClassIpTosLow, + docsIetfQosPktClassIpTosHigh, + docsIetfQosPktClassIpTosMask, + docsIetfQosPktClassIpProtocol, + docsIetfQosPktClassSourcePortStart, + docsIetfQosPktClassSourcePortEnd, + docsIetfQosPktClassDestPortStart, + docsIetfQosPktClassDestPortEnd, + docsIetfQosPktClassDestMacAddr, + docsIetfQosPktClassDestMacMask, + docsIetfQosPktClassSourceMacAddr, + docsIetfQosPktClassEnetProtocolType, + docsIetfQosPktClassEnetProtocol, + docsIetfQosPktClassUserPriLow, + docsIetfQosPktClassUserPriHigh, + docsIetfQosPktClassVlanId, + docsIetfQosPktClassStateActive, + docsIetfQosPktClassPkts, + docsIetfQosPktClassBitMap, + docsIetfQosPktClassInetAddressType, + docsIetfQosPktClassInetSourceAddr, + docsIetfQosPktClassInetSourceMask, + docsIetfQosPktClassInetDestAddr, + docsIetfQosPktClassInetDestMask, + + docsIetfQosServiceFlowSID, + docsIetfQosServiceFlowDirection, + docsIetfQosServiceFlowPrimary, + + docsIetfQosServiceFlowPkts, + docsIetfQosServiceFlowOctets, + + + + docsIetfQosServiceFlowTimeCreated, + docsIetfQosServiceFlowTimeActive, + docsIetfQosServiceFlowPHSUnknowns, + docsIetfQosServiceFlowPolicedDropPkts, + docsIetfQosServiceFlowPolicedDelayPkts, + + docsIetfQosDSAReqs, + docsIetfQosDSARsps, + docsIetfQosDSAAcks, + docsIetfQosDSCReqs, + docsIetfQosDSCRsps, + docsIetfQosDSCAcks, + docsIetfQosDSDReqs, + docsIetfQosDSDRsps, + docsIetfQosDynamicAdds, + docsIetfQosDynamicAddFails, + docsIetfQosDynamicChanges, + docsIetfQosDynamicChangeFails, + docsIetfQosDynamicDeletes, + docsIetfQosDynamicDeleteFails, + docsIetfQosDCCReqs, + docsIetfQosDCCRsps, + docsIetfQosDCCAcks, + docsIetfQosDCCs, + docsIetfQosDCCFails, + + docsIetfQosPHSField, + docsIetfQosPHSMask, + docsIetfQosPHSSize, + docsIetfQosPHSVerify, + docsIetfQosPHSIndex + } + STATUS current + DESCRIPTION + "Group of objects implemented in both Cable Modems and + Cable Modem Termination Systems." + ::= { docsIetfQosGroups 1 } + +docsIetfQosParamSetGroup OBJECT-GROUP + OBJECTS { + docsIetfQosParamSetServiceClassName, + docsIetfQosParamSetPriority, + docsIetfQosParamSetMaxTrafficRate, + docsIetfQosParamSetMaxTrafficBurst, + docsIetfQosParamSetMinReservedRate, + docsIetfQosParamSetMinReservedPkt, + docsIetfQosParamSetActiveTimeout, + docsIetfQosParamSetAdmittedTimeout, + + + + docsIetfQosParamSetMaxConcatBurst, + docsIetfQosParamSetSchedulingType, + docsIetfQosParamSetNomPollInterval, + docsIetfQosParamSetTolPollJitter, + docsIetfQosParamSetUnsolicitGrantSize, + docsIetfQosParamSetNomGrantInterval, + docsIetfQosParamSetTolGrantJitter, + docsIetfQosParamSetGrantsPerInterval, + docsIetfQosParamSetTosAndMask, + docsIetfQosParamSetTosOrMask, + docsIetfQosParamSetMaxLatency, + docsIetfQosParamSetRequestPolicyOct, + docsIetfQosParamSetBitMap + } + STATUS current + DESCRIPTION + "Group of objects implemented in both Cable Modems and + Cable Modem Termination Systems for QOS Parameter Sets." + ::= { docsIetfQosGroups 2 } + + +docsIetfQosCmtsGroup OBJECT-GROUP + OBJECTS { + + docsIetfQosUpstreamFragments, + docsIetfQosUpstreamFragDiscards, + docsIetfQosUpstreamConcatBursts, + + docsIetfQosServiceFlowLogIfIndex, + docsIetfQosServiceFlowLogSFID, + docsIetfQosServiceFlowLogCmMac, + docsIetfQosServiceFlowLogPkts, + docsIetfQosServiceFlowLogOctets, + docsIetfQosServiceFlowLogTimeDeleted, + docsIetfQosServiceFlowLogTimeCreated, + docsIetfQosServiceFlowLogTimeActive, + docsIetfQosServiceFlowLogDirection, + docsIetfQosServiceFlowLogPrimary, + docsIetfQosServiceFlowLogServiceClassName, + docsIetfQosServiceFlowLogPolicedDropPkts, + docsIetfQosServiceFlowLogPolicedDelayPkts, + docsIetfQosServiceFlowLogControl, + + docsIetfQosCmtsIfIndex -- docsIetfQosCmtsMacToSrvFlowTable required + + } + STATUS current + DESCRIPTION + + + + "Group of objects implemented only in the CMTS." + ::= { docsIetfQosGroups 3 } + +docsIetfQosSrvClassPolicyGroup OBJECT-GROUP + OBJECTS { + docsIetfQosServiceClassPolicyName, + docsIetfQosServiceClassPolicyRulePriority, + docsIetfQosServiceClassPolicyStatus, + docsIetfQosServiceClassPolicyStorageType + } + STATUS current + DESCRIPTION + "Group of objects implemented in both Cable Modems and + Cable Modem Termination Systems when supporting policy-based + service flows." + ::= { docsIetfQosGroups 4 } + +docsIetfQosServiceClassGroup OBJECT-GROUP + OBJECTS { + docsIetfQosServiceClassStatus, + docsIetfQosServiceClassPriority, + docsIetfQosServiceClassMaxTrafficRate, + docsIetfQosServiceClassMaxTrafficBurst, + docsIetfQosServiceClassMinReservedRate, + docsIetfQosServiceClassMinReservedPkt, + docsIetfQosServiceClassMaxConcatBurst, + docsIetfQosServiceClassNomPollInterval, + docsIetfQosServiceClassTolPollJitter, + docsIetfQosServiceClassUnsolicitGrantSize, + docsIetfQosServiceClassNomGrantInterval, + docsIetfQosServiceClassTolGrantJitter, + docsIetfQosServiceClassGrantsPerInterval, + docsIetfQosServiceClassMaxLatency, + docsIetfQosServiceClassActiveTimeout, + docsIetfQosServiceClassAdmittedTimeout, + docsIetfQosServiceClassSchedulingType, + docsIetfQosServiceClassRequestPolicy, + docsIetfQosServiceClassTosAndMask, + docsIetfQosServiceClassTosOrMask, + docsIetfQosServiceClassDirection, + docsIetfQosServiceClassStorageType, + docsIetfQosServiceClassDSCPOverwrite + } + STATUS current + DESCRIPTION + "Group of objects implemented only in Cable Modem + Termination Systems when supporting expansion of Service + Class Names in a QOS Parameter Set" + + + + ::= { docsIetfQosGroups 5 } + +END diff --git a/mibs/ietf/DOCS-IETF-SUBMGT-MIB b/mibs/ietf/DOCS-IETF-SUBMGT-MIB new file mode 100644 index 0000000..0681618 --- /dev/null +++ b/mibs/ietf/DOCS-IETF-SUBMGT-MIB @@ -0,0 +1,714 @@ +DOCS-IETF-SUBMGT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + mib-2 + FROM SNMPv2-SMI + RowStatus, + TruthValue, + TimeStamp, + StorageType + FROM SNMPv2-TC + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB + docsIfCmtsCmStatusIndex, + docsIfCmtsCmStatusEntry + FROM DOCS-IF-MIB -- RFC2670 + diffServMIBDataPathGroup, + diffServMIBClfrGroup, + diffServMIBClfrElementGroup, + diffServMIBMultiFieldClfrGroup, + + + + diffServMIBActionGroup, + diffServMIBAlgDropGroup, + diffServMIBCounterGroup, + diffServDataPathStatus, + diffServClfrStatus, + diffServClfrElementStatus, + diffServMultiFieldClfrAddrType, + diffServMultiFieldClfrSrcAddr, + diffServMultiFieldClfrDstAddr, + diffServAlgDropStatus, + diffServDataPathStorage, + diffServClfrStorage, + diffServClfrElementStorage, + diffServMultiFieldClfrStorage, + diffServActionStorage, + diffServCountActStorage, + diffServAlgDropStorage, + diffServAlgDropType + FROM DIFFSERV-MIB -- RFC3289 + ; + +docsSubMgt MODULE-IDENTITY + LAST-UPDATED "200503290000Z" -- March 29, 2005 + ORGANIZATION "IETF IP over Cable Data Network (IPCDN) Working + Group" + CONTACT-INFO + " Wilson Sawyer + Postal: 50 Kelly Brook Lane + East Hampstead, NH 03826 + U.S.A. + + Phone: +1 603 382 7080 + E-mail: wsawyer@ieee.org + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, Richard_Woundy@cable.comcast.com + Jean-Francois Mule, jf.mule@cablelabs.com" + DESCRIPTION + "This is the CMTS centric subscriber management MIB for + DOCSIS-compliant CMTS. It provides the objects to allow a Cable + Modem Termination operator to control the IP addresses and + protocols associated with subscribers' cable modems. + + + + + + + Copyright (C) The Internet Society (2005). This version of this + MIB module is part of RFC 4036; see the RFC itself for full legal + notices." + REVISION "200503290000Z" -- March 29, 2005 + DESCRIPTION + "Initial version, published as RFC 4036. Note that the + compliance statements in this version apply only to + implementations that support DOCSIS 1.0/1.1/2.0, which + are not IPv6-capable." + ::= { mib-2 125 } + +docsSubMgtObjects OBJECT IDENTIFIER ::= { docsSubMgt 1 } + +docsSubMgtCpeControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsSubMgtCpeControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table AUGMENTs the docsIfCmtsCmStatusTable, adding + four WRITEable objects, as well as a read-only object, all of + which reflect the state of subscriber management on a particular + CM." + ::= { docsSubMgtObjects 1 } + +docsSubMgtCpeControlEntry OBJECT-TYPE + SYNTAX DocsSubMgtCpeControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the docsSubMgtCpeControlTable. All values are set + at successful modem registration, either from the system default, + or from objects included in the DOCSIS registration request sent + upstream to the CMTS from the CM. The contents of this entry are + meaningless unless the corresponding docsIfCmtsCmStatusValue (see + reference) is registrationComplete(6). The persistence of this + row is determined solely by the lifespan of the corresponding + docsIfCmtsCmStatusEntry (normally StorageType=volatile)." + + REFERENCE + "RFC 2670" + AUGMENTS { docsIfCmtsCmStatusEntry } + ::= {docsSubMgtCpeControlTable 1 } + +DocsSubMgtCpeControlEntry ::= SEQUENCE + { + docsSubMgtCpeControlMaxCpeIp Integer32, + docsSubMgtCpeControlActive TruthValue, + docsSubMgtCpeControlLearnable TruthValue, + + + + docsSubMgtCpeControlReset TruthValue, + docsSubMgtCpeControlLastReset TimeStamp + } + +docsSubMgtCpeControlMaxCpeIp OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of simultaneous IP addresses permitted behind + the CM. If this is set to zero, all CPE traffic from the CM is + dropped. If the provisioning object corresponding to + docsSubMgtCpeIpTable includes more CPE IP address entries for + this modem than the value of this object, then this object is + set to the count of the number of rows in docsSubMgtCpeIpTable + that have the same docsIfCmtsCmStatusIndex value. (For example, + if the CM has 5 IP addresses specified for it, this value is 5.) + This limit applies to learned and DOCSIS-provisioned entries + but not to entries added through some administrative + process at the CMTS. If not set through DOCSIS provisioning, + this object defaults to docsSubMgtCpeMaxIpDefault. Note that + this object is only meaningful if docsSubMgtCpeControlActive + is true." + ::= { docsSubMgtCpeControlEntry 1 } + +docsSubMgtCpeControlActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the application of subscriber management to + this cable modem. If this is set to true, CMTS-based CPE + control is active, and all the actions required by the various + filter tables and controls apply at the CMTS. If this is set + to false, no subscriber management filtering is done at the + CMTS (but other filters may apply). If not set through DOCSIS + provisioning, this object defaults to + docsSubMgtCpeActiveDefault." + ::= { docsSubMgtCpeControlEntry 2 } + +docsSubMgtCpeControlLearnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls whether the CMTS may learn (and pass traffic + for) CPE IP addresses associated with a cable modem. If this is + set to true, the CMTS may learn up to docsSubMgtMaxCpeIp + + + + addresses (less any DOCSIS-provisioned entries) related to this + CM. Those IP addresses are added (by internal process) to the + docsSubMgtCpeIpTable. The nature of the learning mechanism is + not specified here. + + If not set through DOCSIS provisioning, this object defaults to + docsSubMgtCpeLearnableDefault. Note that this object is only + meaningful if docsSubMgtCpeControlActive is true." + ::= { docsSubMgtCpeControlEntry 3 } + +docsSubMgtCpeControlReset OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object always returns false on read. If this object is + set to true, the rows with 'learned' addresses in + docsSubMgtCpeIpTable for this CM are deleted from that table." + ::= { docsSubMgtCpeControlEntry 4 } + +docsSubMgtCpeControlLastReset OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when docsSubMgtCpeControlReset was + last set true. Zero if never reset." + DEFVAL { 0 } + ::= { docsSubMgtCpeControlEntry 5 } + +docsSubMgtCpeMaxIpDefault OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value for docsSubMgtCpeControlMaxCpeIp if not + signaled in the DOCSIS Registration request. This value should + be treated as nonvolatile; if set, its value should persist + across device resets." + DEFVAL { 16 } + ::= { docsSubMgtObjects 2 } + +docsSubMgtCpeActiveDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value for docsSubMgtCpeControlActive if not + + + + signaled in the DOCSIS Registration request. This value should + be treated as nonvolatile; if set, its value should persist + across device resets." + DEFVAL { false } + ::= { docsSubMgtObjects 3 } + +docsSubMgtCpeLearnableDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value for docsSubMgtCpeControlLearnable if not + signaled in the DOCSIS Registration request. This value should + be treated as nonvolatile; if set, its value should persist + across device resets." + DEFVAL { true } + ::= { docsSubMgtObjects 4 } + +docsSubMgtCpeIpTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsSubMgtCpeIpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of CPE IP addresses known on a per-CM basis." + ::= { docsSubMgtObjects 5 } + +docsSubMgtCpeIpEntry OBJECT-TYPE + SYNTAX DocsSubMgtCpeIpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the docsSubMgtCpeIpTable. The first index is + the specific modem we're referring to, and the second index is + the specific CPE IP entry." + INDEX { docsIfCmtsCmStatusIndex, + docsSubMgtCpeIpIndex } + ::= {docsSubMgtCpeIpTable 1 } + +DocsSubMgtCpeIpEntry ::= SEQUENCE + { + docsSubMgtCpeIpIndex Integer32, + docsSubMgtCpeIpAddressType InetAddressType, + docsSubMgtCpeIpAddr InetAddress, + docsSubMgtCpeIpLearned TruthValue + } + +docsSubMgtCpeIpIndex OBJECT-TYPE + SYNTAX Integer32(1..2147483647) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this CPE IP address relative to the indexed CM. + An entry is created either through the included CPE IP addresses + in the provisioning object, or via learning. + + If docsSubMgtCpeControlActive is true and a CMTS receives + an IP packet from a CM that contains a source IP address that + does not match one of the docsSubMgtCpeIpAddr entries for this + CM, one of two things occurs. If the number of entries is less + than docsSubMgtCpeControlMaxCpeIp, the source address is added to + the table and the packet is forwarded. If the number of entries + equals the docsSubMgtCpeControlMaxCpeIp, then the packet is + dropped." + ::= { docsSubMgtCpeIpEntry 1 } + +docsSubMgtCpeIpAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of internet address of docsSubMgtCpeIpAddr." + ::= { docsSubMgtCpeIpEntry 2 } + +docsSubMgtCpeIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address either set from provisioning or learned via + address gleaning or other forwarding means. See + docsSubMgtCpeIpIndex for the mechanism. + + The type of this address is determined by the value of + docsSubMgtCpeIpAddressType." + ::= { docsSubMgtCpeIpEntry 3 } + +docsSubMgtCpeIpLearned OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, this entry was learned from IP packets sent + upstream rather than from the provisioning objects." + ::= { docsSubMgtCpeIpEntry 4 } + +docsSubMgtCmFilterTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF DocsSubMgtCmFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Binds filter groups to modems, identifying for each modem + the upstream and downstream filter groups that apply to packets + for that modem. Normally, this table reflects the filter group + values signaled by DOCSIS Registration, although values may be + overridden by management action. + + For each of the columns in this table, zero is a distinguished + value, indicating that the default filtering action is to be + taken rather than that associated with a filter group number. + Zero is used if the filter group is not signaled by DOCSIS + registration." + ::= { docsSubMgtObjects 6 } + +docsSubMgtCmFilterEntry OBJECT-TYPE + SYNTAX DocsSubMgtCmFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Binds a filter group to each direction of traffic for a + modem. The filters in this entry apply if + docsSubMgtCpeControlActive is true. + + The contents of this entry are meaningless unless the + corresponding docsIfCmtsCmStatusValue (see reference) is + registrationComplete(6). The persistence of this row is + determined solely by the lifespan of the corresponding + docsIfCmtsCmStatusEntry (normally StorageType=volatile)." + REFERENCE + "RFC 2670" + AUGMENTS { docsIfCmtsCmStatusEntry } + ::= {docsSubMgtCmFilterTable 1 } + +DocsSubMgtCmFilterEntry ::= SEQUENCE + { + docsSubMgtCmFilterSubDownstream Integer32, + docsSubMgtCmFilterSubUpstream Integer32, + docsSubMgtCmFilterCmDownstream Integer32, + docsSubMgtCmFilterCmUpstream Integer32 +} + +docsSubMgtCmFilterSubDownstream OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The filter group applied to traffic destined for subscribers + attached to the referenced CM. Upon row creation, this is set + either to zero (use default classification, the + diffServClfrElementSpecific=zeroDotZero row of + diffServClfrElementTable) or to the value in the provisioning + object sent upstream from the CM to the CMTS during registration. + The value of this object is the same as that of the filter group + index appearing as docsSubMgtFilterGroupIndex." + ::= { docsSubMgtCmFilterEntry 1 } + +docsSubMgtCmFilterSubUpstream OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The filter group applied to traffic originating from + subscribers attached to the referenced CM. Upon row creation + this is set to either zero (use default classification, the + diffServClfrElementSpecific=zeroDotZero row of + diffServClfrElementTable), or to the value in the provisioning + object sent upstream from the CM to the CMTS. The value of this + object is the same as that of the filter group index appearing as + docsSubMgtFilterGroupIndex." + ::= { docsSubMgtCmFilterEntry 2 } + +docsSubMgtCmFilterCmDownstream OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The filter group applied to traffic destined for the + referenced CM itself. Upon row creation this is set either to + zero (use default classification, the + diffServClfrElementSpecific=zeroDotZero row of + diffServClfrElementTable), or to the value in the provisioning + object sent upstream from the CM to the CMTS during registration. + The value of this object is the same as that of the filter group + index appearing as docsSubMgtFilterGroupIndex." + ::= { docsSubMgtCmFilterEntry 3 } + +docsSubMgtCmFilterCmUpstream OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The filter group applied to traffic originating from the + referenced CM itself. This is set upon row creation to either + + + + zero (use default classification, the + diffServClfrElementSpecific=zeroDotZero row of + diffServClfrElementTable), or to the value in the provisioning + object sent upstream from the CM to the CMTS during registration. + The value of this object is the same as the filter group index + appearing as docsSubMgtFilterGroupIndex." + ::= { docsSubMgtCmFilterEntry 4 } + +docsSubMgtFilterGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsSubMgtFilterGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a collection of referenceable entries to which + diffServClfrElementSpecific refers. This table provides filter + group indices that can be compared with those signaled during + DOCSIS registration. A packet matches an entry from this table + if the packet originated from or is destined to a cable modem + that registered this index as one of its four filter groups + (see docsSubMgtCmFilterTable), and if the packet direction and + MAC address select the use of this index among the four." + ::= { docsSubMgtObjects 7 } + +docsSubMgtFilterGroupEntry OBJECT-TYPE + SYNTAX DocsSubMgtFilterGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry only exists if needed by the + diffServClfrElementEntry. A packet matches this entry if the + packet's cable modem registered this index as one of its four + filter groups (see docsSubMgtCmFilterTable) and if the packet + direction and MAC address select the use of this index among + the four." + INDEX { docsSubMgtFilterGroupIndex } + ::= { docsSubMgtFilterGroupTable 1 } + +DocsSubMgtFilterGroupEntry ::= SEQUENCE + { + docsSubMgtFilterGroupIndex Integer32 + } + +docsSubMgtFilterGroupIndex OBJECT-TYPE + SYNTAX Integer32(1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The filter group index, from the set signaled at DOCSIS + + + + Registration. Provides a referenceable entry to which + diffServClfrElementSpecific points. A packet matches this + classifier entry if the packet's cable modem registered this + index value as one of its four filter groups, and if the packet + direction and MAC address select the use of this index among + the four. Because this is the only field in this table, it is + read-only, contrary to the usual SMI custom of making indices + not-accessible. + + Note that although zero may be signaled (or defaulted) at DOCSIS + Registration to indicate a default filtering group, no such entry + appears in this table, as diffServClfrElementSpecific will + use a zeroDotZero pointer for that classification." + ::= { docsSubMgtFilterGroupEntry 1 } + +docsSubMgtConformance OBJECT IDENTIFIER ::= { docsSubMgt 2 } +docsSubMgtCompliances OBJECT IDENTIFIER ::= + { docsSubMgtConformance 1 } +docsSubMgtGroups OBJECT IDENTIFIER ::= + { docsSubMgtConformance 2 } + +docsSubMgtBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for CMTS devices that implement + CMTS centric subscriber management. + + This compliance statement applies to implementations that + support DOCSIS 1.0/1.1/2.0, which are not IPv6 capable." + + +MODULE DIFFSERV-MIB -- RFC3289 + MANDATORY-GROUPS { + diffServMIBDataPathGroup, + diffServMIBClfrGroup, + diffServMIBClfrElementGroup, + diffServMIBMultiFieldClfrGroup, + diffServMIBActionGroup, + diffServMIBAlgDropGroup, + diffServMIBCounterGroup + } + +OBJECT diffServDataPathStatus -- same as RFC3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + + + +OBJECT diffServClfrStatus -- same as RFC3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + +OBJECT diffServClfrElementStatus -- same as RFC3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + +OBJECT diffServMultiFieldClfrAddrType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServMultiFieldClfrSrcAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServMultiFieldClfrDstAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT diffServAlgDropStatus -- same as RFC3289 + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + +OBJECT diffServDataPathStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServClfrStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + + + + +OBJECT diffServClfrElementStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServMultiFieldClfrStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServActionStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServCountActStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServAlgDropStorage + SYNTAX StorageType { nonVolatile(3) } + DESCRIPTION + "An implementation is only required to support nonvolatile + storage." + +OBJECT diffServAlgDropType + SYNTAX INTEGER { alwaysDrop(5) } + DESCRIPTION + "For DOCSIS subscriber management, this object is + only used to provide packet filtering. Implementations + need not support other values of this enumeration." + +MODULE -- This module i.e., DOCS-IETF-SUBMGT-MIB + +MANDATORY-GROUPS { + docsSubMgtGroup + } + +OBJECT docsSubMgtCpeControlMaxCpeIp + SYNTAX Integer32(0..16) + DESCRIPTION + "An implementation is only required to support up to + sixteen addresses per modem." + + + +OBJECT docsSubMgtCpeMaxIpDefault + SYNTAX Integer32(0..16) + DESCRIPTION + "An implementation is only required to support up to + sixteen addresses per modem." + +OBJECT docsSubMgtCpeIpAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsSubMgtCpeIpAddr + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses." + +OBJECT docsSubMgtCmFilterSubDownstream + SYNTAX Integer32(0..30) + DESCRIPTION + "An implementation is only required to support thirty + filter groups." + +OBJECT docsSubMgtCmFilterSubUpstream + SYNTAX Integer32(0..30) + DESCRIPTION + "An implementation is only required to support thirty + filter groups." + +OBJECT docsSubMgtCmFilterCmDownstream + SYNTAX Integer32(0..30) + DESCRIPTION + "An implementation is only required to support thirty + filter groups." + +OBJECT docsSubMgtCmFilterCmUpstream + SYNTAX Integer32(0..30) + DESCRIPTION + "An implementation is only required to support thirty + filter groups." + + ::= { docsSubMgtCompliances 1 } + +docsSubMgtGroup OBJECT-GROUP + OBJECTS { + docsSubMgtCpeControlMaxCpeIp, + docsSubMgtCpeControlActive, + + + + docsSubMgtCpeControlLearnable, + docsSubMgtCpeControlReset, + docsSubMgtCpeControlLastReset, + docsSubMgtCpeMaxIpDefault, + docsSubMgtCpeActiveDefault, + docsSubMgtCpeLearnableDefault, + docsSubMgtCpeIpAddressType, + docsSubMgtCpeIpAddr, + docsSubMgtCpeIpLearned, + docsSubMgtCmFilterSubDownstream, + docsSubMgtCmFilterSubUpstream, + docsSubMgtCmFilterCmDownstream, + docsSubMgtCmFilterCmUpstream, + docsSubMgtFilterGroupIndex + } + STATUS current + DESCRIPTION + "The objects used to manage host-based cable modems + via a set of CMTS enforced controls." + ::= { docsSubMgtGroups 1 } + +END diff --git a/mibs/ietf/DOCS-IF-MIB b/mibs/ietf/DOCS-IF-MIB new file mode 100644 index 0000000..fdef8ce --- /dev/null +++ b/mibs/ietf/DOCS-IF-MIB @@ -0,0 +1,5582 @@ +DOCS-IF-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Unsigned32, + Integer32, + Counter32, + Counter64, + TimeTicks, + IpAddress, + transmission + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, + MacAddress, + RowStatus, + TruthValue, + TimeInterval, + TimeStamp, + StorageType + FROM SNMPv2-TC -- [RFC2579] + OBJECT-GROUP, + + MODULE-COMPLIANCE + FROM SNMPv2-CONF -- [RFC2580] + ifIndex, InterfaceIndexOrZero + FROM IF-MIB -- [RFC2863] + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB -- [RFC4001] + IANAifType + FROM IANAifType-MIB; -- [IANA] + +docsIfMib MODULE-IDENTITY + LAST-UPDATED "200605240000Z" -- May 24, 2006 + ORGANIZATION "IETF IPCDN Working Group" + CONTACT-INFO + + + + " David Raftus + Postal: ATI Technologies Inc. + 340 Terry Fox Drive, Suite 202 + Ottawa Ontario + Canada + Phone: +1 613 592 1052 ext.222 + E-mail: david.raftus@ati.com + + Eduardo Cardona + Postal: Cable Television Laboratories, Inc. + 858 Coal Creek Circle + Louisville, CO 80027-9750 + U.S.A. + Phone: Tel: +1 303 661 9100 + Fax: +1 303 661 9199 + E-mail: e.cardona@cablelabs.com;mibs@cablelabs.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-chairs: Richard Woundy, Richard_Woundy@cable.comcast.com + Jean-Francois Mule, jf.mule@cablelabs.com" + DESCRIPTION + "This is the MIB Module for DOCSIS 2.0-compliant Radio + Frequency (RF) interfaces in Cable Modems and + Cable Modem Termination Systems. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4546; see + the RFC itself for full legal notices." + + REVISION "200605240000Z" + DESCRIPTION + "Revision of the IETF RF MIB module for DOCSIS 2.0. + This version published as RFC 4546. + This MIB module revision includes the following + among others: + Usage of ifType (205) for upstream logical channels. + Addition of downstream and upstream utilization + counters. + Additional statistics per upstream interface. + Upstream channel offline configuration mechanism. + Added MIB support for new DOCSIS 2.0 modulation + attributes. + Euro-DOCSIS downstream interleave values. + Adjustments to RFC 2670 definitions based on + the MIB review guidelines from the IETF + + + + Operations and Management Area (OPS)." + + REVISION "199908190000Z" + DESCRIPTION + "Initial version, published as RFC 2670. + Modified by Mike St. Johns to fix problems identified by + the first pass of the MIB doctor. Of special note, + docsIfRangingResp and docsIfCmtsInsertionInterval were + obsoleted and replaced by other objects with the same + functionality, but with more appropriate syntax." + ::= { transmission 127 } + + +-- Textual Conventions + +TenthdBmV ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-1" + STATUS current + DESCRIPTION + "This data type represents power levels that are normally + expressed in dBmV. Units are in tenths of a dBmV; + for example, 5.1 dBmV will be represented as 51." + SYNTAX Integer32 + +TenthdB ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-1" + STATUS current + DESCRIPTION + "This data type represents power levels that are normally + expressed in dB. Units are in tenths of a dB; + for example, 5.1 dB will be represented as 51." + SYNTAX Integer32 + +DocsisVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the DOCSIS Radio Frequency specification being + referenced. + 'docsis10' indicates DOCSIS 1.0. + 'docsis11' indicates DOCSIS 1.1. + 'docsis20' indicates DOCSIS 2.0." + SYNTAX INTEGER { + docsis10 (1), + docsis11 (2), + docsis20 (3) + } + +DocsisQosVersion ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "Indicates the referenced quality-of-service + level. + 'docsis10 refers to DOCSIS 1.0 Class of + Service queuing services, and 'docsis11' refers + to DOCSIS 1.1 Quality of Service." + SYNTAX INTEGER { + docsis10 (1), + docsis11 (2) + } + +DocsisUpstreamType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the DOCSIS Upstream Channel Type. + 'unknown' means information not available. + 'tdma' is related to TDMA, Time Division + Multiple Access; 'atdma' is related to A-TDMA, + Advanced Time Division Multiple Access, + 'scdma' is related to S-CDMA, Synchronous + Code Division Multiple Access. + 'tdmaAndAtdma is related to simultaneous support of + TDMA and A-TDMA modes." + SYNTAX INTEGER { + unknown(0), + tdma(1), + atdma(2), + scdma(3), + tdmaAndAtdma(4) + } + + DocsEqualizerData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type represents the equalizer data + as measured at the receiver interface. + The format of the equalizer follows the structure of the + Transmit Equalization Adjust RNG-RSP TLV of DOCSIS RFI + v2.0 : + 1 byte Main tap location 1..(n + m) + 1 byte Number of forward taps per symbol + 1 byte Number of forward taps: n + 1 byte Number of reverse taps: m + + Following are the equalizer coefficients: + First, forward taps coefficients: + 2 bytes F1 (real), 2 bytes F1 (imag) + + + + ... + 2 bytes Fn (real), 2 bytes Fn (imag) + + Then, reverse taps coefficients: + 2 bytes D1 (real), 2 bytes D1 (imag) + ... + + 2 bytes Dm (real), 2 bytes Dm (imag) + + The equalizer coefficients are considered signed 16-bit + integers in the range from -32768 (0x8000) to 32767 + (0x7FFF). + + DOCSIS specifications require up to a maximum of + 64 equalizer taps (n + m); therefore, this object size + can get up 260 bytes (4 + 4x64). + The minimum object size (other than zero) for a t-spaced + tap with a minimum of 8 symbols will be 36 (4 + 4x8)." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 8-23." + SYNTAX OCTET STRING(SIZE (0 | 36..260)) + + +docsIfMibObjects OBJECT IDENTIFIER ::= { docsIfMib 1 } +docsIfBaseObjects OBJECT IDENTIFIER ::= { docsIfMibObjects 1 } +docsIfCmObjects OBJECT IDENTIFIER ::= { docsIfMibObjects 2 } +docsIfCmtsObjects OBJECT IDENTIFIER ::= { docsIfMibObjects 3 } + +-- +-- BASE GROUP +-- + +-- +-- The following table is implemented on both the Cable Modem +-- and the Cable Modem Termination System. This table is +-- read only for the CM. +-- + +docsIfDownstreamChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfDownstreamChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of downstream + channels (frequency bands)." + REFERENCE + + + + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-16, and 6-17." + ::= { docsIfBaseObjects 1 } + +docsIfDownstreamChannelEntry OBJECT-TYPE + SYNTAX DocsIfDownstreamChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry provides a list of attributes for a single + downstream channel. + An entry in this table exists for each ifEntry with an + ifType of docsCableDownstream(128)." + INDEX { ifIndex } + ::= { docsIfDownstreamChannelTable 1 } + +DocsIfDownstreamChannelEntry ::= SEQUENCE { + docsIfDownChannelId Integer32, + docsIfDownChannelFrequency Integer32, + docsIfDownChannelWidth Integer32, + docsIfDownChannelModulation INTEGER, + docsIfDownChannelInterleave INTEGER, + docsIfDownChannelPower TenthdBmV, + docsIfDownChannelAnnex INTEGER, + docsIfDownChannelStorageType StorageType + } + +docsIfDownChannelId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Cable Modem Termination System identification of the + downstream channel within this particular MAC interface. + if the interface is down, the object returns the most + current value. If the downstream channel ID is unknown, + this object returns a value of 0." + ::= { docsIfDownstreamChannelEntry 1 } + +docsIfDownChannelFrequency OBJECT-TYPE + SYNTAX Integer32 (0..1000000000) + UNITS "hertz" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The center of the downstream frequency associated with + this channel. This object will return the current tuner + + + + frequency. If a CMTS provides IF output, this object + will return 0, unless this CMTS is in control of the + final downstream frequency. See the associated + compliance object for a description of valid frequencies + that may be written to this object." + + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.3.3." + ::= { docsIfDownstreamChannelEntry 2 } + +docsIfDownChannelWidth OBJECT-TYPE + SYNTAX Integer32 (0..16000000) + UNITS "hertz" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The bandwidth of this downstream channel. Most + implementations are expected to support a channel width + of 6 MHz (North America) and/or 8 MHz (Europe). See the + associated compliance object for a description of the + valid channel widths for this object." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 6-17." + ::= { docsIfDownstreamChannelEntry 3 } + +docsIfDownChannelModulation OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + qam64(3), + qam256(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The modulation type associated with this downstream + channel. If the interface is down, this object either + returns the configured value (CMTS), the most current + value (CM), or the value of unknown(1). See the + associated conformance object for write conditions and + limitations. See the reference for specifics on the + modulation profiles implied by qam64 and qam256." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + + + + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 6-17." + ::= { docsIfDownstreamChannelEntry 4 } + +docsIfDownChannelInterleave OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + taps8Increment16(3), + taps16Increment8(4), + taps32Increment4(5), + taps64Increment2(6), + taps128Increment1(7), + taps12increment17(8) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Forward Error Correction (FEC) interleaving used + for this downstream channel. + Values are defined as follows: + taps8Increment16(3): protection 5.9/4.1 usec, + latency .22/.15 msec + taps16Increment8(4): protection 12/8.2 usec, + latency .48/.33 msec + taps32Increment4(5): protection 24/16 usec, + latency .98/.68 msec + taps64Increment2(6): protection 47/33 usec, + latency 2/1.4 msec + taps128Increment1(7): protection 95/66 usec, + latency 4/2.8 msec + taps12increment17(8): protection 18/14 usec, + latency 0.43/0.32 msec + + The value 'taps12increment17' is supported by EuroDOCSIS + cable systems only, and the others by DOCSIS cable systems. + + If the interface is down, this object either returns + the configured value (CMTS), the most current value (CM), + or the value of unknown(1). + The value of other(2) is returned if the interleave + is known but not defined in the above list. + See the associated conformance object for write + conditions and limitations. See the reference for the FEC + configuration described by the setting of this object." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + + + + Table 6-15." + ::= { docsIfDownstreamChannelEntry 5 } + +docsIfDownChannelPower OBJECT-TYPE + SYNTAX TenthdBmV + UNITS "dBmV" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "At the CMTS, the operational transmit power. At the CM, + the received power level. + If the interface is down, this object either returns + the configured value (CMTS), the most current value (CM) + or the value of 0. See the associated conformance object + for write conditions and limitations. See the reference + for recommended and required power levels." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-16, 6-17." + ::= { docsIfDownstreamChannelEntry 6 } + +docsIfDownChannelAnnex OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + annexA(3), + annexB(4), + annexC(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the conformance of + the implementation to important regional cable standards. + annexA : Annex A from ITU-T J.83 is used. + (equivalent to EN 300 429) + annexB : Annex B from ITU-T J.83 is used. + annexC : Annex C from ITU-T J.83 is used." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.3.1, and H.3.1." + ::= { docsIfDownstreamChannelEntry 7 } + +docsIfDownChannelStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Entries with this object set to permanent(4) + do not require write operations for read-write + objects." + ::= { docsIfDownstreamChannelEntry 8 } + +-- +-- The following table is implemented on both the CM and the CMTS. +-- For the CM, only attached channels appear in the table. For the +-- CM, this table is read-only as well. +-- + +docsIfUpstreamChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfUpstreamChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes the attributes of attached upstream + channels." + ::= { docsIfBaseObjects 2 } + +docsIfUpstreamChannelEntry OBJECT-TYPE + SYNTAX DocsIfUpstreamChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "List of attributes for a single upstream channel. For + DOCSIS 2.0 CMTSs, an entry in this table exists for + each ifEntry with an ifType of docsCableUpstreamChannel + (205). + For DOCSIS 1.x CM/CMTSs and DOCSIS 2.0 CMs, an entry in + this table exists for each ifEntry with an ifType of + docsCableUpstream (129). + + For DOCSIS 2.0 CMTSs, two classes of interfaces can be + defined for this table: + o Upstream Physical Interfaces: The traditional DOCSIS + 1.x CMTS upstream interface ifType 129 and the DOCSIS + 2.0 ifType 205 that are functional. In other words, + interfaces that represent upstream receivers within + an RF MAC interface. + Entries of physical interfaces are exposed to the + management interface with their corresponding + ifStack hierarchy and are not administratively + created by this table. + + + + + o Upstream Temporary Interfaces: A fictitious + interface created for the purpose of manipulating + physical interface parameters offline, then + validating prior to updating the target physical + interface. + + In case of a reinitialization of the managed system, + physical interfaces values persist while the temporary + interfaces are not recreated. + + This mechanism helps to minimize service disruptions + originating in situations where a group of interface + parameter values need to be consistent with each other + in SET operations. A temporary buffer + (temporary interface) is provided to allow the CMTS + to validate the parameters offline." + INDEX { ifIndex } + ::= { docsIfUpstreamChannelTable 1 } + +DocsIfUpstreamChannelEntry ::= SEQUENCE { + docsIfUpChannelId Integer32, + docsIfUpChannelFrequency Integer32, + docsIfUpChannelWidth Integer32, + docsIfUpChannelModulationProfile Unsigned32, + docsIfUpChannelSlotSize Unsigned32, + docsIfUpChannelTxTimingOffset Unsigned32, + docsIfUpChannelRangingBackoffStart Integer32, + docsIfUpChannelRangingBackoffEnd Integer32, + docsIfUpChannelTxBackoffStart Integer32, + docsIfUpChannelTxBackoffEnd Integer32, + docsIfUpChannelScdmaActiveCodes Unsigned32, + docsIfUpChannelScdmaCodesPerSlot Integer32, + docsIfUpChannelScdmaFrameSize Unsigned32, + docsIfUpChannelScdmaHoppingSeed Unsigned32, + docsIfUpChannelType DocsisUpstreamType, + docsIfUpChannelCloneFrom InterfaceIndexOrZero, + docsIfUpChannelUpdate TruthValue, + docsIfUpChannelStatus RowStatus, + docsIfUpChannelPreEqEnable TruthValue + } + +docsIfUpChannelId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The CMTS identification of the upstream channel." + ::= { docsIfUpstreamChannelEntry 1 } + + + +docsIfUpChannelFrequency OBJECT-TYPE + SYNTAX Integer32 (0..1000000000) + UNITS "hertz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The center of the frequency band associated with this + upstream interface. This object returns 0 if the frequency + is undefined or unknown. Minimum permitted upstream + frequency is 5,000,000 Hz for current technology. See + the associated conformance object for write conditions + and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 4-2." + ::= { docsIfUpstreamChannelEntry 2 } + +docsIfUpChannelWidth OBJECT-TYPE + SYNTAX Integer32 (0..64000000) + UNITS "hertz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The bandwidth of this upstream interface. This object + returns 0 if the interface width is undefined or unknown. + Minimum permitted interface width is currently 200,000 Hz. + See the associated conformance object for write conditions + and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 6-5." + ::= { docsIfUpstreamChannelEntry 3 } + +docsIfUpChannelModulationProfile OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An entry identical to the docsIfModIndex in the + docsIfCmtsModulationTable that describes this channel. + This channel is further instantiated there by a grouping + of interval usage codes (IUCs) that, together, fully + describe the channel modulation. This object returns 0 if + the docsIfCmtsModulationTable entry does not exist or is + empty. See the associated conformance object for write + conditions and limitations. + + + + Setting this object returns an 'inconsistentValue' + error if the following conditions are not satisfied: + 1. All the IUC entries in the selected modulation profile + MUST have the same value of docsIfCmtsModChannelType. + 2. All of the Modulation parameters in the selected + modulation profile MUST be consistent with the other + parameters in this docsIfUpstreamChannelEntry." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + ::= { docsIfUpstreamChannelEntry 4 } + +docsIfUpChannelSlotSize OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "ticks" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable to TDMA and ATDMA channel types only. + The number of 6.25 microsecond ticks in each upstream + mini-slot. Returns zero if the value is undefined or + unknown or in case of an SCDMA channel. + See the associated conformance object for write + conditions and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.1.2.4." + ::= { docsIfUpstreamChannelEntry 5 } + +docsIfUpChannelTxTimingOffset OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CM, a measure of the current round trip time + obtained from the ranging offset (initial ranging offset + + ranging offset adjustments). + At the CMTS, the maximum of timing offset, among all the + CMs that are/were present on the channel, taking into + account all ( initial + periodic ) timing offset + corrections that were sent for each of the CMs. Generally, + these measurements are positive, but if the measurements + are negative, the value of this object is zero. Used for + timing of CM upstream transmissions to ensure synchronized + arrivals at the CMTS. + Units are one 64th fraction of 6.25 microseconds." + + + + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.19." + ::= { docsIfUpstreamChannelEntry 6 } + +docsIfUpChannelRangingBackoffStart OBJECT-TYPE + SYNTAX Integer32 (0..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial random backoff window to use when retrying + Ranging Requests. Expressed as a power of 2. A value of + 16 at the CMTS indicates that a proprietary adaptive retry + mechanism is to be used. See the associated conformance + object for write conditions and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 8.3.4, and 9.4." + ::= { docsIfUpstreamChannelEntry 7 } + +docsIfUpChannelRangingBackoffEnd OBJECT-TYPE + SYNTAX Integer32 (0..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The final random backoff window to use when retrying + Ranging Requests. Expressed as a power of 2. A value of + 16 at the CMTS indicates that a proprietary adaptive retry + mechanism is to be used. See the associated conformance + object for write conditions and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.4, and 9.4." + ::= { docsIfUpstreamChannelEntry 8 } + +docsIfUpChannelTxBackoffStart OBJECT-TYPE + SYNTAX Integer32 (0..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial random backoff window to use when retrying + transmissions. Expressed as a power of 2. A value of 16 + at the CMTS indicates that a proprietary adaptive retry + mechanism is to be used. See the associated conformance + object for write conditions and limitations." + + + + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.4, and 9.4." + ::= { docsIfUpstreamChannelEntry 9 } + +docsIfUpChannelTxBackoffEnd OBJECT-TYPE + SYNTAX Integer32 (0..16) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The final random backoff window to use when retrying + transmissions. Expressed as a power of 2. A value of 16 + at the CMTS indicates that a proprietary adaptive retry + mechanism is to be used. See the associated conformance + object for write conditions and limitations." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.4, and 9.4." + ::= { docsIfUpstreamChannelEntry 10 } + +docsIfUpChannelScdmaActiveCodes OBJECT-TYPE + SYNTAX Unsigned32 (0|64..66|68..70|72|74..78|80..82|84..88 + |90..96|98..100|102|104..106|108 + |110..112|114..126|128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable for SCDMA channel types only. + Number of active codes. Returns zero for + Non-SCDMA channel types. Note that legal + values from 64..128 MUST be non-prime." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.11.2.1." + ::= { docsIfUpstreamChannelEntry 11 } + +docsIfUpChannelScdmaCodesPerSlot OBJECT-TYPE + SYNTAX Integer32(0 | 2..32) + UNITS "codesperMinislots" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable for SCDMA channel types only. + The number of SCDMA codes per mini-slot. + Returns zero if the value is undefined or unknown or in + + + + case of a TDMA or ATDMA channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.11.2.1." + ::= { docsIfUpstreamChannelEntry 12 } + +docsIfUpChannelScdmaFrameSize OBJECT-TYPE + SYNTAX Unsigned32 (0..32) + UNITS "spreadIntervals" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable for SCDMA channel types only. + SCDMA Frame size in units of spreading intervals. + This value returns zero for non-SCDMA Profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.12." + ::= { docsIfUpstreamChannelEntry 13 } + +docsIfUpChannelScdmaHoppingSeed OBJECT-TYPE + SYNTAX Unsigned32 (0..32767) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Applicable for SCDMA channel types only. + 15-bit seed used for code hopping sequence initialization. + Returns zero for non-SCDMA channel types. + Setting this value to a value different than zero for + non-SCDMA channel types returns the error 'wrongValue'." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.14.1." + ::= { docsIfUpstreamChannelEntry 14 } + +docsIfUpChannelType OBJECT-TYPE + SYNTAX DocsisUpstreamType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reflects the Upstream channel type. + This object returns the value of docsIfCmtsModChannelType + for the modulation profile selected in + docsIfUpChannelModulationProfile for this row." + REFERENCE + + + + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.1." + ::= { docsIfUpstreamChannelEntry 15 } + +docsIfUpChannelCloneFrom OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the ifIndex value of the physical + interface row entry whose parameters are to be adjusted. + + Upon setting this object to the ifIndex value of a + physical interface, the following interface objects values + are copied to this entry: + docsIfUpChannelFrequency, + docsIfUpChannelWidth, + docsIfUpChannelModulationProfile, + docsIfUpChannelSlotSize, + docsIfUpChannelRangingBackoffStart, + docsIfUpChannelRangingBackoffEnd, + docsIfUpChannelTxBackoffStart, + docsIfUpChannelTxBackoffEnd, + docsIfUpChannelScdmaActiveCodes, + docsIfUpChannelScdmaCodesPerSlot, + docsIfUpChannelScdmaFrameSize, + docsIfUpChannelScdmaHoppingSeed, + docsIfUpChannelType, and + docsIfUpChannelPreEqEnable + Setting this object to the value of a non-existent or + a temporary upstream interface returns the error + 'wrongValue'. + This object MUST contain a value of zero for physical + interfaces entries. + Setting this object in row entries that correspond to + physical interfaces returns the error 'wrongValue'." + ::= { docsIfUpstreamChannelEntry 16 } + +docsIfUpChannelUpdate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Used to perform the copy of adjusted parameters from the + temporary interface entry to the physical interface + indicated by the docsIfUpChannelCloneFrom object. The + transfer is initiated through an SNMP SET to 'true' of + + + + this object. + A SET to 'true' fails and returns error 'commitFailed' + if docsIfUpChannelStatus value is 'notInService', which + means that the interface parameters values are not + compatible with each other or have not been validated yet. + Reading this object always returns 'false'." + ::= { docsIfUpstreamChannelEntry 17 } + +docsIfUpChannelStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is only used for the creation of a temporary + upstream row with the purpose of updating the parameters + of a physical upstream channel entry. + + The following restrictions apply to this object: + 1. This object is not writable for physical interfaces. + 2. Temporary interface entries are only created by a SET + of this object to createandWait(5). + 3. ifAdminStatus from the Interface MIB RFC 2863 is used + to take a physical upstream channel offline, to be + consistent with DOCSIS 1.x operation, as indicated in + RFC 2670. + In addition, + o ifAdminStatus 'down' is reflected in this object + as 'notInService'. + o ifOperStatus 'down' while ifAdminStatus 'up' is + reflected in this object as 'notInservice'. + 4. Temporary created rows MUST be set to 'active' with + the purpose of validating upstream parameter + consistency prior to transferring the parameters to the + physical interface. + + Below is a mandatory procedure for adjusting the values + of a physical interface: + 1. Create a temporary interface entry through an SNMP SET + using 'createAndWait'. At this point, the RowStatus + reports 'notReady'. + The Manager entity uses an ifIndex value outside the + operational range of the physical interfaces for the + creation of a temporary interface. + 2. Set the docsIfUpChannelCloneFrom object to the ifIndex + value of the physical row to update. Now + docsIfUpChannelStatus reports 'notInService'. + 3. Change the upstream parameters to the desired values + in the temporary row. + + + + 4. Validate that all parameters are consistent by setting + docsIfUpChannelStatus to 'active'. A failure to set the + RowStatus to 'active' returns the error 'commitFailed', + which means the parameters are not compatible with the + target physical interface. + 5. With docsIfUpChannelStatus 'active', transfer the + parameters to the target physical interface by setting + the object docsIfUpChannelUpdate to 'true'. + 6. Delete the temporary row by setting + docsIfUpChannelStatus to 'destroy'." + ::= { docsIfUpstreamChannelEntry 18 } + +docsIfUpChannelPreEqEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "At the CMTS, this object is used to enable or disable + pre-equalization on the upstream channel represented by + this table instance. At the CM, this object is read-only + and reflects the status of pre-equalization as represented + in the RNG-RSP. Pre-equalization is considered enabled at + the CM if a RNG-RSP with pre-equalization data has been + received at least once since the last mac + reinitialization." + DEFVAL {false} + ::= { docsIfUpstreamChannelEntry 19 } + +-- The following table describes the attributes of each class of +-- service. The entries in this table are referenced from the +-- docsIfServiceEntries. They exist as a separate table in order to +-- reduce redundant information in docsIfServiceTable. +-- +-- This table is implemented at both the CM and the CMTS. +-- The CM need only maintain entries for the classes of service +-- referenced by its docsIfCmServiceTable. +-- + +docsIfQosProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfQosProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes for each class of service." + ::= { docsIfBaseObjects 3 } + +docsIfQosProfileEntry OBJECT-TYPE + SYNTAX DocsIfQosProfileEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes for a single class of service. + If implemented as read-create in the Cable Modem + Termination System, creation of entries in this table is + controlled by the value of + docsIfCmtsQosProfilePermissions. + + If implemented as read-only, entries are created based + on information in REG-REQ MAC messages received from + cable modems (for Cable Modem Termination System), or + based on information extracted from the TFTP option file + (for Cable Modem). + In the Cable Modem Termination System, read-only entries + are removed if no longer referenced by + docsIfCmtsServiceTable. + + An entry in this table MUST not be removed while it is + referenced by an entry in docsIfCmServiceTable (Cable + Modem) or docsIfCmtsServiceTable (Cable Modem Termination + System). + + An entry in this table SHOULD NOT be changeable while + it is referenced by an entry in docsIfCmtsServiceTable. + + If this table is created automatically, there SHOULD only + be a single entry for each Class of Service. Multiple + entries with the same Class of Service parameters are NOT + RECOMMENDED." + INDEX { docsIfQosProfIndex } + ::= { docsIfQosProfileTable 1 } + +DocsIfQosProfileEntry ::= SEQUENCE { + docsIfQosProfIndex Integer32, + docsIfQosProfPriority Integer32, + docsIfQosProfMaxUpBandwidth Integer32, + docsIfQosProfGuarUpBandwidth Integer32, + docsIfQosProfMaxDownBandwidth Integer32, + docsIfQosProfMaxTxBurst Integer32, -- deprecated + docsIfQosProfBaselinePrivacy TruthValue, + docsIfQosProfStatus RowStatus, + docsIfQosProfMaxTransmitBurst Integer32, + docsIfQosProfStorageType StorageType + } + +docsIfQosProfIndex OBJECT-TYPE + SYNTAX Integer32 (1..16383) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies an entry + in the docsIfQosProfileTable." + ::= { docsIfQosProfileEntry 1 } + +docsIfQosProfPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A relative priority assigned to this service when + allocating bandwidth. Zero indicates lowest priority + and seven indicates highest priority. + Interpretation of priority is device-specific. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 2 } + +docsIfQosProfMaxUpBandwidth OBJECT-TYPE + SYNTAX Integer32 (0..100000000) + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum upstream bandwidth, in bits per second, + allowed for a service with this service class. + Zero if there is no restriction of upstream bandwidth. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 3 } + +docsIfQosProfGuarUpBandwidth OBJECT-TYPE + SYNTAX Integer32 (0..100000000) + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum guaranteed upstream bandwidth, in bits per second, + + + + allowed for a service with this service class. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 4 } + +docsIfQosProfMaxDownBandwidth OBJECT-TYPE + SYNTAX Integer32 (0..100000000) + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum downstream bandwidth, in bits per second, + allowed for a service with this service class. + Zero if there is no restriction of downstream bandwidth. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 5 } + +docsIfQosProfMaxTxBurst OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "mini-slots" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The maximum number of mini-slots that may be requested + for a single upstream transmission. + A value of zero means there is no limit. + MUST NOT be changed while this row is active. + This object has been deprecated and replaced by + docsIfQosProfMaxTransmitBurst, to fix a mismatch + of the units and value range with respect to the DOCSIS + Maximum Upstream Channel Transmit Burst Configuration + Setting." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 6 } + + + +docsIfQosProfBaselinePrivacy OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether Baseline Privacy is enabled for this + service class. + MUST NOT be changed while this row is active." + DEFVAL { false } + ::= { docsIfQosProfileEntry 7 } + +docsIfQosProfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is object is used to create or delete rows in + this table. This object MUST NOT be changed from active + while the row is referenced by any entry in either + docsIfCmServiceTable (on the CM) or + docsIfCmtsServiceTable (on the CMTS)." + ::= { docsIfQosProfileEntry 8 } + +docsIfQosProfMaxTransmitBurst OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of bytes that may be requested for a + single upstream transmission. A value of zero means there + is no limit. Note: This value does not include any + physical layer overhead. + MUST NOT be changed while this row is active." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex C.1.1.4." + DEFVAL { 0 } + ::= { docsIfQosProfileEntry 9 } + +docsIfQosProfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Entries with this object set to permanent(4) + + + + do not require write operations for writable + objects." + ::= { docsIfQosProfileEntry 10 } + +docsIfSignalQualityTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfSignalQualityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "At the CM, describes the PHY signal quality of downstream + channels. At the CMTS, this object describes the PHY + signal quality of upstream channels. At the CMTS, this + table MAY exclude contention intervals." + ::= { docsIfBaseObjects 4 } + +docsIfSignalQualityEntry OBJECT-TYPE + SYNTAX DocsIfSignalQualityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "At the CM, this object describes the PHY characteristics of + a downstream channel. At the CMTS, it describes the PHY + signal quality of an upstream channel. + An entry in this table exists for each ifEntry with an + ifType of docsCableDownstream(128) for Cable Modems. + For DOCSIS 1.1 Cable Modem Termination Systems, an entry + exists for each ifEntry with an ifType of + docsCableUpstream (129). + For DOCSIS 2.0 Cable Modem Termination Systems, an entry + exists for each ifEntry with an ifType of + docsCableUpstreamChannel (205)." + INDEX { ifIndex } + ::= { docsIfSignalQualityTable 1 } + +DocsIfSignalQualityEntry ::= SEQUENCE { + docsIfSigQIncludesContention TruthValue, + docsIfSigQUnerroreds Counter32, + docsIfSigQCorrecteds Counter32, + docsIfSigQUncorrectables Counter32, + docsIfSigQSignalNoise TenthdB, + docsIfSigQMicroreflections Integer32, + docsIfSigQEqualizationData DocsEqualizerData, + docsIfSigQExtUnerroreds Counter64, + docsIfSigQExtCorrecteds Counter64, + docsIfSigQExtUncorrectables Counter64 + } + +docsIfSigQIncludesContention OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "true(1) if this CMTS includes contention intervals in + the counters in this table. Always false(2) for CMs." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4.1" + ::= { docsIfSignalQualityEntry 1 } + +docsIfSigQUnerroreds OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel without error. + This includes all codewords, whether or not they + were part of frames destined for this device. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + ::= { docsIfSignalQualityEntry 2 } + +docsIfSigQCorrecteds OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel with correctable + errors. This includes all codewords, whether or not + they were part of frames destined for this device. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + + + + ::= { docsIfSignalQualityEntry 3 } + +docsIfSigQUncorrectables OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel with uncorrectable + errors. This includes all codewords, whether or not + they were part of frames destined for this device. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + ::= { docsIfSignalQualityEntry 4 } + +docsIfSigQSignalNoise OBJECT-TYPE + SYNTAX TenthdB + UNITS "TenthdB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Signal/Noise ratio as perceived for this channel. + At the CM, this object describes the Signal/Noise of the + downstream channel. At the CMTS, it describes the + average Signal/Noise of the upstream channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 4-1 and 4-2" + ::= { docsIfSignalQualityEntry 5 } + +docsIfSigQMicroreflections OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "-dBc" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Microreflections, including in-channel response + as perceived on this interface, measured in dBc below + the signal level. + This object is not assumed to return an absolutely + accurate value, but it gives a rough indication + + + + of microreflections received on this interface. + It is up to the implementer to provide information + as accurately as possible." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 4-1 and 4-2" + ::= { docsIfSignalQualityEntry 6 } + +docsIfSigQEqualizationData OBJECT-TYPE + SYNTAX DocsEqualizerData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CM, this object returns the equalization data for + the downstream channel. + + At the CMTS, this object is not applicable and is not + instantiated. Note that previous CMTS implementations + may instantiate this object in two ways: + - An equalization value indicating an equalization + average for the upstream channel. Those values have + vendor-dependent interpretations. + - Return a zero-length OCTET STRING to indicate that + the value is unknown or if there is no equalization + data available or defined." + REFERENCE + "DOCSIS Radio Frequency Interface Specification, + Figure 6-23." + ::= { docsIfSignalQualityEntry 7 } + + +docsIfSigQExtUnerroreds OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel without error. + This includes all codewords, whether or not they + were part of frames destined for this device. + This is the 64-bit version of docsIfSigQUnerroreds. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + + + + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + ::= { docsIfSignalQualityEntry 8 } + +docsIfSigQExtCorrecteds OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel with correctable + errors. This includes all codewords, whether or not + they were part of frames destined for this device. + This is the 64-bit version of docsIfSigQCorrecteds. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, and 6.3.6." + ::= { docsIfSignalQualityEntry 9 } + +docsIfSigQExtUncorrectables OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received on this channel with uncorrectable + errors. This includes all codewords, whether or not + they were part of frames destined for this device. + This is the 64-bit version of docsIfSigQUncorrectables. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Sections 6.2.4, 6.3.6." + ::= { docsIfSignalQualityEntry 10 } + +-- +-- DOCSIS Version of the device +-- + + + + +docsIfDocsisBaseCapability OBJECT-TYPE + SYNTAX DocsisVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of the DOCSIS capability of the device." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex G." + ::= { docsIfBaseObjects 5 } + +-- +-- CABLE MODEM GROUP +-- + +-- +-- The CM MAC Table +-- + +docsIfCmMacTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of each CM MAC interface, + extending the information available from ifEntry." + ::= { docsIfCmObjects 1 } + +docsIfCmMacEntry OBJECT-TYPE + SYNTAX DocsIfCmMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing objects describing attributes of + each MAC entry, extending the information in ifEntry. + An entry in this table exists for each ifEntry with an + ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsIfCmMacTable 1 } + +DocsIfCmMacEntry ::= SEQUENCE { + docsIfCmCmtsAddress MacAddress, + docsIfCmCapabilities BITS, + docsIfCmRangingRespTimeout TimeTicks, + docsIfCmRangingTimeout TimeInterval + } + + + + +docsIfCmCmtsAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the CMTS that is believed to control this MAC + domain. At the CM, this will be the source address from + SYNC, MAP, and other MAC-layer messages. If the CMTS is + unknown, returns 00-00-00-00-00-00." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.2.2." + ::= { docsIfCmMacEntry 1 } + +docsIfCmCapabilities OBJECT-TYPE + SYNTAX BITS { + atmCells(0), + concatenation(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the capabilities of the MAC implementation + at this interface. Note that packet transmission is + always supported. Therefore, there is no specific bit + required to explicitly indicate this capability. + Note that BITS objects are encoded most significant bit + first. For example, if bit 1 is set, the value of this + object is the octet string '40'H." + ::= { docsIfCmMacEntry 2 } + +docsIfCmRangingRespTimeout OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-write + STATUS obsolete + DESCRIPTION + "Waiting time for a Ranging Response packet. + This object has been obsoleted and replaced by + docsIfCmRangingTimeout to correct the typing to + TimeInterval." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.1.6." + DEFVAL { 20 } + ::= { docsIfCmMacEntry 3 } + + + + +docsIfCmRangingTimeout OBJECT-TYPE + SYNTAX TimeInterval + UNITS "HundredOfSeconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Waiting time for a Ranging Response packet. + This object MUST NOT persist at reinitialization + of the managed system." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.1.6, timer T3." + DEFVAL { 20 } + ::= { docsIfCmMacEntry 4 } + +-- +-- CM status table. +-- This table is implemented only at the CM. +-- + +docsIfCmStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maintains a number of status objects + and counters for Cable Modems." + ::= { docsIfCmObjects 2 } + +docsIfCmStatusEntry OBJECT-TYPE + SYNTAX DocsIfCmStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of status objects and counters for a single MAC + layer instance in Cable Modem. + An entry in this table exists for each ifEntry with an + ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsIfCmStatusTable 1 } + +DocsIfCmStatusEntry ::= SEQUENCE { + docsIfCmStatusValue INTEGER, + docsIfCmStatusCode OCTET STRING, + docsIfCmStatusTxPower TenthdBmV, + docsIfCmStatusResets Counter32, + docsIfCmStatusLostSyncs Counter32, + + + + docsIfCmStatusInvalidMaps Counter32, + docsIfCmStatusInvalidUcds Counter32, + docsIfCmStatusInvalidRangingResponses Counter32, + docsIfCmStatusInvalidRegistrationResponses Counter32, + docsIfCmStatusT1Timeouts Counter32, + docsIfCmStatusT2Timeouts Counter32, + docsIfCmStatusT3Timeouts Counter32, + docsIfCmStatusT4Timeouts Counter32, + docsIfCmStatusRangingAborteds Counter32, + docsIfCmStatusDocsisOperMode DocsisQosVersion, + docsIfCmStatusModulationType DocsisUpstreamType, + docsIfCmStatusEqualizationData DocsEqualizerData, + docsIfCmStatusUCCs Counter32, + docsIfCmStatusUCCFails Counter32 + } + +docsIfCmStatusValue OBJECT-TYPE + SYNTAX INTEGER { + other(1), + notReady(2), + notSynchronized(3), + phySynchronized(4), + usParametersAcquired(5), + rangingComplete(6), + ipComplete(7), + todEstablished(8), + securityEstablished(9), + paramTransferComplete(10), + registrationComplete(11), + operational(12), + accessDenied(13) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current Cable Modem connectivity state, as specified + in the RF Interface Specification. Interpretations for + state values 1-12 are clearly outlined in the SP-RFI + reference given below. + The state value accessDenied(13) indicates the CMTS has + sent a Registration Aborted message to the CM. The same + state is reported as accessDenied(7) by the CMTS object + docsIfCmtsCmStatusValue." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 11.2. + Data-Over-Cable Service Interface Specifications: + + + + Operations Support System Interface Specification + SP-OSSIv2.0-I09-050812, Section 6.3.4.2." + ::= { docsIfCmStatusEntry 1 } + +docsIfCmStatusCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE( 0 | 5 | 6 )) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status code for a Cable Modem as defined in the + OSSI Specification. The status code consists + of a single character indicating error groups, followed + by a two- or three-digit number indicating the status + condition, followed by a decimal. + An example of a returned value could be 'T101.0'. + The zero-length OCTET STRING indicates no status code yet + registered." + REFERENCE + "Data-Over-Cable Service Interface Specifications: + Operations Support System Interface Specification + SP-OSSIv2.0-I09-050812, Annex D." + ::= { docsIfCmStatusEntry 2 } + + +docsIfCmStatusTxPower OBJECT-TYPE + SYNTAX TenthdBmV + UNITS "TenthdBmV" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational transmit power for the attached upstream + channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.18." + ::= { docsIfCmStatusEntry 3 } + +docsIfCmStatusResets OBJECT-TYPE + SYNTAX Counter32 + UNITS "resets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM reset or initialized this + interface. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + + + + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmStatusEntry 4 } + +docsIfCmStatusLostSyncs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM lost synchronization with + the downstream channel. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.2." + ::= { docsIfCmStatusEntry 5 } + +docsIfCmStatusInvalidMaps OBJECT-TYPE + SYNTAX Counter32 + UNITS "maps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM received invalid MAP messages. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.4." + ::= { docsIfCmStatusEntry 6 } + +docsIfCmStatusInvalidUcds OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM received invalid UCD messages. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.3." + ::= { docsIfCmStatusEntry 7 } + +docsIfCmStatusInvalidRangingResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM received invalid ranging response + messages. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.6." + ::= { docsIfCmStatusEntry 8 } + +docsIfCmStatusInvalidRegistrationResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the CM received invalid registration + response messages. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.8." + ::= { docsIfCmStatusEntry 9 } + +docsIfCmStatusT1Timeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Number of times counter T1 expired in the CM. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmStatusEntry 10 } + +docsIfCmStatusT2Timeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times counter T2 expired in the CM. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmStatusEntry 11 } + +docsIfCmStatusT3Timeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times counter T3 expired in the CM. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmStatusEntry 12 } + +docsIfCmStatusT4Timeouts OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times counter T4 expired in the CM. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmStatusEntry 13 } + +docsIfCmStatusRangingAborteds OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the ranging process was aborted + by the CMTS. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.3.3." + ::= { docsIfCmStatusEntry 14 } + +docsIfCmStatusDocsisOperMode OBJECT-TYPE + SYNTAX DocsisQosVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether the device has registered using 1.0 + Class of Service or 1.1 Quality of Service. + An unregistered CM SHOULD indicate 'docsis11' for a + docsIfDocsisBaseCapability value of DOCSIS 1.1/2.0. An + unregistered CM SHOULD indicate 'docsis10' for a + docsIfDocsisBaseCapability value of DOCSIS 1.0." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex G." + + + + ::= { docsIfCmStatusEntry 15 } + +docsIfCmStatusModulationType OBJECT-TYPE + SYNTAX DocsisUpstreamType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates modulation type status currently used by the + CM. Since this object specifically identifies PHY mode, + the shared upstream channel type is not permitted." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.1." + + ::= { docsIfCmStatusEntry 16 } + +docsIfCmStatusEqualizationData OBJECT-TYPE + SYNTAX DocsEqualizerData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Pre-equalization data for this CM after convolution with + data indicated in the RNG-RSP. This data is valid when + docsIfUpChannelPreEqEnable is set to true." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 8-23." + ::= { docsIfCmStatusEntry 17 } + +docsIfCmStatusUCCs OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of successful Upstream Channel Change + transactions. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmStatusEntry 18 } + +docsIfCmStatusUCCFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of failed Upstream Channel Change + transactions. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmStatusEntry 19 } + +-- +-- The Cable Modem Service Table +-- + +docsIfCmServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of each upstream service queue + on a CM." + ::= { docsIfCmObjects 3 } + +docsIfCmServiceEntry OBJECT-TYPE + SYNTAX DocsIfCmServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of an upstream bandwidth service + queue. + An entry in this table exists for each Service ID. + The primary index is an ifIndex with an ifType of + docsCableMaclayer(127)." + INDEX { ifIndex, docsIfCmServiceId } + ::= { docsIfCmServiceTable 1 } + +DocsIfCmServiceEntry ::= SEQUENCE { + docsIfCmServiceId Integer32, + docsIfCmServiceQosProfile Integer32, + docsIfCmServiceTxSlotsImmed Counter32, + docsIfCmServiceTxSlotsDed Counter32, + docsIfCmServiceTxRetries Counter32, + docsIfCmServiceTxExceededs Counter32, + docsIfCmServiceRqRetries Counter32, + docsIfCmServiceRqExceededs Counter32, + docsIfCmServiceExtTxSlotsImmed Counter64, + docsIfCmServiceExtTxSlotsDed Counter64 + + + + } + +docsIfCmServiceId OBJECT-TYPE + SYNTAX Integer32 (1..16383) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifies a service queue for upstream bandwidth. The + attributes of this service queue are shared between the + CM and the CMTS. The CMTS allocates upstream bandwidth + to this service queue based on requests from the CM and + on the class of service associated with this queue." + ::= { docsIfCmServiceEntry 1 } + +docsIfCmServiceQosProfile OBJECT-TYPE + SYNTAX Integer32 (0..16383) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index in docsIfQosProfileTable describing the quality + of service attributes associated with this particular + service. If no associated entry in docsIfQosProfileTable + exists, this object returns a value of zero." + ::= { docsIfCmServiceEntry 2 } + +docsIfCmServiceTxSlotsImmed OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of upstream mini-slots that have been used to + transmit data PDUs in immediate (contention) mode. This + includes only those PDUs that are presumed to have + arrived at the head-end (i.e., those that were explicitly + acknowledged). It does not include retransmission attempts + or mini-slots used by requests. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 3 } + +docsIfCmServiceTxSlotsDed OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of upstream mini-slots that have been used to + transmit data PDUs in dedicated mode (i.e., as a result + of a unicast Data Grant). + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 4 } + +docsIfCmServiceTxRetries OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of attempts to transmit data PDUs containing + requests for acknowledgment that did not result in + acknowledgment. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 5 } + +docsIfCmServiceTxExceededs OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of data PDU transmission failures due to + excessive retries without acknowledgment. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 6 } + +docsIfCmServiceRqRetries OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of attempts to transmit bandwidth requests + that did not result in acknowledgment. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 7 } + +docsIfCmServiceRqExceededs OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests for bandwidth that failed due to + excessive retries without acknowledgment. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 8 } + +docsIfCmServiceExtTxSlotsImmed OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of upstream mini-slots that have been used to + transmit data PDUs in immediate (contention) mode. This + includes only those PDUs that are presumed to have + arrived at the head-end (i.e., those that were explicitly + acknowledged). It does not include retransmission attempts + or mini-slots used by requests. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 9 } + +docsIfCmServiceExtTxSlotsDed OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of upstream mini-slots that have been used to + transmit data PDUs in dedicated mode (i.e., as a result + of a unicast Data Grant). + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.4." + ::= { docsIfCmServiceEntry 10 } + +-- +-- CMTS GROUP +-- + +-- +-- The CMTS MAC Table +-- + +docsIfCmtsMacTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsMacEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Describes the attributes of each CMTS MAC interface, + extending the information available from ifEntry. + Mandatory for all CMTS devices." + ::= { docsIfCmtsObjects 1 } + +docsIfCmtsMacEntry OBJECT-TYPE + SYNTAX DocsIfCmtsMacEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing objects describing attributes of each + MAC entry, extending the information in ifEntry. + An entry in this table exists for each ifEntry with an + ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsIfCmtsMacTable 1 } + +DocsIfCmtsMacEntry ::= SEQUENCE { + docsIfCmtsCapabilities BITS, + docsIfCmtsSyncInterval Integer32, + docsIfCmtsUcdInterval Integer32, + docsIfCmtsMaxServiceIds Integer32, + docsIfCmtsInsertionInterval TimeTicks, -- Obsolete + docsIfCmtsInvitedRangingAttempts Integer32, + docsIfCmtsInsertInterval TimeInterval, + docsIfCmtsMacStorageType StorageType + } + +docsIfCmtsCapabilities OBJECT-TYPE + SYNTAX BITS { + atmCells(0), + concatenation(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the capabilities of the CMTS MAC + implementation at this interface. Note that packet + transmission is always supported. Therefore, there + is no specific bit required to explicitly indicate + this capability. + Note that BITS objects are encoded most significant bit + first. For example, if bit 1 is set, the value of this + object is the octet string '40'H." + ::= { docsIfCmtsMacEntry 1 } + +docsIfCmtsSyncInterval OBJECT-TYPE + + + + SYNTAX Integer32 (1..200) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval between CMTS transmission of successive SYNC + messages at this interface." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.3." + ::= { docsIfCmtsMacEntry 2 } + +docsIfCmtsUcdInterval OBJECT-TYPE + SYNTAX Integer32 (1..2000) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval between CMTS transmission of successive + Upstream Channel Descriptor messages for each upstream + channel at this interface." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.3" + ::= { docsIfCmtsMacEntry 3 } + +docsIfCmtsMaxServiceIds OBJECT-TYPE + SYNTAX Integer32 (1..16383) + UNITS "SIDs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of service IDs that may be + simultaneously active." + ::= { docsIfCmtsMacEntry 4 } + +docsIfCmtsInsertionInterval OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-write + STATUS obsolete + DESCRIPTION + "The amount of time to elapse between each broadcast + initial maintenance grant. Broadcast initial maintenance + grants are used to allow new cable modems to join the + network. Zero indicates that a vendor-specific algorithm + is used instead of a fixed time. The maximum amount of + + + + time permitted by the specification is 2 seconds. + This object has been obsoleted and replaced by + docsIfCmtsInsertInterval to fix a SYNTAX typing problem." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex B." + ::= { docsIfCmtsMacEntry 5 } + +docsIfCmtsInvitedRangingAttempts OBJECT-TYPE + SYNTAX Integer32 (0..1024) + UNITS "attempts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of attempts to make on invitations + for ranging requests. A value of zero means the system + SHOULD attempt to range forever." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 9.3.3 and Annex B." + ::= { docsIfCmtsMacEntry 6 } + +docsIfCmtsInsertInterval OBJECT-TYPE + SYNTAX TimeInterval + UNITS "HundredOfSeconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time to elapse between each broadcast + initial maintenance grant. Broadcast initial maintenance + grants are used to allow new cable modems to join the + network. Zero indicates that a vendor-specific algorithm + is used instead of a fixed time. The maximum amount of + time permitted by the specification is 2 seconds." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex B." + ::= { docsIfCmtsMacEntry 7 } + +docsIfCmtsMacStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + + + + Entries with this object set to permanent(4) + do not require write operations for read-write + objects." + ::= { docsIfCmtsMacEntry 8 } + +-- +-- +-- CMTS status table. +-- + +docsIfCmtsStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "For the MAC layer, this group maintains a number of + status objects and counters." + ::= { docsIfCmtsObjects 2 } + +docsIfCmtsStatusEntry OBJECT-TYPE + SYNTAX DocsIfCmtsStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status entry for a single MAC layer. + An entry in this table exists for each ifEntry with an + ifType of docsCableMaclayer(127)." + INDEX { ifIndex } + ::= { docsIfCmtsStatusTable 1 } + +DocsIfCmtsStatusEntry ::= SEQUENCE { + docsIfCmtsStatusInvalidRangeReqs Counter32, + docsIfCmtsStatusRangingAborteds Counter32, + docsIfCmtsStatusInvalidRegReqs Counter32, + docsIfCmtsStatusFailedRegReqs Counter32, + docsIfCmtsStatusInvalidDataReqs Counter32, + docsIfCmtsStatusT5Timeouts Counter32 + } + +docsIfCmtsStatusInvalidRangeReqs OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts invalid RNG-REQ messages received on + this interface. + Discontinuities in the value of this counter can occur + + + + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.5." + ::= { docsIfCmtsStatusEntry 1 } + +docsIfCmtsStatusRangingAborteds OBJECT-TYPE + SYNTAX Counter32 + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts ranging attempts that were explicitly + aborted by the CMTS. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.6." + ::= { docsIfCmtsStatusEntry 2 } + +docsIfCmtsStatusInvalidRegReqs OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts invalid REG-REQ messages received on + this interface; that is, syntax, out of range parameters, + or erroneous requests. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.7." + ::= { docsIfCmtsStatusEntry 3 } + +docsIfCmtsStatusFailedRegReqs OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts failed registration attempts. Included + are docsIfCmtsStatusInvalidRegReqs, authentication, and + class of service failures. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.3.7." + ::= { docsIfCmtsStatusEntry 4 } + +docsIfCmtsStatusInvalidDataReqs OBJECT-TYPE + SYNTAX Counter32 + UNITS "messages" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts invalid data request messages + received on this interface. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsStatusEntry 5 } + +docsIfCmtsStatusT5Timeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times counter T5 + expired on this interface. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 9-2." + ::= { docsIfCmtsStatusEntry 6 } + + + +-- +-- CM status table (within CMTS). +-- This table is implemented only at the CMTS. +-- It contains per-CM status information available in the CMTS. +-- + +docsIfCmtsCmStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsCmStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of objects in the CMTS, maintained for each + cable modem connected to this CMTS." + ::= { docsIfCmtsObjects 3 } + +docsIfCmtsCmStatusEntry OBJECT-TYPE + SYNTAX DocsIfCmtsCmStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status information for a single cable modem. + An entry in this table exists for each cable modem + that is connected to the CMTS implementing this table." + INDEX { docsIfCmtsCmStatusIndex } + ::= { docsIfCmtsCmStatusTable 1 } + +DocsIfCmtsCmStatusEntry ::= SEQUENCE { + docsIfCmtsCmStatusIndex Integer32, + docsIfCmtsCmStatusMacAddress MacAddress, + docsIfCmtsCmStatusIpAddress IpAddress, -- deprecated + docsIfCmtsCmStatusDownChannelIfIndex InterfaceIndexOrZero, + docsIfCmtsCmStatusUpChannelIfIndex InterfaceIndexOrZero, + docsIfCmtsCmStatusRxPower TenthdBmV, + docsIfCmtsCmStatusTimingOffset Unsigned32, + docsIfCmtsCmStatusEqualizationData DocsEqualizerData, + docsIfCmtsCmStatusValue INTEGER, + docsIfCmtsCmStatusUnerroreds Counter32, + docsIfCmtsCmStatusCorrecteds Counter32, + docsIfCmtsCmStatusUncorrectables Counter32, + docsIfCmtsCmStatusSignalNoise TenthdB, + docsIfCmtsCmStatusMicroreflections Integer32, + docsIfCmtsCmStatusExtUnerroreds Counter64, + docsIfCmtsCmStatusExtCorrecteds Counter64, + docsIfCmtsCmStatusExtUncorrectables Counter64, + docsIfCmtsCmStatusDocsisRegMode DocsisQosVersion, + docsIfCmtsCmStatusModulationType DocsisUpstreamType, + docsIfCmtsCmStatusInetAddressType InetAddressType, + docsIfCmtsCmStatusInetAddress InetAddress, + + + + docsIfCmtsCmStatusValueLastUpdate TimeStamp, + docsIfCmtsCmStatusHighResolutionTimingOffset Unsigned32 + } + +docsIfCmtsCmStatusIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index value to uniquely identify an entry in this table. + For an individual cable modem, this index value SHOULD + NOT change during CMTS uptime." + ::= { docsIfCmtsCmStatusEntry 1 } + +docsIfCmtsCmStatusMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "MAC address of the cable modem. If the cable modem has + multiple MAC addresses, this is the MAC address associated + with the Cable interface." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 8.2.2." + ::= { docsIfCmtsCmStatusEntry 2 } + +docsIfCmtsCmStatusIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "IP address of this cable modem. If the cable modem has no + IP address assigned, or the IP address is unknown, this + object returns a value of 0.0.0.0. If the cable modem has + multiple IP addresses, this object returns the IP address + associated with the Cable interface. + This object has been deprecated and replaced by + docsIfCmtsCmStatusInetAddressType and + docsIfCmtsCmStatusInetAddress, to enable IPv6 addressing + in the future." + ::= { docsIfCmtsCmStatusEntry 3 } + +docsIfCmtsCmStatusDownChannelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "IfIndex of the downstream channel that this CM is + connected to. If the downstream channel is unknown, this + object returns a value of zero." + ::= { docsIfCmtsCmStatusEntry 4 } + +docsIfCmtsCmStatusUpChannelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For DOCSIS 2.0, indicates the ifIndex of the logical + upstream channel (ifType 205) this CM is connected to. + For DOCSIS 1.x, indicates the ifIndex of the upstream + channel (ifType 129) this CM is connected to. + If the upstream channel is unknown, this object + returns a value of zero." + ::= { docsIfCmtsCmStatusEntry 5 } + +docsIfCmtsCmStatusRxPower OBJECT-TYPE + SYNTAX TenthdBmV + UNITS "ThenthdBmV" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The receive power as perceived for upstream data from + this cable modem. + If the receive power is unknown, this object returns + a value of zero." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.18." + ::= { docsIfCmtsCmStatusEntry 6 } + +docsIfCmtsCmStatusTimingOffset OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A measure of the current round trip time for this CM. + Used for timing of CM upstream transmissions to ensure + synchronized arrivals at the CMTS. Units are in terms + of (6.25 microseconds/64). Returns zero if the value + is unknown. + For channels requiring finer resolution, please refer to + object docsIfCmtsCmStatusHighResolutionTimingOffset." + REFERENCE + + + + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.17." + ::= { docsIfCmtsCmStatusEntry 7 } + +docsIfCmtsCmStatusEqualizationData OBJECT-TYPE + SYNTAX DocsEqualizerData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Equalization data for this CM, as measured by the CMTS. + Returns the zero-length OCTET STRING if the value is + unknown or if there is no equalization data available + or defined." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Figure 8-23." + ::= { docsIfCmtsCmStatusEntry 8 } + +docsIfCmtsCmStatusValue OBJECT-TYPE + SYNTAX INTEGER { + other(1), + ranging(2), + rangingAborted(3), + rangingComplete(4), + ipComplete(5), + registrationComplete(6), + accessDenied(7), + operational(8), + -- value 8 should not be used + registeredBPIInitializing(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current cable modem connectivity state, as specified + in the RF Interface Specification. Returned status + information is the CM status, as assumed by the CMTS, + and indicates the following events: + other(1) + Any state other than below. + ranging(2) + The CMTS has received an Initial Ranging Request + message from the CM, and the ranging process is not + yet complete. + rangingAborted(3) + The CMTS has sent a Ranging Abort message to the CM. + + + + rangingComplete(4) + The CMTS has sent a Ranging Complete message to the CM. + ipComplete(5) + The CMTS has received a DHCP reply message and + forwarded it to the CM. + registrationComplete(6) + The CMTS has sent a Registration Response message to + the CM. + accessDenied(7) + The CMTS has sent a Registration Aborted message + to the CM. + operational(8) + Value 8 is considered reserved and should not be defined + in future revisions of this MIB module to avoid conflict + with documented implementations that support value 8 to + indicate operational state after completing the BPI + initialization process. + registeredBPIInitializing(9) + Baseline Privacy (BPI) is enabled and the CMTS is in the + process of completing BPI initialization. This state + MAY last for a significant length of time if failures + occur during the initialization process. After + completion of BPI initialization, the CMTS will report + registrationComplete(6). + The CMTS only needs to report states it is able to + detect." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 11.2." + ::= { docsIfCmtsCmStatusEntry 9 } + +docsIfCmtsCmStatusUnerroreds OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received without error from this cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.4." + ::= { docsIfCmtsCmStatusEntry 10 } + + + +docsIfCmtsCmStatusCorrecteds OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received with correctable errors from this + cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.4." + ::= { docsIfCmtsCmStatusEntry 11 } + +docsIfCmtsCmStatusUncorrectables OBJECT-TYPE + SYNTAX Counter32 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received with uncorrectable errors from this + cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.4." + ::= { docsIfCmtsCmStatusEntry 12 } + +docsIfCmtsCmStatusSignalNoise OBJECT-TYPE + SYNTAX TenthdB + UNITS "TenthdB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Signal/Noise ratio as perceived for upstream data from + this cable modem. + If the Signal/Noise is unknown, this object returns + a value of zero." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + + + + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 4-1 and 4-2." + ::= { docsIfCmtsCmStatusEntry 13 } + +docsIfCmtsCmStatusMicroreflections OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "-dBc" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total microreflections, including in-channel response + as perceived on this interface, measured in dBc below + the signal level. + This object is not assumed to return an absolutely + accurate value, but it gives a rough indication + of microreflections received on this interface. + It is up to the implementer to provide information + as accurately as possible. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 4-1 and 4-2" + ::= { docsIfCmtsCmStatusEntry 14 } + +docsIfCmtsCmStatusExtUnerroreds OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received without error from this cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.5." + ::= { docsIfCmtsCmStatusEntry 15 } + +docsIfCmtsCmStatusExtCorrecteds OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received with correctable errors from this + cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.5." + ::= { docsIfCmtsCmStatusEntry 16 } + +docsIfCmtsCmStatusExtUncorrectables OBJECT-TYPE + SYNTAX Counter64 + UNITS "codewords" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Codewords received with uncorrectable errors from this + cable modem. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.5." + ::= { docsIfCmtsCmStatusEntry 17 } + +docsIfCmtsCmStatusDocsisRegMode OBJECT-TYPE + SYNTAX DocsisQosVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether the CM has registered using 1.0 + Class of Service or 1.1 Quality of Service." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Annex G." + ::= { docsIfCmtsCmStatusEntry 18 } + +docsIfCmtsCmStatusModulationType OBJECT-TYPE + SYNTAX DocsisUpstreamType + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates modulation type currently used by the CM. Since + this object specifically identifies PHY mode, the shared + type is not permitted. If the upstream channel is + unknown, this object returns a value of zero." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + ::= { docsIfCmtsCmStatusEntry 19 } + +docsIfCmtsCmStatusInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of internet address of + docsIfCmtsCmStatusInetAddress. If the cable modem + internet address is unassigned or unknown, then the + value of this object is unknown(0)." + ::= { docsIfCmtsCmStatusEntry 20 } + +docsIfCmtsCmStatusInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Internet address of this cable modem. If the Cable + Modem has no Internet address assigned, or the Internet + address is unknown, the value of this object is the + zero-length OCTET STRING. If the cable modem has + multiple Internet addresses, this object returns the + Internet address associated with the Cable + (i.e., RF MAC) interface." + ::= { docsIfCmtsCmStatusEntry 21 } + +docsIfCmtsCmStatusValueLastUpdate OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when docsIfCmtsCmStatusValue + was last updated." + ::= { docsIfCmtsCmStatusEntry 22 } + +docsIfCmtsCmStatusHighResolutionTimingOffset OBJECT-TYPE + + + + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A measure of the current round trip time for this CM. + Used for timing of CM upstream transmissions to ensure + synchronized arrivals at the CMTS. Units are in terms + of (6.25 microseconds/(64*256)). Returns zero if the value + is unknown. + This is the high resolution version of object + docsIfCmtsCmStatusTimingOffset, for channels requiring + finer resolution." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Section 6.2.17." + ::= { docsIfCmtsCmStatusEntry 23 } + +-- +-- The CMTS Service Table. +-- + +docsIfCmtsServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of upstream service queues + in a Cable Modem Termination System." + ::= { docsIfCmtsObjects 4 } + +docsIfCmtsServiceEntry OBJECT-TYPE + SYNTAX DocsIfCmtsServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes the attributes of a single upstream bandwidth + service queue. + Entries in this table exist for each ifEntry with an + ifType of docsCableMaclayer(127), and for each service + queue (Service ID) within this MAC layer. + Entries in this table are created with the creation of + individual Service IDs by the MAC layer and removed + when a Service ID is removed." + INDEX { ifIndex, docsIfCmtsServiceId } + ::= { docsIfCmtsServiceTable 1 } + +DocsIfCmtsServiceEntry ::= SEQUENCE { + + + + docsIfCmtsServiceId Integer32, + docsIfCmtsServiceCmStatusIndex Integer32, -- deprecated + docsIfCmtsServiceAdminStatus INTEGER, + docsIfCmtsServiceQosProfile Integer32, + docsIfCmtsServiceCreateTime TimeStamp, + docsIfCmtsServiceInOctets Counter32, + docsIfCmtsServiceInPackets Counter32, + docsIfCmtsServiceNewCmStatusIndex Integer32 + } + +docsIfCmtsServiceId OBJECT-TYPE + SYNTAX Integer32 (1..16383) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifies a service queue for upstream bandwidth. The + attributes of this service queue are shared between the + Cable Modem and the Cable Modem Termination System. + The CMTS allocates upstream bandwidth to this service + queue based on requests from the CM and on the class of + service associated with this queue." + ::= { docsIfCmtsServiceEntry 1 } + +docsIfCmtsServiceCmStatusIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Pointer to an entry in docsIfCmtsCmStatusTable identifying + the cable modem using this Service Queue. If multiple + cable modems are using this Service Queue, the value of + this object is zero. + This object has been deprecated and replaced by + docsIfCmtsServiceNewCmStatusIndex, to fix a mismatch + of the value range with respect to docsIfCmtsCmStatusIndex + (1..2147483647)." + ::= { docsIfCmtsServiceEntry 2 } + +docsIfCmtsServiceAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + destroyed(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows a service class for a particular modem to be + suppressed, (re-)enabled, or deleted altogether." + + + + ::= { docsIfCmtsServiceEntry 3 } + +docsIfCmtsServiceQosProfile OBJECT-TYPE + SYNTAX Integer32 (0..16383) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index in docsIfQosProfileTable describing the quality + of service attributes associated with this particular + service. If no associated docsIfQosProfileTable entry + exists, this object returns a value of zero." + ::= { docsIfCmtsServiceEntry 4 } + +docsIfCmtsServiceCreateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was created." + ::= { docsIfCmtsServiceEntry 5 } + +docsIfCmtsServiceInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative number of Packet Data octets received + on this Service ID. The count does not include the + size of the Cable MAC header. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsServiceEntry 6 } + +docsIfCmtsServiceInPackets OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative number of Packet Data packets received + on this Service ID. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + + + + ::= { docsIfCmtsServiceEntry 7 } + +docsIfCmtsServiceNewCmStatusIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Pointer (via docsIfCmtsCmStatusIndex) to an entry in + docsIfCmtsCmStatusTable identifying the cable modem + using this Service Queue. If multiple cable modems are + using this Service Queue, the value of this object is + zero." + ::= { docsIfCmtsServiceEntry 8 } + +-- +-- The following table provides upstream channel modulation profiles. +-- Entries in this table can be +-- re-used by one or more upstream channels. An upstream channel +-- will have a modulation profile for each value of +-- docsIfModIntervalUsageCode. +-- + +docsIfCmtsModulationTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsModulationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a modulation profile associated with one or more + upstream channels." + ::= { docsIfCmtsObjects 5 } + +docsIfCmtsModulationEntry OBJECT-TYPE + SYNTAX DocsIfCmtsModulationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a modulation profile for an Interval Usage Code + for one or more upstream channels. + Entries in this table are created by the operator. + + Initial default entries MAY be created at system + initialization time, which could report a value of + 'permanent' or 'readOnly' for docsIfCmtsModStorageType. + A CMTS MAY reject the creation of additional Interval + Usage Codes for a modulation profile being defined at + Initialization time. + No individual objects have to be specified in order + to create an entry in this table. + + + + Note that some objects do not have DEFVAL clauses + but do have calculated defaults and need not be specified + during row creation." + INDEX { docsIfCmtsModIndex, docsIfCmtsModIntervalUsageCode} + ::= { docsIfCmtsModulationTable 1 } + +DocsIfCmtsModulationEntry ::= SEQUENCE { + docsIfCmtsModIndex Integer32, + docsIfCmtsModIntervalUsageCode INTEGER, + docsIfCmtsModControl RowStatus, + docsIfCmtsModType INTEGER, + docsIfCmtsModPreambleLen Integer32, + docsIfCmtsModDifferentialEncoding TruthValue, + docsIfCmtsModFECErrorCorrection Integer32, + docsIfCmtsModFECCodewordLength Integer32, + docsIfCmtsModScramblerSeed Integer32, + docsIfCmtsModMaxBurstSize Integer32, + docsIfCmtsModGuardTimeSize Unsigned32, + docsIfCmtsModLastCodewordShortened TruthValue, + docsIfCmtsModScrambler TruthValue, + docsIfCmtsModByteInterleaverDepth Unsigned32, + docsIfCmtsModByteInterleaverBlockSize Unsigned32, + docsIfCmtsModPreambleType INTEGER, + docsIfCmtsModTcmErrorCorrectionOn TruthValue, + docsIfCmtsModScdmaInterleaverStepSize Unsigned32, + docsIfCmtsModScdmaSpreaderEnable TruthValue, + docsIfCmtsModScdmaSubframeCodes Unsigned32, + docsIfCmtsModChannelType DocsisUpstreamType, + docsIfCmtsModStorageType StorageType + } + +docsIfCmtsModIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index into the Channel Modulation table representing + a group of Interval Usage Codes, all associated with the + same channel." + ::= { docsIfCmtsModulationEntry 1 } + +docsIfCmtsModIntervalUsageCode OBJECT-TYPE + SYNTAX INTEGER { + request(1), + requestData(2), + initialRanging(3), + periodicRanging(4), + shortData(5), + + + + longData(6), + advPhyShortData(9), + advPhyLongData(10), + ugs(11) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index into the Channel Modulation table that, when + grouped with other Interval Usage Codes, fully + instantiates all modulation sets for a given upstream + channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-20." + ::= { docsIfCmtsModulationEntry 2 } + +docsIfCmtsModControl OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls and reflects the status of rows in this table. + There is no restriction on the changing of values in this + table while their associated rows are active, with the + exception of: + + 1. If a modulation profile is being referenced by one + or more upstream channels, an attempt to set the value + of docsIfCmtsModChannelType returns an + 'inconsistentValue' error. + + 2. If a modulation profile is being referenced by one + or more upstream channels, an attempt to set + docsIfCmtsModControl to destroy(6) or notInService(2) + returns an 'inconsistentValue' error." + ::= { docsIfCmtsModulationEntry 3 } + +docsIfCmtsModType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + qpsk(2), + qam16(3), + qam8(4), + qam32(5), + qam64(6), + qam128(7) + + + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The modulation type used on this channel. Returns + other(1) if the modulation type is not + qpsk, qam16, qam8, qam32, qam64, or qam128. + Type qam128 is used for SCDMA channels only. + See the reference for the modulation profiles + implied by different modulation types." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { qpsk } + ::= { docsIfCmtsModulationEntry 4 } + +docsIfCmtsModPreambleLen OBJECT-TYPE + SYNTAX Integer32 (0..1536) + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The preamble length for this modulation profile in bits. + Default value is the minimum needed by the implementation + at the CMTS for the given modulation profile." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + ::= { docsIfCmtsModulationEntry 5 } + +docsIfCmtsModDifferentialEncoding OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies whether or not differential encoding is used + on this channel." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { false } + ::= { docsIfCmtsModulationEntry 6 } + +docsIfCmtsModFECErrorCorrection OBJECT-TYPE + SYNTAX Integer32 (0..16) + + + + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of correctable errored bytes (t) used in + forward error correction code. The value of 0 indicates + that no correction is employed. The number of check bytes + appended will be twice this value." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 0 } + ::= { docsIfCmtsModulationEntry 7 } + +docsIfCmtsModFECCodewordLength OBJECT-TYPE + SYNTAX Integer32 (1..255) + UNITS "Bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of data bytes (k) in the forward error + correction codeword. + This object is not used if docsIfCmtsModFECErrorCorrection + is zero." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 32 } + ::= { docsIfCmtsModulationEntry 8 } + +docsIfCmtsModScramblerSeed OBJECT-TYPE + SYNTAX Integer32 (0..32767) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 15-bit seed value for the scrambler polynomial." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + DEFVAL { 0 } + ::= { docsIfCmtsModulationEntry 9 } + +docsIfCmtsModMaxBurstSize OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "mini-slots" + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of mini-slots that can be transmitted + during this channel's burst time. Returns zero if the + burst length is bounded by the allocation MAP rather than + by this profile. + Default value is 0, except for shortData, where it is 8." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + ::= { docsIfCmtsModulationEntry 10 } + +docsIfCmtsModGuardTimeSize OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Symbol-times" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of symbol-times that MUST follow the end of + this channel's burst. Default value is the minimum time + needed by the implementation for this modulation profile." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + ::= { docsIfCmtsModulationEntry 11 } + +docsIfCmtsModLastCodewordShortened OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the last FEC codeword is truncated." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { true } + ::= { docsIfCmtsModulationEntry 12 } + +docsIfCmtsModScrambler OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the scrambler is employed." + + + + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { false } + ::= { docsIfCmtsModulationEntry 13 } + +docsIfCmtsModByteInterleaverDepth OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "ATDMA Byte Interleaver Depth (Ir). This object returns 1 + for non-ATDMA profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 1 } + ::= { docsIfCmtsModulationEntry 14 } + +docsIfCmtsModByteInterleaverBlockSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "ATDMA Byte Interleaver Block size (Br). This object + returns zero for non-ATDMA profiles " + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 18 } + ::= { docsIfCmtsModulationEntry 15 } + +docsIfCmtsModPreambleType OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + qpsk0(1), + qpsk1(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Preamble type for DOCSIS 2.0 bursts. The value + 'unknown(0)' represents a row entry consisting only of + DOCSIS 1.x bursts" + REFERENCE + + + + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { qpsk0 } + ::= { docsIfCmtsModulationEntry 16 } + +docsIfCmtsModTcmErrorCorrectionOn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Trellis Code Modulation (TCM) On/Off. This value returns + false for non-S-CDMA profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { false } + ::= { docsIfCmtsModulationEntry 17 } + +docsIfCmtsModScdmaInterleaverStepSize OBJECT-TYPE + SYNTAX Unsigned32 (0 | 1..32) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " S-CDMA Interleaver step size. This value returns zero + for non-S-CDMA profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + DEFVAL { 1 } + ::= { docsIfCmtsModulationEntry 18 } + +docsIfCmtsModScdmaSpreaderEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " S-CDMA spreader. This value returns false for non-S-CDMA + profiles. Default value for IUC 3 and 4 is OFF; for + all other IUCs it is ON." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Tables 6-7, and 8-19." + ::= { docsIfCmtsModulationEntry 19 } + + + + +docsIfCmtsModScdmaSubframeCodes OBJECT-TYPE + SYNTAX Unsigned32 (0 | 1..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " S-CDMA sub-frame size. This value returns zero + for non-S-CDMA profiles." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 6-7, and 8-19." + DEFVAL { 1 } + ::= { docsIfCmtsModulationEntry 20 } + +docsIfCmtsModChannelType OBJECT-TYPE + SYNTAX DocsisUpstreamType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Describes the modulation channel type for this modulation + entry. + All the active entries in a modulation profile (that is all + active entries that share a common docsIfCmtsModIndex) + MUST have the same value of docsIfCmtsModChannelType." + REFERENCE + "Data-Over-Cable Service Interface Specifications: Radio + Frequency Interface Specification SP-RFIv2.0-I10-051209, + Table 8-19." + DEFVAL { tdma } + ::= { docsIfCmtsModulationEntry 21 } + +docsIfCmtsModStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Entries with this object set to permanent(4) + do not require write operations for read-write + objects." + DEFVAL { nonVolatile } + ::= { docsIfCmtsModulationEntry 22 } + +docsIfCmtsQosProfilePermissions OBJECT-TYPE + SYNTAX BITS { + createByManagement(0), + updateByManagement(1), + createByModems(2) + + + + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies permitted methods of creating + entries in docsIfQosProfileTable. + createByManagement(0) is set if entries can be created + using SNMP. updateByManagement(1) is set if updating + entries using SNMP is permitted. createByModems(2) + is set if entries can be created based on information + in REG-REQ MAC messages received from cable modems. + Information in this object is only applicable if + docsIfQosProfileTable is implemented as read-create. + Otherwise, this object is implemented as read-only + and returns createByModems(2). + Either createByManagement(0) or updateByManagement(1) + MUST be set when writing to this object. + Note that BITS objects are encoded most significant bit + first. For example, if bit 2 is set, the value of this + object is the octet string '20'H." + ::= { docsIfCmtsObjects 6 } + +docsIfCmtsMacToCmTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsMacToCmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a table to provide a quick access index into the + docsIfCmtsCmStatusTable. There is exactly one row in this + table for each row in the docsIfCmtsCmStatusTable. In + general, the management station SHOULD use this table only + to get a pointer into the docsIfCmtsCmStatusTable (which + corresponds to the CM's RF interface MAC address) and + SHOULD not iterate (e.g., GetNext through) this table." + ::= { docsIfCmtsObjects 7 } + +docsIfCmtsMacToCmEntry OBJECT-TYPE + SYNTAX DocsIfCmtsMacToCmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the docsIfCmtsMacToCmTable. + An entry in this table exists for each cable modem + that is connected to the CMTS implementing this table." + INDEX { docsIfCmtsCmMac } + ::= {docsIfCmtsMacToCmTable 1 } + +DocsIfCmtsMacToCmEntry ::= SEQUENCE { + + + + docsIfCmtsCmMac MacAddress, + docsIfCmtsCmPtr Integer32 + } + +docsIfCmtsCmMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RF side MAC address for the referenced CM (e.g., the + interface on the CM that has docsCableMacLayer(127) as + its ifType)." + ::= { docsIfCmtsMacToCmEntry 1 } + +docsIfCmtsCmPtr OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An row index into docsIfCmtsCmStatusTable. When queried + with the correct instance value (e.g., a CM's MAC address), + returns the index in docsIfCmtsCmStatusTable that + represents that CM." + ::= { docsIfCmtsMacToCmEntry 2 } + +-- The following independent object and associated table provide +-- operators with a mechanism to evaluate the load/utilization of +-- both upstream and downstream physical channels. This information +-- may be used for capacity planning and incident analysis and may +-- be particularly helpful in provisioning of high value QOS. +-- +-- Utilization is expressed as an index representing the calculated +-- percentage utilization of the upstream or downstream channel in +-- the most recent sampling interval (i.e., utilization interval). +-- Refer to the DESCRIPTION field of the +-- docsIfCmtsChannelUtUtilization object for definitions and +-- calculation details. + +docsIfCmtsChannelUtilizationInterval OBJECT-TYPE + SYNTAX Integer32 (0..86400) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time interval in seconds over which the channel + utilization index is calculated. All upstream/downstream + channels use the same + docsIfCmtsChannelUtilizationInterval. + + + + Setting a value of zero disables utilization reporting. + A channel utilization index is calculated over a fixed + window applying to the most recent + docsIfCmtsChannelUtilizationInterval. It would therefore + be prudent to use a relatively short + docsIfCmtsChannelUtilizationInterval. + It is a vendor decision whether to reset the timer when + docsIfCmtsChannelUtilizationInterval is changed during a + utilization sampling period." + ::= { docsIfCmtsObjects 8 } + +docsIfCmtsChannelUtilizationTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsChannelUtilizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Reports utilization statistics for attached upstream and + downstream physical channels." + ::= { docsIfCmtsObjects 9 } + +docsIfCmtsChannelUtilizationEntry OBJECT-TYPE + SYNTAX DocsIfCmtsChannelUtilizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Utilization statistics for a single upstream or downstream + physical channel. An entry exists in this table for each + ifEntry with an ifType equal to + docsCableDownstream (128) + or docsCableUpstream (129)." + INDEX { ifIndex, docsIfCmtsChannelUtIfType, + docsIfCmtsChannelUtId } + ::= { docsIfCmtsChannelUtilizationTable 1 } + +DocsIfCmtsChannelUtilizationEntry ::= SEQUENCE { + docsIfCmtsChannelUtIfType IANAifType, + docsIfCmtsChannelUtId Integer32, + docsIfCmtsChannelUtUtilization Integer32 + } + +docsIfCmtsChannelUtIfType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The secondary index into this table. Indicates the IANA + interface type associated with this physical channel. + Only docsCableDownstream (128) and + + + + docsCableUpstream (129) are valid." + ::= { docsIfCmtsChannelUtilizationEntry 1 } + +docsIfCmtsChannelUtId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The tertiary index into this table. Indicates the CMTS + identifier for this physical channel." + ::= { docsIfCmtsChannelUtilizationEntry 2 } + +docsIfCmtsChannelUtUtilization OBJECT-TYPE + SYNTAX Integer32 (0..100) + UNITS "percent" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The calculated and truncated utilization index for this + physical upstream or downstream channel, accurate as of + the most recent docsIfCmtsChannelUtilizationInterval. + + Upstream Channel Utilization Index: + + The upstream channel utilization index is expressed as a + percentage of mini-slots utilized on the physical channel, + regardless of burst type. For an Initial Maintenance + region, the mini-slots for the complete region are + considered utilized if the CMTS received an upstream + burst within the region from any CM on the physical + channel. For contention REQ and REQ/DATA regions, the + mini-slots for a transmission opportunity within the + region are considered utilized if the CMTS received an + upstream burst within the opportunity from any CM on the + physical channel. For all other regions, utilized + mini-slots are those in which the CMTS granted + bandwidth to any unicast SID on the physical channel. + + For an upstream interface that has multiple logical + upstream channels enabled, the utilization index is a + weighted sum of utilization indices for the logical + channels. The weight for each utilization index is the + percentage of upstream mini-slots allocated for the + corresponding logical channel. + Example: + If 75% of bandwidth is allocated to the first logical + channel and 25% to the second, and the utilization + indices for each are 60 and 40, respectively, the + + + + utilization index for the upstream physical channel is + (60 * 0.75) + (40 * 0.25) = 55. This figure + applies to the most recent utilization interval. + + Downstream Channel Utilization Index: + + The downstream channel utilization index is a percentage + expressing the ratio between bytes used to transmit data + versus the total number of bytes transmitted in the raw + bandwidth of the MPEG channel. As with the upstream + utilization index, the calculated value represents + the most recent utilization interval. + Formula: + Downstream utilization index = + (100 * (data bytes / raw bytes)) + + Definitions: + Data bytes: Number of bytes transmitted as data in the + docsIfCmtsChannelUtilizationInterval. + Identical to docsIfCmtsDownChannelCtrUsed + Bytes measured over the utilization + interval. + Raw bandwidth: Total number of bytes available for + transmitting data, not including bytes + used for headers and other overhead. + Raw bytes: (raw bandwidth * + docsIfCmtsChannelUtilizationInterval). + Identical to docsIfCmtsDownChannelCtrTotal + Bytes measured over the utilization + interval." + ::= { docsIfCmtsChannelUtilizationEntry 3 } + +-- The following table provides operators with input data +-- appropriate for calculating downstream channel utilization. +-- Operators may use the docsIfCmtsChannelUtilizationTable or +-- perform their own polling of the +-- docsIfCmtsDownChannelCounterTable objects to characterize +-- their downstream channel usage. The 32-bit counter objects are +-- included to provide backward compatibility with SNMPv1 managers, +-- which cannot access 64-bit counter objects. + +docsIfCmtsDownChannelCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsDownChannelCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is implemented at the CMTS to collect + downstream channel statistics for utilization + + + + calculations." + ::= { docsIfCmtsObjects 10 } + +docsIfCmtsDownChannelCounterEntry OBJECT-TYPE + SYNTAX DocsIfCmtsDownChannelCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry provides a list of traffic counters for a single + downstream channel. + An entry in this table exists for each ifEntry with an + ifType of docsCableDownstream(128)." + INDEX { ifIndex } + ::= { docsIfCmtsDownChannelCounterTable 1 } + +DocsIfCmtsDownChannelCounterEntry ::= SEQUENCE { + docsIfCmtsDownChnlCtrId Integer32, + docsIfCmtsDownChnlCtrTotalBytes Counter32, + docsIfCmtsDownChnlCtrUsedBytes Counter32, + docsIfCmtsDownChnlCtrExtTotalBytes Counter64, + docsIfCmtsDownChnlCtrExtUsedBytes Counter64 + } + +docsIfCmtsDownChnlCtrId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Cable Modem Termination System identification + of the downstream channel within this particular MAC + interface. If the interface is down, the object returns + the most current value. If the downstream channel ID is + unknown, this object returns a value of 0." + ::= { docsIfCmtsDownChannelCounterEntry 1 } + +docsIfCmtsDownChnlCtrTotalBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CMTS, the total number of bytes in the Payload + portion of MPEG Packets (i.e., not including MPEG header + or pointer_field) transported by this downstream channel. + This is the 32-bit version of + docsIfCmtsDownChnlCtrExtTotalBytes, included to provide + back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + + + + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsDownChannelCounterEntry 2 } + +docsIfCmtsDownChnlCtrUsedBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CMTS, the total number of DOCSIS data bytes + transported by this downstream channel. + The number of data bytes is defined as the total number + of bytes transported in DOCSIS payloads minus the number + of stuff bytes transported in DOCSIS payloads. + This is the 32-bit version of + docsIfCmtsDownChnlCtrExtUsedBytes, included to provide + back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsDownChannelCounterEntry 3 } + +docsIfCmtsDownChnlCtrExtTotalBytes OBJECT-TYPE + SYNTAX Counter64 + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At the CMTS, the total number of bytes in the Payload + portion of MPEG Packets (i.e., not including MPEG header + or pointer_field) transported by this downstream + channel. + This is the 64-bit version of + docsIfCmtsDownChnlCtrTotalBytes and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsDownChannelCounterEntry 4 } + +docsIfCmtsDownChnlCtrExtUsedBytes OBJECT-TYPE + SYNTAX Counter64 + UNITS "Bytes" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "At the CMTS, the total number of DOCSIS data bytes + transported by this downstream channel. The number + of data bytes is defined as the total number of bytes + transported in DOCSIS payloads minus the number of + stuff bytes transported in DOCSIS payloads. + This is the 64-bit version of + docsIfCmtsDownChnlCtrUsedBytes and will not be accessible + to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsDownChannelCounterEntry 5 } + +-- The following table provides operators with input data appropriate +-- for calculating upstream channel utilization, and for determining +-- the traffic characteristics of upstream channels. Operators may +-- use the docsIfCmtsChannelUtilizationTable or perform their own +-- polling of the docsIfCmtsUpChannelCounterTable objects for +-- utilization determination. +-- The first four 32 and 64 objects in this table are mandatory. +-- Vendors may choose to implement the remaining optional objects to +-- provide operators with finer characterization of upstream channel +-- traffic patterns. The 32-bit counter objects are included to +-- provide backward compatibility with SNMPv1 managers, which cannot +-- access 64-bit counter objects. + +docsIfCmtsUpChannelCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF DocsIfCmtsUpChannelCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is implemented at the CMTS to provide upstream + channel statistics appropriate for channel utilization + calculations." + ::= { docsIfCmtsObjects 11 } + +docsIfCmtsUpChannelCounterEntry OBJECT-TYPE + SYNTAX DocsIfCmtsUpChannelCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "List of traffic statistics for a single upstream channel. + For DOCSIS 2.0 CMTSs, an entry in this table + exists for each ifEntry with an ifType of + docsCableUpstreamChannel (205). + + + + For DOCSIS 1.x CMTSs, an entry in this table + exists for each ifEntry with an ifType of + docsCableUpstream (129)." + INDEX { ifIndex } + ::= { docsIfCmtsUpChannelCounterTable 1 } + +DocsIfCmtsUpChannelCounterEntry ::= SEQUENCE { + docsIfCmtsUpChnlCtrId Integer32, + docsIfCmtsUpChnlCtrTotalMslots Counter32, + docsIfCmtsUpChnlCtrUcastGrantedMslots Counter32, + docsIfCmtsUpChnlCtrTotalCntnMslots Counter32, + docsIfCmtsUpChnlCtrUsedCntnMslots Counter32, + docsIfCmtsUpChnlCtrExtTotalMslots Counter64, + docsIfCmtsUpChnlCtrExtUcastGrantedMslots Counter64, + docsIfCmtsUpChnlCtrExtTotalCntnMslots Counter64, + docsIfCmtsUpChnlCtrExtUsedCntnMslots Counter64, + docsIfCmtsUpChnlCtrCollCntnMslots Counter32, + docsIfCmtsUpChnlCtrTotalCntnReqMslots Counter32, + docsIfCmtsUpChnlCtrUsedCntnReqMslots Counter32, + docsIfCmtsUpChnlCtrCollCntnReqMslots Counter32, + docsIfCmtsUpChnlCtrTotalCntnReqDataMslots Counter32, + docsIfCmtsUpChnlCtrUsedCntnReqDataMslots Counter32, + docsIfCmtsUpChnlCtrCollCntnReqDataMslots Counter32, + docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots Counter32, + docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots Counter32, + docsIfCmtsUpChnlCtrCollCntnInitMaintMslots Counter32, + docsIfCmtsUpChnlCtrExtCollCntnMslots Counter64, + docsIfCmtsUpChnlCtrExtTotalCntnReqMslots Counter64, + docsIfCmtsUpChnlCtrExtUsedCntnReqMslots Counter64, + docsIfCmtsUpChnlCtrExtCollCntnReqMslots Counter64, + docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots Counter64, + docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots Counter64, + docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots Counter64, + docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots Counter64, + docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots Counter64, + docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots Counter64 + } + +docsIfCmtsUpChnlCtrId OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The CMTS identification of the upstream channel." + ::= { docsIfCmtsUpChannelCounterEntry 1 } + +docsIfCmtsUpChnlCtrTotalMslots OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of all mini-slots + defined for this upstream logical channel. This count + includes all IUCs and SIDs, even those allocated to the + NULL SID for a 2.0 logical channel that is inactive. This + is the 32-bit version of docsIfCmtsUpChnlCtrExtTotalMslots + and is included for back compatibility with SNMPv1 + managers. Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 2 } + +docsIfCmtsUpChnlCtrUcastGrantedMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of unicast + granted mini-slots on the upstream logical channel, + regardless of burst type. Unicast granted mini-slots are + those in which the CMTS assigned bandwidth to any unicast + SID on the logical channel. However, this object does not + include minis-lots for reserved IUCs, or grants to SIDs + designated as meaning 'no CM'. This is the 32-bit version + of docsIfCmtsUpChnlCtrExtUcastGrantedMslots, and is + included for back compatibility with SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 3 } + +docsIfCmtsUpChnlCtrTotalCntnMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + mini-slots defined for this upstream logical channel. This + count includes all mini-slots assigned to a broadcast or + + + + multicast SID on the logical channel. This is the 32-bit + version of docsIfCmtsUpChnlCtrExtTotalCntnMslots, and is + included for back compatibility with SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 4 } + +docsIfCmtsUpChnlCtrUsedCntnMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + mini-slots utilized on the upstream logical channel. For + contention regions, utilized mini-slots are those in which + the CMTS correctly received an upstream burst from any CM + on the upstream logical channel. This is the 32-bit + version of docsIfCmtsUpChnlCtrExtUsedCntnMslots and is + included for back compatibility with SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 5 } + +docsIfCmtsUpChnlCtrExtTotalMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of all mini-slots + defined for this upstream logical channel. This count + includes all IUCs and SIDs, even those allocated to the + NULL SID for a 2.0 logical channel that is inactive. This + is the 64-bit version of docsIfCmtsUpChnlCtrTotalMslots + and will not be accessible to SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 6 } + + + +docsIfCmtsUpChnlCtrExtUcastGrantedMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of unicast + granted mini-slots on the upstream logical channel, + regardless of burst type. Unicast granted mini-slots are + those in which the CMTS assigned bandwidth to any unicast + SID on the logical channel. However, this object does not + include mini-slots for reserved IUCs, or grants to SIDs + designated as meaning 'no CM'. This is the 64-bit version + of docsIfCmtsUpChnlCtrUcastGrantedMslots and will not be + accessible to SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 7 } + +docsIfCmtsUpChnlCtrExtTotalCntnMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + mini-slots defined for this upstream logical channel. This + count includes all mini-slots assigned to a broadcast or + multicast SID on the logical channel. This is the 64-bit + version of docsIfCmtsUpChnlCtrTotalCntnMslots and will + not be accessible to SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 8 } + +docsIfCmtsUpChnlCtrExtUsedCntnMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + + + + mini-slots utilized on the upstream logical channel. For + contention regions, utilized mini-slots are those in which + the CMTS correctly received an upstream burst from any CM + on the upstream logical channel. This is the 64-bit + version of docsIfCmtsUpChnlCtrUsedCntnMslots and will not + be accessible to SNMPv1 managers. + Support for this object is mandatory. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 9 } + +docsIfCmtsUpChnlCtrCollCntnMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + mini-slots subjected to collisions on the upstream logical + channel. For contention regions, these are the mini-slots + applicable to bursts that the CMTS detected but could not + correctly receive. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtCollCntnMslots and is included for + back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 10 } + +docsIfCmtsUpChnlCtrTotalCntnReqMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC1 + assigned to a broadcast or multicast SID on the logical + channel. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtTotalCntnReqMslots and is included + for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 11 } + +docsIfCmtsUpChnlCtrUsedCntnReqMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots utilized on this upstream logical + channel. This count includes all contention mini-slots for + IUC1 applicable to bursts that the CMTS correctly + received. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtUsedCntnReqMslots and is included + for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 12 } + +docsIfCmtsUpChnlCtrCollCntnReqMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots subjected to collisions on this upstream + logical channel. This includes all contention mini-slots + for IUC1 applicable to bursts that the CMTS detected but + could not correctly receive. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtCollCntnReqMslots and is included + for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 13 } + +docsIfCmtsUpChnlCtrTotalCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + + + + request data mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC2 + assigned to a broadcast or multicast SID on the logical + channel. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots and is + included for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 14 } + +docsIfCmtsUpChnlCtrUsedCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" +MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots utilized on this upstream logical + channel. This includes all contention mini-slots for IUC2 + applicable to bursts that the CMTS correctly received. + This is the 32-bit version of + docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots and is + included for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 15 } + +docsIfCmtsUpChnlCtrCollCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots subjected to collisions on this + upstream logical channel. This includes all contention + mini-slots for IUC2 applicable to bursts that the CMTS + detected, but could not correctly receive. This is the + 32-bit version of + docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots and is + included for back compatibility with SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 16 } + +docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + initial maintenance mini-slots defined for this upstream + logical channel. This includes all mini-slots for IUC3 + assigned to a broadcast or multicast SID on the logical + channel. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots + and is included for back compatibility with SNMPv1 + managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 17 } + +docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + initial maintenance mini-slots utilized on this upstream + logical channel. This includes all contention mini-slots + for IUC3 applicable to bursts that the CMTS correctly + received. This is the 32-bit version of + docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots + and is included for back compatibility with SNMPv1 + managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 18 } + +docsIfCmtsUpChnlCtrCollCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter32 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Current count, from CMTS initialization, of contention + initial maintenance mini-slots subjected to collisions on + this upstream logical channel. This includes all + contention mini-slots for IUC3 applicable to bursts that + the CMTS detected, but could not correctly receive. + This is the 32-bit version of + docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots + and is included for back compatibility with SNMPv1 + managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 19 } + +docsIfCmtsUpChnlCtrExtCollCntnMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of collision + contention mini-slots on the upstream logical channel. + For contention regions, these are the mini-slots applicable + to bursts that the CMTS detected, but could not correctly + receive. This is the 64-bit version of + docsIfCmtsUpChnlCtrCollCntnMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 20 } + +docsIfCmtsUpChnlCtrExtTotalCntnReqMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC1 + assigned to a broadcast or multicast SID on the logical + channel. This is the 64-bit version of + docsIfCmtsUpChnlCtrTotalCntnReqMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + + + + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 21 } + +docsIfCmtsUpChnlCtrExtUsedCntnReqMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots utilized on this upstream logical + channel. This count includes all contention mini-slots for + IUC1 applicable to bursts that the CMTS correctly + received. This is the 64-bit version of + docsIfCmtsUpChnlCtrUsedCntnReqMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 22 } + +docsIfCmtsUpChnlCtrExtCollCntnReqMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request mini-slots subjected to collisions on this upstream + logical channel. This includes all contention mini-slots + for IUC1 applicable to bursts that the CMTS detected, + but could not correctly receive. This is the 64-bit + version of docsIfCmtsUpChnlCtrCollCntnReqMslots and will + not be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 23 } + +docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC2 + assigned to a broadcast or multicast SID on the logical + channel. This is the 64-bit version of + docsIfCmtsUpChnlCtrTotalCntnReqDataMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 24 } + +docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots utilized on this upstream logical + channel. This includes all contention mini-slots for IUC2 + applicable to bursts that the CMTS correctly received. + This is the 64-bit version of + docsIfCmtsUpChnlCtrUsedCntnReqDataMslots and will not be + accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 25 } + +docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of contention + request data mini-slots subjected to collisions on this + upstream logical channel. This includes all contention + mini-slots for IUC2 applicable to bursts that the CMTS + detected, but could not correctly receive. This is the + 64-bit version of + docsIfCmtsUpChnlCtrCollCntnReqDataMslots + and will not be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + + + + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 26 } + +docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of initial + maintenance mini-slots defined for this upstream logical + channel. This count includes all mini-slots for IUC3 + assigned to a broadcast or multicast SID on the logical + channel. This is the 64-bit version of + docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots + and will not be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 27 } + +docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current count, from CMTS initialization, of initial + maintenance mini-slots utilized on this upstream logical + channel. This includes all contention mini-slots for IUC3 + applicable to bursts that the CMTS correctly received. + This is the 64-bit version of + docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots + and will not be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 28 } + +docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots OBJECT-TYPE + SYNTAX Counter64 + UNITS "mini-slots" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Current count, from CMTS initialization, of contention + initial maintenance mini-slots subjected to collisions on + this upstream logical channel. This includes all + contention mini-slots for IUC3 applicable to bursts that + the CMTS detected, but could not correctly receive. + This is the 64-bit version of + docsIfCmtsUpChnlCtrCollCntnInitMaintMslots and will not + be accessible to SNMPv1 managers. + Discontinuities in the value of this counter can occur + at reinitialization of the managed system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime for the associated ifIndex." + ::= { docsIfCmtsUpChannelCounterEntry 29 } + +-- +-- notification group is for future extension. +-- + +docsIfNotification OBJECT IDENTIFIER ::= { docsIfMib 2 } + +-- +-- MIB Compliance statements. +-- + +-- +-- Conformance definitions +-- + +docsIfConformance OBJECT IDENTIFIER ::= { docsIfMib 3 } +docsIfCompliances OBJECT IDENTIFIER ::= { docsIfConformance 1 } +docsIfGroups OBJECT IDENTIFIER ::= { docsIfConformance 2 } + +docsIfBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for devices that implement + DOCSIS 1.x compliant Radio Frequency Interfaces." + +MODULE -- docsIfMib + +-- unconditionally mandatory groups +MANDATORY-GROUPS { + docsIfBasicGroup + } + +-- conditionally mandatory group +GROUP docsIfCmGroup + + + + DESCRIPTION + "This group is implemented only in cable modems, not in + cable modem termination systems." + +-- conditionally mandatory group +GROUP docsIfCmtsGroup + DESCRIPTION + "This group is implemented only in cable modem termination + systems, not in cable modems." + +OBJECT docsIfDownChannelFrequency + WRITE-SYNTAX Integer32 (54000000..860000000) + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems. The values above are + appropriate for a cable plant using a Sub-Split channel + plan. If DOCSIS is extended to cover other types of + channel plans (and frequency allocations), this object + will be modified accordingly." + +OBJECT docsIfDownChannelWidth + WRITE-SYNTAX Integer32 (6000000) + MIN-ACCESS read-only + DESCRIPTION + "It is important to implement this object as read-only. + In cable modems, this object is always implemented as + read-only. The above value is appropriate for cable + plants running under NTSC (National Television + Standards Committee) standards. If DOCSIS is extended to + work with other standards (e.g., European standards), this + object will be modified accordingly." + +OBJECT docsIfDownChannelModulation + WRITE-SYNTAX INTEGER { + qam64 (3), + qam256 (4) + } + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfDownChannelInterleave + WRITE-SYNTAX INTEGER { + taps8Increment16(3), + taps16Increment8(4), + taps32Increment4(5), + + + + taps64Increment2(6), + taps128Increment1(7) + } + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfDownChannelPower + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelFrequency + WRITE-SYNTAX Integer32 (5000000..42000000) + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems. The values above are + appropriate for a cable plant using a Sub-Split channel + plan. If DOCSIS is extended to cover other types of + channel plans (and frequency allocations), this object + will be modified accordingly." + +OBJECT docsIfUpChannelWidth + WRITE-SYNTAX Integer32 (200000..3200000) + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems. The above value is appropriate + for cable plants running under NTSC (National Television + Standards Committee) standards. If DOCSIS is extended to + work with other standards (e.g., European standards), this + object will be modified accordingly." + +OBJECT docsIfUpChannelModulationProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelSlotSize + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + + + +OBJECT docsIfUpChannelRangingBackoffStart + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelRangingBackoffEnd + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelTxBackoffStart + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelTxBackoffEnd + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfQosProfPriority + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxUpBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfGuarUpBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxDownBandwidth + MIN-ACCESS read-only + DESCRIPTION + + + + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxTxBurst + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfBaselinePrivacy + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfStatus + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfCmtsServiceAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsSyncInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsUcdInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsInsertInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsInvitedRangingAttempts + MIN-ACCESS read-only + DESCRIPTION + + + + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsQosProfilePermissions + WRITE-SYNTAX BITS { + createByManagement(0), + updateByManagement(1) + } + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsModType + WRITE-SYNTAX INTEGER { + qpsk (2), + qam16 (3) + } + DESCRIPTION + "A management station MAY only set 16QAM or QPSK modulation, + but others might be possible, based on device + configuration." + +OBJECT docsIfCmtsModPreambleLen + SYNTAX Integer32 (0..1024) + DESCRIPTION + "The range of the values for this MODULE-COMPLIANCE + is 0..1024." + +OBJECT docsIfCmtsModFECErrorCorrection + SYNTAX Integer32 (0..10) + DESCRIPTION + "The range of the values for this MODULE-COMPLIANCE + is 0..10." + + ::= { docsIfCompliances 1 } + +docsIfBasicComplianceV2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for devices that implement + DOCSIS 2.0 Radio Frequency Interfaces." + +MODULE -- docsIfMib + +-- unconditionally mandatory groups +MANDATORY-GROUPS { + docsIfBasicGroupV2 + } + + + + +-- conditionally mandatory group +GROUP docsIfCmGroupV2 + DESCRIPTION + "This group is implemented only in cable modems, not in + cable modem termination systems." + +-- conditionally mandatory group +GROUP docsIfCmtsGroupV2 + DESCRIPTION + "This group is implemented only in cable modem termination + systems, not in cable modems." + + +OBJECT docsIfDownChannelFrequency + WRITE-SYNTAX Integer32 (47000000..862000000) + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems. + A range of 54MHz to 860MHz is appropriate for a cable + plant using a North American Sub-Split channel plan. + The spectrum range has been expanded to accommodate + a lower edge of 47MHz and an upper edge of 862MHz + for some European channel plans. + If DOCSIS is extended to cover other types of channel + plans (and frequency allocations), this object will be + modified accordingly." + +OBJECT docsIfDownChannelWidth + WRITE-SYNTAX Integer32 (6000000 | 8000000) + MIN-ACCESS read-only + DESCRIPTION + "It is important to implement this object as read-only. + In cable modems, this object is always implemented as + read-only. The value of 6 MHz is appropriate for cable + plants running under NTSC (National Television + Standards Committee) standards. The value of 8 MHz is + appropriate for cable plants running under ETSI + standards. For other regional standards, this + object will be modified accordingly." + +OBJECT docsIfDownChannelModulation + WRITE-SYNTAX INTEGER { + qam64 (3), + qam256 (4) + } + MIN-ACCESS read-only + DESCRIPTION + + + + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfDownChannelInterleave + WRITE-SYNTAX INTEGER { + taps8Increment16(3), + taps16Increment8(4), + taps32Increment4(5), + taps64Increment2(6), + taps128Increment1(7), + taps12increment17(8) + } + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfDownChannelPower + MIN-ACCESS read-only + DESCRIPTION + "Read-write in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelFrequency + WRITE-SYNTAX Integer32 (5000000..65000000) + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems. + A range of 5MHz to 42MHz is appropriate for a cable + plant using a North American Sub-Split channel plan. + The spectrum range has been expanded to accommodate + an upper edge of 65MHz for some European channel plans. + If DOCSIS is extended to cover other types of channel + plans (and frequency allocations), this object will + be modified accordingly." + +OBJECT docsIfUpChannelWidth + WRITE-SYNTAX Integer32 (200000..6400000) + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems, + read-only in cable modems. The above value is appropriate + for cable plants running under NTSC (National Television + Standards Committee) standards. If DOCSIS is extended to + work with other standards (e.g., European standards), this + object will be modified accordingly." + + + + +OBJECT docsIfUpChannelModulationProfile + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelSlotSize + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfUpChannelRangingBackoffStart + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelRangingBackoffEnd + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelTxBackoffStart + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelTxBackoffEnd + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelScdmaActiveCodes + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems. + The number of active codes when SCDMA is in use MUST range + from 64 to 128 and MUST be a non-Prime value. + Providing this range allows for the following features + and capabilities: + 1) Power management in S-CDMA spreader-on frames + (with a 3 dB spread). + + + + 2) Avoidance of code 0. + 3) Flexible mini-slot sizes with and without the use of + code 0." + +OBJECT docsIfUpChannelScdmaCodesPerSlot + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelScdmaFrameSize + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelScdmaHoppingSeed + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelCloneFrom + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelUpdate + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + +OBJECT docsIfUpChannelStatus + MIN-ACCESS read-only + DESCRIPTION + "Read-create in Cable Modem Termination Systems; + read-only in Cable Modems. + Entries associated to physical interfaces only support + the read-only value 'active'." + + +OBJECT docsIfUpChannelPreEqEnable + MIN-ACCESS read-only + DESCRIPTION + "Read-create in cable modem termination systems; + read-only in cable modems." + + + +OBJECT docsIfQosProfPriority + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxUpBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfGuarUpBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxDownBandwidth + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfBaselinePrivacy + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfStatus + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + +OBJECT docsIfQosProfMaxTransmitBurst + MIN-ACCESS read-only + DESCRIPTION + "This object is always read-only in cable modems. + It is compliant to implement this object as read-only + in cable modem termination systems." + + + +OBJECT docsIfCmRangingTimeout + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmStatusModulationType + SYNTAX INTEGER { + unknown(0), + tdma(1), + atdma(2), + scdma(3) + } + DESCRIPTION + "CM does not use both modulation burst profiles of a + 'tdmAndAtdma' ChannelType; therefore, 'tdmAndAtdma'is + not supported." + +OBJECT docsIfCmtsServiceAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsSyncInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsUcdInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsInsertInterval + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsInvitedRangingAttempts + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsQosProfilePermissions + WRITE-SYNTAX BITS { + createByManagement(0), + updateByManagement(1) + } + MIN-ACCESS read-only + + + + DESCRIPTION + "It is compliant to implement this object as read-only." + +OBJECT docsIfCmtsModType + WRITE-SYNTAX INTEGER { + qpsk(2), + qam16(3), + qam64(6) + } + DESCRIPTION + "A management station MAY only set 64QAM, 16QAM, or QPSK + modulation for Time or Code division Multiple Access, + but others might be possible based on device + configuration." + +OBJECT docsIfCmtsCmStatusModulationType + SYNTAX INTEGER { + unknown(0), + tdma(1), + atdma(2), + scdma(3) + } + DESCRIPTION + "CM does not use both modulation burst profiles of a + 'tdmAndAtdma' ChannelType; therefore, 'tdmAndAtdma'is + not supported." + + ::= { docsIfCompliances 2 } + +docsIfBasicGroup OBJECT-GROUP + OBJECTS { + docsIfDownChannelId, + docsIfDownChannelFrequency, + docsIfDownChannelWidth, + docsIfDownChannelModulation, + docsIfDownChannelInterleave, + docsIfDownChannelPower, + docsIfUpChannelId, + docsIfUpChannelFrequency, + docsIfUpChannelWidth, + docsIfUpChannelModulationProfile, + docsIfUpChannelSlotSize, + docsIfUpChannelTxTimingOffset, + docsIfUpChannelRangingBackoffStart, + docsIfUpChannelRangingBackoffEnd, + docsIfUpChannelTxBackoffStart, + docsIfUpChannelTxBackoffEnd, + docsIfQosProfPriority, + + + + docsIfQosProfMaxUpBandwidth, + docsIfQosProfGuarUpBandwidth, + docsIfQosProfMaxDownBandwidth, + docsIfQosProfMaxTxBurst, + docsIfQosProfBaselinePrivacy, + docsIfQosProfStatus, + docsIfSigQIncludesContention, + docsIfSigQUnerroreds, + docsIfSigQCorrecteds, + docsIfSigQUncorrectables, + docsIfSigQSignalNoise, + docsIfSigQMicroreflections, + docsIfSigQEqualizationData + } + STATUS deprecated + DESCRIPTION + "Group of objects implemented in both cable modems and + cable modem termination systems." + ::= { docsIfGroups 1 } + +docsIfCmGroup OBJECT-GROUP + OBJECTS { + docsIfCmCmtsAddress, + docsIfCmCapabilities, + docsIfCmRangingTimeout, + docsIfCmStatusValue, + docsIfCmStatusCode, + docsIfCmStatusTxPower, + docsIfCmStatusResets, + docsIfCmStatusLostSyncs, + docsIfCmStatusInvalidMaps, + docsIfCmStatusInvalidUcds, + docsIfCmStatusInvalidRangingResponses, + docsIfCmStatusInvalidRegistrationResponses, + docsIfCmStatusT1Timeouts, + docsIfCmStatusT2Timeouts, + docsIfCmStatusT3Timeouts, + docsIfCmStatusT4Timeouts, + docsIfCmStatusRangingAborteds, + docsIfCmServiceQosProfile, + docsIfCmServiceTxSlotsImmed, + docsIfCmServiceTxSlotsDed, + docsIfCmServiceTxRetries, + docsIfCmServiceTxExceededs, + docsIfCmServiceRqRetries, + docsIfCmServiceRqExceededs + } + STATUS deprecated + + + + DESCRIPTION + "Group of objects implemented in cable modems." + ::= { docsIfGroups 2 } + +docsIfCmtsGroup OBJECT-GROUP + OBJECTS { + docsIfCmtsCapabilities, + docsIfCmtsSyncInterval, + docsIfCmtsUcdInterval, + docsIfCmtsMaxServiceIds, + docsIfCmtsInvitedRangingAttempts, + docsIfCmtsInsertInterval, + docsIfCmtsStatusInvalidRangeReqs, + docsIfCmtsStatusRangingAborteds, + docsIfCmtsStatusInvalidRegReqs, + docsIfCmtsStatusFailedRegReqs, + docsIfCmtsStatusInvalidDataReqs, + docsIfCmtsStatusT5Timeouts, + docsIfCmtsCmStatusMacAddress, + docsIfCmtsCmStatusIpAddress, + docsIfCmtsCmStatusDownChannelIfIndex, + docsIfCmtsCmStatusUpChannelIfIndex, + docsIfCmtsCmStatusRxPower, + docsIfCmtsCmStatusTimingOffset, + docsIfCmtsCmStatusEqualizationData, + docsIfCmtsCmStatusValue, + docsIfCmtsCmStatusUnerroreds, + docsIfCmtsCmStatusCorrecteds, + docsIfCmtsCmStatusUncorrectables, + docsIfCmtsCmStatusSignalNoise, + docsIfCmtsCmStatusMicroreflections, + docsIfCmtsServiceCmStatusIndex, + docsIfCmtsServiceAdminStatus, + docsIfCmtsServiceQosProfile, + docsIfCmtsServiceCreateTime, + docsIfCmtsServiceInOctets, + docsIfCmtsServiceInPackets, + docsIfCmtsModType, + docsIfCmtsModControl, + docsIfCmtsModPreambleLen, + docsIfCmtsModDifferentialEncoding, + docsIfCmtsModFECErrorCorrection, + docsIfCmtsModFECCodewordLength, + docsIfCmtsModScramblerSeed, + docsIfCmtsModMaxBurstSize, + docsIfCmtsModGuardTimeSize, + docsIfCmtsModLastCodewordShortened, + docsIfCmtsModScrambler, + + + + docsIfCmtsQosProfilePermissions, + docsIfCmtsCmPtr + } + STATUS deprecated + DESCRIPTION + "Group of objects implemented in Cable Modem Termination + Systems." + ::= { docsIfGroups 3 } + +-- obsolete group +-- RFC 2670 already had a obsolete group, even though RFC2670 +-- was the first version of this MIB Module. + +docsIfObsoleteGroup OBJECT-GROUP + OBJECTS { + docsIfCmRangingRespTimeout, + docsIfCmtsInsertionInterval + } + STATUS obsolete + DESCRIPTION + "Group of objects obsoleted." + ::= { docsIfGroups 4 } + +docsIfBasicGroupV2 OBJECT-GROUP + OBJECTS { + docsIfDownChannelId, + docsIfDownChannelFrequency, + docsIfDownChannelWidth, + docsIfDownChannelModulation, + docsIfDownChannelInterleave, + docsIfDownChannelPower, + docsIfDownChannelAnnex, + docsIfUpChannelId, + docsIfUpChannelFrequency, + docsIfUpChannelWidth, + docsIfUpChannelModulationProfile, + docsIfUpChannelSlotSize, + docsIfUpChannelTxTimingOffset, + docsIfUpChannelRangingBackoffStart, + docsIfUpChannelRangingBackoffEnd, + docsIfUpChannelTxBackoffStart, + docsIfUpChannelTxBackoffEnd, + docsIfUpChannelScdmaActiveCodes, + docsIfUpChannelScdmaCodesPerSlot, + docsIfUpChannelScdmaFrameSize, + docsIfUpChannelScdmaHoppingSeed, + docsIfUpChannelType, + docsIfUpChannelCloneFrom, + + + + docsIfUpChannelUpdate, + docsIfUpChannelStatus, + docsIfUpChannelPreEqEnable, + docsIfQosProfPriority, + docsIfQosProfMaxUpBandwidth, + docsIfQosProfGuarUpBandwidth, + docsIfQosProfMaxDownBandwidth, + docsIfQosProfBaselinePrivacy, + docsIfQosProfStatus, + docsIfQosProfMaxTransmitBurst, + docsIfSigQIncludesContention, + docsIfSigQUnerroreds, + docsIfSigQCorrecteds, + docsIfSigQUncorrectables, + docsIfSigQSignalNoise, + docsIfSigQMicroreflections, + docsIfSigQExtUnerroreds, + docsIfSigQExtCorrecteds, + docsIfSigQExtUncorrectables, + docsIfDocsisBaseCapability + } + STATUS current + DESCRIPTION + "Group of objects implemented in both cable modems and + cable modem termination systems." + ::= { docsIfGroups 5 } + +docsIfCmGroupV2 OBJECT-GROUP + OBJECTS { + docsIfCmCmtsAddress, + docsIfCmCapabilities, + docsIfCmRangingTimeout, + docsIfCmStatusValue, + docsIfCmStatusCode, + docsIfCmStatusTxPower, + docsIfCmStatusResets, + docsIfCmStatusLostSyncs, + docsIfCmStatusInvalidMaps, + docsIfCmStatusInvalidUcds, + docsIfCmStatusInvalidRangingResponses, + docsIfCmStatusInvalidRegistrationResponses, + docsIfCmStatusT1Timeouts, + docsIfCmStatusT2Timeouts, + docsIfCmStatusT3Timeouts, + docsIfCmStatusT4Timeouts, + docsIfCmStatusRangingAborteds, + docsIfCmStatusDocsisOperMode, + docsIfCmStatusModulationType, + + + + docsIfCmStatusEqualizationData, + docsIfCmStatusUCCs, + docsIfCmStatusUCCFails, + docsIfCmServiceQosProfile, + docsIfCmServiceTxSlotsImmed, + docsIfCmServiceTxSlotsDed, + docsIfCmServiceTxRetries, + docsIfCmServiceTxExceededs, + docsIfCmServiceRqRetries, + docsIfCmServiceRqExceededs, + docsIfCmServiceExtTxSlotsImmed, + docsIfCmServiceExtTxSlotsDed, + docsIfSigQEqualizationData + } + STATUS current + DESCRIPTION + "Group of objects implemented in cable modems." + ::= { docsIfGroups 6 } + +docsIfCmtsGroupV2 OBJECT-GROUP + OBJECTS { + docsIfCmtsCapabilities, + docsIfCmtsSyncInterval, + docsIfCmtsUcdInterval, + docsIfCmtsMaxServiceIds, + docsIfCmtsInvitedRangingAttempts, + docsIfCmtsInsertInterval, + docsIfCmtsMacStorageType, + docsIfCmtsStatusInvalidRangeReqs, + docsIfCmtsStatusRangingAborteds, + docsIfCmtsStatusInvalidRegReqs, + docsIfCmtsStatusFailedRegReqs, + docsIfCmtsStatusInvalidDataReqs, + docsIfCmtsStatusT5Timeouts, + docsIfCmtsCmStatusMacAddress, + docsIfCmtsCmStatusDownChannelIfIndex, + docsIfCmtsCmStatusUpChannelIfIndex, + docsIfCmtsCmStatusRxPower, + docsIfCmtsCmStatusTimingOffset, + docsIfCmtsCmStatusEqualizationData, + docsIfCmtsCmStatusValue, + docsIfCmtsCmStatusUnerroreds, + docsIfCmtsCmStatusCorrecteds, + docsIfCmtsCmStatusUncorrectables, + docsIfCmtsCmStatusSignalNoise, + docsIfCmtsCmStatusMicroreflections, + docsIfCmtsCmStatusExtUnerroreds, + docsIfCmtsCmStatusExtCorrecteds, + + + + docsIfCmtsCmStatusExtUncorrectables, + docsIfCmtsCmStatusDocsisRegMode, + docsIfCmtsCmStatusModulationType, + docsIfCmtsCmStatusInetAddressType, + docsIfCmtsCmStatusInetAddress, + docsIfCmtsCmStatusValueLastUpdate, + docsIfCmtsCmStatusHighResolutionTimingOffset, + docsIfCmtsServiceAdminStatus, + docsIfCmtsServiceQosProfile, + docsIfCmtsServiceCreateTime, + docsIfCmtsServiceInOctets, + docsIfCmtsServiceInPackets, + docsIfCmtsServiceNewCmStatusIndex, + docsIfCmtsModType, + docsIfCmtsModControl, + docsIfCmtsModPreambleLen, + docsIfCmtsModDifferentialEncoding, + docsIfCmtsModFECErrorCorrection, + docsIfCmtsModFECCodewordLength, + docsIfCmtsModScramblerSeed, + docsIfCmtsModMaxBurstSize, + docsIfCmtsModGuardTimeSize, + docsIfCmtsModLastCodewordShortened, + docsIfCmtsModScrambler, + docsIfCmtsModByteInterleaverDepth, + docsIfCmtsModByteInterleaverBlockSize, + docsIfCmtsModPreambleType, + docsIfCmtsModTcmErrorCorrectionOn, + docsIfCmtsModScdmaInterleaverStepSize, + docsIfCmtsModScdmaSpreaderEnable, + docsIfCmtsModScdmaSubframeCodes, + docsIfCmtsModChannelType, + docsIfCmtsModStorageType, + docsIfCmtsQosProfilePermissions, + docsIfCmtsCmPtr, + docsIfCmtsChannelUtilizationInterval, + docsIfCmtsChannelUtUtilization, + docsIfCmtsDownChnlCtrId, + docsIfCmtsDownChnlCtrTotalBytes, + docsIfCmtsDownChnlCtrUsedBytes, + docsIfCmtsDownChnlCtrExtTotalBytes, + docsIfCmtsDownChnlCtrExtUsedBytes, + docsIfCmtsUpChnlCtrId, + docsIfCmtsUpChnlCtrTotalMslots, + docsIfCmtsUpChnlCtrUcastGrantedMslots, + docsIfCmtsUpChnlCtrTotalCntnMslots, + docsIfCmtsUpChnlCtrUsedCntnMslots, + docsIfCmtsUpChnlCtrExtTotalMslots, + + + + docsIfCmtsUpChnlCtrExtUcastGrantedMslots, + docsIfCmtsUpChnlCtrExtTotalCntnMslots, + docsIfCmtsUpChnlCtrExtUsedCntnMslots, + docsIfCmtsUpChnlCtrCollCntnMslots, + docsIfCmtsUpChnlCtrTotalCntnReqMslots, + docsIfCmtsUpChnlCtrUsedCntnReqMslots, + docsIfCmtsUpChnlCtrCollCntnReqMslots, + docsIfCmtsUpChnlCtrTotalCntnReqDataMslots, + docsIfCmtsUpChnlCtrUsedCntnReqDataMslots, + docsIfCmtsUpChnlCtrCollCntnReqDataMslots, + docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots, + docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots, + docsIfCmtsUpChnlCtrCollCntnInitMaintMslots, + docsIfCmtsUpChnlCtrExtCollCntnMslots, + docsIfCmtsUpChnlCtrExtTotalCntnReqMslots, + docsIfCmtsUpChnlCtrExtUsedCntnReqMslots, + docsIfCmtsUpChnlCtrExtCollCntnReqMslots, + docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots, + docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots, + docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots, + docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots, + docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots, + docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots, + docsIfDownChannelStorageType, + docsIfQosProfStorageType + + } + STATUS current + DESCRIPTION + "Group of objects implemented in Cable Modem Termination + Systems." + ::= { docsIfGroups 7 } + +END diff --git a/mibs/ietf/DOT12-IF-MIB b/mibs/ietf/DOT12-IF-MIB new file mode 100644 index 0000000..9d7d4c6 --- /dev/null +++ b/mibs/ietf/DOT12-IF-MIB @@ -0,0 +1,764 @@ +DOT12-IF-MIB DEFINITIONS ::= BEGIN + + IMPORTS + transmission, Counter32, Counter64, OBJECT-TYPE, + MODULE-IDENTITY + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex + FROM IF-MIB; + + dot12MIB MODULE-IDENTITY + LAST-UPDATED "9602220452Z" -- February 22, 1996 + ORGANIZATION "IETF 100VG-AnyLAN MIB Working Group" + CONTACT-INFO + " John Flick + + Postal: Hewlett Packard Company + 8000 Foothills Blvd. M/S 5556 + Roseville, CA 95747-5556 + Tel: +1 916 785 4018 + Fax: +1 916 785 3583 + + E-mail: johnf@hprnd.rose.hp.com" + DESCRIPTION + "This MIB module describes objects for + managing IEEE 802.12 interfaces." + ::= { transmission 45 } + + dot12MIBObjects OBJECT IDENTIFIER ::= { dot12MIB 1 } + + dot12ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot12ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration information for a collection of + 802.12 interfaces attached to a particular + system." + ::= { dot12MIBObjects 1 } + + dot12ConfigEntry OBJECT-TYPE + SYNTAX Dot12ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration for a particular interface to an + 802.12 medium." + INDEX { ifIndex } + ::= { dot12ConfigTable 1 } + + Dot12ConfigEntry ::= + SEQUENCE { + dot12CurrentFramingType INTEGER, + dot12DesiredFramingType INTEGER, + dot12FramingCapability INTEGER, + dot12DesiredPromiscStatus INTEGER, + dot12TrainingVersion INTEGER, + dot12LastTrainingConfig OCTET STRING, + dot12Commands INTEGER, + dot12Status INTEGER, + dot12ControlMode INTEGER + } + + dot12CurrentFramingType OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2), + frameTypeUnknown(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When dot12DesiredFramingType is one of + 'frameType88023' or 'frameType88025', this is the + type of framing asserted by the interface. + + When dot12DesiredFramingType is 'frameTypeEither', + dot12CurrentFramingType shall be one of + 'frameType88023' or 'frameType88025' when the + dot12Status is 'opened'. When the dot12Status is + anything other than 'opened', + dot12CurrentFramingType shall take the value of + 'frameTypeUnknown'." + ::= { dot12ConfigEntry 1 } + + dot12DesiredFramingType OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2), + frameTypeEither(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of framing which will be requested by + the interface during the next interface MAC + initialization or open action. + + In master mode, this is the framing mode which + will be granted by the interface. Note that + for a master mode interface, this object must be + equal to 'frameType88023' or 'frameType88025', + since a master mode interface cannot grant + 'frameTypeEither'." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aDesiredFramingType." + ::= { dot12ConfigEntry 2 } + + dot12FramingCapability OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2), + frameTypeEither(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of framing this interface is capable of + supporting." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aFramingCapability." + ::= { dot12ConfigEntry 3 } + + dot12DesiredPromiscStatus OBJECT-TYPE + SYNTAX INTEGER { + singleAddressMode(1), + promiscuousMode(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to select the promiscuous + mode that this interface will request in the next + training packet issued on this interface. + Whether the repeater grants the requested mode + must be verified by examining the state of the PP + bits in the corresponding instance of + dot12LastTrainingConfig. + In master mode, this object controls whether or + not promiscuous mode will be granted by the + interface when requested by the lower level + device. + + Note that this object indicates the desired mode + for the next time the interface trains. The + currently active mode will be reflected in + dot12LastTrainingConfig and in ifPromiscuousMode." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aDesiredPromiscuousStatus." + ::= { dot12ConfigEntry 4 } + + dot12TrainingVersion OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value that will be used in the version bits + (vvv bits) in training frames on this interface. + This is the highest version number supported by + this MAC." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aMACVersion." + ::= { dot12ConfigEntry 5 } + + dot12LastTrainingConfig OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This 16 bit field contains the configuration + bits from the most recent error-free training + frame received during training on this interface. + Training request frames are received when in + master mode, while training response frames are + received in slave mode. On master mode interfaces, + this object contains the contents of the + requested configuration field of the most recent + training request frame. On slave mode interfaces, + this object contains the contents of the allowed + configuration field of the most recent training + response frame. The format of the current version + of this field is described in section 3.8. Please + refer to the most recent version of the IEEE + 802.12 standard for the most up-to-date definition + of the format of this object." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aLastTrainingConfig." + ::= { dot12ConfigEntry 6 } + + dot12Commands OBJECT-TYPE + SYNTAX INTEGER { + noOp(1), + open(2), + reset(3), + close(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If the current value of dot12Status is 'closed', + setting the value of this object to 'open' will + change the corresponding instance of MIB-II's + ifAdminStatus to 'up', cause this interface to + enter the 'opening' state, and will cause training + to be initiated on this interface. The progress + and success of the open is given by the values of + the dot12Status object. Setting this object to + 'open' when dot12Status has a value other than + 'closed' has no effect. + + Setting the corresponding instance of ifAdminStatus + to 'up' when the current value of dot12Status is + 'closed' will have the same effect as setting this + object to 'open'. Setting ifAdminStatus to 'up' + when dot12Status has a value other than 'closed' + has no effect. + + Setting the value of this object to 'close' will + move this interface into the 'closed' state and + cause all transmit and receive actions to stop. + This object will then have to be set to 'open' in + order to reinitiate training. + + Setting the corresponding instance of ifAdminStatus + to 'down' will have the same effect as setting this + object to 'close'. + + Setting the value of this object to 'reset' when + the current value of dot12Status has a value other + than 'closed' will reset the interface. On a + reset, all MIB counters should retain their values. + This will cause the MAC to initiate an + acInitializeMAC action as specified in IEEE 802.12. + This will cause training to be reinitiated on this + interface. Setting this object to 'reset' when + dot12Status has a value of 'closed' has no effect. + Setting this object to 'reset' has no effect on the + corresponding instance of ifAdminStatus. + + Setting the value of this object to 'noOp' has no + effect. + + When read, this object will always have a value + of 'noOp'." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.2, + acOpen, acClose, acInitializeMAC. + Also, RFC1231 IEEE802.5 Token Ring MIB, + dot5Commands." + ::= { dot12ConfigEntry 7 } + + dot12Status OBJECT-TYPE + SYNTAX INTEGER { + opened(1), + closed(2), + opening(3), + openFailure(5), + linkFailure(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current interface status with respect to + training. One of the following values: + + opened - Training has completed + successfully. + closed - MAC has been disabled by + setting dot12Commands to + 'close'. + opening - MAC is in training. Training + signals have been received. + openFailure - Passed 24 error-free packets, + but there is a problem, noted + in the training configuration + bits (dot12LastTrainingConfig). + linkFailure - Training signals not received, + or could not pass 24 error-free + packets. + Whenever the dot12Commands object is set to + 'close' or ifAdminStatus is set to 'down', the MAC + will go silent, dot12Status will be 'closed', and + ifOperStatus will be 'down'. + + When the value of this object is equal to 'closed' + and the dot12Commands object is set to 'open' or + the ifAdminStatus object is set to 'up', training + will be initiated on this interface. When the + value of this object is not equal to 'closed' and + the dot12Commands object is set to 'reset', + training will be reinitiated on this interface. + Note that sets of some other objects (e.g. + dot12ControlMode) or external events (e.g. MAC + protocol violations) may also cause training to be + reinitiated on this interface. + + When training is initiated or reinitiated on an + interface, the end node will send Training_Up to + the master and initially go to the 'linkFailure' + state and ifOperStatus will go to 'down'. + When the master sends back Training_Down, + dot12Status will change to the 'opening' state, + and training packets will be transferred. + + After all of the training packets have been + passed, dot12Status will change to 'linkFailure' + if 24 consecutive error-free packets were not + passed, 'opened' if 24 consecutive error-free + packets were passed and the training + configuration bits were OK, or 'openFailure' if + there were 24 consecutive error-free packets, but + there was a problem with the training + configuration bits. + + When in the 'openFailure' state, the + dot12LastTrainingConfig object will contain the + configuration bits from the last training + packet which can be examined to determine the + exact reason for the training configuration + failure. + + If training did not succeed (dot12Status is + 'linkFailure' or 'openFailure), the entire + process will be restarted after + MAC_Retraining_Delay_Timer seconds. + + If training does succeed (dot12Status changes to + 'opened'), ifOperStatus will change to 'up'. If + training does not succeed (dot12Status changes to + 'linkFailure' or 'openFailure'), ifOperStatus will + remain 'down'." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aMACStatus." + ::= { dot12ConfigEntry 8 } + + dot12ControlMode OBJECT-TYPE + SYNTAX INTEGER { + masterMode(1), + slaveMode(2), + learn(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure and report + whether or not this interface is operating in + master mode. In a Demand Priority network, end + node interfaces typically operate in slave mode, + while switch interfaces may control the Demand + Priority protocol and operate in master mode. + + This object may be implemented as a read-only + object by those agents and interfaces that do not + implement software control of master mode. In + particular, interfaces that cannot operate in + master mode, and interfaces on which master mode + is controlled by a pushbutton on the device, + should implement this object read-only. + + Some interfaces do not require network management + configuration of this feature and can autosense + whether to use master mode or slave mode. The + value 'learn' is used for that purpose. While + autosense is taking place, the value 'learn' is + returned. + + A network management operation which modifies the + value of dot12ControlMode causes the interface + to retrain." + ::= { dot12ConfigEntry 9 } + + dot12StatTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot12StatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics for a collection of 802.12 interfaces + attached to a particular system." + ::= { dot12MIBObjects 2 } + + dot12StatEntry OBJECT-TYPE + SYNTAX Dot12StatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics for a particular interface to an + 802.12 medium. The receive statistics in this + table apply only to packets received by this + station (i.e., packets whose destination address + is either the local station address, the + broadcast address, or a multicast address that + this station is receiving, unless the station is + in promiscuous mode)." + INDEX { ifIndex } + ::= { dot12StatTable 1 } + + Dot12StatEntry ::= + SEQUENCE { + dot12InHighPriorityFrames Counter32, + dot12InHighPriorityOctets Counter32, + dot12InNormPriorityFrames Counter32, + dot12InNormPriorityOctets Counter32, + dot12InIPMErrors Counter32, + dot12InOversizeFrameErrors Counter32, + dot12InDataErrors Counter32, + dot12InNullAddressedFrames Counter32, + dot12OutHighPriorityFrames Counter32, + dot12OutHighPriorityOctets Counter32, + dot12TransitionIntoTrainings Counter32, + dot12HCInHighPriorityOctets Counter64, + dot12HCInNormPriorityOctets Counter64, + dot12HCOutHighPriorityOctets Counter64 + } + + dot12InHighPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of high priority frames + that have been received on this interface. + Includes both good and bad high priority frames, + as well as high priority training frames. Does + not include normal priority frames which were + priority promoted." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityFramesReceived." + ::= { dot12StatEntry 1 } + + dot12InHighPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in high priority frames that have been + received on this interface. This counter is + incremented by OctetCount for each frame received + on this interface which is counted by + dot12InHighPriorityFrames. + + Note that this counter will roll over very + quickly. It is provided for backward + compatibility for Network Management protocols + that do not support 64 bit counters (e.g. SNMP + version 1)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityOctetsReceived." + ::= { dot12StatEntry 2 } + + dot12InNormPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of normal priority frames + that have been received on this interface. + Includes both good and bad normal priority + frames, as well as normal priority training + frames and normal priority frames which were + priority promoted." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aNormalPriorityFramesReceived." + ::= { dot12StatEntry 3 } + + dot12InNormPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in normal priority frames that have + been received on this interface. This counter is + incremented by OctetCount for each frame received + on this interface which is counted by + dot12InNormPriorityFrames. + + Note that this counter will roll over very + quickly. It is provided for backward + compatibility for Network Management protocols + that do not support 64 bit counters (e.g. SNMP + version 1)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aNormalPriorityOctetsReceived." + ::= { dot12StatEntry 4 } + + dot12InIPMErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of frames + that have been received on this interface with an + invalid packet marker and no PMI errors. A + repeater will write an invalid packet marker to + the end of a frame containing errors as it is + forwarded through the repeater to the other + ports. This counter is incremented by one for + each frame received on this interface which has + had an invalid packet marker added to the end of + the frame." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aIPMFramesReceived." + ::= { dot12StatEntry 5 } + + dot12InOversizeFrameErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of oversize frames + received on this interface. This counter is + incremented by one for each frame received on + this interface whose OctetCount is larger than + the maximum legal frame size. The frame size + which causes this counter to increment is + dependent on the current framing type." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aOversizeFramesReceived." + ::= { dot12StatEntry 6 } + + dot12InDataErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of errored frames + received on this interface. This counter is + incremented by one for each frame received on + this interface with any of the following errors: + bad FCS (with no IPM), PMI errors (excluding + frames with an IPM as the only PMI error), + undersize, bad start of frame delimiter, or bad + end of packet marker. Does not include frames + counted by dot12InIPMErrors, + dot12InNullAddressedFrames, or + dot12InOversizeFrameErrors. + + This counter indicates problems with the cable + directly attached to this interface, while + dot12InIPMErrors indicates problems with remote + cables." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aDataErrorFramesReceived." + ::= { dot12StatEntry 7 } + + dot12InNullAddressedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of null addressed frames + received on this interface. This counter is + incremented by one for each frame received on + this interface with a destination MAC address + consisting of all zero bits. Both void and + training frames are included in this counter. + + Note that since this station would normally not + receive null addressed frames, this counter is + only incremented when this station is operating + in promiscuous mode or in training." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aNullAddressedFramesReceived." + ::= { dot12StatEntry 8 } + + dot12OutHighPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each high + priority frame successfully transmitted out this + interface." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityFramesTransmitted." + ::= { dot12StatEntry 9 } + + dot12OutHighPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by OctetCount for + each frame counted by dot12OutHighPriorityFrames. + + Note that this counter will roll over very + quickly. It is provided for backward + compatibility for Network Management protocols + that do not support 64 bit counters (e.g. SNMP + version 1)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityOctetsTransmitted." + ::= { dot12StatEntry 10 } + + dot12TransitionIntoTrainings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + this interface has entered the training state. + This counter is incremented by one each time + dot12Status transitions to 'linkFailure' from any + state other than 'opening' or 'openFailure'." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aTransitionsIntoTraining." + ::= { dot12StatEntry 11 } + + dot12HCInHighPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in high priority frames that have been + received on this interface. This counter is + incremented by OctetCount for each frame received + on this interface which is counted by + dot12InHighPriorityFrames. + + This counter is a 64 bit version of + dot12InHighPriorityOctets. It should be used by + Network Management protocols which support 64 bit + counters (e.g. SNMPv2)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityOctetsReceived." + ::= { dot12StatEntry 12 } + + dot12HCInNormPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in normal priority frames that have + been received on this interface. This counter is + incremented by OctetCount for each frame received + on this interface which is counted by + dot12InNormPriorityFrames. + + This counter is a 64 bit version of + dot12InNormPriorityOctets. It should be used by + Network Management protocols which support 64 bit + counters (e.g. SNMPv2)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aNormalPriorityOctetsReceived." + ::= { dot12StatEntry 13 } + + dot12HCOutHighPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by OctetCount for + each frame counted by dot12OutHighPriorityFrames. + + This counter is a 64 bit version of + dot12OutHighPriorityOctets. It should be used by + Network Management protocols which support 64 bit + counters (e.g. SNMPv2)." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.5.2.1, + aHighPriorityOctetsTransmitted." + ::= { dot12StatEntry 14 } + + -- conformance information + + dot12Conformance OBJECT IDENTIFIER ::= { dot12MIB 2 } + + dot12Compliances OBJECT IDENTIFIER ::= { dot12Conformance 1 } + dot12Groups OBJECT IDENTIFIER ::= { dot12Conformance 2 } + + -- compliance statements + + dot12Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for managed network + entities that have 802.12 interfaces." + + MODULE -- this module + MANDATORY-GROUPS { dot12ConfigGroup, dot12StatsGroup } + + OBJECT dot12DesiredFramingType + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required." + + OBJECT dot12DesiredPromiscStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required." + + OBJECT dot12Commands + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required." + + OBJECT dot12ControlMode + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required." + ::= { dot12Compliances 1 } + + -- units of conformance + + dot12ConfigGroup OBJECT-GROUP + OBJECTS { dot12DesiredFramingType, + dot12FramingCapability, + dot12DesiredPromiscStatus, + dot12TrainingVersion, + dot12LastTrainingConfig, + dot12Commands, dot12Status, + dot12CurrentFramingType, + dot12ControlMode } + STATUS current + DESCRIPTION + "A collection of objects for managing the status + and configuration of IEEE 802.12 interfaces." + ::= { dot12Groups 1 } + + dot12StatsGroup OBJECT-GROUP + OBJECTS { dot12InHighPriorityFrames, + dot12InHighPriorityOctets, + dot12InNormPriorityFrames, + dot12InNormPriorityOctets, + dot12InIPMErrors, + dot12InOversizeFrameErrors, + dot12InDataErrors, + dot12InNullAddressedFrames, + dot12OutHighPriorityFrames, + dot12OutHighPriorityOctets, + dot12TransitionIntoTrainings, + dot12HCInHighPriorityOctets, + dot12HCInNormPriorityOctets, + dot12HCOutHighPriorityOctets } + STATUS current + DESCRIPTION + "A collection of objects providing statistics for + IEEE 802.12 interfaces." + ::= { dot12Groups 2 } + +END diff --git a/mibs/ietf/DOT12-RPTR-MIB b/mibs/ietf/DOT12-RPTR-MIB new file mode 100644 index 0000000..7e4d4ec --- /dev/null +++ b/mibs/ietf/DOT12-RPTR-MIB @@ -0,0 +1,1963 @@ +DOT12-RPTR-MIB DEFINITIONS ::= BEGIN + + IMPORTS + mib-2, Integer32, Counter32, Counter64, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE + FROM SNMPv2-SMI + MacAddress, TruthValue, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + + vgRptrMIB MODULE-IDENTITY + LAST-UPDATED "9705192256Z" -- May 19, 1997 + ORGANIZATION "IETF 100VG-AnyLAN Working Group" + CONTACT-INFO + "WG E-mail: vgmib@hprnd.rose.hp.com + + Chair: Jeff Johnson + Postal: RedBack Networks + 2570 North First Street, Suite 410 + San Jose, CA 95131 + Tel: +1 408 571 2699 + Fax: +1 408 571 2698 + E-mail: jeff@redbacknetworks.com + + Editor: John Flick + Postal: Hewlett Packard Company + 8000 Foothills Blvd. M/S 5556 + Roseville, CA 95747-5556 + Tel: +1 916 785 4018 + Fax: +1 916 785 3583 + E-mail: johnf@hprnd.rose.hp.com" + DESCRIPTION + "This MIB module describes objects for managing + IEEE 802.12 repeaters." + ::= { mib-2 53 } + + vgRptrObjects OBJECT IDENTIFIER ::= { vgRptrMIB 1 } + vgRptrBasic OBJECT IDENTIFIER ::= { vgRptrObjects 1 } + vgRptrBasicRptr OBJECT IDENTIFIER ::= { vgRptrBasic 1 } + + vgRptrInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about each 802.12 repeater + in the managed system." + ::= { vgRptrBasicRptr 1 } + + vgRptrInfoEntry OBJECT-TYPE + SYNTAX VgRptrInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single repeater." + INDEX { vgRptrInfoIndex } + ::= { vgRptrInfoTable 1 } + + VgRptrInfoEntry ::= + SEQUENCE { + vgRptrInfoIndex Integer32, + vgRptrInfoMACAddress MacAddress, + vgRptrInfoCurrentFramingType INTEGER, + vgRptrInfoDesiredFramingType INTEGER, + vgRptrInfoFramingCapability INTEGER, + vgRptrInfoTrainingVersion INTEGER, + vgRptrInfoOperStatus INTEGER, + vgRptrInfoReset INTEGER, + vgRptrInfoLastChange TimeStamp + } + + vgRptrInfoIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for the repeater for which + this entry contains information. The numbering + scheme for repeaters is implementation specific." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aRepeaterID." + ::= { vgRptrInfoEntry 1 } + + vgRptrInfoMACAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MAC address used by the repeater when it + initiates training on the uplink port. Repeaters + are allowed to train with an assigned MAC address + or a null (all zeroes) MAC address." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aMACAddress." + ::= { vgRptrInfoEntry 2 } + + vgRptrInfoCurrentFramingType OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of framing (802.3 or 802.5) currently + in use by the repeater." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aCurrentFramingType." + ::= { vgRptrInfoEntry 3 } + + vgRptrInfoDesiredFramingType OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of framing which will be used by the + repeater after the next time it is reset. + + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aDesiredFramingType." + ::= { vgRptrInfoEntry 4 } + + vgRptrInfoFramingCapability OBJECT-TYPE + SYNTAX INTEGER { + frameType88023(1), + frameType88025(2), + frameTypeEither(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of framing this repeater is capable of + supporting." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aFramingCapability." + ::= { vgRptrInfoEntry 5 } + + vgRptrInfoTrainingVersion OBJECT-TYPE + SYNTAX INTEGER (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest version bits (vvv bits) supported by + the repeater during training." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aRMACVersion." + ::= { vgRptrInfoEntry 6 } + + vgRptrInfoOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + ok(2), + generalFailure(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vgRptrInfoOperStatus object indicates the + operational state of the repeater." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.1, + aRepeaterHealthState." + ::= { vgRptrInfoEntry 7 } + + vgRptrInfoReset OBJECT-TYPE + SYNTAX INTEGER { + noReset(1), + reset(2) + } + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to reset(2) causes the + repeater to transition to its initial state as + specified in clause 12 [IEEE Std 802.12]. + Setting this object to noReset(1) has no effect. + The agent will always return the value noReset(1) + when this object is read. + + After receiving a request to set this variable to + reset(2), the agent is allowed to delay the reset + for a short period. For example, the implementor + may choose to delay the reset long enough to + allow the SNMP response to be transmitted. In + any event, the SNMP response must be transmitted. + + This action does not reset the management + counters defined in this document nor does it + affect the vgRptrPortAdminStatus parameters. + Included in this action is the execution of a + disruptive Self-Test with the following + characteristics: + + 1) The nature of the tests is not specified. + 2) The test resets the repeater but without + affecting configurable management + information about the repeater. + 3) Packets received during the test may or + may not be transferred. + 4) The test does not interfere with + management functions. + + After performing this self-test, the agent will + update the repeater health information (including + vgRptrInfoOperStatus), and send a + vgRptrResetEvent." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.2.2, + acResetRepeater." + ::= { vgRptrInfoEntry 8 } + + vgRptrInfoLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when any of the following + conditions occurred: + + 1) agent cold- or warm-started; + 2) this instance of repeater was created + (such as when a device or module was + added to the system); + 3) a change in the value of + vgRptrInfoOperStatus; + 4) ports were added or removed as members of + the repeater; or + 5) any of the counters associated with this + repeater had a discontinuity." + ::= { vgRptrInfoEntry 9 } + + vgRptrBasicGroup OBJECT IDENTIFIER ::= { vgRptrBasic 2 } + + vgRptrBasicGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrBasicGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about groups of + ports." + ::= { vgRptrBasicGroup 1 } + + vgRptrBasicGroupEntry OBJECT-TYPE + SYNTAX VgRptrBasicGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vgRptrBasicGroupTable, containing + information about a single group of ports." + INDEX { vgRptrGroupIndex } + ::= { vgRptrBasicGroupTable 1 } + + VgRptrBasicGroupEntry ::= + SEQUENCE { + vgRptrGroupIndex Integer32, + vgRptrGroupObjectID OBJECT IDENTIFIER, + vgRptrGroupOperStatus INTEGER, + vgRptrGroupPortCapacity Integer32, + vgRptrGroupCablesBundled INTEGER + } + + vgRptrGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2146483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the group within the + system for which this entry contains information. + The numbering scheme for groups is implementation + specific." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.4.1, + aGroupID." + ::= { vgRptrBasicGroupEntry 1 } + + vgRptrGroupObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the + group. This value may be allocated within the + SMI enterprises subtree (1.3.6.1.4.1) and + provides a straight-forward and unambiguous means + for determining what kind of group is being + managed. + + For example, this object could take the value + 1.3.6.1.4.1.4242.1.2.14 if vendor 'Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.4242, + and had assigned the identifier + 1.3.6.1.4.1.4242.1.2.14 to its 'Wilma Flintstone + 6-Port Plug-in Module.'" + ::= { vgRptrBasicGroupEntry 2 } + + vgRptrGroupOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + operational(2), + malfunctioning(3), + notPresent(4), + underTest(5), + resetInProgress(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that indicates the operational status + of the group. + + A status of notPresent(4) indicates that the + group is temporarily or permanently physically + and/or logically not a part of the system. It + is an implementation-specific matter as to + whether the agent effectively removes notPresent + entries from the table. + + A status of operational(2) indicates that the + group is functioning, and a status of + malfunctioning(3) indicates that the group is + malfunctioning in some way." + ::= { vgRptrBasicGroupEntry 3 } + + vgRptrGroupPortCapacity OBJECT-TYPE + SYNTAX Integer32 (1..2146483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vgRptrGroupPortCapacity is the number of + ports that can be contained within the group. + Valid range is 1-2147483647. Within each group, + the ports are uniquely numbered in the range from + 1 to vgRptrGroupPortCapacity. + + Some ports may not be present in the system, in + which case the actual number of ports present will + be less than the value of vgRptrGroupPortCapacity. + The number of ports present is never greater than + the value of vgRptrGroupPortCapacity. + + Note: In practice, this will generally be the + number of ports on a module, card, or board, and + the port numbers will correspond to numbers marked + on the physical embodiment." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.4.1, + aGroupPortCapacity." + ::= { vgRptrBasicGroupEntry 4 } + + vgRptrGroupCablesBundled OBJECT-TYPE + SYNTAX INTEGER { + someCablesBundled(1), + noCablesBundled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to indicate whether there are + any four-pair UTP links connected to this group + that are contained in a cable bundle with multiple + four-pair groups (e.g. a 25-pair bundle). Bundled + cable may only be used for repeater-to-end node + links where the end node is not in promiscuous + mode. + + When a broadcast or multicast packet is received + from a port on this group that is not a + promiscuous or cascaded port, the packet will be + buffered completely before being repeated if + this object is set to 'someCablesBundled(1)'. + When this object is equal to 'noCablesBundled(2)', + all packets received from ports on this group will + be repeated as the frame is being received. + + Note that the value 'someCablesBundled(1)' will + work in the vast majority of all installations, + regardless of whether or not any cables are + physically in a bundle, since packets received + from promiscuous and cascaded ports automatically + avoid the store and forward. The main situation + in which 'noCablesBundled(2)' is beneficial is + when there is a large amount of multicast traffic + and the cables are not in a bundle. + + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.4.1, + aGroupCablesBundled." + ::= { vgRptrBasicGroupEntry 5 } + + vgRptrBasicPort OBJECT IDENTIFIER ::= { vgRptrBasic 3 } + + vgRptrBasicPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrBasicPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configuration and status + information about 802.12 repeater ports in the + system. The number of entries is independent of + the number of repeaters in the managed system." + ::= { vgRptrBasicPort 1 } + + vgRptrBasicPortEntry OBJECT-TYPE + SYNTAX VgRptrBasicPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vgRptrBasicPortTable, containing + information about a single port." + INDEX { vgRptrGroupIndex, vgRptrPortIndex } + ::= { vgRptrBasicPortTable 1 } + + VgRptrBasicPortEntry ::= + SEQUENCE { + vgRptrPortIndex Integer32, + vgRptrPortType INTEGER, + vgRptrPortAdminStatus INTEGER, + vgRptrPortOperStatus INTEGER, + vgRptrPortSupportedPromiscMode INTEGER, + vgRptrPortSupportedCascadeMode INTEGER, + vgRptrPortAllowedTrainType INTEGER, + vgRptrPortLastTrainConfig OCTET STRING, + vgRptrPortTrainingResult OCTET STRING, + vgRptrPortPriorityEnable TruthValue, + vgRptrPortRptrInfoIndex Integer32 + } + + vgRptrPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the port within the group + for which this entry contains information. This + identifies the port independently from the + repeater it may be attached to. The numbering + scheme for ports is implementation specific; + however, this value can never be greater than + vgRptrGroupPortCapacity for the associated group." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPortID." + ::= { vgRptrBasicPortEntry 1 } + + vgRptrPortType OBJECT-TYPE + SYNTAX INTEGER { + cascadeExternal(1), + cascadeInternal(2), + localExternal(3), + localInternal(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the type of port. One of the + following: + + cascadeExternal - Port is an uplink with + physical connections which + are externally visible + cascadeInternal - Port is an uplink with + physical connections which + are not externally visible, + such as a connection to an + internal backplane in a + chassis + localExternal - Port is a downlink or local + port with externally + visible connections + localInternal - Port is a downlink or local + port with connections which + are not externally visible, + such as a connection to an + internal agent + + 'internal' is used to identify ports which place + traffic into the repeater, but do not have any + external connections. Note that both DTE and + cascaded repeater downlinks are considered + 'local' ports." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPortType." + ::= { vgRptrBasicPortEntry 2 } + + vgRptrPortAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Port enable/disable function. Enabling a + disabled port will cause training to be + initiated by the training initiator (the slave + mode device) on the link. Setting this object to + disabled(2) disables the port. + + A disabled port neither transmits nor receives. + Once disabled, a port must be explicitly enabled + to restore operation. A port which is disabled + when power is lost or when a reset is exerted + shall remain disabled when normal operation + resumes. + + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPortAdministrativeState." + ::= { vgRptrBasicPortEntry 3 } + + vgRptrPortOperStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2), + training(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current status for the port as specified by the + PORT_META_STATE in the port process module of + clause 12 [IEEE Std 802.12]. + + During initialization or any link warning + conditions, vgRptrPortStatus will be + 'inactive(2)'. + + When Training_Up is received by the repeater on a + local port (or when Training_Down is received on + a cascade port), vgRptrPortStatus will change to + 'training(3)' and vgRptrTrainingResult can be + monitored to see the detailed status regarding + training. + + When 24 consecutive good FCS packets are exchanged + and the configuration bits are OK, + vgRptrPortStatus will change to 'active(1)'. + + A disabled port shall have a port status of + 'inactive(2)'." + REFERENCE + "IEEE Standard 802.12, 13.2.4.5.1, + aPortStatus." + ::= { vgRptrBasicPortEntry 4 } + + vgRptrPortSupportedPromiscMode OBJECT-TYPE + SYNTAX INTEGER { + singleModeOnly(1), + singleOrPromiscMode(2), + promiscModeOnly(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes whether the port hardware + is capable of supporting promiscuous mode, single + address mode (i.e., repeater filters unicasts not + addressed to the end station attached to this + port), or both. A port for which vgRptrPortType + is equal to 'cascadeInternal' or 'cascadeExternal' + will always have a value of 'promiscModeOnly' for + this object." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aSupportedPromiscMode." + ::= { vgRptrBasicPortEntry 5 } + + vgRptrPortSupportedCascadeMode OBJECT-TYPE + SYNTAX INTEGER { + endNodesOnly(1), + endNodesOrRepeaters(2), + cascadePort(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes whether the port hardware + is capable of supporting cascaded repeaters, end + nodes, or both. A port for which vgRptrPortType + is equal to 'cascadeInternal' or + 'cascadeExternal' will always have a value of + 'cascadePort' for this object." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aSupportedCascadeMode." + ::= { vgRptrBasicPortEntry 6 } + + vgRptrPortAllowedTrainType OBJECT-TYPE + SYNTAX INTEGER { + allowEndNodesOnly(1), + allowPromiscuousEndNodes(2), + allowEndNodesOrRepeaters(3), + allowAnything(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This security object is set by the network + manager to configure what type of device is + permitted to connect to the port. One of the + following values: + allowEndNodesOnly - only non- + promiscuous end + nodes permitted. + allowPromiscuousEndNodes - promiscuous or + non-promiscuous + end nodes + permitted + allowEndNodesOrRepeaters - repeaters or non- + promiscuous end + nodes permitted + allowAnything - repeaters, + promiscuous or + non-promiscuous + end nodes + permitted + + For a port for which vgRptrPortType is equal to + 'cascadeInternal' or 'cascadeExternal', the + corresponding instance of this object may not be + set to 'allowEndNodesOnly' or + 'allowPromiscuousEndNodes'. + + The agent must reject a SET of this object if the + value includes no capabilities that are + supported by this port's hardware, as defined by + the values of the corresponding instances of + vgRptrPortSupportedPromiscMode and + vgRptrPortSupportedCascadeMode. + + Note that vgRptrPortSupportPromiscMode and + vgRptrPortSupportedCascadeMode represent what the + port hardware is capable of supporting. + vgRptrPortAllowedTrainType is used for setting an + administrative policy for a port. The actual set + of training configurations that will be allowed + to succeed on a port is the intersection of what + the hardware will support and what is + administratively allowed. The above requirement + on what values may be set to this object says that + the intersection of what is supported and what is + allowed must be non-empty. In other words, it + must not result in a situation in which nothing + would be allowed to train on that port. However, + a value can be set to this object as long as the + combination of this object and what is supported + by the hardware would still leave at least one + configuration that could successfully train on the + port. + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aAllowableTrainingType." + ::= { vgRptrBasicPortEntry 7 } + + vgRptrPortLastTrainConfig OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 16 bit field. For local ports, + this object contains the requested configuration + field from the most recent error-free training + request frame sent by the device connected to + the port. For cascade ports, this object contains + the responder's allowed configuration field from + the most recent error-free training response frame + received in response to training initiated by this + repeater. The format of the current version of + this field is described in section 3.2. Please + refer to the most recent version of the IEEE + 802.12 standard for the most up-to-date definition + of the format of this object." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aLastTrainingConfig." + ::= { vgRptrBasicPortEntry 8 } + + vgRptrPortTrainingResult OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This 18 bit field is used to indicate the result + of training. It contains two bits which indicate + if error-free training frames have been received, + and it also contains the 16 bits of the allowed + configuration field from the most recent + error-free training response frame on the port. + + First Octet: Second and Third Octets: + 7 6 5 4 3 2 1 0 + +-+-+-+-+-+-+-+-+-----------------------------+ + |0|0|0|0|0|0|V|G| allowed configuration field | + +-+-+-+-+-+-+-+-+-----------------------------+ + V: Valid: set when at least one error-free + training frame has been received. + Indicates the 16 training configuration + bits in vgRptrPortLastTrainConfig and + vgRptrPortTrainingResult contain valid + information. This bit is cleared when + vgRptrPortStatus transitions to the + 'inactive' or 'training' state. + G: LinkGood: indicates the link hardware is + OK. Set if 24 consecutive error-free + training packets have been exchanged. + Cleared when a training packet with + errors is received, or when + vgRptrPortStatus transitions to the + 'inactive' or 'training' state. + + The format of the current version of the allowed + configuration field is described in section 3.2. + Please refer to the most recent version of the + IEEE 802.12 standard for the most up-to-date + definition of the format of this field. + + If the port is in training, a management station + can examine this object to see if any training + packets have been passed successfully. If there + have been any good training packets, the Valid + bit will be set and the management station can + examine the allowed configuration field to see if + there is a duplicate address, configuration, or + security problem. + + Note that on a repeater local port, this repeater + generates the training response bits, while on + a cascade port, the device at the upper end of + the link originated the training response bits." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aTrainingResult." + ::= { vgRptrBasicPortEntry 9 } + vgRptrPortPriorityEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A configuration flag used to determine whether + the repeater will service high priority requests + received on the port as high priority or normal + priority. When 'false', high priority requests + on this port will be serviced as normal priority. + + The setting of this object has no effect on a + cascade port. Also note that the setting of this + object has no effect on a port connected to a + cascaded repeater. In both of these cases, this + setting is treated as always 'true'. The value + 'false' only has an effect when the port is a + localInternal or localExternal port connected to + an end node. + + The value of this object should be preserved + across repeater resets and power failures." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPriorityEnable." + ::= { vgRptrBasicPortEntry 10 } + + vgRptrPortRptrInfoIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the repeater that this + port is currently mapped to. The repeater + identified by a particular value of this object + is the same as that identified by the same value + of vgRptrInfoIndex. A value of zero indicates + that this port is not currently mapped to any + repeater." + ::= { vgRptrBasicPortEntry 11 } + + + vgRptrMonitor OBJECT IDENTIFIER ::= { vgRptrObjects 2 } + + vgRptrMonRepeater OBJECT IDENTIFIER ::= { vgRptrMonitor 1 } + + vgRptrMonitorTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrMonitorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of performance and error statistics for + each repeater in the system. The instance of the + vgRptrInfoLastChange associated with a repeater + is used to indicate possible discontinuities of + the counters in this table that are associated + with the same repeater." + ::= { vgRptrMonRepeater 1 } + + vgRptrMonitorEntry OBJECT-TYPE + SYNTAX VgRptrMonitorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing statistics + for a single repeater." + INDEX { vgRptrInfoIndex } + ::= { vgRptrMonitorTable 1 } + + VgRptrMonitorEntry ::= + SEQUENCE { + vgRptrMonTotalReadableFrames Counter32, + vgRptrMonTotalReadableOctets Counter32, + vgRptrMonReadableOctetRollovers Counter32, + vgRptrMonHCTotalReadableOctets Counter64, + vgRptrMonTotalErrors Counter32 + } + + vgRptrMonTotalReadableFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of good frames of valid frame + length that have been received on all ports in + this repeater. If an implementation cannot + obtain a count of frames as seen by the repeater + itself, this counter may be implemented as the + summation of the values of the + vgRptrPortReadableFrames counters for all of the + ports in this repeater. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 1 } + + vgRptrMonTotalReadableOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in good + frames that have been received on all ports in + this repeater. If an implementation cannot + obtain a count of octets as seen by the repeater + itself, this counter may be implemented as the + summation of the values of the + vgRptrPortReadableOctets counters for all of the + ports in this repeater. + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrReadableOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrMonHCTotalReadableOctets instead of the + two 32-bit counters. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 2 } + + vgRptrMonReadableOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times that the associated + instance of the vgRptrMonTotalReadableOctets + counter has rolled over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 3 } + + vgRptrMonHCTotalReadableOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in good + frames that have been received on all ports in + this repeater. If an implementation cannot + obtain a count of octets as seen by the repeater + itself, this counter may be implemented as the + summation of the values of the + vgRptrPortHCReadableOctets counters for all of the + ports in this repeater. + + This counter is a 64 bit version of + vgRptrMonTotalReadableOctets. It should be used + by Network Management protocols which support 64 + bit counters (e.g. SNMPv2). + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 4 } + + vgRptrMonTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of errors which have occurred on + all of the ports in this repeater. If an + implementation cannot obtain a count of these + errors as seen by the repeater itself, this + counter may be implemented as the summation of the + values of the vgRptrPortIPMFrames, + vgRptrPortOversizeFrames, and + vgRptrPortDataErrorFrames counters for all of the + ports in this repeater. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrInfoLastChange changes." + ::= { vgRptrMonitorEntry 5 } + + vgRptrMonGroup OBJECT IDENTIFIER ::= { vgRptrMonitor 2 } + -- Currently unused + + vgRptrMonPort OBJECT IDENTIFIER ::= { vgRptrMonitor 3 } + + vgRptrMonPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrMonPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of performance and error statistics for + the ports. The columnar object + vgRptrPortLastChange is used to indicate possible + discontinuities of counter type columnar objects + in this table." + ::= { vgRptrMonPort 1 } + + vgRptrMonPortEntry OBJECT-TYPE + SYNTAX VgRptrMonPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vgRptrMonPortTable, containing + performance and error statistics for a single + port." + INDEX { vgRptrGroupIndex, vgRptrPortIndex } + ::= { vgRptrMonPortTable 1 } + + VgRptrMonPortEntry ::= + SEQUENCE { + vgRptrPortReadableFrames Counter32, + vgRptrPortReadableOctets Counter32, + vgRptrPortReadOctetRollovers Counter32, + vgRptrPortHCReadableOctets Counter64, + vgRptrPortUnreadableOctets Counter32, + vgRptrPortUnreadOctetRollovers Counter32, + vgRptrPortHCUnreadableOctets Counter64, + vgRptrPortHighPriorityFrames Counter32, + vgRptrPortHighPriorityOctets Counter32, + vgRptrPortHighPriOctetRollovers Counter32, + vgRptrPortHCHighPriorityOctets Counter64, + vgRptrPortNormPriorityFrames Counter32, + vgRptrPortNormPriorityOctets Counter32, + vgRptrPortNormPriOctetRollovers Counter32, + vgRptrPortHCNormPriorityOctets Counter64, + vgRptrPortBroadcastFrames Counter32, + vgRptrPortMulticastFrames Counter32, + vgRptrPortNullAddressedFrames Counter32, + vgRptrPortIPMFrames Counter32, + vgRptrPortOversizeFrames Counter32, + vgRptrPortDataErrorFrames Counter32, + vgRptrPortPriorityPromotions Counter32, + vgRptrPortTransitionToTrainings Counter32, + vgRptrPortLastChange TimeStamp + } + + vgRptrPortReadableFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of good frames of + valid frame length that have been received on + this port. This counter is incremented by one + for each frame received on the port which is not + counted by any of the following error counters: + vgRptrPortIPMFrames, vgRptrPortOversizeFrames, + vgRptrPortNullAddressedFrames, or + vgRptrPortDataErrorFrames. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aReadableFramesReceived." + ::= { vgRptrMonPortEntry 1 } + + vgRptrPortReadableOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in good frames that have been received + on this port. This counter is incremented by + OctetCount for each frame received on this port + which has been determined to be a readable frame + (i.e. each frame counted by + vgRptrPortReadableFrames). + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrPortReadOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrPortHCReadableOctets instead of the two + 32-bit counters. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aReadableOctetsReceived." + ::= { vgRptrMonPortEntry 2 } + + vgRptrPortReadOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + that the associated instance of the + vgRptrPortReadableOctets counter has rolled over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aReadableOctetsReceived." + ::= { vgRptrMonPortEntry 3 } + + vgRptrPortHCReadableOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in good frames that have been received + on this port. This counter is incremented by + OctetCount for each frame received on this port + which has been determined to be a readable frame + (i.e. each frame counted by + vgRptrPortReadableFrames). + + This counter is a 64 bit version of + vgRptrPortReadableOctets. It should be used by + Network Management protocols which support 64 bit + counters (e.g. SNMPv2). + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aReadableOctetsReceived." + ::= { vgRptrMonPortEntry 4 } + + vgRptrPortUnreadableOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in invalid frames that have been + received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortIPMFrames, vgRptrPortOversizeFrames, + vgRptrPortNullAddressedFrames, or + vgRptrPortDataErrorFrames. This counter can be + combined with vgRptrPortReadableOctets to + calculate network utilization. + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrPortUnreadOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrPortHCUnreadableOctets instead of the two + 32-bit counters. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aOctetsInUnreadableFramesRcvd." + ::= { vgRptrMonPortEntry 5 } + + vgRptrPortUnreadOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + that the associated instance of the + vgRptrPortUnreadableOctets counter has rolled + over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aOctetsInUnreadableFramesRcvd." + ::= { vgRptrMonPortEntry 6 } + + vgRptrPortHCUnreadableOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in invalid frames that have been + received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortIPMFrames, vgRptrPortOversizeFrames, + vgRptrPortNullAddressedFrames, or + vgRptrPortDataErrorFrames. This counter can be + combined with vgRptrPortHCReadableOctets to + calculate network utilization. + + This counter is a 64 bit version of + vgRptrPortUnreadableOctets. It should be used + by Network Management protocols which support 64 + bit counters (e.g. SNMPv2). + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aOctetsInUnreadableFramesRcvd." + ::= { vgRptrMonPortEntry 7 } + + vgRptrPortHighPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of high priority frames + that have been received on this port. This + counter is incremented by one for each high + priority frame received on this port. This + counter includes both good and bad high priority + frames, as well as high priority training frames. + This counter does not include normal priority + frames which were priority promoted. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aHighPriorityFramesReceived." + ::= { vgRptrMonPortEntry 8 } + + vgRptrPortHighPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in high priority frames that have been + received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortHighPriorityFrames. + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrPortHighPriOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrPortHCHighPriorityOctets instead of the two + 32-bit counters. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aHighPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 9 } + + vgRptrPortHighPriOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + that the associated instance of the + vgRptrPortHighPriorityOctets counter has rolled + over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aHighPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 10 } + + vgRptrPortHCHighPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in high priority frames that have been + received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortHighPriorityFrames. + + This counter is a 64 bit version of + vgRptrPortHighPriorityOctets. It should be used + by Network Management protocols which support + 64 bit counters (e.g. SNMPv2). + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aHighPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 11 } + + vgRptrPortNormPriorityFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of normal priority frames + that have been received on this port. This + counter is incremented by one for each normal + priority frame received on this port. This + counter includes both good and bad normal + priority frames, as well as normal priority + training frames and normal priority frames which + were priority promoted. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNormalPriorityFramesReceived." + ::= { vgRptrMonPortEntry 12 } + + vgRptrPortNormPriorityOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in normal priority frames that have + been received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortNormPriorityFrames. + + Note that this counter can roll over very + quickly. A management station is advised to + also poll the vgRptrPortNormPriOctetRollovers + object, or to use the 64-bit counter defined by + vgRptrPortHCNormPriorityOctets instead of the two + 32-bit counters. + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNormalPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 13 } + + vgRptrPortNormPriOctetRollovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of times + that the associated instance of the + vgRptrPortNormPriorityOctets counter has rolled + over. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMPv1). Note that + retrieval of these two counters in the same PDU + is NOT guaranteed to be atomic. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNormalPriorityOctetsReceived." + + ::= { vgRptrMonPortEntry 14 } + + vgRptrPortHCNormPriorityOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of octets + contained in normal priority frames that have + been received on this port. This counter is + incremented by OctetCount for each frame received + on this port which is counted by + vgRptrPortNormPriorityFrames. + + This counter is a 64 bit version of + vgRptrPortNormPriorityOctets. It should be used + by Network Management protocols which support + 64 bit counters (e.g. SNMPv2). + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNormalPriorityOctetsReceived." + ::= { vgRptrMonPortEntry 15 } + + vgRptrPortBroadcastFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of broadcast packets that + have been received on this port. This counter is + incremented by one for each readable frame + received on this port whose destination MAC + address is the broadcast address. Frames + counted by this counter are also counted by + vgRptrPortReadableFrames. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aBroadcastFramesReceived." + ::= { vgRptrMonPortEntry 16 } + + vgRptrPortMulticastFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of multicast packets that + have been received on this port. This counter is + incremented by one for each readable frame + received on this port whose destination MAC + address has the group address bit set, but is not + the broadcast address. Frames counted by this + counter are also counted by + vgRptrPortReadableFrames, but not by + vgRptrPortBroadcastFrames. Note that when the + value of the instance vgRptrInfoCurrentFramingType + for the repeater that this port is associated + with is equal to 'frameType88025', this count + includes packets addressed to functional + addresses. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aMulticastFramesReceived." + ::= { vgRptrMonPortEntry 17 } + + vgRptrPortNullAddressedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of null addressed packets + that have been received on this port. This + counter is incremented by one for each frame + received on this port with a destination MAC + address consisting of all zero bits. Both void + and training frames are included in this + counter. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aNullAddressedFramesReceived." + ::= { vgRptrMonPortEntry 18 } + + vgRptrPortIPMFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of the number of frames + that have been received on this port with an + invalid packet marker and no PMI errors. A + repeater will write an invalid packet marker to + the end of a frame containing errors as it is + forwarded through the repeater to the other + ports. This counter is incremented by one for + each frame received on this port which has had an + invalid packet marker added to the end of the + frame. + + This counter indicates problems occurring in the + domain of other repeaters, as opposed to problems + with cables or devices directly attached to this + repeater. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aIPMFramesReceived." + ::= { vgRptrMonPortEntry 19 } + + vgRptrPortOversizeFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of oversize frames + received on this port. This counter is + incremented by one for each frame received on + this port whose OctetCount is larger than the + maximum legal frame size. + + The frame size which causes this counter to + increment is dependent on the current value of + vgRptrInfoCurrentFramingType for the repeater that + the port is associated with. When + vgRptrInfoCurrentFramingType is equal to + frameType88023 this counter will increment for + frames that are 1519 octets or larger. When + vgRptrInfoCurrentFramingType is equal to + frameType88025 this counter will increment for + frames that are 4521 octets or larger. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aOversizeFramesReceived." + ::= { vgRptrMonPortEntry 20 } + + vgRptrPortDataErrorFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a count of errored frames + received on this port. This counter is + incremented by one for each frame received on + this port with any of the following errors: bad + FCS (with no IPM), PMI errors (excluding frames + with an IPM error as the only PMI error), or + undersize (with no IPM). Does not include + packets counted by vgRptrPortIPMFrames, + vgRptrPortOversizeFrames, or + vgRptrPortNullAddressedFrames. + + This counter indicates problems with cables or + devices directly connected to this repeater, while + vgRptrPortIPMFrames indicates problems occurring + in the domain of other repeaters. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aDataErrorFramesReceived." + ::= { vgRptrMonPortEntry 21 } + + vgRptrPortPriorityPromotions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one each time the + priority promotion timer has expired on this port + and a normal priority frame is priority + promoted. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aPriorityPromotions." + ::= { vgRptrMonPortEntry 22 } + + vgRptrPortTransitionToTrainings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one each time the + vgRptrPortStatus object for this port transitions + into the 'training' state. + + This counter may experience a discontinuity when + the value of the corresponding instance of + vgRptrPortLastChange changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aTransitionsIntoTraining." + ::= { vgRptrMonPortEntry 23 } + + vgRptrPortLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last of the + following occurred: + 1) the agent cold- or warm-started; + 2) the row for the port was created + (such as when a device or module was + added to the system); or + 3) any condition that would cause one of + the counters for the row to experience + a discontinuity." + ::= { vgRptrMonPortEntry 24 } + + + vgRptrAddrTrack OBJECT IDENTIFIER ::= { vgRptrObjects 3 } + + vgRptrAddrTrackRptr + OBJECT IDENTIFIER ::= { vgRptrAddrTrack 1 } + + -- Currently unused + + vgRptrAddrTrackGroup + OBJECT IDENTIFIER ::= { vgRptrAddrTrack 2 } + -- Currently unused + + vgRptrAddrTrackPort + OBJECT IDENTIFIER ::= { vgRptrAddrTrack 3 } + + vgRptrAddrTrackTable OBJECT-TYPE + SYNTAX SEQUENCE OF VgRptrAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of address mapping information about the + ports." + ::= { vgRptrAddrTrackPort 1 } + + vgRptrAddrTrackEntry OBJECT-TYPE + SYNTAX VgRptrAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing address mapping + information about a single port." + INDEX { vgRptrGroupIndex, vgRptrPortIndex } + ::= { vgRptrAddrTrackTable 1 } + + VgRptrAddrTrackEntry ::= + SEQUENCE { + vgRptrAddrLastTrainedAddress OCTET STRING, + vgRptrAddrTrainedAddrChanges Counter32, + vgRptrRptrDetectedDupAddress TruthValue, + vgRptrMgrDetectedDupAddress TruthValue + } + + + vgRptrAddrLastTrainedAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the MAC address of the last + station which succeeded in training on this port. + A cascaded repeater may train using the null + address. If no stations have succeeded in + training on this port since the agent began + monitoring the port activity, the agent shall + return a string of length zero." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aLastTrainedAddress." + ::= { vgRptrAddrTrackEntry 1 } + + vgRptrAddrTrainedAddrChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each time + that the vgRptrAddrLastTrainedAddress object for + this port changes." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aTrainedAddressChanges." + ::= { vgRptrAddrTrackEntry 2 } + + vgRptrRptrDetectedDupAddress OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to indicate that the + repeater detected an error-free training frame on + this port with a non-null source MAC address which + matches the value of vgRptrAddrLastTrainedAddress + of another active port in the same repeater. This + is reset to 'false' when an error-free training + frame is received with a non-null source MAC + address which does not match + vgRptrAddrLastTrainedAddress of another port which + is active in the same repeater. + + For the cascade port, this object will be 'true' + if the 'D' bit in the most recently received + error-free training response frame was set, + indicating the device at the other end of the link + believes that this repeater's cascade port is + using a duplicate address. This may be because + the device at the other end of the link detected a + duplicate address itself, or, if the other device + is also a repeater, it could be because + vgRptrMgrDetectedDupAddress was set to 'true' on + the port that this repeater's cascade port is + connected to." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aLocalRptrDetectedDupAddr." + ::= { vgRptrAddrTrackEntry 3 } + + vgRptrMgrDetectedDupAddress OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object can be set by a management station + when it detects that there is a duplicate MAC + address. This object is OR'd with + vgRptrRptrDetectedDupAddress to form the value of + the 'D' bit in training response frames on this + port. + + The purpose of this object is to provide a means + for network management software to inform an end + station that it is using a duplicate station + address. Setting this object does not affect the + current state of the link; the end station will + not be informed of the duplicate address until it + retrains for some reason. Note that regardless + of its station address, the end station will not + be able to train successfully until the network + management software has set this object back to + 'false'. Although this object exists on + cascade ports, it does not perform any function + since this repeater is the initiator of training + on a cascade port." + REFERENCE + "IEEE Standard 802.12-1995, 13.2.4.5.1, + aCentralMgmtDetectedDupAddr." + ::= { vgRptrAddrTrackEntry 4 } + + + vgRptrTraps OBJECT IDENTIFIER ::= { vgRptrMIB 2 } + vgRptrTrapPrefix OBJECT IDENTIFIER ::= { vgRptrTraps 0 } + + vgRptrHealth NOTIFICATION-TYPE + OBJECTS { vgRptrInfoOperStatus } + STATUS current + DESCRIPTION + "A vgRptrHealth trap conveys information related + to the operational state of a repeater. This trap + is sent when the value of an instance of + vgRptrInfoOperStatus changes. The vgRptrHealth + trap is not sent as a result of powering up a + repeater. + + The vgRptrHealth trap must contain the instance of + the vgRptrInfoOperStatus object associated with + the affected repeater. + + The agent must throttle the generation of + consecutive vgRptrHealth traps so that there is at + least a five-second gap between traps of this + type. When traps are throttled, they are dropped, + not queued for sending at a future time. (Note + that 'generating' a trap means sending to all + configured recipients.)" + REFERENCE + "IEEE 802.12, Layer Management, 13.2.4.2.3, + nRepeaterHealth." + ::= { vgRptrTrapPrefix 1 } + + vgRptrResetEvent NOTIFICATION-TYPE + OBJECTS { vgRptrInfoOperStatus } + STATUS current + DESCRIPTION + "A vgRptrResetEvent trap conveys information + related to the operational state of a repeater. + This trap is sent on completion of a repeater + reset action. A repeater reset action is defined + as a transition to its initial state as specified + in clause 12 [IEEE Std 802.12] when triggered by + a management command. + + The vgRptrResetEvent trap is not sent when the + agent restarts and sends an SNMP coldStart or + warmStart trap. + + The vgRptrResetEvent trap must contain the + instance of the vgRptrInfoOperStatus object + associated with the affected repeater. + + The agent must throttle the generation of + consecutive vgRptrResetEvent traps so that there + is at least a five-second gap between traps of + this type. When traps are throttled, they are + dropped, not queued for sending at a future time. + (Note that 'generating' a trap means sending to + all configured recipients.)" + REFERENCE + "IEEE 802.12, Layer Management, 13.2.4.2.3, + nRepeaterReset." + ::= { vgRptrTrapPrefix 2 } + + -- conformance information + + vgRptrConformance OBJECT IDENTIFIER ::= { vgRptrMIB 3 } + + vgRptrCompliances + OBJECT IDENTIFIER ::= { vgRptrConformance 1 } + + vgRptrGroups OBJECT IDENTIFIER ::= { vgRptrConformance 2 } + + -- compliance statements + + vgRptrCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for managed 802.12 + repeaters." + + MODULE -- this module + MANDATORY-GROUPS { vgRptrConfigGroup, + vgRptrStatsGroup, + vgRptrAddrGroup, + vgRptrNotificationsGroup } + + GROUP vgRptrStats64Group + DESCRIPTION + "Implementation of this group is recommended + for systems which can support Counter64." + + OBJECT vgRptrInfoDesiredFramingType + MIN-ACCESS read-only + DESCRIPTION + "Write access to this object is not required + in a repeater system that does not support + configuration of framing types." + + MODULE SNMP-REPEATER-MIB + GROUP snmpRptrGrpRptrAddrSearch + DESCRIPTION + "Implementation of this group is recommended + for systems which have the necessary + instrumentation to search all incoming data + streams for a particular source MAC address." + ::= { vgRptrCompliances 1 } + + -- units of conformance + + vgRptrConfigGroup OBJECT-GROUP + OBJECTS { + vgRptrInfoMACAddress, + vgRptrInfoCurrentFramingType, + vgRptrInfoDesiredFramingType, + vgRptrInfoFramingCapability, + vgRptrInfoTrainingVersion, + vgRptrInfoOperStatus, + vgRptrInfoReset, + vgRptrInfoLastChange, + vgRptrGroupObjectID, + vgRptrGroupOperStatus, + vgRptrGroupPortCapacity, + vgRptrGroupCablesBundled, + vgRptrPortType, + vgRptrPortAdminStatus, + vgRptrPortOperStatus, + vgRptrPortSupportedPromiscMode, + vgRptrPortSupportedCascadeMode, + vgRptrPortAllowedTrainType, + vgRptrPortLastTrainConfig, + vgRptrPortTrainingResult, + vgRptrPortPriorityEnable, + vgRptrPortRptrInfoIndex + } + STATUS current + DESCRIPTION + "A collection of objects for managing the status + and configuration of IEEE 802.12 repeaters." + ::= { vgRptrGroups 1 } + + vgRptrStatsGroup OBJECT-GROUP + OBJECTS { + vgRptrMonTotalReadableFrames, + vgRptrMonTotalReadableOctets, + vgRptrMonReadableOctetRollovers, + vgRptrMonTotalErrors, + vgRptrPortReadableFrames, + vgRptrPortReadableOctets, + vgRptrPortReadOctetRollovers, + vgRptrPortUnreadableOctets, + vgRptrPortUnreadOctetRollovers, + vgRptrPortHighPriorityFrames, + vgRptrPortHighPriorityOctets, + vgRptrPortHighPriOctetRollovers, + vgRptrPortNormPriorityFrames, + vgRptrPortNormPriorityOctets, + vgRptrPortNormPriOctetRollovers, + vgRptrPortBroadcastFrames, + vgRptrPortMulticastFrames, + vgRptrPortNullAddressedFrames, + vgRptrPortIPMFrames, + vgRptrPortOversizeFrames, + vgRptrPortDataErrorFrames, + vgRptrPortPriorityPromotions, + vgRptrPortTransitionToTrainings, + vgRptrPortLastChange + } + STATUS current + DESCRIPTION + "A collection of objects for providing statistics + for IEEE 802.12 repeaters. Systems which support + Counter64 should also implement + vgRptrStats64Group." + ::= { vgRptrGroups 2 } + + vgRptrStats64Group OBJECT-GROUP + OBJECTS { + vgRptrMonHCTotalReadableOctets, + vgRptrPortHCReadableOctets, + vgRptrPortHCUnreadableOctets, + vgRptrPortHCHighPriorityOctets, + vgRptrPortHCNormPriorityOctets + } + STATUS current + DESCRIPTION + "A collection of objects for providing statistics + for IEEE 802.12 repeaters in a system that + supports Counter64." + ::= { vgRptrGroups 3 } + + vgRptrAddrGroup OBJECT-GROUP + OBJECTS { + vgRptrAddrLastTrainedAddress, + vgRptrAddrTrainedAddrChanges, + vgRptrRptrDetectedDupAddress, + vgRptrMgrDetectedDupAddress + } + STATUS current + DESCRIPTION + "A collection of objects for tracking addresses + on IEEE 802.12 repeaters." + ::= { vgRptrGroups 4 } + + vgRptrNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + vgRptrHealth, + vgRptrResetEvent + } + STATUS current + DESCRIPTION + "A collection of notifications used to indicate + 802.12 repeater general status changes." + ::= { vgRptrGroups 5 } + + END diff --git a/mibs/ietf/DOT3-EPON-MIB b/mibs/ietf/DOT3-EPON-MIB new file mode 100644 index 0000000..364455f --- /dev/null +++ b/mibs/ietf/DOT3-EPON-MIB @@ -0,0 +1,2661 @@ +DOT3-EPON-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2, OBJECT-TYPE, Counter32, + Integer32, Unsigned32, Counter64 + FROM SNMPv2-SMI + TruthValue, MacAddress + FROM SNMPv2-TC + ifIndex + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ; + +dot3EponMIB MODULE-IDENTITY + LAST-UPDATED "200703290000Z" -- March 29, 2007 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working + Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + + + + In Body: subscribe your_email_address + Chair: Bert Wijnen + Postal: Lucent Technologies + Schagen 33 + 3461 GL Linschoten + Netherlands + Tel: +31-348-407-775 + E-mail: bwijnen@lucent.com + + Editor: Lior Khermosh + Postal: PMC-SIERRA + Kohav Hertzelia bldg, + 4 Hasadnaot St. + Hertzliya Pituach 46120, + ISRAEL + P.O.Box 2089 Hertzliya Pituach 46120 Israel + Tel: +972-9-9628000 Ext: 302 + E-mail: lior_khermosh@pmc-sierra.com" + DESCRIPTION + "The objects in this MIB module are used to manage the + Ethernet in the First Mile (EFM) Ethernet Passive Optical + Network (EPON) Interfaces as defined in IEEE P802.3ah + clauses 60, 64, and 65. + The following reference is used throughout this MIB module: + [802.3ah] refers to: + Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - + Part 3: Carrier sense multiple access with collision + detection (CSMA/CD) access method and physical layer + specifications - Media Access Control Parameters, + Physical Layers and Management Parameters for subscriber + access networks. IEEE Std 802.3ah-2004, October 2004. + + Of particular interest are clause 64 (Multi-Point Control + Protocol - MPCP), clause 65 (Point-to-Multipoint + Reconciliation Sublayer - P2MP RS), clause 60 (Ethernet + Passive Optical Network Physical Medium Dependent - EPON + PMDs), clause 30, 'Management', and clause 45, 'Management + Data Input/Output (MDIO) Interface'. + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of 4837; see the RFC itself for + full legal notices. + + Key abbreviations: + BER - Bit Error Rate + BW - bandwidth + + + + CRC - Cyclic Redundancy Check + EFM - Ethernet First Mile + EPON - Ethernet Passive Optical Network + FEC - Forward Error Correction + LLID - Logical Link Identifier + MAC - Media Access Control + Mbps - Megabit per second + MDIO - Management Data Input/Output + MPCP - Multi-Point Control Protocol + OLT - Optical Line Terminal (Server unit of the EPON) + OMP - Optical Multi-Point + ONU - Optical Network Unit (Client unit of the EPON) + P2MP - Point-to-Multipoint + PHY - Physical Layer + PMD - Physical Medium Dependent + PON - Passive Optical Network + RTT - Round Trip Time + SLD - Start of LLID Delimiter + TQ - Time Quanta + " + + REVISION "200703290000Z" -- March 29, 2007 + DESCRIPTION "Initial version, published as RFC 4837." + + ::= { mib-2 155 } + +dot3EponObjects OBJECT IDENTIFIER ::= { dot3EponMIB 1} + +dot3EponConformance OBJECT IDENTIFIER ::= { dot3EponMIB 2} + +-- MPCP MIB modules definitions ([802.3ah], clause 30.3.5) + +dot3EponMpcpObjects + OBJECT IDENTIFIER ::= { dot3EponObjects 1 } + +dot3MpcpControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3MpcpControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Table of dot3 Multi-Point Control Protocol (MPCP) + MIB objects. The entries in the table are control and + status objects of the MPCP. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + + + + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3EponMpcpObjects 1 } + +dot3MpcpControlEntry OBJECT-TYPE + SYNTAX Dot3MpcpControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the dot3 MPCP Control table. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex } + ::= { dot3MpcpControlTable 1} + +Dot3MpcpControlEntry ::= + SEQUENCE { + dot3MpcpOperStatus TruthValue, + dot3MpcpAdminState TruthValue, + dot3MpcpMode INTEGER, + dot3MpcpSyncTime Unsigned32, + dot3MpcpLinkID Unsigned32, + dot3MpcpRemoteMACAddress MacAddress, + dot3MpcpRegistrationState INTEGER, + dot3MpcpTransmitElapsed Unsigned32, + dot3MpcpReceiveElapsed Unsigned32, + dot3MpcpRoundTripTime Unsigned32, + dot3MpcpMaximumPendingGrants Unsigned32 + } + +dot3MpcpOperStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the operational state of the + Multi-Point MAC Control sublayer as defined in + + + + [802.3ah], clause 64. When the value is true(1), the + interface will act as if the Multi-Point Control Protocol + is enabled. When the value is false(2), the interface + will act as if the Multi-Point Control Protocol is + disabled. The operational state can be changed using the + dot3MpcpAdminState object. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU." + REFERENCE "[802.3ah], 30.3.5.1.2." + ::= { dot3MpcpControlEntry 1 } + +dot3MpcpAdminState OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to define the admin state of the + Multi-Point MAC Control sublayer, as defined in + [802.3ah], clause 64, and to reflect its state. + When selecting the value as true(1), the Multi-Point + Control Protocol of the interface is enabled. + When selecting the value as false(2), the Multi-Point + Control Protocol of the interface is disabled. + This object reflects the administrative state of the + Multi-Point Control Protocol of the interface. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3MpcpAdminState state can lead to disabling the + Multi-Point Control Protocol on the respective interface, + leading to the interruption of service for the users + connected to the respective EPON interface. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU." + REFERENCE "[802.3ah], 30.3.5.2.1." + DEFVAL { false } + ::= { dot3MpcpControlEntry 2 } + +dot3MpcpMode OBJECT-TYPE + SYNTAX INTEGER { + olt(1), + onu(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to identify the operational + state of the Multi-Point MAC Control sublayer as + defined in [802.3ah], clause 64. Reading olt(1) for an + + + + OLT (server) mode and onu(2) for an ONU (client) mode. + This object is used to identify the operational mode + for the MPCP tables. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU." + REFERENCE "[802.3ah], 30.3.5.1.3." + DEFVAL { olt } + ::= { dot3MpcpControlEntry 3 } + +dot3MpcpSyncTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "TQ (16nsec)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that reports the 'sync lock time' of the + OLT receiver in increments of Time Quanta (TQ)-16ns + as defined in [802.3ah], clauses 60, 64, and 65. The + value returned shall be (sync lock time ns)/16. If + this value exceeds (2^32-1), the value (2^32-1) shall + be returned. This object is applicable for an OLT, + with the same value for all virtual interfaces, and + for an ONU." + REFERENCE "[802.3ah], 64.3.3.2." + ::= { dot3MpcpControlEntry 4 } + +dot3MpcpLinkID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that identifies the Logical Link + Identifier (LLID) associated with the MAC of the virtual + link as specified in [802.3ah], clause 65.1.3.2.2. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The ONU and the corresponding virtual MAC of the OLT, + for the same virtual link, have the same value. + Value is assigned when the ONU registers. + Value is freed when the ONU deregisters." + REFERENCE "[802.3ah], 30.3.5.1.4." + ::= { dot3MpcpControlEntry 5 } + +dot3MpcpRemoteMACAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "An object that identifies the source_address + parameter of the last MPCPDUs passed to the MAC Control. + This value is updated on reception of a valid frame with + 1) a destination Field equal to the reserved multicast + address for MAC Control as specified in [802.3], Annex + 31A; 2) the lengthOrType field value equal to the reserved + Type for MAC Control as specified in [802.3], Annex + 31A; 3) an MPCP subtype value equal to the subtype + reserved for MPCP as specified in [802.3ah], Annex 31A. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The value reflects the MAC address of the remote entity + and therefore the OLT holds a value for each LLID, which + is the MAC address of the ONU; the ONU has a single + value that is the OLT MAC address." + REFERENCE "[802.3ah], 30.3.5.1.5." + ::= { dot3MpcpControlEntry 6 } + +dot3MpcpRegistrationState OBJECT-TYPE + SYNTAX INTEGER { + unregistered(1), + registering(2), + registered(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that identifies the registration state + of the Multi-Point MAC Control sublayer as defined in + [802.3ah], clause 64. When this object has the + enumeration unregistered(1), the interface is + unregistered and may be used for registering a link + partner. When this object has the enumeration + registering(2), the interface is in the process of + registering a link-partner. When this object has the + enumeration registered(3), the interface has an + established link-partner. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + REFERENCE "[802.3ah], 30.3.5.1.6." + ::= { dot3MpcpControlEntry 7 } + +dot3MpcpTransmitElapsed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "TQ (16nsec)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "An object that reports the interval from the last + MPCP frame transmission in increments of Time Quanta + (TQ)-16ns. The value returned shall be (interval from + last MPCP frame transmission in ns)/16. If this value + exceeds (2^32-1), the value (2^32-1) shall be returned. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + REFERENCE "[802.3ah], 30.3.5.1.19." + ::= { dot3MpcpControlEntry 8 } + +dot3MpcpReceiveElapsed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "TQ (16nsec)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that reports the interval from last MPCP frame + reception in increments of Time Quanta (TQ)-16ns. The + value returned shall be (interval from last MPCP frame + reception in ns)/16. If this value exceeds (2^32-1), the + value (2^32-1) shall be returned. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + REFERENCE "[802.3ah], 30.3.5.1.20." + ::= { dot3MpcpControlEntry 9 } + +dot3MpcpRoundTripTime OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffff'h) + UNITS "TQ (16nsec)" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that reports the MPCP round trip time in + increments of Time Quanta (TQ)-16ns. The value returned + shall be (round trip time in ns)/16. If this value + exceeds (2^16-1), the value (2^16-1) shall be returned. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + REFERENCE "[802.3ah], 30.3.5.1.21." + ::= { dot3MpcpControlEntry 10 } + +dot3MpcpMaximumPendingGrants OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that reports the maximum number of grants + that an ONU can store for handling. The maximum number + + + + of grants that an ONU can store for handling has a + range of 0 to 255. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero." + REFERENCE "[802.3ah], 30.3.5.1.24." + ::= { dot3MpcpControlEntry 11 } + +dot3MpcpStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3MpcpStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the list of statistics counters of + an interface implementing the [802.3ah], clause 64 MPCP. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." +::= { dot3EponMpcpObjects 2 } + +dot3MpcpStatEntry OBJECT-TYPE + SYNTAX Dot3MpcpStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table of statistics counters of the + [802.3ah], clause 64, MPCP interface. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual link is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex} + ::= { dot3MpcpStatTable 1 } + +Dot3MpcpStatEntry ::= + + + + SEQUENCE { + dot3MpcpMACCtrlFramesTransmitted Counter64, + dot3MpcpMACCtrlFramesReceived Counter64, + dot3MpcpDiscoveryWindowsSent Counter32, + dot3MpcpDiscoveryTimeout Counter32, + dot3MpcpTxRegRequest Counter64, + dot3MpcpRxRegRequest Counter64, + dot3MpcpTxRegAck Counter64, + dot3MpcpRxRegAck Counter64, + dot3MpcpTxReport Counter64, + dot3MpcpRxReport Counter64, + dot3MpcpTxGate Counter64, + dot3MpcpRxGate Counter64, + dot3MpcpTxRegister Counter64, + dot3MpcpRxRegister Counter64 + } + +dot3MpcpMACCtrlFramesTransmitted OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of MPCP frames passed to the MAC sublayer for + transmission. This counter is incremented when a + MA_CONTROL.request service primitive is generated within + the MAC control sublayer with an opcode indicating an + MPCP frame. + This object is applicable for an OLT and an ONU. At the + OLT it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.7." + ::= { dot3MpcpStatEntry 1 } + +dot3MpcpMACCtrlFramesReceived OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of MPCP frames passed by the MAC sublayer to the + MAC Control sublayer. This counter is incremented when a + ReceiveFrame function call returns a valid frame with + 1) a lengthOrType field value equal to the reserved + + + + Type for 802.3_MAC_Control as specified in clause 31.4.1.3, + and + 2) an opcode indicating an MPCP frame. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.8." + ::= { dot3MpcpStatEntry 2} + +dot3MpcpDiscoveryWindowsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of discovery windows generated. The counter is + incremented by one for each generated discovery window. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.22." + ::= { dot3MpcpStatEntry 3} + +dot3MpcpDiscoveryTimeout OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a discovery timeout + occurs. Increment the counter by one for each discovery + processing state-machine reset resulting from timeout + waiting for message arrival. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.23." + + + + ::= { dot3MpcpStatEntry 4} + +dot3MpcpTxRegRequest OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER_REQ MPCP + frame transmission occurs. Increment the counter by one + for each REGISTER_REQ MPCP frame transmitted as defined + in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.12." + ::= { dot3MpcpStatEntry 5} + +dot3MpcpRxRegRequest OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER_REQ MPCP + frame reception occurs. + Increment the counter by one for each REGISTER_REQ MPCP + frame received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.17." + ::= { dot3MpcpStatEntry 6} + +dot3MpcpTxRegAck OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER_ACK MPCP + frame transmission occurs. Increment the counter by one + for each REGISTER_ACK MPCP frame transmitted as defined + in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.10." + ::= { dot3MpcpStatEntry 7} + +dot3MpcpRxRegAck OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER_ACK MPCP + frame reception occurs. + Increment the counter by one for each REGISTER_ACK MPCP + frame received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.15." + ::= { dot3MpcpStatEntry 8} + +dot3MpcpTxReport OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REPORT MPCP frame + transmission occurs. Increment the counter by one for + each REPORT MPCP frame transmitted as defined in + [802.3ah], clause 64. + + + + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.13." + ::= { dot3MpcpStatEntry 9} + +dot3MpcpRxReport OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REPORT MPCP frame + reception occurs. + Increment the counter by one for each REPORT MPCP frame + received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.18." + ::= { dot3MpcpStatEntry 10} + +dot3MpcpTxGate OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a GATE MPCP frame + transmission occurs. + Increment the counter by one for each GATE MPCP frame + transmitted as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + + + + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.9." + ::= { dot3MpcpStatEntry 11} + +dot3MpcpRxGate OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a GATE MPCP frame + reception occurs. + Increment the counter by one for each GATE MPCP frame + received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.14." + ::= { dot3MpcpStatEntry 12} + +dot3MpcpTxRegister OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER MPCP frame + transmission occurs. + Increment the counter by one for each REGISTER MPCP + frame transmitted as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.11." + ::= { dot3MpcpStatEntry 13} + +dot3MpcpRxRegister OBJECT-TYPE + + + + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a REGISTER MPCP frame + reception occurs. + Increment the counter by one for each REGISTER MPCP + frame received as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.5.1.16." + ::= { dot3MpcpStatEntry 14} + +-- Optical Multi Point Emulation (OMPEmulation) +-- managed object definitions + +dot3OmpEmulationObjects OBJECT IDENTIFIER ::={dot3EponObjects 2} + +dot3OmpEmulationTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OmpEmulationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of dot3 OmpEmulation MIB objects. The table + contain objects for the management of the OMPEmulation + sublayer. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3OmpEmulationObjects 1 } + +dot3OmpEmulationEntry OBJECT-TYPE + SYNTAX Dot3OmpEmulationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An entry in the dot3 OmpEmulation table. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex } + ::= { dot3OmpEmulationTable 1 } + + Dot3OmpEmulationEntry ::= + SEQUENCE { + dot3OmpEmulationType INTEGER + } + +dot3OmpEmulationType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + olt(2), + onu(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that indicates the mode of operation + of the Reconciliation Sublayer for Point-to-Point + Emulation (see [802.3ah], clause 65.1). unknown(1) value + is assigned in initialization; true state or type is not + yet known. olt(2) value is assigned when the sublayer is + operating in OLT mode. onu(3) value is assigned when the + sublayer is operating in ONU mode. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU." + REFERENCE "[802.3ah], 30.3.7.1.2." + ::= { dot3OmpEmulationEntry 1} + +dot3OmpEmulationStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OmpEmulationStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the list of statistics counters of + + + + [802.3ah], clause 65, OMPEmulation sublayer. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3OmpEmulationObjects 2} + +dot3OmpEmulationStatEntry OBJECT-TYPE + SYNTAX Dot3OmpEmulationStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table of statistics counters of + [802.3ah], clause 65, OMPEmulation sublayer. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex} + ::= { dot3OmpEmulationStatTable 1 } + +Dot3OmpEmulationStatEntry::= + SEQUENCE { + dot3OmpEmulationSLDErrors Counter64, + dot3OmpEmulationCRC8Errors Counter64, + dot3OmpEmulationBadLLID Counter64, + dot3OmpEmulationGoodLLID Counter64, + dot3OmpEmulationOnuPonCastLLID Counter64, + dot3OmpEmulationOltPonCastLLID Counter64, + dot3OmpEmulationBroadcastBitNotOnuLlid Counter64, + dot3OmpEmulationOnuLLIDNotBroadcast Counter64, + dot3OmpEmulationBroadcastBitPlusOnuLlid Counter64, + dot3OmpEmulationNotBroadcastBitNotOnuLlid Counter64 + } + +dot3OmpEmulationSLDErrors OBJECT-TYPE + + + + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that do not contain a valid + SLD field as defined in [802.3ah], clause 65.1.3.3.1. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.3." + ::= { dot3OmpEmulationStatEntry 1} + +dot3OmpEmulationCRC8Errors OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, but do + not pass the CRC-8 check as defined in [802.3ah], clause + 65.1.3.3.3. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.4." + ::= { dot3OmpEmulationStatEntry 2} + +dot3OmpEmulationBadLLID OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, and + pass the CRC-8 check, as defined in [802.3ah], clause + 65.1.3.3.3, but are discarded due to the LLID check as + defined in [802.3ah], clause 65.1.3.3.2. + + + + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.8." + ::= { dot3OmpEmulationStatEntry 3} + +dot3OmpEmulationGoodLLID OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, and + pass the CRC-8 check as defined in [802.3ah], clause + 65.1.3.3.3. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.5." + ::= { dot3OmpEmulationStatEntry 4} + +dot3OmpEmulationOnuPonCastLLID OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, + pass the CRC-8 check, as defined in [802.3ah], clause + 65.1.3.3.3, and meet the rules of acceptance for an + ONU defined in [802.3ah], clause 65.1.3.3.2. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + + + + module." + REFERENCE "[802.3ah], 30.3.7.1.6." + ::= { dot3OmpEmulationStatEntry 5} + +dot3OmpEmulationOltPonCastLLID OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause 65.1.3.3.1, + pass the CRC-8 check, as defined in [802.3ah], clause + 65.1.3.3.3, and meet the rules of acceptance for an + OLT defined in [802.3ah], 65.1.3.3.2. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the ONU, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.3.7.1.7." + ::= { dot3OmpEmulationStatEntry 6} + +dot3OmpEmulationBroadcastBitNotOnuLlid OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause + 65.1.3.3.1, pass the CRC-8 check, as defined in + [802.3ah], clause 65.1.3.3.3, and contain the broadcast + bit in the LLID and not the ONU's LLID (frame accepted) + as defined in [802.3ah], clause 65. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3OmpEmulationStatEntry 7} + + + + +dot3OmpEmulationOnuLLIDNotBroadcast OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause + 65.1.3.3.1, pass the CRC-8 check, as defined in + [802.3ah], clause 65.1.3.3.3, and contain the ONU's LLID + as defined in [802.3ah], clause 65. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3OmpEmulationStatEntry 8} + +dot3OmpEmulationBroadcastBitPlusOnuLlid OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause + 65.1.3.3.1, pass the CRC-8 check, as defined in + [802.3ah], clause 65.1.3.3.3, and contain the broadcast + bit in the LLID and match the ONU's LLID (frame + reflected) as defined in [802.3ah], clause 65. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3OmpEmulationStatEntry 9} + +dot3OmpEmulationNotBroadcastBitNotOnuLlid OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "A count of frames received that contain a valid SLD + field, as defined in [802.3ah], clause + 65.1.3.3.1, pass the CRC-8 check, as defined in + [802.3ah], clause 65.1.3.3.3, and do not contain + the ONU's LLID as defined in [802.3ah], clause 65. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3OmpEmulationStatEntry 10} + +-- FEC managed object definitions (30.5.1) + +dot3EponFecObjects OBJECT IDENTIFIER ::={dot3EponObjects 3} + +dot3EponFecTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3EponFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of dot3 EPON FEC management objects. + The entries in the table are control and status objects + and statistic counters for the FEC layer. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3EponFecObjects 1 } + +dot3EponFecEntry OBJECT-TYPE + SYNTAX Dot3EponFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the dot3 EPON FEC table. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + + + + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex} + ::= { dot3EponFecTable 1 } + +Dot3EponFecEntry ::= + SEQUENCE { + dot3EponFecPCSCodingViolation Counter64, + dot3EponFecAbility INTEGER, + dot3EponFecMode INTEGER, + dot3EponFecCorrectedBlocks Counter64, + dot3EponFecUncorrectableBlocks Counter64, + dot3EponFecBufferHeadCodingViolation Counter64 + } + +dot3EponFecPCSCodingViolation OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a 100 Mbps operation, it is a count of the number of + times an invalid code-group is received, other than the + /H/ code-group. For a 1000 Mbps operation, it is a count + of the number of times an invalid codegroup is received, + other than the /V/ code-group. /H/ denotes a special + 4b5b codeword of [802.3] 100 Mbps PCS layer (clause 24), + and /V/ denotes a special 8b10b codeword of the [802.3] + 1000 Mbps PCS layer (clause 36). + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.5.1.1.12." + ::= { dot3EponFecEntry 1} + +dot3EponFecAbility OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + + + + supported(2), + unsupported(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that indicates the support of operation of the + optional FEC sublayer of the 1000BASE-PX PHY specified + in [802.3ah], clause 65.2. + unknown(1) value is assigned in the initialization, for non + FEC support state or type not yet known. unsupported(3) + value is assigned when the sublayer is not supported. + supported(2) value is assigned when the sublayer is + supported. + This object is applicable for an OLT, with the same + value for all virtual interfaces, and for an ONU. + The FEC counters will have a zero value when the + interface is not supporting FEC. + The counters: + dot3EponFecPCSCodingViolation - not affected by FEC + ability. + dot3EponFecCorrectedBlocks - has a zero value when + dot3EponFecAbility is unknown(1) and unsupported(3). + dot3EponFecUncorrectableBlocks - has a zero value when + dot3EponFecAbility is unknown(1) and unsupported(3). + dot3EponFecBufferHeadCodingViolation - has a zero value + when dot3EponFecAbility is unknown(1) and + unsupported(3)." + REFERENCE "[802.3ah], 30.5.1.1.13." + ::= { dot3EponFecEntry 2} + +dot3EponFecMode OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + disabled(2), + enabled(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object that defines the mode of operation of the + optional FEC sublayer of the 1000BASE-PX PHY, specified + in [802.3ah], clause 65.2, and reflects its state. + A GET operation returns the current mode of operation + of the PHY. A SET operation changes the mode of + operation of the PHY to the indicated value. + unknown(1) value is assigned in the initialization for non + FEC support state or type not yet known. + + + + disabled(2) value is assigned when the FEC sublayer is + operating in disabled mode. + enabled(3) value is assigned when the FEC sublayer is + operating in FEC mode. + The write operation is not restricted in this document + and can be done at any time. Changing dot3EponFecMode + state can lead to disabling the Forward Error Correction + on the respective interface, which can lead to a + degradation of the optical link, and therefore may lead + to an interruption of service for the users connected to + the respective EPON interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The counting of + the FEC counters will stop when the FEC of the interface + is disabled. + The counters: + dot3EponFecPCSCodingViolation - not affected by FEC + mode. + dot3EponFecCorrectedBlocks - stops counting when + Rx_FEC is not enabled. (unknown(1) and disabled(2)). + dot3EponFecUncorrectableBlocks - stops counting when + Rx_FEC is not enabled (unknown(1) and disabled(2)). + dot3EponFecBufferHeadCodingViolation - stops counting + when Rx_FEC is not enabled (unknown(1) and + disabled(2)). + The object: + dot3EponFecAbility - indicates the FEC ability and + is not affected by the dot3EponFecMode object." + REFERENCE "[802.3ah], 30.5.1.1.14." + DEFVAL { unknown } + ::= { dot3EponFecEntry 3} + +dot3EponFecCorrectedBlocks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For 10PASS-TS, 2BASE-TL, and 1000BASE-PX PHYs, it is a + count of corrected FEC blocks. This counter will not + increment for other PHY Types. Increment the counter by + one for each received block that is corrected by the FEC + function in the PHY. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + + + + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.5.1.1.15." + ::= { dot3EponFecEntry 4} + +dot3EponFecUncorrectableBlocks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For 10PASS-TS, 2BASE-TL, and 1000BASE-PX PHYs, it is a + count of uncorrectable FEC blocks. This counter will not + increment for other PHY Types. Increment the counter by + one for each FEC block that is determined to be + uncorrectable by the FEC function in the PHY. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + REFERENCE "[802.3ah], 30.5.1.1.16." + ::= { dot3EponFecEntry 5} + +dot3EponFecBufferHeadCodingViolation OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a 1000 Mbps operation, it is a count of the number of + invalid code-group received directly from the link. The + value has a meaning only in 1000 Mbps mode and it is + zero otherwise. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3EponFecEntry 6} + +-- ExtendedPackage managed object definitions + +dot3ExtPkgObjects OBJECT IDENTIFIER ::={dot3EponObjects 4} + + + + +dot3ExtPkgControlObjects OBJECT IDENTIFIER ::= { dot3ExtPkgObjects 1} + +dot3ExtPkgControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ExtPkgControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Extended package Control management + objects. Entries in the table are control and status + indication objects of an EPON interface, which are + gathered in an extended package as an addition to the + objects based on the [802.3ah], clause 30, attributes. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff)." + ::= { dot3ExtPkgControlObjects 1 } + +dot3ExtPkgControlEntry OBJECT-TYPE + SYNTAX Dot3ExtPkgControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Extended package Control table. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex} + ::= { dot3ExtPkgControlTable 1 } + +Dot3ExtPkgControlEntry ::= + SEQUENCE { + dot3ExtPkgObjectReset INTEGER, + dot3ExtPkgObjectPowerDown TruthValue, + dot3ExtPkgObjectNumberOfLLIDs Unsigned32, + + + + dot3ExtPkgObjectFecEnabled INTEGER, + dot3ExtPkgObjectReportMaximumNumQueues Unsigned32, + dot3ExtPkgObjectRegisterAction INTEGER + } + +dot3ExtPkgObjectReset OBJECT-TYPE + SYNTAX INTEGER { + running(1), + reset(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to reset the EPON interface. The + interface may be unavailable while the reset occurs and + data may be lost. + Setting this object to running(1) will cause the + interface to enter into running mode. Setting this + object to reset(2) will cause the interface to go into + reset mode. When getting running(1), the interface is in + running mode. When getting reset(2), the interface is in + reset mode. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectReset state can lead to a reset of the + respective interface, leading to an interruption of + service for the users connected to the respective EPON + interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + A reset for a specific virtual interface resets only + this virtual interface and not the physical interface. + Thus, a virtual link that is malfunctioning can be + reset without affecting the operation of other virtual + interfaces. + The reset can cause Discontinuities in the values of the + counters of the interface, similar to re-initialization + of the management system. Discontinuity should be + indicated by the ifCounterDiscontinuityTime object of + the Interface MIB module." + DEFVAL { running } + ::= { dot3ExtPkgControlEntry 1 } + +dot3ExtPkgObjectPowerDown OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This object is used to power down the EPON interface. + The interface may be unavailable while the power down + occurs and data may be lost. + Setting this object to true(1) will cause the interface + to enter into power down mode. Setting this object to + false(2) will cause the interface to go out of power + down mode. When getting true(1), the interface is in + power down mode. When getting false(2), the interface is + not in power down mode. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectPowerDown state can lead to a power down + of the respective interface, leading to an interruption + of service of the users connected to the respective EPON + interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + A power down/up of a specific virtual interface affects + only the virtual interface and not the physical + interface. Hence a virtual link, which needs a certain + handling, can be powered down and then powered up without + disrupting the operation of other virtual interfaces. + The object is relevant when the admin state of the + interface is active as set by the dot3MpcpAdminState." + DEFVAL { false } + ::= { dot3ExtPkgControlEntry 2 } + +dot3ExtPkgObjectNumberOfLLIDs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A read only object that indicates the number of + registered LLIDs. The initialization value is 0. + This object is applicable for an OLT with the same + value for all virtual interfaces and for an ONU. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff). At the ONU the + number of LLIDs for an interface is one." + ::= { dot3ExtPkgControlEntry 3 } + +dot3ExtPkgObjectFecEnabled OBJECT-TYPE + SYNTAX INTEGER { + noFecEnabled(1), + + + + fecTxEnabled(2), + fecRxEnabled(3), + fecTxRxEnabled(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object defining the FEC mode of operation of the + interface, and indicating its state. The modes defined in + this object are extensions to the FEC modes defined in + the dot3EponFecMode object. + When noFECEnabled(1), the interface does not enable FEC + mode. + When fecTxEnabled(2), the interface enables the FEC + transmit mode. + When fecRxEnabled(3), the interface enables the FEC + receive mode. + When fecTxRxEnabled(4), the interface enables the FEC + transmit and receive mode. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The FEC counters are referring to the receive path. The + FEC counters will stop when the FEC receive mode of the + interface is disabled, as defined by fecRxEnabled(3) + and fecTxRxEnabled(4) values. + The counters: + dot3EponFecPCSCodingViolation - not affected by FEC + mode. + dot3EponFecCorrectedBlocks - stops counting when + Rx_FEC is not enabled (noFecEnabled(1) and + fecTxEnabled(2)). + dot3EponFecUncorrectableBlocks - stops counting when + Rx_FEC is not enabled (noFecEnabled(1) and + fecTxEnabled(2)). + dot3EponFecBufferHeadCodingViolation - stops counting + when Rx_FEC is not enabled (noFecEnabled(1) and + fecTxEnabled(2)). + The objects: + dot3EponFecAbility - indicates the FEC ability and is + not affected by the FEC mode. + dot3EponFecMode - indicates the FEC mode for combined RX + and TX. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectFecEnabled state can lead to disabling + the Forward Error Correction on the respective interface, + which can lead to a degradation of the optical link, and + therefore may lead to an interruption of service for the + + + + users connected to the respective EPON interface." + DEFVAL { noFecEnabled } + ::= { dot3ExtPkgControlEntry 4 } + +dot3ExtPkgObjectReportMaximumNumQueues OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object, that defines the maximal number of queues in + the REPORT message as defined in [802.3ah], clause 64. For + further information please see the description of the + queue table. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + DEFVAL { 0 } + ::= { dot3ExtPkgControlEntry 5 } + +dot3ExtPkgObjectRegisterAction OBJECT-TYPE + SYNTAX INTEGER { + none(1), + register(2), + deregister(3), + reregister(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object configuring the registration state of an + interface, and indicating its registration state. + Write operation changes the registration state to its new + value. + Read operation returns the value of the state. + The registration state is reflected in this object and in + the dot3MpcpRegistrationState object. + none(1) indicates an unknown state, + register(2) indicates a registered LLID, + deregister(3) indicates a deregistered LLID, + reregister(4) indicates an LLID that is reregistering. + The following list describes the operation of the + interface, as specified in the [802.3ah], when a write + operation is setting a value. + none(1) - not doing any action. + register(2) - registering an LLID that has been requested + for registration (The LLID is in registering mode. + dot3MpcpRegistrationState - registering(2) ). + deregister(3) - deregisters an LLID that is registered + (dot3MpcpRegistrationState - registered(3) ). + + + + reregister(4) - reregister an LLID that is registered + (dot3MpcpRegistrationState - registered(3) ). + The behavior of an ONU and OLT interfaces, at each one + of the detailed operation at each state, is described in + the registration state machine of figure 64-22, + [802.3ah]. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectRegisterAction state can lead to a change + in the registration state of the respective interface + leading to a deregistration and an interruption of + service of the users connected to the respective EPON + interface." + DEFVAL { none } + ::= { dot3ExtPkgControlEntry 6 } + + dot3ExtPkgQueueTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ExtPkgQueueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the extended package objects for queue + management. The [802.3ah] MPCP defines a report message + of the occupancy of the transmit queues for the feedback + BW request from the ONUs. These queues serve the uplink + transmission of the ONU and data is gathered there until + the ONU is granted for transmission. + The management table of the queues is added here mainly + to control the reporting and to gather some statistics + of their operation. This table is not duplicating + existing management objects of bridging queues, + specified in [802.1d], since the existence of a + dedicated transmit queuing mechanism is implied in the + [802.3ah], and the ONU may be a device that is not a + bridge with embedded bridging queues. + The format of the REPORT message, as specified + in [802.3], is presented below: + +-----------------------------------+ + | Destination Address | + +-----------------------------------+ + | Source Address | + +-----------------------------------+ + | Length/Type | + +-----------------------------------+ + | OpCode | + +-----------------------------------+ + + + + | TimeStamp | + +-----------------------------------+ + | Number of queue Sets | + +-----------------------------------+ /|\ + | Report bitmap | | + +-----------------------------------+ | + | Queue 0 report | | + +-----------------------------------+ | repeated for + | Queue 1 report | | every + +-----------------------------------+ | queue_set + | Queue 2 report | | + +-----------------------------------+ | + | Queue 3 report | | + +-----------------------------------+ | + | Queue 4 report | | + +-----------------------------------+ | + | Queue 5 report | | + +-----------------------------------+ | + | Queue 6 report | | + +-----------------------------------+ | + | Queue 7 report | | + +-----------------------------------+ \|/ + | Pad/reserved | + +-----------------------------------+ + | FCS | + +-----------------------------------+ + + The 'Queue report' field reports the occupancy of each + uplink transmission queue. + The number of queue sets defines the number of the + reported sets, as would be explained in the description + of the dot3ExtPkgQueueSetsTable table. For each set the + report bitmap defines which queue is present in the + report, meaning that although the MPCP REPORT message + can report up to 8 queues in a REPORT message, the + actual number is flexible. The Queue table has a + variable size that is limited by the + dot3ExtPkgObjectReportMaximumNumQueues object, as an + ONU can have fewer queues to report. + The entries in the table are control and status + indication objects for managing the queues of an EPON + interface that are gathered in an extended package as + an addition to the objects that are based on the + [802.3ah] attributes. + Each object has a row for every virtual link and for + every queue in the report. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + + + + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff). + The number of queues is between 0 and 7 and limited by + dot3ExtPkgObjectReportMaximumNumQueues." + ::= { dot3ExtPkgControlObjects 2 } + + dot3ExtPkgQueueEntry OBJECT-TYPE + SYNTAX Dot3ExtPkgQueueEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Extended package Queue table. At the + OLT, the rows exist for each ifIndex and dot3QueueIndex. + At the ONU, rows exist for the single ifIndex for each + dot3QueueIndex. + Rows in the table are created when the ifIndex of the + link is created. A set of rows per queue are added for + each ifIndex, denoted by the dot3QueueIndex. + A set of rows per queue in the table, for an ONU + interface, are created at the system initialization. + A set of rows per queue in the table, corresponding to + the OLT ifIndex and a set of rows per queue + corresponding to the broadcast virtual link, are + created at the system initialization. + A set of rows per queue in the table, corresponding to + the ifIndex of a virtual link, are created when the + virtual link is established (ONU registers), and deleted + when the virtual link is deleted (ONU deregisters)." + INDEX { ifIndex, dot3QueueIndex } + ::= { dot3ExtPkgQueueTable 1 } + + Dot3ExtPkgQueueEntry ::= + SEQUENCE { + dot3QueueIndex Unsigned32, + dot3ExtPkgObjectReportNumThreshold Unsigned32, + dot3ExtPkgObjectReportMaximumNumThreshold Unsigned32, + dot3ExtPkgStatTxFramesQueue Counter64, + dot3ExtPkgStatRxFramesQueue Counter64, + dot3ExtPkgStatDroppedFramesQueue Counter64 + } + + dot3QueueIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An object that identifies an index for the queue table + reflecting the queue index of the queues that are + reported in the MPCP REPORT message as defined in + [802.3ah], clause 64. + The number of queues is between 0 and 7, and limited by + dot3ExtPkgObjectReportMaximumNumQueues." + ::= { dot3ExtPkgQueueEntry 1 } + + dot3ExtPkgObjectReportNumThreshold OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object that defines the number of thresholds for each + queue in the REPORT message as defined in [802.3ah], + clause 64. + Each queue_set reporting will provide information on the + queue occupancy of frames below the matching Threshold. + Read operation reflects the number of thresholds. + Write operation sets the number of thresholds for each + queue. + The write operation is not restricted in this document + and can be done at any time. Value cannot exceed the + maximal value defined by the + dot3ExtPkgObjectReportMaximumNumThreshold object. + Changing dot3ExtPkgObjectReportNumThreshold can lead to + a change in the reporting of the ONU interface and + therefore to a change in the bandwidth allocation of the + respective interface. This change may lead a degradation + or an interruption of service of the users connected to + the respective EPON interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue." + DEFVAL { 0 } + ::= { dot3ExtPkgQueueEntry 2 } + + dot3ExtPkgObjectReportMaximumNumThreshold OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object, that defines the maximal number of thresholds + for each queue in the REPORT message as defined in + [802.3ah], clause 64. Each queue_set reporting will + provide information on the queue occupancy of frames + below the matching Threshold. + + + + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue." + DEFVAL { 0 } + ::= { dot3ExtPkgQueueEntry 3 } + + dot3ExtPkgStatTxFramesQueue OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a frame transmission + occurs from the corresponding 'Queue'. + Increment the counter by one for each frame transmitted, + which is an output of the 'Queue'. + The 'Queue' marking matches the REPORT MPCP message + Queue field as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue. + At the OLT the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3ExtPkgQueueEntry 4} + + dot3ExtPkgStatRxFramesQueue OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a frame reception + occurs from the corresponding 'Queue'. + Increment the counter by one for each frame received, + which is an input to the corresponding 'Queue'. + The 'Queue' marking matches the REPORT MPCP message + Queue field as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue. + Discontinuities of this counter can occur at + + + + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3ExtPkgQueueEntry 5} + + dot3ExtPkgStatDroppedFramesQueue OBJECT-TYPE + SYNTAX Counter64 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times a frame drop + occurs from the corresponding 'Queue'. + Increment the counter by one for each frame dropped + from the corresponding 'Queue'. + The 'Queue' marking matches the REPORT MPCP message + Queue field as defined in [802.3ah], clause 64. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface + and for each queue. At the ONU, it has a distinct value + for each queue. + At the OLT, the value should be zero. + Discontinuities of this counter can occur at + re-initialization of the management system and at other + times, as indicated by the value of the + ifCounterDiscontinuityTime object of the Interface MIB + module." + ::= { dot3ExtPkgQueueEntry 6} + + dot3ExtPkgQueueSetsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ExtPkgQueueSetsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Extended package objects used for the + management of the queue_sets. Entries are control and + status indication objects of an EPON interface, which + are gathered in an extended package as an addition to + the objects based on the [802.3ah] attributes. The + objects in this table are specific for the queue_sets, + which are reported in the MPCP REPORT message as defined + in [802.3ah], clause 64. + The [802.3ah] MPCP defines a report message of the + occupancy of the transmit queues for the feedback BW + request from the ONUs. These queues serve the uplink + transmission of the ONU and data is gathered there until + the ONU is granted for transmission. + + + + The management table of the queues_sets is added here + mainly to control the reporting and to gather some + statistics of their operation. This table is not + duplicating existing management objects of bridging + queues, specified in [802.1d], since the existence of a + dedicated transmit queuing mechanism is implied in the + [802.3ah], and the ONU may be a device that is not a + bridge with embedded bridging queues. + The format of the REPORT message, as specified + in [802.3], is presented below: + +-----------------------------------+ + | Destination Address | + +-----------------------------------+ + | Source Address | + +-----------------------------------+ + | Length/Type | + +-----------------------------------+ + | OpCode | + +-----------------------------------+ + | TimeStamp | + +-----------------------------------+ + | Number of queue Sets | + +-----------------------------------+ /|\ + | Report bitmap | | + +-----------------------------------+ | + | Queue 0 report | | + +-----------------------------------+ | repeated for + | Queue 1 report | | every + +-----------------------------------+ | queue_set + | Queue 2 report | | + +-----------------------------------+ | + | Queue 3 report | | + +-----------------------------------+ | + | Queue 4 report | | + +-----------------------------------+ | + | Queue 5 report | | + +-----------------------------------+ | + | Queue 6 report | | + +-----------------------------------+ | + | Queue 7 report | | + +-----------------------------------+ \|/ + | Pad/reserved | + +-----------------------------------+ + | FCS | + +-----------------------------------+ + + As can be seen from the message format, the ONU + interface reports of the status of up to 8 queues + + + + and it can report in a single MPCP REPORT message + of a few sets of queues. + The number of queue_sets defines the number of the + reported sets, and it can reach a value of up to 8. + It means that an ONU can hold a variable number of + sets between 0 and 7. + The dot3ExtPkgQueueSetsTable table has a variable + queue_set size that is limited by the + dot3ExtPkgObjectReportMaximumNumThreshold object as an + ONU can have fewer queue_sets to report. + The 'Queue report' field reports the occupancy of each + uplink transmission queue. The queue_sets can be used to + report the occupancy of the queues in a few levels as to + allow granting, in an accurate manner, of only part of + the data available in the queues. A Threshold is + defined for each queue_set to define the level of the + queue that is counted for the report of the occupancy. + The threshold is reflected in the queue_set table by the + dot3ExtPkgObjectReportThreshold object. + For each queue set, the report bitmap defines which + queues are present in the report, meaning that + although the MPCP REPORT message can report of up to 8 + queues in a REPORT message, the actual number is + flexible. + The dot3ExtPkgQueueSetsTable table has a variable queue + size that is limited by the + dot3ExtPkgObjectReportMaximumNumQueues object as an ONU + can have fewer queues to report. + Each object has a row for every virtual link, for each + queue in the report and for each queue_set in the queue. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff). + The number of queues is between 0 and 7 and limited by + dot3ExtPkgObjectReportMaximumNumQueues. + The number of queues_sets is between 0 and 7 and limited + by dot3ExtPkgObjectReportMaximumNumThreshold." + ::= { dot3ExtPkgControlObjects 3 } + + dot3ExtPkgQueueSetsEntry OBJECT-TYPE + SYNTAX Dot3ExtPkgQueueSetsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Extended package queue_set table. At + + + + the OLT, the rows exist for each ifIndex, + dot3QueueSetQueueIndex and dot3QueueSetIndex. At the + ONU, rows exist for the single ifIndex, for each + dot3QueueSetQueueIndex and dot3QueueSetIndex. + Rows in the table are created when the ifIndex of the + link is created. A set of rows per queue and per + queue_set are added for each ifIndex, denoted by + dot3QueueSetIndex and dot3QueueSetQueueIndex. + A set of rows per queue and per queue_set in the table, + for an ONU interface are created at system + initialization. + A set of rows per queue and per queue_Set in the table, + corresponding to the OLT ifIndex and a set of rows per + queue and per queue_set, corresponding to the broadcast + virtual link, are created at system initialization. + A set of rows per queue and per queue_set in the table, + corresponding to the ifIndex of a virtual link are + created when the virtual link is established (ONU + registers) and deleted when the virtual link is deleted + (ONU deregisters)." + INDEX { ifIndex, + dot3QueueSetQueueIndex,dot3QueueSetIndex} + ::= { dot3ExtPkgQueueSetsTable 1 } + + Dot3ExtPkgQueueSetsEntry ::= + SEQUENCE { + dot3QueueSetQueueIndex Unsigned32, + dot3QueueSetIndex Unsigned32, + dot3ExtPkgObjectReportThreshold Unsigned32 + } + + dot3QueueSetQueueIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An object that identifies the queue index for the + dot3ExtPkgQueueSetsTable table. The queues are reported + in the MPCP REPORT message as defined in [802.3ah], + clause 64. + The number of queues is between 0 and 7, and limited by + dot3ExtPkgObjectReportMaximumNumQueues. + Value corresponds to the dot3QueueIndex of the queue + table." + ::= { dot3ExtPkgQueueSetsEntry 1 } + + dot3QueueSetIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An object that identifies the queue_set index for the + dot3ExtPkgQueueSetsTable table. The queues are reported + in the MPCP REPORT message as defined in [802.3ah], + clause 64. + The number of queues_sets is between 0 and 7, and + limited by dot3ExtPkgObjectReportMaximumNumThreshold." + ::= { dot3ExtPkgQueueSetsEntry 2 } + + dot3ExtPkgObjectReportThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "TQ (16nsec)" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An object that defines the value of a threshold report + for each queue_set in the REPORT message as defined in + [802.3ah], clause 64. The number of sets for each queue + is dot3ExtPkgObjectReportNumThreshold. + In the REPORT message, each queue_set reporting will + provide information on the occupancy of the queues for + frames below the matching Threshold. + The value returned shall be in Time quanta (TQ), which + is 16nsec or 2 octets increments. + Read operation provides the threshold value. Write + operation sets the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgObjectReportThreshold can lead to a change in + the reporting of the ONU interface and therefore to a + change in the bandwidth allocation of the respective + interface. This change may lead a degradation or an + interruption of service for the users connected to the + respective EPON interface. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface, + for each queue and for each queue_set. At the ONU, it has + a distinct value for each queue and for each queue_set." + DEFVAL { 0 } + ::= { dot3ExtPkgQueueSetsEntry 3 } + + --Optical Interface status tables + + dot3ExtPkgOptIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ExtPkgOptIfEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table defines the control and status indication + objects for the optical interface of the EPON interface. + Each object has a row for every virtual link denoted by + the corresponding ifIndex. + The LLID field, as defined in the [802.3ah], is a 2-byte + register (15-bit field and a broadcast bit) limiting the + number of virtual links to 32768. Typically the number + of expected virtual links in a PON is like the number of + ONUs, which is 32-64, plus an additional entry for + broadcast LLID (with a value of 0xffff). + Although the optical interface is a physical interface, + there is a row in the table for each virtual interface. + The reason for having a separate row for each virtual + link is that the OLT has a separate link for each one of + the ONUs. For instance, ONUs could be in different + distances with different link budgets and different + receive powers, therefore having different power alarms. + It is quite similar to a case of different physical + interfaces." + ::= { dot3ExtPkgControlObjects 5} + + dot3ExtPkgOptIfEntry OBJECT-TYPE + SYNTAX Dot3ExtPkgOptIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the optical interface table of the EPON + interface. + Rows exist for an OLT interface and an ONU interface. + A row in the table is denoted by the ifIndex of the link + and it is created when the ifIndex is created. + The rows in the table for an ONU interface are created + at system initialization. + The row in the table corresponding to the OLT ifIndex + and the row corresponding to the broadcast virtual link + are created at system initialization. + A row in the table corresponding to the ifIndex of a + virtual links is created when a virtual link is + established (ONU registers) and deleted when the virtual + link is deleted (ONU deregisters)." + INDEX { ifIndex } + ::= { dot3ExtPkgOptIfTable 1 } + + Dot3ExtPkgOptIfEntry ::= + SEQUENCE { + dot3ExtPkgOptIfSuspectedFlag TruthValue, + + + + dot3ExtPkgOptIfInputPower Integer32, + dot3ExtPkgOptIfLowInputPower Integer32, + dot3ExtPkgOptIfHighInputPower Integer32, + dot3ExtPkgOptIfLowerInputPowerThreshold Integer32, + dot3ExtPkgOptIfUpperInputPowerThreshold Integer32, + dot3ExtPkgOptIfOutputPower Integer32, + dot3ExtPkgOptIfLowOutputPower Integer32, + dot3ExtPkgOptIfHighOutputPower Integer32, + dot3ExtPkgOptIfLowerOutputPowerThreshold Integer32, + dot3ExtPkgOptIfUpperOutputPowerThreshold Integer32, + dot3ExtPkgOptIfSignalDetect TruthValue, + dot3ExtPkgOptIfTransmitAlarm TruthValue, + dot3ExtPkgOptIfTransmitEnable TruthValue + } + + dot3ExtPkgOptIfSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a reliability indication. + If true, the data in this entry may be unreliable. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 1 } + + dot3ExtPkgOptIfInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the input. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 2 } + + dot3ExtPkgOptIfLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 15-minute interval. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 3 } + + + + dot3ExtPkgOptIfHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 15-minute interval. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 4 } + + dot3ExtPkgOptIfLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + dot3ExtPkgOptIfInputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent. + Reading will present the threshold value. Writing will + set the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfLowerInputPowerThreshold can lead to a Threshold + Crossing Alert (TCA) being sent for the respective interface. + This alert may be leading to an interruption of service for the + users connected to the respective EPON interface, depending on + the system action on such an alert. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 5 } + + dot3ExtPkgOptIfUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on input power. If + dot3ExtPkgOptIfInputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent. + Reading will present the threshold value. Writing will + set the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfUpperInputPowerThreshold can lead to a Threshold + + + + Crossing Alert (TCA) being sent for the respective interface. + This alert may be leading to an interruption of service for the + users connected to the respective EPON interface, depending on + the system action on such an alert. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 6 } + + dot3ExtPkgOptIfOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 7 } + + dot3ExtPkgOptIfLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 8 } + + dot3ExtPkgOptIfHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 9 } + + dot3ExtPkgOptIfLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The lower limit threshold on output power. If + dot3ExtPkgOptIfOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent. + Reading will present the threshold value. Writing will + set the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfLowerOutputPowerThreshold can lead to a Threshold + Crossing Alert (TCA) being sent for the respective interface. + This alert may be leading to an interruption of service for the + users connected to the respective EPON interface, depending on + the system action on such an alert. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 10 } + + dot3ExtPkgOptIfUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + dot3ExtPkgOptIfOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent. + Reading will present the threshold value. Writing will + set the value of the threshold. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfUpperOutputPowerThreshold can lead to a Threshold + Crossing Alert (TCA) being sent for the respective interface. + This alert may be leading to an interruption of service of the + users connected to the respective EPON interface, depending on + the system action on such an alert. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + ::= { dot3ExtPkgOptIfEntry 11 } + + dot3ExtPkgOptIfSignalDetect OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When getting true(1), there is a valid optical signal at + the receive that is above the optical power level for + signal detection. When getting false(2) the optical + signal at the receive is below the optical power level + + + + for signal detection. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + DEFVAL { false } + ::= { dot3ExtPkgOptIfEntry 12 } + + dot3ExtPkgOptIfTransmitAlarm OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When getting true(1) there is a non-valid optical signal + at the transmit of the interface, either a higher level + or lower level than expected. When getting false(2) the + optical signal at the transmit is valid and in the + required range. + This object is applicable for an OLT and an ONU. At the + OLT, it has a distinct value for each virtual interface." + DEFVAL { false } + ::= { dot3ExtPkgOptIfEntry 13 } + + dot3ExtPkgOptIfTransmitEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to true(1) will cause the optical + interface to start transmission (according to the + control protocol specified for the logical interface). + Setting this object to false(2) will cause the + interface to stop the optical transmission. + When getting true(1), the optical interface is in + transmitting mode (obeying to the logical control + protocol). + When getting false(2), the optical interface is not in + transmitting mode. + The write operation is not restricted in this document + and can be done at any time. Changing + dot3ExtPkgOptIfTransmitEnable state can lead to a halt + in the optical transmission of the respective interface + leading to an interruption of service of the users + connected to the respective EPON interface. + The object is relevant when the admin state of the + interface is active as set by the dot3MpcpAdminState. + This object is applicable for an OLT and an ONU. At the + OLT it, has a distinct value for each virtual interface." + DEFVAL { false } + ::= { dot3ExtPkgOptIfEntry 14 } + + + + -- Conformance Statements + + -- Conformance Groups + + dot3EponGroups OBJECT IDENTIFIER ::= { dot3EponConformance 1 } + + dot3MpcpGroupBase OBJECT-GROUP + OBJECTS { + dot3MpcpOperStatus, + dot3MpcpAdminState, + dot3MpcpMode, + dot3MpcpSyncTime, + dot3MpcpLinkID, + dot3MpcpRemoteMACAddress, + dot3MpcpRegistrationState, + dot3MpcpMaximumPendingGrants, + dot3MpcpTransmitElapsed, + dot3MpcpReceiveElapsed, + dot3MpcpRoundTripTime + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 Mpcp Control entity state + definition. Objects are per LLID." + ::= { dot3EponGroups 1 } + + dot3MpcpGroupStat OBJECT-GROUP + OBJECTS { + dot3MpcpMACCtrlFramesTransmitted, + dot3MpcpMACCtrlFramesReceived, + dot3MpcpDiscoveryWindowsSent, + dot3MpcpDiscoveryTimeout, + dot3MpcpTxRegRequest, + dot3MpcpRxRegRequest, + dot3MpcpTxRegAck, + dot3MpcpRxRegAck, + dot3MpcpTxReport, + dot3MpcpRxReport, + dot3MpcpTxGate, + dot3MpcpRxGate, + dot3MpcpTxRegister, + dot3MpcpRxRegister + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 Mpcp Statistics. + Objects are per LLID." + ::= { dot3EponGroups 2 } + + + + dot3OmpeGroupID OBJECT-GROUP + OBJECTS { + dot3OmpEmulationType + + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 OMP emulation entity + state definition. Objects are per LLID." + ::= { dot3EponGroups 3 } + + dot3OmpeGroupStat OBJECT-GROUP + OBJECTS { + dot3OmpEmulationSLDErrors, + dot3OmpEmulationCRC8Errors, + dot3OmpEmulationBadLLID, + dot3OmpEmulationGoodLLID, + dot3OmpEmulationOnuPonCastLLID, + dot3OmpEmulationOltPonCastLLID, + dot3OmpEmulationBroadcastBitNotOnuLlid, + dot3OmpEmulationOnuLLIDNotBroadcast, + dot3OmpEmulationBroadcastBitPlusOnuLlid, + dot3OmpEmulationNotBroadcastBitNotOnuLlid + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 OMP emulation + Statistics. Objects are per LLID." + ::= { dot3EponGroups 4 } + + dot3EponFecGroupAll OBJECT-GROUP + OBJECTS { + dot3EponFecPCSCodingViolation, + dot3EponFecAbility, + dot3EponFecMode, + dot3EponFecCorrectedBlocks, + dot3EponFecUncorrectableBlocks, + dot3EponFecBufferHeadCodingViolation + } + STATUS current + DESCRIPTION + "A collection of objects of dot3 FEC group control and + statistics. Objects are per LLID." + ::= { dot3EponGroups 5 } + + dot3ExtPkgGroupControl OBJECT-GROUP + OBJECTS { + dot3ExtPkgObjectReset, + + + + dot3ExtPkgObjectPowerDown, + dot3ExtPkgObjectNumberOfLLIDs, + dot3ExtPkgObjectFecEnabled, + dot3ExtPkgObjectReportMaximumNumQueues, + dot3ExtPkgObjectRegisterAction + } + STATUS current + DESCRIPTION + "A collection of objects of dot3ExtPkg control + definition. Objects are per LLID." + ::= { dot3EponGroups 6 } + + dot3ExtPkgGroupQueue OBJECT-GROUP + OBJECTS { + dot3ExtPkgObjectReportNumThreshold, + dot3ExtPkgObjectReportMaximumNumThreshold, + dot3ExtPkgStatTxFramesQueue, + dot3ExtPkgStatRxFramesQueue, + dot3ExtPkgStatDroppedFramesQueue + } + STATUS current + DESCRIPTION + "A collection of objects of dot3ExtPkg Queue + control. Objects are per LLID, per queue." + ::= { dot3EponGroups 7 } + + dot3ExtPkgGroupQueueSets OBJECT-GROUP + OBJECTS { + dot3ExtPkgObjectReportThreshold + } + STATUS current + DESCRIPTION + "A collection of objects of dot3ExtPkg queue_set + control. Objects are per LLID, per queue, per + queue_set." + ::= { dot3EponGroups 8 } + + dot3ExtPkgGroupOptIf OBJECT-GROUP + OBJECTS { + dot3ExtPkgOptIfSuspectedFlag, + dot3ExtPkgOptIfInputPower, + dot3ExtPkgOptIfLowInputPower, + dot3ExtPkgOptIfHighInputPower, + dot3ExtPkgOptIfLowerInputPowerThreshold, + dot3ExtPkgOptIfUpperInputPowerThreshold, + dot3ExtPkgOptIfOutputPower, + dot3ExtPkgOptIfLowOutputPower, + dot3ExtPkgOptIfHighOutputPower, + + + + dot3ExtPkgOptIfLowerOutputPowerThreshold, + dot3ExtPkgOptIfUpperOutputPowerThreshold, + dot3ExtPkgOptIfSignalDetect, + dot3ExtPkgOptIfTransmitAlarm, + dot3ExtPkgOptIfTransmitEnable + } + STATUS current + DESCRIPTION + "A collection of objects of control and status indication + of the optical interface. + Objects are per LLID." + ::= { dot3EponGroups 9 } + + -- Compliance + + dot3EponCompliances + OBJECT IDENTIFIER ::= { dot3EponConformance 2 } + + dot3MPCPCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for Multi-Point + Control Protocol interfaces." + + MODULE -- this module + MANDATORY-GROUPS { dot3MpcpGroupBase} + + GROUP dot3MpcpGroupStat + DESCRIPTION "This group is mandatory for all MPCP supporting + interfaces for statistics collection." + ::= { dot3EponCompliances 1} + + dot3OmpeCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for OMPEmulation + interfaces." + + MODULE -- this module + MANDATORY-GROUPS { dot3OmpeGroupID} + + GROUP dot3OmpeGroupStat + DESCRIPTION "This group is mandatory for all OMPemulation + supporting interfaces for statistics collection." + + ::= { dot3EponCompliances 2} + + dot3EponFecCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for FEC EPON interfaces. + + + + This group is mandatory for all FEC supporting + interfaces for control and statistics collection." + + MODULE -- this module + MANDATORY-GROUPS { dot3EponFecGroupAll } + + ::= { dot3EponCompliances 3} + + dot3ExtPkgCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for EPON Interfaces + using the extended package." + MODULE -- this module + MANDATORY-GROUPS { dot3ExtPkgGroupControl } + + GROUP dot3ExtPkgGroupQueue + DESCRIPTION " This group is mandatory for all EPON interfaces + supporting REPORT queue management of the extended + package." + + GROUP dot3ExtPkgGroupQueueSets + DESCRIPTION " This group is mandatory for all EPON interfaces + supporting REPORT queue_sets management of the + extended package." + + GROUP dot3ExtPkgGroupOptIf + DESCRIPTION "This group is mandatory for all EPON interfaces + supporting optical interfaces management, + of the extended package." + + ::= { dot3EponCompliances 4} + + END diff --git a/mibs/ietf/DOT3-OAM-MIB b/mibs/ietf/DOT3-OAM-MIB new file mode 100644 index 0000000..2932fbc --- /dev/null +++ b/mibs/ietf/DOT3-OAM-MIB @@ -0,0 +1,2227 @@ +DOT3-OAM-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, mib-2, OBJECT-TYPE, Counter32, Unsigned32, + Integer32, NOTIFICATION-TYPE + FROM SNMPv2-SMI + -- from [RFC2578] + TEXTUAL-CONVENTION, MacAddress, TimeStamp, TruthValue + + FROM SNMPv2-TC + -- from [RFC2579] + CounterBasedGauge64 + FROM HCNUM-TC + -- from [RFC2856] + ifIndex + FROM IF-MIB + -- from [RFC2863] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + + + + -- from [RFC2580] + + dot3OamMIB MODULE-IDENTITY + LAST-UPDATED "200706140000Z" -- June 14,2007" + ORGANIZATION + "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/hubmib-charter.html + Mailing lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-requests@ietf.org + In Body: subscribe your_email_address + Chair: Bert Wijnen + Alcatel-Lucent + Email: bwijnen at alcatel-lucent dot com + Editor: Matt Squire + Hatteras Networks + E-mail: msquire at hatterasnetworks dot com + " + DESCRIPTION + "The MIB module for managing the new Ethernet OAM features + introduced by the Ethernet in the First Mile taskforce (IEEE + 802.3ah). The functionality presented here is based on IEEE + 802.3ah [802.3ah], released in October, 2004. [802.3ah] was + prepared as an addendum to the standing version of IEEE 802.3 + [802.3-2002]. Since then, [802.3ah] has been + merged into the base IEEE 802.3 specification in [802.3-2005]. + + In particular, this MIB focuses on the new OAM functions + introduced in Clause 57 of [802.3ah]. The OAM functionality + of Clause 57 is controlled by new management attributes + introduced in Clause 30 of [802.3ah]. The OAM functions are + not specific to any particular Ethernet physical layer, and + can be generically applied to any Ethernet interface of + [802.3-2002]. + + An Ethernet OAM protocol data unit is a valid Ethernet frame + with a destination MAC address equal to the reserved MAC + address for Slow Protocols (See 43B of [802.3ah]), a + lengthOrType field equal to the reserved type for Slow + Protocols, and a Slow Protocols subtype equal to that of the + subtype reserved for Ethernet OAM. OAMPDU is used throughout + this document as an abbreviation for Ethernet OAM protocol + data unit. + + The following reference is used throughout this MIB module: + + + + + [802.3ah] refers to: + IEEE Std 802.3ah-2004: 'Draft amendment to - + Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - Part + 3: Carrier sense multiple access with collision detection + (CSMA/CD) access method and physical layer specifications + - Media Access Control Parameters, Physical Layers and + Management Parameters for subscriber access networks', + October 2004. + + [802.3-2002] refers to: + IEEE Std 802.3-2002: + 'Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - Part + 3: Carrier sense multiple access with collision detection + (CSMA/CD) access method and physical layer specifications + - Media Access Control Parameters, Physical Layers and + Management Parameters for subscriber access networks', + March 2002. + + [802.3-2005] refers to: + IEEE Std 802.3-2005: + 'Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - Part + 3: Carrier sense multiple access with collision detection + (CSMA/CD) access method and physical layer specifications + - Media Access Control Parameters, Physical Layers and + Management Parameters for subscriber access networks', + December 2005. + + [802-2001] refers to: + 'IEEE Standard for LAN/MAN (Local Area + Network/Metropolitan Area Network): Overview and + Architecture', IEEE 802, June 2001. + + Copyright (c) The IETF Trust (2007). This version of + this MIB module is part of RFC 4878; See the RFC itself for + full legal notices. " + + REVISION "200706140000Z" -- June 14, 2007" + DESCRIPTION "Initial version, published as RFC 4878." + ::= { mib-2 158 } + + -- + -- Sections of the Ethernet OAM MIB + + + + -- + dot3OamNotifications OBJECT IDENTIFIER ::= { dot3OamMIB 0 } + dot3OamObjects OBJECT IDENTIFIER ::= { dot3OamMIB 1 } + dot3OamConformance OBJECT IDENTIFIER ::= { dot3OamMIB 2 } + + -- + -- Textual conventions for the OAM MIB + -- + EightOTwoOui ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "24-bit Organizationally Unique Identifier. Information on + OUIs can be found in IEEE 802-2001 [802-2001], Clause 9." + SYNTAX OCTET STRING(SIZE(3)) + + -- *************************************************************** + -- + -- Ethernet OAM Control group + -- + + dot3OamTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the primary controls and status for the + OAM capabilities of an Ethernet-like interface. There will be + one row in this table for each Ethernet-like interface in the + system that supports the OAM functions defined in [802.3ah]. + " + ::= { dot3OamObjects 1 } + + dot3OamEntry OBJECT-TYPE + SYNTAX Dot3OamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table that contains information on the + Ethernet OAM function for a single Ethernet like interface. + Entries in the table are created automatically for each + interface supporting Ethernet OAM. The status of the row + entry can be determined from dot3OamOperStatus. + + A dot3OamEntry is indexed in the dot3OamTable by the ifIndex + object of the Interfaces MIB. + " + INDEX { ifIndex } + ::= { dot3OamTable 1 } + + + + Dot3OamEntry ::= + SEQUENCE { + dot3OamAdminState INTEGER, + dot3OamOperStatus INTEGER, + dot3OamMode INTEGER, + dot3OamMaxOamPduSize Unsigned32, + dot3OamConfigRevision Unsigned32, + dot3OamFunctionsSupported BITS + } + + dot3OamAdminState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to provision the default administrative + OAM mode for this interface. This object represents the + desired state of OAM for this interface. + + The dot3OamAdminState always starts in the disabled(2) state + until an explicit management action or configuration + information retained by the system causes a transition to the + enabled(1) state. When enabled(1), Ethernet OAM will attempt + to operate over this interface. + " + REFERENCE "[802.3ah], 30.3.6.1.2" + ::= { dot3OamEntry 1 } + + dot3OamOperStatus OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + linkFault(2), + passiveWait(3), + activeSendLocal(4), + sendLocalAndRemote(5), + sendLocalAndRemoteOk(6), + oamPeeringLocallyRejected(7), + oamPeeringRemotelyRejected(8), + operational(9), + nonOperHalfDuplex(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At initialization and failure conditions, two OAM entities on + + + + the same full-duplex Ethernet link begin a discovery phase to + determine what OAM capabilities may be used on that link. The + progress of this initialization is controlled by the OA + sublayer. + + This value is always disabled(1) if OAM is disabled on this + interface via the dot3OamAdminState. + + If the link has detected a fault and is transmitting OAMPDUs + with a link fault indication, the value is linkFault(2). + Also, if the interface is not operational (ifOperStatus is + not up(1)), linkFault(2) is returned. Note that the object + ifOperStatus may not be up(1) as a result of link failure or + administrative action (ifAdminState being down(2) or + testing(3)). + + The passiveWait(3) state is returned only by OAM entities in + passive mode (dot3OamMode) and reflects the state in which the + OAM entity is waiting to see if the peer device is OA + capable. The activeSendLocal(4) value is used by active mode + devices (dot3OamMode) and reflects the OAM entity actively + trying to discover whether the peer has OAM capability but has + not yet made that determination. + + The state sendLocalAndRemote(5) reflects that the local OA + entity has discovered the peer but has not yet accepted or + rejected the configuration of the peer. The local device can, + for whatever reason, decide that the peer device is + unacceptable and decline OAM peering. If the local OAM entity + rejects the peer OAM entity, the state becomes + oamPeeringLocallyRejected(7). If the OAM peering is allowed + by the local device, the state moves to + sendLocalAndRemoteOk(6). Note that both the + sendLocalAndRemote(5) and oamPeeringLocallyRejected(7) states + fall within the state SEND_LOCAL_REMOTE of the Discovery state + diagram [802.3ah, Figure 57-5], with the difference being + whether the local OAM client has actively rejected the peering + or has just not indicated any decision yet. Whether a peering + decision has been made is indicated via the local flags field + in the OAMPDU (reflected in the aOAMLocalFlagsField of + 30.3.6.1.10). + + If the remote OAM entity rejects the peering, the state + becomes oamPeeringRemotelyRejected(8). Note that both the + sendLocalAndRemoteOk(6) and oamPeeringRemotelyRejected(8) + states fall within the state SEND_LOCAL_REMOTE_OK of the + Discovery state diagram [802.3ah, Figure 57-5], with the + difference being whether the remote OAM client has rejected + + + + the peering or has just not yet decided. This is indicated + via the remote flags field in the OAMPDU (reflected in the + aOAMRemoteFlagsField of 30.3.6.1.11). + + When the local OAM entity learns that both it and the remote + OAM entity have accepted the peering, the state moves to + operational(9) corresponding to the SEND_ANY state of the + Discovery state diagram [802.3ah, Figure 57-5]. + + Since Ethernet OAM functions are not designed to work + completely over half-duplex interfaces, the value + nonOperHalfDuplex(10) is returned whenever Ethernet OAM is + enabled (dot3OamAdminState is enabled(1)), but the interface + is in half-duplex operation. + " + REFERENCE "[802.3ah], 30.3.6.1.4, 30.3.6.1.10, 30.3.6.1.11" + ::= { dot3OamEntry 2 } + + dot3OamMode OBJECT-TYPE + SYNTAX INTEGER { + passive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the mode of OAM operation for this + Ethernet-like interface. OAM on Ethernet interfaces may be in + 'active' mode or 'passive' mode. These two modes differ in + that active mode provides additional capabilities to initiate + monitoring activities with the remote OAM peer entity, while + passive mode generally waits for the peer to initiate OA + actions with it. As an example, an active OAM entity can put + the remote OAM entity in a loopback state, where a passive OA + entity cannot. + + The default value of dot3OamMode is dependent on the type of + system on which this Ethernet-like interface resides. The + default value should be 'active(2)' unless it is known that + this system should take on a subservient role to the other + device connected over this interface. + + Changing this value results in incrementing the configuration + revision field of locally generated OAMPDUs (30.3.6.1.12) and + potentially re-doing the OAM discovery process if the + dot3OamOperStatus was already operational(9). + " + REFERENCE "[802.3ah], 30.3.6.1.3" + + + + ::= { dot3OamEntry 3 } + + dot3OamMaxOamPduSize OBJECT-TYPE + SYNTAX Unsigned32 (64..1518) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest OAMPDU that the OAM entity supports. OA + entities exchange maximum OAMPDU sizes and negotiate to use + the smaller of the two maximum OAMPDU sizes between the peers. + This value is determined by the local implementation. + " + REFERENCE "[802.3ah], 30.3.6.1.8" + ::= { dot3OamEntry 4 } + + dot3OamConfigRevision OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The configuration revision of the OAM entity as reflected in + the latest OAMPDU sent by the OAM entity. The config revision + is used by OAM entities to indicate that configuration changes + have occurred, which might require the peer OAM entity to + re-evaluate whether OAM peering is allowed. + " + REFERENCE "[802.3ah], 30.3.6.1.12" + ::= { dot3OamEntry 5 } + + dot3OamFunctionsSupported OBJECT-TYPE + SYNTAX BITS { + unidirectionalSupport (0), + loopbackSupport(1), + eventSupport(2), + variableSupport(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OAM functions supported on this Ethernet-like interface. + OAM consists of separate functional sets beyond the basic + discovery process that is always required. These functional + groups can be supported independently by any implementation. + These values are communicated to the peer via the local + configuration field of Information OAMPDUs. + + Setting 'unidirectionalSupport(0)' indicates that the OA + + + + entity supports the transmission of OAMPDUs on links that are + operating in unidirectional mode (traffic flowing in one + direction only). Setting 'loopbackSupport(1)' indicates that + the OAM entity can initiate and respond to loopback commands. + Setting 'eventSupport(2)' indicates that the OAM entity can + send and receive Event Notification OAMPDUs. Setting + 'variableSupport(3)' indicates that the OAM entity can send + and receive Variable Request and Response OAMPDUs. + " + REFERENCE "[802.3ah], 30.3.6.1.6" + ::= { dot3OamEntry 6 } + + -- *************************************************************** + -- + -- Ethernet OAM Peer group + -- + + dot3OamPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the OAM peer for a + particular Ethernet-like interface. OAM entities communicate + with a single OAM peer entity on Ethernet links on which OA + is enabled and operating properly. There is one entry in this + table for each entry in the dot3OamTable for which information + on the peer OAM entity is available. + " + ::= { dot3OamObjects 2 } + + dot3OamPeerEntry OBJECT-TYPE + SYNTAX Dot3OamPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table containing information on the peer OA + entity for a single Ethernet-like interface. + + Note that there is at most one OAM peer for each Ethernet-like + interface. Entries are automatically created when information + about the OAM peer entity becomes available, and automatically + deleted when the OAM peer entity is no longer in + communication. Peer information is not available when + dot3OamOperStatus is disabled(1), linkFault(2), + passiveWait(3), activeSendLocal(4), or nonOperHalfDuplex(10). + " + INDEX { ifIndex } + + + + ::= { dot3OamPeerTable 1 } + + Dot3OamPeerEntry ::= + SEQUENCE { + dot3OamPeerMacAddress MacAddress, + dot3OamPeerVendorOui EightOTwoOui, + dot3OamPeerVendorInfo Unsigned32, + dot3OamPeerMode INTEGER, + dot3OamPeerMaxOamPduSize Unsigned32, + dot3OamPeerConfigRevision Unsigned32, + dot3OamPeerFunctionsSupported BITS + } + + dot3OamPeerMacAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MAC address of the peer OAM entity. The MAC address is + derived from the most recently received OAMPDU. + " + REFERENCE "[802.3ah], 30.3.6.1.5." + ::= { dot3OamPeerEntry 1 } + + dot3OamPeerVendorOui OBJECT-TYPE + SYNTAX EightOTwoOui + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OUI of the OAM peer as reflected in the latest + Information OAMPDU received with a Local Information TLV. The + OUI can be used to identify the vendor of the remote OA + entity. This value is initialized to three octets of zero + before any Local Information TLV is received. + " + REFERENCE "[802.3ah], 30.3.6.1.16." + ::= { dot3OamPeerEntry 2 } + + dot3OamPeerVendorInfo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Vendor Info of the OAM peer as reflected in the latest + Information OAMPDU received with a Local Information TLV. + The semantics of the Vendor Information field is proprietary + and specific to the vendor (identified by the + dot3OamPeerVendorOui). This information could, for example, + + + + be used to identify a specific product or product family. + This value is initialized to zero before any Local + Information TLV is received. + " + REFERENCE "[802.3ah], 30.3.6.1.17." + ::= { dot3OamPeerEntry 3 } + + dot3OamPeerMode OBJECT-TYPE + SYNTAX INTEGER { + passive(1), + active(2), + unknown(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode of the OAM peer as reflected in the latest + Information OAMPDU received with a Local Information TLV. The + mode of the peer can be determined from the Configuration + field in the Local Information TLV of the last Information + OAMPDU received from the peer. The value is unknown(3) + whenever no Local Information TLV has been received. The + values of active(2) and passive(1) are returned when a Local + Information TLV has been received indicating that the peer is + in active or passive mode, respectively. + " + REFERENCE "[802.3ah], 30.3.6.1.7." + ::= { dot3OamPeerEntry 4 } + + dot3OamPeerMaxOamPduSize OBJECT-TYPE + SYNTAX Unsigned32 (0 | 64..1518) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum size of OAMPDU supported by the peer as reflected + in the latest Information OAMPDU received with a Local + Information TLV. Ethernet OAM on this interface must not use + OAMPDUs that exceed this size. The maximum OAMPDU size can be + determined from the PDU Configuration field of the Local + Information TLV of the last Information OAMPDU received from + the peer. A value of zero is returned if no Local Information + TLV has been received. Otherwise, the value of the OAM peer's + maximum OAMPDU size is returned in this value. + " + REFERENCE "[802.3ah], 30.3.6.1.9." + ::= { dot3OamPeerEntry 5 } + + + + + dot3OamPeerConfigRevision OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The configuration revision of the OAM peer as reflected in + the latest OAMPDU. This attribute is changed by the peer + whenever it has a local configuration change for Ethernet OA + on this interface. The configuration revision can be + determined from the Revision field of the Local Information + TLV of the most recently received Information OAMPDU with + a Local Information TLV. A value of zero is returned if + no Local Information TLV has been received. + " + REFERENCE "[802.3ah], 30.3.6.1.13." + ::= { dot3OamPeerEntry 6 } + + dot3OamPeerFunctionsSupported OBJECT-TYPE + SYNTAX BITS { + unidirectionalSupport (0), + loopbackSupport(1), + eventSupport(2), + variableSupport(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OAM functions supported on this Ethernet-like interface. + OAM consists of separate functionality sets above the basic + discovery process. This value indicates the capabilities of + the peer OAM entity with respect to these functions. This + value is initialized so all bits are clear. + + If unidirectionalSupport(0) is set, then the peer OAM entity + supports sending OAM frames on Ethernet interfaces when the + receive path is known to be inoperable. If + loopbackSupport(1) is set, then the peer OAM entity can send + and receive OAM loopback commands. If eventSupport(2) is set, + then the peer OAM entity can send and receive event OAMPDUs to + signal various error conditions. If variableSupport(3) is + set, then the peer OAM entity can send and receive variable + requests to monitor the attribute value as described in Clause + 57 of [802.3ah]. + + The capabilities of the OAM peer can be determined from the + configuration field of the Local Information TLV of the most + recently received Information OAMPDU with a Local Information + TLV. All zeros are returned if no Local Information TLV has + + + + yet been received. + " + REFERENCE "[802.3ah], REFERENCE 30.3.6.1.7." + ::= { dot3OamPeerEntry 7 } + + -- *************************************************************** + -- + -- Ethernet OAM Loopback group + -- + + dot3OamLoopbackTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamLoopbackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains controls for the loopback state of the + local link as well as indicates the status of the loopback + function. There is one entry in this table for each entry in + dot3OamTable that supports loopback functionality (where + dot3OamFunctionsSupported includes the loopbackSupport bit + set). + + Loopback can be used to place the remote OAM entity in a state + where every received frame (except OAMPDUs) is echoed back + over the same interface on which they were received. In this + state, at the remote entity, 'normal' traffic is disabled as + only the looped back frames are transmitted on the interface. + Loopback is thus an intrusive operation that prohibits normal + data flow and should be used accordingly. + " + ::= { dot3OamObjects 3 } + + dot3OamLoopbackEntry OBJECT-TYPE + SYNTAX Dot3OamLoopbackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information on the loopback + status for a single Ethernet-like interface. Entries in the + table are automatically created whenever the local OAM entity + supports loopback capabilities. The loopback status on the + interface can be determined from the dot3OamLoopbackStatus + object. + " + INDEX { ifIndex } + ::= { dot3OamLoopbackTable 1 } + + Dot3OamLoopbackEntry ::= + + + + SEQUENCE { + dot3OamLoopbackStatus INTEGER, + dot3OamLoopbackIgnoreRx INTEGER + } + + dot3OamLoopbackStatus OBJECT-TYPE + SYNTAX INTEGER { + -- all values, except where noted, can be read + -- but cannot be written + noLoopback (1), + + -- initiatingLoopback can be read or written + initiatingLoopback (2), + remoteLoopback (3), + + -- terminatingLoopback can be read or written + terminatingLoopback (4), + localLoopback (5), + unknown (6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The loopback status of the OAM entity. This status is + determined by a combination of the local parser and + multiplexer states, the remote parser and multiplexer states, + as well as by the actions of the local OAM client. When + operating in normal mode with no loopback in progress, the + status reads noLoopback(1). + + The values initiatingLoopback(2) and terminatingLoopback(4) + can be read or written. The other values can only be read - + they can never be written. Writing initiatingLoopback causes + the local OAM entity to start the loopback process with its + peer. This value can only be written when the status is + noLoopback(1). Writing the value initiatingLoopback(2) in any + other state has no effect. When in remoteLoopback(3), writing + terminatingLoopback(4) causes the local OAM entity to initiate + the termination of the loopback state. Writing + terminatingLoopack(4) in any other state has no effect. + + If the OAM client initiates a loopback and has sent a + Loopback OAMPDU and is waiting for a response, where the local + parser and multiplexer states are DISCARD (see [802.3ah, + 57.2.11.1]), the status is 'initiatingLoopback'. In this + case, the local OAM entity has yet to receive any + acknowledgment that the remote OAM entity has received its + loopback command request. + + + + + If the local OAM client knows that the remote OAM entity is in + loopback mode (via the remote state information as described + in [802.3ah, 57.2.11.1, 30.3.6.1.15]), the status is + remoteLoopback(3). If the local OAM client is in the process + of terminating the remote loopback [802.3ah, 57.2.11.3, + 30.3.6.1.14] with its local multiplexer and parser states in + DISCARD, the status is terminatingLoopback(4). If the remote + OAM client has put the local OAM entity in loopback mode as + indicated by its local parser state, the status is + localLoopback(5). + + The unknown(6) status indicates that the parser and + multiplexer combination is unexpected. This status may be + returned if the OAM loopback is in a transition state but + should not persist. + + The values of this attribute correspond to the following + values of the local and remote parser and multiplexer states. + + value LclPrsr LclMux RmtPrsr RmtMux + noLoopback FWD FWD FWD FWD + initLoopback DISCARD DISCARD FWD FWD + rmtLoopback DISCARD FWD LPBK DISCARD + tmtngLoopback DISCARD DISCARD LPBK DISCARD + lclLoopback LPBK DISCARD DISCARD FWD + unknown *** any other combination *** + " + REFERENCE "[802.3ah], REFERENCE 57.2.11, 30.3.61.14, + 30.3.6.1.15" + ::= { dot3OamLoopbackEntry 1 } + + dot3OamLoopbackIgnoreRx OBJECT-TYPE + SYNTAX INTEGER { ignore(1), process(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Since OAM loopback is a disruptive operation (user traffic + does not pass), this attribute provides a mechanism to provide + controls over whether received OAM loopback commands are + processed or ignored. When the value is ignore(1), received + loopback commands are ignored. When the value is process(2), + OAM loopback commands are processed. The default value is to + ignore loopback commands (ignore(1)). + " + REFERENCE "[802.3ah], REFERENCE 57.2.11, 30.3.61.14, + 30.3.6.1.15" + ::= { dot3OamLoopbackEntry 2 } + + + + -- *************************************************************** + -- + -- Ethernet OAM Statistics group + -- + + dot3OamStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains statistics for the OAM function on a + particular Ethernet-like interface. There is an entry in the + table for every entry in the dot3OamTable. + + The counters in this table are defined as 32-bit entries to + match the counter size as defined in [802.3ah]. Given that + the OA protocol is a slow protocol, the counters increment at + a slow rate. + " + ::= { dot3OamObjects 4 } + + dot3OamStatsEntry OBJECT-TYPE + SYNTAX Dot3OamStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table containing statistics information on + the Ethernet OAM function for a single Ethernet-like + interface. Entries are automatically created for every entry + in the dot3OamTable. Counters are maintained across + transitions in dot3OamOperStatus. + " + INDEX { ifIndex } + ::= { dot3OamStatsTable 1 } + + Dot3OamStatsEntry ::= + SEQUENCE { + dot3OamInformationTx Counter32, + dot3OamInformationRx Counter32, + dot3OamUniqueEventNotificationTx Counter32, + dot3OamUniqueEventNotificationRx Counter32, + dot3OamDuplicateEventNotificationTx Counter32, + dot3OamDuplicateEventNotificationRx Counter32, + dot3OamLoopbackControlTx Counter32, + dot3OamLoopbackControlRx Counter32, + dot3OamVariableRequestTx Counter32, + dot3OamVariableRequestRx Counter32, + dot3OamVariableResponseTx Counter32, + + + + dot3OamVariableResponseRx Counter32, + dot3OamOrgSpecificTx Counter32, + dot3OamOrgSpecificRx Counter32, + dot3OamUnsupportedCodesTx Counter32, + dot3OamUnsupportedCodesRx Counter32, + dot3OamFramesLostDueToOam Counter32 + } + + dot3OamInformationTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Information OAMPDUs transmitted on + this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. " + REFERENCE "[802.3ah], 30.3.6.1.20." + ::= { dot3OamStatsEntry 1 } + + dot3OamInformationRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Information OAMPDUs received on this + interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.21." + ::= { dot3OamStatsEntry 2 } + + dot3OamUniqueEventNotificationTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of unique Event OAMPDUs transmitted on + this interface. Event Notifications may be sent in duplicate + to increase the probability of successfully being received, + + + + given the possibility that a frame may be lost in transit. + Duplicate Event Notification transmissions are counted by + dot3OamDuplicateEventNotificationTx. + + A unique Event Notification OAMPDU is indicated as an Event + Notification OAMPDU with a Sequence Number field that is + distinct from the previously transmitted Event Notification + OAMPDU Sequence Number. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.22." + ::= { dot3OamStatsEntry 3 } + + dot3OamUniqueEventNotificationRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of unique Event OAMPDUs received on + this interface. Event Notification OAMPDUs may be sent in + duplicate to increase the probability of successfully being + received, given the possibility that a frame may be lost in + transit. Duplicate Event Notification receptions are counted + by dot3OamDuplicateEventNotificationRx. + + A unique Event Notification OAMPDU is indicated as an Event + Notification OAMPDU with a Sequence Number field that is + distinct from the previously received Event Notification + OAMPDU Sequence Number. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.24." + ::= { dot3OamStatsEntry 4 } + + dot3OamDuplicateEventNotificationTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of duplicate Event OAMPDUs transmitted + + + + on this interface. Event Notification OAMPDUs may be sent in + duplicate to increase the probability of successfully being + received, given the possibility that a frame may be lost in + transit. + + A duplicate Event Notification OAMPDU is indicated as an Event + Notification OAMPDU with a Sequence Number field that is + identical to the previously transmitted Event Notification + OAMPDU Sequence Number. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.23." + ::= { dot3OamStatsEntry 5 } + + dot3OamDuplicateEventNotificationRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of duplicate Event OAMPDUs received on + this interface. Event Notification OAMPDUs may be sent in + duplicate to increase the probability of successfully being + received, given the possibility that a frame may be lost in + transit. + + A duplicate Event Notification OAMPDU is indicated as an Event + Notification OAMPDU with a Sequence Number field that is + identical to the previously received Event Notification OAMPDU + Sequence Number. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.25." + ::= { dot3OamStatsEntry 6 } + + dot3OamLoopbackControlTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Loopback Control OAMPDUs transmitted + + + + on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.26." + ::= { dot3OamStatsEntry 7 } + + dot3OamLoopbackControlRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Loopback Control OAMPDUs received + on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.27." + ::= { dot3OamStatsEntry 8 } + + dot3OamVariableRequestTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Variable Request OAMPDUs transmitted + on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.28." + ::= { dot3OamStatsEntry 9 } + + dot3OamVariableRequestRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Variable Request OAMPDUs received on + + + + this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.29." + ::= { dot3OamStatsEntry 10 } + + dot3OamVariableResponseTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Variable Response OAMPDUs + transmitted on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.30." + ::= { dot3OamStatsEntry 11 } + + dot3OamVariableResponseRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Variable Response OAMPDUs received + on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.31." + ::= { dot3OamStatsEntry 12 } + + dot3OamOrgSpecificTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Organization Specific OAMPDUs + + + + transmitted on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.32." + ::= { dot3OamStatsEntry 13 } + + dot3OamOrgSpecificRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of Organization Specific OAMPDUs + received on this interface. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.33." + ::= { dot3OamStatsEntry 14 } + + dot3OamUnsupportedCodesTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of OAMPDUs transmitted on this + interface with an unsupported op-code. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.18." + ::= { dot3OamStatsEntry 15 } + + dot3OamUnsupportedCodesRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of OAMPDUs received on this interface + + + + with an unsupported op-code. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.19." + ::= { dot3OamStatsEntry 16 } + + dot3OamFramesLostDueToOam OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of frames that were dropped by the OA + multiplexer. Since the OAM multiplexer has multiple inputs + and a single output, there may be cases where frames are + dropped due to transmit resource contention. This counter is + incremented whenever a frame is dropped by the OAM layer. + Note that any Ethernet frame, not just OAMPDUs, may be dropped + by the OAM layer. This can occur when an OAMPDU takes + precedence over a 'normal' frame resulting in the 'normal' + frame being dropped. + + When this counter is incremented, no other counters in this + MIB are incremented. + + Discontinuities of this counter can occur at re-initialization + of the management system, and at other times as indicated by + the value of the ifCounterDiscontinuityTime. + " + REFERENCE "[802.3ah], 30.3.6.1.46." + ::= { dot3OamStatsEntry 17 } + + -- *************************************************************** + -- + -- Ethernet OAM Event Configuration group + -- + + dot3OamEventConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamEventConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Ethernet OAM includes the ability to generate and receive + Event Notification OAMPDUs to indicate various link problems. + This table contains the mechanisms to enable Event + + + + Notifications and configure the thresholds to generate the + standard Ethernet OAM events. There is one entry in the table + for every entry in dot3OamTable that supports OAM events + (where dot3OamFunctionsSupported includes the eventSupport + bit set). The values in the table are maintained across + changes to dot3OamOperStatus. + + The standard threshold crossing events are: + - Errored Symbol Period Event. Generated when the number of + symbol errors exceeds a threshold within a given window + defined by a number of symbols (for example, 1,000 symbols + out of 1,000,000 had errors). + - Errored Frame Period Event. Generated when the number of + frame errors exceeds a threshold within a given window + defined by a number of frames (for example, 10 frames out + of 1000 had errors). + - Errored Frame Event. Generated when the number of frame + errors exceeds a threshold within a given window defined + by a period of time (for example, 10 frames in 1 second + had errors). + - Errored Frame Seconds Summary Event. Generated when the + number of errored frame seconds exceeds a threshold within + a given time period (for example, 10 errored frame seconds + within the last 100 seconds). An errored frame second is + defined as a 1 second interval which had >0 frame errors. + There are other events (dying gasp, critical events) that are + not threshold crossing events but which can be + enabled/disabled via this table. + " + ::= { dot3OamObjects 5 } + + dot3OamEventConfigEntry OBJECT-TYPE + SYNTAX Dot3OamEventConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries are automatically created and deleted from this + table, and exist whenever the OAM entity supports Ethernet OA + events (as indicated by the eventSupport bit in + dot3OamFunctionsSuppported). Values in the table are + maintained across changes to the value of dot3OamOperStatus. + + Event configuration controls when the local management entity + sends Event Notification OAMPDUs to its OAM peer, and when + certain event flags are set or cleared in OAMPDUs. + " + INDEX { ifIndex } + ::= { dot3OamEventConfigTable 1 } + + + + Dot3OamEventConfigEntry ::= + SEQUENCE { + dot3OamErrSymPeriodWindowHi Unsigned32, + dot3OamErrSymPeriodWindowLo Unsigned32, + dot3OamErrSymPeriodThresholdHi Unsigned32, + dot3OamErrSymPeriodThresholdLo Unsigned32, + dot3OamErrSymPeriodEvNotifEnable TruthValue, + dot3OamErrFramePeriodWindow Unsigned32, + dot3OamErrFramePeriodThreshold Unsigned32, + dot3OamErrFramePeriodEvNotifEnable TruthValue, + dot3OamErrFrameWindow Unsigned32, + dot3OamErrFrameThreshold Unsigned32, + dot3OamErrFrameEvNotifEnable TruthValue, + dot3OamErrFrameSecsSummaryWindow Integer32, + dot3OamErrFrameSecsSummaryThreshold Integer32, + dot3OamErrFrameSecsEvNotifEnable TruthValue, + dot3OamDyingGaspEnable TruthValue, + dot3OamCriticalEventEnable TruthValue + } + + dot3OamErrSymPeriodWindowHi OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "2^32 symbols" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The two objects dot3OamErrSymPeriodWindowHi and + dot3OamErrSymPeriodLo together form an unsigned 64-bit + integer representing the number of symbols over which this + threshold event is defined. This is defined as + dot3OamErrSymPeriodWindow = ((2^32)*dot3OamErrSymPeriodWindowHi) + + dot3OamErrSymPeriodWindowLo + + If dot3OamErrSymPeriodThreshold symbol errors occur within a + window of dot3OamErrSymPeriodWindow symbols, an Event + Notification OAMPDU should be generated with an Errored Symbol + Period Event TLV indicating that the threshold has been + crossed in this window. + + The default value for dot3OamErrSymPeriodWindow is the number + of symbols in one second for the underlying physical layer. + " + REFERENCE "[802.3ah], 30.3.6.1.34" + ::= { dot3OamEventConfigEntry 1 } + + dot3OamErrSymPeriodWindowLo OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "symbols" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The two objects dot3OamErrSymPeriodWindowHi and + dot3OamErrSymPeriodWindowLo together form an unsigned 64-bit + integer representing the number of symbols over which this + threshold event is defined. This is defined as + + dot3OamErrSymPeriodWindow = ((2^32)*dot3OamErrSymPeriodWindowHi) + + dot3OamErrSymPeriodWindowLo + + If dot3OamErrSymPeriodThreshold symbol errors occur within a + window of dot3OamErrSymPeriodWindow symbols, an Event + Notification OAMPDU should be generated with an Errored Symbol + Period Event TLV indicating that the threshold has been + crossed in this window. + + The default value for dot3OamErrSymPeriodWindow is the number + of symbols in one second for the underlying physical layer. + " + REFERENCE "[802.3ah], 30.3.6.1.34" + ::= { dot3OamEventConfigEntry 2 } + + dot3OamErrSymPeriodThresholdHi OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "2^32 symbols" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The two objects dot3OamErrSymPeriodThresholdHi and + dot3OamErrSymPeriodThresholdLo together form an unsigned + 64-bit integer representing the number of symbol errors that + must occur within a given window to cause this event. + + This is defined as + + dot3OamErrSymPeriodThreshold = + ((2^32) * dot3OamErrSymPeriodThresholdHi) + + dot3OamErrSymPeriodThresholdLo + + If dot3OamErrSymPeriodThreshold symbol errors occur within a + window of dot3OamErrSymPeriodWindow symbols, an Event + Notification OAMPDU should be generated with an Errored Symbol + Period Event TLV indicating that the threshold has been + crossed in this window. + + The default value for dot3OamErrSymPeriodThreshold is one + symbol errors. If the threshold value is zero, then an Event + + + + Notification OAMPDU is sent periodically (at the end of every + window). This can be used as an asynchronous notification to + the peer OAM entity of the statistics related to this + threshold crossing alarm. + " + REFERENCE "[802.3ah], 30.3.6.1.34" + ::= { dot3OamEventConfigEntry 3 } + + dot3OamErrSymPeriodThresholdLo OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "symbols" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The two objects dot3OamErrSymPeriodThresholdHi and + dot3OamErrSymPeriodThresholdLo together form an unsigned + 64-bit integer representing the number of symbol errors that + must occur within a given window to cause this event. + + This is defined as + + dot3OamErrSymPeriodThreshold = + ((2^32) * dot3OamErrSymPeriodThresholdHi) + + dot3OamErrSymPeriodThresholdLo + + If dot3OamErrSymPeriodThreshold symbol errors occur within a + window of dot3OamErrSymPeriodWindow symbols, an Event + Notification OAMPDU should be generated with an Errored Symbol + Period Event TLV indicating that the threshold has been + crossed in this window. + + The default value for dot3OamErrSymPeriodThreshold is one + symbol error. If the threshold value is zero, then an Event + Notification OAMPDU is sent periodically (at the end of every + window). This can be used as an asynchronous notification to + the peer OAM entity of the statistics related to this + threshold crossing alarm. + " + REFERENCE "[802.3ah], 30.3.6.1.34" + ::= { dot3OamEventConfigEntry 4 } + + dot3OamErrSymPeriodEvNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the OAM entity should send an Event Notification + OAMPDU when an Errored Symbol Period Event occurs. + + + + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + ::= { dot3OamEventConfigEntry 5 } + + dot3OamErrFramePeriodWindow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "frames" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of frames over which the threshold is defined. + The default value of the window is the number of minimum size + Ethernet frames that can be received over the physical layer + in one second. + + If dot3OamErrFramePeriodThreshold frame errors occur within a + window of dot3OamErrFramePeriodWindow frames, an Event + Notification OAMPDU should be generated with an Errored Frame + Period Event TLV indicating that the threshold has been + crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.38" + ::= { dot3OamEventConfigEntry 6 } + + dot3OamErrFramePeriodThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "frames" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of frame errors that must occur for this event to + be triggered. The default value is one frame error. If the + threshold value is zero, then an Event Notification OAMPDU is + sent periodically (at the end of every window). This can be + used as an asynchronous notification to the peer OAM entity of + the statistics related to this threshold crossing alarm. + + If dot3OamErrFramePeriodThreshold frame errors occur within a + window of dot3OamErrFramePeriodWindow frames, an Event + Notification OAMPDU should be generated with an Errored Frame + Period Event TLV indicating that the threshold has been + crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.38" + + + + ::= { dot3OamEventConfigEntry 7 } + + dot3OamErrFramePeriodEvNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the OAM entity should send an Event Notification + OAMPDU when an Errored Frame Period Event occurs. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + ::= { dot3OamEventConfigEntry 8 } + + dot3OamErrFrameWindow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of a second" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time (in 100ms increments) over which the + threshold is defined. The default value is 10 (1 second). + + If dot3OamErrFrameThreshold frame errors occur within a window + of dot3OamErrFrameWindow seconds (measured in tenths of + seconds), an Event Notification OAMPDU should be generated + with an Errored Frame Event TLV indicating that the threshold + has been crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.36" + DEFVAL { 10 } + ::= { dot3OamEventConfigEntry 9 } + + dot3OamErrFrameThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "frames" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of frame errors that must occur for this event to + be triggered. The default value is one frame error. If the + threshold value is zero, then an Event Notification OAMPDU is + sent periodically (at the end of every window). This can be + used as an asynchronous notification to the peer OAM entity of + the statistics related to this threshold crossing alarm. + + + + + If dot3OamErrFrameThreshold frame errors occur within a window + of dot3OamErrFrameWindow (in tenths of seconds), an Event + Notification OAMPDU should be generated with an Errored Frame + Event TLV indicating the threshold has been crossed in this + window. + " + REFERENCE "[802.3ah], 30.3.6.1.36" + DEFVAL { 1 } + ::= { dot3OamEventConfigEntry 10 } + + dot3OamErrFrameEvNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the OAM entity should send an Event Notification + OAMPDU when an Errored Frame Event occurs. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + DEFVAL { true } + ::= { dot3OamEventConfigEntry 11 } + + dot3OamErrFrameSecsSummaryWindow OBJECT-TYPE + SYNTAX Integer32 (100..9000) + UNITS "tenths of a second" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time (in 100 ms intervals) over which the + threshold is defined. The default value is 100 (10 seconds). + + If dot3OamErrFrameSecsSummaryThreshold frame errors occur + within a window of dot3OamErrFrameSecsSummaryWindow (in tenths + of seconds), an Event Notification OAMPDU should be generated + with an Errored Frame Seconds Summary Event TLV indicating + that the threshold has been crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.40" + DEFVAL { 100 } + ::= { dot3OamEventConfigEntry 12 } + + dot3OamErrFrameSecsSummaryThreshold OBJECT-TYPE + SYNTAX Integer32 (1..900) + + + + UNITS "errored frame seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of errored frame seconds that must occur for this + event to be triggered. The default value is one errored frame + second. If the threshold value is zero, then an Event + Notification OAMPDU is sent periodically (at the end of every + window). This can be used as an asynchronous notification to + the peer OAM entity of the statistics related to this + threshold crossing alarm. + + If dot3OamErrFrameSecsSummaryThreshold frame errors occur + within a window of dot3OamErrFrameSecsSummaryWindow (in tenths + of seconds), an Event Notification OAMPDU should be generated + with an Errored Frame Seconds Summary Event TLV indicating + that the threshold has been crossed in this window. + " + REFERENCE "[802.3ah], 30.3.6.1.40" + DEFVAL { 1 } + ::= { dot3OamEventConfigEntry 13 } + + dot3OamErrFrameSecsEvNotifEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the local OAM entity should send an Event + Notification OAMPDU when an Errored Frame Seconds Event + occurs. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + DEFVAL { true } + ::= { dot3OamEventConfigEntry 14 } + + dot3OamDyingGaspEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the local OAM entity should attempt to indicate a + dying gasp via the OAMPDU flags field to its peer OAM entity + when a dying gasp event occurs. The exact definition of a + dying gasp event is implementation dependent. If the system + + + + does not support dying gasp capability, setting this object + has no effect, and reading the object should always result in + 'false'. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + DEFVAL { true } + ::= { dot3OamEventConfigEntry 15 } + + dot3OamCriticalEventEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, the local OAM entity should attempt to indicate a + critical event via the OAMPDU flags to its peer OAM entity + when a critical event occurs. The exact definition of a + critical event is implementation dependent. If the system + does not support critical event capability, setting this + object has no effect, and reading the object should always + result in 'false'. + + By default, this object should have the value true for + Ethernet-like interfaces that support OAM. If the OAM layer + does not support Event Notifications (as indicated via the + dot3OamFunctionsSupported attribute), this value is ignored. + " + DEFVAL { true } + ::= { dot3OamEventConfigEntry 16 } + + -- ************************************************************** + -- + -- Ethernet OAM Event Log group + -- + + dot3OamEventLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3OamEventLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table records a history of the events that have occurred + at the Ethernet OAM level. These events can include locally + detected events, which may result in locally generated + OAMPDUs, and remotely detected events, which are detected by + the OAM peer entity and signaled to the local entity via + + + + Ethernet OAM. Ethernet OAM events can be signaled by Event + Notification OAMPDUs or by the flags field in any OAMPDU. + + This table contains both threshold crossing events and + non-threshold crossing events. The parameters for the + threshold window, threshold value, and actual value + (dot3OamEventLogWindowXX, dot3OamEventLogThresholdXX, + dot3OamEventLogValue) are only applicable to threshold + crossing events, and are returned as all F's (2^32 - 1) for + non-threshold crossing events. + + Entries in the table are automatically created when such + events are detected. The size of the table is implementation + dependent. When the table reaches its maximum size, older + entries are automatically deleted to make room for newer + entries. + " + ::= { dot3OamObjects 6 } + + dot3OamEventLogEntry OBJECT-TYPE + SYNTAX Dot3OamEventLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the dot3OamEventLogTable. Entries are + automatically created whenever Ethernet OAM events occur at + the local OAM entity, and when Event Notification OAMPDUs are + received at the local OAM entity (indicating that events have + occurred at the peer OAM entity). The size of the table is + implementation dependent, but when the table becomes full, + older events are automatically deleted to make room for newer + events. The table index dot3OamEventLogIndex increments for + each new entry, and when the maximum value is reached, the + value restarts at zero. + " + INDEX { ifIndex, dot3OamEventLogIndex } + ::= { dot3OamEventLogTable 1 } + + Dot3OamEventLogEntry ::= + SEQUENCE { + dot3OamEventLogIndex Unsigned32, + dot3OamEventLogTimestamp TimeStamp, + dot3OamEventLogOui EightOTwoOui, + dot3OamEventLogType Unsigned32, + dot3OamEventLogLocation INTEGER, + dot3OamEventLogWindowHi Unsigned32, + dot3OamEventLogWindowLo Unsigned32, + dot3OamEventLogThresholdHi Unsigned32, + + + + dot3OamEventLogThresholdLo Unsigned32, + dot3OamEventLogValue CounterBasedGauge64, + dot3OamEventLogRunningTotal CounterBasedGauge64, + dot3OamEventLogEventTotal Unsigned32 + } + + dot3OamEventLogIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer for identifying individual events + within the event log. " + ::= { dot3OamEventLogEntry 1 } + + dot3OamEventLogTimestamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the logged event. For + locally generated events, the time of the event can be + accurately retrieved from sysUpTime. For remotely generated + events, the time of the event is indicated by the reception of + the Event Notification OAMPDU indicating that the event + occurred on the peer. A system may attempt to adjust the + timestamp value to more accurately reflect the time of the + event at the peer OAM entity by using other information, such + as that found in the timestamp found of the Event Notification + TLVs, which provides an indication of the relative time + between events at the peer entity. " + ::= { dot3OamEventLogEntry 2 } + + dot3OamEventLogOui OBJECT-TYPE + SYNTAX EightOTwoOui + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OUI of the entity defining the object type. All IEEE + 802.3 defined events (as appearing in [802.3ah] except for the + Organizationally Unique Event TLVs) use the IEEE 802.3 OUI of + 0x0180C2. Organizations defining their own Event Notification + TLVs include their OUI in the Event Notification TLV that + gets reflected here. " + ::= { dot3OamEventLogEntry 3 } + + dot3OamEventLogType OBJECT-TYPE + SYNTAX Unsigned32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of event that generated this entry in the event log. + When the OUI is the IEEE 802.3 OUI of 0x0180C2, the following + event types are defined: + erroredSymbolEvent(1), + erroredFramePeriodEvent(2), + erroredFrameEvent(3), + erroredFrameSecondsEvent(4), + linkFault(256), + dyingGaspEvent(257), + criticalLinkEvent(258) + The first four are considered threshold crossing events, as + they are generated when a metric exceeds a given value within + a specified window. The other three are not threshold + crossing events. + + When the OUI is not 71874 (0x0180C2 in hex), then some other + organization has defined the event space. If event subtyping + is known to the implementation, it may be reflected here. + Otherwise, this value should return all F's (2^32 - 1). + " + REFERENCE "[802.3ah], 30.3.6.1.10 and 57.5.3." + ::= { dot3OamEventLogEntry 4 } + + dot3OamEventLogLocation OBJECT-TYPE + SYNTAX INTEGER { local(1), remote(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether this event occurred locally (local(1)), or was + received from the OAM peer via Ethernet OAM (remote(2)). + " + ::= { dot3OamEventLogEntry 5 } + + dot3OamEventLogWindowHi OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, the two + objects dot3OamEventWindowHi and dot3OamEventWindowLo, form + an unsigned 64-bit integer yielding the window over which the + value was measured for the threshold crossing event (for + example, 5, when 11 occurrences happened in 5 seconds while + the threshold was 10). The two objects are combined as: + + + + + dot3OamEventLogWindow = ((2^32) * dot3OamEventLogWindowHi) + + dot3OamEventLogWindowLo + + Otherwise, this value is returned as all F's (2^32 - 1) and + adds no useful information. + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 6 } + + dot3OamEventLogWindowLo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, the two + objects dot3OamEventWindowHi and dot3OamEventWindowLo form an + unsigned 64-bit integer yielding the window over which the + value was measured for the threshold crossing event (for + example, 5, when 11 occurrences happened in 5 seconds while + the threshold was 10). The two objects are combined as: + + dot3OamEventLogWindow = ((2^32) * dot3OamEventLogWindowHi) + + dot3OamEventLogWindowLo + + Otherwise, this value is returned as all F's (2^32 - 1) and + adds no useful information. + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 7 } + + dot3OamEventLogThresholdHi OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, the two + objects dot3OamEventThresholdHi and dot3OamEventThresholdLo + form an unsigned 64-bit integer yielding the value that was + crossed for the threshold crossing event (for example, 10, + when 11 occurrences happened in 5 seconds while the threshold + was 10). The two objects are combined as: + + dot3OamEventLogThreshold = ((2^32) * dot3OamEventLogThresholdHi) + + dot3OamEventLogThresholdLo + + Otherwise, this value is returned as all F's (2^32 -1) and + adds no useful information. + " + + + + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 8 } + + dot3OamEventLogThresholdLo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, the two + objects dot3OamEventThresholdHi and dot3OamEventThresholdLo + form an unsigned 64-bit integer yielding the value that was + crossed for the threshold crossing event (for example, 10, + when 11 occurrences happened in 5 seconds while the threshold + was 10). The two objects are combined as: + + dot3OamEventLogThreshold = ((2^32) * dot3OamEventLogThresholdHi) + + dot3OamEventLogThresholdLo + + Otherwise, this value is returned as all F's (2^32 - 1) and + adds no useful information. + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 9 } + + dot3OamEventLogValue OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the event represents a threshold crossing event, this + value indicates the value of the parameter within the given + window that generated this event (for example, 11, when 11 + occurrences happened in 5 seconds while the threshold was 10). + + Otherwise, this value is returned as all F's + (2^64 - 1) and adds no useful information. + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 10 } + + dot3OamEventLogRunningTotal OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Each Event Notification TLV contains a running total of the + number of times an event has occurred, as well as the number + of times an Event Notification for the event has been + + + + transmitted. For non-threshold crossing events, the number of + events (dot3OamLogRunningTotal) and the number of resultant + Event Notifications (dot3OamLogEventTotal) should be + identical. + + For threshold crossing events, since multiple occurrences may + be required to cross the threshold, these values are likely + different. This value represents the total number of times + this event has happened since the last reset (for example, + 3253, when 3253 symbol errors have occurred since the last + reset, which has resulted in 51 symbol error threshold + crossing events since the last reset). + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 11 } + + dot3OamEventLogEventTotal OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Each Event Notification TLV contains a running total of the + number of times an event has occurred, as well as the number + of times an Event Notification for the event has been + transmitted. For non-threshold crossing events, the number of + events (dot3OamLogRunningTotal) and the number of resultant + Event Notifications (dot3OamLogEventTotal) should be + identical. + + For threshold crossing events, since multiple occurrences may + be required to cross the threshold, these values are likely + different. This value represents the total number of times + one or more of these occurrences have resulted in an Event + Notification (for example, 51 when 3253 symbol errors have + occurred since the last reset, which has resulted in 51 symbol + error threshold crossing events since the last reset). + " + REFERENCE "[802.3ah], 30.3.6.1.37 and 57.5.3.2." + ::= { dot3OamEventLogEntry 12 } + + -- *************************************************************** + -- + -- Ethernet OAM Notifications + -- + + dot3OamThresholdEvent NOTIFICATION-TYPE + OBJECTS { dot3OamEventLogTimestamp, + dot3OamEventLogOui, + + + + dot3OamEventLogType, + dot3OamEventLogLocation, + dot3OamEventLogWindowHi, + dot3OamEventLogWindowLo, + dot3OamEventLogThresholdHi, + dot3OamEventLogThresholdLo, + dot3OamEventLogValue, + dot3OamEventLogRunningTotal, + dot3OamEventLogEventTotal + } + STATUS current + DESCRIPTION + "A dot3OamThresholdEvent notification is sent when a local or + remote threshold crossing event is detected. A local + threshold crossing event is detected by the local entity, + while a remote threshold crossing event is detected by the + reception of an Ethernet OAM Event Notification OAMPDU + that indicates a threshold event. + + This notification should not be sent more than once per + second. + + The OAM entity can be derived from extracting the ifIndex from + the variable bindings. The objects in the notification + correspond to the values in a row instance in the + dot3OamEventLogTable. + + The management entity should periodically check + dot3OamEventLogTable to detect any missed events." + ::= { dot3OamNotifications 1 } + + dot3OamNonThresholdEvent NOTIFICATION-TYPE + OBJECTS { dot3OamEventLogTimestamp, + dot3OamEventLogOui, + dot3OamEventLogType, + dot3OamEventLogLocation, + dot3OamEventLogEventTotal + } + STATUS current + DESCRIPTION + "A dot3OamNonThresholdEvent notification is sent when a local + or remote non-threshold crossing event is detected. A local + event is detected by the local entity, while a remote event is + detected by the reception of an Ethernet OAM Event + Notification OAMPDU that indicates a non-threshold crossing + event. + + This notification should not be sent more than once per + + + + second. + + The OAM entity can be derived from extracting the ifIndex from + the variable bindings. The objects in the notification + correspond to the values in a row instance of the + dot3OamEventLogTable. + + The management entity should periodically check + dot3OamEventLogTable to detect any missed events." + ::= { dot3OamNotifications 2 } + + -- *************************************************************** + -- + -- Ethernet OAM Compliance group + -- + + dot3OamGroups OBJECT IDENTIFIER ::= { dot3OamConformance 1 } + dot3OamCompliances OBJECT IDENTIFIER ::= { dot3OamConformance 2 } + + -- Compliance statements + + dot3OamCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for managed entities + supporting OAM on Ethernet-like interfaces. + " + MODULE -- this module + MANDATORY-GROUPS { dot3OamControlGroup, + dot3OamPeerGroup, + dot3OamStatsBaseGroup + } + + GROUP dot3OamLoopbackGroup + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support loopback functionality. " + + GROUP dot3OamErrSymbolPeriodEventGroup + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support event functionality. " + + GROUP dot3OamErrFramePeriodEventGroup + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support event functionality. " + + GROUP dot3OamErrFrameEventGroup + + + + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support event functionality. " + + GROUP dot3OamErrFrameSecsSummaryEventGroup + DESCRIPTION + "This group is mandatory for all IEEE 802.3 OA + implementations that support event functionality. " + + GROUP dot3OamFlagEventGroup + DESCRIPTION + "This group is optional for all IEEE 802.3 OA + implementations. The ability to send critical events or dying + gasp events is not required in any system." + + GROUP dot3OamEventLogGroup + DESCRIPTION + "This group is optional for all IEEE 802.3 OA + implementations. Entries in this table are dependent on what + event functionality is supported in the local OA + implementation. At least one type of event must be supported + for entries to appear in this table. " + + GROUP dot3OamNotificationGroup + DESCRIPTION + "This group is optional for all IEEE 802.3 OA + implementations. Since the information in the notifications + is dependent on the dot3OamEventLogTable, that table must be + implemented for notifications. " + + ::= { dot3OamCompliances 1} + + dot3OamControlGroup OBJECT-GROUP + OBJECTS { dot3OamAdminState, + dot3OamOperStatus, + dot3OamMode, + dot3OamMaxOamPduSize, + dot3OamConfigRevision, + dot3OamFunctionsSupported + } + STATUS current + DESCRIPTION + "A collection of objects providing the abilities, + configuration, and status of an Ethernet OAM entity. " + ::= { dot3OamGroups 1 } + + dot3OamPeerGroup OBJECT-GROUP + OBJECTS { dot3OamPeerMacAddress, + + + + dot3OamPeerVendorOui, + dot3OamPeerVendorInfo, + dot3OamPeerMode, + dot3OamPeerFunctionsSupported, + dot3OamPeerMaxOamPduSize, + dot3OamPeerConfigRevision + } + STATUS current + DESCRIPTION + "A collection of objects providing the abilities, + configuration, and status of a peer Ethernet OAM entity. " + ::= { dot3OamGroups 2 } + + dot3OamStatsBaseGroup OBJECT-GROUP + OBJECTS { dot3OamInformationTx, + dot3OamInformationRx, + dot3OamUniqueEventNotificationTx, + dot3OamUniqueEventNotificationRx, + dot3OamDuplicateEventNotificationTx, + dot3OamDuplicateEventNotificationRx, + dot3OamLoopbackControlTx, + dot3OamLoopbackControlRx, + dot3OamVariableRequestTx, + dot3OamVariableRequestRx, + dot3OamVariableResponseTx, + dot3OamVariableResponseRx, + dot3OamOrgSpecificTx, + dot3OamOrgSpecificRx, + dot3OamUnsupportedCodesTx, + dot3OamUnsupportedCodesRx, + dot3OamFramesLostDueToOam + } + STATUS current + DESCRIPTION + "A collection of objects providing the statistics for the + number of various transmit and receive events for OAM on an + Ethernet-like interface. Note that all of these counters must + be supported even if the related function (as described in + dot3OamFunctionsSupported) is not supported. " + ::= { dot3OamGroups 3 } + + dot3OamLoopbackGroup OBJECT-GROUP + OBJECTS { dot3OamLoopbackStatus, + dot3OamLoopbackIgnoreRx + } + STATUS current + DESCRIPTION + "A collection of objects for controlling the OAM remote + + + + loopback function. " + ::= { dot3OamGroups 4 } + + dot3OamErrSymbolPeriodEventGroup OBJECT-GROUP + OBJECTS { dot3OamErrSymPeriodWindowHi, + dot3OamErrSymPeriodWindowLo, + dot3OamErrSymPeriodThresholdHi, + dot3OamErrSymPeriodThresholdLo, + dot3OamErrSymPeriodEvNotifEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Symbol Period Event. + + Each [802.3ah] defined Event Notification TLV has its own + conformance group because each event can be implemented + independently of any other. " + ::= { dot3OamGroups 5 } + + dot3OamErrFramePeriodEventGroup OBJECT-GROUP + OBJECTS { dot3OamErrFramePeriodWindow, + dot3OamErrFramePeriodThreshold, + dot3OamErrFramePeriodEvNotifEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Frame Period Event. + + Each [802.3ah] defined Event Notification TLV has its own + conformance group because each event can be implemented + independently of any other. " + ::= { dot3OamGroups 6 } + + dot3OamErrFrameEventGroup OBJECT-GROUP + OBJECTS { dot3OamErrFrameWindow, + dot3OamErrFrameThreshold, + dot3OamErrFrameEvNotifEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Frame Event. + + Each [802.3ah] defined Event Notification TLV has its own + conformance group because each event can be implemented + independently of any other. " + + + + ::= { dot3OamGroups 7 } + + dot3OamErrFrameSecsSummaryEventGroup OBJECT-GROUP + OBJECTS { dot3OamErrFrameSecsSummaryWindow, + dot3OamErrFrameSecsSummaryThreshold, + dot3OamErrFrameSecsEvNotifEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Frame Seconds Summary Event. + + Each [802.3ah] defined Event Notification TLV has its own + conformance group because each event can be implemented + independently of any other. " + ::= { dot3OamGroups 8 } + + dot3OamFlagEventGroup OBJECT-GROUP + OBJECTS { dot3OamDyingGaspEnable, + dot3OamCriticalEventEnable + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the sending OAMPDUs + with the critical event flag or dying gasp flag enabled. " + ::= { dot3OamGroups 9 } + + dot3OamEventLogGroup OBJECT-GROUP + OBJECTS { dot3OamEventLogTimestamp, + dot3OamEventLogOui, + dot3OamEventLogType, + dot3OamEventLogLocation, + dot3OamEventLogWindowHi, + dot3OamEventLogWindowLo, + dot3OamEventLogThresholdHi, + dot3OamEventLogThresholdLo, + dot3OamEventLogValue, + dot3OamEventLogRunningTotal, + dot3OamEventLogEventTotal + } + STATUS current + DESCRIPTION + "A collection of objects for configuring the thresholds for an + Errored Frame Seconds Summary Event and maintaining the event + information. " + ::= { dot3OamGroups 10 } + + dot3OamNotificationGroup NOTIFICATION-GROUP + + + + NOTIFICATIONS { + dot3OamThresholdEvent, + dot3OamNonThresholdEvent + } + STATUS current + DESCRIPTION + "A collection of notifications used by Ethernet OAM to signal + to a management entity that local or remote events have + occurred on a specified Ethernet link. " + ::= { dot3OamGroups 11 } + + END diff --git a/mibs/ietf/DS0-MIB b/mibs/ietf/DS0-MIB new file mode 100644 index 0000000..7a54820 --- /dev/null +++ b/mibs/ietf/DS0-MIB @@ -0,0 +1,306 @@ +DS0-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + transmission FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + DisplayString, TruthValue FROM SNMPv2-TC + ifIndex, InterfaceIndex, + InterfaceIndexOrZero FROM IF-MIB; + +-- This is the MIB module for the DS0 Interface objects. + +ds0 MODULE-IDENTITY + LAST-UPDATED "9807161630Z" + ORGANIZATION "IETF Trunk MIB Working Group" + CONTACT-INFO + " David Fowler + + Postal: Newbridge Networks Corporation + 600 March Road + Kanata, Ontario, Canada K2K 2E6 + + Tel: +1 613 591 3600 + Fax: +1 613 599 3619 + + E-mail: davef@newbridge.com" + DESCRIPTION + "The MIB module to describe + DS0 interfaces objects." + REVISION "9805242010Z" + DESCRIPTION + "Initial version of the DS0-MIB." + + ::= { transmission 81 } + +-- The DS0 Config Group + +-- Implementation of this group is mandatory for all +-- systems that use a DS0 Interface. + +-- The DS0 Config Group consists of two tables: +-- DS0 Configuration Table +-- DS0 Channel Mapping Table + +-- The DS0 Configuration Table + +dsx0ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx0ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS0 Configuration table." + ::= { ds0 1 } + +dsx0ConfigEntry OBJECT-TYPE + SYNTAX Dsx0ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS0 Configuration table. There + is an entry in this table for each DS0 interface." + INDEX { ifIndex } + ::= { dsx0ConfigTable 1 } + +Dsx0ConfigEntry ::= + SEQUENCE { + dsx0Ds0ChannelNumber INTEGER, + dsx0RobbedBitSignalling TruthValue, + dsx0CircuitIdentifier DisplayString, + dsx0IdleCode INTEGER, + dsx0SeizedCode INTEGER, + dsx0ReceivedCode INTEGER, + dsx0TransmitCodesEnable TruthValue, + dsx0Ds0BundleMappedIfIndex InterfaceIndexOrZero +} + +dsx0Ds0ChannelNumber OBJECT-TYPE + SYNTAX INTEGER(0..31) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the channel number of the + ds0 on its DS1/E1." + ::= { dsx0ConfigEntry 1 } + +dsx0RobbedBitSignalling OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates if Robbed Bit Signalling is + turned on or off for a given ds0. This only + applies to DS0s on a DS1 link. For E1 links the + value is always off (false)." + ::= { dsx0ConfigEntry 2 } + +dsx0CircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains the transmission vendor's + circuit identifier, for the purpose of + facilitating troubleshooting." + ::= { dsx0ConfigEntry 3 } + +dsx0IdleCode OBJECT-TYPE + SYNTAX INTEGER(0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains the code transmitted in the + ABCD bits when the ds0 is not connected and + dsx0TransmitCodesEnable is enabled. The object is + a bitmap and the various bit positions are: + 1 D bit + 2 C bit + 4 B bit + 8 A bit" + ::= { dsx0ConfigEntry 4 } + +dsx0SeizedCode OBJECT-TYPE + SYNTAX INTEGER(0..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains the code transmitted in the + ABCD bits when the ds0 is connected and + dsx0TransmitCodesEnable is enabled. The object is + a bitmap and the various bit positions are: + 1 D bit + 2 C bit + 4 B bit + 8 A bit" + ::= { dsx0ConfigEntry 5 } + +dsx0ReceivedCode OBJECT-TYPE + SYNTAX INTEGER(0..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the code being received in + the ABCD bits. The object is a bitmap and the + various bit positions are: + 1 D bit + 2 C bit + 4 B bit + 8 A bit" + ::= { dsx0ConfigEntry 6 } + +dsx0TransmitCodesEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines if the idle and seized + codes are transmitted. If the value of this object + is true then the codes are transmitted." + ::= { dsx0ConfigEntry 7 } + +dsx0Ds0BundleMappedIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the ifIndex value assigned + by the agent for the ds0Bundle(82) ifEntry to + which the given ds0(81) ifEntry may belong. + + If the given ds0(81) ifEntry does not belong to + any ds0Bundle(82) ifEntry, then this object has a + value of zero. + + While this object provides information that can + also be found in the ifStackTable, it provides + this same information with a single table lookup, + rather than by walking the ifStackTable to find + the possibly non-existent ds0Bundle(82) ifEntry + that may be stacked above the given ds0(81) + ifTable entry." + ::= { dsx0ConfigEntry 8 } + +-- The DS0 Channel Mapping Table + +dsx0ChanMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx0ChanMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS0 Channel Mapping table. This table maps a + DS0 channel number on a particular DS1/E1 into an + ifIndex." + ::= { ds0 3 } + +dsx0ChanMappingEntry OBJECT-TYPE + SYNTAX Dsx0ChanMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS0 Channel Mapping table. There + is an entry in this table corresponding to each + ds0 ifEntry within any interface that is + channelized to the individual ds0 ifEntry level. + + This table is intended to facilitate mapping from + channelized interface / channel number to DS0 + ifEntry. (e.g. mapping (DS1 ifIndex, DS0 Channel + Number) -> ifIndex) + + While this table provides information that can + also be found in the ifStackTable and + dsx0ConfigTable, it provides this same information + with a single table lookup, rather than by walking + the ifStackTable to find the various constituent + ds0 ifTable entries, and testing various + dsx0ConfigTable entries to check for the entry + with the applicable DS0 channel number." + INDEX { ifIndex, dsx0Ds0ChannelNumber } + ::= { dsx0ChanMappingTable 1 } + +Dsx0ChanMappingEntry ::= + SEQUENCE { + dsx0ChanMappedIfIndex InterfaceIndex +} + +dsx0ChanMappedIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the ifIndex value assigned + by the agent for the individual ds0 ifEntry that + corresponds to the given DS0 channel number + (specified by the INDEX element + dsx0Ds0ChannelNumber) of the given channelized + interface (specified by INDEX element ifIndex)." + ::= { dsx0ChanMappingEntry 1 } + +-- conformance information + +ds0Conformance OBJECT IDENTIFIER ::= { ds0 2 } + +ds0Groups OBJECT IDENTIFIER ::= { ds0Conformance 1 } +ds0Compliances OBJECT IDENTIFIER ::= { ds0Conformance 2 } + + + +-- compliance statements + +ds0Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DS0 interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds0ConfigGroup } + + OBJECT dsx0RobbedBitSignalling + MIN-ACCESS read-only + DESCRIPTION + "The ability to set RBS is not required." + OBJECT dsx0CircuitIdentifier + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the circuit identifier is not + required." + + OBJECT dsx0IdleCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the idle code is not + required." + + OBJECT dsx0SeizedCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the seized code is not + required." + + OBJECT dsx0TransmitCodesEnable + MIN-ACCESS read-only + DESCRIPTION + "The ability to enable and disable the + transmitting of idle and seized codes is not + required." + + ::= { ds0Compliances 1 } + +-- units of conformance + +ds0ConfigGroup OBJECT-GROUP + OBJECTS { dsx0Ds0ChannelNumber, + dsx0RobbedBitSignalling, + dsx0CircuitIdentifier, + dsx0IdleCode, + dsx0SeizedCode, + dsx0ReceivedCode, + dsx0TransmitCodesEnable, + dsx0Ds0BundleMappedIfIndex, + dsx0ChanMappedIfIndex } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS0 interfaces." + ::= { ds0Groups 1 } + +END diff --git a/mibs/ietf/DS0BUNDLE-MIB b/mibs/ietf/DS0BUNDLE-MIB new file mode 100644 index 0000000..d652b90 --- /dev/null +++ b/mibs/ietf/DS0BUNDLE-MIB @@ -0,0 +1,314 @@ +DS0BUNDLE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + transmission FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + DisplayString, RowStatus, + TestAndIncr FROM SNMPv2-TC + ifIndex, InterfaceIndex FROM IF-MIB; + +-- This is the MIB module for the DS0Bundle Interface +-- objects. + +ds0Bundle MODULE-IDENTITY + LAST-UPDATED "9807161630Z" + ORGANIZATION "IETF Trunk MIB Working Group" + CONTACT-INFO + " David Fowler + + Postal: Newbridge Networks Corporation + 600 March Road + Kanata, Ontario, Canada K2K 2E6 + + Tel: +1 613 591 3600 + Fax: +1 613 599 3619 + + E-mail: davef@newbridge.com" + DESCRIPTION + "The MIB module to describe + DS0 Bundle interfaces objects." + REVISION "9805242010Z" + DESCRIPTION + "Initial version of the DS0BUNDLE-MIB." + + ::= { transmission 82 } + +-- +-- The DS0 Bundle Config Group +-- +-- Implementation of this group is mandatory for all +-- systems that use a DS0Bundle Interface. +-- +-- The DS0 Bundle Config Group consists of one table: +-- DS0 Bundle Table + +-- The DS0 Bundle Table + +dsx0BundleNextIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assist the manager in + selecting a value for dsx0BundleIndex. Because + this object is of syntax TestAndIncr (see the + SNMPv2-TC document, RFC 1903) it can also be used + to avoid race conditions with multiple managers + trying to create rows in the table. + + If the result of the SET for dsx0BundleNextIndex + is not success, this means the value has been + changed from index (i.e. another manager used the + value), so a new value is required. + + The algorithm is: + done = false + while done == false + index = GET (dsx0BundleNextIndex.0) + SET (dsx0BundleNextIndex.0=index) + if (set failed) + done = false + else + SET(dsx0BundleRowStatus.index=createAndGo) + if (set failed) + done = false + else + done = true + other error handling" + ::= { ds0Bundle 2 } + +dsx0BundleTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx0BundleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is an row in this table for each ds0Bundle + in the system. This table can be used to + (indirectly) create rows in the ifTable with + ifType = 'ds0Bundle(82)'." + ::= { ds0Bundle 3 } + +dsx0BundleEntry OBJECT-TYPE + SYNTAX Dsx0BundleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is a row in entry in this table for each + ds0Bundle interface." + INDEX { dsx0BundleIndex } + ::= { dsx0BundleTable 1 } + +Dsx0BundleEntry ::= + SEQUENCE { + dsx0BundleIndex INTEGER, + dsx0BundleIfIndex InterfaceIndex, + dsx0BundleCircuitIdentifier DisplayString, + dsx0BundleRowStatus RowStatus +} + +dsx0BundleIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for a ds0Bundle. This is not + the same value as ifIndex. This table is not + indexed by ifIndex because the manager has to + choose the index in a createable row and the agent + must be allowed to select ifIndex values." + ::= { dsx0BundleEntry 1 } + +dsx0BundleIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value the agent selected for the + (new) ds0Bundle interface." + ::= { dsx0BundleEntry 2 } + +dsx0BundleCircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable contains the transmission vendor's + circuit identifier, for the purpose of + facilitating troubleshooting." + ::= { dsx0BundleEntry 3 } + +dsx0BundleRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in + this table." + ::= { dsx0BundleEntry 4 } + +-- The DS0 Bonding Group + +-- Implementation of this group is optional for all +-- systems that use a DS0Bundle Interface. + +-- The DS0 Bonding Group consists of one table: +-- DS0 Bonding Table + +-- The DS0 Bonding Table + +dsx0BondingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx0BondingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS0 Bonding table." + ::= { ds0Bundle 1 } + +dsx0BondingEntry OBJECT-TYPE + SYNTAX Dsx0BondingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS0 Bonding table. There is a + row in this table for each DS0Bundle interface." + INDEX { ifIndex } + ::= { dsx0BondingTable 1 } + +Dsx0BondingEntry ::= + SEQUENCE { + dsx0BondMode INTEGER, + dsx0BondStatus INTEGER, + dsx0BondRowStatus RowStatus +} + +dsx0BondMode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + other(2), + mode0(3), + mode1(4), + mode2(5), + mode3(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates which BONDing mode is used, + if any, for a ds0Bundle. Mode0 provides parameter + and number exchange with no synchronization. Mode + 1 provides parameter and number exchange. Mode 1 + also provides synchronization during + initialization but does not include inband + monitoring. Mode 2 provides all of the above plus + inband monitoring. Mode 2 also steals 1/64th of + the bandwidth of each channel (thus not supporting + n x 56/64 kbit/s data channels for most values of + n). Mode 3 provides all of the above, but also + provides n x 56/64 kbit/s data channels. Most + common implementations of Mode 3 add an extra + channel to support the inband monitoring overhead. + ModeNone should be used when the interface is not + performing bandwidth-on-demand." + ::= { dsx0BondingEntry 1 } + +dsx0BondStatus OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + callSetup(2), + dataTransfer(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the current status of the + bonding call using this ds0Bundle. idle(1) should + be used when the bonding mode is set to none(1)." + ::= { dsx0BondingEntry 2 } + +dsx0BondRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create new rows in this + table, modify existing rows, and to delete + existing rows." + ::= { dsx0BondingEntry 3 } + +-- conformance information + +ds0BundleConformance OBJECT IDENTIFIER ::= { ds0Bundle 4 } + +ds0BundleGroups OBJECT IDENTIFIER + ::= { ds0BundleConformance 1 } + +ds0BundleCompliances OBJECT IDENTIFIER + ::= { ds0BundleConformance 2 } + + + +-- compliance statements + +ds0BundleCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DS0Bundle + interfaces." + MODULE -- this module + MANDATORY-GROUPS {ds0BundleConfigGroup } + + GROUP ds0BondingGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS0Bundle Interface." + + OBJECT dsx0BundleRowStatus + SYNTAX INTEGER { + active(1), + createAndGo(4), + destroy(6) + } + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object, and only three of the + six enumerated values for the RowStatus textual + convention need be supported. Only supporting + createAndGo for a creation process prevents the + manager from creating an inactive row in the + ds0BundleTable. Inactive rows in the + ds0BundleTable do not make sense." + + OBJECT dsx0BundleCircuitIdentifier + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object." + + ::= { ds0BundleCompliances 1 } + + -- units of conformance + + ds0BondingGroup OBJECT-GROUP + OBJECTS { dsx0BondMode, + dsx0BondStatus, + dsx0BondRowStatus } + STATUS current + DESCRIPTION + "A collection of objects providing + configuration information applicable + to all DS0 interfaces." + ::= { ds0BundleGroups 1 } +ds0BundleConfigGroup OBJECT-GROUP + OBJECTS { dsx0BundleNextIndex, + dsx0BundleIfIndex, + dsx0BundleCircuitIdentifier, + dsx0BundleRowStatus } + STATUS current + DESCRIPTION + "A collection of objects providing the ability to + create a new ds0Bundle in the ifTable as well as + configuration information about the ds0Bundle." + ::= { ds0BundleGroups 2 } +END diff --git a/mibs/ietf/DS1-MIB b/mibs/ietf/DS1-MIB new file mode 100644 index 0000000..1ba9eec --- /dev/null +++ b/mibs/ietf/DS1-MIB @@ -0,0 +1,3181 @@ +DS1-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, transmission + FROM SNMPv2-SMI -- [RFC2578] + DisplayString, TimeStamp, TruthValue + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InterfaceIndex, ifIndex + FROM IF-MIB -- [RFC2863] + PerfCurrentCount, PerfIntervalCount, + PerfTotalCount + FROM PerfHist-TC-MIB; -- [RFC3593] + +ds1 MODULE-IDENTITY + LAST-UPDATED "200703050000Z" + ORGANIZATION "IETF AToM MIB Working Group" + + + + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + Editor: Orly Nicklass + + Postal: RAD Data Communications, Ltd. + Ziv Tower, 24 Roul Walenberg + Tel Aviv, Israel, 69719 + + Tel: +9723 765 9969 + E-mail: orly_n@rad.com" + + DESCRIPTION + "The MIB module to describe DS1, J1, E1, DS2, and + E2 interfaces objects. + + Copyright (c) The IETF Trust (2007). This + version of this MIB module is part of RFC 4805; + see the RFC itself for full legal notices." + REVISION "200703050000Z" + DESCRIPTION + "The following changes were made: + (1) Values were added to dsx1LineType to + support J1 types. + (2) The object dsx1LineImpedance was added. + (3) All DM-related objects were deprecated + following their removal from ITU performance + standards. + The RFC 4805 version of this MIB module." + REVISION "200409090000Z" + DESCRIPTION + "The RFC 3895 version of this MIB module. + The key changes made to this MIB module + since its publication in RFC 2495 are as follows: + (1) The dsx1FracIfIndex SYNTAX matches the description + range. + (2) A value was added to dsx1TransmitClockSource. + (3) Values were added to dsx1LineType. + (4) Two objects were added, dsx1LineMode and + dsx1LineBuildOut, to better express transceiver + mode and LineBuildOut for T1. + (5) Reference was added to Circuit Identifier object. + + + + + (6) Align the DESCRIPTION clauses of few statistic + objects with the near-end definition, with the far-end + definition, and with RFC 3593. + (7) Changes in Compliance Statements to include new + objects. + (8) A typographical error in dsx2E2 was fixed; the new name + is dsx1E2." + + REVISION "199808011830Z" + DESCRIPTION + "The RFC 2495 version of this MIB module. + The key changes made to this MIB module + since its publication in RFC 1406 are as follows: + (1) The Fractional table has been deprecated. + (2) This document uses SMIv2. + (3) Usage is given for ifTable and ifXTable. + (4) Example usage of ifStackTable is included. + (5) dsx1IfIndex has been deprecated. + (6) Support for DS2 and E2 has been added. + (7) Additional lineTypes for DS2, E2, and unframed E1 + were added. + (8) The definition of valid intervals has been clarified + for the case where the agent proxied for other + devices. In particular, the treatment of missing + intervals has been clarified. + (9) An inward loopback has been added. + (10) Additional lineStatus bits have been added for Near + End in Unavailable Signal State, Carrier Equipment + Out of Service, DS2 Payload AIS, and DS2 Performance + Threshold. + (11) A read-write line Length object has been added. + (12) Signal mode of other has been added. + (13) Added a lineStatus last change, trap and enabler. + (14) The e1(19) ifType has been obsoleted, so this MIB + does not list it as a supported ifType. + (15) Textual Conventions for statistics objects have + been used. + (16) A new object, dsx1LoopbackStatus, has been + introduced to reflect the loopbacks established + on a DS1 interface and the source to the requests. + dsx1LoopbackConfig continues to be the desired + loopback state while dsx1LoopbackStatus reflects + the actual state. + (17) A dual loopback has been added to allow the setting + of an inward loopback and a line loopback at the + same time. + (18) An object indicating which channel to use within a + parent object (i.e., DS3) has been added. + + + + (19) An object has been added to indicate whether or + not this DS1/E1 is channelized. + (20) Line coding type of B6ZS has been added for DS2." + + REVISION "199301252028Z" + DESCRIPTION + "Initial version, published as RFC 1406." + ::= { transmission 18 } + +-- note that this subsumes cept(19) and g703at2mb(67) +-- there is no separate CEPT or G703AT2MB MIB +-- The DS1 Near End Group + +-- The DS1 Near End Group consists of five tables: +-- DS1 Configuration +-- DS1 Current +-- DS1 Interval +-- DS1 Total +-- DS1 Channel Table + +-- The DS1 Configuration Table + +dsx1ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Configuration table." + ::= { ds1 6 } + +dsx1ConfigEntry OBJECT-TYPE + SYNTAX Dsx1ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Configuration table." + INDEX { dsx1LineIndex } + ::= { dsx1ConfigTable 1 } + +Dsx1ConfigEntry ::= + SEQUENCE { + dsx1LineIndex InterfaceIndex, + dsx1IfIndex InterfaceIndex, + dsx1TimeElapsed INTEGER, + dsx1ValidIntervals INTEGER, + dsx1LineType INTEGER, + dsx1LineCoding INTEGER, + dsx1SendCode INTEGER, + + + + dsx1CircuitIdentifier DisplayString, + dsx1LoopbackConfig INTEGER, + dsx1LineStatus INTEGER, + dsx1SignalMode INTEGER, + dsx1TransmitClockSource INTEGER, + dsx1Fdl INTEGER, + dsx1InvalidIntervals INTEGER, + dsx1LineLength INTEGER, + dsx1LineStatusLastChange TimeStamp, + dsx1LineStatusChangeTrapEnable INTEGER, + dsx1LoopbackStatus INTEGER, + dsx1Ds1ChannelNumber INTEGER, + dsx1Channelization INTEGER, + dsx1LineMode INTEGER, + dsx1LineBuildOut INTEGER, + dsx1LineImpedance INTEGER +} + +dsx1LineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "This object should be made equal to ifIndex. The + next paragraph describes its previous usage. + Making the object equal to ifIndex allows proper + use of the ifStackTable and ds0/ds0bundle MIBs. + + Previously, this object was the identifier of a DS1 + interface on a managed device. If there is an + ifEntry that is directly associated with this and + only this DS1 interface, it should have the same + value as ifIndex. Otherwise, number the + dsx1LineIndices with a unique identifier + following the rules of choosing a number that is + greater than ifNumber and numbering the inside + interfaces (e.g., equipment side) with even + numbers and outside interfaces (e.g., network + side) with odd numbers." + ::= { dsx1ConfigEntry 1 } + +dsx1IfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This value for this object is equal to the value + + + + of ifIndex from the Interfaces table (RFC 2863)." + ::= { dsx1ConfigEntry 2 } + +dsx1TimeElapsed OBJECT-TYPE + SYNTAX INTEGER (0..899) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the + beginning of the near-end current error- + measurement period. If, for some reason, such as + an adjustment in the system's time-of-day clock, + the current interval exceeds the maximum value, + the agent will return the maximum value." + ::= { dsx1ConfigEntry 3 } + +dsx1ValidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous near-end intervals for + which data was collected. The value will be 96 + unless the interface was brought online within the + last 24 hours, in which case the value will be the + number of complete 15-minute near-end intervals + since the interface has been online. In the case + where the agent is a proxy, it is possible that + some intervals are unavailable. In this case, + this interval is the maximum interval number for + which data is available." + ::= { dsx1ConfigEntry 4 } + +dsx1LineType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + dsx1ESF(2), + dsx1D4(3), + dsx1E1(4), + dsx1E1CRC(5), + dsx1E1MF(6), + dsx1E1CRCMF(7), + dsx1Unframed(8), + dsx1E1Unframed(9), + dsx1DS2M12(10), + dsx1E2(11), + dsx1E1Q50(12), + dsx1E1Q50CRC(13), + + + + dsx1J1ESF(14), + dsx1J1Unframed(16) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the variety of DS1 + Line implementing this circuit. The type of + circuit affects the number of bits per second + that the circuit can reasonably carry, as well + as the interpretation of the usage and error + statistics. The values, in sequence, describe: + + TITLE: SPECIFICATION: + dsx1ESF Extended SuperFrame DS1 + (T1.107) + dsx1D4 AT&T D4 format DS1 (T1.107) + dsx1E1 ITU-T G.704, (Table 5A) + dsx1E1-CRC ITU-T G.704, (Table 5B) + dsxE1-MF G.704 (Table 5A) with TS16 + multiframing enabled + dsx1E1-CRC-MF G.704 (Table 5B) with TS16 + multiframing enabled + dsx1Unframed DS1 with No Framing + dsx1E1Unframed E1 with No Framing (G.703) + dsx1DS2M12 DS2 frame format (T1.107) + dsx1E2 E2 frame format (G.704) + dsx1E1Q50 TS16 bits 5,7,8 set to 101, + [in all other cases it is set + to 111.] (G.704, table 14) + dsx1E1Q50CRC E1Q50 with CRC + dsx1J1ESF J1 according to (JT-G704, + JT-G706, and JT-I431) + dsx1J1Unframed J1 with No Framing + + For clarification, the capacity for each E1 type + is as listed below: + dsx1E1Unframed - E1, no framing = 32 x 64k = 2048k + dsx1E1 or dsx1E1CRC - E1, with framing, + no signalling = 31 x 64k = 1984k + dsx1E1MF or dsx1E1CRCMF - E1, with framing, + signalling = 30 x 64k = 1920k" + REFERENCE + "American National Standard for + telecommunications - + digital hierarchy - formats specification, + ANSI T1.107- 1988. + ITU-T G.703: Physical/Electrical Characteristics + + + + of Hierarchical Digital Interfaces, November + 2001. + ITU-T G.704: Synchronous frame structures used at + 1544, 6312, 2048, 8488 and 44 736 kbit/s + Hierarchical Levels, July 1995. + JT-G704: Synchronous frame structures used at + Primary and Secondary Hierarchical Levels,2002. + JT-G706. Frame Alignment and Cyclic Redundancy + Check (CRC) Procedures. + JT-I431. ISDN Primary Rate User-Network Interface, + Layer 1 Specifications, 2002 " +::= { dsx1ConfigEntry 5 } + +dsx1LineCoding OBJECT-TYPE + SYNTAX INTEGER { + dsx1JBZS(1), + dsx1B8ZS(2), + dsx1HDB3(3), + dsx1ZBTSI(4), + dsx1AMI(5), + other(6), + dsx1B6ZS(7) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable describes the variety of Zero Code + Suppression used on this interface, which in turn + affects a number of its characteristics. + + dsx1JBZS refers the Jammed Bit Zero Suppression, + in which the AT&T specification of at least one + pulse every 8-bit period is literally implemented + by forcing a pulse in bit 8 of each channel. + Thus, only 7 bits per channel, or 1.344 Mbps, + are available for data. + + dsx1B8ZS refers to the use of a specified pattern + of normal bits and bipolar violations that are + used to replace a sequence of 8 zero bits. + ANSI Clear Channels may use dsx1ZBTSI, or Zero + Byte Time Slot Interchange. + + E1 links, with or without CRC, use dsx1HDB3 or + dsx1AMI. + + dsx1AMI refers to a mode wherein no Zero Code + Suppression is present and the line encoding does + + + + not solve the problem directly. In this + application, the higher layer must provide data + that meets or exceeds the pulse density + requirements, such as inverting HDLC data. + + dsx1B6ZS refers to the user of a specified pattern + of normal bits and bipolar violations that are + used to replace a sequence of 6 zero bits. Used + for DS2. + For more information about line coding see + [ANSI-T1.102]" + ::= { dsx1ConfigEntry 6 } + +dsx1SendCode OBJECT-TYPE + SYNTAX INTEGER { + dsx1SendNoCode(1), + dsx1SendLineCode(2), + dsx1SendPayloadCode(3), + dsx1SendResetCode(4), + dsx1SendQRS(5), + dsx1Send511Pattern(6), + dsx1Send3in24Pattern(7), + dsx1SendOtherTestPattern(8) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates what type of code is + being sent across the DS1 interface by the device. + Setting this variable causes the interface to send + the code requested. The values mean the following: + + dsx1SendNoCode + sending looped or normal data + + dsx1SendLineCode + sending a request for a line loopback + + dsx1SendPayloadCode + sending a request for a payload loopback + + dsx1SendResetCode + sending a loopback termination request + + dsx1SendQRS + sending a Quasi-Random Signal (QRS) test + pattern + + + + + dsx1Send511Pattern + sending a 511-bit fixed test pattern + + dsx1Send3in24Pattern + sending a fixed test pattern of 3 bits set + in 24 + + dsx1SendOtherTestPattern + sending a test pattern other than those + described by this object" + ::= { dsx1ConfigEntry 7 } + +dsx1CircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable contains the transmission vendor's + circuit identifier, for the purpose of + facilitating troubleshooting." + REFERENCE "ITU-T M.1400" + ::= { dsx1ConfigEntry 8 } + +dsx1LoopbackConfig OBJECT-TYPE + SYNTAX INTEGER { + dsx1NoLoop(1), + dsx1PayloadLoop(2), + dsx1LineLoop(3), + dsx1OtherLoop(4), + dsx1InwardLoop(5), + dsx1DualLoop(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable represents the desired loopback + configuration of the DS1 interface. Agents + supporting read/write access should return + inconsistentValue in response to a requested + loopback state that the interface does not + support. The values mean: + + dsx1NoLoop + not in the loopback state. A device that is not + capable of performing a loopback on the interface + shall always return this as its value. + + dsx1PayloadLoop + + + + the received signal at this interface is looped + through the device. Typically, the received signal + is looped back for retransmission after it has + passed through the device's framing function. + + dsx1LineLoop + the received signal at this interface does not go + through the device (minimum penetration) but is + looped back out. + + dsx1OtherLoop + loopbacks that are not defined here. + + dsx1InwardLoop + the transmitted signal at this interface is + looped back and received by the same interface. + What is transmitted onto the line is product + dependent. + + dsx1DualLoop + both dsx1LineLoop and dsx1InwardLoop will be + active simultaneously." + ::= { dsx1ConfigEntry 9 } + +dsx1LineStatus OBJECT-TYPE + SYNTAX INTEGER (1..131071) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the line status of the + interface. It contains loopback, failure, + received alarm and transmitted alarms + information. + + The dsx1LineStatus is a bitmap represented as a + sum; therefore, it can represent multiple failures + (alarms) and a LoopbackState simultaneously. + + dsx1NoAlarm must be set if and only if no other + flag is set. + + If the dsx1loopbackState bit is set, the loopback + in effect can be determined from the + dsx1loopbackConfig object. The various bit + positions are as follows: + + 1 dsx1NoAlarm No alarm present + 2 dsx1RcvFarEndLOF Far end LOF (a.k.a. + + + + Yellow Alarm) + 4 dsx1XmtFarEndLOF Near end sending LOF + indication + 8 dsx1RcvAIS Far end sending AIS + 16 dsx1XmtAIS Near end sending AIS + 32 dsx1LossOfFrame Near end LOF (a.k.a. + Red Alarm) + 64 dsx1LossOfSignal Near end Loss of Signal + 128 dsx1LoopbackState Near end is looped + 256 dsx1T16AIS E1 TS16 AIS + 512 dsx1RcvFarEndLOMF Far end sending TS16 LOMF + 1024 dsx1XmtFarEndLOMF Near end sending TS16 LOMF + 2048 dsx1RcvTestCode Near end detects a test code + 4096 dsx1OtherFailure Any line status not defined + here + 8192 dsx1UnavailSigState Near end in unavailable + signal state + 16384 dsx1NetEquipOOS Carrier equipment out of + service + 32768 dsx1RcvPayloadAIS DS2 payload AIS + 65536 dsx1Ds2PerfThreshold DS2 performance threshold + exceeded" + ::= { dsx1ConfigEntry 10 } + +dsx1SignalMode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + robbedBit(2), + bitOriented(3), + messageOriented(4), + other(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "'none' indicates that no bits are reserved for + signaling on this channel. + + 'robbedBit' indicates that DS1 Robbed Bit Signaling + is in use. + + 'bitOriented' indicates that E1 Channel Associated + Signaling is in use. + + 'messageOriented' indicates that Common Channel + Signaling is in use on either channel 16 of + an E1 link or channel 24 of a DS1." + ::= { dsx1ConfigEntry 11 } + + + +dsx1TransmitClockSource OBJECT-TYPE + SYNTAX INTEGER { + loopTiming(1), + localTiming(2), + throughTiming(3), + adaptive (4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The source of transmit clock. + + 'loopTiming' indicates that the recovered + receive clock is used as the transmit clock. + + 'localTiming' indicates that a local clock + source is used or when an external clock is + attached to the box containing the interface. + + 'throughTiming' indicates that recovered + receive clock from another interface is used as + the transmit clock. + + 'adaptive' indicates that the clock is recovered + based on the data flow and not based on the + physical layer" + ::= { dsx1ConfigEntry 12 } + +dsx1Fdl OBJECT-TYPE + SYNTAX INTEGER (1..15) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This bitmap describes the use of the + facilities data link and is the sum of the + capabilities. Set any bits that are appropriate: + + other(1), + dsx1AnsiT1403(2), + dsx1Att54016(4), + dsx1FdlNone(8) + + 'other' indicates that a protocol other than + one of the following is used. + + 'dsx1AnsiT1403' refers to the FDL exchange + recommended by ANSI. + + + + + 'dsx1Att54016' refers to ESF FDL exchanges. + + 'dsx1FdlNone' indicates that the device does + not use the FDL." + ::= { dsx1ConfigEntry 13 } + +dsx1InvalidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from 0 to + dsx1ValidIntervals for which no data is available. + This object will typically be zero except in cases + where the data for some intervals is not + available (e.g., in proxy situations)." + ::= { dsx1ConfigEntry 14 } + +dsx1LineLength OBJECT-TYPE + SYNTAX INTEGER (0..64000) + UNITS "meters" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The length of the DS1 line in meters. This + object provides information for line build-out + circuitry. This object is only useful if the + interface has configurable line build-out + circuitry." + ::= { dsx1ConfigEntry 15 } + +dsx1LineStatusLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of MIB II's sysUpTime object at the + time this DS1 entered its current line status + state. If the current state was entered prior to + the last re-initialization of the proxy-agent, + then this object contains a zero value." + ::= { dsx1ConfigEntry 16 } + +dsx1LineStatusChangeTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether dsx1LineStatusChange traps + should be generated for this interface." + DEFVAL { disabled } + ::= { dsx1ConfigEntry 17 } + +dsx1LoopbackStatus OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable represents the current state of the + loopback on the DS1 interface. It contains + information about loopbacks established by a + manager and remotely from the far end. + + The dsx1LoopbackStatus is a bitmap represented as + a sum; therefore, it can represent multiple + loopbacks simultaneously. + + The various bit positions are as follows: + 1 dsx1NoLoopback + 2 dsx1NearEndPayloadLoopback + 4 dsx1NearEndLineLoopback + 8 dsx1NearEndOtherLoopback + 16 dsx1NearEndInwardLoopback + 32 dsx1FarEndPayloadLoopback + 64 dsx1FarEndLineLoopback" + + ::= { dsx1ConfigEntry 18 } + +dsx1Ds1ChannelNumber OBJECT-TYPE + SYNTAX INTEGER (0..28) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable represents the channel number of + the DS1/E1 on its parent DS2/E2 or DS3/E3. A + value of 0 indicates that this DS1/E1 does not + have a parent DS3/E3." + ::= { dsx1ConfigEntry 19 } + +dsx1Channelization OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabledDs0(2), + + + + enabledDs1(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether this DS1/E1 or DS2 is + channelized or unchannelized. + + The value of enabledDs0(2) indicates that this is a + DS1 channelized into DS0s. Setting this value will + cause the creation, and resetting it to disabled(1) + will cause the deletion of entries in the ifTable + for the DS0s that are within the DS1. + + The value of enabledDs1(3) indicates that this is a + DS2 channelized into DS1s. Setting this value will + cause the creation, and resetting it to disabled(1) + will cause the deletion of entries in the ifTable + for the DS1s that are within the DS2." + + ::= { dsx1ConfigEntry 20 } + +dsx1LineMode OBJECT-TYPE + SYNTAX INTEGER { + csu(1), + dsu(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This setting puts the T1 framer into either + long-haul (CSU) mode or short-haul (DSU) mode." + ::= { dsx1ConfigEntry 21 } + +dsx1LineBuildOut OBJECT-TYPE + SYNTAX INTEGER { + notApplicable(1), + neg75dB(2), + neg15dB(3), + neg225dB(4), + zerodB(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Attenuation setting for T1 framer in long haul + (CSU) mode. The optional values are -7.5dB, + -15dB, -22.5dB, and 0dB." + + + + ::= { dsx1ConfigEntry 22 } + +dsx1LineImpedance OBJECT-TYPE + SYNTAX INTEGER { + notApplicable(1), + unbalanced75ohms(2), + balanced100ohms(3), + balanced120ohms(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Nominal line impedance. For T1 and J1 lines, the + value is typically balanced100ohms(3). For E1 + lines, the value is typically unbalanced75ohms(2) + and balanced120ohms(4). When this object does not + apply, or when the appropriate value is not known, + the value should be set to notApplicable(1)." + ::= { dsx1ConfigEntry 23 } + +-- The DS1 Current Table +dsx1CurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1CurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Current table contains various statistics + being collected for the current 15-minute + interval." + ::= { ds1 7 } + +dsx1CurrentEntry OBJECT-TYPE + SYNTAX Dsx1CurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Current table." + INDEX { dsx1CurrentIndex } + ::= { dsx1CurrentTable 1 } + +Dsx1CurrentEntry ::= + SEQUENCE { + dsx1CurrentIndex InterfaceIndex, + dsx1CurrentESs PerfCurrentCount, + dsx1CurrentSESs PerfCurrentCount, + dsx1CurrentSEFSs PerfCurrentCount, + dsx1CurrentUASs PerfCurrentCount, + dsx1CurrentCSSs PerfCurrentCount, + + + + dsx1CurrentPCVs PerfCurrentCount, + dsx1CurrentLESs PerfCurrentCount, + dsx1CurrentBESs PerfCurrentCount, + dsx1CurrentDMs PerfCurrentCount, + dsx1CurrentLCVs PerfCurrentCount +} + +dsx1CurrentIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is the same interface as identified by the + same value as a dsx1LineIndex object instance." + ::= { dsx1CurrentEntry 1 } + +dsx1CurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Errored Seconds." + ::= { dsx1CurrentEntry 2 } + +dsx1CurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Seconds." + ::= { dsx1CurrentEntry 3 } + +dsx1CurrentSEFSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Framing Seconds." + ::= { dsx1CurrentEntry 4 } + +dsx1CurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of Unavailable Seconds." + ::= { dsx1CurrentEntry 5 } + +dsx1CurrentCSSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Controlled Slip Seconds." + ::= { dsx1CurrentEntry 6 } + +dsx1CurrentPCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Path Coding Violations." + ::= { dsx1CurrentEntry 7 } + +dsx1CurrentLESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds." + ::= { dsx1CurrentEntry 8 } + +dsx1CurrentBESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Bursty Errored Seconds." + ::= { dsx1CurrentEntry 9 } + +dsx1CurrentDMs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Degraded Minutes." + ::= { dsx1CurrentEntry 10 } + +dsx1CurrentLCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of Line Coding Violations (LCVs)." + ::= { dsx1CurrentEntry 11 } + +-- The DS1 Interval Table +dsx1IntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1IntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Interval table contains various + statistics collected by each DS1 interface over + the previous 24 hours of operation. The past 24 + hours are broken into 96 completed 15-minute + intervals. Each row in this table represents one + such interval (identified by dsx1IntervalNumber) + for one specific instance (identified by + dsx1IntervalIndex)." + ::= { ds1 8 } + +dsx1IntervalEntry OBJECT-TYPE + SYNTAX Dsx1IntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Interval table." + INDEX { dsx1IntervalIndex, dsx1IntervalNumber } + ::= { dsx1IntervalTable 1 } + +Dsx1IntervalEntry ::= + SEQUENCE { + dsx1IntervalIndex InterfaceIndex, + dsx1IntervalNumber INTEGER, + dsx1IntervalESs PerfIntervalCount, + dsx1IntervalSESs PerfIntervalCount, + dsx1IntervalSEFSs PerfIntervalCount, + dsx1IntervalUASs PerfIntervalCount, + dsx1IntervalCSSs PerfIntervalCount, + dsx1IntervalPCVs PerfIntervalCount, + dsx1IntervalLESs PerfIntervalCount, + dsx1IntervalBESs PerfIntervalCount, + dsx1IntervalDMs PerfIntervalCount, + dsx1IntervalLCVs PerfIntervalCount, + dsx1IntervalValidData TruthValue +} + +dsx1IntervalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + + + + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is the same interface as identified by the + same value as a dsx1LineIndex object instance." + ::= { dsx1IntervalEntry 1 } + +dsx1IntervalNumber OBJECT-TYPE + SYNTAX INTEGER (1..96) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A number between 1 and 96, where 1 is the most + recently completed 15-minute interval and 96 is + the 15-minute interval completed 23 hours and 45 + minutes prior to interval 1." + ::= { dsx1IntervalEntry 2 } + +dsx1IntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Errored Seconds." + ::= { dsx1IntervalEntry 3 } + +dsx1IntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Seconds." + ::= { dsx1IntervalEntry 4 } + +dsx1IntervalSEFSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Framing Seconds." + ::= { dsx1IntervalEntry 5 } + +dsx1IntervalUASs OBJECT-TYPE + + + + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds. This object + may decrease if the occurrence of unavailable + seconds occurs across an interval boundary." + ::= { dsx1IntervalEntry 6 } + +dsx1IntervalCSSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Controlled Slip Seconds." + ::= { dsx1IntervalEntry 7 } + +dsx1IntervalPCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Path Coding Violations." + ::= { dsx1IntervalEntry 8 } + +dsx1IntervalLESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds." + ::= { dsx1IntervalEntry 9 } + +dsx1IntervalBESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Bursty Errored Seconds." + ::= { dsx1IntervalEntry 10 } + +dsx1IntervalDMs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Degraded Minutes." + ::= { dsx1IntervalEntry 11 } + + + +dsx1IntervalLCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Coding Violations." + ::= { dsx1IntervalEntry 12 } + +dsx1IntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates whether the data for this + interval is valid." + ::= { dsx1IntervalEntry 13 } + +-- The DS1 Total Table +dsx1TotalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1TotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Total table contains the cumulative sum + of the various statistics for the 24-hour period + preceding the current interval." + ::= { ds1 9 } + +dsx1TotalEntry OBJECT-TYPE + SYNTAX Dsx1TotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Total table." + INDEX { dsx1TotalIndex } + ::= { dsx1TotalTable 1 } + +Dsx1TotalEntry ::= + SEQUENCE { + dsx1TotalIndex InterfaceIndex, + dsx1TotalESs PerfTotalCount, + dsx1TotalSESs PerfTotalCount, + dsx1TotalSEFSs PerfTotalCount, + dsx1TotalUASs PerfTotalCount, + dsx1TotalCSSs PerfTotalCount, + dsx1TotalPCVs PerfTotalCount, + dsx1TotalLESs PerfTotalCount, + dsx1TotalBESs PerfTotalCount, + + + + dsx1TotalDMs PerfTotalCount, + dsx1TotalLCVs PerfTotalCount +} + +dsx1TotalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is the same interface as identified by the + same value as a dsx1LineIndex object instance." + ::= { dsx1TotalEntry 1 } + +dsx1TotalESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Errored Seconds encountered by a DS1 + interface in the previous 24-hour interval. + Invalid 15-minute intervals count as 0." + ::= { dsx1TotalEntry 2 } + +dsx1TotalSESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1TotalEntry 3 } + +dsx1TotalSEFSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Severely Errored Framing Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1TotalEntry 4 } + + + +dsx1TotalUASs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds encountered by + a DS1 interface in the previous 24-hour interval. + Invalid 15-minute intervals count as 0." + ::= { dsx1TotalEntry 5 } + +dsx1TotalCSSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Controlled Slip Seconds encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1TotalEntry 6 } + +dsx1TotalPCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Path Coding Violations encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1TotalEntry 7 } + +dsx1TotalLESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds encountered by + a DS1 interface in the previous 24-hour interval. + Invalid 15-minute intervals count as 0." + ::= { dsx1TotalEntry 8 } + +dsx1TotalBESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Bursty Errored Seconds (BESs) + + + + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals count + as 0." + ::= { dsx1TotalEntry 9 } + +dsx1TotalDMs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Degraded Minutes (DMs) encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1TotalEntry 10 } + +dsx1TotalLCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Coding Violations (LCVs) + encountered by a DS1 interface in the current + 15-minute interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1TotalEntry 11 } + +-- The DS1 Channel Table + +dsx1ChanMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1ChanMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Channel Mapping table. This table maps a + DS1 channel number on a particular DS3 into an + ifIndex. In the presence of DS2s, this table can + be used to map a DS2 channel number on a DS3 into + an ifIndex, or used to map a DS1 channel number on + a DS2 into an ifIndex." + ::= { ds1 16 } + +dsx1ChanMappingEntry OBJECT-TYPE + SYNTAX Dsx1ChanMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Channel Mapping table. There + + + + is an entry in this table corresponding to each + DS1 ifEntry within any interface that is + channelized to the individual DS1 ifEntry level. + + This table is intended to facilitate mapping from + channelized interface / channel number to DS1 + ifEntry (e.g., mapping (DS3 ifIndex, DS1 channel + number) -> ifIndex). + + While this table provides information that can + also be found in the ifStackTable and + dsx1ConfigTable, it provides this same information + with a single table lookup, rather than by walking + the ifStackTable to find the various constituent + DS1 ifTable entries, and testing various + dsx1ConfigTable entries to check for the entry + with the applicable DS1 channel number." + INDEX { ifIndex, dsx1Ds1ChannelNumber } + ::= { dsx1ChanMappingTable 1 } + +Dsx1ChanMappingEntry ::= + SEQUENCE { + dsx1ChanMappedIfIndex InterfaceIndex +} + +dsx1ChanMappedIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the ifIndex value assigned + by the agent for the individual DS1 ifEntry that + corresponds to the given DS1 channel number + (specified by the INDEX element + dsx1Ds1ChannelNumber) of the given channelized + interface (specified by INDEX element ifIndex)." + ::= { dsx1ChanMappingEntry 1 } + +-- The DS1 Far End Current Table + +dsx1FarEndCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1FarEndCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Far End Current table contains various + statistics being collected for the current + 15-minute interval. The statistics are collected + + + + from the far-end messages on the Facilities Data + Link. The definitions are the same as described + for the near-end information." + ::= { ds1 10 } + +dsx1FarEndCurrentEntry OBJECT-TYPE + SYNTAX Dsx1FarEndCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Far End Current table." + INDEX { dsx1FarEndCurrentIndex } + ::= { dsx1FarEndCurrentTable 1 } + +Dsx1FarEndCurrentEntry ::= + SEQUENCE { + dsx1FarEndCurrentIndex InterfaceIndex, + dsx1FarEndTimeElapsed INTEGER, + dsx1FarEndValidIntervals INTEGER, + dsx1FarEndCurrentESs PerfCurrentCount, + dsx1FarEndCurrentSESs PerfCurrentCount, + dsx1FarEndCurrentSEFSs PerfCurrentCount, + dsx1FarEndCurrentUASs PerfCurrentCount, + dsx1FarEndCurrentCSSs PerfCurrentCount, + dsx1FarEndCurrentLESs PerfCurrentCount, + dsx1FarEndCurrentPCVs PerfCurrentCount, + dsx1FarEndCurrentBESs PerfCurrentCount, + dsx1FarEndCurrentDMs PerfCurrentCount, + dsx1FarEndInvalidIntervals INTEGER +} + +dsx1FarEndCurrentIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx1LineIndex." + ::= { dsx1FarEndCurrentEntry 1 } + +dsx1FarEndTimeElapsed OBJECT-TYPE + SYNTAX INTEGER (0..899) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of seconds that have elapsed since the + beginning of the far-end current error-measurement + period. If, for some reason, such as an adjustment + in the system's time-of-day clock, the current + interval exceeds the maximum value, the agent will + return the maximum value." + ::= { dsx1FarEndCurrentEntry 2 } + +dsx1FarEndValidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous far-end intervals for + which data was collected. The value will be 96 + unless the interface was brought online within the + last 24 hours, in which case the value will be the + number of complete 15-minute far-end intervals + since the interface has been online. In the case + where the agent is a proxy, it is possible that + some intervals are unavailable. In this case, + this interval is the maximum interval number for + which data is available." + ::= { dsx1FarEndCurrentEntry 3 } + +dsx1FarEndCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Errored Seconds." + ::= { dsx1FarEndCurrentEntry 4 } + +dsx1FarEndCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Severely Errored Seconds." + ::= { dsx1FarEndCurrentEntry 5 } + +dsx1FarEndCurrentSEFSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Severely Errored Framing + + + + Seconds." + ::= { dsx1FarEndCurrentEntry 6 } + +dsx1FarEndCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds." + ::= { dsx1FarEndCurrentEntry 7 } + +dsx1FarEndCurrentCSSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Controlled Slip Seconds." + ::= { dsx1FarEndCurrentEntry 8 } + +dsx1FarEndCurrentLESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Line Errored Seconds." + ::= { dsx1FarEndCurrentEntry 9 } + +dsx1FarEndCurrentPCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Path Coding Violations." + ::= { dsx1FarEndCurrentEntry 10 } + +dsx1FarEndCurrentBESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Bursty Errored Seconds." + ::= { dsx1FarEndCurrentEntry 11 } + +dsx1FarEndCurrentDMs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + + + + "The number of Far End Degraded Minutes." + ::= { dsx1FarEndCurrentEntry 12 } + +dsx1FarEndInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from 0 to + dsx1FarEndValidIntervals for which no data is + available. This object will typically be zero + except in cases where the data for some intervals + is not available (e.g., in proxy situations)." + ::= { dsx1FarEndCurrentEntry 13 } + +-- The DS1 Far End Interval Table + +dsx1FarEndIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1FarEndIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Far End Interval table contains various + statistics collected by each DS1 interface over + the previous 24 hours of operation. The past 24 + hours are broken into 96 completed 15-minute + intervals. Each row in this table represents one + such interval (identified by + dsx1FarEndIntervalNumber) for one specific + instance (identified by dsx1FarEndIntervalIndex)." + ::= { ds1 11 } + +dsx1FarEndIntervalEntry OBJECT-TYPE + SYNTAX Dsx1FarEndIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Far End Interval table." + INDEX { dsx1FarEndIntervalIndex, + dsx1FarEndIntervalNumber } + ::= { dsx1FarEndIntervalTable 1 } + +Dsx1FarEndIntervalEntry ::= + SEQUENCE { + dsx1FarEndIntervalIndex InterfaceIndex, + dsx1FarEndIntervalNumber INTEGER, + dsx1FarEndIntervalESs PerfIntervalCount, + dsx1FarEndIntervalSESs PerfIntervalCount, + + + + dsx1FarEndIntervalSEFSs PerfIntervalCount, + dsx1FarEndIntervalUASs PerfIntervalCount, + dsx1FarEndIntervalCSSs PerfIntervalCount, + dsx1FarEndIntervalLESs PerfIntervalCount, + dsx1FarEndIntervalPCVs PerfIntervalCount, + dsx1FarEndIntervalBESs PerfIntervalCount, + dsx1FarEndIntervalDMs PerfIntervalCount, + dsx1FarEndIntervalValidData TruthValue +} + +dsx1FarEndIntervalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx1LineIndex." + ::= { dsx1FarEndIntervalEntry 1 } + +dsx1FarEndIntervalNumber OBJECT-TYPE + SYNTAX INTEGER (1..96) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A number between 1 and 96, where 1 is the most + recently completed 15-minute interval and 96 is + the 15 minutes interval completed 23 hours and 45 + minutes prior to interval 1." + ::= { dsx1FarEndIntervalEntry 2 } + +dsx1FarEndIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Errored Seconds." + ::= { dsx1FarEndIntervalEntry 3 } + +dsx1FarEndIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of Far End Severely Errored Seconds." + ::= { dsx1FarEndIntervalEntry 4 } + +dsx1FarEndIntervalSEFSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Severely Errored Framing + Seconds." + ::= { dsx1FarEndIntervalEntry 5 } + +dsx1FarEndIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds." + ::= { dsx1FarEndIntervalEntry 6 } + +dsx1FarEndIntervalCSSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Controlled Slip Seconds." + ::= { dsx1FarEndIntervalEntry 7 } + +dsx1FarEndIntervalLESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Line Errored Seconds." + ::= { dsx1FarEndIntervalEntry 8 } + +dsx1FarEndIntervalPCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Path Coding Violations." + ::= { dsx1FarEndIntervalEntry 9 } + +dsx1FarEndIntervalBESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of Far End Bursty Errored Seconds." + ::= { dsx1FarEndIntervalEntry 10 } + +dsx1FarEndIntervalDMs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Far End Degraded Minutes." + ::= { dsx1FarEndIntervalEntry 11 } + +dsx1FarEndIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This variable indicates if the data for this + interval is valid." + ::= { dsx1FarEndIntervalEntry 12 } + +-- The DS1 Far End Total Table + +dsx1FarEndTotalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1FarEndTotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS1 Far End Total table contains the + cumulative sum of the various statistics for the + 24-hour period preceding the current interval." + ::= { ds1 12 } + +dsx1FarEndTotalEntry OBJECT-TYPE + SYNTAX Dsx1FarEndTotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS1 Far End Total table." + INDEX { dsx1FarEndTotalIndex } + ::= { dsx1FarEndTotalTable 1 } + +Dsx1FarEndTotalEntry ::= + SEQUENCE { + dsx1FarEndTotalIndex InterfaceIndex, + dsx1FarEndTotalESs PerfTotalCount, + dsx1FarEndTotalSESs PerfTotalCount, + dsx1FarEndTotalSEFSs PerfTotalCount, + + + + dsx1FarEndTotalUASs PerfTotalCount, + dsx1FarEndTotalCSSs PerfTotalCount, + dsx1FarEndTotalLESs PerfTotalCount, + dsx1FarEndTotalPCVs PerfTotalCount, + dsx1FarEndTotalBESs PerfTotalCount, + dsx1FarEndTotalDMs PerfTotalCount +} + +dsx1FarEndTotalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value that uniquely identifies the DS1 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx1LineIndex." + ::= { dsx1FarEndTotalEntry 1 } + +dsx1FarEndTotalESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Errored Seconds encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1FarEndTotalEntry 2 } + +dsx1FarEndTotalSESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Severely Errored Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1FarEndTotalEntry 3 } + +dsx1FarEndTotalSEFSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of Far End Severely Errored Framing + Seconds encountered by a DS1 interface in the + previous 24-hour interval. Invalid 15-minute + intervals count as 0." + ::= { dsx1FarEndTotalEntry 4 } + +dsx1FarEndTotalUASs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Unavailable Seconds encountered by + a DS1 interface in the previous 24-hour interval. + Invalid 15-minute intervals count as 0." + ::= { dsx1FarEndTotalEntry 5 } + +dsx1FarEndTotalCSSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Controlled Slip Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15 minute intervals + count as 0." + ::= { dsx1FarEndTotalEntry 6 } + +dsx1FarEndTotalLESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Line Errored Seconds + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1FarEndTotalEntry 7 } + +dsx1FarEndTotalPCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Far End Path Coding Violations + reported via the far end block error count + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + + + + ::= { dsx1FarEndTotalEntry 8 } + +dsx1FarEndTotalBESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Bursty Errored Seconds (BESs) + encountered by a DS1 interface in the previous + 24-hour interval. Invalid 15-minute intervals + count as 0." + ::= { dsx1FarEndTotalEntry 9 } + +dsx1FarEndTotalDMs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of Degraded Minutes (DMs) encountered + by a DS1 interface in the previous 24-hour + interval. Invalid 15-minute intervals count as + 0." + ::= { dsx1FarEndTotalEntry 10 } + +-- The DS1 Fractional Table + +dsx1FracTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx1FracEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table is deprecated in favor of using + ifStackTable. + + The table was mandatory for systems dividing a DS1 + into channels containing different data streams + that are of local interest. Systems that are + indifferent to data content, such as CSUs, need + not implement it. + + The DS1 Fractional table identifies which DS1 + channels associated with a CSU are being used to + support a logical interface, i.e., an entry in the + interfaces table from the Internet-standard MIB. + + For example, consider an application managing a + North American ISDN Primary Rate link whose + division is a 384-kbit/s H1 _B_ Channel for video, + + + + a second H1 for data to a primary routing peer, + and 12 64-kbit/s H0 _B_ Channels. Consider that + some subset of the H0 channels is used for voice + and the remainder are available for dynamic data + calls. + + We count a total of 14 interfaces multiplexed onto + the DS1 interface. Six DS1 channels (for the sake + of the example, channels 1..6) are used for video, + six more (7..11 and 13) are used for data, and the + remaining 12 are in channels 12 and 14..24. + + Let us further imagine that ifIndex 2 is of type + DS1 and refers to the DS1 interface and that the + interfaces layered onto it are numbered 3..16. + + We might describe the allocation of channels, in + the dsx1FracTable, as follows: + dsx1FracIfIndex.2. 1 = 3 dsx1FracIfIndex.2.13 = 4 + dsx1FracIfIndex.2. 2 = 3 dsx1FracIfIndex.2.14 = 6 + dsx1FracIfIndex.2. 3 = 3 dsx1FracIfIndex.2.15 = 7 + dsx1FracIfIndex.2. 4 = 3 dsx1FracIfIndex.2.16 = 8 + dsx1FracIfIndex.2. 5 = 3 dsx1FracIfIndex.2.17 = 9 + dsx1FracIfIndex.2. 6 = 3 dsx1FracIfIndex.2.18 = 10 + dsx1FracIfIndex.2. 7 = 4 dsx1FracIfIndex.2.19 = 11 + dsx1FracIfIndex.2. 8 = 4 dsx1FracIfIndex.2.20 = 12 + dsx1FracIfIndex.2. 9 = 4 dsx1FracIfIndex.2.21 = 13 + dsx1FracIfIndex.2.10 = 4 dsx1FracIfIndex.2.22 = 14 + dsx1FracIfIndex.2.11 = 4 dsx1FracIfIndex.2.23 = 15 + dsx1FracIfIndex.2.12 = 5 dsx1FracIfIndex.2.24 = 16 + + For North American (DS1) interfaces, there are 24 + legal channels, numbered 1 through 24. + + For G.704 interfaces, there are 31 legal channels, + numbered 1 through 31. The channels (1..31) + correspond directly to the equivalently numbered + time-slots." + ::= { ds1 13 } + +dsx1FracEntry OBJECT-TYPE + SYNTAX Dsx1FracEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry in the DS1 Fractional table." + INDEX { dsx1FracIndex, dsx1FracNumber } + ::= { dsx1FracTable 1 } + + + +Dsx1FracEntry ::= + SEQUENCE { + dsx1FracIndex INTEGER, + dsx1FracNumber INTEGER, + dsx1FracIfIndex INTEGER + } + +dsx1FracIndex OBJECT-TYPE + SYNTAX INTEGER (1..'7fffffff'h) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The index value that uniquely identifies the + DS1 interface to which this entry is applicable. + The interface identified by a particular + value of this index is the same interface as + identified by the same value as a dsx1LineIndex + object instance." + ::= { dsx1FracEntry 1 } + +dsx1FracNumber OBJECT-TYPE + SYNTAX INTEGER (1..31) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The channel number for this entry." + ::= { dsx1FracEntry 2 } + +dsx1FracIfIndex OBJECT-TYPE + SYNTAX INTEGER (0..'7fffffff'h) + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "An index value that uniquely identifies an + interface. The interface identified by a particular + value of this index is the same interface + as identified by the same value as an ifIndex + object instance. If no interface is currently using + a channel, the value should be zero. If a + single interface occupies more than one time-slot, + that ifIndex value will be found in multiple + time-slots." + ::= { dsx1FracEntry 3 } + + -- DS1 TRAPS + + + + +ds1Traps OBJECT IDENTIFIER ::= { ds1 15 } + +dsx1LineStatusChange NOTIFICATION-TYPE + OBJECTS { dsx1LineStatus, + dsx1LineStatusLastChange } + STATUS current + DESCRIPTION + "A dsx1LineStatusChange trap is sent when the + value of an instance dsx1LineStatus changes. It + can be utilized by an Network Management Station + (NMS) to trigger polls. When the line status + change results from a higher-level line status + change (i.e., DS3), then no traps for the DS1 + are sent." + ::= { ds1Traps 0 1 } + +-- conformance information + +ds1Conformance OBJECT IDENTIFIER ::= { ds1 14 } + +ds1Groups OBJECT IDENTIFIER ::= { ds1Conformance 1 } +ds1Compliances OBJECT IDENTIFIER ::= { ds1Conformance 2 } + +-- compliance statements + +ds1Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for T1 and E1 + interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds1NearEndConfigGroup, + ds1NearEndStatisticsGroup } + + GROUP ds1FarEndGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface." + + GROUP ds1NearEndOptionalConfigGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface." + + GROUP ds1DS2Group + DESCRIPTION + "Implementation of this group is mandatory for all + systems that attach to a DS2 interface." + + + + GROUP ds1TransStatsGroup + DESCRIPTION + "This group is the set of statistics appropriate + for all systems that attach to a DS1 interface + running transparent or unFramed lineType." + + GROUP ds1ChanMappingGroup + DESCRIPTION + "This group is the set of objects for mapping a + DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex. + Implementation of this group is mandatory for + systems that support the channelization of DS3s + into DS1s." + + OBJECT dsx1LineType + SYNTAX INTEGER { + other(1), + dsx1ESF(2), + dsx1D4(3), + dsx1E1(4), + dsx1E1CRC(5), + dsx1E1MF(6), + dsx1E1CRCMF(7), + dsx1Unframed(8), + dsx1E1Unframed(9), + dsx1DS2M12(10), + dsx1E2(11) + } + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line type is not + required." + + OBJECT dsx1LineCoding + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line coding is not + required." + + OBJECT dsx1SendCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the send code is not + required." + + OBJECT dsx1LoopbackConfig + MIN-ACCESS read-only + DESCRIPTION + + + + "The ability to set loopbacks is not required." + + OBJECT dsx1SignalMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the signal mode is not + required." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1), + localTiming(2), + throughTiming(3) + } + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the transmit clock source is + not required." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the FDL is not required." + + OBJECT dsx1LineLength + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line length is not + required." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + ::= { ds1Compliances 1 } + +ds1MibT1PriCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on T1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndConfigGroup, + ds1NearEndStatisticsGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1ESF(2) -- Intl Spec would be G704(2) + + + + -- or I.431(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for T1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1B8ZS(2) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + none(1), -- if there is no signaling channel + messageOriented(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Possible signaling modes for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from + received clock on ISDN Primary Rate + interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on T1 ISDN + Primary Rate interfaces. + Note: Eventually, dsx1Att-54016(4) is to be + used here since the line type is ESF." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization + + + + is not required." + ::= { ds1Compliances 2 } + +ds1MibE1PriCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on E1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndConfigGroup, + ds1NearEndStatisticsGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1E1CRC(5) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for E1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1HDB3(3) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + E1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + messageOriented(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Signaling on E1 ISDN Primary Rate interfaces + is always message oriented." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from received + clock on ISDN Primary Rate interfaces." + + OBJECT dsx1Fdl + + + + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on E1 ISDN + Primary Rate interfaces. + Note: There is an 'M-Channel' in E1, + using National Bit Sa4 (G.704, + Table 5A). It is used to implement + management features between ET + and NT. This is different from + FDL in T1, which is used to carry + control signals and performance + data. In E1, control and status + signals are carried using National + Bits Sa5, Sa6, and A (RAI Ind.). + This indicates that only the other(1) or + eventually the dsx1Fdl-none(8) bits should + be set in this object for E1 PRI." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + ::= { ds1Compliances 3 } + +ds1Ds2Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for using this MIB for DS2 + interfaces." + MODULE + MANDATORY-GROUPS { ds1DS2Group } + + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1DS2M12(10), + dsx1E2(11) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for DS2, E2 + interfaces." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + + + + ::= { ds1Compliances 4 } + +ds1NCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for T1 and E1 + interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds1NearEndConfigurationGroup, + ds1NearEndStatisticsGroup } + + GROUP ds1FarEndGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface." + + GROUP ds1NearEndOptionalTrapGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface. If it is + implemented, then ds1NearEndOptionalConfigGroup + should also be implemented." + + GROUP ds1NearEndOptionalConfigGroup + DESCRIPTION + "Implementation of this group is recommended for + all systems that attach to a DS1 interface and + implement ds1NearEndOptionalTrapGroup." + + GROUP ds1DS2Group + DESCRIPTION + "Implementation of this group is mandatory for all + systems that attach to a DS2 interface." + + GROUP ds1TransStatsGroup + DESCRIPTION + "This group is the set of statistics appropriate + for all systems that attach to a DS1 interface + running transparent or unFramed lineType." + + + GROUP ds1ChanMappingGroup + DESCRIPTION + "This group is the set of objects for mapping a + DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex. + Implementation of this group is mandatory for + systems that support the channelization of DS3s + into DS1s." + + + + OBJECT dsx1LineType + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line type is not + required." + + OBJECT dsx1LineCoding + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line coding is not + required." + + OBJECT dsx1SendCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the send code is not + required." + + OBJECT dsx1LoopbackConfig + MIN-ACCESS read-only + DESCRIPTION + "The ability to set loopbacks is not required." + + OBJECT dsx1SignalMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the signal mode is not + required." + + OBJECT dsx1TransmitClockSource + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the transmit clock source is + not required." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the FDL is not required." + + OBJECT dsx1LineLength + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line length is not + required." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + + + + DESCRIPTION + "The ability to set the channelization is not + required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out is not + required." + ::= { ds1Compliances 5 } + +ds1MibT1PriNCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on T1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndConfigurationGroup, + ds1NearEndStatisticsGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1ESF(2) -- Intl Spec would be G704(2) + -- or I.431(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for T1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1B8ZS(2) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + none(1), -- if there is no signaling channel + messageOriented(4) + + + + } + MIN-ACCESS read-only + DESCRIPTION + "Possible signaling modes for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from + received clock on ISDN Primary Rate + interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on T1 ISDN + Primary Rate interfaces. + Note: Eventually, dsx1Att-54016(4) is to be + used here since the line type is ESF." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization + is not required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out + is not required." + ::= { ds1Compliances 6 } + +ds1MibE1PriNCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on E1 lines." + + + + MODULE + MANDATORY-GROUPS { ds1NearEndConfigurationGroup, + ds1NearEndStatisticsGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1E1CRC(5) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for E1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1HDB3(3) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + E1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + messageOriented(4) + } + MIN-ACCESS read-only + + DESCRIPTION + "Signaling on E1 ISDN Primary Rate interfaces + is always message oriented." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from received + clock on ISDN Primary Rate interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on E1 ISDN + Primary Rate interfaces. + Note: There is an 'M-Channel' in E1, + using National Bit Sa4 (G704, + Table 5A). It is used to implement + + + + management features between ET + and NT. This is different from + FDL in T1, which is used to carry + control signals and performance + data. In E1, control and status + signals are carried using National + Bits Sa5, Sa6, and A (RAI Ind.). + This indicates that only the other(1) or + eventually the dsx1Fdl-none(8) bits should + be set in this object for E1 PRI." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out + is not required." + ::= { ds1Compliances 7 } + +ds1J1Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for T1, J1, and E1 + interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds1NearEndCfgGroup, + ds1NearEndStatGroup } + + GROUP ds1FarEndNGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface." + + GROUP ds1NearEndOptionalTrapGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS1 interface. If it is + + + + implemented, then ds1NearEndOptionalConfigGroup + should also be implemented." + + GROUP ds1NearEndOptionalConfigGroup + DESCRIPTION + "Implementation of this group is recommended for + all systems that attach to a DS1 interface and + implement ds1NearEndOptionalTrapGroup." + + GROUP ds1DS2Group + DESCRIPTION + "Implementation of this group is mandatory for all + systems that attach to a DS2 interface." + + GROUP ds1TransStatsGroup + DESCRIPTION + "This group is the set of statistics appropriate + for all systems that attach to a DS1 interface + running transparent or unFramed lineType." + + GROUP ds1ChanMappingGroup + DESCRIPTION + "This group is the set of objects for mapping a + DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex. + Implementation of this group is mandatory for + systems that support the channelization of DS3s + into DS1s." + + OBJECT dsx1LineType + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line type is not + required." + + OBJECT dsx1LineCoding + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line coding is not + required." + + OBJECT dsx1SendCode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the send code is not + required." + + OBJECT dsx1LoopbackConfig + MIN-ACCESS read-only + + + + DESCRIPTION + "The ability to set loopbacks is not required." + + OBJECT dsx1SignalMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the signal mode is not + required." + + OBJECT dsx1TransmitClockSource + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the transmit clock source is + not required." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the FDL is not required." + + OBJECT dsx1LineLength + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line length is not + required." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization is not + required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out is not + required." + + OBJECT dsx1LineImpedance + MIN-ACCESS read-only + DESCRIPTION + "The ability to set line impedance is not + + + + required." + ::= { ds1Compliances 8 } + +ds1NMibT1PriNCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on T1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndCfgGroup, + ds1NearEndStatGroup } + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1ESF(2) -- Intl Spec would be G704(2) + -- or I.431(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for T1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + SYNTAX INTEGER { + dsx1B8ZS(2) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + none(1), -- if there is no signaling channel + messageOriented(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Possible signaling modes for + T1 ISDN Primary Rate interfaces." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from + received clock on ISDN Primary Rate + + + + interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on T1 ISDN + Primary Rate interfaces. + Note: Eventually, dsx1Att-54016(4) is to be + used here since the line type is ESF." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the channelization + is not required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out + is not required." + ::= { ds1Compliances 9 } + +ds1NMibE1PriNCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for using this MIB for ISDN + Primary Rate interfaces on E1 lines." + MODULE + MANDATORY-GROUPS { ds1NearEndCfgGroup, + ds1NearEndStatGroup } + + OBJECT dsx1LineType + SYNTAX INTEGER { + dsx1E1CRC(5) + } + MIN-ACCESS read-only + DESCRIPTION + "Line type for E1 ISDN Primary Rate + interfaces." + + OBJECT dsx1LineCoding + + + + SYNTAX INTEGER { + dsx1HDB3(3) + } + MIN-ACCESS read-only + DESCRIPTION + "Type of Zero Code Suppression for + E1 ISDN Primary Rate interfaces." + + OBJECT dsx1SignalMode + SYNTAX INTEGER { + messageOriented(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Signaling on E1 ISDN Primary Rate interfaces + is always message oriented." + + OBJECT dsx1TransmitClockSource + SYNTAX INTEGER { + loopTiming(1) + } + MIN-ACCESS read-only + DESCRIPTION + "The transmit clock is derived from received + clock on ISDN Primary Rate interfaces." + + OBJECT dsx1Fdl + MIN-ACCESS read-only + DESCRIPTION + "Facilities Data Link usage on E1 ISDN + Primary Rate interfaces. + Note: There is an 'M-Channel' in E1, + using National Bit Sa4 (G704, + Table 5A). It is used to implement + management features between ET + and NT. This is different from + FDL in T1, which is used to carry + control signals and performance + data. In E1, control and status + signals are carried using National + Bits Sa5, Sa6, and A (RAI Ind.). + This indicates that only the other(1) or + eventually the dsx1Fdl-none(8) bits should + be set in this object for E1 PRI." + + OBJECT dsx1Channelization + MIN-ACCESS read-only + DESCRIPTION + + + + "The ability to set the channelization is not + required." + + OBJECT dsx1LineMode + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line mode is not + required." + + OBJECT dsx1LineBuildOut + MIN-ACCESS read-only + DESCRIPTION + "The ability to set the line build-out + is not required." + + OBJECT dsx1LineImpedance + MIN-ACCESS read-only + DESCRIPTION + "The ability to set line impedance is not + required." + ::= { ds1Compliances 10 } + +-- units of conformance + +ds1NearEndConfigGroup OBJECT-GROUP + OBJECTS { dsx1LineIndex, + dsx1TimeElapsed, + dsx1ValidIntervals, + dsx1LineType, + dsx1LineCoding, + dsx1SendCode, + dsx1CircuitIdentifier, + dsx1LoopbackConfig, + dsx1LineStatus, + dsx1SignalMode, + dsx1TransmitClockSource, + dsx1Fdl, + dsx1InvalidIntervals, + dsx1LineLength, + dsx1LoopbackStatus, + dsx1Ds1ChannelNumber, + dsx1Channelization } + STATUS deprecated + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS1 interfaces." + ::= { ds1Groups 1 } + + + + +ds1NearEndStatisticsGroup OBJECT-GROUP + OBJECTS { dsx1CurrentIndex, + dsx1CurrentESs, + dsx1CurrentSESs, + dsx1CurrentSEFSs, + dsx1CurrentUASs, + dsx1CurrentCSSs, + dsx1CurrentPCVs, + dsx1CurrentLESs, + dsx1CurrentBESs, + dsx1CurrentDMs, + dsx1CurrentLCVs, + dsx1IntervalIndex, + dsx1IntervalNumber, + dsx1IntervalESs, + dsx1IntervalSESs, + dsx1IntervalSEFSs, + dsx1IntervalUASs, + dsx1IntervalCSSs, + dsx1IntervalPCVs, + dsx1IntervalLESs, + dsx1IntervalBESs, + dsx1IntervalDMs, + dsx1IntervalLCVs, + dsx1IntervalValidData, + dsx1TotalIndex, + dsx1TotalESs, + dsx1TotalSESs, + dsx1TotalSEFSs, + dsx1TotalUASs, + dsx1TotalCSSs, + dsx1TotalPCVs, + dsx1TotalLESs, + dsx1TotalBESs, + dsx1TotalDMs, + dsx1TotalLCVs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing statistics + information applicable to all DS1 interfaces." + ::= { ds1Groups 2 } + +ds1FarEndGroup OBJECT-GROUP + OBJECTS { dsx1FarEndCurrentIndex, + dsx1FarEndTimeElapsed, + dsx1FarEndValidIntervals, + dsx1FarEndCurrentESs, + dsx1FarEndCurrentSESs, + + + + dsx1FarEndCurrentSEFSs, + dsx1FarEndCurrentUASs, + dsx1FarEndCurrentCSSs, + dsx1FarEndCurrentLESs, + dsx1FarEndCurrentPCVs, + dsx1FarEndCurrentBESs, + dsx1FarEndCurrentDMs, + dsx1FarEndInvalidIntervals, + dsx1FarEndIntervalIndex, + dsx1FarEndIntervalNumber, + dsx1FarEndIntervalESs, + dsx1FarEndIntervalSESs, + dsx1FarEndIntervalSEFSs, + dsx1FarEndIntervalUASs, + dsx1FarEndIntervalCSSs, + dsx1FarEndIntervalLESs, + dsx1FarEndIntervalPCVs, + dsx1FarEndIntervalBESs, + dsx1FarEndIntervalDMs, + dsx1FarEndIntervalValidData, + dsx1FarEndTotalIndex, + dsx1FarEndTotalESs, + dsx1FarEndTotalSESs, + dsx1FarEndTotalSEFSs, + dsx1FarEndTotalUASs, + dsx1FarEndTotalCSSs, + dsx1FarEndTotalLESs, + dsx1FarEndTotalPCVs, + dsx1FarEndTotalBESs, + dsx1FarEndTotalDMs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing remote + configuration and statistics information." + ::= { ds1Groups 3 } + +ds1DeprecatedGroup OBJECT-GROUP + OBJECTS { dsx1IfIndex, + dsx1FracIndex, + dsx1FracNumber, + dsx1FracIfIndex } + STATUS deprecated + DESCRIPTION + "A collection of obsolete objects that may be + implemented for backwards compatibility." + ::= { ds1Groups 4 } + +ds1NearEndOptionalConfigGroup OBJECT-GROUP + + + + OBJECTS { dsx1LineStatusLastChange, + dsx1LineStatusChangeTrapEnable } + + STATUS current + DESCRIPTION + "A collection of objects that may be implemented + on DS1 and DS2 interfaces." + ::= { ds1Groups 5 } + +ds1DS2Group OBJECT-GROUP + OBJECTS { dsx1LineIndex, + dsx1LineType, + dsx1LineCoding, + dsx1SendCode, + dsx1LineStatus, + dsx1SignalMode, + dsx1TransmitClockSource, + dsx1Channelization } + STATUS current + DESCRIPTION + "A collection of objects providing information + about DS2 (6,312 kbps) and E2 (8,448 kbps) + systems." + ::= { ds1Groups 6 } + +ds1TransStatsGroup OBJECT-GROUP + OBJECTS { dsx1CurrentESs, + dsx1CurrentSESs, + dsx1CurrentUASs, + dsx1IntervalESs, + dsx1IntervalSESs, + dsx1IntervalUASs, + dsx1TotalESs, + dsx1TotalSESs, + dsx1TotalUASs } + STATUS current + DESCRIPTION + "A collection of objects that are the + statistics that can be collected from a DS1 + interface that is running transparent or unframed + lineType. Statistics not in this list should + return noSuchInstance." + ::= { ds1Groups 7 } + +ds1NearEndOptionalTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { dsx1LineStatusChange } + STATUS current + DESCRIPTION + + + + "A collection of notifications that may be + implemented on DS1 and DS2 interfaces." + ::= { ds1Groups 8 } + +ds1ChanMappingGroup OBJECT-GROUP + OBJECTS { dsx1ChanMappedIfIndex } + STATUS current + DESCRIPTION + "A collection of objects that give a mapping of + DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex." + ::= { ds1Groups 9 } + +ds1NearEndConfigurationGroup OBJECT-GROUP + OBJECTS { dsx1LineIndex, + dsx1TimeElapsed, + dsx1ValidIntervals, + dsx1LineType, + dsx1LineCoding, + dsx1SendCode, + dsx1CircuitIdentifier, + dsx1LoopbackConfig, + dsx1LineStatus, + dsx1SignalMode, + dsx1TransmitClockSource, + dsx1Fdl, + dsx1InvalidIntervals, + dsx1LineLength, + dsx1LoopbackStatus, + dsx1Ds1ChannelNumber, + dsx1Channelization, + dsx1LineMode, + dsx1LineBuildOut } + STATUS deprecated + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS1 interfaces." + ::= { ds1Groups 10 } + +ds1NearEndCfgGroup OBJECT-GROUP + OBJECTS { dsx1LineIndex, + dsx1TimeElapsed, + dsx1ValidIntervals, + dsx1LineType, + dsx1LineCoding, + dsx1SendCode, + dsx1CircuitIdentifier, + dsx1LoopbackConfig, + dsx1LineStatus, + + + + dsx1SignalMode, + dsx1TransmitClockSource, + dsx1Fdl, + dsx1InvalidIntervals, + dsx1LineLength, + dsx1LoopbackStatus, + dsx1Ds1ChannelNumber, + dsx1Channelization, + dsx1LineMode, + dsx1LineBuildOut, + dsx1LineImpedance } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS1 interfaces." + ::= { ds1Groups 11 } + +ds1NearEndStatGroup OBJECT-GROUP + OBJECTS { dsx1CurrentIndex, + dsx1CurrentESs, + dsx1CurrentSESs, + dsx1CurrentSEFSs, + dsx1CurrentUASs, + dsx1CurrentCSSs, + dsx1CurrentPCVs, + dsx1CurrentLESs, + dsx1CurrentBESs, + dsx1CurrentLCVs, + dsx1IntervalIndex, + dsx1IntervalNumber, + dsx1IntervalESs, + dsx1IntervalSESs, + dsx1IntervalSEFSs, + dsx1IntervalUASs, + dsx1IntervalCSSs, + dsx1IntervalPCVs, + dsx1IntervalLESs, + dsx1IntervalBESs, + dsx1IntervalLCVs, + dsx1IntervalValidData, + dsx1TotalIndex, + dsx1TotalESs, + dsx1TotalSESs, + dsx1TotalSEFSs, + dsx1TotalUASs, + dsx1TotalCSSs, + dsx1TotalPCVs, + dsx1TotalLESs, + + + + dsx1TotalBESs, + dsx1TotalLCVs } + STATUS current + DESCRIPTION + "A collection of objects providing statistics + information applicable to all DS1 interfaces." + ::= { ds1Groups 12 } + +ds1FarEndNGroup OBJECT-GROUP + OBJECTS { dsx1FarEndCurrentIndex, + dsx1FarEndTimeElapsed, + dsx1FarEndValidIntervals, + dsx1FarEndCurrentESs, + dsx1FarEndCurrentSESs, + dsx1FarEndCurrentSEFSs, + dsx1FarEndCurrentUASs, + dsx1FarEndCurrentCSSs, + dsx1FarEndCurrentLESs, + dsx1FarEndCurrentPCVs, + dsx1FarEndCurrentBESs, + dsx1FarEndInvalidIntervals, + dsx1FarEndIntervalIndex, + dsx1FarEndIntervalNumber, + dsx1FarEndIntervalESs, + dsx1FarEndIntervalSESs, + dsx1FarEndIntervalSEFSs, + dsx1FarEndIntervalUASs, + dsx1FarEndIntervalCSSs, + dsx1FarEndIntervalLESs, + dsx1FarEndIntervalPCVs, + dsx1FarEndIntervalBESs, + dsx1FarEndIntervalValidData, + dsx1FarEndTotalIndex, + dsx1FarEndTotalESs, + dsx1FarEndTotalSESs, + dsx1FarEndTotalSEFSs, + dsx1FarEndTotalUASs, + dsx1FarEndTotalCSSs, + dsx1FarEndTotalLESs, + dsx1FarEndTotalPCVs, + dsx1FarEndTotalBESs} + STATUS current + DESCRIPTION + "A collection of objects providing remote + configuration and statistics information." + ::= { ds1Groups 13 } +END diff --git a/mibs/ietf/DS3-MIB b/mibs/ietf/DS3-MIB new file mode 100644 index 0000000..6f82203 --- /dev/null +++ b/mibs/ietf/DS3-MIB @@ -0,0 +1,1894 @@ +DS3-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, transmission + FROM SNMPv2-SMI -- [RFC2578] + DisplayString, TimeStamp, TruthValue + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InterfaceIndex + FROM IF-MIB -- [RFC2863] + PerfCurrentCount, PerfIntervalCount, + PerfTotalCount + FROM PerfHist-TC-MIB; -- [RFC3593] + + + + +ds3 MODULE-IDENTITY + LAST-UPDATED "200409080000Z" -- September 08, 2004 + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + Editor: Orly Nicklass + + Postal: RAD Data Communications, Ltd. + Ziv Tower, 24 Roul Walenberg + Tel Aviv, Israel, 69719 + + Tel: +9723 765 9969 + E-mail: orly_n@rad.com" + + DESCRIPTION + "The is the MIB module that describes + DS3 and E3 interfaces objects. + + Copyright (c) The Internet Society (2004). This + version of this MIB module is part of RFC 3896; + see the RFC itself for full legal notices." + + REVISION "200409080000Z" -- September 08, 2004 + + DESCRIPTION + "The RFC 3896 version of this MIB module. + The key changes made to this MIB module + since its publication in RFC 2496 are as follows: + + (1) The dsx3FracIfIndex SYNTAX matches the description range. + + (2) Reference was added to Circuit Identifier object. + + (3) Usage of ifStackTable section was updated. + + (4) Align the DESCRIPTION clauses of few statistic objects with + thenear end definition, the far end definition and with + RFC 3593. + + (5) Add new value, dsx3M13, to dsx3LineType." + + REVISION "199808012130Z" + + + + DESCRIPTION + "The RFC 2496 version of this MIB module. + The key changes made to this MIB module + since its publication in RFC 1407 are as follows: + + (1) The Fractional Table has been deprecated. + + (2) This document uses SMIv2. + + (3) Values are given for ifTable and ifXTable. + + (4) Example usage of ifStackTable is included. + + (5) dsx3IfIndex has been deprecated. + + (6) The definition of valid intervals has been clarified + for the case where the agent proxied for other devices. + In particular, the treatment of missing intervals has + been clarified. + + (7) An inward loopback has been added. + + (8) Additional lineStatus bits have been added for Near End + in Unavailable Signal State, Carrier Equipment Out of + Service. + + (9) A read-write line Length object has been added. + + (10) Added a lineStatus last change, trap and enabler. + + (11) Textual Conventions for statistics objects have + been used. + + (12) A new object, dsx3LoopbackStatus, has been introduced to + reflect the loopbacks established on a DS3/E3 interface + and the source to the requests. dsx3LoopbackConfig + continues to be the desired loopback state while + dsx3LoopbackStatus reflects the actual state. + + (13) A dual loopback has been added to allow the setting of + an inward loopback and a line loopback at the same time. + + (14) An object has been added to indicated whether or not + this is a channelized DS3/E3. + + (15) A new object has been added to indicate which DS1 is to + set for remote loopback." + + + + + REVISION "199301252028Z" + DESCRIPTION + "Initial version, published as RFC 1407." + ::= { transmission 30 } + +-- The DS3/E3 Near End Group + +-- The DS3/E3 Near End Group consists of four tables: +-- DS3/E3 Configuration +-- DS3/E3 Current +-- DS3/E3 Interval +-- DS3/E3 Total + +-- the DS3/E3 Configuration Table + +dsx3ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3/E3 Configuration table." + ::= { ds3 5 } + +dsx3ConfigEntry OBJECT-TYPE + SYNTAX Dsx3ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3/E3 Configuration table." + INDEX { dsx3LineIndex } + ::= { dsx3ConfigTable 1 } + +Dsx3ConfigEntry ::= + SEQUENCE { + dsx3LineIndex InterfaceIndex, + dsx3IfIndex InterfaceIndex, + dsx3TimeElapsed INTEGER, + dsx3ValidIntervals INTEGER, + dsx3LineType INTEGER, + dsx3LineCoding INTEGER, + dsx3SendCode INTEGER, + dsx3CircuitIdentifier DisplayString, + dsx3LoopbackConfig INTEGER, + dsx3LineStatus INTEGER, + dsx3TransmitClockSource INTEGER, + dsx3InvalidIntervals INTEGER, + dsx3LineLength INTEGER, + dsx3LineStatusLastChange TimeStamp, + + + + dsx3LineStatusChangeTrapEnable INTEGER, + dsx3LoopbackStatus INTEGER, + dsx3Channelization INTEGER, + dsx3Ds1ForRemoteLoop INTEGER + +} + +dsx3LineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + + STATUS current + DESCRIPTION + "This object should be made equal to ifIndex. The + next paragraph describes its previous usage. + Making the object equal to ifIndex allows proper + use of ifStackTable. + + Previously, this object was the identifier of a + DS3/E3 Interface on a managed device. If there is + an ifEntry that is directly associated with this + and only this DS3/E3 interface, it should have the + same value as ifIndex. Otherwise, number the + dsx3LineIndices with an unique identifier + following the rules of choosing a number that is + greater than ifNumber and numbering the inside + interfaces (e.g., equipment side) with even + numbers and outside interfaces (e.g., network side) + with odd numbers." + ::= { dsx3ConfigEntry 1 } + +dsx3IfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This value for this object is equal to the value + of ifIndex from the Interfaces table of MIB II + (RFC 1213)." + ::= { dsx3ConfigEntry 2 } + +dsx3TimeElapsed OBJECT-TYPE + SYNTAX INTEGER (0..899) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the + + + + beginning of the near end current error- + measurement period. If, for some reason, such as + an adjustment in the system's time-of-day clock, + the current interval exceeds the maximum value, + the agent will return the maximum value." + ::= { dsx3ConfigEntry 3 } + +dsx3ValidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous near end intervals for + which data was collected. The value will be 96 + unless the interface was brought online within the + last 24 hours, in which case the value will be the + number of complete 15 minute near end intervals + since the interface has been online. In the case + where the agent is a proxy, it is possible that + some intervals are unavailable. In this case, + this interval is the maximum interval number for + which data is available." + ::= { dsx3ConfigEntry 4 } + +dsx3LineType OBJECT-TYPE + SYNTAX INTEGER { + dsx3other(1), + dsx3M23(2), + dsx3SYNTRAN(3), + dsx3CbitParity(4), + dsx3ClearChannel(5), + e3other(6), + e3Framed(7), + e3Plcp(8), + dsx3M13(9) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the variety of DS3 C-bit + or E3 application implementing this interface. The + type of interface affects the interpretation of + the usage and error statistics. The rate of DS3 + is 44.736 Mbps and E3 is 34.368 Mbps. The + dsx3ClearChannel value means that the C-bits are + not used except for sending/receiving AIS. The + values, in sequence, describe: + + + + + TITLE: SPECIFICATION: + dsx3M23 ANSI T1.107-1988 + dsx3SYNTRAN ANSI T1.107-1988 + dsx3CbitParity ANSI T1.107a-1990 + dsx3ClearChannel ANSI T1.102-1987 + e3Framed CCITT G.751 + e3Plcp ETSI T/NA(91)18 + dsx3M13 ANSI T1.107a-1990." + + REFERENCE + "American National Standard for telecommunications + - digital hierarchy - + formats specification, ANSI T1.107- 1988. + ANSI T1.107a-1990. + American National Standard for telecommunications + - digital hierarchy - + electrical interfaces, ANSI T1.102- 1987. + CCITT - Digital Multiplex Equipment Operating at + the Third Order Bit Rate of 34 368 Kbit/s and + the Forth Order Bit Rate of 139 264 Kbit/s + and Using Positive Justification, G.751 + European Telecommunications Standards Institute + -- ETS '34M' -- + Metropolitan Area Network Physical + Convergence Layer Procedure for + 34.368 Megabits per Second, T/NA(91)18, + May 1991." + ::= { dsx3ConfigEntry 5 } + +dsx3LineCoding OBJECT-TYPE + SYNTAX INTEGER { + dsx3Other(1), + dsx3B3ZS(2), + e3HDB3(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable describes the variety of Zero Code + Suppression used on this interface, which in turn + affects a number of its characteristics. + dsx3B3ZS and e3HDB3 refer to the use of specified + patterns of normal bits and bipolar violations + which are used to replace sequences of zero bits + of a specified length." + ::= { dsx3ConfigEntry 6 } + +dsx3SendCode OBJECT-TYPE + + + + SYNTAX INTEGER { + dsx3SendNoCode(1), + dsx3SendLineCode(2), + dsx3SendPayloadCode(3), + dsx3SendResetCode(4), + dsx3SendDS1LoopCode(5), + dsx3SendTestPattern(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates what type of code is + being sent across the DS3/E3 interface by the + device. (These are optional for E3 interfaces.) + Setting this variable causes the interface to + begin sending the code requested. + The values mean: + + dsx3SendNoCode + sending looped or normal data + + dsx3SendLineCode + sending a request for a line loopback + + dsx3SendPayloadCode + sending a request for a payload loopback + (i.e., all DS1/E1s in a DS3/E3 frame) + + dsx3SendResetCode + sending a loopback deactivation request + + dsx3SendDS1LoopCode + requesting to loopback a particular DS1/E1 + within a DS3/E3 frame. The DS1/E1 is + indicated in dsx3Ds1ForRemoteLoop. + + dsx3SendTestPattern + sending a test pattern." + ::= { dsx3ConfigEntry 7 } + +dsx3CircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable contains the transmission vendor's + circuit identifier, for the purpose of + facilitating troubleshooting." + + + + REFERENCE "ITU-T M.1400" + ::= { dsx3ConfigEntry 8 } + +dsx3LoopbackConfig OBJECT-TYPE + SYNTAX INTEGER { + dsx3NoLoop(1), + dsx3PayloadLoop(2), + dsx3LineLoop(3), + dsx3OtherLoop(4), + dsx3InwardLoop(5), + dsx3DualLoop(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable represents the desired loopback + configuration of the DS3/E3 interface. + The values mean: + + dsx3NoLoop + Not in the loopback state. A device that is + not capable of performing a loopback on + the interface shall always return this as + its value. + + dsx3PayloadLoop + The received signal at this interface is looped + through the device. Typically the received signal + is looped back for retransmission after it has + passed through the device's framing function. + + dsx3LineLoop + The received signal at this interface does not + go through the device (minimum penetration) but + is looped back out. + + dsx3OtherLoop + Loopbacks that are not defined here. + + dsx3InwardLoop + The sent signal at this interface is looped back + through the device. + + dsx3DualLoop + Both dsx1LineLoop and dsx1InwardLoop will be + active simultaneously." + ::= { dsx3ConfigEntry 9 } + + + + +dsx3LineStatus OBJECT-TYPE + SYNTAX INTEGER (1..4095) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the Line Status of the + interface. It contains loopback state information + and failure state information. The dsx3LineStatus + is a bit map represented as a sum, therefore, it + can represent multiple failures and a loopback + (see dsx3LoopbackConfig object for the type of + loopback) simultaneously. The dsx3NoAlarm must be + set if and only if no other flag is set. + + If the dsx3loopbackState bit is set, the loopback + in effect can be determined from the + dsx3loopbackConfig object. + The various bit positions are: + 1 dsx3NoAlarm No alarm present + 2 dsx3RcvRAIFailure Receiving Yellow/Remote + Alarm Indication + 4 dsx3XmitRAIAlarm Transmitting Yellow/Remote + Alarm Indication + 8 dsx3RcvAIS Receiving AIS failure state + 16 dsx3XmitAIS Transmitting AIS + 32 dsx3LOF Receiving LOF failure state + 64 dsx3LOS Receiving LOS failure state + 128 dsx3LoopbackState Looping the received signal + 256 dsx3RcvTestCode Receiving a Test Pattern + 512 dsx3OtherFailure any line status not defined + here + 1024 dsx3UnavailSigState Near End in Unavailable + Signal State + 2048 dsx3NetEquipOOS Carrier Equipment Out of + Service" + ::= { dsx3ConfigEntry 10 } + +dsx3TransmitClockSource OBJECT-TYPE + SYNTAX INTEGER { + loopTiming(1), + localTiming(2), + throughTiming(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The source of Transmit Clock. + + + + + loopTiming indicates that the recovered receive + clock is used as the transmit clock. + + localTiming indicates that a local clock source is + used or that an external clock is attached to the + box containing the interface. + + throughTiming indicates that transmit clock is + derived from the recovered receive clock of + another DS3 interface." + ::= { dsx3ConfigEntry 11 } + +dsx3InvalidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The number of intervals in the range from 0 to + dsx3ValidIntervals for which no data is available. + This object will typically be zero except in cases + where the data for some intervals are not + available (e.g., in proxy situations)." + ::= { dsx3ConfigEntry 12 } + +dsx3LineLength OBJECT-TYPE + SYNTAX INTEGER (0..64000) + UNITS "meters" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The length of the ds3 line in meters. This + object provides information for line build out + circuitry if it exists and can use this object to + adjust the line build out." + ::= { dsx3ConfigEntry 13 } + +dsx3LineStatusLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of MIB II's sysUpTime object at the + time this DS3/E3 entered its current line status + state. If the current state was entered prior to + the last re-initialization of the proxy-agent, + then this object contains a zero value." + ::= { dsx3ConfigEntry 14 } + + + + +dsx3LineStatusChangeTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether dsx3LineStatusChange traps + should be generated for this interface." + DEFVAL { disabled } + ::= { dsx3ConfigEntry 15 } + +dsx3LoopbackStatus OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable represents the current state of the + loopback on the DS3 interface. It contains + information about loopbacks established by a + manager and remotely from the far end. + + The dsx3LoopbackStatus is a bit map represented as + a sum, therefore is can represent multiple + loopbacks simultaneously. + + The various bit positions are: + 1 dsx3NoLoopback + 2 dsx3NearEndPayloadLoopback + 4 dsx3NearEndLineLoopback + 8 dsx3NearEndOtherLoopback + 16 dsx3NearEndInwardLoopback + 32 dsx3FarEndPayloadLoopback + 64 dsx3FarEndLineLoopback" + ::= { dsx3ConfigEntry 16 } + +dsx3Channelization OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabledDs1(2), + enabledDs2(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether this ds3/e3 is channelized or + unchannelized. The value of enabledDs1 indicates + + + + that this is a DS3 channelized into DS1s. The + value of enabledDs3 indicated that this is a DS3 + channelized into DS2s. Setting this object will + cause the creation or deletion of DS2 or DS1 + entries in the ifTable. " + ::= { dsx3ConfigEntry 17 } + +dsx3Ds1ForRemoteLoop OBJECT-TYPE + SYNTAX INTEGER (0..29) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates which DS1/E1 on this DS3/E3 will be + indicated in the remote ds1 loopback request. A + value of 0 means no DS1 will be looped. A value + of 29 means all DS1s/E1s will be looped." + ::= { dsx3ConfigEntry 18 } + +-- the DS3/E3 Current Table + + +dsx3CurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3CurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3/E3 current table contains various + statistics being collected for the current 15 + minute interval." + ::= { ds3 6 } + +dsx3CurrentEntry OBJECT-TYPE + SYNTAX Dsx3CurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3/E3 Current table." + INDEX { dsx3CurrentIndex } + ::= { dsx3CurrentTable 1 } + +Dsx3CurrentEntry ::= + SEQUENCE { + dsx3CurrentIndex InterfaceIndex, + dsx3CurrentPESs PerfCurrentCount, + dsx3CurrentPSESs PerfCurrentCount, + dsx3CurrentSEFSs PerfCurrentCount, + dsx3CurrentUASs PerfCurrentCount, + dsx3CurrentLCVs PerfCurrentCount, + + + + dsx3CurrentPCVs PerfCurrentCount, + dsx3CurrentLESs PerfCurrentCount, + dsx3CurrentCCVs PerfCurrentCount, + dsx3CurrentCESs PerfCurrentCount, + dsx3CurrentCSESs PerfCurrentCount + } + +dsx3CurrentIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the + DS3/E3 interface to which this entry is + applicable. The interface identified by a + particular value of this index is the same + interface as identified by the same value an + dsx3LineIndex object instance." + ::= { dsx3CurrentEntry 1 } + +dsx3CurrentPESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Errored Seconds." + ::= { dsx3CurrentEntry 2 } + +dsx3CurrentPSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Severely Errored Seconds." + ::= { dsx3CurrentEntry 3 } + +dsx3CurrentSEFSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds." + ::= { dsx3CurrentEntry 4 } + + + + +dsx3CurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds." + ::= { dsx3CurrentEntry 5 } + +dsx3CurrentLCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Line + Coding Violations." + ::= { dsx3CurrentEntry 6 } + +dsx3CurrentPCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Coding Violations." + ::= { dsx3CurrentEntry 7 } + +dsx3CurrentLESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds." + ::= { dsx3CurrentEntry 8 } + +dsx3CurrentCCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Coding Violations." + ::= { dsx3CurrentEntry 9 } + +dsx3CurrentCESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of C-bit Errored Seconds." + ::= { dsx3CurrentEntry 10 } + +dsx3CurrentCSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Severely Errored Seconds." + ::= { dsx3CurrentEntry 11 } + +-- the DS3/E3 Interval Table + +dsx3IntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3IntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3/E3 Interval Table contains various + statistics collected by each DS3/E3 Interface over + the previous 24 hours of operation. The past 24 + hours are broken into 96 completed 15 minute + intervals. Each row in this table represents one + such interval (identified by dsx3IntervalNumber) + and for one specific interface (identified by + dsx3IntervalIndex)." + ::= { ds3 7 } + +dsx3IntervalEntry OBJECT-TYPE + SYNTAX Dsx3IntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3/E3 Interval table." + INDEX { dsx3IntervalIndex, dsx3IntervalNumber } + ::= { dsx3IntervalTable 1 } + +Dsx3IntervalEntry ::= + SEQUENCE { + dsx3IntervalIndex InterfaceIndex, + dsx3IntervalNumber INTEGER, + dsx3IntervalPESs PerfIntervalCount, + dsx3IntervalPSESs PerfIntervalCount, + dsx3IntervalSEFSs PerfIntervalCount, + dsx3IntervalUASs PerfIntervalCount, + dsx3IntervalLCVs PerfIntervalCount, + dsx3IntervalPCVs PerfIntervalCount, + dsx3IntervalLESs PerfIntervalCount, + + + + dsx3IntervalCCVs PerfIntervalCount, + dsx3IntervalCESs PerfIntervalCount, + dsx3IntervalCSESs PerfIntervalCount, + dsx3IntervalValidData TruthValue + } + +dsx3IntervalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the + DS3/E3 interface to which this entry is + applicable. The interface identified by a + particular value of this index is the same + interface as identified by the same value an + dsx3LineIndex object instance." + ::= { dsx3IntervalEntry 1 } + +dsx3IntervalNumber OBJECT-TYPE + SYNTAX INTEGER (1..96) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A number between 1 and 96, where 1 is the most + recently completed 15 minute interval and 96 is + the 15 minutes interval completed 23 hours and 45 + minutes prior to interval 1." + ::= { dsx3IntervalEntry 2 } + +dsx3IntervalPESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Errored Seconds." + ::= { dsx3IntervalEntry 3 } + +dsx3IntervalPSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Severely Errored Seconds." + + + + ::= { dsx3IntervalEntry 4 } + +dsx3IntervalSEFSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds." + ::= { dsx3IntervalEntry 5 } + +dsx3IntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds. This object may decrease if + the occurrence of unavailable seconds occurs across + an interval boundary." + ::= { dsx3IntervalEntry 6 } + +dsx3IntervalLCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Line + Coding Violations." + ::= { dsx3IntervalEntry 7 } + +dsx3IntervalPCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Coding Violations." + ::= { dsx3IntervalEntry 8 } + +dsx3IntervalLESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds (BPVs or + illegal zero sequences)." + ::= { dsx3IntervalEntry 9 } + + + + dsx3IntervalCCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Coding Violations." + ::= { dsx3IntervalEntry 10 } + + dsx3IntervalCESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Errored Seconds." + ::= { dsx3IntervalEntry 11 } + + dsx3IntervalCSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Severely Errored Seconds." + ::= { dsx3IntervalEntry 12 } + + dsx3IntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This variable indicates if the data for this + interval is valid." + ::= { dsx3IntervalEntry 13 } + +-- the DS3/E3 Total + +dsx3TotalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3TotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3/E3 Total Table contains the cumulative + sum of the various statistics for the 24 hour + period preceding the current interval." + ::= { ds3 8 } + +dsx3TotalEntry OBJECT-TYPE + SYNTAX Dsx3TotalEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An entry in the DS3/E3 Total table." + INDEX { dsx3TotalIndex } + ::= { dsx3TotalTable 1 } + +Dsx3TotalEntry ::= + SEQUENCE { + dsx3TotalIndex InterfaceIndex, + dsx3TotalPESs PerfTotalCount, + dsx3TotalPSESs PerfTotalCount, + dsx3TotalSEFSs PerfTotalCount, + dsx3TotalUASs PerfTotalCount, + dsx3TotalLCVs PerfTotalCount, + dsx3TotalPCVs PerfTotalCount, + dsx3TotalLESs PerfTotalCount, + dsx3TotalCCVs PerfTotalCount, + dsx3TotalCESs PerfTotalCount, + dsx3TotalCSESs PerfTotalCount + } + +dsx3TotalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the + DS3/E3 interface to which this entry is + applicable. The interface identified by a + particular value of this index is the same + interface as identified by the same value an + dsx3LineIndex object instance." + ::= { dsx3TotalEntry 1 } + +dsx3TotalPESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Errored Seconds, encountered by a DS3 interface in + the previous 24 hour interval. Invalid 15 minute + intervals count as 0." + ::= { dsx3TotalEntry 2 } + +dsx3TotalPSESs OBJECT-TYPE + SYNTAX PerfTotalCount + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + Severely Errored Seconds, encountered by a DS3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 3 } + +dsx3TotalSEFSs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds, encountered by a + DS3/E3 interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 4 } + +dsx3TotalUASs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds, encountered by a DS3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 5 } + +dsx3TotalLCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Line + Coding Violations encountered by a DS3/E3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 6 } + +dsx3TotalPCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of P-bit + + + + Coding Violations, encountered by a DS3 interface + in the previous 24 hour interval. Invalid 15 + minute intervals count as 0." + ::= { dsx3TotalEntry 7 } + +dsx3TotalLESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Line Errored Seconds (BPVs or + illegal zero sequences) encountered by a DS3/E3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 8 } + +dsx3TotalCCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Coding Violations encountered + by a DS3 interface in the previous 24 hour + interval. Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 9 } + +dsx3TotalCESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Errored Seconds encountered + by a DS3 interface in the previous 24 hour + interval. Invalid 15 minute intervals count as 0." + ::= { dsx3TotalEntry 10 } + +dsx3TotalCSESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of C-bit Severely Errored Seconds + encountered by a DS3 interface in the previous 24 + hour interval. Invalid 15 minute intervals count + as 0." + ::= { dsx3TotalEntry 11 } + + + + + +-- The DS3 Far End Group + +-- The DS3 Far End Group consists of four tables : +-- DS3 Far End Configuration +-- DS3 Far End Current +-- DS3 Far End Interval +-- DS3 Far End Total + +-- The DS3 Far End Configuration Table + +dsx3FarEndConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FarEndConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3 Far End Configuration Table contains + configuration information reported in the C-bits + from the remote end." + ::= { ds3 9 } + +dsx3FarEndConfigEntry OBJECT-TYPE + SYNTAX Dsx3FarEndConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3 Far End Configuration table." + INDEX { dsx3FarEndLineIndex } + ::= { dsx3FarEndConfigTable 1 } + +Dsx3FarEndConfigEntry ::= + SEQUENCE { + dsx3FarEndLineIndex InterfaceIndex, + dsx3FarEndEquipCode DisplayString, + dsx3FarEndLocationIDCode DisplayString, + dsx3FarEndFrameIDCode DisplayString, + dsx3FarEndUnitCode DisplayString, + dsx3FarEndFacilityIDCode DisplayString + } + +dsx3FarEndLineIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the DS3 + interface to which this entry is applicable. The + interface identified by a particular value of this + + + + index is the same interface as identified by the + same value an dsx3LineIndex object instance." + ::= { dsx3FarEndConfigEntry 1 } + +dsx3FarEndEquipCode OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Far End Equipment Identification code + that describes the specific piece of equipment. + It is sent within the Path Identification + Message." + ::= { dsx3FarEndConfigEntry 2 } + +dsx3FarEndLocationIDCode OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..11)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Far End Location Identification code + that describes the specific location of the + equipment. It is sent within the Path + Identification Message." + ::= { dsx3FarEndConfigEntry 3 } + +dsx3FarEndFrameIDCode OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..10)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Far End Frame Identification code + that identifies where the equipment is located + within a building at a given location. It is sent + within the Path Identification Message." + ::= { dsx3FarEndConfigEntry 4 } + +dsx3FarEndUnitCode OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Far End code that identifies the + equipment location within a bay. It is sent + within the Path Identification Message." + ::= { dsx3FarEndConfigEntry 5 } + +dsx3FarEndFacilityIDCode OBJECT-TYPE + + + + SYNTAX DisplayString (SIZE (0..38)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This code identifies a specific Far End DS3 path. + It is sent within the Path Identification + Message." + ::= { dsx3FarEndConfigEntry 6 } + +-- The DS3 Far End Current + +dsx3FarEndCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FarEndCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3 Far End Current table contains various + statistics being collected for the current 15 + minute interval. The statistics are collected + from the far end block error code within the C- + bits." + ::= { ds3 10 } + +dsx3FarEndCurrentEntry OBJECT-TYPE + SYNTAX Dsx3FarEndCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3 Far End Current table." + INDEX { dsx3FarEndCurrentIndex } + ::= { dsx3FarEndCurrentTable 1 } + +Dsx3FarEndCurrentEntry ::= + SEQUENCE { + dsx3FarEndCurrentIndex InterfaceIndex, + dsx3FarEndTimeElapsed INTEGER, + dsx3FarEndValidIntervals INTEGER, + dsx3FarEndCurrentCESs PerfCurrentCount, + dsx3FarEndCurrentCSESs PerfCurrentCount, + dsx3FarEndCurrentCCVs PerfCurrentCount, + dsx3FarEndCurrentUASs PerfCurrentCount, + dsx3FarEndInvalidIntervals INTEGER + } + + dsx3FarEndCurrentIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + + + + STATUS current + DESCRIPTION + "The index value which uniquely identifies the DS3 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx3LineIndex." + ::= { dsx3FarEndCurrentEntry 1 } + +dsx3FarEndTimeElapsed OBJECT-TYPE + SYNTAX INTEGER (0..899) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the + beginning of the far end current error-measurement + period. If, for some reason, such as an adjustment + in the system's time-of-day clock, the current + interval exceeds the maximum value, the agent will + return the maximum value." + ::= { dsx3FarEndCurrentEntry 2 } + +dsx3FarEndValidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous far end intervals for + which data was collected. The value will be 96 + unless the interface was brought online within the + last 24 hours, in which case the value will be the + number of complete 15 minute far end intervals + since the interface has been online. In the case + where the agent is a proxy, it is possible that + some intervals are unavailable. In this case, + this interval is the maximum interval number for + which data is available." + ::= { dsx3FarEndCurrentEntry 3 } + +dsx3FarEndCurrentCESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Errored Seconds." + ::= { dsx3FarEndCurrentEntry 4 } + + + + +dsx3FarEndCurrentCSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Severely Errored Seconds." + ::= { dsx3FarEndCurrentEntry 5 } + +dsx3FarEndCurrentCCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Coding Violations reported via the far end + block error count." + ::= { dsx3FarEndCurrentEntry 6 } + +dsx3FarEndCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + unavailable seconds." + ::= { dsx3FarEndCurrentEntry 7 } + +dsx3FarEndInvalidIntervals OBJECT-TYPE + SYNTAX INTEGER (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The number of intervals in the range from 0 to + dsx3FarEndValidIntervals for which no data is + available. This object will typically be zero + except in cases where the data for some intervals + are not available (e.g., in proxy situations)." + ::= { dsx3FarEndCurrentEntry 8 } + +-- The DS3 Far End Interval Table + +dsx3FarEndIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FarEndIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3 Far End Interval Table contains various + + + + statistics collected by each DS3 interface over + the previous 24 hours of operation. The past 24 + hours are broken into 96 completed 15 minute + intervals." + ::= { ds3 11 } + +dsx3FarEndIntervalEntry OBJECT-TYPE + SYNTAX Dsx3FarEndIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3 Far End Interval table." + INDEX { dsx3FarEndIntervalIndex, + dsx3FarEndIntervalNumber } + ::= { dsx3FarEndIntervalTable 1 } + +Dsx3FarEndIntervalEntry ::= + SEQUENCE { + dsx3FarEndIntervalIndex InterfaceIndex, + dsx3FarEndIntervalNumber INTEGER, + dsx3FarEndIntervalCESs PerfIntervalCount, + dsx3FarEndIntervalCSESs PerfIntervalCount, + dsx3FarEndIntervalCCVs PerfIntervalCount, + dsx3FarEndIntervalUASs PerfIntervalCount, + dsx3FarEndIntervalValidData TruthValue + } + +dsx3FarEndIntervalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the DS3 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx3LineIndex." + ::= { dsx3FarEndIntervalEntry 1 } + +dsx3FarEndIntervalNumber OBJECT-TYPE + SYNTAX INTEGER (1..96) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A number between 1 and 96, where 1 is the most + recently completed 15 minute interval and 96 is + + + + the 15 minutes interval completed 23 hours and 45 + minutes prior to interval 1." + ::= { dsx3FarEndIntervalEntry 2 } + +dsx3FarEndIntervalCESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Errored Seconds encountered by a DS3 + interface in one of the previous 96, individual 15 + minute, intervals. In the case where the agent is + a proxy and data is not available, return + noSuchInstance." + ::= { dsx3FarEndIntervalEntry 3 } + +dsx3FarEndIntervalCSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Severely Errored Seconds." + ::= { dsx3FarEndIntervalEntry 4 } + +dsx3FarEndIntervalCCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Coding Violations reported via the far end + block error count." + ::= { dsx3FarEndIntervalEntry 5 } + +dsx3FarEndIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + unavailable seconds." + ::= { dsx3FarEndIntervalEntry 6 } + +dsx3FarEndIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + " This variable indicates if the data for this + interval is valid." + ::= { dsx3FarEndIntervalEntry 7 } + +-- The DS3 Far End Total + +dsx3FarEndTotalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FarEndTotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DS3 Far End Total Table contains the + cumulative sum of the various statistics for the + 24 hour period preceding the current interval." + ::= { ds3 12 } + +dsx3FarEndTotalEntry OBJECT-TYPE + SYNTAX Dsx3FarEndTotalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DS3 Far End Total table." + INDEX { dsx3FarEndTotalIndex } + ::= { dsx3FarEndTotalTable 1 } + +Dsx3FarEndTotalEntry ::= + SEQUENCE { + dsx3FarEndTotalIndex InterfaceIndex, + dsx3FarEndTotalCESs PerfTotalCount, + dsx3FarEndTotalCSESs PerfTotalCount, + dsx3FarEndTotalCCVs PerfTotalCount, + dsx3FarEndTotalUASs PerfTotalCount + } + +dsx3FarEndTotalIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The index value which uniquely identifies the DS3 + interface to which this entry is applicable. The + interface identified by a particular value of this + index is identical to the interface identified by + the same value of dsx3LineIndex." + ::= { dsx3FarEndTotalEntry 1 } + + + +dsx3FarEndTotalCESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Errored Seconds encountered by a DS3 + interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3FarEndTotalEntry 2 } + +dsx3FarEndTotalCSESs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Severely Errored Seconds encountered by a + DS3 interface in the previous 24 hour interval. + Invalid 15 minute intervals count as 0." + ::= { dsx3FarEndTotalEntry 3 } + +dsx3FarEndTotalCCVs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + C-bit Coding Violations reported via the far end + block error count encountered by a DS3 interface + in the previous 24 hour interval. Invalid 15 + minute intervals count as 0." + ::= { dsx3FarEndTotalEntry 4 } + +dsx3FarEndTotalUASs OBJECT-TYPE + SYNTAX PerfTotalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far End + unavailable seconds encountered by a DS3 interface + in the previous 24 hour interval. Invalid 15 + minute intervals count as 0." + ::= { dsx3FarEndTotalEntry 5 } + +-- the DS3/E3 Fractional Table + +-- This table is deprecated. + + + +dsx3FracTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dsx3FracEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table is deprecated in favour of using + ifStackTable. + + Implementation of this table was optional. It was + designed for those systems dividing a DS3/E3 into + channels containing different data streams that + are of local interest. + + The DS3/E3 fractional table identifies which + DS3/E3 channels associated with a CSU are being + used to support a logical interface, i.e., an + entry in the interfaces table from the Internet- + standard MIB. + + For example, consider a DS3 device with 4 high + speed links carrying router traffic, a feed for + voice, a feed for video, and a synchronous channel + for a non-routed protocol. We might describe the + allocation of channels, in the dsx3FracTable, as + follows: + dsx3FracIfIndex.2. 1 = 3 dsx3FracIfIndex.2.15 = 4 + dsx3FracIfIndex.2. 2 = 3 dsx3FracIfIndex.2.16 = 6 + dsx3FracIfIndex.2. 3 = 3 dsx3FracIfIndex.2.17 = 6 + dsx3FracIfIndex.2. 4 = 3 dsx3FracIfIndex.2.18 = 6 + dsx3FracIfIndex.2. 5 = 3 dsx3FracIfIndex.2.19 = 6 + dsx3FracIfIndex.2. 6 = 3 dsx3FracIfIndex.2.20 = 6 + dsx3FracIfIndex.2. 7 = 4 dsx3FracIfIndex.2.21 = 6 + dsx3FracIfIndex.2. 8 = 4 dsx3FracIfIndex.2.22 = 6 + dsx3FracIfIndex.2. 9 = 4 dsx3FracIfIndex.2.23 = 6 + dsx3FracIfIndex.2.10 = 4 dsx3FracIfIndex.2.24 = 6 + dsx3FracIfIndex.2.11 = 4 dsx3FracIfIndex.2.25 = 6 + dsx3FracIfIndex.2.12 = 5 dsx3FracIfIndex.2.26 = 6 + dsx3FracIfIndex.2.13 = 5 dsx3FracIfIndex.2.27 = 6 + dsx3FracIfIndex.2.14 = 5 dsx3FracIfIndex.2.28 = 6 + For dsx3M23, dsx3 SYNTRAN, dsx3CbitParity, and + dsx3ClearChannel there are 28 legal channels, + numbered 1 through 28. + + For e3Framed there are 16 legal channels, numbered + 1 through 16. The channels (1..16) correspond + directly to the equivalently numbered time-slots." + ::= { ds3 13 } + + + + +dsx3FracEntry OBJECT-TYPE + SYNTAX Dsx3FracEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry in the DS3 Fractional table." + INDEX { dsx3FracIndex, dsx3FracNumber } + ::= { dsx3FracTable 1 } + +Dsx3FracEntry ::= + SEQUENCE { + dsx3FracIndex INTEGER, + dsx3FracNumber INTEGER, + dsx3FracIfIndex INTEGER + } + +dsx3FracIndex OBJECT-TYPE + SYNTAX INTEGER (1..'7fffffff'h) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The index value which uniquely identifies the + DS3 interface to which this entry is applicable + The interface identified by a particular value + of this index is the same interface as + identified by the same value an dsx3LineIndex + object instance." + ::= { dsx3FracEntry 1 } + +dsx3FracNumber OBJECT-TYPE + SYNTAX INTEGER (1..31) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The channel number for this entry." + ::= { dsx3FracEntry 2 } + +dsx3FracIfIndex OBJECT-TYPE + SYNTAX INTEGER (0..'7fffffff'h) + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "An index value that uniquely identifies an + interface. The interface identified by a + particular value of this index is the same + interface as identified by the same value an + + + + ifIndex object instance. If no interface is + currently using a channel, the value should be + zero. If a single interface occupies more than + one time slot, that ifIndex value will be found + in multiple time slots." + ::= { dsx3FracEntry 3 } + + -- DS3 TRAPS + +ds3Traps OBJECT IDENTIFIER ::= { ds3 15 } + +dsx3LineStatusChange NOTIFICATION-TYPE + OBJECTS { dsx3LineStatus, + dsx3LineStatusLastChange } + STATUS current + DESCRIPTION + "A dsx3LineStatusChange trap is sent when the + value of an instance of dsx3LineStatus changes. It + can be utilized by an NMS to trigger polls. When + the line status change results in a lower level + line status change (i.e., ds1), then no traps for + the lower level are sent." + ::= { ds3Traps 0 1 } + +-- conformance information + +ds3Conformance OBJECT IDENTIFIER ::= { ds3 14 } +ds3Groups OBJECT IDENTIFIER ::= { ds3Conformance 1 } +ds3Compliances OBJECT IDENTIFIER ::= { ds3Conformance 2 } + +-- compliance statements + +ds3Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for DS3/E3 interfaces." + MODULE -- this module + MANDATORY-GROUPS { ds3NearEndConfigGroup, + ds3NearEndStatisticsGroup } + + GROUP ds3FarEndGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS3 Interface. However, + only C-bit Parity and SYNTRAN DS3 applications + have the capability (option) of providing this + information." + GROUP ds3NearEndOptionalTrapGroup + + + + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS3 Interface. If it is + implemented then ds3NearEndOptionalConfigGroup + should also be implemented." + GROUP ds3NearEndOptionalConfigGroup + DESCRIPTION + "Implementation of this group is optional for all + systems that attach to a DS3 interface." + + OBJECT dsx3LineType + MIN-ACCESS read-only + DESCRIPTION + "Write access for the line type is not required." + + OBJECT dsx3LineCoding + MIN-ACCESS read-only + DESCRIPTION + "Write access for the line coding is not + required." + + OBJECT dsx3SendCode + MIN-ACCESS read-only + DESCRIPTION + "Write access for the send code is not required." + + OBJECT dsx3LoopbackConfig + MIN-ACCESS read-only + DESCRIPTION + "Write access for loopbacks is not required." + + OBJECT dsx3TransmitClockSource + MIN-ACCESS read-only + DESCRIPTION + "Write access for the transmit clock source is not + required." + + OBJECT dsx3LineLength + MIN-ACCESS read-only + DESCRIPTION + "Write access for the line length is not + required." + + OBJECT dsx3Channelization + MIN-ACCESS read-only + DESCRIPTION + "Write access for the channelization is not + required." + + + + ::= { ds3Compliances 1 } + +-- units of conformance + +ds3NearEndConfigGroup OBJECT-GROUP + OBJECTS { dsx3LineIndex, + dsx3TimeElapsed, + dsx3ValidIntervals, + dsx3LineType, + dsx3LineCoding, + dsx3SendCode, + dsx3CircuitIdentifier, + dsx3LoopbackConfig, + dsx3LineStatus, + dsx3TransmitClockSource, + dsx3InvalidIntervals, + dsx3LineLength, + dsx3LoopbackStatus, + dsx3Channelization, + dsx3Ds1ForRemoteLoop} + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information applicable to all DS3/E3 interfaces." + ::= { ds3Groups 1 } + +ds3NearEndStatisticsGroup OBJECT-GROUP + OBJECTS { dsx3CurrentIndex, + dsx3CurrentPESs, + dsx3CurrentPSESs, + dsx3CurrentSEFSs, + dsx3CurrentUASs, + dsx3CurrentLCVs, + dsx3CurrentPCVs, + dsx3CurrentLESs, + dsx3CurrentCCVs, + dsx3CurrentCESs, + dsx3CurrentCSESs, + dsx3IntervalIndex, + dsx3IntervalNumber, + dsx3IntervalPESs, + dsx3IntervalPSESs, + dsx3IntervalSEFSs, + dsx3IntervalUASs, + dsx3IntervalLCVs, + dsx3IntervalPCVs, + dsx3IntervalLESs, + dsx3IntervalCCVs, + + + + dsx3IntervalCESs, + dsx3IntervalCSESs, + dsx3IntervalValidData, + dsx3TotalIndex, + dsx3TotalPESs, + dsx3TotalPSESs, + dsx3TotalSEFSs, + dsx3TotalUASs, + dsx3TotalLCVs, + dsx3TotalPCVs, + dsx3TotalLESs, + dsx3TotalCCVs, + dsx3TotalCESs, + dsx3TotalCSESs } + STATUS current + DESCRIPTION + "A collection of objects providing statistics + information applicable to all DS3/E3 interfaces." + ::= { ds3Groups 2 } + +ds3FarEndGroup OBJECT-GROUP + OBJECTS { dsx3FarEndLineIndex, + dsx3FarEndEquipCode, + dsx3FarEndLocationIDCode, + dsx3FarEndFrameIDCode, + dsx3FarEndUnitCode, + dsx3FarEndFacilityIDCode, + dsx3FarEndCurrentIndex, + dsx3FarEndTimeElapsed, + dsx3FarEndValidIntervals, + dsx3FarEndCurrentCESs, + dsx3FarEndCurrentCSESs, + dsx3FarEndCurrentCCVs, + dsx3FarEndCurrentUASs, + dsx3FarEndInvalidIntervals, + dsx3FarEndIntervalIndex, + dsx3FarEndIntervalNumber, + dsx3FarEndIntervalCESs, + dsx3FarEndIntervalCSESs, + dsx3FarEndIntervalCCVs, + dsx3FarEndIntervalUASs, + dsx3FarEndIntervalValidData, + dsx3FarEndTotalIndex, + dsx3FarEndTotalCESs, + dsx3FarEndTotalCSESs, + dsx3FarEndTotalCCVs, + dsx3FarEndTotalUASs } + STATUS current + + + + DESCRIPTION + "A collection of objects providing remote + configuration and statistics information + applicable to C-bit Parity and SYNTRAN DS3 + interfaces." + ::= { ds3Groups 3 } + +ds3DeprecatedGroup OBJECT-GROUP + + OBJECTS { dsx3IfIndex, + dsx3FracIndex, + dsx3FracNumber, + dsx3FracIfIndex } + STATUS deprecated + DESCRIPTION + "A collection of obsolete objects that may be + implemented for backwards compatibility." + ::= { ds3Groups 4 } + +ds3NearEndOptionalConfigGroup OBJECT-GROUP + OBJECTS { dsx3LineStatusLastChange, + dsx3LineStatusChangeTrapEnable } + + STATUS current + DESCRIPTION + "A collection of objects that may be implemented + on DS3/E3 interfaces." + ::= { ds3Groups 5 } + +ds3NearEndOptionalTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { dsx3LineStatusChange } + STATUS current + DESCRIPTION + "A collection of notifications that may be + implemented on DS3/E3 interfaces." + ::= { ds3Groups 6 } + +END diff --git a/mibs/ietf/DSA-MIB b/mibs/ietf/DSA-MIB new file mode 100644 index 0000000..c4b86fc --- /dev/null +++ b/mibs/ietf/DSA-MIB @@ -0,0 +1,653 @@ +DSA-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE + FROM SNMPv2-SMI + DisplayString, TimeStamp, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + mib-2 + FROM RFC1213-MIB + applIndex, DistinguishedName + FROM NETWORK-SERVICES-MIB; + + dsaMIB MODULE-IDENTITY + LAST-UPDATED "9311250000Z" + ORGANIZATION "IETF Mail and Directory Management Working + Group" + CONTACT-INFO + " Glenn Mansfield + + Postal: AIC Systems Laboratory + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, 989-32 + JP + + Tel: +81 22 279 3310 + Fax: +81 22 279 3640 + E-Mail: glenn@aic.co.jp" + DESCRIPTION + " The MIB module for monitoring Directory System Agents." + ::= { mib-2 29 } + + + dsaOpsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsaOpsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The table holding information related to the + DSA operations." + ::= {dsaMIB 1} + + dsaOpsEntry OBJECT-TYPE + SYNTAX DsaOpsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing operations related statistics + for a DSA." + INDEX { applIndex } + ::= {dsaOpsTable 1} + + DsaOpsEntry ::= SEQUENCE { + + -- Bindings + dsaAnonymousBinds + Counter32, + dsaUnauthBinds + Counter32, + dsaSimpleAuthBinds + Counter32, + dsaStrongAuthBinds + Counter32, + dsaBindSecurityErrors + Counter32, + + -- In-coming operations + + dsaInOps + Counter32, + dsaReadOps + Counter32, + dsaCompareOps + Counter32, + dsaAddEntryOps + Counter32, + dsaRemoveEntryOps + Counter32, + dsaModifyEntryOps + Counter32, + dsaModifyRDNOps + Counter32, + dsaListOps + Counter32, + dsaSearchOps + Counter32, + dsaOneLevelSearchOps + Counter32, + dsaWholeTreeSearchOps + Counter32, + + -- Out going operations + + dsaReferrals + Counter32, + dsaChainings + Counter32, + + -- Errors + + dsaSecurityErrors + Counter32, + dsaErrors + Counter32 + } + + dsaAnonymousBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of anonymous binds to this DSA from DUAs + since application start." + ::= {dsaOpsEntry 1} + + dsaUnauthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of un-authenticated binds to this + DSA since application start." + ::= {dsaOpsEntry 2} + + dsaSimpleAuthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of binds to this DSA that were authenticated + using simple authentication procedures since + application start." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 8.1.2.1.1." + ::= {dsaOpsEntry 3} + + + dsaStrongAuthBinds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of binds to this DSA that were authenticated + using the strong authentication procedures since + application start. This includes the binds that were + authenticated using external authentication procedures." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Sections 8.1.2.1.2 & 8.1.2.1.3." + ::= {dsaOpsEntry 4} + + dsaBindSecurityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of bind operations that have been rejected + by this DSA due to inappropriateAuthentication or + invalidCredentials." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 12.7.2" + ::= {dsaOpsEntry 5} + + dsaInOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations forwarded to this DSA + from DUAs or other DSAs since application + start up." + ::= {dsaOpsEntry 6} + + dsaReadOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of read operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 9.1." + ::= {dsaOpsEntry 7} + + dsaCompareOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of compare operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 9.2." + ::= {dsaOpsEntry 8} + + dsaAddEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of addEntry operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 11.1." + ::= {dsaOpsEntry 9} + + dsaRemoveEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of removeEntry operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 11.2." + ::= {dsaOpsEntry 10} + + dsaModifyEntryOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of modifyEntry operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 11.3." + ::= {dsaOpsEntry 11} + + dsaModifyRDNOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of modifyRDN operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 11.4." + ::= {dsaOpsEntry 12} + + dsaListOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of list operations serviced by + this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 10.1." + ::= {dsaOpsEntry 13} + + dsaSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of search operations- baseObjectSearches, + oneLevelSearches and subTreeSearches, serviced + by this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 10.2." + ::= {dsaOpsEntry 14} + + dsaOneLevelSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of oneLevelSearch operations serviced + by this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 10.2.2.2." + ::= {dsaOpsEntry 15} + + dsaWholeTreeSearchOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of wholeTreeSearch operations serviced + by this DSA since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 10.2.2.2." + ::= {dsaOpsEntry 16} + + dsaReferrals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of referrals returned by this DSA in response + to requests for operations since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 12.6." + ::= {dsaOpsEntry 17} + + dsaChainings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations forwarded by this DSA + to other DSAs since application startup." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.518, 1988: + Section 14." + ::= {dsaOpsEntry 18} + + dsaSecurityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations forwarded to this DSA + which did not meet the security requirements. " + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Section 12.7." + ::= {dsaOpsEntry 19} + + dsaErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that could not be serviced + due to errors other than security errors, and + referrals. + A partially serviced operation will not be counted + as an error. + The errors include NameErrors, UpdateErrors, Attribute + errors and ServiceErrors." + REFERENCE + " CCITT Blue Book Fascicle VIII.8 - Rec. X.511, 1988: + Sections 12.4, 12.5, 12.8 & 12.9." + ::= {dsaOpsEntry 20} + + -- Entry statistics/Cache performance + dsaEntriesTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsaEntriesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The table holding information related to the + entry statistics and cache performance of the DSAs." + ::= {dsaMIB 2} + + dsaEntriesEntry OBJECT-TYPE + SYNTAX DsaEntriesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing statistics pertaining to entries + held by a DSA." + INDEX { applIndex } + ::= {dsaEntriesTable 1} + + DsaEntriesEntry ::= SEQUENCE { + dsaMasterEntries + Gauge32, + dsaCopyEntries + Gauge32, + dsaCacheEntries + Gauge32, + dsaCacheHits + Counter32, + dsaSlaveHits + Counter32 + } + + dsaMasterEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries mastered in the DSA." + ::= {dsaEntriesEntry 1} + + dsaCopyEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries for which systematic (slave) + copies are maintained in the DSA." + ::= {dsaEntriesEntry 2} + + dsaCacheEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of entries cached (non-systematic copies) in + the DSA. This will include the entries that are + cached partially. The negative cache is not counted." + ::= {dsaEntriesEntry 3} + + dsaCacheHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that were serviced from + the locally held cache since application + startup." + ::= {dsaEntriesEntry 4} + + dsaSlaveHits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Number of operations that were serviced from + the locally held object replications [ shadow + entries] since application startup." + ::= {dsaEntriesEntry 5} + + + -- The dsaIntTable contains statistical data on the peer DSAs + -- with which the monitored DSAs [attempt to] interact. This + -- table will provide a useful insight into the effect of + -- neighbours on the DSA performance. + -- The table keeps track of the last "N" DSAs with which the + -- monitored DSAs has interacted [attempted to interact], + -- where "N" is a locally-defined constant. + + dsaIntTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsaIntEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Each row of this table contains some details + related to the history of the interaction + of the monitored DSAs with their respective + peer DSAs." + ::= { dsaMIB 3 } + + dsaIntEntry OBJECT-TYPE + SYNTAX DsaIntEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entry containing interaction details of a DSA + with a peer DSA." + INDEX { applIndex,dsaIntIndex } + ::= { dsaIntTable 1 } + + DsaIntEntry ::= SEQUENCE { + dsaIntIndex + INTEGER, + dsaName + DistinguishedName, + dsaTimeOfCreation + TimeStamp, + dsaTimeOfLastAttempt + TimeStamp, + dsaTimeOfLastSuccess + TimeStamp, + dsaFailuresSinceLastSuccess + Counter32, + dsaFailures + Counter32, + dsaSuccesses + Counter32 + } + + dsaIntIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Together with applIndex it forms the unique key to + identify the conceptual row which contains useful info + on the (attempted) interaction between the DSA (referred + to by applIndex) and a peer DSA." + ::= {dsaIntEntry 1} + + dsaName OBJECT-TYPE + SYNTAX DistinguishedName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Distinguished Name of the peer DSA to which this + entry pertains." + ::= {dsaIntEntry 2} + + dsaTimeOfCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when this row was created. + If the entry was created before the network management + subsystem was initialized, this object will contain + a value of zero." + ::= {dsaIntEntry 3} + + dsaTimeOfLastAttempt OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the last attempt was made + to contact this DSA. If the last attempt was made before + the network management subsystem was initialized, this + object will contain a value of zero." + ::= {dsaIntEntry 4} + + dsaTimeOfLastSuccess OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the last attempt made to + contact this DSA was successful. If there have + been no successful attempts this entry will have a value + of zero. If the last successful attempt was made before + the network management subsystem was initialized, this + object will contain a value of zero." + ::= {dsaIntEntry 5} + + dsaFailuresSinceLastSuccess OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The number of failures since the last time an + attempt to contact this DSA was successful. If + there has been no successful attempts, this counter + will contain the number of failures since this entry + was created." + ::= {dsaIntEntry 6} + + dsaFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Cumulative failures since the creation of + this entry." + ::= {dsaIntEntry 7} + + dsaSuccesses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Cumulative successes since the creation of + this entry." + ::= {dsaIntEntry 8} + + + -- Conformance information + + dsaConformance OBJECT IDENTIFIER ::= { dsaMIB 4 } + + dsaGroups OBJECT IDENTIFIER ::= { dsaConformance 1 } + dsaCompliances OBJECT IDENTIFIER ::= { dsaConformance 2 } + + -- Compliance statements + + dsaOpsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which implement the DSA-MIB for monitoring + DSA operations." + + MODULE -- this module + MANDATORY-GROUPS { dsaOpsGroup } + + ::= { dsaCompliances 1 } + + dsaEntryCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which implement the DSA-MIB for monitoring + DSA operations, entry statistics and cache + performance." + + MODULE -- this module + MANDATORY-GROUPS { dsaOpsGroup,dsaEntryGroup } + ::= { dsaCompliances 2 } + + dsaIntCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for SNMPv2 entities + which implement the DSA-MIB for monitoring DSA + operations and the interaction of the DSA with + peer DSAs." + + MODULE -- this module + MANDATORY-GROUPS { dsaOpsGroup, dsaIntGroup } + + ::= { dsaCompliances 3 } + + + -- Units of conformance + + dsaOpsGroup OBJECT-GROUP + OBJECTS { + dsaAnonymousBinds, dsaUnauthBinds, dsaSimpleAuthBinds, + dsaStrongAuthBinds, dsaBindSecurityErrors,dsaInOps, + dsaReadOps, dsaCompareOps, dsaAddEntryOps, + dsaRemoveEntryOps, dsaModifyEntryOps, dsaModifyRDNOps, + dsaListOps, dsaSearchOps, dsaOneLevelSearchOps, + dsaWholeTreeSearchOps,dsaReferrals, dsaChainings, + dsaSecurityErrors, dsaErrors} + STATUS current + DESCRIPTION + " A collection of objects for monitoring the DSA + operations." + ::= { dsaGroups 1 } + + dsaEntryGroup OBJECT-GROUP + OBJECTS {dsaMasterEntries, dsaCopyEntries, dsaCacheEntries, + dsaCacheHits, dsaSlaveHits} + STATUS current + DESCRIPTION + " A collection of objects for monitoring the DSA + entry statistics and cache performance." + ::= { dsaGroups 2 } + + dsaIntGroup OBJECT-GROUP + OBJECTS { + dsaName, dsaTimeOfCreation, dsaTimeOfLastAttempt, + dsaTimeOfLastSuccess,dsaFailuresSinceLastSuccess,dsaFailures, + dsaSuccesses} + STATUS current + DESCRIPTION + " A collection of objects for monitoring the DSA's + interaction with peer DSAs." + ::= { dsaGroups 3 } + + +END diff --git a/mibs/ietf/DSMON-MIB b/mibs/ietf/DSMON-MIB new file mode 100644 index 0000000..4b5706f --- /dev/null +++ b/mibs/ietf/DSMON-MIB @@ -0,0 +1,4715 @@ +DSMON-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, + Counter32, Gauge32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + RowStatus, TimeStamp, TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC + OwnerString, rmon + FROM RMON-MIB + protocolDirLocalIndex, LastCreateTime, + DataSource, ZeroBasedCounter32, TimeFilter + FROM RMON2-MIB + CounterBasedGauge64, ZeroBasedCounter64 + FROM HCNUM-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + Dscp + FROM DIFFSERV-DSCP-TC; + +dsmonMIB MODULE-IDENTITY + LAST-UPDATED "200205310000Z" + ORGANIZATION "IETF RMONMIB Working Group" + CONTACT-INFO + " Andy Bierman + Cisco Systems, Inc. + RMONMIB WG Chair and DSMON MIB Editor + + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + Tel: +1 408 527-3711 + E-mail: abierman@cisco.com + + Send comments to + Mailing list subscription info: + http://www.ietf.org/mailman/listinfo/rmonmib " + DESCRIPTION + "This module defines Remote Monitoring MIB extensions for + Differentiated Services enabled networks. + + RMON DIFFSERV DSCP statistics + * Per Counter Aggregation Group + * Per Protocol Per Counter Aggregation Group + * Per Counter Aggregation Group Per Host + + + + * Per Counter Aggregation Group Per Host-Pair + + In order to maintain the RMON 'look-and-feel' and semantic + consistency, some of the text from the RMON-2 and HC-RMON + MIBs by Steve Waldbusser has been adapted for use in this + MIB." + REVISION "200205310000Z" + DESCRIPTION + "Initial version of the DSMON MIB module. This version + published as RFC 3287." + ::= { rmon 26 } + + +dsmonObjects OBJECT IDENTIFIER ::= { dsmonMIB 1 } +dsmonNotifications OBJECT IDENTIFIER ::= { dsmonMIB 2 } +dsmonConformance OBJECT IDENTIFIER ::= { dsmonMIB 3 } + +dsmonAggObjects OBJECT IDENTIFIER ::= { dsmonObjects 1 } +dsmonStatsObjects OBJECT IDENTIFIER ::= { dsmonObjects 2 } +dsmonPdistObjects OBJECT IDENTIFIER ::= { dsmonObjects 3 } +dsmonHostObjects OBJECT IDENTIFIER ::= { dsmonObjects 4 } +dsmonCapsObjects OBJECT IDENTIFIER ::= { dsmonObjects 5 } +dsmonMatrixObjects OBJECT IDENTIFIER ::= { dsmonObjects 6 } + +-- +-- Textual Convention to define a +-- DSMON Counter Aggregation Group Index +-- + +DsmonCounterAggGroupIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes a data type which identifies a DSMON + counter aggregation group, which is an arbitrary grouping of + conceptual counters, for monitoring purposes only. The + range for this data type begins with zero (instead of + one), to allow for a direct mapping between counter + indexing schemes that start at zero (e.g. DSCP values in + packets) and counter aggregation group values." + SYNTAX Integer32 (0..2147483647) + +-- +-- Textual Convention to define a +-- DSMON Counter Aggregation Profile Index +-- + +DsmonCounterAggProfileIndex ::= TEXTUAL-CONVENTION + STATUS current + + + + DESCRIPTION + "This TC describes a data type which identifies a DSMON + counter aggregation profile, which is a set of counter + aggregation group assignments for each of the 64 DSCP + values, for a particular statistical collection." + SYNTAX Integer32 (1..2147483647) + + +-- *********************************************************** +-- * * +-- * D S M O N C A P A B I L I T I E S * +-- * * +-- *********************************************************** + +dsmonCapabilities OBJECT-TYPE + SYNTAX BITS { + dsmonCounterAggControl(0), + dsmonStats(1), + dsmonStatsOvfl(2), + dsmonStatsHC(3), + dsmonPdist(4), + dsmonPdistOvfl(5), + dsmonPdistHC(6), + dsmonHost(7), + dsmonHostOvfl(8), + dsmonHostHC(9), + dsmonCaps(10), + dsmonMatrix(11), + dsmonMatrixOvfl(12), + dsmonMatrixHC(13) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object provides an indication of the DSMON groups + supported by the agent. If a bit is set, then the agent + implements all of the objects in the DSMON object group, + where bit 'n' represents the MIB group identified by the + OBJECT IDENTIFIER value { dsmonGroups n+1 }." + ::= { dsmonCapsObjects 1 } + + +-- *********************************************************** +-- * * +-- * A G G R E G A T I O N C O N T R O L G R O U P S * +-- * * +-- *********************************************************** + + + + +dsmonMaxAggGroups OBJECT-TYPE + SYNTAX Integer32 (2..64) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of counter aggregation groups that this + agent can support. The agent will allow this number of + distinct groups to be configured in the + dsmonAggProfileTable, numbered from '0' to + 'dsmonMaxAggGroups - 1', for each counter aggregation + profile entry supported by the agent. + + The agent MUST NOT lower this value during system operation, + and SHOULD set this object to an appropriate value during + system initialization." + ::= { dsmonAggObjects 1 } + +dsmonAggControlLocked OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the setup of counter aggregation groups for this + agent. + + If this object contains the value 'true', then write access + to the objects in the dsmonAggControlTable (except the + dsmonAggControlOwner object), dsmonAggProfileTable, and + dsmonAggGroupTable is not permitted, and data collection is + possible. This object only controls write access to these + MIB objects. The DSMON data collection control tables + (e.g., dsmonHostCtlTable) can be configured at any time, + regardless of the value of this object. + + If this object contains the value 'false', write access to + the objects in the dsmonAggControlTable, + dsmonAggProfileTable, and dsmonAggGroupTable is permitted, + and data collection is not possible. In addition, all + objects in all DSMON data tables (e.g., dsmonStatsTable) + shall be deleted. + + An agent is not required to process SNMP Set Requests for + this object in conjunction with other objects from this MIB. + This is intended to simplify the processing of Set Requests + for tables such as the dsmonAggProfileTable, by eliminating + the possibility that a single Set PDU will contain multiple + varbinds which are in conflict, such as a PDU which both + modifies the dsmonAggProfileTable and locks the + + + + dsmonAggProfileTable at the same time. + + Note that the agent is not required to validate the entire + counter aggregation configuration when an attempt is made to + transition an instance of this object from 'true' to + 'false'. That validation is done if and when a DSMON data + collection is activated. + + An agent is required to reactivate any suspended data + collections when this object transitions to 'true', Each + active data control entry (e.g., dsmonStatsControlEntry), + will be validated with respect to the new counter + aggregation configuration. If the counter aggregation + profile referenced in the data collection is valid, then + that collection will be restarted. Otherwise, the RowStatus + object (e.g., dsmonStatsControlStatus) will be set to + 'notReady' for that collection control entry." + ::= { dsmonAggObjects 2 } + +dsmonAggControlChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times the value of the + dsmonAggControlLocked object has changed. A management + station can use this object to detect if counters in the + DSMON data tables (e.g., dsmonStatsEntry) have been deleted + and recreated between polls. + + This object shall be incremented by one each time the + dsmonAggControlLocked object changes from 'false' to 'true', + or from 'true' to 'false'." + ::= { dsmonAggObjects 3 } + +dsmonAggControlLastChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the value of sysUpTime at the moment + the dsmonAggControlLocked object was last modified. A + management station can use this object to detect if counters + in the DSMON data tables (e.g., dsmonStatsEntry) have been + deleted and recreated between polls. + + This object shall be updated with the current value of + sysUpTime, if the dsmonAggControlLocked object changes from + + + + 'false' to 'true', or from 'true' to 'false'. + + Upon system initialization, this object shall contain the + value zero." + ::= { dsmonAggObjects 4 } + + +-- +-- Counter Aggregation Control Table +-- + +dsmonAggControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonAggControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides an overall description and control + point for all dsmonAggProfileEntries with the same + dsmonAggControlIndex value. + + A management application SHOULD create a counter aggregation + profile by first creating and activating an entry in this + table. This will cause the agent to create a set of 64 + dsmonAggProfileEntries on behalf of this control entry. An + application can then set the individual counter aggregation + group assignments for each of the 64 DSCP values, + + This table MUST NOT be modified if the dsmonAggControlLocked + object is equal to 'true'. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table, and + (independently) the number of counter aggregation profiles + which may be applied to a particular data source. In this + case, the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. Otherwise, each + potential counter aggregation group description string + SHOULD contain the empty string." + ::= { dsmonAggObjects 5 } + +dsmonAggControlEntry OBJECT-TYPE + SYNTAX DsmonAggControlEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A conceptual row in the dsmonAggControlTable." + INDEX { dsmonAggControlIndex } + ::= { dsmonAggControlTable 1 } + +DsmonAggControlEntry ::= SEQUENCE { + dsmonAggControlIndex DsmonCounterAggProfileIndex, + dsmonAggControlDescr SnmpAdminString, + dsmonAggControlOwner OwnerString, + dsmonAggControlStatus RowStatus +} + +dsmonAggControlIndex OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer index value used to identify the + counter aggregation profile specified by this control + entry." + ::= { dsmonAggControlEntry 1 } + +dsmonAggControlDescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively assigned description of the counter + aggregation profile identified by this entry. + + Upon first creation of an instance of this object, the agent + SHOULD set this object to the empty string. If the agent + supports non-volatile storage, then this object SHOULD be + re-initialized with its stored value after a system reboot. + + This object MUST NOT be modified if the associated + dsmonAggControlStatus object is equal to 'active', or the + dsmonAggControlLocked object is equal to 'true'." + ::= { dsmonAggControlEntry 2 } + +dsmonAggControlOwner 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." + + + + ::= { dsmonAggControlEntry 3 } + +dsmonAggControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + Upon setting this object to active(1), the agent will create + a complete set of 64 associated entries in the + dsmonAggProfileTable. + + If this object is not equal to active(1), all associated + entries in the dsmonAggProfileTable shall be deleted. + + This object MUST NOT be modified if the + dsmonAggControlLocked object is equal to 'true'." + ::= { dsmonAggControlEntry 4 } + +-- +-- Counter Aggregation Profile Table +-- + +dsmonAggProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonAggProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of counter aggregation profiles for this + agent. For each such profile, every DSCP value MUST be + configured into exactly one counter aggregation group. + + This table MUST NOT be modified if the dsmonAggControlLocked + object is equal to 'true'. + + The agent will create a set of 64 entries in this table + (with the same dsmonAggControlIndex value) when the + associated dsmonAggControlEntry is activated. + + If the agent supports non-volatile configuration of this + table, then upon system initialization, this table SHOULD be + initialized with the saved values." + ::= { dsmonAggObjects 6 } + + + + +dsmonAggProfileEntry OBJECT-TYPE + SYNTAX DsmonAggProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonAggProfileTable. The + dsmonAggControlIndex value in the index identifies the + dsmonAggControlEntry associated with each entry in this + table." + INDEX { dsmonAggControlIndex, dsmonAggProfileDSCP } + ::= { dsmonAggProfileTable 1 } + +DsmonAggProfileEntry ::= SEQUENCE { + dsmonAggProfileDSCP Dscp, + dsmonAggGroupIndex DsmonCounterAggGroupIndex +} + + +dsmonAggProfileDSCP OBJECT-TYPE + SYNTAX Dscp + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The specific DSCP value for the DSCP counter which is + configured in a counter aggregation group by this entry." + ::= { dsmonAggProfileEntry 1 } + +dsmonAggGroupIndex OBJECT-TYPE + SYNTAX DsmonCounterAggGroupIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The counter aggregation group which contains this DSCP + value. Upon creation of a new sub-tree (set of 64 entries + with the same dsmonAggControlIndex value) in this table, the + agent SHOULD initialize all related instances of this object + to the value zero. + + This object MUST NOT be modified if the + dsmonAggControlLocked object is equal to 'true'." + DEFVAL { 0 } + ::= { dsmonAggProfileEntry 2 } + + +-- +-- Counter Aggregation Group Table +-- + + + + +dsmonAggGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonAggGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a description of each counter + aggregation group configured on this system. Note that the + semantics of a particular counter aggregation group are only + relevant within the scope of a particular counter + aggregation profile. + + This table MUST NOT be modified if the dsmonAggControlLocked + object is equal to 'true'. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table, and + (independently) the number of counter aggregation profiles + which may be applied to a particular data source. In this + case, the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]. + + If the agent supports non-volatile configuration of this + table, then upon system initialization, this table SHOULD be + initialized with the saved values. Otherwise, each + potential counter aggregation group description string + SHOULD contain the empty string. + + An agent SHOULD allow entries to be created or modified in + this table, even if the specified dsmonAggControlIndex value + does not identify a valid dsmonAggControlEntry or a complete + set of valid dsmonAggProfileEntries, to reduce row creation + order dependencies." + ::= { dsmonAggObjects 7 } + +dsmonAggGroupEntry OBJECT-TYPE + SYNTAX DsmonAggGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonAggGroupTable. The + dsmonAggGroupIndex value in the INDEX identifies the counter + aggregation group associated with each entry. + + The dsmonAggControlIndex in the index identifies the counter + aggregation profile associated with each entry, identified + by the dsmonAggControlEntry and dsmonAggProfileEntries with + the same index value. + + + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + The dsmonAggGroupIndex in the index identifies the counter + aggregation group associated with each entry. This object + SHOULD be indexed from zero to 'N', where 'N' is less than + the value of the dsmonMaxAggGroups for this agent." + + INDEX { dsmonAggControlIndex, dsmonAggGroupIndex } + ::= { dsmonAggGroupTable 1 } +DsmonAggGroupEntry ::= SEQUENCE { + dsmonAggGroupDescr SnmpAdminString, + dsmonAggGroupStatus RowStatus +} + +dsmonAggGroupDescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively assigned description of the counter + aggregation group identified by this entry. + + Upon first creation of an instance of this object, the agent + SHOULD set this object to the empty string. + + This object MUST NOT be modified if the associated + dsmonAggGroupStatus object is equal to 'active', or the + dsmonAggControlLocked object is equal to 'true'." + ::= { dsmonAggGroupEntry 1 } + +dsmonAggGroupStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value. + + This object MUST NOT be modified if the + dsmonAggControlLocked object is equal to 'true'." + ::= { dsmonAggGroupEntry 2 } + + + + + + +-- ************************************************************* +-- * * +-- * P E R - D A T A S O U R C E C O L L E C T I O N S * +-- * * +-- ************************************************************* + +-- +-- Per-DataSource Statistics Control Table +-- + +dsmonStatsControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of per data source per counter + aggregation group distribution statistics. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonStatsObjects 1 } + +dsmonStatsControlEntry OBJECT-TYPE + SYNTAX DsmonStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonStatsControlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonStatsControlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonStatsTable to be created and maintained by + the agent." + INDEX { dsmonStatsControlIndex } + ::= { dsmonStatsControlTable 1 } + +DsmonStatsControlEntry ::= SEQUENCE { + dsmonStatsControlIndex Integer32, + + + + dsmonStatsControlDataSource DataSource, + dsmonStatsControlAggProfile DsmonCounterAggProfileIndex, + dsmonStatsControlDroppedFrames Counter32, + dsmonStatsControlCreateTime LastCreateTime, + dsmonStatsControlOwner OwnerString, + dsmonStatsControlStatus RowStatus +} + +dsmonStatsControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary and unique index for this + dsmonStatsControlEntry." + ::= { dsmonStatsControlEntry 1 } + +dsmonStatsControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The data source of this per protocol per counter + aggregation group distribution. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + This object MUST NOT be modified if the associated + dsmonStatsControlStatus object is equal to active(1)." + ::= { dsmonStatsControlEntry 2 } + +dsmonStatsControlAggProfile OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonAggControlIndex value identifying the counter + aggregation profile which should be used on behalf of this + dsmonStatsControlEntry. + + The associated dsmonAggControlEntry and + dsmonAggProfileEntries, identified by the same + dsmonAggControlIndex index value, MUST be active in order + for this entry to remain active. It is possible for the + counter aggregation configuration to change from a valid to + invalid state for this dsmonStats collection. In this case, + + + + the associated dsmonStatsControlStatus object will be + changed to the 'notReady' state, and data collection will + not occur on behalf of this control entry. + + Note that an agent MAY choose to limit the actual number of + counter aggregation profiles which may be applied to a + particular data source. + + This object MUST NOT be modified if the associated + dsmonStatsControlStatus object is equal to active(1)." + ::= { dsmonStatsControlEntry 3 } + +dsmonStatsControlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + 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." + ::= { dsmonStatsControlEntry 4 } + +dsmonStatsControlCreateTime 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 + detect if the table has been deleted and recreated between + polls." + ::= { dsmonStatsControlEntry 5 } + +dsmonStatsControlOwner 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." + ::= { dsmonStatsControlEntry 6 } + +dsmonStatsControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST 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 dsmonStatsTable shall be deleted." + ::= { dsmonStatsControlEntry 7 } + +-- +-- Per-DataSource Statistics Table +-- + +dsmonStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information on counter aggregation group usage + for each monitored data source. + + The following table defines per counter aggregation group + statistics for full and/or half-duplex links as well as high + capacity links. + + For half-duplex links, or full-duplex-capable links + operating in half-duplex mode, the dsmonStatsIn* objects + shall be used and the dsmonStatsOut* objects will not + increment. + + For full-duplex links, the dsmonStatsOut* objects will be + present. Whenever possible, the probe SHOULD count packets + moving away from the closest terminating equipment as output + packets. Failing that, the probe SHOULD count packets + moving away from the DTE as output packets. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table will be deleted and the agent + will not process packets on behalf of any + + + + dsmonStatsControlEntry." + ::= { dsmonStatsObjects 2 } + +dsmonStatsEntry OBJECT-TYPE + SYNTAX DsmonStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information on Differentiated Services DSCP + usage, containing inbound and outbound packet and octet + counters for each counter aggregation group configured for + collection. + + The dsmonStatsControlIndex value in the index identifies the + dsmonStatsControlEntry on whose behalf this entry was + created. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry for that DSCP value. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + An example of the indexing of this entry is + dsmonStatsOutPkts.1.16" + INDEX { dsmonStatsControlIndex, dsmonAggGroupIndex } + ::= { dsmonStatsTable 1 } + +DsmonStatsEntry ::= SEQUENCE { + dsmonStatsInPkts ZeroBasedCounter32, + dsmonStatsInOctets ZeroBasedCounter32, + dsmonStatsInOvflPkts ZeroBasedCounter32, + dsmonStatsInOvflOctets ZeroBasedCounter32, + dsmonStatsInHCPkts ZeroBasedCounter64, + dsmonStatsInHCOctets ZeroBasedCounter64, + dsmonStatsOutPkts ZeroBasedCounter32, + dsmonStatsOutOctets ZeroBasedCounter32, + dsmonStatsOutOvflPkts ZeroBasedCounter32, + dsmonStatsOutOvflOctets ZeroBasedCounter32, + dsmonStatsOutHCPkts ZeroBasedCounter64, + dsmonStatsOutHCOctets ZeroBasedCounter64 +} + +dsmonStatsInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets using one of the DSCP values in the + indicated counter aggregation group, received on a half- + duplex link or on the inbound connection of a full-duplex + link." + ::= { dsmonStatsEntry 1 } + +dsmonStatsInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets, using one of the DSCP + values in the indicated counter aggregation group, received + on a half-duplex link or on the inbound connection of a + full-duplex link." + ::= { dsmonStatsEntry 2 } + +dsmonStatsInOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonStatsInPkts counter + has overflowed. Note that this object will only be + instantiated if the associated dsmonStatsInHCPkts object is + also instantiated for a particular dataSource." + ::= { dsmonStatsEntry 3 } + +dsmonStatsInOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonStatsInOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonStatsInHCOctets object + is also instantiated for a particular dataSource." + ::= { dsmonStatsEntry 4 } + +dsmonStatsInHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The 64-bit version of the dsmonStatsInPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonStatsEntry 5 } + +dsmonStatsInHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonStatsInOctets object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonStatsEntry 6 } + +dsmonStatsOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets using one of the DSCP values in the + indicated counter aggregation group, received on a full- + duplex link in the direction of the network." + ::= { dsmonStatsEntry 7 } + +dsmonStatsOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets, using one of the DSCP + values in the indicated counter aggregation group, received + on a full-duplex link in the direction of the network." + ::= { dsmonStatsEntry 8 } + +dsmonStatsOutOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + + + + "The number of times the associated dsmonStatsOutPkts + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonStatsOutHCPkts object is + also instantiated for a particular dataSource." + ::= { dsmonStatsEntry 9 } + +dsmonStatsOutOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonStatsOutOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonStatsOutHCOctets object + is also instantiated for a particular dataSource." + ::= { dsmonStatsEntry 10 } + +dsmonStatsOutHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonStatsOutPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonStatsEntry 11 } + +dsmonStatsOutHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonStatsOutOctets object. + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonStatsEntry 12 } + + +-- *********************************************************** +-- * * +-- * P E R - P R O T O C O L C O L L E C T I O N S * +-- * * +-- *********************************************************** + + + +-- +-- DSCP Per-Protocol Statistics Control Table +-- + +dsmonPdistCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonPdistCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of per application per counter + aggregation group distribution statistics. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonPdistObjects 1 } + +dsmonPdistCtlEntry OBJECT-TYPE + SYNTAX DsmonPdistCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonPdistCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonPdistCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonPdistStatsTable to be created and maintained + by the agent." + INDEX { dsmonPdistCtlIndex } + ::= { dsmonPdistCtlTable 1 } + +DsmonPdistCtlEntry ::= SEQUENCE { + dsmonPdistCtlIndex Integer32, + dsmonPdistCtlDataSource DataSource, + dsmonPdistCtlAggProfile DsmonCounterAggProfileIndex, + dsmonPdistCtlMaxDesiredEntries Integer32, + dsmonPdistCtlDroppedFrames Counter32, + dsmonPdistCtlInserts Counter32, + dsmonPdistCtlDeletes Counter32, + + + + dsmonPdistCtlCreateTime LastCreateTime, + dsmonPdistCtlOwner OwnerString, + dsmonPdistCtlStatus RowStatus +} + +dsmonPdistCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary and unique index for this dsmonPdistCtlEntry." + ::= { dsmonPdistCtlEntry 1 } + +dsmonPdistCtlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the this per protocol counter + aggregation group distribution. + + This object MUST NOT be modified if the associated + dsmonPdistCtlStatus object is equal to active(1)." + ::= { dsmonPdistCtlEntry 2 } + +dsmonPdistCtlAggProfile OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonAggControlIndex value identifying the counter + aggregation profile which should be used on behalf of this + dsmonPdistCtlEntry. + + The associated dsmonAggControlEntry and + dsmonAggProfileEntries, identified by the same + dsmonAggControlIndex index value, MUST be active in order + for this entry to remain active. It is possible for the + counter aggregation configuration to change from a valid to + invalid state for this dsmonPdist collection. In this case, + the associated dsmonPdistCtlStatus object will be changed to + the 'notReady' state, and data collection will not occur on + behalf of this control entry. + + Note that an agent MAY choose to limit the actual number of + counter aggregation profiles which may be applied to a + particular data source. + + + + + This object MUST NOT be modified if the associated + dsmonPdistCtlStatus object is equal to active(1)." + ::= { dsmonPdistCtlEntry 3 } + +dsmonPdistCtlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + dsmonPdistStatsTable 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 value is set to -1, the probe MAY create any number + of entries in this table. + + This object MUST NOT be modified if the associated + dsmonPdistCtlStatus object is equal to active(1)." + ::= { dsmonPdistCtlEntry 4 } + +dsmonPdistCtlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + 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." + ::= { dsmonPdistCtlEntry 5 } + +dsmonPdistCtlInserts OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of times a dsmonPdist entry has been inserted + into the dsmonPdistTable. 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 + dsmonPdistCtlDeletes from dsmonPdistCtlInserts." + ::= { dsmonPdistCtlEntry 6 } + +dsmonPdistCtlDeletes OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a dsmonPdist entry has been deleted + from the dsmonPdist 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 + dsmonPdistCtlDeletes from dsmonPdistCtlInserts." + ::= { dsmonPdistCtlEntry 7 } + +dsmonPdistCtlCreateTime 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 + detect if the table has been deleted and recreated between + polls." + + + + ::= { dsmonPdistCtlEntry 8 } + +dsmonPdistCtlOwner 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." + ::= { dsmonPdistCtlEntry 9 } + +dsmonPdistCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST 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 dsmonPdistStatsTable shall be deleted." + ::= { dsmonPdistCtlEntry 10 } + +-- +-- Per-Protocol Statistics Table +-- + +dsmonPdistStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonPdistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information on a per protocol per counter + aggregation group usage. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table will be deleted and the agent + will not process packets on behalf of any + dsmonPdistCtlEntry." + ::= { dsmonPdistObjects 2 } + +dsmonPdistStatsEntry OBJECT-TYPE + SYNTAX DsmonPdistStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A list of information on Differentiated Services DSCP + usage, containing packet and octet counters for each counter + aggregation group configured for collection, and each + protocol (as identified by the protocolDirLocalIndex for the + protocol) identified in each monitored packet. + + The dsmonPdistCtlIndex value in the index identifies the + dsmonPdistCtlEntry on whose behalf this entry was created. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry for that value. + + The protocolDirLocalIndex in the index identifies the + protocolDirEntry for the protocol encapsulation of each + monitored packet. The agent will include only application + layer protocols in the associated dsmonPdistStatsTable. Any + 'terminal' protocol is considered to be an application + protocol. + + An example of the indexing of this entry is + dsmonPdistStatsPkts.9.29943.0.42." + INDEX { dsmonPdistCtlIndex, + dsmonPdistTimeMark, + dsmonAggGroupIndex, + protocolDirLocalIndex } + ::= { dsmonPdistStatsTable 1 } + +DsmonPdistStatsEntry ::= SEQUENCE { + dsmonPdistTimeMark TimeFilter, + dsmonPdistStatsPkts ZeroBasedCounter32, + dsmonPdistStatsOctets ZeroBasedCounter32, + dsmonPdistStatsOvflPkts ZeroBasedCounter32, + dsmonPdistStatsOvflOctets ZeroBasedCounter32, + dsmonPdistStatsHCPkts ZeroBasedCounter64, + dsmonPdistStatsHCOctets ZeroBasedCounter64, + dsmonPdistStatsCreateTime LastCreateTime +} + +dsmonPdistTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The Time Filter index for this table. This object may be + used by a management station to retrieve only rows which + have been created or modified since a particular time. Note + that the current value for a row are always returned and the + TimeFilter is not a historical data archiving mechanism. + Refer to RFC 2021 [RFC2021] for a detailed description of + TimeFilter operation." + ::= { dsmonPdistStatsEntry 1 } + +dsmonPdistStatsPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, using one of the DSCP values in the + indicated counter aggregation group, for the protocol + identified by the associated protocolDirLocalIndex value." + ::= { dsmonPdistStatsEntry 2 } + +dsmonPdistStatsOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in packets, using one of the DSCP + values in the indicated counter aggregation group, for the + protocol identified by the associated protocolDirLocalIndex + value. + + Note that this object doesn't count just those octets in the + particular protocol frames, but includes the entire packet + that contained the protocol." + ::= { dsmonPdistStatsEntry 3 } + +dsmonPdistStatsOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonPdistStatsPkts + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonPdistStatsHCPkts object + is also instantiated for a particular dataSource." + ::= { dsmonPdistStatsEntry 4 } + +dsmonPdistStatsOvflOctets OBJECT-TYPE + + + + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonPdistStatsOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonPdistStatsHCOctets + object is also instantiated for a particular dataSource." + ::= { dsmonPdistStatsEntry 5 } + +dsmonPdistStatsHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonPdistStatsPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonPdistStatsEntry 6 } + +dsmonPdistStatsHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonPdistStatsOctets object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonPdistStatsEntry 7 } + +dsmonPdistStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this dsmonPdistStats entry was + last instantiated by the agent. This can be used by the + management station to detect if the entry has been deleted + and recreated between polls." + ::= { dsmonPdistStatsEntry 8 } + + + + + +-- +-- Per-Protocol Statistics TopN Control Table +-- + +dsmonPdistTopNCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonPdistTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a report + of the top N dsmonPdist entries according to a particular + metric. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonPdistObjects 3 } + +dsmonPdistTopNCtlEntry OBJECT-TYPE + SYNTAX DsmonPdistTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonPdistTopNCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonPdistTopNCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonPdistTopNTable to be created and maintained + by the agent." + INDEX { dsmonPdistTopNCtlIndex } + ::= { dsmonPdistTopNCtlTable 1 } + +DsmonPdistTopNCtlEntry ::= SEQUENCE { + dsmonPdistTopNCtlIndex Integer32, + dsmonPdistTopNCtlPdistIndex Integer32, + dsmonPdistTopNCtlRateBase INTEGER, + dsmonPdistTopNCtlTimeRemaining Integer32, + dsmonPdistTopNCtlGeneratedReprts Counter32, + dsmonPdistTopNCtlDuration Integer32, + + + + dsmonPdistTopNCtlRequestedSize Integer32, + dsmonPdistTopNCtlGrantedSize Integer32, + dsmonPdistTopNCtlStartTime TimeStamp, + dsmonPdistTopNCtlOwner OwnerString, + dsmonPdistTopNCtlStatus RowStatus +} + +dsmonPdistTopNCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonPdistTopNCtlTable, with the same dsmonPdistTopNCtlIndex + value as this object. Each entry in this table defines one + Top N report prepared on behalf of the dsmonPdistStatsEntry + collection with the same dsmonPdistCtlIndex as this object." + ::= { dsmonPdistTopNCtlEntry 1 } + +dsmonPdistTopNCtlPdistIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonPdistTable for which a top N report will be + prepared on behalf of this entry. The dsmonPdistTable is + identified by the value of the dsmonPdistCtlIndex for that + table - that value is used here to identify the particular + table. + + This object MUST NOT be modified if the associated + dsmonPdistTopNCtlStatus object is equal to active(1)." + ::= { dsmonPdistTopNCtlEntry 2 } + +dsmonPdistTopNCtlRateBase OBJECT-TYPE + SYNTAX INTEGER { + dsmonPdistTopNPkts(1), + dsmonPdistTopNOctets(2), + dsmonPdistTopNHCPkts(3), + dsmonPdistTopNHCOctets(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each dsmonPdist that the + dsmonPdistTopNRate and dsmonPdistTopNHCRate variables are + based upon. Each dsmonPdistTopN report generated on behalf + of this control entry will be ranked in descending order, + + + + based on the associated dsmonPdistStatsTable counter, + identified by this object. + + The following table identifies the dsmonPdistTable counter + associated with each enumeration: + + Enumeration RateBase MIB Object + ----------- ------------------- + dsmonPdistTopNPkts dsmonPdistStatsPkts + dsmonPdistTopNOctets dsmonPdistStatsOctets + dsmonPdistTopNHCPkts dsmonPdistStatsHCPkts + dsmonPdistTopNHCOctets dsmonPdistStatsHCOctets + + Note that the dsmonPdistTopNHCPkts and + dsmonPdistTopNHCOctets enumerations are only available if + the agent supports High Capacity monitoring. + + This object MUST NOT be modified if the associated + dsmonPdistTopNCtlStatus object is equal to active(1)." + ::= { dsmonPdistTopNCtlEntry 3 } + +dsmonPdistTopNCtlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + 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 dsmonPdistTopNCtlDuration object. + + When the report finishes, the probe will automatically start + another collection with the same initial value of + dsmonPdistTopNCtlTimeRemaining. 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 dsmonPdistTopNTable, overwriting any report that may be + there. + + + + + When this object is modified by the management station, any + associated entries in the dsmonPdistTopNTable shall be + deleted." + DEFVAL { 1800 } + ::= { dsmonPdistTopNCtlEntry 4 } + +dsmonPdistTopNCtlGeneratedReprts OBJECT-TYPE + SYNTAX Counter32 + UNITS "reports" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this + entry." + ::= { dsmonPdistTopNCtlEntry 5 } + +dsmonPdistTopNCtlDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected during + the last sampling interval. + + When the associated dsmonPdistTopNCtlTimeRemaining 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 + dsmonPdistTopNCtlTimeRemaining is set. + + This value shall be zero if no reports have been requested + for this dsmonPdistTopNCtlEntry." + ::= { dsmonPdistTopNCtlEntry 6 } + +dsmonPdistTopNCtlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of dsmonPdist entries requested for this + report. + + When this object is created or modified, the probe SHOULD + set dsmonPdistTopNCtlGrantedSize as closely to this object + as is possible for the particular probe implementation and + available resources." + DEFVAL { 150 } + + + + ::= { dsmonPdistTopNCtlEntry 7 } + +dsmonPdistTopNCtlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of dsmonPdist entries in this report. + + When the associated dsmonPdistTopNCtlRequestedSize 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 dsmonPdistTopNCtlRequestedSize + object. + + Protocol entries with the highest value of + dsmonPdistTopNRate or dsmonPdistTopNHCRate (depending on the + value of the associated dsmonPdistTopNCtlRateBase object) + shall be placed in this table in decreasing order of this + rate until there is no more room or until there are no more + dsmonPdist entries." + ::= { dsmonPdistTopNCtlEntry 8 } + +dsmonPdistTopNCtlStartTime 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 dsmonPdistTopNCtlTimeRemaining 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." + ::= { dsmonPdistTopNCtlEntry 9 } + +dsmonPdistTopNCtlOwner 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." + + + + ::= { dsmonPdistTopNCtlEntry 10 } + +dsmonPdistTopNCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this dsmonPdistTopNCtlEntry. + + An entry MUST 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 dsmonPdistTopNTable shall be deleted by the + agent." + ::= { dsmonPdistTopNCtlEntry 11 } + +-- +-- dsmonPdist TopN Table +-- + +dsmonPdistTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonPdistTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those protocol distribution entries + that have counted the highest number of octets or packets. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table SHALL be deleted, and the + agent will not process TopN reports on behalf of any + dsmonPdistTopNCtlEntry. + + When the dsmonAggControlLocked object is set to 'true', then + particular reports SHOULD be restarted from the beginning, + on behalf of all active rows in the dsmonPdistTopNCtlTable. + + Note that dsmonPdist entries which did not increment at all + during the report interval SHOULD NOT be included in + dsmonPdistTopN reports." + ::= { dsmonPdistObjects 4 } + +dsmonPdistTopNEntry OBJECT-TYPE + SYNTAX DsmonPdistTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A conceptual row in the dsmonPdistTopNTable. + + The dsmonPdistTopNCtlIndex value in the index identifies the + dsmonPdistTopNCtlEntry on whose behalf this entry was + created. Entries in this table are ordered from 1 to 'N', + where lower numbers represent higher values of the rate base + object, over the report interval." + INDEX { dsmonPdistTopNCtlIndex, dsmonPdistTopNIndex } + ::= { dsmonPdistTopNTable 1 } + +DsmonPdistTopNEntry ::= SEQUENCE { + dsmonPdistTopNIndex Integer32, + dsmonPdistTopNPDLocalIndex Integer32, + dsmonPdistTopNAggGroup DsmonCounterAggGroupIndex, + dsmonPdistTopNRate Gauge32, + dsmonPdistTopNRateOvfl Gauge32, + dsmonPdistTopNHCRate CounterBasedGauge64 +} + +dsmonPdistTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonPdistTopNTable among those in the same report. This + index is between 1 and N, where N is the number of entries + in this report. Note that 'N' may change over time, and may + also be less than the dsmonPdistTopNCtlGrantedSize value + associated with this entry." + ::= { dsmonPdistTopNEntry 1 } + +dsmonPdistTopNPDLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value which identifies the + protocol associated with this entry. + + If the protocolDirEntry associated with the + protocolDirLocalIndex with the same value as this object is + de-activated or deleted, then the agent MUST delete this + dsmonPdistTopN entry." + ::= { dsmonPdistTopNEntry 2 } + +dsmonPdistTopNAggGroup OBJECT-TYPE + SYNTAX DsmonCounterAggGroupIndex + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DSCP counter aggregation group index value associated + with protocol identified in this entry. This object + identifies the dsmonAggGroupEntry with the same + dsmonAggControlIndex value as the associated + dsmonPdistCtlAggProfile object and the same + dsmonAggGroupIndex value as this object." + ::= { dsmonPdistTopNEntry 3 } + +dsmonPdistTopNRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable during this + sampling interval. The selected variable is this protocol's + instance of the object selected by + dsmonPdistTopNCtlRateBase. + + If the associated dsmonPdistTopNCtlRateBase is equal to + 'dsmonPdistTopNHCPkts' or 'dsmonPdistTopNHCOctets', then + this object will contain the the least significant 32 bits + of the associated dsmonPdistTopNHCRate object." + ::= { dsmonPdistTopNEntry 4 } + +dsmonPdistTopNRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonPdistTopNHCRate object. + + If the associated dsmonPdistTopNCtlRateBase is equal to + 'dsmonPdistTopNHCPkts' or 'dsmonPdistTopNHCOctets', then + this object will contain the upper 32 bits of the associated + dsmonPdistTopNHCRate object. + + If the associated dsmonPdistTopNCtlRateBase is equal to + 'dsmonPdistTopNPkts' or 'dsmonPdistTopNOctets', then this + object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonPdistTopNEntry 5 } + + + + +dsmonPdistTopNHCRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable during this + sampling interval. The selected variable is this protocol's + instance of the object selected by + dsmonPdistTopNCtlRateBase. + + If the associated dsmonPdistTopNCtlRateBase is equal to + 'dsmonPdistTopNPkts' or 'dsmonPdistTopNOctets', then this + object will contain the value zero, and the associated + dsmonPdistTopNRate object will contain the change in the + selected variable during the sampling interval. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonPdistTopNEntry 6 } + + +-- *********************************************************** +-- * * +-- * P E R - H O S T C O L L E C T I O N S * +-- * * +-- *********************************************************** + + +-- +-- NL Host Statistics Control Table +-- + +dsmonHostCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonHostCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls setup of per counter aggregation group, per + network layer host distribution statistics. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonHostObjects 1 } + +dsmonHostCtlEntry OBJECT-TYPE + + + + SYNTAX DsmonHostCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonHostCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonHostCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonHostTable to be created and maintained by + the agent." + INDEX { dsmonHostCtlIndex } + ::= { dsmonHostCtlTable 1 } + +DsmonHostCtlEntry ::= SEQUENCE { + dsmonHostCtlIndex Integer32, + dsmonHostCtlDataSource DataSource, + dsmonHostCtlAggProfile DsmonCounterAggProfileIndex, + dsmonHostCtlMaxDesiredEntries Integer32, + dsmonHostCtlIPv4PrefixLen Integer32, + dsmonHostCtlIPv6PrefixLen Integer32, + dsmonHostCtlDroppedFrames Counter32, + dsmonHostCtlInserts Counter32, + dsmonHostCtlDeletes Counter32, + dsmonHostCtlCreateTime LastCreateTime, + dsmonHostCtlOwner OwnerString, + dsmonHostCtlStatus RowStatus +} + +dsmonHostCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary and unique index for this dsmonHostCtlEntry." + ::= { dsmonHostCtlEntry 1 } + +dsmonHostCtlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The source of data for the associated dsmonHostTable. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + ::= { dsmonHostCtlEntry 2 } + +dsmonHostCtlAggProfile OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonAggControlIndex value identifying the counter + aggregation profile which should be used on behalf of this + dsmonHostCtlEntry. + + The associated dsmonAggControlEntry and + dsmonAggProfileEntries, identified by the same + dsmonAggControlIndex index value, MUST be active in order + for this entry to remain active. It is possible for the + counter aggregation configuration to change from a valid to + invalid state for this dsmonHost collection. In this case, + the associated dsmonHostCtlStatus object will be changed to + the 'notReady' state, and data collection will not occur on + behalf of this control entry. + + Note that an agent MAY choose to limit the actual number of + counter aggregation profiles which may be applied to a + particular data source. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + ::= { dsmonHostCtlEntry 3 } + +dsmonHostCtlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + dsmonHostTable 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 value is set to -1, the probe MAY create any number + of entries in this table. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + ::= { dsmonHostCtlEntry 4 } + +dsmonHostCtlIPv4PrefixLen OBJECT-TYPE + SYNTAX Integer32 (8..32) + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of 'leftmost' contiguous bits in the host + address field for encapsulations of IPv4, that should be + maintained in this collection. This object controls how the + dsmonHostAddress object is derived for packets which contain + an encapsulation of IPv4. + + If this object has a value less than 32, then 'm' rightmost + bits, where 'm' is equal to '32 - + dsmonHostCtlIPv4PrefixLen', will be cleared to zero for + counting purposes only. The 'leftmost' bit is the most + significant bit of the first network-byte-order octet of the + address. + + If this object is equal to 32, then no bits are cleared in + each dsmonHostAddress field. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + DEFVAL { 32 } + ::= { dsmonHostCtlEntry 5 } + +dsmonHostCtlIPv6PrefixLen OBJECT-TYPE + SYNTAX Integer32 (8..128) + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of 'leftmost' contiguous bits in the host + address field for encapsulations of IPv6, that should be + maintained in this collection. This object controls how the + dsmonHostAddress object is derived for packets which contain + an encapsulation of IPv6. + + If this object has a value less than 128, then 'm' rightmost + bits, where 'm' is equal to '128 - + + + + dsmonHostCtlIPv6PrefixLen', will be cleared to zero for + counting purposes only. The 'leftmost' bit is the most + significant bit of the first network-byte-order octet of the + address. + + If this object is equal to 128, then no bits are cleared in + each dsmonHostAddress field. + + This object MUST NOT be modified if the associated + dsmonHostCtlStatus object is equal to active(1)." + DEFVAL { 128 } + ::= { dsmonHostCtlEntry 6 } + +dsmonHostCtlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + 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 + dsmonHost 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 dsmonHostTable is inactive because no + appropriate 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." + ::= { dsmonHostCtlEntry 7 } + +dsmonHostCtlInserts OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a dsmonHost entry has been inserted + into the dsmonHost 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 + dsmonHostCtlDeletes from dsmonHostCtlInserts." + ::= { dsmonHostCtlEntry 8 } + +dsmonHostCtlDeletes OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a dsmonHost entry has been deleted from + the dsmonHost 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 + dsmonHostCtlDeletes from dsmonHostCtlInserts." + ::= { dsmonHostCtlEntry 9 } + +dsmonHostCtlCreateTime 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 + detect if the table has been deleted and recreated between + polls." + ::= { dsmonHostCtlEntry 10 } + +dsmonHostCtlOwner 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." + ::= { dsmonHostCtlEntry 11 } + +dsmonHostCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this dsmonHostCtlEntry. + + An entry MUST 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 dsmonHostTable shall be deleted." + ::= { dsmonHostCtlEntry 12 } + +-- +-- NL Host Statistics Table +-- + +dsmonHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for particular network protocols + which contain a DS field, and that has been discovered on a + particular dataSource. + + The probe will add to this table all appropriate network + protocols, for each network address 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. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table will be deleted, and the + agent will not process packets on behalf of any + dsmonHostCtlEntry." + ::= { dsmonHostObjects 2 } + +dsmonHostEntry OBJECT-TYPE + SYNTAX DsmonHostEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A list of information on Differentiated Services DSCP + usage, containing packet and octet counters for each counter + aggregation group index configured for collection per host + address, as identified in the dsmonAggProfileTable. + + The dsmonHostCtlIndex value in the index identifies the + dsmonHostCtlEntry on whose behalf this entry was created. + + The protocolDirLocalIndex value in the index identifies the + specific network layer protocol encapsulation associated + with each entry, and the network protocol type of the + dsmonHostAddress object. It MUST identify a + protocolDirEntry which contains a DS field (e.g., IPv4 or + IPv6). Note that if a protocol encapsulation with multiple + network layers is specified, then associated entries in this + table refer to the innermost network protocol layer host + address. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry configured for that value. + + An example of the indexing of this entry is + dsmonHostOutPkts.1.27273.3.200.4.171.69.120.0" + INDEX { dsmonHostCtlIndex, + dsmonHostTimeMark, + dsmonAggGroupIndex, + protocolDirLocalIndex, + dsmonHostAddress } + ::= { dsmonHostTable 1 } + +DsmonHostEntry ::= SEQUENCE { + dsmonHostTimeMark TimeFilter, + dsmonHostAddress OCTET STRING, + dsmonHostInPkts ZeroBasedCounter32, + dsmonHostInOctets ZeroBasedCounter32, + dsmonHostInOvflPkts ZeroBasedCounter32, + dsmonHostInOvflOctets ZeroBasedCounter32, + dsmonHostInHCPkts ZeroBasedCounter64, + dsmonHostInHCOctets ZeroBasedCounter64, + dsmonHostOutPkts ZeroBasedCounter32, + dsmonHostOutOctets ZeroBasedCounter32, + dsmonHostOutOvflPkts ZeroBasedCounter32, + dsmonHostOutOvflOctets ZeroBasedCounter32, + dsmonHostOutHCPkts ZeroBasedCounter64, + dsmonHostOutHCOctets ZeroBasedCounter64, + dsmonHostCreateTime LastCreateTime + + + +} + +dsmonHostTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Time Filter index for this table. This object may be + used by a management station to retrieve only rows which + have been created or modified since a particular time. Note + that the current value for a row are always returned and the + TimeFilter is not a historical data archiving mechanism. + Refer to RFC 2021 [RFC2021] for a detailed description of + TimeFilter operation." + ::= { dsmonHostEntry 1 } + +dsmonHostAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..110)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address for this dsmonHostEntry. + + This object is encoded according to the protocol type + indicated by the protocolDirLocalIndex value in the index. + + In addition, this object may have some 'rightmost' bits + cleared to zero for counting purposes, as indicated by the + associated dsmonHostCtlIPv4PrefixLen or + dsmonHostCtlIPv6PrefixLen objects." + ::= { dsmonHostEntry 2 } + +dsmonHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors, using one of the DSCP + values in the indicated counter aggregation group, and + transmitted to this address, since this entry was added to + the dsmonHostTable. 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." + ::= { dsmonHostEntry 3 } + +dsmonHostInOctets OBJECT-TYPE + + + + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in all packets, transmitted to this + address and using one of the DSCP values in the indicated + counter aggregation group, since this entry was added to the + dsmonHostTable (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." + ::= { dsmonHostEntry 4 } + +dsmonHostInOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonHostInPkts counter + has overflowed. Note that this object will only be + instantiated if the associated dsmonHostInHCPkts object is + also instantiated for a particular dataSource." + ::= { dsmonHostEntry 5 } + +dsmonHostInOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonHostInOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonHostInHCOctets object is + also instantiated for a particular dataSource." + ::= { dsmonHostEntry 6 } + +dsmonHostInHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonHostInPkts object. + + Note that this object will only be instantiated if the RMON + + + + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonHostEntry 7 } + +dsmonHostInHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonHostInOctets object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonHostEntry 8 } + +dsmonHostOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors, using one of the DSCP + values in the indicated counter aggregation group, and + transmitted by this address, since this entry was added to + the dsmonHostTable. 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." + ::= { dsmonHostEntry 9 } + +dsmonHostOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets, transmitted by this address and using + one of the DSCP values in the identified counter aggregation + group, since this entry was added to the dsmonHostTable + (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." + ::= { dsmonHostEntry 10 } + + + +dsmonHostOutOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonHostOutPkts counter + has overflowed. Note that this object will only be + instantiated if the associated dsmonHostOutHCPkts object is + also instantiated for a particular dataSource." + ::= { dsmonHostEntry 11 } + +dsmonHostOutOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonHostOutOctets + counter has overflowed. Note that this object will only be + instantiated if the associated dsmonHostOutHCOctets object + is also instantiated for a particular dataSource." + ::= { dsmonHostEntry 12 } + +dsmonHostOutHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonHostOutPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonHostEntry 13 } + +dsmonHostOutHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonHostOutOctets object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonHostEntry 14 } + + + + +dsmonHostCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this dsmonHost entry was last + instantiated by the agent. This can be used by the + management station to ensure that the entry has not been + deleted and recreated between polls." + ::= { dsmonHostEntry 15 } + + +-- +-- Per-Protocol Per-Host NL Statistics TopN Control Table +-- + +dsmonHostTopNCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonHostTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a report + of the top N dsmonHost entries according to a selected + metric. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonHostObjects 3 } + +dsmonHostTopNCtlEntry OBJECT-TYPE + SYNTAX DsmonHostTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonHostTopNCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonHostTopNCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + + + + associated dsmonHostTopNTable to be created and maintained + by the agent." + INDEX { dsmonHostTopNCtlIndex } + ::= { dsmonHostTopNCtlTable 1 } + +DsmonHostTopNCtlEntry ::= SEQUENCE { + dsmonHostTopNCtlIndex Integer32, + dsmonHostTopNCtlHostIndex Integer32, + dsmonHostTopNCtlRateBase INTEGER, + dsmonHostTopNCtlTimeRemaining Integer32, + dsmonHostTopNCtlGeneratedReports Counter32, + dsmonHostTopNCtlDuration Integer32, + dsmonHostTopNCtlRequestedSize Integer32, + dsmonHostTopNCtlGrantedSize Integer32, + dsmonHostTopNCtlStartTime TimeStamp, + dsmonHostTopNCtlOwner OwnerString, + dsmonHostTopNCtlStatus RowStatus +} + +dsmonHostTopNCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonHostTopNCtlTable. Each such entry defines one Top N + report prepared for one RMON dataSource." + ::= { dsmonHostTopNCtlEntry 1 } + +dsmonHostTopNCtlHostIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonHostTable for which a top N report will be + prepared on behalf of this entry. The dsmonHostTable is + identified by the value of the dsmonHostCtlIndex for that + table - that value is used here to identify the particular + table. + + This object MUST NOT be modified if the associated + dsmonHostTopNCtlStatus object is equal to active(1)." + ::= { dsmonHostTopNCtlEntry 2 } + +dsmonHostTopNCtlRateBase OBJECT-TYPE + SYNTAX INTEGER { + dsmonHostTopNInPkts(1), + dsmonHostTopNInOctets(2), + + + + dsmonHostTopNOutPkts(3), + dsmonHostTopNOutOctets(4), + dsmonHostTopNTotalPkts(5), + dsmonHostTopNTotalOctets(6), + dsmonHostTopNInHCPkts(7), + dsmonHostTopNInHCOctets(8), + dsmonHostTopNOutHCPkts(9), + dsmonHostTopNOutHCOctets(10), + dsmonHostTopNTotalHCPkts(11), + dsmonHostTopNTotalHCOctets(12) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable(s) for each dsmonHost that the + dsmonHostTopNRate and dsmonHostTopNHCRate variables are + based upon. Each dsmonHostTopN report generated on behalf + of this control entry will be ranked in descending order, + based on the associated dsmonHostTable counter(s), + identified by this object. + + The following table identifies the dsmonHostTable counters + associated with each enumeration: + + Enumeration RateBase MIB Objects + ----------- -------------------- + dsmonHostTopNInPkts dsmonHostInPkts + dsmonHostTopNInOctets dsmonHostInOctets + dsmonHostTopNOutPkts dsmonHostOutPkts + dsmonHostTopNOutOctets dsmonHostOutOctets + dsmonHostTopNTotalPkts dsmonHostInPkts + + dsmonHostOutPkts + dsmonHostTopNTotalOctets dsmonHostInOctets + + dsmonHostOutOctets + dsmonHostTopNInHCPkts dsmonHostInHCPkts + dsmonHostTopNInHCOctets dsmonHostInHCOctets + dsmonHostTopNOutHCPkts dsmonHostOutHCPkts + dsmonHostTopNOutHCOctets dsmonHostOutHCPkts + dsmonHostTopNTotalHCPkts dsmonHostInHCPkts + + dsmonHostOutHCPkts + dsmonHostTopNTotalHCOctets dsmonHostInHCOctets + + dsmonHostOutHCOctets + + The following enumerations are only available if the agent + supports High Capacity monitoring: + + dsmonHostTopNInHCPkts + dsmonHostTopNInHCOctets + + + + dsmonHostTopNOutHCPkts + dsmonHostTopNOutHCOctets + dsmonHostTopNTotalHCPkts + dsmonHostTopNTotalHCOctets + + It is an implementation-specific matter whether an agent can + detect an overflow condition resulting from the addition of + two counter delta values for the following enumerations: + + dsmonHostTopNTotalPkts + dsmonHostTopNTotalOctets + dsmonHostTopNTotalHCPkts + dsmonHostTopNTotalHCOctets + + In the event such an overflow condition can be detected by + the agent, the associated dsmonHostTopNRate, + dsmonHostTopNRateOvfl, and/or dsmonHostTopNHCRate objects + should be set to their maximum value. + + This object MUST NOT be modified if the associated + dsmonHostTopNCtlStatus object is equal to active(1)." + ::= { dsmonHostTopNCtlEntry 3 } + +dsmonHostTopNCtlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + 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 dsmonHostTopNCtlDuration object. + + When the report finishes, the probe will automatically start + another collection with the same initial value of + dsmonHostTopNCtlTimeRemaining. 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 dsmonHostTopNTable, overwriting any report that may be + + + + there. + + When this object is modified by the management station, any + associated entries in the dsmonHostTopNTable shall be + deleted." + DEFVAL { 1800 } + ::= { dsmonHostTopNCtlEntry 4 } + +dsmonHostTopNCtlGeneratedReports OBJECT-TYPE + SYNTAX Counter32 + UNITS "reports" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this + entry." + ::= { dsmonHostTopNCtlEntry 5 } + +dsmonHostTopNCtlDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected during + the last sampling interval. + + When the associated dsmonHostTopNCtlTimeRemaining 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 + dsmonHostTopNCtlTimeRemaining is set. + + This value shall be zero if no reports have been requested + for this dsmonHostTopNCtlEntry." + ::= { dsmonHostTopNCtlEntry 6 } + +dsmonHostTopNCtlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of dsmonHost entries requested for this + report. + + When this object is created or modified, the probe SHOULD + set dsmonHostTopNCtlGrantedSize as closely to this object as + is possible for the particular probe implementation and + + + + available resources." + DEFVAL { 150 } + ::= { dsmonHostTopNCtlEntry 7 } + +dsmonHostTopNCtlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of dsmonHost entries in this report. + + When the associated dsmonHostTopNCtlRequestedSize 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 dsmonHostTopNCtlRequestedSize + object. + + Protocol entries with the highest value of dsmonHostTopNRate + or dsmonHostTopNHCRate (depending on the value of the + associated dsmonHostTopNCtlRateBase object) shall be placed + in this table in decreasing order of this rate until there + is no more room or until there are no more dsmonHost + entries." + ::= { dsmonHostTopNCtlEntry 8 } + +dsmonHostTopNCtlStartTime 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 dsmonHostTopNCtlTimeRemaining 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." + ::= { dsmonHostTopNCtlEntry 9 } + +dsmonHostTopNCtlOwner 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." + ::= { dsmonHostTopNCtlEntry 10 } + +dsmonHostTopNCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this dsmonHostTopNCtlEntry. + + An entry MUST 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 dsmonHostTopNTable shall be deleted by the + agent." + ::= { dsmonHostTopNCtlEntry 11 } + +-- +-- dsmonHost TopN Table +-- + +dsmonHostTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonHostTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those dsmonHost entries that have + counted the highest number of octets or packets. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table SHALL be deleted, and the + agent will not process TopN reports on behalf of any + dsmonHostTopNCtlEntry. + + When the dsmonAggControlLocked object is set to 'true', then + particular reports SHOULD be restarted from the beginning, + on behalf of all active rows in the dsmonHostTopNCtlTable. + + Note that dsmonHost entries which did not increment at all + during the report interval SHOULD NOT be included in + dsmonHostTopN reports." + ::= { dsmonHostObjects 4 } + +dsmonHostTopNEntry OBJECT-TYPE + SYNTAX DsmonHostTopNEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A conceptual row in the dsmonHostTopNTable. + + The dsmonHostTopNCtlIndex value in the index identifies the + dsmonHostTopNCtlEntry on whose behalf this entry was + created. + + Entries in this table are ordered from 1 to 'N', where lower + numbers represent higher values of the rate base object, + over the report interval." + INDEX { dsmonHostTopNCtlIndex, dsmonHostTopNIndex } + ::= { dsmonHostTopNTable 1 } + +DsmonHostTopNEntry ::= SEQUENCE { + dsmonHostTopNIndex Integer32, + dsmonHostTopNPDLocalIndex Integer32, + dsmonHostTopNAddress OCTET STRING, + dsmonHostTopNAggGroup DsmonCounterAggGroupIndex, + dsmonHostTopNRate Gauge32, + dsmonHostTopNRateOvfl Gauge32, + dsmonHostTopNHCRate CounterBasedGauge64 + } + +dsmonHostTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonHostTopNTable among those in the same report. This + index is between 1 and N, where N is the number of entries + in this report." + ::= { dsmonHostTopNEntry 1 } + +dsmonHostTopNPDLocalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value which identifies the + protocol associated with the dsmonHostTopNAddress object in + this entry. + + If the protocolDirEntry associated with the + protocolDirLocalIndex with the same value as this object is + de-activated or deleted, then the agent MUST delete this + dsmonHostTopN entry." + + + + ::= { dsmonHostTopNEntry 2 } + +dsmonHostTopNAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The dsmonHostAddress value for the network host identified + in this entry. The associated dsmonHostTopNPDLocalIndex + object identifies the network protocol type and the encoding + rules for this object." + ::= { dsmonHostTopNEntry 3 } + +dsmonHostTopNAggGroup OBJECT-TYPE + SYNTAX DsmonCounterAggGroupIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter aggregation group index value associated with + host identified in this entry. This object identifies the + dsmonAggGroupEntry with the same dsmonAggControlIndex value + as the associated dsmonHostCtlAggProfile object and the same + dsmonAggGroupIndex value as this object." + ::= { dsmonHostTopNEntry 4 } + +dsmonHostTopNRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable during this + sampling interval. The selected variable is this host's + instance of the object selected by dsmonHostTopNCtlRateBase. + + If the associated dsmonHostTopNCtlRateBase indicates a High + Capacity monitoring enumeration, (e.g. + 'dsmonHostTopNInHCPkts'), then this object will contain the + the least significant 32 bits of the associated + dsmonHostTopNHCRate object." + ::= { dsmonHostTopNEntry 5 } + +dsmonHostTopNRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonHostTopNHCRate object. + + + + If the associated dsmonHostTopNCtlRateBase is equal to any + of the High Capacity monitoring enumerations (e.g. + 'dsmonHostTopNInHCPkts'), then this object will contain the + upper 32 bits of the associated dsmonHostTopNHCRate object. + + If the associated dsmonHostTopNCtlRateBase is not equal to + any of High Capacity monitoring enumerations, then this + object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonHostTopNEntry 6 } + +dsmonHostTopNHCRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable during this + sampling interval. The selected variable is this host's + instance of the object selected by dsmonHostTopNCtlRateBase. + + If the associated dsmonHostTopNCtlRateBase is not equal to + any of the High Capacity monitoring enumerations (e.g., + 'dsmonHostTopNInPkts'), then this object will contain the + value zero, and the associated dsmonHostTopNRate object will + contain the change in the selected variable during the + sampling interval. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonHostTopNEntry 7 } + + +-- ************************************************************** +-- * * +-- * P E R - C O N V E R S I O N C O L L E C T I O N S * +-- * * +-- ************************************************************** + +-- +-- AL Matrix Statistics Control Table +-- + +dsmonMatrixCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixCtlEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Controls setup of per counter aggregation group, per host- + pair, application protocol distribution statistics. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonMatrixObjects 1 } + +dsmonMatrixCtlEntry OBJECT-TYPE + SYNTAX DsmonMatrixCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonMatrixCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonMatrixSDTable and dsmonMatrixDSTable to be + created and maintained by the agent." + INDEX { dsmonMatrixCtlIndex } + ::= { dsmonMatrixCtlTable 1 } + +DsmonMatrixCtlEntry ::= SEQUENCE { + dsmonMatrixCtlIndex Integer32, + dsmonMatrixCtlDataSource DataSource, + dsmonMatrixCtlAggProfile DsmonCounterAggProfileIndex, + dsmonMatrixCtlMaxDesiredEntries Integer32, + dsmonMatrixCtlDroppedFrames Counter32, + dsmonMatrixCtlInserts Counter32, + dsmonMatrixCtlDeletes Counter32, + dsmonMatrixCtlCreateTime LastCreateTime, + dsmonMatrixCtlOwner OwnerString, + dsmonMatrixCtlStatus RowStatus +} + +dsmonMatrixCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An arbitrary and unique index for this + dsmonMatrixCtlEntry." + ::= { dsmonMatrixCtlEntry 1 } + +dsmonMatrixCtlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for the associated dsmonMatrixSDTable + and dsmonMatrixDSTable. + + Note that only packets that contain a network protocol + encapsulation which contains a DS field [RFC2474] will be + counted in this table. + + This object MUST NOT be modified if the associated + dsmonMatrixCtlStatus object is equal to active(1)." + ::= { dsmonMatrixCtlEntry 2 } + +dsmonMatrixCtlAggProfile OBJECT-TYPE + SYNTAX DsmonCounterAggProfileIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonAggControlIndex value identifying the counter + aggregation profile which should be used on behalf of this + dsmonMatrixCtlEntry. + + The associated dsmonAggControlEntry and + dsmonAggProfileEntries, identified by the same + dsmonAggControlIndex index value, MUST be active in order + for this entry to remain active. It is possible for the + counter aggregation configuration to change from a valid to + invalid state for this dsmonMatrix collection. In this + case, the associated dsmonMatrixCtlStatus object will be + changed to the 'notReady' state, and data collection will + not occur on behalf of this control entry. + + Note that an agent MAY choose to limit the actual number of + counter aggregation profiles which may be applied to a + particular data source. + + This object MUST NOT be modified if the associated + dsmonMatrixCtlStatus object is equal to active(1)." + ::= { dsmonMatrixCtlEntry 3 } + + + +dsmonMatrixCtlMaxDesiredEntries OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of entries that are desired in the + dsmonMatrix tables on behalf of this control entry. The + probe will not create more than this number of associated + entries in these tables, but may choose to create fewer + entries in this table for any reason including the lack of + resources. + + If this value is set to -1, the probe may create any number + of entries in this table. + + This object MUST NOT be modified if the associated + dsmonMatrixCtlStatus object is equal to active(1)." + ::= { dsmonMatrixCtlEntry 4 } + +dsmonMatrixCtlDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "frames" + 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 + dsmonMatrixSD and dsmonMatrixDS 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 dsmonMatrix tables are inactive because no + appropriate 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." + ::= { dsmonMatrixCtlEntry 5 } + +dsmonMatrixCtlInserts OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of times a dsmonMatrix entry has been inserted + into the dsmonMatrix 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 + dsmonMatrixSDTable and dsmonMatrixDSTable 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 the dsmonMatrixSDTable and dsmonMatrixDSTable sizes + can be determined by subtracting dsmonMatrixCtlDeletes from + dsmonMatrixCtlInserts." + ::= { dsmonMatrixCtlEntry 6 } + +dsmonMatrixCtlDeletes OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a dsmonMatrix entry has been deleted + from the dsmonMatrix 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 dsmonMatrixSDTable and dsmonMatrixDSTable + 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 sum of the dsmonMatrixSDTable and + dsmonMatrixDSTable sizes can be determined by subtracting + dsmonMatrixCtlDeletes from dsmonMatrixCtlInserts." + ::= { dsmonMatrixCtlEntry 7 } + + + + +dsmonMatrixCtlCreateTime 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 + detect if the table has been deleted and recreated between + polls." + ::= { dsmonMatrixCtlEntry 8 } + +dsmonMatrixCtlOwner 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." + ::= { dsmonMatrixCtlEntry 9 } + +dsmonMatrixCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this dsmonMatrixCtlEntry. + + An entry MUST 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 dsmonMatrixSDTable and dsmonMatrixDSTable + shall be deleted." + ::= { dsmonMatrixCtlEntry 10 } + +-- +-- AL Matrix SD Statistics Table +-- + +dsmonMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries which collect + statistics for conversations of a particular application + 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 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." + ::= { dsmonMatrixObjects 2 } + +dsmonMatrixSDEntry OBJECT-TYPE + SYNTAX DsmonMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixSDTable. + + The dsmonMatrixCtlIndex value in the index identifies the + dsmonMatrixCtlEntry on whose behalf this entry was created. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry configured for that value." + INDEX { dsmonMatrixCtlIndex, + dsmonMatrixTimeMark, + dsmonAggGroupIndex, + dsmonMatrixNLIndex, + dsmonMatrixSourceAddress, + dsmonMatrixDestAddress, + dsmonMatrixALIndex + } + ::= { dsmonMatrixSDTable 1 } + +DsmonMatrixSDEntry ::= SEQUENCE { + dsmonMatrixTimeMark TimeFilter, + dsmonMatrixNLIndex Integer32, + dsmonMatrixSourceAddress OCTET STRING, + dsmonMatrixDestAddress OCTET STRING, + dsmonMatrixALIndex Integer32, + dsmonMatrixSDPkts ZeroBasedCounter32, + dsmonMatrixSDOvflPkts ZeroBasedCounter32, + dsmonMatrixSDHCPkts ZeroBasedCounter64, + dsmonMatrixSDOctets ZeroBasedCounter32, + dsmonMatrixSDOvflOctets ZeroBasedCounter32, + dsmonMatrixSDHCOctets ZeroBasedCounter64, + dsmonMatrixSDCreateTime LastCreateTime +} + +dsmonMatrixTimeMark OBJECT-TYPE + + + + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Time Filter index for this table. This object may be + used by a management station to retrieve only rows which + have been created or modified since a particular time. Note + that the current value for a row are always returned and the + TimeFilter is not a historical data archiving mechanism. + Refer to RFC 2021 [RFC2021] for a detailed description of + TimeFilter operation." + ::= { dsmonMatrixSDEntry 1 } + +dsmonMatrixNLIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value of a protocolDirEntry + representing the specific network layer protocol + encapsulation associated with each entry, and the network + protocol type of the dsmonMatrixSourceAddress and + dsmonMatrixDestAddress objects." + ::= { dsmonMatrixSDEntry 2 } + +dsmonMatrixSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..54)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network source address for this dsmonMatrix entry. + + This is represented as an octet string with specific + semantics and length as identified by the dsmonMatrixNLIndex + component of the index. + + For example, if the dsmonMatrixNLIndex indicates an + encapsulation of IPv4, this object is encoded as a length + octet of 4, followed by the 4 octets of the IPv4 address, in + network byte order." + ::= { dsmonMatrixSDEntry 3 } + +dsmonMatrixDestAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..54)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network destination address for this dsmonMatrix entry. + + + + This is represented as an octet string with specific + semantics and length as identified by the dsmonMatrixNLIndex + component of the index. + + For example, if the dsmonMatrixNLIndex indicates an + encapsulation of IPv4, this object is encoded as a length + octet of 4, followed by the 4 octets of the IPv4 address, in + network byte order." + ::= { dsmonMatrixSDEntry 4 } + +dsmonMatrixALIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value of the protocolDirEntry + representing the specific application layer protocol + associated with each entry. + + It MUST identify an protocolDirEntry which is a direct or + indirect descendant of the protocolDirEntry identified by + the associated dsmonMatrixNLIndex object." + ::= { dsmonMatrixSDEntry 5 } + +dsmonMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type (indicated by + the associated dsmonMatrixALIndex object) without errors + transmitted from the source address to the destination + address since this entry was added to the + dsmonMatrixSDTable. 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." + ::= { dsmonMatrixSDEntry 6 } + +dsmonMatrixSDOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonMatrixSDPkts + counter has overflowed, since this entry was added to the + dsmonMatrixSDTable." + + + + ::= { dsmonMatrixSDEntry 7 } + +dsmonMatrixSDHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonMatrixSDPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonMatrixSDEntry 8 } + +dsmonMatrixSDOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + 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 dsmonMatrixSDTable + (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." + ::= { dsmonMatrixSDEntry 9 } + +dsmonMatrixSDOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonMatrixSDOctets + counter has overflowed, since this entry was added to the + dsmonMatrixSDTable." + ::= { dsmonMatrixSDEntry 10 } + +dsmonMatrixSDHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The 64-bit version of the dsmonMatrixSDPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonMatrixSDEntry 11 } + +dsmonMatrixSDCreateTime 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." + ::= { dsmonMatrixSDEntry 12 } + + +-- +-- AL Matrix DS Statistics Table +-- + +dsmonMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries which collect + statistics for conversations of a particular application + 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 from a particular address. + + 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." + ::= { dsmonMatrixObjects 3 } + +dsmonMatrixDSEntry OBJECT-TYPE + SYNTAX DsmonMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixDSTable. Note that this + table is conceptually a re-ordered version of the + dsmonMatrixSDTable. Therefore, all of the index values from + + + + that table are used by reference, and their semantics are + exactly as described in the dsmonMatrixSDTable. + + The dsmonMatrixCtlIndex value in the index identifies the + dsmonMatrixCtlEntry on whose behalf this entry was created. + + The dsmonMatrixTimeMark value in the index identifies the + Time Filter index for this table. + + The dsmonAggGroupIndex value in the index is determined by + examining the DSCP value in each monitored packet, and the + dsmonAggProfileTable entry configured for that value. + + The dsmonMatrixNLIndex value in the index identifies the + protocolDirLocalIndex value of a protocolDirEntry + representing the specific network layer protocol + encapsulation associated with each entry, and the network + protocol type of the dsmonMatrixSourceAddress and + dsmonMatrixDestAddress objects. + + The dsmonMatrixDestAddress value in the index identifies the + network destination address for this dsmonMatrix entry. + + The dsmonMatrixSourceAddress value in the index identifies + the network source address for this dsmonMatrix entry. + + The dsmonMatrixALIndex value in the index identifies the + protocolDirLocalIndex value of the protocolDirEntry + representing the specific application layer protocol + associated with each entry." + INDEX { dsmonMatrixCtlIndex, + dsmonMatrixTimeMark, + dsmonAggGroupIndex, + dsmonMatrixNLIndex, + dsmonMatrixDestAddress, + dsmonMatrixSourceAddress, + dsmonMatrixALIndex + } + ::= { dsmonMatrixDSTable 1 } + +DsmonMatrixDSEntry ::= SEQUENCE { + dsmonMatrixDSPkts ZeroBasedCounter32, + dsmonMatrixDSOvflPkts ZeroBasedCounter32, + dsmonMatrixDSHCPkts ZeroBasedCounter64, + dsmonMatrixDSOctets ZeroBasedCounter32, + dsmonMatrixDSOvflOctets ZeroBasedCounter32, + dsmonMatrixDSHCOctets ZeroBasedCounter64, + dsmonMatrixDSCreateTime LastCreateTime + + + +} + +dsmonMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets of this protocol type (indicated by + the associated dsmonMatrixALIndex object) without errors + transmitted from the source address to the destination + address since this entry was added to the + dsmonMatrixDSTable. 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." + ::= { dsmonMatrixDSEntry 1 } + +dsmonMatrixDSOvflPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonMatrixDSPkts + counter has overflowed, since this entry was added to the + dsmonMatrixDSTable." + ::= { dsmonMatrixDSEntry 2 } + +dsmonMatrixDSHCPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonMatrixDSPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonMatrixDSEntry 3 } + +dsmonMatrixDSOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + 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 dsmonMatrixDSTable + (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." + ::= { dsmonMatrixDSEntry 4 } + +dsmonMatrixDSOvflOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times the associated dsmonMatrixDSOctets + counter has overflowed, since this entry was added to the + dsmonMatrixDSTable." + ::= { dsmonMatrixDSEntry 5 } + +dsmonMatrixDSHCOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 64-bit version of the dsmonMatrixDSPkts object. + + Note that this object will only be instantiated if the RMON + agent supports High Capacity monitoring for a particular + dataSource." + ::= { dsmonMatrixDSEntry 6 } + +dsmonMatrixDSCreateTime 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." + ::= { dsmonMatrixDSEntry 7 } + + +-- +-- Per-Protocol Per-Matrix Statistics TopN Control Table +-- + + + + +dsmonMatrixTopNCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a report + of the top N dsmonMatrix entries according to a selected + metric. + + Note that an agent MAY choose to limit the actual number of + entries which may be created in this table. In this case, + the agent SHOULD return an error-status of + 'resourceUnavailable(13)', as per section 4.2.5 of the + 'Protocol Operations for SNMPv2' specification [RFC1905]." + ::= { dsmonMatrixObjects 4 } + +dsmonMatrixTopNCtlEntry OBJECT-TYPE + SYNTAX DsmonMatrixTopNCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixTopNCtlTable. + + Entries are created and deleted from this table by + management action only, using the dsmonMatrixTopNCtlStatus + RowStatus object. + + The agent SHOULD support non-volatile configuration of this + table, and upon system initialization, the table SHOULD be + initialized with the saved values. + + Activation of a control row in this table will cause an + associated dsmonMatrixTopNTable to be created and maintained + by the agent." + INDEX { dsmonMatrixTopNCtlIndex } + ::= { dsmonMatrixTopNCtlTable 1 } + +DsmonMatrixTopNCtlEntry ::= SEQUENCE { + dsmonMatrixTopNCtlIndex Integer32, + dsmonMatrixTopNCtlMatrixIndex Integer32, + dsmonMatrixTopNCtlRateBase INTEGER, + dsmonMatrixTopNCtlTimeRemaining Integer32, + dsmonMatrixTopNCtlGeneratedRpts Counter32, + dsmonMatrixTopNCtlDuration Integer32, + dsmonMatrixTopNCtlRequestedSize Integer32, + dsmonMatrixTopNCtlGrantedSize Integer32, + dsmonMatrixTopNCtlStartTime TimeStamp, + dsmonMatrixTopNCtlOwner OwnerString, + + + + dsmonMatrixTopNCtlStatus RowStatus +} + +dsmonMatrixTopNCtlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonMatrixTopNCtlTable. Each such entry defines one Top N + report prepared for one RMON dataSource." + ::= { dsmonMatrixTopNCtlEntry 1 } + +dsmonMatrixTopNCtlMatrixIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The dsmonMatrixSDTable for which a top N report will be + prepared on behalf of this entry. The dsmonMatrixSDTable is + identified by the same value of the dsmonMatrixCtlIndex + object. + + This object MUST NOT be modified if the associated + dsmonMatrixTopNCtlStatus object is equal to active(1)." + ::= { dsmonMatrixTopNCtlEntry 2 } + +dsmonMatrixTopNCtlRateBase OBJECT-TYPE + SYNTAX INTEGER { + dsmonMatrixTopNPkts(1), + dsmonMatrixTopNOctets(2), + dsmonMatrixTopNHCPkts(3), + dsmonMatrixTopNHCOctets(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each dsmonMatrixSD entry that the + dsmonMatrixTopNRate and dsmonMatrixTopNHCRate variables are + based upon. Each dsmonMatrixTopN report generated on behalf + of this control entry will be ranked in descending order, + based on the associated dsmonMatrixSDTable counter, + identified by this object. + + The following table identifies the dsmonMatrixSDTable + counters associated with each enumeration: + + Enumeration RateBase MIB Objects + + + + ----------- -------------------- + dsmonMatrixTopNPkts dsmonMatrixSDPkts + dsmonMatrixTopNOctets dsmonMatrixSDOctets + dsmonMatrixTopNHCPkts dsmonMatrixSDHCPkts + dsmonMatrixTopNHCOctets dsmonMatrixSDHCOctets + + The following enumerations are only available if the agent + supports High Capacity monitoring: + + dsmonMatrixTopNHCPkts + dsmonMatrixTopNHCOctets + + This object MUST NOT be modified if the associated + dsmonMatrixTopNCtlStatus object is equal to active(1)." + ::= { dsmonMatrixTopNCtlEntry 3 } + +dsmonMatrixTopNCtlTimeRemaining OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + 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 dsmonMatrixTopNCtlDuration object. + + When the report finishes, the probe will automatically start + another collection with the same initial value of + dsmonMatrixTopNCtlTimeRemaining. 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 dsmonMatrixTopNTable, overwriting any report that may be + there. + + When this object is modified by the management station, any + associated entries in the dsmonMatrixTopNTable shall be + deleted." + DEFVAL { 1800 } + ::= { dsmonMatrixTopNCtlEntry 4 } + + + +dsmonMatrixTopNCtlGeneratedRpts OBJECT-TYPE + SYNTAX Counter32 + UNITS "reports" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reports that have been generated by this + entry." + ::= { dsmonMatrixTopNCtlEntry 5 } + +dsmonMatrixTopNCtlDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected during + the last sampling interval. + + When the associated dsmonMatrixTopNCtlTimeRemaining 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 + dsmonMatrixTopNCtlTimeRemaining is set. + + This value shall be zero if no reports have been requested + for this dsmonMatrixTopNCtlEntry." + ::= { dsmonMatrixTopNCtlEntry 6 } + +dsmonMatrixTopNCtlRequestedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of dsmonMatrix entries requested for + this report. + + When this object is created or modified, the probe SHOULD + set dsmonMatrixTopNCtlGrantedSize as closely to this object + as is possible for the particular probe implementation and + available resources." + DEFVAL { 150 } + ::= { dsmonMatrixTopNCtlEntry 7 } + +dsmonMatrixTopNCtlGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "table entries" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The maximum number of dsmonMatrix entries in this report. + + When the associated dsmonMatrixTopNCtlRequestedSize 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 dsmonMatrixTopNCtlRequestedSize + object. + + Protocol entries with the highest value of + dsmonMatrixTopNRate or dsmonMatrixTopNHCRate (depending on + the value of the associated dsmonMatrixTopNCtlRateBase + object) shall be placed in this table in decreasing order of + this rate until there is no more room or until there are no + more dsmonMatrix entries." + ::= { dsmonMatrixTopNCtlEntry 8 } + +dsmonMatrixTopNCtlStartTime 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 dsmonMatrixTopNCtlTimeRemaining 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." + ::= { dsmonMatrixTopNCtlEntry 9 } + +dsmonMatrixTopNCtlOwner 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." + ::= { dsmonMatrixTopNCtlEntry 10 } + +dsmonMatrixTopNCtlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The status of this dsmonMatrixTopNCtlEntry. + + An entry MUST 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 dsmonMatrixTopNTable shall be deleted by the + agent." + ::= { dsmonMatrixTopNCtlEntry 11 } + +-- +-- dsmonMatrix TopN Table +-- + +dsmonMatrixTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsmonMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for those dsmonMatrix entries that have + counted the highest number of octets or packets. + + If the dsmonAggControlLocked object is equal to 'false', + then all entries in this table SHALL be deleted, and the + agent will not process TopN reports on behalf of any + dsmonMatrixTopNCtlEntry. + + When the dsmonAggControlLocked object is set to 'true', then + particular reports SHOULD be restarted from the beginning, + on behalf of all active rows in the dsmonMatrixTopNCtlTable. + + Note that dsmonMatrix entries which did not increment at all + during the report interval SHOULD NOT be included in + dsmonMatrixTopN reports." + ::= { dsmonMatrixObjects 5 } + +dsmonMatrixTopNEntry OBJECT-TYPE + SYNTAX DsmonMatrixTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the dsmonMatrixTopNTable. + + The dsmonMatrixTopNCtlIndex value in the index identifies + the dsmonMatrixTopNCtlEntry on whose behalf this entry was + created. + + + + + Entries in this table are ordered from 1 to 'N', where lower + numbers represent higher values of the rate base object, + over the report interval." + INDEX { dsmonMatrixTopNCtlIndex, dsmonMatrixTopNIndex } + ::= { dsmonMatrixTopNTable 1 } + +DsmonMatrixTopNEntry ::= SEQUENCE { + dsmonMatrixTopNIndex Integer32, + dsmonMatrixTopNAggGroup DsmonCounterAggGroupIndex, + dsmonMatrixTopNNLIndex Integer32, + dsmonMatrixTopNSourceAddress OCTET STRING, + dsmonMatrixTopNDestAddress OCTET STRING, + dsmonMatrixTopNALIndex Integer32, + dsmonMatrixTopNPktRate Gauge32, + dsmonMatrixTopNPktRateOvfl Gauge32, + dsmonMatrixTopNHCPktRate CounterBasedGauge64, + dsmonMatrixTopNRevPktRate Gauge32, + dsmonMatrixTopNRevPktRateOvfl Gauge32, + dsmonMatrixTopNHCRevPktRate CounterBasedGauge64, + dsmonMatrixTopNOctetRate Gauge32, + dsmonMatrixTopNOctetRateOvfl Gauge32, + dsmonMatrixTopNHCOctetRate CounterBasedGauge64, + dsmonMatrixTopNRevOctetRate Gauge32, + dsmonMatrixTopNRevOctetRateOvfl Gauge32, + dsmonMatrixTopNHCRevOctetRate CounterBasedGauge64 + } + +dsmonMatrixTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + dsmonMatrixTopNTable among those in the same report. This + index is between 1 and N, where N is the number of entries + in this report." + ::= { dsmonMatrixTopNEntry 1 } + +dsmonMatrixTopNAggGroup OBJECT-TYPE + SYNTAX DsmonCounterAggGroupIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter aggregation group index value associated with + host identified in this entry. This object identifies the + dsmonAggGroupEntry with the same dsmonAggControlIndex value + as the associated dsmonMatrixCtlAggProfile object and the + same dsmonAggGroupIndex value as this object." + + + + ::= { dsmonMatrixTopNEntry 2 } + +dsmonMatrixTopNNLIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value which identifies the + protocol associated with the dsmonMatrixTopNSourceAddress + and dsmonMatrixTopNDestAddress objects in this entry. + + If the protocolDirEntry associated with the + protocolDirLocalIndex with the same value as this object is + de-activated or deleted, then the agent MUST delete this + dsmonMatrixTopN entry." + ::= { dsmonMatrixTopNEntry 3 } + +dsmonMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The dsmonMatrixSDSourceAddress value for the source network + host identified in this entry. The associated + dsmonMatrixTopNNLIndex object identifies the network + protocol type and the encoding rules for this object." + ::= { dsmonMatrixTopNEntry 4 } + +dsmonMatrixTopNDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The dsmonMatrixSDDestAddress value for the destination + network host identified in this entry. The associated + dsmonMatrixTopNNLIndex object identifies the network + protocol type and the encoding rules for this object." + ::= { dsmonMatrixTopNEntry 5 } + +dsmonMatrixTopNALIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocolDirLocalIndex value which identifies the + application protocol associated with this entry. + + If the protocolDirEntry associated with the + + + + protocolDirLocalIndex with the same value as this object is + de-activated or deleted, then the agent MUST delete this + dsmonMatrixTopN entry." + ::= { dsmonMatrixTopNEntry 6 } + +dsmonMatrixTopNPktRate 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 dsmonMatrixSDPkts + object. + + If the value of dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNPkts, this variable will be used to sort this + report. + + If the value of the dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this + object will contain the the least significant 32 bits of the + associated dsmonMatrixTopNHCPktRate object." + ::= { dsmonMatrixTopNEntry 7 } + +dsmonMatrixTopNPktRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonMatrixTopNHCPktRate object. + + If the associated dsmonMatrixTopNCtlRateBase is equal to + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this + object will contain the most significant 32 bits of the + associated dsmonMatrixTopNHCPktRate object, otherwise this + object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 8 } + +dsmonMatrixTopNHCPktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + 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 dsmonMatrixSDHCPkts + object. + + If the value of dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNHCPkts, this variable will be used to sort + this report. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 9 } + +dsmonMatrixTopNRevPktRate 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 + dsmonMatrixDSPkts object (note that the corresponding + dsmonMatrixSDPkts object selected is the one whose source + address is equal to dsmonMatrixTopNDestAddress and whose + destination address is equal to + dsmonMatrixTopNSourceAddress.)" + ::= { dsmonMatrixTopNEntry 10 } + +dsmonMatrixTopNRevPktRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonMatrixTopNHCRevPktRate object. + + If the associated dsmonMatrixTopNCtlRateBase is equal to + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOCtets, then this + object will contain the most significant 32 bits of the + associated dsmonMatrixTopNHCRevPktRate object, otherwise + this object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 11 } + +dsmonMatrixTopNHCRevPktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + + + + 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 + dsmonMatrixDSHCPkts object (note that the corresponding + dsmonMatrixSDHCPkts object selected is the one whose source + address is equal to dsmonMatrixTopNDestAddress and whose + destination address is equal to + dsmonMatrixTopNSourceAddress.) + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 12 } + +dsmonMatrixTopNOctetRate 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 dsmonMatrixSDOctets + object. + + If the value of dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNOctets, this variable will be used to sort + this report. + + If the value of the dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this + object will contain the the least significant 32 bits of the + associated dsmonMatrixTopNHCPktRate object." + ::= { dsmonMatrixTopNEntry 13 } + +dsmonMatrixTopNOctetRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonMatrixTopNHCOctetRate object. + + If the associated dsmonMatrixTopNCtlRateBase is equal to + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this + object will contain the most significant 32 bits of the + associated dsmonMatrixTopNHCOctetRate object, otherwise this + + + + object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 14 } + +dsmonMatrixTopNHCOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + 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 + dsmonMatrixSDHCOctets object. + + If the value of dsmonMatrixTopNCtlRateBase is + dsmonMatrixTopNHCOctets, this variable will be used to sort + this report. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 15 } + +dsmonMatrixTopNRevOctetRate 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 + dsmonMatrixDSOctets object (note that the corresponding + dsmonMatrixSDOctets object selected is the one whose source + address is equal to dsmonMatrixTopNDestAddress and whose + destination address is equal to + dsmonMatrixTopNSourceAddress.)" + ::= { dsmonMatrixTopNEntry 16 } + +dsmonMatrixTopNRevOctetRateOvfl OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The most significant 32 bits of the associated + dsmonMatrixTopNHCRevOctetRate object. + + If the associated dsmonMatrixTopNCtlRateBase is equal to + + + + dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOCtets, then this + object will contain the most significant 32 bits of the + associated dsmonMatrixTopNHCRevPktRate object, otherwise + this object will contain the value zero. + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 17 } + +dsmonMatrixTopNHCRevOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + 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 + dsmonMatrixDSHCOctets object (note that the corresponding + dsmonMatrixSDHCOctets object selected is the one whose + source address is equal to dsmonMatrixTopNDestAddress and + whose destination address is equal to + dsmonMatrixTopNSourceAddress.) + + The agent MAY choose not to instantiate this object if High + Capacity monitoring is not supported." + ::= { dsmonMatrixTopNEntry 18 } + +-- +-- Conformance Section +-- + +dsmonCompliances OBJECT IDENTIFIER ::= { dsmonConformance 1 } +dsmonGroups OBJECT IDENTIFIER ::= { dsmonConformance 2 } + +-- +-- Compliance for agents that do not support HC or Counter64 +-- + +dsmonCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Differentiated Services Monitoring MIB." + MODULE -- this module + MANDATORY-GROUPS { + dsmonCounterAggControlGroup, + dsmonStatsGroup, + dsmonCapsGroup + + + + } + + GROUP dsmonStatsHCGroup + DESCRIPTION + "The dsmonStatsHCGroup is mandatory for systems which + implement High Capacity monitoring." + + GROUP dsmonPdistGroup + DESCRIPTION + "The dsmonPdistGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonPdistHCGroup + DESCRIPTION + "The dsmonPdistHCGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring on high capacity interfaces." + + GROUP dsmonHostGroup + DESCRIPTION + "The dsmonHostGroup is mandatory for systems which implement + RMON-2 nlHostTable based network protocol monitoring." + + GROUP dsmonHostHCGroup + DESCRIPTION + "The dsmonHostHCGroup is mandatory for systems which + implement RMON-2 nlHostTable based network protocol + monitoring, on high capacity interfaces." + + GROUP dsmonMatrixGroup + DESCRIPTION + "The dsmonMatrixGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring." + + GROUP dsmonMatrixHCGroup + DESCRIPTION + "The dsmonMatrixHCGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring, on high capacity interfaces." + + ::= { dsmonCompliances 1 } + +-- +-- Compliance for agents that support HC and Counter64 +-- + + + + +dsmonHCCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Differentiated Services Monitoring MIB for agents which also + support High Capacity monitoring and the Counter64 data + type." + MODULE -- this module + MANDATORY-GROUPS { + dsmonCounterAggControlGroup, + dsmonStatsGroup, + dsmonStatsHCGroup, + dsmonCapsGroup + } + + GROUP dsmonPdistGroup + DESCRIPTION + "The dsmonPdistGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonPdistHCGroup + DESCRIPTION + "The dsmonPdistHCGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonHostGroup + DESCRIPTION + "The dsmonHostGroup is mandatory for systems which implement + RMON-2 nlHostTable based network protocol monitoring." + + GROUP dsmonHostHCGroup + DESCRIPTION + "The dsmonHostHCGroup is mandatory for systems which + implement RMON-2 nlHostTable based network protocol + monitoring." + + GROUP dsmonMatrixGroup + DESCRIPTION + "The dsmonMatrixGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring." + + GROUP dsmonMatrixHCGroup + DESCRIPTION + "The dsmonMatrixHCGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + + + + monitoring." + + ::= { dsmonCompliances 2 } + +-- +-- Compliance for agents that support HC, but not Counter64 +-- + +dsmonHCNoC64Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "Describes the requirements for conformance to the + Differentiated Services Monitoring MIB for an agent which + supports high capacity monitoring, but does not support the + Counter64 data type (e.g., only supports the SNMPv1 + protocol)." + MODULE -- this module + MANDATORY-GROUPS { + dsmonCounterAggControlGroup, + dsmonStatsGroup, + dsmonStatsOvflGroup, + dsmonCapsGroup + } + + GROUP dsmonStatsHCGroup + DESCRIPTION + "Implementation of the dsmonStatsHCGroup is not required. + High Capacity monitoring." + + GROUP dsmonPdistGroup + DESCRIPTION + "The dsmonPdistGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonPdistOvflGroup + DESCRIPTION + "The dsmonPdistGroup is mandatory for systems which + implement RMON-2 protocolDirTable based protocol + distribution monitoring." + + GROUP dsmonPdistHCGroup + DESCRIPTION + "Implementation of the dsmonPdistHCGroup is not required." + + GROUP dsmonHostGroup + DESCRIPTION + "The dsmonHostGroup is mandatory for systems which implement + + + + RMON-2 nlHostTable based network protocol monitoring." + + GROUP dsmonHostOvflGroup + DESCRIPTION + "The dsmonHostGroup is mandatory for systems which implement + RMON-2 nlHostTable based network protocol monitoring." + + GROUP dsmonHostHCGroup + DESCRIPTION + "Implementation of the dsmonHostHCGroup is not required." + + GROUP dsmonMatrixGroup + DESCRIPTION + "The dsmonMatrixGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring." + + GROUP dsmonMatrixOvflGroup + DESCRIPTION + "The dsmonMatrixGroup is mandatory for systems which + implement RMON-2 alMatrix based application protocol + monitoring." + + GROUP dsmonMatrixHCGroup + DESCRIPTION + "Implementation of the dsmonMatrixHCGroup is not required." + + ::= { dsmonCompliances 3 } + + + +-- Object Groups + +dsmonCounterAggControlGroup OBJECT-GROUP + OBJECTS { + dsmonMaxAggGroups, + dsmonAggControlLocked, + dsmonAggControlChanges, + dsmonAggControlLastChangeTime, + dsmonAggControlDescr, + dsmonAggControlOwner, + dsmonAggControlStatus, + dsmonAggGroupIndex, + dsmonAggGroupDescr, + dsmonAggGroupStatus + } + STATUS current + DESCRIPTION + + + + "A collection of objects used to configure and manage + counter aggregation groups for DSMON collection purposes." + ::= { dsmonGroups 1 } + +dsmonStatsGroup OBJECT-GROUP + OBJECTS { + dsmonStatsControlDataSource, + dsmonStatsControlAggProfile, + dsmonStatsControlDroppedFrames, + dsmonStatsControlCreateTime, + dsmonStatsControlOwner, + dsmonStatsControlStatus, + dsmonStatsInPkts, + dsmonStatsInOctets, + dsmonStatsOutPkts, + dsmonStatsOutOctets + } + STATUS current + DESCRIPTION + "A collection of objects providing per DSCP statistics." + ::= { dsmonGroups 2 } + +dsmonStatsOvflGroup OBJECT-GROUP + OBJECTS { + dsmonStatsInOvflPkts, + dsmonStatsInOvflOctets, + dsmonStatsOutOvflPkts, + dsmonStatsOutOvflOctets + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing per-DSCP overflow + counters for systems with high capacity data sources, but + without support for the Counter64 data type." + ::= { dsmonGroups 3 } + +dsmonStatsHCGroup OBJECT-GROUP + OBJECTS { + dsmonStatsInHCPkts, + dsmonStatsInHCOctets, + dsmonStatsOutHCPkts, + dsmonStatsOutHCOctets + } + STATUS current + DESCRIPTION + "A collection of objects providing per DSCP statistics for + high capacity data sources." + ::= { dsmonGroups 4 } + + + +dsmonPdistGroup OBJECT-GROUP + OBJECTS { + dsmonPdistCtlDataSource, + dsmonPdistCtlAggProfile, + dsmonPdistCtlMaxDesiredEntries, + dsmonPdistCtlDroppedFrames, + dsmonPdistCtlInserts, + dsmonPdistCtlDeletes, + dsmonPdistCtlCreateTime, + dsmonPdistCtlOwner, + dsmonPdistCtlStatus, + dsmonPdistStatsPkts, + dsmonPdistStatsOctets, + dsmonPdistStatsCreateTime, + dsmonPdistTopNCtlPdistIndex, + dsmonPdistTopNCtlRateBase, + dsmonPdistTopNCtlTimeRemaining, + dsmonPdistTopNCtlGeneratedReprts, + dsmonPdistTopNCtlDuration, + dsmonPdistTopNCtlRequestedSize, + dsmonPdistTopNCtlGrantedSize, + dsmonPdistTopNCtlStartTime, + dsmonPdistTopNCtlOwner, + dsmonPdistTopNCtlStatus, + dsmonPdistTopNPDLocalIndex, + dsmonPdistTopNAggGroup, + dsmonPdistTopNRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per protocol DSCP + monitoring extensions to the RMON-2 MIB." + ::= { dsmonGroups 5 } + +dsmonPdistOvflGroup OBJECT-GROUP + OBJECTS { + dsmonPdistStatsOvflPkts, + dsmonPdistStatsOvflOctets, + dsmonPdistTopNRateOvfl + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing per-protocol DSCP + overflow counters for systems with high capacity data + sources, but without support for the Counter64 data type." + ::= { dsmonGroups 6 } + +dsmonPdistHCGroup OBJECT-GROUP + + + + OBJECTS { + dsmonPdistStatsHCPkts, + dsmonPdistStatsHCOctets, + dsmonPdistTopNHCRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per protocol DSCP + monitoring extensions to the RMON-2 MIB for High Capacity + networks." + ::= { dsmonGroups 7 } + +dsmonHostGroup OBJECT-GROUP + OBJECTS { + dsmonHostCtlDataSource, + dsmonHostCtlAggProfile, + dsmonHostCtlMaxDesiredEntries, + dsmonHostCtlIPv4PrefixLen, + dsmonHostCtlIPv6PrefixLen, + dsmonHostCtlDroppedFrames, + dsmonHostCtlInserts, + dsmonHostCtlDeletes, + dsmonHostCtlCreateTime, + dsmonHostCtlOwner, + dsmonHostCtlStatus, + dsmonHostInPkts, + dsmonHostInOctets, + dsmonHostOutPkts, + dsmonHostOutOctets, + dsmonHostCreateTime, + dsmonHostTopNCtlHostIndex, + dsmonHostTopNCtlRateBase, + dsmonHostTopNCtlTimeRemaining, + dsmonHostTopNCtlGeneratedReports, + dsmonHostTopNCtlDuration, + dsmonHostTopNCtlRequestedSize, + dsmonHostTopNCtlGrantedSize, + dsmonHostTopNCtlStartTime, + dsmonHostTopNCtlOwner, + dsmonHostTopNCtlStatus, + dsmonHostTopNPDLocalIndex, + dsmonHostTopNAddress, + dsmonHostTopNAggGroup, + dsmonHostTopNRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per Host monitoring + + + + functions." + ::= { dsmonGroups 8 } + +dsmonHostOvflGroup OBJECT-GROUP + OBJECTS { + dsmonHostInOvflPkts, + dsmonHostInOvflOctets, + dsmonHostOutOvflPkts, + dsmonHostOutOvflOctets, + dsmonHostTopNRateOvfl + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing per host DSCP overflow + counters for systems with high capacity data sources, but + without support for the Counter64 data type." + ::= { dsmonGroups 9 } + +dsmonHostHCGroup OBJECT-GROUP + OBJECTS { + dsmonHostInHCPkts, + dsmonHostInHCOctets, + dsmonHostOutHCPkts, + dsmonHostOutHCOctets, + dsmonHostTopNHCRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per Host monitoring + functions for High Capacity networks." + ::= { dsmonGroups 10 } + +dsmonCapsGroup OBJECT-GROUP + OBJECTS { + dsmonCapabilities + } + STATUS current + DESCRIPTION + "A collection of objects providing an indication of the + DSMON monitoring functions supported by the agent." + ::= { dsmonGroups 11 } + +dsmonMatrixGroup OBJECT-GROUP + OBJECTS { + dsmonMatrixCtlDataSource, + dsmonMatrixCtlAggProfile, + dsmonMatrixCtlMaxDesiredEntries, + dsmonMatrixCtlDroppedFrames, + + + + dsmonMatrixCtlInserts, + dsmonMatrixCtlDeletes, + dsmonMatrixCtlCreateTime, + dsmonMatrixCtlOwner, + dsmonMatrixCtlStatus, + dsmonMatrixSDPkts, + dsmonMatrixSDOctets, + dsmonMatrixSDCreateTime, + dsmonMatrixDSPkts, + dsmonMatrixDSOctets, + dsmonMatrixDSCreateTime, + dsmonMatrixTopNCtlMatrixIndex, + dsmonMatrixTopNCtlRateBase, + dsmonMatrixTopNCtlTimeRemaining, + dsmonMatrixTopNCtlGeneratedRpts, + dsmonMatrixTopNCtlDuration, + dsmonMatrixTopNCtlRequestedSize, + dsmonMatrixTopNCtlGrantedSize, + dsmonMatrixTopNCtlStartTime, + dsmonMatrixTopNCtlOwner, + dsmonMatrixTopNCtlStatus, + dsmonMatrixTopNAggGroup, + dsmonMatrixTopNNLIndex, + dsmonMatrixTopNSourceAddress, + dsmonMatrixTopNDestAddress, + dsmonMatrixTopNALIndex, + dsmonMatrixTopNPktRate, + dsmonMatrixTopNRevPktRate, + dsmonMatrixTopNOctetRate, + dsmonMatrixTopNRevOctetRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per conversation + monitoring functions." + ::= { dsmonGroups 12 } + +dsmonMatrixOvflGroup OBJECT-GROUP + OBJECTS { + dsmonMatrixSDOvflPkts, + dsmonMatrixSDOvflOctets, + dsmonMatrixDSOvflPkts, + dsmonMatrixDSOvflOctets, + dsmonMatrixTopNPktRateOvfl, + dsmonMatrixTopNRevPktRateOvfl, + dsmonMatrixTopNOctetRateOvfl, + dsmonMatrixTopNRevOctetRateOvfl + } + + + + STATUS deprecated + DESCRIPTION + "A collection of objects providing per conversation + monitoring functions for systems with high capacity data + sources, but without support for the Counter64 data type." + ::= { dsmonGroups 13 } + +dsmonMatrixHCGroup OBJECT-GROUP + OBJECTS { + dsmonMatrixSDHCPkts, + dsmonMatrixSDHCOctets, + dsmonMatrixDSHCPkts, + dsmonMatrixDSHCOctets, + dsmonMatrixTopNHCPktRate, + dsmonMatrixTopNHCRevPktRate, + dsmonMatrixTopNHCOctetRate, + dsmonMatrixTopNHCRevOctetRate + } + STATUS current + DESCRIPTION + "A collection of objects providing per conversation + monitoring functions for High Capacity networks." + ::= { dsmonGroups 14 } + +END diff --git a/mibs/ietf/EBN-MIB b/mibs/ietf/EBN-MIB new file mode 100644 index 0000000..0a29304 --- /dev/null +++ b/mibs/ietf/EBN-MIB @@ -0,0 +1,751 @@ +EBN-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + DisplayString, TEXTUAL-CONVENTION + FROM SNMPv2-TC + SnaControlPointName + -- Because the characters allowed in an SNA control + -- point name come from a restricted character set, + -- these names are not subject to internationalization. + FROM APPN-MIB + snanauMIB + FROM SNA-NAU-MIB; + + ebnMIB MODULE-IDENTITY + LAST-UPDATED "9804281800Z" -- April 28, 1998 + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN MIBs SIG" + CONTACT-INFO + " + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + BRQA/501 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@us.ibm.com + " + + DESCRIPTION + " The MIB Module for Extended Border Node" + + ::= { snanauMIB 7 } + + -- snanauMIB ::= { mib-2 34 } + + -- ****************************************************************** + -- Textual Conventions + -- ------------------------------------------------------------------ + SnaNAUWildcardName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Fully-qualified network NAU name. Entries take one of three + forms: + - Explicit entries do not contain the character '*'. + - Partial Wildcard entries have the form 'ccc*', where + 'ccc' represents one to sixteen characters in a legal + SNA NAU Name. + - A full wildcard consists of a single character '*'. + + Because the characters allowed in an SNA NAU name come from + a restricted character set, these names are not subject to + internationalization." + + SYNTAX DisplayString(SIZE(1..17)) + + -- ****************************************************************** + ebnObjects OBJECT IDENTIFIER ::= { ebnMIB 1 } + -- ****************************************************************** + + -- ****************************************************************** + -- EBN Directory Group + -- The ebnDirTable is an extension to the appnDirTable. It specifies + -- the subnet affiliation for LUs in the EBN's directory. + -- ****************************************************************** + + ebnDir OBJECT IDENTIFIER ::= { ebnObjects 1 } + + ebnDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The EBN Directory Table. This table is an extension + to the APPN MIB's appnDirTable. Entries in this table + are in one-to-one correspondence with entries in the + appnDirTable, with corresponding entries having identical + values for their respective indexes." + + ::= { ebnDir 1 } + + ebnDirEntry OBJECT-TYPE + SYNTAX EbnDirEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in the EBN Directory Table." + + INDEX { ebnDirLuName } + + ::= { ebnDirTable 1 } + + EbnDirEntry ::= SEQUENCE { + ebnDirLuName SnaNAUWildcardName, + ebnDirSubnetAffiliation INTEGER } + + ebnDirLuName OBJECT-TYPE + SYNTAX SnaNAUWildcardName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network LU name in the domain of a serving + network node. If this object has the same value as the + appnDirLuName object in the APPN MIB, then the two objects + are referring to the same LU." + + ::= { ebnDirEntry 1 } + + ebnDirSubnetAffiliation OBJECT-TYPE + SYNTAX INTEGER { native (1), + nonNative (2), + subarea (3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the subnetwork affiliation of the LU: + - native(1) : The LU is in the native APPN subnetwork. + - nonNative(2) : The LU is in a non-native APPN subnetwork. + - subarea(3) : The LU is in a subarea network." + + ::= { ebnDirEntry 2 } + + -- ****************************************************************** + -- EBN Intermediate Session RSCV Group + -- This table is a sparse extension to the appnIsInTable. For + -- sessions crossing ISTGs adjacent to the EBN, it contains the RSCV + -- and COS used in the direction of the BIND destination. + -- ****************************************************************** + + ebnIsRscv OBJECT IDENTIFIER ::= { ebnObjects 2 } + + ebnIsRscvTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnIsRscvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The EBN Intermediate Session RSCV table. This table is an + extension to the appnIsInTable. It contains the RSCV and COS + used in the direction of the BIND destination. There is an + entry in this table for each session that traverses an ISTG + when it enters or leaves this EBN, with corresponding entries + having identical values for their respective indexes." + + ::= { ebnIsRscv 1} + + ebnIsRscvEntry OBJECT-TYPE + SYNTAX EbnIsRscvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry in ebnIsRscvTable." + INDEX { ebnIsRscvCpName, + ebnIsRscvPcid } + + ::= { ebnIsRscvTable 1 } + + EbnIsRscvEntry ::= SEQUENCE { + ebnIsRscvCpName SnaControlPointName, + ebnIsRscvPcid OCTET STRING, + ebnIsRscvDestinationRoute OCTET STRING, + ebnIsRscvDestinationCos DisplayString } + + ebnIsRscvCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network-qualified control point name of the node at + which the session and PCID originated. For APPN and LEN + nodes, this is either CP name of the APPN node at which + the origin LU is located or the CP name of the NN serving + the LEN node at which the origin LU is located. For DLUR + resources it is the name of the owning SSCP. + + If this object has the same value as the appnIsInFqCpName + object in the APPN MIB, then the two objects are referring to + the same APPN control point." + + ::= { ebnIsRscvEntry 1 } + + ebnIsRscvPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of a session. + It is an 8-octet value. + + If this object has the same value as the appnIsInPcid object + in the APPN MIB, and if the corresponding ebnIsRscvCpName + object has the same value as the corresponding + appnIsInFqCpName object, then the entries indexed by these + objects are referring to the same session." + + ::= { ebnIsRscvEntry 2 } + + ebnIsRscvDestinationRoute OBJECT-TYPE + SYNTAX OCTET STRING(SIZE (0..255)) + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The route selection control vector (RSCV x'2B') used in the + direction towards the SLU." + + ::= { ebnIsRscvEntry 3 } + + ebnIsRscvDestinationCos OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Class of Service (COS) name used in the direction + towards the SLU. + + Because the characters allowed in an SNA COS name come from + a restricted character set, these names are not subject to + internationalization." + + ::= { ebnIsRscvEntry 4 } + + -- ****************************************************************** + -- EBN Directory Config Group + -- The following simple objects provide information about EBN + -- directory. + -- ****************************************************************** + + ebnDirConfig OBJECT IDENTIFIER ::= { ebnObjects 3 } + + ebnSearchCacheTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in minutes an extended border node will + retain information about a multi-subnetwork search, once + that that search terminates. A value 0 indicates that the + EBN has no defined limit, and the number of entries is + bounded only by memory." + + ::= { ebnDirConfig 1 } + + ebnMaxSearchCache OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of multi-subnet entries to be cached. + The value 0 indicates that the local node has no defined + limit, and the number of entries is bounded only by + memory." + + ::= { ebnDirConfig 2 } + + ebnDefaultSubnetVisitCount OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "topology subnetworks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The default maximum number of subnetworks a LOCATE search + procedure may traverse." + + ::= { ebnDirConfig 3 } + + -- ****************************************************************** + -- EBN COS Mapping Group + -- The ebnCosMap Table specifies how non-native COS values are mapped + -- to COS values defined in the native subnetwork. The COS mappings + -- that an EBN performs are determined by multiple factors, one of + -- which is a set of user-defined mappings. This table returns the + -- COS mappings that the EBN is actually performing, rather than + -- the user-defined mappings. + -- ****************************************************************** + ebnCOS OBJECT IDENTIFIER ::= { ebnObjects 4 } + + ebnCosMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnCosMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The EBN COS Mapping Table. This table specifies how non- + native COS values are mapped to COS values defined in the + native subnetwork. + + Note: The COS mappings that an EBN performs are determined + by multiple factors, one of which is a set of user-defined + initial mappings. This table returns the COS mappings that + the EBN is actually performing at the time it is queried, + rather than the user-defined initial ones." + + ::= { ebnCOS 1 } + + ebnCosMapEntry OBJECT-TYPE + SYNTAX EbnCosMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EBN COS Mapping table." + + INDEX { ebnCosMapCpName, + ebnCosMapNonNativeCos } + + ::= { ebnCosMapTable 1 } + + EbnCosMapEntry ::= SEQUENCE { + ebnCosMapCpName SnaNAUWildcardName, + ebnCosMapNonNativeCos DisplayString, + ebnCosMapNativeCos DisplayString } + + ebnCosMapCpName OBJECT-TYPE + SYNTAX SnaNAUWildcardName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network CP name for which the COS mapping + applies." + + ::= { ebnCosMapEntry 1 } + + ebnCosMapNonNativeCos OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains one of the following values: + + - An 8-character COS name used in a non-native subnetwork. + - The single character '*', identifying the entry with the + default native COS for a non-native CP name. This entry + is used when there is no entry in the table for a + non-native CP name / non-native COS pair. + + Because the characters allowed in an SNA COS name come from + a restricted character set, these names are not subject to + internationalization." + + ::= { ebnCosMapEntry 2 } + + ebnCosMapNativeCos OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An 8-byte name for the class-of-service, as known in the + native subnetwork. + + Because the characters allowed in an SNA COS name come from + a restricted character set, these names are not subject to + internationalization." + + ::= { ebnCosMapEntry 3 } + + -- ****************************************************************** + -- EBN Subnet Routing List Group + -- The EBN Subnet Routing List indicates to which nodes an EBN + -- forwards search request. This group contains information + -- pertaining to the CONFIGURED Subnet Routing List at an EBN. How a + -- particular search request is routed is determined by a transient + -- list that the EBN creates based on the configured list and other + -- factors. + -- ******************************************************************* + + ebnSubnetRoutingList OBJECT IDENTIFIER ::= { ebnObjects 5 } + + ebnSubnetSearchTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnSubnetSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry for each fully qualified LU + name for which an associated subnet routing list has been + defined. An entry in this table contains general + characteristics of the subnet search routing list for an + LU name. The routing list itself is represented by a set + of contiguous entries in the ebnSearchTable." + + ::= { ebnSubnetRoutingList 1 } + + ebnSubnetSearchEntry OBJECT-TYPE + SYNTAX EbnSubnetSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for the ebnSubnetSearchTable. The entry + represents the configured parameters the EBN uses when it + is determining how to search for the LU identified by the + ebnSubnetSearchLuName object." + + INDEX { ebnSubnetSearchLuName } + + ::= { ebnSubnetSearchTable 1 } + + EbnSubnetSearchEntry ::= SEQUENCE { + ebnSubnetSearchLuName SnaNAUWildcardName, + ebnSubnetSearchDynamics INTEGER, + ebnSubnetSearchOrdering INTEGER } + + ebnSubnetSearchLuName OBJECT-TYPE + SYNTAX SnaNAUWildcardName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network LU name." + + ::= { ebnSubnetSearchEntry 1 } + + ebnSubnetSearchDynamics OBJECT-TYPE + SYNTAX INTEGER { none(1), + limited (2), + full (3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether an EBN may add dynamic entries to a + subnetwork routing list. none(1) means no entries may be + added to the subnetwork routing list. limited(2) means + only likely entries may be added to the subnetwork routing + list. full(3) means all native extended border nodes and + adjacent, non-native EBNs and NNs will be added to the + subnetwork routing list." + + ::= { ebnSubnetSearchEntry 2 } + + ebnSubnetSearchOrdering OBJECT-TYPE + SYNTAX INTEGER{ priority(1), + defined(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether an EBN may reorder a subnetwork routing + list so that entries which are more likely to be successful + move to the top of the subnetwork routing list and entries + which are more likely to be unsuccessful move to the bottom + of the list. + The following values are defined: + + - priority(1): Entries may be reordered. + - defined(2): Entries must not be reordered." + + ::= { ebnSubnetSearchEntry 3 } + + -- Border node search table + + ebnSearchTable OBJECT-TYPE + SYNTAX SEQUENCE OF EbnSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table indicates the CONFIGURED list of control points + to which the EBN sends Locate searches for a given fully + qualified LU name. Each entry in the table indicates one + control point that should be included in a multi-subnet + search for a particular LU name." + + ::= { ebnSubnetRoutingList 2 } + + ebnSearchEntry OBJECT-TYPE + SYNTAX EbnSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ebnSearchTable. An entry can exist in + this table only if an entry exists in the + ebnSubnetSearchTable with an ebnSubnetSearchLuName value + matching this entry's ebnSearchLuName. + For a given ebnSearchLuName value, the ordering of entries + provides by the ebnSearchIndex values corresponds to the + order in which the control points to be searched appear in + the CONFIGURED search list for the ebnSearchLuName." + + INDEX { ebnSearchLuName, + ebnSearchIndex } + + ::= { ebnSearchTable 1 } + + EbnSearchEntry ::= SEQUENCE { + ebnSearchLuName SnaNAUWildcardName, + ebnSearchIndex Unsigned32, + ebnSearchCpName DisplayString, + ebnSearchSNVC Unsigned32 } + + ebnSearchLuName OBJECT-TYPE + SYNTAX SnaNAUWildcardName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Fully qualified network LU name. If this object has the + same value as the ebnSubnetSearchLuName object, then the + two objects are referring to the same LU." + + ::= { ebnSearchEntry 1 } + + ebnSearchIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index enumerating the CONFIGURED order in which + a search is forwarded to CPs for a particular LU name. The + order for an actual search is determined dynamically by the + EBN, based on this configured information and on other + factors, including whether search dynamics and search + ordering are enabled. Information on these last two settings + is available in, respectively, the ebnSubnetSearchDynamics + and ebnSubnetSearch ordering objects." + + ::= { ebnSearchEntry 2 } + + ebnSearchCpName OBJECT-TYPE + SYNTAX DisplayString(SIZE(1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the CP(s) to which a search should be + forwarded. It either follows the SnaNAUWildcardName textual + convention or takes one of the following special formats: + + '*' indicates that all native EBNs and all adjacent non- + native EBNs and NNs may be added to the routing list + dynamically, + + '*SELF' indicates that the EBN should search itself and + its native subnetwork at this time during the + cross-subnet search, + + '*EBNS' indicates all native EBNs. + + Because the characters allowed in a CP name come from a + restricted character set, and because the three formats + listed here use no special characters, this object is not + subject to internationalization." + + ::= { ebnSearchEntry 3 } + + ebnSearchSNVC OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of subnets a Locate search procedure may + traverse. " + + ::= { ebnSearchEntry 4 } + + -- ******************************************************************* + -- HPR Extended Border Node Intermediate Session Group + -- The hbnIsInTable is a sparse extension to the appnIsInTable. + -- For sessions that use back-to-back RTP connections in an HBN, + -- this table provides the network connection endpoint identifier + -- (NceId) and the transport connection identifier (Tcid) for the + -- second RTP connection. + -- ******************************************************************* + + hbn OBJECT IDENTIFIER ::= { ebnObjects 6 } + + hbnIsInTable OBJECT-TYPE + SYNTAX SEQUENCE OF HbnIsInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HBN Intermediate Session table." + ::= { hbn 1} + + hbnIsInEntry OBJECT-TYPE + SYNTAX HbnIsInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HBN Intermediate Session Table. An entry + exists in this table for every intermediate session being + routed between back-to-back RTP connections in the HBN. + + When an entry for a session exists in this table, the + NceIds and Tcids for the back-to-back RTP connections are + made available in the following four objects: + + RTP connection in the direction of the PLU: + - NceId: appnIsInRtpNceId (in the APPN MIB) + - Tcid: appnIsinRtpTcid (in the APPN MIB). + + RTP connection in the direction of the SLU: + - NceId: hbnIsInRtpNceId (in this table) + - Tcid: hbnIsInRtpTcid (in this table)." + + INDEX { hbnIsInFqCpName, + hbnIsInPcid } + + ::= { hbnIsInTable 1 } + + HbnIsInEntry ::= SEQUENCE { + hbnIsInFqCpName SnaControlPointName, + hbnIsInPcid OCTET STRING, + hbnIsInRtpNceId OCTET STRING, + hbnIsInRtpTcid OCTET STRING } + + hbnIsInFqCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network-qualified control point name of the node at + which the session and PCID originated. For APPN and LEN + nodes, this is either the CP name of the APPN node at + which the origin LU is located or the CP name of the NN + serving the LEN node at which the origin LU is located. + + If this object has the same value as the appnIsInFqCpName + object in the APPN MIB, then the two objects are referring + to the same APPN control point." + ::= { hbnIsInEntry 1 } + + hbnIsInPcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The procedure correlation identifier (PCID) of a session. + It is an 8-octet value. + + If this object has the same value as the appnIsInPcid object + in the APPN MIB, and if the corresponding hbnIsInFqCpName + object has the same value as the corresponding + appnIsInFqCpName object, then the entries indexed by these + objects are referring to the same session." + + ::= { hbnIsInEntry 2 } + + hbnIsInRtpNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The HPR local Network Connection Endpoint of the session in + the direction of the SLU." + + ::= { hbnIsInEntry 3 } + + hbnIsInRtpTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RTP connection local TCID of the session in the direction + of the SLU." + + ::= { hbnIsInEntry 4 } + + -- ******************************************************************* + -- Conformance Statement + -- ******************************************************************* + ebnConformance OBJECT IDENTIFIER ::= { ebnMIB 2 } + + ebnCompliances OBJECT IDENTIFIER ::= { ebnConformance 1 } + ebnGroups OBJECT IDENTIFIER ::= { ebnConformance 2 } + + -- Compliance statements + ebnCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities which + implement the ebnMIB." + + MODULE -- this module + + -- Unconditionally mandatory groups + MANDATORY-GROUPS { + ebnDirectoryGroup, + ebnIsRscvGroup, + ebnDirectoryConfigGroup, + ebnCosMappingGroup, + ebnSubnetRoutingListGroup } + + -- Conditionally mandatory groups + GROUP hbnIsInGroup + DESCRIPTION + "The hbnIsInGroup is mandatory only for HPR extended border + nodes." + + ::= {ebnCompliances 1 } + + -- Group definitions + ebnDirectoryGroup OBJECT-GROUP + OBJECTS { ebnDirSubnetAffiliation } + STATUS current + DESCRIPTION + "The EBN-related directory objects." + + ::= { ebnGroups 1 } + + + ebnIsRscvGroup OBJECT-GROUP + OBJECTS { ebnIsRscvDestinationRoute, + ebnIsRscvDestinationCos } + STATUS current + DESCRIPTION + "Two objects representing RSCV and class of service + information saved by an EBN." + + ::= { ebnGroups 2 } + + ebnDirectoryConfigGroup OBJECT-GROUP + OBJECTS { ebnSearchCacheTime, + ebnMaxSearchCache, + ebnDefaultSubnetVisitCount } + STATUS current + DESCRIPTION + "The EBN Directory Configuration Group." + + ::= { ebnGroups 3 } + + ebnCosMappingGroup OBJECT-GROUP + OBJECTS { ebnCosMapNativeCos } + STATUS current + DESCRIPTION + "The EBN COS Mapping Group." + + ::= { ebnGroups 4 } + + ebnSubnetRoutingListGroup OBJECT-GROUP + OBJECTS { ebnSubnetSearchDynamics, + ebnSubnetSearchOrdering, + ebnSearchCpName, + ebnSearchSNVC } + STATUS current + DESCRIPTION + "The Subnet Routing List Group." + + ::= { ebnGroups 5 } + + hbnIsInGroup OBJECT-GROUP + OBJECTS { hbnIsInRtpNceId, hbnIsInRtpTcid } + STATUS current + DESCRIPTION + "The HBN-related Intermediate Session Objects." + + ::= { ebnGroups 6 } + +END diff --git a/mibs/ietf/EFM-CU-MIB b/mibs/ietf/EFM-CU-MIB new file mode 100644 index 0000000..d6ed01d --- /dev/null +++ b/mibs/ietf/EFM-CU-MIB @@ -0,0 +1,3162 @@ +EFM-CU-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Integer32, + Unsigned32, Counter32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, TruthValue, RowStatus, PhysAddress + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + ifIndex, ifSpeed + FROM IF-MIB -- [RFC2863] + ; + + efmCuMIB MODULE-IDENTITY + LAST-UPDATED "200711140000Z" -- November 14, 2007 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/OLD/hubmib-charter.html + + + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Phone: +972-3-924-3491 + Email: edward.beili@actelis.com" + + DESCRIPTION + "The objects in this MIB module are used to manage + the Ethernet in the First Mile (EFM) Copper (EFMCu) Interfaces + 2BASE-TL and 10PASS-TS, defined in IEEE Std. 802.3ah-2004, + which is now a part of IEEE Std. 802.3-2005. + + The following references are used throughout this MIB module: + + [802.3ah] refers to: + IEEE Std 802.3ah-2004: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - + Part 3: Carrier Sense Multiple Access with Collision + Detection (CSMA/CD) Access Method and Physical Layer + Specifications - + Amendment: Media Access Control Parameters, Physical + Layers and Management Parameters for Subscriber Access + Networks', 07 September 2004. + + Of particular interest are Clause 61, 'Physical Coding + Sublayer (PCS) and common specifications, type 10PASS-TS and + type 2BASE-TL', Clause 30, 'Management', Clause 45, + 'Management Data Input/Output (MDIO) Interface', Annex 62A, + 'PMD profiles for 10PASS-TS' and Annex 63A, 'PMD profiles for + 2BASE-TL'. + + + + + [G.991.2] refers to: + ITU-T Recommendation G.991.2: 'Single-pair High-speed Digital + Subscriber Line (SHDSL) transceivers', December 2003. + + [ANFP] refers to: + NICC Document ND1602:2005/08: 'Specification of the Access + Network Frequency Plan (ANFP) applicable to transmission + systems used on the BT Access Network,' August 2005. + + The following normative documents are quoted by the DESCRIPTION + clauses in this MIB module: + + [G.993.1] refers to: + ITU-T Recommendation G.993.1: 'Very High speed Digital + Subscriber Line transceivers', June 2004. + + [T1.424] refers to: + ANSI T1.424-2004: 'Interface Between Networks and Customer + Installation Very-high-bit-rate Digital Subscriber Lines + (VDSL) Metallic Interface (DMT Based)', June 2004. + + [TS 101 270-1] refers to: + ETSI TS 101 270-1: 'Transmission and Multiplexing (TM); + Access transmission systems on metallic access cables; + Very high speed Digital Subscriber Line (VDSL); Part 1: + Functional requirements', October 2005. + + Naming Conventions: + Atn - Attenuation + CO - Central Office + CPE - Customer Premises Equipment + EFM - Ethernet in the First Mile + EFMCu - EFM Copper + MDIO - Management Data Input/Output + Mgn - Margin + PAF - PME Aggregation Function + PBO - Power Back-Off + PCS - Physical Coding Sublayer + PMD - Physical Medium Dependent + PME - Physical Medium Entity + PSD - Power Spectral Density + SNR - Signal to Noise Ratio + TCPAM - Trellis Coded Pulse Amplitude Modulation + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of RFC 5066; see the RFC + itself for full legal notices." + + + + + REVISION "200711140000Z" -- November 14, 2007 + DESCRIPTION "Initial version, published as RFC 5066." + + ::= { mib-2 167 } + + -- Sections of the module + + efmCuObjects OBJECT IDENTIFIER ::= { efmCuMIB 1 } + + efmCuConformance OBJECT IDENTIFIER ::= { efmCuMIB 2 } + + -- Groups in the module + + efmCuPort OBJECT IDENTIFIER ::= { efmCuObjects 1 } + + efmCuPme OBJECT IDENTIFIER ::= { efmCuObjects 2 } + + -- Textual Conventions + + EfmProfileIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each PME configuration + profile in the managed EFMCu port. It is RECOMMENDED that + values are assigned contiguously starting from 1. The value + for each profile MUST remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization." + SYNTAX Unsigned32 (1..255) + + EfmProfileIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + EfmProfileIndex convention. The latter defines a greater than + zero value used to identify a PME profile in the managed EFMCu + port. This extension permits the additional value of zero. + The value of zero is object-specific and MUST therefore be + defined as part of the description of any object that uses + this syntax. + Examples of the usage of zero value might include situations + where the current operational profile is unknown." + SYNTAX Unsigned32 (0..255) + + EfmProfileIndexList ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d:" + + + + STATUS current + DESCRIPTION + "This textual convention represents a list of up to 6 + EfmProfileIndex values, any of which can be chosen for + configuration of a PME in a managed EFMCu port. + The EfmProfileIndex textual convention defines a greater than + zero value used to identify a PME profile. + The value of this object is a concatenation of zero or + more (up to 6) octets, where each octet contains an 8-bit + EfmProfileIndex value. + A zero-length octet string is object-specific and MUST + therefore be defined as part of the description of any object + that uses this syntax. Examples of the usage of a zero-length + value might include situations where an object using this + textual convention is irrelevant for a specific EFMCu port + type." + SYNTAX OCTET STRING (SIZE(0..6)) + + EfmTruthValueOrUnknown ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is an extension of the TruthValue + convention. The latter defines a boolean value with possible + values of true(1) and false(2). This extension permits the + additional value of unknown(0), which can be returned as the + result of a GET operation when an exact true or false value + of the object cannot be determined." + SYNTAX INTEGER { unknown(0), true(1), false(2) } + + -- Port Notifications Group + + efmCuPortNotifications OBJECT IDENTIFIER ::= { efmCuPort 0 } + + efmCuLowRateCrossing NOTIFICATION-TYPE + OBJECTS { + ifSpeed, + efmCuThreshLowRate + } + STATUS current + DESCRIPTION + "This notification indicates that the EFMCu port's data rate + has reached/dropped below or exceeded the low rate threshold, + specified by efmCuThreshLowRate. + + This notification MAY be sent for the -O subtype ports + (2BaseTL-O/10PassTS-O) while the port is Up, on the crossing + event in both directions: from normal (rate is above the + threshold) to low (rate equals the threshold or below it) and + + + + from low to normal. This notification is not applicable to + the -R subtypes. + + It is RECOMMENDED that a small debouncing period of 2.5 sec, + between the detection of the condition and the notification, + is implemented to prevent simultaneous LinkUp/LinkDown and + efmCuLowRateCrossing notifications to be sent. + + The adaptive nature of the EFMCu technology allows the port to + adapt itself to the changes in the copper environment, e.g., + an impulse noise, alien crosstalk, or a micro-interruption may + temporarily drop one or more PMEs in the aggregation group, + causing a rate degradation of the aggregated EFMCu link. + The dropped PMEs would then try to re-initialize, possibly at + a lower rate than before, adjusting the rate to provide + required target SNR margin. + + Generation of this notification is controlled by the + efmCuLowRateCrossingEnable object." + ::= { efmCuPortNotifications 1 } + + -- PCS Port group + + efmCuPortConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPortConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for Configuration of EFMCu 2BASE-TL/10PASS-TS (PCS) + Ports. Entries in this table MUST be maintained in a + persistent manner." + ::= { efmCuPort 1 } + + efmCuPortConfEntry OBJECT-TYPE + SYNTAX EfmCuPortConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu Port Configuration table. + Each entry represents an EFMCu port indexed by the ifIndex. + Note that an EFMCu PCS port runs on top of a single + or multiple PME port(s), which are also indexed by ifIndex." + INDEX { ifIndex } + ::= { efmCuPortConfTable 1 } + + EfmCuPortConfEntry ::= + SEQUENCE { + efmCuPAFAdminState INTEGER, + + + + efmCuPAFDiscoveryCode PhysAddress, + efmCuAdminProfile EfmProfileIndexList, + efmCuTargetDataRate Unsigned32, + efmCuTargetSnrMgn Unsigned32, + efmCuAdaptiveSpectra TruthValue, + efmCuThreshLowRate Unsigned32, + efmCuLowRateCrossingEnable TruthValue + } + + efmCuPAFAdminState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Administrative (desired) state of the PAF of the EFMCu port + (PCS). + When 'disabled', PME aggregation will not be performed by the + PCS. No more than a single PME can be assigned to this PCS in + this case. + When 'enabled', PAF will be performed by the PCS when the link + is Up, even on a single attached PME, if PAF is supported. + + PCS ports incapable of supporting PAF SHALL return a value of + 'disabled'. Attempts to 'enable' such ports SHALL be + rejected. + + A PAF 'enabled' port with multiple PMEs assigned cannot be + 'disabled'. Attempts to 'disable' such port SHALL be + rejected, until at most one PME is left assigned. + + Changing PAFAdminState is a traffic-disruptive operation and + as such SHALL be done when the link is Down. Attempts to + change this object SHALL be rejected if the link is Up or + Initializing. + + This object maps to the Clause 30 attribute aPAFAdminState. + + If a Clause 45 MDIO Interface to the PCS is present, then this + object maps to the PAF enable bit in the 10P/2B PCS control + register. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 61.2.2, 45.2.3.18.3" + ::= { efmCuPortConfEntry 1 } + + + + efmCuPAFDiscoveryCode OBJECT-TYPE + SYNTAX PhysAddress (SIZE(0|6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "PAF Discovery Code of the EFMCu port (PCS). + A unique 6-octet code used by the Discovery function, + when PAF is supported. + PCS ports incapable of supporting PAF SHALL return a + zero-length octet string on an attempt to read this object. + An attempt to write to this object SHALL be rejected for such + ports. + This object MUST be instantiated for the -O subtype PCS before + writing operations on the efmCuPAFRemoteDiscoveryCode + (Set_if_Clear and Clear_if_Same) are performed by PMEs + associated with the PCS. + The initial value of this object for -R subtype ports after + reset is all zeroes. For -R subtype ports, the value of this + object cannot be changed directly. This value may be changed + as a result of writing operation on the + efmCuPAFRemoteDiscoveryCode object of remote PME of -O + subtype, connected to one of the local PMEs associated with + the PCS. + + Discovery MUST be performed when the link is Down. + Attempts to change this object MUST be rejected (in case of + SNMP with the error inconsistentValue), if the link is Up or + Initializing. + + The PAF Discovery Code maps to the local Discovery code + variable in PAF (note that it does not have a corresponding + Clause 45 register)." + REFERENCE + "[802.3ah] 61.2.2.8.3, 61.2.2.8.4, 45.2.6.6.1, 45.2.6.8, + 61A.2" + ::= { efmCuPortConfEntry 2 } + + efmCuAdminProfile OBJECT-TYPE + SYNTAX EfmProfileIndexList + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired configuration profile(s), common for all PMEs in the + EFMCu port. This object is a list of pointers to entries in + either efmCuPme2BProfileTable or + efmCuPme10PProfileTable, depending on the current + operating SubType of the EFMCu port as indicated by + efmCuPortSide. + + + + The value of this object is a list of up to 6 indices of + profiles. If this list consists of a single profile index, + then all PMEs assigned to this EFMCu port SHALL be configured + according to the profile referenced by that index, unless it + is overwritten by a corresponding non-zero + efmCuPmeAdminProfile instance, which takes precedence over + efmCuAdminProfile. + A list consisting of more than one index allows each PME + in the port to be configured according to any profile + specified in the list. + By default, this object has a value of 0x01, referencing the + 1st entry in efmCuPme2BProfileTable or + efmCuPme10PProfileTable. + + This object is writable and readable for the -O subtype + (2BaseTL-O or 10PassTS-O) EFMCu ports. It is irrelevant for + the -R subtype (2BaseTL-R or 10PassTS-R) ports -- a + zero-length octet string SHALL be returned on an attempt to + read this object and an attempt to change this object MUST be + rejected in this case. + + Note that the current operational profile value is available + via the efmCuPmeOperProfile object. + + Any modification of this object MUST be performed when the + link is Down. Attempts to change this object MUST be + rejected, if the link is Up or Initializing. + Attempts to set this object to a list with a member value that + is not the value of the index for an active entry in the + corresponding profile table MUST be rejected. + + This object maps to the Clause 30 attribute aProfileSelect. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 30.11.2.1.6" + DEFVAL { '01'H } + ::= { efmCuPortConfEntry 3 } + + efmCuTargetDataRate OBJECT-TYPE + SYNTAX Unsigned32(1..100000|999999) + UNITS "Kbps" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired EFMCu port 'net' (as seen across MII) Data Rate in + Kbps, to be achieved during initialization, under spectral + restrictions placed on each PME via efmCuAdminProfile or + + + + efmCuPmeAdminProfile, with the desired SNR margin specified by + efmCuTargetSnrMgn. + In case of PAF, this object represents a sum of individual PME + data rates, modified to compensate for fragmentation and + 64/65-octet encapsulation overhead (e.g., target data rate of + 10 Mbps SHALL allow lossless transmission of a full-duplex + 10 Mbps Ethernet frame stream with minimal inter-frame gap). + + The value is limited above by 100 Mbps as this is the max + burst rate across MII for EFMCu ports. + + The value between 1 and 100000 indicates that the total data + rate (ifSpeed) of the EFMCu port after initialization SHALL be + equal to the target data rate or less, if the target data rate + cannot be achieved under spectral restrictions specified by + efmCuAdminProfile/efmCuPmeAdminProfile and with the desired + SNR margin. In case the copper environment allows a higher + total data rate to be achieved than that specified by the + target, the excess capability SHALL be either converted to + additional SNR margin or reclaimed by minimizing transmit + power as controlled by efmCuAdaptiveSpectra. + + The value of 999999 means that the target data rate is not + fixed and SHALL be set to the maximum attainable rate during + initialization (Best Effort), under specified spectral + restrictions and with the desired SNR margin. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + Changing of the Target Data Rate MUST be performed when the + link is Down. Attempts to change this object MUST be rejected + (in case of SNMP with the error inconsistentValue), if the + link is Up or Initializing. + + Note that the current Data Rate of the EFMCu port is + represented by the ifSpeed object of IF-MIB. + + This object MUST be maintained in a persistent manner." + ::= { efmCuPortConfEntry 4 } + + efmCuTargetSnrMgn OBJECT-TYPE + SYNTAX Unsigned32(0..21) + UNITS "dB" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired EFMCu port SNR margin to be achieved on all PMEs + + + + assigned to the port, during initialization. (The SNR margin + is the difference between the desired SNR and the actual SNR). + + Note that 802.3ah recommends using a default target SNR margin + of 5 dB for 2BASE-TL ports and 6 dB for 10PASS-TS ports in + order to achieve a mean Bit Error Rate (BER) of 10^-7 at the + PMA service interface. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + Changing of the target SNR margin MUST be performed when the + link is Down. Attempts to change this object MUST be rejected + (in case of SNMP with the error inconsistentValue), if the + link is Up or Initializing. + + Note that the current SNR margin of the PMEs comprising the + EFMCu port is represented by efmCuPmeSnrMgn. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 61.1.2" + ::= { efmCuPortConfEntry 5 } + + efmCuAdaptiveSpectra OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates how to utilize excess capacity when the copper + environment allows a higher total data rate to be achieved + than that specified by the efmCuTargetDataRate. + + A value of true(1) indicates that the excess capability SHALL + be reclaimed by minimizing transmit power, e.g., using higher + constellations and Power Back-Off, in order to reduce + interference to other copper pairs in the binder and the + adverse impact to link/system performance. + + A value of false(2) indicates that the excess capability SHALL + be converted to additional SNR margin and spread evenly across + all active PMEs assigned to the (PCS) port, to increase link + robustness. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + Changing of this object MUST be performed when the link is + + + + Down. Attempts to change this object MUST be rejected (in + case of SNMP with the error inconsistentValue), if the link + is Up or Initializing. + + This object MUST be maintained in a persistent manner." + ::= { efmCuPortConfEntry 6 } + + efmCuThreshLowRate OBJECT-TYPE + SYNTAX Unsigned32(1..100000) + UNITS "Kbps" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the EFMCu port low-rate crossing alarm + threshold. When the current value of ifSpeed for this port + reaches/drops below or exceeds this threshold, an + efmCuLowRateCrossing notification MAY be generated if enabled + by efmCuLowRateCrossingEnable. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + This object MUST be maintained in a persistent manner." + ::= { efmCuPortConfEntry 7 } + + efmCuLowRateCrossingEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuLowRateCrossing notifications should + be generated for this interface. + + A value of true(1) indicates that efmCuLowRateCrossing + notification is enabled. A value of false(2) indicates that + the notification is disabled. + + This object is read-write for the -O subtype EFMCu ports + (2BaseTL-O/10PassTS-O) and not available for the -R subtypes. + + This object MUST be maintained in a persistent manner." + ::= { efmCuPortConfEntry 8 } + + + efmCuPortCapabilityTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPortCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Table for Capabilities of EFMCu 2BASE-TL/10PASS-TS (PCS) + Ports. Entries in this table MUST be maintained in a + persistent manner" + ::= { efmCuPort 2 } + + efmCuPortCapabilityEntry OBJECT-TYPE + SYNTAX EfmCuPortCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu Port Capability table. + Each entry represents an EFMCu port indexed by the ifIndex. + Note that an EFMCu PCS port runs on top of a single + or multiple PME port(s), which are also indexed by ifIndex." + INDEX { ifIndex } + ::= { efmCuPortCapabilityTable 1 } + + EfmCuPortCapabilityEntry ::= + SEQUENCE { + efmCuPAFSupported TruthValue, + efmCuPeerPAFSupported EfmTruthValueOrUnknown, + efmCuPAFCapacity Unsigned32, + efmCuPeerPAFCapacity Unsigned32 + } + + efmCuPAFSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PME Aggregation Function (PAF) capability of the EFMCu port + (PCS). + This object has a value of true(1) when the PCS can perform + PME aggregation on the available PMEs. + Ports incapable of PAF SHALL return a value of false(2). + + This object maps to the Clause 30 attribute aPAFSupported. + + If a Clause 45 MDIO Interface to the PCS is present, + then this object maps to the PAF available bit in the + 10P/2B capability register." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.4, 45.2.3.17.1" + ::= { efmCuPortCapabilityEntry 1 } + + efmCuPeerPAFSupported OBJECT-TYPE + SYNTAX EfmTruthValueOrUnknown + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PME Aggregation Function (PAF) capability of the EFMCu port + (PCS) link partner. + This object has a value of true(1) when the remote PCS can + perform PME aggregation on its available PMEs. + Ports whose peers are incapable of PAF SHALL return a value + of false(2). + Ports whose peers cannot be reached because of the link + state SHALL return a value of unknown(0). + + This object maps to the Clause 30 attribute + aRemotePAFSupported. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the Remote PAF supported bit in the + 10P/2B capability register." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.9, 45.2.3.17.2" + ::= { efmCuPortCapabilityEntry 2 } + + efmCuPAFCapacity OBJECT-TYPE + SYNTAX Unsigned32 (1..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PMEs that can be aggregated by the local PAF. + The number of PMEs currently assigned to a particular + EFMCu port (efmCuNumPMEs) is never greater than + efmCuPAFCapacity. + + This object maps to the Clause 30 attribute + aLocalPAFCapacity." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.6" + ::= { efmCuPortCapabilityEntry 3 } + + efmCuPeerPAFCapacity OBJECT-TYPE + SYNTAX Unsigned32 (0|1..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of PMEs that can be aggregated by the PAF of the peer + PHY (PCS port). + A value of 0 is returned when peer PAF capacity is unknown + (peer cannot be reached). + + + + + This object maps to the Clause 30 attribute + aRemotePAFCapacity." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.10" + ::= { efmCuPortCapabilityEntry 4 } + + efmCuPortStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPortStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides overall status information of EFMCu + 2BASE-TL/10PASS-TS ports, complementing the generic status + information from the ifTable of IF-MIB and ifMauTable of + MAU-MIB. Additional status information about connected PMEs + is available from the efmCuPmeStatusTable. + + This table contains live data from the equipment. As such, + it is NOT persistent." + ::= { efmCuPort 3 } + + efmCuPortStatusEntry OBJECT-TYPE + SYNTAX EfmCuPortStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu Port Status table. + Each entry represents an EFMCu port indexed by the ifIndex. + Note that an EFMCu PCS port runs on top of a single + or multiple PME port(s), which are also indexed by ifIndex." + INDEX { ifIndex } + ::= { efmCuPortStatusTable 1 } + + EfmCuPortStatusEntry ::= + SEQUENCE { + efmCuFltStatus BITS, + efmCuPortSide INTEGER, + efmCuNumPMEs Unsigned32, + efmCuPAFInErrors Counter32, + efmCuPAFInSmallFragments Counter32, + efmCuPAFInLargeFragments Counter32, + efmCuPAFInBadFragments Counter32, + efmCuPAFInLostFragments Counter32, + efmCuPAFInLostStarts Counter32, + efmCuPAFInLostEnds Counter32, + efmCuPAFInOverflows Counter32 + } + + + + + efmCuFltStatus OBJECT-TYPE + SYNTAX BITS { + noPeer(0), + peerPowerLoss(1), + pmeSubTypeMismatch(2), + lowRate(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "EFMCu (PCS) port Fault Status. This is a bitmap of possible + conditions. The various bit positions are: + noPeer - the peer PHY cannot be reached (e.g., + no PMEs attached, all PMEs are Down, + etc.). More info is available in + efmCuPmeFltStatus. + peerPowerLoss - the peer PHY has indicated impending + unit failure due to loss of local + power ('Dying Gasp'). + pmeSubTypeMismatch - local PMEs in the aggregation group + are not of the same subtype, e.g., + some PMEs in the local device are -O + while others are -R subtype. + lowRate - ifSpeed of the port reached or dropped + below efmCuThreshLowRate. + + This object is intended to supplement the ifOperStatus object + in IF-MIB and ifMauMediaAvailable in MAU-MIB. + + Additional information is available via the efmCuPmeFltStatus + object for each PME in the aggregation group (single PME if + PAF is disabled)." + REFERENCE + "IF-MIB, ifOperStatus; MAU-MIB, ifMauMediaAvailable; + efmCuPmeFltStatus" + ::= { efmCuPortStatusEntry 1 } + + efmCuPortSide OBJECT-TYPE + SYNTAX INTEGER { + subscriber(1), + office(2), + unknown(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "EFM port mode of operation (subtype). + The value of 'subscriber' indicates that the port is + + + + designated as '-R' subtype (all PMEs assigned to this port are + of subtype '-R'). + The value of the 'office' indicates that the port is + designated as '-O' subtype (all PMEs assigned to this port are + of subtype '-O'). + The value of 'unknown' indicates that the port has no assigned + PMEs yet or that the assigned PMEs are not of the same side + (subTypePMEMismatch). + + This object partially maps to the Clause 30 attribute + aPhyEnd." + REFERENCE + "[802.3ah] 61.1, 30.11.1.1.2" + ::= { efmCuPortStatusEntry 2 } + + efmCuNumPMEs OBJECT-TYPE + SYNTAX Unsigned32 (0..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PMEs that is currently aggregated by the local + PAF (assigned to the EFMCu port using the ifStackTable). + This number is never greater than efmCuPAFCapacity. + + This object SHALL be automatically incremented or decremented + when a PME is added or deleted to/from the EFMCu port using + the ifStackTable." + REFERENCE + "[802.3ah] 61.2.2, 30.11.1.1.6" + ::= { efmCuPortStatusEntry 3 } + + efmCuPAFInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments that have been received across the + gamma interface with RxErr asserted and discarded. + This read-only counter is inactive (not incremented) when the + PAF is unsupported or disabled. Upon disabling the PAF, the + counter retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF RX error register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + + + + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.21" + ::= { efmCuPortStatusEntry 4 } + + efmCuPAFInSmallFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments smaller than minFragmentSize + (64 bytes) that have been received across the gamma interface + and discarded. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF small fragments register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.22" + ::= { efmCuPortStatusEntry 5 } + + efmCuPAFInLargeFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments larger than maxFragmentSize + (512 bytes) that have been received across the gamma interface + and discarded. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF large fragments register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + + + + "[802.3ah] 45.2.3.23" + ::= { efmCuPortStatusEntry 6 } + + efmCuPAFInBadFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments that do not fit into the sequence + expected by the frame assembly function and that have been + received across the gamma interface and discarded (the + frame buffer is flushed to the next valid frame start). + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF bad fragments register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.25" + ::= { efmCuPortStatusEntry 7 } + + efmCuPAFInLostFragments OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of gaps in the sequence of fragments that have + been received across the gamma interface (the frame buffer is + flushed to the next valid frame start, when fragment/fragments + expected by the frame assembly function is/are not received). + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF lost fragment register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + + + + "[802.3ah] 45.2.3.26" + ::= { efmCuPortStatusEntry 8 } + + efmCuPAFInLostStarts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of missing StartOfPacket indicators expected by + the frame assembly function. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF lost start of fragment + register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.27" + ::= { efmCuPortStatusEntry 9 } + + efmCuPAFInLostEnds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of missing EndOfPacket indicators expected by the + frame assembly function. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF lost start of fragment + register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.28" + ::= { efmCuPortStatusEntry 10 } + + + + efmCuPAFInOverflows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of fragments, received across the gamma interface + and discarded, which would have caused the frame assembly + buffer to overflow. + This read-only counter is inactive when the PAF is + unsupported or disabled. Upon disabling the PAF, the counter + retains its previous value. + + If a Clause 45 MDIO Interface to the PCS is present, then + this object maps to the 10P/2B PAF overflow register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.3.24" + ::= { efmCuPortStatusEntry 11 } + + -- PME Notifications Group + + efmCuPmeNotifications OBJECT IDENTIFIER ::= { efmCuPme 0 } + + efmCuPmeLineAtnCrossing NOTIFICATION-TYPE + OBJECTS { + efmCuPmeLineAtn, + efmCuPmeThreshLineAtn + } + STATUS current + DESCRIPTION + "This notification indicates that the loop attenuation + threshold (as per the efmCuPmeThreshLineAtn + value) has been reached/exceeded for the 2BASE-TL/10PASS-TS + PME. This notification MAY be sent on the crossing event in + both directions: from normal to exceeded and from exceeded + to normal. + + It is RECOMMENDED that a small debouncing period of 2.5 sec, + between the detection of the condition and the notification, + is implemented to prevent intermittent notifications from + being sent. + + Generation of this notification is controlled by the + efmCuPmeLineAtnCrossingEnable object." + + + + ::= { efmCuPmeNotifications 1 } + + efmCuPmeSnrMgnCrossing NOTIFICATION-TYPE + OBJECTS { + efmCuPmeSnrMgn, + efmCuPmeThreshSnrMgn + } + STATUS current + DESCRIPTION + "This notification indicates that the SNR margin threshold + (as per the efmCuPmeThreshSnrMgn value) has been + reached/exceeded for the 2BASE-TL/10PASS-TS PME. + This notification MAY be sent on the crossing event in + both directions: from normal to exceeded and from exceeded + to normal. + + It is RECOMMENDED that a small debouncing period of 2.5 sec, + between the detection of the condition and the notification, + is implemented to prevent intermittent notifications from + being sent. + + Generation of this notification is controlled by the + efmCuPmeSnrMgnCrossingEnable object." + ::= { efmCuPmeNotifications 2 } + + efmCuPmeDeviceFault NOTIFICATION-TYPE + OBJECTS { + efmCuPmeFltStatus + } + STATUS current + DESCRIPTION + "This notification indicates that a fault in the PME has been + detected by a vendor-specific diagnostic or a self-test. + + Generation of this notification is controlled by the + efmCuPmeDeviceFaultEnable object." + ::= { efmCuPmeNotifications 3 } + + efmCuPmeConfigInitFailure NOTIFICATION-TYPE + OBJECTS { + efmCuPmeFltStatus, + efmCuAdminProfile, + efmCuPmeAdminProfile + } + STATUS current + DESCRIPTION + "This notification indicates that PME initialization has + failed, due to inability of the PME link to achieve the + + + + requested configuration profile. + + Generation of this notification is controlled by the + efmCuPmeConfigInitFailEnable object." + ::= { efmCuPmeNotifications 4 } + + efmCuPmeProtocolInitFailure NOTIFICATION-TYPE + OBJECTS { + efmCuPmeFltStatus, + efmCuPmeOperSubType + } + STATUS current + DESCRIPTION + "This notification indicates that the peer PME was using + an incompatible protocol during initialization. + + Generation of this notification is controlled by the + efmCuPmeProtocolInitFailEnable object." + ::= { efmCuPmeNotifications 5 } + + -- The PME group + + efmCuPmeConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPmeConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for Configuration of common aspects for EFMCu + 2BASE-TL/10PASS-TS PME ports (modems). Configuration of + aspects specific to 2BASE-TL or 10PASS-TS PME types is + represented in efmCuPme2BConfTable and efmCuPme10PConfTable, + respectively. + + Entries in this table MUST be maintained in a persistent + manner." + ::= { efmCuPme 1 } + + efmCuPmeConfEntry OBJECT-TYPE + SYNTAX EfmCuPmeConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu PME Configuration table. + Each entry represents common aspects of an EFMCu PME port + indexed by the ifIndex. Note that an EFMCu PME port can be + stacked below a single PCS port, also indexed by ifIndex, + possibly together with other PME ports if PAF is enabled." + INDEX { ifIndex } + + + + ::= { efmCuPmeConfTable 1 } + + EfmCuPmeConfEntry ::= + SEQUENCE { + efmCuPmeAdminSubType INTEGER, + efmCuPmeAdminProfile EfmProfileIndexOrZero, + efmCuPAFRemoteDiscoveryCode PhysAddress, + efmCuPmeThreshLineAtn Integer32, + efmCuPmeThreshSnrMgn Integer32, + efmCuPmeLineAtnCrossingEnable TruthValue, + efmCuPmeSnrMgnCrossingEnable TruthValue, + efmCuPmeDeviceFaultEnable TruthValue, + efmCuPmeConfigInitFailEnable TruthValue, + efmCuPmeProtocolInitFailEnable TruthValue + } + + efmCuPmeAdminSubType OBJECT-TYPE + SYNTAX INTEGER { + ieee2BaseTLO(1), + ieee2BaseTLR(2), + ieee10PassTSO(3), + ieee10PassTSR(4), + ieee2BaseTLor10PassTSR(5), + ieee2BaseTLor10PassTSO(6), + ieee10PassTSor2BaseTLO(7) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Administrative (desired) subtype of the PME. + Possible values are: + ieee2BaseTLO - PME SHALL operate as 2BaseTL-O + ieee2BaseTLR - PME SHALL operate as 2BaseTL-R + ieee10PassTSO - PME SHALL operate as 10PassTS-O + ieee10PassTSR - PME SHALL operate as 10PassTS-R + ieee2BaseTLor10PassTSR - PME SHALL operate as 2BaseTL-R or + 10PassTS-R. The actual value will + be set by the -O link partner + during initialization (handshake). + ieee2BaseTLor10PassTSO - PME SHALL operate as 2BaseTL-O + (preferred) or 10PassTS-O. The + actual value will be set during + initialization depending on the -R + link partner capability (i.e., if + -R is incapable of the preferred + 2BaseTL mode, 10PassTS will be + used). + ieee10PassTSor2BaseTLO - PME SHALL operate as 10PassTS-O + + + + (preferred) or 2BaseTL-O. The + actual value will be set during + initialization depending on the -R + link partner capability (i.e., if + -R is incapable of the preferred + 10PassTS mode, 2BaseTL will be + used). + + Changing efmCuPmeAdminSubType is a traffic-disruptive + operation and as such SHALL be done when the link is Down. + Attempts to change this object SHALL be rejected if the link + is Up or Initializing. + Attempts to change this object to an unsupported subtype + (see efmCuPmeSubTypesSupported) SHALL be rejected. + + The current operational subtype is indicated by the + efmCuPmeOperSubType variable. + + If a Clause 45 MDIO Interface to the PMA/PMD is present, then + this object combines values of the Port subtype select bits + and the PMA/PMD type selection bits in the 10P/2B PMA/PMD + control register." + REFERENCE + "[802.3ah] 61.1, 45.2.1.11.4, 45.2.1.11.7" + ::= { efmCuPmeConfEntry 1 } + + efmCuPmeAdminProfile OBJECT-TYPE + SYNTAX EfmProfileIndexOrZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired PME configuration profile. This object is a pointer + to an entry in either the efmCuPme2BProfileTable or the + efmCuPme10PProfileTable, depending on the current operating + SubType of the PME. The value of this object is the index of + the referenced profile. + The value of zero (default) indicates that the PME is + configured via the efmCuAdminProfile object for the PCS port + to which this PME is assigned. That is, the profile + referenced by efmCuPmeAdminProfile takes precedence + over the profile(s) referenced by efmCuAdminProfile. + + This object is writable and readable for the CO subtype PMEs + (2BaseTL-O or 10PassTS-O). It is irrelevant for the CPE + subtype (2BaseTL-R or 10PassTS-R) -- a zero value SHALL be + returned on an attempt to read this object and any attempt + to change this object MUST be rejected in this case. + + + + + Note that the current operational profile value is available + via efmCuPmeOperProfile object. + + Any modification of this object MUST be performed when the + link is Down. Attempts to change this object MUST be + rejected, if the link is Up or Initializing. + + Attempts to set this object to a value that is not the value + of the index for an active entry in the corresponding profile + table MUST be rejected. + + This object maps to the Clause 30 attribute aProfileSelect. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 30.11.2.1.6" + DEFVAL { 0 } + ::= { efmCuPmeConfEntry 2 } + + efmCuPAFRemoteDiscoveryCode OBJECT-TYPE + SYNTAX PhysAddress (SIZE(0|6)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "PAF Remote Discovery Code of the PME port at the CO. + The 6-octet Discovery Code of the peer PCS connected via + the PME. + Reading this object results in a Discovery Get operation. + Setting this object to all zeroes results in a Discovery + Clear_if_Same operation (the value of efmCuPAFDiscoveryCode + at the peer PCS SHALL be the same as efmCuPAFDiscoveryCode of + the local PCS associated with the PME for the operation to + succeed). + Writing a non-zero value to this object results in a + Discovery Set_if_Clear operation. + A zero-length octet string SHALL be returned on an attempt to + read this object when PAF aggregation is not enabled. + + This object is irrelevant in CPE port (-R) subtypes: in this + case, a zero-length octet string SHALL be returned on an + attempt to read this object; writing to this object SHALL + be rejected. + + Discovery MUST be performed when the link is Down. + Attempts to change this object MUST be rejected (in case of + SNMP with the error inconsistentValue), if the link is Up or + Initializing. + + + + + If a Clause 45 MDIO Interface to the PMA/PMD is present, then + this object is a function of 10P/2B aggregation discovery + control register, Discovery operation result bits in 10P/2B + aggregation and discovery status register and + 10P/2B aggregation discovery code register." + REFERENCE + "[802.3ah] 61.2.2.8.4, 45.2.6.6-45.2.6.8" + ::= { efmCuPmeConfEntry 3 } + + efmCuPmeThreshLineAtn OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired Line Attenuation threshold for the 2B/10P PME. + This object configures the line attenuation alarm threshold. + When the current value of Line Attenuation reaches or + exceeds this threshold, an efmCuPmeLineAtnCrossing + notification MAY be generated, if enabled by + efmCuPmeLineAtnCrossingEnable. + + This object is writable for the CO subtype PMEs (-O). + It is read-only for the CPE subtype (-R). + + Changing of the Line Attenuation threshold MUST be performed + when the link is Down. Attempts to change this object MUST be + rejected (in case of SNMP with the error inconsistentValue), + if the link is Up or Initializing. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the loop attenuation threshold bits in + the 2B PMD line quality thresholds register." + REFERENCE + "[802.3ah] 45.2.1.36" + ::= { efmCuPmeConfEntry 4 } + + efmCuPmeThreshSnrMgn OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Desired SNR margin threshold for the 2B/10P PME. + This object configures the SNR margin alarm threshold. + When the current value of SNR margin reaches or exceeds this + threshold, an efmCuPmeSnrMgnCrossing notification MAY be + generated, if enabled by efmCuPmeSnrMgnCrossingEnable. + + + + This object is writable for the CO subtype PMEs + (2BaseTL-O/10PassTS-O). It is read-only for the CPE subtype + (2BaseTL-R/10PassTS-R). + + Changing of the SNR margin threshold MUST be performed when + the link is Down. Attempts to change this object MUST be + rejected (in case of SNMP with the error inconsistentValue), + if the link is Up or Initializing. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the SNR margin threshold bits in the 2B PMD + line quality thresholds register." + REFERENCE + "[802.3ah] 45.2.1.36" + ::= { efmCuPmeConfEntry 5 } + + efmCuPmeLineAtnCrossingEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeLineAtnCrossing notifications + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeLineAtnCrossing + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 6 } + + efmCuPmeSnrMgnCrossingEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeSnrMgnCrossing notifications + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeSnrMgnCrossing + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 7 } + + efmCuPmeDeviceFaultEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeDeviceFault notifications + + + + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeDeviceFault + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 8 } + + efmCuPmeConfigInitFailEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeConfigInitFailure notifications + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeConfigInitFailure + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 9 } + + efmCuPmeProtocolInitFailEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether efmCuPmeProtocolInitFailure notifications + should be generated for this interface. + + A value of true(1) indicates that efmCuPmeProtocolInitFailure + notification is enabled. A value of false(2) indicates that + the notification is disabled." + ::= { efmCuPmeConfEntry 10 } + + + efmCuPmeCapabilityTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPmeCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table for the configuration of common aspects for EFMCu + 2BASE-TL/10PASS-TS PME ports (modems). The configuration of + aspects specific to 2BASE-TL or 10PASS-TS PME types is + represented in the efmCuPme2BConfTable and the + efmCuPme10PConfTable, respectively. + + Entries in this table MUST be maintained in a persistent + manner." + ::= { efmCuPme 2 } + + + + efmCuPmeCapabilityEntry OBJECT-TYPE + SYNTAX EfmCuPmeCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu PME Capability table. + Each entry represents common aspects of an EFMCu PME port + indexed by the ifIndex. Note that an EFMCu PME port can be + stacked below a single PCS port, also indexed by ifIndex, + possibly together with other PME ports if PAF is enabled." + INDEX { ifIndex } + ::= { efmCuPmeCapabilityTable 1 } + + EfmCuPmeCapabilityEntry ::= + SEQUENCE { + efmCuPmeSubTypesSupported BITS + } + + efmCuPmeSubTypesSupported OBJECT-TYPE + SYNTAX BITS { + ieee2BaseTLO(0), + ieee2BaseTLR(1), + ieee10PassTSO(2), + ieee10PassTSR(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PME supported subtypes. This is a bitmap of possible + subtypes. The various bit positions are: + ieee2BaseTLO - PME is capable of operating as 2BaseTL-O + ieee2BaseTLR - PME is capable of operating as 2BaseTL-R + ieee10PassTSO - PME is capable of operating as 10PassTS-O + ieee10PassTSR - PME is capable of operating as 10PassTS-R + + The desired mode of operation is determined by + efmCuPmeAdminSubType, while efmCuPmeOperSubType reflects the + current operating mode. + + If a Clause 45 MDIO Interface to the PCS is present, then this + object combines the 10PASS-TS capable and 2BASE-TL capable + bits in the 10P/2B PMA/PMD speed ability register and the + CO supported and CPE supported bits in the 10P/2B PMA/PMD + status register." + REFERENCE + "[802.3ah] 61.1, 45.2.1.4.1, 45.2.1.4.2, 45.2.1.12.2, + 45.2.1.12.3" + ::= { efmCuPmeCapabilityEntry 1 } + + + + efmCuPmeStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPmeStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides common status information of EFMCu + 2BASE-TL/10PASS-TS PME ports. Status information specific + to 10PASS-TS PME is represented in efmCuPme10PStatusTable. + + This table contains live data from the equipment. As such, + it is NOT persistent." + ::= { efmCuPme 3 } + + efmCuPmeStatusEntry OBJECT-TYPE + SYNTAX EfmCuPmeStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu PME Status table. + Each entry represents common aspects of an EFMCu PME port + indexed by the ifIndex. Note that an EFMCu PME port can be + stacked below a single PCS port, also indexed by ifIndex, + possibly together with other PME ports if PAF is enabled." + INDEX { ifIndex } + ::= { efmCuPmeStatusTable 1 } + + EfmCuPmeStatusEntry ::= + SEQUENCE { + efmCuPmeOperStatus INTEGER, + efmCuPmeFltStatus BITS, + efmCuPmeOperSubType INTEGER, + efmCuPmeOperProfile EfmProfileIndexOrZero, + efmCuPmeSnrMgn Integer32, + efmCuPmePeerSnrMgn Integer32, + efmCuPmeLineAtn Integer32, + efmCuPmePeerLineAtn Integer32, + efmCuPmeEquivalentLength Unsigned32, + efmCuPmeTCCodingErrors Counter32, + efmCuPmeTCCrcErrors Counter32 + } + + efmCuPmeOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + downNotReady(2), + downReady(3), + init(4) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current PME link Operational Status. Possible values are: + up(1) - The link is Up and ready to pass + 64/65-octet encoded frames or fragments. + downNotReady(2) - The link is Down and the PME does not + detect Handshake tones from its peer. + This value may indicate a possible + problem with the peer PME. + downReady(3) - The link is Down and the PME detects + Handshake tones from its peer. + init(4) - The link is Initializing, as a result of + ifAdminStatus being set to 'up' for a + particular PME or a PCS to which the PME + is connected. + + This object is intended to supplement the Down(2) state of + ifOperStatus. + + This object partially maps to the Clause 30 attribute + aPMEStatus. + + If a Clause 45 MDIO Interface to the PME is present, then this + object partially maps to PMA/PMD link status bits in 10P/2B + PMA/PMD status register." + REFERENCE + "[802.3ah] 30.11.2.1.3, 45.2.1.12.4" + ::= { efmCuPmeStatusEntry 1 } + + efmCuPmeFltStatus OBJECT-TYPE + SYNTAX BITS { + lossOfFraming(0), + snrMgnDefect(1), + lineAtnDefect(2), + deviceFault(3), + configInitFailure(4), + protocolInitFailure(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current/Last PME link Fault Status. This is a bitmap of + possible conditions. The various bit positions are: + + lossOfFraming - Loss of Framing for 10P or + Loss of Sync word for 2B PMD or + Loss of 64/65-octet framing. + + + + snrMgnDefect - SNR margin dropped below the + threshold. + lineAtnDefect - Line Attenuation exceeds the + threshold. + deviceFault - Indicates a vendor-dependent + diagnostic or self-test fault + has been detected. + configInitFailure - Configuration initialization failure, + due to inability of the PME link to + support the configuration profile, + requested during initialization. + protocolInitFailure - Protocol initialization failure, due + to an incompatible protocol used by + the peer PME during init (that could + happen if a peer PMD is a regular + G.SDHSL/VDSL modem instead of a + 2BASE-TL/10PASS-TS PME). + + This object is intended to supplement ifOperStatus in IF-MIB. + + This object holds information about the last fault. + efmCuPmeFltStatus is cleared by the device restart. + In addition, lossOfFraming, configInitFailure, and + protocolInitFailure are cleared by PME init; + deviceFault is cleared by successful diagnostics/test; + snrMgnDefect and lineAtnDefect are cleared by SNR margin + and Line attenuation, respectively, returning to norm and by + PME init. + + This object partially maps to the Clause 30 attribute + aPMEStatus. + + If a Clause 45 MDIO Interface to the PME is present, then this + object consolidates information from various PMA/PMD + registers, namely: Fault bit in PMA/PMD status 1 register, + 10P/2B PMA/PMD link loss register, + 10P outgoing indicator bits status register, + 10P incoming indicator bits status register, + 2B state defects register." + REFERENCE + "[802.3ah] 30.11.2.1.3, 45.2.1.2.1, 45.2.1.38, + 45.2.1.39, 45.2.1.54" + ::= { efmCuPmeStatusEntry 2 } + + efmCuPmeOperSubType OBJECT-TYPE + SYNTAX INTEGER { + ieee2BaseTLO(1), + ieee2BaseTLR(2), + + + + ieee10PassTSO(3), + ieee10PassTSR(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current operational subtype of the PME. + Possible values are: + ieee2BaseTLO - PME operates as 2BaseTL-O + ieee2BaseTLR - PME operates as 2BaseTL-R + ieee10PassTSO - PME operates as 10PassTS-O + ieee10PassTSR - PME operates as 10PassTS-R + + The desired operational subtype of the PME can be configured + via the efmCuPmeAdminSubType variable. + + If a Clause 45 MDIO Interface to the PMA/PMD is present, then + this object combines values of the Port subtype select + bits, the PMA/PMD type selection bits in the 10P/2B + PMA/PMD control register, and the PMA/PMD link status bits in + the 10P/2B PMA/PMD status register." + REFERENCE + "[802.3ah] 61.1, 45.2.1.11.4, 45.2.1.11.7, 45.2.1.12.4" + ::= { efmCuPmeStatusEntry 3 } + + efmCuPmeOperProfile OBJECT-TYPE + SYNTAX EfmProfileIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PME current operating profile. This object is a pointer to + an entry in either the efmCuPme2BProfileTable or the + efmCuPme10PProfileTable, depending on the current operating + SubType of the PME as indicated by efmCuPmeOperSubType. + Note that a profile entry to which efmCuPmeOperProfile is + pointing can be created automatically to reflect achieved + parameters in adaptive (not fixed) initialization, + i.e., values of efmCuPmeOperProfile and efmCuAdminProfile or + efmCuPmeAdminProfile may differ. + The value of zero indicates that the PME is Down or + Initializing. + + This object partially maps to the aOperatingProfile attribute + in Clause 30." + REFERENCE + "[802.3ah] 30.11.2.1.7" + ::= { efmCuPmeStatusEntry 4 } + + + + + efmCuPmeSnrMgn OBJECT-TYPE + SYNTAX Integer32(-127..128|65535) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current Signal to Noise Ratio (SNR) margin with respect + to the received signal as perceived by the local PME. + The value of 65535 is returned when the PME is Down or + Initializing. + + This object maps to the aPMESNRMgn attribute in Clause 30. + + If a Clause 45 MDIO Interface is present, then this + object maps to the 10P/2B RX SNR margin register." + REFERENCE + "[802.3ah] 30.11.2.1.4, 45.2.1.16" + ::= { efmCuPmeStatusEntry 5 } + + efmCuPmePeerSnrMgn OBJECT-TYPE + SYNTAX Integer32(-127..128|65535) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current SNR margin in dB with respect to the received + signal, as perceived by the remote (link partner) PME. + The value of 65535 is returned when the PME is Down or + Initializing. + + This object is irrelevant for the -R PME subtypes. The value + of 65535 SHALL be returned in this case. + + If a Clause 45 MDIO Interface is present, then this + object maps to the 10P/2B link partner RX SNR margin + register." + REFERENCE + "[802.3ah] 45.2.1.17" + ::= { efmCuPmeStatusEntry 6} + + efmCuPmeLineAtn OBJECT-TYPE + SYNTAX Integer32(-127..128|65535) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current Line Attenuation in dB as perceived by the local + PME. + + + + The value of 65535 is returned when the PME is Down or + Initializing. + + If a Clause 45 MDIO Interface is present, then this + object maps to the Line Attenuation register." + REFERENCE + "[802.3ah] 45.2.1.18" + ::= { efmCuPmeStatusEntry 7 } + + efmCuPmePeerLineAtn OBJECT-TYPE + SYNTAX Integer32(-127..128|65535) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current Line Attenuation in dB as perceived by the remote + (link partner) PME. + The value of 65535 is returned when the PME is Down or + Initializing. + + This object is irrelevant for the -R PME subtypes. The value + of 65535 SHALL be returned in this case. + + If a Clause 45 MDIO Interface is present, then this + object maps to the 20P/2B link partner Line Attenuation + register." + REFERENCE + "[802.3ah] 45.2.1.19" + ::= { efmCuPmeStatusEntry 8 } + + efmCuPmeEquivalentLength OBJECT-TYPE + SYNTAX Unsigned32(0..8192|65535) + UNITS "m" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the equivalent loop's physical length in + meters, as perceived by the PME after the link is established. + An equivalent loop is a hypothetical 26AWG (0.4mm) loop with a + perfect square root attenuation characteristic, without any + bridged taps. + The value of 65535 is returned if the link is Down or + Initializing or the PME is unable to estimate the equivalent + length. + + For a 10BASE-TL PME, if a Clause 45 MDIO Interface to the PME + is present, then this object maps to the 10P Electrical Length + register." + + + + REFERENCE + "[802.3ah] 45.2.1.21" + ::= { efmCuPmeStatusEntry 9 } + + efmCuPmeTCCodingErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of 64/65-octet encapsulation errors. This counter + is incremented for each 64/65-octet encapsulation error + detected by the 64/65-octet receive function. + + This object maps to aTCCodingViolations attribute in + Clause 30. + + If a Clause 45 MDIO Interface to the PME TC is present, then + this object maps to the TC coding violations register + (see 45.2.6.12). + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + "[802.3ah] 61.3.3.1, 30.11.2.1.5, 45.2.6.12" + ::= { efmCuPmeStatusEntry 10 } + + efmCuPmeTCCrcErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TC-CRC errors. This counter is incremented for + each TC-CRC error detected by the 64/65-octet receive function + (see 61.3.3.3 and Figure 61-19). + + This object maps to aTCCRCErrors attribute in + Clause 30. + + If a Clause 45 MDIO Interface to the PME TC is present, then + this object maps to the TC CRC error register + (see 45.2.6.11). + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + + + + REFERENCE + "[802.3ah] 61.3.3.3, 30.11.2.1.10, 45.2.6.11" + ::= { efmCuPmeStatusEntry 11 } + + -- 2BASE-TL specific PME group + + efmCuPme2B OBJECT IDENTIFIER ::= { efmCuPme 5 } + + efmCuPme2BProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme2BProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports definitions of administrative and + operating profiles for 2BASE-TL PMEs. + The first 14 entries in this table SHALL always be defined as + follows (see 802.3ah Annex 63A): + -------+-------+-------+-----+------+-------------+----------- + Profile MinRate MaxRate Power Region Constellation Comment + index (Kbps) (Kbps) (dBm) + -------+-------+-------+-----+------+-------------+----------- + 1 5696 5696 13.5 1 32-TCPAM default + 2 3072 3072 13.5 1 32-TCPAM + 3 2048 2048 13.5 1 16-TCPAM + 4 1024 1024 13.5 1 16-TCPAM + 5 704 704 13.5 1 16-TCPAM + 6 512 512 13.5 1 16-TCPAM + 7 5696 5696 14.5 2 32-TCPAM + 8 3072 3072 14.5 2 32-TCPAM + 9 2048 2048 14.5 2 16-TCPAM + 10 1024 1024 13.5 2 16-TCPAM + 11 704 704 13.5 2 16-TCPAM + 12 512 512 13.5 2 16-TCPAM + 13 192 5696 0 1 0 best effort + 14 192 5696 0 2 0 best effort + -------+-------+-------+-----+------+-------------+----------- + + These default entries SHALL be created during agent + initialization and MUST NOT be deleted. + + Entries following the first 14 can be dynamically created and + deleted to provide custom administrative (configuration) + profiles and automatic operating profiles. + + This table MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] Annex 63A, 30.11.2.1.6" + ::= { efmCuPme2B 2 } + + + + efmCuPme2BProfileEntry OBJECT-TYPE + SYNTAX EfmCuPme2BProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to a single 2BASE-TL PME profile. + Each profile contains a set of parameters, used either for + configuration or representation of a 2BASE-TL PME. + In case a particular profile is referenced via the + efmCuPmeAdminProfile object (or efmCuAdminProfile if + efmCuPmeAdminProfile is zero), it represents the desired + parameters for the 2BaseTL-O PME initialization. + If a profile is referenced via an efmCuPmeOperProfile object, + it represents the current operating parameters of an + operational PME. + + Profiles may be created/deleted using the row creation/ + deletion mechanism via efmCuPme2BProfileRowStatus. If an + active entry is referenced, the entry MUST remain 'active' + until all references are removed. + Default entries MUST NOT be removed." + INDEX { efmCuPme2BProfileIndex } + ::= { efmCuPme2BProfileTable 1 } + + EfmCuPme2BProfileEntry ::= + SEQUENCE { + efmCuPme2BProfileIndex EfmProfileIndex, + efmCuPme2BProfileDescr SnmpAdminString, + efmCuPme2BRegion INTEGER, + efmCuPme2BsMode EfmProfileIndexOrZero, + efmCuPme2BMinDataRate Unsigned32, + efmCuPme2BMaxDataRate Unsigned32, + efmCuPme2BPower Unsigned32, + efmCuPme2BConstellation INTEGER, + efmCuPme2BProfileRowStatus RowStatus + } + + efmCuPme2BProfileIndex OBJECT-TYPE + SYNTAX EfmProfileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "2BASE-TL PME profile index. + This object is the unique index associated with this profile. + Entries in this table are referenced via efmCuAdminProfile or + efmCuPmeAdminProfile objects." + ::= { efmCuPme2BProfileEntry 1 } + + + + + efmCuPme2BProfileDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual string containing information about a 2BASE-TL PME + profile. The string may include information about the data + rate and spectral limitations of this particular profile." + ::= { efmCuPme2BProfileEntry 2 } + + efmCuPme2BRegion OBJECT-TYPE + SYNTAX INTEGER { + region1(1), + region2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Regional settings for a 2BASE-TL PME, as specified in the + relevant Regional Annex of [G.991.2]. + Regional settings specify the Power Spectral Density (PSD) + mask and the Power Back-Off (PBO) values, and place + limitations on the max allowed data rate, power, and + constellation. + + Possible values for this object are: + region1 - Annexes A and F (e.g., North America) + region2 - Annexes B and G (e.g., Europe) + + Annex A/B specify regional settings for data rates 192-2304 + Kbps using 16-TCPAM encoding. + Annex F/G specify regional settings for rates 2320-3840 Kbps + using 16-TCPAM encoding and 768-5696 Kbps using 32-TCPAM + encoding. + + If a Clause 45 MDIO Interface to the PME is present, then this + object partially maps to the Region bits in the 2B general + parameter register." + REFERENCE + "[802.3ah] 45.2.1.42; [G.991.2] Annexes A, B, F and G" + ::= { efmCuPme2BProfileEntry 3 } + + efmCuPme2BsMode OBJECT-TYPE + SYNTAX EfmProfileIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Desired custom Spectral Mode for a 2BASE-TL PME. This object + + + + is a pointer to an entry in efmCuPme2BsModeTable and a block + of entries in efmCuPme2BRateReachTable, which together define + (country-specific) reach-dependent rate limitations in + addition to those defined by efmCuPme2BRegion. + + The value of this object is the index of the referenced + spectral mode. + The value of zero (default) indicates that no specific + spectral mode is applicable. + + Attempts to set this object to a value that is not the value + of the index for an active entry in the corresponding spectral + mode table MUST be rejected." + REFERENCE + "efmCuPme2BsModeTable, efmCuPme2BRateReachTable" + DEFVAL { 0 } + ::= { efmCuPme2BProfileEntry 4 } + + efmCuPme2BMinDataRate OBJECT-TYPE + SYNTAX Unsigned32(192..5696) + UNITS "Kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Minimum Data Rate for the 2BASE-TL PME. + This object can take values of (n x 64)Kbps, + where n=3..60 for 16-TCPAM and n=12..89 for 32-TCPAM encoding. + + The data rate of the 2BASE-TL PME is considered 'fixed' when + the value of this object equals that of efmCuPme2BMaxDataRate. + If efmCuPme2BMinDataRate is less than efmCuPme2BMaxDataRate in + the administrative profile, the data rate is considered + 'adaptive', and SHALL be set to the maximum attainable rate + not exceeding efmCuPme2BMaxDataRate, under the spectral + limitations placed by the efmCuPme2BRegion and + efmCuPme2BsMode. + + Note that the current operational data rate of the PME is + represented by the ifSpeed object of IF-MIB. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the Min Data Rate1 bits in the 2B PMD + parameters register. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 45.2.1.43" + ::= { efmCuPme2BProfileEntry 5 } + + + + efmCuPme2BMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32(192..5696) + UNITS "Kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum Data Rate for the 2BASE-TL PME. + This object can take values of (n x 64)Kbps, + where n=3..60 for 16-TCPAM and n=12..89 for 32-TCPAM encoding. + + The data rate of the 2BASE-TL PME is considered 'fixed' when + the value of this object equals that of efmCuPme2BMinDataRate. + If efmCuPme2BMinDataRate is less than efmCuPme2BMaxDataRate in + the administrative profile, the data rate is considered + 'adaptive', and SHALL be set to the maximum attainable rate + not exceeding efmCuPme2BMaxDataRate, under the spectral + limitations placed by the efmCuPme2BRegion and + efmCuPme2BsMode. + + Note that the current operational data rate of the PME is + represented by the ifSpeed object of IF-MIB. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the Max Data Rate1 bits in the 2B PMD + parameters register. + + This object MUST be maintained in a persistent manner." + REFERENCE + "[802.3ah] 45.2.1.43" + ::= { efmCuPme2BProfileEntry 6 } + + efmCuPme2BPower OBJECT-TYPE + SYNTAX Unsigned32(0|10..42) + UNITS "0.5 dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Signal Transmit Power. Multiple of 0.5 dBm. + The value of 0 in the administrative profile means that the + signal transmit power is not fixed and SHALL be set to + maximize the attainable rate, under the spectral limitations + placed by the efmCuPme2BRegion and efmCuPme2BsMode. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the Power1 bits in the 2B PMD parameters + register." + REFERENCE + "[802.3ah] 45.2.1.43" + + + + ::= { efmCuPme2BProfileEntry 7 } + + efmCuPme2BConstellation OBJECT-TYPE + SYNTAX INTEGER { + adaptive(0), + tcpam16(1), + tcpam32(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "TCPAM Constellation of the 2BASE-TL PME. + The possible values are: + adaptive(0) - either 16- or 32-TCPAM + tcpam16(1) - 16-TCPAM + tcpam32(2) - 32-TCPAM + + The value of adaptive(0) in the administrative profile means + that the constellation is not fixed and SHALL be set to + maximize the attainable rate, under the spectral limitations + placed by the efmCuPme2BRegion and efmCuPme2BsMode. + + If a Clause 45 MDIO Interface to the PME is present, then this + object maps to the Constellation1 bits in the 2B general + parameter register." + REFERENCE + "[802.3ah] 45.2.1.43" + ::= { efmCuPme2BProfileEntry 8 } + + efmCuPme2BProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the creation, modification, or deletion + of the associated entry in the efmCuPme2BProfileTable per the + semantics of RowStatus. + + If an 'active' entry is referenced via efmCuAdminProfile or + efmCuPmeAdminProfile instance(s), the entry MUST remain + 'active'. + + An 'active' entry SHALL NOT be modified. In order to modify + an existing entry, it MUST be taken out of service (by setting + this object to 'notInService'), modified, and set 'active' + again." + ::= { efmCuPme2BProfileEntry 9 } + + + + + efmCuPme2BsModeTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme2BsModeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table, together with efmCu2BReachRateTable, supports + definition of administrative custom spectral modes for + 2BASE-TL PMEs, describing spectral limitations in addition to + those specified by efmCuPme2BRegion. + + In some countries, spectral regulations (e.g., UK ANFP) limit + the length of the loops for certain data rates. This table + allows these country-specific limitations to be specified. + + Entries in this table referenced by the efmCuPme2BsMode + MUST NOT be deleted until all the active references are + removed. + + This table MUST be maintained in a persistent manner." + REFERENCE + "efmCu2BReachRateTable" + ::= { efmCuPme2B 3 } + + efmCuPme2BsModeEntry OBJECT-TYPE + SYNTAX EfmCuPme2BsModeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry specifies a spectral mode description and its + index, which is used to reference corresponding entries in the + efmCu2BReachRateTable. + + Entries may be created/deleted using the row creation/ + deletion mechanism via efmCuPme2BsModeRowStatus." + INDEX { efmCuPme2BsModeIndex } + ::= { efmCuPme2BsModeTable 1 } + + EfmCuPme2BsModeEntry ::= + SEQUENCE { + efmCuPme2BsModeIndex EfmProfileIndex, + efmCuPme2BsModeDescr SnmpAdminString, + efmCuPme2BsModeRowStatus RowStatus + } + + efmCuPme2BsModeIndex OBJECT-TYPE + SYNTAX EfmProfileIndex + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "2BASE-TL PME Spectral Mode index. + This object is the unique index associated with this spectral + mode. + Entries in this table are referenced via the efmCuPme2BsMode + object." + ::= { efmCuPme2BsModeEntry 1 } + + efmCuPme2BsModeDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual string containing information about a 2BASE-TL PME + spectral mode. The string may include information about + corresponding (country-specific) spectral regulations + and rate/reach limitations of this particular spectral mode." + ::= { efmCuPme2BsModeEntry 2 } + + efmCuPme2BsModeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls creation, modification, or deletion of + the associated entry in efmCuPme2BsModeTable per the semantics + of RowStatus. + + If an 'active' entry is referenced via efmCuPme2BsMode + instance(s), the entry MUST remain 'active'. + + An 'active' entry SHALL NOT be modified. In order to modify + an existing entry, it MUST be taken out of service (by setting + this object to 'notInService'), modified, and set 'active' + again." + ::= { efmCuPme2BsModeEntry 3 } + + + efmCuPme2BReachRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme2BReachRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports the definition of administrative custom + spectral modes for 2BASE-TL PMEs, providing spectral + limitations in addition to those specified by + efmCuPme2BRegion. + + + + + The spectral regulations in some countries (e.g., UK ANFP) + limit the length of the loops for certain data rates. + This table allows these country-specific limitations to be + specified. + + Below is an example of this table for [ANFP]: + ----------+-------+------- + Equivalent MaxRate MaxRate + Length PAM16 PAM32 + (m) (Kbps) (Kbps) + ----------+-------+------- + 975 2304 5696 + 1125 2304 5504 + 1275 2304 5120 + 1350 2304 4864 + 1425 2304 4544 + 1500 2304 4288 + 1575 2304 3968 + 1650 2304 3776 + 1725 2304 3520 + 1800 2304 3264 + 1875 2304 3072 + 1950 2048 2688 + 2100 1792 2368 + 2250 1536 0 + 2400 1408 0 + 2550 1280 0 + 2775 1152 0 + 2925 1152 0 + 3150 1088 0 + 3375 1024 0 + ----------+-------+------- + + Entries in this table referenced by an efmCuPme2BsMode + instance MUST NOT be deleted. + + This table MUST be maintained in a persistent manner." + REFERENCE + "[ANFP]" + ::= { efmCuPme2B 4 } + + efmCuPme2BReachRateEntry OBJECT-TYPE + SYNTAX EfmCuPme2BReachRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry specifies maximum 2BASE-TL PME data rates + allowed for a certain equivalent loop length, when using + + + + 16-TCPAM or 32-TCPAM encoding. + + When a 2BASE-TL PME is initialized, its data rate MUST NOT + exceed one of the following limitations: + - the value of efmCuPme2BMaxDataRate + - maximum data rate allowed by efmCuPme2BRegion and + efmCuPme2BPower + - maximum data rate for a given encoding specified in the + efmCuPme2BsModeEntry, corresponding to the equivalent loop + length, estimated by the PME + + It is RECOMMENDED that the efmCuPme2BEquivalentLength values + are assigned in increasing order, starting from the minimum + value. + + Entries may be created/deleted using the row creation/ + deletion mechanism via efmCuPme2ReachRateRowStatus." + INDEX { efmCuPme2BsModeIndex, efmCuPme2BReachRateIndex } + ::= { efmCuPme2BReachRateTable 1 } + + EfmCuPme2BReachRateEntry ::= + SEQUENCE { + efmCuPme2BReachRateIndex EfmProfileIndex, + efmCuPme2BEquivalentLength Unsigned32, + efmCuPme2BMaxDataRatePam16 Unsigned32, + efmCuPme2BMaxDataRatePam32 Unsigned32, + efmCuPme2BReachRateRowStatus RowStatus + } + + efmCuPme2BReachRateIndex OBJECT-TYPE + SYNTAX EfmProfileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "2BASE-TL custom spectral mode Reach-Rate table index. + This object is the unique index associated with each entry." + ::= { efmCuPme2BReachRateEntry 1 } + + efmCuPme2BEquivalentLength OBJECT-TYPE + SYNTAX Unsigned32(0..8192) + UNITS "m" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum allowed equivalent loop's physical length in meters + for the specified data rates. + An equivalent loop is a hypothetical 26AWG (0.4mm) loop with a + perfect square root attenuation characteristic, without any + + + + bridged taps." + ::= { efmCuPme2BReachRateEntry 2 } + + efmCuPme2BMaxDataRatePam16 OBJECT-TYPE + SYNTAX Unsigned32(0|192..5696) + UNITS "Kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum data rate for a 2BASE-TL PME at the specified + equivalent loop's length using TC-PAM16 encoding. + The value of zero means that TC-PAM16 encoding should not be + used at this distance." + ::= { efmCuPme2BReachRateEntry 3 } + + efmCuPme2BMaxDataRatePam32 OBJECT-TYPE + SYNTAX Unsigned32(0|192..5696) + UNITS "Kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum data rate for a 2BASE-TL PME at the specified + equivalent loop's length using TC-PAM32 encoding. + The value of zero means that TC-PAM32 encoding should not be + used at this distance." + ::= { efmCuPme2BReachRateEntry 4 } + + efmCuPme2BReachRateRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the creation, modification, or deletion + of the associated entry in the efmCuPme2BReachRateTable per + the semantics of RowStatus. + + If an 'active' entry is referenced via efmCuPme2BsMode + instance(s), the entry MUST remain 'active'. + + An 'active' entry SHALL NOT be modified. In order to modify + an existing entry, it MUST be taken out of service (by setting + this object to 'notInService'), modified, and set 'active' + again." + ::= { efmCuPme2BReachRateEntry 5 } + + + -- 10PASS-TS specific PME group + + + + + efmCuPme10P OBJECT IDENTIFIER ::= { efmCuPme 6 } + + efmCuPme10PProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme10PProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports definitions of configuration profiles for + 10PASS-TS PMEs. + The first 22 entries in this table SHALL always be defined as + follows (see 802.3ah Annex 62B.3, table 62B-1): + -------+--------+----+---------+-----+-----+--------------- + Profile Bandplan UPBO BandNotch DRate URate Comment + Index PSDMask# p# p# p# p# + -------+--------+----+---------+-----+-----+--------------- + 1 1 3 2,6,10,11 20 20 default profile + 2 13 5 0 20 20 + 3 1 1 0 20 20 + 4 16 0 0 100 100 + 5 16 0 0 70 50 + 6 6 0 0 50 10 + 7 17 0 0 30 30 + 8 8 0 0 30 5 + 9 4 0 0 25 25 + 10 4 0 0 15 15 + 11 23 0 0 10 10 + 12 23 0 0 5 5 + 13 16 0 2,5,9,11 100 100 + 14 16 0 2,5,9,11 70 50 + 15 6 0 2,6,10,11 50 10 + 16 17 0 2,5,9,11 30 30 + 17 8 0 2,6,10,11 30 5 + 18 4 0 2,6,10,11 25 25 + 19 4 0 2,6,10,11 15 15 + 20 23 0 2,5,9,11 10 10 + 21 23 0 2,5,9,11 5 5 + 22 30 0 0 200 50 + -------+--------+----+---------+-----+-----+--------------- + + These default entries SHALL be created during agent + initialization and MUST NOT be deleted. + + Entries following the first 22 can be dynamically created and + deleted to provide custom administrative (configuration) + profiles and automatic operating profiles. + + This table MUST be maintained in a persistent manner." + REFERENCE + + + + "[802.3ah] Annex 62B.3, 30.11.2.1.6" + ::= { efmCuPme10P 1 } + + efmCuPme10PProfileEntry OBJECT-TYPE + SYNTAX EfmCuPme10PProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to a single 10PASS-TS PME profile. + + Each profile contains a set of parameters, used either for + configuration or representation of a 10PASS-TS PME. + In case a particular profile is referenced via the + efmCuPmeAdminProfile object (or efmCuAdminProfile if + efmCuPmeAdminProfile is zero), it represents the desired + parameters for the 10PassTS-O PME initialization. + If a profile is referenced via an efmCuPmeOperProfile object, + it represents the current operating parameters of the PME. + + Profiles may be created/deleted using the row creation/ + deletion mechanism via efmCuPme10PProfileRowStatus. If an + 'active' entry is referenced, the entry MUST remain 'active' + until all references are removed. + Default entries MUST NOT be removed." + INDEX { efmCuPme10PProfileIndex } + ::= { efmCuPme10PProfileTable 1 } + + EfmCuPme10PProfileEntry ::= + SEQUENCE { + efmCuPme10PProfileIndex EfmProfileIndex, + efmCuPme10PProfileDescr SnmpAdminString, + efmCuPme10PBandplanPSDMskProfile INTEGER, + efmCuPme10PUPBOReferenceProfile INTEGER, + efmCuPme10PBandNotchProfiles BITS, + efmCuPme10PPayloadDRateProfile INTEGER, + efmCuPme10PPayloadURateProfile INTEGER, + efmCuPme10PProfileRowStatus RowStatus + } + + efmCuPme10PProfileIndex OBJECT-TYPE + SYNTAX EfmProfileIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "10PASS-TS PME profile index. + This object is the unique index associated with this profile. + Entries in this table are referenced via efmCuAdminProfile or + efmCuPmeAdminProfile." + + + + ::= { efmCuPme10PProfileEntry 1 } + + efmCuPme10PProfileDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual string containing information about a 10PASS-TS PME + profile. The string may include information about data rate + and spectral limitations of this particular profile." + ::= { efmCuPme10PProfileEntry 2 } + + efmCuPme10PBandplanPSDMskProfile OBJECT-TYPE + SYNTAX INTEGER { + profile1(1), + profile2(2), + profile3(3), + profile4(4), + profile5(5), + profile6(6), + profile7(7), + profile8(8), + profile9(9), + profile10(10), + profile11(11), + profile12(12), + profile13(13), + profile14(14), + profile15(15), + profile16(16), + profile17(17), + profile18(18), + profile19(19), + profile20(20), + profile21(21), + profile22(22), + profile23(23), + profile24(24), + profile25(25), + profile26(26), + profile27(27), + profile28(28), + profile29(29), + profile30(30) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The 10PASS-TS PME Bandplan and PSD Mask Profile, as specified + in 802.3ah Annex 62A, table 62A-1. Possible values are: + --------------+------------------------+------------+-------- + Profile Name PSD Mask Bands G.993.1 + 0/1/2/3/4/5 Bandplan + --------------+------------------------+------------+-------- + profile1(1) T1.424 FTTCab.M1 x/D/U/D/U A + profile2(2) T1.424 FTTEx.M1 x/D/U/D/U A + profile3(3) T1.424 FTTCab.M2 x/D/U/D/U A + profile4(4) T1.424 FTTEx.M2 x/D/U/D/U A + profile5(5) T1.424 FTTCab.M1 D/D/U/D/U A + profile6(6) T1.424 FTTEx.M1 D/D/U/D/U A + profile7(7) T1.424 FTTCab.M2 D/D/U/D/U A + profile8(8) T1.424 FTTEx.M2 D/D/U/D/U A + profile9(9) T1.424 FTTCab.M1 U/D/U/D/x A + profile10(10) T1.424 FTTEx.M1 U/D/U/D/x A + profile11(11) T1.424 FTTCab.M2 U/D/U/D/x A + profile12(12) T1.424 FTTEx.M2 U/D/U/D/x A + profile13(13) TS 101 270-1 Pcab.M1.A x/D/U/D/U B + profile14(14) TS 101 270-1 Pcab.M1.B x/D/U/D/U B + profile15(15) TS 101 270-1 Pex.P1.M1 x/D/U/D/U B + profile16(16) TS 101 270-1 Pex.P2.M1 x/D/U/D/U B + profile17(17) TS 101 270-1 Pcab.M2 x/D/U/D/U B + profile18(18) TS 101 270-1 Pex.P1.M2 x/D/U/D/U B + profile19(19) TS 101 270-1 Pex.P2.M2 x/D/U/D/U B + profile20(20) TS 101 270-1 Pcab.M1.A U/D/U/D/x B + profile21(21) TS 101 270-1 Pcab.M1.B U/D/U/D/x B + profile22(22) TS 101 270-1 Pex.P1.M1 U/D/U/D/x B + profile23(23) TS 101 270-1 Pex.P2.M1 U/D/U/D/x B + profile24(24) TS 101 270-1 Pcab.M2 U/D/U/D/x B + profile25(25) TS 101 270-1 Pex.P1.M2 U/D/U/D/x B + profile26(26) TS 101 270-1 Pex.P2.M2 U/D/U/D/x B + profile27(27) G.993.1 F.1.2.1 x/D/U/D/U Annex F + profile28(28) G.993.1 F.1.2.2 x/D/U/D/U Annex F + profile29(29) G.993.1 F.1.2.3 x/D/U/D/U Annex F + profile30(30) T1.424 FTTCab.M1 (ext.) x/D/U/D/U/D Annex A + --------------+------------------------+------------+-------- + " + REFERENCE + "[802.3ah] Annex 62A" + ::= { efmCuPme10PProfileEntry 3 } + + efmCuPme10PUPBOReferenceProfile OBJECT-TYPE + SYNTAX INTEGER { + profile0(0), + profile1(1), + profile2(2), + profile3(3), + + + + profile4(4), + profile5(5), + profile6(6), + profile7(7), + profile8(8), + profile9(9) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 10PASS-TS PME Upstream Power Back-Off (UPBO) Reference + PSD Profile, as specified in 802.3 Annex 62A, table 62A-3. + Possible values are: + ------------+----------------------------- + Profile Name Reference PSD + ------------+----------------------------- + profile0(0) no profile + profile1(1) T1.424 Noise A M1 + profile2(2) T1.424 Noise A M2 + profile3(3) T1.424 Noise F M1 + profile4(4) T1.424 Noise F M2 + profile5(5) TS 101 270-1 Noise A&B + profile6(6) TS 101 270-1 Noise C + profile7(7) TS 101 270-1 Noise D + profile8(8) TS 101 270-1 Noise E + profile9(9) TS 101 270-1 Noise F + ------------+----------------------------- + " + REFERENCE + "[802.3ah] Annex 62A.3.5" + ::= { efmCuPme10PProfileEntry 4 } + + efmCuPme10PBandNotchProfiles OBJECT-TYPE + SYNTAX BITS { + profile0(0), + profile1(1), + profile2(2), + profile3(3), + profile4(4), + profile5(5), + profile6(6), + profile7(7), + profile8(8), + profile9(9), + profile10(10), + profile11(11) + } + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The 10PASS-TS PME Egress Control Band Notch Profile bitmap, + as specified in 802.3 Annex 62A, table 62A-4. Possible values + are: + --------------+--------+------+------------+------+------ + Profile Name G.991.3 T1.424 TS 101 270-1 StartF EndF + table table table (MHz) (MHz) + --------------+--------+------+------------+------+------ + profile0(0) no profile + profile1(1) F-5 #01 - - 1.810 1.825 + profile2(2) 6-2 15-1 17 1.810 2.000 + profile3(3) F-5 #02 - - 1.907 1.912 + profile4(4) F-5 #03 - - 3.500 3.575 + profile5(5) 6-2 - 17 3.500 3.800 + profile6(6) - 15-1 - 3.500 4.000 + profile7(7) F-5 #04 - - 3.747 3.754 + profile8(8) F-5 #05 - - 3.791 3.805 + profile9(9) 6-2 - 17 7.000 7.100 + profile10(10) F-5 #06 15-1 - 7.000 7.300 + profile11(11) 6-2 15-1 1 10.100 10.150 + --------------+--------+------+------------+------+------ + + Any combination of profiles can be specified by ORing + individual profiles, for example, a value of 0x2230 selects + profiles 2, 6, 10, and 11." + REFERENCE + "[802.3ah] Annex 62A.3.5" + ::= { efmCuPme10PProfileEntry 5 } + + efmCuPme10PPayloadDRateProfile OBJECT-TYPE + SYNTAX INTEGER { + profile5(5), + profile10(10), + profile15(15), + profile20(20), + profile25(25), + profile30(30), + profile50(50), + profile70(70), + profile100(100), + profile140(140), + profile200(200) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 10PASS-TS PME Downstream Payload Rate Profile, as + + + + specified in 802.3 Annex 62A. Possible values are: + profile5(5) - 2.5 Mbps + profile10(10) - 5 Mbps + profile15(15) - 7.5 Mbps + profile20(20) - 10 Mbps + profile25(25) - 12.5 Mbps + profile30(30) - 15 Mbps + profile50(50) - 25 Mbps + profile70(70) - 35 Mbps + profile100(100) - 50 Mbps + profile140(140) - 70 Mbps + profile200(200) - 100 Mbps + + Each value represents a target for the PME's Downstream + Payload Bitrate as seen at the MII. If the payload rate of + the selected profile cannot be achieved based on the loop + environment, bandplan, and PSD mask, the PME initialization + SHALL fail." + REFERENCE + "[802.3ah] Annex 62A.3.6" + ::= { efmCuPme10PProfileEntry 6 } + + efmCuPme10PPayloadURateProfile OBJECT-TYPE + SYNTAX INTEGER { + profile5(5), + profile10(10), + profile15(15), + profile20(20), + profile25(25), + profile30(30), + profile50(50), + profile70(70), + profile100(100) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 10PASS-TS PME Upstream Payload Rate Profile, as specified + in 802.3 Annex 62A. Possible values are: + profile5(5) - 2.5 Mbps + profile10(10) - 5 Mbps + profile15(15) - 7.5 Mbps + profile20(20) - 10 Mbps + profile25(25) - 12.5 Mbps + profile30(30) - 15 Mbps + profile50(50) - 25 Mbps + profile70(70) - 35 Mbps + profile100(100) - 50 Mbps + + + + Each value represents a target for the PME's Upstream Payload + Bitrate as seen at the MII. If the payload rate of the + selected profile cannot be achieved based on the loop + environment, bandplan, and PSD mask, the PME initialization + SHALL fail." + REFERENCE + "[802.3ah] Annex 62A.3.6" + ::= { efmCuPme10PProfileEntry 7 } + + efmCuPme10PProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls creation, modification, or deletion of + the associated entry in efmCuPme10PProfileTable per the + semantics of RowStatus. + + If an active entry is referenced via efmCuAdminProfile or + efmCuPmeAdminProfile, the entry MUST remain 'active' until + all references are removed. + + An 'active' entry SHALL NOT be modified. In order to modify + an existing entry, it MUST be taken out of service (by setting + this object to 'notInService'), modified, and set 'active' + again." + ::= { efmCuPme10PProfileEntry 8 } + + + efmCuPme10PStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF EfmCuPme10PStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides status information of EFMCu 10PASS-TS + PMEs (modems). + + This table contains live data from the equipment. As such, + it is NOT persistent." + ::= { efmCuPme10P 2 } + + efmCuPme10PStatusEntry OBJECT-TYPE + SYNTAX EfmCuPme10PStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the EFMCu 10PASS-TS PME Status table." + INDEX { ifIndex } + + + + ::= { efmCuPme10PStatusTable 1 } + + EfmCuPme10PStatusEntry ::= + SEQUENCE { + efmCuPme10PFECCorrectedBlocks Counter32, + efmCuPme10PFECUncorrectedBlocks Counter32 + } + + efmCuPme10PFECCorrectedBlocks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received and corrected Forward Error Correction + (FEC) codewords in this 10PASS-TS PME. + + This object maps to the aPMEFECCorrectedBlocks attribute in + Clause 30. + + If a Clause 45 MDIO Interface to the PMA/PMD is present, + then this object maps to the 10P FEC correctable errors + register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.1.22, 30.11.2.1.8" + ::= { efmCuPme10PStatusEntry 1 } + + efmCuPme10PFECUncorrectedBlocks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received uncorrectable FEC codewords in this + 10PASS-TS PME. + + This object maps to the aPMEFECUncorrectableBlocks attribute + in Clause 30. + + If a Clause 45 MDIO Interface to the PMA/PMD is present, + then this object maps to the 10P FEC uncorrectable errors + register. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other times + + + + as indicated by the value of ifCounterDiscontinuityTime, + defined in IF-MIB." + REFERENCE + "[802.3ah] 45.2.1.23, 30.11.2.1.9" + ::= { efmCuPme10PStatusEntry 2 } + + -- + -- Conformance Statements + -- + + efmCuGroups OBJECT IDENTIFIER ::= { efmCuConformance 1 } + + efmCuCompliances OBJECT IDENTIFIER ::= { efmCuConformance 2 } + + -- Object Groups + + efmCuBasicGroup OBJECT-GROUP + OBJECTS { + efmCuPAFSupported, + efmCuAdminProfile, + efmCuTargetDataRate, + efmCuTargetSnrMgn, + efmCuAdaptiveSpectra, + efmCuPortSide, + efmCuFltStatus + } + STATUS current + DESCRIPTION + "A collection of objects representing management information + common for all types of EFMCu ports." + ::= { efmCuGroups 1 } + + efmCuPAFGroup OBJECT-GROUP + OBJECTS { + efmCuPeerPAFSupported, + efmCuPAFCapacity, + efmCuPeerPAFCapacity, + efmCuPAFAdminState, + efmCuPAFDiscoveryCode, + efmCuPAFRemoteDiscoveryCode, + efmCuNumPMEs + } + STATUS current + DESCRIPTION + "A collection of objects supporting OPTIONAL PME + Aggregation Function (PAF) and PAF discovery in EFMCu ports." + ::= { efmCuGroups 2 } + + + + + efmCuPAFErrorsGroup OBJECT-GROUP + OBJECTS { + efmCuPAFInErrors, + efmCuPAFInSmallFragments, + efmCuPAFInLargeFragments, + efmCuPAFInBadFragments, + efmCuPAFInLostFragments, + efmCuPAFInLostStarts, + efmCuPAFInLostEnds, + efmCuPAFInOverflows + } + STATUS current + DESCRIPTION + "A collection of objects supporting OPTIONAL error counters + of PAF on EFMCu ports." + ::= { efmCuGroups 3 } + + efmCuPmeGroup OBJECT-GROUP + OBJECTS { + efmCuPmeAdminProfile, + efmCuPmeOperStatus, + efmCuPmeFltStatus, + efmCuPmeSubTypesSupported, + efmCuPmeAdminSubType, + efmCuPmeOperSubType, + efmCuPAFRemoteDiscoveryCode, + efmCuPmeOperProfile, + efmCuPmeSnrMgn, + efmCuPmePeerSnrMgn, + efmCuPmeLineAtn, + efmCuPmePeerLineAtn, + efmCuPmeEquivalentLength, + efmCuPmeTCCodingErrors, + efmCuPmeTCCrcErrors, + efmCuPmeThreshLineAtn, + efmCuPmeThreshSnrMgn + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + a 2BASE-TL/10PASS-TS PME." + ::= { efmCuGroups 4 } + + efmCuAlarmConfGroup OBJECT-GROUP + OBJECTS { + efmCuThreshLowRate, + efmCuLowRateCrossingEnable, + efmCuPmeThreshLineAtn, + + + + efmCuPmeLineAtnCrossingEnable, + efmCuPmeThreshSnrMgn, + efmCuPmeSnrMgnCrossingEnable, + efmCuPmeDeviceFaultEnable, + efmCuPmeConfigInitFailEnable, + efmCuPmeProtocolInitFailEnable + } + STATUS current + DESCRIPTION + "A collection of objects supporting configuration of alarm + thresholds and notifications in EFMCu ports." + ::= { efmCuGroups 5 } + + efmCuNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + efmCuLowRateCrossing, + efmCuPmeLineAtnCrossing, + efmCuPmeSnrMgnCrossing, + efmCuPmeDeviceFault, + efmCuPmeConfigInitFailure, + efmCuPmeProtocolInitFailure + } + STATUS current + DESCRIPTION + "This group supports notifications of significant conditions + associated with EFMCu ports." + ::= { efmCuGroups 6 } + + efmCuPme2BProfileGroup OBJECT-GROUP + OBJECTS { + efmCuPme2BProfileDescr, + efmCuPme2BRegion, + efmCuPme2BsMode, + efmCuPme2BMinDataRate, + efmCuPme2BMaxDataRate, + efmCuPme2BPower, + efmCuPme2BConstellation, + efmCuPme2BProfileRowStatus, + efmCuPme2BsModeDescr, + efmCuPme2BsModeRowStatus, + efmCuPme2BEquivalentLength, + efmCuPme2BMaxDataRatePam16, + efmCuPme2BMaxDataRatePam32, + efmCuPme2BReachRateRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects that constitute a configuration + + + + profile for configuration of 2BASE-TL ports." + ::= { efmCuGroups 7} + + efmCuPme10PProfileGroup OBJECT-GROUP + OBJECTS { + efmCuPme10PProfileDescr, + efmCuPme10PBandplanPSDMskProfile, + efmCuPme10PUPBOReferenceProfile, + efmCuPme10PBandNotchProfiles, + efmCuPme10PPayloadDRateProfile, + efmCuPme10PPayloadURateProfile, + efmCuPme10PProfileRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects that constitute a configuration + profile for configuration of 10PASS-TS ports." + ::= { efmCuGroups 8 } + + efmCuPme10PStatusGroup OBJECT-GROUP + OBJECTS { + efmCuPme10PFECCorrectedBlocks, + efmCuPme10PFECUncorrectedBlocks + } + STATUS current + DESCRIPTION + "A collection of objects providing status information + specific to 10PASS-TS PMEs." + ::= { efmCuGroups 9 } + + -- Compliance Statements + + efmCuCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for 2BASE-TL/10PASS-TS interfaces. + Compliance with the following external compliance statements + is REQUIRED: + + MIB Module Compliance Statement + ---------- -------------------- + IF-MIB ifCompliance3 + EtherLike-MIB dot3Compliance2 + MAU-MIB mauModIfCompl3 + + Compliance with the following external compliance statements + is OPTIONAL for implementations supporting PME Aggregation + Function (PAF) with flexible cross-connect between the PCS + + + + and PME ports: + + MIB Module Compliance Statement + ---------- -------------------- + IF-INVERTED-STACK-MIB ifInvCompliance + IF-CAP-STACK-MIB ifCapStackCompliance" + + MODULE -- this module + MANDATORY-GROUPS { + efmCuBasicGroup, + efmCuPmeGroup, + efmCuAlarmConfGroup, + efmCuNotificationGroup + } + + GROUP efmCuPme2BProfileGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting 2BASE-TL PHY." + + GROUP efmCuPme10PProfileGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting 10PASS-TS PHY." + + GROUP efmCuPAFGroup + DESCRIPTION + "Support for this group is only required for + implementations supporting PME Aggregation Function (PAF)." + + GROUP efmCuPAFErrorsGroup + DESCRIPTION + "Support for this group is OPTIONAL for implementations + supporting PME Aggregation Function (PAF)." + + GROUP efmCuPme10PStatusGroup + DESCRIPTION + "Support for this group is OPTIONAL for implementations + supporting 10PASS-TS PHY." + + OBJECT efmCuPmeSubTypesSupported + SYNTAX BITS { + ieee2BaseTLO(0), + ieee2BaseTLR(1), + ieee10PassTSO(2), + ieee10PassTSR(3) + } + DESCRIPTION + + + + "Support for all subtypes is not required. However, at + least one value SHALL be supported." + + OBJECT efmCuPmeAdminSubType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required (needed only for PMEs + supporting more than a single subtype, e.g., + ieee2BaseTLO and ieee2BaseTLR or ieee10PassTSO and + ieee10PassTSR)." + + OBJECT efmCuTargetSnrMgn + MIN-ACCESS read-only + DESCRIPTION + "Write access is OPTIONAL. For PHYs without write access, + the target SNR margin SHALL be fixed at 5dB for 2BASE-TL + and 6dB for 10PASS-TS." + + OBJECT efmCuAdaptiveSpectra + MIN-ACCESS read-only + DESCRIPTION + "Write access is OPTIONAL. For PHYs without write access, + the default value SHOULD be false." + + ::= { efmCuCompliances 1 } +END diff --git a/mibs/ietf/ENTITY-MIB b/mibs/ietf/ENTITY-MIB new file mode 100644 index 0000000..def755b --- /dev/null +++ b/mibs/ietf/ENTITY-MIB @@ -0,0 +1,1499 @@ +ENTITY-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, NOTIFICATION-TYPE, + Integer32 + FROM SNMPv2-SMI + TDomain, TAddress, TEXTUAL-CONVENTION, + AutonomousType, RowPointer, TimeStamp, TruthValue, + DateAndTime + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +entityMIB MODULE-IDENTITY + LAST-UPDATED "200508100000Z" + ORGANIZATION "IETF ENTMIB Working Group" + CONTACT-INFO + " WG E-mail: entmib@ietf.org + Mailing list subscription info: + http://www.ietf.org/mailman/listinfo/entmib + + Andy Bierman + ietf@andybierman.com + + Keith McCloghrie + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 + + + + +1 408-526-5260 + kzm@cisco.com" + + DESCRIPTION + "The MIB module for representing multiple logical + entities supported by a single SNMP agent. + + Copyright (C) The Internet Society (2005). This + version of this MIB module is part of RFC 4133; see + the RFC itself for full legal notices." + + REVISION "200508100000Z" + DESCRIPTION + "Initial Version of Entity MIB (Version 3). + This revision obsoletes RFC 2737. + Additions: + - cpu(12) enumeration added to PhysicalClass TC + - DISPLAY-HINT clause to PhysicalIndex TC + - PhysicalIndexOrZero TC + - entPhysicalMfgDate object + - entPhysicalUris object + Changes: + - entPhysicalContainedIn SYNTAX changed from + INTEGER to PhysicalIndexOrZero + + This version published as RFC 4133." + + REVISION "199912070000Z" + DESCRIPTION + "Initial Version of Entity MIB (Version 2). + This revision obsoletes RFC 2037. + This version published as RFC 2737." + + REVISION "199610310000Z" + DESCRIPTION + "Initial version (version 1), published as + RFC 2037." + ::= { mib-2 47 } + +entityMIBObjects OBJECT IDENTIFIER ::= { entityMIB 1 } + +-- MIB contains four groups +entityPhysical OBJECT IDENTIFIER ::= { entityMIBObjects 1 } +entityLogical OBJECT IDENTIFIER ::= { entityMIBObjects 2 } +entityMapping OBJECT IDENTIFIER ::= { entityMIBObjects 3 } +entityGeneral OBJECT IDENTIFIER ::= { entityMIBObjects 4 } + + + + + +-- Textual Conventions +PhysicalIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An arbitrary value that uniquely identifies the physical + entity. The value should be a small, positive integer. + Index values for different physical entities are not + necessarily contiguous." + SYNTAX Integer32 (1..2147483647) + +PhysicalIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + PhysicalIndex convention, which defines a greater than zero + value used to identify a physical entity. This extension + permits the additional value of zero. The semantics of the + value zero are object-specific and must, therefore, be + defined as part of the description of any object that uses + this syntax. Examples of the usage of this extension are + situations where none or all physical entities need to be + referenced." + SYNTAX Integer32 (0..2147483647) + +PhysicalClass ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An enumerated value which provides an indication of the + general hardware type of a particular physical entity. + There are no restrictions as to the number of + entPhysicalEntries of each entPhysicalClass, which must be + instantiated by an agent. + + The enumeration 'other' is applicable if the physical entity + class is known, but does not match any of the supported + values. + + The enumeration 'unknown' is applicable if the physical + entity class is unknown to the agent. + + The enumeration 'chassis' is applicable if the physical + entity class is an overall container for networking + equipment. Any class of physical entity, except a stack, + may be contained within a chassis; and a chassis may only + be contained within a stack. + + + + + The enumeration 'backplane' is applicable if the physical + entity class is some sort of device for aggregating and + forwarding networking traffic, such as a shared backplane in + a modular ethernet switch. Note that an agent may model a + backplane as a single physical entity, which is actually + implemented as multiple discrete physical components (within + a chassis or stack). + + The enumeration 'container' is applicable if the physical + entity class is capable of containing one or more removable + physical entities, possibly of different types. For + example, each (empty or full) slot in a chassis will be + modeled as a container. Note that all removable physical + entities should be modeled within a container entity, such + as field-replaceable modules, fans, or power supplies. Note + that all known containers should be modeled by the agent, + including empty containers. + + The enumeration 'powerSupply' is applicable if the physical + entity class is a power-supplying component. + + The enumeration 'fan' is applicable if the physical entity + class is a fan or other heat-reduction component. + + The enumeration 'sensor' is applicable if the physical + entity class is some sort of sensor, such as a temperature + sensor within a router chassis. + + The enumeration 'module' is applicable if the physical + entity class is some sort of self-contained sub-system. If + the enumeration 'module' is removable, then it should be + modeled within a container entity, otherwise it should be + modeled directly within another physical entity (e.g., a + chassis or another module). + + The enumeration 'port' is applicable if the physical entity + class is some sort of networking port, capable of receiving + and/or transmitting networking traffic. + + The enumeration 'stack' is applicable if the physical entity + class is some sort of super-container (possibly virtual), + intended to group together multiple chassis entities. A + stack may be realized by a 'virtual' cable, a real + interconnect cable, attached to multiple chassis, or may in + fact be comprised of multiple interconnect cables. A stack + should not be modeled within any other physical entities, + but a stack may be contained within another stack. Only + chassis entities should be contained within a stack. + + + + The enumeration 'cpu' is applicable if the physical entity + class is some sort of central processing unit." + SYNTAX INTEGER { + other(1), + unknown(2), + chassis(3), + backplane(4), + container(5), -- e.g., chassis slot or daughter-card holder + powerSupply(6), + fan(7), + sensor(8), + module(9), -- e.g., plug-in card or daughter-card + port(10), + stack(11), -- e.g., stack of multiple chassis entities + cpu(12) + } + +SnmpEngineIdOrNone ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A specially formatted SnmpEngineID string for use with the + Entity MIB. + + If an instance of an object of SYNTAX SnmpEngineIdOrNone has + a non-zero length, then the object encoding and semantics + are defined by the SnmpEngineID textual convention (see STD + 62, RFC 3411 [RFC3411]). + + If an instance of an object of SYNTAX SnmpEngineIdOrNone + contains a zero-length string, then no appropriate + SnmpEngineID is associated with the logical entity (i.e., + SNMPv3 is not supported)." + SYNTAX OCTET STRING (SIZE(0..32)) -- empty string or SnmpEngineID + + +-- The Physical Entity Table +entPhysicalTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntPhysicalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per physical entity. There is + always at least one row for an 'overall' physical entity." + ::= { entityPhysical 1 } + +entPhysicalEntry OBJECT-TYPE + SYNTAX EntPhysicalEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Information about a particular physical entity. + + Each entry provides objects (entPhysicalDescr, + entPhysicalVendorType, and entPhysicalClass) to help an NMS + identify and characterize the entry, and objects + (entPhysicalContainedIn and entPhysicalParentRelPos) to help + an NMS relate the particular entry to other entries in this + table." + INDEX { entPhysicalIndex } + ::= { entPhysicalTable 1 } + +EntPhysicalEntry ::= SEQUENCE { + entPhysicalIndex PhysicalIndex, + entPhysicalDescr SnmpAdminString, + entPhysicalVendorType AutonomousType, + entPhysicalContainedIn PhysicalIndexOrZero, + entPhysicalClass PhysicalClass, + entPhysicalParentRelPos Integer32, + entPhysicalName SnmpAdminString, + entPhysicalHardwareRev SnmpAdminString, + entPhysicalFirmwareRev SnmpAdminString, + entPhysicalSoftwareRev SnmpAdminString, + entPhysicalSerialNum SnmpAdminString, + entPhysicalMfgName SnmpAdminString, + entPhysicalModelName SnmpAdminString, + entPhysicalAlias SnmpAdminString, + entPhysicalAssetID SnmpAdminString, + entPhysicalIsFRU TruthValue, + entPhysicalMfgDate DateAndTime, + entPhysicalUris OCTET STRING + +} + +entPhysicalIndex OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this entry." + ::= { entPhysicalEntry 1 } + +entPhysicalDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "A textual description of physical entity. This object + should contain a string that identifies the manufacturer's + name for the physical entity, and should be set to a + distinct value for each version or model of the physical + entity." + ::= { entPhysicalEntry 2 } + +entPhysicalVendorType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the vendor-specific hardware type of the + physical entity. Note that this is different from the + definition of MIB-II's sysObjectID. + + An agent should set this object to an enterprise-specific + registration identifier value indicating the specific + equipment type in detail. The associated instance of + entPhysicalClass is used to indicate the general type of + hardware device. + + If no vendor-specific registration identifier exists for + this physical entity, or the value is unknown by this agent, + then the value { 0 0 } is returned." + ::= { entPhysicalEntry 3 } + +entPhysicalContainedIn OBJECT-TYPE + SYNTAX PhysicalIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of entPhysicalIndex for the physical entity which + 'contains' this physical entity. A value of zero indicates + this physical entity is not contained in any other physical + entity. Note that the set of 'containment' relationships + define a strict hierarchy; that is, recursion is not + allowed. + + In the event that a physical entity is contained by more + than one physical entity (e.g., double-wide modules), this + object should identify the containing entity with the lowest + value of entPhysicalIndex." + ::= { entPhysicalEntry 4 } + +entPhysicalClass OBJECT-TYPE + SYNTAX PhysicalClass + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "An indication of the general hardware type of the physical + entity. + + An agent should set this object to the standard enumeration + value that most accurately indicates the general class of + the physical entity, or the primary class if there is more + than one entity. + + If no appropriate standard registration identifier exists + for this physical entity, then the value 'other(1)' is + returned. If the value is unknown by this agent, then the + value 'unknown(2)' is returned." + ::= { entPhysicalEntry 5 } + +entPhysicalParentRelPos OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the relative position of this 'child' + component among all its 'sibling' components. Sibling + components are defined as entPhysicalEntries that share the + same instance values of each of the entPhysicalContainedIn + and entPhysicalClass objects. + + An NMS can use this object to identify the relative ordering + for all sibling components of a particular parent + (identified by the entPhysicalContainedIn instance in each + sibling entry). + + If possible, this value should match any external labeling + of the physical component. For example, for a container + (e.g., card slot) labeled as 'slot #3', + entPhysicalParentRelPos should have the value '3'. Note + that the entPhysicalEntry for the module plugged in slot 3 + should have an entPhysicalParentRelPos value of '1'. + + If the physical position of this component does not match + any external numbering or clearly visible ordering, then + user documentation or other external reference material + should be used to determine the parent-relative position. + If this is not possible, then the agent should assign a + consistent (but possibly arbitrary) ordering to a given set + of 'sibling' components, perhaps based on internal + representation of the components. + + + + + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is '0', then the value '-1' is + returned. Otherwise, a non-negative integer is returned, + indicating the parent-relative position of this physical + entity. + + Parent-relative ordering normally starts from '1' and + continues to 'N', where 'N' represents the highest + positioned child entity. However, if the physical entities + (e.g., slots) are labeled from a starting position of zero, + then the first sibling should be associated with an + entPhysicalParentRelPos value of '0'. Note that this + ordering may be sparse or dense, depending on agent + implementation. + + The actual values returned are not globally meaningful, as + each 'parent' component may use different numbering + algorithms. The ordering is only meaningful among siblings + of the same parent component. + + The agent should retain parent-relative position values + across reboots, either through algorithmic assignment or use + of non-volatile storage." + ::= { entPhysicalEntry 6 } + +entPhysicalName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual name of the physical entity. The value of this + object should be the name of the component as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name (e.g., `console') or a simple component number (e.g., + port or module number, such as `1'), depending on the + physical component naming syntax of the device. + + If there is no local name, or if this object is otherwise + not applicable, then this object contains a zero-length + string. + + Note that the value of entPhysicalName for two physical + entities will be the same in the event that the console + interface does not distinguish between them, e.g., slot-1 + and the card in slot-1." + ::= { entPhysicalEntry 7 } + + + +entPhysicalHardwareRev OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific hardware revision string for the + physical entity. The preferred value is the hardware + revision identifier actually printed on the component itself + (if present). + + Note that if revision information is stored internally in a + non-printable (e.g., binary) format, then the agent must + convert such information to a printable format, in an + implementation-specific manner. + + If no specific hardware revision string is associated with + the physical component, or if this information is unknown to + the agent, then this object will contain a zero-length + string." + ::= { entPhysicalEntry 8 } + +entPhysicalFirmwareRev OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific firmware revision string for the + physical entity. + + Note that if revision information is stored internally in a + non-printable (e.g., binary) format, then the agent must + convert such information to a printable format, in an + implementation-specific manner. + + If no specific firmware programs are associated with the + physical component, or if this information is unknown to the + agent, then this object will contain a zero-length string." + ::= { entPhysicalEntry 9 } + +entPhysicalSoftwareRev OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific software revision string for the + physical entity. + + Note that if revision information is stored internally in a + + + + non-printable (e.g., binary) format, then the agent must + convert such information to a printable format, in an + implementation-specific manner. + + If no specific software programs are associated with the + physical component, or if this information is unknown to the + agent, then this object will contain a zero-length string." + ::= { entPhysicalEntry 10 } + +entPhysicalSerialNum OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The vendor-specific serial number string for the physical + entity. The preferred value is the serial number string + actually printed on the component itself (if present). + + On the first instantiation of an physical entity, the value + of entPhysicalSerialNum associated with that entity is set + to the correct vendor-assigned serial number, if this + information is available to the agent. If a serial number + is unknown or non-existent, the entPhysicalSerialNum will be + set to a zero-length string instead. + + Note that implementations that can correctly identify the + serial numbers of all installed physical entities do not + need to provide write access to the entPhysicalSerialNum + object. Agents which cannot provide non-volatile storage + for the entPhysicalSerialNum strings are not required to + implement write access for this object. + + Not every physical component will have a serial number, or + even need one. Physical entities for which the associated + value of the entPhysicalIsFRU object is equal to 'false(2)' + (e.g., the repeater ports within a repeater module), do not + need their own unique serial number. An agent does not have + to provide write access for such entities, and may return a + zero-length string. + + If write access is implemented for an instance of + entPhysicalSerialNum, and a value is written into the + instance, the agent must retain the supplied value in the + entPhysicalSerialNum instance (associated with the same + physical entity) for as long as that entity remains + instantiated. This includes instantiations across all + re-initializations/reboots of the network management system, + including those resulting in a change of the physical + + + + entity's entPhysicalIndex value." + ::= { entPhysicalEntry 11 } + +entPhysicalMfgName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the manufacturer of this physical component. + The preferred value is the manufacturer name string actually + printed on the component itself (if present). + + Note that comparisons between instances of the + entPhysicalModelName, entPhysicalFirmwareRev, + entPhysicalSoftwareRev, and the entPhysicalSerialNum + objects, are only meaningful amongst entPhysicalEntries with + the same value of entPhysicalMfgName. + + If the manufacturer name string associated with the physical + component is unknown to the agent, then this object will + contain a zero-length string." + ::= { entPhysicalEntry 12 } + +entPhysicalModelName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor-specific model name identifier string associated + with this physical component. The preferred value is the + customer-visible part number, which may be printed on the + component itself. + + If the model name string associated with the physical + component is unknown to the agent, then this object will + contain a zero-length string." + ::= { entPhysicalEntry 13 } + +entPhysicalAlias OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is an 'alias' name for the physical entity, as + specified by a network manager, and provides a non-volatile + 'handle' for the physical entity. + + On the first instantiation of a physical entity, the value + + + + of entPhysicalAlias associated with that entity is set to + the zero-length string. However, the agent may set the + value to a locally unique default value, instead of a + zero-length string. + + If write access is implemented for an instance of + entPhysicalAlias, and a value is written into the instance, + the agent must retain the supplied value in the + entPhysicalAlias instance (associated with the same physical + entity) for as long as that entity remains instantiated. + This includes instantiations across all + re-initializations/reboots of the network management system, + including those resulting in a change of the physical + entity's entPhysicalIndex value." + ::= { entPhysicalEntry 14 } + +entPhysicalAssetID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is a user-assigned asset tracking identifier + (as specified by a network manager) for the physical entity, + and provides non-volatile storage of this information. + + On the first instantiation of a physical entity, the value + of entPhysicalAssetID associated with that entity is set to + the zero-length string. + + Not every physical component will have an asset tracking + identifier, or even need one. Physical entities for which + the associated value of the entPhysicalIsFRU object is equal + to 'false(2)' (e.g., the repeater ports within a repeater + module), do not need their own unique asset tracking + identifier. An agent does not have to provide write access + for such entities, and may instead return a zero-length + string. + + If write access is implemented for an instance of + entPhysicalAssetID, and a value is written into the + instance, the agent must retain the supplied value in the + entPhysicalAssetID instance (associated with the same + physical entity) for as long as that entity remains + instantiated. This includes instantiations across all + re-initializations/reboots of the network management system, + including those resulting in a change of the physical + entity's entPhysicalIndex value. + + + + + If no asset tracking information is associated with the + physical component, then this object will contain a + zero-length string." + ::= { entPhysicalEntry 15 } + +entPhysicalIsFRU OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this physical entity + is considered a 'field replaceable unit' by the vendor. If + this object contains the value 'true(1)' then this + entPhysicalEntry identifies a field replaceable unit. For + all entPhysicalEntries that represent components + permanently contained within a field replaceable unit, the + value 'false(2)' should be returned for this object." + ::= { entPhysicalEntry 16 } + +entPhysicalMfgDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the date of manufacturing of the + managed entity. If the manufacturing date is unknown or not + supported, the object is not instantiated. The special + value '0000000000000000'H may also be returned in this + case." + ::= { entPhysicalEntry 17 } + +entPhysicalUris OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains additional identification information + about the physical entity. The object contains URIs and, + therefore, the syntax of this object must conform to RFC + 3986, section 2. + + Multiple URIs may be present and are separated by white + space characters. Leading and trailing white space + characters are ignored. + + If no additional identification information is known + about the physical entity or supported, the object is not + instantiated. A zero length octet string may also be + + + + returned in this case." + REFERENCE + "RFC 3986, Uniform Resource Identifiers (URI): Generic + Syntax, section 2, August 1998." + + ::= { entPhysicalEntry 18 } + + +-- The Logical Entity Table +entLogicalTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntLogicalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per logical entity. For agents + that implement more than one naming scope, at least one + entry must exist. Agents which instantiate all MIB objects + within a single naming scope are not required to implement + this table." + ::= { entityLogical 1 } + +entLogicalEntry OBJECT-TYPE + SYNTAX EntLogicalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular logical entity. Entities + may be managed by this agent or other SNMP agents (possibly) + in the same chassis." + INDEX { entLogicalIndex } + ::= { entLogicalTable 1 } + +EntLogicalEntry ::= SEQUENCE { + entLogicalIndex Integer32, + entLogicalDescr SnmpAdminString, + entLogicalType AutonomousType, + entLogicalCommunity OCTET STRING, + entLogicalTAddress TAddress, + entLogicalTDomain TDomain, + entLogicalContextEngineID SnmpEngineIdOrNone, + entLogicalContextName SnmpAdminString +} + +entLogicalIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The value of this object uniquely identifies the logical + entity. The value should be a small positive integer; index + values for different logical entities are not necessarily + contiguous." + ::= { entLogicalEntry 1 } + +entLogicalDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the logical entity. This object + should contain a string that identifies the manufacturer's + name for the logical entity, and should be set to a distinct + value for each version of the logical entity." + ::= { entLogicalEntry 2 } + +entLogicalType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the type of logical entity. This will + typically be the OBJECT IDENTIFIER name of the node in the + SMI's naming hierarchy which represents the major MIB + module, or the majority of the MIB modules, supported by the + logical entity. For example: + a logical entity of a regular host/router -> mib-2 + a logical entity of a 802.1d bridge -> dot1dBridge + a logical entity of a 802.3 repeater -> snmpDot3RptrMgmt + If an appropriate node in the SMI's naming hierarchy cannot + be identified, the value 'mib-2' should be used." + ::= { entLogicalEntry 3 } + +entLogicalCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "An SNMPv1 or SNMPv2C community-string, which can be used to + access detailed management information for this logical + entity. The agent should allow read access with this + community string (to an appropriate subset of all managed + objects) and may also return a community string based on the + privileges of the request used to read this object. Note + that an agent may return a community string with read-only + privileges, even if this object is accessed with a + read-write community string. However, the agent must take + + + + care not to return a community string that allows more + privileges than the community string used to access this + object. + + A compliant SNMP agent may wish to conserve naming scopes by + representing multiple logical entities in a single 'default' + naming scope. This is possible when the logical entities, + represented by the same value of entLogicalCommunity, have + no object instances in common. For example, 'bridge1' and + 'repeater1' may be part of the main naming scope, but at + least one additional community string is needed to represent + 'bridge2' and 'repeater2'. + + Logical entities 'bridge1' and 'repeater1' would be + represented by sysOREntries associated with the 'default' + naming scope. + + For agents not accessible via SNMPv1 or SNMPv2C, the value + of this object is the empty string. This object may also + contain an empty string if a community string has not yet + been assigned by the agent, or if no community string with + suitable access rights can be returned for a particular SNMP + request. + + Note that this object is deprecated. Agents which implement + SNMPv3 access should use the entLogicalContextEngineID and + entLogicalContextName objects to identify the context + associated with each logical entity. SNMPv3 agents may + return a zero-length string for this object, or may continue + to return a community string (e.g., tri-lingual agent + support)." + ::= { entLogicalEntry 4 } + +entLogicalTAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport service address by which the logical entity + receives network management traffic, formatted according to + the corresponding value of entLogicalTDomain. + + For snmpUDPDomain, a TAddress is 6 octets long: the initial + 4 octets contain the IP-address in network-byte order and + the last 2 contain the UDP port in network-byte order. + Consult 'Transport Mappings for the Simple Network + Management Protocol' (STD 62, RFC 3417 [RFC3417]) for + further information on snmpUDPDomain." + + + + ::= { entLogicalEntry 5 } + +entLogicalTDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the kind of transport service by which the + logical entity receives network management traffic. + Possible values for this object are presently found in the + Transport Mappings for Simple Network Management Protocol' + (STD 62, RFC 3417 [RFC3417])." + ::= { entLogicalEntry 6 } + +entLogicalContextEngineID OBJECT-TYPE + SYNTAX SnmpEngineIdOrNone + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The authoritative contextEngineID that can be used to send + an SNMP message concerning information held by this logical + entity, to the address specified by the associated + 'entLogicalTAddress/entLogicalTDomain' pair. + + This object, together with the associated + entLogicalContextName object, defines the context associated + with a particular logical entity, and allows access to SNMP + engines identified by a contextEngineId and contextName + pair. + + If no value has been configured by the agent, a zero-length + string is returned, or the agent may choose not to + instantiate this object at all." + ::= { entLogicalEntry 7 } + +entLogicalContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The contextName that can be used to send an SNMP message + concerning information held by this logical entity, to the + address specified by the associated + 'entLogicalTAddress/entLogicalTDomain' pair. + + This object, together with the associated + entLogicalContextEngineID object, defines the context + associated with a particular logical entity, and allows + + + + access to SNMP engines identified by a contextEngineId and + contextName pair. + + If no value has been configured by the agent, a zero-length + string is returned, or the agent may choose not to + instantiate this object at all." + ::= { entLogicalEntry 8 } + +entLPMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntLPMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains zero or more rows of logical entity to + physical equipment associations. For each logical entity + known by this agent, there are zero or more mappings to the + physical resources, which are used to realize that logical + entity. + + An agent should limit the number and nature of entries in + this table such that only meaningful and non-redundant + information is returned. For example, in a system that + contains a single power supply, mappings between logical + entities and the power supply are not useful and should not + be included. + + Also, only the most appropriate physical component, which is + closest to the root of a particular containment tree, should + be identified in an entLPMapping entry. + + For example, suppose a bridge is realized on a particular + module, and all ports on that module are ports on this + bridge. A mapping between the bridge and the module would + be useful, but additional mappings between the bridge and + each of the ports on that module would be redundant (because + the entPhysicalContainedIn hierarchy can provide the same + information). On the other hand, if more than one bridge + were utilizing ports on this module, then mappings between + each bridge and the ports it used would be appropriate. + + Also, in the case of a single backplane repeater, a mapping + for the backplane to the single repeater entity is not + necessary." + ::= { entityMapping 1 } + +entLPMappingEntry OBJECT-TYPE + SYNTAX EntLPMappingEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Information about a particular logical entity to physical + equipment association. Note that the nature of the + association is not specifically identified in this entry. + It is expected that sufficient information exists in the + MIBs used to manage a particular logical entity to infer how + physical component information is utilized." + INDEX { entLogicalIndex, entLPPhysicalIndex } + ::= { entLPMappingTable 1 } + +EntLPMappingEntry ::= SEQUENCE { + entLPPhysicalIndex PhysicalIndex +} + +entLPPhysicalIndex OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the index value of a + particular entPhysicalEntry associated with the indicated + entLogicalEntity." + ::= { entLPMappingEntry 1 } + + +-- logical entity/component to alias table +entAliasMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntAliasMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains zero or more rows, representing + mappings of logical entity and physical component to + external MIB identifiers. Each physical port in the system + may be associated with a mapping to an external identifier, + which itself is associated with a particular logical + entity's naming scope. A 'wildcard' mechanism is provided + to indicate that an identifier is associated with more than + one logical entity." + ::= { entityMapping 2 } + +entAliasMappingEntry OBJECT-TYPE + SYNTAX EntAliasMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical equipment, logical + + + + entity to external identifier binding. Each logical + entity/physical component pair may be associated with one + alias mapping. The logical entity index may also be used as + a 'wildcard' (refer to the entAliasLogicalIndexOrZero object + DESCRIPTION clause for details.) + + Note that only entPhysicalIndex values that represent + physical ports (i.e., associated entPhysicalClass value is + 'port(10)') are permitted to exist in this table." + INDEX { entPhysicalIndex, entAliasLogicalIndexOrZero } + ::= { entAliasMappingTable 1 } + +EntAliasMappingEntry ::= SEQUENCE { + entAliasLogicalIndexOrZero Integer32, + entAliasMappingIdentifier RowPointer +} + +entAliasLogicalIndexOrZero OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object identifies the logical entity + that defines the naming scope for the associated instance + of the 'entAliasMappingIdentifier' object. + + If this object has a non-zero value, then it identifies the + logical entity named by the same value of entLogicalIndex. + + If this object has a value of zero, then the mapping between + the physical component and the alias identifier for this + entAliasMapping entry is associated with all unspecified + logical entities. That is, a value of zero (the default + mapping) identifies any logical entity that does not have + an explicit entry in this table for a particular + entPhysicalIndex/entAliasMappingIdentifier pair. + + For example, to indicate that a particular interface (e.g., + physical component 33) is identified by the same value of + ifIndex for all logical entities, the following instance + might exist: + + entAliasMappingIdentifier.33.0 = ifIndex.5 + + In the event an entPhysicalEntry is associated differently + for some logical entities, additional entAliasMapping + entries may exist, e.g.: + + + + + entAliasMappingIdentifier.33.0 = ifIndex.6 + entAliasMappingIdentifier.33.4 = ifIndex.1 + entAliasMappingIdentifier.33.5 = ifIndex.1 + entAliasMappingIdentifier.33.10 = ifIndex.12 + + Note that entries with non-zero entAliasLogicalIndexOrZero + index values have precedence over zero-indexed entries. In + this example, all logical entities except 4, 5, and 10, + associate physical entity 33 with ifIndex.6." + ::= { entAliasMappingEntry 1 } + +entAliasMappingIdentifier OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies a particular conceptual + row associated with the indicated entPhysicalIndex and + entLogicalIndex pair. + + Because only physical ports are modeled in this table, only + entries that represent interfaces or ports are allowed. If + an ifEntry exists on behalf of a particular physical port, + then this object should identify the associated 'ifEntry'. + For repeater ports, the appropriate row in the + 'rptrPortGroupTable' should be identified instead. + + For example, suppose a physical port was represented by + entPhysicalEntry.3, entLogicalEntry.15 existed for a + repeater, and entLogicalEntry.22 existed for a bridge. Then + there might be two related instances of + entAliasMappingIdentifier: + entAliasMappingIdentifier.3.15 == rptrPortGroupIndex.5.2 + entAliasMappingIdentifier.3.22 == ifIndex.17 + It is possible that other mappings (besides interfaces and + repeater ports) may be defined in the future, as required. + + Bridge ports are identified by examining the Bridge MIB and + appropriate ifEntries associated with each 'dot1dBasePort', + and are thus not represented in this table." + ::= { entAliasMappingEntry 2 } + + +-- physical mapping table +entPhysicalContainsTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntPhysicalContainsEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A table that exposes the container/'containee' + relationships between physical entities. This table + provides all the information found by constructing the + virtual containment tree for a given entPhysicalTable, but + in a more direct format. + + In the event a physical entity is contained by more than one + other physical entity (e.g., double-wide modules), this + table should include these additional mappings, which cannot + be represented in the entPhysicalTable virtual containment + tree." + ::= { entityMapping 3 } + +entPhysicalContainsEntry OBJECT-TYPE + SYNTAX EntPhysicalContainsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single container/'containee' relationship." + INDEX { entPhysicalIndex, entPhysicalChildIndex } + ::= { entPhysicalContainsTable 1 } + +EntPhysicalContainsEntry ::= SEQUENCE { + entPhysicalChildIndex PhysicalIndex +} + +entPhysicalChildIndex OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of entPhysicalIndex for the contained physical + entity." + ::= { entPhysicalContainsEntry 1 } + +-- last change time stamp for the whole MIB +entLastChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time a conceptual row is + created, modified, or deleted in any of these tables: + - entPhysicalTable + - entLogicalTable + - entLPMappingTable + - entAliasMappingTable + + + + - entPhysicalContainsTable + " + ::= { entityGeneral 1 } + + +-- Entity MIB Trap Definitions +entityMIBTraps OBJECT IDENTIFIER ::= { entityMIB 2 } +entityMIBTrapPrefix OBJECT IDENTIFIER ::= { entityMIBTraps 0 } + +entConfigChange NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "An entConfigChange notification is generated when the value + of entLastChangeTime changes. It can be utilized by an NMS + to trigger logical/physical entity table maintenance polls. + + An agent should not generate more than one entConfigChange + 'notification-event' in a given time interval (five seconds + is the suggested default). A 'notification-event' is the + transmission of a single trap or inform PDU to a list of + notification destinations. + + If additional configuration changes occur within the + throttling period, then notification-events for these + changes should be suppressed by the agent until the current + throttling period expires. At the end of a throttling + period, one notification-event should be generated if any + configuration changes occurred since the start of the + throttling period. In such a case, another throttling + period is started right away. + + An NMS should periodically check the value of + entLastChangeTime to detect any missed entConfigChange + notification-events, e.g., due to throttling or transmission + loss." + ::= { entityMIBTrapPrefix 1 } + + +-- conformance information +entityConformance OBJECT IDENTIFIER ::= { entityMIB 3 } + +entityCompliances OBJECT IDENTIFIER ::= { entityConformance 1 } +entityGroups OBJECT IDENTIFIER ::= { entityConformance 2 } + + +-- compliance statements +entityCompliance MODULE-COMPLIANCE + STATUS deprecated + + + + DESCRIPTION + "The compliance statement for SNMP entities that implement + version 1 of the Entity MIB." + MODULE -- this module + MANDATORY-GROUPS { + entityPhysicalGroup, + entityLogicalGroup, + entityMappingGroup, + entityGeneralGroup, + entityNotificationsGroup + } + ::= { entityCompliances 1 } + +entity2Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities that implement + version 2 of the Entity MIB." + MODULE -- this module + MANDATORY-GROUPS { + entityPhysicalGroup, + entityPhysical2Group, + entityGeneralGroup, + entityNotificationsGroup + } + GROUP entityLogical2Group + DESCRIPTION + "Implementation of this group is not mandatory for agents + that model all MIB object instances within a single naming + scope." + + GROUP entityMappingGroup + DESCRIPTION + "Implementation of the entPhysicalContainsTable is mandatory + for all agents. Implementation of the entLPMappingTable and + entAliasMappingTables are not mandatory for agents that + model all MIB object instances within a single naming scope. + + Note that the entAliasMappingTable may be useful for all + agents; however, implementation of the entityLogicalGroup or + entityLogical2Group is required to support this table." + + OBJECT entPhysicalSerialNum + MIN-ACCESS not-accessible + DESCRIPTION + "Read and write access is not required for agents that + cannot identify serial number information for physical + entities, and/or cannot provide non-volatile storage for + + + + NMS-assigned serial numbers. + + Write access is not required for agents that can identify + serial number information for physical entities, but cannot + provide non-volatile storage for NMS-assigned serial + numbers. + + Write access is not required for physical entities for which + the associated value of the entPhysicalIsFRU object is equal + to 'false(2)'." + + OBJECT entPhysicalAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the associated + entPhysicalClass value is equal to 'chassis(3)'." + + OBJECT entPhysicalAssetID + MIN-ACCESS not-accessible + DESCRIPTION + "Read and write access is not required for agents that + cannot provide non-volatile storage for NMS-assigned asset + identifiers. + + Write access is not required for physical entities for which + the associated value of the entPhysicalIsFRU object is equal + to 'false(2)'." + + OBJECT entPhysicalClass + SYNTAX INTEGER { + other(1), + unknown(2), + chassis(3), + backplane(4), + container(5), + powerSupply(6), + fan(7), + sensor(8), + module(9), + port(10), + stack(11) + } + DESCRIPTION + "Implementation of the 'cpu(12)' enumeration is not + required." + + ::= { entityCompliances 2 } + + + + +entity3Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + version 3 of the Entity MIB." + MODULE -- this module + MANDATORY-GROUPS { + entityPhysicalGroup, + entityPhysical2Group, + entityPhysical3Group, + entityGeneralGroup, + entityNotificationsGroup + } + GROUP entityLogical2Group + DESCRIPTION + "Implementation of this group is not mandatory for agents + that model all MIB object instances within a single naming + scope." + + GROUP entityMappingGroup + DESCRIPTION + "Implementation of the entPhysicalContainsTable is mandatory + for all agents. Implementation of the entLPMappingTable and + entAliasMappingTables are not mandatory for agents that + model all MIB object instances within a single naming scope. + + Note that the entAliasMappingTable may be useful for all + agents; however, implementation of the entityLogicalGroup or + entityLogical2Group is required to support this table." + + OBJECT entPhysicalSerialNum + MIN-ACCESS not-accessible + DESCRIPTION + "Read and write access is not required for agents that + cannot identify serial number information for physical + entities, and/or cannot provide non-volatile storage for + NMS-assigned serial numbers. + + Write access is not required for agents that can identify + serial number information for physical entities, but cannot + provide non-volatile storage for NMS-assigned serial + numbers. + + Write access is not required for physical entities for + which the associated value of the entPhysicalIsFRU object + is equal to 'false(2)'." + + OBJECT entPhysicalAlias + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is required only if the associated + entPhysicalClass value is equal to 'chassis(3)'." + + OBJECT entPhysicalAssetID + MIN-ACCESS not-accessible + DESCRIPTION + "Read and write access is not required for agents that + cannot provide non-volatile storage for NMS-assigned asset + identifiers. + + Write access is not required for physical entities for which + the associated value of entPhysicalIsFRU is equal to + 'false(2)'." + ::= { entityCompliances 3 } + + +-- MIB groupings +entityPhysicalGroup OBJECT-GROUP + OBJECTS { + entPhysicalDescr, + entPhysicalVendorType, + entPhysicalContainedIn, + entPhysicalClass, + entPhysicalParentRelPos, + entPhysicalName + } + STATUS current + DESCRIPTION + "The collection of objects used to represent physical + system components, for which a single agent provides + management information." + ::= { entityGroups 1 } + +entityLogicalGroup OBJECT-GROUP + OBJECTS { + entLogicalDescr, + entLogicalType, + entLogicalCommunity, + entLogicalTAddress, + entLogicalTDomain + } + STATUS deprecated + DESCRIPTION + "The collection of objects used to represent the list of + logical entities, for which a single agent provides + management information." + + + + ::= { entityGroups 2 } + +entityMappingGroup OBJECT-GROUP + OBJECTS { + entLPPhysicalIndex, + entAliasMappingIdentifier, + entPhysicalChildIndex + } + STATUS current + DESCRIPTION + "The collection of objects used to represent the + associations between multiple logical entities, physical + components, interfaces, and port identifiers, for which a + single agent provides management information." + ::= { entityGroups 3 } + +entityGeneralGroup OBJECT-GROUP + OBJECTS { + entLastChangeTime + } + STATUS current + DESCRIPTION + "The collection of objects used to represent general entity + information, for which a single agent provides management + information." + ::= { entityGroups 4 } + +entityNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { entConfigChange } + STATUS current + DESCRIPTION + "The collection of notifications used to indicate Entity MIB + data consistency and general status information." + ::= { entityGroups 5 } + +entityPhysical2Group OBJECT-GROUP + OBJECTS { + entPhysicalHardwareRev, + entPhysicalFirmwareRev, + entPhysicalSoftwareRev, + entPhysicalSerialNum, + entPhysicalMfgName, + entPhysicalModelName, + entPhysicalAlias, + entPhysicalAssetID, + entPhysicalIsFRU + } + STATUS current + + + + DESCRIPTION + "The collection of objects used to represent physical + system components, for which a single agent provides + management information. This group augments the objects + contained in the entityPhysicalGroup." + ::= { entityGroups 6 } + +entityLogical2Group OBJECT-GROUP + OBJECTS { + entLogicalDescr, + entLogicalType, + entLogicalTAddress, + entLogicalTDomain, + entLogicalContextEngineID, + entLogicalContextName + } + STATUS current + DESCRIPTION + "The collection of objects used to represent the + list of logical entities, for which a single SNMP entity + provides management information." + ::= { entityGroups 7 } + +entityPhysical3Group OBJECT-GROUP + OBJECTS { + entPhysicalMfgDate, + entPhysicalUris + } + STATUS current + DESCRIPTION + "The collection of objects used to represent physical + system components, for which a single agent provides + management information. This group augments the objects + contained in the entityPhysicalGroup." + ::= { entityGroups 8 } + + +END diff --git a/mibs/ietf/ENTITY-SENSOR-MIB b/mibs/ietf/ENTITY-SENSOR-MIB new file mode 100644 index 0000000..d3dbde5 --- /dev/null +++ b/mibs/ietf/ENTITY-SENSOR-MIB @@ -0,0 +1,474 @@ +ENTITY-SENSOR-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Unsigned32, mib-2 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION, TimeStamp + FROM SNMPv2-TC + entPhysicalIndex, entityPhysicalGroup + FROM ENTITY-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +entitySensorMIB MODULE-IDENTITY + LAST-UPDATED "200212160000Z" + ORGANIZATION "IETF Entity MIB Working Group" + CONTACT-INFO + " Andy Bierman + Cisco Systems, Inc. + Tel: +1 408-527-3711 + E-mail: abierman@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + + Dan Romascanu + Avaya Inc. + Tel: +972-3-645-8414 + Email: dromasca@avaya.com + Postal: Atidim technology Park, Bldg. #3 + Tel Aviv, Israel, 61131 + + K.C. Norseth + L-3 Communications + Tel: +1 801-594-2809 + Email: kenyon.c.norseth@L-3com.com + Postal: 640 N. 2200 West. + + + + Salt Lake City, Utah 84116-0850 + + Send comments to + Mailing list subscription info: + http://www.ietf.org/mailman/listinfo/entmib " + DESCRIPTION + "This module defines Entity MIB extensions for physical + sensors. + + Copyright (C) The Internet Society (2002). This version + of this MIB module is part of RFC 3433; see the RFC + itself for full legal notices." + + REVISION "200212160000Z" + DESCRIPTION + "Initial version of the Entity Sensor MIB module, published + as RFC 3433." + ::= { mib-2 99 } + +entitySensorObjects OBJECT IDENTIFIER + ::= { entitySensorMIB 1 } + +-- entitySensorNotifications OBJECT IDENTIFIER +-- ::= { entitySensorMIB 2 } +entitySensorConformance OBJECT IDENTIFIER + ::= { entitySensorMIB 3 } + +-- +-- Textual Conventions +-- + +EntitySensorDataType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents the Entity Sensor + measurement data type associated with a physical sensor + value. The actual data units are determined by examining an + object of this type together with the associated + EntitySensorDataScale object. + + An object of this type SHOULD be defined together with + objects of type EntitySensorDataScale and + EntitySensorPrecision. Together, associated objects of + these three types are used to identify the semantics of an + object of type EntitySensorValue. + + + + + + + Valid values are: + + other(1): a measure other than those listed below + unknown(2): unknown measurement, or arbitrary, + relative numbers + voltsAC(3): electric potential + voltsDC(4): electric potential + amperes(5): electric current + watts(6): power + hertz(7): frequency + celsius(8): temperature + percentRH(9): percent relative humidity + rpm(10): shaft revolutions per minute + cmm(11),: cubic meters per minute (airflow) + truthvalue(12): value takes { true(1), false(2) } + + " + SYNTAX INTEGER { + other(1), + unknown(2), + voltsAC(3), + voltsDC(4), + amperes(5), + watts(6), + hertz(7), + celsius(8), + percentRH(9), + rpm(10), + cmm(11), + truthvalue(12) + } + +EntitySensorDataScale ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents a data scaling + factor, represented with an International System of Units + (SI) prefix. The actual data units are determined by + examining an object of this type together with the + associated EntitySensorDataType object. + + An object of this type SHOULD be defined together with + objects of type EntitySensorDataType and + EntitySensorPrecision. Together, associated objects of + these three types are used to identify the semantics of an + object of type EntitySensorValue." + REFERENCE + "The International System of Units (SI), + + + + National Institute of Standards and Technology, + Spec. Publ. 330, August 1991." + SYNTAX INTEGER { + yocto(1), -- 10^-24 + zepto(2), -- 10^-21 + atto(3), -- 10^-18 + femto(4), -- 10^-15 + pico(5), -- 10^-12 + nano(6), -- 10^-9 + micro(7), -- 10^-6 + milli(8), -- 10^-3 + units(9), -- 10^0 + kilo(10), -- 10^3 + mega(11), -- 10^6 + giga(12), -- 10^9 + tera(13), -- 10^12 + exa(14), -- 10^15 + peta(15), -- 10^18 + zetta(16), -- 10^21 + yotta(17) -- 10^24 + } + +EntitySensorPrecision ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents a sensor + precision range. + + An object of this type SHOULD be defined together with + objects of type EntitySensorDataType and + EntitySensorDataScale. Together, associated objects of + these three types are used to identify the semantics of an + object of type EntitySensorValue. + + If an object of this type contains a value in the range 1 to + 9, it represents the number of decimal places in the + fractional part of an associated EntitySensorValue fixed- + point number. + + If an object of this type contains a value in the range -8 + to -1, it represents the number of accurate digits in the + associated EntitySensorValue fixed-point number. + + The value zero indicates the associated EntitySensorValue + object is not a fixed-point number. + + Agent implementors must choose a value for the associated + EntitySensorPrecision object so that the precision and + + + + accuracy of the associated EntitySensorValue object is + correctly indicated. + + For example, a physical entity representing a temperature + sensor that can measure 0 degrees to 100 degrees C in 0.1 + degree increments, +/- 0.05 degrees, would have an + EntitySensorPrecision value of '1', an EntitySensorDataScale + value of 'units(9)', and an EntitySensorValue ranging from + '0' to '1000'. The EntitySensorValue would be interpreted + as 'degrees C * 10'." + SYNTAX Integer32 (-8..9) + +EntitySensorValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents an Entity Sensor + value. + An object of this type SHOULD be defined together with + objects of type EntitySensorDataType, EntitySensorDataScale + and EntitySensorPrecision. Together, associated objects of + those three types are used to identify the semantics of an + object of this data type. + + The semantics of an object using this data type are + determined by the value of the associated + EntitySensorDataType object. + + If the associated EntitySensorDataType object is equal to + 'voltsAC(3)', 'voltsDC(4)', 'amperes(5)', 'watts(6), + 'hertz(7)', 'celsius(8)', or 'cmm(11)', then an object of + this type MUST contain a fixed point number ranging from + -999,999,999 to +999,999,999. The value -1000000000 + indicates an underflow error. The value +1000000000 + indicates an overflow error. The EntitySensorPrecision + indicates how many fractional digits are represented in the + associated EntitySensorValue object. + + If the associated EntitySensorDataType object is equal to + 'percentRH(9)', then an object of this type MUST contain a + number ranging from 0 to 100. + + If the associated EntitySensorDataType object is equal to + 'rpm(10)', then an object of this type MUST contain a number + ranging from -999,999,999 to +999,999,999. + + If the associated EntitySensorDataType object is equal to + 'truthvalue(12)', then an object of this type MUST contain + either the value 'true(1)' or the value 'false(2)'. + + + + If the associated EntitySensorDataType object is equal to + 'other(1)' or unknown(2)', then an object of this type MUST + contain a number ranging from -1000000000 to 1000000000." + SYNTAX Integer32 (-1000000000..1000000000) + +EntitySensorStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object using this data type represents the operational + status of a physical sensor. + + The value 'ok(1)' indicates that the agent can obtain the + sensor value. + + The value 'unavailable(2)' indicates that the agent + presently cannot obtain the sensor value. + + The value 'nonoperational(3)' indicates that the agent + believes the sensor is broken. The sensor could have a hard + failure (disconnected wire), or a soft failure such as out- + of-range, jittery, or wildly fluctuating readings." + SYNTAX INTEGER { + ok(1), + unavailable(2), + nonoperational(3) + } + +-- +-- Entity Sensor Table +-- + +entPhySensorTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntPhySensorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one row per physical sensor represented + by an associated row in the entPhysicalTable." + ::= { entitySensorObjects 1 } + +entPhySensorEntry OBJECT-TYPE + SYNTAX EntPhySensorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical sensor. + + + + + + An entry in this table describes the present reading of a + sensor, the measurement units and scale, and sensor + operational status. + + Entries are created in this table by the agent. An entry + for each physical sensor SHOULD be created at the same time + as the associated entPhysicalEntry. An entry SHOULD be + destroyed if the associated entPhysicalEntry is destroyed." + INDEX { entPhysicalIndex } -- SPARSE-AUGMENTS + ::= { entPhySensorTable 1 } + +EntPhySensorEntry ::= SEQUENCE { + entPhySensorType EntitySensorDataType, + entPhySensorScale EntitySensorDataScale, + entPhySensorPrecision EntitySensorPrecision, + entPhySensorValue EntitySensorValue, + entPhySensorOperStatus EntitySensorStatus, + entPhySensorUnitsDisplay SnmpAdminString, + entPhySensorValueTimeStamp TimeStamp, + entPhySensorValueUpdateRate Unsigned32 +} + +entPhySensorType OBJECT-TYPE + SYNTAX EntitySensorDataType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of data returned by the associated + entPhySensorValue object. + + This object SHOULD be set by the agent during entry + creation, and the value SHOULD NOT change during operation." + ::= { entPhySensorEntry 1 } + +entPhySensorScale OBJECT-TYPE + SYNTAX EntitySensorDataScale + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The exponent to apply to values returned by the associated + entPhySensorValue object. + + This object SHOULD be set by the agent during entry + creation, and the value SHOULD NOT change during operation." + ::= { entPhySensorEntry 2 } + + + + + + +entPhySensorPrecision OBJECT-TYPE + SYNTAX EntitySensorPrecision + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of decimal places of precision in fixed-point + sensor values returned by the associated entPhySensorValue + object. + + This object SHOULD be set to '0' when the associated + entPhySensorType value is not a fixed-point type: e.g., + 'percentRH(9)', 'rpm(10)', 'cmm(11)', or 'truthvalue(12)'. + + This object SHOULD be set by the agent during entry + creation, and the value SHOULD NOT change during operation." + ::= { entPhySensorEntry 3 } + +entPhySensorValue OBJECT-TYPE + SYNTAX EntitySensorValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent measurement obtained by the agent for this + sensor. + + To correctly interpret the value of this object, the + associated entPhySensorType, entPhySensorScale, and + entPhySensorPrecision objects must also be examined." + ::= { entPhySensorEntry 4 } + +entPhySensorOperStatus OBJECT-TYPE + SYNTAX EntitySensorStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of the sensor." + ::= { entPhySensorEntry 5 } + +entPhySensorUnitsDisplay OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the data units that should be used + in the display of entPhySensorValue." + ::= { entPhySensorEntry 6 } + + + + + +entPhySensorValueTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the status and/or value + of this sensor was last obtained by the agent." + ::= { entPhySensorEntry 7 } + +entPhySensorValueUpdateRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the frequency that the agent updates the + associated entPhySensorValue object, representing in + milliseconds. + + The value zero indicates: + + - the sensor value is updated on demand (e.g., + when polled by the agent for a get-request), + - the sensor value is updated when the sensor + value changes (event-driven), + - the agent does not know the update rate. + + " + ::= { entPhySensorEntry 8 } + +-- +-- Conformance Section +-- + +entitySensorCompliances OBJECT IDENTIFIER + ::= { entitySensorConformance 1 } +entitySensorGroups OBJECT IDENTIFIER + ::= { entitySensorConformance 2 } + +entitySensorCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the Entity + Sensor MIB module." + MODULE -- this module + MANDATORY-GROUPS { entitySensorValueGroup } + + + + + + MODULE ENTITY-MIB + MANDATORY-GROUPS { entityPhysicalGroup } + + ::= { entitySensorCompliances 1 } + +-- Object Groups + +entitySensorValueGroup OBJECT-GROUP + OBJECTS { + entPhySensorType, + entPhySensorScale, + entPhySensorPrecision, + entPhySensorValue, + entPhySensorOperStatus, + entPhySensorUnitsDisplay, + entPhySensorValueTimeStamp, + entPhySensorValueUpdateRate + } + STATUS current + DESCRIPTION + "A collection of objects representing physical entity sensor + information." + ::= { entitySensorGroups 1 } + +END diff --git a/mibs/ietf/ENTITY-STATE-MIB b/mibs/ietf/ENTITY-STATE-MIB new file mode 100644 index 0000000..717df0d --- /dev/null +++ b/mibs/ietf/ENTITY-STATE-MIB @@ -0,0 +1,348 @@ +ENTITY-STATE-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, mib-2 + FROM SNMPv2-SMI + DateAndTime + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + entPhysicalIndex + FROM ENTITY-MIB + EntityAdminState, EntityOperState, EntityUsageState, + EntityAlarmStatus, EntityStandbyStatus + FROM ENTITY-STATE-TC-MIB; + + entityStateMIB MODULE-IDENTITY + LAST-UPDATED "200511220000Z" + ORGANIZATION "IETF Entity MIB Working Group" + + + CONTACT-INFO + " General Discussion: entmib@ietf.org + To Subscribe: + http://www.ietf.org/mailman/listinfo/entmib + + http://www.ietf.org/html.charters/entmib-charter.html + + Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortel.com + + David T. Perkins + 548 Qualbrook Ct + San Jose, CA 95110 + USA + Phone: 408 394-8702 + dperkins@snmpinfo.com + " + DESCRIPTION + "This MIB defines a state extension to the Entity MIB. + + Copyright (C) The Internet Society 2005. This version + of this MIB module is part of RFC 4268; see the RFC + itself for full legal notices." + REVISION "200511220000Z" + DESCRIPTION + "Initial version, published as RFC 4268." + ::= { mib-2 131 } + + + -- Entity State Objects + + entStateObjects OBJECT IDENTIFIER ::= { entityStateMIB 1 } + + entStateTable OBJECT-TYPE + SYNTAX SEQUENCE OF EntStateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about state/status of entities. + This is a sparse augment of the entPhysicalTable. Entries + appear in this table for values of + entPhysicalClass [RFC4133] that in this implementation + are able to report any of the state or status stored in + this table. + + + " + ::= { entStateObjects 1 } + + + entStateEntry OBJECT-TYPE + SYNTAX EntStateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "State information about this physical entity." + INDEX { entPhysicalIndex } + ::= { entStateTable 1 } + + EntStateEntry ::= SEQUENCE { + entStateLastChanged DateAndTime, + entStateAdmin EntityAdminState, + entStateOper EntityOperState, + entStateUsage EntityUsageState, + entStateAlarm EntityAlarmStatus, + entStateStandby EntityStandbyStatus + } + + entStateLastChanged OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is the date and + time when the value of any of entStateAdmin, + entStateOper, entStateUsage, entStateAlarm, + or entStateStandby changed for this entity. + + If there has been no change since + the last re-initialization of the local system, + this object contains the date and time of + local system initialization. If there has been + no change since the entity was added to the + local system, this object contains the date and + time of the insertion." + ::= { entStateEntry 1 } + +entStateAdmin OBJECT-TYPE + SYNTAX EntityAdminState + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative state for this entity. + + + + This object refers to an entities administrative + permission to service both other entities within + its containment hierarchy as well other users of + its services defined by means outside the scope + of this MIB. + + Setting this object to 'notSupported' will result + in an 'inconsistentValue' error. For entities that + do not support administrative state, all set + operations will result in an 'inconsistentValue' + error. + + Some physical entities exhibit only a subset of the + remaining administrative state values. Some entities + cannot be locked, and hence this object exhibits only + the 'unlocked' state. Other entities cannot be shutdown + gracefully, and hence this object does not exhibit the + 'shuttingDown' state. A value of 'inconsistentValue' + will be returned if attempts are made to set this + object to values not supported by its administrative + model." + ::= { entStateEntry 2 } + + entStateOper OBJECT-TYPE + SYNTAX EntityOperState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational state for this entity. + + Note that unlike the state model used within the + Interfaces MIB [RFC2863], this object does not follow + the administrative state. An administrative state of + down does not predict an operational state + of disabled. + + A value of 'testing' means that entity currently being + tested and cannot therefore report whether it is + operational or not. + + A value of 'disabled' means that an entity is totally + inoperable and unable to provide service both to entities + within its containment hierarchy, or to other receivers + of its service as defined in ways outside the scope of + this MIB. + + A value of 'enabled' means that an entity is fully or + partially operable and able to provide service both to + + + entities within its containment hierarchy, or to other + receivers of its service as defined in ways outside the + scope of this MIB. + + Note that some implementations may not be able to + accurately report entStateOper while the + entStateAdmin object has a value other than 'unlocked'. + In these cases, this object MUST have a value + of 'unknown'." + ::= { entStateEntry 3 } + + entStateUsage OBJECT-TYPE + SYNTAX EntityUsageState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The usage state for this entity. + + This object refers to an entity's ability to service more + physical entities in a containment hierarchy. A value + of 'idle' means this entity is able to contain other + entities but that no other entity is currently + contained within this entity. + + A value of 'active' means that at least one entity is + contained within this entity, but that it could handle + more. A value of 'busy' means that the entity is unable + to handle any additional entities being contained in it. + + Some entities will exhibit only a subset of the + usage state values. Entities that are unable to ever + service any entities within a containment hierarchy will + always have a usage state of 'busy'. Some entities will + only ever be able to support one entity within its + containment hierarchy and will therefore only exhibit + values of 'idle' and 'busy'." + ::= { entStateEntry 4 } + + entStateAlarm OBJECT-TYPE + SYNTAX EntityAlarmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The alarm status for this entity. It does not include + the alarms raised on child components within its + containment hierarchy. + + A value of 'unknown' means that this entity is + + + + unable to report alarm state. Note that this differs + from 'indeterminate', which means that alarm state + is supported and there are alarms against this entity, + but the severity of some of the alarms is not known. + + If no bits are set, then this entity supports reporting + of alarms, but there are currently no active alarms + against this entity." + ::= { entStateEntry 5 } + +entStateStandby OBJECT-TYPE + SYNTAX EntityStandbyStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The standby status for this entity. + + Some entities will exhibit only a subset of the + remaining standby state values. If this entity + cannot operate in a standby role, the value of this + object will always be 'providingService'." + ::= { entStateEntry 6 } + +-- Notifications + entStateNotifications OBJECT IDENTIFIER ::= { entityStateMIB 0 } + +entStateOperEnabled NOTIFICATION-TYPE + OBJECTS { entStateAdmin, + entStateAlarm + } + STATUS current + DESCRIPTION + "An entStateOperEnabled notification signifies that the + SNMP entity, acting in an agent role, has detected that + the entStateOper object for one of its entities has + transitioned into the 'enabled' state. + + The entity this notification refers can be identified by + extracting the entPhysicalIndex from one of the + variable bindings. The entStateAdmin and entStateAlarm + varbinds may be examined to find out additional + information on the administrative state at the time of + the operation state change as well as to find out whether + there were any known alarms against the entity at that + time that may explain why the physical entity has become + operationally disabled." + ::= { entStateNotifications 1 } + + + + +entStateOperDisabled NOTIFICATION-TYPE + OBJECTS { entStateAdmin, + entStateAlarm } + STATUS current + DESCRIPTION + "An entStateOperDisabled notification signifies that the + SNMP entity, acting in an agent role, has detected that + the entStateOper object for one of its entities has + transitioned into the 'disabled' state. + + The entity this notification refers can be identified by + extracting the entPhysicalIndex from one of the + variable bindings. The entStateAdmin and entStateAlarm + varbinds may be examined to find out additional + information on the administrative state at the time of + the operation state change as well as to find out whether + there were any known alarms against the entity at that + time that may affect the physical entity's + ability to stay operationally enabled." + ::= { entStateNotifications 2 } + +-- Conformance and Compliance + +entStateConformance OBJECT IDENTIFIER ::= { entityStateMIB 2 } + +entStateCompliances OBJECT IDENTIFIER + ::= { entStateConformance 1 } + +entStateCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems supporting + the Entity State MIB." + MODULE -- this module + MANDATORY-GROUPS { + entStateGroup + } + GROUP entStateNotificationsGroup + DESCRIPTION + "This group is optional." + OBJECT entStateAdmin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { entStateCompliances 1 } + +entStateGroups OBJECT IDENTIFIER ::= { entStateConformance 2 } + + + + +entStateGroup OBJECT-GROUP + OBJECTS { + entStateLastChanged, + entStateAdmin, + entStateOper, + entStateUsage, + entStateAlarm, + entStateStandby + } + STATUS current + DESCRIPTION + "Standard Entity State group." + ::= { entStateGroups 1} + +entStateNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + entStateOperEnabled, + entStateOperDisabled + } + STATUS current + DESCRIPTION + "Standard Entity State Notification group." + ::= { entStateGroups 2} + +END diff --git a/mibs/ietf/ENTITY-STATE-TC-MIB b/mibs/ietf/ENTITY-STATE-TC-MIB new file mode 100644 index 0000000..0197bc1 --- /dev/null +++ b/mibs/ietf/ENTITY-STATE-TC-MIB @@ -0,0 +1,178 @@ +ENTITY-STATE-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + entityStateTc MODULE-IDENTITY + LAST-UPDATED "200511220000Z" + ORGANIZATION "IETF Entity MIB Working Group" + CONTACT-INFO + "General Discussion: entmib@ietf.org + To Subscribe: + http://www.ietf.org/mailman/listinfo/entmib + + http://www.ietf.org/html.charters/entmib-charter.html + + Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortel.com + + David T. Perkins + 548 Qualbrook Ct + San Jose, CA 95110 + USA + Phone: 408 394-8702 + dperkins@snmpinfo.com" + DESCRIPTION + "This MIB defines state textual conventions. + + Copyright (C) The Internet Society 2005. This version + of this MIB module is part of RFC 4268; see the RFC + itself for full legal notices." + REVISION "200511220000Z" + DESCRIPTION + "Initial version, published as RFC 4268." + ::= { mib-2 130 } + + EntityAdminState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the various possible administrative states. + + + + + + A value of 'locked' means the resource is administratively + prohibited from use. A value of 'shuttingDown' means that + usage is administratively limited to current instances of + use. A value of 'unlocked' means the resource is not + administratively prohibited from use. A value of + 'unknown' means that this resource is unable to + report administrative state." + SYNTAX INTEGER + { + unknown (1), + locked (2), + shuttingDown (3), + unlocked (4) + } + + EntityOperState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the possible values of operational states. + + A value of 'disabled' means the resource is totally + inoperable. A value of 'enabled' means the resource + is partially or fully operable. A value of 'testing' + means the resource is currently being tested + and cannot therefore report whether it is operational + or not. A value of 'unknown' means that this + resource is unable to report operational state." + SYNTAX INTEGER + { + unknown (1), + disabled (2), + enabled (3), + testing (4) + } + + EntityUsageState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the possible values of usage states. + A value of 'idle' means the resource is servicing no + users. A value of 'active' means the resource is + currently in use and it has sufficient spare capacity + to provide for additional users. A value of 'busy' + means the resource is currently in use, but it + currently has no spare capacity to provide for + additional users. A value of 'unknown' means + that this resource is unable to report usage state." + SYNTAX INTEGER + + + + { + unknown (1), + idle (2), + active (3), + busy (4) + } + + + EntityAlarmStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the possible values of alarm status. + An Alarm [RFC3877] is a persistent indication + of an error or warning condition. + + When no bits of this attribute are set, then no active + alarms are known against this entity and it is not under + repair. + + When the 'value of underRepair' is set, the resource is + currently being repaired, which, depending on the + implementation, may make the other values in this bit + string not meaningful. + + When the value of 'critical' is set, one or more critical + alarms are active against the resource. When the value + of 'major' is set, one or more major alarms are active + against the resource. When the value of 'minor' is set, + one or more minor alarms are active against the resource. + When the value of 'warning' is set, one or more warning + alarms are active against the resource. When the value + of 'indeterminate' is set, one or more alarms of whose + perceived severity cannot be determined are active + against this resource. + + A value of 'unknown' means that this resource is + unable to report alarm state." + SYNTAX BITS + { + unknown (0), + underRepair (1), + critical(2), + major(3), + minor(4), + -- The following are not defined in X.733 + warning (5), + indeterminate (6) + } + + + + EntityStandbyStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " Represents the possible values of standby status. + + A value of 'hotStandby' means the resource is not + providing service, but it will be immediately able to + take over the role of the resource to be backed up, + without the need for initialization activity, and will + contain the same information as the resource to be + backed up. A value of 'coldStandy' means that the + resource is to back up another resource, but will not + be immediately able to take over the role of a resource + to be backed up, and will require some initialization + activity. A value of 'providingService' means the + resource is providing service. A value of + 'unknown' means that this resource is unable to + report standby state." + SYNTAX INTEGER + { + unknown (1), + hotStandby (2), + coldStandby (3), + providingService (4) + } + +END diff --git a/mibs/ietf/ETHER-CHIPSET-MIB b/mibs/ietf/ETHER-CHIPSET-MIB new file mode 100644 index 0000000..88835d0 --- /dev/null +++ b/mibs/ietf/ETHER-CHIPSET-MIB @@ -0,0 +1,530 @@ +ETHER-CHIPSET-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 + FROM SNMPv2-SMI + dot3 + FROM EtherLike-MIB; + + etherChipsetMIB MODULE-IDENTITY + LAST-UPDATED "9908240400Z" -- August 24, 199 + ORGANIZATION "IETF 802.3 Hub MIB Working Group" + CONTACT-INFO + "WG E-mail: hubmib@hprnd.rose.hp.com + To subscribe: hubmib-request@hprnd.rose.hp.com + + Chair: Dan Romascanu + Postal: Lucent Technologies + Atidum Technology Park, Bldg. 3 + Tel Aviv 61131 + Israel + Tel: +972 3 645 8414 + E-mail: dromasca@lucent.com + + Editor: John Flick + Postal: Hewlett-Packard Company + 8000 Foothills Blvd. M/S 5556 + Roseville, CA 95747-5556 + USA + Tel: +1 916 785 4018 + Fax: +1 916 785 3583 + E-mail: johnf@rose.hp.com" + + DESCRIPTION "This MIB module contains registered values for + use by the dot3StatsEtherChipSet object in + the EtherLike-MIB. This object is used to + identify the MAC hardware used to communicate + on an interface. + + Note that the dot3StatsEtherChipSet object + has been deprecated. The primary purpose of + this module is to capture historic assignments + made by the various IETF working groups that + have been responsible for maintaining the + EtherLike-MIB. Implementations which support + the dot3StatsEtherChipSet object for backwards + compatability may continue to use these values. + For those chipsets not represented in this + module, registration is required in other + documentation, e.g., assignment within that + part of the registration tree delegated to + individual enterprises (see RFC 1155 and RFC + 1902)." + + REVISION "9908240400Z" -- August 24, 1999 + DESCRIPTION "Initial version of this module created by + splitting the chipset registration information + out from the EtherLike-MIB. + Version published as RFC 2666." + ::= { mib-2 70 } + + dot3ChipSets OBJECT IDENTIFIER ::= { dot3 8 } + + dot3ChipSetAMD OBJECT IDENTIFIER ::= { dot3ChipSets 1 } + + dot3ChipSetAMD7990 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am7990 Local Area Network + Controller for Ethernet (LANCE)." + ::= { dot3ChipSetAMD 1 } + + dot3ChipSetAMD79900 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79900 chip." + ::= { dot3ChipSetAMD 2 } + + dot3ChipSetAMD79C940 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C940 Media Access Controller + for Ethernet (MACE)." + ::= { dot3ChipSetAMD 3 } + + dot3ChipSetAMD79C90 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C90 CMOS Local Area Network + Controller for Ethernet (C-LANCE)." + ::= { dot3ChipSetAMD 4 } + + dot3ChipSetAMD79C960 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C960 PCnet-ISA Single Chip + Ethernet Controller for ISA." + ::= { dot3ChipSetAMD 5 } + + dot3ChipSetAMD79C961 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C961 PCnet-ISA+ Single Chip + Plug & Play Full-Duplex Ethernet Controller + for ISA." + ::= { dot3ChipSetAMD 6 } + + dot3ChipSetAMD79C961A OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C961A PCnet-ISA II Single Chip + Plug & Play Full-Duplex Ethernet Controller + for ISA." + ::= { dot3ChipSetAMD 7 } + + dot3ChipSetAMD79C965 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C965 PCnet-32 Single Chip + Ethernet Controller for PCI." + ::= { dot3ChipSetAMD 8 } + + dot3ChipSetAMD79C970 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C970 PCnet PCI Single Chip + Ethernet Controller for PCI Local Bus." + ::= { dot3ChipSetAMD 9 } + + dot3ChipSetAMD79C970A OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices AM79C970A PCnet PCI II Single Chip + Full-Duplex Ethernet Controller for PCI Local + Bus." + ::= { dot3ChipSetAMD 10 } + + dot3ChipSetAMD79C971 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C971 PCnet-FAST Single Chip + Full-Duplex 10/100 Mbps Ethernet Controller for + PCI Local Bus." + ::= { dot3ChipSetAMD 11 } + + dot3ChipSetAMD79C972 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Advanced + Micro Devices Am79C972 PCnet-FAST+ Enhanced + 10/100 Mbps PCI Ethernet Controller with OnNow + Support." + ::= { dot3ChipSetAMD 12 } + + dot3ChipSetIntel OBJECT IDENTIFIER ::= { dot3ChipSets 2 } + + dot3ChipSetIntel82586 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82586 IEEE 802.3 Ethernet LAN Coprocessor." + ::= { dot3ChipSetIntel 1 } + + dot3ChipSetIntel82596 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82596 High-Performance 32-Bit Local Area Network + Coprocessor." + ::= { dot3ChipSetIntel 2 } + + dot3ChipSetIntel82595 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82595 High Integration Ethernet Controller." + ::= { dot3ChipSetIntel 3 } + + dot3ChipSetIntel82557 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82557 Fast Ethernet PCI Bus Lan Controller." + ::= { dot3ChipSetIntel 4 } + + dot3ChipSetIntel82558 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Intel + 82558 Fast Ethernet PCI Bus LAN Controller with + Integrated PHY." + ::= { dot3ChipSetIntel 5 } + + dot3ChipSetSeeq OBJECT IDENTIFIER ::= { dot3ChipSets 3 } + + dot3ChipSetSeeq8003 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 8003 chip set." + ::= { dot3ChipSetSeeq 1 } + + dot3ChipSetSeeq80C03 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 80C03 Full-Duplex CMOS Ethernet Data Link + Controller (MAC)." + ::= { dot3ChipSetSeeq 2 } + + dot3ChipSetSeeq84C30 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 84C30 Full-Duplex CMOS Ethernet 10 + MBit/Sec Data Link Controller (MAC)." + ::= { dot3ChipSetSeeq 3 } + + dot3ChipSetSeeq8431 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 8431 Full-Duplex CMOS Ethernet 10 + MBit/Sec Data Link Controller (MAC)." + ::= { dot3ChipSetSeeq 4 } + + dot3ChipSetSeeq80C300 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 80C300 Full-Duplex CMOS Ethernet 10/100 + Mbit/Sec Data Link Controller (MAC)." + ::= { dot3ChipSetSeeq 5 } + + dot3ChipSetSeeq84C300 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 84C300 Fast Ethernet Controller (MAC)." + ::= { dot3ChipSetSeeq 6 } + + dot3ChipSetSeeq84301 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 84301 Fast Ethernet Controller (MAC)." + ::= { dot3ChipSetSeeq 7 } + + dot3ChipSetSeeq84302 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 4-Port 84302 Fast Ethernet Controller (MAC)." + ::= { dot3ChipSetSeeq 8 } + + dot3ChipSetSeeq8100 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the SEEQ + 8100 Gigabit Ethernet Controller (MAC & PCS)." + ::= { dot3ChipSetSeeq 9 } + + dot3ChipSetNational OBJECT IDENTIFIER ::= { dot3ChipSets 4 } + + dot3ChipSetNational8390 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP8390 Network Interface + Controller." + ::= { dot3ChipSetNational 1 } + + dot3ChipSetNationalSonic OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83932 Systems-Oriented Network + Interface Controller (SONIC)." + ::= { dot3ChipSetNational 2 } + + dot3ChipSetNational83901 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83901 Serial Network Interface + Controller (SNIC)." + ::= { dot3ChipSetNational 3 } + + dot3ChipSetNational83902 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83902 Serial Network Interface + Controller for Twisted Pair (ST-NIC)." + ::= { dot3ChipSetNational 4 } + + dot3ChipSetNational83905 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83905 AT Local Area Network + Twisted-Pair Interface (AT/LANTIC)." + ::= { dot3ChipSetNational 5 } + + dot3ChipSetNational83907 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83907 AT Twisted-Pair Enhanced + Coaxial Network Interface Controller + (AT/LANTIC II)." + ::= { dot3ChipSetNational 6 } + + dot3ChipSetNational83916 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83916 Systems-Oriented Network + Interface Controller (SONIC-16)." + ::= { dot3ChipSetNational 7 } + + dot3ChipSetNational83934 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83934 Systems-Oriented Network + Interface Controller with Twisted Pair Interface + (SONIC-T)." + ::= { dot3ChipSetNational 8 } + + dot3ChipSetNational83936 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the National + Semiconductor DP83936AVUL Full-Duplex Systems- + Oriented Network Interface Controller with + Twisted Pair Interface (SONIC-T)." + ::= { dot3ChipSetNational 9 } + + dot3ChipSetFujitsu OBJECT IDENTIFIER ::= { dot3ChipSets 5 } + + dot3ChipSetFujitsu86950 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + 86950 chip." + ::= { dot3ChipSetFujitsu 1 } + + dot3ChipSetFujitsu86960 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + MB86960 Network Interface Controller with + Encoder/Decoder (NICE)." + ::= { dot3ChipSetFujitsu 2 } + + dot3ChipSetFujitsu86964 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + MB86964 Ethernet Controller with 10BASE-T + Tranceiver." + ::= { dot3ChipSetFujitsu 3 } + + dot3ChipSetFujitsu86965A OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + MB86965A EtherCoupler Single-Chip Ethernet + Controller." + ::= { dot3ChipSetFujitsu 4 } + + dot3ChipSetFujitsu86965B OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Fujitsu + MB86965B EtherCoupler Single-Chip Ethernet + Controller (supports full-duplex)." + ::= { dot3ChipSetFujitsu 5 } + + dot3ChipSetDigital OBJECT IDENTIFIER ::= { dot3ChipSets 6 } + + dot3ChipSetDigitalDC21040 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor DC21040 chip." + ::= { dot3ChipSetDigital 1 } + + dot3ChipSetDigital21041 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21041 PCI Ethernet LAN + Controller." + ::= { dot3ChipSetDigital 2 } + + dot3ChipSetDigital21140 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21140 PCI Fast Ethernet LAN + Controller." + ::= { dot3ChipSetDigital 3 } + + dot3ChipSetDigital21143 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21143 PCI/CardBus 10/100-Mb/s + Ethernet LAN Controller." + ::= { dot3ChipSetDigital 4 } + + dot3ChipSetDigital21340 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21340 10/100-MB/s managed buffered + port switch." + ::= { dot3ChipSetDigital 5 } + + dot3ChipSetDigital21440 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21440 Multiport 10/100Mbps + Ethernet Controller." + ::= { dot3ChipSetDigital 6 } + + dot3ChipSetDigital21540 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Digital + Semiconductor 21540 PCI/CardBus Ethernet LAN + Controller with Modem Interface." + ::= { dot3ChipSetDigital 7 } + + dot3ChipSetTI OBJECT IDENTIFIER ::= { dot3ChipSets 7 } + + dot3ChipSetTIE100 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETE100 ThunderLAN PCI Fast + Ethernet Controller." + ::= { dot3ChipSetTI 1 } + + dot3ChipSetTIE110 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETE110 ThunderLAN PCI 10BASE-T + Ethernet Adapter." + ::= { dot3ChipSetTI 2 } + + dot3ChipSetTIX3100 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETX3100 Desktop ThunderSWITCH + 8/2." + ::= { dot3ChipSetTI 3 } + + dot3ChipSetTIX3150 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETX3150 ThunderSWITCH 12/3." + ::= { dot3ChipSetTI 4 } + + dot3ChipSetTIX3270 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Texas + Instruments TNETX3270 ThunderSWITCH 24/3." + ::= { dot3ChipSetTI 5 } + + dot3ChipSetToshiba OBJECT IDENTIFIER ::= { dot3ChipSets 8 } + + dot3ChipSetToshibaTC35815F OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Toshiba + TC35815F PCI-Based 100/10Mbps Ethernet + Controller." + ::= { dot3ChipSetToshiba 1 } + + dot3ChipSetLucent OBJECT IDENTIFIER ::= { dot3ChipSets 9 } + + dot3ChipSetLucentATT1MX10 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Lucent + Technologies ATT1MX10 (Spinnaker) Quad MAC and + Tranceiver for Ethernet Frame Switching." + ::= { dot3ChipSetLucent 1 } + + dot3ChipSetLucentLUC3M08 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Lucent + Technologies LUC3M08 Eight Ethernet MACs for + 10/100 Mbits/s Frame Switching." + ::= { dot3ChipSetLucent 2 } + + dot3ChipSetGalileo OBJECT IDENTIFIER ::= { dot3ChipSets 10 } + + dot3ChipSetGalileoGT48001 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48001A Switched Ethernet + Controller." + ::= { dot3ChipSetGalileo 1 } + + dot3ChipSetGalileoGT48002 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48002A Switched Fast Ethernet + Controller." + ::= { dot3ChipSetGalileo 2 } + + dot3ChipSetGalileoGT48004 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48004A Four Port Fast Ethernet + Switch for Multiport 10/100BASE-X Systems." + ::= { dot3ChipSetGalileo 3 } + + dot3ChipSetGalileoGT48207 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48207 Low-Cost 10 Port Switched + Ethernet Controller for 10+10/100BASE-X." + ::= { dot3ChipSetGalileo 4 } + + dot3ChipSetGalileoGT48208 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48208 Advanced 10 Port Switched + Ethernet Controller for 10+10/100BASE-X." + ::= { dot3ChipSetGalileo 5 } + + dot3ChipSetGalileoGT48212 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Galileo + Technology GT-48212 Advanced 14 Port Switched + Ethernet Controller for 10+10/100BASE-X." + ::= { dot3ChipSetGalileo 6 } + + dot3ChipSetJato OBJECT IDENTIFIER ::= { dot3ChipSets 11 } + + dot3ChipSetJatoJT1001 OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the Jato + Technologies JT1001 GigEMAC Server + 10/100/1000Mbps Ethernet Controller with PCI + interface." + ::= { dot3ChipSetJato 1 } + + dot3ChipSetXaQti OBJECT IDENTIFIER ::= { dot3ChipSets 12 } + + dot3ChipSetXaQtiXQ11800FP OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the XaQTI + XQ11800FP XMAC II Gigabit Ethernet Media Access + Controller." + ::= { dot3ChipSetXaQti 1 } + + dot3ChipSetXaQtiXQ18110FP OBJECT-IDENTITY + STATUS current + DESCRIPTION "The authoritative identifier for the XaQTI + XQ18110FP GigaPower Protocol Accelerator." + ::= { dot3ChipSetXaQti 2 } + +END diff --git a/mibs/ietf/ETHER-WIS b/mibs/ietf/ETHER-WIS new file mode 100644 index 0000000..4763005 --- /dev/null +++ b/mibs/ietf/ETHER-WIS @@ -0,0 +1,730 @@ +ETHER-WIS DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Gauge32, transmission + FROM SNMPv2-SMI + ifIndex + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + sonetMediumStuff2, sonetSectionStuff2, + sonetLineStuff2, sonetFarEndLineStuff2, + sonetPathStuff2, sonetFarEndPathStuff2, + sonetMediumType, sonetMediumLineCoding, + sonetMediumLineType, sonetMediumCircuitIdentifier, + sonetMediumLoopbackConfig, sonetSESthresholdSet, + sonetPathCurrentWidth + FROM SONET-MIB; + +etherWisMIB MODULE-IDENTITY + LAST-UPDATED "200309190000Z" -- September 19, 2003 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB + Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + Chair: Dan Romascanu + Postal: Avaya Inc. + Atidim Technology Park, Bldg. 3 + Tel Aviv 61131 + Israel + Tel: +972 3 645 8414 + E-mail: dromasca@avaya.com + + Editor: C. M. Heard + Postal: 600 Rainbow Dr. #141 + Mountain View, CA 94041-2542 + USA + Tel: +1 650-964-8391 + E-mail: heard@pobox.com" + + + + DESCRIPTION + "The objects in this MIB module are used in conjunction + with objects in the SONET-MIB and the MAU-MIB to manage + the Ethernet WAN Interface Sublayer (WIS). + + The following reference is used throughout this MIB module: + + [IEEE 802.3 Std] refers to: + IEEE Std 802.3, 2000 Edition: 'IEEE Standard for + Information technology - Telecommunications and + information exchange between systems - Local and + metropolitan area networks - Specific requirements - + Part 3: Carrier sense multiple access with collision + detection (CSMA/CD) access method and physical layer + specifications', as amended by IEEE Std 802.3ae-2002, + 'IEEE Standard for Carrier Sense Multiple Access with + Collision Detection (CSMA/CD) Access Method and + Physical Layer Specifications - Media Access Control + (MAC) Parameters, Physical Layer and Management + Parameters for 10 Gb/s Operation', 30 August 2002. + + Of particular interest are Clause 50, 'WAN Interface + Sublayer (WIS), type 10GBASE-W', Clause 30, '10Mb/s, + 100Mb/s, 1000Mb/s, and 10Gb/s MAC Control, and Link + Aggregation Management', and Clause 45, 'Management + Data Input/Output (MDIO) Interface'. + + Copyright (C) The Internet Society (2003). This version + of this MIB module is part of RFC 3637; see the RFC + itself for full legal notices." + + REVISION "200309190000Z" -- September 19, 2003 + DESCRIPTION "Initial version, published as RFC 3637." + + ::= { transmission 134 } + +-- The main sections of the module + +etherWisObjects OBJECT IDENTIFIER ::= { etherWisMIB 1 } + +etherWisObjectsPath OBJECT IDENTIFIER ::= { etherWisMIB 2 } + +etherWisConformance OBJECT IDENTIFIER ::= { etherWisMIB 3 } + + + + + + + + +-- groups in the Ethernet WIS MIB module + +etherWisDevice OBJECT IDENTIFIER ::= { etherWisObjects 1 } + +etherWisSection OBJECT IDENTIFIER ::= { etherWisObjects 2 } + +etherWisPath OBJECT IDENTIFIER ::= { etherWisObjectsPath 1 } + +etherWisFarEndPath OBJECT IDENTIFIER ::= { etherWisObjectsPath 2 } + + +-- The Device group + +-- These objects provide WIS extensions to +-- the SONET-MIB Medium Group. + +etherWisDeviceTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherWisDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table for Ethernet WIS devices" + ::= { etherWisDevice 1 } + +etherWisDeviceEntry OBJECT-TYPE + SYNTAX EtherWisDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Ethernet WIS device table. For each + instance of this object there MUST be a corresponding + instance of sonetMediumEntry." + INDEX { ifIndex } + ::= { etherWisDeviceTable 1 } + +EtherWisDeviceEntry ::= + SEQUENCE { + etherWisDeviceTxTestPatternMode INTEGER, + etherWisDeviceRxTestPatternMode INTEGER, + etherWisDeviceRxTestPatternErrors Gauge32 + } + + + + + + + + + + +etherWisDeviceTxTestPatternMode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + squareWave(2), + prbs31(3), + mixedFrequency(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable controls the transmit test pattern mode. + The value none(1) puts the the WIS transmit path into + the normal operating mode. The value squareWave(2) puts + the WIS transmit path into the square wave test pattern + mode described in [IEEE 802.3 Std.] subclause 50.3.8.1. + The value prbs31(3) puts the WIS transmit path into the + PRBS31 test pattern mode described in [IEEE 802.3 Std.] + subclause 50.3.8.2. The value mixedFrequency(4) puts the + WIS transmit path into the mixed frequency test pattern + mode described in [IEEE 802.3 Std.] subclause 50.3.8.3. + Any attempt to set this object to a value other than + none(1) when the corresponding instance of ifAdminStatus + has the value up(1) MUST be rejected with the error + inconsistentValue, and any attempt to set the corresponding + instance of ifAdminStatus to the value up(1) when an + instance of this object has a value other than none(1) + MUST be rejected with the error inconsistentValue." + REFERENCE + "[IEEE 802.3 Std.], 50.3.8, WIS test pattern generator and + checker, 45.2.2.6, 10G WIS control 2 register (2.7), and + 45.2.2.7.2, PRBS31 pattern testing ability (2.8.1)." + ::= { etherWisDeviceEntry 1 } + +etherWisDeviceRxTestPatternMode OBJECT-TYPE + SYNTAX INTEGER { + none(1), + prbs31(3), + mixedFrequency(4) + } + MAX-ACCESS read-write + STATUS current + + + + + + + + + + + DESCRIPTION + "This variable controls the receive test pattern mode. + The value none(1) puts the the WIS receive path into the + normal operating mode. The value prbs31(3) puts the WIS + receive path into the PRBS31 test pattern mode described + in [IEEE 802.3 Std.] subclause 50.3.8.2. The value + mixedFrequency(4) puts the WIS receive path into the mixed + frequency test pattern mode described in [IEEE 802.3 Std.] + subclause 50.3.8.3. Any attempt to set this object to a + value other than none(1) when the corresponding instance + of ifAdminStatus has the value up(1) MUST be rejected with + the error inconsistentValue, and any attempt to set the + corresponding instance of ifAdminStatus to the value up(1) + when an instance of this object has a value other than + none(1) MUST be rejected with the error inconsistentValue." + REFERENCE + "[IEEE 802.3 Std.], 50.3.8, WIS test pattern generator and + checker, 45.2.2.6, 10G WIS control 2 register (2.7), and + 45.2.2.7.2, PRBS31 pattern testing ability (2.8.1)." + ::= { etherWisDeviceEntry 2 } + +etherWisDeviceRxTestPatternErrors OBJECT-TYPE + SYNTAX Gauge32 ( 0..65535 ) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object counts the number of errors detected when the + WIS receive path is operating in the PRBS31 test pattern + mode. It is reset to zero when the WIS receive path + initially enters that mode, and it increments each time + the PRBS pattern checker detects an error as described in + [IEEE 802.3 Std.] subclause 50.3.8.2 unless its value is + 65535, in which case it remains unchanged. This object is + writeable so that it may be reset upon explicit request + of a command generator application while the WIS receive + path continues to operate in PRBS31 test pattern mode." + REFERENCE + "[IEEE 802.3 Std.], 50.3.8, WIS test pattern generator and + checker, 45.2.2.7.2, PRBS31 pattern testing ability + (2.8.1), and 45.2.2.8, 10G WIS test pattern error counter + register (2.9)." + ::= { etherWisDeviceEntry 3 } + + + + + + + + + +-- The Section group + +-- These objects provide WIS extensions to +-- the SONET-MIB Section Group. + +etherWisSectionCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherWisSectionCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table for the current state of Ethernet WIS sections." + ::= { etherWisSection 1 } + +etherWisSectionCurrentEntry OBJECT-TYPE + SYNTAX EtherWisSectionCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the etherWisSectionCurrentTable. For each + instance of this object there MUST be a corresponding + instance of sonetSectionCurrentEntry." + INDEX { ifIndex } + ::= { etherWisSectionCurrentTable 1 } + +EtherWisSectionCurrentEntry ::= + SEQUENCE { + etherWisSectionCurrentJ0Transmitted OCTET STRING, + etherWisSectionCurrentJ0Received OCTET STRING + } + +etherWisSectionCurrentJ0Transmitted OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (16)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the 16-octet section trace message that + is transmitted in the J0 byte. The value SHOULD + be '89'h followed by fifteen octets of '00'h + (or some cyclic shift thereof) when the section + trace function is not used, and the implementation + SHOULD use that value (or a cyclic shift thereof) + as a default if no other value has been set." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.8, aJ0ValueTX." + ::= { etherWisSectionCurrentEntry 1 } + + + + + + +etherWisSectionCurrentJ0Received OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the 16-octet section trace message that + was most recently received in the J0 byte." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.9, aJ0ValueRX." + ::= { etherWisSectionCurrentEntry 2 } + + +-- The Path group + +-- These objects provide WIS extensions to +-- the SONET-MIB Path Group. + +etherWisPathCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherWisPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table for the current state of Ethernet WIS paths." + ::= { etherWisPath 1 } + +etherWisPathCurrentEntry OBJECT-TYPE + SYNTAX EtherWisPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the etherWisPathCurrentTable. For each + instance of this object there MUST be a corresponding + instance of sonetPathCurrentEntry." + INDEX { ifIndex } + ::= { etherWisPathCurrentTable 1 } + +EtherWisPathCurrentEntry ::= + SEQUENCE { + etherWisPathCurrentStatus BITS, + etherWisPathCurrentJ1Transmitted OCTET STRING, + etherWisPathCurrentJ1Received OCTET STRING + } + + + + + + + + + +etherWisPathCurrentStatus OBJECT-TYPE + SYNTAX BITS { + etherWisPathLOP(0), + etherWisPathAIS(1), + etherWisPathPLM(2), + etherWisPathLCD(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the current status of the + path payload with a bit map that can indicate multiple + defects at once. The bit positions are assigned as + follows: + + etherWisPathLOP(0) + This bit is set to indicate that an + LOP-P (Loss of Pointer - Path) defect + is being experienced. Note: when this + bit is set, sonetPathSTSLOP MUST be set + in the corresponding instance of + sonetPathCurrentStatus. + + etherWisPathAIS(1) + This bit is set to indicate that an + AIS-P (Alarm Indication Signal - Path) + defect is being experienced. Note: when + this bit is set, sonetPathSTSAIS MUST be + set in the corresponding instance of + sonetPathCurrentStatus. + + etherWisPathPLM(1) + This bit is set to indicate that a + PLM-P (Payload Label Mismatch - Path) + defect is being experienced. Note: when + this bit is set, sonetPathSignalLabelMismatch + MUST be set in the corresponding instance of + sonetPathCurrentStatus. + + + + + + + + + + + + + + etherWisPathLCD(3) + This bit is set to indicate that an + LCD-P (Loss of Codegroup Delination - Path) + defect is being experienced. Since this + defect is detected by the PCS and not by + the path layer itself, there is no + corresponding bit in sonetPathCurrentStatus." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.18, aPathStatus." + ::= { etherWisPathCurrentEntry 1 } + +etherWisPathCurrentJ1Transmitted OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (16)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the 16-octet path trace message that + is transmitted in the J1 byte. The value SHOULD + be '89'h followed by fifteen octets of '00'h + (or some cyclic shift thereof) when the path + trace function is not used, and the implementation + SHOULD use that value (or a cyclic shift thereof) + as a default if no other value has been set." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.23, aJ1ValueTX." + ::= { etherWisPathCurrentEntry 2 } + +etherWisPathCurrentJ1Received OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the 16-octet path trace message that + was most recently received in the J1 byte." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.24, aJ1ValueRX." + ::= { etherWisPathCurrentEntry 3 } + + + + + + + + + + + + + + +-- The Far End Path group + +-- These objects provide WIS extensions to +-- the SONET-MIB Far End Path Group. + +etherWisFarEndPathCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherWisFarEndPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table for the current far-end state of Ethernet WIS + paths." + ::= { etherWisFarEndPath 1 } + +etherWisFarEndPathCurrentEntry OBJECT-TYPE + SYNTAX EtherWisFarEndPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the etherWisFarEndPathCurrentTable. For each + instance of this object there MUST be a corresponding + instance of sonetFarEndPathCurrentEntry." + INDEX { ifIndex } + ::= { etherWisFarEndPathCurrentTable 1 } + +EtherWisFarEndPathCurrentEntry ::= + SEQUENCE { + etherWisFarEndPathCurrentStatus BITS + } + +etherWisFarEndPathCurrentStatus OBJECT-TYPE + SYNTAX BITS { + etherWisFarEndPayloadDefect(0), + etherWisFarEndServerDefect(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the current status at the + far end of the path using a bit map that can indicate + multiple defects at once. The bit positions are + assigned as follows: + + etherWisFarEndPayloadDefect(0) + A far end payload defect (i.e., far end + PLM-P or LCD-P) is currently being signaled + in G1 bits 5-7. + + + + + etherWisFarEndServerDefect(1) + A far end server defect (i.e., far end + LOP-P or AIS-P) is currently being signaled + in G1 bits 5-7. Note: when this bit is set, + sonetPathSTSRDI MUST be set in the corresponding + instance of sonetPathCurrentStatus." + REFERENCE + "[IEEE 802.3 Std.], 30.8.1.1.25, aFarEndPathStatus." + ::= { etherWisFarEndPathCurrentEntry 1 } + + +-- +-- Conformance Statements +-- + +etherWisGroups OBJECT IDENTIFIER ::= { etherWisConformance 1 } + +etherWisCompliances OBJECT IDENTIFIER ::= { etherWisConformance 2 } + +-- Object Groups + +etherWisDeviceGroupBasic OBJECT-GROUP + OBJECTS { + etherWisDeviceTxTestPatternMode, + etherWisDeviceRxTestPatternMode + } + STATUS current + DESCRIPTION + "A collection of objects that support test + features required of all WIS devices." + ::= { etherWisGroups 1 } + +etherWisDeviceGroupExtra OBJECT-GROUP + OBJECTS { + etherWisDeviceRxTestPatternErrors + } + STATUS current + DESCRIPTION + "A collection of objects that support + optional WIS device test features." + ::= { etherWisGroups 2 } + + + + + + + + + + +etherWisSectionGroup OBJECT-GROUP + OBJECTS { + etherWisSectionCurrentJ0Transmitted, + etherWisSectionCurrentJ0Received + } + STATUS current + DESCRIPTION + "A collection of objects that provide + required information about a WIS section." + ::= { etherWisGroups 3 } + +etherWisPathGroup OBJECT-GROUP + OBJECTS { + etherWisPathCurrentStatus, + etherWisPathCurrentJ1Transmitted, + etherWisPathCurrentJ1Received + } + STATUS current + DESCRIPTION + "A collection of objects that provide + required information about a WIS path." + ::= { etherWisGroups 4 } + +etherWisFarEndPathGroup OBJECT-GROUP + OBJECTS { + etherWisFarEndPathCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of objects that provide required + information about the far end of a WIS path." + ::= { etherWisGroups 5 } + +-- Compliance Statements + +etherWisCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for interfaces that include + the Ethernet WIS. Compliance with the following + external compliance statements is prerequisite: + + MIB Module Compliance Statement + ---------- -------------------- + IF-MIB ifCompliance3 + IF-INVERTED-STACK-MIB ifInvCompliance + EtherLike-MIB dot3Compliance2 + MAU-MIB mauModIfCompl3" + + + + MODULE -- this module + MANDATORY-GROUPS { + etherWisDeviceGroupBasic, + etherWisSectionGroup, + etherWisPathGroup, + etherWisFarEndPathGroup + } + + OBJECT etherWisDeviceTxTestPatternMode + SYNTAX INTEGER { + none(1), + squareWave(2), + mixedFrequency(4) + } + DESCRIPTION + "Support for values other than none(1), + squareWave(2), and mixedFrequency(4) + is not required." + + OBJECT etherWisDeviceRxTestPatternMode + SYNTAX INTEGER { + none(1), + mixedFrequency(4) + } + DESCRIPTION + "Support for values other than none(1) + and mixedFrequency(4) is not required." + + GROUP etherWisDeviceGroupExtra + DESCRIPTION + "Implementation of this group, along with support for + the value prbs31(3) for etherWisDeviceTxTestPatternMode + and etherWisDeviceRxTestPatternMode, is necessary if the + optional PRBS31 test pattern mode is to be supported." + + OBJECT etherWisDeviceRxTestPatternErrors + WRITE-SYNTAX Gauge32 ( 0 ) + DESCRIPTION + "An implementation is not required to + allow values other than zero to be + written to this object." + + + + + + + + + + + MODULE SONET-MIB + MANDATORY-GROUPS { + sonetMediumStuff2, + sonetSectionStuff2, + sonetLineStuff2, + sonetFarEndLineStuff2, + sonetPathStuff2, + sonetFarEndPathStuff2 + } + + OBJECT sonetMediumType + SYNTAX INTEGER { + sonet(1) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support + for any value other than sonet(1)." + + OBJECT sonetMediumLineCoding + SYNTAX INTEGER { + sonetMediumNRZ(4) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support + for any value other than sonetMediumNRZ(4)." + + OBJECT sonetMediumLineType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumCircuitIdentifier + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumLoopbackConfig + SYNTAX BITS { + sonetNoLoop(0), + sonetFacilityLoop(1) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for values + other than sonetNoLoop(0) and sonetFacilityLoop(1)." + + + + + OBJECT sonetSESthresholdSet + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the enumerated values need be supported." + + OBJECT sonetPathCurrentWidth + SYNTAX INTEGER { + sts192cSTM64(6) + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support + for any value other than sts192cSTM64(6)." + + ::= { etherWisCompliances 1 } + +END diff --git a/mibs/ietf/EtherLike-MIB b/mibs/ietf/EtherLike-MIB new file mode 100644 index 0000000..bd0a94a --- /dev/null +++ b/mibs/ietf/EtherLike-MIB @@ -0,0 +1,1954 @@ +EtherLike-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Integer32, Counter32, Counter64, mib-2, transmission + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TruthValue + FROM SNMPv2-TC + ifIndex, InterfaceIndex + FROM IF-MIB; + + etherMIB MODULE-IDENTITY + LAST-UPDATED "200309190000Z" -- September 19, 2003 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB + Working Group" + CONTACT-INFO + "WG E-mail: hubmib@ietf.org + To subscribe: hubmib-request@ietf.org + + Chair: Dan Romascanu + Postal: Avaya Inc. + Atidum Technology Park, Bldg. 3 + Tel Aviv 61131 + Israel + Tel: +972 3 645 8414 + E-mail: dromasca@avaya.com + + Editor: John Flick + Postal: Hewlett-Packard Company + 8000 Foothills Blvd. M/S 5557 + Roseville, CA 95747-5557 + USA + Tel: +1 916 785 4018 + Fax: +1 916 785 1199 + E-mail: johnf@rose.hp.com" + + DESCRIPTION "The MIB module to describe generic objects for + ethernet-like network interfaces. + + The following reference is used throughout this + MIB module: + + [IEEE 802.3 Std] refers to: + IEEE Std 802.3, 2002 Edition: 'IEEE Standard + + + + for Information technology - + Telecommunications and information exchange + between systems - Local and metropolitan + area networks - Specific requirements - + Part 3: Carrier sense multiple access with + collision detection (CSMA/CD) access method + and physical layer specifications', as + amended by IEEE Std 802.3ae-2002: + 'Amendment: Media Access Control (MAC) + Parameters, Physical Layer, and Management + Parameters for 10 Gb/s Operation', August, + 2002. + + Of particular interest is Clause 30, '10 Mb/s, + 100 Mb/s, 1000 Mb/s, and 10 Gb/s Management'. + + Copyright (C) The Internet Society (2003). This + version of this MIB module is part of RFC 3635; + see the RFC itself for full legal notices." + + REVISION "200309190000Z" -- September 19, 2003 + DESCRIPTION "Updated to include support for 10 Gb/sec + interfaces. This resulted in the following + revisions: + + - Updated dot3StatsAlignmentErrors and + dot3StatsSymbolErrors DESCRIPTIONs to + reflect behaviour at 10 Gb/s + - Added dot3StatsRateControlAbility and + dot3RateControlStatus for management + of the Rate Control function in 10 Gb/s + WAN applications + - Added 64-bit versions of all counters + that are used on high-speed ethernet + interfaces + - Added object groups to contain the new + objects + - Deprecated etherStatsBaseGroup and + split into etherStatsBaseGroup2 and + etherStatsHalfDuplexGroup, so that + interfaces which can only operate at + full-duplex do not need to implement + half-duplex-only statistics + - Deprecated dot3Compliance and replaced + it with dot3Compliance2, which includes + the compliance information for the new + object groups + + + + + In addition, the dot3Tests and dot3Errors + object identities have been deprecated, + since there is no longer a standard method + for using them. + + This version published as RFC 3635." + + REVISION "199908240400Z" -- August 24, 1999 + DESCRIPTION "Updated to include support for 1000 Mb/sec + interfaces and full-duplex interfaces. + This version published as RFC 2665." + + REVISION "199806032150Z" -- June 3, 1998 + DESCRIPTION "Updated to include support for 100 Mb/sec + interfaces. + This version published as RFC 2358." + + REVISION "199402030400Z" -- February 3, 1994 + DESCRIPTION "Initial version, published as RFC 1650." + ::= { mib-2 35 } + + etherMIBObjects OBJECT IDENTIFIER ::= { etherMIB 1 } + + dot3 OBJECT IDENTIFIER ::= { transmission 7 } + + -- the Ethernet-like Statistics group + + dot3StatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Statistics for a collection of ethernet-like + interfaces attached to a particular system. + There will be one row in this table for each + ethernet-like interface in the system." + ::= { dot3 2 } + + dot3StatsEntry OBJECT-TYPE + SYNTAX Dot3StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Statistics for a particular interface to an + ethernet-like medium." + INDEX { dot3StatsIndex } + ::= { dot3StatsTable 1 } + + Dot3StatsEntry ::= + SEQUENCE { + + + + dot3StatsIndex InterfaceIndex, + dot3StatsAlignmentErrors Counter32, + dot3StatsFCSErrors Counter32, + dot3StatsSingleCollisionFrames Counter32, + dot3StatsMultipleCollisionFrames Counter32, + dot3StatsSQETestErrors Counter32, + dot3StatsDeferredTransmissions Counter32, + dot3StatsLateCollisions Counter32, + dot3StatsExcessiveCollisions Counter32, + dot3StatsInternalMacTransmitErrors Counter32, + dot3StatsCarrierSenseErrors Counter32, + dot3StatsFrameTooLongs Counter32, + dot3StatsInternalMacReceiveErrors Counter32, + dot3StatsEtherChipSet OBJECT IDENTIFIER, + dot3StatsSymbolErrors Counter32, + dot3StatsDuplexStatus INTEGER, + dot3StatsRateControlAbility TruthValue, + dot3StatsRateControlStatus INTEGER + } + + dot3StatsIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "An index value that uniquely identifies an + interface to an ethernet-like medium. The + interface identified by a particular value of + this index is the same interface as identified + by the same value of ifIndex." + REFERENCE "RFC 2863, ifIndex" + ::= { dot3StatsEntry 1 } + + dot3StatsAlignmentErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that are not an integral number of + octets in length and do not pass the FCS check. + + The count represented by an instance of this + object is incremented when the alignmentError + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + + + + to the error status presented to the LLC. + + This counter does not increment for group + encoding schemes greater than 4 bits per group. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsAlignmentErrors object for 10 Gb/s + or faster interfaces. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.7, + aAlignmentErrors" + ::= { dot3StatsEntry 2 } + + dot3StatsFCSErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that are an integral number of octets + in length but do not pass the FCS check. This + count does not include frames received with + frame-too-long or frame-too-short error. + + The count represented by an instance of this + object is incremented when the frameCheckError + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + Note: Coding errors detected by the physical + layer for speeds above 10 Mb/s will cause the + frame to fail the FCS check. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + + + + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsFCSErrors object for 10 Gb/s or + faster interfaces. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.6, + aFrameCheckSequenceErrors." + ::= { dot3StatsEntry 3 } + + dot3StatsSingleCollisionFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames that are involved in a single + collision, and are subsequently transmitted + successfully. + + A frame that is counted by an instance of this + object is also counted by the corresponding + instance of either the ifOutUcastPkts, + ifOutMulticastPkts, or ifOutBroadcastPkts, + and is not counted by the corresponding + instance of the dot3StatsMultipleCollisionFrames + object. + + This counter does not increment when the + interface is operating in full-duplex mode. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.3, + aSingleCollisionFrames." + ::= { dot3StatsEntry 4 } + + dot3StatsMultipleCollisionFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames that are involved in more + + + + than one collision and are subsequently + transmitted successfully. + + A frame that is counted by an instance of this + object is also counted by the corresponding + instance of either the ifOutUcastPkts, + ifOutMulticastPkts, or ifOutBroadcastPkts, + and is not counted by the corresponding + instance of the dot3StatsSingleCollisionFrames + object. + + This counter does not increment when the + interface is operating in full-duplex mode. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.4, + aMultipleCollisionFrames." + ::= { dot3StatsEntry 5 } + + dot3StatsSQETestErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of times that the SQE TEST ERROR + is received on a particular interface. The + SQE TEST ERROR is set in accordance with the + rules for verification of the SQE detection + mechanism in the PLS Carrier Sense Function as + described in IEEE Std. 802.3, 2000 Edition, + section 7.2.4.6. + + This counter does not increment on interfaces + operating at speeds greater than 10 Mb/s, or on + interfaces operating in full-duplex mode. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 7.2.4.6, also 30.3.2.1.4, + aSQETestErrors." + ::= { dot3StatsEntry 6 } + + dot3StatsDeferredTransmissions OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which the first + transmission attempt on a particular interface + is delayed because the medium is busy. + + The count represented by an instance of this + object does not include frames involved in + collisions. + + This counter does not increment when the + interface is operating in full-duplex mode. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.9, + aFramesWithDeferredXmissions." + ::= { dot3StatsEntry 7 } + + dot3StatsLateCollisions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of times that a collision is + detected on a particular interface later than + one slotTime into the transmission of a packet. + + A (late) collision included in a count + represented by an instance of this object is + also considered as a (generic) collision for + purposes of other collision-related + statistics. + + This counter does not increment when the + interface is operating in full-duplex mode. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.10, + aLateCollisions." + ::= { dot3StatsEntry 8 } + + dot3StatsExcessiveCollisions OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which transmission on a + particular interface fails due to excessive + collisions. + + This counter does not increment when the + interface is operating in full-duplex mode. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.11, + aFramesAbortedDueToXSColls." + ::= { dot3StatsEntry 9 } + + dot3StatsInternalMacTransmitErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which transmission on a + particular interface fails due to an internal + MAC sublayer transmit error. A frame is only + counted by an instance of this object if it is + not counted by the corresponding instance of + either the dot3StatsLateCollisions object, the + dot3StatsExcessiveCollisions object, or the + dot3StatsCarrierSenseErrors object. + + The precise meaning of the count represented by + an instance of this object is implementation- + specific. In particular, an instance of this + object may represent a count of transmission + errors on a particular interface that are not + otherwise counted. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsInternalMacTransmitErrors object for + 10 Gb/s or faster interfaces. + + Discontinuities in the value of this counter can + + + + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.12, + aFramesLostDueToIntMACXmitError." + ::= { dot3StatsEntry 10 } + + dot3StatsCarrierSenseErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of times that the carrier sense + condition was lost or never asserted when + attempting to transmit a frame on a particular + interface. + + The count represented by an instance of this + object is incremented at most once per + transmission attempt, even if the carrier sense + condition fluctuates during a transmission + attempt. + + This counter does not increment when the + interface is operating in full-duplex mode. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.13, + aCarrierSenseErrors." + ::= { dot3StatsEntry 11 } + + -- { dot3StatsEntry 12 } is not assigned + + dot3StatsFrameTooLongs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that exceed the maximum permitted + frame size. + + The count represented by an instance of this + object is incremented when the frameTooLong + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + + + + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 80 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsFrameTooLongs object for 10 Gb/s + or faster interfaces. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.25, + aFrameTooLongErrors." + ::= { dot3StatsEntry 13 } + + -- { dot3StatsEntry 14 } is not assigned + + -- { dot3StatsEntry 15 } is not assigned + + dot3StatsInternalMacReceiveErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which reception on a + particular interface fails due to an internal + MAC sublayer receive error. A frame is only + counted by an instance of this object if it is + not counted by the corresponding instance of + either the dot3StatsFrameTooLongs object, the + dot3StatsAlignmentErrors object, or the + dot3StatsFCSErrors object. + + The precise meaning of the count represented by + an instance of this object is implementation- + specific. In particular, an instance of this + object may represent a count of receive errors + on a particular interface that are not + otherwise counted. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + + + + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsInternalMacReceiveErrors object for + 10 Gb/s or faster interfaces. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.15, + aFramesLostDueToIntMACRcvError." + ::= { dot3StatsEntry 16 } + + dot3StatsEtherChipSet OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "******** THIS OBJECT IS DEPRECATED ******** + + This object contains an OBJECT IDENTIFIER + which identifies the chipset used to + realize the interface. Ethernet-like + interfaces are typically built out of + several different chips. The MIB implementor + is presented with a decision of which chip + to identify via this object. The implementor + should identify the chip which is usually + called the Medium Access Control chip. + If no such chip is easily identifiable, + the implementor should identify the chip + which actually gathers the transmit + and receive statistics and error + indications. This would allow a + manager station to correlate the + statistics and the chip generating + them, giving it the ability to take + into account any known anomalies + in the chip. + + This object has been deprecated. Implementation + feedback indicates that it is of limited use for + debugging network problems in the field, and + the administrative overhead involved in + maintaining a registry of chipset OIDs is not + justified." + + + + ::= { dot3StatsEntry 17 } + + dot3StatsSymbolErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For an interface operating at 100 Mb/s, the + number of times there was an invalid data symbol + when a valid carrier was present. + + For an interface operating in half-duplex mode + at 1000 Mb/s, the number of times the receiving + media is non-idle (a carrier event) for a period + of time equal to or greater than slotTime, and + during which there was at least one occurrence + of an event that causes the PHY to indicate + 'Data reception error' or 'carrier extend error' + on the GMII. + + For an interface operating in full-duplex mode + at 1000 Mb/s, the number of times the receiving + media is non-idle (a carrier event) for a period + of time equal to or greater than minFrameSize, + and during which there was at least one + occurrence of an event that causes the PHY to + indicate 'Data reception error' on the GMII. + + For an interface operating at 10 Gb/s, the + number of times the receiving media is non-idle + (a carrier event) for a period of time equal to + or greater than minFrameSize, and during which + there was at least one occurrence of an event + that causes the PHY to indicate 'Receive Error' + on the XGMII. + + The count represented by an instance of this + object is incremented at most once per carrier + event, even if multiple symbol errors occur + during the carrier event. This count does + not increment if a collision is present. + + This counter does not increment when the + interface is operating at 10 Mb/s. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + + + + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCStatsSymbolErrors object for 10 Gb/s + or faster interfaces. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.2.1.5, + aSymbolErrorDuringCarrier." + ::= { dot3StatsEntry 18 } + + dot3StatsDuplexStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + halfDuplex(2), + fullDuplex(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The current mode of operation of the MAC + entity. 'unknown' indicates that the current + duplex mode could not be determined. + + Management control of the duplex mode is + accomplished through the MAU MIB. When + an interface does not support autonegotiation, + or when autonegotiation is not enabled, the + duplex mode is controlled using + ifMauDefaultType. When autonegotiation is + supported and enabled, duplex mode is controlled + using ifMauAutoNegAdvertisedBits. In either + case, the currently operating duplex mode is + reflected both in this object and in ifMauType. + + Note that this object provides redundant + information with ifMauType. Normally, redundant + objects are discouraged. However, in this + instance, it allows a management application to + determine the duplex status of an interface + without having to know every possible value of + ifMauType. This was felt to be sufficiently + valuable to justify the redundancy." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.32, + aDuplexStatus." + ::= { dot3StatsEntry 19 } + + + + dot3StatsRateControlAbility OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "'true' for interfaces operating at speeds above + 1000 Mb/s that support Rate Control through + lowering the average data rate of the MAC + sublayer, with frame granularity, and 'false' + otherwise." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.33, + aRateControlAbility." + ::= { dot3StatsEntry 20 } + + dot3StatsRateControlStatus OBJECT-TYPE + SYNTAX INTEGER { + rateControlOff(1), + rateControlOn(2), + unknown(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The current Rate Control mode of operation of + the MAC sublayer of this interface." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.34, + aRateControlStatus." + ::= { dot3StatsEntry 21 } + + -- the Ethernet-like Collision Statistics group + + -- Implementation of this group is optional; it is appropriate + -- for all systems which have the necessary metering + + dot3CollTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3CollEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A collection of collision histograms for a + particular set of interfaces." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.30, + aCollisionFrames." + ::= { dot3 5 } + + dot3CollEntry OBJECT-TYPE + SYNTAX Dot3CollEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A cell in the histogram of per-frame + collisions for a particular interface. An + + + + instance of this object represents the + frequency of individual MAC frames for which + the transmission (successful or otherwise) on a + particular interface is accompanied by a + particular number of media collisions." + INDEX { ifIndex, dot3CollCount } + ::= { dot3CollTable 1 } + + Dot3CollEntry ::= + SEQUENCE { + dot3CollCount Integer32, + dot3CollFrequencies Counter32 + } + + -- { dot3CollEntry 1 } is no longer in use + + dot3CollCount OBJECT-TYPE + SYNTAX Integer32 (1..16) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The number of per-frame media collisions for + which a particular collision histogram cell + represents the frequency on a particular + interface." + ::= { dot3CollEntry 2 } + + dot3CollFrequencies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of individual MAC frames for which the + transmission (successful or otherwise) on a + particular interface occurs after the + frame has experienced exactly the number + of collisions in the associated + dot3CollCount object. + + For example, a frame which is transmitted + on interface 77 after experiencing + exactly 4 collisions would be indicated + by incrementing only dot3CollFrequencies.77.4. + No other instance of dot3CollFrequencies would + be incremented in this example. + + This counter does not increment when the + interface is operating in full-duplex mode. + + Discontinuities in the value of this counter can + + + + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + ::= { dot3CollEntry 3 } + + dot3ControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3ControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A table of descriptive and status information + about the MAC Control sublayer on the + ethernet-like interfaces attached to a + particular system. There will be one row in + this table for each ethernet-like interface in + the system which implements the MAC Control + sublayer. If some, but not all, of the + ethernet-like interfaces in the system implement + the MAC Control sublayer, there will be fewer + rows in this table than in the dot3StatsTable." + ::= { dot3 9 } + + dot3ControlEntry OBJECT-TYPE + SYNTAX Dot3ControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about the MAC Control sublayer on a single + ethernet-like interface." + INDEX { dot3StatsIndex } + ::= { dot3ControlTable 1 } + + Dot3ControlEntry ::= + SEQUENCE { + dot3ControlFunctionsSupported BITS, + dot3ControlInUnknownOpcodes Counter32, + dot3HCControlInUnknownOpcodes Counter64 + } + + dot3ControlFunctionsSupported OBJECT-TYPE + SYNTAX BITS { + pause(0) -- 802.3 flow control + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A list of the possible MAC Control functions + implemented for this interface." + REFERENCE "[IEEE 802.3 Std.], 30.3.3.2, + aMACControlFunctionsSupported." + + + + ::= { dot3ControlEntry 1 } + + dot3ControlInUnknownOpcodes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames received on this + interface that contain an opcode that is not + supported by this device. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCControlInUnknownOpcodes object for 10 Gb/s + or faster interfaces. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.3.5, + aUnsupportedOpcodesReceived" + ::= { dot3ControlEntry 2 } + + dot3HCControlInUnknownOpcodes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames received on this + interface that contain an opcode that is not + supported by this device. + + This counter is a 64 bit version of + dot3ControlInUnknownOpcodes. It should be used + on interfaces operating at 10 Gb/s or faster. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.3.5, + aUnsupportedOpcodesReceived" + ::= { dot3ControlEntry 3 } + + + + + dot3PauseTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3PauseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A table of descriptive and status information + about the MAC Control PAUSE function on the + ethernet-like interfaces attached to a + particular system. There will be one row in + this table for each ethernet-like interface in + the system which supports the MAC Control PAUSE + function (i.e., the 'pause' bit in the + corresponding instance of + dot3ControlFunctionsSupported is set). If some, + but not all, of the ethernet-like interfaces in + the system implement the MAC Control PAUSE + function (for example, if some interfaces only + support half-duplex), there will be fewer rows + in this table than in the dot3StatsTable." + ::= { dot3 10 } + + dot3PauseEntry OBJECT-TYPE + SYNTAX Dot3PauseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about the MAC Control PAUSE function on a single + ethernet-like interface." + INDEX { dot3StatsIndex } + ::= { dot3PauseTable 1 } + + Dot3PauseEntry ::= + + SEQUENCE { + dot3PauseAdminMode INTEGER, + dot3PauseOperMode INTEGER, + dot3InPauseFrames Counter32, + dot3OutPauseFrames Counter32, + dot3HCInPauseFrames Counter64, + dot3HCOutPauseFrames Counter64 + } + + dot3PauseAdminMode OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabledXmit(2), + enabledRcv(3), + enabledXmitAndRcv(4) + } + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION "This object is used to configure the default + administrative PAUSE mode for this interface. + + This object represents the + administratively-configured PAUSE mode for this + interface. If auto-negotiation is not enabled + or is not implemented for the active MAU + attached to this interface, the value of this + object determines the operational PAUSE mode + of the interface whenever it is operating in + full-duplex mode. In this case, a set to this + object will force the interface into the + specified mode. + + If auto-negotiation is implemented and enabled + for the MAU attached to this interface, the + PAUSE mode for this interface is determined by + auto-negotiation, and the value of this object + denotes the mode to which the interface will + automatically revert if/when auto-negotiation is + later disabled. Note that when auto-negotiation + is running, administrative control of the PAUSE + mode may be accomplished using the + ifMauAutoNegCapAdvertisedBits object in the + MAU-MIB. + + Note that the value of this object is ignored + when the interface is not operating in + full-duplex mode. + + An attempt to set this object to + 'enabledXmit(2)' or 'enabledRcv(3)' will fail + on interfaces that do not support operation + at greater than 100 Mb/s." + ::= { dot3PauseEntry 1 } + + dot3PauseOperMode OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabledXmit(2), + enabledRcv(3), + enabledXmitAndRcv(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object reflects the PAUSE mode currently + + + + in use on this interface, as determined by + either (1) the result of the auto-negotiation + function or (2) if auto-negotiation is not + enabled or is not implemented for the active MAU + attached to this interface, by the value of + dot3PauseAdminMode. Interfaces operating at + 100 Mb/s or less will never return + 'enabledXmit(2)' or 'enabledRcv(3)'. Interfaces + operating in half-duplex mode will always return + 'disabled(1)'. Interfaces on which + auto-negotiation is enabled but not yet + completed should return the value + 'disabled(1)'." + ::= { dot3PauseEntry 2 } + + dot3InPauseFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames received on this + interface with an opcode indicating the PAUSE + operation. + + This counter does not increment when the + interface is operating in half-duplex mode. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCInPauseFrames object for 10 Gb/s or + faster interfaces. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.4.3, + aPAUSEMACCtrlFramesReceived." + ::= { dot3PauseEntry 3 } + + dot3OutPauseFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "A count of MAC Control frames transmitted on + this interface with an opcode indicating the + PAUSE operation. + + This counter does not increment when the + interface is operating in half-duplex mode. + + For interfaces operating at 10 Gb/s, this + counter can roll over in less than 5 minutes if + it is incrementing at its maximum rate. Since + that amount of time could be less than a + management station's poll cycle time, in order + to avoid a loss of information, a management + station is advised to poll the + dot3HCOutPauseFrames object for 10 Gb/s or + faster interfaces. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.4.2, + aPAUSEMACCtrlFramesTransmitted." + ::= { dot3PauseEntry 4 } + + dot3HCInPauseFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames received on this + interface with an opcode indicating the PAUSE + operation. + + This counter does not increment when the + interface is operating in half-duplex mode. + + This counter is a 64 bit version of + dot3InPauseFrames. It should be used on + interfaces operating at 10 Gb/s or faster. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.4.3, + aPAUSEMACCtrlFramesReceived." + ::= { dot3PauseEntry 5 } + + + + + dot3HCOutPauseFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of MAC Control frames transmitted on + this interface with an opcode indicating the + PAUSE operation. + + This counter does not increment when the + interface is operating in half-duplex mode. + + This counter is a 64 bit version of + dot3OutPauseFrames. It should be used on + interfaces operating at 10 Gb/s or faster. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.4.2, + aPAUSEMACCtrlFramesTransmitted." + ::= { dot3PauseEntry 6 } + + dot3HCStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot3HCStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A table containing 64-bit versions of error + counters from the dot3StatsTable. The 32-bit + versions of these counters may roll over quite + quickly on higher speed ethernet interfaces. + The counters that have 64-bit versions in this + table are the counters that apply to full-duplex + interfaces, since 10 Gb/s and faster + ethernet-like interfaces do not support + half-duplex, and very few 1000 Mb/s + ethernet-like interfaces support half-duplex. + + Entries in this table are recommended for + interfaces capable of operating at 1000 Mb/s or + faster, and are required for interfaces capable + of operating at 10 Gb/s or faster. Lower speed + ethernet-like interfaces do not need entries in + this table, in which case there may be fewer + entries in this table than in the + dot3StatsTable. However, implementations + containing interfaces with a mix of speeds may + choose to implement entries in this table for + + + + all ethernet-like interfaces." + ::= { dot3 11 } + + dot3HCStatsEntry OBJECT-TYPE + SYNTAX Dot3HCStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry containing 64-bit statistics for a + single ethernet-like interface." + INDEX { dot3StatsIndex } + ::= { dot3HCStatsTable 1 } + + Dot3HCStatsEntry ::= + SEQUENCE { + dot3HCStatsAlignmentErrors Counter64, + dot3HCStatsFCSErrors Counter64, + dot3HCStatsInternalMacTransmitErrors Counter64, + dot3HCStatsFrameTooLongs Counter64, + dot3HCStatsInternalMacReceiveErrors Counter64, + dot3HCStatsSymbolErrors Counter64 + } + + dot3HCStatsAlignmentErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that are not an integral number of + octets in length and do not pass the FCS check. + + The count represented by an instance of this + object is incremented when the alignmentError + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + This counter does not increment for group + encoding schemes greater than 4 bits per group. + + This counter is a 64 bit version of + dot3StatsAlignmentErrors. It should be used + on interfaces operating at 10 Gb/s or faster. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + + + + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.7, + aAlignmentErrors" + ::= { dot3HCStatsEntry 1 } + + dot3HCStatsFCSErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that are an integral number of octets + in length but do not pass the FCS check. This + count does not include frames received with + frame-too-long or frame-too-short error. + + The count represented by an instance of this + object is incremented when the frameCheckError + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + Note: Coding errors detected by the physical + layer for speeds above 10 Mb/s will cause the + frame to fail the FCS check. + + This counter is a 64 bit version of + dot3StatsFCSErrors. It should be used on + interfaces operating at 10 Gb/s or faster. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.6, + aFrameCheckSequenceErrors." + ::= { dot3HCStatsEntry 2 } + + dot3HCStatsInternalMacTransmitErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which transmission on a + particular interface fails due to an internal + MAC sublayer transmit error. A frame is only + + + + counted by an instance of this object if it is + not counted by the corresponding instance of + either the dot3StatsLateCollisions object, the + dot3StatsExcessiveCollisions object, or the + dot3StatsCarrierSenseErrors object. + + The precise meaning of the count represented by + an instance of this object is implementation- + specific. In particular, an instance of this + object may represent a count of transmission + errors on a particular interface that are not + otherwise counted. + + This counter is a 64 bit version of + dot3StatsInternalMacTransmitErrors. It should + be used on interfaces operating at 10 Gb/s or + faster. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.12, + aFramesLostDueToIntMACXmitError." + ::= { dot3HCStatsEntry 3 } + + dot3HCStatsFrameTooLongs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames received on a particular + interface that exceed the maximum permitted + frame size. + + The count represented by an instance of this + object is incremented when the frameTooLong + status is returned by the MAC service to the + LLC (or other MAC user). Received frames for + which multiple error conditions pertain are, + according to the conventions of IEEE 802.3 + Layer Management, counted exclusively according + to the error status presented to the LLC. + + This counter is a 64 bit version of + dot3StatsFrameTooLongs. It should be used on + interfaces operating at 10 Gb/s or faster. + + Discontinuities in the value of this counter can + + + + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.25, + aFrameTooLongErrors." + ::= { dot3HCStatsEntry 4 } + + dot3HCStatsInternalMacReceiveErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of frames for which reception on a + particular interface fails due to an internal + MAC sublayer receive error. A frame is only + counted by an instance of this object if it is + not counted by the corresponding instance of + either the dot3StatsFrameTooLongs object, the + dot3StatsAlignmentErrors object, or the + dot3StatsFCSErrors object. + + The precise meaning of the count represented by + an instance of this object is implementation- + specific. In particular, an instance of this + object may represent a count of receive errors + on a particular interface that are not + otherwise counted. + + This counter is a 64 bit version of + dot3StatsInternalMacReceiveErrors. It should be + used on interfaces operating at 10 Gb/s or + faster. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.15, + aFramesLostDueToIntMACRcvError." + ::= { dot3HCStatsEntry 5 } + + dot3HCStatsSymbolErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "For an interface operating at 100 Mb/s, the + number of times there was an invalid data symbol + when a valid carrier was present. + + + + + For an interface operating in half-duplex mode + at 1000 Mb/s, the number of times the receiving + media is non-idle (a carrier event) for a period + of time equal to or greater than slotTime, and + during which there was at least one occurrence + of an event that causes the PHY to indicate + 'Data reception error' or 'carrier extend error' + on the GMII. + + For an interface operating in full-duplex mode + at 1000 Mb/s, the number of times the receiving + media is non-idle (a carrier event) for a period + of time equal to or greater than minFrameSize, + and during which there was at least one + occurrence of an event that causes the PHY to + indicate 'Data reception error' on the GMII. + + For an interface operating at 10 Gb/s, the + number of times the receiving media is non-idle + (a carrier event) for a period of time equal to + or greater than minFrameSize, and during which + there was at least one occurrence of an event + that causes the PHY to indicate 'Receive Error' + on the XGMII. + + The count represented by an instance of this + object is incremented at most once per carrier + event, even if multiple symbol errors occur + during the carrier event. This count does + not increment if a collision is present. + + This counter is a 64 bit version of + dot3StatsSymbolErrors. It should be used on + interfaces operating at 10 Gb/s or faster. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE 802.3 Std.], 30.3.2.1.5, + aSymbolErrorDuringCarrier." + ::= { dot3HCStatsEntry 6 } + + + -- 802.3 Tests + + dot3Tests OBJECT IDENTIFIER ::= { dot3 6 } + + + + + dot3Errors OBJECT IDENTIFIER ::= { dot3 7 } + + -- TDR Test + + dot3TestTdr OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION "******** THIS IDENTITY IS DEPRECATED ******* + + The Time-Domain Reflectometry (TDR) test is + specific to ethernet-like interfaces of type + 10Base5 and 10Base2. The TDR value may be + useful in determining the approximate distance + to a cable fault. It is advisable to repeat + this test to check for a consistent resulting + TDR value, to verify that there is a fault. + + A TDR test returns as its result the time + interval, measured in 10 MHz ticks or 100 nsec + units, between the start of TDR test + transmission and the subsequent detection of a + collision or deassertion of carrier. On + successful completion of a TDR test, the result + is stored as the value of an appropriate + instance of an appropriate vendor specific MIB + object, and the OBJECT IDENTIFIER of that + instance is stored in the appropriate instance + of the appropriate test result code object + (thereby indicating where the result has been + stored). + + This object identity has been deprecated, since + the ifTestTable in the IF-MIB was deprecated, + and there is no longer a standard mechanism for + initiating an interface test. This left no + standard way of using this object identity." + ::= { dot3Tests 1 } + + -- Loopback Test + + dot3TestLoopBack OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION "******** THIS IDENTITY IS DEPRECATED ******* + + This test configures the MAC chip and executes + an internal loopback test of memory, data paths, + and the MAC chip logic. This loopback test can + only be executed if the interface is offline. + Once the test has completed, the MAC chip should + + + + be reinitialized for network operation, but it + should remain offline. + + If an error occurs during a test, the + appropriate test result object will be set + to indicate a failure. The two OBJECT + IDENTIFIER values dot3ErrorInitError and + dot3ErrorLoopbackError may be used to provided + more information as values for an appropriate + test result code object. + + This object identity has been deprecated, since + the ifTestTable in the IF-MIB was deprecated, + and there is no longer a standard mechanism for + initiating an interface test. This left no + standard way of using this object identity." + ::= { dot3Tests 2 } + + dot3ErrorInitError OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION "******** THIS IDENTITY IS DEPRECATED ******* + + Couldn't initialize MAC chip for test. + + This object identity has been deprecated, since + the ifTestTable in the IF-MIB was deprecated, + and there is no longer a standard mechanism for + initiating an interface test. This left no + standard way of using this object identity." + ::= { dot3Errors 1 } + + dot3ErrorLoopbackError OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION "******** THIS IDENTITY IS DEPRECATED ******* + + Expected data not received (or not received + correctly) in loopback test. + + This object identity has been deprecated, since + the ifTestTable in the IF-MIB was deprecated, + and there is no longer a standard mechanism for + initiating an interface test. This left no + standard way of using this object identity." + ::= { dot3Errors 2 } + + -- { dot3 8 }, the dot3ChipSets tree, is defined in [RFC2666] + + -- conformance information + + + + etherConformance OBJECT IDENTIFIER ::= { etherMIB 2 } + + etherGroups OBJECT IDENTIFIER ::= { etherConformance 1 } + etherCompliances OBJECT IDENTIFIER ::= { etherConformance 2 } + + -- compliance statements + + etherCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + The compliance statement for managed network + entities which have ethernet-like network + interfaces. + + This compliance is deprecated and replaced by + dot3Compliance." + + MODULE -- this module + MANDATORY-GROUPS { etherStatsGroup } + + GROUP etherCollisionTableGroup + DESCRIPTION "This group is optional. It is appropriate + for all systems which have the necessary + metering. Implementation in such systems is + highly recommended." + ::= { etherCompliances 1 } + + ether100MbsCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + The compliance statement for managed network + entities which have 100 Mb/sec ethernet-like + network interfaces. + + This compliance is deprecated and replaced by + dot3Compliance." + + MODULE -- this module + MANDATORY-GROUPS { etherStats100MbsGroup } + + GROUP etherCollisionTableGroup + DESCRIPTION "This group is optional. It is appropriate + for all systems which have the necessary + metering. Implementation in such systems is + highly recommended." + ::= { etherCompliances 2 } + + + + dot3Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + The compliance statement for managed network + entities which have ethernet-like network + interfaces. + + This compliance is deprecated and replaced by + dot3Compliance2." + + MODULE -- this module + MANDATORY-GROUPS { etherStatsBaseGroup } + + GROUP etherDuplexGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating in full-duplex mode. + It is highly recommended for all + ethernet-like network interfaces." + + GROUP etherStatsLowSpeedGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 10 Mb/s or slower in + half-duplex mode." + + GROUP etherStatsHighSpeedGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 100 Mb/s or faster." + + GROUP etherControlGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control sublayer." + + GROUP etherControlPauseGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control PAUSE function." + + GROUP etherCollisionTableGroup + DESCRIPTION "This group is optional. It is appropriate + for all ethernet-like network interfaces + which are capable of operating in + half-duplex mode and have the necessary + metering. Implementation in systems with + + + + such interfaces is highly recommended." + ::= { etherCompliances 3 } + + dot3Compliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for managed network + entities which have ethernet-like network + interfaces. + + Note that compliance with this MIB module + requires compliance with the ifCompliance3 + MODULE-COMPLIANCE statement of the IF-MIB + (RFC2863). In addition, compliance with this + MIB module requires compliance with the + mauModIfCompl3 MODULE-COMPLIANCE statement of + the MAU-MIB (RFC3636)." + + MODULE -- this module + MANDATORY-GROUPS { etherStatsBaseGroup2 } + + GROUP etherDuplexGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating in full-duplex mode. + It is highly recommended for all + ethernet-like network interfaces." + + GROUP etherRateControlGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at speeds faster than + 1000 Mb/s. It is highly recommended for all + ethernet-like network interfaces." + + GROUP etherStatsLowSpeedGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 10 Mb/s or slower in + half-duplex mode." + + GROUP etherStatsHighSpeedGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 100 Mb/s or faster." + + GROUP etherStatsHalfDuplexGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + + + + capable of operating in half-duplex mode." + + GROUP etherHCStatsGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces which are + capable of operating at 10 Gb/s or faster. + It is recommended for all ethernet-like + network interfaces which are capable of + operating at 1000 Mb/s or faster." + + GROUP etherControlGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control sublayer." + + GROUP etherHCControlGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control sublayer and are + capable of operating at 10 Gb/s or faster." + + GROUP etherControlPauseGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control PAUSE function." + + GROUP etherHCControlPauseGroup + DESCRIPTION "This group is mandatory for all + ethernet-like network interfaces that + support the MAC Control PAUSE function and + are capable of operating at 10 Gb/s or + faster." + + GROUP etherCollisionTableGroup + DESCRIPTION "This group is optional. It is appropriate + for all ethernet-like network interfaces + which are capable of operating in + half-duplex mode and have the necessary + metering. Implementation in systems with + such interfaces is highly recommended." + ::= { etherCompliances 4 } + + -- units of conformance + + etherStatsGroup OBJECT-GROUP + OBJECTS { dot3StatsIndex, + dot3StatsAlignmentErrors, + dot3StatsFCSErrors, + + + + dot3StatsSingleCollisionFrames, + dot3StatsMultipleCollisionFrames, + dot3StatsSQETestErrors, + dot3StatsDeferredTransmissions, + dot3StatsLateCollisions, + dot3StatsExcessiveCollisions, + dot3StatsInternalMacTransmitErrors, + dot3StatsCarrierSenseErrors, + dot3StatsFrameTooLongs, + dot3StatsInternalMacReceiveErrors, + dot3StatsEtherChipSet + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + A collection of objects providing information + applicable to all ethernet-like network + interfaces. + + This object group has been deprecated and + replaced by etherStatsBaseGroup and + etherStatsLowSpeedGroup." + ::= { etherGroups 1 } + + etherCollisionTableGroup OBJECT-GROUP + OBJECTS { dot3CollFrequencies + } + STATUS current + DESCRIPTION "A collection of objects providing a histogram + of packets successfully transmitted after + experiencing exactly N collisions." + ::= { etherGroups 2 } + + etherStats100MbsGroup OBJECT-GROUP + OBJECTS { dot3StatsIndex, + dot3StatsAlignmentErrors, + dot3StatsFCSErrors, + dot3StatsSingleCollisionFrames, + dot3StatsMultipleCollisionFrames, + dot3StatsDeferredTransmissions, + dot3StatsLateCollisions, + dot3StatsExcessiveCollisions, + dot3StatsInternalMacTransmitErrors, + dot3StatsCarrierSenseErrors, + dot3StatsFrameTooLongs, + dot3StatsInternalMacReceiveErrors, + dot3StatsEtherChipSet, + dot3StatsSymbolErrors + + + + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + A collection of objects providing information + applicable to 100 Mb/sec ethernet-like network + interfaces. + + This object group has been deprecated and + replaced by etherStatsBaseGroup and + etherStatsHighSpeedGroup." + ::= { etherGroups 3 } + + etherStatsBaseGroup OBJECT-GROUP + OBJECTS { dot3StatsIndex, + dot3StatsAlignmentErrors, + dot3StatsFCSErrors, + dot3StatsSingleCollisionFrames, + dot3StatsMultipleCollisionFrames, + dot3StatsDeferredTransmissions, + dot3StatsLateCollisions, + dot3StatsExcessiveCollisions, + dot3StatsInternalMacTransmitErrors, + dot3StatsCarrierSenseErrors, + dot3StatsFrameTooLongs, + dot3StatsInternalMacReceiveErrors + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + A collection of objects providing information + applicable to all ethernet-like network + interfaces. + + This object group has been deprecated and + replaced by etherStatsBaseGroup2 and + etherStatsHalfDuplexGroup, to separate + objects which must be implemented by all + ethernet-like network interfaces from + objects that need only be implemented on + ethernet-like network interfaces that are + capable of half-duplex operation." + ::= { etherGroups 4 } + + etherStatsLowSpeedGroup OBJECT-GROUP + OBJECTS { dot3StatsSQETestErrors } + STATUS current + DESCRIPTION "A collection of objects providing information + + + + applicable to ethernet-like network interfaces + capable of operating at 10 Mb/s or slower in + half-duplex mode." + ::= { etherGroups 5 } + + etherStatsHighSpeedGroup OBJECT-GROUP + OBJECTS { dot3StatsSymbolErrors } + STATUS current + DESCRIPTION "A collection of objects providing information + applicable to ethernet-like network interfaces + capable of operating at 100 Mb/s or faster." + ::= { etherGroups 6 } + + etherDuplexGroup OBJECT-GROUP + OBJECTS { dot3StatsDuplexStatus } + STATUS current + DESCRIPTION "A collection of objects providing information + about the duplex mode of an ethernet-like + network interface." + ::= { etherGroups 7 } + + etherControlGroup OBJECT-GROUP + OBJECTS { dot3ControlFunctionsSupported, + dot3ControlInUnknownOpcodes + } + STATUS current + DESCRIPTION "A collection of objects providing information + about the MAC Control sublayer on ethernet-like + network interfaces." + ::= { etherGroups 8 } + + etherControlPauseGroup OBJECT-GROUP + OBJECTS { dot3PauseAdminMode, + dot3PauseOperMode, + dot3InPauseFrames, + dot3OutPauseFrames + } + STATUS current + DESCRIPTION "A collection of objects providing information + about and control of the MAC Control PAUSE + function on ethernet-like network interfaces." + ::= { etherGroups 9 } + + etherStatsBaseGroup2 OBJECT-GROUP + OBJECTS { dot3StatsIndex, + dot3StatsAlignmentErrors, + dot3StatsFCSErrors, + dot3StatsInternalMacTransmitErrors, + + + + dot3StatsFrameTooLongs, + dot3StatsInternalMacReceiveErrors + } + STATUS current + DESCRIPTION "A collection of objects providing information + applicable to all ethernet-like network + interfaces." + ::= { etherGroups 10 } + + etherStatsHalfDuplexGroup OBJECT-GROUP + OBJECTS { dot3StatsSingleCollisionFrames, + dot3StatsMultipleCollisionFrames, + dot3StatsDeferredTransmissions, + dot3StatsLateCollisions, + dot3StatsExcessiveCollisions, + dot3StatsCarrierSenseErrors + } + STATUS current + DESCRIPTION "A collection of objects providing information + applicable only to half-duplex ethernet-like + network interfaces." + ::= { etherGroups 11 } + + etherHCStatsGroup OBJECT-GROUP + OBJECTS { dot3HCStatsAlignmentErrors, + dot3HCStatsFCSErrors, + dot3HCStatsInternalMacTransmitErrors, + dot3HCStatsFrameTooLongs, + dot3HCStatsInternalMacReceiveErrors, + dot3HCStatsSymbolErrors + } + STATUS current + DESCRIPTION "A collection of objects providing high-capacity + statistics applicable to higher-speed + ethernet-like network interfaces." + ::= { etherGroups 12 } + + etherHCControlGroup OBJECT-GROUP + OBJECTS { dot3HCControlInUnknownOpcodes } + STATUS current + DESCRIPTION "A collection of objects providing high-capacity + statistics for the MAC Control sublayer on + higher-speed ethernet-like network interfaces." + ::= { etherGroups 13 } + + etherHCControlPauseGroup OBJECT-GROUP + OBJECTS { dot3HCInPauseFrames, + dot3HCOutPauseFrames + + + + } + STATUS current + DESCRIPTION "A collection of objects providing high-capacity + statistics for the MAC Control PAUSE function on + higher-speed ethernet-like network interfaces." + ::= { etherGroups 14 } + + etherRateControlGroup OBJECT-GROUP + OBJECTS { dot3StatsRateControlAbility, + dot3StatsRateControlStatus + } + STATUS current + DESCRIPTION "A collection of objects providing information + about the Rate Control function on ethernet-like + interfaces." + ::= { etherGroups 15 } + +END diff --git a/mibs/ietf/FC-MGMT-MIB b/mibs/ietf/FC-MGMT-MIB new file mode 100644 index 0000000..18f36a4 --- /dev/null +++ b/mibs/ietf/FC-MGMT-MIB @@ -0,0 +1,2442 @@ + FC-MGMT-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Unsigned32, Counter32, Counter64, transmission + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + ifIndex FROM IF-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + + fcMgmtMIB MODULE-IDENTITY + LAST-UPDATED "200504260000Z" -- 26 April 2005 + ORGANIZATION "IETF IPS (IP-Storage) Working Group" + CONTACT-INFO + " Keith McCloghrie + Cisco Systems, Inc. + Tel: +1 408 526-5260 + E-mail: kzm@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + " + DESCRIPTION + "This module defines management information specific to + Fibre Channel-attached devices. + + + + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4044; see the RFC + itself for full legal notices." + REVISION "200504260000Z" -- 26 April 2005 + DESCRIPTION + "Initial version of the Fibre Channel Mgmt MIB module." + ::= { transmission 56 } + + fcmgmtObjects OBJECT IDENTIFIER ::= { fcMgmtMIB 1 } + fcmgmtNotifications OBJECT IDENTIFIER ::= { fcMgmtMIB 2 } + fcmgmtNotifPrefix OBJECT IDENTIFIER ::= { fcmgmtNotifications 0 } + fcmgmtConformance OBJECT IDENTIFIER ::= { fcMgmtMIB 3 } + + --******************************** + -- Textual Conventions + -- + + FcNameIdOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The World Wide Name (WWN) associated with a Fibre Channel + (FC) entity. WWNs were initially defined as 64-bits in + length. The latest definition (for future use) is 128-bits + long. The zero-length string value is used in + circumstances in which the WWN is unassigned/unknown." + SYNTAX OCTET STRING (SIZE(0 | 8 | 16)) + +FcAddressIdOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Fibre Channel Address ID, a 24-bit value unique within + the address space of a Fabric. The zero-length string value + is used in circumstances in which the WWN is + unassigned/unknown." + SYNTAX OCTET STRING (SIZE(0 | 3)) + +FcDomainIdOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Domain Id (of an FC switch), or zero if the no Domain + Id has been assigned." + SYNTAX Integer32 (0..239) + + + + + + + + + +FcPortType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of a Fibre Channel port, as indicated by the use + of the appropriate value assigned by IANA." + REFERENCE + "The IANA-maintained registry for + Fibre Channel port types (http://www.iana.org/)." + SYNTAX Unsigned32 + +FcClasses ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A set of Fibre Channel classes of service." + REFERENCE + "Classes of service are described in FC-FS Section 13." + SYNTAX BITS { classF(0), class1(1), class2(2), class3(3), + class4(4), class5(5), class6(6) } + +FcBbCredit ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The buffer-to-buffer credit of an FC port." + SYNTAX Integer32 (0..32767) + +FcBbCreditModel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The buffer-to-buffer credit model of an Fx_Port." + SYNTAX INTEGER { regular(1), alternate (2) } + + +FcDataFieldSize ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Receive Data Field Size associated with an FC port." + SYNTAX Integer32 (128..2112) + + + + + + + + + + + + + + +FcUnitFunctions ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A set of functions that a Fibre Channel Interconnect + Element or Platform might perform. A value with no bits set + indicates the function(s) are unknown. The individual bits + have the following meanings: + + other - none of the following. + + hub - a device that interconnects L_Ports, but does not + operate as an FL_Port. + + switch - a fabric element conforming to the Fibre Channel + switch fabric set of standards (e.g., [FC-SW-3]). + + bridge - a device that encapsulates Fibre Channel frames + within another protocol (e.g., [FC-BB], FC-BB-2). + + gateway - a device that converts an FC-4 to another protocol + (e.g., FCP to iSCSI). + + host - a computer system that provides end users with + services such as computation and storage access. + + storageSubsys - an integrated collection of storage + controllers, storage devices, and necessary software that + provides storage services to one or more hosts. + + storageAccessDev - a device that provides storage management + and access for heterogeneous hosts and heterogeneous devices + (e.g., medium changer). + + nas - a device that connects to a network and provides file + access services. + + wdmux - a device that modulates/demodulates each of several + data streams (e.g., Fibre Channel protocol data streams) + onto/from a different part of the light spectrum in an + optical fiber. + + storageDevice - a disk/tape/etc. device (without the + controller and/or software required for it to be a + 'storageSubsys')." + SYNTAX BITS { + other(0), -- none of the following + hub(1), + switch(2), + + + + bridge(3), + gateway(4), + host(5), + storageSubsys(6), + storageAccessDev(7), + nas(8), + wdmux(9), + storageDevice(10) + } + +--******************************** +-- MIB object definitions +-- + +fcmInstanceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the local Fibre Channel management + instances." + ::= { fcmgmtObjects 1 } + +fcmInstanceEntry OBJECT-TYPE + SYNTAX FcmInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of attributes for a particular local Fibre Channel + management instance." + INDEX { fcmInstanceIndex } + ::= { fcmInstanceTable 1 } + +FcmInstanceEntry ::= + SEQUENCE { + fcmInstanceIndex Unsigned32, + fcmInstanceWwn FcNameIdOrZero, + fcmInstanceFunctions FcUnitFunctions, + fcmInstancePhysicalIndex Integer32, + fcmInstanceSoftwareIndex Integer32, + fcmInstanceStatus INTEGER, + fcmInstanceTextName SnmpAdminString, + fcmInstanceDescr SnmpAdminString, + fcmInstanceFabricId FcNameIdOrZero + } + + + + + + +fcmInstanceIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer value that uniquely identifies this + instance amongst all local Fibre Channel management + instances. + + It is mandatory to keep this value constant between restarts + of the agent, and to make every possible effort to keep it + constant across restarts (but note, it is unrealistic to + expect it to remain constant across all re-configurations of + the local system, e.g., across the replacement of all non- + volatile storage)." + ::= { fcmInstanceEntry 1 } + +fcmInstanceWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the instance has one (or more) WWN(s), then this object + contains that (or one of those) WWN(s). + + If the instance does not have a WWN associated with it, then + this object contains the zero-length string." + ::= { fcmInstanceEntry 2 } + +fcmInstanceFunctions OBJECT-TYPE + SYNTAX FcUnitFunctions + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One (or more) Fibre Channel unit functions being performed + by this instance." + ::= { fcmInstanceEntry 3 } + +fcmInstancePhysicalIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this management instance corresponds to a physical + component (or to a hierarchy of physical components) + identified by the Entity-MIB, then this object's value is + the value of the entPhysicalIndex of that component (or of + the component at the root of that hierarchy). If there is + + + + no correspondence to a physical component (or no component + that has an entPhysicalIndex value), then the value of this + object is zero." + REFERENCE + "entPhysicalIndex is defined in the Entity MIB, RFC 2737." + ::= { fcmInstanceEntry 4 } + +fcmInstanceSoftwareIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this management instance corresponds to an installed + software module identified in the Host Resources MIB, then + this object's value is the value of the hrSWInstalledIndex + of that module. If there is no correspondence to an + installed software module (or no module that has a + hrSWInstalledIndex value), then the value of this object is + zero." + REFERENCE + "hrSWInstalledIndex is defined in the Host Resources MIB, + RFC 2790" + ::= { fcmInstanceEntry 5 } + +fcmInstanceStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + ok(2), -- able to operate correctly + warning(3), -- needs attention + failed(4) -- something has failed + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Overall status of the Fibre Channel entity/entities managed + by this management instance. The value should reflect the + most serious status of such entities." + ::= { fcmInstanceEntry 6 } + +fcmInstanceTextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..79)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A textual name for this management instance and the Fibre + Channel entity/entities that it is managing." + ::= { fcmInstanceEntry 7 } + + + + +fcmInstanceDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A textual description of this management instance and the + Fibre Channel entity/entities that it is managing." + ::= { fcmInstanceEntry 8 } + +fcmInstanceFabricId OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique Fabric Identifier that identifies the + fabric to which the Fibre Channel entity/entities managed by + this management instance are connected, or, of which they + are a part. This is typically the Node WWN of the principal + switch of a Fibre Channel fabric. The zero-length string + indicates that the fabric identifier is unknown (or not + applicable). + + In the event that the Fibre Channel entity/entities managed + by this management instance is/are connected to multiple + fabrics, then this object records the first (known) one." + ::= { fcmInstanceEntry 9 } + +--******************************** +-- The Fibre Channel Switch Table +-- + +fcmSwitchTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about Fibre Channel switches that + are managed by Fibre Channel management instances. Each + Fibre Channel management instance can manage one or more + Fibre Channel switches." + ::= { fcmgmtObjects 2 } + +fcmSwitchEntry OBJECT-TYPE + SYNTAX FcmSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular Fibre Channel switch that is + + + + managed by the management instance given by + fcmInstanceIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex } + ::= { fcmSwitchTable 1 } + +FcmSwitchEntry ::= + SEQUENCE { + fcmSwitchIndex Unsigned32, + fcmSwitchDomainId FcDomainIdOrZero, + fcmSwitchPrincipal TruthValue, + fcmSwitchWWN FcNameIdOrZero + } + +fcmSwitchIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies a Fibre + Channel switch amongst those managed by one Fibre Channel + management instance. + + It is mandatory to keep this value constant between restarts + of the agent, and to make every possible effort to keep it + constant across restarts." + ::= { fcmSwitchEntry 1 } + +fcmSwitchDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Domain Id of this switch. A value of zero indicates + that a switch has not (yet) been assigned a Domain Id." + ::= { fcmSwitchEntry 2 } + +fcmSwitchPrincipal OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this switch is the principal + switch within its fabric." + ::= { fcmSwitchEntry 3 } + + + + + + + +fcmSwitchWWN OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World Wide Name of this switch." + ::= { fcmSwitchEntry 4 } + +--******************************** +-- The Fibre Channel Port Table +-- + +fcmPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about Fibre Channel ports. Each Fibre Channel + port is represented by one entry in the IF-MIB's ifTable." + REFERENCE + "RFC 2863, The Interfaces Group MIB, June 2000." + ::= { fcmgmtObjects 3 } + +fcmPortEntry OBJECT-TYPE + SYNTAX FcmPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a specific port." + INDEX { ifIndex } + ::= { fcmPortTable 1 } + +FcmPortEntry ::= + SEQUENCE { + fcmPortInstanceIndex Unsigned32, + fcmPortWwn FcNameIdOrZero, + fcmPortNodeWwn FcNameIdOrZero, + fcmPortAdminType FcPortType, + fcmPortOperType FcPortType, + fcmPortFcCapClass FcClasses, + fcmPortFcOperClass FcClasses, + fcmPortTransmitterType INTEGER, + fcmPortConnectorType INTEGER, + fcmPortSerialNumber SnmpAdminString, + fcmPortPhysicalNumber Unsigned32, + fcmPortAdminSpeed INTEGER, + fcmPortCapProtocols BITS, + fcmPortOperProtocols BITS + + + + } + +fcmPortInstanceIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of fcmInstanceIndex by which the Fibre Channel + management instance, which manages this port, is identified + in the fcmInstanceTable." + ::= { fcmPortEntry 1 } + +fcmPortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World Wide Name of the port, or the zero-length string + if the port does not have a WWN." + ::= { fcmPortEntry 2 } + +fcmPortNodeWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World Wide Name of the Node that contains this port, or + the zero-length string if the port does not have a node + WWN." + ::= { fcmPortEntry 3 } + +fcmPortAdminType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administratively desired type of this port." + ::= { fcmPortEntry 4 } + +fcmPortOperType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational type of this port." + ::= { fcmPortEntry 5 } + + + + + +fcmPortFcCapClass OBJECT-TYPE + SYNTAX FcClasses + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The classes of service capability of this port." + ::= { fcmPortEntry 6 } + +fcmPortFcOperClass OBJECT-TYPE + SYNTAX FcClasses + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The classes of service that are currently operational on + this port. For an FL_Port, this is the union of the classes + being supported across all attached NL_Ports." + ::= { fcmPortEntry 7 } + +fcmPortTransmitterType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + shortwave850nm(3), + longwave1550nm(4), + longwave1310nm(5), + electrical(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The technology of the port transceiver." + REFERENCE + "FC-GS-3, section 6.1.2.2.3" + ::= { fcmPortEntry 8 } + +fcmPortConnectorType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + other(2), + gbic(3), + embedded(4), + glm(5), + gbicSerialId(6), + gbicNoSerialId(7), + sfpSerialId(8), + sfpNoSerialId(9) + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The module type of the port connector. This object refers + to the hardware implementation of the port. It will be + 'embedded' if the hardware equivalent to Gigabit interface + card (GBIC) is part of the line card and is unremovable. It + will be 'glm' if it's a gigabit link module (GLM). It will + be 'gbicSerialId' if the GBIC serial id can be read, else it + will be 'gbicNoSerialId'. It will be 'sfpSerialId' if the + small form factor (SFP) pluggable GBICs serial id can be + read, else it will be 'sfpNoSerialId'." + REFERENCE + "FC-GS-3, section 6.1.2.2.4" + ::= { fcmPortEntry 9 } + +fcmPortSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number associated with the port (e.g., for a + GBIC). If not applicable, the object's value is a zero- + length string." + REFERENCE + "FC-GS-3, section 6.1.2.2.4" + ::= { fcmPortEntry 10 } + +fcmPortPhysicalNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the port's 'Physical Port Number' as defined by + GS-3." + REFERENCE + "FC-GS-3, section 6.1.2.2.5" + ::= { fcmPortEntry 11 } + +fcmPortAdminSpeed OBJECT-TYPE + SYNTAX INTEGER { + auto(1), + eighthGbs(2), -- 125Mbs + quarterGbs(3), -- 250Mbs + halfGbs(4), -- 500Mbs + oneGbs(5), -- 1Gbs + twoGbs(6), -- 2Gbs + fourGbs(7), -- 4Gbs + tenGbs(8) -- 10Gbs + + + + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The speed of the interface: + + 'auto' - auto-negotiation + 'tenGbs' - 10Gbs + 'fourGbs' - 4Gbs + 'twoGbs' - 2Gbs + 'oneGbs' - 1Gbs + 'halfGbs' - 500Mbs + 'quarterGbs' - 250Mbs + 'eighthGbs' - 125Mbs" + ::= { fcmPortEntry 12 } + +fcmPortCapProtocols OBJECT-TYPE + SYNTAX BITS { + unknown(0), + loop(1), + fabric(2), + scsi(3), + tcpIp(4), + vi(5), + ficon(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit mask specifying the higher level protocols that are + capable of running over this port. Note that for generic + Fx_Ports, E_Ports, and B_Ports, this object will indicate + all protocols." + ::= { fcmPortEntry 13 } + +fcmPortOperProtocols OBJECT-TYPE + SYNTAX BITS { + unknown(0), + loop(1), + fabric(2), + scsi(3), + tcpIp(4), + vi(5), + ficon(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "A bit mask specifying the higher level protocols that are + currently operational on this port. For Fx_Ports, E_Ports, + and B_Ports, this object will typically have the value + 'unknown'." + ::= { fcmPortEntry 14 } + +--******************************** +-- Port Statistics +-- + +fcmPortStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of statistics for Fibre Channel ports." + ::= { fcmgmtObjects 4 } + +fcmPortStatsEntry OBJECT-TYPE + SYNTAX FcmPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing statistics for a Fibre Channel port. + If any counter in this table suffers a discontinuity, the + value of ifCounterDiscontinuityTime (defined in the IF-MIB) + must be updated." + REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000." + AUGMENTS { fcmPortEntry } + ::= { fcmPortStatsTable 1 } + +FcmPortStatsEntry ::= + SEQUENCE { + fcmPortBBCreditZeros Counter64, + fcmPortFullInputBuffers Counter64, + fcmPortClass2RxFrames Counter64, + fcmPortClass2RxOctets Counter64, + fcmPortClass2TxFrames Counter64, + fcmPortClass2TxOctets Counter64, + fcmPortClass2Discards Counter64, + fcmPortClass2RxFbsyFrames Counter64, + fcmPortClass2RxPbsyFrames Counter64, + fcmPortClass2RxFrjtFrames Counter64, + fcmPortClass2RxPrjtFrames Counter64, + fcmPortClass2TxFbsyFrames Counter64, + fcmPortClass2TxPbsyFrames Counter64, + fcmPortClass2TxFrjtFrames Counter64, + fcmPortClass2TxPrjtFrames Counter64, + + + + fcmPortClass3RxFrames Counter64, + fcmPortClass3RxOctets Counter64, + fcmPortClass3TxFrames Counter64, + fcmPortClass3TxOctets Counter64, + fcmPortClass3Discards Counter64, + fcmPortClassFRxFrames Counter32, + fcmPortClassFRxOctets Counter32, + fcmPortClassFTxFrames Counter32, + fcmPortClassFTxOctets Counter32, + fcmPortClassFDiscards Counter32 + } + +fcmPortBBCreditZeros OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions in/out of the buffer-to-buffer + credit zero state. The other side is not providing any + credit." + ::= { fcmPortStatsEntry 1 } + +fcmPortFullInputBuffers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of occurrences when all input buffers of a port + were full and outbound buffer-to-buffer credit transitioned + to zero, i.e., there became no credit to provide to other + side." + ::= { fcmPortStatsEntry 2 } + +fcmPortClass2RxFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames received at this port." + ::= { fcmPortStatsEntry 3 } + +fcmPortClass2RxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 2 frames received + at this port." + + + + ::= { fcmPortStatsEntry 4 } + +fcmPortClass2TxFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames transmitted out of this port." + ::= { fcmPortStatsEntry 5 } + +fcmPortClass2TxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 2 frames + transmitted out of this port." + ::= { fcmPortStatsEntry 6 } + +fcmPortClass2Discards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames that were discarded upon + reception at this port." + ::= { fcmPortStatsEntry 7 } + +fcmPortClass2RxFbsyFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_BSY was returned to this port as + a result of a Class 2 frame that could not be delivered to + the other end of the link. This can occur when either the + fabric or the destination port is temporarily busy. Note + that this counter will never increment for an F_Port." + ::= { fcmPortStatsEntry 8 } + +fcmPortClass2RxPbsyFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_BSY was returned to this port as + a result of a Class 2 frame that could not be delivered to + the other end of the link. This can occur when the + + + + destination port is temporarily busy." + ::= { fcmPortStatsEntry 9 } + +fcmPortClass2RxFrjtFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_RJT was returned to this port as + a result of a Class 2 frame that was rejected by the fabric. + Note that this counter will never increment for an F_Port." + ::= { fcmPortStatsEntry 10 } + +fcmPortClass2RxPrjtFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_RJT was returned to this port as + a result of a Class 2 frame that was rejected at the + destination N_Port." + ::= { fcmPortStatsEntry 11 } + +fcmPortClass2TxFbsyFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_BSY was generated by this port + as a result of a Class 2 frame that could not be delivered + because either the Fabric or the destination port was + temporarily busy. Note that this counter will never + increment for an N_Port." + ::= { fcmPortStatsEntry 12 } + +fcmPortClass2TxPbsyFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_BSY was generated by this port + as a result of a Class 2 frame that could not be delivered + because the destination port was temporarily busy. Note + that this counter will never increment for an F_Port." + ::= { fcmPortStatsEntry 13 } + + + + + + +fcmPortClass2TxFrjtFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_RJT was generated by this port + as a result of a Class 2 frame being rejected by the fabric. + Note that this counter will never increment for an N_Port." + ::= { fcmPortStatsEntry 14 } + +fcmPortClass2TxPrjtFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_RJT was generated by this port + as a result of a Class 2 frame being rejected at the + destination N_Port. Note that this counter will never + increment for an F_Port." + ::= { fcmPortStatsEntry 15 } + +fcmPortClass3RxFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames received at this port." + ::= { fcmPortStatsEntry 16 } + +fcmPortClass3RxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 3 frames received + at this port." + ::= { fcmPortStatsEntry 17 } + +fcmPortClass3TxFrames OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames transmitted out of this port." + ::= { fcmPortStatsEntry 18 } + + + + + + +fcmPortClass3TxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 3 frames + transmitted out of this port." + ::= { fcmPortStatsEntry 19 } + +fcmPortClass3Discards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames that were discarded upon + reception at this port." + ::= { fcmPortStatsEntry 20 } + +fcmPortClassFRxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class F frames received at this port." + ::= { fcmPortStatsEntry 21 } + +fcmPortClassFRxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class F frames received + at this port." + ::= { fcmPortStatsEntry 22 } + +fcmPortClassFTxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class F frames transmitted out of this port." + ::= { fcmPortStatsEntry 23 } + + + + + + + + + +fcmPortClassFTxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class F frames + transmitted out of this port." + ::= { fcmPortStatsEntry 24 } + +fcmPortClassFDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class F frames that were discarded upon + reception at this port." + ::= { fcmPortStatsEntry 25 } + +--******************************** +-- Port Low-capacity Statistics +-- +-- these are Counter32 "low-capacity" counters for systems +-- that do not support Counter64's + +fcmPortLcStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmPortLcStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Counter32-based statistics for systems that do + not support Counter64." + ::= { fcmgmtObjects 5 } + +fcmPortLcStatsEntry OBJECT-TYPE + SYNTAX FcmPortLcStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing low-capacity (i.e., based on Counter32) + statistics for a Fibre Channel port. If any counter in this + table suffers a discontinuity, the value of + ifCounterDiscontinuityTime (defined in the IF-MIB) must be + updated." + REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000." + AUGMENTS { fcmPortEntry } + ::= { fcmPortLcStatsTable 1 } + + + + + +FcmPortLcStatsEntry ::= + SEQUENCE { + fcmPortLcBBCreditZeros Counter32, + fcmPortLcFullInputBuffers Counter32, + fcmPortLcClass2RxFrames Counter32, + fcmPortLcClass2RxOctets Counter32, + fcmPortLcClass2TxFrames Counter32, + fcmPortLcClass2TxOctets Counter32, + fcmPortLcClass2Discards Counter32, + fcmPortLcClass2RxFbsyFrames Counter32, + fcmPortLcClass2RxPbsyFrames Counter32, + fcmPortLcClass2RxFrjtFrames Counter32, + fcmPortLcClass2RxPrjtFrames Counter32, + fcmPortLcClass2TxFbsyFrames Counter32, + fcmPortLcClass2TxPbsyFrames Counter32, + fcmPortLcClass2TxFrjtFrames Counter32, + fcmPortLcClass2TxPrjtFrames Counter32, + fcmPortLcClass3RxFrames Counter32, + fcmPortLcClass3RxOctets Counter32, + fcmPortLcClass3TxFrames Counter32, + fcmPortLcClass3TxOctets Counter32, + fcmPortLcClass3Discards Counter32 + } + +fcmPortLcBBCreditZeros OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions in/out of the buffer-to-buffer + credit zero state. The other side is not providing any + credit." + ::= { fcmPortLcStatsEntry 1 } + +fcmPortLcFullInputBuffers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of occurrences when all input buffers of a port + were full and outbound buffer-to-buffer credit transitioned + to zero, i.e., there became no credit to provide to other + side." + ::= { fcmPortLcStatsEntry 2 } + + + + + + + +fcmPortLcClass2RxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames received at this port." + ::= { fcmPortLcStatsEntry 3 } + +fcmPortLcClass2RxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 2 frames received + at this port." + ::= { fcmPortLcStatsEntry 4 } + +fcmPortLcClass2TxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames transmitted out of this port." + ::= { fcmPortLcStatsEntry 5 } + +fcmPortLcClass2TxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 2 frames + transmitted out of this port." + ::= { fcmPortLcStatsEntry 6 } + +fcmPortLcClass2Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames that were discarded upon + reception at this port." + ::= { fcmPortLcStatsEntry 7 } + + + + + + + + + +fcmPortLcClass2RxFbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_BSY was returned to this port as + a result of a Class 2 frame that could not be delivered to + the other end of the link. This can occur when either the + fabric or the destination port is temporarily busy. Note + that this counter will never increment for an F_Port." + ::= { fcmPortLcStatsEntry 8 } + +fcmPortLcClass2RxPbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_BSY was returned to this port as + a result of a Class 2 frame that could not be delivered to + the other end of the link. This can occur when the + destination port is temporarily busy." + ::= { fcmPortLcStatsEntry 9 } + +fcmPortLcClass2RxFrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_RJT was returned to this port as + a result of a Class 2 frame that was rejected by the fabric. + Note that this counter will never increment for an F_Port." + ::= { fcmPortLcStatsEntry 10 } + +fcmPortLcClass2RxPrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_RJT was returned to this port as + a result of a Class 2 frame that was rejected at the + destination N_Port." + ::= { fcmPortLcStatsEntry 11 } + + + + + + + + + +fcmPortLcClass2TxFbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_BSY was generated by this port + as a result of a Class 2 frame that could not be delivered + because either the Fabric or the destination port was + temporarily busy. Note that this counter will never + increment for an N_Port." + ::= { fcmPortLcStatsEntry 12 } + +fcmPortLcClass2TxPbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_BSY was generated by this port + as a result of a Class 2 frame that could not be delivered + because the destination port was temporarily busy. Note + that this counter will never increment for an F_Port." + ::= { fcmPortLcStatsEntry 13 } + +fcmPortLcClass2TxFrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that F_RJT was generated by this port + as a result of a Class 2 frame being rejected by the fabric. + Note that this counter will never increment for an N_Port." + ::= { fcmPortLcStatsEntry 14 } + +fcmPortLcClass2TxPrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that P_RJT was generated by this port + as a result of a Class 2 frame being rejected at the + destination N_Port. Note that this counter will never + increment for an F_Port." + ::= { fcmPortLcStatsEntry 15 } + + + + + + + + +fcmPortLcClass3RxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames received at this port." + ::= { fcmPortLcStatsEntry 16 } + +fcmPortLcClass3RxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 3 frames received + at this port." + ::= { fcmPortLcStatsEntry 17 } + +fcmPortLcClass3TxFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames transmitted out of this port." + ::= { fcmPortLcStatsEntry 18 } + +fcmPortLcClass3TxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in Class 3 frames + transmitted out of this port." + ::= { fcmPortLcStatsEntry 19 } + +fcmPortLcClass3Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames that were discarded upon + reception at this port." + ::= { fcmPortLcStatsEntry 20 } + + + + + + + + + +--******************************** +-- Port Error Counters +-- + +fcmPortErrorsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmPortErrorsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Error counters for Fibre Channel ports." + ::= { fcmgmtObjects 6 } + +fcmPortErrorsEntry OBJECT-TYPE + SYNTAX FcmPortErrorsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Error counters for a Fibre Channel port. If any counter in + this table suffers a discontinuity, the value of + ifCounterDiscontinuityTime (defined in the IF-MIB) must be + updated." + REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000." + AUGMENTS { fcmPortEntry } + ::= { fcmPortErrorsTable 1 } + +FcmPortErrorsEntry ::= + SEQUENCE { + fcmPortRxLinkResets Counter32, + fcmPortTxLinkResets Counter32, + fcmPortLinkResets Counter32, + fcmPortRxOfflineSequences Counter32, + fcmPortTxOfflineSequences Counter32, + fcmPortLinkFailures Counter32, + fcmPortLossofSynchs Counter32, + fcmPortLossofSignals Counter32, + fcmPortPrimSeqProtocolErrors Counter32, + fcmPortInvalidTxWords Counter32, + fcmPortInvalidCRCs Counter32, + fcmPortInvalidOrderedSets Counter32, + fcmPortFrameTooLongs Counter32, + fcmPortTruncatedFrames Counter32, + fcmPortAddressErrors Counter32, + fcmPortDelimiterErrors Counter32, + fcmPortEncodingDisparityErrors Counter32, + fcmPortOtherErrors Counter32 + } + + + + + +fcmPortRxLinkResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Link Reset (LR) Primitive Sequences + received." + ::= { fcmPortErrorsEntry 1 } + +fcmPortTxLinkResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Link Reset (LR) Primitive Sequences + transmitted." + ::= { fcmPortErrorsEntry 2 } + +fcmPortLinkResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the reset link protocol was initiated + on this port. This includes the number of Loop + Initialization Primitive (LIP) events on an arbitrated loop + port." + ::= { fcmPortErrorsEntry 3 } + +fcmPortRxOfflineSequences OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Offline (OLS) Primitive Sequences received at + this port." + ::= { fcmPortErrorsEntry 4 } + +fcmPortTxOfflineSequences OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Offline (OLS) Primitive Sequences transmitted + by this port." + ::= { fcmPortErrorsEntry 5 } + + + + + +fcmPortLinkFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of link failures. This count is part of FC-PH's + Link Error Status Block (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8 [FC-PH]." + ::= { fcmPortErrorsEntry 6 } + +fcmPortLossofSynchs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of instances of synchronization loss detected at + this port. This count is part of FC-PH's Link Error Status + Block (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 7 } + +fcmPortLossofSignals OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of instances of signal loss detected at this + port. This count is part of FC-PH's Link Error Status Block + (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 8 } + +fcmPortPrimSeqProtocolErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of primitive sequence protocol errors detected + at this port. This count is part of FC-PH's Link Error + Status Block (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 9 } + + + + + +fcmPortInvalidTxWords OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid transmission words received at this + port. This count is part of FC-PH's Link Error Status Block + (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 10 } + +fcmPortInvalidCRCs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received with an invalid CRC. This + count is part of FC-PH's Link Error Status Block (LESB)." + REFERENCE + "FC-PH, rev 4.3, 1 June 1994, section 29.8." + ::= { fcmPortErrorsEntry 11 } + +fcmPortInvalidOrderedSets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid ordered sets received at this port." + ::= { fcmPortErrorsEntry 12 } + +fcmPortFrameTooLongs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received at this port for which the + frame length was greater than what was agreed to in + FLOGI/PLOGI. This could be caused by losing the end of + frame delimiter." + ::= { fcmPortErrorsEntry 13 } + +fcmPortTruncatedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received at this port for which the + + + + frame length was less than the minimum indicated by the + frame header - normally 24 bytes, but it could be more if + the DFCTL field indicates an optional header should have + been present." + ::= { fcmPortErrorsEntry 14 } + +fcmPortAddressErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received with unknown addressing; for + example, an unknown SID or DID." + ::= { fcmPortErrorsEntry 15 } + +fcmPortDelimiterErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid frame delimiters received at this + port. An example is a frame with a class 2 start and a + class 3 at the end." + ::= { fcmPortErrorsEntry 16 } + +fcmPortEncodingDisparityErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of encoding disparity errors received at this + port." + ::= { fcmPortErrorsEntry 17 } + +fcmPortOtherErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of errors that were detected on this port but + not counted by any other error counter in this row." + ::= { fcmPortErrorsEntry 18 } + + + + + + + + + +--******************************** +-- The Fibre Channel Fx_Port Table +-- + +fcmFxPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmFxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Additional information about Fibre Channel ports that is + specific to Fx_Ports. This table will contain one entry for + each fcmPortTable entry that represents an Fx_Port." + ::= { fcmgmtObjects 7 } + +fcmFxPortEntry OBJECT-TYPE + SYNTAX FcmFxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a specific Fx_Port." + INDEX { ifIndex } + ::= { fcmFxPortTable 1 } + +FcmFxPortEntry ::= + SEQUENCE { + fcmFxPortRatov Unsigned32, + fcmFxPortEdtov Unsigned32, + fcmFxPortRttov Unsigned32, + fcmFxPortHoldTime Unsigned32, + fcmFxPortCapBbCreditMax FcBbCredit, + fcmFxPortCapBbCreditMin FcBbCredit, + fcmFxPortCapDataFieldSizeMax FcDataFieldSize, + fcmFxPortCapDataFieldSizeMin FcDataFieldSize, + fcmFxPortCapClass2SeqDeliv TruthValue, + fcmFxPortCapClass3SeqDeliv TruthValue, + fcmFxPortCapHoldTimeMax Unsigned32, + fcmFxPortCapHoldTimeMin Unsigned32 + } + +fcmFxPortRatov OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Resource_Allocation_Timeout Value configured for this + Fx_Port. This is used as the timeout value for determining + when to reuse an Nx_Port resource such as a + + + + Recovery_Qualifier. It represents the Error_Detect_Timeout + value (see fcmFxPortEdtov) plus twice the maximum time that + a frame may be delayed within the Fabric and still be + delivered." + ::= { fcmFxPortEntry 1 } + +fcmFxPortEdtov OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Error_Detect_Timeout value configured for this Fx_Port. + This is used as the timeout value for detecting an error + condition." + ::= { fcmFxPortEntry 2 } + +fcmFxPortRttov OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receiver_Transmitter_Timeout value of this Fx_Port. + This is used by the receiver logic to detect a Loss of + Synchronization." + ::= { fcmFxPortEntry 3 } + +fcmFxPortHoldTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum time that this Fx_Port shall hold a frame + before discarding the frame if it is unable to deliver the + frame. The value 0 means that this Fx_Port does not support + this parameter." + ::= { fcmFxPortEntry 4 } + +fcmFxPortCapBbCreditMax OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of receive buffers that this port is + capable of making available for holding frames from attached + + + + Nx_Port(s)." + ::= { fcmFxPortEntry 5 } + +fcmFxPortCapBbCreditMin OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum number of receive buffers that this port is + capable of making available for holding frames from attached + Nx_Port(s)." + ::= { fcmFxPortEntry 6 } + +fcmFxPortCapDataFieldSizeMax OBJECT-TYPE + SYNTAX FcDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum size in bytes of the Data Field in a frame that + this Fx_Port is capable of receiving from an attached + Nx_Port." + ::= { fcmFxPortEntry 7 } + +fcmFxPortCapDataFieldSizeMin OBJECT-TYPE + SYNTAX FcDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum size in bytes of the Data Field in a frame that + this Fx_Port is capable of receiving from an attached + Nx_Port." + ::= { fcmFxPortEntry 8 } + +fcmFxPortCapClass2SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this Fx_Port is capable of + supporting Class 2 Sequential Delivery." + ::= { fcmFxPortEntry 9 } + + + + + + + +fcmFxPortCapClass3SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this Fx_Port is capable of + supporting Class 3 Sequential Delivery." + ::= { fcmFxPortEntry 10 } + +fcmFxPortCapHoldTimeMax OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum holding time that this Fx_Port is capable of + supporting." + ::= { fcmFxPortEntry 11 } + +fcmFxPortCapHoldTimeMin OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum holding time that this Fx_Port is capable of + supporting." + ::= { fcmFxPortEntry 12 } + +--******************************** +-- The Fibre Channel Inter-Switch Port Table +-- + +fcmISPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmISPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Additional information about E_Ports, B_Ports, and any + other type of Fibre Channel port to which inter-switch links + can be connected. This table will contain one entry for + each fcmPortTable entry that represents such a port." + ::= { fcmgmtObjects 8 } + + + + + + + + +fcmISPortEntry OBJECT-TYPE + SYNTAX FcmISPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a specific port + connected to an inter-switch link." + INDEX { ifIndex } + ::= { fcmISPortTable 1 } + +FcmISPortEntry ::= + SEQUENCE { + fcmISPortClassFCredit FcBbCredit, + fcmISPortClassFDataFieldSize FcDataFieldSize + } + +fcmISPortClassFCredit OBJECT-TYPE + SYNTAX FcBbCredit + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of Class F data frames that can be + transmitted by the inter-switch port without receipt of ACK + or Link_Response frames." + ::= { fcmISPortEntry 1 } + +fcmISPortClassFDataFieldSize OBJECT-TYPE + SYNTAX FcDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receive Data Field Size that the inter-switch port has + agreed to support for Class F frames to/from this port. The + size specifies the largest Data Field Size for an FT_1 + frame." + ::= { fcmISPortEntry 2 } + + + + + + + + + + + + + + +--******************************** +-- The Fabric Login table +-- +-- This table contains the information held by FC switches +-- about the Nx_Ports that are logged-in/attached to their +-- Fx_Ports + +fcmFLoginTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmFLoginEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains one entry for each Nx_Port logged- + in/attached to a particular Fx_Port in the switch. Each + entry contains the services parameters established during + the most recent Fabric Login, explicit or implicit. Note + that an Fx_Port may have one or more Nx_Ports attached to + it." + ::= { fcmgmtObjects 9 } + +fcmFLoginEntry OBJECT-TYPE + SYNTAX FcmFLoginEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing service parameters established from a + successful Fabric Login." + INDEX { ifIndex, fcmFLoginNxPortIndex } + ::= { fcmFLoginTable 1 } + +FcmFLoginEntry ::= + SEQUENCE { + fcmFLoginNxPortIndex Unsigned32, + fcmFLoginPortWwn FcNameIdOrZero, + fcmFLoginNodeWwn FcNameIdOrZero, + fcmFLoginBbCreditModel FcBbCreditModel, + fcmFLoginBbCredit FcBbCredit, + fcmFLoginClassesAgreed FcClasses, + fcmFLoginClass2SeqDelivAgreed TruthValue, + fcmFLoginClass2DataFieldSize FcDataFieldSize, + fcmFLoginClass3SeqDelivAgreed TruthValue, + fcmFLoginClass3DataFieldSize FcDataFieldSize + } + + + + + + + + +fcmFLoginNxPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an Nx_Port + amongst all those attached to the Fx_Port indicated by + ifIndex. + + After a value of this object is assigned to a particular + Nx_Port, that value can be re-used when and only when it is + assigned to the same Nx_Port, or, after a reset of the value + of the relevant instance of ifCounterDiscontinuityTime." + REFERENCE "The Interfaces Group MIB, RFC 2863, June 2000." + ::= { fcmFLoginEntry 1 } + +fcmFLoginPortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port name of the attached Nx_Port, or the zero-length + string if unknown." + ::= { fcmFLoginEntry 2 } + +fcmFLoginNodeWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The node name of the attached Nx_Port, or the zero-length + string if unknown." + ::= { fcmFLoginEntry 3 } + +fcmFLoginBbCreditModel OBJECT-TYPE + SYNTAX FcBbCreditModel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The buffer-to-buffer credit model in use by the Fx_Port." + ::= { fcmFLoginEntry 4 } + +fcmFLoginBbCredit OBJECT-TYPE + SYNTAX FcBbCredit + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of buffers available for holding frames to be + + + + transmitted to the attached Nx_Port. These buffers are for + buffer-to-buffer flow control in the direction from Fx_Port + to Nx_Port." + ::= { fcmFLoginEntry 5 } + +fcmFLoginClassesAgreed OBJECT-TYPE + SYNTAX FcClasses + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Classes of Service that the Fx_Port has agreed to + support for this Nx_Port." + ::= { fcmFLoginEntry 6 } + +fcmFLoginClass2SeqDelivAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the Fx_Port has agreed to support + Class 2 sequential delivery for this Nx_Port. This is only + meaningful if Class 2 service has been agreed upon." + ::= { fcmFLoginEntry 7 } + +fcmFLoginClass2DataFieldSize OBJECT-TYPE + SYNTAX FcDataFieldSize + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receive Data Field Size that the Fx_Port has agreed to + support for Class 2 frames to/from this Nx_Port. The size + specifies the largest Data Field Size for an FT_1 frame. + This is only meaningful if Class 2 service has been agreed + upon." + ::= { fcmFLoginEntry 8 } + +fcmFLoginClass3SeqDelivAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the Fx_Port has agreed to support + Class 3 sequential delivery for this Nx_Port. This is only + meaningful if Class 3 service has been agreed upon." + ::= { fcmFLoginEntry 9 } + + + + + + +fcmFLoginClass3DataFieldSize OBJECT-TYPE + SYNTAX FcDataFieldSize + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receive Data Field Size that the Fx_Port has agreed to + support for Class 3 frames to/from this Nx_Port. The size + specifies the largest Data Field Size for an FT_1 frame. + This is only meaningful if Class 3 service has been agreed + upon." + ::= { fcmFLoginEntry 10 } + +--******************************** +-- The Link table +-- +-- This table is intended to assist management applications +-- in determining the topology of the network. The table +-- contains any recent information the known to the agent +-- about Fibre Channel links, not only those that terminate at +-- a local port but also any others for which information +-- is known. + +fcmLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcmLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing any Fibre Channel link information that + is known to local Fibre Channel managed instances. One end + of such a link is typically at a local port, but the table + can also contain information on links for which neither end + is a local port. + + If one end of a link terminates locally, then that end is + termed 'end1'; the other end is termed 'end2'." + ::= { fcmgmtObjects 10 } + +fcmLinkEntry OBJECT-TYPE + SYNTAX FcmLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information that a particular Fibre + Channel managed instance has about a Fibre Channel link. + + The two ends of the link are called 'end1' and 'end2'." + INDEX { fcmInstanceIndex, fcmLinkIndex } + ::= { fcmLinkTable 1 } + + + +FcmLinkEntry ::= + SEQUENCE { + fcmLinkIndex Unsigned32, + fcmLinkEnd1NodeWwn FcNameIdOrZero, + fcmLinkEnd1PhysPortNumber Unsigned32, + fcmLinkEnd1PortWwn FcNameIdOrZero, + fcmLinkEnd2NodeWwn FcNameIdOrZero, + fcmLinkEnd2PhysPortNumber Unsigned32, + fcmLinkEnd2PortWwn FcNameIdOrZero, + fcmLinkEnd2AgentAddress SnmpAdminString, + fcmLinkEnd2PortType FcPortType, + fcmLinkEnd2UnitType FcUnitFunctions, + fcmLinkEnd2FcAddressId FcAddressIdOrZero + } + +fcmLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies one link + within the set of links about which a particular managed + instance has information." + ::= { fcmLinkEntry 1 } + +fcmLinkEnd1NodeWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The node name of end1, or the zero-length string if + unknown." + ::= { fcmLinkEntry 2 } + +fcmLinkEnd1PhysPortNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical port number of end1, or zero if unknown." + REFERENCE + "FC-GS-3, section 6.1.2.2.5" + ::= { fcmLinkEntry 3 } + + + + + + + + +fcmLinkEnd1PortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port WWN of end1, or the zero-length string if unknown. + ('end1' is local if this value is equal to the value of + fcmPortWwn in one of the rows of the fcmPortTable.)" + ::= { fcmLinkEntry 4 } + +fcmLinkEnd2NodeWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The node name of end2, or the zero-length string if + unknown." + ::= { fcmLinkEntry 5 } + +fcmLinkEnd2PhysPortNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical port number of end2, or zero if unknown." + REFERENCE + "FC-GS-3, section 6.1.2.2.5" + ::= { fcmLinkEntry 6 } + +fcmLinkEnd2PortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port WWN of end2, or the zero-length string if + unknown." + ::= { fcmLinkEntry 7 } + +fcmLinkEnd2AgentAddress OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the management agent for the Fibre Channel + Interconnect Element or Platform of which end2 is a part. + The GS-4 specification provides some information about + management agents. If the address is unknown, the value of + this object is the zero-length string." + + + + REFERENCE + "FC-GS-3, section 6.1.2.1.7" + ::= { fcmLinkEntry 8 } + +fcmLinkEnd2PortType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type of end2." + REFERENCE + "FC-GS-3, section 6.1.2.2.2" + ::= { fcmLinkEntry 9 } + +fcmLinkEnd2UnitType OBJECT-TYPE + SYNTAX FcUnitFunctions + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of/function(s) performed by the Fibre Channel + Interconnect Element or Platform of which end2 is a part." + REFERENCE + "FC-GS-3, sections 6.1.2.1.2 and 6.1.2.3.2" + ::= { fcmLinkEntry 10 } + +fcmLinkEnd2FcAddressId OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fibre Channel Address ID of end2, or the zero-length + string if unknown." + ::= { fcmLinkEntry 11 } + + + + + + + + + + + + + + + + + + +--******************************** +-- Conformance Section +-- + +fcmgmtCompliances OBJECT IDENTIFIER ::= { fcmgmtConformance 1 } +fcmgmtGroups OBJECT IDENTIFIER ::= { fcmgmtConformance 2 } + +fcmgmtCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for compliance to this Fibre + Channel Management MIB." + MODULE -- this module + MANDATORY-GROUPS { fcmInstanceBasicGroup, + fcmPortBasicGroup, + fcmPortErrorsGroup } + + GROUP fcmPortStatsGroup + DESCRIPTION + "This group is mandatory for all systems that + are able to support the Counter64 date type." + + GROUP fcmPortClass23StatsGroup + DESCRIPTION + "This group is mandatory only for systems that + keep class-specific traffic statistics on Class 2 + and Class 3 traffic and are able to support the + Counter64 date type." + + GROUP fcmPortClassFStatsGroup + DESCRIPTION + "This group is mandatory only for FC switches that + keep statistics on Class F traffic." + + GROUP fcmPortLcStatsGroup + DESCRIPTION + "This group is mandatory only for agents that can not + support the Counter64 data type and/or need to provide + information accessible by SNMPv1 applications." + + GROUP fcmSwitchBasicGroup + DESCRIPTION + "This group is mandatory only for Fibre Channel + managed instances that manage Fibre Channel + switches." + + GROUP fcmSwitchPortGroup + DESCRIPTION + + + + "This group is mandatory only for Fibre Channel + managed instances that manage Fibre Channel + switches." + + GROUP fcmSwitchLoginGroup + DESCRIPTION + "This group is mandatory only for Fibre Channel + managed instances that manage Fibre Channel + switches." + + GROUP fcmLinkBasicGroup + DESCRIPTION + "This group is optional." + + OBJECT fcmInstancePhysicalIndex + SYNTAX Integer32 (0) + DESCRIPTION + "Implementation of a non-zero value is not required." + + OBJECT fcmInstanceSoftwareIndex + SYNTAX Integer32 (0) + DESCRIPTION + "Implementation of a non-zero value is not required." + + OBJECT fcmInstanceTextName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcmInstanceDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcmPortAdminType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcmPortAdminSpeed + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcmSwitchDomainId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT fcmISPortClassFCredit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { fcmgmtCompliances 1 } + +--******************************** +-- Object Groups +-- + +fcmInstanceBasicGroup OBJECT-GROUP + OBJECTS { fcmInstanceWwn, fcmInstanceFunctions, + fcmInstancePhysicalIndex, fcmInstanceSoftwareIndex, + fcmInstanceStatus, fcmInstanceTextName, + fcmInstanceDescr, fcmInstanceFabricId } + STATUS current + DESCRIPTION + "Basic information about Fibre Channel managed instances." + ::= { fcmgmtGroups 1 } + +fcmSwitchBasicGroup OBJECT-GROUP + OBJECTS { fcmSwitchDomainId, fcmSwitchPrincipal, fcmSwitchWWN } + STATUS current + DESCRIPTION + "Basic information about Fibre Channel switches." + ::= { fcmgmtGroups 2 } + +fcmPortBasicGroup OBJECT-GROUP + OBJECTS { fcmPortInstanceIndex, fcmPortWwn, fcmPortNodeWwn, + fcmPortAdminType, fcmPortOperType, fcmPortFcCapClass, + fcmPortFcOperClass, fcmPortTransmitterType, + fcmPortConnectorType, fcmPortSerialNumber, + fcmPortPhysicalNumber, fcmPortAdminSpeed, + fcmPortCapProtocols, fcmPortOperProtocols } + STATUS current + DESCRIPTION + "Basic information about Fibre Channel ports." + ::= { fcmgmtGroups 3 } + +fcmPortStatsGroup OBJECT-GROUP + OBJECTS { fcmPortBBCreditZeros, fcmPortFullInputBuffers } + STATUS current + DESCRIPTION + "Traffic statistics, which are not specific to any one class + of service, for Fibre Channel ports." + ::= { fcmgmtGroups 4 } + + + + +fcmPortClass23StatsGroup OBJECT-GROUP + OBJECTS { fcmPortClass2RxFrames, fcmPortClass2RxOctets, + fcmPortClass2TxFrames, fcmPortClass2TxOctets, + fcmPortClass2Discards, fcmPortClass2RxFbsyFrames, + fcmPortClass2RxPbsyFrames, + fcmPortClass2RxFrjtFrames, + fcmPortClass2RxPrjtFrames, + fcmPortClass2TxFbsyFrames, + fcmPortClass2TxPbsyFrames, + fcmPortClass2TxFrjtFrames, + fcmPortClass2TxPrjtFrames, fcmPortClass3RxFrames, + fcmPortClass3RxOctets, fcmPortClass3TxFrames, + fcmPortClass3TxOctets, fcmPortClass3Discards } + STATUS current + DESCRIPTION + "Traffic statistics for Class 2 and Class 3 traffic on Fibre + Channel ports." + ::= { fcmgmtGroups 5 } + +fcmPortClassFStatsGroup OBJECT-GROUP + OBJECTS { fcmPortClassFRxFrames, + fcmPortClassFRxOctets, + fcmPortClassFTxFrames, + fcmPortClassFTxOctets, + fcmPortClassFDiscards } + STATUS current + DESCRIPTION + "Traffic statistics for Class F traffic on Fibre Channel + ports." + ::= { fcmgmtGroups 6 } + +fcmPortLcStatsGroup OBJECT-GROUP + OBJECTS { fcmPortLcBBCreditZeros, fcmPortLcFullInputBuffers, + fcmPortLcClass2RxFrames, fcmPortLcClass2RxOctets, + fcmPortLcClass2TxFrames, fcmPortLcClass2TxOctets, + fcmPortLcClass2Discards, fcmPortLcClass3Discards, + fcmPortLcClass3RxFrames, fcmPortLcClass3RxOctets, + fcmPortLcClass3TxFrames, fcmPortLcClass3TxOctets, + fcmPortLcClass2RxFbsyFrames, + fcmPortLcClass2RxPbsyFrames, + fcmPortLcClass2RxFrjtFrames, + fcmPortLcClass2RxPrjtFrames, + fcmPortLcClass2TxFbsyFrames, + fcmPortLcClass2TxPbsyFrames, + fcmPortLcClass2TxFrjtFrames, + fcmPortLcClass2TxPrjtFrames } + STATUS current + DESCRIPTION + + + + "Low-capacity (32-bit) statistics for Fibre Channel ports." + ::= { fcmgmtGroups 7 } + +fcmPortErrorsGroup OBJECT-GROUP + OBJECTS { fcmPortRxLinkResets, fcmPortTxLinkResets, + fcmPortLinkResets, fcmPortRxOfflineSequences, + fcmPortTxOfflineSequences, fcmPortLinkFailures, + fcmPortLossofSynchs, fcmPortLossofSignals, + fcmPortPrimSeqProtocolErrors, fcmPortInvalidTxWords, + fcmPortInvalidCRCs, fcmPortInvalidOrderedSets, + fcmPortFrameTooLongs, fcmPortTruncatedFrames, + fcmPortAddressErrors, fcmPortDelimiterErrors, + fcmPortEncodingDisparityErrors, + fcmPortOtherErrors } + STATUS current + DESCRIPTION + "Error statistics for Fibre Channel ports." + ::= { fcmgmtGroups 8 } + +fcmSwitchPortGroup OBJECT-GROUP + OBJECTS { fcmFxPortRatov, fcmFxPortEdtov, fcmFxPortRttov, + fcmFxPortHoldTime, fcmFxPortCapBbCreditMax, + fcmFxPortCapBbCreditMin, + fcmFxPortCapDataFieldSizeMax, + fcmFxPortCapDataFieldSizeMin, + fcmFxPortCapClass2SeqDeliv, + fcmFxPortCapClass3SeqDeliv, + fcmFxPortCapHoldTimeMax, + fcmFxPortCapHoldTimeMin, + fcmISPortClassFCredit, + fcmISPortClassFDataFieldSize } + STATUS current + DESCRIPTION + "Information about ports on a Fibre Channel switch." + ::= { fcmgmtGroups 9 } + +fcmSwitchLoginGroup OBJECT-GROUP + OBJECTS { fcmFLoginPortWwn, fcmFLoginNodeWwn, + fcmFLoginBbCreditModel, fcmFLoginBbCredit, + fcmFLoginClassesAgreed, + fcmFLoginClass2SeqDelivAgreed, + fcmFLoginClass2DataFieldSize, + fcmFLoginClass3SeqDelivAgreed, + fcmFLoginClass3DataFieldSize } + STATUS current + DESCRIPTION + "Information known to a Fibre Channel switch about + attached/logged-in Nx_Ports." + + + + ::= { fcmgmtGroups 10 } + +fcmLinkBasicGroup OBJECT-GROUP + OBJECTS { fcmLinkEnd1NodeWwn , fcmLinkEnd1PhysPortNumber, + fcmLinkEnd1PortWwn, fcmLinkEnd2NodeWwn , + fcmLinkEnd2PhysPortNumber, fcmLinkEnd2PortWwn, + fcmLinkEnd2AgentAddress, fcmLinkEnd2PortType, + fcmLinkEnd2UnitType, fcmLinkEnd2FcAddressId } + STATUS current + DESCRIPTION + "Information about Fibre Channel links." + ::= { fcmgmtGroups 11 } + +END diff --git a/mibs/ietf/FCIP-MGMT-MIB b/mibs/ietf/FCIP-MGMT-MIB new file mode 100644 index 0000000..c76ab4d --- /dev/null +++ b/mibs/ietf/FCIP-MGMT-MIB @@ -0,0 +1,1122 @@ +FCIP-MGMT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, + MODULE-IDENTITY, + Unsigned32, + Counter32, + mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + TruthValue, RowStatus, TimeStamp FROM SNMPv2-TC + InetAddressType, + InetAddress, + InetPortNumber FROM INET-ADDRESS-MIB + FcNameIdOrZero FROM FC-MGMT-MIB + InterfaceIndex FROM IF-MIB + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + +fcipMIB MODULE-IDENTITY + LAST-UPDATED "200602060000Z" + ORGANIZATION "IETF IPFC Working Group" + CONTACT-INFO "Anil Rijhsinghani + Accton Technology Corporation + 5 Mount Royal Ave + Marlboro, MA 01752 USA. + + + + Ravi Natarajan + F5 Networks + 2460 North First Street, Suite 100 + San Jose, CA 95131 USA." + DESCRIPTION + "The module defines management information specific to + FCIP devices. + + Copyright(C) The Internet Society (2006). This version + of this MIB module is part of RFC 4404; see the RFC + itself for full legal notices." + REVISION "200602060000Z" + DESCRIPTION + "Initial version of this module, published as RFC 4404." + ::= { mib-2 224 } + +fcipObjects OBJECT IDENTIFIER ::= { fcipMIB 1 } +fcipConformance OBJECT IDENTIFIER ::= { fcipMIB 2 } +fcipConfig OBJECT IDENTIFIER ::= { fcipObjects 1 } + + +-- ****************************************************************** +-- Textual conventions +-- + +FcipDomainIdInOctetForm ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Domain ID of a FC entity in octet form + to support the concatenation(000000h||Domain_ID) + format defined in the FSPF routing protocol." + REFERENCE + "FC-SW-3 section 4.8" + SYNTAX OCTET STRING (SIZE(1)) + +FcipEntityMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of port mode provided by an FCIP Entity + for an FCIP Link. An FCIP Entity can be an E-Port + mode for one of its FCIP Link Endpoints or a B-Port + mode for another of its FCIP Link Endpoints." + REFERENCE + "FC-BB, rev 4.7, 2 May 1997, section 3." + SYNTAX INTEGER { + ePortMode(1), + bPortMode(2) + } + + + +FcipEntityId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The FCIP entity identifier as defined in RFC 3821." + REFERENCE + "RFC 3821, Section 7.1, FCIP Special Frame Format" + SYNTAX OCTET STRING (SIZE(8)) + + +-- ****************************************************************** +-- The FCIP group +-- +-- This group defines the global scalar objects applicable to FCIP +-- devices only +-- + +fcipDynIpConfType OBJECT-TYPE + SYNTAX INTEGER { + slpv2(1), + none(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of discovery protocol used to discover remote + FCIP entities. The value of this object is persistent + across system restarts." + ::= { fcipConfig 1 } + +fcipDeviceWWN OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World Wide Name of this FCIP device." + ::= { fcipConfig 2 } + +fcipEntitySACKOption OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether the TCP Selective Acknowledgement + Option is enabled at this FCIP device to let the receiver + acknowledge multiple lost packets in a single ACK for faster + + + + recovery." + REFERENCE + "The Selective Ack option is defined in RFC 2883." + ::= { fcipConfig 3 } + + +-- ****************************************************************** +-- The FCIP Entity Table +-- + +fcipEntityInstanceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipEntityInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about this FCIP device's existing instances of + FCIP entities." + REFERENCE + "RFC 3821, Section 5.4, FCIP Entity" + ::= { fcipConfig 4 } + +fcipEntityInstanceEntry OBJECT-TYPE + SYNTAX FcipEntityInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP entity table with information + about a particular FCIP entity. Once a row has been + created, it is non-volatile across agent restarts until it + is deleted." + INDEX { fcipEntityId } + ::= { fcipEntityInstanceTable 1 } + +FcipEntityInstanceEntry ::= + SEQUENCE { + fcipEntityId FcipEntityId, + fcipEntityName SnmpAdminString, + fcipEntityAddressType InetAddressType, + fcipEntityAddress InetAddress, + fcipEntityTcpConnPort InetPortNumber, + fcipEntitySeqNumWrap TruthValue, + fcipEntityPHBSupport TruthValue, + fcipEntityStatus RowStatus + } + +fcipEntityId OBJECT-TYPE + SYNTAX FcipEntityId + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The FCIP entity identifier." + REFERENCE + "RFC 3821, Section 7.1, FCIP Special Frame Format" + ::= { fcipEntityInstanceEntry 1 } + +fcipEntityName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively-assigned name for this FCIP entity." + ::= { fcipEntityInstanceEntry 2 } + +fcipEntityAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address by which the entity is + reachable. Only address types IPv4 and IPv6 are supported." + ::= { fcipEntityInstanceEntry 3 } + +fcipEntityAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address for the entity, if configured. The + format of this address is determined by the value of the + fcipEntityAddressType object." + ::= { fcipEntityInstanceEntry 4 } + +fcipEntityTcpConnPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A TCP port other than the FCIP Well-Known port on which the + FCIP entity listens for new TCP connection requests. It + contains the value zero(0) if the FCIP Entity only listens + on the Well-Known port." + DEFVAL { 0 } + ::= { fcipEntityInstanceEntry 5 } + +fcipEntitySeqNumWrap OBJECT-TYPE + SYNTAX TruthValue + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the FCIP Entity supports protection + against sequence number wrap." + REFERENCE + "The PAWS option is defined in RFC 1323." + ::= { fcipEntityInstanceEntry 6 } + +fcipEntityPHBSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the FCIP Entity supports PHB IP + quality of service (QoS)." + REFERENCE + "Per hop behavior is defined in RFC 2474, definition of the + Differentiated Services Field." + ::= { fcipEntityInstanceEntry 7 } + +fcipEntityStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the operational status of the row. + + When a management station sets the status to active(1), then + the values for the objects fcipEntityName, + fcipEntityAddressType, and fcipEntityAddress should be + supplied as part of the set request. The values of the + objects fcipEntityName, fcipEntityAddressType, and + fcipEntityAddress can be changed if the row status is in + active state. The object fcipEntityTcpConnPort takes the + default value zero(0), if no value is supplied at the time + of row creation. + + Setting the status to destroy(6) deletes the specified FCIP + entity instance row from the table. It also deletes all the + rows corresponding to the specified FCIP entity from the + fcipLinkTable and fcipTcpConnTable tables." + ::= { fcipEntityInstanceEntry 8 } + + + + + + + + +-- ****************************************************************** +-- The FCIP Link Table +-- + +fcipLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about FCIP links that exist on this device." + ::= { fcipConfig 5 } + +fcipLinkEntry OBJECT-TYPE + SYNTAX FcipLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP link table containing + information about a particular FCIP link. The values of the + read-create objects in this table are persistent across + system restarts." + INDEX { fcipEntityId, fcipLinkIndex } + ::= { fcipLinkTable 1 } + +FcipLinkEntry ::= + SEQUENCE { + fcipLinkIndex Unsigned32, + fcipLinkIfIndex InterfaceIndex, + fcipLinkCost Unsigned32, + fcipLinkLocalFcipEntityMode FcipEntityMode, + fcipLinkLocalFcipEntityAddressType InetAddressType, + fcipLinkLocalFcipEntityAddress InetAddress, + fcipLinkRemFcipEntityWWN FcNameIdOrZero, + fcipLinkRemFcipEntityId FcipEntityId, + fcipLinkRemFcipEntityAddressType InetAddressType, + fcipLinkRemFcipEntityAddress InetAddress, + fcipLinkStatus RowStatus, + fcipLinkCreateTime TimeStamp +} + +fcipLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies one FCIP link + within an FCIP entity." + ::= { fcipLinkEntry 1 } + + + +fcipLinkIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the virtual interface corresponding to + the FCIP Link running over TCP/IP." + ::= { fcipLinkEntry 2 } + +fcipLinkCost OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The FSPF cost associated with this FCIP Link." + DEFVAL { 0 } + ::= { fcipLinkEntry 3 } + +fcipLinkLocalFcipEntityMode OBJECT-TYPE + SYNTAX FcipEntityMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mode of the local end of the FCIP link." + ::= { fcipLinkEntry 4 } + +fcipLinkLocalFcipEntityAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address contained in the corresponding + instance of fcipLinkLocalFcipEntityAddress. Only address + types IPv4 and IPv6 are supported." + ::= { fcipLinkEntry 5 } + +fcipLinkLocalFcipEntityAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address for the local end of this FCIP Link. + The format of this object is determined by the value of the + fcipLinkLocalFcipEntityAddressType object." + ::= { fcipLinkEntry 6 } + +fcipLinkRemFcipEntityWWN OBJECT-TYPE + SYNTAX FcNameIdOrZero + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The World Wide Name of the remote FC Fabric Entity." + REFERENCE + "RFC 3821, Section 7.1, FCIP Special Frame Format" + ::= { fcipLinkEntry 7 } + +fcipLinkRemFcipEntityId OBJECT-TYPE + SYNTAX FcipEntityId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The remote FCIP entity's identifier." + REFERENCE + "RFC 3821, Section 7.1, FCIP Special Frame Format" + ::= { fcipLinkEntry 8 } + +fcipLinkRemFcipEntityAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address contained in the corresponding + instance of fcipLinkRemFcipEntityAddress. Only address + types IPv4 and IPv6 are supported." + ::= { fcipLinkEntry 9 } + +fcipLinkRemFcipEntityAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address for the remote end of this FCIP Link. + The format of this object is determined by the value of the + fcipLinkRemFcipEntityAddressType object." + ::= { fcipLinkEntry 10 } + +fcipLinkStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the operational status of the row. + + The values of objects fcipLinkLocalFcipEntityAddressType, + fcipLinkLocalFcipEntityAddress, fcipLinkRemFcipEntityWWN, + fcipLinkRemFcipEntityId, fcipLinkRemFcipEntityAddressType, + + + + and fcipLinkRemFcipEntityAddress can be changed if the row + is in active(1) state. The object fcipLinkCost is set to + the value zero(0) if no value is supplied at the time of row + creation. + + Setting the status to destroy(6) deletes the specified FCIP + link from the table. It also deletes all rows corresponding + to the specified FCIP link from the fcipTcpConnTable table." + ::= { fcipLinkEntry 11 } + +fcipLinkCreateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last created." + ::= { fcipLinkEntry 12 } + + +-- ****************************************************************** +-- The TCP Connection Table +-- + +fcipTcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipTcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about existing TCP connections. Each FCIP link + within an FCIP entity manages one or more TCP connections. + The FCIP entity employs a Data Engine for each TCP + connection for handling FC frame encapsulation, + de-encapsulation, and transmission of FCIP frames on the + connection." + ::= { fcipConfig 6 } + +fcipTcpConnEntry OBJECT-TYPE + SYNTAX FcipTcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP TCP Connection table containing + information about a particular TCP connection." + INDEX { fcipEntityId, + fcipLinkIndex, + fcipTcpConnLocalPort, + fcipTcpConnRemPort} + ::= { fcipTcpConnTable 1 } + + + +FcipTcpConnEntry ::= + SEQUENCE { + fcipTcpConnLocalPort InetPortNumber, + fcipTcpConnRemPort InetPortNumber, + fcipTcpConnRWSize Unsigned32, + fcipTcpConnMSS Unsigned32 +} + +fcipTcpConnLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this TCP connection." + ::= { fcipTcpConnEntry 1 } + +fcipTcpConnRemPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this TCP connection." + ::= { fcipTcpConnEntry 2 } + +fcipTcpConnRWSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The default maximum TCP Receiver Window size for this TCP + connection." + ::= { fcipTcpConnEntry 3 } + +fcipTcpConnMSS OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP Maximum Segment Size (MSS) for this TCP connection." + ::= { fcipTcpConnEntry 4 } + + + + + + + + + + + +-- ****************************************************************** +-- The Dynamic Route Table +-- + +fcipDynamicRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipDynamicRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about dynamically discovered routing + information. The FCIP device may use the SLPv2 protocol in + conjunction with other protocols (say, FSPF) for dynamically + discovering other FCIP entities and may populate this table + with FCIP link information for each Destination Address + Identifier." + ::= { fcipConfig 7 } + +fcipDynamicRouteEntry OBJECT-TYPE + SYNTAX FcipDynamicRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP Dynamic Route Table containing + information about a particular FCIP route." + INDEX { fcipEntityId, fcipDynamicRouteDID } + ::= { fcipDynamicRouteTable 1 } + +FcipDynamicRouteEntry ::= + SEQUENCE { + fcipDynamicRouteDID FcipDomainIdInOctetForm, + fcipDynamicRouteLinkIndex Unsigned32 + } + +fcipDynamicRouteDID OBJECT-TYPE + SYNTAX FcipDomainIdInOctetForm + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "8-bit ID of a Fibre Channel Domain that is reachable from + this FCIP device." + ::= { fcipDynamicRouteEntry 1 } + +fcipDynamicRouteLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FCIP Link used to reach the domain specified by the + + + + corresponding instance of fcipDynamicRouteDID. The link + identified by a value of this object is the same FCIP link + as identified by the same value of fcipLinkIndex for the + same FCIP entity." + ::= { fcipDynamicRouteEntry 2 } + + +-- ****************************************************************** +-- The Static Route Table +-- + +fcipStaticRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipStaticRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about static route entries configured by the + Network Admin. In the absence of dynamic discovery of + remote FCIP entities, the Network Manager will figure out + all remote FCIP devices that are reachable from this device + and populate this table with FCIP link information for each + Domain ID. At any time, both static and dynamic routing + can be active, and an entry in the static route table for a + given DID takes precedence over the entry in the dynamic + route table for the same Domain ID." + ::= { fcipConfig 8 } + +fcipStaticRouteEntry OBJECT-TYPE + SYNTAX FcipStaticRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP Static Route Table containing + information about a particular FCIP route. The values of + the read-create objects in this table are persistent across + system restarts." + INDEX { fcipEntityId, fcipStaticRouteDID } + ::= { fcipStaticRouteTable 1 } + +FcipStaticRouteEntry ::= + SEQUENCE { + fcipStaticRouteDID FcipDomainIdInOctetForm, + fcipStaticRouteLinkIndex Unsigned32, + fcipStaticRouteStatus RowStatus + } + +fcipStaticRouteDID OBJECT-TYPE + SYNTAX FcipDomainIdInOctetForm + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "8-bit ID of a Fibre Channel Domain that is reachable from + this FCIP device." + ::= { fcipStaticRouteEntry 1 } + +fcipStaticRouteLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The FCIP Link used to reach the domain specified by the + corresponding instance of fcipStaticRouteDID. The link + identified by a value of this object is the same FCIP link + as identified by the same value of fcipLinkIndex for the + same FCIP entity." + ::= { fcipStaticRouteEntry 2 } + +fcipStaticRouteStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the operational status of the row. + + When a management station sets the status to active(1), + the values for the object fcipStaticRouteLinkIndex should be + supplied as part of the set request. + + Setting the status to destroy(6) deletes the specified FCIP + static route entry from the table." + ::= { fcipStaticRouteEntry 3 } + + +-- ****************************************************************** +-- The FCIP Discovery Domain Table +-- + +fcipDiscoveryDomainTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipDiscoveryDomainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about FCIP Discovery Domains. Each FCIP + Discovery Domain is associated with one or more FCIP + entities." + ::= { fcipConfig 9 } + + + +fcipDiscoveryDomainEntry OBJECT-TYPE + SYNTAX FcipDiscoveryDomainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP Discovery Domain Table + containing information about a particular FCIP Discovery + Domain that is associated with one or more FCIP entities. + The values of the read-write object fcipDiscoveryDomainName + are persistent across system restarts." + INDEX { fcipEntityId, fcipDiscoveryDomainIndex } + ::= { fcipDiscoveryDomainTable 1 } + +FcipDiscoveryDomainEntry ::= + SEQUENCE { + fcipDiscoveryDomainIndex Unsigned32, + fcipDiscoveryDomainName SnmpAdminString + } + +fcipDiscoveryDomainIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer that uniquely identifies an FCIP Discovery Domain + associated with this FCIP entity." + ::= { fcipDiscoveryDomainEntry 1 } + +fcipDiscoveryDomainName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of this FCIP Discovery Domain." + REFERENCE + "RFC 3822, Section 4.1.1, FCIP Discovery Domains" + ::= { fcipDiscoveryDomainEntry 2 } + + + + + + + + + + + + + + +-- ****************************************************************** +-- The FCIP Link Errors +-- + +fcipLinkErrorsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcipLinkErrorsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of error counters for FCIP Links. Each counter + records the number of times a particular error happened that + caused a TCP connection to close down." + REFERENCE + "RFC 3821, Section 5.2, FCIP Link" + ::= { fcipConfig 10 } + +fcipLinkErrorsEntry OBJECT-TYPE + SYNTAX FcipLinkErrorsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the FCIP Link Errors Table containing + error counters for an FCIP Link." + INDEX { fcipEntityId, fcipLinkIndex } + ::= { fcipLinkErrorsTable 1 } + +FcipLinkErrorsEntry ::= + SEQUENCE { + fcipLinkFcipLossofFcSynchs Counter32, + fcipLinkFcipEncapErrors Counter32, + fcipLinkFcipNotReceivedSfResps Counter32, + fcipLinkFcipSfRespMismatches Counter32, + fcipLinkFcipSfInvalidNonces Counter32, + fcipLinkFcipReceivedSfDuplicates Counter32, + fcipLinkFcipSfInvalidWWNs Counter32, + fcipLinkFcipBB2LkaTimeOuts Counter32, + fcipLinkFcipSntpExpiredTimeStamps Counter32, + fcipLinkTcpTooManyErrors Counter32, + fcipLinkTcpExcessiveDroppedDatagrams Counter32, + fcipLinkTcpSaParamMismatches Counter32 + } + +fcipLinkFcipLossofFcSynchs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times FC synchronization was lost on this FCIP + + + + Link. The last discontinuity of this counter is indicated + by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 1 } + +fcipLinkFcipEncapErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FCIP frames received with encapsulation errors + such as improper header, format, or length. The last + discontinuity of this counter is indicated by + fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 2 } + +fcipLinkFcipNotReceivedSfResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an FCIP Special Frame Response was + expected but not received on this FCIP Link. The last + discontinuity of this counter is indicated by + fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 3 } + +fcipLinkFcipSfRespMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times FCIP Special Frame Bytes mismatch + happened on this FCIP Link. The last discontinuity of this + counter is indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 4 } + +fcipLinkFcipSfInvalidNonces OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times FCIP Special Frame Invalid Connection + Nonce happened on this FCIP Link. The last discontinuity + of this counter is indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 5 } + +fcipLinkFcipReceivedSfDuplicates OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times duplicate FCIP Special Frames were + received on this FCIP Link. The last discontinuity of this + counter is indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 6 } + +fcipLinkFcipSfInvalidWWNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times FCIP Special Frames with invalid + destination FC Fabric Entity WWN were received on this FCIP + Link. The last discontinuity of this counter is indicated + by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 7 } + +fcipLinkFcipBB2LkaTimeOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FC Keep Alive Time-outs that occurred on + this FCIP Link. The last discontinuity of this counter + is indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 8 } + +fcipLinkFcipSntpExpiredTimeStamps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames discarded due to an expired Simple + Network Time Protocol (SNTP) timestamp on this FCIP Link. + The last discontinuity of this counter is indicated by + fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 9 } + +fcipLinkTcpTooManyErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TCP connections that closed down on this + FCIP Link due to too many errors on the connection. The + last discontinuity of this counter is indicated by + + + + fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 10 } + +fcipLinkTcpExcessiveDroppedDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TCP connections that closed down on this + FCIP Link due to an excessive number of dropped FCIP + packets. The last discontinuity of this counter is + indicated by fcipLinkCreateTime." + ::= { fcipLinkErrorsEntry 11 } + +fcipLinkTcpSaParamMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times TCP connections with Security + Association parameter mismatches were closed down on this + FCIP Link. The last discontinuity of this counter is + indicated by fcipLinkCreateTime." + REFERENCE + "RFC 3821, Section 9.4.2, TCP Connection Security + Associations (SAs)" + ::= { fcipLinkErrorsEntry 12 } + + +-- ****************************************************************** +-- Conformance Statements +-- + +fcipCompliances OBJECT IDENTIFIER ::= { fcipConformance 1 } +fcipGroups OBJECT IDENTIFIER ::= { fcipConformance 2 } + +fcipCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for FCIP MIB." + MODULE -- this module + MANDATORY-GROUPS { + fcipEntityScalarGroup, + fcipEntityInstanceGroup, + fcipLinkGroup, + fcipTcpConnGroup, + fcipDiscoveryDomainGroup, + fcipLinkErrorsGroup + + + + } + + GROUP fcipDynamicRouteGroup + DESCRIPTION + "This group is mandatory only for systems that do not + have these objects in any other FC MIB. It may be + implemented even in that case for convenience." + + GROUP fcipStaticRouteGroup + DESCRIPTION + "This group is mandatory only for systems that do not + have these objects in any other FC MIB. It may be + implemented even in that case for convenience." + + OBJECT fcipEntityAddressType + SYNTAX INTEGER { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 address types need to be supported for + addressing FCIP entities." + + OBJECT fcipEntityAddress + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "Size of FCIP entity's IP address depends on address type. + FCIP entity address size is four if the IP address is + IPv4 and sixteen if the IP address type is IPv6." + + OBJECT fcipLinkLocalFcipEntityAddressType + SYNTAX INTEGER { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 address types need to be supported for + addressing the local FCIP entities." + + OBJECT fcipLinkLocalFcipEntityAddress + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "Size of FCIP entity's IP address depends on address type. + FCIP entity address size is four if the IP address is + IPv4 and sixteen if the IP address type is IPv6." + + OBJECT fcipLinkRemFcipEntityAddressType + SYNTAX INTEGER { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 address types need to be supported for + addressing the remote FCIP entities." + + OBJECT fcipLinkRemFcipEntityAddress + SYNTAX InetAddress (SIZE(4|16)) + + + + DESCRIPTION + "Size of FCIP entity's IP address depends on the address + type. FCIP entity address size is four if the IP address + is IPv4 and sixteen if the IP address type is IPv6." + + ::= { fcipCompliances 1 } + +fcipEntityScalarGroup OBJECT-GROUP + OBJECTS { fcipDynIpConfType, + fcipDeviceWWN, + fcipEntitySACKOption + } + STATUS current + DESCRIPTION + "Collection of scalar objects applicable to all FCIP + instances." +::= { fcipGroups 1 } + +fcipEntityInstanceGroup OBJECT-GROUP + OBJECTS { + fcipEntityName, + fcipEntityAddressType, + fcipEntityAddress, + fcipEntityTcpConnPort, + fcipEntitySeqNumWrap, + fcipEntityPHBSupport, + fcipEntityStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + instances." +::= { fcipGroups 2 } + +fcipLinkGroup OBJECT-GROUP + OBJECTS { + fcipLinkIfIndex, + fcipLinkCost, + fcipLinkLocalFcipEntityMode, + fcipLinkLocalFcipEntityAddressType, + fcipLinkLocalFcipEntityAddress, + fcipLinkRemFcipEntityWWN, + fcipLinkRemFcipEntityId, + fcipLinkRemFcipEntityAddressType, + fcipLinkRemFcipEntityAddress, + fcipLinkStatus, + fcipLinkCreateTime + } + + + + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + Links." +::= { fcipGroups 3 } + +fcipTcpConnGroup OBJECT-GROUP + OBJECTS { + fcipTcpConnRWSize, + fcipTcpConnMSS + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + TCP connections." +::= { fcipGroups 4 } + +fcipDiscoveryDomainGroup OBJECT-GROUP + OBJECTS { + fcipDiscoveryDomainName + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + Discovery Domains." +::= { fcipGroups 5 } + +fcipLinkErrorsGroup OBJECT-GROUP + OBJECTS { + fcipLinkFcipLossofFcSynchs, + fcipLinkFcipEncapErrors, + fcipLinkFcipNotReceivedSfResps, + fcipLinkFcipSfRespMismatches, + fcipLinkFcipSfInvalidNonces, + fcipLinkFcipReceivedSfDuplicates, + fcipLinkFcipSfInvalidWWNs, + fcipLinkFcipBB2LkaTimeOuts, + fcipLinkFcipSntpExpiredTimeStamps, + fcipLinkTcpTooManyErrors, + fcipLinkTcpExcessiveDroppedDatagrams, + fcipLinkTcpSaParamMismatches + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + link errors." +::= { fcipGroups 6 } + + + + +fcipDynamicRouteGroup OBJECT-GROUP + OBJECTS { + fcipDynamicRouteLinkIndex + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + dynamic routes." +::= { fcipGroups 7 } + +fcipStaticRouteGroup OBJECT-GROUP + OBJECTS { + fcipStaticRouteLinkIndex, + fcipStaticRouteStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about FCIP + static routes." +::= { fcipGroups 8 } + +END diff --git a/mibs/ietf/FDDI-SMT73-MIB b/mibs/ietf/FDDI-SMT73-MIB new file mode 100644 index 0000000..6a9e216 --- /dev/null +++ b/mibs/ietf/FDDI-SMT73-MIB @@ -0,0 +1,2129 @@ +FDDI-SMT73-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + transmission + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [7]. + + +-- this is the FDDI MIB module + +fddi OBJECT IDENTIFIER ::= { transmission 15 } +fddimib OBJECT IDENTIFIER ::= { fddi 73 } + + +-- textual conventions + +FddiTimeNano ::= INTEGER (0..2147483647) +-- This data type specifies 1 nanosecond units as +-- an integer value. +-- +-- NOTE: The encoding is normal integer representation, not +-- two's complement. Since this type is used for variables +-- which are encoded as TimerTwosComplement in the ANSI +-- specification, two operations need to be performed on such +-- variables to convert from ANSI form to SNMP form: +-- +-- 1) Convert from two's complement to normal integer +-- representation +-- 2) Multiply by 80 to convert from 80 nsec to 1 nsec units +-- +-- No resolution is lost. Moreover, the objects for which +-- this data type is used effectively do not lose any range +-- due to the lower maximum value since they do not require +-- the full range. +-- +-- Example: If fddimibMACTReq had a value of 8 ms, it would +-- be stored in ANSI TimerTwosComplement format as 0xFFFE7960 +-- [8 ms is 100000 in 80 nsec units, which is then converted +-- to two's complement] but be reported as 8000000 in SNMP +-- since it is encoded here as FddiTimeNano. + +FddiTimeMilli ::= INTEGER (0..2147483647) +-- This data type is used for some FDDI timers. It specifies +-- time in 1 millisecond units, in normal integer +-- representation. + +FddiResourceId ::= INTEGER (0..65535) +-- This data type is used to refer to an instance of a MAC, +-- PORT, or PATH Resource ID. Indexing begins +-- at 1. Zero is used to indicate the absence of a resource. + +FddiSMTStationIdType ::= OCTET STRING (SIZE (8)) +-- The unique identifier for the FDDI station. This is a +-- string of 8 octets, represented as X' yy yy xx xx xx xx +-- xx xx' with the low order 6 octet (xx) from a unique IEEE +-- assigned address. The high order two bits of the IEEE +-- address, the group address bit and the administration bit +-- (Universal/Local) bit should both be zero. The first two +-- octets, the yy octets, are implementor-defined. +-- +-- The representation of the address portion of the station id +-- is in the IEEE (ANSI/IEEE P802.1A) canonical notation for +-- 48 bit addresses. The canonical form is a 6-octet string +-- where the first octet contains the first 8 bits of the +-- address, with the I/G(Individual/Group) address bit as the +-- least significant bit and the U/L (Universal/Local) bit +-- as the next more significant bit, and so on. Note that +-- addresses in the ANSI FDDI standard SMT frames are +-- represented in FDDI MAC order. + +FddiMACLongAddressType ::= OCTET STRING (SIZE (6)) +-- The representation of long MAC addresses as management +-- values is in the IEEE (ANSI/IEEE P802.1A) canonical +-- notation for 48 bit addresses. The canonical form is a +-- 6-octet string where the first octet contains the first 8 +-- bits of the address, with the I/G (Individual/Group) +-- address bit as the least significant bit and the U/L +-- (Universal/Local) bit as the next more significant bit, +-- and so on. Note that the addresses in the SMT frames are +-- represented in FDDI MAC order. + + +-- groups in the FDDI MIB module + +fddimibSMT OBJECT IDENTIFIER ::= { fddimib 1 } + +fddimibMAC OBJECT IDENTIFIER ::= { fddimib 2 } + +fddimibMACCounters OBJECT IDENTIFIER ::= { fddimib 3 } +fddimibPATH OBJECT IDENTIFIER ::= { fddimib 4 } + +fddimibPORT OBJECT IDENTIFIER ::= { fddimib 5 } + + +-- the SMT group +-- Implementation of the SMT group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +fddimibSMTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of SMT implementations (regardless of + their current state) on this network management + application entity. The value for this variable + must remain constant at least from one re- + initialization of the entity's network management + system to the next re-initialization." + ::= { fddimibSMT 1 } + + +-- the SMT table + +fddimibSMTTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibSMTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of SMT entries. The number of entries + shall not exceed the value of fddimibSMTNumber." + ::= { fddimibSMT 2 } + +fddimibSMTEntry OBJECT-TYPE + SYNTAX FddimibSMTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An SMT entry containing information common to a + given SMT." + INDEX { fddimibSMTIndex } + ::= { fddimibSMTTable 1 } + +FddimibSMTEntry ::= + SEQUENCE { + fddimibSMTIndex + INTEGER, + fddimibSMTStationId + FddiSMTStationIdType, + fddimibSMTOpVersionId + INTEGER, + fddimibSMTHiVersionId + INTEGER, + fddimibSMTLoVersionId + INTEGER, + fddimibSMTUserData + OCTET STRING, + fddimibSMTMIBVersionId + INTEGER, + fddimibSMTMACCts + INTEGER, + fddimibSMTNonMasterCts + INTEGER, + fddimibSMTMasterCts + INTEGER, + fddimibSMTAvailablePaths + INTEGER, + fddimibSMTConfigCapabilities + INTEGER, + fddimibSMTConfigPolicy + INTEGER, + fddimibSMTConnectionPolicy + INTEGER, + fddimibSMTTNotify + INTEGER, + fddimibSMTStatRptPolicy + INTEGER, + fddimibSMTTraceMaxExpiration + FddiTimeMilli, + fddimibSMTBypassPresent + INTEGER, + fddimibSMTECMState + INTEGER, + fddimibSMTCFState + INTEGER, + fddimibSMTRemoteDisconnectFlag + INTEGER, + fddimibSMTStationStatus + INTEGER, + fddimibSMTPeerWrapFlag + INTEGER, + fddimibSMTTimeStamp + FddiTimeMilli, + fddimibSMTTransitionTimeStamp + FddiTimeMilli, + fddimibSMTStationAction + INTEGER + } + +fddimibSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each SMT. The value for each + SMT must remain constant at least from one re- + initialization of the entity's network management + system to the next re-initialization." + ::= { fddimibSMTEntry 1 } + +fddimibSMTStationId OBJECT-TYPE + SYNTAX FddiSMTStationIdType -- OCTET STRING (SIZE (8)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Used to uniquely identify an FDDI station." + REFERENCE + "ANSI { fddiSMT 11 }" + ::= { fddimibSMTEntry 2 } + +fddimibSMTOpVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The version that this station is using for its + operation (refer to ANSI 7.1.2.2). The value of + this variable is 2 for this SMT revision." + REFERENCE + "ANSI { fddiSMT 13 }" + ::= { fddimibSMTEntry 3 } + +fddimibSMTHiVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The highest version of SMT that this station + supports (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 14 }" + ::= { fddimibSMTEntry 4 } + +fddimibSMTLoVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The lowest version of SMT that this station + supports (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 15 }" + ::= { fddimibSMTEntry 5 } + +fddimibSMTUserData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This variable contains 32 octets of user defined + information. The information shall be an ASCII + string." + REFERENCE + "ANSI { fddiSMT 17 }" + ::= { fddimibSMTEntry 6 } + +fddimibSMTMIBVersionId OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The version of the FDDI MIB of this station. The + value of this variable is 1 for this SMT + revision." + REFERENCE + "ANSI { fddiSMT 18 }" + ::= { fddimibSMTEntry 7 } + +fddimibSMTMACCts OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of MACs in this station or + concentrator." + REFERENCE + "ANSI { fddiSMT 21 }" + ::= { fddimibSMTEntry 8 } + +fddimibSMTNonMasterCts OBJECT-TYPE + SYNTAX INTEGER (0..2) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this variable is the number of A, B, + and S ports in this station or concentrator." + REFERENCE + "ANSI { fddiSMT 22 }" + ::= { fddimibSMTEntry 9 } + +fddimibSMTMasterCts OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of M Ports in a node. If the node is + not a concentrator, the value of the variable is + zero." + REFERENCE + "ANSI { fddiSMT 23 }" + ::= { fddimibSMTEntry 10 } + +fddimibSMTAvailablePaths OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the PATH types available + in the station. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this node has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 + + For example, a station having Primary and Local + PATHs available would have a value of 5 (2**0 + + 2**2)." + REFERENCE + "ANSI { fddiSMT 24 }" + ::= { fddimibSMTEntry 11 } + +fddimibSMTConfigCapabilities OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the configuration + capabilities of a node. The 'Hold Available' bit + indicates the support of the optional Hold + Function, which is controlled by + fddiSMTConfigPolicy. The 'CF-Wrap-AB' bit + indicates that the station has the capability of + performing a wrap_ab (refer to ANSI SMT 9.7.2.2). + + The value is a sum. This value initially takes + the value zero, then for each of the configuration + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + holdAvailable 0 + CF-Wrap-AB 1 " + REFERENCE + "ANSI { fddiSMT 25 }" + ::= { fddimibSMTEntry 12 } + +fddimibSMTConfigPolicy OBJECT-TYPE + SYNTAX INTEGER (0..1) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the configuration policies + currently desired in a node. 'Hold' is one of the + terms used for the Hold Flag, an optional ECM flag + used to enable the optional Hold policy. + + The value is a sum. This value initially takes + the value zero, then for each of the configuration + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + configurationhold 0 " + REFERENCE + "ANSI { fddiSMT 26 }" + ::= { fddimibSMTEntry 13 } + +fddimibSMTConnectionPolicy OBJECT-TYPE + SYNTAX INTEGER (32768..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value representing the connection policies in + effect in a node. A station sets the corresponding + bit for each of the connection types that it + rejects. The letter designations, X and Y, in the + 'rejectX-Y' names have the following significance: + X represents the PC-Type of the local PORT and Y + represents the PC_Type of the adjacent PORT + (PC_Neighbor). The evaluation of Connection- + Policy (PC-Type, PC-Neighbor) is done to determine + the setting of T- Val(3) in the PC-Signalling + sequence (refer to ANSI 9.6.3). Note that Bit 15, + (rejectM-M), is always set and cannot be cleared. + + The value is a sum. This value initially takes + the value zero, then for each of the connection + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + rejectA-A 0 + rejectA-B 1 + rejectA-S 2 + rejectA-M 3 + rejectB-A 4 + rejectB-B 5 + rejectB-S 6 + rejectB-M 7 + rejectS-A 8 + rejectS-B 9 + rejectS-S 10 + rejectS-M 11 + rejectM-A 12 + rejectM-B 13 + rejectM-S 14 + rejectM-M 15 " + REFERENCE + "ANSI { fddiSMT 27 }" + ::= { fddimibSMTEntry 14 } + +fddimibSMTTNotify OBJECT-TYPE + SYNTAX INTEGER (2..30) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The timer, expressed in seconds, used in the + Neighbor Notification protocol. It has a range of + 2 seconds to 30 seconds, and its default value is + 30 seconds (refer to ANSI SMT 8.2)." + REFERENCE + "ANSI { fddiSMT 29 }" + ::= { fddimibSMTEntry 15 } + +fddimibSMTStatRptPolicy OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If true, indicates that the node will generate + Status Reporting Frames for its implemented events + and conditions. It has an initial value of true. + This variable determines the value of the + SR_Enable Flag (refer to ANSI SMT 8.3.2.1)." + REFERENCE + "ANSI { fddiSMT 30 }" + ::= { fddimibSMTEntry 16 } + +fddimibSMTTraceMaxExpiration OBJECT-TYPE + SYNTAX FddiTimeMilli + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Reference Trace_Max (refer to ANSI SMT + 9.4.4.2.2)." + REFERENCE + "ANSI { fddiSMT 31 }" + ::= { fddimibSMTEntry 17 } + +fddimibSMTBypassPresent OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag indicating if the station has a bypass on + its AB port pair." + REFERENCE + "ANSI { fddiSMT 34 }" + ::= { fddimibSMTEntry 18 } + +fddimibSMTECMState OBJECT-TYPE + SYNTAX INTEGER { + ec0(1), -- Out + ec1(2), -- In + ec2(3), -- Trace + ec3(4), -- Leave + ec4(5), -- Path_Test + ec5(6), -- Insert + ec6(7), -- Check + ec7(8) -- Deinsert + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of the ECM state + machine (refer to ANSI SMT 9.5.2)." + REFERENCE + "ANSI { fddiSMT 41 }" + ::= { fddimibSMTEntry 19 } + +fddimibSMTCFState OBJECT-TYPE + SYNTAX INTEGER { + cf0(1), -- isolated + cf1(2), -- local_a + cf2(3), -- local_b + cf3(4), -- local_ab + cf4(5), -- local_s + cf5(6), -- wrap_a + cf6(7), -- wrap_b + cf7(8), -- wrap_ab + cf8(9), -- wrap_s + cf9(10), -- c_wrap_a + cf10(11), -- c_wrap_b + cf11(12), -- c_wrap_s + cf12(13) -- thru + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The attachment configuration for the station or + concentrator (refer to ANSI SMT 9.7.2.2)." + REFERENCE + "ANSI { fddiSMT 42 }" + ::= { fddimibSMTEntry 20 } + +fddimibSMTRemoteDisconnectFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag indicating that the station was remotely + disconnected from the network as a result of + receiving an fddiSMTAction, disconnect (refer to + ANSI SMT 6.4.5.3) in a Parameter Management Frame. + A station requires a Connect Action to rejoin and + clear the flag (refer to ANSI SMT 6.4.5.2)." + REFERENCE + "ANSI { fddiSMT 44 }" + ::= { fddimibSMTEntry 21 } + +fddimibSMTStationStatus OBJECT-TYPE + SYNTAX INTEGER { concatenated(1), separated(2), thru(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current status of the primary and secondary + paths within this station." + REFERENCE + "ANSI { fddiSMT 45 }" + ::= { fddimibSMTEntry 22 } + +fddimibSMTPeerWrapFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable assumes the value of the + PeerWrapFlag in CFM (refer to ANSI SMT + 9.7.2.4.4)." + REFERENCE + "ANSI { fddiSMT 46 }" + ::= { fddimibSMTEntry 23 } + +fddimibSMTTimeStamp OBJECT-TYPE + SYNTAX FddiTimeMilli + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable assumes the value of TimeStamp + (refer to ANSI SMT 8.3.2.1)." + REFERENCE + "ANSI { fddiSMT 51 }" + ::= { fddimibSMTEntry 24 } + +fddimibSMTTransitionTimeStamp OBJECT-TYPE + SYNTAX FddiTimeMilli + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable assumes the value of + TransitionTimeStamp (refer to ANSI SMT 8.3.2.1)." + REFERENCE + "ANSI { fddiSMT 52 }" + ::= { fddimibSMTEntry 25 } + +fddimibSMTStationAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + connect(2), + disconnect(3), + path-Test(4), + self-Test(5), + disable-a(6), + disable-b(7), + disable-m(8) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object, when read, always returns a value of + other(1). The behavior of setting this variable + to each of the acceptable values is as follows: + + other(1): Results in an appropriate error. + connect(2): Generates a Connect signal to ECM + to begin a connection sequence. See ANSI + Ref 9.4.2. + disconnect(3): Generates a Disconnect signal + to ECM. see ANSI Ref 9.4.2. + path-Test(4): Initiates a station Path_Test. + The Path_Test variable (see ANSI Ref + 9.4.1) is set to 'Testing'. The results + of this action are not specified in this + standard. + self-Test(5): Initiates a station Self_Test. + The results of this action are not + specified in this standard. + disable-a(6): Causes a PC_Disable on the A + port if the A port mode is peer. + disable-b(7): Causes a PC_Disable on the B + port if the B port mode is peer. + disable-m(8): Causes a PC_Disable on all M + ports. + + Attempts to set this object to all other values + results in an appropriate error. The result of + setting this variable to path-Test(4) or self- + Test(5) is implementation-specific." + REFERENCE + "ANSI { fddiSMT 60 }" + ::= { fddimibSMTEntry 26 } + + +-- the MAC group +-- Implementation of the MAC Group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +fddimibMACNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MAC implementations (across + all SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { fddimibMAC 1 } + + +-- the MAC table + +fddimibMACTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibMACEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MAC entries. The number of entries + shall not exceed the value of fddimibMACNumber." + ::= { fddimibMAC 2 } + +fddimibMACEntry OBJECT-TYPE + SYNTAX FddimibMACEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A MAC entry containing information common to a + given MAC." + INDEX { fddimibMACSMTIndex, fddimibMACIndex } + ::= { fddimibMACTable 1 } + +FddimibMACEntry ::= + SEQUENCE { + fddimibMACSMTIndex + INTEGER, + fddimibMACIndex + INTEGER, + fddimibMACIfIndex + INTEGER, + fddimibMACFrameStatusFunctions + INTEGER, + fddimibMACTMaxCapability + FddiTimeNano, + fddimibMACTVXCapability + FddiTimeNano, + fddimibMACAvailablePaths + INTEGER, + fddimibMACCurrentPath + INTEGER, + fddimibMACUpstreamNbr + FddiMACLongAddressType, + fddimibMACDownstreamNbr + FddiMACLongAddressType, + fddimibMACOldUpstreamNbr + FddiMACLongAddressType, + fddimibMACOldDownstreamNbr + FddiMACLongAddressType, + fddimibMACDupAddressTest + INTEGER, + fddimibMACRequestedPaths + INTEGER, + fddimibMACDownstreamPORTType + INTEGER, + fddimibMACSMTAddress + FddiMACLongAddressType, + fddimibMACTReq + FddiTimeNano, + fddimibMACTNeg + FddiTimeNano, + fddimibMACTMax + FddiTimeNano, + fddimibMACTvxValue + FddiTimeNano, + fddimibMACFrameCts + Counter, + fddimibMACCopiedCts + Counter, + fddimibMACTransmitCts + Counter, + fddimibMACErrorCts + Counter, + fddimibMACLostCts + Counter, + fddimibMACFrameErrorThreshold + INTEGER, + fddimibMACFrameErrorRatio + INTEGER, + fddimibMACRMTState + INTEGER, + fddimibMACDaFlag + INTEGER, + fddimibMACUnaDaFlag + INTEGER, + fddimibMACFrameErrorFlag + INTEGER, + fddimibMACMAUnitdataAvailable + INTEGER, + fddimibMACHardwarePresent + INTEGER, + fddimibMACMAUnitdataEnable + INTEGER + } + + +fddimibMACSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + MAC." + ::= { fddimibMACEntry 1 } + +fddimibMACIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Index variable for uniquely identifying the MAC + object instances, which is the same as the + corresponding resource index in SMT." + REFERENCE + "ANSI { fddiMAC 34 }" + ::= { fddimibMACEntry 2 } + +fddimibMACIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the MIB-II ifIndex corresponding to + this MAC. If none is applicable, 0 is returned." + REFERENCE + "MIB-II" + ::= { fddimibMACEntry 3 } + +fddimibMACFrameStatusFunctions OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the MAC's optional Frame Status + processing functions. + + The value is a sum. This value initially takes + the value zero, then for each function present, 2 + raised to a power is added to the sum. The powers + are according to the following table: + + function Power + fs-repeating 0 + fs-setting 1 + fs-clearing 2 " + REFERENCE + "ANSI { fddiMAC 11 }" + ::= { fddimibMACEntry 4 } + +fddimibMACTMaxCapability OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the maximum time value of fddiMACTMax + that this MAC can support." + REFERENCE + "ANSI { fddiMAC 13 }" + ::= { fddimibMACEntry 5 } + +fddimibMACTVXCapability OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the maximum time value of + fddiMACTvxValue that this MAC can support." + REFERENCE + "ANSI { fddiMAC 14 }" + ::= { fddimibMACEntry 6 } + +fddimibMACAvailablePaths OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the paths available for this MAC (refer + to ANSI SMT 9.7.7). + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this MAC has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 " + REFERENCE + "ANSI { fddiMAC 22 }" + ::= { fddimibMACEntry 7 } + +fddimibMACCurrentPath OBJECT-TYPE + SYNTAX INTEGER { + isolated(1), + local(2), + secondary(3), + primary(4), + concatenated(5), + thru(6) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the Path into which this MAC is + currently inserted (refer to ANSI 9.7.7)." + REFERENCE + "ANSI { fddiMAC 23 }" + ::= { fddimibMACEntry 8 } + +fddimibMACUpstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC's upstream neighbor's long individual MAC + address. It has an initial value of the SMT- + Unknown-MAC Address and is only modified as + specified by the Neighbor Information Frame + protocol (refer to ANSI SMT 7.2.1 and 8.2)." + REFERENCE + "ANSI { fddiMAC 24 }" + ::= { fddimibMACEntry 9 } + +fddimibMACDownstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC's downstream neighbor's long individual + MAC address. It has an initial value of the SMT- + Unknown-MAC Address and is only modified as + specified by the Neighbor Information Frame + protocol (refer to ANSI SMT 7.2.1 and 8.2)." + REFERENCE + "ANSI { fddiMAC 25 }" + ::= { fddimibMACEntry 10 } + +fddimibMACOldUpstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The previous value of the MAC's upstream + neighbor's long individual MAC address. It has an + initial value of the SMT-Unknown- MAC Address and + is only modified as specified by the Neighbor + Information Frame protocol (refer to ANSI SMT + 7.2.1 and 8.2)." + REFERENCE + "ANSI { fddiMAC 26 }" + ::= { fddimibMACEntry 11 } + +fddimibMACOldDownstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The previous value of the MAC's downstream + neighbor's long individual MAC address. It has an + initial value of the SMT- Unknown-MAC Address and + is only modified as specified by the Neighbor + Information Frame protocol (refer to ANSI SMT + 7.2.1 and 8.2)." + REFERENCE + "ANSI { fddiMAC 27 }" + ::= { fddimibMACEntry 12 } + +fddimibMACDupAddressTest OBJECT-TYPE + SYNTAX INTEGER { none(1), pass(2), fail(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Duplicate Address Test flag, Dup_Addr_Test + (refer to ANSI 8.2)." + REFERENCE + "ANSI { fddiMAC 29 }" + ::= { fddimibMACEntry 13 } + +fddimibMACRequestedPaths OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "List of permitted Paths which specifies the + Path(s) into which the MAC may be inserted (refer + to ansi SMT 9.7). + + The value is a sum which represents the individual + paths that are desired. This value initially + takes the value zero, then for each type of PATH + that this node is, 2 raised to a power is added to + the sum. The powers are according to the + following table: + + Path Power + local 0 + secondary-alternate 1 + primary-alternate 2 + concatenated-alternate 3 + secondary-preferred 4 + primary-preferred 5 + concatenated-preferred 6 + thru 7 " + REFERENCE + "ANSI { fddiMAC 32 }" + ::= { fddimibMACEntry 14 } + +fddimibMACDownstreamPORTType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), none(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the PC-Type of the first port that is + downstream of this MAC (the exit port)." + REFERENCE + "ANSI { fddiMAC 33 }" + ::= { fddimibMACEntry 15 } + +fddimibMACSMTAddress OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The 48-bit individual address of the MAC used for + SMT frames." + REFERENCE + "ANSI { fddiMAC 41 }" + ::= { fddimibMACEntry 16 } + +fddimibMACTReq OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the T_Req_value passed to the + MAC. Without having detected a duplicate, the + time value of this variable shall assume the + maximum supported time value which is less than or + equal to the time value of fddiPATHMaxT-Req. When + a MAC has an address detected as a duplicate, it + may use a time value for this variable greater + than the time value of fddiPATHTMaxLowerBound. A + station shall cause claim when the new T_Req may + cause the value of T_Neg to change in the claim + process, (i.e., time value new T_Req < T_Neg, or + old T_Req = T_Neg)." + REFERENCE + "ANSI { fddiMAC 51 }" + ::= { fddimibMACEntry 17 } + +fddimibMACTNeg OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "It is reported as a FddiTimeNano number." + REFERENCE + "ANSI { fddiMAC 52 }" + ::= { fddimibMACEntry 18 } + +fddimibMACTMax OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the T_Max_value passed to the + MAC. The time value of this variable shall assume + the minimum suported time value which is greater + than or equal to the time value of fddiPATHT- + MaxLowerBound" + REFERENCE + "ANSI { fddiMAC 53 }" + ::= { fddimibMACEntry 19 } + +fddimibMACTvxValue OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the TVX_value passed to the MAC. + The time value of this variable shall assume the + minimum suported time value which is greater than + or equal to the time value of + fddiPATHTVXLowerBound." + REFERENCE + "ANSI { fddiMAC 54 }" + ::= { fddimibMACEntry 20 } + +fddimibMACFrameCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of frames received by this + MAC (refer to ANSI MAC 7.5.1)." + REFERENCE + "ANSI { fddiMAC 71 }" + ::= { fddimibMACEntry 21 } + +fddimibMACCopiedCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of frames addressed to (A bit set) and + successfully copied into the station's receive + buffers (C bit set) by this MAC (refer to ANSI MAC + 7.5). Note that this count does not include MAC + frames." + REFERENCE + "ANSI { fddiMAC 72 }" + ::= { fddimibMACEntry 22 } + +fddimibMACTransmitCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of frames transmitted by this MAC + (refer to ANSI MAC 7.5). Note that this count + does not include MAC frames." + REFERENCE + "ANSI { fddiMAC 73 }" + ::= { fddimibMACEntry 23 } + +fddimibMACErrorCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of frames that were + detected in error by this MAC that had not been + detected in error by another MAC (refer to ANSI + MAC 7.5.2)." + REFERENCE + "ANSI { fddiMAC 81 }" + ::= { fddimibMACEntry 24 } + +fddimibMACLostCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of instances that this MAC + detected a format error during frame reception + such that the frame was stripped (refer to ANSI + MAC 7.5.3)." + REFERENCE + "ANSI { fddiMAC 82 }" + ::= { fddimibMACEntry 25 } + +fddimibMACFrameErrorThreshold OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A threshold for determining when a MAC Condition + report (see ANSI 8.3.1.1) shall be generated. + Stations not supporting variable thresholds shall + have a value of 0 and a range of (0..0)." + REFERENCE + "ANSI { fddiMAC 95 }" + ::= { fddimibMACEntry 26 } + +fddimibMACFrameErrorRatio OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the value of the ratio, + + ((delta fddiMACLostCts + delta fddiMACErrorCts) / + (delta fddiMACFrameCts + delta fddiMACLostCts )) + * 2**16 " + REFERENCE + "ANSI { fddiMAC 96 }" + ::= { fddimibMACEntry 27 } + +fddimibMACRMTState OBJECT-TYPE + SYNTAX INTEGER { + rm0(1), -- Isolated + rm1(2), -- Non_Op + rm2(3), -- Ring_Op + rm3(4), -- Detect + rm4(5), -- Non_Op_Dup + rm5(6), -- Ring_Op_Dup + rm6(7), -- Directed + rm7(8) -- Trace + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of the RMT State + Machine (refer to ANSI 10.3.2)." + REFERENCE + "ANSI { fddiMAC 111 }" + ::= { fddimibMACEntry 28 } + +fddimibMACDaFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The RMT flag Duplicate Address Flag, DA_Flag + (refer to ANSI 10.2.1.2)." + REFERENCE + "ANSI { fddiMAC 112 }" + ::= { fddimibMACEntry 29 } + +fddimibMACUnaDaFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag, UNDA_Flag (refer to ANSI 8.2.2.1), set + when the upstream neighbor reports a duplicate + address condition. Cleared when the condition + clears." + REFERENCE + "ANSI { fddiMAC 113 }" + ::= { fddimibMACEntry 30 } + +fddimibMACFrameErrorFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the MAC Frame Error Condition is + present when set. Cleared when the condition + clears and on station initialization." + REFERENCE + "ANSI { fddiMAC 114 }" + ::= { fddimibMACEntry 31 } + +fddimibMACMAUnitdataAvailable OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable shall take on the value of the + MAC_Avail flag defined in RMT." + REFERENCE + "ANSI { fddiMAC 116 }" + ::= { fddimibMACEntry 32 } + +fddimibMACHardwarePresent OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable indicates the presence of + underlying hardware support for this MAC object. + If the value of this object is false(2), the + reporting of the objects in this entry may be + handled in an implementation-specific manner." + REFERENCE + "ANSI { fddiMAC 117 }" + ::= { fddimibMACEntry 33 } + +fddimibMACMAUnitdataEnable OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This variable determines the value of the + MA_UNITDATA_Enable flag in RMT. The default and + initial value of this flag is true(1)." + REFERENCE + "ANSI { fddiMAC 118 }" + ::= { fddimibMACEntry 34 } + + +-- the Enhanced MAC Counters group +-- Implementation of this Group is optional, but systems +-- claiming support must implement all variables in this +-- group + + +-- the MAC Counters table + +fddimibMACCountersTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibMACCountersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MAC Counters entries. The number of + entries shall not exceed the value of + fddimibMACNumber." + ::= { fddimibMACCounters 1 } + +fddimibMACCountersEntry OBJECT-TYPE + SYNTAX FddimibMACCountersEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A MAC Counters entry containing information + common to a given MAC." + INDEX { fddimibMACSMTIndex, fddimibMACIndex } + ::= { fddimibMACCountersTable 1 } + +FddimibMACCountersEntry ::= + SEQUENCE { + fddimibMACTokenCts + Counter, + fddimibMACTvxExpiredCts + Counter, + fddimibMACNotCopiedCts + Counter, + fddimibMACLateCts + Counter, + fddimibMACRingOpCts + Counter, + fddimibMACNotCopiedRatio + INTEGER, + fddimibMACNotCopiedFlag + INTEGER, + fddimibMACNotCopiedThreshold + INTEGER + } + +fddimibMACTokenCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of times the station has received a + token (total of non-restricted and restricted) on + this MAC (see ANSI MAC 7.4). This count is + valuable for determination of network load." + REFERENCE + "ANSI { fddiMAC 74 }" + ::= { fddimibMACCountersEntry 1 } + +fddimibMACTvxExpiredCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of times that TVX has expired." + REFERENCE + "ANSI { fddiMAC 83 }" + ::= { fddimibMACCountersEntry 2 } + +fddimibMACNotCopiedCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of frames that were addressed to this + MAC but were not copied into its receive buffers + (see ANSI MAC 7.5). For example, this might occur + due to local buffer congestion. Because of + implementation considerations, this count may not + match the actual number of frames not copied. It + is not a requirement that this count be exact. + Note that this count does not include MAC frames." + REFERENCE + "ANSI { fddiMAC 84 }" + ::= { fddimibMACCountersEntry 3 } + +fddimibMACLateCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count that should as closely as possible match + the number of TRT expirations since this MAC was + reset or a token was received (refer to ANSI MAC + 7.4.5)." + REFERENCE + "ANSI { fddiMAC 85 }" + ::= { fddimibMACCountersEntry 4 } + +fddimibMACRingOpCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of the number of times the ring has + entered the 'Ring_Operational' state from the + 'Ring Not Operational' state. This count is + updated when a SM_MA_STATUS.Indication of a change + in the Ring_Operational status occurs (refer to + ANSI 6.1.4). Because of implementation + considerations, this count may be less than the + actual RingOp_Ct. It is not a requirement that + this count be exact." + REFERENCE + "ANSI { fddiMAC 86 }" + ::= { fddimibMACCountersEntry 5 } + +fddimibMACNotCopiedRatio OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is the value of the ratio: + + (delta fddiMACNotCopiedCts / + (delta fddiMACCopiedCts + + delta fddiMACNotCopiedCts )) * 2**16 " + REFERENCE + "ANSI { fddiMAC 105 }" + ::= { fddimibMACCountersEntry 6 } + +fddimibMACNotCopiedFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates that the Not Copied condition is + present when read as true(1). Set to false(2) + when the condition clears and on station + initialization." + REFERENCE + "ANSI { fddiMAC 115 }" + ::= { fddimibMACCountersEntry 7 } + +fddimibMACNotCopiedThreshold OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A threshold for determining when a MAC condition + report shall be generated. Stations not + supporting variable thresholds shall have a value + of 0 and a range of (0..0)." + REFERENCE + "ANSI { fddiMAC 103 }" + ::= { fddimibMACCountersEntry 8 } + + +-- the PATH group +-- Implementation of the PATH group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +fddimibPATHNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of PATHs possible (across all + SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { fddimibPATH 1 } + + +-- the PATH table + +fddimibPATHTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibPATHEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of PATH entries. The number of entries + shall not exceed the value of fddimibPATHNumber." + ::= { fddimibPATH 2 } + +fddimibPATHEntry OBJECT-TYPE + SYNTAX FddimibPATHEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A PATH entry containing information common to a + given PATH." + INDEX { fddimibPATHSMTIndex, fddimibPATHIndex } + ::= { fddimibPATHTable 1 } + +FddimibPATHEntry ::= + SEQUENCE { + fddimibPATHSMTIndex + INTEGER, + fddimibPATHIndex + INTEGER, + fddimibPATHTVXLowerBound + FddiTimeNano, + fddimibPATHTMaxLowerBound + FddiTimeNano, + fddimibPATHMaxTReq + FddiTimeNano + } + +fddimibPATHSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + PATH." + ::= { fddimibPATHEntry 1 } + + +fddimibPATHIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Index variable for uniquely identifying the + primary, secondary and local PATH object + instances. Local PATH object instances are + represented with integer values 3 to 255." + REFERENCE + "ANSI { fddiPATH 11 }" + ::= { fddimibPATHEntry 2 } + +fddimibPATHTVXLowerBound OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Specifies the minimum time value of + fddiMACTvxValue that shall be used by any MAC that + is configured in this path. The operational value + of fddiMACTvxValue is managed by settting this + variable. This variable has the time value range + of: + + 0 < fddimibPATHTVXLowerBound < fddimibPATHMaxTReq + Changes to this variable shall either satisfy the + time value relationship: + + fddimibPATHTVXLowerBound <= + fddimibMACTVXCapability + + of each of the MACs currently on the path, or be + considered out of range. The initial value of + fddimibPATHTVXLowerBound shall be 2500 nsec (2.5 + ms)." + REFERENCE + "ANSI { fddiPATH 21 }" + ::= { fddimibPATHEntry 3 } + +fddimibPATHTMaxLowerBound OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Specifies the minimum time value of fddiMACTMax + that shall be used by any MAC that is configured + in this path. The operational value of + fddiMACTMax is managed by setting this variable. + This variable has the time value range of: + + fddimibPATHMaxTReq <= fddimibPATHTMaxLowerBound + + and an absolute time value range of: + + 10000nsec (10 msec) <= fddimibPATHTMaxLowerBound + + Changes to this variable shall either satisfy the + time value relationship: + + fddimibPATHTMaxLowerBound < + fddimibMACTMaxCapability + + of each of the MACs currently on the path, or be + considered out of range. The initial value of + fddimibPATHTMaxLowerBound shall be 165000 nsec + (165 msec)." + REFERENCE + "ANSI { fddiPATH 22 }" + ::= { fddimibPATHEntry 4 } + +fddimibPATHMaxTReq OBJECT-TYPE + SYNTAX FddiTimeNano + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Specifies the maximum time value of fddiMACT-Req + that shall be used by any MAC that is configured + in this path. The operational value of fddiMACT- + Req is managed by setting this variable. This + variable has the time value range of: + + fddimibPATHTVXLowerBound < fddimibPATHMaxTReq <= + fddimibPATHTMaxLowerBound. + + The default value of fddimibPATHMaxTReq is 165000 + nsec (165 msec)." + REFERENCE + "ANSI { fddiPATH 23 }" + ::= { fddimibPATHEntry 5 } + +-- the PATH Configuration table + +fddimibPATHConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibPATHConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table of Path configuration entries. This + table lists all the resources that may be in this + Path." + REFERENCE + "ANSI { fddiPATH 18 }" + ::= { fddimibPATH 3 } + +fddimibPATHConfigEntry OBJECT-TYPE + SYNTAX FddimibPATHConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of objects containing information + for a given PATH Configuration entry." + INDEX { fddimibPATHConfigSMTIndex, + fddimibPATHConfigPATHIndex, + fddimibPATHConfigTokenOrder } + ::= { fddimibPATHConfigTable 1 } + +FddimibPATHConfigEntry ::= + SEQUENCE { + fddimibPATHConfigSMTIndex + INTEGER, + fddimibPATHConfigPATHIndex + INTEGER, + fddimibPATHConfigTokenOrder + INTEGER, + fddimibPATHConfigResourceType + INTEGER, + fddimibPATHConfigResourceIndex + INTEGER, + fddimibPATHConfigCurrentPath + INTEGER + } + +fddimibPATHConfigSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + configuration entry." + ::= { fddimibPATHConfigEntry 1 } + +fddimibPATHConfigPATHIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the PATH resource index associated + with this configuration entry." + ::= { fddimibPATHConfigEntry 2 } + +fddimibPATHConfigTokenOrder OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An object associated with Token order for this + entry. Thus if the token passes resources a, b, c + and d, in that order, then the value of this + object for these resources would be 1, 2, 3 and 4 + respectively." + ::= { fddimibPATHConfigEntry 3 } + +fddimibPATHConfigResourceType OBJECT-TYPE + SYNTAX INTEGER { mac(2), port(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of resource associated with this + configuration entry." + ::= { fddimibPATHConfigEntry 4 } + +fddimibPATHConfigResourceIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT resource index used to refer + to the instance of this MAC or Port resource." + ::= { fddimibPATHConfigEntry 5 } + +fddimibPATHConfigCurrentPath OBJECT-TYPE + SYNTAX INTEGER { + isolated(1), local(2), secondary(3), primary(4), + concatenated(5), thru(6) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current insertion status for this resource on + this Path." + ::= { fddimibPATHConfigEntry 6 } + + +-- the PORT group +-- Implementation of the PORT group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +fddimibPORTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of PORT implementations (across + all SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { fddimibPORT 1 } + + +-- the PORT table + +fddimibPORTTable OBJECT-TYPE + SYNTAX SEQUENCE OF FddimibPORTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of PORT entries. The number of entries + shall not exceed the value of fddimibPORTNumber." + ::= { fddimibPORT 2 } + +fddimibPORTEntry OBJECT-TYPE + SYNTAX FddimibPORTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A PORT entry containing information common to a + given PORT." + INDEX { fddimibPORTSMTIndex, fddimibPORTIndex } + ::= { fddimibPORTTable 1 } + +FddimibPORTEntry ::= + SEQUENCE { + fddimibPORTSMTIndex + INTEGER, + fddimibPORTIndex + INTEGER, + fddimibPORTMyType + INTEGER, + fddimibPORTNeighborType + INTEGER, + fddimibPORTConnectionPolicies + INTEGER, + fddimibPORTMACIndicated + INTEGER, + fddimibPORTCurrentPath + INTEGER, + fddimibPORTRequestedPaths + OCTET STRING, + fddimibPORTMACPlacement + FddiResourceId, + fddimibPORTAvailablePaths + INTEGER, + fddimibPORTPMDClass + INTEGER, + fddimibPORTConnectionCapabilities + INTEGER, + fddimibPORTBSFlag + INTEGER, + fddimibPORTLCTFailCts + Counter, + fddimibPORTLerEstimate + INTEGER, + fddimibPORTLemRejectCts + Counter, + fddimibPORTLemCts + Counter, + fddimibPORTLerCutoff + INTEGER, + fddimibPORTLerAlarm + INTEGER, + fddimibPORTConnectState + INTEGER, + fddimibPORTPCMState + INTEGER, + fddimibPORTPCWithhold + INTEGER, + fddimibPORTLerFlag + INTEGER, + fddimibPORTHardwarePresent + INTEGER, + fddimibPORTAction + INTEGER + } + +fddimibPORTSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + PORT." + ::= { fddimibPORTEntry 1 } + +fddimibPORTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each PORT within a given SMT, + which is the same as the corresponding resource + index in SMT. The value for each PORT must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + REFERENCE + "ANSI { fddiPORT 29 }" + ::= { fddimibPORTEntry 2 } + +fddimibPORTMyType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), none(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the PORT's PC_Type (refer to ANSI + 9.4.1, and 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 12 }" + ::= { fddimibPORTEntry 3 } + +fddimibPORTNeighborType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), none(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of the remote PORT as determined in PCM. + This variable has an initial value of none, and is + only modified in PC_RCode(3)_Actions (refer to + ANSI SMT 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 13 }" + ::= { fddimibPORTEntry 4 } + +fddimibPORTConnectionPolicies OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value representing the PORT's connection + policies desired in the node. The value of pc- + mac-lct is a term used in the PC_MAC_LCT Flag (see + 9.4.3.2). The value of pc-mac-loop is a term used + in the PC_MAC_Loop Flag. + + The value is a sum. This value initially takes + the value zero, then for each PORT policy, 2 + raised to a power is added to the sum. The powers + are according to the following table: + + Policy Power + pc-mac-lct 0 + pc-mac-loop 1 " + REFERENCE + "ANSI { fddiPORT 14 }" + ::= { fddimibPORTEntry 5 } + +fddimibPORTMACIndicated OBJECT-TYPE + SYNTAX INTEGER { + tVal9FalseRVal9False(1), + tVal9FalseRVal9True(2), + tVal9TrueRVal9False(3), + tVal9TrueRVal9True(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The indications (T_Val(9), R_Val(9)) in PC- + Signalling, of the intent to place a MAC in the + output token path to a PORT (refer to ANSI SMT + 9.6.3.2.)." + REFERENCE + "ANSI { fddiPORT 15 }" + ::= { fddimibPORTEntry 6 } + +fddimibPORTCurrentPath OBJECT-TYPE + SYNTAX INTEGER { + ce0(1), -- isolated + ce1(2), -- local + ce2(3), -- secondary + ce3(4), -- primary + ce4(5), -- concatenated + ce5(6) -- thru + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the Path(s) into which this PORT is + currently inserted." + REFERENCE + "ANSI { fddiPORT 16 }" + ::= { fddimibPORTEntry 7 } + +fddimibPORTRequestedPaths OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (3)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This variable is a list of permitted Paths where + each list element defines the Port's permitted + Paths. The first octet corresponds to 'none', the + second octet to 'tree', and the third octet to + 'peer'." + REFERENCE + "ANSI { fddiPORT 17 }" + ::= { fddimibPORTEntry 8 } + +fddimibPORTMACPlacement OBJECT-TYPE + SYNTAX FddiResourceId -- INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the MAC, if any, whose transmit path + exits the station via this PORT. The value shall + be zero if there is no MAC associated with the + PORT. Otherwise, the MACIndex of the MAC will be + the value of the variable." + REFERENCE + "ANSI { fddiPORT 18 }" + ::= { fddimibPORTEntry 9 } + +fddimibPORTAvailablePaths OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the Paths which are available to this + Port. In the absence of faults, the A and B Ports + will always have both the Primary and Secondary + Paths available. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this port has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 " + REFERENCE + "ANSI { fddiPORT 19 }" + ::= { fddimibPORTEntry 10 } + +fddimibPORTPMDClass OBJECT-TYPE + SYNTAX INTEGER { + multimode(1), + single-mode1(2), + single-mode2(3), + sonet(4), + low-cost-fiber(5), + twisted-pair(6), + unknown(7), + unspecified(8) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable indicates the type of PMD entity + associated with this port." + REFERENCE + "ANSI { fddiPORT 22 }" + ::= { fddimibPORTEntry 11 } + +fddimibPORTConnectionCapabilities OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the connection + capabilities of the port. The pc-mac-lct bit + indicates that the station has the capability of + setting the PC_MAC_LCT Flag. The pc-mac-loop bit + indicates that the station has the capability of + setting the PC_MAC_Loop Flag (refer to ANSI + 9.4.3.2). + + The value is a sum. This value initially takes + the value zero, then for each capability that this + port has, 2 raised to a power is added to the sum. + The powers are according to the following table: + + capability Power + pc-mac-lct 0 + pc-mac-loop 1 " + REFERENCE + "ANSI { fddiPORT 23 }" + ::= { fddimibPORTEntry 12 } + +fddimibPORTBSFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable assumes the value of the BS_Flag + (refer to ANSI SMT 9.4.3.3)." + REFERENCE + "ANSI { fddiPORT 33 }" + ::= { fddimibPORTEntry 13 } + +fddimibPORTLCTFailCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of the consecutive times the link + confidence test (LCT) has failed during connection + management (refer to ANSI 9.4.1)." + REFERENCE + "ANSI { fddiPORT 42 }" + ::= { fddimibPORTEntry 14 } + +fddimibPORTLerEstimate OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A long term average link error rate. It ranges + from 10**-4 to 10**-15 and is reported as the + absolute value of the base 10 logarithm (refer to + ANSI SMT 9.4.7.5.)." + REFERENCE + "ANSI { fddiPORT 51 }" + ::= { fddimibPORTEntry 15 } + +fddimibPORTLemRejectCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A link error monitoring count of the times that a + link has been rejected." + REFERENCE + "ANSI { fddiPORT 52 }" + ::= { fddimibPORTEntry 16 } + +fddimibPORTLemCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The aggregate link error monitor error count, set + to zero only on station initialization." + REFERENCE + "ANSI { fddiPORT 53 }" + ::= { fddimibPORTEntry 17 } + +fddimibPORTLerCutoff OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The link error rate estimate at which a link + connection will be broken. It ranges from 10**-4 + to 10**-15 and is reported as the absolute value + of the base 10 logarithm (default of 7)." + REFERENCE + "ANSI { fddiPORT 58 }" + ::= { fddimibPORTEntry 18 } + +fddimibPORTLerAlarm OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The link error rate estimate at which a link + connection will generate an alarm. It ranges from + 10**-4 to 10**-15 and is reported as the absolute + value of the base 10 logarithm of the estimate + (default of 8)." + REFERENCE + "ANSI { fddiPORT 59 }" + ::= { fddimibPORTEntry 19 } + +fddimibPORTConnectState OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + connecting(2), + standby(3), + active(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An indication of the connect state of this PORT + and is equal to the value of Connect_State (refer + to ANSI 9.4.1)" + REFERENCE + "ANSI { fddiPORT 61 }" + ::= { fddimibPORTEntry 20 } + +fddimibPORTPCMState OBJECT-TYPE + SYNTAX INTEGER { + pc0(1), -- Off + pc1(2), -- Break + pc2(3), -- Trace + pc3(4), -- Connect + pc4(5), -- Next + pc5(6), -- Signal + pc6(7), -- Join + pc7(8), -- Verify + pc8(9), -- Active + pc9(10) -- Maint + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The state of this Port's PCM state machine refer + to ANSI SMT 9.6.2)." + REFERENCE + "ANSI { fddiPORT 62 }" + ::= { fddimibPORTEntry 21 } + +fddimibPORTPCWithhold OBJECT-TYPE + SYNTAX INTEGER { + none(1), + m-m(2), + otherincompatible(3), + pathnotavailable(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of PC_Withhold (refer to ANSI SMT + 9.4.1)." + REFERENCE + "ANSI { fddiPORT 63 }" + ::= { fddimibPORTEntry 22 } + +fddimibPORTLerFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The condition becomes active when the value of + fddiPORTLerEstimate is less than or equal to + fddiPORTLerAlarm. This will be reported with the + Status Report Frames (SRF) (refer to ANSI SMT + 7.2.7 and 8.3)." + REFERENCE + "ANSI { fddiPORT 64 }" + ::= { fddimibPORTEntry 23 } + +fddimibPORTHardwarePresent OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable indicates the presence of + underlying hardware support for this Port object. + If the value of this object is false(2), the + reporting of the objects in this entry may be + handled in an implementation-specific manner." + REFERENCE + "ANSI { fddiPORT 65 }" + ::= { fddimibPORTEntry 24 } + +fddimibPORTAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + maintPORT(2), + enablePORT(3), + disablePORT(4), + startPORT(5), + stopPORT(6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Causes a Control signal to be generated with a + control_action of 'Signal' and the 'variable' + parameter set with the appropriate value (i.e., + PC_Maint, PC_Enable, PC_Disable, PC_Start, or + PC_Stop) (refer to ANSI 9.4.2)." + REFERENCE + "ANSI { fddiPORT 70 }" + ::= { fddimibPORTEntry 25 } + + +END diff --git a/mibs/ietf/FIBRE-CHANNEL-FE-MIB b/mibs/ietf/FIBRE-CHANNEL-FE-MIB new file mode 100644 index 0000000..2f46101 --- /dev/null +++ b/mibs/ietf/FIBRE-CHANNEL-FE-MIB @@ -0,0 +1,1794 @@ +FIBRE-CHANNEL-FE-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, Counter32, Gauge32, Integer32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, TimeStamp + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- rfc2571 + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + fcFeMIB MODULE-IDENTITY + LAST-UPDATED "200005180000Z" + ORGANIZATION "IETF IPFC Working Group" + CONTACT-INFO "Kha Sin Teow + Brocade Communications Systems, + 1901 Guadalupe Parkway, + San Jose, CA 95131 + U.S.A + Tel: +1 408 487 8180 + Fax: +1 408 487 8190 + Email: khasin@Brocade.COM + + WG Mailing list:ipfc@standards.gadzoox.com + To Subscribe: ipfc-request@standards.gadzoox.com + In Body: subscribe" + + DESCRIPTION "The MIB module for Fibre Channel Fabric Element." + REVISION "200005180000Z" + DESCRIPTION "Initial revision, published as RFC 2837." + ::= { mib-2 75 } + + fcFeMIBObjects OBJECT IDENTIFIER ::= { fcFeMIB 1 } + + -- Note: + -- fcFeMIBConformance OBJECT IDENTIFIER ::= { fcFeMIB 2 } + -- see at the end of the module + + -- Groups under fcFeMIBObjects + fcFeConfig OBJECT IDENTIFIER ::= { fcFeMIBObjects 1 } + fcFeStatus OBJECT IDENTIFIER ::= { fcFeMIBObjects 2 } + fcFeError OBJECT IDENTIFIER ::= { fcFeMIBObjects 3 } + fcFeAccounting OBJECT IDENTIFIER ::= { fcFeMIBObjects 4 } + fcFeCapabilities OBJECT IDENTIFIER ::= { fcFeMIBObjects 5 } + + -- Textual Conventions + MilliSeconds ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents time unit value in milliseconds." + SYNTAX Unsigned32 + + MicroSeconds ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents time unit value in microseconds." + SYNTAX Unsigned32 + + FcNameId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the Worldwide Name associated with + a Fibre Channel (FC) entity." + SYNTAX OCTET STRING (SIZE (8)) + + FcAddressId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents Fibre Channel Address ID, a 24-bit + value unique within the address space of a Fabric." + SYNTAX OCTET STRING (SIZE (3)) + + FcRxDataFieldSize ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the receive data field size of an + NxPort or FxPort." + SYNTAX Integer32 (128..2112) + + FcBbCredit ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the buffer-to-buffer credit of an + NxPort or FxPort." + SYNTAX Integer32 (0..32767) + + FcphVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the version of FC-PH supported by an + NxPort or FxPort." + SYNTAX Integer32 (0..255) + + FcStackedConnMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents an enumerated value used to indicate + the Class 1 Stacked Connect Mode supported by + an NxPort or FxPort." + SYNTAX INTEGER { + none(1), + transparent(2), + lockedDown(3) + } + + FcCosCap ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the class of service capability of an + NxPort or FxPort." + SYNTAX BITS { classF(0), class1(1), class2(2), class3(3), + class4(4), class5(5), class6(6) } + + FcFeModuleCapacity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the maximum number of modules within + a Fabric Element." + SYNTAX Unsigned32 + + FcFeFxPortCapacity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the maximum number of FxPorts within + a module." + SYNTAX Unsigned32 + + FcFeModuleIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the module index within a conceptual table." + SYNTAX Unsigned32 + + FcFeFxPortIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the FxPort index within a conceptual table." + SYNTAX Unsigned32 + + FcFeNxPortIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the NxPort index within a conceptual table." + SYNTAX Integer32 (1..126) + + FcBbCreditModel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "Represents the BB_Credit model of an FxPort." + SYNTAX INTEGER { regular(1), alternate (2) } + + -- The Configuration group + + -- This group consists of scalar objects and tables. + -- It contains the configuration and service parameters + -- of the Fabric Element and the FxPorts. + -- The group represents a set of parameters associated with + -- the Fabric Element or an FxPort to support its NxPorts. + + fcFeFabricName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Name_Identifier of the Fabric to which this Fabric + Element belongs." + ::= { fcFeConfig 1 } + + fcFeElementName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Name_Identifier of the Fabric Element." + ::= { fcFeConfig 2 } + + fcFeModuleCapacity OBJECT-TYPE + SYNTAX FcFeModuleCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of modules in the Fabric Element, + regardless of their current state." + ::= { fcFeConfig 3 } + + -- The Module Table. + -- This table contains one entry for each module, + -- information of the modules. + + fcFeModuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFeModuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each module in the + Fabric Element, information of the modules." + ::= { fcFeConfig 4 } + + fcFeModuleEntry OBJECT-TYPE + SYNTAX FcFeModuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing the configuration parameters of a + module." + INDEX { fcFeModuleIndex } + ::= { fcFeModuleTable 1 } + + + FcFeModuleEntry ::= + SEQUENCE { + fcFeModuleIndex + FcFeModuleIndex, + fcFeModuleDescr + SnmpAdminString, + fcFeModuleObjectID + OBJECT IDENTIFIER, + fcFeModuleOperStatus + INTEGER, + fcFeModuleLastChange + TimeStamp, + fcFeModuleFxPortCapacity + FcFeFxPortCapacity, + fcFeModuleName + FcNameId + } + + fcFeModuleIndex OBJECT-TYPE + SYNTAX FcFeModuleIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the module within the Fabric Element + for which this entry contains information. This value is + never greater than fcFeModuleCapacity." + ::= { fcFeModuleEntry 1 } + + fcFeModuleDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the module. This value should + include the full name and version identification of the + module." + ::= { fcFeModuleEntry 2 } + + fcFeModuleObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the module. + This value may be allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides a straight-forward and + unambiguous means for determining what kind of module is + being managed. + + For example, this object could take the value + 1.3.6.1.4.1.99649.3.9 if vendor 'Neufe Inc.' was assigned + the subtree 1.3.6.1.4.1.99649, and had assigned the + identifier 1.3.6.1.4.1.99649.3.9 to its 'FeFiFo-16 + PlugInCard.'" + ::= { fcFeModuleEntry 3 } + + fcFeModuleOperStatus OBJECT-TYPE + SYNTAX INTEGER { + online (1), -- functional + offline (2), -- not available + testing (3), -- under testing + faulty (4) -- defective + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the operational status of the module: + online(1) the module is functioning properly; + offline(2) the module is not available; + testing(3) the module is under testing; and + faulty(4) the module is defective in some way." + ::= { fcFeModuleEntry 4 } + + fcFeModuleLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of sysUpTime when the module + entered its current operational status. A value of zero + indicates that the operational status of the module has not + changed since the agent last restarted." + ::= { fcFeModuleEntry 5 } + + fcFeModuleFxPortCapacity OBJECT-TYPE + SYNTAX FcFeFxPortCapacity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FxPort that can be contained within the + module. Within each module, the ports are uniquely numbered + in the range from 1 to fcFeModuleFxPortCapacity inclusive. + However, the numbers are not required to be contiguous." + ::= { fcFeModuleEntry 6 } + + fcFeModuleName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Name_Identifier of the module." + ::= { fcFeModuleEntry 7 } + + -- the FxPort Configuration Table. + -- This table contains, one entry for each FxPort, + -- configuration parameters of the ports. + + fcFxPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, configuration and service parameters of the + FxPorts." + ::= { fcFeConfig 5 } + + fcFxPortEntry OBJECT-TYPE + SYNTAX FcFxPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing the configuration and service parameters + of a FxPort." + INDEX { fcFeModuleIndex, fcFxPortIndex } + ::= { fcFxPortTable 1 } + + + FcFxPortEntry ::= + SEQUENCE { + fcFxPortIndex + FcFeFxPortIndex, + fcFxPortName + FcNameId, + + -- FxPort common service parameters + fcFxPortFcphVersionHigh + FcphVersion, + fcFxPortFcphVersionLow + FcphVersion, + fcFxPortBbCredit + FcBbCredit, + fcFxPortRxBufSize + FcRxDataFieldSize, + fcFxPortRatov + MilliSeconds, + fcFxPortEdtov + MilliSeconds, + -- FxPort class service parameters + fcFxPortCosSupported + FcCosCap, + fcFxPortIntermixSupported + TruthValue, + fcFxPortStackedConnMode + FcStackedConnMode, + fcFxPortClass2SeqDeliv + TruthValue, + fcFxPortClass3SeqDeliv + TruthValue, + -- other configuration parameters + fcFxPortHoldTime + MicroSeconds + } + + fcFxPortIndex OBJECT-TYPE + SYNTAX FcFeFxPortIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the FxPort within the module. This + number ranges from 1 to the value of fcFeModulePortCapacity + for the associated module. The value remains constant for + the identified FxPort until the module is re-initialized." + ::= { fcFxPortEntry 1 } + + fcFxPortName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The World_wide Name of this FxPort. Each FxPort has a + unique Port World_wide Name within the Fabric." + ::= { fcFxPortEntry 2 } + + -- FxPort common service parameters + + fcFxPortFcphVersionHigh OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest or most recent version of FC-PH that the FxPort + is configured to support." + ::= { fcFxPortEntry 3 } + + fcFxPortFcphVersionLow OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest or earliest version of FC-PH that the FxPort is + configured to support." + ::= { fcFxPortEntry 4 } + + fcFxPortBbCredit OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of receive buffers available for holding + Class 1 connect-request, Class 2 or 3 frames from the + attached NxPort. It is for buffer-to-buffer flow control + in the direction from the attached NxPort (if applicable) + to FxPort." + ::= { fcFxPortEntry 5 } + + fcFxPortRxBufSize OBJECT-TYPE + SYNTAX FcRxDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest Data_Field Size (in octets) for an FT_1 frame + that can be received by the FxPort." + ::= { fcFxPortEntry 6 } + + fcFxPortRatov OBJECT-TYPE + SYNTAX MilliSeconds + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Resource_Allocation_Timeout Value configured for the + FxPort. This is used as the timeout value for determining + when to reuse an NxPort resource such as a + Recovery_Qualifier. It represents E_D_TOV (see next + object) plus twice the maximum time that a frame may be + delayed within the Fabric and still be delivered." + ::= { fcFxPortEntry 7 } + + fcFxPortEdtov OBJECT-TYPE + SYNTAX MilliSeconds + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The E_D_TOV value configured for the FxPort. The + Error_Detect_Timeout Value is used as the timeout value for + detecting an error condition." + ::= { fcFxPortEntry 8 } + + + -- FxPort class service parameters + + fcFxPortCosSupported OBJECT-TYPE + SYNTAX FcCosCap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the set of Classes of Service supported + by the FxPort." + ::= { fcFxPortEntry 9 } + + fcFxPortIntermixSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not the FxPort supports an + Intermixed Dedicated Connection." + ::= { fcFxPortEntry 10 } + + fcFxPortStackedConnMode OBJECT-TYPE + SYNTAX FcStackedConnMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the mode of Stacked Connect supported by + the FxPort." + ::= { fcFxPortEntry 11 } + + fcFxPortClass2SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not Class 2 Sequential + Delivery is supported by the FxPort." + ::= { fcFxPortEntry 12 } + + fcFxPortClass3SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not Class 3 Sequential + Delivery is supported by the FxPort." + ::= { fcFxPortEntry 13 } + + + -- other FxPort parameters + + fcFxPortHoldTime OBJECT-TYPE + SYNTAX MicroSeconds + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum time (in microseconds) that the FxPort shall + hold a frame before discarding the frame if it is unable to + deliver the frame. The value 0 means that the FxPort does + not support this parameter." + ::= { fcFxPortEntry 14 } + + + -- the Status group + + -- This group consists of tables that contains operational + -- status and established service parameters for the Fabric + -- Element and the attached NxPorts. + + -- The FxPort Status table + -- This table contains, one entry for each FxPort, + -- the operational status and parameters of the FxPorts. + + fcFxPortStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, operational status and parameters of the + FxPorts." + ::= { fcFeStatus 1 } + + fcFxPortStatusEntry OBJECT-TYPE + SYNTAX FcFxPortStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing operational status and parameters of a + FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortStatusTable 1 } + + + FcFxPortStatusEntry ::= + SEQUENCE { + fcFxPortID + FcAddressId, + fcFxPortBbCreditAvailable + Gauge32, + fcFxPortOperMode + INTEGER, + fcFxPortAdminMode + INTEGER + } + + fcFxPortID OBJECT-TYPE + SYNTAX FcAddressId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address identifier by which this FxPort is identified + within the Fabric. The FxPort may assign its address + identifier to its attached NxPort(s) during Fabric Login." + ::= { fcFxPortStatusEntry 1 } + + fcFxPortBbCreditAvailable OBJECT-TYPE + SYNTAX Gauge32 + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of buffers currently available for receiving + frames from the attached port in the buffer-to-buffer flow + control. The value should be less than or equal to + fcFxPortBbCredit." + ::= { fcFxPortStatusEntry 2 } + + fcFxPortOperMode OBJECT-TYPE + SYNTAX INTEGER { unknown(1), fPort(2), flPort(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational mode of the FxPort." + ::= { fcFxPortStatusEntry 3 } + + fcFxPortAdminMode OBJECT-TYPE + SYNTAX INTEGER { fPort(2), flPort(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired operational mode of the FxPort." + ::= { fcFxPortStatusEntry 4 } + + + -- the FxPort Physical Level table + -- This table contains, one entry for each FxPort in the + -- Fabric Element, the physical level status and parameters + -- of the FxPorts. + + fcFxPortPhysTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, physical level status and parameters of the + FxPorts." + ::= { fcFeStatus 2 } + + fcFxPortPhysEntry OBJECT-TYPE + SYNTAX FcFxPortPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing physical level status and parameters of + a FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortPhysTable 1 } + + FcFxPortPhysEntry ::= + SEQUENCE { + fcFxPortPhysAdminStatus + INTEGER, + fcFxPortPhysOperStatus + INTEGER, + fcFxPortPhysLastChange + TimeStamp, + fcFxPortPhysRttov + MilliSeconds + } + + fcFxPortPhysAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + online (1), -- place port online + offline (2), -- take port offline + testing (3) -- initiate test procedures + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the FxPort. A management station may + place the FxPort in a desired state by setting this object + accordingly. The testing(3) state indicates that no + operational frames can be passed. When a Fabric Element + initializes, all FxPorts start with fcFxPortPhysAdminStatus + in the offline(2) state. As the result of either explicit + management action or per configuration information + accessible by the Fabric Element, fcFxPortPhysAdminStatus + is then changed to either the online(1) or testing(3) + states, or remains in the offline state." + ::= { fcFxPortPhysEntry 1 } + + fcFxPortPhysOperStatus OBJECT-TYPE + SYNTAX INTEGER { + online (1), -- Login may proceed + offline (2), -- Login cannot proceed + testing (3), -- port is under test + linkFailure (4) -- failure after online/testing + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational status of the FxPort. The + testing(3) indicates that no operational frames can be + passed. If fcFxPortPhysAdminStatus is offline(2) then + fcFxPortPhysOperStatus should be offline(2). If + fcFxPortPhysAdminStatus is changed to online(1) then + fcFxPortPhysOperStatus should change to online(1) if the + FxPort is ready to accept Fabric Login request from the + attached NxPort; it should proceed and remain in the link- + failure(4) state if and only if there is a fault that + prevents it from going to the online(1) state." + ::= { fcFxPortPhysEntry 2 } + + fcFxPortPhysLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the FxPort entered its + current operational status. A value of zero indicates that + the FxPort's operational status has not changed since the + agent last restarted." + ::= { fcFxPortPhysEntry 3 } + + fcFxPortPhysRttov OBJECT-TYPE + SYNTAX MilliSeconds + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Receiver_Transmitter_Timeout value of the FxPort. This + is used by the receiver logic to detect Loss of + Synchronization." + ::= { fcFxPortPhysEntry 4 } + + -- The FxPort Fabric Login table + -- + -- This table contains, one entry for each FxPort in the + -- Fabric Element, the Service Parameters that have been + -- established from the most recent Fabric Login, + -- implicit or explicit. + + fcFxLoginTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxLoginEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each NxPort attached + to a particular FxPort in the Fabric Element, services + parameters established from the most recent Fabric Login, + explicit or implicit. Note that an FxPort may have one or + more NxPort attached to it." + ::= { fcFeStatus 3 } + + fcFxLoginEntry OBJECT-TYPE + SYNTAX FcFxLoginEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing service parameters established from a + successful Fabric Login." + INDEX { fcFeModuleIndex, fcFxPortIndex, fcFxPortNxLoginIndex } + ::= { fcFxLoginTable 1 } + + FcFxLoginEntry ::= + SEQUENCE { + fcFxPortNxLoginIndex + FcFeNxPortIndex, + fcFxPortFcphVersionAgreed + FcphVersion, + fcFxPortNxPortBbCredit + FcBbCredit, + fcFxPortNxPortRxDataFieldSize + FcRxDataFieldSize, + fcFxPortCosSuppAgreed + FcCosCap, + fcFxPortIntermixSuppAgreed + TruthValue, + fcFxPortStackedConnModeAgreed + FcStackedConnMode, + fcFxPortClass2SeqDelivAgreed + TruthValue, + fcFxPortClass3SeqDelivAgreed + TruthValue, + -- + fcFxPortNxPortName + FcNameId, + fcFxPortConnectedNxPort + FcAddressId, + fcFxPortBbCreditModel + FcBbCreditModel + } + + fcFxPortNxLoginIndex OBJECT-TYPE + SYNTAX FcFeNxPortIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The object identifies the associated NxPort in the + attachment for which the entry contains information." + ::= { fcFxLoginEntry 1 } + + fcFxPortFcphVersionAgreed OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of FC-PH that the FxPort has agreed to support + from the Fabric Login" + ::= { fcFxLoginEntry 2 } + + fcFxPortNxPortBbCredit OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of buffers available for holding Class 1 + connect-request, Class 2 or Class 3 frames to be + transmitted to the attached NxPort. It is for buffer-to- + buffer flow control in the direction from FxPort to NxPort. + The buffer-to-buffer flow control mechanism is indicated in + the respective fcFxPortBbCreditModel." + ::= { fcFxLoginEntry 3 } + + fcFxPortNxPortRxDataFieldSize OBJECT-TYPE + SYNTAX FcRxDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Receive Data Field Size of the attached NxPort. This + object specifies the largest Data Field Size for an FT_1 + frame that can be received by the NxPort." + ::= { fcFxLoginEntry 4 } + + fcFxPortCosSuppAgreed OBJECT-TYPE + SYNTAX FcCosCap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A variable indicating that the attached NxPort has + requested the FxPort for the support of classes of services + and the FxPort has granted the request." + ::= { fcFxLoginEntry 5 } + + fcFxPortIntermixSuppAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A variable indicating that the attached NxPort has + requested the FxPort for the support of Intermix and the + FxPort has granted the request. This flag is only valid if + Class 1 service is supported." + ::= { fcFxLoginEntry 6 } + + fcFxPortStackedConnModeAgreed OBJECT-TYPE + SYNTAX FcStackedConnMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A variable indicating whether the FxPort has agreed to + support stacked connect from the Fabric Login. This is only + meaningful if Class 1 service has been agreed." + ::= { fcFxLoginEntry 7 } + + fcFxPortClass2SeqDelivAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A variable indicating whether the FxPort has agreed to + support Class 2 sequential delivery from the Fabric Login. + This is only meaningful if Class 2 service has been + agreed." + ::= { fcFxLoginEntry 8 } + + fcFxPortClass3SeqDelivAgreed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether the FxPort has agreed to support + Class 3 sequential delivery from the Fabric Login. This is + only meaningful if Class 3 service has been agreed." + ::= { fcFxLoginEntry 9 } + + fcFxPortNxPortName OBJECT-TYPE + SYNTAX FcNameId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port name of the attached NxPort." + ::= { fcFxLoginEntry 10 } + + fcFxPortConnectedNxPort OBJECT-TYPE + SYNTAX FcAddressId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address identifier of the destination NxPort with which + this FxPort is currently engaged in a either a Class 1 or + loop connection. If this FxPort is not engaged in a + connection, then the value of this object is '000000'H." + ::= { fcFxLoginEntry 11 } + + fcFxPortBbCreditModel OBJECT-TYPE + SYNTAX FcBbCreditModel + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the BB_Credit model used by the + FxPort." + ::= { fcFxLoginEntry 12 } + + + -- the Error group + -- This group consists of tables that contain information about + -- the various types of errors detected. The management station + -- may use the information in this group to determine the + -- quality of the link between the FxPort and its attached NxPort. + + -- the FxPort Error table + -- This table contains, one entry for each FxPort in the Fabric + -- Element, counters recording numbers of errors detected + -- since the management agent re-initialized. + -- The first 6 columnar objects after the port index corresponds + -- to the counters in the Link Error Status Block. + + fcFxPortErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort, counters + that record the numbers of errors detected." + ::= { fcFeError 1 } + + fcFxPortErrorEntry OBJECT-TYPE + SYNTAX FcFxPortErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing error counters of a FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortErrorTable 1 } + + + FcFxPortErrorEntry ::= + SEQUENCE { + fcFxPortLinkFailures + Counter32, + fcFxPortSyncLosses + Counter32, + fcFxPortSigLosses + Counter32, + fcFxPortPrimSeqProtoErrors + Counter32, + fcFxPortInvalidTxWords + Counter32, + fcFxPortInvalidCrcs + Counter32, + fcFxPortDelimiterErrors + Counter32, + fcFxPortAddressIdErrors + Counter32, + fcFxPortLinkResetIns + Counter32, + fcFxPortLinkResetOuts + Counter32, + fcFxPortOlsIns + Counter32, + fcFxPortOlsOuts + Counter32 + } + + fcFxPortLinkFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of link failures detected by this FxPort." + ::= { fcFxPortErrorEntry 1 } + + fcFxPortSyncLosses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of loss of synchronization detected by the + FxPort." + ::= { fcFxPortErrorEntry 2 } + + fcFxPortSigLosses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of loss of signal detected by the FxPort." + ::= { fcFxPortErrorEntry 3 } + + fcFxPortPrimSeqProtoErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of primitive sequence protocol errors detected + by the FxPort." + ::= { fcFxPortErrorEntry 4 } + + fcFxPortInvalidTxWords OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid transmission word detected by the + FxPort." + ::= { fcFxPortErrorEntry 5 } + + fcFxPortInvalidCrcs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid CRC detected by this FxPort." + ::= { fcFxPortErrorEntry 6 } + + fcFxPortDelimiterErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Delimiter Errors detected by this FxPort." + ::= { fcFxPortErrorEntry 7 } + + fcFxPortAddressIdErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of address identifier errors detected by this + FxPort." + ::= { fcFxPortErrorEntry 8 } + + fcFxPortLinkResetIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Link Reset Protocol received by this FxPort + from the attached NxPort." + ::= { fcFxPortErrorEntry 9 } + + fcFxPortLinkResetOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Link Reset Protocol issued by this FxPort to + the attached NxPort." + ::= { fcFxPortErrorEntry 10 } + + fcFxPortOlsIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Offline Sequence received by this FxPort." + ::= { fcFxPortErrorEntry 11 } + + fcFxPortOlsOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Offline Sequence issued by this FxPort." + ::= { fcFxPortErrorEntry 12 } + + + + -- Accounting Groups: + -- (1) Class 1 Accounting Group, + -- (2) Class 2 Accounting Group, and + -- (3) Class 3 Accounting Group. + -- Each group consists of a table that contains accounting + -- information for the FxPorts in the Fabric Element. + + -- the Class 1 Accounting table + -- This table contains, one entry for each FxPort in the Fabric + + -- Element, Counter32s for certain types of events occurred in the + -- the FxPorts since the the management agent has re-initialized. + + fcFxPortC1AccountingTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortC1AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, Class 1 accounting information recorded + since the management agent has re-initialized." + ::= { fcFeAccounting 1 } + + fcFxPortC1AccountingEntry OBJECT-TYPE + SYNTAX FcFxPortC1AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing Class 1 accounting information for each + FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortC1AccountingTable 1 } + + + FcFxPortC1AccountingEntry ::= + SEQUENCE { + fcFxPortC1InFrames + Counter32, + fcFxPortC1OutFrames + Counter32, + fcFxPortC1InOctets + Counter32, + fcFxPortC1OutOctets + Counter32, + fcFxPortC1Discards + Counter32, + fcFxPortC1FbsyFrames + Counter32, + fcFxPortC1FrjtFrames + Counter32, + fcFxPortC1InConnections + Counter32, + fcFxPortC1OutConnections + Counter32, + fcFxPortC1ConnTime + MilliSeconds + } + + fcFxPortC1InFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frames (other than Class 1 connect- + request) received by this FxPort from its attached NxPort." + ::= { fcFxPortC1AccountingEntry 1 } + + fcFxPortC1OutFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frames (other than Class 1 connect- + request) delivered through this FxPort to its attached + NxPort." + ::= { fcFxPortC1AccountingEntry 2 } + + fcFxPortC1InOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frame octets, including the frame + delimiters, received by this FxPort from its attached + NxPort." + ::= { fcFxPortC1AccountingEntry 3 } + + fcFxPortC1OutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frame octets, including the frame + delimiters, delivered through this FxPort its attached + NxPort." + ::= { fcFxPortC1AccountingEntry 4 } + + fcFxPortC1Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 frames discarded by this FxPort." + ::= { fcFxPortC1AccountingEntry 5 } + + fcFxPortC1FbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of F_BSY frames generated by this FxPort against + Class 1 connect-request." + ::= { fcFxPortC1AccountingEntry 6 } + + fcFxPortC1FrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of F_RJT frames generated by this FxPort against + Class 1 connect-request." + ::= { fcFxPortC1AccountingEntry 7 } + + fcFxPortC1InConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 connections successfully established + in which the attached NxPort is the source of the connect- + request." + ::= { fcFxPortC1AccountingEntry 8 } + + fcFxPortC1OutConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 1 connections successfully established + in which the attached NxPort is the destination of the + connect-request." + ::= { fcFxPortC1AccountingEntry 9 } + + fcFxPortC1ConnTime OBJECT-TYPE + SYNTAX MilliSeconds + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative time that this FxPort has been engaged in + Class 1 connection. The amount of time is counted from + after a connect-request has been accepted until the + connection is disengaged, either by an EOFdt or Link + Reset." + ::= { fcFxPortC1AccountingEntry 10 } + + + -- the Class 2 Accounting table + -- This table contains, one entry for each FxPort in the Fabric + -- Element, Counter32s for certain types of events occurred in the + -- the FxPorts since the the management agent has re-initialized. + + + fcFxPortC2AccountingTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortC2AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, Class 2 accounting information recorded + since the management agent has re-initialized." + ::= { fcFeAccounting 2 } + + fcFxPortC2AccountingEntry OBJECT-TYPE + SYNTAX FcFxPortC2AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing Class 2 accounting information for each + FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortC2AccountingTable 1 } + + FcFxPortC2AccountingEntry ::= + SEQUENCE { + fcFxPortC2InFrames + Counter32, + fcFxPortC2OutFrames + Counter32, + fcFxPortC2InOctets + Counter32, + fcFxPortC2OutOctets + Counter32, + fcFxPortC2Discards + Counter32, + fcFxPortC2FbsyFrames + Counter32, + fcFxPortC2FrjtFrames + Counter32 + } + + fcFxPortC2InFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames received by this FxPort from + its attached NxPort." + ::= { fcFxPortC2AccountingEntry 1 } + + fcFxPortC2OutFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames delivered through this FxPort + to its attached NxPort." + ::= { fcFxPortC2AccountingEntry 2 } + + fcFxPortC2InOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frame octets, including the frame + delimiters, received by this FxPort from its attached + NxPort." + ::= { fcFxPortC2AccountingEntry 3 } + + fcFxPortC2OutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frame octets, including the frame + delimiters, delivered through this FxPort to its attached + NxPort." + ::= { fcFxPortC2AccountingEntry 4 } + + fcFxPortC2Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 2 frames discarded by this FxPort." + ::= { fcFxPortC2AccountingEntry 5 } + + fcFxPortC2FbsyFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of F_BSY frames generated by this FxPort against + Class 2 frames." + ::= { fcFxPortC2AccountingEntry 6 } + + fcFxPortC2FrjtFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of F_RJT frames generated by this FxPort against + Class 2 frames." + ::= { fcFxPortC2AccountingEntry 7 } + + -- the Class 3 Accounting Group + -- This table contains, one entry for each FxPort in the Fabric + -- Element, Counter32s for certain types of events occurred in the + -- the FxPorts since the management agent has re-initialized. + + fcFxPortC3AccountingTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortC3AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort in the + Fabric Element, Class 3 accounting information recorded + since the management agent has re-initialized." + ::= { fcFeAccounting 3 } + + fcFxPortC3AccountingEntry OBJECT-TYPE + SYNTAX FcFxPortC3AccountingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing Class 3 accounting information for each + FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortC3AccountingTable 1 } + + + FcFxPortC3AccountingEntry ::= + SEQUENCE { + fcFxPortC3InFrames + Counter32, + fcFxPortC3OutFrames + Counter32, + fcFxPortC3InOctets + Counter32, + fcFxPortC3OutOctets + Counter32, + fcFxPortC3Discards + Counter32 + } + + fcFxPortC3InFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames received by this FxPort from + its attached NxPort." + ::= { fcFxPortC3AccountingEntry 1 } + + fcFxPortC3OutFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames delivered through this FxPort + to its attached NxPort." + ::= { fcFxPortC3AccountingEntry 2 } + + fcFxPortC3InOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frame octets, including the frame + delimiters, received by this FxPort from its attached + NxPort." + ::= { fcFxPortC3AccountingEntry 3 } + + fcFxPortC3OutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frame octets, including the frame + delimiters, delivered through this FxPort to its attached + NxPort." + ::= { fcFxPortC3AccountingEntry 4 } + + fcFxPortC3Discards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Class 3 frames discarded by this FxPort." + ::= { fcFxPortC3AccountingEntry 5 } + + + -- The Capability Group - consists of a table describing + -- information about what each FxPort is inherently capable + -- of operating or supporting. + -- A capability may be used, as expressed in its respective + -- object value in the Configuration group. + + fcFxPortCapTable OBJECT-TYPE + SYNTAX SEQUENCE OF FcFxPortCapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains, one entry for each FxPort, the + capabilities of the port within the Fabric Element." + ::= { fcFeCapabilities 1 } + + fcFxPortCapEntry OBJECT-TYPE + SYNTAX FcFxPortCapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing the Cap of a FxPort." + AUGMENTS { fcFxPortEntry } + ::= { fcFxPortCapTable 1 } + + + FcFxPortCapEntry ::= + SEQUENCE { + fcFxPortCapFcphVersionHigh + FcphVersion, + fcFxPortCapFcphVersionLow + FcphVersion, + fcFxPortCapBbCreditMax + FcBbCredit, + fcFxPortCapBbCreditMin + FcBbCredit, + fcFxPortCapRxDataFieldSizeMax + FcRxDataFieldSize, + fcFxPortCapRxDataFieldSizeMin + FcRxDataFieldSize, + fcFxPortCapCos + FcCosCap, + fcFxPortCapIntermix + TruthValue, + fcFxPortCapStackedConnMode + FcStackedConnMode, + fcFxPortCapClass2SeqDeliv + TruthValue, + fcFxPortCapClass3SeqDeliv + TruthValue, + fcFxPortCapHoldTimeMax + MicroSeconds, + fcFxPortCapHoldTimeMin + MicroSeconds + } + + fcFxPortCapFcphVersionHigh OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest or most recent version of FC-PH that the FxPort + is capable of supporting." + ::= { fcFxPortCapEntry 1 } + + fcFxPortCapFcphVersionLow OBJECT-TYPE + SYNTAX FcphVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest or earliest version of FC-PH that the FxPort is + capable of supporting." + ::= { fcFxPortCapEntry 2 } + + fcFxPortCapBbCreditMax OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of receive buffers available for holding + Class 1 connect-request, Class 2 or Class 3 frames from the + attached NxPort." + ::= { fcFxPortCapEntry 3 } + + fcFxPortCapBbCreditMin OBJECT-TYPE + SYNTAX FcBbCredit + UNITS "buffers" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum number of receive buffers available for holding + Class 1 connect-request, Class 2 or Class 3 frames from the + attached NxPort." + ::= { fcFxPortCapEntry 4 } + + fcFxPortCapRxDataFieldSizeMax OBJECT-TYPE + SYNTAX FcRxDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum size in bytes of the Data Field in a frame that + the FxPort is capable of receiving from its attached + NxPort." + ::= { fcFxPortCapEntry 5 } + + fcFxPortCapRxDataFieldSizeMin OBJECT-TYPE + SYNTAX FcRxDataFieldSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum size in bytes of the Data Field in a frame that + the FxPort is capable of receiving from its attached + NxPort." + ::= { fcFxPortCapEntry 6 } + + fcFxPortCapCos OBJECT-TYPE + SYNTAX FcCosCap + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the set of Classes of Service that the + FxPort is capable of supporting." + ::= { fcFxPortCapEntry 7 } + + fcFxPortCapIntermix OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not the FxPort is capable of + supporting the intermixing of Class 2 and Class 3 frames + during a Class 1 connection. This flag is only valid if the + port is capable of supporting Class 1 service." + ::= { fcFxPortCapEntry 8 } + + fcFxPortCapStackedConnMode OBJECT-TYPE + SYNTAX FcStackedConnMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the mode of Stacked Connect request that + the FxPort is capable of supporting." + ::= { fcFxPortCapEntry 9 } + + fcFxPortCapClass2SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not the FxPort is capable of + supporting Class 2 Sequential Delivery." + ::= { fcFxPortCapEntry 10 } + + fcFxPortCapClass3SeqDeliv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether or not the FxPort is capable of + supporting Class 3 Sequential Delivery." + ::= { fcFxPortCapEntry 11 } + + fcFxPortCapHoldTimeMax OBJECT-TYPE + SYNTAX MicroSeconds + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum holding time (in microseconds) that the FxPort + is capable of supporting." + ::= { fcFxPortCapEntry 12 } + + fcFxPortCapHoldTimeMin OBJECT-TYPE + SYNTAX MicroSeconds + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum holding time (in microseconds) that the FxPort + is capable of supporting." + ::= { fcFxPortCapEntry 13 } + + -- conformance information + fcFeMIBConformance OBJECT IDENTIFIER ::= { fcFeMIB 2 } + fcFeMIBCompliances OBJECT IDENTIFIER ::= { fcFeMIBConformance 1 } + fcFeMIBGroups OBJECT IDENTIFIER ::= { fcFeMIBConformance 2 } + + -- compliance statements + fcFeMIBMinimumCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The minimum compliance statement for SNMP entities + which implement the FIBRE-CHANNEL-FE-MIB." + MODULE -- this module + MANDATORY-GROUPS { fcFeConfigGroup, fcFeStatusGroup, + fcFeErrorGroup } + + OBJECT fcFeFabricName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFeElementName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFeModuleName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortAdminMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortPhysAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortPhysRttov + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortBbCreditModel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { fcFeMIBCompliances 1 } + + fcFeMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The full compliance statement for SNMP entities + which implement the FIBRE-CHANNEL-FE-MIB." + MODULE -- this module + MANDATORY-GROUPS { fcFeConfigGroup, fcFeStatusGroup, + fcFeErrorGroup, fcFeCapabilitiesGroup } + + GROUP fcFeClass1AccountingGroup + DESCRIPTION + "This group is mandatory for all fibre channel fabric + elements which support class 1 frames." + + GROUP fcFeClass2AccountingGroup + DESCRIPTION + "This group is mandatory for all fibre channel fabric + elements which support class 2 frames." + + GROUP fcFeClass3AccountingGroup + DESCRIPTION + "This group is mandatory for all fibre channel fabric + elements which support class 3 frames." + + OBJECT fcFeFabricName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFeElementName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFeModuleName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortAdminMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortPhysAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortPhysRttov + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT fcFxPortBbCreditModel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { fcFeMIBCompliances 2 } + + -- units of conformance + fcFeConfigGroup OBJECT-GROUP + OBJECTS { fcFeFabricName, fcFeElementName, fcFeModuleCapacity, + fcFeModuleDescr, fcFeModuleObjectID, + fcFeModuleOperStatus, fcFeModuleLastChange, + fcFeModuleFxPortCapacity, fcFeModuleName, + fcFxPortName, fcFxPortFcphVersionHigh, + fcFxPortFcphVersionLow, fcFxPortBbCredit, + fcFxPortRxBufSize, fcFxPortRatov, fcFxPortEdtov, + fcFxPortCosSupported, fcFxPortIntermixSupported, + fcFxPortStackedConnMode, fcFxPortClass2SeqDeliv, + fcFxPortClass3SeqDeliv, fcFxPortHoldTime } + STATUS current + DESCRIPTION + "A collection of objects providing the configuration and service + parameters of the Fabric Element, the modules, and FxPorts." + ::= { fcFeMIBGroups 1 } + + fcFeStatusGroup OBJECT-GROUP + OBJECTS { fcFxPortID, fcFxPortBbCreditAvailable, + fcFxPortOperMode, fcFxPortAdminMode, + fcFxPortPhysAdminStatus, fcFxPortPhysOperStatus, + fcFxPortPhysLastChange, fcFxPortPhysRttov, + fcFxPortFcphVersionAgreed, fcFxPortNxPortBbCredit, + fcFxPortNxPortRxDataFieldSize, fcFxPortCosSuppAgreed, + fcFxPortIntermixSuppAgreed, + fcFxPortStackedConnModeAgreed, + fcFxPortClass2SeqDelivAgreed, + fcFxPortClass3SeqDelivAgreed, + fcFxPortNxPortName, fcFxPortConnectedNxPort, + fcFxPortBbCreditModel } + STATUS current + DESCRIPTION + "A collection of objects providing the operational status and + established service parameters for the Fabric Element and the + attached NxPorts." + ::= { fcFeMIBGroups 2 } + + fcFeErrorGroup OBJECT-GROUP + OBJECTS { fcFxPortLinkFailures, fcFxPortSyncLosses, + fcFxPortSigLosses, fcFxPortPrimSeqProtoErrors, + fcFxPortInvalidTxWords, fcFxPortInvalidCrcs, + fcFxPortDelimiterErrors, fcFxPortAddressIdErrors, + fcFxPortLinkResetIns, fcFxPortLinkResetOuts, + fcFxPortOlsIns, fcFxPortOlsOuts } + STATUS current + DESCRIPTION + "A collection of objects providing various error + statistics detected by the FxPorts." + ::= { fcFeMIBGroups 3 } + + fcFeClass1AccountingGroup OBJECT-GROUP + OBJECTS { fcFxPortC1InFrames, fcFxPortC1OutFrames, + fcFxPortC1InOctets, fcFxPortC1OutOctets, + fcFxPortC1Discards, fcFxPortC1FbsyFrames, + fcFxPortC1FrjtFrames, fcFxPortC1InConnections, + fcFxPortC1OutConnections, fcFxPortC1ConnTime + } + STATUS current + DESCRIPTION + "A collection of objects providing various class 1 + performance statistics detected by the FxPorts." + ::= { fcFeMIBGroups 4 } + + fcFeClass2AccountingGroup OBJECT-GROUP + OBJECTS { fcFxPortC2InFrames, fcFxPortC2OutFrames, + fcFxPortC2InOctets, fcFxPortC2OutOctets, + fcFxPortC2Discards, fcFxPortC2FbsyFrames, + fcFxPortC2FrjtFrames + } + STATUS current + DESCRIPTION + "A collection of objects providing various class 2 + performance statistics detected by the FxPorts." + ::= { fcFeMIBGroups 5 } + + fcFeClass3AccountingGroup OBJECT-GROUP + OBJECTS { fcFxPortC3InFrames, fcFxPortC3OutFrames, + fcFxPortC3InOctets, fcFxPortC3OutOctets, + fcFxPortC3Discards + } + STATUS current + DESCRIPTION + "A collection of objects providing various class 3 + performance statistics detected by the FxPorts." + ::= { fcFeMIBGroups 6 } + + fcFeCapabilitiesGroup OBJECT-GROUP + OBJECTS { fcFxPortCapFcphVersionHigh, fcFxPortCapFcphVersionLow, + fcFxPortCapBbCreditMax, fcFxPortCapBbCreditMin, + fcFxPortCapRxDataFieldSizeMax, + fcFxPortCapRxDataFieldSizeMin, + fcFxPortCapCos, fcFxPortCapIntermix, + fcFxPortCapStackedConnMode, fcFxPortCapClass2SeqDeliv, + fcFxPortCapClass3SeqDeliv, fcFxPortCapHoldTimeMax, + fcFxPortCapHoldTimeMin + } + STATUS current + DESCRIPTION + "A collection of objects providing the inherent + capability of each FxPort within the Fabric Element." + ::= { fcFeMIBGroups 7 } + + + END diff --git a/mibs/ietf/FLOW-METER-MIB b/mibs/ietf/FLOW-METER-MIB new file mode 100644 index 0000000..cba8ebd --- /dev/null +++ b/mibs/ietf/FLOW-METER-MIB @@ -0,0 +1,1901 @@ +FLOW-METER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Counter64, Integer32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TimeStamp, TruthValue + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + ifIndex + FROM IF-MIB + TimeFilter + FROM RMON2-MIB; + +flowMIB MODULE-IDENTITY + LAST-UPDATED "9910250000Z" -- October 25, 1999 + ORGANIZATION "IETF Realtime Traffic Flow Measurement Working Group" + CONTACT-INFO + "Nevil Brownlee, The University of Auckland + + Postal: Information Technology Sytems & Services + The University of Auckland + Private Bag 92-019 + Auckland, New Zealand + + Phone: +64 9 373 7599 x8941 + E-mail: n.brownlee@auckland.ac.nz" + DESCRIPTION + "MIB for the RTFM Traffic Flow Meter." + + REVISION "9910250000Z" + DESCRIPTION + "Initial Version, published as RFC 2720." + + REVISION "9908301250Z" + DESCRIPTION + "UTF8OwnerString Textual Convention added, and used to + replace OwnerString. Conceptually the same as OwnerString, + but facilitating internationalisation by using UTF-8 + encoding for its characters rather than US-ASCII." + + REVISION "9908191010Z" + DESCRIPTION + "Changes to SIZE specification for two variables: + - flowRuleInfoName SIZE specified as (0..127) + - flowRuleIndex SIZE increased to (1..2147483647)" + + REVISION "9712230937Z" + DESCRIPTION + "Two further variables deprecated: + - flowRuleInfoRulesReady (use flowRuleInfoStatus intead) + - flowDataStatus (contains no useful information)" + + REVISION "9707071715Z" + DESCRIPTION + "Significant changes since RFC 2064 include: + - flowDataPackageTable added + - flowColumnActivityTable deprecated + - flowManagerCounterWrap deprecated" + + REVISION "9603080208Z" + DESCRIPTION + "Initial version of this MIB (RFC 2064)" + ::= { mib-2 40 } + +flowControl OBJECT IDENTIFIER ::= { flowMIB 1 } + +flowData OBJECT IDENTIFIER ::= { flowMIB 2 } + +flowRules OBJECT IDENTIFIER ::= { flowMIB 3 } + +flowMIBConformance OBJECT IDENTIFIER ::= { flowMIB 4 } + +-- Textual Conventions + +UTF8OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "127t" + STATUS current + DESCRIPTION + "An administratively assigned name for the owner of a + resource, conceptually the same as OwnerString in the RMON + MIB [RMON-MIB]. + + To facilitate internationalisation, this name information + is represented using the ISO/IEC IS 10646-1 character set, + encoded as an octet string using the UTF-8 transformation + format described in the UTF-8 standard [UTF-8]." + SYNTAX OCTET STRING (SIZE (0..127)) + +PeerType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the type of a PeerAddress (see below). The values + used are from the 'Address Family Numbers' section of the + Assigned Numbers RFC [ASG-NBR]. Peer types from other address + families may also be used, provided only that they are + identified by their assigned Address Family numbers." + SYNTAX INTEGER { + ipv4(1), + ipv6(2), + nsap(3), + ipx(11), + appletalk(12), + decnet(13) } + +PeerAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the value of a peer address for various network + protocols. Address format depends on the actual protocol, + as indicated below: + + IPv4: ipv4(1) + 4-octet IpAddress (defined in the SNMPv2 SMI [RFC2578]) + + IPv6: ipv6(2) + 16-octet IpAddress (defined in the + IPv6 Addressing RFC [V6-ADDR]) + + CLNS: nsap(3) + NsapAddress (defined in the SNMPv2 SMI [RFC2578]) + + Novell: ipx(11) + 4-octet Network number, + 6-octet Host number (MAC address) + + AppleTalk: appletalk(12) + 2-octet Network number (sixteen bits), + 1-octet Host number (eight bits) + + DECnet: decnet(13) + 1-octet Area number (in low-order six bits), + 2-octet Host number (in low-order ten bits) + " + SYNTAX OCTET STRING (SIZE (3..20)) + +AdjacentType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the type of an adjacent address. May be a medium + type or (if metering is taking place inside a tunnel) a + PeerType (see above). + + The values used for IEEE 802 medium types are from the 'Network + Management Parameters (ifType definitions)' section of the + Assigned Numbers RFC [ASG-NBR]. Other medium types may also + be used, provided only that they are identified by their + assigned ifType numbers." + SYNTAX INTEGER { + ip(1), + nsap(3), + ethernet(7), -- ethernet-like [ENET-OBJ], + -- includes ethernet-csmacd(6) + tokenring(9), + ipx(11), + appletalk(12), + decnet(13), + fddi(15) } + +AdjacentAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the value of an adjacent address. May be a Medium + Access Control (MAC) address or (if metering is taking place + inside a tunnel) a PeerAddress (see above). + + MAC Address format depends on the actual medium, as follows: + + Ethernet: ethernet(7) + 6-octet 802.3 MAC address in 'canonical' order + Token Ring: tokenring(9) + 6-octet 802.5 MAC address in 'canonical' order + + FDDI: fddi(15) + FddiMACLongAddress, i.e. a 6-octet MAC address + in 'canonical' order (defined in [FDDI-MIB]) + " + SYNTAX OCTET STRING (SIZE (3..20)) + +TransportType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the type of a TransportAddress (see below). Values + will depend on the actual protocol; for IP they will be those + given in the 'Protocol Numbers' section of the Assigned Numbers + RFC [ASG-NBR], including icmp(1), tcp(6) and udp(17)." + SYNTAX Integer32 (1..255) + +TransportAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the value of a transport address for various + network protocols. Format as follows: + + IP: + 2-octet UDP or TCP port number + + Other protocols: + 2-octet port number + " + SYNTAX OCTET STRING (SIZE (2)) + +RuleAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the value of an address. Is a superset of + MediumAddress, PeerAddress and TransportAddress." + SYNTAX OCTET STRING (SIZE (2..20)) + +FlowAttributeNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Uniquely identifies an attribute within a flow data record." + SYNTAX INTEGER { + flowIndex(1), + flowStatus(2), + flowTimeMark(3), + sourceInterface(4), + sourceAdjacentType(5), + sourceAdjacentAddress(6), + sourceAdjacentMask(7), + sourcePeerType(8), + sourcePeerAddress(9), + sourcePeerMask(10), + sourceTransType(11), + sourceTransAddress(12), + sourceTransMask(13), + + destInterface(14), + destAdjacentType(15), + destAdjacentAddress(16), + destAdjacentMask(17), + destPeerType(18), + destPeerAddress(19), + destPeerMask(20), + destTransType(21), + destTransAddress(22), + destTransMask(23), + + pduScale(24), + octetScale(25), + + ruleSet(26), + toOctets(27), -- Source-to-Dest + toPDUs(28), + fromOctets(29), -- Dest-to-Source + fromPDUs(30), + firstTime(31), -- Activity times + lastActiveTime(32), + + sourceSubscriberID(33), -- Subscriber ID + destSubscriberID(34), + sessionID(35), + + sourceClass(36), -- Computed attributes + destClass(37), + flowClass(38), + sourceKind(39), + destKind(40), + flowKind(41) } + +RuleAttributeNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Uniquely identifies an attribute which may be tested in + a rule. These include attributes whose values come directly + from (or are computed from) the flow's packets, and the five + 'meter' variables used to hold an Attribute Number." + SYNTAX INTEGER { + null(0), + sourceInterface(4), -- Source Address + sourceAdjacentType(5), + sourceAdjacentAddress(6), + sourcePeerType(8), + sourcePeerAddress(9), + sourceTransType(11), + sourceTransAddress(12), + + destInterface(14), -- Dest Address + destAdjacentType(15), + destAdjacentAddress(16), + destPeerType(18), + destPeerAddress(19), + destTransType(21), + destTransAddress(22), + + sourceSubscriberID(33), -- Subscriber ID + destSubscriberID(34), + sessionID(35), + + sourceClass(36), -- Computed attributes + destClass(37), + flowClass(38), + sourceKind(39), + destKind(40), + flowKind(41), + + matchingStoD(50), -- Packet matching + + v1(51), -- Meter variables + v2(52), + v3(53), + v4(54), + v5(55) } + +ActionNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Uniquely identifies the action of a rule, i.e. the Pattern + Matching Engine's opcode number. Details of the opcodes + are given in the 'Traffic Flow Measurement: Architecture' + document [RTFM-ARC]." + SYNTAX INTEGER { + ignore(1), + noMatch(2), + count(3), + countPkt(4), + return(5), + gosub(6), + gosubAct(7), + assign(8), + assignAct(9), + goto(10), + gotoAct(11), + pushRuleTo(12), + pushRuleToAct(13), + pushPktTo(14), + pushPktToAct(15), + popTo(16), + popToAct(17) } + +-- +-- Control Group: RuleSet Info Table +-- + +flowRuleSetInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowRuleSetInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An array of information about the RuleSets held in the + meter. + + Any manager may configure a new RuleSet for the meter by + creating a row in this table with status active(1), and setting + values for all the objects in its rules. At this stage the new + RuleSet is available but not 'running', i.e. it is not being + used by the meter to produce entries in the flow table. + + To actually 'run' a RuleSet a manager must create a row in + the flowManagerInfoTable, set it's flowManagerStatus to + active(1), and set either its CurrentRuleSet or StandbyRuleSet + to point to the RuleSet to be run. + + Once a RuleSet is running a manager may not change any of the + objects within the RuleSet itself. Any attempt to do so should + result in a notWritable(17) SNMP error-status for such objects. + + A manager may stop a RuleSet running by removing all + references to it in the flowManagerInfoTable (i.e. by setting + CurrentRuleSet and StandbyRuleSet values to 0). This provides + a way to stop RuleSets left running if a manager fails. + For example, when a manager is started, it could search the + meter's flowManager table and stop all RuleSets having a + specified value of flowRuleInfoOwner. + + To prevent a manager from interfering with variables belonging + to another manager, the meter should use MIB views [RFC2575] so + as to limit each manager's access to the meter's variables, + effectively dividing the single meter into several virtual + meters, one for each independent manager." + ::= { flowControl 1 } + +flowRuleSetInfoEntry OBJECT-TYPE + SYNTAX FlowRuleSetInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular RuleSet." + INDEX { flowRuleInfoIndex } + ::= { flowRuleSetInfoTable 1 } + +FlowRuleSetInfoEntry ::= SEQUENCE { + flowRuleInfoIndex Integer32, + flowRuleInfoSize Integer32, + flowRuleInfoOwner UTF8OwnerString, + flowRuleInfoTimeStamp TimeStamp, + flowRuleInfoStatus RowStatus, + flowRuleInfoName OCTET STRING, + flowRuleInfoRulesReady TruthValue, + flowRuleInfoFlowRecords Integer32 + } + +flowRuleInfoIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index which selects an entry in the flowRuleSetInfoTable. + Each such entry contains control information for a particular + RuleSet which the meter may run." + ::= { flowRuleSetInfoEntry 1 } + +flowRuleInfoSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Number of rules in this RuleSet. Setting this variable will + cause the meter to allocate space for these rules." + ::= { flowRuleSetInfoEntry 2 } + +flowRuleInfoOwner OBJECT-TYPE + SYNTAX UTF8OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the manager which 'owns' this RuleSet. A manager + must set this variable when creating a row in this table." + ::= { flowRuleSetInfoEntry 3 } + +flowRuleInfoTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time this row's associated RuleSet was last changed." + ::= { flowRuleSetInfoEntry 4 } + +flowRuleInfoStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this flowRuleSetInfoEntry. If this value is + not active(1) the meter must not attempt to use the row's + associated RuleSet. Once its value has been set to active(1) + a manager may not change any of the other variables in the + row, nor the contents of the associated RuleSet. Any attempt + to do so should result in a notWritable(17) SNMP error-status + for such variables or objects. + + To download a RuleSet, a manger could: + - Locate an open slot in the RuleSetInfoTable. + - Create a RuleSetInfoEntry by setting the status for this + open slot to createAndWait(5). + - Set flowRuleInfoSize and flowRuleInfoName as required. + - Download the rules into the row's rule table. + - Set flowRuleInfoStatus to active(1). + + The RuleSet would then be ready to run. The manager is not + allowed to change the value of flowRuleInfoStatus from + active(1) if the associated RuleSet is being referenced by any + of the entries in the flowManagerInfoTable. + + Setting RuleInfoStatus to destroy(6) destroys the associated + RuleSet together with any flow data collected by it." + ::= { flowRuleSetInfoEntry 5 } + +flowRuleInfoName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alphanumeric identifier used by managers and readers to + identify a RuleSet. For example, a manager wishing to run a + RuleSet named WWW-FLOWS could search the flowRuleSetInfoTable + to see whether the WWW-FLOWS RuleSet is already available on + the meter. + + Note that references to RuleSets in the flowManagerInfoTable + use indexes for their flowRuleSetInfoTable entries. These may + be different each time the RuleSet is loaded into a meter." + ::= { flowRuleSetInfoEntry 6 } + +flowRuleInfoRulesReady OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Indicates whether the rules for this row's associated RuleSet + are ready for use. The meter will refuse to 'run' the RuleSet + unless this variable has been set to true(1). + While RulesReady is false(2), the manager may modify the + RuleSet, for example by downloading rules into it." + ::= { flowRuleSetInfoEntry 7 } + +flowRuleInfoFlowRecords OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the flow table for this RuleSet. + These may be current (waiting for collection by one or more + meter readers) or idle (waiting for the meter to recover + their memory)." + ::= { flowRuleSetInfoEntry 8 } + +-- +-- Control Group: Interface Info Table +-- + +flowInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An array of information specific to each meter interface." + ::= { flowControl 2 } + +flowInterfaceEntry OBJECT-TYPE + SYNTAX FlowInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular interface." + INDEX { ifIndex } + ::= { flowInterfaceTable 1 } + +FlowInterfaceEntry ::= SEQUENCE { + flowInterfaceSampleRate Integer32, + flowInterfaceLostPackets Counter32 + } + +flowInterfaceSampleRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The parameter N for statistical counting on this interface. + Set to N to count 1/Nth of the packets appearing at this + interface. A sampling rate of 1 counts all packets. + A sampling rate of 0 results in the interface being ignored + by the meter. + + A meter should choose its own algorithm to introduce variance + into the sampling so that exactly every Nth packet is counted. + The IPPM Working Group's RFC 'Framework for IP Performance + Metrics' [IPPM-FRM] explains why this should be done, and sets + out an algorithm for doing it." + DEFVAL { 1 } + ::= { flowInterfaceEntry 1 } + +flowInterfaceLostPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets the meter has lost for this interface. + Such losses may occur because the meter has been unable to + keep up with the traffic volume." + ::= { flowInterfaceEntry 2 } + +-- +-- Control Group: Meter Reader Info Table +-- + +-- Any meter reader wishing to collect data reliably for flows +-- should first create a row in this table. It should write that +-- row's flowReaderLastTime object each time it starts a collection +-- pass through the flow table. + +-- If a meter reader (MR) does not create a row in this table, e.g. +-- because its MIB view [RFC2575] did not allow MR create access to +-- flowReaderStatus, collection can still proceed but the meter will +-- not be aware of meter reader MR. This could lead the meter to +-- recover flows before they have been collected by MR. + +flowReaderInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowReaderInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An array of information about meter readers which have + registered their intent to collect flow data from this meter." + ::= { flowControl 3 } + +flowReaderInfoEntry OBJECT-TYPE + SYNTAX FlowReaderInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular meter reader." + INDEX { flowReaderIndex } + ::= { flowReaderInfoTable 1 } + +FlowReaderInfoEntry ::= SEQUENCE { + flowReaderIndex Integer32, + flowReaderTimeout Integer32, + flowReaderOwner UTF8OwnerString, + flowReaderLastTime TimeStamp, + flowReaderPreviousTime TimeStamp, + flowReaderStatus RowStatus, + flowReaderRuleSet Integer32 + } + +flowReaderIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index which selects an entry in the flowReaderInfoTable." + ::= { flowReaderInfoEntry 1 } + +flowReaderTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum time (in seconds) between flow data + collections for this meter reader. If this time elapses + without a collection, the meter should assume that this meter + reader has stopped collecting, and delete this row from the + table. A value of zero indicates that this row should not be + timed out." + ::= { flowReaderInfoEntry 2 } + +flowReaderOwner OBJECT-TYPE + SYNTAX UTF8OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the meter reader which created this row." + ::= { flowReaderInfoEntry 3 } + +flowReaderLastTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Time this meter reader began its most recent data collection. + + This variable should be written by a meter reader as its first + step in reading flow data. The meter will set this LastTime + value to its current Uptime, and set its PreviousTime value + (below) to the old LastTime. This allows the meter to + recover flows which have been inactive since PreviousTime, + for these have been collected at least once. + + If the meter reader fails to write flowLastReadTime, collection + may still proceed but the meter may not be able to recover + inactive flows until the flowReaderTimeout has been reached + for this entry." + ::= { flowReaderInfoEntry 4 } + +flowReaderPreviousTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time this meter reader began the collection before last." + ::= { flowReaderInfoEntry 5 } + +flowReaderStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this FlowReaderInfoEntry. A value of active(1) + implies that the associated reader should be collecting data + from the meter. Once this variable has been set to active(1) + a manager may only change this row's flowReaderLastTime and + flowReaderTimeout variables." + ::= { flowReaderInfoEntry 6 } + +flowReaderRuleSet OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An index to the array of RuleSets. Specifies a set of rules + of interest to this meter reader. The reader will attempt to + collect any data generated by the meter for this RuleSet, and + the meter will not recover the memory of any of the RuleSet's + flows until this collection has taken place. Note that a + reader may have entries in this table for several RuleSets." + ::= { flowReaderInfoEntry 7 } + +-- +-- Control Group: Manager Info Table +-- + +-- Any manager wishing to run a RuleSet must create a row in this +-- table. Once it has a table row, the manager may set the control +-- variables in its row so as to cause the meter to run any valid +-- RuleSet held by the meter. + +-- A single manager may run several RuleSets; it must create a row +-- in this table for each of them. In short, each row of this table +-- describes (and controls) a 'task' which the meter is executing. + +flowManagerInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowManagerInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An array of information about managers which have + registered their intent to run RuleSets on this meter." + ::= { flowControl 4 } + +flowManagerInfoEntry OBJECT-TYPE + SYNTAX FlowManagerInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular meter 'task.' By creating + an entry in this table and activating it, a manager requests + that the meter 'run' the indicated RuleSet. + + The entry also specifies a HighWaterMark and a StandbyRuleSet. + If the meter's flow table usage exceeds this task's + HighWaterMark the meter will stop running the task's + CurrentRuleSet and switch to its StandbyRuleSet. + + If the value of the task's StandbyRuleSet is 0 when its + HighWaterMark is exceeded, the meter simply stops running the + task's CurrentRuleSet. By careful selection of HighWaterMarks + for the various tasks a manager can ensure that the most + critical RuleSets are the last to stop running as the number + of flows increases. + + When a manager has determined that the demand for flow table + space has abated, it may cause the task to switch back to its + CurrentRuleSet by setting its flowManagerRunningStandby + variable to false(2)." + INDEX { flowManagerIndex } + ::= { flowManagerInfoTable 1 } + +FlowManagerInfoEntry ::= SEQUENCE { + flowManagerIndex Integer32, + flowManagerCurrentRuleSet Integer32, + flowManagerStandbyRuleSet Integer32, + flowManagerHighWaterMark Integer32, + flowManagerCounterWrap INTEGER, + flowManagerOwner UTF8OwnerString, + flowManagerTimeStamp TimeStamp, + flowManagerStatus RowStatus, + flowManagerRunningStandby TruthValue + } + +flowManagerIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index which selects an entry in the flowManagerInfoTable." + ::= { flowManagerInfoEntry 1 } + +flowManagerCurrentRuleSet OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Index to the array of RuleSets. Specifies which set of + rules is the 'current' one for this task. The meter will + be 'running' the current RuleSet if this row's + flowManagerRunningStandby value is false(2). + + When the manager sets this variable the meter will stop using + the task's old current RuleSet and start using the new one. + Specifying RuleSet 0 (the empty set) stops flow measurement + for this task." + ::= { flowManagerInfoEntry 2 } + +flowManagerStandbyRuleSet OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Index to the array of RuleSets. After reaching HighWaterMark + (see below) the manager will switch to using the task's + StandbyRuleSet in place of its CurrentRuleSet. For this to be + effective the designated StandbyRuleSet should have a coarser + reporting granularity then the CurrentRuleSet. The manager may + also need to decrease the meter reading interval so that the + meter can recover flows measured by this task's CurrentRuleSet." + DEFVAL { 0 } -- No standby + ::= { flowManagerInfoEntry 3 } + +flowManagerHighWaterMark OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A value expressed as a percentage, interpreted by the meter + as an indication of how full the flow table should be before + it should switch to the standby RuleSet (if one has been + specified) for this task. Values of 0% or 100% disable the + checking represented by this variable." + ::= { flowManagerInfoEntry 4 } + +flowManagerCounterWrap OBJECT-TYPE + SYNTAX INTEGER { wrap(1), scale(2) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "Specifies whether PDU and octet counters should wrap when + they reach the top of their range (normal behaviour for + Counter64 objects), or whether their scale factors should + be used instead. The combination of counter and scale + factor allows counts to be returned as non-negative binary + floating point numbers, with 64-bit mantissas and 8-bit + exponents." + DEFVAL { wrap } + ::= { flowManagerInfoEntry 5 } + +flowManagerOwner OBJECT-TYPE + SYNTAX UTF8OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the manager which created this row." + ::= { flowManagerInfoEntry 6 } + +flowManagerTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time this row was last changed by its manager." + ::= { flowManagerInfoEntry 7 } + +flowManagerStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row in the flowManagerInfoTable. A value + of active(1) implies that this task may be activated, by + setting its CurrentRuleSet and StandbyRuleSet variables. + Its HighWaterMark and RunningStandby variables may also be + changed." + ::= { flowManagerInfoEntry 8 } + +flowManagerRunningStandby OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Set to true(1) by the meter to indicate that it has switched + to runnning this task's StandbyRuleSet in place of its + CurrentRuleSet. To switch back to the CurrentRuleSet, the + manager may simply set this variable to false(2)." + DEFVAL { false } + ::= { flowManagerInfoEntry 9 } + +-- +-- Control Group: General Meter Control Variables +-- + +flowFloodMark OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value expressed as a percentage, interpreted by the meter + as an indication of how full the flow table should be before + it should take some action to avoid running out of resources + to handle new flows, as discussed in section 4.6 (Handling + Increasing Traffic Levels) of the RTFM Architecture RFC + [RTFM-ARC]. + + Values of 0% or 100% disable the checking represented by + this variable." + DEFVAL { 95 } -- Enabled by default. + ::= { flowControl 5 } + +flowInactivityTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time in seconds since the last packet seen, after which + a flow becomes 'idle.' Note that although a flow may be + idle, it will not be discarded (and its memory recovered) + until after its data has been collected by all the meter + readers registered for its RuleSet." + DEFVAL { 600 } -- 10 minutes + ::= { flowControl 6 } + +flowActiveFlows OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of flows which are currently in use." + ::= { flowControl 7 } + +flowMaxFlows OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of flows allowed in the meter's + flow table. At present this is determined when the meter + is first started up." + ::= { flowControl 8 } + +flowFloodMode OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates that the meter has passed its FloodMark and is + not running in its normal mode. + + When the manager notices this it should take action to remedy + the problem which caused the flooding. It should then monitor + flowActiveFlows so as to determine when the flood has receded. + At that point the manager may set flowFloodMode to false(2) to + resume normal operation." + ::= { flowControl 9 } + +-- +-- The Flow Table +-- + +-- This is a table kept by a meter, with one flow data entry for every +-- flow being measured. Each flow data entry stores the attribute +-- values for a traffic flow. Details of flows and their attributes +-- are given in the 'Traffic Flow Measurement: Architecture' +-- document [RTFM-ARC]. + +-- From time to time a meter reader may sweep the flow table so as +-- to read counts. This is most effectively achieved by using the +-- TimeMark variable together with successive GetBulk requests to +-- retrieve the values of the desired flow attribute variables. + +-- This scheme allows multiple meter readers to independently use the +-- same meter; the meter readers do not have to be synchronised and +-- they may use different collection intervals. + +-- If identical sets of counts are required from a meter, a manager +-- could achieve this using two identical copies of a RuleSet in that +-- meter and switching back and forth between them. This is discussed +-- further in the RTFM Architecture document [RTFM-ARC]. + +flowDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of all flows being measured." + ::= { flowData 1 } + +flowDataEntry OBJECT-TYPE + SYNTAX FlowDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The flow data record for a particular flow." + INDEX { flowDataRuleSet, flowDataTimeMark, flowDataIndex } + ::= { flowDataTable 1 } + +FlowDataEntry ::= SEQUENCE { + flowDataIndex Integer32, + flowDataTimeMark TimeFilter, + flowDataStatus INTEGER, + + flowDataSourceInterface Integer32, + flowDataSourceAdjacentType AdjacentType, + flowDataSourceAdjacentAddress AdjacentAddress, + flowDataSourceAdjacentMask AdjacentAddress, + flowDataSourcePeerType PeerType, + flowDataSourcePeerAddress PeerAddress, + flowDataSourcePeerMask PeerAddress, + flowDataSourceTransType TransportType, + flowDataSourceTransAddress TransportAddress, + flowDataSourceTransMask TransportAddress, + + flowDataDestInterface Integer32, + flowDataDestAdjacentType AdjacentType, + flowDataDestAdjacentAddress AdjacentAddress, + flowDataDestAdjacentMask AdjacentAddress, + flowDataDestPeerType PeerType, + flowDataDestPeerAddress PeerAddress, + flowDataDestPeerMask PeerAddress, + flowDataDestTransType TransportType, + flowDataDestTransAddress TransportAddress, + flowDataDestTransMask TransportAddress, + + flowDataPDUScale Integer32, + flowDataOctetScale Integer32, + + flowDataRuleSet Integer32, + flowDataToOctets Counter64, -- Source->Dest + flowDataToPDUs Counter64, + flowDataFromOctets Counter64, -- Dest->Source + flowDataFromPDUs Counter64, + flowDataFirstTime TimeStamp, -- Activity times + flowDataLastActiveTime TimeStamp, + + flowDataSourceSubscriberID OCTET STRING, + flowDataDestSubscriberID OCTET STRING, + flowDataSessionID OCTET STRING, + + flowDataSourceClass Integer32, + flowDataDestClass Integer32, + flowDataClass Integer32, + flowDataSourceKind Integer32, + flowDataDestKind Integer32, + flowDataKind Integer32 + } + +flowDataIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Value of this flow data record's index within the meter's + flow table." + ::= { flowDataEntry 1 } + +flowDataTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. Allows GetNext and GetBulk + to find flow table rows which have changed since a specified + value of the meter's Uptime." + ::= { flowDataEntry 2 } + +flowDataStatus OBJECT-TYPE + SYNTAX INTEGER { inactive(1), current(2) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Status of this flow data record." + ::= { flowDataEntry 3 } + +flowDataSourceInterface OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index of the interface associated with the source address + for this flow. It's value is one of those contained in the + ifIndex field of the meter's interfaces table." + ::= { flowDataEntry 4 } + +flowDataSourceAdjacentType OBJECT-TYPE + SYNTAX AdjacentType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Adjacent address type of the source for this flow. + + If metering is being performed at the network level, + AdjacentType will indicate the medium for the interface on + which the flow was observed and AdjacentAddress will be the + MAC address for that interface. This is the usual case. + + If traffic is being metered inside a tunnel, AdjacentType will + be the peer type of the host at the end of the tunnel and + AdjacentAddress will be the peer address for that host." + ::= { flowDataEntry 5 } + +flowDataSourceAdjacentAddress OBJECT-TYPE + SYNTAX AdjacentAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the adjacent device on the path for the source + for this flow." + ::= { flowDataEntry 6 } + +flowDataSourceAdjacentMask OBJECT-TYPE + SYNTAX AdjacentAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the adjacent source address for this flow." + ::= { flowDataEntry 7 } + +flowDataSourcePeerType OBJECT-TYPE + SYNTAX PeerType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Peer address type of the source for this flow." + ::= { flowDataEntry 8 } + +flowDataSourcePeerAddress OBJECT-TYPE + SYNTAX PeerAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the peer device for the source of this flow." + ::= { flowDataEntry 9 } + +flowDataSourcePeerMask OBJECT-TYPE + SYNTAX PeerAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the source peer address for this flow." + ::= { flowDataEntry 10 } + +flowDataSourceTransType OBJECT-TYPE + SYNTAX TransportType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transport address type of the source for this flow. The + value of this attribute will depend on the peer address type." + ::= { flowDataEntry 11 } + +flowDataSourceTransAddress OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transport address for the source of this flow." + ::= { flowDataEntry 12 } + +flowDataSourceTransMask OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the transport source address for this flow." + ::= { flowDataEntry 13 } + +flowDataDestInterface OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index of the interface associated with the dest address for + this flow. This value is one of the values contained in the + ifIndex field of the interfaces table." + ::= { flowDataEntry 14 } + +flowDataDestAdjacentType OBJECT-TYPE + SYNTAX AdjacentType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Adjacent address type of the destination for this flow." + ::= { flowDataEntry 15 } + +flowDataDestAdjacentAddress OBJECT-TYPE + SYNTAX AdjacentAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the adjacent device on the path for the + destination for this flow." + ::= { flowDataEntry 16 } + +flowDataDestAdjacentMask OBJECT-TYPE + SYNTAX AdjacentAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the adjacent destination address for this flow." + ::= { flowDataEntry 17 } + +flowDataDestPeerType OBJECT-TYPE + SYNTAX PeerType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Peer address type of the destination for this flow." + ::= { flowDataEntry 18 } + +flowDataDestPeerAddress OBJECT-TYPE + SYNTAX PeerAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of the peer device for the destination of this flow." + ::= { flowDataEntry 19 } + +flowDataDestPeerMask OBJECT-TYPE + SYNTAX PeerAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the destination peer type for this flow." + ::= { flowDataEntry 20 } + +flowDataDestTransType OBJECT-TYPE + SYNTAX TransportType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transport address type of the destination for this flow. The + value of this attribute will depend on the peer address type." + ::= { flowDataEntry 21 } + +flowDataDestTransAddress OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Transport address for the destination of this flow." + ::= { flowDataEntry 22 } + +flowDataDestTransMask OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "1-bits in this mask indicate which bits must match when + comparing the transport destination address for this flow." + ::= { flowDataEntry 23 } + +flowDataPDUScale OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The scale factor applied to this particular flow. Indicates + the number of bits the PDU counter values should be moved left + to obtain the actual values." + ::= { flowDataEntry 24 } + +flowDataOctetScale OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The scale factor applied to this particular flow. Indicates + the number of bits the octet counter values should be moved + left to obtain the actual values." + ::= { flowDataEntry 25 } + +flowDataRuleSet OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RuleSet number of the RuleSet which created this flow. + Allows a manager to use GetNext or GetBulk requests to find + flows belonging to a particular RuleSet." + ::= { flowDataEntry 26 } + +flowDataToOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of octets flowing from source to destination + for this flow." + ::= { flowDataEntry 27 } + +flowDataToPDUs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets flowing from source to destination + for this flow." + ::= { flowDataEntry 28 } + +flowDataFromOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of octets flowing from destination to source + for this flow." + ::= { flowDataEntry 29 } + +flowDataFromPDUs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets flowing from destination to source + for this flow." + ::= { flowDataEntry 30 } + +flowDataFirstTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which this flow was first entered in the table" + ::= { flowDataEntry 31 } + +flowDataLastActiveTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last time this flow had activity, i.e. the time of + arrival of the most recent PDU belonging to this flow." + ::= { flowDataEntry 32 } + +flowDataSourceSubscriberID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Subscriber ID associated with the source address for this + flow. A Subscriber ID is an unspecified text string, used + to ascribe traffic flows to individual users. At this time + the means by which a Subscriber ID may be associated with a + flow is unspecified." + ::= { flowDataEntry 33 } + +flowDataDestSubscriberID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Subscriber ID associated with the destination address for + this flow. A Subscriber ID is an unspecified text string, + used to ascribe traffic flows to individual users. At this + time the means by which a Subscriber ID may be associated + with a flow is unspecified." + ::= { flowDataEntry 34 } + +flowDataSessionID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Session ID for this flow. Such an ID might be allocated + by a network access server to distinguish a series of sessions + between the same pair of addresses, which would otherwise + appear to be parts of the same accounting flow." + ::= { flowDataEntry 35 } + +flowDataSourceClass OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source class for this flow. Determined by the rules, set by + a PushRule action when this flow was entered in the table." + ::= { flowDataEntry 36 } + +flowDataDestClass OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination class for this flow. Determined by the rules, set + by a PushRule action when this flow was entered in the table." + ::= { flowDataEntry 37 } + +flowDataClass OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Class for this flow. Determined by the rules, set by a + PushRule action when this flow was entered in the table." + ::= { flowDataEntry 38 } + +flowDataSourceKind OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source kind for this flow. Determined by the rules, set by + a PushRule action when this flow was entered in the table." + ::= { flowDataEntry 39 } + +flowDataDestKind OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination kind for this flow. Determined by the rules, set + by a PushRule action when this flow was entered in the table." + ::= { flowDataEntry 40 } + +flowDataKind OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Class for this flow. Determined by the rules, set by a + PushRule action when this flow was entered in the table." + ::= { flowDataEntry 41 } + +-- +-- The Activity Column Table +-- + +flowColumnActivityTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowColumnActivityEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Index into the Flow Table. Allows a meter reader to retrieve + a list containing the flow table indexes of flows which were + last active at or after a given time, together with the values + of a specified attribute for each such flow." + ::= { flowData 2 } + +flowColumnActivityEntry OBJECT-TYPE + SYNTAX FlowColumnActivityEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The Column Activity Entry for a particular attribute, + activity time and flow." + INDEX { flowColumnActivityAttribute, flowColumnActivityTime, + flowColumnActivityIndex } + ::= { flowColumnActivityTable 1 } + +FlowColumnActivityEntry ::= SEQUENCE { + flowColumnActivityAttribute FlowAttributeNumber, + flowColumnActivityTime TimeFilter, + flowColumnActivityIndex Integer32, + flowColumnActivityData OCTET STRING + } + +flowColumnActivityAttribute OBJECT-TYPE + SYNTAX FlowAttributeNumber + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Specifies the attribute for which values are required from + active flows." + ::= { flowColumnActivityEntry 1 } + +flowColumnActivityTime OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This variable is a copy of flowDataLastActiveTime in the + flow data record identified by the flowColumnActivityIndex + value of this flowColumnActivityTable entry." + ::= { flowColumnActivityEntry 2 } + +flowColumnActivityIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Index of a flow table entry which was active at or after + a specified flowColumnActivityTime." + ::= { flowColumnActivityEntry 3 } + +flowColumnActivityData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (3..1000)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Collection of attribute data for flows active after + flowColumnActivityTime. Within the OCTET STRING is a + sequence of { flow index, attribute value } pairs, one for + each active flow. The end of the sequence is marked by a + flow index value of 0, indicating that there are no more + rows in this column. + + The format of objects inside flowColumnFlowData is as follows. + All numbers are unsigned. Numbers and strings appear with + their high-order bytes leading. Numbers are fixed size, as + specified by their SYNTAX in the flow table (above), i.e. one + octet for flowAddressType and small constants, and four octets + for Counter and TimeStamp. Strings are variable-length, with + the length given in a single leading octet. + + The following is an attempt at an ASN.1 definition of + flowColumnActivityData: + + flowColumnActivityData ::= SEQUENCE flowRowItemEntry + flowRowItemEntry ::= SEQUENCE { + flowRowNumber Integer32 (1..65535), + -- 0 indicates the end of this column + flowDataValue flowDataType -- Choice depends on attribute + } + flowDataType ::= CHOICE { + flowByteValue Integer32 (1..255), + flowShortValue Integer32 (1..65535), + flowLongValue Integer32, + flowStringValue OCTET STRING -- Length (n) in first byte, + -- n+1 bytes total length, trailing zeroes truncated + }" + ::= { flowColumnActivityEntry 4 } + +-- +-- The Data Package Table +-- + +flowDataPackageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowDataPackageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index into the Flow Table. Allows a meter reader to retrieve + a sequence containing the values of a specified set of + attributes for a flow which came from a specified RuleSet and + which was last active at or after a given time." + ::= { flowData 3 } + +flowDataPackageEntry OBJECT-TYPE + SYNTAX FlowDataPackageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The data package containing selected variables from + active rows in the flow table." + INDEX { flowPackageSelector, + flowPackageRuleSet, flowPackageTime, flowPackageIndex } + ::= { flowDataPackageTable 1 } + +FlowDataPackageEntry ::= SEQUENCE { + flowPackageSelector OCTET STRING, + flowPackageRuleSet Integer32, + flowPackageTime TimeFilter, + flowPackageIndex Integer32, + flowPackageData OCTET STRING + } + +flowPackageSelector OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the attributes for which values are required from + an active flow. These are encoded as a sequence of octets + each containing a FlowAttribute number, preceded by an octet + giving the length of the sequence (not including the length + octet). For a flowPackageSelector to be valid, it must + contain at least one attribute." + ::= { flowDataPackageEntry 1 } + +flowPackageRuleSet OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the index (in the flowRuleSetInfoTable) of the rule + set which produced the required flow." + ::= { flowDataPackageEntry 2 } + +flowPackageTime OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable is a copy of flowDataLastActiveTime in the + flow data record identified by the flowPackageIndex + value of this flowPackageTable entry." + ::= { flowDataPackageEntry 3 } + +flowPackageIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of a flow table entry which was active at or after + a specified flowPackageTime." + ::= { flowDataPackageEntry 4 } + +flowPackageData OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A collection of attribute values for a single flow, as + specified by this row's indexes. The attribute values are + contained within a BER-encoded sequence [ASN-1, ASN-BER], + in the order they appear in their flowPackageSelector. + + For example, to retrieve a flowPackage containing values for + attributes 11, 18 and 29, for a flow in RuleSet 7, with flow + index 3447, one would GET the package whose Object Identifier + (OID) is + flowPackageData . 3.11.18.29 . 7. 0 . 3447 + + To get a package for the next such flow which had been + active since time 12345 one would GETNEXT the package whose + Object Identifier (OID) is + flowPackageData . 3.11.18.29 . 7. 12345 . 3447" + ::= { flowDataPackageEntry 5 } + +-- +-- The Rule Table +-- + +-- This is an array of RuleSets; the 'running' ones are indicated +-- by the entries in the meter's flowManagerInfoTable. Several +-- RuleSets can be held in a meter so that the manager can change the +-- running RuleSets easily, for example with time of day. Note that +-- a manager may not change the rules in any RuleSet currently +-- referenced within the flowManagerInfoTable (either as 'current' or +-- 'standby')! See the 'Traffic Flow Measurement: Architecture' +-- document [RTFM-ARC] for details of rules and how they are used. + +-- Space for a RuleSet is allocated by setting the value of +-- flowRuleInfoSize in the rule table's flowRuleSetInfoTable row. +-- Values for each row in the RuleSet (Selector, Mask, MatchedValue, +-- Action and Parameter) can then be set by the meter. + +-- Although an individual rule within a RuleSet could be modified, +-- it is much safer to simply download a complete new RuleSet. + +flowRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF FlowRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains all the RuleSets which may be used by the meter." + ::= { flowRules 1 } + +flowRuleEntry OBJECT-TYPE + SYNTAX FlowRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The rule record itself." + INDEX { flowRuleSet, flowRuleIndex } + ::= { flowRuleTable 1 } + +FlowRuleEntry ::= SEQUENCE { + flowRuleSet Integer32, + flowRuleIndex Integer32, + flowRuleSelector RuleAttributeNumber, + flowRuleMask RuleAddress, + flowRuleMatchedValue RuleAddress, + flowRuleAction ActionNumber, + flowRuleParameter Integer32 + } + +flowRuleSet OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Selects a RuleSet from the array of RuleSets." + ::= { flowRuleEntry 1 } + +flowRuleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index into the Rule table. N.B: These values will + normally be consecutive, given the fall-through semantics + of processing the table." + ::= { flowRuleEntry 2 } + +flowRuleSelector OBJECT-TYPE + SYNTAX RuleAttributeNumber + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the attribute to be matched. + + null(0) is a special case; null rules always succeed. + matchingStoD(50) is set by the meter's Packet Matching Engine. + Its value is true(1) if the PME is attempting to match the + packet with its addresses in Source-to-Destination order (i.e. + as they appear in the packet), and false(2) otherwise. + Details of how packets are matched are given in the 'Traffic + Flow Measurement: Architecture' document [RTFM-ARC]. + v1(51), v2(52), v3(53), v4(54) and v5(55) select meter + variables, each of which can hold the name (i.e. selector + value) of an address attribute. When one of these is used + as a selector, its value specifies the attribute to be + tested. Variable values are set by an Assign action." + ::= { flowRuleEntry 3 } + +flowRuleMask OBJECT-TYPE + SYNTAX RuleAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The initial mask used to compute the desired value. If the + mask is zero the rule's test will always succeed." + ::= { flowRuleEntry 4 } + +flowRuleMatchedValue OBJECT-TYPE + SYNTAX RuleAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The resulting value to be matched for equality. + Specifically, if the attribute chosen by the flowRuleSelector + logically ANDed with the mask specified by the flowRuleMask + equals the value specified in the flowRuleMatchedValue, then + continue processing the table entry based on the action + specified by the flowRuleAction entry. Otherwise, proceed to + the next entry in the rule table." + ::= { flowRuleEntry 5 } + +flowRuleAction OBJECT-TYPE + SYNTAX ActionNumber + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The action to be taken if this rule's test succeeds, or if + the meter's 'test' flag is off. Actions are opcodes for the + meter's Packet Matching Engine; details are given in the + 'Traffic Flow Measurement: Architecture' document [RTFM-ARC]." + ::= { flowRuleEntry 6 } + +flowRuleParameter OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A parameter value providing extra information for this rule's + action. Most of the actions use the parameter value to specify + which rule to execute after this rule's test has failed; details + are given in the 'Traffic Flow Measurement: Architecture' + document [RTFM-ARC]." + ::= { flowRuleEntry 7 } + +-- +-- Traffic Flow Meter conformance statement +-- + +flowMIBCompliances + OBJECT IDENTIFIER ::= { flowMIBConformance 1 } + +flowMIBGroups + OBJECT IDENTIFIER ::= { flowMIBConformance 2 } + +flowControlGroup OBJECT-GROUP + OBJECTS { + flowRuleInfoSize, flowRuleInfoOwner, + flowRuleInfoTimeStamp, flowRuleInfoStatus, + flowRuleInfoName, + flowRuleInfoRulesReady, + flowRuleInfoFlowRecords, + flowInterfaceSampleRate, + flowInterfaceLostPackets, + flowReaderTimeout, flowReaderOwner, + flowReaderLastTime, flowReaderPreviousTime, + flowReaderStatus, flowReaderRuleSet, + flowManagerCurrentRuleSet, flowManagerStandbyRuleSet, + flowManagerHighWaterMark, + flowManagerCounterWrap, + flowManagerOwner, flowManagerTimeStamp, + flowManagerStatus, flowManagerRunningStandby, + flowFloodMark, + flowInactivityTimeout, flowActiveFlows, + flowMaxFlows, flowFloodMode } + STATUS deprecated + DESCRIPTION + "The control group defines objects which are used to control + an accounting meter." + ::= {flowMIBGroups 1 } + +flowDataTableGroup OBJECT-GROUP + OBJECTS { +-- flowDataIndex, <- INDEX, not-accessible + flowDataStatus, + flowDataSourceInterface, + flowDataSourceAdjacentType, + flowDataSourceAdjacentAddress, flowDataSourceAdjacentMask, + flowDataSourcePeerType, + flowDataSourcePeerAddress, flowDataSourcePeerMask, + flowDataSourceTransType, + flowDataSourceTransAddress, flowDataSourceTransMask, + flowDataDestInterface, + flowDataDestAdjacentType, + flowDataDestAdjacentAddress, flowDataDestAdjacentMask, + flowDataDestPeerType, + flowDataDestPeerAddress, flowDataDestPeerMask, + flowDataDestTransType, + flowDataDestTransAddress, flowDataDestTransMask, +-- flowDataRuleSet, <- INDEX, not-accessible + flowDataToOctets, flowDataToPDUs, + flowDataFromOctets, flowDataFromPDUs, + flowDataFirstTime, flowDataLastActiveTime, + flowDataSourceClass, flowDataDestClass, flowDataClass, + flowDataSourceKind, flowDataDestKind, flowDataKind + } + STATUS deprecated + DESCRIPTION + "The flow table group defines objects which provide the + structure for the flow table, including the creation time + and activity time indexes into it. In addition it defines + objects which provide a base set of flow attributes for the + adjacent, peer and transport layers, together with a flow's + counters and times. Finally it defines a flow's class and + kind attributes, which are set by rule actions." + ::= {flowMIBGroups 2 } + +flowDataScaleGroup OBJECT-GROUP + OBJECTS { + flowManagerCounterWrap, + flowDataPDUScale, flowDataOctetScale + } + STATUS deprecated + DESCRIPTION + "The flow scale group defines objects which specify scale + factors for counters." + ::= {flowMIBGroups 3 } + +flowDataSubscriberGroup OBJECT-GROUP + OBJECTS { + flowDataSourceSubscriberID, flowDataDestSubscriberID, + flowDataSessionID + } + STATUS current + DESCRIPTION + "The flow subscriber group defines objects which may be used + to identify the end point(s) of a flow." + ::= {flowMIBGroups 4 } + +flowDataColumnTableGroup OBJECT-GROUP + OBJECTS { + flowColumnActivityAttribute, + flowColumnActivityIndex, + flowColumnActivityTime, + flowColumnActivityData + } + STATUS deprecated + DESCRIPTION + "The flow column table group defines objects which can be used + to collect part of a column of attribute values from the flow + table." + ::= {flowMIBGroups 5 } + +flowDataPackageGroup OBJECT-GROUP + OBJECTS { + flowPackageData + } + STATUS current + DESCRIPTION + "The data package group defines objects which can be used + to collect a specified set of attribute values from a row of + the flow table." + ::= {flowMIBGroups 6 } + +flowRuleTableGroup OBJECT-GROUP + OBJECTS { + flowRuleSelector, + flowRuleMask, flowRuleMatchedValue, + flowRuleAction, flowRuleParameter + } + STATUS current + DESCRIPTION + "The rule table group defines objects which hold the set(s) + of rules specifying which traffic flows are to be accounted + for." + ::= {flowMIBGroups 7 } + +flowDataScaleGroup2 OBJECT-GROUP + OBJECTS { +-- flowManagerCounterWrap, <- Deprecated + flowDataPDUScale, flowDataOctetScale + } + STATUS current + DESCRIPTION + "The flow scale group defines objects which specify scale + factors for counters. This group replaces the earlier + version of flowDataScaleGroup above (now deprecated)." + ::= {flowMIBGroups 8} + +flowControlGroup2 OBJECT-GROUP + OBJECTS { + flowRuleInfoSize, flowRuleInfoOwner, + flowRuleInfoTimeStamp, flowRuleInfoStatus, + flowRuleInfoName, +-- flowRuleInfoRulesReady, <- Deprecated + flowRuleInfoFlowRecords, + flowInterfaceSampleRate, + flowInterfaceLostPackets, + flowReaderTimeout, flowReaderOwner, + flowReaderLastTime, flowReaderPreviousTime, + flowReaderStatus, flowReaderRuleSet, + flowManagerCurrentRuleSet, flowManagerStandbyRuleSet, + flowManagerHighWaterMark, +-- flowManagerCounterWrap, <- Moved to DataScaleGroup + flowManagerOwner, flowManagerTimeStamp, + flowManagerStatus, flowManagerRunningStandby, + flowFloodMark, + flowInactivityTimeout, flowActiveFlows, + flowMaxFlows, flowFloodMode } + STATUS current + DESCRIPTION + "The control group defines objects which are used to control + an accounting meter. It replaces the earlier version of + flowControlGroup above (now deprecated)." + ::= {flowMIBGroups 9 } + +flowMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for a Traffic Flow Meter." + MODULE + MANDATORY-GROUPS { + flowControlGroup2, + flowDataTableGroup, + flowDataPackageGroup, + flowRuleTableGroup + } + ::= { flowMIBCompliances 1 } + +END diff --git a/mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB b/mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB new file mode 100644 index 0000000..001440b --- /dev/null +++ b/mibs/ietf/FR-ATM-PVC-SERVICE-IWF-MIB @@ -0,0 +1,1102 @@ +FR-ATM-PVC-SERVICE-IWF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, + mib-2, Integer32, Counter32 FROM SNMPv2-SMI + + + + RowStatus, TimeStamp FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + + AtmVpIdentifier, AtmVcIdentifier FROM ATM-TC-MIB + + atmVclEntry FROM ATM-MIB + + InterfaceIndex FROM IF-MIB; + + frAtmIwfMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" -- September 28, 2000 + ORGANIZATION "IETF Frame Relay Service MIB Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/frnetmib-charter + WG-email: + frnetmib@sunroof.eng.sun.com + Subscribe: + frnetmib-request@sunroof.eng.sun.com + Email Archive: + ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + Chair: Andy Malis + Vivace Networks, Inc. + Email: Andy.Malis@vivacenetworks.com + + WG editor: Kenneth Rehbehn + Megisto Systems, Inc. + Email: krehbehn@megisto.com + + Co-author: Orly Nicklass + RAD Data Communications Ltd. + EMail: orly_n@rad.co.il + + Co-author: George Mouradian + AT&T Labs + EMail: gvm@att.com" + + DESCRIPTION + "The MIB module for monitoring and controlling the + Frame Relay/ATM PVC Service Interworking + Function." + + -- + -- Revision History + -- + + + REVISION "200009280000Z" + DESCRIPTION + "Published as RFC 2955" + + ::= { mib-2 86 } + + -- + -- Object Identifiers + -- + frAtmIwfMIBObjects OBJECT IDENTIFIER + ::= { frAtmIwfMIB 1 } + + frAtmIwfTraps OBJECT IDENTIFIER + ::= { frAtmIwfMIB 2 } + frAtmIwfTrapsPrefix OBJECT IDENTIFIER + ::= { frAtmIwfTraps 0 } + + frAtmIwfConformance OBJECT IDENTIFIER + ::= { frAtmIwfMIB 3 } + frAtmIwfGroups OBJECT IDENTIFIER + ::= { frAtmIwfConformance 1 } + frAtmIwfCompliances OBJECT IDENTIFIER + ::= { frAtmIwfConformance 2 } + + -- + -- The FR/ATM PVC Service IWF Group + -- + -- The Frame Relay/ATM PVC Service Interworking Function + -- Connection Table contains all connections utilizing + -- the interworking function. + -- + + frAtmIwfConnIndexNext OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to be + used for frAtmIwfConnIndex when creating entries + in the frAtmIwfConnectionTable. The value 0 + indicates that no unassigned entries are + available. To obtain the frAtmIwfConnIndexNext + value for a new entry, the manager issues a + management protocol retrieval operation to obtain + the current value of this object. After each + retrieval, the agent should modify the value to + the next unassigned index." + ::= { frAtmIwfMIBObjects 1 } + + + frAtmIwfConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAtmIwfConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table in which each row represents a Frame + Relay/ATM interworking connection." + ::= { frAtmIwfMIBObjects 2 } + + frAtmIwfConnectionEntry OBJECT-TYPE + SYNTAX FrAtmIwfConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FrAtmIwfConnectionEntry provides an entry for + an interworking connection between a frame relay + PVC and one or more ATM PVCs, or an ATM PVC and + one or more frame relay PVCs. A single frame + relay PVC connected to a single ATM PVC is + referred to as a `point-to-point' connection and + is represented by a single row in the FR/ATM IWF + Connection Table. The case of a single frame + relay PVC connected to multiple ATM PVCs (or + single ATM PVC connected to multiple frame relay + PVCs) is referred to as a `point-to-multipoint' + connection and is represented by multiple rows in + the FR/ATM IWF Connection Table. + + The object frAtmIwfConnIndex uniquely identifies + each point-to-point or point-to-multipoint + connection. The manager obtains the + frAtmIwfConnIndex value by reading the + frAtmIwfConnIndexNext object. + + After a frAtmIwfConnIndex is assigned for the + connection, the manager creates one or more rows + in the Cross Connect Table; one for each cross- + connection between the frame relay PVC and an ATM + PVC. In the case of `point-to-multipoint' + connections, all rows are indexed by the same + frAtmIwfConnIndex value and MUST refer to the same + frame relay PVC or ATM PVC respectively. An entry + can be created only when at least one pair of + frame relay and ATM PVCs exist. + + A row can be established by one-step set-request + with all required parameter values and + frAtmIwfConnRowStatus set to createAndGo(4). The + + + Agent should perform all error checking as needed. + A pair of cross-connected PVCs, as identified by a + particular value of the indexes, is released by + setting frAtmIwfConnRowStatus to destroy(6). The + Agent may release all associated resources. The + manager may remove the related PVCs thereafter. + Indexes are persistent across reboots of the + system." + INDEX { frAtmIwfConnIndex, + frAtmIwfConnAtmPort, + frAtmIwfConnVpi, + frAtmIwfConnVci, + frAtmIwfConnFrPort, + frAtmIwfConnDlci + } + ::= { frAtmIwfConnectionTable 1 } + + FrAtmIwfConnectionEntry ::= + SEQUENCE { + frAtmIwfConnIndex Integer32, + frAtmIwfConnAtmPort InterfaceIndex, + frAtmIwfConnVpi AtmVpIdentifier, + frAtmIwfConnVci AtmVcIdentifier, + frAtmIwfConnFrPort InterfaceIndex, + frAtmIwfConnDlci Integer32, + frAtmIwfConnRowStatus RowStatus, + frAtmIwfConnAdminStatus INTEGER, + frAtmIwfConnAtm2FrOperStatus INTEGER, + frAtmIwfConnAtm2FrLastChange TimeStamp, + frAtmIwfConnFr2AtmOperStatus INTEGER, + frAtmIwfConnFr2AtmLastChange TimeStamp, + frAtmIwfConnectionDescriptor Integer32, + frAtmIwfConnFailedFrameTranslate Counter32, + frAtmIwfConnOverSizedFrames Counter32, + frAtmIwfConnFailedAal5PduTranslate Counter32, + frAtmIwfConnOverSizedSDUs Counter32, + frAtmIwfConnCrcErrors Counter32, + frAtmIwfConnSarTimeOuts Counter32 + } + + frAtmIwfConnIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each point-to-point or point- + to-multipoint connection. The manager obtains the + frAtmIwfConnIndex value by reading the + + + frAtmIwfConnIndexNext object. A point-to- + multipoint connection will be represented in the + frAtmIwfConnectionTable with multiple entries that + share the same frAtmIwfConnIndex value." + ::= { frAtmIwfConnectionEntry 1 } + + frAtmIwfConnAtmPort OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index in the ifTable that identifies the ATM + port for this interworking connection." + ::= { frAtmIwfConnectionEntry 2 } + + frAtmIwfConnVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI of the ATM PVC end point for this + interworking connection." + ::= { frAtmIwfConnectionEntry 3 } + + frAtmIwfConnVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI of the ATM PVC end point for this + interworking + connection." + ::= { frAtmIwfConnectionEntry 4 } + + frAtmIwfConnFrPort OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index in the ifTable that identifies the + frame relay port for this interworking + connection." + ::= { frAtmIwfConnectionEntry 5 } + + frAtmIwfConnDlci OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "The DLCI that identifies the frame relay PVC end + point for this interworking connection." + ::= { frAtmIwfConnectionEntry 6 } + + frAtmIwfConnRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The table row may be created with + 'createAndWait(5)' or 'createAndGo(4)'. + To activate a connection entry, a valid connection + descriptor MUST be established in the + frAtmIwfConnectionDescriptor object. + + This object is set to 'destroy(6)' to delete the + table row. Before the table row is destroyed, the + OperStatus/AdminStatus of the corresponding + endpoints MUST be 'down(2)'. The deactivation of + the ATM endpoint MAY occur as a side-effect of + deleting the FR/ATM IWF cross-connection table + row. Otherwise, 'destroy(6)' operation MUST fail + (error code 'inconsistentValue')." + ::= { frAtmIwfConnectionEntry 7 } + + frAtmIwfConnAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired operational state for this FR/ATM + interworked connection. + + up(1) = Activate the connection. Before the + activation can be completed, the + OperStatus/AdminStatus of the + corresponding endpoints MUST be + 'up(1)'. The activation of the + corresponding endpoints MAY occur as + a side-effect of activating the + FR/ATM IWF cross-connection. + + down(2) = Deactivate the connection. Before + the deactivation can be completed, + the atmVclAdminStatus of the + corresponding ATM endpoint MUST be + 'down(2)'. The deactivation of the + + + ATM endpoint MAY occur as a + side-effect of deactivating the + FR/ATM IWF cross-connection." + ::= { frAtmIwfConnectionEntry 8 } + + frAtmIwfConnAtm2FrOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of this + interworking connection in the ATM to frame + relay direction." + ::= { frAtmIwfConnectionEntry 9 } + + frAtmIwfConnAtm2FrLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + interworking connection entered its current + operational state in the ATM to FR direction. If + the current state was entered prior to the last + re-initialization of the local network management + subsystem, then this object contains a zero + value." + ::= { frAtmIwfConnectionEntry 10 } + + frAtmIwfConnFr2AtmOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of this + interworking connection in the frame relay + to ATM direction." + ::= { frAtmIwfConnectionEntry 11 } + + frAtmIwfConnFr2AtmLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + interworking connection entered its current + operational state in the FR to ATM direction. If + the current state was entered prior to the last + + + re-initialization of the local network management + subsystem, then this object contains a zero + value." + ::= { frAtmIwfConnectionEntry 12 } + + frAtmIwfConnectionDescriptor OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value represents a pointer to the relevant + descriptor in the IWF descriptor table. An + attempt to set this value to an inactive or non- + existent row in the Connection Descriptor Table + MUST fail (error code 'inconsistentValue')." + ::= { frAtmIwfConnectionEntry 13 } + + frAtmIwfConnFailedFrameTranslate OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of frames discarded + by the IWF because, while operating in Translation + Mode, the IWF is unable to decode the incoming + frame payload header according to the mapping + rules. (i.e., payload header not recognized by the + IWF). + + Frame relay frames are received in the frame relay + to ATM direction of the PVC. + + When operating in Transparent Mode, the IWF MUST + return noSuchInstance." + REFERENCE + "FRF.8 [17], Section 5.3.1" + ::= { frAtmIwfConnectionEntry 14 } + + frAtmIwfConnOverSizedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of frames discarded by the IWF because the + frame is too large to be processed by the AAL5 + segmentation procedure. Specifically, the frame + + + does not conform to the size specified in the + atmVccAal5CpcsTransmitSduSize object associated + with the atmVclEntry at the ATM endpoint. + Frame relay frames are received in the frame relay + to ATM direction of the PVC." + REFERENCE + "ATM MIB [21], atmVclTable + FRF.8 [17], 5.3.1.4" + ::= { frAtmIwfConnectionEntry 15 } + + frAtmIwfConnFailedAal5PduTranslate OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute counts the number of AAL5 PDUs + discarded by the IWF because, while operating in + Translation Mode, the IWF is unable to decode the + incoming AAL5 PDU payload header according to the + mapping rules. (i.e., payload header not + recognized by the IWF). + + AAL5 PDUs are received in the ATM to frame relay + direction of the PVC. + + When operating in Transparent Mode, the IWF MUST + return noSuchInstance." + REFERENCE + "FRF.8 [17], Section 5.3.1" + ::= { frAtmIwfConnectionEntry 16 } + + frAtmIwfConnOverSizedSDUs OBJECT-TYPE + SYNTAX Counter32 + UNITS "SDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of AAL5 SDUs discarded by the IWF because + the SDU is too large to be forwarded on the frame + relay segment of the connection. Specifically, + the frame does not conform to the size specified + in the frLportFragSize object of the FRS MIB [19]. + + AAL5 PDUs are received in the ATM to frame relay + direction of the PVC." + REFERENCE + "FRS MIB [19], frLportTable + + + FRF.8 [17], 5.3.1.4" + ::= { frAtmIwfConnectionEntry 17 } + + frAtmIwfConnCrcErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of AAL5 CPCS PDUs received with CRC-32 + errors on this AAL5 VCC at the IWF. + + AAL5 PDUs are received in the ATM to frame relay + direction of the PVC." + REFERENCE + "ATM MIB [21], atmVclTable" + ::= { frAtmIwfConnectionEntry 18 } + + frAtmIwfConnSarTimeOuts OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of partially re-assembled AAL5 CPCS + PDUs which were discarded on this AAL5 VCC at the + IWF because they were not fully re-assembled + within the required time period. If the re- + assembly timer is not supported, then this object + contains a zero value. + + AAL5 PDUs are received in the ATM to frame relay + direction of the PVC." + REFERENCE + "ATM MIB [21], atmVclTable" + ::= { frAtmIwfConnectionEntry 19 } + + -- + -- The FR/ATM PVC Service IWF Connection Descriptor Group + -- + -- The Frame Relay/ATM PVC Service Interworking Function + -- Connection Descriptor table. A descriptor provides the + -- attributes for a type of interworked connection. + -- + + frAtmIwfConnectionDescriptorIndexNext OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "This object contains an appropriate value to be + used for frAtmIwfConnectionDescriptorIndex when + creating entries in the + frAtmIwfConnectionDescriptorTable. The value 0 + indicates that no unassigned entries are + available. To obtain the + frAtmIwfConnectionDescriptorIndexNext value for a + new entry, the manager issues a management + protocol retrieval operation to obtain the current + value of this object. After each retrieval, the + agent should modify the value to the next + unassigned index." + ::= { frAtmIwfMIBObjects 3 } + + frAtmIwfConnectionDescriptorTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAtmIwfConnectionDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table in which each row represents a descriptor + for one type of Frame Relay/ATM interworking + connection. A descriptor may be assigned to zero + or more FR/ATM PVC service IWF connections." + ::= { frAtmIwfMIBObjects 4 } + + frAtmIwfConnectionDescriptorEntry OBJECT-TYPE + SYNTAX FrAtmIwfConnectionDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a descriptor in an interworking + connection between a frame relay PVC and an ATM + PVC." + INDEX { frAtmIwfConnectionDescriptorIndex } + ::= { frAtmIwfConnectionDescriptorTable 1 } + + FrAtmIwfConnectionDescriptorEntry ::= + SEQUENCE { + frAtmIwfConnectionDescriptorIndex Integer32, + frAtmIwfConnDescriptorRowStatus RowStatus, + frAtmIwfConnDeToClpMappingMode INTEGER, + frAtmIwfConnClpToDeMappingMode INTEGER, + frAtmIwfConnCongestionMappingMode INTEGER, + frAtmIwfConnEncapsulationMappingMode INTEGER, + frAtmIwfConnEncapsulationMappings BITS, + frAtmIwfConnFragAndReassEnabled INTEGER, + + + frAtmIwfConnArpTranslationEnabled INTEGER + } + + frAtmIwfConnectionDescriptorIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value to identify a descriptor in the + table " + ::= { frAtmIwfConnectionDescriptorEntry 1 } + + frAtmIwfConnDescriptorRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this table row. This object is + used to create or delete an entry in the + descriptor table. + + Creation of the row requires a row index (see + frAtmIwfConnectionDescriptorIndexNext). If not + explicitly set or in existence, all other columns + of the row will be created and initialized to the + default value. During creation, this object MAY + be set to 'createAndGo(4)' or 'createAndWait(5)'. + The object MUST contain the value 'active(1)' + before any connection table entry references the + row. + + To destroy a row in this table, this object is set + to the 'destroy(6)' action. Row destruction MUST + fail (error code 'inconsistentValue') if any + connection references the row." + ::= { frAtmIwfConnectionDescriptorEntry 2 } + + frAtmIwfConnDeToClpMappingMode OBJECT-TYPE + SYNTAX INTEGER { + mode1(1), + mode2Const0(2), + mode2Const1(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes which mode of translation + is in use for loss priority mapping in the frame + + + relay to ATM direction. + + mode1(1) = the DE field in the Q.922 core + frame shall be mapped to the ATM + CLP field of every cell + generated by the segmentation + process of the AAL5 PDU + containing the information of + that frame. + + mode2Contst0(2) = the ATM CLP field of every cell + generated by the segmentation + process of the AAL5 PDU + containing the information of + that frame shall be set to + constant 0. + + mode2Contst1(3) = the ATM CLP field of every cell + generated by the segmentation + process of the AAL5 PDU + containing the information of + that frame shall be set to + constant 1." + REFERENCE + "FRF.8 [17], Section 4.2.1" + DEFVAL { mode1 } + ::= { frAtmIwfConnectionDescriptorEntry 3 } + + frAtmIwfConnClpToDeMappingMode OBJECT-TYPE + SYNTAX INTEGER { + mode1(1), + mode2Const0(2), + mode2Const1(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes which mode of translation + is in use for loss priority mapping in the ATM to + frame relay direction. + + mode1(1) = if one or more cells in a frame + has its CLP field set, the DE + field of the Q.922 core frame + should be set. + + mode2Const0(2) = the DE field of the Q.922 core + frame should be set to the + + + constant 0. + + mode2Const1(3) = the DE field of the Q.922 core + frame should be set to the + constant 1." + REFERENCE + "FRF.8 [17], Section 4.2.2" + DEFVAL { mode1 } + ::= { frAtmIwfConnectionDescriptorEntry 4 } + + frAtmIwfConnCongestionMappingMode OBJECT-TYPE + SYNTAX INTEGER { + mode1(1), + mode2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes which mode of translation + is in use for forward congestion indication + mapping in the frame relay to ATM direction. + + mode1(1) = The FECN field in the Q.922 core frame + shall be mapped to the ATM EFCI field + of every cell generated by the + segmentation process of the AAL5 PDU + containing the information of that + frame. + + mode2(2) = The FECN field in the Q.922 core frame + shall not be mapped to the ATM EFCI + field of cells generated by the + segmentation process of the AAL5 PDU + containing the information of that + frame. The EFCI field is always set to + 'congestion not experienced'. + + In both of the modes above, if there is congestion + in the forward direction in the ATM layer within + the IWF, then the IWF can set the EFCI field to + 'congestion experienced'." + REFERENCE + "FRF.8 [17], Section 4.3.1.1" + DEFVAL { mode1 } + ::= { frAtmIwfConnectionDescriptorEntry 5 } + + frAtmIwfConnEncapsulationMappingMode OBJECT-TYPE + SYNTAX INTEGER { + + + transparentMode(1), + translationMode(2), + translationModeAll(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the mapping of + upper layer protocol encapsulation is enabled on + this interworking connection. + + transparentMode(1) = Forward the encapsulations + unaltered. + + translationMode(2) = Perform mapping between the + two encapsulations due to the + incompatibilities of the two + methods. Mapping is provided + for a subset of the potential + encapsulations as itemized in + frAtmIwfConnEncapsulationMapp + ings. + + translationModeAll(3) = Perform mapping between + the two encapsulations due to + the incompatibilities of the + two methods. All + encapsulations are + translated." + REFERENCE + "FRF.8 [17], Section 5.3" + DEFVAL { transparentMode } + ::= { frAtmIwfConnectionDescriptorEntry 6 } + + frAtmIwfConnEncapsulationMappings OBJECT-TYPE + SYNTAX BITS { + none (0), + bridgedPdus(1), + bridged802dot6(2), + bPdus(3), + routedIp(4), + routedOsi(5), + otherRouted(6), + x25Iso8202(7), + q933q2931(8) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "If upper layer protocol encapsulation mapping is + enabled on this interworking connection, then this + attribute enumerates which of the encapsulation + mappings are supported. + + none(0) = Transparent mode operation + bridgedPdus(1) = PID: 0x00-01,-07,-02 or -08 + bridged802dot6(2) = PID: 0x00-0B + bPdus(3) = PID: 0x00-0E or -0F + routedIp(4) = NLPID: OxCC + routedOsi(5) = NLPID: Ox81, 0x82 or 0x83 + otherRouted(6) = Other routed protocols + x25Iso8202(7) = X25 + q933q2931(8) = Q.933 and Q.2931" + REFERENCE + "FRF.8 [17], Section 5.3.1" + DEFVAL { { none } } + ::= { frAtmIwfConnectionDescriptorEntry 7 } + + frAtmIwfConnFragAndReassEnabled OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2)} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The attribute indicates whether fragmentation and + reassembly is enabled for this connection." + REFERENCE + "FRF.8 [17], Section 5.3.1.4" + DEFVAL { disabled } + ::= { frAtmIwfConnectionDescriptorEntry 8 } + + frAtmIwfConnArpTranslationEnabled OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2)} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The attribute indicates whether ARP translation + is enabled for this connection." + REFERENCE + "FRF.8 [17], Section 5.4" + DEFVAL { disabled } + ::= { frAtmIwfConnectionDescriptorEntry 9 } + + -- + -- Augmentation of ATM MIB VCL Endpoint Table (atmVclTable) + -- + frAtmIwfVclTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAtmIwfVclEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FR/ATM IWF VCL Table augments the ATM MIB VCL + Endpoint table." + ::= { frAtmIwfMIBObjects 5 } + + frAtmIwfVclEntry OBJECT-TYPE + SYNTAX FrAtmIwfVclEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the + agent. One entry exists for each ATM VCL managed + by the agent." + AUGMENTS { atmVclEntry } + ::= { frAtmIwfVclTable 1 } + + FrAtmIwfVclEntry ::= SEQUENCE { + frAtmIwfVclCrossConnectIdentifier Integer32 + } + + frAtmIwfVclCrossConnectIdentifier OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the index value of the + FR/ATM cross-connect table entry used to link the + ATM VCL with a frame relay PVC. + + Each row of the atmVclTable that is not cross- + connected with a frame relay PVC MUST return the + value zero when this object is read. + + In the case of (frame relay) point to (ATM) + multipoint, multiple ATM VCLs will have the same + value of this object, and all their cross- + connections are identified by entries that are + indexed by the same value of + frAtmIwfVclCrossConnectIdentifier in the + frAtmIwfConnectionTable of this MIB module. + + The value of this object is initialized by the + agent after the associated entries in the + frAtmIwfConnectionTable have been created." + ::= { frAtmIwfVclEntry 1 } + + + + -- + -- Frame Relay/ATM PVC Service Interworking NOTIFICATION + -- + + frAtmIwfConnStatusChange NOTIFICATION-TYPE + OBJECTS { frAtmIwfConnAdminStatus, + frAtmIwfConnAtm2FrOperStatus, + frAtmIwfConnFr2AtmOperStatus + } + STATUS current + DESCRIPTION + "An indication that the status of this + interworking connection has changed." + ::= { frAtmIwfTrapsPrefix 1 } + + -- + -- Conformance Information + -- + + -- + -- Compliance Statement For Equipment + -- + + frAtmIwfEquipmentCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for equipment that + implements the FR/ATM Interworking MIB." + + MODULE -- this module + MANDATORY-GROUPS { frAtmIwfBasicGroup, + frAtmIwfConnectionDescriptorGroup, + frAtmIwfAtmVclTableAugmentGroup, + frAtmIwfNotificationsGroup } + + OBJECT frAtmIwfConnDeToClpMappingMode + SYNTAX INTEGER { mode1(1) } + DESCRIPTION + "Only support for Mode 1 is REQUIRED." + + OBJECT frAtmIwfConnClpToDeMappingMode + SYNTAX INTEGER { mode1(1) } + DESCRIPTION + "Only support for Mode 1 is REQUIRED." + + OBJECT frAtmIwfConnCongestionMappingMode + SYNTAX INTEGER { mode1(1) } + DESCRIPTION + + + "Only support for Mode 1 is REQUIRED." + + OBJECT frAtmIwfConnEncapsulationMappingMode + SYNTAX INTEGER { transparentMode(1) } + DESCRIPTION + "Support for Translation Mode is OPTIONAL." + + OBJECT frAtmIwfConnEncapsulationMappings + SYNTAX BITS { none(0) } + DESCRIPTION + "The IWF may provide one, some or none of the + encapsulation translations defined in section + 5.3.1 of FRF.8 [17]." + + OBJECT frAtmIwfConnFragAndReassEnabled + SYNTAX INTEGER { disabled(2) } + DESCRIPTION + "Only support for Mode 1 is REQUIRED." + + OBJECT frAtmIwfConnArpTranslationEnabled + SYNTAX INTEGER { disabled(2) } + DESCRIPTION + "Support for ARP Translation is NOT REQUIRED." + + ::= { frAtmIwfCompliances 1 } + + -- + -- Compliance Statement For Service (CNM Interface) + -- + + frAtmIwfServiceCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for a CNM interface that + implements the FR/ATM Interworking MIB." + + MODULE -- this module + MANDATORY-GROUPS { frAtmIwfBasicGroup, + frAtmIwfConnectionDescriptorGroup, + frAtmIwfAtmVclTableAugmentGroup, + frAtmIwfNotificationsGroup } + + -- + -- Exceptions for each object type implemented for a + -- CNM view of the FR/ATM Interworking MIB + -- + OBJECT frAtmIwfConnAdminStatus + MIN-ACCESS read-only + + + DESCRIPTION + "Write access is not REQUIRED." + + OBJECT frAtmIwfConnDeToClpMappingMode + SYNTAX INTEGER { mode1(1) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Mode 1 is REQUIRED. Other modes are + OPTIONAL. Write access is NOT REQUIRED." + + OBJECT frAtmIwfConnClpToDeMappingMode + SYNTAX INTEGER { mode1(1) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Mode 1 is REQUIRED. Other modes are + OPTIONAL. Write access is NOT REQUIRED." + + OBJECT frAtmIwfConnCongestionMappingMode + SYNTAX INTEGER { mode1(1) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Mode 1 is REQUIRED. Other modes are + OPTIONAL. Write access is NOT REQUIRED." + + OBJECT frAtmIwfConnEncapsulationMappingMode + SYNTAX INTEGER { transparentMode(1) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Transparent Mode is REQUIRED. + Translation Mode is OPTIONAL. Write access is not + required." + + OBJECT frAtmIwfConnEncapsulationMappings + SYNTAX BITS { none(0) } + MIN-ACCESS read-only + DESCRIPTION + "The IWF may provide one, some or none of the + encapsulation translations defined in section + 5.3.1 of FRF.8 [17]. Write access is not + required." + + OBJECT frAtmIwfConnFragAndReassEnabled + SYNTAX INTEGER { disabled(2) } + MIN-ACCESS read-only + DESCRIPTION + "Support for Fragmentation and Reassembly is NOT + REQUIRED. Write access is not required." + + + + OBJECT frAtmIwfConnArpTranslationEnabled + SYNTAX INTEGER { disabled(2) } + MIN-ACCESS read-only + DESCRIPTION + "Support for ARP Translation is not required. + Write access is not required." + + OBJECT frAtmIwfConnRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { frAtmIwfCompliances 2 } + + -- + -- Units of Conformance + -- + + -- + -- Basic FR/ATM IWF PVC Connection Group + -- + frAtmIwfBasicGroup OBJECT-GROUP + OBJECTS { frAtmIwfConnIndexNext, + frAtmIwfConnAdminStatus, + frAtmIwfConnAtm2FrOperStatus, + frAtmIwfConnAtm2FrLastChange, + frAtmIwfConnFr2AtmOperStatus, + frAtmIwfConnFr2AtmLastChange, + frAtmIwfConnectionDescriptor, + frAtmIwfConnFailedFrameTranslate, + frAtmIwfConnOverSizedFrames, + frAtmIwfConnFailedAal5PduTranslate, + frAtmIwfConnOverSizedSDUs, + frAtmIwfConnCrcErrors, + frAtmIwfConnSarTimeOuts, + frAtmIwfConnRowStatus } + STATUS current + DESCRIPTION + "The collection of basic objects for configuration + and control of FR/ATM interworking connections." + ::= { frAtmIwfGroups 1 } + + -- + -- FR/ATM IWF PVC Connection Descriptor Group + -- + + frAtmIwfConnectionDescriptorGroup OBJECT-GROUP + OBJECTS { + + + frAtmIwfConnectionDescriptorIndexNext, + frAtmIwfConnDeToClpMappingMode, + frAtmIwfConnClpToDeMappingMode, + frAtmIwfConnCongestionMappingMode, + frAtmIwfConnEncapsulationMappingMode, + frAtmIwfConnEncapsulationMappings, + frAtmIwfConnFragAndReassEnabled, + frAtmIwfConnArpTranslationEnabled, + frAtmIwfConnDescriptorRowStatus + } + STATUS current + DESCRIPTION + "The collection of basic objects for specification + of FR/ATM interworking connection descriptors." + ::= { frAtmIwfGroups 2 } + + -- + -- ATM MIB VCL Endpoint Table Augmentation Group + -- + + frAtmIwfAtmVclTableAugmentGroup OBJECT-GROUP + OBJECTS { + frAtmIwfVclCrossConnectIdentifier + } + STATUS current + DESCRIPTION + "The ATM MIB VCL Endpoint Table AUGMENT object + contained in the FR/ATM PVC Service Interworking + MIB." + ::= { frAtmIwfGroups 3 } + + -- + -- Notification Group + -- + + frAtmIwfNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { frAtmIwfConnStatusChange } + STATUS current + DESCRIPTION + "The notification for FR/ATM interworking status + change." + ::= { frAtmIwfGroups 4 } + END diff --git a/mibs/ietf/FR-MFR-MIB b/mibs/ietf/FR-MFR-MIB new file mode 100644 index 0000000..da5dceb --- /dev/null +++ b/mibs/ietf/FR-MFR-MIB @@ -0,0 +1,917 @@ +FR-MFR-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, + NOTIFICATION-TYPE, transmission + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TestAndIncr, RowStatus + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InterfaceIndex, ifIndex + FROM IF-MIB; + + mfrMib MODULE-IDENTITY + LAST-UPDATED "200011300000Z" + ORGANIZATION "IETF Frame Relay Service MIB (frnetmib) + Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/frnetmib-charter.html + WG-email: frnetmib@sunroof.eng.sun.com + Subscribe: frnetmib-request@sunroof.eng.sun.com + Email Archive: ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + Chair: Andy Malis + Vivace Networks + Email: Andy.Malis@vivacenetworks.com + + WG editor: Prayson Pate + Overture Networks + Email: prayson.pate@overturenetworks.com + + Co-author: Bob Lynch + Overture Networks + + + EMail: bob.lynch@overturenetworks.com + + Co-author: Kenneth Rehbehn + Megisto Systems, Inc. + EMail: krehbehn@megisto.com" + + DESCRIPTION + "This is the MIB used to control and monitor the multilink + frame relay (MFR) function described in FRF.16." + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Revision History + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + REVISION "200011300000Z" + DESCRIPTION + "Published as RFC 3020." + + ::= { transmission 47 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Textual Conventions + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + MfrBundleLinkState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The possible states for a bundle link, as defined in + Annex A of FRF.16." + REFERENCE "FRF.16 Annex A" + SYNTAX INTEGER { + mfrBundleLinkStateAddSent (1), + mfrBundleLinkStateAddRx (2), + mfrBundleLinkStateAddAckRx (3), + mfrBundleLinkStateUp (4), + mfrBundleLinkStateIdlePending (5), + mfrBundleLinkStateIdle (6), + mfrBundleLinkStateDown (7), + mfrBundleLinkStateDownIdle (8) + } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Object Identifiers + + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrMibScalarObjects OBJECT IDENTIFIER ::= { mfrMib 1 } + mfrMibBundleObjects OBJECT IDENTIFIER ::= { mfrMib 2 } + mfrMibBundleLinkObjects OBJECT IDENTIFIER ::= { mfrMib 3 } + mfrMibTraps OBJECT IDENTIFIER ::= { mfrMib 4 } + mfrMibConformance OBJECT IDENTIFIER ::= { mfrMib 5 } + + mfrMibTrapsPrefix OBJECT IDENTIFIER ::= { mfrMibTraps 0 } + + mfrMibGroups OBJECT IDENTIFIER ::= { mfrMibConformance 1 } + mfrMibCompliances OBJECT IDENTIFIER ::= { mfrMibConformance 2 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Scalars + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrBundleMaxNumBundles OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to inform the manager of the + maximum number of bundles supported by this device." + ::= { mfrMibScalarObjects 1 } + + mfrBundleNextIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assist the manager in + selecting a value for mfrBundleIndex during row creation + in the mfrBundleTable. It can also be used to avoid race + conditions with multiple managers trying to create + rows in the table (see RFC 2494 [RFC2494] for one such + alogrithm)." + REFERENCE "RFC 2494" + ::= { mfrMibScalarObjects 2 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Bundle Table + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + + mfrBundleTable OBJECT-TYPE + SYNTAX SEQUENCE OF MfrBundleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The bundle configuration and status table. There + is a one-to-one correspondence between a bundle + and an interface represented in the ifTable. + + The following objects of the ifTable have specific + meaning for an MFR bundle: + ifAdminStatus - the bundle admin status + ifOperStatus - the bundle operational status + ifSpeed - the current bandwidth of the bundle + ifInUcastPkts - the number of frames received + on the bundle + ifOutUcastPkts - the number of frames transmitted + on the bundle + ifInErrors - frame (not fragment) errors + ifOutErrors - frame (not fragment) errors + " + ::= { mfrMibBundleObjects 3 } + + mfrBundleEntry OBJECT-TYPE + SYNTAX MfrBundleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the bundle table." + INDEX { mfrBundleIndex } + ::= { mfrBundleTable 1 } + + MfrBundleEntry ::= + SEQUENCE { + mfrBundleIndex + Integer32, + mfrBundleIfIndex + InterfaceIndex, + mfrBundleRowStatus + RowStatus, + mfrBundleNearEndName + SnmpAdminString, + mfrBundleFragmentation + INTEGER, + mfrBundleMaxFragSize + Integer32, + mfrBundleTimerHello + INTEGER, + + + mfrBundleTimerAck + INTEGER, + mfrBundleCountMaxRetry + INTEGER, + mfrBundleActivationClass + INTEGER, + mfrBundleThreshold + Integer32, + mfrBundleMaxDiffDelay + Integer32, + mfrBundleSeqNumSize + INTEGER, + mfrBundleMaxBundleLinks + Integer32, + mfrBundleLinksConfigured + Integer32, + mfrBundleLinksActive + Integer32, + mfrBundleBandwidth + Integer32, + mfrBundleFarEndName + SnmpAdminString, + mfrBundleResequencingErrors + Counter32 + } + + mfrBundleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index into the table. While this corresponds + to an entry in the ifTable, the value of mfrBundleIndex + need not match that of the ifIndex in the ifTable. + A manager can use mfrBundleNextIndex to select a unique + mfrBundleIndex for creating a new row." + ::= { mfrBundleEntry 1 } + + mfrBundleIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value must match an entry in the interface + table whose ifType must be set to frf16MfrBundle(163). + + For example: if the value of mfrBundleIfIndex is 10, + then a corresponding entry should be present in + + + the ifTable with an index of 10 and an ifType of 163." + ::= { mfrBundleEntry 2 } + + mfrBundleRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mfrBundleRowStatus object allows create, change, + and delete operations on bundle entries." + REFERENCE "RFC 1903" + ::= { mfrBundleEntry 3 } + + mfrBundleNearEndName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured name of the bundle." + REFERENCE "FRF.16 section 3.4.1" + ::= { mfrBundleEntry 4 } + + mfrBundleFragmentation OBJECT-TYPE + SYNTAX INTEGER { + enable (1), + disable (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls whether the bundle performs/accepts + fragmentation and re-assembly. The possible + values are: + + enable(1) - Bundle links will fragment frames + + disable(2) - Bundle links will not fragment + frames." + DEFVAL { disable } + ::= { mfrBundleEntry 5 } + + mfrBundleMaxFragSize OBJECT-TYPE + SYNTAX Integer32 (-1..8184) + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum fragment size supported. Note that this + + + is only valid if mfrBundleFragmentation is set to enable(1). + + Zero is not a valid fragment size. + + A bundle that does not support fragmentation must return + this object with a value of -1." + DEFVAL { -1 } + ::= { mfrBundleEntry 6 } + + mfrBundleTimerHello OBJECT-TYPE + SYNTAX INTEGER (1..180) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured MFR Hello Timer value." + REFERENCE "FRF.16 section 4.3.8.1" + DEFVAL { 10 } + ::= { mfrBundleEntry 7 } + + mfrBundleTimerAck OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured MFR T_ACK value." + REFERENCE "FRF.16 section 4.3.8.2" + DEFVAL { 4 } + ::= { mfrBundleEntry 8 } + + mfrBundleCountMaxRetry OBJECT-TYPE + SYNTAX INTEGER (1..5) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MFR N_MAX_RETRY value." + REFERENCE "FRF.16 section 4.3.8.3" + DEFVAL { 2 } + ::= { mfrBundleEntry 9 } + + mfrBundleActivationClass OBJECT-TYPE + SYNTAX INTEGER { + mfrBundleActivationClassA (1), + mfrBundleActivationClassB (2), + mfrBundleActivationClassC (3), + mfrBundleActivationClassD (4) + } + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls the conditions under which the bundle is activated. + The following settings are available: + + mfrBundleActivationClassA(1) - at least one must link up + mfrBundleActivationClassB(2) - all links must be up + mfrBundleActivationClassC(3) - a certain number must be + up. Refer to + mfrBundleThreshold for + the required number. + mfrBundleActivationClassD(4) - custom (implementation + specific)." + REFERENCE "FRF.16 section 4.2.2.1" + DEFVAL { mfrBundleActivationClassA } + ::= { mfrBundleEntry 10 } + + mfrBundleThreshold OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + UNITS "Bundle Links" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the number of links that must be in operational + 'up' state before the bundle will transition to an + operational up/active state. If the number of + operational 'up' links falls below this value, + then the bundle will transition to an inactive + state. + + Note - this is only valid when mfrBundleActivationClass + is set to mfrBundleActivationClassC or, depending upon the + implementation, to mfrBundleActivationClassD. A bundle that + is not set to one of these must return this object with a + value of -1." + REFERENCE "FRF.16 section 4.2.2.1" + DEFVAL { -1 } + ::= { mfrBundleEntry 11 } + + mfrBundleMaxDiffDelay OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + UNITS "Milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum delay difference between the bundle + links. + + + A value of -1 indicates that this object does not contain + a valid value" + DEFVAL { -1 } + ::= { mfrBundleEntry 12 } + + mfrBundleSeqNumSize OBJECT-TYPE + SYNTAX INTEGER { + seqNumSize12bit (1), + seqNumSize24bit (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls whether the standard FRF.12 12-bit + sequence number is used or the optional 24-bit + sequence number." + REFERENCE "FRFTC/99-194" + DEFVAL { seqNumSize12bit } + ::= { mfrBundleEntry 13 } + + mfrBundleMaxBundleLinks OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bundle Links" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of bundle links supported for + this bundle." + ::= { mfrBundleEntry 14 } + + mfrBundleLinksConfigured OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bundle Links" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of links configured for the bundle." + ::= { mfrBundleEntry 15 } + + mfrBundleLinksActive OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + UNITS "Bundle Links" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of links that are active." + ::= { mfrBundleEntry 16 } + + + + mfrBundleBandwidth OBJECT-TYPE + SYNTAX Integer32 + UNITS "Bits/Sec" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of available bandwidth on the bundle" + ::= { mfrBundleEntry 17 } + + mfrBundleFarEndName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the bundle received from the far end." + REFERENCE "FRF.16 section 3.4.1" + ::= { mfrBundleEntry 18 } + + mfrBundleResequencingErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Error Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of resequencing errors. Each event + may correspond to multiple lost frames. Example: + Say sequence number 56, 59 and 60 is received for DLCI 100. + It is decided by some means that sequence 57 and 58 is lost. + This counter should then be incremented by ONE, even though + two frames were lost." + ::= { mfrBundleEntry 19 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- ifIndex Mapping to Bundle Index Table + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrBundleIfIndexMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF MfrBundleIfIndexMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table mapping the values of ifIndex to the + mfrBundleIndex. This is required in order to find + the mfrBundleIndex given an ifIndex. The mapping of + mfrBundleIndex to ifIndex is provided by the + mfrBundleIfIndex entry in the mfrBundleTable." + + + ::= { mfrMibBundleObjects 4 } + + mfrBundleIfIndexMappingEntry OBJECT-TYPE + SYNTAX MfrBundleIfIndexMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row describes one ifIndex to mfrBundleIndex mapping." + INDEX { ifIndex } + ::= { mfrBundleIfIndexMappingTable 1 } + + MfrBundleIfIndexMappingEntry ::= + SEQUENCE { + mfrBundleIfIndexMappingIndex + Integer32 + } + + mfrBundleIfIndexMappingIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mfrBundleIndex of the given ifIndex." + ::= { mfrBundleIfIndexMappingEntry 2 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Bundle Link Table + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrBundleLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF MfrBundleLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The bundle link configuration and status table. There + is a one-to-one correspondence between a bundle link + and a physical interface represented in the ifTable. The + ifIndex of the physical interface is used to index the + bundle link table, and to create rows. + + The following objects of the ifTable have specific + meaning for an MFR bundle link: + + ifAdminStatus - the bundle link admin status + ifOperStatus - the bundle link operational + status + + + ifSpeed - the bandwidth of the bundle + link interface + ifInUcastPkts - the number of frames received + on the bundle link + ifOutUcastPkts - the number of frames transmitted + on the bundle link + ifInErrors - frame and fragment errors + ifOutErrors - frame and fragment errors" + ::= { mfrMibBundleLinkObjects 1 } + + mfrBundleLinkEntry OBJECT-TYPE + SYNTAX MfrBundleLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the bundle link table." + INDEX { ifIndex } + ::= { mfrBundleLinkTable 1 } + + MfrBundleLinkEntry ::= + SEQUENCE { + mfrBundleLinkRowStatus + RowStatus, + mfrBundleLinkConfigBundleIndex + Integer32, + mfrBundleLinkNearEndName + SnmpAdminString, + mfrBundleLinkState + MfrBundleLinkState, + mfrBundleLinkFarEndName + SnmpAdminString, + mfrBundleLinkFarEndBundleName + SnmpAdminString, + mfrBundleLinkDelay + Integer32, + mfrBundleLinkFramesControlTx + Counter32, + mfrBundleLinkFramesControlRx + Counter32, + mfrBundleLinkFramesControlInvalid + Counter32, + mfrBundleLinkTimerExpiredCount + Counter32, + mfrBundleLinkLoopbackSuspected + Counter32, + mfrBundleLinkUnexpectedSequence + Counter32, + mfrBundleLinkMismatch + + + Counter32 + } + + mfrBundleLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mfrBundleLinkRowStatus object allows create, change, + and delete operations on mfrBundleLink entries. + + The create operation must fail if no physical interface + is associated with the bundle link." + ::= { mfrBundleLinkEntry 1 } + + mfrBundleLinkConfigBundleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mfrBundleLinkConfigBundleIndex object allows + the manager to control the bundle to which the bundle + link is assigned. If no value were in this field, then + the bundle would remain in NOT_READY rowStatus and be + unable to go to active. With an appropriate mfrBundleIndex + in this field, then we could put the mfrBundleLink row in + NOT_IN_SERVICE or ACTIVE rowStatus." + ::= { mfrBundleLinkEntry 2 } + + mfrBundleLinkNearEndName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured bundle link name that is sent to the far end." + ::= { mfrBundleLinkEntry 3 } + + mfrBundleLinkState OBJECT-TYPE + SYNTAX MfrBundleLinkState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current bundle link state as defined by the MFR protocol + described in Annex A of FRF.16." + REFERENCE "FRF.16 Annex A" + ::= { mfrBundleLinkEntry 4 } + + mfrBundleLinkFarEndName OBJECT-TYPE + + + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of bundle link received from far end." + REFERENCE "FRF.16 section 3.4.2" + ::= { mfrBundleLinkEntry 5 } + + mfrBundleLinkFarEndBundleName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of far end bundle for this link received from far end." + REFERENCE "FRF.16 section 3.4.1" + ::= { mfrBundleLinkEntry 6 } + + mfrBundleLinkDelay OBJECT-TYPE + SYNTAX Integer32 (-1..2147483647) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current round-trip delay for this bundle link. The + value -1 is returned when an implementation does not + support measurement of the bundle link delay." + REFERENCE "FRF.16 section 3.4.4" + ::= { mfrBundleLinkEntry 7 } + + mfrBundleLinkFramesControlTx OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of MFR control frames sent." + REFERENCE "FRF.16 section 3.2" + ::= { mfrBundleLinkEntry 8 } + + mfrBundleLinkFramesControlRx OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of valid MFR control frames received." + REFERENCE "FRF.16 section 3.2" + ::= { mfrBundleLinkEntry 9 } + + + mfrBundleLinkFramesControlInvalid OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid MFR control frames received." + REFERENCE "FRF.16 section 3.2" + ::= { mfrBundleLinkEntry 10 } + + mfrBundleLinkTimerExpiredCount OBJECT-TYPE + SYNTAX Counter32 + UNITS "Timer Expiration Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the T_HELLO or T_ACK timers expired." + REFERENCE "FRF.16 section 4.3.8.1 and 4.3.8.2" + ::= { mfrBundleLinkEntry 11 } + + mfrBundleLinkLoopbackSuspected OBJECT-TYPE + SYNTAX Counter32 + UNITS "Loopback Suspected Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a loopback has been suspected + (based upon the use of magic numbers)." + REFERENCE "FRF.16 section 4.3.7" + ::= { mfrBundleLinkEntry 12 } + + mfrBundleLinkUnexpectedSequence OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of data MFR frames discarded because the sequence + number of the frame for a DLCI was less than (delayed frame) + or equal to (duplicate frame) the one expected for that DLCI. + + Example: + Say frames with sequence numbers 56, 58, 59 is received for + DLCI 100. While waiting for sequence number 57 another frame + with sequence number 58 arrives. Frame 58 is discarded and + the counter is incremented." + REFERENCE "FRF.16 section 4.2.3.2" + ::= { mfrBundleLinkEntry 13 } + + + mfrBundleLinkMismatch OBJECT-TYPE + SYNTAX Counter32 + UNITS "Bundle Name Mismatch Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the unit has been notified by the + remote peer that the bundle name is inconsistent with other + bundle links attached to the far-end bundle." + REFERENCE "FRF.16 section 4.3.2.4" + ::= { mfrBundleLinkEntry 14 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Notifications/Traps + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrMibTrapBundleLinkMismatch NOTIFICATION-TYPE + OBJECTS { + mfrBundleNearEndName, + mfrBundleFarEndName, + mfrBundleLinkNearEndName, + mfrBundleLinkFarEndName, + mfrBundleLinkFarEndBundleName + } + STATUS current + DESCRIPTION + "This trap indicates that a bundle link mismatch has + been detected. The following objects are reported: + + mfrBundleNearEndName: configured name of near end bundle + + mfrBundleFarEndName: previously reported name of + far end bundle + + mfrBundleLinkNearEndName: configured name of near end bundle + + mfrBundleLinkFarEndName: reported name of far end bundle + + mfrBundleLinkFarEndBundleName: currently reported name of + far end bundle + + Note: that the configured items may have been configured + automatically. + + Note: The mfrBundleLinkMismatch counter is incremented when + the trap is sent." + + + REFERENCE "FRF.16 section 4.3.2.4" + ::= { mfrMibTrapsPrefix 1 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Conformance/Compliance + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + mfrMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for equipment that implements + the FRF16 MIB. All of the current groups are mandatory, + but a number of objects may be read-only if the + implementation does not allow configuration." + MODULE -- this module + MANDATORY-GROUPS { + mfrMibBundleGroup, + mfrMibBundleLinkGroup, + mfrMibTrapGroup + } + + OBJECT mfrBundleFragmentation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported." + + OBJECT mfrBundleMaxFragSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported. + A value of -1 indicates that the value is not applicable." + + OBJECT mfrBundleThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported. + A value of -1 indicates that the value is not applicable." + + OBJECT mfrBundleMaxDiffDelay + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported." + + + OBJECT mfrBundleSeqNumSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, but the value used must be + reported. + A value of -1 indicates that the value is not applicable." + + ::= { mfrMibCompliances 1 } + + -- --------------------------------------------------------- + -- --------------------------------------------------------- + -- Units of Conformance + -- --------------------------------------------------------- + -- --------------------------------------------------------- + + + mfrMibBundleGroup OBJECT-GROUP + OBJECTS { + mfrBundleMaxNumBundles, + mfrBundleNextIndex, + mfrBundleIfIndex, + mfrBundleRowStatus, + mfrBundleNearEndName, + mfrBundleFragmentation, + mfrBundleMaxFragSize, + mfrBundleTimerHello, + mfrBundleTimerAck, + mfrBundleCountMaxRetry, + mfrBundleActivationClass, + mfrBundleThreshold, + mfrBundleMaxDiffDelay, + mfrBundleMaxBundleLinks, + mfrBundleLinksConfigured, + mfrBundleLinksActive, + mfrBundleBandwidth, + mfrBundleSeqNumSize, + mfrBundleFarEndName, + mfrBundleResequencingErrors, + mfrBundleIfIndexMappingIndex + } + STATUS current + DESCRIPTION + "Group of objects describing bundles." + ::= { mfrMibGroups 1 } + + mfrMibBundleLinkGroup OBJECT-GROUP + OBJECTS { + mfrBundleLinkRowStatus, + + + mfrBundleLinkConfigBundleIndex, + mfrBundleLinkNearEndName, + mfrBundleLinkState, + mfrBundleLinkFarEndName, + mfrBundleLinkFarEndBundleName, + mfrBundleLinkDelay, + mfrBundleLinkFramesControlTx, + mfrBundleLinkFramesControlRx, + mfrBundleLinkFramesControlInvalid, + mfrBundleLinkTimerExpiredCount, + mfrBundleLinkLoopbackSuspected, + mfrBundleLinkUnexpectedSequence, + mfrBundleLinkMismatch + } + STATUS current + DESCRIPTION + "Group of objects describing bundle links." + ::= { mfrMibGroups 2 } + + mfrMibTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mfrMibTrapBundleLinkMismatch + } + STATUS current + DESCRIPTION + "Group of objects describing notifications (traps)." + ::= { mfrMibGroups 3 } + +END diff --git a/mibs/ietf/FRAME-RELAY-DTE-MIB b/mibs/ietf/FRAME-RELAY-DTE-MIB new file mode 100644 index 0000000..310ffae --- /dev/null +++ b/mibs/ietf/FRAME-RELAY-DTE-MIB @@ -0,0 +1,1039 @@ +FRAME-RELAY-DTE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Integer32, NOTIFICATION-TYPE FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TimeStamp FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + transmission FROM RFC1213-MIB + InterfaceIndex FROM IF-MIB; + +-- Frame Relay DTE MIB + +frameRelayDTE MODULE-IDENTITY + LAST-UPDATED "9705010229Z" -- Thu May 1 02:29:46 PDT 1997 + ORGANIZATION "IETF IPLPDN Working Group" + CONTACT-INFO + " Caralyn Brown + Postal: Cadia Networks, Inc. + 1 Corporate Drive + Andover, Massachusetts 01810 + Tel: +1 508 689 2400 x133 + E-Mail: cbrown@cadia.com + + Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 408 526 425 + E-Mail: fred@cisco.com" + DESCRIPTION + "The MIB module to describe the use of a Frame Relay + interface by a DTE." + REVISION "9705010229Z" -- Thu May 1 02:29:46 PDT 1997 + DESCRIPTION + "Converted from SMIv1 to SMIv2. (Thus, indices are + read-only rather than being not-accessible.) Added + objects and made clarifications based on implementation + experience." + + REVISION "9204010000Z" + DESCRIPTION + "Published as RFC 1315, the initial version of this MIB + module." + ::= { transmission 32 } + +-- +-- the range of a Data Link Connection Identifier +-- +DLCI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The range of DLCI values. Note that this varies by + interface configuration; normally, interfaces may use + 0..1023, but may be configured to use ranges as large + as 0..2^23." + SYNTAX Integer32(0..8388607) + + + +-- + +-- Data Link Connection Management Interface + +-- The variables that configure the DLC Management Interface. + +frDlcmiTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrDlcmiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Parameters for the Data Link Connection Management + Interface for the frame relay service on this + interface." + REFERENCE + "American National Standard T1.617-1991, Annex D" + ::= { frameRelayDTE 1 } + +frDlcmiEntry OBJECT-TYPE + SYNTAX FrDlcmiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Parameters for a particular Data Link Connection + Management Interface." + INDEX { frDlcmiIfIndex } + ::= { frDlcmiTable 1 } + +FrDlcmiEntry ::= + SEQUENCE { + frDlcmiIfIndex InterfaceIndex, + frDlcmiState INTEGER, + frDlcmiAddress INTEGER, + frDlcmiAddressLen INTEGER, + frDlcmiPollingInterval Integer32, + frDlcmiFullEnquiryInterval Integer32, + frDlcmiErrorThreshold Integer32, + frDlcmiMonitoredEvents Integer32, + frDlcmiMaxSupportedVCs DLCI, + frDlcmiMulticast INTEGER, + frDlcmiStatus INTEGER, + frDlcmiRowStatus RowStatus +} + + +frDlcmiIfIndex OBJECT-TYPE + + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the corresponding ifEntry." + ::= { frDlcmiEntry 1 } + + +frDlcmiState OBJECT-TYPE + SYNTAX INTEGER { + noLmiConfigured (1), + lmiRev1 (2), + ansiT1617D (3), -- ANSI T1.617 Annex D + ansiT1617B (4), -- ANSI T1.617 Annex B + itut933A (5), -- CCITT Q933 Annex A + ansiT1617D1994 (6) -- ANSI T1.617a-1994 Annex D + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable states which Data Link Connection + Management scheme is active (and by implication, what + DLCI it uses) on the Frame Relay interface." + REFERENCE + "American National Standard T1.617-1991, American + National Standard T1.617a-1994, ITU-T Recommendation + Q.933 (03/93)." + + ::= { frDlcmiEntry 2 } + +frDlcmiAddress OBJECT-TYPE + SYNTAX INTEGER { + q921 (1), -- 13 bit DLCI + q922March90 (2), -- 11 bit DLCI + q922November90 (3), -- 10 bit DLCI + q922 (4) -- Final Standard + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable states which address format is in use on + the Frame Relay interface." + ::= { frDlcmiEntry 3 } + + +frDlcmiAddressLen OBJECT-TYPE + SYNTAX INTEGER { + twoOctets (2), + threeOctets (3), + fourOctets (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable states the address length in octets. In + the case of Q922 format, the length indicates the + entire length of the address including the control + portion." + ::= { frDlcmiEntry 4 } + + +frDlcmiPollingInterval OBJECT-TYPE + SYNTAX Integer32 (5..30) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the number of seconds between successive + status enquiry messages." + REFERENCE + "American National Standard T1.617-1991, Section D.7 + Timer T391." + DEFVAL { 10 } + ::= { frDlcmiEntry 5 } + +frDlcmiFullEnquiryInterval OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Number of status enquiry intervals that pass before + issuance of a full status enquiry message." + REFERENCE + "American National Standard T1.617-1991, Section D.7 + Counter N391." + DEFVAL { 6 } + ::= { frDlcmiEntry 6 } + + +frDlcmiErrorThreshold OBJECT-TYPE + SYNTAX Integer32 (1..10) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the maximum number of unanswered Status + Enquiries the equipment shall accept before declaring + the interface down." + REFERENCE + "American National Standard T1.617-1991, Section D.5.1 + Counter N392." + DEFVAL { 3 } + ::= { frDlcmiEntry 7 } + + +frDlcmiMonitoredEvents OBJECT-TYPE + SYNTAX Integer32 (1..10) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the number of status polling intervals over + which the error threshold is counted. For example, if + within 'MonitoredEvents' number of events the station + receives 'ErrorThreshold' number of errors, the + interface is marked as down." + REFERENCE + "American National Standard T1.617-1991, Section D.5.2 + Counter N393." + DEFVAL { 4 } + ::= { frDlcmiEntry 8 } + +frDlcmiMaxSupportedVCs OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of Virtual Circuits allowed for + this interface. Usually dictated by the Frame Relay + network. + + In response to a SET, if a value less than zero or + higher than the agent's maximal capability is + configured, the agent should respond badValue" + ::= { frDlcmiEntry 9 } + + +frDlcmiMulticast OBJECT-TYPE + SYNTAX INTEGER { + nonBroadcast (1), + broadcast (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This indicates whether the Frame Relay interface is + using a multicast service." + ::= { frDlcmiEntry 10 } + + + +frDlcmiStatus OBJECT-TYPE + SYNTAX INTEGER { + running (1), -- init complete, system running + fault (2), -- error threshold exceeded + initializing (3) -- system start up + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates the status of the Frame Relay interface + as determined by the performance of the dlcmi. If no + dlcmi is running, the Frame Relay interface will stay + in the running state indefinitely." + ::= { frDlcmiEntry 11 } + +frDlcmiRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "SNMP Version 2 Row Status Variable. Writable objects + in the table may be written in any RowStatus state." + ::= { frDlcmiEntry 12 } + + +-- +-- A Frame Relay service is a multiplexing service. Data +-- Link Connection Identifiers enumerate virtual circuits +-- (permanent or dynamic) which are layered onto the underlying +-- circuit, represented by ifEntry. Therefore, each of the entries +-- in the Standard MIB's Interface Table with an IfType of +-- Frame Relay represents a Q.922 interface. Zero or more +-- virtual circuits are layered onto this interface and provide +-- interconnection with various remote destinations. +-- Each such virtual circuit is represented by an entry in the +-- circuit table. The management virtual circuit (i.e. DLCI 0) +-- is a virtual circuit by this definition and will be represented +-- with an entry in the circuit table. + +-- Circuit Table + +-- The table describing the use of the DLCIs attached to +-- each Frame Relay Interface. + +frCircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about specific Data + Link Connections (DLC) or virtual circuits." + ::= { frameRelayDTE 2 } + +frCircuitEntry OBJECT-TYPE + SYNTAX FrCircuitEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single Data Link + Connection. Discontinuities in the counters contained + in this table are indicated by the value in + frCircuitCreationTime." + INDEX { frCircuitIfIndex, frCircuitDlci } + ::= { frCircuitTable 1 } + + +FrCircuitEntry ::= + SEQUENCE { + frCircuitIfIndex InterfaceIndex, + frCircuitDlci DLCI, + frCircuitState INTEGER, + frCircuitReceivedFECNs Counter32, + frCircuitReceivedBECNs Counter32, + frCircuitSentFrames Counter32, + frCircuitSentOctets Counter32, + frCircuitReceivedFrames Counter32, + frCircuitReceivedOctets Counter32, + frCircuitCreationTime TimeStamp, + frCircuitLastTimeChange TimeStamp, + frCircuitCommittedBurst Integer32, + frCircuitExcessBurst Integer32, + frCircuitThroughput Integer32, + frCircuitMulticast INTEGER, + frCircuitType INTEGER, + frCircuitDiscards Counter32, + frCircuitReceivedDEs Counter32, + frCircuitSentDEs Counter32, + frCircuitLogicalIfIndex InterfaceIndex, + frCircuitRowStatus RowStatus +} + + +frCircuitIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex Value of the ifEntry this virtual circuit + is layered onto." + ::= { frCircuitEntry 1 } + +frCircuitDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Data Link Connection Identifier for this virtual + circuit." + REFERENCE + "American National Standard T1.618-1991, Section 3.3.6" + ::= { frCircuitEntry 2 } + + +frCircuitState OBJECT-TYPE + SYNTAX INTEGER { + + invalid (1), + active (2), + inactive (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the particular virtual circuit is + operational. In the absence of a Data Link Connection + Management Interface, virtual circuit entries (rows) + may be created by setting virtual circuit state to + 'active', or deleted by changing Circuit state to + 'invalid'. + + Whether or not the row actually disappears is left to + the implementation, so this object may actually read as + 'invalid' for some arbitrary length of time. It is + also legal to set the state of a virtual circuit to + 'inactive' to temporarily disable a given circuit. + + The use of 'invalid' is deprecated in this SNMP Version + 2 MIB, in favor of frCircuitRowStatus." + DEFVAL { active } + ::= { frCircuitEntry 3 } + +frCircuitReceivedFECNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames received from the network indicating + forward congestion since the virtual circuit was + created. This occurs when the remote DTE sets the FECN + flag, or when a switch in the network enqueues the + frame to a trunk whose transmission queue is + congested." + REFERENCE + "American National Standard T1.618-1991, Section 3.3.3" + ::= { frCircuitEntry 4 } + + +frCircuitReceivedBECNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "Number of frames received from the network indicating + backward congestion since the virtual circuit was + created. This occurs when the remote DTE sets the BECN + flag, or when a switch in the network receives the + frame from a trunk whose transmission queue is + congested." + REFERENCE + "American National Standard T1.618-1991, Section 3.3.4" + ::= { frCircuitEntry 5 } + + +frCircuitSentFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent from this virtual circuit + since it was created." + ::= { frCircuitEntry 6 } + + +frCircuitSentOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets sent from this virtual circuit + since it was created. Octets counted are the full + frame relay header and the payload, but do not include + the flag characters or CRC." + ::= { frCircuitEntry 7 } + + +frCircuitReceivedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames received over this virtual circuit + since it was created." + ::= { frCircuitEntry 8 } + + +frCircuitReceivedOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of octets received over this virtual circuit + since it was created. Octets counted include the full + frame relay header, but do not include the flag + characters or the CRC." + ::= { frCircuitEntry 9 } + + +frCircuitCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the virtual circuit was + created, whether by the Data Link Connection Management + Interface or by a SetRequest." + ::= { frCircuitEntry 10 } + +frCircuitLastTimeChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when last there was a change in + the virtual circuit state" + ::= { frCircuitEntry 11 } + + +frCircuitCommittedBurst OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the maximum amount of data, in + bits, that the network agrees to transfer under normal + conditions, during the measurement interval." + REFERENCE + "American National Standard T1.617-1991, Section + 6.5.19" + DEFVAL { 0 } -- the default indicates no commitment + ::= { frCircuitEntry 12 } + + +frCircuitExcessBurst OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the maximum amount of + uncommitted data bits that the network will attempt to + deliver over the measurement interval. + + By default, if not configured when creating the entry, + the Excess Information Burst Size is set to the value + of ifSpeed." + REFERENCE + "American National Standard T1.617-1991, Section + 6.5.19" + ::= { frCircuitEntry 13 } + + +frCircuitThroughput OBJECT-TYPE + SYNTAX Integer32(0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Throughput is the average number of 'Frame Relay + Information Field' bits transferred per second across a + user network interface in one direction, measured over + the measurement interval. + + If the configured committed burst rate and throughput + are both non-zero, the measurement interval, T, is + T=frCircuitCommittedBurst/frCircuitThroughput. + + If the configured committed burst rate and throughput + are both zero, the measurement interval, T, is + T=frCircuitExcessBurst/ifSpeed." + REFERENCE + "American National Standard T1.617-1991, Section + 6.5.19" + DEFVAL {0} -- the default value of Throughput is + -- "no commitment". + ::= { frCircuitEntry 14 } + + +frCircuitMulticast OBJECT-TYPE + SYNTAX INTEGER { + unicast (1), + oneWay (2), + twoWay (3), + nWay (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This indicates whether this VC is used as a unicast VC + (i.e. not multicast) or the type of multicast service + subscribed to" + REFERENCE + "Frame Relay PVC Multicast Service and Protocol + Description Implementation: FRF.7 Frame Relay Forum + Technical Committe October 21, 1994" + DEFVAL {unicast} + -- the default value of frCircuitMulticast is + -- "unicast" (not a multicast VC). + ::= { frCircuitEntry 15 } + + +frCircuitType OBJECT-TYPE + SYNTAX INTEGER { + static (1), + dynamic (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indication of whether the VC was manually created + (static), or dynamically created (dynamic) via the data + link control management interface." + ::= { frCircuitEntry 16 } + + +frCircuitDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound frames dropped because of format + errors, or because the VC is inactive." + ::= { frCircuitEntry 17 } + + +frCircuitReceivedDEs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames received from the network indicating + that they were eligible for discard since the virtual + circuit was created. This occurs when the remote DTE + sets the DE flag, or when in remote DTE's switch + detects that the frame was received as Excess Burst + data." + REFERENCE + "American National Standard T1.618-1991, Section 3.3.4" + ::= { frCircuitEntry 18 } + + +frCircuitSentDEs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames sent to the network indicating that + they were eligible for discard since the virtual + circuit was created. This occurs when the local DTE + sets the DE flag, indicating that during Network + congestion situations those frames should be discarded + in preference of other frames sent without the DE bit + set." + REFERENCE + "American National Standard T1.618-1991, Section + 3.3.4" + ::= { frCircuitEntry 19 } + +frCircuitLogicalIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Normally the same value as frDlcmiIfIndex, but + different when an implementation associates a virtual + ifEntry with a DLC or set of DLCs in order to associate + higher layer objects such as the ipAddrEntry with a + subset of the virtual circuits on a Frame Relay + interface. The type of such ifEntries is defined by the + higher layer object; for example, if PPP/Frame Relay is + implemented, the ifType of this ifEntry would be PPP. + If it is not so defined, as would be the case with an + ipAddrEntry, it should be of type Other." + ::= { frCircuitEntry 20 } + +frCircuitRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + destroy an existing row in the manner described in the + definition of the RowStatus textual convention. + Writable objects in the table may be written in any + RowStatus state." + ::= { frCircuitEntry 21 } + + +-- +-- Error Table + +-- The table describing errors encountered on each Frame +-- Relay Interface. + +frErrTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrErrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about Errors on the + Frame Relay interface. Discontinuities in the counters + contained in this table are the same as apply to the + ifEntry associated with the Interface." + ::= { frameRelayDTE 3 } + +frErrEntry OBJECT-TYPE + SYNTAX FrErrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The error information for a single frame relay + interface." + INDEX { frErrIfIndex } + ::= { frErrTable 1 } + + +FrErrEntry ::= + SEQUENCE { + frErrIfIndex InterfaceIndex, + frErrType INTEGER, + frErrData OCTET STRING, + frErrTime TimeStamp, + frErrFaults Counter32, + frErrFaultTime TimeStamp +} + + +frErrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex Value of the corresponding ifEntry." + ::= { frErrEntry 1 } + + + frErrType OBJECT-TYPE + SYNTAX INTEGER { + unknownError(1), + receiveShort(2), + receiveLong(3), + illegalAddress(4), + unknownAddress(5), + dlcmiProtoErr(6), + dlcmiUnknownIE(7), + dlcmiSequenceErr(8), + dlcmiUnknownRpt(9), + noErrorSinceReset(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The type of error that was last seen on this interface: + +receiveShort: frame was not long enough to allow + demultiplexing - the address field was incomplete, + or for virtual circuits using Multiprotocol over + Frame Relay, the protocol identifier was missing + or incomplete. + +receiveLong: frame exceeded maximum length configured for this + interface. + +illegalAddress: address field did not match configured format. + +unknownAddress: frame received on a virtual circuit which was not + active or administratively disabled. + +dlcmiProtoErr: unspecified error occurred when attempting to + interpret link maintenance frame. + +dlcmiUnknownIE: link maintenance frame contained an Information + Element type which is not valid for the + configured link maintenance protocol. + +dlcmiSequenceErr: link maintenance frame contained a sequence + number other than the expected value. + +dlcmiUnknownRpt: link maintenance frame contained a Report Type + Information Element whose value was not valid + for the configured link maintenance protocol. + +noErrorSinceReset: no errors have been detected since the last + cold start or warm start." + ::= { frErrEntry 2 } + + +frErrData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..1600)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An octet string containing as much of the error packet + as possible. As a minimum, it must contain the Q.922 + Address or as much as was delivered. It is desirable + to include all header and demultiplexing information." + ::= { frErrEntry 3 } + +frErrTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at which the error was + detected." + ::= { frErrEntry 4 } + + +frErrFaults OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has gone down since + it was initialized." + ::= { frErrEntry 5 } + + +frErrFaultTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time when the interface + was taken down due to excessive errors. Excessive + errors is defined as the time when a DLCMI exceeds the + frDlcmiErrorThreshold number of errors within + frDlcmiMonitoredEvents. See FrDlcmiEntry for further + details." + ::= { frErrEntry 6 } + + +-- + +-- Frame Relay Trap Control + +frameRelayTrapControl OBJECT IDENTIFIER ::= { frameRelayDTE 4 } + +-- the following highly unusual OID is as it is for compatibility +-- with RFC 1315, the SNMP V1 predecessor of this document. +frameRelayTraps OBJECT IDENTIFIER ::= { frameRelayDTE 0 } + +frTrapState OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates whether the system produces + the frDLCIStatusChange trap." + DEFVAL { disabled } + ::= { frameRelayTrapControl 1 } + +frTrapMaxRate OBJECT-TYPE + SYNTAX Integer32 (0..3600000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the number of milliseconds + that must elapse between trap emissions. If events + occur more rapidly, the impementation may simply fail + to trap, or may queue traps until an appropriate time." + DEFVAL { 0 } -- no minimum elapsed period is specified + ::= { frameRelayTrapControl 2 } + + + +-- Data Link Connection Management Interface Related Traps + +frDLCIStatusChange NOTIFICATION-TYPE + OBJECTS { frCircuitState } + STATUS current + + + DESCRIPTION + "This trap indicates that the indicated Virtual Circuit + has changed state. It has either been created or + invalidated, or has toggled between the active and + inactive states. If, however, the reason for the state + change is due to the DLCMI going down, per-DLCI traps + should not be generated." +::= { frameRelayTraps 1 } +-- conformance information + +frConformance OBJECT IDENTIFIER ::= { frameRelayDTE 6 } + +frGroups OBJECT IDENTIFIER ::= { frConformance 1 } +frCompliances OBJECT IDENTIFIER ::= { frConformance 2 } + +-- compliance statements + +frCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { frPortGroup, frCircuitGroup } + + GROUP frErrGroup + DESCRIPTION + "This optional group is used for debugging Frame Relay + Systems." + + GROUP frTrapGroup + DESCRIPTION + "This optional group is used for the management of + asynchronous notifications by Frame Relay Systems." + + GROUP frNotificationGroup + DESCRIPTION + "This optional group defines the asynchronous + notifications generated by Frame Relay Systems." + + OBJECT frDlcmiRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Row creation is not required for the frDlcmiTable." + + OBJECT frCircuitRowStatus + + MIN-ACCESS read-only + DESCRIPTION + "Row creation is not required for the frCircuitTable." + + ::= { frCompliances 1 } + +frCompliance0 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for objects and the trap + defined in RFC 1315." + MODULE -- this module + MANDATORY-GROUPS { frPortGroup0, frCircuitGroup0 } + + GROUP frErrGroup0 + DESCRIPTION + "This optional group is used for debugging Frame Relay + Systems." + GROUP frTrapGroup0 + DESCRIPTION + "This optional group is used for the management of + asynchronous notifications by Frame Relay Systems." + + GROUP frNotificationGroup + DESCRIPTION + "This optional group defines the asynchronous + notifications generated by Frame Relay Systems." + + ::= { frCompliances 2 } + +-- units of conformance + +frPortGroup OBJECT-GROUP + OBJECTS { + frDlcmiIfIndex, frDlcmiState, frDlcmiAddress, + frDlcmiAddressLen, frDlcmiPollingInterval, + frDlcmiFullEnquiryInterval, frDlcmiErrorThreshold, + frDlcmiMonitoredEvents, frDlcmiMaxSupportedVCs, + frDlcmiMulticast, frDlcmiStatus, frDlcmiRowStatus + } + STATUS current + DESCRIPTION + "The objects necessary to control the Link Management + Interface for a Frame Relay Interface as well as + maintain the error statistics on this interface." + ::= { frGroups 1 } + +frCircuitGroup OBJECT-GROUP + OBJECTS { + frCircuitIfIndex, frCircuitDlci, frCircuitState, + frCircuitReceivedFECNs, frCircuitReceivedBECNs, + frCircuitSentFrames, frCircuitSentOctets, + frCircuitReceivedFrames, frCircuitReceivedOctets, + frCircuitCreationTime, frCircuitLastTimeChange, + frCircuitCommittedBurst, frCircuitExcessBurst, + frCircuitThroughput, frCircuitMulticast, + frCircuitType, frCircuitDiscards, + frCircuitReceivedDEs, frCircuitSentDEs, + frCircuitLogicalIfIndex, frCircuitRowStatus + } + STATUS current + DESCRIPTION + "The objects necessary to control the Virtual Circuits + layered onto a Frame Relay Interface." + ::= { frGroups 2 } + +frTrapGroup OBJECT-GROUP + OBJECTS { frTrapState, frTrapMaxRate } + STATUS current + DESCRIPTION + "The objects necessary to control a Frame Relay + Interface's notification messages." + ::= { frGroups 3 } + +frErrGroup OBJECT-GROUP + OBJECTS { + frErrIfIndex, frErrType, frErrData, frErrTime, + frErrFaults, frErrFaultTime + } + STATUS current + DESCRIPTION + "Objects designed to assist in debugging Frame Relay + Interfaces." + ::= { frGroups 4 } + +frNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { frDLCIStatusChange } + STATUS current + DESCRIPTION + "Traps which may be used to enhance event driven + management of the interface." + ::= { frGroups 5 } + +frPortGroup0 OBJECT-GROUP + OBJECTS { + frDlcmiIfIndex, frDlcmiState, frDlcmiAddress, + frDlcmiAddressLen, frDlcmiPollingInterval, + frDlcmiFullEnquiryInterval, frDlcmiErrorThreshold, + frDlcmiMonitoredEvents, frDlcmiMaxSupportedVCs, + frDlcmiMulticast + } + STATUS current + DESCRIPTION + "The objects necessary to control the Link Management + Interface for a Frame Relay Interface as well as + maintain the error statistics on this interface from + RFC 1315." + ::= { frGroups 6 } + +frCircuitGroup0 OBJECT-GROUP + OBJECTS { + frCircuitIfIndex, frCircuitDlci, frCircuitState, + frCircuitReceivedFECNs, frCircuitReceivedBECNs, + frCircuitSentFrames, frCircuitSentOctets, + frCircuitReceivedFrames, frCircuitReceivedOctets, + frCircuitCreationTime, frCircuitLastTimeChange, + frCircuitCommittedBurst, frCircuitExcessBurst, + frCircuitThroughput + } + STATUS current + DESCRIPTION + "The objects necessary to control the Virtual Circuits + layered onto a Frame Relay Interface from RFC 1315." + ::= { frGroups 7 } + +frErrGroup0 OBJECT-GROUP + OBJECTS { + frErrIfIndex, frErrType, frErrData, frErrTime + } + STATUS current + DESCRIPTION + "Objects designed to assist in debugging Frame Relay + Interfaces from RFC 1315." + ::= { frGroups 8 } + + +frTrapGroup0 OBJECT-GROUP + OBJECTS { frTrapState } + STATUS current + DESCRIPTION + "The objects necessary to control a Frame Relay + Interface's notification messages from RFC 1315." + ::= { frGroups 9 } + +END diff --git a/mibs/ietf/FRNETSERV-MIB b/mibs/ietf/FRNETSERV-MIB new file mode 100644 index 0000000..94f6caf --- /dev/null +++ b/mibs/ietf/FRNETSERV-MIB @@ -0,0 +1,2564 @@ +FRNETSERV-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, transmission, + Counter32, Integer32 FROM SNMPv2-SMI + TimeStamp, RowStatus FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + InterfaceIndex, ifIndex FROM IF-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + + frnetservMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" -- September 28, 2000 + ORGANIZATION "IETF Frame Relay Service MIB Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/frnetmib-charter + WG-email: + frnetmib@sunroof.eng.sun.com + + + Subscribe: + frnetmib-request@sunroof.eng.sun.com + Email Archive: + ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + Chair: Andy Malis + Vivace Networks, Inc. + Email: Andy.Malis@vivacenetworks.com + + WG editor: Kenneth Rehbehn + Megisto Systems, Inc. + Email: krehbehn@megisto.com + + Co-author: David Fowler + Syndesis Limited, + EMail: fowler@syndesis.com" + + DESCRIPTION + "The MIB module to describe generic objects for + Frame Relay Network Service." + + -- + -- Revision History + -- + REVISION "200009280000Z" + DESCRIPTION + "Published as RFC 2954. + + The major new features of this revision include: + + o Support for read-write capability to + provision switch components providing service, + + o Support for cross-connection via a frame relay + to ATM service interworking function, + + o Support for frame relay fragmentation, + + o Additional frame counters to track frame + loss. + + Refer to Appendix A for a comprehensive list of + changes since RFC 1604." + + REVISION "199311161200Z" + DESCRIPTION + "Published as RFC 1604." + ::= { transmission 44 } + + + frnetservObjects + OBJECT IDENTIFIER ::= { frnetservMIB 1 } + + frnetservTraps + OBJECT IDENTIFIER ::= { frnetservMIB 2 } + + frnetservTrapsPrefix + OBJECT IDENTIFIER ::= { frnetservTraps 0 } + + -- + -- The Frame Relay Service Logical Port + -- + frLportTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrLportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Logical Port Information table is + an interface-specific addendum to the generic + ifTable of the Interface MIB." + ::= { frnetservObjects 1 } + + frLportEntry OBJECT-TYPE + SYNTAX FrLportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Logical Port + Information table." + INDEX { ifIndex } + ::= { frLportTable 1 } + + FrLportEntry ::= + SEQUENCE { + frLportNumPlan INTEGER, + frLportContact SnmpAdminString, + frLportLocation SnmpAdminString, + frLportType INTEGER, + frLportAddrDLCILen INTEGER, + frLportVCSigProtocol INTEGER, + frLportVCSigPointer OBJECT IDENTIFIER, + frLportDLCIIndexValue Integer32, + frLportTypeAdmin INTEGER, + frLportVCSigProtocolAdmin INTEGER, + frLportFragControl INTEGER, + frLportFragSize Integer32 + } + + + + frLportNumPlan OBJECT-TYPE + SYNTAX INTEGER { + other(1), + e164(2), + x121(3), + none(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the network + address numbering plan for this UNI/NNI logical + port. The network address is the object + ifPhysAddress. The value none(4) implies that + there is no ifPhysAddress. The FRS agent will + return an octet string of zero length for + ifPhysAddress. The value other(1) means that an + address has been assigned to this interface, but + the numbering plan is not enumerated here." + REFERENCE "E.164 [29] + X.121 [30]" + ::= { frLportEntry 1 } + + frLportContact OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the network + contact for this UNI/NNI logical port." + ::= { frLportEntry 2 } + + frLportLocation OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the frame + relay network location for this UNI/NNI logical + port." + ::= { frLportEntry 3 } + + frLportType OBJECT-TYPE + SYNTAX INTEGER { + uni(1), + nni(2) + } + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The value of this object identifies the type of + network interface for this logical port." + ::= { frLportEntry 4 } + + frLportAddrDLCILen OBJECT-TYPE + SYNTAX INTEGER { + twoOctets10Bits(1), + threeOctets10Bits(2), + threeOctets16Bits(3), + fourOctets17Bits(4), + fourOctets23Bits(5) + } + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Q.922 + Address field length and DLCI length for this + UNI/NNI logical port." + REFERENCE "Q.922 [25]" + ::= { frLportEntry 5 } + + frLportVCSigProtocol OBJECT-TYPE + SYNTAX INTEGER { + none(1), + lmi(2), + ansiT1617D(3), + ansiT1617B(4), + ccittQ933A(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Local + In-Channel Signaling Protocol that is used for + this frame relay UNI/NNI logical port. + + none(1): Interface does not use a PVC + signaling protocol + + lmi(2): Interface operates the Stratacom/ + Nortel/DEC Local Management + Interface Specification protocol + + ansiT1617D(3): Interface operates the ANSI T1.617 + Annex D PVC status protocol + + + ansiT1617B(4): Interface operates the ANSI +T1.617 + Annex B procedures + + ccittQ933A(5): Interface operates the ITU Q.933 + Annex A PVC status protocol" + REFERENCE "LMI [24] + T1.617 Annex D [17], + Q.933 Annex A [22]" + ::= { frLportEntry 6 } + + frLportVCSigPointer OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of this object is used as a pointer to + the table that contains the Local In-Channel + Signaling Protocol parameters and errors for this + UNI/NNI logical port. + + This object has been deprecated to reflect the + fact that the local in-channel signaling + parameters are accessed from a single table + (frMgtVCSigTable) that includes parameters for all + possible signaling protocols. Early design + anticipated multiple tables, one for each + signaling protocol." + ::= { frLportEntry 7 } + + frLportDLCIIndexValue OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a hint to be used for + frPVCEndptDLCIIndex when creating entries in the + frPVCEndptTable. The SYNTAX of this object + matches the SYNTAX of the frPVCEndptDLCIIndex - an + object that is restricted to legal Q.922 DLCI + values for the size of the address field. + + The value 0 indicates that no unassigned entries + are available. + + To obtain the frPVCEndptDLCIIndex value for a new + entry, the manager issues a management protocol + retrieval operation to obtain the current value of + + + this object. After each retrieval, the agent must + modify the value to the next unassigned index to + prevent assignment of the same value to multiple + management systems. + + A management system should repeat the read to + obtain a new value should an attempt to create the + new row using the previously returned hint fail." + REFERENCE "Q.922 [25]" + ::= { frLportEntry 8 } + + frLportTypeAdmin OBJECT-TYPE + SYNTAX INTEGER { + uni(1), + nni(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object desired identifies the + type of network interface for this logical port." + ::= { frLportEntry 9 } + + frLportVCSigProtocolAdmin OBJECT-TYPE + SYNTAX INTEGER { + none(1), + lmi(2), + ansiT1617D(3), + ansiT1617B(4), + ccittQ933A(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Local In-Channel Signaling Protocol that is used + for this frame relay UNI/NNI logical port. This + value must be made the active protocol as soon as + possible on the device. + + Refer to frLportVCSigProtocol for a description of + each signaling protocol choices." + REFERENCE "LMI [24] + T1.617 Annex D [17], + Q.933 Annex A [22]" + ::= { frLportEntry 10 } + + frLportFragControl OBJECT-TYPE + + + SYNTAX INTEGER { + on(1), + off(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the transmission and + reception of fragmentation frames for this UNI or + NNI interface. + + on(1) Frames are fragmented using the interface + fragmentation format + Note: The customer side of the interface + must also be configured to fragment + frames. + + off(2) Frames are not fragmented using the + interface fragmentation format." + REFERENCE "FRF.12 [21]" + DEFVAL { off } + ::= { frLportEntry 11 } + + frLportFragSize OBJECT-TYPE + SYNTAX Integer32 (0..4096) + UNITS "Octets" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object is the size in octets of + the maximum size of each fragment to be sent when + fragmenting. This object is only used by the + fragmentation transmitter, and the two sides of + the interface may differ. The fragment size + includes the octets for the frame relay header, + the UI octet, the NLPID, the fragmentation header, + and the fragment payload. If frLportFragControl is + set to off, this value should be zero." + REFERENCE "FRF.12 [21]" + DEFVAL { 0 } + ::= { frLportEntry 12 } + + -- + -- Frame Relay Management VC Signaling + -- + + frMgtVCSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrMgtVCSigEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Management VC Signaling + Parameters and Errors table." + ::= { frnetservObjects 2 } + + frMgtVCSigEntry OBJECT-TYPE + SYNTAX FrMgtVCSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Management VC + Signaling Parameters Errors table." + INDEX { ifIndex } + ::= { frMgtVCSigTable 1 } + + FrMgtVCSigEntry ::= + SEQUENCE { + frMgtVCSigProced INTEGER, + frMgtVCSigUserN391 INTEGER, + frMgtVCSigUserN392 INTEGER, + frMgtVCSigUserN393 INTEGER, + frMgtVCSigUserT391 INTEGER, + frMgtVCSigNetN392 INTEGER, + frMgtVCSigNetN393 INTEGER, + frMgtVCSigNetT392 INTEGER, + frMgtVCSigNetnN4 INTEGER, + frMgtVCSigNetnT3 INTEGER, + frMgtVCSigUserLinkRelErrors Counter32, + frMgtVCSigUserProtErrors Counter32, + frMgtVCSigUserChanInactive Counter32, + frMgtVCSigNetLinkRelErrors Counter32, + frMgtVCSigNetProtErrors Counter32, + frMgtVCSigNetChanInactive Counter32, + frMgtVCSigProcedAdmin INTEGER, + frMgtVCSigUserN391Admin INTEGER, + frMgtVCSigUserN392Admin INTEGER, + frMgtVCSigUserN393Admin INTEGER, + frMgtVCSigUserT391Admin INTEGER, + frMgtVCSigNetN392Admin INTEGER, + frMgtVCSigNetN393Admin INTEGER, + frMgtVCSigNetT392Admin INTEGER, + frMgtVCSigNetnT3Admin INTEGER + } + + frMgtVCSigProced OBJECT-TYPE + SYNTAX INTEGER { + + + u2nnet(1), + bidirect(2), + u2nuser(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the local + in-channel signaling procedural role that is used + for this UNI/NNI logical port. Bidirectional + procedures implies that both user-side and + network-side procedural roles are used. + + u2nnet(1) Logical port operates user to network + procedure in the role of the network + side + + bidirect(2) Logical port operates the + bidirectional procedure (both user + and network side roles) + + u2nuser(3) Logical port operates user to network + procedure in the role of the user + side" + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + ::= { frMgtVCSigEntry 1 } + + frMgtVCSigUserN391 OBJECT-TYPE + SYNTAX INTEGER (1..255) + UNITS "Polls" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the User-side + N391 full status polling cycle value for this + UNI/NNI logical port. If the logical port is not + performing user-side (bidirectional) procedures, + then this object is not instantiated and an + attempt to read will result in the noSuchInstance + exception response." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { 6 } + ::= { frMgtVCSigEntry 2 } + + frMgtVCSigUserN392 OBJECT-TYPE + SYNTAX INTEGER (1..10) + + + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the User-side + N392 error threshold value for this UNI/NNI + logical port. If the logical port is not + performing user-side (bidirectional) procedures, + then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { 3 } + ::= { frMgtVCSigEntry 3 } + + frMgtVCSigUserN393 OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the User-side + N393 monitored events count value for this UNI/NNI + logical port. If the logical port is not + performing user-side (bidirectional) procedures, + then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { 4 } + ::= { frMgtVCSigEntry 4 } + + frMgtVCSigUserT391 OBJECT-TYPE + SYNTAX INTEGER (5..30) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the User-side + T391 link integrity verification polling timer + value for this UNI/NNI logical port. If the + logical port is not performing user-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { 10 } + ::= { frMgtVCSigEntry 5 } + + frMgtVCSigNetN392 OBJECT-TYPE + SYNTAX INTEGER (1..10) + + + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side N392 error threshold value (nN2 for LMI) for + this UNI/NNI logical port. If the logical port is + not performing network-side procedures, then this + object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + DEFVAL { 3 } + ::= { frMgtVCSigEntry 6 } + + frMgtVCSigNetN393 OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side N393 monitored events count value (nN3 for + LMI) for this UNI/NNI logical port. If the + logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + DEFVAL { 4 } + ::= { frMgtVCSigEntry 7 } + + frMgtVCSigNetT392 OBJECT-TYPE + SYNTAX INTEGER (5..30) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side T392 polling verification timer value (nT2 + for LMI) for this UNI/NNI logical port. If the + logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + DEFVAL { 15 } + ::= { frMgtVCSigEntry 8 } + + + frMgtVCSigNetnN4 OBJECT-TYPE + SYNTAX INTEGER (5..5) + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side nN4 maximum status enquires received value + for this UNI/NNI logical port. If the logical + port is not performing network-side procedures or + is not performing LMI procedures, then this object + is not instantiated. + + This object applies only to LMI and always has a + value of 5." + REFERENCE "LMI [24]" + ::= { frMgtVCSigEntry 9 } + + frMgtVCSigNetnT3 OBJECT-TYPE + SYNTAX INTEGER (5 | 10 | 15 | 20 | 25 | 30) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the Network- + side nT3 timer (for nN4 status enquires received) + value for this UNI/NNI logical port. If the + logical port is not performing network-side + procedures or is not performing LMI procedures, + then this object is not instantiated. + + This object applies only to LMI." + REFERENCE "LMI [24]" + DEFVAL { 20 } + ::= { frMgtVCSigEntry 10 } + + frMgtVCSigUserLinkRelErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user-side local in-channel + signaling link reliability errors (i.e., non- + receipt of Status/Status Enquiry messages or + invalid sequence numbers in a Link Integrity + Verification Information Element) for this UNI/NNI + logical port. If the logical port is not + + + performing user-side procedures, then this object + is not instantiated." + ::= { frMgtVCSigEntry 11 } + + frMgtVCSigUserProtErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user-side local in-channel + signaling protocol errors (i.e., protocol + discriminator, unnumbered information, message + type, call reference, and mandatory information + element errors) for this UNI/NNI logical port. If + the logical port is not performing user-side + procedures, then this object is not instantiated." + ::= { frMgtVCSigEntry 12 } + + frMgtVCSigUserChanInactive OBJECT-TYPE + SYNTAX Counter32 + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the user-side channel was + declared inactive (i.e., N392 errors in N393 + events) for this UNI/NNI logical port. If the + logical port is not performing user-side + procedures, then this object is not instantiated." + ::= { frMgtVCSigEntry 13 } + + frMgtVCSigNetLinkRelErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network-side local in-channel + signaling link reliability errors (i.e., non- + receipt of Status/Status Enquiry messages or + invalid sequence numbers in a Link Integrity + Verification Information Element) for this UNI/NNI + logical port." + ::= { frMgtVCSigEntry 14 } + + frMgtVCSigNetProtErrors OBJECT-TYPE + SYNTAX Counter32 + + + UNITS "Errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network-side local in-channel + signaling protocol errors (i.e., protocol + discriminator, message type, call reference, and + mandatory information element errors) for this + UNI/NNI logical port." + ::= { frMgtVCSigEntry 15 } + + frMgtVCSigNetChanInactive OBJECT-TYPE + SYNTAX Counter32 + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the network-side channel was + declared inactive (i.e., N392 errors in N393 + events) for this UNI/NNI logical port." + ::= { frMgtVCSigEntry 16 } + + frMgtVCSigProcedAdmin OBJECT-TYPE + SYNTAX INTEGER { + u2nnet(1), + bidirect(2), + u2nuser(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the local + in-channel signaling procedural role that is used + for this UNI/NNI logical port. Bidirectional + procedures implies that both user-side and + network-side procedural roles are used. + + u2nnet(1) Logical port operates user to network + procedure in the role of the network + side + + bidirect(2) Logical port operates the + bidirectional procedure (both user + and network side roles) + + u2nuser(3) Logical port operates user to network + procedure in the role of the user + side" + + + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + DEFVAL { u2nnet } + ::= { frMgtVCSigEntry 17 } + + frMgtVCSigUserN391Admin OBJECT-TYPE + SYNTAX INTEGER (1..255) + UNITS "Polls" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + User-side N391 full status polling cycle value for + this UNI/NNI logical port. If the logical port is + not performing user-side (bidirectional) + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + ::= { frMgtVCSigEntry 18 } + + frMgtVCSigUserN392Admin OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + User-side N392 error threshold value for this + UNI/NNI logical port. If the logical port is not + performing user-side (bidirectional) procedures, + then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + ::= { frMgtVCSigEntry 19 } + + frMgtVCSigUserN393Admin OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + User-side N393 monitored events count value for + this UNI/NNI logical port. If the logical port is + not performing user-side (bidirectional) + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + + + ::= { frMgtVCSigEntry 20 } + + frMgtVCSigUserT391Admin OBJECT-TYPE + SYNTAX INTEGER (5..30) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + User-side T391 link integrity verification polling + timer value for this UNI/NNI logical port. If the + logical port is not performing user-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17]" + ::= { frMgtVCSigEntry 21 } + + frMgtVCSigNetN392Admin OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Network-side N392 error threshold value (nN2 for + LMI) for this UNI/NNI logical port. If the + logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + ::= { frMgtVCSigEntry 22 } + + frMgtVCSigNetN393Admin OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "Events" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Network-side N393 monitored events count value + (nN3 for LMI) for this UNI/NNI logical port. If + the logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + ::= { frMgtVCSigEntry 23 } + + + frMgtVCSigNetT392Admin OBJECT-TYPE + SYNTAX INTEGER (5..30) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Network-side T392 polling verification timer value + (nT2 for LMI) for this UNI/NNI logical port. If + the logical port is not performing network-side + procedures, then this object is not instantiated." + REFERENCE "Q.933 Annex A [22], + T1.617 Annex D [17], + LMI [24]" + ::= { frMgtVCSigEntry 24 } + + frMgtVCSigNetnT3Admin OBJECT-TYPE + SYNTAX INTEGER (5 | 10 | 15 | 20 | 25 | 30) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the desired + Network-side nT3 timer (for nN4 status enquires + received) value for this UNI/NNI logical port. If + the logical port is not performing network-side + procedures or is not performing LMI procedures, + then this object is not instantiated. This object + applies only to LMI." + REFERENCE "LMI [24]" + ::= { frMgtVCSigEntry 25 } + + -- + -- Frame Relay PVC End-points + -- + + frPVCEndptTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrPVCEndptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay PVC End-Point table. This table + is used to model a PVC end-point. This table + contains the traffic parameters and statistics for + a PVC end-point. + + This table is used to identify the traffic + parameters for a bi-directional PVC segment end- + + + point, and it also provides statistics for a PVC + segment end-point. + + A PVC segment end-point is identified by a UNI/NNI + logical port index value and DLCI index value. + + If the frame relay service provider allows the + frame relay CNM subscriber to create, modify or + delete PVCs using SNMP, then this table is used to + identify and reserve the requested traffic + parameters of each PVC segment end-point. The + Connection table is used to 'connect' the end- + points together. Not all implementations will + support the capability of + creating/modifying/deleting PVCs using SNMP as a + feature of frame relay CNM service. + + Uni-directional PVCs are modeled with zero valued + traffic parameters in one of the directions (In or + Out direction) in this table. + + To create a PVC, the following procedures shall be + followed: + + 1) Create the entries for the PVC segment + endpoints in the frPVCEndptTable by specifying + the traffic parameters for the bi-directional + PVC segment endpoints. As shown in figure 2, a + point-to-point PVC has two endpoints, thus two + entries in this table. Uni-directional PVCs + are modeled with zero valued traffic + parameters in one direction; all the `In' + direction parameters for one frame relay PVC + End-point or all the `Out' direction + parameters for the other frame relay PVC + Endpoint. + + In _____________________________ Out + >>>>>>| |>>>>>>>> + ______| Frame Relay Network |________ + Out | | In + <<<<<<|_____________________________|<<<<<<<< + Frame Relay Frame Relay + PVC PVC + Endpoint Endpoint + + Figure 2, PVC Terminology + + + + 2) Go to the Frame Relay Connection Group." + ::= { frnetservObjects 3 } + + frPVCEndptEntry OBJECT-TYPE + SYNTAX FrPVCEndptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay PVC Endpoint table." + INDEX { ifIndex, frPVCEndptDLCIIndex } + ::= { frPVCEndptTable 1 } + + FrPVCEndptEntry ::= + SEQUENCE { + frPVCEndptDLCIIndex Integer32, + frPVCEndptInMaxFrameSize Integer32, + frPVCEndptInBc Integer32, + frPVCEndptInBe Integer32, + frPVCEndptInCIR Integer32, + frPVCEndptOutMaxFrameSize Integer32, + frPVCEndptOutBc Integer32, + frPVCEndptOutBe Integer32, + frPVCEndptOutCIR Integer32, + frPVCEndptConnectIdentifier Integer32, + frPVCEndptRowStatus RowStatus, + frPVCEndptRcvdSigStatus INTEGER, + frPVCEndptInFrames Counter32, + frPVCEndptOutFrames Counter32, + frPVCEndptInDEFrames Counter32, + frPVCEndptInExcessFrames Counter32, + frPVCEndptOutExcessFrames Counter32, + frPVCEndptInDiscards Counter32, + frPVCEndptInOctets Counter32, + frPVCEndptOutOctets Counter32, + frPVCEndptInDiscardsDESet Counter32, + frPVCEndptInFramesFECNSet Counter32, + frPVCEndptOutFramesFECNSet Counter32, + frPVCEndptInFramesBECNSet Counter32, + frPVCEndptOutFramesBECNSet Counter32, + frPVCEndptInCongDiscards Counter32, + frPVCEndptInDECongDiscards Counter32, + frPVCEndptOutCongDiscards Counter32, + frPVCEndptOutDECongDiscards Counter32, + frPVCEndptOutDEFrames Counter32, + frPVCEndptAtmIwfConnIndex Integer32 + + } + + + + frPVCEndptDLCIIndex OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the DLCI + value for this PVC end-point. + + The values are restricted to the legal range for + the size of address field supported by the logical + port (frLportAddrDLCILen)." + REFERENCE "Q.922 [25]" + ::= { frPVCEndptEntry 1 } + + frPVCEndptInMaxFrameSize OBJECT-TYPE + SYNTAX Integer32 (1..4096) + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the size in octets of + the largest frame relay information field for this + PVC end-point in the ingress direction (into the + frame relay network). The value of + frPVCEndptInMaxFrameSize must be less than or + equal to the corresponding ifMtu for this frame + relay UNI/NNI logical port." + REFERENCE "FRF.1 [31] + Q.922 [25] + Q.933 [22]" + DEFVAL { 1600 } + ::= { frPVCEndptEntry 2 } + + frPVCEndptInBc OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the + committed burst size (Bc) parameter (measured in + bits) for this PVC end-point in the ingress + direction (into the frame relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (16383 * + 10**6). + + + + Note that the value is encoded in bits whilst the + Q.933 Link layer core parameters information + element encodes this information using octet + units." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 3 } + + frPVCEndptInBe OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the excess + burst size (Be) parameter (measured in bits) for + this PVC end-point in the ingress direction (into + the frame relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (16383 * + 10**6). + + Note that the value is encoded in bits whilst the + Q.933 Link layer core parameters information + element encodes this information using octet + units." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 4 } + + frPVCEndptInCIR OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits per Second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the + committed information rate (CIR) parameter + (measured in bits per second) for this PVC end- + point in the ingress direction (into the frame + relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (2047 * + 10**6)." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 5 } + + frPVCEndptOutMaxFrameSize OBJECT-TYPE + + + SYNTAX Integer32 (1..4096) + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is the size in octets of + the largest frame relay information field for this + PVC end-point in the egress direction (out of the + frame relay network). The value of + frPVCEndptOutMaxFrameSize must be less than or + equal to the corresponding ifMtu for this frame + relay UNI/NNI logical port." + REFERENCE "FRF.1 [31] + Q.922 [25] + Q.933 [22]" + DEFVAL { 1600 } + ::= { frPVCEndptEntry 6 } + + frPVCEndptOutBc OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the + committed burst size (Bc) parameter (measured in + bits) for this PVC end-point in the egress + direction (out of the frame relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (16383 * + 10**6). + + Note that the value is encoded in bits whilst the + Q.933 Link layer core parameters information + element encodes this information using octet + units." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 7 } + + frPVCEndptOutBe OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the excess + burst size (Be) parameter (measured in bits) for + + + this PVC end-point in the egress direction (out of + the frame relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (16383 * + 10**6). + + Note that the value is encoded in bits whilst the + Q.933 Link layer core parameters information + element encodes this information using octet + units." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 8 } + + frPVCEndptOutCIR OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bits per Second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is equal to the + committed information rate (CIR) parameter + (measured in bits per second) for this PVC end- + point in the egress direction (out of the frame + relay network). + + Note that the max value of this range is lower + than the max value allowed by Q.933 (2047 * + 10**6)." + REFERENCE "Q.933 [22]" + ::= { frPVCEndptEntry 9 } + + frPVCEndptConnectIdentifier OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to associate PVC end-points + as being part of one PVC segment connection. This + value of this object is equal to the value of + frPVCConnectIndex, which is used as one of the + indices into the frPVCConnectTable. + + A connection that has been cross-connected via the + FR/ATM PVC Service IWF cross-connect table will + return the value zero when this object is read. In + case of these interworked connections, the + frPVCEndptAtmIwfConnIndex object must be accessed + + + to select the entry in the FR/ATM PVC Service IWF + cross-connect table. + + The value of this object is provided by the agent, + after the associated entries in the + frPVCConnectTable or frAtmIwfConnectionTable have + been created." + ::= { frPVCEndptEntry 10 } + + frPVCEndptRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create new rows in this + table, modify existing rows, and to delete + existing rows. To create a new PVC, the entries + for the PVC segment end-points in the + frPVCEndptTable must first be created. Next, the + frPVCConnectTable is used to associate the frame + relay PVC segment end-points. In order for the + manager to have the necessary error diagnostics, + the frPVCEndptRowStatus object must initially be + set to `createAndWait(5)'. While the + frPVCEndptRowStatus object is in the + `createAndWait(5)' state, the manager can set each + columnar object and get the necessary error + diagnostics. The frPVCEndptRowStatus object may + not be set to `active(1)' unless the following + columnar objects exist in this row: + frPVCEndptInMaxFrameSize, frPVCEndptInBc, + frPVCEndptInBe, frPVCEndptInCIR, + frPVCEndptOutMaxFrameSize, frPVCEndptOutBc, + frPVCEndptOutBe, and frPVCEndptOutCIR." + ::= { frPVCEndptEntry 11 } + + frPVCEndptRcvdSigStatus OBJECT-TYPE + SYNTAX INTEGER { + deleted(1), + active(2), + inactive(3), + none(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the PVC + status received via the local in-channel signaling + + + procedures for this PVC end-point. This object is + only pertinent for interfaces that perform the + bidirectional procedures. + + Each value has the following meaning: + deleted(1): This PVC is not listed in the full + status reports received from the + user device. The object retains + this value for as long as the PVC + is not listed in the full status + reports + + active(2): This PVC is reported as active, or + operational, by the user device. + + inactive(3): This PVC is reported as inactive, + or non-operational, by the user + device. + + none(4): This interface is only using the + network-side in-channel signaling + procedures, so this object does + not apply." + ::= { frPVCEndptEntry 12 } + + frPVCEndptInFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) for this PVC end-point. This includes + any frames discarded by the network due to + submitting more than Bc + Be data or due to any + network congestion recovery procedures." + ::= { frPVCEndptEntry 13 } + + frPVCEndptOutFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + regardless of whether they are Bc or Be frames for + this PVC end-point." + ::= { frPVCEndptEntry 14 } + + + frPVCEndptInDEFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) with the DE bit set to (1) for this PVC + end-point." + ::= { frPVCEndptEntry 15 } + + frPVCEndptInExcessFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) for this PVC end-point which were + treated as excess traffic. Frames which are sent + to the network with DE set to zero are treated as + excess when more than Bc bits are submitted to the + network during the Committed Information Rate + Measurement Interval (Tc). Excess traffic may or + may not be discarded at the ingress if more than + Bc + Be bits are submitted to the network during + Tc. Traffic discarded at the ingress is not + recorded in frPVCEndptInExcessFrames. Frames + which are sent to the network with DE set to one + are also treated as excess traffic." + ::= { frPVCEndptEntry 16 } + + frPVCEndptOutExcessFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + for this PVC end-point which were treated as + excess traffic. (The DE bit may be set to one.)" + ::= { frPVCEndptEntry 17 } + + frPVCEndptInDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "The number of frames received by the network + (ingress) that were discarded due to traffic + enforcement for this PVC end-point. Congestion + discards are not counted in this object." + ::= { frPVCEndptEntry 18 } + + frPVCEndptInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets received by the network + (ingress) for this PVC end-point. This counter + should only count octets from the beginning of the + frame relay header field to the end of user data. + If the network supporting frame relay can not + count octets, then this count should be an + approximation." + ::= { frPVCEndptEntry 19 } + + frPVCEndptOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets sent by the network (egress) + for this PVC end-point. This counter should only + count octets from the beginning of the frame relay + header field to the end of user data. If the + network supporting frame relay can not count + octets, then this count should be an + approximation." + ::= { frPVCEndptEntry 20 } + + frPVCEndptInDiscardsDESet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) that were discarded with the DE bit set + due to traffic enforcement for this PVC end-point. + Congestion discards are not counted in this + object." + + + ::= { frPVCEndptEntry 21 } + + frPVCEndptInFramesFECNSet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) that have the FECN bit set for this PVC + end-point." + ::= { frPVCEndptEntry 22 } + + frPVCEndptOutFramesFECNSet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + that have the FECN bit set for this PVC end- + point." + ::= { frPVCEndptEntry 23 } + + frPVCEndptInFramesBECNSet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) that have the BECN bit set for this PVC + end-point." + ::= { frPVCEndptEntry 24 } + + frPVCEndptOutFramesBECNSet OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + that have the BECN bit set for this PVC end- + point." + ::= { frPVCEndptEntry 25 } + + frPVCEndptInCongDiscards OBJECT-TYPE + SYNTAX Counter32 + + + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames received by the network + (ingress) that were discarded due to input buffer + congestion, rather than traffic enforcement, for + this PVC end-point." + ::= { frPVCEndptEntry 26 } + + frPVCEndptInDECongDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames counted by + frPVCEndptInCongDiscards with the DE bit set to + (1)." + ::= { frPVCEndptEntry 27 } + + frPVCEndptOutCongDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames sent by the network (egress) + that were discarded due to output buffer + congestion for this PVC end-point." + ::= { frPVCEndptEntry 28 } + + frPVCEndptOutDECongDiscards OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames counted by + frPVCEndptOutCongDiscards with the DE bit set to + (1)." + ::= { frPVCEndptEntry 29 } + + frPVCEndptOutDEFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Frames" + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "The number of frames sent by the network (egress) + with the DE bit set to (1) for this PVC end- + point." + ::= { frPVCEndptEntry 30 } + + frPVCEndptAtmIwfConnIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the index value of the + FR/ATM cross-connect table entry used to link the + frame relay PVC with an ATM PVC. + + Each row of the frPVCEndptTable that is not + cross-connected with an ATM PVC must return the + value zero when this object is read. + + The value of this object is initialized by the + agent after the associated entries in the + frAtmIwfConnectionTable have been created. + + The value of this object is reset to zero + following destruction of the associated entry in + the frAtmIwfConnectionTable" + ::= { frPVCEndptEntry 31 } + + -- + -- Frame Relay PVC Connections + -- + + frPVCConnectIndexValue OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns a hint to be used for + frPVCConnectIndex when creating entries in the + frPVCConnectTable. + + The value 0 indicates that no unassigned entries + are available. + + To obtain the frPVCConnectIndex value for a new + entry, the manager issues a management protocol + retrieval operation to obtain the current value of + this object. After each retrieval, the agent must + + + modify the value to the next unassigned index to + prevent assignment of the same value to multiple + management systems. + + A management system should repeat the read to + obtain a new value should an attempt to create the + new row using the previously returned hint fail." + ::= { frnetservObjects 4 } + + frPVCConnectTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrPVCConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay PVC Connect Table is used to + model the bi-directional PVC segment flows + including: point-to-point PVCs, point-to- + multipoint PVCs, and multipoint-to-multipoint + PVCs. + + This table has read-create access and is used to + associate PVC end-points together as belonging to + one connection. The frPVCConnectIndex is used to + associate all the bi-directional flows. Not all + implementations will support the capability of + creating/modifying/deleting PVCs using SNMP as a + feature of frame relay CNM service. + + Once the entries in the frPVCEndptTable are + created, the following step are used to associate + the PVC end-points as belonging to one PVC + connection: + + 1) Obtain a unique frPVCConnectIndex + using the frPVCConnectIndexValue object. + + 2) Connect the PVC segment endpoints together + with the applicable frPVCConnectIndex value + obtained via frPVCConnectIndexValue. The + entries in this table are created by using + the frPVCConnectRowStatus object. + + 3) The agent will provide the value of the + corresponding instances of + frPVCEndptConnectIdentifier with the + frPVCConnectIndex value. + + 4) Set frPVCConnectAdminStatus to `active(1)' in + + + all rows for this PVC segment to turn the + PVC on. + + For example, the Frame Relay PVC Connection Group + models a bi-directional, point-to-point PVC + segment as one entry in this table. + + Frame Relay Frame Relay + Network Network + Low Port High Port + __________________________________ + | | + _____| >> from low to high PVC flow >> |_____ + | << from high to low PVC flow << | + |__________________________________| + + The terms low and high are chosen to represent + numerical ordering of a PVC segment's endpoints + for representation in this table. That is, the + endpoint with the lower value of ifIndex is termed + 'low', while the opposite endpoint of the segment + is termed 'high'. This terminology is to provide + directional information; for example the + frPVCConnectL2hOperStatus and + frPVCConnectH2lOperStatus as illustrated above. + + If the Frame Relay Connection table is used to + model a unidirectional PVC, then one direction + (either from low to high or from high to low) has + its Operational Status equal to down. + + A PVC segment is a portion of a PVC that traverses + one Frame Relay Network, and a PVC segment is + identified by its two end-points (UNI/NNI logical + port index value and DLCI index value) through one + Frame Relay Network." + ::= { frnetservObjects 5 } + + frPVCConnectEntry OBJECT-TYPE + SYNTAX FrPVCConnectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay PVC Connect table. + This entry is used to model a PVC segment in two + directions." + INDEX { frPVCConnectIndex, + frPVCConnectLowIfIndex, + + + frPVCConnectLowDLCIIndex, + frPVCConnectHighIfIndex, + frPVCConnectHighDLCIIndex } + ::= { frPVCConnectTable 1 } + + FrPVCConnectEntry ::= + SEQUENCE { + frPVCConnectIndex Integer32, + frPVCConnectLowIfIndex InterfaceIndex, + frPVCConnectLowDLCIIndex Integer32, + frPVCConnectHighIfIndex InterfaceIndex, + frPVCConnectHighDLCIIndex Integer32, + frPVCConnectAdminStatus INTEGER, + frPVCConnectL2hOperStatus INTEGER, + frPVCConnectH2lOperStatus INTEGER, + frPVCConnectL2hLastChange TimeStamp, + frPVCConnectH2lLastChange TimeStamp, + frPVCConnectRowStatus RowStatus, + frPVCConnectUserName SnmpAdminString, + frPVCConnectProviderName SnmpAdminString + } + + frPVCConnectIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the + frPVCConnectIndexValue obtained to uniquely + identify this PVC segment connection." + ::= { frPVCConnectEntry 1 } + + frPVCConnectLowIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to IF-MIB + ifIndex value of the UNI/NNI logical port for this + PVC segment. The term low implies that this PVC + segment end-point has the numerically lower + ifIndex value than the connected/associated PVC + segment end-point. + + RFC 1604 permitted a zero value for this object to + identify termination at a non-frame relay + interface. However, this cross-connect table is + limited to frame relay connections. See the frame + + + relay/ATM IWF MIB [28] for the cross-connect table + used for those types of connections." + ::= { frPVCConnectEntry 2 } + + frPVCConnectLowDLCIIndex OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the DLCI + value for this end-point of the PVC segment." + REFERENCE "Q.922 [25]" + ::= { frPVCConnectEntry 3 } + + frPVCConnectHighIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to IF-MIB + ifIndex value for the UNI/NNI logical port for + this PVC segment. The term high implies that this + PVC segment end-point has the numerically higher + ifIndex value than the connected/associated PVC + segment end-point." + ::= { frPVCConnectEntry 4 } + + frPVCConnectHighDLCIIndex OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the egress + DLCI value for this end-point of the PVC segment." + REFERENCE "Q.922 [25]" + ::= { frPVCConnectEntry 5 } + + frPVCConnectAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2), + testing(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the desired + administrative status of this bi-directional PVC + + + segment. The active(1) state means the PVC + segment is currently operational; the inactive(2) + state means the PVC segment is currently not + operational; the testing(3) state means the PVC + segment is currently undergoing a test. This + state is set by an administrative entity. This + value affects the PVC status indicated across the + ingress NNI/UNI of both end-points of the bi- + directional PVC segment. When a PVC segment + connection is created using this table, this + object is initially set to `inactive(2)'. After + the frPVCConnectRowStatus object is set to + `active(1)' (and the corresponding/associated + entries in the frPVCEndptTable have their + frPVCEndptRowStatus object set to `active(1)'), + the frPVCConnectAdminStatus object may be set to + `active(1)' to turn on the PVC segment + connection." + ::= { frPVCConnectEntry 6 } + + frPVCConnectL2hOperStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2), + testing(3), + unknown(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the current + operational status of the PVC segment connection + in one direction; (i.e., in the low to high + direction). This value affects the PVC status + indicated across the ingress NNI/UNI (low side) of + the PVC segment. + + The values mean: + + active(1) - PVC is currently operational + + inactive(2) - PVC is currently not operational. + This may be because of an underlying + LMI or DS1 failure. + + testing(3) - PVC is currently undergoing a test. + This may be because of an underlying + frLport or DS1 undergoing a test. + + + unknown(4) - the status of the PVC currently can + not be determined." + ::= { frPVCConnectEntry 7 } + + frPVCConnectH2lOperStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2), + testing(3), + unknown(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the current + operational status of the PVC segment connection + in one direction; (i.e., in the high to low + direction).. This value affects the PVC status + indicated across the ingress NNI/UNI (high side) + of the PVC segment. + + The values mean: + + active(1) - PVC is currently operational + + inactive(2) - PVC is currently not operational. + This may be because of an underlying + LMI or DS1 failure. + + testing(3) - PVC is currently undergoing a test. + This may be because of an underlying + frLport or DS1 undergoing a test. + + unknown(4) - the status of the PVC currently can + not be determined." + ::= { frPVCConnectEntry 8 } + + frPVCConnectL2hLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Interface MIB's sysUpTime object + at the time this PVC segment entered its current + operational state in the low to high direction. + If the current state was entered prior to the last + re-initialization of the FRS agent, then this + object contains a zero value." + + + ::= { frPVCConnectEntry 9 } + + frPVCConnectH2lLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Interface MIB's sysUpTime object + at the time this PVC segment entered its current + operational state in the high to low direction. + If the current state was entered prior to the last + re-initialization of the FRS agent, then this + object contains a zero value." + ::= { frPVCConnectEntry 10 } + + frPVCConnectRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry in the + frPVCConnectTable. This variable is used to + create new connections for the PVC end-points and + to change existing connections of the PVC end- + points. This object must be initially set to + `createAndWait(5)'. In this state, the agent + checks the parameters in the associated entries in + the frPVCEndptTable to verify that the PVC end- + points can be connected (i.e., the In parameters + for one PVC end-point are equal to the Out + parameters for the other PVC end-point). This + object can not be set to `active(1)' unless the + following columnar object exists in this row: + frPVCConnectAdminStatus. The agent also supplies + the associated value of frPVCConnectIndex for the + frPVCEndptConnectIdentifier instances. To turn on + a PVC segment connection, the + frPVCConnectAdminStatus is set to `active(1)'." + ::= { frPVCConnectEntry 11 } + + frPVCConnectUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is a service user assigned textual + representation of a PVC." + ::= { frPVCConnectEntry 12 } + + + frPVCConnectProviderName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is a system supplied textual representation + of PVC. It is assigned by the service provider." + ::= { frPVCConnectEntry 13 } + + -- + -- The Frame Relay Accounting + -- + + frAccountPVCTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAccountPVCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Accounting PVC table. This table + is used to perform accounting on a PVC segment + end-point basis." + ::= { frnetservObjects 6 } + + frAccountPVCEntry OBJECT-TYPE + SYNTAX FrAccountPVCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Accounting PVC + table." + INDEX { ifIndex, + frAccountPVCDLCIIndex } + ::= { frAccountPVCTable 1 } + + FrAccountPVCEntry ::= + SEQUENCE { + frAccountPVCDLCIIndex Integer32, + frAccountPVCSegmentSize Integer32, + frAccountPVCInSegments Counter32, + frAccountPVCOutSegments Counter32 + } + + frAccountPVCDLCIIndex OBJECT-TYPE + SYNTAX Integer32 (16..4194303) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the DLCI + + + value for this PVC segment end-point." + REFERENCE "Q.922 [25]" + ::= { frAccountPVCEntry 1 } + + frAccountPVCSegmentSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the Segment + Size for this PVC segment end-point." + ::= { frAccountPVCEntry 2 } + + frAccountPVCInSegments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Segments" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the number + of segments received by this PVC segment end- + point." + ::= { frAccountPVCEntry 3 } + + frAccountPVCOutSegments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Segments" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the number + of segments sent by this PVC segment end-point." + ::= { frAccountPVCEntry 4 } + + -- + -- Accounting on a Frame Relay Logical Port + -- + + frAccountLportTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrAccountLportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Accounting Logical Port table. + This table is used to perform accounting on a + UNI/NNI Logical Port basis." + ::= { frnetservObjects 7 } + + + frAccountLportEntry OBJECT-TYPE + SYNTAX FrAccountLportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Accounting Logical + Port table." + INDEX { ifIndex } + ::= { frAccountLportTable 1 } + + FrAccountLportEntry ::= + SEQUENCE { + frAccountLportSegmentSize + Integer32, + frAccountLportInSegments + Counter32, + frAccountLportOutSegments + Counter32 + } + + frAccountLportSegmentSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the Segment + Size for this UNI/NNI logical port." + ::= { frAccountLportEntry 1 } + + frAccountLportInSegments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Segments" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the number + of segments received by this UNI/NNI logical + port." + ::= { frAccountLportEntry 2 } + + frAccountLportOutSegments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Segments" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is equal to the number + + + of segments sent by this UNI/NNI logical port." + ::= { frAccountLportEntry 3 } + + -- + -- Frame Relay Network Service Notifications + -- + + frPVCConnectStatusChange NOTIFICATION-TYPE + OBJECTS { frPVCConnectIndex, + frPVCConnectLowIfIndex, + frPVCConnectLowDLCIIndex, + frPVCConnectHighIfIndex, + frPVCConnectHighDLCIIndex, + frPVCConnectL2hOperStatus, + frPVCConnectH2lOperStatus, + frPVCEndptRcvdSigStatus } + STATUS deprecated + DESCRIPTION + "Refer to the description of the + frPVCConnectStatusNotif notification that has + replaced this notification. The notification is + deprecated due to the incorrect inclusion of index + values and to take advantage of the trap prefix + for automatic conversion from SMIv2 to SMIv1 by + making the one but last sub-ID a zero (i.e. the + so-called trap prefix)." + ::= { frnetservTraps 1 } + + frPVCConnectStatusNotif NOTIFICATION-TYPE + OBJECTS { frPVCConnectL2hOperStatus, + frPVCConnectH2lOperStatus, + frPVCEndptRcvdSigStatus } + STATUS current + DESCRIPTION + "This notification indicates that the indicated + PVC has changed state. + + This notification is not sent if an FR-UNI changes + state; a linkDown or linkUp notification should be + sent instead. The first instance of + frPVCEndptRcvdSigStatus is for the endpoint with + LowIfIndex, LowDLCIIndex. The second instance of + frPVCEndptRcvdSigStatus is for the endpoint with + HighIfIndex, HighDLCIIndex" + ::= { frnetservTrapsPrefix 2 } + + -- Conformance Information + + + + frnetservConformance OBJECT IDENTIFIER + ::= { frnetservMIB 3 } + + frnetservGroups OBJECT IDENTIFIER + ::= { frnetservConformance 1 } + frnetservCompliances OBJECT IDENTIFIER + ::= { frnetservConformance 2 } + + + -- + -- Service (Read-only) Modules + -- + frnetservCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + have Frame Relay Network Service Interfaces. + + The distinction between 'service' and 'switch' is + that a 'switch' is configured via this MIB. + Hence, the various read/write objects have write + capability. A 'service' represents a passive + monitor-only customer network management + interface. The various read/write objects are + restricted to read-only capability." + MODULE -- this module + MANDATORY-GROUPS { frnetservLportGroup2, + frnetservMgtVCSigGroup, + frnetservPVCEndptGroup, + frnetservPVCEndptGroup2, + frnetservPVCConnectGroup, + frnetservPVCConnectNamesGroup, + frnetservPVCNotifGroup2 } + + GROUP frnetservAccountPVCGroup + DESCRIPTION + "This group is optional for frame relay + interfaces. It is mandatory if and only if + accounting is performed on a PVC basis this frame + relay interface." + GROUP frnetservAccountLportGroup + DESCRIPTION + "This group is optional for frame relay + interfaces. It is mandatory if and only if + accounting is performed on a logical port basis + this frame relay interface." + + OBJECT frPVCEndptInMaxFrameSize + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInBc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInBe + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInCIR + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutMaxFrameSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutBc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutBe + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutCIR + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptRowStatus + -- subset of RowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + + OBJECT frPVCConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCConnectRowStatus + -- subset of RowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + OBJECT frLportFragControl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frLportFragSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCConnectUserName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCConnectProviderName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { frnetservCompliances 2 } + + -- + -- Switch (Configuration) Compliance + -- + frnetSwitchCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + have Frame Relay Network Switch objects. + + The distinction between 'service' and 'switch' is + that a 'switch' is configured via this MIB. + + + Hence, the various read/write objects have write + capability. A 'service' represents a passive + monitor-only customer network management + interface. The various read/write objects are + restricted to read-only capability." + MODULE -- this module + MANDATORY-GROUPS { frnetservLportGroup2, + frnetservLportAdminGroup, + frnetservMgtVCSigGroup, + frnetservMgtVCSigAdminGroup, + frnetservPVCEndptGroup, + frnetservPVCEndptGroup2, + frnetservPVCConnectGroup, + frnetservPVCConnectNamesGroup, + frnetservPVCNotifGroup2 } + + GROUP frnetservAccountPVCGroup + DESCRIPTION + "This group is optional for frame relay + interfaces. It is mandatory if and only if + accounting is performed on a PVC basis this frame + relay interface." + GROUP frnetservAccountLportGroup + DESCRIPTION + "This group is optional for frame relay + interfaces. It is mandatory if and only if + accounting is performed on a logical port basis + this frame relay interface." + + ::= { frnetservCompliances 3 } + + -- + -- Historical RFC 1604 Compliance Modules + -- + + frnetservCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities which + have Frame Relay Network Service Interfaces. + + This compliance statement has been deprecated in + favor of frnetservCompliance2. The new compliance + module expands the mandatory groups to include + notification and other new objects." + + MODULE -- this module + MANDATORY-GROUPS { frnetservLportGroup, + + + frnetservMgtVCSigGroup, + frnetservPVCEndptGroup, + frnetservPVCConnectGroup } + + GROUP frnetservAccountPVCGroup + DESCRIPTION + "This group is optional for Frame Relay + interfaces. It is mandatory if and only if + accounting is performed on a PVC basis this Frame + Relay interface." + + GROUP frnetservAccountLportGroup + DESCRIPTION + "This group is optional for Frame Relay + interfaces. It is mandatory if and only if + accounting is performed on a logical port basis + this Frame Relay interface." + + OBJECT frPVCEndptInMaxFrameSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInBc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT frPVCEndptInBe + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptInCIR + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutMaxFrameSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutBc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutBe + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptOutCIR + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCEndptRowStatus + -- subset of RowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + OBJECT frPVCConnectAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT frPVCConnectRowStatus + -- subset of RowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + ::= { frnetservCompliances 1 } + + -- + -- Frame Relay Service MIB Object Groups + -- + frnetservLportGroup OBJECT-GROUP + OBJECTS { frLportNumPlan, frLportContact, frLportLocation, + frLportType, + frLportAddrDLCILen, frLportVCSigProtocol, + frLportVCSigPointer } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + applicable to a Frame Relay Logical Port. This + group has been deprecated to eliminate reference + + + to the object frLportVCSigPointer. + + Use the new group frnetservLportGroup2 as a + replacement for this group." + ::= { frnetservGroups 1 } + + frnetservMgtVCSigGroup OBJECT-GROUP + OBJECTS { frMgtVCSigProced, + frMgtVCSigUserN391, + frMgtVCSigUserN392, + frMgtVCSigUserN393, + frMgtVCSigUserT391, + frMgtVCSigNetN392, + frMgtVCSigNetN393, + frMgtVCSigNetT392, + frMgtVCSigNetnN4, + frMgtVCSigNetnT3, + frMgtVCSigUserLinkRelErrors, + frMgtVCSigUserProtErrors, + frMgtVCSigUserChanInactive, + frMgtVCSigNetLinkRelErrors, + frMgtVCSigNetProtErrors, + frMgtVCSigNetChanInactive } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to the Local In-Channel Signaling + Procedures used for a UNI/NNI logical port." + ::= { frnetservGroups 2 } + + frnetservPVCEndptGroup OBJECT-GROUP + OBJECTS { frPVCConnectIndexValue, + frPVCEndptInMaxFrameSize, + frPVCEndptInBc, + frPVCEndptInBe, + frPVCEndptInCIR, + frPVCEndptOutMaxFrameSize, + frPVCEndptOutBc, + frPVCEndptOutBe, + frPVCEndptOutCIR, + frPVCEndptConnectIdentifier, + frPVCEndptRowStatus, + frPVCEndptRcvdSigStatus, + frPVCEndptInFrames, + frPVCEndptOutFrames, + frPVCEndptInDEFrames, + frPVCEndptInExcessFrames, + frPVCEndptOutExcessFrames, + + + frPVCEndptInDiscards, + frPVCEndptInOctets, + frPVCEndptOutOctets } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to a Frame Relay PVC end-point." + ::= { frnetservGroups 3 } + + frnetservPVCConnectGroup OBJECT-GROUP + OBJECTS { frPVCConnectAdminStatus, + frPVCConnectL2hOperStatus, + frPVCConnectH2lOperStatus, + frPVCConnectL2hLastChange, + frPVCConnectH2lLastChange, + frPVCConnectRowStatus } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to a Frame Relay PVC connection." + ::= { frnetservGroups 4 } + + frnetservAccountPVCGroup OBJECT-GROUP + OBJECTS { frAccountPVCSegmentSize, + frAccountPVCInSegments, + frAccountPVCOutSegments } + STATUS current + DESCRIPTION + "A collection of objects providing accounting + information application to a Frame Relay PVC end- + point." + ::= { frnetservGroups 5 } + + frnetservAccountLportGroup OBJECT-GROUP + OBJECTS { frAccountLportSegmentSize, + frAccountLportInSegments, + frAccountLportOutSegments } + STATUS current + DESCRIPTION + "A collection of objects providing accounting + information application to a Frame Relay logical + port." + ::= { frnetservGroups 6 } + + frnetservLportGroup2 OBJECT-GROUP + OBJECTS { frLportNumPlan, + frLportContact, + frLportLocation, + + + frLportType, + frLportAddrDLCILen, + frLportVCSigProtocol, + frLportFragControl, + frLportFragSize } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to a Frame Relay Logical Port. + + This new version of the Logical Port Group + eliminates the frLportVCSigPointer and adds + support for fragmentation." + ::= { frnetservGroups 7 } + + frnetservPVCEndptGroup2 OBJECT-GROUP + OBJECTS { frPVCEndptInDiscardsDESet, + frPVCEndptInFramesFECNSet, + frPVCEndptOutFramesFECNSet, + frPVCEndptInFramesBECNSet, + frPVCEndptOutFramesBECNSet, + frPVCEndptInCongDiscards, + frPVCEndptInDECongDiscards, + frPVCEndptOutCongDiscards, + frPVCEndptOutDECongDiscards, + frPVCEndptOutDEFrames, + frPVCEndptAtmIwfConnIndex } + STATUS current + DESCRIPTION + "Additions to the PVC end-point group. These + additions provide new frame counters to track + frame loss. In addition, the new FR/ATM IWF MIB + cross-connect index is included." + ::= { frnetservGroups 8 } + + frnetservPVCConnectNamesGroup OBJECT-GROUP + OBJECTS { frPVCConnectUserName, + frPVCConnectProviderName } + STATUS current + DESCRIPTION + "Additions to the PVC Connect Group." + ::= { frnetservGroups 9 } + + frnetservLportAdminGroup OBJECT-GROUP + OBJECTS { frLportDLCIIndexValue, + frLportTypeAdmin, + frLportVCSigProtocolAdmin } + STATUS current + + + DESCRIPTION + "Administrative (R/W) objects for creating a + switch logical port." + ::= { frnetservGroups 10 } + + frnetservMgtVCSigAdminGroup OBJECT-GROUP + OBJECTS { frMgtVCSigProcedAdmin, + frMgtVCSigUserN391Admin, + frMgtVCSigUserN392Admin, + frMgtVCSigUserN393Admin, + frMgtVCSigUserT391Admin, + frMgtVCSigNetN392Admin, + frMgtVCSigNetN393Admin, + frMgtVCSigNetT392Admin, + frMgtVCSigNetnT3Admin } + STATUS current + DESCRIPTION + + "A collection of objects providing information + applicable to the Local In-Channel Signaling + Procedures used for a UNI/NNI logical port." + ::= { frnetservGroups 11 } + + frnetservPVCNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { frPVCConnectStatusChange } + STATUS deprecated + DESCRIPTION + "Deprecated notification group. The + frPVCConnectStatusChange notification was flawed + because it included redundant indexes and was not + properly encoded for SMIv1 conversion." + ::= { frnetservGroups 12 } + + frnetservPVCNotifGroup2 NOTIFICATION-GROUP + NOTIFICATIONS { frPVCConnectStatusNotif } + STATUS current + DESCRIPTION + "A collection of notifications that apply to frame + relay PVC Connections " + ::= { frnetservGroups 13 } + + END diff --git a/mibs/ietf/FRSLD-MIB b/mibs/ietf/FRSLD-MIB new file mode 100644 index 0000000..499c7e6 --- /dev/null +++ b/mibs/ietf/FRSLD-MIB @@ -0,0 +1,1823 @@ +FRSLD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Gauge32, Integer32, + Counter64, TimeTicks, mib-2 FROM SNMPv2-SMI + CounterBasedGauge64 FROM HCNUM-TC + TEXTUAL-CONVENTION, RowStatus, + TimeStamp FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB + DLCI FROM FRAME-RELAY-DTE-MIB; + + frsldMIB MODULE-IDENTITY + LAST-UPDATED "200201030000Z" -- January 3, 2002 + ORGANIZATION "IETF Frame Relay Service MIB Working Group" + CONTACT-INFO + "IETF Frame Relay Service MIB (frnetmib) Working Group + + WG Charter: http://www.ietf.org/html.charters/ + frnetmib-charter.html + WG-email: frnetmib@sunroof.eng.sun.com + Subscribe: frnetmib-request@sunroof.eng.sun.com + Email Archive: ftp://ftp.ietf.org/ietf-mail-archive/frnetmib + + + Chair: Andy Malis + Vivace Networks + Email: Andy.Malis@vivacenetworks.com + + WG editor: Robert Steinberger + Paradyne Networks and + Fujitsu Network Communications + Email: robert.steinberger@fnc.fujitsu.com + + Co-author: Orly Nicklass + RAD Data Communications Ltd. + EMail: Orly_n@rad.co.il" + DESCRIPTION + "The MIB module to describe generic objects for + FRF.13 Frame Relay Service Level Definitions." + REVISION "200201030000Z" -- January 3, 2002 + DESCRIPTION + "Initial version, published as RFC 3202" + ::= { mib-2 95 } + + -- + -- Textual Conventions + -- + FrsldTxRP ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reference point a PVC uses for calculation + of transmitter related statistics. + + The valid values for this type of object are as follows: + - srcLocalRP(1) for the local source + - ingTxLocalRP(2) for the local ingress queue input + - tpTxLocalRP(3) for the local traffic policing + - eqiTxLocalRP(4) for the local egress queue input + - eqoTxLocalRP(5) for the local egress queue output + - otherTxLocalRP(6) for any other local transmit point + - srcRemoteRP(7) for the remote source + - ingTxLocalRP(8) for the remote ingress queue input + - tpTxLocalRP(9) for the remote traffic policing + - eqiTxRemoteRP(10) for the remote egress queue input + - eqoTxRemoteRP(11) for the remote egress queue output + - otherTxRemoteRP(12) for any other remote xmit point" + REFERENCE + "FRF.13: Section 2.3" + SYNTAX INTEGER { + srcLocalRP(1), + ingTxLocalRP(2), + tpTxLocalRP(3), + + + eqiTxLocalRP(4), + eqoTxLocalRP(5), + otherTxLocalRP(6), + srcRemoteRP(7), + ingTxRemoteRP(8), + tpTxRemoteRP(9), + eqiTxRemoteRP(10), + eqoTxRemoteRP(11), + otherTxRemoteRP(12) + } + + FrsldRxRP ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reference point a PVC uses for calculation + of receiver related statistics. + + The valid values for this object are as follows: + - desLocalRP(1) for the local destination + - ingRxLocalRP(2) for the local ingress queue input + - tpRxLocalRP(3) for the local traffic policing + - eqiRxLocalRP(4) for the local egress queue input + - eqoRxLocalRP(5) for the local egress queue output + - otherRxLocalRP(6) for any other local receive point + - desRemoteRP(7) for the remote destination + - ingRxRemoteRP(8) for the remote ingress input + - tpRxRemoteRP(9) for the remote traffic policing + - eqiRxRemoteRP(10) for the remote egress queue input + - eqoRxRemoteRP(11) for the remote egress queue output + - otherRxRemoteRP(12) for any other remote receive point" + REFERENCE + "FRF.13: Section 2.3" + SYNTAX INTEGER { + desLocalRP(1), + ingRxLocalRP(2), + tpRxLocalRP(3), + eqiRxLocalRP(4), + eqoRxLocalRP(5), + otherRxLocalRP(6), + desRemoteRP(7), + ingRxRemoteRP(8), + tpRxRemoteRP(9), + eqiRxRemoteRP(10), + eqoRxRemoteRP(11), + otherRxRemoteRP(12) + } + + -- + + + -- Base Objects + --- + + frsldObjects OBJECT IDENTIFIER ::= { frsldMIB 1 } + frsldCapabilities OBJECT IDENTIFIER ::= { frsldMIB 2 } + frsldConformance OBJECT IDENTIFIER ::= { frsldMIB 3 } + + -- The Frame Relay Service Level Definitions PVC Control Table + -- + -- This table is used to define and display the parameters of + -- service level definitions on individual PVCs. + + frsldPvcCtrlTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrsldPvcCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Service Level Definitions + PVC control table." + ::= { frsldObjects 1 } + + frsldPvcCtrlEntry OBJECT-TYPE + SYNTAX FrsldPvcCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Service Level + Definitions PVC control table." + INDEX { ifIndex, frsldPvcCtrlDlci, + frsldPvcCtrlTransmitRP, frsldPvcCtrlReceiveRP} + ::= { frsldPvcCtrlTable 1 } + + FrsldPvcCtrlEntry ::= + SEQUENCE { + -- + -- Index Control Variables + -- + frsldPvcCtrlDlci DLCI, + frsldPvcCtrlTransmitRP FrsldTxRP, + frsldPvcCtrlReceiveRP FrsldRxRP, + frsldPvcCtrlStatus RowStatus, + -- + -- Service Level Definitions Setup Variables + -- + frsldPvcCtrlPacketFreq Integer32, + -- + -- Delay Specific Setup Variables + -- + + + frsldPvcCtrlDelayFrSize Integer32, + frsldPvcCtrlDelayType INTEGER, + frsldPvcCtrlDelayTimeOut Integer32, + -- + -- Data Persistence Control Variables + -- + frsldPvcCtrlPurge Integer32, + frsldPvcCtrlDeleteOnPurge INTEGER, + frsldPvcCtrlLastPurgeTime TimeStamp + } + + frsldPvcCtrlDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object is equal to the DLCI + value for this PVC." + ::= { frsldPvcCtrlEntry 1 } + + frsldPvcCtrlTransmitRP OBJECT-TYPE + SYNTAX FrsldTxRP + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reference point this PVC uses for calculation + of transmitter related statistics. This object + together with frsldPvcCtrlReceiveRP define the + measurement domain." + REFERENCE + "FRF.13: Section 2.3" + ::= { frsldPvcCtrlEntry 2 } + + frsldPvcCtrlReceiveRP OBJECT-TYPE + SYNTAX FrsldRxRP + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reference point this PVC uses for calculation + of receiver related statistics. This object + together with frsldPvcCtrlTransmitRP define the + measurement domain." + ::= { frsldPvcCtrlEntry 3 } + + frsldPvcCtrlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + + + DESCRIPTION + "The status of the current row. This object is + used to add, delete, and disable rows in this + table. When the status changes to active(1) for the + first time, a row will also be added to the data + table below. This row SHOULD not be removed until + the status is changed to deleted. + + When this object is set to destroy(6), all associated + sample and data table rows will also be deleted. + When this object is changed from active(1) to any + other valid value, the defined purge behavior will + affect the data and sample tables. + + The rows added to this table MUST have a valid + ifIndex and an ifType related to frame relay. Further, + the reference points referred to by frsldPvcCtrlTransmitRP + and frsldPvcCtrlReceiveRP MUST be supported (see the + frsldRPCaps object). + + If at any point the row is not in the active(1) state + and the DLCI no longer exists, the state SHOULD + report notReady(3). + + The data in this table SHOULD persist through power + cycles. The symantics of readiness for the rows still + applies. This means that it is possible for a row to be + reprovisioned as notReady(3) if the underlying DLCI does + not persist." + ::= { frsldPvcCtrlEntry 4 } + + frsldPvcCtrlPacketFreq OBJECT-TYPE + SYNTAX Integer32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency in seconds between initiation of + specialized packets used to collect delay and / or + delivery information as supported by the device. + A value of zero indicates that no packets will + be sent." + DEFVAL { 60 } + ::= { frsldPvcCtrlEntry 5 } + + frsldPvcCtrlDelayFrSize OBJECT-TYPE + SYNTAX Integer32 (1..8188) + UNITS "octets" + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of the payload in the frame used for + calculation of network delay." + DEFVAL { 128 } + ::= { frsldPvcCtrlEntry 6 } + + frsldPvcCtrlDelayType OBJECT-TYPE + SYNTAX INTEGER { + oneWay(1), + roundTrip(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of delay measurement performed." + REFERENCE + "FRF.13: Section 3" + ::= { frsldPvcCtrlEntry 7 } + + frsldPvcCtrlDelayTimeOut OBJECT-TYPE + SYNTAX Integer32 (1..3600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A delay frame will count as a missed poll if + it is not updated in the time specified by + frsldPvcCtrlDelayTimeOut." + DEFVAL { 60 } + ::= { frsldPvcCtrlEntry 8 } + + frsldPvcCtrlPurge OBJECT-TYPE + SYNTAX Integer32 (0..172800) -- up to 48 hours + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the amount of time the device + will wait, after discovering that a DLCI does not exist, + the DLCI was deleted or the value of frsldPvcCtrlStatus + changes from active(1) to either notInService(2) or + notReady(3), prior to automatically purging the history + in the sample tables and resetting the data in the data + tables to all zeroes. If frsldPvcCtrlStatus is manually + set to destroy(6), this object does not apply." + DEFVAL { 0 } + + + ::= { frsldPvcCtrlEntry 9 } + + frsldPvcCtrlDeleteOnPurge OBJECT-TYPE + SYNTAX INTEGER { + none(1), + sampleContols(2), + all(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether rows will + automatically be deleted from the tables + when the information is purged. + + - A value of none(1) indicates that no rows + will deleted. The last known values will + be preserved. + - A value of sampleControls(2) indicates + that all associated sample control rows + will be deleted. + - A value of all(3) indicates that all + associated rows SHOULD be deleted." + DEFVAL { all } + ::= { frsldPvcCtrlEntry 10 } + + frsldPvcCtrlLastPurgeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the value of sysUpTime + at the time the information was last purged. + This value SHOULD be set to the sysUpTime + upon setting frsldPvcCtrlStatus to active(1) + for the first time. Each time a + discontinuity in the counters occurs, this + value MUST be set to the sysUpTime. + + If frsldPvcCtrlStatus has never been active(1), + this object SHOULD return 0. + + This object SHOULD be used as the discontinuity + timer for the counters in frsldPvcDataTable." + ::= { frsldPvcCtrlEntry 11 } + + -- The Frame Relay Service Level Definitions Sampling Control + -- Table + + + -- + -- This table is used to define the sample control parameters + -- of service level definitions on individual PVCs. + + frsldSmplCtrlTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrsldSmplCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Service Level Definitions + sampling control table." + ::= { frsldObjects 2 } + + frsldSmplCtrlEntry OBJECT-TYPE + SYNTAX FrsldSmplCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Service Level + Definitions sample control table." + INDEX { ifIndex, frsldPvcCtrlDlci, + frsldPvcCtrlTransmitRP, frsldPvcCtrlReceiveRP, + frsldSmplCtrlIdx } + ::= { frsldSmplCtrlTable 1 } + + FrsldSmplCtrlEntry ::= + SEQUENCE { + -- + -- Index Control Variables + -- + frsldSmplCtrlIdx Integer32, + frsldSmplCtrlStatus RowStatus, + -- + -- Collection Control Variables + -- + frsldSmplCtrlColPeriod Integer32, + frsldSmplCtrlBuckets Integer32, + frsldSmplCtrlBucketsGranted Integer32 + } + + frsldSmplCtrlIdx OBJECT-TYPE + SYNTAX Integer32 (1..256) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique index for this row in the + sample control table." + ::= { frsldSmplCtrlEntry 1 } + + + frsldSmplCtrlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the current row. This object is + used to add, delete, and disable rows in this + table. This row SHOULD NOT be removed until the + status is changed to destroy(6). When the status + changes to active(1), the collection in the sample + tables below will be activated. + + The rows added to this table MUST have a valid + ifIndex, an ifType related to frame relay, + frsldPvcCtrlDlci MUST exist for the specified + ifIndex and frsldPvcCtrlStatus MUST have a + value of active(1). + + The value of frsldPvcCtrlStatus MUST be active(1) + to transition this object to active(1). If + the value of frsldPvcCtrlStatus becomes anything + other than active(1) when the state of this object + is not active(1), this object SHOULD be set to + notReady(3). + + The data in this table SHOULD persist through power + cycles. The symantics of readiness for the rows still + applies. This means that it is possible for a row to be + reprovisioned as notReady(3) if the underlying DLCI does + not persist." + ::= { frsldSmplCtrlEntry 2 } + + frsldSmplCtrlColPeriod OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The amount of time in seconds that defines a + period of collection for the statistics. + At the end of each period, the statistics will be + sampled and a row is added to the sample table." + ::= { frsldSmplCtrlEntry 3 } + + frsldSmplCtrlBuckets OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + + + DESCRIPTION + "The number of discrete buckets over which the + data statistics are sampled. + + When this object is created or modified, the device + SHOULD attempt to set the frsldSmplCtrlBuckets- + Granted to a value as close as is possible + depending upon the implementation and the available + resources." + DEFVAL { 60 } + ::= { frsldSmplCtrlEntry 4 } + + frsldSmplCtrlBucketsGranted OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of discrete buckets granted. This + object will return 0 until frsldSmplCtrlStatus is + set to active(1). At that time the buckets will be + allocated depending upon implementation and + available resources." + ::= { frsldSmplCtrlEntry 5 } + + -- The Frame Relay Service Level Definitions PVC Data Table + -- + -- This table contains the accumulated values of + -- the collected data. This table is the table that should + -- be referenced by external polling mechanisms if time + -- based polling be desired. + + frsldPvcDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrsldPvcDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Service Level Definitions + data table. + + This table contains accumulated values of the + collected data. It is the table that should be + referenced by external polling mechanisms if + time based polling be desired." + ::= { frsldObjects 3 } + + frsldPvcDataEntry OBJECT-TYPE + SYNTAX FrsldPvcDataEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "An entry in the Frame Relay Service Level + Definitions data table." + INDEX { ifIndex, frsldPvcCtrlDlci, + frsldPvcCtrlTransmitRP, frsldPvcCtrlReceiveRP} + ::= { frsldPvcDataTable 1 } + + FrsldPvcDataEntry ::= + SEQUENCE { + frsldPvcDataMissedPolls Counter32, + frsldPvcDataFrDeliveredC Counter32, + frsldPvcDataFrDeliveredE Counter32, + frsldPvcDataFrOfferedC Counter32, + frsldPvcDataFrOfferedE Counter32, + frsldPvcDataDataDeliveredC Counter32, + frsldPvcDataDataDeliveredE Counter32, + frsldPvcDataDataOfferedC Counter32, + frsldPvcDataDataOfferedE Counter32, + frsldPvcDataHCFrDeliveredC Counter64, + frsldPvcDataHCFrDeliveredE Counter64, + frsldPvcDataHCFrOfferedC Counter64, + frsldPvcDataHCFrOfferedE Counter64, + frsldPvcDataHCDataDeliveredC Counter64, + frsldPvcDataHCDataDeliveredE Counter64, + frsldPvcDataHCDataOfferedC Counter64, + frsldPvcDataHCDataOfferedE Counter64, + frsldPvcDataUnavailableTime TimeTicks, + frsldPvcDataUnavailables Counter32 + } + + frsldPvcDataMissedPolls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of polls that have been determined + to be missed. These polls are typically associated + with the calculation of delay but may also be + used for the calculation of other statistics. If an + anticipated poll is not received in a reasonable + amount of time, it should be counted as missed. + The value used to determine the reasonable amount + of time is contained in frsldPvcCtrlDelayTimeOut. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + + + frsldPvcCtrlLastPurgeTime." + ::= { frsldPvcDataEntry 1 } + + frsldPvcDataFrDeliveredC OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliveredc)" + ::= { frsldPvcDataEntry 2 } + + frsldPvcDataFrDeliveredE OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliverede)" + ::= { frsldPvcDataEntry 3 } + + frsldPvcDataFrOfferedC OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP within CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + + + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferedc)" + ::= { frsldPvcDataEntry 4 } + + frsldPvcDataFrOfferedE OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferede)" + ::= { frsldPvcDataEntry 5 } + + frsldPvcDataDataDeliveredC OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataDeliveredc)" + ::= { frsldPvcDataEntry 6 } + + frsldPvcDataDataDeliveredE OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR. + + Discontinuities in the value of this counter can + + + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataDeliverede)" + ::= { frsldPvcDataEntry 7 } + + frsldPvcDataDataOfferedC OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP within CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataOfferedc)" + ::= { frsldPvcDataEntry 8 } + + frsldPvcDataDataOfferedE OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataOfferede)" + ::= { frsldPvcDataEntry 9 } + + frsldPvcDataHCFrDeliveredC OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR. This object is a 64-bit version + of frsldPvcDataFrDeliveredC. + + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliveredc)" + ::= { frsldPvcDataEntry 10 } + + frsldPvcDataHCFrDeliveredE OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR. This object is a 64-bit + version of frsldPvcDataFrDeliveredE. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliverede)" + ::= { frsldPvcDataEntry 11 } + + frsldPvcDataHCFrOfferedC OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP within CIR. This object is + a 64-bit version of frsldPvcDataFrOfferedC. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferedc)" + ::= { frsldPvcDataEntry 12 } + + frsldPvcDataHCFrOfferedE OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The number of frames that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR. This + object is a 64-bit version of frsldPvcDataFrOfferedE. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferede)" + ::= { frsldPvcDataEntry 13 } + + frsldPvcDataHCDataDeliveredC OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR. This object is a 64-bit version of + frsldPvcDataDataDeliveredC. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataDeliveredc)" + ::= { frsldPvcDataEntry 14 } + + frsldPvcDataHCDataDeliveredE OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR. This object is a 64-bit + version of frsldPvcDataDataDeliveredE. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataDeliverede)" + ::= { frsldPvcDataEntry 15 } + + + + frsldPvcDataHCDataOfferedC OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP within CIR. This object is + a 64-bit version of frsldPvcDataDataOfferedC. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataOfferedc)" + ::= { frsldPvcDataEntry 16 } + + frsldPvcDataHCDataOfferedE OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR. + This object is a 64-bit version of + frsldPvcDataDataOfferedE. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 5.1 (DataOfferede)" + ::= { frsldPvcDataEntry 17 } + + frsldPvcDataUnavailableTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time this PVC was declared unavailable + for any reason since this row was created." + REFERENCE + "FRF.13: Section 6.1 (OutageTime)" + ::= { frsldPvcDataEntry 18 } + + frsldPvcDataUnavailables OBJECT-TYPE + SYNTAX Counter32 + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this PVC was declared unavailable + for any reason since this row was created. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times as indicated by + frsldPvcCtrlLastPurgeTime." + REFERENCE + "FRF.13: Section 6.1 (OutageCount)" + ::= { frsldPvcDataEntry 19 } + + -- The Frame Relay Service Level Definitions PVC Sample Table + -- + -- This table contains the sampled delay, delivery and + -- availability information. + + frsldPvcSampleTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrsldPvcSampleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Frame Relay Service Level Definitions + sample table." + ::= { frsldObjects 4 } + + frsldPvcSampleEntry OBJECT-TYPE + SYNTAX FrsldPvcSampleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Frame Relay Service Level + Definitions data sample table." + INDEX { ifIndex, frsldPvcCtrlDlci, + frsldPvcCtrlTransmitRP, frsldPvcCtrlReceiveRP, + frsldSmplCtrlIdx, frsldPvcSmplIdx } + ::= { frsldPvcSampleTable 1 } + + FrsldPvcSampleEntry ::= + SEQUENCE { + frsldPvcSmplIdx Integer32, + frsldPvcSmplDelayMin Gauge32, + frsldPvcSmplDelayMax Gauge32, + frsldPvcSmplDelayAvg Gauge32, + frsldPvcSmplMissedPolls Gauge32, + frsldPvcSmplFrDeliveredC Gauge32, + + + frsldPvcSmplFrDeliveredE Gauge32, + frsldPvcSmplFrOfferedC Gauge32, + frsldPvcSmplFrOfferedE Gauge32, + frsldPvcSmplDataDeliveredC Gauge32, + frsldPvcSmplDataDeliveredE Gauge32, + frsldPvcSmplDataOfferedC Gauge32, + frsldPvcSmplDataOfferedE Gauge32, + frsldPvcSmplHCFrDeliveredC CounterBasedGauge64, + frsldPvcSmplHCFrDeliveredE CounterBasedGauge64, + frsldPvcSmplHCFrOfferedC CounterBasedGauge64, + frsldPvcSmplHCFrOfferedE CounterBasedGauge64, + frsldPvcSmplHCDataDeliveredC CounterBasedGauge64, + frsldPvcSmplHCDataDeliveredE CounterBasedGauge64, + frsldPvcSmplHCDataOfferedC CounterBasedGauge64, + frsldPvcSmplHCDataOfferedE CounterBasedGauge64, + frsldPvcSmplUnavailableTime TimeTicks, + frsldPvcSmplUnavailables Gauge32, + frsldPvcSmplStartTime TimeStamp, + frsldPvcSmplEndTime TimeStamp + } + + frsldPvcSmplIdx OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The bucket index of the current sample. This + increments once for each new bucket in the + table." + ::= { frsldPvcSampleEntry 1 } + + frsldPvcSmplDelayMin OBJECT-TYPE + SYNTAX Gauge32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum delay reported in microseconds measured + for any information packet that arrived during this + interval. + + A value of zero means that no data is available." + REFERENCE + "FRF.13: Section 3.1 (FTD)" + ::= { frsldPvcSampleEntry 2 } + + frsldPvcSmplDelayMax OBJECT-TYPE + SYNTAX Gauge32 + + + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The largest delay reported in microseconds measured + for any information packet that arrived during this + interval. + + A value of zero means that no data is available." + REFERENCE + "FRF.13: Section 3.1 (FTD)" + ::= { frsldPvcSampleEntry 3 } + + frsldPvcSmplDelayAvg OBJECT-TYPE + SYNTAX Gauge32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average delay reported in microseconds measured + for all delay packets that arrived during this + interval. + + A value of zero means that no data is available." + REFERENCE + "FRF.13: Section 3.1 (FTD)" + ::= { frsldPvcSampleEntry 4 } + + frsldPvcSmplMissedPolls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of polls that were missed during + this interval." + ::= { frsldPvcSampleEntry 5 } + + frsldPvcSmplFrDeliveredC OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + + + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCFrDeliveredC." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliveredc)" + ::= { frsldPvcSampleEntry 6 } + + frsldPvcSmplFrDeliveredE OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCFrDeliveredE." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliverede))" + ::= { frsldPvcSampleEntry 7 } + + frsldPvcSmplFrOfferedC OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP within CIR during this + interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCFrOfferedC." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferedc)" + ::= { frsldPvcSampleEntry 8 } + + frsldPvcSmplFrOfferedE OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR + during this interval. + + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCFrOfferedE." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferede)" + ::= { frsldPvcSampleEntry 9 } + + frsldPvcSmplDataDeliveredC OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCDataDeliveredC." + REFERENCE + "FRF.13: Section 5.1 (DataDeliveredc)" + ::= { frsldPvcSampleEntry 10 } + + frsldPvcSmplDataDeliveredE OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlDeliveredRP and determined to have been + sent in excess of the CIR during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCDataDeliveredE." + REFERENCE + "FRF.13: Section 5.1 (DataDeliverede)" + ::= { frsldPvcSampleEntry 11 } + + frsldPvcSmplDataOfferedC OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + + + frsldPvcCtrlTransmitRP within CIR during this + interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCDataOfferredC." + REFERENCE + "FRF.13: Section 5.1 (DataOfferedc)" + ::= { frsldPvcSampleEntry 12 } + + frsldPvcSmplDataOfferedE OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR + during this interval. + + If it is the case that the high capacity counters + are also used, this MUST report the value of the + lower 32 bits of the CounterBasedGauge64 value of + frsldPvcSmplHCDataOfferedE." + REFERENCE + "FRF.13: Section 5.1 (DataOfferede)" + ::= { frsldPvcSampleEntry 13 } + + frsldPvcSmplHCFrDeliveredC OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR during this interval. This object + is a 64-bit version of frsldPvcSmplFrDeliveredC." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliveredc)" + ::= { frsldPvcSampleEntry 14 } + + frsldPvcSmplHCFrDeliveredE OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were received at + frsldPvcCtrlReceiveRP and determined to have been + + + sent in excess of the CIR during this interval. + This object is a 64-bit version of frsldPvcSmpl- + FrDeliveredE." + REFERENCE + "FRF.13: Section 4.1 (FramesDeliverede)" + ::= { frsldPvcSampleEntry 15 } + + frsldPvcSmplHCFrOfferedC OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP within CIR during this + interval. This object is a 64-bit version of + frsldPvcSmplFrOfferedC." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferedc)" + ::= { frsldPvcSampleEntry 16 } + + frsldPvcSmplHCFrOfferedE OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR + during this interval. This object is a 64-bit + version of frsldPvcSmplFrOfferedE." + REFERENCE + "FRF.13: Section 4.1 (FramesOfferede)" + ::= { frsldPvcSampleEntry 17 } + + frsldPvcSmplHCDataDeliveredC OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent within CIR during this interval. This value + is a 64-bit version of frsldPvcSmplDataDeliveredC." + REFERENCE + "FRF.13: Section 5.1 (DataDeliveredc)" + ::= { frsldPvcSampleEntry 18 } + + frsldPvcSmplHCDataDeliveredE OBJECT-TYPE + SYNTAX CounterBasedGauge64 + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were received at + frsldPvcCtrlReceiveRP and determined to have been + sent in excess of the CIR during this interval. This + value is a 64-bit version of frsldPvcSmplData- + DeliveredE." + REFERENCE + "FRF.13: Section 5.1 (DataDeliverede)" + ::= { frsldPvcSampleEntry 19 } + + frsldPvcSmplHCDataOfferedC OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP within CIR during this + interval. This value is a 64-bit version of + frsldPvcSmplDataOfferedC." + REFERENCE + "FRF.13: Section 5.1 (DataOfferedc)" + ::= { frsldPvcSampleEntry 20 } + + frsldPvcSmplHCDataOfferedE OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that were offered through + frsldPvcCtrlTransmitRP in excess of the CIR + during this interval. This object is a 64-bit + version of frsldPvcSmplDataOfferedE." + REFERENCE + "FRF.13: Section 5.1 (DataOfferede)" + ::= { frsldPvcSampleEntry 21 } + + frsldPvcSmplUnavailableTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time this PVC was declared + unavailable for any reason during this interval." + REFERENCE + "FRF.13: Section 6.1 (OutageTime)" + ::= { frsldPvcSampleEntry 22 } + + + frsldPvcSmplUnavailables OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this PVC was declared + unavailable for any reason during this interval." + REFERENCE + "FRF.13: Section 6.1 (OutageCount)" + ::= { frsldPvcSampleEntry 23 } + + frsldPvcSmplStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this sample interval + started." + ::= { frsldPvcSampleEntry 24 } + + frsldPvcSmplEndTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this sample interval + ended. No data will be reported and the row will + not appear in the table until the sample has + been collected." + ::= { frsldPvcSampleEntry 25 } + + -- Capabilities Group + -- This group provides capabilities objects for the tables + -- that control configuration. + + frsldPvcCtrlWriteCaps OBJECT-TYPE + SYNTAX BITS { + frsldPvcCtrlStatus(0), + frsldPvcCtrlPacketFreq(1), + frsldPvcCtrlDelayFrSize(2), + frsldPvcCtrlDelayType(3), + frsldPvcCtrlDelayTimeOut(4), + frsldPvcCtrlPurge(5), + frsldPvcCtrlDeleteOnPurge(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "This object specifies the write capabilities + for the read-create objects of the PVC Control + table. If the corresponding bit is enabled (1), + the agent supports writes to that object." + ::= { frsldCapabilities 1 } + + frsldSmplCtrlWriteCaps OBJECT-TYPE + SYNTAX BITS { + frsldSmplCtrlStatus(0), + frsldSmplCtrlBuckets(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the write capabilities + for the read-create objects of the Sample Control + table. If the corresponding bit is enabled (1), + the agent supports writes to that object." + ::= { frsldCapabilities 2 } + + frsldRPCaps OBJECT-TYPE + SYNTAX BITS { + srcLocalRP(0), + ingTxLocalRP(1), + tpTxLocalRP(2), + eqiTxLocalRP(3), + eqoTxLocalRP(4), + otherTxLocalRP(5), + srcRemoteRP(6), + ingTxRemoteRP(7), + tpTxRemoteRP(8), + eqiTxRemoteRP(9), + eqoTxRemoteRP(10), + otherTxRemoteRP(11), + desLocalRP(12), + ingRxLocalRP(13), + tpRxLocalRP(14), + eqiRxLocalRP(15), + eqoRxLocalRP(16), + otherRxLocalRP(17), + desRemoteRP(18), + ingRxRemoteRP(19), + tpRxRemoteRP(20), + eqiRxRemoteRP(21), + eqoRxRemoteRP(22), + otherRxRemoteRP(23) + } + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "This object specifies the reference points that + the agent supports. This object allows the management + application to discover which rows can be created on + a specific device." + ::= { frsldCapabilities 3 } + + frsldMaxPvcCtrls OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of control rows that can be created + in frsldPvcCtrlTable. Sets to this object lower than + the current value of frsldNumPvcCtrls should result in + inconsistentValue." + ::= { frsldCapabilities 4 } + + frsldNumPvcCtrls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of rows in frsldPvcCtrlTable." + ::= { frsldCapabilities 5 } + + + frsldMaxSmplCtrls OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of control rows that can be created + in frsldSmplCtrlTable. Sets to this object lower than + the current value of frsldNumSmplCtrls should result in + inconsistentValue." + ::= { frsldCapabilities 6 } + + frsldNumSmplCtrls OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of rows in frsldSmplCtrlTable." + ::= { frsldCapabilities 7 } + + -- Conformance Information + + + frsldMIBGroups OBJECT IDENTIFIER ::= { frsldConformance 1 } + frsldMIBCompliances OBJECT IDENTIFIER ::= { frsldConformance 2 } + + -- + -- Compliance Statements + -- + + frsldCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + which support with Frame Relay Service Level + Definitions. This group defines the minimum + level of support required for compliance." + MODULE -- this module + MANDATORY-GROUPS { frsldPvcReqCtrlGroup, + frsldPvcReqDataGroup, + frsldCapabilitiesGroup} + + GROUP frsldPvcHCFrameDataGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces with corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + GROUP frsldPvcHCOctetDataGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces with corresponding instance of ifSpeed + greater than 650,000,000 bits/second." + + GROUP frsldPvcPacketGroup + DESCRIPTION + "This group is optional. Network interfaces that + allow control of the packets used to collect + information are encouraged to implement this + group." + + GROUP frsldPvcDelayCtrlGroup + DESCRIPTION + "This group is optional. Network interfaces that + offer control of the delay measurement are + strongly encouraged to implement this group." + + + GROUP frsldPvcSampleCtrlGroup + DESCRIPTION + "This group is mandatory only for those network + + + interfaces that allow data sampling." + + GROUP frsldPvcDelayDataGroup + DESCRIPTION + "This group is only mandatory when + frsldPvcDelayCtrlGroup is implemented. It is + strongly encouraged that any device capable + of measuring delay implement this group." + + GROUP frsldPvcSampleDelayGroup + DESCRIPTION + "This group is only mandatory when both + frsldPvcSampleCtrlGroup and frsldPvcDelayDataGroup + are supported." + + GROUP frsldPvcSampleDataGroup + DESCRIPTION + "This group is mandatory whenever + frsldPvcSampleCtrlGroup is supported." + + GROUP frsldPvcSampleHCFrameGroup + DESCRIPTION + "This group is mandatory whenever both + frsldPvcSampleCtrlGroup and frsldPvcHCFrameDataGroup + are supported." + + GROUP frsldPvcSampleHCDataGroup + DESCRIPTION + "This group is mandatory whenever both + frsldPvcSampleCtrlGroup and frsldPvcHCOctetDataGroup + are supported." + + GROUP frsldPvcSampleAvailGroup + DESCRIPTION + "This group is mandatory whenever + frsldPvcSampleCtrlGroup is supported." + + GROUP frsldPvcSampleGeneralGroup + DESCRIPTION + "This group is mandatory whenever + frsldPvcSampleCtrlGroup is supported." + + OBJECT frsldPvcCtrlStatus + SYNTAX RowStatus { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Row creation can be done outside of the scope of + the SNMP protocol. If this object is implemented + + + with max-access of read-only, then the only value + that MUST be returned is active(1) and + frsldPvcCtrlWriteCaps MUST return 0 for the + frsldPvcCtrlStatus(0) bit." + + OBJECT frsldPvcCtrlPurge + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If this object is + implemented with a max-access of read-only, then + the frsldPvcCtrlPurge(5) bit must return 0." + + OBJECT frsldPvcCtrlDeleteOnPurge + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. If this object is + implemented with a max-access of read-only, then + the frsldPvcCtrlDeleteOnPurge(6) bit must return + 0." + + OBJECT frsldMaxPvcCtrls + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the device either + dynamically allocates memory or statically allocates + a fixed number of entries. In the case of static + allocation, the device should always report the + correct maximum number of controls. In the case + of dynamic allocation, the device SHOULD always + report a number greater than frsldNumPvcCtrls + when allocation is possible and a number equal to + frsldNumPvcCtrls when allocation is not possible." + OBJECT frsldMaxSmplCtrls + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the device either + dynamically allocates memory or statically allocates + a fixed number of entries. In the case of static + allocation, the device should always report the + correct maximum number of controls. In the case + of dynamic allocation, the device SHOULD always + report a number greater than frsldNumSmplCtrls + when allocation is possible and a number equal to + frsldNumSmplCtrls when allocation is not possible." + + ::= { frsldMIBCompliances 1 } + + -- + + + -- Units of Conformance + -- + frsldPvcReqCtrlGroup OBJECT-GROUP + OBJECTS { + frsldPvcCtrlStatus, + frsldPvcCtrlPurge, + frsldPvcCtrlDeleteOnPurge, + frsldPvcCtrlLastPurgeTime + } + STATUS current + DESCRIPTION + "A collection of required objects providing + control information applicable to a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 1 } + + frsldPvcPacketGroup OBJECT-GROUP + OBJECTS { + frsldPvcCtrlPacketFreq + } + STATUS current + DESCRIPTION + "A collection of optional objects providing packet + level control information applicable to a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 2 } + + frsldPvcDelayCtrlGroup OBJECT-GROUP + OBJECTS { + frsldPvcCtrlDelayFrSize, + frsldPvcCtrlDelayType, + frsldPvcCtrlDelayTimeOut + } + STATUS current + DESCRIPTION + "A collection of optional objects providing delay + control information applicable to a PVC which + implements Service Level Definitions. + + If this group is implemented, frsldPvcPacketGroup + and frsldPvcDelayDataGroup MUST also be implemented." + ::= { frsldMIBGroups 3 } + + frsldPvcSampleCtrlGroup OBJECT-GROUP + OBJECTS { + frsldSmplCtrlStatus, + frsldSmplCtrlColPeriod, + frsldSmplCtrlBuckets, + + + frsldSmplCtrlBucketsGranted + } + STATUS current + DESCRIPTION + "A collection of optional objects providing sample + control information applicable to a PVC which + implements Service Level Definitions. + + If this group is implemented, frsldPvcReqDataGroup + and frsldPvcSampleGeneralGroup MUST also be + implemented." + ::= { frsldMIBGroups 4 } + + frsldPvcReqDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcDataFrDeliveredC, + frsldPvcDataFrDeliveredE, + frsldPvcDataFrOfferedC, + frsldPvcDataFrOfferedE, + frsldPvcDataDataDeliveredC, + frsldPvcDataDataDeliveredE, + frsldPvcDataDataOfferedC, + frsldPvcDataDataOfferedE, + frsldPvcDataUnavailableTime, + frsldPvcDataUnavailables + } + STATUS current + DESCRIPTION + "A collection of required objects providing data + collected on a PVC which implements Service + Level Definitions." + ::= { frsldMIBGroups 5 } + + frsldPvcDelayDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcDataMissedPolls + } + STATUS current + DESCRIPTION + "A collection of optional objects providing delay + data collected on a PVC which implements Service + Level Definitions. + + If this group is implemented, frsldPvcDelayCtrlGroup + MUST also be implemented." + ::= { frsldMIBGroups 6 } + + frsldPvcHCFrameDataGroup OBJECT-GROUP + + + OBJECTS { + frsldPvcDataHCFrDeliveredC, + frsldPvcDataHCFrDeliveredE, + frsldPvcDataHCFrOfferedC, + frsldPvcDataHCFrOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing high + capacity frame data collected on a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 7 } + + frsldPvcHCOctetDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcDataHCDataDeliveredC, + frsldPvcDataHCDataDeliveredE, + frsldPvcDataHCDataOfferedC, + frsldPvcDataHCDataOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing high + capacity octet data collected on a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 8 } + + frsldPvcSampleDelayGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplDelayMin, + frsldPvcSmplDelayMax, + frsldPvcSmplDelayAvg, + frsldPvcSmplMissedPolls + } + STATUS current + DESCRIPTION + "A collection of optional objects providing delay + sample data collected on a PVC which implements + Service Level Definitions. + + If this group is implemented, frsldPvcDelayCtrlGroup + MUST also be implemented." + ::= { frsldMIBGroups 9 } + + frsldPvcSampleDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplFrDeliveredC, + frsldPvcSmplFrDeliveredE, + + + frsldPvcSmplFrOfferedC, + frsldPvcSmplFrOfferedE, + frsldPvcSmplDataDeliveredC, + frsldPvcSmplDataDeliveredE, + frsldPvcSmplDataOfferedC, + frsldPvcSmplDataOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing data + and frame delivery sample data collected on a PVC + which implements Service Level Definitions. + + If this group is implemented, frsldPvcReqDataGroup + MUST also be implemented." + ::= { frsldMIBGroups 10 } + + frsldPvcSampleHCFrameGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplHCFrDeliveredC, + frsldPvcSmplHCFrDeliveredE, + frsldPvcSmplHCFrOfferedC, + frsldPvcSmplHCFrOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing high + capacity frame delivery sample data collected on a PVC + which implements Service Level Definitions. + + If this group is implemented, frsldPvcHCFrameDataGroup + MUST also be implemented." + ::= { frsldMIBGroups 11 } + + frsldPvcSampleHCDataGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplHCDataDeliveredC, + frsldPvcSmplHCDataDeliveredE, + frsldPvcSmplHCDataOfferedC, + frsldPvcSmplHCDataOfferedE + } + STATUS current + DESCRIPTION + "A collection of optional objects providing high + capacity data delivery sample data collected on a PVC + which implements Service Level Definitions. + + If this group is implemented, frsldPvcHCOctetDataGroup + + + MUST also be implemented." + ::= { frsldMIBGroups 12 } + + frsldPvcSampleAvailGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplUnavailableTime, + frsldPvcSmplUnavailables + } + STATUS current + DESCRIPTION + "A collection of optional objects providing + availability sample data collected on a PVC which + implements Service Level Definitions. + + If this group is implemented, frsldPvcReqDataGroup + MUST also be implemented." + ::= { frsldMIBGroups 13 } + + frsldPvcSampleGeneralGroup OBJECT-GROUP + OBJECTS { + frsldPvcSmplStartTime, + frsldPvcSmplEndTime + } + STATUS current + DESCRIPTION + "A collection of optional objects providing + general sample data collected on a PVC which + implements Service Level Definitions." + ::= { frsldMIBGroups 14 } + + frsldCapabilitiesGroup OBJECT-GROUP + OBJECTS { + frsldPvcCtrlWriteCaps, + frsldSmplCtrlWriteCaps, + frsldRPCaps, + frsldMaxPvcCtrls, + frsldNumPvcCtrls, + frsldMaxSmplCtrls, + frsldNumSmplCtrls + } + STATUS current + DESCRIPTION + "A collection of required objects providing + capability information and control for this + MIB module." + ::= { frsldMIBGroups 15 } +END diff --git a/mibs/ietf/Finisher-MIB b/mibs/ietf/Finisher-MIB new file mode 100644 index 0000000..90bfeeb --- /dev/null +++ b/mibs/ietf/Finisher-MIB @@ -0,0 +1,919 @@ +Finisher-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + hrDeviceIndex + FROM HOST-RESOURCES-MIB -- [RFC2790] + PrtInputTypeTC, PrtMarkerSuppliesTypeTC + FROM IANA-PRINTER-MIB -- [RFC3805] + printmib, PrtSubUnitStatusTC, PrtLocalizedDescriptionStringTC, + PrtMarkerSuppliesSupplyUnitTC, PrtMediaUnitTC, + PrtCapacityUnitTC, PrtMarkerSuppliesClassTC, + PresentOnOff, prtMIBConformance + FROM Printer-MIB -- [RFC3805] + FinDeviceTypeTC, FinAttributeTypeTC + FROM IANA-FINISHER-MIB; + +finisherMIB MODULE-IDENTITY + LAST-UPDATED "200406020000Z" + ORGANIZATION "PWG IEEE/ISTO Printer Working Group" + CONTACT-INFO + + "Harry Lewis + IBM + Phone (303) 924-5337 + Email: harryl@us.ibm.com + + Send comments to the printmib WG using the Finisher MIB + Project (FIN) Mailing List: fin@pwg.org + + For further information, access the PWG web page under 'Finisher + MIB': http://www.pwg.org/ + + Implementers of this specification are encouraged to join the + fin mailing list in order to participate in discussions on any + clarifications needed and registration proposals being reviewed + in order to achieve consensus." + DESCRIPTION + "The MIB module for management of printers. + Copyright (C) The Internet Society (2004). This + version of this MIB module was published + + + + in RFC 3806. For full legal notices see the RFC itself." + REVISION "200406020000Z" + DESCRIPTION + "The original version of this MIB." + ::= { mib-2 111 } + + -- Finisher Device Group (Mandatory) +-- +-- A printer may support zero or more finishing subunits. A +-- finishing device subunit may be associated with one or more +-- output subunits and one or more media path subunits. + +finDevice OBJECT IDENTIFIER ::= { printmib 30 } + +finDeviceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FinDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the finishing device subunits, + including information regarding possible configuration + options and the status for each finisher device subunit." + ::= { finDevice 1 } + +finDeviceEntry OBJECT-TYPE + SYNTAX FinDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is an entry in the finishing device table for each + possible finisher process. Each individual finisher process is + implemented by a finishing device represented in this table." + INDEX { hrDeviceIndex, finDeviceIndex } + ::= { finDeviceTable 1 } + +FinDeviceEntry ::= SEQUENCE { + finDeviceIndex Integer32, + finDeviceType FinDeviceTypeTC, + finDevicePresentOnOff PresentOnOff, + finDeviceCapacityUnit PrtCapacityUnitTC, + finDeviceMaxCapacity Integer32, + finDeviceCurrentCapacity Integer32, + finDeviceAssociatedMediaPaths OCTET STRING, + finDeviceAssociatedOutputs OCTET STRING, + finDeviceStatus PrtSubUnitStatusTC, + finDeviceDescription PrtLocalizedDescriptionStringTC + } + + + +finDeviceIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used to identify a finisher process. + Although these values may change due to a major + reconfiguration of the printer system (e.g., the addition + of new finishing processes), the values are normally + expected to remain stable across successive power cycles." + ::= { finDeviceEntry 1 } + +finDeviceType OBJECT-TYPE + SYNTAX FinDeviceTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of finishing process associated with this + table row entry." + ::= { finDeviceEntry 2 } + +finDevicePresentOnOff OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this finishing device subunit is available + and whether the device subunit is enabled." + DEFVAL { notPresent } + ::= { finDeviceEntry 3 } + +finDeviceCapacityUnit OBJECT-TYPE + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure for specifying the capacity of this + finisher device subunit." + ::= { finDeviceEntry 4 } + +finDeviceMaxCapacity OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this finisher device subunit in + finDeviceCapacityUnits. If the device can reliably sense + this value, the value is sensed by the finisher device + + + and is read-only: otherwise the value may be written by a + management or control console application. The value (-1) + means other and specifically indicates that the device + places no restrictions on this parameter. The value (-2) + means unknown." + DEFVAL { -2 } -- unknown + ::= { finDeviceEntry 5 } + +finDeviceCurrentCapacity OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current capacity of this finisher device subunit in + finDeviceCapacityUnits. If the device can reliably sense + this value, the value is sensed by the finisher and is + read-only: otherwise the value may be written by a + management or control console application. The value (-1) + means other and specifically indicates that the device + places no restrictions on this parameter. The value (-2) + means unknown." + DEFVAL { -2 } -- unknown + ::= { finDeviceEntry 6 } + +finDeviceAssociatedMediaPaths OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the media paths which can supply media for this + finisher device. The value of this object is a bit map in an + octet string with each position representing the value of a + prtMediaPathIndex. For a media path that can be a source + for this finisher device subunit, the bit position equal + to one less than the value of prtMediaPathIndex will be set. + The bits are numbered starting with the most significant bit of + the first byte being bit 0, the least significant bit of the + first byte being bit 7, the most significant of the second byte + being bit 8, and so on." + ::= { finDeviceEntry 7 } + +finDeviceAssociatedOutputs OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the printer output subunits this finisher device + subunit services. The value of this object is a bit map in an + + + octet string with each position representing the value of a + prtOutputIndex. For an output subunit that is serviced + by this finisher device subunit, the bit position equal + to one less than the value of prtOutputIndex will be set. + The bits are numbered starting with the most significant bit of + the first byte being bit 0, the least significant bit of the + first byte being bit 7, the most significant of the second byte + being bit 8, and so on." + ::= { finDeviceEntry 8 } + +finDeviceStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the current status of this finisher device + subunit." + DEFVAL { 5 } -- unknown + ::= { finDeviceEntry 9 } + +finDeviceDescription OBJECT-TYPE + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free form text description of this device subunit in the + localization specified by prtGeneralCurrentLocalization." + ::= { finDeviceEntry 10 } + + +-- Finisher Supply Group (Mandatory) +-- +-- A finisher device, but not all finisher devices, may have one or more +-- supplies associated with it. For example a finisher may use both +-- binding tape and stitching wire supplies. A finisher may also have +-- more than one source for a given type of supply e.g., multiple supply +-- sources of ink for imprinters. + +finSupply OBJECT IDENTIFIER ::= { printmib 31 } + +finSupplyTable OBJECT-TYPE + SYNTAX SEQUENCE OF FinSupplyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each unique source of supply is an entry in the finisher + supply table. Each supply entry has its own + characteristics associated with it such as colorant and + + + current supply level." + ::= { finSupply 1 } + +finSupplyEntry OBJECT-TYPE + SYNTAX FinSupplyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of finisher devices, with their associated + supplies and supplies characteristics." + INDEX { hrDeviceIndex, finSupplyIndex } + ::= { finSupplyTable 1 } + +FinSupplyEntry ::= SEQUENCE { + finSupplyIndex Integer32, + finSupplyDeviceIndex Integer32, + finSupplyClass PrtMarkerSuppliesClassTC, + finSupplyType PrtMarkerSuppliesTypeTC, + finSupplyDescription PrtLocalizedDescriptionStringTC, + finSupplyUnit PrtMarkerSuppliesSupplyUnitTC, + finSupplyMaxCapacity Integer32, + finSupplyCurrentLevel Integer32, + finSupplyColorName OCTET STRING + } + +finSupplyIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by a finisher to identify this supply + container/receptacle. Although these values may change + due to a major reconfiguration of the finisher (e.g., the + addition of new supply sources to the finisher), values + are normally expected to remain stable across successive + power cycles." + ::= { finSupplyEntry 1 } + +finSupplyDeviceIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of finDeviceIndex corresponding to the finishing + device subunit with which this finisher supply is associated. + The value zero indicates the associated finishing device is + Unknown." + ::= { finSupplyEntry 2 } + + + +finSupplyClass OBJECT-TYPE + SYNTAX PrtMarkerSuppliesClassTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates whether this supply entity + represents a supply that is consumed or a container that + is filled." + ::= { finSupplyEntry 3 } + +finSupplyType OBJECT-TYPE + SYNTAX PrtMarkerSuppliesTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this supply." + ::= { finSupplyEntry 4 } + +finSupplyDescription OBJECT-TYPE + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of this supply/receptacle in text useful + for operators and management applications and in the + localization specified by prtGeneralCurrentLocalization." + ::= { finSupplyEntry 5 } + +finSupplyUnit OBJECT-TYPE + SYNTAX PrtMarkerSuppliesSupplyUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Unit of measure of this finisher supply container or + receptacle." + ::= { finSupplyEntry 6 } + +finSupplyMaxCapacity OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this supply container/receptacle + expressed in Supply Units. If this supply container/ + receptacle can reliably sense this value, the value is + sensed and is read-only; otherwise the value may be + written by a control panel or management application. The + value (-1) means other and places no restrictions on this + + + + parameter. The value (-2) means unknown." + DEFVAL { -2 } -- unknown + ::= { finSupplyEntry 7 } + +finSupplyCurrentLevel OBJECT-TYPE + SYNTAX Integer32 (-3..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current level if this supply is a container; the + remaining space if this supply is a receptacle. If this + supply container/receptacle can reliably sense this value, + the value is sensed and is read-only; otherwise the value + may be written by a control panel or management + application. The value (-1) means other and places no + restrictions on this parameter. The value (-2) means + unknown. A value of (-3) means that the printer knows there + is some supply or remaining space." + DEFVAL { -2 } -- unknown + ::= { finSupplyEntry 8 } + + +-- Capacity Attribute Relationships +-- +-- MEDIA INPUT MEASUREMENT +-- +-- _______ | | +-- | | | +-- | | | | +-- | |_ _ _ _ _ _ _ _ _ _| ________________ |direction +-- | | | | v +-- MaxCapacity | | | +-- | | Sheets remaining | CurrentLevel +-- | | | | +-- v | | v +-- _______ +___________________+ _______ + + +finSupplyColorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the color associated with this supply." + + REFERENCE + "The PWG Standardized Media Names specification [PWGMEDIA], + section 4 Media Color Names, contains the recommended values + + + + for this object. Implementers may add additional string values. + The naming conventions in ISO 9070 are recommended in order to + avoid potential name clashes." + ::= { finSupplyEntry 9 } + + +-- Finisher Supply, Media Input Group (Conditionally Mandatory) +-- +-- A finisher device may have one or more associated supply media +-- inputs. Each entry in this table defines an input for a +-- supply media type such as inserts, covers, etc. +-- +-- This group is mandatory only if the printer system contains a +-- finisher device that requires a media supply used exclusively by a +-- finishing process. Examples are inserts or covers that are not +-- supplied by an input subunit that provides media to the marker. + +finSupplyMediaInput OBJECT IDENTIFIER ::= { printmib 32 } + +finSupplyMediaInputTable OBJECT-TYPE + SYNTAX SEQUENCE OF FinSupplyMediaInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The input subunits associated with a finisher supply media + are each represented by an entry in this table." +::= { finSupplyMediaInput 1 } + +finSupplyMediaInputEntry OBJECT-TYPE + SYNTAX FinSupplyMediaInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of finisher supply media input subunit features and + characteristics." + INDEX { hrDeviceIndex, finSupplyMediaInputIndex } + ::= { finSupplyMediaInputTable 1 } + +FinSupplyMediaInputEntry ::= SEQUENCE { + finSupplyMediaInputIndex Integer32, + finSupplyMediaInputDeviceIndex Integer32, + finSupplyMediaInputSupplyIndex Integer32, + finSupplyMediaInputType PrtInputTypeTC, + finSupplyMediaInputDimUnit PrtMediaUnitTC, + finSupplyMediaInputMediaDimFeedDir Integer32, + finSupplyMediaInputMediaDimXFeedDir Integer32, + finSupplyMediaInputStatus PrtSubUnitStatusTC, + finSupplyMediaInputMediaName OCTET STRING, + + + + finSupplyMediaInputName OCTET STRING, + finSupplyMediaInputDescription PrtLocalizedDescriptionStringTC, + finSupplyMediaInputSecurity PresentOnOff, + finSupplyMediaInputMediaWeight Integer32, + finSupplyMediaInputMediaThickness Integer32, + finSupplyMediaInputMediaType OCTET STRING + } + +finSupplyMediaInputIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by a finisher to identify this supply + media input subunit. Although these values may change + due to a major reconfiguration of the finisher (e.g., the + addition of new supply media input sources to the + finisher), values are normally expected to remain stable + across successive power cycles." + ::= { finSupplyMediaInputEntry 1 } + +finSupplyMediaInputDeviceIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of finDeviceIndex corresponding to the finishing + device subunit with which this finisher media supply is + associated. The value zero indicates the associated device + is unknown." + ::= { finSupplyMediaInputEntry 2 } + +finSupplyMediaInputSupplyIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of finSupplyIndex corresponding to the finishing + supply subunit with which this finisher media supply is + associated. The value zero indicates the associated finishing + supply is unknown or there is no applicable finisher supply + table entry." + ::= { finSupplyMediaInputEntry 3 } + +finSupplyMediaInputType OBJECT-TYPE + SYNTAX PrtInputTypeTC + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The type of technology (discriminated primarily according + to the feeder mechanism type) employed by the input + subunit." + ::= { finSupplyMediaInputEntry 4 } + +finSupplyMediaInputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure for specifying dimensional values for + this input device." + ::= { finSupplyMediaInputEntry 5 } + +finSupplyMediaInputMediaDimFeedDir OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the dimension in the + feed direction of the media that is placed or will be + placed in this input device. Feed dimension measurements + are taken parallel to the feed direction of the device and + measured in finSupplyMediaInputDimUnits. If this input + device can reliably sense this value, the value is sensed + and is read-only access. Otherwise the value is read-write + access and may be written by management or control panel + applications. The value (-1) means other and specifically + indicates that this device places no restrictions on this + parameter. The value (-2) indicates unknown. " + ::= { finSupplyMediaInputEntry 6 } + +finSupplyMediaInputMediaDimXFeedDir OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the dimension across the + feed direction of the media that is placed or will be + placed in this input device. The cross feed direction is + ninety degrees relative to the feed direction on this + device and measured in finSupplyMediaInputDimUnits. If + this input device can reliably sense this value, the value + is sensed and is read-only access. Otherwise the value is + read-write access and may be written by management or + control panel applications. The value (-1) means other and + specifically indicates that this device places no + + + + restrictions on this parameter. The value (-2) indicates + unknown. " + ::= { finSupplyMediaInputEntry 7 } + +finSupplyMediaInputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the current status of this input + device." + DEFVAL { 5 } -- unknown + ::= { finSupplyMediaInputEntry 8 } + +finSupplyMediaInputMediaName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the current media contained in this input + device. Examples are Engineering Manual Cover, Section A Tab + Divider or any ISO standard names." + ::= { finSupplyMediaInputEntry 9 } + +finSupplyMediaInputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this input subunit." + ::= { finSupplyMediaInputEntry 10 } + +finSupplyMediaInputDescription OBJECT-TYPE + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free form text description of this input subunit in the + localization specified by prtGeneralCurrentLocalization." + ::= { finSupplyMediaInputEntry 11 } + +finSupplyMediaInputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this subunit has some security associated + with it." + + + + ::= { finSupplyMediaInputEntry 12 } + +finSupplyMediaInputMediaWeight OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The weight of the media associated with this Input device + in grams per meter squared. The value (-1) means other + and specifically indicates that the device places no + restriction on this parameter. The value (-2) means + unknown. This object can be used to calculate the weight + of individual pages processed by the document finisher. + This value, when multiplied by the number of pages in a + finished set, can be used to calculate the weight of a set + before it is inserted into a mailing envelope." + ::= { finSupplyMediaInputEntry 13 } + +finSupplyMediaInputMediaThickness OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the thickness of the input media + processed by this document input subunit measured in + micrometers. This value may be used by devices (or + operators) to set up proper machine tolerances for the + feeder operation. The value (-2) indicates that the media + thickness is unknown or not used in the setup for this + input subunit." + ::= { finSupplyMediaInputEntry 14 } + +finSupplyMediaInputMediaType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the type of medium associated with this input + subunit. " + + REFERENCE + "The PWG Standardized Media Names specification [PWGMEDIA], + section 3 Media Type Names, contains the recommended values + for this object. Implementers may add additional string values. + The naming conventions in ISO 9070 are recommended in order to + avoid potential name clashes." + ::= { finSupplyMediaInputEntry 15 } + + + + +-- Finisher Device Attribute Group (Mandatory) +-- +-- A finisher device subunit may have one or more parameters that +-- cannot be specified by any other objects in the MIB. The +-- Device Attribute group facilitates the definition of these +-- parameters. The objects which define the attributes are +-- read-write, to allow both Set and Get operations. +-- +-- At least one table entry must exist for each finisher device defined +-- by the MIB. If no other entry is possible for a finisher device, the +-- deviceName(3) attribute MUST be returned. + +finDeviceAttribute OBJECT IDENTIFIER ::= { printmib 33 } + +finDeviceAttributeTable OBJECT-TYPE + SYNTAX SEQUENCE OF FinDeviceAttributeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The attribute table defines special parameters that are + applicable only to a minority of the finisher devices. + An attribute table entry is used, rather than unique + objects, to minimize the number of MIB objects and to + allow for expansion without the addition of MIB objects. + Each finisher device is represented by a separate row + in the device subunit attribute table." +::= { finDeviceAttribute 1 } + +finDeviceAttributeEntry OBJECT-TYPE + SYNTAX FinDeviceAttributeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry defines a finisher function parameter that + cannot be represented by an object in the finisher + device subunit table." + INDEX { hrDeviceIndex, finDeviceIndex, + finDeviceAttributeTypeIndex, + finDeviceAttributeInstanceIndex } +::= { finDeviceAttributeTable 1 } + +FinDeviceAttributeEntry ::= SEQUENCE { + finDeviceAttributeTypeIndex FinAttributeTypeTC, + finDeviceAttributeInstanceIndex Integer32, + finDeviceAttributeValueAsInteger Integer32, + finDeviceAttributeValueAsOctets OCTET STRING + } + + + + +finDeviceAttributeTypeIndex OBJECT-TYPE + SYNTAX FinAttributeTypeTC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the attribute type represented by this row." + ::= { finDeviceAttributeEntry 1 } + +finDeviceAttributeInstanceIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that allows the discrimination of an attribute + instance when the same attribute occurs multiple times for + a specific instance of a finisher function. The value of + this index shall be 1 if only a single instance of the + attribute occurs for the specific finisher function. + Additional values shall be assigned in a contiguous manner." + ::= { finDeviceAttributeEntry 2 } + +finDeviceAttributeValueAsInteger OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Defines the integer value of the attribute. The value of + the attribute is represented as an integer if the + finAttributeTypeTC description for the attribute has the + tag 'INTEGER:'. + + Depending upon the attribute enum definition, this object + may be either an integer, a counter, an index, or an enum. + Attributes for which the concept of an integer value is + not meaningful SHALL return a value of -1 for this + attribute." + DEFVAL { -2 } -- unknown + ::= { finDeviceAttributeEntry 3 } + +finDeviceAttributeValueAsOctets OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Contains the octet string value of the attribute. The + value of the attribute is represented as a string if the + finAttributeTypeTC description for the attribute has the + tag 'OCTETS:'. + + + + Depending upon the attribute enum definition, this object + may be either a coded character set string (text) or a + binary octet string. Attributes for which the concept of + an octet string value is not meaningful SHALL contain a + zero length string." + DEFVAL { ''H } -- empty string + ::= { finDeviceAttributeEntry 4 } + + +-- Conformance Information + +-- compliance statements + +finMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + finisher MIB." + MODULE -- this module + MANDATORY-GROUPS { finDeviceGroup, finSupplyGroup, + finDeviceAttributeGroup } + + OBJECT finDevicePresentOnOff + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finDeviceMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finDeviceCurrentCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyCurrentLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaDimFeedDir + + + + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaDimXFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputSecurity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaWeight + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaThickness + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finSupplyMediaInputMediaType + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finDeviceAttributeValueAsInteger + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT finDeviceAttributeValueAsOctets + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + + + GROUP finSupplyMediaInputGroup + DESCRIPTION + "This group is conditionally mandatory and must be included + if a finisher device requires a media supply that is used + exclusively by a finishing process." + + ::= { prtMIBConformance 5 } + + +finMIBGroups OBJECT IDENTIFIER ::= { prtMIBConformance 6 } + +finDeviceGroup OBJECT-GROUP + OBJECTS { finDeviceType, finDevicePresentOnOff, + finDeviceCapacityUnit, finDeviceMaxCapacity, + finDeviceCurrentCapacity, finDeviceAssociatedMediaPaths, + finDeviceAssociatedOutputs, finDeviceStatus, + finDeviceDescription } + STATUS current + DESCRIPTION + "The finisher device group." + ::= { finMIBGroups 1 } + +finSupplyGroup OBJECT-GROUP + OBJECTS { finSupplyDeviceIndex, finSupplyClass, finSupplyType, + finSupplyDescription, finSupplyUnit, finSupplyMaxCapacity, + finSupplyCurrentLevel, finSupplyColorName } + STATUS current + DESCRIPTION + "The finisher supply group." + ::= { finMIBGroups 2 } + +finSupplyMediaInputGroup OBJECT-GROUP + OBJECTS { finSupplyMediaInputDeviceIndex, + finSupplyMediaInputSupplyIndex, finSupplyMediaInputType, + finSupplyMediaInputDimUnit, + finSupplyMediaInputMediaDimFeedDir, + finSupplyMediaInputMediaDimXFeedDir, + finSupplyMediaInputStatus, finSupplyMediaInputMediaName, + finSupplyMediaInputName, finSupplyMediaInputDescription, + finSupplyMediaInputSecurity, + finSupplyMediaInputMediaWeight, + finSupplyMediaInputMediaThickness, + finSupplyMediaInputMediaType } + STATUS current + DESCRIPTION + "The finisher supply, media input group." + ::= { finMIBGroups 3 } + + + + +finDeviceAttributeGroup OBJECT-GROUP + OBJECTS { finDeviceAttributeValueAsInteger, + finDeviceAttributeValueAsOctets } + STATUS current + DESCRIPTION + "The finisher device attribute group. This group is mandatory + for a finisher device that contains an inserter subunit." + ::= { finMIBGroups 4 } + +END diff --git a/mibs/ietf/GMPLS-LABEL-STD-MIB b/mibs/ietf/GMPLS-LABEL-STD-MIB new file mode 100644 index 0000000..bed8ea2 --- /dev/null +++ b/mibs/ietf/GMPLS-LABEL-STD-MIB @@ -0,0 +1,724 @@ +GMPLS-LABEL-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Integer32 + FROM SNMPv2-SMI -- RFC 2578 + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- RFC 2580 + RowStatus, StorageType + FROM SNMPv2-TC -- RFC 2579 + InterfaceIndexOrZero + FROM IF-MIB -- RFC 2863 + IndexIntegerNextFree + FROM DIFFSERV-MIB -- RFC 3289 + MplsLabel, mplsStdMIB + FROM MPLS-TC-STD-MIB -- RFC 3811 + GmplsLabelTypeTC, GmplsFreeformLabelTC + FROM GMPLS-TC-STD-MIB -- RFC 4801 +; + +gmplsLabelStdMIB MODULE-IDENTITY + LAST-UPDATED + "200702270000Z" -- 27 February 2007 00:00:00 GMT + ORGANIZATION + "IETF Common Control and Measurement Plane (CCAMP) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Adrian Farrel + Old Dog Consulting + Email: adrian@olddog.co.uk + + Comments about this document should be emailed directly to the + CCAMP working group mailing list at ccamp@ops.ietf.org." + + DESCRIPTION + "Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4803; see the RFC itself for + full legal notices. + + + + + This MIB module contains managed object definitions for labels + within GMPLS systems as defined in + Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, Berger, L. (Editor), RFC 3471, + January 2003." + REVISION + "200702270000Z" -- 27 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version issued as part of RFC 4803." + ::= { mplsStdMIB 16 } + +-- no notifications are currently defined. + +gmplsLabelObjects OBJECT IDENTIFIER ::= { gmplsLabelStdMIB 1 } +gmplsLabelConformance OBJECT IDENTIFIER ::= { gmplsLabelStdMIB 2 } + +gmplsLabelIndexNext OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for gmplsLabelIndex, + or a zero to indicate that no unused value exists or is + available. + + A management application wishing to create a row in the + gmplsLabelTable may read this object and then attempt to + create a row in the table. If row creation fails (because + another application has already created a row with the + supplied index), the management application should read this + object again to get a new index value. + + When a row is created in the gmplsLabelTable with the + gmplsLabelIndex value held by this object, an implementation + MUST change the value in this object." + ::= { gmplsLabelObjects 1 } + +gmplsLabelTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsLabelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of GMPLS Labels. This table allows the representation + of the more complex label forms required for GMPLS that cannot + be held within the TEXTUAL-CONVENTION MplsLabel; that is, labels + that cannot be encoded within 32 bits. It is, nevertheless, also + capable of holding 32-bit labels or regular MPLS Labels if + desired. + + + Each entry in this table represents an individual GMPLS Label + value. The representation of Labels in tables in other MIB + modules may be achieved by a referrence to an entry in this + table by means of a row pointer into this table. The indexing + of this table provides for arbitrary indexing and also for + concatenation of labels. + + For an example of label concatenation, see RFC 3945, section 7.1. + In essence, a GMPLS Label may be composite in order to identify + a set of resources in the data plane. Practical examples are + timeslots and wavelength sets (which are not contiguous like + wavebands). + + The indexing mechanism allows multiple entries in this table to + be seen as a sequence of labels that should be concatenated. + Ordering is potentially very sensitive for concatenation." + REFERENCE + "1. Generalized Multiprotocol Label Switching (GMPLS) + Architecture, RFC 3945, section 7.1." +::= { gmplsLabelObjects 2 } + +gmplsLabelEntry OBJECT-TYPE + SYNTAX GmplsLabelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a single label value. There + are three indexes into the table. + + - The interface index may be helpful to distinguish which + labels are in use on which interfaces or to handle cases + where there are a very large number of labels in use in the + system. When label representation is desired to apply to the + whole system or when it is not important to distinguish + labels by their interfaces, this index MAY be set to zero. + + - The label index provides a way of identifying the label. + + - The label sub-index is only used for concatenated labels. It + identifies each component label. When non-concatenated labels + are used, this index SHOULD be set to zero. + + A storage type object is supplied to control the storage type + for each entry, but implementations should note that the storage + type of conceptual rows in other tables that include row + pointers to an entry in this table SHOULD dictate the storage + type of the rows in this table where the row in the other table + is more persistent." + + + INDEX { + gmplsLabelInterface, + gmplsLabelIndex, + gmplsLabelSubindex } +::= { gmplsLabelTable 1 } + +GmplsLabelEntry ::= SEQUENCE { + gmplsLabelInterface InterfaceIndexOrZero, + gmplsLabelIndex Unsigned32, + gmplsLabelSubindex Unsigned32, + gmplsLabelType GmplsLabelTypeTC, + gmplsLabelMplsLabel MplsLabel, + gmplsLabelPortWavelength Unsigned32, + gmplsLabelFreeform GmplsFreeformLabelTC, + gmplsLabelSonetSdhSignalIndex Integer32, + gmplsLabelSdhVc Integer32, + gmplsLabelSdhVcBranch Integer32, + gmplsLabelSonetSdhBranch Integer32, + gmplsLabelSonetSdhGroupBranch Integer32, + gmplsLabelWavebandId Unsigned32, + gmplsLabelWavebandStart Unsigned32, + gmplsLabelWavebandEnd Unsigned32, + gmplsLabelStorageType StorageType, + gmplsLabelRowStatus RowStatus +} + +gmplsLabelInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface on which this label is used. If this object is set + to zero, the label MUST have applicability across the + whole system and not be limited to a single interface." +::= { gmplsLabelEntry 1 } + +gmplsLabelIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index into the table to identify a label. + + Note that implementations that are representing 32-bit labels + within this table MAY choose to align this index with the value + of the label, and this may result in the use of the value zero + since it represents a valid label value. Such implementation + should be aware of the implications of sparsely populated + + + tables. + + A management application may read the gmplsLabelIndexNext + object to find a suitable value for this object." +::= { gmplsLabelEntry 2 } + +gmplsLabelSubindex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "In conjunction with gmplsLabelInterface and gmplsLabelIndex, + this object uniquely identifies this row. This sub-index allows + a single GMPLS Label to be defined as a concatenation of labels. + This is particularly useful in TDM. + + The ordering of sub-labels is strict with the sub-label with + the lowest gmplsLabelSubindex appearing first. Note that all + sub-labels of a single GMPLS Label must share the same + gmplsLabelInterface and gmplsLabelIndex values. For labels that + are not composed of concatenated sub-labels, this value SHOULD + be set to zero." +::= { gmplsLabelEntry 3 } + +gmplsLabelType OBJECT-TYPE + SYNTAX GmplsLabelTypeTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the type of this label. Note that this object does + not determine whether MPLS or GMPLS signaling is in use: a value + of gmplsMplsLabel(1) denotes that an MPLS Packet Label is + present in the gmplsLabelMplsLabel object and encoded using the + MplsLabel TEXTUAL-CONVENTION (may be a 20-bit MPLS Label, a 10- + or 23-bit Frame Relay Label, or an Asynchronous Transfer Mode + (ATM) Label), but does not describe whether this is signaled + using MPLS or GMPLS. + + The value of this object helps determine which of the following + objects are valid. This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3." +::= { gmplsLabelEntry 4 } + +gmplsLabelMplsLabel OBJECT-TYPE + SYNTAX MplsLabel + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of an MPLS Label (that is a Packet Label) if this + table is used to store it. This may be used in MPLS systems even + though the label values can be adequately stored in the MPLS MIB + modules (MPLS-LSR-STD-MIB and MPLS-TE-STD-MIB). Furthermore, in + mixed MPLS and GMPLS systems, it may be advantageous to store all + labels in a single label table. Lastly, in GMPLS systems where + Packet Labels are used (that is in systems that use GMPLS + signaling and GMPLS Labels for packet switching), it may be + desirable to use this table. + + This object is only valid if gmplsLabelType is set + to gmplsMplsLabel(1). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. MPLS Label Stack Encoding, RFC 3032." + DEFVAL { 0 } +::= { gmplsLabelEntry 5 } + +gmplsLabelPortWavelength OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of a Port or Wavelength Label when carried as a + Generalized Label. Only valid if gmplsLabelType is set to + gmplsPortWavelengthLabel(2). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.2.1.1." + DEFVAL { 0 } +::= { gmplsLabelEntry 6 } + +gmplsLabelFreeform OBJECT-TYPE + SYNTAX GmplsFreeformLabelTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of a Freeform Generalized Label that does not conform + to one of the standardized label encodings or that an + implementation chooses to represent as an octet string without + further decoding. Only valid if gmplsLabelType is set to + gmplsFreeformLabel(3). This object cannot be modified + if gmplsLabelRowStatus is active(1)." + REFERENCE + + + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.2." + DEFVAL { '00'h } +::= { gmplsLabelEntry 7 } + +gmplsLabelSonetSdhSignalIndex OBJECT-TYPE + SYNTAX Integer32 (0..4095) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Signal Index value (S) of a SONET or SDH Generalized Label. + Zero indicates that this field is non-significant. Only valid if + gmplsLabelType is set to gmplsSonetLabel(4) or gmplsSdhLabel(5). + This object cannot be modified if gmplsLabelRowStatus is + active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 8 } + +gmplsLabelSdhVc OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VC Indicator (U) of an SDH Generalized Label. Zero indicates + that this field is non-significant. Only valid if gmplsLabelType + is set to gmplsSdhLabel(5). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 9 } + +gmplsLabelSdhVcBranch OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VC Branch Indicator (K) of an SDH Generalized Label. Zero + indicates that this field is non-significant. Only valid if + gmplsLabelType is set to gmplsSdhLabel(5). This + object cannot be modified if gmplsLabelRowStatus is active(1)." + REFERENCE + + + + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 10 } + +gmplsLabelSonetSdhBranch OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Branch Indicator (L) of a SONET or SDH Generalized Label. + Zero indicates that this field is non-significant. Only valid + gmplsLabelType is set to gmplsSonetLabel(4) or + gmplsSdhLabel(5). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 11 } + +gmplsLabelSonetSdhGroupBranch OBJECT-TYPE + SYNTAX Integer32 (0..15) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Group Branch Indicator (M) of a SONET or SDH Generalized + Label. Zero indicates that this field is non-significant. + Only valid if gmplsLabelType is set to gmplsSonetLabel(4) or + gmplsSdhLabel(5). This object cannot be modified if + gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + Digital Hierarchy (SDH) Control, RFC 4606, section 3." + DEFVAL { 0 } +::= { gmplsLabelEntry 12 } + +gmplsLabelWavebandId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The waveband identifier component of a Waveband Label. Only + valid if gmplsLabelType is set to gmplsWavebandLabel(6). This + object cannot be modified if gmplsLabelRowStatus is active(1)." + + + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.3." + DEFVAL { 0 } +::= { gmplsLabelEntry 13 } + +gmplsLabelWavebandStart OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The starting label component of a Waveband Label. Only valid if + gmplsLabelType is set to gmplsWavebandLabel(6). This object + cannot be modified if gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.3." + DEFVAL { 0 } +::= { gmplsLabelEntry 14 } + +gmplsLabelWavebandEnd OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The end label component of a Waveband Label. Only valid if + gmplsLabelType is set to gmplsWavebandLabel(6). This object + cannot be modified if gmplsLabelRowStatus is active(1)." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.3." + DEFVAL { 0 } +::= { gmplsLabelEntry 15 } + +gmplsLabelStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this row. The + agent MUST ensure that this object's value remains consistent + with the storage type of any rows in other tables that contain + pointers to this row. In particular, the storage type of this + row must be at least as permanent as that of any row that points + to it. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + REFERENCE + + + "1. Textual Conventions for SMIv2, STD 58, RFC 2579, section 2." + DEFVAL { volatile } +::= { gmplsLabelEntry 16 } + +gmplsLabelRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or delete a row in + this table. When a row in this table has a row in the active(1) + state, no objects in this row can be modified except the + gmplsLabelRowStatus and gmplsLabelStorageType. + + The gmplsLabelType object does not have a default and must be + set before a row can become active. The corresponding label + objects (dependent on the value of gmplsLabelType) should also + be set unless they happen to need to use the specified default + values as follows: + + gmplsLabelType setting objects to be set + -------------------------------------------------------------- + gmplsMplsLabel(1) gmplsLabelMplsLabel + + gmplsPortWavelengthLabel(2) gmplsLabelPortWavelength + + gmplsFreeformLabel(3) gmplsLabelFreeform + + gmplsSonetLabel(4) gmplsLabelSonetSdhSignalIndex + gmplsLabelSdhVc + gmplsLabelSdhVcBranch + gmplsLabelSonetSdhBranch + gmplsLabelSonetSdhGroupBranch + + gmplsSdhLabel(5) gmplsLabelSonetSdhSignalIndex + gmplsLabelSdhVc + gmplsLabelSdhVcBranch + gmplsLabelSonetSdhBranch + gmplsLabelSonetSdhGroupBranch + + gmplsWavebandLabel(6) gmplsLabelWavebandId + gmplsLabelWavebandStart + gmplsLabelWavebandEnd" +::= { gmplsLabelEntry 17 } + +gmplsLabelGroups + OBJECT IDENTIFIER ::= { gmplsLabelConformance 1 } + + + +gmplsLabelCompliances + OBJECT IDENTIFIER ::= { gmplsLabelConformance 2 } + +gmplsLabelModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only provide + read-only support for GMPLS-LABEL-STD-MIB. Such devices can then + be monitored but cannot be configured using this MIB module." + + MODULE -- this module + + -- The mandatory groups have to be implemented by LSRs claiming + -- support for this MIB module. This MIB module is, however, not + -- mandatory for a working implementation of a GMPLS LSR with full + -- MIB support if the GMPLS Labels in use can be represented within + -- a 32-bit quantity. + + MANDATORY-GROUPS { + gmplsLabelTableGroup + } + + GROUP gmplsLabelPacketGroup + DESCRIPTION + "This group extends gmplsLabelTableGroup for implementations that + support Packet Labels. It is optional for implementations that + do not support Packet Labels." + + GROUP gmplsLabelPortWavelengthGroup + DESCRIPTION + "This group extends gmplsLabelTableGroup for implementations that + support Port and Wavelength Labels. It is optional for + implementations that do not support Wavelength Labels." + + GROUP gmplsLabelFreeformGroup + DESCRIPTION + "This group extends gmplsLabelTableGroup for implementations that + support Freeform Labels. It is optional for implementations that + do not support Freeform Labels." + + GROUP gmplsLabelSonetSdhGroup + DESCRIPTION + "This group extends gmplsLabelTableGroup for implementations that + support SONET or SDH Labels. It is optional for implementations + that do not support SONET or SDH Labels." + + GROUP gmplsLabelWavebandGroup + DESCRIPTION + + + + "This group extends gmplsLabelTableGroup for implementations that + support Waveband Labels. It is optional for implementations that + do not support Waveband Labels." + OBJECT gmplsLabelType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelMplsLabel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelPortWavelength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelFreeform + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSonetSdhSignalIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSdhVc + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSdhVcBranch + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSonetSdhBranch + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelSonetSdhGroupBranch + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT gmplsLabelWavebandId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT gmplsLabelWavebandStart + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelWavebandEnd + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsLabelRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is + the only status that needs to be supported." + +::= { gmplsLabelCompliances 1 } + +gmplsLabelModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that support the complete + GMPLS-LABEL-STD-MIB module. + + The mandatory groups have to be implemented by GMPLS LSRs + claiming support for this MIB module. This MIB module is, + however, not mandatory for a working implementation of a GMPLS + LSR with full MIB support if the GMPLS Labels in use can be + represented within a 32-bit quantity." + + MODULE -- this module + + MANDATORY-GROUPS { + gmplsLabelTableGroup + } + +::= { gmplsLabelCompliances 2 } + + + + +gmplsLabelTableGroup OBJECT-GROUP + OBJECTS { + gmplsLabelIndexNext, + gmplsLabelType, + gmplsLabelStorageType, + gmplsLabelRowStatus + } + + STATUS current + DESCRIPTION + "Necessary, but not sufficient, set of objects to implement label + table support. In addition, depending on the type of labels + supported, the following other groups defined below are + mandatory: + + gmplsLabelWavebandGroup and/or + gmplsLabelPacketGroup and/or + gmplsLabelPortWavelengthGroup and/or + gmplsLabelFreeformGroup and/or + gmplsLabelSonetSdhGroup." +::= { gmplsLabelGroups 1 } + +gmplsLabelPacketGroup OBJECT-GROUP + OBJECTS { + gmplsLabelMplsLabel + } + STATUS current + DESCRIPTION + "Object needed to implement Packet (MPLS) Labels." +::= { gmplsLabelGroups 2 } + +gmplsLabelPortWavelengthGroup OBJECT-GROUP + OBJECTS { + gmplsLabelPortWavelength + } + STATUS current + DESCRIPTION + "Object needed to implement Port and Wavelength Labels." +::= { gmplsLabelGroups 3 } + +gmplsLabelFreeformGroup OBJECT-GROUP + OBJECTS { + gmplsLabelFreeform + } + STATUS current + DESCRIPTION + "Object needed to implement Freeform Labels." +::= { gmplsLabelGroups 4 } + + + +gmplsLabelSonetSdhGroup OBJECT-GROUP + OBJECTS { + gmplsLabelSonetSdhSignalIndex, + gmplsLabelSdhVc, + gmplsLabelSdhVcBranch, + gmplsLabelSonetSdhBranch, + gmplsLabelSonetSdhGroupBranch + } + STATUS current + DESCRIPTION + "Objects needed to implement SONET and SDH Labels." +::= { gmplsLabelGroups 5 } + +gmplsLabelWavebandGroup OBJECT-GROUP + OBJECTS { + gmplsLabelWavebandId, + gmplsLabelWavebandStart, + gmplsLabelWavebandEnd + } + STATUS current + DESCRIPTION + "Objects needed to implement Waveband Labels." +::= { gmplsLabelGroups 6 } + +END diff --git a/mibs/ietf/GMPLS-LSR-STD-MIB b/mibs/ietf/GMPLS-LSR-STD-MIB new file mode 100644 index 0000000..7d6cf44 --- /dev/null +++ b/mibs/ietf/GMPLS-LSR-STD-MIB @@ -0,0 +1,531 @@ +GMPLS-LSR-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, zeroDotZero + FROM SNMPv2-SMI -- RFC 2578 + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- RFC 2580 + RowPointer + FROM SNMPv2-TC -- RFC 2579 + GmplsSegmentDirectionTC + FROM GMPLS-TC-STD-MIB -- RFC 4801 + mplsInterfaceIndex, mplsInSegmentIndex, mplsOutSegmentIndex, + mplsInterfaceGroup, mplsInSegmentGroup, mplsOutSegmentGroup, + mplsXCGroup, mplsPerfGroup, mplsLsrNotificationGroup + FROM MPLS-LSR-STD-MIB -- RFC 3813 + ifGeneralInformationGroup, ifCounterDiscontinuityGroup + FROM IF-MIB -- RFC 2863 + mplsStdMIB + FROM MPLS-TC-STD-MIB -- RFC 3811 +; + +gmplsLsrStdMIB MODULE-IDENTITY + LAST-UPDATED + "200702270000Z" -- 27 February 2007 00:00:00 GMT + ORGANIZATION + "IETF Common Control And Measurement Plane (CCAMP) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + Adrian Farrel + Old Dog Consulting + + + + Email: adrian@olddog.co.uk + Comments about this document should be emailed directly to the + CCAMP working group mailing list at ccamp@ops.ietf.org." + + DESCRIPTION + "Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4803; see the RFC itself for + full legal notices. + + This MIB module contains managed object definitions for the + Generalized Multiprotocol (GMPLS) Label Switching Router as + defined in Generalized Multi-Protocol Label Switching (GMPLS) + Architecture, Mannie et al., RFC 3945, October 2004." + REVISION + "200702270000Z" -- 27 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version issued as part of RFC 4803." + ::= { mplsStdMIB 15 } + +-- no notifications are currently defined. +gmplsLsrObjects OBJECT IDENTIFIER ::= { gmplsLsrStdMIB 1 } +gmplsLsrConformance OBJECT IDENTIFIER ::= { gmplsLsrStdMIB 2 } + +gmplsInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface GMPLS capability and + associated information. It extends the information in the + mplsInterfaceTable of MPLS-LSR-STD-MIB through a + sparse augmentation relationship." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + ::= { gmplsLsrObjects 1 } + +gmplsInterfaceEntry OBJECT-TYPE + SYNTAX GmplsInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in this table is created automatically by an + LSR for each interface that is both capable of supporting + GMPLS and configured to support GMPLS. Note that + support of GMPLS is not limited to control plane signaling, + but may include data-plane-only function configured through + SNMP SET commands performed on this MIB module. + + + + A conceptual row in this table may also be created via SNMP + SET commands or automatically by the LSR to supplement a + conceptual row in the mplsInterfaceTable where the interface + is not capable of GMPLS but where the other objects carried + in this row provide useful additional information for an + MPLS interface. + + A conceptual row in this table will exist if and only if a + corresponding entry in the mplsInterfaceTable exists, and a + corresponding entry in the ifTable exists with ifType = mpls(166). + If the associated entry in the ifTable is operationally disabled + (thus removing the GMPLS capabilities on the interface) or the + entry in the mplsInterfaceTable is deleted, the corresponding entry + in this table MUST be deleted shortly thereafter. + + The indexes are the same as for the mplsInterfaceTable. Thus, the + entry with index 0 represents the per-platform label space and + contains parameters that apply to all interfaces that + participate in the per-platform label space." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + INDEX { mplsInterfaceIndex } +::= { gmplsInterfaceTable 1 } + +GmplsInterfaceEntry ::= SEQUENCE { + gmplsInterfaceSignalingCaps BITS, + gmplsInterfaceRsvpHelloPeriod Unsigned32 +} + +gmplsInterfaceSignalingCaps OBJECT-TYPE + SYNTAX BITS { + unknown(0), + rsvpGmpls(1), + crldpGmpls(2), -- note the use of CR-LDP is deprecated + otherGmpls(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines the signaling capabilities on this interface. Multiple + bits may legitimately be set at once, but if 'unknown' is set + then no other bit may be set. Setting no bits implies that GMPLS + signaling cannot be performed on this interface and all LSPs + must be manually provisioned or that this table entry is only + present to supplement an entry in the mplsInterfaceTable by + providing the information carried in other objects in this row." + REFERENCE + + + + "1. Generalized MPLS Signaling - CR-LDP Extensions, RFC 3472. + 2. The Multiprotocol Label Switching (MPLS) Working Group + decision on MPLS signaling protocols, RFC 3468. + 3. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473." + DEFVAL { { rsvpGmpls } } +::= { gmplsInterfaceEntry 1 } + +gmplsInterfaceRsvpHelloPeriod OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Period, in milliseconds, between sending Resource Reservation + Protocol (RSVP) Hello messages on this interface. A value of 0 + indicates that no Hello messages should be sent on this + interface. + + This object is only valid if gmplsInterfaceSignalingCaps has no + bits set or includes the rsvpGmpls bit." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + section 5. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 9.3." + DEFVAL { 3000 } +::= { gmplsInterfaceEntry 2 } + +gmplsInSegmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsInSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table sparse augments the mplsInSegmentTable of + MPLS-LSR-STD-MIB to provide GMPLS-specific information about + incoming segments to an LSR." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." +::= { gmplsLsrObjects 2 } + +gmplsInSegmentEntry OBJECT-TYPE + SYNTAX GmplsInSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table extends the representation of an incoming + segment represented by an entry in the mplsInSegmentTable in + + + + MPLS-LSR-STD-MIB through a sparse augmentation. An entry can be + created by a network administrator via SNMP SET commands, or in + response to signaling protocol events. + + Note that the storage type for this entry is given by the value + of mplsInSegmentStorageType in the corresponding entry of the + mplsInSegmentTable." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + INDEX { mplsInSegmentIndex } +::= { gmplsInSegmentTable 1 } + +GmplsInSegmentEntry ::= SEQUENCE { + gmplsInSegmentDirection GmplsSegmentDirectionTC, + gmplsInSegmentExtraParamsPtr RowPointer +} + +gmplsInSegmentDirection OBJECT-TYPE + SYNTAX GmplsSegmentDirectionTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the direction of data flow on this + segment. This object cannot be modified if + mplsInSegmentRowStatus for the corresponding entry in the + mplsInSegmentTable is active(1)." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + DEFVAL { forward } +::= { gmplsInSegmentEntry 1 } + +gmplsInSegmentExtraParamsPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some tunnels will run over transports that can usefully support + technology-specific additional parameters (for example, + Synchronous Optical Network (SONET) resource usage). Such can be + supplied from an external table and referenced from here. A value + of zeroDotZero in this attribute indicates that there is no such + additional information." + DEFVAL { zeroDotZero } + ::= { gmplsInSegmentEntry 2 } + +gmplsOutSegmentTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF GmplsOutSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table sparse augments the mplsOutSegmentTable of + MPLS-LSR-STD-MIB to provide GMPLS-specific information about + outgoing segments from an LSR." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." +::= { gmplsLsrObjects 3 } + +gmplsOutSegmentEntry OBJECT-TYPE + SYNTAX GmplsOutSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table extends the representation of an outgoing + segment represented by an entry in the mplsOutSegmentTable of + MPLS-LSR-STD-MIB through a sparse augmentation. An entry can be + created by a network administrator via SNMP SET commands, or in + response to signaling protocol events. + + Note that the storage type for this entry is given by the value + of mplsOutSegmentStorageType in the corresponding entry of the + mplsOutSegmentTable." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + INDEX { mplsOutSegmentIndex } +::= { gmplsOutSegmentTable 1 } + +GmplsOutSegmentEntry ::= SEQUENCE { + gmplsOutSegmentDirection GmplsSegmentDirectionTC, + gmplsOutSegmentTTLDecrement Unsigned32, + gmplsOutSegmentExtraParamsPtr RowPointer +} + +gmplsOutSegmentDirection OBJECT-TYPE + SYNTAX GmplsSegmentDirectionTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the direction of data flow on this + segment. This object cannot be modified if + mplsOutSegmentRowStatus for the corresponding entry in the + mplsOutSegmentTable is active(1)." + REFERENCE + + + + "1. Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813." + DEFVAL { forward } +::= { gmplsOutSegmentEntry 1 } + +gmplsOutSegmentTTLDecrement OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the amount by which to decrement the Time + to Live (TTL) of any payload packets forwarded on this segment if + per-hop decrementing is being done. + + A value of zero indicates that no decrement should be made or + that per-hop decrementing is not in use. + + See the gmplsTunnelTTLDecrement object in the gmplsTunnelTable + of GMPLS-TE-STD-MIB for a value by which to decrement the TTL + for the whole of a tunnel. + + This object cannot be modified if mplsOutSegmentRowStatus for + the associated entry in the mplsOutSegmentTable is active(1)." + REFERENCE + "1. Time To Live (TTL) Processing in Multi-Protocol Label + Switching (MPLS) Networks, RFC 3443. + 2. Generalized Multiprotocol Label Switching (GMPLS) Traffic + Engineering Management Information Base, RFC 4802." + DEFVAL { 0 } +::= { gmplsOutSegmentEntry 2 } + +gmplsOutSegmentExtraParamsPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some tunnels will run over transports that can usefully support + technology-specific additional parameters (for example, SONET + resource usage). Such can be supplied from an external table and + referenced from here. + + A value of zeroDotZero in this attribute indicates that there is + no such additional information." + DEFVAL { zeroDotZero } + ::= { gmplsOutSegmentEntry 3 } + +gmplsLsrGroups + OBJECT IDENTIFIER ::= { gmplsLsrConformance 1 } + + + +gmplsLsrCompliances + OBJECT IDENTIFIER ::= { gmplsLsrConformance 2 } + +-- Compliance requirement for fully compliant implementations. + +gmplsLsrModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide full support for + GMPLS-LSR-STD-MIB. + + The mandatory group has to be implemented by all LSRs that + originate, terminate, or act as transit for TE-LSPs/tunnels. + In addition, depending on the type of tunnels supported, other + groups become mandatory as explained below." + + MODULE IF-MIB -- The Interfaces Group MIB, RFC 2863. + + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE MPLS-LSR-STD-MIB -- The MPLS-LSR-STD-MIB, RFC3813 + + MANDATORY-GROUPS { + mplsInterfaceGroup, + mplsInSegmentGroup, + mplsOutSegmentGroup, + mplsXCGroup, + mplsPerfGroup, + mplsLsrNotificationGroup + } + + MODULE -- this module + + MANDATORY-GROUPS { + gmplsInterfaceGroup, + gmplsInSegmentGroup, + gmplsOutSegmentGroup + } + + OBJECT gmplsInSegmentDirection + SYNTAX GmplsSegmentDirectionTC + MIN-ACCESS read-only + DESCRIPTION + "The only valid value for unidirectional LSPs is forward(1)." + + + + + OBJECT gmplsOutSegmentDirection + SYNTAX GmplsSegmentDirectionTC + MIN-ACCESS read-only + DESCRIPTION + "The only valid value for unidirectional LSPs is forward(1)." + + OBJECT gmplsOutSegmentTTLDecrement + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsInSegmentExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT gmplsOutSegmentExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +::= { gmplsLsrCompliances 1 } + +-- Compliance requirement for implementations that provide read-only +-- access. + +gmplsLsrModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only provide + read-only support for GMPLS-LSR-STD-MIB. Such devices can then + be monitored but cannot be configured using this MIB module." + + MODULE IF-MIB -- The interfaces Group MIB, RFC 2863 + + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE MPLS-LSR-STD-MIB + + MANDATORY-GROUPS { + mplsInterfaceGroup, + mplsInSegmentGroup, + mplsOutSegmentGroup, + mplsXCGroup, + mplsPerfGroup + } + + + + MODULE -- this module + + MANDATORY-GROUPS { + gmplsInterfaceGroup, + gmplsInSegmentGroup, + gmplsOutSegmentGroup + } + + OBJECT gmplsInterfaceSignalingCaps + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsInterfaceRsvpHelloPeriod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsInSegmentDirection + SYNTAX GmplsSegmentDirectionTC + MIN-ACCESS read-only + DESCRIPTION + "The only valid value for unidirectional LSPs is forward(1)." + + OBJECT gmplsInSegmentExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT gmplsOutSegmentDirection + MIN-ACCESS read-only + DESCRIPTION + "The only valid value for unidirectional LSPs is forward(1)." + + OBJECT gmplsOutSegmentTTLDecrement + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT gmplsOutSegmentExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +::= { gmplsLsrCompliances 2 } + +gmplsInterfaceGroup OBJECT-GROUP + OBJECTS { + gmplsInterfaceSignalingCaps, + + + + gmplsInterfaceRsvpHelloPeriod + } + STATUS current + DESCRIPTION + "Collection of objects that provide additional + information for an MPLS interface and are needed + for GMPLS interface configuration and performance + information." +::= { gmplsLsrGroups 1 } + +gmplsInSegmentGroup OBJECT-GROUP + OBJECTS { + gmplsInSegmentDirection, + gmplsInSegmentExtraParamsPtr + } + STATUS current + DESCRIPTION + "Collection of objects that provide additional + information for an MPLS in-segment and are needed + for GMPLS in-segment configuration and performance + information." +::= { gmplsLsrGroups 2 } + +gmplsOutSegmentGroup OBJECT-GROUP + OBJECTS { + gmplsOutSegmentDirection, + gmplsOutSegmentTTLDecrement, + gmplsOutSegmentExtraParamsPtr + } + STATUS current + DESCRIPTION + "Collection of objects that provide additional + information for an MPLS out-segment and are needed + for GMPLS out-segment configuration and performance + information." +::= { gmplsLsrGroups 3 } +END diff --git a/mibs/ietf/GMPLS-TC-STD-MIB b/mibs/ietf/GMPLS-TC-STD-MIB new file mode 100644 index 0000000..fc98a29 --- /dev/null +++ b/mibs/ietf/GMPLS-TC-STD-MIB @@ -0,0 +1,129 @@ +GMPLS-TC-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI -- RFC 2578 + TEXTUAL-CONVENTION + FROM SNMPv2-TC -- RFC 2579 + mplsStdMIB + FROM MPLS-TC-STD-MIB -- RFC 3811 +; + +gmplsTCStdMIB MODULE-IDENTITY + LAST-UPDATED + "200702280000Z" -- 28 February 2007 00:00:00 GMT + ORGANIZATION + "IETF Common Control and Measurement Plane (CCAMP) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Adrian Farrel + Old Dog Consulting + Email: adrian@olddog.co.uk + + Comments about this document should be emailed directly to the + CCAMP working group mailing list at ccamp@ops.ietf.org" + DESCRIPTION + "Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4801; see the RFC itself for + full legal notices. + + This MIB module defines TEXTUAL-CONVENTIONs for concepts used in + Generalized Multiprotocol Label Switching (GMPLS) networks." + REVISION + "200702280000Z" -- 28 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version published as part of RFC 4801." +::= { mplsStdMIB 12 } + +GmplsFreeformLabelTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "This TEXTUAL-CONVENTION can be used as the syntax of an object + that contains any GMPLS Label. Objects with this syntax can be + used to represent labels that have label types that are not + defined in any RFCs. The freeform GMPLS Label may also be used + by systems that do not wish to represent labels that have + label types defined in RFCs using type-specific syntaxes." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3.2." + SYNTAX OCTET STRING (SIZE (0..64)) + +GmplsLabelTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Determines the interpretation that should be applied to an + object that encodes a label. The possible types are: + + gmplsMplsLabel(1) - The label is an MPLS Packet, Cell, + or Frame Label and is encoded as + described for the TEXTUAL- + CONVENTION MplsLabel defined in + RFC 3811. + + gmplsPortWavelengthLabel(2) - The label is a Port or Wavelength + Label as defined in RFC 3471. + + gmplsFreeformLabel(3) - The label is any form of label + encoded as an OCTET STRING using + the TEXTUAL-CONVENTION + GmplsFreeformLabel. + + gmplsSonetLabel(4) - The label is a Synchronous Optical + Network (SONET) Label as + defined in RFC 4606. + + gmplsSdhLabel(5) - The label is a Synchronous Digital + Hierarchy (SDH) Label as defined + in RFC 4606. + + gmplsWavebandLabel(6) - The label is a Waveband Label as + defined in RFC 3471." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 3. + 2. Definition of Textual Conventions and for Multiprotocol Label + Switching (MPLS) Management, RFC 3811, section 3. + 3. Generalized Multi-Protocol Label Switching (GMPLS) Extensions + for Synchronous Optical Network (SONET) and Synchronous + + + + Digital Hierarchy (SDH) Control, RFC 4606." + SYNTAX INTEGER { + gmplsMplsLabel(1), + gmplsPortWavelengthLabel(2), + gmplsFreeformGeneralizedLabel(3), + gmplsSonetLabel(4), + gmplsSdhLabel(5), + gmplsWavebandLabel(6) + } + +GmplsSegmentDirectionTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The direction of data flow on an Label Switched Path (LSP) + segment with respect to the head of the LSP. + + Where an LSP is signaled using a conventional signaling + protocol, the 'head' of the LSP is the source of the signaling + (also known as the ingress) and the 'tail' is the destination + (also known as the egress). For unidirectional LSPs, this + usually matches the direction of flow of data. + + For manually configured unidirectional LSPs, the direction of + the LSP segment matches the direction of flow of data. For + manually configured bidirectional LSPs, an arbitrary decision + must be made about which LER is the 'head'." + SYNTAX INTEGER { + forward(1), -- data flows from head-end of LSP toward tail-end + reverse(2) -- data flows from tail-end of LSP toward head-end + } + +END diff --git a/mibs/ietf/GMPLS-TE-STD-MIB b/mibs/ietf/GMPLS-TE-STD-MIB new file mode 100644 index 0000000..96bfa45 --- /dev/null +++ b/mibs/ietf/GMPLS-TE-STD-MIB @@ -0,0 +1,1849 @@ +GMPLS-TE-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Unsigned32, Counter32, Counter64, zeroDotZero, Gauge32 + FROM SNMPv2-SMI -- RFC 2578 + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + TruthValue, TimeStamp, RowPointer + FROM SNMPv2-TC -- RFC 2579 + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB -- RFC 4001 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + mplsTunnelIndex, mplsTunnelInstance, mplsTunnelIngressLSRId, + mplsTunnelEgressLSRId, mplsTunnelHopListIndex, + mplsTunnelHopPathOptionIndex, mplsTunnelHopIndex, + mplsTunnelARHopListIndex, mplsTunnelARHopIndex, + mplsTunnelCHopListIndex, mplsTunnelCHopIndex, + mplsTunnelEntry, + mplsTunnelAdminStatus, mplsTunnelOperStatus, + mplsTunnelGroup, mplsTunnelScalarGroup + FROM MPLS-TE-STD-MIB -- RFC3812 + IANAGmplsLSPEncodingTypeTC, IANAGmplsSwitchingTypeTC, + IANAGmplsGeneralizedPidTC, IANAGmplsAdminStatusInformationTC + FROM IANA-GMPLS-TC-MIB + mplsStdMIB + FROM MPLS-TC-STD-MIB -- RFC 3811 +; + + + + + + +gmplsTeStdMIB MODULE-IDENTITY + LAST-UPDATED + "200702270000Z" -- 27 February 2007 00:00:00 GMT + ORGANIZATION + "IETF Common Control and Measurement Plane (CCAMP) Working + Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + Adrian Farrel + Old Dog Consulting + Email: adrian@olddog.co.uk + + Comments about this document should be emailed directly + to the CCAMP working group mailing list at + ccamp@ops.ietf.org." + + DESCRIPTION + "Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4802; see the RFC itself for + full legal notices. + + This MIB module contains managed object definitions + for GMPLS Traffic Engineering (TE) as defined in: + 1. Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, Berger, L. (Editor), + RFC 3471, January 2003. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, Berger, + L. (Editor), RFC 3473, January 2003. + " + REVISION + "200702270000Z" -- 27 February 2007 00:00:00 GMT + DESCRIPTION + "Initial version issued as part of RFC 4802." +::= { mplsStdMIB 13 } + +gmplsTeNotifications OBJECT IDENTIFIER ::= { gmplsTeStdMIB 0 } +gmplsTeScalars OBJECT IDENTIFIER ::= { gmplsTeStdMIB 1 } +gmplsTeObjects OBJECT IDENTIFIER ::= { gmplsTeStdMIB 2 } +gmplsTeConformance OBJECT IDENTIFIER ::= { gmplsTeStdMIB 3 } + +gmplsTunnelsConfigured OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of GMPLS tunnels configured on this device. A GMPLS + + + + tunnel is considered configured if an entry for the tunnel + exists in the gmplsTunnelTable and the associated + mplsTunnelRowStatus is active(1)." +::= { gmplsTeScalars 1 } + +gmplsTunnelsActive OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of GMPLS tunnels active on this device. A GMPLS + tunnel is considered active if there is an entry in the + gmplsTunnelTable and the associated mplsTunnelOperStatus for the + tunnel is up(1)." +::= { gmplsTeScalars 2 } + +gmplsTunnelTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The gmplsTunnelTable sparsely extends the mplsTunnelTable of + MPLS-TE-STD-MIB. It allows GMPLS tunnels to be created between + an LSR and a remote endpoint, and existing tunnels to be + reconfigured or removed. + + Note that only point-to-point tunnel segments are supported, + although multipoint-to-point and point-to-multipoint + connections are supported by an LSR acting as a cross-connect. + Each tunnel can thus have one out-segment originating at this + LSR and/or one in-segment terminating at this LSR. + + The row status of an entry in this table is controlled by the + mplsTunnelRowStatus in the corresponding entry in the + mplsTunnelTable. When the corresponding mplsTunnelRowStatus has + value active(1), a row in this table may not be created or + modified. + + The exception to this rule is the + gmplsTunnelAdminStatusInformation object, which can be modified + while the tunnel is active." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." +::= { gmplsTeObjects 1 } + + + + + + +gmplsTunnelEntry OBJECT-TYPE + SYNTAX GmplsTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table in association with the corresponding + entry in the mplsTunnelTable represents a GMPLS tunnel. + + An entry can be created by a network administrator via SNMP SET + commands, or in response to signaling protocol events." + INDEX { + mplsTunnelIndex, + mplsTunnelInstance, + mplsTunnelIngressLSRId, + mplsTunnelEgressLSRId + } +::= { gmplsTunnelTable 1 } + + GmplsTunnelEntry ::= SEQUENCE { + gmplsTunnelUnnumIf TruthValue, + gmplsTunnelAttributes BITS, + gmplsTunnelLSPEncoding IANAGmplsLSPEncodingTypeTC, + gmplsTunnelSwitchingType IANAGmplsSwitchingTypeTC, + gmplsTunnelLinkProtection BITS, + gmplsTunnelGPid IANAGmplsGeneralizedPidTC, + gmplsTunnelSecondary TruthValue, + gmplsTunnelDirection INTEGER, + gmplsTunnelPathComp INTEGER, + gmplsTunnelUpstreamNotifyRecipientType InetAddressType, + gmplsTunnelUpstreamNotifyRecipient InetAddress, + gmplsTunnelSendResvNotifyRecipientType InetAddressType, + gmplsTunnelSendResvNotifyRecipient InetAddress, + gmplsTunnelDownstreamNotifyRecipientType InetAddressType, + gmplsTunnelDownstreamNotifyRecipient InetAddress, + gmplsTunnelSendPathNotifyRecipientType InetAddressType, + gmplsTunnelSendPathNotifyRecipient InetAddress, + gmplsTunnelAdminStatusFlags IANAGmplsAdminStatusInformationTC, + gmplsTunnelExtraParamsPtr RowPointer + } + +gmplsTunnelUnnumIf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes whether or not this tunnel corresponds to an unnumbered + interface represented by an entry in the interfaces group table + (the ifTable) with ifType set to mpls(166). + + + + This object is only used if mplsTunnelIsIf is set to 'true'. + + If both this object and the mplsTunnelIsIf object are set to + 'true', the originating LSR adds an LSP_TUNNEL_INTERFACE_ID + object to the outgoing Path message. + + This object contains information that is only used by the + terminating LSR." + REFERENCE + "1. Signalling Unnumbered Links in RSVP-TE, RFC 3477." + DEFVAL { false } +::= { gmplsTunnelEntry 1 } + +gmplsTunnelAttributes OBJECT-TYPE + SYNTAX BITS { + labelRecordingDesired(0) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bitmask indicates optional parameters for this tunnel. + These bits should be taken in addition to those defined in + mplsTunnelSessionAttributes in order to determine the full set + of options to be signaled (for example SESSION_ATTRIBUTES flags + in RSVP-TE). The following describes these bitfields: + + labelRecordingDesired + This flag is set to indicate that label information should be + included when doing a route record. This bit is not valid + unless the recordRoute bit is set." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + sections 4.4.3, 4.7.1, and 4.7.2." + DEFVAL { { } } +::= { gmplsTunnelEntry 2 } + +gmplsTunnelLSPEncoding OBJECT-TYPE + SYNTAX IANAGmplsLSPEncodingTypeTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the encoding of the LSP being requested. + + A value of 'tunnelLspNotGmpls' indicates that GMPLS signaling is + not in use. Some objects in this MIB module may be of use for + MPLS signaling extensions that do not use GMPLS signaling. By + setting this object to 'tunnelLspNotGmpls', an application may + + + + + indicate that only those objects meaningful in MPLS should be + examined. + + The values to use are defined in the TEXTUAL-CONVENTION + IANAGmplsLSPEncodingTypeTC found in the IANA-GMPLS-TC-MIB + module." + DEFVAL { tunnelLspNotGmpls } +::= { gmplsTunnelEntry 3 } + +gmplsTunnelSwitchingType OBJECT-TYPE + SYNTAX IANAGmplsSwitchingTypeTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the type of switching that should be performed on + a particular link. This field is needed for links that + advertise more than one type of switching capability. + + The values to use are defined in the TEXTUAL-CONVENTION + IANAGmplsSwitchingTypeTC found in the IANA-GMPLS-TC-MIB module. + + This object is only meaningful if gmplsTunnelLSPEncodingType + is not set to 'tunnelLspNotGmpls'." + DEFVAL { unknown } +::= { gmplsTunnelEntry 4 } + +gmplsTunnelLinkProtection OBJECT-TYPE + SYNTAX BITS { + extraTraffic(0), + unprotected(1), + shared(2), + dedicatedOneToOne(3), + dedicatedOnePlusOne(4), + enhanced(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bitmask indicates the level of link protection required. A + value of zero (no bits set) indicates that any protection may be + used. The following describes these bitfields: + + extraTraffic + This flag is set to indicate that the LSP should use links + that are protecting other (primary) traffic. Such LSPs may be + preempted when the links carrying the (primary) traffic being + protected fail. + + + + + unprotected + This flag is set to indicate that the LSP should not use any + link layer protection. + + shared + This flag is set to indicate that a shared link layer + protection scheme, such as 1:N protection, should be used to + support the LSP. + + dedicatedOneToOne + This flag is set to indicate that a dedicated link layer + protection scheme, i.e., 1:1 protection, should be used to + support the LSP. + + dedicatedOnePlusOne + This flag is set to indicate that a dedicated link layer + protection scheme, i.e., 1+1 protection, should be used to + support the LSP. + + enhanced + This flag is set to indicate that a protection scheme that is + more reliable than Dedicated 1+1 should be used, e.g., 4 fiber + BLSR/MS-SPRING. + + This object is only meaningful if gmplsTunnelLSPEncoding is + not set to 'tunnelLspNotGmpls'." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 7.1." + DEFVAL { { } } +::= { gmplsTunnelEntry 5 } + +gmplsTunnelGPid OBJECT-TYPE + SYNTAX IANAGmplsGeneralizedPidTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the payload carried by the LSP. It is only + required when GMPLS will be used for this LSP. + + The values to use are defined in the TEXTUAL-CONVENTION + IANAGmplsGeneralizedPidTC found in the IANA-GMPLS-TC-MIB module. + + This object is only meaningful if gmplsTunnelLSPEncoding is not + set to 'tunnelLspNotGmpls'." + DEFVAL { unknown } +::= { gmplsTunnelEntry 6 } + + + + +gmplsTunnelSecondary OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates that the requested LSP is a secondary LSP. + + This object is only meaningful if gmplsTunnelLSPEncoding is not + set to 'tunnelLspNotGmpls'." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 7.1." + DEFVAL { false } +::= { gmplsTunnelEntry 7 } + +gmplsTunnelDirection OBJECT-TYPE + SYNTAX INTEGER { + forward(0), + bidirectional(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether this tunnel carries forward data only (is + unidirectional) or is bidirectional. + + Values of this object other than 'forward' are meaningful + only if gmplsTunnelLSPEncoding is not set to + 'tunnelLspNotGmpls'." + DEFVAL { forward } +::= { gmplsTunnelEntry 8 } + +gmplsTunnelPathComp OBJECT-TYPE + SYNTAX INTEGER { + dynamicFull(1), -- CSPF fully computed + explicit(2), -- fully specified path + dynamicPartial(3) -- CSPF partially computed + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value instructs the source node on how to perform path + computation on the explicit route specified by the associated + entries in the gmplsTunnelHopTable. + + dynamicFull + The user specifies at least the source and + destination of the path and expects that the Constrained + + + + Shortest Path First (CSPF) will calculate the remainder + of the path. + + explicit + The user specifies the entire path for the tunnel to + take. This path may contain strict or loose hops. + Evaluation of the explicit route will be performed + hop by hop through the network. + + dynamicPartial + The user specifies at least the source and + destination of the path and expects that the CSPF + will calculate the remainder of the path. The path + computed by CSPF is allowed to be only partially + computed allowing the remainder of the path to be + filled in across the network. + + When an entry is present in the gmplsTunnelTable for a + tunnel, gmplsTunnelPathComp MUST be used and any + corresponding mplsTunnelHopEntryPathComp object in the + mplsTunnelHopTable MUST be ignored and SHOULD not be set. + + mplsTunnelHopTable and mplsTunnelHopEntryPathComp are part of + MPLS-TE-STD-MIB. + + This object should be ignored if the value of + gmplsTunnelLSPEncoding is 'tunnelLspNotGmpls'." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." + DEFVAL { dynamicFull } +::= { gmplsTunnelEntry 9 } + +gmplsTunnelUpstreamNotifyRecipientType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to aid in interpretation of + gmplsTunnelUpstreamNotifyRecipient." + DEFVAL { unknown } +::= { gmplsTunnelEntry 10 } + +gmplsTunnelUpstreamNotifyRecipient OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Indicates the address of the upstream recipient for Notify + messages relating to this tunnel and issued by this LSR. This + information is typically received from an upstream LSR in a Path + message. + + This object is only valid when signaling a tunnel using RSVP. + + It is also not valid at the head end of a tunnel since there are + no upstream LSRs to which to send a Notify message. + + This object is interpreted in the context of the value of + gmplsTunnelUpstreamNotifyRecipientType. If this object is set to + 0, the value of gmplsTunnelUpstreamNotifyRecipientType MUST be + set to unknown(0)." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 4.2. " + DEFVAL { '00000000'H } -- 0.0.0.0 +::= { gmplsTunnelEntry 11 } + +gmplsTunnelSendResvNotifyRecipientType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to aid in interpretation of + gmplsTunnelSendResvNotifyRecipient." + DEFVAL { unknown } +::= { gmplsTunnelEntry 12 } + +gmplsTunnelSendResvNotifyRecipient OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates to an upstream LSR the address to which it should send + downstream Notify messages relating to this tunnel. + + This object is only valid when signaling a tunnel using RSVP. + + It is also not valid at the head end of the tunnel since no Resv + messages are sent from that LSR for this tunnel. + + If set to 0, no Notify Request object will be included in the + outgoing Resv messages. + + This object is interpreted in the context of the value of + gmplsTunnelSendResvNotifyRecipientType. If this object is set to + + + + 0, the value of gmplsTunnelSendResvNotifyRecipientType MUST be + set to unknown(0)." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 4.2. " + DEFVAL { '00000000'H } -- 0.0.0.0 +::= { gmplsTunnelEntry 13 } + +gmplsTunnelDownstreamNotifyRecipientType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to aid in interpretation of + gmplsTunnelDownstreamNotifyRecipient." + DEFVAL { unknown } +::= { gmplsTunnelEntry 14 } + +gmplsTunnelDownstreamNotifyRecipient OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the address of the downstream recipient for Notify + messages relating to this tunnel and issued by this LSR. This + information is typically received from an upstream LSR in a Resv + message. This object is only valid when signaling a tunnel using + RSVP. + + It is also not valid at the tail end of a tunnel since there are + no downstream LSRs to which to send a Notify message. + + This object is interpreted in the context of the value of + gmplsTunnelDownstreamNotifyRecipientType. If this object is set + to 0, the value of gmplsTunnelDownstreamNotifyRecipientType MUST + be set to unknown(0)." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 4.2. + " + DEFVAL { '00000000'H } -- 0.0.0.0 +::= { gmplsTunnelEntry 15 } + +gmplsTunnelSendPathNotifyRecipientType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object is used to aid in interpretation of + gmplsTunnelSendPathNotifyRecipient." + DEFVAL { unknown } +::= { gmplsTunnelEntry 16 } + +gmplsTunnelSendPathNotifyRecipient OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates to a downstream LSR the address to which it should + send upstream Notify messages relating to this tunnel. + + This object is only valid when signaling a tunnel using RSVP. + + It is also not valid at the tail end of the tunnel since no Path + messages are sent from that LSR for this tunnel. + + If set to 0, no Notify Request object will be included in the + outgoing Path messages. + + This object is interpreted in the context of the value of + gmplsTunnelSendPathNotifyRecipientType. If this object is set to + 0, the value of gmplsTunnelSendPathNotifyRecipientType MUST be + set to unknown(0)." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 4.2. " + DEFVAL { '00000000'H } -- 0.0.0.0 +::= { gmplsTunnelEntry 17 } + +gmplsTunnelAdminStatusFlags OBJECT-TYPE + SYNTAX IANAGmplsAdminStatusInformationTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Determines the setting of the Admin Status flags in the + Admin Status object or TLV, as described in RFC 3471. Setting + this field to a non-zero value will result in the inclusion of + the Admin Status object on signaling messages. + + The values to use are defined in the TEXTUAL-CONVENTION + IANAGmplsAdminStatusInformationTC found in the + IANA-GMPLS-TC-MIB module. + + This value of this object can be modified when the + corresponding mplsTunnelRowStatus and mplsTunnelAdminStatus + is active(1). By doing so, a new signaling message will be + + + + triggered including the requested Admin Status object or + TLV." + REFERENCE + "1. Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471, section 8." + DEFVAL { { } } + ::= { gmplsTunnelEntry 18 } + +gmplsTunnelExtraParamsPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some tunnels will run over transports that can usefully support + technology-specific additional parameters (for example, + Synchronous Optical Network (SONET) resource usage). Such + parameters can be supplied in an external table and referenced + from here. + + A value of zeroDotzero in this attribute indicates that there + is no such additional information." + DEFVAL { zeroDotZero } + ::= { gmplsTunnelEntry 19 } + +gmplsTunnelHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The gmplsTunnelHopTable sparsely extends the mplsTunnelHopTable + of MPLS-TE-STD-MIB. It is used to indicate the Explicit Labels + to be used in an explicit path for a GMPLS tunnel defined in the + mplsTunnelTable and gmplsTunnelTable, when it is established + using signaling. It does not insert new hops, but does define + new values for hops defined in the mplsTunnelHopTable. + + Each row in this table is indexed by the same indexes as in the + mplsTunnelHopTable. It is acceptable for some rows in the + mplsTunnelHopTable to have corresponding entries in this table + and some to have no corresponding entry in this table. + + The storage type for this entry is given by the value + of mplsTunnelHopStorageType in the corresponding entry in the + mplsTunnelHopTable. + + The row status of an entry in this table is controlled by + mplsTunnelHopRowStatus in the corresponding entry in the + mplsTunnelHopTable. That is, it is not permitted to create a row + + + + in this table, or to modify an existing row, when the + corresponding mplsTunnelHopRowStatus has the value active(1)." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473. + " +::= { gmplsTeObjects 2 } + +gmplsTunnelHopEntry OBJECT-TYPE + SYNTAX GmplsTunnelHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents additions to a tunnel hop + defined in mplsTunnelHopEntry. At an ingress to a tunnel, an + entry in this table is created by a network administrator for an + ERLSP to be set up by a signaling protocol. At transit and + egress nodes, an entry in this table may be used to represent the + explicit path instructions received using the signaling + protocol." + INDEX { + mplsTunnelHopListIndex, + mplsTunnelHopPathOptionIndex, + mplsTunnelHopIndex + } +::= { gmplsTunnelHopTable 1 } + +GmplsTunnelHopEntry ::= SEQUENCE { + gmplsTunnelHopLabelStatuses BITS, + gmplsTunnelHopExplicitForwardLabel Unsigned32, + gmplsTunnelHopExplicitForwardLabelPtr RowPointer, + gmplsTunnelHopExplicitReverseLabel Unsigned32, + gmplsTunnelHopExplicitReverseLabelPtr RowPointer +} + +gmplsTunnelHopLabelStatuses OBJECT-TYPE + SYNTAX BITS { + forwardPresent(0), + reversePresent(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This bitmask indicates the presence of labels indicated by the + gmplsTunnelHopExplicitForwardLabel or + gmplsTunnelHopExplicitForwardLabelPtr, and + gmplsTunnelHopExplicitReverseLabel or + + + + gmplsTunnelHopExplicitReverseLabelPtr objects. + + For the Present bits, a set bit indicates that a label is + present for this hop in the route. This allows zero to be a + valid label value." + DEFVAL { { } } +::= { gmplsTunnelHopEntry 1 } + +gmplsTunnelHopExplicitForwardLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If gmplsTunnelHopLabelStatuses object indicates that a Forward + Label is present and gmplsTunnelHopExplicitForwardLabelPtr + contains the value zeroDotZero, then the label to use on this + hop is represented by the value of this object." +::= { gmplsTunnelHopEntry 2 } + +gmplsTunnelHopExplicitForwardLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the gmplsTunnelHopLabelStatuses object indicates that a + Forward Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label to use on this hop + in the forward direction. + + If the gmplsTunnelHopLabelStatuses object indicates that a + Forward Label is present and this object contains the value + zeroDotZero, then the label to use on this hop is found in the + gmplsTunnelHopExplicitForwardLabel object." + DEFVAL { zeroDotZero } +::= { gmplsTunnelHopEntry 3 } + +gmplsTunnelHopExplicitReverseLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the gmplsTunnelHopLabelStatuses object indicates that a + Reverse Label is present and + gmplsTunnelHopExplicitReverseLabelPtr contains the value + zeroDotZero, then the label to use on this hop is found in + this object encoded as a 32-bit integer." +::= { gmplsTunnelHopEntry 4 } + + + +gmplsTunnelHopExplicitReverseLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the gmplsTunnelHopLabelStatuses object indicates that a + Reverse Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label to use on this hop + in the reverse direction. + + If the gmplsTunnelHopLabelStatuses object indicates that a + Reverse Label is present and this object contains the value + zeroDotZero, then the label to use on this hop is found in the + gmplsTunnelHopExplicitReverseLabel object." + DEFVAL { zeroDotZero } +::= { gmplsTunnelHopEntry 5 } + +gmplsTunnelARHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelARHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The gmplsTunnelARHopTable sparsely extends the + mplsTunnelARHopTable of MPLS-TE-STD-MIB. It is used to + indicate the labels currently in use for a GMPLS tunnel + defined in the mplsTunnelTable and gmplsTunnelTable, as + reported by the signaling protocol. It does not insert + new hops, but does define new values for hops defined in + the mplsTunnelARHopTable. + + Each row in this table is indexed by the same indexes as in the + mplsTunnelARHopTable. It is acceptable for some rows in the + mplsTunnelARHopTable to have corresponding entries in this table + and some to have no corresponding entry in this table. + + Note that since the information necessary to build entries + within this table is not provided by some signaling protocols + and might not be returned in all cases of other signaling + protocols, implementation of this table and the + mplsTunnelARHopTable is optional. Furthermore, since the + information in this table is actually provided by the + signaling protocol after the path has been set up, the entries + in this table are provided only for observation, and hence, + all variables in this table are accessible exclusively as + read-only." + REFERENCE + "1. Extensions to RSVP for LSP Tunnels, RFC 3209. + + + + 2. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473. + 3. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." +::= { gmplsTeObjects 3 } + +gmplsTunnelARHopEntry OBJECT-TYPE + SYNTAX GmplsTunnelARHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents additions to a tunnel hop + visible in mplsTunnelARHopEntry. An entry is created by the + signaling protocol for a signaled ERLSP set up by the signaling + protocol. + + At any node on the LSP (ingress, transit, or egress), this table + and the mplsTunnelARHopTable (if the tables are supported and if + the signaling protocol is recording actual route information) + contain the actual route of the whole tunnel. If the signaling + protocol is not recording the actual route, this table MAY + report the information from the gmplsTunnelHopTable or the + gmplsTunnelCHopTable. + + Note that the recording of actual labels is distinct from the + recording of the actual route in some signaling protocols. This + feature is enabled using the gmplsTunnelAttributes object." + INDEX { + mplsTunnelARHopListIndex, + mplsTunnelARHopIndex + } +::= { gmplsTunnelARHopTable 1 } + +GmplsTunnelARHopEntry ::= SEQUENCE { + gmplsTunnelARHopLabelStatuses BITS, + gmplsTunnelARHopExplicitForwardLabel Unsigned32, + gmplsTunnelARHopExplicitForwardLabelPtr RowPointer, + gmplsTunnelARHopExplicitReverseLabel Unsigned32, + gmplsTunnelARHopExplicitReverseLabelPtr RowPointer, + gmplsTunnelARHopProtection BITS +} + +gmplsTunnelARHopLabelStatuses OBJECT-TYPE + SYNTAX BITS { + forwardPresent(0), + reversePresent(1), + forwardGlobal(2), + reverseGlobal(3) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This bitmask indicates the presence and status of labels + indicated by the gmplsTunnelARHopExplicitForwardLabel or + gmplsTunnelARHopExplicitForwardLabelPtr, and + gmplsTunnelARHopExplicitReverseLabel or + gmplsTunnelARHopExplicitReverseLabelPtr objects. + + For the Present bits, a set bit indicates that a label is + present for this hop in the route. + + For the Global bits, a set bit indicates that the label comes + from the Global Label Space; a clear bit indicates that this is + a Per-Interface label. A Global bit only has meaning if the + corresponding Present bit is set." +::= { gmplsTunnelARHopEntry 1 } + +gmplsTunnelARHopExplicitForwardLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelARHopLabelStatuses object indicates that a + Forward Label is present and + gmplsTunnelARHopExplicitForwardLabelPtr contains the value + zeroDotZero, then the label in use on this hop is found in this + object encoded as a 32-bit integer." +::= { gmplsTunnelARHopEntry 2 } + +gmplsTunnelARHopExplicitForwardLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelARHopLabelStatuses object indicates that a + Forward Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label in use on this hop + in the forward direction. + + If the gmplsTunnelARHopLabelStatuses object indicates that a + Forward Label is present and this object contains the value + zeroDotZero, then the label in use on this hop is found in the + gmplsTunnelARHopExplicitForwardLabel object." +::= { gmplsTunnelARHopEntry 3 } + + + + + +gmplsTunnelARHopExplicitReverseLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelARHopLabelStatuses object indicates that a + Reverse Label is present and + gmplsTunnelARHopExplicitReverseLabelPtr contains the value + zeroDotZero, then the label in use on this hop is found in this + object encoded as a 32-bit integer." +::= { gmplsTunnelARHopEntry 4 } + +gmplsTunnelARHopExplicitReverseLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelARHopLabelStatuses object indicates that a + Reverse Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label in use on this hop + in the reverse direction. + + If the gmplsTunnelARHopLabelStatuses object indicates that a + Reverse Label is present and this object contains the value + zeroDotZero, then the label in use on this hop is found in the + gmplsTunnelARHopExplicitReverseLabel object." +::= { gmplsTunnelARHopEntry 5 } + +gmplsTunnelARHopProtection OBJECT-TYPE + SYNTAX BITS { + localAvailable(0), + localInUse(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Availability and usage of protection on the reported link. + + localAvailable + This flag is set to indicate that the link downstream of this + node is protected via a local repair mechanism. + + localInUse + This flag is set to indicate that a local repair mechanism is + in use to maintain this tunnel (usually in the face of an + outage of the link it was previously routed over)." + REFERENCE + + + + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + section 4.4.1." +::= { gmplsTunnelARHopEntry 6 } + +gmplsTunnelCHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelCHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The gmplsTunnelCHopTable sparsely extends the + mplsTunnelCHopTable of MPLS-TE-STD-MIB. It is used to indicate + additional information about the hops of a GMPLS tunnel defined + in the mplsTunnelTable and gmplsTunnelTable, as computed by a + constraint-based routing protocol, based on the + mplsTunnelHopTable and the gmplsTunnelHopTable. + + Each row in this table is indexed by the same indexes as in the + mplsTunnelCHopTable. It is acceptable for some rows in the + mplsTunnelCHopTable to have corresponding entries in this table + and some to have no corresponding entry in this table. + + Please note that since the information necessary to build + entries within this table may not be supported by some LSRs, + implementation of this table is optional. + + Furthermore, since the information in this table is actually + provided by a path computation component after the path has been + computed, the entries in this table are provided only for + observation, and hence, all objects in this table are accessible + exclusively as read-only." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812. + 2. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473." +::= { gmplsTeObjects 4 } + +gmplsTunnelCHopEntry OBJECT-TYPE + SYNTAX GmplsTunnelCHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents additions to a computed tunnel + hop visible in mplsTunnelCHopEntry. An entry is created by a + path computation component based on the hops specified in the + corresponding mplsTunnelHopTable and gmplsTunnelHopTable. + + At a transit LSR, this table (if the table is supported) MAY + contain the path computed by a path computation engine on (or on + + + + behalf of) the transit LSR." + INDEX { + mplsTunnelCHopListIndex, + mplsTunnelCHopIndex + } +::= { gmplsTunnelCHopTable 1 } + +GmplsTunnelCHopEntry ::= SEQUENCE { + gmplsTunnelCHopLabelStatuses BITS, + gmplsTunnelCHopExplicitForwardLabel Unsigned32, + gmplsTunnelCHopExplicitForwardLabelPtr RowPointer, + gmplsTunnelCHopExplicitReverseLabel Unsigned32, + gmplsTunnelCHopExplicitReverseLabelPtr RowPointer +} + +gmplsTunnelCHopLabelStatuses OBJECT-TYPE + SYNTAX BITS { + forwardPresent(0), + reversePresent(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This bitmask indicates the presence of labels indicated by the + gmplsTunnelCHopExplicitForwardLabel or + gmplsTunnelCHopExplicitForwardLabelPtr and + gmplsTunnelCHopExplicitReverseLabel or + gmplsTunnelCHopExplicitReverseLabelPtr objects. + + A set bit indicates that a label is present for this hop in the + route, thus allowing zero to be a valid label value." +::= { gmplsTunnelCHopEntry 1 } + +gmplsTunnelCHopExplicitForwardLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelCHopLabelStatuses object indicates that a + Forward Label is present and + gmplsTunnelCHopExplicitForwardLabelPtr contains the value + zeroDotZero, then the label to use on this hop is found in this + object encoded as a 32-bit integer." +::= { gmplsTunnelCHopEntry 2 } + +gmplsTunnelCHopExplicitForwardLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If the gmplsTunnelCHopLabelStatuses object indicates that a + Forward Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label to use on this hop + in the forward direction. + + If the gmplsTunnelCHopLabelStatuses object indicates that a + Forward Label is present and this object contains the value + zeroDotZero, then the label to use on this hop is found in the + gmplsTunnelCHopExplicitForwardLabel object." +::= { gmplsTunnelCHopEntry 3 } + +gmplsTunnelCHopExplicitReverseLabel OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelCHopLabelStatuses object indicates that a + Reverse Label is present and + gmplsTunnelCHopExplicitReverseLabelPtr contains the value + zeroDotZero, then the label to use on this hop is found in this + object encoded as a 32-bit integer." +::= { gmplsTunnelCHopEntry 4 } + +gmplsTunnelCHopExplicitReverseLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the gmplsTunnelCHopLabelStatuses object indicates that a + Reverse Label is present, this object contains a pointer to a + row in another MIB table (such as the gmplsLabelTable of + GMPLS-LABEL-STD-MIB) that contains the label to use on this hop + in the reverse direction. + + If the gmplsTunnelCHopLabelStatuses object indicates that a + Reverse Label is present and this object contains the value + zeroDotZero, then the label to use on this hop is found in the + gmplsTunnelCHopExplicitReverseLabel object." +::= { gmplsTunnelCHopEntry 5 } + +gmplsTunnelReversePerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelReversePerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table augments the gmplsTunnelTable to provide + per-tunnel packet performance information for the reverse + direction of a bidirectional tunnel. It can be seen as + supplementing the mplsTunnelPerfTable, which augments the + mplsTunnelTable. + + For links that do not transport packets, these packet counters + cannot be maintained. For such links, attempts to read the + objects in this table will return noSuchInstance. + + A tunnel can be known to be bidirectional by inspecting the + gmplsTunnelDirection object." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." +::= { gmplsTeObjects 5 } + +gmplsTunnelReversePerfEntry OBJECT-TYPE + SYNTAX GmplsTunnelReversePerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by the LSR for every + bidirectional GMPLS tunnel where packets are visible to the + LSR." + AUGMENTS { gmplsTunnelEntry } +::= { gmplsTunnelReversePerfTable 1 } + +GmplsTunnelReversePerfEntry ::= SEQUENCE { + gmplsTunnelReversePerfPackets Counter32, + gmplsTunnelReversePerfHCPackets Counter64, + gmplsTunnelReversePerfErrors Counter32, + gmplsTunnelReversePerfBytes Counter32, + gmplsTunnelReversePerfHCBytes Counter64 +} + +gmplsTunnelReversePerfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets forwarded on the tunnel in the reverse + direction if it is bidirectional. + + This object represents the 32-bit value of the least + significant part of the 64-bit value if both + gmplsTunnelReversePerfHCPackets and this object are returned. + + + + + For links that do not transport packets, this packet counter + cannot be maintained. For such links, this value will return + noSuchInstance." +::= { gmplsTunnelReversePerfEntry 1 } + +gmplsTunnelReversePerfHCPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High-capacity counter for number of packets forwarded on the + tunnel in the reverse direction if it is bidirectional. + + For links that do not transport packets, this packet counter + cannot be maintained. For such links, this value will return + noSuchInstance." +::= { gmplsTunnelReversePerfEntry 2 } + +gmplsTunnelReversePerfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of errored packets received on the tunnel in the reverse + direction if it is bidirectional. For links that do not + transport packets, this packet counter cannot be maintained. For + such links, this value will return noSuchInstance." +::= { gmplsTunnelReversePerfEntry 3 } + +gmplsTunnelReversePerfBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of bytes forwarded on the tunnel in the reverse direction + if it is bidirectional. + + This object represents the 32-bit value of the least + significant part of the 64-bit value if both + gmplsTunnelReversePerfHCBytes and this object are returned. + + For links that do not transport packets, this packet counter + cannot be maintained. For such links, this value will return + noSuchInstance." +::= { gmplsTunnelReversePerfEntry 4 } + +gmplsTunnelReversePerfHCBytes OBJECT-TYPE + SYNTAX Counter64 + + + + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "High-capacity counter for number of bytes forwarded on the + tunnel in the reverse direction if it is bidirectional. + + For links that do not transport packets, this packet counter + cannot be maintained. For such links, this value will return + noSuchInstance." +::= { gmplsTunnelReversePerfEntry 5 } + +gmplsTunnelErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF GmplsTunnelErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table augments the mplsTunnelTable. + + This table provides per-tunnel information about errors. Errors + may be detected locally or reported through the signaling + protocol. Error reporting is not exclusive to GMPLS, and this + table may be applied in MPLS systems. + + Entries in this table are not persistent over system resets + or re-initializations of the management system." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) + Management Information Base (MIB), RFC 3812." +::= { gmplsTeObjects 6 } + +gmplsTunnelErrorEntry OBJECT-TYPE + SYNTAX GmplsTunnelErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by the LSR for every tunnel + where error information is visible to the LSR. + + Note that systems that read the objects in this table one at + a time and do not perform atomic operations to read entire + instantiated table rows at once, should, for each conceptual + column with valid data, read gmplsTunnelErrorLastTime + prior to the other objects in the row and again subsequent to + reading the last object of the row. They should verify that + the value of gmplsTunnelErrorLastTime did not change and + thereby ensure that all data read belongs to the same error + event." + + + + AUGMENTS { mplsTunnelEntry } +::= { gmplsTunnelErrorTable 1 } + +GmplsTunnelErrorEntry ::= SEQUENCE { + gmplsTunnelErrorLastErrorType INTEGER, + gmplsTunnelErrorLastTime TimeStamp, + gmplsTunnelErrorReporterType InetAddressType, + gmplsTunnelErrorReporter InetAddress, + gmplsTunnelErrorCode Unsigned32, + gmplsTunnelErrorSubcode Unsigned32, + gmplsTunnelErrorTLVs OCTET STRING, + gmplsTunnelErrorHelpString SnmpAdminString +} + +gmplsTunnelErrorLastErrorType OBJECT-TYPE + SYNTAX INTEGER { + noError(0), + unknown(1), + protocol(2), + pathComputation(3), + localConfiguration(4), + localResources(5), + localOther(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nature of the last error. Provides interpretation context + for gmplsTunnelErrorProtocolCode and + gmplsTunnelErrorProtocolSubcode. + + A value of noError(0) shows that there is no error associated + with this tunnel and means that the other objects in this table + entry (conceptual row) have no meaning. + + A value of unknown(1) shows that there is an error but that no + additional information about the cause is known. The error may + have been received in a signaled message or generated locally. + + A value of protocol(2) or pathComputation(3) indicates the + cause of an error and identifies an error that has been received + through signaling or will itself be signaled. + + A value of localConfiguration(4), localResources(5) or + localOther(6) identifies an error that has been detected + by the local node but that will not be reported through + signaling." +::= { gmplsTunnelErrorEntry 1 } + + + +gmplsTunnelErrorLastTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last error occurred. This is presented as + the value of SysUpTime when the error occurred or was reported + to this node. + + If gmplsTunnelErrorLastErrorType has the value noError(0), then + this object is not valid and should be ignored. + + Note that entries in this table are not persistent over system + resets or re-initializations of the management system." +::= { gmplsTunnelErrorEntry 2 } + +gmplsTunnelErrorReporterType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the error reported. + + This object is used to aid in interpretation of + gmplsTunnelErrorReporter." +::= { gmplsTunnelErrorEntry 3 } + +gmplsTunnelErrorReporter OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the node reporting the last error, or the address + of the resource (such as an interface) associated with the + error. + + If gmplsTunnelErrorLastErrorType has the value noError(0), then + this object is not valid and should be ignored. + + If gmplsTunnelErrorLastErrorType has the value unknown(1), + localConfiguration(4), localResources(5), or localOther(6), + this object MAY contain a zero value. + + This object should be interpreted in the context of the value of + the object gmplsTunnelErrorReporterType." + REFERENCE + "1. Textual Conventions for Internet Network Addresses, RFC 4001, + section 4, Usage Hints." + + + +::= { gmplsTunnelErrorEntry 4 } + +gmplsTunnelErrorCode OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary error code associated with the last error. + + The interpretation of this error code depends on the value of + gmplsTunnelErrorLastErrorType. If the value of + gmplsTunnelErrorLastErrorType is noError(0), the value of this + object should be 0 and should be ignored. If the value of + gmplsTunnelErrorLastErrorType is protocol(2), the error should + be interpreted in the context of the signaling protocol + identified by the mplsTunnelSignallingProto object." + REFERENCE + "1. Resource ReserVation Protocol -- Version 1 Functional + Specification, RFC 2205, section B. + 2. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + section 7.3. + 3. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 13.1." +::= { gmplsTunnelErrorEntry 5 } + +gmplsTunnelErrorSubcode OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary error code associated with the last error and the + protocol used to signal this tunnel. This value is interpreted + in the context of the value of gmplsTunnelErrorCode. + If the value of gmplsTunnelErrorLastErrorType is noError(0), the + value of this object should be 0 and should be ignored." + REFERENCE + "1. Resource ReserVation Protocol -- Version 1 Functional + Specification, RFC 2205, section B. + 2. RSVP-TE: Extensions to RSVP for LSP Tunnels, RFC 3209, + section 7.3. + 3. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 13.1. " +::= { gmplsTunnelErrorEntry 6 } + +gmplsTunnelErrorTLVs OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65535)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The sequence of interface identifier TLVs reported with the + error by the protocol code. The interpretation of the TLVs and + the encoding within the protocol are described in the + references. A value of zero in the first octet indicates that no + TLVs are present." + REFERENCE + "1. Generalized MPLS Signaling - RSVP-TE Extensions, RFC 3473, + section 8.2." +::= { gmplsTunnelErrorEntry 7 } + +gmplsTunnelErrorHelpString OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual string containing information about the last error, + recovery actions, and support advice. If there is no help string, + this object contains a zero length string. + If the value of gmplsTunnelErrorLastErrorType is noError(0), + this object should contain a zero length string, but may contain + a help string indicating that there is no error." +::= { gmplsTunnelErrorEntry 8 } + +-- +-- Notifications +-- + +gmplsTunnelDown NOTIFICATION-TYPE +OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus, + gmplsTunnelErrorLastErrorType, + gmplsTunnelErrorReporterType, + gmplsTunnelErrorReporter, + gmplsTunnelErrorCode, + gmplsTunnelErrorSubcode +} +STATUS current +DESCRIPTION + "This notification is generated when an mplsTunnelOperStatus + object for a tunnel in the gmplsTunnelTable is about to enter + the down state from some other state (but not from the + notPresent state). This other state is indicated by the + included value of mplsTunnelOperStatus. + + The objects in this notification provide additional error + information that indicates the reason why the tunnel has + + + + transitioned to down(2). + + Note that an implementation MUST only issue one of + mplsTunnelDown and gmplsTunnelDown for any single event on a + single tunnel. If the tunnel has an entry in the + gmplsTunnelTable, an implementation SHOULD use gmplsTunnelDown + for all tunnel-down events and SHOULD NOT use mplsTunnelDown. + + This notification is subject to the control of + mplsTunnelNotificationEnable. When that object is set + to false(2), then the notification must not be issued. + + Further, this notification is also subject to + mplsTunnelNotificationMaxRate. That object indicates the + maximum number of notifications issued per second. If events + occur more rapidly, the implementation may simply fail to emit + some notifications during that period, or may queue them until + an appropriate time. The notification rate applies to the sum + of all notifications in the MPLS-TE-STD-MIB and + GMPLS-TE-STD-MIB modules applied across the whole of the + reporting device. + + mplsTunnelOperStatus, mplsTunnelAdminStatus, mplsTunnelDown, + mplsTunnelNotificationEnable, and mplsTunnelNotificationMaxRate + objects are found in MPLS-TE-STD-MIB." + REFERENCE + "1. Multiprotocol Label Switching (MPLS) Traffic Engineering + (TE) Management Information Base (MIB), RFC 3812." +::= { gmplsTeNotifications 1 } + +gmplsTeGroups + OBJECT IDENTIFIER ::= { gmplsTeConformance 1 } + +gmplsTeCompliances + OBJECT IDENTIFIER ::= { gmplsTeConformance 2 } + +-- Compliance requirement for fully compliant implementations. + +gmplsTeModuleFullCompliance MODULE-COMPLIANCE +STATUS current +DESCRIPTION + "Compliance statement for agents that provide full support for + GMPLS-TE-STD-MIB. Such devices can then be monitored and also + be configured using this MIB module. + + The mandatory group has to be implemented by all LSRs that + originate, terminate, or act as transit for TE-LSPs/tunnels. + In addition, depending on the type of tunnels supported, other + + + + groups become mandatory as explained below." + + MODULE MPLS-TE-STD-MIB -- The MPLS-TE-STD-MIB, RFC 3812 + + MANDATORY-GROUPS { + mplsTunnelGroup, + mplsTunnelScalarGroup + } + +MODULE -- this module + +MANDATORY-GROUPS { + gmplsTunnelGroup, + gmplsTunnelScalarGroup +} + +GROUP gmplsTunnelSignaledGroup + DESCRIPTION + "This group is mandatory for devices that support signaled + tunnel set up, in addition to gmplsTunnelGroup. The following + constraints apply: + mplsTunnelSignallingProto should be at least read-only + returning a value of ldp(2) or rsvp(3)." + +GROUP gmplsTunnelOptionalGroup + DESCRIPTION + "Objects in this group are optional." + +GROUP gmplsTeNotificationGroup + DESCRIPTION + "This group is mandatory for those implementations that can + implement the notifications contained in this group." + +::= { gmplsTeCompliances 1 } + +-- Compliance requirement for read-only compliant implementations. + +gmplsTeModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only provide + read-only support for GMPLS-TE-STD-MIB. Such devices can then be + monitored but cannot be configured using this MIB module." + + MODULE -- this module + +-- The mandatory group has to be implemented by all LSRs that +-- originate, terminate, or act as transit for TE-LSPs/tunnels. + + + +-- In addition, depending on the type of tunnels supported, other +-- groups become mandatory as explained below. + +MANDATORY-GROUPS { + gmplsTunnelGroup, + gmplsTunnelScalarGroup +} + +GROUP gmplsTunnelSignaledGroup + DESCRIPTION + "This group is mandatory for devices that support signaled + tunnel set up, in addition to gmplsTunnelGroup. The following + constraints apply: + mplsTunnelSignallingProto should be at least read-only + returning a value of ldp(2) or rsvp(3)." + +GROUP gmplsTunnelOptionalGroup + DESCRIPTION + "Objects in this group are optional." + +GROUP gmplsTeNotificationGroup + DESCRIPTION + "This group is mandatory for those implementations that can + implement the notifications contained in this group." + +OBJECT gmplsTunnelUnnumIf + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelAttributes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelLSPEncoding + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelSwitchingType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelLinkProtection + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + +OBJECT gmplsTunnelGPid + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelSecondary + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelDirection + MIN-ACCESS read-only + DESCRIPTION + "Only forward(0) is required." + +OBJECT gmplsTunnelPathComp + MIN-ACCESS read-only + DESCRIPTION + "Only explicit(2) is required." + +OBJECT gmplsTunnelUpstreamNotifyRecipientType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelUpstreamNotifyRecipient + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2) sizes." + +OBJECT gmplsTunnelSendResvNotifyRecipientType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelSendResvNotifyRecipient + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2) sizes." + +OBJECT gmplsTunnelDownstreamNotifyRecipientType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + + + + MIN-ACCESS read-only + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelDownstreamNotifyRecipient + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2) sizes." + +OBJECT gmplsTunnelSendPathNotifyRecipientType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelSendPathNotifyRecipient + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2) sizes." + +OBJECT gmplsTunnelAdminStatusFlags + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelExtraParamsPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +-- gmplsTunnelHopLabelStatuses has max access read-only + +OBJECT gmplsTunnelHopExplicitForwardLabel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelHopExplicitForwardLabelPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +OBJECT gmplsTunnelHopExplicitReverseLabel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + +OBJECT gmplsTunnelHopExplicitReverseLabelPtr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +-- gmplsTunnelARHopTable +-- all objects have max access read-only + +-- gmplsTunnelCHopTable +-- all objects have max access read-only + +-- gmplsTunnelReversePerfTable +-- all objects have max access read-only + +-- gmplsTunnelErrorTable +-- all objects have max access read-only + +OBJECT gmplsTunnelErrorReporterType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION "Only unknown(0), ipv4(1), and ipv6(2) support + is required." + +OBJECT gmplsTunnelErrorReporter + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1), and ipv6(2)." +::= { gmplsTeCompliances 2 } + +gmplsTunnelGroup OBJECT-GROUP + OBJECTS { + gmplsTunnelDirection, + gmplsTunnelReversePerfPackets, + gmplsTunnelReversePerfHCPackets, + gmplsTunnelReversePerfErrors, + gmplsTunnelReversePerfBytes, + gmplsTunnelReversePerfHCBytes, + gmplsTunnelErrorLastErrorType, + gmplsTunnelErrorLastTime, + gmplsTunnelErrorReporterType, + gmplsTunnelErrorReporter, + gmplsTunnelErrorCode, + gmplsTunnelErrorSubcode, + gmplsTunnelErrorTLVs, + gmplsTunnelErrorHelpString, + gmplsTunnelUnnumIf + } + STATUS current + DESCRIPTION + + + + "Necessary, but not sufficient, set of objects to implement + tunnels. In addition, depending on the type of the tunnels + supported (for example, manually configured or signaled, + persistent or non-persistent, etc.), the + gmplsTunnelSignaledGroup group is mandatory." +::= { gmplsTeGroups 1 } + +gmplsTunnelSignaledGroup OBJECT-GROUP + OBJECTS { + gmplsTunnelAttributes, + gmplsTunnelLSPEncoding, + gmplsTunnelSwitchingType, + gmplsTunnelLinkProtection, + gmplsTunnelGPid, + gmplsTunnelSecondary, + gmplsTunnelPathComp, + gmplsTunnelUpstreamNotifyRecipientType, + gmplsTunnelUpstreamNotifyRecipient, + gmplsTunnelSendResvNotifyRecipientType, + gmplsTunnelSendResvNotifyRecipient, + gmplsTunnelDownstreamNotifyRecipientType, + gmplsTunnelDownstreamNotifyRecipient, + gmplsTunnelSendPathNotifyRecipientType, + gmplsTunnelSendPathNotifyRecipient, + gmplsTunnelAdminStatusFlags, + gmplsTunnelHopLabelStatuses, + gmplsTunnelHopExplicitForwardLabel, + gmplsTunnelHopExplicitForwardLabelPtr, + gmplsTunnelHopExplicitReverseLabel, + gmplsTunnelHopExplicitReverseLabelPtr + } + STATUS current + DESCRIPTION + "Objects needed to implement signaled tunnels." +::= { gmplsTeGroups 2 } + +gmplsTunnelScalarGroup OBJECT-GROUP + OBJECTS { + gmplsTunnelsConfigured, + gmplsTunnelsActive + } + STATUS current + DESCRIPTION + "Scalar objects needed to implement MPLS tunnels." +::= { gmplsTeGroups 3 } + +gmplsTunnelOptionalGroup OBJECT-GROUP + OBJECTS { + + + + gmplsTunnelExtraParamsPtr, + gmplsTunnelARHopLabelStatuses, + gmplsTunnelARHopExplicitForwardLabel, + gmplsTunnelARHopExplicitForwardLabelPtr, + gmplsTunnelARHopExplicitReverseLabel, + gmplsTunnelARHopExplicitReverseLabelPtr, + gmplsTunnelARHopProtection, + gmplsTunnelCHopLabelStatuses, + gmplsTunnelCHopExplicitForwardLabel, + gmplsTunnelCHopExplicitForwardLabelPtr, + gmplsTunnelCHopExplicitReverseLabel, + gmplsTunnelCHopExplicitReverseLabelPtr + } + STATUS current + DESCRIPTION + "The objects in this group are optional." +::= { gmplsTeGroups 4 } + +gmplsTeNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + gmplsTunnelDown + } + STATUS current + DESCRIPTION + "Set of notifications implemented in this module. None is + mandatory." +::= { gmplsTeGroups 5 } + +END diff --git a/mibs/ietf/GSMP-MIB b/mibs/ietf/GSMP-MIB new file mode 100644 index 0000000..009c99e --- /dev/null +++ b/mibs/ietf/GSMP-MIB @@ -0,0 +1,1680 @@ +GSMP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, + Unsigned32, Integer32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + RowStatus, TruthValue, TimeStamp, + StorageType, TEXTUAL-CONVENTION + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ZeroBasedCounter32 + FROM RMON2-MIB -- [RFC2021] + InterfaceIndex + FROM IF-MIB -- [RFC2863] + AtmVcIdentifier, AtmVpIdentifier + FROM ATM-TC-MIB -- [RFC2514] + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB ; -- [RFC3291] + + gsmpMIB MODULE-IDENTITY + LAST-UPDATED "200205310000Z" -- May 31, 2002 + ORGANIZATION "General Switch Management Protocol (gsmp) + Working Group, IETF" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/gsmp-charter.html + + WG-email: gsmp@ietf.org + Subscribe: gsmp-request@ietf.org + Email Archive: + ftp://ftp.ietf.org/ietf-mail-archive/gsmp/ + + WG Chair: Avri Doria + Email: avri@acm.org + + WG Chair: Kenneth Sundell + Email: ksundell@nortelnetworks.com + + Editor: Hans Sjostrand + Email: hans@ipunplugged.com + + + + + Editor: Joachim Buerkle + Email: joachim.buerkle@nortelnetworks.com + + Editor: Balaji Srinivasan + Email: balaji@cplane.com" + DESCRIPTION + "This MIB contains managed object definitions for the + General Switch Management Protocol, GSMP, version 3" + + REVISION "200205310000Z" + DESCRIPTION "Initial Version, published as RFC 3295" + + ::= { mib-2 98 } + + gsmpNotifications OBJECT IDENTIFIER ::= { gsmpMIB 0 } + gsmpObjects OBJECT IDENTIFIER ::= { gsmpMIB 1 } + gsmpNotificationsObjects OBJECT IDENTIFIER ::= { gsmpMIB 2 } + gsmpConformance OBJECT IDENTIFIER ::= { gsmpMIB 3 } + + --************************************************************** + -- GSMP Textual Conventions + --************************************************************** + + GsmpNameType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Name is a 48-bit quantity. + A 48-bit IEEE 802 MAC address, if + available, may be used." + SYNTAX OCTET STRING (SIZE(6)) + + GsmpPartitionType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Defining if partitions are used and how the partition id + is negotiated. " + SYNTAX INTEGER { + noPartition(1), + fixedPartitionRequest(2), + fixedPartitionAssigned(3) + } + + GsmpPartitionIdType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A 8-bit quantity. The format of the Partition ID is not + defined in GSMP. If desired, the Partition ID can be + divided into multiple sub-identifiers within a single + + + + partition. For example: the Partition ID could be + subdivided into a 6-bit partition number and a 2-bit + sub-identifier which would allow a switch to support 64 + partitions with 4 available IDs per partition." + SYNTAX OCTET STRING (SIZE(1)) + + GsmpVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The version numbers defined for the GSMP protocol. + The version numbers used are defined in the + specifications of the respective protocol, + 1 - GSMPv1.1 [RFC1987] + 2 - GSMPv2.0 [RFC2397] + 3 - GSMPv3 [RFC3292] + Other numbers may be defined for other versions + of the GSMP protocol." + SYNTAX Unsigned32 + + GsmpLabelType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The label is structured as a TLV, a tuple, consisting of + a Type, a Length, and a Value. The structure is defined + in [RFC 3292]. The label TLV is encoded as a 2 octet type + field, followed by a 2 octet Length field, followed by a + variable length Value field. + Additionally, a label field can be composed of many stacked + labels that together constitute the label." + SYNTAX OCTET STRING + + --************************************************************** + -- GSMP Entity Objects + --************************************************************** + + -- + -- Switch Controller Entity table + -- + + gsmpControllerTable OBJECT-TYPE + SYNTAX SEQUENCE OF GsmpControllerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the Switch Controller + Entities. An entry in this table needs to be configured + (created) before a GSMP session might be started." + ::= { gsmpObjects 1 } + + + + gsmpControllerEntry OBJECT-TYPE + SYNTAX GsmpControllerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the data for a specific Switch Controller + Entity. If partitions are used, one entity + corresponds to one specific switch partition. + Depending of the encapsulation used, + a corresponding row in the gsmpAtmEncapTable or the + gsmpTcpIpEncapTable may have been created." + INDEX { gsmpControllerEntityId } + ::= { gsmpControllerTable 1 } + + GsmpControllerEntry ::= SEQUENCE { + gsmpControllerEntityId GsmpNameType, + gsmpControllerMaxVersion GsmpVersion, + gsmpControllerTimer Unsigned32, + gsmpControllerPort Unsigned32, + gsmpControllerInstance Unsigned32, + gsmpControllerPartitionType GsmpPartitionType, + gsmpControllerPartitionId GsmpPartitionIdType, + gsmpControllerDoResync TruthValue, + gsmpControllerNotificationMap BITS, + gsmpControllerSessionState INTEGER, + gsmpControllerStorageType StorageType, + gsmpControllerRowStatus RowStatus + } + + gsmpControllerEntityId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Switch Controller Entity Id is unique + within the operational context of the device." + ::= { gsmpControllerEntry 1 } + + gsmpControllerMaxVersion OBJECT-TYPE + SYNTAX GsmpVersion + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The max version number of the GSMP protocol being used + in this session. The version is negotiated by the + adjacency protocol." + DEFVAL { 3 } + + + + ::= { gsmpControllerEntry 2 } + + gsmpControllerTimer OBJECT-TYPE + SYNTAX Unsigned32(1..255) + UNITS "100ms" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The timer specifies the nominal time between + periodic adjacency protocol messages. It is a constant + for the duration of a GSMP session. The timer is + specified in units of 100ms." + DEFVAL { 10 } + ::= { gsmpControllerEntry 3 } + + gsmpControllerPort OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local port number for the Switch Controller + Entity." + REFERENCE + "General Switch Management Protocol V3: Section 3.1.2" + ::= { gsmpControllerEntry 4 } + + gsmpControllerInstance OBJECT-TYPE + SYNTAX Unsigned32(1..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The instance number for the Switch Controller + Entity. The Instance number is a 24-bit number + that should be guaranteed to be unique within + the recent past and to change when the link + or node comes back up after going down. Zero is + not a valid instance number. " + ::= { gsmpControllerEntry 5 } + + gsmpControllerPartitionType OBJECT-TYPE + SYNTAX GsmpPartitionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A controller can request the specific partition identifier + to the session by setting the Partition Type to + fixedPartitionRequest(2). A controller can let the switch + decide whether it wants to assign a fixed partition ID or + + + + not, by setting the Partition Type to noPartition(1)." + ::= { gsmpControllerEntry 6 } + + gsmpControllerPartitionId OBJECT-TYPE + SYNTAX GsmpPartitionIdType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Id for the specific switch partition that this + Switch Controller is concerned with. + If partitions are not used or if the controller lets the + switch assigns Partition ID, i.e Partition Type = + noPartition(1), then this object is undefined." + ::= { gsmpControllerEntry 7 } + + gsmpControllerDoResync OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies whether the controller should + resynchronise or reset in case of loss of synchronisation. + If this object is set to true then the Controller should + resync with PFLAG=2 (recovered adjacency)." + DEFVAL { true } + ::= { gsmpControllerEntry 8 } + + gsmpControllerNotificationMap OBJECT-TYPE + SYNTAX BITS { + sessionDown(0), + sessionUp(1), + sendFailureIndication(2), + receivedFailureIndication(3), + portUpEvent(4), + portDownEvent(5), + invalidLabelEvent(6), + newPortEvent(7), + deadPortEvent(8), + adjacencyUpdateEvent(9) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bitmap defines whether a corresponding SNMP + notification should be sent if a GSMP event is received + by the Switch Controller. If the bit is set to 1 a + notification should be sent. The handling and filtering of + the SNMP notifications are then further specified in the + + + + SNMP notification originator application. " + DEFVAL {{ sessionDown, sessionUp, + sendFailureIndication, receivedFailureIndication }} + ::= { gsmpControllerEntry 9 } + + gsmpControllerSessionState OBJECT-TYPE + SYNTAX INTEGER { + null(1), + synsent(2), + synrcvd(3), + estab(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state for the existing or potential session that + this entity is concerned with. + The NULL state is returned if the proper encapsulation + data is not yet configured, if the row is not in active + status or if the session is in NULL state as defined in + the GSMP specification." + ::= { gsmpControllerEntry 10} + + gsmpControllerStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this controller entity. + Conceptual rows having the value 'permanent' need not allow + write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { gsmpControllerEntry 11 } + + gsmpControllerRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to + be created and deleted using the + RowStatus convention. + While the row is in active state it's not + possible to modify the value of any object + for that row except the gsmpControllerNotificationMap + and the gsmpControllerRowStatus objects." + ::= { gsmpControllerEntry 12 } + + + + + -- + -- Switch Entity table + -- + + gsmpSwitchTable OBJECT-TYPE + SYNTAX SEQUENCE OF GsmpSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the Switch + Entities. An entry in this table needs to be configured + (created) before a GSMP session might be started." + ::= { gsmpObjects 2 } + + gsmpSwitchEntry OBJECT-TYPE + SYNTAX GsmpSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the data for a specific Switch + Entity. If partitions are used, one entity + corresponds to one specific switch partition. + Depending of the encapsulation used, + a corresponding row in the gsmpAtmEncapTable or the + gsmpTcpIpEncapTable may have been created." + INDEX { gsmpSwitchEntityId } + ::= { gsmpSwitchTable 1 } + + GsmpSwitchEntry ::= SEQUENCE { + gsmpSwitchEntityId GsmpNameType, + gsmpSwitchMaxVersion GsmpVersion, + gsmpSwitchTimer Unsigned32, + gsmpSwitchName GsmpNameType, + gsmpSwitchPort Unsigned32, + gsmpSwitchInstance Unsigned32, + gsmpSwitchPartitionType GsmpPartitionType, + gsmpSwitchPartitionId GsmpPartitionIdType, + gsmpSwitchNotificationMap BITS, + gsmpSwitchSwitchType OCTET STRING, + gsmpSwitchWindowSize Unsigned32, + gsmpSwitchSessionState INTEGER, + gsmpSwitchStorageType StorageType, + gsmpSwitchRowStatus RowStatus + } + + gsmpSwitchEntityId OBJECT-TYPE + SYNTAX GsmpNameType + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Switch Entity Id is unique + within the operational context of the device. " + ::= { gsmpSwitchEntry 1 } + + gsmpSwitchMaxVersion OBJECT-TYPE + SYNTAX GsmpVersion + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The max version number of the GSMP protocol being + supported by this Switch. The version is negotiated by + the adjacency protocol." + DEFVAL { 3 } + ::= { gsmpSwitchEntry 2 } + + gsmpSwitchTimer OBJECT-TYPE + SYNTAX Unsigned32(1..255) + UNITS "100ms" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The timer specifies the nominal time between + periodic adjacency protocol messages. It is a constant + for the duration of a GSMP session. The timer is + specified in units of 100ms." + DEFVAL { 10 } + ::= { gsmpSwitchEntry 3 } + + gsmpSwitchName OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the Switch. The first three octets must be an + Organisationally Unique Identifier (OUI) that identifies + the manufacturer of the Switch. This is by default set to + the same value as the gsmpSwitchId object if not + separately specified. " + ::= {gsmpSwitchEntry 4 } + + gsmpSwitchPort OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The local port number for this Switch Entity." + REFERENCE + "General Switch Management Protocol V3: Section 3.1.2" + ::= { gsmpSwitchEntry 5 } + + gsmpSwitchInstance OBJECT-TYPE + SYNTAX Unsigned32(1..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The instance number for the Switch Entity. + The Instance number is a 24-bit number + that should be guaranteed to be unique within + the recent past and to change when the link + or node comes back up after going down. Zero is + not a valid instance number." + ::= { gsmpSwitchEntry 6 } + + gsmpSwitchPartitionType OBJECT-TYPE + SYNTAX GsmpPartitionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A switch can assign the specific partition identifier to + the session by setting the Partition Type to + fixedPartitionAssigned(3). A switch can specify + that no partitions are handled in the session by setting + the Partition Type to noPartition(1)." + ::= { gsmpSwitchEntry 7 } + + gsmpSwitchPartitionId OBJECT-TYPE + SYNTAX GsmpPartitionIdType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Id for this specific switch partition that the switch + entity represents. If partitions are not used, i.e. + Partition Type = noPartition(1), then this object is + undefined." + ::= { gsmpSwitchEntry 8 } + + gsmpSwitchNotificationMap OBJECT-TYPE + SYNTAX BITS { + sessionDown(0), + sessionUp(1), + sendFailureIndication(2), + receivedFailureIndication(3), + portUpEvent(4), + + + + portDownEvent(5), + invalidLabelEvent(6), + newPortEvent(7), + deadPortEvent(8), + adjacencyUpdateEvent(9) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bitmap defines whether a corresponding SNMP + notification should be sent if an GSMP event is sent + by the Switch Entity. If the bit is set to 1 a + notification should be sent. The handling and filtering of + the SNMP notifications are then further specified in the + SNMP notification originator application. " + DEFVAL {{ sessionDown, sessionUp, + sendFailureIndication, receivedFailureIndication }} + ::= { gsmpSwitchEntry 9 } + + gsmpSwitchSwitchType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A 16-bit field allocated by the manufacturer + of the switch. The Switch Type + identifies the product. When the Switch Type is combined + with the OUI from the Switch Name the product is + uniquely identified. " + ::= { gsmpSwitchEntry 10 } + + gsmpSwitchWindowSize OBJECT-TYPE + SYNTAX Unsigned32(1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of unacknowledged request messages + that may be transmitted by the controller without the + possibility of loss. This field is used to prevent + request messages from being lost in the switch because of + overflow in the receive buffer. The field is a hint to + the controller." + ::= { gsmpSwitchEntry 11 } + + gsmpSwitchSessionState OBJECT-TYPE + SYNTAX INTEGER { + null(1), + synsent(2), + + + + synrcvd(3), + estab(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state for the existing or potential session that + this entity is concerned with. + The NULL state is returned if the proper encapsulation + data is not yet configured, if the row is not in active + status or if the session is in NULL state as defined in + the GSMP specification." + ::= { gsmpSwitchEntry 12} + + gsmpSwitchStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this switch entity. + Conceptual rows having the value 'permanent' need not allow + write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { gsmpSwitchEntry 13 } + + gsmpSwitchRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to + be created and deleted using the + RowStatus convention. + While the row is in active state it's not + possible to modify the value of any object + for that row except the gsmpSwitchNotificationMap + and the gsmpSwitchRowStatus objects." + ::= { gsmpSwitchEntry 14 } + + --************************************************************** + -- GSMP Encapsulation Objects + --************************************************************** + + -- + -- GSMP ATM Encapsulation Table + -- + + gsmpAtmEncapTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF GsmpAtmEncapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the atm encapsulation data + for the Controller or Switch that uses atm aal5 as + encapsulation. " + ::= { gsmpObjects 3 } + + gsmpAtmEncapEntry OBJECT-TYPE + SYNTAX GsmpAtmEncapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the encapsulation data for a specific + Switch Controller entity or Switch entity." + INDEX { gsmpAtmEncapEntityId } + ::= { gsmpAtmEncapTable 1 } + + GsmpAtmEncapEntry ::= SEQUENCE { + gsmpAtmEncapEntityId GsmpNameType, + gsmpAtmEncapIfIndex InterfaceIndex, + gsmpAtmEncapVpi AtmVpIdentifier, + gsmpAtmEncapVci AtmVcIdentifier, + gsmpAtmEncapStorageType StorageType, + gsmpAtmEncapRowStatus RowStatus + } + + gsmpAtmEncapEntityId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Controller Id or Switch Id that is unique + within the operational context of the device. " + ::= { gsmpAtmEncapEntry 1 } + + gsmpAtmEncapIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interface index for the virtual channel over which + the GSMP session is established, i.e., the GSMP control + channel for LLC/SNAP encapsulated GSMP messages on an + ATM data link layer." + ::= { gsmpAtmEncapEntry 2 } + + + + gsmpAtmEncapVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " The VPI value for the virtual channel over which the + GSMP session is established, i.e., the GSMP control + channel for LLC/SNAP encapsulated GSMP messages on an + ATM data link layer." + DEFVAL { 0 } + ::= { gsmpAtmEncapEntry 3 } + + gsmpAtmEncapVci OBJECT-TYPE + SYNTAX AtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " The VCI value for the virtual channel over which the + GSMP session is established, i.e., the GSMP control + channel for LLC/SNAP encapsulated GSMP messages on an + ATM data link layer." + DEFVAL { 15 } + ::= { gsmpAtmEncapEntry 4 } + + gsmpAtmEncapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this entry. It should have the same + value as the StorageType in the referring Switch + Controller entity or Switch entity." + DEFVAL { nonVolatile } + ::= { gsmpAtmEncapEntry 5 } + + gsmpAtmEncapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to + be created and deleted using the + RowStatus convention. + While the row is in active state it's not + possible to modify the value of any object + for that row except the gsmpAtmEncapRowStatus object." + ::= { gsmpAtmEncapEntry 6 } + + + + + -- + -- GSMP TCP/IP Encapsulation Table + -- + + gsmpTcpIpEncapTable OBJECT-TYPE + SYNTAX SEQUENCE OF GsmpTcpIpEncapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the encapsulation data + for the Controller or Switch that uses TCP/IP as + encapsulation." + ::= { gsmpObjects 4 } + + gsmpTcpIpEncapEntry OBJECT-TYPE + SYNTAX GsmpTcpIpEncapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the encapsulation data for a specific + Switch Controller entity or Switch entity." + INDEX { gsmpTcpIpEncapEntityId } + ::= { gsmpTcpIpEncapTable 1 } + + GsmpTcpIpEncapEntry ::= SEQUENCE { + gsmpTcpIpEncapEntityId GsmpNameType, + gsmpTcpIpEncapAddressType InetAddressType, + gsmpTcpIpEncapAddress InetAddress, + gsmpTcpIpEncapPortNumber InetPortNumber, + gsmpTcpIpEncapStorageType StorageType, + gsmpTcpIpEncapRowStatus RowStatus + } + + gsmpTcpIpEncapEntityId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Controller or Switch Id is unique + within the operational context of the device. " + ::= { gsmpTcpIpEncapEntry 1 } + + gsmpTcpIpEncapAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The type of address in gsmpTcpIpEncapAddress." + ::= { gsmpTcpIpEncapEntry 2 } + + gsmpTcpIpEncapAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IPv4 or IPv6 address used for + the GSMP session peer." + ::= { gsmpTcpIpEncapEntry 3 } + + gsmpTcpIpEncapPortNumber OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TCP port number used for the TCP session + establishment to the GSMP peer." + DEFVAL { 6068 } + ::= { gsmpTcpIpEncapEntry 4 } + + gsmpTcpIpEncapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this entry. It should have the same + value as the StorageType in the referring Switch + Controller entity or Switch entity." + DEFVAL { nonVolatile } + ::= { gsmpTcpIpEncapEntry 5 } + + gsmpTcpIpEncapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to + be created and deleted using the + RowStatus convention. + While the row is in active state it's not + possible to modify the value of any object + for that row except the gsmpTcpIpEncapRowStatus object." + ::= { gsmpTcpIpEncapEntry 6 } + + --************************************************************** + -- GSMP Session Objects + + + + --************************************************************** + + -- + -- GSMP Session table + -- + + gsmpSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF GsmpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the sessions between + Controller and Switch pairs. " + ::= { gsmpObjects 5 } + + gsmpSessionEntry OBJECT-TYPE + SYNTAX GsmpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table showing + the session data for a specific Controller and + Switch pair. Also, statistics for this specific + session is shown." + INDEX { gsmpSessionThisSideId, gsmpSessionFarSideId } + ::= { gsmpSessionTable 1 } + + GsmpSessionEntry ::= SEQUENCE { + gsmpSessionThisSideId GsmpNameType, + gsmpSessionFarSideId GsmpNameType, + gsmpSessionVersion GsmpVersion, + gsmpSessionTimer Integer32, + gsmpSessionPartitionId GsmpPartitionIdType, + gsmpSessionAdjacencyCount Unsigned32, + gsmpSessionFarSideName GsmpNameType, + gsmpSessionFarSidePort Unsigned32, + gsmpSessionFarSideInstance Unsigned32, + gsmpSessionLastFailureCode Unsigned32, + gsmpSessionDiscontinuityTime TimeStamp, + gsmpSessionStartUptime TimeStamp, + gsmpSessionStatSentMessages ZeroBasedCounter32, + gsmpSessionStatFailureInds ZeroBasedCounter32, + gsmpSessionStatReceivedMessages ZeroBasedCounter32, + gsmpSessionStatReceivedFailures ZeroBasedCounter32, + gsmpSessionStatPortUpEvents ZeroBasedCounter32, + gsmpSessionStatPortDownEvents ZeroBasedCounter32, + gsmpSessionStatInvLabelEvents ZeroBasedCounter32, + gsmpSessionStatNewPortEvents ZeroBasedCounter32, + + + + gsmpSessionStatDeadPortEvents ZeroBasedCounter32, + gsmpSessionStatAdjUpdateEvents ZeroBasedCounter32 + } + + gsmpSessionThisSideId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This side ID uniquely identifies the entity that this + session relates to within the operational + context of the device. " + ::= { gsmpSessionEntry 1 } + + gsmpSessionFarSideId OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Far side ID uniquely identifies the entity that this + session is established against. " + ::= { gsmpSessionEntry 2 } + + gsmpSessionVersion OBJECT-TYPE + SYNTAX GsmpVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the GSMP protocol being used in + this session. The version is the result of the + negotiation by the adjacency protocol." + ::= { gsmpSessionEntry 3 } + + gsmpSessionTimer OBJECT-TYPE + SYNTAX Integer32 + UNITS "100ms" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timer specifies the time remaining until the + adjacency timer expires. The object could take negative + values since if no valid GSMP messages are + received in any period of time in excess of three times + the value of the Timer negotiated by the adjacency + protocol loss of synchronisation may be declared. The + timer is specified in units of 100ms." + ::= { gsmpSessionEntry 4 } + + + + + gsmpSessionPartitionId OBJECT-TYPE + SYNTAX GsmpPartitionIdType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Partition Id for the specific switch partition that + this session is concerned with." + ::= { gsmpSessionEntry 5 } + + gsmpSessionAdjacencyCount OBJECT-TYPE + SYNTAX Unsigned32(1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the current number of adjacencies + that are established with controllers and the switch + partition that is used for this session. The value + includes this session." + ::= { gsmpSessionEntry 6 } + + gsmpSessionFarSideName OBJECT-TYPE + SYNTAX GsmpNameType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the far side as advertised in the adjacency + message." + ::= {gsmpSessionEntry 7} + + gsmpSessionFarSidePort OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local port number of the link across which the + message is being sent." + REFERENCE + "General Switch Management Protocol V3: Section 3.1.2" + ::= { gsmpSessionEntry 8 } + + gsmpSessionFarSideInstance OBJECT-TYPE + SYNTAX Unsigned32(1..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The instance number used for the link during this + session. The Instance number is a 24-bit number + that should be guaranteed to be unique within + + + + the recent past and to change when the link + or node comes back up after going down. Zero is not + a valid instance number." + ::= { gsmpSessionEntry 9 } + + gsmpSessionLastFailureCode OBJECT-TYPE + SYNTAX Unsigned32(0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the last failure code that was received over + this session. If no failure code have been received, the + value is zero." + ::= { gsmpSessionEntry 10 } + + gsmpSessionDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which one or more of this session's counters + suffered a discontinuity. If no such discontinuities have + occurred since then, this object contains the same + timestamp as gsmpSessionStartUptime ." + ::= { gsmpSessionEntry 11 } + + gsmpSessionStartUptime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The value of sysUpTime when the session came to + established state." + ::= { gsmpSessionEntry 12 } + + gsmpSessionStatSentMessages OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been sent in this + session. All GSMP messages pertaining to this session after + the session came to established state SHALL + be counted, also including adjacency protocol messages + and failure response messages. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + + + + happened." + ::= { gsmpSessionEntry 13 } + + gsmpSessionStatFailureInds OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been sent with a + failure indication in this session. Warning messages + SHALL NOT be counted. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 12.1" + ::= { gsmpSessionEntry 14 } + + gsmpSessionStatReceivedMessages OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been received in + this session. All legal GSMP messages pertaining to this + session after the session came to established state SHALL + be counted, also including adjacency protocol messages + and failure response messages. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + ::= { gsmpSessionEntry 15 } + + gsmpSessionStatReceivedFailures OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been received in + this session with a failure indication. Warning messages + SHALL NOT be counted. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 12.1" + ::= { gsmpSessionEntry 16 } + + + + + gsmpSessionStatPortUpEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Port Up events that have been sent or + received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.1" + ::= { gsmpSessionEntry 17 } + + gsmpSessionStatPortDownEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Port Down events that have been sent or + received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.2" + ::= { gsmpSessionEntry 18 } + + gsmpSessionStatInvLabelEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Invalid label events that have been sent + or received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.3" + ::= { gsmpSessionEntry 19 } + + gsmpSessionStatNewPortEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of New Port events that have been sent or + + + + received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.4" + ::= { gsmpSessionEntry 20 } + + gsmpSessionStatDeadPortEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Dead Port events that have been sent or + received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.5" + ::= { gsmpSessionEntry 21 } + + gsmpSessionStatAdjUpdateEvents OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Adjacency Update events that have been sent + or received on this session. + When the counter suffers any discontinuity, then + the gsmpSessionDiscontinuityTime object indicates when it + happened." + REFERENCE + "General Switch Management Protocol V3: Section 9.6" + ::= { gsmpSessionEntry 22 } + + + -- ************************************************************** + -- GSMP Notifications + -- ************************************************************** + + -- + -- Notification objects + -- + + gsmpEventPort OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + + + + STATUS current + DESCRIPTION + "This object specifies the Port Number that is + carried in this event." + ::= { gsmpNotificationsObjects 1 } + + gsmpEventPortSessionNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object specifies the Port Session Number that is + carried in this event." + ::= { gsmpNotificationsObjects 2 } + + gsmpEventSequenceNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object specifies the Event Sequence Number that is + carried in this event." + ::= { gsmpNotificationsObjects 3 } + + gsmpEventLabel OBJECT-TYPE + SYNTAX GsmpLabelType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object specifies the Label that is + carried in this event." + ::= { gsmpNotificationsObjects 4 } + + + -- + -- Notifications + -- + + gsmpSessionDown NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStartUptime, + gsmpSessionStatSentMessages, + gsmpSessionStatFailureInds, + gsmpSessionStatReceivedMessages, + gsmpSessionStatReceivedFailures, + gsmpSessionStatPortUpEvents, + gsmpSessionStatPortDownEvents, + gsmpSessionStatInvLabelEvents, + + + + gsmpSessionStatNewPortEvents, + gsmpSessionStatDeadPortEvents, + gsmpSessionStatAdjUpdateEvents + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated whenever a session is taken down, regardless + of whether the session went down normally or not. + Its purpose is to allow a management application + (primarily an accounting application) that is + monitoring the session statistics to receive the final + values of these counters, so that the application can + properly account for the amounts the counters were + incremented since the last time the application polled + them. The gsmpSessionStartUptime object provides the + total amount of time that the session was active. + + This notification is not a substitute for polling the + session statistic counts. In particular, the count + values reported in this notification cannot be assumed + to be the complete totals for the life of the session, + since they may have wrapped while the + session was up. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifiers of the objects contained in the + notification. + An instance of this notification will contain exactly + one instance of each of its objects, and these objects + will all belong to the same conceptual row of the + gsmpSessionTable." + ::= { gsmpNotifications 1 } + + gsmpSessionUp NOTIFICATION-TYPE + OBJECTS { + gsmpSessionFarSideInstance + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when new session is established. + + The new session is identified by the gsmpSessionThisSideId + and gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionFarSideInstance object + + + + contained in the notification." + ::= { gsmpNotifications 2 } + + gsmpSentFailureInd NOTIFICATION-TYPE + OBJECTS { + gsmpSessionLastFailureCode, + gsmpSessionStatFailureInds + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when a message with a failure indication was + sent. + + The notification indicates a change in the value of + gsmpSessionStatFailureInds. The + gsmpSessionLastFailureCode contains the failure + reason. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifiers of the objects contained in the + notification." + ::= { gsmpNotifications 3 } + + gsmpReceivedFailureInd NOTIFICATION-TYPE + OBJECTS { + gsmpSessionLastFailureCode, + gsmpSessionStatReceivedFailures + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generate when a message with a failure indication + is received. + + The notification indicates a change in the value of + gsmpSessionStatReceivedFailures. The + gsmpSessionLastFailureCode contains the failure + reason. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifiers of the objects contained in the + notification." + ::= { gsmpNotifications 4 } + + + + gsmpPortUpEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatPortUpEvents, + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when a Port Up Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatPortUpEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatPortUpEvents + object contained in the notification." + ::= { gsmpNotifications 5 } + + gsmpPortDownEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatPortDownEvents, + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when a Port Down Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatPortDownEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatPortDownEvents + object contained in the notification." + ::= { gsmpNotifications 6 } + + gsmpInvalidLabelEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatInvLabelEvents, + gsmpEventPort, + + + + gsmpEventLabel, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when an Invalid Label Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatInvLabelEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatInvLabelEvents + object contained in the notification." + ::= { gsmpNotifications 7 } + + gsmpNewPortEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatNewPortEvents, + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when a New Port Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatNewPortEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatNewPortEvents + object contained in the notification." + ::= { gsmpNotifications 8 } + + gsmpDeadPortEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionStatDeadPortEvents, + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber + } + STATUS current + + + + DESCRIPTION + "When it has been enabled, this notification is + generated when a Dead Port Event occurs. + + The notification indicates a change in the value of + gsmpSessionStatDeadPortEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionStatDeadPortEvents + object contained in the notification." + ::= { gsmpNotifications 9 } + + gsmpAdjacencyUpdateEvent NOTIFICATION-TYPE + OBJECTS { + gsmpSessionAdjacencyCount, + gsmpSessionStatAdjUpdateEvents, + gsmpEventSequenceNumber + } + STATUS current + DESCRIPTION + "When it has been enabled, this notification is + generated when an Adjacency Update Event occurs. + + The gsmpSessionAdjacencyCount contains the new value of + the number of adjacencies + that are established with controllers and the switch + partition that is used for this session. + + The notification indicates a change in the value of + gsmpSessionStatAdjUpdateEvents. + + The session to which this notification + applies is identified by the gsmpSessionThisSideId and + gsmpSessionFarSideId which could be inferred from the + Object Identifier of the gsmpSessionAdjacencyCount + or the gsmpSessionStatAdjUpdateEvents object contained + in the notification." + ::= { gsmpNotifications 10 } + + + + + + + + + + + + --************************************************************** + -- GSMP Compliance + --************************************************************** + + gsmpGroups OBJECT IDENTIFIER ::= { gsmpConformance 1 } + gsmpCompliances OBJECT IDENTIFIER ::= { gsmpConformance 2 } + + gsmpModuleCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support + the GSMP MIB." + MODULE -- this module + MANDATORY-GROUPS { gsmpGeneralGroup + } + GROUP gsmpControllerGroup + DESCRIPTION + "This group is mandatory for all Switch + Controllers" + + GROUP gsmpSwitchGroup + DESCRIPTION + "This group is mandatory for all Switches" + + GROUP gsmpAtmEncapGroup + DESCRIPTION + "This group must be supported if ATM is used for GSMP + encapsulation. " + + GROUP gsmpTcpIpEncapGroup + DESCRIPTION + "This group must be supported if TCP/IP is used for GSMP + encapsulation. " + + OBJECT gsmpTcpIpEncapAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', and IPv4 addresses. Supporting addresses with + zone index or IPv6 addresses are optional. Defining + Internet addresses by using DNS domain names are not + allowed." + + OBJECT gsmpTcpIpEncapAddress + SYNTAX InetAddress (SIZE(0|4|8|16|20)) + DESCRIPTION + "An implementation is only required to support + + + + IPv4 addresses. Supporting addresses with zone index or IPv6 + addresses are optional." + + GROUP gsmpNotificationObjectsGroup + DESCRIPTION + "This group must be supported if notifications + are supported. " + + GROUP gsmpNotificationsGroup + DESCRIPTION + "This group must be supported if notifications + are supported. " + + ::= { gsmpCompliances 1 } + + -- units of conformance + + gsmpGeneralGroup OBJECT-GROUP + OBJECTS { + gsmpSessionVersion, + gsmpSessionTimer, + gsmpSessionPartitionId, + gsmpSessionAdjacencyCount, + gsmpSessionFarSideName, + gsmpSessionFarSidePort, + gsmpSessionFarSideInstance, + gsmpSessionLastFailureCode, + gsmpSessionDiscontinuityTime, + gsmpSessionStartUptime, + gsmpSessionStatSentMessages, + gsmpSessionStatFailureInds, + gsmpSessionStatReceivedMessages, + gsmpSessionStatReceivedFailures, + gsmpSessionStatPortUpEvents, + gsmpSessionStatPortDownEvents, + gsmpSessionStatInvLabelEvents, + gsmpSessionStatNewPortEvents, + gsmpSessionStatDeadPortEvents, + gsmpSessionStatAdjUpdateEvents + } + STATUS current + DESCRIPTION + "Objects that apply to all GSMP implementations." + ::= { gsmpGroups 1 } + + gsmpControllerGroup OBJECT-GROUP + OBJECTS { + gsmpControllerMaxVersion, + + + + gsmpControllerTimer, + gsmpControllerPort, + gsmpControllerInstance, + gsmpControllerPartitionType, + gsmpControllerPartitionId, + gsmpControllerDoResync, + gsmpControllerNotificationMap, + gsmpControllerSessionState, + gsmpControllerStorageType, + gsmpControllerRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply GSMP implementations of + Switch Controllers." + ::= { gsmpGroups 2 } + + gsmpSwitchGroup OBJECT-GROUP + OBJECTS { + gsmpSwitchMaxVersion, + gsmpSwitchTimer, + gsmpSwitchName, + gsmpSwitchPort, + gsmpSwitchInstance, + gsmpSwitchPartitionType, + gsmpSwitchPartitionId, + gsmpSwitchNotificationMap, + gsmpSwitchSwitchType, + gsmpSwitchWindowSize, + gsmpSwitchSessionState, + gsmpSwitchStorageType, + gsmpSwitchRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply GSMP implementations of + Switches." + ::= { gsmpGroups 3 } + + gsmpAtmEncapGroup OBJECT-GROUP + OBJECTS { + gsmpAtmEncapIfIndex, + gsmpAtmEncapVpi, + gsmpAtmEncapVci, + gsmpAtmEncapStorageType, + gsmpAtmEncapRowStatus + } + STATUS current + + + + DESCRIPTION + "Objects that apply to GSMP implementations that + supports ATM for GSMP encapsulation." + ::= { gsmpGroups 4 } + + gsmpTcpIpEncapGroup OBJECT-GROUP + OBJECTS { + gsmpTcpIpEncapAddressType, + gsmpTcpIpEncapAddress, + gsmpTcpIpEncapPortNumber, + gsmpTcpIpEncapStorageType, + gsmpTcpIpEncapRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply to GSMP implementations that + supports TCP/IP for GSMP encapsulation." + ::= { gsmpGroups 5 } + + gsmpNotificationObjectsGroup OBJECT-GROUP + OBJECTS { + gsmpEventPort, + gsmpEventPortSessionNumber, + gsmpEventSequenceNumber, + gsmpEventLabel + } + STATUS current + DESCRIPTION + "Objects that are contained in the notifications." + ::= { gsmpGroups 6 } + + gsmpNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + gsmpSessionDown, + gsmpSessionUp, + gsmpSentFailureInd, + gsmpReceivedFailureInd, + gsmpPortUpEvent, + gsmpPortDownEvent, + gsmpInvalidLabelEvent, + gsmpNewPortEvent, + gsmpDeadPortEvent, + gsmpAdjacencyUpdateEvent + } + STATUS current + DESCRIPTION + "The notifications which indicate specific changes + in the value of objects gsmpSessionTable" + + + + ::= { gsmpGroups 7 } + +END diff --git a/mibs/ietf/HC-ALARM-MIB b/mibs/ietf/HC-ALARM-MIB new file mode 100644 index 0000000..5e7e734 --- /dev/null +++ b/mibs/ietf/HC-ALARM-MIB @@ -0,0 +1,745 @@ +HC-ALARM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Counter32, Unsigned32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF + RowStatus, VariablePointer, StorageType, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + CounterBasedGauge64 + FROM HCNUM-TC + rmon, OwnerString, rmonEventGroup + FROM RMON-MIB; + +hcAlarmMIB MODULE-IDENTITY + LAST-UPDATED "200212160000Z" + ORGANIZATION "IETF RMONMIB Working Group" + CONTACT-INFO + " Andy Bierman + Cisco Systems, Inc. + Tel: +1 408 527-3711 + + + + E-mail: abierman@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + + Keith McCloghrie + Cisco Systems, Inc. + Tel: +1 408 526-5260 + E-mail: kzm@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + + Send comments to + Mailing list subscription info: + http://www.ietf.org/mailman/listinfo/rmonmib " + DESCRIPTION + "This module defines Remote Monitoring MIB extensions for + High Capacity Alarms. + + Copyright (C) The Internet Society (2002). This version + of this MIB module is part of RFC 3434; see the RFC + itself for full legal notices." + + REVISION "200212160000Z" + DESCRIPTION + "Initial version of the High Capacity Alarm MIB module. + This version published as RFC 3434." + ::= { rmon 29 } + +hcAlarmObjects OBJECT IDENTIFIER ::= { hcAlarmMIB 1 } +hcAlarmNotifications OBJECT IDENTIFIER ::= { hcAlarmMIB 2 } +hcAlarmConformance OBJECT IDENTIFIER ::= { hcAlarmMIB 3 } + +hcAlarmControlObjects OBJECT IDENTIFIER ::= { hcAlarmObjects 1 } +hcAlarmCapabilitiesObjects OBJECT IDENTIFIER + ::= { hcAlarmObjects 2 } + +-- +-- Textual Conventions +-- + +HcValueStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type indicates the validity and sign of the data + in associated object instances which represent the absolute + value of a high capacity numeric quantity. Such an object + may be represented with one or more object instances. An + object of type HcValueStatus MUST be defined within the same + + + + structure as the object(s) representing the high capacity + absolute value. + + If the associated object instance(s) representing the high + capacity absolute value could not be accessed during the + sampling interval, and is therefore invalid, then the + associated HcValueStatus object will contain the value + 'valueNotAvailable(1)'. + + If the associated object instance(s) representing the high + capacity absolute value are valid and actual value of the + sample is greater than or equal to zero, then the associated + HcValueStatus object will contain the value + 'valuePositive(2)'. + + If the associated object instance(s) representing the high + capacity absolute value are valid and the actual value of + the sample is less than zero, then the associated + HcValueStatus object will contain the value + 'valueNegative(3)'. The associated absolute value should be + multiplied by -1 to obtain the true sample value." + SYNTAX INTEGER { + valueNotAvailable(1), + valuePositive(2), + valueNegative(3) + } + +-- +-- High Capacity Alarm Table +-- + +hcAlarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF HcAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of entries for the configuration of high capacity + alarms." + ::= { hcAlarmControlObjects 1 } + +hcAlarmEntry OBJECT-TYPE + SYNTAX HcAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the hcAlarmTable. Entries are usually + created in this table by management application action, but + may also be created by agent action as well." + + + + INDEX { hcAlarmIndex } + ::= { hcAlarmTable 1 } + +HcAlarmEntry ::= SEQUENCE { + hcAlarmIndex Integer32, + hcAlarmInterval Integer32, + hcAlarmVariable VariablePointer, + hcAlarmSampleType INTEGER, + hcAlarmAbsValue CounterBasedGauge64, + hcAlarmValueStatus HcValueStatus, + hcAlarmStartupAlarm INTEGER, + hcAlarmRisingThreshAbsValueLo Unsigned32, + hcAlarmRisingThreshAbsValueHi Unsigned32, + hcAlarmRisingThresholdValStatus HcValueStatus, + hcAlarmFallingThreshAbsValueLo Unsigned32, + hcAlarmFallingThreshAbsValueHi Unsigned32, + hcAlarmFallingThresholdValStatus HcValueStatus, + hcAlarmRisingEventIndex Integer32, + hcAlarmFallingEventIndex Integer32, + hcAlarmValueFailedAttempts Counter32, + hcAlarmOwner OwnerString, + hcAlarmStorageType StorageType, + hcAlarmStatus RowStatus } + +hcAlarmIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer index value used to uniquely identify + this high capacity alarm entry." + ::= { hcAlarmEntry 1 } + +hcAlarmInterval OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is sampled and + compared with the rising and falling thresholds. When + setting this variable, care should be taken in the case of + deltaValue sampling - the interval should be set short + enough that the sampled variable is very unlikely to + increase or decrease by more than 2^63 - 1 during a single + sampling interval. + + + + + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 2 } + +hcAlarmVariable OBJECT-TYPE + SYNTAX VariablePointer + 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 INTEGER (INTEGER, Integer32, Counter32, Counter64, + 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 alarm mechanism, the probe must only grant write access + to this object in those views that have read access to all + objects on the probe. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 3 } + +hcAlarmSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable and + calculating the value to be compared against the thresholds. + If the value of this object is absoluteValue(1), the value + of the selected variable will be compared directly with the + thresholds at the end of the sampling interval. 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 compared with the + thresholds. + + If the associated hcAlarmVariable instance could not be + obtained at the previous sample interval, then a delta + + + + sample is not possible, and the value of the associated + hcAlarmValueStatus object for this interval will be + valueNotAvailable(1). + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 4 } + +hcAlarmAbsValue OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The absolute value (i.e., unsigned value) of the + hcAlarmVariable 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 hcAlarmValueStatus must be checked, + and the value of this object 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 hcAlarmValueStatus will + be set to 'valueNotAvailable(1)'." + ::= { hcAlarmEntry 5 } + +hcAlarmValueStatus OBJECT-TYPE + SYNTAX HcValueStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the validity and sign of the data for + the hcAlarmAbsValue object, as described in the + HcValueStatus textual convention." + ::= { hcAlarmEntry 6 } + +hcAlarmStartupAlarm OBJECT-TYPE + SYNTAX INTEGER { + risingAlarm(1), + fallingAlarm(2), + risingOrFallingAlarm(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The alarm that may be sent when this entry is first set to + + + + active. If the first sample after this entry becomes active + is greater than or equal to the rising threshold and this + object is equal to risingAlarm(1) or + risingOrFallingAlarm(3), then a single rising alarm will be + generated. If the first sample after this entry becomes + valid is less than or equal to the falling threshold and + this object is equal to fallingAlarm(2) or + risingOrFallingAlarm(3), then a single falling alarm will be + generated. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 7 } + +hcAlarmRisingThreshAbsValueLo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower 32 bits of the absolute value for threshold for + the sampled statistic. The actual threshold value is + determined by the associated instances of the + hcAlarmRisingThreshAbsValueHi and + hcAlarmRisingThresholdValStatus objects, as follows: + + ABS(threshold) = hcAlarmRisingThreshAbsValueLo + + (hcAlarmRisingThreshAbsValueHi * 2^^32) + + The absolute value of the threshold is adjusted as required, + as described in the HcValueStatus textual convention. These + three object instances are conceptually combined to + represent the rising threshold for this entry. + + When the current sampled value is greater than or equal to + this threshold, and the value at the last sampling interval + was less than this threshold, a single event will be + generated. A single event will also be generated if the + first sample after this entry becomes valid is greater than + or equal to this threshold and the associated + hcAlarmStartupAlarm is equal to risingAlarm(1) or + risingOrFallingAlarm(3). + + After a rising event is generated, another such event will + not be generated until the sampled value falls below this + threshold and reaches the threshold identified by the + hcAlarmFallingThreshAbsValueLo, + hcAlarmFallingThreshAbsValueHi, and + hcAlarmFallingThresholdValStatus objects. + + + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + + ::= { hcAlarmEntry 8 } + +hcAlarmRisingThreshAbsValueHi OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upper 32 bits of the absolute value for threshold for + the sampled statistic. The actual threshold value is + determined by the associated instances of the + hcAlarmRisingThreshAbsValueLo and + hcAlarmRisingThresholdValStatus objects, as follows: + + ABS(threshold) = hcAlarmRisingThreshAbsValueLo + + (hcAlarmRisingThreshAbsValueHi * 2^^32) + + The absolute value of the threshold is adjusted as required, + as described in the HcValueStatus textual convention. These + three object instances are conceptually combined to + represent the rising threshold for this entry. + + When the current sampled value is greater than or equal to + this threshold, and the value at the last sampling interval + was less than this threshold, a single event will be + generated. A single event will also be generated if the + first sample after this entry becomes valid is greater than + or equal to this threshold and the associated + hcAlarmStartupAlarm is equal to risingAlarm(1) or + risingOrFallingAlarm(3). + + After a rising event is generated, another such event will + not be generated until the sampled value falls below this + threshold and reaches the threshold identified by the + hcAlarmFallingThreshAbsValueLo, + hcAlarmFallingThreshAbsValueHi, and + hcAlarmFallingThresholdValStatus objects. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 9 } + +hcAlarmRisingThresholdValStatus OBJECT-TYPE + SYNTAX HcValueStatus + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This object indicates the sign of the data for the rising + threshold, as defined by the hcAlarmRisingThresAbsValueLo + and hcAlarmRisingThresAbsValueHi objects, as described in + the HcValueStatus textual convention. + + The enumeration 'valueNotAvailable(1)' is not allowed, and + the associated hcAlarmStatus object cannot be equal to + 'active(1)' if this object is set to this value. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 10 } + +hcAlarmFallingThreshAbsValueLo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower 32 bits of the absolute value for threshold for + the sampled statistic. The actual threshold value is + determined by the associated instances of the + hcAlarmFallingThreshAbsValueHi and + hcAlarmFallingThresholdValStatus objects, as follows: + + ABS(threshold) = hcAlarmFallingThreshAbsValueLo + + (hcAlarmFallingThreshAbsValueHi * 2^^32) + + The absolute value of the threshold is adjusted as required, + as described in the HcValueStatus textual convention. These + three object instances are conceptually combined to + represent the falling threshold for this entry. + + When the current sampled value is less than or equal to this + threshold, and the value at the last sampling interval was + greater than this threshold, a single event will be + generated. A single event will also be generated if the + first sample after this entry becomes valid is less than or + equal to this threshold and the associated + hcAlarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3). + + After a falling event is generated, another such event will + not be generated until the sampled value rises above this + threshold and reaches the threshold identified by the + hcAlarmRisingThreshAbsValueLo, + hcAlarmRisingThreshAbsValueHi, and + hcAlarmRisingThresholdValStatus objects. + + + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 11 } + +hcAlarmFallingThreshAbsValueHi OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upper 32 bits of the absolute value for threshold for + the sampled statistic. The actual threshold value is + determined by the associated instances of the + hcAlarmFallingThreshAbsValueLo and + hcAlarmFallingThresholdValStatus objects, as follows: + + ABS(threshold) = hcAlarmFallingThreshAbsValueLo + + (hcAlarmFallingThreshAbsValueHi * 2^^32) + + The absolute value of the threshold is adjusted as required, + as described in the HcValueStatus textual convention. These + three object instances are conceptually combined to + represent the falling threshold for this entry. + + When the current sampled value is less than or equal to this + threshold, and the value at the last sampling interval was + greater than this threshold, a single event will be + generated. A single event will also be generated if the + first sample after this entry becomes valid is less than or + equal to this threshold and the associated + hcAlarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3). + + After a falling event is generated, another such event will + not be generated until the sampled value rises above this + threshold and reaches the threshold identified by the + hcAlarmRisingThreshAbsValueLo, + hcAlarmRisingThreshAbsValueHi, and + hcAlarmRisingThresholdValStatus objects. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 12 } + +hcAlarmFallingThresholdValStatus OBJECT-TYPE + SYNTAX HcValueStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object indicates the sign of the data for the falling + threshold, as defined by the hcAlarmFallingThreshAbsValueLo + and hcAlarmFallingThreshAbsValueHi objects, as described in + the HcValueStatus textual convention. + + The enumeration 'valueNotAvailable(1)' is not allowed, and + the associated hcAlarmStatus object cannot be equal to + 'active(1)' if this object is set to this value. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 13 } + +hcAlarmRisingEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index of the eventEntry that is used when a rising + threshold is crossed. The eventEntry identified by a + particular value of this index is the same as identified by + the same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no association + exists. In particular, if this value is zero, no associated + event will be generated, as zero is not a valid event index. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 14 } + +hcAlarmFallingEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index of the eventEntry that is used when a falling + threshold is crossed. The eventEntry identified by a + particular value of this index is the same as identified by + the same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no association + exists. In particular, if this value is zero, no associated + event will be generated, as zero is not a valid event index. + + This object may not be modified if the associated + hcAlarmStatus object is equal to active(1)." + ::= { hcAlarmEntry 15 } + +hcAlarmValueFailedAttempts OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hcAlarmVariable instance + was polled on behalf of this hcAlarmEntry, (while in the + active state) and the value was not available. This counter + may experience a discontinuity if the agent restarts, + indicated by the value of sysUpTime." + ::= { hcAlarmEntry 16 } + +hcAlarmOwner 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." + ::= { hcAlarmEntry 17 } + +hcAlarmStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of non-volatile storage configured for this entry. + If this object is equal to 'permanent(4)', then the + associated hcAlarmRisingEventIndex and + hcAlarmFallingEventIndex objects must be writable." + ::= { hcAlarmEntry 18 } + +hcAlarmStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + An entry MUST NOT exist in the active state unless all + objects in the entry have an appropriate value, as described + in the description clause for each writable object. + + The hcAlarmStatus object may be modified if the associated + instance of this object is equal to active(1), + notInService(2), or notReady(3). All other writable objects + may be modified if the associated instance of this object is + equal to notInService(2) or notReady(3)." + ::= { hcAlarmEntry 19 } + + + +-- +-- Capabilities +-- + +hcAlarmCapabilities OBJECT-TYPE + SYNTAX BITS { + hcAlarmCreation(0), + hcAlarmNvStorage(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the high capacity alarm capabilities + supported by this agent. + + If the 'hcAlarmCreation' BIT is set, then this agent allows + NMS applications to create entries in the hcAlarmTable. + + If the 'hcAlarmNvStorage' BIT is set, then this agent allows + entries in the hcAlarmTable which will be recreated after a + system restart, as controlled by the hcAlarmStorageType + object." + ::= { hcAlarmCapabilitiesObjects 1 } + +-- +-- Notifications +-- + +hcAlarmNotifPrefix OBJECT IDENTIFIER + ::= { hcAlarmNotifications 0 } + +hcRisingAlarm NOTIFICATION-TYPE + OBJECTS { hcAlarmVariable, + hcAlarmSampleType, + hcAlarmAbsValue, + hcAlarmValueStatus, + hcAlarmRisingThreshAbsValueLo, + hcAlarmRisingThreshAbsValueHi, + hcAlarmRisingThresholdValStatus, + hcAlarmRisingEventIndex } + STATUS current + DESCRIPTION + "The SNMP notification that is generated when a high + capacity alarm entry crosses its rising threshold and + generates an event that is configured for sending SNMP + traps. + + The hcAlarmEntry object instances identified in the OBJECTS + + + + clause are from the entry that causes this notification to + be generated." + ::= { hcAlarmNotifPrefix 1 } + +hcFallingAlarm NOTIFICATION-TYPE + OBJECTS { hcAlarmVariable, + hcAlarmSampleType, + hcAlarmAbsValue, + hcAlarmValueStatus, + hcAlarmFallingThreshAbsValueLo, + hcAlarmFallingThreshAbsValueHi, + hcAlarmFallingThresholdValStatus, + hcAlarmFallingEventIndex } + STATUS current + DESCRIPTION + "The SNMP notification that is generated when a high + capacity alarm entry crosses its falling threshold and + generates an event that is configured for sending SNMP + traps. + + The hcAlarmEntry object instances identified in the OBJECTS + clause are from the entry that causes this notification to + be generated." + ::= { hcAlarmNotifPrefix 2 } + +-- +-- Conformance Section +-- + +hcAlarmCompliances OBJECT IDENTIFIER ::= { hcAlarmConformance 1 } +hcAlarmGroups OBJECT IDENTIFIER ::= { hcAlarmConformance 2 } + +hcAlarmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the High + Capacity Alarm MIB." + MODULE -- this module + MANDATORY-GROUPS { + hcAlarmControlGroup, + hcAlarmCapabilitiesGroup, + hcAlarmNotificationsGroup + } + + MODULE RMON-MIB + MANDATORY-GROUPS { rmonEventGroup } + + ::= { hcAlarmCompliances 1 } + + + +-- Object Groups + +hcAlarmControlGroup OBJECT-GROUP + OBJECTS { + hcAlarmInterval, + hcAlarmVariable, + hcAlarmSampleType, + hcAlarmAbsValue, + hcAlarmValueStatus, + hcAlarmStartupAlarm, + hcAlarmRisingThreshAbsValueLo, + hcAlarmRisingThreshAbsValueHi, + hcAlarmRisingThresholdValStatus, + hcAlarmFallingThreshAbsValueLo, + hcAlarmFallingThreshAbsValueHi, + hcAlarmFallingThresholdValStatus, + hcAlarmRisingEventIndex, + hcAlarmFallingEventIndex, + hcAlarmValueFailedAttempts, + hcAlarmOwner, + hcAlarmStorageType, + hcAlarmStatus + } + STATUS current + DESCRIPTION + "A collection of objects used to configure entries for high + capacity alarm threshold monitoring purposes." + ::= { hcAlarmGroups 1 } + +hcAlarmCapabilitiesGroup OBJECT-GROUP + OBJECTS { + hcAlarmCapabilities + } + STATUS current + DESCRIPTION + "A collection of objects used to indicate an agent's high + capacity alarm threshold monitoring capabilities." + ::= { hcAlarmGroups 2 } + +hcAlarmNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + hcRisingAlarm, + hcFallingAlarm + } + STATUS current + DESCRIPTION + "A collection of notifications to deliver information + related to a high capacity rising or falling threshold event + + + + to a management application." + ::= { hcAlarmGroups 3 } + +END diff --git a/mibs/ietf/HC-PerfHist-TC-MIB b/mibs/ietf/HC-PerfHist-TC-MIB new file mode 100644 index 0000000..4a3952e --- /dev/null +++ b/mibs/ietf/HC-PerfHist-TC-MIB @@ -0,0 +1,235 @@ +HC-PerfHist-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + Counter64, + Unsigned32, + Integer32, + mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + + + +hcPerfHistTCMIB MODULE-IDENTITY + LAST-UPDATED "200402030000Z" -- February 3, 2004 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-7324 + USA + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-editor: Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 + USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + Co-editor: Rajesh Abbi + Alcatel USA + Postal: 2301 Sugar Bush Road + Raleigh, NC 27612-3339 + USA + Email: Rajesh.Abbi@alcatel.com + Phone: +1 919 850 6194 + " + DESCRIPTION + "This MIB Module provides Textual Conventions to be + used by systems supporting 15 minute based performance + history counts that require high-capacity counts. + + Copyright (C) The Internet Society (2004). This version + of this MIB module is part of RFC 3705: see the RFC + itself for full legal notices." + + REVISION "200402030000Z" -- February 3, 2004 + DESCRIPTION "Initial version, published as RFC 3705." + + ::= { mib-2 107 } + +HCPerfValidIntervals ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The number of near end intervals for which data was + + + + collected. The value of an object with an + HCPerfValidIntervals syntax will be 96 unless the + measurement was (re-)started within the last 1440 minutes, + in which case the value will be the number of complete 15 + minute intervals for which the agent has at least some data. + In certain cases (e.g., in the case where the agent is a + proxy) it is possible that some intervals are unavailable. + In this case, this interval is the maximum interval number + for which data is available." + SYNTAX Integer32 (0..96) + +HCPerfInvalidIntervals ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The number of near end intervals for which no data is + available. The value of an object with an + HCPerfInvalidIntervals syntax will typically be zero except + in cases where the data for some intervals are not available + (e.g., in proxy situations)." + SYNTAX Integer32 (0..96) + +HCPerfTimeElapsed ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the beginning + of the current measurement period. If, for some reason, + such as an adjustment in the system's time-of-day clock or + the addition of a leap second, the duration of the current + interval exceeds the maximum value, the agent will return + the maximum value. + + For 15 minute intervals, the range is limited to (0..899). + For 24 hour intervals, the range is limited to (0..86399)." + SYNTAX Integer32 (0..86399) + +HCPerfIntervalThreshold ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This convention defines a range of values that may be set + in a fault threshold alarm control. As the number of + seconds in a 15-minute interval numbers at most 900, + objects of this type may have a range of 0...900, where the + value of 0 disables the alarm." + SYNTAX Unsigned32 (0..900) + +HCPerfCurrentCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "A gauge associated with a performance measurement in a + current 15 minute measurement interval. The value of an + object with an HCPerfCurrentCount syntax starts from zero + and is increased when associated events occur, until the + end of the 15 minute interval. At that time the value of + the gauge is stored in the first 15 minute history + interval, and the gauge is restarted at zero. In the case + where the agent has no valid data available for the + current interval, the corresponding object instance is not + available and upon a retrieval request a corresponding + error message shall be returned to indicate that this + instance does not exist. + + This count represents a non-negative integer, which + may increase or decrease, but shall never exceed 2^64-1 + (18446744073709551615 decimal), nor fall below 0. The + value of an object with HCPerfCurrentCount syntax + assumes its maximum value whenever the underlying count + exceeds 2^64-1. If the underlying count subsequently + decreases below 2^64-1 (due, e.g., to a retroactive + adjustment as a result of entering or exiting unavailable + time), then the object's value also decreases. + + Note that this TC is not strictly supported in SMIv2, + because the 'always increasing' and 'counter wrap' + semantics associated with the Counter64 base type are not + preserved. It is possible that management applications + which rely solely upon the (Counter64) ASN.1 tag to + determine object semantics will mistakenly operate upon + objects of this type as they would for Counter64 objects. + + This textual convention represents a limited and short- + term solution, and may be deprecated as a long term + solution is defined and deployed to replace it." + SYNTAX Counter64 + +HCPerfIntervalCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A gauge associated with a performance measurement in + a previous 15 minute measurement interval. In the case + where the agent has no valid data available for a + particular interval, the corresponding object instance is + not available and upon a retrieval request a corresponding + error message shall be returned to indicate that this + instance does not exist. + + Let X be an object with HCPerfIntervalCount syntax. + + + + Let Y be an object with HCPerfCurrentCount syntax. + Let Z be an object with HCPerfTotalCount syntax. + Then, in a system supporting a history of n intervals with + X(1) and X(n) the most and least recent intervals + respectively, the following applies at the end of a 15 + minute interval: + + - discard the value of X(n) + - the value of X(i) becomes that of X(i-1) + for n >= i > 1 + - the value of X(1) becomes that of Y. + - the value of Z, if supported, is adjusted. + + This count represents a non-negative integer, which + may increase or decrease, but shall never exceed 2^64-1 + (18446744073709551615 decimal), nor fall below 0. The + value of an object with HCPerfIntervalCount syntax + assumes its maximum value whenever the underlying count + exceeds 2^64-1. If the underlying count subsequently + decreases below 2^64-1 (due, e.g., to a retroactive + adjustment as a result of entering or exiting unavailable + time), then the value of the object also decreases. + + Note that this TC is not strictly supported in SMIv2, + because the 'always increasing' and 'counter wrap' + semantics associated with the Counter64 base type are not + preserved. It is possible that management applications + which rely solely upon the (Counter64) ASN.1 tag to + determine object semantics will mistakenly operate upon + objects of this type as they would for Counter64 objects. + + This textual convention represents a limited and short- + term solution, and may be deprecated as a long term + solution is defined and deployed to replace it." + SYNTAX Counter64 + +HCPerfTotalCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A gauge representing the aggregate of previous valid 15 + minute measurement intervals. Intervals for which no + valid data was available are not counted. + + This count represents a non-negative integer, which + may increase or decrease, but shall never exceed 2^64-1 + (18446744073709551615 decimal), nor fall below 0. The + value of an object with HCPerfTotalCount syntax + assumes its maximum value whenever the underlying count + + + + exceeds 2^64-1. If the underlying count subsequently + decreases below 2^64-1 (due, e.g., to a retroactive + adjustment as a result of entering or exiting unavailable + time), then the object's value also decreases. + + Note that this TC is not strictly supported in SMIv2, + because the 'always increasing' and 'counter wrap' + semantics associated with the Counter64 base type are not + preserved. It is possible that management applications + which rely solely upon the (Counter64) ASN.1 tag to + determine object semantics will mistakenly operate upon + objects of this type as they would for Counter64 objects. + + This textual convention represents a limited and short- + term solution, and may be deprecated as a long term + solution is defined and deployed to replace it." + SYNTAX Counter64 +END diff --git a/mibs/ietf/HC-RMON-MIB b/mibs/ietf/HC-RMON-MIB new file mode 100644 index 0000000..c2d9d2e --- /dev/null +++ b/mibs/ietf/HC-RMON-MIB @@ -0,0 +1,3333 @@ +HC-RMON-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, + Gauge32, Counter64 FROM SNMPv2-SMI + RowStatus, TimeStamp FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + rmon, OwnerString, statistics, history, hosts, hostTopN, matrix, + etherStatsIndex, etherHistoryIndex, etherHistorySampleIndex, + hostIndex, hostAddress, hostTimeIndex, hostTimeCreationOrder, + hostTopNReport, hostTopNIndex, + matrixSDIndex, matrixSDSourceAddress, matrixSDDestAddress, + matrixDSIndex, matrixDSDestAddress, matrixDSSourceAddress, + capture, captureBufferControlIndex, captureBufferIndex + FROM RMON-MIB + protocolDirLocalIndex, protocolDistControlIndex, + protocolDist, hlHostControlIndex, + nlHost, nlHostTimeMark, nlHostAddress, + hlMatrixControlIndex, nlMatrix, + nlMatrixSDTimeMark, nlMatrixSDSourceAddress, nlMatrixSDDestAddress, + nlMatrixDSTimeMark, nlMatrixDSDestAddress, nlMatrixDSSourceAddress, + nlMatrixTopNControlIndex, nlMatrixTopNIndex, + alHost, alHostTimeMark, + alMatrix, alMatrixSDTimeMark, alMatrixDSTimeMark, + alMatrixTopNControlIndex, alMatrixTopNIndex, + + + + usrHistory, usrHistoryControlIndex, + usrHistorySampleIndex, usrHistoryObjectIndex, + rmonConformance, ZeroBasedCounter32, probeConfig + FROM RMON2-MIB + ZeroBasedCounter64, CounterBasedGauge64 + FROM HCNUM-TC; + +-- Remote Network Monitoring MIB + +hcRMON MODULE-IDENTITY + LAST-UPDATED "200205080000Z" -- May 08, 2002 + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Steve Waldbusser + + Phone: +1-650-948-6500 + Fax: +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Andy Bierman + WG Chair + abierman@cisco.com + + RMONMIB WG Mailing List + rmonmib@ietf.org + http://www.ietf.org/mailman/listinfo/rmonmib" + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + augments the original RMON MIB as specified in + RFC 2819 and RFC 1513 and RMON-2 MIB as specified in + RFC 2021." + + REVISION "200205080000Z" -- May 08, 2002 + DESCRIPTION + "The original version of this MIB, published as RFC3273." + ::= { rmonConformance 5 } + +-- { rmon 1 } through { rmon 20 } are defined in RMON [RFC 2819] and +-- the Token Ring RMON MIB [RFC 1513] and the RMON-2 MIB [RFC 2021]. + +mediaIndependentStats OBJECT IDENTIFIER ::= { rmon 21 } + +mediaIndependentTable OBJECT-TYPE + SYNTAX SEQUENCE OF MediaIndependentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Media independent statistics for promiscuous monitoring of + any media. + + The following table defines media independent statistics that + provide information for full and/or half-duplex links as well + as high capacity links. + + For half-duplex links, or full-duplex-capable links operating + in half-duplex mode, the mediaIndependentIn* objects shall be + used and the mediaIndependentOut* objects shall not increment. + + For full-duplex links, the mediaIndependentOut* objects shall + be present and shall increment. Whenever possible, the probe + should count packets moving away from the closest terminating + equipment as output packets. Failing that, the probe should + count packets moving away from the DTE as output packets." + ::= { mediaIndependentStats 1 } + +mediaIndependentEntry OBJECT-TYPE + SYNTAX MediaIndependentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Media independent statistics for promiscuous monitoring of + any media." + INDEX { mediaIndependentIndex } + ::= { mediaIndependentTable 1 } + +MediaIndependentEntry ::= SEQUENCE { + + mediaIndependentIndex Integer32, + mediaIndependentDataSource OBJECT IDENTIFIER, + mediaIndependentDropEvents Counter32, + mediaIndependentDroppedFrames Counter32, + mediaIndependentInPkts Counter32, + mediaIndependentInOverflowPkts Counter32, + mediaIndependentInHighCapacityPkts Counter64, + mediaIndependentOutPkts Counter32, + mediaIndependentOutOverflowPkts Counter32, + mediaIndependentOutHighCapacityPkts Counter64, + mediaIndependentInOctets Counter32, + mediaIndependentInOverflowOctets Counter32, + mediaIndependentInHighCapacityOctets Counter64, + mediaIndependentOutOctets Counter32, + mediaIndependentOutOverflowOctets Counter32, + mediaIndependentOutHighCapacityOctets Counter64, + mediaIndependentInNUCastPkts Counter32, + mediaIndependentInNUCastOverflowPkts Counter32, + + + + mediaIndependentInNUCastHighCapacityPkts Counter64, + mediaIndependentOutNUCastPkts Counter32, + mediaIndependentOutNUCastOverflowPkts Counter32, + mediaIndependentOutNUCastHighCapacityPkts Counter64, + mediaIndependentInErrors Counter32, + mediaIndependentOutErrors Counter32, + mediaIndependentInputSpeed Gauge32, + mediaIndependentOutputSpeed Gauge32, + mediaIndependentDuplexMode INTEGER, + mediaIndependentDuplexChanges Counter32, + mediaIndependentDuplexLastChange TimeStamp, + mediaIndependentOwner OwnerString, + mediaIndependentStatus RowStatus +} + +mediaIndependentIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of this object uniquely identifies this + mediaIndependent entry." + ::= { mediaIndependentEntry 1 } + +mediaIndependentDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of the data that + this mediaIndependent entry 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 RFC 1213 and RFC 2233 [16,17], 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 packets + on the local network segment attached to the + identified interface. + + An agent may or may not be able to tell if + fundamental changes to the media of the interface + have occurred and necessitate a deletion of + this entry. For example, a hot-pluggable ethernet + card could be pulled out and replaced by a + + + + token-ring card. In such a case, if the agent has + such knowledge of the change, it is recommended that + it delete this entry. + + This object may not be modified if the associated + mediaIndependentStatus object is equal to active(1)." + ::= { mediaIndependentEntry 2 } + +mediaIndependentDropEvents OBJECT-TYPE + SYNTAX Counter32 + UNITS "Events" + MAX-ACCESS read-only + STATUS current + 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." + ::= { mediaIndependentEntry 3 } + +mediaIndependentDroppedFrames OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + 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 + mediaIndependentDropEvents, 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." + ::= { mediaIndependentEntry 4 } + +mediaIndependentInPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + + + + broadcast packets, and multicast packets) received + on a half-duplex link or on the inbound connection of a + full-duplex link." + ::= { mediaIndependentEntry 5 } + +mediaIndependentInOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentInPkts counter has overflowed." + ::= { mediaIndependentEntry 6 } + +mediaIndependentInHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received + on a half-duplex link or on the inbound connection of a + full-duplex link." + ::= { mediaIndependentEntry 7 } + +mediaIndependentOutPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received on a + full-duplex link in the direction of the network." + ::= { mediaIndependentEntry 8 } + +mediaIndependentOutOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentOutPkts counter has overflowed." + ::= { mediaIndependentEntry 9 } + + + + +mediaIndependentOutHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received on a + full-duplex link in the direction of the network." + ::= { mediaIndependentEntry 10 } + +mediaIndependentInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including those in bad + packets) received (excluding framing bits but including FCS + octets) on a half-duplex link or on the inbound connection of + a full-duplex link." + ::= { mediaIndependentEntry 11 } + +mediaIndependentInOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentInOctets counter has overflowed." + ::= { mediaIndependentEntry 12 } + +mediaIndependentInHighCapacityOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including those in bad + packets) received (excluding framing bits but + including FCS octets) on a half-duplex link or on the inbound + connection of a full-duplex link." + ::= { mediaIndependentEntry 13 } + +mediaIndependentOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including those in bad + packets) received on a full-duplex link in the direction of + the network (excluding framing bits but including FCS + octets)." + ::= { mediaIndependentEntry 14 } + +mediaIndependentOutOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentOutOctets counter has overflowed." + ::= { mediaIndependentEntry 15 } + +mediaIndependentOutHighCapacityOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including those in bad + packets) received on a full-duplex link in the direction of + the network (excluding framing bits but including FCS + octets)." + ::= { mediaIndependentEntry 16 } + +mediaIndependentInNUCastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets (including bad + packets) received on a half-duplex link or on the inbound + connection of a full-duplex link." + ::= { mediaIndependentEntry 17 } + +mediaIndependentInNUCastOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of times the associated + mediaIndependentInNUCastPkts counter has overflowed." + ::= { mediaIndependentEntry 18 } + +mediaIndependentInNUCastHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets (including bad + packets) received on a half-duplex link or on the inbound + connection of a full-duplex link." + ::= { mediaIndependentEntry 19 } + +mediaIndependentOutNUCastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets (including bad + packets) received on a full-duplex link in the direction of + the network." + ::= { mediaIndependentEntry 20 } + +mediaIndependentOutNUCastOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + mediaIndependentOutNUCastPkts counter has overflowed." + ::= { mediaIndependentEntry 21 } + +mediaIndependentOutNUCastHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets) + received on a full-duplex link in the direction of the + network." + ::= { mediaIndependentEntry 22 } + +mediaIndependentInErrors OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of bad packets received on a + half-duplex link or on the inbound connection of a + full-duplex link." + ::= { mediaIndependentEntry 23 } + +mediaIndependentOutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of bad packets received on a full-duplex + link in the direction of the network." + ::= { mediaIndependentEntry 24 } + +mediaIndependentInputSpeed OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Kilobits per Second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nominal maximum speed in kilobits per second of this + half-duplex link or on the inbound connection of this + full-duplex link. If the speed is unknown or there is no fixed + maximum (e.g. a compressed link), this value shall be zero." + ::= { mediaIndependentEntry 25 } + +mediaIndependentOutputSpeed OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Kilobits per Second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nominal maximum speed in kilobits per second of this + full-duplex link in the direction of the network. If the speed + is unknown, the link is half-duplex, or there is no fixed + maximum (e.g. a compressed link), this value shall be zero." + ::= { mediaIndependentEntry 26 } + +mediaIndependentDuplexMode OBJECT-TYPE + SYNTAX INTEGER { + halfduplex(1), + fullduplex(2) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current mode of this link. + + Note that if the link has full-duplex capabilities but + is operating in half-duplex mode, this value will be + halfduplex(1)." + ::= { mediaIndependentEntry 27 } + +mediaIndependentDuplexChanges OBJECT-TYPE + SYNTAX Counter32 + UNITS "Events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this link has changed from full-duplex + mode to half-duplex mode or from half-duplex mode to + full-duplex mode." + ::= { mediaIndependentEntry 28 } + +mediaIndependentDuplexLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the duplex status + of this link last changed." + ::= { mediaIndependentEntry 29 } + +mediaIndependentOwner 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." + ::= { mediaIndependentEntry 30 } + +mediaIndependentStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this media independent statistics entry." + ::= { mediaIndependentEntry 31 } + + + + +-- High Capacity extensions for the etherStatsTable + +etherStatsHighCapacityTable OBJECT-TYPE + + SYNTAX SEQUENCE OF EtherStatsHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + etherStatsTable." + ::= { statistics 7 } + +etherStatsHighCapacityEntry OBJECT-TYPE + SYNTAX EtherStatsHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + etherStatsEntry. These objects will be created by the agent + for all etherStatsEntries it deems appropriate." + INDEX { etherStatsIndex } + ::= { etherStatsHighCapacityTable 1 } + +EtherStatsHighCapacityEntry ::= SEQUENCE { + etherStatsHighCapacityOverflowPkts Counter32, + etherStatsHighCapacityPkts Counter64, + etherStatsHighCapacityOverflowOctets Counter32, + etherStatsHighCapacityOctets Counter64, + etherStatsHighCapacityOverflowPkts64Octets Counter32, + etherStatsHighCapacityPkts64Octets Counter64, + etherStatsHighCapacityOverflowPkts65to127Octets Counter32, + etherStatsHighCapacityPkts65to127Octets Counter64, + etherStatsHighCapacityOverflowPkts128to255Octets Counter32, + etherStatsHighCapacityPkts128to255Octets Counter64, + etherStatsHighCapacityOverflowPkts256to511Octets Counter32, + etherStatsHighCapacityPkts256to511Octets Counter64, + etherStatsHighCapacityOverflowPkts512to1023Octets Counter32, + etherStatsHighCapacityPkts512to1023Octets Counter64, + etherStatsHighCapacityOverflowPkts1024to1518Octets Counter32, + etherStatsHighCapacityPkts1024to1518Octets Counter64 +} + +etherStatsHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of times the associated etherStatsPkts + counter has overflowed." + ::= { etherStatsHighCapacityEntry 1 } + +etherStatsHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received." + ::= { etherStatsHighCapacityEntry 2 } + +etherStatsHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsOctets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 3 } + +etherStatsHighCapacityOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets). + + If the network is half-duplex Fast Ethernet, this + object can be used as a reasonable estimate of + utilization. If greater precision is desired, the + etherStatsHighCapacityPkts and + etherStatsHighCapacityOctets objects should be sampled + before and after a common interval. The differences + in the sampled values are Pkts and Octets, + respectively, and the number of seconds in the + interval is Interval. These values + are used to calculate the Utilization as follows: + + + + + + + Pkts * (.96 + .64) + (Octets * .08) + Utilization = ------------------------------------- + Interval * 10,000 + + The result of this equation is the value Utilization + which is the percent utilization of the ethernet + segment on a scale of 0 to 100 percent. + + This table is not appropriate for monitoring full-duplex + ethernets. If the network is a full-duplex ethernet and the + mediaIndependentTable is monitoring that network, the + utilization can be calculated as follows: + + 1) Determine the utilization of the inbound path by using + the appropriate equation (for ethernet or fast ethernet) + to determine the utilization, substituting + mediaIndependentInPkts for etherStatsHighCapacityPkts, and + mediaIndependentInOctets for etherStatsHighCapacityOctets. + Call the resulting utilization inUtilization. + + 2) Determine the utilization of the outbound path by using + the same equation to determine the utilization, substituting + mediaIndependentOutPkts for etherStatsHighCapacityPkts, and + mediaIndependentOutOctets for etherStatsHighCapacityOctets. + Call the resulting utilization outUtilization. + + 3) The utilization is the maximum of inUtilization and + outUtilization. This metric shows the amount of percentage + of bandwidth that is left before congestion will be + experienced on the link." + ::= { etherStatsHighCapacityEntry 4 } + +etherStatsHighCapacityOverflowPkts64Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsPkts64Octets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 5 } + +etherStatsHighCapacityPkts64Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of packets (including bad + packets) received that were 64 octets in length + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 6 } + +etherStatsHighCapacityOverflowPkts65to127Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsPkts65to127Octets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 7 } + +etherStatsHighCapacityPkts65to127Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 65 and 127 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 8 } + +etherStatsHighCapacityOverflowPkts128to255Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsPkts128to255Octets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 9 } + +etherStatsHighCapacityPkts128to255Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 128 and 255 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 10 } + + + +etherStatsHighCapacityOverflowPkts256to511Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherStatsPkts256to511Octets + counter has overflowed." + ::= { etherStatsHighCapacityEntry 11 } + +etherStatsHighCapacityPkts256to511Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 256 and 511 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 12 } + +etherStatsHighCapacityOverflowPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + etherStatsPkts512to1023Octets counter has overflowed." + ::= { etherStatsHighCapacityEntry 13 } + +etherStatsHighCapacityPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 512 and 1023 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 14 } + +etherStatsHighCapacityOverflowPkts1024to1518Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of times the associated + etherStatsPkts1024to1518Octets counter has overflowed." + ::= { etherStatsHighCapacityEntry 15 } + +etherStatsHighCapacityPkts1024to1518Octets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 1024 and 1518 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsHighCapacityEntry 16 } + +-- High Capacity extensions for the etherHistoryTable + +etherHistoryHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherHistoryHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + etherHistoryTable." + ::= { history 6 } + +etherHistoryHighCapacityEntry OBJECT-TYPE + SYNTAX EtherHistoryHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + etherHistoryEntry. These objects will be created by the agent + for all etherHistoryEntries associated with whichever + historyControlEntries it deems appropriate. (i.e., either all + etherHistoryHighCapacityEntries associated with a particular + historyControlEntry will be created, or none of them will + be.)" + INDEX { etherHistoryIndex, etherHistorySampleIndex } + ::= { etherHistoryHighCapacityTable 1 } + +EtherHistoryHighCapacityEntry ::= SEQUENCE { + etherHistoryHighCapacityOverflowPkts Gauge32, + etherHistoryHighCapacityPkts CounterBasedGauge64, + etherHistoryHighCapacityOverflowOctets Gauge32, + + + + etherHistoryHighCapacityOctets CounterBasedGauge64 +} + +etherHistoryHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherHistoryPkts + Gauge overflowed during this sampling interval." + ::= { etherHistoryHighCapacityEntry 1 } + +etherHistoryHighCapacityPkts OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received during + this sampling interval." + ::= { etherHistoryHighCapacityEntry 2 } + +etherHistoryHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated etherHistoryOctets + counter has overflowed during this sampling interval." + ::= { etherHistoryHighCapacityEntry 3 } + +etherHistoryHighCapacityOctets OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets) during this sampling interval." + ::= { etherHistoryHighCapacityEntry 4 } + +-- High Capacity Extensions for the hostTable + + + + +hostHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTable." + ::= { hosts 5 } + +hostHighCapacityEntry OBJECT-TYPE + SYNTAX HostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostEntry. These objects will be created by the agent + for all hostEntries associated with whichever + hostControlEntries it deems appropriate. (i.e., either all + hostHighCapacityEntries associated with a particular + hostControlEntry will be created, or none of them will + be.)" + INDEX { hostIndex, hostAddress } + ::= { hostHighCapacityTable 1 } + +HostHighCapacityEntry ::= SEQUENCE { + hostHighCapacityInOverflowPkts Counter32, + hostHighCapacityInPkts Counter64, + hostHighCapacityOutOverflowPkts Counter32, + hostHighCapacityOutPkts Counter64, + hostHighCapacityInOverflowOctets Counter32, + hostHighCapacityInOctets Counter64, + hostHighCapacityOutOverflowOctets Counter32, + hostHighCapacityOutOctets Counter64 +} + +hostHighCapacityInOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostInPkts + counter has overflowed." + ::= { hostHighCapacityEntry 1 } + +hostHighCapacityInPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted to + this address since it was added to the + hostHighCapacityTable." + ::= { hostHighCapacityEntry 2 } + +hostHighCapacityOutOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostOutPkts + counter has overflowed." + ::= { hostHighCapacityEntry 3 } + +hostHighCapacityOutPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, including bad packets, transmitted + by this address since it was added to the + hostHighCapacityTable." + ::= { hostHighCapacityEntry 4 } + +hostHighCapacityInOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostInOctets + counter has overflowed." + ::= { hostHighCapacityEntry 5 } + +hostHighCapacityInOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the hostHighCapacityTable (excluding + framing bits but including FCS octets), except for + + + + those octets in bad packets." + ::= { hostHighCapacityEntry 6 } + +hostHighCapacityOutOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostOutOctets + counter has overflowed." + ::= { hostHighCapacityEntry 7 } + +hostHighCapacityOutOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the hostHighCapacityTable (excluding + framing bits but including FCS octets), including + those octets in bad packets." + ::= { hostHighCapacityEntry 8 } + +-- High Capacity extensions for the hostTimeTable + +hostTimeHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTimeHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTimeTable." + ::= { hosts 6 } + +hostTimeHighCapacityEntry OBJECT-TYPE + SYNTAX HostTimeHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTimeEntry. These objects will be created by the agent + for all hostTimeEntries associated with whichever + hostControlEntries it deems appropriate. (i.e., either all + hostTimeHighCapacityEntries associated with a particular + hostControlEntry will be created, or none of them will + be.)" + + + + INDEX { hostTimeIndex, hostTimeCreationOrder } + ::= { hostTimeHighCapacityTable 1 } + +HostTimeHighCapacityEntry ::= SEQUENCE { + hostTimeHighCapacityInOverflowPkts Counter32, + hostTimeHighCapacityInPkts Counter64, + hostTimeHighCapacityOutOverflowPkts Counter32, + hostTimeHighCapacityOutPkts Counter64, + hostTimeHighCapacityInOverflowOctets Counter32, + hostTimeHighCapacityInOctets Counter64, + hostTimeHighCapacityOutOverflowOctets Counter32, + hostTimeHighCapacityOutOctets Counter64 +} + +hostTimeHighCapacityInOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostTimeInPkts + counter has overflowed." + ::= { hostTimeHighCapacityEntry 1 } + +hostTimeHighCapacityInPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted to this address + since it was added to the hostTimeHighCapacityTable." + ::= { hostTimeHighCapacityEntry 2 } + +hostTimeHighCapacityOutOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostTimeOutPkts + counter has overflowed." + ::= { hostTimeHighCapacityEntry 3 } + +hostTimeHighCapacityOutPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of packets, including bad packets, transmitted + by this address since it was added to the + hostTimeHighCapacityTable." + ::= { hostTimeHighCapacityEntry 4 } + +hostTimeHighCapacityInOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostTimeInOctets + counter has overflowed." + ::= { hostTimeHighCapacityEntry 5 } + +hostTimeHighCapacityInOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the hostTimeHighCapacityTable + (excluding framing bits but including FCS octets), + except for those octets in bad packets." + ::= { hostTimeHighCapacityEntry 6 } + +hostTimeHighCapacityOutOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated hostTimeOutOctets + counter has overflowed." + ::= { hostTimeHighCapacityEntry 7 } + +hostTimeHighCapacityOutOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address since + it was added to the hostTimeTable (excluding framing + bits but including FCS octets), including those + + + + octets in bad packets." + ::= { hostTimeHighCapacityEntry 8 } + +-- High Capacity Extensions for the hostTopNTable + +hostTopNHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTopNTable when hostTopNRateBase specifies a High Capacity + TopN Report." + ::= { hostTopN 3 } + +hostTopNHighCapacityEntry OBJECT-TYPE + SYNTAX HostTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + hostTopNEntry when hostTopNRateBase specifies a High Capacity + TopN Report. These objects will be created by the agent + for all hostTopNEntries associated with whichever + hostTopNControlEntries have a hostTopNRateBase that specify + a high capacity report." + INDEX { hostTopNReport, hostTopNIndex } + ::= { hostTopNHighCapacityTable 1 } + +HostTopNHighCapacityEntry ::= SEQUENCE { + hostTopNHighCapacityAddress OCTET STRING, + hostTopNHighCapacityBaseRate Gauge32, + hostTopNHighCapacityOverflowRate Gauge32, + hostTopNHighCapacityRate CounterBasedGauge64 +} + +hostTopNHighCapacityAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical address of this host." + ::= { hostTopNHighCapacityEntry 1 } + +hostTopNHighCapacityBaseRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval, modulo 2^32. The + selected variable is this host's instance of the + object selected by hostTopNRateBase." + ::= { hostTopNHighCapacityEntry 2 } + +hostTopNHighCapacityOverflowRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval, divided by 2^32, truncating + fractions (i.e., X DIV 2^32). The selected variable is + this host's instance of the object selected by + hostTopNRateBase." + ::= { hostTopNHighCapacityEntry 3 } + +hostTopNHighCapacityRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval. The selected + variable is this host's instance of the object + selected by hostTopNRateBase." + ::= { hostTopNHighCapacityEntry 4 } + +-- High Capacity Extensions for the matrixSDTable + +matrixSDHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + matrixSDTable." + ::= { matrix 5 } + +matrixSDHighCapacityEntry OBJECT-TYPE + SYNTAX MatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + matrixSDEntry. These objects will be created by the agent + + + + for all matrixSDEntries associated with whichever + matrixControlEntries it deems appropriate. (i.e., either all + matrixSDHighCapacityEntries associated with a particular + matrixControlEntry will be created, or none of them will + be.)" + INDEX { matrixSDIndex, + matrixSDSourceAddress, matrixSDDestAddress } + ::= { matrixSDHighCapacityTable 1 } + +MatrixSDHighCapacityEntry ::= SEQUENCE { + matrixSDHighCapacityOverflowPkts Counter32, + matrixSDHighCapacityPkts Counter64, + matrixSDHighCapacityOverflowOctets Counter32, + matrixSDHighCapacityOctets Counter64 +} + +matrixSDHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated matrixSDPkts + counter has overflowed." + ::= { matrixSDHighCapacityEntry 1 } + +matrixSDHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number + includes bad packets)." + ::= { matrixSDHighCapacityEntry 2 } + +matrixSDHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated matrixSDOctets + counter has overflowed." + ::= { matrixSDHighCapacityEntry 3 } + +matrixSDHighCapacityOctets OBJECT-TYPE + + + + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets (excluding framing bits but + including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixSDHighCapacityEntry 4 } + +-- High Capacity extensions for the matrixDSTable + +matrixDSHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + matrixDSTable." + ::= { matrix 6 } + +matrixDSHighCapacityEntry OBJECT-TYPE + SYNTAX MatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + matrixDSEntry. These objects will be created by the agent + for all matrixDSEntries associated with whichever + matrixControlEntries it deems appropriate. (i.e., either all + matrixDSHighCapacityEntries associated with a particular + matrixControlEntry will be created, or none of them will + be.)" + INDEX { matrixDSIndex, + matrixDSDestAddress, matrixDSSourceAddress } + ::= { matrixDSHighCapacityTable 1 } + +MatrixDSHighCapacityEntry ::= SEQUENCE { + matrixDSHighCapacityOverflowPkts Counter32, + matrixDSHighCapacityPkts Counter64, + matrixDSHighCapacityOverflowOctets Counter32, + matrixDSHighCapacityOctets Counter64 +} + +matrixDSHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated matrixDSPkts + counter has overflowed." + ::= { matrixDSHighCapacityEntry 1 } + +matrixDSHighCapacityPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number + includes bad packets)." + ::= { matrixDSHighCapacityEntry 2 } + +matrixDSHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated matrixDSOctets + counter has overflowed." + ::= { matrixDSHighCapacityEntry 3 } + +matrixDSHighCapacityOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets (excluding framing bits + but including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixDSHighCapacityEntry 4 } + +-- High Capacity extensions for the captureBufferTable + +captureBufferHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF CaptureBufferHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + + + + captureBufferTable." + ::= { capture 3 } + +captureBufferHighCapacityEntry OBJECT-TYPE + SYNTAX CaptureBufferHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-1 + captureBufferEntry. These objects will be created by the agent + for all captureBufferEntries associated with whichever + bufferControlEntries it deems appropriate. (i.e., either all + captureBufferHighCapacityEntries associated with a particular + bufferControlEntry will be created, or none of them will + be.)" + INDEX { captureBufferControlIndex, captureBufferIndex } + ::= { captureBufferHighCapacityTable 1 } + +CaptureBufferHighCapacityEntry ::= SEQUENCE { + captureBufferPacketHighCapacityTime Integer32 +} + +captureBufferPacketHighCapacityTime OBJECT-TYPE + SYNTAX Integer32 (0..999999) + UNITS "nanoseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nanoseconds that had passed since this capture + buffer was first turned on when this packet was captured, + modulo 10^6. + + This object is used in conjunction with the + captureBufferPacketTime object. This object returns the + number of nano-seconds to be added to to number of + milli-seconds obtained from the captureBufferPacketTime + object, to obtain more accurate inter packet arrival time." + ::= { captureBufferHighCapacityEntry 1 } + +-- High Capacity extensions for the protocolDistStatsTable + +protocolDistStatsHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistStatsHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + protocolDistStatsTable." + + + + ::= { protocolDist 3 } + +protocolDistStatsHighCapacityEntry OBJECT-TYPE + SYNTAX ProtocolDistStatsHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + protocolDistStatsTable. These objects will be created by the + agent for all protocolDistStatsEntries associated with + whichever protocolDistControlEntries it deems appropriate. + (i.e., either all protocolDistStatsHighCapacityEntries + associated with a particular protocolDistControlEntry will be + created, or none of them will be.)" + INDEX { protocolDistControlIndex, protocolDirLocalIndex } + ::= { protocolDistStatsHighCapacityTable 1 } + +ProtocolDistStatsHighCapacityEntry ::= SEQUENCE { + protocolDistStatsHighCapacityOverflowPkts ZeroBasedCounter32, + protocolDistStatsHighCapacityPkts ZeroBasedCounter64, + protocolDistStatsHighCapacityOverflowOctets ZeroBasedCounter32, + protocolDistStatsHighCapacityOctets ZeroBasedCounter64 +} + +protocolDistStatsHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated protocolDistStatsPkts + counter has overflowed." + ::= { protocolDistStatsHighCapacityEntry 1 } + +protocolDistStatsHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + 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." + ::= { protocolDistStatsHighCapacityEntry 2 } + +protocolDistStatsHighCapacityOverflowOctets OBJECT-TYPE + + + + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated protocolDistStatsOctets + counter has overflowed." + ::= { protocolDistStatsHighCapacityEntry 3 } + +protocolDistStatsHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + 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." + ::= { protocolDistStatsHighCapacityEntry 4 } + +-- High Capacity extensions for the nlHostTable. + +nlHostHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlHostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlHostTable." + ::= { nlHost 3 } + +nlHostHighCapacityEntry OBJECT-TYPE + SYNTAX NlHostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlHostEntry. These objects will be created by the agent + for all nlHostEntries associated with whichever + hlHostControlEntries it deems appropriate. (i.e., either all + nlHostHighCapacityEntries associated with a particular + hlHostControlEntry will be created, or none of them will + be.)" + + + + INDEX { hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress } + ::= { nlHostHighCapacityTable 1 } + +NlHostHighCapacityEntry ::= SEQUENCE { + nlHostHighCapacityInOverflowPkts ZeroBasedCounter32, + nlHostHighCapacityInPkts ZeroBasedCounter64, + nlHostHighCapacityOutOverflowPkts ZeroBasedCounter32, + nlHostHighCapacityOutPkts ZeroBasedCounter64, + nlHostHighCapacityInOverflowOctets ZeroBasedCounter32, + nlHostHighCapacityInOctets ZeroBasedCounter64, + nlHostHighCapacityOutOverflowOctets ZeroBasedCounter32, + nlHostHighCapacityOutOctets ZeroBasedCounter64 +} + +nlHostHighCapacityInOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlHostInPkts + counter has overflowed." + ::= { nlHostHighCapacityEntry 1 } + +nlHostHighCapacityInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted to + this address since it was added to the nlHostHighCapacityTable. + 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." + ::= { nlHostHighCapacityEntry 2 } + +nlHostHighCapacityOutOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlHostOutPkts + counter has overflowed." + ::= { nlHostHighCapacityEntry 3 } + + + + +nlHostHighCapacityOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets without errors transmitted by + this address since it was added to the nlHostHighCapacityTable. + 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." + ::= { nlHostHighCapacityEntry 4 } + +nlHostHighCapacityInOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlHostInOctets + counter has overflowed." + ::= { nlHostHighCapacityEntry 5 } + +nlHostHighCapacityInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the nlHostHighCapacityTable + (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." + ::= { nlHostHighCapacityEntry 6 } + +nlHostHighCapacityOutOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlHostOutOctets + counter has overflowed." + + + + ::= { nlHostHighCapacityEntry 7 } + +nlHostHighCapacityOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the nlHostHighCapacityTable + (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." + ::= { nlHostHighCapacityEntry 8 } + +-- High Capacity extensions for the nlMatrixTable + +nlMatrixSDHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixTable." + ::= { nlMatrix 6 } + +nlMatrixSDHighCapacityEntry OBJECT-TYPE + SYNTAX NlMatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixEntry. These objects will be created by the agent + for all nlMatrixSDEntries associated with whichever + hlMatrixControlEntries it deems appropriate. (i.e., either all + nlMatrixSDHighCapacityEntries associated with a particular + hlMatrixControlEntry will be created, or none of them will + be.)" + INDEX { hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, nlMatrixSDDestAddress } + ::= { nlMatrixSDHighCapacityTable 1 } + +NlMatrixSDHighCapacityEntry ::= SEQUENCE { + + + + nlMatrixSDHighCapacityOverflowPkts ZeroBasedCounter32, + nlMatrixSDHighCapacityPkts ZeroBasedCounter64, + nlMatrixSDHighCapacityOverflowOctets ZeroBasedCounter32, + nlMatrixSDHighCapacityOctets ZeroBasedCounter64 +} + +nlMatrixSDHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlMatrixSDPkts + counter has overflowed." + ::= { nlMatrixSDHighCapacityEntry 1 } + +nlMatrixSDHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + 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 nlMatrixSDHighCapacityTable. 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." + ::= { nlMatrixSDHighCapacityEntry 2 } + +nlMatrixSDHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlMatrixSDOctets + counter has overflowed." + ::= { nlMatrixSDHighCapacityEntry 3 } + +nlMatrixSDHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + 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 + + + + nlMatrixSDHighCapacityTable (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." + ::= { nlMatrixSDHighCapacityEntry 4 } + +-- High Capacity extensions for the nlMatrixDSTable + +nlMatrixDSHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixDSTable." + ::= { nlMatrix 7 } + +nlMatrixDSHighCapacityEntry OBJECT-TYPE + SYNTAX NlMatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixDSEntry. These objects will be created by the agent + for all nlMatrixDSEntries associated with whichever + hlmatrixControlEntries it deems appropriate. (i.e., either all + nlMatrixDSHighCapacityEntries associated with a particular + hlMatrixControlEntry will be created, or none of them will + be.)" + INDEX { hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, nlMatrixDSSourceAddress } + ::= { nlMatrixDSHighCapacityTable 1 } + +NlMatrixDSHighCapacityEntry ::= SEQUENCE { + nlMatrixDSHighCapacityOverflowPkts ZeroBasedCounter32, + nlMatrixDSHighCapacityPkts ZeroBasedCounter64, + nlMatrixDSHighCapacityOverflowOctets ZeroBasedCounter32, + nlMatrixDSHighCapacityOctets ZeroBasedCounter64 +} + +nlMatrixDSHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of times the associated nlMatrixDSPkts + counter has overflowed." + ::= { nlMatrixDSHighCapacityEntry 1 } + +nlMatrixDSHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + 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 nlMatrixDSHighCapacityTable. 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." + ::= { nlMatrixDSHighCapacityEntry 2 } + +nlMatrixDSHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated nlMatrixDSOctets + counter has overflowed." + ::= { nlMatrixDSHighCapacityEntry 3 } + +nlMatrixDSHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + 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 + nlMatrixDSHighCapacityTable (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." + ::= { nlMatrixDSHighCapacityEntry 4 } + +-- High Capacity extensions for the nlMatrixTopNTable + + + +nlMatrixTopNHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixTopNTable when nlMatrixTopNControlRateBase specifies + a High Capacity TopN Report." + ::= { nlMatrix 8 } + +nlMatrixTopNHighCapacityEntry OBJECT-TYPE + SYNTAX NlMatrixTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + nlMatrixTopNEntry when nlMatrixTopNControlRateBase specifies + a High Capacity TopN Report. These objects will be created by + the agent for all nlMatrixTopNEntries associated with whichever + nlMatrixTopNControlEntries have a nlMatrixTopNControlRateBase + that specify a high capacity report." + INDEX { nlMatrixTopNControlIndex, nlMatrixTopNIndex } + ::= { nlMatrixTopNHighCapacityTable 1 } + +NlMatrixTopNHighCapacityEntry ::= SEQUENCE { + nlMatrixTopNHighCapacityProtocolDirLocalIndex Integer32, + nlMatrixTopNHighCapacitySourceAddress OCTET STRING, + nlMatrixTopNHighCapacityDestAddress OCTET STRING, + nlMatrixTopNHighCapacityBasePktRate Gauge32, + nlMatrixTopNHighCapacityOverflowPktRate Gauge32, + nlMatrixTopNHighCapacityPktRate CounterBasedGauge64, + nlMatrixTopNHighCapacityReverseBasePktRate Gauge32, + nlMatrixTopNHighCapacityReverseOverflowPktRate Gauge32, + nlMatrixTopNHighCapacityReversePktRate CounterBasedGauge64, + nlMatrixTopNHighCapacityBaseOctetRate Gauge32, + nlMatrixTopNHighCapacityOverflowOctetRate Gauge32, + nlMatrixTopNHighCapacityOctetRate CounterBasedGauge64, + nlMatrixTopNHighCapacityReverseBaseOctetRate Gauge32, + nlMatrixTopNHighCapacityReverseOverflowOctetRate Gauge32, + nlMatrixTopNHighCapacityReverseOctetRate CounterBasedGauge64 +} + +nlMatrixTopNHighCapacityProtocolDirLocalIndex 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." + ::= { nlMatrixTopNHighCapacityEntry 1 } + +nlMatrixTopNHighCapacitySourceAddress 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." + ::= { nlMatrixTopNHighCapacityEntry 2 } + +nlMatrixTopNHighCapacityDestAddress 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." + ::= { nlMatrixTopNHighCapacityEntry 3 } + +nlMatrixTopNHighCapacityBasePktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, + modulo 2^32, counted using the rules for counting the + + + + nlMatrixSDPkts object." + ::= { nlMatrixTopNHighCapacityEntry 4 } + +nlMatrixTopNHighCapacityOverflowPktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the source host + to the destination host during this sampling interval, + divided by 2^32, truncating fractions (i.e., X DIV 2^32), + and counted using the rules for counting the + nlMatrixSDPkts object." + ::= { nlMatrixTopNHighCapacityEntry 5 } + +nlMatrixTopNHighCapacityPktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + 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 + nlMatrixTopNHighCapacityPkts, this variable will be + used to sort this report." + ::= { nlMatrixTopNHighCapacityEntry 6 } + +nlMatrixTopNHighCapacityReverseBasePktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, modulo 2^32, 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 nlMatrixTopNHighCapacityPkts, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityPktRate, and not on + the value of this object." + + + + ::= { nlMatrixTopNHighCapacityEntry 7 } + +nlMatrixTopNHighCapacityReverseOverflowPktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets seen from the destination host to the + source host during this sampling interval, divided by 2^32, + truncating fractions (i.e., X DIV 2^32), and 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 nlMatrixTopNHighCapacityPkts, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityPktRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 8 } + +nlMatrixTopNHighCapacityReversePktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + 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 nlMatrixTopNHighCapacityPkts, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityPktRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 9 } + +nlMatrixTopNHighCapacityBaseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of octets seen from the source host to the + destination host during this sampling interval, modulo 2^32, + counted using the rules for counting the nlMatrixSDOctets + object." + ::= { nlMatrixTopNHighCapacityEntry 10 } + +nlMatrixTopNHighCapacityOverflowOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the source host + to the destination host during this sampling interval, + divided by 2^32, truncating fractions (i.e., X DIV 2^32), + and counted using the rules for counting the + nlMatrixSDOctets object." + ::= { nlMatrixTopNHighCapacityEntry 11 } + +nlMatrixTopNHighCapacityOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + 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 + nlMatrixTopNHighCapacityOctets, this variable will be used + to sort this report." + ::= { nlMatrixTopNHighCapacityEntry 12 } + +nlMatrixTopNHighCapacityReverseBaseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, modulo 2^32, counted + using the rules for counting the nlMatrixSDOctets 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 nlMatrixTopNHighCapacityOctets, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityOctetRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 13 } + +nlMatrixTopNHighCapacityReverseOverflowOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets seen from the destination host to the + source host during this sampling interval, divided by 2^32, + truncating fractions (i.e., X DIV 2^32), and counted + using the rules for counting the nlMatrixSDOctets 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 nlMatrixTopNHighCapacityOctets, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityOctetRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 14 } + +nlMatrixTopNHighCapacityReverseOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + 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 nlMatrixSDOctets 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 nlMatrixTopNHighCapacityOctets, the sort of topN entries is + based entirely on nlMatrixTopNHighCapacityOctetRate, and not on + the value of this object." + ::= { nlMatrixTopNHighCapacityEntry 15 } + +-- High Capacity extensions for the alHostTable + + + +alHostHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlHostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alHostTable." + ::= { alHost 2 } + +alHostHighCapacityEntry OBJECT-TYPE + SYNTAX AlHostHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alHostEntry. These objects will be created by the agent + for all alHostEntries associated with whichever + hlHostControlEntries it deems appropriate. (i.e., either all + alHostHighCapacityEntries associated with a particular + hlHostControlEntry will be created, or none of them will + be.)" + INDEX { hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex } + ::= { alHostHighCapacityTable 1 } + +AlHostHighCapacityEntry ::= SEQUENCE { + alHostHighCapacityInOverflowPkts ZeroBasedCounter32, + alHostHighCapacityInPkts ZeroBasedCounter64, + alHostHighCapacityOutOverflowPkts ZeroBasedCounter32, + alHostHighCapacityOutPkts ZeroBasedCounter64, + alHostHighCapacityInOverflowOctets ZeroBasedCounter32, + alHostHighCapacityInOctets ZeroBasedCounter64, + alHostHighCapacityOutOverflowOctets ZeroBasedCounter32, + alHostHighCapacityOutOctets ZeroBasedCounter64 +} + +alHostHighCapacityInOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alHostInPkts + counter has overflowed." + + ::= { alHostHighCapacityEntry 1 } + + + + +alHostHighCapacityInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + 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 + alHostHighCapacityTable. 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." + ::= { alHostHighCapacityEntry 2 } + +alHostHighCapacityOutOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alHostOutPkts + counter has overflowed." + ::= { alHostHighCapacityEntry 3 } + +alHostHighCapacityOutPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + 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 + alHostHighCapacityTable. 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." + ::= { alHostHighCapacityEntry 4 } + +alHostHighCapacityInOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alHostInOctets + counter has overflowed." + ::= { alHostHighCapacityEntry 5 } + + + + +alHostHighCapacityInOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + 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 + alHostHighCapacityTable (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." + ::= { alHostHighCapacityEntry 6 } + +alHostHighCapacityOutOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alHostOutOctets + counter has overflowed." + ::= { alHostHighCapacityEntry 7 } + +alHostHighCapacityOutOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + 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 + alHostHighCapacityTable (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." + ::= { alHostHighCapacityEntry 8 } + +-- High Capacity extensions for the alMatrixSDTable + +alMatrixSDHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDHighCapacityEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixSDTable." + ::= { alMatrix 5 } + +alMatrixSDHighCapacityEntry OBJECT-TYPE + SYNTAX AlMatrixSDHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixSDEntry. These objects will be created by the agent + for all alMatrixSDEntries associated with whichever + hlMatrixControlEntries it deems appropriate. (i.e., either all + alMatrixSDHighCapacityEntries associated with a particular + hlMatrixControlEntry will be created, or none of them will + be.)" + INDEX { hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, nlMatrixSDDestAddress, + protocolDirLocalIndex } + ::= { alMatrixSDHighCapacityTable 1 } + +AlMatrixSDHighCapacityEntry ::= SEQUENCE { + alMatrixSDHighCapacityOverflowPkts ZeroBasedCounter32, + alMatrixSDHighCapacityPkts ZeroBasedCounter64, + alMatrixSDHighCapacityOverflowOctets ZeroBasedCounter32, + alMatrixSDHighCapacityOctets ZeroBasedCounter64 +} + +alMatrixSDHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alMatrixSDPkts + counter has overflowed." + ::= { alMatrixSDHighCapacityEntry 1 } + +alMatrixSDHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of good packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDHighCapacityTable. + 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." + ::= { alMatrixSDHighCapacityEntry 2 } + +alMatrixSDHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alMatrixSDOctets + counter has overflowed." + ::= { alMatrixSDHighCapacityEntry 3 } + +alMatrixSDHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in good packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixSDHighCapacityTable + (excluding framing bits but including FCS octets). + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alMatrixSDHighCapacityEntry 4 } + +-- High Capacity extensions for the alMatrixDSTable + +alMatrixDSHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixDSTable." + ::= { alMatrix 6 } + +alMatrixDSHighCapacityEntry OBJECT-TYPE + SYNTAX AlMatrixDSHighCapacityEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixSDTable. These objects will be created by the agent + for all alMatrixDSEntries associated with whichever + hlMatrixControlEntries it deems appropriate. (i.e., either all + alMatrixDSHighCapacityEntries associated with a particular + hlMatrixControlEntry will be created, or none of them will + be.)" + INDEX { hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, nlMatrixDSSourceAddress, + protocolDirLocalIndex } + ::= { alMatrixDSHighCapacityTable 1 } + +AlMatrixDSHighCapacityEntry ::= SEQUENCE { + alMatrixDSHighCapacityOverflowPkts ZeroBasedCounter32, + alMatrixDSHighCapacityPkts ZeroBasedCounter64, + alMatrixDSHighCapacityOverflowOctets ZeroBasedCounter32, + alMatrixDSHighCapacityOctets ZeroBasedCounter64 +} + +alMatrixDSHighCapacityOverflowPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alMatrixDSPkts + counter has overflowed." + ::= { alMatrixDSHighCapacityEntry 1 } + +alMatrixDSHighCapacityPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSHighCapacityTable. + 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." + ::= { alMatrixDSHighCapacityEntry 2 } + +alMatrixDSHighCapacityOverflowOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + + + + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated alMatrixDSOctets + counter has overflowed." + ::= { alMatrixDSHighCapacityEntry 3 } + +alMatrixDSHighCapacityOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets in good packets of this protocol type + transmitted from the source address to the destination address + since this entry was added to the alMatrixDSHighCapacityTable + (excluding framing bits but including FCS octets). + + Note this doesn't count just those octets in the particular + protocol frames, but includes the entire packet that contained + the protocol." + ::= { alMatrixDSHighCapacityEntry 4 } + +alMatrixTopNHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixTopNTable when alMatrixTopNControlRateBase specifies + a High Capacity TopN Report." + ::= { alMatrix 7 } + +alMatrixTopNHighCapacityEntry OBJECT-TYPE + SYNTAX AlMatrixTopNHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + alMatrixTopNEntry when alMatrixTopNControlRateBase specifies + a High Capacity TopN Report. These objects will be created by + the agent for all alMatrixTopNEntries associated with whichever + alMatrixTopNControlEntries have a alMatrixTopNControlRateBase + that specify a high capacity report." + INDEX { alMatrixTopNControlIndex, alMatrixTopNIndex } + ::= { alMatrixTopNHighCapacityTable 1 } + + + + +AlMatrixTopNHighCapacityEntry ::= SEQUENCE { + alMatrixTopNHighCapacityProtocolDirLocalIndex Integer32, + alMatrixTopNHighCapacitySourceAddress OCTET STRING, + alMatrixTopNHighCapacityDestAddress OCTET STRING, + alMatrixTopNHighCapacityAppProtocolDirLocalIndex Integer32, + alMatrixTopNHighCapacityBasePktRate Gauge32, + alMatrixTopNHighCapacityOverflowPktRate Gauge32, + alMatrixTopNHighCapacityPktRate CounterBasedGauge64, + alMatrixTopNHighCapacityReverseBasePktRate Gauge32, + alMatrixTopNHighCapacityReverseOverflowPktRate Gauge32, + alMatrixTopNHighCapacityReversePktRate CounterBasedGauge64, + alMatrixTopNHighCapacityBaseOctetRate Gauge32, + alMatrixTopNHighCapacityOverflowOctetRate Gauge32, + alMatrixTopNHighCapacityOctetRate CounterBasedGauge64, + alMatrixTopNHighCapacityReverseBaseOctetRate Gauge32, + alMatrixTopNHighCapacityReverseOverflowOctetRate Gauge32, + alMatrixTopNHighCapacityReverseOctetRate CounterBasedGauge64 +} + +alMatrixTopNHighCapacityProtocolDirLocalIndex 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." + ::= { alMatrixTopNHighCapacityEntry 1 } + +alMatrixTopNHighCapacitySourceAddress 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." + ::= { alMatrixTopNHighCapacityEntry 2 } + +alMatrixTopNHighCapacityDestAddress 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." + ::= { alMatrixTopNHighCapacityEntry 3 } + +alMatrixTopNHighCapacityAppProtocolDirLocalIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the protocol counted by this entry." + ::= { alMatrixTopNHighCapacityEntry 4 } + +alMatrixTopNHighCapacityBasePktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + 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, modulo 2^32, counted using the rules for counting + the alMatrixSDPkts object." + ::= { alMatrixTopNHighCapacityEntry 5 } + +alMatrixTopNHighCapacityOverflowPktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + 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, + divided by 2^32, truncating fractions (i.e., X DIV 2^32), + and counted using the rules for counting the + alMatrixSDPkts object." + ::= { alMatrixTopNHighCapacityEntry 6 } + + + +alMatrixTopNHighCapacityPktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + 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, alMatrixTopNAllPkts, + alMatrixTopNTerminalsHighCapacityPkts, or + alMatrixTopNAllHighCapacityPkts, this variable will be used + to sort this report." + ::= { alMatrixTopNHighCapacityEntry 7 } + +alMatrixTopNHighCapacityReverseBasePktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + 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, modulo 2^32, counted using the rules for counting + the alMatrixSDPkts 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.)" + ::= { alMatrixTopNHighCapacityEntry 8 } + +alMatrixTopNHighCapacityReverseOverflowPktRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Packets" + 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, divided by 2^32, truncating fractions + (i.e., X DIV 2^32), and counted using the rules for + counting the alMatrixSDPkts 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.)" + ::= { alMatrixTopNHighCapacityEntry 9 } + + + +alMatrixTopNHighCapacityReversePktRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Packets" + 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 + alMatrixSDPkts 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.)" + ::= { alMatrixTopNHighCapacityEntry 10 } + +alMatrixTopNHighCapacityBaseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + 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, + modulo 2^32, counted using the rules for counting the + alMatrixSDOctets object." + ::= { alMatrixTopNHighCapacityEntry 11 } + +alMatrixTopNHighCapacityOverflowOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + 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, + divided by 2^32, truncating fractions (i.e., X DIV 2^32), + and counted using the rules for counting the + alMatrixSDOctets object." + ::= { alMatrixTopNHighCapacityEntry 12 } + +alMatrixTopNHighCapacityOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + 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, alMatrixTopNAllOctets, + alMatrixTopNTerminalsHighCapacityOctets, or + alMatrixTopNAllHighCapacityOctets, this variable will be used + to sort this report." + ::= { alMatrixTopNHighCapacityEntry 13 } + +alMatrixTopNHighCapacityReverseBaseOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + 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, modulo 2^32, counted using the rules for counting + the alMatrixSDOctets 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.)" + ::= { alMatrixTopNHighCapacityEntry 14 } + +alMatrixTopNHighCapacityReverseOverflowOctetRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Octets" + 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, divided by 2^32, truncating fractions (i.e., X DIV + 2^32), and counted using the rules for counting the + alMatrixSDOctets 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.)" + ::= { alMatrixTopNHighCapacityEntry 15 } + +alMatrixTopNHighCapacityReverseOctetRate OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "Octets" + 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 + alMatrixSDOctets 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.)" + ::= { alMatrixTopNHighCapacityEntry 16 } + +usrHistoryHighCapacityTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + usrHistoryTable." + ::= { usrHistory 4 } + +usrHistoryHighCapacityEntry OBJECT-TYPE + SYNTAX UsrHistoryHighCapacityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the High Capacity RMON extensions to the RMON-2 + usrHistoryEntry. These objects will be created by the agent + for all usrHistoryEntries associated with whichever + usrHistoryControlEntries it deems appropriate. (i.e., either all + usrHistoryHighCapacityEntries associated with a particular + usrHistoryControlEntry will be created, or none of them will + be.)" + INDEX { usrHistoryControlIndex, usrHistorySampleIndex, + usrHistoryObjectIndex } + ::= { usrHistoryHighCapacityTable 1 } + +UsrHistoryHighCapacityEntry ::= SEQUENCE { + usrHistoryHighCapacityOverflowAbsValue Gauge32, + usrHistoryHighCapacityAbsValue CounterBasedGauge64 +} + +usrHistoryHighCapacityOverflowAbsValue 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, + divided by 2^32, truncating fractions (i.e., X DIV 2^32). + 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 should 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)'." + ::= { usrHistoryHighCapacityEntry 1 } + +usrHistoryHighCapacityAbsValue OBJECT-TYPE + SYNTAX CounterBasedGauge64 + 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 should be checked, + and usrHistoryHighCapacityAbsValue 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)'." + ::= { usrHistoryHighCapacityEntry 2 } + +-- +-- High Capacity RMON Probe Capabilities +-- +hcRMONCapabilities OBJECT-TYPE + SYNTAX BITS { + mediaIndependentGroup(0), + etherStatsHighCapacityGroup(1), + etherHistoryHighCapacityGroup(2), + hostHighCapacityGroup(3), + hostTopNHighCapacityGroup(4), + matrixHighCapacityGroup(5), + captureBufferHighCapacityGroup(6), + protocolDistributionHighCapacityGroup(7), + nlHostHighCapacityGroup(8), + nlMatrixHighCapacityGroup(9), + nlMatrixTopNHighCapacityGroup(10), + alHostHighCapacityGroup(11), + alMatrixHighCapacityGroup(12), + + + + alMatrixTopNHighCapacityGroup(13), + usrHistoryHighCapacityGroup(14) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the High Capacity RMON MIB groups supported + on at least one interface by this probe." + ::= { probeConfig 16 } + +-- Conformance Macros + +hcRmonMIBCompliances OBJECT IDENTIFIER ::= { rmonConformance 6 } +hcRmonMIBGroups OBJECT IDENTIFIER ::= { rmonConformance 7 } + +hcMediaIndependentCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + High Capacity Media Independent Group." + MODULE -- this module + MANDATORY-GROUPS { mediaIndependentGroup, hcRMONInformationGroup } + ::= { hcRmonMIBCompliances 1 } + +hcRmon1MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the High + Capacity RMON-1 MIB" + MODULE -- this module + GROUP etherStatsHighCapacityGroup + DESCRIPTION + "The etherStatsHighCapacityGroup is optional but requires + implementation of the rmonEtherStatsGroup." + + GROUP etherHistoryHighCapacityGroup + DESCRIPTION + "The etherHistoryHighCapacityGroup is optional but + requires implementation of the rmonHistoryControlGroup and + rmonEthernetHistoryGroup." + + GROUP hostHighCapacityGroup + DESCRIPTION + "The hostHighCapacityGroup is mandatory when the + hostTopNHighCapacityGroup is implemented. This group also + requires implementation of the rmonHostGroup." + + GROUP hostTopNHighCapacityGroup + + + + DESCRIPTION + "The hostTopNHighCapacityGroup is optional but requires + implementation of the rmonHostTopNGroup." + + GROUP matrixHighCapacityGroup + DESCRIPTION + "The matrixHighCapacityGroup is optional but requires + implementation of the rmonMatrixGroup." + + GROUP captureBufferHighCapacityGroup + DESCRIPTION + "The captureBufferHighCapacityGroup is optional but + requires implementation of the rmonFilterGroup and + rmonPacketCaptureGroup." + + MODULE RMON-MIB + GROUP rmonEtherStatsGroup + DESCRIPTION + "The RMON Ethernet Statistics Group is mandatory if the + etherStatsHighCapacityGroup is implemented." + + GROUP rmonHistoryControlGroup + DESCRIPTION + "The RMON History Control Group is mandatory if the + etherHistoryHighCapacityGroup is implemented." + + GROUP rmonEthernetHistoryGroup + DESCRIPTION + "The RMON Ethernet History Group is mandatory if the + etherHistoryHighCapacityGroup is implemented." + + GROUP rmonHostGroup + DESCRIPTION + "The RMON Host Group is mandatory if the + hostHighCapacityGroup is implemented." + + GROUP rmonHostTopNGroup + DESCRIPTION + "The RMON Host Top N Group is mandatory if the + hostTopNHighCapacityGroup is implemented." + + GROUP rmonMatrixGroup + DESCRIPTION + "The RMON Matrix Group is mandatory if the + matrixHighCapacityGroup is implemented." + + GROUP rmonFilterGroup + DESCRIPTION + + + + "The RMON Filter Group is mandatory when the + captureBufferHighCapacityGroup is implemented." + + GROUP rmonPacketCaptureGroup + DESCRIPTION + "The RMON Packet Capture Group is mandatory when the + captureBufferHighCapacityGroup is implemented." + ::= { hcRmonMIBCompliances 2 } + +hcRmon2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the High Capacity RMON-2 MIB" + MODULE -- this module + MANDATORY-GROUPS { protocolDistributionHighCapacityGroup, + nlHostHighCapacityGroup, + nlMatrixHighCapacityGroup, + nlMatrixTopNHighCapacityGroup, + usrHistoryHighCapacityGroup, + hcRMONInformationGroup } + MODULE RMON2-MIB + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, + addressMapGroup, + nlHostGroup, + nlMatrixGroup, + usrHistoryGroup, + probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems which + implement RMON [RFC2819]" + ::= { hcRmonMIBCompliances 3 } + +hcRmon2MIBApplicationLayerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the High Capacity RMON-2 MIB with Application Layer + Enhancements." + + MODULE -- this module + MANDATORY-GROUPS { protocolDistributionHighCapacityGroup, + + nlHostHighCapacityGroup, + nlMatrixHighCapacityGroup, + + + + nlMatrixTopNHighCapacityGroup, + alHostHighCapacityGroup, + alMatrixHighCapacityGroup, + alMatrixTopNHighCapacityGroup, + usrHistoryHighCapacityGroup, + hcRMONInformationGroup } + MODULE RMON2-MIB + MANDATORY-GROUPS { protocolDirectoryGroup, + protocolDistributionGroup, + addressMapGroup, + nlHostGroup, + nlMatrixGroup, + alHostGroup, + alMatrixGroup, + usrHistoryGroup, + probeInformationGroup } + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems which + implement RMON [RFC2819]" + ::= { hcRmonMIBCompliances 4 } + +mediaIndependentGroup OBJECT-GROUP + OBJECTS {mediaIndependentDataSource, + mediaIndependentDropEvents, + mediaIndependentDroppedFrames, + mediaIndependentInPkts, + mediaIndependentInOverflowPkts, + mediaIndependentInHighCapacityPkts, + mediaIndependentOutPkts, + mediaIndependentOutOverflowPkts, + mediaIndependentOutHighCapacityPkts, + mediaIndependentInOctets, + mediaIndependentInOverflowOctets, + mediaIndependentInHighCapacityOctets, + mediaIndependentOutOctets, + mediaIndependentOutOverflowOctets, + mediaIndependentOutHighCapacityOctets, + mediaIndependentInNUCastPkts, + mediaIndependentInNUCastOverflowPkts, + mediaIndependentInNUCastHighCapacityPkts, + mediaIndependentOutNUCastPkts, + mediaIndependentOutNUCastOverflowPkts, + mediaIndependentOutNUCastHighCapacityPkts, + mediaIndependentInErrors, + mediaIndependentOutErrors, + mediaIndependentInputSpeed, + + + + mediaIndependentOutputSpeed, + mediaIndependentDuplexMode, + mediaIndependentDuplexChanges, + mediaIndependentDuplexLastChange, + mediaIndependentOwner, + mediaIndependentStatus } + STATUS current + DESCRIPTION + "Collects utilization statistics for any type of network." + ::= { hcRmonMIBGroups 1 } + +etherStatsHighCapacityGroup OBJECT-GROUP + OBJECTS { etherStatsHighCapacityOverflowPkts, + etherStatsHighCapacityPkts, + etherStatsHighCapacityOverflowOctets, + etherStatsHighCapacityOctets, + etherStatsHighCapacityOverflowPkts64Octets, + etherStatsHighCapacityPkts64Octets, + etherStatsHighCapacityOverflowPkts65to127Octets, + etherStatsHighCapacityPkts65to127Octets, + etherStatsHighCapacityOverflowPkts128to255Octets, + etherStatsHighCapacityPkts128to255Octets, + etherStatsHighCapacityOverflowPkts256to511Octets, + etherStatsHighCapacityPkts256to511Octets, + etherStatsHighCapacityOverflowPkts512to1023Octets, + etherStatsHighCapacityPkts512to1023Octets, + etherStatsHighCapacityOverflowPkts1024to1518Octets, + etherStatsHighCapacityPkts1024to1518Octets } + STATUS current + DESCRIPTION + "Collects utilization statistics for ethernet networks." + ::= { hcRmonMIBGroups 2 } + +etherHistoryHighCapacityGroup OBJECT-GROUP + OBJECTS { etherHistoryHighCapacityOverflowPkts, + etherHistoryHighCapacityPkts, + etherHistoryHighCapacityOverflowOctets, + etherHistoryHighCapacityOctets } + STATUS current + DESCRIPTION + "Collects utilization statistics for ethernet networks." + ::= { hcRmonMIBGroups 3 } + +hostHighCapacityGroup OBJECT-GROUP + OBJECTS { hostHighCapacityInOverflowPkts, + hostHighCapacityInPkts, + hostHighCapacityOutOverflowPkts, + hostHighCapacityOutPkts, + + + + hostHighCapacityInOverflowOctets, + hostHighCapacityInOctets, + hostHighCapacityOutOverflowOctets, + hostHighCapacityOutOctets, + hostTimeHighCapacityInOverflowPkts, + hostTimeHighCapacityInPkts, + hostTimeHighCapacityOutOverflowPkts, + hostTimeHighCapacityOutPkts, + hostTimeHighCapacityInOverflowOctets, + hostTimeHighCapacityInOctets, + hostTimeHighCapacityOutOverflowOctets, + hostTimeHighCapacityOutOctets } + STATUS current + DESCRIPTION + "Collects utilization and error statistics per host." + ::= { hcRmonMIBGroups 4 } + +hostTopNHighCapacityGroup OBJECT-GROUP + OBJECTS { hostTopNHighCapacityAddress, + hostTopNHighCapacityBaseRate, + hostTopNHighCapacityOverflowRate, + hostTopNHighCapacityRate } + STATUS current + DESCRIPTION + "Prepares sorted reports of utilization and error statistics + per host." + ::= { hcRmonMIBGroups 5 } + + +matrixHighCapacityGroup OBJECT-GROUP + OBJECTS { matrixSDHighCapacityOverflowPkts, + matrixSDHighCapacityPkts, + matrixSDHighCapacityOverflowOctets, + matrixSDHighCapacityOctets, + matrixDSHighCapacityOverflowPkts, + matrixDSHighCapacityPkts, + matrixDSHighCapacityOverflowOctets, + matrixDSHighCapacityOctets } + STATUS current + DESCRIPTION + "Collects utilization statistics per conversation." + ::= { hcRmonMIBGroups 6 } + +captureBufferHighCapacityGroup OBJECT-GROUP + OBJECTS { captureBufferPacketHighCapacityTime } + STATUS current + DESCRIPTION + "Provides finer granularity time stamps." + + + + ::= { hcRmonMIBGroups 7 } + +protocolDistributionHighCapacityGroup OBJECT-GROUP + OBJECTS { protocolDistStatsHighCapacityOverflowPkts, + protocolDistStatsHighCapacityPkts, + protocolDistStatsHighCapacityOverflowOctets, + protocolDistStatsHighCapacityOctets } + STATUS current + DESCRIPTION + "Collects the relative amounts of octets and packets for the + different protocols detected on a network segment." + ::= { hcRmonMIBGroups 8 } + +nlHostHighCapacityGroup OBJECT-GROUP + OBJECTS { nlHostHighCapacityInOverflowPkts, + nlHostHighCapacityInPkts, + nlHostHighCapacityOutOverflowPkts, + nlHostHighCapacityOutPkts, + nlHostHighCapacityInOverflowOctets, + nlHostHighCapacityInOctets, + nlHostHighCapacityOutOverflowOctets, + nlHostHighCapacityOutOctets } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent from and to each network + address discovered by the probe." + ::= { hcRmonMIBGroups 9 } + +nlMatrixHighCapacityGroup OBJECT-GROUP + OBJECTS { nlMatrixSDHighCapacityOverflowPkts, + nlMatrixSDHighCapacityPkts, + nlMatrixSDHighCapacityOverflowOctets, + nlMatrixSDHighCapacityOctets, + nlMatrixDSHighCapacityOverflowPkts, + nlMatrixDSHighCapacityPkts, + nlMatrixDSHighCapacityOverflowOctets, + nlMatrixDSHighCapacityOctets } + STATUS current + DESCRIPTION + "Counts the amount of traffic sent between each pair of + network addresses discovered by the probe." + ::= { hcRmonMIBGroups 10 } + +nlMatrixTopNHighCapacityGroup OBJECT-GROUP + OBJECTS { nlMatrixTopNHighCapacityProtocolDirLocalIndex, + nlMatrixTopNHighCapacitySourceAddress, + nlMatrixTopNHighCapacityDestAddress, + nlMatrixTopNHighCapacityBasePktRate, + + + + nlMatrixTopNHighCapacityOverflowPktRate, + nlMatrixTopNHighCapacityPktRate, + nlMatrixTopNHighCapacityReverseBasePktRate, + nlMatrixTopNHighCapacityReverseOverflowPktRate, + nlMatrixTopNHighCapacityReversePktRate, + nlMatrixTopNHighCapacityBaseOctetRate, + nlMatrixTopNHighCapacityOverflowOctetRate, + nlMatrixTopNHighCapacityOctetRate, + nlMatrixTopNHighCapacityReverseBaseOctetRate, + nlMatrixTopNHighCapacityReverseOverflowOctetRate, + nlMatrixTopNHighCapacityReverseOctetRate } + STATUS current + DESCRIPTION + "Prepares sorted reports of the amount of traffic sent between + each pair of network addresses discovered by the probe." + ::= { hcRmonMIBGroups 11 } + +alHostHighCapacityGroup OBJECT-GROUP + OBJECTS { alHostHighCapacityInOverflowPkts, + alHostHighCapacityInPkts, + alHostHighCapacityOutOverflowPkts, + alHostHighCapacityOutPkts, + alHostHighCapacityInOverflowOctets, + alHostHighCapacityInOctets, + alHostHighCapacityOutOverflowOctets, + alHostHighCapacityOutOctets } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent from and to + each network address discovered by the probe." + ::= { hcRmonMIBGroups 12 } + +alMatrixHighCapacityGroup OBJECT-GROUP + OBJECTS { alMatrixSDHighCapacityOverflowPkts, + alMatrixSDHighCapacityPkts, + alMatrixSDHighCapacityOverflowOctets, + alMatrixSDHighCapacityOctets, + alMatrixDSHighCapacityOverflowPkts, + alMatrixDSHighCapacityPkts, + alMatrixDSHighCapacityOverflowOctets, + alMatrixDSHighCapacityOctets } + STATUS current + DESCRIPTION + "Counts the amount of traffic, by protocol, sent between each + pair of network addresses discovered by the + probe." + ::= { hcRmonMIBGroups 13 } + + + + +alMatrixTopNHighCapacityGroup OBJECT-GROUP + OBJECTS { alMatrixTopNHighCapacityProtocolDirLocalIndex, + alMatrixTopNHighCapacitySourceAddress, + alMatrixTopNHighCapacityDestAddress, + alMatrixTopNHighCapacityAppProtocolDirLocalIndex, + alMatrixTopNHighCapacityBasePktRate, + alMatrixTopNHighCapacityOverflowPktRate, + alMatrixTopNHighCapacityPktRate, + alMatrixTopNHighCapacityReverseBasePktRate, + alMatrixTopNHighCapacityReverseOverflowPktRate, + alMatrixTopNHighCapacityReversePktRate, + alMatrixTopNHighCapacityBaseOctetRate, + alMatrixTopNHighCapacityOverflowOctetRate, + alMatrixTopNHighCapacityOctetRate, + alMatrixTopNHighCapacityReverseBaseOctetRate, + alMatrixTopNHighCapacityReverseOverflowOctetRate, + alMatrixTopNHighCapacityReverseOctetRate } + STATUS current + DESCRIPTION + "Prepares sorted reports of the amount of traffic per protocol + sent between each pair of network addresses discovered by the + probe." + ::= { hcRmonMIBGroups 14 } + +usrHistoryHighCapacityGroup OBJECT-GROUP + OBJECTS { usrHistoryHighCapacityOverflowAbsValue, + usrHistoryHighCapacityAbsValue } + STATUS current + DESCRIPTION + "Provides user-defined collection of historical information + from MIB objects on the probe with scalability to statistics + from high-capacity networks." + ::= { hcRmonMIBGroups 15 } + +hcRMONInformationGroup OBJECT-GROUP + OBJECTS { hcRMONCapabilities } + STATUS current + DESCRIPTION + "An indication of the high capacity RMON groups supported on + at least one interface by this probe." + ::= { hcRmonMIBGroups 16 } +END diff --git a/mibs/ietf/HCNUM-TC b/mibs/ietf/HCNUM-TC new file mode 100644 index 0000000..cc947b5 --- /dev/null +++ b/mibs/ietf/HCNUM-TC @@ -0,0 +1,122 @@ +HCNUM-TC DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2, Counter64 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +hcnumTC MODULE-IDENTITY + LAST-UPDATED "200006080000Z" + + + ORGANIZATION "IETF OPS Area" + CONTACT-INFO + " E-mail: mibs@ops.ietf.org + Subscribe: majordomo@psg.com + with msg body: subscribe mibs + + Andy Bierman + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + +1 408-527-3711 + abierman@cisco.com + + Keith McCloghrie + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + +1 408-526-5260 + kzm@cisco.com + + Randy Presuhn + BMC Software, Inc. + Office 1-3141 + 2141 North First Street + San Jose, California 95131 USA + +1 408 546-1006 + rpresuhn@bmc.com" + DESCRIPTION + "A MIB module containing textual conventions + for high capacity data types. This module + addresses an immediate need for data types not directly + supported in the SMIv2. This short-term solution + is meant to be deprecated as a long-term solution + is deployed." + REVISION "200006080000Z" + DESCRIPTION + "Initial Version of the High Capacity Numbers + MIB module, published as RFC 2856." + ::= { mib-2 78 } + +CounterBasedGauge64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The CounterBasedGauge64 type represents a non-negative + integer, which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum value. The + maximum value can not be greater than 2^64-1 + (18446744073709551615 decimal), and the minimum value can + + + not be smaller than 0. The value of a CounterBasedGauge64 + has its maximum value whenever the information being modeled + is greater than or equal to its maximum value, and has its + minimum value whenever the information being modeled is + smaller than or equal to its minimum value. If the + information being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + CounterBasedGauge64 also decreases (increases). + + Note that this TC is not strictly supported in SMIv2, + because the 'always increasing' and 'counter wrap' semantics + associated with the Counter64 base type are not preserved. + It is possible that management applications which rely + solely upon the (Counter64) ASN.1 tag to determine object + semantics will mistakenly operate upon objects of this type + as they would for Counter64 objects. + + This textual convention represents a limited and short-term + solution, and may be deprecated as a long term solution is + defined and deployed to replace it." + SYNTAX Counter64 + + +ZeroBasedCounter64 ::= 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^64 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. + + Note that this textual convention does not retain all the + semantics of the Counter64 base type. Specifically, a + Counter64 has an arbitrary initial value, but objects + defined with this TC are required to start at the value + + + zero. This behavior is not likely to have any adverse + effects on management applications which are expecting + Counter64 semantics. + + This textual convention represents a limited and short-term + solution, and may be deprecated as a long term solution is + defined and deployed to replace it." + SYNTAX Counter64 + +END diff --git a/mibs/ietf/HDSL2-SHDSL-LINE-MIB b/mibs/ietf/HDSL2-SHDSL-LINE-MIB new file mode 100644 index 0000000..0d2bdb0 --- /dev/null +++ b/mibs/ietf/HDSL2-SHDSL-LINE-MIB @@ -0,0 +1,2648 @@ +HDSL2-SHDSL-LINE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Counter32, + Unsigned32, + Gauge32, + NOTIFICATION-TYPE, + Integer32, + transmission + FROM SNMPv2-SMI + RowStatus, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + ifIndex + FROM IF-MIB + PerfCurrentCount, + PerfIntervalCount + FROM PerfHist-TC-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +hdsl2ShdslMIB MODULE-IDENTITY + LAST-UPDATED "200512070000Z" -- December 7, 2005 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + WG-URL: + http://www.ietf.org/html.charters/adslmib-charter.html + Info: https://www1.ietf.org/mailman/listinfo/adslmib + Chair: Mike Sneed + Sand Channel Systems + Postal: 1210-203 Westview Ln + Raleigh NC 27605 USA + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair Bob Ray + PESA Switching Systems, Inc. + + + + Postal 330-A Wynn Drive + Huntsville, AL 35805 USA + Phone +1 256 726 9200 ext. 142 + + Co-editor: Clay Sikes + Zhone Technologies, Inc. + Postal: 8545 126th Ave. N. + Largo, FL 33772 USA + Email: csikes@zhone.com + Phone: +1 727 530 8257 + + Co-editor: Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + Co-editor: Rajesh Abbi + Alcatel USA + Postal: 2301 Sugar Bush Road + Raleigh, NC 27612-3339 USA + + Email: Rajesh.Abbi@alcatel.com + Phone: +1 919 850 6194" + +DESCRIPTION + "This MIB module defines a collection of objects for managing + HDSL2/SHDSL lines. An agent may reside at either end of the + line; however, the MIB module is designed to require no + management communication between the modems beyond that + inherent in the low-level EOC line protocol as defined in + ANSI T1E1.4/2000-006 (for HDSL2 lines) or in ITU G.991.2 + (for SHDSL lines). + + Copyright (C) The Internet Society (2005). This version of + this MIB module is part of RFC 4319; see the RFC itself for + full legal notices." + +REVISION "200512070000Z" -- December 7, 2005 +DESCRIPTION "This version, published as RFC 4319. + The following changes have been made in this version: + 1. Added a 3rd and 4th wire pair. + 2. Modified all rates such that their rates are only + constrained by an unsigned 32-bit value and not by + what today's perceived technology limitations are. + + + + + + 3. Clarified that the rates from RFC 3276 include + payload and any applicable framing and added + objects for payload-only rates. + 4. Added an object to indicate whether the + tip and ring are reversed on a wire pair. + 5. Added an object to display the activation state + of a wire pair. + 6. Added references as necessary for clarification. + 7. Added display hints to textual conventions as + necessary. + 8. Updated conformance statements as necessary. + 9. Some changes were due to IETF requirements and + RFC generation tools." + +REVISION "200205090000Z" -- May 9, 2002 +DESCRIPTION "Initial version, published as RFC 3276." + +::= { transmission 48 } + +hdsl2ShdslMibObjects OBJECT IDENTIFIER ::= { hdsl2ShdslMIB 1 } + +-- Textual Conventions used in this MIB module +-- + +Hdsl2ShdslPerfCurrDayCount ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A gauge associated with interface performance measurements in + a current 1-day (24 hour) measurement interval. + + The value of this gauge starts at zero at the beginning of an + interval and is increased when associated events occur, until + the end of the 1-day interval. At that time, the value of the + gauge is stored in the previous 1-day history interval, as + defined in a companion object of type + Hdsl2Shdsl1DayIntevalCount, and the current interval gauge + is restarted at zero. + + In the case where the agent has no valid data available for + this interval, the corresponding object instance is not + available, and upon a retrieval request, a corresponding error + message shall be returned to indicate that this instance does + not exist. Please note that zero is a valid value." + SYNTAX Gauge32 + +Hdsl2Shdsl1DayIntervalCount ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "A counter associated with interface performance measurements + during the most previous 1-day (24 hour) measurement interval. + The value of this gauge is equal to the value of the current + day gauge, as defined in a companion object of type + Hdsl2ShdslPerfCurrDayCount, at the end of its most recent + interval. + + In the case where the agent has no valid data available for + this interval, the corresponding object instance is not + available, and upon a retrieval request, a corresponding error + message shall be returned to indicate that this instance does + not exist." + SYNTAX Gauge32 + +Hdsl2ShdslPerfTimeElapsed ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The number of seconds that have elapsed since the beginning of + the current measurement period. If, for some reason, such as + an adjustment in the system's time-of-day clock or the addition + of a leap second, the current interval exceeds the maximum + value, the agent will return the maximum value. + + For 15-minute intervals, the range is limited to (0..899). + For 24-hour intervals, the range is limited to (0..86399)." + SYNTAX Unsigned32(0..86399) + +Hdsl2ShdslPerfIntervalThreshold ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This convention defines a range of values that may be set in + a fault threshold alarm control. As the number of seconds in + a 15-minute interval numbers at most 900, objects of this type + may have a range of 0...900, where the value of 0 disables the + alarm." + SYNTAX Unsigned32(0..900) + +Hdsl2ShdslUnitId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is the unique identification for all units in an + HDSL2/SHDSL span. It is based on the EOC unit addressing + scheme with reference to the xtuC." + SYNTAX INTEGER + + + + { + xtuC(1), + xtuR(2), + xru1(3), + xru2(4), + xru3(5), + xru4(6), + xru5(7), + xru6(8), + xru7(9), + xru8(10) + } + +Hdsl2ShdslUnitSide ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is the referenced side of an HDSL2/SHDSL unit - Network + or Customer side. The side facing the Network is the Network + side, while the side facing the Customer is the Customer side." + SYNTAX INTEGER + { + networkSide(1), + customerSide(2) + } + +Hdsl2ShdslWirePair ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is the referenced pair of wires in an HDSL2/SHDSL segment. + HDSL2 only supports a single pair (wirePair1 or two wire), + SHDSL lines support an optional second pair (wirePair2 or four + wire), and G.shdsl.bis support an optional third pair + (wirePair3 or six wire) and an optional fourth pair + (wirePair4 or eight wire)." + SYNTAX INTEGER + { + wirePair1(1), -- two wire + wirePair2(2), -- four wire + wirePair3(3), -- six wire + wirePair4(4) -- eight wire + } + +Hdsl2ShdslTransmissionModeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Contains the regional setting of the HDSL2/SHDSL span, + represented as a bit-map of possible settings. The various + bit positions are as follows: + + + + Bit Meaning Description + 1 region 1 Indicates ITU-T G.991.2 Annex A. + 2 region 2 Indicates ITU-T G.991.2 Annex B." + SYNTAX BITS + { + region1(0), + region2(1) + } + +Hdsl2ShdslClockReferenceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The various STU-C symbol clock references for the + HDSL2/SHDSL span, represented as an enumeration." + SYNTAX INTEGER + { + localClk(1), -- Mode-1 per G991.2 + networkClk(2), -- Mode-2 per G991.2 + dataOrNetworkClk(3), -- Mode-3a per G991.2 + dataClk(4) -- Mode-3b per G991.2 + } + +-- Span Configuration Group +-- + +hdsl2ShdslSpanConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslSpanConfEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "This table supports overall configuration of HDSL2/SHDSL + spans. Entries in this table MUST be maintained in a + persistent manner." + ::= { hdsl2ShdslMibObjects 1 } + +hdsl2ShdslSpanConfEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslSpanConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslSpanConfTable. Each entry + represents the complete span in a single HDSL2/SHDSL line. + It is indexed by the ifIndex of the associated HDSL2/SHDSL + line." + INDEX { ifIndex } + ::= { hdsl2ShdslSpanConfTable 1 } + + + + +Hdsl2ShdslSpanConfEntry ::= + SEQUENCE + { + hdsl2ShdslSpanConfNumRepeaters Unsigned32, + hdsl2ShdslSpanConfProfile SnmpAdminString, + hdsl2ShdslSpanConfAlarmProfile SnmpAdminString + } + + hdsl2ShdslSpanConfNumRepeaters OBJECT-TYPE + SYNTAX Unsigned32(0..8) + UNITS "repeaters" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provisions the number of repeaters/regenerators + in this HDSL2/SHDSL span." + ::= { hdsl2ShdslSpanConfEntry 1 } + +hdsl2ShdslSpanConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is a pointer to a span configuration profile in + the hdsl2ShdslSpanConfProfileTable, which applies to this + span. The value of this object is the index of the referenced + profile in the hdsl2ShdslSpanConfProfileTable. Note that span + configuration profiles are only applicable to SHDSL lines. + + HDSL2 lines MUST reference the default profile, 'DEFVAL'. + By default, this object will have the value 'DEFVAL' + (the index of the default profile). + + Any attempt to set this object to a value that is not the value + of the index for an active entry in the profile table, + hdsl2ShdslSpanConfProfileTable, MUST be rejected." + ::= { hdsl2ShdslSpanConfEntry 2 } + +hdsl2ShdslSpanConfAlarmProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is a pointer to an alarm configuration profile in + the hdsl2ShdslEndpointAlarmConfProfileTable. The value of + this object is the index of the referenced profile in the + hdsl2ShdslEndpointAlarmConfProfileTable. The alarm + threshold configuration in the referenced profile will be + + + + used by default for all segment endpoints in this span. + Individual endpoints may override this profile by explicitly + specifying some other profile in the + hdsl2ShdslEndpointConfTable. By default, this object will + have the value 'DEFVAL' (the index of the default + profile). + + Any attempt to set this object to a value that is not the value + of the index for an active entry in the profile table, + hdsl2ShdslEndpointAlarmConfProfileTable, MUST be rejected." + ::= { hdsl2ShdslSpanConfEntry 3 } + +-- Span Status Group +-- + +hdsl2ShdslSpanStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslSpanStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides overall status information of + HDSL2/SHDSL spans. This table contains live data from + equipment. As such, it is NOT persistent." + ::= { hdsl2ShdslMibObjects 2 } + +hdsl2ShdslSpanStatusEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslSpanStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslSpanStatusTable. Each entry + represents the complete span in a single HDSL2/SHDSL line. + It is indexed by the ifIndex of the associated HDSL2/SHDSL + line." + INDEX { ifIndex } + ::= { hdsl2ShdslSpanStatusTable 1 } + +Hdsl2ShdslSpanStatusEntry ::= + SEQUENCE + { + hdsl2ShdslStatusNumAvailRepeaters Unsigned32, + hdsl2ShdslStatusMaxAttainableLineRate Unsigned32, + hdsl2ShdslStatusActualLineRate Unsigned32, + hdsl2ShdslStatusTransmissionModeCurrent + Hdsl2ShdslTransmissionModeType, + hdsl2ShdslStatusMaxAttainablePayloadRate Unsigned32, + hdsl2ShdslStatusActualPayloadRate Unsigned32 + } + + + +hdsl2ShdslStatusNumAvailRepeaters OBJECT-TYPE + SYNTAX Unsigned32(0..8) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the actual number of repeaters/regenerators + discovered in this HDSL2/SHDSL span." + ::= { hdsl2ShdslSpanStatusEntry 1 } + +hdsl2ShdslStatusMaxAttainableLineRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the maximum attainable line rate in this HDSL2/SHDSL + span. This object provides the maximum rate the line is + capable of achieving. This is based upon measurements made + during line probing. This rate includes payload (user data) + and any applicable framing overhead." + ::= { hdsl2ShdslSpanStatusEntry 2 } + +hdsl2ShdslStatusActualLineRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the actual line rate in this HDSL2/SHDSL span. This + SHOULD equal ifSpeed. This rate includes payload (user data) + and any applicable framing overhead" + ::= { hdsl2ShdslSpanStatusEntry 3 } + +hdsl2ShdslStatusTransmissionModeCurrent OBJECT-TYPE + SYNTAX Hdsl2ShdslTransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the current Power Spectral Density (PSD) regional + setting of the HDSL2/SHDSL span." + ::= { hdsl2ShdslSpanStatusEntry 4 } + +hdsl2ShdslStatusMaxAttainablePayloadRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Contains the maximum attainable payload (user data) + line rate in this HDSL2/SHDSL span. This object provides + the maximum rate the line is capable of achieving. This + is based upon measurements made during line probing. Any + framing overhead is not included." + ::= { hdsl2ShdslSpanStatusEntry 5 } + +hdsl2ShdslStatusActualPayloadRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the actual line rate in this HDSL2/SHDSL span. Any + framing overhead is not included." + ::= { hdsl2ShdslSpanStatusEntry 6 } + +-- Unit Inventory Group +-- + +hdsl2ShdslInventoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports retrieval of unit inventory information + available via the EOC from units in an HDSL2/SHDSL line. + + Entries in this table are dynamically created during the + line discovery process. The life cycle for these entries + is as follows: + + - xtu discovers a device, either a far-end xtu or an xru + - an inventory table entry is created for the device + - the line goes down for whatever reason + - inventory table entries for unreachable devices are + destroyed + + As these entries are created/destroyed dynamically, they + are NOT persistent." + ::= { hdsl2ShdslMibObjects 3 } + +hdsl2ShdslInventoryEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslInventoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslInventoryTable. Each entry + + + + represents inventory information for a single unit in an + HDSL2/SHDSL line. It is indexed by the ifIndex of the + HDSL2/SHDSL line and the Hdsl2ShdslUnitId of the + associated unit." + INDEX { ifIndex, hdsl2ShdslInvIndex } + ::= { hdsl2ShdslInventoryTable 1 } + +Hdsl2ShdslInventoryEntry ::= + SEQUENCE + { + hdsl2ShdslInvIndex Hdsl2ShdslUnitId, + hdsl2ShdslInvVendorID OCTET STRING, + hdsl2ShdslInvVendorModelNumber OCTET STRING, + hdsl2ShdslInvVendorSerialNumber OCTET STRING, + hdsl2ShdslInvVendorEOCSoftwareVersion Integer32, + hdsl2ShdslInvStandardVersion Integer32, + hdsl2ShdslInvVendorListNumber OCTET STRING, + hdsl2ShdslInvVendorIssueNumber OCTET STRING, + hdsl2ShdslInvVendorSoftwareVersion OCTET STRING, + hdsl2ShdslInvEquipmentCode OCTET STRING, + hdsl2ShdslInvVendorOther OCTET STRING, + hdsl2ShdslInvTransmissionModeCapability + Hdsl2ShdslTransmissionModeType + } + +hdsl2ShdslInvIndex OBJECT-TYPE + SYNTAX Hdsl2ShdslUnitId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table corresponds to a physical element + in an HDSL2/SHDSL span. It is based on the EOC unit addressing + scheme with reference to the xtuC." + ::= { hdsl2ShdslInventoryEntry 1 } + +hdsl2ShdslInvVendorID OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor ID as reported in an Inventory Response message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 25-32." + ::= { hdsl2ShdslInventoryEntry 2 } + +hdsl2ShdslInvVendorModelNumber OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(12)) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor model number as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 33-44." + ::= { hdsl2ShdslInventoryEntry 3 } + +hdsl2ShdslInvVendorSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(12)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor serial number as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 45-56." + ::= { hdsl2ShdslInventoryEntry 4 } + +hdsl2ShdslInvVendorEOCSoftwareVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor EOC version as reported in a Discovery Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.2, Discovery response - Message ID + 129, Octet 12." + ::= { hdsl2ShdslInventoryEntry 5 } + +hdsl2ShdslInvStandardVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Version of the HDSL2/SHDSL standard implemented, as reported + in an Inventory Response message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octet 2." + ::= { hdsl2ShdslInventoryEntry 6 } + +hdsl2ShdslInvVendorListNumber OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(3)) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor list number as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 3-5." + ::= { hdsl2ShdslInventoryEntry 7 } + +hdsl2ShdslInvVendorIssueNumber OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor issue number as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 6-7." + ::= { hdsl2ShdslInventoryEntry 8 } + +hdsl2ShdslInvVendorSoftwareVersion OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vendor software version as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 8-13." + ::= { hdsl2ShdslInventoryEntry 9 } + +hdsl2ShdslInvEquipmentCode OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Equipment code conforming to ANSI T1.213, Coded Identification + of Equipment Entities." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 14-23." + ::= { hdsl2ShdslInventoryEntry 10 } + +hdsl2ShdslInvVendorOther OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(12)) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Other vendor information as reported in an Inventory Response + message." + REFERENCE + "G.991.2, Section 9.5.5.7.4, Inventory response - Message ID + 130, Octets 57-68." + ::= { hdsl2ShdslInventoryEntry 11 } + +hdsl2ShdslInvTransmissionModeCapability OBJECT-TYPE + SYNTAX Hdsl2ShdslTransmissionModeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the transmission mode capability of the SHDSL unit." + ::= { hdsl2ShdslInventoryEntry 12 } + +-- Segment Endpoint Configuration Group +-- + +hdsl2ShdslEndpointConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslEndpointConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports configuration parameters for segment + endpoints in an HDSL2/SHDSL line. As this table is indexed + by ifIndex, it MUST be maintained in a persistent manner." + ::= { hdsl2ShdslMibObjects 4 } + +hdsl2ShdslEndpointConfEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslEndpointConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslEndpointConfTable. Each entry + represents a single segment endpoint in an HDSL2/SHDSL line. + It is indexed by the ifIndex of the HDSL2/SHDSL line, the + UnitId of the associated unit, the side of the unit, and the + wire pair of the associated modem." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide, + hdsl2ShdslEndpointWirePair} + ::= { hdsl2ShdslEndpointConfTable 1 } + +Hdsl2ShdslEndpointConfEntry ::= + SEQUENCE + { + + + + hdsl2ShdslEndpointSide Hdsl2ShdslUnitSide, + hdsl2ShdslEndpointWirePair Hdsl2ShdslWirePair, + hdsl2ShdslEndpointAlarmConfProfile SnmpAdminString + } + +hdsl2ShdslEndpointSide OBJECT-TYPE + SYNTAX Hdsl2ShdslUnitSide + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The side of the unit associated with this segment endpoint -- + Network/Customer side -- as per the Hdsl2ShdslUnitSide textual + convention." + ::= { hdsl2ShdslEndpointConfEntry 1 } + +hdsl2ShdslEndpointWirePair OBJECT-TYPE + SYNTAX Hdsl2ShdslWirePair + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The wire pair of the modem associated with this segment + endpoint as per the Hdsl2ShdslWirePair textual convention." + ::= { hdsl2ShdslEndpointConfEntry 2 } + +hdsl2ShdslEndpointAlarmConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the alarm threshold values to be used + for this segment endpoint. The values are obtained from the + alarm configuration profile referenced by this object. The + value of this object is the index of the referenced profile in + the hdsl2ShdslEndpointAlarmConfProfileTable, or NULL (a + zero-length SnmpAdminString). If the value is a zero-length + SnmpAdminString, the endpoint uses the default Alarm + Configuration Profile for the associated span as per the + hdsl2ShdslSpanConfAlarmProfile object in the + hdsl2ShdslSpanConfTable. The default value of this object is + a zero-length SnmpAdminString. + + Any attempt to set this object to a value that is not the value + of the index for an active entry in the profile table, + hdsl2ShdslEndpointAlarmConfProfileTable, MUST be rejected." + ::= { hdsl2ShdslEndpointConfEntry 3 } + +-- Segment Endpoint Current Status/Performance Group +-- + + + +hdsl2ShdslEndpointCurrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslEndpointCurrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains current status and performance information + for segment endpoints in HDSL2/SHDSL lines. As with other + tables in this MIB module indexed by ifIndex, entries in this + table MUST be maintained in a persistent manner." + ::= { hdsl2ShdslMibObjects 5 } + +hdsl2ShdslEndpointCurrEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslEndpointCurrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslEndpointCurrTable. Each entry + contains status and performance information relating to a + single segment endpoint. It is indexed by the ifIndex of the + HDSL2/SHDSL line, the UnitId of the associated unit, the side + of the unit, and the wire pair of the associated modem." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide, + hdsl2ShdslEndpointWirePair } + ::= { hdsl2ShdslEndpointCurrTable 1 } + +Hdsl2ShdslEndpointCurrEntry ::= + SEQUENCE + { + hdsl2ShdslEndpointCurrAtn Integer32, + hdsl2ShdslEndpointCurrSnrMgn Integer32, + hdsl2ShdslEndpointCurrStatus BITS, + hdsl2ShdslEndpointES Counter32, + hdsl2ShdslEndpointSES Counter32, + hdsl2ShdslEndpointCRCanomalies Counter32, + hdsl2ShdslEndpointLOSWS Counter32, + hdsl2ShdslEndpointUAS Counter32, + hdsl2ShdslEndpointCurr15MinTimeElapsed + Hdsl2ShdslPerfTimeElapsed, + hdsl2ShdslEndpointCurr15MinES PerfCurrentCount, + hdsl2ShdslEndpointCurr15MinSES PerfCurrentCount, + hdsl2ShdslEndpointCurr15MinCRCanomalies PerfCurrentCount, + hdsl2ShdslEndpointCurr15MinLOSWS PerfCurrentCount, + hdsl2ShdslEndpointCurr15MinUAS PerfCurrentCount, + hdsl2ShdslEndpointCurr1DayTimeElapsed + Hdsl2ShdslPerfTimeElapsed, + hdsl2ShdslEndpointCurr1DayES + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurr1DaySES + + + + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurr1DayCRCanomalies + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurr1DayLOSWS + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurr1DayUAS + Hdsl2ShdslPerfCurrDayCount, + hdsl2ShdslEndpointCurrTipRingReversal INTEGER, + hdsl2ShdslEndpointCurrActivationState INTEGER + } + +hdsl2ShdslEndpointCurrAtn OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current loop attenuation for this endpoint as reported in + a Network or Customer Side Performance Status message." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 1 } + +hdsl2ShdslEndpointCurrSnrMgn OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current SNR margin for this endpoint as reported in a + Status Response/SNR message." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 2 } + +hdsl2ShdslEndpointCurrStatus OBJECT-TYPE + SYNTAX BITS + { + noDefect(0), + powerBackoff(1), + deviceFault(2), + dcContinuityFault(3), + snrMarginAlarm(4), + loopAttenuationAlarm(5), + loswFailureAlarm(6), + configInitFailure(7), + protocolInitFailure(8), + noNeighborPresent(9), + loopbackActive(10) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Contains the current state of the endpoint. This is a + bit-map of possible conditions. The various bit positions + are as follows: + + noDefect There are no defects on the line. + + powerBackoff Indicates enhanced Power Backoff. + + deviceFault Indicates that a vendor-dependent + diagnostic or self-test fault + has been detected. + + dcContinuityFault Indicates vendor-dependent + conditions that interfere with + span powering such as short and + open circuits. + + snrMarginAlarm Indicates that the SNR margin + has dropped below the alarm threshold. + + loopAttenuationAlarm Indicates that the loop attenuation + exceeds the alarm threshold. + + loswFailureAlarm Indicates a forward LOSW alarm. + + configInitFailure Endpoint failure during initialization + due to paired endpoint not able to + support requested configuration. + + protocolInitFailure Endpoint failure during initialization + due to incompatible protocol used by + the paired endpoint. + + noNeighborPresent Endpoint failure during initialization + due to no activation sequence detected + from paired endpoint. + + loopbackActive A loopback is currently active at this + segment endpoint. + + This is intended to supplement ifOperStatus. Note that there + is a 1:1 relationship between the status bits defined in this + object and the notification thresholds defined elsewhere in + this MIB module." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + + + + ::= { hdsl2ShdslEndpointCurrEntry 3 } + +hdsl2ShdslEndpointES OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) on this endpoint since the xU + was last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 4 } + +hdsl2ShdslEndpointSES OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) on this endpoint + since the xU was last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 5 } + +hdsl2ShdslEndpointCRCanomalies OBJECT-TYPE + SYNTAX Counter32 + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies on this endpoint since the xU was + last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 6 } + +hdsl2ShdslEndpointLOSWS OBJECT-TYPE + SYNTAX Counter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds on this endpoint + since the xU was last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 7 } + +hdsl2ShdslEndpointUAS OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) on this endpoint since + the xU was last restarted." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 8 } + +hdsl2ShdslEndpointCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in the current 15-minute interval." + ::= { hdsl2ShdslEndpointCurrEntry 9 } + +hdsl2ShdslEndpointCurr15MinES OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) in the current 15-minute + interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 10 } + +hdsl2ShdslEndpointCurr15MinSES OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) in the current + 15-minute interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 11 } + +hdsl2ShdslEndpointCurr15MinCRCanomalies OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies in the current 15-minute interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + + + + ::= { hdsl2ShdslEndpointCurrEntry 12 } + +hdsl2ShdslEndpointCurr15MinLOSWS OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds in the current + 15-minute interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 13 } + +hdsl2ShdslEndpointCurr15MinUAS OBJECT-TYPE + SYNTAX PerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) in the current 15-minute + interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 14 } + +hdsl2ShdslEndpointCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the beginning of + the current 1-day interval." + ::= { hdsl2ShdslEndpointCurrEntry 15 } + +hdsl2ShdslEndpointCurr1DayES OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) during the current day as + measured by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 16 } + +hdsl2ShdslEndpointCurr1DaySES OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) during the current + day as measured by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 17 } + +hdsl2ShdslEndpointCurr1DayCRCanomalies OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies during the current day as measured + by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 18 } + +hdsl2ShdslEndpointCurr1DayLOSWS OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds during the current + day as measured by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 19 } + +hdsl2ShdslEndpointCurr1DayUAS OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfCurrDayCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) during the current day as + measured by hdsl2ShdslEndpointCurr1DayTimeElapsed." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2ShdslEndpointCurrEntry 20 } + +hdsl2ShdslEndpointCurrTipRingReversal OBJECT-TYPE + SYNTAX INTEGER + { + normal(1), + reversed(2) + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object indicates the state of the tip/ring for the + wire pair." + ::= { hdsl2ShdslEndpointCurrEntry 21 } + +hdsl2ShdslEndpointCurrActivationState OBJECT-TYPE + SYNTAX INTEGER + { + preActivation(1), -- PreTrain + activation(2), -- Training + data(3) -- Trained + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the activation or training state of + the wire pair." + REFERENCE "ITU-T G.991.2, Section 6.2 PMD Activation Sequence" + ::= { hdsl2ShdslEndpointCurrEntry 22 } + +-- Segment Endpoint 15-Minute Interval Status/Performance Group +-- + +hdsl2Shdsl15MinIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2Shdsl15MinIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each HDSL2/SHDSL endpoint + performance data collection interval. This table contains + live data from equipment. As such, it is NOT persistent." + ::= { hdsl2ShdslMibObjects 6 } + +hdsl2Shdsl15MinIntervalEntry OBJECT-TYPE + SYNTAX Hdsl2Shdsl15MinIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2Shdsl15MinIntervalTable." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide, + hdsl2ShdslEndpointWirePair, hdsl2Shdsl15MinIntervalNumber} + ::= { hdsl2Shdsl15MinIntervalTable 1 } + +Hdsl2Shdsl15MinIntervalEntry ::= + SEQUENCE + { + hdsl2Shdsl15MinIntervalNumber Unsigned32, + + + + hdsl2Shdsl15MinIntervalES PerfIntervalCount, + hdsl2Shdsl15MinIntervalSES PerfIntervalCount, + hdsl2Shdsl15MinIntervalCRCanomalies PerfIntervalCount, + hdsl2Shdsl15MinIntervalLOSWS PerfIntervalCount, + hdsl2Shdsl15MinIntervalUAS PerfIntervalCount + } + +hdsl2Shdsl15MinIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32(1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number. Interval 1 is the most + recent previous interval; interval 96 is 24 hours ago. + Intervals 2..96 are optional." + ::= { hdsl2Shdsl15MinIntervalEntry 1 } + +hdsl2Shdsl15MinIntervalES OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) during the interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 2 } + +hdsl2Shdsl15MinIntervalSES OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) during the interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 3 } + +hdsl2Shdsl15MinIntervalCRCanomalies OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies during the interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 4 } + +hdsl2Shdsl15MinIntervalLOSWS OBJECT-TYPE + + + + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds during the + interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 5 } + +hdsl2Shdsl15MinIntervalUAS OBJECT-TYPE + SYNTAX PerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) during the interval." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl15MinIntervalEntry 6 } + +-- Segment Endpoint 1-Day Interval Status/Performance Group +-- + +hdsl2Shdsl1DayIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2Shdsl1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each HDSL2/SHDSL endpoint + performance data collection interval. This table contains + live data from equipment. As such, it is NOT persistent." + ::= { hdsl2ShdslMibObjects 7 } + +hdsl2Shdsl1DayIntervalEntry OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2Shdsl1DayIntervalTable." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide, + hdsl2ShdslEndpointWirePair, hdsl2Shdsl1DayIntervalNumber } + ::= { hdsl2Shdsl1DayIntervalTable 1 } + +Hdsl2Shdsl1DayIntervalEntry ::= + SEQUENCE + { + hdsl2Shdsl1DayIntervalNumber Unsigned32, + hdsl2Shdsl1DayIntervalMoniSecs Hdsl2ShdslPerfTimeElapsed, + + + + hdsl2Shdsl1DayIntervalES Hdsl2Shdsl1DayIntervalCount, + hdsl2Shdsl1DayIntervalSES Hdsl2Shdsl1DayIntervalCount, + hdsl2Shdsl1DayIntervalCRCanomalies Hdsl2Shdsl1DayIntervalCount, + hdsl2Shdsl1DayIntervalLOSWS Hdsl2Shdsl1DayIntervalCount, + hdsl2Shdsl1DayIntervalUAS Hdsl2Shdsl1DayIntervalCount + } + +hdsl2Shdsl1DayIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32(1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "History Data Interval number. Interval 1 is the most + recent previous day; interval 30 is 30 days ago. Intervals + 2..30 are optional." + ::= { hdsl2Shdsl1DayIntervalEntry 1 } + +hdsl2Shdsl1DayIntervalMoniSecs OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the 1-day interval over which the + performance monitoring information is actually counted. + This value will be the same as the interval duration except + in a situation where performance monitoring data could not + be collected for any reason." + ::= { hdsl2Shdsl1DayIntervalEntry 2 } + +hdsl2Shdsl1DayIntervalES OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) during the 1-day interval as + measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 3 } + +hdsl2Shdsl1DayIntervalSES OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) during the 1-day + + + + interval as measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 4 } + +hdsl2Shdsl1DayIntervalCRCanomalies OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "detected CRC Anomalies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of CRC anomalies during the 1-day interval as + measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 5 } + +hdsl2Shdsl1DayIntervalLOSWS OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Sync Word (LOSW) Seconds during the 1-day + interval as measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 6 } + +hdsl2Shdsl1DayIntervalUAS OBJECT-TYPE + SYNTAX Hdsl2Shdsl1DayIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) during the 1-day interval + as measured by hdsl2Shdsl1DayIntervalMoniSecs." + REFERENCE "HDSL2 Section 7.5.3.7; SHDSL Section 9.5.5.7" + ::= { hdsl2Shdsl1DayIntervalEntry 7 } + +-- Maintenance Group +-- + +hdsl2ShdslEndpointMaintTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslEndpointMaintEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports maintenance operations (e.g., loopbacks) + to be performed on HDSL2/SHDSL segment endpoints. This table + contains live data from equipment. As such, it is NOT + + + + persistent." + ::= { hdsl2ShdslMibObjects 8 } + +hdsl2ShdslEndpointMaintEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslEndpointMaintEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslEndpointMaintTable. Each entry + corresponds to a single segment endpoint and is indexed by the + ifIndex of the HDSL2/SHDSL line, the UnitId of the associated + unit, and the side of the unit." + INDEX { ifIndex, hdsl2ShdslInvIndex, hdsl2ShdslEndpointSide } + ::= { hdsl2ShdslEndpointMaintTable 1 } + +Hdsl2ShdslEndpointMaintEntry ::= + SEQUENCE + { + hdsl2ShdslMaintLoopbackConfig INTEGER, + hdsl2ShdslMaintTipRingReversal INTEGER, + hdsl2ShdslMaintPowerBackOff INTEGER, + hdsl2ShdslMaintSoftRestart INTEGER + } + +hdsl2ShdslMaintLoopbackConfig OBJECT-TYPE + SYNTAX INTEGER + { + noLoopback(1), + normalLoopback(2), + specialLoopback(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls configuration of loopbacks for the + associated segment endpoint. The status of the loopback + is obtained via the hdsl2ShdslEndpointCurrStatus object." + ::= { hdsl2ShdslEndpointMaintEntry 1 } + +hdsl2ShdslMaintTipRingReversal OBJECT-TYPE + SYNTAX INTEGER + { + normal(1), + reversed(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object indicates the state of the tip/ring pair at the + associated segment endpoint." + ::= { hdsl2ShdslEndpointMaintEntry 2 } + +hdsl2ShdslMaintPowerBackOff OBJECT-TYPE + SYNTAX INTEGER + { + default(1), + enhanced(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the receiver at the associated + segment endpoint to operate in default or enhanced power + backoff mode." + ::= { hdsl2ShdslEndpointMaintEntry 3 } + +hdsl2ShdslMaintSoftRestart OBJECT-TYPE + SYNTAX INTEGER + { + ready(1), + restart(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object enables the manager to trigger a soft restart + of the modem at the associated segment endpoint. The + manager may only set this object to the 'restart(2)' + value, which initiates a restart. The agent will perform a + restart after approximately 5 seconds. Following the 5 second + period, the agent will restore the object to the 'ready(1)' + state." + ::= { hdsl2ShdslEndpointMaintEntry 4 } + +hdsl2ShdslUnitMaintTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslUnitMaintEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table supports maintenance operations for units in a + HDSL2/SHDSL line. Entries in this table MUST be maintained + in a persistent manner." + ::= { hdsl2ShdslMibObjects 9 } + +hdsl2ShdslUnitMaintEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslUnitMaintEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the hdsl2ShdslUnitMaintTable. Each entry + corresponds to a single unit and is indexed by the + ifIndex of the HDSL2/SHDSL line and the UnitId of the + associated unit." + INDEX { ifIndex, hdsl2ShdslInvIndex } + ::= { hdsl2ShdslUnitMaintTable 1 } + +Hdsl2ShdslUnitMaintEntry ::= + SEQUENCE + { + hdsl2ShdslMaintLoopbackTimeout Integer32, + hdsl2ShdslMaintUnitPowerSource INTEGER + } + +hdsl2ShdslMaintLoopbackTimeout OBJECT-TYPE + SYNTAX Integer32(0..4095) + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object configures the timeout value for loopbacks + initiated at segments endpoints contained in the associated + unit. A value of 0 disables the timeout." + ::= { hdsl2ShdslUnitMaintEntry 1 } + +hdsl2ShdslMaintUnitPowerSource OBJECT-TYPE + SYNTAX INTEGER + { + local(1), + span(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the DC power source being used by the + associated unit." + ::= { hdsl2ShdslUnitMaintEntry 2 } + +-- Span Configuration Profile Group +-- + +hdsl2ShdslSpanConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslSpanConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table supports definitions of span configuration + profiles for SHDSL lines. HDSL2 does not support these + configuration options. This table MUST be maintained + in a persistent manner." + ::= { hdsl2ShdslMibObjects 10 } + +hdsl2ShdslSpanConfProfileEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslSpanConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to a single span configuration + profile. Each profile contains a set of span configuration + parameters. The configuration parameters in a profile are + applied to those lines referencing that profile (see the + hdsl2ShdslSpanConfProfile object). Profiles may be + created/deleted using the row creation/deletion mechanism + via hdsl2ShdslSpanConfProfileRowStatus. If an active + entry is referenced in hdsl2ShdslSpanConfProfile, the + entry MUST remain active until all references are removed." + INDEX { IMPLIED hdsl2ShdslSpanConfProfileName } + ::= { hdsl2ShdslSpanConfProfileTable 1 } + +Hdsl2ShdslSpanConfProfileEntry ::= + SEQUENCE + { + hdsl2ShdslSpanConfProfileName SnmpAdminString, + hdsl2ShdslSpanConfWireInterface INTEGER, + hdsl2ShdslSpanConfMinLineRate Unsigned32, + hdsl2ShdslSpanConfMaxLineRate Unsigned32, + hdsl2ShdslSpanConfPSD INTEGER, + hdsl2ShdslSpanConfTransmissionMode + Hdsl2ShdslTransmissionModeType, + hdsl2ShdslSpanConfRemoteEnabled INTEGER, + hdsl2ShdslSpanConfPowerFeeding INTEGER, + hdsl2ShdslSpanConfCurrCondTargetMarginDown Integer32, + hdsl2ShdslSpanConfWorstCaseTargetMarginDown Integer32, + hdsl2ShdslSpanConfCurrCondTargetMarginUp Integer32, + hdsl2ShdslSpanConfWorstCaseTargetMarginUp Integer32, + hdsl2ShdslSpanConfUsedTargetMargins BITS, + hdsl2ShdslSpanConfReferenceClock + Hdsl2ShdslClockReferenceType, + hdsl2ShdslSpanConfLineProbeEnable INTEGER, + hdsl2ShdslSpanConfProfileRowStatus RowStatus + } + +hdsl2ShdslSpanConfProfileName OBJECT-TYPE + + + + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is the unique index associated with this profile. + Entries in this table are referenced via the object + hdsl2ShdslSpanConfProfile in Hdsl2ShdslSpanConfEntry." + ::= { hdsl2ShdslSpanConfProfileEntry 1 } + +hdsl2ShdslSpanConfWireInterface OBJECT-TYPE + SYNTAX INTEGER + { + twoWire(1), + fourWire(2), + sixWire(3), + eightWire(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the two-wire or optional four-wire, + six-wire, or eight-wire operation for SHDSL lines." + DEFVAL { twoWire } + ::= { hdsl2ShdslSpanConfProfileEntry 2 } + +hdsl2ShdslSpanConfMinLineRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the minimum transmission rate for + the associated SHDSL Line in bits-per-second (bps) and includes + both payload (user data) and any applicable framing overhead. + If the minimum line rate equals the maximum line rate + (hdsl2ShdslSpanMaxLineRate), the line rate is considered + 'fixed'. If the minimum line rate is less than the + maximum line rate, the line rate is considered + 'rate-adaptive'." + DEFVAL { 1552000 } + ::= { hdsl2ShdslSpanConfProfileEntry 3 } + +hdsl2ShdslSpanConfMaxLineRate OBJECT-TYPE + SYNTAX Unsigned32(0..4294967295) + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object configures the maximum transmission rate for + the associated SHDSL Line in bits-per-second (bps) and includes + both payload (user data) and any applicable framing overhead. + If the minimum line rate equals the maximum line rate + (hdsl2ShdslSpanMaxLineRate), the line rate is considered + 'fixed'. If the minimum line rate is less than the + maximum line rate, the line rate is considered + 'rate-adaptive'." + DEFVAL { 1552000 } + ::= { hdsl2ShdslSpanConfProfileEntry 4 } + +hdsl2ShdslSpanConfPSD OBJECT-TYPE + SYNTAX INTEGER + { + symmetric(1), + asymmetric(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures use of symmetric/asymmetric PSD (Power + Spectral Density) Mask for the associated SHDSL Line. Support + for symmetric PSD is mandatory for all supported data rates. + Support for asymmetric PSD is optional." + DEFVAL { symmetric } + ::= { hdsl2ShdslSpanConfProfileEntry 5 } + +hdsl2ShdslSpanConfTransmissionMode OBJECT-TYPE + SYNTAX Hdsl2ShdslTransmissionModeType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the regional setting for the SHDSL + line." + DEFVAL { { region1 } } + ::= { hdsl2ShdslSpanConfProfileEntry 6 } + +hdsl2ShdslSpanConfRemoteEnabled OBJECT-TYPE + SYNTAX INTEGER + { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables support for remote management + of the units in an SHDSL line from the STU-R via the EOC." + + + + DEFVAL { enabled } + ::= { hdsl2ShdslSpanConfProfileEntry 7 } + +hdsl2ShdslSpanConfPowerFeeding OBJECT-TYPE + SYNTAX INTEGER + { + noPower(1), + powerFeed(2), + wettingCurrent(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables support for optional power + feeding in an SHDSL line." + DEFVAL { noPower } + ::= { hdsl2ShdslSpanConfProfileEntry 8 } + +hdsl2ShdslSpanConfCurrCondTargetMarginDown OBJECT-TYPE + SYNTAX Integer32(-10..21) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the downstream current condition target + SNR margin for an SHDSL line. The SNR margin is the difference + between the desired SNR and the actual SNR. Target SNR margin + is the desired SNR margin for a unit." + DEFVAL { 0 } + ::= { hdsl2ShdslSpanConfProfileEntry 9 } + +hdsl2ShdslSpanConfWorstCaseTargetMarginDown OBJECT-TYPE + SYNTAX Integer32(-10..21) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the downstream worst-case target SNR + margin for an SHDSL line. The SNR margin is the difference + between the desired SNR and the actual SNR. Target SNR + margin is the desired SNR margin for a unit." + DEFVAL { 0 } + ::= { hdsl2ShdslSpanConfProfileEntry 10 } + +hdsl2ShdslSpanConfCurrCondTargetMarginUp OBJECT-TYPE + SYNTAX Integer32(-10..21) + UNITS "dB" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object specifies the upstream current-condition target + SNR margin for an SHDSL line. The SNR margin is the difference + between the desired SNR and the actual SNR. Target SNR margin + is the desired SNR margin for a unit." + DEFVAL { 0 } + ::= { hdsl2ShdslSpanConfProfileEntry 11 } + +hdsl2ShdslSpanConfWorstCaseTargetMarginUp OBJECT-TYPE + SYNTAX Integer32(-10..21) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the upstream worst-case target SNR + margin for an SHDSL line. The SNR margin is the difference + between the desired SNR and the actual SNR. Target SNR margin + is the desired SNR margin for a unit." + DEFVAL { 0 } + ::= { hdsl2ShdslSpanConfProfileEntry 12 } + +hdsl2ShdslSpanConfUsedTargetMargins OBJECT-TYPE + SYNTAX BITS + { + currCondDown(0), + worstCaseDown(1), + currCondUp(2), + worstCaseUp(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether a target SNR margin is enabled or + disabled. This is a bit-map of possible settings. The + various bit positions are as follows: + + currCondDown - current-condition downstream target SNR + margin enabled + + worstCaseDown - worst-case downstream target SNR margin + enabled + + currCondUp - current-condition upstream target SNR + margin enabled + + worstCaseUp - worst-case upstream target SNR margin + enabled." + + + + DEFVAL { { currCondDown } } + ::= { hdsl2ShdslSpanConfProfileEntry 13 } + +hdsl2ShdslSpanConfReferenceClock OBJECT-TYPE + SYNTAX Hdsl2ShdslClockReferenceType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the clock reference for the STU-C + in an SHDSL Line." + DEFVAL { localClk } + ::= { hdsl2ShdslSpanConfProfileEntry 14 } + +hdsl2ShdslSpanConfLineProbeEnable OBJECT-TYPE + SYNTAX INTEGER + { + disable(1), + enable(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables support for Line Probe of + the units in an SHDSL line. When Line Probe is enabled, the + system performs Line Probing to find the best possible + rate. If Line Probe is disabled, the rate adaptation phase + is skipped to shorten set up time." + DEFVAL { disable } + ::= { hdsl2ShdslSpanConfProfileEntry 15 } + +hdsl2ShdslSpanConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls creation/deletion of the associated + entry in this table per the semantics of RowStatus. If an + active entry is referenced in hdsl2ShdslSpanConfProfile, the + entry MUST remain active until all references are removed." + ::= { hdsl2ShdslSpanConfProfileEntry 16 } + +-- Segment Endpoint Alarm Configuration Profile group +-- + +hdsl2ShdslEndpointAlarmConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF Hdsl2ShdslEndpointAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table supports definitions of alarm configuration + profiles for HDSL2/SHDSL segment endpoints. This table + MUST be maintained in a persistent manner." + ::= { hdsl2ShdslMibObjects 11 } + +hdsl2ShdslEndpointAlarmConfProfileEntry OBJECT-TYPE + SYNTAX Hdsl2ShdslEndpointAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to a single alarm configuration profile. + Each profile contains a set of parameters for setting alarm + thresholds for various performance attributes monitored at + HDSL2/SHDSL segment endpoints. Profiles may be created/deleted + using the row creation/deletion mechanism via + hdsl2ShdslEndpointAlarmConfProfileRowStatus. If an active + entry is referenced in either hdsl2ShdslSpanConfAlarmProfile + or hdsl2ShdslEndpointAlarmConfProfile, the entry MUST remain + active until all references are removed." + INDEX { IMPLIED hdsl2ShdslEndpointAlarmConfProfileName } + ::= { hdsl2ShdslEndpointAlarmConfProfileTable 1 } + +Hdsl2ShdslEndpointAlarmConfProfileEntry ::= + SEQUENCE + { + hdsl2ShdslEndpointAlarmConfProfileName SnmpAdminString, + hdsl2ShdslEndpointThreshLoopAttenuation Integer32, + hdsl2ShdslEndpointThreshSNRMargin Integer32, + hdsl2ShdslEndpointThreshES + Hdsl2ShdslPerfIntervalThreshold, + hdsl2ShdslEndpointThreshSES + Hdsl2ShdslPerfIntervalThreshold, + hdsl2ShdslEndpointThreshCRCanomalies Integer32, + hdsl2ShdslEndpointThreshLOSWS + Hdsl2ShdslPerfIntervalThreshold, + hdsl2ShdslEndpointThreshUAS + Hdsl2ShdslPerfIntervalThreshold, + hdsl2ShdslEndpointAlarmConfProfileRowStatus RowStatus + } + +hdsl2ShdslEndpointAlarmConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is the unique index associated with this profile." + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 1 } + + + +hdsl2ShdslEndpointThreshLoopAttenuation OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the loop attenuation alarm threshold. + When the current value of hdsl2ShdslEndpointCurrAtn reaches + or exceeds this threshold, an hdsl2ShdslLoopAttenCrossing + MAY be generated." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 2 } + +hdsl2ShdslEndpointThreshSNRMargin OBJECT-TYPE + SYNTAX Integer32(-127..128) + UNITS "dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the SNR margin alarm threshold. + When the current value of hdsl2ShdslEndpointCurrSnrMgn + reaches or drops below this threshold, a + hdsl2ShdslSNRMarginCrossing MAY be generated." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 3 } + +hdsl2ShdslEndpointThreshES OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + Errored Seconds (ES) within any given 15-minute performance + data collection interval. If the value of Errored Seconds + in a particular 15-minute collection interval reaches/ + exceeds this value, an hdsl2ShdslPerfESThresh MAY be + generated. At most, one notification will be sent per + interval per endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 4 } + +hdsl2ShdslEndpointThreshSES OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object configures the threshold for the number of + Severely Errored Seconds (SES) within any given 15-minute + performance data collection interval. If the value of + Severely Errored Seconds in a particular 15-minute collection + interval reaches/exceeds this value, an hdsl2ShdslPerfSESThresh + MAY be generated. At most, one notification will be sent per + interval per endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 5 } + +hdsl2ShdslEndpointThreshCRCanomalies OBJECT-TYPE + SYNTAX Integer32 + UNITS "detected CRC Anomalies" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + CRC anomalies within any given 15-minute performance data + collection interval. If the value of CRC anomalies in a + particular 15-minute collection interval reaches/exceeds + this value, an hdsl2ShdslPerfCRCanomaliesThresh MAY be + generated. At most, one notification will be sent per + interval per endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 6 } + +hdsl2ShdslEndpointThreshLOSWS OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + Loss of Sync Word (LOSW) Seconds within any given 15-minute + performance data collection interval. If the value of LOSW + in a particular 15-minute collection interval reaches/exceeds + this value, an hdsl2ShdslPerfLOSWSThresh MAY be generated. + At most, one notification will be sent per interval per + endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 7 } + +hdsl2ShdslEndpointThreshUAS OBJECT-TYPE + SYNTAX Hdsl2ShdslPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object configures the threshold for the number of + Unavailable Seconds (UAS) within any given 15-minute + performance data collection interval. If the value of UAS + in a particular 15-minute collection interval reaches/exceeds + this value, an hdsl2ShdslPerfUASThresh MAY be generated. + At most, one notification will be sent per interval per + endpoint." + DEFVAL { 0 } + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 8 } + +hdsl2ShdslEndpointAlarmConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls creation/deletion of the associated + entry in this table as per the semantics of RowStatus. + If an active entry is referenced in either + hdsl2ShdslSpanConfAlarmProfile or + hdsl2ShdslEndpointAlarmConfProfile, the entry MUST remain + active until all references are removed." + ::= { hdsl2ShdslEndpointAlarmConfProfileEntry 9 } + +-- Notifications Group +-- + +hdsl2ShdslNotifications OBJECT IDENTIFIER ::= { hdsl2ShdslMIB 0 } + +hdsl2ShdslLoopAttenCrossing NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrAtn, + hdsl2ShdslEndpointThreshLoopAttenuation + } + STATUS current + DESCRIPTION + "This notification indicates that the loop attenuation + threshold (as per the hdsl2ShdslEndpointThreshLoopAttenuation + value) has been reached/exceeded for the HDSL2/SHDSL segment + endpoint." + ::= { hdsl2ShdslNotifications 1 } + +hdsl2ShdslSNRMarginCrossing NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrSnrMgn, + hdsl2ShdslEndpointThreshSNRMargin + } + + + + STATUS current + DESCRIPTION + "This notification indicates that the SNR margin threshold (as + per the hdsl2ShdslEndpointThreshSNRMargin value) has been + reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 2 } + +hdsl2ShdslPerfESThresh NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurr15MinES, + hdsl2ShdslEndpointThreshES + } + STATUS current + DESCRIPTION + "This notification indicates that the errored seconds + threshold (as per the hdsl2ShdslEndpointThreshES value) + has been reached/exceeded for the HDSL2/SHDSL segment + endpoint." + ::= { hdsl2ShdslNotifications 3 } + +hdsl2ShdslPerfSESThresh NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurr15MinSES, + hdsl2ShdslEndpointThreshSES + } + STATUS current + DESCRIPTION + "This notification indicates that the severely errored seconds + threshold (as per the hdsl2ShdslEndpointThreshSES value) has + been reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 4 } + +hdsl2ShdslPerfCRCanomaliesThresh NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurr15MinCRCanomalies, + hdsl2ShdslEndpointThreshCRCanomalies + } + STATUS current + DESCRIPTION + "This notification indicates that the CRC anomalies threshold + (as per the hdsl2ShdslEndpointThreshCRCanomalies value) has + been reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 5 } + +hdsl2ShdslPerfLOSWSThresh NOTIFICATION-TYPE + + + + OBJECTS + { + hdsl2ShdslEndpointCurr15MinLOSWS, + hdsl2ShdslEndpointThreshLOSWS + } + STATUS current + DESCRIPTION + "This notification indicates that the LOSW Seconds threshold + (as per the hdsl2ShdslEndpointThreshLOSWS value) has been + reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 6 } + +hdsl2ShdslPerfUASThresh NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurr15MinUAS, + hdsl2ShdslEndpointThreshUAS + } + STATUS current + DESCRIPTION + "This notification indicates that the unavailable seconds + threshold (as per the hdsl2ShdslEndpointThreshUAS value) has + been reached/exceeded for the HDSL2/SHDSL segment endpoint." + ::= { hdsl2ShdslNotifications 7 } + +hdsl2ShdslSpanInvalidNumRepeaters NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslSpanConfNumRepeaters + } + STATUS current + DESCRIPTION + "This notification indicates that a mismatch has been detected + between the number of repeater/regenerator units configured + for an HDSL2/SHDSL line via the hdsl2ShdslSpanConfNumRepeaters + object and the actual number of repeater/regenerator units + discovered via the EOC." + ::= { hdsl2ShdslNotifications 8 } + +hdsl2ShdslLoopbackFailure NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslMaintLoopbackConfig + } + STATUS current + DESCRIPTION + "This notification indicates that an endpoint maintenance + loopback command failed for an HDSL2/SHDSL segment." + + + + ::= { hdsl2ShdslNotifications 9 } + +hdsl2ShdslpowerBackoff NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + powerBackoff in the hdsl2ShdslEndpointCurrStatus object for + this endpoint has changed." + ::= { hdsl2ShdslNotifications 10 } + +hdsl2ShdsldeviceFault NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + deviceFault in the hdsl2ShdslEndpointCurrStatus object for + this endpoint has changed." + ::= { hdsl2ShdslNotifications 11 } + +hdsl2ShdsldcContinuityFault NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + dcContinuityFault in the hdsl2ShdslEndpointCurrStatus object + for this endpoint has changed." + ::= { hdsl2ShdslNotifications 12 } + +hdsl2ShdslconfigInitFailure NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + configInitFailure in the hdsl2ShdslEndpointCurrStatus object + for this endpoint has changed." + + + + ::= { hdsl2ShdslNotifications 13 } + +hdsl2ShdslprotocolInitFailure NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + protocolInitFailure in the hdsl2ShdslEndpointCurrStatus + object for this endpoint has changed." + ::= { hdsl2ShdslNotifications 14 } + +hdsl2ShdslnoNeighborPresent NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslEndpointCurrStatus + } + STATUS current + DESCRIPTION + "This notification indicates that the bit setting for + noNeighborPresent in the hdsl2ShdslEndpointCurrStatus object + for this endpoint has changed." + ::= { hdsl2ShdslNotifications 15 } + +hdsl2ShdslLocalPowerLoss NOTIFICATION-TYPE + OBJECTS + { + hdsl2ShdslInvVendorID + } + STATUS current + DESCRIPTION + "This notification indicates impending unit failure due to + loss of local power (last gasp)." + ::= { hdsl2ShdslNotifications 16 } + +-- conformance information +-- + +hdsl2ShdslConformance OBJECT IDENTIFIER ::= { hdsl2ShdslMIB 3 } +hdsl2ShdslGroups OBJECT IDENTIFIER ::= + { hdsl2ShdslConformance 1 } +hdsl2ShdslCompliances OBJECT IDENTIFIER ::= + { hdsl2ShdslConformance 2 } + +-- agent compliance statements + + + + +hdsl2ShdslLineMibCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMP entities that implement + HDSL2 and SHDSL. The version of SHDSL supported in this + compliance statement is g.shdsl. + + **** This compliance statement is deprecated. ****" + MODULE + MANDATORY-GROUPS + { + hdsl2ShdslSpanConfGroup, + hdsl2ShdslSpanStatusGroup, + hdsl2ShdslInventoryGroup, + hdsl2ShdslEndpointConfGroup, + hdsl2ShdslEndpointCurrGroup, + hdsl2Shdsl15MinIntervalGroup, + hdsl2Shdsl1DayIntervalGroup, + hdsl2ShdslMaintenanceGroup, + hdsl2ShdslEndpointAlarmConfGroup, + hdsl2ShdslNotificationGroup + } + +GROUP hdsl2ShdslInventoryShdslGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslSpanShdslStatusGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslSpanConfProfileGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +OBJECT hdsl2ShdslSpanConfWireInterface + SYNTAX INTEGER + { + twoWire(1), + fourWire(2) + } + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + + + +OBJECT hdsl2ShdslStatusMaxAttainableLineRate + SYNTAX Unsigned32(0..4112000) + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + +OBJECT hdsl2ShdslStatusActualLineRate + SYNTAX Unsigned32(0..4112000) + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + +OBJECT hdsl2ShdslSpanConfMinLineRate + SYNTAX Unsigned32(0..4112000) + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + +OBJECT hdsl2ShdslSpanConfMaxLineRate + SYNTAX Unsigned32(0..4112000) + DESCRIPTION + "An implementation only has to support the range as + applicable for the original g.shdsl specification defined + in RFC 3276." + + ::= { hdsl2ShdslCompliances 1 } + +hdsl2GshdslbisLineMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + HDSL2 and SHDSL. The version of SHDSL supported in this + compliance statement is g.shdsl.bis." + MODULE + MANDATORY-GROUPS + { + hdsl2ShdslSpanConfGroup, + hdsl2ShdslSpanStatusGroup, + hdsl2ShdslInventoryGroup, + hdsl2ShdslEndpointConfGroup, + hdsl2ShdslEndpointCurrGroup, + hdsl2Shdsl15MinIntervalGroup, + hdsl2Shdsl1DayIntervalGroup, + hdsl2ShdslMaintenanceGroup, + hdsl2ShdslEndpointAlarmConfGroup, + + + + hdsl2ShdslNotificationGroup + } + +GROUP hdsl2ShdslInventoryShdslGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslSpanShdslStatusGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslSpanConfProfileGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslWirePairGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + +GROUP hdsl2ShdslPayloadRateGroup + DESCRIPTION + "Support for this group is only required for implementations + supporting SHDSL lines." + + ::= { hdsl2ShdslCompliances 2 } + +-- units of conformance +-- + +hdsl2ShdslSpanConfGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslSpanConfNumRepeaters, + hdsl2ShdslSpanConfProfile, + hdsl2ShdslSpanConfAlarmProfile + } + STATUS current + DESCRIPTION + "This group supports objects for configuring span-related + parameters for HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 1 } + +hdsl2ShdslSpanStatusGroup OBJECT-GROUP + OBJECTS + + + + { + hdsl2ShdslStatusNumAvailRepeaters + } + STATUS current + DESCRIPTION + "This group supports objects for retrieving span-related + status for HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 2 } + +hdsl2ShdslInventoryShdslGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslInvTransmissionModeCapability + } + STATUS current + DESCRIPTION + "This group supports objects for retrieving SHDSL-specific + inventory information." + ::= { hdsl2ShdslGroups 3 } + +hdsl2ShdslSpanShdslStatusGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslStatusMaxAttainableLineRate, + hdsl2ShdslStatusActualLineRate, + hdsl2ShdslStatusTransmissionModeCurrent + } + STATUS current + DESCRIPTION + "This group supports objects for retrieving SHDSL-specific + span-related status." + ::= { hdsl2ShdslGroups 4 } + +hdsl2ShdslInventoryGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslInvVendorID, + hdsl2ShdslInvVendorModelNumber, + hdsl2ShdslInvVendorSerialNumber, + hdsl2ShdslInvVendorEOCSoftwareVersion, + hdsl2ShdslInvStandardVersion, + hdsl2ShdslInvVendorListNumber, + hdsl2ShdslInvVendorIssueNumber, + hdsl2ShdslInvVendorSoftwareVersion, + hdsl2ShdslInvEquipmentCode, + hdsl2ShdslInvVendorOther + } + STATUS current + + + + DESCRIPTION + "This group supports objects that provide unit inventory + information about the units in HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 5 } + +hdsl2ShdslEndpointConfGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslEndpointCurrAtn + } + STATUS current + DESCRIPTION + "This group supports objects for configuring parameters for + segment endpoints in HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 6 } + +hdsl2ShdslEndpointCurrGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslEndpointCurrAtn, + hdsl2ShdslEndpointCurrSnrMgn, + hdsl2ShdslEndpointCurrStatus, + hdsl2ShdslEndpointES, + hdsl2ShdslEndpointSES, + hdsl2ShdslEndpointCRCanomalies, + hdsl2ShdslEndpointLOSWS, + hdsl2ShdslEndpointUAS, + hdsl2ShdslEndpointCurr15MinTimeElapsed, + hdsl2ShdslEndpointCurr15MinES, + hdsl2ShdslEndpointCurr15MinSES, + hdsl2ShdslEndpointCurr15MinCRCanomalies, + hdsl2ShdslEndpointCurr15MinLOSWS, + hdsl2ShdslEndpointCurr15MinUAS, + hdsl2ShdslEndpointCurr1DayTimeElapsed, + hdsl2ShdslEndpointCurr1DayES, + hdsl2ShdslEndpointCurr1DaySES, + hdsl2ShdslEndpointCurr1DayCRCanomalies, + hdsl2ShdslEndpointCurr1DayLOSWS, + hdsl2ShdslEndpointCurr1DayUAS + } + STATUS current + DESCRIPTION + "This group supports objects that provide current status and + performance measurements relating to segment endpoints in + HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 7 } + +hdsl2Shdsl15MinIntervalGroup OBJECT-GROUP + + + + OBJECTS + { + hdsl2Shdsl15MinIntervalES, + hdsl2Shdsl15MinIntervalSES, + hdsl2Shdsl15MinIntervalCRCanomalies, + hdsl2Shdsl15MinIntervalLOSWS, + hdsl2Shdsl15MinIntervalUAS + } + STATUS current + DESCRIPTION + "This group supports objects that maintain historic + performance measurements relating to segment endpoints in + HDSL2/SHDSL lines in 15-minute intervals." + ::= { hdsl2ShdslGroups 8 } + +hdsl2Shdsl1DayIntervalGroup OBJECT-GROUP + OBJECTS + { + hdsl2Shdsl1DayIntervalMoniSecs, + hdsl2Shdsl1DayIntervalES, + hdsl2Shdsl1DayIntervalSES, + hdsl2Shdsl1DayIntervalCRCanomalies, + hdsl2Shdsl1DayIntervalLOSWS, + hdsl2Shdsl1DayIntervalUAS + } + STATUS current + DESCRIPTION + "This group supports objects that maintain historic + performance measurements relating to segment endpoints in + HDSL2/SHDSL lines in 1-day intervals." + ::= { hdsl2ShdslGroups 9 } + +hdsl2ShdslMaintenanceGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslMaintLoopbackConfig, + hdsl2ShdslMaintTipRingReversal, + hdsl2ShdslMaintPowerBackOff, + hdsl2ShdslMaintSoftRestart, + hdsl2ShdslMaintLoopbackTimeout, + hdsl2ShdslMaintUnitPowerSource + } + STATUS current + DESCRIPTION + "This group supports objects that provide support for + maintenance actions for HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 10 } + + + + +hdsl2ShdslEndpointAlarmConfGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslEndpointAlarmConfProfile, + hdsl2ShdslEndpointThreshLoopAttenuation, + hdsl2ShdslEndpointThreshSNRMargin, + hdsl2ShdslEndpointThreshES, + hdsl2ShdslEndpointThreshSES, + hdsl2ShdslEndpointThreshCRCanomalies, + hdsl2ShdslEndpointThreshLOSWS, + hdsl2ShdslEndpointThreshUAS, + hdsl2ShdslEndpointAlarmConfProfileRowStatus + } + STATUS current + DESCRIPTION + "This group supports objects that allow configuration of alarm + thresholds for various performance parameters for HDSL2/SHDSL + lines." + ::= { hdsl2ShdslGroups 11 } + +hdsl2ShdslNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS + { + hdsl2ShdslLoopAttenCrossing, + hdsl2ShdslSNRMarginCrossing, + hdsl2ShdslPerfESThresh, + hdsl2ShdslPerfSESThresh, + hdsl2ShdslPerfCRCanomaliesThresh, + hdsl2ShdslPerfLOSWSThresh, + hdsl2ShdslPerfUASThresh, + hdsl2ShdslSpanInvalidNumRepeaters, + hdsl2ShdslLoopbackFailure, + hdsl2ShdslpowerBackoff, + hdsl2ShdsldeviceFault, + hdsl2ShdsldcContinuityFault, + hdsl2ShdslconfigInitFailure, + hdsl2ShdslprotocolInitFailure, + hdsl2ShdslnoNeighborPresent, + hdsl2ShdslLocalPowerLoss + } + STATUS current + DESCRIPTION + "This group supports notifications of significant conditions + associated with HDSL2/SHDSL lines." + ::= { hdsl2ShdslGroups 12 } + +hdsl2ShdslSpanConfProfileGroup OBJECT-GROUP + OBJECTS + + + + { + hdsl2ShdslSpanConfWireInterface, + hdsl2ShdslSpanConfMinLineRate, + hdsl2ShdslSpanConfMaxLineRate, + hdsl2ShdslSpanConfPSD, + hdsl2ShdslSpanConfTransmissionMode, + hdsl2ShdslSpanConfRemoteEnabled, + hdsl2ShdslSpanConfPowerFeeding, + hdsl2ShdslSpanConfCurrCondTargetMarginDown, + hdsl2ShdslSpanConfWorstCaseTargetMarginDown, + hdsl2ShdslSpanConfCurrCondTargetMarginUp, + hdsl2ShdslSpanConfWorstCaseTargetMarginUp, + hdsl2ShdslSpanConfUsedTargetMargins, + hdsl2ShdslSpanConfReferenceClock, + hdsl2ShdslSpanConfLineProbeEnable, + hdsl2ShdslSpanConfProfileRowStatus + } + STATUS current + DESCRIPTION + "This group supports objects that constitute configuration + profiles for configuring span-related parameters in SHDSL + lines." + ::= { hdsl2ShdslGroups 13 } + +hdsl2ShdslWirePairGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslEndpointCurrTipRingReversal, + hdsl2ShdslEndpointCurrActivationState + } + STATUS current + DESCRIPTION + "This group supports objects that provide the status + of SHDSL-specific wire pairs." + ::= { hdsl2ShdslGroups 14 } + +hdsl2ShdslPayloadRateGroup OBJECT-GROUP + OBJECTS + { + hdsl2ShdslStatusMaxAttainablePayloadRate, + hdsl2ShdslStatusActualPayloadRate + } + STATUS current + DESCRIPTION + "This group supports objects for retrieving payload rates + that exclude any framing overhead." + ::= { hdsl2ShdslGroups 15 } + + + + +END diff --git a/mibs/ietf/HOST-RESOURCES-MIB b/mibs/ietf/HOST-RESOURCES-MIB new file mode 100644 index 0000000..0afd254 --- /dev/null +++ b/mibs/ietf/HOST-RESOURCES-MIB @@ -0,0 +1,1534 @@ +HOST-RESOURCES-MIB DEFINITIONS ::= BEGIN + +IMPORTS +MODULE-IDENTITY, OBJECT-TYPE, mib-2, +Integer32, Counter32, Gauge32, TimeTicks FROM SNMPv2-SMI + +TEXTUAL-CONVENTION, DisplayString, +TruthValue, DateAndTime, AutonomousType FROM SNMPv2-TC + +MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + +InterfaceIndexOrZero FROM IF-MIB; + +hostResourcesMibModule MODULE-IDENTITY + LAST-UPDATED "200003060000Z" -- 6 March 2000 + ORGANIZATION "IETF Host Resources MIB Working Group" + CONTACT-INFO + "Steve Waldbusser + Postal: Lucent Technologies, Inc. + 1213 Innsbruck Dr. + Sunnyvale, CA 94089 + USA + Phone: 650-318-1251 + Fax: 650-318-1633 + Email: waldbusser@lucent.com + In addition, the Host Resources MIB mailing list is + dedicated to discussion of this MIB. To join the + mailing list, send a request message to + hostmib-request@andrew.cmu.edu. The mailing list + address is hostmib@andrew.cmu.edu." + + DESCRIPTION + "This MIB is for use in managing host systems. The term + `host' is construed to mean any computer that communicates + with other similar computers attached to the internet and + that is directly used by one or more human beings. Although + this MIB does not necessarily apply to devices whose primary + function is communications services (e.g., terminal servers, + routers, bridges, monitoring equipment), such relevance is + not explicitly precluded. This MIB instruments attributes + common to all internet hosts including, for example, both + personal computers and systems that run variants of Unix." + + REVISION "200003060000Z" -- 6 March 2000 + DESCRIPTION + "Clarifications and bug fixes based on implementation + experience. This revision was also reformatted in the SMIv2 + format. The revisions made were: + + New RFC document standards: + Added Copyright notice, updated introduction to SNMP + Framework, updated references section, added reference to + RFC 2119, and added a meaningful Security Considerations + section. + + New IANA considerations section for registration of new types + + Conversion to new SMIv2 syntax for the following types and + macros: + Counter32, Integer32, Gauge32, MODULE-IDENTITY, + OBJECT-TYPE, TEXTUAL-CONVENTION, OBJECT-IDENTITY, + MODULE-COMPLIANCE, OBJECT-GROUP + + Used new Textual Conventions: + TruthValue, DateAndTime, AutonomousType, + InterfaceIndexOrZero + + Fixed typo in hrPrinterStatus. + + Added missing error bits to hrPrinterDetectedErrorState and + clarified confusion resulting from suggested mappings to + hrPrinterStatus. + Clarified that size of objects of type + InternationalDisplayString is number of octets, not number + of encoded symbols. + + Clarified the use of the following objects based on + implementation experience: + hrSystemInitialLoadDevice, hrSystemInitialLoadParameters, + hrMemorySize, hrStorageSize, hrStorageAllocationFailures, + hrDeviceErrors, hrProcessorLoad, hrNetworkIfIndex, + hrDiskStorageCapacity, hrSWRunStatus, hrSWRunPerfCPU, + and hrSWInstalledDate. + + Clarified implementation technique for hrSWInstalledTable. + + Used new AUGMENTS clause for hrSWRunPerfTable. + + Added Internationalization Considerations section. + +This revision published as RFC2790." + + REVISION "9910202200Z" -- 20 October, 1999 + DESCRIPTION + "The original version of this MIB, published as + RFC1514." + ::= { hrMIBAdminInfo 1 } + +host OBJECT IDENTIFIER ::= { mib-2 25 } + +hrSystem OBJECT IDENTIFIER ::= { host 1 } +hrStorage OBJECT IDENTIFIER ::= { host 2 } +hrDevice OBJECT IDENTIFIER ::= { host 3 } +hrSWRun OBJECT IDENTIFIER ::= { host 4 } +hrSWRunPerf OBJECT IDENTIFIER ::= { host 5 } +hrSWInstalled OBJECT IDENTIFIER ::= { host 6 } +hrMIBAdminInfo OBJECT IDENTIFIER ::= { host 7 } + +-- textual conventions + +KBytes ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Storage size, expressed in units of 1024 bytes." + SYNTAX Integer32 (0..2147483647) + +ProductID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is intended to identify the + manufacturer, model, and version of a specific + hardware or software product. It is suggested that + these OBJECT IDENTIFIERs are allocated such that all + products from a particular manufacturer are registered + under a subtree distinct to that manufacturer. In + addition, all versions of a product should be + registered under a subtree distinct to that product. + With this strategy, a management station may uniquely + determine the manufacturer and/or model of a product + whose productID is unknown to the management station. + Objects of this type may be useful for inventory + purposes or for automatically detecting + incompatibilities or version mismatches between + various hardware and software components on a system. + + For example, the product ID for the ACME 4860 66MHz + clock doubled processor might be: + enterprises.acme.acmeProcessors.a4860DX2.MHz66 + + A software product might be registered as: + enterprises.acme.acmeOperatingSystems.acmeDOS.six(6).one(1) + " + SYNTAX OBJECT IDENTIFIER + +-- unknownProduct will be used for any unknown ProductID +-- unknownProduct OBJECT IDENTIFIER ::= { 0 0 } + +InternationalDisplayString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model textual information + in some character set. A network management station + should use a local algorithm to determine which + character set is in use and how it should be + displayed. Note that this character set may be + encoded with more than one octet per symbol, but will + most often be NVT ASCII. When a size clause is + specified for an object of this type, the size refers + to the length in octets, not the number of symbols." + SYNTAX OCTET STRING + +-- The Host Resources System Group + +hrSystemUptime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time since this host was last + initialized. Note that this is different from + sysUpTime in the SNMPv2-MIB [RFC1907] because + sysUpTime is the uptime of the network management + portion of the system." + ::= { hrSystem 1 } + +hrSystemDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The host's notion of the local date and time of day." + ::= { hrSystem 2 } + +hrSystemInitialLoadDevice OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The index of the hrDeviceEntry for the device from + which this host is configured to load its initial + operating system configuration (i.e., which operating + system code and/or boot parameters). + + Note that writing to this object just changes the + configuration that will be used the next time the + operating system is loaded and does not actually cause + the reload to occur." + ::= { hrSystem 3 } + +hrSystemInitialLoadParameters OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE (0..128)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains the parameters (e.g. a pathname + and parameter) supplied to the load device when + requesting the initial operating system configuration + from that device. + + Note that writing to this object just changes the + configuration that will be used the next time the + operating system is loaded and does not actually cause + the reload to occur." + ::= { hrSystem 4 } + +hrSystemNumUsers OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user sessions for which this host is + storing state information. A session is a collection + of processes requiring a single act of user + authentication and possibly subject to collective job + control." + ::= { hrSystem 5 } + +hrSystemProcesses OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of process contexts currently loaded or + running on this system." + ::= { hrSystem 6 } + +hrSystemMaxProcesses OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of process contexts this system + can support. If there is no fixed maximum, the value + should be zero. On systems that have a fixed maximum, + this object can help diagnose failures that occur when + this maximum is reached." + ::= { hrSystem 7 } + +-- The Host Resources Storage Group + +-- Registration point for storage types, for use with hrStorageType. +-- These are defined in the HOST-RESOURCES-TYPES module. +hrStorageTypes OBJECT IDENTIFIER ::= { hrStorage 1 } + +hrMemorySize OBJECT-TYPE + SYNTAX KBytes + UNITS "KBytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of physical read-write main memory, + typically RAM, contained by the host." + ::= { hrStorage 2 } + +hrStorageTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrStorageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of logical storage areas on + the host. + + An entry shall be placed in the storage table for each + logical area of storage that is allocated and has + fixed resource limits. The amount of storage + represented in an entity is the amount actually usable + by the requesting entity, and excludes loss due to + formatting or file system reference information. + + These entries are associated with logical storage + areas, as might be seen by an application, rather than + physical storage entities which are typically seen by + an operating system. Storage such as tapes and + floppies without file systems on them are typically + not allocated in chunks by the operating system to + requesting applications, and therefore shouldn't + appear in this table. Examples of valid storage for + this table include disk partitions, file systems, ram + (for some architectures this is further segmented into + regular memory, extended memory, and so on), backing + store for virtual memory (`swap space'). + + This table is intended to be a useful diagnostic for + `out of memory' and `out of buffers' types of + failures. In addition, it can be a useful performance + monitoring tool for tracking memory, disk, or buffer + usage." + ::= { hrStorage 3 } + +hrStorageEntry OBJECT-TYPE + SYNTAX HrStorageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one logical storage area on + the host. As an example, an instance of the + hrStorageType object might be named hrStorageType.3" + INDEX { hrStorageIndex } + ::= { hrStorageTable 1 } + +HrStorageEntry ::= SEQUENCE { + hrStorageIndex Integer32, + hrStorageType AutonomousType, + hrStorageDescr DisplayString, + hrStorageAllocationUnits Integer32, + hrStorageSize Integer32, + hrStorageUsed Integer32, + hrStorageAllocationFailures Counter32 + } + +hrStorageIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each logical storage area + contained by the host." + ::= { hrStorageEntry 1 } + +hrStorageType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of storage represented by this entry." + ::= { hrStorageEntry 2 } + +hrStorageDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the type and instance of the storage + described by this entry." + ::= { hrStorageEntry 3 } + +hrStorageAllocationUnits OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size, in bytes, of the data objects allocated + from this pool. If this entry is monitoring sectors, + blocks, buffers, or packets, for example, this number + will commonly be greater than one. Otherwise this + number will typically be one." + ::= { hrStorageEntry 4 } + +hrStorageSize OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The size of the storage represented by this entry, in + units of hrStorageAllocationUnits. This object is + writable to allow remote configuration of the size of + the storage area in those cases where such an + operation makes sense and is possible on the + underlying system. For example, the amount of main + memory allocated to a buffer pool might be modified or + the amount of disk space allocated to virtual memory + might be modified." + ::= { hrStorageEntry 5 } + +hrStorageUsed OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of the storage represented by this entry + that is allocated, in units of + hrStorageAllocationUnits." + ::= { hrStorageEntry 6 } + +hrStorageAllocationFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests for storage represented by + this entry that could not be honored due to not enough + storage. It should be noted that as this object has a + SYNTAX of Counter32, that it does not have a defined + initial value. However, it is recommended that this + object be initialized to zero, even though management + stations must not depend on such an initialization." + ::= { hrStorageEntry 7 } + +-- The Host Resources Device Group +-- +-- The device group is useful for identifying and diagnosing the +-- devices on a system. The hrDeviceTable contains common +-- information for any type of device. In addition, some devices +-- have device-specific tables for more detailed information. More +-- such tables may be defined in the future for other device types. + +-- Registration point for device types, for use with hrDeviceType. + +-- These are defined in the HOST-RESOURCES-TYPES module. +hrDeviceTypes OBJECT IDENTIFIER ::= { hrDevice 1 } + +hrDeviceTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of devices contained by the + host." + ::= { hrDevice 2 } + +hrDeviceEntry OBJECT-TYPE + SYNTAX HrDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one device contained by the + host. As an example, an instance of the hrDeviceType + object might be named hrDeviceType.3" + INDEX { hrDeviceIndex } + ::= { hrDeviceTable 1 } + +HrDeviceEntry ::= SEQUENCE { + hrDeviceIndex Integer32, + hrDeviceType AutonomousType, + hrDeviceDescr DisplayString, + hrDeviceID ProductID, + hrDeviceStatus INTEGER, + hrDeviceErrors Counter32 + } + +hrDeviceIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each device contained by the host. + The value for each device must remain constant at + least from one re-initialization of the agent to the + next re-initialization." + ::= { hrDeviceEntry 1 } + +hrDeviceType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the type of device. + + If this value is + `hrDeviceProcessor { hrDeviceTypes 3 }' then an entry + exists in the hrProcessorTable which corresponds to + this device. + + If this value is + `hrDeviceNetwork { hrDeviceTypes 4 }', then an entry + exists in the hrNetworkTable which corresponds to this + device. + + If this value is + `hrDevicePrinter { hrDeviceTypes 5 }', then an entry + exists in the hrPrinterTable which corresponds to this + device. + + If this value is + `hrDeviceDiskStorage { hrDeviceTypes 6 }', then an + entry exists in the hrDiskStorageTable which + corresponds to this device." + ::= { hrDeviceEntry 2 } + +hrDeviceDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this device, including the + device's manufacturer and revision, and optionally, + its serial number." + ::= { hrDeviceEntry 3 } + +hrDeviceID OBJECT-TYPE + SYNTAX ProductID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product ID for this device." + ::= { hrDeviceEntry 4 } + +hrDeviceStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + running(2), + warning(3), + testing(4), + down(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the device described + by this row of the table. A value unknown(1) + indicates that the current state of the device is + unknown. running(2) indicates that the device is up + and running and that no unusual error conditions are + known. The warning(3) state indicates that agent has + been informed of an unusual error condition by the + operational software (e.g., a disk device driver) but + that the device is still 'operational'. An example + would be a high number of soft errors on a disk. A + value of testing(4), indicates that the device is not + available for use because it is in the testing state. + The state of down(5) is used only when the agent has + been informed that the device is not available for any + use." + ::= { hrDeviceEntry 5 } + +hrDeviceErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of errors detected on this device. It + should be noted that as this object has a SYNTAX of + Counter32, that it does not have a defined initial + value. However, it is recommended that this object be + initialized to zero, even though management stations + must not depend on such an initialization." + ::= { hrDeviceEntry 6 } + +hrProcessorTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrProcessorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of processors contained by the + host. + + Note that this table is potentially sparse: a + (conceptual) entry exists only if the correspondent + value of the hrDeviceType object is + `hrDeviceProcessor'." + ::= { hrDevice 3 } + +hrProcessorEntry OBJECT-TYPE + SYNTAX HrProcessorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one processor contained by + the host. The hrDeviceIndex in the index represents + the entry in the hrDeviceTable that corresponds to the + hrProcessorEntry. + + As an example of how objects in this table are named, + an instance of the hrProcessorFrwID object might be + named hrProcessorFrwID.3" + INDEX { hrDeviceIndex } + ::= { hrProcessorTable 1 } + +HrProcessorEntry ::= SEQUENCE { + hrProcessorFrwID ProductID, + hrProcessorLoad Integer32 + } + +hrProcessorFrwID OBJECT-TYPE + SYNTAX ProductID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product ID of the firmware associated with the + processor." + ::= { hrProcessorEntry 1 } + +hrProcessorLoad OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average, over the last minute, of the percentage + of time that this processor was not idle. + Implementations may approximate this one minute + smoothing period if necessary." + ::= { hrProcessorEntry 2 } + +hrNetworkTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrNetworkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of network devices contained + by the host. + Note that this table is potentially sparse: a + (conceptual) entry exists only if the correspondent + value of the hrDeviceType object is + `hrDeviceNetwork'." + ::= { hrDevice 4 } + +hrNetworkEntry OBJECT-TYPE + SYNTAX HrNetworkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one network device contained + by the host. The hrDeviceIndex in the index + represents the entry in the hrDeviceTable that + corresponds to the hrNetworkEntry. + + As an example of how objects in this table are named, + an instance of the hrNetworkIfIndex object might be + named hrNetworkIfIndex.3" + INDEX { hrDeviceIndex } + ::= { hrNetworkTable 1 } + +HrNetworkEntry ::= SEQUENCE { + hrNetworkIfIndex InterfaceIndexOrZero + } + +hrNetworkIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex which corresponds to this + network device. If this device is not represented in + the ifTable, then this value shall be zero." + ::= { hrNetworkEntry 1 } + +hrPrinterTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrPrinterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of printers local to the host. + + Note that this table is potentially sparse: a + (conceptual) entry exists only if the correspondent + value of the hrDeviceType object is + `hrDevicePrinter'." + ::= { hrDevice 5 } + +hrPrinterEntry OBJECT-TYPE + SYNTAX HrPrinterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one printer local to the + host. The hrDeviceIndex in the index represents the + entry in the hrDeviceTable that corresponds to the + hrPrinterEntry. + + As an example of how objects in this table are named, + an instance of the hrPrinterStatus object might be + named hrPrinterStatus.3" + INDEX { hrDeviceIndex } + ::= { hrPrinterTable 1 } + +HrPrinterEntry ::= SEQUENCE { + hrPrinterStatus INTEGER, + hrPrinterDetectedErrorState OCTET STRING + } + +hrPrinterStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + idle(3), + printing(4), + warmup(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this printer device." + ::= { hrPrinterEntry 1 } + +hrPrinterDetectedErrorState OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents any error conditions detected + by the printer. The error conditions are encoded as + bits in an octet string, with the following + definitions: + + Condition Bit # + + lowPaper 0 + noPaper 1 + lowToner 2 + noToner 3 + doorOpen 4 + jammed 5 + offline 6 + serviceRequested 7 + inputTrayMissing 8 + outputTrayMissing 9 + markerSupplyMissing 10 + outputNearFull 11 + outputFull 12 + inputTrayEmpty 13 + overduePreventMaint 14 + + Bits are numbered starting with the most significant + bit of the first byte being bit 0, the least + significant bit of the first byte being bit 7, the + most significant bit of the second byte being bit 8, + and so on. A one bit encodes that the condition was + detected, while a zero bit encodes that the condition + was not detected. + + This object is useful for alerting an operator to + specific warning or error conditions that may occur, + especially those requiring human intervention." + ::= { hrPrinterEntry 2 } + +hrDiskStorageTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrDiskStorageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of long-term storage devices + contained by the host. In particular, disk devices + accessed remotely over a network are not included + here. + + Note that this table is potentially sparse: a + (conceptual) entry exists only if the correspondent + value of the hrDeviceType object is + `hrDeviceDiskStorage'." + ::= { hrDevice 6 } + +hrDiskStorageEntry OBJECT-TYPE + SYNTAX HrDiskStorageEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one long-term storage device + contained by the host. The hrDeviceIndex in the index + represents the entry in the hrDeviceTable that + corresponds to the hrDiskStorageEntry. As an example, + an instance of the hrDiskStorageCapacity object might + be named hrDiskStorageCapacity.3" + INDEX { hrDeviceIndex } + ::= { hrDiskStorageTable 1 } + +HrDiskStorageEntry ::= SEQUENCE { + hrDiskStorageAccess INTEGER, + hrDiskStorageMedia INTEGER, + hrDiskStorageRemoveble TruthValue, + hrDiskStorageCapacity KBytes + } + +hrDiskStorageAccess OBJECT-TYPE + SYNTAX INTEGER { + readWrite(1), + readOnly(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication if this long-term storage device is + readable and writable or only readable. This should + reflect the media type, any write-protect mechanism, + and any device configuration that affects the entire + device." + ::= { hrDiskStorageEntry 1 } + +hrDiskStorageMedia OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + hardDisk(3), + floppyDisk(4), + opticalDiskROM(5), + opticalDiskWORM(6), -- Write Once Read Many + opticalDiskRW(7), + ramDisk(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the type of media used in this long- + term storage device." + ::= { hrDiskStorageEntry 2 } + +hrDiskStorageRemoveble OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes whether or not the disk media may be removed + from the drive." + ::= { hrDiskStorageEntry 3 } + +hrDiskStorageCapacity OBJECT-TYPE + SYNTAX KBytes + UNITS "KBytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total size for this long-term storage device. If + the media is removable and is currently removed, this + value should be zero." + ::= { hrDiskStorageEntry 4 } + +hrPartitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrPartitionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of partitions for long-term + storage devices contained by the host. In particular, + partitions accessed remotely over a network are not + included here." + ::= { hrDevice 7 } + +hrPartitionEntry OBJECT-TYPE + SYNTAX HrPartitionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one partition. The + hrDeviceIndex in the index represents the entry in the + hrDeviceTable that corresponds to the + hrPartitionEntry. + + As an example of how objects in this table are named, + an instance of the hrPartitionSize object might be + named hrPartitionSize.3.1" + INDEX { hrDeviceIndex, hrPartitionIndex } + ::= { hrPartitionTable 1 } + +HrPartitionEntry ::= SEQUENCE { + hrPartitionIndex Integer32, + hrPartitionLabel InternationalDisplayString, + hrPartitionID OCTET STRING, + hrPartitionSize KBytes, + hrPartitionFSIndex Integer32 + } + +hrPartitionIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each partition on this long-term + storage device. The value for each long-term storage + device must remain constant at least from one re- + initialization of the agent to the next re- + initialization." + ::= { hrPartitionEntry 1 } + +hrPartitionLabel OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this partition." + ::= { hrPartitionEntry 2 } + +hrPartitionID OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A descriptor which uniquely represents this partition + to the responsible operating system. On some systems, + this might take on a binary representation." + ::= { hrPartitionEntry 3 } + +hrPartitionSize OBJECT-TYPE + SYNTAX KBytes + UNITS "KBytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of this partition." + ::= { hrPartitionEntry 4 } + +hrPartitionFSIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the file system mounted on this + partition. If no file system is mounted on this + partition, then this value shall be zero. Note that + multiple partitions may point to one file system, + denoting that that file system resides on those + partitions. Multiple file systems may not reside on + one partition." + ::= { hrPartitionEntry 5 } + +-- The File System Table + +-- Registration point for popular File System types, +-- for use with hrFSType. These are defined in the +-- HOST-RESOURCES-TYPES module. +hrFSTypes OBJECT IDENTIFIER ::= { hrDevice 9 } + +hrFSTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrFSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of file systems local to this + host or remotely mounted from a file server. File + systems that are in only one user's environment on a + multi-user system will not be included in this table." + ::= { hrDevice 8 } + +hrFSEntry OBJECT-TYPE + SYNTAX HrFSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one file system local to + this host or remotely mounted from a file server. + File systems that are in only one user's environment + on a multi-user system will not be included in this + table. + + As an example of how objects in this table are named, + an instance of the hrFSMountPoint object might be + named hrFSMountPoint.3" + INDEX { hrFSIndex } + ::= { hrFSTable 1 } + +HrFSEntry ::= SEQUENCE { + hrFSIndex Integer32, + hrFSMountPoint InternationalDisplayString, + hrFSRemoteMountPoint InternationalDisplayString, + hrFSType AutonomousType, + hrFSAccess INTEGER, + hrFSBootable TruthValue, + hrFSStorageIndex Integer32, + hrFSLastFullBackupDate DateAndTime, + hrFSLastPartialBackupDate DateAndTime + } + +hrFSIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each file system local to this + host. The value for each file system must remain + constant at least from one re-initialization of the + agent to the next re-initialization." + ::= { hrFSEntry 1 } + +hrFSMountPoint OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The path name of the root of this file system." + ::= { hrFSEntry 2 } + +hrFSRemoteMountPoint OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the name and/or address of the + server that this file system is mounted from. This + may also include parameters such as the mount point on + the remote file system. If this is not a remote file + system, this string should have a length of zero." + ::= { hrFSEntry 3 } + +hrFSType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the type of this + file system." + ::= { hrFSEntry 4 } + +hrFSAccess OBJECT-TYPE + SYNTAX INTEGER { + readWrite(1), + readOnly(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication if this file system is logically + configured by the operating system to be readable and + writable or only readable. This does not represent + any local access-control policy, except one that is + applied to the file system as a whole." + ::= { hrFSEntry 5 } + +hrFSBootable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag indicating whether this file system is + bootable." + ::= { hrFSEntry 6 } + +hrFSStorageIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the hrStorageEntry that represents + information about this file system. If there is no + such information available, then this value shall be + zero. The relevant storage entry will be useful in + tracking the percent usage of this file system and + diagnosing errors that may occur when it runs out of + space." + ::= { hrFSEntry 7 } + +hrFSLastFullBackupDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The last date at which this complete file system was + copied to another storage device for backup. This + information is useful for ensuring that backups are + being performed regularly. + + If this information is not known, then this variable + shall have the value corresponding to January 1, year + 0000, 00:00:00.0, which is encoded as + (hex)'00 00 01 01 00 00 00 00'." + ::= { hrFSEntry 8 } + +hrFSLastPartialBackupDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The last date at which a portion of this file system + was copied to another storage device for backup. This + information is useful for ensuring that backups are + being performed regularly. + + If this information is not known, then this variable + shall have the value corresponding to January 1, year + 0000, 00:00:00.0, which is encoded as + (hex)'00 00 01 01 00 00 00 00'." + ::= { hrFSEntry 9 } + +-- The Host Resources Running Software Group +-- +-- The hrSWRunTable contains an entry for each distinct piece of +-- software that is running or loaded into physical or virtual +-- memory in preparation for running. This includes the host's +-- operating system, device drivers, and applications. + +hrSWOSIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrSWRunIndex for the hrSWRunEntry + that represents the primary operating system running + on this host. This object is useful for quickly and + uniquely identifying that primary operating system." + ::= { hrSWRun 1 } + +hrSWRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrSWRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of software running on the + host." + ::= { hrSWRun 2 } + +hrSWRunEntry OBJECT-TYPE + SYNTAX HrSWRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for one piece of software + running on the host Note that because the installed + software table only contains information for software + stored locally on this host, not every piece of + running software will be found in the installed + software table. This is true of software that was + loaded and run from a non-local source, such as a + network-mounted file system. + + As an example of how objects in this table are named, + an instance of the hrSWRunName object might be named + hrSWRunName.1287" + INDEX { hrSWRunIndex } + ::= { hrSWRunTable 1 } + +HrSWRunEntry ::= SEQUENCE { + hrSWRunIndex Integer32, + hrSWRunName InternationalDisplayString, + hrSWRunID ProductID, + hrSWRunPath InternationalDisplayString, + hrSWRunParameters InternationalDisplayString, + hrSWRunType INTEGER, + hrSWRunStatus INTEGER + } + +hrSWRunIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each piece of software running on + the host. Wherever possible, this should be the + system's native, unique identification number." + ::= { hrSWRunEntry 1 } + +hrSWRunName OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this running piece of + software, including the manufacturer, revision, and + the name by which it is commonly known. If this + software was installed locally, this should be the + same string as used in the corresponding + hrSWInstalledName." + ::= { hrSWRunEntry 2 } + +hrSWRunID OBJECT-TYPE + SYNTAX ProductID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product ID of this running piece of software." + ::= { hrSWRunEntry 3 } + +hrSWRunPath OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the location on long-term storage + (e.g. a disk drive) from which this software was + loaded." + ::= { hrSWRunEntry 4 } + +hrSWRunParameters OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the parameters supplied to this + software when it was initially loaded." + ::= { hrSWRunEntry 5 } + +hrSWRunType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + operatingSystem(2), + deviceDriver(3), + application(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this software." + ::= { hrSWRunEntry 6 } + +hrSWRunStatus OBJECT-TYPE + SYNTAX INTEGER { + running(1), + runnable(2), -- waiting for resource + -- (i.e., CPU, memory, IO) + notRunnable(3), -- loaded but waiting for event + invalid(4) -- not loaded + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of this running piece of software. + Setting this value to invalid(4) shall cause this + software to stop running and to be unloaded. Sets to + other values are not valid." + ::= { hrSWRunEntry 7 } + +-- The Host Resources Running Software Performance Group +-- +-- The hrSWRunPerfTable contains an entry corresponding to +-- each entry in the hrSWRunTable. + +hrSWRunPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrSWRunPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of running software + performance metrics." + ::= { hrSWRunPerf 1 } + +hrSWRunPerfEntry OBJECT-TYPE + SYNTAX HrSWRunPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry containing software performance + metrics. As an example, an instance of the + hrSWRunPerfCPU object might be named + hrSWRunPerfCPU.1287" + AUGMENTS { hrSWRunEntry } -- This table augments information in + -- the hrSWRunTable. + ::= { hrSWRunPerfTable 1 } + +HrSWRunPerfEntry ::= SEQUENCE { + hrSWRunPerfCPU Integer32, + hrSWRunPerfMem KBytes +} + +hrSWRunPerfCPU OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centi-seconds of the total system's CPU + resources consumed by this process. Note that on a + multi-processor system, this value may increment by + more than one centi-second in one centi-second of real + (wall clock) time." + ::= { hrSWRunPerfEntry 1 } + +hrSWRunPerfMem OBJECT-TYPE + SYNTAX KBytes + UNITS "KBytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total amount of real system memory allocated to + this process." + ::= { hrSWRunPerfEntry 2 } + +-- The Host Resources Installed Software Group +-- +-- The hrSWInstalledTable contains an entry for each piece +-- of software installed in long-term storage (e.g. a disk +-- drive) locally on this host. Note that this does not +-- include software loadable remotely from a network +-- server. +-- +-- Different implementations may track software in varying +-- ways. For example, while some implementations may track +-- executable files as distinct pieces of software, other +-- implementations may use other strategies such as keeping +-- track of software "packages" (e.g., related groups of files) +-- or keeping track of system or application "patches". +-- +-- This table is useful for identifying and inventorying +-- software on a host and for diagnosing incompatibility +-- and version mismatch problems between various pieces +-- of hardware and software. + +hrSWInstalledLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when an entry in the + hrSWInstalledTable was last added, renamed, or + deleted. Because this table is likely to contain many + entries, polling of this object allows a management + station to determine when re-downloading of the table + might be useful." + ::= { hrSWInstalled 1 } + +hrSWInstalledLastUpdateTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the hrSWInstalledTable + was last completely updated. Because caching of this + data will be a popular implementation strategy, + retrieval of this object allows a management station + to obtain a guarantee that no data in this table is + older than the indicated time." + ::= { hrSWInstalled 2 } + +hrSWInstalledTable OBJECT-TYPE + SYNTAX SEQUENCE OF HrSWInstalledEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table of software installed on this + host." + ::= { hrSWInstalled 3 } + +hrSWInstalledEntry OBJECT-TYPE + SYNTAX HrSWInstalledEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) entry for a piece of software + installed on this host. + + As an example of how objects in this table are named, + an instance of the hrSWInstalledName object might be + named hrSWInstalledName.96" + INDEX { hrSWInstalledIndex } + ::= { hrSWInstalledTable 1 } + +HrSWInstalledEntry ::= SEQUENCE { + hrSWInstalledIndex Integer32, + hrSWInstalledName InternationalDisplayString, + hrSWInstalledID ProductID, + hrSWInstalledType INTEGER, + hrSWInstalledDate DateAndTime +} + +hrSWInstalledIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each piece of software installed + on the host. This value shall be in the range from 1 + to the number of pieces of software installed on the + host." + ::= { hrSWInstalledEntry 1 } + +hrSWInstalledName OBJECT-TYPE + SYNTAX InternationalDisplayString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this installed piece of + software, including the manufacturer, revision, the + name by which it is commonly known, and optionally, + its serial number." + ::= { hrSWInstalledEntry 2 } + +hrSWInstalledID OBJECT-TYPE + SYNTAX ProductID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product ID of this installed piece of software." + ::= { hrSWInstalledEntry 3 } + +hrSWInstalledType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + operatingSystem(2), + deviceDriver(3), + application(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this software." + ::= { hrSWInstalledEntry 4 } + +hrSWInstalledDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last-modification date of this application as it + would appear in a directory listing. + + If this information is not known, then this variable + shall have the value corresponding to January 1, year + 0000, 00:00:00.0, which is encoded as + (hex)'00 00 01 01 00 00 00 00'." + ::= { hrSWInstalledEntry 5 } + +-- Conformance information + +hrMIBCompliances OBJECT IDENTIFIER ::= { hrMIBAdminInfo 2 } +hrMIBGroups OBJECT IDENTIFIER ::= { hrMIBAdminInfo 3 } + +-- Compliance Statements +hrMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The requirements for conformance to the Host Resources MIB." + MODULE -- this module + MANDATORY-GROUPS { hrSystemGroup, hrStorageGroup, + hrDeviceGroup } + + OBJECT hrSystemDate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hrSystemInitialLoadDevice + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hrSystemInitialLoadParameters + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hrStorageSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT hrFSLastFullBackupDate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hrFSLastPartialBackupDate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP hrSWRunGroup + DESCRIPTION + "The Running Software Group. Implementation + of this group is mandatory only when the + hrSWRunPerfGroup is implemented." + + OBJECT hrSWRunStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP hrSWRunPerfGroup + DESCRIPTION + "The Running Software Performance Group. + Implementation of this group is at the discretion + of the implementor." + + GROUP hrSWInstalledGroup + DESCRIPTION + "The Installed Software Group. + Implementation of this group is at the discretion + of the implementor." + + ::= { hrMIBCompliances 1 } + + hrSystemGroup OBJECT-GROUP + OBJECTS { + hrSystemUptime, hrSystemDate, + hrSystemInitialLoadDevice, + hrSystemInitialLoadParameters, + hrSystemNumUsers, hrSystemProcesses, + hrSystemMaxProcesses + } + STATUS current + DESCRIPTION + "The Host Resources System Group." + ::= { hrMIBGroups 1 } + + hrStorageGroup OBJECT-GROUP + OBJECTS { + hrMemorySize, hrStorageIndex, hrStorageType, + hrStorageDescr, hrStorageAllocationUnits, + hrStorageSize, hrStorageUsed, + hrStorageAllocationFailures + } + STATUS current + DESCRIPTION + "The Host Resources Storage Group." + ::= { hrMIBGroups 2 } + + hrDeviceGroup OBJECT-GROUP + OBJECTS { + hrDeviceIndex, hrDeviceType, hrDeviceDescr, + hrDeviceID, hrDeviceStatus, hrDeviceErrors, + hrProcessorFrwID, hrProcessorLoad, + hrNetworkIfIndex, hrPrinterStatus, + hrPrinterDetectedErrorState, + hrDiskStorageAccess, hrDiskStorageMedia, + hrDiskStorageRemoveble, hrDiskStorageCapacity, + hrPartitionIndex, hrPartitionLabel, + hrPartitionID, hrPartitionSize, + hrPartitionFSIndex, hrFSIndex, hrFSMountPoint, + hrFSRemoteMountPoint, hrFSType, hrFSAccess, + hrFSBootable, hrFSStorageIndex, + hrFSLastFullBackupDate, + hrFSLastPartialBackupDate + } + STATUS current + DESCRIPTION + "The Host Resources Device Group." + ::= { hrMIBGroups 3 } + + hrSWRunGroup OBJECT-GROUP + OBJECTS { + hrSWOSIndex, hrSWRunIndex, hrSWRunName, + hrSWRunID, hrSWRunPath, hrSWRunParameters, + hrSWRunType, hrSWRunStatus + } + STATUS current + DESCRIPTION + "The Host Resources Running Software Group." + ::= { hrMIBGroups 4 } + + hrSWRunPerfGroup OBJECT-GROUP + OBJECTS { hrSWRunPerfCPU, hrSWRunPerfMem } + STATUS current + DESCRIPTION + "The Host Resources Running Software + Performance Group." + ::= { hrMIBGroups 5 } + + hrSWInstalledGroup OBJECT-GROUP + OBJECTS { + hrSWInstalledLastChange, + hrSWInstalledLastUpdateTime, + hrSWInstalledIndex, hrSWInstalledName, + hrSWInstalledID, hrSWInstalledType, + hrSWInstalledDate + } + STATUS current + DESCRIPTION + "The Host Resources Installed Software Group." + ::= { hrMIBGroups 6 } + +END diff --git a/mibs/ietf/HOST-RESOURCES-TYPES b/mibs/ietf/HOST-RESOURCES-TYPES new file mode 100644 index 0000000..b32b9c2 --- /dev/null +++ b/mibs/ietf/HOST-RESOURCES-TYPES @@ -0,0 +1,387 @@ +HOST-RESOURCES-TYPES DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY FROM SNMPv2-SMI + hrMIBAdminInfo, hrStorage, hrDevice FROM HOST-RESOURCES-MIB; + +hostResourcesTypesModule MODULE-IDENTITY + LAST-UPDATED "200003060000Z" -- 6 March, 2000 + ORGANIZATION "IETF Host Resources MIB Working Group" + CONTACT-INFO + "Steve Waldbusser + Postal: Lucent Technologies, Inc. + 1213 Innsbruck Dr. + Sunnyvale, CA 94089 + USA + Phone: 650-318-1251 + Fax: 650-318-1633 + Email: waldbusser@ins.com + + In addition, the Host Resources MIB mailing list is dedicated + to discussion of this MIB. To join the mailing list, send a + request message to hostmib-request@andrew.cmu.edu. The mailing + list address is hostmib@andrew.cmu.edu." + DESCRIPTION + "This MIB module registers type definitions for + storage types, device types, and file system types. + After the initial revision, this module will be + maintained by IANA." + REVISION "200003060000Z" -- 6 March 2000 + DESCRIPTION + "The original version of this module, published as RFC + 2790." + ::= { hrMIBAdminInfo 4 } + +-- Registrations for some storage types, for use with hrStorageType +hrStorageTypes OBJECT IDENTIFIER ::= { hrStorage 1 } + +hrStorageOther OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used when no other defined + type is appropriate." + ::= { hrStorageTypes 1 } + +hrStorageRam OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for RAM." + ::= { hrStorageTypes 2 } + +hrStorageVirtualMemory OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for virtual memory, + temporary storage of swapped or paged memory." + ::= { hrStorageTypes 3 } + +hrStorageFixedDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for non-removable + rigid rotating magnetic storage devices." + ::= { hrStorageTypes 4 } + +hrStorageRemovableDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for removable rigid + rotating magnetic storage devices." + ::= { hrStorageTypes 5 } + +hrStorageFloppyDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for non-rigid rotating + magnetic storage devices." + ::= { hrStorageTypes 6 } + +hrStorageCompactDisc OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for read-only rotating + optical storage devices." + ::= { hrStorageTypes 7 } + +hrStorageRamDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for a file system that + is stored in RAM." + ::= { hrStorageTypes 8 } + +hrStorageFlashMemory OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for flash memory." + ::= { hrStorageTypes 9 } + +hrStorageNetworkDisk OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The storage type identifier used for a + networked file system." + ::= { hrStorageTypes 10 } + +-- Registrations for some device types, for use with hrDeviceType +hrDeviceTypes OBJECT IDENTIFIER ::= { hrDevice 1 } + +hrDeviceOther OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used when no other defined + type is appropriate." + ::= { hrDeviceTypes 1 } + +hrDeviceUnknown OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used when the device type is + unknown." + ::= { hrDeviceTypes 2 } + +hrDeviceProcessor OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a CPU." + ::= { hrDeviceTypes 3 } + +hrDeviceNetwork OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a network interface." + ::= { hrDeviceTypes 4 } + +hrDevicePrinter OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a printer." + ::= { hrDeviceTypes 5 } + +hrDeviceDiskStorage OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a disk drive." + ::= { hrDeviceTypes 6 } + +hrDeviceVideo OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a video device." + ::= { hrDeviceTypes 10 } + +hrDeviceAudio OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for an audio device." + ::= { hrDeviceTypes 11 } + +hrDeviceCoprocessor OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a co-processor." + ::= { hrDeviceTypes 12 } + +hrDeviceKeyboard OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a keyboard device." + ::= { hrDeviceTypes 13 } + +hrDeviceModem OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a modem." + ::= { hrDeviceTypes 14 } + +hrDeviceParallelPort OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a parallel port." + ::= { hrDeviceTypes 15 } + +hrDevicePointing OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a pointing device + (e.g., a mouse)." + ::= { hrDeviceTypes 16 } + +hrDeviceSerialPort OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a serial port." + ::= { hrDeviceTypes 17 } + +hrDeviceTape OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a tape storage device." + ::= { hrDeviceTypes 18 } + +hrDeviceClock OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a clock device." + ::= { hrDeviceTypes 19 } + +hrDeviceVolatileMemory OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a volatile memory + storage device." + ::= { hrDeviceTypes 20 } + +hrDeviceNonVolatileMemory OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The device type identifier used for a non-volatile memory + storage device." + ::= { hrDeviceTypes 21 } + +-- Registrations for some popular File System types, +-- for use with hrFSType. +hrFSTypes OBJECT IDENTIFIER ::= { hrDevice 9 } + +hrFSOther OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used when no other + defined type is appropriate." + ::= { hrFSTypes 1 } + +hrFSUnknown OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used when the type of + file system is unknown." + ::= { hrFSTypes 2 } + +hrFSBerkeleyFFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Berkeley Fast File System." + ::= { hrFSTypes 3 } + +hrFSSys5FS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + System V File System." + ::= { hrFSTypes 4 } + +hrFSFat OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for + DOS's FAT file system." + ::= { hrFSTypes 5 } + +hrFSHPFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for OS/2's + High Performance File System." + ::= { hrFSTypes 6 } + +hrFSHFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Macintosh Hierarchical File System." + ::= { hrFSTypes 7 } + +hrFSMFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Macintosh File System." + ::= { hrFSTypes 8 } + +hrFSNTFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Windows NT File System." + ::= { hrFSTypes 9 } + +hrFSVNode OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + VNode File System." + ::= { hrFSTypes 10 } + +hrFSJournaled OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Journaled File System." + ::= { hrFSTypes 11 } + +hrFSiso9660 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + ISO 9660 File System for CD's." + ::= { hrFSTypes 12 } + +hrFSRockRidge OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + RockRidge File System for CD's." + ::= { hrFSTypes 13 } + +hrFSNFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + NFS File System." + ::= { hrFSTypes 14 } + +hrFSNetware OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Netware File System." + ::= { hrFSTypes 15 } + +hrFSAFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Andrew File System." + ::= { hrFSTypes 16 } + +hrFSDFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + OSF DCE Distributed File System." + ::= { hrFSTypes 17 } + +hrFSAppleshare OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + AppleShare File System." + ::= { hrFSTypes 18 } + +hrFSRFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + RFS File System." + ::= { hrFSTypes 19 } + +hrFSDGCFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Data General DGCFS." + ::= { hrFSTypes 20 } + +hrFSBFS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + SVR4 Boot File System." + ::= { hrFSTypes 21 } + +hrFSFAT32 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Windows FAT32 File System." + ::= { hrFSTypes 22 } + +hrFSLinuxExt2 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The file system type identifier used for the + Linux EXT2 File System." + ::= { hrFSTypes 23 } + +END diff --git a/mibs/ietf/HPR-IP-MIB b/mibs/ietf/HPR-IP-MIB new file mode 100644 index 0000000..778904a --- /dev/null +++ b/mibs/ietf/HPR-IP-MIB @@ -0,0 +1,514 @@ +HPR-IP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY,OBJECT-TYPE, Counter32 + FROM SNMPv2-SMI + DisplayString, RowStatus, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnaControlPointName + FROM APPN-MIB + hprObjects, hprCompliances, hprGroups + FROM HPR-MIB ; + +hprIp MODULE-IDENTITY + LAST-UPDATED "9809240000Z" -- September 24, 1998 + ORGANIZATION "IETF SNA NAU MIB WG / AIW APPN MIBs SIG" + CONTACT-INFO + " + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 4205 S. Miami Boulevard + BRQA/501 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@us.ibm.com + " + DESCRIPTION + "The MIB module for HPR over IP. This module contains two + groups: + + - the HPR over IP Monitoring Group provides a count of the UDP + packets sent by a link station for each APPN traffic type. + + - the HPR over IP Configuration Group provides for reading and + setting the mappings between APPN traffic types and TOS + Precedence settings in the IP header. These mappings are + configured at the APPN port level, and are inherited by the + APPN connection networks and link stations associated with an + APPN port. A port-level mapping can, however, be overridden + for a particular connection network or link station." + REVISION "9809240000Z" -- September 24, 1998 + DESCRIPTION + "Initial version, Published as RFC 2584" + + ::= { hprObjects 5 } + +-- ********************************************************************* +-- Textual Conventions +-- ********************************************************************* +AppnTrafficType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "APPN traffic type. The first four values correspond + to APPN transmission priorities (network, high, medium and + low), while the fifth is used for both LLC commands (XID, + TEST, DISC, and DM) and function-routed NLPs (XID_DONE_RQ + and XID_DONE_RSP)." + + SYNTAX INTEGER { low (1), + medium (2), + high (3), + network (4), + llcAndFnRoutedNlp (5) } + +AppnTOSPrecedence ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A DisplayString representing the setting of the three TOS + Precedence bits in the IP Type of Service field for this APPN + traffic type. The HPR over IP architecture specifies the + following default mapping: + + APPN traffic type IP TOS Precedence bits + ------------------ ---------------------- + Network 110 + High 100 + Medium 010 + Low 001 + LLC commands, etc. 110 + " + + SYNTAX DisplayString (SIZE(3)) + +-- ******************************************************************* + +-- hprObjects OBJECT IDENTIFIER ::= { hprMIB 1 } +-- ******************************************************************* + +-- ******************************************************************* +-- HPR over IP Monitoring Group +-- +-- This group contains a single table, the hprIsActiveLsTable, +-- providing a count of UDP packets sent with each type of +-- APPN traffic on each active link supporting HPR over IP. +-- ******************************************************************* +hprIpActiveLsTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprIpActiveLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HPR/IP active link station table. This table provides + counts of the number of UDP packets sent for each APPN + traffic type." + + ::= { hprIp 1 } + +hprIpActiveLsEntry OBJECT-TYPE + SYNTAX HprIpActiveLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HPR/IP link station table." + + INDEX { hprIpActiveLsLsName, + hprIpActiveLsAppnTrafficType } + + ::= { hprIpActiveLsTable 1 } + +HprIpActiveLsEntry ::= SEQUENCE { + hprIpActiveLsLsName DisplayString, + hprIpActiveLsAppnTrafficType AppnTrafficType, + hprIpActiveLsUdpPackets Counter32 } + +hprIpActiveLsLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for the link station. If this + object has the same value as the appnLsName in the APPN MIB, + then the two objects are referring to the same APPN link + station." + ::= { hprIpActiveLsEntry 1 } + +hprIpActiveLsAppnTrafficType OBJECT-TYPE + SYNTAX AppnTrafficType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPN traffic type being sent through the link station." + + ::= { hprIpActiveLsEntry 2 } + +hprIpActiveLsUdpPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of outgoing UDP packets carrying this type of APPN + traffic. A discontinuity in the counter is indicated by the + appnLsCounterDisconTime object in the APPN MIB." + + ::= { hprIpActiveLsEntry 3 } + + +-- ******************************************************************* +-- HPR over IP Configuration Group +-- +-- This group contains three tables for reading and setting the +-- mapping between APPN traffic types and values for the TOS +-- Precedence bits in the IP header. hprIpAppnPortTOSPrecedence +-- represents the APPN port-level mapping. This mapping can be +-- overridden for an individual link station or an individual +-- connection network via, respectively, the hprIpLsTOSPrecedence +-- and the hprIpCnTOSPrecedence objects. +-- ******************************************************************* + +hprIpAppnPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprIpAppnPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HPR/IP APPN port table. This table supports reading and + setting the mapping between APPN traffic types and TOS + Precedence settings for all the link stations at this APPN + port. This mapping can be overridden for an individual link + station or an individual connection network via, respectively, + the hprIpLsTOSPrecedence and the hprIpCnTOSPrecedence objects." + + ::= { hprIp 2 } + +hprIpAppnPortEntry OBJECT-TYPE + SYNTAX HprIpAppnPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HPR/IP APPN port table. Entries exist for + every APPN port defined to support HPR over IP." + + INDEX { hprIpAppnPortName, + hprIpAppnPortAppnTrafficType } + + ::= { hprIpAppnPortTable 1 } + +HprIpAppnPortEntry ::= SEQUENCE { + hprIpAppnPortName DisplayString, + hprIpAppnPortAppnTrafficType AppnTrafficType, + hprIpAppnPortTOSPrecedence AppnTOSPrecedence } + +hprIpAppnPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for this APPN port. If this + object has the same value as the appnPortName in the APPN MIB, + then the two objects are referring to the same APPN port." + + ::= { hprIpAppnPortEntry 1 } + +hprIpAppnPortAppnTrafficType OBJECT-TYPE + SYNTAX AppnTrafficType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPN traffic type sent through the port." + + ::= { hprIpAppnPortEntry 2 } + +hprIpAppnPortTOSPrecedence OBJECT-TYPE + SYNTAX AppnTOSPrecedence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A setting for the three TOS Precedence bits in the IP Type of + Service field for this APPN traffic type. + + When this value is changed via a Set operation, the new setting + for the TOS Precedence bits takes effect immediately, rather + than waiting for some event such as reinitialization of the + port or of the APPN node itself." + + ::= { hprIpAppnPortEntry 3 } + + +-- ******************************************************************* +hprIpLsTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprIpLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HPR/IP link station table. Values for TOS Precedence at + the link station level override those at the level of the + containing port. If there is no entry in this table for a + given link station, then that link station inherits its TOS + Precedence values from its port." + + ::= { hprIp 3 } + +hprIpLsEntry OBJECT-TYPE + SYNTAX HprIpLsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HPR/IP link station table." + + INDEX { hprIpLsLsName, + hprIpLsAppnTrafficType } + + ::= { hprIpLsTable 1 } + +HprIpLsEntry ::= SEQUENCE { + hprIpLsLsName DisplayString, + hprIpLsAppnTrafficType AppnTrafficType, + hprIpLsTOSPrecedence AppnTOSPrecedence, + hprIpLsRowStatus RowStatus } + +hprIpLsLsName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Administratively assigned name for the link station. If this + object has the same value as the appnLsName in the APPN MIB, + then the two objects are referring to the same APPN link + station." + ::= { hprIpLsEntry 1 } + +hprIpLsAppnTrafficType OBJECT-TYPE + SYNTAX AppnTrafficType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPN traffic type sent through the link station." + + ::= { hprIpLsEntry 2 } + +hprIpLsTOSPrecedence OBJECT-TYPE + SYNTAX AppnTOSPrecedence + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A setting for the three TOS Precedence bits in the IP Type of + Service field for this APPN traffic type. + + When this value is changed via a Set operation, the new setting + for the TOS Precedence bits takes effect immediately, rather + than waiting for some event such as reinitialization of the + port or of the APPN node itself." + + ::= { hprIpLsEntry 3 } + +hprIpLsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted in the + hprIpLsTable. As soon as an entry becomes active, the mapping + between APPN traffic types and TOS Precedence settings that it + specifies becomes effective. + + The value of the other accessible object in this entry, + hprIpLsTOSPrecedence, can be changed via a Set operation when + this object's value is active(1). + + An entry in this table is deleted by setting this object to + destroy(6). Deleting an entry in this table causes the + link station to revert to the default TOS Precedence + mapping for its port." + + ::= { hprIpLsEntry 4 } + +-- ******************************************************************* +hprIpCnTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprIpCnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The HPR/IP connection network table. Values for TOS + Precedence at the connection network level override those at + the level of the containing port. If there is no entry in + this table for a given connection network, then that + connection network inherits its TOS Precedence values from + its port. + + A node may have connections to a given connection network + through multiple ports. There is no provision in the HPR-IP + architecture for variations in TOS Precedence values for + a single connection network based on the port through which + traffic is flowing to the connection network. Thus an entry + in this table overrides the port-level settings for all the + ports through which the node can reach the connection + network." + + ::= { hprIp 4 } + +hprIpCnEntry OBJECT-TYPE + SYNTAX HprIpCnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of the HPR/IP connection network table." + + INDEX { hprIpCnVrnName, + hprIpCnAppnTrafficType } + + ::= { hprIpCnTable 1 } + +HprIpCnEntry ::= SEQUENCE { + hprIpCnVrnName SnaControlPointName, + hprIpCnAppnTrafficType AppnTrafficType, + hprIpCnTOSPrecedence AppnTOSPrecedence, + hprIpCnRowStatus RowStatus } + +hprIpCnVrnName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "SNA control point name of the virtual routing node (VRN) that + identifies the connection network in the APPN topology + database. If this object has the same value as the appnVrnName + in the APPN MIB, then the two objects are referring + to the same APPN VRN." + + ::= { hprIpCnEntry 1 } + +hprIpCnAppnTrafficType OBJECT-TYPE + SYNTAX AppnTrafficType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "APPN traffic type sent to this connection network." + + ::= { hprIpCnEntry 2 } + +hprIpCnTOSPrecedence OBJECT-TYPE + SYNTAX AppnTOSPrecedence + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A setting for the three TOS Precedence bits in the IP Type of + Service field for this APPN traffic type. This setting applies + to all traffic sent to this connection network by this node, + regardless of the port through which the traffic is sent. + + When this value is changed via a Set operation, the new setting + for the TOS Precedence bits takes effect immediately, rather + than waiting for some event such as reinitialization of a + port or of the APPN node itself." + ::= { hprIpCnEntry 3 } + +hprIpCnRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted in the + hprIpCnTable. As soon as an entry becomes active, the mapping + between APPN traffic types and TOS Precedence settings that it + specifies becomes effective. + + The value of the other accessible object in this entry, + hprIpCnTOSPrecedence, can be changed via a Set operation when + this object's value is active(1). + + An entry in this table is deleted by setting this object to + destroy(6). Deleting an entry in this table causes the + connection network to revert to the default TOS Precedence + mapping for each port through which it is accessed." + + ::= { hprIpCnEntry 4 } + + +-- ******************************************************************* +-- Conformance Statement +-- ******************************************************************* +-- Definitions imported from the HPR MIB: +-- hprConformance OBJECT IDENTIFIER ::= { hprMIB 2 } +-- hprCompliances OBJECT IDENTIFIER ::= { hprConformance 1 } +-- hprGroups OBJECT IDENTIFIER ::= { hprConformance 2 } + +-- Compliance statements +hprIpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for the HPR over IP MIB module." + MODULE -- this module + + -- Conditionally mandatory groups + GROUP hprIpMonitoringGroup + DESCRIPTION + "The hprIpMonitoringGroup is mandatory for APPN implementations + supporting HPR over IP." + + GROUP hprIpConfigurationGroup + DESCRIPTION + "The hprIpConfigurationGroup is mandatory for APPN + implementations supporting HPR over IP. It may, however, + be implemented as a collection of read-only objects." + + OBJECT hprIpAppnPortTOSPrecedence + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hprIpLsTOSPrecedence + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hprIpLsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT hprIpCnTOSPrecedence + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT hprIpCnRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + +::= { hprCompliances 2 } + +-- Group definitions + +hprIpMonitoringGroup OBJECT-GROUP + OBJECTS { hprIpActiveLsUdpPackets } + STATUS current + DESCRIPTION + "An object for counting outgoing HPR/IP traffic for each APPN + traffic type." + +::= { hprGroups 5 } + +hprIpConfigurationGroup OBJECT-GROUP + OBJECTS { hprIpAppnPortTOSPrecedence, + hprIpLsTOSPrecedence, + hprIpLsRowStatus, + hprIpCnTOSPrecedence, + hprIpCnRowStatus } + STATUS current + DESCRIPTION + "A collection of HPR/IP objects representing the mappings + between APPN traffic types and TOS Precedence bits at the APPN + port, APPN link station, and APPN connection network levels." + +::= { hprGroups 6 } + +END diff --git a/mibs/ietf/HPR-MIB b/mibs/ietf/HPR-MIB new file mode 100644 index 0000000..062cd87 --- /dev/null +++ b/mibs/ietf/HPR-MIB @@ -0,0 +1,1346 @@ +HPR-MIB DEFINITIONS ::= BEGIN + + IMPORTS + DisplayString, DateAndTime, TimeStamp, TEXTUAL-CONVENTION + FROM SNMPv2-TC + + Counter32, Gauge32, Unsigned32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + snanauMIB + FROM SNA-NAU-MIB + + SnaControlPointName + FROM APPN-MIB; + +hprMIB MODULE-IDENTITY + LAST-UPDATED "9705140000Z" + ORGANIZATION "AIW APPN / HPR MIB SIG" + CONTACT-INFO + + " + + Bob Clouston + Cisco Systems + 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709, USA + Tel: 1 919 472 2333 + E-mail: clouston@cisco.com + + Bob Moore + IBM Corporation + 800 Park Offices Drive + RHJA/664 + P.O. Box 12195 + Research Triangle Park, NC 27709, USA + Tel: 1 919 254 4436 + E-mail: remoore@ralvm6.vnet.ibm.com + " + DESCRIPTION + "This is the MIB module for objects used to + manage network devices with HPR capabilities." +::= { snanauMIB 6 } +-- snanauMIB ::= { mib-2 34 } + +-- ********************************************************************* +-- Textual Conventions +-- ********************************************************************* +-- SnaControlPointName is imported from the APPN MIB + +HprNceTypes ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A bit string identifying the set of functions provided by a + network connection endpoint (NCE). The following values are + defined: + + bit 0: control point + bit 1: logical unit + bit 2: boundary function + bit 3: route setup + " + + SYNTAX BITS { controlPoint(0), + logicalUnit(1), + boundaryFunction(2), + routeSetup(3) } + +HprRtpCounter ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object providing statistics for an RTP connection. A + Management Station can detect discontinuities in this counter + by monitoring the correspondingly indexed + hprRtpCounterDisconTime object." + + SYNTAX Counter32 + +-- ********************************************************************* + hprObjects OBJECT IDENTIFIER ::= { hprMIB 1 } +-- ********************************************************************* + +-- ********************************************************************* +hprGlobal OBJECT IDENTIFIER ::= { hprObjects 1 } +-- ********************************************************************* +-- The hprGlobal group applies to both intermediate and end nodes. +-- ********************************************************************* + +hprNodeCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for the APPN node + where this HPR implementation resides. If this object has + the same value as the appnNodeCpName object in the APPN MIB, + then the two objects are referring to the same APPN node." + + ::= { hprGlobal 1 } + +hprOperatorPathSwitchSupport OBJECT-TYPE + SYNTAX INTEGER { + notSupported(1), + switchTriggerSupported(2), + switchToPathSupported(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates an implementation's level of support + for an operator-requested path switch. + + notSupported(1) - the agent does not support + operator-requested path switches + switchTriggerSupported(2) - the agent supports a 'switch + path now' command from an + operator, but not a command to + switch to a specified path + switchToPathSupported(3) - the agent supports both a + 'switch path now' command and a + command to switch to a specified + path. Note that the latter + command is not available via + this MIB; a system that supports + it must do so via other means, + such as a local operator + interface." + + ::= { hprGlobal 2 } + +-- ********************************************************************* +hprAnrRouting OBJECT IDENTIFIER ::= { hprObjects 2 } +-- ********************************************************************* + +hprAnrsAssigned OBJECT-TYPE + SYNTAX Counter32 + UNITS "ANR labels" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of ANR labels assigned by this node since it was + last re-initialized. A Management Station can detect + discontinuities in this counter by monitoring the + appnNodeCounterDisconTime object in the APPN MIB." + + ::= { hprAnrRouting 1 } + +hprAnrCounterState OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used for a network management station to turn + on/off the counting of ANR packets in the hprAnrRoutingTable. + The initial value of this object is an implementation choice. + + notActive(1) - the counter hprAnrPacketsReceived + returns no meaningful value + active(2) - the counter hprAnrPacketsReceived is + being incremented and is returning + meaningful values" + + ::= { hprAnrRouting 2 } + +hprAnrCounterStateTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the hprAnrCounterState object last changed its + value. The initial value returned by this object is the time + at which the APPN node instrumented with this MIB was last + brought up." + + ::= { hprAnrRouting 3 } + +hprAnrRoutingTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprAnrRoutingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ANR Routing table provides a means of correlating an + incoming ANR label (i.e., one assigned by this node) with the + TG over which a packet containing the label will be forwarded. + When the ANR label identifies a local NCE, the hprAnrOutTgDest + and hprAnrOutTgNum objects have no meaning. The table also + contains an object to count the number of packets received + with a given ANR label." + + ::= { hprAnrRouting 4 } + +hprAnrRoutingEntry OBJECT-TYPE + SYNTAX HprAnrRoutingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ANR label is used to index this table." + + INDEX { hprAnrLabel } + + ::= { hprAnrRoutingTable 1 } + +HprAnrRoutingEntry ::= SEQUENCE { + hprAnrLabel OCTET STRING, + hprAnrType INTEGER, + hprAnrOutTgDest DisplayString, + hprAnrOutTgNum INTEGER, + hprAnrPacketsReceived Counter32, + hprAnrCounterDisconTime TimeStamp + } + +hprAnrLabel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first ANR label in an incoming packet." + + ::= { hprAnrRoutingEntry 1 } + +hprAnrType OBJECT-TYPE + SYNTAX INTEGER { + nce(1), + tg(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object indicating whether an ANR label assigned by this + node identifies a local NCE or a TG on which outgoing packets + are forwarded. + + nce(1) - the ANR label identifies a local NCE. In this + case the hprAnrOutTgDest and hprAnrOutTgNum + objects have no meaning. + tg(2) - the ANR label identifies a TG." + + ::= { hprAnrRoutingEntry 2 } + +hprAnrOutTgDest OBJECT-TYPE + SYNTAX DisplayString (SIZE (0 | 3..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination node for the TG over which packets with this ANR + label are forwarded. This is the fully qualified name of an + APPN network node or end node, formatted according to the + SnaControlPointName textual convention. If the ANR label + identifies a local NCE, then this object returns a zero-length + string. + + This object corresponds to the appnLocalTgDest object in the + APPN MIB." + + ::= { hprAnrRoutingEntry 3 } + +hprAnrOutTgNum OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of the TG over which packets with this ANR label are + forwarded. If the ANR label identifies a local NCE, then this + object returns the value 0, since 0 is not a valid TG number + for a TG that supports HPR. + + This object corresponds to the appnLocalTgNum object in the + APPN MIB." + + ::= { hprAnrRoutingEntry 4 } + +hprAnrPacketsReceived OBJECT-TYPE + SYNTAX Counter32 + UNITS "ANR packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets received with this ANR label as their + first label. + + A Management Station can detect discontinuities in this + counter by monitoring the hprAnrCounterDisconTime object in + the same row." + + ::= { hprAnrRoutingEntry 5 } + +hprAnrCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the + hprAnrPacketsReceived counter for this ANR label last + experienced a discontinuity. This will be the more recent of + two times: the time at which the ANR label was associated with + either an outgoing TG or a local NCE, or the time at which the + ANR counters were last turned on or off." + + ::= { hprAnrRoutingEntry 6 } + +-- ********************************************************************* +hprTransportUser OBJECT IDENTIFIER ::= { hprObjects 3 } +-- ********************************************************************* +-- Transport Service User (TU) Table: (RTP Connection Users) +-- +-- There will be several users of the HPR transport and each HPR node +-- shall maintain a table of these users. +-- ********************************************************************* + +hprNceTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprNceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Network Connection Endpoint (NCE) table." + + ::= { hprTransportUser 1 } + +hprNceEntry OBJECT-TYPE + SYNTAX HprNceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The NCE ID is used to index this table." + + INDEX { hprNceId } + + ::= { hprNceTable 1 } + +HprNceEntry ::= SEQUENCE { + hprNceId OCTET STRING, + hprNceType HprNceTypes, + hprNceDefault HprNceTypes, + hprNceInstanceId OCTET STRING + } + +hprNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Network Connection Endpoint (NCE) ID. NCEs identify + Control Points (Cp), Logical Units (Lu), HPR Boundary + Functions (Bf) and Route Setup (Rs) Functions. A value for + this object can be retrieved from any of the following + objects in the APPN MIB: + + - appnLsCpCpNceId + - appnLsRouteNceId + - appnLsBfNceId + - appnIsInRtpNceId + - appnIsRtpNceId + + In each case this value identifies a row in this table + containing information related to that in the APPN MIB." + + ::= { hprNceEntry 1 } + +hprNceType OBJECT-TYPE + SYNTAX HprNceTypes + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit string identifying the function types provided by this + Network Connection Endpoint (NCE)." + + ::= { hprNceEntry 2 } + +hprNceDefault OBJECT-TYPE + SYNTAX HprNceTypes + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit string identifying the function types for which this + Network Connection Endpoint (NCE) is the default NCE. While + default NCEs are not explicitly defined in the architecture, + some implementations provide them; for such implementations, + it is useful to make this information available to a + Management Station." + + ::= { hprNceEntry 3 } + +hprNceInstanceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NCE instance identifier (NCEII) identifying the current + instance of this NCE. An NCEII is used to denote different + instances (IPLs) of an NCE component. Each time an NCE is + activated (IPL'd), it acquires a different, unique NCEII." + + ::= { hprNceEntry 4 } + +-- ********************************************************************* +hprRtp OBJECT IDENTIFIER ::= { hprObjects 4 } +-- ********************************************************************* +-- ********************************************************************* +-- +-- The RTP group is implemented by all managed nodes supporting the +-- HPR Transport Tower. The group contains several scalars (simple +-- objects) and a table. +-- ********************************************************************* + +-- ********************************************************************* +hprRtpGlobe OBJECT IDENTIFIER ::= { hprRtp 1} +-- ********************************************************************* +hprRtpGlobeConnSetups OBJECT-TYPE + SYNTAX Counter32 + UNITS "RTP connection setups" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of RTP connection setups in which this node has + participated, as either sender or receiver, since it was last + re-initialized. Retries of a setup attempt do not cause the + counter to be incremented. + + A Management Station can detect discontinuities in this + counter by monitoring the appnNodeCounterDisconTime object + in the APPN MIB." + + ::= { hprRtpGlobe 1 } + +hprRtpGlobeCtrState OBJECT-TYPE + SYNTAX INTEGER { + notActive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object allows a network management station to turn the + counters in the hprRtpTable on and off. The initial value of + this object is an implementation choice. + + notActive(1) - the counters in the hprRtpTable are + returning no meaningful values + active(2) - the counters in the hprRtpTable are + being incremented and are returning + meaningful values" + + ::= { hprRtpGlobe 2 } + +hprRtpGlobeCtrStateTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the value of the hprRtpGlobeCtrState object + last changed. The initial value returned by this object is + the time at which the APPN node instrumented with this MIB + was last brought up." + + ::= { hprRtpGlobe 3 } + +-- ********************************************************************* +-- The RTP Connection Table +-- There may be many RTP connections on a node supporting the functions +-- specified in the RTP option set. Each node implementing this option +-- set shall maintain a table of these RTP connections. +-- ********************************************************************* + +hprRtpTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RTP Connection table" + + ::= { hprRtp 2 } + +hprRtpEntry OBJECT-TYPE + SYNTAX HprRtpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local NCE ID and local TCID are used to index this + table." + + INDEX + { hprRtpLocNceId, + hprRtpLocTcid } + + ::= { hprRtpTable 1 } + +HprRtpEntry ::= SEQUENCE { + hprRtpLocNceId OCTET STRING, -- local nce id + hprRtpLocTcid OCTET STRING, -- local tcid + hprRtpRemCpName SnaControlPointName,-- remote cp name + hprRtpRemNceId OCTET STRING, -- remote nce id + hprRtpRemTcid OCTET STRING, -- remote tcid + hprRtpPathSwitchTrigger INTEGER, -- trigger (read-write) + hprRtpRscv OCTET STRING, -- rscv + hprRtpTopic DisplayString, -- topic (cos) + hprRtpState INTEGER, -- state + hprRtpUpTime TimeTicks, -- up time + + hprRtpLivenessTimer Unsigned32, -- liveness timer + hprRtpShortReqTimer Unsigned32, -- short request timer + hprRtpPathSwTimer Unsigned32, -- path switch timer + hprRtpLivenessTimeouts HprRtpCounter, -- liveness timeouts + hprRtpShortReqTimeouts HprRtpCounter, -- short req timeouts + + hprRtpMaxSendRate Gauge32, -- maximum send rate + hprRtpMinSendRate Gauge32, -- minimum send rate + hprRtpCurSendRate Gauge32, -- current send rate + + hprRtpSmRdTripDelay Gauge32, -- smooth rnd trip + -- delay + + hprRtpSendPackets HprRtpCounter, -- packets sent + hprRtpRecvPackets HprRtpCounter, -- packets received + hprRtpSendBytes HprRtpCounter, -- bytes sent + hprRtpRecvBytes HprRtpCounter, -- bytes received + + hprRtpRetrPackets HprRtpCounter, -- pkts re-xmitted + hprRtpPacketsDiscarded HprRtpCounter, -- pkts discarded + hprRtpDetectGaps HprRtpCounter, -- gaps detected + hprRtpRateReqSends HprRtpCounter, -- rate req send + + hprRtpOkErrPathSws HprRtpCounter, -- ok err path sws + hprRtpBadErrPathSws HprRtpCounter, -- bad err path sws + hprRtpOkOpPathSws HprRtpCounter, -- ok op path sws + hprRtpBadOpPathSws HprRtpCounter, -- bad op path sws + + hprRtpCounterDisconTime TimeStamp -- discontinuity ind + } + +hprRtpLocNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local Network Connection Endpoint (NCE) ID of this RTP + connection. NCEs identify CPs, LUs, Boundary Functions (BFs), + and Route Setup (RS) components. A value for this object can + be retrieved from any of the following objects in the APPN + MIB: + + - appnLsCpCpNceId + - appnLsRouteNceId + - appnLsBfNceId + - appnIsInRtpNceId + - appnIsRtpNceId + + In each case this value identifies a row in this table + containing information related to that in the APPN MIB." + + ::= { hprRtpEntry 1 } + +hprRtpLocTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local TCID of this RTP connection. A value for this + object can be retrieved from either the appnIsInRtpTcid object + or the appnIsRtpTcid object the APPN MIB; in each case this + value identifies a row in this table containing information + related to that in the APPN MIB." + + ::= { hprRtpEntry 2 } + +hprRtpRemCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for the remote node of + this RTP connection." + + ::= { hprRtpEntry 3 } + +hprRtpRemNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote Network Connection Endpoint (NCE) of this RTP + connection. NCEs identify CPs, LUs, Boundary Functions (BFs), + and Route Setup (RS) components." + + ::= { hprRtpEntry 4 } + +hprRtpRemTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote TCID of this RTP connection." + + ::= { hprRtpEntry 5 } + +hprRtpPathSwitchTrigger OBJECT-TYPE + SYNTAX INTEGER { + ready(1), + switchPathNow(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Object by which a Management Station can trigger an operator- + requested path switch, by setting the value to + switchPathNow(2). Setting this object to switchPathNow(2) + triggers a path switch even if its previous value was already + switchPathNow(2). + The value ready(1) is returned on GET operations until a SET + has been processed; after that the value received on the most + recent SET is returned. + + This MIB module provides no support for an operator-requested + switch to a specified path." + + ::= { hprRtpEntry 6 } + +hprRtpRscv OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The forward Route Selection Control Vector for this RTP + connection. The format of this vector is described in SNA + Formats. + + The value returned in this object during a path switch is + implementation-dependent: it may be the old path, the new + path, a zero-length string, or some other valid RSCV string." + + ::= { hprRtpEntry 7 } + +hprRtpTopic OBJECT-TYPE + SYNTAX DisplayString (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The topic for this RTP connection. This is used to indicate + the Class of Service." + + ::= { hprRtpEntry 8 } + +hprRtpState OBJECT-TYPE + SYNTAX INTEGER { + rtpListening(1), + rtpCalling(2), + rtpConnected(3), + rtpPathSwitching(4), + rtpDisconnecting(5), + other(99) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the RTP connection, from the perspective of the + local RTP protocol machine: + rtpListening - connection open; waiting for other end + to call in + rtpCalling - connection opened, attempting to call + out, have not yet received any data + from other end + rtpConnected - connection is active; responded to a + call-in or received other end's TCID + from a call-out attempt + rtpPathSwitching - the path switch timer is running; + attempting to find a new path for this + connection. + rtpDisconnecting - no sessions are using this connection; + in process of bringing it down + other - the connection is not in any of the + states listed above." + + ::= { hprRtpEntry 9 } + +hprRtpUpTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "1/100ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time the RTP connection has been up, measured + in 1/100ths of a second." + + ::= { hprRtpEntry 10 } + +hprRtpLivenessTimer OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "1/100ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the liveness (ALIVE) timer of this RTP + connection, in units of 1/100th of a second. When this timer + expires and no packet has arrived from the partner since it + was last set, packets with Status Request indicators will be + sent to see if the RTP connection is still alive." + + ::= { hprRtpEntry 11 } + +hprRtpShortReqTimer OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "1/100ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the RTP SHORT_REQ timer, in units of 1/100 of a + second. This timer represents the maximum time that a sender + waits for a reply from a receiver." + + ::= { hprRtpEntry 12 } + +hprRtpPathSwTimer OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "1/100ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of time that RTP should attempt a path switch + for a connection, in units of 1/100th of a second." + + ::= { hprRtpEntry 13 } + +hprRtpLivenessTimeouts OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "liveness timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of liveness timeouts for this RTP connection." + + ::= { hprRtpEntry 14 } + +hprRtpShortReqTimeouts OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "short request timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of short request timeouts for this RTP connection." + + ::= { hprRtpEntry 15 } + +hprRtpMaxSendRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bytes per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The high-water mark for this RTP connection's send rate, in + units of bytes per second. This is the high-water mark for + the entire life of the connection, not just the high-water + mark for the connection's current path. + For more details on this and other parameters related to HPR, + see the High Performance Routing Architecture Reference." + + ::= { hprRtpEntry 16 } + +hprRtpMinSendRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bytes per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The low-water mark for this RTP connection's send rate, in + units of bytes per second. This is the low-water mark for the + entire life of the connection, not just the low-water mark for + the connection's current path. + + For more details on this and other parameters related to HPR, + see the High Performance Routing Architecture Reference." + + ::= { hprRtpEntry 17 } + +hprRtpCurSendRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bytes per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current send rate for this RTP connection, in units of + bytes per second. + + For more details on this and other parameters related to HPR, + see the High Performance Routing Architecture Reference." + + ::= { hprRtpEntry 18 } + +hprRtpSmRdTripDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "1/1000ths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The smoothed round trip delay for this RTP connection, in + units of 1/1000th of a second (ms). + + For more details on this and other parameters related to HPR, + see the High Performance Routing Architecture Reference." + + ::= { hprRtpEntry 19 } + +hprRtpSendPackets OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "RTP packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets successfully sent on this RTP + connection." + + ::= { hprRtpEntry 20 } + +hprRtpRecvPackets OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "RTP packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets received on this RTP connection. The + counter is incremented only once if duplicate copies of a + packet are received." + + ::= { hprRtpEntry 21 } + +hprRtpSendBytes OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of bytes sent on this RTP connection. Both RTP + Transport Header (THDR) bytes and data bytes are included in + this count." + + ::= { hprRtpEntry 22 } + +hprRtpRecvBytes OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of bytes received on this RTP connection. Both RTP + Transport Header (THDR) bytes and data bytes are included in + this count." + + ::= { hprRtpEntry 23 } + +hprRtpRetrPackets OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "RTP packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets retransmitted on this RTP connection." + + ::= { hprRtpEntry 24 } + +hprRtpPacketsDiscarded OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "RTP packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of packets received on this RTP connection and then + discarded. A packet may be discarded because it is determined + to be a duplicate, or for other reasons." + + ::= { hprRtpEntry 25 } + +hprRtpDetectGaps OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "gaps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of gaps detected on this RTP connection." + + ::= { hprRtpEntry 26 } + +hprRtpRateReqSends OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "rate requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Rate Requests sent on this RTP connection." + + ::= { hprRtpEntry 27 } + +hprRtpOkErrPathSws OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "path switch attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of successful path switch attempts for this RTP + connection due to errors." + + ::= { hprRtpEntry 28 } + +hprRtpBadErrPathSws OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "path switch attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of unsuccessful path switches for this RTP + connection due to errors." + + ::= { hprRtpEntry 29 } + +hprRtpOkOpPathSws OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "path switches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of successful path switches for this RTP connection + due to operator requests." + + ::= { hprRtpEntry 30 } + +hprRtpBadOpPathSws OBJECT-TYPE + SYNTAX HprRtpCounter + UNITS "path switches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of unsuccessful path switches for this RTP + connection due to operator requests. This counter is not + incremented by an implementation that does not support + operator-requested path switches, even if a Management Station + requests such a path switch by setting the + hprRtpPathSwitchTrigger object." + + ::= { hprRtpEntry 31 } + +hprRtpCounterDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for this + RTP connection last experienced a discontinuity. This will be + the more recent of two times: the time at which the + connection was established or the time at which the HPR + counters were last turned on or off." + + ::= { hprRtpEntry 32 } + +-- ********************************************************************* +-- The RTP Connection Status Table +-- This table contains statistics and historical information related to +-- both successful and unsuccessful RTP path switches. This +-- information can be important for both trend analysis and problem +-- determination. +-- +-- Note the terminology here: when RTP is triggered to find a new path +-- for a connection, this initiates a 'path switch,' which will end up +-- being either successful or unsuccessful. During this path switch, +-- RTP will make one or more 'path switch attempts,' which are attempts +-- to find a new path for the connection and switch the connection to +-- it. This 'new' path may be the same path that the connection was +-- using before the path switch. +-- +-- It is an implementation option how many entries to keep in this +-- table, and how long to retain any individual entry. +-- ********************************************************************* +hprRtpStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF HprRtpStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "RTP Connection Status Table: This table contains historical + information on RTP connections. An entry is created in this + table when a path switch is completed, either successfully or + unsuccessfully." + + ::= { hprRtp 3 } + +hprRtpStatusEntry OBJECT-TYPE + SYNTAX HprRtpStatusEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by local NCE ID, local TCID, and an + integer hprRtpStatusIndex. Thus the primary grouping of table + rows is by RTP connection, with the multiple entries for a + given RTP connection ordered by time." + + INDEX + { hprRtpStatusLocNceId, + hprRtpStatusLocTcid, + hprRtpStatusIndex } + + ::= { hprRtpStatusTable 1 } + + HprRtpStatusEntry ::= SEQUENCE { + hprRtpStatusLocNceId OCTET STRING, -- local nce id + hprRtpStatusLocTcid OCTET STRING, -- local tcid + hprRtpStatusIndex Unsigned32, -- index + hprRtpStatusStartTime DateAndTime, -- time stamp + hprRtpStatusEndTime DateAndTime, -- time stamp + hprRtpStatusRemCpName SnaControlPointName,-- remote cp name + hprRtpStatusRemNceId OCTET STRING, -- remote nce id + hprRtpStatusRemTcid OCTET STRING, -- remote tcid + hprRtpStatusNewRscv OCTET STRING, -- new rscv + hprRtpStatusOldRscv OCTET STRING, -- old rscv + hprRtpStatusCause INTEGER, -- cause + hprRtpStatusLastAttemptResult INTEGER -- result of last + } + +hprRtpStatusLocNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local Network Connection Endpoint (NCE) of this RTP + connection. NCEs identify CPs, LUs, Boundary Functions (BFs), + and Route Setup (RS) components." + + ::= { hprRtpStatusEntry 1 } + +hprRtpStatusLocTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local TCID of this RTP connection." + + ::= { hprRtpStatusEntry 2 } + +hprRtpStatusIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table index. This value begins at one and is incremented + when a new entry is added to the table. It is an + implementation choice whether to run a single counter for + all entries in the table, or to run a separate counter for + the entries for each RTP connection. In the unlikely event + of a wrap, it is assumed that Management Stations will have + the ability to order table entries correctly." + + ::= { hprRtpStatusEntry 3 } + +hprRtpStatusStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the path switch began." + + ::= { hprRtpStatusEntry 4 } + +hprRtpStatusEndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the path switch was ended, either successfully + or unsuccessfully." + + ::= { hprRtpStatusEntry 5 } + +hprRtpStatusRemCpName OBJECT-TYPE + SYNTAX SnaControlPointName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Administratively assigned network name for the remote node of + this RTP connection." + + ::= { hprRtpStatusEntry 6 } + +hprRtpStatusRemNceId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote Network Connection Endpoint (NCE) of this RTP + connection. NCEs identify CPs, LUs, Boundary Functions (BFs), + and Route Setup (RS) components." + + ::= { hprRtpStatusEntry 7 } + +hprRtpStatusRemTcid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote TCID of this RTP connection." + + ::= { hprRtpStatusEntry 8 } + +hprRtpStatusNewRscv OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The new Route Selection Control Vector for this RTP + connection. A zero-length string indicates that no value is + available, perhaps because the implementation does not save + RSCVs." + + ::= { hprRtpStatusEntry 9 } + +hprRtpStatusOldRscv OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The old Route Selection Control Vector for this RTP + connection. A zero-length string indicates that no value is + available, perhaps because the implementation does not save + RSCVs." + + ::= { hprRtpStatusEntry 10 } + +hprRtpStatusCause OBJECT-TYPE + SYNTAX INTEGER { + other(1), + rtpConnFail(2), + locLinkFail(3), + remLinkFail(4), + operRequest(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The reason for the path switch: + + other(1) - Reason other than those listed below, + rtpConnFail(2) - RTP connection failure detected, + locLinkFail(3) - Local link failure, + remLinkFail(4) - Remote link failure (learned from TDUs), + operRequest(5) - Operator requested path switch. " + + ::= { hprRtpStatusEntry 11 } + +hprRtpStatusLastAttemptResult OBJECT-TYPE + SYNTAX INTEGER { successful(1), + initiatorMoving(2), + directorySearchFailed(3), + rscvCalculationFailed(4), + negativeRouteSetupReply(5), + backoutRouteSetupReply(6), + timeoutDuringFirstAttempt(7), + otherUnsuccessful(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The result of the last completed path switch attempt. If the + path switch is aborted in the middle of a path switch attempt + because the path switch timer expires, the result of the + previous path switch attempt is reported. + + The values are defined as follows: + + successful(1) - The final path switch + attempt was successful. + initiatorMoving(2) - The final path switch + attempt failed because the + initiator is mobile, and + there was no active link + out of this node. + directorySearchFailed(3) - The final path switch + attempt failed because a + directory search for the + destination node's CP name + failed. + rscvCalculationFailed(4) - The final path switch + attempt failed because an + RSCV to the node containing + the remote RTP endpoint + could not be calculated. + negativeRouteSetupReply(5) - The final path switch + attempt failed because route + setup failed for the new + path. + backoutRouteSetupReply(6) - The final path switch + attempt failed because the + remote RTP endpoint refused + to continue the RTP + connection. + timeoutDuringFirstAttempt(7) - The path switch timer + expired during the first + path switch attempt. + otherUnsuccessful(8) - The final path switch + attempt failed for a reason + other than those listed + above." + + + ::= { hprRtpStatusEntry 12 } + + +-- *************************************************************** +-- Conformance information +-- *************************************************************** + +hprConformance OBJECT IDENTIFIER ::= { hprMIB 2 } + +hprCompliances OBJECT IDENTIFIER ::= { hprConformance 1 } +hprGroups OBJECT IDENTIFIER ::= { hprConformance 2 } + +-- Compliance statements + +hprCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities that + implement the HPR MIB." + + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { + hprGlobalConfGroup, + hprAnrRoutingConfGroup, + hprTransportUserConfGroup + } + +-- Conditionally mandatory groups + GROUP hprRtpConfGroup + DESCRIPTION + "The hprRtpConfGroup is mandatory for HPR implementations + supporting the HPR transport tower." + + ::= { hprCompliances 1 } + +-- Units of conformance +hprGlobalConfGroup OBJECT-GROUP + OBJECTS { + hprNodeCpName, + hprOperatorPathSwitchSupport + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation of HPR + general information and capabilities." + + ::= { hprGroups 1 } + +hprAnrRoutingConfGroup OBJECT-GROUP + OBJECTS { + hprAnrsAssigned, + hprAnrCounterState, + hprAnrCounterStateTime, + hprAnrType, + hprAnrOutTgDest, + hprAnrOutTgNum, + hprAnrPacketsReceived, + hprAnrCounterDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing instrumentation for the + node's ANR routing." + + ::= { hprGroups 2 } + +hprTransportUserConfGroup OBJECT-GROUP + OBJECTS { + hprNceType, + hprNceDefault, + hprNceInstanceId + } + STATUS current + DESCRIPTION + "A collection of objects providing information on the users of + the HPR transport known to the node." + + ::= { hprGroups 3 } + +hprRtpConfGroup OBJECT-GROUP + OBJECTS { + hprRtpGlobeConnSetups, + hprRtpGlobeCtrState, + hprRtpGlobeCtrStateTime, + hprRtpRemCpName, + hprRtpRemNceId, + hprRtpRemTcid, + hprRtpPathSwitchTrigger, + hprRtpRscv, + hprRtpTopic, + hprRtpState, + hprRtpUpTime, + hprRtpLivenessTimer, + hprRtpShortReqTimer, + hprRtpPathSwTimer, + hprRtpLivenessTimeouts, + hprRtpShortReqTimeouts, + + hprRtpMaxSendRate, + hprRtpMinSendRate, + hprRtpCurSendRate, + + hprRtpSmRdTripDelay, + + hprRtpSendPackets, + hprRtpRecvPackets, + hprRtpSendBytes, + hprRtpRecvBytes, + + hprRtpRetrPackets, + hprRtpPacketsDiscarded, + hprRtpDetectGaps, + hprRtpRateReqSends, + + hprRtpOkErrPathSws, + hprRtpBadErrPathSws, + hprRtpOkOpPathSws, + hprRtpBadOpPathSws, + hprRtpCounterDisconTime, + + hprRtpStatusStartTime, + hprRtpStatusEndTime, + hprRtpStatusRemNceId, + hprRtpStatusRemTcid, + hprRtpStatusRemCpName, + hprRtpStatusNewRscv, + hprRtpStatusOldRscv, + hprRtpStatusCause, + hprRtpStatusLastAttemptResult + + } + STATUS current + DESCRIPTION + "A collection of objects providing the instrumentation for RTP + connection end points." + + ::= { hprGroups 4 } + +-- end of conformance statement + +END diff --git a/mibs/ietf/IANA-ITU-ALARM-TC-MIB b/mibs/ietf/IANA-ITU-ALARM-TC-MIB new file mode 100644 index 0000000..6476151 --- /dev/null +++ b/mibs/ietf/IANA-ITU-ALARM-TC-MIB @@ -0,0 +1,350 @@ +IANA-ITU-ALARM-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + + + + ianaItuAlarmNumbers MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IANA" + CONTACT-INFO + "Postal: Internet Assigned Numbers Authority + Internet Corporation for Assigned Names + and Numbers + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292-6601 + USA + + Tel: +1 310-823-9358 + E-Mail: iana@iana.org" + DESCRIPTION + "The MIB module defines the ITU Alarm + textual convention for objects expected to require + regular extension. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3877." + ::= { mib-2 119 } + +IANAItuProbableCause ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ITU-T probable cause values. Duplicate values defined in + X.733 are appended with X733 to ensure syntactic uniqueness. + Probable cause value 0 is reserved for special purposes. + + The Internet Assigned Number Authority (IANA) is responsible + for the assignment of the enumerations in this TC. + IANAItuProbableCause value of 0 is reserved for special + purposes and MUST NOT be assigned. + + Values of IANAItuProbableCause in the range 1 to 1023 are + reserved for causes that correspond to ITU-T probable cause. + + All other requests for new causes will be handled on a + first-come, first served basis and will be assigned + enumeration values starting with 1025. + + Request should come in the form of well-formed + + + SMI [RFC2578] for enumeration names that are unique and + sufficiently descriptive. + + While some effort will be taken to ensure that new probable + causes do not conceptually duplicate existing probable + causes it is acknowledged that the existence of conceptual + duplicates in the starting probable cause list is an known + industry reality. + + To aid IANA in the administration of probable cause names + and values, the OPS Area Director will appoint one or more + experts to help review requests. + + See http://www.iana.org" + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992 + ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + + SYNTAX INTEGER + { + -- The following probable causes were defined in M.3100 + aIS (1), + callSetUpFailure (2), + degradedSignal (3), + farEndReceiverFailure (4), + framingError (5), + lossOfFrame (6), + lossOfPointer (7), + lossOfSignal (8), + payloadTypeMismatch (9), + transmissionError (10), + remoteAlarmInterface (11), + excessiveBER (12), + pathTraceMismatch (13), + unavailable (14), + signalLabelMismatch (15), + lossOfMultiFrame (16), + receiveFailure (17), + transmitFailure (18), + modulationFailure (19), + demodulationFailure (20), + broadcastChannelFailure (21), + + + connectionEstablishmentError (22), + invalidMessageReceived (23), + localNodeTransmissionError (24), + remoteNodeTransmissionError (25), + routingFailure (26), + + --Values 27-50 are reserved for communications alarm related + --probable causes + -- The following are used with equipment alarm. + + backplaneFailure (51), + dataSetProblem (52), + equipmentIdentifierDuplication (53), + externalIFDeviceProblem (54), + lineCardProblem (55), + multiplexerProblem (56), + nEIdentifierDuplication (57), + powerProblem (58), + processorProblem (59), + protectionPathFailure (60), + receiverFailure (61), + replaceableUnitMissing (62), + replaceableUnitTypeMismatch (63), + synchronizationSourceMismatch (64), + terminalProblem (65), + timingProblem (66), + transmitterFailure (67), + trunkCardProblem (68), + replaceableUnitProblem (69), + realTimeClockFailure (70), + --An equipment alarm to be issued if the system detects that the + --real time clock has failed + antennaFailure (71), + batteryChargingFailure (72), + diskFailure (73), + frequencyHoppingFailure (74), + iODeviceError (75), + lossOfSynchronisation (76), + lossOfRedundancy (77), + powerSupplyFailure (78), + signalQualityEvaluationFailure (79), + tranceiverFailure (80), + protectionMechanismFailure (81), + protectingResourceFailure (82), + -- Values 83-100 are reserved for equipment alarm related probable + -- causes + -- The following are used with environmental alarm. + airCompressorFailure (101), + + + airConditioningFailure (102), + airDryerFailure (103), + batteryDischarging (104), + batteryFailure (105), + commercialPowerFailure (106), + coolingFanFailure (107), + engineFailure (108), + fireDetectorFailure (109), + fuseFailure (110), + generatorFailure (111), + lowBatteryThreshold (112), + pumpFailure (113), + rectifierFailure (114), + rectifierHighVoltage (115), + rectifierLowFVoltage (116), + ventilationsSystemFailure (117), + enclosureDoorOpen (118), + explosiveGas (119), + fire (120), + flood (121), + highHumidity (122), + highTemperature (123), + highWind (124), + iceBuildUp (125), + intrusionDetection (126), + lowFuel (127), + lowHumidity (128), + lowCablePressure (129), + lowTemperatue (130), + lowWater (131), + smoke (132), + toxicGas (133), + coolingSystemFailure (134), + externalEquipmentFailure (135), + externalPointFailure (136), + -- Values 137-150 are reserved for environmental alarm related + -- probable causes + -- The following are used with Processing error alarm. + storageCapacityProblem (151), + memoryMismatch (152), + corruptData (153), + outOfCPUCycles (154), + sfwrEnvironmentProblem (155), + sfwrDownloadFailure (156), + lossOfRealTimel (157), + --A processing error alarm to be issued after the system has + --reinitialised. This will indicate + --to the management systems that the view they have of the managed + + + --system may no longer + --be valid. Usage example: The managed + --system issues this alarm after a reinitialization with severity + --warning to inform the + --management system about the event. No clearing notification will + --be sent. + applicationSubsystemFailure (158), + configurationOrCustomisationError (159), + databaseInconsistency (160), + fileError (161), + outOfMemory (162), + softwareError (163), + timeoutExpired (164), + underlayingResourceUnavailable (165), + versionMismatch (166), + --Values 168-200 are reserved for processing error alarm related + -- probable causes. + bandwidthReduced (201), + congestion (202), + excessiveErrorRate (203), + excessiveResponseTime (204), + excessiveRetransmissionRate (205), + reducedLoggingCapability (206), + systemResourcesOverload (207 ), + -- The following were defined X.733 + adapterError (500), + applicationSubsystemFailture (501), + bandwidthReducedX733 (502), + callEstablishmentError (503), + communicationsProtocolError (504), + communicationsSubsystemFailure (505), + configurationOrCustomizationError (506), + congestionX733 (507), + coruptData (508), + cpuCyclesLimitExceeded (509), + dataSetOrModemError (510), + degradedSignalX733 (511), + dteDceInterfaceError (512), + enclosureDoorOpenX733 (513), + equipmentMalfunction (514), + excessiveVibration (515), + fileErrorX733 (516), + fireDetected (517), + framingErrorX733 (518), + heatingVentCoolingSystemProblem (519), + humidityUnacceptable (520), + inputOutputDeviceError (521), + inputDeviceError (522), + + + lanError (523), + leakDetected (524), + localNodeTransmissionErrorX733 (525), + lossOfFrameX733 (526), + lossOfSignalX733 (527), + materialSupplyExhausted (528), + multiplexerProblemX733 (529), + outOfMemoryX733 (530), + ouputDeviceError (531), + performanceDegraded (532), + powerProblems (533), + pressureUnacceptable (534), + processorProblems (535), + pumpFailureX733 (536), + queueSizeExceeded (537), + receiveFailureX733 (538), + receiverFailureX733 (539), + remoteNodeTransmissionErrorX733 (540), + resourceAtOrNearingCapacity (541), + responseTimeExecessive (542), + retransmissionRateExcessive (543), + softwareErrorX733 (544), + softwareProgramAbnormallyTerminated (545), + softwareProgramError (546), + storageCapacityProblemX733 (547), + temperatureUnacceptable (548), + thresholdCrossed (549), + timingProblemX733 (550), + toxicLeakDetected (551), + transmitFailureX733 (552), + transmiterFailure (553), + underlyingResourceUnavailable (554), + versionMismatchX733 (555), + -- The following are defined in X.736 + authenticationFailure (600), + breachOfConfidentiality (601), + cableTamper (602), + delayedInformation (603), + denialOfService (604), + duplicateInformation (605), + informationMissing (606), + informationModificationDetected (607), + informationOutOfSequence (608), + keyExpired (609), + nonRepudiationFailure (610), + outOfHoursActivity (611), + outOfService (612), + proceduralError (613), + + + unauthorizedAccessAttempt (614), + unexpectedInformation (615), + + other (1024) + } + +IANAItuEventType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ITU event Type values. + + The Internet Assigned Number Authority (IANA) is + responsible for the assignment of the enumerations + in this TC. + + Request should come in the form of well-formed + SMI [RFC2578] for enumeration names that are unique + and sufficiently descriptive. + + See http://www.iana.org " + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + SYNTAX INTEGER + { + other (1), + communicationsAlarm (2), + qualityOfServiceAlarm (3), + processingErrorAlarm (4), + equipmentAlarm (5), + environmentalAlarm (6), + integrityViolation (7), + operationalViolation (8), + physicalViolation (9), + securityServiceOrMechanismViolation (10), + timeDomainViolation (11) + } + +END diff --git a/mibs/ietf/IF-CAP-STACK-MIB b/mibs/ietf/IF-CAP-STACK-MIB new file mode 100644 index 0000000..5534b37 --- /dev/null +++ b/mibs/ietf/IF-CAP-STACK-MIB @@ -0,0 +1,305 @@ +IF-CAP-STACK-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TruthValue + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ifStackGroup2, ifStackHigherLayer, ifStackLowerLayer + FROM IF-MIB -- [RFC2863] + ifInvStackGroup + FROM IF-INVERTED-STACK-MIB -- [RFC2864] + ; + + ifCapStackMIB MODULE-IDENTITY + LAST-UPDATED "200711070000Z" -- November 07, 2007 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/OLD/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + + + + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Phone: +972-3-924-3491 + EMail: edward.beili@actelis.com" + + DESCRIPTION + "The objects in this MIB module are used to describe + cross-connect capabilities of stacked (layered) interfaces, + complementing ifStackTable and ifInvStackTable defined in + IF-MIB and IF-INVERTED-STACK-MIB, respectively. + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of RFC 5066; see the RFC + itself for full legal notices." + + REVISION "200711070000Z" -- November 07, 2007 + DESCRIPTION "Initial version, published as RFC 5066." + + ::= { mib-2 166 } + + -- Sections of the module + -- Structured as recommended by [RFC4181], see + -- Appendix D: Suggested OID Layout + + ifCapStackObjects OBJECT IDENTIFIER ::= { ifCapStackMIB 1 } + + ifCapStackConformance OBJECT IDENTIFIER ::= { ifCapStackMIB 2 } + + -- Groups in the module + + -- + -- ifCapStackTable group + -- + + + + + ifCapStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfCapStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table, modeled after ifStackTable from IF-MIB, + contains information on the possible 'on-top-of' + relationships between the multiple sub-layers of network + interfaces (as opposed to actual relationships described in + ifStackTable). In particular, it contains information on + which sub-layers MAY possibly run 'on top of' which other + sub-layers, as determined by cross-connect capability of the + device, where each sub-layer corresponds to a conceptual row + in the ifTable. For example, when the sub-layer with ifIndex + value x can be connected to run on top of the sub-layer with + ifIndex value y, then this table contains: + + ifCapStackStatus.x.y=true + + The ifCapStackStatus.x.y row does not exist if it is + impossible to connect between the sub-layers x and y. + + Note that for most stacked interfaces (e.g., 2BASE-TL) + there's always at least one higher-level interface (e.g., PCS + port) for each lower-level interface (e.g., PME) and at + least one lower-level interface for each higher-level + interface, that is, there is at least a single row with a + 'true' status for any such existing value of x or y. + + This table is read-only as it describes device capabilities." + REFERENCE + "IF-MIB, ifStackTable" + ::= { ifCapStackObjects 1 } + + ifCapStackEntry OBJECT-TYPE + SYNTAX IfCapStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two + sub-layers, specifying that one sub-layer MAY possibly run + on 'top' of the other sub-layer. Each sub-layer corresponds + to a conceptual row in the ifTable (interface index for + lower and higher layer, respectively)." + INDEX { + ifStackHigherLayer, + ifStackLowerLayer + } + + + + ::= { ifCapStackTable 1 } + + IfCapStackEntry ::= SEQUENCE { + ifCapStackStatus TruthValue + } + + ifCapStackStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the 'cross-connect capability' relationship + between two sub-layers. The following values can be returned: + true(1) - indicates that the sub-layer interface, + identified by the ifStackLowerLayer MAY + be connected to run 'below' the sub-layer + interface, identified by the + ifStackHigherLayer index. + false(2) - the sub-layer interfaces cannot be + connected temporarily due to + unavailability of the interface(s), e.g., + one of the interfaces is located on an + absent pluggable module. + + Note that lower-layer interface availability per higher-layer, + indicated by the value of 'true', can be constrained by + other parameters, for example, by the aggregation capacity of + a higher-layer interface or by the lower-layer interface in + question being already connected to another higher-layer + interface. In order to ensure that a particular sub-layer can + be connected to another sub-layer, all respective objects + (e.g., ifCapStackTable, ifStackTable, and efmCuPAFCapacity for + EFMCu interfaces) SHALL be inspected. + + This object is read-only, unlike ifStackStatus, as it + describes a cross-connect capability." + ::= { ifCapStackEntry 1 } + + ifInvCapStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfInvCapStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on the possible relationships + between the multiple sub-layers of network interfaces. This + table, modeled after ifInvStackTable from + IF-INVERTED-STACK-MIB, is an inverse of the ifCapStackTable + defined in this MIB module. + + + + In particular, this table contains information on which + sub-layers MAY run 'underneath' which other sub-layers, where + each sub-layer corresponds to a conceptual row in the ifTable. + For example, when the sub-layer with ifIndex value x MAY be + connected to run underneath the sub-layer with ifIndex value + y, then this table contains: + + ifInvCapStackStatus.x.y=true + + This table contains exactly the same number of rows as the + ifCapStackTable, but the rows appear in a different order. + + This table is read-only as it describes a cross-connect + capability." + REFERENCE + "IF-INVERTED-STACK-MIB, ifInvStackTable" + ::= { ifCapStackObjects 2 } + + ifInvCapStackEntry OBJECT-TYPE + SYNTAX IfInvCapStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer MAY run underneath the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable." + INDEX { ifStackLowerLayer, ifStackHigherLayer } + ::= { ifInvCapStackTable 1 } + + IfInvCapStackEntry ::= SEQUENCE { + ifInvCapStackStatus TruthValue + } + + ifInvCapStackStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the possible 'cross-connect capability' + relationship between two sub-layers. + + An instance of this object exists for each instance of the + ifCapStackStatus object, and vice versa. For example, if the + variable ifCapStackStatus.H.L exists, then the variable + ifInvCapStackStatus.L.H must also exist, and vice versa. In + addition, the two variables always have the same value. + + + + + The ifInvCapStackStatus object is read-only, as it describes + a cross-connect capability." + REFERENCE + "ifCapStackStatus" + ::= { ifInvCapStackEntry 1 } + + -- + -- Conformance Statements + -- + + ifCapStackGroups OBJECT IDENTIFIER ::= + { ifCapStackConformance 1 } + + ifCapStackCompliances OBJECT IDENTIFIER ::= + { ifCapStackConformance 2 } + + -- Units of Conformance + + ifCapStackGroup OBJECT-GROUP + OBJECTS { + ifCapStackStatus, + ifInvCapStackStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + cross-connect capability of multi-layer (stacked) network + interfaces." + ::= { ifCapStackGroups 1 } + + + -- Compliance Statements + + ifCapStackCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities, which provide + information on the cross-connect capability of multi-layer + (stacked) network interfaces, with flexible cross-connect + between the sub-layers." + + + MODULE -- this module + MANDATORY-GROUPS { + ifCapStackGroup + } + + OBJECT ifCapStackStatus + + + + SYNTAX TruthValue { true(1) } + DESCRIPTION + "Support for the false(2) value is OPTIONAL for + implementations supporting pluggable interfaces." + + OBJECT ifInvCapStackStatus + SYNTAX TruthValue { true(1) } + DESCRIPTION + "Support for the false(2) value is OPTIONAL for + implementations supporting pluggable interfaces." + + MODULE IF-MIB + MANDATORY-GROUPS { + ifStackGroup2 + } + + MODULE IF-INVERTED-STACK-MIB + MANDATORY-GROUPS { + ifInvStackGroup + } + + ::= { ifCapStackCompliances 1 } +END diff --git a/mibs/ietf/IF-INVERTED-STACK-MIB b/mibs/ietf/IF-INVERTED-STACK-MIB new file mode 100644 index 0000000..981209e --- /dev/null +++ b/mibs/ietf/IF-INVERTED-STACK-MIB @@ -0,0 +1,159 @@ +IF-INVERTED-STACK-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2 FROM SNMPv2-SMI + RowStatus FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifStackGroup2, + ifStackHigherLayer, ifStackLowerLayer FROM IF-MIB; + +ifInvertedStackMIB MODULE-IDENTITY + LAST-UPDATED "200006140000Z" + ORGANIZATION "IETF Interfaces MIB Working Group" + CONTACT-INFO + " Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com" + DESCRIPTION + "The MIB module which provides the Inverted Stack Table for + interface sub-layers." + REVISION "200006140000Z" + DESCRIPTION + "Initial revision, published as RFC 2864" + ::= { mib-2 77 } + +ifInvMIBObjects OBJECT IDENTIFIER ::= { ifInvertedStackMIB 1 } + +-- +-- The Inverted Interface Stack Group +-- + +ifInvStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfInvStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on the relationships between + + + the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'underneath' which other sub-layers, where each sub-layer + corresponds to a conceptual row in the ifTable. For + example, when the sub-layer with ifIndex value x runs + underneath the sub-layer with ifIndex value y, then this + table contains: + + ifInvStackStatus.x.y=active + + For each ifIndex value, z, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with z. For one of these rows, z + is the value of ifStackHigherLayer; for the other, z is the + value of ifStackLowerLayer. (If z is not involved in + multiplexing, then these are the only two rows associated + with z.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifInvStackStatus.z.0=active + ifInvStackStatus.0.z=active + + This table contains exactly the same number of rows as the + ifStackTable, but the rows appear in a different order." + REFERENCE + "ifStackTable of RFC 2863" + ::= { ifInvMIBObjects 1 } + +ifInvStackEntry OBJECT-TYPE + SYNTAX IfInvStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs underneath the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable." + INDEX { ifStackLowerLayer, ifStackHigherLayer } + ::= { ifInvStackTable 1 } + +IfInvStackEntry ::= + SEQUENCE { + ifInvStackStatus RowStatus + } + +ifInvStackStatus OBJECT-TYPE + + + SYNTAX RowStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of the relationship between two sub-layers. + + An instance of this object exists for each instance of the + ifStackStatus object, and vice versa. For example, if the + variable ifStackStatus.H.L exists, then the variable + ifInvStackStatus.L.H must also exist, and vice versa. In + addition, the two variables always have the same value. + + However, unlike ifStackStatus, the ifInvStackStatus object + is NOT write-able. A network management application wishing + to change a relationship between sub-layers H and L cannot + do so by modifying the value of ifInvStackStatus.L.H, but + must instead modify the value of ifStackStatus.H.L. After + the ifStackTable is modified, the change will be reflected + in this table." + ::= { ifInvStackEntry 1 } + +-- conformance information + +ifInvConformance OBJECT IDENTIFIER ::= { ifInvMIBObjects 2 } + +ifInvGroups OBJECT IDENTIFIER ::= { ifInvConformance 1 } +ifInvCompliances OBJECT IDENTIFIER ::= { ifInvConformance 2 } + +-- compliance statements + +ifInvCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which provide + inverted information on the layering of network interfaces." + + MODULE -- this module + MANDATORY-GROUPS { ifInvStackGroup } + + OBJECT ifInvStackStatus + SYNTAX INTEGER { active(1) } + DESCRIPTION + "Support is only required for 'active'." + + + + + + + + MODULE IF-MIB + MANDATORY-GROUPS { ifStackGroup2 } + + ::= { ifInvCompliances 1 } + +-- units of conformance + +ifInvStackGroup OBJECT-GROUP + OBJECTS { ifInvStackStatus } + STATUS current + DESCRIPTION + "A collection of objects providing inverted information on + the layering of MIB-II interfaces." + ::= { ifInvGroups 1 } + +END diff --git a/mibs/ietf/IF-MIB b/mibs/ietf/IF-MIB new file mode 100644 index 0000000..8713894 --- /dev/null +++ b/mibs/ietf/IF-MIB @@ -0,0 +1,1899 @@ +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, Counter64, + Integer32, TimeTicks, mib-2, + NOTIFICATION-TYPE FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString, + PhysAddress, TruthValue, RowStatus, + TimeStamp, AutonomousType, TestAndIncr FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + snmpTraps FROM SNMPv2-MIB + IANAifType FROM IANAifType-MIB; + + +ifMIB MODULE-IDENTITY + LAST-UPDATED "200006140000Z" + ORGANIZATION "IETF Interfaces MIB Working Group" + CONTACT-INFO + " Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com" + DESCRIPTION + "The MIB module to describe generic objects for network + interface sub-layers. This MIB is an updated version of + MIB-II's ifTable, and incorporates the extensions defined in + RFC 1229." + + + REVISION "200006140000Z" + DESCRIPTION + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863." + REVISION "199602282155Z" + DESCRIPTION + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233." + REVISION "199311082155Z" + DESCRIPTION + "Initial revision, published as part of RFC 1573." + ::= { mib-2 31 } + + +ifMIBObjects OBJECT IDENTIFIER ::= { ifMIB 1 } + +interfaces OBJECT IDENTIFIER ::= { mib-2 2 } + +-- +-- Textual Conventions +-- + + +-- OwnerString has the same semantics as used in RFC 1271 + +OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS deprecated + 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 in other MIB modules that need these semantics. + +InterfaceIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + + + "A unique value, greater than zero, for each interface or + interface sub-layer in the managed system. It is + recommended that values are assigned contiguously starting + from 1. The value for each interface sub-layer must remain + constant at least from one re-initialization of the entity's + network management system to the next re-initialization." + SYNTAX Integer32 (1..2147483647) + +InterfaceIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + InterfaceIndex convention. The latter defines a greater + than zero value used to identify an interface or interface + sub-layer in the managed system. This extension permits the + additional value of zero. the value zero is object-specific + and must therefore be defined as part of the description of + any object which uses this syntax. Examples of the usage of + zero might include situations where interface was unknown, + or when none or all interfaces need to be referenced." + SYNTAX Integer32 (0..2147483647) + +ifNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network interfaces (regardless of their + current state) present on this system." + ::= { interfaces 1 } + +ifTableLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last creation or + deletion of an entry in the ifTable. If the number of + entries has been unchanged since the last re-initialization + of the local network management subsystem, then this object + contains a zero value." + ::= { ifMIBObjects 5 } + + +-- the Interfaces table + +-- The Interfaces table contains information on the entity's + + +-- interfaces. Each sub-layer below the internetwork-layer +-- of a network interface is considered to be an interface. + +ifTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of interface entries. The number of entries is + given by the value of ifNumber." + ::= { interfaces 2 } + +ifEntry OBJECT-TYPE + SYNTAX IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing management information applicable to a + particular interface." + INDEX { ifIndex } + ::= { ifTable 1 } + +IfEntry ::= + SEQUENCE { + ifIndex InterfaceIndex, + ifDescr DisplayString, + ifType IANAifType, + ifMtu Integer32, + ifSpeed Gauge32, + ifPhysAddress PhysAddress, + ifAdminStatus INTEGER, + ifOperStatus INTEGER, + ifLastChange TimeTicks, + ifInOctets Counter32, + ifInUcastPkts Counter32, + ifInNUcastPkts Counter32, -- deprecated + ifInDiscards Counter32, + ifInErrors Counter32, + ifInUnknownProtos Counter32, + ifOutOctets Counter32, + ifOutUcastPkts Counter32, + ifOutNUcastPkts Counter32, -- deprecated + ifOutDiscards Counter32, + ifOutErrors Counter32, + ifOutQLen Gauge32, -- deprecated + ifSpecific OBJECT IDENTIFIER -- deprecated + } + + + +ifIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each interface. It + is recommended that values are assigned contiguously + starting from 1. The value for each interface sub-layer + must remain constant at least from one re-initialization of + the entity's network management system to the next re- + initialization." + ::= { ifEntry 1 } + +ifDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software." + ::= { ifEntry 2 } + +ifType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of interface. Additional values for ifType are + assigned by the Internet Assigned Numbers Authority (IANA), + through updating the syntax of the IANAifType textual + convention." + ::= { ifEntry 3 } + +ifMtu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest packet which can be sent/received + on the interface, specified in octets. For interfaces that + are used for transmitting network datagrams, this is the + size of the largest network datagram that can be sent on the + interface." + ::= { ifEntry 4 } + +ifSpeed OBJECT-TYPE + + + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the interface's current bandwidth in bits + per second. For interfaces which do not vary in bandwidth + or for those where no accurate estimation can be made, this + object should contain the nominal bandwidth. If the + bandwidth of the interface is greater than the maximum value + reportable by this object then this object should report its + maximum value (4,294,967,295) and ifHighSpeed must be used + to report the interace's speed. For a sub-layer which has + no concept of bandwidth, this object should be zero." + ::= { ifEntry 5 } + +ifPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific MIB + must define the bit and byte ordering and the format of the + value of this object. For interfaces which do not have such + an address (e.g., a serial line), this object should contain + an octet string of zero length." + ::= { ifEntry 6 } + +ifAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3) -- in some test mode + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state)." + ::= { ifEntry 7 } + + + +ifOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3), -- in some test mode + unknown(4), -- status can not be determined + -- for some reason. + dormant(5), + notPresent(6), -- some component is missing + lowerLayerDown(7) -- down due to state of + -- lower-layer interface(s) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components." + ::= { ifEntry 8 } + +ifLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the interface entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value." + ::= { ifEntry 9 } + +ifInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received on the interface, + + + including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 10 } + +ifInUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 11 } + +ifInNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast or + broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifInMulticastPkts and + ifInBroadcastPkts." + ::= { ifEntry 12 } + +ifInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets which were chosen to be + discarded even though no errors had been detected to prevent + + + their being deliverable to a higher-layer protocol. One + possible reason for discarding such a packet could be to + free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 13 } + +ifInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of inbound + transmission units that contained errors preventing them + from being deliverable to a higher-layer protocol. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 14 } + +ifInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of packets + received via the interface which were discarded because of + an unknown or unsupported protocol. For character-oriented + or fixed-length interfaces that support protocol + multiplexing the number of transmission units received via + the interface which were discarded because of an unknown or + unsupported protocol. For any interface that does not + support protocol multiplexing, this counter will always be + 0. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 15 } + + +ifOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 16 } + +ifOutUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 17 } + +ifOutNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifOutMulticastPkts + and ifOutBroadcastPkts." + ::= { ifEntry 18 } + + +ifOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets which were chosen to be + discarded even though no errors had been detected to prevent + their being transmitted. One possible reason for discarding + such a packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 19 } + +ifOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 20 } + +ifOutQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The length of the output packet queue (in packets)." + ::= { ifEntry 21 } + +ifSpecific OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "A reference to MIB definitions specific to the particular + media being used to realize the interface. It is + + + recommended that this value point to an instance of a MIB + object in the media-specific MIB, i.e., that this object + have the semantics associated with the InstancePointer + textual convention defined in RFC 2579. In fact, it is + recommended that the media-specific MIB specify what value + ifSpecific should/can take for values of ifType. If no MIB + definitions specific to the particular media are available, + the value should be set to the OBJECT IDENTIFIER { 0 0 }." + ::= { ifEntry 22 } + + + +-- +-- Extension to the interface table +-- +-- This table replaces the ifExtnsTable table. +-- + +ifXTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of interface entries. The number of entries is + given by the value of ifNumber. This table contains + additional objects for the interface table." + ::= { ifMIBObjects 1 } + +ifXEntry OBJECT-TYPE + SYNTAX IfXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing additional management information + applicable to a particular interface." + AUGMENTS { ifEntry } + ::= { ifXTable 1 } + +IfXEntry ::= + SEQUENCE { + ifName DisplayString, + ifInMulticastPkts Counter32, + ifInBroadcastPkts Counter32, + ifOutMulticastPkts Counter32, + ifOutBroadcastPkts Counter32, + ifHCInOctets Counter64, + ifHCInUcastPkts Counter64, + ifHCInMulticastPkts Counter64, + + + ifHCInBroadcastPkts Counter64, + ifHCOutOctets Counter64, + ifHCOutUcastPkts Counter64, + ifHCOutMulticastPkts Counter64, + ifHCOutBroadcastPkts Counter64, + ifLinkUpDownTrapEnable INTEGER, + ifHighSpeed Gauge32, + ifPromiscuousMode TruthValue, + ifConnectorPresent TruthValue, + ifAlias DisplayString, + ifCounterDiscontinuityTime TimeStamp + } + + +ifName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual name of the interface. The value of this + object should be the name of the interface as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name, such as `le0' or a simple port number, such as `1', + depending on the interface naming syntax of the device. If + several entries in the ifTable together represent a single + interface as named by the device, then each will have the + same value of ifName. Note that for an agent which responds + to SNMP queries concerning an interface on some other + (proxied) device, then the value of ifName for such an + interface is the proxied device's local name for it. + + If there is no local name, or this object is otherwise not + applicable, then this object contains a zero-length string." + ::= { ifXEntry 1 } + +ifInMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 2 } + +ifInBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 3 } + +ifOutMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 4 } + +ifOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 5 } + +-- +-- High Capacity Counter objects. These objects are all +-- 64 bit versions of the "basic" ifTable counters. These +-- objects all have the same basic semantics as their 32-bit +-- counterparts, however, their syntax has been extended +-- to 64 bits. +-- + +ifHCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received on the interface, + including framing characters. This object is a 64-bit + version of ifInOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 6 } + +ifHCInUcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. This object is a + 64-bit version of ifInUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 7 } + +ifHCInMulticastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifInMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 8 } + +ifHCInBroadcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. This object is a 64-bit version + of ifInBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 9 } + +ifHCOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters. This object is a + 64-bit version of ifOutOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 10 } + +ifHCOutUcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. This object is a + 64-bit version of ifOutUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 11 } + +ifHCOutMulticastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifOutMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 12 } + +ifHCOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. This object is a 64-bit version + of ifOutBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 13 } + +ifLinkUpDownTrapEnable OBJECT-TYPE + + + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether linkUp/linkDown traps should be generated + for this interface. + + By default, this object should have the value enabled(1) for + interfaces which do not operate on 'top' of any other + interface (as defined in the ifStackTable), and disabled(2) + otherwise." + ::= { ifXEntry 14 } + +ifHighSpeed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the interface's current bandwidth in units + of 1,000,000 bits per second. If this object reports a + value of `n' then the speed of the interface is somewhere in + the range of `n-500,000' to `n+499,999'. For interfaces + which do not vary in bandwidth or for those where no + accurate estimation can be made, this object should contain + the nominal bandwidth. For a sub-layer which has no concept + of bandwidth, this object should be zero." + ::= { ifXEntry 15 } + +ifPromiscuousMode OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object has a value of false(2) if this interface only + accepts packets/frames that are addressed to this station. + This object has a value of true(1) when the station accepts + all packets/frames transmitted on the media. The value + true(1) is only legal on certain types of media. If legal, + setting this object to a value of true(1) may require the + interface to be reset before becoming effective. + + The value of ifPromiscuousMode does not affect the reception + of broadcast and multicast packets/frames by the interface." + ::= { ifXEntry 16 } + +ifConnectorPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise." + ::= { ifXEntry 17 } + +ifAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is an 'alias' name for the interface as + specified by a network manager, and provides a non-volatile + 'handle' for the interface. + + On the first instantiation of an interface, the value of + ifAlias associated with that interface is the zero-length + string. As and when a value is written into an instance of + ifAlias through a network management set operation, then the + agent must retain the supplied value in the ifAlias instance + associated with the same interface for as long as that + interface remains instantiated, including across all re- + initializations/reboots of the network management system, + including those which result in a change of the interface's + ifIndex value. + + An example of the value which a network manager might store + in this object for a WAN interface is the (Telco's) circuit + number/identifier of the interface. + + Some agents may support write-access only for interfaces + having particular values of ifType. An agent which supports + write access to this object is required to keep the value in + non-volatile storage, but it may limit the length of new + values depending on how much storage is already occupied by + the current values for other interfaces." + ::= { ifXEntry 18 } + +ifCounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this interface's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + + + Counter64 object contained in the ifTable or ifXTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ifXEntry 19 } + +-- The Interface Stack Group +-- +-- Implementation of this group is optional, but strongly recommended +-- for all systems +-- + +ifStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing information on the relationships + between the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'on top of' which other sub-layers, where each sub-layer + corresponds to a conceptual row in the ifTable. For + example, when the sub-layer with ifIndex value x runs over + the sub-layer with ifIndex value y, then this table + contains: + + ifStackStatus.x.y=active + + For each ifIndex value, I, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with I. For one of these rows, I + is the value of ifStackHigherLayer; for the other, I is the + value of ifStackLowerLayer. (If I is not involved in + multiplexing, then these are the only two rows associated + with I.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifStackStatus.0.x=active + ifStackStatus.x.0=active " + ::= { ifMIBObjects 2 } + + +ifStackEntry OBJECT-TYPE + SYNTAX IfStackEntry + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs on 'top' of the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable." + INDEX { ifStackHigherLayer, ifStackLowerLayer } + ::= { ifStackTable 1 } + + +IfStackEntry ::= + SEQUENCE { + ifStackHigherLayer InterfaceIndexOrZero, + ifStackLowerLayer InterfaceIndexOrZero, + ifStackStatus RowStatus + } + + +ifStackHigherLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex corresponding to the higher sub-layer + of the relationship, i.e., the sub-layer which runs on 'top' + of the sub-layer identified by the corresponding instance of + ifStackLowerLayer. If there is no higher sub-layer (below + the internetwork layer), then this object has the value 0." + ::= { ifStackEntry 1 } + + +ifStackLowerLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex corresponding to the lower sub-layer + of the relationship, i.e., the sub-layer which runs 'below' + the sub-layer identified by the corresponding instance of + ifStackHigherLayer. If there is no lower sub-layer, then + this object has the value 0." + ::= { ifStackEntry 2 } + + +ifStackStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The status of the relationship between two sub-layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have consequences up + and down the interface stack. Thus, write access to this + object is likely to be inappropriate for some types of + interfaces, and many implementations will choose not to + support write-access for any type of interface." + ::= { ifStackEntry 3 } + +ifStackLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last change of + the (whole) interface stack. A change of the interface + stack is defined to be any creation, deletion, or change in + value of any instance of ifStackStatus. If the interface + stack has been unchanged since the last re-initialization of + the local network management subsystem, then this object + contains a zero value." + ::= { ifMIBObjects 6 } + + +-- Generic Receive Address Table +-- +-- This group of objects is mandatory for all types of +-- interfaces which can receive packets/frames addressed to +-- more than one address. +-- +-- This table replaces the ifExtnsRcvAddr table. The main +-- difference is that this table makes use of the RowStatus +-- textual convention, while ifExtnsRcvAddr did not. + +ifRcvAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfRcvAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains an entry for each address (broadcast, + multicast, or uni-cast) for which the system will receive + packets/frames on a particular interface, except as follows: + + - for an interface operating in promiscuous mode, entries + are only required for those addresses for which the system + would receive frames were it not operating in promiscuous + mode. + + + - for 802.5 functional addresses, only one entry is + required, for the address which has the functional address + bit ANDed with the bit mask of all functional addresses for + which the interface will accept frames. + + A system is normally able to use any unicast address which + corresponds to an entry in this table as a source address." + ::= { ifMIBObjects 4 } + +ifRcvAddressEntry OBJECT-TYPE + SYNTAX IfRcvAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of objects identifying an address for which the + system will accept packets/frames on the particular + interface identified by the index value ifIndex." + INDEX { ifIndex, ifRcvAddressAddress } + ::= { ifRcvAddressTable 1 } + +IfRcvAddressEntry ::= + SEQUENCE { + ifRcvAddressAddress PhysAddress, + ifRcvAddressStatus RowStatus, + ifRcvAddressType INTEGER + } + +ifRcvAddressAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An address for which the system will accept packets/frames + on this entry's interface." + ::= { ifRcvAddressEntry 1 } + +ifRcvAddressStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + ifRcvAddressTable." + + ::= { ifRcvAddressEntry 2 } + +ifRcvAddressType OBJECT-TYPE + SYNTAX INTEGER { + + + other(1), + volatile(2), + nonVolatile(3) + } + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object has the value nonVolatile(3) for those entries + in the table which are valid and will not be deleted by the + next restart of the managed system. Entries having the + value volatile(2) are valid and exist, but have not been + saved, so that will not exist after the next restart of the + managed system. Entries having the value other(1) are valid + and exist but are not classified as to whether they will + continue to exist after the next restart." + + DEFVAL { volatile } + ::= { ifRcvAddressEntry 3 } + +-- definition of interface-related traps. + +linkDown NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus." + ::= { snmpTraps 3 } + +linkUp NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus." + ::= { snmpTraps 4 } + +-- conformance information + + + +ifConformance OBJECT IDENTIFIER ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER ::= { ifConformance 1 } +ifCompliances OBJECT IDENTIFIER ::= { ifConformance 2 } + + +-- compliance statements + +ifCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which have + network interfaces." + + MODULE -- this module + MANDATORY-GROUPS { ifGeneralInformationGroup, + linkUpDownNotificationsGroup } + +-- The groups: +-- ifFixedLengthGroup +-- ifHCFixedLengthGroup +-- ifPacketGroup +-- ifHCPacketGroup +-- ifVHCPacketGroup +-- are mutually exclusive; at most one of these groups is implemented +-- for a particular interface. When any of these groups is implemented +-- for a particular interface, then ifCounterDiscontinuityGroup must +-- also be implemented for that interface. + + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for those network interfaces which + are character-oriented or transmit data in fixed-length + transmission units, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory for those network interfaces which + are character-oriented or transmit data in fixed-length + transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + + + "This group is mandatory for those network interfaces which + are packet-oriented, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second." + + GROUP ifVHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + + GROUP ifCounterDiscontinuityGroup + DESCRIPTION + "This group is mandatory for those network interfaces that + are required to maintain counters (i.e., those for which one + of the ifFixedLengthGroup, ifHCFixedLengthGroup, + ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is + mandatory)." + + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifAdminStatus + + + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + + OBJECT ifAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { ifCompliances 3 } + +-- units of conformance + +ifGeneralInformationGroup OBJECT-GROUP + OBJECTS { ifIndex, ifDescr, ifType, ifSpeed, ifPhysAddress, + ifAdminStatus, ifOperStatus, ifLastChange, + ifLinkUpDownTrapEnable, ifConnectorPresent, + ifHighSpeed, ifName, ifNumber, ifAlias, + ifTableLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing information applicable to + all network interfaces." + ::= { ifGroups 10 } + +-- the following five groups are mutually exclusive; at most +-- one of these groups is implemented for any interface + +ifFixedLengthGroup OBJECT-GROUP + OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) character-oriented or fixed-length-transmission + network interfaces." + ::= { ifGroups 2 } + +ifHCFixedLengthGroup OBJECT-GROUP + OBJECTS { ifHCInOctets, ifHCOutOctets, + ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors } + STATUS current + DESCRIPTION + + + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second) character- + oriented or fixed-length-transmission network interfaces." + ::= { ifGroups 3 } + +ifPacketGroup OBJECT-GROUP + OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors, + ifMtu, ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, + ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) packet-oriented network interfaces." + ::= { ifGroups 4 } + +ifHCPacketGroup OBJECT-GROUP + OBJECTS { ifHCInOctets, ifHCOutOctets, + ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors, + ifMtu, ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, + ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second but less + than or equal to 650,000,000 bits/second) packet-oriented + network interfaces." + ::= { ifGroups 5 } + +ifVHCPacketGroup OBJECT-GROUP + OBJECTS { ifHCInUcastPkts, ifHCInMulticastPkts, + ifHCInBroadcastPkts, ifHCOutUcastPkts, + ifHCOutMulticastPkts, ifHCOutBroadcastPkts, + ifHCInOctets, ifHCOutOctets, + ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors, + ifMtu, ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, + ifOutUcastPkts, ifOutMulticastPkts, + + + ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + higher speed (greater than 650,000,000 bits/second) packet- + oriented network interfaces." + ::= { ifGroups 6 } + +ifRcvAddressGroup OBJECT-GROUP + OBJECTS { ifRcvAddressStatus, ifRcvAddressType } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + multiple addresses which an interface receives." + ::= { ifGroups 7 } + +ifStackGroup2 OBJECT-GROUP + OBJECTS { ifStackStatus, ifStackLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + layering of MIB-II interfaces." + ::= { ifGroups 11 } + +ifCounterDiscontinuityGroup OBJECT-GROUP + OBJECTS { ifCounterDiscontinuityTime } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + interface counter discontinuities." + ::= { ifGroups 13 } + +linkUpDownNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { linkUp, linkDown } + STATUS current + DESCRIPTION + "The notifications which indicate specific changes in the + value of ifOperStatus." + ::= { ifGroups 14 } + +-- Deprecated Definitions - Objects + + +-- +-- The Interface Test Table +-- +-- This group of objects is optional. However, a media-specific + + +-- MIB may make implementation of this group mandatory. +-- +-- This table replaces the ifExtnsTestTable +-- + +ifTestTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfTestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table contains one entry per interface. It defines + objects which allow a network manager to instruct an agent + to test an interface for various faults. Tests for an + interface are defined in the media-specific MIB for that + interface. After invoking a test, the object ifTestResult + can be read to determine the outcome. If an agent can not + perform the test, ifTestResult is set to so indicate. The + object ifTestCode can be used to provide further test- + specific or interface-specific (or even enterprise-specific) + information concerning the outcome of the test. Only one + test can be in progress on each interface at any one time. + If one test is in progress when another test is invoked, the + second test is rejected. Some agents may reject a test when + a prior test is active on another interface. + + Before starting a test, a manager-station must first obtain + 'ownership' of the entry in the ifTestTable for the + interface to be tested. This is accomplished with the + ifTestId and ifTestStatus objects as follows: + + try_again: + get (ifTestId, ifTestStatus) + while (ifTestStatus != notInUse) + /* + * Loop while a test is running or some other + * manager is configuring a test. + */ + short delay + get (ifTestId, ifTestStatus) + } + + /* + * Is not being used right now -- let's compete + * to see who gets it. + */ + lock_value = ifTestId + + if ( set(ifTestId = lock_value, ifTestStatus = inUse, + + + ifTestOwner = 'my-IP-address') == FAILURE) + /* + * Another manager got the ifTestEntry -- go + * try again + */ + goto try_again; + + /* + * I have the lock + */ + set up any test parameters. + + /* + * This starts the test + */ + set(ifTestType = test_to_run); + + wait for test completion by polling ifTestResult + + when test completes, agent sets ifTestResult + agent also sets ifTestStatus = 'notInUse' + + retrieve any additional test results, and ifTestId + + if (ifTestId == lock_value+1) results are valid + + A manager station first retrieves the value of the + appropriate ifTestId and ifTestStatus objects, periodically + repeating the retrieval if necessary, until the value of + ifTestStatus is 'notInUse'. The manager station then tries + to set the same ifTestId object to the value it just + retrieved, the same ifTestStatus object to 'inUse', and the + corresponding ifTestOwner object to a value indicating + itself. If the set operation succeeds then the manager has + obtained ownership of the ifTestEntry, and the value of the + ifTestId object is incremented by the agent (per the + semantics of TestAndIncr). Failure of the set operation + indicates that some other manager has obtained ownership of + the ifTestEntry. + + Once ownership is obtained, any test parameters can be + setup, and then the test is initiated by setting ifTestType. + On completion of the test, the agent sets ifTestStatus to + 'notInUse'. Once this occurs, the manager can retrieve the + results. In the (rare) event that the invocation of tests + by two network managers were to overlap, then there would be + a possibility that the first test's results might be + overwritten by the second test's results prior to the first + + + results being read. This unlikely circumstance can be + detected by a network manager retrieving ifTestId at the + same time as retrieving the test results, and ensuring that + the results are for the desired request. + + If ifTestType is not set within an abnormally long period of + time after ownership is obtained, the agent should time-out + the manager, and reset the value of the ifTestStatus object + back to 'notInUse'. It is suggested that this time-out + period be 5 minutes. + + In general, a management station must not retransmit a + request to invoke a test for which it does not receive a + response; instead, it properly inspects an agent's MIB to + determine if the invocation was successful. Only if the + invocation was unsuccessful, is the invocation request + retransmitted. + + Some tests may require the interface to be taken off-line in + order to execute them, or may even require the agent to + reboot after completion of the test. In these + circumstances, communication with the management station + invoking the test may be lost until after completion of the + test. An agent is not required to support such tests. + However, if such tests are supported, then the agent should + make every effort to transmit a response to the request + which invoked the test prior to losing communication. When + the agent is restored to normal service, the results of the + test are properly made available in the appropriate objects. + Note that this requires that the ifIndex value assigned to + an interface must be unchanged even if the test causes a + reboot. An agent must reject any test for which it cannot, + perhaps due to resource constraints, make available at least + the minimum amount of information after that test + completes." + ::= { ifMIBObjects 3 } + +ifTestEntry OBJECT-TYPE + SYNTAX IfTestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry containing objects for invoking tests on an + interface." + AUGMENTS { ifEntry } + ::= { ifTestTable 1 } + +IfTestEntry ::= + + + SEQUENCE { + ifTestId TestAndIncr, + ifTestStatus INTEGER, + ifTestType AutonomousType, + ifTestResult INTEGER, + ifTestCode OBJECT IDENTIFIER, + ifTestOwner OwnerString + } + +ifTestId OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "This object identifies the current invocation of the + interface's test." + ::= { ifTestEntry 1 } + +ifTestStatus OBJECT-TYPE + SYNTAX INTEGER { notInUse(1), inUse(2) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "This object indicates whether or not some manager currently + has the necessary 'ownership' required to invoke a test on + this interface. A write to this object is only successful + when it changes its value from 'notInUse(1)' to 'inUse(2)'. + After completion of a test, the agent resets the value back + to 'notInUse(1)'." + ::= { ifTestEntry 2 } + +ifTestType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control variable used to start and stop operator- + initiated interface tests. Most OBJECT IDENTIFIER values + assigned to tests are defined elsewhere, in association with + specific types of interface. However, this document assigns + a value for a full-duplex loopback test, and defines the + special meanings of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + + When the value noTest is written to this object, no action + is taken unless a test is in progress, in which case the + test is aborted. Writing any other value to this object is + + + only valid when no test is currently in progress, in which + case the indicated test is initiated. + + When read, this object always returns the most recent value + that ifTestType was set to. If it has not been set since + the last initialization of the network management subsystem + on the agent, a value of noTest is returned." + ::= { ifTestEntry 3 } + +ifTestResult OBJECT-TYPE + SYNTAX INTEGER { + none(1), -- no test yet requested + success(2), + inProgress(3), + notSupported(4), + unAbleToRun(5), -- due to state of system + aborted(6), + failed(7) + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object contains the result of the most recently + requested test, or the value none(1) if no tests have been + requested since the last reset. Note that this facility + provides no provision for saving the results of one test + when starting another, as could be required if used by + multiple managers concurrently." + ::= { ifTestEntry 4 } + +ifTestCode OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object contains a code which contains more specific + information on the test result, for example an error-code + after a failed test. Error codes and other values this + object may take are specific to the type of interface and/or + test. The value may have the semantics of either the + AutonomousType or InstancePointer textual conventions as + defined in RFC 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available." + ::= { ifTestEntry 5 } + + +ifTestOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity which currently has the 'ownership' required to + invoke a test on this interface." + ::= { ifTestEntry 6 } + +-- Deprecated Definitions - Groups + + +ifGeneralGroup OBJECT-GROUP + OBJECTS { ifDescr, ifType, ifSpeed, ifPhysAddress, + ifAdminStatus, ifOperStatus, ifLastChange, + ifLinkUpDownTrapEnable, ifConnectorPresent, + ifHighSpeed, ifName } + STATUS deprecated + DESCRIPTION + "A collection of objects deprecated in favour of + ifGeneralInformationGroup." + ::= { ifGroups 1 } + + +ifTestGroup OBJECT-GROUP + OBJECTS { ifTestId, ifTestStatus, ifTestType, + ifTestResult, ifTestCode, ifTestOwner } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the ability to invoke + tests on an interface." + ::= { ifGroups 8 } + + +ifStackGroup OBJECT-GROUP + OBJECTS { ifStackStatus } + STATUS deprecated + DESCRIPTION + "The previous collection of objects providing information on + the layering of MIB-II interfaces." + ::= { ifGroups 9 } + + +ifOldObjectsGroup OBJECT-GROUP + OBJECTS { ifInNUcastPkts, ifOutNUcastPkts, + ifOutQLen, ifSpecific } + STATUS deprecated + DESCRIPTION + + + "The collection of objects deprecated from the original MIB- + II interfaces group." + ::= { ifGroups 12 } + +-- Deprecated Definitions - Compliance + +ifCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces." + + MODULE -- this module + MANDATORY-GROUPS { ifGeneralGroup, ifStackGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are character-oriented or transmit data in fixed- + length transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are packet-oriented." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + GROUP ifTestGroup + DESCRIPTION + "This group is optional. Media-specific MIBs which require + interface tests are strongly encouraged to use this group + for invoking tests and reporting results. A medium specific + MIB which has mandatory tests may make implementation of + + + this group mandatory." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifStackStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + ::= { ifCompliances 1 } + +ifCompliance2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces." + + MODULE -- this module + MANDATORY-GROUPS { ifGeneralInformationGroup, ifStackGroup2, + ifCounterDiscontinuityGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + + + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are character-oriented or transmit data in fixed- + length transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are packet-oriented." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifStackStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + + OBJECT ifAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { ifCompliances 2 } + +END diff --git a/mibs/ietf/IFCP-MGMT-MIB b/mibs/ietf/IFCP-MGMT-MIB new file mode 100644 index 0000000..7ff80a6 --- /dev/null +++ b/mibs/ietf/IFCP-MGMT-MIB @@ -0,0 +1,1076 @@ +IFCP-MGMT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Gauge32, + Integer32, + Unsigned32, + transmission + FROM SNMPv2-SMI + + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF + + TEXTUAL-CONVENTION, + TimeStamp, + TruthValue, + StorageType + FROM SNMPv2-TC + +-- From RFC 2021 + ZeroBasedCounter32 + FROM RMON2-MIB + +-- From RFC 2856 + ZeroBasedCounter64 + FROM HCNUM-TC + +-- From RFC 2863 + InterfaceIndexOrZero + FROM IF-MIB + +-- From RFC 3411 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + +-- From RFC 4001 + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB + +-- From RFC 4044 + FcNameIdOrZero, + FcAddressIdOrZero + + + + FROM FC-MGMT-MIB + +-- From RFC 4133 + PhysicalIndexOrZero + FROM ENTITY-MIB + ; + +ifcpMgmtMIB MODULE-IDENTITY + LAST-UPDATED "200601170000Z" + ORGANIZATION "IETF IPS Working Group" + CONTACT-INFO " + Attn: Kevin Gibbons + McDATA Corporation + 4555 Great America Pkwy + Santa Clara, CA 95054-1208 USA + Phone: (408) 567-5765 + EMail: kevin.gibbons@mcdata.com + + Charles Monia + Consultant + 7553 Morevern Circle + San Jose, CA 95135 USA + EMail: charles_monia@yahoo.com + + Josh Tseng + Riverbed Technology + 501 2nd Street, Suite 410 + San Francisco, CA 94107 USA + Phone: (650) 274-2109 + EMail: joshtseng@yahoo.com + + Franco Travostino + Nortel + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: (978) 288-7708 + EMail: travos@nortel.com" + + DESCRIPTION + "This module defines management information specific + to internet Fibre Channel Protocol (iFCP) gateway + management. + + Copyright (C) The Internet Society 2006. This + version of this MIB module is part of RFC 4369; see + the RFC itself for full legal notices." + REVISION "200601170000Z" + DESCRIPTION + + + + "Initial version of iFCP Management Module. + This MIB published as RFC 4369." + ::= { transmission 230 } + +-- +-- Textual Conventions +-- + + IfcpIpTOVorZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The maximum propagation delay, in seconds, + for an encapsulated FC frame to traverse the + IP network. A value of 0 implies fibre + channel frame lifetime limits will not be + enforced." + REFERENCE "RFC 4172, iFCP Protocol Specification" + SYNTAX Unsigned32 (0..3600) + + IfcpLTIorZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The value for the Liveness Test Interval + (LTI) being used in an iFCP connection, in + seconds. A value of 0 implies no Liveness + Test Interval will be used." + REFERENCE "RFC 4172, iFCP Protocol Specification" + SYNTAX Unsigned32 (0..65535) + + IfcpSessionStates ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "The value for an iFCP session state." + SYNTAX INTEGER {down(1), openPending(2), open(3)} + + IfcpAddressMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "The values for iFCP Address Translation + Mode." + REFERENCE "RFC 4172, iFCP Protocol Specification" + SYNTAX INTEGER {addressTransparent(1), + addressTranslation(2)} + +-- +-- Internet Fibre Channel Protocol (iFCP) +-- + +ifcpGatewayObjects OBJECT IDENTIFIER ::= {ifcpMgmtMIB 1} +ifcpGatewayConformance OBJECT IDENTIFIER ::= {ifcpMgmtMIB 2} + + + + +-- +-- Local iFCP Gateway Instance Information ================== +-- + +ifcpLclGatewayInfo OBJECT IDENTIFIER ::= {ifcpGatewayObjects 1} + +ifcpLclGtwyInstTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfcpLclGtwyInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"Information about all local iFCP Gateway instances that can + be monitored and controlled. This table contains an entry + for each local iFCP Gateway instance that is being managed." + ::= {ifcpLclGatewayInfo 1} + +ifcpLclGtwyInstEntry OBJECT-TYPE + SYNTAX IfcpLclGtwyInstEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"An entry in the local iFCP Gateway Instance table. + Parameters and settings for the gateway are found here." + INDEX { ifcpLclGtwyInstIndex } + ::= {ifcpLclGtwyInstTable 1} + +IfcpLclGtwyInstEntry ::= SEQUENCE { + ifcpLclGtwyInstIndex Unsigned32, + ifcpLclGtwyInstPhyIndex PhysicalIndexOrZero, + ifcpLclGtwyInstVersionMin Unsigned32, + ifcpLclGtwyInstVersionMax Unsigned32, + ifcpLclGtwyInstAddrTransMode IfcpAddressMode, + ifcpLclGtwyInstFcBrdcstSupport TruthValue, + ifcpLclGtwyInstDefaultIpTOV IfcpIpTOVorZero, + ifcpLclGtwyInstDefaultLTInterval IfcpLTIorZero, + ifcpLclGtwyInstDescr SnmpAdminString, + ifcpLclGtwyInstNumActiveSessions Gauge32, + ifcpLclGtwyInstStorageType StorageType + } + +ifcpLclGtwyInstIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"An arbitrary integer value to uniquely identify this iFCP + Gateway from other local Gateway instances." + + + + ::= {ifcpLclGtwyInstEntry 1} + +ifcpLclGtwyInstPhyIndex OBJECT-TYPE + SYNTAX PhysicalIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"An index indicating the location of this local gateway within + a larger entity, if one exists. If supported, this is the + entPhysicalIndex from the Entity MIB (Version 3), for this + iFCP Gateway. If not supported, or if not related to a + physical entity, then the value of this object is 0." + REFERENCE "Entity MIB (Version 3)" + ::= {ifcpLclGtwyInstEntry 2} + +ifcpLclGtwyInstVersionMin OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The minimum iFCP protocol version supported by the local iFCP + gateway instance." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpLclGtwyInstEntry 3} + +ifcpLclGtwyInstVersionMax OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The maximum iFCP protocol version supported by the local iFCP + gateway instance." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpLclGtwyInstEntry 4} + +ifcpLclGtwyInstAddrTransMode OBJECT-TYPE + SYNTAX IfcpAddressMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"The local iFCP gateway operating mode. Changing this value + may cause existing sessions to be disrupted." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { addressTranslation } + ::= {ifcpLclGtwyInstEntry 5} + +ifcpLclGtwyInstFcBrdcstSupport OBJECT-TYPE + SYNTAX TruthValue + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"Whether the local iFCP gateway supports FC Broadcast. + Changing this value may cause existing sessions to be + disrupted." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { false } + ::= {ifcpLclGtwyInstEntry 6} + +ifcpLclGtwyInstDefaultIpTOV OBJECT-TYPE + SYNTAX IfcpIpTOVorZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"The default IP_TOV used for iFCP sessions at this gateway. + This is the default maximum propagation delay that will be + used for an iFCP session. The value can be changed on a + per-session basis. The valid range is 0 - 3600 seconds. + A value of 0 implies that fibre channel frame lifetime limits + will not be enforced." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { 6 } + ::= {ifcpLclGtwyInstEntry 7} + +ifcpLclGtwyInstDefaultLTInterval OBJECT-TYPE + SYNTAX IfcpLTIorZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"The default Liveness Test Interval (LTI), in seconds, used + for iFCP sessions at this gateway. This is the default + value for an iFCP session and can be changed on a + per-session basis. The valid range is 0 - 65535 seconds. + A value of 0 implies no Liveness Test Interval will be + performed on a session." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { 10 } + ::= {ifcpLclGtwyInstEntry 8} + +ifcpLclGtwyInstDescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"A user-entered description for this iFCP Gateway." + DEFVAL { "" } + ::= {ifcpLclGtwyInstEntry 9} + + + + +ifcpLclGtwyInstNumActiveSessions OBJECT-TYPE + SYNTAX Gauge32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The current total number of iFCP sessions in the open or + open-pending state." + ::= {ifcpLclGtwyInstEntry 10} + +ifcpLclGtwyInstStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The storage type for this row. Parameter values defined + for a gateway are usually non-volatile, but may be volatile + or permanent in some configurations. If permanent, then + the following parameters must have read-write access: + ifcpLclGtwyInstAddrTransMode, ifcpLclGtwyInstDefaultIpTOV, + and ifcpLclGtwyInstDefaultLTInterval." + DEFVAL { nonVolatile } + ::= {ifcpLclGtwyInstEntry 11} + +-- +-- iFCP N Port Session Information ============================ +-- + +ifcpNportSessionInfo + OBJECT IDENTIFIER ::= {ifcpGatewayObjects 2} + +ifcpSessionAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IfcpSessionAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"An iFCP session consists of the pair of N_PORTs comprising + the session endpoints joined by a single TCP/IP connection. + This table provides information on each iFCP session + currently using a local iFCP Gateway instance. iFCP sessions + are created and removed by the iFCP Gateway instances, which + are reflected in this table." + ::= {ifcpNportSessionInfo 1} + +ifcpSessionAttributesEntry OBJECT-TYPE + SYNTAX IfcpSessionAttributesEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION +"Each entry contains information about one iFCP session consisting + of a pair of N_PORTs joined by a single TCP/IP connection. This + table's INDEX includes ifcpLclGtwyInstIndex, which identifies the + local iFCP Gateway instance that created the session for the + entry. + + Soon after an entry is created in this table for an iFCP session, it + will correspond to an entry in the tcpConnectionTable of the TCP-MIB + (RFC 4022). The corresponding entry might represent a preexisting + TCP connection, or it might be a newly-created entry. (Note that if + IPv4 is being used, an entry in RFC 2012's tcpConnTable may also + correspond.) The values of ifcpSessionLclPrtlAddrType and + ifcpSessionRmtPrtlIfAddrType in this table and the values of + tcpConnectionLocalAddressType and tcpConnectionRemAddressType used + as INDEX values for the corresponding entry in the + tcpConnectionTable should be the same; this makes it simpler to + locate a session's TCP connection in the TCP-MIB. (Of course, all + four values need to be 'ipv4' if there's a corresponding entry in + the tcpConnTable.) + + If an entry is created in this table for a session, prior to + knowing which local and/or remote port numbers will be used for + the TCP connection, then ifcpSessionLclPrtlTcpPort and/or + ifcpSessionRmtPrtlTcpPort have the value zero until such time as + they can be updated to the port numbers (to be) used for the + connection. (Thus, a port value of zero should not be used to + locate a session's TCP connection in the TCP-MIB.) + + When the TCP connection terminates, the entry in the + tcpConnectionTable and the entry in this table both get deleted + (and, if applicable, so does the entry in the tcpConnTable)." + INDEX { ifcpLclGtwyInstIndex, ifcpSessionIndex } + ::= {ifcpSessionAttributesTable 1} + +IfcpSessionAttributesEntry ::= SEQUENCE { + ifcpSessionIndex Integer32, + ifcpSessionLclPrtlIfIndex InterfaceIndexOrZero, + ifcpSessionLclPrtlAddrType InetAddressType, + ifcpSessionLclPrtlAddr InetAddress, + ifcpSessionLclPrtlTcpPort InetPortNumber, + ifcpSessionLclNpWwun FcNameIdOrZero, + ifcpSessionLclNpFcid FcAddressIdOrZero, + ifcpSessionRmtNpWwun FcNameIdOrZero, + ifcpSessionRmtPrtlIfAddrType InetAddressType, + ifcpSessionRmtPrtlIfAddr InetAddress, + ifcpSessionRmtPrtlTcpPort InetPortNumber, + + + + ifcpSessionRmtNpFcid FcAddressIdOrZero, + ifcpSessionRmtNpFcidAlias FcAddressIdOrZero, + ifcpSessionIpTOV IfcpIpTOVorZero, + ifcpSessionLclLTIntvl IfcpLTIorZero, + ifcpSessionRmtLTIntvl IfcpLTIorZero, + ifcpSessionBound TruthValue, + ifcpSessionStorageType StorageType + } + +ifcpSessionIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"The iFCP session index is a unique value used as an index + to the table, along with a specific local iFCP Gateway + instance. This index is used because the local N Port and + remote N Port information would create an complex index that + would be difficult to implement." + ::= {ifcpSessionAttributesEntry 1} + +ifcpSessionLclPrtlIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This is the interface index in the IF-MIB ifTable being used + as the local portal in this session, as described in the + IF-MIB. If the local portal is not associated with an entry + in the ifTable, then the value is 0. The ifType of the + interface will generally be a type that supports IP, but an + implementation may support iFCP using other protocols. This + object can be used to obtain additional information about the + interface." + REFERENCE "RFC 2863, The Interfaces Group MIB (IF-MIB)" + ::= {ifcpSessionAttributesEntry 2} + +ifcpSessionLclPrtlAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The type of address in ifcpSessionLclIfAddr." + ::= {ifcpSessionAttributesEntry 3} + +ifcpSessionLclPrtlAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION +"This is the external IP address of the interface being used + for the iFCP local portal in this session. The address type + is defined in ifcpSessionLclPrtlAddrType. If the value is a + DNS name, then the name is resolved once, during the initial + session instantiation." + ::= {ifcpSessionAttributesEntry 4} + +ifcpSessionLclPrtlTcpPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This is the TCP port number that is being used for the iFCP + local portal in this session. This is normally an ephemeral + port number selected by the gateway. The value may be 0 + during an initial setup period." + ::= {ifcpSessionAttributesEntry 5} + +ifcpSessionLclNpWwun OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"World Wide Unique Name of the local N Port. For an unbound + session, this variable will be a zero-length string." + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { "" } + ::= {ifcpSessionAttributesEntry 6} + +ifcpSessionLclNpFcid OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"Fibre Channel Identifier of the local N Port. For an unbound + session, this variable will be a zero-length string." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 7} + +ifcpSessionRmtNpWwun OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"World Wide Unique Name of the remote N Port. For an unbound + session, this variable will be a zero-length string." + + + + REFERENCE "RFC 4172, iFCP Protocol Specification" + DEFVAL { "" } + ::= {ifcpSessionAttributesEntry 8} + +ifcpSessionRmtPrtlIfAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The type of address in ifcpSessionRmtPrtlIfAddr." + ::= {ifcpSessionAttributesEntry 9} + +ifcpSessionRmtPrtlIfAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This is the remote gateway IP address being used for the + portal on the remote iFCP gateway. The address type is + defined in ifcpSessionRmtPrtlIfAddrType. If the value is a + DNS name, then the name is resolved once, during the initial + session instantiation." + ::= {ifcpSessionAttributesEntry 10} + +ifcpSessionRmtPrtlTcpPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This is the TCP port number being used for the portal on the + remote iFCP gateway. Generally, this will be the iFCP + canonical port. The value may be 0 during an initial setup + period." + DEFVAL { 3420 } + ::= {ifcpSessionAttributesEntry 11} + +ifcpSessionRmtNpFcid OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"Fibre Channel Identifier of the remote N Port. For an + unbound session, this variable will be a zero-length string." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 12} + +ifcpSessionRmtNpFcidAlias OBJECT-TYPE + SYNTAX FcAddressIdOrZero + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"Fibre Channel Identifier Alias assigned by the local gateway + for the remote N Port. For an unbound session, this variable + will be a zero-length string." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 13} + +ifcpSessionIpTOV OBJECT-TYPE + SYNTAX IfcpIpTOVorZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION +"The IP_TOV being used for this iFCP session. This is the + maximum propagation delay that will be used for the iFCP + session. The value can be changed on a per-session basis + and initially defaults to ifcpLclGtwyInstDefaultIpTOV for + the local gateway instance. The valid range is 0 - 3600 + seconds. A value of 0 implies fibre channel frame lifetime + limits will not be enforced." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 14} + +ifcpSessionLclLTIntvl OBJECT-TYPE + SYNTAX IfcpLTIorZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The Liveness Test Interval (LTI) used for this iFCP session. + The value can be changed on a per-session basis and initially + defaults to ifcpLclGtwyInstDefaultLTInterval for the local + gateway instance. The valid range is 0 - 65535 seconds. + A value of 0 implies that the gateway will not originate + Liveness Test messages for the session." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 15} + +ifcpSessionRmtLTIntvl OBJECT-TYPE + SYNTAX IfcpLTIorZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The Liveness Test Interval (LTI) as requested by the remote + gateway instance to use for this iFCP session. This value may + change over the life of the session. The valid range is 0 - + 65535 seconds. A value of 0 implies that the remote gateway + has not been requested to originate Liveness Test messages for + + + + the session." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 16} + +ifcpSessionBound OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This value indicates whether this session is bound to a + specific local and remote N Port. Sessions by default are + unbound and ready for future assignment to a local and remote + N Port." + REFERENCE "RFC 4172, iFCP Protocol Specification" + ::= {ifcpSessionAttributesEntry 17} + +ifcpSessionStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The storage type for this row. Parameter values defined + for a session are usually non-volatile, but may be volatile + or permanent in some configurations. If permanent, then + ifcpSessionIpTOV must have read-write access." + DEFVAL { nonVolatile } + ::= {ifcpSessionAttributesEntry 18} + +-- +-- Local iFCP Gateway Instance Session Statistics ============= +-- + +ifcpSessionStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IfcpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"This table provides statistics on an iFCP session." + ::= {ifcpNportSessionInfo 2} + +ifcpSessionStatsEntry OBJECT-TYPE + SYNTAX IfcpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"Provides iFCP-specific statistics per session." + AUGMENTS {ifcpSessionAttributesEntry} + + + + ::= {ifcpSessionStatsTable 1} + +IfcpSessionStatsEntry ::= SEQUENCE { + ifcpSessionState IfcpSessionStates, + ifcpSessionDuration Unsigned32, + ifcpSessionTxOctets ZeroBasedCounter64, + ifcpSessionRxOctets ZeroBasedCounter64, + ifcpSessionTxFrames ZeroBasedCounter64, + ifcpSessionRxFrames ZeroBasedCounter64, + ifcpSessionStaleFrames ZeroBasedCounter64, + ifcpSessionHeaderCRCErrors ZeroBasedCounter64, + ifcpSessionFcPayloadCRCErrors ZeroBasedCounter64, + ifcpSessionOtherErrors ZeroBasedCounter64, + ifcpSessionDiscontinuityTime TimeStamp + } + +ifcpSessionState OBJECT-TYPE + SYNTAX IfcpSessionStates + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The current session operating state." + ::= {ifcpSessionStatsEntry 1} + +ifcpSessionDuration OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"This indicates, in seconds, how long the iFCP session has + been in an open or open-pending state. When a session is + down, the value is reset to 0." + ::= {ifcpSessionStatsEntry 2} + +ifcpSessionTxOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of octets transmitted by the iFCP gateway + for this session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 3} + +ifcpSessionRxOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of octets received by the iFCP gateway for + this session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 4} + +ifcpSessionTxFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of iFCP frames transmitted by the gateway + for this session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 5} + +ifcpSessionRxFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of iFCP frames received by the gateway + for this session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 6} + +ifcpSessionStaleFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of received iFCP frames that were stale and + discarded by the gateway for this session. Discontinuities + in the value of this counter can occur at reinitialization + of the management system, and at other times as indicated by + the value of ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 7} + +ifcpSessionHeaderCRCErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of CRC errors that occurred in the frame + header, detected by the gateway for this session. Usually, + a single Header CRC error is sufficient to terminate an + iFCP session. Discontinuities in the value of this + counter can occur at reinitialization of the management + system, and at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 8} + +ifcpSessionFcPayloadCRCErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of CRC errors that occurred in the Fibre + Channel frame payload, detected by the gateway for this + session. Discontinuities in the value of this counter can + occur at reinitialization of the management system, and + at other times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 9} + +ifcpSessionOtherErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of errors, other than errors explicitly + measured, detected by the gateway for this session. + Discontinuities in the value of this counter can occur at + reinitialization of the management system, and at other + times as indicated by the value of + ifcpSessionDiscontinuityTime." + ::= {ifcpSessionStatsEntry 10} + +ifcpSessionDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The value of sysUpTime on the most recent occasion at which + any one (or more) of the ifcpSessionStatsTable counters + suffered a discontinuity. The relevant counters are the + specific Counter64-based instances associated with the + ifcpSessionStatsTable: ifcpSessionTxOctets, + + + + ifcpSessionRxOctets, ifcpSessionTxFrames, + ifcpSessionRxFrames, ifcpSessionStaleFrames, + ifcpSessionHeaderCRCErrors, ifcpSessionFcPayloadCRCErrors, + and ifcpSessionOtherErrors. If no such discontinuities have + occurred since the last reinitialization of the local + management subsystem, then this object contains a zero value." + ::= {ifcpSessionStatsEntry 11} + +-- +-- Low Capacity Statistics +-- + +ifcpSessionLcStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IfcpSessionLcStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"This table provides low capacity statistics for an iFCP + session. These are provided for backward compatibility with + systems that do not support Counter64-based objects. At + 1-Gbps rates, a Counter32-based object can wrap as often as + every 34 seconds. Counter32-based objects can be sufficient + for many situations. However, when possible, it is + recommended to use the high capacity statistics in + ifcpSessionStatsTable based on Counter64 objects." + ::= {ifcpNportSessionInfo 3} + +ifcpSessionLcStatsEntry OBJECT-TYPE + SYNTAX IfcpSessionLcStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION +"Provides iFCP-specific statistics per session." + AUGMENTS {ifcpSessionAttributesEntry} + ::= {ifcpSessionLcStatsTable 1} + +IfcpSessionLcStatsEntry ::= SEQUENCE { + ifcpSessionLcTxOctets ZeroBasedCounter32, + ifcpSessionLcRxOctets ZeroBasedCounter32, + ifcpSessionLcTxFrames ZeroBasedCounter32, + ifcpSessionLcRxFrames ZeroBasedCounter32, + ifcpSessionLcStaleFrames ZeroBasedCounter32, + ifcpSessionLcHeaderCRCErrors ZeroBasedCounter32, + ifcpSessionLcFcPayloadCRCErrors ZeroBasedCounter32, + ifcpSessionLcOtherErrors ZeroBasedCounter32 + } + + + + +ifcpSessionLcTxOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of octets transmitted by the iFCP gateway + for this session." + ::= {ifcpSessionLcStatsEntry 1} + +ifcpSessionLcRxOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of octets received by the iFCP gateway for + this session." + ::= {ifcpSessionLcStatsEntry 2} + +ifcpSessionLcTxFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of iFCP frames transmitted by the gateway + for this session." + ::= {ifcpSessionLcStatsEntry 3} + +ifcpSessionLcRxFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of iFCP frames received by the gateway + for this session." + ::= {ifcpSessionLcStatsEntry 4} + +ifcpSessionLcStaleFrames OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of received iFCP frames that were stale and + discarded by the gateway for this session." + ::= {ifcpSessionLcStatsEntry 5} + +ifcpSessionLcHeaderCRCErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION +"The total number of CRC errors that occurred in the frame + header, detected by the gateway for this session. Usually, + a single Header CRC error is sufficient to terminate an + iFCP session." + ::= {ifcpSessionLcStatsEntry 6} + +ifcpSessionLcFcPayloadCRCErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of CRC errors that occurred in the Fibre + Channel frame payload, detected by the gateway for this + session." + ::= {ifcpSessionLcStatsEntry 7} + +ifcpSessionLcOtherErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION +"The total number of errors, other than errors explicitly + measured, detected by the gateway for this session." + ::= {ifcpSessionLcStatsEntry 8} + +--========================================================== + +ifcpCompliances + OBJECT IDENTIFIER ::= {ifcpGatewayConformance 1} + +ifcpGatewayCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION +"Implementation requirements for iFCP MIB compliance." + MODULE -- this module + MANDATORY-GROUPS { + ifcpLclGatewayGroup, + ifcpLclGatewaySessionGroup, + ifcpLclGatewaySessionStatsGroup, + ifcpLclGatewaySessionLcStatsGroup + } + + OBJECT ifcpSessionLclPrtlAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "Support is only required for global IPv4 + + + + and IPv6 address types." + + OBJECT ifcpSessionRmtPrtlIfAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "Support is only required for global IPv4 + and IPv6 address types." + + ::= {ifcpCompliances 1} + +ifcpGroups OBJECT IDENTIFIER ::= {ifcpGatewayConformance 2} + +ifcpLclGatewayGroup OBJECT-GROUP + OBJECTS { + ifcpLclGtwyInstPhyIndex, + ifcpLclGtwyInstVersionMin, + ifcpLclGtwyInstVersionMax, + ifcpLclGtwyInstAddrTransMode, + ifcpLclGtwyInstFcBrdcstSupport, + ifcpLclGtwyInstDefaultIpTOV, + ifcpLclGtwyInstDefaultLTInterval, + ifcpLclGtwyInstDescr, + ifcpLclGtwyInstNumActiveSessions, + ifcpLclGtwyInstStorageType + } + STATUS current + DESCRIPTION +"iFCP local device info group. This group provides + information about each gateway." + ::= {ifcpGroups 1} + +ifcpLclGatewaySessionGroup OBJECT-GROUP + OBJECTS { + ifcpSessionLclPrtlIfIndex, + ifcpSessionLclPrtlAddrType, + ifcpSessionLclPrtlAddr, + ifcpSessionLclPrtlTcpPort, + ifcpSessionLclNpWwun, + ifcpSessionLclNpFcid, + ifcpSessionRmtNpWwun, + ifcpSessionRmtPrtlIfAddrType, + ifcpSessionRmtPrtlIfAddr, + ifcpSessionRmtPrtlTcpPort, + ifcpSessionRmtNpFcid, + ifcpSessionRmtNpFcidAlias, + ifcpSessionIpTOV, + ifcpSessionLclLTIntvl, + ifcpSessionRmtLTIntvl, + + + + ifcpSessionBound, + ifcpSessionStorageType + } + STATUS current + DESCRIPTION +"iFCP Session group. This group provides information + about each iFCP session currently active between iFCP + gateways." + ::= {ifcpGroups 4} + +ifcpLclGatewaySessionStatsGroup OBJECT-GROUP + OBJECTS { + ifcpSessionState, + ifcpSessionDuration, + ifcpSessionTxOctets, + ifcpSessionRxOctets, + ifcpSessionTxFrames, + ifcpSessionRxFrames, + ifcpSessionStaleFrames, + ifcpSessionHeaderCRCErrors, + ifcpSessionFcPayloadCRCErrors, + ifcpSessionOtherErrors, + ifcpSessionDiscontinuityTime + } + STATUS current + DESCRIPTION +"iFCP Session Statistics group. This group provides + statistics with 64-bit counters for each iFCP session + currently active between iFCP gateways. This group + is only required for agents that can support Counter64- + based data types." + ::= {ifcpGroups 5} + +ifcpLclGatewaySessionLcStatsGroup OBJECT-GROUP + OBJECTS { + ifcpSessionLcTxOctets, + ifcpSessionLcRxOctets, + ifcpSessionLcTxFrames, + ifcpSessionLcRxFrames, + ifcpSessionLcStaleFrames, + ifcpSessionLcHeaderCRCErrors, + ifcpSessionLcFcPayloadCRCErrors, + ifcpSessionLcOtherErrors + } + STATUS current + DESCRIPTION +"iFCP Session Low Capacity Statistics group. This group + provides statistics with low-capacity 32-bit counters + + + + for each iFCP session currently active between iFCP + gateways. This group is only required for agents that + do not support Counter64-based data types, or that need + to support SNMPv1 applications." + ::= {ifcpGroups 6} + +END diff --git a/mibs/ietf/IGMP-STD-MIB b/mibs/ietf/IGMP-STD-MIB new file mode 100644 index 0000000..c2c7d55 --- /dev/null +++ b/mibs/ietf/IGMP-STD-MIB @@ -0,0 +1,545 @@ +IGMP-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, Counter32, Gauge32, + Unsigned32, IpAddress, TimeTicks FROM SNMPv2-SMI + RowStatus, TruthValue FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InterfaceIndexOrZero, + InterfaceIndex FROM IF-MIB; + +igmpStdMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" -- September 28, 2000 + ORGANIZATION "IETF IDMR Working Group." + CONTACT-INFO + " Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + US + + Phone: +1 425 703 8835 + EMail: dthaler@microsoft.com" + DESCRIPTION + "The MIB module for IGMP Management." + REVISION "200009280000Z" -- September 28, 2000 + + + DESCRIPTION + "Initial version, published as RFC 2933." + ::= { mib-2 85 } + + +igmpMIBObjects OBJECT IDENTIFIER ::= { igmpStdMIB 1 } + +-- +-- The IGMP Interface Table +-- + +igmpInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF IgmpInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interfaces on which IGMP + is enabled." + ::= { igmpMIBObjects 1 } + +igmpInterfaceEntry OBJECT-TYPE + SYNTAX IgmpInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing an interface on + which IGMP is enabled." + INDEX { igmpInterfaceIfIndex } + ::= { igmpInterfaceTable 1 } + +IgmpInterfaceEntry ::= SEQUENCE { + igmpInterfaceIfIndex InterfaceIndex, + igmpInterfaceQueryInterval Unsigned32, + igmpInterfaceStatus RowStatus, + igmpInterfaceVersion Unsigned32, + igmpInterfaceQuerier IpAddress, + igmpInterfaceQueryMaxResponseTime Unsigned32, + igmpInterfaceQuerierUpTime TimeTicks, + igmpInterfaceQuerierExpiryTime TimeTicks, + igmpInterfaceVersion1QuerierTimer TimeTicks, + igmpInterfaceWrongVersionQueries Counter32, + igmpInterfaceJoins Counter32, + igmpInterfaceProxyIfIndex InterfaceIndexOrZero, + igmpInterfaceGroups Gauge32, + igmpInterfaceRobustness Unsigned32, + igmpInterfaceLastMembQueryIntvl Unsigned32 +} + + + +igmpInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the interface for which IGMP is + enabled." + ::= { igmpInterfaceEntry 1 } + +igmpInterfaceQueryInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which IGMP Host-Query packets are + transmitted on this interface." + DEFVAL { 125 } + ::= { igmpInterfaceEntry 2 } + +igmpInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The activation of a row enables IGMP on the interface. The + destruction of a row disables IGMP on the interface." + ::= { igmpInterfaceEntry 3 } + +igmpInterfaceVersion OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The version of IGMP which is running on this interface. + This object can be used to configure a router capable of + running either value. For IGMP to function correctly, all + routers on a LAN must be configured to run the same version + of IGMP on that LAN." + DEFVAL { 2 } + ::= { igmpInterfaceEntry 4 } + +igmpInterfaceQuerier OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the IGMP Querier on the IP subnet to which + + + this interface is attached." + ::= { igmpInterfaceEntry 5 } + +igmpInterfaceQueryMaxResponseTime OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum query response time advertised in IGMPv2 + queries on this interface." + DEFVAL { 100 } + ::= { igmpInterfaceEntry 6 } + +igmpInterfaceQuerierUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since igmpInterfaceQuerier was last changed." + ::= { igmpInterfaceEntry 7 } + +igmpInterfaceQuerierExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time remaining before the Other Querier + Present Timer expires. If the local system is the querier, + the value of this object is zero." + ::= { igmpInterfaceEntry 8 } + +igmpInterfaceVersion1QuerierTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining until the host assumes that there are no + IGMPv1 routers present on the interface. While this is non- + zero, the host will reply to all queries with version 1 + membership reports." + ::= { igmpInterfaceEntry 9 } + +igmpInterfaceWrongVersionQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The number of queries received whose IGMP version does not + match igmpInterfaceVersion, over the lifetime of the row + entry. IGMP requires that all routers on a LAN be + configured to run the same version of IGMP. Thus, if any + queries are received with the wrong version, this indicates + a configuration error." + ::= { igmpInterfaceEntry 10 } + +igmpInterfaceJoins OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a group membership has been added on + this interface; that is, the number of times an entry for + this interface has been added to the Cache Table. This + object gives an indication of the amount of IGMP activity + over the lifetime of the row entry." + ::= { igmpInterfaceEntry 11 } + +igmpInterfaceProxyIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some devices implement a form of IGMP proxying whereby + memberships learned on the interface represented by this + row, cause IGMP Host Membership Reports to be sent on the + interface whose ifIndex value is given by this object. Such + a device would implement the igmpV2RouterMIBGroup only on + its router interfaces (those interfaces with non-zero + igmpInterfaceProxyIfIndex). Typically, the value of this + object is 0, indicating that no proxying is being done." + DEFVAL { 0 } + ::= { igmpInterfaceEntry 12 } + +igmpInterfaceGroups OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of entries for this interface in the + Cache Table." + ::= { igmpInterfaceEntry 13 } + +igmpInterfaceRobustness OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The Robustness Variable allows tuning for the expected + packet loss on a subnet. If a subnet is expected to be + lossy, the Robustness Variable may be increased. IGMP is + robust to (Robustness Variable-1) packet losses." + DEFVAL { 2 } + ::= { igmpInterfaceEntry 14 } + +igmpInterfaceLastMembQueryIntvl OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Last Member Query Interval is the Max Response Time + inserted into Group-Specific Queries sent in response to + Leave Group messages, and is also the amount of time between + Group-Specific Query messages. This value may be tuned to + modify the leave latency of the network. A reduced value + results in reduced time to detect the loss of the last + member of a group. The value of this object is irrelevant + if igmpInterfaceVersion is 1." + DEFVAL { 10 } + ::= { igmpInterfaceEntry 15 } + +-- +-- The IGMP Cache Table +-- + +igmpCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF IgmpCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the IP multicast groups for + which there are members on a particular interface." + ::= { igmpMIBObjects 2 } + +igmpCacheEntry OBJECT-TYPE + SYNTAX IgmpCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the igmpCacheTable." + INDEX { igmpCacheAddress, igmpCacheIfIndex } + ::= { igmpCacheTable 1 } + + + +IgmpCacheEntry ::= SEQUENCE { + igmpCacheAddress IpAddress, + igmpCacheIfIndex InterfaceIndex, + igmpCacheSelf TruthValue, + igmpCacheLastReporter IpAddress, + igmpCacheUpTime TimeTicks, + igmpCacheExpiryTime TimeTicks, + igmpCacheStatus RowStatus, + igmpCacheVersion1HostTimer TimeTicks +} + +igmpCacheAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address for which this entry + contains information." + ::= { igmpCacheEntry 1 } + +igmpCacheIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface for which this entry contains information for + an IP multicast group address." + ::= { igmpCacheEntry 2 } + +igmpCacheSelf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of whether the local system is a member of + this group address on this interface." + DEFVAL { true } + ::= { igmpCacheEntry 3 } + +igmpCacheLastReporter OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the source of the last membership report + received for this IP Multicast group address on this + interface. If no membership report has been received, this + object has the value 0.0.0.0." + + + ::= { igmpCacheEntry 4 } + +igmpCacheUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time elapsed since this entry was created." + ::= { igmpCacheEntry 5 } + +igmpCacheExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. A value of 0 indicates that the entry is only + present because igmpCacheSelf is true and that if the router + left the group, this entry would be aged out immediately. + Note that some implementations may process membership + reports from the local system in the same way as reports + from other hosts, so a value of 0 is not required." + ::= { igmpCacheEntry 6 } + +igmpCacheStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry." + ::= { igmpCacheEntry 7 } + +igmpCacheVersion1HostTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining until the local router will assume that + there are no longer any IGMP version 1 members on the IP + subnet attached to this interface. Upon hearing any IGMPv1 + Membership Report, this value is reset to the group + membership timer. While this time remaining is non-zero, + the local router ignores any IGMPv2 Leave messages for this + group that it receives on this interface." + ::= { igmpCacheEntry 8 } + +-- conformance information + + + +igmpMIBConformance + OBJECT IDENTIFIER ::= { igmpStdMIB 2 } +igmpMIBCompliances + OBJECT IDENTIFIER ::= { igmpMIBConformance 1 } +igmpMIBGroups OBJECT IDENTIFIER ::= { igmpMIBConformance 2 } + + +-- compliance statements + +igmpV1HostMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts running IGMPv1 and + implementing the IGMP MIB." + MODULE -- this module + MANDATORY-GROUPS { igmpBaseMIBGroup } + + OBJECT igmpInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT igmpCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { igmpMIBCompliances 1 } + +igmpV1RouterMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running IGMPv1 and + implementing the IGMP MIB." + MODULE -- this module + MANDATORY-GROUPS { igmpBaseMIBGroup, + igmpRouterMIBGroup + } + + OBJECT igmpInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT igmpCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + ::= { igmpMIBCompliances 2 } + +igmpV2HostMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts running IGMPv2 and + implementing the IGMP MIB." + MODULE -- this module + MANDATORY-GROUPS { igmpBaseMIBGroup, + igmpV2HostMIBGroup + } + + OBJECT igmpInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT igmpCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { igmpMIBCompliances 3 } + +igmpV2RouterMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running IGMPv2 and + implementing the IGMP MIB." + MODULE -- this module + MANDATORY-GROUPS { igmpBaseMIBGroup, + igmpRouterMIBGroup, + igmpV2RouterMIBGroup + } + + OBJECT igmpInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT igmpCacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { igmpMIBCompliances 4 } + + +-- units of conformance + + +igmpBaseMIBGroup OBJECT-GROUP + OBJECTS { igmpCacheSelf, + igmpCacheStatus, igmpInterfaceStatus + } + STATUS current + DESCRIPTION + "The basic collection of objects providing management of + IGMP version 1 or 2." + ::= { igmpMIBGroups 1 } + + +igmpRouterMIBGroup OBJECT-GROUP + OBJECTS { igmpCacheUpTime, igmpCacheExpiryTime, + igmpInterfaceJoins, igmpInterfaceGroups, + igmpCacheLastReporter, igmpInterfaceQuerierUpTime, + igmpInterfaceQuerierExpiryTime, + igmpInterfaceQueryInterval + } + STATUS current + DESCRIPTION + "A collection of additional objects for management of IGMP + version 1 or 2 in routers." + ::= { igmpMIBGroups 2 } + + +igmpV2HostMIBGroup OBJECT-GROUP + OBJECTS { igmpInterfaceVersion1QuerierTimer } + STATUS current + DESCRIPTION + "A collection of additional objects for management of IGMP + version 2 in hosts." + ::= { igmpMIBGroups 3 } + +igmpHostOptMIBGroup OBJECT-GROUP + OBJECTS { igmpCacheLastReporter, igmpInterfaceQuerier } + STATUS current + DESCRIPTION + "A collection of optional objects for IGMP hosts. + Supporting this group can be especially useful in an + environment with a router which does not support the IGMP + MIB." + ::= { igmpMIBGroups 4 } + +igmpV2RouterMIBGroup OBJECT-GROUP + OBJECTS { igmpInterfaceVersion, igmpInterfaceQuerier, + igmpInterfaceQueryMaxResponseTime, + igmpInterfaceRobustness, + igmpInterfaceWrongVersionQueries, + + + igmpInterfaceLastMembQueryIntvl, + igmpCacheVersion1HostTimer + } + STATUS current + DESCRIPTION + "A collection of additional objects for management of IGMP + version 2 in routers." + ::= { igmpMIBGroups 5 } + +igmpV2ProxyMIBGroup OBJECT-GROUP + OBJECTS { igmpInterfaceProxyIfIndex } + STATUS current + DESCRIPTION + "A collection of additional objects for management of IGMP + proxy devices." + ::= { igmpMIBGroups 6 } + +END diff --git a/mibs/ietf/INET-ADDRESS-MIB b/mibs/ietf/INET-ADDRESS-MIB new file mode 100644 index 0000000..a19b8d2 --- /dev/null +++ b/mibs/ietf/INET-ADDRESS-MIB @@ -0,0 +1,421 @@ +INET-ADDRESS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2, Unsigned32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +inetAddressMIB MODULE-IDENTITY + LAST-UPDATED "200502040000Z" + ORGANIZATION + "IETF Operations and Management Area" + CONTACT-INFO + "Juergen Schoenwaelder (Editor) + International University Bremen + P.O. Box 750 561 + 28725 Bremen, Germany + + Phone: +49 421 200-3587 + EMail: j.schoenwaelder@iu-bremen.de + + Send comments to ." + DESCRIPTION + "This MIB module defines textual conventions for + representing Internet addresses. An Internet + address can be an IPv4 address, an IPv6 address, + or a DNS domain name. This module also defines + textual conventions for Internet port numbers, + autonomous system numbers, and the length of an + Internet address prefix. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4001, see the RFC + itself for full legal notices." + REVISION "200502040000Z" + DESCRIPTION + "Third version, published as RFC 4001. This revision + introduces the InetZoneIndex, InetScopeType, and + InetVersion textual conventions." + REVISION "200205090000Z" + DESCRIPTION + "Second version, published as RFC 3291. This + revision contains several clarifications and + introduces several new textual conventions: + InetAddressPrefixLength, InetPortNumber, + InetAutonomousSystemNumber, InetAddressIPv4z, + and InetAddressIPv6z." + REVISION "200006080000Z" + + + + DESCRIPTION + "Initial version, published as RFC 2851." + ::= { mib-2 76 } + +InetAddressType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a type of Internet address. + + unknown(0) An unknown address type. This value MUST + be used if the value of the corresponding + InetAddress object is a zero-length string. + It may also be used to indicate an IP address + that is not in one of the formats defined + below. + + ipv4(1) An IPv4 address as defined by the + InetAddressIPv4 textual convention. + + ipv6(2) An IPv6 address as defined by the + InetAddressIPv6 textual convention. + + ipv4z(3) A non-global IPv4 address including a zone + index as defined by the InetAddressIPv4z + textual convention. + + ipv6z(4) A non-global IPv6 address including a zone + index as defined by the InetAddressIPv6z + textual convention. + + dns(16) A DNS domain name as defined by the + InetAddressDNS textual convention. + + Each definition of a concrete InetAddressType value must be + accompanied by a definition of a textual convention for use + with that InetAddressType. + + To support future extensions, the InetAddressType textual + convention SHOULD NOT be sub-typed in object type definitions. + It MAY be sub-typed in compliance statements in order to + require only a subset of these address types for a compliant + implementation. + + Implementations must ensure that InetAddressType objects + and any dependent objects (e.g., InetAddress objects) are + consistent. An inconsistentValue error must be generated + if an attempt to change an InetAddressType object would, + for example, lead to an undefined InetAddress value. In + + + + particular, InetAddressType/InetAddress pairs must be + changed together if the address type changes (e.g., from + ipv6(2) to ipv4(1))." + SYNTAX INTEGER { + unknown(0), + ipv4(1), + ipv6(2), + ipv4z(3), + ipv6z(4), + dns(16) + } + +InetAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a generic Internet address. + + An InetAddress value is always interpreted within the context + of an InetAddressType value. Every usage of the InetAddress + textual convention is required to specify the InetAddressType + object that provides the context. It is suggested that the + InetAddressType object be logically registered before the + object(s) that use the InetAddress textual convention, if + they appear in the same logical row. + + The value of an InetAddress object must always be + consistent with the value of the associated InetAddressType + object. Attempts to set an InetAddress object to a value + inconsistent with the associated InetAddressType + must fail with an inconsistentValue error. + + When this textual convention is used as the syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the object definition MUST include a 'SIZE' clause to + limit the number of potential instance sub-identifiers; + otherwise the applicable constraints MUST be stated in + the appropriate conceptual row DESCRIPTION clauses, or + in the surrounding documentation if there is no single + DESCRIPTION clause that is appropriate." + SYNTAX OCTET STRING (SIZE (0..255)) + +InetAddressIPv4 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d" + STATUS current + DESCRIPTION + "Represents an IPv4 network address: + + + + + Octets Contents Encoding + 1-4 IPv4 address network-byte order + + The corresponding InetAddressType value is ipv4(1). + + This textual convention SHOULD NOT be used directly in object + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (4)) + +InetAddressIPv6 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x" + STATUS current + DESCRIPTION + "Represents an IPv6 network address: + + Octets Contents Encoding + 1-16 IPv6 address network-byte order + + The corresponding InetAddressType value is ipv6(2). + + This textual convention SHOULD NOT be used directly in object + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (16)) + +InetAddressIPv4z ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d%4d" + STATUS current + DESCRIPTION + "Represents a non-global IPv4 network address, together + with its zone index: + + Octets Contents Encoding + 1-4 IPv4 address network-byte order + 5-8 zone index network-byte order + + The corresponding InetAddressType value is ipv4z(3). + + The zone index (bytes 5-8) is used to disambiguate identical + address values on nodes that have interfaces attached to + different zones of the same scope. The zone index may contain + the special value 0, which refers to the default zone for each + scope. + + This textual convention SHOULD NOT be used directly in object + + + + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (8)) + +InetAddressIPv6z ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x%4d" + STATUS current + DESCRIPTION + "Represents a non-global IPv6 network address, together + with its zone index: + + Octets Contents Encoding + 1-16 IPv6 address network-byte order + 17-20 zone index network-byte order + + The corresponding InetAddressType value is ipv6z(4). + + The zone index (bytes 17-20) is used to disambiguate + identical address values on nodes that have interfaces + attached to different zones of the same scope. The zone index + may contain the special value 0, which refers to the default + zone for each scope. + + This textual convention SHOULD NOT be used directly in object + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (20)) + +InetAddressDNS ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "Represents a DNS domain name. The name SHOULD be fully + qualified whenever possible. + + The corresponding InetAddressType is dns(16). + + The DESCRIPTION clause of InetAddress objects that may have + InetAddressDNS values MUST fully describe how (and when) + these names are to be resolved to IP addresses. + + The resolution of an InetAddressDNS value may require to + query multiple DNS records (e.g., A for IPv4 and AAAA for + IPv6). The order of the resolution process and which DNS + record takes precedence depends on the configuration of the + resolver. + + + + This textual convention SHOULD NOT be used directly in object + definitions, as it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or in + conjunction with InetAddressType, as a pair." + SYNTAX OCTET STRING (SIZE (1..255)) + +InetAddressPrefixLength ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Denotes the length of a generic Internet network address + prefix. A value of n corresponds to an IP address mask + that has n contiguous 1-bits from the most significant + bit (MSB), with all other bits set to 0. + + An InetAddressPrefixLength value is always interpreted within + the context of an InetAddressType value. Every usage of the + InetAddressPrefixLength textual convention is required to + specify the InetAddressType object that provides the + context. It is suggested that the InetAddressType object be + logically registered before the object(s) that use the + InetAddressPrefixLength textual convention, if they appear + in the same logical row. + + InetAddressPrefixLength values larger than + the maximum length of an IP address for a specific + InetAddressType are treated as the maximum significant + value applicable for the InetAddressType. The maximum + significant value is 32 for the InetAddressType + 'ipv4(1)' and 'ipv4z(3)' and 128 for the InetAddressType + 'ipv6(2)' and 'ipv6z(4)'. The maximum significant value + for the InetAddressType 'dns(16)' is 0. + + The value zero is object-specific and must be defined as + part of the description of any object that uses this + syntax. Examples of the usage of zero might include + situations where the Internet network address prefix + is unknown or does not apply. + + The upper bound of the prefix length has been chosen to + be consistent with the maximum size of an InetAddress." + SYNTAX Unsigned32 (0..2040) + +InetPortNumber ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Represents a 16 bit port number of an Internet transport + + + + layer protocol. Port numbers are assigned by IANA. A + current list of all assignments is available from + . + + The value zero is object-specific and must be defined as + part of the description of any object that uses this + syntax. Examples of the usage of zero might include + situations where a port number is unknown, or when the + value zero is used as a wildcard in a filter." + REFERENCE "STD 6 (RFC 768), STD 7 (RFC 793) and RFC 2960" + SYNTAX Unsigned32 (0..65535) + +InetAutonomousSystemNumber ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Represents an autonomous system number that identifies an + Autonomous System (AS). An AS is a set of routers under a + single technical administration, using an interior gateway + protocol and common metrics to route packets within the AS, + and using an exterior gateway protocol to route packets to + other ASes'. IANA maintains the AS number space and has + delegated large parts to the regional registries. + + Autonomous system numbers are currently limited to 16 bits + (0..65535). There is, however, work in progress to enlarge the + autonomous system number space to 32 bits. Therefore, this + textual convention uses an Unsigned32 value without a + range restriction in order to support a larger autonomous + system number space." + REFERENCE "RFC 1771, RFC 1930" + SYNTAX Unsigned32 + +InetScopeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a scope type. This textual convention can be used + in cases where a MIB has to represent different scope types + and there is no context information, such as an InetAddress + object, that implicitly defines the scope type. + + Note that not all possible values have been assigned yet, but + they may be assigned in future revisions of this specification. + Applications should therefore be able to deal with values + not yet assigned." + REFERENCE "RFC 3513" + SYNTAX INTEGER { + -- reserved(0), + + + + interfaceLocal(1), + linkLocal(2), + subnetLocal(3), + adminLocal(4), + siteLocal(5), -- site-local unicast addresses + -- have been deprecated by RFC 3879 + -- unassigned(6), + -- unassigned(7), + organizationLocal(8), + -- unassigned(9), + -- unassigned(10), + -- unassigned(11), + -- unassigned(12), + -- unassigned(13), + global(14) + -- reserved(15) + } + +InetZoneIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A zone index identifies an instance of a zone of a + specific scope. + + The zone index MUST disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index (ifIndex as defined in the + IF-MIB) of the interface on which the address is configured. + + The zone index may contain the special value 0, which refers + to the default zone. The default zone may be used in cases + where the valid zone index is not known (e.g., when a + management application has to write a link-local IPv6 + address without knowing the interface index value). The + default zone SHOULD NOT be used as an easy way out in + cases where the zone index for a non-global IPv6 address + is known." + REFERENCE "RFC4007" + SYNTAX Unsigned32 + +InetVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value representing a version of the IP protocol. + + unknown(0) An unknown or unspecified version of the IP + protocol. + + + + ipv4(1) The IPv4 protocol as defined in RFC 791 (STD 5). + + ipv6(2) The IPv6 protocol as defined in RFC 2460. + + Note that this textual convention SHOULD NOT be used to + distinguish different address types associated with IP + protocols. The InetAddressType has been designed for this + purpose." + REFERENCE "RFC 791, RFC 2460" + SYNTAX INTEGER { + unknown(0), + ipv4(1), + ipv6(2) + } +END diff --git a/mibs/ietf/INTEGRATED-SERVICES-GUARANTEED-MIB b/mibs/ietf/INTEGRATED-SERVICES-GUARANTEED-MIB new file mode 100644 index 0000000..ff01399 --- /dev/null +++ b/mibs/ietf/INTEGRATED-SERVICES-GUARANTEED-MIB @@ -0,0 +1,221 @@ +INTEGRATED-SERVICES-GUARANTEED-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE FROM SNMPv2-SMI + RowStatus FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + intSrv FROM INTEGRATED-SERVICES-MIB + ifIndex FROM IF-MIB; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [9]. + +intSrvGuaranteed MODULE-IDENTITY + LAST-UPDATED "9511030500Z" -- Thu Aug 28 09:04:22 PDT 1997 + ORGANIZATION "IETF Integrated Services Working Group" + CONTACT-INFO + " Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 805 681 0115 + E-Mail: fred@cisco.com" + DESCRIPTION + "The MIB module to describe the Guaranteed Service of + the Integrated Services Protocol" + ::= { intSrv 5 } + +intSrvGuaranteedObjects OBJECT IDENTIFIER + ::= { intSrvGuaranteed 1 } +intSrvGuaranteedNotifications OBJECT IDENTIFIER + ::= { intSrvGuaranteed 2 } +intSrvGuaranteedConformance OBJECT IDENTIFIER + ::= { intSrvGuaranteed 3 } + + +-- The Integrated Services Interface Attributes Database +-- contains information that is shared with other reservation +-- procedures such as ST-II. + + + intSrvGuaranteedIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF IntSrvGuaranteedIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The attributes of the system's interfaces ex- + ported by the Guaranteed Service." + ::= { intSrvGuaranteedObjects 1 } + + + intSrvGuaranteedIfEntry OBJECT-TYPE + SYNTAX IntSrvGuaranteedIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reservable attributes of a given inter- + face." + INDEX { ifIndex } + ::= { intSrvGuaranteedIfTable 1 } + +IntSrvGuaranteedIfEntry ::= + SEQUENCE { + intSrvGuaranteedIfBacklog INTEGER, + intSrvGuaranteedIfDelay INTEGER, + intSrvGuaranteedIfSlack INTEGER, + intSrvGuaranteedIfStatus RowStatus + } + + intSrvGuaranteedIfBacklog OBJECT-TYPE + SYNTAX INTEGER (0..'0FFFFFFF'h) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Backlog parameter is the data backlog + resulting from the vagaries of how a specific + implementation deviates from a strict bit-by- + bit service. So, for instance, for packetized + weighted fair queueing, Backlog is set to the + Maximum Packet Size. + + The Backlog term is measured in units of bytes. + An individual element can advertise a Backlog + value between 1 and 2**28 (a little over 250 + megabytes) and the total added over all ele- + ments can range as high as (2**32)-1. Should + the sum of the different elements delay exceed + (2**32)-1, the end-to-end error term should be + (2**32)-1." + ::= { intSrvGuaranteedIfEntry 1 } + + intSrvGuaranteedIfDelay OBJECT-TYPE + SYNTAX INTEGER (0..'0FFFFFFF'h) + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Delay parameter at each service element + should be set to the maximum packet transfer + delay (independent of bucket size) through the + service element. For instance, in a simple + router, one might compute the worst case amount + of time it make take for a datagram to get + through the input interface to the processor, + and how long it would take to get from the pro- + cessor to the outbound interface (assuming the + queueing schemes work correctly). For an Eth- + ernet, it might represent the worst case delay + if the maximum number of collisions is experi- + enced. + + The Delay term is measured in units of one mi- + crosecond. An individual element can advertise + a delay value between 1 and 2**28 (somewhat + over two minutes) and the total delay added all + elements can range as high as (2**32)-1. + Should the sum of the different elements delay + exceed (2**32)-1, the end-to-end delay should + be (2**32)-1." + ::= { intSrvGuaranteedIfEntry 2 } + + intSrvGuaranteedIfSlack OBJECT-TYPE + SYNTAX INTEGER (0..'0FFFFFFF'h) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If a network element uses a certain amount of + slack, Si, to reduce the amount of resources + that it has reserved for a particular flow, i, + the value Si should be stored at the network + element. Subsequently, if reservation re- + freshes are received for flow i, the network + element must use the same slack Si without any + further computation. This guarantees consisten- + cy in the reservation process. + + As an example for the use of the slack term, + consider the case where the required end-to-end + delay, Dreq, is larger than the maximum delay + of the fluid flow system. In this, Ctot is the + sum of the Backlog terms end to end, and Dtot + is the sum of the delay terms end to end. Dreq + is obtained by setting R=r in the fluid delay + formula, and is given by + + b/r + Ctot/r + Dtot. + + In this case the slack term is + + S = Dreq - (b/r + Ctot/r + Dtot). + + The slack term may be used by the network ele- + ments to adjust their local reservations, so + that they can admit flows that would otherwise + have been rejected. A service element at an in- + termediate network element that can internally + differentiate between delay and rate guarantees + can now take advantage of this information to + lower the amount of resources allocated to this + flow. For example, by taking an amount of slack + s <= S, an RCSD scheduler [5] can increase the + local delay bound, d, assigned to the flow, to + d+s. Given an RSpec, (Rin, Sin), it would do so + by setting Rout = Rin and Sout = Sin - s. + + Similarly, a network element using a WFQ + scheduler can decrease its local reservation + from Rin to Rout by using some of the slack in + the RSpec. This can be accomplished by using + the transformation rules given in the previous + section, that ensure that the reduced reserva- + tion level will not increase the overall end- + to-end delay." + ::= { intSrvGuaranteedIfEntry 3 } + + + intSrvGuaranteedIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'valid' on interfaces that are configured for + the Guaranteed Service." + ::= { intSrvGuaranteedIfEntry 4 } + +-- No notifications are currently defined + +-- conformance information +intSrvGuaranteedGroups OBJECT IDENTIFIER + ::= { intSrvGuaranteedConformance 1 } +intSrvGuaranteedCompliances OBJECT IDENTIFIER + ::= { intSrvGuaranteedConformance 2 } + +-- compliance statements + + intSrvGuaranteedCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { + intSrvGuaranteedIfAttribGroup + } + ::= { intSrvGuaranteedCompliances 1 } + + + intSrvGuaranteedIfAttribGroup OBJECT-GROUP + OBJECTS { + intSrvGuaranteedIfBacklog, + intSrvGuaranteedIfDelay, + intSrvGuaranteedIfSlack, + intSrvGuaranteedIfStatus + } + STATUS current + DESCRIPTION + "These objects are required for Systems sup- + porting the Guaranteed Service of the Integrat- + ed Services Architecture." + ::= { intSrvGuaranteedGroups 2 } + +END diff --git a/mibs/ietf/INTEGRATED-SERVICES-MIB b/mibs/ietf/INTEGRATED-SERVICES-MIB new file mode 100644 index 0000000..4ab4e18 --- /dev/null +++ b/mibs/ietf/INTEGRATED-SERVICES-MIB @@ -0,0 +1,789 @@ +INTEGRATED-SERVICES-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Gauge32, Integer32, mib-2 FROM SNMPv2-SMI + TimeInterval, TEXTUAL-CONVENTION, RowStatus, + TruthValue, TestAndIncr FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifIndex, InterfaceIndex FROM IF-MIB; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [9]. + +intSrv MODULE-IDENTITY + LAST-UPDATED "9511030500Z" -- Thu Aug 28 09:04:13 PDT 1997 + ORGANIZATION "IETF Integrated Services Working Group" + CONTACT-INFO + " Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 805 681 0115 + E-Mail: fred@cisco.com + + John Krawczyk + Postal: ArrowPoint Communications + 235 Littleton Road + Westford, Massachusetts 01886 + Tel: +1 508 692 5875 + E-Mail: jjk@tiac.net" + DESCRIPTION + "The MIB module to describe the Integrated Services + Protocol" + ::= { mib-2 52 } + +intSrvObjects OBJECT IDENTIFIER ::= { intSrv 1 } +intSrvGenObjects OBJECT IDENTIFIER ::= { intSrv 2 } +intSrvNotifications OBJECT IDENTIFIER ::= { intSrv 3 } +intSrvConformance OBJECT IDENTIFIER ::= { intSrv 4 } + +-- Textual Conventions +-- + + SessionNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Session Number convention is used for + numbers identifying sessions or saved PATH or + RESV information. It is a number in the range + returned by a TestAndIncr variable, having no + protocol meaning whatsoever but serving instead + as simple identifier. + + The alternative was a very complex instance or + instance object that became unwieldy." + SYNTAX INTEGER (0..2147483647) + + + Protocol ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The value of the IP Protocol field of an IP + Datagram Header. This identifies the protocol + layer above IP. For example, the value 6 is + used for TCP and the value 17 is used for UDP. + The values of this field are defined in the As- + signed Numbers RFC." + SYNTAX INTEGER (1..255) + + + SessionType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of the C-Type field of a Session ob- + ject, as defined in the RSVP specification. + This value determines the lengths of octet + strings and use of certain objects such as the + 'port' variables. If the C-Type calls for an + IP6 address, one would expect all source, des- + tination, and next/previous hop addresses to be + 16 bytes long, and for the ports to be UDP/TCP + port numbers, for example." + SYNTAX INTEGER (1..255) + + Port ::= TEXTUAL-CONVENTION + -- DISPLAY-HINT "d" ---- illegal for OCTET STRING. + STATUS current + DESCRIPTION + "The value of the UDP or TCP Source or Destina- + tion Port field, a virtual destination port or + generalized port identifier used with the IPSEC + Authentication Header or Encapsulating Security + Payload, or other session discriminator. If it + is not used, the value should be of length 0. + This pair, when coupled with the IP Addresses + of the source and destination system and the IP + protocol field, uniquely identifies a data + stream." + SYNTAX OCTET STRING (SIZE(2..4)) + + + MessageSize ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The size of a message in bytes. This is used + to specify the minimum and maximum size of a + message along an integrated services route." + SYNTAX INTEGER (0..'7FFFFFFF'h) + + + BitRate ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The rate, in bits/second, that data may move + in the context. Applicable contexts minimally + include the speed of an interface or virtual + circuit, the data rate of a (potentially aggre- + gated) data flow, or the data rate to be allo- + cated for use by a flow." + SYNTAX INTEGER (0..'7FFFFFFF'h) + + BurstSize ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The number of octets of IP Data, including IP + Headers, that a stream may send without concern + for policing." + SYNTAX INTEGER (0..'7FFFFFFF'h) + + + QosService ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The class of service in use by a flow." + SYNTAX INTEGER { + bestEffort (1), -- Best Effort Service + guaranteedDelay (2), -- Guaranteed Delay + controlledLoad (5) -- Controlled Load + } + +-- The Integrated Services Interface Attributes Database contains +-- information about resources allocated by resource reservation +-- protocols, such as RSVP and ST-II. + + + intSrvIfAttribTable OBJECT-TYPE + SYNTAX SEQUENCE OF IntSrvIfAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reservable attributes of the system's in- + terfaces." + ::= { intSrvObjects 1 } + + + intSrvIfAttribEntry OBJECT-TYPE + SYNTAX IntSrvIfAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The reservable attributes of a given inter- + face." + INDEX { ifIndex } + ::= { intSrvIfAttribTable 1 } + +IntSrvIfAttribEntry ::= + SEQUENCE { + intSrvIfAttribAllocatedBits BitRate, + intSrvIfAttribMaxAllocatedBits BitRate, + intSrvIfAttribAllocatedBuffer BurstSize, + intSrvIfAttribFlows Gauge32, + intSrvIfAttribPropagationDelay Integer32, + intSrvIfAttribStatus RowStatus + } + + intSrvIfAttribAllocatedBits OBJECT-TYPE + SYNTAX BitRate + UNITS "Bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bits/second currently allocated + to reserved sessions on the interface." + ::= { intSrvIfAttribEntry 1 } + + intSrvIfAttribMaxAllocatedBits OBJECT-TYPE + SYNTAX BitRate + UNITS "Bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of bits/second that may be + allocated to reserved sessions on the inter- + face." + ::= { intSrvIfAttribEntry 2 } + + + intSrvIfAttribAllocatedBuffer OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of buffer space required to hold + the simultaneous burst of all reserved flows on + the interface." + ::= { intSrvIfAttribEntry 3 } + + + intSrvIfAttribFlows OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reserved flows currently active + on this interface. A flow can be created ei- + ther from a reservation protocol (such as RSVP + or ST-II) or via configuration information." + ::= { intSrvIfAttribEntry 4 } + + intSrvIfAttribPropagationDelay OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The amount of propagation delay that this in- + terface introduces in addition to that intro- + diced by bit propagation delays." + DEFVAL { 0 }-- by default, interfaces are presumed to add + -- no extra delays + ::= { intSrvIfAttribEntry 5 } + + + intSrvIfAttribStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' on interfaces that are configured for + RSVP." + ::= { intSrvIfAttribEntry 6 } + + +-- The Integrated Services Active Flows Database +-- lists all flows active on an outgoing interface, including +-- relevant attributes. + + + intSrvFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF IntSrvFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the reserved flows us- + ing the system's interfaces." + ::= { intSrvObjects 2 } + + + intSrvFlowEntry OBJECT-TYPE + SYNTAX IntSrvFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the use of a given in- + terface by a given flow. The counter + intSrvFlowPoliced starts counting at the in- + stallation of the flow." + INDEX { intSrvFlowNumber } + ::= { intSrvFlowTable 1 } + + + IntSrvFlowEntry ::= + SEQUENCE { + intSrvFlowNumber SessionNumber, + intSrvFlowType SessionType, + intSrvFlowOwner INTEGER, + intSrvFlowDestAddr OCTET STRING, + intSrvFlowSenderAddr OCTET STRING, + intSrvFlowDestAddrLength INTEGER, + intSrvFlowSenderAddrLength INTEGER, + intSrvFlowProtocol Protocol, + intSrvFlowDestPort Port, + intSrvFlowPort Port, + intSrvFlowFlowId INTEGER, + intSrvFlowInterface InterfaceIndex, + intSrvFlowIfAddr OCTET STRING, + intSrvFlowRate BitRate, + intSrvFlowBurst BurstSize, + intSrvFlowWeight Integer32, + intSrvFlowQueue Integer32, + intSrvFlowMinTU MessageSize, + intSrvFlowMaxTU MessageSize, + intSrvFlowBestEffort Counter32, + intSrvFlowPoliced Counter32, + intSrvFlowDiscard TruthValue, + intSrvFlowService QosService, + intSrvFlowOrder INTEGER, + intSrvFlowStatus RowStatus + } + + + intSrvFlowNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this flow. This is for SNMP In- + dexing purposes only and has no relation to any + protocol value." + ::= { intSrvFlowEntry 1 } + + + intSrvFlowType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { intSrvFlowEntry 2 } + + + intSrvFlowOwner OBJECT-TYPE + SYNTAX INTEGER { + other(1), + rsvp(2), + management(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The process that installed this flow in the + queue policy database." + ::= { intSrvFlowEntry 3 } + + + intSrvFlowDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { intSrvFlowEntry 4 } + + + intSrvFlowSenderAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source address of the sender selected by + this reservation. The value of all zeroes in- + dicates 'all senders'. This object may not be + changed when the value of the RowStatus object + is 'active'." + ::= { intSrvFlowEntry 5 } + + + intSrvFlowDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the destination address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 6 } + + + intSrvFlowSenderAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the sender's address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 7 } + + + intSrvFlowProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Protocol used by a session. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 8 } + + + intSrvFlowDestPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by + intSrvResvFwdProtocol, is 50 (ESP) or 51 (AH), + this represents a virtual destination port + number. A value of zero indicates that the IP + protocol in use does not have ports. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 9 } + + + intSrvFlowPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a source + port for this sender in this session. If the + IP protocol in use, specified by + intSrvResvFwdProtocol is 50 (ESP) or 51 (AH), + this represents a generalized port identifier + (GPI). A value of zero indicates that the IP + protocol in use does not have ports. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { intSrvFlowEntry 10 } + + + intSrvFlowFlowId OBJECT-TYPE + SYNTAX INTEGER (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow ID that this sender is using, if + this is an IPv6 session." + ::= { intSrvFlowEntry 11 } + + + intSrvFlowInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value of the interface on which + this reservation exists." + ::= { intSrvFlowEntry 12 } + + + intSrvFlowIfAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Address on the ifEntry on which this + reservation exists. This is present primarily + to support those interfaces which layer multi- + ple IP Addresses on the interface." + ::= { intSrvFlowEntry 13 } + + + intSrvFlowRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Reserved Rate of the sender's data stream. + If this is a Controlled Load service flow, this + rate is derived from the Tspec rate parameter + (r). If this is a Guaranteed service flow, + this rate is derived from the Rspec clearing + rate parameter (R)." + ::= { intSrvFlowEntry 14 } + + + intSrvFlowBurst OBJECT-TYPE + SYNTAX BurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of the largest burst expected from + the sender at a time. + + If this is less than the sender's advertised + burst size, the receiver is asking the network + to provide flow pacing beyond what would be + provided under normal circumstances. Such pac- + ing is at the network's option." + ::= { intSrvFlowEntry 15 } + + + intSrvFlowWeight OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The weight used to prioritize the traffic. + Note that the interpretation of this object is + implementation-specific, as implementations + vary in their use of weighting procedures." + ::= { intSrvFlowEntry 16 } + + intSrvFlowQueue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of the queue used by this traffic. + Note that the interpretation of this object is + implementation-specific, as implementations + vary in their use of queue identifiers." + ::= { intSrvFlowEntry 17 } + + + intSrvFlowMinTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum message size for this flow. The + policing algorithm will treat smaller messages + as though they are this size." + ::= { intSrvFlowEntry 18 } + + + intSrvFlowMaxTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum datagram size for this flow that + will conform to the traffic specification. This + value cannot exceed the MTU of the interface." + ::= { intSrvFlowEntry 19 } + + + intSrvFlowBestEffort OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that were remanded to + best effort service." + ::= { intSrvFlowEntry 20 } + + + intSrvFlowPoliced OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets policed since the incep- + tion of the flow's service." + ::= { intSrvFlowEntry 21 } + + + intSrvFlowDiscard OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If 'true', the flow is to incur loss when + traffic is policed. If 'false', policed traff- + ic is treated as best effort traffic." + DEFVAL { false } -- traffic is, by default, treated as best + -- effort + ::= { intSrvFlowEntry 22 } + + + intSrvFlowService OBJECT-TYPE + SYNTAX QosService + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The QoS service being applied to this flow." + ::= { intSrvFlowEntry 23 } + + + intSrvFlowOrder OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In the event of ambiguity, the order in which + the classifier should make its comparisons. + The row with intSrvFlowOrder=0 is tried first, + and comparisons proceed in the order of in- + creasing value. Non-serial implementations of + the classifier should emulate this behavior." + ::= { intSrvFlowEntry 24 } + + + intSrvFlowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' for all active flows. This object + may be used to install static classifier infor- + mation, delete classifier information, or au- + thorize such." + ::= { intSrvFlowEntry 25 } + + + intSrvFlowNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to + intSrvFlowNumber as described in 'Textual Con- + ventions for SNMPv2'. The network manager + reads the object, and then writes the value + back in the SET that creates a new instance of + intSrvFlowEntry. If the SET fails with the + code 'inconsistentValue', then the process must + be repeated; If the SET succeeds, then the ob- + ject is incremented, and the new instance is + created according to the manager's directions." + ::= { intSrvGenObjects 1 } + + +-- conformance information + + +intSrvGroups OBJECT IDENTIFIER ::= { intSrvConformance 1 } +intSrvCompliances OBJECT IDENTIFIER ::= { intSrvConformance 2 } + +-- compliance statements + + + intSrvCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { intSrvIfAttribGroup, intSrvFlowsGroup } + + OBJECT intSrvFlowType + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowOwner + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowDestAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowSenderAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowDestAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowSenderAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowProtocol + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowDestPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowFlowId + MIN-ACCESS not-accessible + DESCRIPTION + "This object is needed only in a system that imple- + ments IPv6." + + OBJECT intSrvFlowInterface + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowBurst + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowWeight + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowQueue + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowMinTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowMaxTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT intSrvFlowStatus + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + ::= { intSrvCompliances 1 } + + + intSrvIfAttribGroup OBJECT-GROUP + OBJECTS { + intSrvIfAttribAllocatedBits, intSrvIfAttribMaxAllocatedBits, + intSrvIfAttribAllocatedBuffer, intSrvIfAttribFlows, + intSrvIfAttribPropagationDelay, intSrvIfAttribStatus + } + STATUS current + DESCRIPTION + "These objects are required for Systems sup- + porting the Integrated Services Architecture." + ::= { intSrvGroups 1 } + + intSrvFlowsGroup OBJECT-GROUP + OBJECTS { + intSrvFlowType, intSrvFlowOwner, intSrvFlowDestAddr, + intSrvFlowSenderAddr, intSrvFlowDestAddrLength, + intSrvFlowSenderAddrLength, intSrvFlowProtocol, + intSrvFlowDestPort, intSrvFlowPort, intSrvFlowInterface, + intSrvFlowBestEffort, intSrvFlowRate, intSrvFlowBurst, + intSrvFlowWeight, intSrvFlowQueue, intSrvFlowMinTU, + intSrvFlowDiscard, intSrvFlowPoliced, intSrvFlowService, + intSrvFlowIfAddr, intSrvFlowOrder, intSrvFlowStatus + } + STATUS current + DESCRIPTION + "These objects are required for Systems sup- + porting the Integrated Services Architecture." + ::= { intSrvGroups 2 } + +END diff --git a/mibs/ietf/INTERFACETOPN-MIB b/mibs/ietf/INTERFACETOPN-MIB new file mode 100644 index 0000000..e6c5ba3 --- /dev/null +++ b/mibs/ietf/INTERFACETOPN-MIB @@ -0,0 +1,1065 @@ +INTERFACETOPN-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Gauge32 + FROM SNMPv2-SMI + RowStatus, TimeStamp, TruthValue + FROM SNMPv2-TC + rmon, OwnerString + FROM RMON-MIB + CounterBasedGauge64 + FROM HCNUM-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + interfaceTopNMIB MODULE-IDENTITY + LAST-UPDATED "200103270000Z" + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + " + + Dan Romascanu + Avaya Inc. + Tel: +972-3-645-8414 + Email: dromasca@avaya.com" + + DESCRIPTION + "The MIB module for sorting device interfaces for RMON and + SMON monitoring in a multiple device implementation." + ::= { rmon 27 } +interfaceTopNObjects OBJECT IDENTIFIER ::= { interfaceTopNMIB 1 } +interfaceTopNNotifications OBJECT IDENTIFIER ::= { interfaceTopNMIB 2 } +interfaceTopNConformance OBJECT IDENTIFIER ::= { interfaceTopNMIB 3 } + +-- The Interface Top N group is used to prepare reports that +-- describe a list of interfaces (data sources) +-- ordered by the values of one +-- of the objects that apply to the interfaces of the respective device. +-- Those objects are defined by standard MIBs. The exact objects that +-- are supported by the agent are described by interfaceTopNCaps +-- The objects must be elements in tables indexed only by an +-- InterfaceIndex object. +-- The objects chosen by the + + +-- management station may be sampled over a management +-- station-specified time interval, making the report rate based. +-- The management station also specifies the number of interfaces +-- that are reported. +-- +-- The interfaceTopNControlTable is used to initiate the generation +-- of a report. The management station may select the parameters +-- of such a report, such as which object, how +-- many interfaces, and the start & stop times of the sampling. When +-- the report is prepared, entries are created in the +-- interfaceTopNTable associated with the relevant +-- interfaceTopNControlEntry. These entries are static for +-- each report after it has been prepared. + +interfaceTopNCaps OBJECT-TYPE + SYNTAX BITS { + ifInOctets(0), + ifInUcastPkts(1), + ifInNUcastPkts(2), + ifInDiscards(3), + ifInErrors(4), + ifInUnknownProtos(5), + ifOutOctets(6), + ifOutUcastPkts(7), + ifOutNUcastPkts(8), + ifOutDiscards(9), + ifOutErrors(10), + ifInMulticastPkts(11), + ifInBroadcastPkts(12), + ifOutMulticastPkts(13), + ifOutBroadcastPkts(14), + ifHCInOctets(15), + ifHCInUcastPkts(16), + ifHCInMulticastPkts(17), + ifHCInBroadcastPkts(18), + ifHCOutOctets(19), + ifHCOutUcastPkts(20), + ifHCOutMulticastPkts(21), + ifHCOutBroadcastPkts(22), + dot3StatsAlignmentErrors(23), + dot3StatsFCSErrors(24), + dot3StatsSingleCollisionFrames(25), + dot3StatsMultipleCollisionFrames(26), + dot3StatsSQETestErrors(27), + dot3StatsDeferredTransmissions(28), + dot3StatsLateCollisions(29), + dot3StatsExcessiveCollisions(30), + dot3StatsInternalMacTxErrors(31), + + + dot3StatsCarrierSenseErrors(32), + dot3StatsFrameTooLongs(33), + dot3StatsInternalMacRxErrors(34), + dot3StatsSymbolErrors(35), + dot3InPauseFrames(36), + dot3OutPauseFrames(37), + dot5StatsLineErrors(38), + dot5StatsBurstErrors(39), + dot5StatsACErrors(40), + dot5StatsAbortTransErrors(41), + dot5StatsInternalErrors(42), + dot5StatsLostFrameErrors(43), + dot5StatsReceiveCongestions(44), + dot5StatsFrameCopiedErrors(45), + dot5StatsTokenErrors(46), + dot5StatsSoftErrors(47), + dot5StatsHardErrors(48), + dot5StatsSignalLoss(49), + dot5StatsTransmitBeacons(50), + dot5StatsRecoverys(51), + dot5StatsLobeWires(52), + dot5StatsRemoves(53), + dot5StatsSingles(54), + dot5StatsFreqErrors(55), + etherStatsDropEvents(56), + etherStatsOctets(57), + etherStatsPkts(58), + etherStatsBroadcastPkts(59), + etherStatsMulticastPkts(60), + etherStatsCRCAlignErrors(61), + etherStatsUndersizePkts(62), + etherStatsOversizePkts(63), + etherStatsFragments(64), + etherStatsJabbers(65), + etherStatsCollisions(66), + etherStatsPkts64Octets(67), + etherStatsPkts65to127Octets(68), + etherStatsPkts128to255Octets(69), + etherStatsPkts256to511Octets(70), + etherStatsPkts512to1023Octets(71), + etherStatsPkts1024to1518Octets(72), + dot1dTpPortInFrames(73), + dot1dTpPortOutFrames(74), + dot1dTpPortInDiscards(75) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + +"The type(s) of sorting capabilities supported by the agent. + +If the agent can perform sorting of interfaces according to the +values of ifInOctets, as defined in [RFC2863], +then the 'ifInOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInUcastPkts, as defined in [RFC2863], +then the 'ifInUcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInNUcastPkts, as defined in [RFC2863], +then the 'ifInNUcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInDiscards, as defined in [RFC2863], +then the 'ifInDiscards' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInErrors, as defined in [RFC2863], +then the 'ifInErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInUnknownProtocols, as defined in [RFC2863], +then the 'ifInUnknownProtocols' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutOctets, as defined in [RFC2863], +then the 'ifOutOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutUcastPackets, as defined in [RFC2863], +then the 'ifOutUcastPackets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutNUcastPackets, as defined in [RFC2863], +then the 'ifOutNUcastPackets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutDiscards, as defined in [RFC2863], +then the 'ifOutDiscards' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutErrors, as defined in [RFC2863], +then the 'ifOutErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInMulticastPkts, as defined in [RFC2863], + + +then the 'ifInMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifInBroadcastPkts, as defined in [RFC2863], +then the 'ifInBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutMulticastPkts, as defined in [RFC2863], +then the 'ifOutMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifOutBroadcastPkts, as defined in [RFC2863], +then the 'ifOutBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCInOctets, as defined in [RFC2863], +then the 'ifHCInOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCInMulticastPkts, as defined in [RFC2863], +then the 'ifHCInMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCInBroadcastPkts, as defined in [RFC2863], +then the 'ifHCInBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCOutOctets, as defined in [RFC2863], +then the 'ifHCOutOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCOutUcastPkts, as defined in [RFC2863], +then the 'ifHCOutUcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCOutMulticastPkts, as defined in [RFC2863], +then the 'ifHCOutMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of ifHCOutBroadcastPkts, as defined in [RFC2863], +then the 'ifHCOutBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsAlignmentErrors, as defined in [RFC2665], +then the 'dot3StatsAlignmentErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsFCSErrors, as defined in [RFC2665], + + +then the 'dot3StatsFCSErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsSingleCollisionFrames, as defined in +[RFC2665],then the 'dot3StatsSingleCollisionFrames' bit will +be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsSQETestErrors, as defined in [RFC2665], +then the 'dot3StatsSQETestErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsDeferredTransmissions, as defined in +[RFC2665], then the 'dot3StatsDeferredTransmissions' bit +will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsLateCollisions, as defined in [RFC2665], +then the 'dot3StatsLateCollisions' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsExcessiveCollisions, as defined in [RFC2665], +then the 'dot3StatsExcessiveCollisions' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsInternalMacTxErrors, as defined in +[RFC2665],then the 'dot3StatsInternalMacTxErrors' bit +will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsCarrierSenseErrors, as defined in [RFC2665], +then the 'dot3StatsCarrierSenseErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsFrameTooLongs, as defined in [RFC2665], +then the 'dot3StatsFrameTooLongs' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsInternalMacRxErrors, as defined in +[RFC2665], then the 'dot3StatsInternalMacRxErrors' bit +will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3StatsSymbolErrors, as defined in [RFC2665], +then the 'dot3StatsSymbolErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3InPauseFrames, as defined in [RFC2665], + + +then the 'dot3InPauseFrames' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot3OutPauseFrames, as defined in [RFC2665], +then the 'dot3OutPauseFrames' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsLineErrors, as defined in [RFC1748], +then the 'dot5StatsLineErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsBurstErrors, as defined in [RFC1748], +then the 'dot5StatsBurstErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsACErrors, as defined in [RFC1748], +then the 'dot5StatsACErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsAbortTransErrors, as defined in [RFC1748], +then the 'dot5StatsAbortTransErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsInternalErrors, as defined in [RFC1748], +then the 'dot5StatsInternalErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsLostFrameErrors, as defined in [RFC1748], +then the 'dot5StatsLostFrameErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsReceiveCongestionErrors, as defined in +[RFC1748], then the 'dot5StatsReceiveCongestionErrors' bit will +be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsFrameCopiedErrors, as defined in [RFC1748], +then the 'dot5StatsFrameCopiedErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsTokenErrors, as defined in [RFC1748], +then the 'dot5StatsTokenErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsSoftErrors, as defined in [RFC1748], +then the 'dot5StatsSoftErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the + + +values of dot5StatsHardErrors, as defined in [RFC1748], +then the 'dot5StatsHardErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsSignalLoss, as defined in [RFC1748], +then the 'dot5StatsSignalLoss' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsTransmitBeacons, as defined in [RFC1748], +then the 'dot5StatsTransmitBeacons' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsRecoverys, as defined in [RFC1748], +then the 'dot5StatsRecoverys' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsLobeWires, as defined in [RFC1748], +then the 'dot5StatsLobeWires' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsRemoves, as defined in [RFC1748], +then the 'dot5StatsRemoves' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsSingles, as defined in [RFC1748], +then the 'dot5StatsSingles' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot5StatsFreqErrors, as defined in [RFC1748], +then the 'dot5StatsFreqErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsDropEvents, as defined in [RFC2819], +then the 'etherStatsDropEvents' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsOctets, as defined in [RFC2819], +then the 'etherStatsOctets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts, as defined in [RFC2819], +then the 'etherStatsPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsBroadcastPkts, as defined in [RFC2819], +then the 'etherStatsBroadcastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the + + +values of etherStatsMulticastPkts, as defined in [RFC2819], +then the 'etherStatsMulticastPkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsCRCAlignErrors, as defined in [RFC2819], +then the 'etherStatsCRCAlignErrors' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsUndersizePkts, as defined in [RFC2819], +then the 'etherStatsUndersizePkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsOversizePkts, as defined in [RFC2819], +then the 'etherStatsOversizePkts' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsFragments, as defined in [RFC2819], +then the 'etherStatsFragments' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsJabbers, as defined in [RFC2819], +then the 'etherStatsJabbers' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsCollisions, as defined in [RFC2819], +then the 'etherStatsCollisions' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts64Octets, as defined in [RFC2819], +then the 'etherStatsPkts64Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts65to127Octets, as defined in [RFC2819], +then the 'etherStatsPkts65to127Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts128to255Octets, as defined in [RFC2819], +then the 'etherStatsPkts128to255Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts256to511Octets, as defined in [RFC2819], +then the 'etherStatsPkts256to511Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of etherStatsPkts512to1023Octets, as defined in [RFC2819], +then the 'etherStatsPkts512to1023Octets' bit will be set. + +If the agent can perform sorting of interfaces according to the + + +values of etherStatsPkts1024to1518Octets, as defined in +[RFC2819], then the 'etherStatsPkts1024to1518Octets' bit will +be set. + + +If the agent can perform sorting of interfaces according to the +values of dot1dTpPortInFrames, as defined in [RFC1493], +then the 'dot1dTpPortInFrames' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot1dTpPortOutFrames, as defined in [RFC1493], +then the 'dot1dTpPortOutFrames' bit will be set. + +If the agent can perform sorting of interfaces according to the +values of dot1dTpPortInDiscards, as defined in [RFC1493], +then the 'dot1dTpPortInDiscards' bit will be set." + + ::= { interfaceTopNObjects 1 } + + + + interfaceTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF InterfaceTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control records for reports on the top `N' + interfaces for the value or rate of a selected object. + The number of entries depends on the configuration of the agent. + The maximum number of entries is implementation + dependent." + ::= { interfaceTopNObjects 2 } + + interfaceTopNControlEntry OBJECT-TYPE + SYNTAX InterfaceTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N ports according to several metrics." + INDEX { interfaceTopNControlIndex } + ::= { interfaceTopNControlTable 1 } + + InterfaceTopNControlEntry ::= SEQUENCE { + interfaceTopNControlIndex + Integer32, + interfaceTopNObjectVariable + INTEGER, + + + interfaceTopNObjectSampleType + INTEGER, + interfaceTopNNormalizationReq + TruthValue, + interfaceTopNNormalizationFactor + Integer32, + interfaceTopNTimeRemaining + Integer32, + interfaceTopNDuration + Integer32, + interfaceTopNRequestedSize + Integer32, + interfaceTopNGrantedSize + Integer32, + interfaceTopNStartTime + TimeStamp, + interfaceTopNOwner + OwnerString, + interfaceTopNLastCompletionTime + TimeStamp, + interfaceTopNRowStatus + RowStatus + } + + interfaceTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1 .. 65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + interfaceTopNControl table. Each such entry defines + one top N report prepared for a probe." + ::= { interfaceTopNControlEntry 1 } + + +interfaceTopNObjectVariable OBJECT-TYPE + SYNTAX INTEGER { + ifInOctets(0), + ifInUcastPkts(1), + ifInNUcastPkts(2), + ifInDiscards(3), + ifInErrors(4), + ifInUnknownProtos(5), + ifOutOctets(6), + ifOutUcastPkts(7), + ifOutNUcastPkts(8), + ifOutDiscards(9), + ifOutErrors(10), + + + ifInMulticastPkts(11), + ifInBroadcastPkts(12), + ifOutMulticastPkts(13), + ifOutBroadcastPkts(14), + ifHCInOctets(15), + ifHCInUcastPkts(16), + ifHCInMulticastPkts(17), + ifHCInBroadcastPkts(18), + ifHCOutOctets(19), + ifHCOutUcastPkts(20), + ifHCOutMulticastPkts(21), + ifHCOutBroadcastPkts(22), + dot3StatsAlignmentErrors(23), + dot3StatsFCSErrors(24), + dot3StatsSingleCollisionFrames(25), + dot3StatsMultipleCollisionFrames(26), + dot3StatsSQETestErrors(27), + dot3StatsDeferredTransmissions(28), + dot3StatsLateCollisions(29), + dot3StatsExcessiveCollisions(30), + dot3StatsInternalMacTxErrors(31), + dot3StatsCarrierSenseErrors(32), + dot3StatsFrameTooLongs(33), + dot3StatsInternalMacRxErrors(34), + dot3StatsSymbolErrors(35), + dot3InPauseFrames(36), + dot3OutPauseFrames(37), + dot5StatsLineErrors(38), + dot5StatsBurstErrors(39), + dot5StatsACErrors(40), + dot5StatsAbortTransErrors(41), + dot5StatsInternalErrors(42), + dot5StatsLostFrameErrors(43), + dot5StatsReceiveCongestions(44), + dot5StatsFrameCopiedErrors(45), + dot5StatsTokenErrors(46), + dot5StatsSoftErrors(47), + dot5StatsHardErrors(48), + dot5StatsSignalLoss(49), + dot5StatsTransmitBeacons(50), + dot5StatsRecoverys(51), + dot5StatsLobeWires(52), + dot5StatsRemoves(53), + dot5StatsSingles(54), + dot5StatsFreqErrors(55), + etherStatsDropEvents(56), + etherStatsOctets(57), + etherStatsPkts(58), + + + etherStatsBroadcastPkts(59), + etherStatsMulticastPkts(60), + etherStatsCRCAlignErrors(61), + etherStatsUndersizePkts(62), + etherStatsOversizePkts(63), + etherStatsFragments(64), + etherStatsJabbers(65), + etherStatsCollisions(66), + etherStatsPkts64Octets(67), + etherStatsPkts65to127Octets(68), + etherStatsPkts128to255Octets(69), + etherStatsPkts256to511Octets(70), + etherStatsPkts512to1023Octets(71), + etherStatsPkts1024to1518Octets(72), + dot1dTpPortInFrames(73), + dot1dTpPortOutFrames(74), + dot1dTpPortInDiscards(75) +} + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The particular variable to be sampled. + + Values between 0 and 22, point to MIB objects defined in + IF-MIB [RFC2863]. + + Values between 23 and 37, point to MIB objects defined in + EtherLike-MIB [RFC2665]. + + Values between 38 and 55, point to MIB objects defined in + TOKENRING-MIB [RFC1748]. + + Values between 56 and 72, point to MIB objects defined in + RMON-MIB [RFC2819]. + + Values between 73 and 75, point to MIB objects defined in + BRIDGE-MIB [RFC1493]. + + 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 TopN + 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, or does not conform the + other conditions mentioned above, a badValue error must be + returned. + + This object may not be modified if the associated + interfaceTopNControlStatus object is equal to active(1)." + ::= { interfaceTopNControlEntry 2 } + +interfaceTopNObjectSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2), + bandwidthPercentage(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable for storage in + the interfaceTopNTable. + + If the value of this object is absoluteValue(1), the value of + the selected variable will be copied directly into the topNValue. + + 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 topNValue. + + If the value of this object is bandwidthPercentage(3), the agent + records the total number of octets sent over an interval divided + by the total number of octets that represent '100% bandwidth' + for that interface. This ratio is multiplied by 1000 to + retain a 3 digit integer (0..1000) in units of + 'tenth of one percent'. This type of computation is accurate for + the octet counters. The usage of this option with respect to + packets or error counters is not recommended. + + This object may not be modified if the associated + interfaceTopNControlStatus object is equal to active(1)." + ::= { interfaceTopNControlEntry 3 } + + +interfaceTopNNormalizationReq OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether normalization is required in the + + + computation of the selected value. + + If the value of this object is 'true', the value of + the selected variable will be multiplied by a factor equal to the + interfaceTopNNormalizationFactor divided by the value of + effective speed of the interface + + If the value of this object is 'false', + the value of the selected variable will be taken 'as is' in + the TopN computation. + + If the value of the object interfaceTopNSampleType is + bandwidthPercentage(3), the object + interfaceTopNNormalizationReq cannot take the value 'true'. + + The value of this object MUST be false if the effective speed of + the interface sub-layer as determined from ifSpeed is zero. This + conforms to the ifSpeed definition in [RFC2863]for a sub-layer + that has no concept of bandwidth. + + This object may not be modified if the associated + interfaceTopNControlStatus object is equal to active(1)." + ::= { interfaceTopNControlEntry 4 } + +interfaceTopNNormalizationFactor OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value used for normalization if + interfaceTopNNormalizationReq has the value 'true'. + + Example: + The following set of values is applied to a device with multiple + Ethernet interfaces running at 10 Mbps, 100 Mbps, and 1 Gbps. + interfaceTopNObjectVariable = 'ifInOctets' + interfaceTopNObjectSampleType = 'deltaValue' + interfaceTopNNormalizationReq = 'true' + interfaceTopNNormalizationFactor = 1000000000 + Applying this set of values will result in the sampled delta values + to be multiplied by 100 for the 10 Mbps interfaces, and by 10 for + the 100 Mbps interfaces, while the sample values for the 1 Gbps + interface are left unchanged. The effective speed of the interface is + taken from the value of ifSpeed for each interface, if ifSpeed is + less than 4,294,967,295, or from ifHighSpeed multiplied by + 1,000,000 otherwise. + + At row creation the agent SHOULD set the value of this object to + + + the effective speed of the interface." +::= { interfaceTopNControlEntry 5 } + +interfaceTopNTimeRemaining 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, + which is loaded into the associated + interfaceTopNDuration object. + + When this object is set to a non-zero value, + any associated interfaceTopNEntries shall be + made inaccessible by the agent. While the value + of this object is non-zero, it decrements by one + per second until it reaches zero. During this + time, all associated interfaceTopNEntries shall + remain inaccessible. At the time that this object + decrements to zero, the report is made accessible + in the interfaceTopNTable. Thus, the interfaceTopN + table needs to be created only at the end of the + collection interval. + + If the value of this object is set to zero + while the associated report is running, the + running report is aborted and no associated + interfaceTopNEntries are created." + DEFVAL { 0 } + ::= { interfaceTopNControlEntry 6 } + + interfaceTopNDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has + collected during the last sampling interval, + or if this report is currently being collected, + the number of seconds that this report is being + collected during this sampling interval. + + When the associated interfaceTopNTimeRemaining + + + object is set, this object shall be set by the + agent to the same value and shall not be modified + until the next time the interfaceTopNTimeRemaining + is set. + + This value shall be zero if no reports have been + requested for this interfaceTopNControlEntry." + ::= { interfaceTopNControlEntry 7 } + + interfaceTopNRequestedSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of interfaces requested + for the Top N Table. + + When this object is created or modified, the + agent should set interfaceTopNGrantedSize as close + to this object as is possible for the particular + implementation and available resources." + DEFVAL { 10 } + ::= { interfaceTopNControlEntry 8 } + + interfaceTopNGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0.. 2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of interfaces in the + top N table. + + When the associated interfaceTopNRequestedSize object is + created or modified, the agent should set this object as + closely to the requested value as is possible for the + particular implementation and available resources. The + agent must not lower this value except as a result of a + set to the associated interfaceTopNRequestedSize object." + ::= { interfaceTopNControlEntry 9 } + + interfaceTopNStartTime 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 interfaceTopNTimeRemaining object was + + + modified to start the requested report. + + If the report has not yet been started, the value + of this object is zero." + ::= { interfaceTopNControlEntry 10 } + + interfaceTopNOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + using the resources assigned to it." + ::= { interfaceTopNControlEntry 11 } + + interfaceTopNLastCompletionTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this top N report was + last completed. If no report was yet completed, the value + of this object is zero." + ::= { interfaceTopNControlEntry 12 } + + + interfaceTopNRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + If the value of this object is not equal to + active(1), all associated entries in the + interfaceTopNTable shall be deleted by the + agent." + ::= { interfaceTopNControlEntry 13 } + + + -- Interface Top "N" reports + + interfaceTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF InterfaceTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of reports for the top `N' ports based on + + + setting of associated control table entries. The + maximum number of entries depends on the number + of entries in table interfaceTopNControlTable and + the value of object interfaceTopNGrantedSize for + each entry. + + For each entry in the interfaceTopNControlTable, + interfaces with the highest value of + interfaceTopNValue shall be placed in this table + in decreasing order of that rate until there is + no more room or until there are no more ports." + ::= { interfaceTopNObjects 3 } + + interfaceTopNEntry OBJECT-TYPE + SYNTAX InterfaceTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for an interface that is + part of a top N report." + INDEX { interfaceTopNControlIndex, + interfaceTopNIndex } + ::= { interfaceTopNTable 1 } + + InterfaceTopNEntry ::= SEQUENCE { + interfaceTopNIndex + Integer32, + interfaceTopNDataSourceIndex + Integer32, + interfaceTopNValue + Gauge32, + interfaceTopNValue64 + CounterBasedGauge64 + } + + interfaceTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the interfaceTopN table among those in the same + report. This index is between 1 and N, where N + is the number of entries in this report. Increasing + values of interfaceTopNIndex shall be assigned to + entries with decreasing values of interfaceTopNValue + or interfaceTopNValue64, whichever applies, + until index N is assigned to the entry with the + + + lowest value of interfaceTopNValue / + interfaceTopNValue64 or there are no + more interfaceTopNEntries. + + No ports are included in a report where their + value of interfaceTopNValue would be zero." + ::= { interfaceTopNEntry 1 } + + interfaceTopNDataSourceIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the index corresponding + to the dataSource for this entry. + + For sorted values of variables belonging to the + IF-MIB, EtherLike-MIB or TOKENRING-MIB, this value + equals the ifIndex of the interface. + + For sorted values of variables belonging to the + RMON-MIB, this value equals the interface corresponding + to the data source, pointed to by the value + of etherStatsDataSource. + + For sorted values of variables belonging to the + BRIDGE-MIB, this value equals the interface corresponding + to the bridge port, pointed to by the value + of dot1dBasePortIfIndex." + ::= { interfaceTopNEntry 2 } + + interfaceTopNValue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value at the end of the sampling interval, or + the amount of change in the selected variable + during this sampling interval for the identified + interface. The selected variable is that interfaces's + instance of the object selected by + interfaceTopNObjectVariable. This value may be normalized + if interfaceTopNNormalization required equals 'true'. + This value of this object will be computed for all + cases when interfaceTopNObjectVariable points to a + 32-bit counter or Gauge or when + interfaceTopNObjectSampleType equals bandwidthPercentage(3), + and will be zero for all other cases." + + + ::= { interfaceTopNEntry 3 } + + interfaceTopNValue64 OBJECT-TYPE + SYNTAX CounterBasedGauge64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value at the end of the sampling interval, or + the amount of change in the selected variable + during this sampling interval for the identified + interface. The selected variable is that interfaces's + instance of the object selected by + interfaceTopNObjectVariable. This value may be normalized + if interfaceTopNNormalization required equals 'true'. + This value of this object will be computed for all + cases when interfaceTopNObjectVariable points to + a 64-bit counter, and will be zero for all other cases." + ::= { interfaceTopNEntry 4 } + + +-- +-- Notifications Section +-- (none defined) +-- + +-- +-- Conformance Section +-- + +interfaceTopNCompliances OBJECT IDENTIFIER ::= + {interfaceTopNConformance 1 } +interfaceTopNGroups OBJECT IDENTIFIER ::= + {interfaceTopNConformance 2 } + +interfaceTopNCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + InterfaceTopN MIB." + MODULE -- this module + MANDATORY-GROUPS { interfaceTopNGroup } + ::= { interfaceTopNCompliances 1 } + +interfaceTopNGroup OBJECT-GROUP + OBJECTS { + interfaceTopNCaps, + interfaceTopNObjectVariable, + interfaceTopNObjectSampleType, + + + interfaceTopNNormalizationReq, + interfaceTopNNormalizationFactor, + interfaceTopNTimeRemaining, + interfaceTopNDuration, + interfaceTopNRequestedSize, + interfaceTopNGrantedSize, + interfaceTopNStartTime, + interfaceTopNOwner, + interfaceTopNLastCompletionTime, + interfaceTopNRowStatus, + interfaceTopNDataSourceIndex, + interfaceTopNValue, + interfaceTopNValue64 + } + STATUS current + DESCRIPTION + "A collection of objects providing interfaceTopN data for + a multiple interfaces device." +::= { interfaceTopNGroups 1 } + +END diff --git a/mibs/ietf/IP-FORWARD-MIB b/mibs/ietf/IP-FORWARD-MIB new file mode 100644 index 0000000..3090ff7 --- /dev/null +++ b/mibs/ietf/IP-FORWARD-MIB @@ -0,0 +1,1357 @@ +IP-FORWARD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + IpAddress, Integer32, Gauge32, + Counter32 FROM SNMPv2-SMI + RowStatus FROM SNMPv2-TC + + + + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InterfaceIndexOrZero FROM IF-MIB + ip FROM IP-MIB + IANAipRouteProtocol FROM IANA-RTPROTO-MIB + InetAddress, InetAddressType, + InetAddressPrefixLength, + InetAutonomousSystemNumber FROM INET-ADDRESS-MIB; + +ipForward MODULE-IDENTITY + LAST-UPDATED "200602010000Z" + ORGANIZATION + "IETF IPv6 Working Group + http://www.ietf.org/html.charters/ipv6-charter.html" + CONTACT-INFO + "Editor: + Brian Haberman + Johns Hopkins University - Applied Physics Laboratory + Mailstop 17-S442 + 11100 Johns Hopkins Road + Laurel MD, 20723-6099 USA + + Phone: +1-443-778-1319 + Email: brian@innovationslab.net + + Send comments to " + DESCRIPTION + "The MIB module for the management of CIDR multipath IP + Routes. + + Copyright (C) The Internet Society (2006). This version + of this MIB module is a part of RFC 4292; see the RFC + itself for full legal notices." + + REVISION "200602010000Z" + DESCRIPTION + "IPv4/v6 version-independent revision. Minimal changes + were made to the original RFC 2096 MIB to allow easy + upgrade of existing IPv4 implementations to the + version-independent MIB. These changes include: + + Adding inetCidrRouteDiscards as a replacement for the + deprecated ipRoutingDiscards and ipv6DiscardedRoutes + objects. + + Adding a new conformance statement to support the + implementation of the IP Forwarding MIB in a + read-only mode. + + + + + The inetCidrRouteTable replaces the IPv4-specific + ipCidrRouteTable, its related objects, and related + conformance statements. + + Published as RFC 4292." + + REVISION "199609190000Z" + DESCRIPTION + "Revised to support CIDR routes. + Published as RFC 2096." + + REVISION "199207022156Z" + DESCRIPTION + "Initial version, published as RFC 1354." + ::= { ip 24 } + +inetCidrRouteNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current inetCidrRouteTable entries that + are not invalid." +::= { ipForward 6 } + +inetCidrRouteDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid route entries discarded from the + inetCidrRouteTable. Discarded route entries do not + appear in the inetCidrRouteTable. One possible reason + for discarding an entry would be to free-up buffer space + for other route table entries." + ::= { ipForward 8 } + +-- Inet CIDR Route Table + +-- The Inet CIDR Route Table deprecates and replaces the +-- ipCidrRoute Table currently in the IP Forwarding Table MIB. +-- It adds IP protocol independence. + +inetCidrRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF InetCidrRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This entity's IP Routing table." + REFERENCE + "RFC 1213 Section 6.6, The IP Group" + ::= { ipForward 7 } + +inetCidrRouteEntry OBJECT-TYPE + SYNTAX InetCidrRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A particular route to a particular destination, under a + particular policy (as reflected in the + inetCidrRoutePolicy object). + + Dynamically created rows will survive an agent reboot. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + inetCidrRouteDest, inetCidrRoutePolicy, and + inetCidrRouteNextHop exceeds 111, then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + INDEX { + inetCidrRouteDestType, + inetCidrRouteDest, + inetCidrRoutePfxLen, + inetCidrRoutePolicy, + inetCidrRouteNextHopType, + inetCidrRouteNextHop + } + ::= { inetCidrRouteTable 1 } + +InetCidrRouteEntry ::= SEQUENCE { + inetCidrRouteDestType InetAddressType, + inetCidrRouteDest InetAddress, + inetCidrRoutePfxLen InetAddressPrefixLength, + inetCidrRoutePolicy OBJECT IDENTIFIER, + inetCidrRouteNextHopType InetAddressType, + inetCidrRouteNextHop InetAddress, + inetCidrRouteIfIndex InterfaceIndexOrZero, + inetCidrRouteType INTEGER, + inetCidrRouteProto IANAipRouteProtocol, + inetCidrRouteAge Gauge32, + inetCidrRouteNextHopAS InetAutonomousSystemNumber, + inetCidrRouteMetric1 Integer32, + inetCidrRouteMetric2 Integer32, + inetCidrRouteMetric3 Integer32, + + + + inetCidrRouteMetric4 Integer32, + inetCidrRouteMetric5 Integer32, + inetCidrRouteStatus RowStatus + } + +inetCidrRouteDestType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the inetCidrRouteDest address, as defined + in the InetAddress MIB. + + Only those address types that may appear in an actual + routing table are allowed as values of this object." + REFERENCE "RFC 4001" + ::= { inetCidrRouteEntry 1 } + +inetCidrRouteDest OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination IP address of this route. + + The type of this address is determined by the value of + the inetCidrRouteDestType object. + + The values for the index objects inetCidrRouteDest and + inetCidrRoutePfxLen must be consistent. When the value + of inetCidrRouteDest (excluding the zone index, if one + is present) is x, then the bitwise logical-AND + of x with the value of the mask formed from the + corresponding index object inetCidrRoutePfxLen MUST be + equal to x. If not, then the index pair is not + consistent and an inconsistentName error must be + returned on SET or CREATE requests." + + ::= { inetCidrRouteEntry 2 } + +inetCidrRoutePfxLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the number of leading one bits that form the + mask to be logical-ANDed with the destination address + before being compared to the value in the + + + + inetCidrRouteDest field. + + The values for the index objects inetCidrRouteDest and + inetCidrRoutePfxLen must be consistent. When the value + of inetCidrRouteDest (excluding the zone index, if one + is present) is x, then the bitwise logical-AND + of x with the value of the mask formed from the + corresponding index object inetCidrRoutePfxLen MUST be + equal to x. If not, then the index pair is not + consistent and an inconsistentName error must be + returned on SET or CREATE requests." + + ::= { inetCidrRouteEntry 3 } + +inetCidrRoutePolicy OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an opaque object without any defined + semantics. Its purpose is to serve as an additional + index that may delineate between multiple entries to + the same destination. The value { 0 0 } shall be used + as the default value for this object." + ::= { inetCidrRouteEntry 4 } + +inetCidrRouteNextHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the inetCidrRouteNextHop address, as + defined in the InetAddress MIB. + + Value should be set to unknown(0) for non-remote + routes. + + Only those address types that may appear in an actual + routing table are allowed as values of this object." + REFERENCE "RFC 4001" + ::= { inetCidrRouteEntry 5 } + +inetCidrRouteNextHop OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "On remote routes, the address of the next system en + + + + route. For non-remote routes, a zero length string. + + The type of this address is determined by the value of + the inetCidrRouteNextHopType object." + ::= { inetCidrRouteEntry 6 } + +inetCidrRouteIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route should be + reached. A value of 0 is valid and represents the + scenario where no interface is specified." + ::= { inetCidrRouteEntry 7 } + +inetCidrRouteType OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified by this MIB + reject (2), -- route that discards traffic and + -- returns ICMP notification + local (3), -- local interface + remote (4), -- remote destination + blackhole(5) -- route that discards traffic + -- silently + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of route. Note that local(3) refers to a + route for which the next hop is the final destination; + remote(4) refers to a route for which the next hop is + not the final destination. + + Routes that do not result in traffic forwarding or + rejection should not be displayed, even if the + implementation keeps them stored internally. + + reject(2) refers to a route that, if matched, discards + the message as unreachable and returns a notification + (e.g., ICMP error) to the message sender. This is used + in some protocols as a means of correctly aggregating + routes. + + blackhole(5) refers to a route that, if matched, + discards the message silently." + ::= { inetCidrRouteEntry 8 } + + + + +inetCidrRouteProto OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which this route was learned. + Inclusion of values for gateway routing protocols is + not intended to imply that hosts should support those + protocols." + ::= { inetCidrRouteEntry 9 } + +inetCidrRouteAge OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds since this route was last updated + or otherwise determined to be correct. Note that no + semantics of 'too old' can be implied, except through + knowledge of the routing protocol by which the route + was learned." + ::= { inetCidrRouteEntry 10 } + +inetCidrRouteNextHopAS OBJECT-TYPE + SYNTAX InetAutonomousSystemNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Autonomous System Number of the Next Hop. The + semantics of this object are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. When this object is unknown or not relevant, its + value should be set to zero." + DEFVAL { 0 } + ::= { inetCidrRouteEntry 11 } + +inetCidrRouteMetric1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + + + + ::= { inetCidrRouteEntry 12 } + +inetCidrRouteMetric2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { inetCidrRouteEntry 13 } + +inetCidrRouteMetric3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { inetCidrRouteEntry 14 } + +inetCidrRouteMetric4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { inetCidrRouteEntry 15 } + +inetCidrRouteMetric5 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + + + + protocol specified in the route's inetCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { inetCidrRouteEntry 16 } + +inetCidrRouteStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + + A row entry cannot be modified when the status is + marked as active(1)." + ::= { inetCidrRouteEntry 17 } + +-- Conformance information + +ipForwardConformance + OBJECT IDENTIFIER ::= { ipForward 5 } + +ipForwardGroups + OBJECT IDENTIFIER ::= { ipForwardConformance 1 } + +ipForwardCompliances + OBJECT IDENTIFIER ::= { ipForwardConformance 2 } + +-- Compliance statements + +ipForwardFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented for read-create, the + implementation can claim full compliance. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + + -- OBJECT inetCidrRouteDestType + -- SYNTAX InetAddressType (ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global ipv4 and ipv6 addresses. + + + + -- + -- OBJECT inetCidrRouteDest + -- SYNTAX InetAddress (SIZE (4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global IPv4 and IPv6 addresses. + -- + -- OBJECT inetCidrRouteNextHopType + -- SYNTAX InetAddressType (unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3) + -- ipv6z(4)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global ipv4 and ipv6 addresses. + -- + -- OBJECT inetCidrRouteNextHop + -- SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global IPv4 and IPv6 addresses. + " + + MODULE -- this module + MANDATORY-GROUPS { inetForwardCidrRouteGroup } + + OBJECT inetCidrRouteStatus + SYNTAX RowStatus { active(1), notInService (2) } + WRITE-SYNTAX RowStatus { active(1), notInService (2), + createAndGo(4), destroy(6) } + DESCRIPTION "Support for createAndWait is not required." + + ::= { ipForwardCompliances 3 } + +ipForwardReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for read- + create (i.e., in read-only mode), the implementation can + claim read-only compliance." + MODULE -- this module + MANDATORY-GROUPS { inetForwardCidrRouteGroup } + + OBJECT inetCidrRouteIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteType + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteNextHopAS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric1 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteMetric5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT inetCidrRouteStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { ipForwardCompliances 4 } + +-- units of conformance + +inetForwardCidrRouteGroup OBJECT-GROUP + OBJECTS { inetCidrRouteDiscards, + inetCidrRouteIfIndex, inetCidrRouteType, + inetCidrRouteProto, inetCidrRouteAge, + + + + inetCidrRouteNextHopAS, inetCidrRouteMetric1, + inetCidrRouteMetric2, inetCidrRouteMetric3, + inetCidrRouteMetric4, inetCidrRouteMetric5, + inetCidrRouteStatus, inetCidrRouteNumber + } + STATUS current + DESCRIPTION + "The IP version-independent CIDR Route Table." + ::= { ipForwardGroups 4 } + +-- Deprecated Objects + +ipCidrRouteNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of current ipCidrRouteTable entries that are + not invalid. This object is deprecated in favor of + inetCidrRouteNumber and the inetCidrRouteTable." + ::= { ipForward 3 } + +-- IP CIDR Route Table + +-- The IP CIDR Route Table obsoletes and replaces the ipRoute +-- Table current in MIB-I and MIB-II and the IP Forwarding Table. +-- It adds knowledge of the autonomous system of the next hop, +-- multiple next hops, policy routing, and Classless +-- Inter-Domain Routing. + +ipCidrRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpCidrRouteEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entity's IP Routing table. This table has been + deprecated in favor of the IP version neutral + inetCidrRouteTable." + REFERENCE + "RFC 1213 Section 6.6, The IP Group" + ::= { ipForward 4 } + +ipCidrRouteEntry OBJECT-TYPE + SYNTAX IpCidrRouteEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A particular route to a particular destination, under a + + + + particular policy." + INDEX { + ipCidrRouteDest, + ipCidrRouteMask, + ipCidrRouteTos, + ipCidrRouteNextHop + } + ::= { ipCidrRouteTable 1 } + +IpCidrRouteEntry ::= SEQUENCE { + ipCidrRouteDest IpAddress, + ipCidrRouteMask IpAddress, + ipCidrRouteTos Integer32, + ipCidrRouteNextHop IpAddress, + ipCidrRouteIfIndex Integer32, + ipCidrRouteType INTEGER, + ipCidrRouteProto INTEGER, + ipCidrRouteAge Integer32, + ipCidrRouteInfo OBJECT IDENTIFIER, + ipCidrRouteNextHopAS Integer32, + ipCidrRouteMetric1 Integer32, + ipCidrRouteMetric2 Integer32, + ipCidrRouteMetric3 Integer32, + ipCidrRouteMetric4 Integer32, + ipCidrRouteMetric5 Integer32, + ipCidrRouteStatus RowStatus + } + +ipCidrRouteDest OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The destination IP address of this route. + + This object may not take a Multicast (Class D) address + value. + + Any assignment (implicit or otherwise) of an instance + of this object to a value x must be rejected if the + bitwise logical-AND of x with the value of the + corresponding instance of the ipCidrRouteMask object is + not equal to x." + ::= { ipCidrRouteEntry 1 } + +ipCidrRouteMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + + + + STATUS deprecated + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to the value + in the ipCidrRouteDest field. For those systems that + do not support arbitrary subnet masks, an agent + constructs the value of the ipCidrRouteMask by + reference to the IP Address Class. + + Any assignment (implicit or otherwise) of an instance + of this object to a value x must be rejected if the + bitwise logical-AND of x with the value of the + corresponding instance of the ipCidrRouteDest object is + not equal to ipCidrRouteDest." + ::= { ipCidrRouteEntry 2 } + +-- The following convention is included for specification +-- of TOS Field contents. At this time, the Host Requirements +-- and the Router Requirements documents disagree on the width +-- of the TOS field. This mapping describes the Router +-- Requirements mapping, and leaves room to widen the TOS field +-- without impact to fielded systems. + +ipCidrRouteTos OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The policy specifier is the IP TOS Field. The encoding + of IP TOS is as specified by the following convention. + Zero indicates the default path if no more specific + policy applies. + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + IP TOS IP TOS + Field Policy Field Policy + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + + + + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30" + ::= { ipCidrRouteEntry 3 } + +ipCidrRouteNextHop OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "On remote routes, the address of the next system en + route; Otherwise, 0.0.0.0." + ::= { ipCidrRouteEntry 4 } + +ipCidrRouteIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route should be + reached." + DEFVAL { 0 } + ::= { ipCidrRouteEntry 5 } + +ipCidrRouteType OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified by this MIB + reject (2), -- route that discards traffic + local (3), -- local interface + remote (4) -- remote destination + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of route. Note that local(3) refers to a + route for which the next hop is the final destination; + remote(4) refers to a route for which the next hop is + not the final destination. + + Routes that do not result in traffic forwarding or + rejection should not be displayed, even if the + implementation keeps them stored internally. + + reject (2) refers to a route that, if matched, + discards the message as unreachable. This is used in + some protocols as a means of correctly aggregating + routes." + ::= { ipCidrRouteEntry 6 } + + + + +ipCidrRouteProto OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + isIs (9), -- Dual IS-IS + esIs (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15), -- InterDomain Policy Routing + ciscoEigrp (16) -- Cisco EIGRP + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The routing mechanism via which this route was learned. + Inclusion of values for gateway routing protocols is + not intended to imply that hosts should support those + protocols." + ::= { ipCidrRouteEntry 7 } + +ipCidrRouteAge OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of seconds since this route was last updated + or otherwise determined to be correct. Note that no + semantics of `too old' can be implied, except through + knowledge of the routing protocol by which the route + was learned." + DEFVAL { 0 } + ::= { ipCidrRouteEntry 8 } + +ipCidrRouteInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + + + + STATUS deprecated + DESCRIPTION + "A reference to MIB definitions specific to the + particular routing protocol that is responsible for + this route, as determined by the value specified in the + route's ipCidrRouteProto value. If this information is + not present, its value should be set to the OBJECT + IDENTIFIER { 0 0 }, which is a syntactically valid + object identifier, and any implementation conforming to + ASN.1 and the Basic Encoding Rules must be able to + generate and recognize this value." + ::= { ipCidrRouteEntry 9 } + +ipCidrRouteNextHopAS OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The Autonomous System Number of the Next Hop. The + semantics of this object are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. When this object is unknown or not relevant, its + value should be set to zero." + DEFVAL { 0 } + ::= { ipCidrRouteEntry 10 } + +ipCidrRouteMetric1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 11 } + +ipCidrRouteMetric2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + + + + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 12 } + +ipCidrRouteMetric3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 13 } + +ipCidrRouteMetric4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 14 } + +ipCidrRouteMetric5 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipCidrRouteProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { ipCidrRouteEntry 15 } + +ipCidrRouteStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + + + + "The row status variable, used according to row + installation and removal conventions." + ::= { ipCidrRouteEntry 16 } + +-- compliance statements + +ipForwardCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMPv2 entities that + implement the ipForward MIB. + + This compliance statement has been deprecated and + replaced with ipForwardFullCompliance and + ipForwardReadOnlyCompliance." + + MODULE -- this module + MANDATORY-GROUPS { ipForwardCidrRouteGroup } + + ::= { ipForwardCompliances 1 } + +-- units of conformance + +ipForwardCidrRouteGroup OBJECT-GROUP + OBJECTS { ipCidrRouteNumber, + ipCidrRouteDest, ipCidrRouteMask, ipCidrRouteTos, + ipCidrRouteNextHop, ipCidrRouteIfIndex, + ipCidrRouteType, ipCidrRouteProto, ipCidrRouteAge, + ipCidrRouteInfo,ipCidrRouteNextHopAS, + ipCidrRouteMetric1, ipCidrRouteMetric2, + ipCidrRouteMetric3, ipCidrRouteMetric4, + ipCidrRouteMetric5, ipCidrRouteStatus + } + STATUS deprecated + DESCRIPTION + "The CIDR Route Table. + + This group has been deprecated and replaced with + inetForwardCidrRouteGroup." + ::= { ipForwardGroups 3 } + +-- Obsoleted Definitions - Objects + +ipForwardNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + + + + "The number of current ipForwardTable entries that are + not invalid." + ::= { ipForward 1 } + +-- IP Forwarding Table + +-- The IP Forwarding Table obsoletes and replaces the ipRoute +-- Table current in MIB-I and MIB-II. It adds knowledge of +-- the autonomous system of the next hop, multiple next hop +-- support, and policy routing support. + +ipForwardTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpForwardEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "This entity's IP Routing table." + REFERENCE + "RFC 1213 Section 6.6, The IP Group" + ::= { ipForward 2 } + +ipForwardEntry OBJECT-TYPE + SYNTAX IpForwardEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "A particular route to a particular destination, under a + particular policy." + INDEX { + ipForwardDest, + ipForwardProto, + ipForwardPolicy, + ipForwardNextHop + } + ::= { ipForwardTable 1 } + +IpForwardEntry ::= SEQUENCE { + ipForwardDest IpAddress, + ipForwardMask IpAddress, + ipForwardPolicy Integer32, + ipForwardNextHop IpAddress, + ipForwardIfIndex Integer32, + ipForwardType INTEGER, + ipForwardProto INTEGER, + ipForwardAge Integer32, + ipForwardInfo OBJECT IDENTIFIER, + ipForwardNextHopAS Integer32, + ipForwardMetric1 Integer32, + + + + ipForwardMetric2 Integer32, + ipForwardMetric3 Integer32, + ipForwardMetric4 Integer32, + ipForwardMetric5 Integer32 + } + +ipForwardDest OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The destination IP address of this route. An entry + with a value of 0.0.0.0 is considered a default route. + + This object may not take a Multicast (Class D) address + value. + + Any assignment (implicit or otherwise) of an instance + of this object to a value x must be rejected if the + bitwise logical-AND of x with the value of the + corresponding instance of the ipForwardMask object is + not equal to x." + ::= { ipForwardEntry 1 } + +ipForwardMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to the value + in the ipForwardDest field. For those systems that do + not support arbitrary subnet masks, an agent constructs + the value of the ipForwardMask by reference to the IP + Address Class. + + Any assignment (implicit or otherwise) of an instance + of this object to a value x must be rejected if the + bitwise logical-AND of x with the value of the + corresponding instance of the ipForwardDest object is + not equal to ipForwardDest." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ipForwardEntry 2 } + +-- The following convention is included for specification +-- of TOS Field contents. At this time, the Host Requirements +-- and the Router Requirements documents disagree on the width +-- of the TOS field. This mapping describes the Router + + + +-- Requirements mapping, and leaves room to widen the TOS field +-- without impact to fielded systems. + +ipForwardPolicy OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The general set of conditions that would cause + the selection of one multipath route (set of + next hops for a given destination) is referred + to as 'policy'. + + Unless the mechanism indicated by ipForwardProto + specifies otherwise, the policy specifier is + the IP TOS Field. The encoding of IP TOS is as + specified by the following convention. Zero + indicates the default path if no more specific + policy applies. + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + + + IP TOS IP TOS + Field Policy Field Policy + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30 + + Protocols defining 'policy' otherwise must either + define a set of values that are valid for + this object or must implement an integer-instanced + policy table for which this object's + value acts as an index." + ::= { ipForwardEntry 3 } + +ipForwardNextHop OBJECT-TYPE + + + + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "On remote routes, the address of the next system en + route; otherwise, 0.0.0.0." + ::= { ipForwardEntry 4 } + +ipForwardIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route should be + reached." + DEFVAL { 0 } + ::= { ipForwardEntry 5 } + +ipForwardType OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified by this MIB + invalid (2), -- logically deleted + local (3), -- local interface + remote (4) -- remote destination + } + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The type of route. Note that local(3) refers to a + route for which the next hop is the final destination; + remote(4) refers to a route for which the next hop is + not the final destination. + + Setting this object to the value invalid(2) has the + effect of invalidating the corresponding entry in the + ipForwardTable object. That is, it effectively + disassociates the destination identified with said + entry from the route identified with said entry. It is + an implementation-specific matter as to whether the + agent removes an invalidated entry from the table. + Accordingly, management stations must be prepared to + receive tabular information from agents that + corresponds to entries not currently in use. Proper + interpretation of such entries requires examination of + the relevant ipForwardType object." + DEFVAL { invalid } + ::= { ipForwardEntry 6 } + + + + +ipForwardProto OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + is-is (9), -- Dual IS-IS + es-is (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15) -- InterDomain Policy Routing + } + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The routing mechanism via which this route was learned. + Inclusion of values for gateway routing protocols is + not intended to imply that hosts should support those + protocols." + ::= { ipForwardEntry 7 } + +ipForwardAge OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The number of seconds since this route was last updated + or otherwise determined to be correct. Note that no + semantics of `too old' can be implied except through + knowledge of the routing protocol by which the route + was learned." + DEFVAL { 0 } + ::= { ipForwardEntry 8 } + +ipForwardInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS obsolete + + + + DESCRIPTION + "A reference to MIB definitions specific to the + particular routing protocol that is responsible for + this route, as determined by the value specified in the + route's ipForwardProto value. If this information is + not present, its value should be set to the OBJECT + IDENTIFIER { 0 0 }, which is a syntactically valid + object identifier, and any implementation conforming to + ASN.1 and the Basic Encoding Rules must be able to + generate and recognize this value." + ::= { ipForwardEntry 9 } + +ipForwardNextHopAS OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The Autonomous System Number of the Next Hop. When + this is unknown or not relevant to the protocol + indicated by ipForwardProto, zero." + DEFVAL { 0 } + ::= { ipForwardEntry 10 } + +ipForwardMetric1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 11 } + +ipForwardMetric2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 12 } + + + + +ipForwardMetric3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 13 } + +ipForwardMetric4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 14 } + +ipForwardMetric5 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing- + protocol specified in the route's ipForwardProto value. + If this metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { ipForwardEntry 15 } + +-- Obsoleted Definitions - Groups +-- compliance statements + +ipForwardOldCompliance MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement for SNMP entities that + implement the ipForward MIB." + + + + + MODULE -- this module + MANDATORY-GROUPS { ipForwardMultiPathGroup } + + ::= { ipForwardCompliances 2 } + +ipForwardMultiPathGroup OBJECT-GROUP + OBJECTS { ipForwardNumber, + ipForwardDest, ipForwardMask, ipForwardPolicy, + ipForwardNextHop, ipForwardIfIndex, ipForwardType, + ipForwardProto, ipForwardAge, ipForwardInfo, + ipForwardNextHopAS, + ipForwardMetric1, ipForwardMetric2, ipForwardMetric3, + ipForwardMetric4, ipForwardMetric5 + } + STATUS obsolete + DESCRIPTION + "IP Multipath Route Table." + ::= { ipForwardGroups 2 } + +END diff --git a/mibs/ietf/IP-MIB b/mibs/ietf/IP-MIB new file mode 100644 index 0000000..0a93501 --- /dev/null +++ b/mibs/ietf/IP-MIB @@ -0,0 +1,5254 @@ +IP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Counter32, IpAddress, + mib-2, Unsigned32, Counter64, + zeroDotZero FROM SNMPv2-SMI + PhysAddress, TruthValue, + TimeStamp, RowPointer, + TEXTUAL-CONVENTION, TestAndIncr, + RowStatus, StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InetAddress, InetAddressType, + InetAddressPrefixLength, + InetVersion, InetZoneIndex FROM INET-ADDRESS-MIB + InterfaceIndex FROM IF-MIB; + +ipMIB MODULE-IDENTITY + LAST-UPDATED "200602020000Z" + ORGANIZATION "IETF IPv6 MIB Revision Team" + CONTACT-INFO + "Editor: + + + + Shawn A. Routhier + Interworking Labs + 108 Whispering Pines Dr. Suite 235 + Scotts Valley, CA 95066 + USA + EMail: " + DESCRIPTION + "The MIB module for managing IP and ICMP implementations, but + excluding their management of IP routes. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4293; see the RFC itself for + full legal notices." + + REVISION "200602020000Z" + DESCRIPTION + "The IP version neutral revision with added IPv6 objects for + ND, default routers, and router advertisements. As well as + being the successor to RFC 2011, this MIB is also the + successor to RFCs 2465 and 2466. Published as RFC 4293." + + REVISION "199411010000Z" + DESCRIPTION + "A separate MIB module (IP-MIB) for IP and ICMP management + objects. Published as RFC 2011." + + REVISION "199103310000Z" + DESCRIPTION + "The initial revision of this MIB module was part of MIB-II, + which was published as RFC 1213." + ::= { mib-2 48} + +-- +-- The textual conventions we define and use in this MIB. +-- + +IpAddressOriginTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The origin of the address. + + manual(2) indicates that the address was manually configured + to a specified address, e.g., by user configuration. + + dhcp(4) indicates an address that was assigned to this + system by a DHCP server. + + linklayer(5) indicates an address created by IPv6 stateless + + + + auto-configuration. + + random(6) indicates an address chosen by the system at + random, e.g., an IPv4 address within 169.254/16, or an RFC + 3041 privacy address." + SYNTAX INTEGER { + other(1), + manual(2), + dhcp(4), + linklayer(5), + random(6) + } + +IpAddressStatusTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The status of an address. Most of the states correspond to + states from the IPv6 Stateless Address Autoconfiguration + protocol. + + The preferred(1) state indicates that this is a valid + address that can appear as the destination or source address + of a packet. + + The deprecated(2) state indicates that this is a valid but + deprecated address that should no longer be used as a source + address in new communications, but packets addressed to such + an address are processed as expected. + + The invalid(3) state indicates that this isn't a valid + address and it shouldn't appear as the destination or source + address of a packet. + + The inaccessible(4) state indicates that the address is not + accessible because the interface to which this address is + assigned is not operational. + + The unknown(5) state indicates that the status cannot be + determined for some reason. + + The tentative(6) state indicates that the uniqueness of the + address on the link is being verified. Addresses in this + state should not be used for general communication and + should only be used to determine the uniqueness of the + address. + + The duplicate(7) state indicates the address has been + determined to be non-unique on the link and so must not be + + + + used. + + The optimistic(8) state indicates the address is available + for use, subject to restrictions, while its uniqueness on + a link is being verified. + + In the absence of other information, an IPv4 address is + always preferred(1)." + REFERENCE "RFC 2462" + SYNTAX INTEGER { + preferred(1), + deprecated(2), + invalid(3), + inaccessible(4), + unknown(5), + tentative(6), + duplicate(7), + optimistic(8) + } + +IpAddressPrefixOriginTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The origin of this prefix. + + manual(2) indicates a prefix that was manually configured. + + wellknown(3) indicates a well-known prefix, e.g., 169.254/16 + for IPv4 auto-configuration or fe80::/10 for IPv6 link-local + addresses. Well known prefixes may be assigned by IANA, + the address registries, or by specification in a standards + track RFC. + + dhcp(4) indicates a prefix that was assigned by a DHCP + server. + + routeradv(5) indicates a prefix learned from a router + advertisement. + + Note: while IpAddressOriginTC and IpAddressPrefixOriginTC + are similar, they are not identical. The first defines how + an address was created, while the second defines how a + prefix was found." + SYNTAX INTEGER { + other(1), + manual(2), + wellknown(3), + dhcp(4), + + + + routeradv(5) + } + +Ipv6AddressIfIdentifierTC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:" + STATUS current + DESCRIPTION + "This data type is used to model IPv6 address + interface identifiers. This is a binary string + of up to 8 octets in network byte-order." + SYNTAX OCTET STRING (SIZE (0..8)) + +-- +-- the IP general group +-- some objects that affect all of IPv4 +-- + +ip OBJECT IDENTIFIER ::= { mib-2 4 } + +ipForwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a router + notForwarding(2) -- NOT acting as a router + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether this entity is acting as an IPv4 + router in respect to the forwarding of datagrams received + by, but not addressed to, this entity. IPv4 routers forward + datagrams. IPv4 hosts do not (except those source-routed + via the host). + + When this object is written, the entity should save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system. + Note: a stronger requirement is not used because this object + was previously defined." + ::= { ip 1 } + +ipDefaultTTL OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value inserted into the Time-To-Live field of + the IPv4 header of datagrams originated at this entity, + whenever a TTL value is not supplied by the transport layer + + + + protocol. + + When this object is written, the entity should save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system. + Note: a stronger requirement is not used because this object + was previously defined." + ::= { ip 2 } + +ipReasmTimeout OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of seconds that received fragments are + held while they are awaiting reassembly at this entity." + ::= { ip 13 } + +-- +-- the IPv6 general group +-- Some objects that affect all of IPv6 +-- + +ipv6IpForwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a router + notForwarding(2) -- NOT acting as a router + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether this entity is acting as an IPv6 + router on any interface in respect to the forwarding of + datagrams received by, but not addressed to, this entity. + IPv6 routers forward datagrams. IPv6 hosts do not (except + those source-routed via the host). + + When this object is written, the entity SHOULD save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system." + ::= { ip 25 } + +ipv6IpDefaultHopLimit OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The default value inserted into the Hop Limit field of the + IPv6 header of datagrams originated at this entity whenever + a Hop Limit value is not supplied by the transport layer + protocol. + + When this object is written, the entity SHOULD save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system." + REFERENCE "RFC 2461 Section 6.3.2" + ::= { ip 26 } + +-- +-- IPv4 Interface Table +-- + +ipv4InterfaceTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + a row in the ipv4InterfaceTable was added or deleted, or + when an ipv4InterfaceReasmMaxSize or an + ipv4InterfaceEnableStatus object was modified. + + If new objects are added to the ipv4InterfaceTable that + require the ipv4InterfaceTableLastChange to be updated when + they are modified, they must specify that requirement in + their description clause." + ::= { ip 27 } + +ipv4InterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv4InterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing per-interface IPv4-specific + information." + ::= { ip 28 } + +ipv4InterfaceEntry OBJECT-TYPE + SYNTAX Ipv4InterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing IPv4-specific information for a specific + interface." + INDEX { ipv4InterfaceIfIndex } + + + + ::= { ipv4InterfaceTable 1 } + +Ipv4InterfaceEntry ::= SEQUENCE { + ipv4InterfaceIfIndex InterfaceIndex, + ipv4InterfaceReasmMaxSize Integer32, + ipv4InterfaceEnableStatus INTEGER, + ipv4InterfaceRetransmitTime Unsigned32 + } + +ipv4InterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface to + which this entry is applicable. The interface identified by + a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipv4InterfaceEntry 1 } + +ipv4InterfaceReasmMaxSize OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest IPv4 datagram that this entity can + re-assemble from incoming IPv4 fragmented datagrams received + on this interface." + ::= { ipv4InterfaceEntry 2 } + +ipv4InterfaceEnableStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether IPv4 is enabled (up) or disabled + (down) on this interface. This object does not affect the + state of the interface itself, only its connection to an + IPv4 stack. The IF-MIB should be used to control the state + of the interface." + ::= { ipv4InterfaceEntry 3 } + +ipv4InterfaceRetransmitTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time between retransmissions of ARP requests to a + neighbor when resolving the address or when probing the + reachability of a neighbor." + REFERENCE "RFC 1122" + DEFVAL { 1000 } + ::= { ipv4InterfaceEntry 4 } + +-- +-- v6 interface table +-- + +ipv6InterfaceTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + a row in the ipv6InterfaceTable was added or deleted or when + an ipv6InterfaceReasmMaxSize, ipv6InterfaceIdentifier, + ipv6InterfaceEnableStatus, ipv6InterfaceReachableTime, + ipv6InterfaceRetransmitTime, or ipv6InterfaceForwarding + object was modified. + + If new objects are added to the ipv6InterfaceTable that + require the ipv6InterfaceTableLastChange to be updated when + they are modified, they must specify that requirement in + their description clause." + ::= { ip 29 } + +ipv6InterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6InterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing per-interface IPv6-specific + information." + ::= { ip 30 } + +ipv6InterfaceEntry OBJECT-TYPE + SYNTAX Ipv6InterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing IPv6-specific information for a given + interface." + + + + INDEX { ipv6InterfaceIfIndex } + ::= { ipv6InterfaceTable 1 } + +Ipv6InterfaceEntry ::= SEQUENCE { + ipv6InterfaceIfIndex InterfaceIndex, + ipv6InterfaceReasmMaxSize Unsigned32, + ipv6InterfaceIdentifier Ipv6AddressIfIdentifierTC, + ipv6InterfaceEnableStatus INTEGER, + ipv6InterfaceReachableTime Unsigned32, + ipv6InterfaceRetransmitTime Unsigned32, + ipv6InterfaceForwarding INTEGER + } + +ipv6InterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface to + which this entry is applicable. The interface identified by + a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipv6InterfaceEntry 1 } + +ipv6InterfaceReasmMaxSize OBJECT-TYPE + SYNTAX Unsigned32 (1500..65535) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest IPv6 datagram that this entity can + re-assemble from incoming IPv6 fragmented datagrams received + on this interface." + ::= { ipv6InterfaceEntry 2 } + +ipv6InterfaceIdentifier OBJECT-TYPE + SYNTAX Ipv6AddressIfIdentifierTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Interface Identifier for this interface. The Interface + Identifier is combined with an address prefix to form an + interface address. + + By default, the Interface Identifier is auto-configured + according to the rules of the link type to which this + interface is attached. + + + + + A zero length identifier may be used where appropriate. One + possible example is a loopback interface." + ::= { ipv6InterfaceEntry 3 } + +-- This object ID is reserved as it was used in earlier versions of +-- the MIB module. In theory, OIDs are not assigned until the +-- specification is released as an RFC; however, as some companies +-- may have shipped code based on earlier versions of the MIB, it +-- seems best to reserve this OID. This OID had been +-- ipv6InterfacePhysicalAddress. +-- ::= { ipv6InterfaceEntry 4} + +ipv6InterfaceEnableStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether IPv6 is enabled (up) or disabled + (down) on this interface. This object does not affect the + state of the interface itself, only its connection to an + IPv6 stack. The IF-MIB should be used to control the state + of the interface. + + When this object is written, the entity SHOULD save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system." + ::= { ipv6InterfaceEntry 5 } + +ipv6InterfaceReachableTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time a neighbor is considered reachable after receiving + a reachability confirmation." + REFERENCE "RFC 2461, Section 6.3.2" + ::= { ipv6InterfaceEntry 6 } + +ipv6InterfaceRetransmitTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The time between retransmissions of Neighbor Solicitation + messages to a neighbor when resolving the address or when + probing the reachability of a neighbor." + REFERENCE "RFC 2461, Section 6.3.2" + ::= { ipv6InterfaceEntry 7 } + +ipv6InterfaceForwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a router + notForwarding(2) -- NOT acting as a router + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether this entity is acting as an IPv6 + router on this interface with respect to the forwarding of + datagrams received by, but not addressed to, this entity. + IPv6 routers forward datagrams. IPv6 hosts do not (except + those source-routed via the host). + + This object is constrained by ipv6IpForwarding and is + ignored if ipv6IpForwarding is set to notForwarding. Those + systems that do not provide per-interface control of the + forwarding function should set this object to forwarding for + all interfaces and allow the ipv6IpForwarding object to + control the forwarding capability. + + When this object is written, the entity SHOULD save the + change to non-volatile storage and restore the object from + non-volatile storage upon re-initialization of the system." + ::= { ipv6InterfaceEntry 8 } + +-- +-- Per-Interface or System-Wide IP statistics. +-- +-- The following two tables, ipSystemStatsTable and ipIfStatsTable, +-- are intended to provide the same counters at different granularities. +-- The ipSystemStatsTable provides system wide counters aggregating +-- the traffic counters for all interfaces for a given address type. +-- The ipIfStatsTable provides the same counters but for specific +-- interfaces rather than as an aggregate. +-- +-- Note well: If a system provides both system-wide and interface- +-- specific values, the system-wide value may not be equal to the sum +-- of the interface-specific values across all interfaces due to e.g., +-- dynamic interface creation/deletion. +-- +-- Note well: Both of these tables contain some items that are + + + +-- represented by two objects, representing the value in either 32 +-- or 64 bits. For those objects, the 32-bit value MUST be the low +-- order 32 bits of the 64-bit value. Also note that the 32-bit +-- counters must be included when the 64-bit counters are included. + +ipTrafficStats OBJECT IDENTIFIER ::= { ip 31 } + +ipSystemStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSystemStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing system wide, IP version specific + traffic statistics. This table and the ipIfStatsTable + contain similar objects whose difference is in their + granularity. Where this table contains system wide traffic + statistics, the ipIfStatsTable contains the same statistics + but counted on a per-interface basis." + ::= { ipTrafficStats 1 } + +ipSystemStatsEntry OBJECT-TYPE + SYNTAX IpSystemStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A statistics entry containing system-wide objects for a + particular IP version." + INDEX { ipSystemStatsIPVersion } + ::= { ipSystemStatsTable 1 } + +IpSystemStatsEntry ::= SEQUENCE { + ipSystemStatsIPVersion InetVersion, + ipSystemStatsInReceives Counter32, + ipSystemStatsHCInReceives Counter64, + ipSystemStatsInOctets Counter32, + ipSystemStatsHCInOctets Counter64, + ipSystemStatsInHdrErrors Counter32, + ipSystemStatsInNoRoutes Counter32, + ipSystemStatsInAddrErrors Counter32, + ipSystemStatsInUnknownProtos Counter32, + ipSystemStatsInTruncatedPkts Counter32, + ipSystemStatsInForwDatagrams Counter32, + ipSystemStatsHCInForwDatagrams Counter64, + ipSystemStatsReasmReqds Counter32, + ipSystemStatsReasmOKs Counter32, + ipSystemStatsReasmFails Counter32, + ipSystemStatsInDiscards Counter32, + ipSystemStatsInDelivers Counter32, + + + + ipSystemStatsHCInDelivers Counter64, + ipSystemStatsOutRequests Counter32, + ipSystemStatsHCOutRequests Counter64, + ipSystemStatsOutNoRoutes Counter32, + ipSystemStatsOutForwDatagrams Counter32, + ipSystemStatsHCOutForwDatagrams Counter64, + ipSystemStatsOutDiscards Counter32, + ipSystemStatsOutFragReqds Counter32, + ipSystemStatsOutFragOKs Counter32, + ipSystemStatsOutFragFails Counter32, + ipSystemStatsOutFragCreates Counter32, + ipSystemStatsOutTransmits Counter32, + ipSystemStatsHCOutTransmits Counter64, + ipSystemStatsOutOctets Counter32, + ipSystemStatsHCOutOctets Counter64, + ipSystemStatsInMcastPkts Counter32, + ipSystemStatsHCInMcastPkts Counter64, + ipSystemStatsInMcastOctets Counter32, + ipSystemStatsHCInMcastOctets Counter64, + ipSystemStatsOutMcastPkts Counter32, + ipSystemStatsHCOutMcastPkts Counter64, + ipSystemStatsOutMcastOctets Counter32, + ipSystemStatsHCOutMcastOctets Counter64, + ipSystemStatsInBcastPkts Counter32, + ipSystemStatsHCInBcastPkts Counter64, + ipSystemStatsOutBcastPkts Counter32, + ipSystemStatsHCOutBcastPkts Counter64, + ipSystemStatsDiscontinuityTime TimeStamp, + ipSystemStatsRefreshRate Unsigned32 + } + +ipSystemStatsIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of this row." + ::= { ipSystemStatsEntry 1 } + +-- This object ID is reserved to allow the IDs for this table's objects +-- to align with the objects in the ipIfStatsTable. +-- ::= { ipSystemStatsEntry 2 } + +ipSystemStatsInReceives OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of input IP datagrams received, including + those received in error. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 3 } + +ipSystemStatsHCInReceives OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of input IP datagrams received, including + those received in error. This object counts the same + datagrams as ipSystemStatsInReceives, but allows for larger + values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 4 } + +ipSystemStatsInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in input IP datagrams, + including those received in error. Octets from datagrams + counted in ipSystemStatsInReceives MUST be counted here. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 5 } + +ipSystemStatsHCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in input IP datagrams, + including those received in error. This object counts the + same octets as ipSystemStatsInOctets, but allows for larger + + + + values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 6 } + +ipSystemStatsInHdrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded due to errors in + their IP headers, including version number mismatch, other + format errors, hop count exceeded, errors discovered in + processing their IP options, etc. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 7 } + +ipSystemStatsInNoRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because no route + could be found to transmit them to their destination. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 8 } + +ipSystemStatsInAddrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because the IP + address in their IP header's destination field was not a + valid address to be received at this entity. This count + includes invalid addresses (e.g., ::0). For entities + that are not IP routers and therefore do not forward + + + + datagrams, this counter includes datagrams discarded + because the destination address was not a local address. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 9 } + +ipSystemStatsInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of locally-addressed IP datagrams received + successfully but discarded because of an unknown or + unsupported protocol. + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 10 } + +ipSystemStatsInTruncatedPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because the + datagram frame didn't carry enough data. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 11 } + +ipSystemStatsInForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of input datagrams for which this entity was not + their final IP destination and for which this entity + attempted to find a route to forward them to that final + destination. In entities that do not act as IP routers, + this counter will include only those datagrams that were + Source-Routed via this entity, and the Source-Route + processing was successful. + + When tracking interface statistics, the counter of the + incoming interface is incremented for each datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 12 } + +ipSystemStatsHCInForwDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams for which this entity was not + their final IP destination and for which this entity + attempted to find a route to forward them to that final + destination. This object counts the same packets as + ipSystemStatsInForwDatagrams, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 13 } + +ipSystemStatsReasmReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP fragments received that needed to be + reassembled at this interface. + + When tracking interface statistics, the counter of the + interface to which these fragments were addressed is + incremented. This interface might not be the same as the + input interface for some of the fragments. + + Discontinuities in the value of this counter can occur at + + + + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 14 } + +ipSystemStatsReasmOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams successfully reassembled. + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 15 } + +ipSystemStatsReasmFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of failures detected by the IP re-assembly + algorithm (for whatever reason: timed out, errors, etc.). + Note that this is not necessarily a count of discarded IP + fragments since some algorithms (notably the algorithm in + RFC 815) can lose track of the number of fragments by + combining them as they are received. + + When tracking interface statistics, the counter of the + interface to which these fragments were addressed is + incremented. This interface might not be the same as the + input interface for some of the fragments. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 16 } + +ipSystemStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams for which no problems were + encountered to prevent their continued processing, but + were discarded (e.g., for lack of buffer space). Note that + this counter does not include any datagrams discarded while + awaiting re-assembly. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 17 } + +ipSystemStatsInDelivers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully delivered to IP + user-protocols (including ICMP). + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 18 } + +ipSystemStatsHCInDelivers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully delivered to IP + user-protocols (including ICMP). This object counts the + same packets as ipSystemStatsInDelivers, but allows for + larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + + + + ::= { ipSystemStatsEntry 19 } + +ipSystemStatsOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that local IP user- + protocols (including ICMP) supplied to IP in requests for + transmission. Note that this counter does not include any + datagrams counted in ipSystemStatsOutForwDatagrams. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 20 } + +ipSystemStatsHCOutRequests OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that local IP user- + protocols (including ICMP) supplied to IP in requests for + transmission. This object counts the same packets as + ipSystemStatsOutRequests, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 21 } + +ipSystemStatsOutNoRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of locally generated IP datagrams discarded + because no route could be found to transmit them to their + destination. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 22 } + + + +ipSystemStatsOutForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination. In entities + that do not act as IP routers, this counter will include + only those datagrams that were Source-Routed via this + entity, and the Source-Route processing was successful. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + forwarded datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 23 } + +ipSystemStatsHCOutForwDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination. This object + counts the same packets as ipSystemStatsOutForwDatagrams, + but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 24 } + +ipSystemStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output IP datagrams for which no problem was + encountered to prevent their transmission to their + destination, but were discarded (e.g., for lack of + buffer space). Note that this counter would include + + + + datagrams counted in ipSystemStatsOutForwDatagrams if any + such datagrams met this (discretionary) discard criterion. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 25 } + +ipSystemStatsOutFragReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that would require fragmentation + in order to be transmitted. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 26 } + +ipSystemStatsOutFragOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that have been successfully + fragmented. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 27 } + +ipSystemStatsOutFragFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of IP datagrams that have been discarded because + they needed to be fragmented but could not be. This + includes IPv4 packets that have the DF bit set and IPv6 + packets that are being forwarded and exceed the outgoing + link MTU. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for an unsuccessfully + fragmented datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 28 } + +ipSystemStatsOutFragCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output datagram fragments that have been + generated as a result of IP fragmentation. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 29 } + +ipSystemStatsOutTransmits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that this entity supplied + to the lower layers for transmission. This includes + datagrams generated locally and those forwarded by this + entity. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 30 } + +ipSystemStatsHCOutTransmits OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that this entity supplied + to the lower layers for transmission. This object counts + the same datagrams as ipSystemStatsOutTransmits, but allows + for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 31 } + +ipSystemStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in IP datagrams delivered to the + lower layers for transmission. Octets from datagrams + counted in ipSystemStatsOutTransmits MUST be counted here. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 32 } + +ipSystemStatsHCOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in IP datagrams delivered to the + lower layers for transmission. This objects counts the same + octets as ipSystemStatsOutOctets, but allows for larger + values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + + + + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 33 } + +ipSystemStatsInMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams received. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 34 } + +ipSystemStatsHCInMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams received. This object + counts the same datagrams as ipSystemStatsInMcastPkts but + allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 35 } + +ipSystemStatsInMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in IP multicast + datagrams. Octets from datagrams counted in + ipSystemStatsInMcastPkts MUST be counted here. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 36 } + +ipSystemStatsHCInMcastOctets OBJECT-TYPE + SYNTAX Counter64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in IP multicast + datagrams. This object counts the same octets as + ipSystemStatsInMcastOctets, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 37 } + +ipSystemStatsOutMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams transmitted. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 38 } + +ipSystemStatsHCOutMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams transmitted. This + object counts the same datagrams as + ipSystemStatsOutMcastPkts, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 39 } + +ipSystemStatsOutMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted in IP multicast + datagrams. Octets from datagrams counted in + + + + ipSystemStatsOutMcastPkts MUST be counted here. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 40 } + +ipSystemStatsHCOutMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted in IP multicast + datagrams. This object counts the same octets as + ipSystemStatsOutMcastOctets, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 41 } + +ipSystemStatsInBcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams received. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 42 } + +ipSystemStatsHCInBcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams received. This object + counts the same datagrams as ipSystemStatsInBcastPkts but + allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + + + + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 43 } + +ipSystemStatsOutBcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams transmitted. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 44 } + +ipSystemStatsHCOutBcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams transmitted. This + object counts the same datagrams as + ipSystemStatsOutBcastPkts, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipSystemStatsDiscontinuityTime." + ::= { ipSystemStatsEntry 45 } + +ipSystemStatsDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this entry's counters suffered a + discontinuity. + + If no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipSystemStatsEntry 46 } + +ipSystemStatsRefreshRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milli-seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum reasonable polling interval for this entry. + This object provides an indication of the minimum amount of + time required to update the counters in this entry." + ::= { ipSystemStatsEntry 47 } + +ipIfStatsTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + a row in the ipIfStatsTable was added or deleted. + + If new objects are added to the ipIfStatsTable that require + the ipIfStatsTableLastChange to be updated when they are + modified, they must specify that requirement in their + description clause." + ::= { ipTrafficStats 2 } + +ipIfStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpIfStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing per-interface traffic statistics. This + table and the ipSystemStatsTable contain similar objects + whose difference is in their granularity. Where this table + contains per-interface statistics, the ipSystemStatsTable + contains the same statistics, but counted on a system wide + basis." + ::= { ipTrafficStats 3 } + +ipIfStatsEntry OBJECT-TYPE + SYNTAX IpIfStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An interface statistics entry containing objects for a + particular interface and version of IP." + INDEX { ipIfStatsIPVersion, ipIfStatsIfIndex } + ::= { ipIfStatsTable 1 } + +IpIfStatsEntry ::= SEQUENCE { + ipIfStatsIPVersion InetVersion, + ipIfStatsIfIndex InterfaceIndex, + + + + ipIfStatsInReceives Counter32, + ipIfStatsHCInReceives Counter64, + ipIfStatsInOctets Counter32, + ipIfStatsHCInOctets Counter64, + ipIfStatsInHdrErrors Counter32, + ipIfStatsInNoRoutes Counter32, + ipIfStatsInAddrErrors Counter32, + ipIfStatsInUnknownProtos Counter32, + ipIfStatsInTruncatedPkts Counter32, + ipIfStatsInForwDatagrams Counter32, + ipIfStatsHCInForwDatagrams Counter64, + ipIfStatsReasmReqds Counter32, + ipIfStatsReasmOKs Counter32, + ipIfStatsReasmFails Counter32, + ipIfStatsInDiscards Counter32, + ipIfStatsInDelivers Counter32, + ipIfStatsHCInDelivers Counter64, + ipIfStatsOutRequests Counter32, + ipIfStatsHCOutRequests Counter64, + ipIfStatsOutForwDatagrams Counter32, + ipIfStatsHCOutForwDatagrams Counter64, + ipIfStatsOutDiscards Counter32, + ipIfStatsOutFragReqds Counter32, + ipIfStatsOutFragOKs Counter32, + ipIfStatsOutFragFails Counter32, + ipIfStatsOutFragCreates Counter32, + ipIfStatsOutTransmits Counter32, + ipIfStatsHCOutTransmits Counter64, + ipIfStatsOutOctets Counter32, + ipIfStatsHCOutOctets Counter64, + ipIfStatsInMcastPkts Counter32, + ipIfStatsHCInMcastPkts Counter64, + ipIfStatsInMcastOctets Counter32, + ipIfStatsHCInMcastOctets Counter64, + ipIfStatsOutMcastPkts Counter32, + ipIfStatsHCOutMcastPkts Counter64, + ipIfStatsOutMcastOctets Counter32, + ipIfStatsHCOutMcastOctets Counter64, + ipIfStatsInBcastPkts Counter32, + ipIfStatsHCInBcastPkts Counter64, + ipIfStatsOutBcastPkts Counter32, + ipIfStatsHCOutBcastPkts Counter64, + ipIfStatsDiscontinuityTime TimeStamp, + ipIfStatsRefreshRate Unsigned32 + } + +ipIfStatsIPVersion OBJECT-TYPE + SYNTAX InetVersion + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of this row." + ::= { ipIfStatsEntry 1 } + +ipIfStatsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface to + which this entry is applicable. The interface identified by + a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipIfStatsEntry 2 } + +ipIfStatsInReceives OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of input IP datagrams received, including + those received in error. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 3 } + +ipIfStatsHCInReceives OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of input IP datagrams received, including + those received in error. This object counts the same + datagrams as ipIfStatsInReceives, but allows for larger + values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 4 } + +ipIfStatsInOctets OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in input IP datagrams, + including those received in error. Octets from datagrams + counted in ipIfStatsInReceives MUST be counted here. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 5 } + +ipIfStatsHCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in input IP datagrams, + including those received in error. This object counts the + same octets as ipIfStatsInOctets, but allows for larger + values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 6 } + +ipIfStatsInHdrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded due to errors in + their IP headers, including version number mismatch, other + format errors, hop count exceeded, errors discovered in + processing their IP options, etc. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 7 } + +ipIfStatsInNoRoutes OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because no route + could be found to transmit them to their destination. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 8 } + +ipIfStatsInAddrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because the IP + address in their IP header's destination field was not a + valid address to be received at this entity. This count + includes invalid addresses (e.g., ::0). For entities that + are not IP routers and therefore do not forward datagrams, + this counter includes datagrams discarded because the + destination address was not a local address. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 9 } + +ipIfStatsInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of locally-addressed IP datagrams received + successfully but discarded because of an unknown or + unsupported protocol. + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + + + + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 10 } + +ipIfStatsInTruncatedPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams discarded because the + datagram frame didn't carry enough data. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 11 } + +ipIfStatsInForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams for which this entity was not + their final IP destination and for which this entity + attempted to find a route to forward them to that final + destination. In entities that do not act as IP routers, + this counter will include only those datagrams that were + Source-Routed via this entity, and the Source-Route + processing was successful. + + When tracking interface statistics, the counter of the + incoming interface is incremented for each datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 12 } + +ipIfStatsHCInForwDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams for which this entity was not + their final IP destination and for which this entity + attempted to find a route to forward them to that final + destination. This object counts the same packets as + + + + ipIfStatsInForwDatagrams, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 13 } + +ipIfStatsReasmReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP fragments received that needed to be + reassembled at this interface. + + When tracking interface statistics, the counter of the + interface to which these fragments were addressed is + incremented. This interface might not be the same as the + input interface for some of the fragments. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 14 } + +ipIfStatsReasmOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams successfully reassembled. + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + input interface for some of the datagrams. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 15 } + +ipIfStatsReasmFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of failures detected by the IP re-assembly + algorithm (for whatever reason: timed out, errors, etc.). + Note that this is not necessarily a count of discarded IP + fragments since some algorithms (notably the algorithm in + RFC 815) can lose track of the number of fragments by + combining them as they are received. + + When tracking interface statistics, the counter of the + interface to which these fragments were addressed is + incremented. This interface might not be the same as the + input interface for some of the fragments. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 16 } + +ipIfStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IP datagrams for which no problems were + encountered to prevent their continued processing, but + were discarded (e.g., for lack of buffer space). Note that + this counter does not include any datagrams discarded while + awaiting re-assembly. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 17 } + +ipIfStatsInDelivers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully delivered to IP + user-protocols (including ICMP). + + When tracking interface statistics, the counter of the + interface to which these datagrams were addressed is + incremented. This interface might not be the same as the + + + + input interface for some of the datagrams. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 18 } + +ipIfStatsHCInDelivers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully delivered to IP + user-protocols (including ICMP). This object counts the + same packets as ipIfStatsInDelivers, but allows for larger + values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 19 } + +ipIfStatsOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that local IP user- + protocols (including ICMP) supplied to IP in requests for + transmission. Note that this counter does not include any + datagrams counted in ipIfStatsOutForwDatagrams. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 20 } + +ipIfStatsHCOutRequests OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that local IP user- + protocols (including ICMP) supplied to IP in requests for + transmission. This object counts the same packets as + + + + ipIfStatsOutRequests, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 21 } + +-- This object ID is reserved to allow the IDs for this table's objects +-- to align with the objects in the ipSystemStatsTable. +-- ::= {ipIfStatsEntry 22} + +ipIfStatsOutForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination. In entities + that do not act as IP routers, this counter will include + only those datagrams that were Source-Routed via this + entity, and the Source-Route processing was successful. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + forwarded datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 23 } + +ipIfStatsHCOutForwDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination. This object + counts the same packets as ipIfStatsOutForwDatagrams, but + allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + + + + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 24 } + +ipIfStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output IP datagrams for which no problem was + encountered to prevent their transmission to their + destination, but were discarded (e.g., for lack of + buffer space). Note that this counter would include + datagrams counted in ipIfStatsOutForwDatagrams if any such + datagrams met this (discretionary) discard criterion. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 25 } + +ipIfStatsOutFragReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that would require fragmentation + in order to be transmitted. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 26 } + +ipIfStatsOutFragOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that have been successfully + fragmented. + + When tracking interface statistics, the counter of the + + + + outgoing interface is incremented for a successfully + fragmented datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 27 } + +ipIfStatsOutFragFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP datagrams that have been discarded because + they needed to be fragmented but could not be. This + includes IPv4 packets that have the DF bit set and IPv6 + packets that are being forwarded and exceed the outgoing + link MTU. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for an unsuccessfully + fragmented datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 28 } + +ipIfStatsOutFragCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output datagram fragments that have been + generated as a result of IP fragmentation. + + When tracking interface statistics, the counter of the + outgoing interface is incremented for a successfully + fragmented datagram. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 29 } + + + + +ipIfStatsOutTransmits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that this entity supplied + to the lower layers for transmission. This includes + datagrams generated locally and those forwarded by this + entity. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 30 } + +ipIfStatsHCOutTransmits OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IP datagrams that this entity supplied + to the lower layers for transmission. This object counts + the same datagrams as ipIfStatsOutTransmits, but allows for + larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 31 } + +ipIfStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in IP datagrams delivered to the + lower layers for transmission. Octets from datagrams + counted in ipIfStatsOutTransmits MUST be counted here. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 32 } + +ipIfStatsHCOutOctets OBJECT-TYPE + + + + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in IP datagrams delivered to the + lower layers for transmission. This objects counts the same + octets as ipIfStatsOutOctets, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 33 } + +ipIfStatsInMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams received. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 34 } + +ipIfStatsHCInMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams received. This object + counts the same datagrams as ipIfStatsInMcastPkts, but + allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 35 } + +ipIfStatsInMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in IP multicast + + + + datagrams. Octets from datagrams counted in + ipIfStatsInMcastPkts MUST be counted here. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 36 } + +ipIfStatsHCInMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received in IP multicast + datagrams. This object counts the same octets as + ipIfStatsInMcastOctets, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 37 } + +ipIfStatsOutMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams transmitted. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 38 } + +ipIfStatsHCOutMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP multicast datagrams transmitted. This + object counts the same datagrams as ipIfStatsOutMcastPkts, + but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 39 } + +ipIfStatsOutMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted in IP multicast + datagrams. Octets from datagrams counted in + ipIfStatsOutMcastPkts MUST be counted here. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 40 } + +ipIfStatsHCOutMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted in IP multicast + datagrams. This object counts the same octets as + ipIfStatsOutMcastOctets, but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 41 } + +ipIfStatsInBcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams received. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 42 } + +ipIfStatsHCInBcastPkts OBJECT-TYPE + + + + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams received. This object + counts the same datagrams as ipIfStatsInBcastPkts, but + allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 43 } + +ipIfStatsOutBcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams transmitted. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 44 } + +ipIfStatsHCOutBcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP broadcast datagrams transmitted. This + object counts the same datagrams as ipIfStatsOutBcastPkts, + but allows for larger values. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ipIfStatsDiscontinuityTime." + ::= { ipIfStatsEntry 45 } + +ipIfStatsDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + + + + any one or more of this entry's counters suffered a + discontinuity. + + If no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipIfStatsEntry 46 } + +ipIfStatsRefreshRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milli-seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum reasonable polling interval for this entry. + This object provides an indication of the minimum amount of + time required to update the counters in this entry." + ::= { ipIfStatsEntry 47 } + +-- +-- Internet Address Prefix table +-- + +ipAddressPrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpAddressPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows the user to determine the source of an IP + address or set of IP addresses, and allows other tables to + share the information via pointer rather than by copying. + + For example, when the node configures both a unicast and + anycast address for a prefix, the ipAddressPrefix objects + for those addresses will point to a single row in this + table. + + This table primarily provides support for IPv6 prefixes, and + several of the objects are less meaningful for IPv4. The + table continues to allow IPv4 addresses to allow future + flexibility. In order to promote a common configuration, + this document includes suggestions for default values for + IPv4 prefixes. Each of these values may be overridden if an + object is meaningful to the node. + + All prefixes used by this entity should be included in this + table independent of how the entity learned the prefix. + (This table isn't limited to prefixes learned from router + + + + advertisements.)" + ::= { ip 32 } + +ipAddressPrefixEntry OBJECT-TYPE + SYNTAX IpAddressPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ipAddressPrefixTable." + INDEX { ipAddressPrefixIfIndex, ipAddressPrefixType, + ipAddressPrefixPrefix, ipAddressPrefixLength } + ::= { ipAddressPrefixTable 1 } + +IpAddressPrefixEntry ::= SEQUENCE { + ipAddressPrefixIfIndex InterfaceIndex, + ipAddressPrefixType InetAddressType, + ipAddressPrefixPrefix InetAddress, + ipAddressPrefixLength InetAddressPrefixLength, + ipAddressPrefixOrigin IpAddressPrefixOriginTC, + ipAddressPrefixOnLinkFlag TruthValue, + ipAddressPrefixAutonomousFlag TruthValue, + ipAddressPrefixAdvPreferredLifetime Unsigned32, + ipAddressPrefixAdvValidLifetime Unsigned32 + } + +ipAddressPrefixIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface on + which this prefix is configured. The interface identified + by a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipAddressPrefixEntry 1 } + +ipAddressPrefixType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of ipAddressPrefix." + ::= { ipAddressPrefixEntry 2 } + +ipAddressPrefixPrefix OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The address prefix. The address type of this object is + specified in ipAddressPrefixType. The length of this object + is the standard length for objects of that type (4 or 16 + bytes). Any bits after ipAddressPrefixLength must be zero. + + Implementors need to be aware that, if the size of + ipAddressPrefixPrefix exceeds 114 octets, then OIDS of + instances of columns in this row will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + ::= { ipAddressPrefixEntry 3 } + +ipAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The prefix length associated with this prefix. + + The value 0 has no special meaning for this object. It + simply refers to address '::/0'." + ::= { ipAddressPrefixEntry 4 } + +ipAddressPrefixOrigin OBJECT-TYPE + SYNTAX IpAddressPrefixOriginTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The origin of this prefix." + ::= { ipAddressPrefixEntry 5 } + +ipAddressPrefixOnLinkFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)', if this prefix can be + used for on-link determination; otherwise, the value is + 'false(2)'. + + The default for IPv4 prefixes is 'true(1)'." + REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and + RFC 2462" + ::= { ipAddressPrefixEntry 6 } + +ipAddressPrefixAutonomousFlag OBJECT-TYPE + SYNTAX TruthValue + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Autonomous address configuration flag. When true(1), + indicates that this prefix can be used for autonomous + address configuration (i.e., can be used to form a local + interface address). If false(2), it is not used to auto- + configure a local interface address. + + The default for IPv4 prefixes is 'false(2)'." + REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and + RFC 2462" + ::= { ipAddressPrefixEntry 7 } + +ipAddressPrefixAdvPreferredLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remaining length of time, in seconds, that this prefix + will continue to be preferred, i.e., time until deprecation. + + A value of 4,294,967,295 represents infinity. + + The address generated from a deprecated prefix should no + longer be used as a source address in new communications, + but packets received on such an interface are processed as + expected. + + The default for IPv4 prefixes is 4,294,967,295 (infinity)." + REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and + RFC 2462" + ::= { ipAddressPrefixEntry 8 } + +ipAddressPrefixAdvValidLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remaining length of time, in seconds, that this prefix + will continue to be valid, i.e., time until invalidation. A + value of 4,294,967,295 represents infinity. + + The address generated from an invalidated prefix should not + appear as the destination or source address of a packet. + + + + + The default for IPv4 prefixes is 4,294,967,295 (infinity)." + REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and + RFC 2462" + ::= { ipAddressPrefixEntry 9 } + +-- +-- Internet Address Table +-- + +ipAddressSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating SNMP managers to + coordinate their use of the set operation in creating or + modifying rows within this table. + + In order to use this lock to coordinate the use of set + operations, managers should first retrieve + ipAddressTableSpinLock. They should then determine the + appropriate row to create or modify. Finally, they should + issue the appropriate set command, including the retrieved + value of ipAddressSpinLock. If another manager has altered + the table in the meantime, then the value of + ipAddressSpinLock will have changed, and the creation will + fail as it will be specifying an incorrect value for + ipAddressSpinLock. It is suggested, but not required, that + the ipAddressSpinLock be the first var bind for each set of + objects representing a 'row' in a PDU." + ::= { ip 33 } + +ipAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains addressing information relevant to the + entity's interfaces. + + This table does not contain multicast address information. + Tables for such information should be contained in multicast + specific MIBs, such as RFC 3019. + + While this table is writable, the user will note that + several objects, such as ipAddressOrigin, are not. The + intention in allowing a user to write to this table is to + allow them to add or remove any entry that isn't + + + + permanent. The user should be allowed to modify objects + and entries when that would not cause inconsistencies + within the table. Allowing write access to objects, such + as ipAddressOrigin, could allow a user to insert an entry + and then label it incorrectly. + + Note well: When including IPv6 link-local addresses in this + table, the entry must use an InetAddressType of 'ipv6z' in + order to differentiate between the possible interfaces." + ::= { ip 34 } + +ipAddressEntry OBJECT-TYPE + SYNTAX IpAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An address mapping for a particular interface." + INDEX { ipAddressAddrType, ipAddressAddr } + ::= { ipAddressTable 1 } + +IpAddressEntry ::= SEQUENCE { + ipAddressAddrType InetAddressType, + ipAddressAddr InetAddress, + ipAddressIfIndex InterfaceIndex, + ipAddressType INTEGER, + ipAddressPrefix RowPointer, + ipAddressOrigin IpAddressOriginTC, + ipAddressStatus IpAddressStatusTC, + ipAddressCreated TimeStamp, + ipAddressLastChanged TimeStamp, + ipAddressRowStatus RowStatus, + ipAddressStorageType StorageType + } + +ipAddressAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of ipAddressAddr." + ::= { ipAddressEntry 1 } + +ipAddressAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address to which this entry's addressing information + + + + pertains. The address type of this object is specified in + ipAddressAddrType. + + Implementors need to be aware that if the size of + ipAddressAddr exceeds 116 octets, then OIDS of instances of + columns in this row will have more than 128 sub-identifiers + and cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." + ::= { ipAddressEntry 2 } + +ipAddressIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface to + which this entry is applicable. The interface identified by + a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipAddressEntry 3 } + +ipAddressType OBJECT-TYPE + SYNTAX INTEGER { + unicast(1), + anycast(2), + broadcast(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of address. broadcast(3) is not a valid value for + IPv6 addresses (RFC 3513)." + DEFVAL { unicast } + ::= { ipAddressEntry 4 } + +ipAddressPrefix OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the row in the prefix table to which this + address belongs. May be { 0 0 } if there is no such row." + DEFVAL { zeroDotZero } + ::= { ipAddressEntry 5 } + +ipAddressOrigin OBJECT-TYPE + SYNTAX IpAddressOriginTC + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The origin of the address." + ::= { ipAddressEntry 6 } + +ipAddressStatus OBJECT-TYPE + SYNTAX IpAddressStatusTC + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the address, describing if the address can be + used for communication. + + In the absence of other information, an IPv4 address is + always preferred(1)." + DEFVAL { preferred } + ::= { ipAddressEntry 7 } + +ipAddressCreated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was created. + If this entry was created prior to the last re- + initialization of the local network management subsystem, + then this object contains a zero value." + ::= { ipAddressEntry 8 } + +ipAddressLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was last + updated. If this entry was updated prior to the last re- + initialization of the local network management subsystem, + then this object contains a zero value." + ::= { ipAddressEntry 9 } + +ipAddressRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + The RowStatus TC requires that this DESCRIPTION clause + states under which circumstances other objects in this row + + + + can be modified. The value of this object has no effect on + whether other objects in this conceptual row can be + modified. + + A conceptual row can not be made active until the + ipAddressIfIndex has been set to a valid index." + ::= { ipAddressEntry 10 } + +ipAddressStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. If this object + has a value of 'permanent', then no other objects are + required to be able to be modified." + DEFVAL { volatile } + ::= { ipAddressEntry 11 } + +-- +-- the Internet Address Translation table +-- + +ipNetToPhysicalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpNetToPhysicalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP Address Translation table used for mapping from IP + addresses to physical addresses. + + The Address Translation tables contain the IP address to + 'physical' address equivalences. Some interfaces do not use + translation tables for determining address equivalences + (e.g., DDN-X.25 has an algorithmic method); if all + interfaces are of this type, then the Address Translation + table is empty, i.e., has zero entries. + + While many protocols may be used to populate this table, ARP + and Neighbor Discovery are the most likely + options." + REFERENCE "RFC 826 and RFC 2461" + ::= { ip 35 } + +ipNetToPhysicalEntry OBJECT-TYPE + SYNTAX IpNetToPhysicalEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Each entry contains one IP address to `physical' address + equivalence." + INDEX { ipNetToPhysicalIfIndex, + ipNetToPhysicalNetAddressType, + ipNetToPhysicalNetAddress } + ::= { ipNetToPhysicalTable 1 } + +IpNetToPhysicalEntry ::= SEQUENCE { + ipNetToPhysicalIfIndex InterfaceIndex, + ipNetToPhysicalNetAddressType InetAddressType, + ipNetToPhysicalNetAddress InetAddress, + ipNetToPhysicalPhysAddress PhysAddress, + ipNetToPhysicalLastUpdated TimeStamp, + ipNetToPhysicalType INTEGER, + ipNetToPhysicalState INTEGER, + ipNetToPhysicalRowStatus RowStatus + } + +ipNetToPhysicalIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface to + which this entry is applicable. The interface identified by + a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipNetToPhysicalEntry 1 } + +ipNetToPhysicalNetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of ipNetToPhysicalNetAddress." + ::= { ipNetToPhysicalEntry 2 } + +ipNetToPhysicalNetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP Address corresponding to the media-dependent + `physical' address. The address type of this object is + specified in ipNetToPhysicalAddressType. + + Implementors need to be aware that if the size of + + + + ipNetToPhysicalNetAddress exceeds 115 octets, then OIDS of + instances of columns in this row will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + ::= { ipNetToPhysicalEntry 3 } + +ipNetToPhysicalPhysAddress OBJECT-TYPE + SYNTAX PhysAddress (SIZE(0..65535)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The media-dependent `physical' address. + + As the entries in this table are typically not persistent + when this object is written the entity SHOULD NOT save the + change to non-volatile storage." + ::= { ipNetToPhysicalEntry 4 } + +ipNetToPhysicalLastUpdated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry was last + updated. If this entry was updated prior to the last re- + initialization of the local network management subsystem, + then this object contains a zero value." + ::= { ipNetToPhysicalEntry 5 } + +ipNetToPhysicalType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + invalid(2), -- an invalidated mapping + dynamic(3), + static(4), + local(5) -- local interface + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of mapping. + + Setting this object to the value invalid(2) has the effect + of invalidating the corresponding entry in the + ipNetToPhysicalTable. That is, it effectively dis- + associates the interface identified with said entry from the + mapping identified with said entry. It is an + implementation-specific matter as to whether the agent + + + + removes an invalidated entry from the table. Accordingly, + management stations must be prepared to receive tabular + information from agents that corresponds to entries not + currently in use. Proper interpretation of such entries + requires examination of the relevant ipNetToPhysicalType + object. + + The 'dynamic(3)' type indicates that the IP address to + physical addresses mapping has been dynamically resolved + using e.g., IPv4 ARP or the IPv6 Neighbor Discovery + protocol. + + The 'static(4)' type indicates that the mapping has been + statically configured. Both of these refer to entries that + provide mappings for other entities addresses. + + The 'local(5)' type indicates that the mapping is provided + for an entity's own interface address. + + As the entries in this table are typically not persistent + when this object is written the entity SHOULD NOT save the + change to non-volatile storage." + DEFVAL { static } + ::= { ipNetToPhysicalEntry 6 } + +ipNetToPhysicalState OBJECT-TYPE + SYNTAX INTEGER { + reachable(1), -- confirmed reachability + + stale(2), -- unconfirmed reachability + + delay(3), -- waiting for reachability + -- confirmation before entering + -- the probe state + + probe(4), -- actively probing + + invalid(5), -- an invalidated mapping + + unknown(6), -- state can not be determined + -- for some reason. + + incomplete(7) -- address resolution is being + -- performed. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The Neighbor Unreachability Detection state for the + interface when the address mapping in this entry is used. + If Neighbor Unreachability Detection is not in use (e.g. for + IPv4), this object is always unknown(6)." + REFERENCE "RFC 2461" + ::= { ipNetToPhysicalEntry 7 } + +ipNetToPhysicalRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + The RowStatus TC requires that this DESCRIPTION clause + states under which circumstances other objects in this row + can be modified. The value of this object has no effect on + whether other objects in this conceptual row can be + modified. + + A conceptual row can not be made active until the + ipNetToPhysicalPhysAddress object has been set. + + Note that if the ipNetToPhysicalType is set to 'invalid', + the managed node may delete the entry independent of the + state of this object." + ::= { ipNetToPhysicalEntry 8 } + +-- +-- The IPv6 Scope Zone Index Table. +-- + +ipv6ScopeZoneIndexTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6ScopeZoneIndexEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table used to describe IPv6 unicast and multicast scope + zones. + + For those objects that have names rather than numbers, the + names were chosen to coincide with the names used in the + IPv6 address architecture document. " + REFERENCE "Section 2.7 of RFC 4291" + ::= { ip 36 } + +ipv6ScopeZoneIndexEntry OBJECT-TYPE + SYNTAX Ipv6ScopeZoneIndexEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains the list of scope identifiers on a given + interface." + INDEX { ipv6ScopeZoneIndexIfIndex } + ::= { ipv6ScopeZoneIndexTable 1 } + +Ipv6ScopeZoneIndexEntry ::= SEQUENCE { + ipv6ScopeZoneIndexIfIndex InterfaceIndex, + ipv6ScopeZoneIndexLinkLocal InetZoneIndex, + ipv6ScopeZoneIndex3 InetZoneIndex, + ipv6ScopeZoneIndexAdminLocal InetZoneIndex, + ipv6ScopeZoneIndexSiteLocal InetZoneIndex, + ipv6ScopeZoneIndex6 InetZoneIndex, + ipv6ScopeZoneIndex7 InetZoneIndex, + ipv6ScopeZoneIndexOrganizationLocal InetZoneIndex, + ipv6ScopeZoneIndex9 InetZoneIndex, + ipv6ScopeZoneIndexA InetZoneIndex, + ipv6ScopeZoneIndexB InetZoneIndex, + ipv6ScopeZoneIndexC InetZoneIndex, + ipv6ScopeZoneIndexD InetZoneIndex + } + +ipv6ScopeZoneIndexIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface to + which these scopes belong. The interface identified by a + particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipv6ScopeZoneIndexEntry 1 } + +ipv6ScopeZoneIndexLinkLocal OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for the link-local scope on this interface." + ::= { ipv6ScopeZoneIndexEntry 2 } + +ipv6ScopeZoneIndex3 OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The zone index for scope 3 on this interface." + ::= { ipv6ScopeZoneIndexEntry 3 } + +ipv6ScopeZoneIndexAdminLocal OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for the admin-local scope on this interface." + ::= { ipv6ScopeZoneIndexEntry 4 } + +ipv6ScopeZoneIndexSiteLocal OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for the site-local scope on this interface." + ::= { ipv6ScopeZoneIndexEntry 5 } + +ipv6ScopeZoneIndex6 OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope 6 on this interface." + ::= { ipv6ScopeZoneIndexEntry 6 } + +ipv6ScopeZoneIndex7 OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope 7 on this interface." + ::= { ipv6ScopeZoneIndexEntry 7 } + +ipv6ScopeZoneIndexOrganizationLocal OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for the organization-local scope on this + interface." + ::= { ipv6ScopeZoneIndexEntry 8 } + +ipv6ScopeZoneIndex9 OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The zone index for scope 9 on this interface." + ::= { ipv6ScopeZoneIndexEntry 9 } + +ipv6ScopeZoneIndexA OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope A on this interface." + ::= { ipv6ScopeZoneIndexEntry 10 } + +ipv6ScopeZoneIndexB OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope B on this interface." + ::= { ipv6ScopeZoneIndexEntry 11 } + +ipv6ScopeZoneIndexC OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope C on this interface." + ::= { ipv6ScopeZoneIndexEntry 12 } + +ipv6ScopeZoneIndexD OBJECT-TYPE + SYNTAX InetZoneIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zone index for scope D on this interface." + ::= { ipv6ScopeZoneIndexEntry 13 } + +-- +-- The Default Router Table +-- This table simply lists the default routers; for more information +-- about routing tables, see the routing MIBs +-- + +ipDefaultRouterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpDefaultRouterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table used to describe the default routers known to this + + + + entity." + ::= { ip 37 } + +ipDefaultRouterEntry OBJECT-TYPE + SYNTAX IpDefaultRouterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a default router known + to this entity." + INDEX {ipDefaultRouterAddressType, ipDefaultRouterAddress, + ipDefaultRouterIfIndex} + ::= { ipDefaultRouterTable 1 } + +IpDefaultRouterEntry ::= SEQUENCE { + ipDefaultRouterAddressType InetAddressType, + ipDefaultRouterAddress InetAddress, + ipDefaultRouterIfIndex InterfaceIndex, + ipDefaultRouterLifetime Unsigned32, + ipDefaultRouterPreference INTEGER + } + +ipDefaultRouterAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type for this row." + ::= { ipDefaultRouterEntry 1 } + +ipDefaultRouterAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the default router represented by this + row. The address type of this object is specified in + ipDefaultRouterAddressType. + + Implementers need to be aware that if the size of + ipDefaultRouterAddress exceeds 115 octets, then OIDS of + instances of columns in this row will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + ::= { ipDefaultRouterEntry 2 } + +ipDefaultRouterIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface by + which the router can be reached. The interface identified + by a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipDefaultRouterEntry 3 } + +ipDefaultRouterLifetime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remaining length of time, in seconds, that this router + will continue to be useful as a default router. A value of + zero indicates that it is no longer useful as a default + router. It is left to the implementer of the MIB as to + whether a router with a lifetime of zero is removed from the + list. + + For IPv6, this value should be extracted from the router + advertisement messages." + REFERENCE "For IPv6 RFC 2462 sections 4.2 and 6.3.4" + ::= { ipDefaultRouterEntry 4 } + +ipDefaultRouterPreference OBJECT-TYPE + SYNTAX INTEGER { + reserved (-2), + low (-1), + medium (0), + high (1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of preference given to this router as a + default router as described in he Default Router + Preferences document. Treating the value as a + 2 bit signed integer allows for simple arithmetic + comparisons. + + For IPv4 routers or IPv6 routers that are not using the + updated router advertisement format, this object is set to + medium (0)." + REFERENCE "RFC 4291, section 2.1" + ::= { ipDefaultRouterEntry 5 } + + + +-- +-- Configuration information for constructing router advertisements +-- + +ipv6RouterAdvertSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating SNMP managers to + coordinate their use of the set operation in creating or + modifying rows within this table. + + In order to use this lock to coordinate the use of set + operations, managers should first retrieve + ipv6RouterAdvertSpinLock. They should then determine the + appropriate row to create or modify. Finally, they should + issue the appropriate set command including the retrieved + value of ipv6RouterAdvertSpinLock. If another manager has + altered the table in the meantime, then the value of + ipv6RouterAdvertSpinLock will have changed and the creation + will fail as it will be specifying an incorrect value for + ipv6RouterAdvertSpinLock. It is suggested, but not + required, that the ipv6RouterAdvertSpinLock be the first var + bind for each set of objects representing a 'row' in a PDU." + ::= { ip 38 } + +ipv6RouterAdvertTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6RouterAdvertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing information used to construct router + advertisements." + ::= { ip 39 } + +ipv6RouterAdvertEntry OBJECT-TYPE + SYNTAX Ipv6RouterAdvertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information used to construct router + advertisements. + + Information in this table is persistent, and when this + object is written, the entity SHOULD save the change to + non-volatile storage." + INDEX { ipv6RouterAdvertIfIndex } + + + + ::= { ipv6RouterAdvertTable 1 } + +Ipv6RouterAdvertEntry ::= SEQUENCE { + ipv6RouterAdvertIfIndex InterfaceIndex, + ipv6RouterAdvertSendAdverts TruthValue, + ipv6RouterAdvertMaxInterval Unsigned32, + ipv6RouterAdvertMinInterval Unsigned32, + ipv6RouterAdvertManagedFlag TruthValue, + ipv6RouterAdvertOtherConfigFlag TruthValue, + ipv6RouterAdvertLinkMTU Unsigned32, + ipv6RouterAdvertReachableTime Unsigned32, + ipv6RouterAdvertRetransmitTime Unsigned32, + ipv6RouterAdvertCurHopLimit Unsigned32, + ipv6RouterAdvertDefaultLifetime Unsigned32, + ipv6RouterAdvertRowStatus RowStatus + } + +ipv6RouterAdvertIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface on + which router advertisements constructed with this + information will be transmitted. The interface identified + by a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipv6RouterAdvertEntry 1 } + +ipv6RouterAdvertSendAdverts OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A flag indicating whether the router sends periodic + router advertisements and responds to router solicitations + on this interface." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { false } + ::= { ipv6RouterAdvertEntry 2 } + +ipv6RouterAdvertMaxInterval OBJECT-TYPE + SYNTAX Unsigned32 (4..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum time allowed between sending unsolicited router + + + + advertisements from this interface." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { 600 } + ::= { ipv6RouterAdvertEntry 3 } + +ipv6RouterAdvertMinInterval OBJECT-TYPE + SYNTAX Unsigned32 (3..1350) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum time allowed between sending unsolicited router + advertisements from this interface. + + The default is 0.33 * ipv6RouterAdvertMaxInterval, however, + in the case of a low value for ipv6RouterAdvertMaxInterval, + the minimum value for this object is restricted to 3." + REFERENCE "RFC 2461 Section 6.2.1" + ::= { ipv6RouterAdvertEntry 4 } + +ipv6RouterAdvertManagedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The true/false value to be placed into the 'managed address + configuration' flag field in router advertisements sent from + this interface." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { false } + ::= { ipv6RouterAdvertEntry 5 } + +ipv6RouterAdvertOtherConfigFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The true/false value to be placed into the 'other stateful + configuration' flag field in router advertisements sent from + this interface." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { false } + ::= { ipv6RouterAdvertEntry 6 } + +ipv6RouterAdvertLinkMTU OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The value to be placed in MTU options sent by the router on + this interface. + + A value of zero indicates that no MTU options are sent." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { 0 } + ::= { ipv6RouterAdvertEntry 7 } + +ipv6RouterAdvertReachableTime OBJECT-TYPE + SYNTAX Unsigned32 (0..3600000) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be placed in the reachable time field in router + advertisement messages sent from this interface. + + A value of zero in the router advertisement indicates that + the advertisement isn't specifying a value for reachable + time." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { 0 } + ::= { ipv6RouterAdvertEntry 8 } + +ipv6RouterAdvertRetransmitTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be placed in the retransmit timer field in + router advertisements sent from this interface. + + A value of zero in the router advertisement indicates that + the advertisement isn't specifying a value for retrans + time." + REFERENCE "RFC 2461 Section 6.2.1" + DEFVAL { 0 } + ::= { ipv6RouterAdvertEntry 9 } + +ipv6RouterAdvertCurHopLimit OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default value to be placed in the current hop limit + field in router advertisements sent from this interface. + + + + The value should be set to the current diameter of the + Internet. + + A value of zero in the router advertisement indicates that + the advertisement isn't specifying a value for curHopLimit. + + The default should be set to the value specified in the IANA + web pages (www.iana.org) at the time of implementation." + REFERENCE "RFC 2461 Section 6.2.1" + ::= { ipv6RouterAdvertEntry 10 } + +ipv6RouterAdvertDefaultLifetime OBJECT-TYPE + SYNTAX Unsigned32 (0|4..9000) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be placed in the router lifetime field of + router advertisements sent from this interface. This value + MUST be either 0 or between ipv6RouterAdvertMaxInterval and + 9000 seconds. + + A value of zero indicates that the router is not to be used + as a default router. + + The default is 3 * ipv6RouterAdvertMaxInterval." + REFERENCE "RFC 2461 Section 6.2.1" + ::= { ipv6RouterAdvertEntry 11 } + +ipv6RouterAdvertRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + As all objects in this conceptual row have default values, a + row can be created and made active by setting this object + appropriately. + + The RowStatus TC requires that this DESCRIPTION clause + states under which circumstances other objects in this row + can be modified. The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ipv6RouterAdvertEntry 12 } + +-- + + + +-- ICMP section +-- + +icmp OBJECT IDENTIFIER ::= { mib-2 5 } + +-- +-- ICMP non-message-specific counters +-- + +-- These object IDs are reserved, as they were used in earlier +-- versions of the MIB module. In theory, OIDs are not assigned +-- until the specification is released as an RFC; however, as some +-- companies may have shipped code based on earlier versions of +-- the MIB, it seems best to reserve these OIDs. +-- ::= { icmp 27 } +-- ::= { icmp 28 } + +icmpStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IcmpStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of generic system-wide ICMP counters." + ::= { icmp 29 } + +icmpStatsEntry OBJECT-TYPE + SYNTAX IcmpStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the icmpStatsTable." + INDEX { icmpStatsIPVersion } + ::= { icmpStatsTable 1 } + +IcmpStatsEntry ::= SEQUENCE { + icmpStatsIPVersion InetVersion, + icmpStatsInMsgs Counter32, + icmpStatsInErrors Counter32, + icmpStatsOutMsgs Counter32, + icmpStatsOutErrors Counter32 + } + +icmpStatsIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of the statistics." + + + + ::= { icmpStatsEntry 1 } + +icmpStatsInMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ICMP messages that the entity received. + Note that this counter includes all those counted by + icmpStatsInErrors." + ::= { icmpStatsEntry 2 } + +icmpStatsInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP messages that the entity received but + determined as having ICMP-specific errors (bad ICMP + checksums, bad length, etc.)." + ::= { icmpStatsEntry 3 } + +icmpStatsOutMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ICMP messages that the entity attempted + to send. Note that this counter includes all those counted + by icmpStatsOutErrors." + ::= { icmpStatsEntry 4 } + +icmpStatsOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP messages that this entity did not send + due to problems discovered within ICMP, such as a lack of + buffers. This value should not include errors discovered + outside the ICMP layer, such as the inability of IP to route + the resultant datagram. In some implementations, there may + be no types of error that contribute to this counter's + value." + ::= { icmpStatsEntry 5 } + +-- +-- per-version, per-message type ICMP counters + + + +-- + +icmpMsgStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IcmpMsgStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of system-wide per-version, per-message type ICMP + counters." + ::= { icmp 30 } + +icmpMsgStatsEntry OBJECT-TYPE + SYNTAX IcmpMsgStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the icmpMsgStatsTable. + + The system should track each ICMP type value, even if that + ICMP type is not supported by the system. However, a + given row need not be instantiated unless a message of that + type has been processed, i.e., the row for + icmpMsgStatsType=X MAY be instantiated before but MUST be + instantiated after the first message with Type=X is + received or transmitted. After receiving or transmitting + any succeeding messages with Type=X, the relevant counter + must be incremented." + INDEX { icmpMsgStatsIPVersion, icmpMsgStatsType } + ::= { icmpMsgStatsTable 1 } + +IcmpMsgStatsEntry ::= SEQUENCE { + icmpMsgStatsIPVersion InetVersion, + icmpMsgStatsType Integer32, + icmpMsgStatsInPkts Counter32, + icmpMsgStatsOutPkts Counter32 + } + +icmpMsgStatsIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of the statistics." + ::= { icmpMsgStatsEntry 1 } + +icmpMsgStatsType OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The ICMP type field of the message type being counted by + this row. + + Note that ICMP message types are scoped by the address type + in use." + REFERENCE "http://www.iana.org/assignments/icmp-parameters and + http://www.iana.org/assignments/icmpv6-parameters" + ::= { icmpMsgStatsEntry 2 } + +icmpMsgStatsInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input packets for this AF and type." + ::= { icmpMsgStatsEntry 3 } + +icmpMsgStatsOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output packets for this AF and type." + ::= { icmpMsgStatsEntry 4 } +-- +-- conformance information +-- + +ipMIBConformance OBJECT IDENTIFIER ::= { ipMIB 2 } + +ipMIBCompliances OBJECT IDENTIFIER ::= { ipMIBConformance 1 } +ipMIBGroups OBJECT IDENTIFIER ::= { ipMIBConformance 2 } + +-- compliance statements +ipMIBCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems that implement IP - + either IPv4 or IPv6. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, but + for which we have the following compliance requirements, + expressed in OBJECT clause form in this description + clause: + + + + + -- OBJECT ipSystemStatsIPVersion + -- SYNTAX InetVersion {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only IPv4 and IPv6 + -- versions. + -- + -- OBJECT ipIfStatsIPVersion + -- SYNTAX InetVersion {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only IPv4 and IPv6 + -- versions. + -- + -- OBJECT icmpStatsIPVersion + -- SYNTAX InetVersion {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only IPv4 and IPv6 + -- versions. + -- + -- OBJECT icmpMsgStatsIPVersion + -- SYNTAX InetVersion {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only IPv4 and IPv6 + -- versions. + -- + -- OBJECT ipAddressPrefixType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This MIB requires support for only global IPv4 and + -- IPv6 address types. + -- + -- OBJECT ipAddressPrefixPrefix + -- SYNTAX InetAddress (Size(4 | 16)) + -- DESCRIPTION + -- This MIB requires support for only global IPv4 and + -- IPv6 addresses and so the size can be either 4 or + -- 16 bytes. + -- + -- OBJECT ipAddressAddrType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 address types. + -- + -- OBJECT ipAddressAddr + -- SYNTAX InetAddress (Size(4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for only global and + + + + -- non-global IPv4 and IPv6 addresses and so the size + -- can be 4, 8, 16, or 20 bytes. + -- + -- OBJECT ipNetToPhysicalNetAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 address types. + -- + -- OBJECT ipNetToPhysicalNetAddress + -- SYNTAX InetAddress (Size(4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 addresses and so the size + -- can be 4, 8, 16, or 20 bytes. + -- + -- OBJECT ipDefaultRouterAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 address types. + -- + -- OBJECT ipDefaultRouterAddress + -- SYNTAX InetAddress (Size(4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for only global and + -- non-global IPv4 and IPv6 addresses and so the size + -- can be 4, 8, 16, or 20 bytes." + + MODULE -- this module + + MANDATORY-GROUPS { ipSystemStatsGroup, ipAddressGroup, + ipNetToPhysicalGroup, ipDefaultRouterGroup, + icmpStatsGroup } + + GROUP ipSystemStatsHCOctetGroup + DESCRIPTION + "This group is mandatory for systems that have an aggregate + bandwidth of greater than 20MB. Including this group does + not allow an entity to neglect the 32 bit versions of these + objects." + + GROUP ipSystemStatsHCPacketGroup + DESCRIPTION + "This group is mandatory for systems that have an aggregate + bandwidth of greater than 650MB. Including this group + + + + does not allow an entity to neglect the 32 bit versions of + these objects." + + GROUP ipIfStatsGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP ipIfStatsHCOctetGroup + DESCRIPTION + "This group is mandatory for systems that include the + ipIfStatsGroup and include links with bandwidths of greater + than 20MB. Including this group does not allow an entity to + neglect the 32 bit versions of these objects." + + GROUP ipIfStatsHCPacketGroup + DESCRIPTION + "This group is mandatory for systems that include the + ipIfStatsGroup and include links with bandwidths of greater + than 650MB. Including this group does not allow an entity + to neglect the 32 bit versions of these objects." + + GROUP ipv4GeneralGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4." + + GROUP ipv4IfGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4." + + GROUP ipv4SystemStatsGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4." + + GROUP ipv4SystemStatsHCPacketGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4 and + that have an aggregate bandwidth of greater than 650MB. + Including this group does not allow an entity to neglect the + 32 bit versions of these objects." + + GROUP ipv4IfStatsGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4 and + including the ipIfStatsGroup." + + GROUP ipv4IfStatsHCPacketGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv4 and + + + + including the ipIfStatsHCPacketGroup. Including this group + does not allow an entity to neglect the 32 bit versions of + these objects." + + GROUP ipv6GeneralGroup2 + DESCRIPTION + "This group is mandatory for all systems supporting IPv6." + + GROUP ipv6IfGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv6." + + GROUP ipAddressPrefixGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv6." + + GROUP ipv6ScopeGroup + DESCRIPTION + "This group is mandatory for all systems supporting IPv6." + + GROUP ipv6RouterAdvertGroup + DESCRIPTION + "This group is mandatory for all IPv6 routers." + + GROUP ipLastChangeGroup + DESCRIPTION + "This group is optional for all agents." + + OBJECT ipv6IpForwarding + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6IpDefaultHopLimit + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv4InterfaceEnableStatus + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6InterfaceEnableStatus + MIN-ACCESS read-only + + + + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6InterfaceForwarding + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipAddressSpinLock + MIN-ACCESS not-accessible + DESCRIPTION + "An agent is not required to provide write access to this + object. However, if an agent provides write access to any + of the other objects in the ipAddressGroup, it SHOULD + provide write access to this object as well." + + OBJECT ipAddressIfIndex + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipAddressType + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipAddressStatus + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipAddressRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipAddressStorageType + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object. + + + + If an agent allows this object to be written or created, it + is not required to allow this object to be set to readOnly, + permanent, or nonVolatile." + + OBJECT ipNetToPhysicalPhysAddress + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipNetToPhysicalType + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + OBJECT ipv6RouterAdvertSpinLock + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object. However, if an agent provides write access to + any of the other objects in the ipv6RouterAdvertGroup, it + SHOULD provide write access to this object as well." + + OBJECT ipv6RouterAdvertSendAdverts + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertMaxInterval + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertMinInterval + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertManagedFlag + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + + + + OBJECT ipv6RouterAdvertOtherConfigFlag + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertLinkMTU + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertReachableTime + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertRetransmitTime + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertCurHopLimit + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertDefaultLifetime + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write access to this + object." + + OBJECT ipv6RouterAdvertRowStatus + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write or create access + to this object." + + ::= { ipMIBCompliances 2 } + +-- units of conformance + +ipv4GeneralGroup OBJECT-GROUP + OBJECTS { ipForwarding, ipDefaultTTL, ipReasmTimeout } + + + + STATUS current + DESCRIPTION + "The group of IPv4-specific objects for basic management of + IPv4 entities." + ::= { ipMIBGroups 3 } + +ipv4IfGroup OBJECT-GROUP + OBJECTS { ipv4InterfaceReasmMaxSize, ipv4InterfaceEnableStatus, + ipv4InterfaceRetransmitTime } + STATUS current + DESCRIPTION + "The group of IPv4-specific objects for basic management of + IPv4 interfaces." + ::= { ipMIBGroups 4 } + +ipv6GeneralGroup2 OBJECT-GROUP + OBJECTS { ipv6IpForwarding, ipv6IpDefaultHopLimit } + STATUS current + DESCRIPTION + "The IPv6 group of objects providing for basic management of + IPv6 entities." + ::= { ipMIBGroups 5 } + +ipv6IfGroup OBJECT-GROUP + OBJECTS { ipv6InterfaceReasmMaxSize, ipv6InterfaceIdentifier, + ipv6InterfaceEnableStatus, ipv6InterfaceReachableTime, + ipv6InterfaceRetransmitTime, ipv6InterfaceForwarding } + STATUS current + DESCRIPTION + "The group of IPv6-specific objects for basic management of + IPv6 interfaces." + ::= { ipMIBGroups 6 } + +ipLastChangeGroup OBJECT-GROUP + OBJECTS { ipv4InterfaceTableLastChange, + ipv6InterfaceTableLastChange, + ipIfStatsTableLastChange } + STATUS current + DESCRIPTION + "The last change objects associated with this MIB. These + objects are optional for all agents. They SHOULD be + implemented on agents where it is possible to determine the + proper values. Where it is not possible to determine the + proper values, for example when the tables are split amongst + several sub-agents using AgentX, the agent MUST NOT + implement these objects to return an incorrect or static + value." + ::= { ipMIBGroups 7 } + + + +ipSystemStatsGroup OBJECT-GROUP + OBJECTS { ipSystemStatsInReceives, + ipSystemStatsInOctets, + ipSystemStatsInHdrErrors, + ipSystemStatsInNoRoutes, + ipSystemStatsInAddrErrors, + ipSystemStatsInUnknownProtos, + ipSystemStatsInTruncatedPkts, + ipSystemStatsInForwDatagrams, + ipSystemStatsReasmReqds, + ipSystemStatsReasmOKs, + ipSystemStatsReasmFails, + ipSystemStatsInDiscards, + ipSystemStatsInDelivers, + ipSystemStatsOutRequests, + ipSystemStatsOutNoRoutes, + ipSystemStatsOutForwDatagrams, + ipSystemStatsOutDiscards, + ipSystemStatsOutFragReqds, + ipSystemStatsOutFragOKs, + ipSystemStatsOutFragFails, + ipSystemStatsOutFragCreates, + ipSystemStatsOutTransmits, + ipSystemStatsOutOctets, + ipSystemStatsInMcastPkts, + ipSystemStatsInMcastOctets, + ipSystemStatsOutMcastPkts, + ipSystemStatsOutMcastOctets, + ipSystemStatsDiscontinuityTime, + ipSystemStatsRefreshRate } + STATUS current + DESCRIPTION + "IP system wide statistics." + ::= { ipMIBGroups 8 } + +ipv4SystemStatsGroup OBJECT-GROUP + OBJECTS { ipSystemStatsInBcastPkts, ipSystemStatsOutBcastPkts } + STATUS current + DESCRIPTION + "IPv4 only system wide statistics." + ::= { ipMIBGroups 9 } + +ipSystemStatsHCOctetGroup OBJECT-GROUP + OBJECTS { ipSystemStatsHCInOctets, + ipSystemStatsHCOutOctets, + ipSystemStatsHCInMcastOctets, + ipSystemStatsHCOutMcastOctets +} + + + + STATUS current + DESCRIPTION + "IP system wide statistics for systems that may overflow the + standard octet counters within 1 hour." + ::= { ipMIBGroups 10 } + +ipSystemStatsHCPacketGroup OBJECT-GROUP + OBJECTS { ipSystemStatsHCInReceives, + ipSystemStatsHCInForwDatagrams, + ipSystemStatsHCInDelivers, + ipSystemStatsHCOutRequests, + ipSystemStatsHCOutForwDatagrams, + ipSystemStatsHCOutTransmits, + ipSystemStatsHCInMcastPkts, + ipSystemStatsHCOutMcastPkts +} + STATUS current + DESCRIPTION + "IP system wide statistics for systems that may overflow the + standard packet counters within 1 hour." + ::= { ipMIBGroups 11 } + +ipv4SystemStatsHCPacketGroup OBJECT-GROUP + OBJECTS { ipSystemStatsHCInBcastPkts, + ipSystemStatsHCOutBcastPkts } + STATUS current + DESCRIPTION + "IPv4 only system wide statistics for systems that may + overflow the standard packet counters within 1 hour." + ::= { ipMIBGroups 12 } + +ipIfStatsGroup OBJECT-GROUP + OBJECTS { ipIfStatsInReceives, ipIfStatsInOctets, + ipIfStatsInHdrErrors, ipIfStatsInNoRoutes, + ipIfStatsInAddrErrors, ipIfStatsInUnknownProtos, + ipIfStatsInTruncatedPkts, ipIfStatsInForwDatagrams, + ipIfStatsReasmReqds, ipIfStatsReasmOKs, + ipIfStatsReasmFails, ipIfStatsInDiscards, + ipIfStatsInDelivers, ipIfStatsOutRequests, + ipIfStatsOutForwDatagrams, ipIfStatsOutDiscards, + ipIfStatsOutFragReqds, ipIfStatsOutFragOKs, + ipIfStatsOutFragFails, ipIfStatsOutFragCreates, + ipIfStatsOutTransmits, ipIfStatsOutOctets, + ipIfStatsInMcastPkts, ipIfStatsInMcastOctets, + ipIfStatsOutMcastPkts, ipIfStatsOutMcastOctets, + ipIfStatsDiscontinuityTime, ipIfStatsRefreshRate } + STATUS current + DESCRIPTION + + + + "IP per-interface statistics." + ::= { ipMIBGroups 13 } + +ipv4IfStatsGroup OBJECT-GROUP + OBJECTS { ipIfStatsInBcastPkts, ipIfStatsOutBcastPkts } + STATUS current + DESCRIPTION + "IPv4 only per-interface statistics." + ::= { ipMIBGroups 14 } + +ipIfStatsHCOctetGroup OBJECT-GROUP + OBJECTS { ipIfStatsHCInOctets, ipIfStatsHCOutOctets, + ipIfStatsHCInMcastOctets, ipIfStatsHCOutMcastOctets } + STATUS current + DESCRIPTION + "IP per-interfaces statistics for systems that include + interfaces that may overflow the standard octet + counters within 1 hour." + ::= { ipMIBGroups 15 } + +ipIfStatsHCPacketGroup OBJECT-GROUP + OBJECTS { ipIfStatsHCInReceives, ipIfStatsHCInForwDatagrams, + ipIfStatsHCInDelivers, ipIfStatsHCOutRequests, + ipIfStatsHCOutForwDatagrams, ipIfStatsHCOutTransmits, + ipIfStatsHCInMcastPkts, ipIfStatsHCOutMcastPkts } + STATUS current + DESCRIPTION + "IP per-interfaces statistics for systems that include + interfaces that may overflow the standard packet counters + within 1 hour." + ::= { ipMIBGroups 16 } + +ipv4IfStatsHCPacketGroup OBJECT-GROUP + OBJECTS { ipIfStatsHCInBcastPkts, ipIfStatsHCOutBcastPkts } + STATUS current + DESCRIPTION + "IPv4 only per-interface statistics for systems that include + interfaces that may overflow the standard packet counters + within 1 hour." + ::= { ipMIBGroups 17 } + +ipAddressPrefixGroup OBJECT-GROUP + OBJECTS { ipAddressPrefixOrigin, + ipAddressPrefixOnLinkFlag, + ipAddressPrefixAutonomousFlag, + ipAddressPrefixAdvPreferredLifetime, + ipAddressPrefixAdvValidLifetime } + STATUS current + + + + DESCRIPTION + "The group of objects for providing information about address + prefixes used by this node." + ::= { ipMIBGroups 18 } + +ipAddressGroup OBJECT-GROUP + OBJECTS { ipAddressSpinLock, ipAddressIfIndex, + ipAddressType, ipAddressPrefix, + ipAddressOrigin, ipAddressStatus, + ipAddressCreated, ipAddressLastChanged, + ipAddressRowStatus, ipAddressStorageType } + STATUS current + DESCRIPTION + "The group of objects for providing information about the + addresses relevant to this entity's interfaces." + ::= { ipMIBGroups 19 } + +ipNetToPhysicalGroup OBJECT-GROUP + OBJECTS { ipNetToPhysicalPhysAddress, ipNetToPhysicalLastUpdated, + ipNetToPhysicalType, ipNetToPhysicalState, + ipNetToPhysicalRowStatus } + STATUS current + DESCRIPTION + "The group of objects for providing information about the + mappings of network address to physical address known to + this node." + ::= { ipMIBGroups 20 } + +ipv6ScopeGroup OBJECT-GROUP + OBJECTS { ipv6ScopeZoneIndexLinkLocal, + ipv6ScopeZoneIndex3, + ipv6ScopeZoneIndexAdminLocal, + ipv6ScopeZoneIndexSiteLocal, + ipv6ScopeZoneIndex6, + ipv6ScopeZoneIndex7, + ipv6ScopeZoneIndexOrganizationLocal, + ipv6ScopeZoneIndex9, + ipv6ScopeZoneIndexA, + ipv6ScopeZoneIndexB, + ipv6ScopeZoneIndexC, + ipv6ScopeZoneIndexD } + STATUS current + DESCRIPTION + "The group of objects for managing IPv6 scope zones." + ::= { ipMIBGroups 21 } + +ipDefaultRouterGroup OBJECT-GROUP + OBJECTS { ipDefaultRouterLifetime, ipDefaultRouterPreference } + + + + STATUS current + DESCRIPTION + "The group of objects for providing information about default + routers known to this node." + ::= { ipMIBGroups 22 } + +ipv6RouterAdvertGroup OBJECT-GROUP + OBJECTS { ipv6RouterAdvertSpinLock, + ipv6RouterAdvertSendAdverts, + ipv6RouterAdvertMaxInterval, + ipv6RouterAdvertMinInterval, + ipv6RouterAdvertManagedFlag, + ipv6RouterAdvertOtherConfigFlag, + ipv6RouterAdvertLinkMTU, + ipv6RouterAdvertReachableTime, + ipv6RouterAdvertRetransmitTime, + ipv6RouterAdvertCurHopLimit, + ipv6RouterAdvertDefaultLifetime, + ipv6RouterAdvertRowStatus +} + STATUS current + DESCRIPTION + "The group of objects for controlling information advertised + by IPv6 routers." + ::= { ipMIBGroups 23 } + +icmpStatsGroup OBJECT-GROUP + OBJECTS {icmpStatsInMsgs, icmpStatsInErrors, + icmpStatsOutMsgs, icmpStatsOutErrors, + icmpMsgStatsInPkts, icmpMsgStatsOutPkts } + STATUS current + DESCRIPTION + "The group of objects providing ICMP statistics." + ::= { ipMIBGroups 24 } + +-- +-- Deprecated objects +-- + +ipInReceives OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of input datagrams received from + interfaces, including those received in error. + + This object has been deprecated, as a new IP version-neutral + + + + table has been added. It is loosely replaced by + ipSystemStatsInRecieves." + ::= { ip 3 } + +ipInHdrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of input datagrams discarded due to errors in + their IPv4 headers, including bad checksums, version number + mismatch, other format errors, time-to-live exceeded, errors + discovered in processing their IPv4 options, etc. + + This object has been deprecated as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInHdrErrors." + ::= { ip 4 } + +ipInAddrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of input datagrams discarded because the IPv4 + address in their IPv4 header's destination field was not a + valid address to be received at this entity. This count + includes invalid addresses (e.g., 0.0.0.0) and addresses of + unsupported Classes (e.g., Class E). For entities which are + not IPv4 routers, and therefore do not forward datagrams, + this counter includes datagrams discarded because the + destination address was not a local address. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInAddrErrors." + ::= { ip 5 } + +ipForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of input datagrams for which this entity was not + their final IPv4 destination, as a result of which an + attempt was made to find a route to forward them to that + final destination. In entities which do not act as IPv4 + routers, this counter will include only those packets which + + + + were Source-Routed via this entity, and the Source-Route + option processing was successful. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInForwDatagrams." + ::= { ip 6 } + +ipInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of locally-addressed datagrams received + successfully but discarded because of an unknown or + unsupported protocol. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInUnknownProtos." + ::= { ip 7 } + +ipInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of input IPv4 datagrams for which no problems + were encountered to prevent their continued processing, but + which were discarded (e.g., for lack of buffer space). Note + that this counter does not include any datagrams discarded + while awaiting re-assembly. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsInDiscards." + ::= { ip 8 } + +ipInDelivers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of input datagrams successfully delivered + to IPv4 user-protocols (including ICMP). + + This object has been deprecated as a new IP version neutral + table has been added. It is loosely replaced by + + + + ipSystemStatsIndelivers." + ::= { ip 9 } + +ipOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of IPv4 datagrams which local IPv4 user + protocols (including ICMP) supplied to IPv4 in requests for + transmission. Note that this counter does not include any + datagrams counted in ipForwDatagrams. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsOutRequests." + ::= { ip 10 } + +ipOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of output IPv4 datagrams for which no problem was + encountered to prevent their transmission to their + destination, but which were discarded (e.g., for lack of + buffer space). Note that this counter would include + datagrams counted in ipForwDatagrams if any such packets met + this (discretionary) discard criterion. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsOutDiscards." + ::= { ip 11 } + +ipOutNoRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 datagrams discarded because no route + could be found to transmit them to their destination. Note + that this counter includes any packets counted in + ipForwDatagrams which meet this `no-route' criterion. Note + that this includes any datagrams which a host cannot route + because all of its default routers are down. + + This object has been deprecated, as a new IP version-neutral + + + + table has been added. It is loosely replaced by + ipSystemStatsOutNoRoutes." + ::= { ip 12 } + +ipReasmReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 fragments received which needed to be + reassembled at this entity. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsReasmReqds." + ::= { ip 14 } + +ipReasmOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 datagrams successfully re-assembled. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsReasmOKs." + ::= { ip 15 } + +ipReasmFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of failures detected by the IPv4 re-assembly + algorithm (for whatever reason: timed out, errors, etc). + Note that this is not necessarily a count of discarded IPv4 + fragments since some algorithms (notably the algorithm in + RFC 815) can lose track of the number of fragments by + combining them as they are received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsReasmFails." + ::= { ip 16 } + +ipFragOKs OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 datagrams that have been successfully + fragmented at this entity. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsOutFragOKs." + ::= { ip 17 } + +ipFragFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 datagrams that have been discarded + because they needed to be fragmented at this entity but + could not be, e.g., because their Don't Fragment flag was + set. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + ipSystemStatsOutFragFails." + ::= { ip 18 } + +ipFragCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of IPv4 datagram fragments that have been + generated as a result of fragmentation at this entity. + + This object has been deprecated as a new IP version neutral + table has been added. It is loosely replaced by + ipSystemStatsOutFragCreates." + ::= { ip 19 } + +ipRoutingDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of routing entries which were chosen to be + discarded even though they are valid. One possible reason + for discarding such an entry could be to free-up buffer + space for other routing entries. + + + + This object was defined in pre-IPv6 versions of the IP MIB. + It was implicitly IPv4 only, but the original specifications + did not indicate this protocol restriction. In order to + clarify the specifications, this object has been deprecated + and a similar, but more thoroughly clarified, object has + been added to the IP-FORWARD-MIB." + ::= { ip 23 } + +-- the deprecated IPv4 address table + +ipAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpAddrEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The table of addressing information relevant to this + entity's IPv4 addresses. + + This table has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by the + ipAddressTable although several objects that weren't deemed + useful weren't carried forward while another + (ipAdEntReasmMaxSize) was moved to the ipv4InterfaceTable." + ::= { ip 20 } + +ipAddrEntry OBJECT-TYPE + SYNTAX IpAddrEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The addressing information for one of this entity's IPv4 + addresses." + INDEX { ipAdEntAddr } + ::= { ipAddrTable 1 } + +IpAddrEntry ::= SEQUENCE { + ipAdEntAddr IpAddress, + ipAdEntIfIndex INTEGER, + ipAdEntNetMask IpAddress, + ipAdEntBcastAddr INTEGER, + ipAdEntReasmMaxSize INTEGER + } + +ipAdEntAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + + + + "The IPv4 address to which this entry's addressing + information pertains." + ::= { ipAddrEntry 1 } + +ipAdEntIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The index value which uniquely identifies the interface to + which this entry is applicable. The interface identified by + a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipAddrEntry 2 } + +ipAdEntNetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The subnet mask associated with the IPv4 address of this + entry. The value of the mask is an IPv4 address with all + the network bits set to 1 and all the hosts bits set to 0." + ::= { ipAddrEntry 3 } + +ipAdEntBcastAddr OBJECT-TYPE + SYNTAX INTEGER (0..1) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of the least-significant bit in the IPv4 broadcast + address used for sending datagrams on the (logical) + interface associated with the IPv4 address of this entry. + For example, when the Internet standard all-ones broadcast + address is used, the value will be 1. This value applies to + both the subnet and network broadcast addresses used by the + entity on this (logical) interface." + ::= { ipAddrEntry 4 } + +ipAdEntReasmMaxSize OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The size of the largest IPv4 datagram which this entity can + re-assemble from incoming IPv4 fragmented datagrams received + on this interface." + ::= { ipAddrEntry 5 } + + + +-- the deprecated IPv4 Address Translation table + +-- The Address Translation tables contain the IpAddress to +-- "physical" address equivalences. Some interfaces do not +-- use translation tables for determining address +-- equivalences (e.g., DDN-X.25 has an algorithmic method); +-- if all interfaces are of this type, then the Address +-- Translation table is empty, i.e., has zero entries. + +ipNetToMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpNetToMediaEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The IPv4 Address Translation table used for mapping from + IPv4 addresses to physical addresses. + + This table has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by the + ipNetToPhysicalTable." + ::= { ip 22 } + +ipNetToMediaEntry OBJECT-TYPE + SYNTAX IpNetToMediaEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Each entry contains one IpAddress to `physical' address + equivalence." + INDEX { ipNetToMediaIfIndex, + ipNetToMediaNetAddress } + ::= { ipNetToMediaTable 1 } + +IpNetToMediaEntry ::= SEQUENCE { + ipNetToMediaIfIndex INTEGER, + ipNetToMediaPhysAddress PhysAddress, + ipNetToMediaNetAddress IpAddress, + ipNetToMediaType INTEGER + } + +ipNetToMediaIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The interface on which this entry's equivalence is + effective. The interface identified by a particular value + of this index is the same interface as identified by the + + + + same value of the IF-MIB's ifIndex. + + This object predates the rule limiting index objects to a + max access value of 'not-accessible' and so continues to use + a value of 'read-create'." + ::= { ipNetToMediaEntry 1 } + +ipNetToMediaPhysAddress OBJECT-TYPE + SYNTAX PhysAddress (SIZE(0..65535)) + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The media-dependent `physical' address. This object should + return 0 when this entry is in the 'incomplete' state. + + As the entries in this table are typically not persistent + when this object is written the entity should not save the + change to non-volatile storage. Note: a stronger + requirement is not used because this object was previously + defined." + ::= { ipNetToMediaEntry 2 } + +ipNetToMediaNetAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The IpAddress corresponding to the media-dependent + `physical' address. + + This object predates the rule limiting index objects to a + max access value of 'not-accessible' and so continues to use + a value of 'read-create'." + ::= { ipNetToMediaEntry 3 } + +ipNetToMediaType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + invalid(2), -- an invalidated mapping + dynamic(3), + static(4) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of mapping. + + Setting this object to the value invalid(2) has the effect + + + + of invalidating the corresponding entry in the + ipNetToMediaTable. That is, it effectively dis-associates + the interface identified with said entry from the mapping + identified with said entry. It is an implementation- + specific matter as to whether the agent removes an + invalidated entry from the table. Accordingly, management + stations must be prepared to receive tabular information + from agents that corresponds to entries not currently in + use. Proper interpretation of such entries requires + examination of the relevant ipNetToMediaType object. + + As the entries in this table are typically not persistent + when this object is written the entity should not save the + change to non-volatile storage. Note: a stronger + requirement is not used because this object was previously + defined." + ::= { ipNetToMediaEntry 4 } + +-- the deprecated ICMP group + +icmpInMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of ICMP messages which the entity received. + Note that this counter includes all those counted by + icmpInErrors. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + icmpStatsInMsgs." + ::= { icmp 1 } + +icmpInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP messages which the entity received but + determined as having ICMP-specific errors (bad ICMP + checksums, bad length, etc.). + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + icmpStatsInErrors." + ::= { icmp 2 } + + + + +icmpInDestUnreachs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Destination Unreachable messages + received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 3 } + +icmpInTimeExcds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Time Exceeded messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 4 } + +icmpInParmProbs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Parameter Problem messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 5 } + +icmpInSrcQuenchs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Source Quench messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 6 } + + + +icmpInRedirects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Redirect messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 7 } + +icmpInEchos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Echo (request) messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 8 } + +icmpInEchoReps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Echo Reply messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 9 } + +icmpInTimestamps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Timestamp (request) messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 10 } + + + + +icmpInTimestampReps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Timestamp Reply messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 11 } + +icmpInAddrMasks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Address Mask Request messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 12 } + +icmpInAddrMaskReps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Address Mask Reply messages received. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 13 } + +icmpOutMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of ICMP messages which this entity + attempted to send. Note that this counter includes all + those counted by icmpOutErrors. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + icmpStatsOutMsgs." + + + + ::= { icmp 14 } + +icmpOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP messages which this entity did not send + due to problems discovered within ICMP, such as a lack of + buffers. This value should not include errors discovered + outside the ICMP layer, such as the inability of IP to route + the resultant datagram. In some implementations, there may + be no types of error which contribute to this counter's + value. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by + icmpStatsOutErrors." + ::= { icmp 15 } + +icmpOutDestUnreachs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Destination Unreachable messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 16 } + +icmpOutTimeExcds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Time Exceeded messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 17 } + +icmpOutParmProbs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + + + + DESCRIPTION + "The number of ICMP Parameter Problem messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 18 } + +icmpOutSrcQuenchs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Source Quench messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 19 } + +icmpOutRedirects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Redirect messages sent. For a host, this + object will always be zero, since hosts do not send + redirects. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 20 } + +icmpOutEchos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Echo (request) messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 21 } + +icmpOutEchoReps OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Echo Reply messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 22 } + +icmpOutTimestamps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Timestamp (request) messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 23 } + +icmpOutTimestampReps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Timestamp Reply messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 24 } + +icmpOutAddrMasks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Address Mask Request messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 25 } + +icmpOutAddrMaskReps OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of ICMP Address Mask Reply messages sent. + + This object has been deprecated, as a new IP version-neutral + table has been added. It is loosely replaced by a column in + the icmpMsgStatsTable." + ::= { icmp 26 } + +-- deprecated conformance information +-- deprecated compliance statements + +ipMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for systems that implement only + IPv4. For version-independence, this compliance statement + is deprecated in favor of ipMIBCompliance2." + MODULE -- this module + MANDATORY-GROUPS { ipGroup, + icmpGroup } + ::= { ipMIBCompliances 1 } + +-- deprecated units of conformance + +ipGroup OBJECT-GROUP + OBJECTS { ipForwarding, ipDefaultTTL, + ipInReceives, ipInHdrErrors, + ipInAddrErrors, ipForwDatagrams, + ipInUnknownProtos, ipInDiscards, + ipInDelivers, ipOutRequests, + ipOutDiscards, ipOutNoRoutes, + ipReasmTimeout, ipReasmReqds, + ipReasmOKs, ipReasmFails, + ipFragOKs, ipFragFails, + ipFragCreates, ipAdEntAddr, + ipAdEntIfIndex, ipAdEntNetMask, + ipAdEntBcastAddr, ipAdEntReasmMaxSize, + ipNetToMediaIfIndex, ipNetToMediaPhysAddress, + ipNetToMediaNetAddress, ipNetToMediaType, + ipRoutingDiscards +} + STATUS deprecated + DESCRIPTION + "The ip group of objects providing for basic management of IP + entities, exclusive of the management of IP routes. + + + + + As part of the version independence, this group has been + deprecated. " + ::= { ipMIBGroups 1 } + +icmpGroup OBJECT-GROUP + OBJECTS { icmpInMsgs, icmpInErrors, + icmpInDestUnreachs, icmpInTimeExcds, + icmpInParmProbs, icmpInSrcQuenchs, + icmpInRedirects, icmpInEchos, + icmpInEchoReps, icmpInTimestamps, + icmpInTimestampReps, icmpInAddrMasks, + icmpInAddrMaskReps, icmpOutMsgs, + icmpOutErrors, icmpOutDestUnreachs, + icmpOutTimeExcds, icmpOutParmProbs, + icmpOutSrcQuenchs, icmpOutRedirects, + icmpOutEchos, icmpOutEchoReps, + icmpOutTimestamps, icmpOutTimestampReps, + icmpOutAddrMasks, icmpOutAddrMaskReps } + STATUS deprecated + DESCRIPTION + "The icmp group of objects providing ICMP statistics. + + As part of the version independence, this group has been + deprecated. " + ::= { ipMIBGroups 2 } + +END diff --git a/mibs/ietf/IPATM-IPMC-MIB b/mibs/ietf/IPATM-IPMC-MIB new file mode 100644 index 0000000..e1d511d --- /dev/null +++ b/mibs/ietf/IPATM-IPMC-MIB @@ -0,0 +1,3238 @@ +IPATM-IPMC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + snmpModules, MODULE-IDENTITY, NOTIFICATION-TYPE, Counter32, + Integer32, Unsigned32, OBJECT-TYPE, IpAddress + FROM SNMPv2-SMI + AtmAddr + FROM ATM-TC-MIB + TruthValue, RowStatus + FROM SNMPv2-TC + ipAdEntAddr + FROM RFC1213-MIB + InterfaceIndex + FROM IF-MIB; + +marsMIB MODULE-IDENTITY + LAST-UPDATED "9804150145Z" -- 15 April 1998 + ORGANIZATION "Internetworking Over NBMA (ion) Working Group" + CONTACT-INFO + " Chris Chung + Postal: SAIC + 1710 Goodridge Drive + Mail Stop 1-4-7 + McLean, VA 22102 + Tel: +1 703 448 6485 + Fax: +1 703 356 2160 + E-mail: cchung@tieo.saic.com + + Editor: Maria Greene + Postal: Independent Contractor + E-mail: maria@xedia.com + " + DESCRIPTION + "This module defines a portion of the managed information + base (MIB) for managing classical IP multicast address + resolution server (MARS) and related entities as + described in the RFC2022. This MIB is meant to be + used in conjunction with the ATM-MIB (RFC1695), + MIB-II (RFC1213), and optionally the IF-MIB (RFC1573)." + ::= { snmpModules 17 } + +--*************************************************************** +-- IP ATM MARS Client Object Definitions +--*************************************************************** +marsClientObjects OBJECT IDENTIFIER ::= { marsMIB 1 } + +marsClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects defined in this table are used for + the management of MARS clients, ATM attached + endpoints." + ::= { marsClientObjects 1 } + +marsClientEntry OBJECT-TYPE + SYNTAX MarsClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a MARS client and its associated + attributes. An entry in the marsClientTable has + a corresponding entry in the ipAddrTable defined in + RFC1213. Association between the ipAddrTable and + the marsClientTable is made through the index, + ipAdEntAddr." + INDEX { ipAdEntAddr, marsClientIndex } + ::= { marsClientTable 1 } + +MarsClientEntry ::= + SEQUENCE { + marsClientIndex Integer32, + marsClientAddr AtmAddr, + marsClientDefaultMarsAddr AtmAddr, + marsClientHsn Unsigned32, + marsClientRegistration INTEGER, + marsClientCmi INTEGER, + marsClientDefaultMtu INTEGER, + marsClientFailureTimer INTEGER, + marsClientRetranDelayTimer INTEGER, + marsClientRdmMulReqAddRetrTimer INTEGER, + marsClientRdmVcRevalidateTimer INTEGER, + marsClientJoinLeaveRetrInterval INTEGER, + marsClientJoinLeaveRetrLimit INTEGER, + marsClientRegWithMarsRdmTimer INTEGER, + marsClientForceWaitTimer INTEGER, + marsClientLmtToMissRedirMapTimer INTEGER, + marsClientIdleTimer INTEGER, + marsClientRowStatus RowStatus + } + +marsClientIndex OBJECT-TYPE + SYNTAX Integer32(1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used to identify instances of + the columnar objects in the MARS MarsClientTable." + ::= { marsClientEntry 1 } + +marsClientAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM address associated with the ATM Client." + ::= { marsClientEntry 2 } + +marsClientDefaultMarsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default MARS ATM address which is needed to + setup the initial signalling path between a MARS + client and its associated MARS." + ::= { marsClientEntry 3 } + +marsClientHsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The cluster membership own 32 bit Host Sequence + Number. When a new cluster member starts up, it is + initialized to zero. When the cluster member sends + the MARS_JOIN to register, the HSN will be correctly + set to the current cluster sequence number (CSN) when + the Client receives the copy of its MARS_JOIN from + the MARS. It is is used to track the MARS sequence + number." + ::= { marsClientEntry 4 } + +marsClientRegistration OBJECT-TYPE + SYNTAX INTEGER { + notRegistered (1), + registering (2), + registered (3), + reRegisteringFault (4), + reRegisteringRedirMap (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication with regards to the registration + status of this client. The registration codes + of 'notRegistered (1)', 'registered (2)', and + registered (3) are self-explanatory. The + 'reRegisteringFault (4)' indicates the client is + in the process of re-registering with a MARS due + to some fault conditions. The 'reRegisteringRedMap + (5)' status code shows that client is re-registering + because it has received a MARS_REDIRECT_MAP message + and was told to register with a different MARS from + the current MARS." + ::= { marsClientEntry 5 } + +marsClientCmi OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "16 bit Cluster member identifier (CMI) assigned by the + MARS which uniquely identifies each endpoint attached + to the cluster. The value becomes valid after the + 'marsClientRegistration' is set to the value + of 'registered (1)'." + ::= { marsClientEntry 6 } + +marsClientDefaultMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum transmission unit (MTU) used for + this cluster. Note that the actual size used for a + VC between two members of the cluster may be negotiated + during connection setup and may be different than this + value. Default value = 9180 bytes." + DEFVAL { 9180 } + ::= { marsClientEntry 7 } + +marsClientFailureTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A timer used to flag the failure of last MARS_MULTI + to arrive. Default value = 10 seconds (recommended)." + DEFVAL { 10 } + ::= { marsClientEntry 8 } + +marsClientRetranDelayTimer OBJECT-TYPE + SYNTAX INTEGER (5..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The delay timer for sending out new MARS_REQUEST + for the group after the client learned that there + is no other group in the cluster. The timer must + be set between 5 and 10 seconds inclusive." + ::= { marsClientEntry 9 } + +marsClientRdmMulReqAddRetrTimer OBJECT-TYPE + SYNTAX INTEGER (5..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial random L_MULTI_RQ/ADD retransmit timer + which can be set between 5 and 10 seconds inclusive." + ::= { marsClientEntry 10 } + +marsClientRdmVcRevalidateTimer OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The random time to set VC_revalidate flag. The + timer value ranges between 1 and 10 seconds + inclusive." + ::= { marsClientEntry 11 } + +marsClientJoinLeaveRetrInterval OBJECT-TYPE + SYNTAX INTEGER(5..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "MARS_JOIN/LEAVE retransmit interval. The minimum + and recommended values are 5 and 10 seconds, + respectively." + DEFVAL { 10 } + ::= { marsClientEntry 12 } + +marsClientJoinLeaveRetrLimit OBJECT-TYPE + SYNTAX INTEGER (0..5) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "MARS_JOIN/LEAVE retransmit limit. The maximum + value is 5." + ::= { marsClientEntry 13 } + +marsClientRegWithMarsRdmTimer OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Random time to register with MARS." + ::= { marsClientEntry 14 } + +marsClientForceWaitTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Force wait if MARS re-registration is looping. + The minimum value is 1 minute." + ::= { marsClientEntry 15 } + +marsClientLmtToMissRedirMapTimer OBJECT-TYPE + SYNTAX INTEGER (1..4) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Timer limit for client to miss MARS_REDIRECT_MAPS." + ::= { marsClientEntry 16 } + +marsClientIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configurable inactivity timer associated with a + client. When a VC is created at this client, it gets + the idle timer value from this configurable timer. + The minimum suggested value is 1 minute and the + recommended default value is 20 minutes." + DEFVAL { 20 } + ::= { marsClientEntry 17 } + +marsClientRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured and until the agent + has also created a corresponding row in the + marsClientStatTable. + + When this object has a value of 'active', the + following columnar objects can not be modified: + + marsClientDefaultMarsAddr, + marsClientHsn, + marsClientRegstration, + marsClientCmi, + marsClientDefaultMtu + + while other objects in this conceptual row can be + modified irrespective of the value of this object. + + Deletion of this row is allowed regardless of + whether or not a row in any associated tables + (i.e., marsClientVcTable) still exists or is in + use. Once this row is deleted, it is recommended + that the agent or the SNMP management station + (if possible) through the set command deletes + any stale rows that are associated with this + row." + ::= { marsClientEntry 18 } + +--**************************************************************** +-- IP ATM MARS Client Multicast Group Address Object Definitions +--**************************************************************** + +marsClientMcGrpTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of IP multicast group address + blocks associated with a MARS client. Entries in this + table are used by the client that needs to receive or + transmit packets from/to the specified range of + multicast addresses. + Each row can be created or deleted via configuration." + ::= { marsClientObjects 2 } + +marsClientMcGrpEntry OBJECT-TYPE + SYNTAX MarsClientMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a consecutive block of multicast + group addresses." + INDEX { ipAdEntAddr, + marsClientIndex, + marsClientMcMinGrpAddr, + marsClientMcMaxGrpAddr } + ::= { marsClientMcGrpTable 1 } + +MarsClientMcGrpEntry ::= + SEQUENCE { + marsClientMcMinGrpAddr IpAddress, + marsClientMcMaxGrpAddr IpAddress, + marsClientMcGrpRowStatus RowStatus + } + +marsClientMcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum multicast group address - the min and max + multicast forms multi-group block. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that this + block contains a single group address." + ::= { marsClientMcGrpEntry 1 } + +marsClientMcMaxGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum multicast group address - the min and max + multicast forms a multi-group block. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that this + block contains a single group address." + ::= { marsClientMcGrpEntry 2 } + +marsClientMcGrpRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create or delete a row in this + table. + + Since other objects in this row are not-accessible + 'index-objects', the value of this object has no + effect on whether those objects in this conceptual + row can be modified." + ::= { marsClientMcGrpEntry 3 } + +--**************************************************************** +-- IP ATM MARS Client Backup MARS Object Definitions +--**************************************************************** + +marsClientBackupMarsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientBackupMarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of backup MARS addresses that + a client can connect to in case of failure for connecting + to the primary server. The list of addresses is in + descending order of preference. It should be noted that + the backup list provided by the MARS to the client via + the MARS_REDIRECT_MAP message has a higher preference than + addresses that are manually configured into the client. + When such a list is received from the MARS, this information + should be inserted at the top of the list. + Each row can be created or deleted via configuration." + ::= { marsClientObjects 3 } + +marsClientBackupMarsEntry OBJECT-TYPE + SYNTAX MarsClientBackupMarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents an ATM address of a backup MARS." + INDEX { ipAdEntAddr, + marsClientIndex, + marsClientBackupMarsPriority, + marsClientBackupMarsAddr } + ::= { marsClientBackupMarsTable 1 } + +MarsClientBackupMarsEntry ::= + SEQUENCE { + marsClientBackupMarsPriority Unsigned32, + marsClientBackupMarsAddr AtmAddr, + marsClientBackupMarsRowStatus RowStatus + } + +marsClientBackupMarsPriority OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority associated with a backup MARS. A lower + priority value inidcates a higher preference." + ::= { marsClientBackupMarsEntry 1 } + +marsClientBackupMarsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM address associated with a backup MARS." + ::= { marsClientBackupMarsEntry 2 } + +marsClientBackupMarsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create or delete a row in this + table. + + Since other objects in this row are not-accessible + 'index-objects', the value of this object has no effect + on whether those objects in this conceptual row can be + modified." + ::= { marsClientBackupMarsEntry 3 } + +--*************************************************************** +-- IP ATM MARS Client VC Object Definition Table +--*************************************************************** + +marsClientVcTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about open virtual + circuits (VCs) that a client has. For point to point + circuit, each entry represents a single VC connection + between this client ATM address to another party ATM + address. In the case of point to multipoint connection + where a single source address is associated with + multiple destinations, several entries are used to + represent the relationship. An example of point to + multi-point VC represented in a table is shown below. + + Client VPI/VCI Grp Addr1/Addr2 Part Addr + 1 0,1 g1,g2 p1 + 1 0,1 g1,g2 p2 + 1 0,1 g1,g2 p3 + + Note: This table assumes the IP multicast address + groups (min, max) defined in each entry are + always consecutive. In the case of that a + client receives a JOIN/LEAVE with + mars$flag.punched set, each pair of the IP + groups will first be broken into several + pairs of consecutive IP groups before each + entry row corresponding to a pair of IP group + is created." + ::= { marsClientObjects 4 } + +marsClientVcEntry OBJECT-TYPE + SYNTAX MarsClientVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects contained in the entry are VC related + attributes such as VC signalling type, control VC + type, idle timer, negotiated MTU size, etc." + INDEX { ipAdEntAddr, + marsClientIndex, + marsClientVcVpi, + marsClientVcVci, + marsClientVcMinGrpAddr, + marsClientVcMaxGrpAddr, + marsClientVcPartyAddr } + ::= { marsClientVcTable 1 } + +MarsClientVcEntry ::= + SEQUENCE { + marsClientVcVpi INTEGER, + marsClientVcVci INTEGER, + marsClientVcMinGrpAddr IpAddress, + marsClientVcMaxGrpAddr IpAddress, + marsClientVcPartyAddr AtmAddr, + marsClientVcPartyAddrType INTEGER, + marsClientVcType INTEGER, + marsClientVcCtrlType INTEGER, + marsClientVcIdleTimer INTEGER, + marsClientVcRevalidate TruthValue, + marsClientVcEncapsType INTEGER, + marsClientVcNegotiatedMtu INTEGER, + marsClientVcRowStatus RowStatus + } + +marsClientVcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual path identifier (VPI). Since + a VPI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsClientVcEntry 1 } + +marsClientVcVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual circuit identifier (VCI). Since + a VCI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsClientVcEntry 2 } + +marsClientVcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum IP multicast group address - the min and + max multicast forms a multi-group consecutive + block which is associated with a table entry. + if the MinGrpAddr and MaxGrpAddr are the same, it + indicates that the size of multi-group block is 1, + a single IP group." + ::= { marsClientVcEntry 3 } + +marsClientVcMaxGrpAddr OBJECT-TYPE + SYNTAX IpAddress + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum IP multicast group address - the min and + max multicast forms a multi-group consecutive + block which is associated with a table entry. + if the MinGrpAddr and MaxGrpAddr are the same, it + indicates that the size of multi-group block is 1, + a single IP group." + ::= { marsClientVcEntry 4 } + +marsClientVcPartyAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ATM party address in which this VC is linked. + The party type is identified by the + marsClientVcPartyAddrType." + ::= { marsClientVcEntry 5 } + +marsClientVcPartyAddrType OBJECT-TYPE + SYNTAX INTEGER { + called (1), + calling (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The party type is associated with the party address. + The 'called (1)' indicates that the party address is + a destination address which implies that VC is + originated from this client. The 'calling (2)' + indicates the VC was initiated externally to this + client. In this case, the party address is the + source address." + ::= { marsClientVcEntry 6 } + +marsClientVcType OBJECT-TYPE + SYNTAX INTEGER { + pvc (1), + svc (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Circuit Connection type: permanent virtual circuit or + switched virtual circuit." + ::= { marsClientVcEntry 7 } + +marsClientVcCtrlType OBJECT-TYPE + SYNTAX INTEGER { + pointToPointVC (1), + clusterControlVC (2), + pointToMultiPointVC (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control VC type used to specify a particular connection. + pointToPointVC (1): + used by the ATM Clients for the registration and + queries. This VC or the initial signalling path + is set up from the source Client to a MARS. It is + bi-directional. + clusterControlVC (2): + used by a MARS to issue asynchronous updates to an + ATM Client. This VC is established from the MARS + to the ATM Client. + pointToMultiPointVC (3): + used by the client to transfer multicast data + packets from layer 3. This VC is established + from the source ATM Client to a destination ATM + endpoint which can be a multicast group member + or an MCS. The destination endpoint was obtained + from the MARS." + ::= { marsClientVcEntry 8 } + +marsClientVcIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The idle timer associated with this VC. The minimum + suggested value is 1 minute and the recommended + default value is 20 minutes." + DEFVAL { 20 } + ::= { marsClientVcEntry 9 } + +marsClientVcRevalidate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A flag associated with an open and active multipoint + VC. It is checked every time a packet is queued for + transmission on that VC. The object has the value of + true (1) if revalidate is required and the value + false (2) otherwise." + ::= { marsClientVcEntry 10 } + + marsClientVcEncapsType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + llcSnap (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encapsulation type used when communicating over + this VC." + ::= { marsClientVcEntry 11 } + +marsClientVcNegotiatedMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The negotiated MTU when communicating over this VC." + ::= { marsClientVcEntry 12 } + +marsClientVcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured. + + While objects: marsClientVcIdleTimer and + marsClientVcRevalidate in this conceptual + row can be modified irrespective of the value + of this object, all other objects in the row can + not be modified when this object has a value + of 'active'. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + + with the following exception. That is, rows + for which the corresponding instance of + marsClientVcType has a value of 'svc' can not + be modified or deleted." + ::= { marsClientVcEntry 13 } + +--*************************************************************** +-- IP ATM MARS Client Statistic Object Definition Table +--*************************************************************** + +marsClientStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsClientStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table contains statistics collected at MARS + clients." + ::= { marsClientObjects 5 } + +marsClientStatEntry OBJECT-TYPE + SYNTAX MarsClientStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains statistics collected at one MARS + client." + INDEX { ipAdEntAddr, marsClientIndex } + ::= { marsClientStatTable 1 } + +MarsClientStatEntry ::= + SEQUENCE { + marsClientStatTxReqMsgs Counter32, + marsClientStatTxJoinMsgs Counter32, + marsClientStatTxLeaveMsgs Counter32, + marsClientStatTxGrpLstReqMsgs Counter32, + marsClientStatRxJoinMsgs Counter32, + marsClientStatRxLeaveMsgs Counter32, + marsClientStatRxMultiMsgs Counter32, + marsClientStatRxNakMsgs Counter32, + marsClientStatRxMigrateMsgs Counter32, + marsClientStatRxGrpLstRplyMsgs Counter32, + marsClientStatFailMultiMsgs Counter32 + } + +marsClientStatTxReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_REQUEST messages transmitted + from a client." + ::= { marsClientStatEntry 1 } + +marsClientStatTxJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_JOIN messages transmitted from + a client." + ::= { marsClientStatEntry 2 } + +marsClientStatTxLeaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_LEAVE messages transmitted from + a client." + ::= { marsClientStatEntry 3 } + +marsClientStatTxGrpLstReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_GROUPLIST_REQUEST messages + transmitted from a client." + ::= { marsClientStatEntry 4 } + +marsClientStatRxJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_JOIN messages received by + a client." + ::= { marsClientStatEntry 5 } + +marsClientStatRxLeaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_LEAVE messages received by + a client." + ::= { marsClientStatEntry 6 } + +marsClientStatRxMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MULTI messages received by + a client." + ::= { marsClientStatEntry 7 } + +marsClientStatRxNakMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_NAK messages received by + a client." + ::= { marsClientStatEntry 8 } + +marsClientStatRxMigrateMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MIGRATE messages received by + a client." + ::= { marsClientStatEntry 9 } + + marsClientStatRxGrpLstRplyMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_GROUPLIST_REPLY messages + received by a client." + ::= { marsClientStatEntry 10 } + +marsClientStatFailMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of timeouts occurred indicating + failure of the last MARS_MULTI to arrive." + ::= { marsClientStatEntry 11 } + +--*************************************************************** +-- IP ATM MARS Object Definitions +--*************************************************************** + +marsObjects OBJECT IDENTIFIER ::= { marsMIB 2 } + +marsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects defined in this table are used for the + management of MARS servers." + ::= { marsObjects 1 } + +marsEntry OBJECT-TYPE + SYNTAX MarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a MARS and its associated + attributes." + INDEX { marsIndex, marsIfIndex } + ::= { marsTable 1 } + +MarsEntry ::= + SEQUENCE { + marsIndex Integer32, + marsIfIndex InterfaceIndex, + marsAddr AtmAddr, + marsLocal TruthValue, + marsServStatus INTEGER, + marsServType INTEGER, + marsServPriority Unsigned32, + marsRedirMapMsgTimer INTEGER, + marsCsn Unsigned32, + marsSsn Unsigned32, + marsRowStatus RowStatus + } + +marsIndex OBJECT-TYPE + SYNTAX Integer32(1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used to identify instances of + the columnar objects in the MARS table." + ::= { marsEntry 1 } + +marsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that the MARS is + associated with." + ::= { marsEntry 2 } + +marsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM address associated with the MARS." + ::= { marsEntry 3 } + +marsLocal OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A flag associated with a MARS entry. The object has + the value of true (1) if the MARS whose interface + is local to the machine that implements this MIB; + otherwise the object has the value of false (2)." + ::= { marsEntry 4 } + +marsServStatus OBJECT-TYPE + SYNTAX INTEGER { + active (1), + inactive (2), + faulted (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The current status of MARS." + ::= { marsEntry 5 } + +marsServType OBJECT-TYPE + SYNTAX INTEGER { + primary (1), + backup (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Types of MARS servers: primary or backup." + ::= { marsEntry 6 } + +marsServPriority OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Priority associated with a backup MARS server. + A backup MARS server with lower priority value + indicates a higher preference than other backup + MARS servers to be used as the MARS server when + the primary server fails." + ::= { marsEntry 7 } + +marsRedirMapMsgTimer OBJECT-TYPE + SYNTAX INTEGER (1..2) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Periodic interval on which a multi-part + MARS_REDIRECT_MAP is sent from this MARS." + DEFVAL { 1 } + ::= { marsEntry 8 } + +marsCsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Current cluster sequence number (CSN) which is global + within the context of a given protocol. The CSN is + incremented by the MARS on every transmission of a + message on ClusterControlVC. A cluster member uses + the CSN to track the message loss on ClusterControlVC + or to monitor a membership change." + ::= { marsEntry 9 } + +marsSsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Current server sequence number (SSN) which is global + within the context of a given protocol. The SSN is + incremented by the MARS on every transmission of a + message on ServerControlVC. A MCS uses the SSN to + track the message loss on ServerControlVC or to + monitor a membership change." + ::= { marsEntry 10 } + +marsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured and until the agent + has also created a corresponding row in the + marsStatTable. + + When this object has a value of 'active', the + following columnar objects can not be modified: + + marsAddr, + marsAddrLocal, + marsServStatus, + marsServType, + marsCsn, + marsSsn + + while other objects in this conceptual row can be + modified irrespective of the value of this object. + + Deletion of this row is allowed regardless of + whether or not a row in any associated tables + (i.e., marsVcTable) still exists or is in use. + Once this row is deleted, it is recommended that + the agent or the SNMP management station (if + possible) through the set command deletes any + stale rows that are associated with this row." + ::= { marsEntry 11 } + +--**************************************************************** +-- IP ATM MARS Multicast Group Address Object Definitions +--**************************************************************** + +marsMcGrpTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of IP multicast address + blocks associated with a MARS. Entries in this table + are used by the MARS host map table and the server map + table. They should be created prior to being referenced + as indices by those tables. + Each row can be created or deleted via configuration." + ::= { marsObjects 2 } + +marsMcGrpEntry OBJECT-TYPE + SYNTAX MarsMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a consecutive block of multicast + group addresses." + INDEX { marsIndex, + marsIfIndex, + marsMcMinGrpAddr, + marsMcMaxGrpAddr } + ::= { marsMcGrpTable 1 } + +MarsMcGrpEntry ::= + SEQUENCE { + marsMcMinGrpAddr IpAddress, + marsMcMaxGrpAddr IpAddress, + marsMcGrpAddrUsage INTEGER, + marsMcGrpRxLayer3GrpSets Counter32, + marsMcGrpRxLayer3GrpResets Counter32, + marsMcGrpRowStatus RowStatus + } + +marsMcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum multicast group address - the min and max + multicast forms multi-group block. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that this + block contains a single group address." + ::= { marsMcGrpEntry 1 } + +marsMcMaxGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum multicast group address - the min and max + multicast forms a multi-group block. If The + MinGrpAddr and MaxGrpAddr are the same, it indicates + that this block contains a single group address." + ::= { marsMcGrpEntry 2 } + +marsMcGrpAddrUsage OBJECT-TYPE + SYNTAX INTEGER { + hostMap (1), + serverMap (2), + hostServerMap (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Usage of the multicast address block. The hostMap (1) + indicates that the address block is only used in the + MARS host map table. The serverMap (2) indicates + that the address block is only used in the MARS + server map table. The hostServerMap (3) indicates + that the address block is used in both the host map + and the server map tables." + ::= { marsMcGrpEntry 3 } + +marsMcGrpRxLayer3GrpSets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of MARS_JOIN messages received with + mars$flags.layer3grp flag set." + ::= { marsMcGrpEntry 4 } + +marsMcGrpRxLayer3GrpResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of MARS_JOIN messages received with + mars$flags.layer3grp flag reset." + ::= { marsMcGrpEntry 5 } + +marsMcGrpRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + The value of this object has no effect on whether + other objects in this conceptual row can be modified." + ::= { marsMcGrpEntry 6 } + +--*************************************************************** +-- IP ATM MARS Host Map Object Definitions +--*************************************************************** + +marsHostMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsHostMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table caches mappings between IP multicast + address to a list of ATM addresses that are + configured or dynamically learned from the MARS. + This address resolution is used for the host map. + It supports the mapping of a block of multicast + group addresses to a cluster member address. In + the case where a group block is associated with + multiple cluster members, several entries are + used to representing the relationship." + ::= { marsObjects 3 } + +marsHostMapEntry OBJECT-TYPE + SYNTAX MarsHostMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry row contains attributes associated with + the mapping between a multicast group block and an + ATM address." + INDEX { marsIndex, + marsIfIndex, + marsMcMinGrpAddr, + marsMcMaxGrpAddr, + marsHostMapAtmAddr } + ::= { marsHostMapTable 1 } + +MarsHostMapEntry ::= + SEQUENCE { + marsHostMapAtmAddr AtmAddr, + marsHostMapRowType INTEGER, + marsHostMapRowStatus RowStatus + } + +marsHostMapAtmAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mapped cluster member ATM address." + ::= { marsHostMapEntry 1 } + +marsHostMapRowType OBJECT-TYPE + SYNTAX INTEGER { + static (1), + dynamic (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Method in which this entry row is created. The + static (1) indicates that this row is created + through configuration. The dynamic (2) indicates + that the row is created as the result of group + address updates received at this MARS." + ::= { marsHostMapEntry 2 } + +marsHostMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + This object must not be set to 'active' until + instances of all corresponding columns in the + row of this table are appropriately configured. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + with the following exception. That is, rows + for which the corresponding instance of + marsHostMapRowType has a value of 'dynamic' + can not be modified or deleted." + ::= { marsHostMapEntry 3 } + +--*************************************************************** +-- IP ATM MARS Server Map Object Definitions +--*************************************************************** + +marsServerMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsServerMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table caches mappings between IP multicast + address to a list of MCS ATM addresses that are + configured or dynamically learned from the MARS. + This address resolution is used for the server map. + It supports the mapping of a block of multicast + group addresses to a MCS address. In the case + where a group block is associated with multiple + MCSs, several entries are used to representing the + relationship." + ::= { marsObjects 4 } + +marsServerMapEntry OBJECT-TYPE + SYNTAX MarsServerMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry row contains attributes associated with + the mapping between a multicast group block and an + MCS address." + INDEX { marsIndex, + marsIfIndex, + marsMcMinGrpAddr, + marsMcMaxGrpAddr, + marsServerMapAtmAddr } + ::= { marsServerMapTable 1 } + +MarsServerMapEntry ::= + SEQUENCE { + marsServerMapAtmAddr AtmAddr, + marsServerMapRowType INTEGER, + marsServerMapRowStatus RowStatus + } + +marsServerMapAtmAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mapped MCS ATM address." + ::= { marsServerMapEntry 1 } + +marsServerMapRowType OBJECT-TYPE + SYNTAX INTEGER { + static (1), + dynamic (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Method in which this entry row is created. The + 'static (1)' indicates that this row is created + through configuration. The 'dynamic (2)' indicates + that the row is created as the result of group + address updates received at this MARS." + ::= { marsServerMapEntry 2 } + +marsServerMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + This object must not be set to 'active' until + instances of all corresponding columns in the + row of this table are appropriately configured. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + with the following exception. That is, rows + for which the corresponding instance of + marsServerMapRowType has a value of 'dynamic' + can not be modified or deleted." + ::= { marsServerMapEntry 3 } + +--*************************************************************** +-- IP ATM MARS VC Object Definition Table +--*************************************************************** + +marsVcTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about open virtual circuits + (VCs) that a MARS has. For point to point circuit, each + entry represents a single VC connection between this MARS + ATM address to another party's ATM address. In the case of + point to multipoint connection where a ControlVc is attached + with multiple leaf nodes, several entries are used to + represent the relationship. An example of point to + multi-point VC represented in a table is shown below. + + MARS VPI/VCI MARS Addr Party Addr + 1 0,1 m1 p1 + 1 0,1 m1 p2 + 1 0,1 m1 p3" + ::= { marsObjects 5 } + +marsVcEntry OBJECT-TYPE + SYNTAX MarsVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects contained in the entry are VC related attributes + such as VC signalling type, control VC type, idle timer, + negotiated MTU size, etc." + INDEX { marsIndex, + marsIfIndex, + marsVcVpi, + marsVcVci, + marsVcPartyAddr } + ::= { marsVcTable 1 } + +MarsVcEntry ::= + SEQUENCE { + marsVcVpi INTEGER, + marsVcVci INTEGER, + marsVcPartyAddr AtmAddr, + marsVcPartyAddrType INTEGER, + marsVcType INTEGER, + marsVcCtrlType INTEGER, + marsVcIdleTimer INTEGER, + marsVcCmi INTEGER, + marsVcEncapsType INTEGER, + marsVcNegotiatedMtu INTEGER, + marsVcRowStatus RowStatus + } + +marsVcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual path identifier (VPI). Since + a VPI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsVcEntry 1 } + +marsVcVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual circuit identifier (VCI). + Since a VCI can be numbered 0, this sub-index + can take a value of 0." + ::= { marsVcEntry 2 } + +marsVcPartyAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ATM party address in which this VC is linked. The + party type is identified by the marsVcPartyAddrType." + ::= { marsVcEntry 5 } + +marsVcPartyAddrType OBJECT-TYPE + SYNTAX INTEGER { + called (1), + calling (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The party type is associated with the party address. The + 'called (1)' indicates that the party address is a + destination address which implies that VC is originated + from this MARS. The 'calling (2)' indicates the VC was + initiated externally to this MARS. The party address is + the source address." + ::= { marsVcEntry 6 } + +marsVcType OBJECT-TYPE + SYNTAX INTEGER { + pvc (1), + svc (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Circuit Connection type: permanent virtual circuit or + switched virtual circuit." + ::= { marsVcEntry 7 } + +marsVcCtrlType OBJECT-TYPE + SYNTAX INTEGER { + pointToPointVC (1), + clusterControlVC (2), + serverControlVC (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control VC type used to specify a particular connection. + pointToPointVC (1): + used by the ATM endpoints (clients) or the MCS for + registration and queries. This VC is set up from + a MARS client and MCS to this MARS. It is a + bi-directional VC. + clusterControlVC (2): + used by MARS to issue asynchronous updates to ATM + an ATM client. This VC is established from the + MARs to the ATM client. + serverControlVC (3): + used by MARS to issue asynchronous update to ATM + multicast servers. This type of VC exists when at + least a MCS is being used." + ::= { marsVcEntry 8 } + +marsVcIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The idle timer associated with this VC. The minimum + suggested value is 1 minute and the recommended default + value is 20 minutes." + DEFVAL { 20 } + ::= { marsVcEntry 9 } + +marsVcCmi OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Cluster member identifier (CMI) which uniquely identifies + each endpoint attached to the cluster. This variable + applies to each 'leaf node' of an outgoing control VC." + ::= { marsVcEntry 10 } + +marsVcEncapsType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + llcSnap (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encapsulation type used when communicating over + this VC." + ::= { marsVcEntry 11 } + +marsVcNegotiatedMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The negotiated MTU when communicating over this VC." + ::= { marsVcEntry 12 } + +marsVcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured. + + While the marsVcIdleTimer in this conceptual + row can be modified irrespective of the value + of this object, all other objects in the row can + not be modified when this object has a value + of 'active'. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + with the following exception. That is, rows + for which the corresponding instance of + marsVcType has a value of 'svc' can not be + modified or deleted." + ::= { marsVcEntry 13 } + +--*************************************************************** +-- IP ATM MARS Registered Cluster Member List Table +--*************************************************************** + +marsRegClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsRegClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM identities of all the currently + registered cluster members at a MARS. Each entry represents + one set of ATM identities associated with one cluster member + or the MARS client." + ::= { marsObjects 6 } + +marsRegClientEntry OBJECT-TYPE + SYNTAX MarsRegClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry row contains attributes associated with one + register cluster member." + INDEX { marsIndex, + marsIfIndex, + marsRegClientCmi} + ::= { marsRegClientTable 1 } + +MarsRegClientEntry ::= + SEQUENCE { + marsRegClientCmi INTEGER, + marsRegClientAtmAddr AtmAddr + } + +marsRegClientCmi OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This cluster member identifier is used as an auxiliary index + for the entry in this table." + ::= { marsRegClientEntry 1 } + +marsRegClientAtmAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The registered client's ATM address." + ::= { marsRegClientEntry 2 } + + +--*************************************************************** +-- IP ATM MARS Registered Server Member List Table +--*************************************************************** + +marsRegMcsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsRegMcsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM identities of all the currently + registered MCSs at a MARS. Each entry represents one set + of ATM identities associated with one MCS." + ::= { marsObjects 7 } + +marsRegMcsEntry OBJECT-TYPE + SYNTAX MarsRegMcsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry row contains attributes associated with one + registered MCS." + INDEX { marsIndex, + marsIfIndex, + marsRegMcsAtmAddr + } + ::= { marsRegMcsTable 1 } + +MarsRegMcsEntry ::= + SEQUENCE { + marsRegMcsAtmAddr AtmAddr + } + +marsRegMcsAtmAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The registered MCS's ATM address." + ::= { marsRegMcsEntry 1 } + +--*************************************************************** +-- IP ATM MARS Statistics Object Definition Table +--*************************************************************** + +marsStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsStatEntry + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "The table contains statistics collected at MARS." + ::= { marsObjects 8 } + +marsStatEntry OBJECT-TYPE + SYNTAX MarsStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains statistics collected at one MARS." + INDEX { marsIndex, marsIfIndex } + ::= { marsStatTable 1 } + +MarsStatEntry ::= + SEQUENCE { + marsStatTxMultiMsgs Counter32, + marsStatTxGrpLstRplyMsgs Counter32, + marsStatTxRedirectMapMsgs Counter32, + marsStatTxMigrateMsgs Counter32, + marsStatTxNakMsgs Counter32, + marsStatTxJoinMsgs Counter32, + marsStatTxLeaveMsgs Counter32, + marsStatTxSjoinMsgs Counter32, + marsStatTxSleaveMsgs Counter32, + marsStatTxMservMsgs Counter32, + marsStatTxUnservMsgs Counter32, + marsStatRxReqMsgs Counter32, + marsStatRxGrpLstReqMsgs Counter32, + marsStatRxJoinMsgs Counter32, + marsStatRxLeaveMsgs Counter32, + marsStatRxMservMsgs Counter32, + marsStatRxUnservMsgs Counter32, + marsStatRxBlkJoinMsgs Counter32, + marsStatRegMemGroups Counter32, + marsStatRegMcsGroups Counter32 + } + +marsStatTxMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MULTI transmitted by this MARS." + ::= { marsStatEntry 1 } + +marsStatTxGrpLstRplyMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_GROUPLIST_REPLY messages transmitted + by this MARS." + ::= { marsStatEntry 2 } + +marsStatTxRedirectMapMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_REDIRECT_MAP messages transmitted by + this MARS." + ::= { marsStatEntry 3 } + +marsStatTxMigrateMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MIGRATE messages transmitted by + this MARS." + ::= { marsStatEntry 4 } + +marsStatTxNakMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_NAK messages transmitted by this MARS." + ::= { marsStatEntry 5 } + +marsStatTxJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_JOIN messages transmitted by this + MARS." + ::= { marsStatEntry 6 } + +marsStatTxLeaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_LEAVE messages transmitted by this + MARS." + ::= { marsStatEntry 7 } + +marsStatTxSjoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_SJOIN messages transmitted by this + MARS." + ::= { marsStatEntry 8 } + +marsStatTxSleaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_SLEAVE messages transmitted by this + MARS." + ::= { marsStatEntry 9 } + +marsStatTxMservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MSERV messages transmitted by this + MARS." + ::= { marsStatEntry 10 } + +marsStatTxUnservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_UNSERV messages transmitted by this + MARS." + ::= { marsStatEntry 11 } + +marsStatRxReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_REQUEST messages received by this + MARS." + ::= { marsStatEntry 12 } + +marsStatRxGrpLstReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_GROUPLIST_REQUEST messages received + by this MARS." + ::= { marsStatEntry 13 } + +marsStatRxJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_JOINS messages received by this MARS." + ::= { marsStatEntry 14 } + +marsStatRxLeaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_LEAVES messages received by this MARS." + ::= { marsStatEntry 15 } + +marsStatRxMservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MSERV messages received by this MARS." + ::= { marsStatEntry 16 } + +marsStatRxUnservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_UNSERV messages received by this MARS." + ::= { marsStatEntry 17 } + +marsStatRxBlkJoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of block joins messages received by this MARS." + ::= { marsStatEntry 18 } + +marsStatRegMemGroups OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of IP multicast groups with 1 or more joined + cluster members." + ::= { marsStatEntry 19 } + +marsStatRegMcsGroups OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of IP multicast groups with 1 or more joined + MCSs." + ::= { marsStatEntry 20 } + +--*************************************************************** +-- IP ATM MARS MCS Object Definitions +--*************************************************************** + +marsMcsObjects OBJECT IDENTIFIER ::= { marsMIB 3 } + +marsMcsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects defined in this table are used for + the management of a multicast server (MCS)." + ::= { marsMcsObjects 1 } + +marsMcsEntry OBJECT-TYPE + SYNTAX MarsMcsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a MCS and its associated + attributes." + INDEX { marsMcsIndex, marsMcsIfIndex } + ::= { marsMcsTable 1 } + +MarsMcsEntry ::= + SEQUENCE { + marsMcsIndex Integer32, + marsMcsIfIndex InterfaceIndex, + marsMcsAddr AtmAddr, + marsMcsDefaultMarsAddr AtmAddr, + marsMcsRegistration INTEGER, + marsMcsSsn Unsigned32, + marsMcsDefaultMtu INTEGER, + marsMcsFailureTimer INTEGER, + marsMcsRetranDelayTimer INTEGER, + marsMcsRdmMulReqAddRetrTimer INTEGER, + marsMcsRdmVcRevalidateTimer INTEGER, + marsMcsRegisterRetrInterval INTEGER, + marsMcsRegisterRetrLimit INTEGER, + marsMcsRegWithMarsRdmTimer INTEGER, + marsMcsForceWaitTimer INTEGER, + marsMcsIdleTimer INTEGER, + marsMcsLmtToMissRedirMapTimer INTEGER, + marsMcsRowStatus RowStatus + } + +marsMcsIndex OBJECT-TYPE + SYNTAX Integer32(1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used to identify instances + of the columnar objects in the MCS table." + ::= { marsMcsEntry 1 } + +marsMcsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that the MCS is + associated with." + ::= { marsMcsEntry 2 } + +marsMcsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM address associated with the MCS." + ::= { marsMcsEntry 3 } + +marsMcsDefaultMarsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default MARS ATM address which is needed to + setup the initial signalling path between a MCS + and its associated MARS." + ::= { marsMcsEntry 4 } + +marsMcsRegistration OBJECT-TYPE + SYNTAX INTEGER { + notRegistered (1), + registering (2), + registered (3), + reRegisteringFault (4), + reRegisteringRedirMap (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication with regards to the registration + STATUS of this MCS. The registration codes of + 'notRegistered (1)', 'registered (2)', and + registered (3) are self-explanatory. The + 'reRegisteringFault (4)' indicates the MCS is + in the process of re-registering with a MARS due + to some fault conditions. The 'reRegisteringRedMap + (5)' status code shows that MCS is re-registering + because it has received a MARS_REDIRECT_MAP message + and was told to register with a shift MARS." + ::= { marsMcsEntry 5 } + +marsMcsSsn OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The MCS own 32 bit Server Sequence Number. It + is used to track the Mars sequence number." + ::= { marsMcsEntry 6 } + +marsMcsDefaultMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum transmission unit (MTU) used + for this cluster. Note that the actual size used + for a VC between two members of the cluster may be + negotiated during connection setup and may be + different than this value. + Default value = 9180 bytes." + DEFVAL { 9180 } + ::= { marsMcsEntry 7 } + +marsMcsFailureTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A timer used to flag the failure of last MARS_MULTI + to arrive. Default value = 10 seconds (recommended)." + DEFVAL { 10 } + ::= { marsMcsEntry 8 } + +marsMcsRetranDelayTimer OBJECT-TYPE + SYNTAX INTEGER (5..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The delay timer for sending out new MARS_REQUEST + for the group after the MCS learned that there + is no other group in the cluster. The timer must + be set between 5 and 10 seconds inclusive." + ::= { marsMcsEntry 9 } + +marsMcsRdmMulReqAddRetrTimer OBJECT-TYPE + SYNTAX INTEGER (5..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The initial random L_MULTI_RQ/ADD retransmit timer + which can be set between 5 and 10 seconds inclusive." + ::= { marsMcsEntry 10 } + +marsMcsRdmVcRevalidateTimer OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The random time to set VC_revalidate flag. The + timer value ranges between 1 and 10 seconds + inclusive." + ::= { marsMcsEntry 11 } + +marsMcsRegisterRetrInterval OBJECT-TYPE + SYNTAX INTEGER(5..2147483647) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "MARS_MSERV/UNSERV retransmit interval. The minimum + and recommended values are 5 and 10 seconds, + respectively." + DEFVAL { 10 } + ::= { marsMcsEntry 12 } + +marsMcsRegisterRetrLimit OBJECT-TYPE + SYNTAX INTEGER (0..5) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "MARS_MSERV/UNSERV retransmit limit. The maximum value + is 5." + ::= { marsMcsEntry 13 } + +marsMcsRegWithMarsRdmTimer OBJECT-TYPE + SYNTAX INTEGER (1..10) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Random time for a MCS to register with a MARS." + ::= { marsMcsEntry 14 } + +marsMcsForceWaitTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Force wait if MARS re-registration is looping. + The minimum value is 1 minute." + ::= { marsMcsEntry 15 } + +marsMcsLmtToMissRedirMapTimer OBJECT-TYPE + SYNTAX INTEGER (1..4) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Timer limit for MCS to miss MARS_REDIRECT_MAPS." + ::= { marsMcsEntry 16 } + +marsMcsIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configurable inactivity timer associated with a + MCS. When a VC is created at this MCS, it gets + the idle timer value from this configurable timer. + The minimum suggested value is 1 minute and the + recommended default value is 20 minutes." + DEFVAL { 20 } + ::= { marsMcsEntry 17 } + +marsMcsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured and until the agent + has also created a corresponding row in the + marsMcsStatTable. + + When this object has a value of 'active', the + following columnar objects can not be modified: + + marsMcsDefaultMarsAddr, + marsMcsSsn, + marsMcsRegstration, + marsMcsDefaultMtu + + while other objects in this conceptual row can be + modified irrespective of the value of this object. + Deletion of this row is allowed regardless of + whether or not a row in any associated tables + (i.e., marsMcsVcTable) still exists or is in + use. Once this row is deleted, it is recommended + that the agent or the SNMP management station + (if possible) through the set command deletes + any stale rows that are associated with this + row." + ::= { marsMcsEntry 18 } + + +--**************************************************************** +-- IP ATM MARS MCS Multicast Group Address Object Definitions +--**************************************************************** + +marsMcsMcGrpTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of IP multicast group address + blocks associated by a MARS MCS. The MCS uses the + information contained in list to advertise its multicast + group service to the MARS. + Each row can be created or deleted via configuration." + ::= { marsMcsObjects 2 } + +marsMcsMcGrpEntry OBJECT-TYPE + SYNTAX MarsMcsMcGrpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a consecutive block of multicast + group addresses." + INDEX { marsMcsIndex, + marsMcsIfIndex, + marsMcsMcMinGrpAddr, + marsMcsMcMaxGrpAddr } + ::= { marsMcsMcGrpTable 1 } + +MarsMcsMcGrpEntry ::= + SEQUENCE { + marsMcsMcMinGrpAddr IpAddress, + marsMcsMcMaxGrpAddr IpAddress, + marsMcsMcGrpRowStatus RowStatus + } + +marsMcsMcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum multicast group address - the min and max + multicast forms multi-group block. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that this + block contains a single group address. Since the + block joins are no allowed by a MCS as implied in + the RFC2022, the MinGrpAddr and MaxGrpAddress should + be set to the same value at this time when an entry + row is created." + ::= { marsMcsMcGrpEntry 1 } + +marsMcsMcMaxGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum multicast group address - the min and max + multicast forms a multi-group block. If the + MinGrpAddr and MaxGrpAddr are the same, it indicates + that this block contains a single group address. + Since the block joins are no allowed by a MCS as + implied in the RFC2022, the MinGrpAddr and + MaxGrpAddress should be set to the same value at + this time when an entry row is created." + ::= { marsMcsMcGrpEntry 2 } + +marsMcsMcGrpRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create or delete a row in this + table. + + Since other objects in this row are not-accessible + 'index-objects', the value of this object has no + effect on whether those objects in this conceptual + row can be modified." + ::= { marsMcsMcGrpEntry 3 } + +--**************************************************************** +-- IP ATM MARS MCS Backup MARS Object Definitions +--**************************************************************** + +marsMcsBackupMarsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsBackupMarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of backup MARS addresses that + a MCS can make contact to in case of failure for + connecting to the primary server. The list of addresses + is in descending order of preference. It should be noted + that the backup list provided by the MARS to the MCS + via the MARS_REDIRECT_MAP message has a higher preference + than addresses that are manually configured into the MCS. + When such a list is received from the MARS, this information + should be inserted at the top of the list. + Each row can be created or deleted via configuration." + ::= { marsMcsObjects 3 } + +marsMcsBackupMarsEntry OBJECT-TYPE + SYNTAX MarsMcsBackupMarsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents an ATM address of a backup MARS." + INDEX { marsMcsIndex, + marsMcsIfIndex, + marsMcsBackupMarsPriority, + marsMcsBackupMarsAddr } + ::= { marsMcsBackupMarsTable 1 } + +MarsMcsBackupMarsEntry ::= + SEQUENCE { + marsMcsBackupMarsPriority Unsigned32, + marsMcsBackupMarsAddr AtmAddr, + marsMcsBackupMarsRowStatus RowStatus + } + +marsMcsBackupMarsPriority OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority associated with a backup MARS. A lower + priority value inidcates a higher preference." + ::= { marsMcsBackupMarsEntry 1 } + +marsMcsBackupMarsAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM address associated with a backup MARS." + ::= { marsMcsBackupMarsEntry 2 } + +marsMcsBackupMarsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create or delete a row in this + table. + + Since other objects in this row are not-accessible + 'index-objects', the value of this object has no + effect on whether those objects in this conceptual + row can be modified." + ::= { marsMcsBackupMarsEntry 3 } + +--*************************************************************** +-- IP ATM MARS MCS VC Object Definition Table +--*************************************************************** + +marsMcsVcTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about open virtual + circuits (VCs) that a MCS has. For point to + point circuit, each entry represents a single VC + connection between this MCS ATM address to another + party ATM address. In the case of point to + multipoint connection where a single source address + is associated with multiple destinations, several + entries are used to represent the relationship. An + example of point to multi-point VC represented in a + table is shown below. + + MCS VPI/VCI Grp Addr1/Addr2 Part Addr + 1 0,1 g1,g2 p1 + 1 0,1 g1,g2 p2 + 1 0,1 g1,g2 p3" + ::= { marsMcsObjects 4 } + +marsMcsVcEntry OBJECT-TYPE + SYNTAX MarsMcsVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The objects contained in the entry are VC related + attributes such as VC signalling type, control VC + type, idle timer, negotiated MTU size, etc." + INDEX { marsMcsIndex, + marsMcsIfIndex, + marsMcsVcVpi, + marsMcsVcVci, + marsMcsVcMinGrpAddr, + marsMcsVcMaxGrpAddr, + marsMcsVcPartyAddr } + ::= { marsMcsVcTable 1 } + +MarsMcsVcEntry ::= + SEQUENCE { + marsMcsVcVpi INTEGER, + marsMcsVcVci INTEGER, + marsMcsVcMinGrpAddr IpAddress, + marsMcsVcMaxGrpAddr IpAddress, + marsMcsVcPartyAddr AtmAddr, + marsMcsVcPartyAddrType INTEGER, + marsMcsVcType INTEGER, + marsMcsVcCtrlType INTEGER, + marsMcsVcIdleTimer INTEGER, + marsMcsVcRevalidate TruthValue, + marsMcsVcEncapsType INTEGER, + marsMcsVcNegotiatedMtu INTEGER, + marsMcsVcRowStatus RowStatus + } + +marsMcsVcVpi OBJECT-TYPE + SYNTAX INTEGER (0..4095) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual path identifier (VPI). Since + a VPI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsMcsVcEntry 1 } + +marsMcsVcVci OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of virtual circuit identifier (VCI). Since + a VCI can be numbered 0, this sub-index can take + a value of 0." + ::= { marsMcsVcEntry 2 } + +marsMcsVcMinGrpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Minimum IP multicast group address - the min and + max multicast forms a multi-group block which is + associated with a VC. If the MinGrpAddr and + MaxGrpAddr are the same, it indicates that the + size of multi-group block is 1, a single IP group." + ::= { marsMcsVcEntry 3 } + +marsMcsVcMaxGrpAddr OBJECT-TYPE + + + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maximum IP multicast group address - the min + and max multicast forms a multi-group block + which is associated with a VC. If the MinGrpAddr + and MaxGrpAddr are the same, it indicates that the + size of multi-group block is 1, a single IP group." + ::= { marsMcsVcEntry 4 } + +marsMcsVcPartyAddr OBJECT-TYPE + SYNTAX AtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ATM party address in which this VC is linked. + The party type is identified by the + marsMcsVcPartyAddrType." + ::= { marsMcsVcEntry 5 } + +marsMcsVcPartyAddrType OBJECT-TYPE + SYNTAX INTEGER { + called (1), + calling (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The party type is associated with the party address. + The called (1) indicates that the party address is + a destination address which implies that VC is + originated from this MCS. The calling (2) indicates + the VC was initiated externally to this MCS. In this + case, the party address is the source address." + ::= { marsMcsVcEntry 6 } + +marsMcsVcType OBJECT-TYPE + SYNTAX INTEGER { + pvc (1), + svc (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Circuit Connection type: permanent virtual circuit or + switched virtual circuit." + ::= { marsMcsVcEntry 7 } + + +marsMcsVcCtrlType OBJECT-TYPE + SYNTAX INTEGER { + pointToPointVC (1), + serverControlVC (2), + pointToMultiPointVC (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control VC type used to specify a particular connection. + pointToPointVC (1): + used by the ATM Clients for the registration and + queries. This VC or the initial signalling path is + set up from the source MCS to a MARS. It is + bi-directional. + serverControlVC (2): + used by a MARS to issue asynchronous updates to an + ATM Client. This VC is established from the MARS + to the MCS. + pointToMultiPointVC (3): + used by the client to transfer multicast data + packets from layer 3. This VC is established from + this VC to a cluster member." + ::= { marsMcsVcEntry 8 } + +marsMcsVcIdleTimer OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The idle timer associated with this VC. The minimum + suggested value is 1 minute and the recommended + default value is 20 minutes." + DEFVAL { 20 } + ::= { marsMcsVcEntry 9 } + +marsMcsVcRevalidate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A flag associated with an open and active multipoint + VC. It is checked every time a packet is queued for + transmission on that VC. The object has the value of + true (1) if revalidate is required and the value + false (2) otherwise." + ::= { marsMcsVcEntry 10 } + +marsMcsVcEncapsType OBJECT-TYPE + SYNTAX INTEGER { + other (1), + llcSnap (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encapsulation type used when communicating over + this VC." + ::= { marsMcsVcEntry 11 } + +marsMcsVcNegotiatedMtu OBJECT-TYPE + SYNTAX INTEGER (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The negotiated MTU when communicating over this VC." + ::= { marsMcsVcEntry 12 } + +marsMcsVcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object is used to create, delete or modify a + row in this table. + A row cannot be made 'active' until instances of + all corresponding columns in the row of this table + are appropriately configured. + + While objects: marsMcsVcIdleTimer and + marsMcsVcRevalidate in this conceptual row can + be modified irrespective of the value of this + object, all other objects in the row can not be + modified when this object has a value of 'active'. + + It is possible for an SNMP management station + to set the row to 'notInService' and modify + the entry and then set it back to 'active' + with the following exception. That is, rows + for which the corresponding instance of + marsMcsVcType has a value of 'svc' can not + be modified or deleted." + ::= { marsMcsVcEntry 13 } + +--*************************************************************** +-- IP ATM MARS MCS Statistics Definition Table +--*************************************************************** + +marsMcsStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF MarsMcsStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table contains statistics collected at MARS MCSs." + ::= { marsMcsObjects 5 } + +marsMcsStatEntry OBJECT-TYPE + SYNTAX MarsMcsStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains statistics collected at one + MARS MCS." + INDEX { marsMcsIndex, marsMcsIfIndex } + ::= { marsMcsStatTable 1 } + +MarsMcsStatEntry ::= + SEQUENCE { + marsMcsStatTxReqMsgs Counter32, + marsMcsStatTxMservMsgs Counter32, + marsMcsStatTxUnservMsgs Counter32, + marsMcsStatRxMultiMsgs Counter32, + marsMcsStatRxSjoinMsgs Counter32, + marsMcsStatRxSleaveMsgs Counter32, + marsMcsStatRxNakMsgs Counter32, + marsMcsStatRxMigrateMsgs Counter32, + marsMcsStatFailMultiMsgs Counter32 + } + +marsMcsStatTxReqMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_REQUEST messages transmitted + from this MCS." + ::= { marsMcsStatEntry 1 } + +marsMcsStatTxMservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MSERV messages transmitted from + this MCS." + ::= { marsMcsStatEntry 2 } + +marsMcsStatTxUnservMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_UNSERV messages transmitted from + this MCS." + ::= { marsMcsStatEntry 3 } + +marsMcsStatRxMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MULTI messages received by + this MCS." + ::= { marsMcsStatEntry 4 } + +marsMcsStatRxSjoinMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_SJOIN messages received by + this MCS." + ::= { marsMcsStatEntry 5 } + +marsMcsStatRxSleaveMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_SLEAVE messages received + by this MCS." + ::= { marsMcsStatEntry 6 } + +marsMcsStatRxNakMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_NAK messages received + by this MCS." + ::= { marsMcsStatEntry 7 } + +marsMcsStatRxMigrateMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of MARS_MIGRATE messages received + by this MCS." + ::= { marsMcsStatEntry 8 } + +marsMcsStatFailMultiMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of timeouts occurred indicating + failure of the last MARS_MULTI to arrive." + ::= { marsMcsStatEntry 9 } + +--*************************************************************** +-- IP ATM MARS Notification Definitions +--*************************************************************** + +marsTrapInfo OBJECT IDENTIFIER ::= { marsMIB 0 } + +marsFaultTrap NOTIFICATION-TYPE + OBJECTS { + marsAddr, + marsServStatus + } + STATUS current + DESCRIPTION + "This trap/inform is sent to the manager whenever + there is a fault condition occurred on a MARS." + ::= { marsTrapInfo 1 } + +--*************************************************************** +-- IP ATM MARS Conformance Definitions +--*************************************************************** + +marsConformance OBJECT IDENTIFIER ::= { marsMIB 4 } +marsClientConformance OBJECT IDENTIFIER ::= { marsConformance 1 } +marsServerConformance OBJECT IDENTIFIER ::= { marsConformance 2 } +marsMcsConformance OBJECT IDENTIFIER ::= { marsConformance 3 } + +marsClientCompliances OBJECT IDENTIFIER ::= { marsClientConformance 1 } +marsClientGroups OBJECT IDENTIFIER ::= { marsClientConformance 2 } + +marsServerCompliances OBJECT IDENTIFIER ::= { marsServerConformance 1 } + + +marsServerGroups OBJECT IDENTIFIER ::= { marsServerConformance 2 } + +marsMcsCompliances OBJECT IDENTIFIER ::= { marsMcsConformance 1 } +marsMcsGroups OBJECT IDENTIFIER ::= { marsMcsConformance 2 } + +--*************************************************************** +-- MARS Client Compliance Statements +--*************************************************************** + +marsClientCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that are required + for the management of MARS clients." + MODULE + MANDATORY-GROUPS { + marsClientGroup + } + + OBJECT marsClientAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientDefaultMarsAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientHsn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRegistration + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientCmi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientDefaultMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + OBJECT marsClientFailureTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRetranDelayTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRdmMulReqAddRetrTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRdmVcRevalidateTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientJoinLeaveRetrInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientJoinLeaveRetrLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRegWithMarsRdmTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientForceWaitTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientLmtToMissRedirMapTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientMcGrpRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientBackupMarsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcCtrlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcRevalidate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcEncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcNegotiatedMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsClientVcRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { marsClientCompliances 1 } + +marsClientGroup OBJECT-GROUP + OBJECTS { + marsClientAddr, + marsClientDefaultMarsAddr, + marsClientHsn, + marsClientRegistration, + marsClientCmi, + marsClientDefaultMtu, + marsClientFailureTimer, + marsClientRetranDelayTimer, + marsClientRdmMulReqAddRetrTimer, + marsClientRdmVcRevalidateTimer, + marsClientJoinLeaveRetrInterval, + marsClientJoinLeaveRetrLimit, + marsClientRegWithMarsRdmTimer, + marsClientForceWaitTimer, + marsClientIdleTimer, + marsClientLmtToMissRedirMapTimer, + marsClientRowStatus, + marsClientMcGrpRowStatus, + marsClientBackupMarsRowStatus, + marsClientVcPartyAddrType, + marsClientVcType, + marsClientVcCtrlType, + marsClientVcIdleTimer, + marsClientVcRevalidate, + marsClientVcEncapsType, + marsClientVcNegotiatedMtu, + marsClientVcRowStatus, + marsClientStatTxReqMsgs, + marsClientStatTxJoinMsgs, + marsClientStatTxLeaveMsgs, + marsClientStatTxGrpLstReqMsgs, + marsClientStatRxJoinMsgs, + marsClientStatRxLeaveMsgs, + marsClientStatRxMultiMsgs, + marsClientStatRxNakMsgs, + marsClientStatRxGrpLstRplyMsgs, + marsClientStatRxMigrateMsgs, + marsClientStatFailMultiMsgs + } + STATUS current + DESCRIPTION + "A collection of objects to be implemented in a MIB + for the management of MARS clients." + ::= { marsClientGroups 1 } + +--*************************************************************** +-- MARS Server Compliance Statements +--*************************************************************** + +marsServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that are required + for the management of MARS servers." + MODULE -- this module + MANDATORY-GROUPS { + marsServerGroup, + marsServerEventGroup + } + + OBJECT marsAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsLocal + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsRedirMapMsgTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsCsn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsSsn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcGrpAddrUsage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcGrpRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsHostMapRowType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsHostMapRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServerMapRowType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsServerMapRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcPartyAddrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcCtrlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcCmi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT marsVcEncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcNegotiatedMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsVcRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { marsServerCompliances 1 } + +marsServerGroup OBJECT-GROUP + OBJECTS { + marsAddr, + marsLocal, + marsServStatus, + marsServType, + marsServPriority, + marsRedirMapMsgTimer, + marsCsn, + marsSsn, + marsRowStatus, + marsMcGrpAddrUsage, + marsMcGrpRxLayer3GrpSets, + marsMcGrpRxLayer3GrpResets, + marsMcGrpRowStatus, + marsHostMapRowType, + marsHostMapRowStatus, + marsServerMapRowType, + marsServerMapRowStatus, + marsVcPartyAddrType, + marsVcType, + marsVcCtrlType, + marsVcIdleTimer, + marsVcCmi, + marsVcEncapsType, + marsVcNegotiatedMtu, + marsVcRowStatus, + marsRegClientAtmAddr, + marsRegMcsAtmAddr, + marsStatTxMultiMsgs, + marsStatTxGrpLstRplyMsgs, + marsStatTxRedirectMapMsgs, + marsStatTxMigrateMsgs, + marsStatTxNakMsgs, + marsStatTxJoinMsgs, + marsStatTxLeaveMsgs, + marsStatTxSjoinMsgs, + marsStatTxSleaveMsgs, + marsStatTxMservMsgs, + marsStatTxUnservMsgs, + marsStatRxReqMsgs, + marsStatRxGrpLstReqMsgs, + marsStatRxJoinMsgs, + marsStatRxLeaveMsgs, + marsStatRxMservMsgs, + marsStatRxUnservMsgs, + marsStatRxBlkJoinMsgs, + marsStatRegMemGroups, + marsStatRegMcsGroups + } + STATUS current + DESCRIPTION + "A collection of objects to be implemented in a MIB + for the management of MARS servers." + ::= { marsServerGroups 1 } + +marsServerEventGroup NOTIFICATION-GROUP + NOTIFICATIONS { marsFaultTrap } + STATUS current + DESCRIPTION + "A collection of events that can be generated from + a MARS server." + ::= { marsServerGroups 2 } + +--*************************************************************** +-- MARS Multicast Server (MCS) Compliance Statements +--*************************************************************** + +marsMcsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that are required + for the management of MARS multicast servers (MCS)." + MODULE + MANDATORY-GROUPS { + marsMcsGroup + } + + OBJECT marsMcsAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsDefaultMarsAddr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRegistration + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsSsn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsDefaultMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsFailureTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRetranDelayTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRdmMulReqAddRetrTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRdmVcRevalidateTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRegisterRetrInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT marsMcsRegisterRetrLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsForceWaitTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsLmtToMissRedirMapTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsMcGrpRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsBackupMarsRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcPartyAddrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcCtrlType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcIdleTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcRevalidate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcEncapsType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcNegotiatedMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT marsMcsVcRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { marsMcsCompliances 1 } + +marsMcsGroup OBJECT-GROUP + OBJECTS { + marsMcsAddr, + marsMcsDefaultMarsAddr, + marsMcsRegistration, + marsMcsSsn , + marsMcsDefaultMtu, + marsMcsFailureTimer, + marsMcsRetranDelayTimer, + marsMcsRdmMulReqAddRetrTimer, + marsMcsRdmVcRevalidateTimer, + marsMcsRegisterRetrInterval, + marsMcsRegisterRetrLimit, + marsMcsRegWithMarsRdmTimer, + marsMcsForceWaitTimer, + marsMcsIdleTimer, + marsMcsLmtToMissRedirMapTimer, + marsMcsRowStatus, + marsMcsMcGrpRowStatus, + marsMcsVcPartyAddrType, + marsMcsBackupMarsRowStatus, + marsMcsVcType, + marsMcsVcCtrlType, + marsMcsVcIdleTimer, + marsMcsVcRevalidate, + marsMcsVcEncapsType, + marsMcsVcNegotiatedMtu, + marsMcsVcRowStatus, + marsMcsStatTxReqMsgs, + marsMcsStatTxMservMsgs, + marsMcsStatTxUnservMsgs, + marsMcsStatRxMultiMsgs, + marsMcsStatRxSjoinMsgs, + marsMcsStatRxSleaveMsgs, + marsMcsStatRxNakMsgs, + marsMcsStatRxMigrateMsgs, + marsMcsStatFailMultiMsgs + } + STATUS current + DESCRIPTION + "A collection of objects to be implemented in a MIB + for the management of MARS multicast servers (MCS)." + ::= { marsMcsGroups 1 } + + END diff --git a/mibs/ietf/IPMCAST-MIB b/mibs/ietf/IPMCAST-MIB new file mode 100644 index 0000000..a274203 --- /dev/null +++ b/mibs/ietf/IPMCAST-MIB @@ -0,0 +1,2519 @@ +IPMCAST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + mib-2, Unsigned32, Counter64, + Gauge32, TimeTicks FROM SNMPv2-SMI -- [RFC2578] + RowStatus, TruthValue, + StorageType, TimeStamp FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + CounterBasedGauge64 FROM HCNUM-TC -- [RFC2856] + InterfaceIndexOrZero, + InterfaceIndex FROM IF-MIB -- [RFC2863] + IANAipRouteProtocol, + IANAipMRouteProtocol FROM IANA-RTPROTO-MIB + SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + InetAddress, InetAddressType, + InetAddressPrefixLength, + InetZoneIndex, InetVersion FROM INET-ADDRESS-MIB -- [RFC4001] + LangTag FROM LANGTAG-TC-MIB; -- [RFC5131] + +ipMcastMIB MODULE-IDENTITY + LAST-UPDATED "200711090000Z" -- 9 November 2007 + ORGANIZATION "IETF MBONE Deployment (MBONED) Working Group" + CONTACT-INFO "David McWalter + Data Connection Limited + + + + 100 Church Street + Enfield, EN2 6BQ + UK + + Phone: +44 208 366 1177 + EMail: dmcw@dataconnection.com + + Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + US + + Phone: +1 425 703 8835 + EMail: dthaler@dthaler.microsoft.com + + Andrew Kessler + Cisco Systems + 425 E. Tasman Drive + San Jose, CA 95134 + US + + Phone: +1 408 526 5139 + EMail: kessler@cisco.com" + DESCRIPTION + "The MIB module for management of IP Multicast, including + multicast routing, data forwarding, and data reception. + + Copyright (C) The IETF Trust (2007). This version of this + MIB module is part of RFC 5132; see the RFC itself for full + legal notices." + REVISION "200711090000Z" -- 9 November 2007 + DESCRIPTION "Initial version, published as RFC 5132. + + This MIB module obsoletes IPMROUTE-STD-MIB defined by + [RFC2932]. Changes include the following: + + o This MIB module includes support for IPv6 addressing + and the IPv6 scoped address architecture. [RFC2932] + supported only IPv4. + + o This MIB module allows several multicast protocols + to perform routing on a single interface, where + [RFC2932] assumed each interface supported at most + one multicast routing protocol. Multicast routing + protocols are now per-route, see + ipMcastRouteProtocol. + + + + + o This MIB module includes objects that are not + specific to multicast routing. It allows management + of multicast function on systems that do not perform + routing, whereas [RFC2932] was restricted to + multicast routing. + + o This MIB module includes a table of Source-Specific + Multicast (SSM) address ranges to which SSM + semantics [RFC3569] should be applied. + + o This MIB module includes a table of local + applications that are receiving multicast data. + + o This MIB module includes a table of multicast scope + zones." + ::= { mib-2 168 } + +-- +-- Top-level structure of the MIB +-- + +ipMcast OBJECT IDENTIFIER ::= { ipMcastMIB 1 } + +ipMcastEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The enabled status of IP Multicast function on this + system. + + The storage type of this object is determined by + ipMcastDeviceConfigStorageType." + ::= { ipMcast 1 } + +ipMcastRouteEntryCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the ipMcastRouteTable. This can be + used to check for multicast routing activity, and to monitor + the multicast routing table size." + ::= { ipMcast 2 } + +ipMcastDeviceConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The storage type used for the global IP multicast + configuration of this device, comprised of the objects + listed below. If this storage type takes the value + 'permanent', write-access to the listed objects need not be + allowed. + + The objects described by this storage type are: + ipMcastEnabled." + DEFVAL { nonVolatile } + ::= { ipMcast 11 } + +-- +-- The Multicast Interface Table +-- + +ipMcastInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table used to manage the multicast + protocol active on an interface." + ::= { ipMcast 3 } + +ipMcastInterfaceEntry OBJECT-TYPE + SYNTAX IpMcastInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the multicast protocol + information for a particular interface. + + Per-interface multicast forwarding statistics are also + available in ipIfStatsTable." + REFERENCE "RFC 4293 ipIfStatsTable" + INDEX { ipMcastInterfaceIPVersion, + ipMcastInterfaceIfIndex } + ::= { ipMcastInterfaceTable 1 } + +IpMcastInterfaceEntry ::= SEQUENCE { + ipMcastInterfaceIPVersion InetVersion, + ipMcastInterfaceIfIndex InterfaceIndex, + ipMcastInterfaceTtl Unsigned32, + ipMcastInterfaceRateLimit Unsigned32, + ipMcastInterfaceStorageType StorageType +} + + + +ipMcastInterfaceIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of this row." + ::= { ipMcastInterfaceEntry 1 } + +ipMcastInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value that uniquely identifies the interface to + which this entry is applicable. The interface identified by + a particular value of this index is the same interface as + identified by the same value of the IF-MIB's ifIndex." + ::= { ipMcastInterfaceEntry 2 } + +ipMcastInterfaceTtl OBJECT-TYPE + SYNTAX Unsigned32 (0..256) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The datagram Time to Live (TTL) threshold for the + interface. Any IP multicast datagrams with a TTL (IPv4) or + Hop Limit (IPv6) less than this threshold will not be + forwarded out the interface. The default value of 0 means + all multicast packets are forwarded out the interface. A + value of 256 means that no multicast packets are forwarded + out the interface." + DEFVAL { 0 } + ::= { ipMcastInterfaceEntry 3 } + +ipMcastInterfaceRateLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The rate-limit, in kilobits per second, of forwarded + multicast traffic on the interface. A rate-limit of 0 + indicates that no rate limiting is done." + DEFVAL { 0 } + ::= { ipMcastInterfaceEntry 4 } + +ipMcastInterfaceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { ipMcastInterfaceEntry 5 } + +-- +-- The SSM Range Table +-- + +ipMcastSsmRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastSsmRangeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to create and manage the range(s) of + group addresses to which SSM semantics should be applied." + REFERENCE "RFC 3569" + ::= { ipMcast 4 } + +ipMcastSsmRangeEntry OBJECT-TYPE + SYNTAX IpMcastSsmRangeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing a range of group + addresses to which SSM semantics should be applied. + + Object Identifiers (OIDs) are limited to 128 + sub-identifiers, but this limit is not enforced by the + syntax of this entry. In practice, this does not present + a problem, because IP address types allowed by conformance + statements do not exceed this limit." + REFERENCE "RFC 3569" + INDEX { ipMcastSsmRangeAddressType, + ipMcastSsmRangeAddress, + ipMcastSsmRangePrefixLength } + ::= { ipMcastSsmRangeTable 1 } + +IpMcastSsmRangeEntry ::= SEQUENCE { + ipMcastSsmRangeAddressType InetAddressType, + ipMcastSsmRangeAddress InetAddress, + ipMcastSsmRangePrefixLength InetAddressPrefixLength, + ipMcastSsmRangeRowStatus RowStatus, + ipMcastSsmRangeStorageType StorageType +} + + + +ipMcastSsmRangeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the multicast group prefix." + ::= { ipMcastSsmRangeEntry 1 } + +ipMcastSsmRangeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address which, when combined with + ipMcastSsmRangePrefixLength, gives the group prefix for this + SSM range. The InetAddressType is given by + ipMcastSsmRangeAddressType. + + This address object is only significant up to + ipMcastSsmRangePrefixLength bits. The remaining address + bits are set to zero. This is especially important for this + index field, which is part of the index of this entry. Any + non-zero bits would signify an entirely different entry. + + For IPv6 SSM address ranges, only ranges prefixed by + FF3x::/16 are permitted, where 'x' is a valid IPv6 RFC 4291 + multicast address scope. The syntax of the address range is + given by RFC 3306, Sections 4 and 7. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + SSM range entry applies only within the given zone. Zone + index zero is not valid in this table. + + If non-global scope SSM range entries are present, then + consistent ipMcastBoundaryTable entries are required on + routers at the zone boundary." + REFERENCE "RFC 2365, RFC 4291 Section 2.7, RFC 3306 Sections 4, 6, + and 7" + ::= { ipMcastSsmRangeEntry 2 } + +ipMcastSsmRangePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + + + + ipMcastSsmRangeAddress, gives the group prefix for this SSM + range. + + The InetAddressType is given by ipMcastSsmRangeAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be in the range 8..128." + REFERENCE "RFC 2365, RFC 4291 Section 2.7, RFC 3306 Sections 4, 6, + and 7" + ::= { ipMcastSsmRangeEntry 3 } + +ipMcastSsmRangeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. + + This status object can be set to active(1) without setting + any other columnar objects in this entry. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { ipMcastSsmRangeEntry 4 } + +ipMcastSsmRangeStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { ipMcastSsmRangeEntry 5 } + +-- +-- The IP Multicast Routing Table +-- + +ipMcastRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing multicast routing + information for IP datagrams sent by particular sources + + + + to the IP multicast groups known to this router." + ::= { ipMcast 5 } + +ipMcastRouteEntry OBJECT-TYPE + SYNTAX IpMcastRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the multicast routing + information for IP datagrams from a particular source and + addressed to a particular IP multicast group address. + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + INDEX { ipMcastRouteGroupAddressType, + ipMcastRouteGroup, + ipMcastRouteGroupPrefixLength, + ipMcastRouteSourceAddressType, + ipMcastRouteSource, + ipMcastRouteSourcePrefixLength } + ::= { ipMcastRouteTable 1 } + +IpMcastRouteEntry ::= SEQUENCE { + ipMcastRouteGroupAddressType InetAddressType, + ipMcastRouteGroup InetAddress, + ipMcastRouteGroupPrefixLength InetAddressPrefixLength, + ipMcastRouteSourceAddressType InetAddressType, + ipMcastRouteSource InetAddress, + ipMcastRouteSourcePrefixLength InetAddressPrefixLength, + ipMcastRouteUpstreamNeighborType InetAddressType, + ipMcastRouteUpstreamNeighbor InetAddress, + ipMcastRouteInIfIndex InterfaceIndexOrZero, + ipMcastRouteTimeStamp TimeStamp, + ipMcastRouteExpiryTime TimeTicks, + ipMcastRouteProtocol IANAipMRouteProtocol, + ipMcastRouteRtProtocol IANAipRouteProtocol, + ipMcastRouteRtAddressType InetAddressType, + ipMcastRouteRtAddress InetAddress, + ipMcastRouteRtPrefixLength InetAddressPrefixLength, + ipMcastRouteRtType INTEGER, + ipMcastRouteOctets Counter64, + ipMcastRoutePkts Counter64, + ipMcastRouteTtlDropOctets Counter64, + ipMcastRouteTtlDropPackets Counter64, + ipMcastRouteDifferentInIfOctets Counter64, + ipMcastRouteDifferentInIfPackets Counter64, + + + + ipMcastRouteBps CounterBasedGauge64 +} + +ipMcastRouteGroupAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteGroup. Legal values correspond to + the subset of address families for which multicast + forwarding is supported." + ::= { ipMcastRouteEntry 1 } + +ipMcastRouteGroup OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address which, when combined with + the corresponding value specified in + ipMcastRouteGroupPrefixLength, identifies the groups for + which this entry contains multicast routing information. + + This address object is only significant up to + ipMcastRouteGroupPrefixLength bits. The remaining address + bits are set to zero. This is especially important for this + index field, which is part of the index of this entry. Any + non-zero bits would signify an entirely different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + forwarding state applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteEntry 2 } + +ipMcastRouteGroupPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value of ipMcastRouteGroup, identifies the + groups for which this entry contains multicast routing + information. + + The InetAddressType is given by + + + + ipMcastRouteGroupAddressType. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." + ::= { ipMcastRouteEntry 3 } + +ipMcastRouteSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteSource. + + A value of unknown(0) indicates a non-source-specific entry, + corresponding to all sources in the group. Otherwise, the + value MUST be the same as the value of + ipMcastRouteGroupType." + ::= { ipMcastRouteEntry 4 } + +ipMcastRouteSource OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address which, when combined with the + corresponding value of ipMcastRouteSourcePrefixLength, + identifies the sources for which this entry contains + multicast routing information. + + This address object is only significant up to + ipMcastRouteSourcePrefixLength bits. The remaining address + bits are set to zero. This is especially important for this + index field, which is part of the index of this entry. Any + non-zero bits would signify an entirely different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + source address applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteEntry 5 } + +ipMcastRouteSourcePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The length in bits of the mask which, when combined with + the corresponding value of ipMcastRouteSource, identifies + the sources for which this entry contains multicast routing + information. + + The InetAddressType is given by + ipMcastRouteSourceAddressType. For the value 'unknown', + this object must be zero. For values 'ipv4' and 'ipv4z', + this object must be in the range 4..32. For values 'ipv6' + and 'ipv6z', this object must be in the range 8..128." + ::= { ipMcastRouteEntry 6 } + +ipMcastRouteUpstreamNeighborType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteUpstreamNeighbor. + + An address type of unknown(0) indicates that the upstream + neighbor is unknown, for example in BIDIR-PIM." + REFERENCE "RFC 5015" + ::= { ipMcastRouteEntry 7 } + +ipMcastRouteUpstreamNeighbor OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the upstream neighbor (for example, RPF + neighbor) from which IP datagrams from these sources to + this multicast address are received." + ::= { ipMcastRouteEntry 8 } + +ipMcastRouteInIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the interface on which IP + datagrams sent by these sources to this multicast address + are received. A value of 0 indicates that datagrams are not + subject to an incoming interface check, but may be accepted + on multiple interfaces (for example, in BIDIR-PIM)." + REFERENCE "RFC 5015" + ::= { ipMcastRouteEntry 9 } + + + + +ipMcastRouteTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at which the multicast routing + information represented by this entry was learned by the + router. + + If this information was present at the most recent re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipMcastRouteEntry 10 } + +ipMcastRouteExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. The value 0 indicates that the entry is not + subject to aging. If ipMcastRouteNextHopState is pruned(1), + this object represents the remaining time until the prune + expires. If this timer expires, state reverts to + forwarding(2). Otherwise, this object represents the time + until this entry is removed from the table." + ::= { ipMcastRouteEntry 11 } + +ipMcastRouteProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The multicast routing protocol via which this multicast + forwarding entry was learned." + ::= { ipMcastRouteEntry 12 } + +ipMcastRouteRtProtocol OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which the route used to find the + upstream or parent interface for this multicast forwarding + entry was learned." + ::= { ipMcastRouteEntry 13 } + +ipMcastRouteRtAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteRtAddress." + ::= { ipMcastRouteEntry 14 } + +ipMcastRouteRtAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address portion of the route used to find the upstream + or parent interface for this multicast forwarding entry. + + This address object is only significant up to + ipMcastRouteRtPrefixLength bits. The remaining address bits + are set to zero. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + forwarding state applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteEntry 15 } + +ipMcastRouteRtPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length in bits of the mask associated with the route + used to find the upstream or parent interface for this + multicast forwarding entry. + + The InetAddressType is given by ipMcastRouteRtAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be in the range 8..128." + ::= { ipMcastRouteEntry 16 } + +ipMcastRouteRtType OBJECT-TYPE + SYNTAX INTEGER { + unicast (1), -- Unicast route used in multicast RIB + multicast (2) -- Multicast route + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The reason the given route was placed in the (logical) + multicast Routing Information Base (RIB). A value of + unicast means that the route would normally be placed only + in the unicast RIB, but was placed in the multicast RIB + due (instead or in addition) to local configuration, such as + when running PIM over RIP. A value of multicast means that + the route was explicitly added to the multicast RIB by the + routing protocol, such as the Distance Vector Multicast + Routing Protocol (DVMRP) or Multiprotocol BGP." + ::= { ipMcastRouteEntry 17 } + +ipMcastRouteOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in IP datagrams that were + received from these sources and addressed to this multicast + group address, and which were forwarded by this router. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + ::= { ipMcastRouteEntry 18 } + +ipMcastRoutePkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets routed using this multicast route + entry. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + ::= { ipMcastRouteEntry 19 } + +ipMcastRouteTtlDropOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of octets contained in IP datagrams that this + router has received from these sources and addressed to this + multicast group address, which were dropped because the TTL + (IPv4) or Hop Limit (IPv6) was decremented to zero, or to a + value less than ipMcastInterfaceTtl for all next hops. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + ::= { ipMcastRouteEntry 20 } + +ipMcastRouteTtlDropPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that this router has received from + these sources and addressed to this multicast group address, + which were dropped because the TTL (IPv4) or Hop Limit + (IPv6) was decremented to zero, or to a value less than + ipMcastInterfaceTtl for all next hops. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + ::= { ipMcastRouteEntry 21 } + +ipMcastRouteDifferentInIfOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in IP datagrams that this + router has received from these sources and addressed to this + multicast group address, which were dropped because they + were received on an unexpected interface. + + For RPF checking protocols (such as PIM-SM), these packets + arrived on interfaces other than ipMcastRouteInIfIndex, and + were dropped because of this failed RPF check. (RPF paths + are 'Reverse Path Forwarding' paths; the unicast routes to + the expected origin of multicast data flows). + + + + + Other protocols may drop packets on an incoming interface + check for different reasons (for example, BIDIR-PIM performs + a DF check on receipt of packets). All packets dropped as a + result of an incoming interface check are counted here. + + If this counter increases rapidly, this indicates a problem. + A significant quantity of multicast data is arriving at this + router on unexpected interfaces, and is not being forwarded. + + For guidance, if the rate of increase of this counter + exceeds 1% of the rate of increase of ipMcastRouteOctets, + then there are multicast routing problems that require + investigation. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + REFERENCE "RFC 4601 and RFC 5015" + ::= { ipMcastRouteEntry 22 } + +ipMcastRouteDifferentInIfPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which this router has received from + these sources and addressed to this multicast group address, + which were dropped because they were received on an + unexpected interface. + + For RPF checking protocols (such as PIM-SM), these packets + arrived on interfaces other than ipMcastRouteInIfIndex, and + were dropped because of this failed RPF check. (RPF paths + are 'Reverse Path Forwarding' path; the unicast routes to + the expected origin of multicast data flows). + + Other protocols may drop packets on an incoming interface + check for different reasons (for example, BIDIR-PIM performs + a DF check on receipt of packets). All packets dropped as a + result of an incoming interface check are counted here. + + If this counter increases rapidly, this indicates a problem. + A significant quantity of multicast data is arriving at this + router on unexpected interfaces, and is not being forwarded. + + For guidance, if the rate of increase of this counter + + + + exceeds 1% of the rate of increase of ipMcastRoutePkts, then + there are multicast routing problems that require + investigation. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteTimeStamp." + REFERENCE "RFC 4601 and RFC 5015" + ::= { ipMcastRouteEntry 23 } + +ipMcastRouteBps OBJECT-TYPE + SYNTAX CounterBasedGauge64 + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Bits per second forwarded by this router using this + multicast routing entry. + + This value is a sample; it is the number of bits forwarded + during the last whole 1 second sampling period. The value + during the current 1 second sampling period is not made + available until the period is completed. + + The quantity being sampled is the same as that measured by + ipMcastRouteOctets. The units and the sampling method are + different." + ::= { ipMcastRouteEntry 24 } +-- +-- The IP Multicast Routing Next Hop Table +-- + +ipMcastRouteNextHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on the + next-hops on outgoing interfaces for routing IP multicast + datagrams. Each entry is one of a list of next-hops on + outgoing interfaces for particular sources sending to a + particular multicast group address." + ::= { ipMcast 6 } + +ipMcastRouteNextHopEntry OBJECT-TYPE + SYNTAX IpMcastRouteNextHopEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the list of next-hops on + outgoing interfaces to which IP multicast datagrams from + particular sources to an IP multicast group address are + routed. + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + INDEX { ipMcastRouteNextHopGroupAddressType, + ipMcastRouteNextHopGroup, + ipMcastRouteNextHopGroupPrefixLength, + ipMcastRouteNextHopSourceAddressType, + ipMcastRouteNextHopSource, + ipMcastRouteNextHopSourcePrefixLength, + ipMcastRouteNextHopIfIndex, + ipMcastRouteNextHopAddressType, + ipMcastRouteNextHopAddress } + ::= { ipMcastRouteNextHopTable 1 } + +IpMcastRouteNextHopEntry ::= SEQUENCE { + ipMcastRouteNextHopGroupAddressType InetAddressType, + ipMcastRouteNextHopGroup InetAddress, + ipMcastRouteNextHopGroupPrefixLength InetAddressPrefixLength, + ipMcastRouteNextHopSourceAddressType InetAddressType, + ipMcastRouteNextHopSource InetAddress, + ipMcastRouteNextHopSourcePrefixLength InetAddressPrefixLength, + ipMcastRouteNextHopIfIndex InterfaceIndex, + ipMcastRouteNextHopAddressType InetAddressType, + ipMcastRouteNextHopAddress InetAddress, + ipMcastRouteNextHopState INTEGER, + ipMcastRouteNextHopTimeStamp TimeStamp, + ipMcastRouteNextHopExpiryTime TimeTicks, + ipMcastRouteNextHopClosestMemberHops Unsigned32, + ipMcastRouteNextHopProtocol IANAipMRouteProtocol, + ipMcastRouteNextHopOctets Counter64, + ipMcastRouteNextHopPkts Counter64 +} + +ipMcastRouteNextHopGroupAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + + + + contained in ipMcastRouteNextHopGroup. Legal values + correspond to the subset of address families for which + multicast forwarding is supported." + ::= { ipMcastRouteNextHopEntry 1 } + +ipMcastRouteNextHopGroup OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address which, when combined with + the corresponding value specified in + ipMcastRouteNextHopGroupPrefixLength, identifies the groups + for which this entry contains multicast forwarding + information. + + This address object is only significant up to + ipMcastRouteNextHopGroupPrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + forwarding state applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteNextHopEntry 2 } + +ipMcastRouteNextHopGroupPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value of ipMcastRouteGroup, identifies the + groups for which this entry contains multicast routing + information. + + The InetAddressType is given by + ipMcastRouteNextHopGroupAddressType. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." + ::= { ipMcastRouteNextHopEntry 3 } + +ipMcastRouteNextHopSourceAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteNextHopSource. + + A value of unknown(0) indicates a non-source-specific entry, + corresponding to all sources in the group. Otherwise, the + value MUST be the same as the value of + ipMcastRouteNextHopGroupType." + ::= { ipMcastRouteNextHopEntry 4 } + +ipMcastRouteNextHopSource OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address which, when combined with the + corresponding value of the mask specified in + ipMcastRouteNextHopSourcePrefixLength, identifies the + sources for which this entry specifies a next-hop on an + outgoing interface. + + This address object is only significant up to + ipMcastRouteNextHopSourcePrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + source address applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastRouteNextHopEntry 5 } + +ipMcastRouteNextHopSourcePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value specified in + ipMcastRouteNextHopSource, identifies the sources for which + this entry specifies a next-hop on an outgoing interface. + + + + + The InetAddressType is given by + ipMcastRouteNextHopSourceAddressType. For the value + 'unknown', this object must be zero. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." + ::= { ipMcastRouteNextHopEntry 6 } + +ipMcastRouteNextHopIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the interface for the outgoing + interface for this next-hop." + ::= { ipMcastRouteNextHopEntry 7 } + +ipMcastRouteNextHopAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastRouteNextHopAddress." + ::= { ipMcastRouteNextHopEntry 8 } + +ipMcastRouteNextHopAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the next-hop specific to this entry. For + most interfaces, this is identical to + ipMcastRouteNextHopGroup. Non-Broadcast Multi-Access + (NBMA) interfaces, however, may + have multiple next-hop addresses out a single outgoing + interface." + ::= { ipMcastRouteNextHopEntry 9 } + +ipMcastRouteNextHopState OBJECT-TYPE + SYNTAX INTEGER { pruned(1), forwarding(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the outgoing interface and next- + hop represented by this entry is currently being used to + forward IP datagrams. The value 'forwarding' indicates it + is currently being used; the value 'pruned' indicates it is + + + + not." + ::= { ipMcastRouteNextHopEntry 10 } + +ipMcastRouteNextHopTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at which the multicast routing + information represented by this entry was learned by the + router. + + If this information was present at the most recent re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipMcastRouteNextHopEntry 11 } + +ipMcastRouteNextHopExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. If ipMcastRouteNextHopState is pruned(1), the + remaining time until the prune expires and the state reverts + to forwarding(2). Otherwise, the remaining time until this + entry is removed from the table. The time remaining may be + copied from ipMcastRouteExpiryTime if the protocol in use + for this entry does not specify next-hop timers. The value + 0 indicates that the entry is not subject to aging." + ::= { ipMcastRouteNextHopEntry 12 } + +ipMcastRouteNextHopClosestMemberHops OBJECT-TYPE + SYNTAX Unsigned32 (0..256) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum number of hops between this router and any + member of this IP multicast group reached via this next-hop + on this outgoing interface. Any IP multicast datagrams for + the group that have a TTL (IPv4) or Hop Count (IPv6) less + than this number of hops will not be forwarded to this + next-hop. + + A value of 0 means all multicast datagrams are forwarded out + the interface. A value of 256 means that no multicast + datagrams are forwarded out the interface. + + + + + This is an optimization applied by multicast routing + protocols that explicitly track hop counts to downstream + listeners. Multicast protocols that are not aware of hop + counts to downstream listeners set this object to 0." + ::= { ipMcastRouteNextHopEntry 13 } + +ipMcastRouteNextHopProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which this next-hop was learned." + ::= { ipMcastRouteNextHopEntry 14 } + +ipMcastRouteNextHopOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have been + forwarded using this route. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteNextHopTimeStamp." + ::= { ipMcastRouteNextHopEntry 15 } + +ipMcastRouteNextHopPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which have been forwarded using this + route. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of routes being + removed and replaced, which can be detected by observing + the value of ipMcastRouteNextHopTimeStamp." + ::= { ipMcastRouteNextHopEntry 16 } + +-- +-- The IP Multicast Scope Boundary Table +-- + + + + +ipMcastBoundaryTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastBoundaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the system's multicast scope + zone boundaries." + REFERENCE "RFC 4007 Section 5" + ::= { ipMcast 7 } + +ipMcastBoundaryEntry OBJECT-TYPE + SYNTAX IpMcastBoundaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) describing one of this device's + multicast scope zone boundaries. + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + REFERENCE "RFC 2365 Section 5, RFC 4007 Section 5" + INDEX { ipMcastBoundaryIfIndex, + ipMcastBoundaryAddressType, + ipMcastBoundaryAddress, + ipMcastBoundaryAddressPrefixLength } + ::= { ipMcastBoundaryTable 1 } + +IpMcastBoundaryEntry ::= SEQUENCE { + ipMcastBoundaryIfIndex InterfaceIndex, + ipMcastBoundaryAddressType InetAddressType, + ipMcastBoundaryAddress InetAddress, + ipMcastBoundaryAddressPrefixLength InetAddressPrefixLength, + ipMcastBoundaryTimeStamp TimeStamp, + ipMcastBoundaryDroppedMcastOctets Counter64, + ipMcastBoundaryDroppedMcastPkts Counter64, + ipMcastBoundaryStatus RowStatus, + ipMcastBoundaryStorageType StorageType +} + +ipMcastBoundaryIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IfIndex value for the interface to which this boundary + applies. Packets with a destination address in the + + + + associated address/mask range will not be forwarded over + this interface. + + For IPv4, zone boundaries cut through links. Therefore, + this is an external interface. This may be either a + physical or virtual interface (tunnel, encapsulation, and + so forth.) + + For IPv6, zone boundaries cut through nodes. Therefore, + this is a virtual interface within the node. This is not + an external interface, either real or virtual. Packets + crossing this interface neither arrive at nor leave the + node, but only move between zones within the node." + REFERENCE "RFC 2365 Section 5, RFC 4007 Section 5" + ::= { ipMcastBoundaryEntry 1 } + +ipMcastBoundaryAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastBoundaryAddress. Legal values + correspond to the subset of address families for which + multicast forwarding is supported." + ::= { ipMcastBoundaryEntry 2 } + +ipMcastBoundaryAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address which, when combined with the + corresponding value of ipMcastBoundaryAddressPrefixLength, + identifies the group range for which the scoped boundary + exists. Scoped IPv4 multicast address ranges must be + prefixed by 239.0.0.0/8. Scoped IPv6 multicast address + ranges are FF0x::/16, where x is a valid RFC 4291 multicast + scope. + + An IPv6 address prefixed by FF1x::/16 is a non-permanently- + assigned address. An IPv6 address prefixed by FF3x::/16 is + a unicast-prefix-based multicast addresses. A zone boundary + for FF0x::/16 implies an identical boundary for these other + prefixes. No separate FF1x::/16 or FF3x::/16 entries exist + in this table. + + This address object is only significant up to + + + + ipMcastBoundaryAddressPrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry." + ::= { ipMcastBoundaryEntry 3 } + +ipMcastBoundaryAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which when, combined with + the corresponding value of ipMcastBoundaryAddress, + identifies the group range for which the scoped boundary + exists. + + The InetAddressType is given by ipMcastBoundaryAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." + ::= { ipMcastBoundaryEntry 4 } + +ipMcastBoundaryTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at which the multicast boundary + information represented by this entry was learned by the + router. + + If this information was present at the most recent re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ipMcastBoundaryEntry 5 } + +ipMcastBoundaryDroppedMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have been + dropped as a result of this zone boundary configuration. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of boundary + + + + configuration being removed and replaced, which can be + detected by observing the value of + ipMcastBoundaryTimeStamp." + ::= { ipMcastBoundaryEntry 6 } + +ipMcastBoundaryDroppedMcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of multicast packets that have been dropped as a + result of this zone boundary configuration. + + Discontinuities in this monotonically increasing value + occur at re-initialization of the management system. + Discontinuities can also occur as a result of boundary + configuration being removed and replaced, which can be + detected by observing the value of + ipMcastBoundaryTimeStamp." + ::= { ipMcastBoundaryEntry 7 } + +ipMcastBoundaryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. + + This status object can be set to active(1) without setting + any other columnar objects in this entry. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { ipMcastBoundaryEntry 8 } + +ipMcastBoundaryStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { ipMcastBoundaryEntry 9 } + +-- + + + +-- The IP Multicast Scope Name Table +-- + +ipMcastScopeNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing multicast scope names." + REFERENCE "RFC 4007 Section 4" + ::= { ipMcast 8 } + +ipMcastScopeNameEntry OBJECT-TYPE + SYNTAX IpMcastScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) that names a multicast address + scope. + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + REFERENCE "RFC 4007 Section 4" + INDEX { ipMcastScopeNameAddressType, + ipMcastScopeNameAddress, + ipMcastScopeNameAddressPrefixLength, + ipMcastScopeNameLanguage } + ::= { ipMcastScopeNameTable 1 } + +IpMcastScopeNameEntry ::= SEQUENCE { + ipMcastScopeNameAddressType InetAddressType, + ipMcastScopeNameAddress InetAddress, + ipMcastScopeNameAddressPrefixLength InetAddressPrefixLength, + ipMcastScopeNameLanguage LangTag, + ipMcastScopeNameString SnmpAdminString, + ipMcastScopeNameDefault TruthValue, + ipMcastScopeNameStatus RowStatus, + ipMcastScopeNameStorageType StorageType +} + +ipMcastScopeNameAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + + + + contained in ipMcastScopeNameAddress. Legal values + correspond to the subset of address families for which + multicast forwarding is supported." + ::= { ipMcastScopeNameEntry 1 } + +ipMcastScopeNameAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address which, when combined with the + corresponding value of ipMcastScopeNameAddressPrefixLength, + identifies the group range associated with the multicast + scope. Scoped IPv4 multicast address ranges must be + prefixed by 239.0.0.0/8. Scoped IPv6 multicast address + ranges are FF0x::/16, where x is a valid RFC 4291 multicast + scope. + + An IPv6 address prefixed by FF1x::/16 is a non-permanently- + assigned address. An IPv6 address prefixed by FF3x::/16 is + a unicast-prefix-based multicast addresses. A scope + FF0x::/16 implies an identical scope name for these other + prefixes. No separate FF1x::/16 or FF3x::/16 entries exist + in this table. + + This address object is only significant up to + ipMcastScopeNameAddressPrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry." + ::= { ipMcastScopeNameEntry 2 } + +ipMcastScopeNameAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value of ipMcastScopeNameAddress, + identifies the group range associated with the multicast + scope. + + The InetAddressType is given by ipMcastScopeNameAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." + ::= { ipMcastScopeNameEntry 3 } + + + +ipMcastScopeNameLanguage OBJECT-TYPE + SYNTAX LangTag + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Language tag associated with the scope name." + REFERENCE "RFC 4646" + ::= { ipMcastScopeNameEntry 4 } + +ipMcastScopeNameString OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The textual name associated with the multicast scope. The + value of this object should be suitable for displaying to + end-users, such as when allocating a multicast address in + this scope. + + When no name is specified, the default value of this object + for IPv4 should be the string 239.x.x.x/y with x and y + replaced with decimal values to describe the address and + mask length associated with the scope. + + When no name is specified, the default value of this object + for IPv6 should be the string FF0x::/16, with x replaced by + the hexadecimal value for the RFC 4291 multicast scope. + + An IPv6 address prefixed by FF1x::/16 is a non-permanently- + assigned address. An IPv6 address prefixed by FF3x::/16 is + a unicast-prefix-based multicast addresses. A scope + FF0x::/16 implies an identical scope name for these other + prefixes. No separate FF1x::/16 or FF3x::/16 entries exist + in this table." + REFERENCE "RFC 2365, RFC 3306 Section 4, RFC 4291 Section 2.7" + ::= { ipMcastScopeNameEntry 5 } + +ipMcastScopeNameDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If true, indicates a preference that the name in the + following language should be used by applications if no name + is available in a desired language." + DEFVAL { false } + ::= { ipMcastScopeNameEntry 6 } + + + + +ipMcastScopeNameStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. Before the row can be activated, + the object ipMcastScopeNameString must be set to a valid + value. All writeable objects in this entry can be modified + when the status is active(1)." + ::= { ipMcastScopeNameEntry 7 } + +ipMcastScopeNameStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { ipMcastScopeNameEntry 8 } + +-- +-- The Multicast Listeners Table +-- + +ipMcastLocalListenerTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastLocalListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing local applications or + services that have joined multicast groups as listeners. + + Entries exist for all addresses in the multicast range for + all applications and services as they are classified on this + device." + ::= { ipMcast 9 } + +ipMcastLocalListenerEntry OBJECT-TYPE + SYNTAX IpMcastLocalListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) identifying a local application + or service that has joined a multicast group as a listener. + + + + + OIDs are limited to 128 sub-identifiers, but this limit + is not enforced by the syntax of this entry. In practice, + this does not present a problem, because IP address types + allowed by conformance statements do not exceed this limit." + INDEX { ipMcastLocalListenerGroupAddressType, + ipMcastLocalListenerGroupAddress, + ipMcastLocalListenerSourceAddressType, + ipMcastLocalListenerSourceAddress, + ipMcastLocalListenerSourcePrefixLength, + ipMcastLocalListenerIfIndex, + ipMcastLocalListenerRunIndex } + ::= { ipMcastLocalListenerTable 1 } + +IpMcastLocalListenerEntry ::= SEQUENCE { + ipMcastLocalListenerGroupAddressType InetAddressType, + ipMcastLocalListenerGroupAddress InetAddress, + ipMcastLocalListenerSourceAddressType InetAddressType, + ipMcastLocalListenerSourceAddress InetAddress, + ipMcastLocalListenerSourcePrefixLength InetAddressPrefixLength, + ipMcastLocalListenerIfIndex InterfaceIndex, + ipMcastLocalListenerRunIndex Unsigned32 +} + +ipMcastLocalListenerGroupAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A value indicating the address family of the address + contained in ipMcastLocalListenerGroupAddress. Legal values + correspond to the subset of address families for which + multicast is supported." + ::= { ipMcastLocalListenerEntry 1 } + +ipMcastLocalListenerGroupAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group for which this entry specifies + locally joined applications or services." + ::= { ipMcastLocalListenerEntry 2 } + +ipMcastLocalListenerSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A value indicating the address family of the address + contained in ipMcastLocalListenerSource. + + A value of unknown(0) indicates a non-source-specific entry, + corresponding to all sources in the group. Otherwise, the + value MUST be the same as the value of + ipMcastLocalListenerGroupAddressType." + ::= { ipMcastLocalListenerEntry 3 } + +ipMcastLocalListenerSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address which, when combined with the + corresponding value of the mask specified in + ipMcastLocalListenerSourcePrefixLength, identifies the + sources for which this entry specifies a local listener. + + This address object is only significant up to + ipMcastLocalListenerSourcePrefixLength bits. The remaining + address bits are set to zero. This is especially important + for this index field, which is part of the index of this + entry. Any non-zero bits would signify an entirely + different entry. + + For addresses of type ipv4z or ipv6z, the appended zone + index is significant even though it lies beyond the prefix + length. The use of these address types indicate that this + listener address applies only within the given zone. Zone + index zero is not valid in this table." + ::= { ipMcastLocalListenerEntry 4 } + +ipMcastLocalListenerSourcePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined with + the corresponding value specified in + ipMcastLocalListenerSource, identifies the sources for which + this entry specifies a local listener. + + The InetAddressType is given by + ipMcastLocalListenerSourceAddressType. For the value + 'unknown', this object must be zero. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + + + + 8..128." + ::= { ipMcastLocalListenerEntry 5 } + +ipMcastLocalListenerIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IfIndex value of the interface for which this entry + specifies a local listener." + ::= { ipMcastLocalListenerEntry 6 } + +ipMcastLocalListenerRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value corresponding to a piece of software running + on this router or host system. Where possible, this should + be the system's native, unique identification number. + + This identifier is platform-specific. It may correspond to + a process ID or application instance number. + + A value of zero indicates that the application instance(s) + cannot be identified. A value of zero indicates that one or + more unidentified applications have joined the specified + multicast groups (for the specified sources) as listeners." + REFERENCE "RFC 2287 sysApplRunIndex" + ::= { ipMcastLocalListenerEntry 7 } + +-- +-- The Multicast Zone Table +-- + +ipMcastZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMcastZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing scope zones on this device." + REFERENCE "RFC 4007 Section 5" + ::= { ipMcast 10 } + +ipMcastZoneEntry OBJECT-TYPE + SYNTAX IpMcastZoneEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An entry (conceptual row) describing a scope zone on this + device." + REFERENCE "RFC 4007 Section 5" + INDEX { ipMcastZoneIndex } + ::= { ipMcastZoneTable 1 } + +IpMcastZoneEntry ::= SEQUENCE { + ipMcastZoneIndex InetZoneIndex, + ipMcastZoneScopeDefaultZoneIndex InetZoneIndex, + ipMcastZoneScopeAddressType InetAddressType, + ipMcastZoneScopeAddress InetAddress, + ipMcastZoneScopeAddressPrefixLength InetAddressPrefixLength +} + +ipMcastZoneIndex OBJECT-TYPE + SYNTAX InetZoneIndex (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This zone index uniquely identifies a zone on a device. + + Each zone is for a given scope. Scope-level information in + this table is for the unique scope that corresponds to this + zone. + + Zero is a special value used to request the default zone for + a given scope. Zero is not a valid value for this object. + + To test whether ipMcastZoneIndex is the default zone for + this scope, test whether ipMcastZoneIndex is equal to + ipMcastZoneScopeDefaultZoneIndex." + ::= { ipMcastZoneEntry 1 } + +ipMcastZoneScopeDefaultZoneIndex OBJECT-TYPE + SYNTAX InetZoneIndex (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The default zone index for this scope. This is the zone + that this device will use if the default (zero) zone is + requested for this scope. + + Zero is not a valid value for this object." + ::= { ipMcastZoneEntry 2 } + +ipMcastZoneScopeAddressType OBJECT-TYPE + SYNTAX InetAddressType + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address type for which this scope zone exists." + ::= { ipMcastZoneEntry 3 } + +ipMcastZoneScopeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The multicast group address which, when combined with + ipMcastZoneScopeAddressPrefixLength, gives the multicast + address range for this scope. The InetAddressType is given + by ipMcastZoneScopeAddressType. + + Scoped IPv4 multicast address ranges are prefixed by + 239.0.0.0/8. Scoped IPv6 multicast address ranges are + FF0x::/16, where x is a valid RFC 4291 multicast scope. + + An IPv6 address prefixed by FF1x::/16 is a non-permanently- + assigned address. An IPv6 address prefixed by FF3x::/16 is + a unicast-prefix-based multicast addresses. A scope + FF0x::/16 implies an identical scope for these other + prefixes. No separate FF1x::/16 or FF3x::/16 entries exist + in this table. + + This address object is only significant up to + ipMcastZoneScopeAddressPrefixLength bits. The remaining + address bits are set to zero." + REFERENCE "RFC 2365, RFC 3306 Section 4, RFC 4291 Section 2.7" + ::= { ipMcastZoneEntry 4 } + +ipMcastZoneScopeAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length in bits of the mask which, when combined + with ipMcastZoneScopeAddress, gives the multicast address + prefix for this scope. + + The InetAddressType is given by ipMcastZoneScopeAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." + ::= { ipMcastZoneEntry 5 } + + + + +-- +-- Conformance information +-- + +ipMcastMIBConformance + OBJECT IDENTIFIER ::= { ipMcastMIB 2 } +ipMcastMIBCompliances + OBJECT IDENTIFIER ::= { ipMcastMIBConformance 1 } +ipMcastMIBGroups OBJECT IDENTIFIER ::= { ipMcastMIBConformance 2 } + +-- +-- Compliance statements +-- + +ipMcastMIBComplianceHost MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts supporting IPMCAST-MIB. + + Support for either InetAddressType ipv4 or ipv6 is + mandatory; support for both InetAddressTypes ipv4 and ipv6 + is optional. Support for types ipv4z and ipv6z is + optional. + + -- OBJECT ipMcastLocalListenerGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerGroupAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerSourceAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6." + + MODULE -- this module + MANDATORY-GROUPS { ipMcastMIBLocalListenerGroup, + + + + ipMcastMIBBasicGroup } + + OBJECT ipMcastEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastDeviceConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP ipMcastMIBSsmGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBBoundaryIfGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBScopeNameGroup + DESCRIPTION + "This group is optional." + + ::= { ipMcastMIBCompliances 1 } + +ipMcastMIBComplianceRouter MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers supporting + IPMCAST-MIB. + + Support for either InetAddressType ipv4 or ipv6 is + mandatory; support for both InetAddressTypes ipv4 and ipv6 + is optional. Support for types ipv4z and ipv6z is + optional. + + -- OBJECT ipMcastSsmRangeAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), ipv4z(3), + -- ipv6z(4)} + + + + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastSsmRangeAddress + -- SYNTAX InetAddress (SIZE (4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopSourceAddressType + + + + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6." + + MODULE -- this module + MANDATORY-GROUPS { ipMcastMIBRouteProtoGroup, + ipMcastMIBBasicGroup, + ipMcastMIBSsmGroup, + ipMcastMIBRouteGroup } + + OBJECT ipMcastEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastDeviceConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceRateLimit + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastRouteUpstreamNeighborType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteUpstreamNeighbor + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteRtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteRtAddress + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastSsmRangeRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastSsmRangeStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP ipMcastMIBRouteDiagnosticsGroup + DESCRIPTION + "This group is not mandatory, but SHOULD be supported where + hardware permits." + + + + GROUP ipMcastMIBPktsOutGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBHopCountGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteOctetsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteBpsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBLocalListenerGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBBoundaryIfGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBScopeNameGroup + DESCRIPTION + "This group is optional." + + ::= { ipMcastMIBCompliances 2 } + +ipMcastMIBComplianceBorderRouter MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers on scope + boundaries supporting IPMCAST-MIB. + + Support for either InetAddressType ipv4z or ipv6z is + mandatory; support for both InetAddressTypes ipv4z and + ipv6z is optional. + + -- OBJECT ipMcastSsmRangeAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), ipv4z(3), + -- ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastSsmRangeAddress + -- SYNTAX InetAddress (SIZE (4|8|16|20)) + + + + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + + + + -- + -- OBJECT ipMcastRouteNextHopSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastBoundaryAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastBoundaryAddress + -- SYNTAX InetAddress (SIZE (4|16) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastScopeNameAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastScopeNameAddress + -- SYNTAX InetAddress (SIZE (4|16) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6." + + MODULE -- this module + MANDATORY-GROUPS { ipMcastMIBRouteProtoGroup, + ipMcastMIBBasicGroup, + ipMcastMIBSsmGroup, + ipMcastMIBRouteGroup, + ipMcastMIBBoundaryIfGroup, + ipMcastMIBScopeNameGroup } + + + + + OBJECT ipMcastEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastDeviceConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceRateLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastInterfaceStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastRouteUpstreamNeighborType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteUpstreamNeighbor + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteRtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteRtAddress + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + DESCRIPTION + + + + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastSsmRangeRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastSsmRangeStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP ipMcastMIBRouteDiagnosticsGroup + DESCRIPTION + "This group is not mandatory, but SHOULD be supported where + hardware permits." + + GROUP ipMcastMIBPktsOutGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBHopCountGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteOctetsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBRouteBpsGroup + DESCRIPTION + "This group is optional." + + GROUP ipMcastMIBLocalListenerGroup + DESCRIPTION + "This group is optional." + + OBJECT ipMcastZoneScopeAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "This compliance requires support for ipv4 or ipv6." + + OBJECT ipMcastZoneScopeAddress + SYNTAX InetAddress (SIZE (4|16)) + DESCRIPTION + "This compliance requires support for ipv4 or ipv6." + + + + + ::= { ipMcastMIBCompliances 3 } + +-- +-- Units of conformance +-- +ipMcastMIBBasicGroup OBJECT-GROUP + OBJECTS { ipMcastEnabled, + ipMcastRouteEntryCount, + ipMcastDeviceConfigStorageType + } + STATUS current + DESCRIPTION + "A collection of objects to support basic management of IP + Multicast protocols." + ::= { ipMcastMIBGroups 1 } + +ipMcastMIBSsmGroup OBJECT-GROUP + OBJECTS { ipMcastSsmRangeRowStatus, + ipMcastSsmRangeStorageType } + STATUS current + DESCRIPTION + "A collection of objects to support management of Source- + Specific Multicast routing." + ::= { ipMcastMIBGroups 2 } + +ipMcastMIBRouteGroup OBJECT-GROUP + OBJECTS { ipMcastInterfaceTtl, + ipMcastInterfaceRateLimit, + ipMcastInterfaceStorageType, + ipMcastRouteUpstreamNeighborType, + ipMcastRouteUpstreamNeighbor, + ipMcastRouteInIfIndex, + ipMcastRouteTimeStamp, + ipMcastRouteExpiryTime, + ipMcastRouteNextHopState, + ipMcastRouteNextHopTimeStamp, + ipMcastRouteNextHopExpiryTime + } + STATUS current + DESCRIPTION + "A collection of objects to support basic management of IP + Multicast routing." + ::= { ipMcastMIBGroups 3 } + +ipMcastMIBRouteDiagnosticsGroup OBJECT-GROUP + OBJECTS { ipMcastRoutePkts, + ipMcastRouteTtlDropPackets, + ipMcastRouteDifferentInIfPackets + + + + } + STATUS current + DESCRIPTION + "A collection of routing diagnostic packet counters." + ::= { ipMcastMIBGroups 4 } + +ipMcastMIBPktsOutGroup OBJECT-GROUP + OBJECTS { ipMcastRouteNextHopTimeStamp, + ipMcastRouteNextHopPkts } + STATUS current + DESCRIPTION + "A collection of objects to support management of packet + counters for each outgoing interface entry of a route." + ::= { ipMcastMIBGroups 5 } + +ipMcastMIBHopCountGroup OBJECT-GROUP + OBJECTS { ipMcastRouteNextHopClosestMemberHops } + STATUS current + DESCRIPTION + "A collection of objects to support management of the use of + hop counts in IP Multicast routing." + ::= { ipMcastMIBGroups 6 } + +ipMcastMIBRouteOctetsGroup OBJECT-GROUP + OBJECTS { ipMcastRouteTimeStamp, + ipMcastRouteOctets, + ipMcastRouteTtlDropOctets, + ipMcastRouteDifferentInIfOctets, + ipMcastRouteNextHopTimeStamp, + ipMcastRouteNextHopOctets } + STATUS current + DESCRIPTION + "A collection of objects to support management of octet + counters for each forwarding entry." + ::= { ipMcastMIBGroups 7 } + +ipMcastMIBRouteBpsGroup OBJECT-GROUP + OBJECTS { ipMcastRouteBps } + STATUS current + DESCRIPTION + "A collection of objects to support sampling of data rate + in bits per second for each forwarding entry." + ::= { ipMcastMIBGroups 8 } + +ipMcastMIBRouteProtoGroup OBJECT-GROUP + OBJECTS { ipMcastRouteProtocol, ipMcastRouteRtProtocol, + ipMcastRouteRtAddressType, ipMcastRouteRtAddress, + ipMcastRouteRtPrefixLength, ipMcastRouteRtType, + + + + ipMcastRouteNextHopProtocol } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + relationship between multicast routing information and the + IP Forwarding Table." + ::= { ipMcastMIBGroups 9 } + +ipMcastMIBLocalListenerGroup OBJECT-GROUP + OBJECTS { ipMcastLocalListenerRunIndex } + STATUS current + DESCRIPTION + "A collection of objects to support management of local + listeners on hosts or routers." + ::= { ipMcastMIBGroups 10 } + +ipMcastMIBBoundaryIfGroup OBJECT-GROUP + OBJECTS { ipMcastBoundaryTimeStamp, + ipMcastBoundaryDroppedMcastOctets, + ipMcastBoundaryDroppedMcastPkts, + ipMcastBoundaryStatus, + ipMcastBoundaryStorageType, + ipMcastZoneScopeDefaultZoneIndex, + ipMcastZoneScopeAddressType, + ipMcastZoneScopeAddress, + ipMcastZoneScopeAddressPrefixLength + } + STATUS current + DESCRIPTION + "A collection of objects to support management of multicast + scope zone boundaries." + ::= { ipMcastMIBGroups 11 } + +ipMcastMIBScopeNameGroup OBJECT-GROUP + OBJECTS { ipMcastScopeNameString, ipMcastScopeNameDefault, + ipMcastScopeNameStatus, ipMcastScopeNameStorageType } + STATUS current + DESCRIPTION + "A collection of objects to support management of multicast + address scope names." + ::= { ipMcastMIBGroups 12 } + +END diff --git a/mibs/ietf/IPMROUTE-STD-MIB b/mibs/ietf/IPMROUTE-STD-MIB new file mode 100644 index 0000000..6eb2c80 --- /dev/null +++ b/mibs/ietf/IPMROUTE-STD-MIB @@ -0,0 +1,906 @@ +IPMROUTE-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, + Integer32, Counter32, Counter64, Gauge32, + IpAddress, TimeTicks FROM SNMPv2-SMI + RowStatus, TEXTUAL-CONVENTION, + TruthValue FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InterfaceIndexOrZero, + InterfaceIndex FROM IF-MIB + IANAipRouteProtocol, + IANAipMRouteProtocol FROM IANA-RTPROTO-MIB; + +ipMRouteStdMIB MODULE-IDENTITY + LAST-UPDATED "200009220000Z" -- September 22, 2000 + ORGANIZATION "IETF IDMR Working Group" + CONTACT-INFO + " Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + US + + Phone: +1 425 703 8835 + EMail: dthaler@microsoft.com" + DESCRIPTION + "The MIB module for management of IP Multicast routing, but + independent of the specific multicast routing protocol in + use." + REVISION "200009220000Z" -- September 22, 2000 + DESCRIPTION + "Initial version, published as RFC 2932." + ::= { mib-2 83 } + +-- Textual Conventions + +LanguageTag ::= TEXTUAL-CONVENTION + + DISPLAY-HINT "100a" + STATUS current + DESCRIPTION + "An RFC 1766-style language tag, with all alphabetic + characters converted to lowercase. This restriction is + intended to make the lexical ordering imposed by SNMP useful + + + when applied to language tags. Note that it is + theoretically possible for a valid language tag to exceed + the allowed length of this syntax, and thus be impossible to + represent with this syntax. Sampling of language tags in + current use on the Internet suggests that this limit does + not pose a serious problem in practice." + SYNTAX OCTET STRING (SIZE (1..100)) + + +-- Top-level structure of the MIB + +ipMRouteMIBObjects OBJECT IDENTIFIER ::= { ipMRouteStdMIB 1 } + +ipMRoute OBJECT IDENTIFIER ::= { ipMRouteMIBObjects 1 } + +-- the IP Multicast Routing MIB-Group +-- +-- a collection of objects providing information about +-- IP Multicast Groups + + +ipMRouteEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The enabled status of IP Multicast routing on this router." + ::= { ipMRoute 1 } + +ipMRouteEntryCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the ipMRouteTable. This can be used + to monitor the multicast routing table size." + ::= { ipMRoute 7 } + +ipMRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing multicast routing + information for IP datagrams sent by particular sources to + the IP multicast groups known to this router." + ::= { ipMRoute 2 } + + + +ipMRouteEntry OBJECT-TYPE + SYNTAX IpMRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the multicast routing + information for IP datagrams from a particular source and + addressed to a particular IP multicast group address. + Discontinuities in counters in this entry can be detected by + observing the value of ipMRouteUpTime." + INDEX { ipMRouteGroup, + ipMRouteSource, + ipMRouteSourceMask } + ::= { ipMRouteTable 1 } + +IpMRouteEntry ::= SEQUENCE { + ipMRouteGroup IpAddress, + ipMRouteSource IpAddress, + ipMRouteSourceMask IpAddress, + ipMRouteUpstreamNeighbor IpAddress, + ipMRouteInIfIndex InterfaceIndexOrZero, + ipMRouteUpTime TimeTicks, + ipMRouteExpiryTime TimeTicks, + ipMRoutePkts Counter32, + ipMRouteDifferentInIfPackets Counter32, + ipMRouteOctets Counter32, + ipMRouteProtocol IANAipMRouteProtocol, + ipMRouteRtProto IANAipRouteProtocol, + ipMRouteRtAddress IpAddress, + ipMRouteRtMask IpAddress, + ipMRouteRtType INTEGER, + ipMRouteHCOctets Counter64 +} + +ipMRouteGroup OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address for which this entry + contains multicast routing information." + ::= { ipMRouteEntry 1 } + +ipMRouteSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "The network address which when combined with the + corresponding value of ipMRouteSourceMask identifies the + sources for which this entry contains multicast routing + information." + ::= { ipMRouteEntry 2 } + +ipMRouteSourceMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network mask which when combined with the corresponding + value of ipMRouteSource identifies the sources for which + this entry contains multicast routing information." + ::= { ipMRouteEntry 3 } + +ipMRouteUpstreamNeighbor OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the upstream neighbor (e.g., RPF neighbor) + from which IP datagrams from these sources to this multicast + address are received, or 0.0.0.0 if the upstream neighbor is + unknown (e.g., in CBT)." + ::= { ipMRouteEntry 4 } + +ipMRouteInIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the interface on which IP + datagrams sent by these sources to this multicast address + are received. A value of 0 indicates that datagrams are not + subject to an incoming interface check, but may be accepted + on multiple interfaces (e.g., in CBT)." + ::= { ipMRouteEntry 5 } + +ipMRouteUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the multicast routing information + represented by this entry was learned by the router." + ::= { ipMRouteEntry 6 } + + + +ipMRouteExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. The value 0 indicates that the entry is not + subject to aging." + ::= { ipMRouteEntry 7 } + +ipMRoutePkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which this router has received from + these sources and addressed to this multicast group + address." + ::= { ipMRouteEntry 8 } + +ipMRouteDifferentInIfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which this router has received from + these sources and addressed to this multicast group address, + which were dropped because they were not received on the + interface indicated by ipMRouteInIfIndex. Packets which are + not subject to an incoming interface check (e.g., using CBT) + are not counted." + ::= { ipMRouteEntry 9 } + +ipMRouteOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in IP datagrams which were + received from these sources and addressed to this multicast + group address, and which were forwarded by this router." + ::= { ipMRouteEntry 10 } + +ipMRouteProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The multicast routing protocol via which this multicast + forwarding entry was learned." + ::= { ipMRouteEntry 11 } + +ipMRouteRtProto OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which the route used to find the + upstream or parent interface for this multicast forwarding + entry was learned. Inclusion of values for routing + protocols is not intended to imply that those protocols need + be supported." + ::= { ipMRouteEntry 12 } + +ipMRouteRtAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address portion of the route used to find the upstream + or parent interface for this multicast forwarding entry." + ::= { ipMRouteEntry 13 } + +ipMRouteRtMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mask associated with the route used to find the upstream + or parent interface for this multicast forwarding entry." + ::= { ipMRouteEntry 14 } + +ipMRouteRtType OBJECT-TYPE + SYNTAX INTEGER { + unicast (1), -- Unicast route used in multicast RIB + multicast (2) -- Multicast route + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The reason the given route was placed in the (logical) + multicast Routing Information Base (RIB). A value of + unicast means that the route would normally be placed only + in the unicast RIB, but was placed in the multicast RIB + (instead or in addition) due to local configuration, such as + when running PIM over RIP. A value of multicast means that + + + the route was explicitly added to the multicast RIB by the + routing protocol, such as DVMRP or Multiprotocol BGP." + ::= { ipMRouteEntry 15 } + +ipMRouteHCOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in IP datagrams which were + received from these sources and addressed to this multicast + group address, and which were forwarded by this router. + This object is a 64-bit version of ipMRouteOctets." + ::= { ipMRouteEntry 16 } + +-- +-- The IP Multicast Routing Next Hop Table +-- + +ipMRouteNextHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on the next- + hops on outgoing interfaces for routing IP multicast + datagrams. Each entry is one of a list of next-hops on + outgoing interfaces for particular sources sending to a + particular multicast group address." + ::= { ipMRoute 3 } + +ipMRouteNextHopEntry OBJECT-TYPE + SYNTAX IpMRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the list of next-hops on + outgoing interfaces to which IP multicast datagrams from + particular sources to a IP multicast group address are + routed. Discontinuities in counters in this entry can be + detected by observing the value of ipMRouteUpTime." + INDEX { ipMRouteNextHopGroup, ipMRouteNextHopSource, + ipMRouteNextHopSourceMask, ipMRouteNextHopIfIndex, + ipMRouteNextHopAddress } + ::= { ipMRouteNextHopTable 1 } + +IpMRouteNextHopEntry ::= SEQUENCE { + ipMRouteNextHopGroup IpAddress, + + + ipMRouteNextHopSource IpAddress, + ipMRouteNextHopSourceMask IpAddress, + ipMRouteNextHopIfIndex InterfaceIndex, + ipMRouteNextHopAddress IpAddress, + ipMRouteNextHopState INTEGER, + ipMRouteNextHopUpTime TimeTicks, + ipMRouteNextHopExpiryTime TimeTicks, + ipMRouteNextHopClosestMemberHops Integer32, + ipMRouteNextHopProtocol IANAipMRouteProtocol, + ipMRouteNextHopPkts Counter32 +} + +ipMRouteNextHopGroup OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group for which this entry specifies a + next-hop on an outgoing interface." + ::= { ipMRouteNextHopEntry 1 } + +ipMRouteNextHopSource OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address which when combined with the + corresponding value of ipMRouteNextHopSourceMask identifies + the sources for which this entry specifies a next-hop on an + outgoing interface." + ::= { ipMRouteNextHopEntry 2 } + +ipMRouteNextHopSourceMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network mask which when combined with the corresponding + value of ipMRouteNextHopSource identifies the sources for + which this entry specifies a next-hop on an outgoing + interface." + ::= { ipMRouteNextHopEntry 3 } + +ipMRouteNextHopIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "The ifIndex value of the interface for the outgoing + interface for this next-hop." + ::= { ipMRouteNextHopEntry 4 } + +ipMRouteNextHopAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the next-hop specific to this entry. For + most interfaces, this is identical to ipMRouteNextHopGroup. + NBMA interfaces, however, may have multiple next-hop + addresses out a single outgoing interface." + ::= { ipMRouteNextHopEntry 5 } + +ipMRouteNextHopState OBJECT-TYPE + SYNTAX INTEGER { pruned(1), forwarding(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the outgoing interface and next- + hop represented by this entry is currently being used to + forward IP datagrams. The value 'forwarding' indicates it + is currently being used; the value 'pruned' indicates it is + not." + ::= { ipMRouteNextHopEntry 6 } + +ipMRouteNextHopUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the multicast routing information + represented by this entry was learned by the router." + ::= { ipMRouteNextHopEntry 7 } + +ipMRouteNextHopExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry will + be aged out. If ipMRouteNextHopState is pruned(1), the + remaining time until the prune expires and the state reverts + to forwarding(2). Otherwise, the remaining time until this + entry is removed from the table. The time remaining may be + copied from ipMRouteExpiryTime if the protocol in use for + this entry does not specify next-hop timers. The value 0 + + + indicates that the entry is not subject to aging." + ::= { ipMRouteNextHopEntry 8 } + +ipMRouteNextHopClosestMemberHops OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum number of hops between this router and any + member of this IP multicast group reached via this next-hop + on this outgoing interface. Any IP multicast datagrams for + the group which have a TTL less than this number of hops + will not be forwarded to this next-hop." + ::= { ipMRouteNextHopEntry 9 } + +ipMRouteNextHopProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which this next-hop was learned." + ::= { ipMRouteNextHopEntry 10 } + +ipMRouteNextHopPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets which have been forwarded using this + route." + ::= { ipMRouteNextHopEntry 11 } + +-- +-- The Multicast Routing Interface Table +-- + +ipMRouteInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing multicast routing + information specific to interfaces." + ::= { ipMRoute 4 } + +ipMRouteInterfaceEntry OBJECT-TYPE + SYNTAX IpMRouteInterfaceEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the multicast routing + information for a particular interface." + INDEX { ipMRouteInterfaceIfIndex } + ::= { ipMRouteInterfaceTable 1 } + +IpMRouteInterfaceEntry ::= SEQUENCE { + ipMRouteInterfaceIfIndex InterfaceIndex, + ipMRouteInterfaceTtl Integer32, + ipMRouteInterfaceProtocol IANAipMRouteProtocol, + ipMRouteInterfaceRateLimit Integer32, + ipMRouteInterfaceInMcastOctets Counter32, + ipMRouteInterfaceOutMcastOctets Counter32, + ipMRouteInterfaceHCInMcastOctets Counter64, + ipMRouteInterfaceHCOutMcastOctets Counter64 +} + +ipMRouteInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of the interface for which this entry + contains information." + ::= { ipMRouteInterfaceEntry 1 } + +ipMRouteInterfaceTtl OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The datagram TTL threshold for the interface. Any IP + multicast datagrams with a TTL less than this threshold will + not be forwarded out the interface. The default value of 0 + means all multicast packets are forwarded out the + interface." + ::= { ipMRouteInterfaceEntry 2 } + +ipMRouteInterfaceProtocol OBJECT-TYPE + SYNTAX IANAipMRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing protocol running on this interface." + ::= { ipMRouteInterfaceEntry 3 } + +ipMRouteInterfaceRateLimit OBJECT-TYPE + + + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The rate-limit, in kilobits per second, of forwarded + multicast traffic on the interface. A rate-limit of 0 + indicates that no rate limiting is done." + DEFVAL { 0 } + ::= { ipMRouteInterfaceEntry 4 } + +ipMRouteInterfaceInMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have arrived + on the interface, including framing characters. This object + is similar to ifInOctets in the Interfaces MIB, except that + only multicast packets are counted." + ::= { ipMRouteInterfaceEntry 5 } + +ipMRouteInterfaceOutMcastOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have been + sent on the interface." + ::= { ipMRouteInterfaceEntry 6 } + +ipMRouteInterfaceHCInMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have arrived + on the interface, including framing characters. This object + is a 64-bit version of ipMRouteInterfaceInMcastOctets. It + is similar to ifHCInOctets in the Interfaces MIB, except + that only multicast packets are counted." + ::= { ipMRouteInterfaceEntry 7 } + +ipMRouteInterfaceHCOutMcastOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of multicast packets that have been + + + sent on the interface. This object is a 64-bit version of + ipMRouteInterfaceOutMcastOctets." + ::= { ipMRouteInterfaceEntry 8 } + +-- +-- The IP Multicast Scope Boundary Table +-- + +ipMRouteBoundaryTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteBoundaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's scoped + multicast address boundaries." + ::= { ipMRoute 5 } + +ipMRouteBoundaryEntry OBJECT-TYPE + SYNTAX IpMRouteBoundaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the ipMRouteBoundaryTable + representing a scoped boundary." + INDEX { ipMRouteBoundaryIfIndex, ipMRouteBoundaryAddress, + ipMRouteBoundaryAddressMask } + ::= { ipMRouteBoundaryTable 1 } + +IpMRouteBoundaryEntry ::= SEQUENCE { + ipMRouteBoundaryIfIndex InterfaceIndex, + ipMRouteBoundaryAddress IpAddress, + ipMRouteBoundaryAddressMask IpAddress, + ipMRouteBoundaryStatus RowStatus +} + +ipMRouteBoundaryIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IfIndex value for the interface to which this boundary + applies. Packets with a destination address in the + associated address/mask range will not be forwarded out this + interface." + ::= { ipMRouteBoundaryEntry 1 } + +ipMRouteBoundaryAddress OBJECT-TYPE + SYNTAX IpAddress + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address which when combined with the + corresponding value of ipMRouteBoundaryAddressMask + identifies the group range for which the scoped boundary + exists. Scoped addresses must come from the range 239.x.x.x + as specified in RFC 2365." + ::= { ipMRouteBoundaryEntry 2 } + +ipMRouteBoundaryAddressMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address mask which when combined with the + corresponding value of ipMRouteBoundaryAddress identifies + the group range for which the scoped boundary exists." + ::= { ipMRouteBoundaryEntry 3 } + +ipMRouteBoundaryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table." + ::= { ipMRouteBoundaryEntry 4 } + +-- +-- The IP Multicast Scope Name Table +-- + +ipMRouteScopeNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpMRouteScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the multicast scope names." + ::= { ipMRoute 6 } + +ipMRouteScopeNameEntry OBJECT-TYPE + SYNTAX IpMRouteScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the ipMRouteScopeNameTable + representing a multicast scope name." + + + INDEX { ipMRouteScopeNameAddress, + ipMRouteScopeNameAddressMask, + IMPLIED ipMRouteScopeNameLanguage } + ::= { ipMRouteScopeNameTable 1 } + +IpMRouteScopeNameEntry ::= SEQUENCE { + ipMRouteScopeNameAddress IpAddress, + ipMRouteScopeNameAddressMask IpAddress, + ipMRouteScopeNameLanguage LanguageTag, + ipMRouteScopeNameString SnmpAdminString, + ipMRouteScopeNameDefault TruthValue, + ipMRouteScopeNameStatus RowStatus +} + +ipMRouteScopeNameAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address which when combined with the + corresponding value of ipMRouteScopeNameAddressMask + identifies the group range associated with the multicast + scope. Scoped addresses must come from the range + 239.x.x.x." + ::= { ipMRouteScopeNameEntry 1 } + +ipMRouteScopeNameAddressMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address mask which when combined with the + corresponding value of ipMRouteScopeNameAddress identifies + the group range associated with the multicast scope." + ::= { ipMRouteScopeNameEntry 2 } + +ipMRouteScopeNameLanguage OBJECT-TYPE + SYNTAX LanguageTag + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RFC 1766-style language tag associated with the scope + name." + ::= { ipMRouteScopeNameEntry 3 } + +ipMRouteScopeNameString OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The textual name associated with the multicast scope. The + value of this object should be suitable for displaying to + end-users, such as when allocating a multicast address in + this scope. When no name is specified, the default value of + this object should be the string 239.x.x.x/y with x and y + replaced appropriately to describe the address and mask + length associated with the scope." + ::= { ipMRouteScopeNameEntry 4 } + +ipMRouteScopeNameDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If true, indicates a preference that the name in the + following language should be used by applications if no name + is available in a desired language." + DEFVAL { false } + ::= { ipMRouteScopeNameEntry 5 } + +ipMRouteScopeNameStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table." + ::= { ipMRouteScopeNameEntry 6 } + + +-- conformance information + +ipMRouteMIBConformance + OBJECT IDENTIFIER ::= { ipMRouteStdMIB 2 } +ipMRouteMIBCompliances + OBJECT IDENTIFIER ::= { ipMRouteMIBConformance 1 } +ipMRouteMIBGroups OBJECT IDENTIFIER ::= { ipMRouteMIBConformance 2 } + +-- compliance statements + +ipMRouteMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the IP Multicast MIB." + MODULE -- this module + MANDATORY-GROUPS { ipMRouteMIBBasicGroup, + + + ipMRouteMIBRouteGroup} + + GROUP ipMRouteMIBBoundaryGroup + DESCRIPTION + "This group is mandatory if the router supports + administratively-scoped multicast address boundaries." + + OBJECT ipMRouteBoundaryStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMRouteScopeNameStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP ipMRouteMIBHCInterfaceGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + for which the value of the corresponding instance of ifSpeed + is greater than 20,000,000 bits/second." + + ::= { ipMRouteMIBCompliances 1 } + +-- units of conformance + +ipMRouteMIBBasicGroup OBJECT-GROUP + OBJECTS { ipMRouteEnable, ipMRouteEntryCount, + ipMRouteUpstreamNeighbor, ipMRouteInIfIndex, + ipMRouteUpTime, ipMRouteExpiryTime, + ipMRouteNextHopState, + ipMRouteNextHopUpTime, + ipMRouteNextHopExpiryTime, + ipMRouteNextHopProtocol, + ipMRouteNextHopPkts, + ipMRouteInterfaceTtl, + ipMRouteInterfaceProtocol, ipMRouteInterfaceRateLimit, + ipMRouteInterfaceInMcastOctets, + ipMRouteInterfaceOutMcastOctets, + ipMRouteProtocol + } + STATUS current + DESCRIPTION + "A collection of objects to support basic management of IP + Multicast routing." + ::= { ipMRouteMIBGroups 1 } + + + +ipMRouteMIBHopCountGroup OBJECT-GROUP + OBJECTS { ipMRouteNextHopClosestMemberHops } + STATUS current + DESCRIPTION + "A collection of objects to support management of the use of + hop counts in IP Multicast routing." + ::= { ipMRouteMIBGroups 2 } + +ipMRouteMIBBoundaryGroup OBJECT-GROUP + OBJECTS { ipMRouteBoundaryStatus, ipMRouteScopeNameString, + ipMRouteScopeNameDefault, ipMRouteScopeNameStatus } + STATUS current + DESCRIPTION + "A collection of objects to support management of scoped + multicast address boundaries." + ::= { ipMRouteMIBGroups 3 } + +ipMRouteMIBPktsOutGroup OBJECT-GROUP + OBJECTS { ipMRouteNextHopPkts } + STATUS current + DESCRIPTION + "A collection of objects to support management of packet + counters for each outgoing interface entry of a route." + ::= { ipMRouteMIBGroups 4 } + +ipMRouteMIBHCInterfaceGroup OBJECT-GROUP + OBJECTS { ipMRouteInterfaceHCInMcastOctets, + ipMRouteInterfaceHCOutMcastOctets, + ipMRouteHCOctets } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second) network + interfaces." + ::= { ipMRouteMIBGroups 5 } + +ipMRouteMIBRouteGroup OBJECT-GROUP + OBJECTS { ipMRouteRtProto, ipMRouteRtAddress, + ipMRouteRtMask, ipMRouteRtType } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + relationship between multicast routing information, and the + IP Forwarding Table." + ::= { ipMRouteMIBGroups 6 } + +ipMRouteMIBPktsGroup OBJECT-GROUP + OBJECTS { ipMRoutePkts, ipMRouteDifferentInIfPackets, + + + ipMRouteOctets } + STATUS current + DESCRIPTION + "A collection of objects to support management of packet + counters for each forwarding entry." + ::= { ipMRouteMIBGroups 7 } + +END diff --git a/mibs/ietf/IPOA-MIB b/mibs/ietf/IPOA-MIB new file mode 100644 index 0000000..bcd64f6 --- /dev/null +++ b/mibs/ietf/IPOA-MIB @@ -0,0 +1,1647 @@ +IPOA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + transmission, Integer32, IpAddress, Counter32, + Gauge32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + ipNetToMediaNetAddress, ipNetToMediaIfIndex, + ipNetToMediaPhysAddress, ipAdEntAddr + FROM IP-MIB + +-- The following textual conventions are defined locally within +-- this MIB module. They have been prefixed with 'Ipoa' to +-- distinguish them from their counterparts in the ATM-TC-MIB. +-- This was done so that the IPOA-MIB could be advanced as +-- a standards-based MIB without waiting for the ATM-TC-MIB. + +-- AtmConnKind, AtmAddr +-- FROM ATM-TC-MIB + + InterfaceIndex, InterfaceIndexOrZero + FROM IF-MIB + ; + +ipoaMIB MODULE-IDENTITY + LAST-UPDATED "9802090000Z" -- February 9, 1998 + ORGANIZATION "IETF Internetworking Over NBMA Working + Group (ion)" + CONTACT-INFO + "Maria Greene (greene@xedia.com) + Xedia Corp. + + Jim Luciani (jluciani@BayNetworks.com) + Bay Networks + + Kenneth White (kennethw@vnet.ibm.com) + IBM Corp. + + Ted Kuo (tkuo@eos.ncsu.edu) + Bay Networks" + DESCRIPTION + "This module defines a portion of the management + information base (MIB) for managing Classical IP and + ARP over ATM entities." + ::= { transmission 46 } + +-- Textual Conventions + +IpoaEncapsType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The encapsulation type used on a VC." + SYNTAX INTEGER { + llcSnap(1), + vcMuxed(2), + other(3) + } + +IpoaVpiInteger ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer large enough to contain the value of a VPI." + SYNTAX Integer32 (0..255) + +IpoaVciInteger ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer large enough to contain the value of a VCI." + SYNTAX Integer32 (0..65535) + +IpoaAtmAddr ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x" + STATUS current + DESCRIPTION + "The ATM address used by the network entity. + The semantics are implied by the length. + The address types are: + + - no address (0 octets) + - E.164 (8 octets) + - NSAP (20 octets) + + In addition, when subaddresses are used IpoaAtmAddr + may represent the concatenation of address and + subaddress. The associated address types are: + + - E.164, E.164 (16 octets) + - E.164, NSAP (28 octets) + - NSAP, NSAP (40 octets) + Address lengths other than defined in this definition + imply address types defined elsewhere. + Note: The E.164 address is encoded in BCD format." + SYNTAX OCTET STRING (SIZE(0..40)) + +IpoaAtmConnKind ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The use of call control. The use is as follows: + pvc(1) + Virtual link of a PVC. Should not be + used in a PVC/SVC (i.e., SPVC) + crossconnect. + svcIncoming(2) + Virtual link established after a + received signaling request to setup + an SVC. + svcOutgoing(3) + Virtual link established after a + transmitted or forwarded signaling + request to setup an SVC. + spvcInitiator(4) + Virtual link at the PVC side of an + SVC/PVC crossconnect, where the + switch is the initiator of the SPVC + setup. + spvcTarget(5) + Virtual link at the PVC side of an + SVC/PVC crossconnect, where the + switch is the target of the SPVC + setup. + + An spvcInitiator is always cross-connected to + an svcOutgoing, and an spvcTarget is always + cross-connected to an svcIncoming." + SYNTAX INTEGER { + pvc(1), + svcIncoming(2), + svcOutgoing(3), + spvcInitiator(4), + spvcTarget(5) + } + +-- Top-level structure of the MIB + +ipoaObjects OBJECT IDENTIFIER ::= { ipoaMIB 1 } +ipoaNotifications OBJECT IDENTIFIER ::= { ipoaMIB 2 } +ipoaConformance OBJECT IDENTIFIER ::= { ipoaMIB 3 } + +-- MIB Objects + +ipoaLisTrapEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether ipoaLisCreate and ipoaLisDelete + traps should be generated by this system. + + By default, this object should have the value + enabled(1) for systems where ATMARP Servers are + present and disabled(2) on systems where only + clients reside." + ::= { ipoaObjects 1 } + +-- The ATM Logical IP Subnet (LIS) Table + +ipoaLisTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaLisEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is one entry in this table for every Logical IP + Subnet (LIS) of which this system is a member. + + The bulk of the objects in an ipoaLisEntry exists + to control ATMARP for a particular LIS. In a PVC only + environment it is implementation dependent as to + whether this table should be supported." + ::= { ipoaObjects 2 } + +ipoaLisEntry OBJECT-TYPE + SYNTAX IpoaLisEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single LIS of which this system + is a member. + + Membership in a LIS is independent of the actual ATM + interfaces being used. The ipoaLisTable defines + all LISs that a system is a member of. The ipAddrTable + and the ipoaClientTable provides the mapping from local + IP address to ATM interface. The ipoaLisIfMappingTable + provides the mappings between Logical IP Subnets and + interfaces. + The ipoaLisTable is indexed by ipoaLisSubnetAddr (IP + subnet address). An entry in the ipoaLisTable should + exist for each ipAddrEntry that is associated with an + ATM related interface used for Classical IP and ARP + over ATM traffic. + + Its ipAdEntAddr and ipAdEntNetMask when ANDed together + should equal the ipoaLisSubnetAddr of the corresponding + ipoaLisEntry." + INDEX { ipoaLisSubnetAddr } + ::= { ipoaLisTable 1 } + +IpoaLisEntry ::= SEQUENCE { + ipoaLisSubnetAddr IpAddress, + ipoaLisDefaultMtu Integer32, + ipoaLisDefaultEncapsType IpoaEncapsType, + ipoaLisInactivityTimer Integer32, + ipoaLisMinHoldingTime Integer32, + ipoaLisQDepth Integer32, + ipoaLisMaxCalls Integer32, + ipoaLisCacheEntryAge Integer32, + ipoaLisRetries Integer32, + ipoaLisTimeout Integer32, + ipoaLisDefaultPeakCellRate Integer32, + ipoaLisActiveVcs Gauge32, + ipoaLisRowStatus RowStatus +} + +ipoaLisSubnetAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP subnet address associated with this LIS." + ::= { ipoaLisEntry 1 } + +ipoaLisDefaultMtu OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default MTU used within this LIS. Note that the + actual MTU used for a VC between two members of the + LIS may be negotiated during connection setup and may + be different than this value. The ipoaVcNegotiatedMtu + object indicates the actual MTU in use for a + particular VC." + DEFVAL { 9180 } + ::= { ipoaLisEntry 2 } + +ipoaLisDefaultEncapsType OBJECT-TYPE + SYNTAX IpoaEncapsType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default encapsulation to use on VCs created for + this LIS. Note that the actual encapsulation type may + be negotiated during connection setup and may be + different than this value. The + ipoaVcNegotiatedEncapsType object indicates the actual + encapsulation in use for a particular VC." + DEFVAL { llcSnap } + ::= { ipoaLisEntry 3 } + +ipoaLisInactivityTimer OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time, in seconds, before a call established for an + ipNetToMediaEntry on a client will timeout due to no + traffic being passed on the VC. A value of 0 implies + no time out." + REFERENCE + "RFC 1755, Sec. 3.4 VC Teardown" + DEFVAL { 1200 } + ::= { ipoaLisEntry 4 } + +ipoaLisMinHoldingTime OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum amount of time, in seconds, that a call + will remain open. If 0 then ipoaInactivityTimer will + completely determine when a call is terminated." + REFERENCE + "RFC 1755, Sec. 3.4 VC Teardown" + DEFVAL { 60 } + ::= { ipoaLisEntry 5 } + +ipoaLisQDepth OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "packets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of outstanding requests that are + allowed while waiting for ATMARP replies and + InATMARP replies for this LIS." + DEFVAL { 1 } + ::= { ipoaLisEntry 6 } + +ipoaLisMaxCalls OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of SVCs that can be established + simultaneously for this LIS." + DEFVAL { 500 } + ::= { ipoaLisEntry 7 } + +ipoaLisCacheEntryAge OBJECT-TYPE + SYNTAX Integer32 (60..1200) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time, in seconds, before an ipNetToMediaEntry will + age out of the table. Note that the default value will + be different for a client and a server. An ATMARP + Server should use a default of 1200 and a client should + use 900." + DEFVAL { 900 } + ::= { ipoaLisEntry 8 } + +ipoaLisRetries OBJECT-TYPE + SYNTAX Integer32 (0..10) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times the ATMARP request will be retried + when no response is received in the timeout interval + indicated by ipoaLisTimeout." + DEFVAL { 2 } + ::= { ipoaLisEntry 9 } + +ipoaLisTimeout OBJECT-TYPE + SYNTAX Integer32 (1..60) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time to wait, in seconds, before retransmission + of an ARP request." + DEFVAL { 10 } + ::= { ipoaLisEntry 10 } + +ipoaLisDefaultPeakCellRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is the signalling parameter that + should be used when setting up all best effort + VCCs (Virtual Channel Connections). + This parameter applies to the forward and + backward direction on a per best effort VCC basis. + A value of zero implies that no configured default + exists and that local policy should be used to + determine the actual default to used during + call setup. ATM Signaling Support for IP over ATM + (RFC 1755) recommends 1/10th of the ATM interface's + speed." + ::= { ipoaLisEntry 11 } + +ipoaLisActiveVcs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of active SVCs for this LIS." + ::= { ipoaLisEntry 12 } + +ipoaLisRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the ipoaLisTable. + + When the ipoaLisRowStatus deleted (by setting this + object to destroy(6)), this has the side-effect of + removing all entries from the ipNetToMediaTable that + are associated with this LIS (in other words, it + flushes the entity's ATMARP cache). It also removes + the ipoaVcTable entries that were associated with those + ipNetToMediaTable entries. Destroying the row also + removes the corresponding entries in the + ipoaArpSrvrTable, ipoaArpClientTable, + ipoaLisIfMappingTable, and ipoaArpRemoteSrvrTable. + + Entries in both the ipNetToMediaTable and the + ipoaVcTable that are associated with a + ipoaConfigPvcEntry are not affected by changes to + ipoaLisRowStatus." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaLisEntry 13 } + + +-- The ATM Logical IP Subnet Interface Mapping Table + +ipoaLisIfMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaLisIfMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There is one entry in this table for every combination + of ipoaLisEntry and IP over ATM interface." + ::= { ipoaObjects 3 } + +ipoaLisIfMappingEntry OBJECT-TYPE + SYNTAX IpoaLisIfMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the ipoaLisIfMappingTable." + INDEX { ipoaLisSubnetAddr, ipoaLisIfMappingIfIndex } + ::= { ipoaLisIfMappingTable 1 } + +IpoaLisIfMappingEntry ::= SEQUENCE { + ipoaLisIfMappingIfIndex InterfaceIndex, + ipoaLisIfMappingRowStatus RowStatus +} + +ipoaLisIfMappingIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ipAdEntIfIndex object from an ipAddrEntry + is used as an index to this table when its + ipAdEntAddr is in the subnet implied by + ipoaLisSubnetAddr." + ::= { ipoaLisIfMappingEntry 1 } + +ipoaLisIfMappingRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the ipoaLisIfMappingTable." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaLisIfMappingEntry 2 } + +-- The ATMARP Client Table + +ipoaArpClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaArpClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATMARP clients running on this system." + ::= { ipoaObjects 4 } + +ipoaArpClientEntry OBJECT-TYPE + SYNTAX IpoaArpClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single ATMARP Client. Clients + can be started and stopped by adding and removing + entries from this table. An entry in the + ipoaArpClientTable has a corresponding entry in the + ipAddrTable. Both are indexed by ipAdEntAddr. + The ifIndex and subnet mask of a client entry are the + ipAddrEntry's ipAdEntIfIndex and ipAdEntNetMask, + respectively. + + Note that adding and removing entries from this table + may have the same effect on the corresponding + ipAddrTable entry. Row creation of an entry in this + table requires that either the corresponding ipAddrTable + entry exists or that ipAdEntIfIndex and ipAdEntNetMask + be specified in the creation of an ipoaArpClientEntry + at a minimum in order to create the corresponding + ipAddrEntry. Specification of ipAdEntBcastAddr and + ipAdEntReasmMaxSize to complete an ipAddrEntry is + implementation dependent. + Whether a corresponding ipAddrEntry is deleted during + the deletion of an ipoaArpClientEntry is considered + implementation dependent." + INDEX { ipAdEntAddr } + ::= { ipoaArpClientTable 1 } + +IpoaArpClientEntry ::= SEQUENCE { + ipoaArpClientAtmAddr IpoaAtmAddr, + ipoaArpClientSrvrInUse IpoaAtmAddr, + ipoaArpClientInArpInReqs Counter32, + ipoaArpClientInArpOutReqs Counter32, + ipoaArpClientInArpInReplies Counter32, + ipoaArpClientInArpOutReplies Counter32, + ipoaArpClientInArpInvalidInReqs Counter32, + ipoaArpClientInArpInvalidOutReqs Counter32, + ipoaArpClientArpInReqs Counter32, + ipoaArpClientArpOutReqs Counter32, + ipoaArpClientArpInReplies Counter32, + ipoaArpClientArpOutReplies Counter32, + ipoaArpClientArpInNaks Counter32, + ipoaArpClientArpOutNaks Counter32, + ipoaArpClientArpUnknownOps Counter32, + ipoaArpClientArpNoSrvrResps Counter32, + ipoaArpClientRowStatus RowStatus +} + +ipoaArpClientAtmAddr OBJECT-TYPE + SYNTAX IpoaAtmAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ATM address of the client." + ::= { ipoaArpClientEntry 1 } + +ipoaArpClientSrvrInUse OBJECT-TYPE + SYNTAX IpoaAtmAddr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ATM address of the ATMARP Server, + ipoaArpRemoteSrvrAtmAddr, in use by this client. A + zero length octet string implies that communication + with a Remote ATMARP Server is not in effect." + DEFVAL { ''H } + ::= { ipoaArpClientEntry 2 } + +ipoaArpClientInArpInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP requests received by this + client." + ::= { ipoaArpClientEntry 3 } + +ipoaArpClientInArpOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP requests sent by this client." + ::= { ipoaArpClientEntry 4 } + +ipoaArpClientInArpInReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP replies received by this + client." + ::= { ipoaArpClientEntry 5 } + +ipoaArpClientInArpOutReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of InATMARP replies sent by this client." + ::= { ipoaArpClientEntry 6 } + +ipoaArpClientInArpInvalidInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this client detected an + invalid InATMARP request." + ::= { ipoaArpClientEntry 7 } + +ipoaArpClientInArpInvalidOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this client did not + receive an InATMARP reply." + ::= { ipoaArpClientEntry 8 } + +ipoaArpClientArpInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP requests received by this + client." + ::= { ipoaArpClientEntry 9 } + +ipoaArpClientArpOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP requests sent by this client." + ::= { ipoaArpClientEntry 10 } + +ipoaArpClientArpInReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP replies received by this + client." + ::= { ipoaArpClientEntry 11 } + +ipoaArpClientArpOutReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP replies sent by this client." + ::= { ipoaArpClientEntry 12 } + +ipoaArpClientArpInNaks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of negative ATMARP replies + received by this client." + ::= { ipoaArpClientEntry 13 } + +ipoaArpClientArpOutNaks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of negative ATMARP replies sent by + this client. + + Classic IP and ARP over ATM does not require an + ATMARP client to transmit an ATMARP_NAK upon + receipt of an ATMARP request from another ATMARP + client. However, implementation experience has + shown that this error condition is somewhat easy + to create inadvertently by configuring one ATMARP + client with an ipoaArpRemoteSrvrTable entry + containing an ipoaArpRemoteSrvrAtmAddr value which + is the ATM address of another ATMARP client-only + system. + + If an ATMARP client supports the transmission of + ATMARP_NAKs, then it should increment + ipoaArpClientArpOutNaks each time it transmits + an ATMARP_NAK. Otherwise, support of this + object is considered optional." + ::= { ipoaArpClientEntry 14 } + +ipoaArpClientArpUnknownOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this client received + an ATMARP message with an operation code for which + it is not coded to support." + ::= { ipoaArpClientEntry 15 } + +ipoaArpClientArpNoSrvrResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this client failed to receive + a response from a ATMARP Server within the + ipoaLisTimeout value for ipoaLisRetries times. + This may imply that the client will re-elect a + new primary ATMARP Server for this LIS from the + ipoaArpRemoteSrvrTable." + ::= { ipoaArpClientEntry 16 } + +ipoaArpClientRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and + deleted from the ipoaArpClientTable." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaArpClientEntry 17 } + +-- The ATMARP Server Table + +ipoaArpSrvrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaArpSrvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATMARP Servers running on this system." + ::= { ipoaObjects 5 } + +ipoaArpSrvrEntry OBJECT-TYPE + SYNTAX IpoaArpSrvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about an ATMARP Server within a LIS. An + entry in this table has two indexes: first ipAdEntAddr, + which is the IP address that this system uses as a + member of the LIS, and then ipoaArpSrvrAddr, which is + the ATM address of the ATMARP Server. + + Entries may be created by a management application + using the ipoaArpSrvrRowStatus object. Entries in this + table may also be created by the system and not by a + management application, for example via ILMI. + + Entries in this table may be deleted by setting the + ipoaArpSrvrRowStatus object to 'destroy(6)'. This + includes entries that were added by the system and not + by a management application." + INDEX { ipAdEntAddr, ipoaArpSrvrAddr } + ::= { ipoaArpSrvrTable 1 } + +IpoaArpSrvrEntry ::= SEQUENCE { + ipoaArpSrvrAddr IpoaAtmAddr, + ipoaArpSrvrLis IpAddress, + ipoaArpSrvrInArpInReqs Counter32, + ipoaArpSrvrInArpOutReqs Counter32, + ipoaArpSrvrInArpInReplies Counter32, + ipoaArpSrvrInArpOutReplies Counter32, + ipoaArpSrvrInArpInvalidInReqs Counter32, + ipoaArpSrvrInArpInvalidOutReqs Counter32, + ipoaArpSrvrArpInReqs Counter32, + ipoaArpSrvrArpOutReplies Counter32, + ipoaArpSrvrArpOutNaks Counter32, + ipoaArpSrvrArpDupIpAddrs Counter32, + ipoaArpSrvrArpUnknownOps Counter32, + ipoaArpSrvrRowStatus RowStatus +} + +ipoaArpSrvrAddr OBJECT-TYPE + SYNTAX IpoaAtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM address of the ATMARP Server." + ::= { ipoaArpSrvrEntry 1 } + +ipoaArpSrvrLis OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The subnet address that identifies the LIS with + which this server is associated." + ::= { ipoaArpSrvrEntry 2 } + +ipoaArpSrvrInArpInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP requests received by this + ATMARP Server." + ::= { ipoaArpSrvrEntry 3 } + +ipoaArpSrvrInArpOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP requests sent by this ATMARP + Server." + ::= { ipoaArpSrvrEntry 4 } + +ipoaArpSrvrInArpInReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP replies received by this + ATMARP Server." + ::= { ipoaArpSrvrEntry 5 } + +ipoaArpSrvrInArpOutReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of InATMARP replies sent by this ATMARP + Server." + ::= { ipoaArpSrvrEntry 6 } + +ipoaArpSrvrInArpInvalidInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid InATMARP requests received by + this ATMARP Server." + ::= { ipoaArpSrvrEntry 7 } + +ipoaArpSrvrInArpInvalidOutReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this server did not receive + an InATMARP reply." + ::= { ipoaArpSrvrEntry 8 } + +ipoaArpSrvrArpInReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP requests received by this + ATMARP Server." + ::= { ipoaArpSrvrEntry 9 } + +ipoaArpSrvrArpOutReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ATMARP replies sent by this ATMARP + Server." + ::= { ipoaArpSrvrEntry 10 } + +ipoaArpSrvrArpOutNaks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of negative ATMARP replies sent by this + ATMARP Server." + ::= { ipoaArpSrvrEntry 11 } + +ipoaArpSrvrArpDupIpAddrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a duplicate IP address was + detected by this ATMARP Server." + ::= { ipoaArpSrvrEntry 12 } + +ipoaArpSrvrArpUnknownOps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that this ATMARP Server received + an ATMARP message with an operation code for which it + is not coded to support." + ::= { ipoaArpSrvrEntry 13 } + +ipoaArpSrvrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + from the ipoaArpSrvrTable." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaArpSrvrEntry 14 } + +-- The Remote ATMARP Server Table + +ipoaArpRemoteSrvrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaArpRemoteSrvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of non-local ATMARP Servers associated with a + LIS. An entry in this table has three indexes: first + the ipoaLisSubnetAddr of the LIS for which the + corresponding ATMARP Server provides ATMARP services, + then the ipoaArpRemoteSrvrAtmAddr, which is the ATM + address of the remote ATMARP Server, and finally the + ifIndex of the interface on which the VC to the ATMARP + Remote Server will be opened. An ifIndex value of 0 + should be used when a single VC is to be shared for + ATMARP purposes by multiple interfaces." + ::= { ipoaObjects 6 } + +ipoaArpRemoteSrvrEntry OBJECT-TYPE + SYNTAX IpoaArpRemoteSrvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about one non-local ATMARP Server." + INDEX { ipoaLisSubnetAddr, ipoaArpRemoteSrvrAtmAddr, + ipoaArpRemoteSrvrIfIndex } + ::= { ipoaArpRemoteSrvrTable 1 } + +IpoaArpRemoteSrvrEntry ::= SEQUENCE { + ipoaArpRemoteSrvrAtmAddr IpoaAtmAddr, + ipoaArpRemoteSrvrRowStatus RowStatus, + ipoaArpRemoteSrvrIfIndex InterfaceIndexOrZero, + ipoaArpRemoteSrvrIpAddr IpAddress, + ipoaArpRemoteSrvrAdminStatus INTEGER, + ipoaArpRemoteSrvrOperStatus INTEGER +} + +ipoaArpRemoteSrvrAtmAddr OBJECT-TYPE + SYNTAX IpoaAtmAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ATM address of the remote ATMARP Server." + ::= { ipoaArpRemoteSrvrEntry 1 } + +ipoaArpRemoteSrvrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + from the ipoaArpRemoteSrvrTable. + + Deleting an ipoaArpRemoteSrvrEntry (by setting this + object to destroy(6)) may affect ipoaArpClientTable + entries. The object ipoaArpClientSrvrInUse in an + ipoaArpClientSrvrEntry may contain the ATM address + of an ATMARP Remote Server whose entry in the + ipoaArpRemoteSrvrTable is being removed. In this + case, any corresponding ipoaArpClientSrvrInUse + objects should be at a minimum invalidated by + setting their values to that of a zero length + OCTET STRING. + + The value of ipoaArpRemoteSrvrOperStatus should be + consistent with that of ipoaArpRemoteSrvrRowStatus. + For example, successfully setting the value of + this object to notInService(2) after its being in + the up(1) state should result in + ipoaArpRemoteSrvrOperStatus being set to down(2) + if currently up(1)." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaArpRemoteSrvrEntry 2 } + +ipoaArpRemoteSrvrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that the VC to the + Remote ATMARP Server is associated with." + ::= { ipoaArpRemoteSrvrEntry 3 } + +ipoaArpRemoteSrvrIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address of the Remote ATMARP Server. A + value of 0.0.0.0 implies that this address isn't + known." + DEFVAL { '00000000'H } + ::= { ipoaArpRemoteSrvrEntry 4 } + +ipoaArpRemoteSrvrAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- use this ATMARP Server + down(2) -- stop using this ATMARP Server + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired state for use of the ATMARP Server + represented by an entry in this table. + ipoaArpRemoteSrvrAdminStatus values: + + up(1) - Attempt to activate use of the + ATMARP Server represented by this + entry in the ipoaArpRemoteSrvrTable. + down(2) - Deactivate use of this ATMARP + Server. + + When a managed system creates an entry in this + table ipoaArpRemoteSrvrAdminStatus and + ipoaArpRemoteSrvrOperStatus are initialized as + down(2) by default." + DEFVAL { down } + ::= { ipoaArpRemoteSrvrEntry 5 } + +ipoaArpRemoteSrvrOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- eligible for use + down(2) -- not eligible for use + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state for use of a Remote + ATMARP Server. An up(1) entry has a VC + established to the respective Remote ATMARP + Server: + + up(1) - A VC exists to Remote ATMARP Server + whose IP Address is stored in + ipoaArpRemoteSrvrIpAddr. This VC can + be determined by searching the + ipoaVcTable using + ipoaArpRemoteSrvrIfIndex (if not 0, + otherwise ignore ipNetToMediaIfIndex + index) and ipoaArpRemoteSrvrIpAddr. + An ipoaArpClientEntry should exist + with its ipoaArpClientSrvrInUse + object having the same value as + ipoaArpRemoteSrvrAtmAddr. + down(2) - Entry exists without an active VC to + the Remote ATMARP Server. + + Transition from up(1) to down(2) + status may affect ipoaArpClientTable entries. + The object ipoaArpClientSrvrInUse in an + ipoaArpClientSrvrEntry may contain the ATM address + of an ATMARP Remote Server whose entry in the + ipoaArpRemoteSrvrTable is being deactivated. In + this case, any corresponding ipoaArpClientSrvrInUse + objects should be at a minimum invalidated by + setting their values to that of a zero length + OCTET STRING. + + If ipoaArpRemoteSrvrAdminStatus is down(2) then + ipoaArpRemoteSrvrOperStatus should be down(2). + If ipoaArpRemoteSrvrAdminStatus is changed to + up(1) then ipoaArpRemoteSrvrOperStatus should + change to up(1) if the Remote ATMARP Server + entry can be activated." + DEFVAL { down } + ::= { ipoaArpRemoteSrvrEntry 6 } + +-- The ATM VC Table + +ipoaVcTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A system that supports IP over ATM is an IP system and + therefore MUST support all of the appropriate tables in + the SNMPv2-MIB (RFC 1907), the IF-MIB (RFC 2233), + the IP-MIB (RFC 2011), the TCP-MIB (RFC 2012), and + the UDP-MIB (RFC 2013). This includes the + ipNetToMediaTable (the ARP cache) that is defined + within the IP-MIB (RFC 2011). The ipoaVcTable + keeps a set of VCs for each entry in the ARP cache + that was put there by an IP over ATM system acting + as either a host or server. The ipoaVcTable doesn't + augment the ipNetToMediaTable (ARP Cache) since the + the correspondence between tables is not necessarily + one-to-one. + + An ipNetToMediaPhysAddress object should contain the + content as defined by the IpoaAtmAddr textual + convention when used to hold an IPOA-MIB ATM Address." + ::= { ipoaObjects 7 } + +ipoaVcEntry OBJECT-TYPE + SYNTAX IpoaVcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A VC (permanent or switched) that this host or server + has opened with another member of a LIS. Additional + information can be determined about the VC from the + ATM-MIB. + + Entries in this table cannot be created by management + applications. + + In an SVC environment, an entry is automatically added + by the system as the result of ATMARP processing. + + In a PVC environment, an entry is automatically added + to this table when an entry is created in the + ipoaConfigPvcTable and the IP Address at the remote + end of the PVC is discovered using InATMARP. An + entry also is added to the ipNetToMediaTable." + INDEX { ipNetToMediaIfIndex, + ipNetToMediaNetAddress, + ipoaVcVpi, + ipoaVcVci + } + ::= { ipoaVcTable 1 } + + +IpoaVcEntry ::= SEQUENCE { + ipoaVcVpi IpoaVpiInteger, + ipoaVcVci IpoaVciInteger, + ipoaVcType IpoaAtmConnKind, + ipoaVcNegotiatedEncapsType IpoaEncapsType, + ipoaVcNegotiatedMtu Integer32 } + +ipoaVcVpi OBJECT-TYPE + SYNTAX IpoaVpiInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value for the Virtual Circuit." + ::= { ipoaVcEntry 1 } + +ipoaVcVci OBJECT-TYPE + SYNTAX IpoaVciInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value for the Virtual Circuit." + ::= { ipoaVcEntry 2 } + +ipoaVcType OBJECT-TYPE + SYNTAX IpoaAtmConnKind + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the Virtual Circuit." + ::= { ipoaVcEntry 3 } + +ipoaVcNegotiatedEncapsType OBJECT-TYPE + SYNTAX IpoaEncapsType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The encapsulation type used when communicating over + this circuit." + ::= { ipoaVcEntry 4 } + +ipoaVcNegotiatedMtu OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MTU used when communicating over this circuit." + ::= { ipoaVcEntry 5 } + +-- The ATM Config PVC Table + +ipoaConfigPvcTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpoaConfigPvcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table MUST be supported when PVCs are intended to + be supported in order to enable the setup of PVCs for + use by IP." + ::= { ipoaObjects 8 } + +ipoaConfigPvcEntry OBJECT-TYPE + SYNTAX IpoaConfigPvcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a single PVC that exists at this host for + use by IP." + INDEX { ipoaConfigPvcIfIndex, + ipoaConfigPvcVpi, + ipoaConfigPvcVci + } + ::= { ipoaConfigPvcTable 1 } + +IpoaConfigPvcEntry ::= SEQUENCE { + ipoaConfigPvcIfIndex InterfaceIndex, + ipoaConfigPvcVpi IpoaVpiInteger, + ipoaConfigPvcVci IpoaVciInteger, + ipoaConfigPvcDefaultMtu Integer32, + ipoaConfigPvcRowStatus RowStatus } + +ipoaConfigPvcIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the ATM Interface that this PVC + is associated with." + ::= { ipoaConfigPvcEntry 1 } + +ipoaConfigPvcVpi OBJECT-TYPE + SYNTAX IpoaVpiInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VPI value for the Virtual Circuit." + ::= { ipoaConfigPvcEntry 2 } + +ipoaConfigPvcVci OBJECT-TYPE + SYNTAX IpoaVciInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The VCI value for the Virtual Circuit." + ::= { ipoaConfigPvcEntry 3 } + +ipoaConfigPvcDefaultMtu OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Classical IP and ARP over ATM allows use of + other MTU values for PVCs but considers how a + value other than 9180 could be selected to be out + of scope. ipoaConfigPvcDefaultMtu can be used to + configure the MTU to be used for the PVC. + Both ends MUST have the same value configured." + DEFVAL { 9180 } + ::= { ipoaConfigPvcEntry 4 } + +ipoaConfigPvcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows rows to be created and deleted in + the ipoaConfigPvcTable. Creation of an entry in this + table should eventually result in the creation of an + ipNetToMediaEntry and a corresponding ipoaVcEntry + after InATMARP has determined the destination address + of the remote system that the PVC is connected to. + Setting this object to destroy(6) should remove the + corresponding ipNetToMediaTable and ipoaVcTable + entries." + REFERENCE + "RFC 1903, 'Textual Conventions for Version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { ipoaConfigPvcEntry 5 } + + +-- Notifications + +ipoaTrapPrefix OBJECT IDENTIFIER ::= { ipoaNotifications 0 } + +ipoaMtuExceeded NOTIFICATION-TYPE + OBJECTS { + ipoaVcNegotiatedMtu + } + STATUS current + DESCRIPTION + "A frame was received that exceeds the negotiated + MTU size. The VPI and VCI of the VC for which this + condition was detected can be determined from the + index values for ipoaVcNegotiatedMtu. In addition, + the ifIndex and IP Address can be determined as + well (refer to the ipoaVcTable)." + ::= { ipoaTrapPrefix 1 } + +ipoaDuplicateIpAddress NOTIFICATION-TYPE + OBJECTS { + ipNetToMediaIfIndex, + ipNetToMediaNetAddress, + ipNetToMediaPhysAddress, + ipNetToMediaPhysAddress + } + STATUS current + DESCRIPTION + "The ATMARP Server has detected more than one ATM end + point attempting to associate the same IP address with + different ATM addresses." + ::= { ipoaTrapPrefix 2 } + +ipoaLisCreate NOTIFICATION-TYPE + OBJECTS { + ipoaLisSubnetAddr + } + STATUS current + DESCRIPTION + "Generation of this trap occurs when an ipoaLisEntry is + created while the ipoaLisTrapEnable.0 object has the + value enabled(1)." + ::= { ipoaTrapPrefix 3 } + +ipoaLisDelete NOTIFICATION-TYPE + OBJECTS { + ipoaLisSubnetAddr + } + STATUS current + DESCRIPTION + "Generation of this trap occurs when an ipoaLisEntry is + deleted while the ipoaLisTrapEnable.0 object has the + value enabled(1)." + ::= { ipoaTrapPrefix 4 } + +-- Conformance Definitions + +ipoaGroups OBJECT IDENTIFIER ::= { ipoaConformance 1 } + +ipoaCompliances OBJECT IDENTIFIER ::= { ipoaConformance 2 } + +-- compliance statements + +ipoaCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support the + IPOA-MIB." + MODULE -- this module + MANDATORY-GROUPS { ipoaGeneralGroup, + ipoaBasicNotificationsGroup + } + GROUP ipoaClientGroup + DESCRIPTION + "This group is mandatory for all hosts where IP + over ATM client support is present." + GROUP ipoaSrvrGroup + DESCRIPTION + "This group is mandatory for all hosts where ATMARP + Servers are present." + GROUP ipoaSrvrNotificationsGroup + DESCRIPTION + "This group is mandatory for all hosts where ATMARP + Servers are present." + GROUP ipoaLisNotificationsGroup + DESCRIPTION + "This group is mandatory for all hosts where + ATMARP client only support is present and + ipoaLisTrapEnable is allowed to be set to + enabled(1)." + GROUP ipoaLisTableGroup + DESCRIPTION + "This group is mandatory for all entities which + support IP over ATM SVCs. Support of objects in + this group by IP over ATM clients which only + support IP over ATM PVCs is optional." + + OBJECT ipoaLisDefaultMtu + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user + to change the default MTU from the value 9180. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisDefaultEncapsType + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user to + specify the default encapsulation type for the + LIS. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisInactivityTimer + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisMinHoldingTime + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisQDepth + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisMaxCalls + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisCacheEntryAge + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisRetries + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user + to change the default number of times an ATMARP + request will be retried when no response is + received from the default of 2. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisTimeout + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user + to change the default retransmission time from + the default of 10 seconds. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisDefaultPeakCellRate + MIN-ACCESS read-only + DESCRIPTION + "Implementations that do not support IP over + ATM SVC usage are not required to allow the + user to specify a best effort default peak cell + rate since typically the ipoaLisTable won't + exist. + + The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisIfMappingRowStatus + SYNTAX INTEGER { + active(1) -- subset of RowStatus + } + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT ipoaArpClientAtmAddr + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaArpSrvrLis + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaArpRemoteSrvrAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security. In this case the value of + this object should be up(1) when a VC + exists to the Remote ATMARP Server or + otherwise down(2), and the agent should not + allow a SET operation to this object." + + OBJECT ipoaConfigPvcDefaultMtu + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET + operation to this object in the absence of + adequate security." + + OBJECT ipoaLisRowStatus + SYNTAX INTEGER { + active(1) -- subset of RowStatus + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT ipoaArpClientRowStatus + SYNTAX INTEGER { + active(1) -- subset of RowStatus + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT ipoaArpRemoteSrvrRowStatus + SYNTAX INTEGER { + active(1) -- subset of RowStatus + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + OBJECT ipoaArpSrvrRowStatus + SYNTAX INTEGER { + active(1) -- subset of RowStatus + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT ipoaConfigPvcRowStatus + SYNTAX INTEGER { + active(1) -- subset of RowStatus + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the six enumerated values for the + RowStatus textual convention need be + supported, specifically: active(1)." + + OBJECT ipoaArpClientArpOutNaks + MIN-ACCESS not-accessible + DESCRIPTION + "Classic IP and ARP over ATM does not require + an ATMARP client to transmit an ATMARP_NAK + upon receipt of an ATMARP request from another + ATMARP client. This object should be + implemented when an ATMARP client supports the + transmission of ATMARP_NAKs." + + ::= { ipoaCompliances 1 } + +-- units of conformance + +ipoaGeneralGroup OBJECT-GROUP + OBJECTS { + ipoaVcType, + ipoaVcNegotiatedEncapsType, + ipoaVcNegotiatedMtu, + ipoaConfigPvcDefaultMtu, + ipoaConfigPvcRowStatus + } + STATUS current + DESCRIPTION + "This group is mandatory for all IP over ATM entities." + ::= { ipoaGroups 1 } + +ipoaClientGroup OBJECT-GROUP + OBJECTS { + ipoaArpClientAtmAddr, + ipoaArpClientSrvrInUse, + ipoaArpClientInArpInReqs, + ipoaArpClientInArpOutReqs, + ipoaArpClientInArpInReplies, + ipoaArpClientInArpOutReplies, + ipoaArpClientInArpInvalidInReqs, + ipoaArpClientInArpInvalidOutReqs, + ipoaArpClientArpInReqs, + ipoaArpClientArpOutReqs, + ipoaArpClientArpInReplies, + ipoaArpClientArpOutReplies, + ipoaArpClientArpInNaks, + ipoaArpClientArpOutNaks, + ipoaArpClientArpUnknownOps, + ipoaArpClientArpNoSrvrResps, + ipoaArpClientRowStatus + } + STATUS current + DESCRIPTION + "This group is mandatory for all hosts where an IP + over ATM client is present." + ::= { ipoaGroups 2 } + +ipoaSrvrGroup OBJECT-GROUP + OBJECTS { + ipoaArpSrvrLis, + ipoaArpSrvrInArpInReqs, + ipoaArpSrvrInArpOutReqs, + ipoaArpSrvrInArpInReplies, + ipoaArpSrvrInArpOutReplies, + ipoaArpSrvrInArpInvalidInReqs, + ipoaArpSrvrInArpInvalidOutReqs, + ipoaArpSrvrArpInReqs, + ipoaArpSrvrArpOutReplies, + ipoaArpSrvrArpOutNaks, + ipoaArpSrvrArpDupIpAddrs, + ipoaArpSrvrArpUnknownOps, + ipoaArpSrvrRowStatus + } + STATUS current + DESCRIPTION + "This group is mandatory for all hosts where ATMARP + Servers are present." + ::= { ipoaGroups 3 } + +ipoaBasicNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ipoaMtuExceeded + } + STATUS current + DESCRIPTION + "The notification which an IP over ATM entity + is required to implement." + ::= { ipoaGroups 4 } + +ipoaSrvrNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ipoaDuplicateIpAddress + } + STATUS current + DESCRIPTION + "The notification which an IP over ATM ATMARP + Server is required to implement." + ::= { ipoaGroups 5 } + +ipoaLisNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ipoaLisCreate, + ipoaLisDelete + } + STATUS current + DESCRIPTION + "The LIS-related notifications which are required + to be implemented by an IP over ATM ATMARP server, + as well as by any IP over ATM client which allows + ipoaLisTrapEnable to be set to enabled(1)." + ::= { ipoaGroups 6 } + +ipoaLisTableGroup OBJECT-GROUP + OBJECTS { + ipoaLisTrapEnable, + ipoaLisSubnetAddr, + ipoaLisDefaultMtu, + ipoaLisDefaultEncapsType, + ipoaLisInactivityTimer, + ipoaLisMinHoldingTime, + ipoaLisQDepth, + ipoaLisMaxCalls, + ipoaLisCacheEntryAge, + ipoaLisRetries, + ipoaLisTimeout, + ipoaLisDefaultPeakCellRate, + ipoaLisActiveVcs, + ipoaLisRowStatus, + ipoaLisIfMappingRowStatus, + ipoaArpRemoteSrvrRowStatus, + ipoaArpRemoteSrvrIpAddr, + ipoaArpRemoteSrvrAdminStatus, + ipoaArpRemoteSrvrOperStatus + } + STATUS current + DESCRIPTION + "This group is mandatory for all entities which + support IP over ATM SVCs. Support of objects in + this group by IP over ATM clients which only + support IP over ATM PVCs is optional." + ::= { ipoaGroups 7 } + +END diff --git a/mibs/ietf/IPS-AUTH-MIB b/mibs/ietf/IPS-AUTH-MIB new file mode 100644 index 0000000..8e1327f --- /dev/null +++ b/mibs/ietf/IPS-AUTH-MIB @@ -0,0 +1,1219 @@ +IPS-AUTH-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, Unsigned32, + mib-2 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, RowStatus, AutonomousType, StorageType + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB + ; + +ipsAuthMibModule MODULE-IDENTITY + LAST-UPDATED "200605220000Z" -- May 22, 2006 + ORGANIZATION "IETF IPS Working Group" + CONTACT-INFO + " + Mark Bakke + Postal: Cisco Systems, Inc + 7900 International Drive, Suite 400 + Bloomington, MN + USA 55425 + + E-mail: mbakke@cisco.com + + James Muchow + Postal: Qlogic Corp. + 6321 Bury Dr. + Eden Prairie, MN + USA 55346 + + E-Mail: james.muchow@qlogic.com" + + DESCRIPTION + "The IP Storage Authorization MIB module. + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4545; see the RFC itself for + full legal notices." + + + + REVISION "200605220000Z" -- May 22, 2006 + DESCRIPTION + "Initial version of the IP Storage Authentication MIB module, + published as RFC 4545" + +::= { mib-2 141 } + +ipsAuthNotifications OBJECT IDENTIFIER ::= { ipsAuthMibModule 0 } +ipsAuthObjects OBJECT IDENTIFIER ::= { ipsAuthMibModule 1 } +ipsAuthConformance OBJECT IDENTIFIER ::= { ipsAuthMibModule 2 } + +-- Textual Conventions + +IpsAuthAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "IP Storage requires the use of address information + that uses not only the InetAddress type defined in the + INET-ADDRESS-MIB, but also Fibre Channel type defined + in the Fibre Channel Management MIB. Although these + address types are recognized in the IANA Address Family + Numbers MIB, the addressing mechanisms have not been + merged into a well-known, common type. This data type, + the IpsAuthAddress, performs the merging for this MIB + module. + + The formats of objects of this type are determined by + a corresponding object with syntax AddressFamilyNumbers, + and thus every object defined using this TC must + identify the object with syntax AddressFamilyNumbers + that specifies its type. + + The syntax and semantics of this object depend on the + identified AddressFamilyNumbers object as follows: + + AddressFamilyNumbers this object + ==================== =========== + ipV4(1) restricted to the same syntax and + semantics as the InetAddressIPv4 TC. + + ipV6(2) restricted to the same syntax and + semantics as the InetAddressIPv6 TC. + + fibreChannelWWPN (22) + & fibreChannelWWNN(23) restricted to the same syntax and + semantics as the FcNameIdOrZero TC. + + Types other than the above should not be used unless + + + + the corresponding format of the IpsAuthAddress object is + further specified (e.g., in a future revision of this TC)." + REFERENCE + "IANA-ADDRESS-FAMILY-NUMBERS-MIB; + INET-ADDRESS-MIB (RFC 4001); + FC-MGMT-MIB (RFC 4044)." + SYNTAX OCTET STRING (SIZE(0..255)) + +--****************************************************************** + +ipsAuthDescriptors OBJECT IDENTIFIER ::= { ipsAuthObjects 1 } + +ipsAuthMethodTypes OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Registration point for Authentication Method Types." + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthDescriptors 1 } + +ipsAuthMethodNone OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when no authentication + method is used." + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthMethodTypes 1 } + +ipsAuthMethodSrp OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the authentication + method is SRP." + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthMethodTypes 2 } + +ipsAuthMethodChap OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the authentication + method is CHAP." + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthMethodTypes 3 } + +ipsAuthMethodKerberos OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the authentication + method is Kerberos." + + + + REFERENCE "RFC 3720, iSCSI Protocol Specification." +::= { ipsAuthMethodTypes 4 } + +--****************************************************************** + +ipsAuthInstance OBJECT IDENTIFIER ::= { ipsAuthObjects 2 } + +-- Instance Attributes Table + +ipsAuthInstanceAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthInstanceAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Authorization instances present on the system." +::= { ipsAuthInstance 2 } + +ipsAuthInstanceAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthInstanceAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a particular Authorization instance." + INDEX { ipsAuthInstIndex } +::= { ipsAuthInstanceAttributesTable 1 } + +IpsAuthInstanceAttributesEntry ::= SEQUENCE { + ipsAuthInstIndex Unsigned32, + ipsAuthInstDescr SnmpAdminString, + ipsAuthInstStorageType StorageType +} + +ipsAuthInstIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular authorization instance. This index value + must not be modified or reused by an agent unless + a reboot has occurred. An agent should attempt to + keep this value persistent across reboots." +::= { ipsAuthInstanceAttributesEntry 1 } + +ipsAuthInstDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "A character string, determined by the implementation to + describe the authorization instance. When only a single + instance is present, this object may be set to the + zero-length string; with multiple authorization + instances, it must be set to a unique value in an + implementation-dependent manner to describe the purpose + of the respective instance. If this is deployed in a + master agent with more than one subagent implementing + this MIB module, the master agent is responsible for + ensuring that this object is unique across all + subagents." +::= { ipsAuthInstanceAttributesEntry 2 } + +ipsAuthInstStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for all read-write objects within this + row. Rows in this table are always created via an + external process, and may have a storage type of readOnly + or permanent. Conceptual rows having the value 'permanent' + need not allow write access to any columnar objects in + the row. + + If this object has the value 'volatile', modifications + to read-write objects in this row are not persistent + across reboots. If this object has the value + 'nonVolatile', modifications to objects in this row + are persistent. + + An implementation may choose to allow this object + to be set to either 'nonVolatile' or 'volatile', + allowing the management application to choose this + behavior." + DEFVAL { volatile } +::= { ipsAuthInstanceAttributesEntry 3 } + +ipsAuthIdentity OBJECT IDENTIFIER ::= { ipsAuthObjects 3 } + +-- User Identity Attributes Table + +ipsAuthIdentAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthIdentAttributesEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A list of user identities, each belonging to a + particular ipsAuthInstance." +::= { ipsAuthIdentity 1 } + +ipsAuthIdentAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthIdentAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + describing a user identity within an authorization + instance on this node." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex } +::= { ipsAuthIdentAttributesTable 1 } + +IpsAuthIdentAttributesEntry ::= SEQUENCE { + ipsAuthIdentIndex Unsigned32, + ipsAuthIdentDescription SnmpAdminString, + ipsAuthIdentRowStatus RowStatus, + ipsAuthIdentStorageType StorageType +} + +ipsAuthIdentIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular identity instance within an authorization + instance present on the node. This index value + must not be modified or reused by an agent unless + a reboot has occurred. An agent should attempt to + keep this value persistent across reboots." +::= { ipsAuthIdentAttributesEntry 1 } + +ipsAuthIdentDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string describing this particular identity." +::= { ipsAuthIdentAttributesEntry 2 } + +ipsAuthIdentRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthIdentDescription may be set while + ipsAuthIdentRowStatus is 'active'." +::= { ipsAuthIdentAttributesEntry 3 } + +ipsAuthIdentStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthIdentAttributesEntry 4 } + +ipsAuthIdentityName OBJECT IDENTIFIER ::= { ipsAuthObjects 4 } + +-- User Initiator Name Attributes Table + +ipsAuthIdentNameAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthIdentNameAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of unique names that can be used to positively + identify a particular user identity." +::= { ipsAuthIdentityName 1 } + +ipsAuthIdentNameAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthIdentNameAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a unique identity name, which can be used + to identify a user identity within a particular + authorization instance." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, + ipsAuthIdentNameIndex } +::= { ipsAuthIdentNameAttributesTable 1 } + + + + +IpsAuthIdentNameAttributesEntry ::= SEQUENCE { + ipsAuthIdentNameIndex Unsigned32, + ipsAuthIdentName SnmpAdminString, + ipsAuthIdentNameRowStatus RowStatus, + ipsAuthIdentNameStorageType StorageType +} + +ipsAuthIdentNameIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular identity name instance within an + ipsAuthIdentity within an authorization instance. + This index value must not be modified or reused by + an agent unless a reboot has occurred. An agent + should attempt to keep this value persistent across + reboots." +::= { ipsAuthIdentNameAttributesEntry 1 } + +ipsAuthIdentName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string that is the unique name of an + identity that may be used to identify this ipsAuthIdent + entry." +::= { ipsAuthIdentNameAttributesEntry 2 } + +ipsAuthIdentNameRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthIdentName may be set when this value is 'active'." +::= { ipsAuthIdentNameAttributesEntry 3 } + +ipsAuthIdentNameStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthIdentNameAttributesEntry 4 } + +ipsAuthIdentityAddress OBJECT IDENTIFIER ::= { ipsAuthObjects 5 } + +-- User Initiator Address Attributes Table + +ipsAuthIdentAddrAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthIdentAddrAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of address ranges that are allowed to serve + as the endpoint addresses of a particular identity. + An address range includes a starting and ending address + and an optional netmask, and an address type indicator, + which can specify whether the address is IPv4, IPv6, + FC-WWPN, or FC-WWNN." +::= { ipsAuthIdentityAddress 1 } + +ipsAuthIdentAddrAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthIdentAddrAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to an address range that is used as part + of the authorization of an identity + within an authorization instance on this node." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, + ipsAuthIdentAddrIndex } +::= { ipsAuthIdentAddrAttributesTable 1 } + +IpsAuthIdentAddrAttributesEntry ::= SEQUENCE { + ipsAuthIdentAddrIndex Unsigned32, + ipsAuthIdentAddrType AddressFamilyNumbers, + ipsAuthIdentAddrStart IpsAuthAddress, + ipsAuthIdentAddrEnd IpsAuthAddress, + ipsAuthIdentAddrRowStatus RowStatus, + ipsAuthIdentAddrStorageType StorageType +} + +ipsAuthIdentAddrIndex OBJECT-TYPE + + + + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular ipsAuthIdentAddress instance within an + ipsAuthIdentity within an authorization instance + present on the node. + This index value must not be modified or reused by + an agent unless a reboot has occurred. An agent + should attempt to keep this value persistent across + reboots." +::= { ipsAuthIdentAddrAttributesEntry 1 } + +ipsAuthIdentAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address types used in the ipsAuthIdentAddrStart + and ipsAuthAddrEnd objects. This type is taken + from the IANA address family types." +::= { ipsAuthIdentAddrAttributesEntry 2 } + +ipsAuthIdentAddrStart OBJECT-TYPE + SYNTAX IpsAuthAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The starting address of the allowed address range. + The format of this object is determined by + ipsAuthIdentAddrType." +::= { ipsAuthIdentAddrAttributesEntry 3 } + +ipsAuthIdentAddrEnd OBJECT-TYPE + SYNTAX IpsAuthAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ending address of the allowed address range. + If the ipsAuthIdentAddrEntry specifies a single + address, this shall match the ipsAuthIdentAddrStart. + The format of this object is determined by + ipsAuthIdentAddrType." +::= { ipsAuthIdentAddrAttributesEntry 4 } + +ipsAuthIdentAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The values of + ipsAuthIdentAddrStart and ipsAuthIdentAddrEnd may be set + when this value is 'active'. The value of + ipsAuthIdentAddrType may not be set when this value is + 'active'." +::= { ipsAuthIdentAddrAttributesEntry 5 } + +ipsAuthIdentAddrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthIdentAddrAttributesEntry 6 } + +ipsAuthCredential OBJECT IDENTIFIER ::= { ipsAuthObjects 6 } + +-- Credential Attributes Table + +ipsAuthCredentialAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthCredentialAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of credentials related to user identities + that are allowed as valid authenticators of the + particular identity." +::= { ipsAuthCredential 1 } + +ipsAuthCredentialAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthCredentialAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a credential that verifies a user + identity within an authorization instance. + + + + To provide complete information in this MIB for a credential, + the management station must not only create the row in this + table but must also create a row in another table, where the + other table is determined by the value of + ipsAuthCredAuthMethod, e.g., if ipsAuthCredAuthMethod has the + value ipsAuthMethodChap, a row must be created in the + ipsAuthCredChapAttributesTable." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, ipsAuthCredIndex } +::= { ipsAuthCredentialAttributesTable 1 } + +IpsAuthCredentialAttributesEntry ::= SEQUENCE { + ipsAuthCredIndex Unsigned32, + ipsAuthCredAuthMethod AutonomousType, + ipsAuthCredRowStatus RowStatus, + ipsAuthCredStorageType StorageType +} + +ipsAuthCredIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular Credential instance within an instance + present on the node. + This index value must not be modified or reused by + an agent unless a reboot has occurred. An agent + should attempt to keep this value persistent across + reboots." +::= { ipsAuthCredentialAttributesEntry 1 } + +ipsAuthCredAuthMethod OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains an OBJECT IDENTIFIER + that identifies the authentication method + used with this credential. + + When a row is created in this table, a corresponding + row must be created by the management station + in a corresponding table specified by this value. + + When a row is deleted from this table, the corresponding + row must be automatically deleted by the agent in + the corresponding table specified by this value. + + + + + If the value of this object is ipsAuthMethodNone, no + corresponding rows are created or deleted from other + tables. + + Some standardized values for this object are defined + within the ipsAuthMethodTypes subtree." +::= { ipsAuthCredentialAttributesEntry 2 } + +ipsAuthCredRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthCredAuthMethod must not be changed while this row + is 'active'." +::= { ipsAuthCredentialAttributesEntry 3 } + +ipsAuthCredStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthCredentialAttributesEntry 4 } + +ipsAuthCredChap OBJECT IDENTIFIER ::= { ipsAuthObjects 7 } + +-- Credential Chap-Specific Attributes Table + +ipsAuthCredChapAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthCredChapAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of CHAP attributes for credentials that + use ipsAuthMethodChap as their ipsAuthCredAuthMethod. + + A row in this table can only exist when an instance of + the ipsAuthCredAuthMethod object exists (or is created + + + + simultaneously) having the same instance identifiers + and a value of 'ipsAuthMethodChap'." +::= { ipsAuthCredChap 1 } + +ipsAuthCredChapAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthCredChapAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a credential that uses + ipsAuthMethodChap as their ipsAuthCredAuthMethod. + + When a row is created in ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredChap, the + management station must create a corresponding row + in this table. + + When a row is deleted from ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredChap, the + agent must delete the corresponding row (if any) in + this table." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, ipsAuthCredIndex } +::= { ipsAuthCredChapAttributesTable 1 } + +IpsAuthCredChapAttributesEntry ::= SEQUENCE { + ipsAuthCredChapUserName SnmpAdminString, + ipsAuthCredChapRowStatus RowStatus, + ipsAuthCredChapStorageType StorageType +} + +ipsAuthCredChapUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string containing the CHAP user name for this + credential." + REFERENCE + "W. Simpson, RFC 1994: PPP Challenge Handshake + Authentication Protocol (CHAP), August 1996" +::= { ipsAuthCredChapAttributesEntry 1 } + +ipsAuthCredChapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthCredChapUserName may be changed while this row + is 'active'." +::= { ipsAuthCredChapAttributesEntry 2 } + +ipsAuthCredChapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthCredChapAttributesEntry 3 } + +ipsAuthCredSrp OBJECT IDENTIFIER ::= { ipsAuthObjects 8 } + +-- Credential Srp-Specific Attributes Table + +ipsAuthCredSrpAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthCredSrpAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of SRP attributes for credentials that + use ipsAuthMethodSrp as its ipsAuthCredAuthMethod. + + A row in this table can only exist when an instance of + the ipsAuthCredAuthMethod object exists (or is created + simultaneously) having the same instance identifiers + and a value of 'ipsAuthMethodSrp'." +::= { ipsAuthCredSrp 1 } + +ipsAuthCredSrpAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthCredSrpAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a credential that uses + ipsAuthMethodSrp as their ipsAuthCredAuthMethod. + + + + + When a row is created in ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredSrp, the + management station must create a corresponding row + in this table. + + When a row is deleted from ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredSrp, the + agent must delete the corresponding row (if any) in + this table." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, ipsAuthCredIndex } +::= { ipsAuthCredSrpAttributesTable 1 } + +IpsAuthCredSrpAttributesEntry ::= SEQUENCE { + ipsAuthCredSrpUserName SnmpAdminString, + ipsAuthCredSrpRowStatus RowStatus, + ipsAuthCredSrpStorageType StorageType +} + +ipsAuthCredSrpUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string containing the SRP user name for this + credential." + REFERENCE + "T. Wu, RFC 2945: The SRP Authentication and Key + Exchange System, September 2000" +::= { ipsAuthCredSrpAttributesEntry 1 } + +ipsAuthCredSrpRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthCredSrpUserName may be changed while the status + of this row is 'active'." +::= { ipsAuthCredSrpAttributesEntry 2 } + +ipsAuthCredSrpStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthCredSrpAttributesEntry 3 } + +ipsAuthCredKerberos OBJECT IDENTIFIER ::= { ipsAuthObjects 9 } + +-- Credential Kerberos-Specific Attributes Table + +ipsAuthCredKerbAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpsAuthCredKerbAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Kerberos attributes for credentials that + use ipsAuthMethodKerberos as their ipsAuthCredAuthMethod. + + A row in this table can only exist when an instance of + the ipsAuthCredAuthMethod object exists (or is created + simultaneously) having the same instance identifiers + and a value of 'ipsAuthMethodKerb'." +::= { ipsAuthCredKerberos 1 } + +ipsAuthCredKerbAttributesEntry OBJECT-TYPE + SYNTAX IpsAuthCredKerbAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a credential that uses + ipsAuthMethodKerberos as its ipsAuthCredAuthMethod. + + When a row is created in ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredKerberos, the + management station must create a corresponding row + in this table. + + When a row is deleted from ipsAuthCredentialAttributesTable + with ipsAuthCredAuthMethod = ipsAuthCredKerberos, the + agent must delete the corresponding row (if any) in + this table." + INDEX { ipsAuthInstIndex, ipsAuthIdentIndex, ipsAuthCredIndex } +::= { ipsAuthCredKerbAttributesTable 1 } + +IpsAuthCredKerbAttributesEntry ::= SEQUENCE { + + + + ipsAuthCredKerbPrincipal SnmpAdminString, + ipsAuthCredKerbRowStatus RowStatus, + ipsAuthCredKerbStorageType StorageType +} + +ipsAuthCredKerbPrincipal OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A character string containing a Kerberos principal + for this credential." + REFERENCE + "C. Neuman, S. Hartman, and K. Raeburn, RFC 4120: + The Kerberos Network Authentication Service (V5), + July 2005" +::= { ipsAuthCredKerbAttributesEntry 1 } + +ipsAuthCredKerbRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + Rows may be discarded using RowStatus. The value of + ipsAuthCredKerbPrincipal may be changed while this row + is 'active'." +::= { ipsAuthCredKerbAttributesEntry 2 } + +ipsAuthCredKerbStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for all read-create objects in this row. + Rows in this table that were created through an external + process may have a storage type of readOnly or permanent. + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { ipsAuthCredKerbAttributesEntry 3 } + +--****************************************************************** +-- Notifications + +-- There are no notifications necessary in this MIB module. + + + +--****************************************************************** + +-- Conformance Statements + +ipsAuthCompliances OBJECT IDENTIFIER ::= { ipsAuthConformance 1 } +ipsAuthGroups OBJECT IDENTIFIER ::= { ipsAuthConformance 2 } + +ipsAuthInstanceAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthInstDescr, + ipsAuthInstStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + authorization instances." +::= { ipsAuthGroups 1 } + +ipsAuthIdentAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthIdentDescription, + ipsAuthIdentRowStatus, + ipsAuthIdentStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + user identities within an authorization instance." +::= { ipsAuthGroups 2 } + +ipsAuthIdentNameAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthIdentName, + ipsAuthIdentNameRowStatus, + ipsAuthIdentNameStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + user names within user identities within an authorization + instance." +::= { ipsAuthGroups 3 } + +ipsAuthIdentAddrAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthIdentAddrType, + ipsAuthIdentAddrStart, + ipsAuthIdentAddrEnd, + + + + ipsAuthIdentAddrRowStatus, + ipsAuthIdentAddrStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + address ranges within user identities within an + authorization instance." +::= { ipsAuthGroups 4 } + +ipsAuthIdentCredAttributesGroup OBJECT-GROUP + OBJECTS { + ipsAuthCredAuthMethod, + ipsAuthCredRowStatus, + ipsAuthCredStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + credentials within user identities within an authorization + instance." +::= { ipsAuthGroups 5 } + +ipsAuthIdentChapAttrGroup OBJECT-GROUP + OBJECTS { + ipsAuthCredChapUserName, + ipsAuthCredChapRowStatus, + ipsAuthCredChapStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + CHAP credentials within user identities within an + authorization instance." +::= { ipsAuthGroups 6 } + +ipsAuthIdentSrpAttrGroup OBJECT-GROUP + OBJECTS { + ipsAuthCredSrpUserName, + ipsAuthCredSrpRowStatus, + ipsAuthCredSrpStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + SRP credentials within user identities within an + authorization instance." +::= { ipsAuthGroups 7 } + + + +ipsAuthIdentKerberosAttrGroup OBJECT-GROUP + OBJECTS { + ipsAuthCredKerbPrincipal, + ipsAuthCredKerbRowStatus, + ipsAuthCredKerbStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + Kerberos credentials within user identities within an + authorization instance." +::= { ipsAuthGroups 8 } + +--****************************************************************** + +ipsAuthComplianceV1 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Initial version of compliance statement based on + initial version of this MIB module. + + The Instance and Identity groups are mandatory; + at least one of the other groups (Name, Address, + Credential, Certificate) is also mandatory for + any given implementation." + MODULE -- this module + MANDATORY-GROUPS { + ipsAuthInstanceAttributesGroup, + ipsAuthIdentAttributesGroup + } + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when necessary. + + GROUP ipsAuthIdentNameAttributesGroup + DESCRIPTION + "This group is mandatory for all implementations + that make use of unique identity names." + + GROUP ipsAuthIdentAddrAttributesGroup + DESCRIPTION + "This group is mandatory for all implementations + that use addresses to help verify identities." + + GROUP ipsAuthIdentCredAttributesGroup + DESCRIPTION + "This group is mandatory for all implementations + that use credentials to help verify identities." + + + + GROUP ipsAuthIdentChapAttrGroup + DESCRIPTION + "This group is mandatory for all implementations + that use CHAP to help verify identities. + + The ipsAuthIdentCredAttributesGroup must be + implemented if this group is implemented." + + GROUP ipsAuthIdentSrpAttrGroup + DESCRIPTION + "This group is mandatory for all implementations + that use SRP to help verify identities. + + The ipsAuthIdentCredAttributesGroup must be + implemented if this group is implemented." + + GROUP ipsAuthIdentKerberosAttrGroup + DESCRIPTION + "This group is mandatory for all implementations + that use Kerberos to help verify identities. + + The ipsAuthIdentCredAttributesGroup must be + implemented if this group is implemented." + + OBJECT ipsAuthInstDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthInstStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentDescription + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentRowStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + + + + OBJECT ipsAuthIdentName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentNameRowStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + OBJECT ipsAuthIdentAddrType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentAddrStart + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentAddrEnd + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthIdentAddrRowStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + OBJECT ipsAuthCredAuthMethod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthCredRowStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + + + + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + OBJECT ipsAuthCredChapUserName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthCredChapRowStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + OBJECT ipsAuthCredSrpUserName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthCredSrpRowStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the + six enumerated values for the RowStatus textual + convention need be supported, specifically: + active(1)." + + OBJECT ipsAuthCredKerbPrincipal + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipsAuthCredKerbRowStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + +::= { ipsAuthCompliances 1 } + +END diff --git a/mibs/ietf/IPSEC-SPD-MIB b/mibs/ietf/IPSEC-SPD-MIB new file mode 100644 index 0000000..eaa7a86 --- /dev/null +++ b/mibs/ietf/IPSEC-SPD-MIB @@ -0,0 +1,2849 @@ +IPSEC-SPD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Integer32, + Unsigned32, mib-2 FROM SNMPv2-SMI + -- [RFC2578] + + TEXTUAL-CONVENTION, RowStatus, TruthValue, + TimeStamp, StorageType, VariablePointer + FROM SNMPv2-TC + -- [RFC2579] + + + + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + -- [RFC2580] + + InterfaceIndex + FROM IF-MIB + -- [RFC2863] + + diffServMIBMultiFieldClfrGroup, IfDirection, + diffServMultiFieldClfrNextFree + FROM DIFFSERV-MIB + -- [RFC3289] + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB + -- [RFC4001] + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + -- [RFC3411] + + ; + +-- +-- module identity +-- + +spdMIB MODULE-IDENTITY + LAST-UPDATED "200702070000Z" -- 7 February 2007 + ORGANIZATION "IETF IP Security Policy Working Group" + CONTACT-INFO "Michael Baer + P.O. Box 72682 + Davis, CA 95617 + Phone: +1 530 902 3131 + Email: baerm@tislabs.com + + Ricky Charlet + Email: rcharlet@alumni.calpoly.edu + + Wes Hardaker + Sparta, Inc. + P.O. Box 382 + Davis, CA 95617 + Phone: +1 530 792 1913 + Email: hardaker@tislabs.com + + Robert Story + Revelstone Software + PO Box 1812 + + + + Tucker, GA 30085 + Phone: +1 770 617 3722 + Email: rstory@ipsp.revelstone.com + + Cliff Wang + ARO + 4300 S. Miami Blvd. + Durham, NC 27703 + E-Mail: cliffwangmail@yahoo.com" + DESCRIPTION + "This MIB module defines configuration objects for managing + IPsec Security Policies. In general, this MIB can be + implemented anywhere IPsec security services exist (e.g., + bump-in-the-wire, host, gateway, firewall, router, etc.). + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4807; see the RFC itself for + full legal notices." + +-- Revision History + + REVISION "200702070000Z" -- 7 February 2007 + DESCRIPTION "Initial version, published as RFC 4807." + + ::= { mib-2 153 } + +-- +-- groups of related objects +-- + +spdConfigObjects OBJECT IDENTIFIER + ::= { spdMIB 1 } +spdNotificationObjects OBJECT IDENTIFIER + ::= { spdMIB 2 } +spdConformanceObjects OBJECT IDENTIFIER + ::= { spdMIB 3 } +spdActions OBJECT IDENTIFIER + ::= { spdMIB 4 } + +-- +-- Textual Conventions +-- + +SpdBooleanOperator ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The SpdBooleanOperator operator is used to specify + whether sub-components in a decision-making process are + + + + ANDed or ORed together to decide if the resulting + expression is true or false." + SYNTAX INTEGER { or(1), and(2) } + +SpdAdminStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The SpdAdminStatus is used to specify the administrative + status of an object. Objects that are disabled MUST NOT + be used by the packet processing engine." + SYNTAX INTEGER { enabled(1), disabled(2) } + +SpdIPPacketLogging ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "SpdIPPacketLogging specifies whether an audit message + SHOULD be logged if a packet is passed through a Security + Association (SA) and if some of that packet is included in + the log event. A value of '-1' indicates no logging. A + value of '0' or greater indicates that logging SHOULD be + done and indicates the number of bytes starting at the + beginning of the packet to place in the log. Values greater + than the size of the packet being processed indicate that + the entire packet SHOULD be sent. + + Examples: + '-1' no logging + '0' log but do not include any of the packet in the log + '20' log and include the first 20 bytes of the packet + in the log." + + SYNTAX Integer32 (-1..65535) + + +SpdTimePeriod ::= TEXTUAL-CONVENTION + DISPLAY-HINT "31t" + STATUS current + DESCRIPTION + "This property identifies an overall range of calendar dates + and time. In a boolean context, a value within this time + range, inclusive, is considered true. + + This information is encoded as an octet string using + the UTF-8 transformation format described in STD 63, + RFC 3629. + + It uses the format suggested in RFC 3060. An octet string + + + + represents a start date and time and an end date and time. + For example: + + yyyymmddThhmmss/yyyymmddThhmmss + + Where: yyyy = year mm = month dd = day + hh = hour mm = minute ss = second + + The first 'yyyymmddThhmmss' sub-string indicates the start + date and time. The second 'yyyymmddThhmmss' sub-string + indicates the end date and time. The character 'T' within + these sub-strings indicates the beginning of the time + portion of each sub-string. The solidus character '/' + separates the start from the end date and time. The end + date and time MUST be subsequent to the start date and + time. + + There are also two allowed substitutes for a + 'yyyymmddThhmmss' sub-string: one for the start date and + time, and one for the end date and time. + + If the start date and time are replaced with the string + 'THISANDPRIOR', this sub-string would indicate the current + date and time and the previous dates and time. + + If the end date and time are replaced with the string + 'THISANDFUTURE', this sub-string would indicate the current + date and time and the subsequent dates and time. + + Any of the following SHOULD be considered a + 'wrongValue' error: + - Setting a value with the end date and time earlier than + or equal to the start date and time. + - Setting the start date and time to 'THISANDFUTURE'. + - Setting the end date and time to 'THISANDPRIOR'." + REFERENCE "RFC 3060, 3269" + SYNTAX OCTET STRING (SIZE (0..31)) +-- +-- Policy group definitions +-- + +spdLocalConfigObjects OBJECT IDENTIFIER + ::= { spdConfigObjects 1 } + +spdIngressPolicyGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "This object indicates the global system policy group that + is to be applied on ingress packets (i.e., arriving at an + interface from a network) when a given endpoint does not + contain a policy definition in the spdEndpointToGroupTable. + Its value can be used as an index into the + spdGroupContentsTable to retrieve a list of policies. A + zero length string indicates that no system-wide policy exists + and the default policy of 'drop' SHOULD be executed for + ingress packets until one is imposed by either this object + or by the endpoint processing a given packet. + + This object MUST be persistent" + DEFVAL { "" } + ::= { spdLocalConfigObjects 1 } + +spdEgressPolicyGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates the policy group containing the + global system policy that is to be applied on egress + packets (i.e., packets leaving an interface and entering a + network) when a given endpoint does not contain a policy + definition in the spdEndpointToGroupTable. Its value can + be used as an index into the spdGroupContentsTable to + retrieve a list of policies. A zero length string + indicates that no system-wide policy exists and the default + policy of 'drop' SHOULD be executed for egress packets + until one is imposed by either this object or by the + endpoint processing a given packet. + + This object MUST be persistent" + DEFVAL { "" } + ::= { spdLocalConfigObjects 2 } + + +spdEndpointToGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdEndpointToGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maps policies (groupings) onto an endpoint + (interface). A policy group assigned to an endpoint is then + used to control access to the network traffic passing + through that endpoint. + + + + + If an endpoint has been configured with a policy group and + no rule within that policy group matches that packet, the + default action in this case SHALL be to drop the packet. + + If no policy group has been assigned to an endpoint, then + the policy group specified by spdIngressPolicyGroupName MUST + be used on traffic inbound from the network through that + endpoint, and the policy group specified by + spdEgressPolicyGroupName MUST be used for traffic outbound + to the network through that endpoint." + ::= { spdConfigObjects 2 } + +spdEndpointToGroupEntry OBJECT-TYPE + SYNTAX SpdEndpointToGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A mapping assigning a policy group to an endpoint." + + INDEX { spdEndGroupDirection, spdEndGroupInterface } + ::= { spdEndpointToGroupTable 1 } + +SpdEndpointToGroupEntry ::= SEQUENCE { + spdEndGroupDirection IfDirection, + spdEndGroupInterface InterfaceIndex, + spdEndGroupName SnmpAdminString, + spdEndGroupLastChanged TimeStamp, + spdEndGroupStorageType StorageType, + spdEndGroupRowStatus RowStatus +} + +spdEndGroupDirection OBJECT-TYPE + SYNTAX IfDirection + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object indicates which direction of packets crossing + the interface are associated with which spdEndGroupName + object. Ingress packets, or packets into the device match + when this value is inbound(1). Egress packets or packets + out of the device match when this value is outbound(2)." + ::= { spdEndpointToGroupEntry 1 } + +spdEndGroupInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This value matches the IF-MIB's ifTable's ifIndex column + and indicates the interface associated with a given + endpoint. This object can be used to uniquely identify an + endpoint that a set of policy groups are applied to." + ::= { spdEndpointToGroupEntry 2 } + +spdEndGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The policy group name to apply at this endpoint. The + value of the spdEndGroupName object is then used as an + index into the spdGroupContentsTable to come up with a list + of rules that MUST be applied at this endpoint." + ::= { spdEndpointToGroupEntry 3 } + +spdEndGroupLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdEndpointToGroupEntry 4 } + +spdEndGroupStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdEndpointToGroupEntry 5 } + +spdEndGroupRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + This object is considered 'notReady' and MUST NOT be set to + active until one or more active rows exist within the + spdGroupContentsTable for the group referenced by the + spdEndGroupName object." + ::= { spdEndpointToGroupEntry 6 } + +-- +-- policy group definition table +-- + +spdGroupContentsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdGroupContentsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of rules and/or subgroups + contained within a given policy group. For a given value + of spdGroupContName, the set of rows sharing that value + forms a 'group'. The rows in a group MUST be processed + according to the value of the spdGroupContPriority object + in each row. The processing MUST be executed starting with + the lowest value of spdGroupContPriority and in ascending + order thereafter. + + If an action is executed as the result of the processing of + a row in a group, the processing of further rows in that + group MUST stop. Iterating to the next policy group row by + finding the next largest spdGroupContPriority object SHALL + only be done if no actions were run while processing the + current row for a given packet." + ::= { spdConfigObjects 3 } + +spdGroupContentsEntry OBJECT-TYPE + SYNTAX SpdGroupContentsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a given sub-component within a policy group. A + sub-component is either a rule or another group as + indicated by spdGroupContComponentType and referenced by + spdGroupContComponentName." + + + + INDEX { spdGroupContName, spdGroupContPriority } + ::= { spdGroupContentsTable 1 } + +SpdGroupContentsEntry ::= SEQUENCE { + spdGroupContName SnmpAdminString, + spdGroupContPriority Integer32, + spdGroupContFilter VariablePointer, + spdGroupContComponentType INTEGER, + spdGroupContComponentName SnmpAdminString, + spdGroupContLastChanged TimeStamp, + spdGroupContStorageType StorageType, + spdGroupContRowStatus RowStatus +} + +spdGroupContName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The administrative name of the group associated with this + row. A 'group' is formed by all the rows in this table that + have the same value of this object." + ::= { spdGroupContentsEntry 1 } + +spdGroupContPriority OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority (sequence number) of the sub-component in + a group that this row represents. This value indicates + the order that each row of this table MUST be processed + from low to high. For example, a row with a priority of 0 + is processed before a row with a priority of 1, a 1 before + a 2, etc." + ::= { spdGroupContentsEntry 2 } + +spdGroupContFilter OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "spdGroupContFilter points to a filter that is evaluated + to determine whether the spdGroupContComponentName within + this row is exercised. Managers can use this object to + classify groups of rules, or subgroups, together in order to + achieve a greater degree of control and optimization over + the execution order of the items within the group. If the + + + + filter evaluates to false, the rule or subgroup will be + skipped and the next rule or subgroup will be evaluated + instead. This value can be used to indicate a scalar or + row in a table. When indicating a row in a table, this + value MUST point to the first column instance in that row. + + An example usage of this object would be to limit a + group of rules to executing only when the IP packet + being processed is designated to be processed by IKE. + This effectively creates a group of IKE-specific rules. + + The following tables and scalars can be pointed to by this + column. All but diffServMultiFieldClfrTable are defined in + this MIB: + + diffServMultiFieldClfrTable + spdIpOffsetFilterTable + spdTimeFilterTable + spdCompoundFilterTable + spdTrueFilter + spdIpsoHeaderFilterTable + + Implementations MAY choose to provide support for other + filter tables or scalars. + + If this column is set to a VariablePointer value, which + references a non-existent row in an otherwise supported + table, the inconsistentName exception MUST be returned. If + the table or scalar pointed to by the VariablePointer is + not supported at all, then an inconsistentValue exception + MUST be returned. + + If, during packet processing, a row in this table is applied + to a packet and the value of this column in that row + references a non-existent or non-supported object, the + packet MUST be dropped." + REFERENCE "RFC 3289" + DEFVAL { spdTrueFilterInstance } + ::= { spdGroupContentsEntry 3 } + +spdGroupContComponentType OBJECT-TYPE + SYNTAX INTEGER { group(1), rule(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the spdGroupContComponentName object + is the name of another group defined within the + spdGroupContentsTable or is the name of a rule defined + + + + within the spdRuleDefinitionTable." + DEFVAL { rule } + ::= { spdGroupContentsEntry 4 } + +spdGroupContComponentName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the policy rule or subgroup contained within + this row, as indicated by the spdGroupContComponentType + object." + ::= { spdGroupContentsEntry 5 } + +spdGroupContLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, + this object SHOULD have a zero value." + ::= { spdGroupContentsEntry 6 } + +spdGroupContStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdGroupContentsEntry 7 } + +spdGroupContRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + This object MUST NOT be set to active until the row to + which the spdGroupContComponentName points to exists and is + active. + + If active, this object MUST remain active unless one of the + following two conditions are met: + + I. No active row in spdEndpointToGroupTable exists that + references this row's group (i.e., indicate this row's + spdGroupContName). + + II. Or at least one other active row in this table has a + matching spdGroupContName. + + If neither condition is met, an attempt to set this row to + something other than active MUST result in an + inconsistentValue error." + ::= { spdGroupContentsEntry 8 } + + +-- +-- policy definition table +-- + +spdRuleDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdRuleDefinitionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines a rule by associating a filter + or a set of filters to an action to be executed." + ::= { spdConfigObjects 4 } + +spdRuleDefinitionEntry OBJECT-TYPE + SYNTAX SpdRuleDefinitionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row defining a particular rule definition. A rule + definition binds a filter pointer to an action pointer." + INDEX { spdRuleDefName } + ::= { spdRuleDefinitionTable 1 } + +SpdRuleDefinitionEntry ::= SEQUENCE { + spdRuleDefName SnmpAdminString, + + + + spdRuleDefDescription SnmpAdminString, + spdRuleDefFilter VariablePointer, + spdRuleDefFilterNegated TruthValue, + spdRuleDefAction VariablePointer, + spdRuleDefAdminStatus SpdAdminStatus, + spdRuleDefLastChanged TimeStamp, + spdRuleDefStorageType StorageType, + spdRuleDefRowStatus RowStatus +} + +spdRuleDefName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "spdRuleDefName is the administratively assigned name of + the rule referred to by the spdGroupContComponentName + object." + ::= { spdRuleDefinitionEntry 1 } + +spdRuleDefDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A user defined string. This field MAY be used for + administrative tracking purposes." + DEFVAL { "" } + ::= { spdRuleDefinitionEntry 2 } + +spdRuleDefFilter OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "spdRuleDefFilter points to a filter that is used to + evaluate whether the action associated with this row is + executed or not. The action will only execute if the + filter referenced by this object evaluates to TRUE after + first applying any negation required by the + spdRuleDefFilterNegated object. + + The following tables and scalars can be pointed to by this + column. All but diffServMultiFieldClfrTable are defined in + this MIB. Implementations MAY choose to provide support + for other filter tables or scalars as well: + + diffServMultiFieldClfrTable + + + + spdIpOffsetFilterTable + spdTimeFilterTable + spdCompoundFilterTable + spdTrueFilter + + If this column is set to a VariablePointer value, which + references a non-existent row in an otherwise supported + table, the inconsistentName exception MUST be returned. If + the table or scalar pointed to by the VariablePointer is + not supported at all, then an inconsistentValue exception + MUST be returned. + + If, during packet processing, this column has a value that + references a non-existent or non-supported object, the + packet MUST be dropped." + REFERENCE "RFC 3289" + ::= { spdRuleDefinitionEntry 3 } + +spdRuleDefFilterNegated OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "spdRuleDefFilterNegated specifies whether or not the results of + the filter referenced by the spdRuleDefFilter object is + negated." + DEFVAL { false } + ::= { spdRuleDefinitionEntry 4 } + +spdRuleDefAction OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This column points to the action to be taken. It MAY, + but is not limited to, point to a row in one of the + following tables: + + spdCompoundActionTable + ipsaSaPreconfiguredActionTable + ipiaIkeActionTable + ipiaIpsecActionTable + + It MAY also point to one of the scalar objects beneath + spdStaticActions. + + If this object is set to a pointer to a row in an + unsupported (or unknown) table, an inconsistentValue + + + + error MUST be returned. + + If this object is set to point to a non-existent row in an + otherwise supported table, an inconsistentName error MUST + be returned. + + If, during packet processing, this column has a value that + references a non-existent or non-supported object, the + packet MUST be dropped." + ::= { spdRuleDefinitionEntry 5 } + +spdRuleDefAdminStatus OBJECT-TYPE + SYNTAX SpdAdminStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the current rule definition is considered + active. If the value is enabled, the rule MUST be evaluated + when processing packets. If the value is disabled, the + packet processing MUST continue as if this rule's filter + had effectively failed." + DEFVAL { enabled } + ::= { spdRuleDefinitionEntry 6 } + +spdRuleDefLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdRuleDefinitionEntry 7 } + +spdRuleDefStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a + storage type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + + + + to be writable." + DEFVAL { nonVolatile } + ::= { spdRuleDefinitionEntry 8 } + +spdRuleDefRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + This object MUST NOT be set to active until the containing + conditions, filters, and actions have been defined. Once + active, it MUST remain active until no active + policyGroupContents entries are referencing it. A failed + attempt to do so MUST return an inconsistentValue error." + ::= { spdRuleDefinitionEntry 9 } + +-- +-- Policy compound filter definition table +-- + +spdCompoundFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdCompoundFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table defining compound filters and their associated + parameters. A row in this table can be pointed to by a + spdRuleDefFilter object." + ::= { spdConfigObjects 5 } + +spdCompoundFilterEntry OBJECT-TYPE + SYNTAX SpdCompoundFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the spdCompoundFilterTable. Each entry in this + table represents a compound filter. A filter defined by + this table is considered to have a TRUE return value if and + only if: + + spdCompFiltLogicType is AND and all of the sub-filters + associated with it, as defined in the spdSubfiltersTable, + are all true themselves (after applying any required + + + + negation, as defined by the ficFilterIsNegated object). + + spdCompFiltLogicType is OR and at least one of the + sub-filters associated with it, as defined in the + spdSubfiltersTable, is true itself (after applying any + required negation, as defined by the ficFilterIsNegated + object." + INDEX { spdCompFiltName } + ::= { spdCompoundFilterTable 1 } + +SpdCompoundFilterEntry ::= SEQUENCE { + spdCompFiltName SnmpAdminString, + spdCompFiltDescription SnmpAdminString, + spdCompFiltLogicType SpdBooleanOperator, + spdCompFiltLastChanged TimeStamp, + spdCompFiltStorageType StorageType, + spdCompFiltRowStatus RowStatus +} + +spdCompFiltName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A user definable string. This value is used as an index + into this table." + ::= { spdCompoundFilterEntry 1 } + +spdCompFiltDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A user definable string. This field MAY be used for + your administrative tracking purposes." + DEFVAL { "" } + ::= { spdCompoundFilterEntry 2 } + +spdCompFiltLogicType OBJECT-TYPE + SYNTAX SpdBooleanOperator + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the sub-component filters of this + compound filter are functionally ANDed or ORed together." + DEFVAL { and } + ::= { spdCompoundFilterEntry 3 } + + + + +spdCompFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdCompoundFilterEntry 4 } + +spdCompFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a + storage type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdCompoundFilterEntry 5 } + +spdCompFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + Once active, it MUST NOT have its value changed if any + active rows in the spdRuleDefinitionTable are currently + pointing at this row." + ::= { spdCompoundFilterEntry 6 } + +-- +-- Policy filters in a cf table +-- + +spdSubfiltersTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF SpdSubfiltersEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines a list of filters contained within a + given compound filter defined in the + spdCompoundFilterTable." + ::= { spdConfigObjects 6 } + +spdSubfiltersEntry OBJECT-TYPE + SYNTAX SpdSubfiltersEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the spdSubfiltersTable. There is an entry in + this table for each sub-filter of all compound filters + present in the spdCompoundFilterTable." + INDEX { spdCompFiltName, spdSubFiltPriority } + ::= { spdSubfiltersTable 1 } + +SpdSubfiltersEntry ::= SEQUENCE { + spdSubFiltPriority Integer32, + spdSubFiltSubfilter VariablePointer, + spdSubFiltSubfilterIsNegated TruthValue, + spdSubFiltLastChanged TimeStamp, + spdSubFiltStorageType StorageType, + spdSubFiltRowStatus RowStatus +} + +spdSubFiltPriority OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority of a given filter within a compound filter. + The order of execution is from lowest to highest priority + value (i.e., priority 0 before priority 1, 1 before 2, + etc.). Implementations MAY choose to follow this ordering, + as set by the manager that created the rows. This can allow + a manager to intelligently construct filter lists such that + faster filters are evaluated first." + ::= { spdSubfiltersEntry 1 } + +spdSubFiltSubfilter OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The OID of the contained filter. The value of this + object is a VariablePointer that references the filter to + be included in this compound filter. + + The following tables and scalars can be pointed to by this + column. All but diffServMultiFieldClfrTable are defined in + this MIB. Implementations MAY choose to provide support + for other filter tables or scalars as well: + + diffServMultiFieldClfrTable + spdIpsoHeaderFilterTable + spdIpOffsetFilterTable + spdTimeFilterTable + spdCompoundFilterTable + spdTrueFilter + + If this column is set to a VariablePointer value that + references a non-existent row in an otherwise supported + table, the inconsistentName exception MUST be returned. If + the table or scalar pointed to by the VariablePointer is + not supported at all, then an inconsistentValue exception + MUST be returned. + + If, during packet processing, this column has a value that + references a non-existent or non-supported object, the + packet MUST be dropped." + REFERENCE "RFC 3289" + ::= { spdSubfiltersEntry 2 } + +spdSubFiltSubfilterIsNegated OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether or not the result of applying this sub-filter + is negated." + DEFVAL { false } + ::= { spdSubfiltersEntry 3 } + +spdSubFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + + + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdSubfiltersEntry 4 } + +spdSubFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a + storage type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdSubfiltersEntry 5 } + +spdSubFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + This object cannot be made active until a filter + referenced by the spdSubFiltSubfilter object is both + defined and active. An attempt to do so MUST result in + an inconsistentValue error. + + If active, this object MUST remain active unless one of the + following two conditions are met: + + I. No active row in the SpdCompoundFilterTable exists + that has a matching spdCompFiltName. + + II. Or, at least one other active row in this table has a + matching spdCompFiltName. + + If neither condition is met, an attempt to set this row to + something other than active MUST result in an + inconsistentValue error." + ::= { spdSubfiltersEntry 6 } + + + + +-- +-- Static Filters +-- + +spdStaticFilters OBJECT IDENTIFIER ::= { spdConfigObjects 7 } + +spdTrueFilter OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar indicates a (automatic) true result for + a filter. That is, this is a filter that is always + true; it is useful for adding as a default filter for a + default action or a set of actions." + ::= { spdStaticFilters 1 } + + +spdTrueFilterInstance OBJECT IDENTIFIER ::= { spdTrueFilter 0 } + + +-- +-- Policy IP Offset filter definition table +-- + +spdIpOffsetFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdIpOffsetFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of filter definitions to be + used within the spdRuleDefinitionTable or the + spdSubfiltersTable. + + This type of filter is used to compare an administrator + specified octet string to the octets at a particular + location in a packet." + ::= { spdConfigObjects 8 } + +spdIpOffsetFilterEntry OBJECT-TYPE + SYNTAX SpdIpOffsetFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A definition of a particular filter." + INDEX { spdIpOffFiltName } + ::= { spdIpOffsetFilterTable 1 } + + + + +SpdIpOffsetFilterEntry ::= SEQUENCE { + spdIpOffFiltName SnmpAdminString, + spdIpOffFiltOffset Unsigned32, + spdIpOffFiltType INTEGER, + spdIpOffFiltValue OCTET STRING, + spdIpOffFiltLastChanged TimeStamp, + spdIpOffFiltStorageType StorageType, + spdIpOffFiltRowStatus RowStatus +} + +spdIpOffFiltName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The administrative name for this filter." + ::= { spdIpOffsetFilterEntry 1 } + +spdIpOffFiltOffset OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the byte offset from the front of the entire IP + packet where the value or arithmetic comparison is done. A + value of '0' indicates the first byte of the packet header. + If this value is greater than the length of the packet, the + filter represented by this row should be considered to + fail." + ::= { spdIpOffsetFilterEntry 2 } + +spdIpOffFiltType OBJECT-TYPE + SYNTAX INTEGER { equal(1), + notEqual(2), + arithmeticLess(3), + arithmeticGreaterOrEqual(4), + arithmeticGreater(5), + arithmeticLessOrEqual(6) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This defines the various tests that are used when + evaluating a given filter. + + The various tests definable in this table are as follows: + + equal: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', matches + + + + a value in the packet starting at the given offset in + the packet and comparing the entire OCTET STRING of + 'spdIpOffFiltValue'. Any values compared this way are + assumed to be unsigned integer values in network byte + order of the same length as 'spdIpOffFiltValue'. + + notEqual: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', does + not match a value in the packet starting at the given + offset in the packet and comparing to the entire OCTET + STRING of 'spdIpOffFiltValue'. Any values compared + this way are assumed to be unsigned integer values in + network byte order of the same length as + 'spdIpOffFiltValue'. + + arithmeticLess: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', is + arithmetically less than ('<') the value starting at + the given offset within the packet. The value in the + packet is assumed to be an unsigned integer in network + byte order of the same length as 'spdIpOffFiltValue'. + + arithmeticGreaterOrEqual: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', is + arithmetically greater than or equal to ('>=') the + value starting at the given offset within the packet. + The value in the packet is assumed to be an unsigned + integer in network byte order of the same length as + 'spdIpOffFiltValue'. + + arithmeticGreater: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', is + arithmetically greater than ('>') the value starting at + the given offset within the packet. The value in the + packet is assumed to be an unsigned integer in network + byte order of the same length as 'spdIpOffFiltValue'. + + arithmeticLessOrEqual: + - Tests if the OCTET STRING, 'spdIpOffFiltValue', is + arithmetically less than or equal to ('<=') the value + starting at the given offset within the packet. The + value in the packet is assumed to be an unsigned + integer in network byte order of the same length as + 'spdIpOffFiltValue'." + + ::= { spdIpOffsetFilterEntry 3 } + +spdIpOffFiltValue OBJECT-TYPE + + + + SYNTAX OCTET STRING (SIZE(1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "spdIpOffFiltValue is used for match comparisons of a + packet at spdIpOffFiltOffset." + ::= { spdIpOffsetFilterEntry 4 } + +spdIpOffFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdIpOffsetFilterEntry 5 } + + +spdIpOffFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a + storage type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdIpOffsetFilterEntry 6 } + +spdIpOffFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + If active, this object MUST remain active if it is + + + + referenced by an active row in another table. An attempt + to set it to anything other than active while it is + referenced by an active row in another table MUST result in + an inconsistentValue error." + ::= { spdIpOffsetFilterEntry 7 } + + +-- +-- Time/scheduling filter table +-- + +spdTimeFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdTimeFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a table of filters that can be used to + effectively enable or disable policies based on a valid + time range." + ::= { spdConfigObjects 9 } + +spdTimeFilterEntry OBJECT-TYPE + SYNTAX SpdTimeFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row describing a given time frame for which a policy + is filtered on to activate or deactivate the rule. + + If all the column objects in a row are true for the current + time, the row evaluates as 'true'. More explicitly, the + time matching column objects in a row MUST be logically + ANDed together to form the boolean true/false for the row." + INDEX { spdTimeFiltName } + ::= { spdTimeFilterTable 1 } + +SpdTimeFilterEntry ::= SEQUENCE { + spdTimeFiltName SnmpAdminString, + spdTimeFiltPeriod SpdTimePeriod, + spdTimeFiltMonthOfYearMask BITS, + spdTimeFiltDayOfMonthMask OCTET STRING, + spdTimeFiltDayOfWeekMask BITS, + spdTimeFiltTimeOfDayMask SpdTimePeriod, + spdTimeFiltLastChanged TimeStamp, + spdTimeFiltStorageType StorageType, + spdTimeFiltRowStatus RowStatus +} + + + + +spdTimeFiltName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An administratively assigned name for this filter." + ::= { spdTimeFilterEntry 1 } + + +spdTimeFiltPeriod OBJECT-TYPE + SYNTAX SpdTimePeriod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The valid time period for this filter. This column is + considered 'true' if the current time is within the range of + this object." + DEFVAL { "THISANDPRIOR/THISANDFUTURE" } + ::= { spdTimeFilterEntry 2 } + + +spdTimeFiltMonthOfYearMask OBJECT-TYPE + SYNTAX BITS { january(0), february(1), march(2), + april(3), may(4), june(5), july(6), + august(7), september(8), october(9), + november(10), december(11) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A bit mask that indicates acceptable months of the year. + This column evaluates to 'true' if the current month's bit + is set." + DEFVAL { { january, february, march, april, may, june, july, + august, september, october, november, december } } + ::= { spdTimeFilterEntry 3 } + +spdTimeFiltDayOfMonthMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines which days of the month the current time is + valid for. It is a sequence of 64 BITS, where each BIT + represents a corresponding day of the month in forward or + reverse order. Starting from the left-most bit, the first + 31 bits identify the day of the month, counting from the + beginning of the month. The following 31 bits (bits 32-62) + indicate the day of the month, counting from the end of the + + + + month. For months with fewer than 31 days, the bits that + correspond to the non-existent days of that month are + ignored (e.g., for non-leap year Februarys, bits 29-31 and + 60-62 are ignored). + + This column evaluates to 'true' if the current day of the + month's bit is set. + + For example, a value of 0X'80 00 00 01 00 00 00 00' + indicates that this column evaluates to true on the first + and last days of the month. + + The last two bits in the string MUST be zero." + DEFVAL { 'fffffffffffffffe'H } + ::= { spdTimeFilterEntry 4 } + +spdTimeFiltDayOfWeekMask OBJECT-TYPE + SYNTAX BITS { sunday(0), monday(1), tuesday(2), + wednesday(3), thursday(4), friday(5), + saturday(6) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A bit mask that defines which days of the week that the current + time is valid for. This column evaluates to 'true' if the + current day of the week's bit is set." + DEFVAL { { monday, tuesday, wednesday, thursday, friday, + saturday, sunday } } + ::= { spdTimeFilterEntry 5 } + +spdTimeFiltTimeOfDayMask OBJECT-TYPE + SYNTAX SpdTimePeriod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the start and end time of the day for which this + filter evaluates to true. The date portions of the + spdTimePeriod TC are ignored for purposes of evaluating this + mask, and only the time-specific portions are used. + + This column evaluates to 'true' if the current time of day + is within the range of the start and end times of the day + indicated by this object." + DEFVAL { "00000000T000000/00000000T240000" } + ::= { spdTimeFilterEntry 6 } + +spdTimeFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdTimeFilterEntry 7 } + +spdTimeFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdTimeFilterEntry 8 } + +spdTimeFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this + row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + If active, this object MUST remain active if it is + referenced by an active row in another table. An attempt + to set it to anything other than active while it is + referenced by an active row in another table MUST result in + an inconsistentValue error." + ::= { spdTimeFilterEntry 9 } + +-- +-- IPSO protection authority filtering +-- + + + + +spdIpsoHeaderFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdIpsoHeaderFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of IPSO header filter + definitions to be used within the spdRuleDefinitionTable or + the spdSubfiltersTable. IPSO headers and their values are + described in RFC 1108." + REFERENCE "RFC 1108" + ::= { spdConfigObjects 10 } + +spdIpsoHeaderFilterEntry OBJECT-TYPE + SYNTAX SpdIpsoHeaderFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A definition of a particular filter." + INDEX { spdIpsoHeadFiltName } + ::= { spdIpsoHeaderFilterTable 1 } + +SpdIpsoHeaderFilterEntry ::= SEQUENCE { + spdIpsoHeadFiltName SnmpAdminString, + spdIpsoHeadFiltType BITS, + spdIpsoHeadFiltClassification INTEGER, + spdIpsoHeadFiltProtectionAuth INTEGER, + spdIpsoHeadFiltLastChanged TimeStamp, + spdIpsoHeadFiltStorageType StorageType, + spdIpsoHeadFiltRowStatus RowStatus +} + +spdIpsoHeadFiltName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The administrative name for this filter." + ::= { spdIpsoHeaderFilterEntry 1 } + +spdIpsoHeadFiltType OBJECT-TYPE + SYNTAX BITS { classificationLevel(0), + protectionAuthority(1) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates which of the IPSO header field a + packet is filtered on for this row. If this object is set + to classification(0), the spdIpsoHeadFiltClassification + + + + object indicates how the packet is filtered. If this object + is set to protectionAuthority(1), the + spdIpsoHeadFiltProtectionAuth object indicates how the + packet is filtered." + ::= { spdIpsoHeaderFilterEntry 2 } + +spdIpsoHeadFiltClassification OBJECT-TYPE + SYNTAX INTEGER { topSecret(61), secret(90), + confidential(150), unclassified(171) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the IPSO classification header field + value that the packet MUST have for this row to evaluate to + 'true'. + + The values of these enumerations are defined by RFC 1108." + REFERENCE "RFC 1108" + ::= { spdIpsoHeaderFilterEntry 3 } + +spdIpsoHeadFiltProtectionAuth OBJECT-TYPE + SYNTAX INTEGER { genser(0), siopesi(1), sci(2), + nsa(3), doe(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the IPSO protection authority header + field value that the packet MUST have for this row to + evaluate to 'true'. + + The values of these enumerations are defined by RFC 1108. + Hence the reason the SMIv2 convention of not using 0 in + enumerated lists is violated here." + REFERENCE "RFC 1108" + ::= { spdIpsoHeaderFilterEntry 4 } + +spdIpsoHeadFiltLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + + + + ::= { spdIpsoHeaderFilterEntry 5 } + +spdIpsoHeadFiltStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdIpsoHeaderFilterEntry 6 } + +spdIpsoHeadFiltRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + However, this object MUST NOT be set to active if the + requirements of the spdIpsoHeadFiltType object are not met. + Specifically, if the spdIpsoHeadFiltType bit for + classification(0) is set, the spdIpsoHeadFiltClassification + column MUST have a valid value for the row status to be set + to active. If the spdIpsoHeadFiltType bit for + protectionAuthority(1) is set, the + spdIpsoHeadFiltProtectionAuth column MUST have a valid + value for the row status to be set to active. + + If active, this object MUST remain active if it is + referenced by an active row in another table. An attempt + to set it to anything other than active while it is + referenced by an active row in another table MUST result in + an inconsistentValue error." + ::= { spdIpsoHeaderFilterEntry 7 } + +-- +-- compound actions table +-- + +spdCompoundActionTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF SpdCompoundActionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table used to allow multiple actions to be associated + with a rule. It uses the spdSubactionsTable to do this. + The rows from spdSubactionsTable that are partially indexed + by spdCompActName form the set of compound actions to be + performed. The spdCompActExecutionStrategy column in this + table indicates how those actions are processed." + ::= { spdConfigObjects 11 } + +spdCompoundActionEntry OBJECT-TYPE + SYNTAX SpdCompoundActionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the spdCompoundActionTable." + INDEX { spdCompActName } + ::= { spdCompoundActionTable 1 } + +SpdCompoundActionEntry ::= SEQUENCE { + spdCompActName SnmpAdminString, + spdCompActExecutionStrategy INTEGER, + spdCompActLastChanged TimeStamp, + spdCompActStorageType StorageType, + spdCompActRowStatus RowStatus +} + +spdCompActName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is an administratively assigned name of this + compound action." + ::= { spdCompoundActionEntry 1 } + +spdCompActExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { doAll(1), + doUntilSuccess(2), + doUntilFailure(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates how the sub-actions are executed + based on the success of the actions as they finish + executing. + + + + doAll - run each sub-action regardless of the + exit status of the previous action. + This parent action is always + considered to have acted successfully. + + doUntilSuccess - run each sub-action until one succeeds, + at which point stop processing the + sub-actions within this parent + compound action. If one of the + sub-actions did execute successfully, + this parent action is also considered + to have executed successfully. + + doUntilFailure - run each sub-action until one fails, + at which point stop processing the + sub-actions within this compound + action. If any sub-action fails, the + result of this parent action is + considered to have failed." + DEFVAL { doUntilSuccess } + ::= { spdCompoundActionEntry 2 } + +spdCompActLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdCompoundActionEntry 3 } + +spdCompActStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + + + + ::= { spdCompoundActionEntry 4 } + +spdCompActRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + Once a row in the spdCompoundActionTable has been made + active, this object MUST NOT be set to destroy without + first destroying all the contained rows listed in the + spdSubactionsTable." + ::= { spdCompoundActionEntry 5 } + + +-- +-- actions contained within a compound action +-- + +spdSubactionsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SpdSubactionsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of the sub-actions within a + given compound action. Compound actions executing these + actions MUST execute them in series based on the + spdSubActPriority value, with the lowest value executing + first." + ::= { spdConfigObjects 12 } + +spdSubactionsEntry OBJECT-TYPE + SYNTAX SpdSubactionsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row containing a reference to a given compound-action + sub-action." + INDEX { spdCompActName, spdSubActPriority } + ::= { spdSubactionsTable 1 } + +SpdSubactionsEntry ::= SEQUENCE { + spdSubActPriority Integer32, + spdSubActSubActionName VariablePointer, + + + + spdSubActLastChanged TimeStamp, + spdSubActStorageType StorageType, + spdSubActRowStatus RowStatus +} + +spdSubActPriority OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The priority of a given sub-action within a compound + action. The order in which sub-actions MUST be executed + are based on the value from this column, with the lowest + numeric value executing first (i.e., priority 0 before + priority 1, 1 before 2, etc.)." + ::= { spdSubactionsEntry 1 } + +spdSubActSubActionName OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This column points to the action to be taken. It MAY, + but is not limited to, point to a row in one of the + following tables: + + spdCompoundActionTable - Allowing recursion + ipsaSaPreconfiguredActionTable + ipiaIkeActionTable + ipiaIpsecActionTable + + It MAY also point to one of the scalar objects beneath + spdStaticActions. + + If this object is set to a pointer to a row in an + unsupported (or unknown) table, an inconsistentValue + error MUST be returned. + + If this object is set to point to a non-existent row in + an otherwise supported table, an inconsistentName error + MUST be returned. + + If, during packet processing, this column has a value that + references a non-existent or non-supported object, the + packet MUST be dropped." + ::= { spdSubactionsEntry 2 } + +spdSubActLastChanged OBJECT-TYPE + + + + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this row was last modified + or created either through SNMP SETs or by some other + external means. + + If this row has not been modified since the last + re-initialization of the network management subsystem, this + object SHOULD have a zero value." + ::= { spdSubactionsEntry 3 } + +spdSubActStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that + were created through an external process MAY have a storage + type of readOnly or permanent. + + For a storage type of permanent, none of the columns have + to be writable." + DEFVAL { nonVolatile } + ::= { spdSubactionsEntry 4 } + +spdSubActRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the conceptual status of this row. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified. + + If active, this object MUST remain active unless one of the + following two conditions are met. An attempt to set it to + anything other than active while the following conditions + are not met MUST result in an inconsistentValue error. The + two conditions are: + + I. No active row in the spdCompoundActionTable exists + which has a matching spdCompActName. + + II. Or, at least one other active row in this table has a + matching spdCompActName." + + + + ::= { spdSubactionsEntry 5 } + +-- +-- Static Actions +-- + +-- these are static actions that can be pointed to by the +-- spdRuleDefAction or the spdSubActSubActionName objects to +-- drop, accept, or reject packets. + +spdStaticActions OBJECT IDENTIFIER ::= { spdConfigObjects 13 } + +spdDropAction OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar indicates that a packet MUST be dropped + and SHOULD NOT have action/packet logging." + ::= { spdStaticActions 1 } + +spdDropActionLog OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar indicates that a packet MUST be dropped + and SHOULD have action/packet logging." + ::= { spdStaticActions 2 } + +spdAcceptAction OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This Scalar indicates that a packet MUST be accepted + (pass-through) and SHOULD NOT have action/packet logging." + ::= { spdStaticActions 3 } + +spdAcceptActionLog OBJECT-TYPE + SYNTAX Integer32 (1) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar indicates that a packet MUST be accepted + (pass-through) and SHOULD have action/packet logging." + ::= { spdStaticActions 4 } + + + + +-- +-- +-- Notification objects information +-- +-- + +spdNotificationVariables OBJECT IDENTIFIER ::= + { spdNotificationObjects 1 } + +spdNotifications OBJECT IDENTIFIER ::= + { spdNotificationObjects 0 } + +spdActionExecuted OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Points to the action instance that was executed that + resulted in the notification being sent." + ::= { spdNotificationVariables 1 } + +spdIPEndpointAddType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the address type for the interface that the + notification triggering packet is passing through." + ::= { spdNotificationVariables 2 } + +spdIPEndpointAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the interface address for the interface that the + notification triggering packet is passing through. + + The format of this object is specified by the + spdIPEndpointAddType object." + ::= { spdNotificationVariables 3 } + +spdIPSourceType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the source address type of the packet that + + + + triggered the notification." + ::= { spdNotificationVariables 4 } + +spdIPSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the source address of the packet that + triggered the notification. + + The format of this object is specified by the + spdIPSourceType object." + ::= { spdNotificationVariables 5 } + +spdIPDestinationType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the destination address type of the packet + that triggered the notification." + ::= { spdNotificationVariables 6 } + +spdIPDestinationAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Contains the destination address of the packet that + triggered the notification. + + The format of this object is specified by the + spdIPDestinationType object." + ::= { spdNotificationVariables 7 } + +spdPacketDirection OBJECT-TYPE + SYNTAX IfDirection + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Indicates if the packet that triggered the action in + questions was ingress (inbound) or egress (outbound)." + ::= { spdNotificationVariables 8 } + +spdPacketPart OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..65535)) + MAX-ACCESS accessible-for-notify + + + + STATUS current + DESCRIPTION + "spdPacketPart is the front part of the full IP packet that + triggered this notification. The initial size limit is + determined by the smaller of the size, indicated by: + + I. The value of the object with the TC syntax + 'SpdIPPacketLogging' that indicated the packet SHOULD be + logged and + + II. The size of the triggering packet. + + The final limit is determined by the SNMP packet size when + sending the notification. The maximum size that can be + included will be the smaller of the initial size, given the + above, and the length that will fit in a single SNMP + notification packet after the rest of the notification's + objects and any other necessary packet data (headers encoding, + etc.) have been included in the packet." + ::= { spdNotificationVariables 9 } + +spdActionNotification NOTIFICATION-TYPE + OBJECTS { spdActionExecuted, spdIPEndpointAddType, + spdIPEndpointAddress, + spdIPSourceType, spdIPSourceAddress, + spdIPDestinationType, + spdIPDestinationAddress, + spdPacketDirection } + STATUS current + DESCRIPTION + "Notification that an action was executed by a rule. + Only actions with logging enabled will result in this + notification getting sent. The object includes the + spdActionExecuted object, which will indicate which action + was executed within the scope of the rule. Additionally, + the spdIPSourceType, spdIPSourceAddress, + spdIPDestinationType, and spdIPDestinationAddress objects + are included to indicate the packet source and destination + of the packet that triggered the action. Finally, the + spdIPEndpointAddType, spdIPEndpointAddress, and + spdPacketDirection objects indicate which interface the + executed action was associated with, and if the packet was + ingress or egress through the endpoint. + + A spdActionNotification SHOULD be limited to a maximum of + one notification sent per minute for any action + notifications that do not have any other configuration + controlling their send rate. + + + + Note that compound actions with multiple executed + sub-actions may result in multiple notifications being sent + from a single rule execution." + ::= { spdNotifications 1 } + +spdPacketNotification NOTIFICATION-TYPE + OBJECTS { spdActionExecuted, spdIPEndpointAddType, + spdIPEndpointAddress, + spdIPSourceType, spdIPSourceAddress, + spdIPDestinationType, + spdIPDestinationAddress, + spdPacketDirection, + spdPacketPart } + STATUS current + DESCRIPTION + "Notification that a packet passed through a Security + Association (SA). Only SAs created by actions with packet + logging enabled will result in this notification getting + sent. The objects sent MUST include the spdActionExecuted, + which will indicate which action was executed within the + scope of the rule. Additionally, the spdIPSourceType, + spdIPSourceAddress, spdIPDestinationType, and + spdIPDestinationAddress objects MUST be included to + indicate the packet source and destination of the packet + that triggered the action. The spdIPEndpointAddType, + spdIPEndpointAddress, and spdPacketDirection objects are + included to indicate which endpoint the packet was + associated with. Finally, spdPacketPart is included to + enable sending a variable sized part of the front of the + packet with the size dependent on the value of the object of + TC syntax 'SpdIPPacketLogging', which indicated that logging + should be done. + + A spdPacketNotification SHOULD be limited to a maximum of + one notification sent per minute for any action + notifications that do not have any other configuration + controlling their send rate. + + An action notification SHOULD be limited to a maximum of + one notification sent per minute for any action + notifications that do not have any other configuration + controlling their send rate." + ::= { spdNotifications 2 } + + +-- +-- +-- Conformance information + + + +-- +-- + +spdCompliances OBJECT IDENTIFIER + ::= { spdConformanceObjects 1 } +spdGroups OBJECT IDENTIFIER + ::= { spdConformanceObjects 2 } + +-- +-- Compliance statements +-- +-- +spdRuleFilterFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that include + an IPsec MIB implementation with Endpoint, Rules, and + filters support. + + When this MIB is implemented with support for read-create, + then such an implementation can claim full compliance. Such + devices can then be both monitored and configured with this + MIB." + + MODULE -- This Module + MANDATORY-GROUPS { spdEndpointGroup, + spdGroupContentsGroup, + spdRuleDefinitionGroup, + spdStaticFilterGroup, + spdStaticActionGroup , + diffServMIBMultiFieldClfrGroup } + + GROUP spdIpsecSystemPolicyNameGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support a system policy group + name." + + GROUP spdCompoundFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support compound filters." + + GROUP spdIPOffsetFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support IP Offset filters. In + general, this SHOULD be supported by a compliant IPsec + + + + Policy implementation." + + GROUP spdTimeFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support time filters." + + GROUP spdIpsoHeaderFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support IPSO Header filters." + + GROUP spdCompoundActionGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support compound actions." + + OBJECT spdEndGroupLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdGroupContComponentType + SYNTAX INTEGER { + rule(2) + } + DESCRIPTION + "Support of the value group(1) is only required for + implementations that support Policy Groups within + Policy Groups." + + OBJECT spdGroupContLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdRuleDefLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdCompFiltLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdSubFiltLastChanged + MIN-ACCESS not-accessible + + + + DESCRIPTION + "This object not required for compliance." + + OBJECT spdIpOffFiltLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdTimeFiltLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdIpsoHeadFiltLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdCompActLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT spdSubActLastChanged + MIN-ACCESS not-accessible + DESCRIPTION + "This object not required for compliance." + + OBJECT diffServMultiFieldClfrNextFree + MIN-ACCESS not-accessible + DESCRIPTION + "This object is not required for compliance." + + ::= { spdCompliances 1 } + + +spdLoggingCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that support + sending notifications when actions are invoked." + MODULE -- This Module + MANDATORY-GROUPS { spdActionLoggingObjectGroup, + spdActionNotificationGroup } + + ::= { spdCompliances 2 } + +-- + + + +-- ReadOnly Compliances +-- +spdRuleFilterReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that include + an IPsec MIB implementation with Endpoint, Rules, and + filters support. + + If this MIB is implemented without support for read-create + (i.e., in read-only), it is not in full compliance, but it + can claim read-only compliance. Such a device can then be + monitored, but cannot be configured with this MIB." + + MODULE -- This Module + MANDATORY-GROUPS { spdEndpointGroup, + spdGroupContentsGroup, + spdRuleDefinitionGroup, + spdStaticFilterGroup, + spdStaticActionGroup , + diffServMIBMultiFieldClfrGroup } + + GROUP spdIpsecSystemPolicyNameGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support a system policy group + name." + + GROUP spdCompoundFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support compound filters." + + GROUP spdIPOffsetFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support IP Offset filters. In + general, this SHOULD be supported by a compliant IPsec + Policy implementation." + + GROUP spdTimeFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support time filters." + + GROUP spdIpsoHeaderFilterGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + + + + implementations that support IPSO Header filters." + + GROUP spdCompoundActionGroup + DESCRIPTION + "This group is mandatory for IPsec Policy + implementations that support compound actions." + + OBJECT spdCompActExecutionStrategy + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompActLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdCompActRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompActStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompFiltDescription + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompFiltLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdCompFiltLogicType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdCompFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT spdEgressPolicyGroupName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdEndGroupLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdEndGroupName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdEndGroupRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdEndGroupStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdGroupContComponentName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdGroupContComponentType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdGroupContFilter + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdGroupContLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdGroupContRowStatus + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT spdGroupContStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIngressPolicyGroupName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdIpOffFiltOffset + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpOffFiltValue + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltClassification + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltLastChanged + DESCRIPTION + + + + "This object is not required for compliance." + + OBJECT spdIpsoHeadFiltProtectionAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdIpsoHeadFiltType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefAction + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefDescription + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefFilter + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefFilterNegated + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefLastChanged + + + + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdRuleDefRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdRuleDefStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubActLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdSubActRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubActStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubActSubActionName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubFiltLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdSubFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdSubFiltSubfilter + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT spdSubFiltSubfilterIsNegated + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltDayOfMonthMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltDayOfWeekMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltLastChanged + DESCRIPTION + "This object is not required for compliance." + + OBJECT spdTimeFiltMonthOfYearMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltPeriod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltTimeOfDayMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT spdTimeFiltStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { spdCompliances 3 } + + + +-- +-- +-- Compliance Groups Definitions +-- + +-- +-- Endpoint, Rule, Filter Compliance Groups +-- + +spdEndpointGroup OBJECT-GROUP + OBJECTS { + spdEndGroupName, spdEndGroupLastChanged, + spdEndGroupStorageType, spdEndGroupRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy + Endpoint Table." + ::= { spdGroups 1 } + +spdGroupContentsGroup OBJECT-GROUP + OBJECTS { + spdGroupContComponentType, spdGroupContFilter, + spdGroupContComponentName, spdGroupContLastChanged, + spdGroupContStorageType, spdGroupContRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy + Group Contents Table." + ::= { spdGroups 2 } + +spdIpsecSystemPolicyNameGroup OBJECT-GROUP + OBJECTS { + spdIngressPolicyGroupName, + spdEgressPolicyGroupName + } + STATUS current + DESCRIPTION + "This group is made up of objects represent the System + Policy Group Names." + ::= { spdGroups 3} + +spdRuleDefinitionGroup OBJECT-GROUP + OBJECTS { + spdRuleDefDescription, spdRuleDefFilter, + spdRuleDefFilterNegated, spdRuleDefAction, + spdRuleDefAdminStatus, spdRuleDefLastChanged, + + + + spdRuleDefStorageType, spdRuleDefRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy Rule + Definition Table." + ::= { spdGroups 4 } + +spdCompoundFilterGroup OBJECT-GROUP + OBJECTS { + spdCompFiltDescription, spdCompFiltLogicType, + spdCompFiltLastChanged, spdCompFiltStorageType, + spdCompFiltRowStatus, spdSubFiltSubfilter, + spdSubFiltSubfilterIsNegated, spdSubFiltLastChanged, + spdSubFiltStorageType, spdSubFiltRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy + Compound Filter Table and Sub-Filter Table Group." + ::= { spdGroups 5 } + +spdStaticFilterGroup OBJECT-GROUP + OBJECTS { spdTrueFilter } + STATUS current + DESCRIPTION + "The static filter group. Currently this is just a true + filter." + ::= { spdGroups 6 } + +spdIPOffsetFilterGroup OBJECT-GROUP + OBJECTS { + spdIpOffFiltOffset, spdIpOffFiltType, + spdIpOffFiltValue, spdIpOffFiltLastChanged, + spdIpOffFiltStorageType, spdIpOffFiltRowStatus + } + + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy IP + Offset Filter Table." + ::= { spdGroups 7 } + +spdTimeFilterGroup OBJECT-GROUP + OBJECTS { + spdTimeFiltPeriod, + spdTimeFiltMonthOfYearMask, spdTimeFiltDayOfMonthMask, + spdTimeFiltDayOfWeekMask, spdTimeFiltTimeOfDayMask, + + + + spdTimeFiltLastChanged, + spdTimeFiltStorageType, spdTimeFiltRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy Time + Filter Table." + ::= { spdGroups 8 } + +spdIpsoHeaderFilterGroup OBJECT-GROUP + OBJECTS { + spdIpsoHeadFiltType, spdIpsoHeadFiltClassification, + spdIpsoHeadFiltProtectionAuth, spdIpsoHeadFiltLastChanged, + spdIpsoHeadFiltStorageType, spdIpsoHeadFiltRowStatus + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy IPSO + Header Filter Table." + ::= { spdGroups 9 } + +-- +-- action compliance groups +-- + +spdStaticActionGroup OBJECT-GROUP + OBJECTS { + spdDropAction, spdAcceptAction, + spdDropActionLog, spdAcceptActionLog + } + STATUS current + DESCRIPTION + "This group is made up of objects from the IPsec Policy + Static Actions." + ::= { spdGroups 10 } + +spdCompoundActionGroup OBJECT-GROUP + OBJECTS { + spdCompActExecutionStrategy, spdCompActLastChanged, + spdCompActStorageType, + + spdCompActRowStatus, spdSubActSubActionName, + spdSubActLastChanged, spdSubActStorageType, + spdSubActRowStatus + } + STATUS current + DESCRIPTION + "The IPsec Policy Compound Action Table and Actions In + + + + Compound Action Table Group." + ::= { spdGroups 11 } + +spdActionLoggingObjectGroup OBJECT-GROUP + OBJECTS { + spdActionExecuted, + spdIPEndpointAddType, spdIPEndpointAddress, + spdIPSourceType, spdIPSourceAddress, + spdIPDestinationType, spdIPDestinationAddress, + spdPacketDirection, spdPacketPart + } + STATUS current + DESCRIPTION + "This group is made up of all the Notification objects for + this MIB." + ::= { spdGroups 12 } + +spdActionNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + spdActionNotification, + spdPacketNotification + } + STATUS current + DESCRIPTION + "This group is made up of all the Notifications for this MIB." + ::= { spdGroups 13 } + + +END diff --git a/mibs/ietf/IPV6-FLOW-LABEL-MIB b/mibs/ietf/IPV6-FLOW-LABEL-MIB new file mode 100644 index 0000000..f30f4ca --- /dev/null +++ b/mibs/ietf/IPV6-FLOW-LABEL-MIB @@ -0,0 +1,63 @@ +IPV6-FLOW-LABEL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + MODULE-IDENTITY, mib-2, Integer32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +ipv6FlowLabelMIB MODULE-IDENTITY + + LAST-UPDATED "200308280000Z" -- 28 August 2003 + ORGANIZATION "IETF Operations and Management Area" + CONTACT-INFO "Bert Wijnen (Editor) + Lucent Technologies + Schagen 33 + 3461 GL Linschoten + Netherlands + + + + + + Phone: +31 348-407-775 + EMail: bwijnen@lucent.com + + Send comments to . + " + DESCRIPTION "This MIB module provides commonly used textual + conventions for IPv6 Flow Labels. + + Copyright (C) The Internet Society (2003). This + version of this MIB module is part of RFC 3595, + see the RFC itself for full legal notices. + " + -- Revision History + + REVISION "200308280000Z" -- 28 August 2003 + DESCRIPTION "Initial version, published as RFC 3595." + + ::= { mib-2 103 } + +IPv6FlowLabel ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The flow identifier or Flow Label in an IPv6 + packet header that may be used to discriminate + traffic flows. + " + REFERENCE "Internet Protocol, Version 6 (IPv6) specification, + section 6. RFC 2460. + " + SYNTAX Integer32 (0..1048575) + +IPv6FlowLabelOrAny ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "The flow identifier or Flow Label in an IPv6 + packet header that may be used to discriminate + traffic flows. The value of -1 is used to + indicate a wildcard, i.e. any value. + " + SYNTAX Integer32 (-1 | 0..1048575) + +END diff --git a/mibs/ietf/IPV6-ICMP-MIB b/mibs/ietf/IPV6-ICMP-MIB new file mode 100644 index 0000000..640ef86 --- /dev/null +++ b/mibs/ietf/IPV6-ICMP-MIB @@ -0,0 +1,529 @@ + IPV6-ICMP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, mib-2 FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ipv6IfEntry FROM IPV6-MIB; + + ipv6IcmpMIB MODULE-IDENTITY + LAST-UPDATED "9801082155Z" + ORGANIZATION "IETF IPv6 Working Group" + CONTACT-INFO + " Dimitry Haskin + + Postal: Bay Networks, Inc. + 660 Techology Park Drive. + Billerica, MA 01821 + US + + Tel: +1-978-916-8124 + E-mail: dhaskin@baynetworks.com + + Steve Onishi + + Postal: Bay Networks, Inc. + 3 Federal Street + Billerica, MA 01821 + US + + Tel: +1-978-916-3816 + E-mail: sonishi@baynetworks.com" + DESCRIPTION + "The MIB module for entities implementing + the ICMPv6." + ::= { mib-2 56 } + + -- the ICMPv6 group + + ipv6IcmpMIBObjects OBJECT IDENTIFIER ::= { ipv6IcmpMIB 1 } + + + -- Per-interface ICMPv6 statistics table + + ipv6IfIcmpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6IfIcmpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IPv6 ICMP statistics. This table contains statistics + of ICMPv6 messages that are received and sourced by + the entity." + ::= { ipv6IcmpMIBObjects 1 } + + ipv6IfIcmpEntry OBJECT-TYPE + SYNTAX Ipv6IfIcmpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An ICMPv6 statistics entry containing + objects at a particular IPv6 interface. + + Note that a receiving interface is + the interface to which a given ICMPv6 message + is addressed which may not be necessarily + the input interface for the message. + + Similarly, the sending interface is + the interface that sources a given + ICMP message which is usually but not + necessarily the output interface for the message." + AUGMENTS { ipv6IfEntry } + ::= { ipv6IfIcmpTable 1 } + + Ipv6IfIcmpEntry ::= SEQUENCE { + ipv6IfIcmpInMsgs + Counter32 , + ipv6IfIcmpInErrors + Counter32 , + ipv6IfIcmpInDestUnreachs + Counter32 , + ipv6IfIcmpInAdminProhibs + Counter32 , + ipv6IfIcmpInTimeExcds + Counter32 , + ipv6IfIcmpInParmProblems + Counter32 , + ipv6IfIcmpInPktTooBigs + Counter32 , + ipv6IfIcmpInEchos + Counter32 , + ipv6IfIcmpInEchoReplies + Counter32 , + ipv6IfIcmpInRouterSolicits + Counter32 , + ipv6IfIcmpInRouterAdvertisements + Counter32 , + ipv6IfIcmpInNeighborSolicits + Counter32 , + ipv6IfIcmpInNeighborAdvertisements + Counter32 , + ipv6IfIcmpInRedirects + Counter32 , + ipv6IfIcmpInGroupMembQueries + Counter32 , + ipv6IfIcmpInGroupMembResponses + Counter32 , + ipv6IfIcmpInGroupMembReductions + Counter32 , + ipv6IfIcmpOutMsgs + Counter32 , + ipv6IfIcmpOutErrors + Counter32 , + ipv6IfIcmpOutDestUnreachs + Counter32 , + ipv6IfIcmpOutAdminProhibs + Counter32 , + ipv6IfIcmpOutTimeExcds + Counter32 , + ipv6IfIcmpOutParmProblems + Counter32 , + ipv6IfIcmpOutPktTooBigs + Counter32 , + ipv6IfIcmpOutEchos + Counter32 , + ipv6IfIcmpOutEchoReplies + Counter32 , + ipv6IfIcmpOutRouterSolicits + Counter32 , + ipv6IfIcmpOutRouterAdvertisements + Counter32 , + ipv6IfIcmpOutNeighborSolicits + Counter32 , + ipv6IfIcmpOutNeighborAdvertisements + Counter32 , + ipv6IfIcmpOutRedirects + Counter32 , + ipv6IfIcmpOutGroupMembQueries + Counter32 , + ipv6IfIcmpOutGroupMembResponses + Counter32 , + ipv6IfIcmpOutGroupMembReductions + Counter32 + } + + ipv6IfIcmpInMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ICMP messages received + by the interface which includes all those + counted by ipv6IfIcmpInErrors. Note that this + interface is the interface to which the + ICMP messages were addressed which may not be + necessarily the input interface for the messages." + ::= { ipv6IfIcmpEntry 1 } + + ipv6IfIcmpInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP messages which the interface + received but determined as having ICMP-specific + errors (bad ICMP checksums, bad length, etc.)." + ::= { ipv6IfIcmpEntry 2 } + + ipv6IfIcmpInDestUnreachs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Destination Unreachable + messages received by the interface." + ::= { ipv6IfIcmpEntry 3 } + + ipv6IfIcmpInAdminProhibs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP destination + unreachable/communication administratively + prohibited messages received by the interface." + ::= { ipv6IfIcmpEntry 4 } + + ipv6IfIcmpInTimeExcds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Time Exceeded messages + received by the interface." + ::= { ipv6IfIcmpEntry 5 } + + ipv6IfIcmpInParmProblems OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Parameter Problem messages + received by the interface." + ::= { ipv6IfIcmpEntry 6 } + + ipv6IfIcmpInPktTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Packet Too Big messages + received by the interface." + ::= { ipv6IfIcmpEntry 7 } + + ipv6IfIcmpInEchos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Echo (request) messages + received by the interface." + ::= { ipv6IfIcmpEntry 8 } + + ipv6IfIcmpInEchoReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Echo Reply messages received + by the interface." + ::= { ipv6IfIcmpEntry 9 } + + ipv6IfIcmpInRouterSolicits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Router Solicit messages + received by the interface." + ::= { ipv6IfIcmpEntry 10 } + + ipv6IfIcmpInRouterAdvertisements OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Router Advertisement messages + received by the interface." + ::= { ipv6IfIcmpEntry 11 } + + ipv6IfIcmpInNeighborSolicits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Neighbor Solicit messages + received by the interface." + ::= { ipv6IfIcmpEntry 12 } + + ipv6IfIcmpInNeighborAdvertisements OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Neighbor Advertisement + messages received by the interface." + ::= { ipv6IfIcmpEntry 13 } + + ipv6IfIcmpInRedirects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Redirect messages received + by the interface." + ::= { ipv6IfIcmpEntry 14 } + + ipv6IfIcmpInGroupMembQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Query + messages received by the interface." + ::= { ipv6IfIcmpEntry 15} + + ipv6IfIcmpInGroupMembResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Response messages + received by the interface." + ::= { ipv6IfIcmpEntry 16} + + ipv6IfIcmpInGroupMembReductions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Reduction messages + received by the interface." + ::= { ipv6IfIcmpEntry 17} + + ipv6IfIcmpOutMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ICMP messages which this + interface attempted to send. Note that this counter + includes all those counted by icmpOutErrors." + ::= { ipv6IfIcmpEntry 18 } + + ipv6IfIcmpOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP messages which this interface did + not send due to problems discovered within ICMP + such as a lack of buffers. This value should not + include errors discovered outside the ICMP layer + such as the inability of IPv6 to route the resultant + datagram. In some implementations there may be no + types of error which contribute to this counter's + value." + ::= { ipv6IfIcmpEntry 19 } + + ipv6IfIcmpOutDestUnreachs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Destination Unreachable + messages sent by the interface." + ::= { ipv6IfIcmpEntry 20 } + + ipv6IfIcmpOutAdminProhibs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of ICMP dest unreachable/communication + administratively prohibited messages sent." + ::= { ipv6IfIcmpEntry 21 } + + ipv6IfIcmpOutTimeExcds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Time Exceeded messages sent + by the interface." + ::= { ipv6IfIcmpEntry 22 } + + ipv6IfIcmpOutParmProblems OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Parameter Problem messages + sent by the interface." + ::= { ipv6IfIcmpEntry 23 } + + ipv6IfIcmpOutPktTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Packet Too Big messages sent + by the interface." + ::= { ipv6IfIcmpEntry 24 } + + ipv6IfIcmpOutEchos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Echo (request) messages sent + by the interface." + ::= { ipv6IfIcmpEntry 25 } + + ipv6IfIcmpOutEchoReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Echo Reply messages sent + by the interface." + ::= { ipv6IfIcmpEntry 26 } + + ipv6IfIcmpOutRouterSolicits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Router Solicitation messages + sent by the interface." + ::= { ipv6IfIcmpEntry 27 } + + ipv6IfIcmpOutRouterAdvertisements OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Router Advertisement messages + sent by the interface." + ::= { ipv6IfIcmpEntry 28 } + + ipv6IfIcmpOutNeighborSolicits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Neighbor Solicitation + messages sent by the interface." + ::= { ipv6IfIcmpEntry 29 } + + ipv6IfIcmpOutNeighborAdvertisements OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMP Neighbor Advertisement + messages sent by the interface." + ::= { ipv6IfIcmpEntry 30 } + + ipv6IfIcmpOutRedirects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Redirect messages sent. For + a host, this object will always be zero, + since hosts do not send redirects." + ::= { ipv6IfIcmpEntry 31 } + + ipv6IfIcmpOutGroupMembQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Query + messages sent." + ::= { ipv6IfIcmpEntry 32} + + ipv6IfIcmpOutGroupMembResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Response + messages sent." + ::= { ipv6IfIcmpEntry 33} + + ipv6IfIcmpOutGroupMembReductions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ICMPv6 Group Membership Reduction + messages sent." + ::= { ipv6IfIcmpEntry 34} + + +-- conformance information + +ipv6IcmpConformance OBJECT IDENTIFIER ::= { ipv6IcmpMIB 2 } + +ipv6IcmpCompliances + OBJECT IDENTIFIER ::= { ipv6IcmpConformance 1 } +ipv6IcmpGroups + OBJECT IDENTIFIER ::= { ipv6IcmpConformance 2 } + +-- compliance statements + +ipv6IcmpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement ICMPv6." + MODULE -- this module + MANDATORY-GROUPS { ipv6IcmpGroup } + ::= { ipv6IcmpCompliances 1 } + +ipv6IcmpGroup OBJECT-GROUP + OBJECTS { + ipv6IfIcmpInMsgs, + ipv6IfIcmpInErrors, + ipv6IfIcmpInDestUnreachs, + ipv6IfIcmpInAdminProhibs, + ipv6IfIcmpInTimeExcds, + ipv6IfIcmpInParmProblems, + ipv6IfIcmpInPktTooBigs, + ipv6IfIcmpInEchos, + ipv6IfIcmpInEchoReplies, + ipv6IfIcmpInRouterSolicits, + ipv6IfIcmpInRouterAdvertisements, + ipv6IfIcmpInNeighborSolicits, + ipv6IfIcmpInNeighborAdvertisements, + ipv6IfIcmpInRedirects, + ipv6IfIcmpInGroupMembQueries, + ipv6IfIcmpInGroupMembResponses, + ipv6IfIcmpInGroupMembReductions, + ipv6IfIcmpOutMsgs, + ipv6IfIcmpOutErrors, + ipv6IfIcmpOutDestUnreachs, + ipv6IfIcmpOutAdminProhibs, + ipv6IfIcmpOutTimeExcds, + ipv6IfIcmpOutParmProblems, + ipv6IfIcmpOutPktTooBigs, + ipv6IfIcmpOutEchos, + ipv6IfIcmpOutEchoReplies, + ipv6IfIcmpOutRouterSolicits, + ipv6IfIcmpOutRouterAdvertisements, + ipv6IfIcmpOutNeighborSolicits, + ipv6IfIcmpOutNeighborAdvertisements, + ipv6IfIcmpOutRedirects, + ipv6IfIcmpOutGroupMembQueries, + ipv6IfIcmpOutGroupMembResponses, + ipv6IfIcmpOutGroupMembReductions + } + STATUS current + DESCRIPTION + "The ICMPv6 group of objects providing information + specific to ICMPv6." + ::= { ipv6IcmpGroups 1 } + + END diff --git a/mibs/ietf/IPV6-MIB b/mibs/ietf/IPV6-MIB new file mode 100644 index 0000000..922dcaf --- /dev/null +++ b/mibs/ietf/IPV6-MIB @@ -0,0 +1,1450 @@ + IPV6-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + mib-2, Counter32, Unsigned32, Integer32, + Gauge32 FROM SNMPv2-SMI + DisplayString, PhysAddress, TruthValue, TimeStamp, + VariablePointer, RowPointer FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + Ipv6IfIndex, Ipv6Address, Ipv6AddressPrefix, + Ipv6AddressIfIdentifier, + Ipv6IfIndexOrZero FROM IPV6-TC; + + ipv6MIB MODULE-IDENTITY + LAST-UPDATED "9802052155Z" + ORGANIZATION "IETF IPv6 Working Group" + CONTACT-INFO + " Dimitry Haskin + + Postal: Bay Networks, Inc. + 660 Techology Park Drive. + Billerica, MA 01821 + US + + Tel: +1-978-916-8124 + E-mail: dhaskin@baynetworks.com + + Steve Onishi + + Postal: Bay Networks, Inc. + 3 Federal Street + Billerica, MA 01821 + US + + Tel: +1-978-916-3816 + E-mail: sonishi@baynetworks.com" + DESCRIPTION + "The MIB module for entities implementing the IPv6 + protocol." + ::= { mib-2 55 } + + + -- the IPv6 general group + + ipv6MIBObjects OBJECT IDENTIFIER ::= { ipv6MIB 1 } + + + ipv6Forwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a router + + -- NOT acting as + notForwarding(2) -- a router + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The indication of whether this entity is acting + as an IPv6 router in respect to the forwarding of + datagrams received by, but not addressed to, this + entity. IPv6 routers forward datagrams. IPv6 + hosts do not (except those source-routed via the + host). + + Note that for some managed nodes, this object may + take on only a subset of the values possible. + Accordingly, it is appropriate for an agent to + return a `wrongValue' response if a management + station attempts to change this object to an + inappropriate value." + ::= { ipv6MIBObjects 1 } + + ipv6DefaultHopLimit OBJECT-TYPE + SYNTAX INTEGER(0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default value inserted into the Hop Limit + field of the IPv6 header of datagrams originated + at this entity, whenever a Hop Limit value is not + supplied by the transport layer protocol." + DEFVAL { 64 } + ::= { ipv6MIBObjects 2 } + +ipv6Interfaces OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 interfaces (regardless of + their current state) present on this system." + ::= { ipv6MIBObjects 3 } + +ipv6IfTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + insertion or removal of an entry in the + ipv6IfTable. If the number of entries has been + unchanged since the last re-initialization of + the local network management subsystem, then this + object contains a zero value." + ::= { ipv6MIBObjects 4 } + + +-- the IPv6 Interfaces table + +ipv6IfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 Interfaces table contains information + on the entity's internetwork-layer interfaces. + An IPv6 interface constitutes a logical network + layer attachment to the layer immediately below + IPv6 including internet layer 'tunnels', such as + tunnels over IPv4 or IPv6 itself." + ::= { ipv6MIBObjects 5 } + + ipv6IfEntry OBJECT-TYPE + SYNTAX Ipv6IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An interface entry containing objects + about a particular IPv6 interface." + INDEX { ipv6IfIndex } + ::= { ipv6IfTable 1 } + + Ipv6IfEntry ::= SEQUENCE { + ipv6IfIndex Ipv6IfIndex, + ipv6IfDescr DisplayString, + ipv6IfLowerLayer VariablePointer, + ipv6IfEffectiveMtu Unsigned32, + ipv6IfReasmMaxSize Unsigned32, + ipv6IfIdentifier Ipv6AddressIfIdentifier, + ipv6IfIdentifierLength INTEGER, + ipv6IfPhysicalAddress PhysAddress, + ipv6IfAdminStatus INTEGER, + ipv6IfOperStatus INTEGER, + ipv6IfLastChange TimeStamp + } + + ipv6IfIndex OBJECT-TYPE + SYNTAX Ipv6IfIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique non-zero value identifying + the particular IPv6 interface." + ::= { ipv6IfEntry 1 } + + ipv6IfDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A textual string containing information about the + interface. This string may be set by the network + management system." + ::= { ipv6IfEntry 2 } + + ipv6IfLowerLayer OBJECT-TYPE + SYNTAX VariablePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the protocol layer over + which this network interface operates. If this + network interface operates over the data-link + layer, then the value of this object refers to an + instance of ifIndex [6]. If this network interface + operates over an IPv4 interface, the value of this + object refers to an instance of ipAdEntAddr [3]. + + If this network interface operates over another + IPv6 interface, the value of this object refers to + an instance of ipv6IfIndex. If this network + interface is not currently operating over an active + protocol layer, then the value of this object + should be set to the OBJECT ID { 0 0 }." + ::= { ipv6IfEntry 3 } + + ipv6IfEffectiveMtu OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest IPv6 packet which can be + sent/received on the interface, specified in + octets." + ::= { ipv6IfEntry 4 } + + ipv6IfReasmMaxSize OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest IPv6 datagram which this + entity can re-assemble from incoming IPv6 fragmented + datagrams received on this interface." + ::= { ipv6IfEntry 5 } + + ipv6IfIdentifier OBJECT-TYPE + SYNTAX Ipv6AddressIfIdentifier + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Interface Identifier for this interface that + is (at least) unique on the link this interface is + attached to. The Interface Identifier is combined + with an address prefix to form an interface address. + + By default, the Interface Identifier is autoconfigured + according to the rules of the link type this + interface is attached to." + ::= { ipv6IfEntry 6 } + + ipv6IfIdentifierLength OBJECT-TYPE + SYNTAX INTEGER (0..64) + UNITS "bits" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The length of the Interface Identifier in bits." + ::= { ipv6IfEntry 7 } + + ipv6IfPhysicalAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface's physical address. For example, for + an IPv6 interface attached to an 802.x link, this + object normally contains a MAC address. Note that + in some cases this address may differ from the + address of the interface's protocol sub-layer. The + interface's media-specific MIB must define the bit + and byte ordering and the format of the value of + this object. For interfaces which do not have such + an address (e.g., a serial line), this object should + contain an octet string of zero length." + ::= { ipv6IfEntry 8 } + +ipv6IfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the interface. When a managed + system initializes, all IPv6 interfaces start with + ipv6IfAdminStatus in the down(2) state. As a result + of either explicit management action or per + configuration information retained by the managed + system, ipv6IfAdminStatus is then changed to + the up(1) state (or remains in the down(2) state)." + ::= { ipv6IfEntry 9 } + +ipv6IfOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + + down(2), + + noIfIdentifier(3), -- no interface identifier + + -- status can not be + -- determined for some + unknown(4), -- reason + + -- some component is + notPresent(5) -- missing + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the interface. + The noIfIdentifier(3) state indicates that no valid + Interface Identifier is assigned to the interface. + This state usually indicates that the link-local + interface address failed Duplicate Address Detection. + If ipv6IfAdminStatus is down(2) then ipv6IfOperStatus + should be down(2). If ipv6IfAdminStatus is changed + to up(1) then ipv6IfOperStatus should change to up(1) + if the interface is ready to transmit and receive + network traffic; it should remain in the down(2) or + noIfIdentifier(3) state if and only if there is a + fault that prevents it from going to the up(1) state; + it should remain in the notPresent(5) state if + the interface has missing (typically, lower layer) + components." + ::= { ipv6IfEntry 10 } + +ipv6IfLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the interface + entered its current operational state. If the + current state was entered prior to the last + re-initialization of the local network management + subsystem, then this object contains a zero + value." + ::= { ipv6IfEntry 11 } + + -- IPv6 Interface Statistics table + + ipv6IfStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6IfStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IPv6 interface traffic statistics." + ::= { ipv6MIBObjects 6 } + + ipv6IfStatsEntry OBJECT-TYPE + SYNTAX Ipv6IfStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An interface statistics entry containing objects + at a particular IPv6 interface." + AUGMENTS { ipv6IfEntry } + ::= { ipv6IfStatsTable 1 } + + Ipv6IfStatsEntry ::= SEQUENCE { + ipv6IfStatsInReceives + Counter32, + ipv6IfStatsInHdrErrors + Counter32, + ipv6IfStatsInTooBigErrors + Counter32, + ipv6IfStatsInNoRoutes + Counter32, + ipv6IfStatsInAddrErrors + Counter32, + ipv6IfStatsInUnknownProtos + Counter32, + ipv6IfStatsInTruncatedPkts + Counter32, + ipv6IfStatsInDiscards + Counter32, + ipv6IfStatsInDelivers + Counter32, + ipv6IfStatsOutForwDatagrams + Counter32, + ipv6IfStatsOutRequests + Counter32, + ipv6IfStatsOutDiscards + Counter32, + ipv6IfStatsOutFragOKs + Counter32, + ipv6IfStatsOutFragFails + Counter32, + ipv6IfStatsOutFragCreates + Counter32, + ipv6IfStatsReasmReqds + Counter32, + ipv6IfStatsReasmOKs + Counter32, + ipv6IfStatsReasmFails + Counter32, + ipv6IfStatsInMcastPkts + Counter32, + ipv6IfStatsOutMcastPkts + Counter32 + } + + ipv6IfStatsInReceives OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of input datagrams received by + the interface, including those received in error." + ::= { ipv6IfStatsEntry 1 } + + ipv6IfStatsInHdrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams discarded due to + errors in their IPv6 headers, including version + number mismatch, other format errors, hop count + exceeded, errors discovered in processing their + IPv6 options, etc." + ::= { ipv6IfStatsEntry 2 } + + ipv6IfStatsInTooBigErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams that could not be + forwarded because their size exceeded the link MTU + of outgoing interface." + ::= { ipv6IfStatsEntry 3 } + + ipv6IfStatsInNoRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams discarded because no + route could be found to transmit them to their + destination." + ::= { ipv6IfStatsEntry 4 } + + ipv6IfStatsInAddrErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams discarded because + the IPv6 address in their IPv6 header's destination + field was not a valid address to be received at + this entity. This count includes invalid + addresses (e.g., ::0) and unsupported addresses + (e.g., addresses with unallocated prefixes). For + entities which are not IPv6 routers and therefore + do not forward datagrams, this counter includes + datagrams discarded because the destination address + was not a local address." + ::= { ipv6IfStatsEntry 5 } + + ipv6IfStatsInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of locally-addressed datagrams + received successfully but discarded because of an + unknown or unsupported protocol. This counter is + incremented at the interface to which these + datagrams were addressed which might not be + necessarily the input interface for some of + the datagrams." + ::= { ipv6IfStatsEntry 6 } + + + ipv6IfStatsInTruncatedPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input datagrams discarded because + datagram frame didn't carry enough data." + ::= { ipv6IfStatsEntry 7 } + + ipv6IfStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input IPv6 datagrams for which no + problems were encountered to prevent their + continued processing, but which were discarded + (e.g., for lack of buffer space). Note that this + counter does not include any datagrams discarded + while awaiting re-assembly." + ::= { ipv6IfStatsEntry 8 } + + ipv6IfStatsInDelivers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of datagrams successfully + delivered to IPv6 user-protocols (including ICMP). + This counter is incremented at the interface to + which these datagrams were addressed which might + not be necessarily the input interface for some of + the datagrams." + ::= { ipv6IfStatsEntry 9 } + + ipv6IfStatsOutForwDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output datagrams which this + entity received and forwarded to their final + destinations. In entities which do not act + as IPv6 routers, this counter will include + only those packets which were Source-Routed + via this entity, and the Source-Route + processing was successful. Note that for + a successfully forwarded datagram the counter + of the outgoing interface is incremented." + ::= { ipv6IfStatsEntry 10 } + + ipv6IfStatsOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of IPv6 datagrams which local IPv6 + user-protocols (including ICMP) supplied to IPv6 in + requests for transmission. Note that this counter + does not include any datagrams counted in + ipv6IfStatsOutForwDatagrams." + ::= { ipv6IfStatsEntry 11 } + + ipv6IfStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output IPv6 datagrams for which no + problem was encountered to prevent their + transmission to their destination, but which were + discarded (e.g., for lack of buffer space). Note + that this counter would include datagrams counted + in ipv6IfStatsOutForwDatagrams if any such packets + met this (discretionary) discard criterion." + ::= { ipv6IfStatsEntry 12 } + + ipv6IfStatsOutFragOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 datagrams that have been + successfully fragmented at this output interface." + ::= { ipv6IfStatsEntry 13 } + + ipv6IfStatsOutFragFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 datagrams that have been + discarded because they needed to be fragmented + at this output interface but could not be." + ::= { ipv6IfStatsEntry 14 } + + ipv6IfStatsOutFragCreates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output datagram fragments that have + been generated as a result of fragmentation at + this output interface." + ::= { ipv6IfStatsEntry 15 } + + ipv6IfStatsReasmReqds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 fragments received which needed + to be reassembled at this interface. Note that this + counter is incremented at the interface to which + these fragments were addressed which might not + be necessarily the input interface for some of + the fragments." + ::= { ipv6IfStatsEntry 16 } + + ipv6IfStatsReasmOKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IPv6 datagrams successfully + reassembled. Note that this counter is incremented + at the interface to which these datagrams were + addressed which might not be necessarily the input + interface for some of the fragments." + ::= { ipv6IfStatsEntry 17 } + + ipv6IfStatsReasmFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of failures detected by the IPv6 re- + assembly algorithm (for whatever reason: timed + out, errors, etc.). Note that this is not + necessarily a count of discarded IPv6 fragments + since some algorithms (notably the algorithm in + RFC 815) can lose track of the number of fragments + by combining them as they are received. + This counter is incremented at the interface to which + these fragments were addressed which might not be + necessarily the input interface for some of the + fragments." + ::= { ipv6IfStatsEntry 18 } + + ipv6IfStatsInMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of multicast packets received + by the interface" + ::= { ipv6IfStatsEntry 19 } + + ipv6IfStatsOutMcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of multicast packets transmitted + by the interface" + ::= { ipv6IfStatsEntry 20 } + + + + -- Address Prefix table + + -- The IPv6 Address Prefix table contains information on + -- the entity's IPv6 Address Prefixes that are associated + -- with IPv6 interfaces. + + ipv6AddrPrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6AddrPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of IPv6 address prefixes of + IPv6 interfaces." + ::= { ipv6MIBObjects 7 } + + ipv6AddrPrefixEntry OBJECT-TYPE + SYNTAX Ipv6AddrPrefixEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An interface entry containing objects of + a particular IPv6 address prefix." + INDEX { ipv6IfIndex, + ipv6AddrPrefix, + ipv6AddrPrefixLength } + ::= { ipv6AddrPrefixTable 1 } + + Ipv6AddrPrefixEntry ::= SEQUENCE { + ipv6AddrPrefix Ipv6AddressPrefix, + ipv6AddrPrefixLength INTEGER, + ipv6AddrPrefixOnLinkFlag TruthValue, + ipv6AddrPrefixAutonomousFlag TruthValue, + ipv6AddrPrefixAdvPreferredLifetime Unsigned32, + ipv6AddrPrefixAdvValidLifetime Unsigned32 + } + + ipv6AddrPrefix OBJECT-TYPE + SYNTAX Ipv6AddressPrefix + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The prefix associated with the this interface." + ::= { ipv6AddrPrefixEntry 1 } + + ipv6AddrPrefixLength OBJECT-TYPE + SYNTAX INTEGER (0..128) + UNITS "bits" + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length of the prefix (in bits)." + ::= { ipv6AddrPrefixEntry 2 } + + ipv6AddrPrefixOnLinkFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)', if this + prefix can be used for on-link determination + and the value 'false(2)' otherwise." + ::= { ipv6AddrPrefixEntry 3 } + + ipv6AddrPrefixAutonomousFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Autonomous address configuration flag. When + true(1), indicates that this prefix can be used + for autonomous address configuration (i.e. can + be used to form a local interface address). + If false(2), it is not used to autoconfigure + a local interface address." + ::= { ipv6AddrPrefixEntry 4 } + + ipv6AddrPrefixAdvPreferredLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "It is the length of time in seconds that this + prefix will remain preferred, i.e. time until + deprecation. A value of 4,294,967,295 represents + infinity. + + The address generated from a deprecated prefix + should no longer be used as a source address in + new communications, but packets received on such + an interface are processed as expected." + ::= { ipv6AddrPrefixEntry 5 } + + ipv6AddrPrefixAdvValidLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "It is the length of time in seconds that this + prefix will remain valid, i.e. time until + invalidation. A value of 4,294,967,295 represents + infinity. + + The address generated from an invalidated prefix + should not appear as the destination or source + address of a packet." + ::= { ipv6AddrPrefixEntry 6 } + + + -- the IPv6 Address table + + -- The IPv6 address table contains this node's IPv6 + -- addressing information. + + ipv6AddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6AddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of addressing information relevant to + this node's interface addresses." + ::= { ipv6MIBObjects 8 } + + ipv6AddrEntry OBJECT-TYPE + SYNTAX Ipv6AddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The addressing information for one of this + node's interface addresses." + INDEX { ipv6IfIndex, ipv6AddrAddress } + ::= { ipv6AddrTable 1 } + + Ipv6AddrEntry ::= + SEQUENCE { + ipv6AddrAddress Ipv6Address, + ipv6AddrPfxLength INTEGER, + ipv6AddrType INTEGER, + ipv6AddrAnycastFlag TruthValue, + ipv6AddrStatus INTEGER + } + + ipv6AddrAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 address to which this entry's addressing + information pertains." + ::= { ipv6AddrEntry 1 } + + ipv6AddrPfxLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + UNITS "bits" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of the prefix (in bits) associated with + the IPv6 address of this entry." + ::= { ipv6AddrEntry 2 } + + ipv6AddrType OBJECT-TYPE + SYNTAX INTEGER { + -- address has been formed + -- using stateless + stateless(1), -- autoconfiguration + + -- address has been acquired + -- by stateful means + -- (e.g. DHCPv6, manual + stateful(2), -- configuration) + + -- type can not be determined + unknown(3) -- for some reason. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address. Note that 'stateless(1)' + refers to an address that was statelessly + autoconfigured; 'stateful(2)' refers to a address + which was acquired by via a stateful protocol + (e.g. DHCPv6, manual configuration)." + ::= { ipv6AddrEntry 3 } + + ipv6AddrAnycastFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)', if this + address is an anycast address and the value + 'false(2)' otherwise." + ::= { ipv6AddrEntry 4 } + + ipv6AddrStatus OBJECT-TYPE + SYNTAX INTEGER { + preferred(1), + + deprecated(2), + + invalid(3), + + inaccessible(4), + + unknown(5) -- status can not be determined + -- for some reason. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address status. The preferred(1) state indicates + that this is a valid address that can appear as + the destination or source address of a packet. + The deprecated(2) state indicates that this is + a valid but deprecated address that should no longer + be used as a source address in new communications, + but packets addressed to such an address are + processed as expected. The invalid(3) state indicates + that this is not valid address which should not + appear as the destination or source address of + a packet. The inaccessible(4) state indicates that + the address is not accessible because the interface + to which this address is assigned is not operational." + ::= { ipv6AddrEntry 5 } + + + -- IPv6 Routing objects + + ipv6RouteNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current ipv6RouteTable entries. + This is primarily to avoid having to read + the table in order to determine this number." + ::= { ipv6MIBObjects 9 } + + ipv6DiscardedRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of routing entries which were chosen + to be discarded even though they are valid. One + possible reason for discarding such an entry could + be to free-up buffer space for other routing + entries." + ::= { ipv6MIBObjects 10 } + + + -- IPv6 Routing table + + ipv6RouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6RouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IPv6 Routing table. This table contains + an entry for each valid IPv6 unicast route + that can be used for packet forwarding + determination." + ::= { ipv6MIBObjects 11 } + + ipv6RouteEntry OBJECT-TYPE + SYNTAX Ipv6RouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A routing entry." + INDEX { ipv6RouteDest, + ipv6RoutePfxLength, + ipv6RouteIndex } + ::= { ipv6RouteTable 1 } + + Ipv6RouteEntry ::= SEQUENCE { + ipv6RouteDest Ipv6Address, + ipv6RoutePfxLength INTEGER, + ipv6RouteIndex Unsigned32, + ipv6RouteIfIndex Ipv6IfIndexOrZero, + ipv6RouteNextHop Ipv6Address, + ipv6RouteType INTEGER, + ipv6RouteProtocol INTEGER, + ipv6RoutePolicy Integer32, + ipv6RouteAge Unsigned32, + ipv6RouteNextHopRDI Unsigned32, + ipv6RouteMetric Unsigned32, + ipv6RouteWeight Unsigned32, + ipv6RouteInfo RowPointer, + ipv6RouteValid TruthValue + } + + ipv6RouteDest OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination IPv6 address of this route. + This object may not take a Multicast address + value." + ::= { ipv6RouteEntry 1 } + + ipv6RoutePfxLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + UNITS "bits" + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the prefix length of the destination + address." + ::= { ipv6RouteEntry 2 } + + ipv6RouteIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value which uniquely identifies the route + among the routes to the same network layer + destination. The way this value is chosen is + implementation specific but it must be unique for + ipv6RouteDest/ipv6RoutePfxLength pair and remain + constant for the life of the route." + ::= { ipv6RouteEntry 3 } + + ipv6RouteIfIndex OBJECT-TYPE + SYNTAX Ipv6IfIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index value which uniquely identifies the local + interface through which the next hop of this + route should be reached. The interface identified + by a particular value of this index is the same + interface as identified by the same value of + ipv6IfIndex. For routes of the discard type this + value can be zero." + ::= { ipv6RouteEntry 4 } + + ipv6RouteNextHop OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "On remote routes, the address of the next + system en route; otherwise, ::0 + ('00000000000000000000000000000000'H in ASN.1 + string representation)." + ::= { ipv6RouteEntry 5 } + + ipv6RouteType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + -- an route indicating that + -- packets to destinations + -- matching this route are + discard(2), -- to be discarded + + -- route to directly + local(3), -- connected (sub-)network + + -- route to a remote + remote(4) -- destination + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of route. Note that 'local(3)' refers + to a route for which the next hop is the final + destination; 'remote(4)' refers to a route for + which the next hop is not the final + destination; 'discard(2)' refers to a route + indicating that packets to destinations matching + this route are to be discarded (sometimes called + black-hole route)." + ::= { ipv6RouteEntry 6 } + + ipv6RouteProtocol OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + -- non-protocol information, + -- e.g., manually configured + local(2), -- entries + + netmgmt(3), -- static route + + -- obtained via Neighbor + -- Discovery protocol, + ndisc(4), -- e.g., result of Redirect + + -- the following are all + -- dynamic routing protocols + rip(5), -- RIPng + ospf(6), -- Open Shortest Path First + bgp(7), -- Border Gateway Protocol + idrp(8), -- InterDomain Routing Protocol + igrp(9) -- InterGateway Routing Protocol + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which this route was + learned." + ::= { ipv6RouteEntry 7 } + + ipv6RoutePolicy OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The general set of conditions that would cause the + selection of one multipath route (set of next hops + for a given destination) is referred to as 'policy'. + Unless the mechanism indicated by ipv6RouteProtocol + specified otherwise, the policy specifier is the + 8-bit Traffic Class field of the IPv6 packet header + that is zero extended at the left to a 32-bit value. + + Protocols defining 'policy' otherwise must either + define a set of values which are valid for + this object or must implement an integer- + instanced policy table for which this object's + value acts as an index." + ::= { ipv6RouteEntry 8 } + + ipv6RouteAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds since this route was last + updated or otherwise determined to be correct. + Note that no semantics of `too old' can be implied + except through knowledge of the routing protocol + by which the route was learned." + ::= { ipv6RouteEntry 9 } + + ipv6RouteNextHopRDI OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Routing Domain ID of the Next Hop. + The semantics of this object are determined by + the routing-protocol specified in the route's + ipv6RouteProtocol value. When this object is + unknown or not relevant its value should be set + to zero." + ::= { ipv6RouteEntry 10 } + + ipv6RouteMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing metric for this route. The + semantics of this metric are determined by the + routing protocol specified in the route's + ipv6RouteProtocol value. When this is unknown + or not relevant to the protocol indicated by + ipv6RouteProtocol, the object value should be + set to its maximum value (4,294,967,295)." + ::= { ipv6RouteEntry 11 } + + ipv6RouteWeight OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system internal weight value for this route. + The semantics of this value are determined by + the implementation specific rules. Generally, + within routes with the same ipv6RoutePolicy value, + the lower the weight value the more preferred is + the route." + ::= { ipv6RouteEntry 12 } + + ipv6RouteInfo OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A reference to MIB definitions specific to the + particular routing protocol which is responsible + for this route, as determined by the value + specified in the route's ipv6RouteProto value. + If this information is not present, its value + should be set to the OBJECT ID { 0 0 }, + which is a syntactically valid object identifier, + and any implementation conforming to ASN.1 + and the Basic Encoding Rules must be able to + generate and recognize this value." + ::= { ipv6RouteEntry 13 } + + ipv6RouteValid OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to the value 'false(2)' has + the effect of invalidating the corresponding entry + in the ipv6RouteTable object. That is, it + effectively disassociates the destination + identified with said entry from the route + identified with said entry. It is an + implementation-specific matter as to whether the + agent removes an invalidated entry from the table. + Accordingly, management stations must be prepared + to receive tabular information from agents that + corresponds to entries not currently in use. + Proper interpretation of such entries requires + examination of the relevant ipv6RouteValid + object." + DEFVAL { true } + ::= { ipv6RouteEntry 14 } + + + -- IPv6 Address Translation table + + ipv6NetToMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6NetToMediaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 Address Translation table used for + mapping from IPv6 addresses to physical addresses. + + The IPv6 address translation table contain the + Ipv6Address to `physical' address equivalencies. + Some interfaces do not use translation tables + for determining address equivalencies; if all + interfaces are of this type, then the Address + Translation table is empty, i.e., has zero + entries." + ::= { ipv6MIBObjects 12 } + + ipv6NetToMediaEntry OBJECT-TYPE + SYNTAX Ipv6NetToMediaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one IPv6 address to `physical' + address equivalence." + INDEX { ipv6IfIndex, + ipv6NetToMediaNetAddress } + ::= { ipv6NetToMediaTable 1 } + + Ipv6NetToMediaEntry ::= SEQUENCE { + ipv6NetToMediaNetAddress + Ipv6Address, + ipv6NetToMediaPhysAddress + PhysAddress, + ipv6NetToMediaType + INTEGER, + ipv6IfNetToMediaState + INTEGER, + ipv6IfNetToMediaLastUpdated + TimeStamp, + ipv6NetToMediaValid + TruthValue + } + + ipv6NetToMediaNetAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 Address corresponding to + the media-dependent `physical' address." + ::= { ipv6NetToMediaEntry 1 } + + ipv6NetToMediaPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The media-dependent `physical' address." + ::= { ipv6NetToMediaEntry 2 } + + ipv6NetToMediaType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + dynamic(2), -- dynamically resolved + static(3), -- statically configured + local(4) -- local interface + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the mapping. The 'dynamic(2)' type + indicates that the IPv6 address to physical + addresses mapping has been dynamically + resolved using the IPv6 Neighbor Discovery + protocol. The static(3)' types indicates that + the mapping has been statically configured. + The local(4) indicates that the mapping is + provided for an entity's own interface address." + ::= { ipv6NetToMediaEntry 3 } + +ipv6IfNetToMediaState OBJECT-TYPE + SYNTAX INTEGER { + reachable(1), -- confirmed reachability + + stale(2), -- unconfirmed reachability + + delay(3), -- waiting for reachability + -- confirmation before entering + -- the probe state + + probe(4), -- actively probing + + invalid(5), -- an invalidated mapping + + unknown(6) -- state can not be determined + -- for some reason. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Neighbor Unreachability Detection [8] state + for the interface when the address mapping in + this entry is used." + ::= { ipv6NetToMediaEntry 4 } + +ipv6IfNetToMediaLastUpdated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this entry + was last updated. If this entry was updated prior + to the last re-initialization of the local network + management subsystem, then this object contains + a zero value." + ::= { ipv6NetToMediaEntry 5 } + + ipv6NetToMediaValid OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to the value 'false(2)' has + the effect of invalidating the corresponding entry + in the ipv6NetToMediaTable. That is, it effectively + disassociates the interface identified with said + entry from the mapping identified with said entry. + It is an implementation-specific matter as to + whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive tabular information + from agents that corresponds to entries not + currently in use. Proper interpretation of such + entries requires examination of the relevant + ipv6NetToMediaValid object." + DEFVAL { true } + ::= { ipv6NetToMediaEntry 6 } + + +-- definition of IPv6-related notifications. +-- Note that we need ipv6NotificationPrefix with the 0 +-- sub-identifier to make this MIB to translate to +-- an SNMPv1 format in a reversible way. For example +-- it is needed for proxies that convert SNMPv1 traps +-- to SNMPv2 notifications without MIB knowledge. + +ipv6Notifications OBJECT IDENTIFIER + ::= { ipv6MIB 2 } +ipv6NotificationPrefix OBJECT IDENTIFIER + ::= { ipv6Notifications 0 } + +ipv6IfStateChange NOTIFICATION-TYPE + OBJECTS { + ipv6IfDescr, + ipv6IfOperStatus -- the new state of the If. + } + STATUS current + DESCRIPTION + "An ipv6IfStateChange notification signifies + that there has been a change in the state of + an ipv6 interface. This notification should + be generated when the interface's operational + status transitions to or from the up(1) state." + + ::= { ipv6NotificationPrefix 1 } + + +-- conformance information + +ipv6Conformance OBJECT IDENTIFIER ::= { ipv6MIB 3 } + +ipv6Compliances OBJECT IDENTIFIER ::= { ipv6Conformance 1 } +ipv6Groups OBJECT IDENTIFIER ::= { ipv6Conformance 2 } + +-- compliance statements + +ipv6Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement ipv6 MIB." + MODULE -- this module + MANDATORY-GROUPS { ipv6GeneralGroup, + ipv6NotificationGroup } + OBJECT ipv6Forwarding + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6DefaultHopLimit + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6IfDescr + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6IfIdentifier + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6IfIdentifierLength + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + + OBJECT ipv6IfAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6RouteValid + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + OBJECT ipv6NetToMediaValid + MIN-ACCESS read-only + DESCRIPTION + "An agent is not required to provide write + access to this object" + ::= { ipv6Compliances 1 } + +ipv6GeneralGroup OBJECT-GROUP + OBJECTS { ipv6Forwarding, + ipv6DefaultHopLimit, + ipv6Interfaces, + ipv6IfTableLastChange, + ipv6IfDescr, + ipv6IfLowerLayer, + ipv6IfEffectiveMtu, + ipv6IfReasmMaxSize, + ipv6IfIdentifier, + ipv6IfIdentifierLength, + ipv6IfPhysicalAddress, + ipv6IfAdminStatus, + ipv6IfOperStatus, + ipv6IfLastChange, + ipv6IfStatsInReceives, + ipv6IfStatsInHdrErrors, + ipv6IfStatsInTooBigErrors, + ipv6IfStatsInNoRoutes, + ipv6IfStatsInAddrErrors, + ipv6IfStatsInUnknownProtos, + ipv6IfStatsInTruncatedPkts, + ipv6IfStatsInDiscards, + ipv6IfStatsInDelivers, + ipv6IfStatsOutForwDatagrams, + ipv6IfStatsOutRequests, + ipv6IfStatsOutDiscards, + ipv6IfStatsOutFragOKs, + ipv6IfStatsOutFragFails, + ipv6IfStatsOutFragCreates, + ipv6IfStatsReasmReqds, + ipv6IfStatsReasmOKs, + ipv6IfStatsReasmFails, + ipv6IfStatsInMcastPkts, + ipv6IfStatsOutMcastPkts, + ipv6AddrPrefixOnLinkFlag, + ipv6AddrPrefixAutonomousFlag, + ipv6AddrPrefixAdvPreferredLifetime, + ipv6AddrPrefixAdvValidLifetime, + ipv6AddrPfxLength, + ipv6AddrType, + ipv6AddrAnycastFlag, + ipv6AddrStatus, + ipv6RouteNumber, + ipv6DiscardedRoutes, + ipv6RouteIfIndex, + ipv6RouteNextHop, + ipv6RouteType, + ipv6RouteProtocol, + ipv6RoutePolicy, + ipv6RouteAge, + ipv6RouteNextHopRDI, + ipv6RouteMetric, + ipv6RouteWeight, + ipv6RouteInfo, + ipv6RouteValid, + ipv6NetToMediaPhysAddress, + ipv6NetToMediaType, + ipv6IfNetToMediaState, + ipv6IfNetToMediaLastUpdated, + ipv6NetToMediaValid } + STATUS current + DESCRIPTION + "The IPv6 group of objects providing for basic + management of IPv6 entities." + ::= { ipv6Groups 1 } + +ipv6NotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { ipv6IfStateChange } + STATUS current + DESCRIPTION + "The notification that an IPv6 entity is required + to implement." + + + ::= { ipv6Groups 2 } + + END diff --git a/mibs/ietf/IPV6-MLD-MIB b/mibs/ietf/IPV6-MLD-MIB new file mode 100644 index 0000000..7ed0a9d --- /dev/null +++ b/mibs/ietf/IPV6-MLD-MIB @@ -0,0 +1,444 @@ +IPV6-MLD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, + Unsigned32, TimeTicks, mib-2 FROM SNMPv2-SMI + RowStatus, TruthValue FROM SNMPv2-TC + InetAddressIPv6 FROM INET-ADDRESS-MIB + InterfaceIndex, InterfaceIndexOrZero + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + + +mldMIB MODULE-IDENTITY + LAST-UPDATED "200101250000Z" -- 25 Jan 2001 + ORGANIZATION "IETF IPNGWG Working Group." + CONTACT-INFO + " Brian Haberman + Nortel Networks + 4309 Emperor Blvd. + Durham, NC 27703 + USA + + Phone: +1 919 992 4439 + e-mail: haberman@nortelnetworks.com" + DESCRIPTION + "The MIB module for MLD Management." + REVISION "200101250000Z" -- 25 Jan 2001 + DESCRIPTION + "Initial version, published as RFC 3019." + ::= { mib-2 91 } + + +mldMIBObjects OBJECT IDENTIFIER ::= { mldMIB 1 } +-- +-- The MLD Interface Table +-- + +mldInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MldInterfaceEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interfaces on which + MLD is enabled." + ::= { mldMIBObjects 1 } + +mldInterfaceEntry OBJECT-TYPE + SYNTAX MldInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing an interface on + which MLD is enabled." + INDEX { mldInterfaceIfIndex } + ::= { mldInterfaceTable 1 } + +MldInterfaceEntry ::= SEQUENCE { + mldInterfaceIfIndex InterfaceIndex, + mldInterfaceQueryInterval Unsigned32, + mldInterfaceStatus RowStatus, + mldInterfaceVersion Unsigned32, + mldInterfaceQuerier InetAddressIPv6, + mldInterfaceQueryMaxResponseDelay Unsigned32, + mldInterfaceJoins Counter32, + mldInterfaceGroups Gauge32, + mldInterfaceRobustness Unsigned32, + mldInterfaceLastListenQueryIntvl Unsigned32, + mldInterfaceProxyIfIndex InterfaceIndexOrZero, + mldInterfaceQuerierUpTime TimeTicks, + mldInterfaceQuerierExpiryTime TimeTicks +} + +mldInterfaceIfIndex OBJECT-TYPE + + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The internetwork-layer interface value of the interface + for which MLD is enabled." + ::= { mldInterfaceEntry 1 } + +mldInterfaceQueryInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + + + DESCRIPTION + "The frequency at which MLD Host-Query packets are + transmitted on this interface." + DEFVAL { 125 } + ::= { mldInterfaceEntry 2 } + +mldInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The activation of a row enables MLD on the interface. + The destruction of a row disables MLD on the interface." + ::= { mldInterfaceEntry 3 } + +mldInterfaceVersion OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The version of MLD which is running on this interface. + This object is a place holder to allow for new versions + of MLD to be introduced. Version 1 of MLD is defined + in RFC 2710." + DEFVAL { 1 } + ::= { mldInterfaceEntry 4 } + +mldInterfaceQuerier OBJECT-TYPE + SYNTAX InetAddressIPv6 (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the MLD Querier on the IPv6 subnet to + which this interface is attached." + ::= { mldInterfaceEntry 5 } + +mldInterfaceQueryMaxResponseDelay OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum query response time advertised in MLD + queries on this interface." + DEFVAL { 10 } + ::= { mldInterfaceEntry 6 } + +mldInterfaceJoins OBJECT-TYPE + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a group membership has been added on + this interface; that is, the number of times an entry for + this interface has been added to the Cache Table. This + object gives an indication of the amount of MLD activity + over time." + ::= { mldInterfaceEntry 7 } + +mldInterfaceGroups OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of entries for this interface in the + Cache Table." + ::= { mldInterfaceEntry 8 } + +mldInterfaceRobustness OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Robustness Variable allows tuning for the expected + packet loss on a subnet. If a subnet is expected to be + lossy, the Robustness Variable may be increased. MLD is + robust to (Robustness Variable-1) packet losses. The + discussion of the Robustness Variable is in Section 7.1 + of RFC 2710." + DEFVAL { 2 } + ::= { mldInterfaceEntry 9 } + +mldInterfaceLastListenQueryIntvl OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Last Member Query Interval is the Max Response + Delay inserted into Group-Specific Queries sent in + response to Leave Group messages, and is also the amount + of time between Group-Specific Query messages. This + value may be tuned to modify the leave latency of the + network. A reduced value results in reduced time to + detect the loss of the last member of a group." + DEFVAL { 1 } + + + ::= { mldInterfaceEntry 10 } + +mldInterfaceProxyIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Some devices implement a form of MLD proxying whereby + memberships learned on the interface represented by this + row, cause MLD Multicast Listener Reports to be sent on + the internetwork-layer interface identified by this + object. Such a device would implement mldRouterMIBGroup + only on its router interfaces (those interfaces with + non-zero mldInterfaceProxyIfIndex). Typically, the + value of this object is 0, indicating that no proxying + is being done." + DEFVAL { 0 } + ::= { mldInterfaceEntry 11 } + +mldInterfaceQuerierUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since mldInterfaceQuerier was last changed." + ::= { mldInterfaceEntry 12 } + +mldInterfaceQuerierExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the Other Querier Present + Timer expires. If the local system is the querier, + the value of this object is zero." + ::= { mldInterfaceEntry 13 } + + +-- +-- The MLD Cache Table +-- + +mldCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF MldCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the IPv6 multicast + + + groups for which there are members on a particular + interface." + ::= { mldMIBObjects 2 } + +mldCacheEntry OBJECT-TYPE + SYNTAX MldCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the mldCacheTable." + INDEX { mldCacheAddress, mldCacheIfIndex } + ::= { mldCacheTable 1 } + +MldCacheEntry ::= SEQUENCE { + mldCacheAddress InetAddressIPv6, + mldCacheIfIndex InterfaceIndex, + mldCacheSelf TruthValue, + mldCacheLastReporter InetAddressIPv6, + mldCacheUpTime TimeTicks, + mldCacheExpiryTime TimeTicks, + mldCacheStatus RowStatus +} + +mldCacheAddress OBJECT-TYPE + SYNTAX InetAddressIPv6 (SIZE (16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IPv6 multicast group address for which this entry + contains information." + ::= { mldCacheEntry 1 } + +mldCacheIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The internetwork-layer interface for which this entry + contains information for an IPv6 multicast group + address." + ::= { mldCacheEntry 2 } + +mldCacheSelf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of whether the local system is a member of + + + this group address on this interface." + DEFVAL { true } + ::= { mldCacheEntry 3 } + +mldCacheLastReporter OBJECT-TYPE + SYNTAX InetAddressIPv6 (SIZE (16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IPv6 address of the source of the last membership + report received for this IPv6 Multicast group address on + this interface. If no membership report has been + received, this object has the value 0::0." + ::= { mldCacheEntry 4 } + +mldCacheUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time elapsed since this entry was created." + ::= { mldCacheEntry 5 } + +mldCacheExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum amount of time remaining before this entry + will be aged out. A value of 0 indicates that the entry + is only present because mldCacheSelf is true and that if + the router left the group, this entry would be aged out + immediately. Note that some implementations may process + Membership Reports from the local system in the same way + as reports from other hosts, so a value of 0 is not + required." + ::= { mldCacheEntry 6 } + +mldCacheStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or existing entries deleted from this table." + ::= { mldCacheEntry 7 } + + + + +-- conformance information + +mldMIBConformance + OBJECT IDENTIFIER ::= { mldMIB 2 } +mldMIBCompliances + OBJECT IDENTIFIER ::= { mldMIBConformance 1 } +mldMIBGroups + OBJECT IDENTIFIER ::= { mldMIBConformance 2 } + + +-- compliance statements + +mldHostMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts running MLD and + implementing the MLD MIB." + MODULE -- this module + MANDATORY-GROUPS { mldBaseMIBGroup, + mldHostMIBGroup + } + + OBJECT mldInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mldMIBCompliances 1 } + +mldRouterMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running MLD and + implementing the MLD MIB." + MODULE -- this module + MANDATORY-GROUPS { mldBaseMIBGroup, + mldRouterMIBGroup + } + + OBJECT mldInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mldMIBCompliances 2 } + + +-- units of conformance + + + +mldBaseMIBGroup OBJECT-GROUP + OBJECTS { mldCacheSelf, + mldCacheStatus, mldInterfaceStatus + } + STATUS current + DESCRIPTION + "The basic collection of objects providing management of + MLD. The mldBaseMIBGroup is designed to allow for the + manager creation and deletion of MLD cache entries." + ::= { mldMIBGroups 1 } + +mldRouterMIBGroup OBJECT-GROUP + OBJECTS { mldCacheUpTime, mldCacheExpiryTime, + mldInterfaceQueryInterval, + mldInterfaceJoins, mldInterfaceGroups, + mldCacheLastReporter, + mldInterfaceQuerierUpTime, + mldInterfaceQuerierExpiryTime, + mldInterfaceQuerier, + mldInterfaceVersion, + mldInterfaceQueryMaxResponseDelay, + mldInterfaceRobustness, + mldInterfaceLastListenQueryIntvl + } + STATUS current + DESCRIPTION + "A collection of additional objects for management of MLD + in routers." + ::= { mldMIBGroups 2 } + + +mldHostMIBGroup OBJECT-GROUP + OBJECTS { mldInterfaceQuerier + } + STATUS current + DESCRIPTION + "A collection of additional objects for management of MLD + in hosts." + ::= { mldMIBGroups 3 } + + +mldProxyMIBGroup OBJECT-GROUP + OBJECTS { mldInterfaceProxyIfIndex } + STATUS current + DESCRIPTION + "A collection of additional objects for management of MLD + proxy devices." + + + ::= { mldMIBGroups 4 } + +END diff --git a/mibs/ietf/IPV6-TC b/mibs/ietf/IPV6-TC new file mode 100644 index 0000000..48c9f0e --- /dev/null +++ b/mibs/ietf/IPV6-TC @@ -0,0 +1,67 @@ +IPV6-TC DEFINITIONS ::= BEGIN + +IMPORTS + Integer32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + +-- definition of textual conventions +Ipv6Address ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:" + STATUS current + DESCRIPTION + "This data type is used to model IPv6 addresses. + This is a binary string of 16 octets in network + byte-order." + SYNTAX OCTET STRING (SIZE (16)) + +Ipv6AddressPrefix ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:" + STATUS current + DESCRIPTION + "This data type is used to model IPv6 address + prefixes. This is a binary string of up to 16 + octets in network byte-order." + SYNTAX OCTET STRING (SIZE (0..16)) + +Ipv6AddressIfIdentifier ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:" + STATUS current + DESCRIPTION + "This data type is used to model IPv6 address + interface identifiers. This is a binary string + of up to 8 octets in network byte-order." + SYNTAX OCTET STRING (SIZE (0..8)) + +Ipv6IfIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero for each + internetwork-layer interface in the managed + system. It is recommended that values are assigned + contiguously starting from 1. The value for each + internetwork-layer interface must remain constant + at least from one re-initialization of the entity's + network management system to the next + re-initialization." + SYNTAX Integer32 (1..2147483647) + +Ipv6IfIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + Ipv6IfIndex convention. The latter defines + a greater than zero value used to identify an IPv6 + interface in the managed system. This extension + permits the additional value of zero. The value + zero is object-specific and must therefore be + defined as part of the description of any object + which uses this syntax. Examples of the usage of + zero might include situations where interface was + unknown, or when none or all interfaces need to be + referenced." + SYNTAX Integer32 (0..2147483647) + +END diff --git a/mibs/ietf/IPV6-TCP-MIB b/mibs/ietf/IPV6-TCP-MIB new file mode 100644 index 0000000..c3777d0 --- /dev/null +++ b/mibs/ietf/IPV6-TCP-MIB @@ -0,0 +1,209 @@ +IPV6-TCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + MODULE-IDENTITY, OBJECT-TYPE, + mib-2, experimental FROM SNMPv2-SMI + Ipv6Address, Ipv6IfIndexOrZero FROM IPV6-TC; + +ipv6TcpMIB MODULE-IDENTITY + LAST-UPDATED "9801290000Z" + ORGANIZATION "IETF IPv6 MIB Working Group" + CONTACT-INFO + " Mike Daniele + + Postal: Compaq Computer Corporation + 110 Spitbrook Rd + Nashua, NH 03062. + US + + Phone: +1 603 884 1423 + Email: daniele@zk3.dec.com" + DESCRIPTION + "The MIB module for entities implementing TCP over IPv6." + ::= { experimental 86 } + +-- objects specific to TCP for IPv6 + +tcp OBJECT IDENTIFIER ::= { mib-2 6 } + +-- the TCP over IPv6 Connection table + +-- This connection table contains information about this +-- entity's existing TCP connections between IPv6 endpoints. +-- Only connections between IPv6 addresses are contained in +-- this table. This entity's connections between IPv4 +-- endpoints are contained in tcpConnTable. + +ipv6TcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6TcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing TCP connection-specific information, + for only those connections whose endpoints are IPv6 addresses." + ::= { tcp 16 } + +ipv6TcpConnEntry OBJECT-TYPE + SYNTAX Ipv6TcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the ipv6TcpConnTable containing + information about a particular current TCP connection. + Each row of this table is transient, in that it ceases to + exist when (or soon after) the connection makes the transition + to the CLOSED state. + + Note that conceptual rows in this table require an additional + index object compared to tcpConnTable, since IPv6 addresses + are not guaranteed to be unique on the managed node." + INDEX { ipv6TcpConnLocalAddress, + ipv6TcpConnLocalPort, + ipv6TcpConnRemAddress, + ipv6TcpConnRemPort, + ipv6TcpConnIfIndex } + ::= { ipv6TcpConnTable 1 } + +Ipv6TcpConnEntry ::= + SEQUENCE { ipv6TcpConnLocalAddress Ipv6Address, + ipv6TcpConnLocalPort INTEGER, + ipv6TcpConnRemAddress Ipv6Address, + ipv6TcpConnRemPort INTEGER, + ipv6TcpConnIfIndex Ipv6IfIndexOrZero, + ipv6TcpConnState INTEGER } + +ipv6TcpConnLocalAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IPv6 address for this TCP connection. In + the case of a connection in the listen state which + is willing to accept connections for any IPv6 + address associated with the managed node, the value + ::0 is used." + ::= { ipv6TcpConnEntry 1 } + +ipv6TcpConnLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this TCP connection." + ::= { ipv6TcpConnEntry 2 } + +ipv6TcpConnRemAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote IPv6 address for this TCP connection." + ::= { ipv6TcpConnEntry 3 } + +ipv6TcpConnRemPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this TCP connection." + ::= { ipv6TcpConnEntry 4 } + +ipv6TcpConnIfIndex OBJECT-TYPE + SYNTAX Ipv6IfIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index object used to disambiguate conceptual rows in + the table, since the connection 4-tuple may not be unique. + + If the connection's remote address (ipv6TcpConnRemAddress) + is a link-local address and the connection's local address + (ipv6TcpConnLocalAddress) is not a link-local address, this + object identifies a local interface on the same link as + the connection's remote link-local address. + + Otherwise, this object identifies the local interface that + is associated with the ipv6TcpConnLocalAddress for this + TCP connection. If such a local interface cannot be determined, + this object should take on the value 0. (A possible example + of this would be if the value of ipv6TcpConnLocalAddress is ::0.) + + The interface identified by a particular non-0 value of this + index is the same interface as identified by the same value + of ipv6IfIndex. + + The value of this object must remain constant during the life + of the TCP connection." + ::= { ipv6TcpConnEntry 5 } + +ipv6TcpConnState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + listen(2), + synSent(3), + synReceived(4), + established(5), + finWait1(6), + finWait2(7), + closeWait(8), + lastAck(9), + closing(10), + timeWait(11), + deleteTCB(12) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this TCP connection. + + The only value which may be set by a management station is + deleteTCB(12). Accordingly, it is appropriate for an agent + to return an error response (`badValue' for SNMPv1, 'wrongValue' + for SNMPv2) if a management station attempts to set this + object to any other value. + + If a management station sets this object to the value + deleteTCB(12), then this has the effect of deleting the TCB + (as defined in RFC 793) of the corresponding connection on + the managed node, resulting in immediate termination of the + connection. + As an implementation-specific option, a RST segment may be + sent from the managed node to the other TCP endpoint (note + however that RST segments are not sent reliably)." + ::= { ipv6TcpConnEntry 6 } + +-- +-- conformance information +-- + +ipv6TcpConformance OBJECT IDENTIFIER ::= { ipv6TcpMIB 2 } + +ipv6TcpCompliances OBJECT IDENTIFIER ::= { ipv6TcpConformance 1 } +ipv6TcpGroups OBJECT IDENTIFIER ::= { ipv6TcpConformance 2 } + +-- compliance statements + +ipv6TcpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement TCP over IPv6." + MODULE -- this module + MANDATORY-GROUPS { ipv6TcpGroup } + ::= { ipv6TcpCompliances 1 } + +ipv6TcpGroup OBJECT-GROUP + OBJECTS { -- these are defined in this module + -- ipv6TcpConnLocalAddress (not-accessible) + -- ipv6TcpConnLocalPort (not-accessible) + -- ipv6TcpConnRemAddress (not-accessible) + -- ipv6TcpConnRemPort (not-accessible) + -- ipv6TcpConnIfIndex (not-accessible) + ipv6TcpConnState } + STATUS current + DESCRIPTION + "The group of objects providing management of + TCP over IPv6." + ::= { ipv6TcpGroups 1 } + +END diff --git a/mibs/ietf/IPV6-UDP-MIB b/mibs/ietf/IPV6-UDP-MIB new file mode 100644 index 0000000..abb8b17 --- /dev/null +++ b/mibs/ietf/IPV6-UDP-MIB @@ -0,0 +1,141 @@ +IPV6-UDP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + MODULE-IDENTITY, OBJECT-TYPE, + mib-2, experimental FROM SNMPv2-SMI + Ipv6Address, Ipv6IfIndexOrZero FROM IPV6-TC; + +ipv6UdpMIB MODULE-IDENTITY + LAST-UPDATED "9801290000Z" + ORGANIZATION "IETF IPv6 MIB Working Group" + CONTACT-INFO + " Mike Daniele + + Postal: Compaq Computer Corporation + 110 Spitbrook Rd + Nashua, NH 03062. + US + + Phone: +1 603 884 1423 + Email: daniele@zk3.dec.com" + DESCRIPTION + "The MIB module for entities implementing UDP over IPv6." + ::= { experimental 87 } + +-- objects specific to UDP for IPv6 + +udp OBJECT IDENTIFIER ::= { mib-2 7 } + +-- the UDP over IPv6 Listener table + +-- This table contains information about this entity's +-- UDP/IPv6 endpoints. Only endpoints utilizing IPv6 addresses +-- are contained in this table. This entity's UDP/IPv4 endpoints +-- are contained in udpTable. + +ipv6UdpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ipv6UdpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing UDP listener information for + UDP/IPv6 endpoints." + ::= { udp 6 } + +ipv6UdpEntry OBJECT-TYPE + SYNTAX Ipv6UdpEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular current UDP listener. + + Note that conceptual rows in this table require an + additional index object compared to udpTable, since + IPv6 addresses are not guaranteed to be unique on the + managed node." + INDEX { ipv6UdpLocalAddress, + ipv6UdpLocalPort, + ipv6UdpIfIndex } + ::= { ipv6UdpTable 1 } + +Ipv6UdpEntry ::= SEQUENCE { + ipv6UdpLocalAddress Ipv6Address, + ipv6UdpLocalPort INTEGER, + ipv6UdpIfIndex Ipv6IfIndexOrZero } + +ipv6UdpLocalAddress OBJECT-TYPE + SYNTAX Ipv6Address + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IPv6 address for this UDP listener. + In the case of a UDP listener which is willing + to accept datagrams for any IPv6 address + associated with the managed node, the value ::0 + is used." + ::= { ipv6UdpEntry 1 } + +ipv6UdpLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this UDP listener." + ::= { ipv6UdpEntry 2 } + +ipv6UdpIfIndex OBJECT-TYPE + SYNTAX Ipv6IfIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index object used to disambiguate conceptual rows in + the table, since the ipv6UdpLocalAddress/ipv6UdpLocalPort + pair may not be unique. + + This object identifies the local interface that is + associated with ipv6UdpLocalAddress for this UDP listener. + If such a local interface cannot be determined, this object + should take on the value 0. (A possible example of this + would be if the value of ipv6UdpLocalAddress is ::0.) + + The interface identified by a particular non-0 value of + this index is the same interface as identified by the same + value of ipv6IfIndex. + + The value of this object must remain constant during + the life of this UDP endpoint." + ::= { ipv6UdpEntry 3 } + +-- +-- conformance information +-- + +ipv6UdpConformance OBJECT IDENTIFIER ::= { ipv6UdpMIB 2 } + +ipv6UdpCompliances OBJECT IDENTIFIER ::= { ipv6UdpConformance 1 } +ipv6UdpGroups OBJECT IDENTIFIER ::= { ipv6UdpConformance 2 } + +-- compliance statements + +ipv6UdpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement UDP over IPv6." + MODULE -- this module + MANDATORY-GROUPS { ipv6UdpGroup } + ::= { ipv6UdpCompliances 1 } + +ipv6UdpGroup OBJECT-GROUP + OBJECTS { -- these are defined in this module + -- ipv6UdpLocalAddress (not-accessible) + -- ipv6UdpLocalPort (not-accessible) + ipv6UdpIfIndex } + STATUS current + DESCRIPTION + "The group of objects providing management of + UDP over IPv6." + ::= { ipv6UdpGroups 1 } + +END diff --git a/mibs/ietf/ISCSI-MIB b/mibs/ietf/ISCSI-MIB new file mode 100644 index 0000000..68c215f --- /dev/null +++ b/mibs/ietf/ISCSI-MIB @@ -0,0 +1,3276 @@ +ISCSI-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, NOTIFICATION-TYPE, + Unsigned32, Counter32, Counter64, Gauge32, + mib-2 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, TruthValue, RowPointer, TimeStamp, RowStatus, + AutonomousType, StorageType + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB -- RFC 4001 + ; + +iscsiMibModule MODULE-IDENTITY + LAST-UPDATED "200605220000Z" -- May 22, 2006 + ORGANIZATION "IETF IPS Working Group" + CONTACT-INFO + " + Mark Bakke + Cisco Systems, Inc + 7900 International Drive, Suite 400 + Bloomington, MN + USA 55425 + + E-mail: mbakke@cisco.com + + Marjorie Krueger + Hewlett-Packard + Networked Storage Architecture + Networked Storage Solutions Org. + 8000 Foothills Blvd. + Roseville, CA 95747 + + + + + E-mail: marjorie_krueger@hp.com + + Tom McSweeney + IBM Corporation + 600 Park Offices Drive + Research Triangle Park, NC + USA 27709 + + E-mail: tommcs@us.ibm.com + + James Muchow + Qlogic Corp. + 6321 Bury Dr. + Eden Prairie, MN + USA 55346 + + E-mail: james.muchow@qlogic.com" + + DESCRIPTION + "The iSCSI Protocol MIB module. + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4544; see the RFC itself for + full legal notices." + REVISION "200605220000Z" -- May 22, 2006 + DESCRIPTION + "Initial version of the iSCSI Protocol MIB module" + +::= { mib-2 142 } + +iscsiNotifications OBJECT IDENTIFIER ::= { iscsiMibModule 0 } +iscsiObjects OBJECT IDENTIFIER ::= { iscsiMibModule 1 } +iscsiConformance OBJECT IDENTIFIER ::= { iscsiMibModule 2 } +iscsiAdmin OBJECT IDENTIFIER ::= { iscsiMibModule 3 } + +-- Textual Conventions + +IscsiTransportProtocol ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is used to define the transport + protocols that will carry iSCSI PDUs." + REFERENCE + "RFC791, RFC1700 + + The presently known, officially delegated numbers + can be found at: + http://www.iana.org/assignments/protocol-numbers" + + + + SYNTAX Unsigned32 (0..255) + +IscsiDigestMethod ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type represents the methods possible + for digest negotiation. + none - a placeholder for a secondary digest method + that means only the primary method can be + used. + other - a digest method other than those defined below. + noDigest - does not support digests (will operate without + a digest (Note: implementations must support + digests to be compliant with the RFC3720). + CRC32c - require a CRC32C digest." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" + SYNTAX INTEGER { + none(1), + other(2), + noDigest(3), + crc32c(4) + } + +IscsiName ::= TEXTUAL-CONVENTION + DISPLAY-HINT "223t" + STATUS current + DESCRIPTION + "This data type is used for objects whose value is an + iSCSI name with the properties described in RFC 3720 + section 3.2.6.1, and encoded as specified in RFC 3720 + section 3.2.6.2. A zero-length string indicates the + absence of an iSCSI name." + REFERENCE + "RFC 3720, Section 3.2.6, iSCSI Names." + SYNTAX OCTET STRING (SIZE(0 | 16..223)) + +--********************************************************************** + +iscsiDescriptors OBJECT IDENTIFIER ::= { iscsiAdmin 1 } + +iscsiHeaderIntegrityTypes OBJECT IDENTIFIER ::= { iscsiDescriptors 1 } + +iscsiHdrIntegrityNone OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when no integrity + scheme (for either the header or data) is being + + + + used." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiHeaderIntegrityTypes 1 } + +iscsiHdrIntegrityCrc32c OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the integrity + scheme (for either the header or data) is CRC32c." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiHeaderIntegrityTypes 2 } + +iscsiDataIntegrityTypes OBJECT IDENTIFIER ::= { iscsiDescriptors 2 } + +iscsiDataIntegrityNone OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when no integrity + scheme (for either the header or data) is being + used." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiDataIntegrityTypes 1 } + +iscsiDataIntegrityCrc32c OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The authoritative identifier when the integrity + scheme (for either the header or data) is CRC32c." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiDataIntegrityTypes 2 } + +--********************************************************************** + +iscsiInstance OBJECT IDENTIFIER ::= { iscsiObjects 1 } + +-- Instance Attributes Table + +iscsiInstanceAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInstanceAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of iSCSI instances present on the system." +::= { iscsiInstance 1 } + + + +iscsiInstanceAttributesEntry OBJECT-TYPE + SYNTAX IscsiInstanceAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular iSCSI instance." + INDEX { iscsiInstIndex } +::= { iscsiInstanceAttributesTable 1 } + +IscsiInstanceAttributesEntry ::= SEQUENCE { + iscsiInstIndex Unsigned32, + iscsiInstDescr SnmpAdminString, + iscsiInstVersionMin Unsigned32, + iscsiInstVersionMax Unsigned32, + iscsiInstVendorID SnmpAdminString, + iscsiInstVendorVersion SnmpAdminString, + iscsiInstPortalNumber Unsigned32, + iscsiInstNodeNumber Unsigned32, + iscsiInstSessionNumber Unsigned32, + iscsiInstSsnFailures Counter32, + iscsiInstLastSsnFailureType AutonomousType, + iscsiInstLastSsnRmtNodeName IscsiName, + iscsiInstDiscontinuityTime TimeStamp +} + +iscsiInstIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + iSCSI instance. This index value must not be modified or + reused by an agent unless a reboot has occurred. An agent + should attempt to keep this value persistent across reboots." +::= { iscsiInstanceAttributesEntry 1 } + +iscsiInstDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string, determined by the implementation to + describe the iSCSI instance. When only a single instance + is present, this object may be set to the zero-length + string; with multiple iSCSI instances, it may be used in + an implementation-dependent manner to describe the purpose + of the respective instance." + + + +::= { iscsiInstanceAttributesEntry 2 } + +iscsiInstVersionMin OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum version number of the iSCSI specification + such that this iSCSI instance supports this minimum + value, the maximum value indicated by the corresponding + instance in iscsiInstVersionMax, and all versions in + between." + REFERENCE + "RFC 3720, Section 10.12, Login Request" +::= { iscsiInstanceAttributesEntry 3 } + +iscsiInstVersionMax OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum version number of the iSCSI specification + such that this iSCSI instance supports this maximum + value, the minimum value indicated by the corresponding + instance in iscsiInstVersionMin, and all versions in + between." + REFERENCE + "RFC 3720, Section 10.12, Login Request" +::= { iscsiInstanceAttributesEntry 4 } + +iscsiInstVendorID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string describing the manufacturer of the + implementation of this instance." +::= { iscsiInstanceAttributesEntry 5 } + +iscsiInstVendorVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string set by the manufacturer describing the + version of the implementation of this instance. The + format of this string is determined solely by the + manufacturer, and is for informational purposes only. + + + + It is unrelated to the iSCSI specification version numbers." +::= { iscsiInstanceAttributesEntry 6 } + +iscsiInstPortalNumber OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transport endpoints" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the iscsiPortalAttributesTable + that are currently associated with this iSCSI instance." +::= { iscsiInstanceAttributesEntry 7 } + +iscsiInstNodeNumber OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "iSCSI nodes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the iscsiNodeAttributesTable + that are currently associated with this iSCSI instance." +::= { iscsiInstanceAttributesEntry 8 } + +iscsiInstSessionNumber OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the iscsiSessionAttributesTable + that are currently associated with this iSCSI instance." +::= { iscsiInstanceAttributesEntry 9 } + +iscsiInstSsnFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times a session belonging + to this instance has been failed. If this counter has + suffered a discontinuity, the time of the last discontinuity + is indicated in iscsiInstDiscontinuityTime." + REFERENCE + "RFC 3720, Section 12.1, HeaderDigest and DataDigest" +::= { iscsiInstanceAttributesEntry 10 } + +iscsiInstLastSsnFailureType OBJECT-TYPE + + + + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter object in the iscsiInstSsnErrorStatsTable + that was incremented when the last session failure occurred. + + If the reason for failure is not found in the + iscsiInstSsnErrorStatsTable, the value { 0.0 } is + used instead." +::= { iscsiInstanceAttributesEntry 11 } + +iscsiInstLastSsnRmtNodeName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI name of the remote node from the failed + session." +::= { iscsiInstanceAttributesEntry 12 } + +iscsiInstDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime on the most recent occasion + at which any one or more of this instance's counters + suffered a discontinuity. + + If no such discontinuities have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." +::= { iscsiInstanceAttributesEntry 13 } + + +-- Instance Session Failure Stats Table + +iscsiInstanceSsnErrorStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInstanceSsnErrorStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics regarding the occurrences of error types + that result in a session failure." +::= { iscsiInstance 2 } + +iscsiInstanceSsnErrorStatsEntry OBJECT-TYPE + + + + SYNTAX IscsiInstanceSsnErrorStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular iSCSI instance." + AUGMENTS { iscsiInstanceAttributesEntry } +::= { iscsiInstanceSsnErrorStatsTable 1 } + +IscsiInstanceSsnErrorStatsEntry ::= SEQUENCE { + iscsiInstSsnDigestErrors Counter32, + iscsiInstSsnCxnTimeoutErrors Counter32, + iscsiInstSsnFormatErrors Counter32 +} + +iscsiInstSsnDigestErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of sessions that were failed due to receipt of + a PDU containing header or data digest errors. If this + counter has suffered a discontinuity, the time of the last + discontinuity is indicated in iscsiInstDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.7, Digest Errors" +::= { iscsiInstanceSsnErrorStatsEntry 1 } + +iscsiInstSsnCxnTimeoutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of sessions that were failed due to a sequence + exceeding a time limit. If this counter has suffered a + discontinuity, the time of the last discontinuity + is indicated in iscsiInstDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.4, Connection Timeout Management" +::= { iscsiInstanceSsnErrorStatsEntry 2 } + +iscsiInstSsnFormatErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The count of sessions that were failed due to receipt of + a PDU that contained a format error. If this counter has + suffered a discontinuity, the time of the last discontinuity + is indicated in iscsiInstDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.6, Format Errors" +::= { iscsiInstanceSsnErrorStatsEntry 3 } + +--********************************************************************** + +iscsiPortal OBJECT IDENTIFIER ::= { iscsiObjects 2 } + +-- Portal Attributes Table + +iscsiPortalAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of transport endpoints (using TCP or another transport + protocol) used by this iSCSI instance. An iSCSI instance may + use a portal to listen for incoming connections to its targets, + to initiate connections to other targets, or both." +::= { iscsiPortal 1 } + +iscsiPortalAttributesEntry OBJECT-TYPE + SYNTAX IscsiPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular portal instance." + INDEX { iscsiInstIndex, iscsiPortalIndex } +::= { iscsiPortalAttributesTable 1 } + +IscsiPortalAttributesEntry ::= SEQUENCE { + iscsiPortalIndex Unsigned32, + iscsiPortalRowStatus RowStatus, + iscsiPortalRoles BITS, + iscsiPortalAddrType InetAddressType, + iscsiPortalAddr InetAddress, + iscsiPortalProtocol IscsiTransportProtocol, + iscsiPortalMaxRecvDataSegLength Unsigned32, + iscsiPortalPrimaryHdrDigest IscsiDigestMethod, + iscsiPortalPrimaryDataDigest IscsiDigestMethod, + iscsiPortalSecondaryHdrDigest IscsiDigestMethod, + iscsiPortalSecondaryDataDigest IscsiDigestMethod, + + + + iscsiPortalRecvMarker TruthValue, + iscsiPortalStorageType StorageType +} + +iscsiPortalIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + transport endpoint within this iSCSI instance. This index + value must not be modified or reused by an agent unless a + reboot has occurred. An agent should attempt to keep this + value persistent across reboots." +::= { iscsiPortalAttributesEntry 1 } + +iscsiPortalRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + When the value of this object is 'active', the values of + the other objects in this table cannot be changed. + Rows may be discarded using RowStatus. + + Note that creating a row in this table will typically + cause the agent to create one or more rows in + iscsiTgtPortalAttributesTable and/or + iscsiIntrPortalAttributesTable." +::= { iscsiPortalAttributesEntry 2 } + +iscsiPortalRoles OBJECT-TYPE + SYNTAX BITS { + targetTypePortal(0), + initiatorTypePortal(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A portal can operate in one or both of two roles: + as a target portal and/or an initiator portal. If + the portal will operate in both roles, both bits + must be set. + + This object will define a corresponding row that + + + + will exist or must be created in the + iscsiTgtPortalAttributesTable, the + iscsiIntrPortalAttributesTable or both. If the + targetTypePortal bit is set, one or more corresponding + iscsiTgtPortalAttributesEntry rows will be found or + created. If the initiatorTypePortal bit is set, + one or more corresponding iscsiIntrPortalAttributesEntry + rows will be found or created. If both bits are set, one + or more corresponding rows will be found or created in + one of the above tables." +::= { iscsiPortalAttributesEntry 3 } + +iscsiPortalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet Network Address contained in the + corresponding instance of the iscsiPortalAddr." + DEFVAL { ipv4 } +::= { iscsiPortalAttributesEntry 4 } + +iscsiPortalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The portal's Internet Network Address, of the type + specified by the object iscsiPortalAddrType. If + iscsiPortalAddrType has the value 'dns', this address + gets resolved to an IP address whenever a new iSCSI + connection is established using this portal." +::= { iscsiPortalAttributesEntry 5 } + +iscsiPortalProtocol OBJECT-TYPE + SYNTAX IscsiTransportProtocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The portal's transport protocol." + DEFVAL { 6 } -- TCP +::= { iscsiPortalAttributesEntry 6 } + +iscsiPortalMaxRecvDataSegLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The maximum PDU length this portal can receive. + This may be constrained by hardware characteristics + and individual implementations may choose not to + allow this object to be changed." + REFERENCE + "RFC 3720, Section 12.12, MaxRecvDataSegmentLength" + DEFVAL { 8192 } +::= { iscsiPortalAttributesEntry 7 } + +iscsiPortalPrimaryHdrDigest OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The preferred header digest for this portal." + DEFVAL { crc32c } +::= { iscsiPortalAttributesEntry 8 } + +iscsiPortalPrimaryDataDigest OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The preferred data digest method for this portal." + DEFVAL { crc32c } +::= { iscsiPortalAttributesEntry 9 } + +iscsiPortalSecondaryHdrDigest OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate header digest preference for this portal." + DEFVAL { noDigest } +::= { iscsiPortalAttributesEntry 10 } + +iscsiPortalSecondaryDataDigest OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate data digest preference for this portal." + DEFVAL { noDigest } +::= { iscsiPortalAttributesEntry 11 } + +iscsiPortalRecvMarker OBJECT-TYPE + SYNTAX TruthValue + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether or not this portal will + request markers in its incoming data stream." + REFERENCE + "RFC 3720, Appendix A." + DEFVAL { false } +::= { iscsiPortalAttributesEntry 12 } + +iscsiPortalStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that were + created through an external process may have a storage type of + readOnly or permanent. + + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { iscsiPortalAttributesEntry 13 } + +--********************************************************************** +iscsiTargetPortal OBJECT IDENTIFIER ::= { iscsiObjects 3 } + +-- Target Portal Attributes Table + +iscsiTgtPortalAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTgtPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of transport endpoints (using TCP or another transport + protocol) on which this iSCSI instance listens for incoming + connections to its targets." +::= { iscsiTargetPortal 1 } + +iscsiTgtPortalAttributesEntry OBJECT-TYPE + SYNTAX IscsiTgtPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular portal instance that is used to listen for + incoming connections to local targets. One or more rows in + this table is populated by the agent for each + + + + iscsiPortalAttributesEntry row that has the bit + targetTypePortal set in its iscsiPortalRoles column." + INDEX { iscsiInstIndex, iscsiPortalIndex, + iscsiTgtPortalNodeIndexOrZero } +::= { iscsiTgtPortalAttributesTable 1 } + +IscsiTgtPortalAttributesEntry ::= SEQUENCE { + iscsiTgtPortalNodeIndexOrZero Unsigned32, + iscsiTgtPortalPort InetPortNumber, + iscsiTgtPortalTag Unsigned32 +} + +iscsiTgtPortalNodeIndexOrZero OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular node within an iSCSI instance present + on the local system. + + For implementations where each {portal, node} tuple + can have a different portal tag, this value will + map to the iscsiNodeIndex. + + For implementations where the portal tag is the + same for a given portal regardless of which node + is using the portal, the value 0 (zero) is used." +::= { iscsiTgtPortalAttributesEntry 1 } + +iscsiTgtPortalPort OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The portal's transport protocol port number on which the + portal listens for incoming iSCSI connections when the + portal is used as a target portal. This object's storage + type is specified in iscsiPortalStorageType." +::= { iscsiTgtPortalAttributesEntry 2 } + +iscsiTgtPortalTag OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The portal's aggregation tag when the portal is used as + a target portal. Multiple-connection sessions may + + + + be aggregated over portals sharing an identical + aggregation tag. This object's storage type is + specified in iscsiPortalStorageType." + REFERENCE + "RFC 3720, Section 3.4.1, iSCSI Architectural Model" +::= { iscsiTgtPortalAttributesEntry 3 } + +--********************************************************************** + +iscsiInitiatorPortal OBJECT IDENTIFIER ::= { iscsiObjects 4 } + +-- Initiator Portal Attributes Table + +iscsiIntrPortalAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiIntrPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Internet Network Addresses (using TCP or another + transport protocol) from which this iSCSI instance may + initiate connections to other targets." +::= { iscsiInitiatorPortal 1 } + +iscsiIntrPortalAttributesEntry OBJECT-TYPE + SYNTAX IscsiIntrPortalAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular portal instance that is used to initiate + connections to iSCSI targets. One or more rows in + this table is populated by the agent for each + iscsiPortalAttributesEntry row that has the bit + initiatorTypePortal set in its iscsiPortalRoles column." + INDEX { iscsiInstIndex, iscsiPortalIndex, + iscsiIntrPortalNodeIndexOrZero } +::= { iscsiIntrPortalAttributesTable 1 } + +IscsiIntrPortalAttributesEntry ::= SEQUENCE { + iscsiIntrPortalNodeIndexOrZero Unsigned32, + iscsiIntrPortalTag Unsigned32 +} + +iscsiIntrPortalNodeIndexOrZero OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An arbitrary integer used to uniquely identify a + particular node within an iSCSI instance present + on the local system. + + For implementations where each {portal, node} tuple + can have a different portal tag, this value will + map to the iscsiNodeIndex. + + For implementations where the portal tag is the + same for a given portal regardless of which node + is using the portal, the value 0 (zero) is used." +::= { iscsiIntrPortalAttributesEntry 1 } + +iscsiIntrPortalTag OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The portal's aggregation tag when the portal is used as + an initiator portal. Multiple-connection sessions may + be aggregated over portals sharing an identical + aggregation tag. This object's storage type is + specified in iscsiPortalStorageType." + REFERENCE + "RFC 3720, Section 3.4.1, iSCSI Architectural Model" +::= { iscsiIntrPortalAttributesEntry 2 } + +--********************************************************************** + +iscsiNode OBJECT IDENTIFIER ::= { iscsiObjects 5 } + +-- Node Attributes Table + +iscsiNodeAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiNodeAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of iSCSI nodes belonging to each iSCSI instance + present on the local system. An iSCSI node can act as + an initiator, a target, or both." +::= { iscsiNode 1 } + +iscsiNodeAttributesEntry OBJECT-TYPE + SYNTAX IscsiNodeAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An entry (row) containing management information applicable + to a particular iSCSI node." + INDEX { iscsiInstIndex, iscsiNodeIndex } +::= { iscsiNodeAttributesTable 1 } + +IscsiNodeAttributesEntry ::= SEQUENCE { + iscsiNodeIndex Unsigned32, + iscsiNodeName IscsiName, + iscsiNodeAlias SnmpAdminString, + iscsiNodeRoles BITS, + iscsiNodeTransportType RowPointer, + iscsiNodeInitialR2T TruthValue, + iscsiNodeImmediateData TruthValue, + iscsiNodeMaxOutstandingR2T Unsigned32, + iscsiNodeFirstBurstLength Unsigned32, + iscsiNodeMaxBurstLength Unsigned32, + iscsiNodeMaxConnections Unsigned32, + iscsiNodeDataSequenceInOrder TruthValue, + iscsiNodeDataPDUInOrder TruthValue, + iscsiNodeDefaultTime2Wait Unsigned32, + iscsiNodeDefaultTime2Retain Unsigned32, + iscsiNodeErrorRecoveryLevel Unsigned32, + iscsiNodeDiscontinuityTime TimeStamp, + iscsiNodeStorageType StorageType +} + +iscsiNodeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + node within an iSCSI instance. This index value must not be + modified or reused by an agent unless a reboot has occurred. + An agent should attempt to keep this value persistent across + reboots." +::= { iscsiNodeAttributesEntry 1 } + +iscsiNodeName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This node's iSCSI name, which is independent of the location + of the node, and can be resolved into a set of addresses + through various discovery services." +::= { iscsiNodeAttributesEntry 2 } + + + + +iscsiNodeAlias OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A character string that is a human-readable name or + description of the iSCSI node. If configured, this alias + may be communicated to the initiator or target node at + the remote end of the connection during a Login Request + or Response message. This string is not used as an + identifier, but can be displayed by the system's user + interface in a list of initiators and/or targets to + which it is connected. + + If no alias exists, the value is a zero-length string." + REFERENCE + "RFC 3720, Section 12.6, TargetAlias, 12.7, InitiatorAlias" +::= { iscsiNodeAttributesEntry 3 } + +iscsiNodeRoles OBJECT-TYPE + SYNTAX BITS { + targetTypeNode(0), + initiatorTypeNode(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A node can operate in one or both of two roles: + a target role and/or an initiator role. If the node + will operate in both roles, both bits must be set. + + This object will also define the corresponding rows that + will exist in the iscsiTargetAttributesTable, the + iscsiInitiatorAttributesTable or both. If the + targetTypeNode bit is set, there will be a corresponding + iscsiTargetAttributesEntry. If the initiatorTypeNode bit + is set, there will be a corresponding + iscsiInitiatorAttributesEntry. If both bits are set, + there will be a corresponding iscsiTgtPortalAttributesEntry + and iscsiPortalAttributesEntry." +::= { iscsiNodeAttributesEntry 4 } + +iscsiNodeTransportType OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the corresponding row in the appropriate + + + + table for this SCSI transport, thereby allowing management + stations to locate the SCSI-level device that is represented + by this iscsiNode. For example, it will usually point to the + corresponding scsiTrnspt object in the SCSI MIB module. + + If no corresponding row exists, the value 0.0 must be + used to indicate this." + REFERENCE + "SCSI-MIB" +::= { iscsiNodeAttributesEntry 5 } + +iscsiNodeInitialR2T OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the InitialR2T preference for this + node: + true = YES, + false = will try to negotiate NO, will accept YES " + REFERENCE + "RFC 3720, Section 12.10, InitialR2T" +::= { iscsiNodeAttributesEntry 6 } + +iscsiNodeImmediateData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates ImmediateData preference for this + node: + true = YES (but will accept NO), + false = NO " + REFERENCE + "RFC 3720, Section 12.11, ImmediateData" + DEFVAL { true } +::= { iscsiNodeAttributesEntry 7 } + +iscsiNodeMaxOutstandingR2T OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "R2Ts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum number of outstanding requests-to-transmit (R2Ts) + allowed per iSCSI task." + REFERENCE + "RFC 3720, Section 12.17, MaxOutstandingR2T" + + + + DEFVAL { 1 } +::= { iscsiNodeAttributesEntry 8 } + +iscsiNodeFirstBurstLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum length (bytes) supported for unsolicited data + to/from this node." + REFERENCE + "RFC 3720, Section 12.14, FirstBurstLength" + DEFVAL { 65536 } +::= { iscsiNodeAttributesEntry 9 } + +iscsiNodeMaxBurstLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of bytes that can be sent within + a single sequence of Data-In or Data-Out PDUs." + REFERENCE + "RFC 3720, Section 12.13, MaxBurstLength" + DEFVAL { 262144 } +::= { iscsiNodeAttributesEntry 10 } + +iscsiNodeMaxConnections OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "connections" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of connections allowed in each + session to and/or from this node." + REFERENCE + "RFC 3720, Section 12.2, MaxConnections" + DEFVAL { 1 } +::= { iscsiNodeAttributesEntry 11 } + +iscsiNodeDataSequenceInOrder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DataSequenceInOrder preference of this node. + + + + False (=No) indicates that iSCSI data PDU sequences may + be transferred in any order. True (=Yes) indicates that + data PDU sequences must be transferred using + continuously increasing offsets, except during + error recovery." + REFERENCE + "RFC 3720, Section 12.19, DataSequenceInOrder" + DEFVAL { true } +::= { iscsiNodeAttributesEntry 12 } + +iscsiNodeDataPDUInOrder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DataPDUInOrder preference of this node. + False (=No) indicates that iSCSI data PDUs within sequences + may be in any order. True (=Yes) indicates that data PDUs + within sequences must be at continuously increasing + addresses, with no gaps or overlay between PDUs." + REFERENCE + "RFC 3720, Section 12.18, DataPDUInOrder" + DEFVAL { true } +::= { iscsiNodeAttributesEntry 13 } + +iscsiNodeDefaultTime2Wait OBJECT-TYPE + SYNTAX Unsigned32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DefaultTime2Wait preference of this node. This is the + minimum time, in seconds, to wait before attempting an + explicit/implicit logout or active iSCSI task reassignment + after an unexpected connection termination or a connection + reset." + REFERENCE + "RFC 3720, Section 12.15, DefaultTime2Wait" + DEFVAL { 2 } +::= { iscsiNodeAttributesEntry 14 } + +iscsiNodeDefaultTime2Retain OBJECT-TYPE + SYNTAX Unsigned32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DefaultTime2Retain preference of this node. This is + + + + the maximum time, in seconds after an initial wait + (Time2Wait), before which an active iSCSI task reassignment + is still possible after an unexpected connection termination + or a connection reset." + REFERENCE + "RFC 3720, Section 12.16, DefaultTime2Retain" + DEFVAL { 20 } +::= { iscsiNodeAttributesEntry 15 } + +iscsiNodeErrorRecoveryLevel OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The ErrorRecoveryLevel preference of this node. + Currently, only 0-2 are valid. + + This object is designed to accommodate future error recovery + levels. + + Higher error recovery levels imply support in addition to + support for the lower error level functions. In other words, + error level 2 implies support for levels 0-1, since those + functions are subsets of error level 2." + REFERENCE + "RFC 3720, Section 12.20, ErrorRecoveryLevel" + DEFVAL { 0 } +::= { iscsiNodeAttributesEntry 16 } + +iscsiNodeDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime on the most recent occasion + at which any one or more of this node's counters + suffered a discontinuity. + + If no such discontinuities have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." +::= { iscsiNodeAttributesEntry 17 } + +iscsiNodeStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The storage type for all read-write objects within this + row. Rows in this table are always created via an + external process, and may have a storage type of readOnly + or permanent. Conceptual rows having the value 'permanent' + need not allow write access to any columnar objects in + the row. + + If this object has the value 'volatile', modifications + to read-write objects in this row are not persistent + across reboots. If this object has the value + 'nonVolatile', modifications to objects in this row + are persistent. + + An implementation may choose to allow this object + to be set to either 'nonVolatile' or 'volatile', + allowing the management application to choose this + behavior." + DEFVAL { volatile } +::= { iscsiNodeAttributesEntry 18 } + +--********************************************************************** + +iscsiTarget OBJECT IDENTIFIER ::= { iscsiObjects 6 } + +-- Target Attributes Table + +iscsiTargetAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTargetAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of iSCSI nodes that can take on a target role, + belonging to each iSCSI instance present on the local + system." +::= { iscsiTarget 1 } + +iscsiTargetAttributesEntry OBJECT-TYPE + SYNTAX IscsiTargetAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular node that can take on a target role." + INDEX { iscsiInstIndex, iscsiNodeIndex } +::= { iscsiTargetAttributesTable 1 } + +IscsiTargetAttributesEntry ::= SEQUENCE { + iscsiTgtLoginFailures Counter32, + + + + iscsiTgtLastFailureTime TimeStamp, + iscsiTgtLastFailureType AutonomousType, + iscsiTgtLastIntrFailureName IscsiName, + iscsiTgtLastIntrFailureAddrType InetAddressType, + iscsiTgtLastIntrFailureAddr InetAddress +} + +iscsiTgtLoginFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed login attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times a login attempt to this + local target has failed. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetAttributesEntry 1 } + +iscsiTgtLastFailureTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp of the most recent failure of a login attempt + to this target. A value of zero indicates that no such + failures have occurred since the last system boot." +::= { iscsiTargetAttributesEntry 2 } + +iscsiTgtLastFailureType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the most recent failure of a login attempt + to this target, represented as the OID of the counter + object in iscsiTargetLoginStatsTable for which the + relevant instance was incremented. A value of 0.0 + indicates a type that is not represented by any of + the counters in iscsiTargetLoginStatsTable." +::= { iscsiTargetAttributesEntry 3 } + +iscsiTgtLastIntrFailureName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The iSCSI name of the initiator that failed the last + login attempt." +::= { iscsiTargetAttributesEntry 4 } + +iscsiTgtLastIntrFailureAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet Network Address contained in the + corresponding instance of the iscsiTgtLastIntrFailureAddr. + The value 'dns' is not allowed." +::= { iscsiTargetAttributesEntry 5 } + +iscsiTgtLastIntrFailureAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An Internet Network Address, of the type specified by + the object iscsiTgtLastIntrFailureAddrType, giving the + host address of the initiator that failed the last login + attempt." +::= { iscsiTargetAttributesEntry 6 } + +-- Target Login Stats Table + +iscsiTargetLoginStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTargetLoginStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of counters that keep a record of the results + of initiators' login attempts to this target." +::= { iscsiTarget 2 } + +iscsiTargetLoginStatsEntry OBJECT-TYPE + SYNTAX IscsiTargetLoginStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing counters for each result of + a login attempt to this target." + AUGMENTS { iscsiTargetAttributesEntry } +::= { iscsiTargetLoginStatsTable 1 } + +IscsiTargetLoginStatsEntry ::= SEQUENCE { + + + + iscsiTgtLoginAccepts Counter32, + iscsiTgtLoginOtherFails Counter32, + iscsiTgtLoginRedirects Counter32, + iscsiTgtLoginAuthorizeFails Counter32, + iscsiTgtLoginAuthenticateFails Counter32, + iscsiTgtLoginNegotiateFails Counter32 +} + +iscsiTgtLoginAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "successful logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status + 0x0000, Accept Login, transmitted by this + target. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 1 } + +iscsiTgtLoginOtherFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Login Response PDUs that were transmitted + by this target and that were not counted by any other + object in the row. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 2 } + +iscsiTgtLoginRedirects OBJECT-TYPE + SYNTAX Counter32 + UNITS "redirected logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status class 0x01, + Redirection, transmitted by this target. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + + + + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 3 } + +iscsiTgtLoginAuthorizeFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status 0x0202, + Forbidden Target, transmitted by this target. + + If this counter is incremented, an iscsiTgtLoginFailure + notification should be generated. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 4 } + +iscsiTgtLoginAuthenticateFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status 0x0201, + Authentication Failed, transmitted by this target. + + If this counter is incremented, an iscsiTgtLoginFailure + notification should be generated. + + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiTargetLoginStatsEntry 5 } + +iscsiTgtLoginNegotiateFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a target has effectively refused a + login because the parameter negotiation failed. + + + + + If this counter is incremented, an iscsiTgtLoginFailure + notification should be generated. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." +::= { iscsiTargetLoginStatsEntry 6 } + +-- Target Logout Stats Table + +iscsiTargetLogoutStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTargetLogoutStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "When a target receives a Logout command, it responds + with a Logout Response that carries a status code. + This table contains counters for both normal and + abnormal logout requests received by this target." +::= { iscsiTarget 3 } + +iscsiTargetLogoutStatsEntry OBJECT-TYPE + SYNTAX IscsiTargetLogoutStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing counters of Logout Response + PDUs that were received by this target." + AUGMENTS { iscsiTargetAttributesEntry } +::= { iscsiTargetLogoutStatsTable 1 } + +IscsiTargetLogoutStatsEntry ::= SEQUENCE { + iscsiTgtLogoutNormals Counter32, + iscsiTgtLogoutOthers Counter32 +} + +iscsiTgtLogoutNormals OBJECT-TYPE + SYNTAX Counter32 + UNITS "normal logouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Logout Command PDUs received by this target, + with reason code 0 (closes the session). + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.14.1, Reason Code" +::= { iscsiTargetLogoutStatsEntry 1 } + + + + +iscsiTgtLogoutOthers OBJECT-TYPE + SYNTAX Counter32 + UNITS "abnormal logouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Logout Command PDUs received by this target, + with any reason code other than 0. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.14.1, Reason Code" +::= { iscsiTargetLogoutStatsEntry 2 } + +--********************************************************************** + +iscsiTgtAuthorization OBJECT IDENTIFIER ::= { iscsiObjects 7 } + +-- Target Authorization Attributes Table + +iscsiTgtAuthAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiTgtAuthAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of initiator identities that are authorized to + access each target node within each iSCSI instance + present on the local system." +::= { iscsiTgtAuthorization 1 } + +iscsiTgtAuthAttributesEntry OBJECT-TYPE + SYNTAX IscsiTgtAuthAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a particular target node's authorized + initiator identity." + INDEX { iscsiInstIndex, iscsiNodeIndex, iscsiTgtAuthIndex } +::= { iscsiTgtAuthAttributesTable 1 } + +IscsiTgtAuthAttributesEntry ::= SEQUENCE { + iscsiTgtAuthIndex Unsigned32, + iscsiTgtAuthRowStatus RowStatus, + iscsiTgtAuthIdentity RowPointer, + iscsiTgtAuthStorageType StorageType +} + + + + +iscsiTgtAuthIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + target's authorized initiator identity within an iSCSI + instance present on the local system. This index value must + not be modified or reused by an agent unless a reboot has + occurred. An agent should attempt to keep this value + persistent across reboots." +::= { iscsiTgtAuthAttributesEntry 1 } + +iscsiTgtAuthRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + When the value of this object is 'active', the values of + the other objects in this table cannot be changed. + Rows may be discarded using RowStatus." +::= { iscsiTgtAuthAttributesEntry 2 } + +iscsiTgtAuthIdentity OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to the corresponding user entry in the IPS-AUTH + MIB module that will be allowed to access this iSCSI target." + REFERENCE + "IPS-AUTH MIB, RFC 4545" +::= { iscsiTgtAuthAttributesEntry 3 } + +iscsiTgtAuthStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that were + created through an external process may have a storage type of + readOnly or permanent. + + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + + + + DEFVAL { nonVolatile } +::= { iscsiTgtAuthAttributesEntry 4 } + +--********************************************************************** + +iscsiInitiator OBJECT IDENTIFIER ::= { iscsiObjects 8 } + +-- Initiator Attributes Table + +iscsiInitiatorAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInitiatorAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of iSCSI nodes that can take on an initiator + role, belonging to each iSCSI instance present on + the local system." +::= { iscsiInitiator 1 } + +iscsiInitiatorAttributesEntry OBJECT-TYPE + SYNTAX IscsiInitiatorAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information + applicable to a particular iSCSI node that has + initiator capabilities." + INDEX { iscsiInstIndex, iscsiNodeIndex } +::= { iscsiInitiatorAttributesTable 1 } + +IscsiInitiatorAttributesEntry ::= SEQUENCE { + iscsiIntrLoginFailures Counter32, + iscsiIntrLastFailureTime TimeStamp, + iscsiIntrLastFailureType AutonomousType, + iscsiIntrLastTgtFailureName IscsiName, + iscsiIntrLastTgtFailureAddrType InetAddressType, + iscsiIntrLastTgtFailureAddr InetAddress +} + +iscsiIntrLoginFailures OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times a login attempt from + this local initiator has failed. + If this counter has suffered a discontinuity, the time of the + + + + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorAttributesEntry 1 } + +iscsiIntrLastFailureTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp of the most recent failure of a login attempt + from this initiator. A value of zero indicates that no such + failures have occurred since the last system boot." +::= { iscsiInitiatorAttributesEntry 2 } + +iscsiIntrLastFailureType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the most recent failure of a login attempt + from this initiator, represented as the OID of the counter + object in iscsiInitiatorLoginStatsTable for which the + relevant instance was incremented. A value of 0.0 + indicates a type that is not represented by any of + the counters in iscsiInitiatorLoginStatsTable." +::= { iscsiInitiatorAttributesEntry 3 } + +iscsiIntrLastTgtFailureName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string giving the name of the target that failed + the last login attempt." +::= { iscsiInitiatorAttributesEntry 4 } + +iscsiIntrLastTgtFailureAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet Network Address contained in the + corresponding instance of the iscsiIntrLastTgtFailureAddr. + The value 'dns' is not allowed." +::= { iscsiInitiatorAttributesEntry 5 } + +iscsiIntrLastTgtFailureAddr OBJECT-TYPE + + + + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An Internet Network Address, of the type specified by the + object iscsiIntrLastTgtFailureAddrType, giving the host + address of the target that failed the last login attempt." +::= { iscsiInitiatorAttributesEntry 6 } + +-- Initiator Login Stats Table + +iscsiInitiatorLoginStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInitiatorLoginStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of counters which keep track of the results of + this initiator's login attempts." +::= { iscsiInitiator 2 } + +iscsiInitiatorLoginStatsEntry OBJECT-TYPE + SYNTAX IscsiInitiatorLoginStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing counters of each result + of this initiator's login attempts." + AUGMENTS { iscsiInitiatorAttributesEntry } +::= { iscsiInitiatorLoginStatsTable 1 } + +IscsiInitiatorLoginStatsEntry ::= SEQUENCE { + iscsiIntrLoginAcceptRsps Counter32, + iscsiIntrLoginOtherFailRsps Counter32, + iscsiIntrLoginRedirectRsps Counter32, + iscsiIntrLoginAuthFailRsps Counter32, + iscsiIntrLoginAuthenticateFails Counter32, + iscsiIntrLoginNegotiateFails Counter32 +} + +iscsiIntrLoginAcceptRsps OBJECT-TYPE + SYNTAX Counter32 + UNITS "successful logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status + 0x0000, Accept Login, received by this initiator. + If this counter has suffered a discontinuity, the time of the + + + + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 1 } + +iscsiIntrLoginOtherFailRsps OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs received by this + initiator with any status code not counted in the + objects below. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 2 } + +iscsiIntrLoginRedirectRsps OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status class 0x01, + Redirection, received by this initiator. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 3 } + +iscsiIntrLoginAuthFailRsps OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Login Response PDUs with status class 0x201, + Authentication Failed, received by this initiator. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 4 } + + + + +iscsiIntrLoginAuthenticateFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the initiator has aborted a + login because the target could not be authenticated. + + No response is generated. + + If this counter is incremented, an iscsiIntrLoginFailure + notification should be generated. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.13.5, Status-Class and Status-Detail" +::= { iscsiInitiatorLoginStatsEntry 5 } + +iscsiIntrLoginNegotiateFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "failed logins" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the initiator has aborted a + login because parameter negotiation with the target + failed. + + No response is generated. + + If this counter is incremented, an iscsiIntrLoginFailure + notification should be generated. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.10, Negotiation Failures" +::= { iscsiInitiatorLoginStatsEntry 6 } + +-- Initiator Logout Stats Table + +iscsiInitiatorLogoutStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiInitiatorLogoutStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "When an initiator attempts to send a Logout command, the target + responds with a Logout Response that carries a status code. + + + + This table contains a list of counters of Logout Response + PDUs of each status code that was received by each + initiator belonging to this iSCSI instance present on this + system." +::= { iscsiInitiator 3 } + +iscsiInitiatorLogoutStatsEntry OBJECT-TYPE + SYNTAX IscsiInitiatorLogoutStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing counters of Logout Response + PDUs of each status code that was generated by this + initiator." + AUGMENTS { iscsiInitiatorAttributesEntry } +::= { iscsiInitiatorLogoutStatsTable 1 } + +IscsiInitiatorLogoutStatsEntry ::= SEQUENCE { + iscsiIntrLogoutNormals Counter32, + iscsiIntrLogoutOthers Counter32 +} + +iscsiIntrLogoutNormals OBJECT-TYPE + SYNTAX Counter32 + UNITS "normal logouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Logout Command PDUs generated by this initiator + with reason code 0 (closes the session). + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.14.1, Reason Code" +::= { iscsiInitiatorLogoutStatsEntry 1 } + +iscsiIntrLogoutOthers OBJECT-TYPE + SYNTAX Counter32 + UNITS "abnormal logouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Logout Command PDUs generated by this initiator + with any status code other than 0. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiNodeDiscontinuityTime." + REFERENCE + "RFC 3720, Section 10.14.1, Reason Code" + + + +::= { iscsiInitiatorLogoutStatsEntry 2 } + +--********************************************************************** + +iscsiIntrAuthorization OBJECT IDENTIFIER ::= { iscsiObjects 9 } + +-- Initiator Authorization Attributes Table + +iscsiIntrAuthAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiIntrAuthAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of target identities that each initiator + on the local system may access." +::= { iscsiIntrAuthorization 1 } + +iscsiIntrAuthAttributesEntry OBJECT-TYPE + SYNTAX IscsiIntrAuthAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular initiator node's authorized target identity." + INDEX { iscsiInstIndex, iscsiNodeIndex, iscsiIntrAuthIndex } +::= { iscsiIntrAuthAttributesTable 1 } + +IscsiIntrAuthAttributesEntry ::= SEQUENCE { + iscsiIntrAuthIndex Unsigned32, + iscsiIntrAuthRowStatus RowStatus, + iscsiIntrAuthIdentity RowPointer, + iscsiIntrAuthStorageType StorageType +} + +iscsiIntrAuthIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular initiator node's authorized target + identity within an iSCSI instance present on the + local system. This index value must not be modified + or reused by an agent unless a reboot has occurred. + An agent should attempt to keep this value persistent + across reboots." +::= { iscsiIntrAuthAttributesEntry 1 } + + + + +iscsiIntrAuthRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This field allows entries to be dynamically added and + removed from this table via SNMP. When adding a row to + this table, all non-Index/RowStatus objects must be set. + When the value of this object is 'active', the values of + the other objects in this table cannot be changed. + Rows may be discarded using RowStatus." +::= { iscsiIntrAuthAttributesEntry 2 } + +iscsiIntrAuthIdentity OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to the corresponding user entry in the IPS-AUTH + MIB module to which this initiator node should attempt to + establish an iSCSI session." + REFERENCE + "IPS-AUTH MIB, RFC 4545" +::= { iscsiIntrAuthAttributesEntry 3 } + +iscsiIntrAuthStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows in this table that were + created through an external process may have a storage type of + readOnly or permanent. + + Conceptual rows having the value 'permanent' need not + allow write access to any columnar objects in the row." + DEFVAL { nonVolatile } +::= { iscsiIntrAuthAttributesEntry 4 } + +--********************************************************************** + +iscsiSession OBJECT IDENTIFIER ::= { iscsiObjects 10 } + +-- Session Attributes Table + +iscsiSessionAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiSessionAttributesEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A list of sessions belonging to each iSCSI instance + present on the system." +::= { iscsiSession 1 } + +iscsiSessionAttributesEntry OBJECT-TYPE + SYNTAX IscsiSessionAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular session. + + If this session is a discovery session that is not attached + to any particular node, the iscsiSsnNodeIndex will be zero. + Otherwise, the iscsiSsnNodeIndex will have the same value as + iscsiNodeIndex." + INDEX { iscsiInstIndex, iscsiSsnNodeIndex, iscsiSsnIndex } +::= { iscsiSessionAttributesTable 1 } + +IscsiSessionAttributesEntry ::= SEQUENCE { + iscsiSsnNodeIndex Unsigned32, + iscsiSsnIndex Unsigned32, + iscsiSsnDirection INTEGER, + iscsiSsnInitiatorName IscsiName, + iscsiSsnTargetName IscsiName, + iscsiSsnTSIH Unsigned32, + iscsiSsnISID OCTET STRING, + iscsiSsnInitiatorAlias SnmpAdminString, + iscsiSsnTargetAlias SnmpAdminString, + iscsiSsnInitialR2T TruthValue, + iscsiSsnImmediateData TruthValue, + iscsiSsnType INTEGER, + iscsiSsnMaxOutstandingR2T Unsigned32, + iscsiSsnFirstBurstLength Unsigned32, + iscsiSsnMaxBurstLength Unsigned32, + iscsiSsnConnectionNumber Gauge32, + iscsiSsnAuthIdentity RowPointer, + iscsiSsnDataSequenceInOrder TruthValue, + iscsiSsnDataPDUInOrder TruthValue, + iscsiSsnErrorRecoveryLevel Unsigned32, + iscsiSsnDiscontinuityTime TimeStamp +} + +iscsiSsnNodeIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular node within an iSCSI instance present + on the local system. For normal, non-discovery + sessions, this value will map to the iscsiNodeIndex. + For discovery sessions that do not have a node + associated, the value 0 (zero) is used." +::= { iscsiSessionAttributesEntry 1 } + +iscsiSsnIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular session within an iSCSI instance present + on the local system. An agent should attempt to + not reuse index values unless a reboot has occurred. + iSCSI sessions are destroyed during a reboot; rows + in this table are not persistent across reboots." +::= { iscsiSessionAttributesEntry 2 } + +iscsiSsnDirection OBJECT-TYPE + SYNTAX INTEGER { + inboundSession(1), + outboundSession(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Direction of iSCSI session: + inboundSession - session is established from an external + initiator to a target within this iSCSI + instance. + outboundSession - session is established from an initiator + within this iSCSI instance to an external + target." +::= { iscsiSessionAttributesEntry 3 } + +iscsiSsnInitiatorName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If iscsiSsnDirection is Inbound, this object is a + UTF-8 string that will contain the name of the remote + initiator. If this session is a discovery session that + + + + does not specify a particular initiator, this object + will contain a zero-length string. + + If iscsiSsnDirection is Outbound, this object will + contain a zero-length string." +::= { iscsiSessionAttributesEntry 4 } + +iscsiSsnTargetName OBJECT-TYPE + SYNTAX IscsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If iscsiSsnDirection is Outbound, this object is a + UTF-8 string that will contain the name of the remote + target. If this session is a discovery session that + does not specify a particular target, this object will + contain a zero-length string. + + If iscsiSsnDirection is Inbound, this object will + contain a zero-length string." +::= { iscsiSessionAttributesEntry 5 } + +iscsiSsnTSIH OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The target-defined identification handle for this session." + REFERENCE + "RFC 3720, Section 10.12.6, TSIH" +::= { iscsiSessionAttributesEntry 6 } + +iscsiSsnISID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The initiator-defined portion of the iSCSI Session ID." + REFERENCE + "RFC 3720, Section 10.12.5, ISID" +::= { iscsiSessionAttributesEntry 7 } + +iscsiSsnInitiatorAlias OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string that gives the alias communicated by the + + + + initiator end of the session during the login phase. + + If no alias exists, the value is a zero-length string." + REFERENCE + "RFC 3720, Section 12.7, InitiatorAlias" +::= { iscsiSessionAttributesEntry 8 } + +iscsiSsnTargetAlias OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A UTF-8 string that gives the alias communicated by the + target end of the session during the login phase. + + If no alias exists, the value is a zero-length string." + REFERENCE + "RFC 3720, Section 12.6, TargetAlias" +::= { iscsiSessionAttributesEntry 9 } + +iscsiSsnInitialR2T OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If set to true, indicates that the initiator must wait + for an R2T before sending to the target. If set to false, + the initiator may send data immediately, within limits set + by iscsiSsnFirstBurstLength and the expected data transfer + length of the request." + REFERENCE + "RFC 3720, Section 12.10, InitialR2T" +::= { iscsiSessionAttributesEntry 10 } + +iscsiSsnImmediateData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the initiator and target have agreed to + support immediate data on this session." + REFERENCE + "RFC 3720, Section 12.11, ImmediateData" +::= { iscsiSessionAttributesEntry 11 } + +iscsiSsnType OBJECT-TYPE + SYNTAX INTEGER { + normalSession(1), + + + + discoverySession(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Type of iSCSI session: + normalSession - session is a normal iSCSI session + discoverySession - session is being used only for discovery." + REFERENCE + "RFC 3720, Section 12.21, SessionType" +::= { iscsiSessionAttributesEntry 12 } + +iscsiSsnMaxOutstandingR2T OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "R2Ts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of outstanding requests-to-transmit + (R2Ts) per iSCSI task within this session." + REFERENCE + "RFC 3720, Section 12.17, MaxOutstandingR2T" +::= { iscsiSessionAttributesEntry 13 } + +iscsiSsnFirstBurstLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum length supported for unsolicited data sent + within this session." + REFERENCE + "RFC 3720, Section 12.14, FirstBurstLength" +::= { iscsiSessionAttributesEntry 14 } + +iscsiSsnMaxBurstLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of bytes that can be sent within + a single sequence of Data-In or Data-Out PDUs." + REFERENCE + "RFC 3720, Section 12.13, MaxBurstLength" +::= { iscsiSessionAttributesEntry 15 } + + + + +iscsiSsnConnectionNumber OBJECT-TYPE + SYNTAX Gauge32 (1..65535) + UNITS "connections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transport protocol connections that currently + belong to this session." +::= { iscsiSessionAttributesEntry 16 } + +iscsiSsnAuthIdentity OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a pointer to a row in the + IPS-AUTH MIB module that identifies the authentication + method being used on this session, as communicated + during the login phase." + REFERENCE + "IPS-AUTH MIB, RFC 4545" +::= { iscsiSessionAttributesEntry 17 } + + iscsiSsnDataSequenceInOrder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "False indicates that iSCSI data PDU sequences may + be transferred in any order. True indicates that + data PDU sequences must be transferred using + continuously increasing offsets, except during + error recovery." + REFERENCE + "RFC 3720, Section 12.19, DataSequenceInOrder" +::= { iscsiSessionAttributesEntry 18 } + +iscsiSsnDataPDUInOrder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "False indicates that iSCSI data PDUs within sequences + may be in any order. True indicates that data PDUs + within sequences must be at continuously increasing + addresses, with no gaps or overlay between PDUs. + + Default is true." + + + + REFERENCE + "RFC 3720, Section 12.18, DataPDUInOrder" +::= { iscsiSessionAttributesEntry 19 } + +iscsiSsnErrorRecoveryLevel OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of error recovery negotiated between + the initiator and the target. Higher numbers + represent more detailed recovery schemes." + REFERENCE + "RFC 3720, Section 12.20, ErrorRecoveryLevel" +::= { iscsiSessionAttributesEntry 20 } + +iscsiSsnDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime on the most recent occasion + at which any one or more of this session's counters + suffered a discontinuity. + When a session is established, and this object is + created, it is initialized to the current value + of SysUpTime." +::= { iscsiSessionAttributesEntry 21 } + +-- Session Stats Table + +iscsiSessionStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of general iSCSI traffic counters for each of the + sessions present on the system." +::= { iscsiSession 2 } + +iscsiSessionStatsEntry OBJECT-TYPE + SYNTAX IscsiSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing general iSCSI traffic counters + for a particular session." + AUGMENTS { iscsiSessionAttributesEntry } + + + +::= { iscsiSessionStatsTable 1 } + +IscsiSessionStatsEntry ::= SEQUENCE { + iscsiSsnCmdPDUs Counter32, + iscsiSsnRspPDUs Counter32, + iscsiSsnTxDataOctets Counter64, + iscsiSsnRxDataOctets Counter64, + iscsiSsnLCTxDataOctets Counter32, + iscsiSsnLCRxDataOctets Counter32 +} + +iscsiSsnCmdPDUs OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Command PDUs transferred on this session. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 1 } + +iscsiSsnRspPDUs OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of Response PDUs transferred on this session. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 2 } + +iscsiSsnTxDataOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of data octets that were transmitted by + the local iSCSI node on this session. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 3 } + +iscsiSsnRxDataOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of data octets that were received by + the local iSCSI node on this session. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 4 } + +iscsiSsnLCTxDataOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A Low Capacity shadow object of iscsiSsnTxDataOctets + for those systems that don't support Counter64. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 5 } + +iscsiSsnLCRxDataOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A Low Capacity shadow object of iscsiSsnRxDataOctets + for those systems that don't support Counter64. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." +::= { iscsiSessionStatsEntry 6 } + +-- Session Connection Error Stats Table + +iscsiSessionCxnErrorStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiSessionCxnErrorStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of error counters for each of the sessions + present on this system." +::= { iscsiSession 3 } + +iscsiSessionCxnErrorStatsEntry OBJECT-TYPE + SYNTAX IscsiSessionCxnErrorStatsEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An entry (row) containing error counters for + a particular session." + AUGMENTS { iscsiSessionAttributesEntry } +::= { iscsiSessionCxnErrorStatsTable 1 } + +IscsiSessionCxnErrorStatsEntry ::= SEQUENCE { + iscsiSsnCxnDigestErrors Counter32, + iscsiSsnCxnTimeoutErrors Counter32 +} + +iscsiSsnCxnDigestErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of PDUs that were received on the session and + contained header or data digest errors. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.7, Digest Errors" +::= { iscsiSessionCxnErrorStatsEntry 1 } + +iscsiSsnCxnTimeoutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "connections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of connections within this session + that have been terminated due to timeout. + If this counter has suffered a discontinuity, the time of the + last discontinuity is indicated in iscsiSsnDiscontinuityTime." + REFERENCE + "RFC 3720, Section 6.4, Connection Timeout Management" +::= { iscsiSessionCxnErrorStatsEntry 2 } + +--********************************************************************** + +iscsiConnection OBJECT IDENTIFIER ::= { iscsiObjects 11 } + +-- Connection Attributes Table + +iscsiConnectionAttributesTable OBJECT-TYPE + SYNTAX SEQUENCE OF IscsiConnectionAttributesEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A list of connections belonging to each iSCSI instance + present on the system." +::= { iscsiConnection 1 } + +iscsiConnectionAttributesEntry OBJECT-TYPE + SYNTAX IscsiConnectionAttributesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable + to a particular connection." + INDEX { iscsiInstIndex, iscsiSsnNodeIndex, iscsiSsnIndex, + iscsiCxnIndex } +::= { iscsiConnectionAttributesTable 1 } + +IscsiConnectionAttributesEntry ::= SEQUENCE { + iscsiCxnIndex Unsigned32, + iscsiCxnCid Unsigned32, + iscsiCxnState INTEGER, + iscsiCxnAddrType InetAddressType, + iscsiCxnLocalAddr InetAddress, + iscsiCxnProtocol IscsiTransportProtocol, + iscsiCxnLocalPort InetPortNumber, + iscsiCxnRemoteAddr InetAddress, + iscsiCxnRemotePort InetPortNumber, + iscsiCxnMaxRecvDataSegLength Unsigned32, + iscsiCxnMaxXmitDataSegLength Unsigned32, + iscsiCxnHeaderIntegrity IscsiDigestMethod, + iscsiCxnDataIntegrity IscsiDigestMethod, + iscsiCxnRecvMarker TruthValue, + iscsiCxnSendMarker TruthValue, + iscsiCxnVersionActive Unsigned32 +} + +iscsiCxnIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a + particular connection of a particular session within + an iSCSI instance present on the local system. An + agent should attempt to not reuse index values unless + a reboot has occurred. iSCSI connections are destroyed + during a reboot; rows in this table are not persistent + across reboots." + + + +::= { iscsiConnectionAttributesEntry 1 } + +iscsiCxnCid OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Connection ID for this connection." +::= { iscsiConnectionAttributesEntry 2 } + +iscsiCxnState OBJECT-TYPE + SYNTAX INTEGER { + login(1), + full(2), + logout(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of this connection, from an iSCSI negotiation + point of view. Here are the states: + + login - The transport protocol connection has been established, + but a valid iSCSI login response with the final bit set + has not been sent or received. + full - A valid iSCSI login response with the final bit set + has been sent or received. + logout - A valid iSCSI logout command has been sent or + received, but the transport protocol connection has + not yet been closed." +::= { iscsiConnectionAttributesEntry 3 } + +iscsiCxnAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet Network Addresses contained in the + corresponding instances of iscsiCxnLocalAddr and + iscsiCxnRemoteAddr. + The value 'dns' is not allowed." +::= { iscsiConnectionAttributesEntry 4 } + +iscsiCxnLocalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The local Internet Network Address, of the type specified + by iscsiCxnAddrType, used by this connection." +::= { iscsiConnectionAttributesEntry 5 } + +iscsiCxnProtocol OBJECT-TYPE + SYNTAX IscsiTransportProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport protocol over which this connection is + running." +::= { iscsiConnectionAttributesEntry 6 } + +iscsiCxnLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local transport protocol port used by this connection. + This object cannot have the value zero, since it represents + an established connection." +::= { iscsiConnectionAttributesEntry 7 } + +iscsiCxnRemoteAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote Internet Network Address, of the type specified + by iscsiCxnAddrType, used by this connection." +::= { iscsiConnectionAttributesEntry 8 } + +iscsiCxnRemotePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote transport protocol port used by this connection. + This object cannot have the value zero, since it represents + an established connection." +::= { iscsiConnectionAttributesEntry 9 } + +iscsiCxnMaxRecvDataSegLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The maximum data payload size supported for command + or data PDUs able to be received on this connection." + REFERENCE + "RFC 3720, Section 12.12, MaxRecvDataSegmentLength" +::= { iscsiConnectionAttributesEntry 10 } + +iscsiCxnMaxXmitDataSegLength OBJECT-TYPE + SYNTAX Unsigned32 (512..16777215) + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum data payload size supported for command + or data PDUs to be sent on this connection." + REFERENCE + "RFC 3720, Section 12.12, MaxRecvDataSegmentLength" +::= { iscsiConnectionAttributesEntry 11 } + +iscsiCxnHeaderIntegrity OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the iSCSI header + digest scheme in use within this connection." +::= { iscsiConnectionAttributesEntry 12 } + +iscsiCxnDataIntegrity OBJECT-TYPE + SYNTAX IscsiDigestMethod + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the iSCSI data + digest scheme in use within this connection." +::= { iscsiConnectionAttributesEntry 13 } + +iscsiCxnRecvMarker OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this connection + is receiving markers in its incoming data stream." + REFERENCE + "RFC 3720, Appendix A." +::= { iscsiConnectionAttributesEntry 14 } + +iscsiCxnSendMarker OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this connection + is inserting markers in its outgoing data stream." + REFERENCE + "RFC 3720, Appendix A." +::= { iscsiConnectionAttributesEntry 15 } + +iscsiCxnVersionActive OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Active version number of the iSCSI specification negotiated + on this connection." + REFERENCE + "RFC 3720, Section 10.12, Login Request" +::= { iscsiConnectionAttributesEntry 16 } + +--********************************************************************** +-- Notifications + +iscsiTgtLoginFailure NOTIFICATION-TYPE + OBJECTS { + iscsiTgtLoginFailures, + iscsiTgtLastFailureType, + iscsiTgtLastIntrFailureName, + iscsiTgtLastIntrFailureAddrType, + iscsiTgtLastIntrFailureAddr + } + STATUS current + DESCRIPTION + "Sent when a login is failed by a target. + + To avoid sending an excessive number of notifications due + to multiple errors counted, an SNMP agent implementing this + notification SHOULD NOT send more than 3 notifications of + this type in any 10-second time period." +::= { iscsiNotifications 1 } + +iscsiIntrLoginFailure NOTIFICATION-TYPE + OBJECTS { + iscsiIntrLoginFailures, + iscsiIntrLastFailureType, + iscsiIntrLastTgtFailureName, + iscsiIntrLastTgtFailureAddrType, + + + + iscsiIntrLastTgtFailureAddr + } + STATUS current + DESCRIPTION + "Sent when a login is failed by an initiator. + + To avoid sending an excessive number of notifications due + to multiple errors counted, an SNMP agent implementing this + notification SHOULD NOT send more than 3 notifications of + this type in any 10-second time period." +::= { iscsiNotifications 2 } + +iscsiInstSessionFailure NOTIFICATION-TYPE + OBJECTS { + iscsiInstSsnFailures, + iscsiInstLastSsnFailureType, + iscsiInstLastSsnRmtNodeName + } + STATUS current + DESCRIPTION + "Sent when an active session is failed by either the initiator + or the target. + + To avoid sending an excessive number of notifications due + to multiple errors counted, an SNMP agent implementing this + notification SHOULD NOT send more than 3 notifications of + this type in any 10-second time period." +::= { iscsiNotifications 3 } + +--********************************************************************** + +-- Conformance Statements + +iscsiCompliances OBJECT IDENTIFIER ::= { iscsiConformance 1 } +iscsiGroups OBJECT IDENTIFIER ::= { iscsiConformance 2 } + +iscsiInstanceAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiInstDescr, + iscsiInstVersionMin, + iscsiInstVersionMax, + iscsiInstVendorID, + iscsiInstVendorVersion, + iscsiInstPortalNumber, + iscsiInstNodeNumber, + iscsiInstSessionNumber, + iscsiInstSsnFailures, + iscsiInstLastSsnFailureType, + + + + iscsiInstLastSsnRmtNodeName, + iscsiInstDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about iSCSI + instances." +::= { iscsiGroups 1 } + +iscsiInstanceSsnErrorStatsGroup OBJECT-GROUP + OBJECTS { + iscsiInstSsnDigestErrors, + iscsiInstSsnCxnTimeoutErrors, + iscsiInstSsnFormatErrors + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + errors that have caused a session failure for an + iSCSI instance." +::= { iscsiGroups 2 } + +iscsiPortalAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiPortalRowStatus, + iscsiPortalStorageType, + iscsiPortalRoles, + iscsiPortalAddrType, + iscsiPortalAddr, + iscsiPortalProtocol, + iscsiPortalMaxRecvDataSegLength, + iscsiPortalPrimaryHdrDigest, + iscsiPortalPrimaryDataDigest, + iscsiPortalSecondaryHdrDigest, + iscsiPortalSecondaryDataDigest, + iscsiPortalRecvMarker + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the transport protocol endpoints of the local targets." +::= { iscsiGroups 3 } + +iscsiTgtPortalAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiTgtPortalPort, + iscsiTgtPortalTag + } + + + + STATUS current + DESCRIPTION + "A collection of objects providing information about + the transport protocol endpoints of the local targets." +::= { iscsiGroups 4 } + +iscsiIntrPortalAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiIntrPortalTag + } + STATUS current + DESCRIPTION + "An object providing information about + the portal tags used by the local initiators." +::= { iscsiGroups 5 } + +iscsiNodeAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiNodeName, + iscsiNodeAlias, + iscsiNodeRoles, + iscsiNodeTransportType, + iscsiNodeInitialR2T, + iscsiNodeImmediateData, + iscsiNodeMaxOutstandingR2T, + iscsiNodeFirstBurstLength, + iscsiNodeMaxBurstLength, + iscsiNodeMaxConnections, + iscsiNodeDataSequenceInOrder, + iscsiNodeDataPDUInOrder, + iscsiNodeDefaultTime2Wait, + iscsiNodeDefaultTime2Retain, + iscsiNodeErrorRecoveryLevel, + iscsiNodeDiscontinuityTime, + iscsiNodeStorageType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + local targets." +::= { iscsiGroups 6 } + +iscsiTargetAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiTgtLoginFailures, + iscsiTgtLastFailureTime, + iscsiTgtLastFailureType, + iscsiTgtLastIntrFailureName, + + + + iscsiTgtLastIntrFailureAddrType, + iscsiTgtLastIntrFailureAddr + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + local targets." +::= { iscsiGroups 7 } + +iscsiTargetLoginStatsGroup OBJECT-GROUP + OBJECTS { + iscsiTgtLoginAccepts, + iscsiTgtLoginOtherFails, + iscsiTgtLoginRedirects, + iscsiTgtLoginAuthorizeFails, + iscsiTgtLoginAuthenticateFails, + iscsiTgtLoginNegotiateFails + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + login attempts by remote initiators to local targets." +::= { iscsiGroups 8 } + +iscsiTargetLogoutStatsGroup OBJECT-GROUP + OBJECTS { + iscsiTgtLogoutNormals, + iscsiTgtLogoutOthers + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + logout events between remote initiators and local targets." +::= { iscsiGroups 9 } + +iscsiTargetAuthGroup OBJECT-GROUP + OBJECTS { + iscsiTgtAuthRowStatus, + iscsiTgtAuthStorageType, + iscsiTgtAuthIdentity + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + remote initiators that are authorized to connect to local + targets." +::= { iscsiGroups 10 } + + + + +iscsiInitiatorAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiIntrLoginFailures, + iscsiIntrLastFailureTime, + iscsiIntrLastFailureType, + iscsiIntrLastTgtFailureName, + iscsiIntrLastTgtFailureAddrType, + iscsiIntrLastTgtFailureAddr + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + all local initiators." +::= { iscsiGroups 11 } + +iscsiInitiatorLoginStatsGroup OBJECT-GROUP + OBJECTS { + iscsiIntrLoginAcceptRsps, + iscsiIntrLoginOtherFailRsps, + iscsiIntrLoginRedirectRsps, + iscsiIntrLoginAuthFailRsps, + iscsiIntrLoginAuthenticateFails, + iscsiIntrLoginNegotiateFails + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + login attempts by local initiators to remote targets." +::= { iscsiGroups 12 } + +iscsiInitiatorLogoutStatsGroup OBJECT-GROUP + OBJECTS { + iscsiIntrLogoutNormals, + iscsiIntrLogoutOthers + } + STATUS current + DESCRIPTION + "A collection of objects providing information about all + logout events between local initiators and remote targets." +::= { iscsiGroups 13 } + +iscsiInitiatorAuthGroup OBJECT-GROUP + OBJECTS { + iscsiIntrAuthRowStatus, + iscsiIntrAuthStorageType, + iscsiIntrAuthIdentity + } + STATUS current + + + + DESCRIPTION + "A collection of objects providing information about all + remote targets that are initiators of the local system + that they are authorized to access." +::= { iscsiGroups 14 } + +iscsiSessionAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiSsnDirection, + iscsiSsnInitiatorName, + iscsiSsnTargetName, + iscsiSsnTSIH, + iscsiSsnISID, + iscsiSsnInitiatorAlias, + iscsiSsnTargetAlias, + iscsiSsnInitialR2T, + iscsiSsnImmediateData, + iscsiSsnType, + iscsiSsnMaxOutstandingR2T, + iscsiSsnFirstBurstLength, + iscsiSsnMaxBurstLength, + iscsiSsnConnectionNumber, + iscsiSsnAuthIdentity, + iscsiSsnDataSequenceInOrder, + iscsiSsnDataPDUInOrder, + iscsiSsnErrorRecoveryLevel, + iscsiSsnDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of objects providing information applicable to + all sessions." +::= { iscsiGroups 15 } + +iscsiSessionPDUStatsGroup OBJECT-GROUP + OBJECTS { + iscsiSsnCmdPDUs, + iscsiSsnRspPDUs + } + STATUS current + DESCRIPTION + "A collection of objects providing information about PDU + traffic for each session." +::= { iscsiGroups 16 } + +iscsiSessionOctetStatsGroup OBJECT-GROUP + OBJECTS { + iscsiSsnTxDataOctets, + + + + iscsiSsnRxDataOctets + } + STATUS current + DESCRIPTION + "A collection of objects providing information about octet + traffic for each session using a Counter64 data type." +::= { iscsiGroups 17 } + +iscsiSessionLCOctetStatsGroup OBJECT-GROUP + OBJECTS { + iscsiSsnLCTxDataOctets, + iscsiSsnLCRxDataOctets + } + STATUS current + DESCRIPTION + "A collection of objects providing information about octet + traffic for each session using a Counter32 data type." +::= { iscsiGroups 18 } + +iscsiSessionCxnErrorStatsGroup OBJECT-GROUP + OBJECTS { + iscsiSsnCxnDigestErrors, + iscsiSsnCxnTimeoutErrors + } + STATUS current + DESCRIPTION + "A collection of objects providing information about connection + errors for all sessions." +::= { iscsiGroups 19 } + +iscsiConnectionAttributesGroup OBJECT-GROUP + OBJECTS { + iscsiCxnCid, + iscsiCxnState, + iscsiCxnProtocol, + iscsiCxnAddrType, + iscsiCxnLocalAddr, + iscsiCxnLocalPort, + iscsiCxnRemoteAddr, + iscsiCxnRemotePort, + iscsiCxnMaxRecvDataSegLength, + iscsiCxnMaxXmitDataSegLength, + iscsiCxnHeaderIntegrity, + iscsiCxnDataIntegrity, + iscsiCxnRecvMarker, + iscsiCxnSendMarker, + iscsiCxnVersionActive + } + + + + STATUS current + DESCRIPTION + "A collection of objects providing information about all + connections used by all sessions." +::= { iscsiGroups 20 } + +iscsiTgtLgnNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + iscsiTgtLoginFailure + } + STATUS current + DESCRIPTION + "A collection of notifications that indicate a login + failure from a remote initiator to a local target." +::= { iscsiGroups 21 } + +iscsiIntrLgnNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + iscsiIntrLoginFailure + } + STATUS current + DESCRIPTION + "A collection of notifications that indicate a login + failure from a local initiator to a remote target." +::= { iscsiGroups 22 } + +iscsiSsnFlrNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + iscsiInstSessionFailure + } + STATUS current + DESCRIPTION + "A collection of notifications that indicate session + failures occurring after login." +::= { iscsiGroups 23 } + +--********************************************************************** + +iscsiComplianceV1 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Initial version of compliance statement based on + initial version of this MIB module. + + If an implementation can be both a target and an + initiator, all groups are mandatory." + MODULE -- this module + MANDATORY-GROUPS { + + + + iscsiInstanceAttributesGroup, + iscsiInstanceSsnErrorStatsGroup, + iscsiPortalAttributesGroup, + iscsiNodeAttributesGroup, + iscsiSessionAttributesGroup, + iscsiSessionPDUStatsGroup, + iscsiSessionCxnErrorStatsGroup, + iscsiConnectionAttributesGroup, + iscsiSsnFlrNotificationsGroup + } + + -- Conditionally mandatory groups depending on the ability + -- to support Counter64 data types and/or to provide counter + -- information to SNMPv1 applications. + + GROUP iscsiSessionOctetStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that can support Counter64 data types." + + GROUP iscsiSessionLCOctetStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that provide information to SNMPv1-only applications; + this includes agents that cannot support Counter64 + data types." + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when the implementation has + -- iSCSI target facilities. + + GROUP iscsiTgtPortalAttributesGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + OBJECT iscsiPortalMaxRecvDataSegLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT iscsiNodeStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required; an implementation may + choose to allow this object to be set to 'volatile' + or 'nonVolatile'." + + + + + GROUP iscsiTargetAttributesGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + GROUP iscsiTargetLoginStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + GROUP iscsiTargetLogoutStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + GROUP iscsiTgtLgnNotificationsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + GROUP iscsiTargetAuthGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI target facilities." + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when the implementation has + -- iSCSI initiator facilities. + + GROUP iscsiIntrPortalAttributesGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + GROUP iscsiInitiatorAttributesGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + GROUP iscsiInitiatorLoginStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + GROUP iscsiInitiatorLogoutStatsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + + + GROUP iscsiIntrLgnNotificationsGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + GROUP iscsiInitiatorAuthGroup + DESCRIPTION + "This group is mandatory for all iSCSI implementations + that have iSCSI initiator facilities." + + OBJECT iscsiNodeErrorRecoveryLevel + SYNTAX Unsigned32 (0..2) + DESCRIPTION + "Only values 0-2 are defined at present." + +::= { iscsiCompliances 1 } + +END diff --git a/mibs/ietf/ISDN-MIB b/mibs/ietf/ISDN-MIB new file mode 100644 index 0000000..d721e57 --- /dev/null +++ b/mibs/ietf/ISDN-MIB @@ -0,0 +1,1249 @@ +ISDN-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + NOTIFICATION-TYPE, + OBJECT-TYPE, + Counter32, + Gauge32, + Integer32 + FROM SNMPv2-SMI + DisplayString, + TruthValue, + TimeStamp, + RowStatus, + TestAndIncr, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF + ifIndex, + InterfaceIndex + FROM IF-MIB + IANAifType + FROM IANAifType-MIB + transmission + FROM RFC1213-MIB; + +isdnMib MODULE-IDENTITY + LAST-UPDATED "9609231642Z" -- Sep 23, 1996 + ORGANIZATION "IETF ISDN MIB Working Group" + CONTACT-INFO + " Guenter Roeck + Postal: cisco Systems + 170 West Tasman Drive + San Jose, CA 95134 + U.S.A. + Phone: +1 408 527 3143 + E-mail: groeck@cisco.com" + DESCRIPTION + "The MIB module to describe the + management of ISDN interfaces." + ::= { transmission 20 } + +-- The ISDN hardware interface (BRI or PRI) is represented + +-- by a media specific ifEntry. +-- +-- For basic rate lines, the media specifics for the physical interface +-- is defined in the physical interface group of the ISDN MIB. +-- The ifType for physical basic rate interfaces is isdns(75) +-- or isdnu(76), whichever is appropriate. +-- +-- For primary rate, the media specifics are defined in the Trunk +-- MIB and the ifType has a value of ds1(18). + +-- Each signaling channel is represented by an entry +-- in the isdnSignalingTable. +-- The signaling channel has an ifType value of isdn(63). +-- Each B channel is also represented as an entry +-- in the ifTable. The B channels have an ifType value +-- of ds0(81). +-- This model is used while defining objects and tables +-- for management. +-- The ISDN MIB allows sub-layers. For example, the data transfer +-- over a B channel may take place with PPP encapsulation. While the +-- ISDN MIB describes the D and B channels, a media specific MIB +-- for PPP can be used on a layered basis. This is as per +-- the interfaces MIB. + +-- Textual conventions + +IsdnSignalingProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax of the + isdnSignalingProtocol object in the + definition of ISDN-MIB's isdnSignalingTable. + + The definition of this textual convention with the + addition of newly assigned values is published + periodically by the IANA, in either the Assigned + Numbers RFC, or some derivative of it specific to + Internet Network Management number assignments. (The + latest arrangements can be obtained by contacting the + IANA.) + + Requests for new values should be made to IANA via + email (iana@iana.org)." + SYNTAX INTEGER { + other(1), -- none of the following + dss1(2), -- ITU DSS1 (formerly CCITT) Q.931 + etsi(3), -- Europe / ETSI ETS300-102 + -- plus supplementary services + + -- (ETSI 300-xxx) + -- note that NET3, NET5 define + -- test procedures for ETS300-102 + -- and have been replaced by + -- I-CTR 3 and I-CTR 4. + dass2(4), -- U.K. / DASS2 (PRI) + ess4(5), -- U.S.A. / AT&T 4ESS + ess5(6), -- U.S.A. / AT&T 5ESS + dms100(7), -- U.S.A. / Northern Telecom DMS100 + dms250(8), -- U.S.A. / Northern Telecom DMS250 + ni1(9), -- U.S.A. / National ISDN 1 (BRI) + ni2(10), -- U.S.A. / National ISDN 2 (BRI, PRI) + ni3(11), -- U.S.A. / next one + vn2(12), -- France / VN2 + vn3(13), -- France / VN3 + vn4(14), -- France / VN4 (ETSI with changes) + vn6(15), -- France / VN6 (ETSI with changes) + -- delta document CSE P 10-21 A + -- test document CSE P 10-20 A + kdd(16), -- Japan / KDD + ins64(17), -- Japan / NTT INS64 + ins1500(18), -- Japan / NTT INS1500 + itr6(19), -- Germany/ 1TR6 (BRI, PRI) + cornet(20), -- Germany/ Siemens HiCom CORNET + ts013(21), -- Australia / TS013 + -- (formerly TPH 1962, BRI) + ts014(22), -- Australia / TS014 + -- (formerly TPH 1856, PRI) + qsig(23), -- Q.SIG + swissnet2(24), -- SwissNet-2 + swissnet3(25) -- SwissNet-3 + } + +-- Isdn Mib objects definitions + +isdnMibObjects OBJECT IDENTIFIER ::= { isdnMib 1 } + +-- ISDN physical interface group + +-- This group describes physical basic rate interfaces. + +isdnBasicRateGroup OBJECT IDENTIFIER ::= { isdnMibObjects 1 } + +isdnBasicRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnBasicRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing configuration and operational + parameters for all physical Basic Rate + interfaces on this managed device." + ::= { isdnBasicRateGroup 1 } + +isdnBasicRateEntry OBJECT-TYPE + SYNTAX IsdnBasicRateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ISDN Basic Rate Table." + INDEX { ifIndex } + ::= { isdnBasicRateTable 1 } + +IsdnBasicRateEntry ::= SEQUENCE { + isdnBasicRateIfType INTEGER, + isdnBasicRateLineTopology INTEGER, + isdnBasicRateIfMode INTEGER, + isdnBasicRateSignalMode INTEGER + } + +isdnBasicRateIfType OBJECT-TYPE + SYNTAX INTEGER { + isdns(75), + isdnu(76) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical interface type. For 'S/T' interfaces, + also called 'Four-wire Basic Access Interface', + the value of this object is isdns(75). + For 'U' interfaces, also called 'Two-wire Basic + Access Interface', the value of this object is + isdnu(76)." + ::= { isdnBasicRateEntry 1 } + +isdnBasicRateLineTopology OBJECT-TYPE + SYNTAX INTEGER { + pointToPoint(1), + pointToMultipoint(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The line topology to be used for this interface. + Note that setting isdnBasicRateIfType to isdns(75) + does not necessarily mean a line topology of + point-to-multipoint." + ::= { isdnBasicRateEntry 2 } + +isdnBasicRateIfMode OBJECT-TYPE + SYNTAX INTEGER { + te(1), + nt(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical interface mode. For TE mode, the value + of this object is te(1). For NT mode, the value + of this object is nt(2)." + ::= { isdnBasicRateEntry 3 } + +isdnBasicRateSignalMode OBJECT-TYPE + SYNTAX INTEGER { + active(1), + inactive(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The signaling channel operational mode for this interface. + If active(1) there is a signaling channel on this + interface. If inactive(2) a signaling channel is + not available." + ::= { isdnBasicRateEntry 4 } + +-- The B channel (bearer channel) group + +-- Note that disconnects can explicitely be handled using the +-- ifStack table. If a connection is to be disconnected, +-- the according ifStack entry has to be removed. +-- More specifically, the ifStackTable entry which binds the high-layer +-- ifTable entry (and related dialCtlNbrCfgTable entry) to the +-- B channel ifTable entry (and related isdnBearerTable entry) +-- during an active call has to be removed. + +isdnBearerGroup OBJECT IDENTIFIER ::= { isdnMibObjects 2 } + +isdnBearerTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnBearerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines port specific operational, statistics + and active call data for ISDN B channels. Each entry + in this table describes one B (bearer) channel." + ::= { isdnBearerGroup 1 } + +isdnBearerEntry OBJECT-TYPE + SYNTAX IsdnBearerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Operational and statistics information relating to + one port. A port is a single B channel." + INDEX { ifIndex } + ::= { isdnBearerTable 1 } + +IsdnBearerEntry ::= + SEQUENCE { + isdnBearerChannelType INTEGER, + isdnBearerOperStatus INTEGER, + isdnBearerChannelNumber INTEGER, + isdnBearerPeerAddress DisplayString, + isdnBearerPeerSubAddress DisplayString, + isdnBearerCallOrigin INTEGER, + isdnBearerInfoType INTEGER, + isdnBearerMultirate TruthValue, + isdnBearerCallSetupTime TimeStamp, + isdnBearerCallConnectTime TimeStamp, + isdnBearerChargedUnits Gauge32 + } + +isdnBearerChannelType OBJECT-TYPE + SYNTAX INTEGER { + dialup(1), + leased(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The B channel type. If the B channel is connected + to a dialup line, this object has a value of + dialup(1). In this case, it is controlled by + an associated signaling channel. If the B channel + is connected to a leased line, this object has + a value of leased(2). For leased line B channels, there + is no signaling channel control available." + ::= { isdnBearerEntry 1 } + +isdnBearerOperStatus OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + connecting(2), + connected(3), + active(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current call control state for this port. + idle(1): The B channel is idle. + No call or call attempt is going on. + connecting(2): A connection attempt (outgoing call) + is being made on this interface. + connected(3): An incoming call is in the process + of validation. + active(4): A call is active on this interface." + ::= { isdnBearerEntry 2 } + +isdnBearerChannelNumber OBJECT-TYPE + SYNTAX INTEGER (1..30) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identifier being used by a signaling protocol + to identify this B channel, also referred to as + B channel number. If the Agent also supports the DS0 MIB, + the values of isdnBearerChannelNumber and dsx0Ds0Number + must be identical for a given B channel." + ::= { isdnBearerEntry 3 } + +isdnBearerPeerAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ISDN address the current or last call is or was + connected to. + + In some cases, the format of this information can not + be predicted, since it largely depends on the type + of switch or PBX the device is connected to. Therefore, + the detailed format of this information is not + specified and is implementation dependent. + + If possible, the agent should supply this information + using the E.164 format. In this case, the number must + start with '+'. Otherwise, IA5 number digits must be used. + If the peer ISDN address is not available, + this object has a length of zero." + REFERENCE + "ITU-T E.164, Q.931 chapter 4.5.10" + ::= { isdnBearerEntry 4 } + +isdnBearerPeerSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ISDN subaddress the current or last call is or was + connected to. + + The subaddress is an user supplied string of up to 20 + IA5 characters and is transmitted transparently through + the network. + + If the peer subaddress is not available, this object + has a length of zero." + REFERENCE + "ITU-T I.330, Q.931 chapter 4.5.11" + ::= { isdnBearerEntry 5 } + +isdnBearerCallOrigin OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + originate(2), + answer(3), + callback(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The call origin for the current or last call. If since + system startup there was no call on this interface, + this object has a value of unknown(1)." + ::= { isdnBearerEntry 6 } + +isdnBearerInfoType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + speech(2), + unrestrictedDigital(3), -- as defined in Q.931 + unrestrictedDigital56(4), -- with 56k rate adaption + restrictedDigital(5), + audio31(6), -- 3.1 kHz audio + audio7(7), -- 7 kHz audio + video(8), + packetSwitched(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Information Transfer Capability for the current + or last call. + + speech(2) refers to a non-data connection, whereas + audio31(6) and audio7(7) refer to data mode connections. + + Note that Q.931, chapter 4.5.5, originally defined + audio7(7) as '7 kHz audio' and now defines it as + 'Unrestricted digital information with tones/ + announcements'. + + If since system startup there has been no call on this + interface, this object has a value of unknown(1)." + REFERENCE + "Q.931 [8], chapter 4.5.5, octet 3 of bearer capability + information element, combined with the User Rate + (as defined in octets 5 and 5a to 5d), if rate adaption + is being used." + ::= { isdnBearerEntry 7 } + +isdnBearerMultirate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This flag indicates if the current or last call used + multirate. The actual information transfer rate, + in detail specified in octet 4.1 (rate multiplier), + is the sum of all B channel ifSpeed values for + the hyperchannel. + + If since system startup there was no call on this + interface, this object has a value of false(2)." + REFERENCE + "Q.931 [8], chapter 4.5.5." + ::= { isdnBearerEntry 8 } + +isdnBearerCallSetupTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the ISDN setup message for + the current or last call was sent or received. If since + system startup there has been no call on this interface, + this object has a value of zero." + ::= { isdnBearerEntry 9 } + +isdnBearerCallConnectTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the ISDN connect message for + the current or last call was sent or received. If since + system startup there has been no call on this interface, + this object has a value of zero." + ::= { isdnBearerEntry 10 } + +isdnBearerChargedUnits OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of charged units for the current or last + connection. For incoming calls or if charging information + is not supplied by the switch, the value of this object + is zero." + ::= { isdnBearerEntry 11 } + +-- ISDN signaling group + +isdnSignalingGroup OBJECT IDENTIFIER ::= { isdnMibObjects 3 } + +-- signaling channel configuration table +-- There is one entry in this table for each Terminal Endpoint +-- (link layer connection to the switch). +-- Usually, there is one endpoint per D channel. In some +-- cases, however, there can be multiple endpoints. +-- Thus, entries in this table can be created and deleted. +-- This also means the creation of an associated ifEntry. +-- +-- D channel backup and NFAS trunks are handled using the +-- ifStack table. +-- In case of D channel backup, there are multiple +-- Data Link Layer (LAPD) interfaces. Only one interface is +-- active; all others are dormant(5). +-- In case of NFAS trunks, one lower interface is the +-- LAPD interface, while the other lower interfaces are physical +-- interfaces. + +-- If directory number and calling address differ from each other +-- or multiple directory numbers are being used, +-- the isdnDirectoryTable has to be used to enter such +-- directory numbers. + +isdnSignalingGetIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The recommended procedure for selecting a new index for + isdnSignalingTable row creation is to GET the value of + this object, and then to SET the object with the same + value. If the SET operation succeeds, the manager can use + this value as an index to create a new row in this table." + REFERENCE + "RFC1903, TestAndIncr textual convention." + ::= { isdnSignalingGroup 1 } + +isdnSignalingTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnSignalingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "ISDN signaling table containing configuration and + operational parameters for all ISDN signaling + channels on this managed device." + ::= { isdnSignalingGroup 2 } + +isdnSignalingEntry OBJECT-TYPE + SYNTAX IsdnSignalingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ISDN Signaling Table. To create a new + entry, only isdnSignalingProtocol needs to be specified + before isdnSignalingStatus can become active(1)." + INDEX { isdnSignalingIndex } + ::= { isdnSignalingTable 1 } + +IsdnSignalingEntry ::= SEQUENCE { + isdnSignalingIndex INTEGER, + isdnSignalingIfIndex InterfaceIndex, + isdnSignalingProtocol IsdnSignalingProtocol, + isdnSignalingCallingAddress DisplayString, + isdnSignalingSubAddress DisplayString, + isdnSignalingBchannelCount Integer32, + isdnSignalingInfoTrapEnable INTEGER, + isdnSignalingStatus RowStatus + } + +isdnSignalingIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value which uniquely identifies an entry + in the isdnSignalingTable." + ::= { isdnSignalingEntry 1 } + +isdnSignalingIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the interface associated with this + signaling channel." + ::= { isdnSignalingEntry 2 } + +isdnSignalingProtocol OBJECT-TYPE + SYNTAX IsdnSignalingProtocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The particular protocol type supported by the + switch providing access to the ISDN network + to which this signaling channel is connected." + ::= { isdnSignalingEntry 3 } + +isdnSignalingCallingAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ISDN Address to be assigned to this signaling + channel. More specifically, this is the 'Calling Address + information element' as being passed to the switch + in outgoing call setup messages. + + It can be an EAZ (1TR6), a calling number (DSS1, ETSI) + or any other number necessary to identify a signaling + interface. If there is no such number defined or required, + this is a zero length string. It is represented in + DisplayString form. + + Incoming calls can also be identified by this number. + If the Directory Number, i.e. the Called Number in + incoming calls, is different to this number, the + isdnDirectoryTable has to be used to specify all + possible Directory Numbers. + + The format of this information largely depends on the type + of switch or PBX the device is connected to. Therefore, + the detailed format of this information is not + specified and is implementation dependent. + + If possible, the agent should implement this information + using the E.164 number format. In this case, the number + must start with '+'. Otherwise, IA5 number digits must + be used." + REFERENCE + "ITU-T E.164, Q.931 chapter 4.5.10" + DEFVAL { "" } + ::= { isdnSignalingEntry 4 } + +isdnSignalingSubAddress OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Supplementary information to the ISDN address assigned + to this signaling channel. Usually, this is the + subaddress as defined in Q.931. + If there is no such number defined or required, this is + a zero length string. + The subaddress is used for incoming calls as well as + for outgoing calls. + The subaddress is an user supplied string of up to 20 + IA5 characters and is transmitted transparently through + the network." + REFERENCE + "ITU-T I.330, Q.931 chapter 4.5.11" + DEFVAL { "" } + ::= { isdnSignalingEntry 5 } + +isdnSignalingBchannelCount OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The total number of B channels (bearer channels) + managed by this signaling channel. The default value + of this object depends on the physical interface type + and is either 2 for Basic Rate interfaces or + 24 (30) for Primary Rate interfaces." + ::= { isdnSignalingEntry 6 } + +isdnSignalingInfoTrapEnable OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether isdnMibCallInformation traps + should be generated for calls on this signaling + channel." + DEFVAL { disabled } + ::= { isdnSignalingEntry 7 } + +isdnSignalingStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + isdnSignalingTable." + ::= { isdnSignalingEntry 8 } + +-- Signaling channel statistics table +-- There is one entry for each signaling connection +-- in this table. +-- Note that the ifEntry also has some statistics information. + +isdnSignalingStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnSignalingStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "ISDN signaling table containing statistics + information for all ISDN signaling channels + on this managed device. + Only statistical information which is not already being + counted in the ifTable is being defined in this table." + ::= { isdnSignalingGroup 3 } + +isdnSignalingStatsEntry OBJECT-TYPE + SYNTAX IsdnSignalingStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the ISDN Signaling statistics Table." + AUGMENTS { isdnSignalingEntry } + ::= { isdnSignalingStatsTable 1 } + +IsdnSignalingStatsEntry ::= SEQUENCE { + isdnSigStatsInCalls Counter32, + isdnSigStatsInConnected Counter32, + isdnSigStatsOutCalls Counter32, + isdnSigStatsOutConnected Counter32, + isdnSigStatsChargedUnits Counter32 + } + +isdnSigStatsInCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming calls on this interface." + ::= { isdnSignalingStatsEntry 1 } + +isdnSigStatsInConnected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming calls on this interface + which were actually connected." + ::= { isdnSignalingStatsEntry 2 } + +isdnSigStatsOutCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outgoing calls on this interface." + ::= { isdnSignalingStatsEntry 3 } + +isdnSigStatsOutConnected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outgoing calls on this interface + which were actually connected." + ::= { isdnSignalingStatsEntry 4 } + +isdnSigStatsChargedUnits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of charging units on this interface since + system startup. + Only the charging units applying to the local interface, + i.e. for originated calls or for calls with 'Reverse + charging' being active, are counted here." + ::= { isdnSignalingStatsEntry 5 } + +-- +-- The LAPD table + +isdnLapdTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnLapdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing configuration and statistics + information for all LAPD (D channel Data Link) + interfaces on this managed device. + Only statistical information which is not already being + counted in the ifTable is being defined in this table." + ::= { isdnSignalingGroup 4 } + +isdnLapdEntry OBJECT-TYPE + SYNTAX IsdnLapdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the LAPD Table." + INDEX { ifIndex } + ::= { isdnLapdTable 1 } + +IsdnLapdEntry ::= SEQUENCE { + isdnLapdPrimaryChannel TruthValue, + isdnLapdOperStatus INTEGER, + isdnLapdPeerSabme Counter32, + isdnLapdRecvdFrmr Counter32 + } + +isdnLapdPrimaryChannel OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If set to true(1), this D channel is the designated + primary D channel if D channel backup is active. + There must be exactly one primary D channel + configured. If D channel backup is not used, this + object has a value of true(1)." + REFERENCE + "Q.931 [8], Annex F, D channel backup procedures." + ::= { isdnLapdEntry 1 } + +isdnLapdOperStatus OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + l1Active(2), + l2Active(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of this interface: + + inactive all layers are inactive + l1Active layer 1 is activated, + layer 2 datalink not established + l2Active layer 1 is activated, + layer 2 datalink established." + ::= { isdnLapdEntry 2 } + +isdnLapdPeerSabme OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of peer SABME frames received on this + interface. This is the number of peer-initiated + new connections on this interface." + ::= { isdnLapdEntry 3 } + +isdnLapdRecvdFrmr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LAPD FRMR response frames received. + This is the number of framing errors on this + interface." + ::= { isdnLapdEntry 4 } + +-- +-- Optional groups follow here. + +-- The Terminal Endpoint group and table + +-- This table is required only if TEI values or SPID numbers +-- have to be entered. +-- The ifIndex values for this table are identical to those of +-- the isdnSignalingChannel table. + +isdnEndpointGroup OBJECT IDENTIFIER ::= { isdnMibObjects 4 } + +isdnEndpointGetIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The recommended procedure for selecting a new index for + isdnEndpointTable row creation is to GET the value of + this object, and then to SET the object with the same + value. If the SET operation succeeds, the manager can use + this value as an index to create a new row in this table." + REFERENCE + "RFC1903, TestAndIncr textual convention." + ::= { isdnEndpointGroup 1 } + +isdnEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing configuration for Terminal + Endpoints." + ::= { isdnEndpointGroup 2 } + +isdnEndpointEntry OBJECT-TYPE + SYNTAX IsdnEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Terminal Endpoint Table. The value + of isdnEndpointIfType must be supplied for a row + in this table to become active." + INDEX { isdnEndpointIndex } + ::= { isdnEndpointTable 1 } + +IsdnEndpointEntry ::= SEQUENCE { + isdnEndpointIndex INTEGER, + isdnEndpointIfIndex InterfaceIndex, + isdnEndpointIfType IANAifType, + isdnEndpointTeiType INTEGER, + isdnEndpointTeiValue INTEGER, + isdnEndpointSpid DisplayString, + isdnEndpointStatus RowStatus + } + +isdnEndpointIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value which uniquely identifies an entry + in the isdnEndpointTable." + ::= { isdnEndpointEntry 1 } + +isdnEndpointIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the interface associated with this + Terminal Endpoint." + ::= { isdnEndpointEntry 2 } + +isdnEndpointIfType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interface type for this Terminal Endpoint. + Interface types of x25ple(40) and isdn(63) are allowed. + The interface type is identical to the value of + ifType in the associated ifEntry." + ::= { isdnEndpointEntry 3 } + +isdnEndpointTeiType OBJECT-TYPE + SYNTAX INTEGER { + dynamic(1), + static(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of TEI (Terminal Endpoint Identifier) + used for this Terminal Endpoint. In case of dynamic(1), + the TEI value is selected by the switch. In + case of static(2), a valid TEI value has to be + entered in the isdnEndpointTeiValue object. + The default value for this object depends on the + interface type as well as the Terminal Endpoint type. + On Primary Rate interfaces the default value is + static(2). On Basic Rate interfaces the default value + is dynamic(1) for isdn(63) Terminal Endpoints and + static(2) for x25ple(40) Terminal Endpoints." + ::= { isdnEndpointEntry 4 } + +isdnEndpointTeiValue OBJECT-TYPE + SYNTAX INTEGER ( 0..255 ) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TEI (Terminal Endpoint Identifier) value + for this Terminal Endpoint. If isdnEndpointTeiType + is set to static(2), valid numbers are 0..63, + while otherwise the value is set internally. + The default value of this object is 0 for static + TEI assignment. + The default value for dynamic TEI assignment is also + 0 as long as no TEI has been assigned. After TEI + assignment, the assigned TEI value is returned." + ::= { isdnEndpointEntry 5 } + +isdnEndpointSpid OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Service profile IDentifier (SPID) information + for this Terminal Endpoint. + + The SPID is composed of 9-20 numeric characters. + + This information has to be defined in addition to + the local number for some switch protocol types, + e.g. Bellcore NI-1 and NI-2. + + If this object is not required, it is a + zero length string." + REFERENCE + "Bellcore SR-NWT-001953, Generic Guidelines for ISDN + Terminal Equipment on Basic Access Interfaces, + Chapter 8.5.1." + DEFVAL { "" } + ::= { isdnEndpointEntry 6 } + +isdnEndpointStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + isdnEndpointTable." + ::= { isdnEndpointEntry 7 } + +-- +-- The Directory Number group +-- + +isdnDirectoryGroup OBJECT IDENTIFIER ::= { isdnMibObjects 5 } + +isdnDirectoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsdnDirectoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table containing Directory Numbers." + ::= { isdnDirectoryGroup 1 } + +isdnDirectoryEntry OBJECT-TYPE + SYNTAX IsdnDirectoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the Directory Number Table. All objects + in an entry must be set for a new row to become active." + INDEX { isdnDirectoryIndex } + ::= { isdnDirectoryTable 1 } + +IsdnDirectoryEntry ::= SEQUENCE { + isdnDirectoryIndex INTEGER, + isdnDirectoryNumber DisplayString, + isdnDirectorySigIndex INTEGER, + isdnDirectoryStatus RowStatus + } + +isdnDirectoryIndex OBJECT-TYPE + SYNTAX INTEGER ( 1..'7fffffff'h ) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value which uniquely identifies an entry + in the isdnDirectoryTable." + ::= { isdnDirectoryEntry 1 } + +isdnDirectoryNumber OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A Directory Number. Directory Numbers are used + to identify incoming calls on the signaling + channel given in isdnDirectorySigIndex. + + The format of this information largely depends on the type + of switch or PBX the device is connected to. Therefore, + the detailed format of this information is not + specified and is implementation dependent. + + If possible, the agent should implement this information + using the E.164 number format. In this case, the number + must start with '+'. Otherwise, IA5 number digits must + be used." + REFERENCE + "ITU-T E.164, Q.931 chapter 4.5.10" + ::= { isdnDirectoryEntry 2 } + +isdnDirectorySigIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An index pointing to an ISDN signaling channel. + Incoming calls are accepted on this + signaling channel if the isdnDirectoryNumber is + presented as Called Number in the SETUP message." + ::= { isdnDirectoryEntry 3 } + +isdnDirectoryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + isdnDirectoryTable." + ::= { isdnDirectoryEntry 4 } + +-- Traps + +isdnMibTrapPrefix OBJECT IDENTIFIER ::= { isdnMib 2 } +isdnMibTraps OBJECT IDENTIFIER ::= { isdnMibTrapPrefix 0 } + +isdnMibCallInformation NOTIFICATION-TYPE + OBJECTS { + ifIndex, -- isdnBearerTable ifIndex + isdnBearerOperStatus, + isdnBearerPeerAddress, + isdnBearerPeerSubAddress, + isdnBearerCallSetupTime, + isdnBearerInfoType, + isdnBearerCallOrigin + } + STATUS current + DESCRIPTION + "This trap/inform is sent to the manager under the + following condidions: + - on incoming calls for each call which is rejected for + policy reasons (e.g. unknown neighbor or access + violation) + - on outgoing calls whenever a call attempt is determined + to have ultimately failed. In the event that call retry + is active, then this will be after all retry attempts + have failed. + - whenever a call connects. In this case, the object + isdnBearerCallConnectTime should be included in the + trap. + + Only one such trap is sent in between successful or + unsuccessful call attempts from or to a single neighbor; + subsequent call attempts result in no trap. + + If the Dial Control MIB objects dialCtlNbrCfgId and + dialCtlNbrCfgIndex are known by the entity generating + this trap, both objects should be included in the trap + as well. The receipt of this trap with no dial neighbor + information indicates that the manager must poll the + callHistoryTable of the Dial Control MIB to see what + changed." + ::= { isdnMibTraps 1 } + +-- +-- conformance information +-- + +isdnMibConformance OBJECT IDENTIFIER ::= { isdnMib 2 } +isdnMibCompliances OBJECT IDENTIFIER ::= { isdnMibConformance 1 } +isdnMibGroups OBJECT IDENTIFIER ::= { isdnMibConformance 2 } + +-- compliance statements + +isdnMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which implement + the ISDN MIB." + MODULE -- this module + +-- unconditionally mandatory groups + MANDATORY-GROUPS { + isdnMibSignalingGroup, + isdnMibBearerGroup, + isdnMibNotificationsGroup + } + +-- conditionally mandatory group + GROUP isdnMibBasicRateGroup + DESCRIPTION + "The isdnMibBasicRateGroup is mandatory for entities + supporting ISDN Basic Rate interfaces." + +-- optional groups + GROUP isdnMibEndpointGroup + DESCRIPTION + "Implementation of this group is optional for all systems + that attach to ISDN interfaces." + + GROUP isdnMibDirectoryGroup + DESCRIPTION + "Implementation of this group is optional for all systems + that attach to ISDN interfaces." + + OBJECT isdnBasicRateIfType + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT isdnBasicRateLineTopology + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT isdnBasicRateIfMode + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + + OBJECT isdnBasicRateSignalMode + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only." + ::= { isdnMibCompliances 1 } + +-- units of conformance + +isdnMibBasicRateGroup OBJECT-GROUP + OBJECTS { + isdnBasicRateIfType, + isdnBasicRateLineTopology, + isdnBasicRateIfMode, + isdnBasicRateSignalMode + } + STATUS current + DESCRIPTION + "A collection of objects required for ISDN Basic Rate + physical interface configuration and statistics." + ::= { isdnMibGroups 1 } + +isdnMibBearerGroup OBJECT-GROUP + OBJECTS { + isdnBearerChannelType, + isdnBearerOperStatus, + isdnBearerChannelNumber, + isdnBearerPeerAddress, + isdnBearerPeerSubAddress, + isdnBearerCallOrigin, + isdnBearerInfoType, + isdnBearerMultirate, + isdnBearerCallSetupTime, + isdnBearerCallConnectTime, + isdnBearerChargedUnits + } + STATUS current + DESCRIPTION + "A collection of objects required for ISDN Bearer channel + control and statistics." + ::= { isdnMibGroups 2 } + +isdnMibSignalingGroup OBJECT-GROUP + OBJECTS { + isdnSignalingGetIndex, + isdnSignalingIfIndex, + isdnSignalingProtocol, + isdnSignalingCallingAddress, + isdnSignalingSubAddress, + isdnSignalingBchannelCount, + isdnSignalingInfoTrapEnable, + isdnSignalingStatus, + isdnSigStatsInCalls, + isdnSigStatsInConnected, + isdnSigStatsOutCalls, + isdnSigStatsOutConnected, + isdnSigStatsChargedUnits, + isdnLapdPrimaryChannel, + isdnLapdOperStatus, + isdnLapdPeerSabme, + isdnLapdRecvdFrmr + } + STATUS current + DESCRIPTION + "A collection of objects required for ISDN D channel + configuration and statistics." + ::= { isdnMibGroups 3 } + +isdnMibEndpointGroup OBJECT-GROUP + OBJECTS { + isdnEndpointGetIndex, + isdnEndpointIfIndex, + isdnEndpointIfType, + isdnEndpointTeiType, + isdnEndpointTeiValue, + isdnEndpointSpid, + isdnEndpointStatus + } + STATUS current + DESCRIPTION + "A collection of objects describing Terminal Endpoints." + ::= { isdnMibGroups 4 } + +isdnMibDirectoryGroup OBJECT-GROUP + OBJECTS { + isdnDirectoryNumber, + isdnDirectorySigIndex, + isdnDirectoryStatus + } + STATUS current + DESCRIPTION + "A collection of objects describing directory numbers." + ::= { isdnMibGroups 5 } + +isdnMibNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { isdnMibCallInformation } + STATUS current + DESCRIPTION + "The notifications which a ISDN MIB entity is + required to implement." + ::= { isdnMibGroups 6 } +END diff --git a/mibs/ietf/ISIS-MIB b/mibs/ietf/ISIS-MIB new file mode 100644 index 0000000..7d16d93 --- /dev/null +++ b/mibs/ietf/ISIS-MIB @@ -0,0 +1,4581 @@ +ISIS-MIB DEFINITIONS ::= BEGIN + IMPORTS + TEXTUAL-CONVENTION, RowStatus, TruthValue, TimeStamp + FROM SNMPv2-TC -- RFC2579 + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Unsigned32, Counter32, mib-2 + FROM SNMPv2-SMI -- RFC2578 + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC2571 + IndexInteger, IndexIntegerNextFree + FROM DIFFSERV-MIB -- RFC3289 + InterfaceIndex + FROM IF-MIB -- RFC2863 + InetAddressType, InetAddress, InetAddressPrefixLength + FROM INET-ADDRESS-MIB; -- RFC3291 + + isisMIB MODULE-IDENTITY + LAST-UPDATED "200604040000Z" -- April 4, 2006, midnight + ORGANIZATION "IETF IS-IS for IP Internets Working Group" + CONTACT-INFO + "IS-IS for IP Internets working Group + http://www.ietf.org/html.charters/isis-charter.html + isis-wg@ietf.org + + Jeff Parker + Department of Computer Science + Middlebury College, + Middlebury, Vermont 05753 + jeffp at middlbury dot edu" + + DESCRIPTION + "This document describes a management information base for + the IS-IS Routing protocol, as described in ISO 10589, + when it is used to construct routing tables for IP + networks, as described in RFC 1195. + + This document is based on a 1994 IETF document by Chris + Gunner. This version has been modified to include + current syntax, to exclude portions of the protocol that + are not relevant to IP, and to add management support for + current practice. + + + + + + + Copyright (C) The Internet Society (2006). This version + of this MIB module is part of RFC 4444; see the RFC + itself for full legal notices." + + REVISION "200604040000Z" -- April 4, 2006, midnight + + DESCRIPTION + "Initial version, published as RFC 4444." + ::= { mib-2 138 } + +-- Top-level structure of the MIB + +isisNotifications OBJECT IDENTIFIER ::= { isisMIB 0 } +isisObjects OBJECT IDENTIFIER ::= { isisMIB 1 } +isisConformance OBJECT IDENTIFIER ::= { isisMIB 2 } + +-- OBJECT IDENTIFIER definitions + +-- System wide attributes. +isisSystem OBJECT IDENTIFIER ::= { isisObjects 1 } + +-- Attributes associated with the domain or with the area. +isisSysLevel OBJECT IDENTIFIER ::= { isisObjects 2 } + +-- Attributes associated with one Circuit +isisCirc OBJECT IDENTIFIER ::= { isisObjects 3 } + +-- Attributes associated with area or domain relevant within a Circuit. +isisCircLevelValues OBJECT IDENTIFIER ::= { isisObjects 4 } + +-- System and circuit counters. +isisCounters OBJECT IDENTIFIER ::= { isisObjects 5 } + +-- Attributes associated with an adjacent Protocol Peer. +isisISAdj OBJECT IDENTIFIER ::= { isisObjects 6 } + +-- Attributes associated with a configured address. +isisReachAddr OBJECT IDENTIFIER ::= { isisObjects 7 } + +-- Attributes associated with IP routes learned by +-- configuration or through another protocol. +isisIPReachAddr OBJECT IDENTIFIER ::= { isisObjects 8 } + +-- The collection of Link State PDUs known to the Intermediate System +isisLSPDataBase OBJECT IDENTIFIER ::= { isisObjects 9 } + +-- Objects included in Notifications. +isisNotification OBJECT IDENTIFIER ::= { isisObjects 10 } + + + +-- Type definitions + + IsisOSINSAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "OSI Network Service Address, e.g., NSAP, SNPA, or Network + Entity Title" + SYNTAX OCTET STRING (SIZE(0..20)) + + IsisSystemID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ID for an Intermediate System. This should + be unique within a network, and is included + in all PDUs originated by an Intermediate System. + The protocol does not place any meanings upon + the bits, other than using ordering to break + ties in electing a Designated IS on a LAN." + REFERENCE "{ISIS.aoi systemId (119)}" + SYNTAX OCTET STRING (SIZE(6)) + + IsisLinkStatePDUID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The 8-byte Link State PDU (LSP) ID, + consisting of the 6-byte SystemID of the + originating IS; a one-byte PseudoNode ID, + which is 0 unless the LSP represents the + topology of a LAN; and a one-byte LSP + fragment number that is issued in sequence, + starting with 0. Non-zero PseudoNode IDs + need to be unique to the IS but need not + match the IfIndex." + REFERENCE "{See section 9.8 of ISO 10589}" + SYNTAX OCTET STRING (SIZE(8)) + + IsisAdminState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Type used in enabling and disabling a row." + SYNTAX INTEGER + { + on(1), + off(2) + } + + IsisLSPBuffSize ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "Integer sub-range for maximum LSP size." + SYNTAX Unsigned32 (512..16000) + + IsisLevelState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "States of the IS-IS protocol." + SYNTAX INTEGER + { + off (1), + on (2), + waiting (3), + overloaded(4) + } + + IsisSupportedProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Types of network protocol supported by Integrated IS-IS. + The values for ISO8473 and IP are those registered for + these protocols in ISO TR9577." + REFERENCE "{See section 5.3.1 of RFC 1195}" + SYNTAX INTEGER + { + iso8473(129), + ipV6(142), + ip(204) + } + + IsisDefaultMetric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Integer sub-range for default metric for single hop. + ISO 10589 provides for 4 types of metric. Only the + 'default' metric is used in practice." + REFERENCE "{See section 7.2.2 of ISO 10589}" + SYNTAX Unsigned32 (0..63) + + IsisWideMetric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Wide metric for IS Neighbors. ISO 10589 provides a + 6-bit metric. Traffic Engineering extensions provide + 24-bit metrics." + + + + REFERENCE "{See section 3 of RFC 3784}" + SYNTAX Unsigned32 (0..16777215) + + IsisFullMetric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Full metric for IP Routes. Traffic Engineering extensions + provide 32-bit metrics." + REFERENCE "{See section 4 of RFC 3784}" + SYNTAX Unsigned32 + + IsisMetricType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Is this an Internal or External Metric?" + REFERENCE "{See section 7.2.2 of ISO 10589}" + SYNTAX INTEGER + { + internal(1), + external(2) + } + + IsisMetricStyle ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Do we use RFC 1195 style metrics or wide metrics?" + REFERENCE "{See section 5 of RFC 3787}" + SYNTAX INTEGER + { + narrow(1), + wide(2), + both(3) + } + + IsisISLevel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies a level." + REFERENCE "{See definitions 3.6.1 and 3.6.11 of ISO 10589}" + SYNTAX INTEGER + { + area(1), -- L1 + domain(2) -- L2 + } + + IsisLevel ::= TEXTUAL-CONVENTION + STATUS current + + + + DESCRIPTION + "Identifies one or more levels." + REFERENCE "{See definitions 3.6.1 and 3.6.11 of ISO 10589}" + SYNTAX INTEGER + { + level1(1), + level2(2), + level1and2(3) + } + + IsisPDUHeader ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A block to contain the header from a PDU." + SYNTAX OCTET STRING (SIZE(0..64)) + + IsisCircuitID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ID for a circuit." + REFERENCE "{See section 7.2.7 of ISO 10589}" + SYNTAX OCTET STRING (SIZE(0|7)) + + IsisISPriority ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Integer sub-range for IS-IS priority." + REFERENCE "{See section 9.5 of ISO 10589}" + SYNTAX Unsigned32 (0..127) + + IsisUnsigned16TC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An Unsigned32 further restricted to 16 bits. Note that + the ASN.1 BER encoding may still require 24 bits for + some values." + SYNTAX Unsigned32 (0..65535) + + IsisUnsigned8TC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An Unsigned32 further restricted to 8 bits. Note that + the ASN.1 BER encoding may still require 16 bits for + some values." + SYNTAX Unsigned32 (0..255) + + + +-- Behavior Definitions + +-- ResettingTimer behavior definition +-- + +-- "This behavior applies to objects that specify the interval +-- between events in the operation of the protocol state machine. +-- If the value of such an object is set to a new value while +-- the protocol state machine is in operation, the implementation +-- shall take the necessary steps to ensure that for any time +-- interval that was in progress when the value of the +-- corresponding object was changed, the next expiration of that +-- interval takes place the specified time after the original +-- start of that interval, or immediately, whichever is later. +-- The precision with which this time shall be implemented shall +-- be the same as that associated with the basic operation of +-- the timer object." + +-- ReplaceOnlyWhileDisabled behavior definition +-- "This behavior applies to objects that may not be modified +-- while the corresponding table row's variable of type +-- IsisAdminState is in state on." + +-- ManualOrAutomatic behavior definition +-- "This behavior applies to objects that are read-write +-- if the object was created manually. Objects that were +-- created automatically that have this behavior are +-- read-only. + + isisSysObject OBJECT IDENTIFIER ::= { isisSystem 1 } + + isisSysVersion OBJECT-TYPE + SYNTAX INTEGER + { + unknown(0), + one(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the IS-IS protocol that + is implemented." + REFERENCE "{ISIS.aoi version (1)}" + DEFVAL { one } + ::= { isisSysObject 1 } + + isisSysLevelType OBJECT-TYPE + SYNTAX IsisLevel + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "At which levels is the Intermediate System + running? This object may not be modified when + the isisSysAdminState variable is in state 'on' + for this Intermediate System. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi iSType (2)}" + DEFVAL { level1and2 } + ::= { isisSysObject 2 } + + isisSysID OBJECT-TYPE + SYNTAX IsisSystemID + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The ID for this Intermediate System. + This value is appended to each of the + area addresses to form the Network Entity Titles. + The derivation of a value for this object is + implementation specific. Some implementations may + automatically assign values and not permit an + SNMP write, while others may require the value + to be set manually. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi systemId (119)}" + ::= { isisSysObject 3 } + + isisSysMaxPathSplits OBJECT-TYPE + SYNTAX Unsigned32 (1..32) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum number of paths with equal routing metric value + which it is permitted to split between. This object + may not be modified when the isisSysAdminState variable + is in state 'on' for this Intermediate System. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi maximumPathSplits (3)}" + DEFVAL { 2 } + ::= { isisSysObject 4 } + + isisSysMaxLSPGenInt OBJECT-TYPE + SYNTAX Unsigned32 (1..65235) + + + + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum interval, in seconds, between generated LSPs + by this Intermediate System. This object follows + the ResettingTimer behavior. The value must be + greater than any value configured for + isisSysLevelMinLSPGenInt, and should be at least 300 + seconds less than isisSysMaxAge. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi maximumLSPGenerationInterval (6)}" + DEFVAL { 900 } + ::= { isisSysObject 5 } + + isisSysPollESHelloRate OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value, in seconds, to be used for the suggested ES + configuration timer in ISH PDUs when soliciting the ES + configuration. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi pollESHelloRate (13)}" + DEFVAL { 50 } + ::= { isisSysObject 6 } + + isisSysWaitTime OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Number of seconds to delay in state 'waiting' before + entering the state 'on'. This object follows the + ResettingTimer behavior. + + Configured values MUST survive an agent reboot." + REFERENCE "{ISIS.aoi waitingTime (15)}" + DEFVAL { 60 } + ::= { isisSysObject 7 } + + isisSysAdminState OBJECT-TYPE + SYNTAX IsisAdminState + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative state of this Intermediate + System. Setting this object to the value 'on' + when its current value is 'off' enables + the Intermediate System. + + Configured values MUST survive an agent reboot." + DEFVAL { off } + ::= { isisSysObject 8 } + + isisSysL2toL1Leaking OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If true, allow the router to leak L2 routes into L1. + + Configured values MUST survive an agent reboot." + DEFVAL { false } + ::= { isisSysObject 9 } + + isisSysMaxAge OBJECT-TYPE + SYNTAX IsisUnsigned16TC (350..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Value to place in RemainingLifeTime field of + the LSPs we generate. + This should be at least 300 seconds greater than + isisSysMaxLSPGenInt. + + Configured values MUST survive an agent reboot." + DEFVAL { 1200 } + ::= { isisSysObject 10 } + + isisSysReceiveLSPBufferSize OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1492..16000) + UNITS "bytes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Size of the largest buffer we are designed or + configured to store. This should be at least + as big as the maximum isisSysLevelOrigLSPBuffSize + supported by the system. + + + + If resources allow, we will store and flood LSPs + larger than isisSysReceiveLSPBufferSize, as this + can help avoid problems in networks with different + values for isisSysLevelOrigLSPBuffSize. + + Configured values MUST survive an agent reboot." + DEFVAL { 1492 } + ::= { isisSysObject 11 } + + isisSysProtSupported OBJECT-TYPE + SYNTAX BITS { + iso8473 (0), + ipv4 (1), + ipv6 (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute contains the set of protocols + supported by this Intermediate System." + ::= { isisSysObject 12 } + + isisSysNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is set to true(1), then it enables + the emission of IS-IS Notifications. If it is + set to false(2), these notifications are not sent. + + Configured values MUST survive an agent reboot." + DEFVAL { true } + ::= { isisSysObject 13 } + +-- The Level 1 Manual Area Address Table + + isisManAreaAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisManAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of manual area addresses configured on this + Intermediate System. + + At least one row in which the value of + isisManAreaAddrExistState is active must be present. + The maximum number of rows in this table for + + + + which the object isisManAreaAddrExistState has the + value active is 3. + + An attempt to create more than 3 rows of + isisManAreaAddrEntry with state 'active' in one + instance of the IS-IS protocol should + return inconsistentValue." + REFERENCE "{ISIS.aoi manualAreaAddresses (10)}" + ::= { isisSystem 2 } + + isisManAreaAddrEntry OBJECT-TYPE + SYNTAX IsisManAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one area address manually configured + on this system. + + Dynamically created rows MUST survive an agent reboot." + INDEX { isisManAreaAddr } + ::= { isisManAreaAddrTable 1 } + + IsisManAreaAddrEntry ::= + SEQUENCE { + isisManAreaAddr + IsisOSINSAddress, + isisManAreaAddrExistState + RowStatus + } + + isisManAreaAddr OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A manually configured area address for this system. + + Note: An index for the entry {1, {49.0001} active} in + this table would be the ordered pair + (1, (0x03 0x49 0x00 0x01)), as the length of an octet + string is part of the OID." + ::= { isisManAreaAddrEntry 1 } + + isisManAreaAddrExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The state of the isisManAreaAddrEntry. If the + isisSysAdminState for this Intermediate System is 'on' and + an attempt is made to set this object to the value + 'destroy' or 'notInService' when this is the only + isisManAreaAddrEntry in state 'active' for this + Intermediate System should return inconsistentValue. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisManAreaAddrEntry 2 } + +-- The Level 1 Area Address Table + +-- The Level 1 Area Address Table contains the +-- union of the sets of relevant area addresses configured +-- or learned from Level 1 LSPs received by this Intermediate System. + + isisAreaAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The union of the sets of area addresses reported in all + Level 1 LSPs with fragment number zero generated by this + Intermediate System, or received from other Intermediate + Systems that are reachable via Level 1 routing." + REFERENCE "{ISIS.aoi areaAddresses (18)}" + ::= { isisSystem 3 } + + isisAreaAddrEntry OBJECT-TYPE + SYNTAX IsisAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one area address reported in a + Level 1 LSP generated or received by this Intermediate + System. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisAreaAddr } + ::= { isisAreaAddrTable 1 } + + IsisAreaAddrEntry ::= + SEQUENCE { + isisAreaAddr + IsisOSINSAddress + } + + + + + isisAreaAddr OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An area address reported in a Level 1 LSP." + ::= { isisAreaAddrEntry 1 } + +-- The Summary Address Table + +-- The Summary Address Table contains the set of summary +-- addresses manually configured for the Intermediate System. +-- +-- This is used to control leaking L1 routes into L2. + + isisSummAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisSummAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of IP summary addresses to use in forming + summary TLVs originated by this Intermediate System. + + An administrator may use a summary address to combine + and modify IP Reachability announcements. If the + Intermediate system can reach any subset of the summary + address, the summary address MUST be announced instead, + at the configured metric." + ::= { isisSystem 4 } + + isisSummAddrEntry OBJECT-TYPE + SYNTAX IsisSummAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one IP summary address. + + Dynamically created rows MUST survive an agent reboot. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + isisSummAddress and isisSummAddrPrefixLen is too great, + then OIDs of column instances in this table will have + more than 128 subidentifiers and cannot be accessed + using SNMPv1, SNMPv2c, or SNMPv3." + INDEX { isisSummAddressType, + isisSummAddress, + isisSummAddrPrefixLen } + + + + ::= { isisSummAddrTable 1 } + + IsisSummAddrEntry ::= + SEQUENCE { + isisSummAddressType + InetAddressType, + isisSummAddress + InetAddress, + isisSummAddrPrefixLen + InetAddressPrefixLength, + isisSummAddrExistState + RowStatus, + isisSummAddrMetric + IsisDefaultMetric, + isisSummAddrFullMetric + IsisFullMetric + } + + isisSummAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Type of IP address for this summary address." + ::= { isisSummAddrEntry 1 } + + isisSummAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP Address value for this summary address. + The address must not contain any set host bits + (bits set after the address prefix determined by + isisSummAddrPrefixLen). + + The type of this address is determined by the value of + the isisSummAddressType object." + ::= { isisSummAddrEntry 2 } + + isisSummAddrPrefixLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Length of the IP NetMask for this summary address. + + The values for the index objects isisSummAddress and + + + + isisSummAddrPrefixLen must be consistent. When the value + of isisSummAddress (excluding the zone index, if one + is present) is x, then the bitwise logical-AND + of x with the value of the mask formed from the + corresponding index object isisSummAddrPrefixLen MUST be + equal to x. If not, then the index pair is not + consistent, and an inconsistentName error must be + returned on SET or CREATE requests." + ::= { isisSummAddrEntry 3 } + + isisSummAddrExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The existence state of this summary address. Support + for 'createAndWait' and 'notInService' is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisSummAddrEntry 4 } + + isisSummAddrMetric OBJECT-TYPE + SYNTAX IsisDefaultMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value to announce this summary + address within LSPs generated by this system." + DEFVAL { 20 } + ::= { isisSummAddrEntry 5 } + + isisSummAddrFullMetric OBJECT-TYPE + SYNTAX IsisFullMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The wide metric value to announce this summary + address within LSPs generated by this system." + DEFVAL { 20 } + ::= { isisSummAddrEntry 6 } + +-- The Redistribution table defines addresses that should be +-- leaked from L2 to L1 if isisSysL2toL1Leaking is enabled. + + isisRedistributeAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisRedistributeAddrEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table provides criteria to decide if a route should + be leaked from L2 to L1 when Domain Wide Prefix leaking is + enabled. + + Addresses that match the summary mask in the table MUST + be announced at L1 by routers when isisSysL2toL1Leaking + is enabled. Routes that fall into the ranges specified + are announced as is, without being summarized. Routes + that do not match a summary mask are not announced." + ::= { isisSystem 5 } + + isisRedistributeAddrEntry OBJECT-TYPE + SYNTAX IsisRedistributeAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one configured IP summary + address to manage leaking L2 addresses into L1. + + Dynamically created rows MUST survive an agent reboot. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + isisRedistributeAddrAddress and + isisRedistributeAddrPrefixLen is too great, then OIDs + of column instances in this table will have more than + 128 subidentifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + INDEX { isisRedistributeAddrType, + isisRedistributeAddrAddress, + isisRedistributeAddrPrefixLen } + ::= { isisRedistributeAddrTable 1 } + + IsisRedistributeAddrEntry ::= + SEQUENCE { + isisRedistributeAddrType + InetAddressType, + isisRedistributeAddrAddress + InetAddress, + isisRedistributeAddrPrefixLen + InetAddressPrefixLength, + isisRedistributeAddrExistState + RowStatus + } + + isisRedistributeAddrType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Type of IP address for this summary address." + ::= { isisRedistributeAddrEntry 1 } + + isisRedistributeAddrAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP Address value for this summary address. + The type of this address is determined by the + value of the isisRedistributeAddrType object. + The address must not contain any set host bits - + bits set after the address prefix determined by + isisRedistributeAddrPrefixLen." + + ::= { isisRedistributeAddrEntry 2 } + + isisRedistributeAddrPrefixLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Length of the IP NetMask for this summary address. + + The values for the index objects + isisRedistributeAddrAddress and + isisRedistributeAddrPrefixLen must be consistent. + When the value of isisRedistributeAddrAddress + (excluding the zone index, if one is present) is x, + then the bitwise logical-AND of x with the value of + the mask formed from the corresponding index object + isisRedistributeAddrPrefixLen MUST be equal to x. + If not, then the index pair is not consistent, and an + inconsistentName error must be returned on SET or + CREATE requests." + + ::= { isisRedistributeAddrEntry 3 } + + isisRedistributeAddrExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The existence state of this summary address. Support + + + + for createAndWait and notInService is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisRedistributeAddrEntry 4 } + +-- The Router Table keeps track of hostnames and router IDs +-- associated with Intermediate Systems in the area and domain. + + isisRouterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisRouterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of hostnames and router ID." + ::= { isisSystem 6 } + + isisRouterEntry OBJECT-TYPE + SYNTAX IsisRouterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry tracks information about one Intermediate + System at one level. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisRouterSysID, + isisRouterLevel } + ::= { isisRouterTable 1 } + + IsisRouterEntry ::= + SEQUENCE { + isisRouterSysID + IsisSystemID, + isisRouterLevel + IsisISLevel, + isisRouterHostName + SnmpAdminString, + isisRouterID + Unsigned32 + } + + isisRouterSysID OBJECT-TYPE + SYNTAX IsisSystemID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The System ID of the Intermediate System." + + + + ::= { isisRouterEntry 1 } + + isisRouterLevel OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level at which the information about this + Intermediate System was received." + ::= { isisRouterEntry 2 } + + isisRouterHostName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The hostname listed in the LSP, or a zero-length + string if none." + ::= { isisRouterEntry 3 } + + isisRouterID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Router ID found in the LSP, or zero if none." + ::= { isisRouterEntry 4 } + +-- The System Level Table +-- This table captures level-specific information about the system + + isisSysLevelTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisSysLevelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Level specific information about the System." + ::= { isisSysLevel 1 } + + isisSysLevelEntry OBJECT-TYPE + SYNTAX IsisSysLevelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row describes variables configured for Area or Domain. + + Configured values MUST survive an agent reboot." + INDEX { isisSysLevelIndex } + + + + ::= { isisSysLevelTable 1 } + + IsisSysLevelEntry ::= + SEQUENCE { + isisSysLevelIndex + IsisISLevel, + isisSysLevelOrigLSPBuffSize + IsisLSPBuffSize, + isisSysLevelMinLSPGenInt + IsisUnsigned16TC, + isisSysLevelState + IsisLevelState, + isisSysLevelSetOverload + TruthValue, + isisSysLevelSetOverloadUntil + Unsigned32, + isisSysLevelMetricStyle + IsisMetricStyle, + isisSysLevelSPFConsiders + IsisMetricStyle, + isisSysLevelTEEnabled + TruthValue + } + + isisSysLevelIndex OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level that this entry describes." + ::= { isisSysLevelEntry 1 } + + isisSysLevelOrigLSPBuffSize OBJECT-TYPE + SYNTAX IsisLSPBuffSize + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum size of LSPs and SNPs originated by + this Intermediate System at this level. This + object may not be modified when the isisSysAdminState + variable is in state 'on' for this Intermediate System." + REFERENCE "{ISIS.aoi originatingL1LSPBufferSize (9)}" + DEFVAL { 1492 } + ::= { isisSysLevelEntry 2 } + + isisSysLevelMinLSPGenInt OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + UNITS "seconds" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Minimum interval, in seconds, between successive + generation of LSPs with the same LSPID at this level + by this Intermediate System." + REFERENCE "{ISIS.aoi minimumLSPGenerationInterval (11)}" + DEFVAL { 30 } + ::= { isisSysLevelEntry 3 } + + isisSysLevelState OBJECT-TYPE + SYNTAX IsisLevelState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the database at this level. + The value 'off' indicates that IS-IS is not active at + this level. + The value 'on' indicates that IS-IS is active at this + level and is not overloaded. + The value 'waiting' indicates a database that is low on + an essential resource, such as memory. + The administrator may force the state to 'overloaded' + by setting the object isisSysLevelSetOverload. + If the state is 'waiting' or 'overloaded', we + originate LSPs with the overload bit set." + REFERENCE "{ISIS.aoi l1State (17)}" + ::= { isisSysLevelEntry 4 } + + isisSysLevelSetOverload OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Administratively set the overload bit for the level. + The overload bit MUST continue to be set if the + implementation runs out of memory, independent of + this variable. It may also be set manually independent + of this variable, using the isisSysLevelSetOverloadUntil + object." + DEFVAL { false } + ::= { isisSysLevelEntry 5 } + + isisSysLevelSetOverloadUntil OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Seconds until clearing manually set Overload Bit" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "If this object is non-zero, the overload bit is set at + this level when the isisSysAdminState variable goes to + state 'on' for this Intermediate System. The overload bit + remains set for isisSysLevelSetOverloadUntil seconds. + When isisSysLevelSetOverloadUntil seconds have elapsed, + the overload flag remains set if the implementation has + run out of memory, or if it is set manually using the + isisSysLevelSetOverload object. + + If isisSysLevelSetOverload is false, the system clears + the overload bit when isisSysLevelSetOverloadUntil seconds + have elapsed, if the system has not run out of memory." + ::= { isisSysLevelEntry 6 } + + isisSysLevelMetricStyle OBJECT-TYPE + SYNTAX IsisMetricStyle + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Which style of metric do we generate in our LSPs + at this level?" + DEFVAL { narrow } + ::= { isisSysLevelEntry 7 } + + isisSysLevelSPFConsiders OBJECT-TYPE + SYNTAX IsisMetricStyle + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Which style of metric do we consider in our + SPF computation at this level?" + DEFVAL { narrow } + ::= { isisSysLevelEntry 8 } + + isisSysLevelTEEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Do we do Traffic Engineering at this level?" + DEFVAL { false } + ::= { isisSysLevelEntry 9 } + +-- Static to provide next CircIndex + + isisNextCircIndex OBJECT-TYPE + SYNTAX IndexIntegerNextFree + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to assist a management + application in creating new rows in the + isisCircTable. If it is possible to create + a new instance of isisCircEntry, then this + object will contain a non-zero value that + is not in use as the index of any row in the + isisCircTable. The network manager reads the + value of this object and then (if the + value read is non-zero) attempts to create + the corresponding instance of isisCircEntry. + If the set request fails with the code + 'inconsistentValue', then the process must be + repeated; if the set request succeeds, then + the agent will change the value of this object + according to an implementation-specific + algorithm." + ::= { isisCirc 1 } + +-- The Circuit Table +-- Each broadcast or point-to-point interface on the system +-- corresponds to one entry in the Circuit table. However, there +-- may be multiple X.25 DA circuit entries in the Circuit table +-- for a given X.25 interface. + + isisCircTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisCircEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of circuits used by this + Intermediate System." + ::= { isisCirc 2 } + + isisCircEntry OBJECT-TYPE + SYNTAX IsisCircEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An isisCircEntry exists for each circuit configured + for Integrated IS-IS on this system. + + Dynamically created rows MUST survive an agent reboot." + INDEX { isisCircIndex } + ::= { isisCircTable 1 } + + + + + IsisCircEntry ::= + SEQUENCE { + isisCircIndex + IndexInteger, + isisCircIfIndex + InterfaceIndex, + isisCircAdminState + IsisAdminState, + isisCircExistState + RowStatus, + isisCircType + INTEGER, + isisCircExtDomain + TruthValue, + isisCircLevelType + IsisLevel, + isisCircPassiveCircuit + TruthValue, + isisCircMeshGroupEnabled + INTEGER, + isisCircMeshGroup + Unsigned32, + isisCircSmallHellos + TruthValue, + isisCircLastUpTime + TimeStamp, + isisCirc3WayEnabled + TruthValue, + isisCircExtendedCircID + Unsigned32 + } + + isisCircIndex OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index used to uniquely identify this circuit. + When creating a row in this table, the + isisNextCircIndex object should be retrieved, + and its value should be specified as the value + of this index using a SET operation. A retrieved + value of zero(0) indicates that no rows can be + created at this time." + ::= { isisCircEntry 1 } + + isisCircIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of ifIndex for the interface to which this + circuit corresponds. This object cannot be modified + after creation." + ::= { isisCircEntry 2 } + + isisCircAdminState OBJECT-TYPE + SYNTAX IsisAdminState + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative state of the circuit." + DEFVAL { off } + ::= { isisCircEntry 3 } + + isisCircExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The existence state of this circuit. Setting the state + to 'notInService' halts the generation and processing of + IS-IS protocol PDUs on this circuit. Setting the state + to destroy will also erase any configuration associated + with the circuit. Support for 'createAndWait' and + 'notInService' is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisCircEntry 4 } + + isisCircType OBJECT-TYPE + SYNTAX INTEGER + { + broadcast(1), + ptToPt(2), + staticIn(3), + staticOut(4), + dA(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the circuit. This object follows the + ReplaceOnlyWhileDisabled behavior. The type specified + must be compatible with the type of the interface defined + + + + by the value of isisCircIfIndex." + REFERENCE "{ISIS.aoi type (33)}" + ::= { isisCircEntry 5 } + + isisCircExtDomain OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If true, suppress normal transmission of and + interpretation of Intra-domain IS-IS PDUs on this + circuit." + REFERENCE "{ISIS.aoi externalDomain (46)}" + DEFVAL { false } + ::= { isisCircEntry 6 } + + isisCircLevelType OBJECT-TYPE + SYNTAX IsisLevel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates which type of packets will be sent and + accepted on this circuit. The values set will be + saved, but the values used will be modified by + the settings of isisSysLevelType. Thus, if the + isisSysTpe is level2 and the isisCircLevelType + for a circuit is level1, the circuit will not send + or receive IS-IS packets. This object follows the + ReplaceOnlyWhileDisabled behavior." + DEFVAL { level1and2 } + ::= { isisCircEntry 7 } + + isisCircPassiveCircuit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Should we include this interface in LSPs, even if + it is not running the IS-IS Protocol?" + DEFVAL { false } + ::= { isisCircEntry 8 } + + isisCircMeshGroupEnabled OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + blocked(2), + set(3) + + + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Is this port a member of a mesh group, or is it + blocked? Circuits in the same mesh group act as a + virtual multiaccess network. LSPs seen on one circuit + in a mesh group will not be flooded to another circuit + in the same mesh group." + REFERENCE "{ RFC 2973 }" + DEFVAL { inactive } + ::= { isisCircEntry 9 } + + isisCircMeshGroup OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Circuits in the same mesh group act as a virtual + multiaccess network. LSPs seen on one circuit in + a mesh group will not be flooded to another circuit + in the same mesh group. If isisCircMeshGroupEnabled + is inactive or blocked, this value is ignored." + REFERENCE "{ RFC 2973 }" + ::= { isisCircEntry 10 } + + isisCircSmallHellos OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Can we send unpadded hellos on LAN circuits? False + means the LAN Hellos must be padded. + Implementations should allow the administrator to read + this value. An implementation need not be able to + support unpadded hellos to be conformant." + DEFVAL { false } + ::= { isisCircEntry 11 } + + isisCircLastUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "How long the circuit has been enabled, measured in + hundredths of seconds since the last re-initialization + of the network management subsystem; 0 if the + circuit has never been 'on'." + + + + ::= { isisCircEntry 12 } + + isisCirc3WayEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Is this circuit enabled to run 3Way handshake?" + DEFVAL { true } + ::= { isisCircEntry 13 } + + isisCircExtendedCircID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be used as the extended circuit ID in + 3Way handshake. This value is only used if + isisCirc3WayEnabled is true, and it must be unique + across all circuits on this IS." + ::= { isisCircEntry 14 } + +-- The Circuit Level Table +-- This table captures level-specific information about a circuit + + isisCircLevelTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisCircLevelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Level specific information about circuits used by IS-IS." + ::= { isisCircLevelValues 1 } + + isisCircLevelEntry OBJECT-TYPE + SYNTAX IsisCircLevelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An isisCircLevelEntry exists for each level on + each circuit configured for Integrated IS-IS on + this system. + + Configured values MUST survive an agent reboot." + INDEX { isisCircIndex, + isisCircLevelIndex } + ::= { isisCircLevelTable 1 } + + IsisCircLevelEntry ::= + + + + SEQUENCE { + isisCircLevelIndex + IsisISLevel, + isisCircLevelMetric + IsisDefaultMetric, + isisCircLevelWideMetric + IsisWideMetric, + isisCircLevelISPriority + IsisISPriority, + isisCircLevelIDOctet + Unsigned32, + isisCircLevelID + IsisCircuitID, + isisCircLevelDesIS + IsisCircuitID, + isisCircLevelHelloMultiplier + Unsigned32, + isisCircLevelHelloTimer + Unsigned32, + isisCircLevelDRHelloTimer + Unsigned32, + isisCircLevelLSPThrottle + IsisUnsigned16TC, + isisCircLevelMinLSPRetransInt + Unsigned32, + isisCircLevelCSNPInterval + Unsigned32, + isisCircLevelPartSNPInterval + Unsigned32 + } + + isisCircLevelIndex OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level that this entry describes." + ::= { isisCircLevelEntry 1 } + + isisCircLevelMetric OBJECT-TYPE + SYNTAX IsisDefaultMetric + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The metric value of this circuit for this level." + REFERENCE "{ISIS.aoi l1DefaultMetric (35)}" + DEFVAL { 10 } + ::= { isisCircLevelEntry 2 } + + + + isisCircLevelWideMetric OBJECT-TYPE + SYNTAX IsisWideMetric + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The wide metric value of this circuit for this level." + DEFVAL { 10 } + ::= { isisCircLevelEntry 3 } + + isisCircLevelISPriority OBJECT-TYPE + SYNTAX IsisISPriority + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The priority for becoming the LAN-Designated + Intermediate System at this level." + REFERENCE "{ISIS.aoi l2IntermediateSystemPriority (73)}" + DEFVAL { 64 } + ::= { isisCircLevelEntry 4 } + + isisCircLevelIDOctet OBJECT-TYPE + SYNTAX Unsigned32(0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A one-byte identifier for the circuit selected by the + Intermediate System. + + On point-to-point circuits, the value is used as the Local + Circuit ID in point-to-point IIH PDUs transmitted on this + circuit. In this case, values of isisCircLevelIDOctet do + not need to be unique. + + For broadcast circuits, the value is used to generate the + LAN ID that will be used if this Intermediate System is + elected as the Designated IS on this circuit. The value + is required to differ on LANs where the Intermediate System + is the Designated Intermediate System." + ::= { isisCircLevelEntry 5 } + + isisCircLevelID OBJECT-TYPE + SYNTAX IsisCircuitID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "On a point-to-point circuit with a fully initialized + adjacency to a peer IS, the value of this object is + the circuit ID negotiated during adjacency initialization. + + + + On a point to point circuit without such an adjacency, + the value is the concatenation of the local system ID + and the one-byte isisCircLevelIDOctet for this circuit, + i.e., the value that would be proposed for the circuit ID. + On other circuit types, the value returned is the zero- + length OCTET STRING." + REFERENCE "{ISIS.aoi ptPtCircuitID (51)}" + ::= { isisCircLevelEntry 6 } + + isisCircLevelDesIS OBJECT-TYPE + SYNTAX IsisCircuitID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the LAN-Designated Intermediate System + on this circuit at this level. If, for any reason, + this system is not partaking in the relevant + Designated Intermediate System election process, + then the value returned is the zero-length OCTET STRING." + REFERENCE "{ISIS.aoi l2DesignatedIntermediateSystem (75)}" + ::= { isisCircLevelEntry 7 } + + isisCircLevelHelloMultiplier OBJECT-TYPE + SYNTAX Unsigned32 (2..100) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This value is multiplied by the corresponding HelloTimer, + and the result in seconds (rounded up) is used as the + holding time in transmitted hellos, to be used by + receivers of hello packets from this IS." + REFERENCE "{ISIS.aoi iSISHelloTimer (45)}" + DEFVAL { 10 } + ::= { isisCircLevelEntry 8 } + + isisCircLevelHelloTimer OBJECT-TYPE + SYNTAX Unsigned32 (10..600000) + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum period, in milliseconds, between IIH PDUs + on multiaccess networks at this level for LANs. + The value at L1 is used as the period between + Hellos on L1L2 point-to-point circuits. Setting + this value at level 2 on an L1L2 point-to-point + circuit will result in an error of InconsistentValue. + + + + + This object follows the ResettingTimer behavior." + REFERENCE "{ISIS.aoi iSISHelloTimer (45)}" + DEFVAL { 3000 } + ::= { isisCircLevelEntry 9 } + + isisCircLevelDRHelloTimer OBJECT-TYPE + SYNTAX Unsigned32 (10..120000) + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Period, in milliseconds, between Hello PDUs on + multiaccess networks when this IS is the Designated + Intermediate System. This object follows the + ResettingTimer behavior." + REFERENCE "{ISIS.aoi iSISHelloTimer (45)}" + DEFVAL { 1000 } + ::= { isisCircLevelEntry 10 } + + isisCircLevelLSPThrottle OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Minimal interval of time, in milliseconds, between + transmissions of LSPs on an interface at this level." + REFERENCE + "{ISIS.aoi minimumBroadcastLSPTransmissionInterval (5)}" + DEFVAL { 30 } + ::= { isisCircLevelEntry 11 } + + isisCircLevelMinLSPRetransInt OBJECT-TYPE + SYNTAX Unsigned32 (1..300) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Minimum interval, in seconds, between re-transmission of + an LSP at this level. This object follows the + ResettingTimer behavior. + + Note that isisCircLevelLSPThrottle controls + how fast we send back-to-back LSPs. This variable + controls how fast we re-send the same LSP." + REFERENCE "{ISIS.aoi minimumLSPTransmissionInterval (5)}" + DEFVAL { 5 } + ::= { isisCircLevelEntry 12 } + + + + isisCircLevelCSNPInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Interval of time, in seconds, between periodic + transmission of a complete set of CSNPs on + multiaccess networks if this router is the + designated router at this level. + This object follows the ResettingTimer behavior." + REFERENCE "{ISIS.aoi completeSNPInterval (8)}" + DEFVAL { 10 } + ::= { isisCircLevelEntry 13 } + + isisCircLevelPartSNPInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..120) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Minimum interval, in seconds, between sending Partial + Sequence Number PDUs at this level. This object + follows the ResettingTimer behavior." + REFERENCE "{ISIS.aoi partialSNPInterval (14)}" + DEFVAL { 2 } + ::= { isisCircLevelEntry 14 } + +-- isisSystemCounterTable keeps track of system-wide events. + + isisSystemCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisSystemCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "System-wide counters for this Intermediate System." + ::= { isisCounters 1 } + + isisSystemCounterEntry OBJECT-TYPE + SYNTAX IsisSystemCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "System-wide IS-IS counters." + INDEX { isisSysStatLevel } + ::= { isisSystemCounterTable 1 } + + IsisSystemCounterEntry ::= + + + + SEQUENCE { + isisSysStatLevel + IsisISLevel, + isisSysStatCorrLSPs + Counter32, + isisSysStatAuthTypeFails + Counter32, + isisSysStatAuthFails + Counter32, + isisSysStatLSPDbaseOloads + Counter32, + isisSysStatManAddrDropFromAreas + Counter32, + isisSysStatAttmptToExMaxSeqNums + Counter32, + isisSysStatSeqNumSkips + Counter32, + isisSysStatOwnLSPPurges + Counter32, + isisSysStatIDFieldLenMismatches + Counter32, + isisSysStatPartChanges + Counter32, + isisSysStatSPFRuns + Counter32, + isisSysStatLSPErrors + Counter32 + } + + isisSysStatLevel OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level that this entry describes." + ::= { isisSystemCounterEntry 1 } + + isisSysStatCorrLSPs OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of corrupted in-memory frames" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of corrupted in-memory LSPs detected. + + LSPs received from the wire with a bad checksum + are silently dropped and are not counted. + + + + + LSPs received from the wire with parse errors + are counted by isisSysStatLSPErrors." + REFERENCE "{ISIS.aoi corruptedLSPsDetected (19)}" + ::= { isisSystemCounterEntry 2 } + + isisSysStatAuthTypeFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with authentication type mismatches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of authentication type mismatches recognized + by this Intermediate System." + ::= { isisSystemCounterEntry 3 } + + isisSysStatAuthFails OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with authentication key failures" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of authentication key failures recognized + by this Intermediate System." + ::= { isisSystemCounterEntry 4 } + + isisSysStatLSPDbaseOloads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the LSP database has become + overloaded." + REFERENCE "{ISIS.aoi lSPL1DatabaseOverloads (20)}" + ::= { isisSystemCounterEntry 5 } + + isisSysStatManAddrDropFromAreas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times a manual address has been dropped from + the area." + REFERENCE "{ISIS.aoi manualAddressesDroppedFromArea (21)}" + ::= { isisSystemCounterEntry 6 } + + isisSysStatAttmptToExMaxSeqNums OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Number of times the IS has attempted to exceed the + maximum sequence number." + REFERENCE + "{ISIS.aoi attemptsToExceedmaximumSequenceNumber (22)}" + ::= { isisSystemCounterEntry 7 } + + isisSysStatSeqNumSkips OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times a sequence number skip has occurred." + REFERENCE "{ISIS.aoi sequenceNumberSkips (23)}" + ::= { isisSystemCounterEntry 8 } + + isisSysStatOwnLSPPurges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times a zero-aged copy of the system's own LSP + is received from some other node." + REFERENCE "{ISIS.aoi ownLSPPurges (24)}" + ::= { isisSystemCounterEntry 9 } + + isisSysStatIDFieldLenMismatches OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with ID length mismatches" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times a PDU is received with a different value + for ID field length from that of the receiving system." + REFERENCE "{ISIS.aoi iDFieldLengthMismatches (25)}" + ::= { isisSystemCounterEntry 10 } + + isisSysStatPartChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Partition changes." + ::= { isisSystemCounterEntry 11 } + + isisSysStatSPFRuns OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times we ran SPF at this level." + ::= { isisSystemCounterEntry 12 } + + isisSysStatLSPErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with errors that we have received" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of LSPs with errors we have received." + ::= { isisSystemCounterEntry 13 } + +-- isisCircuitCounterTable keeps track of events +-- specific to a circuit and a level + + isisCircuitCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisCircuitCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Circuit specific counters for this + Intermediate System." + ::= { isisCounters 2 } + + isisCircuitCounterEntry OBJECT-TYPE + SYNTAX IsisCircuitCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An isisCircuitCounterEntry exists for each circuit + used by Integrated IS-IS on this system." + INDEX { isisCircIndex, + isisCircuitType } + ::= { isisCircuitCounterTable 1 } + + IsisCircuitCounterEntry ::= SEQUENCE { + isisCircuitType + INTEGER, + isisCircAdjChanges + Counter32, + isisCircNumAdj + Unsigned32, + isisCircInitFails + Counter32, + isisCircRejAdjs + + + + Counter32, + isisCircIDFieldLenMismatches + Counter32, + isisCircMaxAreaAddrMismatches + Counter32, + isisCircAuthTypeFails + Counter32, + isisCircAuthFails + Counter32, + isisCircLANDesISChanges + Counter32 + } + + isisCircuitType OBJECT-TYPE + SYNTAX INTEGER + { + lanlevel1(1), + lanlevel2(2), + p2pcircuit(3) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "What type of circuit saw these counts? + + The point-to-point Hello PDU includes + both L1 and L2, and ISs form a single + adjacency on point-to-point links. + Thus, we combine counts on + point-to-point links into one group." + ::= { isisCircuitCounterEntry 1 } + + isisCircAdjChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an adjacency state change has + occurred on this circuit." + REFERENCE "{ISIS.aoi changesInAdjacencyState (40)}" + ::= { isisCircuitCounterEntry 2 } + + isisCircNumAdj OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of adjacencies on this circuit." + + + + REFERENCE "{ISIS.aoi changesInAdjacencyState (40)}" + ::= { isisCircuitCounterEntry 3 } + + isisCircInitFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times initialization of this circuit has + failed. This counts events such as PPP NCP failures. + Failures to form an adjacency are counted by + isisCircRejAdjs." + ::= { isisCircuitCounterEntry 4 } + + isisCircRejAdjs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an adjacency has been rejected on + this circuit." + REFERENCE "{ISIS.aoi rejectedAdjacencies (42)}" + ::= { isisCircuitCounterEntry 5 } + + isisCircIDFieldLenMismatches OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of frames with ID field length mismatch" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an IS-IS control PDU with an ID + field length different from that for this system has been + received." + REFERENCE "{ISIS.aoi iDFieldLengthMismatches (25)}" + ::= { isisCircuitCounterEntry 6 } + + isisCircMaxAreaAddrMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an IS-IS control PDU with a + max area address field different from that for this + system has been received." + REFERENCE "{ISIS.aoi iDFieldLengthMismatches (25)}" + ::= { isisCircuitCounterEntry 7 } + + isisCircAuthTypeFails OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an IS-IS control PDU with + an auth type field different from that for this + system has been received." + ::= { isisCircuitCounterEntry 8 } + + isisCircAuthFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an IS-IS control PDU with + the correct auth type has failed to pass authentication + validation." + ::= { isisCircuitCounterEntry 9 } + + isisCircLANDesISChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the Designated IS has changed + on this circuit at this level. If the circuit is + point to point, this count is zero." + ::= { isisCircuitCounterEntry 10 } + +-- isisPacketCounterTable keeps track of the number of IS-IS +-- control packets sent and received at each level + + isisPacketCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisPacketCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about IS-IS protocol traffic at one level, + on one circuit, in one direction." + ::= { isisCounters 3 } + + isisPacketCounterEntry OBJECT-TYPE + SYNTAX IsisPacketCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about IS-IS protocol traffic at one level, + on one circuit, in one direction." + + + + INDEX { isisCircIndex, + isisPacketCountLevel, + isisPacketCountDirection } + ::= { isisPacketCounterTable 1 } + + IsisPacketCounterEntry ::= + SEQUENCE { + isisPacketCountLevel + IsisISLevel, + isisPacketCountDirection + INTEGER, + isisPacketCountIIHello + Counter32, + isisPacketCountISHello + Counter32, + isisPacketCountESHello + Counter32, + isisPacketCountLSP + Counter32, + isisPacketCountCSNP + Counter32, + isisPacketCountPSNP + Counter32, + isisPacketCountUnknown + Counter32 + } + + isisPacketCountLevel OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The level at which these PDU counts have been collected." + ::= { isisPacketCounterEntry 1 } + + isisPacketCountDirection OBJECT-TYPE + SYNTAX INTEGER + { + sending(1), + receiving(2) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Were we sending or receiving these PDUs?" + ::= { isisPacketCounterEntry 2 } + + isisPacketCountIIHello OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "Number of IS-IS Hellos frames seen in this direction + at this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IS-IS Hello PDUs seen in this + direction at this level. + + Point-to-Point IIH PDUs are counted at + the lowest enabled level: at L1 on L1 or L1L2 circuits, + and at L2 otherwise." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 3 } + + isisPacketCountISHello OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of ES-IS frames seen in this direction at + this level." + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ES-IS Hello PDUs seen in this + direction. ISH PDUs are counted at the + lowest enabled level: at L1 on L1 or L1L2 + circuits, and at L2 otherwise." + ::= { isisPacketCounterEntry 4 } + + isisPacketCountESHello OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of ES Hello frames seen in this direction at + this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ES Hello PDUs seen in this + direction. ESH PDUs are counted at the + lowest enabled level: at L1 on L1 or L1L2 + circuits, and at L2 otherwise." + ::= { isisPacketCounterEntry 5 } + + isisPacketCountLSP OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of IS-IS LSP frames seen in this direction at + this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of IS-IS LSPs seen in this + direction at this level." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 6 } + + isisPacketCountCSNP OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of IS-IS CSNP frames seen in this direction at + this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IS-IS CSNPs seen in this + direction at this level." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 7 } + + isisPacketCountPSNP OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of IS-IS PSNP frames seen in this direction at + this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IS-IS PSNPs seen in this + direction at this level." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 8 } + + isisPacketCountUnknown OBJECT-TYPE + SYNTAX Counter32 + UNITS "Number of unknown IS-IS frames seen at this level" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of unknown IS-IS PDUs seen + at this level." + REFERENCE "{ISIS.aoi iSISControlPDUsSent (43)}" + ::= { isisPacketCounterEntry 9 } + +-- The IS Adjacency Table +-- +-- Each adjacency to an IS corresponds to one entry in this +-- table. + + isisISAdjTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisISAdjEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The table of adjacencies to Intermediate Systems." + ::= { isisISAdj 1 } + + isisISAdjEntry OBJECT-TYPE + SYNTAX IsisISAdjEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to one adjacency to an + Intermediate System on this system. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisCircIndex, + isisISAdjIndex } + ::= { isisISAdjTable 1 } + + IsisISAdjEntry ::= + SEQUENCE { + isisISAdjIndex + Unsigned32, + isisISAdjState + INTEGER, + isisISAdj3WayState + INTEGER, + isisISAdjNeighSNPAAddress + IsisOSINSAddress, + isisISAdjNeighSysType + INTEGER, + isisISAdjNeighSysID + IsisSystemID, + isisISAdjNbrExtendedCircID + Unsigned32, + isisISAdjUsage + IsisLevel, + isisISAdjHoldTimer + IsisUnsigned16TC, + isisISAdjNeighPriority + IsisISPriority, + isisISAdjLastUpTime + TimeStamp + } + + isisISAdjIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A unique value identifying the IS adjacency from all + other such adjacencies on this circuit. This value is + automatically assigned by the system when the adjacency + is created." + ::= { isisISAdjEntry 1 } + + isisISAdjState OBJECT-TYPE + SYNTAX INTEGER + { + down (1), + initializing (2), + up (3), + failed(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the adjacency." + REFERENCE "{ISIS.aoi adjacencyState (78)}" + ::= { isisISAdjEntry 2 } + + isisISAdj3WayState OBJECT-TYPE + SYNTAX INTEGER + { + up (0), + initializing (1), + down (2), + failed (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 3Way state of the adjacency. These are picked + to match the historical on-the-wire representation + of the 3Way state and are not intended to match + isisISAdjState." + REFERENCE "{ RFC 3373 }" + ::= { isisISAdjEntry 3 } + + isisISAdjNeighSNPAAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SNPA address of the neighboring system." + REFERENCE "{ISIS.aoi neighbourSNPAAddress (79)}" + ::= { isisISAdjEntry 4 } + + + + isisISAdjNeighSysType OBJECT-TYPE + SYNTAX INTEGER + { + l1IntermediateSystem(1), + l2IntermediateSystem(2), + l1L2IntermediateSystem(3), + unknown(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the neighboring system." + REFERENCE "{ISIS.aoi neighbourSystemType (80)}" + ::= { isisISAdjEntry 5 } + + isisISAdjNeighSysID OBJECT-TYPE + SYNTAX IsisSystemID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system ID of the neighboring Intermediate + System." + REFERENCE "{ISIS.aoi neighbourSystemIds (83)}" + ::= { isisISAdjEntry 6 } + + isisISAdjNbrExtendedCircID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 4-byte Extended Circuit ID learned from the + Neighbor during 3-way handshake, or 0." + ::= { isisISAdjEntry 7 } + + isisISAdjUsage OBJECT-TYPE + SYNTAX IsisLevel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "How is the adjacency used? On a point-to-point link, + this might be level1and2, but on a LAN, the usage will + be level1 on the adjacency between peers at L1, + and level2 for the adjacency between peers at L2." + REFERENCE "{ISIS.aoi adjacencyUsage (82)}" + ::= { isisISAdjEntry 8 } + + isisISAdjHoldTimer OBJECT-TYPE + SYNTAX IsisUnsigned16TC (1..65535) + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The holding time, in seconds, for this adjacency. + This value is based on received IIH PDUs and + the elapsed time since receipt." + REFERENCE "{ISIS.aoi holdingTimer (85)}" + ::= { isisISAdjEntry 9 } + + isisISAdjNeighPriority OBJECT-TYPE + SYNTAX IsisISPriority + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Priority of the neighboring Intermediate System for + becoming the Designated Intermediate System." + REFERENCE "{ISIS.aoi lANPriority (86)}" + ::= { isisISAdjEntry 10 } + + isisISAdjLastUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the adjacency most recently entered the state 'up', + measured in hundredths of a second since the last + re-initialization of the network management subsystem. + Holds 0 if the adjacency has never been in state 'up'." + ::= { isisISAdjEntry 11 } + +-- The IS Adjacency Area Address Table + +-- The IS Adjacency Area Address Table contains the set of +-- Area Addresses of neighboring +-- Intermediate Systems as reported in IIH PDUs. + + isisISAdjAreaAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisISAdjAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the set of Area Addresses of + neighboring Intermediate Systems as reported in received + IIH PDUs." + REFERENCE "{ISIS.aoi areaAddressesOfNeighbour (84)}" + ::= { isisISAdj 2 } + + + + + isisISAdjAreaAddrEntry OBJECT-TYPE + SYNTAX IsisISAdjAreaAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one Area Address reported by a + neighboring Intermediate System in its IIH PDUs. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisCircIndex, + isisISAdjIndex, + isisISAdjAreaAddrIndex } + ::= { isisISAdjAreaAddrTable 1 } + + IsisISAdjAreaAddrEntry ::= + SEQUENCE { + isisISAdjAreaAddrIndex + Unsigned32, + isisISAdjAreaAddress + IsisOSINSAddress + } + + isisISAdjAreaAddrIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index for the areas associated with one neighbor. + This provides a simple way to walk the table." + ::= { isisISAdjAreaAddrEntry 1 } + + isisISAdjAreaAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One Area Address as reported in IIH PDUs received from + the neighbor." + ::= { isisISAdjAreaAddrEntry 2 } + +-- The IS Adjacency IP Address Table + +-- The IS Adjacency IP Address Table contains the +-- set of IP Addresses of neighboring Intermediate Systems +-- as reported in received IIH PDUs. + + isisISAdjIPAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisISAdjIPAddrEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the set of IP Addresses of + neighboring Intermediate Systems as reported in received + IIH PDUs." + ::= { isisISAdj 3 } + + isisISAdjIPAddrEntry OBJECT-TYPE + SYNTAX IsisISAdjIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one IP Address reported by a + neighboring Intermediate System in its IIH PDUs. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisCircIndex, + isisISAdjIndex, + isisISAdjIPAddrIndex + } + ::= { isisISAdjIPAddrTable 1 } + + IsisISAdjIPAddrEntry ::= + SEQUENCE { + isisISAdjIPAddrIndex + Unsigned32, + isisISAdjIPAddrType + InetAddressType, + isisISAdjIPAddrAddress + InetAddress + } + + isisISAdjIPAddrIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index to this table that identifies the IP addresses + to which this entry belongs." + ::= { isisISAdjIPAddrEntry 1 } + + isisISAdjIPAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of one IP Address as reported in IIH PDUs + + + + received from the neighbor." + ::= { isisISAdjIPAddrEntry 2 } + + isisISAdjIPAddrAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One IP Address as reported in IIH PDUs received from the + neighbor. + + The type of this address is determined by the value of + the isisISAdjIPAddrType object." + ::= { isisISAdjIPAddrEntry 3 } + +-- The IS Adjacency Protocol Supported Table +-- +-- The IS Adjacency Protocol Supported Table contains the set of +-- protocols supported by neighboring +-- Intermediate Systems as reported in received IIH PDUs. + + isisISAdjProtSuppTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisISAdjProtSuppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the set of protocols supported by + neighboring Intermediate Systems as reported in received + IIH PDUs." + ::= { isisISAdj 4 } + + isisISAdjProtSuppEntry OBJECT-TYPE + SYNTAX IsisISAdjProtSuppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains one protocol supported by a + neighboring Intermediate System as reported in its IIH + PDUs. + + Dynamically learned rows do not survive an agent reboot." + INDEX { isisCircIndex, + isisISAdjIndex, + isisISAdjProtSuppProtocol } + ::= { isisISAdjProtSuppTable 1 } + + IsisISAdjProtSuppEntry ::= + SEQUENCE { + + + + isisISAdjProtSuppProtocol + IsisSupportedProtocol + } + + isisISAdjProtSuppProtocol OBJECT-TYPE + SYNTAX IsisSupportedProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "One supported protocol as reported in IIH PDUs received + from the neighbor." + ::= { isisISAdjProtSuppEntry 1 } + +-- The Reachable Address Group +-- +-- The Reachable Address Table +-- Each entry records information about a reachable address +-- (NSAP or address prefix) manually configured on the system +-- or learned through another protocol. + + isisRATable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisRAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of Reachable Addresses to NSAPs or Address + Prefixes." + ::= { isisReachAddr 1 } + + isisRAEntry OBJECT-TYPE + SYNTAX IsisRAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry defines a configured Reachable Address + to an NSAP or Address Prefix. + + Dynamically created rows MUST survive an agent reboot." + INDEX { isisCircIndex, + isisRAIndex } + ::= { isisRATable 1 } + + IsisRAEntry ::= + SEQUENCE { + isisRAIndex + Unsigned32, + isisRAExistState + RowStatus, + + + + isisRAAdminState + IsisAdminState, + isisRAAddrPrefix + IsisOSINSAddress, + isisRAMapType + INTEGER, + isisRAMetric + IsisDefaultMetric, + isisRAMetricType + IsisMetricType, + isisRASNPAAddress + IsisOSINSAddress, + isisRASNPAMask + IsisOSINSAddress, + isisRASNPAPrefix + IsisOSINSAddress, + isisRAType + INTEGER + } + + isisRAIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier for this isisRAEntry. This value must be + unique amongst all Reachable Addresses on the same parent + Circuit." + ::= { isisRAEntry 1 } + + isisRAExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The existence state of this Reachable Address. This + object follows the ManualOrAutomatic behaviors. Support + for 'createAndWait' and 'notInService' is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisRAEntry 2 } + + isisRAAdminState OBJECT-TYPE + SYNTAX IsisAdminState + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The administrative state of the Reachable Address. This + object follows the ManualOrAutomatic behaviors." + DEFVAL { off } + ::= { isisRAEntry 3 } + + isisRAAddrPrefix OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination of this Reachable Address. This is an + Address Prefix. This object follows the + ReplaceOnlyWhileDisabled and ManualOrAutomatic + behaviors." + REFERENCE "{ISIS.aoi addressPrefix (98)}" + ::= { isisRAEntry 4 } + + isisRAMapType OBJECT-TYPE + SYNTAX INTEGER + { + none (1), + explicit (2), + extractIDI (3), + extractDSP (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of mapping to be employed to ascertain the SNPA + Address that should be used in forwarding PDUs for this + Reachable Address prefix. This object follows the + ManualOrAutomatic behavior. The following values of + mapping type are defined: + + none: The mapping is null because the neighbor SNPA is + implicit by nature of the subnetwork (e.g., a + point-to-point linkage). + + explicit: The subnetwork addresses in the object + isisRASNPAAddress are to be used. + + extractIDI: The SNPA is embedded in the IDI of + the destination NSAP Address. The mapping + algorithm extracts the SNPA to be used + according to the format and encoding rules of + ISO8473/Add2. This SNPA extraction algorithm can + be used in conjunction with Reachable Address + prefixes from the X.121, F.69, E.163, and E.164 + + + + addressing subdomains. + + extractDSP: All, or a suffix, of the SNPA is embedded + in the DSP of the destination address. This SNPA + extraction algorithm extracts the embedded + subnetwork addressing information by performing a + logical AND of the isisRASNPAMask object value + with the destination address. The part of the + SNPA extracted from the destination NSAP is + appended to the isisRASNPAPrefix object value to + form the next hop subnetwork addressing + information." + + REFERENCE "{ISO10589-ISIS.aoi mappingType (107)}" + ::= { isisRAEntry 5 } + + isisRAMetric OBJECT-TYPE + SYNTAX IsisDefaultMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value for reaching the specified + prefix over this circuit. This object follows the + ManualOrAutomatic behavior." + REFERENCE "{ISIS.aoi DefaultMetric (99)}" + DEFVAL { 20 } + ::= { isisRAEntry 6 } + + isisRAMetricType OBJECT-TYPE + SYNTAX IsisMetricType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the metric is internal or + external. This object follows the ManualOrAutomatic + behavior." + REFERENCE "{ISIS.aoi DefaultMetricType (103)}" + DEFVAL { internal } + ::= { isisRAEntry 7 } + + isisRASNPAAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SNPA Address to which a PDU may be forwarded in + order to reach a destination that matches the address + prefix of the Reachable Address. This object follows the + + + + ManualOrAutomatic behavior." + REFERENCE "{ISIS.aoi sNPAAddresses (109)}" +-- Note only one address may be specified per Reachable Address +-- in the MIB + DEFVAL { ''H } + ::= { isisRAEntry 8 } + + isisRASNPAMask OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A bit mask with 1 bit indicating the positions in the + effective destination address from which embedded SNPA + information is to be extracted. For the extraction, the + first octet of the isisRASNPAMask object value is aligned + with the first octet (AFI) of the NSAP Address. If the + isisRASNPAMask object value and NSAP Address are of + different lengths, the shorter of the two is logically + padded with zeros before performing the extraction. This + object follows the ManualOrAutomatic behavior." + REFERENCE "{ISIS.aoi sNPAMask (122)}" + DEFVAL { '00'H } + ::= { isisRAEntry 9 } + + isisRASNPAPrefix OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A fixed SNPA prefix for use when the isisRAMapType is + extractDSP. The SNPA Address to use is formed by + concatenating the fixed SNPA prefix with a variable SNPA + part that is extracted from the effective destination + address. For Reachable Address prefixes in which the + entire SNPA is embedded in the DSP, the SNPA Prefix shall + be null. This object follows the ManualOrAutomatic + behavior." + REFERENCE "{ISIS.aoi sNPAPrefix (123)}" + DEFVAL { '00'H } + ::= { isisRAEntry 10 } + + isisRAType OBJECT-TYPE + SYNTAX INTEGER + { + manual (1), + automatic (2) + } + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Reachable address. Those of type + manual are created by the network manager. Those + of type automatic are created through propagation + of routing information from another routing + protocol (e.g., IDRP). " + DEFVAL {manual} + ::= {isisRAEntry 11 } + + +-- The IP Reachable Address Table + +-- Each entry records information about one IP reachable +-- address manually configured on this system or learned from +-- another protocol. + + isisIPRATable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisIPRAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of IP Reachable Addresses to networks, + subnetworks, or hosts either manually configured or + learned from another protocol." + ::= { isisIPReachAddr 1 } + + isisIPRAEntry OBJECT-TYPE + SYNTAX IsisIPRAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry defines an IP Reachable Address to a network, + subnetwork, or host. + + Each IP Reachable Address may have multiple entries in the + table, one for each equal cost path to the reachable + address. + + Dynamically created rows MUST survive an agent reboot. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + isisIPRADestr, isisIPRADestPrefixLen, and + isisIPRANextHopIndex is too great, then OIDs of column + instances in this table will have more than 128 + subidentifiers and cannot be accessed using SNMPv1, + + + + SNMPv2c, or SNMPv3." + INDEX { isisSysLevelIndex, + isisIPRADestType, + isisIPRADest, + isisIPRADestPrefixLen, + isisIPRANextHopIndex } + ::= { isisIPRATable 1 } + + IsisIPRAEntry ::= + SEQUENCE { + isisIPRADestType + InetAddressType, + isisIPRADest + InetAddress, + isisIPRADestPrefixLen + InetAddressPrefixLength, + isisIPRANextHopIndex + Unsigned32, + isisIPRANextHopType + InetAddressType, + isisIPRANextHop + InetAddress, + isisIPRAType + INTEGER, + isisIPRAExistState + RowStatus, + isisIPRAAdminState + IsisAdminState, + isisIPRAMetric + IsisDefaultMetric, + isisIPRAMetricType + IsisMetricType, + isisIPRAFullMetric + IsisFullMetric, + isisIPRASNPAAddress + IsisOSINSAddress, + isisIPRASourceType + INTEGER + } + + isisIPRADestType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of this IP Reachable Address." + ::= { isisIPRAEntry 1 } + + + + + isisIPRADest OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination of this IP Reachable Address. This is + a network address, subnetwork address, or host + address. + + The type of this address is determined by the value of + the isisIPRADestType object." + + ::= { isisIPRAEntry 2 } + + isisIPRADestPrefixLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The length of the IP Netmask for Reachability Address. + + The values for the index objects isisIPRADest and + isisIPRADestPrefixLen must be consistent. When the value + of isisIPRADest (excluding the zone index, if one + is present) is x, then the bitwise logical-AND + of x with the value of the mask formed from the + corresponding index object isisIPRADestPrefixLen MUST be + equal to x. If not, then the index pair is not + consistent, and an inconsistentName error must be + returned on SET or CREATE requests." + ::= { isisIPRAEntry 3 } + + isisIPRANextHopIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of next hop. Used when there are multiple Equal + Cost Multipath alternatives for the same destination." + ::= { isisIPRAEntry 4 } + + isisIPRANextHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the IP next hop address." + ::= { isisIPRAEntry 5 } + + + + isisIPRANextHop OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP next hop to this destination. + + The type of this address is determined by the value of + the isisIPRANextHopType object." + ::= { isisIPRAEntry 6 } + + isisIPRAType OBJECT-TYPE + SYNTAX INTEGER + { + manual (1), + automatic (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of this IP Reachable Address. Those of type + manual are created by the network manager. Those of type + automatic are created through propagation of routing + information from another routing protocol. This object + follows the ManualOrAutomatic behavior." + ::= { isisIPRAEntry 7 } + + isisIPRAExistState OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The state of this IP Reachable Address. This object + follows the ExistenceState and ManualOrAutomatic + behaviors. Support for 'createAndWait' and + 'notInService' is not required. + + A row entry cannot be modified when the value of this + object is 'active'." + ::= { isisIPRAEntry 8 } + + isisIPRAAdminState OBJECT-TYPE + SYNTAX IsisAdminState + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative state of the IP Reachable Address. This + object follows the IsisAdminState and ManualOrAutomatic + + + + behaviors." + DEFVAL { off } + ::= { isisIPRAEntry 9 } + + isisIPRAMetric OBJECT-TYPE + SYNTAX IsisDefaultMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value for reaching the specified + destination over this circuit. This object follows the + ManualOrAutomatic behavior." + DEFVAL { 10 } + ::= { isisIPRAEntry 10 } + + isisIPRAMetricType OBJECT-TYPE + SYNTAX IsisMetricType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the metric is internal or + external. This object follows the ManualOrAutomatic + behavior." + DEFVAL { internal } + ::= { isisIPRAEntry 11 } + + isisIPRAFullMetric OBJECT-TYPE + SYNTAX IsisFullMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The wide metric value for reaching the specified + destination over this circuit. This object follows the + ManualOrAutomatic behavior." + DEFVAL { 10 } + ::= { isisIPRAEntry 12 } + + isisIPRASNPAAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SNPA Address to which a PDU may be forwarded in + order to reach a destination that matches this IP + Reachable Address. This object follows the + ManualOrAutomatic behavior." + DEFVAL { ''H } + ::= { isisIPRAEntry 13 } + + + + isisIPRASourceType OBJECT-TYPE + SYNTAX INTEGER + { + static (1), + direct (2), + ospfv2 (3), + ospfv3 (4), + isis (5), + rip (6), + igrp (7), + eigrp (8), + bgp (9), + other (10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The origin of this route." + ::= { isisIPRAEntry 14 } + +-- The LSP Database Table +-- +-- The first table provides Summary Information about LSPs +-- The next table provides a complete record + + isisLSPSummaryTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisLSPSummaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of LSP Headers." + ::= { isisLSPDataBase 1 } + + isisLSPSummaryEntry OBJECT-TYPE + SYNTAX IsisLSPSummaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry provides a summary describing an + LSP currently stored in the system. + + Dynamically learned rows will not survive an + agent reboot." + INDEX { isisLSPLevel, + isisLSPID } + ::= { isisLSPSummaryTable 1 } + + IsisLSPSummaryEntry ::= + + + + SEQUENCE { + isisLSPLevel + IsisISLevel, + isisLSPID + IsisLinkStatePDUID, + isisLSPSeq + Unsigned32, + isisLSPZeroLife + TruthValue, + isisLSPChecksum + IsisUnsigned16TC, + isisLSPLifetimeRemain + IsisUnsigned16TC, + isisLSPPDULength + IsisUnsigned16TC, + isisLSPAttributes + IsisUnsigned8TC + } + + isisLSPLevel OBJECT-TYPE + SYNTAX IsisISLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "At which level does this LSP appear?" + ::= { isisLSPSummaryEntry 1 } + + isisLSPID OBJECT-TYPE + SYNTAX IsisLinkStatePDUID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 8-byte LSP ID for this Link State PDU." + ::= { isisLSPSummaryEntry 2 } + + isisLSPSeq OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number for this LSP." + ::= { isisLSPSummaryEntry 3 } + + isisLSPZeroLife OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Is this LSP being purged by this system?" + ::= { isisLSPSummaryEntry 4 } + + isisLSPChecksum OBJECT-TYPE + SYNTAX IsisUnsigned16TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 16-bit Fletcher Checksum for this LSP." + ::= { isisLSPSummaryEntry 5 } + + isisLSPLifetimeRemain OBJECT-TYPE + SYNTAX IsisUnsigned16TC + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remaining lifetime, in seconds, for this LSP." + ::= { isisLSPSummaryEntry 6 } + + isisLSPPDULength OBJECT-TYPE + SYNTAX IsisUnsigned16TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of this LSP." + ::= { isisLSPSummaryEntry 7 } + + isisLSPAttributes OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Flags carried by the LSP." + ::= { isisLSPSummaryEntry 8 } + +-- LSP Table +-- +-- The full LSP as a sequence of {Type, Len, Value} tuples +-- Since the underlying LSP may have changed while downloading +-- TLVs, we provide the Sequence number and Checksum for each +-- LSP TLV, so the network manager may verify that they are +-- still working on the same version of the LSP. + + isisLSPTLVTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsisLSPTLVEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The table of LSPs in the database." + ::= { isisLSPDataBase 2 } + + isisLSPTLVEntry OBJECT-TYPE + SYNTAX IsisLSPTLVEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry describes a TLV within + an LSP currently stored in the system. + + Dynamically learned rows will not survive an + agent reboot." + INDEX { isisLSPLevel, + isisLSPID, + isisLSPTLVIndex } + ::= { isisLSPTLVTable 1 } + + IsisLSPTLVEntry ::= + SEQUENCE { + isisLSPTLVIndex + Unsigned32, + isisLSPTLVSeq + Unsigned32, + isisLSPTLVChecksum + IsisUnsigned16TC, + isisLSPTLVType + IsisUnsigned8TC, + isisLSPTLVLen + IsisUnsigned8TC, + isisLSPTLVValue + OCTET STRING + } + + isisLSPTLVIndex OBJECT-TYPE + SYNTAX Unsigned32(1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this TLV in the LSP. The first TLV has + index 1, and the Nth TLV has an index of N." + ::= { isisLSPTLVEntry 1 } + + isisLSPTLVSeq OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The sequence number for this LSP." + ::= { isisLSPTLVEntry 2 } + + isisLSPTLVChecksum OBJECT-TYPE + SYNTAX IsisUnsigned16TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 16-bit Fletcher Checksum for this LSP." + ::= { isisLSPTLVEntry 3 } + + isisLSPTLVType OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this TLV." + ::= { isisLSPTLVEntry 4 } + + isisLSPTLVLen OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of this TLV." + ::= { isisLSPTLVEntry 5 } + + isisLSPTLVValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this TLV." + ::= { isisLSPTLVEntry 6 } + + +-- The IS-IS Notification Table + +-- The IS-IS Notification Table records fields that are +-- required for notifications + + isisNotificationEntry OBJECT IDENTIFIER + ::= { isisNotification 1 } + + isisNotificationSysLevelIndex OBJECT-TYPE + SYNTAX IsisLevel + MAX-ACCESS accessible-for-notify + + + + STATUS current + DESCRIPTION + "The system level for this notification." + ::= { isisNotificationEntry 1 } + + isisNotificationCircIfIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The identifier of this circuit relevant to + this notification." + ::= { isisNotificationEntry 2 } + + isisPduLspId OBJECT-TYPE + SYNTAX IsisLinkStatePDUID + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "An Octet String that uniquely identifies + a Link State PDU." + ::= { isisNotificationEntry 3 } + + isisPduFragment OBJECT-TYPE + SYNTAX IsisPDUHeader + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds up to 64 initial bytes of a PDU that + triggered the notification." + ::= { isisNotificationEntry 4 } + + isisPduFieldLen OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the System ID length reported in PDU we received." + ::= { isisNotificationEntry 5 } + + isisPduMaxAreaAddress OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the Max Area Addresses reported in a PDU + we received." + ::= { isisNotificationEntry 6 } + + + + isisPduProtocolVersion OBJECT-TYPE + SYNTAX IsisUnsigned8TC + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the Protocol version reported in PDU we received." + ::= { isisNotificationEntry 7 } + + isisPduLspSize OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the size of LSP we received that is too + big to forward." + ::= { isisNotificationEntry 8 } + + isisPduOriginatingBufferSize OBJECT-TYPE + SYNTAX IsisUnsigned16TC (0..16000) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the size of isisSysLevelOrigLSPBuffSize advertised + by the peer in the originatingLSPBufferSize TLV. + If the peer does not advertise this TLV, this + value is set to 0." + ::= { isisNotificationEntry 9 } + + isisPduBufferSize OBJECT-TYPE + SYNTAX IsisUnsigned16TC (0..16000) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Holds the size of LSP received from peer." + ::= { isisNotificationEntry 10 } + + isisPduProtocolsSupported OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The list of protocols supported by an + adjacent system. This may be empty." + ::= { isisNotificationEntry 11 } + + isisAdjState OBJECT-TYPE + SYNTAX INTEGER + { + + + + down (1), + initializing (2), + up (3), + failed(4) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The current state of an adjacency." + ::= { isisNotificationEntry 12 } + + isisErrorOffset OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "An offset to a problem in a PDU. If the problem + is a malformed TLV, this points to the beginning + of the TLV. If the problem is in the header, this + points to the byte that is suspicious." + ::= { isisNotificationEntry 13 } + + isisErrorTLVType OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The type for a malformed TLV." + ::= { isisNotificationEntry 14 } + + isisNotificationAreaAddress OBJECT-TYPE + SYNTAX IsisOSINSAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "An Area Address." + ::= { isisNotificationEntry 15 } + +-- Notification definitions +-- +-- Note that notifications can be disabled by setting +-- isisSysNotificationEnable false + + isisDatabaseOverload NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisSysLevelState + } + + + + STATUS current + DESCRIPTION + "This notification is generated when the system + enters or leaves the Overload state. The number + of times this has been generated and cleared is kept + track of by isisSysStatLSPDbaseOloads." + ::= { isisNotifications 1 } + + isisManualAddressDrops NOTIFICATION-TYPE + OBJECTS { + isisNotificationAreaAddress + } + STATUS current + DESCRIPTION + "This notification is generated when one of the + manual areaAddresses assigned to this system is + ignored when computing routes. The object + isisNotificationAreaAddress describes the area that + has been dropped. + + The number of times this event has been generated + is counted by isisSysStatManAddrDropFromAreas. + + The agent must throttle the generation of + consecutive isisManualAddressDrops notifications + so that there is at least a 5-second gap between + notifications of this type. When notifications + are throttled, they are dropped, not queued for + sending at a future time." + ::= { isisNotifications 2 } + + isisCorruptedLSPDetected NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisPduLspId + } + STATUS current + DESCRIPTION + "This notification is generated when we find that + an LSP that was stored in memory has become + corrupted. The number of times this has been + generated is counted by isisSysCorrLSPs. + + We forward an LSP ID. We may have independent + knowledge of the ID, but in some implementations + there is a chance that the ID itself will be + corrupted." + + + + + ::= { isisNotifications 3 } + + isisAttemptToExceedMaxSequence NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisPduLspId + } + STATUS current + DESCRIPTION + "When the sequence number on an LSP we generate + wraps the 32-bit sequence counter, we purge and + wait to re-announce this information. This + notification describes that event. Since these + should not be generated rapidly, we generate + an event each time this happens. + + While the first 6 bytes of the LSPID are ours, + the other two contain useful information." + + ::= { isisNotifications 4 } + + isisIDLenMismatch NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisPduFieldLen, + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with a different value for the System ID Length. + This notification includes an index to identify + the circuit where we saw the PDU and the header of + the PDU, which may help a network manager identify + the source of the confusion. + + The agent must throttle the generation of + consecutive isisIDLenMismatch notifications + so that there is at least a 5-second gap between + notifications of this type. When notifications + are throttled, they are dropped, not queued for + sending at a future time." + + ::= { isisNotifications 5 } + + isisMaxAreaAddressesMismatch NOTIFICATION-TYPE + OBJECTS { + + + + isisNotificationSysLevelIndex, + isisPduMaxAreaAddress, + isisNotificationCircIfIndex, + isisPduFragment + } + + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with a different value for the Maximum Area + Addresses. This notification includes the + header of the packet, which may help a + network manager identify the source of the + confusion. + + The agent must throttle the generation of + consecutive isisMaxAreaAddressesMismatch + notifications so that there is at least a 5-second + gap between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 6 } + + isisOwnLSPPurge NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId + } + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with our systemID and zero age. This + notification includes the circuit Index + and router ID from the LSP, if available, + which may help a network manager + identify the source of the confusion." + + ::= { isisNotifications 7 } + + isisSequenceNumberSkip NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId + } + STATUS current + + + + DESCRIPTION + "When we receive an LSP with our System ID + and different contents, we may need to reissue + the LSP with a higher sequence number. + + We send this notification if we need to increase + the sequence number by more than one. If two + Intermediate Systems are configured with the same + System ID, this notification will fire." + + ::= { isisNotifications 8 } + + isisAuthenticationTypeFailure NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with the wrong authentication type field. + This notification includes the header of the + packet, which may help a network manager + identify the source of the confusion. + + The agent must throttle the generation of + consecutive isisAuthenticationTypeFailure + notifications so that there is at least a 5-second + gap between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 9 } + + isisAuthenticationFailure NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a PDU + with an incorrect authentication information + field. This notification includes the header + of the packet, which may help a network manager + identify the source of the confusion. + + + + The agent must throttle the generation of + consecutive isisAuthenticationFailure + notifications so that there is at least a 5-second + gap between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 10 } + + isisVersionSkew NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduProtocolVersion, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a Hello + PDU from an IS running a different version + of the protocol. This notification includes + the header of the packet, which may help a + network manager identify the source of the + confusion. + + The agent must throttle the generation of + consecutive isisVersionSkew notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 11 } + + isisAreaMismatch NOTIFICATION-TYPE + OBJECTS { + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a Hello + PDU from an IS that does not share any + area address. This notification includes + the header of the packet, which may help a + network manager identify the source of the + confusion. + + + + + The agent must throttle the generation of + consecutive isisAreaMismatch notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 12 } + + isisRejectedAdjacency NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when we receive a Hello + PDU from an IS but do not establish an + adjacency for some reason. + + The agent must throttle the generation of + consecutive isisRejectedAdjacency notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 13 } + + isisLSPTooLargeToPropagate NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspSize, + isisPduLspId + } + STATUS current + DESCRIPTION + "A notification sent when we attempt to propagate + an LSP that is larger than the dataLinkBlockSize + for the circuit. + + The agent must throttle the generation of + consecutive isisLSPTooLargeToPropagate notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + + + + queued for sending at a future time." + + ::= { isisNotifications 14 } + + isisOrigLSPBuffSizeMismatch NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId, + isisPduOriginatingBufferSize, + isisPduBufferSize + } + STATUS current + DESCRIPTION + "A notification sent when a Level 1 LSP or Level + 2 LSP is received that is larger than the local + value for isisSysLevelOrigLSPBuffSize, or when an + LSP is received that contains the supported Buffer Size + option and the value in the PDU option field does + not match the local value for isisSysLevelOrigLSPBuffSize. + We pass up the size from the option field and the + size of the LSP when one of them exceeds our configuration. + + The agent must throttle the generation of + consecutive isisOrigLSPBuffSizeMismatch notifications + so that there is at least a 5-second gap + between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 15 } + + isisProtocolsSupportedMismatch NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduProtocolsSupported, + isisPduLspId, + isisPduFragment + } + STATUS current + DESCRIPTION + "A notification sent when a non-pseudonode + segment 0 LSP is received that has no matching + protocols supported. This may be because the system + does not generate the field, or because there are no + common elements. The list of protocols supported + should be included in the notification: it may be + + + + empty if the TLV is not supported, or if the + TLV is empty. + + The agent must throttle the generation of + consecutive isisProtocolsSupportedMismatch + notifications so that there is at least a 5-second + gap between notifications of this type. When + notifications are throttled, they are dropped, not + queued for sending at a future time." + + ::= { isisNotifications 16 } + + isisAdjacencyChange NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId, + isisAdjState + } + STATUS current + DESCRIPTION + "A notification sent when an adjacency changes + state, entering or leaving state up. + The first 6 bytes of the isisPduLspId are the + SystemID of the adjacent IS. + The isisAdjState is the new state of the adjacency." + + ::= { isisNotifications 17 } + + isisLSPErrorDetected NOTIFICATION-TYPE + OBJECTS { + isisNotificationSysLevelIndex, + isisPduLspId, + isisNotificationCircIfIndex, + isisPduFragment, + isisErrorOffset, + isisErrorTLVType + } + STATUS current + DESCRIPTION + "This notification is generated when we receive + an LSP with a parse error. The isisCircIfIndex + holds an index of the circuit on which the PDU + arrived. The isisPduFragment holds the start of the + LSP, and the isisErrorOffset points to the problem. + + If the problem is a malformed TLV, isisErrorOffset + points to the start of the TLV, and isisErrorTLVType + + + + holds the value of the type. + + If the problem is with the LSP header, isisErrorOffset + points to the suspicious byte. + + The number of such LSPs is accumulated in + isisSysStatLSPErrors." + + ::= { isisNotifications 18 } + +-- Agent Conformance Definitions +-- We define the objects a conformant agent must define + +isisCompliances OBJECT IDENTIFIER ::= { isisConformance 1 } +isisGroups OBJECT IDENTIFIER ::= { isisConformance 2 } + +-- compliance statements + + isisCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support + the IS-IS MIB. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements. + Those requirements and similar requirements for + related objects are expressed below, in + pseudo-OBJECT clause form, in this description: + + -- OBJECT isisSummAddressType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 Summary + -- Addresses and anticipates the support of + -- IPv6 addresses. + -- + -- + -- OBJECT isisRedistributeAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 + -- Redistribution Addresses and anticipates + -- the support of IPv6 addresses." + -- + + + + -- + -- OBJECT isisISAdjIPAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 + -- Adjacency Addresses and anticipates the + -- support of IPv6 addresses. + MODULE -- this module + MANDATORY-GROUPS { + isisSystemGroup, + isisCircuitGroup, + isisISAdjGroup, + isisNotificationObjectGroup, + isisNotificationGroup + } + ::= { isisCompliances 1 } + + -- List of all groups, mandatory and optional + isisAdvancedCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that fully + support the IS-IS MIB. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements. + Those requirements and similar requirements for + related objects are expressed below, in + pseudo-OBJECT clause form, in this description: + + -- OBJECT isisSummAddressType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 Summary + -- Addresses and anticipates the support of + -- IPv6 addresses. + -- + -- + -- OBJECT isisRedistributeAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 + -- Redistribution Addresses and anticipates + -- the support of IPv6 addresses." + + + + -- + -- + -- OBJECT isisISAdjIPAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 + -- Adjacency Addresses and anticipates the + -- support of IPv6 addresses. + -- + -- + -- OBJECT isisIPRADestType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 RA + -- Addresses and anticipates the support of + -- IPv6 addresses. + -- + -- + -- OBJECT isisIPRANextHopType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- + -- DESCRIPTION + -- The MIB requires support for IPv4 NextHop + -- Addresses and anticipates the support of + -- IPv6 addresses. + MODULE -- this module + MANDATORY-GROUPS { + isisSystemGroup, + isisCircuitGroup, + isisISAdjGroup, + isisNotificationObjectGroup, + isisNotificationGroup, + isisISPDUCounterGroup, + isisRATableGroup, + isisISIPRADestGroup, + isisLSPGroup + } + ::= { isisCompliances 2 } + + isisReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for + read-create (i.e., in read-only mode), the + implementation can claim read-only compliance. Such + a device can then be monitored but cannot be + + + + configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { + isisSystemGroup, + isisCircuitGroup, + isisISAdjGroup + } + + OBJECT isisSysLevelType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysID + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysMaxPathSplits + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysMaxLSPGenInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysPollESHelloRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysWaitTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysAdminState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysL2toL1Leaking + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT isisSysMaxAge + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisManAreaAddrExistState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelOrigLSPBuffSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelMinLSPGenInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelSetOverload + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelSetOverloadUntil + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelMetricStyle + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelSPFConsiders + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysLevelTEEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSysReceiveLSPBufferSize + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT isisSummAddrExistState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSummAddrMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisSummAddrFullMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisRedistributeAddrExistState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircAdminState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircExistState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircExtDomain + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircPassiveCircuit + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircMeshGroupEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircMeshGroup + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircSmallHellos + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircExtendedCircID + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCirc3WayEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelWideMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelISPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT isisCircLevelHelloMultiplier + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelHelloTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelDRHelloTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelLSPThrottle + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelMinLSPRetransInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelCSNPInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT isisCircLevelPartSNPInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { isisCompliances 3 } + +-- MIB Grouping + + isisSystemGroup OBJECT-GROUP + OBJECTS { + isisSysVersion, + isisSysLevelType, + isisSysID, + isisSysMaxPathSplits, + isisSysMaxLSPGenInt, + isisSysPollESHelloRate, + isisSysWaitTime, + + + + isisSysAdminState, + isisSysL2toL1Leaking, + isisSysMaxAge, + isisSysProtSupported, + isisSysNotificationEnable, + isisManAreaAddrExistState, + isisSysLevelOrigLSPBuffSize, + isisSysLevelMinLSPGenInt, + isisSysLevelState, + isisSysLevelSetOverload, + isisSysLevelSetOverloadUntil, + isisSysLevelMetricStyle, + isisSysLevelSPFConsiders, + isisSysLevelTEEnabled, + isisSysReceiveLSPBufferSize, + isisSummAddrExistState, + isisSummAddrMetric, + isisAreaAddr, + isisSummAddrFullMetric, + isisRedistributeAddrExistState, + isisRouterHostName, + isisRouterID, + isisSysStatCorrLSPs, + isisSysStatLSPDbaseOloads, + isisSysStatManAddrDropFromAreas, + isisSysStatAttmptToExMaxSeqNums, + isisSysStatSeqNumSkips, + isisSysStatOwnLSPPurges, + isisSysStatIDFieldLenMismatches, + isisSysStatPartChanges, + isisSysStatSPFRuns, + isisSysStatAuthTypeFails, + isisSysStatAuthFails, + isisSysStatLSPErrors + } + STATUS current + DESCRIPTION + "The collections of objects used to manage an + IS-IS router." + ::= { isisGroups 1 } + + isisCircuitGroup OBJECT-GROUP + OBJECTS { + isisNextCircIndex, + isisCircAdminState, + isisCircExistState, + isisCircType, + isisCircExtDomain, + + + + isisCircLevelType, + isisCircAdjChanges, + isisCircNumAdj, + isisCircInitFails, + isisCircRejAdjs, + isisCircIDFieldLenMismatches, + isisCircMaxAreaAddrMismatches, + isisCircAuthTypeFails, + isisCircAuthFails, + isisCircLANDesISChanges, + isisCircPassiveCircuit, + isisCircMeshGroupEnabled, + isisCircMeshGroup, + isisCircSmallHellos, + isisCircLastUpTime, + isisCirc3WayEnabled, + isisCircExtendedCircID, + isisCircIfIndex, + isisCircLevelMetric, + isisCircLevelWideMetric, + isisCircLevelISPriority, + isisCircLevelIDOctet, + isisCircLevelID, + isisCircLevelDesIS, + isisCircLevelHelloMultiplier, + isisCircLevelHelloTimer, + isisCircLevelDRHelloTimer, + isisCircLevelLSPThrottle, + isisCircLevelMinLSPRetransInt, + isisCircLevelCSNPInterval, + isisCircLevelPartSNPInterval + } + STATUS current + DESCRIPTION + "The collections of objects used to describe an + IS-IS Circuit." + ::= { isisGroups 2 } + + isisISAdjGroup OBJECT-GROUP + OBJECTS { + isisISAdjState, + isisISAdj3WayState, + isisISAdjNeighSNPAAddress, + isisISAdjNeighSysType, + isisISAdjNeighSysID, + isisISAdjNbrExtendedCircID, + isisISAdjUsage, + isisISAdjHoldTimer, + + + + isisISAdjNeighPriority, + isisISAdjLastUpTime, + isisISAdjAreaAddress, + isisISAdjIPAddrType, + isisISAdjIPAddrAddress, + isisISAdjProtSuppProtocol + } + STATUS current + DESCRIPTION + "The collections of objects used to manage an + IS-IS Adjacency." + ::= { isisGroups 3 } + + isisNotificationObjectGroup OBJECT-GROUP + OBJECTS { + isisNotificationSysLevelIndex, + isisNotificationCircIfIndex, + isisPduLspId, + isisPduFragment, + isisPduFieldLen, + isisPduMaxAreaAddress, + isisPduProtocolVersion, + isisPduLspSize, + isisPduOriginatingBufferSize, + isisPduBufferSize, + isisPduProtocolsSupported, + isisAdjState, + isisErrorOffset, + isisErrorTLVType, + isisNotificationAreaAddress + } + STATUS current + DESCRIPTION + "The objects used to record notification parameters." + ::= { isisGroups 4 } + + + isisNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + isisDatabaseOverload, + isisManualAddressDrops, + isisCorruptedLSPDetected, + isisAttemptToExceedMaxSequence, + isisIDLenMismatch, + isisMaxAreaAddressesMismatch, + isisOwnLSPPurge, + isisSequenceNumberSkip, + isisAuthenticationTypeFailure, + + + + isisAuthenticationFailure, + isisVersionSkew, + isisAreaMismatch, + isisRejectedAdjacency, + isisLSPTooLargeToPropagate, + isisOrigLSPBuffSizeMismatch, + isisProtocolsSupportedMismatch, + isisAdjacencyChange, + isisLSPErrorDetected + } + STATUS current + DESCRIPTION + "The collections of notifications sent by an IS." + ::= { isisGroups 5 } + + + isisISPDUCounterGroup OBJECT-GROUP + OBJECTS { + isisPacketCountIIHello, + isisPacketCountISHello, + isisPacketCountESHello, + isisPacketCountLSP, + isisPacketCountCSNP, + isisPacketCountPSNP, + isisPacketCountUnknown + } + STATUS current + DESCRIPTION + "The collections of objects used to count protocol PDUs." + ::= { isisGroups 6 } + + + isisRATableGroup OBJECT-GROUP + OBJECTS { + isisRAExistState, + isisRAAdminState, + isisRAAddrPrefix, + isisRAMapType, + isisRAMetric, + isisRAMetricType, + isisRASNPAAddress, + isisRASNPAMask, + isisRASNPAPrefix, + isisRAType + } + STATUS current + DESCRIPTION + "The collections of objects used to manage the + + + + reachable NSAP prefixes." + ::= { isisGroups 7 } + + + isisISIPRADestGroup OBJECT-GROUP + OBJECTS { + isisIPRANextHopType, + isisIPRANextHop, + isisIPRAType, + isisIPRAExistState, + isisIPRAAdminState, + isisIPRAMetric, + isisIPRAFullMetric, + isisIPRAMetricType, + isisIPRASNPAAddress, + isisIPRASourceType + } + STATUS current + DESCRIPTION + "The collections of objects used to manage configured + IP addresses." + ::= { isisGroups 8 } + + isisLSPGroup OBJECT-GROUP + OBJECTS { + isisLSPSeq, + isisLSPZeroLife, + isisLSPChecksum, + isisLSPLifetimeRemain, + isisLSPPDULength, + isisLSPAttributes, + isisLSPTLVSeq, + isisLSPTLVChecksum, + isisLSPTLVType, + isisLSPTLVLen, + isisLSPTLVValue + } + STATUS current + DESCRIPTION + "The collections of objects used to observe the LSP + Database." + ::= { isisGroups 9 } + +END diff --git a/mibs/ietf/ISNS-MIB b/mibs/ietf/ISNS-MIB new file mode 100644 index 0000000..53b50f2 --- /dev/null +++ b/mibs/ietf/ISNS-MIB @@ -0,0 +1,3442 @@ +ISNS-MIB DEFINITIONS ::= BEGIN + IMPORTS + -- From RFC 2578 + MODULE-IDENTITY, + OBJECT-TYPE, + NOTIFICATION-TYPE, + Integer32, + Unsigned32, + Gauge32, + mib-2 + FROM SNMPv2-SMI + + -- From RFC 2579 + TEXTUAL-CONVENTION, + TimeStamp, + TruthValue + FROM SNMPv2-TC + + -- From RFC 2580 + OBJECT-GROUP, + MODULE-COMPLIANCE, + NOTIFICATION-GROUP + FROM SNMPv2-CONF + + -- From RFC 3411 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + -- From RFC 4001 + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB + + -- From RFC 4044 + FcNameIdOrZero, + FcAddressIdOrZero + FROM FC-MGMT-MIB + + -- From RFC 4133 + PhysicalIndex + FROM ENTITY-MIB + ; + + isnsMIB MODULE-IDENTITY + LAST-UPDATED "200707110000Z" + + + + ORGANIZATION "IETF IPS Working Group" + CONTACT-INFO " + Attn: Kevin Gibbons + 2Wire, Inc. + 1704 Automation Parkway + San Jose, CA 95131 + USA + Tel: +1 408-895-1387 + Fax: +1 408-428-9590 + Email: kgibbons@yahoo.com + + G.D. Ramkumar + SnapTell, Inc. + 2741 Middlefield Rd, Suite 200 + Palo Alto, CA 94306 + USA + Tel: +1 650-326-7627 + Fax: +1 650-326-7620 + Email: gramkumar@stanfordalumni.org + + Scott Kipp + Brocade + 4 McDATA Pkwy + Broomfield, CO 80021 + USA + Tel: +1 720-558-3452 + Fax: +1 720-558-8999 + Email: skipp@brocade.com + " + + DESCRIPTION + "This module defines management information + specific to internet Storage Name Service + (iSNS) management. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part + of RFC 4939; see the RFC itself for full + legal notices." + + REVISION "200707110000Z" + + DESCRIPTION + "Initial version of iSNS Management Module. + This MIB published as RFC 4939." + ::= { mib-2 163 } + + + + + + -- + -- Textual Conventions + -- + + IsnsDiscoveryDomainSetId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The unique Discovery Domain Set Identifier associated with a + Discovery Domain Set (DDS)." + REFERENCE "RFC 4171, Section 6.11.1.1" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsDdsStatusType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The status of a Discovery Domain Set (DDS) registered in the + iSNS. The initially assigned values are below: + Bit Status + --------- --------- + 31 DDS Enabled + All others RESERVED + + Setting a bit to 1 indicates the feature is enabled. + Otherwise, it is disabled. The future assignment of any of + the reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.11.1.3" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), reserved28(28), reserved29(29), + reserved30(30), + ddsEnabled (31) + } + + IsnsDiscoveryDomainId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The unique Discovery Domain Identifier (DD_ID) associated + + + + with each Discovery Domain (DD). This is used to + uniquely index and reference a DD." + REFERENCE "RFC 4171, Section 6" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsDdFeatureType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This type defines the features that each Discovery Domain + (DD) has. + Bit Status + --------- --------- + 31 Boot List + All others RESERVED + + Boot List: this feature indicates that the targets + in this DD provide boot capabilities for the member + initiators. + + Setting a bit to 1 indicates the feature is enabled. + Otherwise, it is disabled. The future assignment of any of + the reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.11.2.9" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), reserved28(28), reserved29(29), + reserved30(30), + bootlist(31) + } + + IsnsDdDdsModificationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The methods that can be used to modify the Discovery + Domain and Discovery Domain Sets in an iSNS Server + instance. + Bit Flag Description + --------- ------------------------------------ + 0 Control Nodes are allowed + + + + 1 Target iSCSI Nodes are allowed + 2 Initiator iSCSI Nodes are allowed + 3 Target iFCP Ports are allowed + 4 Initiator iFCP Ports are allowed + + Setting a bit to 1 indicates the feature is + enabled. Otherwise, it is disabled." + REFERENCE "RFC 4171, Section 2.4" + SYNTAX BITS { + controlNode(0), + targetIscsiNode(1), + initiatorIscsiNode(2), + targetIfcpNode(3), + initiatorIfcpNode(4) + } + + IsnsEntityIndexIdOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The identifier for the unique integer Entity Index + associated with an iSNS registered Entity object, and the + value zero. The value zero is object-specific and MUST + therefore be defined as part of the description of any + object that uses this syntax. Examples of the usage of + zero might include situations where the Entity is unknown, + or not yet registered in the iSNS server. If a value of + zero is not valid for an object, then that MUST be + indicated." + REFERENCE "RFC 4171, Section 6" + SYNTAX Unsigned32 ( 0 .. 4294967295 ) + + IsnsPortalGroupIndexId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The identifier for the unique integer Portal Group Index + associated with an iSNS registered Portal Group object." + REFERENCE "RFC 4171, Section 6" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsPortalIndexId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The identifier for the unique integer Portal Index + associated with an iSNS registered Portal object. The + index is created by the iSNS Server for mapping between + + + + registered objects. The Portal Index used for a specific + portal IP-address and port number pair is only persistent + across reboots for portals that have been explicitly added + to a Discovery Domain (DD). If a portal is not explicitly + registered in any DD, then the index used for a portal can + change after a server reinitialization." + REFERENCE "RFC 4171, Section 6" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsPortalPortTypeId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The UDP or TCP port type being used by a Portal for an + Entity." + REFERENCE "RFC 4171, Section 6.3.2" + SYNTAX INTEGER { udp(1), tcp(2) } + + IsnsPortalGroupTagIdOrNull ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The Portal Group Tag (PGT) represents an association + between a Portal and iSCSI Node using the value range + 0 to 65535. A PGT with no association is a NULL + value. The value of -1 indicates a NULL value." + REFERENCE "RFC 4171, Section 6.5.4, and RFC 3720" + SYNTAX Integer32 ( -1 .. 65535 ) + + IsnsPortalSecurityType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates security attribute settings for a Portal that is + registered in the iSNS server. The bitmapVALID field must + be set in order for the contents to be considered valid + information. The definitions of the bit fields are based + on RFC 4171. The initial representation of each bit setting + (0 or 1) is indicated below. + Bit Flag Description + --------- ------------------------------------ + 25 1 = Tunnel Mode Preferred; 0 = No Preference + 26 1 = Transport Mode Preferred; 0 = No + Preference + 27 1 = PFS Enabled; 0 = PFS Disabled + 28 1 = Aggressive Mode Enabled; 0 = Disabled + 29 1 = Main Mode Enabled; 0 = MM Disabled + 30 1 = IKE/IPsec Enabled; 0 = IKE/IPsec + Disabled + 31 1 = Bitmap VALID; 0 = INVALID + + + + All others RESERVED + + The future assignment of any of the reserved values will be + documented in a revision of RFC 4171." + REFERENCE "RFC 4171, Section 6.3.9" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), + tunnelModePreferred(25), + transportModePreferred(26), + pfsEnabled(27), + agressiveModeEnabled(28), + mainModeEnabled(29), + ikeIPsecEnabled(30), + bitmapVALID(31) + } + + IsnsNodeIndexId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The identifier for the unique integer Node Index associated + with a storage node. This index provides a 1-to-1 mapping + to an iSCSI node name. The iSCSI node name maximum length + is too long to be used for an index directly. The iSCSI + node index used for a specific iSCSI node name is identical + in all DDs, and is persistent across server + reinitializations when the iSCSI node is a member of a + Discovery Domain (DD) or is registered as a Control Node. + Furthermore, index values for recently deregistered objects + SHOULD NOT be reused in the short term." + REFERENCE "RFC 4171, Section 6.4.5" + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + + IsnsIscsiNodeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The iSCSI Node Type defines the functions of the registered + object. The definitions of each setting are defined in + RFC 4171. + Bit Node Type + + + + --------- --------- + 29 Control + 30 Initiator + 31 Target + All others RESERVED + + Setting a bit to 1 indicates the node has the corresponding + characteristics. The future assignment of any of the + reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.4.2" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), reserved28(28), + control(29), + initiator(30), + target(31) + } + + IsnsFcClassOfServiceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This defines the Fibre Channel Class of Service types + that are supported by the registered port. The + definitions are as defined in RFC 4171. + Bit FC COS Type + --------- ---------------- + 28 Fibre Channel Class 3 Supported + 29 Fibre Channel Class 2 Supported + All others RESERVED + + Setting a bit to 1 indicates the class of service is + supported. The future assignment of any of the + reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.6.8" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + + + + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), + class3(28), + class2(29) + } + + IsnsIscsiScnType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The iSCSI Node State Change Notification (SCN) values + for a node as defined in RFC 4171. + Bit Description + ------------ ---------------- + 24 Initiator and self information only + 25 Target and self information only + 26 Management registration/SCN + 27 Object removed + 28 Object added + 29 Object updated + 30 DD or DDS member removed (Mgmt + Reg/SCN only) + 31 (Lsb) DD or DDS member added (Mgmt + Reg/SCN only) + All others Reserved + + Setting a bit to 1 indicates that type of SCN is enabled. + The future assignment of any of the reserved values will be + documented in a revision of RFC 4171." + REFERENCE "RFC 4171, Section 6.4.4" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + initiatorAndSelfOnly(24), + targetAndSelfOnly(25), + managementRegistrationScn(26), + objectRemoved(27), + objectAdded(28), + + + + objectUpdated(29), + ddOrDdsMemberRemoved(30), + ddOrDdsMemberAdded(31) + } + + IsnsIfcpScnType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The iFCP State Change Notification (SCN) values for an iFCP + object as defined in RFC 4171. + Bit Description + ------------ ---------------- + 24 Initiator and self information only + 25 Target and self information only + 26 Management registration/SCN + 27 Object removed + 28 Object added + 29 Object updated + 30 DD or DDS member removed (Mgmt + Reg/SCN only) + 31 (Lsb) DD or DDS member added (Mgmt + Reg/SCN only) + All others Reserved + + Setting a bit to 1 indicates that type of SCN is enabled. + The future assignment of any of the reserved values will be + documented in a revision of RFC 4171." + REFERENCE "RFC 4171, Section 6.6.12" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + initiatorAndSelfOnly(24), + targetAndSelfOnly(25), + managementRegistrationScn(26), + objectRemoved(27), + objectAdded(28), + objectUpdated(29), + ddOrDdsMemberRemoved(30), + ddOrDdsMemberAdded(31) + } + + IsnsFcPortRoleType ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "The FC Port Role defines the functions of the registered + object. The definitions of each setting are defined in + RFC 4171. + Bit Port Role + --------- --------- + 29 Control + 30 FCP Initiator + 31 FCP Target + All others RESERVED + + Setting a bit to 1 indicates the port has the corresponding + characteristics. The future assignment of any of the + reserved values will be documented in a revision of + RFC 4171." + REFERENCE "RFC 4171, Section 6.6.13" + SYNTAX BITS { + reserved0(0), reserved1(1), reserved2(2), + reserved3(3), reserved4(4), reserved5(5), + reserved6(6), reserved7(7), reserved8(8), + reserved9(9), reserved10(10), reserved11(11), + reserved12(12), reserved13(13), reserved14(14), + reserved15(15), reserved16(16), reserved17(17), + reserved18(18), reserved19(19), reserved20(20), + reserved21(21), reserved22(22), reserved23(23), + reserved24(24), reserved25(25), reserved26(26), + reserved27(27), reserved28(28), + control(29), + initiator(30), + target(31) + } + + IsnsSrvrDiscoveryMethodsType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The types of iSNS Server discovery methods that are enabled + on an iSNS Server. The options are DHCP, Service Location + Protocol (SLP), multicast group iSNS heartbeat, broadcast + group iSNS heartbeat, configured server list, and other. + The iSNS Server may support additional discovery methods + not indicated." + REFERENCE "RFC 4171, Section 2.5" + SYNTAX BITS { + dhcp(0), + slp(1), + multicastGroupHb(2), + broadcastHb(3), + + + + cfgdServerList(4), + other(5) + } + + -- + -- Internet Storage Name Service Management + -- + + + isnsNotifications OBJECT IDENTIFIER ::= + { isnsMIB 0 } + isnsObjects OBJECT IDENTIFIER ::= + { isnsMIB 1 } + isnsConformance OBJECT IDENTIFIER ::= + { isnsMIB 2 } + + -- + -- iSNS Server instance managed objects -------------------- + -- + + isnsServerInfo OBJECT IDENTIFIER ::= { isnsObjects 1 } + + isnsServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a list of the iSNS Server instances + that are managed through the same SNMP context." + ::= { isnsServerInfo 1 } + + isnsServerEntry OBJECT-TYPE + SYNTAX IsnsServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a row in the iSNS Server instance table. The number + of rows is dependent on the number of iSNS Server instances + that are being managed through the same SNMP context." + INDEX { isnsServerIndex } + ::= { isnsServerTable 1 } + + IsnsServerEntry ::= + SEQUENCE { + isnsServerIndex Unsigned32, + isnsServerName SnmpAdminString, + isnsServerIsnsVersion Unsigned32, + isnsServerVendorInfo SnmpAdminString, + + + + isnsServerPhysicalIndex PhysicalIndex, + isnsServerTcpPort InetPortNumber, + isnsServerUdpPort InetPortNumber, + isnsServerDiscontinuityTime + TimeStamp, + isnsServerRole INTEGER, + isnsServerDiscoveryMethodsEnabled + IsnsSrvrDiscoveryMethodsType, + isnsServerDiscoveryMcGroupType + InetAddressType, + isnsServerDiscoveryMcGroupAddress + InetAddress, + isnsServerEsiNonResponseThreshold + Unsigned32, + isnsServerEnableControlNodeMgtScn + TruthValue, + isnsServerDefaultDdDdsStatus + INTEGER, + isnsServerUpdateDdDdsSupported + IsnsDdDdsModificationType, + isnsServerUpdateDdDdsEnabled + IsnsDdDdsModificationType + } + + isnsServerIndex OBJECT-TYPE + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies the iSNS Server being + managed by the SNMP context and is the key for this table. + This is an instance index for each iSNS Server being + managed. The value of this object is used elsewhere in + the MIB to reference specific iSNS Servers." + ::= { isnsServerEntry 1 } + + isnsServerName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A non-unique name that can be assigned to the iSNS Server + instance. If not configured, then the string SHALL be + zero-length." + ::= { isnsServerEntry 2 } + + isnsServerIsnsVersion OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 65535 ) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSNS version value as contained in messages received + from the current primary server. The header of each iSNSP + message contains the iSNS version of the sender. If + unknown, the reported value is 0." + REFERENCE "RFC 4171" + DEFVAL { 1 } + ::= { isnsServerEntry 3 } + + isnsServerVendorInfo OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this server instance is utilizing the product of a + particular 'vendor', then this managed object contains + that vendor's name and version. Otherwise, the + string SHALL be zero-length. The format of the string + is as follows: Vendor Name, Vendor Version, Vendor + Defined Information. + + Field Description + --------- ---------------- + Vendor Name The name of the vendor (if one exists) + Vendor Version The version of the vendor product + Vendor Defined This follows the second comma in the + string, if one exists, and is vendor + defined + " + ::= { isnsServerEntry 4 } + + isnsServerPhysicalIndex OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index identifying the network interface for this iSNS + Server within a network entity. This index maps to the + entPhysicalIndex of entPhysicalTable table in RFC 4133. The + entPhysicalClass value for the table row must be 'port', as + the interface must be able to send and receive data." + REFERENCE "RFC 4133, RFC 4171, Section 2.5 - 2.8" + ::= { isnsServerEntry 5 } + + isnsServerTcpPort OBJECT-TYPE + SYNTAX InetPortNumber + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the TCP port this iSNS instance is accepting + iSNSP messages on, generally the iSNS well-known port. + The well-known TCP port for iSNSP is 3205. If TCP is + not supported by this server instance, then the value + is 0." + ::= { isnsServerEntry 6 } + + isnsServerUdpPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the UDP port this iSNS instance is accepting + iSNSP messages on; generally, the iSNS well-known port. + The well-known UDP port for iSNSP is 3205. If UDP is + not supported by this server instance, then the value + is 0." + ::= { isnsServerEntry 7 } + + isnsServerDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion that + this iSNS server became active or suffered a + discontinuity." + ::= { isnsServerEntry 8 } + + isnsServerRole OBJECT-TYPE + SYNTAX INTEGER { notSet(1), + server(2), + backupServer(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational mode of this iSNS Server instance. + + Value Description + --------- ---------------- + notSet The iSNS Server role is not + configured. + server The iSNS Server instance is + an operational iSNS Server. + backupServer The iSNS Server instance is + + + + currently acting as a backup." + REFERENCE "RFC 4171, Section 2.7 - 2.8" + ::= { isnsServerEntry 9 } + + isnsServerDiscoveryMethodsEnabled OBJECT-TYPE + SYNTAX IsnsSrvrDiscoveryMethodsType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the discovery methods currently enabled for + this iSNS Server instance. This allows a client to + determine what discovery methods can be used for + this iSNS Server. Additional methods of discovery may + also be supported." + ::= { isnsServerEntry 10 } + + isnsServerDiscoveryMcGroupType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Internet address in + isnsServerDiscoveryMcGroupAddress. If the address is + specified, then it must be a valid multicast address and the + value of this object must be ipv4(1), ipv6(2), ipv4z(3), or + ipv6z(4); otherwise, the value of this object is + unknown(0), and the value of + isnsServerDiscoveryMcGroupAddress is the zero-length string." + ::= { isnsServerEntry 11 } + + isnsServerDiscoveryMcGroupAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The multicast group that iSNS Heartbeat messages are + sent to if multicast-based discovery has been enabled + for this server instance. If not configured, then the + string SHALL be zero-length. The format of this + object is specified by isnsServerDiscoveryMcGroupType." + ::= { isnsServerEntry 12 } + + isnsServerEsiNonResponseThreshold OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Entity Status Inquiry (ESI) Non-Response Threshold - + + + + the number of ESI messages that will be sent without + receiving a response before an entity is deregistered + from the iSNS database. A value of 0 indicates + Entities will never be deregistered due to non-receipt + of ESI messages." + REFERENCE "RFC 4171, Section 2.4" + DEFVAL { 3 } + ::= { isnsServerEntry 13 } + + isnsServerEnableControlNodeMgtScn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if the iSNS Server administrative option to send + Management SCNs to Control Nodes is enabled. Management + SCNs are used by Control Nodes to monitor and control an + iSNS Server. If enabled, Control Nodes can register to + receive Management SCNs." + REFERENCE "RFC 4171, Section 2.2.3, 2.4" + DEFVAL { true } + ::= { isnsServerEntry 14 } + + isnsServerDefaultDdDdsStatus OBJECT-TYPE + SYNTAX INTEGER { inNoDomain(1), + inDefaultDdAndDds(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates the Discovery Domain (DD) and Discovery + Domain Set (DDS) membership status for a new device + when registered in the iSNS Server instance. Either the + new device will not be in a DD/DDS, or will be placed + into a default DD and default DDS. The default setting + is inNoDomain." + REFERENCE "RFC 4171, Section 2.4" + DEFVAL { inNoDomain } + ::= { isnsServerEntry 15 } + + isnsServerUpdateDdDdsSupported OBJECT-TYPE + SYNTAX IsnsDdDdsModificationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The methods that this iSNS Server instance supports + to modify Discovery Domains and Discovery Domain Sets." + REFERENCE "RFC 4171, Section 2.4" + ::= { isnsServerEntry 16 } + + + + + isnsServerUpdateDdDdsEnabled OBJECT-TYPE + SYNTAX IsnsDdDdsModificationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates the methods this server instance currently + allows for modifying Discovery Domains and Discovery + Domain Sets." + REFERENCE "RFC 4171, Sec 2.2.2 and 2.4" + ::= { isnsServerEntry 17 } + + -- + -- Count of objects currently registered in a server instance + -- + + isnsNumObjectsTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsNumObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table providing the number of registered objects of each + type in the iSNS Server instance. The number of entries is + dependent upon the number of iSNS Server instances being + managed." + ::= { isnsServerInfo 2 } + + isnsNumObjectsEntry OBJECT-TYPE + SYNTAX IsnsNumObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of an iSNS Server instance." + AUGMENTS { isnsServerEntry } + ::= { isnsNumObjectsTable 1 } + + IsnsNumObjectsEntry ::= SEQUENCE { + isnsNumDds Gauge32, + isnsNumDd Gauge32, + isnsNumEntities Gauge32, + isnsNumPortals Gauge32, + isnsNumPortalGroups Gauge32, + isnsNumIscsiNodes Gauge32, + isnsNumFcPorts Gauge32, + isnsNumFcNodes Gauge32 + } + + + + + isnsNumDds OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of Discovery Domain Sets + in this iSNS instance. This is the number of rows + in the isnsDdsTable." + ::= { isnsNumObjectsEntry 1 } + + isnsNumDd OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of Discovery Domains + in this iSNS instance. This is the number of rows in the + isnsDdTable." + ::= { isnsNumObjectsEntry 2 } + + isnsNumEntities OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of Entities registered in this + iSNS Server instance. This is the number of rows in + the isnsRegEntityTable for this instance." + ::= { isnsNumObjectsEntry 3 } + + isnsNumPortals OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of Portals registered in iSNS. + This is the number of rows in isnsRegPortalTable." + ::= { isnsNumObjectsEntry 4 } + + isnsNumPortalGroups OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of Portal Groups registered in + iSNS. This is the number of rows in isnsRegPgTable." + ::= { isnsNumObjectsEntry 5 } + + + + + isnsNumIscsiNodes OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of iSCSI node entries registered + in the iSNS. This is the number rows in + isnsRegIscsiNodeTable." + ::= { isnsNumObjectsEntry 6 } + + isnsNumFcPorts OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of FC Port entries registered + in the iSNS. This is the number of rows in + isnsRegFcPortTable." + ::= { isnsNumObjectsEntry 7 } + + isnsNumFcNodes OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current total number of FC node entries registered + in the iSNS. This is the number of rows in + isnsRegFcNodeTable." + ::= { isnsNumObjectsEntry 8 } + + -- + -- Control node information + -- + + isnsControlNodeInfo OBJECT IDENTIFIER ::= + { isnsServerInfo 3 } + + -- + -- Specific iSCSI Nodes authorized to register as Control + -- Nodes + -- + + isnsControlNodeIscsiTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsControlNodeIscsiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Specified iSCSI Nodes that can register or are registered + as control nodes. The number of rows is dependent on the + number of iSCSI Control Nodes." + ::= { isnsControlNodeInfo 1 } + + isnsControlNodeIscsiEntry OBJECT-TYPE + SYNTAX IsnsControlNodeIscsiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is an iSCSI Control Node entry for a specific iSNS + server instance." + INDEX { isnsServerIndex, + isnsControlNodeIscsiNodeIndex } + ::= { isnsControlNodeIscsiTable 1 } + + IsnsControlNodeIscsiEntry ::= SEQUENCE { + isnsControlNodeIscsiNodeIndex IsnsNodeIndexId, + isnsControlNodeIscsiNodeName SnmpAdminString, + isnsControlNodeIscsiIsRegistered TruthValue, + isnsControlNodeIscsiRcvMgtSCN TruthValue + } + + isnsControlNodeIscsiNodeIndex OBJECT-TYPE + SYNTAX IsnsNodeIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for the iSCSI storage node authorized to act + as a control node." + ::= { isnsControlNodeIscsiEntry 1 } + + isnsControlNodeIscsiNodeName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Name of the initiator or target associated with + the storage node. The iSCSI Name cannot be longer than + 223 bytes. The iSNS Server internal maximum size is 224 + bytes to provide NULL termination. This is the iSCSI Node + Name for the storage node authorized and/or acting as a + control node." + ::= { isnsControlNodeIscsiEntry 2 } + + isnsControlNodeIscsiIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Indicates whether the control node is currently + registered in the iSNS Server instance." + ::= { isnsControlNodeIscsiEntry 3 } + + isnsControlNodeIscsiRcvMgtSCN OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the Control Node has registered to + receive Management SCNs. Management SCNs are sent to + a Control Node if they are enabled, as indicated by + isnsServerEnableControlNodeMgtScn, and the Control + Node has registered for them." + REFERENCE "RFC 4171, Section 2.2.3, 2.4" + ::= { isnsControlNodeIscsiEntry 4 } + + -- + -- Specific FC Ports authorized to register as Control + -- Nodes + -- + + isnsControlNodeFcPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsControlNodeFcPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specified FC Ports that can register or are registered as + control nodes. The number of rows is dependent on the + number of FC Port Control Nodes." + ::= { isnsControlNodeInfo 2 } + + isnsControlNodeFcPortEntry OBJECT-TYPE + SYNTAX IsnsControlNodeFcPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "FC Port control node entry." + INDEX { isnsServerIndex, + isnsControlNodeFcPortWwpn } + ::= { isnsControlNodeFcPortTable 1 } + + IsnsControlNodeFcPortEntry ::= SEQUENCE { + isnsControlNodeFcPortWwpn FcNameIdOrZero, + isnsControlNodeFcPortIsRegistered TruthValue, + + + + isnsControlNodeFcPortRcvMgtSCN TruthValue + } + + isnsControlNodeFcPortWwpn OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FC Port World Wide Port Name that can and/or is acting + as a Control Node for the specified iSNS Server. A zero- + length string is not valid for this managed object. + This managed object, combined with the isnsServerIndex, is + the key for this table." + ::= { isnsControlNodeFcPortEntry 1 } + + isnsControlNodeFcPortIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the control node is currently + registered in the iSNS Server instance." + ::= { isnsControlNodeFcPortEntry 2 } + + isnsControlNodeFcPortRcvMgtSCN OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the Control Node has registered to + receive Management SCNs. Management SCNs are sent to + a Control Node if they are enabled, as indicated by + isnsServerEnableControlNodeMgtScn, and the Control + Node has registered for them." + REFERENCE "RFC 4171, Section 2.2.3, 2.4" + ::= { isnsControlNodeFcPortEntry 3 } + + -- + -- Discovery Domain Set information + -- + + isnsDdsInfo OBJECT IDENTIFIER ::= { isnsServerInfo 4 } + + -- + -- Discovery Domain Set Registrations ----------------- + -- + + isnsDdsTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF IsnsDdsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configuration information for each + Discovery Domain Set (DDS) registered in the iSNS Server + instance. The number of rows in the table is dependent + on the number of DDSs registered in the specified iSNS + server instance." + ::= { isnsDdsInfo 1 } + + isnsDdsEntry OBJECT-TYPE + SYNTAX IsnsDdsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one Discovery Domain Set (DDS) registered + in the iSNS Server instance." + INDEX { isnsServerIndex, isnsDdsId} + ::= { isnsDdsTable 1 } + + IsnsDdsEntry ::= + SEQUENCE { + isnsDdsId IsnsDiscoveryDomainSetId, + isnsDdsSymbolicName SnmpAdminString, + isnsDdsStatus IsnsDdsStatusType + } + + isnsDdsId OBJECT-TYPE + SYNTAX IsnsDiscoveryDomainSetId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ID that refers to this Discovery Domain Set and + index to the table." + ::= { isnsDdsEntry 1 } + + isnsDdsSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Discovery Domain Set Symbolic Name field contains + a unique variable-length description (up to 255 bytes) + that is associated with the DDS. If a Symbolic Name is + not provided, then one will be generated by the iSNS + server." + REFERENCE "RFC 4171, Section 6" + + + + ::= { isnsDdsEntry 2 } + + isnsDdsStatus OBJECT-TYPE + SYNTAX IsnsDdsStatusType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of this Discovery Domain Set (DDS)." + REFERENCE "RFC 4171, Section 6.11.1.3" + ::= { isnsDdsEntry 3 } + + -- + -- Discovery Domain Set Members -------------------- + -- + + -- + -- DDS Membership Assignment + -- + + isnsDdsMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsDdsMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing Discovery Domains (DDs) that have + been assigned to specific Discovery Domain Sets (DDSs). + The number of rows in the table is dependent on the + number of DD to DDS relationships in the iSNS instance." + ::= { isnsDdsInfo 2 } + + + isnsDdsMemberEntry OBJECT-TYPE + SYNTAX IsnsDdsMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mapping of one Discovery Domain (DD) to a Discovery + Domain Set (DDS). This indicates the DD is a member of + the DDS." + INDEX { isnsServerIndex, + isnsDdsId, + isnsDdsMemberDdId } + ::= { isnsDdsMemberTable 1 } + + IsnsDdsMemberEntry ::= + SEQUENCE { + isnsDdsMemberDdId IsnsDiscoveryDomainId, + isnsDdsMemberSymbolicName SnmpAdminString + + + + } + + isnsDdsMemberDdId OBJECT-TYPE + SYNTAX IsnsDiscoveryDomainId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ID that identifies the Discovery Domain + that is a member of the Discovery Domain Set." + ::= { isnsDdsMemberEntry 1 } + + isnsDdsMemberSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Symbolic Name of the Discovery Domain that is a member + of this DDS. This value SHALL be identical to the object + isnsDdSymbolicName for the associated DD ID." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdsMemberEntry 2 } + + -- + -- Discovery Domain information + -- + + isnsDdInfo OBJECT IDENTIFIER ::= { isnsServerInfo 5 } + + -- + -- Discovery Domain Registrations ------------------------ + -- + + isnsDdTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsDdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configuration information for each + Discovery Domain (DD) registered in the iSNS. The number + of rows in the table is dependent on the number of DDs + registered in the iSNS instance." + ::= { isnsDdInfo 1 } + + isnsDdEntry OBJECT-TYPE + SYNTAX IsnsDdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Information on a Discovery Domain (DD) registered in + the iSNS Server instance." + INDEX { isnsServerIndex, isnsDdId} + ::= { isnsDdTable 1 } + + IsnsDdEntry::= + SEQUENCE { + isnsDdId IsnsDiscoveryDomainId, + isnsDdSymbolicName SnmpAdminString, + isnsDdFeatures IsnsDdFeatureType + } + + isnsDdId OBJECT-TYPE + SYNTAX IsnsDiscoveryDomainId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ID that refers to this Discovery Domain, and the + index to the table." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdEntry 1 } + + isnsDdSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Discovery Domain Symbolic Name field contains a + unique variable-length description (up to 255 bytes) + that is associated with the DD." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdEntry 2 } + + isnsDdFeatures OBJECT-TYPE + SYNTAX IsnsDdFeatureType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This defines the features the Discovery Domain has." + REFERENCE "RFC 4171, Section 6.11.2.9" + ::= { isnsDdEntry 3 } + + + + + + + + + + + -- + -- Discovery Domain Members -------------------- + -- + + -- + -- DD iSCSI Node Membership Assignment + -- + + isnsDdIscsiMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsDdIscsiMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing iSCSI node indexes that have been + assigned to specific DDs in this iSNS Server instance. The + number of rows in the table is dependent on the number of + relationships between iSCSI Nodes and DDs registered in the + iSNS instance." + ::= { isnsDdInfo 2 } + + isnsDdIscsiMemberEntry OBJECT-TYPE + SYNTAX IsnsDdIscsiMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mapping of one iSCSI Node to a Discovery Domain to + indicate membership in the DD. The indexes are the iSNS + server instance, the DD ID of the Discovery Domain, and + the iSCSI Node Index of the iSCSI Node." + INDEX { isnsServerIndex, + isnsDdId, + isnsDdIscsiMemberIndex } + ::= { isnsDdIscsiMemberTable 1 } + + IsnsDdIscsiMemberEntry::= + SEQUENCE { + isnsDdIscsiMemberIndex IsnsNodeIndexId, + isnsDdIscsiMemberName SnmpAdminString, + isnsDdIscsiMemberIsRegistered TruthValue + } + + isnsDdIscsiMemberIndex OBJECT-TYPE + SYNTAX IsnsNodeIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this member iSCSI node entry." + + + + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdIscsiMemberEntry 1 } + + isnsDdIscsiMemberName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..223)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Name associated with the storage node. The + iSCSI Name cannot be longer than 223 bytes. The iSNS + server internal maximum size is 224 bytes to provide + NULL termination. This is the iSCSI Name for the storage + node that is a member of the DD. This value maps 1 to 1 + to the isnsDdIscsiMemberIndex node index. The iSCSI Name + field is too long to be easily used for an index directly. + The node index used for a specific node name is only + persistent across iSNS Server reinitializations for nodes + that are in a Discovery Domain (DD) or are registered + control nodes. This value is only required during row + creation if the storage node is not yet registered in the + iSNS Server instance. If the storage node is not yet + registered, then the iSCSI Name MUST be provided with the + iSCSI node index during row creation in order to create the + 1-to-1 mapping." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdIscsiMemberEntry 2 } + + isnsDdIscsiMemberIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates whether this member of the DD is currently + registered in the iSNS Server instance. iSCSI Storage + Node members do not need to be currently registered in + order for their iSCSI Name and Index to be added to + a DD." + REFERENCE "RFC 4171, Section 6.11" + ::= { isnsDdIscsiMemberEntry 3 } + + -- + -- DD Portal Membership Assignment + -- + + isnsDdPortalMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsDdPortalMemberEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A table containing currently registered and unregistered + portal objects that have been explicitly assigned to + specific DDs. Explicit assignment of a portal to a DD + is only done when a specific set of portals are preferred + for use within a DD. Otherwise, for iSCSI, the Portal + Group Object should be used for identifying which portals + provide access to which storage nodes. The number of rows + in the table is dependent on the number of explicit + relationships between portals and DDs registered in the + iSNS." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdInfo 3 } + + isnsDdPortalMemberEntry OBJECT-TYPE + SYNTAX IsnsDdPortalMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry indicates an explicit addition of a portal to a + discovery domain. The explicit addition of an entity portal + to a discovery domain indicates the portal is preferred for + access to nodes of the entity for this discovery domain. + Registered Portal Group objects are used in iSCSI to + indicate mapping of portals to nodes across all discovery + domains. Portals that have been explicitly mapped to a + discovery domain will be returned as part of a query that + is scoped to that discovery domain. If no portal of an + entity has been explicitly mapped to a discovery domain, + then all portals of the entity that provide access to a + storage node are returned as part of a query. The table + indexes are the server instance, the DD ID of the Discovery + Domain, and the Portal Index of the portal." + INDEX { isnsServerIndex, + isnsDdId, + isnsDdPortalMemberIndex } + ::= { isnsDdPortalMemberTable 1 } + + IsnsDdPortalMemberEntry ::= + SEQUENCE { + isnsDdPortalMemberIndex IsnsPortalIndexId, + isnsDdPortalMemberAddressType InetAddressType, + isnsDdPortalMemberAddress InetAddress, + isnsDdPortalMemberPortType IsnsPortalPortTypeId, + isnsDdPortalMemberPort InetPortNumber, + isnsDdPortalMemberIsRegistered TruthValue + } + + + + + isnsDdPortalMemberIndex OBJECT-TYPE + SYNTAX IsnsPortalIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for a portal explicitly contained in the discovery + domain. This managed object, combined with isnsServerIndex + and isnsDdId, is the key for this table." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdPortalMemberEntry 1 } + + isnsDdPortalMemberAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsDdPortalMemberAddress. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsDdPortalMemberAddress is the zero-length string." + ::= { isnsDdPortalMemberEntry 2 } + + isnsDdPortalMemberAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Inet Address for the portal. The format of this + object is specified by isnsDdPortalMemberAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdPortalMemberEntry 3 } + + isnsDdPortalMemberPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type for the portal, either UDP or TCP." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdPortalMemberEntry 4 } + + isnsDdPortalMemberPort OBJECT-TYPE + SYNTAX InetPortNumber ( 1 .. 65535 ) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The port number for the portal. Whether the portal + type is TCP or UDP is indicated by + isnsDdPortalMemberPortType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdPortalMemberEntry 5 } + + isnsDdPortalMemberIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates whether this member of the DD is currently + registered in the iSNS Server instance. Portals that are + DD members do not need to be currently registered in + order for them to be added to a DD." + REFERENCE "RFC 4171, Section 6.11" + ::= { isnsDdPortalMemberEntry 6 } + + -- + -- DD FC Port Membership Assignment + -- + + isnsDdFcPortMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsDdFcPortMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing FC Port World Wide Names (WWN) that + have been assigned to specific DDs. The number of rows + in the table is dependent on the number of relationships + between FC Ports and DDs registered in the iSNS." + ::= { isnsDdInfo 4 } + + isnsDdFcPortMemberEntry OBJECT-TYPE + SYNTAX IsnsDdFcPortMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The association of one FC Port with a Discovery Domain. + Membership of an FC Port in a Discovery Domain is + indicated by creating a row for the appropriate DD ID + and FC Port WWN." + INDEX { isnsServerIndex, + isnsDdId, + isnsDdFcPortMemberPortName } + ::= { isnsDdFcPortMemberTable 1 } + + + + + IsnsDdFcPortMemberEntry ::= + SEQUENCE { + isnsDdFcPortMemberPortName FcNameIdOrZero, + isnsDdFcPortMemberIsRegistered TruthValue + } + + isnsDdFcPortMemberPortName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Port WWN of the FC Port that is a member of the DD. The + value MUST be a valid FC WWN, as per the FC-GS (Fibre Channel - + Generic Services) standard. This managed object, combined + with the isnsServerIndex and isnsDdId are the key for this + table. A zero-length string is not a valid value for this + managed object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsDdFcPortMemberEntry 1 } + + isnsDdFcPortMemberIsRegistered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates whether this member of the DD is currently + registered in the iSNS Server instance." + REFERENCE "RFC 4171, Section 6.11" + ::= { isnsDdFcPortMemberEntry 2 } + + -- + -- Registered Device Information + -- + + isnsReg OBJECT IDENTIFIER ::= { isnsServerInfo 6 } + + isnsRegEntityInfo OBJECT IDENTIFIER + ::= { isnsReg 1 } + + -- + -- iSNS Registered Entities Table + -- + + isnsRegEntityTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegEntityEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A table containing registered Entity objects in each iSNS + server instance. The number of entries in the table is + dependent on the number of Entity objects registered in the + iSNS Server instances. All Entity objects are registered in + the iSNS using the iSNS protocol." + ::= { isnsRegEntityInfo 1 } + + isnsRegEntityEntry OBJECT-TYPE + SYNTAX IsnsRegEntityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one registered Entity object in an iSNS + server instance." + INDEX { isnsServerIndex, + isnsRegEntityIndex } + ::= { isnsRegEntityTable 1 } + + IsnsRegEntityEntry ::= + SEQUENCE { + isnsRegEntityIndex IsnsEntityIndexIdOrZero, + isnsRegEntityEID SnmpAdminString, + isnsRegEntityProtocol Unsigned32, + isnsRegEntityManagementAddressType + InetAddressType, + isnsRegEntityManagementAddress + InetAddress, + isnsRegEntityTimestamp TimeStamp, + isnsRegEntityVersionMin Unsigned32, + isnsRegEntityVersionMax Unsigned32, + isnsRegEntityRegistrationPeriod + Unsigned32 + } + + isnsRegEntityIndex OBJECT-TYPE + SYNTAX IsnsEntityIndexIdOrZero + ( 1 .. 4294967295 ) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Entity Index for this entity. This index is assigned + by the iSNS Server when an Entity is initially registered. + The Entity Index can be used to represent a registered + Entity object in situations where the Entity EID would + be too long/unwieldy. Zero is not a valid value for this + object." + REFERENCE "RFC 4171, Section 6" + + + + ::= { isnsRegEntityEntry 1 } + + isnsRegEntityEID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The EID is a unique registered Entity object identifier, as + specified in the iSNS Specification. This is the iSNS + Entity Identifier for the registered Entity object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegEntityEntry 2 } + + isnsRegEntityProtocol OBJECT-TYPE + SYNTAX Unsigned32 ( 1 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The block storage protocol supported by this entity, as + defined in the iSNS Specification, Section 6.2.2. The + following values are initially assigned. + + Type Value Entity Type + ---------- ----------- + 1 No Protocol + 2 iSCSI + 3 iFCP + All Others As assigned by IANA + + The full set of current Block Storage Protocols are + specified in the IANA-maintained registry of assigned + iSNS parameters. Please refer to RFC 4171 and the iSNS + parameters maintained at IANA." + REFERENCE "RFC 4171, Section 6.2.2, and IANA Assignments" + ::= { isnsRegEntityEntry 3 } + + isnsRegEntityManagementAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegEntityManagementAddress. + If the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value of + this object is unknown(0), and the value of + isnsRegEntityManagementAddress is the zero-length string." + ::= { isnsRegEntityEntry 4 } + + + + + isnsRegEntityManagementAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSNS Management IP Address for the registered Entity + object. The format of this object is specified by + isnsRegEntityManagementAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegEntityEntry 5 } + + isnsRegEntityTimestamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSNS Entity Registration Timestamp for the registered + Entity object. This is the most recent date and time that + the registered Entity object, and associated registered + objects contained in the Entity, were registered or + updated." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegEntityEntry 6 } + + isnsRegEntityVersionMin OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 254 | 255 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum version supported for the block storage protocol + specified by isnsRegEntityProtocol. The protocol version + specified can be from 1 to 254. A value of 255 is a wildcard + value, indicating no minimum version value has been specified + for this Entity. Entity registrations with an + isnsRegEntityProtocol of 'No Protocol' SHALL have an + isnsRegEntityVersionMin value of 0." + REFERENCE "RFC 4171, Section 6.2.5" + ::= { isnsRegEntityEntry 7 } + + isnsRegEntityVersionMax OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 254 | 255 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum version supported for the block storage protocol + specified by isnsRegEntityProtocol. The protocol version + specified can be from 1 to 254. A value of 255 is a wildcard + + + + value, indicating no maximum version value has been specified + for this Entity. Entity registrations with an + isnsRegEntityProtocol of 'No Protocol' SHALL have an + isnsRegEntityVersionMax value of 0." + REFERENCE "RFC 4171, Section 6.2.5" + ::= { isnsRegEntityEntry 8 } + + isnsRegEntityRegistrationPeriod OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 4294967295 ) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSNS Entity Status Inquiry (ESI) registration period, + which indicates the maximum time, in seconds, that the + registration will be maintained without receipt of an iSNSP + message from the entity. If the Registration Period is set + to 0, then the Entity SHALL NOT be deregistered due to no + contact with the entity." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegEntityEntry 9 } + + -- + -- Registered Objects Associated With an Entity Information + -- + + isnsRegEntityNumObjectsTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsRegEntityNumObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on the number of registered + objects associated with a registered Entity in the iSNS + server instance. The number of entries in the table is + dependent on the number of registered Entity objects in the + iSNS." + ::= { isnsRegEntityInfo 2 } + + isnsRegEntityNumObjectsEntry OBJECT-TYPE + SYNTAX IsnsRegEntityNumObjectsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on the number of registered objects associated + with a registered Entity object in an iSNS Server instance." + INDEX { isnsServerIndex, + isnsRegEntityIndex } + + + + ::= { isnsRegEntityNumObjectsTable 1 } + + IsnsRegEntityNumObjectsEntry ::= + SEQUENCE { + isnsRegEntityInfoNumPortals Gauge32, + isnsRegEntityInfoNumPortalGroups Gauge32, + isnsRegEntityInfoNumIscsiNodes Gauge32, + isnsRegEntityInfoNumFcPorts Gauge32, + isnsRegEntityInfoNumFcNodes Gauge32 + } + + isnsRegEntityInfoNumPortals OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Portals associated with this Entity." + ::= { isnsRegEntityNumObjectsEntry 1 } + + isnsRegEntityInfoNumPortalGroups OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Portal Groups associated with this Entity." + ::= { isnsRegEntityNumObjectsEntry 2 } + + isnsRegEntityInfoNumIscsiNodes OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of iSCSI Storage Nodes associated with this + Entity." + ::= { isnsRegEntityNumObjectsEntry 3 } + + isnsRegEntityInfoNumFcPorts OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FC Ports associated with this Entity." + ::= { isnsRegEntityNumObjectsEntry 4 } + + isnsRegEntityInfoNumFcNodes OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of FC Nodes associated with this Entity." + ::= { isnsRegEntityNumObjectsEntry 5 } + + -- + -- iSNS Registered Portal Information + -- + + isnsRegPortalInfo OBJECT IDENTIFIER + ::= { isnsReg 2 } + + -- + -- iSNS Registered Portal Table + -- + + isnsRegPortalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegPortalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the registered Portals in the iSNS. + The number of entries is dependent on the number of + Portals registered in the iSNS." + ::= { isnsRegPortalInfo 1 } + + isnsRegPortalEntry OBJECT-TYPE + SYNTAX IsnsRegPortalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one registered Entity Portal in the iSNS. + The Entity Index is part of the table index to quickly + find Portals that support a specific Entity." + INDEX { isnsServerIndex, + isnsRegEntityIndex, + isnsRegPortalPortalIndex } + ::= { isnsRegPortalTable 1 } + + IsnsRegPortalEntry ::= + SEQUENCE { + isnsRegPortalPortalIndex IsnsPortalIndexId, + isnsRegPortalAddressType InetAddressType, + isnsRegPortalAddress InetAddress, + isnsRegPortalPortType IsnsPortalPortTypeId, + isnsRegPortalPort InetPortNumber, + isnsRegPortalSymbolicName SnmpAdminString, + isnsRegPortalEsiInterval Unsigned32, + isnsRegPortalEsiPortType IsnsPortalPortTypeId, + + + + isnsRegPortalEsiPort InetPortNumber, + isnsRegPortalScnPortType IsnsPortalPortTypeId, + isnsRegPortalScnPort InetPortNumber, + isnsRegPortalSecurityInfo IsnsPortalSecurityType + } + + isnsRegPortalPortalIndex OBJECT-TYPE + SYNTAX IsnsPortalIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this Entity Portal." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 1 } + + isnsRegPortalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegPortalAddress. If the + address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsRegPortalAddress is the zero-length string." + ::= { isnsRegPortalEntry 2 } + + isnsRegPortalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Inet Address for this Portal as defined in the iSNS + Specification, RFC 4171. The format of this object is + specified by isnsRegPortalAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 3 } + + isnsRegPortalPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type for this Portal, either UDP or TCP, as + defined in the iSNS Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 4 } + + + + + isnsRegPortalPort OBJECT-TYPE + SYNTAX InetPortNumber ( 1 .. 65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number for this Portal as defined in the + iSNS Specification, RFC 4171. Whether the Portal type + is TCP or UDP is indicated by isnsRegPortalPortType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 5 } + + isnsRegPortalSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Symbolic Name for this Portal as defined in the iSNS + Specification, RFC 4171. If not provided, then the string + SHALL be zero-length." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 6 } + + isnsRegPortalEsiInterval OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 65535 ) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Entity Status Inquiry (ESI) Interval for this Portal + as defined in the iSNS Specification, RFC 4171. A value of + 0 indicates that ESI monitoring has not been configured for + this Portal." + REFERENCE "RFC 4171, Section 6.3.4" + ::= { isnsRegPortalEntry 7 } + + isnsRegPortalEsiPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type for the ESI Port, either UDP or TCP, as + defined in the iSNS Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 8 } + + isnsRegPortalEsiPort OBJECT-TYPE + SYNTAX InetPortNumber + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP or UDP port number used for ESI monitoring. Whether + the port type is TCP or UDP is indicated by + isnsRegPortalEsiPortType. A value of 0 indicates that ESI + monitoring is not enabled for this Portal." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 9 } + + isnsRegPortalScnPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type for the SCN Port, either UDP or TCP, as + defined in the iSNS Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 10 } + + isnsRegPortalScnPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP or UDP port used to receive SCN messages from the + iSNS Server. Whether the port type is TCP or UDP is + indicated by isnsRegPortalScnPortType. A value of 0 + indicates that SCN message receipt is not enabled for this + Portal." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPortalEntry 11 } + + isnsRegPortalSecurityInfo OBJECT-TYPE + SYNTAX IsnsPortalSecurityType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates security attribute settings for the Portal as + registered in the iSNS server. The bit for bitmapVALID must + be set in order for this attribute to contain valid + information. Setting a bit to 1 indicates the + feature is enabled." + REFERENCE "RFC 4171, Section 6.3.9" + ::= { isnsRegPortalEntry 12 } + + + + + + + -- + -- iSNS Registered Portal Group Information + -- + + isnsRegPortalGroupInfo OBJECT IDENTIFIER + ::= { isnsReg 3 } + + -- + -- iSNS Registered Portal Group (PG) Table + -- + + isnsRegPgTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegPgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the registered Portal Groups (PGs) in + the iSNS Server instance. The number of entries is + dependent on the number of Portal Groups registered in + the iSNS." + ::= { isnsRegPortalGroupInfo 1 } + + isnsRegPgEntry OBJECT-TYPE + SYNTAX IsnsRegPgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one registered Portal Group in the iSNS + server instance. The Entity Index is part of the table + index to quickly find Portal Groups that support Portals + and iSCSI Storage Nodes in a specific Entity." + INDEX { isnsServerIndex, + isnsRegEntityIndex, + isnsRegPgIndex } + ::= { isnsRegPgTable 1 } + + IsnsRegPgEntry ::= + SEQUENCE { + isnsRegPgIndex IsnsPortalGroupIndexId, + isnsRegPgIscsiNodeIndex IsnsNodeIndexId, + isnsRegPgIscsiName SnmpAdminString, + isnsRegPgPortalPortalIndex IsnsPortalIndexId, + isnsRegPgPortalAddressType InetAddressType, + isnsRegPgPortalAddress InetAddress, + isnsRegPgPortalPortType IsnsPortalPortTypeId, + isnsRegPgPortalPort InetPortNumber, + isnsRegPgPGT IsnsPortalGroupTagIdOrNull + } + + + + + isnsRegPgIndex OBJECT-TYPE + SYNTAX IsnsPortalGroupIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The PG Index for this node. The index is created by the + iSNS Server instance for uniquely identifying registered + objects. The PG object is registered at the same time a + Portal or Storage Node is registered using the iSNS + protocol." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 1 } + + isnsRegPgIscsiNodeIndex OBJECT-TYPE + SYNTAX IsnsNodeIndexId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index for the iSCSI Node associated with this PG. + This index can be used to reference the + isnsRegIscsiNodeTable." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 2 } + + isnsRegPgIscsiName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..223)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Name of the initiator or target associated with + the storage node. The iSCSI Name cannot be longer than + 223 bytes. The iSNS Server internal maximum size is 224 + bytes to provide NULL termination. This is the PG iSCSI + Name that uniquely identifies the iSCSI Storage Node that + is associated with this PG." + ::= { isnsRegPgEntry 3 } + + isnsRegPgPortalPortalIndex OBJECT-TYPE + SYNTAX IsnsPortalIndexId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Portal Index for the Portal associated with this PG. + This index can be used to reference the isnsRegPortalTable." + ::= { isnsRegPgEntry 4 } + + isnsRegPgPortalAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegPgPortalAddress. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsRegPgPortalAddress is the zero-length string." + ::= { isnsRegPgEntry 5 } + + isnsRegPgPortalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Inet Address for the Portal that is associated with + the PG. The format of this object is specified by + isnsRegPgPortalAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 6 } + + isnsRegPgPortalPortType OBJECT-TYPE + SYNTAX IsnsPortalPortTypeId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type, either UDP or TCP, for the Portal that + is associated with this registered PG object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 7 } + + isnsRegPgPortalPort OBJECT-TYPE + SYNTAX InetPortNumber ( 1 .. 65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port number for the Portal that is associated with + this registered PG object. Whether the Portal type is + TCP or UDP is indicated by isnsRegPgPortalPortType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegPgEntry 8 } + + isnsRegPgPGT OBJECT-TYPE + SYNTAX IsnsPortalGroupTagIdOrNull + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The Portal Group Tag (PGT) for the registered iSCSI Portal + Group object in an iSNS Server instance. This indicates + the tag value that the Portal uses for access to the iSCSI + Storage Node. The PGT is used for coordinated access + between multiple Portals, as described in the iSCSI + Specification, RFC 3720. A PGT with no association is a + NULL value. The value of -1 indicates a NULL value." + REFERENCE "RFC 4171, Section 6, and RFC 3720" + ::= { isnsRegPgEntry 9 } + + -- + -- iSNS Registered iSCSI Node Information + -- + + isnsRegIscsiNodeInfo OBJECT IDENTIFIER ::= { isnsReg 4 } + + -- + -- iSNS Registered iSCSI Node Table + -- + + isnsRegIscsiNodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegIscsiNodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the registered iSCSI Nodes in the iSNS + server instance. Storage devices register using the iSNS + protocol. While a device cannot be registered in an iSNS + server using SNMP, an entry can be deleted in order to + remove 'stale' entries. The number of entries is related + to the number of iSCSI nodes registered in the iSNS." + ::= { isnsRegIscsiNodeInfo 1 } + + isnsRegIscsiNodeEntry OBJECT-TYPE + SYNTAX IsnsRegIscsiNodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one iSCSI node that has been registered in + the iSNS Server instance. New rows cannot be added using + SNMP." + INDEX { isnsServerIndex, + isnsRegEntityIndex, + isnsRegIscsiNodeIndex } + ::= { isnsRegIscsiNodeTable 1 } + + IsnsRegIscsiNodeEntry ::= SEQUENCE { + + + + isnsRegIscsiNodeIndex IsnsNodeIndexId, + isnsRegIscsiNodeName SnmpAdminString, + isnsRegIscsiNodeType IsnsIscsiNodeType, + isnsRegIscsiNodeAlias SnmpAdminString, + isnsRegIscsiNodeScnTypes IsnsIscsiScnType, + isnsRegIscsiNodeWwnToken FcNameIdOrZero, + isnsRegIscsiNodeAuthMethod SnmpAdminString + } + + isnsRegIscsiNodeIndex OBJECT-TYPE + SYNTAX IsnsNodeIndexId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this iSCSI node." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegIscsiNodeEntry 1 } + + isnsRegIscsiNodeName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..223)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iSCSI Name of the initiator or target associated with + the storage node. The iSCSI Name cannot be longer than + 223 bytes. The iSNS Server internal maximum size is 224 + bytes to provide NULL termination. This is the iSCSI Name + that uniquely identifies the initiator, initiator/target, + target, or control node in the network." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegIscsiNodeEntry 2 } + + isnsRegIscsiNodeType OBJECT-TYPE + SYNTAX IsnsIscsiNodeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Node Type defining the functions of this iSCSI node." + ::= { isnsRegIscsiNodeEntry 3 } + + isnsRegIscsiNodeAlias OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Alias name of the iSCSI node. This is a variable-length + text-based description of up to 255 bytes." + REFERENCE "RFC 4171, Section 6" + + + + ::= { isnsRegIscsiNodeEntry 4 } + + isnsRegIscsiNodeScnTypes OBJECT-TYPE + SYNTAX IsnsIscsiScnType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The State Change Notification (SCN) types enabled for this + iSCSI node." + REFERENCE "RFC 4171, Section 6.4.4" + ::= { isnsRegIscsiNodeEntry 5 } + + isnsRegIscsiNodeWwnToken OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This contains a globally unique 64-bit integer value that + can be used to represent the World Wide Node Name of the + iSCSI device in a Fibre Channel fabric. This identifier is + used during the device registration process, and MUST + conform to the requirements in RFC 4171. A zero-length string + for this managed object indicates that a Node WWN token has + not been assigned." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegIscsiNodeEntry 6 } + + isnsRegIscsiNodeAuthMethod OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute contains a null-terminated string containing + UTF-8 text listing the iSCSI authentication methods enabled + for this iSCSI Node, in order of preference. The text + values used to identify iSCSI authentication methods are + embedded in this string attribute and delineated by a + comma. The text values are identical to those found in + RFC 3720 - iSCSI. Additional vendor-specific text values + are also possible." + REFERENCE "RFC 4171, Section 6, and RFC 3720" + ::= { isnsRegIscsiNodeEntry 7 } + + -- + -- iSNS Registered FC Node Information + -- + + isnsRegFcNodeInfo OBJECT IDENTIFIER ::= { isnsReg 5 } + + + + + -- + -- iSNS Registered FC Node Table + -- + + isnsRegFcNodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegFcNodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the registered FC Nodes in the iSNS. + This supports iFCP as defined in RFC 4172." + ::= { isnsRegFcNodeInfo 1 } + + isnsRegFcNodeEntry OBJECT-TYPE + SYNTAX IsnsRegFcNodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one registered FC node that has been + registered in the iSNS." + INDEX { isnsServerIndex, + isnsRegFcNodeWwnn } + ::= { isnsRegFcNodeTable 1 } + + IsnsRegFcNodeEntry ::= SEQUENCE { + isnsRegFcNodeWwnn FcNameIdOrZero, + isnsRegFcNodeSymbolicName SnmpAdminString, + isnsRegFcNodeAddressType InetAddressType, + isnsRegFcNodeAddress InetAddress, + isnsRegFcNodeIPA OCTET STRING, + isnsRegFcNodeProxyIscsiName SnmpAdminString, + isnsRegFcNodeNumFcPorts Gauge32 + } + + isnsRegFcNodeWwnn OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FC Node World Wide Node Name as defined in the iSNS + Specification, RFC 4171. A zero-length string is not valid + for this managed object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 1 } + + isnsRegFcNodeSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Node Symbolic Name of the node as defined in the + iSNS Specification, RFC 4171. This is a variable-length + text-based description. If not provided, then the string + SHALL be zero-length." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 2 } + + isnsRegFcNodeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegFcNodeAddress. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsRegFcNodeAddress is the zero-length string." + ::= { isnsRegFcNodeEntry 3 } + + isnsRegFcNodeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Node Inet address of the node as defined in the + iSNS Specification, RFC 4171. The format of this object is + specified by isnsRegFcNodeAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 4 } + + isnsRegFcNodeIPA OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This managed object identifies the FC Initial Process + Associator of the node as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 5 } + + isnsRegFcNodeProxyIscsiName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..223)) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The iSCSI Name used to represent the FC Node in the IP + network. It is used as a pointer to the matching iSCSI Name + entry in the iSNS Server. Its value is usually registered + by an FC-iSCSI gateway connecting the IP network to the + fabric containing the FC device." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcNodeEntry 6 } + + isnsRegFcNodeNumFcPorts OBJECT-TYPE + SYNTAX Gauge32 ( 0 .. 4294967295 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FC Ports associated with this FC Node." + ::= { isnsRegFcNodeEntry 7 } + + -- + -- iSNS Registered FC Port Table + -- + + isnsRegFcPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF IsnsRegFcPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on registered FC N_Ports in the iSNS. FC Ports + are associated with registered FC Nodes. This supports + iFCP as defined in RFC 4172." + REFERENCE "RFC 4172, Section 4" + ::= { isnsRegFcNodeInfo 2 } + + isnsRegFcPortEntry OBJECT-TYPE + SYNTAX IsnsRegFcPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one FC Port that has been registered in + iSNS." + REFERENCE "RFC 4172, Section 4" + INDEX { isnsServerIndex, + isnsRegEntityIndex, + isnsRegFcPortWwpn } + ::= { isnsRegFcPortTable 1 } + + IsnsRegFcPortEntry ::= SEQUENCE { + isnsRegFcPortWwpn FcNameIdOrZero, + + + + isnsRegFcPortID FcAddressIdOrZero, + isnsRegFcPortType Unsigned32, + isnsRegFcPortSymbolicName SnmpAdminString, + isnsRegFcPortFabricPortWwn FcNameIdOrZero, + isnsRegFcPortHA FcAddressIdOrZero, + isnsRegFcPortAddressType InetAddressType, + isnsRegFcPortAddress InetAddress, + isnsRegFcPortFcCos IsnsFcClassOfServiceType, + isnsRegFcPortFc4Types OCTET STRING, + isnsRegFcPortFc4Descr SnmpAdminString, + isnsRegFcPortFc4Features OCTET STRING, + isnsRegFcPortScnTypes IsnsIfcpScnType, + isnsRegFcPortRole IsnsFcPortRoleType, + isnsRegFcPortFcNodeWwnn FcNameIdOrZero, + isnsRegFcPortPpnWwn FcNameIdOrZero + } + + isnsRegFcPortWwpn OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The FC Port's World Wide Port Name as defined in the iSNS + Specification, RFC 4171. A zero-length string is not valid + for this managed object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 1 } + + isnsRegFcPortID OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port's Port ID as defined in the iSNS Specification, + RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 2 } + + isnsRegFcPortType OBJECT-TYPE + SYNTAX Unsigned32 ( 0 .. 65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Type as defined in the iSNS Specification, + RFC 4171, and the Fibre Channel Generic Services + Specification. Current values are as shown below: + unknown (0), + nPort (1), + + + + nlPort (2), + fNlPort (3), + fPort (129), -- x'81' + flPort (130), -- x'82' + ePort (132), -- x'84' + bPort (133), -- x'85' + mFcpPort (65297), -- x'FF11' + iFcpPort (65298), -- x'FF12' + unknownEnd (65535) + The future assignment of any additional values will be + documented in a revision of RFC 4171." + REFERENCE "RFC 4171, Section 6.6.3" + ::= { isnsRegFcPortEntry 3 } + + isnsRegFcPortSymbolicName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Symbolic Name as defined in the iSNS + Specification, RFC 4171. If not provided, then the + string SHALL be zero-length." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 4 } + + isnsRegFcPortFabricPortWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fabric Port WWN for this entry as defined in the iSNS + Specification, RFC 4171. A zero-length string for this + managed object indicates that the Fabric Port WWN is not + known, or has not yet been registered with the iSNS Server." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 5 } + + isnsRegFcPortHA OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Hard Address as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 6 } + + isnsRegFcPortAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet address in isnsRegFcPortAddress. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsRegFcPortAddress is the zero-length string." + ::= { isnsRegFcPortEntry 7 } + + isnsRegFcPortAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Inet Address as defined in the iSNS + Specification, RFC 4171. The format of this object is + specified by isnsRegFcPortAddressType." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 8 } + + isnsRegFcPortFcCos OBJECT-TYPE + SYNTAX IsnsFcClassOfServiceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Class of Service as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 9 } + + isnsRegFcPortFc4Types OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port FC-4 Types as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6.6.9" + ::= { isnsRegFcPortEntry 10 } + + isnsRegFcPortFc4Descr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(4..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The FC Port FC-4 Descriptor as defined in the iSNS + Specification, RFC 4171. The FC-4 Descriptor cannot be + longer than 255 bytes. The iSNS Server internal maximum + size is 256 bytes to provide NULL termination." + REFERENCE "RFC 4171, Section 6.6.10" + ::= { isnsRegFcPortEntry 11 } + + isnsRegFcPortFc4Features OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port FC-4 Features as defined in the iSNS + Specification, RFC 4171." + REFERENCE "RFC 4171, Section 6.6.11" + ::= { isnsRegFcPortEntry 12 } + + isnsRegFcPortScnTypes OBJECT-TYPE + SYNTAX IsnsIfcpScnType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The iFCP State Change Notification (SCN) types enabled for + the registered object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 13 } + + isnsRegFcPortRole OBJECT-TYPE + SYNTAX IsnsFcPortRoleType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Port Role defines the role of the registered + object." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 14 } + + isnsRegFcPortFcNodeWwnn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC Node World Wide Node Name that is associated with + this FC Port as defined in the iSNS Specification, RFC 4171. + This managed object may contain a zero-length string prior + to a device registering this value with the iSNS Server." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 15 } + + + + + isnsRegFcPortPpnWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Permanent Port Name (PPN) attribute is the FC Port Name WWPN + of the first Storage Node registered in the iSNS Database + that is associated with a particular FC Device (FC Node). + The PPN of all subsequent Storage Node registrations that + are associated with that FC Device (FC Node) SHALL be set + to the FC Port Name WWPN of the first Storage Node, as + defined in the iSNS Specification, RFC 4171. This managed + object may contain a zero-length string prior to a device + registering this value with the iSNS Server." + REFERENCE "RFC 4171, Section 6" + ::= { isnsRegFcPortEntry 16 } + + -- + -- Mapping from FC Node to Entity - FC Port + -- + + isnsRegFcNodePortTable OBJECT-TYPE + SYNTAX SEQUENCE OF + IsnsRegFcNodePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the mapping of a registered FC Node and + associated registered iFCP Port to the supporting registered + Entity object in an iSNS Server instance." + ::= { isnsRegFcNodeInfo 3 } + + isnsRegFcNodePortEntry OBJECT-TYPE + SYNTAX IsnsRegFcNodePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on one mapping from an FC Node and iFCP Port to + an Entity object registered in an iSNS." + INDEX { isnsServerIndex, + isnsRegFcNodeWwnn, + isnsRegFcPortWwpn } + ::= { isnsRegFcNodePortTable 1 } + + IsnsRegFcNodePortEntry ::= SEQUENCE { + isnsRegFcNodePortEntityIndex IsnsEntityIndexIdOrZero + } + + + + + isnsRegFcNodePortEntityIndex OBJECT-TYPE + SYNTAX IsnsEntityIndexIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Entity Index for the registered Entity object + associated with the FC Port and FC Node. This managed + object may contain the value of zero prior to a device + registering this value with the iSNS Server." + ::= { isnsRegFcNodePortEntry 1 } + + -- + -- iSNS Notifications Information ----------------- + -- + + isnsNotificationsInfo OBJECT IDENTIFIER + ::= { isnsObjects 2 } + + isnsInstanceInfo OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Textual information about the notification event and the + iSNS Server generating the notification. An example is: + iSNS Server Started." + ::= { isnsNotificationsInfo 1 } + + isnsAddressNotificationType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The type of Inet address in isnsAddressNotification. If + the address is specified, then it must be a valid unicast + address and the value of this object must be ipv4(1), + ipv6(2), ipv4z(3), or ipv6z(4); otherwise, the value + of this object is unknown(0), and the value of + isnsAddressNotification is the zero-length string." + ::= { isnsNotificationsInfo 2 } + + isnsAddressNotification OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Identifies the IP address of the iSNS Server. The format of + + + + this object is specified by isnsAddressNotificationType. + The IP address will always be specified in the notification + unless an error causes the IP address to not be known." + ::= { isnsNotificationsInfo 3 } + + isnsTcpPortNotification OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Indicates the TCP port the iSNS Server is using, + or 0 if TCP-based registrations are not supported." + ::= { isnsNotificationsInfo 4 } + + isnsUdpPortNotification OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Indicates the UDP port the iSNS Server is using, + or 0 if UDP-based registrations are not supported." + ::= { isnsNotificationsInfo 5 } + + -- + -- iSNS Notification Block ----------------- + -- + + isnsServerStart NOTIFICATION-TYPE + OBJECTS { + isnsInstanceInfo, + isnsAddressNotificationType, + isnsAddressNotification, + isnsTcpPortNotification, + isnsUdpPortNotification + } + STATUS current + DESCRIPTION + "This notification is sent when an iSNS Server begins + operation. The notification provides the following: + isnsInstanceInfo : iSNS Server textual information + isnsAddressTypeNotification : iSNS Server address type + isnsAddressNotification : iSNS Server address + isnsTcpPortNotification : iSNS Server TCP Port + isnsUdpPortNotification : iSNS Server UDP Port + " + ::= { isnsNotifications 1 } + + isnsServerShutdown NOTIFICATION-TYPE + + + + OBJECTS { + isnsInstanceInfo, + isnsAddressNotificationType, + isnsAddressNotification, + isnsTcpPortNotification, + isnsUdpPortNotification + } + STATUS current + DESCRIPTION + "This notification is sent when an iSNS Server is + shutdown. The notification provides the following: + isnsInstanceInfo : iSNS Server textual information + isnsAddressTypeNotification : iSNS Server address type + isnsAddressNotification : iSNS Server address + isnsTcpPortNotification : iSNS Server TCP Port + isnsUdpPortNotification : iSNS Server UDP Port + " + ::= { isnsNotifications 2 } + + ------------------------------------------------------------ + -- + -- Compliance Information + -- + + isnsCompliances OBJECT IDENTIFIER ::= { isnsConformance 1 } + + isnsIscsiServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Initial compliance statement for an iSNS Server + providing support to iSCSI clients." + MODULE -- this module + MANDATORY-GROUPS { + isnsServerAttributesGroup, + isnsServerIscsiControlNodeGroup, + isnsServerIscsiDdsDdObjGroup, + isnsServerRegIscsiObjGroup, + isnsServerNumObjectsGroup, + isnsNotificationsObjGroup, + isnsServerNotificationGroup + } + OBJECT isnsServerDiscoveryMcGroupType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + + + + OBJECT isnsServerDiscoveryMcGroupAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsDdPortalMemberAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsDdPortalMemberAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsRegEntityManagementAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsRegEntityManagementAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsRegPortalAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsRegPortalAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsRegPgPortalAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + + + + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsRegPgPortalAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + + OBJECT isnsAddressNotificationType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, ipv6z + is required." + + OBJECT isnsAddressNotification + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z + and their related SIZE need to be supported." + ::= { isnsCompliances 1 } + + isnsIfcpServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Initial compliance statement for an iSNS Server + providing support to iFCP Clients." + MODULE -- this module + MANDATORY-GROUPS { + isnsServerAttributesGroup, + isnsServerIfcpPortControlNodeGroup, + isnsServerIfcpDdsDdObjGroup, + isnsServerRegIfcpObjGroup, + isnsServerNumObjectsGroup, + isnsNotificationsObjGroup, + isnsServerNotificationGroup + } + OBJECT isnsServerDiscoveryMcGroupType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsServerDiscoveryMcGroupAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + + + + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsDdPortalMemberAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsDdPortalMemberAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsRegEntityManagementAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsRegEntityManagementAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsRegPortalAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsRegPortalAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsRegFcNodeAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + + + + is required." + + OBJECT isnsRegFcNodeAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsRegFcPortAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsRegFcPortAddress + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + + OBJECT isnsAddressNotificationType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "Only support for unknown, ipv4, ipv6, ipv4z, and ipv6z + is required." + + OBJECT isnsAddressNotification + SYNTAX InetAddress (SIZE (0 | 4 | 8 | 16 | 20 )) + DESCRIPTION + "Only addresses for unknown, ipv4, ipv6, ipv4z, ipv6z, + and their related SIZE need to be supported." + ::= { isnsCompliances 2 } + +isnsGroups OBJECT IDENTIFIER ::= { isnsConformance 2 } + + isnsServerAttributesGroup OBJECT-GROUP + OBJECTS { + isnsServerName, + isnsServerIsnsVersion, + isnsServerVendorInfo, + isnsServerPhysicalIndex, + isnsServerTcpPort, + isnsServerUdpPort, + isnsServerDiscontinuityTime, + isnsServerRole, + isnsServerDiscoveryMethodsEnabled, + + + + isnsServerDiscoveryMcGroupType, + isnsServerDiscoveryMcGroupAddress, + isnsServerEsiNonResponseThreshold, + isnsServerEnableControlNodeMgtScn, + isnsServerDefaultDdDdsStatus, + isnsServerUpdateDdDdsSupported, + isnsServerUpdateDdDdsEnabled + } + STATUS current + DESCRIPTION + "iSNS Server attributes." + ::= { isnsGroups 1 } + + isnsServerNumObjectsGroup OBJECT-GROUP + OBJECTS { + isnsNumDds, + isnsNumDd, + isnsNumEntities, + isnsNumPortals, + isnsNumPortalGroups, + isnsNumIscsiNodes, + isnsNumFcPorts, + isnsNumFcNodes, + isnsRegEntityInfoNumPortals, + isnsRegEntityInfoNumPortalGroups, + isnsRegEntityInfoNumIscsiNodes, + isnsRegEntityInfoNumFcPorts, + isnsRegEntityInfoNumFcNodes + } + STATUS current + DESCRIPTION + "Managed objects indicating the number of registered objects + in an iSNS Server or the number of registered objects + associated with a registered Entity. These managed objects + are optional to implement." + ::= { isnsGroups 2 } + + isnsServerIscsiControlNodeGroup OBJECT-GROUP + OBJECTS { + isnsControlNodeIscsiNodeName, + isnsControlNodeIscsiIsRegistered, + isnsControlNodeIscsiRcvMgtSCN + } + STATUS current + DESCRIPTION + "iSNS Server iSCSI control node managed objects." + ::= { isnsGroups 3 } + + + + + isnsServerIfcpPortControlNodeGroup OBJECT-GROUP + OBJECTS { + isnsControlNodeFcPortIsRegistered, + isnsControlNodeFcPortRcvMgtSCN + } + STATUS current + DESCRIPTION + "iSNS Server iFCP Port control node managed objects." + ::= { isnsGroups 4 } + + isnsServerIscsiDdsDdObjGroup OBJECT-GROUP + OBJECTS { + isnsDdsSymbolicName, + isnsDdsStatus, + isnsDdsMemberSymbolicName, + isnsDdSymbolicName, + isnsDdFeatures, + isnsDdIscsiMemberName, + isnsDdIscsiMemberIsRegistered, + isnsDdPortalMemberAddressType, + isnsDdPortalMemberAddress, + isnsDdPortalMemberPortType, + isnsDdPortalMemberPort, + isnsDdPortalMemberIsRegistered + } + STATUS current + DESCRIPTION + "iSNS Server DDS and DD managed objects for iSCSI." + ::= { isnsGroups 5 } + + isnsServerIfcpDdsDdObjGroup OBJECT-GROUP + OBJECTS { + isnsDdsSymbolicName, + isnsDdsStatus, + isnsDdSymbolicName, + isnsDdFeatures, + isnsDdPortalMemberAddressType, + isnsDdPortalMemberAddress, + isnsDdPortalMemberPortType, + isnsDdPortalMemberPort, + isnsDdPortalMemberIsRegistered, + isnsDdFcPortMemberIsRegistered + } + STATUS current + DESCRIPTION + "iSNS Server DDS and DD managed objects for iFCP." + ::= { isnsGroups 6 } + + + + + isnsServerRegIscsiObjGroup OBJECT-GROUP + OBJECTS { + isnsRegEntityEID, + isnsRegEntityProtocol, + isnsRegEntityManagementAddressType, + isnsRegEntityManagementAddress, + isnsRegEntityTimestamp, + isnsRegEntityVersionMin, + isnsRegEntityVersionMax, + isnsRegEntityRegistrationPeriod, + isnsRegEntityInfoNumPortals, + isnsRegEntityInfoNumPortalGroups, + isnsRegEntityInfoNumIscsiNodes, + isnsRegEntityInfoNumFcPorts, + isnsRegEntityInfoNumFcNodes, + isnsRegPortalAddressType, + isnsRegPortalAddress, + isnsRegPortalPortType, + isnsRegPortalPort, + isnsRegPortalSymbolicName, + isnsRegPortalEsiInterval, + isnsRegPortalEsiPortType, + isnsRegPortalEsiPort, + isnsRegPortalScnPortType, + isnsRegPortalScnPort, + isnsRegPortalSecurityInfo, + isnsRegPgIscsiNodeIndex, + isnsRegPgIscsiName, + isnsRegPgPortalPortalIndex, + isnsRegPgPortalAddressType, + isnsRegPgPortalAddress, + isnsRegPgPortalPortType, + isnsRegPgPortalPort, + isnsRegPgPGT, + isnsRegIscsiNodeName, + isnsRegIscsiNodeType, + isnsRegIscsiNodeAlias, + isnsRegIscsiNodeScnTypes, + isnsRegIscsiNodeWwnToken, + isnsRegIscsiNodeAuthMethod + } + STATUS current + DESCRIPTION + "iSNS Server registered iSCSI managed objects." + ::= { isnsGroups 7 } + + isnsServerRegIfcpObjGroup OBJECT-GROUP + OBJECTS { + + + + isnsRegEntityEID, + isnsRegEntityProtocol, + isnsRegEntityManagementAddressType, + isnsRegEntityManagementAddress, + isnsRegEntityTimestamp, + isnsRegEntityVersionMin, + isnsRegEntityVersionMax, + isnsRegEntityRegistrationPeriod, + isnsRegEntityInfoNumPortals, + isnsRegEntityInfoNumPortalGroups, + isnsRegEntityInfoNumIscsiNodes, + isnsRegEntityInfoNumFcPorts, + isnsRegEntityInfoNumFcNodes, + isnsRegPortalAddressType, + isnsRegPortalAddress, + isnsRegPortalPortType, + isnsRegPortalPort, + isnsRegPortalSymbolicName, + isnsRegPortalEsiInterval, + isnsRegPortalEsiPortType, + isnsRegPortalEsiPort, + isnsRegPortalScnPortType, + isnsRegPortalScnPort, + isnsRegPortalSecurityInfo, + isnsRegFcPortID, + isnsRegFcPortType, + isnsRegFcPortSymbolicName, + isnsRegFcPortFabricPortWwn, + isnsRegFcPortHA, + isnsRegFcPortAddressType, + isnsRegFcPortAddress, + isnsRegFcPortFcCos, + isnsRegFcPortFc4Types, + isnsRegFcPortFc4Descr, + isnsRegFcPortFc4Features, + isnsRegFcPortScnTypes, + isnsRegFcPortRole, + isnsRegFcPortFcNodeWwnn, + isnsRegFcPortPpnWwn, + isnsRegFcNodeSymbolicName, + isnsRegFcNodeAddressType, + isnsRegFcNodeAddress, + isnsRegFcNodeIPA, + isnsRegFcNodeProxyIscsiName, + isnsRegFcNodeNumFcPorts, + isnsRegFcNodePortEntityIndex + } + STATUS current + + + + DESCRIPTION + "iSNS Server registered iFCP managed objects." + ::= { isnsGroups 8 } + + isnsNotificationsObjGroup OBJECT-GROUP + OBJECTS { + isnsInstanceInfo, + isnsAddressNotificationType, + isnsAddressNotification, + isnsTcpPortNotification, + isnsUdpPortNotification + } + STATUS current + DESCRIPTION + "iSNS Notification managed objects." + ::= { isnsGroups 9 } + + isnsServerNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + isnsServerStart, + isnsServerShutdown + } + STATUS current + DESCRIPTION + "iSNS Server Notification managed objects." + ::= { isnsGroups 10 } +END diff --git a/mibs/ietf/ITU-ALARM-MIB b/mibs/ietf/ITU-ALARM-MIB new file mode 100644 index 0000000..2a1020f --- /dev/null +++ b/mibs/ietf/ITU-ALARM-MIB @@ -0,0 +1,502 @@ +ITU-ALARM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Gauge32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + AutonomousType, RowPointer + FROM SNMPv2-TC -- [RFC2579] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + alarmListName, alarmModelIndex, + alarmActiveDateAndTime, alarmActiveIndex + FROM ALARM-MIB -- [RFC3877] + ItuPerceivedSeverity, + ItuTrendIndication + FROM ITU-ALARM-TC-MIB -- [RFC3877] + IANAItuProbableCause, + IANAItuEventType + FROM IANA-ITU-ALARM-TC-MIB -- [RFC3877] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ZeroBasedCounter32 + FROM RMON2-MIB; -- [RFC2021] + + ituAlarmMIB MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "WG EMail: disman@ietf.org + Subscribe: disman-request@ietf.org + http://www.ietf.org/html.charters/disman-charter.html + + Chair: Randy Presuhn + randy_presuhn@mindspring.com + + Editors: Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortelnetworks.com + + Dan Romascanu + Avaya + Atidim Technology Park, Bldg. #3 + Tel Aviv, 61131 + + + Israel + Tel: +972-3-645-8414 + Email: dromasca@avaya.com" + DESCRIPTION + "The MIB module describes ITU Alarm information + as defined in ITU Recommendation M.3100 [M.3100], + X.733 [X.733] and X.736 [X.736]. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3877." + ::= { mib-2 121 } + +ituAlarmObjects OBJECT IDENTIFIER ::= { ituAlarmMIB 1 } + +ituAlarmModel OBJECT IDENTIFIER ::= { ituAlarmObjects 1 } + +ituAlarmActive OBJECT IDENTIFIER ::= { ituAlarmObjects 2 } + +ituAlarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF ItuAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ITU Alarm information for possible alarms + on the system." + ::= { ituAlarmModel 1 } + +ituAlarmEntry OBJECT-TYPE + SYNTAX ItuAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table whenever an entry is created + in the alarmModelTable with a value of alarmModelState in + the range from 1 to 6. Entries disappear from this table + whenever the corresponding entries are deleted from the + alarmModelTable, including in cases where those entries + have been deleted due to local system action. The value of + alarmModelSpecificPointer has no effect on the creation + or deletion of entries in this table. Values of + alarmModelState map to values of ituAlarmPerceivedSeverity + as follows: + + + alarmModelState -> ituAlarmPerceivedSeverity + 1 -> clear (1) + 2 -> indeterminate (2) + 3 -> warning (6) + 4 -> minor (5) + 5 -> major (4) + 6 -> critical (3) + + All other values of alarmModelState MUST NOT appear + in this table. + + This table MUST be persistent across system reboots." + INDEX { alarmListName, alarmModelIndex, + ituAlarmPerceivedSeverity } + ::= { ituAlarmTable 1 } + +ItuAlarmEntry ::= SEQUENCE { + ituAlarmPerceivedSeverity ItuPerceivedSeverity, + ituAlarmEventType IANAItuEventType, + ituAlarmProbableCause IANAItuProbableCause, + ituAlarmAdditionalText SnmpAdminString, + ituAlarmGenericModel RowPointer } + +ituAlarmPerceivedSeverity OBJECT-TYPE + SYNTAX ItuPerceivedSeverity + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "ITU perceived severity values." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + ::= { ituAlarmEntry 1 } + +ituAlarmEventType OBJECT-TYPE + SYNTAX IANAItuEventType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Represents the event type values for the alarms" + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + + + Reporting Function', 1992 + ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmEntry 2 } + +ituAlarmProbableCause OBJECT-TYPE + SYNTAX IANAItuProbableCause + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "ITU probable cause values." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992 + ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmEntry 3 } + +ituAlarmAdditionalText OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Represents the additional text field for the alarm." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + ::= { ituAlarmEntry 4} + +ituAlarmGenericModel OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object points to the corresponding + row in the alarmModelTable for this alarm severity. + + This corresponding entry to alarmModelTable could also + be derived by performing the reverse of the mapping + from alarmModelState to ituAlarmPerceivedSeverity defined + + + in the description of ituAlarmEntry to determine the + appropriate { alarmListName, alarmModelIndex, alarmModelState } + for this { alarmListName, alarmModelIndex, + ituAlarmPerceivedSeverity }." + ::= { ituAlarmEntry 5 } + +-- ITU Active Alarm Table -- + +ituAlarmActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF ItuAlarmActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ITU information for active alarms entries." + ::= { ituAlarmActive 1 } + +ituAlarmActiveEntry OBJECT-TYPE + SYNTAX ItuAlarmActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries appear in this table when alarms are active. They + are removed when the alarm is no longer occurring." + INDEX { alarmListName, alarmActiveDateAndTime, + alarmActiveIndex } + ::= { ituAlarmActiveTable 1 } + +ItuAlarmActiveEntry ::= SEQUENCE { + ituAlarmActiveTrendIndication ItuTrendIndication, + ituAlarmActiveDetector AutonomousType, + ituAlarmActiveServiceProvider AutonomousType, + ituAlarmActiveServiceUser AutonomousType + } + +ituAlarmActiveTrendIndication OBJECT-TYPE + SYNTAX ItuTrendIndication + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Represents the trend indication values for the alarms." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + ::= { ituAlarmActiveEntry 1 } + + + +ituAlarmActiveDetector OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Represents the SecurityAlarmDetector object." + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmActiveEntry 2 } + +ituAlarmActiveServiceProvider OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Represents the ServiceProvider object." + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmActiveEntry 3 } + +ituAlarmActiveServiceUser OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Represents the ServiceUser object." + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmActiveEntry 4 } + +-- Statistics and Counters + +ituAlarmActiveStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ItuAlarmActiveStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the ITU alarm statistics + information." + ::= { ituAlarmActive 2 } + + + + +ituAlarmActiveStatsEntry OBJECT-TYPE + SYNTAX ItuAlarmActiveStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics on the current active ITU alarms." + INDEX { alarmListName } + + ::= { ituAlarmActiveStatsTable 1 } + +ItuAlarmActiveStatsEntry ::= + SEQUENCE { + ituAlarmActiveStatsIndeterminateCurrent Gauge32, + ituAlarmActiveStatsCriticalCurrent Gauge32, + ituAlarmActiveStatsMajorCurrent Gauge32, + ituAlarmActiveStatsMinorCurrent Gauge32, + ituAlarmActiveStatsWarningCurrent Gauge32, + ituAlarmActiveStatsIndeterminates ZeroBasedCounter32, + ituAlarmActiveStatsCriticals ZeroBasedCounter32, + ituAlarmActiveStatsMajors ZeroBasedCounter32, + ituAlarmActiveStatsMinors ZeroBasedCounter32, + ituAlarmActiveStatsWarnings ZeroBasedCounter32 + } + +ituAlarmActiveStatsIndeterminateCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + ituAlarmPerceivedSeverity of indeterminate." + ::= { ituAlarmActiveStatsEntry 1 } + +ituAlarmActiveStatsCriticalCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + ituAlarmPerceivedSeverity of critical." + ::= { ituAlarmActiveStatsEntry 2 } + +ituAlarmActiveStatsMajorCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + + + ituAlarmPerceivedSeverity of major." + ::= { ituAlarmActiveStatsEntry 3 } + +ituAlarmActiveStatsMinorCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + ituAlarmPerceivedSeverity of minor." + ::= { ituAlarmActiveStatsEntry 4 } + +ituAlarmActiveStatsWarningCurrent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the current number of active alarms with a + ituAlarmPerceivedSeverity of warning." + ::= { ituAlarmActiveStatsEntry 5 } + +ituAlarmActiveStatsIndeterminates OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of indeterminate since system + restart." + ::= { ituAlarmActiveStatsEntry 6 } + +ituAlarmActiveStatsCriticals OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of critical since system restart." + ::= { ituAlarmActiveStatsEntry 7 } + +ituAlarmActiveStatsMajors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of major since system restart." + ::= { ituAlarmActiveStatsEntry 8 } + + +ituAlarmActiveStatsMinors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of minor since system restart." + ::= { ituAlarmActiveStatsEntry 9 } + +ituAlarmActiveStatsWarnings OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the total number of active alarms with a + ituAlarmPerceivedSeverity of warning since system restart." + ::= { ituAlarmActiveStatsEntry 10 } + +-- Conformance + +ituAlarmConformance OBJECT IDENTIFIER ::= { ituAlarmMIB 2 } +ituAlarmCompliances OBJECT IDENTIFIER ::= { ituAlarmConformance 1 } + +ituAlarmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems supporting + the ITU Alarm MIB." + MODULE -- this module + MANDATORY-GROUPS { + ituAlarmGroup + } + GROUP ituAlarmServiceUserGroup + DESCRIPTION + "This group is optional." + GROUP ituAlarmSecurityGroup + DESCRIPTION + "This group is optional." + GROUP ituAlarmStatisticsGroup + DESCRIPTION + "This group is optional." + ::= { ituAlarmCompliances 1 } + +ituAlarmGroups OBJECT IDENTIFIER ::= { ituAlarmConformance 2 } + +ituAlarmGroup OBJECT-GROUP + OBJECTS { + ituAlarmEventType, + + + ituAlarmProbableCause, + ituAlarmGenericModel + } + STATUS current + DESCRIPTION + "ITU alarm details list group." + ::= { ituAlarmGroups 1} + +ituAlarmServiceUserGroup OBJECT-GROUP + OBJECTS { + ituAlarmAdditionalText, + ituAlarmActiveTrendIndication + } + STATUS current + DESCRIPTION + "The use of these parameters is a service-user option." + ::= { ituAlarmGroups 2 } + +ituAlarmSecurityGroup OBJECT-GROUP + OBJECTS { + ituAlarmActiveDetector, + ituAlarmActiveServiceProvider, + ituAlarmActiveServiceUser + } + STATUS current + DESCRIPTION + "Security Alarm Reporting Function" + REFERENCE + "ITU Recommendation X.736, 'Information Technology - Open + Systems Interconnection - System Management: Security + Alarm Reporting Function', 1992" + ::= { ituAlarmGroups 3 } + +ituAlarmStatisticsGroup OBJECT-GROUP + OBJECTS { + ituAlarmActiveStatsIndeterminateCurrent, + ituAlarmActiveStatsCriticalCurrent, + ituAlarmActiveStatsMajorCurrent, + ituAlarmActiveStatsMinorCurrent, + ituAlarmActiveStatsWarningCurrent, + ituAlarmActiveStatsIndeterminates, + ituAlarmActiveStatsCriticals, + ituAlarmActiveStatsMajors, + ituAlarmActiveStatsMinors, + ituAlarmActiveStatsWarnings + } + STATUS current + DESCRIPTION + + + "ITU Active Alarm Statistics." + ::= { ituAlarmGroups 4 } + +END diff --git a/mibs/ietf/ITU-ALARM-TC-MIB b/mibs/ietf/ITU-ALARM-TC-MIB new file mode 100644 index 0000000..13428b9 --- /dev/null +++ b/mibs/ietf/ITU-ALARM-TC-MIB @@ -0,0 +1,89 @@ +ITU-ALARM-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + + ituAlarmTc MODULE-IDENTITY + LAST-UPDATED "200409090000Z" -- September 09, 2004 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + " WG EMail: disman@ietf.org + Subscribe: disman-request@ietf.org + http://www.ietf.org/html.charters/disman-charter.html + + Chair: Randy Presuhn + randy_presuhn@mindspring.com + + Editors: Sharon Chisholm + Nortel Networks + PO Box 3511 Station C + Ottawa, Ont. K1Y 4H7 + Canada + schishol@nortelnetworks.com + + Dan Romascanu + Avaya + Atidim Technology Park, Bldg. #3 + Tel Aviv, 61131 + Israel + Tel: +972-3-645-8414 + Email: dromasca@avaya.com" + DESCRIPTION + "This MIB module defines the ITU Alarm + textual convention for objects not expected to require + regular extension. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3877. For full legal notices see the RFC + itself. Supplementary information may be available on: + http://www.ietf.org/copyrights/ianamib.html" + REVISION "200409090000Z" -- September 09, 2004 + DESCRIPTION + "Initial version, published as RFC 3877." + + + + ::= { mib-2 120 } + +ItuPerceivedSeverity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ITU perceived severity values" + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + SYNTAX INTEGER + { + cleared (1), + indeterminate (2), + critical (3), + major (4), + minor (5), + warning (6) + } + +ItuTrendIndication ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "ITU trend indication values for alarms." + REFERENCE + "ITU Recommendation M.3100, 'Generic Network Information + Model', 1995 + ITU Recommendation X.733, 'Information Technology - Open + Systems Interconnection - System Management: Alarm + Reporting Function', 1992" + SYNTAX INTEGER + { + moreSevere (1), + noChange (2), + lessSevere (3) + } + +END diff --git a/mibs/ietf/Job-Monitoring-MIB b/mibs/ietf/Job-Monitoring-MIB new file mode 100644 index 0000000..0eb7cfc --- /dev/null +++ b/mibs/ietf/Job-Monitoring-MIB @@ -0,0 +1,1732 @@ +Job-Monitoring-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, enterprises, + Integer32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + -- The following textual-conventions are needed to implement + -- certain attributes, but are not needed to compile this MIB. + -- They are provided here for convenience: + -- hrDeviceIndex FROM HOST-RESOURCES-MIB + -- DateAndTime FROM SNMPv2-TC + -- PrtInterpreterLangFamilyTC, + -- CodedCharSet FROM Printer-MIB + +-- Use the enterprises arc assigned to the PWG which is pwg(2699). +-- Group all PWG mibs under mibs(1). + +jobmonMIB MODULE-IDENTITY + LAST-UPDATED "9902190000Z" + ORGANIZATION "Printer Working Group (PWG)" + CONTACT-INFO + "Tom Hastings + Postal: Xerox Corp. + Mail stop ESAE-231 + 701 S. Aviation Blvd. + El Segundo, CA 90245 + + Tel: (301)333-6413 + Fax: (301)333-5514 + E-mail: hastings@cp10.es.xerox.com + + Send questions and comments to the Printer Working Group (PWG) + using the Job Monitoring Project (JMP) Mailing List: + jmp@pwg.org + + For further information, including how to subscribe to the + jmp mailing list, access the PWG web page under 'JMP': + + http://www.pwg.org/ + + Implementers of this specification are encouraged to join the + jmp mailing list in order to participate in discussions on any + clarifications needed and registration proposals being reviewed + in order to achieve consensus." + DESCRIPTION + "The MIB module for monitoring job in servers, printers, and + other devices. + + Version: 1.0" + + -- revision history + REVISION "9902190000Z" + DESCRIPTION " This version published as RFC 2707" + + ::= { enterprises pwg(2699) mibs(1) jobmonMIB(1) } + +-- Textual conventions for this MIB module + +JmUTF8StringTC ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC represents + information taken from the ISO/IEC IS 10646-1 character set, + encoded as an octet string using the UTF-8 character encoding + scheme. + + See section 3.6.1, entitled: 'Text generated by the server or + device'." + SYNTAX OCTET STRING (SIZE (0..63)) + + + + +JmJobStringTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC represents + information using any coded character set registered by IANA as + specified in section 3.7. While it is recommended that the + coded character set be UTF-8 [UTF-8], the actual coded + character set SHALL be indicated by the value of the + jobCodedCharSet(8) attribute for the job. + + See section 3.6.2, entitled: 'Text supplied by the job + submitter'." + SYNTAX OCTET STRING (SIZE (0..63)) + +JmNaturalLanguageTagTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An IETF RFC 1766-compliant 'language tag', with zero or more + sub-tags that identify a natural language. While RFC 1766 + specifies that the US-ASCII values are case-insensitive, this + MIB specification requires that all characters SHALL be lower + case in order to simplify comparing by management applications. + + See section 3.6.1, entitled: 'Text generated by the server or + device' and section 3.6.2, entitled: 'Text supplied by the job + submitter'." + SYNTAX OCTET STRING (SIZE (0..63)) + + + +JmTimeStampTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The simple time at which an event took place. The units are + in seconds since the system was booted. + + NOTE - JmTimeStampTC is defined in units of seconds, rather + than 100ths of seconds, so as to be simpler for agents to + implement (even if they have to implement the 100ths of a + second to comply with implementing sysUpTime in MIB-II[mib- + II].) + + NOTE - JmTimeStampTC is defined as an Integer32 so that it can + be used as a value of an attribute, i.e., as a value of the + jmAttributeValueAsInteger object. The TimeStamp textual- + convention defined in SNMPv2-TC [SMIv2-TC] is defined as an + APPLICATION 3 IMPLICIT INTEGER tag, not an Integer32 which is + defined in SNMPv2-SMI [SMIv2-TC] as UNIVERSAL 2 IMPLICIT + INTEGER, so cannot be used in this MIB as one of the values of + jmAttributeValueAsInteger." + SYNTAX INTEGER (0..2147483647) + + + + +JmJobSourcePlatformTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The source platform type that can submit jobs to servers or + devices in any of the 3 configurations. + + This is a type 2 enumeration. See Section 3.7.1.2. See also + IANA operating-system-names registry." + SYNTAX INTEGER { + other(1), + unknown(2), + sptUNIX(3), -- UNIX + sptOS2(4), -- OS/2 + sptPCDOS(5), -- DOS + sptNT(6), -- NT + sptMVS(7), -- MVS + sptVM(8), -- VM + sptOS400(9), -- OS/400 + sptVMS(10), -- VMS + sptWindows(11), -- Windows + sptNetWare(12) -- NetWare + } + + + +JmFinishingTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of finishing operation. + + These values are the same as the enum values of the IPP + 'finishings' attribute. See Section 3.7.1.2. + + other(1), + Some other finishing operation besides one of the specified + or registered values. + + unknown(2), + The finishing is unknown. + + none(3), + Perform no finishing. + + staple(4), + Bind the document(s) with one or more staples. The exact + number and placement of the staples is site-defined. + + punch(5), + Holes are required in the finished document. The exact + number and placement of the holes is site-defined. The + punch specification MAY be satisfied (in a site- and + implementation-specific manner) either by + drilling/punching, or by substituting pre-drilled media. + + cover(6), + Select a non-printed (or pre-printed) cover for the + document. This does not supplant the specification of a + printed cover (on cover stock medium) by the document + itself. + + bind(7) + Binding is to be applied to the document; the type and + placement of the binding is product-specific. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + other(1), + unknown(2), + none(3), + staple(4), + punch(5), + cover(6), + bind(7) + } + + +JmPrintQualityTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Print quality settings. + + These values are the same as the enum values of the IPP 'print- + quality' attribute. See Section 3.7.1.2. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + other(1), -- Not one of the specified or registered + -- values. + unknown(2), -- The actual value is unknown. + draft(3), -- Lowest quality available on the printer. + normal(4), -- Normal or intermediate quality on the + -- printer. + high(5) -- Highest quality available on the printer. + } + + + +JmPrinterResolutionTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Printer resolutions. + + Nine octets consisting of two 4-octet SIGNED-INTEGERs followed + by a SIGNED-BYTE. The values are the same as those specified + in the Printer MIB [printmib]. The first SIGNED-INTEGER + contains the value of prtMarkerAddressabilityXFeedDir. The + second SIGNED-INTEGER contains the value of + prtMarkerAddressabilityFeedDir. The SIGNED-BYTE contains the + value of prtMarkerAddressabilityUnit. + + Note: the latter value is either 3 (tenThousandsOfInches) or 4 + (micrometers) and the addressability is in 10,000 units of + measure. Thus the SIGNED-INTEGERs represent integral values in + either dots-per-inch or dots-per-centimeter. + + The syntax is the same as the IPP 'printer-resolution' + attribute. See Section 3.7.1.2." + SYNTAX OCTET STRING (SIZE(9)) + + +JmTonerEconomyTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Toner economy settings. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + unknown(2), -- unknown. + off(3), -- Off. Normal. Use full toner. + on(4) -- On. Use less toner than normal. + } + + + +JmBooleanTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Boolean true or false value. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + unknown(2), -- unknown. + false(3), -- FALSE. + true(4) -- TRUE. + } + + + +JmMediumTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the type of medium. + + other(1), + The type is neither one of the values listed in this + specification nor a registered value. + + unknown(2), + The type is not known. + + stationery(3), + Separately cut sheets of an opaque material. + + transparency(4), + Separately cut sheets of a transparent material. + + envelope(5), + Envelopes that can be used for conventional mailing + purposes. + + envelopePlain(6), + Envelopes that are not preprinted and have no windows. + + envelopeWindow(7), + Envelopes that have windows for addressing purposes. + + continuousLong(8), + Continuously connected sheets of an opaque material + connected along the long edge. + + continuousShort(9), + Continuously connected sheets of an opaque material + connected along the short edge. + + tabStock(10), + Media with tabs. + + multiPartForm(11), + Form medium composed of multiple layers not pre-attached to + one another; each sheet MAY be drawn separately from an + input source. + + labels(12), + Label-stock. + + multiLayer(13) + Form medium composed of multiple layers which are pre- + attached to one another, e.g. for use with impact printers. + This is a type 2 enumeration. See Section 3.7.1.2. These enum + values correspond to the keyword name strings of the + prtInputMediaType object in the Printer MIB [print-mib]. There + is no printer description attribute in IPP/1.0 that represents + these values." + SYNTAX INTEGER { + other(1), + unknown(2), + stationery(3), + transparency(4), + envelope(5), + envelopePlain(6), + envelopeWindow(7), + continuousLong(8), + continuousShort(9), + tabStock(10), + multiPartForm(11), + labels(12), + multiLayer(13) + } + + +JmJobCollationTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This value is the type of job collation. Implementations that + don't support multiple documents or don't support multiple + copies SHALL NOT support the uncollatedDocuments(5) value. + + This is a type 2 enumeration. See Section 3.7.1.2. See also + Section 3.4, entitled 'Monitoring Job Progress'." + SYNTAX INTEGER { + other(1), + unknown(2), + uncollatedSheets(3), -- sheets within each document copy + -- are not collated: 1 1 ..., 2 2 ..., + -- No corresponding value of IPP + -- "multiple-document-handling" + collatedDocuments(4), -- internal collated sheets, + -- documents: A, B, A, B, ... + -- Corresponds to IPP "multiple- + -- document-handling"='separate- + -- documents-collated-copies' + uncollatedDocuments(5) -- internal collated sheets, + -- documents: A, A, ..., B, B, ... + -- Corresponds to IPP "multiple- + -- document-handling"='separate- + -- documents-uncollated-copies' + } + + +JmJobSubmissionIDTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the format type of a job submission ID. + + Each job submission ID is a fixed-length, 48-octet printable + US-ASCII [US-ASCII] coded character string containing no + control characters, consisting of the fields defined in section + 3.5.1. + + This is like a type 2 enumeration. See section 3.7.3." + SYNTAX OCTET STRING(SIZE(1)) -- ASCII '0'-'9', 'A'-'Z', 'a'-'z' + + + +JmJobStateTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The current state of the job (pending, processing, completed, + etc.). The following figure shows the normal job state + transitions: + + +----> canceled(7) + / + +---> pending(3) -------> processing(5) ------+------> completed(9) + | ^ ^ \ +--->+ | | +----> aborted(8) + | v v / + +---> pendingHeld(4) processingStopped(6) ---+ + + + Figure 4 - Normal Job State Transitions + + Normally a job progresses from left to right. Other state + transitions are unlikely, but are not forbidden. Not shown are + the transitions to the canceled state from the pending, + pendingHeld, and processingStopped states. + + Jobs in the pending, processing, and processingStopped states + are called 'active', while jobs in the pendingHeld, canceled, + aborted, and completed states are called 'inactive'. Jobs + reach one of the three terminal states: completed, canceled, or + aborted, after the jobs have completed all activity, and all + MIB objects and attributes have reached their final values for + the job. + These values are the same as the enum values of the IPP 'job- + state' job attribute. See Section 3.7.1.2. + + unknown(2), + The job state is not known, or its state is indeterminate. + + pending(3), + The job is a candidate to start processing, but is not yet + processing. + + pendingHeld(4), + The job is not a candidate for processing for any number of + reasons but will return to the pending state as soon as the + reasons are no longer present. The job's + jmJobStateReasons1 object and/or jobStateReasonsN (N=2..4) + attributes SHALL indicate why the job is no longer a + candidate for processing. The reasons are represented as + bits in the jmJobStateReasons1 object and/or + jobStateReasonsN (N=2..4) attributes. See the + JmJobStateReasonsNTC (N=1..4) textual convention for the + specification of each reason. + + processing(5), + One or more of: + + 1. the job is using, or is attempting to use, one or + more purely software processes that are analyzing, + creating, or interpreting a PDL, etc., + + 2. the job is using, or is attempting to use, one or + more hardware devices that are interpreting a PDL, + making mark on a medium, and/or performing finishing, + such as stapling, etc., OR + + 3. (configuration 2) the server has made the job ready + for printing, but the output device is not yet printing + it, either because the job hasn't reached the output + device or because the job is queued in the output + device or some other spooler, awaiting the output + device to print it. + + When the job is in the processing state, the entire job + state includes the detailed status represented in the + device MIB indicated by the hrDeviceIndex value of the + job's physicalDevice attribute, if the agent implements + such a device MIB. + + Implementations MAY, though they NEED NOT, include + additional values in the job's jmJobStateReasons1 object + to indicate the progress of the job, such as adding the + jobPrinting value to indicate when the device is actually + making marks on a medium and/or the processingToStopPoint + value to indicate that the server or device is in the + process of canceling or aborting the job. + + processingStopped(6), + The job has stopped while processing for any number of + reasons and will return to the processing state as soon + as the reasons are no longer present. + + The job's jmJobStateReasons1 object and/or the job's + jobStateReasonsN (N=2..4) attributes MAY indicate why the + job has stopped processing. For example, if the output + device is stopped, the deviceStopped value MAY be + included in the job's jmJobStateReasons1 object. + + NOTE - When an output device is stopped, the device + usually indicates its condition in human readable form + at the device. The management application can obtain + more complete device status remotely by querying the + appropriate device MIB using the job's deviceIndex + attribute(s), if the agent implements such a device MIB + + canceled(7), + A client has canceled the job and the server or device + has completed canceling the job AND all MIB objects and + attributes have reached their final values for the job. + While the server or device is canceling the job, the + job's jmJobStateReasons1 object SHOULD contain the + processingToStopPoint value and one of the + canceledByUser, canceledByOperator, or canceledAtDevice + values. The canceledByUser, canceledByOperator, or + canceledAtDevice values remain while the job is in the + canceled state. + + aborted(8), + The job has been aborted by the system, usually while the + job was in the processing or processingStopped state and + the server or device has completed aborting the job AND + all MIB objects and attributes have reached their final + values for the job. While the server or device is + aborting the job, the job's jmJobStateReasons1 object MAY + contain the processingToStopPoint and abortedBySystem + values. If implemented, the abortedBySystem value SHALL + remain while the job is in the aborted state. + completed(9) + The job has completed successfully or with warnings or + errors after processing and all of the media have been + successfully stacked in the appropriate output bin(s) AND + all MIB objects and attributes have reached their final + values for the job. The job's jmJobStateReasons1 object + SHOULD contain one of: completedSuccessfully, + completedWithWarnings, or completedWithErrors values. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + unknown(2), + pending(3), + pendingHeld(4), + processing(5), + processingStopped(6), + canceled(7), + aborted(8), + completed(9) + } + + + +JmAttributeTypeTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of the attribute which identifies the attribute. + + NOTE - The enum assignments are grouped logically with values + assigned in groups of 20, so that additional values may be + registered in the future and assigned a value that is part of + their logical grouping. + + Values in the range 2**30 to 2**31-1 are reserved for private + or experimental usage. This range corresponds to the same + range reserved in IPP. Implementers are warned that use of + such values may conflict with other implementations. + Implementers are encouraged to request registration of enum + values following the procedures in Section 3.7.1. + + See Section 3.2 entitled 'The Attribute Mechanism' for a + description of this textual-convention and its use in the + jmAttributeTable. See Section 3.3.8 for the specification of + each attribute. The comment(s) after each enum assignment + specifies the data type(s) of the attribute. + + This is a type 2 enumeration. See Section 3.7.1.2." + SYNTAX INTEGER { + other(1), -- Integer32 (-2..2147483647) + -- AND/OR + -- OCTET STRING(SIZE(0..63)) + + -- Job State attributes: + jobStateReasons2(3), -- JmJobStateReasons2TC + jobStateReasons3(4), -- JmJobStateReasons3TC + jobStateReasons4(5), -- JmJobStateReasons4TC + processingMessage(6), -- JmUTF8StringTC (SIZE(0..63)) + processingMessageNaturalLangTag(7), + -- OCTET STRING(SIZE(0..63)) + jobCodedCharSet(8), -- CodedCharSet + jobNaturalLanguageTag(9), -- OCTET STRING(SIZE(0..63)) + + + -- Job Identification attributes: + jobURI(20), -- OCTET STRING(SIZE(0..63)) + jobAccountName(21), -- OCTET STRING(SIZE(0..63)) + serverAssignedJobName(22), -- JmJobStringTC (SIZE(0..63)) + jobName(23), -- JmJobStringTC (SIZE(0..63)) + jobServiceTypes(24), -- JmJobServiceTypesTC + jobSourceChannelIndex(25), -- Integer32 (0..2147483647) + jobSourcePlatformType(26), -- JmJobSourcePlatformTypeTC + submittingServerName(27), -- JmJobStringTC (SIZE(0..63)) + submittingApplicationName(28), -- JmJobStringTC (SIZE(0..63)) + jobOriginatingHost(29), -- JmJobStringTC (SIZE(0..63)) + deviceNameRequested(30), -- JmJobStringTC (SIZE(0..63)) + queueNameRequested(31), -- JmJobStringTC (SIZE(0..63)) + physicalDevice(32), -- hrDeviceIndex + -- AND/OR + -- JmUTF8StringTC (SIZE(0..63)) + numberOfDocuments(33), -- Integer32 (-2..2147483647) + fileName(34), -- JmJobStringTC (SIZE(0..63)) + documentName(35), -- JmJobStringTC (SIZE(0..63)) + jobComment(36), -- JmJobStringTC (SIZE(0..63)) + documentFormatIndex(37), -- Integer32 (0..2147483647) + documentFormat(38), -- PrtInterpreterLangFamilyTC + -- AND/OR + -- OCTET STRING(SIZE(0..63)) + + -- Job Parameter attributes: + jobPriority(50), -- Integer32 (-2..100) + jobProcessAfterDateAndTime(51), -- DateAndTime (SNMPv2-TC) + jobHold(52), -- JmBooleanTC + jobHoldUntil(53), -- JmJobStringTC (SIZE(0..63)) + outputBin(54), -- Integer32 (0..2147483647) + -- AND/OR + + -- JmJobStringTC (SIZE(0..63)) + sides(55), -- Integer32 (-2..2) + finishing(56), -- JmFinishingTC + + -- Image Quality attributes: + printQualityRequested(70), -- JmPrintQualityTC + printQualityUsed(71), -- JmPrintQualityTC + printerResolutionRequested(72), -- JmPrinterResolutionTC + printerResolutionUsed(73), -- JmPrinterResolutionTC + tonerEcomonyRequested(74), -- JmTonerEconomyTC + tonerEcomonyUsed(75), -- JmTonerEconomyTC + tonerDensityRequested(76), -- Integer32 (-2..100) + tonerDensityUsed(77), -- Integer32 (-2..100) + + + -- Job Progress attributes: + jobCopiesRequested(90), -- Integer32 (-2..2147483647) + jobCopiesCompleted(91), -- Integer32 (-2..2147483647) + documentCopiesRequested(92), -- Integer32 (-2..2147483647) + documentCopiesCompleted(93), -- Integer32 (-2..2147483647) + jobKOctetsTransferred(94), -- Integer32 (-2..2147483647) + sheetCompletedCopyNumber(95), -- Integer32 (-2..2147483647) + sheetCompletedDocumentNumber(96), + -- Integer32 (-2..2147483647) + jobCollationType(97), -- JmJobCollationTypeTC + + -- Impression attributes: + impressionsSpooled(110), -- Integer32 (-2..2147483647) + impressionsSentToDevice(111), -- Integer32 (-2..2147483647) + impressionsInterpreted(112), -- Integer32 (-2..2147483647) + impressionsCompletedCurrentCopy(113), + -- Integer32 (-2..2147483647) + fullColorImpressionsCompleted(114), + -- Integer32 (-2..2147483647) + highlightColorImpressionsCompleted(115), + -- Integer32 (-2..2147483647) + + -- Page attributes: + pagesRequested(130), -- Integer32 (-2..2147483647) + pagesCompleted(131), -- Integer32 (-2..2147483647) + pagesCompletedCurrentCopy(132), -- Integer32 (-2..2147483647) + + -- Sheet attributes: + sheetsRequested(150), -- Integer32 (-2..2147483647) + sheetsCompleted(151), -- Integer32 (-2..2147483647) + sheetsCompletedCurrentCopy(152),-- Integer32 (-2..2147483647) + + -- Resource attributes: + mediumRequested(170), -- JmMediumTypeTC + -- AND/OR + -- JmJobStringTC (SIZE(0..63)) + mediumConsumed(171), -- Integer32 (-2..2147483647) + -- AND + -- JmJobStringTC (SIZE(0..63)) + colorantRequested(172), -- Integer32 (-2..2147483647) + -- AND/OR + -- JmJobStringTC (SIZE(0..63)) + colorantConsumed(173), -- Integer32 (-2..2147483647) + -- AND/OR + -- JmJobStringTC (SIZE(0..63)) + mediumTypeConsumed(174), -- Integer32 (-2..2147483647) + -- AND + -- JmJobStringTC (SIZE(0..63)) + mediumSizeConsumed(175), -- Integer32 (-2..2147483647) + -- AND + -- JmJobStringTC (SIZE(0..63)) + + -- Time attributes: + jobSubmissionToServerTime(190), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobSubmissionTime(191), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobStartedBeingHeldTime(192), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobStartedProcessingTime(193), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobCompletionTime(194), -- JmTimeStampTC + -- AND/OR + -- DateAndTime + jobProcessingCPUTime(195) -- Integer32 (-2..2147483647) + } + + + +JmJobServiceTypesTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Specifies the type(s) of service to which the job has been + submitted (print, fax, scan, etc.). The service type is + represented as an enum that is bit encoded with each job + service type so that more general and arbitrary services can be + created, such as services with more than one destination type, + or ones with only a source or only a destination. For example, + a job service might scan, faxOut, and print a single job. In + this case, three bits would be set in the jobServiceTypes + attribute, corresponding to the hexadecimal values: 0x8 + 0x20 + + 0x4, respectively, yielding: 0x2C. + + Whether this attribute is set from a job attribute supplied by + the job submission client or is set by the recipient job + submission server or device depends on the job submission + protocol. With either implementation, the agent SHALL return a + non-zero value for this attribute indicating the type of the + job. + + One of the purposes of this attribute is to permit a requester + to filter out jobs that are not of interest. For example, a + printer operator MAY only be interested in jobs that include + printing. That is why the attribute is in the job + identification category. + + The following service component types are defined (in + hexadecimal) and are assigned a separate bit value for use with + the jobServiceTypes attribute: + + other 0x1 + The job contains some instructions that are not one of the + identified types. + + unknown 0x2 + The job contains some instructions whose type is unknown to + the agent. + + print 0x4 + The job contains some instructions that specify printing + + scan 0x8 + The job contains some instructions that specify scanning + + faxIn 0x10 + The job contains some instructions that specify receive fax + + faxOut 0x20 + The job contains some instructions that specify sending fax + + getFile 0x40 + The job contains some instructions that specify accessing + files or documents + + putFile 0x80 + The job contains some instructions that specify storing + files or documents + + mailList 0x100 + The job contains some instructions that specify + distribution of documents using an electronic mail system. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of them MAY be used together. See + section 3.7.1.2." + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + + + +JmJobStateReasons1TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The JmJobStateReasonsNTC (N=1..4) textual-conventions are used + with the jmJobStateReasons1 object and jobStateReasonsN + (N=2..4), respectively, to provide additional information + regarding the current jmJobState object value. These values + MAY be used with any job state or states for which the reason + makes sense. See section 3.3.9.1 for the specification of each + bit value defined for use with the JmJobStateReasons1TC. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of bits may be used together. See + section 3.7.1.2." + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + + + +JmJobStateReasons2TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual-convention is used with the jobStateReasons2 + attribute to provides additional information regarding the + jmJobState object. See section 3.3.9.2 for the specification + of JmJobStateReasons2TC. See section 3.3.9.1 for the + description under JmJobStateReasons1TC for additional + information that applies to all reasons. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of them may be used together. See + section 3.7.1.2." + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + +JmJobStateReasons3TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual-convention is used with the jobStateReasons3 + attribute to provides additional information regarding the + jmJobState object. See section 3.3.9.3 for the specification + of JmJobStateReasons3TC. See section 3.3.9.1 for the + description under JmJobStateReasons1TC for additional + information that applies to all reasons. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of them may be used together. See + section 3.7.1.2. " + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + + + + + +JmJobStateReasons4TC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual-convention is used in the jobStateReasons4 + attribute to provides additional information regarding the + jmJobState object. See section 3.3.9.4 for the specification + of JmJobStateReasons4TC. See section 3.3.9.1 for the + description under JmJobStateReasons1TC for additional + information that applies to all reasons. + + These bit definitions are the equivalent of a type 2 enum + except that combinations of them may be used together. See + section 3.7.1.2." + SYNTAX INTEGER (0..2147483647) -- 31 bits, all but sign bit + + + +jobmonMIBObjects OBJECT IDENTIFIER ::= { jobmonMIB 1 } + +-- The General Group (MANDATORY) + +-- The jmGeneralGroup consists entirely of the jmGeneralTable. + +jmGeneral OBJECT IDENTIFIER ::= { jobmonMIBObjects 1 } + +jmGeneralTable OBJECT-TYPE + SYNTAX SEQUENCE OF JmGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The jmGeneralTable consists of information of a general nature + that are per-job-set, but are not per-job. See Section 2 + entitled 'Terminology and Job Model' for the definition of a + job set. + + The MANDATORY-GROUP macro specifies that this group is + MANDATORY." + ::= { jmGeneral 1 } + + +jmGeneralEntry OBJECT-TYPE + SYNTAX JmGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a job set (queue). + + An entry SHALL exist in this table for each job set." + INDEX { jmGeneralJobSetIndex } + ::= { jmGeneralTable 1 } + + +JmGeneralEntry ::= SEQUENCE { + jmGeneralJobSetIndex Integer32, + jmGeneralNumberOfActiveJobs Integer32, + jmGeneralOldestActiveJobIndex Integer32, + jmGeneralNewestActiveJobIndex Integer32, + jmGeneralJobPersistence Integer32, + jmGeneralAttributePersistence Integer32, + jmGeneralJobSetName JmUTF8StringTC +} + + +jmGeneralJobSetIndex OBJECT-TYPE + SYNTAX Integer32 (1..32767) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each job set in this MIB. The jmJobTable + and jmAttributeTable tables have this same index as their + primary index. + + The value(s) of the jmGeneralJobSetIndex SHALL be persistent + across power cycles, so that clients that have retained + jmGeneralJobSetIndex values will access the same job sets upon + subsequent power-up. + + An implementation that has only one job set, such as a printer + with a single queue, SHALL hard code this object with the value + 1. + + See Section 2 entitled 'Terminology and Job Model' for the + definition of a job set. + Corresponds to the first index in jmJobTable and + jmAttributeTable." + ::= { jmGeneralEntry 1 } + + +jmGeneralNumberOfActiveJobs OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of 'active' jobs in the jmJobIDTable, + jmJobTable, and jmAttributeTable, i.e., the total number of + jobs that are in the pending, processing, or processingStopped + states. See the JmJobStateTC textual-convention for the exact + specification of the semantics of the job states." + DEFVAL { 0 } -- no jobs + ::= { jmGeneralEntry 2 } + + +jmGeneralOldestActiveJobIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jmJobIndex of the oldest job that is still in one of the + 'active' states (pending, processing, or processingStopped). + In other words, the index of the 'active' job that has been in + the job tables the longest. + + If there are no active jobs, the agent SHALL set the value of + this object to 0. + + See Section 3.2 entitled 'The Job Tables and the Oldest Active + and Newest Active Indexes' for a description of the usage of + this object." + DEFVAL { 0 } -- no active jobs + ::= { jmGeneralEntry 3 } + + + +jmGeneralNewestActiveJobIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jmJobIndex of the newest job that is in one of the + 'active' states (pending, processing, or processingStopped). + In other words, the index of the 'active' job that has been + most recently added to the job tables. + + When all jobs become 'inactive', i.e., enter the pendingHeld, + completed, canceled, or aborted states, the agent SHALL set the + value of this object to 0. + + See Section 3.2 entitled 'The Job Tables and the Oldest Active + and Newest Active Indexes' for a description of the usage of + this object." + DEFVAL { 0 } -- no active jobs + ::= { jmGeneralEntry 4 } + + + +jmGeneralJobPersistence OBJECT-TYPE + SYNTAX Integer32 (15..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time in seconds for this instance of the Job Set + that an entry SHALL remain in the jmJobIDTable and jmJobTable + after processing has completed, i.e., the minimum time in + seconds starting when the job enters the completed, canceled, + or aborted state. + + Configuring this object is implementation-dependent. + + This value SHALL be equal to or greater than the value of + jmGeneralAttributePersistence. This value SHOULD be at least + 60 which gives a monitoring or accounting application one + minute in which to poll for job data." + DEFVAL { 60 } -- one minute + ::= { jmGeneralEntry 5 } + + + +jmGeneralAttributePersistence OBJECT-TYPE + SYNTAX Integer32 (15..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time in seconds for this instance of the Job Set + that an entry SHALL remain in the jmAttributeTable after + processing has completed , i.e., the time in seconds starting + when the job enters the completed, canceled, or aborted state. + + Configuring this object is implementation-dependent. + + This value SHOULD be at least 60 which gives a monitoring or + accounting application one minute in which to poll for job + data." + DEFVAL { 60 } -- one minute + ::= { jmGeneralEntry 6 } + + + +jmGeneralJobSetName OBJECT-TYPE + SYNTAX JmUTF8StringTC (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The human readable name of this job set assigned by the system + administrator (by means outside of this MIB). Typically, this + name SHOULD be the name of the job queue. If a server or + device has only a single job set, this object can be the + administratively assigned name of the server or device itself. + This name does not need to be unique, though each job set in a + single Job Monitoring MIB SHOULD have distinct names. + + NOTE - If the job set corresponds to a single printer and the + Printer MIB is implemented, this value SHOULD be the same as + the prtGeneralPrinterName object in the draft Printer MIB + [print-mib-draft]. If the job set corresponds to an IPP + Printer, this value SHOULD be the same as the IPP 'printer- + name' Printer attribute. + + NOTE - The purpose of this object is to help the user of the + job monitoring application distinguish between several job sets + in implementations that support more than one job set. + + See the OBJECT compliance macro for the minimum maximum length + required for conformance." + DEFVAL { ''H } -- empty string + ::= { jmGeneralEntry 7 } + + +-- The Job ID Group (MANDATORY) + +-- The jmJobIDGroup consists entirely of the jmJobIDTable. +jmJobID OBJECT IDENTIFIER ::= { jobmonMIBObjects 2 } + +jmJobIDTable OBJECT-TYPE + SYNTAX SEQUENCE OF JmJobIDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The jmJobIDTable provides a correspondence map (1) between the + job submission ID that a client uses to refer to a job and (2) + the jmGeneralJobSetIndex and jmJobIndex that the Job Monitoring + MIB agent assigned to the job and that are used to access the + job in all of the other tables in the MIB. If a monitoring + application already knows the jmGeneralJobSetIndex and the + jmJobIndex of the job it is querying, that application NEED NOT + use the jmJobIDTable. + + The MANDATORY-GROUP macro specifies that this group is + MANDATORY." + ::= { jmJobID 1 } + + + +jmJobIDEntry OBJECT-TYPE + SYNTAX JmJobIDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The map from (1) the jmJobSubmissionID to (2) the + jmGeneralJobSetIndex and jmJobIndex. + + An entry SHALL exist in this table for each job currently known + to the agent for all job sets and job states. There MAY be + more than one jmJobIDEntry that maps to a single job. This + many to one mapping can occur when more than one network entity + along the job submission path supplies a job submission ID. + See Section 3.5. However, each job SHALL appear once and in + one and only one job set." + INDEX { jmJobSubmissionID } + ::= { jmJobIDTable 1 } + +JmJobIDEntry ::= SEQUENCE { + jmJobSubmissionID OCTET STRING, + jmJobIDJobSetIndex Integer32, + jmJobIDJobIndex Integer32 +} + + +jmJobSubmissionID OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(48)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A quasi-unique 48-octet fixed-length string ID which + identifies the job within a particular client-server + environment. There are multiple formats for the + jmJobSubmissionID. Each format SHALL be uniquely identified. + See the JmJobSubmissionIDTypeTC textual convention. Each + format SHALL be registered using the procedures of a type 2 + enum. See section 3.7.3 entitled: 'PWG Registration of Job + Submission Id Formats'. + + If the requester (client or server) does not supply a job + submission ID in the job submission protocol, then the + recipient (server or device) SHALL assign a job submission ID + using any of the standard formats that have been reserved for + agents and adding the final 8 octets to distinguish the ID from + others submitted from the same requester. + + The monitoring application, whether in the client or running + separately, MAY use the job submission ID to help identify + which jmJobIndex was assigned by the agent, i.e., in which row + the job information is in the other tables. + + NOTE - fixed-length is used so that a management application + can use a shortened GetNext varbind (in SNMPv1 and SNMPv2) in + order to get the next submission ID, disregarding the remainder + of the ID in order to access jobs independent of the trailing + identifier part, e.g., to get all jobs submitted by a + particular jmJobOwner or submitted from a particular MAC + address. + + See the JmJobSubmissionIDTypeTC textual convention. + See APPENDIX B - Support of Job Submission Protocols." + ::= { jmJobIDEntry 1 } + + + +jmJobIDJobSetIndex OBJECT-TYPE + SYNTAX Integer32 (0..32767) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the jmGeneralJobSetIndex for + the job with the jmJobSubmissionID value, i.e., the job set + index of the job set in which the job was placed when that + server or device accepted the job. This 16-bit value in + combination with the jmJobIDJobIndex value permits the + management application to access the other tables to obtain the + job-specific objects for this job. + + See jmGeneralJobSetIndex in the jmGeneralTable." + DEFVAL { 0 } -- 0 indicates no job set index + ::= { jmJobIDEntry 2 } + + + +jmJobIDJobIndex OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the jmJobIndex for the job + with the jmJobSubmissionID value, i.e., the job index for the + job when the server or device accepted the job. This value, in + combination with the jmJobIDJobSetIndex value, permits the + management application to access the other tables to obtain the + job-specific objects for this job. + + See jmJobIndex in the jmJobTable." + DEFVAL { 0 } -- 0 indicates no jmJobIndex value. + ::= { jmJobIDEntry 3 } + + +-- The Job Group (MANDATORY) + +-- The jmJobGroup consists entirely of the jmJobTable. + +jmJob OBJECT IDENTIFIER ::= { jobmonMIBObjects 3 } + +jmJobTable OBJECT-TYPE + SYNTAX SEQUENCE OF JmJobEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The jmJobTable consists of basic job state and status + information for each job in a job set that (1) monitoring + applications need to be able to access in a single SNMP Get + operation, (2) that have a single value per job, and (3) that + SHALL always be implemented. + + The MANDATORY-GROUP macro specifies that this group is + MANDATORY." + ::= { jmJob 1 } + +jmJobEntry OBJECT-TYPE + SYNTAX JmJobEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Basic per-job state and status information. + + An entry SHALL exist in this table for each job, no matter what + the state of the job is. Each job SHALL appear in one and only + one job set. + + See Section 3.2 entitled 'The Job Tables'." + INDEX { jmGeneralJobSetIndex, jmJobIndex } + ::= { jmJobTable 1 } + +JmJobEntry ::= SEQUENCE { + jmJobIndex Integer32, + jmJobState JmJobStateTC, + jmJobStateReasons1 JmJobStateReasons1TC, + jmNumberOfInterveningJobs Integer32, + jmJobKOctetsPerCopyRequested Integer32, + jmJobKOctetsProcessed Integer32, + jmJobImpressionsPerCopyRequested Integer32, + jmJobImpressionsCompleted Integer32, + jmJobOwner JmJobStringTC +} + + +jmJobIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The sequential, monatonically increasing identifier index for + the job generated by the server or device when that server or + device accepted the job. This index value permits the + management application to access the other tables to obtain the + job-specific row entries. + + See Section 3.2 entitled 'The Job Tables and the Oldest Active + and Newest Active Indexes'. + See Section 3.5 entitled 'Job Identification'. + See also jmGeneralNewestActiveJobIndex for the largest value of + jmJobIndex. + See JmJobSubmissionIDTypeTC for a limit on the size of this + index if the agent represents it as an 8-digit decimal number." + ::= { jmJobEntry 1 } + +jmJobState OBJECT-TYPE + SYNTAX JmJobStateTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the job (pending, processing, completed, + etc.). Agents SHALL implement only those states which are + appropriate for the particular implementation. However, + management applications SHALL be prepared to receive all the + standard job states. + + The final value for this object SHALL be one of: completed, + canceled, or aborted. The minimum length of time that the + agent SHALL maintain MIB data for a job in the completed, + canceled, or aborted state before removing the job data from + the jmJobIDTable and jmJobTable is specified by the value of + the jmGeneralJobPersistence object." + DEFVAL { unknown } -- default is unknown + ::= { jmJobEntry 2 } + + + +jmJobStateReasons1 OBJECT-TYPE + SYNTAX JmJobStateReasons1TC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Additional information about the job's current state, i.e., + information that augments the value of the job's jmJobState + object. + + Implementation of any reason values is OPTIONAL, but an agent + SHOULD return any reason information available. These values + MAY be used with any job state or states for which the reason + makes sense. Since the Job State Reasons will be more dynamic + than the Job State, it is recommended that a job monitoring + application read this object every time jmJobState is read. + When the agent cannot provide a reason for the current state of + the job, the value of the jmJobStateReasons1 object and + jobStateReasonsN attributes SHALL be 0. + + The jobStateReasonsN (N=2..4) attributes provide further + additional information about the job's current state." + DEFVAL { 0 } -- no reasons + ::= { jmJobEntry 3 } + +jmNumberOfInterveningJobs OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of jobs that are expected to complete processing + before this job has completed processing according to the + implementation's queuing algorithm, if no other jobs were to be + submitted. In other words, this value is the job's queue + position. The agent SHALL return a value of 0 for this + attribute when the job is the next job to complete processing + (or has completed processing)." + DEFVAL { 0 } -- default is no intervening jobs. + ::= { jmJobEntry 4 } + + + +jmJobKOctetsPerCopyRequested OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total size in K (1024) octets of the document(s) being + requested to be processed in the job. The agent SHALL round + the actual number of octets up to the next highest K. Thus 0 + octets is represented as '0', 1-1024 octets is represented as + '1', 1025-2048 is represented as '2', etc. + + In computing this value, the server/device SHALL NOT include + the multiplicative factors contributed by (1) the number of + document copies, and (2) the number of job copies, independent + of whether the device can process multiple copies of the job or + document without making multiple passes over the job or + document data and independent of whether the output is collated + or not. Thus the server/device computation is independent of + the implementation and indicates the size of the document(s) + measured in K octets independent of the number of copies." + DEFVAL { -2 } -- the default is unknown(-2) + ::= { jmJobEntry 5 } + + + +jmJobKOctetsProcessed OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets processed by the server or device + measured in units of K (1024) octets so far. The agent SHALL + round the actual number of octets processed up to the next + higher K. Thus 0 octets is represented as '0', 1-1024 octets + is represented as '1', 1025-2048 octets is '2', etc. For + printing devices, this value is the number interpreted by the + page description language interpreter rather than what has been + marked on media. + + For implementations where multiple copies are produced by the + interpreter with only a single pass over the data, the final + value SHALL be equal to the value of the + jmJobKOctetsPerCopyRequested object. For implementations where + multiple copies are produced by the interpreter by processing + the data for each copy, the final value SHALL be a multiple of + the value of the jmJobKOctetsPerCopyRequested object. + + NOTE - See the impressionsCompletedCurrentCopy and + pagesCompletedCurrentCopy attributes for attributes that are + reset on each document copy. + + NOTE - The jmJobKOctetsProcessed object can be used with the + jmJobKOctetsPerCopyRequested object to provide an indication of + the relative progress of the job, provided that the + multiplicative factor is taken into account for some + implementations of multiple copies." + DEFVAL { 0 } -- default is no octets processed. + ::= { jmJobEntry 6 } + + +jmJobImpressionsPerCopyRequested OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total size in number of impressions of the document(s) + submitted. + + In computing this value, the server/device SHALL NOT include + the multiplicative factors contributed by (1) the number of + document copies, and (2) the number of job copies, independent + of whether the device can process multiple copies of the job or + document without making multiple passes over the job or + document data and independent of whether the output is collated + or not. Thus the server/device computation is independent of + the implementation and reflects the size of the document(s) + measured in impressions independent of the number of copies. + + See the definition of the term 'impression' in Section 2." + DEFVAL { -2 } -- default is unknown(-2) + ::= { jmJobEntry 7 } + + +jmJobImpressionsCompleted OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of impressions completed for this job so far. + For printing devices, the impressions completed includes + interpreting, marking, and stacking the output. For other + types of job services, the number of impressions completed + includes the number of impressions processed. + + NOTE - See the impressionsCompletedCurrentCopy and + pagesCompletedCurrentCopy attributes for attributes that are + reset on each document copy. + + NOTE - The jmJobImpressionsCompleted object can be used with + the jmJobImpressionsPerCopyRequested object to provide an + indication of the relative progress of the job, provided that + the multiplicative factor is taken into account for some + implementations of multiple copies. + + See the definition of the term 'impression' in Section 2 and + the counting example in Section 3.4 entitled 'Monitoring Job + Progress'." + DEFVAL { 0 } -- default is no octets + ::= { jmJobEntry 8 } + + + +jmJobOwner OBJECT-TYPE + SYNTAX JmJobStringTC (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The coded character set name of the user that submitted the + job. The method of assigning this user name will be system + and/or site specific but the method MUST ensure that the name + is unique to the network that is visible to the client and + target device. + + This value SHOULD be the most authenticated name of the user + submitting the job. + + See the OBJECT compliance macro for the minimum maximum length + required for conformance." + DEFVAL { ''H } -- default is empty string + ::= { jmJobEntry 9 } + + +-- The Attribute Group (MANDATORY) + +-- The jmAttributeGroup consists entirely of the jmAttributeTable. +-- +-- Implementation of the objects in this group is MANDATORY. +-- See Section 3.1 entitled 'Conformance Considerations'. +-- An agent SHALL implement any attribute if (1) the server or device +-- supports the functionality represented by the attribute and (2) the +-- information is available to the agent. + +jmAttribute OBJECT IDENTIFIER ::= { jobmonMIBObjects 4 } + + + +jmAttributeTable OBJECT-TYPE + SYNTAX SEQUENCE OF JmAttributeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The jmAttributeTable SHALL contain attributes of the job and + document(s) for each job in a job set. Instead of allocating + distinct objects for each attribute, each attribute is + represented as a separate row in the jmAttributeTable. + + The MANDATORY-GROUP macro specifies that this group is + MANDATORY. An agent SHALL implement any attribute if (1) the + server or device supports the functionality represented by the + attribute and (2) the information is available to the agent. " + ::= { jmAttribute 1 } + + +jmAttributeEntry OBJECT-TYPE + SYNTAX JmAttributeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes representing information about the job and + document(s) or resources required and/or consumed. + + Each entry in the jmAttributeTable is a per-job entry with an + extra index for each type of attribute (jmAttributeTypeIndex) + that a job can have and an additional index + (jmAttributeInstanceIndex) for those attributes that can have + multiple instances per job. The jmAttributeTypeIndex object + SHALL contain an enum type that indicates the type of attribute + (see the JmAttributeTypeTC textual-convention). The value of + the attribute SHALL be represented in either the + jmAttributeValueAsInteger or jmAttributeValueAsOctets objects, + and/or both, as specified in the JmAttributeTypeTC textual- + convention. + + The agent SHALL create rows in the jmAttributeTable as the + server or device is able to discover the attributes either from + the job submission protocol itself or from the document PDL. + As the documents are interpreted, the interpreter MAY discover + additional attributes and so the agent adds additional rows to + this table. As the attributes that represent resources are + actually consumed, the usage counter contained in the + jmAttributeValueAsInteger object is incremented according to + the units indicated in the description of the JmAttributeTypeTC + enum. + + The agent SHALL maintain each row in the jmAttributeTable for + at least the minimum time after a job completes as specified by + the jmGeneralAttributePersistence object. + + Zero or more entries SHALL exist in this table for each job in + a job set. + + See Section 3.3 entitled 'The Attribute Mechanism' for a + description of the jmAttributeTable." + INDEX { jmGeneralJobSetIndex, jmJobIndex, jmAttributeTypeIndex, + jmAttributeInstanceIndex } + ::= { jmAttributeTable 1 } + +JmAttributeEntry ::= SEQUENCE { + jmAttributeTypeIndex JmAttributeTypeTC, + jmAttributeInstanceIndex Integer32, + jmAttributeValueAsInteger Integer32, + jmAttributeValueAsOctets OCTET STRING +} + + +jmAttributeTypeIndex OBJECT-TYPE + SYNTAX JmAttributeTypeTC + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of attribute that this row entry represents. + + The type MAY identify information about the job or document(s) + or MAY identify a resource required to process the job before + the job start processing and/or consumed by the job as the job + is processed. + + Examples of job attributes (i.e., apply to the job as a whole) + that have only one instance per job include: + jobCopiesRequested(90), documentCopiesRequested(92), + jobCopiesCompleted(91), documentCopiesCompleted(93), while + examples of job attributes that may have more than one instance + per job include: documentFormatIndex(37), and + documentFormat(38). + + Examples of document attributes (one instance per document) + include: fileName(34), and documentName(35). + + Examples of required and consumed resource attributes include: + pagesRequested(130), mediumRequested(170), pagesCompleted(131), + and mediumConsumed(171), respectively." + ::= { jmAttributeEntry 1 } + + + +jmAttributeInstanceIndex OBJECT-TYPE + SYNTAX Integer32 (1..32767) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A running 16-bit index of the attributes of the same type for + each job. For those attributes with only a single instance per + job, this index value SHALL be 1. For those attributes that + are a single value per document, the index value SHALL be the + document number, starting with 1 for the first document in the + job. Jobs with only a single document SHALL use the index + value of 1. For those attributes that can have multiple values + per job or per document, such as documentFormatIndex(37) or + documentFormat(38), the index SHALL be a running index for the + job as a whole, starting at 1." + ::= { jmAttributeEntry 2 } + + + +jmAttributeValueAsInteger OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The integer value of the attribute. The value of the + attribute SHALL be represented as an integer if the enum + description in the JmAttributeTypeTC textual-convention + definition has the tag: 'INTEGER:'. + + Depending on the enum definition, this object value MAY be an + integer, a counter, an index, or an enum, depending on the + jmAttributeTypeIndex value. The units of this value are + specified in the enum description. + + For those attributes that are accumulating job consumption as + the job is processed as specified in the JmAttributeTypeTC + textual-convention, SHALL contain the final value after the job + completes processing, i.e., this value SHALL indicate the total + usage of this resource made by the job. + + A monitoring application is able to copy this value to a + suitable longer term storage for later processing as part of an + accounting system. + + Since the agent MAY add attributes representing resources to + this table while the job is waiting to be processed or being + processed, which can be a long time before any of the resources + are actually used, the agent SHALL set the value of the + jmAttributeValueAsInteger object to 0 for resources that the + job has not yet consumed. + + Attributes for which the concept of an integer value is + meaningless, such as fileName(34), jobName, and + processingMessage, do not have the 'INTEGER:' tag in the + JmAttributeTypeTC definition and so an agent SHALL always + return a value of '-1' to indicate 'other' for the value of the + jmAttributeValueAsInteger object for these attributes. + + For attributes which do have the 'INTEGER:' tag in the + JmAttributeTypeTC definition, if the integer value is not (yet) + known, the agent either (1) SHALL not materialize the row in + the jmAttributeTable until the value is known or (2) SHALL + return a '-2' to represent an 'unknown' counting integer value, + a '0' to represent an 'unknown' index value, and a '2' to + represent an 'unknown(2)' enum value." + DEFVAL { -2 } -- default value is unknown(-2) + ::= { jmAttributeEntry 3 } + + + +jmAttributeValueAsOctets OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The octet string value of the attribute. The value of the + attribute SHALL be represented as an OCTET STRING if the enum + description in the JmAttributeTypeTC textual-convention + definition has the tag: 'OCTETS:'. + + Depending on the enum definition, this object value MAY be a + coded character set string (text), such as 'JmUTF8StringTC', or + a binary octet string, such as 'DateAndTime'. + + Attributes for which the concept of an octet string value is + meaningless, such as pagesCompleted, do not have the tag + 'OCTETS:' in the JmAttributeTypeTC definition and so the agent + SHALL always return a zero length string for the value of the + jmAttributeValueAsOctets object. + + For attributes which do have the 'OCTETS:' tag in the + JmAttributeTypeTC definition, if the OCTET STRING value is not + (yet) known, the agent either SHALL NOT materialize the row in + the jmAttributeTable until the value is known or SHALL return a + zero-length string." + DEFVAL { ''H } -- empty string + ::= { jmAttributeEntry 4 } + + +-- Notifications and Trapping +-- Reserved for the future + +jobmonMIBNotifications OBJECT IDENTIFIER ::= { jobmonMIB 2 } + + + +-- Conformance Information + +jmMIBConformance OBJECT IDENTIFIER ::= { jobmonMIB 3 } + + + +-- compliance statements +jmMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + job monitoring MIB." + MODULE -- this module + MANDATORY-GROUPS { + jmGeneralGroup, jmJobIDGroup, jmJobGroup, jmAttributeGroup } + OBJECT jmGeneralJobSetName + SYNTAX JmUTF8StringTC (SIZE(0..8)) + DESCRIPTION + "Only 8 octets maximum string length NEED be supported by the + agent." + + OBJECT jmJobOwner + SYNTAX JmJobStringTC (SIZE(0..16)) + DESCRIPTION + "Only 16 octets maximum string length NEED be supported by the + agent." + +-- There are no CONDITIONALLY MANDATORY or OPTIONAL groups. + + ::= { jmMIBConformance 1 } + + +jmMIBGroups OBJECT IDENTIFIER ::= { jmMIBConformance 2 } + +jmGeneralGroup OBJECT-GROUP + OBJECTS { + jmGeneralNumberOfActiveJobs, jmGeneralOldestActiveJobIndex, + jmGeneralNewestActiveJobIndex, jmGeneralJobPersistence, + jmGeneralAttributePersistence, jmGeneralJobSetName} + STATUS current + DESCRIPTION + "The general group." + ::= { jmMIBGroups 1 } + + + +jmJobIDGroup OBJECT-GROUP + OBJECTS { + jmJobIDJobSetIndex, jmJobIDJobIndex } + STATUS current + DESCRIPTION + "The job ID group." + ::= { jmMIBGroups 2 } + + + +jmJobGroup OBJECT-GROUP + OBJECTS { + jmJobState, jmJobStateReasons1, jmNumberOfInterveningJobs, + jmJobKOctetsPerCopyRequested, jmJobKOctetsProcessed, + jmJobImpressionsPerCopyRequested, jmJobImpressionsCompleted, + jmJobOwner } + STATUS current + DESCRIPTION + "The job group." + ::= { jmMIBGroups 3 } + + + +jmAttributeGroup OBJECT-GROUP + OBJECTS { + jmAttributeValueAsInteger, jmAttributeValueAsOctets } + STATUS current + DESCRIPTION + "The attribute group." + ::= { jmMIBGroups 4 } + + +END diff --git a/mibs/ietf/L2TP-MIB b/mibs/ietf/L2TP-MIB new file mode 100644 index 0000000..f15225d --- /dev/null +++ b/mibs/ietf/L2TP-MIB @@ -0,0 +1,2815 @@ +L2TP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Integer32, Unsigned32, Counter32, Gauge32, + Counter64, transmission, MODULE-IDENTITY, + OBJECT-TYPE, NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TruthValue, + StorageType + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP + FROM SNMPv2-CONF + InterfaceIndex + FROM IF-MIB; + +l2tp MODULE-IDENTITY + LAST-UPDATED "200208230000Z" -- 23 August 2002 + ORGANIZATION "IETF L2TP Working Group" + CONTACT-INFO + "Evan Caves + Postal: Occam Networks + 77 Robin Hill Road + Santa Barbara, CA, 93117 + Tel: +1 805692 2900 + Email: evan@occamnetworks.com + + Pat R. Calhoun + + + + Postal: Black Storm Networks + 110 Nortech Parkway + San Jose, CA, 95143 + Tel: +1 408 941-0500 + Email: pcalhoun@bstormnetworks.com + + Ross Wheeler + Postal: DoubleWide Software, Inc. + 2953 Bunker Hill Lane + Suite 101 + Santa Clara, CA 95054 + Tel: +1 6509260599 + Email: ross@doublewidesoft.com + + Layer Two Tunneling Protocol Extensions WG + Working Group Area: Internet + Working Group Name: l2tpext + General Discussion: l2tp@l2tp.net" + + DESCRIPTION + "The MIB module that describes managed objects of + general use by the Layer Two Transport Protocol." + + -- revision log + + REVISION "200208230000Z" -- 23 August 2002 + DESCRIPTION + "First revision, published as RFC 3371." + + ::= { transmission 95 } + +-- +-- Textual Conventions +-- + +L2tpMilliSeconds ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-3" + STATUS current + DESCRIPTION + "A period of time measured in units of .001 of seconds + when used in conjunction with the DISPLAY-HINT will + show seconds and fractions of second with a resolution + of .001 of a second." + SYNTAX Integer32 (0..2147483646) + +-- +-- Definitions of significant branches +-- + + + +l2tpNotifications OBJECT IDENTIFIER ::= { l2tp 0 } +l2tpObjects OBJECT IDENTIFIER ::= { l2tp 1 } +l2tpTransports OBJECT IDENTIFIER ::= { l2tp 3 } +l2tpConformance OBJECT IDENTIFIER ::= { l2tp 4 } + +-- +-- Definitions of significant branches under l2tpObjects +-- +l2tpScalar OBJECT IDENTIFIER ::= { l2tpObjects 1 } +l2tpConfig OBJECT IDENTIFIER ::= { l2tpScalar 1 } +l2tpStats OBJECT IDENTIFIER ::= { l2tpScalar 2 } + +-- +-- Definitions of significant branches under l2tpTransports +-- +-- Note that future transports of L2TP (e.g.: Frame relay) +-- should create their own branch under l2tpTransports. + +l2tpTransportIpUdp OBJECT IDENTIFIER ::= { l2tpTransports 1 } +l2tpIpUdpObjects OBJECT IDENTIFIER ::= { l2tpTransportIpUdp 1 } +l2tpIpUdpTraps OBJECT IDENTIFIER ::= { l2tpTransportIpUdp 2 } + +-- +-- The L2TP Scalar Configuration Group +-- +-- This group of objects is used to manage configuration +-- of the L2TP protocol environment. + +l2tpAdminState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the administrative state of + the L2TP protocol. Setting this object to + 'disabled' causes all tunnels to be immediately + disconnected and no further tunnels to be either + initiated or accepted. The value of this object + must be maintained in non-volatile memory." + ::= { l2tpConfig 1 } + +l2tpDrainTunnels OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "Setting this object to 'true' will prevent any new + tunnels and/or sessions to be either initiated or + accepted but does NOT disconnect any active + tunnels/sessions. Setting this object to true(1) + causes all domains and their respective tunnels + to transition to the draining state. Note that + when this occurs the 'xxxDraining' status objects + of the domains and their tunnels should reflect + that they are 'draining'. Setting this object has + no affect on the domains or their tunnels + 'xxxDrainTunnels' configuration objects. To cancel + a drain this object should be set to false(2). + The object l2tpDrainingTunnels reflects + the current L2TP draining state. The value of + this object must be maintained in non-volatile + memory." + ::= { l2tpConfig 2 } + +-- +-- The L2TP Scalar Status and Statistics Group +-- +-- This group of objects describe the current state and +-- statistics of L2TP. + +l2tpProtocolVersions OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Vector of supported L2TP protocol version and + revision numbers. Supported versions are identified + via a two octet pairing where the first octet indicates + the version and the second octet contains the revision." + ::= { l2tpStats 1 } + +l2tpVendorName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the Vendor name of the L2TP + protocol stack." + ::= { l2tpStats 2 } + +l2tpFirmwareRev OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object defines the firmware revision for the + L2TP protocol stack." + ::= { l2tpStats 3 } + +l2tpDrainingTunnels OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if the local L2TP is draining + off sessions from all tunnels." + ::= { l2tpStats 4 } + +-- +-- The L2TP Domain Configuration Table +-- + +l2tpDomainConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpDomainConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP Domain configuration table. This table + contains objects that can be used to configure + the operational characteristics of a tunnel + domain. There is a 1-1 correspondence between + conceptual rows of this table and conceptual + rows of the l2tpDomainStatsTable." + ::= { l2tpObjects 2 } + +l2tpDomainConfigEntry OBJECT-TYPE + SYNTAX L2tpDomainConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP Domain configuration entry. An entry in this + table may correspond to a single endpoint or a group + of tunnel endpoints." + INDEX { l2tpDomainConfigId } + ::= { l2tpDomainConfigTable 1 } + +L2tpDomainConfigEntry ::= + SEQUENCE { + l2tpDomainConfigId + SnmpAdminString, + l2tpDomainConfigAdminState + + + + INTEGER, + l2tpDomainConfigDrainTunnels + TruthValue, + l2tpDomainConfigAuth + INTEGER, + l2tpDomainConfigSecret + SnmpAdminString, + l2tpDomainConfigTunnelSecurity + INTEGER, + l2tpDomainConfigTunnelHelloInt + Integer32, + l2tpDomainConfigTunnelIdleTO + Integer32, + l2tpDomainConfigControlRWS + Integer32, + l2tpDomainConfigControlMaxRetx + Integer32, + l2tpDomainConfigControlMaxRetxTO + Integer32, + l2tpDomainConfigPayloadSeq + INTEGER, + l2tpDomainConfigReassemblyTO + L2tpMilliSeconds, + l2tpDomainConfigProxyPPPAuth + TruthValue, + l2tpDomainConfigStorageType + StorageType, + l2tpDomainConfigStatus + RowStatus + } + +l2tpDomainConfigId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..80)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier, usually in the form of a Domain + Name (full or partial), describing a single tunnel + endpoint or a domain of tunnel endpoints. This is + typically used as a 'handle' to identify the + tunnel configuration requirements for both incoming + and outgoing tunnel connection attempts. Both the + LAC and LNS could use information provided in the + Host Name AVP attribute however the tunnel initiator + could use other means not specified to identify + the domain's tunnel configuration requirements. + For example; three rows in this table have + l2tpDomainConfigId values of 'lac1.isp.com', + + + + 'isp.com' and 'com'. A tunnel endpoint then identifies + itself as 'lac1.isp.com' which would match the + 'lac1.isp.com' entry in this table. A second tunnel + endpoint then identifies itself as 'lac2.isp.com'. + This endpoint is then associated with the 'isp.com' + entry of this table." + ::= { l2tpDomainConfigEntry 1 } + +l2tpDomainConfigAdminState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the administrative state of this + tunnel domain. Setting this object to disabled(2) + causes all tunnels to be immediately disconnected + and no further tunnels to be either initiated or + accepted. Note that all columnar objects corresponding + to this conceptual row cannot be modified when + the administrative state is enabled EXCEPT those + objects which specifically state otherwise." + DEFVAL { enabled } + ::= { l2tpDomainConfigEntry 2 } + +l2tpDomainConfigDrainTunnels OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Setting this object to 'true' will prevent any new + tunnels and/or sessions from being either initiated + or accepted but does NOT disconnect any active + tunnels/sessions for this tunnel domain. Setting + this object to true(1) causes all tunnels within + this domain to transition to the draining state. + Note that when this occurs the + l2tpTunnelStatsDrainingTunnel status objects of + all of this domain's tunnels should reflect that + they are 'draining'. Setting this object has no + effect on this domain's associated tunnels + l2tpTunnelConfigDrainTunnel configuration objects. + To cancel a drain this object should be set to + false(2). Setting this object to false(2) when + the L2TP object l2tpDrainTunnels is true(1) has + no affect, all domains and their tunnels will + + + + continue to drain." + DEFVAL { false } + ::= { l2tpDomainConfigEntry 3 } + +l2tpDomainConfigAuth OBJECT-TYPE + SYNTAX INTEGER { + none(1), + simple(2), + challenge(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes how tunnel peers belonging + to this domain are to be authenticated. The value + simple(2) indicates that peers are authenticated + simply by their host name as described in the Host + Name AVP. The value challenge(3) indicates that + all peers are challenged to prove their identification. + This mechanism is described in the L2TP protocol." + REFERENCE "RFC 2661 Section 5.1" + DEFVAL { none } + ::= { l2tpDomainConfigEntry 4 } + +l2tpDomainConfigSecret OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to configure the shared secret + used during the tunnel authentication phase of + tunnel establishment. This object MUST be accessible + only via requests using both authentication and + privacy. The agent MUST report an empty string in + response to get, get-next and get-bulk requests." + ::= { l2tpDomainConfigEntry 5 } + +l2tpDomainConfigTunnelSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), + other(2), + ipSec(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this tunnel domain + requires that all tunnels are to be secured. The + + + + value of ipsec(3) indicates that all tunnel packets, + control and session, have IP Security headers. The + type of IP Security headers (AH, ESP etc) and how + they are further described is outside the scope of + this document." + DEFVAL { none } + ::= { l2tpDomainConfigEntry 6 } + +l2tpDomainConfigTunnelHelloInt OBJECT-TYPE + SYNTAX Integer32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the interval in which Hello + (or keep-alive) packets are to be sent by local + peers belonging to this tunnel domain. The value + zero effectively disables the sending of Hello + packets. This object may be modified when the + administrative state is enabled for this conceptual + row." + DEFVAL { 60 } + ::= { l2tpDomainConfigEntry 7 } + +l2tpDomainConfigTunnelIdleTO OBJECT-TYPE + SYNTAX Integer32 (-1..86400) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the period of time that an + established tunnel belonging to this tunnel + domain with no active sessions will wait before + disconnecting the tunnel. A value of zero indicates + that the tunnel will disconnect immediately after the + last session disconnects. A value of -1 leaves the + tunnel up indefinitely. This object may be modified + when the administrative state is enabled for this + conceptual row." + DEFVAL { 0 } + ::= { l2tpDomainConfigEntry 8 } + +l2tpDomainConfigControlRWS OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the control channel receive + + + + window size for tunnels belonging to this domain. It + specifies the maximum number of packets the tunnel + peer belonging to this domain can send without waiting + for an acknowledgement from this peer." + DEFVAL { 4 } + ::= { l2tpDomainConfigEntry 9 } + +l2tpDomainConfigControlMaxRetx OBJECT-TYPE + SYNTAX Integer32 (0..32) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the maximum number of retransmissions + which the L2TP stack will attempt for tunnels belonging + to this domain before assuming that the peer is no + longer responding." + DEFVAL { 5 } + ::= { l2tpDomainConfigEntry 10 } + +l2tpDomainConfigControlMaxRetxTO OBJECT-TYPE + SYNTAX Integer32 (1..32) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the maximum retransmission timeout + interval which the L2TP stack will wait for tunnels + belonging to this domain before retransmitting a + control packet that has not been acknowledged." + DEFVAL { 16 } + ::= { l2tpDomainConfigEntry 11 } + +l2tpDomainConfigPayloadSeq OBJECT-TYPE + SYNTAX INTEGER { + onDemand(1), + never(2), + always(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines whether or not session payload + packets will be requested to be sent with sequence + numbers from tunnel peers belonging to this domain. + The value onDemand(1) allows the L2TP implementation + to initiate payload sequencing when necessary based + on local information (e.g: during LCP/NCP negotiations + or for CCP). The value never(2) indicates that L2TP + + + + will never initiate sequencing but will do sequencing + if asked. The value always(3) indicates that L2TP + will send the Sequencing Required AVP during session + establishment." + DEFVAL { onDemand } + ::= { l2tpDomainConfigEntry 12 } + +l2tpDomainConfigReassemblyTO OBJECT-TYPE + SYNTAX L2tpMilliSeconds + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines the number of milliseconds that + local peers of this tunnel domain will wait before + processing payload packets that were received out of + sequence (which are waiting for the packet(s) to put + them in sequence). A low value increases the chance + of delayed packets to be discarded (which MAY cause + the PPP decompression engine to reset) while a high + value may cause more queuing and possibly degrade + throughput if packets are truly lost. The default + value for this object is zero which will result in + all delayed packets being lost." + DEFVAL { 0 } + ::= { l2tpDomainConfigEntry 13 } + +l2tpDomainConfigProxyPPPAuth OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to configure the sending + or acceptance of the PPP Proxy Authentication + AVP's on the LAC or LNS." + DEFVAL { true } + ::= { l2tpDomainConfigEntry 14 } + +l2tpDomainConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' must + allow write-access at a minimum to: + + - l2tpDomainConfigAdminState and + + + + l2tpDomainConfigDrainTunnels at all times + - l2tpDomainConfigSecret if l2tpDomainConfigAuth + has been configured as 'challenge' + + It is an implementation issue to decide if a SET for + a readOnly or permanent row is accepted at all. In some + contexts this may make sense, in others it may not. If + a SET for a readOnly or permanent row is not accepted + at all, then a 'wrongValue' error must be returned." + ::= { l2tpDomainConfigEntry 15 } + +l2tpDomainConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this Domain entry. Columnar objects + corresponding to this conceptual row may be modified + according to their description clauses when this + RowStatus object is 'active'." + ::= { l2tpDomainConfigEntry 16 } + +-- +-- The L2TP Domain Status and Statistics Table +-- + +l2tpDomainStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpDomainStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP Domain Status and Statistics table. This + table contains objects that can be used to describe + the current status and statistics of a tunnel domain. + There is a 1-1 correspondence between conceptual + rows of this table and conceptual rows of the + l2tpDomainConfigTable." + ::= { l2tpObjects 3 } + +l2tpDomainStatsEntry OBJECT-TYPE + SYNTAX L2tpDomainStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP Domain Stats entry. An entry in this table + may correspond to a single endpoint or a group of + tunnel endpoints." + AUGMENTS { l2tpDomainConfigEntry } + + + + ::= { l2tpDomainStatsTable 1 } + +L2tpDomainStatsEntry ::= + SEQUENCE { + l2tpDomainStatsTotalTunnels + Counter32, + l2tpDomainStatsFailedTunnels + Counter32, + l2tpDomainStatsFailedAuths + Counter32, + l2tpDomainStatsActiveTunnels + Gauge32, + l2tpDomainStatsTotalSessions + Counter32, + l2tpDomainStatsFailedSessions + Counter32, + l2tpDomainStatsActiveSessions + Gauge32, + l2tpDomainStatsDrainingTunnels + TruthValue, + l2tpDomainStatsControlRxOctets + Counter32, + l2tpDomainStatsControlRxPkts + Counter32, + l2tpDomainStatsControlTxOctets + Counter32, + l2tpDomainStatsControlTxPkts + Counter32, + l2tpDomainStatsPayloadRxOctets + Counter32, + l2tpDomainStatsPayloadRxPkts + Counter32, + l2tpDomainStatsPayloadRxDiscs + Counter32, + l2tpDomainStatsPayloadTxOctets + Counter32, + l2tpDomainStatsPayloadTxPkts + Counter32, + l2tpDomainStatsControlHCRxOctets + Counter64, + l2tpDomainStatsControlHCRxPkts + Counter64, + l2tpDomainStatsControlHCTxOctets + Counter64, + l2tpDomainStatsControlHCTxPkts + Counter64, + l2tpDomainStatsPayloadHCRxOctets + Counter64, + + + + l2tpDomainStatsPayloadHCRxPkts + Counter64, + l2tpDomainStatsPayloadHCRxDiscs + Counter64, + l2tpDomainStatsPayloadHCTxOctets + Counter64, + l2tpDomainStatsPayloadHCTxPkts + Counter64 + } + +l2tpDomainStatsTotalTunnels OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the total number of tunnels + that have successfully reached the established + state for this tunnel domain." + ::= { l2tpDomainStatsEntry 1 } + +l2tpDomainStatsFailedTunnels OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of tunnels that + failed (eg: connection timeout, unsupported + or malformed AVP's etc) to reach the established + state for this tunnel domain." + ::= { l2tpDomainStatsEntry 2 } + +l2tpDomainStatsFailedAuths OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of failed tunnel + connection attempts for this domain because the + tunnel peer failed authentication." + ::= { l2tpDomainStatsEntry 3 } + +l2tpDomainStatsActiveTunnels OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of tunnels that + are currently active for this domain." + + + + ::= { l2tpDomainStatsEntry 4 } + +l2tpDomainStatsTotalSessions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the total number of sessions + that have successfully reached the established + state for this tunnel domain." + ::= { l2tpDomainStatsEntry 5 } + +l2tpDomainStatsFailedSessions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of sessions that + failed (eg: connection timeout, unsupported + or malformed AVP's etc) to reach the established + state for this tunnel domain." + ::= { l2tpDomainStatsEntry 6 } + +l2tpDomainStatsActiveSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of sessions that + are currently active for this domain." + ::= { l2tpDomainStatsEntry 7 } + +l2tpDomainStatsDrainingTunnels OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if this domain is draining + off sessions from all tunnels." + ::= { l2tpDomainStatsEntry 8 } + +l2tpDomainStatsControlRxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of control channel + octets received for this tunnel domain." + + + + ::= { l2tpDomainStatsEntry 9 } + +l2tpDomainStatsControlRxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of control packets + received for this tunnel domain." + ::= { l2tpDomainStatsEntry 10 } + +l2tpDomainStatsControlTxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of control channel + octets that were transmitted to tunnel endpoints + for this domain." + ::= { l2tpDomainStatsEntry 11 } + +l2tpDomainStatsControlTxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of control packets + that were transmitted to tunnel endpoints for + this domain." + ::= { l2tpDomainStatsEntry 12 } + +l2tpDomainStatsPayloadRxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of payload channel + octets that were received for this tunnel domain." + ::= { l2tpDomainStatsEntry 13 } + +l2tpDomainStatsPayloadRxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of payload packets + that were received for this tunnel domain." + ::= { l2tpDomainStatsEntry 14 } + + + +l2tpDomainStatsPayloadRxDiscs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of received payload + packets that were discarded by this tunnel domain." + ::= { l2tpDomainStatsEntry 15 } + +l2tpDomainStatsPayloadTxOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of payload channel + octets that were transmitted to tunnel peers + within this tunnel domain." + ::= { l2tpDomainStatsEntry 16 } + +l2tpDomainStatsPayloadTxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of payload packets + that were transmitted to tunnel peers within + this tunnel domain." + ::= { l2tpDomainStatsEntry 17 } + +-- +-- High Capacity Counter objects. These objects are all +-- 64 bit versions of the above 32-bit counters. These +-- objects all have the same basic semantics as their +-- 32-bit counterparts, however, their syntax has been +-- extended to 64 bits. +-- + +l2tpDomainStatsControlHCRxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsControlRxOctets." + ::= { l2tpDomainStatsEntry 18 } + +l2tpDomainStatsControlHCRxPkts OBJECT-TYPE + SYNTAX Counter64 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsControlRxPkts." + ::= { l2tpDomainStatsEntry 19 } + +l2tpDomainStatsControlHCTxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsControlTxOctets." + ::= { l2tpDomainStatsEntry 20 } + +l2tpDomainStatsControlHCTxPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsControlTxPkts." + ::= { l2tpDomainStatsEntry 21 } + +l2tpDomainStatsPayloadHCRxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsPayloadRxOctets." + ::= { l2tpDomainStatsEntry 22 } + +l2tpDomainStatsPayloadHCRxPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsPayloadRxPkts." + ::= { l2tpDomainStatsEntry 23 } + +l2tpDomainStatsPayloadHCRxDiscs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object is a 64-bit version of + l2tpDomainStatsPayloadRxDiscs." + ::= { l2tpDomainStatsEntry 24 } + +l2tpDomainStatsPayloadHCTxOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsPayloadTxOctets." + ::= { l2tpDomainStatsEntry 25 } + +l2tpDomainStatsPayloadHCTxPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a 64-bit version of + l2tpDomainStatsPayloadTxPkts." + ::= { l2tpDomainStatsEntry 26 } + +-- +-- The L2TP Tunnel Configuration Table +-- + +l2tpTunnelConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpTunnelConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP tunnel configuration table. This + table contains objects that can be used to + (re)configure the operational characteristics + of a single L2TP tunnel. There is a 1-1 + correspondence between conceptual rows of + this table and conceptual rows of the + l2tpTunnelStatsTable. Entries in this table + have the same persistency characteristics as + that of the tunnelConfigTable." + REFERENCE "RFC 2667" + ::= { l2tpObjects 4 } + +l2tpTunnelConfigEntry OBJECT-TYPE + SYNTAX L2tpTunnelConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A L2TP tunnel interface configuration entry. + Entries in this table come and go as a result + of protocol interactions or on management + operations. The latter occurs when a row is + instantiated in the tunnelConfigTable row + and the encapsulation method is 'l2tp'." + REFERENCE "RFC 2667" + INDEX { l2tpTunnelConfigIfIndex } + ::= { l2tpTunnelConfigTable 1 } + +L2tpTunnelConfigEntry ::= + SEQUENCE { + l2tpTunnelConfigIfIndex + InterfaceIndex, + l2tpTunnelConfigDomainId + SnmpAdminString, + l2tpTunnelConfigAuth + INTEGER, + l2tpTunnelConfigSecret + SnmpAdminString, + l2tpTunnelConfigSecurity + INTEGER, + l2tpTunnelConfigHelloInterval + Integer32, + l2tpTunnelConfigIdleTimeout + Integer32, + l2tpTunnelConfigControlRWS + Integer32, + l2tpTunnelConfigControlMaxRetx + Integer32, + l2tpTunnelConfigControlMaxRetxTO + Integer32, + l2tpTunnelConfigPayloadSeq + INTEGER, + l2tpTunnelConfigReassemblyTO + L2tpMilliSeconds, + l2tpTunnelConfigTransport + INTEGER, + l2tpTunnelConfigDrainTunnel + TruthValue, + l2tpTunnelConfigProxyPPPAuth + TruthValue + } + +l2tpTunnelConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This value for this object is equal to the value + of ifIndex of the Interfaces MIB for tunnel + interfaces of type L2TP." + ::= { l2tpTunnelConfigEntry 1 } + +l2tpTunnelConfigDomainId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..80)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The tunnel domain that this tunnel belongs + to. A LNS tunnel endpoint will typically inherit + this value from the endpoint domain table. A + LAC may be provided with this information during + tunnel setup. When a zero length string is returned + this tunnel does not belong belong to any particular + domain." + ::= { l2tpTunnelConfigEntry 2 } + +l2tpTunnelConfigAuth OBJECT-TYPE + SYNTAX INTEGER { + none(1), + simple(2), + challenge(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object describes how L2TP tunnel peers are + to be authenticated. The value 'simple' indicates + that peers are authenticated simply by their host + name as described in the Host Name AVP. The value + 'challenge' indicates that all peers are challenged + to prove their identification. This mechanism is + described in the L2TP protocol. This object cannot + be modified when the tunnel is in a connecting or + connected state." + DEFVAL { none } + ::= { l2tpTunnelConfigEntry 3 } + +l2tpTunnelConfigSecret OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure the shared secret + used during the tunnel authentication phase of + + + + tunnel establishment. This object cannot be modified + when the tunnel is in a connecting or connected + state. This object MUST be accessible only via + requests using both authentication and privacy. + The agent MUST report an empty string in response + to get, get-next and get-bulk requests." + ::= { l2tpTunnelConfigEntry 4 } + +l2tpTunnelConfigSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), + other(2), + ipsec(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines whether this tunnel is to be + secured. The value of 'ipSec' indicates that all + tunnel packets, control and session, have IP + Security headers. The type of IP Security headers + (AH, ESP etc) and how they are further described + is outside the scope of this document. This object + cannot be modified when the tunnel is in a connecting + or connected state." + DEFVAL { none } + ::= { l2tpTunnelConfigEntry 5 } + +l2tpTunnelConfigHelloInterval OBJECT-TYPE + SYNTAX Integer32 (0..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the interval in which Hello + (or keep-alive) packets are to be sent to the + tunnel peer. The value zero effectively disables + the sending of Hello packets. Modifications to this + object have immediate effect." + DEFVAL { 60 } + ::= { l2tpTunnelConfigEntry 6 } + +l2tpTunnelConfigIdleTimeout OBJECT-TYPE + SYNTAX Integer32 (-1..86400) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This object defines the period of time that an + established tunnel with no sessions will wait + before disconnecting the tunnel. A value of + zero indicates that the tunnel will disconnect + immediately after the last session disconnects. + A value of -1 leaves the tunnel up indefinitely. + Modifications to this object have immediate + effect." + DEFVAL { 0 } + ::= { l2tpTunnelConfigEntry 7 } + +l2tpTunnelConfigControlRWS OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the control channel receive + window size. It specifies the maximum number of + packets the tunnel peer can send without waiting + for an acknowledgement from this peer. This object + cannot be modified when the tunnel is in a con- + necting or connected state." + DEFVAL { 4 } + ::= { l2tpTunnelConfigEntry 8 } + +l2tpTunnelConfigControlMaxRetx OBJECT-TYPE + SYNTAX Integer32 (0..32) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the number of retransmissions + which the tunnel will attempt before assuming that + the peer is no longer responding. A value of zero + indicates that this peer will not attempt to + retransmit an unacknowledged control packet. + Modifications to this object have immediate + effect." + DEFVAL { 5 } + ::= { l2tpTunnelConfigEntry 9 } + +l2tpTunnelConfigControlMaxRetxTO OBJECT-TYPE + SYNTAX Integer32 (1..32) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the maximum retransmission timeout + interval which the tunnel will wait before retrans- + + + + mitting a control packet that has not been acknowledged. + Modifications to this object have immediate effect." + DEFVAL { 16 } + ::= { l2tpTunnelConfigEntry 10 } + +l2tpTunnelConfigPayloadSeq OBJECT-TYPE + SYNTAX INTEGER { + onDemand(1), + never(2), + always(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines whether or not session payload + packets will be requested to be sent with sequence + numbers from tunnel peers belonging to this domain. + The value onDemand(1) allows the L2TP implementation + to initiate payload sequencing when necessary based + on local information (e.g: during LCP/NCP negotiations + or for CCP). The value never(2) indicates that L2TP + will never initiate sequencing but will do sequencing + if asked. The value always(3) indicates that L2TP + will send the Sequencing Required AVP during session + establishment. Modifications to this object have + immediate effect." + DEFVAL { onDemand } + ::= { l2tpTunnelConfigEntry 11 } + +l2tpTunnelConfigReassemblyTO OBJECT-TYPE + SYNTAX L2tpMilliSeconds + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the number of milliseconds that + this tunnel will wait before processing payload packets + that were received out of sequence (which are waiting + for the packet(s) to put them in sequence). A low value + increases the chance of delayed packets to be discarded + (which MAY cause the PPP decompression engine to + reset) while a high value may cause more queuing and + possibly degrade throughput if packets are truly lost. + The default value for this object is zero which will + result in all delayed packets being lost. Modifications + to this object have immediate effect." + DEFVAL { 0 } + ::= { l2tpTunnelConfigEntry 12 } + + + + +l2tpTunnelConfigTransport OBJECT-TYPE + SYNTAX INTEGER { + other(1), + none(2), + udpIp(3), + frameRelay(4), + atm(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the underlying transport media + that is in use for this tunnel entry. Different tunnel + transports may define MIB extensions to the L2TP tunnel + table to realize the transport layer. For example if the + value of this object is 'udpIp' then the value of ifIndex + for this table may be used to determine state from the + l2tpUdpStatsTable. This object cannot be modified when + the tunnel is in a connecting or connected state." + ::= { l2tpTunnelConfigEntry 13 } + +l2tpTunnelConfigDrainTunnel OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'true' will prevent any new + session from being either initiated or accepted but + does NOT disconnect any active sessions for this + tunnel. Note that when this occurs the + l2tpTunnelStatsDrainingTunnel status object of + this tunnel should reflect that it is 'draining'. + To cancel a drain this object should be set to + false(2). Setting this object to false(2) when + the L2TP objects l2tpDrainTunnels or + l2tpDomainConfigDrainTunnels is true(1) has + no affect, this tunnels will continue to drain." + DEFVAL { false } + ::= { l2tpTunnelConfigEntry 14 } + +l2tpTunnelConfigProxyPPPAuth OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure the sending + or acceptance of the session PPP Proxy + Authentication AVP's on the LAC or LNS." + + + + DEFVAL { true } + ::= { l2tpTunnelConfigEntry 15 } + +-- +-- The L2TP Tunnel Status and Statisticss Table +-- + + +l2tpTunnelStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpTunnelStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP tunnel status and statistics table. This + table contains objects that can be used to describe + the current status and statistics of a single L2TP + tunnel. There is a 1-1 correspondence between + conceptual rows of this table and conceptual rows of + the l2tpTunnelConfigTable." + ::= { l2tpObjects 5 } + +l2tpTunnelStatsEntry OBJECT-TYPE + SYNTAX L2tpTunnelStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP tunnel interface stats entry." + AUGMENTS { l2tpTunnelConfigEntry } + ::= { l2tpTunnelStatsTable 1 } + +L2tpTunnelStatsEntry ::= + SEQUENCE { + l2tpTunnelStatsLocalTID + Integer32, + l2tpTunnelStatsRemoteTID + Integer32, + l2tpTunnelStatsState + INTEGER, + l2tpTunnelStatsInitiated + INTEGER, + l2tpTunnelStatsRemoteHostName + SnmpAdminString, + l2tpTunnelStatsRemoteVendorName + SnmpAdminString, + l2tpTunnelStatsRemoteFirmwareRev + Integer32, + l2tpTunnelStatsRemoteProtocolVer + OCTET STRING, + + + + l2tpTunnelStatsInitialRemoteRWS + Integer32, + l2tpTunnelStatsBearerCaps + INTEGER, + l2tpTunnelStatsFramingCaps + INTEGER, + l2tpTunnelStatsControlRxPkts + Counter32, + l2tpTunnelStatsControlRxZLB + Counter32, + l2tpTunnelStatsControlOutOfSeq + Counter32, + l2tpTunnelStatsControlOutOfWin + Counter32, + l2tpTunnelStatsControlTxPkts + Counter32, + l2tpTunnelStatsControlTxZLB + Counter32, + l2tpTunnelStatsControlAckTO + Counter32, + l2tpTunnelStatsCurrentRemoteRWS + Gauge32, + l2tpTunnelStatsTxSeq + Integer32, + l2tpTunnelStatsTxSeqAck + Integer32, + l2tpTunnelStatsRxSeq + Integer32, + l2tpTunnelStatsRxSeqAck + Integer32, + l2tpTunnelStatsTotalSessions + Counter32, + l2tpTunnelStatsFailedSessions + Counter32, + l2tpTunnelStatsActiveSessions + Gauge32, + l2tpTunnelStatsLastResultCode + Integer32, + l2tpTunnelStatsLastErrorCode + Integer32, + l2tpTunnelStatsLastErrorMessage + SnmpAdminString, + l2tpTunnelStatsDrainingTunnel + TruthValue + } + +l2tpTunnelStatsLocalTID OBJECT-TYPE + SYNTAX Integer32 (0..65535) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the local tunnel Identifier." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpTunnelStatsEntry 1 } + +l2tpTunnelStatsRemoteTID OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the remote tunnel Identifier." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpTunnelStatsEntry 2 } + +l2tpTunnelStatsState OBJECT-TYPE + SYNTAX INTEGER { + tunnelIdle(1), + tunnelConnecting(2), + tunnelEstablished(3), + tunnelDisconnecting(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field contains the current state of the + control tunnel." + ::= { l2tpTunnelStatsEntry 3 } + +l2tpTunnelStatsInitiated OBJECT-TYPE + SYNTAX INTEGER { + locally(1), + remotely(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the tunnel was + initiated locally or by the remote tunnel peer." + ::= { l2tpTunnelStatsEntry 4 } + +l2tpTunnelStatsRemoteHostName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the host name as discovered + + + + during the tunnel establishment phase (via the Host + Name AVP) of the L2TP peer. If the tunnel is idle + this object should maintain its value from the last + time it was connected." + ::= { l2tpTunnelStatsEntry 5 } + +l2tpTunnelStatsRemoteVendorName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the vendor name of the peer's + L2TP implementation. If the tunnel is idle this + object should maintain its value from the last time + it was connected." + ::= { l2tpTunnelStatsEntry 6 } + +l2tpTunnelStatsRemoteFirmwareRev OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the tunnel peer's firmware + revision number. If the tunnel is idle this object + should maintain its value from the last time it + was connected." + ::= { l2tpTunnelStatsEntry 7 } + +l2tpTunnelStatsRemoteProtocolVer OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the protocol version and + revision of the tunnel peers implementation. The + first octet contains the protocol version. The + second octet contains the protocol revision." + ::= { l2tpTunnelStatsEntry 8 } + +l2tpTunnelStatsInitialRemoteRWS OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the initial remote peer's + receive window size as indicated by the tunnel peer + (in the RWS AVP) during the tunnel establishment + phase. If the tunnel is idle this object should + + + + maintain its value from the last time it was + connected." + ::= { l2tpTunnelStatsEntry 9 } + +l2tpTunnelStatsBearerCaps OBJECT-TYPE + SYNTAX INTEGER { + none(1), + digital(2), + analog(3), + digitalAnalog(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the Bearer Capabilities of + the tunnel peer. If the tunnel is idle this object + should maintain its value from the last time it was + connected." + ::= { l2tpTunnelStatsEntry 10 } + +l2tpTunnelStatsFramingCaps OBJECT-TYPE + SYNTAX INTEGER { + none(1), + sync(2), + async(3), + syncAsync(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the Framing Capabilities of + the tunnel peer. If the tunnel is idle this object + should maintain its value from the last time it was + connected." + ::= { l2tpTunnelStatsEntry 11 } + +l2tpTunnelStatsControlRxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of control packets + received on the tunnel." + ::= { l2tpTunnelStatsEntry 12 } + +l2tpTunnelStatsControlRxZLB OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object returns a count of the number of Zero + Length Body control packet acknowledgement packets + that were received." + ::= { l2tpTunnelStatsEntry 13 } + +l2tpTunnelStatsControlOutOfSeq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns a count of the number of + control packets that were not received in the + correct order (as per the sequence number) + on this tunnel including out of window + packets." + ::= { l2tpTunnelStatsEntry 14 } + +l2tpTunnelStatsControlOutOfWin OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of control + packets that were received outside of the + offered receive window. It is implementation + specific as to whether these packets are queued + or discarded." + ::= { l2tpTunnelStatsEntry 15 } + +l2tpTunnelStatsControlTxPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of control + packets that were transmitted to the tunnel + peer." + ::= { l2tpTunnelStatsEntry 16 } + +l2tpTunnelStatsControlTxZLB OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of Zero Length + Body control packets transmitted to the tunnel + + + + peer." + ::= { l2tpTunnelStatsEntry 17 } + +l2tpTunnelStatsControlAckTO OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns a count of the number of + control packet timeouts due to the lack of a + timely acknowledgement from the tunnel peer." + ::= { l2tpTunnelStatsEntry 18 } + +l2tpTunnelStatsCurrentRemoteRWS OBJECT-TYPE + SYNTAX Gauge32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the current remote receive + window size as determined by the local flow + control mechanism employed." + ::= { l2tpTunnelStatsEntry 19 } + +l2tpTunnelStatsTxSeq OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next send sequence number + for the control channel." + ::= { l2tpTunnelStatsEntry 20 } + +l2tpTunnelStatsTxSeqAck OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the send sequence number that + the tunnel peer has acknowledged for the control + channel. The flow control state can be determined + by subtracting the l2tpTunnelStatsTxSeq from + l2tpTunnelStatsTxSeqAck and comparing this value + to l2tpTunnelStatsCurrentRemoteRWS (taking into + consideration sequence number wraps)." + ::= { l2tpTunnelStatsEntry 21 } + +l2tpTunnelStatsRxSeq OBJECT-TYPE + SYNTAX Integer32 (0..65535) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next receive sequence + number expected to be received on this control + channel." + ::= { l2tpTunnelStatsEntry 22 } + +l2tpTunnelStatsRxSeqAck OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the last receive sequence + number that was acknowledged back to the tunnel + peer for the control channel." + ::= { l2tpTunnelStatsEntry 23 } + +l2tpTunnelStatsTotalSessions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of sessions + that this tunnel has successfully connected through + to its tunnel peer since this tunnel was created." + ::= { l2tpTunnelStatsEntry 24 } + +l2tpTunnelStatsFailedSessions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of sessions + that were initiated but failed to reach the + established phase." + ::= { l2tpTunnelStatsEntry 25 } + +l2tpTunnelStatsActiveSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of sessions + in the established state for this tunnel." + ::= { l2tpTunnelStatsEntry 26 } + +l2tpTunnelStatsLastResultCode OBJECT-TYPE + + + + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the last value of the result + code as described in the Result Code AVP which + caused the tunnel to disconnect." + ::= { l2tpTunnelStatsEntry 27 } + +l2tpTunnelStatsLastErrorCode OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the last value of the error + code as described in the Result Code AVP which + caused the tunnel to disconnect." + ::= { l2tpTunnelStatsEntry 28 } + +l2tpTunnelStatsLastErrorMessage OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the last value of the optional + message as described in the Result Code AVP which + caused the tunnel to disconnect." + ::= { l2tpTunnelStatsEntry 29 } + +l2tpTunnelStatsDrainingTunnel OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if this tunnel is draining + off sessions. This object will return false(2) when + the tunnel is not draining sessions or after the + last session has disconnected when the tunnel is in + the draining state." + ::= { l2tpTunnelStatsEntry 30 } + +-- +-- { l2tpObjects 6 } reserved for future use +-- + +-- +-- The L2TP Session Status and Statistics Table +-- + + + +l2tpSessionStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP session status and statistics table. This + table contains the objects that can be used to + describe the current status and statistics of a + single L2TP tunneled session." + ::= { l2tpObjects 7 } + +l2tpSessionStatsEntry OBJECT-TYPE + SYNTAX L2tpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP session interface stats entry." + INDEX { l2tpSessionStatsTunnelIfIndex, + l2tpSessionStatsLocalSID } + ::= { l2tpSessionStatsTable 1 } + +L2tpSessionStatsEntry ::= + SEQUENCE { + l2tpSessionStatsTunnelIfIndex + InterfaceIndex, + l2tpSessionStatsIfIndex + InterfaceIndex, + l2tpSessionStatsLocalSID + Integer32, + l2tpSessionStatsRemoteSID + Integer32, + l2tpSessionStatsUserName + SnmpAdminString, + l2tpSessionStatsState + INTEGER, + l2tpSessionStatsCallType + INTEGER, + l2tpSessionStatsCallSerialNumber + Unsigned32, + l2tpSessionStatsTxConnectSpeed + Unsigned32, + l2tpSessionStatsRxConnectSpeed + Unsigned32, + l2tpSessionStatsCallBearerType + INTEGER, + l2tpSessionStatsFramingType + INTEGER, + l2tpSessionStatsPhysChanId + + + + Unsigned32, + l2tpSessionStatsDNIS + SnmpAdminString, + l2tpSessionStatsCLID + SnmpAdminString, + l2tpSessionStatsSubAddress + SnmpAdminString, + l2tpSessionStatsPrivateGroupID + SnmpAdminString, + l2tpSessionStatsProxyLcp + TruthValue, + l2tpSessionStatsAuthMethod + INTEGER, + l2tpSessionStatsSequencingState + INTEGER, + l2tpSessionStatsOutSequence + Counter32, + l2tpSessionStatsReassemblyTO + Counter32, + l2tpSessionStatsTxSeq + Integer32, + l2tpSessionStatsRxSeq + Integer32 + } + +l2tpSessionStatsTunnelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the session's associated + L2TP tunnel ifIndex value." + ::= { l2tpSessionStatsEntry 1 } + +l2tpSessionStatsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the ifIndex value of the + interface from which PPP packets are being tunneled. + For example this could be a DS0 ifIndex on a + LAC or it would be the PPP ifIndex on the LNS." + ::= { l2tpSessionStatsEntry 2 } + +l2tpSessionStatsLocalSID OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This object contains the local assigned session + identifier for this session." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpSessionStatsEntry 3 } + +l2tpSessionStatsRemoteSID OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the remote assigned session + identifier for this session. When a session is + starting this value may be zero until the remote + tunnel endpoint has responded." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpSessionStatsEntry 4 } + +l2tpSessionStatsUserName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the peer session name on + this interface. This is typically the login name + of the remote user. If the user name is unknown to + the local tunnel peer then this object will contain + a null string." + ::= { l2tpSessionStatsEntry 5 } + +l2tpSessionStatsState OBJECT-TYPE + SYNTAX INTEGER { + sessionIdle(1), + sessionConnecting(2), + sessionEstablished(3), + sessionDisconnecting(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the current state of the + session." + ::= { l2tpSessionStatsEntry 6 } + +l2tpSessionStatsCallType OBJECT-TYPE + SYNTAX INTEGER { + lacIncoming(1), + + + + lnsIncoming(2), + lacOutgoing(3), + lnsOutgoing(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of call and the + role this tunnel peer is providing for this + session. For example, lacIncoming(1) indicates + that this tunnel peer is acting as a LAC and + generated a Incoming-Call-Request to the tunnel + peer (the LNS). Note that tunnel peers can be + both LAC and LNS simultaneously." + ::= { l2tpSessionStatsEntry 7 } + +l2tpSessionStatsCallSerialNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the serial number that has + been assigned to this session." + ::= { l2tpSessionStatsEntry 8 } + +l2tpSessionStatsTxConnectSpeed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the last known transmit + baud rate for this session." + ::= { l2tpSessionStatsEntry 9 } + +l2tpSessionStatsRxConnectSpeed OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the last known receive + baud rate for this session established." + ::= { l2tpSessionStatsEntry 10 } + +l2tpSessionStatsCallBearerType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + + + + digital(2), + analog(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the bearer type of this + session." + ::= { l2tpSessionStatsEntry 11 } + +l2tpSessionStatsFramingType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + sync(2), + async(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the framing type of this + session." + ::= { l2tpSessionStatsEntry 12 } + +l2tpSessionStatsPhysChanId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the physical channel + identifier for the session." + ::= { l2tpSessionStatsEntry 13 } + +l2tpSessionStatsDNIS OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the Dialed Number + Information String that the LAC obtained from + the network for the session. If no DNIS was + provided then a null string will be returned." + ::= { l2tpSessionStatsEntry 14 } + +l2tpSessionStatsCLID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object identifies the Calling Line ID + that the LAC obtained from the network for + the session. If no CLID was provided then a + null string will be returned." + ::= { l2tpSessionStatsEntry 15 } + +l2tpSessionStatsSubAddress OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the Sub Address that + the LAC obtained from the network for the + session. If no Sub Address was provided then + a null string will be returned." + ::= { l2tpSessionStatsEntry 16 } + +l2tpSessionStatsPrivateGroupID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the Private Group + Identifier used for this tunneled session. + If no Private Group Identifier was provided + then a null string will be returned." + ::= { l2tpSessionStatsEntry 17 } + +l2tpSessionStatsProxyLcp OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the LAC performed proxy LCP + for this session." + ::= { l2tpSessionStatsEntry 18 } + +l2tpSessionStatsAuthMethod OBJECT-TYPE + SYNTAX INTEGER { + none(1), + text(2), + pppChap(3), + pppPap(4), + pppEap(5), + pppMsChapV1(6), + pppMsChapV2(7), + other(8) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the proxy authentication + method employed by the LAC for the session. If + l2tpSessionProxyLcp is false(2) this object + should not be interpreted." + ::= { l2tpSessionStatsEntry 19 } + +l2tpSessionStatsSequencingState OBJECT-TYPE + SYNTAX INTEGER { + none(1), + remote(2), + local(3), + both(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object defines which tunnel peers have + requested payload sequencing. The value of + both(4) indicates that both peers have requested + payload sequencing." + ::= { l2tpSessionStatsEntry 20 } + +l2tpSessionStatsOutSequence OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the total number of packets + received for this session which were received out + of sequence." + ::= { l2tpSessionStatsEntry 21 } + +l2tpSessionStatsReassemblyTO OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the number of reassembly + timeouts that have occurred for this session." + ::= { l2tpSessionStatsEntry 22 } + +l2tpSessionStatsTxSeq OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object contains the next send sequence number + for for this session." + ::= { l2tpSessionStatsEntry 23 } + +l2tpSessionStatsRxSeq OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next receive sequence + number expected to be received on this session." + ::= { l2tpSessionStatsEntry 24 } + +-- +-- The L2TP Tunnel Mapping Table +-- + +l2tpTunnelMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpTunnelMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP Tunnel index mapping table. This table + is intended to assist management applications + to quickly determine what the ifIndex value is + for a given local tunnel identifier." + ::= { l2tpObjects 8 } + +l2tpTunnelMapEntry OBJECT-TYPE + SYNTAX L2tpTunnelMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP tunnel index map entry." + INDEX { l2tpTunnelMapLocalTID } + ::= { l2tpTunnelMapTable 1 } + +L2tpTunnelMapEntry ::= + SEQUENCE { + l2tpTunnelMapLocalTID + Integer32, + l2tpTunnelMapIfIndex + InterfaceIndex + } + +l2tpTunnelMapLocalTID OBJECT-TYPE + SYNTAX Integer32 (1..65535) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains the local tunnel Identifier." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpTunnelMapEntry 1 } + +l2tpTunnelMapIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value for this object is equal to the value + of ifIndex of the Interfaces MIB for tunnel + interfaces of type L2TP." + ::= { l2tpTunnelMapEntry 2 } + +-- +-- The L2TP Session Mapping Table +-- + +l2tpSessionMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpSessionMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP Session index mapping table. This table + is intended to assist management applications + to map interfaces to a tunnel and session + identifier." + ::= { l2tpObjects 9 } + +l2tpSessionMapEntry OBJECT-TYPE + SYNTAX L2tpSessionMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP Session index map entry." + INDEX { l2tpSessionMapIfIndex } + ::= { l2tpSessionMapTable 1 } + +L2tpSessionMapEntry ::= + SEQUENCE { + l2tpSessionMapIfIndex + InterfaceIndex, + l2tpSessionMapTunnelIfIndex + InterfaceIndex, + l2tpSessionMapLocalSID + + + + Integer32, + l2tpSessionMapStatus + RowStatus + } + +l2tpSessionMapIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies the ifIndex value of the + interface which is receiving or sending its packets + over an L2TP tunnel. For example this could be a DS0 + ifIndex on a LAC or a PPP ifIndex on the LNS." + ::= { l2tpSessionMapEntry 1 } + +l2tpSessionMapTunnelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the sessions associated + L2TP tunnel ifIndex value. When this object is + set it provides a binding between a particular + interface identified by l2tpSessionMapIfIndex + to a particular tunnel." + ::= { l2tpSessionMapEntry 2 } + +l2tpSessionMapLocalSID OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the local assigned session + identifier for this session." + REFERENCE "RFC 2661, Section 3.1" + ::= { l2tpSessionMapEntry 3 } + +l2tpSessionMapStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this session map entry." + ::= { l2tpSessionMapEntry 4 } + +-- +-- { l2tpIpUdpObjects 1 } reserved for future use + + + +-- +-- The L2TP UDP/IP Transport Status and Statistics Table +-- + +l2tpUdpStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF L2tpUdpStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The L2TP UDP/IP transport stats table. This table + contains objects that can be used to describe the + current status and statistics of the UDP/IP L2TP + tunnel transport." + ::= { l2tpIpUdpObjects 2 } + +l2tpUdpStatsEntry OBJECT-TYPE + SYNTAX L2tpUdpStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An L2TP UDP/IP transport stats entry." + INDEX { l2tpUdpStatsIfIndex } + ::= { l2tpUdpStatsTable 1 } + +L2tpUdpStatsEntry ::= + SEQUENCE { + l2tpUdpStatsIfIndex + InterfaceIndex, + l2tpUdpStatsPeerPort + Integer32, + l2tpUdpStatsLocalPort + Integer32 + } + +l2tpUdpStatsIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value for this object is equal to the + value of ifIndex of the Interfaces MIB for + tunnel interfaces of type L2TP and which have + a L2TP transport of UDP/IP." + ::= { l2tpUdpStatsEntry 1 } + +l2tpUdpStatsPeerPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object reflects the peer's UDP port number + used for this tunnel. When not known a value of + zero should be returned." + ::= { l2tpUdpStatsEntry 2 } + +l2tpUdpStatsLocalPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the local UDP port number + that this tunnel is bound to." + ::= { l2tpUdpStatsEntry 3 } + +-- +-- Definition of generic L2TP notifications +-- + +l2tpTunnelAuthFailure NOTIFICATION-TYPE + OBJECTS { + l2tpTunnelStatsInitiated, + l2tpTunnelStatsRemoteHostName + } + STATUS current + DESCRIPTION + "A l2tpTunnelAuthFailure trap signifies that an + attempt to establish a tunnel to a remote peer + has failed authentication." + ::= { l2tpNotifications 1 } + +-- +-- conformance information +-- + +l2tpGroups OBJECT IDENTIFIER ::= { l2tpConformance 1 } +l2tpCompliances OBJECT IDENTIFIER ::= { l2tpConformance 2 } + +-- +-- compliance statements +-- + +l2tpMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented with support for + read-create and read-write, then such an + + + + implementation can claim full compliance. Such + an implementation can then be both monitored + and configured with this MIB." + + MODULE -- this module + + -- unconditionally mandatory groups + MANDATORY-GROUPS { + l2tpConfigGroup, + l2tpStatsGroup, + l2tpTrapGroup + } + -- conditionally mandatory groups + GROUP l2tpIpUdpGroup + DESCRIPTION + "This group is mandatory for implementations that + support L2TP over UDP/IP." + + -- optional groups + GROUP l2tpDomainGroup + DESCRIPTION + "This group is optional for L2TP devices that + group tunnel endpoints into tunnel domains." + + -- optional Mapping Group + GROUP l2tpMappingGroup + DESCRIPTION + "This group is optional for L2TP devices that + provide index mapping." + + -- optional Security Group + GROUP l2tpSecurityGroup + DESCRIPTION + "This group is optional for SNMP agents which support + both authentication and privacy of SNMP messages for + the management of L2TP keys." + + -- optional High Capacity Group + GROUP l2tpHCPacketGroup + DESCRIPTION + "This group is mandatory for implementations that + support the l2tpDomainGroup AND could potentially + overflow the L2TP Domain 32-bit counters is less + than one hour." + + ::= { l2tpCompliances 1 } + +l2tpMIBReadOnlyCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "When this MIB is implemented without support for + read-create and read-write (i.e. in read-only mode), + then such an implementation can claim read-only + compliance. Such an implementation can then be + monitored but can not be configured with this MIB." + + MODULE -- this module + + -- unconditionally mandatory groups + MANDATORY-GROUPS { + l2tpConfigGroup, + l2tpStatsGroup, + l2tpTrapGroup + } + + OBJECT l2tpAdminState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDrainTunnels + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigDomainId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigHelloInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigIdleTimeout + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigControlRWS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigControlMaxRetx + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigControlMaxRetxTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigPayloadSeq + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigReassemblyTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigTransport + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigDrainTunnel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigProxyPPPAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- conditionally mandatory groups + GROUP l2tpIpUdpGroup + DESCRIPTION + "This group is mandatory for implementations that + support L2TP over UDP/IP." + + -- optional groups + GROUP l2tpDomainGroup + DESCRIPTION + "This group is optional for L2TP devices that + group tunnel endpoints into tunnel domains." + + OBJECT l2tpDomainConfigAdminState + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigDrainTunnels + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigTunnelHelloInt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigTunnelIdleTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigControlRWS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigControlMaxRetx + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigControlMaxRetxTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigPayloadSeq + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigReassemblyTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigProxyPPPAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT l2tpDomainConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- optional Mapping Group + GROUP l2tpMappingGroup + DESCRIPTION + "This group is optional for L2TP devices that + provide index mapping." + + OBJECT l2tpSessionMapTunnelIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpSessionMapStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- optional Security Group + GROUP l2tpSecurityGroup + DESCRIPTION + "This group is optional for SNMP agents which support + both authentication and privacy of SNMP messages for + the management of L2TP keys." + + OBJECT l2tpDomainConfigAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigSecret + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpDomainConfigTunnelSecurity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT l2tpTunnelConfigAuth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigSecret + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT l2tpTunnelConfigSecurity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- optional High Capacity Group + GROUP l2tpHCPacketGroup + DESCRIPTION + "This group is mandatory for implementations that + support the l2tpDomainGroup AND could potentially + overflow the L2TP Domain 32-bit counters is less + than one hour." + + ::= { l2tpCompliances 2 } + +-- units of conformance + +l2tpConfigGroup OBJECT-GROUP + OBJECTS { + l2tpAdminState, + l2tpDrainTunnels, + l2tpTunnelConfigDomainId, + l2tpTunnelConfigHelloInterval, + l2tpTunnelConfigIdleTimeout, + l2tpTunnelConfigControlRWS, + l2tpTunnelConfigControlMaxRetx, + l2tpTunnelConfigControlMaxRetxTO, + l2tpTunnelConfigPayloadSeq, + l2tpTunnelConfigReassemblyTO, + l2tpTunnelConfigTransport, + l2tpTunnelConfigDrainTunnel, + l2tpTunnelConfigProxyPPPAuth + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information of the L2TP protocol, tunnels and + sessions." + + + + ::= { l2tpGroups 1 } + +l2tpStatsGroup OBJECT-GROUP + OBJECTS { + l2tpProtocolVersions, + l2tpVendorName, + l2tpFirmwareRev, + l2tpDrainingTunnels, + l2tpTunnelStatsLocalTID, + l2tpTunnelStatsRemoteTID, + l2tpTunnelStatsState, + l2tpTunnelStatsInitiated, + l2tpTunnelStatsRemoteHostName, + l2tpTunnelStatsRemoteVendorName, + l2tpTunnelStatsRemoteFirmwareRev, + l2tpTunnelStatsRemoteProtocolVer, + l2tpTunnelStatsInitialRemoteRWS, + l2tpTunnelStatsBearerCaps, + l2tpTunnelStatsFramingCaps, + l2tpTunnelStatsControlRxPkts, + l2tpTunnelStatsControlRxZLB, + l2tpTunnelStatsControlOutOfSeq, + l2tpTunnelStatsControlOutOfWin, + l2tpTunnelStatsControlTxPkts, + l2tpTunnelStatsControlTxZLB, + l2tpTunnelStatsControlAckTO, + l2tpTunnelStatsCurrentRemoteRWS, + l2tpTunnelStatsTxSeq, + l2tpTunnelStatsTxSeqAck, + l2tpTunnelStatsRxSeq, + l2tpTunnelStatsRxSeqAck, + l2tpTunnelStatsTotalSessions, + l2tpTunnelStatsFailedSessions, + l2tpTunnelStatsActiveSessions, + l2tpTunnelStatsLastResultCode, + l2tpTunnelStatsLastErrorCode, + l2tpTunnelStatsLastErrorMessage, + l2tpTunnelStatsDrainingTunnel, + l2tpSessionStatsIfIndex, + l2tpSessionStatsRemoteSID, + l2tpSessionStatsUserName, + l2tpSessionStatsState, + l2tpSessionStatsCallType, + l2tpSessionStatsCallSerialNumber, + l2tpSessionStatsTxConnectSpeed, + l2tpSessionStatsRxConnectSpeed, + l2tpSessionStatsCallBearerType, + l2tpSessionStatsFramingType, + + + + l2tpSessionStatsPhysChanId, + l2tpSessionStatsDNIS, + l2tpSessionStatsCLID, + l2tpSessionStatsSubAddress, + l2tpSessionStatsPrivateGroupID, + l2tpSessionStatsProxyLcp, + l2tpSessionStatsAuthMethod, + l2tpSessionStatsSequencingState, + l2tpSessionStatsOutSequence, + l2tpSessionStatsReassemblyTO, + l2tpSessionStatsTxSeq, + l2tpSessionStatsRxSeq + } + STATUS current + DESCRIPTION + "A collection of objects providing status and + statistics of the L2TP protocol, tunnels and + sessions." + ::= { l2tpGroups 2 } + +l2tpIpUdpGroup OBJECT-GROUP + OBJECTS { + l2tpUdpStatsPeerPort, + l2tpUdpStatsLocalPort + } + STATUS current + DESCRIPTION + "A collection of objects providing status and + statistics of the L2TP UDP/IP transport layer." + ::= { l2tpGroups 3 } + +l2tpDomainGroup OBJECT-GROUP + OBJECTS { + l2tpDomainConfigAdminState, + l2tpDomainConfigDrainTunnels, + l2tpDomainConfigTunnelHelloInt, + l2tpDomainConfigTunnelIdleTO, + l2tpDomainConfigControlRWS, + l2tpDomainConfigControlMaxRetx, + l2tpDomainConfigControlMaxRetxTO, + l2tpDomainConfigPayloadSeq, + l2tpDomainConfigReassemblyTO, + l2tpDomainConfigProxyPPPAuth, + l2tpDomainConfigStorageType, + l2tpDomainConfigStatus, + l2tpDomainStatsTotalTunnels, + l2tpDomainStatsFailedTunnels, + l2tpDomainStatsFailedAuths, + + + + l2tpDomainStatsActiveTunnels, + l2tpDomainStatsTotalSessions, + l2tpDomainStatsFailedSessions, + l2tpDomainStatsActiveSessions, + l2tpDomainStatsDrainingTunnels, + l2tpDomainStatsControlRxOctets, + l2tpDomainStatsControlRxPkts, + l2tpDomainStatsControlTxOctets, + l2tpDomainStatsControlTxPkts, + l2tpDomainStatsPayloadRxOctets, + l2tpDomainStatsPayloadRxPkts, + l2tpDomainStatsPayloadRxDiscs, + l2tpDomainStatsPayloadTxOctets, + l2tpDomainStatsPayloadTxPkts + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration, + status and statistics of L2TP tunnel domains." + ::= { l2tpGroups 4 } + +l2tpMappingGroup OBJECT-GROUP + OBJECTS { + l2tpTunnelMapIfIndex, + l2tpSessionMapTunnelIfIndex, + l2tpSessionMapLocalSID, + l2tpSessionMapStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing index mapping." + ::= { l2tpGroups 5 } + +l2tpSecurityGroup OBJECT-GROUP + OBJECTS { + l2tpDomainConfigAuth, + l2tpDomainConfigSecret, + l2tpDomainConfigTunnelSecurity, + l2tpTunnelConfigAuth, + l2tpTunnelConfigSecret, + l2tpTunnelConfigSecurity + } + STATUS current + DESCRIPTION + "A collection of objects providing L2TP security + configuration." + ::= { l2tpGroups 6 } + + + + +l2tpTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { + l2tpTunnelAuthFailure + } + STATUS current + DESCRIPTION + "A collection of L2TP trap events as specified + in NOTIFICATION-TYPE constructs." + ::= { l2tpGroups 7 } + +l2tpHCPacketGroup OBJECT-GROUP + OBJECTS { + l2tpDomainStatsControlHCRxOctets, + l2tpDomainStatsControlHCRxPkts, + l2tpDomainStatsControlHCTxOctets, + l2tpDomainStatsControlHCTxPkts, + l2tpDomainStatsPayloadHCRxOctets, + l2tpDomainStatsPayloadHCRxPkts, + l2tpDomainStatsPayloadHCRxDiscs, + l2tpDomainStatsPayloadHCTxOctets, + l2tpDomainStatsPayloadHCTxPkts + } + STATUS current + DESCRIPTION + "A collection of objects providing High Capacity + 64-bit counter objects." + ::= { l2tpGroups 8 } + +END diff --git a/mibs/ietf/LANGTAG-TC-MIB b/mibs/ietf/LANGTAG-TC-MIB new file mode 100644 index 0000000..0a1064a --- /dev/null +++ b/mibs/ietf/LANGTAG-TC-MIB @@ -0,0 +1,58 @@ +LANGTAG-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION FROM SNMPv2-TC; -- [RFC2579] + +langTagTcMIB MODULE-IDENTITY + LAST-UPDATED "200711090000Z" -- 9 November 2007 + ORGANIZATION "IETF Operations and Management (OPS) Area" + CONTACT-INFO "EMail: ops-area@ietf.org + Home page: http://www.ops.ietf.org/" + DESCRIPTION + "This MIB module defines a textual convention for + representing BCP 47 language tags." + REVISION "200711090000Z" -- 9 November 2007 + DESCRIPTION + "Initial revision, published as RFC 5131. + + Copyright (C) The IETF Trust (2007). This version of this + MIB module is part of RFC 5131; see the RFC itself for full + legal notices." + ::= { mib-2 165 } + +LangTag ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1a" + STATUS current + DESCRIPTION + "A language tag, constructed in accordance with BCP 47. + + Only lowercase characters are allowed. The purpose of this + restriction is to provide unique language tags for use as + indexes. BCP 47 recommends case conventions for user + interfaces, but objects using this TEXTUAL-CONVENTION MUST + use only lowercase. + + Values MUST be well-formed language tags, in conformance + with the definition of well-formed tags in BCP 47. An + implementation MAY further limit the values it accepts to + those permitted by a 'validating' processor, as defined in + BCP 47. + + In theory, BCP 47 language tags are of unlimited length. + The language tag described in this TEXTUAL-CONVENTION is of + limited length. The analysis of language tag lengths in BCP + 47 confirms that this limit will not pose a problem in + practice. In particular, this length is greater than the + + + + minimum requirements set out in Section 4.3.1. + + A zero-length language tag is not a valid language tag. + This can be used to express 'language tag absent' where + required, for example, when used as an index field." + REFERENCE "RFC 4646 BCP 47" + SYNTAX OCTET STRING (SIZE (0 | 2..63)) + +END diff --git a/mibs/ietf/LMP-MIB b/mibs/ietf/LMP-MIB new file mode 100644 index 0000000..25cf108 --- /dev/null +++ b/mibs/ietf/LMP-MIB @@ -0,0 +1,3374 @@ +LMP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + transmission, Unsigned32, Counter32, TimeTicks + FROM SNMPv2-SMI -- RFC 2578 + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + TEXTUAL-CONVENTION, TruthValue, RowStatus, StorageType, + TimeStamp + + + + FROM SNMPv2-TC -- RFC 2579 + + InterfaceIndexOrZero, ifIndex + FROM IF-MIB -- RFC 2863 + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB -- RFC 4001 + + teLinkRemoteIpAddr, teLinkIncomingIfId, TeLinkEncodingType + FROM TE-LINK-STD-MIB; -- RFC 4220 + +lmpMIB MODULE-IDENTITY + LAST-UPDATED "200608140000Z" -- 14 August 2006 + ORGANIZATION "Common Control and Measurement Protocols (CCAMP) + Working Group" + CONTACT-INFO + " Martin Dubuc + Email: dubuc.consulting@sympatico.ca + + Thomas D. Nadeau + Email: tnadeau@cisco.com + + Jonathan P. Lang + Email: jplang@ieee.org + + Evan McGinnis + Email: emcginnis@hammerheadsystems.com + + Adrian Farrel + Email: adrian@olddog.co.uk" + + DESCRIPTION + "Copyright (C) 2006 The Internet Society. This version of + the MIB module is part of RFC 4631; see the RFC itself + for full legal notices. + + This MIB module contains managed object definitions for + the Link Management Protocol (LMP) as + defined in 'Link Management Protocol'." + + -- Revision history. + REVISION + "200608140000Z" -- 14 August 2006 + DESCRIPTION + "Revised version: + - Fixes textual descriptions of TruthValue settings such that + True is always 1 and False is always 2. + - Adds punctuation to REFERENCE clauses. + + + + This revision published as RFC 4631" + REVISION + "200601110000Z" -- 11 January 2006 + DESCRIPTION + "Initial version published as RFC 4327" + ::= { transmission 227 } + +-- Textual Conventions + +LmpInterval ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The interval delay, in milliseconds." + SYNTAX Unsigned32 (1..65535) + +LmpRetransmitInterval ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The retransmission interval delay in milliseconds." + SYNTAX Unsigned32 (1..4294967295) + +LmpNodeId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d" + STATUS current + DESCRIPTION + "Represents a Node ID in network byte order. Node ID is an + address of type IPv4." + REFERENCE + "Section 1.1 of Link Management Protocol, RFC 4204." + SYNTAX OCTET STRING(SIZE(4)) + +-- Top level components of this MIB + +-- Notifications +lmpNotifications OBJECT IDENTIFIER ::= { lmpMIB 0 } +-- Tables, Scalars +lmpObjects OBJECT IDENTIFIER ::= { lmpMIB 1 } +-- Conformance +lmpConformance OBJECT IDENTIFIER ::= { lmpMIB 2 } + +lmpAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired operational status of LMP on the node. + + + + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + + DEFVAL { up } + ::= { lmpObjects 1 } + +lmpOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of LMP on the node." + ::= { lmpObjects 2 } + +-- LMP Neighbor Table + +lmpNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the neighbor node(s) to which control + channels may be established." + ::= { lmpObjects 3 } + +lmpNbrEntry OBJECT-TYPE + SYNTAX LmpNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by a LMP-enabled device for + every pair of nodes that can establish control channels." + INDEX { lmpNbrNodeId } + ::= { lmpNbrTable 1 } + +LmpNbrEntry ::= SEQUENCE { + lmpNbrNodeId LmpNodeId, + lmpNbrRetransmitInterval LmpRetransmitInterval, + lmpNbrRetryLimit Unsigned32, + lmpNbrRetransmitDelta Unsigned32, + lmpNbrAdminStatus INTEGER, + lmpNbrOperStatus INTEGER, + lmpNbrRowStatus RowStatus, + lmpNbrStorageType StorageType +} + +lmpNbrNodeId OBJECT-TYPE + SYNTAX LmpNodeId + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a unique index for an entry in the LmpNbrTable. + This value represents the remote Node ID." + ::= { lmpNbrEntry 1 } + +lmpNbrRetransmitInterval OBJECT-TYPE + SYNTAX LmpRetransmitInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the initial retransmission interval that + is used for the retransmission of messages that require + acknowledgement. This object, along with lmpNbrRetryLimit, + is used to implement the congestion-handling mechanism defined + in Section 10 of the Link Management Protocol specification, + which is based on RFC 2914." + REFERENCE + "Link Management Protocol, RFC 4204. + + Congestion Control Principles, RFC 2914." + DEFVAL { 500 } + ::= { lmpNbrEntry 2 } + +lmpNbrRetryLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the maximum number of times a message + is transmitted without being acknowledged. A value of 0 is used + to indicate that a node should never stop retransmission. + This object, along with lmpNbrRetransmitInterval, is + used to implement the congestion-handling mechanism as defined + in Section 10 of the Link Management Protocol specification, + which is based on RFC 2914." + REFERENCE + "Link Management Protocol, RFC 4204. + Congestion Control Principles, RFC 2914." + DEFVAL { 3 } + ::= { lmpNbrEntry 3 } + +lmpNbrRetransmitDelta OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object governs the speed with which the sender increases + the retransmission interval, as explained in Section 10 of the + Link Management Protocol specification, which is based on + RFC 2914. This value is a power used to express the + exponential backoff. The ratio of two successive retransmission + intervals is (1 + Delta)." + REFERENCE + "Link Management Protocol, RFC 4204. + Congestion Control Principles, RFC 2914." + DEFVAL { 1 } + ::= { lmpNbrEntry 4 } + +lmpNbrAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired operational status of LMP to this remote node." + ::= { lmpNbrEntry 5 } + +lmpNbrOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of LMP to this remote node." + ::= { lmpNbrEntry 6 } + +lmpNbrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpNbrEntry 7 } + +lmpNbrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpNbrTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + + + + columnar object in the row." + DEFVAL { nonVolatile } + ::= { lmpNbrEntry 8 } + +-- End of lmpNbrTable + +lmpCcHelloIntervalDefault OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default value for the HelloInterval + parameter used in the Hello protocol keep-alive phase. It + indicates how frequently LMP Hello messages will be sent. It + is used as the default value for lmpCcHelloInterval. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpObjects 4 } + +lmpCcHelloIntervalDefaultMin OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default minimum value for the + HelloInterval parameter. It is used as a default value + for lmpCcHelloIntervalMin. Implementations should save the + value of this object in persistent memory so that it survives + restarts or reboot." + ::= { lmpObjects 5 } + +lmpCcHelloIntervalDefaultMax OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default maximum value for the + HelloInterval parameter. It is used as a default value + for lmpCcHelloIntervalMax. Implementations should save the + value of this object in persistent memory so that it survives + restarts or reboot." + ::= { lmpObjects 6 } + +lmpCcHelloDeadIntervalDefault OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "This object specifies the default HelloDeadInterval parameter + to use in the Hello protocol keep-alive phase. It indicates + how long a device should wait before declaring the control + channel dead. The HelloDeadInterval parameter should be at + least three times the value of HelloInterval. It is used as + a default value for lmpCcHelloDeadInterval. Implementations + should save the value of this object in persistent memory so + that it survives restarts or reboot." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpObjects 7 } + +lmpCcHelloDeadIntervalDefaultMin OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default minimum value for the + HelloDeadInterval parameter. It is used as a default value + for lmpCcHelloDeadIntervalMin. Implementations should save + the value of this object in persistent memory so that it + survives restarts or reboot." + ::= { lmpObjects 8 } + +lmpCcHelloDeadIntervalDefaultMax OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the default maximum value for the + HelloDeadInterval parameter. It is used as a default value + for lmpCcHelloDeadIntervalMax. Implementations should save the + value of this object in persistent memory so that it survives + restarts or reboot." + ::= { lmpObjects 9 } + +-- LMP Control Channel Table + +lmpControlChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpControlChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies LMP control channel information." + ::= { lmpObjects 10 } + + + + +lmpControlChannelEntry OBJECT-TYPE + SYNTAX LmpControlChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LMP-enabled device for + every control channel. Whenever a new entry is created with + lmpCcIsIf set to true(1), a corresponding entry is + created in ifTable as well (see RFC 2863)." + INDEX { lmpCcId } + ::= { lmpControlChannelTable 1 } + +LmpControlChannelEntry ::= SEQUENCE { + lmpCcId Unsigned32, + lmpCcUnderlyingIfIndex InterfaceIndexOrZero, + lmpCcIsIf TruthValue, + lmpCcNbrNodeId LmpNodeId, + lmpCcRemoteId Unsigned32, + lmpCcRemoteAddressType InetAddressType, + lmpCcRemoteIpAddr InetAddress, + lmpCcSetupRole INTEGER, + lmpCcAuthentication TruthValue, + lmpCcHelloInterval LmpInterval, + lmpCcHelloIntervalMin LmpInterval, + lmpCcHelloIntervalMax LmpInterval, + lmpCcHelloIntervalNegotiated LmpInterval, + lmpCcHelloDeadInterval LmpInterval, + lmpCcHelloDeadIntervalMin LmpInterval, + lmpCcHelloDeadIntervalMax LmpInterval, + lmpCcHelloDeadIntervalNegotiated LmpInterval, + lmpCcLastChange TimeTicks, + lmpCcAdminStatus INTEGER, + lmpCcOperStatus INTEGER, + lmpCcRowStatus RowStatus, + lmpCcStorageType StorageType +} + +lmpCcId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value represents the local control channel identifier. + The control channel identifier is a non-zero 32-bit number." + ::= { lmpControlChannelEntry 1 } + +lmpCcUnderlyingIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If lmpCcIsIf is set to true(1), this object carries the + index into the ifTable of the entry that represents the + LMP interface over which LMP will transmit its traffic. + If this object is set to zero but lmpCcIsIf is set to + true(1), the control channel is not currently associated + with any underlying interface, and the control channel's + operational status must not be up(1); nor should the + control channel forward or receive traffic. + If lmpCcIsIf is set to false(2), this object should be set + to zero and ignored." + ::= { lmpControlChannelEntry 2 } + +lmpCcIsIf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In implementations where the control channels are modeled + as interfaces, the value of this object is true(1), and + this control channel is represented by an interface in + the interfaces group table as indicated by the value of + lmpCcUnderlyingIfIndex. If control channels are not + modeled as interfaces, the value of this object is + false(2), and there is no corresponding interface for + this control channel in the interfaces group table; + the value of lmpCcUnderlyingIfIndex should be + ignored." + ::= { lmpControlChannelEntry 3 } + +lmpCcNbrNodeId OBJECT-TYPE + SYNTAX LmpNodeId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the Node ID of the control channel remote node. + This value either is configured or gets created by the node + when a Config message is received or when an outgoing Config + message is acknowledged by the remote node." + ::= { lmpControlChannelEntry 4 } + +lmpCcRemoteId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This value represents the remote control channel identifier + (32-bit number). It is determined during the negotiation + phase. A value of zero means that the remote control channel + identifier has not yet been learned." + ::= { lmpControlChannelEntry 5 } + +lmpCcRemoteAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents the remote control channel IP address + type. In point-to-point configuration, this value can be set + to unknown(0)." + ::= { lmpControlChannelEntry 6 } + +lmpCcRemoteIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents the remote control channel Internet + address for numbered control channel. The type of this + address is determined by lmpCcRemoteAddressType. + The control channel must be numbered on non-point-to-point + configuration. For point-to-point configuration, the + remote control channel address can be of type unknown, + in which case this object must be a zero-length string. The + lmpCcRemoteId object then identifies the unnumbered + address." + ::= { lmpControlChannelEntry 7 } + +lmpCcSetupRole OBJECT-TYPE + SYNTAX INTEGER { active(1), passive(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The role that this node should take during establishment + of this control channel. An active node will initiate + establishment. A passive node will wait for the remote node + to initiate. A pair of nodes that both take the passive role + will never establish communications." + DEFVAL { active } + ::= { lmpControlChannelEntry 8 } + +lmpCcAuthentication OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object indicates whether the control channel must use + authentication." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpControlChannelEntry 9 } + +lmpCcHelloInterval OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the value of the HelloInterval + parameter. The default value for this object should be + set to lmpCcHelloIntervalDefault." + ::= { lmpControlChannelEntry 10 } + +lmpCcHelloIntervalMin OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the minimum value for the + HelloInterval parameter. The default value for this + object should be set to lmpCcHelloIntervalMinDefault." + ::= { lmpControlChannelEntry 11 } + +lmpCcHelloIntervalMax OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the maximum value for the + HelloInterval parameter. The default value for this + object should be set to lmpCcHelloIntervalMaxDefault." + ::= { lmpControlChannelEntry 12 } + +lmpCcHelloIntervalNegotiated OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Once the control channel is active, this object represents + the negotiated HelloInterval value." + ::= { lmpControlChannelEntry 13 } + +lmpCcHelloDeadInterval OBJECT-TYPE + + + + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the value of the HelloDeadInterval + parameter. The default value for this object should be + set to lmpCcHelloDeadIntervalDefault." + ::= { lmpControlChannelEntry 14 } + +lmpCcHelloDeadIntervalMin OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the minimum value for the + HelloDeadInterval parameter. The default value for this + object should be set to lmpCcHelloDeadIntervalMinDefault." + ::= { lmpControlChannelEntry 15 } + +lmpCcHelloDeadIntervalMax OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the maximum value for the + HelloDeadInterval parameter. The default value for this + object should be set to lmpCcHelloIntervalMaxDefault." + ::= { lmpControlChannelEntry 16 } + +lmpCcHelloDeadIntervalNegotiated OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Once the control channel is active, this object represents + the negotiated HelloDeadInterval value." + ::= { lmpControlChannelEntry 17 } + +lmpCcLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the control channel entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value." + + + + ::= { lmpControlChannelEntry 18 } + +lmpCcAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired operational status of this control channel." + ::= { lmpControlChannelEntry 19 } + +lmpCcOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + configSnd(3), + configRcv(4), + active(5), + goingDown(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this control channel." + ::= { lmpControlChannelEntry 20 } + +lmpCcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpControlChannelEntry 21 } + +lmpCcStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpControlChannelTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + + DEFVAL { nonVolatile } + + + + ::= { lmpControlChannelEntry 22 } + +-- End of lmpControlChannelTable + + +-- LMP Control Channel Performance Table + +lmpControlChannelPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpControlChannelPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies LMP control channel performance + counters." + ::= { lmpObjects 11 } + +lmpControlChannelPerfEntry OBJECT-TYPE + SYNTAX LmpControlChannelPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by a LMP-enabled device for + every control channel. lmpCcCounterDiscontinuityTime is used + to indicate potential discontinuity for all counter objects + in this table." + INDEX { lmpCcId } + ::= { lmpControlChannelPerfTable 1 } + +LmpControlChannelPerfEntry ::= SEQUENCE { + lmpCcInOctets Counter32, + lmpCcInDiscards Counter32, + lmpCcInErrors Counter32, + lmpCcOutOctets Counter32, + lmpCcOutDiscards Counter32, + lmpCcOutErrors Counter32, + lmpCcConfigReceived Counter32, + lmpCcConfigSent Counter32, + lmpCcConfigRetransmit Counter32, + lmpCcConfigAckReceived Counter32, + lmpCcConfigAckSent Counter32, + lmpCcConfigNackReceived Counter32, + lmpCcConfigNackSent Counter32, + lmpCcHelloReceived Counter32, + lmpCcHelloSent Counter32, + lmpCcBeginVerifyReceived Counter32, + lmpCcBeginVerifySent Counter32, + lmpCcBeginVerifyRetransmit Counter32, + lmpCcBeginVerifyAckReceived Counter32, + + + + lmpCcBeginVerifyAckSent Counter32, + lmpCcBeginVerifyNackReceived Counter32, + lmpCcBeginVerifyNackSent Counter32, + lmpCcEndVerifyReceived Counter32, + lmpCcEndVerifySent Counter32, + lmpCcEndVerifyRetransmit Counter32, + lmpCcEndVerifyAckReceived Counter32, + lmpCcEndVerifyAckSent Counter32, + lmpCcTestStatusSuccessReceived Counter32, + lmpCcTestStatusSuccessSent Counter32, + lmpCcTestStatusSuccessRetransmit Counter32, + lmpCcTestStatusFailureReceived Counter32, + lmpCcTestStatusFailureSent Counter32, + lmpCcTestStatusFailureRetransmit Counter32, + lmpCcTestStatusAckReceived Counter32, + lmpCcTestStatusAckSent Counter32, + lmpCcLinkSummaryReceived Counter32, + lmpCcLinkSummarySent Counter32, + lmpCcLinkSummaryRetransmit Counter32, + lmpCcLinkSummaryAckReceived Counter32, + lmpCcLinkSummaryAckSent Counter32, + lmpCcLinkSummaryNackReceived Counter32, + lmpCcLinkSummaryNackSent Counter32, + lmpCcChannelStatusReceived Counter32, + lmpCcChannelStatusSent Counter32, + lmpCcChannelStatusRetransmit Counter32, + lmpCcChannelStatusAckReceived Counter32, + lmpCcChannelStatusAckSent Counter32, + lmpCcChannelStatusReqReceived Counter32, + lmpCcChannelStatusReqSent Counter32, + lmpCcChannelStatusReqRetransmit Counter32, + lmpCcChannelStatusRspReceived Counter32, + lmpCcChannelStatusRspSent Counter32, + lmpCcCounterDiscontinuityTime TimeStamp +} + +lmpCcInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of LMP message octets received on the + control channel." + ::= { lmpControlChannelPerfEntry 1 } + +lmpCcInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected. One + possible reason for discarding such a packet could be to + free up buffer space." + ::= { lmpControlChannelPerfEntry 2 } + +lmpCcInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets that contained errors + preventing them from being processed by LMP." + ::= { lmpControlChannelPerfEntry 3 } + +lmpCcOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of LMP message octets transmitted out of + the control channel." + ::= { lmpControlChannelPerfEntry 4 } + +lmpCcOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space." + ::= { lmpControlChannelPerfEntry 5 } + +lmpCcOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that could not be + transmitted because of errors." + ::= { lmpControlChannelPerfEntry 6 } + +lmpCcConfigReceived OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Config messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 7 } + +lmpCcConfigSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Config messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 8 } + +lmpCcConfigRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Config messages that + have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 9 } + +lmpCcConfigAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ConfigAck messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 10 } + +lmpCcConfigAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ConfigAck messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 11 } + +lmpCcConfigNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object counts the number of ConfigNack messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 12 } + +lmpCcConfigNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ConfigNack messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 13 } + +lmpCcHelloReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Hello messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 14 } + +lmpCcHelloSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Hello messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 15 } + +lmpCcBeginVerifyReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 16 } + +lmpCcBeginVerifySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that have + been sent on this control channel." + + + + ::= { lmpControlChannelPerfEntry 17 } + +lmpCcBeginVerifyRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that + have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 18 } + +lmpCcBeginVerifyAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyAck messages that + have been received on this control channel." + ::= { lmpControlChannelPerfEntry 19 } + +lmpCcBeginVerifyAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyAck messages that + have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 20 } + +lmpCcBeginVerifyNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyNack messages that + have been received on this control channel." + ::= { lmpControlChannelPerfEntry 21 } + +lmpCcBeginVerifyNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyNack messages that + have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 22 } + +lmpCcEndVerifyReceived OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that have + been received on this control channel." + ::= { lmpControlChannelPerfEntry 23 } + +lmpCcEndVerifySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that have + been sent on this control channel." + ::= { lmpControlChannelPerfEntry 24 } + +lmpCcEndVerifyRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that + have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 25 } + +lmpCcEndVerifyAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerifyAck messages that + have been received on this control channel." + ::= { lmpControlChannelPerfEntry 26 } + +lmpCcEndVerifyAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerifyAck messages that + have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 27 } + +lmpCcTestStatusSuccessReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 28 } + +lmpCcTestStatusSuccessSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 29 } + +lmpCcTestStatusSuccessRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 30 } + +lmpCcTestStatusFailureReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 31 } + +lmpCcTestStatusFailureSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 32 } + +lmpCcTestStatusFailureRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been retransmitted over this control channel." + + + + ::= { lmpControlChannelPerfEntry 33 } + +lmpCcTestStatusAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusAck messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 34 } + +lmpCcTestStatusAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusAck messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 35 } + +lmpCcLinkSummaryReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 36 } + +lmpCcLinkSummarySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 37 } + +lmpCcLinkSummaryRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages that + have been retransmitted over this control channel." + ::= { lmpControlChannelPerfEntry 38 } + +lmpCcLinkSummaryAckReceived OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryAck messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 39 } + +lmpCcLinkSummaryAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryAck messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 40 } + +lmpCcLinkSummaryNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryNack messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 41 } + +lmpCcLinkSummaryNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryNack messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 42 } + +lmpCcChannelStatusReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 43 } + +lmpCcChannelStatusSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 44 } + +lmpCcChannelStatusRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been retransmitted on this control channel." + ::= { lmpControlChannelPerfEntry 45 } + +lmpCcChannelStatusAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusAck messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 46 } + +lmpCcChannelStatusAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 47 } + +lmpCcChannelStatusReqReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 48 } + +lmpCcChannelStatusReqSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been sent on this control channel." + + + + ::= { lmpControlChannelPerfEntry 49 } + +lmpCcChannelStatusReqRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been retransmitted on this control channel." + ::= { lmpControlChannelPerfEntry 50 } + +lmpCcChannelStatusRspReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusResponse messages + that have been received on this control channel." + ::= { lmpControlChannelPerfEntry 51 } + +lmpCcChannelStatusRspSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusResponse messages + that have been sent on this control channel." + ::= { lmpControlChannelPerfEntry 52 } + +lmpCcCounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + one or more of this control channel's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this control channel of any + Counter32 object contained in the lmpControlChannelPerfTable. + If no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { lmpControlChannelPerfEntry 53 } + +-- End of lmpControlChannelPerfTable + +-- LMP TE Link Table + + + + +lmpTeLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpTeLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the LMP-specific TE link information. + Overall TE link information is kept in three separate tables: + ifTable for interface-specific information, lmpTeLinkTable + for LMP specific information, and teLinkTable for generic + TE link information. ifIndex is the common index to all + tables." + ::= { lmpObjects 12 } + +lmpTeLinkEntry OBJECT-TYPE + SYNTAX LmpTeLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table exists for each ifEntry with an + ifType of teLink(200) that is managed by LMP. An ifEntry with + an ifIndex must exist before the corresponding lmpTeLinkEntry is + created. If a TE link entry in the ifTable is destroyed, then + so is the corresponding entry in the lmpTeLinkTable. The + administrative status value is controlled from the ifEntry. + Setting the administrative status to testing prompts LMP to + start link verification on the TE link. Information about the + TE link that is not LMP specific is contained in the + teLinkTable of the TE-LINK-STD-MIB MIB module." + INDEX { ifIndex } + ::= { lmpTeLinkTable 1 } + +LmpTeLinkEntry ::= SEQUENCE { + lmpTeLinkNbrRemoteNodeId LmpNodeId, + lmpTeLinkVerification TruthValue, + lmpTeLinkFaultManagement TruthValue, + lmpTeLinkDwdm TruthValue, + lmpTeLinkOperStatus INTEGER, + lmpTeLinkRowStatus RowStatus, + lmpTeLinkStorageType StorageType +} + +lmpTeLinkNbrRemoteNodeId OBJECT-TYPE + SYNTAX LmpNodeId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the Node ID of the TE link remote node. This value + may be learned during the control channel parameter negotiation + + + + phase (in the Config message). Node ID is an address whose + type must be IPv4." + ::= { lmpTeLinkEntry 1 } + +lmpTeLinkVerification OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the LMP link verification + procedure is enabled for this TE link." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpTeLinkEntry 2 } + +lmpTeLinkFaultManagement OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the LMP fault management procedure + is enabled on this TE link." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpTeLinkEntry 3 } + +lmpTeLinkDwdm OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the LMP DWDM procedure is enabled + on this TE link." + REFERENCE + "Link Management Protocol (LMP) for Dense Wavelength Division + Multiplexing (DWDM) Optical Line Systems, RFC 4209." + ::= { lmpTeLinkEntry 4 } + +lmpTeLinkOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), down(2), testing(3), init(4), degraded(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this TE link. The status + is set to testing when the TE link is performing link + verification. A degraded state indicates that there is + + + + no active control channel between the pair of nodes that + form the endpoints of the TE link, but that at least one + data-bearing link on the TE link is allocated." + ::= { lmpTeLinkEntry 5 } + +lmpTeLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpTeLinkEntry 6 } + +lmpTeLinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpTeLinkTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + DEFVAL { nonVolatile } + ::= { lmpTeLinkEntry 7 } + +-- End of lmpTeLinkTable + + +lmpGlobalLinkVerificationInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates how often the link verification + procedure is executed. The interval is in milliseconds. + A value of 0 is used to indicate that the link + verification procedure should not be executed. The + interval specified in this object should be large enough + to allow the verification procedure to be completed + before the start of the next interval. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + ::= { lmpObjects 13 } + + + +-- LMP Link Verification Table + +lmpLinkVerificationTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpLinkVerificationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies TE link information associated with the + LMP verification procedure." + ::= { lmpObjects 14 } + +lmpLinkVerificationEntry OBJECT-TYPE + SYNTAX LmpLinkVerificationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LMP-enabled device for + every TE link that supports the LMP verification + procedure." + INDEX { ifIndex } + ::= { lmpLinkVerificationTable 1 } + +LmpLinkVerificationEntry ::= SEQUENCE { + lmpLinkVerifyInterval LmpInterval, + lmpLinkVerifyDeadInterval LmpInterval, + lmpLinkVerifyTransportMechanism BITS, + lmpLinkVerifyAllLinks TruthValue, + lmpLinkVerifyTransmissionRate Unsigned32, + lmpLinkVerifyWavelength Unsigned32, + lmpLinkVerifyRowStatus RowStatus, + lmpLinkVerifyStorageType StorageType +} + +lmpLinkVerifyInterval OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the VerifyInterval parameter used + in the LMP link verification process. It indicates the + interval at which the Test messages are sent." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpLinkVerificationEntry 1 } + +lmpLinkVerifyDeadInterval OBJECT-TYPE + SYNTAX LmpInterval + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object specifies the VerifyDeadInterval parameter used + in the verification of the physical connectivity of data- + bearing links. It specifies the observation period used to + detect a Test message at the remote node." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpLinkVerificationEntry 2 } + +lmpLinkVerifyTransportMechanism OBJECT-TYPE + SYNTAX BITS { + -- All encoding types: + payload(0), + -- SONET/SDH encoding type: + dccSectionOverheadBytes(1), + dccLineOverheadBytes(2), + j0Trace(3), + j1Trace(4), + j2Trace(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This defines the transport mechanism for the Test messages. The + scope of this bit mask is restricted to each link encoding + type. The local node will set the bits corresponding to the + various mechanisms it can support for transmitting LMP Test + messages. The receiver chooses the appropriate mechanism in the + BeginVerifyAck message." + REFERENCE + "Link Management Protocol, RFC 4204 + Synchronous Optical Network (SONET)/Synchronous Digital + Hierarchy (SDH) Encoding for Link Management Protocol (LMP) + Test Messages, RFC 4207." + ::= { lmpLinkVerificationEntry 3 } + +lmpLinkVerifyAllLinks OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A value of true(1) for this object indicates that the + verification process checks all unallocated links; otherwise, + only the new ports or component links that have been added to + this TE link are verified." + ::= { lmpLinkVerificationEntry 4 } + + + + +lmpLinkVerifyTransmissionRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "bytes per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the transmission rate of the data link over which + the Test messages will be transmitted and is expressed in + bytes per second." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpLinkVerificationEntry 5 } + +lmpLinkVerifyWavelength OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "nanometers" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value corresponds to the wavelength at + which the Test messages will be transmitted and is + measured in nanometers (nm). If each data-bearing link + corresponds to a separate wavelength, then this value should + be set to 0." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpLinkVerificationEntry 6 } + +lmpLinkVerifyRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpLinkVerificationEntry 7 } + +lmpLinkVerifyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpLinkVerificationTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + + + + columnar object in the row." + DEFVAL { nonVolatile } + ::= { lmpLinkVerificationEntry 8 } + +-- End of lmpLinkVerificationTable + + +-- LMP TE Link Performance Table + +lmpTeLinkPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpTeLinkPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies LMP TE link performance counters." + ::= { lmpObjects 15 } + +lmpTeLinkPerfEntry OBJECT-TYPE + SYNTAX LmpTeLinkPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LMP-enabled device for + every TE link. lmpTeCounterDiscontinuityTime is used + to indicate potential discontinuity for all counter objects + in this table." + INDEX { ifIndex } + ::= { lmpTeLinkPerfTable 1 } + +LmpTeLinkPerfEntry ::= SEQUENCE { + lmpTeInOctets Counter32, + lmpTeOutOctets Counter32, + lmpTeBeginVerifyReceived Counter32, + lmpTeBeginVerifySent Counter32, + lmpTeBeginVerifyRetransmit Counter32, + lmpTeBeginVerifyAckReceived Counter32, + lmpTeBeginVerifyAckSent Counter32, + lmpTeBeginVerifyNackReceived Counter32, + lmpTeBeginVerifyNackSent Counter32, + lmpTeEndVerifyReceived Counter32, + lmpTeEndVerifySent Counter32, + lmpTeEndVerifyRetransmit Counter32, + lmpTeEndVerifyAckReceived Counter32, + lmpTeEndVerifyAckSent Counter32, + lmpTeTestStatusSuccessReceived Counter32, + lmpTeTestStatusSuccessSent Counter32, + lmpTeTestStatusSuccessRetransmit Counter32, + lmpTeTestStatusFailureReceived Counter32, + + + + lmpTeTestStatusFailureSent Counter32, + lmpTeTestStatusFailureRetransmit Counter32, + lmpTeTestStatusAckReceived Counter32, + lmpTeTestStatusAckSent Counter32, + lmpTeLinkSummaryReceived Counter32, + lmpTeLinkSummarySent Counter32, + lmpTeLinkSummaryRetransmit Counter32, + lmpTeLinkSummaryAckReceived Counter32, + lmpTeLinkSummaryAckSent Counter32, + lmpTeLinkSummaryNackReceived Counter32, + lmpTeLinkSummaryNackSent Counter32, + lmpTeChannelStatusReceived Counter32, + lmpTeChannelStatusSent Counter32, + lmpTeChannelStatusRetransmit Counter32, + lmpTeChannelStatusAckReceived Counter32, + lmpTeChannelStatusAckSent Counter32, + lmpTeChannelStatusReqReceived Counter32, + lmpTeChannelStatusReqSent Counter32, + lmpTeChannelStatusReqRetransmit Counter32, + lmpTeChannelStatusRspReceived Counter32, + lmpTeChannelStatusRspSent Counter32, + lmpTeCounterDiscontinuityTime TimeStamp +} + +lmpTeInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of LMP message octets received for + this TE link." + ::= { lmpTeLinkPerfEntry 1 } + +lmpTeOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of LMP message octets transmitted out + for this TE link." + ::= { lmpTeLinkPerfEntry 2 } + +lmpTeBeginVerifyReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that have + + + + been received for this TE link." + ::= { lmpTeLinkPerfEntry 3 } + +lmpTeBeginVerifySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that have + been sent for this TE link." + ::= { lmpTeLinkPerfEntry 4 } + +lmpTeBeginVerifyRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerify messages that + have been retransmitted for this TE link." + ::= { lmpTeLinkPerfEntry 5 } + +lmpTeBeginVerifyAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyAck messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 6 } + +lmpTeBeginVerifyAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyAck messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 7 } + +lmpTeBeginVerifyNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyNack messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 8 } + + + + +lmpTeBeginVerifyNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of BeginVerifyNack messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 9 } + +lmpTeEndVerifyReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that have + been received for this TE link." + ::= { lmpTeLinkPerfEntry 10 } + +lmpTeEndVerifySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that have + been sent for this TE link." + ::= { lmpTeLinkPerfEntry 11 } + +lmpTeEndVerifyRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerify messages that + have been retransmitted over this control channel." + ::= { lmpTeLinkPerfEntry 12 } + +lmpTeEndVerifyAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of EndVerifyAck messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 13 } + +lmpTeEndVerifyAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object counts the number of EndVerifyAck messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 14 } + +lmpTeTestStatusSuccessReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 15 } + +lmpTeTestStatusSuccessSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 16 } + +lmpTeTestStatusSuccessRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusSuccess messages + that have been retransmitted for this TE link." + ::= { lmpTeLinkPerfEntry 17 } + +lmpTeTestStatusFailureReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 18 } + +lmpTeTestStatusFailureSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + + + + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 19 } + +lmpTeTestStatusFailureRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusFailure messages + that have been retransmitted on this TE link." + ::= { lmpTeLinkPerfEntry 20 } + +lmpTeTestStatusAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusAck messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 21 } + +lmpTeTestStatusAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of TestStatusAck messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 22 } + +lmpTeLinkSummaryReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 23 } + +lmpTeLinkSummarySent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 24 } + + + + +lmpTeLinkSummaryRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummary messages that + have been retransmitted over this control channel." + ::= { lmpTeLinkPerfEntry 25 } + +lmpTeLinkSummaryAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryAck messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 26 } + +lmpTeLinkSummaryAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryAck messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 27 } + +lmpTeLinkSummaryNackReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryNack messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 28 } + +lmpTeLinkSummaryNackSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of LinkSummaryNack messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 29 } + +lmpTeChannelStatusReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages that + have been received for this TE link." + ::= { lmpTeLinkPerfEntry 30 } + +lmpTeChannelStatusSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages that + have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 31 } + +lmpTeChannelStatusRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages that + have been retransmitted for this TE link." + ::= { lmpTeLinkPerfEntry 32 } + +lmpTeChannelStatusAckReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusAck messages + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 33 } + +lmpTeChannelStatusAckSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatus messages + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 34 } + +lmpTeChannelStatusReqReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + + + + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 35 } + +lmpTeChannelStatusReqSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 36 } + +lmpTeChannelStatusReqRetransmit OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusRequest messages + that have been retransmitted for this TE link." + ::= { lmpTeLinkPerfEntry 37 } + +lmpTeChannelStatusRspReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusResponse messages + that have been received for this TE link." + ::= { lmpTeLinkPerfEntry 38 } + +lmpTeChannelStatusRspSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of ChannelStatusResponse messages + that have been sent for this TE link." + ::= { lmpTeLinkPerfEntry 39 } + +lmpTeCounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + one or more of this TE link's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this TE link of any Counter32 + + + + object contained in the lmpTeLinkPerfTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { lmpTeLinkPerfEntry 40 } + +-- End of lmpTeLinkPerfTable + + +-- LMP Data Link Table + +lmpDataLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpDataLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the data-bearing links managed by the + LMP." + ::= { lmpObjects 16 } + +lmpDataLinkEntry OBJECT-TYPE + SYNTAX LmpDataLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table exists for each ifEntry that represents + a data-bearing link. An ifEntry with an ifIndex must exist + before the corresponding lmpDataLinkEntry is created. + If an entry representing the data-bearing link is destroyed in + the ifTable, then so is the corresponding entry in the + lmpDataLinkTable. The administrative status value is + controlled from the ifEntry. The index to this table is also + used to get information in the componentLinkTable + of the TE-LINK-STD-MIB MIB module." + INDEX { ifIndex } + ::= { lmpDataLinkTable 1 } + +LmpDataLinkEntry ::= SEQUENCE { + lmpDataLinkType INTEGER, + lmpDataLinkAddressType InetAddressType, + lmpDataLinkIpAddr InetAddress, + lmpDataLinkRemoteIpAddress InetAddress, + lmpDataLinkRemoteIfId InterfaceIndexOrZero, + lmpDataLinkEncodingType TeLinkEncodingType, + lmpDataLinkActiveOperStatus INTEGER, + lmpDataLinkPassiveOperStatus INTEGER, + lmpDataLinkRowStatus RowStatus, + lmpDataLinkStorageType StorageType + + + +} + +lmpDataLinkType OBJECT-TYPE + SYNTAX INTEGER { + port(1), + componentLink(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies whether this data-bearing link is + a port or a component link. Component links are multiplex + capable, whereas ports are not multiplex capable." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpDataLinkEntry 1 } + +lmpDataLinkAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the data-bearing link IP address + type. If the data-bearing link is unnumbered, the address + type must be set to unknown(0)." + ::= { lmpDataLinkEntry 2 } + +lmpDataLinkIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local Internet address for numbered links. The type + of this address is determined by the value of + lmpDataLinkAddressType object. + + For IPv4 and IPv6 numbered links, this object represents + the local IP address associated with the data-bearing + link. For an unnumbered link, the local address is + of type unknown, and this object is set to the zero-length + string; the ifIndex object then identifies the + unnumbered address." + ::= { lmpDataLinkEntry 3 } + +lmpDataLinkRemoteIpAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The remote Internet address for numbered data-bearing links. + The type of this address is determined by the + lmpDataLinkAddressType object. + + For IPv4 and IPv6 numbered links, this object represents the + remote IP address associated with the data-bearing link. For + an unnumbered link, the remote address is of type unknown, + and this object is set to the zero-length string; the + lmpDataLinkRemoteIfId object then identifies the unnumbered + address. + + This information is either configured manually or + communicated by the remote node during the link verification + procedure." + ::= { lmpDataLinkEntry 4 } + +lmpDataLinkRemoteIfId OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Interface identifier of the remote end point. This + information is either configured manually or + communicated by the remote node during the link verification + procedure." + ::= { lmpDataLinkEntry 5 } + +lmpDataLinkEncodingType OBJECT-TYPE + SYNTAX TeLinkEncodingType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encoding type of the data-bearing link." + REFERENCE + "Generalized MPLS Signaling Functional Description, RFC 3471." + ::= { lmpDataLinkEntry 6 } + +lmpDataLinkActiveOperStatus OBJECT-TYPE + SYNTAX INTEGER { + upAlloc(1), + upFree(2), + down(3), + testing(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this data-bearing link + + + + (active FSM)." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpDataLinkEntry 7 } + +lmpDataLinkPassiveOperStatus OBJECT-TYPE + SYNTAX INTEGER { + upAlloc(1), + upFree(2), + down(3), + psvTst(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this data-bearing link + (passive FSM)." + REFERENCE + "Link Management Protocol, RFC 4204." + ::= { lmpDataLinkEntry 8 } + +lmpDataLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects + in a row can be changed if the status is active(1). + All read-create objects must have valid and consistent + values before the row can be activated." + ::= { lmpDataLinkEntry 9 } + +lmpDataLinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + lmpDataLinkTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + DEFVAL { nonVolatile } + ::= { lmpDataLinkEntry 10 } + +-- End of lmpDataLinkTable + + +-- LMP Data Link Performance Table + + + +lmpDataLinkPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF LmpDataLinkPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the data-bearing links LMP performance + counters." + ::= { lmpObjects 17 } + +lmpDataLinkPerfEntry OBJECT-TYPE + SYNTAX LmpDataLinkPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains information about + the LMP performance counters for the data-bearing links. + lmpDataLinkDiscontinuityTime is used to indicate potential + discontinuity for all counter objects in this table." + INDEX { ifIndex } + ::= { lmpDataLinkPerfTable 1 } + +LmpDataLinkPerfEntry ::= SEQUENCE { + lmpDataLinkTestReceived Counter32, + lmpDataLinkTestSent Counter32, + lmpDataLinkActiveTestSuccess Counter32, + lmpDataLinkActiveTestFailure Counter32, + lmpDataLinkPassiveTestSuccess Counter32, + lmpDataLinkPassiveTestFailure Counter32, + lmpDataLinkDiscontinuityTime TimeStamp +} + +lmpDataLinkTestReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Test messages that have + been received on this data-bearing link." + ::= { lmpDataLinkPerfEntry 1 } + +lmpDataLinkTestSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Test messages that have + been sent on this data-bearing link." + ::= { lmpDataLinkPerfEntry 2 } + + + +lmpDataLinkActiveTestSuccess OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of data-bearing link tests + that were successful on the active side of this data- + bearing link." + ::= { lmpDataLinkPerfEntry 3 } + +lmpDataLinkActiveTestFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of data-bearing link tests + that failed on the active side of this data-bearing link." + ::= { lmpDataLinkPerfEntry 4 } + +lmpDataLinkPassiveTestSuccess OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of data-bearing link tests + that were successful on the passive side of this data- + bearing link." + ::= { lmpDataLinkPerfEntry 5 } + +lmpDataLinkPassiveTestFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of data-bearing link tests + that failed on the passive side of this data-bearing link." + ::= { lmpDataLinkPerfEntry 6 } + +lmpDataLinkDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + one or more of this data-bearing link's counters suffered + a discontinuity. The relevant counters are the specific + instances associated with this data-bearing link of any + Counter32 object contained in the lmpDataLinkPerfTable. If + + + + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { lmpDataLinkPerfEntry 7 } + +-- End of lmpDataLinkPerfTable + + +-- Notification Configuration + +lmpNotificationMaxRate OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The LMP notification rate depends on the size of the network, + the type of links, the network configuration, the + reliability of the network, etc. + + When this MIB was designed, care was taken to minimize the + amount of notifications generated for LMP purposes. Wherever + possible, notifications are state driven, meaning that the + notifications are sent only when the system changes state. + The only notifications that are repeated and that could cause a + problem as far as congestion is concerned are the ones + associated with data link verification. + Without any considerations to handling of these + notifications, a problem may arise if the number of data + links is high. Since the data link verification notifications + can happen only once per data link per link verification + interval, the notification rate should be sustainable if one + chooses an appropriate link verification interval for a given + network configuration. For instance, a network of 100 nodes + with 5 links of 128 wavelengths each and a link verification + of 1 minute, where no more than 10% of the links failed at any + given time, would have 1 notification per second sent from + each node, or 100 notifications per second for the whole + network. The rest of the notifications are negligible + compared to this number. + + To alleviate the congestion problem, the + lmpNotificationMaxRate object can be used to implement a + throttling mechanism. It is also possible to enable/disable + certain type of notifications. + + This variable indicates the maximum number of + notifications issued per minute. If events occur + more rapidly, the implementation may simply fail to + + + + emit these notifications during that period or may + queue them until an appropriate time. A value of 0 + means that no throttling is applied and events may be + notified at the rate at which they occur. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + ::= { lmpObjects 18 } + +lmpLinkPropertyNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the + generation of lmpTeLinkPropertyMismatch + and lmpDataLinkPropertyMismatch notifications; + otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 19 } + +lmpUnprotectedNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the + generation of lmpUnprotected notifications; + otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 20 } + +lmpCcUpDownNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the generation of + lmpControlChannelUp and lmpControlChannelDown notifications; + otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 21 } + + + + +lmpTeLinkNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the + generation of lmpTeLinkDegraded and lmpTeLinkNotDegraded + notifications; otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 22 } + +lmpDataLinkNotificationsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true(1), then it enables the + generation of lmpDataLinkVerificationFailure + notification; otherwise, these notifications are not emitted. + Implementations should save the value of this object in + persistent memory so that it survives restarts or reboot." + DEFVAL { false } + ::= { lmpObjects 23 } + + +-- Notifications + +-- Link Property Mismatch Notifications + +lmpTeLinkPropertyMismatch NOTIFICATION-TYPE + OBJECTS { teLinkRemoteIpAddr, + teLinkIncomingIfId } + STATUS current + DESCRIPTION + "This notification is generated when a TE link property + mismatch is detected on the node. The received remote TE link + ID of the misconfigured TE link is represented by either + teLinkRemoteIpAddr or teLinkIncomingIfId, depending on whether + the TE link is numbered or unnumbered. This notification + should not be sent unless lmpLinkPropertyNotificationsEnabled + is true(1). It is recommended that this notification be + reported only the first time a mismatch is detected. + Otherwise, for a given TE link, this notification can occur + no more than once per verification interval + (lmpGlobalLinkVerificationInterval)." + ::= { lmpNotifications 1 } + + + +lmpDataLinkPropertyMismatch NOTIFICATION-TYPE + OBJECTS { lmpDataLinkType, lmpDataLinkRemoteIfId } + STATUS current + DESCRIPTION + "This notification is generated when a data-bearing link + property mismatch is detected on the node. lmpDataLinkType + is used to identify the local identifiers associated with + the data link. (The data link interface index can be used + to determine the TE link interface index, as this + relationship is captured in the interface stack table.) + The remote entity interface ID is the remote entity + interface ID received in the LinkSummary message. + This notification should not be sent unless + lmpLinkPropertyNotificationsEnabled is true(1). It is + recommended that this notification be reported only the + first time a mismatch is detected. Otherwise, for a given + data link, this notification can occur no more than once + per verification interval (lmpGlobalLinkVerificationInterval)." + ::= { lmpNotifications 2 } + +-- Neighbor Notification + +lmpUnprotected NOTIFICATION-TYPE + OBJECTS { lmpCcNbrNodeId } + STATUS current + DESCRIPTION + "This notification is generated when there is more than one + control channel between LMP neighbors and the last redundant + control channel has failed. If the remaining operational + control channel fails, then there will be no more control + channels between the pair of nodes and all the TE links + between the pair of nodes, will go to degraded state. This + notification should not be sent unless + lmpUnprotectedNotificationsEnabled is set to true(1)." + ::= { lmpNotifications 3 } + +-- Control Channel Notifications + +lmpControlChannelUp NOTIFICATION-TYPE + OBJECTS { lmpCcAdminStatus, lmpCcOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a control + channel transitions to the up operational state. This + notification should not be sent unless + lmpCcUpDownNotificationsEnabled is true(1)." + ::= { lmpNotifications 4 } + + + + +lmpControlChannelDown NOTIFICATION-TYPE + OBJECTS { lmpCcAdminStatus, lmpCcOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a control channel + transitions out of the up operational state. This + notification should not be sent unless + lmpCcUpDownNotificationsEnabled is true(1)." + ::= { lmpNotifications 5 } + +-- TE Link Notification + +lmpTeLinkDegraded NOTIFICATION-TYPE + OBJECTS { lmpTeLinkOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a lmpTeLinkOperStatus + object for a TE link enters the degraded state. This + notification should not be sent unless + lmpTeLinkNotificationsEnabled is true(1)." + ::= { lmpNotifications 6 } + +lmpTeLinkNotDegraded NOTIFICATION-TYPE + OBJECTS { lmpTeLinkOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a lmpTeLinkOperStatus + object for a TE link leaves the degraded state. This + notification should not be sent unless + lmpTeLinkNotificationsEnabled is true(1)." + ::= { lmpNotifications 7 } + +-- Data-bearing Link Notification + +lmpDataLinkVerificationFailure NOTIFICATION-TYPE + OBJECTS { lmpDataLinkActiveOperStatus, + lmpDataLinkPassiveOperStatus } + STATUS current + DESCRIPTION + "This notification is generated when a data-bearing + link verification fails. This notification should not be sent + unless lmpDataLinkNotificationsEnabled is true(1). For a given + data link, this notification can occur no more than once per + verification interval (lmpGlobalLinkVerificationInterval)." + ::= { lmpNotifications 8 } + +-- End of notifications + + + + +-- Module compliance + +lmpCompliances + OBJECT IDENTIFIER ::= { lmpConformance 1 } + +lmpGroups + OBJECT IDENTIFIER ::= { lmpConformance 2 } + +lmpModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that support the + configuration and monitoring of LMP MIB." + MODULE -- this module + + MANDATORY-GROUPS { lmpNodeGroup, + lmpControlChannelGroup, + lmpLinkPropertyCorrelationGroup, + lmpPerfGroup, + lmpTeLinkGroup, + lmpDataLinkGroup } + + GROUP lmpCcIsNotInterfaceGroup + DESCRIPTION + "This group is mandatory for devices that support + control channels that are not interfaces, in addition to + lmpControlChannelGroup. The following constraint applies: + lmpCcIsIf must at least be read-only, returning false(2)." + + GROUP lmpCcIsInterfaceGroup + DESCRIPTION + "This group is mandatory for devices that support + control channels that are interfaces, in addition to + lmpControlChannelGroup. The following constraint applies: + lmpCcIsIf must at least be read-only, returning true(1)." + + GROUP lmpLinkVerificationGroup + DESCRIPTION + "This group is mandatory for devices that support + the link verification procedure." + + GROUP lmpNotificationGroup + DESCRIPTION + "This group is optional." + + -- lmpNbrTable + + OBJECT lmpNbrRowStatus + + + + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- lmpControlChannelTable + + OBJECT lmpCcRemoteAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for non-point-to-point configurations." + + OBJECT lmpCcRemoteIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "The size of the IP address depends on the address type." + + OBJECT lmpCcRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + OBJECT lmpCcOperStatus + SYNTAX INTEGER { up(1), down(2) } + DESCRIPTION + "A value of configSnd(3), configRcv(4), active(5), or + goingDown(6) need not be supported." + + -- lmpTeLinkTable + + OBJECT lmpTeLinkOperStatus + SYNTAX INTEGER { up(1), down(2), degraded(5) } + DESCRIPTION + "The testing(3) and init(4) state need not be supported." + + OBJECT lmpTeLinkRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + + + -- lmpDataLinkTable + + OBJECT lmpDataLinkActiveOperStatus + SYNTAX INTEGER { upAlloc(1), upFree(2), down(3) } + DESCRIPTION + "A value of testing(4) need not be supported." + OBJECT lmpDataLinkPassiveOperStatus + SYNTAX INTEGER { upAlloc(1), upFree(2), down(3) } + DESCRIPTION + "A value of psvTst(4) need not be supported." + + OBJECT lmpDataLinkRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + ::= { lmpCompliances 1 } + +lmpModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that support the + monitoring of the LMP MIB." + MODULE -- this module + + -- The mandatory groups have to be implemented + -- by all LMP-enabled devices. However, they may all be supported + -- as read-only objects in the case where manual + -- configuration is not supported. + + MANDATORY-GROUPS { lmpNodeGroup, + lmpControlChannelGroup, + lmpLinkPropertyCorrelationGroup, + lmpPerfGroup, + lmpTeLinkGroup, + lmpDataLinkGroup } + + GROUP lmpCcIsNotInterfaceGroup + DESCRIPTION + "This group is mandatory for devices that support + control channels that are not interfaces, in addition to + lmpControlChannelGroup. The following constraint applies: + lmpCcIsIf must at least be read-only, returning false(2)." + + GROUP lmpCcIsInterfaceGroup + + + + DESCRIPTION + "This group is mandatory for devices that support + control channels that are interfaces, in addition to + lmpControlChannelGroup. The following constraint applies: + lmpCcIsIf must at least be read-only, returning true(1)." + + GROUP lmpLinkVerificationGroup + DESCRIPTION + "This group is mandatory for devices that support + the link verification procedure." + + GROUP lmpNotificationGroup + DESCRIPTION + "This group is optional." + + -- Scalars + + OBJECT lmpAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpGlobalLinkVerificationInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalDefaultMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalDefaultMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalDefaultMin + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalDefaultMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpNotificationMaxRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpNbrTable + + OBJECT lmpNbrRetransmitInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpNbrRetryLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpNbrRetransmitDelta + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpNbrRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpNbrStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpControlChannelTable + + OBJECT lmpCcUnderlyingIfIndex + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT lmpCcIsIf + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcNbrNodeId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcRemoteAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for non-point-to-point configurations." + + OBJECT lmpCcRemoteIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "The size of the IP address depends on the address type." + + OBJECT lmpCcSetupRole + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcAuthentication + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloIntervalMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalMin + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT lmpCcHelloDeadIntervalMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpCcRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpCcOperStatus + SYNTAX INTEGER { up(1), down(2) } + DESCRIPTION + "A value of configSnd(3), configRcv(4), active(5), or + goingDown(6) need not be supported." + + OBJECT lmpCcStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpLinkVerificationTable + + OBJECT lmpLinkVerifyInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpLinkVerifyDeadInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpLinkVerifyAllLinks + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpTeLinkTable + + OBJECT lmpTeLinkNbrRemoteNodeId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the link verification + + + + procedure is enabled." + + OBJECT lmpTeLinkVerification + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpTeLinkFaultManagement + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpTeLinkDwdm + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpTeLinkOperStatus + SYNTAX INTEGER { up(1), down(2), degraded(5) } + DESCRIPTION + "The testing(3) and init(4) state need not be supported." + + OBJECT lmpTeLinkRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpTeLinkStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpTeLinkVerificationTable + + OBJECT lmpLinkVerifyTransmissionRate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpLinkVerifyWavelength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT lmpLinkVerifyRowStatus + SYNTAX RowStatus { active(1) } + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpLinkVerifyStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- lmpDataLinkTable + + OBJECT lmpDataLinkAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for numbered links. For unnumbered links, the + unknown(0) address type needs to be supported." + + OBJECT lmpDataLinkIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "The size of the data-bearing link IP address depends on + the type of data-bearing link. Data-bearing link IP + address size is zero if the link is unnumbered, four if + the link IP address is IPv4, and sixteen if the link IP + address is IPv6." + + OBJECT lmpDataLinkRemoteIpAddress + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the link verification + procedure is enabled." + + OBJECT lmpDataLinkRemoteIfId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required if the link verification + procedure is enabled." + + OBJECT lmpDataLinkEncodingType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT lmpDataLinkActiveOperStatus + SYNTAX INTEGER { upAlloc(1), upFree(2), down(3) } + DESCRIPTION + "A value of testing(4) need not be supported." + + OBJECT lmpDataLinkPassiveOperStatus + SYNTAX INTEGER { upAlloc(1), upFree(2), down(3) } + DESCRIPTION + "A value of psvTst(4) need not be supported." + + OBJECT lmpDataLinkRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the + only status that needs to be supported." + + OBJECT lmpDataLinkStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { lmpCompliances 2 } + +-- Units of conformance + +lmpNodeGroup OBJECT-GROUP + OBJECTS { lmpAdminStatus, + lmpOperStatus, + lmpNbrAdminStatus, + lmpNbrOperStatus, + lmpNbrRowStatus, + lmpNbrStorageType, + lmpUnprotectedNotificationsEnabled, + lmpNotificationMaxRate + } + STATUS current + DESCRIPTION + "Collection of objects that represent LMP node + configuration." + ::= { lmpGroups 1 } + +lmpControlChannelGroup OBJECT-GROUP + OBJECTS { + lmpNbrRetransmitInterval, + lmpNbrRetryLimit, + lmpNbrRetransmitDelta, + lmpNbrAdminStatus, + + + + lmpNbrOperStatus, + lmpNbrRowStatus, + lmpNbrStorageType, + lmpCcHelloIntervalDefault, + lmpCcHelloIntervalDefaultMin, + lmpCcHelloIntervalDefaultMax, + lmpCcHelloDeadIntervalDefault, + lmpCcHelloDeadIntervalDefaultMin, + lmpCcHelloDeadIntervalDefaultMax, + lmpCcNbrNodeId, + lmpCcRemoteId, + lmpCcRemoteAddressType, + lmpCcRemoteIpAddr, + lmpCcSetupRole, + lmpCcAuthentication, + lmpCcHelloInterval, + lmpCcHelloIntervalMin, + lmpCcHelloIntervalMax, + lmpCcHelloIntervalNegotiated, + lmpCcHelloDeadInterval, + lmpCcHelloDeadIntervalMin, + lmpCcHelloDeadIntervalMax, + lmpCcHelloDeadIntervalNegotiated, + lmpCcOperStatus, + lmpCcRowStatus, + lmpCcStorageType, + lmpCcUpDownNotificationsEnabled + } + STATUS current + DESCRIPTION + "Objects that can be used to configure LMP interface." + ::= { lmpGroups 2 } + +lmpCcIsInterfaceGroup OBJECT-GROUP + OBJECTS { lmpCcIsIf } + STATUS current + DESCRIPTION + "Objects that can be used to configure control channels + that are interfaces." + ::= { lmpGroups 3 } + +lmpCcIsNotInterfaceGroup OBJECT-GROUP + OBJECTS { lmpCcUnderlyingIfIndex, + lmpCcIsIf, + lmpCcLastChange, + lmpCcAdminStatus + } + STATUS current + + + + DESCRIPTION + "Objects that can be used to configure control channels + that are not interfaces." + ::= { lmpGroups 4 } + +lmpLinkPropertyCorrelationGroup OBJECT-GROUP + OBJECTS { lmpLinkPropertyNotificationsEnabled } + STATUS current + DESCRIPTION + "Collection of objects used to configure the link + property correlation procedure." + ::= { lmpGroups 5 } + +lmpLinkVerificationGroup OBJECT-GROUP + OBJECTS { lmpGlobalLinkVerificationInterval, + lmpLinkVerifyInterval, + lmpLinkVerifyDeadInterval, + lmpLinkVerifyTransportMechanism, + lmpLinkVerifyAllLinks, + lmpLinkVerifyTransmissionRate, + lmpLinkVerifyWavelength, + lmpLinkVerifyRowStatus, + lmpLinkVerifyStorageType, + lmpDataLinkNotificationsEnabled + } + STATUS current + DESCRIPTION + "Collection of objects that represent the link + verification procedure configuration." + ::= { lmpGroups 6 } + +lmpPerfGroup OBJECT-GROUP + OBJECTS { lmpCcInOctets, + lmpCcInDiscards, + lmpCcInErrors, + lmpCcOutOctets, + lmpCcOutDiscards, + lmpCcOutErrors, + lmpCcConfigReceived, + lmpCcConfigSent, + lmpCcConfigRetransmit, + lmpCcConfigAckReceived, + lmpCcConfigAckSent, + lmpCcConfigNackSent, + lmpCcConfigNackReceived, + lmpCcHelloReceived, + lmpCcHelloSent, + lmpCcBeginVerifyReceived, + + + + lmpCcBeginVerifySent, + lmpCcBeginVerifyRetransmit, + lmpCcBeginVerifyAckReceived, + lmpCcBeginVerifyAckSent, + lmpCcBeginVerifyNackReceived, + lmpCcBeginVerifyNackSent, + lmpCcEndVerifyReceived, + lmpCcEndVerifySent, + lmpCcEndVerifyRetransmit, + lmpCcEndVerifyAckReceived, + lmpCcEndVerifyAckSent, + lmpCcTestStatusSuccessReceived, + lmpCcTestStatusSuccessSent, + lmpCcTestStatusSuccessRetransmit, + lmpCcTestStatusFailureReceived, + lmpCcTestStatusFailureSent, + lmpCcTestStatusFailureRetransmit, + lmpCcTestStatusAckReceived, + lmpCcTestStatusAckSent, + lmpCcLinkSummaryReceived, + lmpCcLinkSummarySent, + lmpCcLinkSummaryRetransmit, + lmpCcLinkSummaryAckReceived, + lmpCcLinkSummaryAckSent, + lmpCcLinkSummaryNackReceived, + lmpCcLinkSummaryNackSent, + lmpCcChannelStatusReceived, + lmpCcChannelStatusSent, + lmpCcChannelStatusRetransmit, + lmpCcChannelStatusAckReceived, + lmpCcChannelStatusAckSent, + lmpCcChannelStatusReqReceived, + lmpCcChannelStatusReqSent, + lmpCcChannelStatusReqRetransmit, + lmpCcChannelStatusRspReceived, + lmpCcChannelStatusRspSent, + lmpCcCounterDiscontinuityTime, + lmpTeInOctets, + lmpTeOutOctets, + lmpTeBeginVerifyReceived, + lmpTeBeginVerifySent, + lmpTeBeginVerifyRetransmit, + lmpTeBeginVerifyAckReceived, + lmpTeBeginVerifyAckSent, + lmpTeBeginVerifyNackReceived, + lmpTeBeginVerifyNackSent, + lmpTeEndVerifyReceived, + lmpTeEndVerifySent, + + + + lmpTeEndVerifyRetransmit, + lmpTeEndVerifyAckReceived, + lmpTeEndVerifyAckSent, + lmpTeTestStatusSuccessReceived, + lmpTeTestStatusSuccessSent, + lmpTeTestStatusSuccessRetransmit, + lmpTeTestStatusFailureReceived, + lmpTeTestStatusFailureSent, + lmpTeTestStatusFailureRetransmit, + lmpTeTestStatusAckReceived, + lmpTeTestStatusAckSent, + lmpTeLinkSummaryReceived, + lmpTeLinkSummarySent, + lmpTeLinkSummaryRetransmit, + lmpTeLinkSummaryAckReceived, + lmpTeLinkSummaryAckSent, + lmpTeLinkSummaryNackReceived, + lmpTeLinkSummaryNackSent, + lmpTeChannelStatusReceived, + lmpTeChannelStatusSent, + lmpTeChannelStatusRetransmit, + lmpTeChannelStatusAckReceived, + lmpTeChannelStatusAckSent, + lmpTeChannelStatusReqReceived, + lmpTeChannelStatusReqSent, + lmpTeChannelStatusReqRetransmit, + lmpTeChannelStatusRspSent, + lmpTeChannelStatusRspReceived, + lmpTeCounterDiscontinuityTime, + lmpDataLinkTestReceived, + lmpDataLinkTestSent, + lmpDataLinkActiveTestSuccess, + lmpDataLinkActiveTestFailure, + lmpDataLinkPassiveTestSuccess, + lmpDataLinkPassiveTestFailure, + lmpDataLinkDiscontinuityTime + } + STATUS current + DESCRIPTION + "Collection of objects used to provide performance + information about LMP interfaces and data-bearing links." + ::= { lmpGroups 7 } + +lmpTeLinkGroup OBJECT-GROUP + OBJECTS { lmpTeLinkNbrRemoteNodeId, + lmpTeLinkVerification, + lmpTeLinkFaultManagement, + lmpTeLinkDwdm, + + + + lmpTeLinkOperStatus, + lmpTeLinkRowStatus, + lmpTeLinkStorageType, + lmpTeLinkNotificationsEnabled + } + STATUS current + DESCRIPTION + "Objects that can be used to configure TE links." + ::= { lmpGroups 8 } + +lmpDataLinkGroup OBJECT-GROUP + OBJECTS { lmpDataLinkType, + lmpDataLinkAddressType, + lmpDataLinkIpAddr, + lmpDataLinkRemoteIpAddress, + lmpDataLinkRemoteIfId, + lmpDataLinkEncodingType, + lmpDataLinkActiveOperStatus, + lmpDataLinkPassiveOperStatus, + lmpDataLinkRowStatus, + lmpDataLinkStorageType + } + STATUS current + DESCRIPTION + "Collection of objects that represent data-bearing link + configuration." + ::= { lmpGroups 9 } + +lmpNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { lmpTeLinkPropertyMismatch, + lmpDataLinkPropertyMismatch, + lmpUnprotected, + lmpControlChannelUp, + lmpControlChannelDown, + lmpTeLinkDegraded, + lmpTeLinkNotDegraded, + lmpDataLinkVerificationFailure } + STATUS current + DESCRIPTION + "Set of notifications defined in this module." + ::= { lmpGroups 10 } + +-- End of LMP-MIB +END diff --git a/mibs/ietf/MALLOC-MIB b/mibs/ietf/MALLOC-MIB new file mode 100644 index 0000000..b899830 --- /dev/null +++ b/mibs/ietf/MALLOC-MIB @@ -0,0 +1,1452 @@ +MALLOC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, mib-2, + Unsigned32, Gauge32, Counter32 FROM SNMPv2-SMI + + RowStatus, TruthValue, StorageType FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + + InetAddress, InetAddressType FROM INET-ADDRESS-MIB + + LanguageTag FROM IPMROUTE-STD-MIB + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + + IANAscopeSource, IANAmallocRangeSource FROM IANA-MALLOC-MIB; + +mallocMIB MODULE-IDENTITY + LAST-UPDATED "200306090000Z" -- June 9, 2003 + ORGANIZATION "IETF MALLOC Working Group" + CONTACT-INFO + " WG-EMail: malloc@catarina.usc.edu + Subscribe: malloc-request@catarina.usc.edu + Archive: catarina.usc.edu/pub/multicast/malloc/ + + Co-chair/editor: + Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052 + EMail: dthaler@microsoft.com + + Co-chair: + Steve Hanna + Sun Microsystems, Inc. + One Network Drive + Burlington, MA 01803 + EMail: steve.hanna@sun.com" + DESCRIPTION + "The MIB module for management of multicast address + allocation. + + Copyright (C) The Internet Society (2003). This version of + this MIB module is part of RFC 3559; see the RFC itself for + full legal notices." + + + + -- revision log + + REVISION "200306090000Z" -- June 9, 2003 + DESCRIPTION + "Initial version, published as RFC 3559." + ::= { mib-2 101 } + +mallocMIBObjects OBJECT IDENTIFIER ::= { mallocMIB 1 } + +malloc OBJECT IDENTIFIER ::= { mallocMIBObjects 1 } + +madcap OBJECT IDENTIFIER ::= { mallocMIBObjects 2 } + +-- +-- scalars +-- + +mallocCapabilities OBJECT-TYPE + SYNTAX BITS { + startTime(0), + serverMobility(1), + retryAfter(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the capabilities which a client or + server supports. The startTime bit indicates that + allocations with a future start time are supported. The + serverMobility bit indicates that allocations can be renewed + or released from a server other than the one granting the + original allocation. The retryAfter bit indicates support + for a waiting state where the client may check back at a + later time to get the status of its request." + ::= { malloc 1 } + +-- +-- the Scope Table +-- + +mallocScopeTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocScopeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on multicast + scopes from which addresses may be allocated. Entries in + this table may be dynamically discovered via some other + + + + protocol, such as MZAP, or may be statically configured, + such as in an isolated network environment. Each scope is + associated with a range of multicast addresses, and ranges + for different rows must be disjoint." + ::= { malloc 2 } + +mallocScopeEntry OBJECT-TYPE + SYNTAX MallocScopeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular multicast scope." + INDEX { mallocScopeAddressType, mallocScopeFirstAddress } + ::= { mallocScopeTable 1 } + +MallocScopeEntry ::= SEQUENCE { + mallocScopeAddressType InetAddressType, + mallocScopeFirstAddress InetAddress, + mallocScopeLastAddress InetAddress, + mallocScopeHopLimit Unsigned32, + mallocScopeStatus RowStatus, + mallocScopeSource IANAscopeSource, + mallocScopeDivisible TruthValue, + mallocScopeServerAddressType InetAddressType, + mallocScopeServerAddress InetAddress, + mallocScopeSSM TruthValue, + mallocScopeStorage StorageType +} + +mallocScopeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the addresses in the multicast scope range. + Legal values correspond to the subset of address families + for which multicast address allocation is supported." + ::= { mallocScopeEntry 1 } + +mallocScopeFirstAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first address in the multicast scope range. The type + of this address is determined by the value of the + mallocScopeAddressType object." + + + + ::= { mallocScopeEntry 2 } + +mallocScopeLastAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The last address in the multicast scope range. The type of + this address is determined by the value of the + mallocScopeAddressType object." + ::= { mallocScopeEntry 3 } + +mallocScopeHopLimit OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default IPv4 TTL or IPv6 hop limit which applications + should use for groups within the scope." + DEFVAL { 255 } + ::= { mallocScopeEntry 4 } + +mallocScopeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. If write + access is supported, the other writable objects in this + table may be modified even while the status is `active'." + ::= { mallocScopeEntry 5 } + +mallocScopeSource OBJECT-TYPE + SYNTAX IANAscopeSource + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The method by which this entry was learned." + ::= { mallocScopeEntry 6 } + +mallocScopeDivisible OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If false, the server may allocate addresses out of the + entire range. If true, the server must not allocate + + + + addresses out of the entire range, but may only allocate + addresses out of a subrange learned via another method. + Creating or deleting a scope which is not divisible has the + side effect of creating or deleting the corresponding entry + in the mallocAllocRangeTable. Deleting a scope which is + divisible has the side effect of deleting any corresponding + entries in the mallocAllocRangeTable, and the + mallocRequestTable." + DEFVAL { false } + ::= { mallocScopeEntry 7 } + +mallocScopeServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the address of a multicast address allocation + server to which a request may be sent." + DEFVAL { unknown } + ::= { mallocScopeEntry 8 } + +mallocScopeServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address of a multicast address allocation server to + which a request may be sent. The default value is an zero- + length address, indicating that no server is known. The + type of this address is determined by the value of the + mallocScopeServerAddressType object." + DEFVAL { ''h } -- the empty string + ::= { mallocScopeEntry 9 } + +mallocScopeSSM OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the scope is a Source-Specific Multicast + (SSM) range." + DEFVAL { false } + ::= { mallocScopeEntry 10 } + +mallocScopeStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to + any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { mallocScopeEntry 11 } + +-- +-- the Scope Name Table +-- + +mallocScopeNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on multicast + scope names. Entries in this table may be dynamically + discovered via some other protocol, such as MZAP, or may be + statically configured, such as in an isolated network + environment." + ::= { malloc 3 } + +mallocScopeNameEntry OBJECT-TYPE + SYNTAX MallocScopeNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular multicast scope name." + INDEX { mallocScopeAddressType, mallocScopeFirstAddress, + IMPLIED mallocScopeNameLangName } + ::= { mallocScopeNameTable 1 } + +MallocScopeNameEntry ::= SEQUENCE { + mallocScopeNameLangName LanguageTag, + mallocScopeNameScopeName SnmpAdminString, + mallocScopeNameDefault TruthValue, + mallocScopeNameStatus RowStatus, + mallocScopeNameStorage StorageType +} + +mallocScopeNameLangName OBJECT-TYPE + SYNTAX LanguageTag (SIZE(1..94)) + MAX-ACCESS not-accessible + STATUS current + + + + + + DESCRIPTION + "The RFC 3066 language tag for the language of the scope + name." + ::= { mallocScopeNameEntry 1 } + +mallocScopeNameScopeName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The textual name associated with the multicast scope. The + value of this object should be suitable for displaying to + end-users, such as when allocating a multicast address in + this scope. If the scope is an IPv4 scope, and no name is + specified, the default value of this object should be the + string 239.x.x.x/y with x and y replaced appropriately to + describe the address and mask length associated with the + scope. If the scope is an IPv6 scope, and no name is + specified, the default value of this object should + generically describe the scope level (e.g., site)." + ::= { mallocScopeNameEntry 2 } + +mallocScopeNameDefault OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If true, indicates a preference that the name in the + associated language should be used by applications if no + name is available in a desired language." + DEFVAL { false } + ::= { mallocScopeNameEntry 3 } + +mallocScopeNameStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. If write + access is supported, the other writable objects in this + table may be modified even while the status is `active'." + ::= { mallocScopeNameEntry 4 } + +mallocScopeNameStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to + any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { mallocScopeNameEntry 5 } + +-- +-- the Allocation Range Table +-- +mallocAllocRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocAllocRangeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on subranges + of addresses from which the device may allocate addresses, + if it is a MAAS. If the device is a Prefix Coordinator, any + ranges which the device is advertising to MAAS's will be in + this table. Note that the device may be both a MAAS and a + Prefix Coordinator. + + Address ranges for different rows must be disjoint, and must + be contained with the address range of the corresponding row + of the mallocScopeTable. + + Deleting an allocation range has the side effect of deleting + any entries within that range from the mallocAddressTable." + ::= { malloc 4 } + +mallocAllocRangeEntry OBJECT-TYPE + SYNTAX MallocAllocRangeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular allocation range." + INDEX { mallocScopeAddressType, mallocScopeFirstAddress, + mallocAllocRangeFirstAddress } + ::= { mallocAllocRangeTable 1 } + +MallocAllocRangeEntry ::= SEQUENCE { + mallocAllocRangeFirstAddress InetAddress, + mallocAllocRangeLastAddress InetAddress, + mallocAllocRangeStatus RowStatus, + mallocAllocRangeSource IANAmallocRangeSource, + mallocAllocRangeLifetime Unsigned32, + mallocAllocRangeMaxLeaseAddrs Unsigned32, + + + + mallocAllocRangeMaxLeaseTime Unsigned32, + mallocAllocRangeNumAllocatedAddrs Gauge32, + mallocAllocRangeNumOfferedAddrs Gauge32, + mallocAllocRangeNumWaitingAddrs Gauge32, + mallocAllocRangeNumTryingAddrs Gauge32, + mallocAllocRangeAdvertisable TruthValue, + mallocAllocRangeTotalAllocatedAddrs Gauge32, + mallocAllocRangeTotalRequestedAddrs Gauge32, + mallocAllocRangeStorage StorageType +} + +mallocAllocRangeFirstAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first address in the allocation range. The type of + this address is determined by the value of the + mallocScopeAddressType object." + ::= { mallocAllocRangeEntry 1 } + +mallocAllocRangeLastAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The last address in the allocation range. The type of this + address is determined by the value of the + mallocScopeAddressType object." + ::= { mallocAllocRangeEntry 2 } + +mallocAllocRangeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. If write + access is supported, the other writable objects in this + table may be modified even while the status is `active'." + ::= { mallocAllocRangeEntry 3 } + +mallocAllocRangeSource OBJECT-TYPE + SYNTAX IANAmallocRangeSource + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The means by which this entry was learned." + + + + ::= { mallocAllocRangeEntry 4 } + +mallocAllocRangeLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds remaining in the lifetime of the + (sub)range out of which addresses are being allocated. A + value of 0 indicates that the range is not subject to + aging." + DEFVAL { 0 } + ::= { mallocAllocRangeEntry 5 } + +mallocAllocRangeMaxLeaseAddrs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of addresses which the server is willing + to grant for each future request in this range. A value of + 0 means that no specific limit is enforced, as long as the + server has valid addresses to allocate." + DEFVAL { 0 } + ::= { mallocAllocRangeEntry 6 } + +mallocAllocRangeMaxLeaseTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum lifetime which the server will grant for future + requests in this range. A value of 0 means that no + additional limit is enforced beyond that of + mallocAllocRangeLifetime." + DEFVAL { 0 } + ::= { mallocAllocRangeEntry 7 } + +mallocAllocRangeNumAllocatedAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the range which have been + allocated. This value can be used to determine the current + address space utilization within the scoped range. This + + + + should match the total number of addresses for this scope + covered by entries in the mallocAddressTable." + ::= { mallocAllocRangeEntry 8 } + +mallocAllocRangeNumOfferedAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the range which have been + offered. This number should match the sum of + mallocRequestNumAddrs for all entries in the + mallocRequestTable in the offered state. Together with + mallocAllocRangeNumAllocatedAddrs and + mallocAllocRangeNumTryingAddrs, this can be used to + determine the address space utilization within the scoped + range in the immediate future." + ::= { mallocAllocRangeEntry 9 } + +mallocAllocRangeNumWaitingAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the range which have been + requested, but whose state is waiting, while the server + attempts to acquire more address space." + ::= { mallocAllocRangeEntry 10 } + +mallocAllocRangeNumTryingAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the scope covered by entries in + the mallocRequestTable in the trying state." + ::= { mallocAllocRangeEntry 11 } + +mallocAllocRangeAdvertisable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is true if the range is eligible + to be advertised to other MAASs. When the row is first + created, the default value of this object is true if the + scope is divisible, and is false otherwise." + ::= { mallocAllocRangeEntry 12 } + + + +mallocAllocRangeTotalAllocatedAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The approximate number of addresses in the range which have + been allocated by any MAAS, as determined by a Prefix + Coordinator. This object need only be present if + mallocAllocRangeAdvertisable is true. If the number is + unknown, a value of 0 may be reported." + ::= { mallocAllocRangeEntry 13 } + +mallocAllocRangeTotalRequestedAddrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The approximate number of addresses in the range for which + there is potential demand among MAASs, as determined by a + Prefix Coordinator. This object need only be present if + mallocAllocRangeAdvertisable is true. If the number is + unknown, a value of 0 may be reported." + ::= { mallocAllocRangeEntry 14 } + +mallocAllocRangeStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access to + any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { mallocAllocRangeEntry 15 } + +-- +-- the Request Table +-- + +mallocRequestTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocRequestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on allocation + requests, whether allocated or in progress. This table may + also be used to determine which clients are responsible for + high address space utilization within a given scope. + + + + Entries in this table reflect requests dynamically received + by an address allocation protocol." + ::= { malloc 5 } + +mallocRequestEntry OBJECT-TYPE + SYNTAX MallocRequestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular allocation request." + INDEX { mallocRequestId } + ::= { mallocRequestTable 1 } + +MallocRequestEntry ::= SEQUENCE { + mallocRequestId Unsigned32, + mallocRequestScopeAddressType InetAddressType, + mallocRequestScopeFirstAddress InetAddress, + mallocRequestStartTime Unsigned32, + mallocRequestEndTime Unsigned32, + mallocRequestNumAddrs Unsigned32, + mallocRequestState INTEGER, + mallocRequestClientAddressType InetAddressType, + mallocRequestClientAddress InetAddress, + mallocRequestServerAddressType InetAddressType, + mallocRequestServerAddress InetAddress, + mallocRequestLeaseIdentifier OCTET STRING +} + +mallocRequestId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary value identifying this row." + ::= { mallocRequestEntry 1 } + +mallocRequestScopeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the first address of the scope to which the + request applies. Legal values correspond to the subset of + address families for which multicast address allocation is + supported." + ::= { mallocRequestEntry 2 } + + + + +mallocRequestScopeFirstAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The first address of the scope to which the request + applies. This must match mallocScopeFirstAddress for some + row in the mallocScopeTable. The type of this address is + determined by the value of the mallocRequestScopeAddressType + object." + ::= { mallocRequestEntry 3 } + +mallocRequestStartTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining before the start time of + the request. A value of 0 means that the allocation is + currently in effect." + ::= { mallocRequestEntry 4 } + +mallocRequestEndTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining before the end time of the + request." + ::= { mallocRequestEntry 5 } + +mallocRequestNumAddrs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses requested. If the addresses have + been allocated, this number should match the total number of + addresses for this request covered by entries in the + mallocAddressTable." + ::= { mallocRequestEntry 6 } + +mallocRequestState OBJECT-TYPE + SYNTAX INTEGER { + allocated(1), + offered(2), -- tentatively allocated + + + + waiting(3), -- waiting for more space + trying(4) -- working on allocating + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the request. A value of allocated(1) + indicates that one or more entries for this request are + present in the mallocAddressTable. A value of offered(2) + indicates that addresses have been offered to the client + (e.g. via a MADCAP OFFER message), but the allocation has + not been committed. A value of waiting(3) indicates that + the allocation is blocked while the server attempts to + acquire more space from which it can allocate addresses. A + value of trying(4) means that no addresses have been offered + to the client, but that an attempt to allocate is in + progress." + ::= { mallocRequestEntry 7 } + +mallocRequestClientAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the address of the client that (last) requested + this allocation." + ::= { mallocRequestEntry 8 } + +mallocRequestClientAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the client that (last) requested this + allocation. The type of this address is determined by the + value of the mallocRequestClientAddressType object." + ::= { mallocRequestEntry 9 } + +mallocRequestServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the address of the server to which the request + was (last) sent." + ::= { mallocRequestEntry 10 } + + + + + +mallocRequestServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the server to which the request was (last) + sent. The type of this address is determined by the value + of the mallocRequestServerAddressType object." + ::= { mallocRequestEntry 11 } + +mallocRequestLeaseIdentifier OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Lease Identifier of this request. If the allocation + mechanism in use does not use Lease Identifiers, then the + value is a 0-length string." + ::= { mallocRequestEntry 12 } + +-- +-- the Address Table +-- + +mallocAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF MallocAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on blocks of + allocated addresses. This table may be used to map a given + multicast group address to the associated request." + ::= { malloc 6 } + +mallocAddressEntry OBJECT-TYPE + SYNTAX MallocAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information on a + particular block of allocated addresses. The block of + addresses covered by each entry in this table must fall + within a range corresponding to an entry in the + mallocAllocRangeTable." + INDEX { mallocAddressAddressType, mallocAddressFirstAddress } + ::= { mallocAddressTable 1 } + + + + + +MallocAddressEntry ::= SEQUENCE { + mallocAddressAddressType InetAddressType, + mallocAddressFirstAddress InetAddress, + mallocAddressNumAddrs Unsigned32, + mallocAddressRequestId Unsigned32 +} + +mallocAddressAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the first address in the allocated block. + Legal values correspond to the subset of address families + for which multicast address allocation is supported." + ::= { mallocAddressEntry 1 } + +mallocAddressFirstAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE(0..20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The first address in the allocated block. The type of this + address is determined by the value of the + mallocAddressAddressType object." + ::= { mallocAddressEntry 2 } + +mallocAddressNumAddrs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses in the allocated block." + ::= { mallocAddressEntry 3 } + +mallocAddressRequestId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the request which caused this block of + addresses to be allocated. This value must match the value + of mallocRequestId for some entry in the + mallocRequestTable." + ::= { mallocAddressEntry 4 } + +-- +-- MADCAP-specific objects + + + +-- + +madcapConfig OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Group of objects that count various MADCAP events." + ::= { madcap 1 } + +madcapConfigExtraAllocationTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of extra time on either side of a lease which + the MADCAP server allocates to allow for clock skew among + clients." + ::= { madcapConfig 1 } + +madcapConfigNoResponseDelay OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time the MADCAP client allows for receiving a + response from a MADCAP server." + ::= { madcapConfig 2 } + +madcapConfigOfferHold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time the MADCAP server will reserve an + address for after sending an OFFER message in anticipation + of receiving a REQUEST message." + ::= { madcapConfig 3 } + +madcapConfigResponseCacheInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..300) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of time the MADCAP server uses to detect + duplicate messages." + + + + ::= { madcapConfig 4 } + +madcapConfigClockSkewAllowance OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The clock skew threshold used by the MADCAP server to + generate Excessive Clock Skew errors." + ::= { madcapConfig 5 } + +madcapCounters OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A group of objects that count various MADCAP events." + ::= { madcap 2 } + +madcapTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of transactions for which the MADCAP + server has detected an error of any type, regardless of + whether the server ignored the request or generated a NAK." + ::= { madcapCounters 1 } + +madcapRequestsDenied OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of valid requests for which the MADCAP server + could not complete an allocation, regardless of whether NAKs + were sent. This corresponds to the Valid Request Could Not + Be Completed error code in MADCAP." + ::= { madcapCounters 2 } + +madcapInvalidRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid requests received by the MADCAP + server, regardless of whether NAKs were sent. This + corresponds to the Invalid Request error code in MADCAP." + ::= { madcapCounters 3 } + + + +madcapExcessiveClockSkews OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests received by the MADCAP server with + an excessive clock skew, regardless of whether NAKs were + sent. This corresponds to the Excessive Clock Skew error + code in MADCAP." + ::= { madcapCounters 4 } + +madcapBadLeaseIds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests received by the MADCAP server with + an unrecognized Lease Identifier, regardless of whether NAKs + were sent. This corresponds to the Lease Identifier Not + Recognized error code in MADCAP." + ::= { madcapCounters 5 } + +madcapDiscovers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of DISCOVER messages received by the MADCAP + server." + ::= { madcapCounters 6 } + +madcapInforms OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of INFORM messages received by the MADCAP + server." + ::= { madcapCounters 7 } + +madcapRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of REQUEST messages received by the MADCAP + server." + ::= { madcapCounters 8 } + + + +madcapRenews OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RENEW messages received by the MADCAP + server." + ::= { madcapCounters 9 } + +madcapReleases OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RELEASE messages received by the MADCAP + server." + ::= { madcapCounters 10 } + + +-- conformance information + +mallocConformance OBJECT IDENTIFIER ::= { mallocMIB 2 } +mallocCompliances OBJECT IDENTIFIER ::= { mallocConformance 1 } +mallocGroups OBJECT IDENTIFIER ::= { mallocConformance 2 } + +-- compliance statements + +mallocServerReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for multicast address allocation + servers implementing the MALLOC MIB without support for + read-create (i.e., in read-only mode). Such a server can + then be monitored but can not be configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocServerGroup } + + OBJECT mallocScopeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeHopLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT mallocScopeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeDivisible + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeSSM + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeNameScopeName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeNameDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeNameStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeNameStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + + + + OBJECT mallocAllocRangeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeMaxLeaseAddrs + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeMaxLeaseTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP madcapServerGroup + DESCRIPTION + "This group is mandatory for servers which implement the + MADCAP client-server protocol." + + OBJECT madcapConfigExtraAllocationTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT madcapConfigOfferHold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT madcapConfigResponseCacheInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + + + + OBJECT madcapConfigClockSkewAllowance + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mallocCompliances 1 } + +mallocClientReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for clients implementing the + MALLOC MIB without support for read-create (i.e., in read- + only mode). Such clients can then be monitored but can not + be configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocClientGroup } + + GROUP mallocClientScopeGroup + DESCRIPTION + "This group is mandatory for clients which maintain a list + of multicast scopes." + + OBJECT mallocScopeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeHopLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeServerAddressType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeServerAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + + OBJECT mallocScopeSSM + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP madcapClientGroup + DESCRIPTION + "This group is mandatory for clients which implement the + MADCAP client-server protocol." + + OBJECT madcapConfigNoResponseDelay + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mallocCompliances 2 } + +mallocPrefixCoordinatorReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for prefix coordinators + implementing the MALLOC MIB without support for read-create + (i.e., in read-only mode). Such devices can then be + monitored but can not be configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocPrefixCoordinatorGroup } + + OBJECT mallocScopeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocScopeDivisible + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeLastAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + + OBJECT mallocAllocRangeStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeAdvertisable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mallocAllocRangeStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mallocCompliances 3 } + +mallocServerFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for multicast address allocation + servers implementing the MALLOC MIB with support for read- + create. Such servers can then be both monitored and + configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocServerGroup } + + GROUP madcapServerGroup + DESCRIPTION + "This group is mandatory for servers which implement the + MADCAP client-server protocol." + ::= { mallocCompliances 4 } + +mallocClientFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for hosts implementing the MALLOC + MIB with support for read-create. Such clients can then be + both monitored and configured with this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocClientGroup } + + + + + GROUP mallocClientScopeGroup + DESCRIPTION + "This group is mandatory for clients which maintain a list + of multicast scopes." + + GROUP madcapClientGroup + DESCRIPTION + "This group is mandatory for clients which implement the + MADCAP client-server protocol." + ::= { mallocCompliances 5 } + +mallocPrefixCoordinatorFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for prefix coordinators + implementing the MALLOC MIB with support for read-create. + Such devices can then be both monitored and configured with + this MIB." + MODULE -- this module + MANDATORY-GROUPS { mallocBasicGroup, + mallocPrefixCoordinatorGroup } + ::= { mallocCompliances 6 } + +-- units of conformance + +mallocBasicGroup OBJECT-GROUP + OBJECTS { mallocCapabilities, mallocRequestScopeAddressType, + mallocRequestScopeFirstAddress, + mallocRequestStartTime, + mallocRequestEndTime, mallocRequestNumAddrs, + mallocRequestState, + mallocAddressNumAddrs, mallocAddressRequestId + } + STATUS current + DESCRIPTION + "The basic collection of objects providing management of IP + multicast address allocation." + ::= { mallocGroups 1 } + +mallocServerGroup OBJECT-GROUP + OBJECTS { mallocScopeLastAddress, mallocScopeHopLimit, + mallocScopeSSM, mallocScopeStatus, mallocScopeStorage, + mallocAllocRangeLastAddress, mallocAllocRangeLifetime, + mallocAllocRangeNumAllocatedAddrs, + mallocAllocRangeNumOfferedAddrs, + mallocAllocRangeNumWaitingAddrs, + mallocAllocRangeNumTryingAddrs, + mallocAllocRangeMaxLeaseAddrs, + + + + mallocAllocRangeMaxLeaseTime, mallocAllocRangeSource, + mallocAllocRangeStatus, mallocAllocRangeStorage, + mallocScopeDivisible, mallocScopeSource, + mallocScopeNameScopeName, mallocScopeNameDefault, + mallocScopeNameStatus, mallocScopeNameStorage, + mallocRequestClientAddressType, + mallocRequestClientAddress + } + STATUS current + DESCRIPTION + "A collection of objects providing management of multicast + address allocation in servers." + ::= { mallocGroups 2 } + +mallocClientGroup OBJECT-GROUP + OBJECTS { mallocRequestServerAddressType, + mallocRequestServerAddress } + STATUS current + DESCRIPTION + "A collection of objects providing management of multicast + address allocation in clients." + ::= { mallocGroups 3 } + +madcapServerGroup OBJECT-GROUP + OBJECTS { madcapConfigClockSkewAllowance, + madcapConfigExtraAllocationTime, madcapConfigOfferHold, + madcapConfigResponseCacheInterval, + madcapTotalErrors, madcapRequestsDenied, + madcapInvalidRequests, madcapBadLeaseIds, + madcapExcessiveClockSkews, madcapDiscovers, + madcapInforms, madcapRequests, + madcapRenews, madcapReleases } + STATUS current + DESCRIPTION + "A collection of objects providing management of MADCAP + servers." + ::= { mallocGroups 4 } + +madcapClientGroup OBJECT-GROUP + OBJECTS { mallocRequestLeaseIdentifier, + madcapConfigNoResponseDelay } + STATUS current + DESCRIPTION + "A collection of objects providing management of MADCAP + clients." + ::= { mallocGroups 5 } + + + + + +mallocClientScopeGroup OBJECT-GROUP + OBJECTS { mallocScopeLastAddress, mallocScopeHopLimit, + mallocScopeStatus, mallocScopeStorage, mallocScopeSource, + mallocScopeServerAddressType, mallocScopeServerAddress, + mallocScopeSSM, mallocScopeNameScopeName, + mallocScopeNameDefault, mallocScopeNameStatus, + mallocScopeNameStorage } + STATUS current + DESCRIPTION + "A collection of objects providing management of multicast + scope information in clients." + ::= { mallocGroups 6 } + +mallocPrefixCoordinatorGroup OBJECT-GROUP + OBJECTS { mallocAllocRangeLastAddress, mallocAllocRangeLifetime, + mallocAllocRangeStatus, mallocAllocRangeStorage, + mallocAllocRangeSource, + mallocAllocRangeTotalAllocatedAddrs, + mallocAllocRangeTotalRequestedAddrs, + mallocAllocRangeAdvertisable, mallocScopeLastAddress, + mallocScopeDivisible, mallocScopeSource } + STATUS current + DESCRIPTION + "A collection of objects for managing Prefix Coordinators." + ::= { mallocGroups 7 } +END diff --git a/mibs/ietf/MAU-MIB b/mibs/ietf/MAU-MIB new file mode 100644 index 0000000..6279e12 --- /dev/null +++ b/mibs/ietf/MAU-MIB @@ -0,0 +1,1837 @@ +MAU-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter32, Integer32, Counter64, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, mib-2 + FROM SNMPv2-SMI -- RFC 2578 + TruthValue, AutonomousType, TEXTUAL-CONVENTION + FROM SNMPv2-TC -- RFC 2579 + OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + InterfaceIndex + FROM IF-MIB -- RFC 2863 + IANAifMauTypeListBits, IANAifMauMediaAvailable, + IANAifMauAutoNegCapBits, IANAifJackType + FROM IANA-MAU-MIB + -- http://www.iana.org/assignments/ianamau-mib + ; + + mauMod MODULE-IDENTITY + LAST-UPDATED "200704210000Z" -- April 21, 2007 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com" + + DESCRIPTION + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices." + + REVISION "200704210000Z" -- April 21, 2007 + DESCRIPTION "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836." + + REVISION "200309190000Z" -- September 19, 2003 + DESCRIPTION "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636." + + REVISION "199908240400Z" -- August 24, 1999 + DESCRIPTION "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation." + + REVISION "199710310000Z" -- October 31, 1997 + DESCRIPTION "Version published as RFC 2239." + + REVISION "199309300000Z" -- September 30, 1993 + DESCRIPTION "Initial version, published as RFC 1515." + + ::= { snmpDot3MauMgt 6 } + + snmpDot3MauMgt OBJECT IDENTIFIER ::= { mib-2 26 } + + -- Textual Conventions + + JackType ::= TEXTUAL-CONVENTION + STATUS deprecated + DESCRIPTION "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types." + SYNTAX INTEGER { + other(1), + rj45(2), + rj45S(3), -- rj45 shielded + db9(4), + bnc(5), + fAUI(6), -- female aui + + + + mAUI(7), -- male aui + fiberSC(8), + fiberMIC(9), + fiberST(10), + telco(11), + mtrj(12), -- fiber MT-RJ + hssdc(13), -- fiber channel style-2 + fiberLC(14) + } + + dot3RpMauBasicGroup + OBJECT IDENTIFIER ::= { snmpDot3MauMgt 1 } + dot3IfMauBasicGroup + OBJECT IDENTIFIER ::= { snmpDot3MauMgt 2 } + dot3BroadMauBasicGroup + OBJECT IDENTIFIER ::= { snmpDot3MauMgt 3 } + + -- OIDs under the following branch are reserved for + -- the IANA-MAU-MIB to assign as MAU type values: + -- { snmpDot3MauMgt 4 } + + dot3IfMauAutoNegGroup + OBJECT IDENTIFIER ::= { snmpDot3MauMgt 5 } + + -- the following OID is the MODULE-IDENTITY value + -- for this MIB module: { snmpDot3MauMgt 6 } + + -- + -- The Basic Repeater MAU Table + -- + + rpMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater." + ::= { dot3RpMauBasicGroup 1 } + + rpMauEntry OBJECT-TYPE + SYNTAX RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a single MAU." + INDEX { rpMauGroupIndex, + rpMauPortIndex, + + + + rpMauIndex + } + ::= { rpMauTable 1 } + + RpMauEntry ::= + SEQUENCE { + rpMauGroupIndex Integer32, + rpMauPortIndex Integer32, + rpMauIndex Integer32, + rpMauType AutonomousType, + rpMauStatus INTEGER, + rpMauMediaAvailable IANAifMauMediaAvailable, + rpMauMediaAvailableStateExits Counter32, + rpMauJabberState INTEGER, + rpMauJabberingStateEnters Counter32, + rpMauFalseCarriers Counter32 + } + + rpMauGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex." + REFERENCE "RFC 2108, rptrGroupIndex." + ::= { rpMauEntry 1 } + + rpMauPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected." + REFERENCE "RFC 2108, rptrPortIndex." + + + + ::= { rpMauEntry 2 } + + rpMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)." + REFERENCE "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { rpMauEntry 3 } + + rpMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned." + REFERENCE "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { rpMauEntry 4 } + + rpMauStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + operational(3), + standby(4), + shutdown(5), + reset(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { rpMauEntry 5 } + + rpMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC." + REFERENCE "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { rpMauEntry 6 } + + rpMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 7 } + + rpMauJabberState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + noJabber(3), + jabbering(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value." + REFERENCE "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { rpMauEntry 8 } + + rpMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 9 } + + rpMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 10 } + + -- The rpJackTable applies to MAUs attached to repeaters + -- which have one or more external jacks (connectors). + + + + rpJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Information about the external jacks attached + to MAUs attached to the ports of a repeater." + ::= { dot3RpMauBasicGroup 2 } + + rpJackEntry OBJECT-TYPE + SYNTAX RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a particular jack." + INDEX { rpMauGroupIndex, + rpMauPortIndex, + rpMauIndex, + rpJackIndex + } + ::= { rpJackTable 1 } + + RpJackEntry ::= + SEQUENCE { + rpJackIndex Integer32, + rpJackType IANAifJackType + } + + rpJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)." + ::= { rpJackEntry 1 } + + rpJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The jack connector type, as it appears on the + outside of the system." + ::= { rpJackEntry 2 } + + -- + -- The Basic Interface MAU Table + -- + + + + + ifMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of descriptive and status information + about MAU(s) attached to an interface." + ::= { dot3IfMauBasicGroup 1 } + + ifMauEntry OBJECT-TYPE + SYNTAX IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a single MAU." + INDEX { ifMauIfIndex, + ifMauIndex + } + ::= { ifMauTable 1 } + + IfMauEntry ::= + SEQUENCE { + ifMauIfIndex InterfaceIndex, + ifMauIndex Integer32, + ifMauType AutonomousType, + ifMauStatus INTEGER, + ifMauMediaAvailable IANAifMauMediaAvailable, + ifMauMediaAvailableStateExits Counter32, + ifMauJabberState INTEGER, + ifMauJabberingStateEnters Counter32, + ifMauFalseCarriers Counter32, + ifMauTypeList Integer32, + ifMauDefaultType AutonomousType, + ifMauAutoNegSupported TruthValue, + ifMauTypeListBits IANAifMauTypeListBits, + ifMauHCFalseCarriers Counter64 + } + + ifMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE "RFC 2863, ifIndex" + ::= { ifMauEntry 1 } + + + + + ifMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)." + REFERENCE "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { ifMauEntry 2 } + + ifMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode." + REFERENCE "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { ifMauEntry 3 } + + ifMauStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + operational(3), + standby(4), + shutdown(5), + reset(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { ifMauEntry 4 } + + ifMauMediaAvailable OBJECT-TYPE + + + + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC." + REFERENCE "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { ifMauEntry 5 } + + ifMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 6 } + + ifMauJabberState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + unknown(2), + noJabber(3), + jabbering(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value." + REFERENCE "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { ifMauEntry 7 } + + ifMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 8 } + + ifMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 9 } + + ifMauTypeList OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability." + ::= { ifMauEntry 10 } + + ifMauDefaultType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS current + DESCRIPTION "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function." + REFERENCE "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + ::= { ifMauEntry 11 } + + + + + ifMauAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "This object indicates whether or not + auto-negotiation is supported on this MAU." + ::= { ifMauEntry 12 } + + ifMauTypeListBits OBJECT-TYPE + SYNTAX IANAifMauTypeListBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC." + ::= { ifMauEntry 13 } + + ifMauHCFalseCarriers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 14 } + + -- The ifJackTable applies to MAUs attached to interfaces + -- which have one or more external jacks (connectors). + + ifJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Information about the external jacks attached + to MAUs attached to an interface." + ::= { dot3IfMauBasicGroup 2 } + + ifJackEntry OBJECT-TYPE + SYNTAX IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing information + about a particular jack." + INDEX { ifMauIfIndex, + ifMauIndex, + ifJackIndex + } + ::= { ifJackTable 1 } + + IfJackEntry ::= + SEQUENCE { + ifJackIndex Integer32, + ifJackType IANAifJackType + } + + ifJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU." + ::= { ifJackEntry 1 } + + ifJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The jack connector type, as it appears on the + outside of the system." + ::= { ifJackEntry 2 } + + + + -- + -- The MAU Auto-Negotiation Table + -- + + ifMauAutoNegTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function." + ::= { dot3IfMauAutoNegGroup 1 } + + ifMauAutoNegEntry OBJECT-TYPE + SYNTAX IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU." + INDEX { ifMauIfIndex, + ifMauIndex + } + ::= { ifMauAutoNegTable 1 } + + IfMauAutoNegEntry ::= + SEQUENCE { + ifMauAutoNegAdminStatus INTEGER, + ifMauAutoNegRemoteSignaling INTEGER, + ifMauAutoNegConfig INTEGER, + ifMauAutoNegCapability Integer32, + ifMauAutoNegCapAdvertised Integer32, + ifMauAutoNegCapReceived Integer32, + ifMauAutoNegRestart INTEGER, + ifMauAutoNegCapabilityBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapAdvertisedBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapReceivedBits IANAifMauAutoNegCapBits, + ifMauAutoNegRemoteFaultAdvertised INTEGER, + ifMauAutoNegRemoteFaultReceived INTEGER + } + + + + + ifMauAutoNegAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function." + REFERENCE "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl." + ::= { ifMauAutoNegEntry 1 } + + ifMauAutoNegRemoteSignaling OBJECT-TYPE + SYNTAX INTEGER { + detected(1), + notdetected(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received." + REFERENCE "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling." + ::= { ifMauAutoNegEntry 2 } + + ifMauAutoNegConfig OBJECT-TYPE + + + + SYNTAX INTEGER { + other(1), + configuring(2), + complete(3), + disabled(4), + parallelDetectFail(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]." + REFERENCE "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + ::= { ifMauAutoNegEntry 4 } + + ifMauAutoNegCapability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB." + REFERENCE "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 5 } + + ifMauAutoNegCapAdvertised OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled." + REFERENCE "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 6 } + + ifMauAutoNegCapReceived OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB." + REFERENCE "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 7 } + + ifMauAutoNegRestart OBJECT-TYPE + SYNTAX INTEGER { + restart(1), + norestart(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect." + REFERENCE "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig." + ::= { ifMauAutoNegEntry 8 } + + ifMauAutoNegCapabilityBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + + + + + REFERENCE "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 9 } + + ifMauAutoNegCapAdvertisedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-write + STATUS current + DESCRIPTION "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 10 } + + ifMauAutoNegCapReceivedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 11 } + + ifMauAutoNegRemoteFaultAdvertised OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + offline(2), + + + + linkFailure(3), + autoNegError(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs." + REFERENCE "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 12 } + + ifMauAutoNegRemoteFaultReceived OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + offline(2), + linkFailure(3), + autoNegError(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs." + REFERENCE "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 13 } + + + -- + -- The Basic Broadband MAU Table + -- + + broadMauBasicTable OBJECT-TYPE + SYNTAX SEQUENCE OF BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces." + ::= { dot3BroadMauBasicGroup 1 } + + broadMauBasicEntry OBJECT-TYPE + SYNTAX BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU." + INDEX { broadMauIfIndex, + broadMauIndex + } + ::= { broadMauBasicTable 1 } + + BroadMauBasicEntry ::= + SEQUENCE { + broadMauIfIndex InterfaceIndex, + broadMauIndex Integer32, + broadMauXmtRcvSplitType INTEGER, + broadMauXmtCarrierFreq Integer32, + broadMauTranslationFreq Integer32 + } + + broadMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE "RFC 2863, ifIndex." + ::= { broadMauBasicEntry 1 } + + broadMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry." + REFERENCE "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { broadMauBasicEntry 2 } + + broadMauXmtRcvSplitType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + single(2), + dual(3) + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero." + REFERENCE "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType." + ::= { broadMauBasicEntry 3 } + + broadMauXmtCarrierFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency." + ::= { broadMauBasicEntry 4 } + + broadMauTranslationFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency." + ::= { broadMauBasicEntry 5 } + + -- Notifications for use by 802.3 MAUs + + snmpDot3MauTraps OBJECT IDENTIFIER ::= { snmpDot3MauMgt 0 } + + rpMauJabberTrap NOTIFICATION-TYPE + OBJECTS { rpMauJabberState } + STATUS current + DESCRIPTION "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 1 } + + ifMauJabberTrap NOTIFICATION-TYPE + OBJECTS { ifMauJabberState } + STATUS current + DESCRIPTION "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them." + + REFERENCE "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 2 } + + -- Conformance information + + mauModConf + OBJECT IDENTIFIER ::= { mauMod 1 } + mauModCompls + OBJECT IDENTIFIER ::= { mauModConf 1 } + mauModObjGrps + OBJECT IDENTIFIER ::= { mauModConf 2 } + mauModNotGrps + OBJECT IDENTIFIER ::= { mauModConf 3 } + + -- Object groups + + + + + mauRpGrpBasic OBJECT-GROUP + OBJECTS { rpMauGroupIndex, + rpMauPortIndex, + rpMauIndex, + rpMauType, + rpMauStatus, + rpMauMediaAvailable, + rpMauMediaAvailableStateExits, + rpMauJabberState, + rpMauJabberingStateEnters + } + STATUS current + DESCRIPTION "Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 1 } + + mauRpGrp100Mbs OBJECT-GROUP + OBJECTS { rpMauFalseCarriers } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability." + ::= { mauModObjGrps 2 } + + mauRpGrpJack OBJECT-GROUP + OBJECTS { rpJackType } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + repeater ports with managed jacks." + ::= { mauModObjGrps 3 } + + mauIfGrpBasic OBJECT-GROUP + OBJECTS { ifMauIfIndex, + ifMauIndex, + ifMauType, + ifMauStatus, + ifMauMediaAvailable, + ifMauMediaAvailableStateExits, + ifMauJabberState, + ifMauJabberingStateEnters + } + STATUS current + DESCRIPTION "Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations." + + + + ::= { mauModObjGrps 4 } + + mauIfGrp100Mbs OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, + ifMauTypeList, + ifMauDefaultType, + ifMauAutoNegSupported + } + + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity." + ::= { mauModObjGrps 5 } + + mauIfGrpJack OBJECT-GROUP + OBJECTS { ifJackType } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + interfaces with managed jacks." + ::= { mauModObjGrps 6 } + + mauIfGrpAutoNeg OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, + ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, + ifMauAutoNegCapability, + ifMauAutoNegCapAdvertised, + ifMauAutoNegCapReceived, + ifMauAutoNegRestart + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2." + ::= { mauModObjGrps 7 } + + mauBroadBasic OBJECT-GROUP + OBJECTS { broadMauIfIndex, + broadMauIndex, + + + + broadMauXmtRcvSplitType, + broadMauXmtCarrierFreq, + broadMauTranslationFreq + } + STATUS deprecated + DESCRIPTION "********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations." + ::= { mauModObjGrps 8 } + + mauIfGrpHighCapacity OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, + ifMauTypeListBits, + ifMauDefaultType, + ifMauAutoNegSupported + } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability." + ::= { mauModObjGrps 9 } + + mauIfGrpAutoNeg2 OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, + ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, + ifMauAutoNegCapabilityBits, + ifMauAutoNegCapAdvertisedBits, + ifMauAutoNegCapReceivedBits, + ifMauAutoNegRestart + } + STATUS current + DESCRIPTION "Conformance group for MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 10 } + + mauIfGrpAutoNeg1000Mbps OBJECT-GROUP + OBJECTS { ifMauAutoNegRemoteFaultAdvertised, + ifMauAutoNegRemoteFaultReceived + } + STATUS current + DESCRIPTION "Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 11 } + + + + mauIfGrpHCStats OBJECT-GROUP + OBJECTS { ifMauHCFalseCarriers } + STATUS current + DESCRIPTION "Conformance for high capacity statistics for + MAUs attached to interfaces." + ::= { mauModObjGrps 12 } + + -- Notification groups + + rpMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { rpMauJabberTrap } + STATUS current + DESCRIPTION "Notifications for repeater MAUs." + ::= { mauModNotGrps 1 } + + ifMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { ifMauJabberTrap } + STATUS current + DESCRIPTION "Notifications for interface MAUs." + ::= { mauModNotGrps 2 } + + -- Compliances + + mauModRpCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only." + + MODULE -- this module + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + + + + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to repeater ports." + ::= { mauModCompls 1 } + + mauModIfCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2." + + MODULE -- this module + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrp100Mbs + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + capability." + + GROUP mauIfGrpJack + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg + DESCRIPTION "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauBroadBasic + DESCRIPTION "Implementation of this group is mandatory + for broadband MAUs." + + GROUP ifMauNotifications + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to interfaces." + ::= { mauModCompls 2 } + + mauModIfCompl2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3." + + + + + MODULE -- this module + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpJack + + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { mauModCompls 3 } + + mauModRpCompl2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108)." + + MODULE -- this module + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + + + + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to repeater ports." + + OBJECT rpMauStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { mauModCompls 4 } + + mauModIfCompl3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635)." + + MODULE -- this module + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpHCStats + DESCRIPTION "Implementation of this group is mandatory + for MAUs that have 1000Mb/s capacity, and + is recommended for MAUs that have 100Mb/s + capacity." + + GROUP mauIfGrpJack + DESCRIPTION "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { mauModCompls 5 } + +END diff --git a/mibs/ietf/MIDCOM-MIB b/mibs/ietf/MIDCOM-MIB new file mode 100644 index 0000000..6a55898 --- /dev/null +++ b/mibs/ietf/MIDCOM-MIB @@ -0,0 +1,2386 @@ +MIDCOM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, Unsigned32, + Counter32, Gauge32, mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + TEXTUAL-CONVENTION, TruthValue, + StorageType, RowStatus + FROM SNMPv2-TC -- RFC 2579 + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + InetAddressType, InetAddress, + InetPortNumber, + InetAddressPrefixLength + FROM INET-ADDRESS-MIB -- RFC 4001 + + + + + + InterfaceIndexOrZero + FROM IF-MIB -- RFC 2863 + + NatBindIdOrZero + FROM NAT-MIB; -- RFC 4008 + +midcomMIB MODULE-IDENTITY + LAST-UPDATED "200708091011Z" -- August 09, 2007 + ORGANIZATION "IETF Middlebox Communication Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/midcom-charter.html + + Mailing Lists: + General Discussion: midcom@ietf.org + To Subscribe: midcom-request@ietf.org + In Body: subscribe your_email_address + + Co-editor: + Juergen Quittek + NEC Europe Ltd. + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + Tel: +49 6221 4342-115 + Email: quittek@nw.neclab.eu + + Co-editor: + Martin Stiemerling + NEC Europe Ltd. + Kurfuersten-Anlage 36 + 69115 Heidelberg + Germany + Tel: +49 6221 4342-113 + Email: stiemerling@nw.neclab.eu + + Co-editor: + Pyda Srisuresh + Kazeon Systems, Inc. + 1161 San Antonio Rd. + Mountain View, CA 94043 + U.S.A. + Tel: +1 408 836-4773 + Email: srisuresh@yahoo.com" + + DESCRIPTION + "This MIB module defines a set of basic objects for + configuring middleboxes, such as firewalls and network + + + + address translators, in order to enable communication + across these devices. + + Managed objects defined in this MIB module are structured + in three kinds of objects: + - transaction objects required according to the MIDCOM + protocol requirements defined in RFC 3304 and according + to the MIDCOM protocol semantics defined in RFC 3989, + - configuration objects that can be used for retrieving or + setting parameters of the implementation of transaction + objects, + - optional monitoring objects that provide information + about used resource and statistics + + The transaction objects are organized in two subtrees: + - objects modeling MIDCOM policy rules in the + midcomRuleTable + - objects modeling MIDCOM policy rule groups in the + midcomGroupTable + + Note that typically, configuration objects are not intended + to be written by MIDCOM clients. In general, write access + to these objects needs to be restricted more strictly than + write access to objects in the transaction subtrees. + + Copyright (C) The Internet Society (2008). This version + of this MIB module is part of RFC 5190; see the RFC + itself for full legal notices." + + REVISION "200708091011Z" -- August 09, 2007 + DESCRIPTION "Initial version, published as RFC 5190." + ::= { mib-2 171 } + +-- +-- main components of this MIB module +-- + +midcomNotifications OBJECT IDENTIFIER ::= { midcomMIB 0 } +midcomObjects OBJECT IDENTIFIER ::= { midcomMIB 1 } +midcomConformance OBJECT IDENTIFIER ::= { midcomMIB 2 } + +-- Transaction objects required according to the MIDCOM +-- protocol requirements defined in RFC 3304 and according to +-- the MIDCOM protocol semantics defined in RFC 3989 +midcomTransaction OBJECT IDENTIFIER ::= { midcomObjects 1 } + +-- Configuration objects that can be used for retrieving +-- middlebox capability information (mandatory) and for + + + +-- setting parameters of the implementation of transaction +-- objects (optional) +midcomConfig OBJECT IDENTIFIER ::= { midcomObjects 2 } + +-- Optional monitoring objects that provide information about +-- used resource and statistics +midcomMonitoring OBJECT IDENTIFIER ::= { midcomObjects 3 } + +-- +-- Transaction Objects +-- +-- Transaction objects are structured according to the MIDCOM +-- protocol semantics into two groups: +-- - objects modeling MIDCOM policy rules in the midcomRuleTable +-- - objects modeling MIDCOM policy rule groups in the +-- midcomGroupTable + +-- +-- Policy rule subtree +-- +-- The midcomRuleTable lists policy rules +-- including policy reserve rules and policy enable rules. +-- + +midcomRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists policy rules. + + It is indexed by the midcomRuleOwner, the + midcomGroupIndex, and the midcomRuleIndex. + This implies that a rule is a member of exactly + one group and that group membership cannot + be changed. + + Entries can be deleted by writing to + midcomGroupLifetime or midcomRuleLifetime + and potentially also to midcomRuleStorageTime." + ::= { midcomTransaction 3 } + +midcomRuleEntry OBJECT-TYPE + SYNTAX MidcomRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular MIDCOM policy rule." + + + + INDEX { midcomRuleOwner, midcomGroupIndex, midcomRuleIndex } + ::= { midcomRuleTable 1 } + +MidcomRuleEntry ::= SEQUENCE { + midcomRuleOwner SnmpAdminString, + midcomRuleIndex Unsigned32, + midcomRuleAdminStatus INTEGER, + midcomRuleOperStatus INTEGER, + midcomRuleStorageType StorageType, + midcomRuleStorageTime Unsigned32, + midcomRuleError SnmpAdminString, + midcomRuleInterface InterfaceIndexOrZero, + midcomRuleFlowDirection INTEGER, + midcomRuleMaxIdleTime Unsigned32, + midcomRuleTransportProtocol Unsigned32, + midcomRulePortRange INTEGER, + midcomRuleInternalIpVersion InetAddressType, + midcomRuleExternalIpVersion InetAddressType, + midcomRuleInternalIpAddr InetAddress, + midcomRuleInternalIpPrefixLength InetAddressPrefixLength, + midcomRuleInternalPort InetPortNumber, + midcomRuleExternalIpAddr InetAddress, + midcomRuleExternalIpPrefixLength InetAddressPrefixLength, + midcomRuleExternalPort InetPortNumber, + midcomRuleInsideIpAddr InetAddress, + midcomRuleInsidePort InetPortNumber, + midcomRuleOutsideIpAddr InetAddress, + midcomRuleOutsidePort InetPortNumber, + midcomRuleLifetime Unsigned32, + midcomRuleRowStatus RowStatus +} + +midcomRuleOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The manager who owns this row in the midcomRuleTable. + + This object SHOULD uniquely identify an authenticated + MIDCOM client. This object is part of the table index to + allow for the use of the SNMPv3 View-based Access Control + Model (VACM, RFC 3415)." + ::= { midcomRuleEntry 1 } + +midcomRuleIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The value of this object must be unique in + combination with the values of the objects + midcomRuleOwner and midcomGroupIndex in this row." + ::= { midcomRuleEntry 3 } + +midcomRuleAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + reserve(1), + enable(2), + notSet(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of + the policy rule. See the definition of midcomRuleOperStatus + for a description of the values. + + When a midcomRuleEntry is created without explicitly setting + this object, its value will be notSet(3). + + However, a SET request can only set this object to either + reserve(1) or enable(2). Attempts to set this object to + notSet(3) will always fail with an 'inconsistentValue' + error. Note that this error code is SNMP specific. If the + MIB module is used with other protocols than SNMP, errors + with similar semantics specific to those protocols should + be returned. + + When the midcomRuleAdminStatus object is set, then the + MIDCOM-MIB implementation will try to read the respective + relevant objects of the entry and try to achieve the + corresponding midcomRuleOperStatus. + + Setting midcomRuleAdminStatus to value reserve(1) when + object midcomRuleOperStatus has a value of reserved(7) + does not have any effect on the policy rule. + Setting midcomRuleAdminStatus to value enable(2) when + object midcomRuleOperStatus has a value of enabled(8) + does not have any effect on the policy rule. + + Depending on whether the midcomRuleAdminStatus is set to + reserve(1) or enable(2), several objects must be set in + advance. They serve as parameters of the policy rule to be + established. + + + + + When object midcomRuleAdminStatus is set to reserve(1), + then the following objects in the same entry are of + relevance: + - midcomRuleInterface + - midcomRuleTransportProtocol + - midcomRulePortRange + - midcomRuleInternalIpVersion + - midcomRuleExternalIpVersion + - midcomRuleInternalIpAddr + - midcomRuleInternalIpPrefixLength + - midcomRuleInternalPort + - midcomRuleLifetime + + MIDCOM-MIB implementation may also consider the value + of object midcomRuleMaxIdleTime when establishing + a reserve rule. + + When object midcomRuleAdminStatus is set to enable(2), + then the following objects in the same entry are of + relevance: + - midcomRuleInterface + - midcomRuleFlowDirection + - midcomRuleMaxIdleTime + - midcomRuleTransportProtocol + - midcomRulePortRange + - midcomRuleInternalIpVersion + - midcomRuleExternalIpVersion + - midcomRuleInternalIpAddr + - midcomRuleInternalIpPrefixLength + - midcomRuleInternalPort + - midcomRuleExternalIpAddr + - midcomRuleExternalIpPrefixLength + - midcomRuleExternalPort + - midcomRuleLifetime + + When retrieved, the object returns the last set value. + If no value has been set, it returns the default value + notSet(3)." + DEFVAL { notSet } + ::= { midcomRuleEntry 4 } + +midcomRuleOperStatus OBJECT-TYPE + SYNTAX INTEGER { + newEntry(1), + setting(2), + checkingRequest(3), + incorrectRequest(4), + processingRequest(5), + + + + requestRejected(6), + reserved(7), + enabled(8), + timedOut(9), + terminatedOnRequest(10), + terminated(11), + genericError(12) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual status of the policy rule. The + midcomRuleOperStatus object may have the following values: + + - newEntry(1) indicates that the entry in the + midcomRuleTable was created, but not modified yet. + Such an entry needs to be filled with values specifying + a request first. + + - setting(2) indicates that the entry has been already + modified after generating it, but no request was made + yet. + + - checkingRequest(3) indicates that midcomRuleAdminStatus + has recently been set and that the MIDCOM-MIB + implementation is currently checking the parameters of + the request. This is a transient state. The value of + this object will change to either incorrectRequest(4) + or processingRequest(5) without any external + interaction. A MIDCOM-MIB implementation MAY return + this value while checking request parameters. + + - incorrectRequest(4) indicates that checking a request + resulted in detecting an incorrect value in one of the + objects containing request parameters. The failure + reason is indicated by the value of midcomRuleError. + + - processingRequest(5) indicates that + midcomRuleAdminStatus has recently been set and that + the MIDCOM-MIB implementation is currently processing + the request and trying to configure the middlebox + accordingly. This is a transient state. The value of + this object will change to either requestRejected(6), + reserved(7), or enabled(8) without any external + interaction. A MIDCOM-MIB implementation MAY return + this value while processing a request. + + - requestRejected(6) indicates that a request to establish + + + + a policy rule specified by the entry was rejected. The + reason for rejection is indicated by the value of + midcomRuleError. + + - reserved(7) indicates that the entry describes an + established policy reserve rule. + These values of MidcomRuleEntry are meaningful + for a reserved policy rule: + - midcomRuleMaxIdleTime + - midcomRuleInterface + - midcomRuleTransportProtocol + - midcomRulePortRange + - midcomRuleInternalIpVersion + - midcomRuleExternalIpVersion + - midcomRuleInternalIpAddr + - midcomRuleInternalIpPrefixLength + - midcomRuleInternalPort + - midcomRuleOutsideIpAddr + - midcomRuleOutsidePort + - midcomRuleLifetime + + - enabled(8) indicates that the entry describes an + established policy enable rule. + These values of MidcomRuleEntry are meaningful + for an enabled policy rule: + + - midcomRuleFlowDirection + - midcomRuleInterface + - midcomRuleMaxIdleTime + - midcomRuleTransportProtocol + - midcomRulePortRange + - midcomRuleInternalIpVersion + - midcomRuleExternalIpVersion + - midcomRuleInternalIpAddr + - midcomRuleInternalIpPrefixLength + - midcomRuleInternalPort + - midcomRuleExternalIpAddr + - midcomRuleExternalIpPrefixLength + - midcomRuleExternalPort + - midcomRuleInsideIpAddr + - midcomRuleInsidePort + - midcomRuleOutsideIpAddr + - midcomRuleOutsidePort + - midcomRuleLifetime + + - timedOut(9) indicates that the lifetime of a previously + established policy rule has expired and that the policy + rule is terminated for this reason. + + + + - terminatedOnRequest(10) indicates that a previously + established policy rule was terminated by an SNMP + manager setting the midcomRuleLifetime to 0 or + setting midcomGroupLifetime to 0. + + - terminated(11) indicates that a previously established + policy rule was terminated by the MIDCOM-MIB + implementation for a reason other than lifetime + expiration or an explicit request from a MIDCOM client. + + - genericError(12) indicates that the policy rule + specified by the entry is not established due to + an error condition not listed above. + + The states timedOut(9), terminatedOnRequest(10), and + terminated(11) are referred to as termination states. + + The states incorrectRequest(4), requestRejected(6), + and genericError(12) are referred to as error states. + + The checkingRequest(3) and processingRequest(5) + states are transient states, which will lead to either + one of the error states or the reserved(7) state or the + enabled(8) state. MIDCOM-MIB implementations MAY return + these values when checking or processing requests." + DEFVAL { newEntry } + ::= { midcomRuleEntry 5 } + +midcomRuleStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When retrieved, this object returns the storage + type of the policy rule. Writing to this object can + change the storage type of the particular row from + volatile(2) to nonVolatile(3) or vice versa. + + Attempts to set this object to permanent will always + fail with an 'inconsistentValue' error. Note that this + error code is SNMP specific. If the MIB module is used + with other protocols than SNMP, errors with similar + semantics specific to those protocols should be + returned. + + If midcomRuleStorageType has the value permanent(4), + then all objects in this row whose MAX-ACCESS value + is read-create must be read-only." + + + + DEFVAL { volatile } + ::= { midcomRuleEntry 6 } + +midcomRuleStorageTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object specifies how long this row + can exist in the midcomRuleTable after the + midcomRuleOperStatus switched to a termination state or + to an error state. This object returns the remaining + time that the row may exist before it is aged out. + + After expiration or termination of the context, the value + of this object ticks backwards. The entry in the + midcomRuleTable is destroyed when the value reaches 0. + + The value of this object may be set in order to increase + or reduce the remaining time that the row may exist. + Setting the value to 0 will destroy this entry as soon as + the midcomRuleOperStatus switched to a termination state + or to an error state. + + Note that there is no guarantee that the row is stored as + long as this object indicates. At any time, the MIDCOM- + MIB implementation may decide to remove a row describing + a terminated policy rule before the storage time of the + corresponding row in the midcomRuleTable reaches the + value of 0. In this case, the information stored in this + row is not available anymore. + + If object midcomRuleStorageType indicates that the policy + rule has the storage type permanent(4), then this object has + a constant value of 4294967295." + DEFVAL { 0 } + ::= { midcomRuleEntry 7 } + +midcomRuleError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a descriptive error message if + the transition into the operational status reserved(7) + or enabled(8) failed. Implementations must reset the + error message to a zero-length string when a new + + + + attempt to change the policy rule status to reserved(7) + or enabled(8) is started. + + RECOMMENDED values to be returned in particular cases + include + - 'lack of IP addresses' + - 'lack of port numbers' + - 'lack of resources' + - 'specified NAT interface does not exist' + - 'specified NAT interface does not support NAT' + - 'conflict with already existing policy rule' + - 'no internal IP wildcarding allowed' + - 'no external IP wildcarding allowed' + + The semantics of these error messages and the corresponding + behavior of the MIDCOM-MIB implementation are specified + in sections 2.3.9 and 2.3.10 of RFC 3989." + REFERENCE + "RFC 3989, sections 2.3.9 and 2.3.10" + DEFVAL { ''H } + ::= { midcomRuleEntry 8 } + +midcomRuleInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the IP interface for which + enforcement of a policy rule is requested or performed, + respectively. + + The interface is identified by its index in the ifTable + (see IF-MIB in RFC 2863). If the object has a value of 0, + then no particular interface is indicated. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to request its preference + concerning the interface at which it requests NAT service. + The default value of 0 indicates that the manager does not + have a preferred interface or does not have sufficient + topology information for specifying one. Writing to this + object in any state other than newEntry(1) or setting(2) + will always fail with an 'inconsistentValue' error. + + + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object indicates + the interface at which NAT service for this rule is + performed. If NAT service is not required for enforcing + the policy rule, then the value of this object is 0. Also, + if the MIDCOM-MIB implementation cannot indicate an + interface, because it does not have this information or + because NAT service is not offered at a particular single + interface, then the value of the object is 0. + + Note that the index of a particular interface in the + ifTable may change after a re-initialization of the + middlebox, for example, after adding another interface to + it. In such a case, the value of this object may change, + but the interface referred to by the MIDCOM-MIB MUST still + be the same. If, after a re-initialization of the + middlebox, the interface referred to before + re-initialization cannot be uniquely mapped anymore to a + particular entry in the ifTable, then the value of object + midcomRuleOperStatus of the same entry MUST be changed to + terminated(11). + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 0 } + ::= { midcomRuleEntry 9 } + +midcomRuleFlowDirection OBJECT-TYPE + SYNTAX INTEGER { + inbound(1), + outbound(2), + biDirectional(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter specifies the direction of enabled + communication, either inbound(1), outbound(2), or + biDirectional(3). + + The semantics of this object depends on the protocol + the rule relates to. If the rule is independent of + + + + the transport protocol (midcomRuleTransportProtocol + has a value of 0) or if the transport protocol is UDP, + then the value of midcomRuleFlowDirection indicates + the direction of packets traversing the middlebox. + + In this case, value inbound(1) indicates that packets + are traversing from outside to inside, value outbound(2) + indicates that packets are traversing from inside to + outside. For both values, inbound(1) and outbound(2) + packets can traverse the middlebox only unidirectional. + A bidirectional flow is indicated by value + biDirectional(3). + + If the transport protocol is TCP, the packet flow is + always bidirectional, but the value of + midcomRuleFlowDirection indicates that: + + - inbound(1): bidirectional TCP packet flow. + First packet, with TCP SYN flag set, must arrive + at an outside interface of the middlebox. + + - outbound(2): bidirectional TCP packet flow. + First packet, with TCP SYN flag set, must arrive + at an inside interface of the middlebox. + + - biDirectional(3): bidirectional TCP packet flow. + First packet, with TCP SYN flag set, may arrive + at an inside or an outside interface of the middlebox. + + This object is used as input to a request for + establishing a policy enable rule as well as for + indicating the properties of an established policy rule. + + If object midcomRuleOperStatus of the same entry has a + value of either newEntry(1), setting(2), or reserved(7), + then this object can be written by a manager in order to + specify a requested direction to be enabled by a policy + rule. Writing to this object in any state other than + newEntry(1), setting(2), or reserved(7) will always fail + with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object indicates the enabled + + + + flow direction. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { outbound } + ::= { midcomRuleEntry 10 } + +midcomRuleMaxIdleTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum idle time of the policy rule in seconds. + + If no packet to which the policy rule applies passes the + middlebox for the specified midcomRuleMaxIdleTime, then + the policy rule enters the termination state timedOut(9). + + A value of 0 indicates that the policy does not require + an individual idle time and that instead, a default idle + time chosen by the middlebox is used. + + A value of 4294967295 ( = 2^32 - 1 ) indicates that the + policy does not time out if it is idle. + + This object is used as input to a request for + establishing a policy enable rule as well as for + indicating the properties of an established policy rule. + + If object midcomRuleOperStatus of the same entry has a + value of either newEntry(1), setting(2), or reserved(7), + then this object can be written by a manager in order to + specify a maximum idle time for the policy rule to be + requested. Writing to this object in any state others + than newEntry(1), setting(2), or reserved(7) will always + fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object indicates the maximum + idle time of the policy rule. Note that even if a maximum + idle time greater than zero was requested, the middlebox + + + + may not be able to support maximum idle times and set the + value of this object to zero when entering state + enabled(8). + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 0 } + ::= { midcomRuleEntry 11 } + +midcomRuleTransportProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The transport protocol. + + Valid values for midcomRuleTransportProtocol + other than zero are defined at: + http://www.iana.org/assignments/protocol-numbers + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has a + value of either newEntry(1) or setting(2), then this + object can be written by a manager in order to specify a + requested transport protocol. If translation of an IP + address only is requested, then this object must have the + default value 0. Writing to this object in any state + other than newEntry(1) or setting(2) will always fail + with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object + indicates which transport protocol is enforced by this + policy rule. A value of 0 indicates a rule acting on IP + addresses only. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + + + + DEFVAL { 0 } + ::= { midcomRuleEntry 12 } + +midcomRulePortRange OBJECT-TYPE + SYNTAX INTEGER { + single(1), + pair(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The range of port numbers. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. It is relevant to the + operation of the MIDCOM-MIB implementation only if the + value of object midcomTransportProtocol in the same entry + has a value other than 0. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the requested + size of the port range. With single(1) just a single + port number is requested, with pair(2) a consecutive pair + of port numbers is requested with the lower number being + even. Requesting a consecutive pair of port numbers may + be used by RTP [RFC3550] and may even be required to + support older RTP applications. + + Writing to this object in any state other than + newEntry(1), setting(2) or reserved(7) will always fail + with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has a + value of either reserved(7) or enabled(8), then this + object will have the value that it had before the + transition to this state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { single } + + + + ::= { midcomRuleEntry 13} + +midcomRuleInternalIpVersion OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "IP version of the internal address (A0) and the inside + address (A1). Allowed values are ipv4(1), ipv6(2), + ipv4z(3), and ipv6z(4). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the IP version + required at the inside of the middlebox. Writing to this + object in any state other than newEntry(1) or setting(2) + will always fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object + indicates the internal/inside IP version. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { ipv4 } + ::= { midcomRuleEntry 14 } + +midcomRuleExternalIpVersion OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "IP version of the external address (A3) and the outside + address (A2). Allowed values are ipv4(1) and ipv6(2). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the IP version + required at the outside of the middlebox. Writing to + this object in any state other than newEntry(1) or + setting(2) will always fail with an 'inconsistentValue' + error. + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object + indicates the external/outside IP version. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7) or + enabled(8), then the value of this object is irrelevant." + DEFVAL { ipv4 } + ::= { midcomRuleEntry 15 } + +midcomRuleInternalIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The internal IP address (A0). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the internal IP + address for which a reserve policy rule or a enable policy + rule is requested to be established. Writing to this + object in any state other than newEntry(1) or setting(2) + will always fail with an 'inconsistentValue' error. + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object will + have the value which it had before the transition to this + + + + state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7) or + enabled(8), then the value of this object is irrelevant." + ::= { midcomRuleEntry 16 } + +midcomRuleInternalIpPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The prefix length of the internal IP address used for + wildcarding. A value of 0 indicates a full wildcard; + in this case, the value of midcomRuleInternalIpAddr is + irrelevant. If midcomRuleInternalIpVersion has a value + of ipv4(1), then a value > 31 indicates no wildcarding + at all. If midcomRuleInternalIpVersion has a value + of ipv4(2), then a value > 127 indicates no wildcarding + at all. A MIDCOM-MIB implementation that does not + support IP address wildcarding MUST implement this object + as read-only with a value of 128. A MIDCOM that does + not support wildcarding based on prefix length MAY + restrict allowed values for this object to 0 and 128. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the prefix length + of the internal IP address for which a reserve policy rule + or an enable policy rule is requested to be established. + Writing to this object in any state other than newEntry(1) + or setting(2) will always fail with an 'inconsistentValue' + error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object will + have the value which it had before the transition to this + state. + + + + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 128 } + ::= { midcomRuleEntry 17 } + +midcomRuleInternalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The internal port number. A value of 0 is a wildcard. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. It is relevant to the + operation of the MIDCOM-MIB implementation only if the + value of object midcomTransportProtocol in the same entry + has a value other than 0. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1) or setting(2), then this object can be + written by a manager in order to specify the internal port + number for which a reserve policy rule or an enable policy + rule is requested to be established. Writing to this + object in any state other than newEntry(1) or setting(2) + will always fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value reserved(7) or enabled(8), then this object will + have the value that it had before the transition to this + state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 0 } + ::= { midcomRuleEntry 18 } + +midcomRuleExternalIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The external IP address (A3). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1), setting(2), or reserved(7), then this + object can be written by a manager in order to specify the + external IP address for which an enable policy rule is + requested to be established. Writing to this object in + any state other than newEntry(1), setting(2), or reserved(7) + will always fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object will have the value + that it had before the transition to this state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + ::= { midcomRuleEntry 19 } + +midcomRuleExternalIpPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The prefix length of the external IP address used for + wildcarding. A value of 0 indicates a full wildcard; + in this case, the value of midcomRuleExternalIpAddr is + irrelevant. If midcomRuleExternalIpVersion has a value + of ipv4(1), then a value > 31 indicates no wildcarding + at all. If midcomRuleExternalIpVersion has a value + of ipv4(2), then a value > 127 indicates no wildcarding + at all. A MIDCOM-MIB implementation that does not + support IP address wildcarding MUST implement this object + as read-only with a value of 128. A MIDCOM that does + not support wildcarding based on prefix length MAY + restrict allowed values for this object to 0 and 128. + + This object is used as input to a request for establishing + + + + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1), setting(2), or reserved(7), then this + object can be written by a manager in order to specify the + prefix length of the external IP address for which an + enable policy rule is requested to be established. + Writing to this object in any state other than + newEntry(1), setting(2), or reserved(7) will always fail + with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object will have the value + that it had before the transition to this state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 128 } + ::= { midcomRuleEntry 20 } + +midcomRuleExternalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The external port number. A value of 0 is a wildcard. + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. It is relevant to the + operation of the MIDCOM-MIB implementation only if the + value of object midcomTransportProtocol in the same entry + has a value other than 0. + + If object midcomRuleOperStatus of the same entry has the + value newEntry(1), setting(2) or reserved(7), then this + object can be written by a manager in order to specify the + external port number for which an enable policy rule is + requested to be established. Writing to this object in + any state other than newEntry(1), setting(2) or reserved(7) + will always fail with an 'inconsistentValue' error. + + + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has the + value enabled(8), then this object will have the value + which it had before the transition to this state. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7) or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 0 } + ::= { midcomRuleEntry 21 } + +midcomRuleInsideIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The inside IP address at the middlebox (A1). + + The value of this object is relevant only if + object midcomRuleOperStatus of the same entry has + a value of either reserved(7) or enabled(8)." + ::= { midcomRuleEntry 22 } + +midcomRuleInsidePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The inside port number at the middlebox. + A value of 0 is a wildcard. + + The value of this object is relevant only if + object midcomRuleOperStatus of the same entry has + a value of either reserved(7) or enabled(8)." + ::= { midcomRuleEntry 23 } + +midcomRuleOutsideIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The outside IP address at the middlebox (A2). + + The value of this object is relevant only if + + + + object midcomRuleOperStatus of the same entry has + a value of either reserved(7) or enabled(8)." + ::= { midcomRuleEntry 24 } + +midcomRuleOutsidePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The outside port number at the middlebox. + A value of 0 is a wildcard. + + The value of this object is relevant only if + object midcomRuleOperStatus of the same entry has + a value of either reserved(7) or enabled(8)." + ::= { midcomRuleEntry 25 } + +midcomRuleLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The remaining lifetime in seconds of this policy rule. + + Lifetime of a policy rule starts when object + midcomRuleOperStatus in the same entry enters either + state reserved(7) or state enabled(8). + + This object is used as input to a request for establishing + a policy rule as well as for indicating the properties of + an established policy rule. + + If object midcomRuleOperStatus of the same entry has a + value of either newEntry(1) or setting(2), then this + object can be written by a manager in order to specify + the requested lifetime of a policy rule to be established. + + If object midcomRuleOperStatus of the same entry has a + value of either reserved(7) or enabled(8), then this + object indicates the (continuously decreasing) remaining + lifetime of the established policy rule. Note that when + entering state reserved(7) or enabled(8), the MIDCOM-MIB + implementation can choose a lifetime shorter than the one + requested. + + Unlike other parameters of the policy rule, this parameter + can still be written in state reserved(7) and enabled(8). + + + + Writing to this object is processed by the MIDCOM-MIB + implementation by choosing a lifetime value that is + greater than 0 and less than or equal to the minimum of + the requested value and the value specified by object + midcomConfigMaxLifetime: + + 0 <= lt_granted <= MINIMUM(lt_requested, lt_maximum) + + where: + - lt_granted is the actually granted lifetime by the + MIDCOM-MIB implementation + - lt_requested is the requested lifetime of the MIDCOM + client + - lt_maximum is the value of object + midcomConfigMaxLifetime + + SNMP SET requests to this object may be rejected or the + value of the object after an accepted SET operation may be + less than the value that was contained in the SNMP SET + request. + + Successfully writing a value of 0 terminates the policy + rule. Note that after a policy rule is terminated, still + the entry will exist as long as indicated by the value of + midcomRuleStorageTime. + + Writing to this object in any state other than + newEntry(1), setting(2), reserved(7), or enabled(7) + will always fail with an 'inconsistentValue' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + If object midcomRuleOperStatus of the same entry has a + value other than newEntry(1), setting(2), reserved(7), or + enabled(8), then the value of this object is irrelevant." + DEFVAL { 180 } + ::= { midcomRuleEntry 26 } + +midcomRuleRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + + + Entries can also be removed from this table by setting + objects midcomRuleLifetime and midcomRuleStorageTime of + an entry to 0. + + Attempts to set a row notInService(2) where the value + of the midcomRuleStorageType object is permanent(4) or + readOnly(5) will result in an 'notWritable' error. + + Note that this error code is SNMP specific. If the MIB + module is used with other protocols than SNMP, errors with + similar semantics specific to those protocols should be + returned. + + The value of this object has no effect on whether other + objects in this conceptual row can be modified." + ::= { midcomRuleEntry 27 } + +-- +-- Policy rule group subtree +-- +-- The midcomGroupTable lists all current policy rule groups. +-- + +midcomGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists all current policy rule groups. + + Entries in this table are created or removed + implicitly when entries in the midcomRuleTable are + created or removed, respectively. A group entry + in this table only exists as long as there are + member rules of this group in the midcomRuleTable. + + The table serves for listing the existing groups and + their remaining lifetimes and for changing lifetimes + of groups and implicitly of all group members. + Groups and all their member policy rules can only be + deleted by deleting all member policies in the + midcomRuleTable. + + Setting midcomGroupLifetime will result in setting + the lifetime of all policy members to the same value." + ::= { midcomTransaction 4 } + +midcomGroupEntry OBJECT-TYPE + + + + SYNTAX MidcomGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing properties of a particular + MIDCOM policy rule group." + INDEX { midcomRuleOwner, midcomGroupIndex } + ::= { midcomGroupTable 1 } + +MidcomGroupEntry ::= SEQUENCE { + midcomGroupIndex Unsigned32, + midcomGroupLifetime Unsigned32 +} + +midcomGroupIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of this group for the midcomRuleOwner. + A group is identified by the combination of + midcomRuleOwner and midcomGroupIndex. + + The value of this index must be unique per + midcomRuleOwner." + ::= { midcomGroupEntry 2 } + +midcomGroupLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When retrieved, this object delivers the maximum + lifetime in seconds of all member rules of this group, + i.e., of all rows in the midcomRuleTable that have the + same values for midcomRuleOwner and midcomGroupIndex. + + Successfully writing to this object modifies the + lifetime of all member policies. Successfully + writing a value of 0 terminates all member policies + and implicitly deletes the group as soon as all member + entries are removed from the midcomRuleTable. + + Note that after a group's lifetime is expired or is + set to 0, still the corresponding entry in the + midcomGroupTable will exist as long as terminated + member policy rules are stored as entries in the + + + + midcomRuleTable. + + Writing to this object is processed by the MIDCOM-MIB + implementation by choosing a lifetime value that is + greater than 0 and less than or equal to the minimum of + the requested value and the value specified by object + midcomConfigMaxLifetime: + + 0 <= lt_granted <= MINIMUM(lt_requested, lt_maximum) + + where: + - lt_granted is the actually granted lifetime by the + MIDCOM-MIB implementation + - lt_requested is the requested lifetime of the MIDCOM + client + - lt_maximum is the value of object + midcomConfigMaxLifetime + + SNMP SET requests to this object may be rejected or the + value of the object after an accepted SET operation may be + less than the value that was contained in the SNMP SET + request." + ::= { midcomGroupEntry 3 } + +-- +-- Configuration Objects +-- +-- Configuration objects that can be used for retrieving +-- middlebox capability information (mandatory) and for +-- setting parameters of the implementation of transaction +-- objects (optional). +-- +-- Note that typically configuration objects are not intended +-- to be written by MIDCOM clients. In general, write access +-- to these objects needs to be restricted more strictly than +-- write access to transaction objects. +-- + +-- +-- Capabilities subtree +-- +-- This subtree contains objects to which MIDCOM clients should +-- have read access. +-- + +midcomConfigMaxLifetime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When retrieved, this object returns the maximum lifetime, + in seconds, that this middlebox allows policy rules to + have." + ::= { midcomConfig 1 } + +midcomConfigPersistentRules OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When retrieved, this object returns true(1) if the + MIDCOM-MIB implementation can store policy rules + persistently. Otherwise, it returns false(2). + + A value of true(1) indicates that there may be + entries in the midcomRuleTable with object + midcomRuleStorageType set to value nonVolatile(3)." + ::= { midcomConfig 2 } + +midcomConfigIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomConfigIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table indicates capabilities of the MIDCOM-MIB + implementation per IP interface. + + The table is indexed by the object midcomConfigIfIndex. + + For indexing a single interface, this object contains + the value of the ifIndex object that is associated + with the interface. If an entry with + midcomConfigIfIndex = 0 occurs, then bits set in + objects of this entry apply to all interfaces for which + there is no entry in this table with the interface's + index." + ::= { midcomConfig 3 } + +midcomConfigIfEntry OBJECT-TYPE + SYNTAX MidcomConfigIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing the capabilities of a middlebox + with respect to the indexed IP interface." + + + + INDEX { midcomConfigIfIndex } + ::= { midcomConfigIfTable 1 } + +MidcomConfigIfEntry ::= SEQUENCE { + midcomConfigIfIndex InterfaceIndexOrZero, + midcomConfigIfBits BITS, + midcomConfigIfEnabled TruthValue +} + +midcomConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of an entry in the midcomConfigIfTable. + + For values different from zero, this object + identifies an IP interface by containing the same + value as the ifIndex object associated with the + interface. + + Note that the index of a particular interface in the + ifTable may change after a re-initialization of the + middlebox, for example, after adding another interface to + it. In such a case, the value of this object may change, + but the interface referred to by the MIDCOM-MIB MUST still + be the same. If, after a re-initialization of the + middlebox, the interface referred to before + re-initialization cannot be uniquely mapped anymore to a + particular entry in the ifTable, then the value of object + midcomConfigIfEnabled of the same entry MUST be changed to + false(2). + + If the object has a value of 0, then values + specified by further objects of the same entry + apply to all interfaces for which there is no + explicit entry in the midcomConfigIfTable." + ::= { midcomConfigIfEntry 1 } + +midcomConfigIfBits OBJECT-TYPE + SYNTAX BITS { + ipv4(0), + ipv6(1), + addressWildcards(2), + portWildcards(3), + firewall(4), + nat(5), + portTranslation(6), + + + + protocolTranslation(7), + twiceNat(8), + inside(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When retrieved, this object returns a set of bits + indicating the capabilities (or configuration) of + the middlebox with respect to the referenced IP interface. + If the index equals 0, then all set bits apply to all + interfaces. + + If the ipv4(0) bit is set, then the middlebox supports + IPv4 at the indexed IP interface. + + If the ipv6(1) bit is set, then the middlebox supports + IPv6 at the indexed IP interface. + + If the addressWildcards(2) bit is set, then the + middlebox supports IP address wildcarding at the indexed + IP interface. + + If the portWildcards(3) bit is set, then the + middlebox supports port wildcarding at the indexed + IP interface. + + If the firewall(4) bit is set, then the middlebox offers + firewall functionality at the indexed interface. + + If the nat(5) bit is set, then the middlebox offers + network address translation service at the indexed + interface. + + If the portTranslation(6) bit is set, then the middlebox + offers port translation service at the indexed interface. + This bit is only relevant if nat(5) is set. + + If the protocolTranslation(7) bit is set, then the + middlebox offers protocol translation service between + IPv4 and IPv6 at the indexed interface. This bit is only + relevant if nat(5) is set. + + If the twiceNat(8) bit is set, then the middlebox offers + twice network address translation service at the indexed + interface. This bit is only relevant if nat(5) is set. + + If the inside(9) bit is set, then the indexed interface is + + + + an inside interface with respect to NAT functionality. + Otherwise, it is an outside interface. This bit is only + relevant if nat(5) is set. An SNMP agent supporting both + the MIDCOM-MIB module and the NAT-MIB module SHOULD ensure + that the value of this object is consistent with the values + of corresponding objects in the NAT-MIB module." + ::= { midcomConfigIfEntry 2 } + +midcomConfigIfEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object indicates the availability of + the middlebox service described by midcomConfigIfBits + at the indexed IP interface. + + By writing to this object, the MIDCOM support for the + entire IP interface can be switched on or off. Setting + this object to false(2) immediately stops middlebox + support at the indexed IP interface. This implies that + all policy rules that use NAT or firewall resources at + the indexed IP interface are terminated immediately. + In this case, the MIDCOM agent MUST send + midcomUnsolicitedRuleEvent to all MIDCOM clients that + have access to one of the terminated rules." + DEFVAL { true } + ::= { midcomConfigIfEntry 3 } + +-- +-- Firewall subtree +-- +-- This subtree contains the firewall configuration table +-- + +midcomConfigFirewallTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomConfigFirewallEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists the firewall configuration per IP interface. + + It can be used for configuring how policy rules created by + MIDCOM clients are realized as firewall rules of a firewall + implementation. Particularly, the priority used for MIDCOM + policy rules can be configured. For a single firewall + implementation at a particular IP interface, all MIDCOM + policy rules are realized as firewall rules with the same + + + + priority. Also, a firewall rule group name can be + configured. + + The table is indexed by the object midcomConfigFirewallIndex. + For indexing a single interface, this object contains the + value of the ifIndex object that is associated with the + interface. If an entry with midcomConfigFirewallIndex = 0 + occurs, then bits set in objects of this entry apply to all + interfaces for which there is no entry in this table for the + interface's index." + ::= { midcomConfig 4 } + +midcomConfigFirewallEntry OBJECT-TYPE + SYNTAX MidcomConfigFirewallEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular set of + firewall resources." + INDEX { midcomConfigFirewallIndex } + ::= { midcomConfigFirewallTable 1 } + +MidcomConfigFirewallEntry ::= SEQUENCE { + midcomConfigFirewallIndex InterfaceIndexOrZero, + midcomConfigFirewallGroupId SnmpAdminString, + midcomConfigFirewallPriority Unsigned32 +} + +midcomConfigFirewallIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of an entry in the midcomConfigFirewallTable. + + For values different from 0, this object identifies an + IP interface by containing the same value as the ifIndex + object associated with the interface. + + Note that the index of a particular interface in the + ifTable may change after a re-initialization of the + middlebox, for example, after adding another interface to + it. In such a case, the value of this object may change, + but the interface referred to by the MIDCOM-MIB MUST still + be the same. If, after a re-initialization of the + middlebox, the interface referred to before + re-initialization cannot be uniquely mapped anymore to a + particular entry in the ifTable, then the entry in the + + + + midcomConfigFirewallTable MUST be deleted. + + If the object has a value of 0, then values specified by + further objects of the same entry apply to all interfaces + for which there is no explicit entry in the + midcomConfigFirewallTable." + ::= { midcomConfigFirewallEntry 1 } + +midcomConfigFirewallGroupId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The firewall rule group to which all firewall rules are + assigned that the MIDCOM server creates for the interface + indicated by object midcomConfigFirewallIndex. If the + value of object midcomConfigFirewallIndex is 0, then all + firewall rules of the MIDCOM server that are created for + interfaces with no specific entry in the + midcomConfigFirewallTable are assigned to the firewall + rule group indicated by the value of this object." + ::= { midcomConfigFirewallEntry 2 } + +midcomConfigFirewallPriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The priority assigned to all firewall rules that the + MIDCOM server creates for the interface indicated by + object midcomConfigFirewallIndex. If the value of object + midcomConfigFirewallIndex is 0, then this priority is + assigned to all firewall rules of the MIDCOM server that + are created for interfaces for which there is no specific + entry in the midcomConfigFirewallTable." + ::= { midcomConfigFirewallEntry 3 } + +-- +-- Monitoring Objects +-- +-- Monitoring objects are structured into two groups, +-- the midcomResourceGroup providing information about used +-- resources and the midcomStatisticsGroup providing information +-- about MIDCOM transaction statistics. + +-- +-- Resources subtree +-- + + + +-- The MIDCOM resources subtree contains a set of managed +-- objects describing the currently used resources of NAT +-- and firewall implementations. +-- + +-- +-- Textual conventions for objects of the resource subtree +-- + +MidcomNatBindMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indicator of the kind of NAT resources used by a policy + rule. This definition corresponds to the definition of + NatBindMode in the NAT-MIB (RFC 4008). Value none(3) can + be used to indicate that the policy rule does not use + any NAT binding. + " + SYNTAX INTEGER { + addressBind(1), + addressPortBind(2), + none(3) + } + +MidcomNatSessionIdOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique ID that is assigned to each NAT session by + a NAT implementation. This definition corresponds to + the definition of NatSessionId in the NAT-MIB (RFC 4008). + Value 0 can be used to indicate that the policy rule does + not use any NAT binding." + SYNTAX Unsigned32 + +-- +-- The MIDCOM resource table +-- + +midcomResourceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MidcomResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists all used middlebox resources per + MIDCOM policy rule. + + The midcomResourceTable augments the + + + + midcomRuleTable." + ::= { midcomMonitoring 1 } + +midcomResourceEntry OBJECT-TYPE + SYNTAX MidcomResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular set of middlebox + resources." + AUGMENTS { midcomRuleEntry } + ::= { midcomResourceTable 1 } + +MidcomResourceEntry ::= SEQUENCE { + midcomRscNatInternalAddrBindMode MidcomNatBindMode, + midcomRscNatInternalAddrBindId NatBindIdOrZero, + midcomRscNatInsideAddrBindMode MidcomNatBindMode, + midcomRscNatInsideAddrBindId NatBindIdOrZero, + midcomRscNatSessionId1 MidcomNatSessionIdOrZero, + midcomRscNatSessionId2 MidcomNatSessionIdOrZero, + midcomRscFirewallRuleId Unsigned32 +} + +midcomRscNatInternalAddrBindMode OBJECT-TYPE + SYNTAX MidcomNatBindMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this policy rule uses an address + NAT bind or an address-port NAT bind for binding the + internal address. + + If the MIDCOM-MIB module is operated together with + the NAT-MIB module (RFC 4008) then object + midcomRscNatInternalAddrBindMode contains the same + value as the corresponding object + natSessionPrivateSrcEPBindMode of the NAT-MIB module." + ::= { midcomResourceEntry 4 } + +midcomRscNatInternalAddrBindId OBJECT-TYPE + SYNTAX NatBindIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object references to the allocated internal NAT + bind that is used by this policy rule. A NAT bind + describes the mapping of internal addresses to + outside addresses. MIDCOM-MIB implementations can + + + + read this object to learn the corresponding NAT bind + resource for this particular policy rule. + + If the MIDCOM-MIB module is operated together with + the NAT-MIB module (RFC 4008) then object + midcomRscNatInternalAddrBindId contains the same + value as the corresponding object + natSessionPrivateSrcEPBindId of the NAT-MIB module." + ::= { midcomResourceEntry 5 } + +midcomRscNatInsideAddrBindMode OBJECT-TYPE + SYNTAX MidcomNatBindMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this policy rule uses an address + NAT bind or an address-port NAT bind for binding the + external address. + + If the MIDCOM-MIB module is operated together with + the NAT-MIB module (RFC 4008), then object + midcomRscNatInsideAddrBindMode contains the same + value as the corresponding object + natSessionPrivateDstEPBindMode of the NAT-MIB module." + ::= { midcomResourceEntry 6 } + +midcomRscNatInsideAddrBindId OBJECT-TYPE + SYNTAX NatBindIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object refers to the allocated external NAT + bind that is used by this policy rule. A NAT bind + describes the mapping of external addresses to + inside addresses. MIDCOM-MIB implementations can + read this object to learn the corresponding NAT bind + resource for this particular policy rule. + + If the MIDCOM-MIB module is operated together with the + NAT-MIB module (RFC 4008), then object + midcomRscNatInsideAddrBindId contains the same + value as the corresponding object + natSessionPrivateDstEPBindId of the NAT-MIB module." + ::= { midcomResourceEntry 7 } + +midcomRscNatSessionId1 OBJECT-TYPE + SYNTAX MidcomNatSessionIdOrZero + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object refers to the first allocated NAT session for + this policy rule. MIDCOM-MIB implementations can read this + object to learn whether or not a NAT session for a + particular policy rule is used. A value of 0 means that no + NAT session is allocated for this policy rule. A value + other than 0 refers to the NAT session." + ::= { midcomResourceEntry 8 } + +midcomRscNatSessionId2 OBJECT-TYPE + SYNTAX MidcomNatSessionIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object refers to the second allocated NAT session for + this policy rule. MIDCOM-MIB implementations can read this + object to learn whether or not a NAT session for a + particular policy rule is used. A value of 0 means that no + NAT session is allocated for this policy rule. A value + other than 0 refers to the NAT session." + ::= { midcomResourceEntry 9 } + +midcomRscFirewallRuleId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object refers to the allocated firewall + rule in the firewall engine for this policy rule. + MIDCOM-MIB implementations can read this value to + learn whether a firewall rule for this particular + policy rule is used or not. A value of 0 means that + no firewall rule is allocated for this policy rule. + A value other than 0 refers to the firewall rule + number within the firewall engine." + ::= { midcomResourceEntry 10 } + +-- +-- Statistics subtree +-- +-- The MIDCOM statistics subtree contains a set of managed +-- objects providing statistics about the usage of transaction +-- objects. +-- + +midcomStatistics OBJECT IDENTIFIER ::= { midcomMonitoring 2 } + + + + +midcomCurrentOwners OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of different values for midcomRuleOwner + for all current entries in the midcomRuleTable." + ::= { midcomStatistics 1 } + +midcomTotalRejectedRuleEntries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of failed attempts to create an entry + in the midcomRuleTable." + ::= { midcomStatistics 2 } + +midcomCurrentRulesIncomplete OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of policy rules that are incomplete. + + Policy rules are loaded via row entries in the + midcomRuleTable. This object counts policy rules that are + loaded but not fully specified, i.e., they are in state + newEntry(1) or setting(2)." + ::= { midcomStatistics 3 } + +midcomTotalIncorrectReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy reserve rules that failed + parameter check and entered state incorrectRequest(4)." + ::= { midcomStatistics 4 } + +midcomTotalRejectedReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy reserve rules that failed + while being processed and entered state requestRejected(6)." + ::= { midcomStatistics 5 } + + + +midcomCurrentActiveReserveRules OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active policy reserve rules." + ::= { midcomStatistics 6 } + +midcomTotalExpiredReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of expired policy reserve rules + (entered termination state timedOut(9))." + ::= { midcomStatistics 7 } + +midcomTotalTerminatedOnRqReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy reserve rules that were + terminated on request (entered termination state + terminatedOnRequest(10))." + ::= { midcomStatistics 8 } + +midcomTotalTerminatedReserveRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy reserve rules that were + terminated, but not on request (entered termination state + terminated(11))." + ::= { midcomStatistics 9 } + +midcomTotalIncorrectEnableRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy enable rules that failed + parameter check and entered state incorrectRequest(4)." + ::= { midcomStatistics 10 } + +midcomTotalRejectedEnableRules OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy enable rules that failed + while being processed and entered state requestRejected(6)." + ::= { midcomStatistics 11 } +midcomCurrentActiveEnableRules OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active policy enable rules." + ::= { midcomStatistics 12 } + +midcomTotalExpiredEnableRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of expired policy enable rules + (entered termination state timedOut(9))." + ::= { midcomStatistics 13 } + +midcomTotalTerminatedOnRqEnableRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy enable rules that were + terminated on request (entered termination state + terminatedOnRequest(10))." + ::= { midcomStatistics 14 } + +midcomTotalTerminatedEnableRules OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of policy enable rules that were + terminated, but not on request (entered termination state + terminated(11))." + ::= { midcomStatistics 15 } + +-- +-- Notifications. +-- + +midcomUnsolicitedRuleEvent NOTIFICATION-TYPE + + + + OBJECTS { midcomRuleOperStatus, midcomRuleLifetime } + STATUS current + DESCRIPTION + "This notification is generated whenever the value of + midcomRuleOperStatus enters any error state or any + termination state without an explicit trigger by a + MIDCOM client." + ::= { midcomNotifications 1 } + +midcomSolicitedRuleEvent NOTIFICATION-TYPE + OBJECTS { midcomRuleOperStatus, midcomRuleLifetime } + STATUS current + DESCRIPTION + "This notification is generated whenever the value + of midcomRuleOperStatus enters one of the states + {reserved, enabled, any error state, any termination state} + as a result of a MIDCOM agent writing successfully to + object midcomRuleAdminStatus. + + In addition, it is generated when the lifetime of + a rule was changed by successfully writing to object + midcomRuleLifetime." + ::= { midcomNotifications 2 } + +midcomSolicitedGroupEvent NOTIFICATION-TYPE + OBJECTS { midcomGroupLifetime } + STATUS current + DESCRIPTION + "This notification is generated for indicating that the + lifetime of all member rules of the group was changed by + successfully writing to object midcomGroupLifetime. + + Note that this notification is only sent if the lifetime + of a group was changed by successfully writing to object + midcomGroupLifetime. No notification is sent + - if a group's lifetime is changed by writing to object + midcomRuleLifetime of any of its member policies, + - if a group's lifetime expires (in this case, + notifications are sent for all member policies), or + - if the group is terminated by terminating the last + of its member policies without writing to object + midcomGroupLifetime." + ::= { midcomNotifications 3 } + +-- +-- Conformance information +-- + + + + +midcomCompliances OBJECT IDENTIFIER ::= { midcomConformance 1 } +midcomGroups OBJECT IDENTIFIER ::= { midcomConformance 2 } + +-- +-- compliance statements +-- + +-- This is the MIDCOM compliance definition ... + +-- + +midcomCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for implementations of the + MIDCOM-MIB module. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB [RFC2863]." + MODULE -- this module + MANDATORY-GROUPS { + midcomRuleGroup, + midcomNotificationsGroup, + midcomCapabilitiesGroup, + midcomStatisticsGroup + } + GROUP midcomConfigFirewallGroup + DESCRIPTION + "A compliant implementation does not have to implement + the midcomConfigFirewallGroup." + GROUP midcomResourceGroup + DESCRIPTION + "A compliant implementation does not have to implement + the midcomResourceGroup." + OBJECT midcomRuleInternalIpPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return 128 as the value of this object. + A value of 128 means that the function represented by + this option is not supported." + OBJECT midcomRuleExternalIpPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return 128 as the value of this object. + + + + A value of 128 means that the function represented by + this option is not supported." + OBJECT midcomRuleMaxIdleTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. When write access is + not supported, return 0 as the value of this object. + A value of 0 means that the function represented by + this option is not supported." + OBJECT midcomRuleInterface + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigMaxLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigPersistentRules + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigIfEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigFirewallGroupId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT midcomConfigFirewallPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { midcomCompliances 1 } + +midcomRuleGroup OBJECT-GROUP + OBJECTS { + midcomRuleAdminStatus, + midcomRuleOperStatus, + midcomRuleStorageType, + midcomRuleStorageTime, + midcomRuleError, + midcomRuleInterface, + midcomRuleFlowDirection, + midcomRuleMaxIdleTime, + midcomRuleTransportProtocol, + midcomRulePortRange, + midcomRuleInternalIpVersion, + + + + midcomRuleExternalIpVersion, + midcomRuleInternalIpAddr, + midcomRuleInternalIpPrefixLength, + midcomRuleInternalPort, + midcomRuleExternalIpAddr, + midcomRuleExternalIpPrefixLength, + midcomRuleExternalPort, + midcomRuleInsideIpAddr, + midcomRuleInsidePort, + midcomRuleOutsideIpAddr, + midcomRuleOutsidePort, + midcomRuleLifetime, + midcomRuleRowStatus, + midcomGroupLifetime + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + policy rules and policy rule groups." + ::= { midcomGroups 1 } + +midcomCapabilitiesGroup OBJECT-GROUP + OBJECTS { + midcomConfigMaxLifetime, + midcomConfigPersistentRules, + midcomConfigIfBits, + midcomConfigIfEnabled + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the capabilities of a middlebox." + ::= { midcomGroups 2 } + +midcomConfigFirewallGroup OBJECT-GROUP + OBJECTS { + midcomConfigFirewallGroupId, + midcomConfigFirewallPriority + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the firewall rule group and firewall rule priority to + be used by firewalls loaded through MIDCOM." + ::= { midcomGroups 3 } + +midcomResourceGroup OBJECT-GROUP + OBJECTS { + + + + midcomRscNatInternalAddrBindMode, + midcomRscNatInternalAddrBindId, + midcomRscNatInsideAddrBindMode, + midcomRscNatInsideAddrBindId, + midcomRscNatSessionId1, + midcomRscNatSessionId2, + midcomRscFirewallRuleId + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the used NAT and firewall resources." + ::= { midcomGroups 4 } + +midcomStatisticsGroup OBJECT-GROUP + OBJECTS { + midcomCurrentOwners, + midcomTotalRejectedRuleEntries, + midcomCurrentRulesIncomplete, + midcomTotalIncorrectReserveRules, + midcomTotalRejectedReserveRules, + midcomCurrentActiveReserveRules, + midcomTotalExpiredReserveRules, + midcomTotalTerminatedOnRqReserveRules, + midcomTotalTerminatedReserveRules, + midcomTotalIncorrectEnableRules, + midcomTotalRejectedEnableRules, + midcomCurrentActiveEnableRules, + midcomTotalExpiredEnableRules, + midcomTotalTerminatedOnRqEnableRules, + midcomTotalTerminatedEnableRules + } + STATUS current + DESCRIPTION + "A collection of objects providing statistical + information about the MIDCOM server." + ::= { midcomGroups 5 } + + + + + + + + + + + + + + +midcomNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + midcomUnsolicitedRuleEvent, + midcomSolicitedRuleEvent, + midcomSolicitedGroupEvent + } + STATUS current + DESCRIPTION + "The notifications emitted by the midcomMIB." + ::= { midcomGroups 6 } + +END diff --git a/mibs/ietf/MIOX25-MIB b/mibs/ietf/MIOX25-MIB new file mode 100644 index 0000000..b54c0ab --- /dev/null +++ b/mibs/ietf/MIOX25-MIB @@ -0,0 +1,708 @@ +MIOX25-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter, + TimeTicks + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + DisplayString, transmission, + ifIndex + FROM RFC1213-MIB + InstancePointer + FROM RFC1316-MIB + X121Address + FROM RFC1382-MIB + PositiveInteger + FROM RFC1381-MIB; + + -- IP over X.25 MIB + +miox OBJECT IDENTIFIER ::= { transmission 38 } + +mioxPle OBJECT IDENTIFIER ::= { miox 1 } +mioxPeer OBJECT IDENTIFIER ::= { miox 2 } + +-- ########################################################### +-- Ple Table +-- ########################################################### + +-- Systems that implement RFC 1356 must also implement +-- all objects in this group. + +mioxPleTable OBJECT-TYPE + SYNTAX SEQUENCE OF MioxPleEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains information relative to + an interface to an X.25 Packet Level Entity + (PLE)." + ::= { mioxPle 1 } + +mioxPleEntry OBJECT-TYPE + SYNTAX MioxPleEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "These objects manage the encapsulation of + other protocols within X.25." + INDEX { ifIndex } + ::= { mioxPleTable 1 } + +MioxPleEntry ::= SEQUENCE { + mioxPleMaxCircuits + INTEGER, + mioxPleRefusedConnections + Counter, + mioxPleEnAddrToX121LkupFlrs + Counter, + mioxPleLastFailedEnAddr + OCTET STRING, + mioxPleEnAddrToX121LkupFlrTime + TimeTicks, + mioxPleX121ToEnAddrLkupFlrs + Counter, + mioxPleLastFailedX121Address + X121Address, + mioxPleX121ToEnAddrLkupFlrTime + TimeTicks, + mioxPleQbitFailures + Counter, + mioxPleQbitFailureRemoteAddress + X121Address, + mioxPleQbitFailureTime + TimeTicks, + mioxPleMinimumOpenTimer + PositiveInteger, + mioxPleInactivityTimer + PositiveInteger, + mioxPleHoldDownTimer + PositiveInteger, + mioxPleCollisionRetryTimer + PositiveInteger, + mioxPleDefaultPeerId + InstancePointer + } + +mioxPleMaxCircuits OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of X.25 circuits that + can be open at one time for this interface. + A value of zero indicates the interface will + not allow any additional circuits (as it may + soon be shutdown). A value of 2147483647 + allows an unlimited number of circuits." + ::= { mioxPleEntry 1 } + +mioxPleRefusedConnections OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of X.25 calls from a remote + systems to this system that were cleared by + this system. The interface instance should + identify the X.25 interface the call came in + on." + ::= { mioxPleEntry 2 } + +mioxPleEnAddrToX121LkupFlrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a translation from an + Encapsulated Address to an X.121 address + failed to find a corresponding X.121 + address. Encapsulated addresses can be + looked up in the mioxPeerTable or translated + via an algorithm as for the DDN. Addresses + that are successfully recognized do not + increment this counter. Addresses that are + not recognized (reflecting an abnormal + packet delivery condition) increment this + counter. + + If an address translation fails, it may be + difficult to determine which PLE entry + should count the failure. In such cases the + first likely entry in this table should be + selected. Agents should record the failure + even if they are unsure which PLE should be + associated with the failure." + ::= { mioxPleEntry 3 } + +mioxPleLastFailedEnAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2..128)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last Encapsulated address that failed + to find a corresponding X.121 address and + caused mioxPleEnAddrToX121LkupFlrs to be + incremented. The first octet of this object + contains the encapsulation type, the + remaining octets contain the address of that + type that failed. Thus for an IP address, + the length will be five octets, the first + octet will contain 204 (hex CC), and the + last four octets will contain the IP + address. For a snap encapsulation, the + first byte would be 128 (hex 80) and the + rest of the octet string would have the snap + header." + ::= { mioxPleEntry 4 } + +mioxPleEnAddrToX121LkupFlrTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The most recent value of sysUpTime when the + translation from an Encapsulated Address to + X.121 address failed to find a corresponding + X.121 address." + ::= { mioxPleEntry 5 } + + +mioxPleX121ToEnAddrLkupFlrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the translation from an + X.121 address to an Encapsulated Address + failed to find a corresponding Encapsulated + Address. Addresses successfully recognized + by an algorithm do not increment this + counter. This counter reflects the number + of times call acceptance encountered the + abnormal condition of not recognizing the + peer." + ::= { mioxPleEntry 6 } + +mioxPleLastFailedX121Address OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last X.121 address that caused + mioxPleX121ToEnAddrLkupFlrs to increase." + ::= { mioxPleEntry 7 } + +mioxPleX121ToEnAddrLkupFlrTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The most recent value of sysUpTime when the + translation from an X.121 address to an + Encapsulated Address failed to find a + corresponding Encapsulated Address." + ::= { mioxPleEntry 8 } + +mioxPleQbitFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a connection was closed + because of a Q-bit failure." + ::= { mioxPleEntry 9 } + +mioxPleQbitFailureRemoteAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote address of the most recent + (last) connection that was closed because of + a Q-bit failure." + ::= { mioxPleEntry 10 } + +mioxPleQbitFailureTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The most recent value of sysUpTime when a + connection was closed because of a Q-bit + failure. This will also be the last time + that mioxPleQbitFailures was incremented." + ::= { mioxPleEntry 11 } + +mioxPleMinimumOpenTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The minimum time in milliseconds this + interface will keep a connection open before + allowing it to be closed. A value of zero + indicates no timer." + DEFVAL { 0 } + ::= { mioxPleEntry 12 } + +mioxPleInactivityTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The amount of time time in milliseconds + this interface will keep an idle connection + open before closing it. A value of + 2147483647 indicates no timer." + DEFVAL { 10000 } + ::= { mioxPleEntry 13 } + +mioxPleHoldDownTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The hold down timer in milliseconds. This + is the minimum amount of time to wait before + trying another call to a host that was + previously unsuccessful. A value of + 2147483647 indicates the host will not be + retried." + DEFVAL { 0 } + ::= { mioxPleEntry 14 } + +mioxPleCollisionRetryTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Collision Retry Timer in milliseconds. + The time to delay between call attempts when + the maximum number of circuits is exceeded + in a call attempt." + DEFVAL { 0 } + ::= { mioxPleEntry 15 } + + +mioxPleDefaultPeerId OBJECT-TYPE + SYNTAX InstancePointer + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the instance of the index + in the mioxPeerTable for the default + parameters to use with this interface. + + The entry identified by this object may have + a zero length Encapsulation address and a + zero length X.121 address. + + These default parameters are used with + connections to hosts that do not have + entries in the mioxPeerTable. Such + connections occur when using ddn-x25 IP-X.25 + address mapping or when accepting + connections from other hosts not in the + mioxPeerTable. + + The mioxPeerEncTable entry with the same + index as the mioxPeerTable entry specifies + the call encapsulation types this PLE will + accept for peers not in the mioxPeerTable. + If the mioxPeerEncTable doesn't contain any + entries, this PLE will not accept calls from + entries not in the mioxPeerTable." + ::= { mioxPleEntry 16 } + + + +-- ########################################################### +-- Peer Table +-- ########################################################### + +-- Systems that implement RFC 1356 must also implement +-- all objects in this group. + +mioxPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF MioxPeerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains information about the + possible peers this machine may exchange + packets with." + ::= { mioxPeer 1 } + +mioxPeerEntry OBJECT-TYPE + SYNTAX MioxPeerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Per peer information." + INDEX { mioxPeerIndex } + ::= { mioxPeerTable 1 } + + +MioxPeerEntry ::= SEQUENCE { + mioxPeerIndex + PositiveInteger, + mioxPeerStatus + INTEGER, + mioxPeerMaxCircuits + PositiveInteger, + mioxPeerIfIndex + PositiveInteger, + mioxPeerConnectSeconds + Counter, + mioxPeerX25CallParamId + InstancePointer, + mioxPeerEnAddr + OCTET STRING, + mioxPeerX121Address + X121Address, + mioxPeerX25CircuitId + InstancePointer, + mioxPeerDescr + DisplayString + } + +mioxPeerIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index value that distinguished one entry + from another. This index is independent of + any other index." + ::= { mioxPeerEntry 1 } + +-- Systems can claim conformance with this MIB without +-- implementing sets to mioxPeerStatus with a value of +-- clearCall or makeCall. +-- All other defined values must be accepted. +-- Implementors should realize that allowing these values +-- provides richer management, and implementations +-- are encouraged to accept these values. +mioxPeerStatus OBJECT-TYPE + SYNTAX INTEGER { + valid (1), + createRequest (2), + underCreation (3), + invalid (4), + clearCall (5), + makeCall (6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This reports the status of a peer entry. + A value of valid indicates a normal entry + that is in use by the agent. A value of + underCreation indicates a newly created + entry which isn't yet in use because the + creating management station is still setting + values. + + The value of invalid indicates the entry is + no longer in use and the agent is free to + delete the entry at any time. A management + station is also free to use an entry in the + invalid state. + + Entries are created by setting a value of + createRequest. Only non-existent or invalid + entries can be set to createRequest. Upon + receiving a valid createRequest, the agent + will create an entry in the underCreation + state. This object can not be set to a + value of underCreation directly, entries can + only be created by setting a value of + createRequest. Entries that exist in other + than the invalid state can not be set to + createRequest. + + Entries with a value of underCreation are + not used by the system and the management + station can change the values of other + objects in the table entry. Management + stations should also remember to configure + values in the mioxPeerEncTable with the same + peer index value as this peer entry. + + An entry in the underCreation state can be + set to valid or invalid. Entries in the + underCreation state will stay in that state + until 1) the agent times them out, 2) they + are set to valid, 3) they are set to + invalid. If an agent notices an entry has + been in the underCreation state for an + abnormally long time, it may decide the + management station has failed and invalidate + the entry. A prudent agent will understand + that the management station may need to wait + for human input and will allow for that + possibility in its determination of this + abnormally long period. + + Once a management station has completed all + fields of an entry, it will set a value of + valid. This causes the entry to be + activated. + + Entries in the valid state may also be set + to makeCall or clearCall to make or clear + X.25 calls to the peer. After such a set + request the entry will still be in the valid + state. Setting a value of makeCall causes + the agent to initiate an X.25 call request + to the peer specified by the entry. Setting + a value of clearCall causes the agent to + initiate clearing one X.25 call present to + the peer. Each set request will initiate + another call or clear request (up to the + maximum allowed); this means that management + stations that fail to get a response to a + set request should query to see if a call + was in fact placed or cleared before + retrying the request. Entries not in the + valid state can not be set to makeCall or + clearCall. + + The values of makeCall and clearCall provide + for circuit control on devices which perform + Ethernet Bridging using static circuit + assignment without address recognition; + other devices which dynamically place calls + based on destination addresses may reject + such requests. + + An agent that (re)creates a new entry + because of a set with createRequest, should + also (re)create a mioxPeerEncTable entry + with a mioxPeerEncIndex of 1, and a + mioxPeerEncType of 204 (hex CC)." + ::= { mioxPeerEntry 2 } + +mioxPeerMaxCircuits OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of X.25 circuits allowed + to this peer." + DEFVAL { 1 } + ::= { mioxPeerEntry 3 } + +mioxPeerIfIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the ifIndex object for the + interface to X.25 to use to call the peer." + DEFVAL { 1 } + ::= { mioxPeerEntry 4 } + +mioxPeerConnectSeconds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of seconds a call to this peer + was active. This counter will be + incremented by one for every second a + connection to a peer was open. If two calls + are open at the same time, one second of + elapsed real time will results in two + seconds of connect time." + ::= { mioxPeerEntry 5 } + +mioxPeerX25CallParamId OBJECT-TYPE + SYNTAX InstancePointer + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The instance of the index object in the + x25CallParmTable from RFC 1382 for the X.25 + call parameters used to communicate with the + remote host. The well known value {0 0} + indicates no call parameters specified." + DEFVAL { {0 0} } + ::= { mioxPeerEntry 6 } + +mioxPeerEnAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..128)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Encapsulation address of the remote + host mapped by this table entry. A length + of zero indicates the remote IP address is + unknown or unspecified for use as a PLE + default. + + The first octet of this object contains the + encapsulation type, the remaining octets + contain an address of that type. Thus for + an IP address, the length will be five + octets, the first octet will contain 204 + (hex CC), and the last four octets will + contain the IP address. For a snap + encapsulation, the first byte would be 128 + (hex 80) and the rest of the octet string + would have the snap header." + DEFVAL { ''h } + ::= { mioxPeerEntry 7 } + +mioxPeerX121Address OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The X.25 address of the remote host mapped + by this table entry. A zero length string + indicates the X.25 address is unspecified + for use as the PLE default." + DEFVAL { ''h } + ::= { mioxPeerEntry 8 } + +-- Systems can claim conformance to this MIB without +-- implementing sets to mioxPeerX25CircuitId. +-- However systems that use PVCs with RFC1356 +-- are encouraged to implement sets. +mioxPeerX25CircuitId OBJECT-TYPE + SYNTAX InstancePointer + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the instance of the + index for the X.25 circuit open to the peer + mapped by this table entry. The well known + value {0 0} indicates no connection + currently active. For multiple connections, + this identifies the index of a multiplexing + table entry for the connections. This can + only be written to configure use of PVCs + which means the identified circuit table + entry for a write must be a PVC." + DEFVAL { {0 0} } + ::= { mioxPeerEntry 9 } + +mioxPeerDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object returns any identification + information about the peer. An agent may + supply the comment information found in the + configuration file entry for this peer. A + zero length string indicates no information + available." + DEFVAL { ''h } + ::= { mioxPeerEntry 10 } + + + +-- ########################################################### +-- Peer Encapsulation Table +-- ########################################################### + +mioxPeerEncTable OBJECT-TYPE + SYNTAX SEQUENCE OF MioxPeerEncEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains the list of + encapsulations used to communicate with a + peer. This table has two indexes, the first + identifies the peer, the second + distinguishes encapsulation types. + + The first index identifies the corresponding + entry in the mioxPeerTable. The second + index gives the priority of the different + encapsulations. + + The encapsulation types are ordered in + priority order. For calling a peer, the + first entry (mioxPeerEncIndex of 1) is tried + first. If the call doesn't succeed because + the remote host clears the call due to + incompatible call user data, the next entry + in the list is tried. Each entry is tried + until the list is exhausted. + + For answering a call, the encapsulation type + requested by the peer must be found the list + or the call will be refused. If there are + no entries in this table for a peer, all + call requests from the peer will be refused. + + Objects in this table can only be set when + the mioxPeerStatus object with the same + index has a value of underCreation. When + that status object is set to invalid and + deleted, the entry in this table with that + peer index must also be deleted." + ::= { mioxPeer 2 } + +mioxPeerEncEntry OBJECT-TYPE + SYNTAX MioxPeerEncEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Per connection information." + INDEX { mioxPeerIndex, mioxPeerEncIndex} + ::= { mioxPeerEncTable 1 } + +MioxPeerEncEntry ::= SEQUENCE { + mioxPeerEncIndex + PositiveInteger, + mioxPeerEncType + INTEGER + } + +mioxPeerEncIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The second index in the table which + distinguishes different encapsulation + types." + ::= { mioxPeerEncEntry 1 } + +mioxPeerEncType OBJECT-TYPE + SYNTAX INTEGER (0..256) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the encapsulation type. For + IP encapsulation this will have a value of + 204 (hex CC). For SNAP encapsulated + packets, this will have a value of 128 (hex + 80). For CLNP, ISO 8473, this will have a + value of 129 (hex 81). For ES-ES, ISO 9542, + this will have a value of 130 (hex 82). A + value of 197 (hex C5) identifies the Blacker + X.25 encapsulation. A value of 0, + identifies the Null encapsulation. + + This value can only be written when the + mioxPeerStatus object with the same + mioxPeerIndex has a value of underCreation. + Setting this object to a value of 256 + deletes the entry. When deleting an entry, + all other entries in the mioxPeerEncTable + with the same mioxPeerIndex and with an + mioxPeerEncIndex higher then the deleted + entry, will all have their mioxPeerEncIndex + values decremented by one." + ::= { mioxPeerEncEntry 2 } + +-- ########################################################### + +END diff --git a/mibs/ietf/MIP-MIB b/mibs/ietf/MIP-MIB new file mode 100644 index 0000000..bcdf0ba --- /dev/null +++ b/mibs/ietf/MIP-MIB @@ -0,0 +1,2121 @@ + MIP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter32, Gauge32, Integer32, Unsigned32, + IpAddress, mib-2, + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE + FROM SNMPv2-SMI + RowStatus, TruthValue, TimeStamp, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF; + + mipMIB MODULE-IDENTITY + LAST-UPDATED "9606040000Z" + ORGANIZATION "IETF Mobile IP Working Group" + CONTACT-INFO + " David Cong + Postal: Motorola + 1301 E. Algonquin Rd. + Schaumburg, IL 60196 + Phone: +1-847-576-1357 + Email: cong@comm.mot.com" + DESCRIPTION + "The MIB Module for the Mobile IP." + ::= { mib-2 44 } + + mipMIBObjects OBJECT IDENTIFIER ::= { mipMIB 1 } + + -- Groups under mipMIBObjects + + mipSystem OBJECT IDENTIFIER ::= { mipMIBObjects 1 } + mipSecurity OBJECT IDENTIFIER ::= { mipMIBObjects 2 } + mipMN OBJECT IDENTIFIER ::= { mipMIBObjects 3 } + mipMA OBJECT IDENTIFIER ::= { mipMIBObjects 4 } + mipFA OBJECT IDENTIFIER ::= { mipMIBObjects 5 } + mipHA OBJECT IDENTIFIER ::= { mipMIBObjects 6 } + + mnSystem OBJECT IDENTIFIER ::= { mipMN 1 } + mnDiscovery OBJECT IDENTIFIER ::= { mipMN 2 } + mnRegistration OBJECT IDENTIFIER ::= { mipMN 3 } + + maAdvertisement OBJECT IDENTIFIER ::= { mipMA 2 } + + faSystem OBJECT IDENTIFIER ::= { mipFA 1 } + faAdvertisement OBJECT IDENTIFIER ::= { mipFA 2 } + faRegistration OBJECT IDENTIFIER ::= { mipFA 3 } + haRegistration OBJECT IDENTIFIER ::= { mipHA 3 } + + -- Textual convention + + RegistrationFlags ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to define the registration + flags for Mobile IP registration extension: + vjCompression + -- Request to use VJ compression + gre + -- Request to use GRE + minEnc + -- Request to use minimal encapsulation + decapsulationByMN + -- Decapsulation by mobile node + broadcastDatagram + -- Request to receive broadcasts + simultaneoursBindings + -- Request to retain prior binding(s)." + SYNTAX BITS { + vjCompression(0), + gre(1), + minEnc(2), + decapsulationbyMN(3), + broadcastDatagram(4), + simultaneousBindings(5) + } + + -- mipSystem Group + + mipEntities OBJECT-TYPE + SYNTAX BITS { + mobileNode(0), + foreignAgent(1), + homeAgent(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes which Mobile IP entities are + supported by this managed entity. The entity may + support more than one Mobile IP entities. For example, + the entity supports both Foreign Agent (FA) and Home + Agent (HA). Therefore, bit 1 and bit 2 are set to 1 + for this object." + ::= { mipSystem 1 } + + mipEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the Mobile IP protocol should be + enabled for the managed entity. If it is disabled, the + entity should disable both agent discovery and + registration functions." + ::= { mipSystem 2 } + + mipEncapsulationSupported OBJECT-TYPE + SYNTAX BITS { + ipInIp(0), + gre(1), + minEnc(2), + other(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Encapsulation methods supported by the Mobile IP + entity. The entity may support multiple encapsulation + methods or none of them: + ipInIp(0), -- IP Encapsulation within IP + gre(1), -- Generic Routing Encapsulation, + -- refers to RFC1701 + minEnc(2), -- Minimal Encapsulation within IP." + ::= { mipSystem 3 } + + -- mipSecurity Group + + mipSecAssocTable OBJECT-TYPE + SYNTAX SEQUENCE OF MipSecAssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing Mobility Security Associations." + ::= { mipSecurity 1 } + + mipSecAssocEntry OBJECT-TYPE + SYNTAX MipSecAssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "One particular Mobility Security Association." + INDEX { mipSecPeerAddress, mipSecSPI } + ::= { mipSecAssocTable 1 } + + MipSecAssocEntry ::= + SEQUENCE { + mipSecPeerAddress IpAddress, + mipSecSPI Unsigned32, + mipSecAlgorithmType INTEGER, + mipSecAlgorithmMode INTEGER, + mipSecKey OCTET STRING, + mipSecReplayMethod INTEGER + } + + mipSecPeerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the peer entity with which this + node shares the mobility security association." + ::= { mipSecAssocEntry 1 } + + mipSecSPI OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SPI is the 4-byte opaque index within the + Mobility Security Association which selects the + specific security parameters to be used to + authenticate the peer, i.e. the rest of the variables + in this MipSecAssocEntry." + ::= { mipSecAssocEntry 2 } + + mipSecAlgorithmType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + md5(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Type of security algorithm." + ::= { mipSecAssocEntry 3 } + + mipSecAlgorithmMode OBJECT-TYPE + SYNTAX INTEGER { + other(1), + prefixSuffix(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Security mode used by this algorithm." + ::= { mipSecAssocEntry 4 } + + mipSecKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The shared secret key for the security + associations. Reading this object will always return + zero length value." + ::= { mipSecAssocEntry 5 } + + mipSecReplayMethod OBJECT-TYPE + SYNTAX INTEGER { + other(1), + timestamps(2), + nonces(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The replay-protection method supported for this SPI + within this Mobility Security Association." + ::= { mipSecAssocEntry 6 } + + -- Mobile IP security violation total counter + + mipSecTotalViolations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of security violations in the entity" + ::= { mipSecurity 2 } + + -- Mobile IP security violation table + + mipSecViolationTable OBJECT-TYPE + SYNTAX SEQUENCE OF MipSecViolationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about security + violations." + ::= { mipSecurity 3 } + + mipSecViolationEntry OBJECT-TYPE + SYNTAX MipSecViolationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about one particular security violation." + INDEX { mipSecViolatorAddress } + ::= { mipSecViolationTable 1 } + + MipSecViolationEntry ::= + SEQUENCE { + mipSecViolatorAddress IpAddress, + mipSecViolationCounter Counter32, + mipSecRecentViolationSPI Integer32, + mipSecRecentViolationTime TimeStamp, + mipSecRecentViolationIDLow Integer32, + mipSecRecentViolationIDHigh Integer32, + mipSecRecentViolationReason INTEGER + } + + mipSecViolatorAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Violator's IP address. The violator is not necessary + in the mipSecAssocTable." + ::= { mipSecViolationEntry 1 } + + mipSecViolationCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of security violations for this peer." + ::= { mipSecViolationEntry 2 } + + mipSecRecentViolationSPI OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "SPI of the most recent security violation for this + peer. If the security violation is due to an + identification mismatch, then this is the SPI from the + Mobile-Home Authentication Extension. If the security + violation is due to an invalid authenticator, then + this is the SPI from the offending authentication + extension. In all other cases, it should be set to + zero." + ::= { mipSecViolationEntry 3 } + + mipSecRecentViolationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time of the most recent security violation for this + peer." + ::= { mipSecViolationEntry 4 } + + mipSecRecentViolationIDLow OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low-order 32 bits of identification used in request or + reply of the most recent security violation for this + peer." + ::= { mipSecViolationEntry 5 } + + mipSecRecentViolationIDHigh OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High-order 32 bits of identification used in request + or reply of the most recent security violation for + this peer." + ::= { mipSecViolationEntry 6 } + + mipSecRecentViolationReason OBJECT-TYPE + SYNTAX INTEGER { + noMobilitySecurityAssociation(1), + badAuthenticator(2), + badIdentifier(3), + badSPI(4), + missingSecurityExtension(5), + other(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reason for the most recent security violation for + this peer." + ::= { mipSecViolationEntry 7 } + + -- mipMN Group + -- mipSystem Group + + mnState OBJECT-TYPE + SYNTAX INTEGER { + home(1), + registered(2), + pending(3), + isolated(4), + unknown(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates mobile node's state of Mobile IP: + home, + -- MN is connected to home network. + registered, + -- MN has registered on foreign network + pending, + -- MN has sent registration request and is + waiting for the reply + isolated, + -- MN is isolated from network + unknown + -- MN can not determine its state." + ::= { mnSystem 1 } + + mnHomeAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An IP address that is assigned for an extended period + of time to the mobile node. It remains unchanged + regardless of the mobile node's current point of + attachment." + ::= { mnSystem 2 } + + -- Mobile node's home agent list + + mnHATable OBJECT-TYPE + SYNTAX SEQUENCE OF MnHAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing all of the mobile node's potential + home agents." + ::= { mnSystem 3 } + + mnHAEntry OBJECT-TYPE + SYNTAX MnHAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information for a particular Home Agent." + INDEX { mnHAAddress } + ::= { mnHATable 1 } + + MnHAEntry ::= SEQUENCE { + mnHAAddress IpAddress, + mnCurrentHA TruthValue, + mnHAStatus RowStatus + } + + mnHAAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IP address of mobile node's Home Agent." + ::= { mnHAEntry 1 } + + mnCurrentHA OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether this home agent is the current home agent for + the mobile node. If it is true, the mobile node is + registered with that home agent." + ::= { mnHAEntry 2 } + + mnHAStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status for this home agent entry. If the + status is set to 'createAndGo' or 'active', then the + mobile node can use mnHAAddress as a valid candidate + for a home agent. If the status is set to 'destroy', + then the mobile node should delete this row, and + deregister from that home agent." + ::= { mnHAEntry 3 } + + mnFATable OBJECT-TYPE + SYNTAX SEQUENCE OF MnFAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing all foreign agents that the mobile + node knows about and their corresponding COA (care-of + address). This COA is an address of a foreign agent + with which the mobile node is registered. The table is + updated when advertisements are received by the mobile + node. If an advertisement expires, its entry(s) should + be deleted from the table. One foreign agent can + provide more than one COA in its advertisements." + ::= { mnDiscovery 1 } + + mnFAEntry OBJECT-TYPE + SYNTAX MnFAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "One pair of foreign agent IP address and COA for that + foreign agent." + INDEX { mnFAAddress, mnCOA } + ::= { mnFATable 1 } + + MnFAEntry ::= SEQUENCE { + mnFAAddress IpAddress, + mnCOA IpAddress + } + + mnFAAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Foreign agent's IP address." + ::= { mnFAEntry 1 } + + mnCOA OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A care-of address being offered by this foreign agent + or a co-located care-of address which the mobile node + has associated with one of its own network + interfaces." + ::= { mnFAEntry 2 } + + -- Mobile node could store multiple agent advertisements, however, + -- only the most recently received agent advertisement information + -- is required to be made available to the manager station. + + mnRecentAdvReceived OBJECT IDENTIFIER ::= { mnDiscovery 2 } + + mnAdvSourceAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source IP address of the most recently received + Agent Advertisement. This address could be the address + of a home agent or a foreign agent." + ::= { mnRecentAdvReceived 1 } + + mnAdvSequence OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number of the most recently received + advertisement. The sequence number ranges from 0 to + 0xffff. After the sequence number attains the value + 0xffff, it will roll over to 256." + ::= { mnRecentAdvReceived 2 } + + mnAdvFlags OBJECT-TYPE + SYNTAX BITS { + vjCompression(0), + gre(1), + minEnc(2), + foreignAgent(3), + homeAgent(4), + busy(5), + regRequired(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flags are contained in the 7th byte in the + extension of the most recently received mobility agent + advertisement: + vjCompression + -- Agent supports Van Jacobson compression + gre + -- Agent offers Generice Routing Encapsulation + minEnc, + -- Agent offers Minimal Encapsulation + foreignAgent, + -- Agent is a Foreign Agent + homeAgent, + -- Agent is a Home Agent + busy, + -- Foreign Agent is busy + regRequired, + -- FA registration is required." + ::= { mnRecentAdvReceived 3 } + + mnAdvMaxRegLifetime OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The longest lifetime in seconds that the agent is + willing to accept in any registration request." + ::= { mnRecentAdvReceived 4 } + + mnAdvMaxAdvLifetime OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum length of time that the Advertisement is + considered valid in the absence of further + Advertisements." + REFERENCE + "AdvertisementLifeTime in RFC1256." + ::= { mnRecentAdvReceived 5 } + + mnAdvTimeReceived OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the most recently received + advertisement was received." + ::= { mnRecentAdvReceived 6 } + + -- Mobile Node Discovery Group Counter + + mnSolicitationsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Solicitation sent by the mobile + node." + ::= { mnDiscovery 3 } + + mnAdvertisementsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of advertisements received by the mobile + node." + ::= { mnDiscovery 4 } + + mnAdvsDroppedInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of advertisements dropped by the mobile + node due to both poorly formed extensions and + unrecognized extensions with extension number in the + range 0-127." + ::= { mnDiscovery 5 } + + mnAdvsIgnoredUnknownExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of unrecognized extensions in the range + 128-255 that were ignored by the mobile node." + ::= { mnDiscovery 6 } + + mnMoveFromHAToFA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times that the mobile node has decided to + move from its home network to a foreign network." + ::= { mnDiscovery 7 } + + mnMoveFromFAToFA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times that the mobile node has decided to + move from one foreign network to another foreign + network." + ::= { mnDiscovery 8 } + + mnMoveFromFAToHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times that the mobile node has decided to + move from a foreign network to its home network." + ::= { mnDiscovery 9 } + + mnGratuitousARPsSend OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Gratuitous ARPs sent by mobile node + in order to clear out any stale ARP entries in the ARP + caches of nodes on the home network." + ::= { mnDiscovery 10 } + + mnAgentRebootsDectected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of agent reboots detected by the mobile + node through sequence number of the advertisement." + ::= { mnDiscovery 11 } + + -- Mobile Node Registration Group + + -- Registration table of mobile node + + mnRegistrationTable OBJECT-TYPE + SYNTAX SEQUENCE OF MnRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about the mobile + node's attempted registration(s). The mobile node + updates this table based upon Registration Requests + sent and Registration Replies received in response to + these requests. Certain variables within this table + are also updated if when Registration Requests are + retransmitted." + ::= { mnRegistration 1 } + + mnRegistrationEntry OBJECT-TYPE + SYNTAX MnRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about one registration attempt." + INDEX { mnRegAgentAddress, mnRegCOA} + ::= { mnRegistrationTable 1 } + + MnRegistrationEntry ::= SEQUENCE { + mnRegAgentAddress IpAddress, + mnRegCOA IpAddress, + mnRegFlags RegistrationFlags, + mnRegIDLow Integer32, + mnRegIDHigh Integer32, + mnRegTimeRequested Integer32, + mnRegTimeRemaining Gauge32, + mnRegTimeSent TimeStamp, + mnRegIsAccepted TruthValue, + mnCOAIsLocal TruthValue + } + + mnRegAgentAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "IP address of the agent as used in the destination + IP address of the Registration Request. The agent + may be a home agent or a foreign agent." + ::= { mnRegistrationEntry 1 } + + mnRegCOA OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Care-of address for the registration." + ::= { mnRegistrationEntry 2 } + + mnRegFlags OBJECT-TYPE + SYNTAX RegistrationFlags + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Registration flags sent by the mobile node. It is the + second byte in the Mobile IP Registratation Request + message." + ::= { mnRegistrationEntry 3 } + + mnRegIDLow OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low-order 32 bits of the Identification used in that + registration by the mobile node." + ::= { mnRegistrationEntry 4 } + + mnRegIDHigh OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High-order 32 bits of the Identification used in that + registration by the mobile node." + ::= { mnRegistrationEntry 5 } + + mnRegTimeRequested OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the registration is pending, then this is the + lifetime requested by the mobile node (in seconds). + If the registration has been accepted, then this is + the lifetime actually granted by the home agent in the + reply." + ::= { mnRegistrationEntry 6 } + + mnRegTimeRemaining OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining until this + registration expires. It has the same initial value + as mnRegTimeRequested and is only valid if + mnRegIsAccepted is TRUE." + ::= { mnRegistrationEntry 7 } + + mnRegTimeSent OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the last (re-)transmission occured." + ::= { mnRegistrationEntry 8 } + + mnRegIsAccepted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "true(1) if the mobile node has received a + Registration Reply indicating that service has been + accepted; false(2) otherwise. false(2) implies that + the registration is still pending." + ::= { mnRegistrationEntry 9 } + + mnCOAIsLocal OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the COA is local to (dynamically acquired by) + the mobile node or not. If it is false(2), the COA is + an address of the foreign agent." + ::= { mnRegistrationEntry 10 } + + -- Mobile Node Registration Group Counters + + mnRegRequestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration requests sent by the + mobile node. This does not include deregistrations + (those with Lifetime equal to zero)." + ::= { mnRegistration 2 } + + mnDeRegRequestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of deregistration requests sent by the + mobile node (those with Lifetime equal to zero)." + ::= { mnRegistration 3 } + + mnRegRepliesRecieved OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration replies received by the + mobile node in which the Lifetime is greater than + zero." + ::= { mnRegistration 4 } + + mnDeRegRepliesRecieved OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of (de)registration replies received by + the mobile node in which the Lifetime is equal to + zero." + ::= { mnRegistration 5 } + + mnRepliesInvalidHomeAddress OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies with invalid home address for + the mobile node." + ::= { mnRegistration 6 } + + mnRepliesUnknownHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies with unknown home agents + (not in home agent table)." + ::= { mnRegistration 7 } + + mnRepliesUnknownFA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies with unknown foreign agents if + replies relayed through foreign agent." + ::= { mnRegistration 8 } + + mnRepliesInvalidID OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies with invalid Identification + fields." + ::= { mnRegistration 9 } + + mnRepliesDroppedInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies dropped by the + mobile node due to both poorly formed extensions and + unrecognized extensions with extension number in the + range 0-127." + ::= { mnRegistration 10 } + + mnRepliesIgnoredUnknownExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies that contained + one or more unrecognized extensions in the range + 128-255 that were ignored by the mobile node." + ::= { mnRegistration 11 } + + mnRepliesHAAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies without a valid Home Agent to + Mobile Node authenticator." + ::= { mnRegistration 12 } + + mnRepliesFAAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of replies without a valid Foreign Agent + to Mobile Node authenticator." + ::= { mnRegistration 13 } + + mnRegRequestsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration requests accepted by the + mobile node's home agent (Code 0 and Code 1)." + ::= { mnRegistration 14 } + + mnRegRequestsDeniedByHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration requests denied by + mobile node's home agent (Sum of Code 128 through + Code 191)." + ::= { mnRegistration 15 } + + mnRegRequestsDeniedByFA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of registration requests denied by the + foreign agent (Sum of Codes 64 through Code 127)." + ::= { mnRegistration 16 } + + mnRegRequestsDeniedByHADueToID OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Request denied by home + agent due to identification mismatch." + ::= { mnRegistration 17 } + + mnRegRequestsWithDirectedBroadcast OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests sent by mobile + node with a directed broadcast address in the home + agent field." + ::= { mnRegistration 18 } + + -- MA Advertisement Group + + -- Mobility agent advertisement configuration table + + maAdvConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF MaAdvConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configurable advertisement + parameters for all advertisement interfaces in + the mobility agent." + ::= { maAdvertisement 1 } + + maAdvConfigEntry OBJECT-TYPE + SYNTAX MaAdvConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Advertisement parameters for one advertisement + interface." + INDEX { maInterfaceAddress } + ::= { maAdvConfigTable 1 } + + MaAdvConfigEntry ::= SEQUENCE { + maInterfaceAddress IpAddress, + maAdvMaxRegLifetime Integer32, + maAdvPrefixLengthInclusion TruthValue, + maAdvAddress IpAddress, + maAdvMaxInterval Integer32, + maAdvMinInterval Integer32, + maAdvMaxAdvLifetime Integer32, + maAdvResponseSolicitationOnly TruthValue, + maAdvStatus RowStatus + } + + maInterfaceAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "IP address for advertisement interface." + ::= { maAdvConfigEntry 1 } + + maAdvMaxRegLifetime OBJECT-TYPE + SYNTAX Integer32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The longest lifetime in seconds that mobility agent + is willing to accept in any Registration Request." + ::= { maAdvConfigEntry 2 } + + maAdvPrefixLengthInclusion OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether the advertisement should include the Prefix- + Lengths Extension. If it is true, all advertisements + sent over this interface should include the + Prefix-Lengths Extension." + ::= { maAdvConfigEntry 3 } + + maAdvAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP destination address to be used for + advertisements sent from the interface. The only + permissible values are the all-systems multicast + address (224.0.0.1) or the limited-broadcast address + (255.255.255.255)." + REFERENCE + "AdvertisementAddress in RFC1256." + ::= { maAdvConfigEntry 4 } + + maAdvMaxInterval OBJECT-TYPE + SYNTAX Integer32 (4..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum time in seconds between successive + transmissions of Agent Advertisements from this + interface." + REFERENCE + "MaxAdvertisementInterval in RFC1256." + ::= { maAdvConfigEntry 5 } + + maAdvMinInterval OBJECT-TYPE + SYNTAX Integer32 (3..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum time in seconds between successive + transmissions of Agent Advertisements from this + interface." + REFERENCE + "MinAdvertisementInterval in RFC1256." + ::= { maAdvConfigEntry 6 } + + maAdvMaxAdvLifetime OBJECT-TYPE + SYNTAX Integer32 (4..9000) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time (in seconds) to be placed in the Lifetime + field of the RFC 1256-portion of the Agent + Advertisements sent over this interface." + REFERENCE + "AdvertisementLifetime in RFC1256." + ::= { maAdvConfigEntry 7 } + + maAdvResponseSolicitationOnly OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The flag indicates whether the advertisement from + that interface should be sent only in response to an + Agent Solicitation message." + DEFVAL { false } + ::= { maAdvConfigEntry 8 } + + maAdvStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status for the agent advertisement table. If + this column status is 'active', the manager should not + change any column in the row." + ::= { maAdvConfigEntry 9 } + + -- MA Advertisement Group Counters + + maAdvertisementsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of advertisements sent by the mobility + agent." + ::= { maAdvertisement 2 } + + maAdvsSentForSolicitation OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of advertisements sent by mobility agent + in response to mobile node solicitations." + ::= { maAdvertisement 3 } + + maSolicitationsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of solicitations received by the + mobility agent." + ::= { maAdvertisement 4 } + + -- Foreign Agent Group + + -- Foreign Agent System Group + + faCOATable OBJECT-TYPE + SYNTAX SEQUENCE OF FaCOAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing all of the care-of addresses + (COAs) supported by the foreign agent. New entries can + be added to the table. The order of entries in the + faCOATAble is also the order in which the COAs are + listed in the Agent Advertisement." + ::= { faSystem 1 } + + faCOAEntry OBJECT-TYPE + SYNTAX FaCOAEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry of COA" + INDEX { faSupportedCOA } + ::= { faCOATable 1 } + + FaCOAEntry ::= + SEQUENCE { + faSupportedCOA IpAddress, + faCOAStatus RowStatus + } + + faSupportedCOA OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Care-of-address supported by this foreign agent." + ::= { faCOAEntry 1 } + + faCOAStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status for COA entry." + ::= { faCOAEntry 2 } + + -- Foreign Agent Advertisement Group + -- FA needs to implement MA Advertisement Group plus that group + + faIsBusy OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether or not the foreign agent is too busy to + accept additional registrations. If true(1), the agent + is busy and any Agent advertisements sent from this + agent should have the 'B' bit set to 1." + ::= { faAdvertisement 1 } + + faRegistrationRequired OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Whether or not this foreign agent requires + registration even from those mobile nodes that have + acquired their own, colocated care-of address. If + true(1), registration is required and any Agent + Advertisements sent from this agent should have the + 'R' bit set to 1." + ::= { faAdvertisement 2 } + + -- Foreign Agent Registration Group + + -- Foreign Agent Visitors List + + faVisitorTable OBJECT-TYPE + SYNTAX SEQUENCE OF FaVisitorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the foreign agent's visitor list. + The foreign agent updates this table in response to + registration events from mobile nodes." + ::= { faRegistration 1 } + + faVisitorEntry OBJECT-TYPE + SYNTAX FaVisitorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information for one visitor." + INDEX { faVisitorIPAddress } + ::= { faVisitorTable 1 } + + FaVisitorEntry ::= SEQUENCE { + faVisitorIPAddress IpAddress, + faVisitorHomeAddress IpAddress, + faVisitorHomeAgentAddress IpAddress, + faVisitorTimeGranted Integer32, + faVisitorTimeRemaining Gauge32, + faVisitorRegFlags RegistrationFlags, + faVisitorRegIDLow Integer32, + faVisitorRegIDHigh Integer32, + faVisitorRegIsAccepted TruthValue + } + + faVisitorIPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source IP address of visitor's Registration Request." + ::= { faVisitorEntry 1 } + + faVisitorHomeAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Home (IP) address of visiting mobile node." + ::= { faVisitorEntry 2 } + + faVisitorHomeAgentAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Home agent IP address for that visiting mobile node." + ::= { faVisitorEntry 3 } + + faVisitorTimeGranted OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime in seconds granted to the mobile node + for this registration. Only valid if + faVisitorRegIsAccepted is true(1)." + ::= { faVisitorEntry 4 } + + faVisitorTimeRemaining OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining until the + registration is expired. It has the same initial value + as faVisitorTimeGranted, and is counted down by the + foreign agent." + ::= { faVisitorEntry 5 } + + faVisitorRegFlags OBJECT-TYPE + SYNTAX RegistrationFlags + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Registration flags sent by mobile node." + ::= { faVisitorEntry 6 } + + faVisitorRegIDLow OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low 32 bits of Identification used in that + registration by the mobile node." + ::= { faVisitorEntry 7 } + + faVisitorRegIDHigh OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High 32 bits of Identification used in that + registration by the mobile node." + ::= { faVisitorEntry 8 } + + faVisitorRegIsAccepted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the registration has been accepted or not. If + it is false(2), this registration is still pending for + reply." + ::= { faVisitorEntry 9 } + + -- Foreign Agent Registration Group Counters + + faRegRequestsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid Registration Requests + received." + ::= { faRegistration 2 } + + faRegRequestsRelayed OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests relayed to home + agent by foreign agent." + ::= { faRegistration 3 } + + faReasonUnspecified OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- reason unspecified (Code 64)." + ::= { faRegistration 4 } + + faAdmProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- administratively prohibited (Code + 65)." + ::= { faRegistration 5 } + + faInsufficientResource OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- insufficient resources (Code 66)." + ::= { faRegistration 6 } + + faMNAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- mobile node failed authentication + (Code 67)." + ::= { faRegistration 7 } + + faRegLifetimeTooLong OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- requested lifetime too long (Code + 69)." + ::= { faRegistration 8 } + + faPoorlyFormedRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- poorly formed request (Code 70)." + ::= { faRegistration 9 } + + faEncapsulationUnavailable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- requested encapsulation unavailable + (Code 72)." + ::= { faRegistration 10 } + + faVJCompressionUnavailable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- requested Van Jacobson header + compression unavailable (Code 73)." + ::= { faRegistration 11 } + + faHAUnreachable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by + foreign agent -- home agent unreachable (Codes + 80-95)." + ::= { faRegistration 12 } + + faRegRepliesRecieved OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of well-formed Registration Replies + received by foreign agent." + ::= { faRegistration 13 } + + faRegRepliesRelayed OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid Registration Replies relayed to + the mobile node by foreign agent." + ::= { faRegistration 14 } + + faHAAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies denied by + foreign agent -- home agent failed authentication + (Code 68)." + ::= { faRegistration 15 } + + faPoorlyFormedReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies denied by + foreign agent -- poorly formed reply (Code 71)." + ::= { faRegistration 16 } + + -- Home Agent Group + + -- Home Agent Registration Group + + -- Home agent mobility binding list + + haMobilityBindingTable OBJECT-TYPE + SYNTAX SEQUENCE OF HaMobilityBindingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing the home agent's mobility binding + list. The home agent updates this table in response + to registration events from mobile nodes." + ::= { haRegistration 1 } + + haMobilityBindingEntry OBJECT-TYPE + SYNTAX HaMobilityBindingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry on the mobility binding list." + INDEX { haMobilityBindingMN, haMobilityBindingCOA } + ::= { haMobilityBindingTable 1 } + + HaMobilityBindingEntry ::= SEQUENCE { + haMobilityBindingMN IpAddress, + haMobilityBindingCOA IpAddress, + haMobilityBindingSourceAddress IpAddress, + haMobilityBindingRegFlags RegistrationFlags, + haMobilityBindingRegIDLow Integer32, + haMobilityBindingRegIDHigh Integer32, + haMobilityBindingTimeGranted Integer32, + haMobilityBindingTimeRemaining Gauge32 + } + + haMobilityBindingMN OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mobile node's home (IP) address." + ::= { haMobilityBindingEntry 1 } + + haMobilityBindingCOA OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mobile node's care-of-address. One mobile node can + have multiple bindings with different + care-of-addresses." + ::= { haMobilityBindingEntry 2 } + + haMobilityBindingSourceAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "IP source address of the Registration Request as + received by the home agent. Will be either a mobile + node's co-located care-of address or an address of the + foreign agent." + ::= { haMobilityBindingEntry 3 } + + haMobilityBindingRegFlags OBJECT-TYPE + SYNTAX RegistrationFlags + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Registration flags sent by mobile node." + ::= { haMobilityBindingEntry 4 } + + haMobilityBindingRegIDLow OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low 32 bits of Identification used in that binding by + the mobile node." + ::= { haMobilityBindingEntry 5 } + + haMobilityBindingRegIDHigh OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High 32 bits of Identification used in that binding by + the mobile node." + ::= { haMobilityBindingEntry 6 } + + haMobilityBindingTimeGranted OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime in seconds granted to the mobile node + for this registration." + ::= { haMobilityBindingEntry 7 } + + haMobilityBindingTimeRemaining OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds remaining until the + registration is expired. It has the same initial value + as haMobilityBindingTimeGranted, and is counted down + by the home agent." + ::= { haMobilityBindingEntry 8 } + + -- Home Agent Registration Group Counters + + -- Home agent registration Counters per node + + haCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF HaCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing registration statistics for all + mobile nodes authorized to use this home agent." + ::= { haRegistration 2 } + + haCounterEntry OBJECT-TYPE + SYNTAX HaCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Registration statistics for one mobile node." + INDEX { haMobilityBindingMN } + ::= { haCounterTable 1 } + + HaCounterEntry ::= SEQUENCE { + haServiceRequestsAccepted Counter32, + haServiceRequestsDenied Counter32, + haOverallServiceTime Gauge32, + haRecentServiceAcceptedTime TimeStamp, + haRecentServiceDeniedTime TimeStamp, + haRecentServiceDeniedCode INTEGER + } + + haServiceRequestsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of service requests for the mobile node + accepted by the home agent (Code 0 + Code 1)." + ::= { haCounterEntry 2 } + + haServiceRequestsDenied OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of service requests for the mobile node + denied by the home agent (sum of all registrations + denied with Code 128 through Code 159)." + ::= { haCounterEntry 3 } + + haOverallServiceTime OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Overall service time (in seconds) that has + accumulated for the mobile node since the home agent + last rebooted." + ::= { haCounterEntry 4 } + + haRecentServiceAcceptedTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the most recent Registration + Request was accepted by the home agent for this mobile + node." + ::= { haCounterEntry 5 } + + haRecentServiceDeniedTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the most recent Registration + Request was denied by the home agent for this mobile + node." + ::= { haCounterEntry 6 } + + haRecentServiceDeniedCode OBJECT-TYPE + SYNTAX INTEGER { + reasonUnspecified(128), + admProhibited(129), + insufficientResource(130), + mnAuthenticationFailure(131), + faAuthenticationFailure(132), + idMismatch(133), + poorlyFormedRequest(134), + tooManyBindings(135), + unknownHA(136) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Code indicating the reason why the most recent + Registration Request for this mobile node was rejected + by the home agent." + ::= { haCounterEntry 7 } + + -- Home agent registration Counters for all mobile nodes. + + haRegistrationAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests accepted by + home agent (Code 0)." + ::= { haRegistration 3 } + + haMultiBindingUnsupported OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests accepted by + home agent -- simultaneous mobility bindings + unsupported (Code 1)." + ::= { haRegistration 4 } + + haReasonUnspecified OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- reason unspecified (Code 128)." + ::= { haRegistration 5 } + + haAdmProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- administratively prohibited (Code 129)." + ::= { haRegistration 6 } + + haInsufficientResource OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- insufficient resources (Code 130)." + ::= { haRegistration 7 } + + haMNAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- mobile node failed authentication (Code + 131)." + ::= { haRegistration 8 } + + haFAAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- foreign agent failed authentication (Code + 132)." + ::= { haRegistration 9 } + + haIDMismatch OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- Identification mismatch (Code 133)." + ::= { haRegistration 10 } + + haPoorlyFormedRequest OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- poorly formed request (Code 134)." + ::= { haRegistration 11 } + + haTooManyBindings OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- too many simultaneous mobility bindings (Code + 135)." + ::= { haRegistration 12 } + + haUnknownHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests denied by home + agent -- unknown home agent address (Code 136)." + ::= { haRegistration 13 } + + haGratuitiousARPsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of gratuition ARPs sent by the home + agent on behalf of mobile nodes." + ::= { haRegistration 14 } + + haProxyARPsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of proxy ARPs sent by the home agent on + behalf of mobile nodes." + ::= { haRegistration 15 } + + haRegRequestsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests received by + home agent." + ::= { haRegistration 16 } + + haDeRegRequestsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Requests received by the + home agent with a Lifetime of zero (requests to + deregister)." + ::= { haRegistration 17 } + + haRegRepliesSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies sent by the home + agent." + ::= { haRegistration 18 } + + haDeRegRepliesSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Registration Replies sent by the home + agent in response to requests to deregister." + ::= { haRegistration 19 } + + mipMIBNotificationPrefix OBJECT IDENTIFIER ::= { mipMIB 2 } + + mipMIBNotifications OBJECT IDENTIFIER ::= + { mipMIBNotificationPrefix 0 } + + mipAuthFailure NOTIFICATION-TYPE + OBJECTS { mipSecViolatorAddress, + mipSecRecentViolationSPI, + mipSecRecentViolationIDLow, + mipSecRecentViolationIDHigh, + mipSecRecentViolationReason + } + + STATUS current + DESCRIPTION + "The mipAuthFailure indicates that the Mobile IP + entity has an authentication failure when it validates + the mobile Registration Request or Reply. + Implementation of this trap is optional." + ::= { mipMIBNotifications 1 } + + + mipMIBConformance OBJECT IDENTIFIER ::= { mipMIB 3 } + + mipGroups OBJECT IDENTIFIER ::= { mipMIBConformance 1 } + mipCompliances OBJECT IDENTIFIER ::= { mipMIBConformance 2 } + + -- compliance statements + + mipCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the Mobile IP MIB." + MODULE + MANDATORY-GROUPS { mipSystemGroup } + + GROUP mipSecAssociationGroup + DESCRIPTION + "This group is mandatory for Mobile IP entities (MN, + FA, and HA) which support security associations. + Mobile Nodes and Home Agents must implement this + group. Foreign Agents must implement this group if + they maintain any security associations." + + GROUP mipSecViolationGroup + DESCRIPTION + "This group is mandatory for Mobile IP entities (MN, + FA, and HA) that can log security violations." + + GROUP mnSystemGroup + DESCRIPTION + "This group is mandatory for mobile node." + + GROUP mnDiscoveryGroup + DESCRIPTION + "This group is mandatory for mobile nodes which + implement the Agent Discovery function." + + GROUP mnRegistrationGroup + DESCRIPTION + "This group is mandatory for mobile nodes." + + GROUP maAdvertisementGroup + DESCRIPTION + "This group is mandatory for the mobility agents (HA + and FA) since they must implement Agent + Advertisement." + + GROUP faSystemGroup + DESCRIPTION + "This group is mandatory for foreign agents." + + GROUP faAdvertisementGroup + DESCRIPTION + "This group is mandatory for foreign agents." + + GROUP faRegistrationGroup + DESCRIPTION + "This group is mandatory for foreign agents." + GROUP haRegistrationGroup + DESCRIPTION + "This group is mandatory for home agents." + + GROUP haRegNodeCountersGroup + DESCRIPTION + "This group is mandatory for home agents which log + registration counters for each individual mobile + node." + + GROUP mipSecNotificationsGroup + DESCRIPTION + "This group is mandatory for Mobile IP entities (MN, + FA, and HA) that can report the security violations." + + ::= { mipCompliances 1 } + + -- Units of conformance + + mipSystemGroup OBJECT-GROUP + OBJECTS { mipEntities, mipEnable, mipEncapsulationSupported } + STATUS current + DESCRIPTION + "A collection of objects providing the basic Mobile IP + entity's management information." + ::= { mipGroups 1 } + + mipSecAssociationGroup OBJECT-GROUP + OBJECTS { mipSecAlgorithmType, mipSecAlgorithmMode, + mipSecKey, mipSecReplayMethod } + STATUS current + DESCRIPTION + "A collection of objects providing the management + information for security associations of Mobile IP + entities." + ::= { mipGroups 2 } + + mipSecViolationGroup OBJECT-GROUP + OBJECTS { mipSecTotalViolations, + mipSecViolationCounter, mipSecRecentViolationSPI, + mipSecRecentViolationTime, + mipSecRecentViolationIDLow, + mipSecRecentViolationIDHigh, + mipSecRecentViolationReason } + STATUS current + DESCRIPTION + "A collection of objects providing the management + information for security violation logging of Mobile + IP entities." + ::= { mipGroups 3 } + + mnSystemGroup OBJECT-GROUP + OBJECTS { mnState, mnCurrentHA, mnHomeAddress, + mnHAStatus } + STATUS current + DESCRIPTION + "A collection of objects providing the basic + management information for mobile nodes." + ::= { mipGroups 4 } + + mnDiscoveryGroup OBJECT-GROUP + OBJECTS { mnFAAddress, mnCOA, mnAdvSourceAddress, + mnAdvSequence, mnAdvFlags, mnAdvMaxRegLifetime, + mnAdvMaxAdvLifetime, mnAdvTimeReceived, + mnSolicitationsSent, mnAdvertisementsReceived, + mnAdvsDroppedInvalidExtension, + mnAdvsIgnoredUnknownExtension, mnMoveFromHAToFA, + mnMoveFromFAToFA, mnMoveFromFAToHA, + mnGratuitousARPsSend, mnAgentRebootsDectected } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the Agent Discovery function within a + mobile node." + ::= { mipGroups 5 } + + mnRegistrationGroup OBJECT-GROUP + OBJECTS { mnRegAgentAddress, mnRegCOA, mnRegFlags, mnRegIDLow, + mnRegIDHigh, mnRegTimeRequested, mnRegTimeRemaining, + mnRegTimeSent, mnRegIsAccepted, mnCOAIsLocal, + mnRegRequestsSent, mnRegRepliesRecieved, + mnDeRegRequestsSent, mnDeRegRepliesRecieved, + mnRepliesInvalidHomeAddress, mnRepliesUnknownHA, + mnRepliesUnknownFA, mnRepliesInvalidID, + mnRepliesDroppedInvalidExtension, + mnRepliesIgnoredUnknownExtension, + mnRepliesHAAuthenticationFailure, + mnRepliesFAAuthenticationFailure, + mnRegRequestsAccepted, mnRegRequestsDeniedByHA, + mnRegRequestsDeniedByFA, + mnRegRequestsDeniedByHADueToID, + mnRegRequestsWithDirectedBroadcast } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the registration function within a + mobile node." + ::= { mipGroups 6 } + + maAdvertisementGroup OBJECT-GROUP + OBJECTS { maAdvMaxRegLifetime, + maAdvPrefixLengthInclusion, maAdvAddress, + maAdvMaxInterval, maAdvMinInterval, + maAdvMaxAdvLifetime, + maAdvResponseSolicitationOnly, maAdvStatus, + maAdvertisementsSent, maAdvsSentForSolicitation, + maSolicitationsReceived } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the Agent Advertisement function + within mobility agents." + ::= { mipGroups 7 } + + faSystemGroup OBJECT-GROUP + OBJECTS { faCOAStatus} + STATUS current + DESCRIPTION + "A collection of objects providing the basic + management information for foreign agents." + ::= { mipGroups 8 } + + faAdvertisementGroup OBJECT-GROUP + OBJECTS { faIsBusy, faRegistrationRequired } + STATUS current + DESCRIPTION + "A collection of objects providing supplemental + management information for the Agent Advertisement + function within a foreign agent." + ::= { mipGroups 9 } + + faRegistrationGroup OBJECT-GROUP + OBJECTS { faVisitorIPAddress, faVisitorHomeAddress, + faVisitorHomeAgentAddress, faVisitorTimeGranted, + faVisitorTimeRemaining, faVisitorRegFlags, + faVisitorRegIDLow, faVisitorRegIDHigh, + faVisitorRegIsAccepted, faRegRequestsReceived, + faRegRequestsRelayed, faReasonUnspecified, + faAdmProhibited, faInsufficientResource, + faMNAuthenticationFailure, faRegLifetimeTooLong, + faPoorlyFormedRequests, + faEncapsulationUnavailable, + faVJCompressionUnavailable, faHAUnreachable, + faRegRepliesRecieved, faRegRepliesRelayed, + faHAAuthenticationFailure, faPoorlyFormedReplies } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the registration function within a + foreign agent." + ::= { mipGroups 10 } + + haRegistrationGroup OBJECT-GROUP + OBJECTS { haMobilityBindingMN, haMobilityBindingCOA, + haMobilityBindingSourceAddress, + haMobilityBindingRegFlags, + haMobilityBindingRegIDLow, + haMobilityBindingRegIDHigh, + haMobilityBindingTimeGranted, + haMobilityBindingTimeRemaining, + haRegistrationAccepted, haMultiBindingUnsupported, + haReasonUnspecified, haAdmProhibited, + haInsufficientResource, haMNAuthenticationFailure, + haFAAuthenticationFailure, haIDMismatch, + haPoorlyFormedRequest, haTooManyBindings, + haUnknownHA, haGratuitiousARPsSent, + haProxyARPsSent, haRegRequestsReceived, + haDeRegRequestsReceived, haRegRepliesSent, + haDeRegRepliesSent } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for the registration function within a + home agent." + ::= { mipGroups 11 } + + haRegNodeCountersGroup OBJECT-GROUP + OBJECTS { haServiceRequestsAccepted, + haServiceRequestsDenied, haOverallServiceTime, + haRecentServiceAcceptedTime, + haRecentServiceDeniedTime, + haRecentServiceDeniedCode } + STATUS current + DESCRIPTION + "A collection of objects providing management + information for counters related to the registration + function within a home agent." + ::= { mipGroups 12 } + + mipSecNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { mipAuthFailure } + STATUS current + DESCRIPTION + "The notification related to security violations." + ::= { mipGroups 13 } + +END diff --git a/mibs/ietf/MOBILEIPV6-MIB b/mibs/ietf/MOBILEIPV6-MIB new file mode 100644 index 0000000..7aaa38e --- /dev/null +++ b/mibs/ietf/MOBILEIPV6-MIB @@ -0,0 +1,4964 @@ + MOBILEIPV6-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, mib-2, Unsigned32, Integer32, Counter32, + Gauge32, Counter64, + OBJECT-TYPE, NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + TruthValue, DateAndTime, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB + ipv6InterfaceIfIndex + FROM IP-MIB + ; + + mip6MIB MODULE-IDENTITY + LAST-UPDATED "200602010000Z" -- 1st February 2006 + ORGANIZATION "IETF mip6 Working Group" + CONTACT-INFO + " Glenn Mansfield Keeni + Postal: Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, Japan 989-3204. + Tel: +81-22-303-4012 + Fax: +81-22-303-4015 + E-mail: glenn@cysols.com + + Kenichi Nagami + Postal: INTEC NetCore Inc. + 1-3-3, Shin-suna + Koto-ku, Tokyo, 135-0075 + Japan + + Tel: +81-3-5665-5069 + E-mail: nagami@inetcore.com + + Kazuhide Koide + Postal: Tohoku University + 2-1-1, Katahira + Aoba-ku, Sendai, 980-8577 + Japan + + Tel: +81-22-217-5454 + E-mail: koide@shiratori.riec.tohoku.ac.jp + + + + Sri Gundavelli + Postal: Cisco Systems + 170 W.Tasman Drive, + San Jose, CA 95134 + USA + + Tel: +1-408-527-6109 + E-mail: sgundave@cisco.com + + Support Group E-mail: mip6@ietf.org" + + DESCRIPTION + "The MIB module for monitoring Mobile-IPv6 + entities. + + Copyright (C) The Internet Society 2006. This + version of this MIB module is part of RFC 4295; + see the RFC itself for full legal notices. + " + + REVISION "200602010000Z" -- 1st February 2006 + DESCRIPTION "Initial version, published as RFC 4295." + + ::= { mib-2 133 } + + + -- The major groups + + mip6Notifications OBJECT IDENTIFIER ::= { mip6MIB 0 } + mip6Objects OBJECT IDENTIFIER ::= { mip6MIB 1 } + mip6Conformance OBJECT IDENTIFIER ::= { mip6MIB 2 } + mip6Core OBJECT IDENTIFIER ::= { mip6Objects 1 } + mip6Mn OBJECT IDENTIFIER ::= { mip6Objects 2 } + mip6Cn OBJECT IDENTIFIER ::= { mip6Objects 3 } + mip6Ha OBJECT IDENTIFIER ::= { mip6Objects 4 } + + -- The sub groups + + mip6System OBJECT IDENTIFIER ::= { mip6Core 1 } + mip6Bindings OBJECT IDENTIFIER ::= { mip6Core 2 } + mip6Stats OBJECT IDENTIFIER ::= { mip6Core 3 } + + mip6MnSystem OBJECT IDENTIFIER ::= { mip6Mn 1 } + mip6MnConf OBJECT IDENTIFIER ::= { mip6Mn 2 } + mip6MnRegistration OBJECT IDENTIFIER ::= { mip6Mn 3 } + + mip6CnSystem OBJECT IDENTIFIER ::= { mip6Cn 1 } + + + + mip6CnStats OBJECT IDENTIFIER ::= { mip6Cn 2 } + + mip6HaAdvertisement OBJECT IDENTIFIER ::= { mip6Ha 1 } + mip6HaStats OBJECT IDENTIFIER ::= { mip6Ha 2 } + + + + -- Textual Conventions + Mip6BURequestRejectionCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of the status field in the Binding + Acknowledgment message when the Binding Update + was rejected. + " + REFERENCE + "RFC 3775 : Section 6.1.8" + SYNTAX INTEGER { + reasonUnspecified (1), --(Code 128) + admProhibited (2), --(Code 129) + insufficientResource (3), --(Code 130) + homeRegistrationNotSupported (4), --(Code 131) + notHomeSubnet (5), --(Code 132) + notHomeAgentForThisMobileNode (6), --(Code 133) + duplicateAddressDetectionFailed (7), --(Code 134) + sequenceNumberOutOfWindow (8), --(Code 135) + expiredHomeNonceIndex (9), --(Code 136) + expiredCareofNonceIndex (10), --(Code 137) + expiredNonces (11), --(Code 138) + registrationTypeChangeDisallowed(12) --(Code 139) + } + + + + + + + + + + + + + + + + + + + + + mip6Capabilities OBJECT-TYPE + SYNTAX BITS { + mobileNode (0), + homeAgent (1), + correspondentNode (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the Mobile IPv6 functions that + are supported by this managed entity. Multiple + Mobile IPv6 functions may be supported by a single + entity. + " + REFERENCE + "RFC 3775 : Section 3.2, 4.1" + ::= { mip6System 1 } + + mip6Status OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether the Mobile IPv6 + function is enabled for the managed entity. If it + is enabled, the agent discovery and registration + functions will be operational. + Changing the status from enabled(1) to disabled(2) + will terminate the agent discovery and registration + functions. On the other hand, changing the status + from disabled(2) to enabled(1) will start the agent + discovery and registration functions. + + The value of this object SHOULD remain unchanged + across reboots of the managed entity. + " + ::= { mip6System 2 } + + + -- mip6BindingCache + + + + + + + + + + + + mip6BindingCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6BindingCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table models the Binding Cache on the + managed entity. The cache is maintained by home + agents and correspondent nodes. It contains + both correspondent registration entries and home + registration entries. + + Entries in this table are not required to survive + a reboot of the managed entity. + " + REFERENCE + "RFC 3775 : Section 4.5, 9.1, 10.1" + ::= { mip6Bindings 1 } + + mip6BindingCacheEntry OBJECT-TYPE + SYNTAX Mip6BindingCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry represents a conceptual row in the + binding cache table. It represents a single Binding + Update. + + Implementors need to be aware that if the total + number of octets in mip6BindingHomeAddress + exceeds 113, then OIDs of column + instances in this row will have more than 128 + sub-identifiers and cannot be accessed using + SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHomeAddressType, mip6BindingHomeAddress } + ::= { mip6BindingCacheTable 1 } + + + + + + + + + + + + + + + + Mip6BindingCacheEntry ::= + SEQUENCE { + mip6BindingHomeAddressType InetAddressType, + mip6BindingHomeAddress InetAddress, + mip6BindingCOAType InetAddressType, + mip6BindingCOA InetAddress, + mip6BindingTimeRegistered DateAndTime, + mip6BindingTimeGranted Gauge32, + mip6BindingTimeRemaining Gauge32, + mip6BindingHomeRegn TruthValue, + mip6BindingMaxSeq Unsigned32, + mip6BindingUsageTS DateAndTime, + mip6BindingUsageCount Gauge32, + mip6BindingAdminStatus INTEGER + } + + mip6BindingHomeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The InetAddressType of the mip6BindingHomeAddress + that follows. + " + ::= { mip6BindingCacheEntry 1 } + + mip6BindingHomeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The home address of the mobile node corresponding + to the Binding Cache entry. This field is used as + the key for searching the mobile node's current + care-of address in the Binding Cache. + + The type of the address represented by this object + is specified by the corresponding + mip6BindingHomeAddressType object. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 2 } + + + + + + + + + mip6BindingCOAType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The InetAddressType of the mip6BindingCOA that + follows. + " + ::= { mip6BindingCacheEntry 3 } + + mip6BindingCOA OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The care-of address of the mobile node indicated by + the home address field (mip6BindingHomeAddress) in + this Binding Cache entry. + + The type of the address represented by this object + is specified by the corresponding mip6BindingCOAType + object. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 4 } + + mip6BindingTimeRegistered OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this Binding Cache entry was + created. + " + ::= { mip6BindingCacheEntry 5 } + + mip6BindingTimeGranted OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime in seconds granted to the mobile node + for this registration. + " + ::= { mip6BindingCacheEntry 6 } + + + + + mip6BindingTimeRemaining OBJECT-TYPE + SYNTAX Gauge32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime in seconds remaining for this + registration. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 7 } + + mip6BindingHomeRegn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this Binding + Cache entry is a home registration entry (applicable + only on nodes that support home agent + functionality). + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 8 } + + mip6BindingMaxSeq OBJECT-TYPE + SYNTAX Unsigned32 (0..65536) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the Sequence Number field + received in previous Binding Updates for this home + address (mip6BindingHomeAddress). + " + REFERENCE + "RFC 3775 : Section 9.1, 9.5.1" + ::= { mip6BindingCacheEntry 9 } + + + + + + + + + + + + + mip6BindingUsageTS OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this entry was last looked up. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 10 } + + mip6BindingUsageCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this entry was looked up. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 11 } + + mip6BindingAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + active (1), + inactive (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is an administrative object used to control + the status of a binding cache entry. By default + the value will be 'active'(1). + A value of 'inactive'(2) will indicate that the + validity of the entry is suspended. It does not + exist in the binding cache for all practical + purposes. + The state can be changed from 'active' to + 'inactive' by operator intervention. + Causing the state to change to 'inactive' results + in the entry being deleted from the cache. + Attempts to change the status from 'inactive' + to 'active' will be rejected. + " + REFERENCE + "RFC 3775 : Section 9.1" + ::= { mip6BindingCacheEntry 12 } + + + + + -- mip6BindingHistory + -- Once the lifetime expires an entry will be removed from the + -- Binding Cache. + -- For monitoring purposes it will be useful to have access to + -- the history of the Binding Cache. BindingHistoryTable serves + -- this purpose. It records the history of the Bindings. + -- The size of the table will be left to implementors. + + mip6BindingHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6BindingHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing a record of the bindings. + " + ::= { mip6Bindings 2 } + + mip6BindingHistoryEntry OBJECT-TYPE + SYNTAX Mip6BindingHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The record of a binding. + + Implementors need to be aware that if the total + number of octets in mip6BindingHstHomeAddress + exceeds 112, then OIDs of column + instances in this row will have more than 128 + sub-identifiers and cannot be accessed using + SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHstHomeAddressType, + mip6BindingHstHomeAddress , + mip6BindingHstIndex} + ::= { mip6BindingHistoryTable 1 } + + + + + + + + + + + + + + + + + Mip6BindingHistoryEntry ::= + SEQUENCE { + mip6BindingHstHomeAddressType InetAddressType, + mip6BindingHstHomeAddress InetAddress, + mip6BindingHstIndex Unsigned32, + mip6BindingHstCOAType InetAddressType, + mip6BindingHstCOA InetAddress, + mip6BindingHstTimeRegistered DateAndTime, + mip6BindingHstTimeExpired DateAndTime, + mip6BindingHstHomeRegn TruthValue, + mip6BindingHstUsageTS DateAndTime, + mip6BindingHstUsageCount Gauge32 + } + + mip6BindingHstHomeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The InetAddressType of the + mip6BindingHstHomeAddress that follows. + " + ::= { mip6BindingHistoryEntry 1 } + + mip6BindingHstHomeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Mobile node's home address. + + The type of the address represented by this object + is specified by the corresponding + mip6BindingHstHomeAddressType object. + " + ::= { mip6BindingHistoryEntry 2 } + + mip6BindingHstIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index to uniquely identify this record along + with the mobile node's HomeAddress type and + HomeAddress. It should be monotonically increasing. + It may wrap after reaching its max value." + ::= { mip6BindingHistoryEntry 3 } + + + + + mip6BindingHstCOAType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The InetAddressType of the mip6BindingHstCOA that + follows. + " + ::= { mip6BindingHistoryEntry 4 } + + mip6BindingHstCOA OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mobile node's care-of address. One mobile node can + have multiple bindings with different + care-of addresses. + The type of the address represented by this object + is specified by the corresponding + mip6BindingHstCOAType object. + " + ::= { mip6BindingHistoryEntry 5 } + + mip6BindingHstTimeRegistered OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this Binding Cache entry was + created. + " + ::= { mip6BindingHistoryEntry 6 } + + mip6BindingHstTimeExpired OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this Binding Cache entry expired. + " + ::= { mip6BindingHistoryEntry 7 } + + + + + + + + + + mip6BindingHstHomeRegn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not this Binding + Cache entry is a home registration entry (applicable + only on nodes that support home agent + functionality). + " + ::= { mip6BindingHistoryEntry 8 } + + mip6BindingHstUsageTS OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp when this entry was last looked up. + " + ::= { mip6BindingHistoryEntry 9 } + + mip6BindingHstUsageCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this entry was looked up. + " + ::= { mip6BindingHistoryEntry 10 } + + -- mip6TrafficCounters + + -- MIPv6 Traffic will be characterized by + -- IPv6 datagrams which satisfy at least one of the following + -- conditions + -- - the datagrams are tunneled to the mobile node by the HA + -- - the datagrams are reverse tunneled by the MN to the HA + -- - the datagrams have the Routing header type 2 set. + -- - the datagrams have the Home Address option set in the + -- Destination Option extension header + -- - the datagrams have the mobility header + + mip6TotalTraffic OBJECT IDENTIFIER ::= { mip6Stats 1 } + -- REFERENCE + -- "RFC 3775 : Section 4.1, 6.3, 6.4" + + + + + + + mip6InOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + received by the MIPv6 entity. This will include + datagrams with the Mobility Header, the Home Address + option in the Destination Option extension header + (Next Header value = 60), or the type 2 Routing + Header. It will also include the IPv6 datagrams that + are reverse tunneled to a home agent from a mobile + node's home address. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 1 } + + mip6HCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + received by the MIPv6 entity. This will include + datagrams with the Mobility Header, the Home Address + option in the Destination Option extension header + (Next Header value = 60), or the type 2 Routing + Header. It will also include the IPv6 datagrams that + are reverse tunneled to a home agent from a mobile + node's home address. + This object is a 64-bit version of mip6InOctets. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 2 } + + + + + + + + mip6InPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams received by the MIPv6 + entity. This will include datagrams with the + Mobility Header, the Home Address option in the + Destination Option extension header (Next Header + value = 60), or the type 2 Routing Header. + It will also include the IPv6 datagrams that are + reverse tunneled to a home agent from a mobile + node's home address. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 3 } + + mip6HCInPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams received by the MIPv6 + entity. This will include datagrams with the + Mobility Header, the Home Address option in the + Destination Option extension header (Next Header + value = 60), or the type 2 Routing Header. It will + also include the IPv6 datagrams that are reverse + tunneled to a home agent from a mobile node's home + address. + This object is a 64-bit version of mip6InPkts. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 4 } + + + + + + + + mip6OutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + sent by the MIPv6 entity. This will include + datagrams with the Mobility Header, the Home Address + option in the Destination Option extension header + (Next Header value = 60), or the type 2 Routing + Header. It will also include the IPv6 datagrams that + are reverse tunneled to a home agent from a mobile + node's home address. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 5 } + + mip6HCOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + sent by the MIPv6 entity. This will include + datagrams with the Mobility Header, the Home Address + option in the Destination Option extension header + (Next Header value = 60), or the type 2 Routing + Header. It will also include the IPv6 datagrams that + are reverse tunneled to a home agent from a mobile + node's home address. + This object is a 64-bit version of mip6OutOctets. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 6 } + + + + + + + + mip6OutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams sent by the MIPv6 + entity. This will include the datagrams with + Mobility Header, the Home Address option in the + Destination Option extension header (Next Header + value = 60), or the type 2 Routing Header. It will + also include the IPv6 datagrams that are reverse + tunneled to a home agent from a mobile node's home + address. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 7 } + + mip6HCOutPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams sent by the MIPv6 + entity. This will include datagrams with the + Mobility Header, the Home Address option in the + Destination Option extension header (Next Header + value = 60), or the type 2 Routing Header. It will + also include the IPv6 datagrams that are reverse + tunneled to a home agent from a mobile node's home + address. + This object is a 64-bit version of mip6OutPkts. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6TotalTraffic 8 } + + + + + + + + mip6CounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one or more of this MIPv6 entities + global counters, viz., counters with OID prefix + 'mip6TotalTraffic' or 'mip6CnGlobalStats' or + 'mip6HaGlobalStats' suffered a discontinuity. + If no such discontinuities have occurred since the + last re-initialization of the local management + subsystem, then this object will have a zero value. + " + ::= { mip6TotalTraffic 9 } + + + -- mip6NodeTrafficCounters + + mip6NodeTrafficTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6NodeTrafficEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing MIPv6 traffic counters per mobile + node. + " + ::= { mip6Stats 2 } + + mip6NodeTrafficEntry OBJECT-TYPE + SYNTAX Mip6NodeTrafficEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MIPv6 traffic statistics for a mobile node. + + Implementors need to be aware that if the total + number of octets in mip6BindingHomeAddress + exceeds 113, then OIDs of column + instances in this row will have more than 128 + sub-identifiers and cannot be accessed using + SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHomeAddressType, mip6BindingHomeAddress } + ::= { mip6NodeTrafficTable 1 } + + + + + + + Mip6NodeTrafficEntry ::= + SEQUENCE { + mip6NodeInOctets Counter32, + mip6HCNodeInOctets Counter64, + mip6NodeInPkts Counter32, + mip6HCNodeInPkts Counter64, + mip6NodeOutOctets Counter32, + mip6HCNodeOutOctets Counter64, + mip6NodeOutPkts Counter32, + mip6HCNodeOutPkts Counter64, + mip6NodeCtrDiscontinuityTime TimeStamp + } + + mip6NodeInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + received from the mobile node by the MIPv6 entity. + This will include datagrams with the Mobility + Header or the Home Address option in the Destination + Option extension header (Next Header value = 60). + It will also include the IPv6 datagrams that are + reverse tunneled to a home agent from the mobile + node's home address. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 1 } + + + + + + + + + + + + + + + + + + mip6HCNodeInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + received from the mobile node by the MIPv6 entity. + This will include datagrams with the Mobility + Header or the Home Address option in the Destination + Option extension header (Next Header value = 60). + It will also include the IPv6 datagrams that are + reverse tunneled to a home agent from the mobile + node's home address. + This object is a 64-bit version of mip6NodeInOctets. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 2 } + + mip6NodeInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams received from the + mobile node by the MIPv6 entity. This will include + the datagrams with the Mobility Header or + the Home Address option in the Destination + Option extension header (Next Header value = 60). + It will also include the IPv6 datagrams that are + reverse tunneled to a home agent from the mobile + node's home address. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 3 } + + + + + + + + mip6HCNodeInPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams received from the + mobile node by the MIPv6 entity. This will include + datagrams with the Mobility Header or the Home + Address option in the Destination Option extension + header (Next Header value = 60). It will also + include the IPv6 datagrams that are reverse tunneled + to a home agent from the mobile node's home address. + This object is a 64-bit version of mip6NodeInPkts. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 4 } + + mip6NodeOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + sent to the mobile node by the MIPv6 entity. This + will include datagrams with the Mobility Header + or the type 2 Routing Header. It will also include + the IPv6 datagrams that are tunneled by a home agent + to the mobile node. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 5 } + + + + + + + + + + + mip6HCNodeOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets in the MIPv6 datagrams + sent to the mobile node by the MIPv6 entity. This + will include datagrams with the Mobility Header + or the type 2 Routing Header. It will also include + the IPv6 datagrams that are tunneled by a home agent + to the mobile node. + This object is a 64-bit version of mip6NodeOutOctets. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 6 } + + mip6NodeOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams sent to the mobile + node by the MIPv6 entity. This will include + datagrams with the Mobility Header or the type 2 + Routing Header. It will also include the IPv6 + datagrams that are tunneled by a home agent to the + mobile node. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 7 } + + + + + + + + + + + + mip6HCNodeOutPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MIPv6 datagrams sent to the mobile + node by the MIPv6 entity. This will include + datagrams with the Mobility Header or the type 2 + Routing Header. It will also include the IPv6 + datagrams that are tunneled by a home agent to the + mobile node. + This object is a 64-bit version of mip6NodeOutOctets. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6NodeCtrDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1, 6.3, 6.4, 10.4.5" + ::= { mip6NodeTrafficEntry 8 } + + mip6NodeCtrDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one or more of the counters in this row + suffered a discontinuity. The relevant counters are + the specific instances of any Counter32 or Counter64 + objects in this row. + If no such discontinuities have occurred since the + last re-initialization of the local management + subsystem, then this object contains a zero value. + " + ::= { mip6NodeTrafficEntry 9 } + + -- mip6MnSystem Group + + mip6MnHomeAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6MnHomeAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing registration status for all the + home addresses pertaining to the mobile node. + " + ::= { mip6MnSystem 1 } + + + + mip6MnHomeAddressEntry OBJECT-TYPE + SYNTAX Mip6MnHomeAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The registration status for a home address. + + Implementors need to be aware that if the total + number of octets in mip6MnHomeAddress + exceeds 113, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6MnHomeAddressType, mip6MnHomeAddress } + ::= { mip6MnHomeAddressTable 1 } + + Mip6MnHomeAddressEntry ::= + SEQUENCE { + mip6MnHomeAddressType InetAddressType, + mip6MnHomeAddress InetAddress, + mip6MnHomeAddressState INTEGER + } + + mip6MnHomeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The InetAddressType of the mip6MnHomeAddress that + follows. + " + ::= { mip6MnHomeAddressEntry 1 } + + + + + + + + + + + + + + + + + + + + mip6MnHomeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unicast routable address assigned to the mobile + node. This is used as the 'permanent address' of the + mobile node in the sense that it remains unchanged + regardless of the mobile node's current point of + attachment. If mobile node doesn't have a home + address assigned yet, then this object will take the + default 'unspecified' value ::0. + + The type of the address represented by this object + is specified by the corresponding + mip6MnHomeAddressType object. + " + REFERENCE + "RFC 3775 : Section 3.2" + ::= { mip6MnHomeAddressEntry 2 } + + mip6MnHomeAddressState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + home(2), + registered(3), + pending(4), + isolated(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the state of the mobile node: + unknown -- The state of the mobile node + cannot be determined. + home -- mobile node is on the home network. + registered -- mobile node is on a foreign network + and is registered with the home + agent. + pending -- mobile node has sent registration + request to the home agent and is + waiting for the reply. + isolated -- mobile node is isolated from network, + i.e., it is not in its home network, + it is not registered, and no + registration ack is pending. + " + ::= { mip6MnHomeAddressEntry 3 } + + + + -- Mobile Node Discovery and Advertisement Group Counters + + mip6MnDiscoveryRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Dynamic Home Agent Address + Discovery Requests sent by the mobile node. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.5, 11.4.1" + ::= { mip6MnConf 1 } + + mip6MnDiscoveryReplies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Dynamic Home Agent Address + Discovery Replies received by the mobile node. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.5, 11.4.1" + ::= { mip6MnConf 2 } + + + + + + + + + + + + + + + + + + + mip6MnDiscoveryTimeouts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Dynamic Home Agent Address + Discovery Requests that timed out. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.5, 11.4.1, 12" + ::= { mip6MnConf 3 } + + mip6MnPrefixSolicitationsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Mobile Prefix Solicitations + sent by the mobile node. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.5, 11.4.2" + ::= { mip6MnConf 4 } + + + + + + + + + + + + + + + + + + + + + mip6MnPrefixAdvsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Mobile Prefix Advertisements + received by the mobile node. This will include the + ICMP Mobile Prefix Advertisements that failed the + validity checks. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.6, 11.4.3" + ::= { mip6MnConf 5 } + + mip6MnPrefixAdvsIgnored OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Mobile Prefix Advertisements + discarded by the validity check. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.6, 11.4.3" + ::= { mip6MnConf 6 } + + + + + + + + + + + + + + + + + + + mip6MnMovedToFN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the mobile node has detected + movement to a foreign network from another + foreign network or from the home network, has + reconstructed its care-of address and has initiated + the care-of address registration process. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.5.1" + ::= { mip6MnConf 7 } + + mip6MnMovedToHN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the mobile node has detected + movement from a foreign network to its home + network. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.5.4" + ::= { mip6MnConf 8 } + + -- Mobile Node Registration Group + + -- Registration table of mobile node + + + + + + + + + + + + + mip6MnBLTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6MnBLEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table corresponds to the Binding Update List + (BL) that is maintained by the mobile node. The list + holds an item for every binding that the mobile node + has established or is trying to establish. Both + correspondent and home registrations are included in + this table. Entries from the table are deleted as + the lifetime of the binding expires. + " + REFERENCE + "RFC 3775 : Section 4.5, 11.1" + ::= { mip6MnRegistration 1 } + + mip6MnBLEntry OBJECT-TYPE + SYNTAX Mip6MnBLEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a Binding Update sent by the + mobile node either to its home agent or to one of + its correspondent nodes. + + Implementors need to be aware that if the total + number of octets in mip6MnHomeAddress and + mip6MnBLNodeAddress exceeds 111, then OIDs of column + instances in this row will have more than 128 + sub-identifiers and cannot be accessed using + SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6MnHomeAddressType, + mip6MnHomeAddress, + mip6MnBLNodeAddressType, + mip6MnBLNodeAddress + } + ::= { mip6MnBLTable 1 } + + + + + + + + + + + + + Mip6MnBLEntry ::= SEQUENCE { + mip6MnBLNodeAddressType InetAddressType, + mip6MnBLNodeAddress InetAddress, + mip6MnBLCOAType InetAddressType, + mip6MnBLCOA InetAddress, + mip6MnBLLifeTimeRequested Unsigned32, + mip6MnBLLifeTimeGranted Unsigned32, + mip6MnBLMaxSeq Unsigned32, + mip6MnBLTimeSent DateAndTime, + mip6MnBLAccepted TruthValue, + mip6MnBLAcceptedTime DateAndTime, + mip6MnBLRetransmissions Gauge32, + mip6MnBLDontSendBUFlag TruthValue + } + + mip6MnBLNodeAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The InetAddressType of the mip6MnBLNodeAddress + that follows. + " + ::= { mip6MnBLEntry 1 } + + mip6MnBLNodeAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the agent as used in the destination + address of the Binding Update. The agent + may be a home agent or a correspondent node. + + The type of the address represented by this object + is specified by the corresponding + mip6MnBLNodeAddressType object. + + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 2 } + + + + + + + + + + mip6MnBLCOAType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The InetAddressType of the mip6MnBLCOA that follows. + " + ::= { mip6MnBLEntry 3 } + + mip6MnBLCOA OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Care-of address that the mobile node intends to + register in the Binding Update request. + + The type of the address represented by this object + is specified by the corresponding mip6MnBLCOAType + object. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 4 } + + mip6MnBLLifeTimeRequested OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime requested by the mobile node (in + seconds) in the Binding Update. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 5 } + + + + + + + + + + + + + + + mip6MnBLLifeTimeGranted OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime granted to the mobile node for this + binding. This field will be inaccessible if the + Binding Update request has not been accepted. + The lifetime remaining (lR) can be calculated using + the current time (cT), mip6MnBLAcceptedTime (aT) and + mip6MnBLLifeTimeGranted (lG) as follows: + lR = lG - (cT - aT). + When lR is zero, this entry will be deleted from the + Binding Update List and consequently from this + table. + " + ::= { mip6MnBLEntry 6 } + + mip6MnBLMaxSeq OBJECT-TYPE + SYNTAX Unsigned32 (0..65536) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the Sequence Number field sent + in previous Binding Updates to this destination. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 7 } + + mip6MnBLTimeSent OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the last (re-)transmission occurred." + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 8 } + + + + + + + + + + + + mip6MnBLAccepted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "true(1) if the mobile node has received a + binding acknowledgment indicating that service has + been accepted (status code 0 or 1); false(2) + otherwise. false(2) implies that the registration + is still pending. + " + ::= { mip6MnBLEntry 9 } + + mip6MnBLAcceptedTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the mobile node receives a binding + acknowledgment indicating that Binding Update has + been accepted (status code 0 or 1); + This object will be inaccessible if the Binding + Update request is still pending. + " + ::= { mip6MnBLEntry 10 } + + + mip6MnBLRetransmissions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Binding Update retransmissions. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 11 } + + + + + + + + + + + + + + + mip6MnBLDontSendBUFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "true(1) indicates that future binding updates + will not be sent to mip6MnBLNodeAddress. + false(2) implies that binding updates will be + sent to mip6MnBLNodeAddress. + The mobile node sets this flag in the when it + receives an ICMP Parameter Problem, Code 1, + error message in response to a return + routability message or Binding Update sent to + mip6MnBLNodeAddress. + " + REFERENCE + "RFC 3775 : Section 11.1" + ::= { mip6MnBLEntry 12 } + + + -- Mobile Node Registration Group Counters + + mip6MnRegnCounters OBJECT IDENTIFIER ::= { mip6MnRegistration 2 } + + mip6MnMobilityMessagesSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of mobility messages, i.e., IPv6 + datagrams with Mobility Header, sent by the mobile + node. There are 3 types of mobility messages, viz., + Home Test Init, Care-of Test Init, and Binding + Updates, that are sent by mobile nodes. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 4.2, 6.1" + ::= { mip6MnRegnCounters 1 } + + + + + + + + + + mip6MnMobilityMessagesRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of mobility messages, i.e., IPv6 + datagrams with Mobility Header, received by the + mobile node. There are 5 types of mobility + messages, viz., Home Test, Care-of Test, Binding + Acknowledgment, Binding Refresh Request, and Binding + Error, that are sent to mobile nodes. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 4.2, 6.1" + ::= { mip6MnRegnCounters 2 } + + mip6MnBUsToHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates sent to the mobile + node's home agent(s). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.1" + ::= { mip6MnRegnCounters 3 } + + + + + + + + + + + + + + + + + mip6MnBUAcksFromHA OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid binding acknowledgments + received from the mobile node's home agent(s). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.3" + ::= { mip6MnRegnCounters 4 } + + mip6MnBUsToCN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates sent to + correspondent nodes by the mobile node. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.2" + ::= { mip6MnRegnCounters 5 } + + mip6MnBUAcksFromCN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid Binding Update acks + received from all the correspondent nodes. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.3" + ::= { mip6MnRegnCounters 6 } + + + + + mip6MnBindingErrorsFromCN OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Error messages received + by mobile node from CN. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + ::= { mip6MnRegnCounters 7 } + + mip6MnICMPErrorsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of ICMP Error messages of type ICMP + Parameter Problem, Code 1 or Code 2, received by + the mobile node from a correspondent node in + response to a return routability procedure, a + Binding Update, or a packet with the Home Address + option. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.3.5" + ::= { mip6MnRegnCounters 8 } + + + + + + + + + + + + + + + + + + + mip6MnBRRequestsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Refresh requests + received by the mobile node from correspondent + nodes. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 11.7.4" + ::= { mip6MnRegnCounters 9 } + + -- Registration Group counters used for Correspondent Node + mip6CnGlobalStats OBJECT IDENTIFIER ::= { mip6CnStats 1 } + + + mip6CnHomeTestInitsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Home Test Init messages received. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.4.1" + ::= { mip6CnGlobalStats 1 } + + + + + + + + + + + + + + + + + mip6CnHomeTestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Home Test messages sent. If a Home + Test Init message is found to be valid, a Home Test + message will be generated and sent. Otherwise the + Home Test message is silently discarded. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.4.3" + ::= { mip6CnGlobalStats 2 } + + mip6CnCareOfTestInitsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Care-of Test Init messages received. + " + REFERENCE + "RFC 3775 : Section 9.4.2" + ::= { mip6CnGlobalStats 3 } + + mip6CnCareOfTestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Care-of Test messages sent. If a + Care-of Test Init message is found to be valid, a + Care-of Test message will be generated and sent. + Otherwise the Care-of Test message is silently + discarded. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.4.4" + ::= { mip6CnGlobalStats 4 } + + + + + mip6CnBUsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates received by the + correspondent node from mobile nodes. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1" + ::= { mip6CnGlobalStats 5 } + + mip6CnBUAcksSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of acknowledgments sent by the + correspondent node for the Binding Updates received. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.4" + ::= { mip6CnGlobalStats 6 } + + + mip6CnBRsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Refresh Request messages + sent by the correspondent node. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.5" + ::= { mip6CnGlobalStats 7 } + + + + mip6CnBindingErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Error messages sent by the + correspondent node to the mobile node. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.3.3" + ::= { mip6CnGlobalStats 8 } + + mip6CnBUsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates accepted by the + correspondent node. If a Binding Acknowledgment + message is sent for the Binding Update request, + the Status code field in the message will have + a value less than 128. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1, 9.5.4" + ::= { mip6CnGlobalStats 9 } + + + + + + + + + + + + + + + + + + mip6CnBUsRejected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected + by the correspondent node. If a Binding + Acknowledgment message has been sent for the Binding + Update request, the Status code field in the + message will have a value greater than or equal to + 128. Otherwise the Binding Update request will be + silently discarded. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1, 9.5.4" + ::= { mip6CnGlobalStats 10 } + + mip6CnReasonUnspecified OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the correspondent node with status code in the + Binding Acknowledgment message indicating 'reason + unspecified' (Code 128). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8" + ::= { mip6CnGlobalStats 11 } + + + + + + + + + + + + + + mip6CnInsufficientResource OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the correspondent node with status code in the + Binding Acknowledgment message indicating + 'insufficient resources' (Code 130). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8" + ::= { mip6CnGlobalStats 12 } + + mip6CnHomeRegnNotSupported OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'home registration + not supported' (Code 131). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6CnGlobalStats 13 } + + + + + + + + + + + + + + + + + mip6CnSeqNumberOutOfWindow OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'sequence number + out of window' (Code 135). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 14 } + + mip6CnExpiredHomeNonceIndex OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'expired home + nonce index' (Code 136). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 15 } + + + + + + + + + + + + + + + + + mip6CnExpiredCareOfNonceIndex OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'expired + care-of nonce index' (Code 137). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 16 } + + mip6CnExpiredNonce OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'expired nonces' + (Code 138), i.e., the correspondent node no longer + recognizes the Home Nonce Index value and the + Care-of Nonce Index value. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 17 } + + + + + + + + + + + + + + + mip6CnRegTypeChangeDisallowed OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Updates rejected by + correspondent node with status code in the Binding + Acknowledgment message indicating 'registration + type change disallowed' (Code 139), i.e., a binding + already exists for the given home address and the + home registration flag has a different value than + the Home Registration (H) bit in the Binding Update. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 6.1.8, 9.5.1" + ::= { mip6CnGlobalStats 18 } + + + + -- The Correspondent Node statistics by mobile node + + mip6CnCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6CnCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing each mobile ." + ::= { mip6CnStats 2 } + + + + + + + + + + + + + + + + + + + + mip6CnCounterEntry OBJECT-TYPE + SYNTAX Mip6CnCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of correspondent node counters for a mobile + node. + + Implementors need to be aware that if the total + number of octets in mip6BindingHomeAddress + exceeds 113, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHomeAddressType, + mip6BindingHomeAddress + } + ::= { mip6CnCounterTable 1 } + + Mip6CnCounterEntry ::= + SEQUENCE { + mip6CnBURequestsAccepted Counter32, + mip6CnBURequestsRejected Counter32, + mip6CnBCEntryCreationTime DateAndTime, + mip6CnBUAcceptedTime DateAndTime, + mip6CnBURejectionTime DateAndTime, + mip6CnBURejectionCode Mip6BURequestRejectionCode, + mip6CnCtrDiscontinuityTime TimeStamp + } + + mip6CnBURequestsAccepted OBJECT-TYPE --(Code 0,1) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests from the + mobile node accepted by the correspondent node. + If Binding Acknowledgment messages are sent, then + the status code in the message will have a value + less than 128. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CnCtrDiscontinuityTime. + " + ::= { mip6CnCounterEntry 1 } + + + + + + mip6CnBURequestsRejected OBJECT-TYPE + -- (Code 128 through Code 159) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests from the + mobile node that have been rejected by the + correspondent node. This includes the Binding Update + requests for which a Binding Acknowledgment message + has been sent with status code value greater than or + equal to 128 and the Binding Acknowledgment requests + that have been silently discarded. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CnCtrDiscontinuityTime. + " + ::= { mip6CnCounterEntry 2 } + + mip6CnBCEntryCreationTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the current Binding Cache entry was + created for the mobile node. + " + ::= { mip6CnCounterEntry 3 } + + mip6CnBUAcceptedTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last Binding Update was + accepted by the correspondent node and the + corresponding Binding Cache entry was updated. + " + ::= { mip6CnCounterEntry 4 } + + + + + + + + + + + + mip6CnBURejectionTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last Binding Update message + was rejected by the correspondent node. + If there have been no rejections, then this object + will be inaccessible. + " + ::= { mip6CnCounterEntry 5 } + + mip6CnBURejectionCode OBJECT-TYPE + SYNTAX Mip6BURequestRejectionCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If a Binding Acknowledgment is sent to the mobile + node, this is the status code (> 128) that is + returned in the Binding Acknowledgment. + In case a Binding Acknowledgment is not sent to + the mobile node, then this will be the value + of the Status code that corresponds to the reason + of the rejection. If there have been no + rejections, then this object will be inaccessible. + " + REFERENCE + "RFC 3775 : Section 6.1.8" + + ::= { mip6CnCounterEntry 6 } + + mip6CnCtrDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one or more of counters in this row, + viz., instances of 'mip6CnBURequestsAccepted' and + 'mip6CnBURequestsRejected', suffered a discontinuity. + If no such discontinuities have occurred since the + last re-initialization of the local management + subsystem, then this object will have a zero value. + " + ::= { mip6CnCounterEntry 7 } + + -- Home agent group + + + + + mip6HaAdvsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of valid Router Advertisements + received with the Home Agent (H) bit set, on + all the links on which it is serving as a Home + Agent. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 7" + ::= { mip6HaAdvertisement 1 } + + + mip6HaAdvsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of unsolicited multicast Router + Advertisements sent with the Home Agent (H) bit set, + on all the links on which the router is serving as + a Home Agent. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 7" + ::= { mip6HaAdvertisement 2 } + + + mip6HaConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6HaConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing configurable advertisement + parameters for all interfaces on which the + home agent service is advertised. + It is RECOMMENDED that the last written values + of the objects in the conceptual rows of this + + + + table will remain unchanged across reboots of + the managed entity provided that the interfaces + have not been renumbered after the reboot. + " + ::= { mip6HaAdvertisement 3 } + + mip6HaConfEntry OBJECT-TYPE + SYNTAX Mip6HaConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Advertisement parameters for an interface. + The instances of the columnar objects in this entry + pertain to the interface that is uniquely identified + by the ipv6InterfaceIfIndex of the interface. The + same ipv6InterfaceIfIndex object is used to uniquely + identify instances of the columnar objects of this + conceptual row. + " + INDEX { ipv6InterfaceIfIndex } + ::= { mip6HaConfTable 1 } + + Mip6HaConfEntry ::= SEQUENCE { + mip6HaAdvPreference Integer32, + mip6HaAdvLifetime Integer32, + mip6HaPrefixAdv INTEGER, + mip6HaPrefixSolicitation INTEGER, + mip6HaMCastCtlMsgSupport INTEGER + } + + mip6HaAdvPreference OBJECT-TYPE + SYNTAX Integer32 (0..65536) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The preference value for the home agent to + be used in the Router Advertisements. Higher + value denotes greater preference. + " + REFERENCE + "RFC 3775 : Section 7.4, 8.4" + ::= { mip6HaConfEntry 1 } + + + + + + + + + + mip6HaAdvLifetime OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lifetime value for the home agent to be + used in the Router Advertisements. + " + REFERENCE + "RFC 3775 : Section 7.4" + ::= { mip6HaConfEntry 2 } + + mip6HaPrefixAdv OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the home agent should support + sending of the ICMP Mobile Prefix Advertisements. + If it is disabled(2), the home agent will not + send ICMP Mobile Prefix Advertisements to the + mobile nodes. + The state can be changed from enabled(1) to + disabled(2) and vice versa by operator + intervention. + Causing the state to change from enabled(1) to + disabled(2) will result in the home agent + disabling the Prefix advertisement function. + On the other hand, changing the status from + disabled(2) to enabled(1) will start the prefix + advertisement function. + " + REFERENCE + "RFC 3775 : Section 8.4" + ::= { mip6HaConfEntry 3} + + + + + + + + + + + + + + + + mip6HaPrefixSolicitation OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the home agent should respond + to ICMP Mobile Prefix Solicitation messages it + receives from the mobile nodes. By default, the + value will be set to enabled(1). If it is + disabled(2), the home agent will not respond to + any ICMP Mobile Prefix Solicitation messages. + The state can be changed from enabled(1) to + disabled(2), by operator intervention. Causing + the state to change from enabled(1) to + disabled(2) will result in the home agent not + responding to any ICMP Mobile Prefix + Solicitation messages it receives from the + mobile nodes. + " + REFERENCE + "RFC 3775 : Section 8.4" + ::= { mip6HaConfEntry 4} + + + mip6HaMCastCtlMsgSupport OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the home agent should enable + support for the processing of the multicast + group membership control messages it receives + from the mobile nodes. By default, the value + will be set to enabled(1). If it is + disabled(2), the home agent will not process + any multicast group control messages it receives + from the mobile nodes. + The state can be changed from enabled(1) to + disabled(2), by operator intervention. Causing + the state to change from enabled(1) to + disabled(2) will result in the home agent + disabling the processing of the multicast group + control messages it received from the mobile + nodes. + " + REFERENCE + "RFC 3775 : Section 10.4.3" + ::= { mip6HaConfEntry 5} + + + + + -- Registration Group counters HA + + mip6HaGlobalStats OBJECT IDENTIFIER ::= { mip6HaStats 1 } + + mip6HaHomeTestInitsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Home Test Init messages received by + the home agent. This will include Home Test Init + messages that failed the validity checks. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 5.2.5" + ::= { mip6HaGlobalStats 1 } + + mip6HaHomeTestsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Home Test messages sent by the + home agent. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 5.2.5" + ::= { mip6HaGlobalStats 2 } + + + + + + + + + + + + + + + mip6HaBUsRecd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates received by the + home agent. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 3 } + + mip6HaBUAcksSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Acknowledgments sent + by the home agent. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 4 } + + mip6HaBRAdviceSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Acknowledgments sent + by the home agent with Binding Refresh Advice + mobility option included. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 5 } + + + + mip6HaBUsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Updates accepted by this HA. + Binding Acknowledgment with status code of 0 or 1. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 6 } + + mip6HaPrefDiscoverReqd OBJECT-TYPE -- (Code 1) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Binding Acknowledgments sent by + the home agent with status code indicating 'accepted + but prefix discovery necessary' (Code 1). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 7 } + + + + + + + + + + + + + + + + + + + + mip6HaReasonUnspecified OBJECT-TYPE -- (Code 128) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'reason + unspecified' (Code 128). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 8 } + + mip6HaAdmProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'administratively + prohibited' (Code 129). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 9 } + + + + + + + + + + + + + + + + + mip6HaInsufficientResource OBJECT-TYPE -- (Code 130) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'insufficient + resources' (Code 130). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.2" + ::= { mip6HaGlobalStats 10 } + + mip6HaHomeRegnNotSupported OBJECT-TYPE -- (Code 131) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'home + registration not supported' (Code 131). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 11 } + + + + + + + + + + + + + + + + + mip6HaNotHomeSubnet OBJECT-TYPE -- (Code 132) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'not home subnet' + (Code 132). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 12 } + + mip6HaNotHomeAgentForThisMN OBJECT-TYPE -- (Code 133) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'not home agent + for this mobile node' (Code 133). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.2" + ::= { mip6HaGlobalStats 13 } + + + + + + + + + + + + + + + + + mip6HaDupAddrDetectionFailed OBJECT-TYPE -- (Code 134) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'Duplicate + Address Detection failed' (Code 134). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6HaGlobalStats 14 } + + mip6HaSeqNumberOutOfWindow OBJECT-TYPE -- (Code 135) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'sequence number + out of window' (Code 135). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1" + ::= { mip6HaGlobalStats 15 } + + + + + + + + + + + + + + + + + mip6HaExpiredHomeNonceIndex OBJECT-TYPE -- (Code 136) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'expired home + nonce index' (Code 136). + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1" + ::= { mip6HaGlobalStats 16 } + + mip6HaRegTypeChangeDisallowed OBJECT-TYPE -- (Code 139) + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of Binding Update requests rejected by + the home agent with status code in the Binding + Acknowledgment message indicating 'registration + type change disallowed' (Code 139), i.e., a binding + already exists for the given home address and the + home registration flag has a different value than + the Home Registration (H) bit in the Binding Update. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6CounterDiscontinuityTime. + " + REFERENCE + "RFC 3775 : Section 9.5.1" + ::= { mip6HaGlobalStats 17 } + + -- Home agent registration Counters per node + + + + + + + + + + + + mip6HaCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6HaCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing registration statistics for all + mobile nodes registered with the home agent. + " + ::= { mip6HaStats 2 } + + mip6HaCounterEntry OBJECT-TYPE + SYNTAX Mip6HaCounterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Home agent registration statistics for a mobile + node. + + Implementors need to be aware that if the total + number of octets in mip6BindingHomeAddress + exceeds 113, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { mip6BindingHomeAddressType, + mip6BindingHomeAddress + } + ::= { mip6HaCounterTable 1 } + + Mip6HaCounterEntry ::= SEQUENCE { + mip6HaBURequestsAccepted Counter32, + mip6HaBURequestsDenied Counter32, + mip6HaBCEntryCreationTime DateAndTime, + mip6HaBUAcceptedTime DateAndTime, + mip6HaBURejectionTime DateAndTime, + mip6HaRecentBURejectionCode Mip6BURequestRejectionCode, + mip6HaCtrDiscontinuityTime TimeStamp + } + + + + + + + + + + + + + + mip6HaBURequestsAccepted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of service requests for the mobile node + accepted by the home agent. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6HaCtrDiscontinuityTime. + " + ::= { mip6HaCounterEntry 1 } + + mip6HaBURequestsDenied OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of service requests for the mobile node + rejected by the home agent. + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + mip6HaCtrDiscontinuityTime. + " + ::= { mip6HaCounterEntry 2 } + + mip6HaBCEntryCreationTime OBJECT-TYPE + SYNTAX DateAndTime + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the current Binding Cache entry was + created for the mobile node. + " + ::= { mip6HaCounterEntry 3 } + + mip6HaBUAcceptedTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last Binding Update was + accepted by the home agent for this mobile node. + " + ::= { mip6HaCounterEntry 4 } + + + + mip6HaBURejectionTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which the last Binding Update was + rejected by the home agent for this mobile node. + If there have been no rejections, then this object + will be inaccessible. + " + ::= { mip6HaCounterEntry 5 } + + mip6HaRecentBURejectionCode OBJECT-TYPE + SYNTAX Mip6BURequestRejectionCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If a Binding Acknowledgment is sent to the mobile + node, this is the status code (> 128) that is + returned in the Binding Acknowledgment. + In case a Binding Acknowledgment is not sent to the + mobile node, then this will be the value of the + status code that corresponds to the reason of the + rejection. + If there have been no rejections, then this object + will be inaccessible. + " + ::= { mip6HaCounterEntry 6 } + + mip6HaCtrDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one or more of counters in this row, + viz., instances of 'mip6HaBURequestsAccepted' and + 'mip6HaBURequestsRejected', suffered a discontinuity. + If no such discontinuities have occurred since the + last re-initialization of the local management + subsystem, then this object will have a zero value. + " + ::= { mip6HaCounterEntry 7 } + + -- Home Agent List Table + + + + + + + mip6HaListTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6HaListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table models the Home Agents List that contains + the list of all routers that are acting as home + agents on each of the interfaces on which the home + agent service is offered by this router. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaAdvertisement 4 } + + mip6HaListEntry OBJECT-TYPE + SYNTAX Mip6HaListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a router that is offering home + agent service. + The instances of the columnar objects in this entry + pertain to an interface for a particular value of + mip6HaLinkLocalAddressType and + mip6HaLinkLocalAddress. The interface is uniquely + identified by its ipv6InterfaceIfIndex. The same + ipv6InterfaceIfIndex object is used in conjunction + with the mip6HaLinkLocalAddressType and + mip6HaLinkLocalAddress to uniquely identify + instances of the columnar objects of this row. + + Implementors need to be aware that if the total + number of octets in mip6HaLinkLocalAddress + exceeds 112, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { ipv6InterfaceIfIndex, mip6HaLinkLocalAddressType, + mip6HaLinkLocalAddress } + ::= { mip6HaListTable 1 } + + Mip6HaListEntry ::= SEQUENCE { + mip6HaLinkLocalAddressType InetAddressType, + mip6HaLinkLocalAddress InetAddress, + mip6HaPreference Integer32, + mip6HaRecvLifeTime Gauge32, + mip6HaRecvTimeStamp DateAndTime + } + + + + mip6HaLinkLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type for the link-local address + of the home agent that follows. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaListEntry 1 } + + mip6HaLinkLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The link local address of the home agent. + + The type of the address represented by this object + is specified by the corresponding + mip6HaLinkLocalAddressType object. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaListEntry 2 } + + mip6HaPreference OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The preference value of this home agent. + Higher values indicate a more preferable home + agent. The preference value is obtained from + the preference field of the received Router + Advertisement. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaListEntry 3 } + + + + + + + + + + + mip6HaRecvLifeTime OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lifetime for this home agent. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaListEntry 4 } + + mip6HaRecvTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time when the home agent advertisement was + received. + " + ::= { mip6HaListEntry 5 } + + -- + -- The list of global addresses of a home agent in the + -- home agent list + -- + + mip6HaGlAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Mip6HaGlAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the global addresses of the home + agents in the Home Agents List. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaAdvertisement 5 } + + + + + + + + + + + + + + + mip6HaGlAddrEntry OBJECT-TYPE + SYNTAX Mip6HaGlAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A global address for a home agent in the Home Agents + List. + The instances of the columnar objects in this entry + pertain to an interface for a particular value of + mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress + and mip6HaGaAddrSeqNo. + The mip6HaGaAddrSeqNo object is used to distinguish + between multiple instances of the home agent global + addresses on the same interface for the same set of + mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress, + values. + There is no upper-bound on the maximum number of + global addresses on an interface but, for practical + purposes, the upper-bound of the value + mip6HaGaAddrSeqNo is set to 1024. + The interface is uniquely identified by its + ipv6InterfaceIfIndex. The same ipv6InterfaceIfIndex + object is used in conjunction with the + mip6HaLinkLocalAddressType, mip6HaLinkLocalAddress, + and mip6HaGaAddrSeqNo to uniquely identify instances + of the columnar objects of this row. + + Implementors need to be aware that if the total + number of octets in mip6HaLinkLocalAddress + exceeds 111, then OIDs of column instances in + this row will have more than 128 sub-identifiers and + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3. + " + INDEX { ipv6InterfaceIfIndex, mip6HaLinkLocalAddressType, + mip6HaLinkLocalAddress, mip6HaGaAddrSeqNo } + ::= { mip6HaGlAddrTable 1 } + + Mip6HaGlAddrEntry ::= SEQUENCE { + mip6HaGaAddrSeqNo Integer32, + mip6HaGaGlobalAddressType InetAddressType, + mip6HaGaGlobalAddress InetAddress + } + + + + + + + + + + mip6HaGaAddrSeqNo OBJECT-TYPE + SYNTAX Integer32 (1..1024) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index that along with ipv6InterfaceIfIndex, + mip6HaLinkLocalAddressType, and + mip6HaLinkLocalAddress uniquely identifies this row. + " + REFERENCE + "RFC 3775 : Section 10.1" + ::= { mip6HaGlAddrEntry 1 } + + mip6HaGaGlobalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type for the global address of the + home agent that follows. + " + ::= { mip6HaGlAddrEntry 2 } + + mip6HaGaGlobalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A global address of the home agent. + + The type of the address represented by this object + is specified by the corresponding + mip6HaGaGlobalAddressType object. + " + ::= { mip6HaGlAddrEntry 3 } + +-- +-- Notifications +-- + + + + + + + + + + + + + mip6MnRegistered NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a home agent when + a mobile node registers with the home agent + for the first time. + Notifications will not be sent for subsequent + updates and/or refreshes. + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + REFERENCE + "RFC 3775 : Section 10.3.1" + ::= { mip6Notifications 1 } + + mip6MnDeRegistered NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a home agent every + time a mobile node de-registers with the home + agent by sending a Binding Update that requests + the home agent to delete a binding. + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + REFERENCE + "RFC 3775 : Section 10.3.2" + ::= { mip6Notifications 2 } + + + + + + + + + + mip6MnCOAChanged NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a home agent every + time a mobile node sends a Binding Update with + a new care-of address (for an existing Binding + Cache entry). + Notifications will not be sent for subsequent + updates and/or refreshes for the same Care-of + address. + The registration of a new care-of address may + indicate that the mobile node has moved or that + the primary care-of address of the mobile node + has become deprecated. + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + REFERENCE + "RFC 3775 : Section 11.5.2, 11.7.1" + ::= { mip6Notifications 3 } + + mip6MnBindingExpiredAtHA NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a home agent when a + binding for the mobile node at the home agent + expired (no timely Binding Updates were received). + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + REFERENCE + "RFC 3775 : Section 10.3.2" + ::= { mip6Notifications 4 } + + + + + mip6MnBindingExpiredAtCN NOTIFICATION-TYPE + OBJECTS { + mip6BindingTimeRegistered, + mip6BindingCOAType, + mip6BindingCOA + } + STATUS current + DESCRIPTION + "This notification is sent by a correspondent node + when a binding for the mobile node at the + correspondent node expired (no timely Binding + Updates were received). + The MO instances in the notifications will be + identified by the mip6BindingHomeAddressType + and mip6BindingHomeAddress for the mobile node + in the mip6BindingCacheTable. + " + ::= { mip6Notifications 5 } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Conformance information + mip6Groups OBJECT IDENTIFIER ::= { mip6Conformance 1 } + mip6Compliances OBJECT IDENTIFIER ::= { mip6Conformance 2 } + + -- Units of conformance + mip6SystemGroup OBJECT-GROUP + OBJECTS { + mip6Capabilities, + mip6Status + } + STATUS current + DESCRIPTION + " A collection of objects for basic MIPv6 + monitoring." + ::= { mip6Groups 1 } + + mip6BindingCacheGroup OBJECT-GROUP + OBJECTS { + mip6BindingCOAType, + mip6BindingCOA, + mip6BindingTimeRegistered, + mip6BindingTimeGranted, + mip6BindingTimeRemaining, + mip6BindingMaxSeq, + mip6BindingHomeRegn, + mip6BindingUsageTS, + mip6BindingUsageCount, + mip6BindingAdminStatus + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the + Binding Cache. + " + ::= { mip6Groups 2 } + + + + + + + + + + + + + + + + + mip6BindingHstGroup OBJECT-GROUP + OBJECTS { + mip6BindingHstCOAType, + mip6BindingHstCOA, + mip6BindingHstTimeRegistered, + mip6BindingHstTimeExpired, + mip6BindingHstHomeRegn, + mip6BindingHstUsageTS, + mip6BindingHstUsageCount + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the + Binding History. This can be used to monitor + the movement of the mobile node. + " + ::= { mip6Groups 3 } + + mip6TotalTrafficGroup OBJECT-GROUP + OBJECTS { + mip6InOctets, + mip6HCInOctets, + mip6InPkts, + mip6HCInPkts, + mip6OutOctets, + mip6HCOutOctets, + mip6OutPkts, + mip6HCOutPkts, + mip6CounterDiscontinuityTime + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the + total MIPv6 traffic. + " + ::= { mip6Groups 4 } + + + + + + + + + + + + + + + + mip6NodeTrafficGroup OBJECT-GROUP + OBJECTS { + mip6NodeInOctets, + mip6HCNodeInOctets, + mip6NodeInPkts, + mip6HCNodeInPkts, + mip6NodeOutOctets, + mip6HCNodeOutOctets, + mip6NodeOutPkts, + mip6HCNodeOutPkts, + mip6NodeCtrDiscontinuityTime + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring the + MIPv6 traffic due to a mobile node. + " + ::= { mip6Groups 5 } + + mip6MnSystemGroup OBJECT-GROUP + OBJECTS { + mip6MnHomeAddressState + } + STATUS current + DESCRIPTION + " A collection of objects for basic monitoring + of the mobile node. + " + ::= { mip6Groups 6 } + + mip6MnConfGroup OBJECT-GROUP + OBJECTS { + mip6MnDiscoveryRequests, + mip6MnDiscoveryReplies, + mip6MnDiscoveryTimeouts, + mip6MnPrefixSolicitationsSent, + mip6MnPrefixAdvsRecd, + mip6MnPrefixAdvsIgnored, + mip6MnMovedToFN, + mip6MnMovedToHN + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the advertisement-related info on the + mobile node. + " + ::= { mip6Groups 7 } + + + + mip6MnRegistrationGroup OBJECT-GROUP + OBJECTS { + mip6MnBLCOAType, + mip6MnBLCOA, + mip6MnBLLifeTimeRequested, + mip6MnBLLifeTimeGranted, + mip6MnBLMaxSeq, + mip6MnBLTimeSent, + mip6MnBLAccepted, + mip6MnBLAcceptedTime, + mip6MnBLRetransmissions, + mip6MnBLDontSendBUFlag, + -- + -- Binding Update List + -- + mip6MnMobilityMessagesSent, + mip6MnMobilityMessagesRecd, + mip6MnBUsToHA, + mip6MnBUAcksFromHA, + mip6MnBUsToCN, + mip6MnBUAcksFromCN, + mip6MnBindingErrorsFromCN, + mip6MnICMPErrorsRecd, + mip6MnBRRequestsRecd + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the registration statistics for the mobile node. + " + ::= { mip6Groups 8 } + + + + + + + + + + + + + + + + + + + + + mip6CnStatsGroup OBJECT-GROUP + OBJECTS { + mip6CnBURequestsAccepted, + mip6CnBURequestsRejected, + mip6CnBCEntryCreationTime, + mip6CnBUAcceptedTime, + mip6CnBURejectionTime, + mip6CnBURejectionCode, + mip6CnCtrDiscontinuityTime + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the control messages and corresponding + statistics for each mobile node + communicating with the correspondent + node. + " + ::= { mip6Groups 9 } + + mip6HaSystemGroup OBJECT-GROUP + OBJECTS { + mip6HaAdvsRecd, + mip6HaAdvsSent, + mip6HaAdvPreference, + mip6HaAdvLifetime, + mip6HaPrefixAdv, + mip6HaPrefixSolicitation, + mip6HaMCastCtlMsgSupport + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the advertisement-related parameters and + statistics for the home agent. + " + ::= { mip6Groups 10 } + + + + + + + + + + + + + + + mip6HaListGroup OBJECT-GROUP + OBJECTS { + mip6HaPreference, + mip6HaRecvLifeTime, + mip6HaRecvTimeStamp, + mip6HaGaGlobalAddressType, + mip6HaGaGlobalAddress + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + the Home Agent List on the home agent. + " + ::= { mip6Groups 11 } + + mip6HaStatsGroup OBJECT-GROUP + OBJECTS { + mip6HaBURequestsAccepted, + mip6HaBURequestsDenied, + mip6HaBCEntryCreationTime, + mip6HaBUAcceptedTime, + mip6HaBURejectionTime, + mip6HaRecentBURejectionCode, + mip6HaCtrDiscontinuityTime + + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + registration-related statistics on the home agent. + " + ::= { mip6Groups 12 } + + + + + + + + + + + + + + + + + + + + mip6CnGlobalStatsGroup OBJECT-GROUP + OBJECTS { + mip6CnHomeTestInitsRecd, + mip6CnHomeTestsSent, + mip6CnCareOfTestInitsRecd, + mip6CnCareOfTestsSent, + mip6CnBUsRecd, + mip6CnBUAcksSent, + mip6CnBRsSent, + mip6CnBindingErrors, + mip6CnBUsAccepted, + mip6CnBUsRejected, + mip6CnReasonUnspecified, + mip6CnInsufficientResource, + mip6CnHomeRegnNotSupported, + mip6CnSeqNumberOutOfWindow, + mip6CnExpiredHomeNonceIndex, + mip6CnExpiredCareOfNonceIndex, + mip6CnExpiredNonce, + mip6CnRegTypeChangeDisallowed + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + advertisement and registration statistics on + a correspondent node. + " + ::= { mip6Groups 13 } + + + + + + + + + + + + + + + + + + + + + + + + mip6HaGlobalStatsGroup OBJECT-GROUP + OBJECTS { + mip6HaHomeTestInitsRecd, + mip6HaHomeTestsSent, + mip6HaBUsRecd, + mip6HaBUAcksSent, + mip6HaBRAdviceSent, + mip6HaBUsAccepted, + mip6HaPrefDiscoverReqd, + mip6HaReasonUnspecified, + mip6HaAdmProhibited, + mip6HaInsufficientResource, + mip6HaHomeRegnNotSupported, + mip6HaNotHomeSubnet, + mip6HaNotHomeAgentForThisMN, + mip6HaDupAddrDetectionFailed, + mip6HaSeqNumberOutOfWindow, + mip6HaExpiredHomeNonceIndex, + mip6HaRegTypeChangeDisallowed + + } + STATUS current + DESCRIPTION + " A collection of objects for monitoring + advertisement and registration statistics on + a home agent. + " + ::= { mip6Groups 14 } + + mip6BindingCacheCtlGroup OBJECT-GROUP + OBJECTS { + mip6BindingAdminStatus + } + STATUS current + DESCRIPTION + "A collection of objects for controlling the + Binding Cache. + " + ::= { mip6Groups 15 } + + + + + + + + + + + + + mip6NotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mip6MnRegistered, + mip6MnDeRegistered, + mip6MnCOAChanged, + mip6MnBindingExpiredAtHA, + mip6MnBindingExpiredAtCN + } + STATUS current + DESCRIPTION + "A collection of notifications from a home agent + or correspondent node to the Manager about the + status of a mobile node. + " + ::= { mip6Groups 16 } + + + + -- Compliance statements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mip6CoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB. + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup } + + ::= { mip6Compliances 1 } + + mip6Compliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and support + monitoring of the Binding Cache and the Total + Traffic. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup, + mip6BindingCacheGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 2 } + + + + + + + + + mip6Compliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the Binding Cache, + the Binding History, the total traffic, and + the mobile node-wide traffic. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHstHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the + -- mip6BindingHstHomeAddress object. + -- + -- OBJECT mip6BindingHstHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the + -- mip6BindingHstHomeAddress object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup, + mip6BindingCacheGroup, + mip6BindingHstGroup, + mip6TotalTrafficGroup, + mip6NodeTrafficGroup + } + + + + ::= { mip6Compliances 3 } + + + mip6CoreReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode). + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup } + + OBJECT mip6Status + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mip6Compliances 4 } + + mip6ReadOnlyCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and + support monitoring of the Binding Cache and Total + Traffic. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + " + MODULE -- this module + + + + MANDATORY-GROUPS { mip6SystemGroup, + mip6BindingCacheGroup, + mip6TotalTrafficGroup + } + OBJECT mip6Status + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6BindingAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mip6Compliances 5 } + + mip6ReadOnlyCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and support + monitoring of the Binding Cache, the Binding History, + the total traffic, and the mobile node-wide traffic. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHstHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the + -- mip6BindingHstHomeAddress object. + -- + + + + -- OBJECT mip6BindingHstHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the + -- mip6BindingHstHomeAddress object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6SystemGroup, + mip6BindingCacheGroup, + mip6BindingHstGroup, + mip6TotalTrafficGroup, + mip6NodeTrafficGroup + } + OBJECT mip6Status + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6BindingAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mip6Compliances 6 } + + mip6MnCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the basic mobile node + functionality. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6MnHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnHomeAddress + -- object. + -- + -- OBJECT mip6MnHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + + + + -- ipv6 addresses for the mip6MnHomeAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6MnSystemGroup + } + ::= { mip6Compliances 7 } + + mip6MnCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the mobile node + functionality specifically the Discovery- and + Registration-related statistics, + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6MnHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnHomeAddress + -- object. + -- + -- OBJECT mip6MnHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnHomeAddress + -- object. + -- + -- OBJECT mip6MnBLNodeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnBLNodeAddress + -- object. + -- + -- OBJECT mip6MnBLNodeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6MnBLNodeAddress + -- object. + + + + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6MnSystemGroup, + mip6MnConfGroup, + mip6MnRegistrationGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 8 } + + mip6CnCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the basic correspondent node + functionality. + " + MODULE -- this module + MANDATORY-GROUPS { mip6CnGlobalStatsGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 9 } + + mip6CnCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the basic correspondent node + functionality. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + + + + " + MODULE -- this module + MANDATORY-GROUPS { mip6CnGlobalStatsGroup, + mip6CnStatsGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 10 } + + mip6HaCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the basic home agent + functionality. + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup + } + ::= { mip6Compliances 11 } + + mip6HaCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring of the home agent + functionality specifically the Home Agent List + and the home-agent-registration-related statistics, + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddressType + + + + -- SYNTAX InetAddressType { ipv6z(4) } + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddress + -- SYNTAX InetAddress (SIZE(20)) + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup, + mip6HaListGroup, + mip6HaStatsGroup, + mip6HaGlobalStatsGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 12 } + + mip6HaCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support monitoring and control of the home agent + functionality specifically the Home Agent List + and the home-agent-registration-related statistics, + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + + + + -- object. + -- + -- OBJECT mip6HaLinkLocalAddressType + -- SYNTAX InetAddressType { ipv6z(4) } + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddress + -- SYNTAX InetAddress (SIZE(20)) + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup, + mip6HaListGroup, + mip6HaStatsGroup, + mip6HaGlobalStatsGroup, + mip6BindingCacheCtlGroup, + mip6TotalTrafficGroup + } + ::= { mip6Compliances 13 } + + + + + + + + + + + + + + + + + + + + + + + + + + mip6HaCoreReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and + support monitoring of the basic home agent + functionality. + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup + } + OBJECT mip6HaAdvPreference + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaAdvLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixAdv + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixSolicitation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaMCastCtlMsgSupport + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mip6Compliances 14 } + + + + + + + + + + + + + + mip6HaReadOnlyCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and + support monitoring of the home agent + functionality specifically the Home Agent List + and the home-agent-registration-related statistics. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddressType + -- SYNTAX InetAddressType { ipv6z(4) } + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddress + -- SYNTAX InetAddress (SIZE(20)) + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup, + mip6HaListGroup, + mip6HaStatsGroup, + mip6HaGlobalStatsGroup, + + + + mip6TotalTrafficGroup + } + + OBJECT mip6HaAdvPreference + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaAdvLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixAdv + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixSolicitation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaMCastCtlMsgSupport + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mip6Compliances 15 } + + + + + + + + + + + + + + + + + + + + + + + mip6HaReadOnlyCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB without support + for read-write (i.e., in read-only mode) and + support monitoring and control of the home agent + functionality specifically the Home Agent List + and the home-agent-registration-related statistics, + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddressType + -- SYNTAX InetAddressType { ipv6z(4) } + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + -- OBJECT mip6HaLinkLocalAddress + -- SYNTAX InetAddress (SIZE(20)) + -- DESCRIPTION + -- This MIB module requires support for local + -- ipv6 addresses for the mip6HaLinkLocalAddress + -- object. + -- + " + MODULE -- this module + MANDATORY-GROUPS { mip6HaSystemGroup, + mip6HaListGroup, + mip6HaStatsGroup, + mip6HaGlobalStatsGroup, + + + + mip6BindingCacheCtlGroup, + mip6TotalTrafficGroup + } + + OBJECT mip6HaAdvPreference + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaAdvLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixAdv + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaPrefixSolicitation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6HaMCastCtlMsgSupport + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mip6BindingAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mip6Compliances 16 } + + mip6NotificationCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the MOBILEIPV6-MIB and + support Notification from home agent or + correspondent node to management stations + about the mobile node status. + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which there are compliance requirements, + expressed in OBJECT clause form in this description: + + + + -- OBJECT mip6BindingHomeAddressType + -- SYNTAX InetAddressType { ipv6(2) } + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + -- + -- OBJECT mip6BindingHomeAddress + -- SYNTAX InetAddress (SIZE(16)) + -- DESCRIPTION + -- This MIB module requires support for global + -- ipv6 addresses for the mip6BindingHomeAddress + -- object. + " + MODULE -- this module + MANDATORY-GROUPS { mip6NotificationGroup + } + ::= { mip6Compliances 17 } + + END diff --git a/mibs/ietf/MPLS-FTN-STD-MIB b/mibs/ietf/MPLS-FTN-STD-MIB new file mode 100644 index 0000000..771557e --- /dev/null +++ b/mibs/ietf/MPLS-FTN-STD-MIB @@ -0,0 +1,1086 @@ +MPLS-FTN-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Counter64, Integer32 + FROM SNMPv2-SMI -- [RFC2578] + RowStatus, StorageType, RowPointer, + TEXTUAL-CONVENTION, TimeStamp + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InterfaceIndexOrZero, + ifGeneralInformationGroup, ifCounterDiscontinuityGroup + FROM IF-MIB -- [RFC2863] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + Dscp + FROM DIFFSERV-DSCP-TC -- [RFC3289] + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB -- [RFC3291] + mplsStdMIB + FROM MPLS-TC-STD-MIB -- [RFC3811] + + + + ; + +mplsFTNStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 6, 2004 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " + Thomas D. Nadeau + Postal: Cisco Systems, Inc. + 250 Apollo Drive + Chelmsford, MA 01824 + Tel: +1-978-244-3051 + Email: tnadeau@cisco.com + + Cheenu Srinivasan + Postal: Bloomberg L.P. + 499 Park Avenue + New York, NY 10022 + Tel: +1-212-893-3682 + Email: cheenu@bloomberg.net + + Arun Viswanathan + Postal: Force10 Networks, Inc. + 1440 McCarthy Blvd + Milpitas, CA 95035 + Tel: +1-408-571-3516 + Email: arunv@force10networks.com + + IETF MPLS Working Group email: mpls@uu.net" + + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3814. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB module contains managed object definitions for + specifying FEC to NHLFE (FTN) mappings and corresponding + performance for MPLS." + + -- Revision history. + + REVISION + "200406030000Z" -- June 3, 2004 + + DESCRIPTION + "Initial version issued as part of RFC 3814." + + + + ::= { mplsStdMIB 8 } + +-- TEXTUAL-CONVENTIONs used in this MIB. +MplsFTNEntryIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Index for an entry in mplsFTNTable." + SYNTAX Unsigned32 (1..4294967295) + +MplsFTNEntryIndexOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Index for an entry in mplsFTNTable or the special value + zero. The value zero is object-specific and must + therefore be defined as part of the description of any + object which uses this syntax. Examples of the usage + of zero might include situations when none or all + entries in mplsFTNTable need to be referenced." + SYNTAX Unsigned32 (0..4294967295) + +-- Top-Level Components of this MIB. + +mplsFTNNotifications OBJECT IDENTIFIER ::= { mplsFTNStdMIB 0 } +mplsFTNObjects OBJECT IDENTIFIER ::= { mplsFTNStdMIB 1 } +mplsFTNConformance OBJECT IDENTIFIER ::= { mplsFTNStdMIB 2 } + +-- Next free index in mplsFTNTable. +mplsFTNIndexNext OBJECT-TYPE + SYNTAX MplsFTNEntryIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available valid value to + be used for mplsFTNIndex when creating entries in the + mplsFTNTable. + + When creating a new conceptual row (configuration + entry) in mplsFTNTable with an SNMP SET operation the + command generator (Network Management Application) must + first issue a management protocol retrieval operation + to obtain the current value of this object. + + If the command responder (agent) does not wish to allow + creation of more entries in mplsFTNTable, possibly + because of resource exhaustion, this object MUST return + a value of 0. + + If a non-zero value is returned the Network Management + + + + Application must determine whether the value is indeed + still unused since two Network Management Applications + may attempt to create a row simultaneously and use the + same value. + + If it is currently unused and the SET succeeds, the + agent MUST change the value of this object to a + currently unused non-zero value (according to an + implementation specific algorithm) or zero (if no + further row creation will be permitted). + + If the value is in use, however, the SET fails and the + Network Management Application must then reread this + object to obtain a new usable value." + ::= { mplsFTNObjects 1 } + +-- Last time an object in mplsFTNTable changed. +mplsFTNTableLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the last time an entry was added, deleted or + modified in mplsFTNTable. Management stations should + consult this object to determine if mplsFTNTable + requires their attention. This object is particularly + useful for applications performing a retrieval on + mplsFTNTable to ensure that the table is not modified + during the retrieval operation." + ::= { mplsFTNObjects 2 } + +-- Table of FTN entries. +mplsFTNTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFTNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the currently defined FTN entries. + This table allows FEC to NHLFE mappings to be + specified. Each entry in this table defines a rule to + be applied to incoming packets (on interfaces that the + FTN entry is activated on using mplsFTNMapTable) and an + action to be taken on matching packets + (mplsFTNActionPointer). + + This table supports 6-tuple matching rules based on one + or more of source address range, destination address + range, source port range, destination port range, IPv4 + + + + Protocol field or IPv6 next-header field and the + DiffServ Code Point (DSCP) to be specified. + + The action pointer points either to instance of + mplsXCEntry in MPLS-LSR-STD-MIB when the NHLFE is a non- + TE LSP, or to an instance of mplsTunnelEntry in the + MPLS-TE-STD-MIB when the NHLFE is an originating TE + tunnel." + REFERENCE + "J. Postel, Internet Protocol, RFC 791, STD 5, September + 1981 + + Deering, S., and R. Hinden, Internet Protocol, Version + 6 (IPv6) Specification, RFC 2460, December 1998 + + Nichols, K, Blake, S., Baker, F. and D. Black, + Definition of the Differentiated Services Field (DS + Field) in the IPv4 and IPv6 Headers, RFC 2474, December + 1998 + + Srinivasan, C., A. Viswanathan, and T. Nadeau, MPLS + Label Switch Router Management Information Base, + RFC 3813 + + Srinivasan, C., A. Viswanathan, and T. Nadeau, MPLS + Traffic Engineering Management Information Base, + RFC 3812" + ::= { mplsFTNObjects 3 } + +mplsFTNEntry OBJECT-TYPE + SYNTAX MplsFTNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents one FTN entry which defines a + rule to compare incoming packets with and an action to + be taken on matching packets." + INDEX { mplsFTNIndex } + ::= { mplsFTNTable 1 } + +MplsFTNEntry ::= SEQUENCE { + mplsFTNIndex MplsFTNEntryIndex, + mplsFTNRowStatus RowStatus, + mplsFTNDescr SnmpAdminString, + mplsFTNMask BITS, + mplsFTNAddrType InetAddressType, + mplsFTNSourceAddrMin InetAddress, + mplsFTNSourceAddrMax InetAddress, + + + + mplsFTNDestAddrMin InetAddress, + mplsFTNDestAddrMax InetAddress, + mplsFTNSourcePortMin InetPortNumber, + mplsFTNSourcePortMax InetPortNumber, + mplsFTNDestPortMin InetPortNumber, + mplsFTNDestPortMax InetPortNumber, + mplsFTNProtocol Integer32, + mplsFTNDscp Dscp, + mplsFTNActionType INTEGER, + mplsFTNActionPointer RowPointer, + mplsFTNStorageType StorageType + } + +mplsFTNIndex OBJECT-TYPE + SYNTAX MplsFTNEntryIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the unique index for a conceptual row in + mplsFTNTable. + + To create a new conceptual row in mplsFTNTable a + Network Management Application SHOULD retrieve the + current value of mplsFTNIndexNext to determine the next + valid available value of mplsFTNIndex." + ::= { mplsFTNEntry 1 } + +mplsFTNRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Used for controlling the creation and deletion of this + row. All writeable objects in this row may be modified + at any time. If a Network Management Application + attempts to delete a conceptual row by setting this + object to 'destroy' and there are one or more entries + in mplsFTNMapTable pointing to the row (i.e., when + mplsFTNIndex of the conceptual row being deleted is + equal to mplsFTNMapCurrIndex for one or more entries in + mplsFTNMapTable), the agent MUST also destroy the + corresponding entries in mplsFTNMapTable." + ::= { mplsFTNEntry 2 } + +mplsFTNDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The description of this FTN entry. Since the index for + this table has no particular significance or meaning, + this object should contain some meaningful text that an + operator could use to further distinguish entries in + this table." + ::= { mplsFTNEntry 3 } + +mplsFTNMask OBJECT-TYPE + SYNTAX BITS { + sourceAddr(0), + destAddr(1), + sourcePort(2), + destPort(3), + protocol(4), + dscp(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bit map indicates which of the fields described + next, namely source address range, destination address + range, source port range, destination port range, IPv4 + Protocol field or IPv6 next-header field and + Differentiated Services Code Point (DSCP) is active for + this FTN entry. If a particular bit is set to zero then + the corresponding field in the packet MUST be ignored + for comparison purposes." + ::= { mplsFTNEntry 4 } + +mplsFTNAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines the type of address contained in + the source and destination address objects + (mplsFTNSourceAddrMin, mplsFTNSourceAddrMax, + mplsFTNDestAddrMin and mplsFTNDestAddrMax) of a + conceptual row. + + This object MUST NOT be set to unknown(0) when + mplsFTNMask has bit positions sourceAddr(0) or + destAddr(1) set to one. + + When both these bit positions of mplsFTNMask are set to + zero the value of mplsFTNAddrType SHOULD be set to + unknown(0) and the corresponding source and destination + + + + address objects SHOULD be set to zero-length strings." + ::= { mplsFTNEntry 5 } + +mplsFTNSourceAddrMin OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower end of the source address range. The type of + this object is determined by the corresponding + mplsFTNAddrType object." + ::= { mplsFTNEntry 6 } + +mplsFTNSourceAddrMax OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upper end of the source address range. The type of + this object is determined by the corresponding + mplsFTNAddrType object." + ::= { mplsFTNEntry 7 } + +mplsFTNDestAddrMin OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower end of the destination address range. The + type of this object is determined by the corresponding + mplsFTNAddrType object." + ::= { mplsFTNEntry 8 } + +mplsFTNDestAddrMax OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The higher end of the destination address range. The + type of this object is determined by the corresponding + mplsFTNAddrType object." + ::= { mplsFTNEntry 9 } + +mplsFTNSourcePortMin OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The lower end of the source port range." + DEFVAL { 0 } + ::= { mplsFTNEntry 10 } + +mplsFTNSourcePortMax OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The higher end of the source port range " + DEFVAL { 65535 } + ::= { mplsFTNEntry 11 } + +mplsFTNDestPortMin OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The lower end of the destination port range." + DEFVAL { 0 } + ::= { mplsFTNEntry 12 } + +mplsFTNDestPortMax OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The higher end of the destination port range." + DEFVAL { 65535 } + ::= { mplsFTNEntry 13 } + +mplsFTNProtocol OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP protocol to match against the IPv4 protocol + number or IPv6 Next-Header number in the packet. A + value of 255 means match all. Note that the protocol + number of 255 is reserved by IANA, and Next-Header + number of 0 is used in IPv6." + DEFVAL { 255 } + ::= { mplsFTNEntry 14 } + +mplsFTNDscp OBJECT-TYPE + SYNTAX Dscp + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The contents of the DSCP field." + REFERENCE + "Nichols, K., Blake, S., Baker, F. and D. Black, + Definition of the Differentiated Services Field (DS + Field) in the IPv4 and IPv6 Headers, RFC 2474, December + 1998." + ::= { mplsFTNEntry 15 } + +mplsFTNActionType OBJECT-TYPE + SYNTAX INTEGER { + redirectLsp(1), -- redirect into LSP + redirectTunnel(2) -- redirect into tunnel + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of action to be taken on packets matching this + FTN entry." + ::= { mplsFTNEntry 16 } + +mplsFTNActionPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsFTNActionType is redirectLsp(1), then this + object MUST contain zeroDotZero or point to a instance + of mplsXCEntry indicating the LSP to redirect matching + packets to. + + If mplsFTNActionType is redirectTunnel(2), then this + object MUST contain zeroDotZero or point to a instance + of mplsTunnelEntry indicating the MPLS TE tunnel to + redirect matching packets to. + + If this object points to a conceptual row instance in a + table consistent with mplsFTNActionType but this + instance does not currently exist then no action will + be taken on packets matching such an FTN entry till + this instance comes into existence. + + If this object contains zeroDotZero then no action will + be taken on packets matching such an FTN entry till it + is populated with a valid pointer consistent with the + value of mplsFTNActionType as explained above." + ::= { mplsFTNEntry 17 } + + + + +mplsFTNStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this FTN entry. Conceptual rows + having the value 'permanent' need not allow write- + access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { mplsFTNEntry 18 } + +-- End of mplsFTNTable. + +-- Last time an object in mplsFTNMapTable changed. + +mplsFTNMapTableLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the last time an entry was added, deleted or + modified in mplsFTNMapTable. Management stations should + consult this object to determine if the table requires + their attention. This object is particularly useful + for applications performing a retrieval on + mplsFTNMapTable to ensure that the table is not + modified during the retrieval operation." + ::= { mplsFTNObjects 4 } + +-- FTN to interface mapping table. + +mplsFTNMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFTNMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects which provide the + capability to apply or map FTN rules as defined by + entries in mplsFTNTable to specific interfaces in the + system. FTN rules are compared with incoming packets + in the order in which they are applied on an interface. + + The indexing structure of mplsFTNMapTable is as + follows. + + - mplsFTNMapIndex indicates the interface to which the + rule is being applied. A value of 0 represents the + application of the rule to all interfaces. + + + + + - mplsFTNMapPrevIndex specifies the rule on the + interface prior to the one being applied. A value of + 0 specifies that the rule is being inserted at the + head of the list of rules currently applied to the + interface. + + - mplsFTNMapCurrIndex is the index in mplsFTNTable + corresponding to the rule being applied. + + This indexing structure makes the entries in the table + behave like items in a linked-list. The object + mplsFTNMapPrevIndex in each conceptual row is a pointer + to the previous entry that is applied to a particular + interface. This allows a new entry to be 'inserted' at + an arbitrary position in a list of entries currently + applied to an interface. This object is self- + adjusting, i.e., its value is automatically adjusted by + the agent, if necessary, after an insertion or deletion + operation. + + Using this linked-list structure, one can retrieve FTN + entries in the order of application on a per-interface + basis as follows: + + - To determine the first FTN entry on an interface + with index ifIndex perform a GETNEXT retrieval + operation on mplsFTNMapRowStatus.ifIndex.0.0; the + returned object, if one exists, is (say) + mplsFTNMapRowStatus.ifIndex.0.n (mplsFTNMapRowStatus + is the first accessible columnar object in the + conceptual row). Then the index of the first FTN + entry applied on this interface is n. + + - To determine the FTN entry applied to an interface + after the one indexed by n perform a GETNEXT + retrieval operation on + mplsFTNMapRowStatus.ifIndex.n.0. If such an entry + exists the returned object would be of the form + mplsFTNMapRowStatus.ifIndex.n.m. Then the index of + the next FTN entry applied on this interface is m. + + - If the FTN entry indexed by n is the last entry + applied to the interface with index ifIndex then the + object returned would either be: + + 1.mplsFTNMapRowStatus.ifIndexNext.0.k, where + ifIndexNext is the index of the next interface in + + + + ifTable to which an FTN entry has been applied, in + which case k is the index of the first FTN entry + applied to the interface with index ifIndexNext; + + or: + + 2.mplsFTNMapStorageType.firstIfIndex.0.p, if there + are no more entries in mplsFTNMapTable, where + firstIfIndex is the first entry in ifTable to + which an FTN entry has been mapped. + + Use the above steps to retrieve all the applied FTN + entries on a per-interface basis in application order. + Note that the number of retrieval operations is the + same as the number of applied FTN entries (i.e., the + minimum number of GETNEXT operations needed using any + indexing scheme). + + Agents MUST NOT allow the same FTN entry as specified + by mplsFTNMapCurrIndex to be applied multiple times to + the same interface. + + Agents MUST NOT allow the creation of rows in this + table until the corresponding rows are created in the + mplsFTNTable. + + If a row in mplsFTNTable is destroyed, the agent MUST + destroy the corresponding entries (i.e., ones with a + matching value of mplsFTNCurrIndex) in this table as + well." + ::= { mplsFTNObjects 5 } + +mplsFTNMapEntry OBJECT-TYPE + SYNTAX MplsFTNMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each conceptual row represents the application of an + FTN rule at a specific position in the list of FTN + rules applied on an interface. " + INDEX { + mplsFTNMapIndex, + mplsFTNMapPrevIndex, + mplsFTNMapCurrIndex + } + ::= { mplsFTNMapTable 1 } + +MplsFTNMapEntry ::= SEQUENCE { + + + + mplsFTNMapIndex InterfaceIndexOrZero, + mplsFTNMapPrevIndex MplsFTNEntryIndexOrZero, + mplsFTNMapCurrIndex MplsFTNEntryIndex, + mplsFTNMapRowStatus RowStatus, + mplsFTNMapStorageType StorageType + } + +mplsFTNMapIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index that this FTN entry is being + applied to. A value of zero indicates an entry that is + applied all interfaces. + + Entries mapped to an interface by specifying its (non- + zero) interface index in mplsFTNMapIndex are applied + ahead of entries with mplsFTNMapIndex equal to zero." + ::= { mplsFTNMapEntry 1 } + +mplsFTNMapPrevIndex OBJECT-TYPE + SYNTAX MplsFTNEntryIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the previous FTN entry that was applied to + this interface. The special value zero indicates that + this should be the first FTN entry in the list." + ::= { mplsFTNMapEntry 2 } + +mplsFTNMapCurrIndex OBJECT-TYPE + SYNTAX MplsFTNEntryIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of the current FTN entry that is being applied to + this interface." + ::= { mplsFTNMapEntry 3 } + +mplsFTNMapRowStatus OBJECT-TYPE + SYNTAX RowStatus { + active(1), + createAndGo(4), + destroy(6) + } + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "Used for controlling the creation and deletion of this + row. + + All writable objects in this row may be modified at any + time. + + If a conceptual row in mplsFTNMapTable points to a + conceptual row in mplsFTNTable which is subsequently + deleted, the corresponding conceptual row in + mplsFTNMapTable MUST also be deleted by the agent." + ::= { mplsFTNMapEntry 4 } + +mplsFTNMapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this entry. Conceptual rows + having the value 'permanent' need not allow write- + access to any columnar objects in this row." + DEFVAL { nonVolatile } + ::= { mplsFTNMapEntry 5 } + +-- End of mplsFTNMapTable + +-- FTN entry performance table + +mplsFTNPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFTNPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains performance statistics on FTN + entries on a per-interface basis." + ::= { mplsFTNObjects 6 } + +mplsFTNPerfEntry OBJECT-TYPE + SYNTAX MplsFTNPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains performance information for the + specified interface and an FTN entry mapped to this + interface." + INDEX { mplsFTNPerfIndex, mplsFTNPerfCurrIndex } + ::= { mplsFTNPerfTable 1 } + + + + +MplsFTNPerfEntry ::= SEQUENCE { + mplsFTNPerfIndex InterfaceIndexOrZero, + mplsFTNPerfCurrIndex MplsFTNEntryIndex, + mplsFTNPerfMatchedPackets Counter64, + mplsFTNPerfMatchedOctets Counter64, + mplsFTNPerfDiscontinuityTime TimeStamp + } + +mplsFTNPerfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index of an interface that an FTN entry + has been applied/mapped to. Each instance of this + object corresponds to an instance of mplsFTNMapIndex." + ::= { mplsFTNPerfEntry 1 } + +mplsFTNPerfCurrIndex OBJECT-TYPE + SYNTAX MplsFTNEntryIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of an FTN entry that has been applied/mapped to + the specified interface. Each instance of this object + corresponds to an instance of mplsFTNMapCurrIndex." + ::= { mplsFTNPerfEntry 2 } + +mplsFTNPerfMatchedPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets that matched the specified FTN entry + if it is applied/mapped to the specified interface. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsFTNDiscontinuityTime." + ::= { mplsFTNPerfEntry 3 } + +mplsFTNPerfMatchedOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of octets that matched the specified FTN entry + if it is applied/mapped to the specified interface. + + + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsFTNDiscontinuityTime." + ::= { mplsFTNPerfEntry 4 } + +mplsFTNPerfDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which any one or more of this entry's counters suffered + a discontinuity. If no such discontinuities have + occurred since the last re-initialization of the local + management subsystem, then this object contains a zero + value." + ::= { mplsFTNPerfEntry 5 } + +-- End of mplsFTNPerfTable + +-- Module compliance. + +-- Top level object IDs. + +mplsFTNGroups + OBJECT IDENTIFIER ::= { mplsFTNConformance 1 } +mplsFTNCompliances + OBJECT IDENTIFIER ::= { mplsFTNConformance 2 } + +-- Compliance requirement for fully compliant implementations. +mplsFTNModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide full + support for MPLS-FTN-STD-MIB." + + MODULE IF-MIB -- The Interfaces Group MIB, RFC 2863. + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- This module. + MANDATORY-GROUPS { + mplsFTNRuleGroup, + mplsFTNMapGroup, + mplsFTNPerfGroup + + + + } + + OBJECT mplsFTNAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + + OBJECT mplsFTNSourceAddrMin + SYNTAX InetAddress (SIZE (4 | 20)) + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + + OBJECT mplsFTNSourceAddrMax + SYNTAX InetAddress (SIZE (4 | 20)) + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + + OBJECT mplsFTNDestAddrMin + SYNTAX InetAddress (SIZE (4 | 20)) + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + + OBJECT mplsFTNDestAddrMax + SYNTAX InetAddress (SIZE (4 | 20)) + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation is only + required to support the address types that are actually + supported on the LSR." + ::= { mplsFTNCompliances 1 } + +-- Compliance requirement for read-only implementations. +mplsFTNModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only + + + + provide read-only support for MPLS-FTN-STD-MIB. Such + devices can then be monitored but cannot be configured + using this MIB module." + + MODULE IF-MIB -- The interfaces Group MIB, RFC 2863 + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- This module + MANDATORY-GROUPS { + mplsFTNRuleGroup, + mplsFTNMapGroup, + mplsFTNPerfGroup + } + + OBJECT mplsFTNIndexNext + MIN-ACCESS not-accessible + DESCRIPTION + "This object is not needed when mplsFTNTable is + implemented as read-only." + + OBJECT mplsFTNRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT mplsFTNDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNMask + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNSourceAddrMin + + + + SYNTAX InetAddress (SIZE (4 | 20)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNSourceAddrMax + SYNTAX InetAddress (SIZE (4 | 20)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNDestAddrMin + SYNTAX InetAddress (SIZE (4 | 20)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNDestAddrMax + SYNTAX InetAddress (SIZE (4 | 20)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is only + required to support IPv4 and IPv6 addresses." + + OBJECT mplsFTNSourcePortMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNSourcePortMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNDestPortMin + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNDestPortMax + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNProtocol + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNActionType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNActionPointer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNDscp + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFTNMapRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active(1) is the only + status that needs to be supported." + + OBJECT mplsFTNMapStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mplsFTNCompliances 2 } + +-- Units of conformance. +mplsFTNRuleGroup OBJECT-GROUP + OBJECTS { + mplsFTNIndexNext, + mplsFTNTableLastChanged, + mplsFTNRowStatus, + mplsFTNDescr, + mplsFTNMask, + mplsFTNAddrType, + mplsFTNSourceAddrMin, + mplsFTNSourceAddrMax, + + + + mplsFTNDestAddrMin, + mplsFTNDestAddrMax, + mplsFTNSourcePortMin, + mplsFTNSourcePortMax, + mplsFTNDestPortMin, + mplsFTNDestPortMax, + mplsFTNProtocol, + mplsFTNActionType, + mplsFTNActionPointer, + mplsFTNDscp, + mplsFTNStorageType + } + STATUS current + DESCRIPTION + "Collection of objects that implement MPLS FTN rules." + ::= { mplsFTNGroups 1 } + +mplsFTNMapGroup OBJECT-GROUP + OBJECTS { + mplsFTNMapTableLastChanged, + mplsFTNMapRowStatus, + mplsFTNMapStorageType + } + STATUS current + DESCRIPTION + "Collection of objects that implement activation of MPLS + FTN entries on interfaces." + ::= { mplsFTNGroups 2 } + +mplsFTNPerfGroup OBJECT-GROUP + OBJECTS { + mplsFTNPerfMatchedPackets, + mplsFTNPerfMatchedOctets, + mplsFTNPerfDiscontinuityTime + } + STATUS current + DESCRIPTION + "Collection of objects providing MPLS FTN performance + information." + ::= { mplsFTNGroups 3 } + +END diff --git a/mibs/ietf/MPLS-L3VPN-STD-MIB b/mibs/ietf/MPLS-L3VPN-STD-MIB new file mode 100644 index 0000000..604b955 --- /dev/null +++ b/mibs/ietf/MPLS-L3VPN-STD-MIB @@ -0,0 +1,1682 @@ +MPLS-L3VPN-STD-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Counter32, Unsigned32, Gauge32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, TruthValue, RowStatus, + TimeStamp, StorageType + FROM SNMPv2-TC -- [RFC2579] + InterfaceIndex, InterfaceIndexOrZero + FROM IF-MIB -- [RFC2863] + VPNIdOrZero + FROM VPN-TC-STD-MIB -- [RFC4265] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + IANAipRouteProtocol + FROM IANA-RTPROTO-MIB -- [RTPROTO] + InetAddress, InetAddressType, + InetAddressPrefixLength, + InetAutonomousSystemNumber + FROM INET-ADDRESS-MIB -- [RFC4001] + mplsStdMIB + FROM MPLS-TC-STD-MIB -- [RFC3811] + + + + MplsIndexType + FROM MPLS-LSR-STD-MIB -- [RFC3813] + ; + +mplsL3VpnMIB MODULE-IDENTITY + LAST-UPDATED "200601230000Z" -- 23 January 2006 + ORGANIZATION "IETF Layer-3 Virtual Private + Networks Working Group." + CONTACT-INFO + " Thomas D. Nadeau + tnadeau@cisco.com + + Harmen van der Linde + havander@cisco.com + + Comments and discussion to l3vpn@ietf.org" + DESCRIPTION + "This MIB contains managed object definitions for the + Layer-3 Multiprotocol Label Switching Virtual + Private Networks. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC4382; see + the RFC itself for full legal notices." + -- Revision history. + REVISION + "200601230000Z" -- 23 January 2006 + DESCRIPTION + "Initial version. Published as RFC 4382." + ::= { mplsStdMIB 11 } + +-- Textual Conventions. +MplsL3VpnName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An identifier that is assigned to each MPLS/BGP VPN and + is used to uniquely identify it. This is assigned by the + system operator or NMS and SHOULD be unique throughout + the MPLS domain. If this is the case, then this identifier + can then be used at any LSR within a specific MPLS domain + to identify this MPLS/BGP VPN. It may also be possible to + preserve the uniqueness of this identifier across MPLS + domain boundaries, in which case this identifier can then + be used to uniquely identify MPLS/BGP VPNs on a more global + basis. This object MAY be set to the VPN ID as defined in + RFC 2685." + REFERENCE + "RFC 2685 Fox B., et al, 'Virtual Private + + + + Networks Identifier', September 1999." + SYNTAX OCTET STRING (SIZE (0..31)) + +MplsL3VpnRouteDistinguisher ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route distinguisher and route target + as defined in [RFC4364]." + REFERENCE + "[RFC4364]" + SYNTAX OCTET STRING(SIZE (0..256)) + +MplsL3VpnRtType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Used to define the type of a route target usage. + Route targets can be specified to be imported, + exported, or both. For a complete definition of a + route target, see [RFC4364]." + REFERENCE + "[RFC4364]" + SYNTAX INTEGER { import(1), export(2), both(3) } + +-- Top level components of this MIB. +mplsL3VpnNotifications OBJECT IDENTIFIER ::= { mplsL3VpnMIB 0 } +mplsL3VpnObjects OBJECT IDENTIFIER ::= { mplsL3VpnMIB 1 } +mplsL3VpnScalars OBJECT IDENTIFIER ::= { mplsL3VpnObjects 1 } +mplsL3VpnConf OBJECT IDENTIFIER ::= { mplsL3VpnObjects 2 } +mplsL3VpnPerf OBJECT IDENTIFIER ::= { mplsL3VpnObjects 3 } +mplsL3VpnRoute OBJECT IDENTIFIER ::= { mplsL3VpnObjects 4 } +mplsL3VpnConformance OBJECT IDENTIFIER ::= { mplsL3VpnMIB 2 } + +-- +-- Scalar Objects +-- + +mplsL3VpnConfiguredVrfs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of VRFs that are configured on this node." + ::= { mplsL3VpnScalars 1 } + +mplsL3VpnActiveVrfs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of VRFs that are active on this node. + That is, those VRFs whose corresponding mplsL3VpnVrfOperStatus + object value is equal to operational (1)." + ::= { mplsL3VpnScalars 2 } + +mplsL3VpnConnectedInterfaces OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of interfaces connected to a VRF." + ::= { mplsL3VpnScalars 3 } + +mplsL3VpnNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true, then it enables the + generation of all notifications defined in + this MIB. This object's value should be + preserved across agent reboots." + REFERENCE + "See also [RFC3413] for explanation that + notifications are under the ultimate control of the + MIB modules in this document." + DEFVAL { false } + ::= { mplsL3VpnScalars 4 } + +mplsL3VpnVrfConfMaxPossRts OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes maximum number of routes that the device + will allow all VRFs jointly to hold. If this value is + set to 0, this indicates that the device is + unable to determine the absolute maximum. In this + case, the configured maximum MAY not actually + be allowed by the device." + ::= { mplsL3VpnScalars 5 } + +mplsL3VpnVrfConfRteMxThrshTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Denotes the interval in seconds, at which the route max threshold + notification may be reissued after the maximum value has been + exceeded (or has been reached if mplsL3VpnVrfConfMaxRoutes and + mplsL3VpnVrfConfHighRteThresh are equal) and the initial + notification has been issued. This value is intended to prevent + continuous generation of notifications by an agent in the event + that routes are continually added to a VRF after it has reached + its maximum value. If this value is set to 0, the agent should + only issue a single notification at the time that the maximum + threshold has been reached, and should not issue any more + notifications until the value of routes has fallen below the + configured threshold value. This is the recommended default + behavior." + DEFVAL { 0 } + ::= { mplsL3VpnScalars 6 } + +mplsL3VpnIllLblRcvThrsh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of illegally received labels above which + the mplsNumVrfSecIllglLblThrshExcd notification + is issued. The persistence of this value mimics + that of the device's configuration." + ::= { mplsL3VpnScalars 7 } + +-- VPN Interface Configuration Table + +mplsL3VpnIfConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnIfConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS capability + and associated information." + ::= { mplsL3VpnConf 1 } + +mplsL3VpnIfConfEntry OBJECT-TYPE + SYNTAX MplsL3VpnIfConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every interface capable of supporting MPLS L3VPN. + Each entry in this table is meant to correspond to + an entry in the Interfaces Table." + + + + INDEX { mplsL3VpnVrfName, mplsL3VpnIfConfIndex } + ::= { mplsL3VpnIfConfTable 1 } + +MplsL3VpnIfConfEntry ::= SEQUENCE { + mplsL3VpnIfConfIndex InterfaceIndex, + mplsL3VpnIfVpnClassification INTEGER, + mplsL3VpnIfVpnRouteDistProtocol BITS, + mplsL3VpnIfConfStorageType StorageType, + mplsL3VpnIfConfRowStatus RowStatus +} + +mplsL3VpnIfConfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a unique index for an entry in the + mplsL3VpnIfConfTable. A non-zero index for an + entry indicates the ifIndex for the corresponding + interface entry in the MPLS-VPN-layer in the ifTable. + Note that this table does not necessarily correspond + one-to-one with all entries in the Interface MIB + having an ifType of MPLS-layer; rather, only those + that are enabled for MPLS L3VPN functionality." + REFERENCE + "RFC2863" + ::= { mplsL3VpnIfConfEntry 1 } + +mplsL3VpnIfVpnClassification OBJECT-TYPE + SYNTAX INTEGER { carrierOfCarrier (1), + enterprise (2), + interProvider (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes whether this link participates in a + carrier's carrier, enterprise, or inter-provider + scenario." + DEFVAL { enterprise } + ::= { mplsL3VpnIfConfEntry 2 } + +mplsL3VpnIfVpnRouteDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + bgp (1), + ospf (2), + rip(3), + isis(4), + + + + static(5), + other (6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes the route distribution protocol across the + PE-CE link. Note that more than one routing protocol + may be enabled at the same time; thus, this object is + specified as a bitmask. For example, static(5) and + ospf(2) are a typical configuration." + ::= { mplsL3VpnIfConfEntry 3 } + +mplsL3VpnIfConfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this VPN If entry. + Conceptual rows having the value 'permanent' + need not allow write access to any columnar + objects in the row." + REFERENCE + "See RFC2579." + DEFVAL { volatile } + ::= { mplsL3VpnIfConfEntry 4 } + +mplsL3VpnIfConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. Rows in this + table signify that the specified interface is + associated with this VRF. If the row creation + operation succeeds, the interface will have been + associated with the specified VRF, otherwise the + agent MUST not allow the association. If the agent + only allows read-only operations on this table, it + MUST create entries in this table as they are created + on the device. When a row in this table is in + active(1) state, no objects in that row can be + modified except mplsL3VpnIfConfStorageType and + mplsL3VpnIfConfRowStatus." + ::= { mplsL3VpnIfConfEntry 5 } + +-- VRF Configuration Table + + + +mplsL3VpnVrfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS L3VPN + VRF Table capability and associated information. + Entries in this table define VRF routing instances + associated with MPLS/VPN interfaces. Note that + multiple interfaces can belong to the same VRF + instance. The collection of all VRF instances + comprises an actual VPN." + ::= { mplsL3VpnConf 2 } + +mplsL3VpnVrfEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS L3VPN. The + indexing provides an ordering of VRFs per-VPN + interface." + INDEX { mplsL3VpnVrfName } + ::= { mplsL3VpnVrfTable 1 } +MplsL3VpnVrfEntry ::= SEQUENCE { + mplsL3VpnVrfName MplsL3VpnName, + mplsL3VpnVrfVpnId VPNIdOrZero, + mplsL3VpnVrfDescription SnmpAdminString, + mplsL3VpnVrfRD MplsL3VpnRouteDistinguisher, + mplsL3VpnVrfCreationTime TimeStamp, + mplsL3VpnVrfOperStatus INTEGER, + mplsL3VpnVrfActiveInterfaces Gauge32, + mplsL3VpnVrfAssociatedInterfaces Unsigned32, + mplsL3VpnVrfConfMidRteThresh Unsigned32, + mplsL3VpnVrfConfHighRteThresh Unsigned32, + mplsL3VpnVrfConfMaxRoutes Unsigned32, + mplsL3VpnVrfConfLastChanged TimeStamp, + mplsL3VpnVrfConfRowStatus RowStatus, + mplsL3VpnVrfConfAdminStatus INTEGER, + mplsL3VpnVrfConfStorageType StorageType +} + +mplsL3VpnVrfName OBJECT-TYPE + SYNTAX MplsL3VpnName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The human-readable name of this VPN. This MAY + be equivalent to the [RFC2685] VPN-ID, but may + also vary. If it is set to the VPN ID, it MUST + be equivalent to the value of mplsL3VpnVrfVpnId. + It is strongly recommended that all sites supporting + VRFs that are part of the same VPN use the same + naming convention for VRFs as well as the same VPN + ID." + REFERENCE + "[RFC2685]" + ::= { mplsL3VpnVrfEntry 1 } + +mplsL3VpnVrfVpnId OBJECT-TYPE + SYNTAX VPNIdOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VPN ID as specified in [RFC2685]. If a VPN ID + has not been specified for this VRF, then this + variable SHOULD be set to a zero-length OCTET + STRING." + ::= { mplsL3VpnVrfEntry 2 } + +mplsL3VpnVrfDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The human-readable description of this VRF." + DEFVAL { "" } + ::= { mplsL3VpnVrfEntry 3 } + +mplsL3VpnVrfRD OBJECT-TYPE + SYNTAX MplsL3VpnRouteDistinguisher + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The route distinguisher for this VRF." + DEFVAL { "" } + ::= { mplsL3VpnVrfEntry 4 } + +mplsL3VpnVrfCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time at which this VRF entry was created." + ::= { mplsL3VpnVrfEntry 5 } + + + +mplsL3VpnVrfOperStatus OBJECT-TYPE + SYNTAX INTEGER { up (1), + down (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes whether or not a VRF is operational. A VRF is + up(1) when there is at least one interface associated + with the VRF whose ifOperStatus is up(1). A VRF is + down(2) when: + a. There does not exist at least one interface whose + ifOperStatus is up(1). + b. There are no interfaces associated with the VRF." + ::= { mplsL3VpnVrfEntry 6 } + +mplsL3VpnVrfActiveInterfaces OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of interfaces connected to this VRF with + ifOperStatus = up(1). + + This value should increase when an interface is associated + with the corresponding VRF and its corresponding ifOperStatus + is equal to up(1). If an interface is associated whose + ifOperStatus is not up(1), then the value is not incremented + until such time as it transitions to this state. + + This value should be decremented when an interface is + disassociated with a VRF or the corresponding ifOperStatus + transitions out of the up(1) state to any other state. + " + ::= { mplsL3VpnVrfEntry 7 } + +mplsL3VpnVrfAssociatedInterfaces OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of interfaces connected to this VRF + (independent of ifOperStatus type)." + ::= { mplsL3VpnVrfEntry 8 } + +mplsL3VpnVrfConfMidRteThresh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "Denotes mid-level water marker for the number + of routes that this VRF may hold." + DEFVAL { 0 } + ::= { mplsL3VpnVrfEntry 9 } + +mplsL3VpnVrfConfHighRteThresh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes high-level water marker for the number of + routes that this VRF may hold." + DEFVAL { 0 } + ::= { mplsL3VpnVrfEntry 10 } + +mplsL3VpnVrfConfMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes maximum number of routes that this VRF is + configured to hold. This value MUST be less than or + equal to mplsL3VpnVrfConfMaxPossRts unless it is set + to 0." + DEFVAL { 0 } + ::= { mplsL3VpnVrfEntry 11 } + +mplsL3VpnVrfConfLastChanged OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last + change of this table entry, which includes changes of + VRF parameters defined in this table or addition or + deletion of interfaces associated with this VRF." + ::= { mplsL3VpnVrfEntry 12 } + +mplsL3VpnVrfConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. + + + + + When a row in this table is in active(1) state, no + objects in that row can be modified except + mplsL3VpnVrfConfAdminStatus, mplsL3VpnVrfConfRowStatus, + and mplsL3VpnVrfConfStorageType." + ::= { mplsL3VpnVrfEntry 13 } + +mplsL3VpnVrfConfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), -- can't pass packets + testing(3) -- in some test mode + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the desired operational status of this + VRF." + ::= { mplsL3VpnVrfEntry 14 } + +mplsL3VpnVrfConfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this VPN VRF entry. + Conceptual rows having the value 'permanent' + need not allow write access to any columnar + objects in the row." + REFERENCE + "See RFC2579." + DEFVAL { volatile } + ::= { mplsL3VpnVrfEntry 15 } + + +-- MplsL3VpnVrfRTTable +mplsL3VpnVrfRTTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfRTEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-VRF route target association. + Each entry identifies a connectivity policy supported + as part of a VPN." + ::= { mplsL3VpnConf 3 } + +mplsL3VpnVrfRTEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfRTEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + each route target configured for a VRF supporting + a MPLS L3VPN instance. The indexing provides an + ordering per-VRF instance. See [RFC4364] for a + complete definition of a route target." + INDEX { mplsL3VpnVrfName, mplsL3VpnVrfRTIndex, + mplsL3VpnVrfRTType } + ::= { mplsL3VpnVrfRTTable 1 } + +MplsL3VpnVrfRTEntry ::= SEQUENCE { + mplsL3VpnVrfRTIndex Unsigned32, + mplsL3VpnVrfRTType MplsL3VpnRtType, + mplsL3VpnVrfRT MplsL3VpnRouteDistinguisher, + mplsL3VpnVrfRTDescr SnmpAdminString, + mplsL3VpnVrfRTRowStatus RowStatus, + mplsL3VpnVrfRTStorageType StorageType + } + +mplsL3VpnVrfRTIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Auxiliary index for route targets configured for a + particular VRF." + ::= { mplsL3VpnVrfRTEntry 2 } + +mplsL3VpnVrfRTType OBJECT-TYPE + SYNTAX MplsL3VpnRtType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The route target distribution type." + ::= { mplsL3VpnVrfRTEntry 3 } + +mplsL3VpnVrfRT OBJECT-TYPE + SYNTAX MplsL3VpnRouteDistinguisher + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The route target distribution policy." + DEFVAL { "" } + ::= { mplsL3VpnVrfRTEntry 4 } + +mplsL3VpnVrfRTDescr OBJECT-TYPE + SYNTAX SnmpAdminString + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Description of the route target." + DEFVAL { "" } + ::= { mplsL3VpnVrfRTEntry 5 } + +mplsL3VpnVrfRTRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified except mplsL3VpnVrfRTRowStatus." + ::= { mplsL3VpnVrfRTEntry 6 } + +mplsL3VpnVrfRTStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this VPN route target (RT) entry. + Conceptual rows having the value 'permanent' + need not allow write access to any columnar + objects in the row." + REFERENCE + "See RFC2579." + DEFVAL { volatile } + ::= { mplsL3VpnVrfRTEntry 7 } + +-- VRF Security Table + +mplsL3VpnVrfSecTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfSecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per MPLS L3VPN VRF Table + security-related counters." + ::= { mplsL3VpnConf 6 } + +mplsL3VpnVrfSecEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfSecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS L3VPN. Each + entry in this table is used to indicate security-related + information for each VRF entry." + AUGMENTS { mplsL3VpnVrfEntry } + ::= { mplsL3VpnVrfSecTable 1 } + +MplsL3VpnVrfSecEntry ::= SEQUENCE { + mplsL3VpnVrfSecIllegalLblVltns Counter32, + mplsL3VpnVrfSecDiscontinuityTime TimeStamp +} + +mplsL3VpnVrfSecIllegalLblVltns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of illegally received + labels on this VPN/VRF. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsL3VpnVrfSecDiscontinuityTime." + ::= { mplsL3VpnVrfSecEntry 1 } + +mplsL3VpnVrfSecDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which any one or more of this entry's counters suffered + a discontinuity. If no such discontinuities have + occurred since the last re-initialization of the local + management subsystem, then this object contains a zero + value." + ::= { mplsL3VpnVrfSecEntry 2 } + + +-- VRF Performance Table + +mplsL3VpnVrfPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per MPLS L3VPN VRF Table performance + + + + information." + ::= { mplsL3VpnPerf 1 } + +mplsL3VpnVrfPerfEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS L3VPN." + AUGMENTS { mplsL3VpnVrfEntry } + ::= { mplsL3VpnVrfPerfTable 1 } + +MplsL3VpnVrfPerfEntry ::= SEQUENCE { + mplsL3VpnVrfPerfRoutesAdded Counter32, + mplsL3VpnVrfPerfRoutesDeleted Counter32, + mplsL3VpnVrfPerfCurrNumRoutes Gauge32, + mplsL3VpnVrfPerfRoutesDropped Counter32, + mplsL3VpnVrfPerfDiscTime TimeStamp +} + +mplsL3VpnVrfPerfRoutesAdded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of routes added to this VPN/VRF + since the last discontinuity. Discontinuities in + the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsL3VpnVrfPerfDiscTime." + ::= { mplsL3VpnVrfPerfEntry 1 } + +mplsL3VpnVrfPerfRoutesDeleted OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of routes removed from this VPN/VRF. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsL3VpnVrfPerfDiscTime." + ::= { mplsL3VpnVrfPerfEntry 2 } + +mplsL3VpnVrfPerfCurrNumRoutes OBJECT-TYPE + + + + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of routes currently used by this + VRF." + ::= { mplsL3VpnVrfPerfEntry 3 } + + +mplsL3VpnVrfPerfRoutesDropped OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter should be incremented when the number of routes + contained by the specified VRF exceeds or attempts to exceed + the maximum allowed value as indicated by + mplsL3VpnVrfMaxRouteThreshold. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsL3VpnVrfPerfDiscTime." + ::= { mplsL3VpnVrfPerfEntry 4 } + +mplsL3VpnVrfPerfDiscTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which any one or more of this entry's counters suffered + a discontinuity. If no such discontinuities have + occurred since the last re-initialization of the local + management subsystem, then this object contains a zero + value." + ::= { mplsL3VpnVrfPerfEntry 5 } + +-- VRF Routing Table + +mplsL3VpnVrfRteTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsL3VpnVrfRteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS L3VPN VRF Table + routing information. Entries in this table define VRF routing + entries associated with the specified MPLS/VPN interfaces. Note + + + + that this table contains both BGP and Interior Gateway Protocol + IGP routes, as both may appear in the same VRF." + REFERENCE + "[RFC2096]" + ::= { mplsL3VpnRoute 1 } + +mplsL3VpnVrfRteEntry OBJECT-TYPE + SYNTAX MplsL3VpnVrfRteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for every route + present configured (either dynamically or statically) within + the context of a specific VRF capable of supporting MPLS/BGP + VPN. The indexing provides an ordering of VRFs per-VPN + interface. + + Implementers need to be aware that there are quite a few + index objects that together can exceed the size allowed + for an Object Identifier (OID). So implementers must make + sure that OIDs of column instances in this table will have + no more than 128 sub-identifiers, otherwise they cannot be + accessed using SNMPv1, SNMPv2c, or SNMPv3." + + INDEX { mplsL3VpnVrfName, + mplsL3VpnVrfRteInetCidrDestType, + mplsL3VpnVrfRteInetCidrDest, + mplsL3VpnVrfRteInetCidrPfxLen, + mplsL3VpnVrfRteInetCidrPolicy, + mplsL3VpnVrfRteInetCidrNHopType, + mplsL3VpnVrfRteInetCidrNextHop + } + ::= { mplsL3VpnVrfRteTable 1 } + +MplsL3VpnVrfRteEntry ::= SEQUENCE { + mplsL3VpnVrfRteInetCidrDestType InetAddressType, + mplsL3VpnVrfRteInetCidrDest InetAddress, + mplsL3VpnVrfRteInetCidrPfxLen InetAddressPrefixLength, + mplsL3VpnVrfRteInetCidrPolicy OBJECT IDENTIFIER, + mplsL3VpnVrfRteInetCidrNHopType InetAddressType, + mplsL3VpnVrfRteInetCidrNextHop InetAddress, + mplsL3VpnVrfRteInetCidrIfIndex InterfaceIndexOrZero, + mplsL3VpnVrfRteInetCidrType INTEGER, + mplsL3VpnVrfRteInetCidrProto IANAipRouteProtocol, + mplsL3VpnVrfRteInetCidrAge Gauge32, + mplsL3VpnVrfRteInetCidrNextHopAS InetAutonomousSystemNumber, + mplsL3VpnVrfRteInetCidrMetric1 Integer32, + mplsL3VpnVrfRteInetCidrMetric2 Integer32, + + + + mplsL3VpnVrfRteInetCidrMetric3 Integer32, + mplsL3VpnVrfRteInetCidrMetric4 Integer32, + mplsL3VpnVrfRteInetCidrMetric5 Integer32, + mplsL3VpnVrfRteXCPointer MplsIndexType, + mplsL3VpnVrfRteInetCidrStatus RowStatus + } + + mplsL3VpnVrfRteInetCidrDestType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the mplsL3VpnVrfRteInetCidrDest address, as + defined in the InetAddress MIB. + + Only those address types that may appear in an actual + routing table are allowed as values of this object." + REFERENCE "RFC4001" + ::= { mplsL3VpnVrfRteEntry 1 } + + mplsL3VpnVrfRteInetCidrDest OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination IP address of this route. + + The type of this address is determined by the value of + the mplsL3VpnVrfRteInetCidrDestType object. + + The values for the index objects + mplsL3VpnVrfRteInetCidrDest and + mplsL3VpnVrfRteInetCidrPfxLen must be consistent. When + the value of mplsL3VpnVrfRteInetCidrDest is x, then + the bitwise logical-AND of x with the value of the mask + formed from the corresponding index object + mplsL3VpnVrfRteInetCidrPfxLen MUST be + equal to x. If not, then the index pair is not + consistent and an inconsistentName error must be + returned on SET or CREATE requests." + ::= { mplsL3VpnVrfRteEntry 2 } + + mplsL3VpnVrfRteInetCidrPfxLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength (0..128) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the number of leading one bits that form the + + + + mask to be logical-ANDed with the destination address + before being compared to the value in the + mplsL3VpnVrfRteInetCidrDest field. + + The values for the index objects + mplsL3VpnVrfRteInetCidrDest and + mplsL3VpnVrfRteInetCidrPfxLen must be consistent. When + the value of mplsL3VpnVrfRteInetCidrDest is x, then the + bitwise logical-AND of x with the value of the mask + formed from the corresponding index object + mplsL3VpnVrfRteInetCidrPfxLen MUST be + equal to x. If not, then the index pair is not + consistent and an inconsistentName error must be + returned on SET or CREATE requests." + ::= { mplsL3VpnVrfRteEntry 3 } + + mplsL3VpnVrfRteInetCidrPolicy OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an opaque object without any defined + semantics. Its purpose is to serve as an additional + index that may delineate between multiple entries to + the same destination. The value { 0 0 } shall be used + as the default value for this object." + ::= { mplsL3VpnVrfRteEntry 4 } + + mplsL3VpnVrfRteInetCidrNHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the mplsL3VpnVrfRteInetCidrNextHop address, + as defined in the InetAddress MIB. + + Value should be set to unknown(0) for non-remote + routes. + + Only those address types that may appear in an actual + routing table are allowed as values of this object." + REFERENCE "RFC4001" + ::= { mplsL3VpnVrfRteEntry 5 } + + mplsL3VpnVrfRteInetCidrNextHop OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "On remote routes, the address of the next system en + route. For non-remote routes, a zero-length string. + The type of this address is determined by the value of + the mplsL3VpnVrfRteInetCidrNHopType object." + ::= { mplsL3VpnVrfRteEntry 6 } + + mplsL3VpnVrfRteInetCidrIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route should be + reached. A value of 0 is valid and represents the + scenario where no interface is specified." + DEFVAL { 0 } + ::= { mplsL3VpnVrfRteEntry 7 } + + mplsL3VpnVrfRteInetCidrType OBJECT-TYPE + SYNTAX INTEGER { + other (1), -- not specified by this MIB + reject (2), -- route which discards traffic and + -- returns ICMP notification + local (3), -- local interface + remote (4), -- remote destination + blackhole(5) -- route which discards traffic + -- silently + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of route. Note that local(3) refers to a + route for which the next hop is the final destination; + remote(4) refers to a route for which the next hop is + not the final destination. + + Routes that do not result in traffic forwarding or + rejection should not be displayed even if the + implementation keeps them stored internally. + + reject(2) refers to a route that, if matched, discards + the message as unreachable and returns a notification + (e.g., ICMP error) to the message sender. This is used + in some protocols as a means of correctly aggregating + routes. + + blackhole(5) refers to a route that, if matched, + + + + discards the message silently." + DEFVAL { other } + ::= { mplsL3VpnVrfRteEntry 8 } + + mplsL3VpnVrfRteInetCidrProto OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which this route was learned. + Inclusion of values for gateway routing protocols is + not intended to imply that hosts should support those + protocols." + ::= { mplsL3VpnVrfRteEntry 9 } + + mplsL3VpnVrfRteInetCidrAge OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds since this route was last updated + or otherwise determined to be correct. Note that no + semantics of 'too old' can be implied except through + knowledge of the routing protocol by which the route + was learned." + ::= { mplsL3VpnVrfRteEntry 10 } + + mplsL3VpnVrfRteInetCidrNextHopAS OBJECT-TYPE + SYNTAX InetAutonomousSystemNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Autonomous System Number of the next hop. The + semantics of this object are determined by the + routing protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto value. When this + object is unknown or not relevant, its value should + be set to zero." + DEFVAL { 0 } + ::= { mplsL3VpnVrfRteEntry 11 } + + mplsL3VpnVrfRteInetCidrMetric1 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the + + + + routing protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto value. If this + metric is not used, its value should be set to + -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 12 } + + mplsL3VpnVrfRteInetCidrMetric2 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing + protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 13 } + + mplsL3VpnVrfRteInetCidrMetric3 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing + protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto + value. If this metric is not used, its value should be + set to -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 14 } + + mplsL3VpnVrfRteInetCidrMetric4 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing + protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto value. If this metric + is not used, its value should be set to -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 15 } + + + + + mplsL3VpnVrfRteInetCidrMetric5 OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the routing + protocol specified in the route's + mplsL3VpnVrfRteInetCidrProto value. If this metric is + not used, its value should be set to -1." + DEFVAL { -1 } + ::= { mplsL3VpnVrfRteEntry 16 } + + mplsL3VpnVrfRteXCPointer OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Index into mplsXCTable that identifies which cross- + connect entry is associated with this VRF route entry + by containing the mplsXCIndex of that cross-connect entry. + The string containing the single-octet 0x00 indicates that + a label stack is not associated with this route entry. This + can be the case because the label bindings have not yet + been established, or because some change in the agent has + removed them. + + When the label stack associated with this VRF route is created, + it MUST establish the associated cross-connect + entry in the mplsXCTable and then set that index to the value + of this object. Changes to the cross-connect object in the + mplsXCTable MUST automatically be reflected in the value of + this object. If this object represents a static routing entry, + then the manager must ensure that this entry is maintained + consistently in the corresponding mplsXCTable as well." + REFERENCE + "RFC 3813 - Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information base (MIB), C. Srinivasan, + A. Vishwanathan, and T. Nadeau, June 2004" + ::= { mplsL3VpnVrfRteEntry 17 } + + mplsL3VpnVrfRteInetCidrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + + + + A row entry cannot be modified when the status is + marked as active(1)." + ::= { mplsL3VpnVrfRteEntry 18 } + + +-- MPLS L3VPN Notifications +mplsL3VpnVrfUp NOTIFICATION-TYPE + OBJECTS { mplsL3VpnIfConfRowStatus, + mplsL3VpnVrfOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when: + a. No interface is associated with this VRF, and the first + (and only first) interface associated with it has its + ifOperStatus change to up(1). + + b. One interface is associated with this VRF, and + the ifOperStatus of this interface changes to up(1). + + c. Multiple interfaces are associated with this VRF, and the + ifOperStatus of all interfaces is down(2), and the first + of those interfaces has its ifOperStatus change to up(1)." + ::= { mplsL3VpnNotifications 1 } + +mplsL3VpnVrfDown NOTIFICATION-TYPE + OBJECTS { mplsL3VpnIfConfRowStatus, + mplsL3VpnVrfOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when: + a. One interface is associated with this VRF, and + the ifOperStatus of this interface changes from up(1) + to down(2). + + b. Multiple interfaces are associated with this VRF, and + the ifOperStatus of all except one of these interfaces is + equal to up(1), and the ifOperStatus of that interface + changes from up(1) to down(2). + + c. The last interface with ifOperStatus equal to up(1) + is disassociated from a VRF." + ::= { mplsL3VpnNotifications 2 } + +mplsL3VpnVrfRouteMidThreshExceeded NOTIFICATION-TYPE + OBJECTS { mplsL3VpnVrfPerfCurrNumRoutes, + mplsL3VpnVrfConfMidRteThresh + + + + } + STATUS current + DESCRIPTION + "This notification is generated when the number of routes + contained by the specified VRF exceeds the value indicated by + mplsL3VpnVrfMidRouteThreshold. A single notification MUST be + generated when this threshold is exceeded, and no other + notifications of this type should be issued until the value + of mplsL3VpnVrfPerfCurrNumRoutes has fallen below that of + mplsL3VpnVrfConfMidRteThresh." + ::= { mplsL3VpnNotifications 3 } + +mplsL3VpnVrfNumVrfRouteMaxThreshExceeded NOTIFICATION-TYPE + OBJECTS { mplsL3VpnVrfPerfCurrNumRoutes, + mplsL3VpnVrfConfHighRteThresh + } + STATUS current + DESCRIPTION + "This notification is generated when the number of routes + contained by the specified VRF exceeds or attempts to exceed + the maximum allowed value as indicated by + mplsL3VpnVrfMaxRouteThreshold. In cases where + mplsL3VpnVrfConfHighRteThresh is set to the same value + as mplsL3VpnVrfConfMaxRoutes, mplsL3VpnVrfConfHighRteThresh + need not be exceeded; rather, just reached for this notification + to be issued. + + Note that mplsL3VpnVrfConfRteMxThrshTime denotes the interval + at which the this notification will be reissued after the + maximum value has been exceeded (or reached if + mplsL3VpnVrfConfMaxRoutes and mplsL3VpnVrfConfHighRteThresh are + equal) and the initial notification has been issued. This value + is intended to prevent continuous generation of notifications by + an agent in the event that routes are continually added to a VRF + after it has reached its maximum value. The default value is 0 + minutes. If this value is set to 0, the agent should only issue + a single notification at the time that the maximum threshold has + been reached, and should not issue any more notifications until + the value of routes has fallen below the configured threshold + value." + ::= { mplsL3VpnNotifications 4 } + +mplsL3VpnNumVrfSecIllglLblThrshExcd NOTIFICATION-TYPE + OBJECTS { mplsL3VpnVrfSecIllegalLblVltns } + STATUS current + DESCRIPTION + "This notification is generated when the number of illegal + label violations on a VRF as indicated by + + + + mplsL3VpnVrfSecIllegalLblVltns has exceeded + mplsL3VpnIllLblRcvThrsh. The threshold is not + included in the varbind here because the value of + mplsL3VpnVrfSecIllegalLblVltns should be one greater than + the threshold at the time this notification is issued." + ::= { mplsL3VpnNotifications 5 } + + +mplsL3VpnNumVrfRouteMaxThreshCleared NOTIFICATION-TYPE + OBJECTS { mplsL3VpnVrfPerfCurrNumRoutes, + mplsL3VpnVrfConfHighRteThresh + } + STATUS current + DESCRIPTION + "This notification is generated only after the number of routes + contained by the specified VRF exceeds or attempts to exceed + the maximum allowed value as indicated by + mplsVrfMaxRouteThreshold, and then falls below this value. The + emission of this notification informs the operator that the + error condition has been cleared without the operator having to + query the device. + + Note that mplsL3VpnVrfConfRteMxThrshTime denotes the interval at + which the mplsNumVrfRouteMaxThreshExceeded notification will + be reissued after the maximum value has been exceeded (or + reached if mplsL3VpnVrfConfMaxRoutes and + mplsL3VpnVrfConfHighRteThresh are equal) and the initial + notification has been issued. Therefore, + the generation of this notification should also be emitted with + this same frequency (assuming that the error condition is + cleared). Specifically, if the error condition is reached and + cleared several times during the period of time specified in + mplsL3VpnVrfConfRteMxThrshTime, only a single notification will + be issued to indicate the first instance of the error condition + as well as the first time the error condition is cleared. + This behavior is intended to prevent continuous generation of + notifications by an agent in the event that routes are + continually added and removed to/from a VRF after it has + reached its maximum value. The default value is 0. If this + value is set to 0, the agent should issue a notification + whenever the maximum threshold has been cleared." + ::= { mplsL3VpnNotifications 6 } + +-- Conformance Statement +mplsL3VpnGroups + OBJECT IDENTIFIER ::= { mplsL3VpnConformance 1 } + +mplsL3VpnCompliances + + + + OBJECT IDENTIFIER ::= { mplsL3VpnConformance 2 } + +-- Module Compliance + +mplsL3VpnModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide full support + for the MPLS-L3VPN-STD-MIB" + MODULE -- this module + MANDATORY-GROUPS { mplsL3VpnScalarGroup, + mplsL3VpnVrfGroup, + mplsL3VpnIfGroup, + mplsL3VpnPerfGroup, + mplsL3VpnVrfRteGroup, + mplsL3VpnVrfRTGroup, + mplsL3VpnSecGroup, + mplsL3VpnNotificationGroup + } + + GROUP mplsL3VpnPerfRouteGroup + DESCRIPTION "This group is only mandatory for LSRs that + support tracking the number of routes attempted + to be added to VRFs." + + OBJECT mplsL3VpnIfConfRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + + OBJECT mplsL3VpnVrfConfRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + OBJECT mplsL3VpnVrfRTRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + + + ::= { mplsL3VpnCompliances 1 } + + +-- +-- ReadOnly Compliance +-- + +mplsL3VpnModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance requirement for implementations that only + provide read-only support for MPLS-L3VPN-STD-MIB. + Such devices can then be monitored but cannot be + configured using this MIB module." + + MODULE -- this module + MANDATORY-GROUPS { mplsL3VpnScalarGroup, + mplsL3VpnVrfGroup, + mplsL3VpnIfGroup, + mplsL3VpnPerfGroup, + mplsL3VpnVrfRteGroup, + mplsL3VpnVrfRTGroup, + mplsL3VpnSecGroup, + mplsL3VpnNotificationGroup + } + + GROUP mplsL3VpnPerfRouteGroup + DESCRIPTION "This group is only mandatory for LSRs that + support tracking the number of routes attempted to + be added to VRFs." + + OBJECT mplsL3VpnIfConfRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRTRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnIfVpnClassification + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + OBJECT mplsL3VpnIfVpnRouteDistProtocol + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnIfConfStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfVpnId + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfDescription + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRD + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfMidRteThresh + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfHighRteThresh + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfMaxRoutes + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfConfStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRT + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRTDescr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRTStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT mplsL3VpnVrfRteInetCidrIfIndex + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrNextHopAS + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric1 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric2 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric3 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric4 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrMetric5 + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteXCPointer + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsL3VpnVrfRteInetCidrStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { mplsL3VpnCompliances 2 } + + + -- Units of conformance. + mplsL3VpnScalarGroup OBJECT-GROUP + OBJECTS { mplsL3VpnConfiguredVrfs, + mplsL3VpnActiveVrfs, + mplsL3VpnConnectedInterfaces, + + + + mplsL3VpnNotificationEnable, + mplsL3VpnVrfConfMaxPossRts, + mplsL3VpnVrfConfRteMxThrshTime, + mplsL3VpnIllLblRcvThrsh + } + STATUS current + DESCRIPTION + "Collection of scalar objects required for MPLS VPN + management." + ::= { mplsL3VpnGroups 1 } + + mplsL3VpnVrfGroup OBJECT-GROUP + OBJECTS { mplsL3VpnVrfVpnId, + mplsL3VpnVrfDescription, + mplsL3VpnVrfRD, + mplsL3VpnVrfCreationTime, + mplsL3VpnVrfOperStatus, + mplsL3VpnVrfActiveInterfaces, + mplsL3VpnVrfAssociatedInterfaces, + mplsL3VpnVrfConfMidRteThresh, + mplsL3VpnVrfConfHighRteThresh, + mplsL3VpnVrfConfMaxRoutes, + mplsL3VpnVrfConfLastChanged, + mplsL3VpnVrfConfRowStatus, + mplsL3VpnVrfConfAdminStatus, + mplsL3VpnVrfConfStorageType + } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS VPN VRF + management." + ::= { mplsL3VpnGroups 2 } + + mplsL3VpnIfGroup OBJECT-GROUP + OBJECTS { mplsL3VpnIfVpnClassification, + mplsL3VpnIfVpnRouteDistProtocol, + mplsL3VpnIfConfStorageType, + mplsL3VpnIfConfRowStatus + } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS VPN interface + management." + ::= { mplsL3VpnGroups 3 } + + mplsL3VpnPerfGroup OBJECT-GROUP + OBJECTS { mplsL3VpnVrfPerfRoutesAdded, + mplsL3VpnVrfPerfRoutesDeleted, + + + + mplsL3VpnVrfPerfCurrNumRoutes + } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS VPN + performance information." + ::= { mplsL3VpnGroups 4 } + + mplsL3VpnPerfRouteGroup OBJECT-GROUP + OBJECTS { mplsL3VpnVrfPerfRoutesDropped, + mplsL3VpnVrfPerfDiscTime + } + STATUS current + DESCRIPTION + "Collection of objects needed to track MPLS VPN + routing table dropped routes." + ::= { mplsL3VpnGroups 5 } + + mplsL3VpnSecGroup OBJECT-GROUP + OBJECTS { mplsL3VpnVrfSecIllegalLblVltns, + mplsL3VpnVrfSecDiscontinuityTime } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS VPN + security-related information." + ::= { mplsL3VpnGroups 7 } + + mplsL3VpnVrfRteGroup OBJECT-GROUP + OBJECTS { + mplsL3VpnVrfRteInetCidrIfIndex, + mplsL3VpnVrfRteInetCidrType, + mplsL3VpnVrfRteInetCidrProto, + mplsL3VpnVrfRteInetCidrAge, + mplsL3VpnVrfRteInetCidrNextHopAS, + mplsL3VpnVrfRteInetCidrMetric1, + mplsL3VpnVrfRteInetCidrMetric2, + mplsL3VpnVrfRteInetCidrMetric3, + mplsL3VpnVrfRteInetCidrMetric4, + mplsL3VpnVrfRteInetCidrMetric5, + mplsL3VpnVrfRteXCPointer, + mplsL3VpnVrfRteInetCidrStatus + } + STATUS current + DESCRIPTION + "Objects required for VRF route table management." + ::= { mplsL3VpnGroups 8 } + + mplsL3VpnVrfRTGroup OBJECT-GROUP + + + + OBJECTS { mplsL3VpnVrfRTDescr, + mplsL3VpnVrfRT, + mplsL3VpnVrfRTRowStatus, + mplsL3VpnVrfRTStorageType + } + STATUS current + DESCRIPTION + "Objects required for VRF route target management." + ::= { mplsL3VpnGroups 9 } + + mplsL3VpnNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { mplsL3VpnVrfUp, + mplsL3VpnVrfDown, + mplsL3VpnVrfRouteMidThreshExceeded, + mplsL3VpnVrfNumVrfRouteMaxThreshExceeded, + mplsL3VpnNumVrfSecIllglLblThrshExcd, + mplsL3VpnNumVrfRouteMaxThreshCleared + } + STATUS current + DESCRIPTION + "Objects required for MPLS VPN notifications." + ::= { mplsL3VpnGroups 10 } +END diff --git a/mibs/ietf/MPLS-LC-ATM-STD-MIB b/mibs/ietf/MPLS-LC-ATM-STD-MIB new file mode 100644 index 0000000..3ea5a9a --- /dev/null +++ b/mibs/ietf/MPLS-LC-ATM-STD-MIB @@ -0,0 +1,356 @@ +MPLS-LC-ATM-STD-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + RowStatus, StorageType, TruthValue + FROM SNMPv2-TC + AtmVpIdentifier + FROM ATM-TC-MIB + mplsStdMIB, MplsAtmVcIdentifier + FROM MPLS-TC-STD-MIB + mplsInterfaceIndex + FROM MPLS-LSR-STD-MIB + ; + +mplsLcAtmStdMIB MODULE-IDENTITY + LAST-UPDATED "200601120000Z" -- 12 January 2006 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Postal: Cisco Systems, Inc. + 250 Apollo Drive + Chelmsford, MA 01824 + Tel: +1-978-244-3051 + Email: tnadeau@cisco.com + + Subrahmanya Hegde + Postal: Cisco Systems, Inc. + 225 East Tazman Drive + Tel: +1-408-525-6562 + Email: subrah@cisco.com + General comments should be sent to mpls@uu.net + " + DESCRIPTION + "This MIB module contains managed object definitions for + MPLS Label-Controlled ATM interfaces as defined in + [RFC3035]. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4368; see + the RFC itself for full legal notices." + + + + + -- Revision history. + REVISION + "200601120000Z" -- 12 January 2006 + DESCRIPTION + "Initial revision, published as part of RFC 4368." + ::= { mplsStdMIB 9 } + +-- Top level components of this MIB module. + +-- Tables, Scalars, Notifications, Conformance + +mplsLcAtmStdNotifications OBJECT IDENTIFIER ::= { mplsLcAtmStdMIB 0 } + +mplsLcAtmStdObjects OBJECT IDENTIFIER ::= { mplsLcAtmStdMIB 1 } + +mplsLcAtmStdConformance OBJECT IDENTIFIER ::= { mplsLcAtmStdMIB 2 } + +-- MPLS LC-ATM Interface Configuration Table. +mplsLcAtmStdInterfaceConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLcAtmStdInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS LC-ATM + capability and associated information. In particular, + this table sparsely extends the MPLS-LSR-STD-MIB's + mplsInterfaceConfTable." + ::= { mplsLcAtmStdObjects 1 } + +mplsLcAtmStdInterfaceConfEntry OBJECT-TYPE + SYNTAX MplsLcAtmStdInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every interface capable of supporting MPLS LC-ATM. + Each entry in this table will exist only if a + corresponding entry in ifTable and mplsInterfaceConfTable + exists. If the associated entries in ifTable and + mplsInterfaceConfTable are deleted, the corresponding + entry in this table must also be deleted shortly + thereafter." + INDEX { mplsInterfaceIndex } + ::= { mplsLcAtmStdInterfaceConfTable 1 } + +MplsLcAtmStdInterfaceConfEntry ::= SEQUENCE { + mplsLcAtmStdCtrlVpi AtmVpIdentifier, + mplsLcAtmStdCtrlVci MplsAtmVcIdentifier, + + + + mplsLcAtmStdUnlabTrafVpi AtmVpIdentifier, + mplsLcAtmStdUnlabTrafVci MplsAtmVcIdentifier, + mplsLcAtmStdVcMerge TruthValue, + mplsLcAtmVcDirectlyConnected TruthValue, + mplsLcAtmLcAtmVPI AtmVpIdentifier, + mplsLcAtmStdIfConfRowStatus RowStatus, + mplsLcAtmStdIfConfStorageType StorageType +} + +mplsLcAtmStdCtrlVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VPI value over which this + LSR is willing to accept control traffic on + this interface." + ::= { mplsLcAtmStdInterfaceConfEntry 1 } + +mplsLcAtmStdCtrlVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VCI value over which this + LSR is willing to accept control traffic + on this interface." + ::= { mplsLcAtmStdInterfaceConfEntry 2 } + +mplsLcAtmStdUnlabTrafVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VPI value over which this + LSR is willing to accept unlabeled traffic + on this interface." + ::= { mplsLcAtmStdInterfaceConfEntry 3 } + +mplsLcAtmStdUnlabTrafVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VCI value over which this + LSR is willing to accept unlabeled traffic + on this interface." + ::= { mplsLcAtmStdInterfaceConfEntry 4 } + + + +mplsLcAtmStdVcMerge OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If set to true(1), indicates that this interface + is capable of ATM VC merge; otherwise, it MUST + be set to false(2)." + DEFVAL { false } + ::= { mplsLcAtmStdInterfaceConfEntry 5 } + +mplsLcAtmVcDirectlyConnected OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value indicates whether an LC-ATM is directly + or indirectly (by means of a VP) connected. If set to + true(1), indicates that this interface is directly + connected LC-ATM; otherwise, it MUST be set to + false(2). Note that although it can be intimated + from RFC 3057 that multiple VPs may be used, + in practice only a single one is used, and therefore + the authors of this MIB module have chosen to model + it as such." + DEFVAL { true } + ::= { mplsLcAtmStdInterfaceConfEntry 6 } + +mplsLcAtmLcAtmVPI OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the VPI value used for indirectly + connected LC-ATM interfaces. For these + interfaces, the VPI field is not + available to MPLS, and the label MUST be + encoded entirely within the VCI field + (see [RFC3035]). If the interface is directly + connected, this value MUST be set to zero." + DEFVAL { 0 } + ::= { mplsLcAtmStdInterfaceConfEntry 7 } + +mplsLcAtmStdIfConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object is used to create and + delete entries in this table. When configuring + entries in this table, the corresponding + ifEntry and mplsInterfaceConfEntry + MUST exist beforehand. If a manager attempts to + create an entry for a corresponding + mplsInterfaceConfEntry that does not support LC-ATM, + the agent MUST return an inconsistentValue error. + If this table is implemented read-only, then the + agent must set this object to active(1) when this + row is made active. If this table is implemented + writable, then an agent MUST not allow modification + to its objects once this value is set to active(1), + except to mplsLcAtmStdIfConfRowStatus and + mplsLcAtmStdIfConfStorageType." + ::= { mplsLcAtmStdInterfaceConfEntry 8 } + + mplsLcAtmStdIfConfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLcAtmStdInterfaceConfEntry 9 } + +-- End of mplsLcAtmStdInterfaceConfTable + +-- Module compliance. + +mplsLcAtmStdCompliances + OBJECT IDENTIFIER ::= { mplsLcAtmStdConformance 1 } + +mplsLcAtmStdGroups + OBJECT IDENTIFIER ::= { mplsLcAtmStdConformance 2 } + +-- Compliance requirement for full compliance + +mplsLcAtmStdModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide + full support for MPLS-LC-ATM-STD-MIB. Such + devices can be monitored and also be configured + using this MIB module." + + + + MODULE -- this module + MANDATORY-GROUPS { + mplsLcAtmStdIfGroup + } + + OBJECT mplsLcAtmStdIfConfRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + ::= { mplsLcAtmStdCompliances 1 } + +-- Compliance requirement for read-only implementations. + +mplsLcAtmStdModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only + provide read-only support for MPLS-LC-ATM-STD-MIB. + Such devices can be monitored but cannot be configured + using this MIB module. + " + MODULE -- this module + MANDATORY-GROUPS { + mplsLcAtmStdIfGroup + } + + -- mplsLcAtmStdInterfaceConfTable + + OBJECT mplsLcAtmStdCtrlVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdCtrlVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdUnlabTrafVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdUnlabTrafVci + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdVcMerge + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdIfConfRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLcAtmVcDirectlyConnected + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmLcAtmVPI + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcAtmStdIfConfStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mplsLcAtmStdCompliances 2 } + + +-- Units of conformance. + +mplsLcAtmStdIfGroup OBJECT-GROUP + OBJECTS { + mplsLcAtmStdCtrlVpi, + mplsLcAtmStdCtrlVci, + mplsLcAtmStdUnlabTrafVpi, + mplsLcAtmStdUnlabTrafVci, + mplsLcAtmStdVcMerge, + mplsLcAtmVcDirectlyConnected, + mplsLcAtmLcAtmVPI, + mplsLcAtmStdIfConfRowStatus, + mplsLcAtmStdIfConfStorageType + } + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS LC-ATM + + + + interface configuration." + ::= { mplsLcAtmStdGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LC-FR-STD-MIB b/mibs/ietf/MPLS-LC-FR-STD-MIB new file mode 100644 index 0000000..56c314c --- /dev/null +++ b/mibs/ietf/MPLS-LC-FR-STD-MIB @@ -0,0 +1,275 @@ +MPLS-LC-FR-STD-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + RowStatus, StorageType + FROM SNMPv2-TC + mplsInterfaceIndex + FROM MPLS-LSR-STD-MIB + DLCI + FROM FRAME-RELAY-DTE-MIB + mplsStdMIB + FROM MPLS-TC-STD-MIB + ; +mplsLcFrStdMIB MODULE-IDENTITY + + LAST-UPDATED "200601120000Z" -- 12 January 2006 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Subrahmanya Hegde + Email: subrah@cisco.com + + General comments should be sent to mpls@uu.net + " + DESCRIPTION + "This MIB module contains managed object definitions for + MPLS Label-Controlled Frame-Relay interfaces as defined + in (RFC3034). + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4368; see + the RFC itself for full legal notices." + + + + -- Revision history. + REVISION + "200601120000Z" -- 12 January 2006 + DESCRIPTION + "Initial revision, published as part of RFC 4368." + ::= { mplsStdMIB 10 } + +-- Top level components of this MIB module. +-- Tables, Scalars, Notifications, Conformance + +mplsLcFrStdNotifications OBJECT IDENTIFIER ::= { mplsLcFrStdMIB 0 } +mplsLcFrStdObjects OBJECT IDENTIFIER ::= { mplsLcFrStdMIB 1 } +mplsLcFrStdConformance OBJECT IDENTIFIER ::= { mplsLcFrStdMIB 2 } + +-- MPLS LC-FR Interface Configuration Table. +mplsLcFrStdInterfaceConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLcFrStdInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS LC-FR + capability and associated information. In particular, + this table sparsely extends the MPLS-LSR-STD-MIB's + mplsInterfaceConfTable." + ::= { mplsLcFrStdObjects 1 } + +mplsLcFrStdInterfaceConfEntry OBJECT-TYPE + SYNTAX MplsLcFrStdInterfaceConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every interface capable of supporting MPLS LC-FR. + Each entry in this table will exist only if a + corresponding entry in ifTable and mplsInterfaceConfTable + exists. If the associated entries in ifTable and + mplsInterfaceConfTable are deleted, the corresponding + entry in this table must also be deleted shortly + thereafter." + INDEX { mplsInterfaceIndex } + ::= { mplsLcFrStdInterfaceConfTable 1 } + +MplsLcFrStdInterfaceConfEntry ::= SEQUENCE { + mplsLcFrStdTrafficMinDlci DLCI, + mplsLcFrStdTrafficMaxDlci DLCI, + mplsLcFrStdCtrlMinDlci DLCI, + mplsLcFrStdCtrlMaxDlci DLCI, + mplsLcFrStdInterfaceConfRowStatus RowStatus, + + + mplsLcFrStdInterfaceConfStorageType StorageType +} + +mplsLcFrStdTrafficMinDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the minimum DLCI value over which this + LSR is willing to accept traffic on this + interface." + ::= { mplsLcFrStdInterfaceConfEntry 1 } + +mplsLcFrStdTrafficMaxDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the max DLCI value over which this + LSR is willing to accept traffic on this + interface." + ::= { mplsLcFrStdInterfaceConfEntry 2 } + +mplsLcFrStdCtrlMinDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the min DLCI value over which this + LSR is willing to accept control traffic + on this interface." + ::= { mplsLcFrStdInterfaceConfEntry 3 } + +mplsLcFrStdCtrlMaxDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This is the max DLCI value over which this + LSR is willing to accept control traffic + on this interface." + ::= { mplsLcFrStdInterfaceConfEntry 4 } + +mplsLcFrStdInterfaceConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "This object is used to create and + delete entries in this table. When configuring + entries in this table, the corresponding ifEntry and + mplsInterfaceConfEntry MUST exist beforehand. If a manager + attempts to create an entry for a corresponding + mplsInterfaceConfEntry that does not support LC-FR, + the agent MUST return an inconsistentValue error. + If this table is implemented read-only, then the + agent must set this object to active(1) when this + row is made active. If this table is implemented + writable, then an agent MUST not allow modification + to its objects once this value is set to active(1), + except to mplsLcFrStdInterfaceConfRowStatus and + mplsLcFrStdInterfaceConfStorageType." + ::= { mplsLcFrStdInterfaceConfEntry 5 } + + mplsLcFrStdInterfaceConfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLcFrStdInterfaceConfEntry 6 } + +-- End of mplsLcFrStdInterfaceConfTable + +-- Module compliance. + +mplsLcFrStdCompliances + OBJECT IDENTIFIER ::= { mplsLcFrStdConformance 1 } + +mplsLcFrStdGroups + OBJECT IDENTIFIER ::= { mplsLcFrStdConformance 2 } + + +-- Compliance requirement for full compliance + +mplsLcFrStdModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide + full support for MPLS-LC-FR-STD-MIB. Such + devices can be monitored and also be configured + using this MIB module." + + + MODULE -- this module + MANDATORY-GROUPS { + mplsLcFrStdIfGroup + } + + OBJECT mplsLcFrStdInterfaceConfRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + ::= { mplsLcFrStdCompliances 1 } + + +-- Compliance requirement for read-only implementations. + +mplsLcFrStdModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance requirement for implementations that only + provide read-only support for MPLS-LC-FR-STD-MIB. + Such devices can be monitored but cannot be configured + using this MIB module. + " + + MODULE -- this module + MANDATORY-GROUPS { + mplsLcFrStdIfGroup + } + + -- mplsLcFrStdInterfaceConfTable + + OBJECT mplsLcFrStdTrafficMinDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcFrStdTrafficMaxDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcFrStdCtrlMinDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + OBJECT mplsLcFrStdCtrlMaxDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLcFrStdInterfaceConfRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLcFrStdInterfaceConfStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { mplsLcFrStdCompliances 2 } + +-- Units of conformance. + +mplsLcFrStdIfGroup OBJECT-GROUP + OBJECTS { + mplsLcFrStdTrafficMinDlci, + mplsLcFrStdTrafficMaxDlci, + mplsLcFrStdCtrlMinDlci, + mplsLcFrStdCtrlMaxDlci, + mplsLcFrStdInterfaceConfRowStatus, + mplsLcFrStdInterfaceConfStorageType + } + STATUS current + + DESCRIPTION + "Collection of objects needed for MPLS LC-FR + interface configuration." + ::= { mplsLcFrStdGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LDP-ATM-STD-MIB b/mibs/ietf/MPLS-LDP-ATM-STD-MIB new file mode 100644 index 0000000..c68f3be --- /dev/null +++ b/mibs/ietf/MPLS-LDP-ATM-STD-MIB @@ -0,0 +1,792 @@ +MPLS-LDP-ATM-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, MODULE-IDENTITY, + Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + RowStatus, + StorageType + FROM SNMPv2-TC -- [RFC2579] + + InterfaceIndexOrZero + FROM IF-MIB -- [RFC2020] + + AtmVpIdentifier + FROM ATM-TC-MIB -- [RFC2514] + + mplsStdMIB, + MplsAtmVcIdentifier + FROM MPLS-TC-STD-MIB -- [RFC3811] + + mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId + FROM MPLS-LDP-STD-MIB -- [RFC3813] + + ; + +mplsLdpAtmStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + + + ORGANIZATION "Multiprotocol Label Switching (mpls) + Working Group" + CONTACT-INFO + "Joan Cucchiara (jcucchiara@mindspring.com) + Marconi Communications, Inc. + + Hans Sjostrand (hans@ipunplugged.com) + ipUnplugged + + James V. Luciani (james_luciani@mindspring.com) + Marconi Communications, Inc. + + Working Group Chairs: + George Swallow, email: swallow@cisco.com + Loa Andersson, email: loa@pi.se + + MPLS Working Group, email: mpls@uu.net + " + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3815. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB contains managed object definitions for + configuring and monitoring the Multiprotocol Label + Switching (MPLS), Label Distribution Protocol (LDP), + utilizing Asynchronous Transfer Mode (ATM) as the Layer 2 + media." + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial version published as part of RFC 3815." + + ::= { mplsStdMIB 5 } + +--**************************************************************** + +mplsLdpAtmObjects OBJECT IDENTIFIER + ::= { mplsLdpAtmStdMIB 1 } +mplsLdpAtmConformance OBJECT IDENTIFIER + ::= { mplsLdpAtmStdMIB 2 } + +--**************************************************************** +-- MPLS LDP ATM Objects +--**************************************************************** +-- +-- Ldp Entity Objects for ATM + + +-- + +mplsLdpEntityAtmObjects OBJECT IDENTIFIER ::= + { mplsLdpAtmObjects 1 } + +mplsLdpEntityAtmTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityAtmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains ATM specific information + which could be used in the + 'Optional Parameters' and other ATM specific + information. + + This table 'sparse augments' the mplsLdpEntityTable + when ATM is the Layer 2 medium." + ::= { mplsLdpEntityAtmObjects 1 } + +mplsLdpEntityAtmEntry OBJECT-TYPE + SYNTAX MplsLdpEntityAtmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents the ATM parameters + and ATM information for this LDP entity." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex + } + ::= { mplsLdpEntityAtmTable 1 } + + +MplsLdpEntityAtmEntry ::= SEQUENCE { + mplsLdpEntityAtmIfIndexOrZero InterfaceIndexOrZero, + mplsLdpEntityAtmMergeCap INTEGER, + mplsLdpEntityAtmLRComponents Unsigned32, + mplsLdpEntityAtmVcDirectionality INTEGER, + mplsLdpEntityAtmLsrConnectivity INTEGER, + mplsLdpEntityAtmDefaultControlVpi AtmVpIdentifier, + mplsLdpEntityAtmDefaultControlVci MplsAtmVcIdentifier, + mplsLdpEntityAtmUnlabTrafVpi AtmVpIdentifier, + mplsLdpEntityAtmUnlabTrafVci MplsAtmVcIdentifier, + mplsLdpEntityAtmStorageType StorageType, + mplsLdpEntityAtmRowStatus RowStatus +} + +mplsLdpEntityAtmIfIndexOrZero OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents either the InterfaceIndex + or 0 (zero). The value of zero means that the + InterfaceIndex is not known. + + However, if the InterfaceIndex is known, then it must + be represented by this value. + + If an InterfaceIndex becomes known, then the + network management entity (e.g., SNMP agent) responsible + for this object MUST change the value from 0 (zero) to the + value of the InterfaceIndex. If an ATM Label is + being used in forwarding data, then the value of this + object MUST be the InterfaceIndex." + ::= { mplsLdpEntityAtmEntry 1 } + +mplsLdpEntityAtmMergeCap OBJECT-TYPE + SYNTAX INTEGER { + notSupported(0), + vpMerge(1), + vcMerge(2), + vpAndVcMerge(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes the Merge Capability of this Entity. + This is the EXACT value for the ATM Session + Parameter, field M (for ATM Merge Capabilities). + The ATM Session Parameter is an optional + parameter in the Initialization Message. + + The description from rfc3036.txt is: + + 'M, ATM Merge Capabilities + Specifies the merge capabilities of an ATM switch. The + following values are supported in this version of the + specification: + + Value Meaning + + 0 Merge not supported + 1 VP Merge supported + 2 VC Merge supported + 3 VP & VC Merge supported + + + + + If the merge capabilities of the LSRs differ, then: + - Non-merge and VC-merge LSRs may freely interoperate. + + - The interoperability of VP-merge-capable switches + with non-VP-merge-capable switches is a subject + for future study. When the LSRs differ on the + use of VP-merge, the session is established, + but VP merge is not used.' + + Please refer to the following reference for a + complete description of this feature." + + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityAtmEntry 2 } + +mplsLdpEntityAtmLRComponents OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Label Range Components in the Initialization + message. This also represents the number of entries + in the mplsLdpEntityAtmLRTable which correspond + to this entry. + + This is the EXACT value for the ATM Session Parameter, + field N (for Number of label range components). + The ATM Session Parameter is an optional parameter + in the Initialization Message. + + The description from rfc3036.txt is: + + 'N, Number of label range components + Specifies the number of ATM Label Range + Components included in the TLV.' + + Please refer to the following reference for + a complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityAtmEntry 3 } + +mplsLdpEntityAtmVcDirectionality OBJECT-TYPE + SYNTAX INTEGER { + bidirectional(0), + + + + unidirectional(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the value of this object is 'bidirectional(0)', + a given VCI, within a given VPI, is used as a + label for both directions independently. + + If the value of this object is 'unidirectional(1)', + a given VCI within a VPI designates one direction. + + This is the EXACT value for the ATM Session Parameter, + field D (for VC Directionality). The ATM Session + Parameter is an optional parameter in the + Initialization Message. + + The description from rfc3036.txt is: + + 'D, VC Directionality + A value of 0 specifies bidirectional VC capability, + meaning the LSR can (within a given VPI) support + the use of a given VCI as a label for both link + directions independently. A value of 1 + specifies unidirectional VC capability, meaning + (within a given VPI) a given VCI may appear in + a label mapping for one direction on the link + only. When either or both of the peers + specifies unidirectional VC capability, both + LSRs use unidirectional VC label assignment for + the link as follows. The LSRs compare their + LDP Identifiers as unsigned integers. The LSR + with the larger LDP Identifier may assign + only odd-numbered VCIs in the VPI/VCI + range as labels. The system with the smaller + LDP Identifier may assign only even-numbered + VCIs in the VPI/VCI range as labels.' + + Please refer to the following reference + for a complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityAtmEntry 4 } + +mplsLdpEntityAtmLsrConnectivity OBJECT-TYPE + SYNTAX INTEGER { + direct(1), + + + indirect(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The peer LSR may be connected indirectly by means + of an ATM VP so that the VPI values may be different + on either endpoint so the label MUST be encoded + entirely within the VCI field." + DEFVAL { direct } + ::= { mplsLdpEntityAtmEntry 5 } + +mplsLdpEntityAtmDefaultControlVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default VPI value for the non-MPLS connection. The + default value of this is 0 (zero) but other values may + be configured. This object allows a different value + to be configured." + DEFVAL { 0 } + ::= { mplsLdpEntityAtmEntry 6 } + +mplsLdpEntityAtmDefaultControlVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Default VCI value for a non-MPLS connection. The + default value of this is 32 but other values may be + configured. This object allows a different value to + be configured." + DEFVAL { 32 } + ::= { mplsLdpEntityAtmEntry 7 } + +mplsLdpEntityAtmUnlabTrafVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "VPI value of the VCC supporting unlabeled traffic. This + non-MPLS connection is used to carry unlabeled (IP) + packets. The default value is the same as the default + value of the 'mplsLdpEntityAtmDefaultControlVpi', however + another value may be configured." + DEFVAL { 0 } + ::= { mplsLdpEntityAtmEntry 8 } + + +mplsLdpEntityAtmUnlabTrafVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "VCI value of the VCC supporting unlabeled traffic. + This non-MPLS connection is used to carry unlabeled (IP) + packets. The default value is the same as the default + value of the 'mplsLdpEntityAtmDefaultControlVci', however + another value may be configured." + DEFVAL { 32 } + ::= { mplsLdpEntityAtmEntry 9 } + +mplsLdpEntityAtmStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityAtmEntry 10 } + +mplsLdpEntityAtmRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the mplsLdpEntityAdminStatus + object, if a session has been initiated with a Peer, + changing objects in this table will wreak havoc + with the session and interrupt traffic. To repeat again: + the recommended procedure is to set the + mplsLdpEntityAdminStatus to down, thereby explicitly + causing a session to be torn down. Then, + change objects in this entry, then set the + mplsLdpEntityAdminStatus to enable + which enables a new session to be initiated." + ::= { mplsLdpEntityAtmEntry 11 } + +-- + + +-- The MPLS LDP Entity ATM Label Range Table +-- + +mplsLdpEntityAtmLRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityAtmLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MPLS LDP Entity ATM Label Range (LR) Table. + The purpose of this table is to provide a mechanism + for configuring a contiguous range of vpi's + with a contiguous range of vci's, or a 'label range' + for LDP Entities. + + LDP Entities which use ATM must have at least one + entry in this table. + + There must exist at least one entry in this + table for every LDP Entity that has + 'mplsLdpEntityOptionalParameters' object with + a value of 'atmSessionParameters'." + ::= { mplsLdpEntityAtmObjects 2 } + +mplsLdpEntityAtmLREntry OBJECT-TYPE + SYNTAX MplsLdpEntityAtmLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the LDP Entity ATM Label + Range Table. One entry in this table contains + information on a single range of labels + represented by the configured Upper and Lower + Bounds VPI/VCI pairs. These are the same + data used in the Initialization Message. + + NOTE: The ranges for a specific LDP Entity + are UNIQUE and non-overlapping. For example, + for a specific LDP Entity index, there could + be one entry having LowerBound vpi/vci == 0/32, and + UpperBound vpi/vci == 0/100, and a second entry + for this same interface with LowerBound + vpi/vci == 0/101 and UpperBound vpi/vci == 0/200. + However, there could not be a third entry with + LowerBound vpi/vci == 0/200 and + UpperBound vpi/vci == 0/300 because this label + range overlaps with the second entry (i.e., both + entries now have 0/200). + + + + A row will not become active unless a unique and + non-overlapping range is specified. + + At least one label range entry for a + specific LDP Entity MUST + include the default VPI/VCI values denoted + in the LDP Entity Table. + + A request to create a row with an overlapping + range should result in an inconsistentValue + error." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpEntityAtmLRMinVpi, + mplsLdpEntityAtmLRMinVci + } + ::= { mplsLdpEntityAtmLRTable 1 } + +MplsLdpEntityAtmLREntry ::= SEQUENCE { + mplsLdpEntityAtmLRMinVpi AtmVpIdentifier, + mplsLdpEntityAtmLRMinVci MplsAtmVcIdentifier, + mplsLdpEntityAtmLRMaxVpi AtmVpIdentifier, + mplsLdpEntityAtmLRMaxVci MplsAtmVcIdentifier, + mplsLdpEntityAtmLRStorageType StorageType, + mplsLdpEntityAtmLRRowStatus RowStatus +} + +mplsLdpEntityAtmLRMinVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum VPI number configured for this range. + The value of zero is a valid value for the VPI portion + of the label." + ::= { mplsLdpEntityAtmLREntry 1 } + +mplsLdpEntityAtmLRMinVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum VCI number configured for this range." + ::= { mplsLdpEntityAtmLREntry 2 } + +mplsLdpEntityAtmLRMaxVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The maximum VPI number configured for this range." + ::= { mplsLdpEntityAtmLREntry 3 } + +mplsLdpEntityAtmLRMaxVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum VCI number configured for this range." + ::= { mplsLdpEntityAtmLREntry 4 } + +mplsLdpEntityAtmLRStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityAtmLREntry 5 } + +mplsLdpEntityAtmLRRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the + mplsLdpEntityAdminStatus object, + if a session has been initiated with a Peer, + changing objects in this table will + wreak havoc with the session and interrupt traffic. + To repeat again: the recommended procedure + is to set the mplsLdpEntityAdminStatus to + down, thereby explicitly causing a session + to be torn down. Then, change objects in this + entry, then set the mplsLdpEntityAdminStatus + to enable which enables a new session + to be initiated." + ::= { mplsLdpEntityAtmLREntry 6 } + + +-- +-- MPLS LDP ATM Session Information +-- + +mplsLdpAtmSessionObjects OBJECT IDENTIFIER ::= + { mplsLdpAtmObjects 2 } + +mplsLdpAtmSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpAtmSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table which relates sessions in the + 'mplsLdpSessionTable' and their label + range intersections. There could be one + or more label range intersections between an + LDP Entity and LDP Peer using ATM as the + underlying media. Each row represents + a single label range intersection. + + This table cannot use the 'AUGMENTS' + clause because there is not necessarily + a one-to-one mapping between this table + and the mplsLdpSessionTable." + ::= { mplsLdpAtmSessionObjects 1 } + +mplsLdpAtmSessionEntry OBJECT-TYPE + SYNTAX MplsLdpAtmSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information on a + single label range intersection between an LDP Entity + and LDP Peer. + + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpSessionAtmLRLowerBoundVpi, + mplsLdpSessionAtmLRLowerBoundVci + } + ::= { mplsLdpAtmSessionTable 1 } + +MplsLdpAtmSessionEntry ::= SEQUENCE { + mplsLdpSessionAtmLRLowerBoundVpi AtmVpIdentifier, + mplsLdpSessionAtmLRLowerBoundVci MplsAtmVcIdentifier, + mplsLdpSessionAtmLRUpperBoundVpi AtmVpIdentifier, + + + mplsLdpSessionAtmLRUpperBoundVci MplsAtmVcIdentifier +} + +mplsLdpSessionAtmLRLowerBoundVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum VPI number for this range." + ::= { mplsLdpAtmSessionEntry 1 } + +mplsLdpSessionAtmLRLowerBoundVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum VCI number for this range." + ::= { mplsLdpAtmSessionEntry 2 } + +mplsLdpSessionAtmLRUpperBoundVpi OBJECT-TYPE + SYNTAX AtmVpIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum VPI number for this range." + ::= { mplsLdpAtmSessionEntry 3 } + +mplsLdpSessionAtmLRUpperBoundVci OBJECT-TYPE + SYNTAX MplsAtmVcIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum VCI number for this range." + ::= { mplsLdpAtmSessionEntry 4 } + +--************************************************************** +-- Module Conformance Statement +--************************************************************** + +mplsLdpAtmGroups + OBJECT IDENTIFIER ::= { mplsLdpAtmConformance 1 } + +mplsLdpAtmCompliances + OBJECT IDENTIFIER ::= { mplsLdpAtmConformance 2 } + +-- +-- Full Compliance +-- + + +mplsLdpAtmModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-create and read-write. In other words, + both monitoring and configuration + are available when using this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpAtmGroup + } + + + OBJECT mplsLdpEntityAtmRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT mplsLdpEntityAtmLRRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + ::= { mplsLdpAtmCompliances 1 } + +-- +-- Read-Only Compliance +-- + +mplsLdpAtmModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-only. In other words, only monitoring + is available by implementing this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpAtmGroup + } + + OBJECT mplsLdpEntityAtmIfIndexOrZero + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmMergeCap + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmVcDirectionality + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmLsrConnectivity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmDefaultControlVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmDefaultControlVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmUnlabTrafVpi + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmUnlabTrafVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsLdpEntityAtmLRMaxVpi + MIN-ACCESS read-only + + + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmLRMaxVci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmLRStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAtmLRRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + ::= { mplsLdpAtmCompliances 2 } + +-- +-- units of conformance +-- + +mplsLdpAtmGroup OBJECT-GROUP + OBJECTS { + mplsLdpEntityAtmIfIndexOrZero, + mplsLdpEntityAtmMergeCap, + mplsLdpEntityAtmLRComponents, + mplsLdpEntityAtmVcDirectionality, + mplsLdpEntityAtmLsrConnectivity, + mplsLdpEntityAtmDefaultControlVpi, + mplsLdpEntityAtmDefaultControlVci, + mplsLdpEntityAtmUnlabTrafVpi, + mplsLdpEntityAtmUnlabTrafVci, + mplsLdpEntityAtmStorageType, + mplsLdpEntityAtmRowStatus, + mplsLdpEntityAtmLRMaxVpi, + mplsLdpEntityAtmLRMaxVci, + mplsLdpEntityAtmLRStorageType, + mplsLdpEntityAtmLRRowStatus, + mplsLdpSessionAtmLRUpperBoundVpi, + mplsLdpSessionAtmLRUpperBoundVci + + } + STATUS current + + + DESCRIPTION + "Objects that apply to all MPLS LDP implementations + using ATM as the Layer 2." + ::= { mplsLdpAtmGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LDP-FRAME-RELAY-STD-MIB b/mibs/ietf/MPLS-LDP-FRAME-RELAY-STD-MIB new file mode 100644 index 0000000..3b05d91 --- /dev/null +++ b/mibs/ietf/MPLS-LDP-FRAME-RELAY-STD-MIB @@ -0,0 +1,662 @@ +MPLS-LDP-FRAME-RELAY-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, + MODULE-IDENTITY, + Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + RowStatus, + StorageType + + + FROM SNMPv2-TC -- [RFC2579] + + DLCI + FROM FRAME-RELAY-DTE-MIB -- [RFC2115] + + InterfaceIndexOrZero + FROM IF-MIB -- [RFC2020] + + mplsStdMIB + FROM MPLS-TC-STD-MIB -- [RFC3811] + + mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId + FROM MPLS-LDP-STD-MIB -- [RFC3813] + ; + +mplsLdpFrameRelayStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "Multiprotocol Label Switching (mpls) + Working Group" + CONTACT-INFO + "Joan Cucchiara (jcucchiara@mindspring.com) + Marconi Communications, Inc. + + Hans Sjostrand (hans@ipunplugged.com) + ipUnplugged + + James V. Luciani (james_luciani@mindspring.com) + Marconi Communications, Inc. + + Working Group Chairs: + George Swallow, email: swallow@cisco.com + Loa Andersson, email: loa@pi.se + + MPLS Working Group, email: mpls@uu.net + " + DESCRIPTION + "Copyright (C) The Internet Society (year). The + initial version of this MIB module was published + in RFC 3815. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB contains managed object definitions for + configuring and monitoring the Multiprotocol Label + Switching (MPLS), Label Distribution Protocol (LDP), + utilizing Frame Relay as the Layer 2 media." + + + + REVISION "200406030000Z" -- June 6, 2004 + DESCRIPTION + "Initial version published as part of RFC 3815." + + ::= { mplsStdMIB 6 } + +--**************************************************************** + +mplsLdpFrameRelayObjects OBJECT IDENTIFIER + ::= { mplsLdpFrameRelayStdMIB 1 } + +mplsLdpFrameRelayConformance OBJECT IDENTIFIER + ::= { mplsLdpFrameRelayStdMIB 2 } + +--**************************************************************** +-- MPLS LDP Frame Relay Objects +--**************************************************************** + +-- +-- Ldp Entity Objects for Frame Relay +-- + +mplsLdpEntityFrameRelayObjects OBJECT IDENTIFIER ::= + { mplsLdpFrameRelayObjects 1 } + +mplsLdpEntityFrameRelayTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityFrameRelayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Frame Relay specific + information which could be used in the + 'Optional Parameters' and other Frame Relay + specific information. + + This table 'sparse augments' the mplsLdpEntityTable + when Frame Relay is the Layer 2 medium." + ::= { mplsLdpEntityFrameRelayObjects 1 } + +mplsLdpEntityFrameRelayEntry OBJECT-TYPE + SYNTAX MplsLdpEntityFrameRelayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents the Frame Relay + optional parameters associated with the LDP entity." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex + + + } + ::= { mplsLdpEntityFrameRelayTable 1 } + +MplsLdpEntityFrameRelayEntry ::= SEQUENCE { + mplsLdpEntityFrameRelayIfIndexOrZero InterfaceIndexOrZero, + mplsLdpEntityFrameRelayMergeCap INTEGER, + mplsLdpEntityFrameRelayLRComponents Unsigned32, + mplsLdpEntityFrameRelayVcDirectionality INTEGER, + mplsLdpEntityFrameRelayStorageType StorageType, + mplsLdpEntityFrameRelayRowStatus RowStatus +} + +mplsLdpEntityFrameRelayIfIndexOrZero OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents either the InterfaceIndex of + the 'ifLayer' where the Frame Relay Labels 'owned' by this + entry were created, or 0 (zero). The value of zero + means that the InterfaceIndex is not known. For example, + if the InterfaceIndex is created subsequent to the + Frame Relay Label's creation, then it would not be known. + However, if the InterfaceIndex is known, then it must + be represented by this value. + + If an InterfaceIndex becomes known, then the + network management entity (e.g., SNMP agent) responsible + for this object MUST change the value from 0 (zero) to the + value of the InterfaceIndex. If an Frame Relay Label is + being used in forwarding data, then the value of this + object MUST be the InterfaceIndex." + ::= { mplsLdpEntityFrameRelayEntry 1 } + +mplsLdpEntityFrameRelayMergeCap OBJECT-TYPE + SYNTAX INTEGER { + notSupported(0), + supported(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This represents whether or not the Frame Relay merge + capability is supported. This is the EXACT value for the + Frame Relay Session Parameter, field M (for Frame Relay + Merge Capabilities). The Frame Relay Session Parameter + is an optional parameter in the Initialization Message. + + + + + The description from rfc3036.txt is: + 'M, Frame Relay Merge Capabilities + Specifies the merge capabilities of a Frame + Relay switch. The following values are + supported in this version of the + specification: + + Value Meaning + + 0 Merge not supported + 1 Merge supported + + Non-merge and merge Frame Relay LSRs may + freely interoperate.' + + Please refer to the following reference for a + complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityFrameRelayEntry 2 } + +mplsLdpEntityFrameRelayLRComponents OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Label Range Components in the Initialization + message. This also represents the number of entries + in the mplsLdpEntityFrameRelayLRTable which correspond + to this entry. + + This is the EXACT value for the Frame Relay Session + Parameter, field N (for Number of label range + components). The Frame Relay Session Parameter + is an optional parameter in the Initialization + Message. + + The description from rfc3036.txt is: + + 'N, Number of label range components + Specifies the number of Frame Relay Label + Range Components included in the TLV.' + + Please refer to the following reference for a + complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + + + + Initialization Message." + ::= { mplsLdpEntityFrameRelayEntry 3 } + +mplsLdpEntityFrameRelayVcDirectionality OBJECT-TYPE + SYNTAX INTEGER { + bidirectional(0), + unidirection(1) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the value of this object is 'bidirectional(0)', then + the LSR supports the use of a given DLCI as a label for + both directions independently. If the value of + this object is 'unidirectional(1)', then the LSR + uses the given DLCI as a label in only one direction. + + This is the EXACT value for the Frame Relay Session + Parameter, field D (for VC Directionality). The + Frame Relay Session Parameter is an optional + parameter in the Initialization Message. + + The description from rfc3036.txt is: + + 'D, VC Directionality + A value of 0 specifies bidirectional VC capability, + meaning the LSR can support the use of a given + DLCI as a label for both link directions + independently. A value of 1 specifies + unidirectional VC capability, meaning a given + DLCI may appear in a label mapping for one + direction on the link only. When either or both + of the peers specifies unidirectional VC + capability, both LSRs use unidirectional VC + label assignment for the link as follows. The + LSRs compare their LDP Identifiers as unsigned + integers. The LSR with the larger LDP + Identifier may assign only odd-numbered DLCIs + in the range as labels. The system with the + smaller LDP Identifier may assign only + even-numbered DLCIs in the range as labels.' + + Please refer to the following reference for a + complete description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityFrameRelayEntry 4 } + + +mplsLdpEntityFrameRelayStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityFrameRelayEntry 5 } + +mplsLdpEntityFrameRelayRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the + mplsLdpEntityAdminStatus object, + if a session has been initiated with a Peer, + changing objects in this table will + wreak havoc with the session and interrupt + traffic. To repeat again: + the recommended procedure is to set the + mplsLdpEntityAdminStatus to + down, thereby explicitly causing a + session to be torn down. Then, + change objects in this entry, then set + the mplsLdpEntityAdminStatus + to enable which enables a new session + to be initiated." + ::= { mplsLdpEntityFrameRelayEntry 6 } + +-- +-- Frame Relay Label Range Components +-- + +mplsLdpEntityFrameRelayLRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityFrameRelayLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the + + + Optional Parameters for the Frame Relay Session + in the LDP Initialization Message, specifically + it contains information about the Frame Relay + Label Range Components. + + If the value of the object + 'mplsLdpEntityOptionalParameters' contains the + value of 'frameRelaySessionParameters(3)' then + there must be at least one corresponding entry + in this table." + ::= { mplsLdpEntityFrameRelayObjects 2 } + +mplsLdpEntityFrameRelayLREntry OBJECT-TYPE + SYNTAX MplsLdpEntityFrameRelayLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents the Frame Relay + Label Range Component associated with the LDP entity." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpEntityFrameRelayLRMinDlci + } + ::= { mplsLdpEntityFrameRelayLRTable 1 } + +MplsLdpEntityFrameRelayLREntry ::= SEQUENCE { + mplsLdpEntityFrameRelayLRMinDlci DLCI, + mplsLdpEntityFrameRelayLRMaxDlci DLCI, + mplsLdpEntityFrameRelayLRLen INTEGER, + mplsLdpEntityFrameRelayLRStorageType StorageType, + mplsLdpEntityFrameRelayLRRowStatus RowStatus +} + +mplsLdpEntityFrameRelayLRMinDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The lower bound which is supported. This value + should be the same as that in the Frame Relay Label + Range Component's Minimum DLCI field. The value + of zero is valid for the minimum DLCI field of + the label." + REFERENCE + "RFC3034, Use of Label Switching on Frame Relay + Networks Specification." + ::= { mplsLdpEntityFrameRelayLREntry 1 } + + + +mplsLdpEntityFrameRelayLRMaxDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upper bound which is supported. This value + should be the same as that in the Frame Relay Label + Range Component's Maximum DLCI field." + ::= { mplsLdpEntityFrameRelayLREntry 2 } + +mplsLdpEntityFrameRelayLRLen OBJECT-TYPE + SYNTAX INTEGER { + tenDlciBits(0), + twentyThreeDlciBits(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the length of the DLCI bits. + + This is the EXACT value for the Len field of the + Frame Relay Label Range Component. + + The description from rfc3036.txt is: + + 'Len + This field specifies the number of bits of the DLCI. + The following values are supported: + + Len DLCI bits + + 0 10 + 2 23 + + Len values 1 and 3 are reserved.' + + Please refer to the following reference for a complete + description of this feature." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 + Initialization Message." + ::= { mplsLdpEntityFrameRelayLREntry 3 } + +mplsLdpEntityFrameRelayLRStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityFrameRelayLREntry 4 } + +mplsLdpEntityFrameRelayLRRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the + mplsLdpEntityAdminStatus object, + if a session has been initiated with a Peer, + changing objects in this table will + wreak havoc with the session and interrupt + traffic. To repeat again: + the recommended procedure is to set the + mplsLdpEntityAdminStatus to down, thereby + explicitly causing a session to be torn down. Then, + change objects in this entry, then set the + mplsLdpEntityAdminStatus to enable which enables + a new session to be initiated." + ::= { mplsLdpEntityFrameRelayLREntry 5 } + +-- +-- MPLS LDP Frame Relay Session Information +-- + +mplsLdpFrameRelaySessionObjects OBJECT IDENTIFIER ::= + { mplsLdpFrameRelayObjects 2 } + +mplsLdpFrameRelaySessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpFrameRelaySessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Frame Relay label range intersections + between the LDP Entities and LDP Peers. + Each row represents a single label range intersection. + + NOTE: this table cannot use the 'AUGMENTS' + + + clause because there is not necessarily a one-to-one + mapping between this table and the + mplsLdpSessionTable." + ::= { mplsLdpFrameRelaySessionObjects 1 } + +mplsLdpFrameRelaySessionEntry OBJECT-TYPE + SYNTAX MplsLdpFrameRelaySessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information on a + single label range intersection between an + LDP Entity and LDP Peer. + + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpFrameRelaySessionMinDlci + } + ::= { mplsLdpFrameRelaySessionTable 1 } + +MplsLdpFrameRelaySessionEntry ::= SEQUENCE { + mplsLdpFrameRelaySessionMinDlci DLCI, + mplsLdpFrameRelaySessionMaxDlci DLCI, + mplsLdpFrameRelaySessionLen INTEGER +} + +mplsLdpFrameRelaySessionMinDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The lower bound of DLCIs which are supported. + The value of zero is a valid value for the + minimum DLCI field of the label." + REFERENCE + "RFC3034, Use of Label Switching on Frame Relay + Networks Specification." + ::= { mplsLdpFrameRelaySessionEntry 1 } + +mplsLdpFrameRelaySessionMaxDlci OBJECT-TYPE + SYNTAX DLCI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The upper bound of DLCIs which are supported." + ::= { mplsLdpFrameRelaySessionEntry 2 } + + +mplsLdpFrameRelaySessionLen OBJECT-TYPE + SYNTAX INTEGER { + tenDlciBits(0), + twentyThreeDlciBits(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the DLCI bits." + ::= { mplsLdpFrameRelaySessionEntry 3 } + +--**************************************************************** +-- Module Conformance Statement +--**************************************************************** + +mplsLdpFrameRelayGroups + OBJECT IDENTIFIER ::= { mplsLdpFrameRelayConformance 1 } + +mplsLdpFrameRelayCompliances + OBJECT IDENTIFIER ::= { mplsLdpFrameRelayConformance 2 } + +-- +-- Full Compliance +-- + +mplsLdpFrameRelayModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-create and read-write. In other words, + both monitoring and configuration + are available when using this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpFrameRelayGroup + } + + OBJECT mplsLdpEntityFrameRelayRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT mplsLdpEntityFrameRelayLRRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + + ::= { mplsLdpFrameRelayCompliances 1 } + +-- +-- Read-Only Compliance +-- + +mplsLdpFrameRelayModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-only. In other words, only monitoring + is available by implementing this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpFrameRelayGroup + } + + OBJECT mplsLdpEntityFrameRelayIfIndexOrZero + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayMergeCap + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayVcDirectionality + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsLdpEntityFrameRelayLRMaxDlci + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + OBJECT mplsLdpEntityFrameRelayLRLen + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayLRStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityFrameRelayLRRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + ::= { mplsLdpFrameRelayCompliances 2 } + +-- +-- units of conformance +-- + +mplsLdpFrameRelayGroup OBJECT-GROUP + OBJECTS { + mplsLdpEntityFrameRelayIfIndexOrZero, + mplsLdpEntityFrameRelayMergeCap, + mplsLdpEntityFrameRelayLRComponents, + mplsLdpEntityFrameRelayVcDirectionality, + mplsLdpEntityFrameRelayStorageType, + mplsLdpEntityFrameRelayRowStatus, + mplsLdpEntityFrameRelayLRMaxDlci, + mplsLdpEntityFrameRelayLRLen, + mplsLdpEntityFrameRelayLRStorageType, + mplsLdpEntityFrameRelayLRRowStatus, + mplsLdpFrameRelaySessionMaxDlci, + mplsLdpFrameRelaySessionLen + } + STATUS current + DESCRIPTION + "Objects that apply to all MPLS LDP implementations + using Frame Relay as the Layer 2." + ::= { mplsLdpFrameRelayGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LDP-GENERIC-STD-MIB b/mibs/ietf/MPLS-LDP-GENERIC-STD-MIB new file mode 100644 index 0000000..fb4348e --- /dev/null +++ b/mibs/ietf/MPLS-LDP-GENERIC-STD-MIB @@ -0,0 +1,336 @@ +MPLS-LDP-GENERIC-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, + MODULE-IDENTITY, + Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + RowStatus, + StorageType + FROM SNMPv2-TC -- [RFC2579] + + InterfaceIndexOrZero + FROM IF-MIB -- [RFC2020] + + mplsStdMIB + FROM MPLS-TC-STD-MIB -- [RFC3811] + + mplsLdpEntityLdpId, + mplsLdpEntityIndex + FROM MPLS-LDP-STD-MIB -- [RFC3813] + ; + +mplsLdpGenericStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 6, 2004 + ORGANIZATION "Multiprotocol Label Switching (mpls) + Working Group" + CONTACT-INFO + "Joan Cucchiara (jcucchiara@mindspring.com) + Marconi Communications, Inc. + + Hans Sjostrand (hans@ipunplugged.com) + ipUnplugged + + + + James V. Luciani (james_luciani@mindspring.com) + Marconi Communications, Inc. + + Working Group Chairs: + George Swallow, email: swallow@cisco.com + Loa Andersson, email: loa@pi.se + + MPLS Working Group, email: mpls@uu.net + " + DESCRIPTION + "Copyright (C) The Internet Society (year). The + initial version of this MIB module was published + in RFC 3815. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB contains managed object definitions for + configuring and monitoring the Multiprotocol Label + Switching (MPLS), Label Distribution Protocol (LDP), + utilizing ethernet as the Layer 2 media." + REVISION "200406030000Z" -- June 6, 2004 + DESCRIPTION + "Initial version published as part of RFC 3815." + + ::= { mplsStdMIB 7 } + +--**************************************************************** + +mplsLdpGenericObjects + OBJECT IDENTIFIER ::= { mplsLdpGenericStdMIB 1 } +mplsLdpGenericConformance + OBJECT IDENTIFIER ::= { mplsLdpGenericStdMIB 2 } + +--**************************************************************** +-- MPLS LDP GENERIC Objects +--**************************************************************** + +-- +-- Ldp Entity Objects for Generic Labels +-- + +mplsLdpEntityGenericObjects OBJECT IDENTIFIER ::= + { mplsLdpGenericObjects 1 } + +-- +-- The MPLS LDP Entity Generic Label Range Table +-- + + + +mplsLdpEntityGenericLRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityGenericLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MPLS LDP Entity Generic Label Range (LR) + Table. + + The purpose of this table is to provide a mechanism + for configurating a contiguous range of generic labels, + or a 'label range' for LDP Entities. + + LDP Entities which use Generic Labels must have at least + one entry in this table. In other words, this table + 'extends' the mpldLdpEntityTable for Generic Labels." + ::= { mplsLdpEntityGenericObjects 1 } + +mplsLdpEntityGenericLREntry OBJECT-TYPE + SYNTAX MplsLdpEntityGenericLREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the LDP Entity Generic Label + Range (LR) Table. One entry in this table contains + information on a single range of labels + represented by the configured Upper and Lower + Bounds pairs. NOTE: there is NO corresponding + LDP message which relates to the information + in this table, however, this table does provide + a way for a user to 'reserve' a generic label + range. + + NOTE: The ranges for a specific LDP Entity + are UNIQUE and non-overlapping. + + A row will not be created unless a unique and + non-overlapping range is specified." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpEntityGenericLRMin, + mplsLdpEntityGenericLRMax + } + ::= { mplsLdpEntityGenericLRTable 1 } + +MplsLdpEntityGenericLREntry ::= SEQUENCE { + mplsLdpEntityGenericLRMin Unsigned32, + mplsLdpEntityGenericLRMax Unsigned32, + mplsLdpEntityGenericLabelSpace INTEGER, + + + + mplsLdpEntityGenericIfIndexOrZero InterfaceIndexOrZero, + mplsLdpEntityGenericLRStorageType StorageType, + mplsLdpEntityGenericLRRowStatus RowStatus +} + +mplsLdpEntityGenericLRMin OBJECT-TYPE + SYNTAX Unsigned32(0..1048575) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The minimum label configured for this range." + ::= { mplsLdpEntityGenericLREntry 1 } + +mplsLdpEntityGenericLRMax OBJECT-TYPE + SYNTAX Unsigned32(0..1048575) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The maximum label configured for this range." + ::= { mplsLdpEntityGenericLREntry 2 } + +mplsLdpEntityGenericLabelSpace OBJECT-TYPE + SYNTAX INTEGER { + perPlatform(1), + perInterface(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value of this object is perPlatform(1), then + this means that the label space type is + per platform. + + If this object is perInterface(2), then this + means that the label space type is per Interface." + REFERENCE + "RFC3036, LDP Specification, Section 2.2.1, + Label Spaces." + DEFVAL { perPlatform } + ::= { mplsLdpEntityGenericLREntry 3 } + +mplsLdpEntityGenericIfIndexOrZero OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value represents either the InterfaceIndex of + the 'ifLayer' where these Generic Label would be created, + + + or 0 (zero). The value of zero means that the + InterfaceIndex is not known. + + However, if the InterfaceIndex is known, + then it must be represented by this value. + + If an InterfaceIndex becomes known, then the + network management entity (e.g., SNMP agent) responsible + for this object MUST change the value from 0 (zero) to the + value of the InterfaceIndex." + ::= { mplsLdpEntityGenericLREntry 4 } + +mplsLdpEntityGenericLRStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpEntityGenericLREntry 5 } + +mplsLdpEntityGenericLRRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any time, + however, as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the mplsLdpEntityAdminStatus object, + if a session has been initiated with a Peer, + changing objects in this table will + wreak havoc with the session and interrupt traffic. + To repeat again: the recommended procedure is + to set the mplsLdpEntityAdminStatus to + down, thereby explicitly causing a + session to be torn down. Then, change objects + in this entry, then set the mplsLdpEntityAdminStatus + to enable which enables a new session to be initiated. + + There must exist at least one entry in this + table for every LDP Entity that has a + generic label configured." + + + ::= { mplsLdpEntityGenericLREntry 6 } + +--**************************************************************** +-- Module Conformance Statement +--**************************************************************** + +mplsLdpGenericGroups + OBJECT IDENTIFIER ::= { mplsLdpGenericConformance 1 } + +mplsLdpGenericCompliances + OBJECT IDENTIFIER ::= { mplsLdpGenericConformance 2 } + +-- +-- Full Compliance +-- + +mplsLdpGenericModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-create and read-write. In other words, + both monitoring and configuration + are available when using this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + mplsLdpGenericGroup + } + + OBJECT mplsLdpEntityGenericLRRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + ::= { mplsLdpGenericCompliances 1 } + +-- +-- Read-Only Compliance +-- + +mplsLdpGenericModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support for + read-only. In other words, only monitoring + is available by implementing this MODULE-COMPLIANCE." + MODULE -- this module + MANDATORY-GROUPS { + + + mplsLdpGenericGroup + } + + OBJECT mplsLdpEntityGenericLabelSpace + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityGenericIfIndexOrZero + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityGenericLRStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityGenericLRRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + ::= { mplsLdpGenericCompliances 2 } + +-- +-- units of conformance +-- + +mplsLdpGenericGroup OBJECT-GROUP + OBJECTS { + mplsLdpEntityGenericLabelSpace, + mplsLdpEntityGenericIfIndexOrZero, + mplsLdpEntityGenericLRStorageType, + mplsLdpEntityGenericLRRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply to all MPLS LDP implementations + using Generic Labels as the Layer 2." + ::= { mplsLdpGenericGroups 1 } + +END diff --git a/mibs/ietf/MPLS-LDP-STD-MIB b/mibs/ietf/MPLS-LDP-STD-MIB new file mode 100644 index 0000000..6d40d10 --- /dev/null +++ b/mibs/ietf/MPLS-LDP-STD-MIB @@ -0,0 +1,2547 @@ +MPLS-LDP-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, + Integer32, Counter32, Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + RowStatus, TimeInterval, TruthValue, + TimeStamp, StorageType + + + + FROM SNMPv2-TC -- [RFC2579] + + InetAddressPrefixLength, + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB -- [RFC3291] + + IndexInteger, + IndexIntegerNextFree + FROM DIFFSERV-MIB -- [RFC3289] + + mplsStdMIB, + MplsLabelDistributionMethod, + MplsLdpIdentifier, + MplsLdpLabelType, + MplsLspType, + MplsLsrIdentifier, + MplsRetentionMode + FROM MPLS-TC-STD-MIB -- [RFC3811] + + MplsIndexType + FROM MPLS-LSR-STD-MIB; -- [RFC3813] + +mplsLdpStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "Multiprotocol Label Switching (mpls) + Working Group" + CONTACT-INFO + + "Joan Cucchiara (jcucchiara@mindspring.com) + Marconi Communications, Inc. + + Hans Sjostrand (hans@ipunplugged.com) + ipUnplugged + + James V. Luciani (james_luciani@mindspring.com) + Marconi Communications, Inc. + + Working Group Chairs: + George Swallow, email: swallow@cisco.com + Loa Andersson, email: loa@pi.se + + MPLS Working Group, email: mpls@uu.net" + + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + + + + in RFC 3815. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB contains managed object definitions for the + 'Multiprotocol Label Switching, Label Distribution + Protocol, LDP' document." + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial version published as part of RFC 3815." + + ::= { mplsStdMIB 4 } + +--**************************************************************** + +mplsLdpNotifications OBJECT IDENTIFIER ::= { mplsLdpStdMIB 0 } +mplsLdpObjects OBJECT IDENTIFIER ::= { mplsLdpStdMIB 1 } +mplsLdpConformance OBJECT IDENTIFIER ::= { mplsLdpStdMIB 2 } + +--**************************************************************** +-- MPLS LDP Objects +--**************************************************************** + +mplsLdpLsrObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 1 } + +mplsLdpEntityObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 2 } + +-- +-- The MPLS Label Distribution Protocol's +-- Label Switching Router Objects +-- + +mplsLdpLsrId OBJECT-TYPE + SYNTAX MplsLsrIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Label Switching Router's Identifier." + ::= { mplsLdpLsrObjects 1 } + +mplsLdpLsrLoopDetectionCapable OBJECT-TYPE + SYNTAX INTEGER { + none(1), + other(2), + hopCount(3), + pathVector(4), + hopCountAndPathVector(5) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A indication of whether this + Label Switching Router supports + loop detection. + + none(1) -- Loop Detection is not supported + on this LSR. + + other(2) -- Loop Detection is supported but + by a method other than those + listed below. + + hopCount(3) -- Loop Detection is supported by + Hop Count only. + + pathVector(4) -- Loop Detection is supported by + Path Vector only. + + hopCountAndPathVector(5) -- Loop Detection is + supported by both Hop Count + And Path Vector. + + Since Loop Detection is determined during + Session Initialization, an individual session + may not be running with loop detection. This + object simply gives an indication of whether or not the + LSR has the ability to support Loop Detection and + which types." + + ::= { mplsLdpLsrObjects 2 } + +-- +-- The MPLS Label Distribution Protocol Entity Objects +-- + +mplsLdpEntityLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most + recent addition or deletion of an entry + to/from the mplsLdpEntityTable/mplsLdpEntityStatsTable, or + the most recent change in value of any objects in the + mplsLdpEntityTable. + + + + If no such changes have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsLdpEntityObjects 1 } + +mplsLdpEntityIndexNext OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for mplsLdpEntityIndex when creating + entries in the mplsLdpEntityTable. The value + 0 indicates that no unassigned entries are + available." + ::= { mplsLdpEntityObjects 2 } + + +mplsLdpEntityTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the + MPLS Label Distribution Protocol Entities which + exist on this Label Switching Router (LSR) + or Label Edge Router (LER)." + ::= { mplsLdpEntityObjects 3 } + + mplsLdpEntityEntry OBJECT-TYPE + SYNTAX MplsLdpEntityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents an LDP entity. + An entry can be created by a network administrator + or by an SNMP agent as instructed by LDP." + INDEX { mplsLdpEntityLdpId, mplsLdpEntityIndex } + ::= { mplsLdpEntityTable 1 } + + MplsLdpEntityEntry ::= SEQUENCE { + mplsLdpEntityLdpId MplsLdpIdentifier, + mplsLdpEntityIndex IndexInteger, + mplsLdpEntityProtocolVersion Unsigned32, + mplsLdpEntityAdminStatus INTEGER, + mplsLdpEntityOperStatus INTEGER, + mplsLdpEntityTcpPort InetPortNumber, + mplsLdpEntityUdpDscPort InetPortNumber, + + + + mplsLdpEntityMaxPduLength Unsigned32, + mplsLdpEntityKeepAliveHoldTimer Unsigned32, + mplsLdpEntityHelloHoldTimer Unsigned32, + mplsLdpEntityInitSessionThreshold Integer32, + mplsLdpEntityLabelDistMethod MplsLabelDistributionMethod, + mplsLdpEntityLabelRetentionMode MplsRetentionMode, + mplsLdpEntityPathVectorLimit Integer32, + mplsLdpEntityHopCountLimit Integer32, + mplsLdpEntityTransportAddrKind INTEGER, + mplsLdpEntityTargetPeer TruthValue, + mplsLdpEntityTargetPeerAddrType InetAddressType, + mplsLdpEntityTargetPeerAddr InetAddress, + mplsLdpEntityLabelType MplsLdpLabelType, + mplsLdpEntityDiscontinuityTime TimeStamp, + mplsLdpEntityStorageType StorageType, + mplsLdpEntityRowStatus RowStatus + } + + mplsLdpEntityLdpId OBJECT-TYPE + SYNTAX MplsLdpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The LDP identifier." + REFERENCE + "RFC3036, LDP Specification, Section on LDP Identifiers." + ::= { mplsLdpEntityEntry 1 } + +mplsLdpEntityIndex OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index is used as a secondary index to uniquely + identify this row. Before creating a row in this table, + the 'mplsLdpEntityIndexNext' object should be retrieved. + That value should be used for the value of this index + when creating a row in this table. NOTE: if a value + of zero (0) is retrieved, that indicates that no rows + can be created in this table at this time. + + A secondary index (this object) is meaningful to some + but not all, LDP implementations. For example + an LDP implementation which uses PPP would + use this index to differentiate PPP sub-links. + + Another way to use this index is to give this the + value of ifIndex. However, this is dependant + + + + on the implementation." + ::= { mplsLdpEntityEntry 2 } + +mplsLdpEntityProtocolVersion OBJECT-TYPE + SYNTAX Unsigned32(1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The version number of the LDP protocol which will be + used in the session initialization message. + + Section 3.5.3 in the LDP Specification specifies + that the version of the LDP protocol is negotiated during + session establishment. The value of this object + represents the value that is sent in the initialization + message." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3 Initialization + Message." + DEFVAL { 1 } + ::= { mplsLdpEntityEntry 3 } + +mplsLdpEntityAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enable(1), + disable(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative status of this LDP Entity. + If this object is changed from 'enable' to 'disable' + and this entity has already attempted to establish + contact with a Peer, then all contact with that + Peer is lost and all information from that Peer + needs to be removed from the MIB. (This implies + that the network management subsystem should clean + up any related entry in the mplsLdpPeerTable. This + further implies that a 'tear-down' for that session + is issued and the session and all information related + to that session cease to exist). + + At this point the operator is able to change values + which are related to this entity. + + When the admin status is set back to 'enable', then + this Entity will attempt to establish a new session + with the Peer." + + + + DEFVAL { enable } + ::= { mplsLdpEntityEntry 4 } + +mplsLdpEntityOperStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + enabled(2), + disabled(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of this LDP Entity. + + The value of unknown(1) indicates that the + operational status cannot be determined at + this time. The value of unknown should be + a transient condition before changing + to enabled(2) or disabled(3)." + ::= { mplsLdpEntityEntry 5 } + +mplsLdpEntityTcpPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TCP Port for + LDP. The default value is the well-known + value of this port." + REFERENCE + "RFC3036, LDP Specification, Section 3.10, Well-known + Numbers, and Section 3.10.1. UDP and TCP Ports." + DEFVAL { 646 } + ::= { mplsLdpEntityEntry 6 } + +mplsLdpEntityUdpDscPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP Discovery Port for + LDP. The default value is the + well-known value for this port." + REFERENCE + "RFC3036, LDP Specification, Section 2.4.1, + Basic Discovery Mechanism, Section 2.4.2, + Extended Discovery Mechanism, Section + 3.10, Well-known Numbers, and Section 3.10.1. + + + + UDP and TCP Ports." + DEFVAL { 646 } + ::= { mplsLdpEntityEntry 7 } + +mplsLdpEntityMaxPduLength OBJECT-TYPE + SYNTAX Unsigned32 (256..65535) + UNITS "octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum PDU Length that is sent in + the Common Session Parameters of an Initialization + Message. According to the LDP Specification [RFC3036] + a value of 255 or less specifies the + default maximum length of 4096 octets, this is why + the value of this object starts at 256. The operator + should explicitly choose the default value (i.e., 4096), + or some other value. + + The receiving LSR MUST calculate the maximum PDU + length for the session by using the smaller of its and + its peer's proposals for Max PDU Length." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3. + Initialization Message." + DEFVAL { 4096 } + ::= { mplsLdpEntityEntry 8 } + +mplsLdpEntityKeepAliveHoldTimer OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 16-bit integer value which is the proposed keep + alive hold timer for this LDP Entity." + DEFVAL { 40 } + ::= { mplsLdpEntityEntry 9 } + +mplsLdpEntityHelloHoldTimer OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The 16-bit integer value which is the proposed Hello + hold timer for this LDP Entity. The Hello Hold time + in seconds. + + + + An LSR maintains a record of Hellos received + from potential peers. This object represents + the Hold Time in the Common Hello Parameters TLV of + the Hello Message. + + A value of 0 is a default value and should be + interpretted in conjunction with the + mplsLdpEntityTargetPeer object. + + If the value of this object is 0: if the value of the + mplsLdpEntityTargetPeer object is false(2), then this + specifies that the Hold Time's actual default value is + 15 seconds (i.e., the default Hold time for Link Hellos + is 15 seconds). Otherwise if the value of the + mplsLdpEntityTargetPeer object is true(1), then this + specifies that the Hold Time's actual default value is + 45 seconds (i.e., the default Hold time for Targeted + Hellos is 45 seconds). + + A value of 65535 means infinite (i.e., wait forever). + + All other values represent the amount of time in + seconds to wait for a Hello Message. Setting the + hold time to a value smaller than 15 is not + recommended, although not forbidden according + to RFC3036." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.2., + Hello Message." + DEFVAL { 0 } + ::= { mplsLdpEntityEntry 10 } + +mplsLdpEntityInitSessionThreshold OBJECT-TYPE + SYNTAX Integer32(0..100) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When attempting to establish a session with + a given Peer, the given LDP Entity should + send out the SNMP notification, + 'mplsLdpInitSessionThresholdExceeded', when + the number of Session Initialization messages + sent exceeds this threshold. + + The notification is used to notify an + operator when this Entity and its Peer are + possibly engaged in an endless sequence + of messages as each NAKs the other's + + + + Initialization messages with Error Notification + messages. Setting this threshold which triggers + the notification is one way to notify the + operator. The notification should be generated + each time this threshold is exceeded and + for every subsequent Initialization message + which is NAK'd with an Error Notification + message after this threshold is exceeded. + + A value of 0 (zero) for this object + indicates that the threshold is infinity, thus + the SNMP notification will never be generated." + REFERENCE + "RFC3036, LDP Specification, + Section 2.5.3 Session Initialization." + DEFVAL { 8 } + ::= { mplsLdpEntityEntry 11 } + +mplsLdpEntityLabelDistMethod OBJECT-TYPE + SYNTAX MplsLabelDistributionMethod + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For any given LDP session, the method of + label distribution must be specified." + ::= { mplsLdpEntityEntry 12 } + +mplsLdpEntityLabelRetentionMode OBJECT-TYPE + SYNTAX MplsRetentionMode + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The LDP Entity can be configured to use either + conservative or liberal label retention mode. + + If the value of this object is conservative(1) + then advertized label mappings are retained + only if they will be used to forward packets, + i.e., if label came from a valid next hop. + + If the value of this object is liberal(2) + then all advertized label mappings are retained + whether they are from a valid next hop or not." + ::= { mplsLdpEntityEntry 13 } + +mplsLdpEntityPathVectorLimit OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "If the value of this object is 0 (zero) then + Loop Detection for Path Vectors is disabled. + + Otherwise, if this object has a value greater than + zero, then Loop Dection for Path Vectors is enabled, + and the Path Vector Limit is this value. + Also, the value of the object, + 'mplsLdpLsrLoopDetectionCapable', must be set to + either 'pathVector(4)' or 'hopCountAndPathVector(5)', + if this object has a value greater than 0 (zero), + otherwise it is ignored." + REFERENCE + "RFC3036, LDP Specification, Section 2.8 Loop Dection, + Section 3.4.5 Path Vector TLV." + ::= { mplsLdpEntityEntry 14 } + +mplsLdpEntityHopCountLimit OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the value of this object is 0 (zero), + then Loop Detection using Hop Counters is + disabled. + + If the value of this object is greater than + 0 (zero) then Loop Detection using Hop + Counters is enabled, and this object + specifies this Entity's maximum allowable + value for the Hop Count. + Also, the value of the object + mplsLdpLsrLoopDetectionCapable must be set + to either 'hopCount(3)' or + 'hopCountAndPathVector(5)' if this object + has a value greater than 0 (zero), otherwise + it is ignored." + DEFVAL { 0 } + ::= { mplsLdpEntityEntry 15 } + +mplsLdpEntityTransportAddrKind OBJECT-TYPE + SYNTAX INTEGER { + interface(1), + loopback(2) + } + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "This specifies whether the loopback or interface + address is to be used as the transport address + in the transport address TLV of the + hello message. + + If the value is interface(1), then the IP + address of the interface from which hello + messages are sent is used as the transport + address in the hello message. + + Otherwise, if the value is loopback(2), then the IP + address of the loopback interface is used as the + transport address in the hello message." + DEFVAL { loopback } + ::= { mplsLdpEntityEntry 16 } + +mplsLdpEntityTargetPeer OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this LDP entity uses targeted peer then set + this to true." + DEFVAL { false } + ::= { mplsLdpEntityEntry 17 } + +mplsLdpEntityTargetPeerAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address used for + the Extended Discovery. This object indicates how + the value of mplsLdpEntityTargetPeerAddr is to + be interpreted." + ::= { mplsLdpEntityEntry 18 } + +mplsLdpEntityTargetPeerAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork layer address + used for the Extended Discovery. The value of + mplsLdpEntityTargetPeerAddrType specifies how + this address is to be interpreted." + ::= { mplsLdpEntityEntry 19 } + + + +mplsLdpEntityLabelType OBJECT-TYPE + SYNTAX MplsLdpLabelType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the optional parameters for the LDP + Initialization Message. + + If the value is generic(1) then no + optional parameters will be sent in + the LDP Initialization message associated + with this Entity. + + If the value is atmParameters(2) then + a row must be created in the + mplsLdpEntityAtmTable, which + corresponds to this entry. + + If the value is frameRelayParameters(3) then + a row must be created in the + mplsLdpEntityFrameRelayTable, which + corresponds to this entry." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3., + Initialization Message." + ::= { mplsLdpEntityEntry 20 } + +mplsLdpEntityDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one or more of this entity's counters + suffered a discontinuity. The relevant counters + are the specific instances associated with this + entity of any Counter32 object contained + in the 'mplsLdpEntityStatsTable'. If no such + discontinuities have occurred since the last + re-initialization of the local management + subsystem, then this object contains a zero + value." + ::= { mplsLdpEntityEntry 21 } + +mplsLdpEntityStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL{ nonVolatile } + ::= { mplsLdpEntityEntry 22 } + +mplsLdpEntityRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. All writable + objects in this row may be modified at any + time, however, as described in detail in + the section entitled, 'Changing Values After + Session Establishment', and again described + in the DESCRIPTION clause of the + mplsLdpEntityAdminStatus object, if a session + has been initiated with a Peer, changing objects + in this table will wreak havoc with the session + and interrupt traffic. To repeat again: + the recommended procedure is to + set the mplsLdpEntityAdminStatus to down, thereby + explicitly causing a session to be torn down. Then, + change objects in this entry, then set + the mplsLdpEntityAdminStatus to enable, + which enables a new session to be initiated." + ::= { mplsLdpEntityEntry 23 } + +-- +-- The MPLS LDP Entity Statistics Table +-- + +mplsLdpEntityStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpEntityStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is a read-only table which augments + the mplsLdpEntityTable. The purpose of this + table is to keep statistical information about + the LDP Entities on the LSR." + ::= { mplsLdpEntityObjects 4 } + +mplsLdpEntityStatsEntry OBJECT-TYPE + SYNTAX MplsLdpEntityStatsEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in this table contains statistical information + about an LDP Entity. Some counters contained in a + row are for fatal errors received during a former + LDP Session associated with this entry. For example, + an LDP PDU received on a TCP connection during an + LDP Session contains a fatal error. That + error is counted here, because the + session is terminated. + + If the error is NOT fatal (i.e., the Session + remains), then the error is counted in the + mplsLdpSessionStatsEntry." + AUGMENTS { mplsLdpEntityEntry } + ::= { mplsLdpEntityStatsTable 1 } + +MplsLdpEntityStatsEntry ::= SEQUENCE { + mplsLdpEntityStatsSessionAttempts Counter32, + mplsLdpEntityStatsSessionRejectedNoHelloErrors Counter32, + mplsLdpEntityStatsSessionRejectedAdErrors Counter32, + mplsLdpEntityStatsSessionRejectedMaxPduErrors Counter32, + mplsLdpEntityStatsSessionRejectedLRErrors Counter32, + mplsLdpEntityStatsBadLdpIdentifierErrors Counter32, + mplsLdpEntityStatsBadPduLengthErrors Counter32, + mplsLdpEntityStatsBadMessageLengthErrors Counter32, + mplsLdpEntityStatsBadTlvLengthErrors Counter32, + mplsLdpEntityStatsMalformedTlvValueErrors Counter32, + mplsLdpEntityStatsKeepAliveTimerExpErrors Counter32, + mplsLdpEntityStatsShutdownReceivedNotifications Counter32, + mplsLdpEntityStatsShutdownSentNotifications Counter32 +} + +mplsLdpEntityStatsSessionAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Initialization messages + which were sent or received by this LDP Entity and + were NAK'd. In other words, this counter counts + the number of session initializations that failed. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + + + + ::= { mplsLdpEntityStatsEntry 1 } + +mplsLdpEntityStatsSessionRejectedNoHelloErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Rejected/No Hello Error + Notification Messages sent or received by + this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 2 } + +mplsLdpEntityStatsSessionRejectedAdErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Rejected/Parameters + Advertisement Mode Error Notification Messages sent + or received by this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 3 } + +mplsLdpEntityStatsSessionRejectedMaxPduErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Rejected/Parameters + + Max Pdu Length Error Notification Messages sent + or received by this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 4 } + + + + +mplsLdpEntityStatsSessionRejectedLRErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the Session Rejected/Parameters + Label Range Notification Messages sent + or received by this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 5 } + +mplsLdpEntityStatsBadLdpIdentifierErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Bad LDP Identifier + Fatal Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 6 } + +mplsLdpEntityStatsBadPduLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Bad PDU Length + Fatal Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 7 } + + + +mplsLdpEntityStatsBadMessageLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Bad Message + Length Fatal Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 8 } + +mplsLdpEntityStatsBadTlvLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Bad TLV + Length Fatal Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 9 } + +mplsLdpEntityStatsMalformedTlvValueErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Malformed TLV + Value Fatal Errors detected by the session(s) + (past and present) associated with this + LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + + + + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 10 } + +mplsLdpEntityStatsKeepAliveTimerExpErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Session Keep Alive + Timer Expired Errors detected by the session(s) + (past and present) associated with this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.1.2." + ::= { mplsLdpEntityStatsEntry 11 } + +mplsLdpEntityStatsShutdownReceivedNotifications OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Shutdown Notifications + received related to session(s) (past and present) + associated with this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 12 } + +mplsLdpEntityStatsShutdownSentNotifications OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Shutdown Notfications + sent related to session(s) (past and present) associated + with this LDP Entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + + + + mplsLdpEntityDiscontinuityTime." + ::= { mplsLdpEntityStatsEntry 13 } + +-- +-- The MPLS LDP Peer Table +-- + +mplsLdpSessionObjects OBJECT IDENTIFIER ::= { mplsLdpObjects 3 } + +mplsLdpPeerLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most + recent addition or deletion to/from the + mplsLdpPeerTable/mplsLdpSessionTable." + ::= { mplsLdpSessionObjects 1 } + +mplsLdpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about LDP peers known by Entities in + the mplsLdpEntityTable. The information in this table + is based on information from the Entity-Peer interaction + during session initialization but is not appropriate + for the mplsLdpSessionTable, because objects in this + table may or may not be used in session establishment." + ::= { mplsLdpSessionObjects 2 } + +mplsLdpPeerEntry OBJECT-TYPE + SYNTAX MplsLdpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single Peer which is related + to a Session. This table is augmented by + the mplsLdpSessionTable." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId } + ::= { mplsLdpPeerTable 1 } + +MplsLdpPeerEntry ::= SEQUENCE { + mplsLdpPeerLdpId MplsLdpIdentifier, + mplsLdpPeerLabelDistMethod MplsLabelDistributionMethod, + + + + mplsLdpPeerPathVectorLimit Integer32, + mplsLdpPeerTransportAddrType InetAddressType, + mplsLdpPeerTransportAddr InetAddress +} + +mplsLdpPeerLdpId OBJECT-TYPE + SYNTAX MplsLdpIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The LDP identifier of this LDP Peer." + ::= { mplsLdpPeerEntry 1 } + +mplsLdpPeerLabelDistMethod OBJECT-TYPE + SYNTAX MplsLabelDistributionMethod + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For any given LDP session, the method of + label distribution must be specified." + ::= { mplsLdpPeerEntry 2 } + +mplsLdpPeerPathVectorLimit OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the value of this object is 0 (zero) then + Loop Dection for Path Vectors for this Peer + is disabled. + + Otherwise, if this object has a value greater than + zero, then Loop Dection for Path Vectors for this + Peer is enabled and the Path Vector Limit is this value." + REFERENCE + "RFC3036, LDP Specification, Section 2.8 Loop Dection, + Section 3.4.5 Path Vector TLV." + ::= { mplsLdpPeerEntry 3 } + +mplsLdpPeerTransportAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the Internet address for the + mplsLdpPeerTransportAddr object. The LDP + specification describes this as being either + an IPv4 Transport Address or IPv6 Transport + + + + Address which is used in opening the LDP session's + TCP connection, or if the optional TLV is not + present, then this is the IPv4/IPv6 source + address for the UPD packet carrying the Hellos. + + This object specifies how the value of the + mplsLdpPeerTransportAddr object should be + interpreted." + REFERENCE + "RFC3036, LDP Specification, Section 2.5.2 + Transport Connection Establishment and + Section 3.5.2.1 Hello Message Procedures." + ::= { mplsLdpPeerEntry 4 } + +mplsLdpPeerTransportAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet address advertised by the peer + in the Hello Message or the Hello source address. + + The type of this address is specified by the + value of the mplsLdpPeerTransportAddrType + object." + REFERENCE + "RFC3036, LDP Specification, Section 2.5.2 + Transport Connection Establishment and + Section 3.5.2.1 Hello Message Procedures." + ::= { mplsLdpPeerEntry 5 } + +-- +-- The MPLS LDP Sessions Table +-- + +mplsLdpSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Sessions between the LDP Entities + and LDP Peers. This table AUGMENTS the + mplsLdpPeerTable. Each row in this table + represents a single session." + ::= { mplsLdpSessionObjects 3 } + +mplsLdpSessionEntry OBJECT-TYPE + SYNTAX MplsLdpSessionEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information on a + single session between an LDP Entity and LDP Peer. + The information contained in a row is read-only. + + Please note: the Path Vector Limit for the + Session is the value which is configured in + the corresponding mplsLdpEntityEntry. The + Peer's Path Vector Limit is in the + mplsLdpPeerPathVectorLimit object in the + mplsLdpPeerTable. + + Values which may differ from those configured are + noted in the objects of this table, the + mplsLdpAtmSessionTable and the + mplsLdpFrameRelaySessionTable. A value will + differ if it was negotiated between the + Entity and the Peer. Values may or may not + be negotiated. For example, if the values + are the same then no negotiation takes place. + If they are negotiated, then they may differ." + AUGMENTS { mplsLdpPeerEntry } + ::= { mplsLdpSessionTable 1 } + +MplsLdpSessionEntry ::= SEQUENCE { + mplsLdpSessionStateLastChange TimeStamp, + mplsLdpSessionState INTEGER, + mplsLdpSessionRole INTEGER, + mplsLdpSessionProtocolVersion Unsigned32, + mplsLdpSessionKeepAliveHoldTimeRem TimeInterval, + mplsLdpSessionKeepAliveTime Unsigned32, + mplsLdpSessionMaxPduLength Unsigned32, + mplsLdpSessionDiscontinuityTime TimeStamp +} + +mplsLdpSessionStateLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this + Session entered its current state as + denoted by the mplsLdpSessionState + object." + ::= { mplsLdpSessionEntry 1 } + + + + +mplsLdpSessionState OBJECT-TYPE + SYNTAX INTEGER { + nonexistent(1), + initialized(2), + openrec(3), + opensent(4), + operational(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the session, all of the + states 1 to 5 are based on the state machine + for session negotiation behavior." + REFERENCE + "RFC3036, LDP Specification, Section 2.5.4, + Initialization State Machine." + ::= { mplsLdpSessionEntry 2 } + +mplsLdpSessionRole OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + active(2), + passive(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "During session establishment the LSR/LER takes either + the active role or the passive role based on address + comparisons. This object indicates whether this LSR/LER + was behaving in an active role or passive role during + this session's establishment. + + The value of unknown(1), indicates that the role is not + able to be determined at the present time." + REFERENCE + "RFC3036, LDP Specification, Section 2.5.3., + Session Initialization" + ::= { mplsLdpSessionEntry 3 } + +mplsLdpSessionProtocolVersion OBJECT-TYPE + SYNTAX Unsigned32(1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of the LDP Protocol which + this session is using. This is the version of + + + + the LDP protocol which has been negotiated + during session initialization." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3, + Initialization Message." + ::= { mplsLdpSessionEntry 4 } + +mplsLdpSessionKeepAliveHoldTimeRem OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The keep alive hold time remaining for + this session." + ::= { mplsLdpSessionEntry 5 } + + mplsLdpSessionKeepAliveTime OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The negotiated KeepAlive Time which + represents the amount of seconds between + keep alive messages. The + mplsLdpEntityKeepAliveHoldTimer + related to this Session is the + value that was proposed as the + KeepAlive Time for this session. + + This value is negotiated during + session initialization between + the entity's proposed value + (i.e., the value configured in + mplsLdpEntityKeepAliveHoldTimer) + and the peer's proposed + KeepAlive Hold Timer value. + This value is the smaller + of the two proposed values." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3, + Initialization Message." + ::= { mplsLdpSessionEntry 6 } + + mplsLdpSessionMaxPduLength OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "octets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The value of maximum allowable length for LDP PDUs for + this session. This value may have been negotiated + during the Session Initialization. This object is + related to the mplsLdpEntityMaxPduLength object. The + mplsLdpEntityMaxPduLength object specifies the requested + LDP PDU length, and this object reflects the negotiated + LDP PDU length between the Entity and + the Peer." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3, + Initialization Message." + ::= { mplsLdpSessionEntry 7 } + +mplsLdpSessionDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one or more of this session's counters + suffered a discontinuity. The relevant counters are + the specific instances associated with this session + of any Counter32 object contained in the + mplsLdpSessionStatsTable. + + The initial value of this object is the value of + sysUpTime when the entry was created in this table. + + Also, a command generator can distinguish when a session + between a given Entity and Peer goes away and a new + session is established. This value would change and + thus indicate to the command generator that this is a + different session." + ::= { mplsLdpSessionEntry 8 } + +-- +-- The MPLS LDP Session Statistics Table +-- + +mplsLdpSessionStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of statistics for Sessions between + LDP Entities and LDP Peers. This table AUGMENTS + + + + the mplsLdpPeerTable." + ::= { mplsLdpSessionObjects 4 } + +mplsLdpSessionStatsEntry OBJECT-TYPE + SYNTAX MplsLdpSessionStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents statistical + information on a single session between an LDP + Entity and LDP Peer." + + AUGMENTS { mplsLdpPeerEntry } + ::= { mplsLdpSessionStatsTable 1 } + +MplsLdpSessionStatsEntry ::= SEQUENCE { + mplsLdpSessionStatsUnknownMesTypeErrors Counter32, + mplsLdpSessionStatsUnknownTlvErrors Counter32 +} + +mplsLdpSessionStatsUnknownMesTypeErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Unknown Message Type + Errors detected by this LSR/LER during this session. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpSessionDiscontinuityTime." + ::= { mplsLdpSessionStatsEntry 1 } + +mplsLdpSessionStatsUnknownTlvErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of Unknown TLV Errors + detected by this LSR/LER during this session. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + mplsLdpSessionDiscontinuityTime." + ::= { mplsLdpSessionStatsEntry 2 } + + + + +-- +-- The MPLS LDP Hello Adjacency Table +-- + +mplsLdpHelloAdjacencyObjects OBJECT IDENTIFIER ::= + { mplsLdpSessionObjects 5 } + +mplsLdpHelloAdjacencyTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpHelloAdjacencyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Hello Adjacencies for Sessions." + ::= { mplsLdpHelloAdjacencyObjects 1 } + +mplsLdpHelloAdjacencyEntry OBJECT-TYPE + SYNTAX MplsLdpHelloAdjacencyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row represents a single LDP Hello Adjacency. + An LDP Session can have one or more Hello + Adjacencies." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpHelloAdjacencyIndex } + ::= { mplsLdpHelloAdjacencyTable 1 } + +MplsLdpHelloAdjacencyEntry ::= SEQUENCE { + mplsLdpHelloAdjacencyIndex Unsigned32, + mplsLdpHelloAdjacencyHoldTimeRem TimeInterval, + mplsLdpHelloAdjacencyHoldTime Unsigned32, + mplsLdpHelloAdjacencyType INTEGER +} + +mplsLdpHelloAdjacencyIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for this specific adjacency." + ::= { mplsLdpHelloAdjacencyEntry 1 } + +mplsLdpHelloAdjacencyHoldTimeRem OBJECT-TYPE + SYNTAX TimeInterval + UNITS "seconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If the value of this object is 65535, + this means that the hold time is infinite + (i.e., wait forever). + + Otherwise, the time remaining for + this Hello Adjacency to receive its + next Hello Message. + + This interval will change when the 'next' + Hello Message which corresponds to this + Hello Adjacency is received unless it + is infinite." + ::= { mplsLdpHelloAdjacencyEntry 2 } + +mplsLdpHelloAdjacencyHoldTime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Hello hold time which is negotiated between + the Entity and the Peer. The entity associated + with this Hello Adjacency issues a proposed + Hello Hold Time value in the + mplsLdpEntityHelloHoldTimer object. The peer + also proposes a value and this object represents + the negotiated value. + + A value of 0 means the default, + which is 15 seconds for Link Hellos + and 45 seconds for Targeted Hellos. + A value of 65535 indicates an + infinite hold time." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.2 Hello Message" + ::= { mplsLdpHelloAdjacencyEntry 3 } + +mplsLdpHelloAdjacencyType OBJECT-TYPE + SYNTAX INTEGER { + link(1), + targeted(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This adjacency is the result of a 'link' + hello if the value of this object is link(1). + + + + Otherwise, it is a result of a 'targeted' + hello, targeted(2)." + ::= { mplsLdpHelloAdjacencyEntry 4 } + +-- +-- Session Label (LSP) Mapping to LSR MIB's +-- In Segment LIB Information. +-- +-- +-- NOTE: the next 2 tables map to the +-- MPLS-LSR-STD-MIB's MplsInSegmentTable +-- and MplsOutSegmentTable. The +-- cross-connect (XC) information is not +-- represented here as it can be gleaned +-- from the MPLS-LSR-STD-MIB. +-- + +mplsInSegmentLdpLspTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInSegmentLdpLspEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of LDP LSP's which + map to the mplsInSegmentTable in the + MPLS-LSR-STD-MIB module." + ::= { mplsLdpSessionObjects 6 } + +mplsInSegmentLdpLspEntry OBJECT-TYPE + SYNTAX MplsInSegmentLdpLspEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information + on a single LDP LSP which is represented by + a session's index triple (mplsLdpEntityLdpId, + mplsLdpEntityIndex, mplsLdpPeerLdpId) AND the + index for the mplsInSegmentTable + (mplsInSegmentLdpLspLabelIndex) from the + MPLS-LSR-STD-MIB. + + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsInSegmentLdpLspIndex + } + ::= { mplsInSegmentLdpLspTable 1 } + + + + +MplsInSegmentLdpLspEntry ::= SEQUENCE { + mplsInSegmentLdpLspIndex MplsIndexType, + mplsInSegmentLdpLspLabelType MplsLdpLabelType, + mplsInSegmentLdpLspType MplsLspType +} + +mplsInSegmentLdpLspIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This contains the same value as the + mplsInSegmentIndex in the + MPLS-LSR-STD-MIB's mplsInSegmentTable." + ::= { mplsInSegmentLdpLspEntry 1 } + +mplsInSegmentLdpLspLabelType OBJECT-TYPE + SYNTAX MplsLdpLabelType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Layer 2 Label Type." + ::= { mplsInSegmentLdpLspEntry 2 } + +mplsInSegmentLdpLspType OBJECT-TYPE + SYNTAX MplsLspType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of LSP connection." + ::= { mplsInSegmentLdpLspEntry 3 } + +-- +-- Session Label (LSP) Mapping to LSR MIB's +-- Out Segment LIB Information. +-- + +mplsOutSegmentLdpLspTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsOutSegmentLdpLspEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of LDP LSP's which + map to the mplsOutSegmentTable in the + MPLS-LSR-STD-MIB." + ::= { mplsLdpSessionObjects 7 } + +mplsOutSegmentLdpLspEntry OBJECT-TYPE + + + + SYNTAX MplsOutSegmentLdpLspEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information + on a single LDP LSP which is represented by + a session's index triple (mplsLdpEntityLdpId, + mplsLdpEntityIndex, mplsLdpPeerLdpId) AND the + index (mplsOutSegmentLdpLspIndex) + for the mplsOutSegmentTable. + + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsOutSegmentLdpLspIndex + } + ::= { mplsOutSegmentLdpLspTable 1 } + +MplsOutSegmentLdpLspEntry ::= SEQUENCE { + mplsOutSegmentLdpLspIndex MplsIndexType, + mplsOutSegmentLdpLspLabelType MplsLdpLabelType, + mplsOutSegmentLdpLspType MplsLspType +} + +mplsOutSegmentLdpLspIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This contains the same value as the + mplsOutSegmentIndex in the + MPLS-LSR-STD-MIB's mplsOutSegmentTable." + ::= { mplsOutSegmentLdpLspEntry 1 } + +mplsOutSegmentLdpLspLabelType OBJECT-TYPE + SYNTAX MplsLdpLabelType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Layer 2 Label Type." + ::= { mplsOutSegmentLdpLspEntry 2 } + +mplsOutSegmentLdpLspType OBJECT-TYPE + SYNTAX MplsLspType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The type of LSP connection." + ::= { mplsOutSegmentLdpLspEntry 3 } + +-- +-- Mpls FEC Table +-- + +mplsFecObjects OBJECT IDENTIFIER ::= + { mplsLdpSessionObjects 8 } + +mplsFecLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most + recent addition/deletion of an entry + to/from the mplsLdpFectTable or + the most recent change in values to any objects + in the mplsLdpFecTable. + + If no such changes have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsFecObjects 1 } + +mplsFecIndexNext OBJECT-TYPE + SYNTAX IndexIntegerNextFree + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to + be used for mplsFecIndex when creating + entries in the mplsFecTable. The value + 0 indicates that no unassigned entries are + available." + ::= { mplsFecObjects 2 } + +mplsFecTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table represents the FEC + (Forwarding Equivalence Class) + Information associated with an LSP." + ::= { mplsFecObjects 3 } + + + + +mplsFecEntry OBJECT-TYPE + SYNTAX MplsFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row represents a single FEC Element." + INDEX { mplsFecIndex } + ::= { mplsFecTable 1 } + +MplsFecEntry ::= SEQUENCE { + mplsFecIndex IndexInteger, + mplsFecType INTEGER, + mplsFecAddrType InetAddressType, + mplsFecAddr InetAddress, + mplsFecAddrPrefixLength InetAddressPrefixLength, + mplsFecStorageType StorageType, + mplsFecRowStatus RowStatus +} + +mplsFecIndex OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index which uniquely identifies this entry." + ::= { mplsFecEntry 1 } + +mplsFecType OBJECT-TYPE + SYNTAX INTEGER { + prefix(1), + hostAddress(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the FEC. If the value of this object + is 'prefix(1)' then the FEC type described by this + row is an address prefix. + + If the value of this object is 'hostAddress(2)' then + the FEC type described by this row is a host address." + REFERENCE + "RFC3036, Section 3.4.1. FEC TLV." + ::= { mplsFecEntry 2 } + +mplsFecAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The value of this object is the type of the + Internet address. The value of this object, + decides how the value of the mplsFecAddr object + is interpreted." + REFERENCE + "RFC3036, Section 3.4.1. FEC TLV." + ::= { mplsFecEntry 4 } + +mplsFecAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is interpreted based + on the value of the 'mplsFecAddrType' object. + + This address is then further interpretted as + an being used with the address prefix, + or as the host address. This further interpretation + is indicated by the 'mplsFecType' object. + In other words, the FEC element is populated + according to the Prefix FEC Element value encoding, or + the Host Address FEC Element encoding." + REFERENCE + "RFC3036, Section 3.4.1 FEC TLV." + ::= { mplsFecEntry 5 } + +mplsFecAddrPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the value of the 'mplsFecType' is 'hostAddress(2)' + then this object is undefined. + + If the value of 'mplsFecType' is 'prefix(1)' + then the value of this object is the length in + bits of the address prefix represented by + 'mplsFecAddr', or zero. If the value of this + object is zero, this indicates that the + prefix matches all addresses. In this case the + address prefix MUST also be zero (i.e., 'mplsFecAddr' + should have the value of zero.)" + REFERENCE + "RFC3036, Section 3.4.1. FEC TLV." + DEFVAL { 0 } + + + + ::= { mplsFecEntry 3 } + +mplsFecStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsFecEntry 6 } + +mplsFecRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. If the value of this + object is 'active(1)', then none of the writable objects + of this entry can be modified, except to set this object + to 'destroy(6)'. + + NOTE: if this row is being referenced by any entry in + the mplsLdpLspFecTable, then a request to destroy + this row, will result in an inconsistentValue error." + ::= { mplsFecEntry 7 } + +-- +-- LDP LSP FEC Table +-- + +mplsLdpLspFecLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most + recent addition/deletion of an entry + to/from the mplsLdpLspFecTable or + the most recent change in values to any objects in the + mplsLdpLspFecTable. + + If no such changes have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsLdpSessionObjects 9 } + + + +mplsLdpLspFecTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpLspFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table which shows the relationship between + LDP LSPs and FECs. Each row represents + a single LDP LSP to FEC association." + ::= { mplsLdpSessionObjects 10 } + +mplsLdpLspFecEntry OBJECT-TYPE + SYNTAX MplsLdpLspFecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry represents a LDP LSP + to FEC association." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpLspFecSegment, + mplsLdpLspFecSegmentIndex, + mplsLdpLspFecIndex + } + ::= { mplsLdpLspFecTable 1 } + +MplsLdpLspFecEntry ::= SEQUENCE { + mplsLdpLspFecSegment INTEGER, + mplsLdpLspFecSegmentIndex MplsIndexType, + mplsLdpLspFecIndex IndexInteger, + mplsLdpLspFecStorageType StorageType, + mplsLdpLspFecRowStatus RowStatus +} + +mplsLdpLspFecSegment OBJECT-TYPE + SYNTAX INTEGER { + inSegment(1), + outSegment(2) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the value is inSegment(1), then this + indicates that the following index, + mplsLdpLspFecSegmentIndex, contains the same + value as the mplsInSegmentLdpLspIndex. + + Otherwise, if the value of this object is + + + + outSegment(2), then this + indicates that following index, + mplsLdpLspFecSegmentIndex, contains the same + value as the mplsOutSegmentLdpLspIndex." + ::= { mplsLdpLspFecEntry 1 } + +mplsLdpLspFecSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index is interpretted by using the value + of the mplsLdpLspFecSegment. + + If the mplsLdpLspFecSegment is inSegment(1), + then this index has the same value as + mplsInSegmentLdpLspIndex. + + If the mplsLdpLspFecSegment is outSegment(2), + then this index has the same value as + mplsOutSegmentLdpLspIndex." + ::= { mplsLdpLspFecEntry 2 } + +mplsLdpLspFecIndex OBJECT-TYPE + SYNTAX IndexInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index identifies the FEC entry in the + mplsFecTable associated with this session. + In other words, the value of this index + is the same as the value of the mplsFecIndex + that denotes the FEC associated with this + Session." + ::= { mplsLdpLspFecEntry 3 } + +mplsLdpLspFecStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent(4)' + need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { mplsLdpLspFecEntry 4 } + + + + +mplsLdpLspFecRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. If the + value of this object is 'active(1)', then + none of the writable objects of this entry + can be modified. + + The Agent should delete this row when + the session ceases to exist. If an + operator wants to associate the session with + a different FEC, the recommended + procedure is (as described in detail in the section + entitled, 'Changing Values After Session + Establishment', and again described in the + DESCRIPTION clause of the + mplsLdpEntityAdminStatus object) + is to set the mplsLdpEntityAdminStatus to + down, thereby explicitly causing a session + to be torn down. This will also + cause this entry to be deleted. + + Then, set the mplsLdpEntityAdminStatus + to enable which enables a new session to be initiated. + Once the session is initiated, an entry may be + added to this table to associate the new session + with a FEC." + ::= { mplsLdpLspFecEntry 5 } + +-- +-- Address Message/Address Withdraw Message Information +-- +-- This information is associated with a specific Session +-- because Label Address Messages are sent after session +-- initialization has taken place. +-- + +mplsLdpSessionPeerAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLdpSessionPeerAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table 'extends' the mplsLdpSessionTable. + This table is used to store Label Address Information + from Label Address Messages received by this LSR from + Peers. This table is read-only and should be updated + + + + when Label Withdraw Address Messages are received, i.e., + Rows should be deleted as appropriate. + + NOTE: since more than one address may be contained + in a Label Address Message, this table 'sparse augments', + the mplsLdpSessionTable's information." + ::= { mplsLdpSessionObjects 11 } + +mplsLdpSessionPeerAddrEntry OBJECT-TYPE + SYNTAX MplsLdpSessionPeerAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents information on + a session's single next hop address which was + advertised in an Address Message from the LDP peer. + The information contained in a row is read-only." + INDEX { mplsLdpEntityLdpId, + mplsLdpEntityIndex, + mplsLdpPeerLdpId, + mplsLdpSessionPeerAddrIndex + } + ::= { mplsLdpSessionPeerAddrTable 1 } + +MplsLdpSessionPeerAddrEntry ::= SEQUENCE { + mplsLdpSessionPeerAddrIndex Unsigned32, + mplsLdpSessionPeerNextHopAddrType InetAddressType, + mplsLdpSessionPeerNextHopAddr InetAddress +} + +mplsLdpSessionPeerAddrIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index which uniquely identifies this entry within + a given session." + ::= { mplsLdpSessionPeerAddrEntry 1 } + +mplsLdpSessionPeerNextHopAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The internetwork layer address type of this Next Hop + Address as specified in the Label Address Message + associated with this Session. The value of this + object indicates how to interpret the value of + + + + mplsLdpSessionPeerNextHopAddr." + ::= { mplsLdpSessionPeerAddrEntry 2 } + +mplsLdpSessionPeerNextHopAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The next hop address. The type of this address + is specified by the value of the + mplsLdpSessionPeerNextHopAddrType." + REFERENCE + "RFC3036, Section 2.7. LDP Identifiers + and Next Hop Addresses" + ::= { mplsLdpSessionPeerAddrEntry 3 } + +--- +--- Notifications +--- + +mplsLdpInitSessionThresholdExceeded NOTIFICATION-TYPE + OBJECTS { + mplsLdpEntityInitSessionThreshold + } + STATUS current + DESCRIPTION + "This notification is generated when the value of + the 'mplsLdpEntityInitSessionThreshold' object + is not zero, and the number of Session + Initialization messages exceeds the value + of the 'mplsLdpEntityInitSessionThreshold' object." + ::= { mplsLdpNotifications 1 } + +mplsLdpPathVectorLimitMismatch NOTIFICATION-TYPE + OBJECTS { + mplsLdpEntityPathVectorLimit, + mplsLdpPeerPathVectorLimit + } + STATUS current + DESCRIPTION + "This notification is sent when the + 'mplsLdpEntityPathVectorLimit' does NOT match + the value of the 'mplsLdpPeerPathVectorLimit' for + a specific Entity." + REFERENCE + "RFC3036, LDP Specification, Section 3.5.3." + ::= { mplsLdpNotifications 2 } + + + + +mplsLdpSessionUp NOTIFICATION-TYPE + OBJECTS { + mplsLdpSessionState, + mplsLdpSessionDiscontinuityTime, + mplsLdpSessionStatsUnknownMesTypeErrors, + mplsLdpSessionStatsUnknownTlvErrors + } + STATUS current + DESCRIPTION + "If this notification is sent when the + value of 'mplsLdpSessionState' enters + the 'operational(5)' state." + ::= { mplsLdpNotifications 3 } + +mplsLdpSessionDown NOTIFICATION-TYPE + OBJECTS { + mplsLdpSessionState, + mplsLdpSessionDiscontinuityTime, + mplsLdpSessionStatsUnknownMesTypeErrors, + mplsLdpSessionStatsUnknownTlvErrors + + } + STATUS current + DESCRIPTION + "This notification is sent when the + value of 'mplsLdpSessionState' leaves + the 'operational(5)' state." + ::= { mplsLdpNotifications 4 } + +--**************************************************************** +-- Module Conformance Statement +--**************************************************************** + +mplsLdpGroups + OBJECT IDENTIFIER ::= { mplsLdpConformance 1 } + +mplsLdpCompliances + OBJECT IDENTIFIER ::= { mplsLdpConformance 2 } + +-- +-- Full Compliance +-- + +mplsLdpModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support + for read-create and read-write. In other + + + + words, both monitoring and configuration + are available when using this MODULE-COMPLIANCE." + + MODULE -- this module + MANDATORY-GROUPS { mplsLdpGeneralGroup, + mplsLdpNotificationsGroup + } + GROUP mplsLdpLspGroup + DESCRIPTION + "This group must be supported if the LSR MIB is + implemented, specifically the mplsInSegmentTable, + the mplsOutSegmentTable or the mplsXCTable." + + OBJECT mplsLdpEntityTargetPeerAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsLdpEntityTargetPeerAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT mplsLdpEntityRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + OBJECT mplsFecAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsFecAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT mplsFecRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + + + + "Support for createAndWait and notInService is not + required." + + OBJECT mplsLdpLspFecRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + OBJECT mplsLdpSessionPeerNextHopAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsLdpSessionPeerNextHopAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 + and globally unique IPv6 addresses." + + ::= { mplsLdpCompliances 1 } + +-- +-- Read-Only Compliance +-- + +mplsLdpModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The Module is implemented with support + for read-only. In other words, only monitoring + is available by implementing this MODULE-COMPLIANCE." + + MODULE -- this module + MANDATORY-GROUPS { mplsLdpGeneralGroup, + mplsLdpNotificationsGroup + } + + GROUP mplsLdpLspGroup + DESCRIPTION + "This group must be supported if the LSR MIB is + implemented, specifically the mplsInSegmentTable, + the mplsOutSegmentTable or the mplsXCTable." + + OBJECT mplsLdpEntityProtocolVersion + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityTcpPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityUdpDscPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityMaxPduLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityKeepAliveHoldTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityHelloHoldTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityInitSessionThreshold + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityLabelDistMethod + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityLabelRetentionMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT mplsLdpEntityPathVectorLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityHopCountLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityTransportAddrKind + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityTargetPeer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityTargetPeerAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsLdpEntityTargetPeerAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT mplsLdpEntityLabelType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsLdpEntityRowStatus + SYNTAX RowStatus { active(1) } + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsFecType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFecAddrPrefixLength + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFecAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + OBJECT mplsFecAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT mplsFecStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsFecRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsLdpLspFecStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + OBJECT mplsLdpLspFecRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the + only status that needs to be supported." + + OBJECT mplsLdpSessionPeerNextHopAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + 'unknown(0)', IPv4 and globally unique IPv6 addresses." + + + OBJECT mplsLdpSessionPeerNextHopAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 + and globally unique IPv6 addresses." + + ::= { mplsLdpCompliances 2 } + +-- units of conformance + +mplsLdpGeneralGroup OBJECT-GROUP + OBJECTS { + mplsLdpLsrId, + mplsLdpLsrLoopDetectionCapable, + mplsLdpEntityLastChange, + mplsLdpEntityIndexNext, + mplsLdpEntityProtocolVersion, + mplsLdpEntityAdminStatus, + mplsLdpEntityOperStatus, + mplsLdpEntityTcpPort, + mplsLdpEntityUdpDscPort, + mplsLdpEntityMaxPduLength, + mplsLdpEntityKeepAliveHoldTimer, + mplsLdpEntityHelloHoldTimer, + mplsLdpEntityInitSessionThreshold, + mplsLdpEntityLabelDistMethod, + mplsLdpEntityLabelRetentionMode, + mplsLdpEntityPathVectorLimit, + mplsLdpEntityHopCountLimit, + mplsLdpEntityTransportAddrKind, + mplsLdpEntityTargetPeer, + mplsLdpEntityTargetPeerAddrType, + mplsLdpEntityTargetPeerAddr, + mplsLdpEntityLabelType, + + + + mplsLdpEntityDiscontinuityTime, + mplsLdpEntityStorageType, + mplsLdpEntityRowStatus, + mplsLdpEntityStatsSessionAttempts, + mplsLdpEntityStatsSessionRejectedNoHelloErrors, + mplsLdpEntityStatsSessionRejectedAdErrors, + mplsLdpEntityStatsSessionRejectedMaxPduErrors, + mplsLdpEntityStatsSessionRejectedLRErrors, + mplsLdpEntityStatsBadLdpIdentifierErrors, + mplsLdpEntityStatsBadPduLengthErrors, + mplsLdpEntityStatsBadMessageLengthErrors, + mplsLdpEntityStatsBadTlvLengthErrors, + mplsLdpEntityStatsMalformedTlvValueErrors, + mplsLdpEntityStatsKeepAliveTimerExpErrors, + mplsLdpEntityStatsShutdownReceivedNotifications, + mplsLdpEntityStatsShutdownSentNotifications, + mplsLdpPeerLastChange, + mplsLdpPeerLabelDistMethod, + mplsLdpPeerPathVectorLimit, + mplsLdpPeerTransportAddrType, + mplsLdpPeerTransportAddr, + mplsLdpHelloAdjacencyHoldTimeRem, + mplsLdpHelloAdjacencyHoldTime, + mplsLdpHelloAdjacencyType, + mplsLdpSessionStateLastChange, + mplsLdpSessionState, + mplsLdpSessionRole, + mplsLdpSessionProtocolVersion, + mplsLdpSessionKeepAliveHoldTimeRem, + mplsLdpSessionKeepAliveTime, + mplsLdpSessionMaxPduLength, + mplsLdpSessionDiscontinuityTime, + mplsLdpSessionStatsUnknownMesTypeErrors, + mplsLdpSessionStatsUnknownTlvErrors, + mplsLdpSessionPeerNextHopAddrType, + mplsLdpSessionPeerNextHopAddr, + mplsFecLastChange, + mplsFecIndexNext, + mplsFecType, + mplsFecAddrType, + mplsFecAddr, + mplsFecAddrPrefixLength, + mplsFecStorageType, + mplsFecRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply to all MPLS LDP implementations." + + + + ::= { mplsLdpGroups 1 } + +mplsLdpLspGroup OBJECT-GROUP + OBJECTS { + mplsInSegmentLdpLspLabelType, + mplsInSegmentLdpLspType, + mplsOutSegmentLdpLspLabelType, + mplsOutSegmentLdpLspType, + mplsLdpLspFecLastChange, + mplsLdpLspFecStorageType, + mplsLdpLspFecRowStatus + } + STATUS current + DESCRIPTION + "These objects are for LDP implementations + which interface to the Label Information Base (LIB) + in the MPLS-LSR-STD-MIB. The LIB is + represented in the mplsInSegmentTable, + mplsOutSegmentTable and mplsXCTable." + ::= { mplsLdpGroups 2 } + +mplsLdpNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { mplsLdpInitSessionThresholdExceeded, + mplsLdpPathVectorLimitMismatch, + mplsLdpSessionUp, + mplsLdpSessionDown + } + STATUS current + DESCRIPTION + "The notification for an MPLS LDP implementation." + ::= { mplsLdpGroups 3 } + +END diff --git a/mibs/ietf/MPLS-LSR-STD-MIB b/mibs/ietf/MPLS-LSR-STD-MIB new file mode 100644 index 0000000..fa348bc --- /dev/null +++ b/mibs/ietf/MPLS-LSR-STD-MIB @@ -0,0 +1,2232 @@ +MPLS-LSR-STD-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Counter32, Unsigned32, Counter64, Gauge32, + zeroDotZero + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TruthValue, RowStatus, StorageType, RowPointer, + TimeStamp, TEXTUAL-CONVENTION + FROM SNMPv2-TC -- [RFC2579] + InterfaceIndexOrZero, ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + FROM IF-MIB -- [RFC2863] + mplsStdMIB, MplsLSPID, MplsLabel, MplsBitRate, + MplsOwner + FROM MPLS-TC-STD-MIB -- [RFC3811] + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB -- [IANAFamily] + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB -- [RFC3291] + ; + +mplsLsrStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Cheenu Srinivasan + Bloomberg L.P. + Email: cheenu@bloomberg.net + + Arun Viswanathan + Force10 Networks, Inc. + Email: arunv@force10networks.com + + Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Comments about this document should be emailed + directly to the MPLS working group mailing list at + mpls@uu.net." + + DESCRIPTION + "This MIB module contains managed object definitions for + the Multiprotocol Label Switching (MPLS) Router as + + + + defined in: Rosen, E., Viswanathan, A., and R. + Callon, Multiprotocol Label Switching Architecture, + RFC 3031, January 2001. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3812. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + -- Revision history. + REVISION + "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial revision, published as part of RFC 3813." + + ::= { mplsStdMIB 2 } + +-- TEXTUAL-CONVENTIONs + +MplsIndexType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This is an octet string that can be used as a table + index in cases where a large addressable space is + required such as on an LSR where many applications + may be provisioning labels. + + Note that the string containing the single octet with + the value 0x00 is a reserved value used to represent + special cases. When this TEXTUAL-CONVENTION is used + as the SYNTAX of an object, the DESCRIPTION clause + MUST specify if this special value is valid and if so + what the special meaning is. + + In systems that provide write access to the MPLS-LSR-STD + MIB, mplsIndexType SHOULD be used as a simple multi-digit + integer encoded as an octet string. + No further overloading of the meaning of an index SHOULD + be made. + + In systems that do not offer write access to the MPLS-LSR-STD + MIB, the mplsIndexType may contain implicit formatting that is + specific to the implementation to convey additional + information such as interface index, physical card or + device, or application id. The interpretation of this + additional formatting is implementation dependent and + not covered in this document. Such formatting MUST + + + + NOT impact the basic functionality of read-only access + to the MPLS-LSR-STD MIB by management applications that are + not aware of the formatting rules." + SYNTAX OCTET STRING (SIZE(1..24)) + +MplsIndexNextType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "When a MIB module is used for configuration, an object with + this SYNTAX always contains a legal value (a non-zero-length + string) for an index that is not currently used in the relevant + table. The Command Generator (Network Management Application) + reads this variable and uses the (non-zero-length string) + value read when creating a new row with an SNMP SET. + + When the SET is performed, the Command Responder (agent) must + determine whether the value is indeed still unused; Two Network + Management Applications may attempt to create a row + (configuration entry) simultaneously and use the same value. If + it is currently unused, the SET succeeds and the Command + Responder (agent) changes the value of this object, according + to an implementation-specific algorithm. If the value is in + use, however, the SET fails. The Network Management + Application must then re-read this variable to obtain a new + usable value. + + Note that the string containing the single octet with + the value 0x00 is a reserved value used to represent + the special case where no additional indexes can be + provisioned, or in systems that do not offer + write access, objects defined using this TEXTUAL-CONVENTION + MUST return the string containing the single + octet with the value 0x00." + SYNTAX OCTET STRING (SIZE(1..24)) + +-- Top level components of this MIB module. + +-- Notifications +mplsLsrNotifications OBJECT IDENTIFIER ::= { mplsLsrStdMIB 0 } + +-- Tables, Scalars +mplsLsrObjects OBJECT IDENTIFIER ::= { mplsLsrStdMIB 1 } + +-- Conformance +mplsLsrConformance OBJECT IDENTIFIER ::= { mplsLsrStdMIB 2 } + +-- MPLS Interface Table. +mplsInterfaceTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF MplsInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies per-interface MPLS capability + and associated information." + ::= { mplsLsrObjects 1 } + +mplsInterfaceEntry OBJECT-TYPE + SYNTAX MplsInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in this table is created + automatically by an LSR for every interface capable + of supporting MPLS and which is configured to do so. + A conceptual row in this table will exist if and only if + a corresponding entry in ifTable exists with ifType = + mpls(166). If this associated entry in ifTable is + operationally disabled (thus removing MPLS + capabilities on that interface), the corresponding + entry in this table MUST be deleted shortly thereafter. + An conceptual row with index 0 is created if the LSR + supports per-platform labels. This conceptual row + represents the per-platform label space and contains + parameters that apply to all interfaces that participate + in the per-platform label space. Other conceptual rows + in this table represent MPLS interfaces that may + participate in either the per-platform or per- + interface label spaces, or both. Implementations + that either only support per-platform labels, + or have only them configured, may choose to return + just the mplsInterfaceEntry of 0 and not return + the other rows. This will greatly reduce the number + of objects returned. Further information about label + space participation of an interface is provided in + the DESCRIPTION clause of + mplsInterfaceLabelParticipationType." + INDEX { mplsInterfaceIndex } + ::= { mplsInterfaceTable 1 } + +MplsInterfaceEntry ::= SEQUENCE { + mplsInterfaceIndex InterfaceIndexOrZero, + mplsInterfaceLabelMinIn MplsLabel, + mplsInterfaceLabelMaxIn MplsLabel, + mplsInterfaceLabelMinOut MplsLabel, + mplsInterfaceLabelMaxOut MplsLabel, + mplsInterfaceTotalBandwidth MplsBitRate, + + + + mplsInterfaceAvailableBandwidth MplsBitRate, + mplsInterfaceLabelParticipationType BITS +} + +mplsInterfaceIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a unique index for an entry in the + MplsInterfaceTable. A non-zero index for an + entry indicates the ifIndex for the corresponding + interface entry of the MPLS-layer in the ifTable. + The entry with index 0 represents the per-platform + label space and contains parameters that apply to all + interfaces that participate in the per-platform label + space. Other entries defined in this table represent + additional MPLS interfaces that may participate in either + the per-platform or per-interface label spaces, or both." + REFERENCE + "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., + and F. Kastenholtz, June 2000" + ::= { mplsInterfaceEntry 1 } + +mplsInterfaceLabelMinIn OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the minimum value of an MPLS label that this + LSR is willing to receive on this interface." + ::= { mplsInterfaceEntry 2 } + +mplsInterfaceLabelMaxIn OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the maximum value of an MPLS label that this + LSR is willing to receive on this interface." + ::= { mplsInterfaceEntry 3 } + +mplsInterfaceLabelMinOut OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the minimum value of an MPLS label that this + + + + LSR is willing to send on this interface." + ::= { mplsInterfaceEntry 4 } + +mplsInterfaceLabelMaxOut OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the maximum value of an MPLS label that this + LSR is willing to send on this interface." + ::= { mplsInterfaceEntry 5 } + +mplsInterfaceTotalBandwidth OBJECT-TYPE + SYNTAX MplsBitRate + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the total amount of usable + bandwidth on this interface and is specified in + kilobits per second (Kbps). This variable is not + applicable when applied to the interface with index + 0. When this value cannot be measured, this value + should contain the nominal bandwidth." +::= { mplsInterfaceEntry 6 } + +mplsInterfaceAvailableBandwidth OBJECT-TYPE + SYNTAX MplsBitRate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the total amount of available + bandwidth available on this interface and is + specified in kilobits per second (Kbps). This value + is calculated as the difference between the amount + of bandwidth currently in use and that specified in + mplsInterfaceTotalBandwidth. This variable is not + applicable when applied to the interface with index + 0. When this value cannot be measured, this value + should contain the nominal bandwidth." +::= { mplsInterfaceEntry 7 } + +mplsInterfaceLabelParticipationType OBJECT-TYPE + SYNTAX BITS { + perPlatform (0), + perInterface (1) + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If the value of the mplsInterfaceIndex for this + entry is zero, then this entry corresponds to the + per-platform label space for all interfaces configured + to use that label space. In this case the perPlatform(0) + bit MUST be set; the perInterface(1) bit is meaningless + and MUST be ignored. + + The remainder of this description applies to entries + with a non-zero value of mplsInterfaceIndex. + + If the perInterface(1) bit is set then the value of + mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn, + mplsInterfaceLabelMinOut, and + mplsInterfaceLabelMaxOut for this entry reflect the + label ranges for this interface. + + If only the perPlatform(0) bit is set, then the value of + mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn, + mplsInterfaceLabelMinOut, and + mplsInterfaceLabelMaxOut for this entry MUST be + identical to the instance of these objects with + index 0. These objects may only vary from the entry + with index 0 if both the perPlatform(0) and perInterface(1) + bits are set. + + In all cases, at a minimum one of the perPlatform(0) or + perInterface(1) bits MUST be set to indicate that + at least one label space is in use by this interface. In + all cases, agents MUST ensure that label ranges are + specified consistently and MUST return an + inconsistentValue error when they do not." + REFERENCE + "Rosen, E., Viswanathan, A., and R. Callon, + Multiprotocol Label Switching Architecture, RFC + 3031, January 2001." +::= { mplsInterfaceEntry 8 } + +-- End of mplsInterfaceTable + + +-- MPLS Interface Performance Table. + +mplsInterfacePerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInterfacePerfEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table provides MPLS performance information on + a per-interface basis." + ::= { mplsLsrObjects 2 } + +mplsInterfacePerfEntry OBJECT-TYPE + SYNTAX MplsInterfacePerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by the LSR for + every interface capable of supporting MPLS. Its is + an extension to the mplsInterfaceEntry table. + Note that the discontinuity behavior of entries in + this table MUST be based on the corresponding + ifEntry's ifDiscontinuityTime." + AUGMENTS { mplsInterfaceEntry } + ::= { mplsInterfacePerfTable 1 } + +MplsInterfacePerfEntry ::= SEQUENCE { + -- incoming direction + mplsInterfacePerfInLabelsInUse Gauge32, + mplsInterfacePerfInLabelLookupFailures Counter32, + + -- outgoing direction + mplsInterfacePerfOutLabelsInUse Gauge32, + mplsInterfacePerfOutFragmentedPkts Counter32 + } + +mplsInterfacePerfInLabelsInUse OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of labels that are in + use at this point in time on this interface in the + incoming direction. If the interface participates in + only the per-platform label space, then the value of + the instance of this object MUST be identical to + the value of the instance with index 0. If the + interface participates in the per-interface label + space, then the instance of this object MUST + represent the number of per-interface labels that + are in use on this interface." + ::= { mplsInterfacePerfEntry 1 } + +mplsInterfacePerfInLabelLookupFailures OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of labeled packets + that have been received on this interface and which + were discarded because there was no matching cross- + connect entry. This object MUST count on a per- + interface basis regardless of which label space the + interface participates in." + ::= { mplsInterfacePerfEntry 2 } + +mplsInterfacePerfOutLabelsInUse OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of top-most labels in + the outgoing label stacks that are in use at this + point in time on this interface. This object MUST + count on a per-interface basis regardless of which + label space the interface participates in." + ::= { mplsInterfacePerfEntry 3 } + +mplsInterfacePerfOutFragmentedPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of outgoing MPLS + packets that required fragmentation before + transmission on this interface. This object MUST + count on a per-interface basis regardless of which + label space the interface participates in." +::= { mplsInterfacePerfEntry 4 } + +-- mplsInterfacePerf Table end. + +mplsInSegmentIndexNext OBJECT-TYPE + SYNTAX MplsIndexNextType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available value to + be used for mplsInSegmentIndex when creating entries + in the mplsInSegmentTable. The special value of a + string containing the single octet 0x00 indicates + that no new entries can be created in this table. + Agents not allowing managers to create entries + + + + in this table MUST set this object to this special + value." + ::= { mplsLsrObjects 3 } + +-- in-segment table. +mplsInSegmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a description of the incoming MPLS + segments (labels) to an LSR and their associated parameters. + The index for this table is mplsInSegmentIndex. + The index structure of this table is specifically designed + to handle many different MPLS implementations that manage + their labels both in a distributed and centralized manner. + The table is also designed to handle existing MPLS labels + as defined in RFC3031 as well as longer ones that may + be necessary in the future. + + In cases where the label cannot fit into the + mplsInSegmentLabel object, the mplsInSegmentLabelPtr + will indicate this by being set to the first accessible + column in the appropriate extension table's row. + In this case an additional table MUST + be provided and MUST be indexed by at least the indexes + used by this table. In all other cases when the label is + represented within the mplsInSegmentLabel object, the + mplsInSegmentLabelPtr MUST be set to 0.0. Due to the + fact that MPLS labels may not exceed 24 bits, the + mplsInSegmentLabelPtr object is only a provision for + future-proofing the MIB module. Thus, the definition + of any extension tables is beyond the scope of this + MIB module." + ::= { mplsLsrObjects 4 } + +mplsInSegmentEntry OBJECT-TYPE + SYNTAX MplsInSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents one incoming + segment as is represented in an LSR's LFIB. + An entry can be created by a network + administrator or an SNMP agent, or an MPLS signaling + protocol. The creator of the entry is denoted by + mplsInSegmentOwner. + + + + + The value of mplsInSegmentRowStatus cannot be active(1) + unless the ifTable entry corresponding to + mplsInSegmentInterface exists. An entry in this table + must match any incoming packets, and indicates an + instance of mplsXCEntry based on which forwarding + and/or switching actions are taken." + INDEX { mplsInSegmentIndex } + ::= { mplsInSegmentTable 1 } + +MplsInSegmentEntry ::= SEQUENCE { + mplsInSegmentIndex MplsIndexType, + mplsInSegmentInterface InterfaceIndexOrZero, + mplsInSegmentLabel MplsLabel, + mplsInSegmentLabelPtr RowPointer, + mplsInSegmentNPop Integer32, + mplsInSegmentAddrFamily AddressFamilyNumbers, + mplsInSegmentXCIndex MplsIndexType, + mplsInSegmentOwner MplsOwner , + mplsInSegmentTrafficParamPtr RowPointer, + mplsInSegmentRowStatus RowStatus, + mplsInSegmentStorageType StorageType +} + +mplsInSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this in-segment. The + string containing the single octet 0x00 + MUST not be used as an index." + ::= { mplsInSegmentEntry 1 } + +mplsInSegmentInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the + interface index for the incoming MPLS interface. A + value of zero represents all interfaces participating in + the per-platform label space. This may only be used + in cases where the incoming interface and label + are associated with the same mplsXCEntry. Specifically, + given a label and any incoming interface pair from the + per-platform label space, the outgoing label/interface + mapping remains the same. If this is not the case, + then individual entries MUST exist that + + + + can then be mapped to unique mplsXCEntries." + ::= { mplsInSegmentEntry 2 } + +mplsInSegmentLabel OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the corresponding instance of mplsInSegmentLabelPtr is + zeroDotZero then this object MUST contain the incoming label + associated with this in-segment. If not this object SHOULD + be zero and MUST be ignored." + ::= { mplsInSegmentEntry 3 } + +mplsInSegmentLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the label for this segment cannot be represented + fully within the mplsInSegmentLabel object, + this object MUST point to the first accessible + column of a conceptual row in an external table containing + the label. In this case, the mplsInSegmentTopLabel + object SHOULD be set to 0 and ignored. This object MUST + be set to zeroDotZero otherwise." + DEFVAL { zeroDotZero } + ::= { mplsInSegmentEntry 4 } + +mplsInSegmentNPop OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of labels to pop from the incoming + packet. Normally only the top label is popped from + the packet and used for all switching decisions for + that packet. This is indicated by setting this + object to the default value of 1. If an LSR supports + popping of more than one label, this object MUST + be set to that number. This object cannot be modified + if mplsInSegmentRowStatus is active(1)." + DEFVAL { 1 } + ::= { mplsInSegmentEntry 5 } + +mplsInSegmentAddrFamily OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The IANA address family [IANAFamily] of packets + received on this segment, which is used at an egress + LSR to deliver them to the appropriate layer 3 entity. + A value of other(0) indicates that the family type is + either unknown or undefined; this SHOULD NOT be used + at an egress LSR. This object cannot be + modified if mplsInSegmentRowStatus is active(1)." + REFERENCE + "Internet Assigned Numbers Authority (IANA), ADDRESS + FAMILY NUMBERS, (http://www.iana.org/assignments/ + address-family-numbers), for MIB see: + http://www.iana.org/assignments/ + ianaaddressfamilynumbers-mib +" + DEFVAL { other } + ::= { mplsInSegmentEntry 6 } + +mplsInSegmentXCIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index into mplsXCTable which identifies which cross- + connect entry this segment is part of. The string + containing the single octet 0x00 indicates that this + entry is not referred to by any cross-connect entry. + When a cross-connect entry is created which this + in-segment is a part of, this object is automatically + updated to reflect the value of mplsXCIndex of that + cross-connect entry." + ::= { mplsInSegmentEntry 7 } + +mplsInSegmentOwner OBJECT-TYPE + SYNTAX MplsOwner + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes the entity that created and is responsible + for managing this segment." + ::= { mplsInSegmentEntry 8 } + +mplsInSegmentTrafficParamPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This variable represents a pointer to the traffic + parameter specification for this in-segment. This + value may point at an entry in the + mplsTunnelResourceTable in the MPLS-TE-STD-MIB (RFC3812) + to indicate which traffic parameter settings for this + segment if it represents an LSP used for a TE tunnel. + + This value may optionally point at an + externally defined traffic parameter specification + table. A value of zeroDotZero indicates best-effort + treatment. By having the same value of this object, + two or more segments can indicate resource sharing + of such things as LSP queue space, etc. + + This object cannot be modified if mplsInSegmentRowStatus + is active(1). For entries in this table that + are preserved after a re-boot, the agent MUST ensure + that their integrity be preserved, or this object should + be set to 0.0 if it cannot." + DEFVAL { zeroDotZero } + ::= { mplsInSegmentEntry 9 } + +mplsInSegmentRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table has a row in the active(1) state, no + objects in this row can be modified except the + mplsInSegmentRowStatus and mplsInSegmentStorageType." + ::= { mplsInSegmentEntry 10 } + +mplsInSegmentStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this + object. The agent MUST ensure that this object's + value remains consistent with the associated + mplsXCEntry. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar objects in the row." + REFERENCE + "See RFC2579." + DEFVAL { volatile } + + + + ::= { mplsInSegmentEntry 11 } + +-- End of mplsInSegmentTable + +-- in-segment performance table. + +mplsInSegmentPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInSegmentPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains statistical information for + incoming MPLS segments to an LSR." + ::= { mplsLsrObjects 5 } + +mplsInSegmentPerfEntry OBJECT-TYPE + SYNTAX MplsInSegmentPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains statistical + information about one incoming segment which is + configured in the mplsInSegmentTable. The counters + in this entry should behave in a manner similar to + that of the interface. + mplsInSegmentPerfDiscontinuityTime indicates the + time of the last discontinuity in all of these + objects." + AUGMENTS { mplsInSegmentEntry } + ::= { mplsInSegmentPerfTable 1 } + +MplsInSegmentPerfEntry ::= SEQUENCE { + mplsInSegmentPerfOctets Counter32, + mplsInSegmentPerfPackets Counter32, + mplsInSegmentPerfErrors Counter32, + mplsInSegmentPerfDiscards Counter32, + + -- high capacity counter + mplsInSegmentPerfHCOctets Counter64, + + mplsInSegmentPerfDiscontinuityTime TimeStamp + } + +mplsInSegmentPerfOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This value represents the total number of octets + received by this segment. It MUST be equal to the + least significant 32 bits of + mplsInSegmentPerfHCOctets + if mplsInSegmentPerfHCOctets is supported according to + the rules spelled out in RFC2863." + ::= { mplsInSegmentPerfEntry 1 } + +mplsInSegmentPerfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of packets received by this segment." + ::= { mplsInSegmentPerfEntry 2 } + +mplsInSegmentPerfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of errored packets received on this + segment." + ::= { mplsInSegmentPerfEntry 3 } + +mplsInSegmentPerfDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of labeled packets received on this in- + segment, which were chosen to be discarded even + though no errors had been detected to prevent their + being transmitted. One possible reason for + discarding such a labeled packet could be to free up + buffer space." + ::= { mplsInSegmentPerfEntry 4 } + +mplsInSegmentPerfHCOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received. This is the 64 + bit version of mplsInSegmentPerfOctets, + if mplsInSegmentPerfHCOctets is supported according to + the rules spelled out in RFC2863." + ::= { mplsInSegmentPerfEntry 5 } + + + + +mplsInSegmentPerfDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one or more of this segment's Counter32 + or Counter64 suffered a discontinuity. If no such + discontinuities have occurred since the last re- + initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsInSegmentPerfEntry 6 } + +-- End of mplsInSegmentPerfTable. + +-- out-segment table. + +mplsOutSegmentIndexNext OBJECT-TYPE + SYNTAX MplsIndexNextType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available value to + be used for mplsOutSegmentIndex when creating entries + in the mplsOutSegmentTable. The special value of a + string containing the single octet 0x00 + indicates that no new entries can be created in this + table. Agents not allowing managers to create entries + in this table MUST set this object to this special + value." + ::= { mplsLsrObjects 6 } + +mplsOutSegmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsOutSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a representation of the outgoing + segments from an LSR." + ::= { mplsLsrObjects 7 } + +mplsOutSegmentEntry OBJECT-TYPE + SYNTAX MplsOutSegmentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents one outgoing + + + + segment. An entry can be created by a network + administrator, an SNMP agent, or an MPLS signaling + protocol. The object mplsOutSegmentOwner indicates + the creator of this entry. The value of + mplsOutSegmentRowStatus cannot be active(1) unless + the ifTable entry corresponding to + mplsOutSegmentInterface exists. + + Note that the indexing of this table uses a single, + arbitrary index (mplsOutSegmentIndex) to indicate + which out-segment (i.e.: label) is being switched to + from which in-segment (i.e: label) or in-segments. + This is necessary because it is possible to have an + equal-cost multi-path situation where two identical + out-going labels are assigned to the same + cross-connect (i.e.: they go to two different neighboring + LSRs); thus, requiring two out-segments. In order to + preserve the uniqueness of the references + by the mplsXCEntry, an arbitrary integer must be used as + the index for this table." + INDEX { mplsOutSegmentIndex } + ::= { mplsOutSegmentTable 1 } + +MplsOutSegmentEntry ::= SEQUENCE { + mplsOutSegmentIndex MplsIndexType, + mplsOutSegmentInterface InterfaceIndexOrZero, + mplsOutSegmentPushTopLabel TruthValue, + mplsOutSegmentTopLabel MplsLabel, + mplsOutSegmentTopLabelPtr RowPointer, + mplsOutSegmentNextHopAddrType InetAddressType, + mplsOutSegmentNextHopAddr InetAddress, + mplsOutSegmentXCIndex MplsIndexType, + mplsOutSegmentOwner MplsOwner, + mplsOutSegmentTrafficParamPtr RowPointer, + mplsOutSegmentRowStatus RowStatus, + mplsOutSegmentStorageType StorageType +} + +mplsOutSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value contains a unique index for this row. + While a value of a string containing the single + octet 0x00 is not valid as an index for entries + in this table, it can be supplied as a valid value + to index the mplsXCTable to represent entries for + + + + which no out-segment has been configured or + exists." + ::= { mplsOutSegmentEntry 1 } + +mplsOutSegmentInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value must contain the interface index of the + outgoing interface. This object cannot be modified + if mplsOutSegmentRowStatus is active(1). The + mplsOutSegmentRowStatus cannot be set to active(1) + until this object is set to a value corresponding to + a valid ifEntry." + ::= { mplsOutSegmentEntry 2 } + +mplsOutSegmentPushTopLabel OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value indicates whether or not a top label + should be pushed onto the outgoing packet's label + stack. The value of this variable MUST be set to + true(1) if the outgoing interface does not support + pop-and-go (and no label stack remains). For example, + on ATM interface, or if the segment represents a + tunnel origination. Note that it is considered + an error in the case that mplsOutSegmentPushTopLabel + is set to false, but the cross-connect entry which + refers to this out-segment has a non-zero + mplsLabelStackIndex. The LSR MUST ensure that this + situation does not happen. This object cannot be + modified if mplsOutSegmentRowStatus is active(1)." + DEFVAL { true } + ::= { mplsOutSegmentEntry 3 } + +mplsOutSegmentTopLabel OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsOutSegmentPushTopLabel is true then this + represents the label that should be pushed onto the + top of the outgoing packet's label stack. Otherwise + this value SHOULD be set to 0 by the management + station and MUST be ignored by the agent. This + + + + object cannot be modified if mplsOutSegmentRowStatus + is active(1)." + DEFVAL { 0 } + ::= { mplsOutSegmentEntry 4 } + +mplsOutSegmentTopLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the label for this segment cannot be represented + fully within the mplsOutSegmentLabel object, + this object MUST point to the first accessible + column of a conceptual row in an external table containing + the label. In this case, the mplsOutSegmentTopLabel + object SHOULD be set to 0 and ignored. This object + MUST be set to zeroDotZero otherwise." + DEFVAL { zeroDotZero } + ::= { mplsOutSegmentEntry 5 } + +mplsOutSegmentNextHopAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the next hop Internet address type. + Only values unknown(0), ipv4(1) or ipv6(2) + have to be supported. + + A value of unknown(0) is allowed only when + the outgoing interface is of type point-to-point. + If any other unsupported values are attempted in a set + operation, the agent MUST return an inconsistentValue + error." + REFERENCE + "See RFC3291." + ::= { mplsOutSegmentEntry 6 } + +mplsOutSegmentNextHopAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The internet address of the next hop. The type of + this address is determined by the value of the + mplslOutSegmentNextHopAddrType object. + + This object cannot be modified if + + + + mplsOutSegmentRowStatus is active(1)." + ::= { mplsOutSegmentEntry 7 } + +mplsOutSegmentXCIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index into mplsXCTable which identifies which cross- + connect entry this segment is part of. A value of + the string containing the single octet 0x00 + indicates that this entry is not referred + to by any cross-connect entry. When a cross-connect + entry is created which this out-segment is a part of, + this object MUST be updated by the agent to reflect + the value of mplsXCIndex of that cross-connect + entry." + ::= { mplsOutSegmentEntry 8 } + +mplsOutSegmentOwner OBJECT-TYPE + SYNTAX MplsOwner + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes the entity which created and is responsible + for managing this segment." + ::= { mplsOutSegmentEntry 9 } + +mplsOutSegmentTrafficParamPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable represents a pointer to the traffic + parameter specification for this out-segment. This + value may point at an entry in the + MplsTunnelResourceEntry in the MPLS-TE-STD-MIB (RFC3812) + + RFC Editor: Please fill in RFC number. + + to indicate which traffic parameter settings for this + segment if it represents an LSP used for a TE tunnel. + + This value may optionally point at an + externally defined traffic parameter specification + table. A value of zeroDotZero indicates best-effort + treatment. By having the same value of this object, + two or more segments can indicate resource sharing + + + + of such things as LSP queue space, etc. + + This object cannot be modified if + mplsOutSegmentRowStatus is active(1). + For entries in this table that + are preserved after a re-boot, the agent MUST ensure + that their integrity be preserved, or this object should + be set to 0.0 if it cannot." + DEFVAL { zeroDotZero } + ::= { mplsOutSegmentEntry 10 } + +mplsOutSegmentRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For creating, modifying, and deleting this row. + When a row in this table has a row in the active(1) + state, no objects in this row can be modified + except the mplsOutSegmentRowStatus or + mplsOutSegmentStorageType." + ::= { mplsOutSegmentEntry 11 } + +mplsOutSegmentStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this + object. The agent MUST ensure that this object's value + remains consistent with the associated mplsXCEntry. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar + objects in the row." + DEFVAL { volatile } + ::= { mplsOutSegmentEntry 12 } + +-- End of mplsOutSegmentTable + + +-- out-segment performance table. + +mplsOutSegmentPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsOutSegmentPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains statistical information about + + + + outgoing segments from an LSR. The counters in this + entry should behave in a manner similar to that of + the interface." + ::= { mplsLsrObjects 8 } + +mplsOutSegmentPerfEntry OBJECT-TYPE + SYNTAX MplsOutSegmentPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains statistical + information about one outgoing segment configured in + mplsOutSegmentTable. The object + mplsOutSegmentPerfDiscontinuityTime indicates the + time of the last discontinuity in these objects. " + AUGMENTS { mplsOutSegmentEntry } + ::= { mplsOutSegmentPerfTable 1 } + +MplsOutSegmentPerfEntry ::= SEQUENCE { + mplsOutSegmentPerfOctets Counter32, + mplsOutSegmentPerfPackets Counter32, + mplsOutSegmentPerfErrors Counter32, + mplsOutSegmentPerfDiscards Counter32, + + -- HC counter + mplsOutSegmentPerfHCOctets Counter64, + + mplsOutSegmentPerfDiscontinuityTime TimeStamp + } + +mplsOutSegmentPerfOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value contains the total number of octets sent + on this segment. It MUST be equal to the least + significant 32 bits of mplsOutSegmentPerfHCOctets + if mplsOutSegmentPerfHCOctets is supported according to + the rules spelled out in RFC2863." + ::= { mplsOutSegmentPerfEntry 1 } + +mplsOutSegmentPerfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value contains the total number of packets sent + + + + on this segment." + ::= { mplsOutSegmentPerfEntry 2 } + +mplsOutSegmentPerfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets that could not be sent due to + errors on this segment." + ::= { mplsOutSegmentPerfEntry 3 } + +mplsOutSegmentPerfDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of labeled packets attempted to be transmitted + on this out-segment, which were chosen to be discarded + even though no errors had been detected to prevent their + being transmitted. One possible reason for + discarding such a labeled packet could be to free up + buffer space." + ::= { mplsOutSegmentPerfEntry 4 } + +mplsOutSegmentPerfHCOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of octets sent. This is the 64 bit + version of mplsOutSegmentPerfOctets, + if mplsOutSegmentPerfHCOctets is supported according to + the rules spelled out in RFC2863." + ::= { mplsOutSegmentPerfEntry 5 } + +mplsOutSegmentPerfDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one or more of this segment's Counter32 + or Counter64 suffered a discontinuity. If no such + discontinuities have occurred since the last re- + initialization of the local management subsystem, + then this object contains a zero value." + ::= { mplsOutSegmentPerfEntry 6 } + + + + +-- End of mplsOutSegmentPerfTable. + + +-- Cross-connect table. + +mplsXCIndexNext OBJECT-TYPE + SYNTAX MplsIndexNextType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available value to + be used for mplsXCIndex when creating entries in + the mplsXCTable. A special value of the zero length + string indicates that no more new entries can be created + in the relevant table. Agents not allowing managers + to create entries in this table MUST set this value + to the zero length string." + ::= { mplsLsrObjects 9 } + +mplsXCTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsXCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies information for switching + between LSP segments. It supports point-to-point, + point-to-multipoint and multipoint-to-point + connections. mplsLabelStackTable specifies the + label stack information for a cross-connect LSR and + is referred to from mplsXCTable." + ::= { mplsLsrObjects 10 } + +mplsXCEntry OBJECT-TYPE + SYNTAX MplsXCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in this table represents one cross-connect + entry. It is indexed by the following objects: + + - cross-connect index mplsXCIndex that uniquely + identifies a group of cross-connect entries + + - in-segment index, mplsXCInSegmentIndex + + - out-segment index, mplsXCOutSegmentIndex + + + + + LSPs originating at this LSR: + These are represented by using the special + of value of mplsXCInSegmentIndex set to the + string containing a single octet 0x00. In + this case the mplsXCOutSegmentIndex + MUST not be the string containing a single + octet 0x00. + + LSPs terminating at this LSR: + These are represented by using the special value + mplsXCOutSegmentIndex set to the string containing + a single octet 0x00. + + Special labels: + Entries indexed by the strings containing the + reserved MPLS label values as a single octet 0x00 + through 0x0f (inclusive) imply LSPs terminating at + this LSR. Note that situations where LSPs are + terminated with incoming label equal to the string + containing a single octet 0x00 can be distinguished + from LSPs originating at this LSR because the + mplsXCOutSegmentIndex equals the string containing the + single octet 0x00. + + An entry can be created by a network administrator + or by an SNMP agent as instructed by an MPLS + signaling protocol." + INDEX { mplsXCIndex, mplsXCInSegmentIndex, + mplsXCOutSegmentIndex } + ::= { mplsXCTable 1 } + +MplsXCEntry ::= SEQUENCE { + mplsXCIndex MplsIndexType, + mplsXCInSegmentIndex MplsIndexType, + mplsXCOutSegmentIndex MplsIndexType, + mplsXCLspId MplsLSPID, + mplsXCLabelStackIndex MplsIndexType, + mplsXCOwner MplsOwner , + mplsXCRowStatus RowStatus, + mplsXCStorageType StorageType, + mplsXCAdminStatus INTEGER, + mplsXCOperStatus INTEGER + } + +mplsXCIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Primary index for the conceptual row identifying a + group of cross-connect segments. The string + containing a single octet 0x00 is an invalid index." + ::= { mplsXCEntry 1 } + +mplsXCInSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Incoming label index. + If this object is set to the string containing + a single octet 0x00, this indicates a special + case outlined in the table's description above. + In this case no corresponding mplsInSegmentEntry + shall exist." + ::= { mplsXCEntry 2 } + +mplsXCOutSegmentIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index of out-segment for LSPs not terminating on + this LSR if not set to the string containing the + single octet 0x00. If the segment identified by this + entry is terminating, then this object MUST be set to + the string containing a single octet 0x00 to indicate + that no corresponding mplsOutSegmentEntry shall + exist." + ::= { mplsXCEntry 3 } + +mplsXCLspId OBJECT-TYPE + SYNTAX MplsLSPID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the label switched path that + this cross-connect entry belongs to. This object + cannot be modified if mplsXCRowStatus is active(1) + except for this object." + ::= { mplsXCEntry 4 } + +mplsXCLabelStackIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "Primary index into mplsLabelStackTable identifying a + stack of labels to be pushed beneath the top label. + Note that the top label identified by the out- + segment ensures that all the components of a + multipoint-to-point connection have the same + outgoing label. A value of the string containing the + single octet 0x00 indicates that no labels are to + be stacked beneath the top label. + This object cannot be modified if mplsXCRowStatus is + active(1)." + ::= { mplsXCEntry 5 } + +mplsXCOwner OBJECT-TYPE + SYNTAX MplsOwner + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes the entity that created and is responsible + for managing this cross-connect." + ::= { mplsXCEntry 6 } + +mplsXCRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For creating, modifying, and deleting this row. + When a row in this table has a row in the active(1) + state, no objects in this row except this object + and the mplsXCStorageType can be modified. " + ::= { mplsXCEntry 7 } + +mplsXCStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this + object. The agent MUST ensure that the associated in + and out segments also have the same StorageType value + and are restored consistently upon system restart. + This value SHOULD be set to permanent(4) if created + as a result of a static LSP configuration. + + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar + objects in the row." + + + + DEFVAL { volatile } + ::= { mplsXCEntry 8 } + +mplsXCAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3) -- in some test mode + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired operational status of this segment." + DEFVAL { up } + ::= { mplsXCEntry 9 } + +mplsXCOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3), -- in some test mode + unknown(4), -- status cannot be determined + -- for some reason. + dormant(5), + notPresent(6), -- some component is missing + lowerLayerDown(7) -- down due to the state of + -- lower layer interfaces + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual operational status of this cross- + connect." + ::= { mplsXCEntry 10 } + +-- End of mplsXCTable + + +-- Label stack table. + +mplsMaxLabelStackDepth OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum stack depth supported by this LSR." +::= { mplsLsrObjects 11 } + + + + +mplsLabelStackIndexNext OBJECT-TYPE + SYNTAX MplsIndexNextType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the next available value to + be used for mplsLabelStackIndex when creating entries + in the mplsLabelStackTable. The special string + containing the single octet 0x00 + indicates that no more new entries can be created + in the relevant table. Agents not allowing managers + to create entries in this table MUST set this value + to the string containing the single octet 0x00." +::= { mplsLsrObjects 12 } + +mplsLabelStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabelStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the label stack to be pushed + onto a packet, beneath the top label. Entries into + this table are referred to from mplsXCTable." + ::= { mplsLsrObjects 13 } + +mplsLabelStackEntry OBJECT-TYPE + SYNTAX MplsLabelStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents one label which is + to be pushed onto an outgoing packet, beneath the + top label. An entry can be created by a network + administrator or by an SNMP agent as instructed by + an MPLS signaling protocol." + INDEX { mplsLabelStackIndex, mplsLabelStackLabelIndex } + ::= { mplsLabelStackTable 1 } + +MplsLabelStackEntry ::= SEQUENCE { + mplsLabelStackIndex MplsIndexType, + mplsLabelStackLabelIndex Unsigned32, + mplsLabelStackLabel MplsLabel, + mplsLabelStackLabelPtr RowPointer, + mplsLabelStackRowStatus RowStatus, + mplsLabelStackStorageType StorageType + } + +mplsLabelStackIndex OBJECT-TYPE + + + + SYNTAX MplsIndexType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Primary index for this row identifying a stack of + labels to be pushed on an outgoing packet, beneath + the top label. An index containing the string with + a single octet 0x00 MUST not be used." + ::= { mplsLabelStackEntry 1 } + +mplsLabelStackLabelIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index for this row identifying one label + of the stack. Note that an entry with a smaller + mplsLabelStackLabelIndex would refer to a label + higher up the label stack and would be popped at a + downstream LSR before a label represented by a + higher mplsLabelStackLabelIndex at a downstream + LSR." + ::= { mplsLabelStackEntry 2 } + +mplsLabelStackLabel OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The label to pushed." + ::= { mplsLabelStackEntry 3 } + +mplsLabelStackLabelPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the label for this segment cannot be represented + fully within the mplsLabelStackLabel object, + this object MUST point to the first accessible + column of a conceptual row in an external table containing + the label. In this case, the mplsLabelStackLabel + object SHOULD be set to 0 and ignored. This object + MUST be set to zeroDotZero otherwise." + DEFVAL { zeroDotZero } + ::= { mplsLabelStackEntry 4 } + +mplsLabelStackRowStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For creating, modifying, and deleting this row. + When a row in this table has a row in the active(1) + state, no objects in this row except this object + and the mplsLabelStackStorageType can be modified." + ::= { mplsLabelStackEntry 5 } + +mplsLabelStackStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the storage type for this + object. This object cannot be modified if + mplsLabelStackRowStatus is active(1). + No objects are required to be writable for + rows in this table with this object set to + permanent(4). + + The agent MUST ensure that all related entries + in this table retain the same value for this + object. Agents MUST ensure that the storage type + for all entries related to a particular mplsXCEntry + retain the same value for this object as the + mplsXCEntry's StorageType." + DEFVAL { volatile } + ::= { mplsLabelStackEntry 6 } + +-- End of mplsLabelStackTable + +-- Begin mplsInSegmentMapTable + +mplsInSegmentMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsInSegmentMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the mapping from the + mplsInSegmentIndex to the corresponding + mplsInSegmentInterface and mplsInSegmentLabel + objects. The purpose of this table is to + provide the manager with an alternative + means by which to locate in-segments." + ::= { mplsLsrObjects 14 } + + + + +mplsInSegmentMapEntry OBJECT-TYPE + SYNTAX MplsInSegmentMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents one interface + and incoming label pair. + + In cases where the label cannot fit into the + mplsInSegmentLabel object, the mplsInSegmentLabelPtr + will indicate this by being set to the first accessible + column in the appropriate extension table's row, + and the mplsInSegmentLabel SHOULD be set to 0. + In all other cases when the label is + represented within the mplsInSegmentLabel object, the + mplsInSegmentLabelPtr MUST be 0.0. + + Implementors need to be aware that if the value of + the mplsInSegmentMapLabelPtrIndex (an OID) has more + that 111 sub-identifiers, then OIDs of column + instances in this table will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3." + INDEX { mplsInSegmentMapInterface, + mplsInSegmentMapLabel, + mplsInSegmentMapLabelPtrIndex } + ::= { mplsInSegmentMapTable 1 } + +MplsInSegmentMapEntry ::= SEQUENCE { + mplsInSegmentMapInterface InterfaceIndexOrZero, + mplsInSegmentMapLabel MplsLabel, + mplsInSegmentMapLabelPtrIndex RowPointer, + mplsInSegmentMapIndex MplsIndexType + } + +mplsInSegmentMapInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index contains the same value as the + mplsInSegmentIndex in the mplsInSegmentTable." + ::= { mplsInSegmentMapEntry 1 } + +mplsInSegmentMapLabel OBJECT-TYPE + SYNTAX MplsLabel + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This index contains the same value as the + mplsInSegmentLabel in the mplsInSegmentTable." + ::= { mplsInSegmentMapEntry 2 } + +mplsInSegmentMapLabelPtrIndex OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This index contains the same value as the + mplsInSegmentLabelPtr. + + If the label for the InSegment cannot be represented + fully within the mplsInSegmentLabel object, + this index MUST point to the first accessible + column of a conceptual row in an external table containing + the label. In this case, the mplsInSegmentTopLabel + object SHOULD be set to 0 and ignored. This object MUST + be set to zeroDotZero otherwise." + ::= { mplsInSegmentMapEntry 3 } + +mplsInSegmentMapIndex OBJECT-TYPE + SYNTAX MplsIndexType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mplsInSegmentIndex that corresponds + to the mplsInSegmentInterface and + mplsInSegmentLabel, or the mplsInSegmentInterface + and mplsInSegmentLabelPtr, if applicable. + The string containing the single octet 0x00 + MUST not be returned." + ::= { mplsInSegmentMapEntry 4 } + +-- End mplsInSegmentMapTable + + +-- Notification Configuration + +mplsXCNotificationsEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is set to true(1), then it enables + the emission of mplsXCUp and mplsXCDown + notifications; otherwise these notifications are not + + + + emitted." + REFERENCE + "See also RFC3413 for explanation that + notifications are under the ultimate control of the + MIB module in this document." + DEFVAL { false } + ::= { mplsLsrObjects 15 } + +-- Cross-connect. + +mplsXCUp NOTIFICATION-TYPE + OBJECTS { mplsXCOperStatus, -- start of range + mplsXCOperStatus -- end of range + } + STATUS current + DESCRIPTION + "This notification is generated when the + mplsXCOperStatus object for one or more contiguous + entries in mplsXCTable are about to enter the up(1) + state from some other state. The included values of + mplsXCOperStatus MUST both be set equal to this + new state (i.e: up(1)). The two instances of + mplsXCOperStatus in this notification indicate the range + of indexes that are affected. Note that all the indexes + of the two ends of the range can be derived from the + instance identifiers of these two objects. For + cases where a contiguous range of cross-connects + have transitioned into the up(1) state at roughly + the same time, the device SHOULD issue a single + notification for each range of contiguous indexes in + an effort to minimize the emission of a large number + of notifications. If a notification has to be + issued for just a single cross-connect entry, then + the instance identifier (and values) of the two + mplsXCOperStatus objects MUST be the identical." + ::= { mplsLsrNotifications 1 } + +mplsXCDown NOTIFICATION-TYPE + OBJECTS { + mplsXCOperStatus, -- start of range + mplsXCOperStatus -- end of range + } + STATUS current + DESCRIPTION + "This notification is generated when the + mplsXCOperStatus object for one or more contiguous + entries in mplsXCTable are about to enter the + down(2) state from some other state. The included values + + + + of mplsXCOperStatus MUST both be set equal to this + down(2) state. The two instances of mplsXCOperStatus + in this notification indicate the range of indexes + that are affected. Note that all the indexes of the + two ends of the range can be derived from the + instance identifiers of these two objects. For + cases where a contiguous range of cross-connects + have transitioned into the down(2) state at roughly + the same time, the device SHOULD issue a single + notification for each range of contiguous indexes in + an effort to minimize the emission of a large number + of notifications. If a notification has to be + issued for just a single cross-connect entry, then + the instance identifier (and values) of the two + mplsXCOperStatus objects MUST be identical." + ::= { mplsLsrNotifications 2 } + +-- End of notifications. + + +-- Module compliance. + +mplsLsrGroups + OBJECT IDENTIFIER ::= { mplsLsrConformance 1 } + +mplsLsrCompliances + OBJECT IDENTIFIER ::= { mplsLsrConformance 2 } + +-- Compliance requirement for fully compliant implementations. + +mplsLsrModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance statement for agents that provide full + support for MPLS-LSR-STD-MIB. Such devices can + then be monitored and also be configured using + this MIB module." + + MODULE IF-MIB -- The Interfaces Group MIB, RFC 2863. + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- This module. + MANDATORY-GROUPS { + mplsInterfaceGroup, + mplsInSegmentGroup, + mplsOutSegmentGroup, + + + + mplsXCGroup, + mplsPerfGroup + } + + GROUP mplsLabelStackGroup + DESCRIPTION "This group is only mandatory for LSRs that wish to + support the modification of LSP label stacks. + " + + GROUP mplsHCInSegmentPerfGroup + DESCRIPTION "This group is mandatory for those in-segment entries + for which the object mplsInSegmentOutOctets wraps + around too quickly based on the criteria specified in + RFC 2863 for high-capacity counters. + " + + GROUP mplsHCOutSegmentPerfGroup + DESCRIPTION "This group is mandatory for those out-segment entries + for which the object mplsOutSegmentPerfOctets wraps + around too quickly based on the criteria specified in + RFC 2863 for high-capacity counters. + " + + GROUP mplsLsrNotificationGroup + DESCRIPTION "This group is only mandatory for those implementations + which can efficiently implement the notifications + contained in this group." + + OBJECT mplsInSegmentRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + OBJECT mplsOutSegmentNextHopAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION "Only unknown(0), ipv4(1) and ipv6(2) support + is required." + + OBJECT mplsOutSegmentNextHopAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION "An implementation is only required to support + unknown(0), ipv4(1) and ipv6(2) sizes." + + OBJECT mplsOutSegmentRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + + + + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + OBJECT mplsLabelStackRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + OBJECT mplsXCRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + ::= { mplsLsrCompliances 1 } + +-- Compliance requirement for read-only implementations. + +mplsLsrModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "Compliance requirement for implementations that only + provide read-only support for MPLS-LSR-STD-MIB. Such + devices can then be monitored but cannot be configured + using this MIB module. + " + + MODULE IF-MIB -- The interfaces Group MIB, RFC 2863 + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- This module + MANDATORY-GROUPS { + mplsInterfaceGroup, + mplsInSegmentGroup, + mplsOutSegmentGroup, + mplsXCGroup, + mplsPerfGroup + } + + + + GROUP mplsLabelStackGroup + DESCRIPTION "This group is only mandatory for LSRs that wish to + support the modification of LSP label stacks. + " + + GROUP mplsHCInSegmentPerfGroup + DESCRIPTION "This group is mandatory for those in-segment entries + for which the object mplsInSegmentOutOctets wraps + around too quickly based on the criteria specified in + RFC 2863 for high-capacity counters. + " + + GROUP mplsHCOutSegmentPerfGroup + DESCRIPTION "This group is mandatory for those out-segment entries + for which the object mplsOutSegmentPerfOctets wraps + around too quickly based on the criteria specified in + RFC 2863 for high-capacity counters. + " + + GROUP mplsLsrNotificationGroup + DESCRIPTION "This group is only mandatory for those implementations + which can efficiently implement the notifications + contained in this group. + " + + -- mplsInSegmentTable + OBJECT mplsInSegmentLabel + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsInSegmentLabelPtr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsInSegmentNPop + SYNTAX Integer32 (1..1) + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. This object + SHOULD be set to 1 if it is read-only. + " + + OBJECT mplsInSegmentAddrFamily + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. A value of other(0) + should be supported because there may be cases where + the agent may not know about or support any address + types. + " + + + + OBJECT mplsInSegmentRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsInSegmentStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + -- mplsOutSegmentTable + OBJECT mplsOutSegmentInterface + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentPushTopLabel + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentTopLabel + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentTopLabelPtr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentNextHopAddrType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. Only unknown(0), + ipv4(1) and ipv6(2) support is required. + " + + OBJECT mplsOutSegmentNextHopAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. An implementation is + only required to support unknown(0), ipv4(1) and + ipv6(2) sizes." + + OBJECT mplsOutSegmentRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsOutSegmentStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + -- mplsXCTable + OBJECT mplsXCLabelStackIndex + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsXCAdminStatus + MIN-ACCESS read-only + DESCRIPTION "Read only support is required." + + OBJECT mplsXCRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsXCStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLabelStackLabel + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLabelStackLabelPtr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLabelStackRowStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsLabelStackStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { mplsLsrCompliances 2 } + +-- Units of conformance. + +mplsInterfaceGroup OBJECT-GROUP + OBJECTS { + mplsInterfaceLabelMinIn, + mplsInterfaceLabelMaxIn, + mplsInterfaceLabelMinOut, + mplsInterfaceLabelMaxOut, + mplsInterfaceTotalBandwidth, + mplsInterfaceAvailableBandwidth, + mplsInterfaceLabelParticipationType + } + + + + STATUS current + DESCRIPTION + "Collection of objects needed for MPLS interface + and interface performance information." + ::= { mplsLsrGroups 1 } + +mplsInSegmentGroup OBJECT-GROUP + OBJECTS { + mplsInSegmentIndexNext, + mplsInSegmentInterface, + mplsInSegmentLabel, + mplsInSegmentLabelPtr, + mplsInSegmentNPop, + mplsInSegmentAddrFamily, + mplsInSegmentXCIndex, + mplsInSegmentOwner, + mplsInSegmentRowStatus, + mplsInSegmentStorageType, + mplsInSegmentTrafficParamPtr, + mplsInSegmentMapIndex + } + STATUS current + DESCRIPTION + "Collection of objects needed to implement an in- + segment." + ::= { mplsLsrGroups 2 } + +mplsOutSegmentGroup OBJECT-GROUP + OBJECTS { + mplsOutSegmentIndexNext, + mplsOutSegmentInterface, + mplsOutSegmentPushTopLabel, + mplsOutSegmentTopLabel, + mplsOutSegmentTopLabelPtr, + mplsOutSegmentNextHopAddrType, + mplsOutSegmentNextHopAddr, + mplsOutSegmentXCIndex, + mplsOutSegmentOwner, + mplsOutSegmentPerfOctets, + mplsOutSegmentPerfDiscards, + mplsOutSegmentPerfErrors, + mplsOutSegmentRowStatus, + mplsOutSegmentStorageType, + mplsOutSegmentTrafficParamPtr + } + STATUS current + DESCRIPTION + "Collection of objects needed to implement an out- + + + + segment." + ::= { mplsLsrGroups 3 } + +mplsXCGroup OBJECT-GROUP + OBJECTS { + mplsXCIndexNext, + mplsXCLspId, + mplsXCLabelStackIndex, + mplsXCOwner, + mplsXCStorageType, + mplsXCAdminStatus, + mplsXCOperStatus, + mplsXCRowStatus, + mplsXCNotificationsEnable + } + STATUS current + DESCRIPTION + "Collection of objects needed to implement a + cross-connect entry." + ::= { mplsLsrGroups 4 } + +mplsPerfGroup OBJECT-GROUP + OBJECTS { + mplsInSegmentPerfOctets, + mplsInSegmentPerfPackets, + mplsInSegmentPerfErrors, + mplsInSegmentPerfDiscards, + mplsInSegmentPerfDiscontinuityTime, + mplsOutSegmentPerfOctets, + mplsOutSegmentPerfPackets, + mplsOutSegmentPerfDiscards, + mplsOutSegmentPerfDiscontinuityTime, + mplsInterfacePerfInLabelsInUse, + mplsInterfacePerfInLabelLookupFailures, + mplsInterfacePerfOutFragmentedPkts, + mplsInterfacePerfOutLabelsInUse + } + + STATUS current + DESCRIPTION + "Collection of objects providing performance + information + about an LSR." + ::= { mplsLsrGroups 5 } + +mplsHCInSegmentPerfGroup OBJECT-GROUP + OBJECTS { mplsInSegmentPerfHCOctets } + STATUS current + + + + DESCRIPTION + "Object(s) providing performance information + specific to out-segments for which the object + mplsInterfaceInOctets wraps around too quickly." + ::= { mplsLsrGroups 6 } + +mplsHCOutSegmentPerfGroup OBJECT-GROUP + OBJECTS { mplsOutSegmentPerfHCOctets } + STATUS current + DESCRIPTION + "Object(s) providing performance information + specific to out-segments for which the object + mplsInterfaceOutOctets wraps around too + quickly." + ::= { mplsLsrGroups 7 } + +mplsLabelStackGroup OBJECT-GROUP + OBJECTS { + mplsLabelStackLabel, + mplsLabelStackLabelPtr, + mplsLabelStackRowStatus, + mplsLabelStackStorageType, + mplsMaxLabelStackDepth, + mplsLabelStackIndexNext + } + STATUS current + DESCRIPTION + "Objects needed to support label stacking." + ::= { mplsLsrGroups 8 } + +mplsLsrNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mplsXCUp, + mplsXCDown + } + STATUS current + DESCRIPTION + "Set of notifications implemented in this + module." + ::= { mplsLsrGroups 9 } +END diff --git a/mibs/ietf/MPLS-TC-STD-MIB b/mibs/ietf/MPLS-TC-STD-MIB new file mode 100644 index 0000000..16ce449 --- /dev/null +++ b/mibs/ietf/MPLS-TC-STD-MIB @@ -0,0 +1,670 @@ +MPLS-TC-STD-MIB DEFINITIONS ::= BEGIN + + IMPORTS + + MODULE-IDENTITY, + Unsigned32, Integer32, + transmission FROM SNMPv2-SMI -- [RFC2578] + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + + mplsTCStdMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION + "IETF Multiprotocol Label Switching (MPLS) Working + Group." + CONTACT-INFO + " Thomas D. Nadeau + + + + Cisco Systems, Inc. + tnadeau@cisco.com + + Joan Cucchiara + Marconi Communications, Inc. + jcucchiara@mindspring.com + + Cheenu Srinivasan + Bloomberg L.P. + cheenu@bloomberg.net + + Arun Viswanathan + Force10 Networks, Inc. + arunv@force10networks.com + + Hans Sjostrand + ipUnplugged + hans@ipunplugged.com + + Kireeti Kompella + Juniper Networks + kireeti@juniper.net + + Email comments to the MPLS WG Mailing List at + mpls@uu.net." + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3811. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html + + This MIB module defines TEXTUAL-CONVENTIONs + for concepts used in Multiprotocol Label + Switching (MPLS) networks." + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial version published as part of RFC 3811." + + ::= { mplsStdMIB 1 } + + mplsStdMIB OBJECT IDENTIFIER + + ::= { transmission 166 } + + MplsAtmVcIdentifier ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "A Label Switching Router (LSR) that + creates LDP sessions on ATM interfaces + uses the VCI or VPI/VCI field to hold the + LDP Label. + + VCI values MUST NOT be in the 0-31 range. + The values 0 to 31 are reserved for other uses + by the ITU and ATM Forum. The value + of 32 can only be used for the Control VC, + although values greater than 32 could be + configured for the Control VC. + + If a value from 0 to 31 is used for a VCI + the management entity controlling the LDP + subsystem should reject this with an + inconsistentValue error. Also, if + the value of 32 is used for a VC which is + NOT the Control VC, this should + result in an inconsistentValue error." + REFERENCE + "MPLS using LDP and ATM VC Switching, RFC3035." + SYNTAX Integer32 (32..65535) + + MplsBitRate ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "If the value of this object is greater than zero, + then this represents the bandwidth of this MPLS + interface (or Label Switched Path) in units of + '1,000 bits per second'. + + The value, when greater than zero, represents the + bandwidth of this MPLS interface (rounded to the + nearest 1,000) in units of 1,000 bits per second. + If the bandwidth of the MPLS interface is between + ((n * 1000) - 500) and ((n * 1000) + 499), the value + of this object is n, such that n > 0. + + If the value of this object is 0 (zero), this + means that the traffic over this MPLS interface is + considered to be best effort." + SYNTAX Unsigned32 (0|1..4294967295) + + MplsBurstSize ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "The number of octets of MPLS data that the stream + may send back-to-back without concern for policing. + The value of zero indicates that an implementation + does not support Burst Size." + SYNTAX Unsigned32 (0..4294967295) + + MplsExtendedTunnelId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique identifier for an MPLS Tunnel. This may + represent an IPv4 address of the ingress or egress + LSR for the tunnel. This value is derived from the + Extended Tunnel Id in RSVP or the Ingress Router ID + for CR-LDP." + REFERENCE + "RSVP-TE: Extensions to RSVP for LSP Tunnels, + [RFC3209]. + + Constraint-Based LSP Setup using LDP, [RFC3212]." + SYNTAX Unsigned32(0..4294967295) + + MplsLabel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This value represents an MPLS label as defined in + [RFC3031], [RFC3032], [RFC3034], [RFC3035] and + [RFC3471]. + + The label contents are specific to the label being + represented, such as: + + * The label carried in an MPLS shim header + (for LDP this is the Generic Label) is a 20-bit + number represented by 4 octets. Bits 0-19 contain + a label or a reserved label value. Bits 20-31 + MUST be zero. + + The following is quoted directly from [RFC3032]. + There are several reserved label values: + + i. A value of 0 represents the + 'IPv4 Explicit NULL Label'. This label + value is only legal at the bottom of the + label stack. It indicates that the label + stack must be popped, and the forwarding + of the packet must then be based on the + + + + IPv4 header. + + ii. A value of 1 represents the + 'Router Alert Label'. This label value is + legal anywhere in the label stack except at + the bottom. When a received packet + contains this label value at the top of + the label stack, it is delivered to a + local software module for processing. + The actual forwarding of the packet + is determined by the label beneath it + in the stack. However, if the packet is + forwarded further, the Router Alert Label + should be pushed back onto the label stack + before forwarding. The use of this label + is analogous to the use of the + 'Router Alert Option' in IP packets + [RFC2113]. Since this label + cannot occur at the bottom of the stack, + it is not associated with a + particular network layer protocol. + + iii. A value of 2 represents the + 'IPv6 Explicit NULL Label'. This label + value is only legal at the bottom of the + label stack. It indicates that the label + stack must be popped, and the forwarding + of the packet must then be based on the + IPv6 header. + + iv. A value of 3 represents the + 'Implicit NULL Label'. + This is a label that an LSR may assign and + distribute, but which never actually + appears in the encapsulation. When an + LSR would otherwise replace the label + at the top of the stack with a new label, + but the new label is 'Implicit NULL', + the LSR will pop the stack instead of + doing the replacement. Although + this value may never appear in the + encapsulation, it needs to be specified in + the Label Distribution Protocol, so a value + is reserved. + + v. Values 4-15 are reserved. + + * The frame relay label can be either 10-bits or + + + + 23-bits depending on the DLCI field size and the + upper 22-bits or upper 9-bits must be zero, + respectively. + + * For an ATM label the lower 16-bits represents the + VCI, the next 12-bits represents the VPI and the + remaining bits MUST be zero. + + * The Generalized-MPLS (GMPLS) label contains a + value greater than 2^24-1 and used in GMPLS + as defined in [RFC3471]." + REFERENCE + "Multiprotocol Label Switching Architecture, + RFC3031. + + MPLS Label Stack Encoding, [RFC3032]. + + Use of Label Switching on Frame Relay Networks, + RFC3034. + + MPLS using LDP and ATM VC Switching, RFC3035. + Generalized Multiprotocol Label Switching + (GMPLS) Architecture, [RFC3471]." + SYNTAX Unsigned32 (0..4294967295) + + MplsLabelDistributionMethod ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The label distribution method which is also called + the label advertisement mode [RFC3036]. + Each interface on an LSR is configured to operate + in either Downstream Unsolicited or Downstream + on Demand." + REFERENCE + "Multiprotocol Label Switching Architecture, + RFC3031. + + LDP Specification, RFC3036, Section 2.6.3." + SYNTAX INTEGER { + downstreamOnDemand(1), + downstreamUnsolicited(2) + } + + MplsLdpIdentifier ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d:2d" + STATUS current + DESCRIPTION + "The LDP identifier is a six octet + + + + quantity which is used to identify a + Label Switching Router (LSR) label space. + + The first four octets identify the LSR and + must be a globally unique value, such as a + 32-bit router ID assigned to the LSR, and the + last two octets identify a specific label + space within the LSR." + SYNTAX OCTET STRING (SIZE (6)) + + MplsLsrIdentifier ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Label Switching Router (LSR) identifier is the + first 4 bytes of the Label Distribution Protocol + (LDP) identifier." + SYNTAX OCTET STRING (SIZE (4)) + MplsLdpLabelType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Layer 2 label types which are defined for MPLS + LDP and/or CR-LDP are generic(1), atm(2), or + frameRelay(3)." + SYNTAX INTEGER { + generic(1), + atm(2), + frameRelay(3) + } + + MplsLSPID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique identifier within an MPLS network that is + assigned to each LSP. This is assigned at the head + end of the LSP and can be used by all LSRs + to identify this LSP. This value is piggybacked by + the signaling protocol when this LSP is signaled + within the network. This identifier can then be + used at each LSR to identify which labels are + being swapped to other labels for this LSP. This + object can also be used to disambiguate LSPs that + share the same RSVP sessions between the same + source and destination. + + For LSPs established using CR-LDP, the LSPID is + composed of the ingress LSR Router ID (or any of + its own IPv4 addresses) and a locally unique + CR-LSP ID to that LSR. The first two bytes carry + + + + the CR-LSPID, and the remaining 4 bytes carry + the Router ID. The LSPID is useful in network + management, in CR-LSP repair, and in using + an already established CR-LSP as a hop in + an ER-TLV. + + For LSPs signaled using RSVP-TE, the LSP ID is + defined as a 16-bit (2 byte) identifier used + in the SENDER_TEMPLATE and the FILTER_SPEC + that can be changed to allow a sender to + share resources with itself. The length of this + object should only be 2 or 6 bytes. If the length + of this octet string is 2 bytes, then it must + identify an RSVP-TE LSPID, or it is 6 bytes, + it must contain a CR-LDP LSPID." + REFERENCE + "RSVP-TE: Extensions to RSVP for LSP Tunnels, + [RFC3209]. + + Constraint-Based LSP Setup using LDP, + [RFC3212]." + SYNTAX OCTET STRING (SIZE (2|6)) + + MplsLspType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Types of Label Switch Paths (LSPs) + on a Label Switching Router (LSR) or a + Label Edge Router (LER) are: + + unknown(1) -- if the LSP is not known + to be one of the following. + + terminatingLsp(2) -- if the LSP terminates + on the LSR/LER, then this + is an egressing LSP + which ends on the LSR/LER, + + originatingLsp(3) -- if the LSP originates + from this LSR/LER, then + this is an ingressing LSP + which is the head-end of + the LSP, + + crossConnectingLsp(4) -- if the LSP ingresses + and egresses on the LSR, + then it is + cross-connecting on that + + + + LSR." + SYNTAX INTEGER { + unknown(1), + terminatingLsp(2), + originatingLsp(3), + crossConnectingLsp(4) + } + + MplsOwner ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This object indicates the local network + management subsystem that originally created + the object(s) in question. The values of + this enumeration are defined as follows: + + unknown(1) - the local network management + subsystem cannot discern which + component created the object. + + other(2) - the local network management + subsystem is able to discern which component + created the object, but the component is not + listed within the following choices, + e.g., command line interface (cli). + + snmp(3) - The Simple Network Management Protocol + was used to configure this object initially. + + ldp(4) - The Label Distribution Protocol was + used to configure this object initially. + + crldp(5) - The Constraint-Based Label Distribution + Protocol was used to configure this object + initially. + + rsvpTe(6) - The Resource Reservation Protocol was + used to configure this object initially. + + policyAgent(7) - A policy agent (perhaps in + combination with one of the above protocols) was + used to configure this object initially. + + An object created by any of the above choices + MAY be modified or destroyed by the same or a + different choice." + SYNTAX INTEGER { + unknown(1), + + + + other(2), + snmp(3), + ldp(4), + crldp(5), + rsvpTe(6), + policyAgent(7) + } + + MplsPathIndexOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique identifier used to identify a specific + path used by a tunnel. A value of 0 (zero) means + that no path is in use." + SYNTAX Unsigned32(0..4294967295) + + MplsPathIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique value to index (by Path number) an + entry in a table." + SYNTAX Unsigned32(1..4294967295) + + MplsRetentionMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The label retention mode which specifies whether + an LSR maintains a label binding for a FEC + learned from a neighbor that is not its next hop + for the FEC. + + If the value is conservative(1) then advertised + label mappings are retained only if they will be + used to forward packets, i.e., if label came from + a valid next hop. + + If the value is liberal(2) then all advertised + label mappings are retained whether they are from + a valid next hop or not." + REFERENCE + "Multiprotocol Label Switching Architecture, + RFC3031. + + LDP Specification, RFC3036, Section 2.6.2." + SYNTAX INTEGER { + conservative(1), + liberal(2) + } + + + + MplsTunnelAffinity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Describes the configured 32-bit Include-any, + include-all, or exclude-all constraint for + constraint-based link selection." + REFERENCE + "RSVP-TE: Extensions to RSVP for LSP Tunnels, + RFC3209, Section 4.7.4." + SYNTAX Unsigned32(0..4294967295) + + MplsTunnelIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A unique index into mplsTunnelTable. + For tunnels signaled using RSVP, this value + should correspond to the RSVP Tunnel ID + used for the RSVP-TE session." + SYNTAX Unsigned32 (0..65535) + + MplsTunnelInstanceIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The tunnel entry with instance index 0 + should refer to the configured tunnel + interface (if one exists). + + Values greater than 0, but less than or + equal to 65535, should be used to indicate + signaled (or backup) tunnel LSP instances. + For tunnel LSPs signaled using RSVP, + this value should correspond to the + RSVP LSP ID used for the RSVP-TE + LSP. + + Values greater than 65535 apply to FRR + detour instances." + SYNTAX Unsigned32(0|1..65535|65536..4294967295) + + TeHopAddressType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a type of address for a + Traffic Engineered (TE) Tunnel hop. + + unknown(0) An unknown address type. This value + MUST be used if the value of the + corresponding TeHopAddress object is a + + + + zero-length string. It may also be + used to indicate a TeHopAddress which + is not in one of the formats defined + below. + + ipv4(1) An IPv4 network address as defined by + the InetAddressIPv4 TEXTUAL-CONVENTION + [RFC3291]. + + ipv6(2) A global IPv6 address as defined by + the InetAddressIPv6 TEXTUAL-CONVENTION + [RFC3291]. + + asnumber(3) An Autonomous System (AS) number as + defined by the TeHopAddressAS + TEXTUAL-CONVENTION. + + unnum(4) An unnumbered interface index as + defined by the TeHopAddressUnnum + TEXTUAL-CONVENTION. + + lspid(5) An LSP ID for TE Tunnels + (RFC3212) as defined by the + MplsLSPID TEXTUAL-CONVENTION. + + Each definition of a concrete TeHopAddressType + value must be accompanied by a definition + of a TEXTUAL-CONVENTION for use with that + TeHopAddress. + + To support future extensions, the TeHopAddressType + TEXTUAL-CONVENTION SHOULD NOT be sub-typed in + object type definitions. It MAY be sub-typed in + compliance statements in order to require only a + subset of these address types for a compliant + implementation. + + Implementations must ensure that TeHopAddressType + objects and any dependent objects + (e.g., TeHopAddress objects) are consistent. + An inconsistentValue error must be generated + if an attempt to change a TeHopAddressType + object would, for example, lead to an + undefined TeHopAddress value that is + not defined herein. In particular, + TeHopAddressType/TeHopAddress pairs + must be changed together if the address + type changes (e.g., from ipv6(2) to ipv4(1))." + + + + REFERENCE + "TEXTUAL-CONVENTIONs for Internet Network + Addresses, RFC3291. + + Constraint-Based LSP Setup using LDP, + [RFC3212]" + + SYNTAX INTEGER { + unknown(0), + ipv4(1), + ipv6(2), + asnumber(3), + unnum(4), + lspid(5) + } + + TeHopAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a generic Tunnel hop address, + that is, the address of a node which + an LSP traverses, including the source + and destination nodes. An address may be + very concrete, for example, an IPv4 host + address (i.e., with prefix length 32); + if this IPv4 address is an interface + address, then that particular interface + must be traversed. An address may also + specify an 'abstract node', for example, + an IPv4 address with prefix length + less than 32, in which case, the LSP + can traverse any node whose address + falls in that range. An address may + also specify an Autonomous System (AS), + in which case the LSP can traverse any + node that falls within that AS. + + A TeHopAddress value is always interpreted within + the context of an TeHopAddressType value. Every + usage of the TeHopAddress TEXTUAL-CONVENTION + is required to specify the TeHopAddressType object + which provides the context. It is suggested that + the TeHopAddressType object is logically registered + before the object(s) which use the TeHopAddress + TEXTUAL-CONVENTION if they appear in the + same logical row. + + The value of a TeHopAddress object must always be + + + + consistent with the value of the associated + TeHopAddressType object. Attempts to set a + TeHopAddress object to a value which is + inconsistent with the associated TeHopAddressType + must fail with an inconsistentValue error." + SYNTAX OCTET STRING (SIZE (0..32)) + + TeHopAddressAS ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a two or four octet AS number. + The AS number is represented in network byte + order (MSB first). A two-octet AS number has + the two MSB octets set to zero." + REFERENCE + "Textual Conventions for Internet Network + Addresses, [RFC3291]. The + InetAutonomousSystemsNumber TEXTUAL-CONVENTION + has a SYNTAX of Unsigned32, whereas this TC + has a SYNTAX of OCTET STRING (SIZE (4)). + Both TCs represent an autonomous system number + but use different syntaxes to do so." + SYNTAX OCTET STRING (SIZE (4)) + + TeHopAddressUnnum ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents an unnumbered interface: + + octets contents encoding + 1-4 unnumbered interface network-byte order + + The corresponding TeHopAddressType value is + unnum(5)." + SYNTAX OCTET STRING(SIZE(4)) + +END diff --git a/mibs/ietf/MPLS-TE-STD-MIB b/mibs/ietf/MPLS-TE-STD-MIB new file mode 100644 index 0000000..15694f1 --- /dev/null +++ b/mibs/ietf/MPLS-TE-STD-MIB @@ -0,0 +1,2631 @@ +MPLS-TE-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, Counter32, Counter64, TimeTicks, + zeroDotZero + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TruthValue, RowStatus, RowPointer, StorageType, + TimeStamp + FROM SNMPv2-TC -- [RFC2579] + InterfaceIndexOrZero, ifGeneralInformationGroup, + + + + ifCounterDiscontinuityGroup + FROM IF-MIB -- [RFC2863] + mplsStdMIB, MplsBitRate, MplsBurstSize, MplsLSPID, + MplsTunnelIndex, MplsTunnelInstanceIndex, + MplsTunnelAffinity, MplsExtendedTunnelId, MplsPathIndex, + MplsPathIndexOrZero, MplsOwner, TeHopAddressType, + TeHopAddress, TeHopAddressAS, TeHopAddressUnnum + FROM MPLS-TC-STD-MIB -- [RFC3811] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + IndexIntegerNextFree + FROM DIFFSERV-MIB -- [RFC3289] + InetAddressPrefixLength + FROM INET-ADDRESS-MIB -- [RFC3291] + ; + +mplsTeStdMIB MODULE-IDENTITY + LAST-UPDATED + "200406030000Z" -- June 3, 2004 + ORGANIZATION + "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Cheenu Srinivasan + Bloomberg L.P. + Email: cheenu@bloomberg.net + + Arun Viswanathan + Force10 Networks, Inc. + Email: arunv@force10networks.com + + Thomas D. Nadeau + Cisco Systems, Inc. + Email: tnadeau@cisco.com + + Comments about this document should be emailed + directly to the MPLS working group mailing list at + mpls@uu.net." + DESCRIPTION + "Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3812. For full legal notices see the RFC + itself or see: http://www.ietf.org/copyrights/ianamib.html + + This MIB module contains managed object definitions + for MPLS Traffic Engineering (TE) as defined in: + 1. Extensions to RSVP for LSP Tunnels, Awduche et + al, RFC 3209, December 2001 + 2. Constraint-Based LSP Setup using LDP, Jamoussi + + + + (Editor), RFC 3212, January 2002 + 3. Requirements for Traffic Engineering Over MPLS, + Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M., + and J. McManus, [RFC2702], September 1999" + + -- Revision history. + + REVISION + "200406030000Z" -- June 3, 2004 + DESCRIPTION + "Initial version issued as part of RFC 3812." + + ::= { mplsStdMIB 3 } + +-- Top level components of this MIB module. + +-- traps +mplsTeNotifications OBJECT IDENTIFIER ::= { mplsTeStdMIB 0 } +-- tables, scalars +mplsTeScalars OBJECT IDENTIFIER ::= { mplsTeStdMIB 1 } +mplsTeObjects OBJECT IDENTIFIER ::= { mplsTeStdMIB 2 } +-- conformance +mplsTeConformance OBJECT IDENTIFIER ::= { mplsTeStdMIB 3 } + + +-- MPLS Tunnel scalars. + +mplsTunnelConfigured OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of tunnels configured on this device. A + tunnel is considered configured if the + mplsTunnelRowStatus is active(1)." + ::= { mplsTeScalars 1 } + +mplsTunnelActive OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of tunnels active on this device. A + tunnel is considered active if the + mplsTunnelOperStatus is up(1)." + ::= { mplsTeScalars 2 } + +mplsTunnelTEDistProto OBJECT-TYPE + + + + SYNTAX BITS { + other (0), + ospf (1), + isis (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The traffic engineering distribution protocol(s) + used by this LSR. Note that an LSR may support more + than one distribution protocol simultaneously." + ::= { mplsTeScalars 3 } + +mplsTunnelMaxHops OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of hops that can be specified for + a tunnel on this device." + ::= { mplsTeScalars 4 } + +mplsTunnelNotificationMaxRate OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable indicates the maximum number of + notifications issued per second. If events occur + more rapidly, the implementation may simply fail to + emit these notifications during that period, or may + queue them until an appropriate time. A value of 0 + means no throttling is applied and events may be + notified at the rate at which they occur." + DEFVAL { 0 } + ::= { mplsTeScalars 5 } + +-- End of MPLS Tunnel scalars. + + +-- MPLS tunnel table. + +mplsTunnelIndexNext OBJECT-TYPE + SYNTAX IndexIntegerNextFree (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an unused value for + + + + mplsTunnelIndex, or a zero to indicate + that none exist. Negative values are not allowed, + as they do not correspond to valid values of + mplsTunnelIndex. + + Note that this object offers an unused value + for an mplsTunnelIndex value at the ingress + side of a tunnel. At other LSRs the value + of mplsTunnelIndex SHOULD be taken from the + value signaled by the MPLS signaling protocol. + " + ::= { mplsTeObjects 1 } + +mplsTunnelTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelTable allows new MPLS tunnels to be + created between an LSR and a remote endpoint, and + existing tunnels to be reconfigured or removed. + Note that only point-to-point tunnel segments are + supported, although multipoint-to-point and point- + to-multipoint connections are supported by an LSR + acting as a cross-connect. Each MPLS tunnel can + thus have one out-segment originating at this LSR + and/or one in-segment terminating at this LSR." + ::= { mplsTeObjects 2 } + +mplsTunnelEntry OBJECT-TYPE + SYNTAX MplsTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents an MPLS tunnel. + An entry can be created by a network administrator + or by an SNMP agent as instructed by an MPLS + signalling protocol. Whenever a new entry is + created with mplsTunnelIsIf set to true(1), then a + corresponding entry is created in ifTable as well + (see RFC 2863). The ifType of this entry is + mplsTunnel(150). + + A tunnel entry needs to be uniquely identified across + a MPLS network. Indices mplsTunnelIndex and + mplsTunnelInstance uniquely identify a tunnel on + the LSR originating the tunnel. To uniquely + identify a tunnel across an MPLS network requires + + + + index mplsTunnelIngressLSRId. The last index + mplsTunnelEgressLSRId is useful in identifying all + instances of a tunnel that terminate on the same + egress LSR." + REFERENCE + "1. RFC 2863 - The Interfaces Group MIB, McCloghrie, + K., and F. Kastenholtz, June 2000 " + INDEX { mplsTunnelIndex, + mplsTunnelInstance, + mplsTunnelIngressLSRId, + mplsTunnelEgressLSRId + } + ::= { mplsTunnelTable 1 } + +MplsTunnelEntry ::= SEQUENCE { + mplsTunnelIndex MplsTunnelIndex, + mplsTunnelInstance MplsTunnelInstanceIndex, + mplsTunnelIngressLSRId MplsExtendedTunnelId, + mplsTunnelEgressLSRId MplsExtendedTunnelId, + mplsTunnelName SnmpAdminString, + mplsTunnelDescr SnmpAdminString, + mplsTunnelIsIf TruthValue, + mplsTunnelIfIndex InterfaceIndexOrZero, + mplsTunnelOwner MplsOwner, + mplsTunnelRole INTEGER, + mplsTunnelXCPointer RowPointer, + mplsTunnelSignallingProto INTEGER, + mplsTunnelSetupPrio Integer32, + mplsTunnelHoldingPrio Integer32, + mplsTunnelSessionAttributes BITS, + mplsTunnelLocalProtectInUse TruthValue, + mplsTunnelResourcePointer RowPointer, + mplsTunnelPrimaryInstance MplsTunnelInstanceIndex, + mplsTunnelInstancePriority Unsigned32, + mplsTunnelHopTableIndex MplsPathIndexOrZero, + mplsTunnelPathInUse MplsPathIndexOrZero, + mplsTunnelARHopTableIndex MplsPathIndexOrZero, + mplsTunnelCHopTableIndex MplsPathIndexOrZero, + mplsTunnelIncludeAnyAffinity MplsTunnelAffinity, + mplsTunnelIncludeAllAffinity MplsTunnelAffinity, + mplsTunnelExcludeAnyAffinity MplsTunnelAffinity, + mplsTunnelTotalUpTime TimeTicks, + mplsTunnelInstanceUpTime TimeTicks, + mplsTunnelPrimaryUpTime TimeTicks, + mplsTunnelPathChanges Counter32, + mplsTunnelLastPathChange TimeTicks, + mplsTunnelCreationTime TimeStamp, + mplsTunnelStateTransitions Counter32, + + + + mplsTunnelAdminStatus INTEGER, + mplsTunnelOperStatus INTEGER, + mplsTunnelRowStatus RowStatus, + mplsTunnelStorageType StorageType + } + +mplsTunnelIndex OBJECT-TYPE + SYNTAX MplsTunnelIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies a set of tunnel instances + between a pair of ingress and egress LSRs. + Managers should obtain new values for row + creation in this table by reading + mplsTunnelIndexNext. When + the MPLS signalling protocol is rsvp(2) this value + SHOULD be equal to the value signaled in the + Tunnel Id of the Session object. When the MPLS + signalling protocol is crldp(3) this value + SHOULD be equal to the value signaled in the + LSP ID." + ::= { mplsTunnelEntry 1 } + +mplsTunnelInstance OBJECT-TYPE + SYNTAX MplsTunnelInstanceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies a particular instance of a + tunnel between a pair of ingress and egress LSRs. + It is useful to identify multiple instances of + tunnels for the purposes of backup and parallel + tunnels. When the MPLS signaling protocol is + rsvp(2) this value SHOULD be equal to the LSP Id + of the Sender Template object. When the signaling + protocol is crldp(3) there is no equivalent + signaling object." + ::= { mplsTunnelEntry 2 } + +mplsTunnelIngressLSRId OBJECT-TYPE + SYNTAX MplsExtendedTunnelId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identity of the ingress LSR associated with this + tunnel instance. When the MPLS signalling protocol + is rsvp(2) this value SHOULD be equal to the Tunnel + + + + Sender Address in the Sender Template object and MAY + be equal to the Extended Tunnel Id field in the + SESSION object. When the MPLS signalling protocol is + crldp(3) this value SHOULD be equal to the Ingress + LSR Router ID field in the LSPID TLV object." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001 + 2. Constraint-Based LSP Setup using LDP, Jamoussi + (Editor), RFC 3212, January 2002" + ::= { mplsTunnelEntry 3 } + +mplsTunnelEgressLSRId OBJECT-TYPE + SYNTAX MplsExtendedTunnelId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identity of the egress LSR associated with this + tunnel instance." + ::= { mplsTunnelEntry 4 } + +mplsTunnelName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The canonical name assigned to the tunnel. This name + can be used to refer to the tunnel on the LSR's + console port. If mplsTunnelIsIf is set to true + then the ifName of the interface corresponding to + this tunnel should have a value equal to + mplsTunnelName. Also see the description of ifName + in RFC 2863." + REFERENCE + "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., + and F. Kastenholtz, June 2000" + DEFVAL {""} + ::= { mplsTunnelEntry 5 } + +mplsTunnelDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual string containing information about the + tunnel. If there is no description this object + contains a zero length string. This object is may + not be signaled by MPLS signaling protocols, + + + + consequentally the value of this object at transit + and egress LSRs MAY be automatically generated or + absent." + DEFVAL {""} + ::= { mplsTunnelEntry 6 } + +mplsTunnelIsIf OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes whether or not this tunnel corresponds to an + interface represented in the interfaces group + table. Note that if this variable is set to true + then the ifName of the interface corresponding to + this tunnel should have a value equal to + mplsTunnelName. Also see the description of ifName + in RFC 2863. This object is meaningful only at the + ingress and egress LSRs." + REFERENCE + "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., + and F. Kastenholtz, June 2000" + DEFVAL { false } + ::= { mplsTunnelEntry 7 } + +mplsTunnelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelIsIf is set to true, then this value + contains the LSR-assigned ifIndex which corresponds + to an entry in the interfaces table. Otherwise + this variable should contain the value of zero + indicating that a valid ifIndex was not assigned to + this tunnel interface." + REFERENCE + "RFC 2863 - The Interfaces Group MIB, McCloghrie, K., + and F. Kastenholtz, June 2000" + DEFVAL { 0 } + ::= { mplsTunnelEntry 8 } + +mplsTunnelOwner OBJECT-TYPE + SYNTAX MplsOwner + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes the entity that created and is responsible + + + + for managing this tunnel. This column is + automatically filled by the agent on creation of a + row." + ::= { mplsTunnelEntry 9 } + +mplsTunnelRole OBJECT-TYPE + SYNTAX INTEGER { head(1), + transit(2), + tail(3), + headTail(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value signifies the role that this tunnel + entry/instance represents. This value MUST be set + to head(1) at the originating point of the tunnel. + This value MUST be set to transit(2) at transit + points along the tunnel, if transit points are + supported. This value MUST be set to tail(3) at the + terminating point of the tunnel if tunnel tails are + supported. + + The value headTail(4) is provided for tunnels that + begin and end on the same LSR." + DEFVAL { head } + ::= { mplsTunnelEntry 10 } + +mplsTunnelXCPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable points to a row in the mplsXCTable. + This table identifies the segments that compose + this tunnel, their characteristics, and + relationships to each other. A value of zeroDotZero + indicates that no LSP has been associated with this + tunnel yet." + REFERENCE + "Srinivasan, C., Viswanathan, A., and T. Nadeau, + Multiprotocol Label Switching (MPLS) Label Switching + Router (LSR) Management Information Base (MIB), RFC 3813, + June 2004" + DEFVAL { zeroDotZero } + ::= { mplsTunnelEntry 11 } + +mplsTunnelSignallingProto OBJECT-TYPE + SYNTAX INTEGER { + + + + none(1), + rsvp(2), + crldp(3), + other(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The signalling protocol, if any, used to setup this + tunnel." + DEFVAL { none } + ::= { mplsTunnelEntry 12 } + +mplsTunnelSetupPrio OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the setup priority of this tunnel." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001 + 2. Constraint-Based LSP Setup using LDP, Jamoussi + (Editor), RFC 3212, January 2002" + DEFVAL { 0 } + ::= { mplsTunnelEntry 13 } + +mplsTunnelHoldingPrio OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the holding priority for this tunnel." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001 + + 2. Constraint-Based LSP Setup using LDP, Jamoussi + (Editor), RFC 3212, January 2002" + DEFVAL { 0 } + ::= { mplsTunnelEntry 14 } + +mplsTunnelSessionAttributes OBJECT-TYPE + SYNTAX BITS { + fastReroute (0), + mergingPermitted (1), + isPersistent (2), + isPinned (3), + + + + recordRoute(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This bit mask indicates optional session values for + this tunnel. The following describes these bit + fields: + + fastRerouteThis flag indicates that the any tunnel + hop may choose to reroute this tunnel without + tearing it down. This flag permits transit routers + to use a local repair mechanism which may result in + violation of the explicit routing of this tunnel. + When a fault is detected on an adjacent downstream + link or node, a transit router can re-route traffic + for fast service restoration. + + mergingPermitted This flag permits transit routers + to merge this session with other RSVP sessions for + the purpose of reducing resource overhead on + downstream transit routers, thereby providing + better network scaling. + + isPersistent Indicates whether this tunnel should + be restored automatically after a failure occurs. + + isPinned This flag indicates whether the loose- + routed hops of this tunnel are to be pinned. + + recordRouteThis flag indicates whether or not the + signalling protocol should remember the tunnel path + after it has been signaled." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001." + ::= { mplsTunnelEntry 15 } + +mplsTunnelLocalProtectInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates that the local repair mechanism is in use + to maintain this tunnel (usually in the face of an + outage of the link it was previously routed over)." + DEFVAL { false } + ::= { mplsTunnelEntry 16 } + + + +mplsTunnelResourcePointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable represents a pointer to the traffic + parameter specification for this tunnel. This + value may point at an entry in the + mplsTunnelResourceEntry to indicate which + mplsTunnelResourceEntry is to be assigned to this + LSP instance. This value may optionally point at + an externally defined traffic parameter + specification table. A value of zeroDotZero + indicates best-effort treatment. By having the + same value of this object, two or more LSPs can + indicate resource sharing." + DEFVAL { zeroDotZero } + ::= { mplsTunnelEntry 17 } + +mplsTunnelPrimaryInstance OBJECT-TYPE + SYNTAX MplsTunnelInstanceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the instance index of the primary instance + of this tunnel. More details of the definition of + tunnel instances and the primary tunnel instance + can be found in the description of the TEXTUAL-CONVENTION + MplsTunnelInstanceIndex." + DEFVAL { 0 } + ::= { mplsTunnelEntry 18 } + +mplsTunnelInstancePriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value indicates which priority, in descending + order, with 0 indicating the lowest priority, + within a group of tunnel instances. A group of + tunnel instances is defined as a set of LSPs with + the same mplsTunnelIndex in this table, but with a + different mplsTunnelInstance. Tunnel instance + priorities are used to denote the priority at which + a particular tunnel instance will supercede + another. Instances of tunnels containing the same + mplsTunnelInstancePriority will be used for load + sharing." + + + + DEFVAL { 0 } + ::= { mplsTunnelEntry 19 } + +mplsTunnelHopTableIndex OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Index into the mplsTunnelHopTable entry that + specifies the explicit route hops for this tunnel. + This object is meaningful only at the head-end of + the tunnel." + DEFVAL { 0 } + ::= { mplsTunnelEntry 20 } + +mplsTunnelPathInUse OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value denotes the configured path that was + chosen for this tunnel. This value reflects the + secondary index into mplsTunnelHopTable. This path + may not exactly match the one in + mplsTunnelARHopTable due to the fact that some CSPF + modification may have taken place. See + mplsTunnelARHopTable for the actual path being + taken by the tunnel. A value of zero denotes that + no path is currently in use or available." + DEFVAL { 0 } + ::= { mplsTunnelEntry 21 } + +mplsTunnelARHopTableIndex OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Index into the mplsTunnelARHopTable entry that + specifies the actual hops traversed by the tunnel. + This is automatically updated by the agent when the + actual hops becomes available." + DEFVAL { 0 } + ::= { mplsTunnelEntry 22 } + +mplsTunnelCHopTableIndex OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Index into the mplsTunnelCHopTable entry that + specifies the computed hops traversed by the + tunnel. This is automatically updated by the agent + when computed hops become available or when + computed hops get modified." + DEFVAL { 0 } + ::= { mplsTunnelEntry 23 } + +mplsTunnelIncludeAnyAffinity OBJECT-TYPE + SYNTAX MplsTunnelAffinity + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A link satisfies the include-any constraint if and + only if the constraint is zero, or the link and the + constraint have a resource class in common." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001." + ::= { mplsTunnelEntry 24 } + +mplsTunnelIncludeAllAffinity OBJECT-TYPE + SYNTAX MplsTunnelAffinity + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A link satisfies the include-all constraint if and + only if the link contains all of the administrative + groups specified in the constraint." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001." + ::= { mplsTunnelEntry 25 } + +mplsTunnelExcludeAnyAffinity OBJECT-TYPE + SYNTAX MplsTunnelAffinity + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A link satisfies the exclude-any constraint if and + only if the link contains none of the + administrative groups specified in the constraint." + REFERENCE + "1. RSVP-TE: Extensions to RSVP for LSP Tunnels, + Awduche et al, RFC 3209, December 2001." + DEFVAL { 0 } + ::= { mplsTunnelEntry 26 } + + + +mplsTunnelTotalUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value represents the aggregate up time for all + instances of this tunnel, if available. If this + value is unavailable, it MUST return a value of 0." + ::= { mplsTunnelEntry 27 } + +mplsTunnelInstanceUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the total time that this + tunnel instance's operStatus has been Up(1)." + ::= { mplsTunnelEntry 28 } + +mplsTunnelPrimaryUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the total time the primary instance of + this tunnel has been active. The primary instance + of this tunnel is defined in + mplsTunnelPrimaryInstance." + ::= { mplsTunnelEntry 29 } + +mplsTunnelPathChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of times the actual path for + this tunnel instance has changed." + ::= { mplsTunnelEntry 30 } + +mplsTunnelLastPathChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the time since the last change to the + actual path for this tunnel instance." + ::= { mplsTunnelEntry 31 } + + + + +mplsTunnelCreationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the value of SysUpTime when the first + instance of this tunnel came into existence. + That is, when the value of mplsTunnelOperStatus + was first set to up(1)." + ::= { mplsTunnelEntry 32 } + +mplsTunnelStateTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the number of times the state + (mplsTunnelOperStatus) of this tunnel instance has + changed." + ::= { mplsTunnelEntry 33 } + +mplsTunnelAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + -- ready to pass packets + up(1), + down(2), + -- in some test mode + testing(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the desired operational status of this + tunnel." + ::= { mplsTunnelEntry 34 } + +mplsTunnelOperStatus OBJECT-TYPE + SYNTAX INTEGER { + -- ready to pass packets + up(1), + down(2), + -- in some test mode + testing(3), + -- status cannot be determined + unknown(4), + dormant(5), + -- some component is missing + notPresent(6), + + + + -- down due to the state of + -- lower layer interfaces + lowerLayerDown(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the actual operational status of this + tunnel, which is typically but not limited to, a + function of the state of individual segments of + this tunnel." + ::= { mplsTunnelEntry 35 } + +mplsTunnelRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified by the agent except + mplsTunnelAdminStatus, mplsTunnelRowStatus and + mplsTunnelStorageType." + ::= { mplsTunnelEntry 36 } + +mplsTunnelStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this tunnel entry. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar + objects in the row." + DEFVAL { volatile } + ::= { mplsTunnelEntry 37 } + +-- End of mplsTunnelTable + +mplsTunnelHopListIndexNext OBJECT-TYPE + SYNTAX MplsPathIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains an appropriate value to be used + for mplsTunnelHopListIndex when creating entries in + the mplsTunnelHopTable. If the number of + unassigned entries is exhausted, a retrieval + + + + operation will return a value of 0. This object + may also return a value of 0 when the LSR is unable + to accept conceptual row creation, for example, if + the mplsTunnelHopTable is implemented as read-only. + To obtain the value of mplsTunnelHopListIndex for a + new entry in the mplsTunnelHopTable, the manager + issues a management protocol retrieval operation to + obtain the current value of mplsTunnelHopIndex. + + When the SET is performed to create a row in the + mplsTunnelHopTable, the Command Responder (agent) + must determine whether the value is indeed still + unused; Two Network Management Applications may + attempt to create a row (configuration entry) + simultaneously and use the same value. If it is + currently unused, the SET succeeds and the Command + Responder (agent) changes the value of this object, + according to an implementation-specific algorithm. + If the value is in use, however, the SET fails. The + Network Management Application must then re-read + this variable to obtain a new usable value." + ::= { mplsTeObjects 3 } + +mplsTunnelHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelHopTable is used to indicate the hops, + strict or loose, for an instance of an MPLS tunnel + defined in mplsTunnelTable, when it is established + via signalling, for the outgoing direction of the + tunnel. Thus at a transit LSR, this table contains + the desired path of the tunnel from this LSR + onwards. Each row in this table is indexed by + mplsTunnelHopListIndex which corresponds to a group + of hop lists or path options. Each row also has a + secondary index mplsTunnelHopIndex, which indicates + a group of hops (also known as a path option). + Finally, the third index, mplsTunnelHopIndex + indicates the specific hop information for a path + option. In case we want to specify a particular + interface on the originating LSR of an outgoing + tunnel by which we want packets to exit the LSR, + we specify this as the first hop for this tunnel in + mplsTunnelHopTable." + ::= { mplsTeObjects 4 } + + + + +mplsTunnelHopEntry OBJECT-TYPE + SYNTAX MplsTunnelHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a tunnel hop. An + entry is created by a network administrator for + signaled ERLSP set up by an MPLS signalling + protocol." + INDEX { + mplsTunnelHopListIndex, + mplsTunnelHopPathOptionIndex, + mplsTunnelHopIndex + } + ::= { mplsTunnelHopTable 1 } + +MplsTunnelHopEntry ::= SEQUENCE { + mplsTunnelHopListIndex MplsPathIndex, + mplsTunnelHopPathOptionIndex MplsPathIndex, + mplsTunnelHopIndex MplsPathIndex, + mplsTunnelHopAddrType TeHopAddressType, + mplsTunnelHopIpAddr TeHopAddress, + mplsTunnelHopIpPrefixLen InetAddressPrefixLength, + mplsTunnelHopAsNumber TeHopAddressAS, + mplsTunnelHopAddrUnnum TeHopAddressUnnum, + mplsTunnelHopLspId MplsLSPID, + mplsTunnelHopType INTEGER, + mplsTunnelHopInclude TruthValue, + mplsTunnelHopPathOptionName SnmpAdminString, + mplsTunnelHopEntryPathComp INTEGER, + mplsTunnelHopRowStatus RowStatus, + mplsTunnelHopStorageType StorageType + } + +mplsTunnelHopListIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Primary index into this table identifying a + particular explicit route object." + ::= { mplsTunnelHopEntry 1 } + +mplsTunnelHopPathOptionIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Secondary index into this table identifying a + particular group of hops representing a particular + configured path. This is otherwise known as a path + option." + ::= { mplsTunnelHopEntry 2 } + +mplsTunnelHopIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Tertiary index into this table identifying a + particular hop." + ::= { mplsTunnelHopEntry 3 } + +mplsTunnelHopAddrType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Hop Address Type of this tunnel hop. + + The value of this object cannot be changed + if the value of the corresponding + mplsTunnelHopRowStatus object is 'active'. + + Note that lspid(5) is a valid option only + for tunnels signaled via CRLDP. + " + DEFVAL { ipv4 } + ::= { mplsTunnelHopEntry 4 } + +mplsTunnelHopIpAddr OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Tunnel Hop Address for this tunnel hop. + + The type of this address is determined by the + value of the corresponding mplsTunnelHopAddrType. + + The value of this object cannot be changed + if the value of the corresponding + mplsTunnelHopRowStatus object is 'active'. + " + DEFVAL { '00000000'h } -- IPv4 address 0.0.0.0 + ::= { mplsTunnelHopEntry 5 } + + mplsTunnelHopIpPrefixLen OBJECT-TYPE + + + + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION "If mplsTunnelHopAddrType is set to ipv4(1) or + ipv6(2), then this value will contain an + appropriate prefix length for the IP address in + object mplsTunnelHopIpAddr. Otherwise this value + is irrelevant and should be ignored. + " + DEFVAL { 32 } + ::= { mplsTunnelHopEntry 6 } + +mplsTunnelHopAsNumber OBJECT-TYPE + SYNTAX TeHopAddressAS + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsTunnelHopAddrType is set to asnumber(3), then + this value will contain the AS number of this hop. + Otherwise the agent should set this object to zero- + length string and the manager should ignore this." + ::= { mplsTunnelHopEntry 7 } + +mplsTunnelHopAddrUnnum OBJECT-TYPE + SYNTAX TeHopAddressUnnum + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsTunnelHopAddrType is set to unnum(4), then + this value will contain the interface identifier of + the unnumbered interface for this hop. This object + should be used in conjunction with + mplsTunnelHopIpAddress which would contain the LSR + Router ID in this case. Otherwise the agent should + set this object to zero-length string and the + manager should ignore this." + ::= { mplsTunnelHopEntry 8 } + +mplsTunnelHopLspId OBJECT-TYPE + SYNTAX MplsLSPID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If mplsTunnelHopAddrType is set to lspid(5), then + this value will contain the LSPID of a tunnel of + this hop. The present tunnel being configured is + tunneled through this hop (using label stacking). + This object is otherwise insignificant and should + + + + contain a value of 0 to indicate this fact." + ::= { mplsTunnelHopEntry 9 } + +mplsTunnelHopType OBJECT-TYPE + SYNTAX INTEGER { + strict(1), + loose(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Denotes whether this tunnel hop is routed in a + strict or loose fashion. The value of this object + has no meaning if the mplsTunnelHopInclude object + is set to 'false'." + ::= { mplsTunnelHopEntry 10 } + +mplsTunnelHopInclude OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this value is set to true, then this indicates + that this hop must be included in the tunnel's + path. If this value is set to 'false', then this hop + must be avoided when calculating the path for this + tunnel. The default value of this object is 'true', + so that by default all indicated hops are included + in the CSPF path computation. If this object is set + to 'false' the value of mplsTunnelHopType should be + ignored." + DEFVAL { true } + ::= { mplsTunnelHopEntry 11 } + +mplsTunnelHopPathOptionName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The description of this series of hops as they + relate to the specified path option. The + value of this object SHOULD be the same for + each hop in the series that comprises a + path option." + ::= { mplsTunnelHopEntry 12 } + +mplsTunnelHopEntryPathComp OBJECT-TYPE + SYNTAX INTEGER { + + + + dynamic(1), -- CSPF computed + explicit(2) -- strict hop + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this value is set to dynamic, then the user + should only specify the source and destination of + the path and expect that the CSPF will calculate + the remainder of the path. If this value is set to + explicit, the user should specify the entire path + for the tunnel to take. This path may contain + strict or loose hops. Each hop along a specific + path SHOULD have this object set to the same value" + ::= { mplsTunnelHopEntry 13 } + +mplsTunnelHopRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified by the agent except + mplsTunnelHopRowStatus and + mplsTunnelHopStorageType." + ::= { mplsTunnelHopEntry 14 } + +mplsTunnelHopStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this Hop entry. Conceptual + rows having the value 'permanent' need not + allow write-access to any columnar objects + in the row." + DEFVAL { volatile } + ::= { mplsTunnelHopEntry 15 } + +-- End of mplsTunnelHopTable + +-- Begin of mplsTunnelResourceTable + +mplsTunnelResourceIndexNext OBJECT-TYPE + SYNTAX Unsigned32 (0.. 2147483647) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object contains the next appropriate value to + be used for mplsTunnelResourceIndex when creating + entries in the mplsTunnelResourceTable. If the + number of unassigned entries is exhausted, a + retrieval operation will return a value of 0. This + object may also return a value of 0 when the LSR is + unable to accept conceptual row creation, for + example, if the mplsTunnelTable is implemented as + read-only. To obtain the mplsTunnelResourceIndex + value for a new entry, the manager must first issue + a management protocol retrieval operation to obtain + the current value of this object. + + When the SET is performed to create a row in the + mplsTunnelResourceTable, the Command Responder + (agent) must determine whether the value is indeed + still unused; Two Network Management Applications + may attempt to create a row (configuration entry) + simultaneously and use the same value. If it is + currently unused, the SET succeeds and the Command + Responder (agent) changes the value of this object, + according to an implementation-specific algorithm. + If the value is in use, however, the SET fails. The + Network Management Application must then re-read + this variable to obtain a new usable value." + ::= { mplsTeObjects 5 } + +mplsTunnelResourceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelResourceTable allows a manager to + specify which resources are desired for an MPLS + tunnel. This table also allows several tunnels to + point to a single entry in this table, implying + that these tunnels should share resources." + ::= { mplsTeObjects 6 } + +mplsTunnelResourceEntry OBJECT-TYPE + SYNTAX MplsTunnelResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a set of resources + for an MPLS tunnel. An entry can be created by a + + + + network administrator or by an SNMP agent as + instructed by any MPLS signalling protocol. + An entry in this table referenced by a tunnel instance + with zero mplsTunnelInstance value indicates a + configured set of resource parameter. An entry + referenced by a tunnel instance with a non-zero + mplsTunnelInstance reflects the in-use resource + parameters for the tunnel instance which may have + been negotiated or modified by the MPLS signaling + protocols." + INDEX { mplsTunnelResourceIndex } + ::= { mplsTunnelResourceTable 1 } + +MplsTunnelResourceEntry ::= SEQUENCE { + mplsTunnelResourceIndex Unsigned32, + mplsTunnelResourceMaxRate MplsBitRate, + mplsTunnelResourceMeanRate MplsBitRate, + mplsTunnelResourceMaxBurstSize MplsBurstSize, + mplsTunnelResourceMeanBurstSize MplsBurstSize, + mplsTunnelResourceExBurstSize MplsBurstSize, + mplsTunnelResourceFrequency INTEGER, + mplsTunnelResourceWeight Unsigned32, + mplsTunnelResourceRowStatus RowStatus, + mplsTunnelResourceStorageType StorageType + } + +mplsTunnelResourceIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies this row." + ::= { mplsTunnelResourceEntry 1 } + +mplsTunnelResourceMaxRate OBJECT-TYPE + SYNTAX MplsBitRate + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum rate in bits/second. Note that setting + mplsTunnelResourceMaxRate, + mplsTunnelResourceMeanRate, and + mplsTunnelResourceMaxBurstSize to 0 indicates best- + effort treatment." + ::= { mplsTunnelResourceEntry 2 } + +mplsTunnelResourceMeanRate OBJECT-TYPE + + + + SYNTAX MplsBitRate + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is copied into an instance of + mplsTrafficParamMeanRate in the + mplsTrafficParamTable. The OID of this table entry + is then copied into the corresponding + mplsInSegmentTrafficParamPtr." + ::= { mplsTunnelResourceEntry 3 } + +mplsTunnelResourceMaxBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum burst size in bytes." + ::= { mplsTunnelResourceEntry 4 } + +mplsTunnelResourceMeanBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mean burst size in bytes. The implementations + which do not implement this variable must return + a noSuchObject exception for this object and must + not allow a user to set this object." + ::= { mplsTunnelResourceEntry 5 } + +mplsTunnelResourceExBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Excess burst size in bytes. The implementations + which do not implement this variable must return + noSuchObject exception for this object and must + not allow a user to set this value." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelResourceEntry 6 } + +mplsTunnelResourceFrequency OBJECT-TYPE + + + + SYNTAX INTEGER { unspecified(1), + frequent(2), + veryFrequent(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The granularity of the availability of committed + rate. The implementations which do not implement + this variable must return unspecified(1) for this + value and must not allow a user to set this value." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelResourceEntry 7 } + +mplsTunnelResourceWeight OBJECT-TYPE + SYNTAX Unsigned32(0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The relative weight for using excess bandwidth above + its committed rate. The value of 0 means that + weight is not applicable for the CR-LSP." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelResourceEntry 8 } + +mplsTunnelResourceRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified by the agent except + mplsTunnelResourceRowStatus and + mplsTunnelResourceStorageType." + ::= { mplsTunnelResourceEntry 9 } + +mplsTunnelResourceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this Hop entry. Conceptual + rows having the value 'permanent' need not + allow write-access to any columnar objects + + + + in the row." + DEFVAL { volatile } + + ::= { mplsTunnelResourceEntry 10 } + + +-- End mplsTunnelResourceTable +-- Tunnel Actual Route Hop table. + +mplsTunnelARHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelARHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelARHopTable is used to indicate the + hops for an MPLS tunnel defined in mplsTunnelTable, + as reported by the MPLS signalling protocol. Thus at + a transit LSR, this table (if the table is supported + and if the signaling protocol is recording actual + route information) contains the actual route of the + whole tunnel. If the signaling protocol is not + recording the actual route, this table MAY report + the information from the mplsTunnelHopTable or the + mplsTunnelCHopTable. + + Each row in this table is indexed by + mplsTunnelARHopListIndex. Each row also has a + secondary index mplsTunnelARHopIndex, corresponding + to the next hop that this row corresponds to. + + Please note that since the information necessary to + build entries within this table is not provided by + some MPLS signalling protocols, implementation of + this table is optional. Furthermore, since the + information in this table is actually provided by + the MPLS signalling protocol after the path has + been set-up, the entries in this table are provided + only for observation, and hence, all variables in + this table are accessible exclusively as read- + only. + + Note also that the contents of this table may change + while it is being read because of re-routing + activities. A network administrator may verify that + the actual route read is consistent by reference to + the mplsTunnelLastPathChange object." + ::= { mplsTeObjects 7 } + + + + +mplsTunnelARHopEntry OBJECT-TYPE + SYNTAX MplsTunnelARHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a tunnel hop. An + entry is created by the agent for signaled ERLSP + set up by an MPLS signalling protocol." + INDEX { mplsTunnelARHopListIndex, mplsTunnelARHopIndex } + ::= { mplsTunnelARHopTable 1 } + +MplsTunnelARHopEntry ::= SEQUENCE { + mplsTunnelARHopListIndex MplsPathIndex, + mplsTunnelARHopIndex MplsPathIndex, + mplsTunnelARHopAddrType TeHopAddressType, + mplsTunnelARHopIpAddr TeHopAddress, + mplsTunnelARHopAddrUnnum TeHopAddressUnnum, + mplsTunnelARHopLspId MplsLSPID + } + +mplsTunnelARHopListIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Primary index into this table identifying a + particular recorded hop list." + ::= { mplsTunnelARHopEntry 1 } + +mplsTunnelARHopIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index into this table identifying the + particular hop." + ::= { mplsTunnelARHopEntry 2 } + +mplsTunnelARHopAddrType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Hop Address Type of this tunnel hop. + + Note that lspid(5) is a valid option only + for tunnels signaled via CRLDP." + DEFVAL { ipv4 } + + + + ::= { mplsTunnelARHopEntry 3 } + +mplsTunnelARHopIpAddr OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Tunnel Hop Address for this tunnel hop. + + The type of this address is determined by the + value of the corresponding mplsTunnelARHopAddrType. + If mplsTunnelARHopAddrType is set to unnum(4), + then this value contains the LSR Router ID of the + unnumbered interface. Otherwise the agent SHOULD + set this object to the zero-length string and the + manager should ignore this object." + DEFVAL { '00000000'h } -- IPv4 address 0.0.0.0 + ::= { mplsTunnelARHopEntry 4 } + +mplsTunnelARHopAddrUnnum OBJECT-TYPE + SYNTAX TeHopAddressUnnum + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelARHopAddrType is set to unnum(4), then + this value will contain the interface identifier of + the unnumbered interface for this hop. This object + should be used in conjunction with + mplsTunnelARHopIpAddr which would contain the LSR + Router ID in this case. Otherwise the agent should + set this object to zero-length string and the + manager should ignore this." + ::= { mplsTunnelARHopEntry 5 } + +mplsTunnelARHopLspId OBJECT-TYPE + SYNTAX MplsLSPID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelARHopAddrType is set to lspid(5), then + this value will contain the LSP ID of this hop. + This object is otherwise insignificant and should + contain a value of 0 to indicate this fact." + ::= { mplsTunnelARHopEntry 6 } + +-- End of mplsTunnelARHopTable + + + + + +-- Tunnel Computed Hop table. + +mplsTunnelCHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelCHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelCHopTable is used to indicate the + hops, strict or loose, for an MPLS tunnel defined + in mplsTunnelTable, as computed by a constraint- + based routing protocol, based on the + mplsTunnelHopTable for the outgoing direction of + the tunnel. Thus at a transit LSR, this table (if + the table is supported) MAY contain the path + computed by the CSPF engine on (or on behalf of) + this LSR. Each row in this table is indexed by + mplsTunnelCHopListIndex. Each row also has a + secondary index mplsTunnelCHopIndex, corresponding + to the next hop that this row corresponds to. In + case we want to specify a particular interface on + the originating LSR of an outgoing tunnel by which + we want packets to exit the LSR, we specify this as + the first hop for this tunnel in + mplsTunnelCHopTable. + + Please note that since the information necessary to + build entries within this table may not be + supported by some LSRs, implementation of this + table is optional. Furthermore, since the + information in this table describes the path + computed by the CSPF engine the entries in this + table are read-only." + ::= { mplsTeObjects 8 } + +mplsTunnelCHopEntry OBJECT-TYPE + SYNTAX MplsTunnelCHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a tunnel hop. An + entry in this table is created by a path + computation engine using CSPF techniques applied to + the information collected by routing protocols and + the hops specified in the corresponding + mplsTunnelHopTable." + INDEX { mplsTunnelCHopListIndex, mplsTunnelCHopIndex } + ::= { mplsTunnelCHopTable 1 } + + + + +MplsTunnelCHopEntry ::= SEQUENCE { + mplsTunnelCHopListIndex MplsPathIndex, + mplsTunnelCHopIndex MplsPathIndex, + mplsTunnelCHopAddrType TeHopAddressType, + mplsTunnelCHopIpAddr TeHopAddress, + mplsTunnelCHopIpPrefixLen InetAddressPrefixLength, + mplsTunnelCHopAsNumber TeHopAddressAS, + mplsTunnelCHopAddrUnnum TeHopAddressUnnum, + mplsTunnelCHopLspId MplsLSPID, + mplsTunnelCHopType INTEGER + } + +mplsTunnelCHopListIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Primary index into this table identifying a + particular computed hop list." + ::= { mplsTunnelCHopEntry 1 } + +mplsTunnelCHopIndex OBJECT-TYPE + SYNTAX MplsPathIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Secondary index into this table identifying the + particular hop." + ::= { mplsTunnelCHopEntry 2 } + +mplsTunnelCHopAddrType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Hop Address Type of this tunnel hop. + + Note that lspid(5) is a valid option only + for tunnels signaled via CRLDP." + DEFVAL { ipv4 } + ::= { mplsTunnelCHopEntry 3 } + +mplsTunnelCHopIpAddr OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Tunnel Hop Address for this tunnel hop. + + + + + The type of this address is determined by the + value of the corresponding mplsTunnelCHopAddrType. + + If mplsTunnelCHopAddrType is set to unnum(4), then + this value will contain the LSR Router ID of the + unnumbered interface. Otherwise the agent should + set this object to the zero-length string and the + manager SHOULD ignore this object." + DEFVAL { '00000000'h } -- IPv4 address 0.0.0.0 + ::= { mplsTunnelCHopEntry 4 } + +mplsTunnelCHopIpPrefixLen OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelCHopAddrType is set to ipv4(1) or + ipv6(2), then this value will contain an + appropriate prefix length for the IP address in + object mplsTunnelCHopIpAddr. Otherwise this value + is irrelevant and should be ignored. + " + DEFVAL { 32 } + ::= { mplsTunnelCHopEntry 5 } + +mplsTunnelCHopAsNumber OBJECT-TYPE + SYNTAX TeHopAddressAS + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelCHopAddrType is set to asnumber(3), + then this value will contain the AS number of this + hop. Otherwise the agent should set this object to + zero-length string and the manager should ignore + this." + ::= { mplsTunnelCHopEntry 6 } + +mplsTunnelCHopAddrUnnum OBJECT-TYPE + SYNTAX TeHopAddressUnnum + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelCHopAddrType is set to unnum(4), then + this value will contain the unnumbered interface + identifier of this hop. This object should be used + in conjunction with mplsTunnelCHopIpAddr which + would contain the LSR Router ID in this case. + + + + Otherwise the agent should set this object to zero- + length string and the manager should ignore this." + ::= { mplsTunnelCHopEntry 7 } + +mplsTunnelCHopLspId OBJECT-TYPE + SYNTAX MplsLSPID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If mplsTunnelCHopAddrType is set to lspid(5), then + this value will contain the LSP ID of this hop. + This object is otherwise insignificant and should + contain a value of 0 to indicate this fact." + ::= { mplsTunnelCHopEntry 8 } + +mplsTunnelCHopType OBJECT-TYPE + SYNTAX INTEGER { strict(1), + loose(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Denotes whether this is tunnel hop is routed in a + strict or loose fashion." + ::= { mplsTunnelCHopEntry 9 } + +-- End of mplsTunnelCHopTable + + +-- MPLS Tunnel Performance Table. + +mplsTunnelPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides per-tunnel instance MPLS + performance information." + ::= { mplsTeObjects 9 } + +mplsTunnelPerfEntry OBJECT-TYPE + SYNTAX MplsTunnelPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created by the LSR for + every tunnel. Its is an extension to + mplsTunnelEntry." + + + + AUGMENTS { mplsTunnelEntry } + ::= { mplsTunnelPerfTable 1 } + +MplsTunnelPerfEntry ::= SEQUENCE { + mplsTunnelPerfPackets Counter32, + mplsTunnelPerfHCPackets Counter64, + mplsTunnelPerfErrors Counter32, + mplsTunnelPerfBytes Counter32, + mplsTunnelPerfHCBytes Counter64 + } + +mplsTunnelPerfPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets forwarded by the tunnel. + This object should represents the 32-bit + value of the least significant part of the + 64-bit value if both mplsTunnelPerfHCPackets + is returned." + ::= { mplsTunnelPerfEntry 1 } + +mplsTunnelPerfHCPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High capacity counter for number of packets + forwarded by the tunnel. " + ::= { mplsTunnelPerfEntry 2 } + +mplsTunnelPerfErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets dropped because of errors or for + other reasons." + ::= { mplsTunnelPerfEntry 3 } + +mplsTunnelPerfBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of bytes forwarded by the tunnel. + This object should represents the 32-bit + + + + value of the least significant part of the + 64-bit value if both mplsTunnelPerfHCBytes + is returned." + ::= { mplsTunnelPerfEntry 4 } + +mplsTunnelPerfHCBytes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "High capacity counter for number of bytes forwarded + by the tunnel." + ::= { mplsTunnelPerfEntry 5 } + +-- End of mplsTunnelPerfTable + + +-- CR-LDP Tunnel Resource Table + +mplsTunnelCRLDPResTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsTunnelCRLDPResEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mplsTunnelCRLDPResTable allows a manager to + specify which CR-LDP-specific resources are desired + for an MPLS tunnel if that tunnel is signaled using + CR-LDP. Note that these attributes are in addition + to those specified in mplsTunnelResourceTable. This + table also allows several tunnels to point to a + single entry in this table, implying that these + tunnels should share resources." + ::= { mplsTeObjects 10 } + +mplsTunnelCRLDPResEntry OBJECT-TYPE + SYNTAX MplsTunnelCRLDPResEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table represents a set of resources + for an MPLS tunnel established using CRLDP + (mplsTunnelSignallingProto equal to crldp (3)). An + entry can be created by a network administrator or + by an SNMP agent as instructed by any MPLS + signalling protocol." + INDEX { mplsTunnelResourceIndex } + ::= { mplsTunnelCRLDPResTable 1 } + + + + +MplsTunnelCRLDPResEntry ::= SEQUENCE { + mplsTunnelCRLDPResMeanBurstSize MplsBurstSize, + mplsTunnelCRLDPResExBurstSize MplsBurstSize, + mplsTunnelCRLDPResFrequency INTEGER, + mplsTunnelCRLDPResWeight Unsigned32, + mplsTunnelCRLDPResFlags Unsigned32, + mplsTunnelCRLDPResRowStatus RowStatus, + mplsTunnelCRLDPResStorageType StorageType + } + +mplsTunnelCRLDPResMeanBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mean burst size in bytes." + ::= { mplsTunnelCRLDPResEntry 1 } + +mplsTunnelCRLDPResExBurstSize OBJECT-TYPE + SYNTAX MplsBurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Excess burst size in bytes." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelCRLDPResEntry 2 } + +mplsTunnelCRLDPResFrequency OBJECT-TYPE + SYNTAX INTEGER { + unspecified(1), + frequent(2), + veryFrequent(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The granularity of the availability of committed + rate." + REFERENCE + "CR-LDP Specification, Section 4.3." + ::= { mplsTunnelCRLDPResEntry 3 } + +mplsTunnelCRLDPResWeight OBJECT-TYPE + SYNTAX Unsigned32(0..255) + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The relative weight for using excess bandwidth above + its committed rate. The value of 0 means that + weight is not applicable for the CR-LSP." + REFERENCE + "CR-LDP Specification, Section 4.3." + DEFVAL { 0 } + ::= { mplsTunnelCRLDPResEntry 4 } + +mplsTunnelCRLDPResFlags OBJECT-TYPE + SYNTAX Unsigned32 (0..63) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the 1 byte Flags conveyed as part of + the traffic parameters during the establishment of + the CRLSP. The bits in this object are to be + interpreted as follows. + + +--+--+--+--+--+--+--+--+ + | Res |F6|F5|F4|F3|F2|F1| + +--+--+--+--+--+--+--+--+ + + Res - These bits are reserved. Zero on transmission. + Ignored on receipt. + F1 - Corresponds to the PDR. + F2 - Corresponds to the PBS. + F3 - Corresponds to the CDR. + F4 - Corresponds to the CBS. + F5 - Corresponds to the EBS. + F6 - Corresponds to the Weight. + + Each flag if is a Negotiable Flag corresponding to a + Traffic Parameter. The Negotiable Flag value zero + denotes Not Negotiable and value one denotes + Negotiable." + REFERENCE + "1. Section 4.3, Constraint-Based LSP Setup using + LDP, Jamoussi (Editor), RFC 3212, January 2002" + DEFVAL { 0 } + ::= { mplsTunnelCRLDPResEntry 5 } + +mplsTunnelCRLDPResRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This variable is used to create, modify, and/or + delete a row in this table. When a row in this + table is in active(1) state, no objects in that row + can be modified by the agent except + mplsTunnelCRLDPResRowStatus and + mplsTunnelCRLDPResStorageType." + ::= { mplsTunnelCRLDPResEntry 6 } + +mplsTunnelCRLDPResStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this CR-LDP Resource entry. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar + objects in the row." + DEFVAL { volatile } + ::= { mplsTunnelCRLDPResEntry 7 } + + +-- Notifications. + +mplsTunnelNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object is true, then it enables the + generation of mplsTunnelUp and mplsTunnelDown + traps, otherwise these traps are not emitted." + DEFVAL { false } + ::= { mplsTeObjects 11 } + +mplsTunnelUp NOTIFICATION-TYPE + OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when a + mplsTunnelOperStatus object for one of the + configured tunnels is about to leave the down state + and transition into some other state (but not into + the notPresent state). This other state is + indicated by the included value of + mplsTunnelOperStatus." + + + + ::= { mplsTeNotifications 1 } + +mplsTunnelDown NOTIFICATION-TYPE + OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when a + mplsTunnelOperStatus object for one of the + configured tunnels is about to enter the down state + from some other state (but not from the notPresent + state). This other state is indicated by the + included value of mplsTunnelOperStatus." + ::= { mplsTeNotifications 2 } + +mplsTunnelRerouted NOTIFICATION-TYPE + OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when a tunnel is + rerouted. If the mplsTunnelARHopTable is used, then + this tunnel instance's entry in the + mplsTunnelARHopTable MAY contain the new path for + this tunnel some time after this trap is issued by + the agent." + ::= { mplsTeNotifications 3 } + +mplsTunnelReoptimized NOTIFICATION-TYPE + OBJECTS { + mplsTunnelAdminStatus, + mplsTunnelOperStatus + } + STATUS current + DESCRIPTION + "This notification is generated when a tunnel is + reoptimized. If the mplsTunnelARHopTable is used, + then this tunnel instance's entry in the + mplsTunnelARHopTable MAY contain the new path for + this tunnel some time after this trap is issued by + the agent." + ::= { mplsTeNotifications 4 } + +-- End of notifications. + + + +-- Module compliance. + +mplsTeGroups + OBJECT IDENTIFIER ::= { mplsTeConformance 1 } + +mplsTeCompliances + OBJECT IDENTIFIER ::= { mplsTeConformance 2 } + +-- Compliance requirement for fully compliant implementations. + +mplsTeModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that provide full + support the MPLS-TE-STD-MIB module." + + MODULE IF-MIB -- The Interfaces Group MIB, RFC 2863. + MANDATORY-GROUPS { + ifGeneralInformationGroup, + ifCounterDiscontinuityGroup + } + + MODULE -- this module + + -- The mandatory group has to be implemented by all + -- LSRs that originate/terminate ESLSPs/tunnels. + -- In addition, depending on the type of tunnels + -- supported, other groups become mandatory as + -- explained below. + + MANDATORY-GROUPS { + mplsTunnelGroup, + mplsTunnelScalarGroup + } + + GROUP mplsTunnelManualGroup + DESCRIPTION + "This group is mandatory for devices which support + manual configuration of tunnels." + + GROUP mplsTunnelSignaledGroup + DESCRIPTION + "This group is mandatory for devices which support + signaled tunnel set up." + + GROUP mplsTunnelIsNotIntfcGroup + DESCRIPTION + "This group is mandatory for devices which support + + + + tunnels that are not interfaces." + + GROUP mplsTunnelIsIntfcGroup + DESCRIPTION + "This group is mandatory for devices which support + tunnels that are interfaces." + + GROUP mplsTunnelCRLDPResOptionalGroup + DESCRIPTION + "Objects in this group are required by + implementations supporting the CR-LDP protocol for + signalling of TE tunnels." + + GROUP mplsTeNotificationGroup + DESCRIPTION "This group is mandatory for those implementations + which can implement the notifications + contained in this group." + + OBJECT mplsTunnelRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + OBJECT mplsTunnelHopRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required." + + OBJECT mplsTunnelCRLDPResRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is + not required." + + ::= { mplsTeCompliances 1 } + +-- Compliance requirement for read-only implementations. + +mplsTeModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "Compliance requirement for implementations that only + provide read-only support for MPLS-TE-STD-MIB. + Such devices can then be monitored but cannot be + configured using this MIB modules." + + MODULE -- this module + + -- mplsTunnelTable + + MANDATORY-GROUPS { + mplsTunnelGroup, + mplsTunnelScalarGroup + } + + GROUP mplsTunnelManualGroup + DESCRIPTION + "This group is mandatory for devices which support + manual configuration of tunnels." + + GROUP mplsTunnelSignaledGroup + DESCRIPTION + "This group is mandatory for devices which support + signaled tunnel set up." + + GROUP mplsTunnelIsNotIntfcGroup + DESCRIPTION + "This group is mandatory for devices which support + tunnels that are not interfaces." + + GROUP mplsTunnelIsIntfcGroup + DESCRIPTION + "This group is mandatory for devices which support + tunnels that are interfaces." + + GROUP mplsTunnelCRLDPResOptionalGroup + DESCRIPTION + "Objects in this group are required by + implementations supporting the CR-LDP protocol for + signalling of TE tunnels." + + GROUP mplsTeNotificationGroup + DESCRIPTION "This group is mandatory for those implementations + which can implement the notifications + contained in this group." + + -- mplsTunnelTable + + + + + OBJECT mplsTunnelName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelIsIf + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelIfIndex + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelXCPointer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelSignallingProto + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelSetupPrio + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHoldingPrio + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelSessionAttributes + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelLocalProtectInUse + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT mplsTunnelResourcePointer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelInstancePriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopTableIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelIncludeAnyAffinity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelIncludeAllAffinity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelExcludeAnyAffinity + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelPathInUse + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelRole + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelAdminStatus + SYNTAX INTEGER { up (1), down (2) } + MIN-ACCESS read-only + DESCRIPTION + "Only up and down states must be supported. Write + access is not required." + + OBJECT mplsTunnelRowStatus + + + + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + -- mplsTunnelHopTable + + OBJECT mplsTunnelHopAddrType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopIpAddr + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopIpPrefixLen + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopAddrUnnum + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopAsNumber + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopLspId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelHopType + SYNTAX INTEGER { strict(1) } + MIN-ACCESS read-only + DESCRIPTION + "loose(2) need not be supported. Write access is + not required." + + OBJECT mplsTunnelHopInclude + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopPathOptionName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + OBJECT mplsTunnelHopEntryPathComp + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelHopStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + -- mplsTunnelResourceTable + + OBJECT mplsTunnelResourceMaxRate + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceMeanRate + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceMaxBurstSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceMeanBurstSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceExBurstSize + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT mplsTunnelResourceFrequency + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceWeight + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelResourceRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + OBJECT mplsTunnelResourceStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + -- mplsTunnelCRLDPResTable + + OBJECT mplsTunnelCRLDPResMeanBurstSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResExBurstSize + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResFrequency + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResWeight + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResFlags + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT mplsTunnelCRLDPResStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { mplsTeCompliances 2 } + + +-- Units of conformance. + +mplsTunnelGroup OBJECT-GROUP + OBJECTS { + mplsTunnelIndexNext, + mplsTunnelName, + mplsTunnelDescr, + mplsTunnelOwner, + mplsTunnelXCPointer, + mplsTunnelIfIndex, + + + + mplsTunnelHopTableIndex, + mplsTunnelARHopTableIndex, + mplsTunnelCHopTableIndex, + mplsTunnelAdminStatus, + mplsTunnelOperStatus, + mplsTunnelRowStatus, + mplsTunnelNotificationEnable, + mplsTunnelStorageType, + mplsTunnelConfigured, + mplsTunnelActive, + mplsTunnelPrimaryInstance, + mplsTunnelPrimaryUpTime, + mplsTunnelPathChanges, + mplsTunnelLastPathChange, + mplsTunnelCreationTime, + mplsTunnelStateTransitions, + mplsTunnelIncludeAnyAffinity, + mplsTunnelIncludeAllAffinity, + mplsTunnelExcludeAnyAffinity, + mplsTunnelPerfPackets, + mplsTunnelPerfHCPackets, + mplsTunnelPerfErrors, + mplsTunnelPerfBytes, + mplsTunnelPerfHCBytes, + mplsTunnelResourcePointer, + mplsTunnelInstancePriority, + mplsTunnelPathInUse, + mplsTunnelRole, + mplsTunnelTotalUpTime, + mplsTunnelInstanceUpTime, + mplsTunnelResourceIndexNext, + mplsTunnelResourceMaxRate, + mplsTunnelResourceMeanRate, + mplsTunnelResourceMaxBurstSize, + mplsTunnelResourceMeanBurstSize, + mplsTunnelResourceExBurstSize, + mplsTunnelResourceFrequency, + mplsTunnelResourceWeight, + mplsTunnelResourceRowStatus, + mplsTunnelResourceStorageType, + mplsTunnelARHopAddrType, + mplsTunnelARHopIpAddr, + mplsTunnelARHopAddrUnnum, + mplsTunnelARHopLspId, + mplsTunnelCHopAddrType, + mplsTunnelCHopIpAddr, + mplsTunnelCHopIpPrefixLen, + mplsTunnelCHopAsNumber, + + + + mplsTunnelCHopAddrUnnum, + mplsTunnelCHopLspId, + mplsTunnelCHopType + } + STATUS current + DESCRIPTION + "Necessary, but not sufficient, set of objects to + implement tunnels. In addition, depending on the + type of the tunnels supported (for example, + manually configured or signaled, persistent or non- + persistent, etc.), the following other groups + defined below are mandatory: mplsTunnelManualGroup + and/or mplsTunnelSignaledGroup, + mplsTunnelIsNotIntfcGroup and/or + mplsTunnelIsIntfcGroup." + ::= { mplsTeGroups 1 } + +mplsTunnelManualGroup OBJECT-GROUP + OBJECTS { mplsTunnelSignallingProto } + STATUS current + DESCRIPTION + "Object(s) needed to implement manually configured + tunnels." + ::= { mplsTeGroups 2 } + +mplsTunnelSignaledGroup OBJECT-GROUP + OBJECTS { + mplsTunnelSetupPrio, + mplsTunnelHoldingPrio, + mplsTunnelSignallingProto, + mplsTunnelLocalProtectInUse, + mplsTunnelSessionAttributes, + mplsTunnelHopListIndexNext, + mplsTunnelHopAddrType, + mplsTunnelHopIpAddr, + mplsTunnelHopIpPrefixLen, + mplsTunnelHopAddrUnnum, + mplsTunnelHopAsNumber, + mplsTunnelHopLspId, + mplsTunnelHopType, + mplsTunnelHopInclude, + mplsTunnelHopPathOptionName, + mplsTunnelHopEntryPathComp, + mplsTunnelHopRowStatus, + mplsTunnelHopStorageType + } + STATUS current + DESCRIPTION + + + + "Objects needed to implement signaled tunnels." + ::= { mplsTeGroups 3 } + +mplsTunnelScalarGroup OBJECT-GROUP + OBJECTS { + mplsTunnelConfigured, + mplsTunnelActive, + mplsTunnelTEDistProto, + mplsTunnelMaxHops, + mplsTunnelNotificationMaxRate + } + STATUS current + DESCRIPTION + "Scalar object needed to implement MPLS tunnels." + ::= { mplsTeGroups 4 } + +mplsTunnelIsIntfcGroup OBJECT-GROUP + OBJECTS { mplsTunnelIsIf } + STATUS current + DESCRIPTION + "Objects needed to implement tunnels that are + interfaces." + ::= { mplsTeGroups 5 } + +mplsTunnelIsNotIntfcGroup OBJECT-GROUP + OBJECTS { mplsTunnelIsIf } + STATUS current + DESCRIPTION + "Objects needed to implement tunnels that are not + interfaces." + ::= { mplsTeGroups 6 } + +mplsTunnelCRLDPResOptionalGroup OBJECT-GROUP + OBJECTS { + mplsTunnelCRLDPResMeanBurstSize, + mplsTunnelCRLDPResExBurstSize, + mplsTunnelCRLDPResFrequency, + mplsTunnelCRLDPResWeight, + mplsTunnelCRLDPResFlags, + mplsTunnelCRLDPResRowStatus, + mplsTunnelCRLDPResStorageType + } + STATUS current + DESCRIPTION + "Set of objects implemented for resources applicable + for tunnels signaled using CR-LDP." + ::= { mplsTeGroups 7 } + + + + +mplsTeNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + mplsTunnelUp, + mplsTunnelDown, + mplsTunnelRerouted, + mplsTunnelReoptimized + } + STATUS current + DESCRIPTION + "Set of notifications implemented in this module. + None is mandatory." + ::= { mplsTeGroups 8 } + +END diff --git a/mibs/ietf/MSDP-MIB b/mibs/ietf/MSDP-MIB new file mode 100644 index 0000000..26bb533 --- /dev/null +++ b/mibs/ietf/MSDP-MIB @@ -0,0 +1,1247 @@ +MSDP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + experimental, Counter32, Gauge32, TimeTicks, Integer32, + IpAddress + FROM SNMPv2-SMI + RowStatus, TruthValue, TimeStamp, DisplayString + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +msdpMIB MODULE-IDENTITY + LAST-UPDATED "200608010000Z" + ORGANIZATION "IETF MBONED Working Group" + CONTACT-INFO + "Bill Fenner + 75 Willow Road + Menlo Park, CA 94025 + Phone: +1 650 867 6073 + E-mail: fenner@research.att.com + + Dave Thaler + One Microsoft Way + Redmond, WA 98052 + Phone: +1 425 703 8835 + Email: dthaler@microsoft.com + + MBONED Working Group: mboned@lists.uoregon.edu" + DESCRIPTION + "An experimental MIB module for MSDP Management and + Monitoring. + + + + + Copyright (C) The Internet Society 2006. This version of + this MIB module is part of RFC 4624; see the RFC itself + for full legal notices." + REVISION "200608010000Z" + DESCRIPTION + "Initial version, published as RFC 4624." + ::= { experimental 92 } + +msdpMIBobjects OBJECT IDENTIFIER ::= { msdpMIB 1 } + +msdp OBJECT IDENTIFIER ::= { msdpMIBobjects 1 } + + +msdpEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of MSDP on this MSDP speaker - globally enabled + or disabled. + + Changes to this object should be stored to non-volatile + memory." + ::= { msdp 1 } + +msdpCacheLifetime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lifetime given to SA cache entries when created or + refreshed. This is the [SG-State-Period] in the MSDP + spec. A value of 0 means no SA caching is done by this + MSDP speaker. + + Changes to this object should be stored to non-volatile + memory. + + This object does not measure time per se; instead, it + is the delta from the time at which an SA message is + received at which it should be expired if not refreshed. + (i.e., it is the value of msdpSACacheExpiryTime + immediately after receiving an SA message applying to + that row.) As such, TimeInterval would be a more + appropriate SYNTAX; it remains TimeTicks for backwards + compatibility." + REFERENCE "RFC 3618 section 5.3" + ::= { msdp 2 } + + + +msdpNumSACacheEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of entries in the SA Cache table." + ::= { msdp 3 } + +-- +-- The spec doesn't define SA-Hold-Down-Period any more. +-- msdpSAHoldDownPeriod OBJECT-TYPE +-- ::= { msdp 9 } + +-- This object was introduced in error, with a similar definition +-- to msdpCacheLifetime. +-- msdpSAStatePeriod OBJECT-TYPE +-- ::= { msdp 10 } + +msdpRPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Rendezvous Point (RP) address used when sourcing + MSDP SA messages. May be 0.0.0.0 on non-RPs. + + Changes to this object should be stored to non-volatile + memory." + ::= { msdp 11 } + +-- +-- The MSDP Requests table +-- SA Requests were removed from the MSDP spec, so this entire table +-- is deprecated. + +msdpRequestsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MsdpRequestsEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing group ranges and MSDP peers + used when deciding where to send an SA Request message, when + required. If SA Requests are not enabled, this table may be + empty. + + In order to choose a peer to whom to send an SA Request for + a given group, G, the subset of entries in this table whose + (msdpRequestsPeerType, msdpRequestsPeer) tuple represents a + + + + peer whose msdpPeerState is established are examined. The + set is further reduced by examining only those entries for + which msdpPeerRequestsGroupAddressType equals the address + type of G. The entries with the highest value of + msdpRequestsGroupPrefix are considered, where the group G + falls within the range described by the combination of + msdpRequestsGroup and msdpRequestsGroupPrefix. (This + sequence is commonly known as a 'longest-match' lookup.) + + Finally, if multiple entries remain, the entry with the + lowest value of msdpRequestsPriority is chosen. The SA + Request message is sent to the peer described by this row." + ::= { msdp 4 } + +msdpRequestsEntry OBJECT-TYPE + SYNTAX MsdpRequestsEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a group range + used when deciding where to send an SA Request + message." + INDEX { msdpRequestsGroupAddress, msdpRequestsGroupMask } + ::= { msdpRequestsTable 1 } + +MsdpRequestsEntry ::= SEQUENCE { + msdpRequestsGroupAddress IpAddress, + msdpRequestsGroupMask IpAddress, + msdpRequestsPeer IpAddress, + msdpRequestsStatus RowStatus + } + +msdpRequestsGroupAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The group address that, when combined with the mask + in this entry, represents the group range to which + this row applies." + ::= { msdpRequestsEntry 1 } + +msdpRequestsGroupMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The mask that, when combined with the group address + + + + in this entry, represents the group range to which + this row applies." + ::= { msdpRequestsEntry 2 } + +msdpRequestsPeer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The peer to which MSDP SA Requests for groups matching + this entry's group range will be sent. This object, + combined with msdpRequestsPeerType, must match the INDEX + of a row in the msdpPeerTable, and to be considered, + this peer's msdpPeerState must be established." + ::= { msdpRequestsEntry 3 } + +msdpRequestsStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this row, by which new rows may be added + to the table or old rows may be deleted." + ::= { msdpRequestsEntry 4 } + + +-- +-- The MSDP Peer table +-- + +msdpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF MsdpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the MSDP speaker's peers." + ::= { msdp 5 } + +msdpPeerEntry OBJECT-TYPE + SYNTAX MsdpPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing an MSDP peer. + + If row creation is supported, dynamically added rows are + added to the system's stable configuration (corresponding + to a StorageType value of nonVolatile). " + + + + INDEX { msdpPeerRemoteAddress } + ::= { msdpPeerTable 1 } + +MsdpPeerEntry ::= SEQUENCE { + msdpPeerRemoteAddress IpAddress, + msdpPeerState INTEGER, + msdpPeerRPFFailures Counter32, + msdpPeerInSAs Counter32, + msdpPeerOutSAs Counter32, + msdpPeerInSARequests Counter32, + msdpPeerOutSARequests Counter32, + msdpPeerInSAResponses Counter32, + msdpPeerOutSAResponses Counter32, + msdpPeerInControlMessages Counter32, + msdpPeerOutControlMessages Counter32, + msdpPeerInDataPackets Counter32, + msdpPeerOutDataPackets Counter32, + msdpPeerFsmEstablishedTransitions Counter32, + msdpPeerFsmEstablishedTime TimeStamp, + msdpPeerInMessageTime TimeStamp, + msdpPeerLocalAddress IpAddress, + msdpPeerConnectRetryInterval Integer32, + msdpPeerHoldTimeConfigured Integer32, + msdpPeerKeepAliveConfigured Integer32, + msdpPeerDataTtl Integer32, + msdpPeerProcessRequestsFrom TruthValue, + msdpPeerStatus RowStatus, + msdpPeerRemotePort Integer32, + msdpPeerLocalPort Integer32, + msdpPeerEncapsulationType INTEGER, + msdpPeerConnectionAttempts Counter32, + msdpPeerInNotifications Counter32, + msdpPeerOutNotifications Counter32, + msdpPeerLastError OCTET STRING, + msdpPeerDiscontinuityTime TimeStamp + } + +msdpPeerRemoteAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the remote MSDP peer." + ::= { msdpPeerEntry 1 } + +-- dunno what happened to 2. + +msdpPeerState OBJECT-TYPE + + + + SYNTAX INTEGER { + inactive(1), + listen(2), + connecting(3), + established(4), + disabled(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the MSDP TCP connection with this peer." + ::= { msdpPeerEntry 3 } + +msdpPeerRPFFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SA messages received from this peer that + failed the Peer-RPF check. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 4 } + +msdpPeerInSAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA messages received on this + connection. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 5 } + +msdpPeerOutSAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA messages transmitted on this + connection. + + + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 6 } + +msdpPeerInSARequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA-Request messages received on this + connection. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 7 } + +msdpPeerOutSARequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA-Request messages transmitted on + this connection. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 8 } + +msdpPeerInSAResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of MSDP SA-Response messages received on this + connection. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 9 } + + + + +msdpPeerOutSAResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of MSDP SA Response messages transmitted on + this TCP connection. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 10 } + +msdpPeerInControlMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of MSDP messages, excluding encapsulated + data packets, received on this TCP connection. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 11 } + +msdpPeerOutControlMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of MSDP messages, excluding encapsulated + data packets, transmitted on this TCP connection. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 12 } + +msdpPeerInDataPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of encapsulated data packets received + + + + from this peer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 13 } + +msdpPeerOutDataPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of encapsulated data packets sent to + this peer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + msdpPeerDiscontinuityTime." + ::= { msdpPeerEntry 14 } + +msdpPeerFsmEstablishedTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times the MSDP FSM transitioned into + the ESTABLISHED state." + REFERENCE "RFC 3618 section 11" + ::= { msdpPeerEntry 15 } + +msdpPeerFsmEstablishedTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This timestamp is set to the value of sysUpTime when a + peer transitions into or out of the ESTABLISHED state. + It is set to zero when the MSDP speaker is booted." + REFERENCE "RFC 3618 section 11" + ::= { msdpPeerEntry 16 } + +msdpPeerInMessageTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The sysUpTime value when the last MSDP message was + received from the peer. It is set to zero when the MSDP + speaker is booted." + ::= { msdpPeerEntry 17 } + +msdpPeerLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local IP address used for this entry's MSDP TCP + connection." + ::= { msdpPeerEntry 18 } + +-- msdpPeerSAAdvPeriod ([SA-Advertisement-Timer]) has been removed. +-- ::= { msdpPeerEntry 19 } +-- RFC 3618, Section 5.1, says it MUST be 60 seconds. + + +msdpPeerConnectRetryInterval OBJECT-TYPE + SYNTAX Integer32 (1..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Time interval, in seconds, for the [ConnectRetry-period] + for this peer." + REFERENCE "RFC 3618 section 5.6" + DEFVAL { 30 } + ::= { msdpPeerEntry 20 } + +msdpPeerHoldTimeConfigured OBJECT-TYPE + SYNTAX Integer32 (0|3..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Time interval, in seconds, for the [HoldTime-Period] + configured for this MSDP speaker with this peer. If the + value of this object is zero (0), the MSDP connection is + never torn down due to the absence of messages from the + peer." + REFERENCE "RFC 3618 section 5.4" + DEFVAL { 75 } + ::= { msdpPeerEntry 21 } + +msdpPeerKeepAliveConfigured OBJECT-TYPE + SYNTAX Integer32 (0|1..21845) + + + + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Time interval, in seconds, for the [KeepAlive-Period] + configured for this MSDP speaker with this peer. If the + value of this object is zero (0), no periodic KEEPALIVE + messages are sent to the peer after the MSDP connection + has been established." + REFERENCE "RFC 3618 section 5.5" + DEFVAL { 60 } + ::= { msdpPeerEntry 22 } + +msdpPeerDataTtl OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum TTL a packet is required to have before it + may be forwarded using SA encapsulation to this peer." + DEFVAL { 1 } + ::= { msdpPeerEntry 23 } + +msdpPeerProcessRequestsFrom OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This object indicates whether to process MSDP SA + Request messages from this peer. If True(1), MSDP SA + Request messages from this peer are processed and replied + to (if appropriate) with SA Response messages. If + False(2), MSDP SA Request messages from this peer are + silently ignored. It defaults to False when + msdpCacheLifetime is 0 and to True when msdpCacheLifetime + is non-0. + + This object is deprecated because MSDP SA Requests were + removed from the MSDP specification." + ::= { msdpPeerEntry 24 } + +msdpPeerStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The RowStatus object by which peers can be added and + deleted. A transition to 'active' will cause the MSDP + + + + 'Enable MSDP peering with P' Event to be generated. A + transition out of the 'active' state will cause the MSDP + 'Disable MSDP peering with P' Event to be generated. + Care should be used in providing write access to this + object without adequate authentication. + + msdpPeerRemoteAddress is the only variable that must be + set to a valid value before the row can be activated. + Since this is the table's INDEX, a row can be activated + by simply setting the msdpPeerStatus variable. + + It is possible to modify other columns in the same + conceptual row when the status value is active(1)." + REFERENCE "RFC 3618 section 11.1" + ::= { msdpPeerEntry 25 } + +msdpPeerRemotePort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote port for the TCP connection between the MSDP + peers." + DEFVAL { 639 } + ::= { msdpPeerEntry 26 } + +msdpPeerLocalPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local port for the TCP connection between the MSDP + peers." + DEFVAL { 639 } + ::= { msdpPeerEntry 27 } + +-- msdpPeerEncapsulationState has been removed +-- because there is no longer an encapsulation +-- state machine. +-- ::= { msdpPeerEntry 28 } + +msdpPeerEncapsulationType OBJECT-TYPE + SYNTAX INTEGER { + none(0), + tcp(1) + } + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The encapsulation in use when encapsulating data in SA + messages to this peer." + ::= { msdpPeerEntry 29 } + +msdpPeerConnectionAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the state machine has transitioned + from INACTIVE to CONNECTING." + ::= { msdpPeerEntry 30 } + +msdpPeerInNotifications OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of MSDP Notification messages received from + this peer. + This object is deprecated because MSDP Notifications have + been removed from the spec." + ::= { msdpPeerEntry 31 } + +msdpPeerOutNotifications OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of MSDP Notification messages transmitted to + this peer. + + This object is deprecated because MSDP Notifications have + been removed from the spec." + ::= { msdpPeerEntry 32 } + +msdpPeerLastError OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The last error code and subcode received via Notification + from this peer. If no error has occurred, this field is + zero. Otherwise, the first byte of this two-byte OCTET + STRING contains the O-bit and error code, and the second + byte contains the subcode. + + + + + This object is deprecated because MSDP Notifications have + been removed from the spec." + DEFVAL { '0000'h } + ::= { msdpPeerEntry 33 } + +msdpPeerDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which one or more of this entry's counters suffered a + discontinuity. See the DESCRIPTION of each object to see + if it is expected to have discontinuities. These + discontinuities may occur at peer connection + establishment. + + If no such discontinuities have occurred since the last + reinitialization of the local management subsystem, then + this object contains a zero value." + ::= { msdpPeerEntry 34 } + +-- +-- The MSDP Source-Active Cache table +-- + +msdpSACacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF MsdpSACacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the MSDP SA advertisements + currently in the MSDP speaker's cache." + ::= { msdp 6 } + +msdpSACacheEntry OBJECT-TYPE + SYNTAX MsdpSACacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing an MSDP SA + advertisement. The INDEX to this table includes + msdpSACacheOriginRP for diagnosing incorrect MSDP + advertisements; normally, a Group and Source pair would + be unique. + + Row creation is not permitted; msdpSACacheStatus may only + be used to delete rows from this table." + + + + INDEX { msdpSACacheGroupAddr, msdpSACacheSourceAddr, + msdpSACacheOriginRP } + ::= { msdpSACacheTable 1 } + +MsdpSACacheEntry ::= SEQUENCE { + msdpSACacheGroupAddr IpAddress, + msdpSACacheSourceAddr IpAddress, + msdpSACacheOriginRP IpAddress, + msdpSACachePeerLearnedFrom IpAddress, + msdpSACacheRPFPeer IpAddress, + msdpSACacheInSAs Counter32, + msdpSACacheInDataPackets Counter32, + msdpSACacheUpTime TimeTicks, + msdpSACacheExpiryTime TimeTicks, + msdpSACacheStatus RowStatus + } + +msdpSACacheGroupAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The group address of the SA Cache entry." + ::= { msdpSACacheEntry 1 } + +msdpSACacheSourceAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The source address of the SA Cache entry." + ::= { msdpSACacheEntry 2 } + +msdpSACacheOriginRP OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RP of the SA Cache entry. This field is in the INDEX + in order to catch multiple RP's advertising the same + source and group." + ::= { msdpSACacheEntry 3 } + +msdpSACachePeerLearnedFrom OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The peer from which this SA Cache entry was last + accepted. This address must correspond to the + msdpPeerRemoteAddress value for a row in the MSDP Peer + Table. This should be 0.0.0.0 on the router that + originated the entry." + ::= { msdpSACacheEntry 4 } + +msdpSACacheRPFPeer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The peer from which an SA message corresponding to this + cache entry would be accepted (i.e., the RPF peer for + msdpSACacheOriginRP). This may be different than + msdpSACachePeerLearnedFrom if this entry was created by + an MSDP SA-Response. This address must correspond to + the msdpPeerRemoteAddress value for a row in the MSDP + Peer Table, or it may be 0.0.0.0 if no RPF peer exists." + ::= { msdpSACacheEntry 5 } + +msdpSACacheInSAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP SA messages received relevant to this + cache entry. This object must be initialized to zero + when creating a cache entry." + ::= { msdpSACacheEntry 6 } + +msdpSACacheInDataPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of MSDP-encapsulated data packets received + relevant to this cache entry. This object must be + initialized to zero when creating a cache entry." + ::= { msdpSACacheEntry 7 } + +msdpSACacheUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was first placed in the SA + cache. + + + + The first epoch is the time that the entry was first + placed in the SA cache, and the second epoch is the + current time." + ::= { msdpSACacheEntry 8 } + +msdpSACacheExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before this entry will expire from + the SA cache. + + The first epoch is now, and the second epoch is the time + that the entry will expire." + ::= { msdpSACacheEntry 9 } + +msdpSACacheStatus OBJECT-TYPE + SYNTAX RowStatus { active(1), destroy(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of this row in the table. The only allowable + actions are to retrieve the status, which will be + 'active', or to set the status to 'destroy' in order to + remove this entry from the cache. + + Row creation is not permitted. + + No columnar objects are writable, so there are none that + may be changed while the status value is active(1)." + ::= { msdpSACacheEntry 10 } + + +-- +-- MSDP Mesh Group Membership table +-- + +msdpMeshGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MsdpMeshGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing MSDP Mesh Group + configuration." + ::= { msdp 12 } + +msdpMeshGroupEntry OBJECT-TYPE + + + + SYNTAX MsdpMeshGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a peer in an MSDP + Mesh Group. + + If row creation is supported, dynamically added rows are + added to the system's stable configuration + (corresponding to a StorageType value of nonVolatile)." + INDEX { msdpMeshGroupName, msdpMeshGroupPeerAddress } + ::= { msdpMeshGroupTable 1 } + +MsdpMeshGroupEntry ::= SEQUENCE { + msdpMeshGroupName DisplayString, + msdpMeshGroupPeerAddress IpAddress, + msdpMeshGroupStatus RowStatus + } + +msdpMeshGroupName OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the mesh group." + ::= { msdpMeshGroupEntry 1 } + +msdpMeshGroupPeerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A peer address that is a member of the mesh group with + name msdpMeshGroupName. The msdpMeshGroupPeerAddress + must match a row in the msdpPeerTable." + ::= { msdpMeshGroupEntry 2 } + +msdpMeshGroupStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This entry's status, by which new entries may be added + to the table and old entries deleted. + + msdpMeshGroupName and msdpMeshGroupPeerAddress must be + set to valid values before the row can be activated. + Since these are the table's INDEX, a row can be activated + + + + by simply setting the msdpMeshGroupStatus variable. + + It is not possible to modify other columns in the same + conceptual row when the status value is active(1), + because the only other objects in the row are part of the + INDEX. Changing one of these changes the row, so an old + row must be deleted and a new one created." + ::= { msdpMeshGroupEntry 3 } + + +-- Traps + +msdpTraps OBJECT IDENTIFIER ::= { msdp 0 } + +msdpEstablished NOTIFICATION-TYPE + OBJECTS { msdpPeerFsmEstablishedTransitions } + STATUS current + DESCRIPTION + "The MSDP Established event is generated when the MSDP FSM + enters the ESTABLISHED state." + ::= { msdpTraps 1 } + +msdpBackwardTransition NOTIFICATION-TYPE + OBJECTS { msdpPeerState } + STATUS current + DESCRIPTION + "The MSDPBackwardTransition Event is generated when the + MSDP FSM moves from a higher-numbered state to a + lower-numbered state." + ::= { msdpTraps 2 } + +-- conformance information + +msdpMIBConformance OBJECT IDENTIFIER ::= { msdp 8 } +msdpMIBCompliances OBJECT IDENTIFIER ::= { msdpMIBConformance 1 } +msdpMIBGroups OBJECT IDENTIFIER ::= { msdpMIBConformance 2 } + +-- compliance statements + +msdpMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for entities that implement a pre- + RFC version of MSDP. This statement is deprecated because + it includes objects used for managing/monitoring aspects of + MSDP that were removed before it was published as an RFC." + MODULE -- this module + MANDATORY-GROUPS { msdpMIBGlobalsGroup, msdpMIBPeerGroup, + + + + msdpMIBNotificationGroup } + + GROUP msdpMIBEncapsulationGroup + DESCRIPTION + "This group is mandatory if MSDP encapsulation interfaces are + not given their own interface index numbers." + GROUP msdpMIBSACacheGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker has the ability + to cache SA messages." + GROUP msdpMIBRequestsGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker has the ability + to send SA-Request messages and to parse SA-Response + messages." + GROUP msdpMIBRPGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker sources (as + opposed to forwards) MSDP messages." + GROUP msdpMIBMeshGroupGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker can participate + in MSDP Mesh Groups." + ::= { msdpMIBCompliances 1 } + +msdpMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that implement MSDP + (RFC3618)." + MODULE -- this module + MANDATORY-GROUPS { msdpMIBGlobalsGroup, msdpMIBPeerGroup2, + msdpMIBSACacheGroup, msdpMIBEncapsulationGroup } + GROUP msdpMIBRPGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker sources (as + opposed to forwards) MSDP messages." + GROUP msdpMIBMeshGroupGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker can participate + in MSDP Mesh Groups." + ::= { msdpMIBCompliances 2 } + +msdpMIBReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that implement MSDP + (RFC3618), but do not permit configuration (or only permit + + + + partial configuration) via SNMP." + MODULE -- this module + MANDATORY-GROUPS { msdpMIBGlobalsGroup, msdpMIBPeerGroup2, + msdpMIBSACacheGroup, msdpMIBEncapsulationGroup } + GROUP msdpMIBRPGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker sources (as + opposed to forwards) MSDP messages." + GROUP msdpMIBMeshGroupGroup + DESCRIPTION + "This group is mandatory if the MSDP speaker can participate + in MSDP Mesh Groups." + OBJECT msdpEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpCacheLifetime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerLocalAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerConnectRetryInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerHoldTimeConfigured + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerKeepAliveConfigured + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerDataTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpPeerEncapsulationType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT msdpSACacheStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpRPAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT msdpMeshGroupStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { msdpMIBCompliances 3 } + +-- units of conformance + +msdpMIBGlobalsGroup OBJECT-GROUP + OBJECTS { msdpEnabled } + STATUS current + DESCRIPTION + "A collection of objects providing information on global MSDP + state." + ::= { msdpMIBGroups 1 } + +msdpMIBPeerGroup OBJECT-GROUP + OBJECTS { msdpPeerRPFFailures, + msdpPeerState, msdpPeerInSAs, msdpPeerOutSAs, + msdpPeerInSARequests, msdpPeerOutSARequests, + msdpPeerInSAResponses, msdpPeerOutSAResponses, + msdpPeerInNotifications, msdpPeerOutNotifications, + msdpPeerInControlMessages, msdpPeerOutControlMessages, + msdpPeerFsmEstablishedTransitions, + msdpPeerFsmEstablishedTime, + msdpPeerLocalAddress, + msdpPeerRemotePort, msdpPeerLocalPort, + msdpPeerConnectRetryInterval, + msdpPeerHoldTimeConfigured, + msdpPeerKeepAliveConfigured, + msdpPeerInMessageTime, + msdpPeerProcessRequestsFrom, + msdpPeerConnectionAttempts, + msdpPeerLastError, + msdpPeerStatus, + msdpPeerDiscontinuityTime + } + STATUS deprecated + DESCRIPTION + "A collection of objects for managing MSDP peers. This group + + + + is deprecated in favor of msdpMIBPeerGroup2 because it + contains objects for managing aspects of MSDP that were + removed before it was published as an RFC." + ::= { msdpMIBGroups 2 } + +msdpMIBEncapsulationGroup OBJECT-GROUP + OBJECTS { msdpPeerInDataPackets, msdpPeerOutDataPackets, + msdpPeerDataTtl, + msdpPeerEncapsulationType + } + STATUS current + DESCRIPTION + "A collection of objects for managing encapsulations if the + MSDP encapsulation interfaces are not given interface + indices." + ::= { msdpMIBGroups 3 } + +msdpMIBSACacheGroup OBJECT-GROUP + OBJECTS { msdpCacheLifetime, msdpNumSACacheEntries, + msdpSACachePeerLearnedFrom, + msdpSACacheRPFPeer, msdpSACacheInSAs, + msdpSACacheInDataPackets, + msdpSACacheUpTime, msdpSACacheExpiryTime, + msdpSACacheStatus } + STATUS current + DESCRIPTION + "A collection of objects for managing MSDP SA cache entries." + ::= { msdpMIBGroups 4 } + +msdpMIBNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { msdpEstablished, + msdpBackwardTransition } + STATUS current + DESCRIPTION + "A collection of notifications for signaling changes in MSDP + peer relationships." + ::= { msdpMIBGroups 5 } + +msdpMIBRequestsGroup OBJECT-GROUP + OBJECTS { msdpRequestsPeer, msdpRequestsStatus } + STATUS deprecated + DESCRIPTION + "A collection of objects for managing MSDP Request + transmission. This group is deprecated because Requests + were removed from MSDP before its publication as an RFC." + ::= { msdpMIBGroups 6 } + +msdpMIBRPGroup OBJECT-GROUP + + + + OBJECTS { msdpRPAddress } + STATUS current + DESCRIPTION + "A collection of objects for MSDP speakers that source MSDP + messages." + ::= { msdpMIBGroups 7 } + +msdpMIBMeshGroupGroup OBJECT-GROUP + OBJECTS { msdpMeshGroupStatus } + STATUS current + DESCRIPTION + "A collection of objects for MSDP speakers that can + participate in MSDP mesh groups." + ::= { msdpMIBGroups 8 } + +msdpMIBPeerGroup2 OBJECT-GROUP + OBJECTS { msdpPeerRPFFailures, + msdpPeerState, msdpPeerInSAs, msdpPeerOutSAs, + msdpPeerInSARequests, msdpPeerOutSARequests, + msdpPeerInControlMessages, msdpPeerOutControlMessages, + msdpPeerFsmEstablishedTransitions, + msdpPeerFsmEstablishedTime, + msdpPeerLocalAddress, + msdpPeerRemotePort, msdpPeerLocalPort, + msdpPeerConnectRetryInterval, + msdpPeerHoldTimeConfigured, + msdpPeerKeepAliveConfigured, + msdpPeerInMessageTime, + msdpPeerConnectionAttempts, + msdpPeerStatus, + msdpPeerDiscontinuityTime + } + STATUS current + DESCRIPTION + "A collection of objects for managing MSDP peers." + ::= { msdpMIBGroups 9 } + +END diff --git a/mibs/ietf/MTA-MIB b/mibs/ietf/MTA-MIB new file mode 100644 index 0000000..7a420e6 --- /dev/null +++ b/mibs/ietf/MTA-MIB @@ -0,0 +1,1215 @@ +MTA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, Counter32, Gauge32, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TimeInterval + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + applIndex, URLString + FROM NETWORK-SERVICES-MIB; + +mta MODULE-IDENTITY + LAST-UPDATED "200003030000Z" + ORGANIZATION "IETF Mail and Directory Management Working Group" + CONTACT-INFO + " Ned Freed + + Postal: Innosoft International, Inc. + 1050 Lakes Drive + West Covina, CA 91790 + US + + Tel: +1 626 919 3600 + Fax: +1 626 919 3614 + + E-Mail: ned.freed@innosoft.com" + DESCRIPTION + "The MIB module describing Message Transfer Agents (MTAs)" + REVISION "200003030000Z" + DESCRIPTION + "This revision, published in RFC 2789, changes a number of + DisplayStrings to SnmpAdminStrings. Note that this change + is not strictly supported by SMIv2. However, the alternative + of deprecating the old objects and defining new objects + would have a more adverse impact on backward compatibility + and interoperability, given the particular semantics of + these objects. The defining reference for distinguished + names has also been updated from RFC 1779 to RFC 2253." + REVISION "199905120000Z" + DESCRIPTION + "This revision fixes a number of technical problems found in + previous versions: The conformance groups for different + versions of this MIB have been corrected, the recommendation + that an empty string be returned if the last operation was + successful has been removed from + mtaGroupInboundRejectionReason and + mtaGroupOutboundConnectFailureReason as it conflicts + with the stated purpose of these variables, and the + required mtaStatusCode entry has been added to + MtaGroupErrorEntry. It should be noted that this last + change in no way affects the bits on the wire." + REVISION "199708170000Z" + DESCRIPTION + "This revision, published in RFC 2249, adds the + mtaGroupDescription and mtaGroupURL fields, conversion + operation counters, a group hierarchy description mechanism, + counters for specific errors, oldest message IDs, per-MTA + and per-group loop counters, and a new table for tracking + any errors an MTA encounters." + REVISION "199311280000Z" + DESCRIPTION + "The original version of this MIB was published in RFC 1566" + ::= {mib-2 28} + +mtaTable OBJECT-TYPE + SYNTAX SEQUENCE OF MtaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding information specific to an MTA." + ::= {mta 1} + +mtaEntry OBJECT-TYPE + SYNTAX MtaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry associated with each MTA." + INDEX {applIndex} + ::= {mtaTable 1} + +MtaEntry ::= SEQUENCE { + mtaReceivedMessages + Counter32, + mtaStoredMessages + Gauge32, + mtaTransmittedMessages + Counter32, + mtaReceivedVolume + Counter32, + mtaStoredVolume + Gauge32, + mtaTransmittedVolume + Counter32, + mtaReceivedRecipients + Counter32, + mtaStoredRecipients + Gauge32, + mtaTransmittedRecipients + Counter32, + mtaSuccessfulConvertedMessages + Counter32, + mtaFailedConvertedMessages + Counter32, + mtaLoopsDetected + Counter32 +} + +mtaReceivedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages received since MTA initialization. + This includes messages transmitted to this MTA from other + MTAs as well as messages that have been submitted to the + MTA directly by end-users or applications." + ::= {mtaEntry 1} + +mtaStoredMessages OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages currently stored in the MTA. + This includes messages that are awaiting transmission to + some other MTA or are waiting for delivery to an end-user + or application." + ::= {mtaEntry 2} + +mtaTransmittedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages transmitted since MTA initialization. + This includes messages that were transmitted to some other + MTA or are waiting for delivery to an end-user or + application." + ::= {mtaEntry 3} + +mtaReceivedVolume OBJECT-TYPE + SYNTAX Counter32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages received since MTA + initialization, measured in kilo-octets. This volume should + include all transferred data that is logically above the mail + transport protocol level. For example, an SMTP-based MTA + should use the number of kilo-octets in the message header + and body, while an X.400-based MTA should use the number of + kilo-octets of P2 data. This includes messages transmitted + to this MTA from other MTAs as well as messages that have + been submitted to the MTA directly by end-users or + applications." + ::= {mtaEntry 4} + +mtaStoredVolume OBJECT-TYPE + SYNTAX Gauge32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages currently stored in the MTA, + measured in kilo-octets. This volume should include all + stored data that is logically above the mail transport + protocol level. For example, an SMTP-based MTA should + use the number of kilo-octets in the message header and + body, while an X.400-based MTA would use the number of + kilo-octets of P2 data. This includes messages that are + awaiting transmission to some other MTA or are waiting + for delivery to an end-user or application." + ::= {mtaEntry 5} + +mtaTransmittedVolume OBJECT-TYPE + SYNTAX Counter32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages transmitted since MTA + initialization, measured in kilo-octets. This volume should + include all transferred data that is logically above the mail + transport protocol level. For example, an SMTP-based MTA + should use the number of kilo-octets in the message header + and body, while an X.400-based MTA should use the number of + kilo-octets of P2 data. This includes messages that were + transmitted to some other MTA or are waiting for delivery + to an end-user or application." + ::= {mtaEntry 6} + +mtaReceivedRecipients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + received since MTA initialization. Recipients this MTA + has no responsibility for, i.e. inactive envelope + recipients or ones referred to in message headers, + should not be counted even if information about such + recipients is available. This includes messages + transmitted to this MTA from other MTAs as well as + messages that have been submitted to the MTA directly + by end-users or applications." + ::= {mtaEntry 7} + +mtaStoredRecipients OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + currently stored in the MTA. Recipients this MTA has no + responsibility for, i.e. inactive envelope recipients or + ones referred to in message headers, should not be + counted. This includes messages that are awaiting + transmission to some other MTA or are waiting for + delivery to an end-user or application." + ::= {mtaEntry 8} + +mtaTransmittedRecipients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + transmitted since MTA initialization. Recipients this + MTA had no responsibility for, i.e. inactive envelope + recipients or ones referred to in message headers, + should not be counted. This includes messages that were + transmitted to some other MTA or are waiting for + delivery to an end-user or application." + ::= {mtaEntry 9} + +mtaSuccessfulConvertedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been successfully + converted from one form to another since MTA + initialization." + ::= {mtaEntry 10} + +mtaFailedConvertedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages for which an unsuccessful + attempt was made to convert them from one form to + another since MTA initialization." + ::= {mtaEntry 11} + +mtaLoopsDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A message loop is defined as a situation where the MTA + decides that a given message will never be delivered to + one or more recipients and instead will continue to + loop endlessly through one or more MTAs. This variable + counts the number of times the MTA has detected such a + situation since MTA initialization. Note that the + mechanism MTAs use to detect loops (e.g., trace field + counting, count of references to this MTA in a trace + field, examination of DNS or other directory information, + etc.), the level at which loops are detected (e.g., per + message, per recipient, per directory entry, etc.), and + the handling of a loop once it is detected (e.g., looping + messages are held, looping messages are bounced or sent + to the postmaster, messages that the MTA knows will loop + won't be accepted, etc.) vary widely from one MTA to the + next and cannot be inferred from this variable." + ::= {mtaEntry 12} + +-- MTAs typically group inbound reception, queue storage, and +-- outbound transmission in some way, rather than accounting for +-- such operations only across the MTA as a whole. In the most +-- extreme case separate information will be maintained for each +-- different entity that receives messages and for each entity +-- the MTA stores messages for and delivers messages to. Other +-- MTAs may elect to treat all reception equally, all queue +-- storage equally, all deliveries equally, or some combination +-- of this. Overlapped groupings are also possible, where an MTA +-- decomposes its traffic in different ways for different +-- purposes. + +-- In any case, a grouping abstraction is an extremely useful for +-- breaking down the activities of an MTA. For purposes of +-- labelling this will be called a "group" in this MIB. + +-- Each group contains all the variables needed to monitor all +-- aspects of an MTA's operation. However, the fact that all +-- groups contain all possible variables does not imply that all +-- groups must use all possible variables. For example, a single +-- group might be used to monitor only one kind of event (inbound +-- processing, outbound processing, or storage). In this sort of +-- configuration any counters that are unused as a result of a +-- given MTA's use of the group construct must be inaccessible; +-- e.g., returning either a noSuchName error (for an SNMPv1 get), +-- or a noSuchInstance exception (for an SNMPv2 get). + +-- Groups can be created at any time after MTA initialization. Once +-- a group is created it should not be deleted or its mtaGroupIndex +-- changed unless the MTA is reinitialized. + +-- Groups are not necessarily mutually exclusive. A given event may +-- be recorded by more than one group, a message may be seen as +-- stored by more than one group, and so on. Groups should be all +-- inclusive, however: if groups are implemented all aspects of an +-- MTA's operation should be registered in at least one group. +-- This freedom lets implementors use different sets of groups to +-- provide different "views" of an MTA. + +-- The possibility of overlap between groups means that summing +-- variables across groups may not produce values equal to those in +-- the mtaTable. mtaTable should always provide accurate information + +-- about the MTA as a whole. + +-- The term "channel" is often used in MTA implementations; channels +-- are usually, but not always, equivalent to a group. However, +-- this MIB does not use the term "channel" because there is no +-- requirement that an MTA supporting this MIB has to map its +-- "channel" abstraction one-to-one onto the MIB's group abstraction. + +-- An MTA may create a group or group of groups at any time. Once +-- created, however, an MTA cannot delete an entry for a group from +-- the group table. Deletion is only allowed when the MTA is +-- reinitialized, and is not required even then. This restriction +-- is imposed so that monitoring agents can rely on group +-- assignments being consistent across multiple query operations. + +-- Groups may be laid out so as to form a hierarchical arrangement, +-- with some groups acting as subgroups for other groups. +-- Alternately, disjoint groups of groups may be used to provide +-- different sorts of "snapshots" of MTA operation. The +-- mtaGroupHierarchy variable provides an indication of how each +-- group fits into the overall arrangement being used. + +-- Note that SNMP also defines and uses term "group". MTA groups are +-- NOT the same as SNMP groups. + +mtaGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MtaGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding information specific to each MTA group." + ::= {mta 2} + +mtaGroupEntry OBJECT-TYPE + SYNTAX MtaGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry associated with each MTA group." + INDEX {applIndex, mtaGroupIndex} + ::= {mtaGroupTable 1} + +MtaGroupEntry ::= SEQUENCE { + mtaGroupIndex + INTEGER, + mtaGroupReceivedMessages + Counter32, + mtaGroupRejectedMessages + Counter32, + mtaGroupStoredMessages + Gauge32, + mtaGroupTransmittedMessages + Counter32, + mtaGroupReceivedVolume + Counter32, + mtaGroupStoredVolume + Gauge32, + mtaGroupTransmittedVolume + Counter32, + mtaGroupReceivedRecipients + Counter32, + mtaGroupStoredRecipients + Gauge32, + mtaGroupTransmittedRecipients + Counter32, + mtaGroupOldestMessageStored + TimeInterval, + mtaGroupInboundAssociations + Gauge32, + mtaGroupOutboundAssociations + Gauge32, + mtaGroupAccumulatedInboundAssociations + Counter32, + mtaGroupAccumulatedOutboundAssociations + Counter32, + mtaGroupLastInboundActivity + TimeInterval, + mtaGroupLastOutboundActivity + TimeInterval, + mtaGroupLastOutboundAssociationAttempt + TimeInterval, + mtaGroupRejectedInboundAssociations + Counter32, + mtaGroupFailedOutboundAssociations + Counter32, + mtaGroupInboundRejectionReason + SnmpAdminString, + mtaGroupOutboundConnectFailureReason + SnmpAdminString, + mtaGroupScheduledRetry + TimeInterval, + mtaGroupMailProtocol + OBJECT IDENTIFIER, + mtaGroupName + SnmpAdminString, + mtaGroupSuccessfulConvertedMessages + Counter32, + mtaGroupFailedConvertedMessages + Counter32, + mtaGroupDescription + SnmpAdminString, + mtaGroupURL + URLString, + mtaGroupCreationTime + TimeInterval, + mtaGroupHierarchy + INTEGER, + mtaGroupOldestMessageId + SnmpAdminString, + mtaGroupLoopsDetected + Counter32 +} + +mtaGroupIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index associated with a group for a given MTA." + ::= {mtaGroupEntry 1} + +mtaGroupReceivedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages received to this group since + group creation." + ::= {mtaGroupEntry 2} + +mtaGroupRejectedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages rejected by this group since + group creation." + ::= {mtaGroupEntry 3} + +mtaGroupStoredMessages OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages currently stored in this + group's queue." + ::= {mtaGroupEntry 4} + +mtaGroupTransmittedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages transmitted by this group since + group creation." + ::= {mtaGroupEntry 5} + +mtaGroupReceivedVolume OBJECT-TYPE + SYNTAX Counter32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages received to this group since + group creation, measured in kilo-octets. This volume + should include all transferred data that is logically above + the mail transport protocol level. For example, an + SMTP-based MTA should use the number of kilo-octets in the + message header and body, while an X.400-based MTA should use + the number of kilo-octets of P2 data." + ::= {mtaGroupEntry 6} + +mtaGroupStoredVolume OBJECT-TYPE + SYNTAX Gauge32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages currently stored in this + group's queue, measured in kilo-octets. This volume should + include all stored data that is logically above the mail + transport protocol level. For example, an SMTP-based + MTA should use the number of kilo-octets in the message + header and body, while an X.400-based MTA would use the + number of kilo-octets of P2 data." + ::= {mtaGroupEntry 7} + +mtaGroupTransmittedVolume OBJECT-TYPE + SYNTAX Counter32 + UNITS "K-octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total volume of messages transmitted by this group + since group creation, measured in kilo-octets. This + volume should include all transferred data that is logically + above the mail transport protocol level. For example, an + SMTP-based MTA should use the number of kilo-octets in the + message header and body, while an X.400-based MTA should use + the number of kilo-octets of P2 data." + ::= {mtaGroupEntry 8} + +mtaGroupReceivedRecipients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + received to this group since group creation. + Recipients this MTA has no responsibility for should not + be counted." + ::= {mtaGroupEntry 9} + +mtaGroupStoredRecipients OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + currently stored in this group's queue. Recipients this + MTA has no responsibility for should not be counted." + ::= {mtaGroupEntry 10} + +mtaGroupTransmittedRecipients OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of recipients specified in all messages + transmitted by this group since group creation. + Recipients this MTA had no responsibility for should not + be counted." + ::= {mtaGroupEntry 11} + +mtaGroupOldestMessageStored OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the oldest message in this group's queue was + placed in the queue." + ::= {mtaGroupEntry 12} + +mtaGroupInboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current associations to the group, where the + group is the responder." + ::= {mtaGroupEntry 13} + +mtaGroupOutboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current associations to the group, where the + group is the initiator." + ::= {mtaGroupEntry 14} + +mtaGroupAccumulatedInboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of associations to the group since + group creation, where the MTA was the responder." + ::= {mtaGroupEntry 15} + +mtaGroupAccumulatedOutboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of associations from the group since + group creation, where the MTA was the initiator." + ::= {mtaGroupEntry 16} + +mtaGroupLastInboundActivity OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the last time that this group had an active + inbound association for purposes of message reception." + ::= {mtaGroupEntry 17} + +mtaGroupLastOutboundActivity OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the last time that this group had a + successful outbound association for purposes of + message delivery." + ::= {mtaGroupEntry 18} + +mtaGroupLastOutboundAssociationAttempt OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since the last time that this group attempted + to make an outbound association for purposes of + message delivery." + ::= {mtaGroupEntry 34} + +mtaGroupRejectedInboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of inbound associations the group has + rejected, since group creation. Rejected associations + are not counted in the accumulated association totals." + ::= {mtaGroupEntry 19} + +mtaGroupFailedOutboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number associations where the group was the + initiator and association establishment has failed, + since group creation. Failed associations are + not counted in the accumulated association totals." + ::= {mtaGroupEntry 20} + +mtaGroupInboundRejectionReason OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The failure reason, if any, for the last association this + group refused to respond to. If no association attempt + has been made since the MTA was initialized the value + should be 'never'." + ::= {mtaGroupEntry 21} + +mtaGroupOutboundConnectFailureReason OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The failure reason, if any, for the last association attempt + this group initiated. If no association attempt has been + made since the MTA was initialized the value should be + 'never'." + ::= {mtaGroupEntry 22} + +mtaGroupScheduledRetry OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time until this group is next scheduled to + attempt to make an association." + ::= {mtaGroupEntry 23} + +mtaGroupMailProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identification of the protocol being used by this group. + For an group employing OSI protocols, this will be the + Application Context. For Internet applications, OID + values of the form {applTCPProtoID port} or {applUDPProtoID + port} are used for TCP-based and UDP-based protocols, + respectively. In either case 'port' corresponds to the + primary port number being used by the protocol. The + usual IANA procedures may be used to register ports for + new protocols. applTCPProtoID and applUDPProtoID are + defined in the NETWORK-SERVICES-MIB, RFC 2788." + ::= {mtaGroupEntry 24} + +mtaGroupName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A descriptive name for the group. If this group connects to + a single remote MTA this should be the name of that MTA. If + this in turn is an Internet MTA this should be the domain + name. For an OSI MTA it should be the string encoded + distinguished name of the managed object using the format + defined in RFC 2253. For X.400(1984) MTAs which do not + have a Distinguished Name, the RFC 2156 syntax + 'mta in globalid' used in X400-Received: fields can be + used." + ::= {mtaGroupEntry 25} + +mtaGroupSuccessfulConvertedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages that have been successfully + converted from one form to another in this group + since group creation." + ::= {mtaGroupEntry 26} + +mtaGroupFailedConvertedMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of messages for which an unsuccessful + attempt was made to convert them from one form to + another in this group since group creation." + ::= {mtaGroupEntry 27} + +mtaGroupDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of the group's purpose. This information is + intended to identify the group in a status display." + ::= {mtaGroupEntry 28} + +mtaGroupURL OBJECT-TYPE + SYNTAX URLString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A URL pointing to a description of the group. This + information is intended to identify and briefly describe + the group in a status display." + ::= {mtaGroupEntry 29} + +mtaGroupCreationTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time since this group was first created." + ::= {mtaGroupEntry 30} + +mtaGroupHierarchy OBJECT-TYPE + SYNTAX INTEGER (-2147483648..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes how this group fits into the hierarchy. A + positive value is interpreted as an mtaGroupIndex + value for some other group whose variables include + those of this group (and usually others). A negative + value is interpreted as a group collection code: Groups + with common negative hierarchy values comprise one + particular breakdown of MTA activity as a whole. A + zero value means that this MIB implementation doesn't + implement hierarchy indicators and thus the overall + group hierarchy cannot be determined." + ::= {mtaGroupEntry 31} + +mtaGroupOldestMessageId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Message ID of the oldest message in the group's queue. + Whenever possible this should be in the form of an + RFC 822 msg-id; X.400 may convert X.400 message + identifiers to this form by following the rules laid + out in RFC2156." + ::= {mtaGroupEntry 32} + +mtaGroupLoopsDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A message loop is defined as a situation where the MTA + decides that a given message will never be delivered to + one or more recipients and instead will continue to + loop endlessly through one or more MTAs. This variable + counts the number of times the MTA has detected such a + situation in conjunction with something associated with + this group since group creation. Note that the + mechanism MTAs use to detect loops (e.g., trace field + counting, count of references to this MTA in a trace + field, examination of DNS or other directory information, + etc.), the level at which loops are detected (e.g., per + message, per recipient, per directory entry, etc.), and + the handling of a loop once it is detected (e.g., looping + messages are held, looping messages are bounced or sent + to the postmaster, messages that the MTA knows will loop + won't be accepted, etc.) vary widely from one MTA to the + next and cannot be inferred from this variable." + ::= {mtaGroupEntry 33} + +-- The mtaGroupAssociationTable provides a means of correlating +-- entries in the network services association table with the +-- MTA group responsible for the association. + +mtaGroupAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF MtaGroupAssociationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding information regarding the associations + for each MTA group." + ::= {mta 3} + +mtaGroupAssociationEntry OBJECT-TYPE + SYNTAX MtaGroupAssociationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry holding information regarding the associations + for each MTA group." + INDEX {applIndex, mtaGroupIndex, mtaGroupAssociationIndex} + ::= {mtaGroupAssociationTable 1} + +MtaGroupAssociationEntry ::= SEQUENCE { + mtaGroupAssociationIndex + INTEGER +} + +mtaGroupAssociationIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reference into association table to allow correlation of + this group's active associations with the association table." + ::= {mtaGroupAssociationEntry 1} + +-- The mtaGroupErrorTable gives each group a way of tallying +-- the specific errors it has encountered. The mechanism +-- defined here uses RFC 1893 status codes to identify +-- various specific errors. There are also classes for generic +-- errors of various sorts, and the entire mechanism is also +-- extensible, in that new error codes can be defined at any +-- time. + +mtaGroupErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF MtaGroupErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding information regarding accumulated errors + for each MTA group." + ::= {mta 5} + +mtaGroupErrorEntry OBJECT-TYPE + SYNTAX MtaGroupErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry holding information regarding accumulated + errors for each MTA group." + INDEX {applIndex, mtaGroupIndex, mtaStatusCode} + ::= {mtaGroupErrorTable 1} + +MtaGroupErrorEntry ::= SEQUENCE { + mtaStatusCode + INTEGER, + mtaGroupInboundErrorCount + Counter32, + mtaGroupInternalErrorCount + Counter32, + mtaGroupOutboundErrorCount + Counter32 +} + +mtaGroupInboundErrorCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of errors of a given type that have + been accumulated in association with a particular group + while processing incoming messages. In the case of SMTP + these will typically be errors reporting by an SMTP + server to the remote client; in the case of X.400 + these will typically be errors encountered while + processing an incoming message." + ::= {mtaGroupErrorEntry 1} + +mtaGroupInternalErrorCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of errors of a given type that have + been accumulated in association with a particular group + during internal MTA processing." + ::= {mtaGroupErrorEntry 2} + +mtaGroupOutboundErrorCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the number of errors of a given type that have + been accumulated in association with a particular group's + outbound connection activities. In the case of an SMTP + client these will typically be errors reported while + attempting to contact or while communicating with the + remote SMTP server. In the case of X.400 these will + typically be errors encountered while constructing + or attempting to deliver an outgoing message." + ::= {mtaGroupErrorEntry 3} + +mtaStatusCode OBJECT-TYPE + SYNTAX INTEGER (4000000..5999999) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index capable of representing an Enhanced Mail System + Status Code. Enhanced Mail System Status Codes are + defined in RFC 1893. These codes have the form + + class.subject.detail + + Here 'class' is either 2, 4, or 5 and both 'subject' and + 'detail' are integers in the range 0..999. Given a status + code the corresponding index value is defined to be + ((class * 1000) + subject) * 1000 + detail. Both SMTP + error response codes and X.400 reason and diagnostic codes + can be mapped into these codes, resulting in a namespace + capable of describing most error conditions a mail system + encounters in a generic yet detailed way." + ::= {mtaGroupErrorEntry 4} + +-- Conformance information + +mtaConformance OBJECT IDENTIFIER ::= {mta 4} + +mtaGroups OBJECT IDENTIFIER ::= {mtaConformance 1} +mtaCompliances OBJECT IDENTIFIER ::= {mtaConformance 2} + + +-- Compliance statements + +mtaCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 1566 implementations + which support the Mail Monitoring MIB for basic + monitoring of MTAs." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC1566Group} + ::= {mtaCompliances 1} + +mtaAssocCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 1566 implementations + which support the Mail Monitoring MIB for monitoring + of MTAs and their associations." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC1566Group, mtaRFC1566AssocGroup} + ::= {mtaCompliances 2} + +mtaRFC2249Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2249 implementations + which support the Mail Monitoring MIB for basic + monitoring of MTAs." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2249Group} + ::= {mtaCompliances 5} + +mtaRFC2249AssocCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2249 implementations + which support the Mail Monitoring MIB for monitoring of + MTAs and their associations." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2249Group, mtaRFC2249AssocGroup} + ::= {mtaCompliances 6} + +mtaRFC2249ErrorCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2249 implementations + which support the Mail Monitoring MIB for monitoring of + MTAs and detailed errors." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2249Group, mtaRFC2249ErrorGroup} + ::= {mtaCompliances 7} + +mtaRFC2249FullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2249 implementations + which support the full Mail Monitoring MIB for + monitoring of MTAs, associations, and detailed errors." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2249Group, mtaRFC2249AssocGroup, + mtaRFC2249ErrorGroup} + ::= {mtaCompliances 8} + +mtaRFC2789Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2789 implementations + which support the Mail Monitoring MIB for basic + monitoring of MTAs." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2789Group} + ::= {mtaCompliances 9} + +mtaRFC2789AssocCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2789 implementations + which support the Mail Monitoring MIB for monitoring of + MTAs and their associations." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2789Group, mtaRFC2789AssocGroup} + ::= {mtaCompliances 10} + +mtaRFC2789ErrorCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2789 implementations + which support the Mail Monitoring MIB for monitoring of + MTAs and detailed errors." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2789Group, mtaRFC2789ErrorGroup} + ::= {mtaCompliances 11} + +mtaRFC2789FullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2789 implementations + which support the full Mail Monitoring MIB for + monitoring of MTAs, associations, and detailed errors." + MODULE -- this module + MANDATORY-GROUPS {mtaRFC2789Group, mtaRFC2789AssocGroup, + mtaRFC2789ErrorGroup} + ::= {mtaCompliances 12} + +-- Units of conformance + +mtaRFC1566Group OBJECT-GROUP + OBJECTS { + mtaReceivedMessages, mtaStoredMessages, + mtaTransmittedMessages, mtaReceivedVolume, mtaStoredVolume, + mtaTransmittedVolume, mtaReceivedRecipients, + mtaStoredRecipients, mtaTransmittedRecipients, + mtaGroupReceivedMessages, mtaGroupRejectedMessages, + mtaGroupStoredMessages, mtaGroupTransmittedMessages, + mtaGroupReceivedVolume, mtaGroupStoredVolume, + mtaGroupTransmittedVolume, mtaGroupReceivedRecipients, + mtaGroupStoredRecipients, mtaGroupTransmittedRecipients, + mtaGroupOldestMessageStored, mtaGroupInboundAssociations, + mtaGroupOutboundAssociations, + mtaGroupAccumulatedInboundAssociations, + mtaGroupAccumulatedOutboundAssociations, + mtaGroupLastInboundActivity, mtaGroupLastOutboundActivity, + mtaGroupRejectedInboundAssociations, + mtaGroupFailedOutboundAssociations, + mtaGroupInboundRejectionReason, + mtaGroupOutboundConnectFailureReason, + mtaGroupScheduledRetry, mtaGroupMailProtocol, mtaGroupName} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of MTAs. + This is the original set of such objects defined in RFC + 1566." + ::= {mtaGroups 10} + +mtaRFC1566AssocGroup OBJECT-GROUP + OBJECTS { + mtaGroupAssociationIndex} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of MTA + associations. This is the original set of such objects + defined in RFC 1566." + ::= {mtaGroups 11} + +mtaRFC2249Group OBJECT-GROUP + OBJECTS { + mtaReceivedMessages, mtaStoredMessages, + mtaTransmittedMessages, mtaReceivedVolume, mtaStoredVolume, + mtaTransmittedVolume, mtaReceivedRecipients, + mtaStoredRecipients, mtaTransmittedRecipients, + mtaSuccessfulConvertedMessages, mtaFailedConvertedMessages, + mtaGroupReceivedMessages, mtaGroupRejectedMessages, + mtaGroupStoredMessages, mtaGroupTransmittedMessages, + mtaGroupReceivedVolume, mtaGroupStoredVolume, + mtaGroupTransmittedVolume, mtaGroupReceivedRecipients, + mtaGroupStoredRecipients, mtaGroupTransmittedRecipients, + mtaGroupOldestMessageStored, mtaGroupInboundAssociations, + mtaGroupOutboundAssociations, mtaLoopsDetected, + mtaGroupAccumulatedInboundAssociations, + mtaGroupAccumulatedOutboundAssociations, + mtaGroupLastInboundActivity, mtaGroupLastOutboundActivity, + mtaGroupLastOutboundAssociationAttempt, + mtaGroupRejectedInboundAssociations, + mtaGroupFailedOutboundAssociations, + mtaGroupInboundRejectionReason, + mtaGroupOutboundConnectFailureReason, + mtaGroupScheduledRetry, mtaGroupMailProtocol, mtaGroupName, + mtaGroupSuccessfulConvertedMessages, + mtaGroupFailedConvertedMessages, mtaGroupDescription, + mtaGroupURL, mtaGroupCreationTime, mtaGroupHierarchy, + mtaGroupOldestMessageId, mtaGroupLoopsDetected} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of MTAs. + This group was originally defined in RFC 2249." + ::= {mtaGroups 4} + +mtaRFC2249AssocGroup OBJECT-GROUP + OBJECTS { + mtaGroupAssociationIndex} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of MTA + associations. This group was originally defined in RFC + 2249." + ::= {mtaGroups 5} + +mtaRFC2249ErrorGroup OBJECT-GROUP + OBJECTS { + mtaGroupInboundErrorCount, mtaGroupInternalErrorCount, + mtaGroupOutboundErrorCount} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of + detailed MTA errors. This group was originally defined + in RFC 2249." + ::= {mtaGroups 6} + +mtaRFC2789Group OBJECT-GROUP + OBJECTS { + mtaReceivedMessages, mtaStoredMessages, + mtaTransmittedMessages, mtaReceivedVolume, mtaStoredVolume, + mtaTransmittedVolume, mtaReceivedRecipients, + mtaStoredRecipients, mtaTransmittedRecipients, + mtaSuccessfulConvertedMessages, mtaFailedConvertedMessages, + mtaGroupReceivedMessages, mtaGroupRejectedMessages, + mtaGroupStoredMessages, mtaGroupTransmittedMessages, + mtaGroupReceivedVolume, mtaGroupStoredVolume, + mtaGroupTransmittedVolume, mtaGroupReceivedRecipients, + mtaGroupStoredRecipients, mtaGroupTransmittedRecipients, + mtaGroupOldestMessageStored, mtaGroupInboundAssociations, + mtaGroupOutboundAssociations, mtaLoopsDetected, + mtaGroupAccumulatedInboundAssociations, + mtaGroupAccumulatedOutboundAssociations, + mtaGroupLastInboundActivity, mtaGroupLastOutboundActivity, + mtaGroupLastOutboundAssociationAttempt, + mtaGroupRejectedInboundAssociations, + mtaGroupFailedOutboundAssociations, + mtaGroupInboundRejectionReason, + mtaGroupOutboundConnectFailureReason, + mtaGroupScheduledRetry, mtaGroupMailProtocol, mtaGroupName, + mtaGroupSuccessfulConvertedMessages, + mtaGroupFailedConvertedMessages, mtaGroupDescription, + mtaGroupURL, mtaGroupCreationTime, mtaGroupHierarchy, + mtaGroupOldestMessageId, mtaGroupLoopsDetected} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of MTAs. + This is the appropriate group for RFC 2789." + ::= {mtaGroups 7} + +mtaRFC2789AssocGroup OBJECT-GROUP + OBJECTS { + mtaGroupAssociationIndex} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of MTA + associations. This is the appropriate group for RFC + 2789 association monitoring." + ::= {mtaGroups 8} + +mtaRFC2789ErrorGroup OBJECT-GROUP + OBJECTS { + mtaGroupInboundErrorCount, mtaGroupInternalErrorCount, + mtaGroupOutboundErrorCount} + STATUS current + DESCRIPTION + "A collection of objects providing monitoring of + detailed MTA errors. This is the appropriate group + for RFC 2789 error monitoring." + ::= {mtaGroups 9} + +END diff --git a/mibs/ietf/Makefile.am b/mibs/ietf/Makefile.am new file mode 100644 index 0000000..d2627b6 --- /dev/null +++ b/mibs/ietf/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/ietf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1606 2003-12-01 12:24:15Z strauss $ +# + +ietfdir = $(mibdir)/ietf +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +ietf_DATA = $(MIBS) diff --git a/mibs/ietf/Makefile.in b/mibs/ietf/Makefile.in new file mode 100644 index 0000000..861e8b9 --- /dev/null +++ b/mibs/ietf/Makefile.in @@ -0,0 +1,388 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/ietf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1606 2003-12-01 12:24:15Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/ietf +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(ietfdir)" +ietfDATA_INSTALL = $(INSTALL_DATA) +DATA = $(ietf_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ietfdir = $(mibdir)/ietf +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +ietf_DATA = $(MIBS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/ietf/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/ietf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-ietfDATA: $(ietf_DATA) + @$(NORMAL_INSTALL) + test -z "$(ietfdir)" || $(MKDIR_P) "$(DESTDIR)$(ietfdir)" + @list='$(ietf_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(ietfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ietfdir)/$$f'"; \ + $(ietfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ietfdir)/$$f"; \ + done + +uninstall-ietfDATA: + @$(NORMAL_UNINSTALL) + @list='$(ietf_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(ietfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(ietfdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(ietfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-ietfDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-ietfDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-ietfDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-ietfDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/ietf/Modem-MIB b/mibs/ietf/Modem-MIB new file mode 100644 index 0000000..64116c0 --- /dev/null +++ b/mibs/ietf/Modem-MIB @@ -0,0 +1,1340 @@ +Modem-MIB DEFINITIONS ::= BEGIN + + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32 FROM SNMPv2-SMI + DisplayString FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + mib-2 FROM RFC1213-MIB; + + +mdmMIB MODULE-IDENTITY + LAST-UPDATED "9406120000Z" + ORGANIZATION "IETF Modem Management Working Group" + CONTACT-INFO + " Steven Waldbusser + Postal: Carnegie Mellon University + 5000 Forbes Ave + Pittsburgh, PA, 15213 + US + + Tel: +1 412 268 6628 + Fax: +1 412 268 4987 + E-mail: waldbusser@cmu.edu" + DESCRIPTION + "The MIB module for management of dial-up modems." + ::= { mdmMib 1 } + +mdmMib OBJECT IDENTIFIER ::= { mib-2 38 } + +mdmMIBObjects OBJECT IDENTIFIER ::= { mdmMIB 1 } + + +-- conformance information + +mdmConformance OBJECT IDENTIFIER ::= { mdmMIB 2 } + +mdmCompliances OBJECT IDENTIFIER ::= { mdmConformance 1 } +mdmGroups OBJECT IDENTIFIER ::= { mdmConformance 2 } + +-- units of conformance + +mdmIDGroup OBJECT-GROUP + OBJECTS { mdmIDManufacturerOID, mdmIDProductDetails } + STATUS current + DESCRIPTION + "A collection of objects that identify the manufacturer and + model information for a modem." + ::= { mdmGroups 1 } + +mdmLineInterfaceGroup OBJECT-GROUP + OBJECTS { mdmLineCarrierLossTime, + mdmLineState, mdmLineCapabilitiesID, + mdmLineCapabilitiesEnableRequested, + mdmLineCapabilitiesEnableGranted } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of the modem's line interface." + ::= { mdmGroups 2 } + +mdmDTEInterfaceGroup OBJECT-GROUP + OBJECTS { mdmDTEActionDTROnToOff, mdmDTEActionDTROffToOn, + mdmDTESyncTimingSource, mdmDTESyncAsyncMode, + mdmDTEInactivityTimeout } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of the modem's DTE interface." + ::= { mdmGroups 3 } + +mdmCallControlGroup OBJECT-GROUP + OBJECTS { mdmCCRingsBeforeAnswer, + mdmCCCallSetUpFailTimer, mdmCCResultCodeEnable, + mdmCCEscapeAction, mdmCCCallDuration, + mdmCCConnectionFailReason, mdmCCStoredDialString } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration of + call control capabilities on the modem and the status of + calls placed with this modem." + ::= { mdmGroups 4 } + +mdmErrorControlGroup OBJECT-GROUP + OBJECTS { mdmECErrorControlUsed } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of error control on a modem." + ::= { mdmGroups 5 } + +mdmDataCompressionGroup OBJECT-GROUP + OBJECTS { mdmDCCompressionTypeUsed } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of data compression on a modem." + ::= { mdmGroups 6 } + +mdmSignalConvertorGroup OBJECT-GROUP +OBJECTS { mdmSCCurrentLineReceiveRate, mdmSCCurrentLineTransmitRate, + mdmSCInitialLineReceiveRate, mdmSCInitialLineTransmitRate, + mdmSCModulationSchemeUsed } + STATUS current + DESCRIPTION + "A collection of objects that describe the configuration and + state of error control on a modem." + ::= { mdmGroups 7 } + +mdmStatisticsGroup OBJECT-GROUP + OBJECTS { mdmStatsRingNoAnswers, + mdmStatsIncomingConnectionFailures, + mdmStatsIncomingConnectionCompletions, + mdmStatsFailedDialAttempts, + mdmStatsOutgoingConnectionFailures, + mdmStatsOutgoingConnectionCompletions, + mdmStatsRetrains, + mdmStats2400OrLessConnections, mdmStats2400To14400Connections, + mdmStatsGreaterThan14400Connections, + mdmStatsErrorControlledConnections, + mdmStatsCompressedConnections, + mdmStatsCompressionEfficiency, + mdmStatsSentOctets, mdmStatsReceivedOctets, + mdmStatsSentDataFrames, mdmStatsReceivedDataFrames, + mdmStatsResentFrames, mdmStatsErrorFrames } + STATUS current + DESCRIPTION + "A collection of objects that describe the state of calls on + this modem." + ::= { mdmGroups 8 } + +mdmNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of modem rows in the modem table. This value + defines the maximum value of the mdmIndex object." + ::= { mdmMIBObjects 1 } + +-- The modem ID table. + +mdmIDTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmIDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The base table for the modems managed by this MIB. The + mdmLineTable, mdmDTEInterfaceTable, mdmCallControlTable, and + mdmStatsTable all augment the rows defined in this table." + ::= { mdmMIBObjects 2 } + +mdmIDEntry OBJECT-TYPE + SYNTAX MdmIDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + INDEX { mdmIndex } + ::= { mdmIDTable 1 } + +MdmIDEntry ::= SEQUENCE { + mdmIndex Integer32, + mdmIDManufacturerOID OBJECT IDENTIFIER, + mdmIDProductDetails DisplayString +} + +mdmIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique number for each modem that ranges from 1 to + mdmNumber. The value must remain constant at least from one + re-initialization of the network management agent to the + next." + ::= { mdmIDEntry 1 } + +mdmIDManufacturerOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value is intended to identify the manufacturer, model, + and version of this modem. This may be used to identify the + existance of enterprise-specific functions and behaviours." + REFERENCE + "V.58 attribute manufacturerID subfield ManufacturerOI" + ::= { mdmIDEntry 2 } + +mdmIDProductDetails OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..79)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of this device, including the + manufacturer's name, modem model name, hardware revision, + firmware revision, and optionally, its serial number. The + exact format of this description is defined by the vendor. + This description may only contain characters from the NVT + ASCII character set." + REFERENCE + "V.58 attribute manufacturerID subfield productDetails" + ::= { mdmIDEntry 3 } + +-- The modem Line Interface Table + +mdmLineTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem Line Table augments the modem ID table." + ::= { mdmMIBObjects 3 } + +mdmLineEntry OBJECT-TYPE + SYNTAX MdmLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmLineTable 1 } + +MdmLineEntry ::= SEQUENCE { + mdmLineCarrierLossTime Integer32, + mdmLineState INTEGER +} + +mdmLineCarrierLossTime OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Duration in 10ths of a second the modem waits after loss of + carrier before hanging up. If this value is set to `255', + the modem will not hang up upon loss of carrier. This + allows the modem to distinguish between a momentary lapse in + line quality and a true disconnect and can be useful to tune + the tolerance of the modem to lines of poor quality." + REFERENCE "V.58 lineSignalFailDisconnectTimer" + ::= { mdmLineEntry 1 } + +mdmLineState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + onHook(2), + offHook(3), -- and not connected + connected(4), + busiedOut(5), + reset(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Allows the inspection and alteration of the state of the + modem. Management commands may change the state to `on- + hook', `busied-out', or `reset' from any state. No other + alterations are permitted from the management protocol. + When this object is set to reset, the modem shall be reset + and the value will change to the modem's new, implementation + dependent state." + ::= { mdmLineEntry 2 } + +mdmLineCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmLineCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of protocol capabilities for this modem." + ::= { mdmMIBObjects 4 } + +mdmLineCapabilitiesEntry OBJECT-TYPE + SYNTAX MdmLineCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A listing of the protocol(s) that this modem is capable of. + Entries in this table are created only by the agent. One + entry exists for each protocol that the modem is capable of, + regardless of whether that protocol is enabled or not. + + This table is useful for providing an inventory of the + capabilities on a modem, and allowing the manager to enable + or disable capabilities from the menu of available + possibilities. Row creation is not required to enable or + disable capabilities." + INDEX { mdmIndex, mdmLineCapabilitiesIndex } + ::= { mdmLineCapabilitiesTable 1 } + +MdmLineCapabilitiesEntry ::= SEQUENCE { + mdmLineCapabilitiesIndex Integer32, + mdmLineCapabilitiesID OBJECT IDENTIFIER, + mdmLineCapabilitiesEnableRequested INTEGER, + mdmLineCapabilitiesEnableGranted INTEGER +} + +mdmLineCapabilitiesIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this capabilities entry." + ::= { mdmLineCapabilitiesEntry 1 } + +mdmLineCapabilitiesID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identifier for this capability. Standard protocol + capabilities will have identifiers registered in this + document or other companion standards documents. + Proprietary protocol capabilities will be registered by + their respective organization. All capabilities, standard + or vendor-specific, shall be registered in this table." + ::= { mdmLineCapabilitiesEntry 2 } + +mdmLineCapabilitiesEnableRequested OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + optional(2), + preferred(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The requested configuration of this capability. If this + value is 'disabled(1)', this is a request to disable this + protocol. If this value is 'preferred(3)', this is a + request to enable this protocol, and to prefer it in any + negotiation over other appropriate protocols that have a + value of 'optional(2)'." + DEFVAL { preferred } + ::= { mdmLineCapabilitiesEntry 3 } + +mdmLineCapabilitiesEnableGranted OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + optional(2), + preferred(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual configuration of this capability. The agent + shall attempt to set this as close as possible to the + associated mdmLineCapabilitiesEnableRequested value. The + agent shall make this determination in an implementation- + specific manner that may take into account the configuration + of other capabilities or other considerations. The modem + will choose in an implementation-specific manner between + multiple mutually-exclusive capabilities that each have the + same (non-disabled) value. However, the modem must prefer + all capabilities with a value of 'preferred(3)' over all + capabilities with a value of 'optional(2)'. + + In other words, if there are one or more mutually-exclusive + capabilities (e.g. V.32 and V.32bis) that are set to + `preferred', the agent must choose one in an + implementation-specific manner. Otherwise, if there are one + or more mutually-exclusive capabilities that are set to + `optional', the agent must choose one in an implementation- + specific manner." + ::= { mdmLineCapabilitiesEntry 4 } + +mdmLineCapabilities OBJECT IDENTIFIER ::= { mdmMIBObjects 5 } + +mdmLineCapabilitiesV21 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.21" + ::= { mdmLineCapabilities 1 } + +mdmLineCapabilitiesV22 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.22" + ::= { mdmLineCapabilities 2 } + +mdmLineCapabilitiesV22bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.22bis" + ::= { mdmLineCapabilities 3 } + +mdmLineCapabilitiesV23CC OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.23CC" + ::= { mdmLineCapabilities 4 } + +mdmLineCapabilitiesV23SC OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.23SC" + ::= { mdmLineCapabilities 5 } + +mdmLineCapabilitiesV25bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.25bis" + ::= { mdmLineCapabilities 6 } + +mdmLineCapabilitiesV26bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.26bis" + ::= { mdmLineCapabilities 7 } + +mdmLineCapabilitiesV26ter OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.26ter" + ::= { mdmLineCapabilities 8 } + +mdmLineCapabilitiesV27ter OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.27ter" + ::= { mdmLineCapabilities 9 } + +mdmLineCapabilitiesV32 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.32" + ::= { mdmLineCapabilities 10 } + +mdmLineCapabilitiesV32bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.32bis" + ::= { mdmLineCapabilities 11 } + +mdmLineCapabilitiesV32terbo OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.32terbo" + ::= { mdmLineCapabilities 12 } + +mdmLineCapabilitiesVFC OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.FC" + ::= { mdmLineCapabilities 13 } + +mdmLineCapabilitiesV34 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.34" + ::= { mdmLineCapabilities 14 } + +mdmLineCapabilitiesV42 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.42" + ::= { mdmLineCapabilities 15 } + +mdmLineCapabilitiesV42bis OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.42bis" + ::= { mdmLineCapabilities 16 } + +mdmLineCapabilitiesMNP1 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP1" + ::= { mdmLineCapabilities 17 } + +mdmLineCapabilitiesMNP2 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP2" + ::= { mdmLineCapabilities 18 } + +mdmLineCapabilitiesMNP3 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP3" + ::= { mdmLineCapabilities 19 } + +mdmLineCapabilitiesMNP4 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP4" + ::= { mdmLineCapabilities 20 } + +mdmLineCapabilitiesMNP5 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP5" + ::= { mdmLineCapabilities 21 } + +mdmLineCapabilitiesMNP6 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP6" + ::= { mdmLineCapabilities 22 } + +mdmLineCapabilitiesMNP7 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP7" + ::= { mdmLineCapabilities 23 } + +mdmLineCapabilitiesMNP8 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP8" + ::= { mdmLineCapabilities 24 } + +mdmLineCapabilitiesMNP9 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP9" + ::= { mdmLineCapabilities 25 } + +mdmLineCapabilitiesMNP10 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "MNP10" + ::= { mdmLineCapabilities 26 } + +mdmLineCapabilitiesV29 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.29" + ::= { mdmLineCapabilities 27 } + +mdmLineCapabilitiesV33 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "ITU V.33" + ::= { mdmLineCapabilities 28 } + +mdmLineCapabilitiesBell208 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Bell 208" + ::= { mdmLineCapabilities 29 } + + +-- DTE Interface Table + +mdmDTEInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmDTEInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem DTE Interface Table augments the modem ID table." + ::= { mdmMIBObjects 6 } + +mdmDTEInterfaceEntry OBJECT-TYPE + SYNTAX MdmDTEInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmDTEInterfaceTable 1 } + +MdmDTEInterfaceEntry ::= SEQUENCE { + mdmDTEActionDTROnToOff INTEGER, + mdmDTEActionDTROffToOn INTEGER, + mdmDTESyncTimingSource INTEGER, + mdmDTESyncAsyncMode INTEGER, + mdmDTEInactivityTimeout Integer32 +} + +mdmDTEActionDTROnToOff OBJECT-TYPE + SYNTAX INTEGER { + ignore(1), + escapeToCommandMode(2), + disconnectCall(3), + resetModem(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Defines the action the modem will take when DTR drops. + + If the value is set to ignore(1), the modem takes no action + when DTR drops. Typically, mdmDTEActionDTROffToOn would + also be set to ignore(1) if this object is set to ignore(1). + + If the value is escapeToCommandMode(2), the modem remains + connected and enters command mode. If the value is + disconnectCall(3), the current call (if any) is terminated + and the modem will not auto-answer while DTR is off. If the + value is resetModem(4), the current call (if any) is + terminated and the modem is reset." + DEFVAL { disconnectCall } + ::= { mdmDTEInterfaceEntry 1 } + +mdmDTEActionDTROffToOn OBJECT-TYPE + SYNTAX INTEGER { + ignore(1), + enableDial(2), + autoAnswerEnable(3), + establishConnection(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Defines the action the modem will take when DTR is raised. + + If the value is set to ignore(1), the modem takes no action + when DTR is raised. Typically, mdmDTEActionDTROnToOff would + also be set to ignore(1) if this object is set to ignore(1). + + If the value is set to enableDial(2), the modem prepares to + dial an outgoing call. If the value is set to + autoAnswerEnable(3), the modem will be configured to answer + any incoming call. If the value is set to + establishConnection(4), the modem dials an implementation + specific number. + + Immediately after any reset or power-on of the modem, if the + DTR is high, the action specified here will be executed." + DEFVAL { autoAnswerEnable } + ::= { mdmDTEInterfaceEntry 2 } + +mdmDTESyncTimingSource OBJECT-TYPE + SYNTAX INTEGER { + internal(1), + external(2), + loopback(3), + network(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The clock source for synchronous transmissions. If set to + internal(1), the modem is the clock source and sends the + clock signals to the DTE. If set to external(2), the + transmit clock signals are provided by the DTE. If + loopback(3), the modem receiver clock is used for the + transmit clock. If network(4), the clock signals are + supplied by the DCE interface. + + If the modem is not in synchronous mode, setting this object + will have no effect on the current operations of the modem." + REFERENCE "V.58 transmitClockSource" + DEFVAL { internal } + ::= { mdmDTEInterfaceEntry 3 } + +mdmDTESyncAsyncMode OBJECT-TYPE + SYNTAX INTEGER { + async(1), + sync(2), + syncAfterDial(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The operational mode of the modem. If the value is + syncAfterDial(3), the modem will accept commands in + asynchronous mode and change to synchronous mode to pass + data after a dial sequence has been executed." + DEFVAL { async } + ::= { mdmDTEInterfaceEntry 4 } + +mdmDTEInactivityTimeout OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The amount of idle time in minutes that the modem will wait + before disconnecting a connection. When a call is connected + and no data is transferred (continuous marking condition) on + both circuits 103 and 104 for the specified time, the DCE + disconnects the call. If the value is 0, no idle disconnect + will occur. This function applies to asynchronous dial + operations only and is intended for administrative control + over idle connections." + REFERENCE "V.58 inactivityTimerSelect" + DEFVAL { 0 } + ::= { mdmDTEInterfaceEntry 5 } + + +-- The Call Control Table + +mdmCallControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmCallControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem Call Control Table augments the modem ID table." + ::= { mdmMIBObjects 7 } + +mdmCallControlEntry OBJECT-TYPE + SYNTAX MdmCallControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmCallControlTable 1 } + +MdmCallControlEntry ::= SEQUENCE { + mdmCCRingsBeforeAnswer Integer32, + mdmCCCallSetUpFailTimer Integer32, + mdmCCResultCodeEnable INTEGER, + mdmCCEscapeAction INTEGER, + mdmCCCallDuration Integer32, + mdmCCConnectionFailReason INTEGER +} + +mdmCCRingsBeforeAnswer OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Determines which ring the modem will wait to answer the + phone on. If this value is `0', the modem will not go + offhook and answer a call when a ring signal is detected." + REFERENCE "V.58 ringsBeforeAnswer" + DEFVAL { 1 } + ::= { mdmCallControlEntry 1 } + +mdmCCCallSetUpFailTimer OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter specifies the amount of time, in seconds, + that the modem shall allow between either answering a call + (automatically or manually) or completion of dialing, and + establishment of a connection with the remote modem. If no + connection is established during this time, the modem + disconnects from the line and returns a result code + indicating the cause of the disconnection. In TIA-602, this + is controlled by the value in the S7 register." + REFERENCE "V.58 callSetUpFailTimer" + DEFVAL { 30 } + ::= { mdmCallControlEntry 2 } + +mdmCCResultCodeEnable OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + numericEnabled(2), + verboseEnabled(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When disabled, the DCE shall issue no 'result codes' of any + kind to the DTE either in response to unsolicited events + (eg. ring signal), or commands. In TIA-602, this is + controlled by the ATQ command. When numericEnabled, the DCE + shall issue result codes in numeric form. When + verboseEnabled, the DCE shall issue result codes in a + verbose, textual form." + REFERENCE "V.58 responseModeSelect" + DEFVAL { verboseEnabled } + ::= { mdmCallControlEntry 3 } + +mdmCCEscapeAction OBJECT-TYPE + SYNTAX INTEGER { + ignoreEscape(1), + hangUp(2), + enterCommandMode(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The modem's action upon successfully recognizing the + 'escape to command mode' character sequence." + DEFVAL { ignoreEscape } + ::= { mdmCallControlEntry 4 } + +-- Call status portion of the call control table + +mdmCCCallDuration OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Present or last completed connection time in seconds. If + there have been no previous connections, this value should + be -1." + ::= { mdmCallControlEntry 5 } + + +mdmCCConnectionFailReason OBJECT-TYPE + SYNTAX INTEGER { + -- General + unknown(1), + other(2), + managementCommand(3), + inactivityTimeout(4), + mnpIncompatibility(5), + protocolError(6), + -- DCE + powerLoss(10), + equipmentFailure(11), + -- DTE Interface + dtrDrop(20), + -- Line Interface + noDialTone(30), + lineBusy(31), + noAnswer(32), + voiceDetected(33), + -- Signal Converter + carrierLost(40), + trainingFailed(41), + faxDetected(42) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "Indicates the reason that the last connection or attempt + failed. The meaning of each reason code is explained below. + + unknown: + This code means the failure reason is unknown or + there has been no previous call. + + other: + This code used when no other code is applicable. + Additional vendor information may be available + elsewhere. + + managementCommand: + A management command terminated the call. These + commands include escaping to command mode, initiating + dialing, restoring lines, and disconnecting. + + inactivityTimeout: + The call was terminated because it was inactive for + at the minimum duration specified. + + mnpIncompatibility: + The modems are unable to resolve MNP protocol + differences. + + protocolError: + An error occured in one of protocol in use. Further + information is required to determine in which + protocol the error occurred, and the exact nature of + the error. + + powerLoss: + The modem lost power and disconnected the call. + + equipmentFailure: + The modem equipment failed. + + dtrDrop: + DTR has been turned off while the modem is to + disconnect on DTR drop. (Ref: V.58 cct108TurnedOff) + + noDialTone: + If the modem is to monitor for call progress tones, + but the modem has failed to detect dial tone while + attempting to dial a number. + + lineBusy: + Busy signal is detected while busy signal detection + is enabled, or while the 'W' or '@' dial modifier is + used. (Ref: V.58 engagedTone) + + noAnswer: + The call was not answered. + + voiceDetected: + A voice was detected on the call. + + carrierLost: + Indicates that the modem has disconnected due to + detection of loss of carrier. In TIA-602, the S10 + register determines the time that loss of carrier + must be detected before the modem disconnects. + + trainingFailed: + Indicates that the modems did not successfully train + and reach data mode on the previous connection. + + faxDetected: + A fax was detected on the call." + REFERENCE "V.58 callCleared" + ::= { mdmCallControlEntry 6 } + +-- The Stored Dial String table + +mdmCCStoredDialStringTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmCCStoredDialStringEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of stored dial strings." + REFERENCE "V.58 telephoneNumbers" + ::= { mdmMIBObjects 8 } + +mdmCCStoredDialStringEntry OBJECT-TYPE + SYNTAX MdmCCStoredDialStringEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A stored dial string." + INDEX { mdmIndex, mdmCCStoredDialStringIndex } + ::= { mdmCCStoredDialStringTable 1 } + +MdmCCStoredDialStringEntry ::= SEQUENCE { + mdmCCStoredDialStringIndex Integer32, + mdmCCStoredDialString DisplayString +} + +mdmCCStoredDialStringIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique index of a particular dial string." + ::= { mdmCCStoredDialStringEntry 1 } + +mdmCCStoredDialString OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A dial string stored in the modem." + ::= { mdmCCStoredDialStringEntry 2 } + +-- The modem Error Correcting Group + +mdmECTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmECEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem error correcting table augments the modem ID + table." + ::= { mdmMIBObjects 9 } + +mdmECEntry OBJECT-TYPE + SYNTAX MdmECEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmECTable 1 } + +MdmECEntry ::= SEQUENCE { + mdmECErrorControlUsed OBJECT IDENTIFIER +} + +mdmECErrorControlUsed OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the error control method used during the current + or previous call. This shall be one of the values for error + control protocols registered in the capabilities table for + this modem. If no error control protocol is in use, this + object shall have the value '{0 0}'." + REFERENCE "V.58 errorControlActive" + ::= { mdmECEntry 1 } + +-- The modem Data Compression Group + +mdmDCTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmDCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem data compression table augments the modem ID + table." + ::= { mdmMIBObjects 10 } + +mdmDCEntry OBJECT-TYPE + SYNTAX MdmDCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmDCTable 1 } + +MdmDCEntry ::= SEQUENCE { + mdmDCCompressionTypeUsed OBJECT IDENTIFIER +} + +mdmDCCompressionTypeUsed OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the data compression method used during the + current or previous call. This shall be one of the values + for compression protocols registered in the capabilities + table for this modem. If no compression protocol is in use, + this object shall have the value '{0 0}'." + ::= { mdmDCEntry 1 } + +-- The modem Signal Convertor Group + +mdmSCTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmSCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem signal convertor table augments the modem ID + table." + ::= { mdmMIBObjects 11 } + +mdmSCEntry OBJECT-TYPE + SYNTAX MdmSCEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmSCTable 1 } + +MdmSCEntry ::= SEQUENCE { + mdmSCCurrentLineTransmitRate Integer32, + mdmSCCurrentLineReceiveRate Integer32, + mdmSCInitialLineTransmitRate Integer32, + mdmSCInitialLineReceiveRate Integer32, + mdmSCModulationSchemeUsed OBJECT IDENTIFIER +} + +mdmSCCurrentLineTransmitRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current link transmit rate of a connection, or the last + link transmit rate of the last connection in bits per + second." + REFERENCE "V.58 transmissionSignallingRateActive" + ::= { mdmSCEntry 1 } + +mdmSCCurrentLineReceiveRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current link receive rate of a connection, or the last + link receive rate of the last connection in bits per + second." + REFERENCE "V.58 transmissionSignallingRateActive" + ::= { mdmSCEntry 2 } + +mdmSCInitialLineTransmitRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The initial link transmit rate of the current connection, + or the initial link transmit rate of the last connection in + bits per second." + ::= { mdmSCEntry 3 } + +mdmSCInitialLineReceiveRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The initial link receive rate of the current connection, or + the initial link receive rate of the last connection in bits + per second." + ::= { mdmSCEntry 4 } + +mdmSCModulationSchemeUsed OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The modulation scheme of the current or previous call. + This shall be one of the values for modulation protocols + registered in the capabilities table for this modem." + REFERENCE "V.58 gstnModulationSchemeActive" + ::= { mdmSCEntry 5 } + +-- The Modem Statistics Table + +mdmStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF MdmStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The modem statistics Table augments the modem ID table." + ::= { mdmMIBObjects 12 } + +mdmStatsEntry OBJECT-TYPE + SYNTAX MdmStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created only by the agent. One + entry exists for each modem managed by the agent." + AUGMENTS { mdmIDEntry } + ::= { mdmStatsTable 1 } + +MdmStatsEntry ::= SEQUENCE { + mdmStatsRingNoAnswers Counter32, + mdmStatsIncomingConnectionFailures Counter32, + mdmStatsIncomingConnectionCompletions Counter32, + mdmStatsFailedDialAttempts Counter32, + mdmStatsOutgoingConnectionFailures Counter32, + mdmStatsOutgoingConnectionCompletions Counter32, + mdmStatsRetrains Counter32, + mdmStats2400OrLessConnections Counter32, + mdmStats2400To14400Connections Counter32, + mdmStatsGreaterThan14400Connections Counter32, + mdmStatsErrorControlledConnections Counter32, + mdmStatsCompressedConnections Counter32, + mdmStatsCompressionEfficiency Integer32, + mdmStatsSentOctets Counter32, + mdmStatsReceivedOctets Counter32, + mdmStatsSentDataFrames Counter32, + mdmStatsReceivedDataFrames Counter32, + mdmStatsResentFrames Counter32, + mdmStatsErrorFrames Counter32 +} + +mdmStatsRingNoAnswers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of events in which ringing was detected but the + call was not answered." + ::= { mdmStatsEntry 1 } + +mdmStatsIncomingConnectionFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming connection requests that this modem + answered in which it could not train with the other DCE." + ::= { mdmStatsEntry 2 } + +mdmStatsIncomingConnectionCompletions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming connection requests that this modem + answered and successfully trained with the other DCE." + ::= { mdmStatsEntry 3 } + +mdmStatsFailedDialAttempts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of call attempts that failed because the modem + didn't go off hook, or there was no dialtone." + ::= { mdmStatsEntry 4 } + +mdmStatsOutgoingConnectionFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outgoing calls from this modem which + sucessfully went off hook and dialed, in which it could not + train with the other DCE." + ::= { mdmStatsEntry 5 } + +mdmStatsOutgoingConnectionCompletions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outgoing calls from this modem which resulted + in successfully training with the other DCE." + ::= { mdmStatsEntry 6 } + +mdmStatsRetrains OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of retrains experienced on connections on this + line." + ::= { mdmStatsEntry 7 } + + +-- Utilization counters + +mdmStats2400OrLessConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of connections initially established at a + modulation speed of 2400 bits per second or less." + ::= { mdmStatsEntry 8 } + + +mdmStats2400To14400Connections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of connections initially established at a + modulation speed of greater than 2400 bits per second and + less than 14400 bits per second." + ::= { mdmStatsEntry 9 } + +mdmStatsGreaterThan14400Connections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of connections initially established at a + modulation speed of greater than 14400 bits per second." + ::= { mdmStatsEntry 10 } + +mdmStatsErrorControlledConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of established connections using an error + control protocol." + ::= { mdmStatsEntry 11 } + +mdmStatsCompressedConnections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of established connections using a compression + protocol." + ::= { mdmStatsEntry 12 } + +mdmStatsCompressionEfficiency OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes transferred into the compression + encoder divided by the number of bytes transferred out of + the encoder, multiplied by 100 for either the current or + last call. If a data compression protocol is not in use, + this value shall be `100'." + REFERENCE "V.58 compressionEfficiency" + ::= { mdmStatsEntry 13 } + +mdmStatsSentOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets presented to the modem by the DTE." + ::= { mdmStatsEntry 14 } + +mdmStatsReceivedOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets presented to the DTE by the modem." + ::= { mdmStatsEntry 15 } + +mdmStatsSentDataFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of data frames sent on the line interface. If + there is no frame-oriented protocol in use on the line + interface, this counter shall not increment." + ::= { mdmStatsEntry 16 } + +mdmStatsReceivedDataFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of data frames received on the line interface. + If there is no frame-oriented protocol in use on the line + interface, this counter shall not increment." + ::= { mdmStatsEntry 17 } + +mdmStatsResentFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this modem retransmits frames on the + line interface. If there is no frame-oriented protocol in + use on the line interface, this counter shall not + increment." + ::= { mdmStatsEntry 18 } + +mdmStatsErrorFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of block errors received on the link. If there + is no frame-oriented protocol in use on the line interface, + this counter shall not increment." + ::= { mdmStatsEntry 19 } + + +-- compliance statements + +mdmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the modem MIB." + + MODULE -- this module + MANDATORY-GROUPS { mdmIDGroup, mdmLineInterfaceGroup, + mdmDTEInterfaceGroup, mdmCallControlGroup, + mdmSignalConvertorGroup, mdmStatisticsGroup } + + GROUP mdmErrorControlGroup + DESCRIPTION + "This group is mandatory only for those modems that + implement an error correction protocol." + + GROUP mdmDataCompressionGroup + DESCRIPTION + "This group is mandatory only for those modems that + implement a data compression protocol." + ::= { mdmCompliances 1 } + + +END diff --git a/mibs/ietf/NAT-MIB b/mibs/ietf/NAT-MIB new file mode 100644 index 0000000..4f5f8b6 --- /dev/null +++ b/mibs/ietf/NAT-MIB @@ -0,0 +1,2534 @@ +NAT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + Unsigned32, + Gauge32, + Counter64, + TimeTicks, + mib-2, + NOTIFICATION-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, + StorageType, + RowStatus + + + + FROM SNMPv2-TC + MODULE-COMPLIANCE, + NOTIFICATION-GROUP, + OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex, + ifCounterDiscontinuityGroup + FROM IF-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB; + +natMIB MODULE-IDENTITY + LAST-UPDATED "200503210000Z" + ORGANIZATION "IETF Transport Area" + CONTACT-INFO + " + Rohit + Mascon Global Limited + #59/2 100 ft Ring Road + Banashankari II Stage + Bangalore 560 070 + India + Phone: +91 80 2679 6227 + Email: rrohit74@hotmail.com + + P. Srisuresh + Caymas Systems, Inc. + 1179-A North McDowell Blvd. + Petaluma, CA 94954 + Tel: (707) 283-5063 + Email: srisuresh@yahoo.com + + Rajiv Raghunarayan + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 + Phone: +1 408 853 9612 + Email: raraghun@cisco.com + + Nalinaksh Pai + Cisco Systems, Inc. + Prestige Waterford + No. 9, Brunton Road + Bangalore - 560 025 + + + + India + Phone: +91 80 532 1300 + Email: npai@cisco.com + + Cliff Wang + Information Security + Bank One Corp + 1111 Polaris Pkwy + Columbus, OH 43240 + Phone: +1 614 213 6117 + Email: cliffwang2000@yahoo.com + " + DESCRIPTION + "This MIB module defines the generic managed objects + for NAT. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4008; see the RFC + itself for full legal notices." + REVISION "200503210000Z" -- 21th March 2005 + DESCRIPTION + "Initial version, published as RFC 4008." + ::= { mib-2 123 } + +natMIBObjects OBJECT IDENTIFIER ::= { natMIB 1 } + +NatProtocolType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A list of protocols that support the network + address translation. Inclusion of the values is + not intended to imply that those protocols + need to be supported. Any change in this + TEXTUAL-CONVENTION should also be reflected in + the definition of NatProtocolMap, which is a + BITS representation of this." + SYNTAX INTEGER { + none (1), -- not specified + other (2), -- none of the following + icmp (3), + udp (4), + tcp (5) + } + +NatProtocolMap ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A bitmap of protocol identifiers that support + + + + the network address translation. Any change + in this TEXTUAL-CONVENTION should also be + reflected in the definition of NatProtocolType." + SYNTAX BITS { + other (0), + icmp (1), + udp (2), + tcp (3) + } + +NatAddrMapId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique id that is assigned to each address map + by a NAT enabled device." + SYNTAX Unsigned32 (1..4294967295) + +NatBindIdOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique id that is assigned to each bind by + a NAT enabled device. The bind id will be zero + in the case of a Symmetric NAT." + SYNTAX Unsigned32 (0..4294967295) + +NatBindId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique id that is assigned to each bind by + a NAT enabled device." + SYNTAX Unsigned32 (1..4294967295) + +NatSessionId ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique id that is assigned to each session by + a NAT enabled device." + SYNTAX Unsigned32 (1..4294967295) + +NatBindMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indication of whether the bind is + an address bind or an address port bind." + + + + SYNTAX INTEGER { + addressBind (1), + addressPortBind (2) + } + +NatAssociationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indication of whether the association is + static or dynamic." + SYNTAX INTEGER { + static (1), + dynamic (2) + } + +NatTranslationEntity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indication of a) the direction of a session for + which an address map entry, address bind or port + bind is applicable, and b) the entity (source or + destination) within the session that is subject to + translation." + SYNTAX BITS { + inboundSrcEndPoint (0), + outboundDstEndPoint(1), + inboundDstEndPoint (2), + outboundSrcEndPoint(3) + } + +-- +-- Default Values for the Bind and NAT Protocol Timers +-- + +natDefTimeouts OBJECT IDENTIFIER ::= { natMIBObjects 1 } + +natNotifCtrl OBJECT IDENTIFIER ::= { natMIBObjects 2 } + +-- +-- Address Bind and Port Bind related NAT configuration +-- + +natBindDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The default Bind (Address Bind or Port Bind) idle + timeout parameter. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 0 } + ::= { natDefTimeouts 1 } + +-- +-- UDP related NAT configuration +-- + +natUdpDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default UDP idle timeout parameter. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 300 } + ::= { natDefTimeouts 2 } + +-- +-- ICMP related NAT configuration +-- + +natIcmpDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default ICMP idle timeout parameter. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 300 } + ::= { natDefTimeouts 3 } + + + + +-- +-- Other protocol parameters +-- + +natOtherDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default idle timeout parameter for protocols + represented by the value other (2) in + NatProtocolType. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 60 } + ::= { natDefTimeouts 4 } + +-- +-- TCP related NAT Timers +-- + +natTcpDefIdleTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default time interval that a NAT session for an + established TCP connection is allowed to remain + valid without any activity on the TCP connection. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 86400 } + ::= { natDefTimeouts 5 } + +natTcpDefNegTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The default time interval that a NAT session for a TCP + connection that is not in the established state + is allowed to remain valid without any activity on + the TCP connection. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 60 } + ::= { natDefTimeouts 6 } + +natNotifThrottlingInterval OBJECT-TYPE + SYNTAX Integer32 (0 | 5..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the generation of the + natPacketDiscard notification. + + If this object has a value of zero, then no + natPacketDiscard notifications will be transmitted by the + agent. + + If this object has a non-zero value, then the agent must + not generate more than one natPacketDiscard + 'notification-event' in the indicated period, where a + 'notification-event' is the generation of a single + notification PDU type to a list of notification + destinations. If additional NAT packets are discarded + within the throttling period, then notification-events + for these changes must be suppressed by the agent until + the current throttling period expires. + + If natNotifThrottlingInterval notification generation + is enabled, the suggested default throttling period is + 60 seconds, but generation of the natPacketDiscard + notification should be disabled by default. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system. + + The actual transmission of notifications is controlled + via the MIB modules in RFC 3413." + DEFVAL { 0 } + + + + ::= { natNotifCtrl 1 } + +-- +-- The NAT Interface Table +-- + +natInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the attributes for interfaces on a + device supporting NAT function." + ::= { natMIBObjects 3 } + +natInterfaceEntry OBJECT-TYPE + SYNTAX NatInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in the natInterfaceTable holds a set of + parameters for an interface, instantiated by + ifIndex. Therefore, the interface index must have been + assigned, according to the applicable procedures, + before it can be meaningfully used. + Generally, this means that the interface must exist. + + When natStorageType is of type nonVolatile, however, + this may reflect the configuration for an interface whose + ifIndex has been assigned but for which the supporting + implementation is not currently present." + INDEX { ifIndex } + ::= { natInterfaceTable 1 } + +NatInterfaceEntry ::= SEQUENCE { + natInterfaceRealm INTEGER, + natInterfaceServiceType BITS, + natInterfaceInTranslates Counter64, + natInterfaceOutTranslates Counter64, + natInterfaceDiscards Counter64, + natInterfaceStorageType StorageType, + natInterfaceRowStatus RowStatus +} + +natInterfaceRealm OBJECT-TYPE + SYNTAX INTEGER { + private (1), + public (2) + + + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies whether this interface is + connected to the private or the public realm." + DEFVAL { public } + ::= { natInterfaceEntry 1 } + +natInterfaceServiceType OBJECT-TYPE + SYNTAX BITS { + basicNat (0), + napt (1), + bidirectionalNat (2), + twiceNat (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of the direction in which new sessions + are permitted and the extent of translation done within + the IP and transport headers." + ::= { natInterfaceEntry 2 } + +natInterfaceInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets received on this interface that + were translated. + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natInterfaceEntry 3 } + +natInterfaceOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of translated packets that were sent out this + interface. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times as indicated by the value of + + + + ifCounterDiscontinuityTime on the relevant interface." + ::= { natInterfaceEntry 4 } + +natInterfaceDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of packets that had to be rejected/dropped due to + a lack of resources for this interface. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natInterfaceEntry 5 } + +natInterfaceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar objects + in the row." + REFERENCE + "Textual Conventions for SMIv2, Section 2." + DEFVAL { nonVolatile } + ::= { natInterfaceEntry 6 } + +natInterfaceRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the natInterfaceRowStatus + column is 'notReady'. + + + In particular, a newly created row cannot be made + active until the corresponding instance of + natInterfaceServiceType has been set. + + + + + None of the objects in this row may be modified + while the value of this object is active(1)." + REFERENCE + "Textual Conventions for SMIv2, Section 2." + ::= { natInterfaceEntry 7 } + +-- +-- The Address Map Table +-- + +natAddrMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatAddrMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists address map parameters for NAT." + ::= { natMIBObjects 4 } + +natAddrMapEntry OBJECT-TYPE + SYNTAX NatAddrMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry represents an address map to be used for + NAT and contributes to the dynamic and/or static + address mapping tables of the NAT device." + INDEX { ifIndex, natAddrMapIndex } + ::= { natAddrMapTable 1 } + +NatAddrMapEntry ::= SEQUENCE { + natAddrMapIndex NatAddrMapId, + natAddrMapName SnmpAdminString, + natAddrMapEntryType NatAssociationType, + natAddrMapTranslationEntity NatTranslationEntity, + natAddrMapLocalAddrType InetAddressType, + natAddrMapLocalAddrFrom InetAddress, + natAddrMapLocalAddrTo InetAddress, + natAddrMapLocalPortFrom InetPortNumber, + natAddrMapLocalPortTo InetPortNumber, + natAddrMapGlobalAddrType InetAddressType, + natAddrMapGlobalAddrFrom InetAddress, + natAddrMapGlobalAddrTo InetAddress, + natAddrMapGlobalPortFrom InetPortNumber, + natAddrMapGlobalPortTo InetPortNumber, + natAddrMapProtocol NatProtocolMap, + natAddrMapInTranslates Counter64, + natAddrMapOutTranslates Counter64, + natAddrMapDiscards Counter64, + + + + natAddrMapAddrUsed Gauge32, + natAddrMapStorageType StorageType, + natAddrMapRowStatus RowStatus +} + +natAddrMapIndex OBJECT-TYPE + SYNTAX NatAddrMapId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Along with ifIndex, this object uniquely + identifies an entry in the natAddrMapTable. + Address map entries are applied in the order + specified by natAddrMapIndex." + ::= { natAddrMapEntry 1 } + +natAddrMapName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name identifying all map entries in the table associated + with the same interface. All map entries with the same + ifIndex MUST have the same map name." + ::= { natAddrMapEntry 2 } + +natAddrMapEntryType OBJECT-TYPE + SYNTAX NatAssociationType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter can be used to set up static + or dynamic address maps." + ::= { natAddrMapEntry 3 } + +natAddrMapTranslationEntity OBJECT-TYPE + SYNTAX NatTranslationEntity + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The end-point entity (source or destination) in + inbound or outbound sessions (i.e., first packets) that + may be translated by an address map entry. + + Session direction (inbound or outbound) is + derived from the direction of the first packet + of a session traversing a NAT interface. + NAT address (and Transport-ID) maps may be defined + + + + to effect inbound or outbound sessions. + + Traditionally, address maps for Basic NAT and NAPT are + configured on a public interface for outbound sessions, + effecting translation of source end-point. The value of + this object must be set to outboundSrcEndPoint for + those interfaces. + + Alternately, if address maps for Basic NAT and NAPT were + to be configured on a private interface, the desired + value for this object for the map entries + would be inboundSrcEndPoint (i.e., effecting translation + of source end-point for inbound sessions). + + If TwiceNAT were to be configured on a private interface, + the desired value for this object for the map entries + would be a bitmask of inboundSrcEndPoint and + inboundDstEndPoint." + ::= { natAddrMapEntry 4 } + +natAddrMapLocalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrMapLocalAddrFrom and natAddrMapLocalAddrTo." + ::= { natAddrMapEntry 5 } + +natAddrMapLocalAddrFrom OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the first IP address of the range + of IP addresses mapped by this translation entry. The + value of this object must be less than or equal to the + value of the natAddrMapLocalAddrTo object. + + The type of this address is determined by the value of + the natAddrMapLocalAddrType object." + ::= { natAddrMapEntry 6 } + +natAddrMapLocalAddrTo OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object specifies the last IP address of the range of + IP addresses mapped by this translation entry. If only + a single address is being mapped, the value of this object + is equal to the value of natAddrMapLocalAddrFrom. For a + static NAT, the number of addresses in the range defined + by natAddrMapLocalAddrFrom and natAddrMapLocalAddrTo must + be equal to the number of addresses in the range defined by + natAddrMapGlobalAddrFrom and natAddrMapGlobalAddrTo. + The value of this object must be greater than or equal to + the value of the natAddrMapLocalAddrFrom object. + + The type of this address is determined by the value of + the natAddrMapLocalAddrType object." + ::= { natAddrMapEntry 7 } + +natAddrMapLocalPortFrom OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this conceptual row describes a Basic NAT address + mapping, then the value of this object must be zero. If + this conceptual row describes NAPT, then the value of + this object specifies the first port number in the range + of ports being mapped. + + The value of this object must be less than or equal to the + value of the natAddrMapLocalPortTo object. If the + translation specifies a single port, then the value of this + object is equal to the value of natAddrMapLocalPortTo." + DEFVAL { 0 } + ::= { natAddrMapEntry 8 } + +natAddrMapLocalPortTo OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this conceptual row describes a Basic NAT address + mapping, then the value of this object must be zero. If + this conceptual row describes NAPT, then the value of + this object specifies the last port number in the range + of ports being mapped. + + The value of this object must be greater than or equal to + the value of the natAddrMapLocalPortFrom object. If the + translation specifies a single port, then the value of this + object is equal to the value of natAddrMapLocalPortFrom." + + + + DEFVAL { 0 } + ::= { natAddrMapEntry 9 } + +natAddrMapGlobalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrMapGlobalAddrFrom and natAddrMapGlobalAddrTo." + ::= { natAddrMapEntry 10 } + +natAddrMapGlobalAddrFrom OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the first IP address of the range of + IP addresses being mapped to. The value of this object + must be less than or equal to the value of the + natAddrMapGlobalAddrTo object. + + The type of this address is determined by the value of + the natAddrMapGlobalAddrType object." + ::= { natAddrMapEntry 11 } + +natAddrMapGlobalAddrTo OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the last IP address of the range of + IP addresses being mapped to. If only a single address is + being mapped to, the value of this object is equal to the + value of natAddrMapGlobalAddrFrom. For a static NAT, the + number of addresses in the range defined by + natAddrMapGlobalAddrFrom and natAddrMapGlobalAddrTo must be + equal to the number of addresses in the range defined by + natAddrMapLocalAddrFrom and natAddrMapLocalAddrTo. + The value of this object must be greater than or equal to + the value of the natAddrMapGlobalAddrFrom object. + + The type of this address is determined by the value of + the natAddrMapGlobalAddrType object." + ::= { natAddrMapEntry 12 } + +natAddrMapGlobalPortFrom OBJECT-TYPE + SYNTAX InetPortNumber + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this conceptual row describes a Basic NAT address + mapping, then the value of this object must be zero. If + this conceptual row describes NAPT, then the value of + this object specifies the first port number in the range + of ports being mapped to. + + + The value of this object must be less than or equal to the + value of the natAddrMapGlobalPortTo object. If the + translation specifies a single port, then the value of this + object is equal to the value natAddrMapGlobalPortTo." + DEFVAL { 0 } + ::= { natAddrMapEntry 13 } + +natAddrMapGlobalPortTo OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this conceptual row describes a Basic NAT address + mapping, then the value of this object must be zero. If + this conceptual row describes NAPT, then the value of this + object specifies the last port number in the range of + ports being mapped to. + + The value of this object must be greater than or equal to + the value of the natAddrMapGlobalPortFrom object. If the + translation specifies a single port, then the value of this + object is equal to the value of natAddrMapGlobalPortFrom." + DEFVAL { 0 } + ::= { natAddrMapEntry 14 } + +natAddrMapProtocol OBJECT-TYPE + SYNTAX NatProtocolMap + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies a bitmap of protocol identifiers." + ::= { natAddrMapEntry 15 } + +natAddrMapInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of inbound packets pertaining to this address + map entry that were translated. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrMapEntry 16 } + +natAddrMapOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets pertaining to this + address map entry that were translated. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrMapEntry 17 } + +natAddrMapDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets pertaining to this address map + entry that were dropped due to lack of addresses in the + address pool identified by this address map. The value of + this object must always be zero in case of static + address map. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrMapEntry 18 } + +natAddrMapAddrUsed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of addresses pertaining to this address map + that are currently being used from the NAT pool. + The value of this object must always be zero in the case + + + + of a static address map." + ::= { natAddrMapEntry 19 } + +natAddrMapStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' + need not allow write-access to any columnar objects + in the row." + REFERENCE + "Textual Conventions for SMIv2, Section 2." + DEFVAL { nonVolatile } + ::= { natAddrMapEntry 20 } + +natAddrMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the natAddrMapRowStatus + column is 'notReady'. + + None of the objects in this row may be modified + while the value of this object is active(1)." + REFERENCE + "Textual Conventions for SMIv2, Section 2." + ::= { natAddrMapEntry 21 } + +-- +-- Address Bind section +-- + +natAddrBindNumberOfEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object maintains a count of the number of entries + that currently exist in the natAddrBindTable." + ::= { natMIBObjects 5 } + + + + +-- +-- The NAT Address BIND Table +-- + +natAddrBindTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatAddrBindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table holds information about the currently + active NAT BINDs." + ::= { natMIBObjects 6 } + +natAddrBindEntry OBJECT-TYPE + SYNTAX NatAddrBindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table holds information about + an active address BIND. These entries are lost + upon agent restart. + + This row has indexing which may create variables with + more than 128 subidentifiers. Implementers of this table + must be careful not to create entries that would result + in OIDs which exceed the 128 subidentifier limit. + Otherwise, the information cannot be accessed using + SNMPv1, SNMPv2c or SNMPv3." + + INDEX { ifIndex, natAddrBindLocalAddrType, natAddrBindLocalAddr } + ::= { natAddrBindTable 1 } + +NatAddrBindEntry ::= SEQUENCE { + natAddrBindLocalAddrType InetAddressType, + natAddrBindLocalAddr InetAddress, + natAddrBindGlobalAddrType InetAddressType, + natAddrBindGlobalAddr InetAddress, + natAddrBindId NatBindId, + natAddrBindTranslationEntity NatTranslationEntity, + natAddrBindType NatAssociationType, + natAddrBindMapIndex NatAddrMapId, + natAddrBindSessions Gauge32, + natAddrBindMaxIdleTime TimeTicks, + natAddrBindCurrentIdleTime TimeTicks, + natAddrBindInTranslates Counter64, + natAddrBindOutTranslates Counter64 +} + + + + +natAddrBindLocalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrBindLocalAddr." + ::= { natAddrBindEntry 1 } + +natAddrBindLocalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the private-realm specific network + layer address, which maps to the public-realm address + represented by natAddrBindGlobalAddr. + + The type of this address is determined by the value of + the natAddrBindLocalAddrType object." + ::= { natAddrBindEntry 2 } + +natAddrBindGlobalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrBindGlobalAddr." + ::= { natAddrBindEntry 3 } + +natAddrBindGlobalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the public-realm network layer + address that maps to the private-realm network layer + address represented by natAddrBindLocalAddr. + + The type of this address is determined by the value of + the natAddrBindGlobalAddrType object." + ::= { natAddrBindEntry 4 } + +natAddrBindId OBJECT-TYPE + SYNTAX NatBindId + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object represents a bind id that is dynamically + assigned to each bind by a NAT enabled device. Each + bind is represented by a bind id that is + unique across both, the natAddrBindTable and the + natAddrPortBindTable." + ::= { natAddrBindEntry 5 } + +natAddrBindTranslationEntity OBJECT-TYPE + SYNTAX NatTranslationEntity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the direction of sessions + for which this bind is applicable and the endpoint entity + (source or destination) within the sessions that is + subject to translation using the BIND. + + Orientation of the bind can be a superset of + translationEntity of the address map entry which + forms the basis for this bind. + + For example, if the translationEntity of an + address map entry is outboundSrcEndPoint, the + translationEntity of a bind derived from this + map entry may either be outboundSrcEndPoint or + it may be bidirectional (a bitmask of + outboundSrcEndPoint and inboundDstEndPoint)." + ::= { natAddrBindEntry 6 } + +natAddrBindType OBJECT-TYPE + SYNTAX NatAssociationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the bind is static or + dynamic." + ::= { natAddrBindEntry 7 } + +natAddrBindMapIndex OBJECT-TYPE + SYNTAX NatAddrMapId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a pointer to the natAddrMapTable entry + (and the parameters of that entry) which was used in + creating this BIND. This object, in conjunction with the + ifIndex (which identifies a unique addrMapName) points to + + + + a unique entry in the natAddrMapTable." + ::= { natAddrBindEntry 8 } + +natAddrBindSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of sessions currently using this BIND." + ::= { natAddrBindEntry 9 } + +natAddrBindMaxIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the maximum time for + which this bind can be idle with no sessions + attached to it. + + The value of this object is of relevance only for + dynamic NAT." + ::= { natAddrBindEntry 10 } + +natAddrBindCurrentIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At any given instance, this object indicates the + time that this bind has been idle without any sessions + attached to it. + + The value of this object is of relevance only for + dynamic NAT." + ::= { natAddrBindEntry 11 } + +natAddrBindInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets that were successfully + translated by using this bind entry. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + + + + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrBindEntry 12 } + +natAddrBindOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that were successfully + translated using this bind entry. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrBindEntry 13 } + +-- +-- Address Port Bind section +-- + +natAddrPortBindNumberOfEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object maintains a count of the number of entries + that currently exist in the natAddrPortBindTable." + ::= { natMIBObjects 7 } + +-- +-- The NAT Address Port Bind Table +-- + +natAddrPortBindTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatAddrPortBindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table holds information about the currently + active NAPT BINDs." + ::= { natMIBObjects 8 } + +natAddrPortBindEntry OBJECT-TYPE + SYNTAX NatAddrPortBindEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "Each entry in the this table holds information + about a NAPT bind that is currently active. + These entries are lost upon agent restart. + + This row has indexing which may create variables with + more than 128 subidentifiers. Implementers of this table + must be careful not to create entries which would result + in OIDs that exceed the 128 subidentifier limit. + Otherwise, the information cannot be accessed using + SNMPv1, SNMPv2c or SNMPv3." + INDEX { ifIndex, natAddrPortBindLocalAddrType, + natAddrPortBindLocalAddr, natAddrPortBindLocalPort, + natAddrPortBindProtocol } + ::= { natAddrPortBindTable 1 } + +NatAddrPortBindEntry ::= SEQUENCE { + natAddrPortBindLocalAddrType InetAddressType, + natAddrPortBindLocalAddr InetAddress, + natAddrPortBindLocalPort InetPortNumber, + natAddrPortBindProtocol NatProtocolType, + natAddrPortBindGlobalAddrType InetAddressType, + natAddrPortBindGlobalAddr InetAddress, + natAddrPortBindGlobalPort InetPortNumber, + natAddrPortBindId NatBindId, + natAddrPortBindTranslationEntity NatTranslationEntity, + natAddrPortBindType NatAssociationType, + natAddrPortBindMapIndex NatAddrMapId, + natAddrPortBindSessions Gauge32, + natAddrPortBindMaxIdleTime TimeTicks, + natAddrPortBindCurrentIdleTime TimeTicks, + natAddrPortBindInTranslates Counter64, + natAddrPortBindOutTranslates Counter64 +} + +natAddrPortBindLocalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrPortBindLocalAddr." + ::= { natAddrPortBindEntry 1 } + +natAddrPortBindLocalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This object represents the private-realm specific network + layer address which, in conjunction with + natAddrPortBindLocalPort, maps to the public-realm + network layer address and transport id represented by + natAddrPortBindGlobalAddr and natAddrPortBindGlobalPort + respectively. + + + The type of this address is determined by the value of + the natAddrPortBindLocalAddrType object." + ::= { natAddrPortBindEntry 2 } + +natAddrPortBindLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "For a protocol value TCP or UDP, this object represents + the private-realm specific port number. On the other + hand, for ICMP a bind is created only for query/response + type ICMP messages such as ICMP echo, Timestamp, and + Information request messages, and this object represents + the private-realm specific identifier in the ICMP + message, as defined in RFC 792 for ICMPv4 and in RFC + 2463 for ICMPv6. + + This object, together with natAddrPortBindProtocol, + natAddrPortBindLocalAddrType, and natAddrPortBindLocalAddr, + constitutes a session endpoint in the private realm. A + bind entry binds a private realm specific endpoint to a + public realm specific endpoint, as represented by the + tuple of (natAddrPortBindGlobalPort, + natAddrPortBindProtocol, natAddrPortBindGlobalAddrType, + and natAddrPortBindGlobalAddr)." + ::= { natAddrPortBindEntry 3 } + +natAddrPortBindProtocol OBJECT-TYPE + SYNTAX NatProtocolType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies a protocol identifier. If the + value of this object is none(1), then this bind entry + applies to all IP traffic. Any other value of this object + specifies the class of IP traffic to which this BIND + applies." + ::= { natAddrPortBindEntry 4 } + + + + +natAddrPortBindGlobalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the address type used for + natAddrPortBindGlobalAddr." + ::= { natAddrPortBindEntry 5 } + +natAddrPortBindGlobalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the public-realm specific network + layer address that, in conjunction with + natAddrPortBindGlobalPort, maps to the private-realm + + network layer address and transport id represented by + natAddrPortBindLocalAddr and natAddrPortBindLocalPort, + respectively. + + The type of this address is determined by the value of + the natAddrPortBindGlobalAddrType object." + ::= { natAddrPortBindEntry 6 } + +natAddrPortBindGlobalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a protocol value TCP or UDP, this object represents + the public-realm specific port number. On the other + hand, for ICMP a bind is created only for query/response + type ICMP messages such as ICMP echo, Timestamp, and + Information request messages, and this object represents + the public-realm specific identifier in the ICMP message, + as defined in RFC 792 for ICMPv4 and in RFC 2463 for + ICMPv6. + + This object, together with natAddrPortBindProtocol, + natAddrPortBindGlobalAddrType, and + natAddrPortBindGlobalAddr, constitutes a session endpoint + in the public realm. A bind entry binds a public realm + specific endpoint to a private realm specific endpoint, + as represented by the tuple of + (natAddrPortBindLocalPort, natAddrPortBindProtocol, + natAddrPortBindLocalAddrType, and + + + + natAddrPortBindLocalAddr)." + ::= { natAddrPortBindEntry 7 } + +natAddrPortBindId OBJECT-TYPE + SYNTAX NatBindId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a bind id that is dynamically + assigned to each bind by a NAT enabled device. Each + bind is represented by a unique bind id across both + the natAddrBindTable and the natAddrPortBindTable." + ::= { natAddrPortBindEntry 8 } + +natAddrPortBindTranslationEntity OBJECT-TYPE + SYNTAX NatTranslationEntity + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the direction of sessions + for which this bind is applicable and the entity + (source or destination) within the sessions that is + subject to translation with the BIND. + + Orientation of the bind can be a superset of the + translationEntity of the address map entry that + forms the basis for this bind. + + For example, if the translationEntity of an + address map entry is outboundSrcEndPoint, the + translationEntity of a bind derived from this + map entry may either be outboundSrcEndPoint or + may be bidirectional (a bitmask of + outboundSrcEndPoint and inboundDstEndPoint)." + ::= { natAddrPortBindEntry 9 } + +natAddrPortBindType OBJECT-TYPE + SYNTAX NatAssociationType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the bind is static or + dynamic." + ::= { natAddrPortBindEntry 10 } + +natAddrPortBindMapIndex OBJECT-TYPE + SYNTAX NatAddrMapId + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object is a pointer to the natAddrMapTable entry + (and the parameters of that entry) used in + creating this BIND. This object, in conjunction with the + ifIndex (which identifies a unique addrMapName), points + to a unique entry in the natAddrMapTable." + ::= { natAddrPortBindEntry 11 } + +natAddrPortBindSessions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of sessions currently using this BIND." + ::= { natAddrPortBindEntry 12 } + +natAddrPortBindMaxIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "This object indicates the maximum time for + which this bind can be idle without any sessions + attached to it. + The value of this object is of relevance + only for dynamic NAT." + ::= { natAddrPortBindEntry 13 } + +natAddrPortBindCurrentIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "At any given instance, this object indicates the + time that this bind has been idle without any sessions + attached to it. + + The value of this object is of relevance + only for dynamic NAT." + ::= { natAddrPortBindEntry 14 } + +natAddrPortBindInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of inbound packets that were translated as per + this bind entry. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrPortBindEntry 15 } + +natAddrPortBindOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that were translated as per + this bind entry. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natAddrPortBindEntry 16 } + +-- +-- The Session Table +-- + +natSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing one entry for each + NAT session currently active on this NAT device." + ::= { natMIBObjects 9 } + +natSessionEntry OBJECT-TYPE + SYNTAX NatSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing information + about an active NAT session on this NAT device. + These entries are lost upon agent restart." + INDEX { ifIndex, natSessionIndex } + ::= { natSessionTable 1 } + +NatSessionEntry ::= SEQUENCE { + + + + natSessionIndex NatSessionId, + natSessionPrivateSrcEPBindId NatBindIdOrZero, + natSessionPrivateSrcEPBindMode NatBindMode, + natSessionPrivateDstEPBindId NatBindIdOrZero, + natSessionPrivateDstEPBindMode NatBindMode, + natSessionDirection INTEGER, + natSessionUpTime TimeTicks, + natSessionAddrMapIndex NatAddrMapId, + natSessionProtocolType NatProtocolType, + natSessionPrivateAddrType InetAddressType, + natSessionPrivateSrcAddr InetAddress, + natSessionPrivateSrcPort InetPortNumber, + natSessionPrivateDstAddr InetAddress, + natSessionPrivateDstPort InetPortNumber, + natSessionPublicAddrType InetAddressType, + natSessionPublicSrcAddr InetAddress, + natSessionPublicSrcPort InetPortNumber, + natSessionPublicDstAddr InetAddress, + natSessionPublicDstPort InetPortNumber, + natSessionMaxIdleTime TimeTicks, + natSessionCurrentIdleTime TimeTicks, + natSessionInTranslates Counter64, + natSessionOutTranslates Counter64 +} + +natSessionIndex OBJECT-TYPE + SYNTAX NatSessionId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The session ID for this NAT session." + ::= { natSessionEntry 1 } + +natSessionPrivateSrcEPBindId OBJECT-TYPE + SYNTAX NatBindIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bind id associated between private and public + source end points. In the case of Symmetric-NAT, + this should be set to zero." + ::= { natSessionEntry 2 } + +natSessionPrivateSrcEPBindMode OBJECT-TYPE + SYNTAX NatBindMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object indicates whether the bind indicated + by the object natSessionPrivateSrcEPBindId + is an address bind or an address port bind." + ::= { natSessionEntry 3 } + +natSessionPrivateDstEPBindId OBJECT-TYPE + SYNTAX NatBindIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The bind id associated between private and public + destination end points." + ::= { natSessionEntry 4 } + +natSessionPrivateDstEPBindMode OBJECT-TYPE + SYNTAX NatBindMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the bind indicated + by the object natSessionPrivateDstEPBindId + is an address bind or an address port bind." + ::= { natSessionEntry 5 } + +natSessionDirection OBJECT-TYPE + SYNTAX INTEGER { + inbound (1), + outbound (2) + } + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The direction of this session with respect to the + local network. 'inbound' indicates that this session + was initiated from the public network into the private + network. 'outbound' indicates that this session was + initiated from the private network into the public + network." + ::= { natSessionEntry 6 } + +natSessionUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The up time of this session in one-hundredths of a + second." + + + + ::= { natSessionEntry 7 } + +natSessionAddrMapIndex OBJECT-TYPE + SYNTAX NatAddrMapId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a pointer to the natAddrMapTable entry + (and the parameters of that entry) used in + creating this session. This object, in conjunction with + the ifIndex (which identifies a unique addrMapName), points + to a unique entry in the natAddrMapTable." + ::= { natSessionEntry 8 } + +natSessionProtocolType OBJECT-TYPE + SYNTAX NatProtocolType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol type of this session." + ::= { natSessionEntry 9 } + +natSessionPrivateAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the address type used for + natSessionPrivateSrcAddr and natSessionPrivateDstAddr." + ::= { natSessionEntry 10 } + +natSessionPrivateSrcAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source IP address of the session endpoint that + lies in the private network. + + The value of this object must be zero only when the + natSessionPrivateSrcEPBindId object has a zero value. + When the value of this object is zero, the NAT session + lookup will match any IP address to this field. + + The type of this address is determined by the value of + the natSessionPrivateAddrType object." + ::= { natSessionEntry 11 } + + + + +natSessionPrivateSrcPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of protocol is TCP or UDP, this object + represents the source port in the first packet of session + while in private-realm. On the other hand, when the + protocol is ICMP, a NAT session is created only for + query/response type ICMP messages such as ICMP echo, + Timestamp, and Information request messages, and this + object represents the private-realm specific identifier + in the ICMP message, as defined in RFC 792 for ICMPv4 + and in RFC 2463 for ICMPv6. + + The value of this object must be zero when the + natSessionPrivateSrcEPBindId object has zero value + and value of natSessionPrivateSrcEPBindMode is + addressPortBind(2). In such a case, the NAT session + lookup will match any port number to this field. + + The value of this object must be zero when the object + is not a representative field (SrcPort, DstPort, or + ICMP identifier) of the session tuple in either the + public realm or the private realm." + ::= { natSessionEntry 12 } + +natSessionPrivateDstAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination IP address of the session endpoint that + lies in the private network. + + The value of this object must be zero when the + natSessionPrivateDstEPBindId object has a zero value. + In such a scenario, the NAT session lookup will match + any IP address to this field. + + The type of this address is determined by the value of + the natSessionPrivateAddrType object." + ::= { natSessionEntry 13 } + +natSessionPrivateDstPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "When the value of protocol is TCP or UDP, this object + represents the destination port in the first packet + of session while in private-realm. On the other hand, + when the protocol is ICMP, this object is not relevant + and should be set to zero. + + The value of this object must be zero when the + natSessionPrivateDstEPBindId object has a zero + value and natSessionPrivateDstEPBindMode is set to + addressPortBind(2). In such a case, the NAT session + lookup will match any port number to this field. + + The value of this object must be zero when the object + is not a representative field (SrcPort, DstPort, or + ICMP identifier) of the session tuple in either the + public realm or the private realm." + ::= { natSessionEntry 14 } + +natSessionPublicAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the address type used for + natSessionPublicSrcAddr and natSessionPublicDstAddr." + ::= { natSessionEntry 15 } + +natSessionPublicSrcAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source IP address of the session endpoint that + lies in the public network. + + The value of this object must be zero when the + natSessionPrivateSrcEPBindId object has a zero value. + In such a scenario, the NAT session lookup will match + any IP address to this field. + + The type of this address is determined by the value of + the natSessionPublicAddrType object." + ::= { natSessionEntry 16 } + +natSessionPublicSrcPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "When the value of protocol is TCP or UDP, this object + represents the source port in the first packet of + session while in public-realm. On the other hand, when + protocol is ICMP, a NAT session is created only for + query/response type ICMP messages such as ICMP echo, + Timestamp, and Information request messages, and this + object represents the public-realm specific identifier + in the ICMP message, as defined in RFC 792 for ICMPv4 + and in RFC 2463 for ICMPv6. + + The value of this object must be zero when the + natSessionPrivateSrcEPBindId object has a zero value + and natSessionPrivateSrcEPBindMode is set to + addressPortBind(2). In such a scenario, the NAT + session lookup will match any port number to this + field. + + The value of this object must be zero when the object + is not a representative field (SrcPort, DstPort or + ICMP identifier) of the session tuple in either the + public realm or the private realm." + ::= { natSessionEntry 17 } + +natSessionPublicDstAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination IP address of the session endpoint that + lies in the public network. + + The value of this object must be non-zero when the + natSessionPrivateDstEPBindId object has a non-zero + value. If the value of this object and the + corresponding natSessionPrivateDstEPBindId object value + is zero, then the NAT session lookup will match any IP + address to this field. + + The type of this address is determined by the value of + the natSessionPublicAddrType object." + ::= { natSessionEntry 18 } + +natSessionPublicDstPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "When the value of protocol is TCP or UDP, this object + represents the destination port in the first packet of + session while in public-realm. On the other hand, when + the protocol is ICMP, this object is not relevant for + translation and should be zero. + + The value of this object must be zero when the + natSessionPrivateDstEPBindId object has a zero value + and natSessionPrivateDstEPBindMode is + addressPortBind(2). In such a scenario, the NAT + session lookup will match any port number to this + field. + + The value of this object must be zero when the object + is not a representative field (SrcPort, DstPort, or + ICMP identifier) of the session tuple in either the + public realm or the private realm." + ::= { natSessionEntry 19 } + +natSessionMaxIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The max time for which this session can be idle + without detecting a packet." + ::= { natSessionEntry 20 } + +natSessionCurrentIdleTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since a packet belonging to this session was + last detected." + ::= { natSessionEntry 21 } + +natSessionInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets that were translated for + this session. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + + + + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natSessionEntry 22 } + +natSessionOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets that were translated for + this session. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natSessionEntry 23 } + +-- +-- The Protocol table +-- + +natProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF NatProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing per protocol NAT + statistics." + ::= { natMIBObjects 10 } + +natProtocolEntry OBJECT-TYPE + SYNTAX NatProtocolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing NAT statistics + pertaining to a particular protocol." + INDEX { natProtocol } + ::= { natProtocolTable 1 } + +NatProtocolEntry ::= SEQUENCE { + natProtocol NatProtocolType, + natProtocolInTranslates Counter64, + natProtocolOutTranslates Counter64, + natProtocolDiscards Counter64 +} + + + + +natProtocol OBJECT-TYPE + SYNTAX NatProtocolType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents the protocol pertaining to which + parameters are reported." + ::= { natProtocolEntry 1 } + +natProtocolInTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets pertaining to the protocol + identified by natProtocol that underwent NAT. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natProtocolEntry 2 } + +natProtocolOutTranslates OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets pertaining to the protocol + identified by natProtocol that underwent NAT. + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natProtocolEntry 3 } + +natProtocolDiscards OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets pertaining to the protocol + identified by natProtocol that had to be + rejected/dropped due to lack of resources. These + rejections could be due to session timeout, resource + unavailability, lack of address space, etc. + + + + + Discontinuities in the value of this counter can occur at + reinitialization of the management system and at other + times, as indicated by the value of + ifCounterDiscontinuityTime on the relevant interface." + ::= { natProtocolEntry 4 } + +-- +-- Notifications section +-- + +natMIBNotifications OBJECT IDENTIFIER ::= { natMIB 0 } + +-- +-- Notifications +-- + +natPacketDiscard NOTIFICATION-TYPE + OBJECTS { ifIndex } + STATUS current + DESCRIPTION + "This notification is generated when IP packets are + discarded by the NAT function; e.g., due to lack of + mapping space when NAT is out of addresses or ports. + + Note that the generation of natPacketDiscard + notifications is throttled by the agent, as specified + by the 'natNotifThrottlingInterval' object." + ::= { natMIBNotifications 1 } + +-- +-- Conformance information. +-- + +natMIBConformance OBJECT IDENTIFIER ::= { natMIB 2 } + +natMIBGroups OBJECT IDENTIFIER ::= { natMIBConformance 1 } +natMIBCompliances OBJECT IDENTIFIER ::= { natMIBConformance 2 } + +-- +-- Units of conformance +-- + +natConfigGroup OBJECT-GROUP + OBJECTS { natInterfaceRealm, + natInterfaceServiceType, + natInterfaceStorageType, + natInterfaceRowStatus, + natAddrMapName, + + + + natAddrMapEntryType, + natAddrMapTranslationEntity, + natAddrMapLocalAddrType, + natAddrMapLocalAddrFrom, + natAddrMapLocalAddrTo, + natAddrMapLocalPortFrom, + natAddrMapLocalPortTo, + natAddrMapGlobalAddrType, + natAddrMapGlobalAddrFrom, + natAddrMapGlobalAddrTo, + natAddrMapGlobalPortFrom, + natAddrMapGlobalPortTo, + natAddrMapProtocol, + natAddrMapStorageType, + natAddrMapRowStatus, + natBindDefIdleTimeout, + natUdpDefIdleTimeout, + natIcmpDefIdleTimeout, + natOtherDefIdleTimeout, + natTcpDefIdleTimeout, + natTcpDefNegTimeout, + natNotifThrottlingInterval } + STATUS current + DESCRIPTION + "A collection of configuration-related information + required to support management of devices supporting + NAT." + ::= { natMIBGroups 1 } + +natTranslationGroup OBJECT-GROUP + OBJECTS { natAddrBindNumberOfEntries, + natAddrBindGlobalAddrType, + natAddrBindGlobalAddr, + natAddrBindId, + natAddrBindTranslationEntity, + natAddrBindType, + natAddrBindMapIndex, + natAddrBindSessions, + natAddrBindMaxIdleTime, + natAddrBindCurrentIdleTime, + natAddrBindInTranslates, + natAddrBindOutTranslates, + natAddrPortBindNumberOfEntries, + natAddrPortBindGlobalAddrType, + natAddrPortBindGlobalAddr, + natAddrPortBindGlobalPort, + natAddrPortBindId, + natAddrPortBindTranslationEntity, + + + + natAddrPortBindType, + natAddrPortBindMapIndex, + natAddrPortBindSessions, + natAddrPortBindMaxIdleTime, + natAddrPortBindCurrentIdleTime, + natAddrPortBindInTranslates, + natAddrPortBindOutTranslates, + natSessionPrivateSrcEPBindId, + natSessionPrivateSrcEPBindMode, + natSessionPrivateDstEPBindId, + natSessionPrivateDstEPBindMode, + natSessionDirection, + natSessionUpTime, + natSessionAddrMapIndex, + natSessionProtocolType, + natSessionPrivateAddrType, + natSessionPrivateSrcAddr, + natSessionPrivateSrcPort, + natSessionPrivateDstAddr, + natSessionPrivateDstPort, + natSessionPublicAddrType, + natSessionPublicSrcAddr, + natSessionPublicSrcPort, + natSessionPublicDstAddr, + natSessionPublicDstPort, + natSessionMaxIdleTime, + natSessionCurrentIdleTime, + natSessionInTranslates, + natSessionOutTranslates } + STATUS current + + DESCRIPTION + "A collection of BIND-related objects required to support + management of devices supporting NAT." + ::= { natMIBGroups 2 } + +natStatsInterfaceGroup OBJECT-GROUP + OBJECTS { natInterfaceInTranslates, + natInterfaceOutTranslates, + natInterfaceDiscards } + STATUS current + DESCRIPTION + "A collection of NAT statistics associated with the + interface on which NAT is configured, to aid + troubleshooting/monitoring of the NAT operation." + ::= { natMIBGroups 3 } + +natStatsProtocolGroup OBJECT-GROUP + + + + OBJECTS { natProtocolInTranslates, + natProtocolOutTranslates, + natProtocolDiscards } + STATUS current + DESCRIPTION + "A collection of protocol specific NAT statistics, + to aid troubleshooting/monitoring of NAT operation." + ::= { natMIBGroups 4 } + +natStatsAddrMapGroup OBJECT-GROUP + OBJECTS { natAddrMapInTranslates, + natAddrMapOutTranslates, + natAddrMapDiscards, + natAddrMapAddrUsed } + STATUS current + DESCRIPTION + "A collection of address map specific NAT statistics, + to aid troubleshooting/monitoring of NAT operation." + ::= { natMIBGroups 5 } + +natMIBNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { natPacketDiscard } + STATUS current + DESCRIPTION + "A collection of notifications generated by + devices supporting this MIB." + ::= { natMIBGroups 6 } + +-- +-- Compliance statements +-- + +natMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented with support for + read-create, then such an implementation can claim + full compliance. Such devices can then be both + monitored and configured with this MIB. + + The following index objects cannot be added as OBJECT + clauses but nevertheless have the compliance + requirements: + " + -- OBJECT natAddrBindLocalAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- "An implementation is required to support + + + + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrBindLocalAddr + -- SYNTAX InetAddress (SIZE(4|16)) + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrPortBindLocalAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrPortBindLocalAddr + -- SYNTAX InetAddress (SIZE(4|16)) + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + MODULE IF-MIB -- The interfaces MIB, RFC2863 + MANDATORY-GROUPS { + ifCounterDiscontinuityGroup + } + + MODULE -- this module + MANDATORY-GROUPS { natConfigGroup, natTranslationGroup, + natStatsInterfaceGroup } + + GROUP natStatsProtocolGroup + DESCRIPTION + "This group is optional." + GROUP natStatsAddrMapGroup + DESCRIPTION + "This group is optional." + GROUP natMIBNotificationGroup + DESCRIPTION + "This group is optional." + + OBJECT natAddrMapLocalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + + + + for IPv4 and IPv6." + + OBJECT natAddrMapLocalAddrFrom + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrMapLocalAddrTo + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrFrom + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrTo + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrBindGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrBindGlobalAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + + + + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrPortBindGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natAddrPortBindGlobalAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPrivateAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPrivateSrcAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + + OBJECT natSessionPrivateDstAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPublicAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPublicSrcAddr + SYNTAX InetAddress (SIZE(4|16)) + + + + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + OBJECT natSessionPublicDstAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support + for IPv4 and IPv6." + + ::= { natMIBCompliances 1 } + +natMIBReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "When this MIB is implemented without support for + read-create (i.e., in read-only mode), then such an + implementation can claim read-only compliance. + Such a device can then be monitored but cannot be + configured with this MIB. + + The following index objects cannot be added as OBJECT + clauses but nevertheless have the compliance + requirements: + " + -- OBJECT natAddrBindLocalAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrBindLocalAddr + -- SYNTAX InetAddress (SIZE(4|16)) + + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + -- OBJECT natAddrPortBindLocalAddrType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + + + -- OBJECT natAddrPortBindLocalAddr + -- SYNTAX InetAddress (SIZE(4|16)) + -- DESCRIPTION + -- "An implementation is required to support + -- global IPv4 and/or IPv6 addresses, depending + -- on its support for IPv4 and IPv6." + + MODULE IF-MIB -- The interfaces MIB, RFC2863 + MANDATORY-GROUPS { + ifCounterDiscontinuityGroup + } + + MODULE -- this module + MANDATORY-GROUPS { natConfigGroup, natTranslationGroup, + natStatsInterfaceGroup } + + GROUP natStatsProtocolGroup + DESCRIPTION + "This group is optional." + GROUP natStatsAddrMapGroup + DESCRIPTION + "This group is optional." + GROUP natMIBNotificationGroup + DESCRIPTION + "This group is optional." + OBJECT natInterfaceRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT natAddrMapLocalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapLocalAddrFrom + SYNTAX InetAddress (SIZE(4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + + + + OBJECT natAddrMapLocalAddrTo + SYNTAX InetAddress (SIZE(4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrFrom + SYNTAX InetAddress (SIZE(4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapGlobalAddrTo + SYNTAX InetAddress (SIZE(4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. An implementation is + required to support global IPv4 and/or IPv6 addresses, + depending on its support for IPv4 and IPv6." + + OBJECT natAddrMapRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT natAddrBindGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natAddrBindGlobalAddr + SYNTAX InetAddress (SIZE(4|16)) + + + + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natAddrPortBindGlobalAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natAddrPortBindGlobalAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPrivateAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPrivateSrcAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPrivateDstAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPublicAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPublicSrcAddr + + + + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + OBJECT natSessionPublicDstAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is required to support global IPv4 + and/or IPv6 addresses, depending on its support for + IPv4 and IPv6." + + ::= { natMIBCompliances 2 } + +END diff --git a/mibs/ietf/NETWORK-SERVICES-MIB b/mibs/ietf/NETWORK-SERVICES-MIB new file mode 100644 index 0000000..b04b3ea --- /dev/null +++ b/mibs/ietf/NETWORK-SERVICES-MIB @@ -0,0 +1,619 @@ +NETWORK-SERVICES-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE, Counter32, Gauge32, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TimeStamp, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +application MODULE-IDENTITY + LAST-UPDATED "200003030000Z" + ORGANIZATION "IETF Mail and Directory Management Working Group" + CONTACT-INFO + " Ned Freed + + Postal: Innosoft International, Inc. + 1050 Lakes Drive + West Covina, CA 91790 + US + + Tel: +1 626 919 3600 + Fax: +1 626 919 3614 + + E-Mail: ned.freed@innosoft.com" + DESCRIPTION + "The MIB module describing network service applications" + REVISION "200003030000Z" + DESCRIPTION + "This revision, published in RFC 2788, changes a number of + DisplayStrings to SnmpAdminStrings. Note that this change + is not strictly supported by SMIv2. However, the alternative + of deprecating the old objects and defining new objects + would have a more adverse impact on backward compatibility + and interoperability, given the particular semantics of + these objects. The defining reference for distinguished + names has also been updated from RFC 1779 to RFC 2253." + REVISION "199905120000Z" + DESCRIPTION + "This revision fixes a few small technical problems found + in previous versions, mostly in regards to the conformance + groups for different versions of this MIB. No changes have + been made to the objects this MIB defines since RFC 2248." + REVISION "199708170000Z" + DESCRIPTION + "This revision, published in RFC 2248, adds the + applDescription and applURL objects, adds the quiescing + state to the applOperStatus object and renames the MIB + from the APPLICATION-MIB to the NETWORK-SERVICE-MIB." + REVISION "199311280000Z" + DESCRIPTION + "The original version of this MIB was published in RFC 1565" + ::= {mib-2 27} + +-- Textual conventions + +-- DistinguishedName is used to refer to objects in the +-- directory. + +DistinguishedName ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "A Distinguished Name represented in accordance with + RFC 2253, presented in the UTF-8 charset defined in + RFC 2279." + SYNTAX OCTET STRING (SIZE (0..255)) + +-- Uniform Resource Locators are stored in URLStrings. + +URLString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "A Uniform Resource Locator represented in accordance + with RFCs 1738 and 2368, presented in the NVT ASCII + charset defined in RFC 854." + SYNTAX OCTET STRING (SIZE (0..255)) + +-- The basic applTable contains a list of the application +-- entities. + +applTable OBJECT-TYPE + SYNTAX SEQUENCE OF ApplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding objects which apply to all different + kinds of applications providing network services. + Each network service application capable of being + monitored should have a single entry in this table." + ::= {application 1} + +applEntry OBJECT-TYPE + SYNTAX ApplEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry associated with a single network service + application." + INDEX {applIndex} + ::= {applTable 1} + +ApplEntry ::= SEQUENCE { + applIndex + INTEGER, + applName + SnmpAdminString, + applDirectoryName + DistinguishedName, + applVersion + SnmpAdminString, + applUptime + TimeStamp, + applOperStatus + INTEGER, + applLastChange + TimeStamp, + applInboundAssociations + Gauge32, + applOutboundAssociations + Gauge32, + applAccumulatedInboundAssociations + Counter32, + applAccumulatedOutboundAssociations + Counter32, + applLastInboundActivity + TimeStamp, + applLastOutboundActivity + TimeStamp, + applRejectedInboundAssociations + Counter32, + applFailedOutboundAssociations + Counter32, + applDescription + SnmpAdminString, + applURL + URLString +} + +applIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index to uniquely identify the network service + application. This attribute is the index used for + lexicographic ordering of the table." + ::= {applEntry 1} + +applName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name the network service application chooses to be + known by." + ::= {applEntry 2} + +applDirectoryName OBJECT-TYPE + SYNTAX DistinguishedName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Distinguished Name of the directory entry where + static information about this application is stored. + An empty string indicates that no information about + the application is available in the directory." + ::= {applEntry 3} + +applVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of network service application software. + This field is usually defined by the vendor of the + network service application software." + ::= {applEntry 4} +applUptime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the network service + application was last initialized. If the application was + last initialized prior to the last initialization of the + network management subsystem, then this object contains + a zero value." + ::= {applEntry 5} + +applOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + halted(3), + congested(4), + restarting(5), + quiescing(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the operational status of the network service + application. 'down' indicates that the network service is + not available. 'up' indicates that the network service + is operational and available. 'halted' indicates that the + service is operational but not available. 'congested' + indicates that the service is operational but no additional + inbound associations can be accommodated. 'restarting' + indicates that the service is currently unavailable but is + in the process of restarting and will be available soon. + 'quiescing' indicates that service is currently operational + but is in the process of shutting down. Additional inbound + associations may be rejected by applications in the + 'quiescing' state." + ::= {applEntry 6} + +applLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the network service + application entered its current operational state. If + the current state was entered prior to the last + initialization of the local network management subsystem, + then this object contains a zero value." + ::= {applEntry 7} + +applInboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current associations to the network service + application, where it is the responder. An inbound + association occurs when another application successfully + connects to this one." + ::= {applEntry 8} + +applOutboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of current associations to the network service + application, where it is the initiator. An outbound + association occurs when this application successfully + connects to another one." + ::= {applEntry 9} + +applAccumulatedInboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of associations to the application entity + since application initialization, where it was the responder." + ::= {applEntry 10} + +applAccumulatedOutboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of associations to the application entity + since application initialization, where it was the initiator." + ::= {applEntry 11} + +applLastInboundActivity OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this application last + had an inbound association. If the last association + occurred prior to the last initialization of the network + subsystem, then this object contains a zero value." + ::= {applEntry 12} + +applLastOutboundActivity OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this application last + had an outbound association. If the last association + occurred prior to the last initialization of the network + subsystem, then this object contains a zero value." + ::= {applEntry 13} + +applRejectedInboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of inbound associations the application + entity has rejected, since application initialization. + Rejected associations are not counted in the accumulated + association totals. Note that this only counts + associations the application entity has rejected itself; + it does not count rejections that occur at lower layers + of the network. Thus, this counter may not reflect the + true number of failed inbound associations." + ::= {applEntry 14} + +applFailedOutboundAssociations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number associations where the application entity + is initiator and association establishment has failed, + since application initialization. Failed associations are + not counted in the accumulated association totals." + ::= {applEntry 15} + +applDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A text description of the application. This information + is intended to identify and briefly describe the + application in a status display." + ::= {applEntry 16} + +applURL OBJECT-TYPE + SYNTAX URLString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A URL pointing to a description of the application. + This information is intended to identify and describe + the application in a status display." + ::= {applEntry 17} + +-- The assocTable augments the information in the applTable +-- with information about associations. Note that two levels +-- of compliance are specified below, depending on whether +-- association monitoring is mandated. + +assocTable OBJECT-TYPE + SYNTAX SEQUENCE OF AssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table holding a set of all active application + associations." + ::= {application 2} + +assocEntry OBJECT-TYPE + SYNTAX AssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry associated with an association for a network + service application." + INDEX {applIndex, assocIndex} + ::= {assocTable 1} + +AssocEntry ::= SEQUENCE { + assocIndex + INTEGER, + assocRemoteApplication + SnmpAdminString, + assocApplicationProtocol + OBJECT IDENTIFIER, + assocApplicationType + INTEGER, + assocDuration + TimeStamp +} + +assocIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index to uniquely identify each association for a network + service application. This attribute is the index that is + used for lexicographic ordering of the table. Note that the + table is also indexed by the applIndex." + ::= {assocEntry 1} + +assocRemoteApplication OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the system running remote network service + application. For an IP-based application this should be + either a domain name or IP address. For an OSI application + it should be the string encoded distinguished name of the + managed object. For X.400(1984) MTAs which do not have a + Distinguished Name, the RFC 2156 syntax 'mta in + globalid' used in X400-Received: fields can be used. Note, + however, that not all connections an MTA makes are + necessarily to another MTA." + ::= {assocEntry 2} + +assocApplicationProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identification of the protocol being used for the + application. For an OSI Application, this will be the + Application Context. For Internet applications, OID + values of the form {applTCPProtoID port} or {applUDPProtoID + port} are used for TCP-based and UDP-based protocols, + respectively. In either case 'port' corresponds to the + primary port number being used by the protocol. The + usual IANA procedures may be used to register ports for + new protocols." + ::= {assocEntry 3} + +assocApplicationType OBJECT-TYPE + SYNTAX INTEGER { + uainitiator(1), + uaresponder(2), + peerinitiator(3), + peerresponder(4)} + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This indicates whether the remote application is some type of + client making use of this network service (e.g., a Mail User + Agent) or a server acting as a peer. Also indicated is whether + the remote end initiated an incoming connection to the network + service or responded to an outgoing connection made by the + local application. MTAs and messaging gateways are + considered to be peers for the purposes of this variable." + ::= {assocEntry 4} + +assocDuration OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this association was + started. If this association started prior to the last + initialization of the network subsystem, then this + object contains a zero value." + ::= {assocEntry 5} + + +-- Conformance information + +applConformance OBJECT IDENTIFIER ::= {application 3} + +applGroups OBJECT IDENTIFIER ::= {applConformance 1} +applCompliances OBJECT IDENTIFIER ::= {applConformance 2} + +-- Compliance statements + +applCompliance MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement for RFC 1565 implementations + which support the Network Services Monitoring MIB + for basic monitoring of network service applications. + This is the basic compliance statement for RFC 1565." + MODULE + MANDATORY-GROUPS {applRFC1565Group} + ::= {applCompliances 1} + +assocCompliance MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement for RFC 1565 implementations + which support the Network Services Monitoring MIB + for basic monitoring of network service applications + and their associations." + MODULE + MANDATORY-GROUPS {applRFC1565Group, assocRFC1565Group} + ::= {applCompliances 2} + +applRFC2248Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for RFC 2248 implementations + which support the Network Services Monitoring MIB + for basic monitoring of network service applications." + MODULE + MANDATORY-GROUPS {applRFC2248Group} + ::= {applCompliances 3} + +assocRFC2248Compliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for RFC 2248 implementations + which support the Network Services Monitoring MIB for + basic monitoring of network service applications and + their associations." + MODULE + MANDATORY-GROUPS {applRFC2248Group, assocRFC2248Group} + ::= {applCompliances 4} + +applRFC2788Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2788 implementations + which support the Network Services Monitoring MIB + for basic monitoring of network service applications." + MODULE + MANDATORY-GROUPS {applRFC2788Group} + ::= {applCompliances 5} + +assocRFC2788Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for RFC 2788 implementations + which support the Network Services Monitoring MIB for + basic monitoring of network service applications and + their associations." + MODULE + MANDATORY-GROUPS {applRFC2788Group, assocRFC2788Group} + ::= {applCompliances 6} + + +-- Units of conformance + +applRFC1565Group OBJECT-GROUP + OBJECTS { + applName, applVersion, applUptime, applOperStatus, + applLastChange, applInboundAssociations, + applOutboundAssociations, applAccumulatedInboundAssociations, + applAccumulatedOutboundAssociations, applLastInboundActivity, + applLastOutboundActivity, applRejectedInboundAssociations, + applFailedOutboundAssociations} + STATUS obsolete + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications. This is the original set + of such objects defined in RFC 1565." + ::= {applGroups 7} + +assocRFC1565Group OBJECT-GROUP + OBJECTS { + assocRemoteApplication, assocApplicationProtocol, + assocApplicationType, assocDuration} + STATUS obsolete + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications' associations. This is the + original set of such objects defined in RFC 1565." + ::= {applGroups 2} + +applRFC2248Group OBJECT-GROUP + OBJECTS { + applName, applVersion, applUptime, applOperStatus, + applLastChange, applInboundAssociations, + applOutboundAssociations, applAccumulatedInboundAssociations, + applAccumulatedOutboundAssociations, applLastInboundActivity, + applLastOutboundActivity, applRejectedInboundAssociations, + applFailedOutboundAssociations, applDescription, applURL} + STATUS deprecated + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications. This group was originally + defined in RFC 2248; note that applDirectoryName is + missing." + ::= {applGroups 3} + +assocRFC2248Group OBJECT-GROUP + OBJECTS { + assocRemoteApplication, assocApplicationProtocol, + assocApplicationType, assocDuration} + STATUS deprecated + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications' associations. This group + was originally defined by RFC 2248." + ::= {applGroups 4} + +applRFC2788Group OBJECT-GROUP + OBJECTS { + applName, applDirectoryName, applVersion, applUptime, + applOperStatus, applLastChange, applInboundAssociations, + applOutboundAssociations, applAccumulatedInboundAssociations, + applAccumulatedOutboundAssociations, applLastInboundActivity, + applLastOutboundActivity, applRejectedInboundAssociations, + applFailedOutboundAssociations, applDescription, applURL} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications. This is the appropriate + group for RFC 2788 -- it adds the applDirectoryName object + missing in RFC 2248." + ::= {applGroups 5} + +assocRFC2788Group OBJECT-GROUP + OBJECTS { + assocRemoteApplication, assocApplicationProtocol, + assocApplicationType, assocDuration} + STATUS current + DESCRIPTION + "A collection of objects providing basic monitoring of + network service applications' associations. This is + the appropriate group for RFC 2788." + ::= {applGroups 6} + +-- OIDs of the form {applTCPProtoID port} are intended to be used +-- for TCP-based protocols that don't have OIDs assigned by other +-- means. {applUDPProtoID port} serves the same purpose for +-- UDP-based protocols. In either case 'port' corresponds to +-- the primary port number being used by the protocol. For example, +-- assuming no other OID is assigned for SMTP, an OID of +-- {applTCPProtoID 25} could be used, since SMTP is a TCP-based +-- protocol that uses port 25 as its primary port. + +applTCPProtoID OBJECT IDENTIFIER ::= {application 4} +applUDPProtoID OBJECT IDENTIFIER ::= {application 5} + +END diff --git a/mibs/ietf/NHRP-MIB b/mibs/ietf/NHRP-MIB new file mode 100644 index 0000000..4f9bfcc --- /dev/null +++ b/mibs/ietf/NHRP-MIB @@ -0,0 +1,2609 @@ +NHRP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + + OBJECT-TYPE, MODULE-IDENTITY, mib-2, Integer32, + Counter32, Unsigned32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + TEXTUAL-CONVENTION, TruthValue, RowStatus, StorageType, + TimeStamp + FROM SNMPv2-TC + ifIndex + FROM IF-MIB + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB + ; + +nhrpMIB MODULE-IDENTITY + LAST-UPDATED "9908260000Z" -- August 26, 1999 + ORGANIZATION "Internetworking Over NBMA (ion) Working Group" + CONTACT-INFO + "Maria Greene (maria@xedia.com) + Contractor + + Joan Cucchiara (joan@ironbridgenetworks.com) + IronBridge Networks + + James V. Luciani (luciani@baynetworks.com) + Bay Networks" + DESCRIPTION + "This MIB contains managed object definitions for the Next + Hop Resolution Procol, NHRP, as defined in RFC 2332 [17]." + + -- revision history + + REVISION "9908260000Z" -- August 26, 1999 + DESCRIPTION "Initial version, published as RFC 2677." + + ::= { mib-2 71 } + +--**************************************************************** + -- NHRP Textual Conventions + --**************************************************************** + + NhrpGenAddr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of an internetwork layer or NBMA address." + SYNTAX OCTET STRING (SIZE (0..64)) + + nhrpObjects OBJECT IDENTIFIER ::= { nhrpMIB 1 } + + --**************************************************************** + -- NHRP General (Client and Server) Objects + --**************************************************************** + + nhrpGeneralObjects OBJECT IDENTIFIER ::= { nhrpObjects 1 } + + + -- + -- The following scalar is to be used to + -- provided indices for the + -- nhrpClientTable, and/or the nhrpServerTable. + -- + + nhrpNextIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This scalar is used for creating rows in the + nhrpClientTable and the nhrpServerTable. + The value of this variable is a currently unused value + for nhrpClientIndex and nhrpServerIndex. + The value returned when reading this variable must be + unique for the NHC's and NHS's indices associated with + this row. Subsequent attempts to read this variable + must return different values. + + NOTE: this object exists in the General Group because + it is to be used in establishing rows in the + nhrpClientTable and the nhrpServerTable. In other words, + the value retrieved from this object could become the + value of nhrpClientIndex and nhprServerIndex. + + In the situation of an agent re-initialization the value + of this object must be saved in non-volatile storage. + + This variable will return the special value 0 if no new + rows can be created." + ::= { nhrpGeneralObjects 1 } + + + -- + -- The NHRP Cache Table + -- + + nhrpCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpCacheEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "This table contains mappings between internetwork layer + addresses and NBMA subnetwork layer addresses." + ::= { nhrpGeneralObjects 2 } + +nhrpCacheEntry OBJECT-TYPE + SYNTAX NhrpCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A cached mapping between an internetwork layer address + and an NBMA address. Entries can be created by the + network administrator using the nhrpCacheRowStatus + column, or they may be added dynamically based on + protocol operation (including NHRP, SCSP, and others, + such as ATMARP). + + When created based by NHRP protocol operations + this entry is largely based on contents contained in + the Client Information Entry (CIE). + Zero or more Client Information Entries (CIEs) may be + included in the NHRP Packet. For a complete description + of the CIE, refer to Section 5.2.0.1 of + RFC 2332 [17]." + INDEX { + nhrpCacheInternetworkAddrType, + nhrpCacheInternetworkAddr, + ifIndex, + nhrpCacheIndex + } + ::= { nhrpCacheTable 1 } + +NhrpCacheEntry ::= SEQUENCE { + nhrpCacheInternetworkAddrType AddressFamilyNumbers, + nhrpCacheInternetworkAddr NhrpGenAddr, + nhrpCacheIndex Unsigned32, + nhrpCachePrefixLength Integer32, + nhrpCacheNextHopInternetworkAddr NhrpGenAddr, + nhrpCacheNbmaAddrType AddressFamilyNumbers, + nhrpCacheNbmaAddr NhrpGenAddr, + nhrpCacheNbmaSubaddr NhrpGenAddr, + nhrpCacheType INTEGER, + nhrpCacheState INTEGER, + nhrpCacheHoldingTimeValid TruthValue, + nhrpCacheHoldingTime Unsigned32, + nhrpCacheNegotiatedMtu Integer32, + nhrpCachePreference Integer32, + nhrpCacheStorageType StorageType, + nhrpCacheRowStatus RowStatus + + +} + +nhrpCacheInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The internetwork layer address type of this Next Hop + Resolution Cache entry. The value of this object indicates + how to interpret the values of nhrpCacheInternetworkAddr + and nhrpCacheNextHopInternetworkAddr." + ::= { nhrpCacheEntry 1 } + +nhrpCacheInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the internetwork address of the + destination." + ::= { nhrpCacheEntry 2 } + +nhrpCacheIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for this entry that has local + significance within the scope of the General + Group. This identifier is used here to + uniquely identify this row, and also used + in the 'nhrpPurgeTable' for the value of + the 'nhrpPurgeCacheIdentifier'." + ::= { nhrpCacheEntry 3 } + +nhrpCachePrefixLength OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bits that define the internetwork layer + prefix associated with the nhrpCacheInternetworkAddr." + ::= { nhrpCacheEntry 4 } + +nhrpCacheNextHopInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork address of the next hop." + + ::= { nhrpCacheEntry 5 } + +nhrpCacheNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA address type. The value of this + object indicates how to interpret + the values of nhrpCacheNbmaAddr and + nhrpCacheNbmaSubaddr." + ::= { nhrpCacheEntry 6 } + +nhrpCacheNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the NBMA subnetwork address of the next + hop." + ::= { nhrpCacheEntry 7 } + +nhrpCacheNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the NBMA subaddress of the next hop. If + there is no subaddress concept for the NBMA address + family, this value will be a zero-length OCTET STRING." + ::= { nhrpCacheEntry 8 } + +nhrpCacheType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + register(2), + resolveAuthoritative(3), + resoveNonauthoritative(4), + transit(5), + administrativelyAdded(6), + atmarp(7), + scsp(8) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of how this cache entry + was created. The values are: + + 'other(1)' The entry was added by some + other means. + + 'register(2)' In a server, added based on a + client registration. + + 'resolveAuthoritative(3)' In a client, added based on + receiving an Authoritative + NHRP Resolution Reply. + 'resolveNonauthoritative(4)' In a client, added based on + receiving a Nonauthoritative + NHRP Resolution Reply. + + 'transit(5)' In a transit server, added by + examining a forwarded NHRP + packet. + + 'administrativelyAdded(6)' In a client or server, + manually added by the + administrator. The + StorageType of this entry is + reflected in + 'nhrpCacheStorageType'. + + 'atmarp(7)' The entry was added due to an + ATMARP. + + 'scsp(8)' The entry was added due to + SCSP. + + + When the entry is under creation using the + nhrpCacheRowStatus column, the only value that can be + specified by the administrator is 'administrativelyAdded'. + Attempting to set any other value will cause an + 'inconsistentValue' error. + + The value cannot be modified once the entry is active." + ::= { nhrpCacheEntry 9 } + + +nhrpCacheState OBJECT-TYPE + SYNTAX INTEGER { + incomplete(1), + ackReply(2), + nakReply(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "An indication of the state of this entry. The values are: + + 'incomplete(1)' The client has sent a NHRP Resolution + Request but has not yet received the + NHRP Resolution Reply. + 'ackReply(2)' For a client or server, this is a + cached valid mapping. + + 'nakReply(3)' For a client or server, this is a + cached NAK mapping." + ::= { nhrpCacheEntry 10 } + +nhrpCacheHoldingTimeValid OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "True(1) is returned if the value of + 'nhrpCacheType' is not + 'administrativelyAdded'. Since the + value of 'nhrpCacheType' was not + configured by a user, the value of + 'nhrpCacheHoldingTime' is + considered valid. In other words, the value of + 'nhrpCacheHoldingTime' represents + the Holding Time for the cache Entry. + + If 'nhrpCacheType has been configured by a + user, (i.e. the value of 'nhrpCacheType' is + 'administrativelyAdded') then false(2) will be returned. + This indicates that the value of + 'nhrpCacheHoldingTime' is undefined because this row + could possibly be backed up in nonvolatile storage." + ::= { nhrpCacheEntry 11 } + +nhrpCacheHoldingTime OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the value of 'nhrpCacheHoldingTimeValid is + true(1) then this object represents the number + of seconds that the cache entry will remain in this + table. When this value reaches 0 (zero) the row should + be deleted. + + If the value of 'nhrpCacheHoldingTimeValid is + false(2) then this object is undefined." + ::= { nhrpCacheEntry 12 } + +nhrpCacheNegotiatedMtu OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum transmission unit (MTU) that was negotiated + or registered for this entity. In other words, this is the + actual MTU being used." + ::= { nhrpCacheEntry 13 } + +nhrpCachePreference OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object which reflects the Preference value of the + Client Information Entry (CIE). + + Zero or more Client Information Entries (CIEs) may be + included in the NHRP Packet. One of the fields in the + CIE is the Preference. For a complete description of + the CIE, refer to Section 5.2.0.1 of RFC 2332 [17]." + REFERENCE + "Section 5.2.0.1 Mandatory Part Format, RFC 2332 [17]." + ::= { nhrpCacheEntry 14 } + +nhrpCacheStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value only has meaning when the 'nhrpCacheType' + has the value of 'administrativelyAdded'. + + When the row is created due to being + 'administrativelyAdded', this object reflects whether + this row is kept in volatile storage + and lost upon reboot or if this row is backed up by + non-volatile or permanent storage. + + If the value of 'nhrpCacheType' has a value which + is not 'administrativelyAdded, then the value of this + object is 'other(1)'." + DEFVAL { nonVolatile } + ::= { nhrpCacheEntry 15 } + +nhrpCacheRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpCacheEntry 16 } + +-- +-- The NHRP Purge Request Table +-- + +nhrpPurgeReqTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpPurgeReqEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table will track Purge Request Information." + ::= { nhrpGeneralObjects 3 } + +nhrpPurgeReqEntry OBJECT-TYPE + SYNTAX NhrpPurgeReqEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information regarding a Purge Request." + INDEX { nhrpPurgeIndex } + ::= { nhrpPurgeReqTable 1 } + +NhrpPurgeReqEntry ::= SEQUENCE { + nhrpPurgeIndex Unsigned32, + nhrpPurgeCacheIdentifier Unsigned32, + nhrpPurgePrefixLength Integer32, + nhrpPurgeRequestID Unsigned32, + nhrpPurgeReplyExpected TruthValue, + nhrpPurgeRowStatus RowStatus +} + +nhrpPurgeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index for this entry that has local significance + within the scope of this table." + ::= { nhrpPurgeReqEntry 1 } + +nhrpPurgeCacheIdentifier OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "This object identifies which row in + 'nhrpCacheTable' is being purged. This object + should have the same value as the 'nhrpCacheIndex' + in the 'nhrpCacheTable'." + ::= { nhrpPurgeReqEntry 2 } + +nhrpPurgePrefixLength OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "In the case of NHRP Purge Requests, this specifies the + equivalence class of addresses which match the first + 'Prefix Length' bit positions of the Client Protocol + Address specified in the Client Information Entry (CIE)." + ::= { nhrpPurgeReqEntry 3 } + +nhrpPurgeRequestID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Request ID used in the purge request." + ::= { nhrpPurgeReqEntry 4 } + +nhrpPurgeReplyExpected OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An indication of whether this Purge Request has the + 'N' Bit cleared (off)." + ::= { nhrpPurgeReqEntry 5 } + +nhrpPurgeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpPurgeReqEntry 6 } + +--**************************************************************** +-- NHRP Client Objects +--**************************************************************** + +nhrpClientObjects OBJECT IDENTIFIER ::= { nhrpObjects 2 } + +-- +-- The NHRP Client Table +-- + +nhrpClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about NHRP clients (NHCs) managed by this + agent." + ::= { nhrpClientObjects 1 } + +nhrpClientEntry OBJECT-TYPE + SYNTAX NhrpClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single NHC." + INDEX { nhrpClientIndex } + ::= { nhrpClientTable 1 } + +NhrpClientEntry ::= SEQUENCE { + nhrpClientIndex Unsigned32, + nhrpClientInternetworkAddrType AddressFamilyNumbers, + nhrpClientInternetworkAddr NhrpGenAddr, + nhrpClientNbmaAddrType AddressFamilyNumbers, + nhrpClientNbmaAddr NhrpGenAddr, + nhrpClientNbmaSubaddr NhrpGenAddr, + nhrpClientInitialRequestTimeout Integer32, + nhrpClientRegistrationRequestRetries Integer32, + nhrpClientResolutionRequestRetries Integer32, + nhrpClientPurgeRequestRetries Integer32, + nhrpClientDefaultMtu Unsigned32, + nhrpClientHoldTime Unsigned32, + nhrpClientRequestID Unsigned32, + nhrpClientStorageType StorageType, + nhrpClientRowStatus RowStatus +} + +nhrpClientIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for the NHRP client that is unique within + the scope of this agent. The 'nhrpNextIndex' value + should be consulted (read), prior to creating a row in + this table, and the value returned from reading + 'nhrpNextIndex' should be used as this object's value." + + ::= { nhrpClientEntry 1 } + +nhrpClientInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address of this + client. This object indicates how the value of + nhrpClientInternetworkAddr is to be interpreted." + ::= { nhrpClientEntry 2 } + +nhrpClientInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork layer address of this + client." + ::= { nhrpClientEntry 3 } + +nhrpClientNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the NBMA subnetwork address of this client. + This object indicates how the values of + nhrpClientNbmaAddr and nhrpClientNbmaSubaddr are to be + interpreted." + ::= { nhrpClientEntry 4 } + +nhrpClientNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subnetwork address of this client." + ::= { nhrpClientEntry 5 } + +nhrpClientNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subaddress of this client. For NBMA address + families without a subaddress concept, this will be a + zero-length OCTET STRING." + ::= { nhrpClientEntry 6 } + +nhrpClientInitialRequestTimeout OBJECT-TYPE + SYNTAX Integer32 (1..900) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that the client will wait before + timing out an NHRP initial request. This object only has + meaning for the initial timeout period." + DEFVAL { 10 } + ::= { nhrpClientEntry 7 } + +nhrpClientRegistrationRequestRetries OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times the client will retry the + registration request before failure. A value of + 0 means don't retry. A value of 65535 means + retry forever." + DEFVAL { 3 } + ::= { nhrpClientEntry 8 } + +nhrpClientResolutionRequestRetries OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times the client will retry the resolution + request before failure. A value of 0 means don't retry. + A value of 65535 means retry forever." + DEFVAL { 3 } + ::= { nhrpClientEntry 9 } + +nhrpClientPurgeRequestRetries OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times the client will retry a purge request + before failure. A value of 0 means don't retry. A value of + 65535 means retry forever." + DEFVAL { 3 } + ::= { nhrpClientEntry 10 } + +nhrpClientDefaultMtu OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + + DESCRIPTION + "The default maximum transmission unit (MTU) of the + LIS/LAG which this client should use. This object + will be initialized by the agent to the default MTU + of the LIS/LAG (which is 9180) unless a different MTU + value is specified during creation of this Client." + REFERENCE + "RFC 2225 [25], Classical IP and ARP over ATM, Section 7, + DEFAULT VALUE FOR IP MTU OVER ATM AAL5." + DEFVAL { 9180 } + ::= { nhrpClientEntry 11 } + +nhrpClientHoldTime OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The hold time the client will register." + DEFVAL { 900 } + ::= { nhrpClientEntry 12 } + +nhrpClientRequestID OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Request ID used to register this client with its + server. According to Section 5.2.3 of the NHRP + Specification, RFC 2332 [17], the Request ID must + be kept in non-volatile storage, so that if an NHC + crashes and re-initializes, it will use a different + Request ID during the registration process + when reregistering with the same NHS." + REFERENCE + "Section 5.2.3 NHRP Registration Request, RFC 2332 [17]." + ::= { nhrpClientEntry 13 } + +nhrpClientStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept in + volatile storage and lost upon a Client crash or + reboot situation, or if this row is backed up by + nonvolatile or permanent storage." + DEFVAL { nonVolatile } + ::= { nhrpClientEntry 14 } + +nhrpClientRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpClientEntry 15 } + + +-- +-- The NHRP Client Registration Table +-- + +nhrpClientRegistrationTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpClientRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Registration Request Information that + needs to be maintained by the NHCs (clients)." + REFERENCE + "Section 5.2.3 NHRP Registration Request, RFC 2332 [17]." + ::= { nhrpClientObjects 2 } + +nhrpClientRegistrationEntry OBJECT-TYPE + SYNTAX NhrpClientRegistrationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An NHC needs to maintain registration request information + between the NHC and the NHS. An entry in this table + represents information for a single registration request." + INDEX { nhrpClientIndex, + nhrpClientRegIndex + } + ::= { nhrpClientRegistrationTable 1 } + +NhrpClientRegistrationEntry ::= SEQUENCE { + nhrpClientRegIndex Unsigned32, + nhrpClientRegUniqueness INTEGER, + nhrpClientRegState INTEGER, + nhrpClientRegRowStatus RowStatus +} + +nhrpClientRegIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "An identifier for this entry such that it + identifies a specific Registration Request from + the NHC represented by the nhrpClientIndex." + ::= { nhrpClientRegistrationEntry 1 } + +nhrpClientRegUniqueness OBJECT-TYPE + SYNTAX INTEGER { + requestUnique(1), + requestNotUnique(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Uniqueness indicator for this Registration Request. + If this object has the value of requestUnique(1), then + the Uniqueness bit is set in the the NHRP Registration + Request represented by this row. The value cannot + be changed once the row is created." + ::= { nhrpClientRegistrationEntry 2 } + +nhrpClientRegState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + registering(2), + ackRegisterReply(3), + nakRegisterReply(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The registration state of this client. The values are: + 'other(1)' The state of the registration + request is not one of + 'registering', + 'ackRegisterReply' or + 'nakRegisterReply'. + + 'registering(2)' A registration request has + been issued and a registration + reply is expected. + + 'ackRegisterReply(3)' A positive registration reply + has been received. + + 'nakRegisterReply(4)' The client has received a + negative registration + reply (NAK)." + ::= { nhrpClientRegistrationEntry 3 } + +nhrpClientRegRowStatus OBJECT-TYPE + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpClientRegistrationEntry 4 } + +-- +-- The NHRP Client->Server Table +-- + +nhrpClientNhsTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpClientNhsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of NHSes that are available for use by this NHC + (client). By default, the agent will add an entry to this + table that corresponds to the client's default router." + ::= { nhrpClientObjects 3 } + +nhrpClientNhsEntry OBJECT-TYPE + SYNTAX NhrpClientNhsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An NHS that may be used by an NHC." + INDEX { nhrpClientIndex, nhrpClientNhsIndex } + ::= { nhrpClientNhsTable 1 } + +NhrpClientNhsEntry ::= SEQUENCE { + nhrpClientNhsIndex Unsigned32, + nhrpClientNhsInternetworkAddrType AddressFamilyNumbers, + nhrpClientNhsInternetworkAddr NhrpGenAddr, + nhrpClientNhsNbmaAddrType AddressFamilyNumbers, + nhrpClientNhsNbmaAddr NhrpGenAddr, + nhrpClientNhsNbmaSubaddr NhrpGenAddr, + nhrpClientNhsInUse TruthValue, + nhrpClientNhsRowStatus RowStatus +} + +nhrpClientNhsIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for an NHS available to an NHC." + ::= { nhrpClientNhsEntry 1 } + +nhrpClientNhsInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address of the + NHRP server represented in this entry. This object + indicates how the value of + nhrpClientNhsInternetworkAddr is to be interpreted." + ::= { nhrpClientNhsEntry 2 } + +nhrpClientNhsInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the destination internetwork layer + address of the NHRP server represented by this + entry. If this value is not known, this will be + a zero-length OCTET STRING." + ::= { nhrpClientNhsEntry 3 } + +nhrpClientNhsNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the NBMA subnetwork address of the NHRP + Server represented by this entry. This object indicates + how the values of nhrpClientNhsNbmaAddr and + nhrpClientNhsNbmaSubaddr are to be interpreted." + ::= { nhrpClientNhsEntry 4 } + +nhrpClientNhsNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subnetwork address of the NHS. The type of + the address is indicated by the corresponding value of + nhrpClientNhsNbmaAddrType." + ::= { nhrpClientNhsEntry 5 } + +nhrpClientNhsNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subaddress of the NHS. For NMBA address + families that do not have the concept of subaddress, + this will be a zero-length OCTET STRING." + ::= { nhrpClientNhsEntry 6 } + +nhrpClientNhsInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this NHS is in use by the NHC." + ::= { nhrpClientNhsEntry 7 } + +nhrpClientNhsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpClientNhsEntry 8 } + +-- +-- The NHRP Client StatisticsTable +-- + +nhrpClientStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpClientStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains statistics collected by NHRP + clients." + ::= { nhrpClientObjects 4 } + +nhrpClientStatEntry OBJECT-TYPE + SYNTAX NhrpClientStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics collected by a NHRP client." + INDEX { nhrpClientIndex } + ::= { nhrpClientStatTable 1 } + +NhrpClientStatEntry ::= SEQUENCE { + nhrpClientStatTxResolveReq Counter32, + nhrpClientStatRxResolveReplyAck Counter32, + nhrpClientStatRxResolveReplyNakProhibited Counter32, + nhrpClientStatRxResolveReplyNakInsufResources Counter32, + nhrpClientStatRxResolveReplyNakNoBinding Counter32, + nhrpClientStatRxResolveReplyNakNotUnique Counter32, + nhrpClientStatTxRegisterReq Counter32, + nhrpClientStatRxRegisterAck Counter32, + nhrpClientStatRxRegisterNakProhibited Counter32, + nhrpClientStatRxRegisterNakInsufResources Counter32, + nhrpClientStatRxRegisterNakAlreadyReg Counter32, + + nhrpClientStatRxPurgeReq Counter32, + nhrpClientStatTxPurgeReq Counter32, + nhrpClientStatRxPurgeReply Counter32, + nhrpClientStatTxPurgeReply Counter32, + + nhrpClientStatTxErrorIndication Counter32, + nhrpClientStatRxErrUnrecognizedExtension Counter32, + nhrpClientStatRxErrLoopDetected Counter32, + nhrpClientStatRxErrProtoAddrUnreachable Counter32, + nhrpClientStatRxErrProtoError Counter32, + nhrpClientStatRxErrSduSizeExceeded Counter32, + nhrpClientStatRxErrInvalidExtension Counter32, + nhrpClientStatRxErrAuthenticationFailure Counter32, + nhrpClientStatRxErrHopCountExceeded Counter32, + nhrpClientStatDiscontinuityTime TimeStamp +} + +nhrpClientStatTxResolveReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Resolution Requests transmitted + by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 1 } + +nhrpClientStatRxResolveReplyAck OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of positively acknowledged NHRP Resolution + Replies received by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 2 } + +nhrpClientStatRxResolveReplyNakProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies received + by this client that contained the code indicating + 'Administratively Prohibited'. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 3 } + +nhrpClientStatRxResolveReplyNakInsufResources OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies received + by this client that contained the code indicating + 'Insufficient Resources'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 4 } + +nhrpClientStatRxResolveReplyNakNoBinding OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies received + by this client that contained the code indicating + 'No Internetworking Layer Address to NBMA Address + Binding Exists'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + + ::= { nhrpClientStatEntry 5 } + +nhrpClientStatRxResolveReplyNakNotUnique OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies received + by this client that contained the code indicating + 'Binding Exists But Is Not Unique'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 6 } + +nhrpClientStatTxRegisterReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Registration Requests transmitted + by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 7 } + +nhrpClientStatRxRegisterAck OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of positively acknowledged NHRP Registration + Replies received by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 8 } + +nhrpClientStatRxRegisterNakProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies received + by this client that contained the code indicating + 'Administratively Prohibited'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 9 } + +nhrpClientStatRxRegisterNakInsufResources OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies received + by this client that contained the code indicating + 'Insufficient Resources'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 10 } + +nhrpClientStatRxRegisterNakAlreadyReg OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies received + by this client that contained the code indicating 'Unique + Internetworking Layer Address Already Registered'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 11 } + +nhrpClientStatRxPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests received by this + client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 12 } + +nhrpClientStatTxPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests transmitted by this + client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 13 } + +nhrpClientStatRxPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies received by this + client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 14 } + +nhrpClientStatTxPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies transmitted by this + client. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + ::= { nhrpClientStatEntry 15 } + +nhrpClientStatTxErrorIndication OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets transmitted + by this client. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 16 } + +nhrpClientStatRxErrUnrecognizedExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code + 'Unrecognized Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 17 } + +nhrpClientStatRxErrLoopDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'NHRP Loop Detected'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 18 } + +nhrpClientStatRxErrProtoAddrUnreachable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Protocol Address + Unreachable'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 19 } + +nhrpClientStatRxErrProtoError OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Protocol Error'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 20 } + +nhrpClientStatRxErrSduSizeExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'NHRP SDU Size + + Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 21 } + +nhrpClientStatRxErrInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Invalid Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 22 } + +nhrpClientStatRxErrAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Authentication + Failure'. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 23 } + +nhrpClientStatRxErrHopCountExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The number of NHRP Error Indication packets received + by this client with the error code 'Hop Count Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Client re-initialization and at + other times as indicated by the value of + nhrpClientStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpClientStatEntry 24 } + +nhrpClientStatDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which any one or more of this Client's counters + suffered a discontinuity. If no such discontinuities + have occurred since the last re-initialization of the + local management subsystem or the NHRP Client + re-initialization associated with this entry, then + this object contains a zero value." + REFERENCE + "RFC 2233 [18]." + ::= { nhrpClientStatEntry 25 } + +--**************************************************************** +-- NHRP Server Objects +--**************************************************************** + +nhrpServerObjects OBJECT IDENTIFIER ::= { nhrpObjects 3 } + +-- +-- The NHRP Next Hop Server Table +-- + +nhrpServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information for a set of NHSes + associated with this agent." + ::= { nhrpServerObjects 1 } + +nhrpServerEntry OBJECT-TYPE + SYNTAX NhrpServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single NHS." + INDEX { nhrpServerIndex } + ::= { nhrpServerTable 1 } + +NhrpServerEntry ::= SEQUENCE { + nhrpServerIndex Unsigned32, + nhrpServerInternetworkAddrType AddressFamilyNumbers, + nhrpServerInternetworkAddr NhrpGenAddr, + nhrpServerNbmaAddrType AddressFamilyNumbers, + nhrpServerNbmaAddr NhrpGenAddr, + nhrpServerNbmaSubaddr NhrpGenAddr, + nhrpServerStorageType StorageType, + nhrpServerRowStatus RowStatus +} + +nhrpServerIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for the server that is unique within the + scope of this agent." + ::= { nhrpServerEntry 1 } + +nhrpServerInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address of this + server. This object is used to interpret the value of + nhrpServerInternetworkAddr." + ::= { nhrpServerEntry 2 } + +nhrpServerInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork layer address of this + server." + ::= { nhrpServerEntry 3 } + +nhrpServerNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the NBMA subnetwork address of this server. + This object is used to interpret the value of + nhrpServerNbmaAddr." + ::= { nhrpServerEntry 4 } + +nhrpServerNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the NBMA subnetwork address of this + server." + ::= { nhrpServerEntry 5 } + +nhrpServerNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the NBMA subaddress of this server. + For NBMA address families without a subaddress + concept, this will be a zero-length OCTET STRING." + ::= { nhrpServerEntry 6 } + +nhrpServerStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept in + volatile storage and lost upon a Server crash or + reboot situation, or if this row is backed up by + nonvolatile or permanent storage." + DEFVAL { nonVolatile } + ::= { nhrpServerEntry 7 } + +nhrpServerRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpServerEntry 8 } + +-- +-- The Server Cache Table +-- +nhrpServerCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpServerCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table extends the nhrpCacheTable for + NHSes. If the nhrpCacheTable has a row added due to + an NHS or based on information regarding an NHS then + a row is also added in this table. + + The rows in this table will be created when rows in + the nhrpCacheTable are created. However, there may + be rows created in the nhrpCacheTable which do not + have corresponding rows in this table. For example, + if the nhrpCacheTable has a row added due to a Next + Hop Client which is co-resident on the same device + as the NHS, a row will not be added to this table." + ::= { nhrpServerObjects 2 } + +nhrpServerCacheEntry OBJECT-TYPE + SYNTAX NhrpServerCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Additional information kept by a NHS for a relevant + Next Hop Resolution Cache entry." + INDEX { + nhrpCacheInternetworkAddrType, + nhrpCacheInternetworkAddr, + ifIndex, + nhrpCacheIndex + } + ::= { nhrpServerCacheTable 1 } + +NhrpServerCacheEntry ::= SEQUENCE { + nhrpServerCacheAuthoritative TruthValue, + nhrpServerCacheUniqueness TruthValue +} + +nhrpServerCacheAuthoritative OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this cache entry is + authoritative, which means the entry was added because + of a direct registration request with this server or + by Server Cache Synchronization Protocol (SCSP) from + an authoritative source." + ::= { nhrpServerCacheEntry 1 } + +nhrpServerCacheUniqueness OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Uniqueness indicator for this cache + entry used in duplicate address detection. This value + cannot be changed after the entry is active." + ::= { nhrpServerCacheEntry 2 } + +-- +-- The NHRP Server->Client Table +-- + +nhrpServerNhcTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpServerNhcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of NHCs that are available for use by this NHS + (Server)." + REFERENCE + "Section 4 Configuration (Next Hop Servers), + RFC 2332 [17]." + ::= { nhrpServerObjects 3 } + +nhrpServerNhcEntry OBJECT-TYPE + SYNTAX NhrpServerNhcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An NHC that may be used by an NHS." + INDEX { nhrpServerIndex, nhrpServerNhcIndex } + ::= { nhrpServerNhcTable 1 } + +NhrpServerNhcEntry ::= SEQUENCE { + nhrpServerNhcIndex Unsigned32, + nhrpServerNhcPrefixLength Integer32, + nhrpServerNhcInternetworkAddrType AddressFamilyNumbers, + nhrpServerNhcInternetworkAddr NhrpGenAddr, + nhrpServerNhcNbmaAddrType AddressFamilyNumbers, + nhrpServerNhcNbmaAddr NhrpGenAddr, + nhrpServerNhcNbmaSubaddr NhrpGenAddr, + nhrpServerNhcInUse TruthValue, + nhrpServerNhcRowStatus RowStatus +} + +nhrpServerNhcIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier for an NHC available to an NHS." + ::= { nhrpServerNhcEntry 1 } + +nhrpServerNhcPrefixLength OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of bits that define the internetwork + layer prefix associated with the + nhrpServerNhcInternetworkAddr." + ::= { nhrpServerNhcEntry 2 } + +nhrpServerNhcInternetworkAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the internetwork layer address of the + NHRP Client represented in this entry. This object + indicates how the value of nhrpServerNhcInternetworkAddr + is to be interpreted." + ::= { nhrpServerNhcEntry 3 } + +nhrpServerNhcInternetworkAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the internetwork layer address of + the NHRP Client represented by this entry. If this + value is not known, this will be a zero-length + OCTET STRING." + ::= { nhrpServerNhcEntry 4 } + +nhrpServerNhcNbmaAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the NBMA subnetwork address of the NHRP + Client represented by this entry. This object indicates + how the values of nhrpServerNhcNbmaAddr and + nhrpServerNhcNbmaSubaddr are to be interpreted." + ::= { nhrpServerNhcEntry 5 } + +nhrpServerNhcNbmaAddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subnetwork address of the NHC. The type of the + address is indicated by the corresponding value of + nhrpServerNbmaAddrType." + ::= { nhrpServerNhcEntry 6 } + +nhrpServerNhcNbmaSubaddr OBJECT-TYPE + SYNTAX NhrpGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The NBMA subaddress of the NHC. For NMBA address familes + that do not have the concept of subaddress, this will + be a zero-length OCTET STRING." + ::= { nhrpServerNhcEntry 7 } + +nhrpServerNhcInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether this NHC is in use by the NHS." + ::= { nhrpServerNhcEntry 8 } + +nhrpServerNhcRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An object that allows entries in this table to be + created and deleted using the RowStatus convention." + ::= { nhrpServerNhcEntry 9 } + +-- +-- The Next Hop Server Statistics Table +-- + +nhrpServerStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF NhrpServerStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics collected by Next Hop Servers." + ::= { nhrpServerObjects 4 } + +nhrpServerStatEntry OBJECT-TYPE + SYNTAX NhrpServerStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Statistics for a particular NHS. The statistics are + broken into received (Rx), transmitted (Tx) + and forwarded (Fw). Forwarded (Fw) would be done + by a transit NHS." + INDEX { nhrpServerIndex } + ::= { nhrpServerStatTable 1 } + +NhrpServerStatEntry ::= SEQUENCE { + nhrpServerStatRxResolveReq Counter32, + nhrpServerStatTxResolveReplyAck Counter32, + nhrpServerStatTxResolveReplyNakProhibited Counter32, + nhrpServerStatTxResolveReplyNakInsufResources Counter32, + nhrpServerStatTxResolveReplyNakNoBinding Counter32, + nhrpServerStatTxResolveReplyNakNotUnique Counter32, + + nhrpServerStatRxRegisterReq Counter32, + nhrpServerStatTxRegisterAck Counter32, + nhrpServerStatTxRegisterNakProhibited Counter32, + nhrpServerStatTxRegisterNakInsufResources Counter32, + nhrpServerStatTxRegisterNakAlreadyReg Counter32, + + nhrpServerStatRxPurgeReq Counter32, + nhrpServerStatTxPurgeReq Counter32, + nhrpServerStatRxPurgeReply Counter32, + nhrpServerStatTxPurgeReply Counter32, + +-- Error Indications + nhrpServerStatRxErrUnrecognizedExtension Counter32, + nhrpServerStatRxErrLoopDetected Counter32, + nhrpServerStatRxErrProtoAddrUnreachable Counter32, + nhrpServerStatRxErrProtoError Counter32, + nhrpServerStatRxErrSduSizeExceeded Counter32, + nhrpServerStatRxErrInvalidExtension Counter32, + nhrpServerStatRxErrInvalidResReplyReceived Counter32, + nhrpServerStatRxErrAuthenticationFailure Counter32, + nhrpServerStatRxErrHopCountExceeded Counter32, + + nhrpServerStatTxErrUnrecognizedExtension Counter32, + nhrpServerStatTxErrLoopDetected Counter32, + nhrpServerStatTxErrProtoAddrUnreachable Counter32, + nhrpServerStatTxErrProtoError Counter32, + nhrpServerStatTxErrSduSizeExceeded Counter32, + nhrpServerStatTxErrInvalidExtension Counter32, + nhrpServerStatTxErrAuthenticationFailure Counter32, + nhrpServerStatTxErrHopCountExceeded Counter32, + +-- Transit NHS statistics + nhrpServerStatFwResolveReq Counter32, + nhrpServerStatFwResolveReply Counter32, + nhrpServerStatFwRegisterReq Counter32, + nhrpServerStatFwRegisterReply Counter32, + nhrpServerStatFwPurgeReq Counter32, + nhrpServerStatFwPurgeReply Counter32, + nhrpServerStatFwErrorIndication Counter32, + nhrpServerStatDiscontinuityTime TimeStamp +} + +nhrpServerStatRxResolveReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Resolution Requests received by this + server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 1 } + +nhrpServerStatTxResolveReplyAck OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of positively acknowledged NHRP + Resolution Replies transmitted by this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 2 } + +nhrpServerStatTxResolveReplyNakProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies + transmitted by this server with the code + 'Administratively Prohibited'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 3 } + +nhrpServerStatTxResolveReplyNakInsufResources OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies + transmitted by this server with the code + 'Insufficient Resources'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 4 } + +nhrpServerStatTxResolveReplyNakNoBinding OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies + transmitted by this server with the code + 'No Internetworking Layer Address to NBMA + Address Binding Exists'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 5 } + +nhrpServerStatTxResolveReplyNakNotUnique OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Resolution Replies + transmitted by this server with the code + 'Binding Exists But Is Not Unique'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 6 } + +nhrpServerStatRxRegisterReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Registration Requests received + by this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 7 } + +nhrpServerStatTxRegisterAck OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of positively acknowledged NHRP Registration + Replies transmitted by this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 8 } + +nhrpServerStatTxRegisterNakProhibited OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies + transmitted by this server with the code + 'Administratively Prohibited'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 9 } + +nhrpServerStatTxRegisterNakInsufResources OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies + transmitted by this server with the code + 'Insufficient Resources'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 10 } + +nhrpServerStatTxRegisterNakAlreadyReg OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NAKed NHRP Registration Replies + transmitted by this server with the code + 'Unique Internetworking Layer Address Already + Registered'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 11 } + +nhrpServerStatRxPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests received by + this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 12 } + +nhrpServerStatTxPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests transmitted by this + server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 13 } + +nhrpServerStatRxPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies received by this + server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 14 } + +nhrpServerStatTxPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies transmitted by + this server. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 15 } + +nhrpServerStatRxErrUnrecognizedExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code + + 'Unrecognized Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 16 } + + +nhrpServerStatRxErrLoopDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'NHRP Loop Detected'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 17 } + +nhrpServerStatRxErrProtoAddrUnreachable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'Protocol Address + Unreachable'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 18 } + +nhrpServerStatRxErrProtoError OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'Protocol Error'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 19 } + +nhrpServerStatRxErrSduSizeExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'NHRP SDU Size + Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 20 } + +nhrpServerStatRxErrInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'Invalid Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 21 } + +nhrpServerStatRxErrInvalidResReplyReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets received + by this server with the error code 'Invalid Resolution + Reply Received'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 22 } + +nhrpServerStatRxErrAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + received by this server with the error code + 'Authentication Failure'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 23 } + +nhrpServerStatRxErrHopCountExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + received by this server with the error code + 'Hop Count Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 24 } + +nhrpServerStatTxErrUnrecognizedExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'Unrecognized Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 25 } + + +nhrpServerStatTxErrLoopDetected OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'NHRP Loop Detected'. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 26 } + +nhrpServerStatTxErrProtoAddrUnreachable OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'Protocol Address Unreachable'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 27 } + +nhrpServerStatTxErrProtoError OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error + code 'Protocol Error'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 28 } + +nhrpServerStatTxErrSduSizeExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'NHRP SDU Size Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 29 } + +nhrpServerStatTxErrInvalidExtension OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + + 'Invalid Extension'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 30 } + +nhrpServerStatTxErrAuthenticationFailure OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error code + 'Authentication Failure'. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 31 } + +nhrpServerStatTxErrHopCountExceeded OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets + transmitted by this server with the error + code 'Hop Count Exceeded'. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + REFERENCE + "Section 5.2.7 NHRP Error Indication, RFC 2332 [17]." + ::= { nhrpServerStatEntry 32 } + +nhrpServerStatFwResolveReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Resolution Requests + forwarded by this server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 33 } + +nhrpServerStatFwResolveReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Resolution Replies forwarded + by this server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 34 } + +nhrpServerStatFwRegisterReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Registration Requests forwarded + by this server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 35 } + +nhrpServerStatFwRegisterReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Registration Replies forwarded + by this server acting as a transit NHS. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 36 } + +nhrpServerStatFwPurgeReq OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Requests forwarded + by this server acting as a transit NHS. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 37 } + +nhrpServerStatFwPurgeReply OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Purge Replies forwarded by this + server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 38 } + +nhrpServerStatFwErrorIndication OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of NHRP Error Indication packets forwarded + by this server acting as a transit NHS. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, at + NHRP Server re-initialization and at + other times as indicated by the value of + nhrpServerStatDiscontinuityTime." + ::= { nhrpServerStatEntry 39 } + +nhrpServerStatDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which any one or more of this Server's counters + suffered a discontinuity. If no such discontinuities + have occurred since the last re-initialization of the + local management subsystem or the NHRP Server + re-initialization associated with this entry, then + this object contains a zero value." + REFERENCE + "RFC 2233 [18]." + ::= { nhrpServerStatEntry 40 } + +--**************************************************************** +-- Module Compliance Statement +--**************************************************************** + +nhrpConformance OBJECT IDENTIFIER ::= { nhrpMIB 2 } + +nhrpCompliances + OBJECT IDENTIFIER ::= { nhrpConformance 1 } + +nhrpGroups + OBJECT IDENTIFIER ::= { nhrpConformance 2 } + +nhrpModuleCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the NHRP MIB." + MODULE -- this module + MANDATORY-GROUPS { nhrpGeneralGroup } + + GROUP nhrpClientGroup + DESCRIPTION + "This group must be supported only by stations that + are NHRP clients." + + GROUP nhrpServerGroup + DESCRIPTION + "This group must be supported only by stations that + are NHRP servers." + ::= { nhrpCompliances 1 } + +nhrpGeneralGroup OBJECT-GROUP + OBJECTS { + + nhrpNextIndex, + nhrpCachePrefixLength, + nhrpCacheNextHopInternetworkAddr, + nhrpCacheNbmaAddrType, + nhrpCacheNbmaAddr, + nhrpCacheNbmaSubaddr, + nhrpCacheType, + nhrpCacheState, + nhrpCacheHoldingTimeValid, + nhrpCacheHoldingTime, + nhrpCacheNegotiatedMtu, + nhrpCachePreference, + nhrpCacheStorageType, + nhrpCacheRowStatus, + nhrpPurgeCacheIdentifier, + nhrpPurgePrefixLength, + nhrpPurgeRequestID, + nhrpPurgeReplyExpected, + nhrpPurgeRowStatus + } + STATUS current + DESCRIPTION + "Objects that apply to both NHRP clients and NHRP + servers." + ::= { nhrpGroups 1 } + +nhrpClientGroup OBJECT-GROUP + OBJECTS { + nhrpClientInternetworkAddrType, + nhrpClientInternetworkAddr, + nhrpClientNbmaAddrType, + nhrpClientNbmaAddr, + nhrpClientNbmaSubaddr, + nhrpClientInitialRequestTimeout, + nhrpClientRegistrationRequestRetries, + nhrpClientResolutionRequestRetries, + nhrpClientPurgeRequestRetries, + nhrpClientDefaultMtu, + nhrpClientHoldTime, + nhrpClientRequestID, + nhrpClientStorageType, + nhrpClientRowStatus, + nhrpClientRegUniqueness, + nhrpClientRegState, + nhrpClientRegRowStatus, + nhrpClientNhsInternetworkAddrType, + nhrpClientNhsInternetworkAddr, + nhrpClientNhsNbmaAddrType, + nhrpClientNhsNbmaAddr, + nhrpClientNhsNbmaSubaddr, + + nhrpClientNhsInUse, + nhrpClientNhsRowStatus, + nhrpClientStatTxResolveReq, + nhrpClientStatRxResolveReplyAck, + nhrpClientStatRxResolveReplyNakProhibited, + nhrpClientStatRxResolveReplyNakInsufResources, + nhrpClientStatRxResolveReplyNakNoBinding, + nhrpClientStatRxResolveReplyNakNotUnique, + nhrpClientStatTxRegisterReq, + nhrpClientStatRxRegisterAck, + nhrpClientStatRxRegisterNakProhibited, + nhrpClientStatRxRegisterNakInsufResources, + nhrpClientStatRxRegisterNakAlreadyReg, + nhrpClientStatRxPurgeReq, + nhrpClientStatTxPurgeReq, + nhrpClientStatRxPurgeReply, + nhrpClientStatTxPurgeReply, + nhrpClientStatTxErrorIndication, + nhrpClientStatRxErrUnrecognizedExtension, + nhrpClientStatRxErrLoopDetected, + nhrpClientStatRxErrProtoAddrUnreachable, + nhrpClientStatRxErrProtoError, + nhrpClientStatRxErrSduSizeExceeded, + nhrpClientStatRxErrInvalidExtension, + nhrpClientStatRxErrAuthenticationFailure, + nhrpClientStatRxErrHopCountExceeded, + nhrpClientStatDiscontinuityTime + } + STATUS current + DESCRIPTION + "Objects that apply only to NHRP clients." + ::= { nhrpGroups 2 } + +nhrpServerGroup OBJECT-GROUP + OBJECTS { + nhrpServerInternetworkAddrType, + nhrpServerInternetworkAddr, + nhrpServerNbmaAddrType, + nhrpServerNbmaAddr, + nhrpServerNbmaSubaddr, + nhrpServerStorageType, + nhrpServerRowStatus, + nhrpServerCacheAuthoritative, + nhrpServerCacheUniqueness, + nhrpServerNhcPrefixLength, + nhrpServerNhcInternetworkAddrType, + nhrpServerNhcInternetworkAddr, + nhrpServerNhcNbmaAddrType, + nhrpServerNhcNbmaAddr, + nhrpServerNhcNbmaSubaddr, + nhrpServerNhcInUse, + nhrpServerNhcRowStatus, + nhrpServerStatRxResolveReq, + nhrpServerStatTxResolveReplyAck, + nhrpServerStatTxResolveReplyNakProhibited, + nhrpServerStatTxResolveReplyNakInsufResources, + nhrpServerStatTxResolveReplyNakNoBinding, + nhrpServerStatTxResolveReplyNakNotUnique, + nhrpServerStatRxRegisterReq, + nhrpServerStatTxRegisterAck, + nhrpServerStatTxRegisterNakProhibited, + nhrpServerStatTxRegisterNakInsufResources, + nhrpServerStatTxRegisterNakAlreadyReg, + nhrpServerStatRxPurgeReq, + nhrpServerStatTxPurgeReq, + nhrpServerStatRxPurgeReply, + nhrpServerStatTxPurgeReply, + nhrpServerStatRxErrUnrecognizedExtension, + nhrpServerStatRxErrLoopDetected, + nhrpServerStatRxErrProtoAddrUnreachable, + nhrpServerStatRxErrProtoError, + nhrpServerStatRxErrSduSizeExceeded, + nhrpServerStatRxErrInvalidExtension, + nhrpServerStatRxErrInvalidResReplyReceived, + nhrpServerStatRxErrAuthenticationFailure, + nhrpServerStatRxErrHopCountExceeded, + nhrpServerStatTxErrUnrecognizedExtension, + nhrpServerStatTxErrLoopDetected, + nhrpServerStatTxErrProtoAddrUnreachable, + nhrpServerStatTxErrProtoError, + nhrpServerStatTxErrSduSizeExceeded, + nhrpServerStatTxErrInvalidExtension, + nhrpServerStatTxErrAuthenticationFailure, + nhrpServerStatTxErrHopCountExceeded, + nhrpServerStatFwResolveReq, + nhrpServerStatFwResolveReply, + nhrpServerStatFwRegisterReq, + nhrpServerStatFwRegisterReply, + nhrpServerStatFwPurgeReq, + nhrpServerStatFwPurgeReply, + nhrpServerStatFwErrorIndication, + nhrpServerStatDiscontinuityTime + } + STATUS current + DESCRIPTION + "Objects that apply only to NHRP servers." + ::= { nhrpGroups 3 } + +END diff --git a/mibs/ietf/NOTIFICATION-LOG-MIB b/mibs/ietf/NOTIFICATION-LOG-MIB new file mode 100644 index 0000000..3262698 --- /dev/null +++ b/mibs/ietf/NOTIFICATION-LOG-MIB @@ -0,0 +1,784 @@ +NOTIFICATION-LOG-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, Unsigned32, + TimeTicks, Counter32, Counter64, + IpAddress, Opaque, mib-2 FROM SNMPv2-SMI + TimeStamp, DateAndTime, + StorageType, RowStatus, + TAddress, TDomain FROM SNMPv2-TC + SnmpAdminString, SnmpEngineID FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +notificationLogMIB MODULE-IDENTITY + LAST-UPDATED "200011270000Z" -- 27 November 2000 + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO "Ramanathan Kavasseri + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose CA 95134-1706. + Phone: +1 408 527 2446 + Email: ramk@cisco.com" + DESCRIPTION + "The MIB module for logging SNMP Notifications, that is, Traps + + + and Informs." +-- Revision History + + REVISION "200011270000Z" -- 27 November 2000 + DESCRIPTION "This is the initial version of this MIB. + Published as RFC 3014" + ::= { mib-2 92 } + + +notificationLogMIBObjects OBJECT IDENTIFIER ::= { notificationLogMIB 1 } + +nlmConfig OBJECT IDENTIFIER ::= { notificationLogMIBObjects 1 } +nlmStats OBJECT IDENTIFIER ::= { notificationLogMIBObjects 2 } +nlmLog OBJECT IDENTIFIER ::= { notificationLogMIBObjects 3 } + +-- +-- Configuration Section +-- + +nlmConfigGlobalEntryLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of notification entries that may be held + in nlmLogTable for all nlmLogNames added together. A particular + setting does not guarantee that much data can be held. + + If an application changes the limit while there are + Notifications in the log, the oldest Notifications MUST be + discarded to bring the log down to the new limit - thus the + value of nlmConfigGlobalEntryLimit MUST take precedence over + the values of nlmConfigGlobalAgeOut and nlmConfigLogEntryLimit, + even if the Notification being discarded has been present for + fewer minutes than the value of nlmConfigGlobalAgeOut, or if + the named log has fewer entries than that specified in + nlmConfigLogEntryLimit. + + A value of 0 means no limit. + + Please be aware that contention between multiple managers + trying to set this object to different values MAY affect the + reliability and completeness of data seen by each manager." + DEFVAL { 0 } + ::= { nlmConfig 1 } + +nlmConfigGlobalAgeOut OBJECT-TYPE + SYNTAX Unsigned32 + + + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of minutes a Notification SHOULD be kept in a log + before it is automatically removed. + + If an application changes the value of nlmConfigGlobalAgeOut, + Notifications older than the new time MAY be discarded to meet the + new time. + + A value of 0 means no age out. + + Please be aware that contention between multiple managers + trying to set this object to different values MAY affect the + reliability and completeness of data seen by each manager." + DEFVAL { 1440 } -- 24 hours + ::= { nlmConfig 2 } + + +-- +-- Basic Log Configuration Table +-- + +nlmConfigLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlmConfigLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of logging control entries." + ::= { nlmConfig 3 } + +nlmConfigLogEntry OBJECT-TYPE + SYNTAX NlmConfigLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A logging control entry. Depending on the entry's storage type + entries may be supplied by the system or created and deleted by + applications using nlmConfigLogEntryStatus." + INDEX { nlmLogName } + ::= { nlmConfigLogTable 1 } + +NlmConfigLogEntry ::= SEQUENCE { + nlmLogName SnmpAdminString, + nlmConfigLogFilterName SnmpAdminString, + nlmConfigLogEntryLimit Unsigned32, + nlmConfigLogAdminStatus INTEGER, + + + nlmConfigLogOperStatus INTEGER, + nlmConfigLogStorageType StorageType, + nlmConfigLogEntryStatus RowStatus + } + +nlmLogName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the log. + + An implementation may allow multiple named logs, up to some + implementation-specific limit (which may be none). A + zero-length log name is reserved for creation and deletion by + the managed system, and MUST be used as the default log name by + systems that do not support named logs." + ::= { nlmConfigLogEntry 1 } + +nlmConfigLogFilterName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A value of snmpNotifyFilterProfileName as used as an index + into the snmpNotifyFilterTable in the SNMP Notification MIB, + specifying the locally or remotely originated Notifications + to be filtered out and not logged in this log. + + A zero-length value or a name that does not identify an + existing entry in snmpNotifyFilterTable indicate no + Notifications are to be logged in this log." + DEFVAL { ''H } + ::= { nlmConfigLogEntry 2 } + +nlmConfigLogEntryLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of notification entries that can be held in + nlmLogTable for this named log. A particular setting does not + guarantee that that much data can be held. + + If an application changes the limit while there are + Notifications in the log, the oldest Notifications are discarded + to bring the log down to the new limit. + + + + A value of 0 indicates no limit. + + Please be aware that contention between multiple managers + trying to set this object to different values MAY affect the + reliability and completeness of data seen by each manager." + DEFVAL { 0 } + ::= { nlmConfigLogEntry 3 } + +nlmConfigLogAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control to enable or disable the log without otherwise + disturbing the log's entry. + + Please be aware that contention between multiple managers + trying to set this object to different values MAY affect the + reliability and completeness of data seen by each manager." + DEFVAL { enabled } + ::= { nlmConfigLogEntry 4 } + +nlmConfigLogOperStatus OBJECT-TYPE + SYNTAX INTEGER { disabled(1), operational(2), noFilter(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of this log: + + disabled administratively disabled + + operational administratively enabled and working + + noFilter administratively enabled but either + nlmConfigLogFilterName is zero length + or does not name an existing entry in + snmpNotifyFilterTable" + ::= { nlmConfigLogEntry 5 } + +nlmConfigLogStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this conceptual row." + ::= { nlmConfigLogEntry 6 } + +nlmConfigLogEntryStatus OBJECT-TYPE + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Control for creating and deleting entries. Entries may be + modified while active. + + For non-null-named logs, the managed system records the security + credentials from the request that sets nlmConfigLogStatus + to 'active' and uses that identity to apply access control to + the objects in the Notification to decide if that Notification + may be logged." + ::= { nlmConfigLogEntry 7 } + +-- +-- Statistics Section +-- + +nlmStatsGlobalNotificationsLogged OBJECT-TYPE + SYNTAX Counter32 + UNITS "notifications" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Notifications put into the nlmLogTable. This + counts a Notification once for each log entry, so a Notification + put into multiple logs is counted multiple times." + ::= { nlmStats 1 } + +nlmStatsGlobalNotificationsBumped OBJECT-TYPE + SYNTAX Counter32 + UNITS "notifications" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of log entries discarded to make room for a new entry + due to lack of resources or the value of nlmConfigGlobalEntryLimit + or nlmConfigLogEntryLimit. This does not include entries discarded + due to the value of nlmConfigGlobalAgeOut." + ::= { nlmStats 2 } + +-- +-- Log Statistics Table +-- + +nlmStatsLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlmStatsLogEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "A table of Notification log statistics entries." + ::= { nlmStats 3 } + +nlmStatsLogEntry OBJECT-TYPE + SYNTAX NlmStatsLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Notification log statistics entry." + AUGMENTS { nlmConfigLogEntry } + ::= { nlmStatsLogTable 1 } + +NlmStatsLogEntry ::= SEQUENCE { + nlmStatsLogNotificationsLogged Counter32, + nlmStatsLogNotificationsBumped Counter32 +} + +nlmStatsLogNotificationsLogged OBJECT-TYPE + SYNTAX Counter32 + UNITS "notifications" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Notifications put in this named log." + ::= { nlmStatsLogEntry 1 } + +nlmStatsLogNotificationsBumped OBJECT-TYPE + SYNTAX Counter32 + UNITS "notifications" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of log entries discarded from this named log to make + room for a new entry due to lack of resources or the value of + nlmConfigGlobalEntryLimit or nlmConfigLogEntryLimit. This does not + include entries discarded due to the value of + nlmConfigGlobalAgeOut." + ::= { nlmStatsLogEntry 2 } + + +-- +-- Log Section +-- + +-- +-- Log Table + + +-- + +nlmLogTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlmLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Notification log entries. + + It is an implementation-specific matter whether entries in this + table are preserved across initializations of the management + system. In general one would expect that they are not. + + Note that keeping entries across initializations of the + management system leads to some confusion with counters and + TimeStamps, since both of those are based on sysUpTime, which + resets on management initialization. In this situation, + counters apply only after the reset and nlmLogTime for entries + made before the reset MUST be set to 0." + ::= { nlmLog 1 } + +nlmLogEntry OBJECT-TYPE + SYNTAX NlmLogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Notification log entry. + + Entries appear in this table when Notifications occur and pass + filtering by nlmConfigLogFilterName and access control. They are + removed to make way for new entries due to lack of resources or + the values of nlmConfigGlobalEntryLimit, nlmConfigGlobalAgeOut, or + nlmConfigLogEntryLimit. + + If adding an entry would exceed nlmConfigGlobalEntryLimit or system + resources in general, the oldest entry in any log SHOULD be removed + to make room for the new one. + + If adding an entry would exceed nlmConfigLogEntryLimit the oldest + entry in that log SHOULD be removed to make room for the new one. + + Before the managed system puts a locally-generated Notification + into a non-null-named log it assures that the creator of the log + has access to the information in the Notification. If not it + does not log that Notification in that log." + INDEX { nlmLogName, nlmLogIndex } + ::= { nlmLogTable 1 } + + + +NlmLogEntry ::= SEQUENCE { + nlmLogIndex Unsigned32, + nlmLogTime TimeStamp, + nlmLogDateAndTime DateAndTime, + nlmLogEngineID SnmpEngineID, + nlmLogEngineTAddress TAddress, + nlmLogEngineTDomain TDomain, + nlmLogContextEngineID SnmpEngineID, + nlmLogContextName SnmpAdminString, + nlmLogNotificationID OBJECT IDENTIFIER +} + +nlmLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A monotonically increasing integer for the sole purpose of + indexing entries within the named log. When it reaches the + maximum value, an extremely unlikely event, the agent wraps the + value back to 1." + ::= { nlmLogEntry 1 } + +nlmLogTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the entry was placed in the log. If + the entry occurred before the most recent management system + initialization this object value MUST be set to zero." + ::= { nlmLogEntry 2 } + +nlmLogDateAndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local date and time when the entry was logged, instantiated + only by systems that have date and time capability." + ::= { nlmLogEntry 3 } + +nlmLogEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identification of the SNMP engine at which the Notification + + + originated. + + If the log can contain Notifications from only one engine + or the Trap is in SNMPv1 format, this object is a zero-length + string." + ::= { nlmLogEntry 4 } + +nlmLogEngineTAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transport service address of the SNMP engine from which the + Notification was received, formatted according to the corresponding + value of nlmLogEngineTDomain. This is used to identify the source + of an SNMPv1 trap, since an nlmLogEngineId cannot be extracted + from the SNMPv1 trap pdu. + + This object MUST always be instantiated, even if the log + can contain Notifications from only one engine. + + Please be aware that the nlmLogEngineTAddress may not uniquely + identify the SNMP engine from which the Notification was received. + For example, if an SNMP engine uses DHCP or NAT to obtain + ip addresses, the address it uses may be shared with other + network devices, and hence will not uniquely identify the + SNMP engine." + ::= { nlmLogEntry 5 } + +nlmLogEngineTDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the kind of transport service by which a Notification + was received from an SNMP engine. nlmLogEngineTAddress contains + the transport service address of the SNMP engine from which + this Notification was received. + + Possible values for this object are presently found in the + Transport Mappings for SNMPv2 document (RFC 1906 [8])." + ::= { nlmLogEntry 6 } + +nlmLogContextEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "If the Notification was received in a protocol which has a + contextEngineID element like SNMPv3, this object has that value. + Otherwise its value is a zero-length string." + ::= { nlmLogEntry 7 } + +nlmLogContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the SNMP MIB context from which the Notification came. + For SNMPv1 Traps this is the community string from the Trap." + ::= { nlmLogEntry 8 } + +nlmLogNotificationID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NOTIFICATION-TYPE object identifier of the Notification that + occurred." + ::= { nlmLogEntry 9 } + +-- +-- Log Variable Table +-- + +nlmLogVariableTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlmLogVariableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of variables to go with Notification log entries." + ::= { nlmLog 2 } + +nlmLogVariableEntry OBJECT-TYPE + SYNTAX NlmLogVariableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Notification log entry variable. + + Entries appear in this table when there are variables in + the varbind list of a Notification in nlmLogTable." + INDEX { nlmLogName, nlmLogIndex, nlmLogVariableIndex } + ::= { nlmLogVariableTable 1 } + +NlmLogVariableEntry ::= SEQUENCE { + + + nlmLogVariableIndex Unsigned32, + nlmLogVariableID OBJECT IDENTIFIER, + nlmLogVariableValueType INTEGER, + nlmLogVariableCounter32Val Counter32, + nlmLogVariableUnsigned32Val Unsigned32, + nlmLogVariableTimeTicksVal TimeTicks, + nlmLogVariableInteger32Val Integer32, + nlmLogVariableOctetStringVal OCTET STRING, + nlmLogVariableIpAddressVal IpAddress, + nlmLogVariableOidVal OBJECT IDENTIFIER, + nlmLogVariableCounter64Val Counter64, + nlmLogVariableOpaqueVal Opaque +} + +nlmLogVariableIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A monotonically increasing integer, starting at 1 for a given + nlmLogIndex, for indexing variables within the logged + Notification." + ::= { nlmLogVariableEntry 1 } + +nlmLogVariableID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The variable's object identifier." + ::= { nlmLogVariableEntry 2 } + +nlmLogVariableValueType OBJECT-TYPE + SYNTAX INTEGER { counter32(1), unsigned32(2), timeTicks(3), + integer32(4), ipAddress(5), octetString(6), + objectId(7), counter64(8), opaque(9) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the value. One and only one of the value + objects that follow must be instantiated, based on this type." + ::= { nlmLogVariableEntry 3 } + +nlmLogVariableCounter32Val OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The value when nlmLogVariableType is 'counter32'." + ::= { nlmLogVariableEntry 4 } + +nlmLogVariableUnsigned32Val OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'unsigned32'." + ::= { nlmLogVariableEntry 5 } + +nlmLogVariableTimeTicksVal OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'timeTicks'." + ::= { nlmLogVariableEntry 6 } + +nlmLogVariableInteger32Val OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'integer32'." + ::= { nlmLogVariableEntry 7 } + +nlmLogVariableOctetStringVal OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'octetString'." + ::= { nlmLogVariableEntry 8 } + +nlmLogVariableIpAddressVal OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'ipAddress'. + Although this seems to be unfriendly for IPv6, we + have to recognize that there are a number of older + MIBs that do contain an IPv4 format address, known + as IpAddress. + + IPv6 addresses are represented using TAddress or + InetAddress, and so the underlying datatype is + + + OCTET STRING, and their value would be stored in + the nlmLogVariableOctetStringVal column." + ::= { nlmLogVariableEntry 9 } + +nlmLogVariableOidVal OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'objectId'." + ::= { nlmLogVariableEntry 10 } + +nlmLogVariableCounter64Val OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'counter64'." + ::= { nlmLogVariableEntry 11 } + +nlmLogVariableOpaqueVal OBJECT-TYPE + SYNTAX Opaque + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value when nlmLogVariableType is 'opaque'." + ::= { nlmLogVariableEntry 12 } + + +-- +-- Conformance +-- + +notificationLogMIBConformance OBJECT IDENTIFIER ::= + { notificationLogMIB 3 } +notificationLogMIBCompliances OBJECT IDENTIFIER ::= + { notificationLogMIBConformance 1 } +notificationLogMIBGroups OBJECT IDENTIFIER ::= + { notificationLogMIBConformance 2 } + +-- Compliance + +notificationLogMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities which implement + the Notification Log MIB." + MODULE -- this module + + + MANDATORY-GROUPS { + notificationLogConfigGroup, + notificationLogStatsGroup, + notificationLogLogGroup + } + + OBJECT nlmConfigGlobalEntryLimit + SYNTAX Unsigned32 (0..4294967295) + MIN-ACCESS read-only + DESCRIPTION + "Implementations may choose a limit and not allow it to be + changed or may enforce an upper or lower bound on the + limit." + + OBJECT nlmConfigLogEntryLimit + SYNTAX Unsigned32 (0..4294967295) + MIN-ACCESS read-only + DESCRIPTION + "Implementations may choose a limit and not allow it to be + changed or may enforce an upper or lower bound on the + limit." + + OBJECT nlmConfigLogEntryStatus + MIN-ACCESS read-only + DESCRIPTION + "Implementations may disallow the creation of named logs." + + GROUP notificationLogDateGroup + DESCRIPTION + "This group is mandatory on systems that keep wall clock + date and time and should not be implemented on systems that + do not have a wall clock date." + + ::= { notificationLogMIBCompliances 1 } + +-- Units of Conformance + +notificationLogConfigGroup OBJECT-GROUP + OBJECTS { + nlmConfigGlobalEntryLimit, + nlmConfigGlobalAgeOut, + nlmConfigLogFilterName, + nlmConfigLogEntryLimit, + nlmConfigLogAdminStatus, + nlmConfigLogOperStatus, + nlmConfigLogStorageType, + nlmConfigLogEntryStatus + } + + + STATUS current + DESCRIPTION + "Notification log configuration management." + ::= { notificationLogMIBGroups 1 } + +notificationLogStatsGroup OBJECT-GROUP + OBJECTS { + nlmStatsGlobalNotificationsLogged, + nlmStatsGlobalNotificationsBumped, + nlmStatsLogNotificationsLogged, + nlmStatsLogNotificationsBumped + } + STATUS current + DESCRIPTION + "Notification log statistics." + ::= { notificationLogMIBGroups 2 } + +notificationLogLogGroup OBJECT-GROUP + OBJECTS { + nlmLogTime, + nlmLogEngineID, + nlmLogEngineTAddress, + nlmLogEngineTDomain, + nlmLogContextEngineID, + nlmLogContextName, + nlmLogNotificationID, + nlmLogVariableID, + nlmLogVariableValueType, + nlmLogVariableCounter32Val, + nlmLogVariableUnsigned32Val, + nlmLogVariableTimeTicksVal, + nlmLogVariableInteger32Val, + nlmLogVariableOctetStringVal, + nlmLogVariableIpAddressVal, + nlmLogVariableOidVal, + nlmLogVariableCounter64Val, + nlmLogVariableOpaqueVal + } + STATUS current + DESCRIPTION + "Notification log data." + ::= { notificationLogMIBGroups 3 } + +notificationLogDateGroup OBJECT-GROUP + OBJECTS { + nlmLogDateAndTime + } + STATUS current + + + DESCRIPTION + "Conditionally mandatory notification log data. + This group is mandatory on systems that keep wall + clock date and time and should not be implemented + on systems that do not have a wall clock date." + ::= { notificationLogMIBGroups 4 } + +END diff --git a/mibs/ietf/OPT-IF-MIB b/mibs/ietf/OPT-IF-MIB new file mode 100644 index 0000000..ac58cc5 --- /dev/null +++ b/mibs/ietf/OPT-IF-MIB @@ -0,0 +1,6996 @@ +OPT-IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Gauge32, Integer32, + Unsigned32, transmission + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowPointer, RowStatus, TruthValue + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex + FROM IF-MIB; + +-- This is the MIB module for the OTN Interface objects. + +optIfMibModule MODULE-IDENTITY + LAST-UPDATED "200308130000Z" + ORGANIZATION "IETF AToM MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + + + + + Editor: Hing-Kam Lam + Postal: Lucent Technologies, Room 4C-616 + 101 Crawfords Corner Road + Holmdel, NJ 07733 + Tel: +1 732 949 8338 + Email: hklam@lucent.com" + DESCRIPTION + "The MIB module to describe pre-OTN and OTN interfaces. + + Copyright (C) The Internet Society (2003). This version + of this MIB module is part of RFC 3591; see the RFC + itself for full legal notices." + REVISION "200308130000Z" + DESCRIPTION + "Initial version, published as RFC 3591." + ::={ transmission 133 } + +-- textual conventions + +OptIfAcTI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The trace identifier (TI) accepted at the receiver." + SYNTAX OCTET STRING (SIZE(64)) + +OptIfBitRateK ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the index 'k' that is used to + represent a supported bit rate and the different + versions of OPUk, ODUk and OTUk. + Allowed values of k are defined in ITU-T G.709. + Currently allowed values in G.709 are: + k=1 represents an approximate bit rate of 2.5 Gbit/s, + k=2 represents an approximate bit rate of 10 Gbit/s, + k=3 represents an approximate bit rate of 40 Gbit/s." + SYNTAX Integer32 + +OptIfDEGM ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if OptIfDEGM + consecutive bad PM Seconds are detected." + SYNTAX Unsigned32 (2..10) + + + + + + +OptIfDEGThr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + greater than or equal to OptIfDEGThr." + SYNTAX Unsigned32 (1..100) + +OptIfDirectionality ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the directionality of an entity." + SYNTAX INTEGER { + sink(1), + source(2), + bidirectional(3) + } + +OptIfSinkOrSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the directionality of an entity + that is allowed only to be a source or sink." + SYNTAX INTEGER { + sink(1), + source(2) + } + +OptIfExDAPI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Destination Access Point Identifier (DAPI) + expected by the receiver." + SYNTAX OCTET STRING (SIZE(16)) + +OptIfExSAPI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Source Access Point Identifier (SAPI) + expected by the receiver." + SYNTAX OCTET STRING (SIZE(16)) + +OptIfIntervalNumber ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Uniquely identifies a 15-minute interval. The interval + identified by 1 is the most recently completed interval, and + + + + the interval identified by n is the interval immediately + preceding the one identified by n-1." + SYNTAX Unsigned32 (1..96) + +OptIfTIMDetMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function." + SYNTAX INTEGER { + off(1), + dapi(2), + sapi(3), + both(4) + } + +OptIfTxTI ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The trace identifier (TI) transmitted." + SYNTAX OCTET STRING (SIZE(64)) + +-- object groups + +optIfObjects OBJECT IDENTIFIER ::= { optIfMibModule 1 } +optIfConfs OBJECT IDENTIFIER ::= { optIfMibModule 2 } + +optIfOTMn OBJECT IDENTIFIER ::= { optIfObjects 1 } +optIfPerfMon OBJECT IDENTIFIER ::= { optIfObjects 2 } +optIfOTSn OBJECT IDENTIFIER ::= { optIfObjects 3 } +optIfOMSn OBJECT IDENTIFIER ::= { optIfObjects 4 } +optIfOChGroup OBJECT IDENTIFIER ::= { optIfObjects 5 } +optIfOCh OBJECT IDENTIFIER ::= { optIfObjects 6 } + +optIfOTUk OBJECT IDENTIFIER ::= { optIfObjects 7 } +optIfODUk OBJECT IDENTIFIER ::= { optIfObjects 8 } +optIfODUkT OBJECT IDENTIFIER ::= { optIfObjects 9 } + +optIfGroups OBJECT IDENTIFIER ::= { optIfConfs 1 } +optIfCompl OBJECT IDENTIFIER ::= { optIfConfs 2 } + +-- the optIfOTMn group +-- This group defines the OTM structure information of an +-- optical interface. + +-- OTMn Table + +optIfOTMnTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF OptIfOTMnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTMn structure information." + ::= { optIfOTMn 1 } + +optIfOTMnEntry OBJECT-TYPE + SYNTAX OptIfOTMnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains the OTMn structure + information of an optical interface." + INDEX { ifIndex } + ::= { optIfOTMnTable 1 } + +OptIfOTMnEntry ::= + SEQUENCE { + optIfOTMnOrder Unsigned32, + optIfOTMnReduced TruthValue, + optIfOTMnBitRates BITS, + optIfOTMnInterfaceType SnmpAdminString, + optIfOTMnTcmMax Unsigned32, + optIfOTMnOpticalReach INTEGER + } + +optIfOTMnOrder OBJECT-TYPE + SYNTAX Unsigned32 (1..900) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the order of the OTM, which + represents the maximum number of wavelengths that can be + supported at the bit rate(s) supported on the interface." + ::= { optIfOTMnEntry 1 } + +optIfOTMnReduced OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether a reduced or full + functionality is supported at the interface. A value of + true means reduced. A value of false means full." + ::= { optIfOTMnEntry 2 } + +optIfOTMnBitRates OBJECT-TYPE + + + + SYNTAX BITS { bitRateK1(0), bitRateK2(1), bitRateK3(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute is a bit map representing the bit + rate or set of bit rates supported on the interface. + The meaning of each bit position is as follows: + bitRateK1(0) is set if the 2.5 Gbit/s rate is supported + bitRateK2(1) is set if the 10 Gbit/s rate is supported + bitRateK3(2) is set if the 40 Gbit/s rate is supported + Note that each bit position corresponds to one possible + value of the type OptIfBitRateK. + The default value of this attribute is system specific." + ::= { optIfOTMnEntry 3 } + +optIfOTMnInterfaceType OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the type of interface. The value of + this attribute will affect the behavior of the OTM with + respect to presence/absence of OTM Overhead Signal (OOS) + processing and TCM activation. For an IrDI interface, + there is no OOS processing and TCM activation is limited + to n levels as specified by a TCM level threshold. + + This object contains two fields that are separated by + whitespace. The possible values are: + field 1: one of the 4-character ASCII strings + 'IrDI' or 'IaDI' + field 2: free-form text consisting of printable + UTF-8 encoded characters + + Note that field 2 is optional. If it is not present then there + is no requirement for trailing whitespace after field 1. + + The default values are as follows: + field 1: 'IaDI' + field 2: an empty string." + + ::= { optIfOTMnEntry 4 } + +optIfOTMnTcmMax OBJECT-TYPE + SYNTAX Unsigned32 (0..6) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "This object identifies the maximum number of TCM + levels allowed for any Optical Channel contained + in this OTM. A new TCM activation will be rejected + if the requested level is greater than the threshold. + If InterfaceType object specifies a type of 'IaDI' + for this OTM, then this attribute is irrelevant. + + Possible values: unsigned integers in the range + from 0 to 6 inclusive. + Default value: 3." + + ::= { optIfOTMnEntry 5 } + +optIfOTMnOpticalReach OBJECT-TYPE + SYNTAX INTEGER { intraOffice(1), shortHaul(2), longHaul(3), + veryLongHaul(4), ultraLongHaul(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the length the optical signal + may travel before requiring termination or regeneration. + The meaning of the enumeration are: + intraOffice(1) - intra-office (as defined in ITU-T G.957) + shortHaul(2) - short haul (as defined in ITU-T G.957) + longHaul(3) - long haul (as defined in ITU-T G.957) + veryLongHaul(4) - very long haul (as defined in ITU-T G.691) + ultraLongHaul(5)- ultra long haul (as defined in ITU-T G.691)" + ::= { optIfOTMnEntry 6 } + +-- the optIfPerfMon group +-- This group defines performance monitoring objects for all +-- layers. + +-- PM interval table + +optIfPerfMonIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfPerfMonIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of 15-minute performance monitoring interval + information." + ::= { optIfPerfMon 1 } + +optIfPerfMonIntervalEntry OBJECT-TYPE + SYNTAX OptIfPerfMonIntervalEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A conceptual row that contains 15-minute performance + monitoring interval information of an interface." + INDEX { ifIndex } + ::= { optIfPerfMonIntervalTable 1 } + +OptIfPerfMonIntervalEntry ::= + SEQUENCE { + optIfPerfMonCurrentTimeElapsed Gauge32, + optIfPerfMonCurDayTimeElapsed Gauge32, + optIfPerfMonIntervalNumIntervals Unsigned32, + optIfPerfMonIntervalNumInvalidIntervals Unsigned32 + } + +optIfPerfMonCurrentTimeElapsed OBJECT-TYPE + SYNTAX Gauge32 (0..900) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds elapsed in the current 15-minute + performance monitoring interval. + If, for some reason, such as an adjustment in the NE's + time-of-day clock, the number of seconds elapsed exceeds + the maximum value, then the maximum value will be returned." + ::= { optIfPerfMonIntervalEntry 1 } + +optIfPerfMonCurDayTimeElapsed OBJECT-TYPE + SYNTAX Gauge32 (0..86400) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds elapsed in the current 24-hour interval + performance monitoring period. + If, for some reason, such as an adjustment in the NE's + time-of-day clock, the number of seconds elapsed exceeds + the maximum value, then the maximum value will be returned." + ::= { optIfPerfMonIntervalEntry 2 } + +optIfPerfMonIntervalNumIntervals OBJECT-TYPE + SYNTAX Unsigned32 (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of 15-minute intervals for which performance + monitoring data is available. The number is the same for all + the associated sub layers of the interface. + + + + An optical interface must be capable of supporting at least + n intervals, where n is defined as follows: + The minimum value of n is 4. + The default of n is 32. + The maximum value of n is 96. + + The value of this object will be n unless performance + monitoring was (re-)started for the interface within the last + (n*15) minutes, in which case the value will be the number of + complete 15-minute intervals since measurement was + (re-)started." + ::= { optIfPerfMonIntervalEntry 3 } + +optIfPerfMonIntervalNumInvalidIntervals OBJECT-TYPE + SYNTAX Unsigned32 (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from 0 to + optIfPerfMonIntervalNumIntervals for which no performance + monitoring data is available and/or the data is invalid." + ::= { optIfPerfMonIntervalEntry 4 } + +-- the optIfOTSn group +-- This group handles the configuration and performance +-- monitoring objects for OTS layers. + +-- OTSn config table + +optIfOTSnConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn configuration information." + ::= { optIfOTSn 1 } + +optIfOTSnConfigEntry OBJECT-TYPE + SYNTAX OptIfOTSnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOTSnConfigTable 1 } + +OptIfOTSnConfigEntry ::= + + + + SEQUENCE { + optIfOTSnDirectionality OptIfDirectionality, + optIfOTSnAprStatus SnmpAdminString, + optIfOTSnAprControl SnmpAdminString, + optIfOTSnTraceIdentifierTransmitted OptIfTxTI, + optIfOTSnDAPIExpected OptIfExDAPI, + optIfOTSnSAPIExpected OptIfExSAPI, + optIfOTSnTraceIdentifierAccepted OptIfAcTI, + optIfOTSnTIMDetMode OptIfTIMDetMode, + optIfOTSnTIMActEnabled TruthValue, + optIfOTSnCurrentStatus BITS + } + +optIfOTSnDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOTSnConfigEntry 1 } + +optIfOTSnAprStatus OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute indicates the status of the Automatic + Power Reduction (APR) function of the entity. Valid + values are 'on' and 'off'." + ::= { optIfOTSnConfigEntry 2 } + +optIfOTSnAprControl OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is a UTF-8 encoded string that specifies Automatic + Power Reduction (APR) control actions requested of this entity + (when written) and that returns the current APR control state + of this entity (when read). The values are implementation-defined. + Any implementation that instantiates this object must document the + set of values that it allows to be written, the set of values + that it will return, and what each of those values means." + ::= { optIfOTSnConfigEntry 3 } + +optIfOTSnTraceIdentifierTransmitted OBJECT-TYPE + SYNTAX OptIfTxTI + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The trace identifier transmitted. + This object is applicable when optIfOTSnDirectionality has the + value source(2) or bidirectional(3). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI'). + If no value is ever set by a management entity for the object + optIfOTSnTraceIdentifierTransmitted, system-specific default + value will be used. Any implementation that instantiates this + object must document the system-specific default value or how it + is derived." + ::= { optIfOTSnConfigEntry 4 } + +optIfOTSnDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object is applicable when optIfOTSnDirectionality has the + value sink(1) or bidirectional(3). It has no effect if + optIfOTSnTIMDetMode has the value off(1) or sapi(3). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI')." + ::= { optIfOTSnConfigEntry 5 } + +optIfOTSnSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object is applicable when optIfOTSnDirectionality has the + value sink(1) or bidirectional(3). It has no effect if + optIfOTSnTIMDetMode has the value off(1) or dapi(2). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI')." + ::= { optIfOTSnConfigEntry 6 } + +optIfOTSnTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier received. + This object is applicable when optIfOTSnDirectionality has the + value sink(1) or bidirectional(3). Its value is unspecified + if optIfOTSnCurrentStatus has either or both of the + losO(5) and los(6) bits set. + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI')." + ::= { optIfOTSnConfigEntry 7 } + +optIfOTSnTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function. This object is applicable + when optIfOTSnDirectionality has the value sink(1) + or bidirectional(3). The default value is off(1). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI'). + The default value of this object is off(1)." + ::= { optIfOTSnConfigEntry 8 } + +optIfOTSnTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled. This object + is applicable when optIfOTSnDirectionality has the + value sink(1) or bidirectional(3). It has no effect + when the value of optIfOTSnTIMDetMode is off(1). + This object does not apply to reduced-capability systems (i.e., + those for which optIfOTMnReduced has the value true(1)) or + at IrDI interfaces (i.e., when optIfOTMnInterfaceType field 1 + has the value 'IrDI'). + The default value of this object is false(2)." + ::= { optIfOTSnConfigEntry 9 } + +optIfOTSnCurrentStatus OBJECT-TYPE + + + + SYNTAX BITS { + bdiP(0), + bdiO(1), + bdi(2), + tim(3), + losP(4), + losO(5), + los(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is applicable when optIfOTSnDirectionality + has the value sink(1) or bidirectional(3). In + reduced-capability systems or at IrDI interfaces + the only bit position that may be set is los(6)." + ::= { optIfOTSnConfigEntry 10 } + +-- OTSn sink current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOTSnSinkCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn sink performance monitoring information for + the current 15-minute interval." + ::= { optIfOTSn 2 } + +optIfOTSnSinkCurrentEntry OBJECT-TYPE + SYNTAX OptIfOTSnSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn sink performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOTSnSinkCurrentTable 1 } + +OptIfOTSnSinkCurrentEntry ::= + SEQUENCE { + optIfOTSnSinkCurrentSuspectedFlag TruthValue, + optIfOTSnSinkCurrentInputPower Integer32, + optIfOTSnSinkCurrentLowInputPower Integer32, + + + + optIfOTSnSinkCurrentHighInputPower Integer32, + optIfOTSnSinkCurrentLowerInputPowerThreshold Integer32, + optIfOTSnSinkCurrentUpperInputPowerThreshold Integer32, + optIfOTSnSinkCurrentOutputPower Integer32, + optIfOTSnSinkCurrentLowOutputPower Integer32, + optIfOTSnSinkCurrentHighOutputPower Integer32, + optIfOTSnSinkCurrentLowerOutputPowerThreshold Integer32, + optIfOTSnSinkCurrentUpperOutputPowerThreshold Integer32 + } + +optIfOTSnSinkCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSinkCurrentEntry 1 } + +optIfOTSnSinkCurrentInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the input." + ::= { optIfOTSnSinkCurrentEntry 2 } + +optIfOTSnSinkCurrentLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOTSnSinkCurrentEntry 3 } + +optIfOTSnSinkCurrentHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOTSnSinkCurrentEntry 4 } + +optIfOTSnSinkCurrentLowerInputPowerThreshold OBJECT-TYPE + + + + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + optIfOTSnSinkCurrentInputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSinkCurrentEntry 5 } + +optIfOTSnSinkCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on input power. If + optIfOTSnSinkCurrentInputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSinkCurrentEntry 6 } + +optIfOTSnSinkCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOTSnSinkCurrentEntry 7 } + +optIfOTSnSinkCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOTSnSinkCurrentEntry 8 } + +optIfOTSnSinkCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + + + + ::= { optIfOTSnSinkCurrentEntry 9 } + +optIfOTSnSinkCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOTSnSinkCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSinkCurrentEntry 10 } + +optIfOTSnSinkCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOTSnSinkCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSinkCurrentEntry 11 } + +-- OTSn sink interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOTSnSinkIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OTSn sink performance monitoring + information." + ::= { optIfOTSn 3 } + +optIfOTSnSinkIntervalEntry OBJECT-TYPE + SYNTAX OptIfOTSnSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn sink performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOTSnSinkIntervalNumber } + ::= { optIfOTSnSinkIntervalTable 1 } + + + + +OptIfOTSnSinkIntervalEntry ::= + SEQUENCE { + optIfOTSnSinkIntervalNumber OptIfIntervalNumber, + optIfOTSnSinkIntervalSuspectedFlag TruthValue, + optIfOTSnSinkIntervalLastInputPower Integer32, + optIfOTSnSinkIntervalLowInputPower Integer32, + optIfOTSnSinkIntervalHighInputPower Integer32, + optIfOTSnSinkIntervalLastOutputPower Integer32, + optIfOTSnSinkIntervalLowOutputPower Integer32, + optIfOTSnSinkIntervalHighOutputPower Integer32 + + } + +optIfOTSnSinkIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOTSnSinkIntervalEntry 1 } + +optIfOTSnSinkIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSinkIntervalEntry 2 } + +optIfOTSnSinkIntervalLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + interval." + ::= { optIfOTSnSinkIntervalEntry 3 } + +optIfOTSnSinkIntervalLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + interval." + ::= { optIfOTSnSinkIntervalEntry 4 } + + + +optIfOTSnSinkIntervalHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + interval." + ::= { optIfOTSnSinkIntervalEntry 5 } + +optIfOTSnSinkIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOTSnSinkIntervalEntry 6 } + +optIfOTSnSinkIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOTSnSinkIntervalEntry 7 } + +optIfOTSnSinkIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + ::= { optIfOTSnSinkIntervalEntry 8 } + +-- OTSn sink current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOTSnSinkCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A table of OTSn sink performance monitoring information for + the current 24-hour interval." + ::= { optIfOTSn 4 } + +optIfOTSnSinkCurDayEntry OBJECT-TYPE + SYNTAX OptIfOTSnSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn sink performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOTSnSinkCurDayTable 1 } + +OptIfOTSnSinkCurDayEntry ::= + SEQUENCE { + optIfOTSnSinkCurDaySuspectedFlag TruthValue, + optIfOTSnSinkCurDayLowInputPower Integer32, + optIfOTSnSinkCurDayHighInputPower Integer32, + optIfOTSnSinkCurDayLowOutputPower Integer32, + optIfOTSnSinkCurDayHighOutputPower Integer32 + } + +optIfOTSnSinkCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSinkCurDayEntry 1 } + +optIfOTSnSinkCurDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOTSnSinkCurDayEntry 2 } + +optIfOTSnSinkCurDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The highest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOTSnSinkCurDayEntry 3 } + +optIfOTSnSinkCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOTSnSinkCurDayEntry 4 } + +optIfOTSnSinkCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOTSnSinkCurDayEntry 5 } + +-- OTSn sink previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOTSnSinkPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn sink performance monitoring information for + the previous 24-hour interval." + ::= { optIfOTSn 5 } + +optIfOTSnSinkPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOTSnSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn sink performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOTSnSinkPrevDayTable 1 } + + + +OptIfOTSnSinkPrevDayEntry ::= + SEQUENCE { + optIfOTSnSinkPrevDaySuspectedFlag TruthValue, + optIfOTSnSinkPrevDayLastInputPower Integer32, + optIfOTSnSinkPrevDayLowInputPower Integer32, + optIfOTSnSinkPrevDayHighInputPower Integer32, + optIfOTSnSinkPrevDayLastOutputPower Integer32, + optIfOTSnSinkPrevDayLowOutputPower Integer32, + optIfOTSnSinkPrevDayHighOutputPower Integer32 + } + +optIfOTSnSinkPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSinkPrevDayEntry 1 } + +optIfOTSnSinkPrevDayLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 2 } + +optIfOTSnSinkPrevDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 3 } + +optIfOTSnSinkPrevDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 4 } + + + +optIfOTSnSinkPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 5 } + +optIfOTSnSinkPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 6 } + +optIfOTSnSinkPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSinkPrevDayEntry 7 } + +-- OTSn source current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOTSnSrcCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn source performance monitoring information for + the current 15-minute interval." + ::= { optIfOTSn 6 } + +optIfOTSnSrcCurrentEntry OBJECT-TYPE + SYNTAX OptIfOTSnSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A conceptual row that contains OTSn source performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOTSnSrcCurrentTable 1 } + +OptIfOTSnSrcCurrentEntry ::= + SEQUENCE { + optIfOTSnSrcCurrentSuspectedFlag TruthValue, + optIfOTSnSrcCurrentOutputPower Integer32, + optIfOTSnSrcCurrentLowOutputPower Integer32, + optIfOTSnSrcCurrentHighOutputPower Integer32, + optIfOTSnSrcCurrentLowerOutputPowerThreshold Integer32, + optIfOTSnSrcCurrentUpperOutputPowerThreshold Integer32, + optIfOTSnSrcCurrentInputPower Integer32, + optIfOTSnSrcCurrentLowInputPower Integer32, + optIfOTSnSrcCurrentHighInputPower Integer32, + optIfOTSnSrcCurrentLowerInputPowerThreshold Integer32, + optIfOTSnSrcCurrentUpperInputPowerThreshold Integer32 + } + +optIfOTSnSrcCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSrcCurrentEntry 1 } + +optIfOTSnSrcCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOTSnSrcCurrentEntry 2 } + +optIfOTSnSrcCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOTSnSrcCurrentEntry 3 } + + + +optIfOTSnSrcCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOTSnSrcCurrentEntry 4 } + +optIfOTSnSrcCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOTSnSrcCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSrcCurrentEntry 5 } + +optIfOTSnSrcCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOTSnSrcCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSrcCurrentEntry 6 } + +optIfOTSnSrcCurrentInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the input." + ::= { optIfOTSnSrcCurrentEntry 7 } + +optIfOTSnSrcCurrentLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + + + + "The lowest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOTSnSrcCurrentEntry 8 } + +optIfOTSnSrcCurrentHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOTSnSrcCurrentEntry 9 } + +optIfOTSnSrcCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + optIfOTSnSrcCurrentInputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSrcCurrentEntry 10 } + +optIfOTSnSrcCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on input power. If + optIfOTSnSrcCurrentInputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOTSnSrcCurrentEntry 11 } + +-- OTSn source interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOTSnSrcIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OTSn source performance monitoring + information." + ::= { optIfOTSn 7 } + + + +optIfOTSnSrcIntervalEntry OBJECT-TYPE + SYNTAX OptIfOTSnSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn source performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOTSnSrcIntervalNumber } + ::= { optIfOTSnSrcIntervalTable 1 } + +OptIfOTSnSrcIntervalEntry ::= + SEQUENCE { + optIfOTSnSrcIntervalNumber OptIfIntervalNumber, + optIfOTSnSrcIntervalSuspectedFlag TruthValue, + optIfOTSnSrcIntervalLastOutputPower Integer32, + optIfOTSnSrcIntervalLowOutputPower Integer32, + optIfOTSnSrcIntervalHighOutputPower Integer32, + optIfOTSnSrcIntervalLastInputPower Integer32, + optIfOTSnSrcIntervalLowInputPower Integer32, + optIfOTSnSrcIntervalHighInputPower Integer32 + } + +optIfOTSnSrcIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOTSnSrcIntervalEntry 1 } + +optIfOTSnSrcIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSrcIntervalEntry 2 } + +optIfOTSnSrcIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOTSnSrcIntervalEntry 3 } + + + +optIfOTSnSrcIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOTSnSrcIntervalEntry 4 } + +optIfOTSnSrcIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + ::= { optIfOTSnSrcIntervalEntry 5 } + +optIfOTSnSrcIntervalLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + interval." + ::= { optIfOTSnSrcIntervalEntry 6 } + +optIfOTSnSrcIntervalLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + interval." + ::= { optIfOTSnSrcIntervalEntry 7 } + +optIfOTSnSrcIntervalHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + interval." + + + + ::= { optIfOTSnSrcIntervalEntry 8 } + + +-- OTSn source current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOTSnSrcCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn source performance monitoring information for + the current 24-hour interval." + ::= { optIfOTSn 8 } + +optIfOTSnSrcCurDayEntry OBJECT-TYPE + SYNTAX OptIfOTSnSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn source performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOTSnSrcCurDayTable 1 } + +OptIfOTSnSrcCurDayEntry ::= + SEQUENCE { + optIfOTSnSrcCurDaySuspectedFlag TruthValue, + optIfOTSnSrcCurDayLowOutputPower Integer32, + optIfOTSnSrcCurDayHighOutputPower Integer32, + optIfOTSnSrcCurDayLowInputPower Integer32, + optIfOTSnSrcCurDayHighInputPower Integer32 + } + +optIfOTSnSrcCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSrcCurDayEntry 1 } + +optIfOTSnSrcCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOTSnSrcCurDayEntry 2 } + +optIfOTSnSrcCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOTSnSrcCurDayEntry 3 } + +optIfOTSnSrcCurDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOTSnSrcCurDayEntry 4 } + +optIfOTSnSrcCurDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOTSnSrcCurDayEntry 5 } + +-- OTSn source previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOTSnSrcPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTSnSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTSn source performance monitoring information for + the previous 24-hour interval." + ::= { optIfOTSn 9 } + + + +optIfOTSnSrcPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOTSnSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTSn source performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOTSnSrcPrevDayTable 1 } + +OptIfOTSnSrcPrevDayEntry ::= + SEQUENCE { + optIfOTSnSrcPrevDaySuspectedFlag TruthValue, + optIfOTSnSrcPrevDayLastOutputPower Integer32, + optIfOTSnSrcPrevDayLowOutputPower Integer32, + optIfOTSnSrcPrevDayHighOutputPower Integer32, + optIfOTSnSrcPrevDayLastInputPower Integer32, + optIfOTSnSrcPrevDayLowInputPower Integer32, + optIfOTSnSrcPrevDayHighInputPower Integer32 + } + +optIfOTSnSrcPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOTSnSrcPrevDayEntry 1 } + +optIfOTSnSrcPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 2 } + +optIfOTSnSrcPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + + + + ::= { optIfOTSnSrcPrevDayEntry 3 } + +optIfOTSnSrcPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 4 } + +optIfOTSnSrcPrevDayLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 5 } + +optIfOTSnSrcPrevDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 6 } + +optIfOTSnSrcPrevDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOTSnSrcPrevDayEntry 7 } + + +-- the optIfOMSn group +-- This group handles the configuration and performance monitoring +-- information for OMS layers. + +-- OMSn config table + + + +optIfOMSnConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn configuration information." + ::= { optIfOMSn 1 } + +optIfOMSnConfigEntry OBJECT-TYPE + SYNTAX OptIfOMSnConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOMSnConfigTable 1 } + +OptIfOMSnConfigEntry ::= + SEQUENCE { + optIfOMSnDirectionality OptIfDirectionality, + optIfOMSnCurrentStatus BITS + } + +optIfOMSnDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOMSnConfigEntry 1 } + +optIfOMSnCurrentStatus OBJECT-TYPE + SYNTAX BITS { + ssfP(0), + ssfO(1), + ssf(2), + bdiP(3), + bdiO(4), + bdi(5), + losP(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is applicable only to full capability + systems whose interface type is IaDI and for which + + + + optIfOMSnDirectionality has the value sink(1) or + bidirectional(3)." + ::= { optIfOMSnConfigEntry 2 } + +-- OMSn sink current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOMSnSinkCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn sink performance monitoring information for + the current 15-minute interval." + ::= { optIfOMSn 2 } + +optIfOMSnSinkCurrentEntry OBJECT-TYPE + SYNTAX OptIfOMSnSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn sink performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOMSnSinkCurrentTable 1 } + +OptIfOMSnSinkCurrentEntry ::= + SEQUENCE { + optIfOMSnSinkCurrentSuspectedFlag TruthValue, + optIfOMSnSinkCurrentAggregatedInputPower Integer32, + optIfOMSnSinkCurrentLowAggregatedInputPower Integer32, + optIfOMSnSinkCurrentHighAggregatedInputPower Integer32, + optIfOMSnSinkCurrentLowerInputPowerThreshold Integer32, + optIfOMSnSinkCurrentUpperInputPowerThreshold Integer32, + optIfOMSnSinkCurrentOutputPower Integer32, + optIfOMSnSinkCurrentLowOutputPower Integer32, + optIfOMSnSinkCurrentHighOutputPower Integer32, + optIfOMSnSinkCurrentLowerOutputPowerThreshold Integer32, + optIfOMSnSinkCurrentUpperOutputPowerThreshold Integer32 + } + +optIfOMSnSinkCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSinkCurrentEntry 1 } + +optIfOMSnSinkCurrentAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The aggregated optical power of all the DWDM input + channels." + ::= { optIfOMSnSinkCurrentEntry 2 } + +optIfOMSnSinkCurrentLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels during the current 15-minute interval." + ::= { optIfOMSnSinkCurrentEntry 3 } + +optIfOMSnSinkCurrentHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels during the current 15-minute interval." + ::= { optIfOMSnSinkCurrentEntry 4 } + +optIfOMSnSinkCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on aggregated input power. If + optIfOMSnSinkCurrentAggregatedInputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSinkCurrentEntry 5 } + +optIfOMSnSinkCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The upper limit threshold on aggregated input power. If + optIfOMSnSinkCurrentAggregatedInputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSinkCurrentEntry 6 } + +optIfOMSnSinkCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOMSnSinkCurrentEntry 7 } + +optIfOMSnSinkCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + during the current 15-minute interval." + ::= { optIfOMSnSinkCurrentEntry 8 } + +optIfOMSnSinkCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output + during the current 15-minute interval." + ::= { optIfOMSnSinkCurrentEntry 9 } + +optIfOMSnSinkCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOMSnSinkCurrentOutputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSinkCurrentEntry 10 } + +optIfOMSnSinkCurrentUpperOutputPowerThreshold OBJECT-TYPE + + + + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOMSnSinkCurrentOutputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSinkCurrentEntry 11 } + +-- OMSn sink interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOMSnSinkIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OMSn sink performance monitoring + information." + ::= { optIfOMSn 3 } + +optIfOMSnSinkIntervalEntry OBJECT-TYPE + SYNTAX OptIfOMSnSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn sink performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOMSnSinkIntervalNumber } + ::= { optIfOMSnSinkIntervalTable 1 } + +OptIfOMSnSinkIntervalEntry ::= + SEQUENCE { + optIfOMSnSinkIntervalNumber OptIfIntervalNumber, + optIfOMSnSinkIntervalSuspectedFlag TruthValue, + optIfOMSnSinkIntervalLastAggregatedInputPower Integer32, + optIfOMSnSinkIntervalLowAggregatedInputPower Integer32, + optIfOMSnSinkIntervalHighAggregatedInputPower Integer32, + optIfOMSnSinkIntervalLastOutputPower Integer32, + optIfOMSnSinkIntervalLowOutputPower Integer32, + optIfOMSnSinkIntervalHighOutputPower Integer32 + } + +optIfOMSnSinkIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOMSnSinkIntervalEntry 1 } + +optIfOMSnSinkIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSinkIntervalEntry 2 } + +optIfOMSnSinkIntervalLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power of all the DWDM input + channels during the interval." + ::= { optIfOMSnSinkIntervalEntry 3 } + +optIfOMSnSinkIntervalLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels during the interval." + ::= { optIfOMSnSinkIntervalEntry 4 } + +optIfOMSnSinkIntervalHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels during the interval." + ::= { optIfOMSnSinkIntervalEntry 5 } + +optIfOMSnSinkIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The last optical power at the output + during the interval." + ::= { optIfOMSnSinkIntervalEntry 6 } + +optIfOMSnSinkIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power at the output + during the interval." + ::= { optIfOMSnSinkIntervalEntry 7 } + +optIfOMSnSinkIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power at the output + during the interval." + ::= { optIfOMSnSinkIntervalEntry 8 } + +-- OMSn sink current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOMSnSinkCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn sink performance monitoring information for + the current 24-hour interval." + ::= { optIfOMSn 4 } + +optIfOMSnSinkCurDayEntry OBJECT-TYPE + SYNTAX OptIfOMSnSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn sink performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + + + + ::= { optIfOMSnSinkCurDayTable 1 } + +OptIfOMSnSinkCurDayEntry ::= + SEQUENCE { + optIfOMSnSinkCurDaySuspectedFlag TruthValue, + optIfOMSnSinkCurDayLowAggregatedInputPower Integer32, + optIfOMSnSinkCurDayHighAggregatedInputPower Integer32, + optIfOMSnSinkCurDayLowOutputPower Integer32, + optIfOMSnSinkCurDayHighOutputPower Integer32 + } + +optIfOMSnSinkCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSinkCurDayEntry 1 } + +optIfOMSnSinkCurDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels during the current 24-hour interval." + ::= { optIfOMSnSinkCurDayEntry 2 } + +optIfOMSnSinkCurDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels during the current 24-hour interval." + ::= { optIfOMSnSinkCurDayEntry 3 } + +optIfOMSnSinkCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power at the output + during the current 24-hour interval." + ::= { optIfOMSnSinkCurDayEntry 4 } + + + +optIfOMSnSinkCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power at the output + during the current 24-hour interval." + ::= { optIfOMSnSinkCurDayEntry 5 } + +-- OMSn sink previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOMSnSinkPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn sink performance monitoring information for + the previous 24-hour interval." + ::= { optIfOMSn 5 } + +optIfOMSnSinkPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOMSnSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn sink performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOMSnSinkPrevDayTable 1 } + +OptIfOMSnSinkPrevDayEntry ::= + SEQUENCE { + optIfOMSnSinkPrevDaySuspectedFlag TruthValue, + optIfOMSnSinkPrevDayLastAggregatedInputPower Integer32, + optIfOMSnSinkPrevDayLowAggregatedInputPower Integer32, + optIfOMSnSinkPrevDayHighAggregatedInputPower Integer32, + optIfOMSnSinkPrevDayLastOutputPower Integer32, + optIfOMSnSinkPrevDayLowOutputPower Integer32, + optIfOMSnSinkPrevDayHighOutputPower Integer32 + } + +optIfOMSnSinkPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSinkPrevDayEntry 1 } + +optIfOMSnSinkPrevDayLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power of all the DWDM input + channels during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 2 } + +optIfOMSnSinkPrevDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 3 } + +optIfOMSnSinkPrevDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 4 } + +optIfOMSnSinkPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power at the output + during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 5 } + +optIfOMSnSinkPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power at the output + during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 6 } + +optIfOMSnSinkPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power at the output + during the previous 24-hour interval." + ::= { optIfOMSnSinkPrevDayEntry 7 } + +-- OMSn source current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOMSnSrcCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn source performance monitoring information for + the current 15-minute interval." + ::= { optIfOMSn 6 } + +optIfOMSnSrcCurrentEntry OBJECT-TYPE + SYNTAX OptIfOMSnSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn source performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOMSnSrcCurrentTable 1 } + +OptIfOMSnSrcCurrentEntry ::= + SEQUENCE { + optIfOMSnSrcCurrentSuspectedFlag TruthValue, + optIfOMSnSrcCurrentOutputPower Integer32, + optIfOMSnSrcCurrentLowOutputPower Integer32, + optIfOMSnSrcCurrentHighOutputPower Integer32, + optIfOMSnSrcCurrentLowerOutputPowerThreshold Integer32, + + + + optIfOMSnSrcCurrentUpperOutputPowerThreshold Integer32, + optIfOMSnSrcCurrentAggregatedInputPower Integer32, + optIfOMSnSrcCurrentLowAggregatedInputPower Integer32, + optIfOMSnSrcCurrentHighAggregatedInputPower Integer32, + optIfOMSnSrcCurrentLowerInputPowerThreshold Integer32, + optIfOMSnSrcCurrentUpperInputPowerThreshold Integer32 + } + +optIfOMSnSrcCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSrcCurrentEntry 1 } + +optIfOMSnSrcCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOMSnSrcCurrentEntry 2 } + +optIfOMSnSrcCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOMSnSrcCurrentEntry 3 } + +optIfOMSnSrcCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOMSnSrcCurrentEntry 4 } + +optIfOMSnSrcCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOMSnSrcCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSrcCurrentEntry 5 } + +optIfOMSnSrcCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOMSnSrcCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSrcCurrentEntry 6 } + +optIfOMSnSrcCurrentAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The aggregated optical power at the input." + ::= { optIfOMSnSrcCurrentEntry 7 } + +optIfOMSnSrcCurrentLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power at the input + during the current 15-minute interval." + ::= { optIfOMSnSrcCurrentEntry 8 } + +optIfOMSnSrcCurrentHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power at the input + during the current 15-minute interval." + ::= { optIfOMSnSrcCurrentEntry 9 } + + + + +optIfOMSnSrcCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on aggregated input power. If + optIfOMSnSrcCurrentAggregatedInputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSrcCurrentEntry 10 } + +optIfOMSnSrcCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on aggregated input power. If + optIfOMSnSrcCurrentAggregatedInputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOMSnSrcCurrentEntry 11 } + + +-- OMSn source interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOMSnSrcIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OMSn source performance monitoring + information." + ::= { optIfOMSn 7 } + +optIfOMSnSrcIntervalEntry OBJECT-TYPE + SYNTAX OptIfOMSnSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn source performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOMSnSrcIntervalNumber } + ::= { optIfOMSnSrcIntervalTable 1 } + +OptIfOMSnSrcIntervalEntry ::= + + + + SEQUENCE { + optIfOMSnSrcIntervalNumber OptIfIntervalNumber, + optIfOMSnSrcIntervalSuspectedFlag TruthValue, + optIfOMSnSrcIntervalLastOutputPower Integer32, + optIfOMSnSrcIntervalLowOutputPower Integer32, + optIfOMSnSrcIntervalHighOutputPower Integer32, + optIfOMSnSrcIntervalLastAggregatedInputPower Integer32, + optIfOMSnSrcIntervalLowAggregatedInputPower Integer32, + optIfOMSnSrcIntervalHighAggregatedInputPower Integer32 + } + +optIfOMSnSrcIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOMSnSrcIntervalEntry 1 } + +optIfOMSnSrcIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSrcIntervalEntry 2 } + +optIfOMSnSrcIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOMSnSrcIntervalEntry 3 } + +optIfOMSnSrcIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOMSnSrcIntervalEntry 4 } + +optIfOMSnSrcIntervalHighOutputPower OBJECT-TYPE + + + + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + ::= { optIfOMSnSrcIntervalEntry 5 } + +optIfOMSnSrcIntervalLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power at the input + during the interval." + ::= { optIfOMSnSrcIntervalEntry 6 } + +optIfOMSnSrcIntervalLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power at the input + during the interval." + ::= { optIfOMSnSrcIntervalEntry 7 } + +optIfOMSnSrcIntervalHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power at the input + during the interval." + ::= { optIfOMSnSrcIntervalEntry 8 } + +-- OMSn source current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOMSnSrcCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A table of OMSn source performance monitoring information for + the current 24-hour interval." + ::= { optIfOMSn 8 } + +optIfOMSnSrcCurDayEntry OBJECT-TYPE + SYNTAX OptIfOMSnSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn source performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOMSnSrcCurDayTable 1 } + +OptIfOMSnSrcCurDayEntry ::= + SEQUENCE { + optIfOMSnSrcCurDaySuspectedFlag TruthValue, + optIfOMSnSrcCurDayLowOutputPower Integer32, + optIfOMSnSrcCurDayHighOutputPower Integer32, + optIfOMSnSrcCurDayLowAggregatedInputPower Integer32, + optIfOMSnSrcCurDayHighAggregatedInputPower Integer32 + } + +optIfOMSnSrcCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSrcCurDayEntry 1 } + +optIfOMSnSrcCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOMSnSrcCurDayEntry 2 } + +optIfOMSnSrcCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOMSnSrcCurDayEntry 3 } + +optIfOMSnSrcCurDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power at the input + during the current 24-hour interval." + ::= { optIfOMSnSrcCurDayEntry 4 } + +optIfOMSnSrcCurDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power at the input + during the current 24-hour interval." + ::= { optIfOMSnSrcCurDayEntry 5 } + +-- OMSn source previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOMSnSrcPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOMSnSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OMSn source performance monitoring information for + the previous 24-hour interval." + ::= { optIfOMSn 9 } + +optIfOMSnSrcPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOMSnSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OMSn source performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOMSnSrcPrevDayTable 1 } + + + + +OptIfOMSnSrcPrevDayEntry ::= + SEQUENCE { + optIfOMSnSrcPrevDaySuspectedFlag TruthValue, + optIfOMSnSrcPrevDayLastOutputPower Integer32, + optIfOMSnSrcPrevDayLowOutputPower Integer32, + optIfOMSnSrcPrevDayHighOutputPower Integer32, + optIfOMSnSrcPrevDayLastAggregatedInputPower Integer32, + optIfOMSnSrcPrevDayLowAggregatedInputPower Integer32, + optIfOMSnSrcPrevDayHighAggregatedInputPower Integer32 + } + +optIfOMSnSrcPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOMSnSrcPrevDayEntry 1 } + +optIfOMSnSrcPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 2 } + +optIfOMSnSrcPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 3 } + +optIfOMSnSrcPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 4 } + + + +optIfOMSnSrcPrevDayLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power at the input during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 5 } + +optIfOMSnSrcPrevDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power at the input during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 6 } + +optIfOMSnSrcPrevDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power at the input during the + previous 24-hour interval." + ::= { optIfOMSnSrcPrevDayEntry 7 } + +-- the optIfOChGroup group +-- This group handles the configuration and performance monitoring +-- information for OChGroup layers. + +-- OChGroup config table + +optIfOChGroupConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup configuration information." + ::= { optIfOChGroup 1 } + +optIfOChGroupConfigEntry OBJECT-TYPE + SYNTAX OptIfOChGroupConfigEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A conceptual row that contains OChGroup configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOChGroupConfigTable 1 } + +OptIfOChGroupConfigEntry ::= + SEQUENCE { + optIfOChGroupDirectionality OptIfDirectionality + } + +optIfOChGroupDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOChGroupConfigEntry 1 } + +-- OChGroup sink current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOChGroupSinkCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup sink performance monitoring information for + the current 15-minute interval." + ::= { optIfOChGroup 2 } + +optIfOChGroupSinkCurrentEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup sink performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOChGroupSinkCurrentTable 1 } + +OptIfOChGroupSinkCurrentEntry ::= + SEQUENCE { + optIfOChGroupSinkCurrentSuspectedFlag TruthValue, + optIfOChGroupSinkCurrentAggregatedInputPower Integer32, + optIfOChGroupSinkCurrentLowAggregatedInputPower Integer32, + + + + optIfOChGroupSinkCurrentHighAggregatedInputPower Integer32, + optIfOChGroupSinkCurrentLowerInputPowerThreshold Integer32, + optIfOChGroupSinkCurrentUpperInputPowerThreshold Integer32, + optIfOChGroupSinkCurrentOutputPower Integer32, + optIfOChGroupSinkCurrentLowOutputPower Integer32, + optIfOChGroupSinkCurrentHighOutputPower Integer32, + optIfOChGroupSinkCurrentLowerOutputPowerThreshold Integer32, + optIfOChGroupSinkCurrentUpperOutputPowerThreshold Integer32 + } + +optIfOChGroupSinkCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSinkCurrentEntry 1 } + +optIfOChGroupSinkCurrentAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The aggregated optical power of all the DWDM input + channels in the OChGroup." + ::= { optIfOChGroupSinkCurrentEntry 2 } + +optIfOChGroupSinkCurrentLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels in the OChGroup during the current 15-minute interval." + ::= { optIfOChGroupSinkCurrentEntry 3 } + +optIfOChGroupSinkCurrentHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels in the OChGroup during the current 15-minute interval." + ::= { optIfOChGroupSinkCurrentEntry 4 } + + + + +optIfOChGroupSinkCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on aggregated input power. If + optIfOChGroupSinkCurrentAggregatedInputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSinkCurrentEntry 5 } + +optIfOChGroupSinkCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on aggregated input power. If + optIfOChGroupSinkCurrentAggregatedInputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSinkCurrentEntry 6 } + +optIfOChGroupSinkCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output + in the OChGroup." + ::= { optIfOChGroupSinkCurrentEntry 7 } + +optIfOChGroupSinkCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + in the OChGroup during the current 15-minute interval." + ::= { optIfOChGroupSinkCurrentEntry 8 } + +optIfOChGroupSinkCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The highest optical power monitored at the output + in the OChGroup during the current 15-minute interval." + ::= { optIfOChGroupSinkCurrentEntry 9 } + +optIfOChGroupSinkCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on the output power. If + optIfOChGroupSinkCurrentOutputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSinkCurrentEntry 10 } + +optIfOChGroupSinkCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on the output power. If + optIfOChGroupSinkCurrentOutputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSinkCurrentEntry 11 } + +-- OChGroup sink interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOChGroupSinkIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OChGroup sink performance monitoring + information." + ::= { optIfOChGroup 3 } + +optIfOChGroupSinkIntervalEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup sink performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOChGroupSinkIntervalNumber } + + + + ::= { optIfOChGroupSinkIntervalTable 1 } + +OptIfOChGroupSinkIntervalEntry ::= + SEQUENCE { + optIfOChGroupSinkIntervalNumber OptIfIntervalNumber, + optIfOChGroupSinkIntervalSuspectedFlag TruthValue, + optIfOChGroupSinkIntervalLastAggregatedInputPower Integer32, + optIfOChGroupSinkIntervalLowAggregatedInputPower Integer32, + optIfOChGroupSinkIntervalHighAggregatedInputPower Integer32, + optIfOChGroupSinkIntervalLastOutputPower Integer32, + optIfOChGroupSinkIntervalLowOutputPower Integer32, + optIfOChGroupSinkIntervalHighOutputPower Integer32 + } + +optIfOChGroupSinkIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOChGroupSinkIntervalEntry 1 } + +optIfOChGroupSinkIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSinkIntervalEntry 2 } + +optIfOChGroupSinkIntervalLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power of all the DWDM input + channels in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 3 } + +optIfOChGroupSinkIntervalLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels in the OChGroup during the interval." + + + + ::= { optIfOChGroupSinkIntervalEntry 4 } + +optIfOChGroupSinkIntervalHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 5 } + +optIfOChGroupSinkIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output + in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 6 } + +optIfOChGroupSinkIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 7 } + +optIfOChGroupSinkIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output + in the OChGroup during the interval." + ::= { optIfOChGroupSinkIntervalEntry 8 } + +-- OChGroup sink current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOChGroupSinkCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSinkCurDayEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup sink performance monitoring information for + the current 24-hour interval." + ::= { optIfOChGroup 4 } + +optIfOChGroupSinkCurDayEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup sink performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChGroupSinkCurDayTable 1 } + +OptIfOChGroupSinkCurDayEntry ::= + SEQUENCE { + optIfOChGroupSinkCurDaySuspectedFlag TruthValue, + optIfOChGroupSinkCurDayLowAggregatedInputPower Integer32, + optIfOChGroupSinkCurDayHighAggregatedInputPower Integer32, + optIfOChGroupSinkCurDayLowOutputPower Integer32, + optIfOChGroupSinkCurDayHighOutputPower Integer32 + } + +optIfOChGroupSinkCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSinkCurDayEntry 1 } + +optIfOChGroupSinkCurDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels in the OChGroup during the current 24-hour interval." + ::= { optIfOChGroupSinkCurDayEntry 2 } + +optIfOChGroupSinkCurDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power of all the DWDM input + channels in the OChGroup during the current 24-hour interval." + ::= { optIfOChGroupSinkCurDayEntry 3 } + +optIfOChGroupSinkCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + in the OChGroup during the current 24-hour interval." + ::= { optIfOChGroupSinkCurDayEntry 4 } + +optIfOChGroupSinkCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output + in the OChGroup during the current 24-hour interval." + ::= { optIfOChGroupSinkCurDayEntry 5 } + +-- OChGroup sink previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOChGroupSinkPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup sink performance monitoring information for + the previous 24-hour interval." + ::= { optIfOChGroup 5 } + +optIfOChGroupSinkPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup sink performance + monitoring information of an interface for the previous + 24-hour interval." + + + + INDEX { ifIndex } + ::= { optIfOChGroupSinkPrevDayTable 1 } + +OptIfOChGroupSinkPrevDayEntry ::= + SEQUENCE { + optIfOChGroupSinkPrevDaySuspectedFlag TruthValue, + optIfOChGroupSinkPrevDayLastAggregatedInputPower Integer32, + optIfOChGroupSinkPrevDayLowAggregatedInputPower Integer32, + optIfOChGroupSinkPrevDayHighAggregatedInputPower Integer32, + optIfOChGroupSinkPrevDayLastOutputPower Integer32, + optIfOChGroupSinkPrevDayLowOutputPower Integer32, + optIfOChGroupSinkPrevDayHighOutputPower Integer32 + } + +optIfOChGroupSinkPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSinkPrevDayEntry 1 } + +optIfOChGroupSinkPrevDayLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power of all the DWDM input + channels in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 2 } + +optIfOChGroupSinkPrevDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power of all the DWDM input + channels in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 3 } + +optIfOChGroupSinkPrevDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The highest aggregated optical power of all the DWDM input + channels in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 4 } + +optIfOChGroupSinkPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output + in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 5 } + +optIfOChGroupSinkPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output + in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 6 } + +optIfOChGroupSinkPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output + in the OChGroup during the previous 24-hour interval." + ::= { optIfOChGroupSinkPrevDayEntry 7 } + +-- OChGroup source current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOChGroupSrcCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup source performance monitoring information for + the current 15-minute interval." + ::= { optIfOChGroup 6 } + +optIfOChGroupSrcCurrentEntry OBJECT-TYPE + + + + SYNTAX OptIfOChGroupSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup source performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOChGroupSrcCurrentTable 1 } + +OptIfOChGroupSrcCurrentEntry ::= + SEQUENCE { + optIfOChGroupSrcCurrentSuspectedFlag TruthValue, + optIfOChGroupSrcCurrentOutputPower Integer32, + optIfOChGroupSrcCurrentLowOutputPower Integer32, + optIfOChGroupSrcCurrentHighOutputPower Integer32, + optIfOChGroupSrcCurrentLowerOutputPowerThreshold Integer32, + optIfOChGroupSrcCurrentUpperOutputPowerThreshold Integer32, + optIfOChGroupSrcCurrentAggregatedInputPower Integer32, + optIfOChGroupSrcCurrentLowAggregatedInputPower Integer32, + optIfOChGroupSrcCurrentHighAggregatedInputPower Integer32, + optIfOChGroupSrcCurrentLowerInputPowerThreshold Integer32, + optIfOChGroupSrcCurrentUpperInputPowerThreshold Integer32 + } + +optIfOChGroupSrcCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSrcCurrentEntry 1 } + +optIfOChGroupSrcCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOChGroupSrcCurrentEntry 2 } + +optIfOChGroupSrcCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOChGroupSrcCurrentEntry 3 } + +optIfOChGroupSrcCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOChGroupSrcCurrentEntry 4 } + +optIfOChGroupSrcCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOChGroupSrcCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSrcCurrentEntry 5 } + +optIfOChGroupSrcCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOChGroupSrcCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSrcCurrentEntry 6 } + +optIfOChGroupSrcCurrentAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The aggregated optical power monitored at the input." + ::= { optIfOChGroupSrcCurrentEntry 7 } + +optIfOChGroupSrcCurrentLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power monitored at the input + during the current 15-minute interval." + ::= { optIfOChGroupSrcCurrentEntry 8 } + +optIfOChGroupSrcCurrentHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power monitored at the input + during the current 15-minute interval." + ::= { optIfOChGroupSrcCurrentEntry 9 } + +optIfOChGroupSrcCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + optIfOChGroupSrcCurrentAggregatedInputPower drops to this value + or below, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSrcCurrentEntry 10 } + +optIfOChGroupSrcCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on input power. If + optIfOChGroupSrcCurrentAggregatedInputPower reaches or exceeds + this value, a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChGroupSrcCurrentEntry 11 } + +-- OChGroup source interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOChGroupSrcIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A table of historical OChGroup source performance monitoring + information." + ::= { optIfOChGroup 7 } + +optIfOChGroupSrcIntervalEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup source performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOChGroupSrcIntervalNumber } + ::= { optIfOChGroupSrcIntervalTable 1 } + +OptIfOChGroupSrcIntervalEntry ::= + SEQUENCE { + optIfOChGroupSrcIntervalNumber OptIfIntervalNumber, + optIfOChGroupSrcIntervalSuspectedFlag TruthValue, + optIfOChGroupSrcIntervalLastOutputPower Integer32, + optIfOChGroupSrcIntervalLowOutputPower Integer32, + optIfOChGroupSrcIntervalHighOutputPower Integer32, + optIfOChGroupSrcIntervalLastAggregatedInputPower Integer32, + optIfOChGroupSrcIntervalLowAggregatedInputPower Integer32, + optIfOChGroupSrcIntervalHighAggregatedInputPower Integer32 + } + +optIfOChGroupSrcIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOChGroupSrcIntervalEntry 1 } + +optIfOChGroupSrcIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSrcIntervalEntry 2 } + +optIfOChGroupSrcIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOChGroupSrcIntervalEntry 3 } + +optIfOChGroupSrcIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOChGroupSrcIntervalEntry 4 } + +optIfOChGroupSrcIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + ::= { optIfOChGroupSrcIntervalEntry 5 } + +optIfOChGroupSrcIntervalLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power monitored at the input + during the interval." + ::= { optIfOChGroupSrcIntervalEntry 6 } + +optIfOChGroupSrcIntervalLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power monitored at the input + during the interval." + ::= { optIfOChGroupSrcIntervalEntry 7 } + +optIfOChGroupSrcIntervalHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power monitored at the input + during the interval." + ::= { optIfOChGroupSrcIntervalEntry 8 } + +-- OChGroup source current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOChGroupSrcCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OChGroup source performance monitoring information for + the current 24-hour interval." + ::= { optIfOChGroup 8 } + +optIfOChGroupSrcCurDayEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup source performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChGroupSrcCurDayTable 1 } + +OptIfOChGroupSrcCurDayEntry ::= + SEQUENCE { + optIfOChGroupSrcCurDaySuspectedFlag TruthValue, + optIfOChGroupSrcCurDayLowOutputPower Integer32, + optIfOChGroupSrcCurDayHighOutputPower Integer32, + optIfOChGroupSrcCurDayLowAggregatedInputPower Integer32, + optIfOChGroupSrcCurDayHighAggregatedInputPower Integer32 + } + +optIfOChGroupSrcCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSrcCurDayEntry 1 } + + + + +optIfOChGroupSrcCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOChGroupSrcCurDayEntry 2 } + +optIfOChGroupSrcCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOChGroupSrcCurDayEntry 3 } + +optIfOChGroupSrcCurDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power monitored at the input + during the current 24-hour interval." + ::= { optIfOChGroupSrcCurDayEntry 4 } + +optIfOChGroupSrcCurDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power monitored at the input + during the current 24-hour interval." + ::= { optIfOChGroupSrcCurDayEntry 5 } + +-- OChGroup source previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOChGroupSrcPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChGroupSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "A table of OChGroup source performance monitoring information for + the previous 24-hour interval." + ::= { optIfOChGroup 9 } + +optIfOChGroupSrcPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOChGroupSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OChGroup source performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChGroupSrcPrevDayTable 1 } + +OptIfOChGroupSrcPrevDayEntry ::= + SEQUENCE { + optIfOChGroupSrcPrevDaySuspectedFlag TruthValue, + optIfOChGroupSrcPrevDayLastOutputPower Integer32, + optIfOChGroupSrcPrevDayLowOutputPower Integer32, + optIfOChGroupSrcPrevDayHighOutputPower Integer32, + optIfOChGroupSrcPrevDayLastAggregatedInputPower Integer32, + optIfOChGroupSrcPrevDayLowAggregatedInputPower Integer32, + optIfOChGroupSrcPrevDayHighAggregatedInputPower Integer32 + } + +optIfOChGroupSrcPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChGroupSrcPrevDayEntry 1 } + +optIfOChGroupSrcPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 2 } + +optIfOChGroupSrcPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 3 } + +optIfOChGroupSrcPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 4 } + +optIfOChGroupSrcPrevDayLastAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last aggregated optical power monitored at the input + during the previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 5 } + +optIfOChGroupSrcPrevDayLowAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest aggregated optical power monitored at the input + during the previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 6 } + +optIfOChGroupSrcPrevDayHighAggregatedInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest aggregated optical power monitored at the input + during the previous 24-hour interval." + ::= { optIfOChGroupSrcPrevDayEntry 7 } + +-- the optIfOCh group + + + +-- This group handles the configuration and +-- performance monitoring information for OCh layers. + +-- OCh config table + +optIfOChConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh configuration information." + ::= { optIfOCh 1 } + +optIfOChConfigEntry OBJECT-TYPE + SYNTAX OptIfOChConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOChConfigTable 1 } + +OptIfOChConfigEntry ::= + SEQUENCE { + optIfOChDirectionality OptIfDirectionality, + optIfOChCurrentStatus BITS + } + +optIfOChDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOChConfigEntry 1 } + +optIfOChCurrentStatus OBJECT-TYPE + SYNTAX BITS { + losP(0), + los(1), + oci(2), + ssfP(3), + ssfO(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is applicable when optIfOChDirectionality + has the value sink(1) or bidirectional(3). + In full-capability systems the bit position los(1) is not used. + In reduced-capability systems or at IrDI interfaces only + the bit positions los(1) and ssfP(3) are used." + ::= { optIfOChConfigEntry 2 } + +-- OCh sink current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOChSinkCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh sink performance monitoring information for + the current 15-minute interval." + ::= { optIfOCh 2 } + +optIfOChSinkCurrentEntry OBJECT-TYPE + SYNTAX OptIfOChSinkCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh sink performance + monitoring information for an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOChSinkCurrentTable 1 } + +OptIfOChSinkCurrentEntry ::= + SEQUENCE { + optIfOChSinkCurrentSuspectedFlag TruthValue, + optIfOChSinkCurrentInputPower Integer32, + optIfOChSinkCurrentLowInputPower Integer32, + optIfOChSinkCurrentHighInputPower Integer32, + optIfOChSinkCurrentLowerInputPowerThreshold Integer32, + optIfOChSinkCurrentUpperInputPowerThreshold Integer32 + } + +optIfOChSinkCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "If true, the data in this entry may be unreliable." + ::= { optIfOChSinkCurrentEntry 1 } + +optIfOChSinkCurrentInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the input." + ::= { optIfOChSinkCurrentEntry 2 } + +optIfOChSinkCurrentLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOChSinkCurrentEntry 3 } + +optIfOChSinkCurrentHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 15-minute interval." + ::= { optIfOChSinkCurrentEntry 4 } + +optIfOChSinkCurrentLowerInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on input power. If + optIfOChSinkCurrentInputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChSinkCurrentEntry 5 } + +optIfOChSinkCurrentUpperInputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The upper limit threshold on input power. If + optIfOChSinkCurrentInputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChSinkCurrentEntry 6 } + +-- OCh sink interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOChSinkIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OCh sink performance monitoring + information." + ::= { optIfOCh 3 } + +optIfOChSinkIntervalEntry OBJECT-TYPE + SYNTAX OptIfOChSinkIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh sink performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOChSinkIntervalNumber } + ::= { optIfOChSinkIntervalTable 1 } + +OptIfOChSinkIntervalEntry ::= + SEQUENCE { + optIfOChSinkIntervalNumber OptIfIntervalNumber, + optIfOChSinkIntervalSuspectedFlag TruthValue, + optIfOChSinkIntervalLastInputPower Integer32, + optIfOChSinkIntervalLowInputPower Integer32, + optIfOChSinkIntervalHighInputPower Integer32 + } + +optIfOChSinkIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOChSinkIntervalEntry 1 } + +optIfOChSinkIntervalSuspectedFlag OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSinkIntervalEntry 2 } + +optIfOChSinkIntervalLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + interval." + ::= { optIfOChSinkIntervalEntry 3 } + +optIfOChSinkIntervalLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + interval." + ::= { optIfOChSinkIntervalEntry 4 } + +optIfOChSinkIntervalHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + interval." + ::= { optIfOChSinkIntervalEntry 5 } + +-- OCh sink current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOChSinkCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh sink performance monitoring information for + the current 24-hour interval." + + + + ::= { optIfOCh 4 } + +optIfOChSinkCurDayEntry OBJECT-TYPE + SYNTAX OptIfOChSinkCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh sink performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChSinkCurDayTable 1 } + +OptIfOChSinkCurDayEntry ::= + SEQUENCE { + optIfOChSinkCurDaySuspectedFlag TruthValue, + optIfOChSinkCurDayLowInputPower Integer32, + optIfOChSinkCurDayHighInputPower Integer32 + } + +optIfOChSinkCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSinkCurDayEntry 1 } + +optIfOChSinkCurDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOChSinkCurDayEntry 2 } + +optIfOChSinkCurDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + current 24-hour interval." + ::= { optIfOChSinkCurDayEntry 3 } + + + + +-- OCh sink previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOChSinkPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh sink performance monitoring information for + the previous 24-hour interval." + ::= { optIfOCh 5 } + +optIfOChSinkPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOChSinkPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh sink performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChSinkPrevDayTable 1 } + +OptIfOChSinkPrevDayEntry ::= + SEQUENCE { + optIfOChSinkPrevDaySuspectedFlag TruthValue, + optIfOChSinkPrevDayLastInputPower Integer32, + optIfOChSinkPrevDayLowInputPower Integer32, + optIfOChSinkPrevDayHighInputPower Integer32 + } + +optIfOChSinkPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSinkPrevDayEntry 1 } + +optIfOChSinkPrevDayLastInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the input during the + previous 24-hour interval." + + + + ::= { optIfOChSinkPrevDayEntry 2 } + +optIfOChSinkPrevDayLowInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOChSinkPrevDayEntry 3 } + +optIfOChSinkPrevDayHighInputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the input during the + previous 24-hour interval." + ::= { optIfOChSinkPrevDayEntry 4 } + +-- OCh source current table +-- Contains data for the current 15-minute performance monitoring +-- interval. + +optIfOChSrcCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh source performance monitoring information for + the current 15-minute interval." + ::= { optIfOCh 6 } + +optIfOChSrcCurrentEntry OBJECT-TYPE + SYNTAX OptIfOChSrcCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh source performance + monitoring information of an interface for the current + 15-minute interval." + INDEX { ifIndex } + ::= { optIfOChSrcCurrentTable 1 } + +OptIfOChSrcCurrentEntry ::= + SEQUENCE { + + + + optIfOChSrcCurrentSuspectedFlag TruthValue, + optIfOChSrcCurrentOutputPower Integer32, + optIfOChSrcCurrentLowOutputPower Integer32, + optIfOChSrcCurrentHighOutputPower Integer32, + optIfOChSrcCurrentLowerOutputPowerThreshold Integer32, + optIfOChSrcCurrentUpperOutputPowerThreshold Integer32 + } + +optIfOChSrcCurrentSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSrcCurrentEntry 1 } + +optIfOChSrcCurrentOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The optical power monitored at the output." + ::= { optIfOChSrcCurrentEntry 2 } + +optIfOChSrcCurrentLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOChSrcCurrentEntry 3 } + +optIfOChSrcCurrentHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 15-minute interval." + ::= { optIfOChSrcCurrentEntry 4 } + +optIfOChSrcCurrentLowerOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The lower limit threshold on output power. If + optIfOChSrcCurrentOutputPower drops to this value or below, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChSrcCurrentEntry 5 } + +optIfOChSrcCurrentUpperOutputPowerThreshold OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The upper limit threshold on output power. If + optIfOChSrcCurrentOutputPower reaches or exceeds this value, + a Threshold Crossing Alert (TCA) should be sent." + ::= { optIfOChSrcCurrentEntry 6 } + +-- OCh source interval table +-- Contains data for previous 15-minute performance monitoring +-- intervals. + +optIfOChSrcIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of historical OCh source performance monitoring + information." + ::= { optIfOCh 7 } + +optIfOChSrcIntervalEntry OBJECT-TYPE + SYNTAX OptIfOChSrcIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh source performance + monitoring information of an interface during a particular + historical interval." + INDEX { ifIndex, optIfOChSrcIntervalNumber } + ::= { optIfOChSrcIntervalTable 1 } + +OptIfOChSrcIntervalEntry ::= + SEQUENCE { + optIfOChSrcIntervalNumber OptIfIntervalNumber, + optIfOChSrcIntervalSuspectedFlag TruthValue, + optIfOChSrcIntervalLastOutputPower Integer32, + + + + optIfOChSrcIntervalLowOutputPower Integer32, + optIfOChSrcIntervalHighOutputPower Integer32 + } + +optIfOChSrcIntervalNumber OBJECT-TYPE + SYNTAX OptIfIntervalNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Uniquely identifies the interval." + ::= { optIfOChSrcIntervalEntry 1 } + +optIfOChSrcIntervalSuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSrcIntervalEntry 2 } + +optIfOChSrcIntervalLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + interval." + ::= { optIfOChSrcIntervalEntry 3 } + +optIfOChSrcIntervalLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + interval." + ::= { optIfOChSrcIntervalEntry 4 } + +optIfOChSrcIntervalHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + interval." + + + + ::= { optIfOChSrcIntervalEntry 5 } + +-- OCh source current day table +-- Contains data for the current 24-hour performance +-- monitoring interval. + +optIfOChSrcCurDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh source performance monitoring information for + the current 24-hour interval." + ::= { optIfOCh 8 } + +optIfOChSrcCurDayEntry OBJECT-TYPE + SYNTAX OptIfOChSrcCurDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh source performance + monitoring information of an interface for the current + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChSrcCurDayTable 1 } + +OptIfOChSrcCurDayEntry ::= + SEQUENCE { + optIfOChSrcCurDaySuspectedFlag TruthValue, + optIfOChSrcCurDayLowOutputPower Integer32, + optIfOChSrcCurDayHighOutputPower Integer32 + } + +optIfOChSrcCurDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSrcCurDayEntry 1 } + +optIfOChSrcCurDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + + + + current 24-hour interval." + ::= { optIfOChSrcCurDayEntry 2 } + +optIfOChSrcCurDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + current 24-hour interval." + ::= { optIfOChSrcCurDayEntry 3 } + +-- OCh source previous day table +-- Contains data for the previous 24-hour performance +-- monitoring interval. + +optIfOChSrcPrevDayTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOChSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OCh source performance monitoring information for + the previous 24-hour interval." + ::= { optIfOCh 9 } + +optIfOChSrcPrevDayEntry OBJECT-TYPE + SYNTAX OptIfOChSrcPrevDayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OCh source performance + monitoring information of an interface for the previous + 24-hour interval." + INDEX { ifIndex } + ::= { optIfOChSrcPrevDayTable 1 } + +OptIfOChSrcPrevDayEntry ::= + SEQUENCE { + optIfOChSrcPrevDaySuspectedFlag TruthValue, + optIfOChSrcPrevDayLastOutputPower Integer32, + optIfOChSrcPrevDayLowOutputPower Integer32, + optIfOChSrcPrevDayHighOutputPower Integer32 + } + +optIfOChSrcPrevDaySuspectedFlag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If true, the data in this entry may be unreliable." + ::= { optIfOChSrcPrevDayEntry 1 } + +optIfOChSrcPrevDayLastOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChSrcPrevDayEntry 2 } + +optIfOChSrcPrevDayLowOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChSrcPrevDayEntry 3 } + +optIfOChSrcPrevDayHighOutputPower OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 dbm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest optical power monitored at the output during the + previous 24-hour interval." + ::= { optIfOChSrcPrevDayEntry 4 } + +-- the optIfOTUk group +-- This group handles the configuration +-- information for OTUk layers. + +-- OTUk config table + +optIfOTUkConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfOTUkConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of OTUk configuration information." + ::= { optIfOTUk 1 } + + + +optIfOTUkConfigEntry OBJECT-TYPE + SYNTAX OptIfOTUkConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains OTUk configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfOTUkConfigTable 1 } + +OptIfOTUkConfigEntry ::= + SEQUENCE { + optIfOTUkDirectionality OptIfDirectionality, + optIfOTUkBitRateK OptIfBitRateK, + optIfOTUkTraceIdentifierTransmitted OptIfTxTI, + optIfOTUkDAPIExpected OptIfExDAPI, + optIfOTUkSAPIExpected OptIfExSAPI, + optIfOTUkTraceIdentifierAccepted OptIfAcTI, + optIfOTUkTIMDetMode OptIfTIMDetMode, + optIfOTUkTIMActEnabled TruthValue, + optIfOTUkDEGThr OptIfDEGThr, + optIfOTUkDEGM OptIfDEGM, + optIfOTUkSinkAdaptActive TruthValue, + optIfOTUkSourceAdaptActive TruthValue, + optIfOTUkSinkFECEnabled TruthValue, + optIfOTUkCurrentStatus BITS + } + +optIfOTUkDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfOTUkConfigEntry 1 } + +optIfOTUkBitRateK OBJECT-TYPE + SYNTAX OptIfBitRateK + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the bit rate of the entity." + ::= { optIfOTUkConfigEntry 2 } + +optIfOTUkTraceIdentifierTransmitted OBJECT-TYPE + SYNTAX OptIfTxTI + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The trace identifier transmitted. + This object is applicable when optIfOTUkDirectionality + has the value source(2) or bidirectional(3). It must not + be instantiated in rows where optIfOTUkDirectionality + has the value sink(1). + If no value is ever set by a management entity for this + object, system-specific default value will be used. + Any implementation that instantiates this object must + document the system-specific default value or how it + is derived." + ::= { optIfOTUkConfigEntry 3 } + +optIfOTUkDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + This object has no effect when optIfOTUkTIMDetMode has + the value off(1)." + ::= { optIfOTUkConfigEntry 4 } + +optIfOTUkSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + This object has no effect when optIfOTUkTIMDetMode has + the value off(1)." + ::= { optIfOTUkConfigEntry 5 } + +optIfOTUkTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. + This object is only applicable to the sink function, i.e., + + + + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The value of this object is unspecified when + optIfOTUkCurrentStatus indicates a near-end defect + (i.e., ssf(3), lof(4), ais(5), lom(6)) that prevents + extraction of the trace message." + ::= { optIfOTUkConfigEntry 6 } + +optIfOTUkTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is off(1)." + ::= { optIfOTUkConfigEntry 7 } + +optIfOTUkTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + This object has no effect when optIfOTUkTIMDetMode has + the value off(1). + The default value of this object is false(2)." + ::= { optIfOTUkConfigEntry 8 } + +optIfOTUkDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + + + + greater than or equal to optIfOTUkDEGThr. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is Severely Errored Second + (SES) Estimator (See ITU-T G.7710)." + ::= { optIfOTUkConfigEntry 9 } + +optIfOTUkDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfOTUkDEGM + consecutive bad PM Seconds are detected. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is 7 (See ITU-T G.7710)." + ::= { optIfOTUkConfigEntry 10 } + +optIfOTUkSinkAdaptActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the sink adaptation function is activated or + not. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is false(2)." + ::= { optIfOTUkConfigEntry 11 } + +optIfOTUkSourceAdaptActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the source adaptation function is activated or + not. + This object is only applicable to the source function, i.e., + only when optIfOTUkDirectionality has the value source(2) + or bidirectional(3). It must not be instantiated in rows + + + + where optIfOTUkDirectionality has the value sink(1). + The default value of this object is false(2)." + ::= { optIfOTUkConfigEntry 12 } + +optIfOTUkSinkFECEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If Forward Error Correction (FEC) is supported, this object + indicates whether FEC at the OTUk sink adaptation function is + enabled or not. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2). + The default value of this object is true(1)." + ::= { optIfOTUkConfigEntry 13 } + +optIfOTUkCurrentStatus OBJECT-TYPE + SYNTAX BITS { + tim(0), + deg(1), + bdi(2), + ssf(3), + lof(4), + ais(5), + lom(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is only applicable to the sink function, i.e., + only when optIfOTUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfOTUkDirectionality has the value source(2)." + ::= { optIfOTUkConfigEntry 14 } + +-- GCC0 config table + +optIfGCC0ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfGCC0ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of GCC0 configuration information." + ::= { optIfOTUk 2 } + + + +optIfGCC0ConfigEntry OBJECT-TYPE + SYNTAX OptIfGCC0ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains GCC0 configuration + information of an interface. Each instance must + correspond to an instance of optIfOTUkConfigEntry. + Separate source and/or sink instances may exist + for a given ifIndex value, or a single bidirectional + instance may exist, but a bidirectional instance may + not coexist with a source or sink instance. + Instances of this conceptual row persist across + agent restarts." + INDEX { ifIndex, optIfGCC0Directionality } + ::= { optIfGCC0ConfigTable 1 } + +OptIfGCC0ConfigEntry ::= + SEQUENCE { + optIfGCC0Directionality OptIfDirectionality, + optIfGCC0Application SnmpAdminString, + optIfGCC0RowStatus RowStatus + } + +optIfGCC0Directionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the directionality of the entity. + The values source(2) and bidirectional(3) are + not allowed if the corresponding instance of + optIfOTUkDirectionality has the value sink(1). + The values sink(1) and bidirectional(3) are + not allowed if the corresponding instance of + optIfOTUkDirectionality has the value source(2)." + ::= { optIfGCC0ConfigEntry 1 } + +optIfGCC0Application OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the application transported by the GCC0 entity. + Example applications are ECC, User data channel. + + The value of this object may not be changed when + optIfGCC0RowStatus has the value active(1)." + + + + ::= { optIfGCC0ConfigEntry 2 } + +optIfGCC0RowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting a + conceptual row of the optIfGCC0 config table. + It is used to model the addGCC0Access and removeGCC0Access + operations of an OTUk_TTP for GCC0 access control as defined + in G.874.1. Setting RowStatus to createAndGo or createAndWait + implies addGCC0Access. Setting RowStatus to destroy implies + removeGCC0Access." + ::= { optIfGCC0ConfigEntry 3 } + +-- the optIfODUk group +-- This group handles the configuration information +-- for the ODUk layers. + +-- ODUk config table + +optIfODUkConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUk configuration information." + ::= { optIfODUk 1 } + +optIfODUkConfigEntry OBJECT-TYPE + SYNTAX OptIfODUkConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUk configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfODUkConfigTable 1 } + +OptIfODUkConfigEntry ::= + SEQUENCE { + optIfODUkDirectionality OptIfDirectionality, + optIfODUkBitRateK OptIfBitRateK, + optIfODUkTcmFieldsInUse BITS, + optIfODUkPositionSeqCurrentSize Unsigned32, + optIfODUkTtpPresent TruthValue + } + + + +optIfODUkDirectionality OBJECT-TYPE + SYNTAX OptIfDirectionality + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the directionality of the entity." + ::= { optIfODUkConfigEntry 1 } + +optIfODUkBitRateK OBJECT-TYPE + SYNTAX OptIfBitRateK + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the bit rate of the entity." + ::= { optIfODUkConfigEntry 2 } + +optIfODUkTcmFieldsInUse OBJECT-TYPE + SYNTAX BITS { + tcmField1(0), + tcmField2(1), + tcmField3(2), + tcmField4(3), + tcmField5(4), + tcmField6(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the TCM field(s) that are currently in use. + The positions of the bits correspond to the TCM fields. + A bit that is set to 1 means that the corresponding TCM + field is used. This object will be updated when rows are + created in or deleted from the optIfODUkTConfigTable, or + the optIfODUkTNimConfigTable." + ::= { optIfODUkConfigEntry 3 } + +optIfODUkPositionSeqCurrentSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the current size of the position + sequence (i.e., number of TCM function and/or GCC12 + access that have been created in the ODUk interface). + When the value of this variable is greater than zero, + it means that one or more TCM function and/or GCC12 + access have been created in the ODUk interface. In this + case, there will be as many rows in the + + + + optIfODUkPositionSeqTable as the value of + optIfODUkPositionSeqCurrentSize corresponding to this + ODUk interface, one row for each TCM function or GCC12 + access. The position of the TCM function and/or + GCC12 access within the sequence is indicated by the + optIfODUkPositionSeqPosition variable in + optIfODUkPositionSeqTable. + The optIfODUkPositionSeqTable also provides pointers + to the corresponding TCM function (optIfODUkT) and + GCC12 access (optIfGCC12) entities." + ::= { optIfODUkConfigEntry 4 } + +optIfODUkTtpPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value true(1) if the ifEntry under which + it is instantiated contains an ODUk Trail Termination Point, + i.e., is the endpoint of an ODUk path. In that case there + will be a corresponding row in the ODUk TTP config table and + it will not be possible to create corresponding rows in the + ODUk NIM config table. This object has the value false(2) + if the ifEntry under which it is instantiated contains an + intermediate ODUk Connection Termination Point. In that case + there is no corresponding row in the ODUk TTP config table, + but it will be possible to create corresponding rows in the + ODUk NIM config table. This object also affects the allowable + options in rows created in the GCC12 config table and in the + ODUkT config table, as specified in the DESCRIPTION clauses + of the columns in those tables." + ::= { optIfODUkConfigEntry 5 } + +-- ODUk Trail Termination Point (TTP) config table + +optIfODUkTtpConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkTtpConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUk TTP configuration information." + ::= { optIfODUk 2 } + +optIfODUkTtpConfigEntry OBJECT-TYPE + SYNTAX OptIfODUkTtpConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "A conceptual row that contains ODUk TTP configuration + information of an interface." + INDEX { ifIndex } + ::= { optIfODUkTtpConfigTable 1 } + +OptIfODUkTtpConfigEntry ::= + SEQUENCE { + optIfODUkTtpTraceIdentifierTransmitted OptIfTxTI, + optIfODUkTtpDAPIExpected OptIfExDAPI, + optIfODUkTtpSAPIExpected OptIfExSAPI, + optIfODUkTtpTraceIdentifierAccepted OptIfAcTI, + optIfODUkTtpTIMDetMode OptIfTIMDetMode, + optIfODUkTtpTIMActEnabled TruthValue, + optIfODUkTtpDEGThr OptIfDEGThr, + optIfODUkTtpDEGM OptIfDEGM, + optIfODUkTtpCurrentStatus BITS + } + +optIfODUkTtpTraceIdentifierTransmitted OBJECT-TYPE + SYNTAX OptIfTxTI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The trace identifier transmitted. + This object is applicable when optIfODUkDirectionality + has the value source(2) or bidirectional(3). It must not + be instantiated in rows where optIfODUkDirectionality + has the value sink(1). + If no value is ever set by a management entity for this + object, system-specific default value will be used. + Any implementation that instantiates this object must + document the system-specific default value or how it + is derived." + ::= { optIfODUkTtpConfigEntry 1 } + +optIfODUkTtpDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + This object has no effect when optIfODUkTtpTIMDetMode has + the value off(1)." + ::= { optIfODUkTtpConfigEntry 2 } + + + +optIfODUkTtpSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + This object has no effect when optIfODUkTtpTIMDetMode has + the value off(1)." + ::= { optIfODUkTtpConfigEntry 3 } + +optIfODUkTtpTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + The value of this object is unspecified when + optIfODUkTtpCurrentStatus indicates a near-end defect + (i.e., oci(0), lck(1), ssf(5)) that prevents extraction + of the trace message." + ::= { optIfODUkTtpConfigEntry 4 } + +optIfODUkTtpTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + The default value of this object is off(1)." + ::= { optIfODUkTtpConfigEntry 5 } + +optIfODUkTtpTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + This object has no effect when optIfODUkTtpTIMDetMode has + the value off(1). + The default value of this object is false(2)." + ::= { optIfODUkTtpConfigEntry 6 } + +optIfODUkTtpDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + greater than or equal to optIfODUkDEGThr. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + The default value of this object is Severely Errored Second + (SES) Estimator (See ITU-T G.7710)." + ::= { optIfODUkTtpConfigEntry 7 } + +optIfODUkTtpDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfODUkDEGM + consecutive bad PM Seconds are detected. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2). + The default value of this object is 7 (See ITU-T G.7710)." + ::= { optIfODUkTtpConfigEntry 8 } + +optIfODUkTtpCurrentStatus OBJECT-TYPE + SYNTAX BITS { + oci(0), + + + + lck(1), + tim(2), + deg(3), + bdi(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is only applicable to the sink function, i.e., + only when optIfODUkDirectionality has the value sink(1) + or bidirectional(3). It must not be instantiated in rows + where optIfODUkDirectionality has the value source(2)." + ::= { optIfODUkTtpConfigEntry 9 } + +-- ODUk Position Sequence table + +optIfODUkPositionSeqTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkPositionSeqEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUk Position Sequence information." + ::= { optIfODUk 3 } + +optIfODUkPositionSeqEntry OBJECT-TYPE + SYNTAX OptIfODUkPositionSeqEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUk position sequence + information of an ODUk interface. The ODUk interface + is identified by the ifIndex. Associated with each + ODUk interface there may be one of more conceptual + rows in the optIfODUkPositionSeqTable. Each row + represents a TCM or GCC12 access function within the + associated ODUk interface. Rows of the + optIfODUkPositionSeqTable table are created/deleted + as the result of the creation/deletion of the optIfODUkT + or optIfGCC12 entities." + INDEX { ifIndex, optIfODUkPositionSeqIndex } + ::= { optIfODUkPositionSeqTable 1 } + +OptIfODUkPositionSeqEntry ::= + SEQUENCE { + optIfODUkPositionSeqIndex Unsigned32, + optIfODUkPositionSeqPosition Unsigned32, + + + + optIfODUkPositionSeqPointer RowPointer + } + +optIfODUkPositionSeqIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable identifies a row in the + optIfODUkPositionSeqTable Table. + Each row of the optIfODUkPositionSeqTable Table + represents a TCM or GCC12 access function within the + associated ODUk interface." + ::= { optIfODUkPositionSeqEntry 1 } + +optIfODUkPositionSeqPosition OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the position of the TCM or + GCC12 access function within the sequence of TCMs & + GCC12 access functions of the associated ODUk + interface. The TCM or GCC12 presented by this row is + referenced by the optIfODUkPositionSeqPointer variable." + ::= { optIfODUkPositionSeqEntry 2 } + +optIfODUkPositionSeqPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable identifies the TCM or GCC12 access function + by pointing to the corresponding optIfODUkT or optIfGCC12 + entity." + ::= { optIfODUkPositionSeqEntry 3 } + +-- ODUk Non-intrusive monitoring (Nim) config table + +optIfODUkNimConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkNimConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUkNim configuration information." + ::= { optIfODUk 4 } + +optIfODUkNimConfigEntry OBJECT-TYPE + + + + SYNTAX OptIfODUkNimConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUkNim configuration + information of an interface. Each instance must + correspond to an instance of optIfODUkConfigEntry + for which optIfODUkTtpPresent has the value false(2). + + Instances of this conceptual row persist across + agent restarts, and read-create columns other + than the status column may be modified while the + row is active." + INDEX { ifIndex, optIfODUkNimDirectionality } + ::= { optIfODUkNimConfigTable 1 } + +OptIfODUkNimConfigEntry ::= + SEQUENCE { + optIfODUkNimDirectionality OptIfSinkOrSource, + optIfODUkNimDAPIExpected OptIfExDAPI, + optIfODUkNimSAPIExpected OptIfExSAPI, + optIfODUkNimTraceIdentifierAccepted OptIfAcTI, + optIfODUkNimTIMDetMode OptIfTIMDetMode, + optIfODUkNimTIMActEnabled TruthValue, + optIfODUkNimDEGThr OptIfDEGThr, + optIfODUkNimDEGM OptIfDEGM, + optIfODUkNimCurrentStatus BITS, + optIfODUkNimRowStatus RowStatus + } + +optIfODUkNimDirectionality OBJECT-TYPE + SYNTAX OptIfSinkOrSource + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the monitor point for the ODUk Path non-intrusive + monitoring function. The value source(2) is not allowed + if the corresponding instance of optIfODUkDirectionality + has the value sink(1), and the value sink(1) is not allowed + if the corresponding instance of optIfODUkDirectionality + has the value source(2). Either the value sink(1) or + source(2) is allowed if the corresponding instance of + optIfODUkDirectionality has the value bidirectional(3). + + The value sink(1) means monitoring at the sink direction + path signal of the ODUk CTP. + + The value source(2) means monitoring at the source direction + + + + path signal of the ODUk CTP. Monitoring the source direction + of an ODUk CTP is necessary in those cases where the ODUk CTP + is at an SNCP (Subnetwork Connection Protection) end (e.g., see + Figure I.1.2/G.874.1). If one would like to get the performance + of the protected connection, one cannot use the NIM function + at both ODUk CTP sinks (before the matrix), instead one should + monitor the signal at the source ODUk CTP after the matrix." + ::= { optIfODUkNimConfigEntry 1 } + +optIfODUkNimDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object has no effect if optIfODUkNimTIMDetMode has + the value off(1) or sapi(3)." + ::= { optIfODUkNimConfigEntry 2 } + +optIfODUkNimSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object has no effect if optIfODUkNimTIMDetMode has + the value off(1) or dapi(2)." + ::= { optIfODUkNimConfigEntry 3 } + +optIfODUkNimTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. The value of + this object is unspecified if optIfODUkNimCurrentStatus + has any of the bit positions oci(0), lck(1), or ssf(5) + set or if optIfODUkNimRowStatus has any value other + than active(1)." + ::= { optIfODUkNimConfigEntry 4 } + +optIfODUkNimTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function." + + + + ::= { optIfODUkNimConfigEntry 5 } + +optIfODUkNimTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled." + ::= { optIfODUkNimConfigEntry 6 } + +optIfODUkNimDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad + if the percentage of detected errored blocks in that second is + greater than or equal to optIfODUkNimDEGThr." + ::= { optIfODUkNimConfigEntry 7 } + +optIfODUkNimDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfODUkNimDEGM + consecutive bad PM Seconds are detected." + ::= { optIfODUkNimConfigEntry 8 } + +optIfODUkNimCurrentStatus OBJECT-TYPE + SYNTAX BITS { + oci(0), + lck(1), + tim(2), + deg(3), + bdi(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if + any. The value of this object is unspecified if + optIfODUkNimRowStatus has any value other than + + + + active(1)." + ::= { optIfODUkNimConfigEntry 9 } + +optIfODUkNimRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting + a conceptual row of the optIfODUkNim config table. + It is used to model the activateNim and deactivateNim + operations of an OTUk_CTP for non-intrusive monitoring + control as defined in G.874.1. Setting RowStatus to + createAndGo or createAndWait implies activateNim. + Setting RowStatus to destroy implies deactivateNim." + ::= { optIfODUkNimConfigEntry 10 } + +-- GCC12 config table + +optIfGCC12ConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfGCC12ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of GCC12 configuration information. + The GCC function processes the GCC overhead bytes passing + through them but leave the remainder of the ODUk overhead + and payload data alone." + ::= { optIfODUk 5 } + +optIfGCC12ConfigEntry OBJECT-TYPE + SYNTAX OptIfGCC12ConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains GCC12 configuration + information of an interface. Each instance must + correspond to an instance of optIfODUkConfigEntry. + Separate instances providing GCC1-only access and + GCC2-only access may exist for a given ifIndex value, + or a single instance providing GCC1 + GCC2 may exist, + but a GCC1 + GCC2 instance may not coexist with a + GCC1-only or GCC2-only instance. + + Instances of this conceptual row persist across agent + restarts." + INDEX { ifIndex, optIfGCC12Codirectional, optIfGCC12GCCAccess } + ::= { optIfGCC12ConfigTable 1 } + + + +OptIfGCC12ConfigEntry ::= + SEQUENCE { + optIfGCC12Codirectional TruthValue, + optIfGCC12GCCAccess INTEGER, + optIfGCC12GCCPassThrough TruthValue, + optIfGCC12Application SnmpAdminString, + optIfGCC12RowStatus RowStatus + } + +optIfGCC12Codirectional OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the directionality of the GCC12 termination with + respect to the associated ODUk CTP. The value true(1) means + that the sink part of the GCC12 extracts COMMS data from the + signal at the input to the ODUk CTP sink and the source part + of the GCC12 inserts COMMS data into the signal at the output + of the ODUk CTP source. The value false(2) means that the + sink part of the GCC12 extracts COMMS data from the signal at + the output of the ODUk CTP source and the source part of the + GCC12 inserts COMMS data into the signal at the input of the + ODUk CTP sink. This attribute may assume either value when + the corresponding instance of optIfODUkTtpPresent has the + value false(2). When the value of the corresponding instance + of optIfODUkTtpPresent is true(1) then the only value allowed + for this attribute is true(1)." + ::= { optIfGCC12ConfigEntry 1 } + +optIfGCC12GCCAccess OBJECT-TYPE + SYNTAX INTEGER { + gcc1 (1), + gcc2 (2), + gcc1and2 (3) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the GCC access represented by the entity." + ::= { optIfGCC12ConfigEntry 2 } + +optIfGCC12GCCPassThrough OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls whether the selected GCC overhead bytes are passed + + + + through or modified. The value true(1) means that the selected + GCC overhead bytes are passed through unmodified from the ODUk + CTP input to the ODUk CTP output. The value false(2) means that + the selected GCC overhead bytes are set to zero at the ODUk CTP + output after the extraction of the COMMS data. This object has + no effect if the corresponding instance of optIfODUkTtpPresent + has the value true(1). + + The value of this object may not be changed when + optIfGCC12RowStatus has the value active(1)." + ::= { optIfGCC12ConfigEntry 3 } + +optIfGCC12Application OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the application transported by the GCC12 entity. + Example applications are ECC, User data channel. + + The value of this object may not be changed when + optIfGCC12RowStatus has the value active(1)." + ::= { optIfGCC12ConfigEntry 4 } + +optIfGCC12RowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting + a conceptual row of the optIfGCC12 config table. It is + used to model the addGCC12Access and removeGCC12Access + operations of an ODUk_CTP or ODUk_TTP for GCC12 access + control as defined in G.874.1. Setting RowStatus to + createAndGo or createAndWait implies addGCC12Access. + Setting RowStatus to destroy implies removeGCC12Access. + Successful addition/removal of the GCC12 access function + will result in updating the + optIfODUkPositionSeqCurrentSize variable and the + optIfODUkPositionSeqTable table of the associated + ODUk entry in the optIfODUkConfigTable." + ::= { optIfGCC12ConfigEntry 5 } + +-- the optIfODUkT group +-- This group handles the configuration information +-- for the ODUkT layers. + +-- ODUkT config table + + + +optIfODUkTConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkTConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUkT configuration information." + ::= { optIfODUkT 1 } + +optIfODUkTConfigEntry OBJECT-TYPE + SYNTAX OptIfODUkTConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUkT configuration + information of an interface. Each instance must + correspond to an instance of optIfODUkConfigEntry. + Rows in this table are mutually exclusive with rows + in the ODUkT NIM config table -- in other words, this + row object may not be instantiated for a given pair + of ifIndex and TCM field values if a corresponding + instance of optIfODUkTNimConfigEntry already exists. + + Instances of this conceptual row persist across agent + restarts. Except where noted otherwise, read-create + columns other than the status column may be modified + while the row is active." + INDEX { ifIndex, optIfODUkTTcmField, optIfODUkTCodirectional } + ::= { optIfODUkTConfigTable 1 } + +OptIfODUkTConfigEntry ::= + SEQUENCE { + optIfODUkTTcmField Unsigned32, + optIfODUkTCodirectional TruthValue, + optIfODUkTTraceIdentifierTransmitted OptIfTxTI, + optIfODUkTDAPIExpected OptIfExDAPI, + optIfODUkTSAPIExpected OptIfExSAPI, + optIfODUkTTraceIdentifierAccepted OptIfAcTI, + optIfODUkTTIMDetMode OptIfTIMDetMode, + optIfODUkTTIMActEnabled TruthValue, + optIfODUkTDEGThr OptIfDEGThr, + optIfODUkTDEGM OptIfDEGM, + optIfODUkTSinkMode INTEGER, + optIfODUkTSinkLockSignalAdminState INTEGER, + optIfODUkTSourceLockSignalAdminState INTEGER, + optIfODUkTCurrentStatus BITS, + optIfODUkTRowStatus RowStatus + } + + + + +optIfODUkTTcmField OBJECT-TYPE + SYNTAX Unsigned32 (1..6) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the tandem connection monitoring + field of the ODUk OH. Valid values are + integers from 1 to 6." + ::= { optIfODUkTConfigEntry 1 } + +optIfODUkTCodirectional OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the directionality of the ODUkT termination point with + respect to the associated ODUk CTP. The value true(1) means + that the sink part of the ODUkT TP extracts TCM data from the + signal at the input to the ODUk CTP sink and the source part + of the ODUkT TP inserts TCM data into the signal at the output + of the ODUk CTP source. The value false(2) means that the + sink part of the ODUkT TP extracts TCM data from the signal at + the output of the ODUk CTP source and the source part of the + ODUkT TP inserts TCM data into the signal at the input of the + ODUk CTP sink. This attribute may assume either value when + the corresponding instance of optIfODUkTtpPresent has the + value false(2). When the value of the corresponding instance + of optIfODUkTtpPresent is true(1) then the only value allowed + for this attribute is true(1)." + ::= { optIfODUkTConfigEntry 2 } + +optIfODUkTTraceIdentifierTransmitted OBJECT-TYPE + SYNTAX OptIfTxTI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The trace identifier transmitted. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value false(2), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value true(1). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 3 } + +optIfODUkTDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + This object has no effect when optIfODUkTTIMDetMode has + the value off(1)." + ::= { optIfODUkTConfigEntry 4 } + +optIfODUkTSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + This object has no effect when optIfODUkTTIMDetMode has + the value off(1)." + ::= { optIfODUkTConfigEntry 5 } + +optIfODUkTTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + The value of this object is unspecified when + optIfODUkTCurrentStatus indicates a near-end defect + (i.e., oci(0), lck(1), ssf(5)) that prevents extraction + + + + of the trace message." + ::= { optIfODUkTConfigEntry 6 } + +optIfODUkTTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + The default value of this object is off(1)." + ::= { optIfODUkTConfigEntry 7 } + +optIfODUkTTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + This object has no effect when optIfODUkTTIMDetMode has + the value off(1). + The default value of this object is false(2)." + ::= { optIfODUkTConfigEntry 8 } + +optIfODUkTDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + + + + greater than or equal to optIfODUkTDEGThr. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + The default value of this object is Severely Errored Second + (SES) Estimator (See ITU-T G.7710)." + ::= { optIfODUkTConfigEntry 9 } + +optIfODUkTDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfODUkTDEGM + consecutive bad PM Seconds are detected. + This object is applicable only to the following three cases. + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases. + The default value of this object is 7 (See ITU-T G.7710)." + ::= { optIfODUkTConfigEntry 10 } + +optIfODUkTSinkMode OBJECT-TYPE + SYNTAX INTEGER { + operational (1), + monitor (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable specifies the TCM mode at the entity. + The value operational(1) means that TCM Overhead (TCMOH) + processes (see ITU-T G.798) shall be + performed and consequent actions for AIS, Trail + Signal Fail (TSF), Trail Signal Degraded (TSD) shall be + initiated in case of defects. + The value monitor(2) means that TCMOH processes shall be + performed but consequent actions for AIS, Trail + Server Failure (TSF), Trail Server Degraded (TSD) shall _not_ be + initiated in case of defects. + + + + This object is applicable only when the value of + optIfODUkTtpPresent is false(2) and also either one of the + following three cases holds: + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 11 } + +optIfODUkTSinkLockSignalAdminState OBJECT-TYPE + SYNTAX INTEGER { + locked(1), + normal(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Provides the capability to provision the LOCK signal, which + is one of the ODUk maintenance signals, at the ODUKT sink. When + a Tandem Connection endpoint is set to admin state locked, + it inserts the ODUk-LCK signal in the sink direction. + + This object is applicable only when the value of + optIfODUkTtpPresent is false(2) and also either one of the + following three cases holds: + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 12 } + +optIfODUkTSourceLockSignalAdminState OBJECT-TYPE + SYNTAX INTEGER { + locked(1), + normal(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Provides the capability to provision the LOCK signal, which + is one of the ODUk maintenance signals, at the source. + When a Tandem Connection endpoint is set to admin state + locked, it inserts the ODUk-LCK signal in the source + direction. + + + + This object is applicable only when either one of the + following three cases holds: + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value false(2), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value true(1). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 13 } + +optIfODUkTCurrentStatus OBJECT-TYPE + SYNTAX BITS { + oci(0), + lck(1), + tim(2), + deg(3), + bdi(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + This object is applicable only when either one of the + following three cases holds: + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It must not be instantiated in rows for all other cases." + ::= { optIfODUkTConfigEntry 14 } + +optIfODUkTRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting a + conceptual row of the optIfODUkT config table. + It is used to model the addTCM and removeTCM operations of an + ODUk_CTP or ODUk_TTP for Tandem connection monitoring as defined + in ITU-T G.874.1. + Setting RowStatus to createAndGo or createAndWait implies addTCM. + Setting RowStatus to destroy implies removeTCM. + Successful addition/removal of TCM will result in updating the + optIfODUkTcmFieldsInUse and optIfODUkPositionSeqCurrentSize + variables and the optIfODUkPositionSeqTable table of the + + + + associated ODUk entry in the optIfODUkConfigTable." + ::= { optIfODUkTConfigEntry 15 } + +-- ODUkT Non-intrusive monitoring (Nim) config table + +optIfODUkTNimConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF OptIfODUkTNimConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of ODUkTNim configuration information." + ::= { optIfODUkT 2 } + +optIfODUkTNimConfigEntry OBJECT-TYPE + SYNTAX OptIfODUkTNimConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row that contains ODUkTNim configuration + information of an interface. Each instance must + correspond to an instance of optIfODUkConfigEntry. + Rows in this table are mutually exclusive with rows + in the ODUkT config table -- in other words, this + row object may not be instantiated for a given pair + of ifIndex and TCM field values if a corresponding + instance of optIfODUkTConfigEntry already exists. + + Instances of this conceptual row persist across + agent restarts, and read-create columns other + than the status column may be modified while the + row is active." + INDEX {ifIndex, optIfODUkTNimTcmField, optIfODUkTNimDirectionality} + ::= { optIfODUkTNimConfigTable 1 } + +OptIfODUkTNimConfigEntry ::= + SEQUENCE { + optIfODUkTNimTcmField Unsigned32, + optIfODUkTNimDirectionality OptIfSinkOrSource, + optIfODUkTNimDAPIExpected OptIfExDAPI, + optIfODUkTNimSAPIExpected OptIfExSAPI, + optIfODUkTNimTraceIdentifierAccepted OptIfAcTI, + optIfODUkTNimTIMDetMode OptIfTIMDetMode, + optIfODUkTNimTIMActEnabled TruthValue, + optIfODUkTNimDEGThr OptIfDEGThr, + optIfODUkTNimDEGM OptIfDEGM, + optIfODUkTNimCurrentStatus BITS, + optIfODUkTNimRowStatus RowStatus + } + + + +optIfODUkTNimTcmField OBJECT-TYPE + SYNTAX Unsigned32 (1..6) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the tandem connection monitoring + field of the ODUk OH on which non-intrusive monitoring + is performed. Valid values are + integers from 1 to 6." + ::= { optIfODUkTNimConfigEntry 1 } + +optIfODUkTNimDirectionality OBJECT-TYPE + SYNTAX OptIfSinkOrSource + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the monitor point for the ODUk TCM non-intrusive + monitoring function. The value source(2) is not allowed + if the corresponding instance of optIfODUkDirectionality + has the value sink(1), and the value sink(1) is not allowed + if the corresponding instance of optIfODUkDirectionality + has the value source(2). Either the value sink(1) or + source(2) is allowed if the corresponding instance of + optIfODUkDirectionality has the value bidirectional(3). + The value sink(1) means monitoring at the sink direction + TCM signal of the ODUk CTP. + The value source(2) means monitoring at the source direction + path signal of the ODUk CTP." + ::= { optIfODUkTNimConfigEntry 2 } + +optIfODUkTNimDAPIExpected OBJECT-TYPE + SYNTAX OptIfExDAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The DAPI expected by the receiver. + This object has no effect if optIfODUkTNimTIMDetMode has + the value off(1) or sapi(3)." + ::= { optIfODUkTNimConfigEntry 3 } + +optIfODUkTNimSAPIExpected OBJECT-TYPE + SYNTAX OptIfExSAPI + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The SAPI expected by the receiver. + This object has no effect if optIfODUkTNimTIMDetMode has + the value off(1) or dapi(2)." + + + + ::= { optIfODUkTNimConfigEntry 4 } + +optIfODUkTNimTraceIdentifierAccepted OBJECT-TYPE + SYNTAX OptIfAcTI + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual trace identifier accepted. The value of + this object is unspecified if optIfODUkTNimCurrentStatus + has any of the bit positions oci(0), lck(1), or ssf(5) + set or if optIfODUkTNimRowStatus has any value other + than active(1)." + ::= { optIfODUkTNimConfigEntry 5 } + +optIfODUkTNimTIMDetMode OBJECT-TYPE + SYNTAX OptIfTIMDetMode + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the mode of the Trace Identifier Mismatch (TIM) + Detection function." + ::= { optIfODUkTNimConfigEntry 6 } + +optIfODUkTNimTIMActEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether the Trace Identifier Mismatch (TIM) + Consequent Action function is enabled." + ::= { optIfODUkTNimConfigEntry 7 } + +optIfODUkTNimDEGThr OBJECT-TYPE + SYNTAX OptIfDEGThr + UNITS "percentage" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the threshold level for declaring a performance + monitoring (PM) Second to be bad. A PM Second is declared bad if + the percentage of detected errored blocks in that second is + greater than or equal to optIfODUkTNimDEGThr." + ::= { optIfODUkTNimConfigEntry 8 } + +optIfODUkTNimDEGM OBJECT-TYPE + SYNTAX OptIfDEGM + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "Indicates the threshold level for declaring a Degraded Signal + defect (dDEG). A dDEG shall be declared if optIfODUkTNimDEGM + consecutive bad PM Seconds are detected." + ::= { optIfODUkTNimConfigEntry 9 } + +optIfODUkTNimCurrentStatus OBJECT-TYPE + SYNTAX BITS { + oci(0), + lck(1), + tim(2), + deg(3), + bdi(4), + ssf(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the defect condition of the entity, if any. + The value of this object is unspecified if + optIfODUkTNimRowStatus has any value other than + active(1)." + ::= { optIfODUkTNimConfigEntry 10 } + +optIfODUkTNimRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This columnar object is used for creating and deleting a + conceptual row of the optIfODUkTNim config table. + It is used to model the addTCM and removeTCM operations of an + ODUk_CTP or ODUk_TTP for non-intrusive Tandem connection + monitoring as defined in ITU-T G.874.1. + Setting RowStatus to createAndGo or createAndWait implies addTCM. + Setting RowStatus to destroy implies removeTCM. + Successful addition/removal of Nim TCM will result in updating + the optIfODUkPositionSeqCurrentSize variable and the + optIfODUkPositionSeqTable table of the associated ODUk entry + in the optIfODUkConfigTable." + ::= { optIfODUkTNimConfigEntry 11 } + +-- units of conformance + +optIfOTMnGroup OBJECT-GROUP + OBJECTS { + optIfOTMnOrder, + optIfOTMnReduced, + + + + optIfOTMnBitRates, + optIfOTMnInterfaceType, + optIfOTMnTcmMax, + optIfOTMnOpticalReach + } + STATUS current + DESCRIPTION + "A collection of OTMn structure information objects." + ::= { optIfGroups 1 } + +optIfPerfMonGroup OBJECT-GROUP + OBJECTS { + optIfPerfMonCurrentTimeElapsed, + optIfPerfMonCurDayTimeElapsed, + optIfPerfMonIntervalNumIntervals, + optIfPerfMonIntervalNumInvalidIntervals + } + STATUS current + DESCRIPTION + "A collection of performance monitoring interval objects." + ::= { optIfGroups 2 } + +optIfOTSnCommonGroup OBJECT-GROUP + OBJECTS { + optIfOTSnDirectionality + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OTSn interfaces." + ::= { optIfGroups 3 } + +optIfOTSnSourceGroupFull OBJECT-GROUP + OBJECTS { + optIfOTSnTraceIdentifierTransmitted + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to full-functionality/IaDI OTSn + interfaces that support source functions." + ::= { optIfGroups 4 } + +optIfOTSnAPRStatusGroup OBJECT-GROUP + OBJECTS { + optIfOTSnAprStatus + } + STATUS current + + + + DESCRIPTION + "A collection of objects applicable to + OTSn interfaces that support Automatic + Power Reduction functions." + ::= { optIfGroups 5 } + +optIfOTSnAPRControlGroup OBJECT-GROUP + OBJECTS { + optIfOTSnAprControl + } + STATUS current + DESCRIPTION + "A collection of objects applicable to + OTSn interfaces that provide Automatic + Power Reduction control functions." + ::= { optIfGroups 6 } + +optIfOTSnSinkGroupBasic OBJECT-GROUP + OBJECTS { + optIfOTSnCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OTSn interfaces that + support sink functions." + ::= { optIfGroups 7 } + +optIfOTSnSinkGroupFull OBJECT-GROUP + OBJECTS { + optIfOTSnDAPIExpected, + optIfOTSnSAPIExpected, + optIfOTSnTraceIdentifierAccepted, + optIfOTSnTIMDetMode, + optIfOTSnTIMActEnabled + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to full-functionality/IaDI OTSn + interfaces that support sink functions." + ::= { optIfGroups 8 } + +optIfOTSnSinkPreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOTSnSinkCurrentSuspectedFlag, + optIfOTSnSinkCurrentInputPower, + optIfOTSnSinkCurrentLowInputPower, + + + + optIfOTSnSinkCurrentHighInputPower, + optIfOTSnSinkCurrentOutputPower, + optIfOTSnSinkCurrentLowOutputPower, + optIfOTSnSinkCurrentHighOutputPower, + optIfOTSnSinkIntervalSuspectedFlag, + optIfOTSnSinkIntervalLastInputPower, + optIfOTSnSinkIntervalLowInputPower, + optIfOTSnSinkIntervalHighInputPower, + optIfOTSnSinkIntervalLastOutputPower, + optIfOTSnSinkIntervalLowOutputPower, + optIfOTSnSinkIntervalHighOutputPower, + optIfOTSnSinkCurDaySuspectedFlag, + optIfOTSnSinkCurDayLowInputPower, + optIfOTSnSinkCurDayHighInputPower, + optIfOTSnSinkCurDayLowOutputPower, + optIfOTSnSinkCurDayHighOutputPower, + optIfOTSnSinkPrevDaySuspectedFlag, + optIfOTSnSinkPrevDayLastInputPower, + optIfOTSnSinkPrevDayLowInputPower, + optIfOTSnSinkPrevDayHighInputPower, + optIfOTSnSinkPrevDayLastOutputPower, + optIfOTSnSinkPrevDayLowOutputPower, + optIfOTSnSinkPrevDayHighOutputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OTSn interfaces that + support sink functions." + ::= { optIfGroups 9 } + +optIfOTSnSinkPreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOTSnSinkCurrentLowerInputPowerThreshold, + optIfOTSnSinkCurrentUpperInputPowerThreshold, + optIfOTSnSinkCurrentLowerOutputPowerThreshold, + optIfOTSnSinkCurrentUpperOutputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OTSn interfaces + that support sink functions." + ::= { optIfGroups 10 } + +optIfOTSnSourcePreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOTSnSrcCurrentSuspectedFlag, + + + + optIfOTSnSrcCurrentOutputPower, + optIfOTSnSrcCurrentLowOutputPower, + optIfOTSnSrcCurrentHighOutputPower, + optIfOTSnSrcCurrentInputPower, + optIfOTSnSrcCurrentLowInputPower, + optIfOTSnSrcCurrentHighInputPower, + optIfOTSnSrcIntervalSuspectedFlag, + optIfOTSnSrcIntervalLastOutputPower, + optIfOTSnSrcIntervalLowOutputPower, + optIfOTSnSrcIntervalHighOutputPower, + optIfOTSnSrcIntervalLastInputPower, + optIfOTSnSrcIntervalLowInputPower, + optIfOTSnSrcIntervalHighInputPower, + optIfOTSnSrcCurDaySuspectedFlag, + optIfOTSnSrcCurDayLowOutputPower, + optIfOTSnSrcCurDayHighOutputPower, + optIfOTSnSrcCurDayLowInputPower, + optIfOTSnSrcCurDayHighInputPower, + optIfOTSnSrcPrevDaySuspectedFlag, + optIfOTSnSrcPrevDayLastOutputPower, + optIfOTSnSrcPrevDayLowOutputPower, + optIfOTSnSrcPrevDayHighOutputPower, + optIfOTSnSrcPrevDayLastInputPower, + optIfOTSnSrcPrevDayLowInputPower, + optIfOTSnSrcPrevDayHighInputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OTSn interfaces that + support source functions." + ::= { optIfGroups 11 } + +optIfOTSnSourcePreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOTSnSrcCurrentLowerOutputPowerThreshold, + optIfOTSnSrcCurrentUpperOutputPowerThreshold, + optIfOTSnSrcCurrentLowerInputPowerThreshold, + optIfOTSnSrcCurrentUpperInputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OTSn interfaces + that support source functions." + ::= { optIfGroups 12 } + +optIfOMSnCommonGroup OBJECT-GROUP + + + + OBJECTS { + optIfOMSnDirectionality + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OMSn interfaces." + ::= { optIfGroups 13 } + +optIfOMSnSinkGroupBasic OBJECT-GROUP + OBJECTS { + optIfOMSnCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OMSn interfaces that + support sink functions." + ::= { optIfGroups 14 } + +optIfOMSnSinkPreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOMSnSinkCurrentSuspectedFlag, + optIfOMSnSinkCurrentAggregatedInputPower, + optIfOMSnSinkCurrentLowAggregatedInputPower, + optIfOMSnSinkCurrentHighAggregatedInputPower, + optIfOMSnSinkCurrentOutputPower, + optIfOMSnSinkCurrentLowOutputPower, + optIfOMSnSinkCurrentHighOutputPower, + optIfOMSnSinkIntervalSuspectedFlag, + optIfOMSnSinkIntervalLastAggregatedInputPower, + optIfOMSnSinkIntervalLowAggregatedInputPower, + optIfOMSnSinkIntervalHighAggregatedInputPower, + optIfOMSnSinkIntervalLastOutputPower, + optIfOMSnSinkIntervalLowOutputPower, + optIfOMSnSinkIntervalHighOutputPower, + optIfOMSnSinkCurDaySuspectedFlag, + optIfOMSnSinkCurDayLowAggregatedInputPower, + optIfOMSnSinkCurDayHighAggregatedInputPower, + optIfOMSnSinkCurDayLowOutputPower, + optIfOMSnSinkCurDayHighOutputPower, + optIfOMSnSinkPrevDaySuspectedFlag, + optIfOMSnSinkPrevDayLastAggregatedInputPower, + optIfOMSnSinkPrevDayLowAggregatedInputPower, + optIfOMSnSinkPrevDayHighAggregatedInputPower, + optIfOMSnSinkPrevDayLastOutputPower, + optIfOMSnSinkPrevDayLowOutputPower, + optIfOMSnSinkPrevDayHighOutputPower + + + + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OMSn interfaces that + support sink functions." + ::= { optIfGroups 15 } + +optIfOMSnSinkPreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOMSnSinkCurrentLowerInputPowerThreshold, + optIfOMSnSinkCurrentUpperInputPowerThreshold, + optIfOMSnSinkCurrentLowerOutputPowerThreshold, + optIfOMSnSinkCurrentUpperOutputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OMSn interfaces + that support sink functions." + ::= { optIfGroups 16 } + +optIfOMSnSourcePreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOMSnSrcCurrentSuspectedFlag, + optIfOMSnSrcCurrentOutputPower, + optIfOMSnSrcCurrentLowOutputPower, + optIfOMSnSrcCurrentHighOutputPower, + optIfOMSnSrcCurrentAggregatedInputPower, + optIfOMSnSrcCurrentLowAggregatedInputPower, + optIfOMSnSrcCurrentHighAggregatedInputPower, + optIfOMSnSrcIntervalSuspectedFlag, + optIfOMSnSrcIntervalLastOutputPower, + optIfOMSnSrcIntervalLowOutputPower, + optIfOMSnSrcIntervalHighOutputPower, + optIfOMSnSrcIntervalLastAggregatedInputPower, + optIfOMSnSrcIntervalLowAggregatedInputPower, + optIfOMSnSrcIntervalHighAggregatedInputPower, + optIfOMSnSrcCurDaySuspectedFlag, + optIfOMSnSrcCurDayLowOutputPower, + optIfOMSnSrcCurDayHighOutputPower, + optIfOMSnSrcCurDayLowAggregatedInputPower, + optIfOMSnSrcCurDayHighAggregatedInputPower, + optIfOMSnSrcPrevDaySuspectedFlag, + optIfOMSnSrcPrevDayLastOutputPower, + optIfOMSnSrcPrevDayLowOutputPower, + optIfOMSnSrcPrevDayHighOutputPower, + optIfOMSnSrcPrevDayLastAggregatedInputPower, + + + + optIfOMSnSrcPrevDayLowAggregatedInputPower, + optIfOMSnSrcPrevDayHighAggregatedInputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OMSn interfaces that + support source functions." + ::= { optIfGroups 17 } + +optIfOMSnSourcePreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOMSnSrcCurrentLowerOutputPowerThreshold, + optIfOMSnSrcCurrentUpperOutputPowerThreshold, + optIfOMSnSrcCurrentLowerInputPowerThreshold, + optIfOMSnSrcCurrentUpperInputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OMSn interfaces that + that support source functions." + ::= { optIfGroups 18 } + +optIfOChGroupCommonGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupDirectionality + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OChGroup interfaces." + ::= { optIfGroups 19 } + +optIfOChGroupSinkPreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupSinkCurrentSuspectedFlag, + optIfOChGroupSinkCurrentAggregatedInputPower, + optIfOChGroupSinkCurrentLowAggregatedInputPower, + optIfOChGroupSinkCurrentHighAggregatedInputPower, + optIfOChGroupSinkCurrentOutputPower, + optIfOChGroupSinkCurrentLowOutputPower, + optIfOChGroupSinkCurrentHighOutputPower, + optIfOChGroupSinkIntervalSuspectedFlag, + optIfOChGroupSinkIntervalLastAggregatedInputPower, + optIfOChGroupSinkIntervalLowAggregatedInputPower, + optIfOChGroupSinkIntervalHighAggregatedInputPower, + optIfOChGroupSinkIntervalLastOutputPower, + + + + optIfOChGroupSinkIntervalLowOutputPower, + optIfOChGroupSinkIntervalHighOutputPower, + optIfOChGroupSinkCurDaySuspectedFlag, + optIfOChGroupSinkCurDayLowAggregatedInputPower, + optIfOChGroupSinkCurDayHighAggregatedInputPower, + optIfOChGroupSinkCurDayLowOutputPower, + optIfOChGroupSinkCurDayHighOutputPower, + optIfOChGroupSinkPrevDaySuspectedFlag, + optIfOChGroupSinkPrevDayLastAggregatedInputPower, + optIfOChGroupSinkPrevDayLowAggregatedInputPower, + optIfOChGroupSinkPrevDayHighAggregatedInputPower, + optIfOChGroupSinkPrevDayLastOutputPower, + optIfOChGroupSinkPrevDayLowOutputPower, + optIfOChGroupSinkPrevDayHighOutputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OChGroup interfaces that + support sink functions." + ::= { optIfGroups 20 } + +optIfOChGroupSinkPreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupSinkCurrentLowerInputPowerThreshold, + optIfOChGroupSinkCurrentUpperInputPowerThreshold, + optIfOChGroupSinkCurrentLowerOutputPowerThreshold, + optIfOChGroupSinkCurrentUpperOutputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OChGroup interfaces + that support sink functions." + ::= { optIfGroups 21 } + +optIfOChGroupSourcePreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupSrcCurrentSuspectedFlag, + optIfOChGroupSrcCurrentOutputPower, + optIfOChGroupSrcCurrentLowOutputPower, + optIfOChGroupSrcCurrentHighOutputPower, + optIfOChGroupSrcCurrentAggregatedInputPower, + optIfOChGroupSrcCurrentLowAggregatedInputPower, + optIfOChGroupSrcCurrentHighAggregatedInputPower, + optIfOChGroupSrcIntervalSuspectedFlag, + optIfOChGroupSrcIntervalLastOutputPower, + optIfOChGroupSrcIntervalLowOutputPower, + + + + optIfOChGroupSrcIntervalHighOutputPower, + optIfOChGroupSrcIntervalLastAggregatedInputPower, + optIfOChGroupSrcIntervalLowAggregatedInputPower, + optIfOChGroupSrcIntervalHighAggregatedInputPower, + optIfOChGroupSrcCurDaySuspectedFlag, + optIfOChGroupSrcCurDayLowOutputPower, + optIfOChGroupSrcCurDayHighOutputPower, + optIfOChGroupSrcCurDayLowAggregatedInputPower, + optIfOChGroupSrcCurDayHighAggregatedInputPower, + optIfOChGroupSrcPrevDaySuspectedFlag, + optIfOChGroupSrcPrevDayLastOutputPower, + optIfOChGroupSrcPrevDayLowOutputPower, + optIfOChGroupSrcPrevDayHighOutputPower, + optIfOChGroupSrcPrevDayLastAggregatedInputPower, + optIfOChGroupSrcPrevDayLowAggregatedInputPower, + optIfOChGroupSrcPrevDayHighAggregatedInputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OChGroup interfaces that + support source functions." + ::= { optIfGroups 22 } + +optIfOChGroupSourcePreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOChGroupSrcCurrentLowerOutputPowerThreshold, + optIfOChGroupSrcCurrentUpperOutputPowerThreshold, + optIfOChGroupSrcCurrentLowerInputPowerThreshold, + optIfOChGroupSrcCurrentUpperInputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OChGroup interfaces that + that support source functions." + ::= { optIfGroups 23 } + +optIfOChCommonGroup OBJECT-GROUP + OBJECTS { + optIfOChDirectionality + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OCh interfaces." + ::= { optIfGroups 24 } + + + + +optIfOChSinkGroupBasic OBJECT-GROUP + OBJECTS { + optIfOChCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OCh interfaces that + support sink functions." + ::= { optIfGroups 25 } + +optIfOChSinkPreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOChSinkCurrentSuspectedFlag, + optIfOChSinkCurrentInputPower, + optIfOChSinkCurrentLowInputPower, + optIfOChSinkCurrentHighInputPower, + optIfOChSinkIntervalSuspectedFlag, + optIfOChSinkIntervalLastInputPower, + optIfOChSinkIntervalLowInputPower, + optIfOChSinkIntervalHighInputPower, + optIfOChSinkCurDaySuspectedFlag, + optIfOChSinkCurDayLowInputPower, + optIfOChSinkCurDayHighInputPower, + optIfOChSinkPrevDaySuspectedFlag, + optIfOChSinkPrevDayLastInputPower, + optIfOChSinkPrevDayLowInputPower, + optIfOChSinkPrevDayHighInputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OCh interfaces that + support sink functions." + ::= { optIfGroups 26 } + +optIfOChSinkPreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOChSinkCurrentLowerInputPowerThreshold, + optIfOChSinkCurrentUpperInputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OCh interfaces + that support sink functions." + ::= { optIfGroups 27 } + + + + +optIfOChSourcePreOtnPMGroup OBJECT-GROUP + OBJECTS { + optIfOChSrcCurrentSuspectedFlag, + optIfOChSrcCurrentOutputPower, + optIfOChSrcCurrentLowOutputPower, + optIfOChSrcCurrentHighOutputPower, + optIfOChSrcIntervalSuspectedFlag, + optIfOChSrcIntervalLastOutputPower, + optIfOChSrcIntervalLowOutputPower, + optIfOChSrcIntervalHighOutputPower, + optIfOChSrcCurDaySuspectedFlag, + optIfOChSrcCurDayLowOutputPower, + optIfOChSrcCurDayHighOutputPower, + optIfOChSrcPrevDaySuspectedFlag, + optIfOChSrcPrevDayLastOutputPower, + optIfOChSrcPrevDayLowOutputPower, + optIfOChSrcPrevDayHighOutputPower + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + objects applicable to OCh interfaces that + support source functions." + ::= { optIfGroups 28 } + +optIfOChSourcePreOtnPMThresholdGroup OBJECT-GROUP + OBJECTS { + optIfOChSrcCurrentLowerOutputPowerThreshold, + optIfOChSrcCurrentUpperOutputPowerThreshold + } + STATUS current + DESCRIPTION + "A collection of pre-OTN performance monitoring + threshold objects applicable to OCh interfaces + that support source functions." + ::= { optIfGroups 29 } + +optIfOTUkCommonGroup OBJECT-GROUP + OBJECTS { + optIfOTUkDirectionality, + optIfOTUkBitRateK + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all OTUk interfaces." + ::= { optIfGroups 30 } + + + + +optIfOTUkSourceGroup OBJECT-GROUP + OBJECTS { + optIfOTUkTraceIdentifierTransmitted, + optIfOTUkSourceAdaptActive + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to OTUk interfaces that + support source functions." + ::= { optIfGroups 31 } + +optIfOTUkSinkGroup OBJECT-GROUP + OBJECTS { + optIfOTUkDAPIExpected, + optIfOTUkSAPIExpected, + optIfOTUkTraceIdentifierAccepted, + optIfOTUkTIMDetMode, + optIfOTUkTIMActEnabled, + optIfOTUkDEGThr, + optIfOTUkDEGM, + optIfOTUkSinkAdaptActive, + optIfOTUkSinkFECEnabled, + optIfOTUkCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to OTUk interfaces that + support sink functions." + ::= { optIfGroups 32 } + +optIfGCC0Group OBJECT-GROUP + OBJECTS { + optIfGCC0Application, + optIfGCC0RowStatus + } + STATUS current + DESCRIPTION + "A collection of GCC0 configuration objects." + ::= { optIfGroups 33 } + +optIfODUkGroup OBJECT-GROUP + OBJECTS { + optIfODUkDirectionality, + optIfODUkBitRateK, + optIfODUkTcmFieldsInUse, + optIfODUkPositionSeqCurrentSize, + + + + optIfODUkPositionSeqPosition, + optIfODUkPositionSeqPointer, + optIfODUkTtpPresent + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all ODUk interfaces." + ::= { optIfGroups 34 } + +optIfODUkTtpSourceGroup OBJECT-GROUP + OBJECTS { + optIfODUkTtpTraceIdentifierTransmitted + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all interfaces that support + ODUk trail termination source functions." + ::= { optIfGroups 35 } + +optIfODUkTtpSinkGroup OBJECT-GROUP + OBJECTS { + optIfODUkTtpDAPIExpected, + optIfODUkTtpSAPIExpected, + optIfODUkTtpTraceIdentifierAccepted, + optIfODUkTtpTIMDetMode, + optIfODUkTtpTIMActEnabled, + optIfODUkTtpDEGThr, + optIfODUkTtpDEGM, + optIfODUkTtpCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of ODUk configuration objects + applicable to all interfaces that support + ODUk trail termination sink functions." + ::= { optIfGroups 36 } + +optIfODUkNimGroup OBJECT-GROUP + OBJECTS { + optIfODUkNimDAPIExpected, + optIfODUkNimSAPIExpected, + optIfODUkNimTraceIdentifierAccepted, + optIfODUkNimTIMDetMode, + optIfODUkNimTIMActEnabled, + optIfODUkNimDEGThr, + optIfODUkNimDEGM, + + + + optIfODUkNimCurrentStatus, + optIfODUkNimRowStatus + } + STATUS current + DESCRIPTION + "A collection of ODUk Nim configuration objects." + ::= { optIfGroups 37 } + +optIfGCC12Group OBJECT-GROUP + OBJECTS { + optIfGCC12GCCPassThrough, + optIfGCC12Application, + optIfGCC12RowStatus + } + STATUS current + DESCRIPTION + "A collection of GCC12 configuration objects." + ::= { optIfGroups 38 } + +optIfODUkTCommonGroup OBJECT-GROUP + OBJECTS { + optIfODUkTRowStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all ODUkT instances." + ::= { optIfGroups 39 } + +optIfODUkTSourceGroup OBJECT-GROUP + OBJECTS { + optIfODUkTTraceIdentifierTransmitted, + optIfODUkTSourceLockSignalAdminState + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all ODUkT instances + that provide source functions." + ::= { optIfGroups 40 } + +optIfODUkTSinkGroup OBJECT-GROUP + OBJECTS { + optIfODUkTDAPIExpected, + optIfODUkTSAPIExpected, + optIfODUkTTraceIdentifierAccepted, + optIfODUkTTIMDetMode, + optIfODUkTTIMActEnabled, + + + + optIfODUkTDEGThr, + optIfODUkTDEGM, + optIfODUkTCurrentStatus + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to all ODUkT instances + that provide sink functions." + ::= { optIfGroups 41 } + +optIfODUkTSinkGroupCtp OBJECT-GROUP + OBJECTS { + optIfODUkTSinkMode, + optIfODUkTSinkLockSignalAdminState + } + STATUS current + DESCRIPTION + "A collection of configuration objects + applicable to ODUkT instances not + colocated with an ODUk TTP that + provide sink functions." + ::= { optIfGroups 42 } + +optIfODUkTNimGroup OBJECT-GROUP + OBJECTS { + optIfODUkTNimDAPIExpected, + optIfODUkTNimSAPIExpected, + optIfODUkTNimTraceIdentifierAccepted, + optIfODUkTNimTIMDetMode, + optIfODUkTNimTIMActEnabled, + optIfODUkTNimDEGThr, + optIfODUkTNimDEGM, + optIfODUkTNimCurrentStatus, + optIfODUkTNimRowStatus + } + STATUS current + DESCRIPTION + "A collection of ODUkT Nim configuration objects." + ::= { optIfGroups 43 } + +-- compliance specifications + +optIfOtnConfigCompl MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Implementation requirements for the OTN configuration + functions defined in this MIB module." + + + + MODULE -- this module + + MANDATORY-GROUPS { + optIfOTMnGroup, + optIfOTSnCommonGroup + } + + GROUP optIfOTSnSourceGroupFull + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) for which the corresponding + instance of optIfOTSnDirectionality has the value + source(2) or bidirectional(3), the corresponding + instance of optIfOTMnReduced has the value false(2), + and the corresponding instance of optIfOTMnInterfaceType + specifies an OTMn interface type of 'IaDI'." + + GROUP optIfOTSnAPRStatusGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support Automatic Power + Reduction functions." + + GROUP optIfOTSnAPRControlGroup + DESCRIPTION + "This group is optional, but is recommended for interfaces + of ifType opticalTransport(196) that provide Automatic + Power Reduction control functions." + + GROUP optIfOTSnSinkGroupBasic + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) for which the corresponding + instance of optIfOTSnDirectionality has the value + sink(1) or bidirectional(3)." + + GROUP optIfOTSnSinkGroupFull + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) for which the corresponding + instance of optIfOTSnDirectionality has the value + sink(1) or bidirectional(3), the corresponding + instance of optIfOTMnReduced has the value false(2), + and the corresponding instance of optIfOTMnInterfaceType + specifies an OTMn interface type of 'IaDI'." + + GROUP optIfOMSnCommonGroup + DESCRIPTION + + + + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support access to the OMS + overhead information within the OTN Supervisory Channel." + + GROUP optIfOMSnSinkGroupBasic + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support access to the OMS Overhead + information within the OSC (OTN Supervisory Channel) + for which the corresponding + instance of optIfOMSnDirectionality has the value + sink(1) or bidirectional(3)." + + GROUP optIfOChGroupCommonGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannelGroup(219)." + + GROUP optIfOChCommonGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(195)." + + GROUP optIfOChSinkGroupBasic + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) for which the corresponding + instance of optIfOChDirectionality has the value + sink(1) or bidirectional(3)." + + GROUP optIfOTUkCommonGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OTUk layer functions." + + GROUP optIfOTUkSourceGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OTUk layer functions + and for which the corresponding instance of + optIfOTUkDirectionality has the value source(2) or + bidirectional(3)." + + GROUP optIfOTUkSinkGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OTUk layer functions + and for which the corresponding instance of + + + + optIfOTUkDirectionality has the value sink(1) or + bidirectional(3)." + + GROUP optIfGCC0Group + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support GCC0 access functions. + It may be implemented only if the optIfOTUkCommonGroup + is also implemented." + + GROUP optIfODUkGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support ODUk layer functions." + + GROUP optIfODUkTtpSourceGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) for which the corresponding + instance of optIfODUkTtpPresent has the value + true(1) and for which the corresponding instance of + optIfODUkDirectionality has the value source(2) or + bidirectional(3). It may be implemented only if the + optIfODUkGroup is also implemented." + + GROUP optIfODUkTtpSinkGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) for which the corresponding + instance of optIfODUkTtpPresent has the value + true(1) and for which the corresponding instance of + optIfODUkDirectionality has the value sink(1) or + bidirectional(3). It may be implemented only if the + optIfODUkGroup is also implemented." + + GROUP optIfODUkNimGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) for which the corresponding + instance of optIfODUkTtpPresent has the value + false(2). It may be implemented only if the + optIfODUkGroup is also implemented." + + GROUP optIfGCC12Group + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support GCC12 access functions. + It may be implemented only if the optIfODUkGroup + + + + is also implemented." + + GROUP optIfODUkTCommonGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support intrusive + tandem connection monitoring. It may be implemented + only if the optIfODUkGroup is also implemented." + + GROUP optIfODUkTSourceGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support intrusive + tandem connection monitoring and for which + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value false(2), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value true(1). + It may be implemented only if the optIfODUkGroup is + also implemented." + + GROUP optIfODUkTSinkGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support intrusive + tandem connection monitoring and for which + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It may be implemented only if the optIfODUkGroup is + also implemented." + + GROUP optIfODUkTSinkGroupCtp + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support intrusive + tandem connection monitoring and for which + optIfODUkTtpPresent is false(2) and + (i) optIfODUkDirectionality has the value bidirectional(3), or + (ii) optIfODUkDirectionality has the value sink(1) and + optIfODUkTCodirectional has the value true(1), or + (iii) optIfODUkDirectionality has the value source(3) and + optIfODUkTCodirectional has the value false(2). + It may be implemented only if the optIfODUkGroup and + optIfODUkTSinkGroup are also implemented." + + + + GROUP optIfODUkTNimGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support non-intrusive + tandem connection monitoring. It may be implemented + only if the optIfODUkGroup is also implemented." + + ::= { optIfCompl 1 } + +optIfPreOtnPMCompl MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Implementation requirements for Pre-OTN performance + monitoring functions defined in this MIB module." + + MODULE -- this module + + MANDATORY-GROUPS { + optIfPerfMonGroup + } + + GROUP optIfOTSnSinkPreOtnPMGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support OTSn sink + functions (i.e., for which the corresponding instance + of optIfOTSnDirectionality -- if implemented -- has + the value sink(1) or bidirectional(3))." + + GROUP optIfOTSnSinkPreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOTSnSinkPreOtnPMGroup is a prerequisite for + implementing this group." + + GROUP optIfOTSnSourcePreOtnPMGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalTransport(196) that support OTSn source + functions (i.e., for which the corresponding instance + of optIfOTSnDirectionality -- if implemented -- has + the value source(2) or bidirectional(3))." + + GROUP optIfOTSnSourcePreOtnPMThresholdGroup + + + + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOTSnSourcePreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOMSnSinkPreOtnPMGroup + DESCRIPTION + "This group is optional. It may be implemented by systems + with the necessary instrumentation on interfaces of ifType + opticalTransport(196) that support OMSn sink functions + (i.e., for which the corresponding instance of + optIfOMSnDirectionality -- if implemented -- has the value + sink(1) or bidirectional(3))." + + GROUP optIfOMSnSinkPreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOMSnSinkPreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOMSnSourcePreOtnPMGroup + DESCRIPTION + "This group is optional. It may be implemented by systems + with the necessary instrumentation on interfaces of ifType + opticalTransport(196) that support OMSn source functions + (i.e., for which the corresponding instance of + optIfOMSnDirectionality -- if implemented -- has the value + source(2) or bidirectional(3))." + + GROUP optIfOMSnSourcePreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOMSnSourcePreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOChGroupSinkPreOtnPMGroup + + + + DESCRIPTION + "This group is optional. It may be implemented by systems + with the necessary instrumentation on interfaces of ifType + opticalChannelGroup(219) that support OChGroup sink functions + (i.e., for which the corresponding instance of + optIfOChGroupDirectionality -- if implemented -- has the value + sink(1) or bidirectional(3))." + + GROUP optIfOChGroupSinkPreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOChGroupSinkPreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOChGroupSourcePreOtnPMGroup + DESCRIPTION + "This group is optional. It may be implemented by systems + with the necessary instrumentation on interfaces of ifType + opticalChannelGroup(219) that support OChGroup source functions + (i.e., for which the corresponding instance of + optIfOChGroupDirectionality -- if implemented -- has the value + source(2) or bidirectional(3))." + + GROUP optIfOChGroupSourcePreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOChGroupSourcePreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOChSinkPreOtnPMGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OCh sink functions + (i.e., for which the corresponding instance of + optIfOChDirectionality -- if implemented -- has the + value sink(1) or bidirectional(3))." + + GROUP optIfOChSinkPreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + + + + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOChSinkPreOtnPMGroup is a prerequisite for + implementing this group " + + GROUP optIfOChSourcePreOtnPMGroup + DESCRIPTION + "This group is mandatory for interfaces of ifType + opticalChannel(195) that support OCh source functions + (i.e., for which the corresponding instance of + optIfOChDirectionality -- if implemented -- has the + value source(2) or bidirectional(3))." + + GROUP optIfOChSourcePreOtnPMThresholdGroup + DESCRIPTION + "This group is mandatory if and only if TCA notifications + are implemented. If the objects of this group are instantiated + then the implementation must also provide, in an + enterprise MIB, suitable TCA notification definitions and + notification control objects. Implementation of the + optIfOChSourcePreOtnPMGroup is a prerequisite for + implementing this group " + + ::= { optIfCompl 2 } + +END diff --git a/mibs/ietf/OSPF-MIB b/mibs/ietf/OSPF-MIB new file mode 100644 index 0000000..7fc7015 --- /dev/null +++ b/mibs/ietf/OSPF-MIB @@ -0,0 +1,4398 @@ +OSPF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, + Integer32, Unsigned32, IpAddress, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, RowStatus, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + InterfaceIndexOrZero + FROM IF-MIB; + +ospf MODULE-IDENTITY + LAST-UPDATED "200611100000Z" -- November 10, 2006 00:00:00 EST + ORGANIZATION "IETF OSPF Working Group" + CONTACT-INFO + "WG E-Mail: ospf@ietf.org + + WG Chairs: acee@cisco.com + rohit@gmail.com + + Editors: Dan Joyal + Nortel + 600 Technology Park Drive + Billerica, MA 01821 + djoyal@nortel.com + + Piotr Galecki + Airvana + 19 Alpha Road + Chelmsford, MA 01824 + pgalecki@airvana.com + + Spencer Giacalone + CSFB + Eleven Madison Ave + New York, NY 10010-3629 + spencer.giacalone@gmail.com" + + DESCRIPTION + "The MIB module to describe the OSPF Version 2 + Protocol. Note that some objects in this MIB + module may pose a significant security risk. + Refer to the Security Considerations section + in RFC 4750 for more information. + + + + Copyright (C) The IETF Trust (2006). + This version of this MIB module is part of + RFC 4750; see the RFC itself for full legal + notices." + + REVISION "200611100000Z" -- November 10, 2006 09:00:00 EST + DESCRIPTION + "Updated for latest changes to OSPF Version 2: + - updated the General Group with the new + ospfRFC1583Compatibility, ospfReferenceBandwidth + and ospfDiscontinuityTime objects + - added graceful-restart-related objects + - added stub-router-related objects + - updated the Area Table with NSSA-related objects + - added ospfAreaAggregateExtRouteTag object + - added Opaque LSA-related objects + - updates to the Compliances and Security sections + - added area LSA counter table + - added section describing translation of notification + parameters between SNMP versions + - added ospfComplianceObsolete to contain obsolete + object groups + - deprecated ospfExtLsdbTable + See Appendix B of RFC 4750 for more details. + + This version published as part of RFC 4750" + + REVISION "199501201225Z" -- Fri Jan 20 12:25:50 PST 1995 + DESCRIPTION + "The initial SMIv2 revision of this MIB module, published + in RFC 1850." + ::= { mib-2 14 } + +AreaID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OSPF Area Identifier. + Note that the Area ID, in OSPF, has the same format + as an IP address, but has the function of defining + a summarization point for link state advertisements." + SYNTAX IpAddress + +RouterID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A OSPF Router Identifier. + Note that the Router ID, in OSPF, has the same format + as an IP address, but identifies the router independent + + + + of its IP address." + SYNTAX IpAddress + +Metric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "The OSPF internal metric. + Note that the OSPF metric is defined as an unsigned value + in the range." + SYNTAX Integer32 (0..'FFFF'h) + +BigMetric ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "The OSPF external metric." + SYNTAX Integer32 (0..'FFFFFF'h) + +Status ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An indication of the operability of an OSPF + function or feature. For example, the status + of an interface: 'enabled' indicates that + it is willing to communicate with other OSPF routers, + and 'disabled' indicates that it is not." + SYNTAX INTEGER { enabled (1), disabled (2) } + +PositiveInteger ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "A positive integer. Values in excess are precluded as + unnecessary and prone to interoperability issues." + SYNTAX Integer32 (0..'7FFFFFFF'h) + +HelloRange ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "The range of intervals in seconds on which Hello messages + are exchanged." + SYNTAX Integer32 (1..'FFFF'h) + +UpToMaxAge ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + + + + DESCRIPTION + "The values in seconds that one might find or configure + for variables bounded by the maximum age of an LSA." + SYNTAX Integer32 (0..3600) + +DesignatedRouterPriority ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "The range of values defined for the priority of a system + for becoming the designated router." + SYNTAX Integer32 (0..'FF'h) + +TOSType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-0" + STATUS current + DESCRIPTION + "Type of Service (TOS) is defined as a mapping to the IP + Type of Service Flags as defined in the IP Forwarding + Table MIB + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + IP TOS IP TOS + Field Policy Field Policy + + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30 + + The remaining values are left for future definition." + SYNTAX Integer32 (0..30) + +OspfAuthenticationType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The authentication type." + SYNTAX INTEGER { + + + + none (0), + simplePassword (1), + md5 (2) + -- reserved for specification by IANA (> 2) + } + +-- OSPF General Variables + +-- Note: These parameters apply globally to the Router's +-- OSPF Process. + +ospfGeneralGroup OBJECT IDENTIFIER ::= { ospf 1 } + + ospfRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the + router in the Autonomous System. + By convention, to ensure uniqueness, this + should default to the value of one of the + router's IP interface addresses. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile storage." + REFERENCE + "OSPF Version 2, C.1 Global parameters" + ::= { ospfGeneralGroup 1 } + + ospfAdminStat OBJECT-TYPE + SYNTAX Status + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative status of OSPF in the + router. The value 'enabled' denotes that the + OSPF Process is active on at least one interface; + 'disabled' disables it on all interfaces. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile storage." + ::= { ospfGeneralGroup 2 } + + ospfVersionNumber OBJECT-TYPE + SYNTAX INTEGER { version2 (2) } + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current version number of the OSPF protocol is 2." + REFERENCE + "OSPF Version 2, Title" + ::= { ospfGeneralGroup 3 } + + ospfAreaBdrRtrStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A flag to note whether this router is an Area + Border Router." + REFERENCE + "OSPF Version 2, Section 3 Splitting the AS into + Areas" + ::= { ospfGeneralGroup 4 } + + ospfASBdrRtrStatus OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A flag to note whether this router is configured as + an Autonomous System Border Router. + + This object is persistent and when written the + entity SHOULD save the change to non-volatile storage." + REFERENCE + "OSPF Version 2, Section 3.3 Classification of + routers" + ::= { ospfGeneralGroup 5 } + + ospfExternLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of external (LS type-5) link state + advertisements in the link state database." + REFERENCE + "OSPF Version 2, Appendix A.4.5 AS external link + advertisements" + ::= { ospfGeneralGroup 6 } + + ospfExternLsaCksumSum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The 32-bit sum of the LS checksums of + the external link state advertisements + contained in the link state database. This sum + can be used to determine if there has been a + change in a router's link state database and + to compare the link state database of two + routers. The value should be treated as unsigned + when comparing two sums of checksums." + ::= { ospfGeneralGroup 7 } + + ospfTOSSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The router's support for type-of-service routing. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix F.1.2 Optional TOS + support" + ::= { ospfGeneralGroup 8 } + + ospfOriginateNewLsas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of new link state advertisements + that have been originated. This number is + incremented each time the router originates a new + LSA. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + ospfDiscontinuityTime." + ::= { ospfGeneralGroup 9 } + + ospfRxNewLsas OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of link state advertisements received + that are determined to be new instantiations. + This number does not include newer instantiations + of self-originated link state advertisements. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times as indicated by the value of + ospfDiscontinuityTime." + ::= { ospfGeneralGroup 10 } + + ospfExtLsdbLimit OBJECT-TYPE + SYNTAX Integer32 (-1..'7FFFFFFF'h) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of non-default + AS-external LSAs entries that can be stored in the + link state database. If the value is -1, then + there is no limit. + + When the number of non-default AS-external LSAs + in a router's link state database reaches + ospfExtLsdbLimit, the router enters + overflow state. The router never holds more than + ospfExtLsdbLimit non-default AS-external LSAs + in its database. OspfExtLsdbLimit MUST be set + identically in all routers attached to the OSPF + backbone and/or any regular OSPF area (i.e., + OSPF stub areas and NSSAs are excluded). + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + DEFVAL { -1 } + ::= { ospfGeneralGroup 11 } + + ospfMulticastExtensions OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A bit mask indicating whether the router is + forwarding IP multicast (Class D) datagrams + based on the algorithms defined in the + multicast extensions to OSPF. + + Bit 0, if set, indicates that the router can + + + + forward IP multicast datagrams in the router's + directly attached areas (called intra-area + multicast routing). + + Bit 1, if set, indicates that the router can + forward IP multicast datagrams between OSPF + areas (called inter-area multicast routing). + + Bit 2, if set, indicates that the router can + forward IP multicast datagrams between + Autonomous Systems (called inter-AS multicast + routing). + + Only certain combinations of bit settings are + allowed, namely: 0 (no multicast forwarding is + enabled), 1 (intra-area multicasting only), 3 + (intra-area and inter-area multicasting), 5 + (intra-area and inter-AS multicasting), and 7 + (multicasting everywhere). By default, no + multicast forwarding is enabled. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + DEFVAL { 0 } + ::= { ospfGeneralGroup 12 } + + ospfExitOverflowInterval OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of seconds that, after entering + OverflowState, a router will attempt to leave + OverflowState. This allows the router to again + originate non-default AS-external LSAs. When + set to 0, the router will not leave + overflow state until restarted. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + DEFVAL { 0 } + ::= { ospfGeneralGroup 13 } + + ospfDemandExtensions OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The router's support for demand routing. + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "Extending OSPF to Support Demand Circuits" + ::= { ospfGeneralGroup 14 } + + ospfRFC1583Compatibility OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates metrics used to choose among multiple + AS-external LSAs. When RFC1583Compatibility is set to + enabled, only cost will be used when choosing among + multiple AS-external LSAs advertising the same + destination. When RFC1583Compatibility is set to + disabled, preference will be driven first by type of + path using cost only to break ties. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Section 16.4.1 External path + preferences" + ::= { ospfGeneralGroup 15 } + + ospfOpaqueLsaSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The router's support for Opaque LSA types." + REFERENCE + "The OSPF Opaque LSA Option" + ::= { ospfGeneralGroup 16 } + + ospfReferenceBandwidth OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Reference bandwidth in kilobits/second for + + + + calculating default interface metrics. The + default value is 100,000 KBPS (100 MBPS). + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfGeneralGroup 17 } + + ospfRestartSupport OBJECT-TYPE + SYNTAX INTEGER { none (1), + plannedOnly (2), + plannedAndUnplanned (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The router's support for OSPF graceful restart. + Options include: no restart support, only planned + restarts, or both planned and unplanned restarts. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfGeneralGroup 18 } + + ospfRestartInterval OBJECT-TYPE + SYNTAX Integer32 (1..1800) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Configured OSPF graceful restart timeout interval. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfGeneralGroup 19 } + + ospfRestartStrictLsaChecking OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if strict LSA checking is enabled for + graceful restart. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + + + + storage." + ::= { ospfGeneralGroup 20 } + + + ospfRestartStatus OBJECT-TYPE + SYNTAX INTEGER { notRestarting (1), + plannedRestart (2), + unplannedRestart (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current status of OSPF graceful restart." + ::= { ospfGeneralGroup 21 } + + ospfRestartAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF graceful restart + interval." + ::= { ospfGeneralGroup 22 } + + ospfRestartExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- none attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topology change. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at a + graceful restart. If the value is 'none', no restart + has yet been attempted. If the value is 'inProgress', + a restart attempt is currently underway." + ::= { ospfGeneralGroup 23 } + + ospfAsLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of AS-scope link state + advertisements in the AS-scope link state database." + ::= { ospfGeneralGroup 24 } + + ospfAsLsaCksumSum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the LS checksums of + the AS link state advertisements contained in the AS-scope + link state database. This sum can be used to determine + if there has been a change in a router's AS-scope link + state database, and to compare the AS-scope link state + database of two routers." + ::= { ospfGeneralGroup 25 } + + ospfStubRouterSupport OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The router's support for stub router functionality." + REFERENCE + "OSPF Stub Router Advertisement" + ::= { ospfGeneralGroup 26 } + + ospfStubRouterAdvertisement OBJECT-TYPE + SYNTAX INTEGER { + doNotAdvertise (1), + advertise(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the advertisement of + stub router LSAs by the router. The value + doNotAdvertise will result in the advertisement + of a standard router LSA and is the default value. + + This object is persistent and when written + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfGeneralGroup 27 } + + ospfDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion + at which any one of this MIB's counters suffered + a discontinuity. + + If no such discontinuities have occurred since the last + re-initialization of the local management subsystem, + then this object contains a zero value." + ::= { ospfGeneralGroup 28 } + + +-- OSPF Area Table +-- The OSPF Area Table contains information +-- regarding the various areas. + + ospfAreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the configured parameters and + cumulative statistics of the router's attached areas. + The interfaces and virtual links are configured + as part of these areas. Area 0.0.0.0, by definition, + is the backbone area." + REFERENCE + "OSPF Version 2, Section 6 The Area Data Structure" + ::= { ospf 2 } + + ospfAreaEntry OBJECT-TYPE + SYNTAX OspfAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the configured parameters and + cumulative statistics of one of the router's attached areas. + The interfaces and virtual links are configured as part of + these areas. Area 0.0.0.0, by definition, is the backbone + area. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + INDEX { ospfAreaId } + ::= { ospfAreaTable 1 } + + + + + OspfAreaEntry ::= + SEQUENCE { + ospfAreaId + AreaID, + ospfAuthType + OspfAuthenticationType, + ospfImportAsExtern + INTEGER, + ospfSpfRuns + Counter32, + ospfAreaBdrRtrCount + Gauge32, + ospfAsBdrRtrCount + Gauge32, + ospfAreaLsaCount + Gauge32, + ospfAreaLsaCksumSum + Integer32, + ospfAreaSummary + INTEGER, + ospfAreaStatus + RowStatus, + ospfAreaNssaTranslatorRole + INTEGER, + ospfAreaNssaTranslatorState + INTEGER, + ospfAreaNssaTranslatorStabilityInterval + PositiveInteger, + ospfAreaNssaTranslatorEvents + Counter32 + } + + ospfAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally + -- an SMIv1 index + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying an area. + Area ID 0.0.0.0 is used for the OSPF backbone." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaEntry 1 } + + ospfAuthType OBJECT-TYPE + SYNTAX OspfAuthenticationType + MAX-ACCESS read-create + STATUS obsolete + + + + DESCRIPTION + "The authentication type specified for an area." + REFERENCE + "OSPF Version 2, Appendix D Authentication" + DEFVAL { none } -- no authentication, by default + ::= { ospfAreaEntry 2 } + + ospfImportAsExtern OBJECT-TYPE + SYNTAX INTEGER { + importExternal (1), + importNoExternal (2), + importNssa (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates if an area is a stub area, NSSA, or standard + area. Type-5 AS-external LSAs and type-11 Opaque LSAs are + not imported into stub areas or NSSAs. NSSAs import + AS-external data as type-7 LSAs" + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + DEFVAL { importExternal } + ::= { ospfAreaEntry 3 } + + ospfSpfRuns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the intra-area route + table has been calculated using this area's + link state database. This is typically done + using Dijkstra's algorithm. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at other + times as indicated by the value of ospfDiscontinuityTime." + ::= { ospfAreaEntry 4 } + + ospfAreaBdrRtrCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Area Border Routers reachable + within this area. This is initially zero and is + calculated in each Shortest Path First (SPF) pass." + + + + ::= { ospfAreaEntry 5 } + + ospfAsBdrRtrCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Autonomous System Border + Routers reachable within this area. This is + initially zero and is calculated in each SPF + pass." + ::= { ospfAreaEntry 6 } + + ospfAreaLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of link state advertisements + in this area's link state database, excluding + AS-external LSAs." + ::= { ospfAreaEntry 7 } + + ospfAreaLsaCksumSum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit sum of the link state + advertisements' LS checksums contained in this + area's link state database. This sum excludes + external (LS type-5) link state advertisements. + The sum can be used to determine if there has + been a change in a router's link state + database, and to compare the link state database of + two routers. The value should be treated as unsigned + when comparing two sums of checksums." + DEFVAL { 0 } + ::= { ospfAreaEntry 8 } + + ospfAreaSummary OBJECT-TYPE + SYNTAX INTEGER { + noAreaSummary (1), + sendAreaSummary (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The variable ospfAreaSummary controls the + import of summary LSAs into stub and NSSA areas. + It has no effect on other areas. + + If it is noAreaSummary, the router will not + originate summary LSAs into the stub or NSSA area. + It will rely entirely on its default route. + + If it is sendAreaSummary, the router will both + summarize and propagate summary LSAs." + DEFVAL { noAreaSummary } + ::= { ospfAreaEntry 9 } + + ospfAreaStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfAreaEntry 10 } + + ospfAreaNssaTranslatorRole OBJECT-TYPE + SYNTAX INTEGER { always (1), candidate (2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates an NSSA border router's ability to + perform NSSA translation of type-7 LSAs into + type-5 LSAs." + DEFVAL { candidate } + ::= { ospfAreaEntry 11 } + + ospfAreaNssaTranslatorState OBJECT-TYPE + SYNTAX INTEGER { enabled (1), + elected (2), + disabled (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if and how an NSSA border router is + performing NSSA translation of type-7 LSAs into type-5 + + + + LSAs. When this object is set to enabled, the NSSA Border + router's OspfAreaNssaExtTranslatorRole has been set to + always. When this object is set to elected, a candidate + NSSA Border router is Translating type-7 LSAs into type-5. + When this object is set to disabled, a candidate NSSA + border router is NOT translating type-7 LSAs into type-5." + ::= { ospfAreaEntry 12 } + + ospfAreaNssaTranslatorStabilityInterval OBJECT-TYPE + SYNTAX PositiveInteger + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds after an elected translator + determines its services are no longer required, that + it should continue to perform its translation duties." + DEFVAL { 40 } + ::= { ospfAreaEntry 13 } + + ospfAreaNssaTranslatorEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of translator state changes + that have occurred since the last boot-up. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at other + times as indicated by the value of ospfDiscontinuityTime." + ::= { ospfAreaEntry 14 } + +-- OSPF Area Default Metric Table + + ospfStubAreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfStubAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The set of metrics that will be advertised + by a default Area Border Router into a stub area." + REFERENCE + "OSPF Version 2, Appendix C.2, Area Parameters" + ::= { ospf 3 } + + ospfStubAreaEntry OBJECT-TYPE + SYNTAX OspfStubAreaEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The metric for a given Type of Service that + will be advertised by a default Area Border + Router into a stub area. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix C.2, Area Parameters" + INDEX { ospfStubAreaId, ospfStubTOS } + ::= { ospfStubAreaTable 1 } + + OspfStubAreaEntry ::= + SEQUENCE { + ospfStubAreaId + AreaID, + ospfStubTOS + TOSType, + ospfStubMetric + BigMetric, + ospfStubStatus + RowStatus, + ospfStubMetricType + INTEGER + } + + ospfStubAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The 32-bit identifier for the stub area. On + creation, this can be derived from the + instance." + ::= { ospfStubAreaEntry 1 } + + ospfStubTOS OBJECT-TYPE + SYNTAX TOSType + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Type of Service associated with the + metric. On creation, this can be derived from + + + + the instance." + ::= { ospfStubAreaEntry 2 } + + ospfStubMetric OBJECT-TYPE + SYNTAX BigMetric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric value applied at the indicated Type + of Service. By default, this equals the least + metric at the Type of Service among the + interfaces to other areas." + ::= { ospfStubAreaEntry 3 } + + ospfStubStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfStubAreaEntry 4 } + + ospfStubMetricType OBJECT-TYPE + SYNTAX INTEGER { + ospfMetric (1), -- OSPF Metric + comparableCost (2), -- external type 1 + nonComparable (3) -- external type 2 + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable displays the type of metric + advertised as a default route." + DEFVAL { ospfMetric } + ::= { ospfStubAreaEntry 5 } + +-- OSPF Link State Database + + ospfLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfLsdbEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The OSPF Process's link state database (LSDB). + The LSDB contains the link state advertisements + from throughout the areas that the device is attached to." + REFERENCE + "OSPF Version 2, Section 12 Link State Advertisements" + ::= { ospf 4 } + + ospfLsdbEntry OBJECT-TYPE + SYNTAX OspfLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single link state advertisement." + INDEX { ospfLsdbAreaId, ospfLsdbType, + ospfLsdbLsid, ospfLsdbRouterId } + ::= { ospfLsdbTable 1 } + + OspfLsdbEntry ::= + SEQUENCE { + ospfLsdbAreaId + AreaID, + ospfLsdbType + INTEGER, + ospfLsdbLsid + IpAddress, + ospfLsdbRouterId + RouterID, + ospfLsdbSequence + Integer32, + ospfLsdbAge + Integer32, + ospfLsdbChecksum + Integer32, + ospfLsdbAdvertisement + OCTET STRING + } + + ospfLsdbAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The 32-bit identifier of the area from which + the LSA was received." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + + + + ::= { ospfLsdbEntry 1 } + + ospfLsdbType OBJECT-TYPE + SYNTAX INTEGER { + routerLink (1), + networkLink (2), + summaryLink (3), + asSummaryLink (4), + asExternalLink (5), -- but see ospfAsLsdbTable + multicastLink (6), + nssaExternalLink (7), + areaOpaqueLink (10) + } + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate advertisement + format. + + Note: External link state advertisements are permitted + for backward compatibility, but should be displayed + in the ospfAsLsdbTable rather than here." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfLsdbEntry 2 } + + ospfLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing either a Router ID or an IP address; + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfLsdbEntry 3 } + + ospfLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + + + + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfLsdbEntry 4 } + + ospfLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate Link State + Advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfLsdbEntry 5 } + + ospfLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state advertisement + in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfLsdbEntry 6 } + + ospfLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete contents of + the advertisement, excepting the age field. The age field + is excepted so that an advertisement's age can be + incremented without updating the checksum. The checksum + used is the same that is used for ISO connectionless + + + + datagrams; it is commonly referred to as the + Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfLsdbEntry 7 } + + ospfLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire link state advertisement, including + its header. + + Note that for variable length LSAs, SNMP agents + may not be able to return the largest string size." + REFERENCE + "OSPF Version 2, Section 12 Link State Advertisements" + ::= { ospfLsdbEntry 8 } + +-- Address Range Table + + ospfAreaRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAreaRangeEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "The Address Range Table acts as an adjunct to the Area + Table. It describes those Address Range Summaries that + are configured to be propagated from an Area to reduce + the amount of information about it that is known beyond + its borders. It contains a set of IP address ranges + specified by an IP address/IP network mask pair. + For example, class B address range of X.X.X.X + with a network mask of 255.255.0.0 includes all IP + addresses from X.X.0.0 to X.X.255.255. + + Note that this table is obsoleted and is replaced + by the Area Aggregate Table." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospf 5 } + + ospfAreaRangeEntry OBJECT-TYPE + SYNTAX OspfAreaRangeEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + + + + "A single area address range. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + INDEX { ospfAreaRangeAreaId, ospfAreaRangeNet } + ::= { ospfAreaRangeTable 1 } + + OspfAreaRangeEntry ::= + SEQUENCE { + ospfAreaRangeAreaId + AreaID, + ospfAreaRangeNet + IpAddress, + ospfAreaRangeMask + IpAddress, + ospfAreaRangeStatus + RowStatus, + ospfAreaRangeEffect + INTEGER + } + + ospfAreaRangeAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS obsolete + DESCRIPTION + "The area that the address range is to be found + within." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaRangeEntry 1 } + + ospfAreaRangeNet OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS obsolete + DESCRIPTION + "The IP address of the net or subnet indicated + by the range." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaRangeEntry 2 } + + + + + ospfAreaRangeMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "The subnet mask that pertains to the net or + subnet." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaRangeEntry 3 } + + ospfAreaRangeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfAreaRangeEntry 4 } + + ospfAreaRangeEffect OBJECT-TYPE + SYNTAX INTEGER { + advertiseMatching (1), + doNotAdvertiseMatching (2) + } + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "Subnets subsumed by ranges either trigger the + advertisement of the indicated summary + (advertiseMatching) or result in the subnet's not + being advertised at all outside the area." + DEFVAL { advertiseMatching } + ::= { ospfAreaRangeEntry 5 } + +-- OSPF Host Table + + ospfHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Host/Metric Table indicates what hosts are directly + + + + attached to the router, what metrics and types + of service should be advertised for them, + and what areas they are found within." + REFERENCE + "OSPF Version 2, Appendix C.7 Host route + parameters" + ::= { ospf 6 } + + ospfHostEntry OBJECT-TYPE + SYNTAX OspfHostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A metric to be advertised, for a given type of + service, when a given host is reachable. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + INDEX { ospfHostIpAddress, ospfHostTOS } + ::= { ospfHostTable 1 } + + OspfHostEntry ::= + SEQUENCE { + ospfHostIpAddress + IpAddress, + ospfHostTOS + TOSType, + ospfHostMetric + Metric, + ospfHostStatus + RowStatus, + ospfHostAreaID + AreaID, + ospfHostCfgAreaID + AreaID + } + + ospfHostIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address of the host." + REFERENCE + "OSPF Version 2, Appendix C.7 Host route parameters" + ::= { ospfHostEntry 1 } + + + + ospfHostTOS OBJECT-TYPE + SYNTAX TOSType + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Type of Service of the route being configured." + REFERENCE + "OSPF Version 2, Appendix C.7 Host route parameters" + ::= { ospfHostEntry 2 } + + ospfHostMetric OBJECT-TYPE + SYNTAX Metric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric to be advertised." + REFERENCE + "OSPF Version 2, Appendix C.7 Host route parameters" + ::= { ospfHostEntry 3 } + + ospfHostStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfHostEntry 4 } + + ospfHostAreaID OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The OSPF area to which the host belongs. + Deprecated by ospfHostCfgAreaID." + REFERENCE + "OSPF Version 2, Appendix C.7 Host parameters" + ::= { ospfHostEntry 5 } + + ospfHostCfgAreaID OBJECT-TYPE + SYNTAX AreaID + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "To configure the OSPF area to which the host belongs." + REFERENCE + "OSPF Version 2, Appendix C.7 Host parameters" + ::= { ospfHostEntry 6 } + +-- OSPF Interface Table + + ospfIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF Interface Table describes the interfaces + from the viewpoint of OSPF. + It augments the ipAddrTable with OSPF specific information." + REFERENCE + "OSPF Version 2, Appendix C.3 Router interface + parameters" + ::= { ospf 7 } + + ospfIfEntry OBJECT-TYPE + SYNTAX OspfIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF interface entry describes one interface + from the viewpoint of OSPF. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + INDEX { ospfIfIpAddress, ospfAddressLessIf } + ::= { ospfIfTable 1 } + + OspfIfEntry ::= + SEQUENCE { + ospfIfIpAddress + IpAddress, + ospfAddressLessIf + InterfaceIndexOrZero, + ospfIfAreaId + AreaID, + ospfIfType + INTEGER, + ospfIfAdminStat + + + + Status, + ospfIfRtrPriority + DesignatedRouterPriority, + ospfIfTransitDelay + UpToMaxAge, + ospfIfRetransInterval + UpToMaxAge, + ospfIfHelloInterval + HelloRange, + ospfIfRtrDeadInterval + PositiveInteger, + ospfIfPollInterval + PositiveInteger, + ospfIfState + INTEGER, + ospfIfDesignatedRouter + IpAddress, + ospfIfBackupDesignatedRouter + IpAddress, + ospfIfEvents + Counter32, + ospfIfAuthKey + OCTET STRING, + ospfIfStatus + RowStatus, + ospfIfMulticastForwarding + INTEGER, + ospfIfDemand + TruthValue, + ospfIfAuthType + OspfAuthenticationType, + ospfIfLsaCount + Gauge32, + ospfIfLsaCksumSum + Unsigned32, + ospfIfDesignatedRouterId + RouterID, + ospfIfBackupDesignatedRouterId + RouterID + } + + ospfIfIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address of this OSPF interface." + + + + ::= { ospfIfEntry 1 } + + ospfAddressLessIf OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "For the purpose of easing the instancing of + addressed and addressless interfaces; this + variable takes the value 0 on interfaces with + IP addresses and the corresponding value of + ifIndex for interfaces having no IP address." + ::= { ospfIfEntry 2 } + + ospfIfAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the area + to which the interface connects. Area ID + 0.0.0.0 is used for the OSPF backbone." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfIfEntry 3 } + + ospfIfType OBJECT-TYPE + SYNTAX INTEGER { + broadcast (1), + nbma (2), + pointToPoint (3), + pointToMultipoint (5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OSPF interface type. + By way of a default, this field may be intuited + from the corresponding value of ifType. + Broadcast LANs, such as Ethernet and IEEE 802.5, + take the value 'broadcast', X.25 and similar + technologies take the value 'nbma', and links + that are definitively point to point take the + value 'pointToPoint'." + ::= { ospfIfEntry 4 } + + ospfIfAdminStat OBJECT-TYPE + SYNTAX Status + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The OSPF interface's administrative status. + The value formed on the interface, and the interface + will be advertised as an internal route to some area. + The value 'disabled' denotes that the interface is + external to OSPF." + DEFVAL { enabled } + ::= { ospfIfEntry 5 } + + ospfIfRtrPriority OBJECT-TYPE + SYNTAX DesignatedRouterPriority + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this interface. Used in + multi-access networks, this field is used in + the designated router election algorithm. The + value 0 signifies that the router is not eligible + to become the designated router on this particular + network. In the event of a tie in this value, + routers will use their Router ID as a tie breaker." + DEFVAL { 1 } + ::= { ospfIfEntry 6 } + + ospfIfTransitDelay OBJECT-TYPE + SYNTAX UpToMaxAge + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The estimated number of seconds it takes to + transmit a link state update packet over this + interface. Note that the minimal value SHOULD be + 1 second." + DEFVAL { 1 } + ::= { ospfIfEntry 7 } + + ospfIfRetransInterval OBJECT-TYPE + SYNTAX UpToMaxAge + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between link state advertisement + retransmissions, for adjacencies belonging to this + interface. This value is also used when retransmitting + + + + database description and Link State request packets. + Note that minimal value SHOULD be 1 second." + DEFVAL { 5 } + ::= { ospfIfEntry 8 } + + ospfIfHelloInterval OBJECT-TYPE + SYNTAX HelloRange + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of time, in seconds, between the Hello packets + that the router sends on the interface. This value must be + the same for all routers attached to a common network." + DEFVAL { 10 } + ::= { ospfIfEntry 9 } + + ospfIfRtrDeadInterval OBJECT-TYPE + SYNTAX PositiveInteger + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that a router's Hello packets have + not been seen before its neighbors declare the router down. + This should be some multiple of the Hello interval. This + value must be the same for all routers attached to a common + network." + DEFVAL { 40 } + ::= { ospfIfEntry 10 } + + ospfIfPollInterval OBJECT-TYPE + SYNTAX PositiveInteger + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The larger time interval, in seconds, between the Hello + packets sent to an inactive non-broadcast multi-access + neighbor." + DEFVAL { 120 } + ::= { ospfIfEntry 11 } + + ospfIfState OBJECT-TYPE + SYNTAX INTEGER { + down (1), + loopback (2), + waiting (3), + + + + pointToPoint (4), + designatedRouter (5), + backupDesignatedRouter (6), + otherDesignatedRouter (7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The OSPF Interface State." + DEFVAL { down } + ::= { ospfIfEntry 12 } + + ospfIfDesignatedRouter OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the designated router." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfIfEntry 13 } + + ospfIfBackupDesignatedRouter OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the backup designated + router." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfIfEntry 14 } + + ospfIfEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this OSPF interface has + changed its state or an error has occurred. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at other + times as indicated by the value of ospfDiscontinuityTime." + ::= { ospfIfEntry 15 } + + ospfIfAuthKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..256)) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "The cleartext password used as an OSPF + authentication key when simplePassword security + is enabled. This object does not access any OSPF + cryptogaphic (e.g., MD5) authentication key under + any circumstance. + + If the key length is shorter than 8 octets, the + agent will left adjust and zero fill to 8 octets. + + Unauthenticated interfaces need no authentication + key, and simple password authentication cannot use + a key of more than 8 octets. + + Note that the use of simplePassword authentication + is NOT recommended when there is concern regarding + attack upon the OSPF system. SimplePassword + authentication is only sufficient to protect against + accidental misconfigurations because it re-uses + cleartext passwords [RFC1704]. + + When read, ospfIfAuthKey always returns an octet + string of length zero." + REFERENCE + "OSPF Version 2, Section 9 The Interface Data + Structure" + DEFVAL { '0000000000000000'H } -- 0.0.0.0.0.0.0.0 + ::= { ospfIfEntry 16 } + + ospfIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfIfEntry 17 } + + ospfIfMulticastForwarding OBJECT-TYPE + SYNTAX INTEGER { + blocked (1), -- no multicast forwarding + multicast (2), -- using multicast address + unicast (3) -- to each OSPF neighbor + + + + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The way multicasts should be forwarded on this + interface: not forwarded, forwarded as data + link multicasts, or forwarded as data link + unicasts. Data link multicasting is not + meaningful on point-to-point and NBMA interfaces, + and setting ospfMulticastForwarding to 0 effectively + disables all multicast forwarding." + DEFVAL { blocked } + ::= { ospfIfEntry 18 } + + ospfIfDemand OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether Demand OSPF procedures (hello + suppression to FULL neighbors and setting the + DoNotAge flag on propagated LSAs) should be + performed on this interface." + DEFVAL { false } + ::= { ospfIfEntry 19 } + + ospfIfAuthType OBJECT-TYPE + SYNTAX OspfAuthenticationType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The authentication type specified for an interface. + + Note that this object can be used to engage + in significant attacks against an OSPF router." + REFERENCE + "OSPF Version 2, Appendix D Authentication" + DEFVAL { none } -- no authentication, by default + ::= { ospfIfEntry 20 } + + ospfIfLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of link-local link state advertisements + in this interface's link-local link state database." + ::= { ospfIfEntry 21 } + + + + ospfIfLsaCksumSum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the Link State + Advertisements' LS checksums contained in this + interface's link-local link state database. + The sum can be used to determine if there has + been a change in the interface's link state + database and to compare the interface link state + database of routers attached to the same subnet." + ::= { ospfIfEntry 22 } + + ospfIfDesignatedRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Router ID of the designated router." + ::= { ospfIfEntry 23 } + + ospfIfBackupDesignatedRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Router ID of the backup designated router." + ::= { ospfIfEntry 24 } + +-- OSPF Interface Metric Table + + ospfIfMetricTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfIfMetricEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Metric Table describes the metrics to be advertised + for a specified interface at the various types of service. + As such, this table is an adjunct of the OSPF Interface + Table. + + Types of service, as defined by RFC 791, have the ability + to request low delay, high bandwidth, or reliable linkage. + + For the purposes of this specification, the measure of + bandwidth: + + + + + Metric = referenceBandwidth / ifSpeed + + is the default value. + The default reference bandwidth is 10^8. + For multiple link interfaces, note that ifSpeed is the sum + of the individual link speeds. This yields a number having + the following typical values: + + Network Type/bit rate Metric + + >= 100 MBPS 1 + Ethernet/802.3 10 + E1 48 + T1 (ESF) 65 + 64 KBPS 1562 + 56 KBPS 1785 + 19.2 KBPS 5208 + 9.6 KBPS 10416 + + Routes that are not specified use the default + (TOS 0) metric. + + Note that the default reference bandwidth can be configured + using the general group object ospfReferenceBandwidth." + REFERENCE + "OSPF Version 2, Appendix C.3 Router interface + parameters" + ::= { ospf 8 } + + ospfIfMetricEntry OBJECT-TYPE + SYNTAX OspfIfMetricEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A particular TOS metric for a non-virtual interface + identified by the interface index. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix C.3 Router interface + parameters" + INDEX { ospfIfMetricIpAddress, + ospfIfMetricAddressLessIf, + ospfIfMetricTOS } + ::= { ospfIfMetricTable 1 } + + + + + OspfIfMetricEntry ::= + SEQUENCE { + ospfIfMetricIpAddress + IpAddress, + ospfIfMetricAddressLessIf + InterfaceIndexOrZero, + ospfIfMetricTOS + TOSType, + ospfIfMetricValue + Metric, + ospfIfMetricStatus + RowStatus + } + + ospfIfMetricIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address of this OSPF interface. On row + creation, this can be derived from the instance." + ::= { ospfIfMetricEntry 1 } + + ospfIfMetricAddressLessIf OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "For the purpose of easing the instancing of + addressed and addressless interfaces; this + variable takes the value 0 on interfaces with + IP addresses and the value of ifIndex for + interfaces having no IP address. On row + creation, this can be derived from the instance." + ::= { ospfIfMetricEntry 2 } + + ospfIfMetricTOS OBJECT-TYPE + SYNTAX TOSType + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Type of Service metric being referenced. + On row creation, this can be derived from the + instance." + ::= { ospfIfMetricEntry 3 } + + + + ospfIfMetricValue OBJECT-TYPE + SYNTAX Metric + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The metric of using this Type of Service on + this interface. The default value of the TOS 0 + metric is 10^8 / ifSpeed." + ::= { ospfIfMetricEntry 4 } + + ospfIfMetricStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfIfMetricEntry 5 } + +-- OSPF Virtual Interface Table + + ospfVirtIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfVirtIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about this router's virtual interfaces + that the OSPF Process is configured to carry on." + REFERENCE + "OSPF Version 2, Appendix C.4 Virtual link + parameters" + ::= { ospf 9 } + + ospfVirtIfEntry OBJECT-TYPE + SYNTAX OspfVirtIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a single virtual interface. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + + + + INDEX { ospfVirtIfAreaId, ospfVirtIfNeighbor } + ::= { ospfVirtIfTable 1 } + + OspfVirtIfEntry ::= + SEQUENCE { + ospfVirtIfAreaId + AreaID, + ospfVirtIfNeighbor + RouterID, + ospfVirtIfTransitDelay + UpToMaxAge, + ospfVirtIfRetransInterval + UpToMaxAge, + ospfVirtIfHelloInterval + HelloRange, + ospfVirtIfRtrDeadInterval + PositiveInteger, + ospfVirtIfState + INTEGER, + ospfVirtIfEvents + Counter32, + ospfVirtIfAuthKey + OCTET STRING, + ospfVirtIfStatus + RowStatus, + ospfVirtIfAuthType + OspfAuthenticationType, + ospfVirtIfLsaCount + Gauge32, + ospfVirtIfLsaCksumSum + Unsigned32 + } + + ospfVirtIfAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The transit area that the virtual link + traverses. By definition, this is not 0.0.0.0." + ::= { ospfVirtIfEntry 1 } + + ospfVirtIfNeighbor OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + + + + DESCRIPTION + "The Router ID of the virtual neighbor." + ::= { ospfVirtIfEntry 2 } + + ospfVirtIfTransitDelay OBJECT-TYPE + SYNTAX UpToMaxAge + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The estimated number of seconds it takes to + transmit a Link State update packet over this + interface. Note that the minimal value SHOULD be + 1 second." + DEFVAL { 1 } + ::= { ospfVirtIfEntry 3 } + + ospfVirtIfRetransInterval OBJECT-TYPE + SYNTAX UpToMaxAge + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds between link state + avertisement retransmissions, for adjacencies + belonging to this interface. This value is + also used when retransmitting database + description and Link State request packets. This + value should be well over the expected + round-trip time. Note that the minimal value SHOULD be + 1 second." + DEFVAL { 5 } + ::= { ospfVirtIfEntry 4 } + + ospfVirtIfHelloInterval OBJECT-TYPE + SYNTAX HelloRange + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of time, in seconds, between the + Hello packets that the router sends on the + interface. This value must be the same for the + virtual neighbor." + DEFVAL { 10 } + ::= { ospfVirtIfEntry 5 } + + ospfVirtIfRtrDeadInterval OBJECT-TYPE + + + + SYNTAX PositiveInteger + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that a router's Hello + packets have not been seen before its + neighbors declare the router down. This should be + some multiple of the Hello interval. This + value must be the same for the virtual neighbor." + DEFVAL { 60 } + ::= { ospfVirtIfEntry 6 } + + ospfVirtIfState OBJECT-TYPE + SYNTAX INTEGER { + down (1), -- these use the same encoding + pointToPoint (4) -- as the ospfIfTable + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "OSPF virtual interface states." + DEFVAL { down } + ::= { ospfVirtIfEntry 7 } + + ospfVirtIfEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of state changes or error events on + this virtual link. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at other + times as indicated by the value of ospfDiscontinuityTime." + ::= { ospfVirtIfEntry 8 } + + ospfVirtIfAuthKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..256)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The cleartext password used as an OSPF + authentication key when simplePassword security + is enabled. This object does not access any OSPF + cryptogaphic (e.g., MD5) authentication key under + any circumstance. + + + + If the key length is shorter than 8 octets, the + agent will left adjust and zero fill to 8 octets. + + Unauthenticated interfaces need no authentication + key, and simple password authentication cannot use + a key of more than 8 octets. + + Note that the use of simplePassword authentication + is NOT recommended when there is concern regarding + attack upon the OSPF system. SimplePassword + authentication is only sufficient to protect against + accidental misconfigurations because it re-uses + cleartext passwords. [RFC1704] + + When read, ospfIfAuthKey always returns an octet + string of length zero." + REFERENCE + "OSPF Version 2, Section 9 The Interface Data + Structure" + DEFVAL { '0000000000000000'H } -- 0.0.0.0.0.0.0.0 + ::= { ospfVirtIfEntry 9 } + + ospfVirtIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfVirtIfEntry 10 } + + ospfVirtIfAuthType OBJECT-TYPE + SYNTAX OspfAuthenticationType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The authentication type specified for a virtual interface. + + Note that this object can be used to engage + in significant attacks against an OSPF router." + REFERENCE + "OSPF Version 2, Appendix E Authentication" + DEFVAL { none } -- no authentication, by default + + + + ::= { ospfVirtIfEntry 11 } + + ospfVirtIfLsaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of link-local link state advertisements + in this virtual interface's link-local link state database." + ::= { ospfVirtIfEntry 12 } + + ospfVirtIfLsaCksumSum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The 32-bit unsigned sum of the link state + advertisements' LS checksums contained in this + virtual interface's link-local link state database. + The sum can be used to determine if there has + been a change in the virtual interface's link state + database, and to compare the virtual interface + link state database of the virtual neighbors." + ::= { ospfVirtIfEntry 13 } + +-- OSPF Neighbor Table + + ospfNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table describing all non-virtual neighbors + in the locality of the OSPF router." + REFERENCE + "OSPF Version 2, Section 10 The Neighbor Data + Structure" + ::= { ospf 10 } + + ospfNbrEntry OBJECT-TYPE + SYNTAX OspfNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The information regarding a single neighbor. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + + + + storage." + REFERENCE + "OSPF Version 2, Section 10 The Neighbor Data + Structure" + INDEX { ospfNbrIpAddr, ospfNbrAddressLessIndex } + ::= { ospfNbrTable 1 } + + OspfNbrEntry ::= + SEQUENCE { + ospfNbrIpAddr + IpAddress, + ospfNbrAddressLessIndex + InterfaceIndexOrZero, + ospfNbrRtrId + RouterID, + ospfNbrOptions + Integer32, + ospfNbrPriority + DesignatedRouterPriority, + ospfNbrState + INTEGER, + ospfNbrEvents + Counter32, + ospfNbrLsRetransQLen + Gauge32, + ospfNbmaNbrStatus + RowStatus, + ospfNbmaNbrPermanence + INTEGER, + ospfNbrHelloSuppressed + TruthValue, + ospfNbrRestartHelperStatus + INTEGER, + ospfNbrRestartHelperAge + Unsigned32, + ospfNbrRestartHelperExitReason + INTEGER + } + + ospfNbrIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address this neighbor is using in its + IP source address. Note that, on addressless + links, this will not be 0.0.0.0 but the + + + + address of another of the neighbor's interfaces." + ::= { ospfNbrEntry 1 } + + ospfNbrAddressLessIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "On an interface having an IP address, zero. + On addressless interfaces, the corresponding + value of ifIndex in the Internet Standard MIB. + On row creation, this can be derived from the + instance." + ::= { ospfNbrEntry 2 } + + ospfNbrRtrId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A 32-bit integer (represented as a type + IpAddress) uniquely identifying the neighboring + router in the Autonomous System." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { ospfNbrEntry 3 } + + ospfNbrOptions OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit mask corresponding to the neighbor's + options field. + + Bit 0, if set, indicates that the system will + operate on Type of Service metrics other than + TOS 0. If zero, the neighbor will ignore all + metrics except the TOS 0 metric. + + Bit 1, if set, indicates that the associated + area accepts and operates on external + information; if zero, it is a stub area. + + Bit 2, if set, indicates that the system is + capable of routing IP multicast datagrams, that is + that it implements the multicast extensions to + OSPF. + + + + Bit 3, if set, indicates that the associated + area is an NSSA. These areas are capable of + carrying type-7 external advertisements, which + are translated into type-5 external advertisements + at NSSA borders." + REFERENCE + "OSPF Version 2, Section 12.1.2 Options" + DEFVAL { 0 } + ::= { ospfNbrEntry 4 } + + ospfNbrPriority OBJECT-TYPE + SYNTAX DesignatedRouterPriority + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The priority of this neighbor in the designated + router election algorithm. The value 0 signifies + that the neighbor is not eligible to become + the designated router on this particular network." + + DEFVAL { 1 } + ::= { ospfNbrEntry 5 } + + ospfNbrState OBJECT-TYPE + SYNTAX INTEGER { + down (1), + attempt (2), + init (3), + twoWay (4), + exchangeStart (5), + exchange (6), + loading (7), + full (8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the relationship with this neighbor." + REFERENCE + "OSPF Version 2, Section 10.1 Neighbor States" + DEFVAL { down } + ::= { ospfNbrEntry 6 } + + ospfNbrEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of times this neighbor relationship + has changed state or an error has occurred. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at other + times as indicated by the value of ospfDiscontinuityTime." + ::= { ospfNbrEntry 7 } + + ospfNbrLsRetransQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current length of the retransmission + queue." + ::= { ospfNbrEntry 8 } + + ospfNbmaNbrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfNbrEntry 9 } + + ospfNbmaNbrPermanence OBJECT-TYPE + SYNTAX INTEGER { + dynamic (1), -- learned through protocol + permanent (2) -- configured address + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable displays the status of the entry; + 'dynamic' and 'permanent' refer to how the neighbor + became known." + DEFVAL { permanent } + ::= { ospfNbrEntry 10 } + + ospfNbrHelloSuppressed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Indicates whether Hellos are being suppressed + to the neighbor." + ::= { ospfNbrEntry 11 } + + ospfNbrRestartHelperStatus OBJECT-TYPE + SYNTAX INTEGER { notHelping (1), + helping (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the router is acting + as a graceful restart helper for the neighbor." + ::= { ospfNbrEntry 12 } + + ospfNbrRestartHelperAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF graceful restart + interval, if the router is acting as a restart + helper for the neighbor." + ::= { ospfNbrEntry 13 } + + ospfNbrRestartHelperExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- not attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topology + -- change. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at acting + as a graceful restart helper for the neighbor." + ::= { ospfNbrEntry 14 } + +-- OSPF Virtual Neighbor Table + + + + + ospfVirtNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfVirtNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes all virtual neighbors. + Since virtual links are configured + in the Virtual Interface Table, this table is read-only." + REFERENCE + "OSPF Version 2, Section 15 Virtual Links" + ::= { ospf 11 } + + ospfVirtNbrEntry OBJECT-TYPE + SYNTAX OspfVirtNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Virtual neighbor information." + INDEX { ospfVirtNbrArea, ospfVirtNbrRtrId } + ::= { ospfVirtNbrTable 1 } + + OspfVirtNbrEntry ::= + SEQUENCE { + ospfVirtNbrArea + AreaID, + ospfVirtNbrRtrId + RouterID, + ospfVirtNbrIpAddr + IpAddress, + ospfVirtNbrOptions + Integer32, + ospfVirtNbrState + INTEGER, + ospfVirtNbrEvents + Counter32, + ospfVirtNbrLsRetransQLen + Gauge32, + ospfVirtNbrHelloSuppressed + TruthValue, + ospfVirtNbrRestartHelperStatus + INTEGER, + ospfVirtNbrRestartHelperAge + Unsigned32, + ospfVirtNbrRestartHelperExitReason + INTEGER + } + + ospfVirtNbrArea OBJECT-TYPE + + + + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The Transit Area Identifier." + ::= { ospfVirtNbrEntry 1 } + + ospfVirtNbrRtrId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "A 32-bit integer uniquely identifying the + neighboring router in the Autonomous System." + ::= { ospfVirtNbrEntry 2 } + + ospfVirtNbrIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address this virtual neighbor is using." + ::= { ospfVirtNbrEntry 3 } + + ospfVirtNbrOptions OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A bit mask corresponding to the neighbor's + options field. + + Bit 1, if set, indicates that the system will + operate on Type of Service metrics other than + TOS 0. If zero, the neighbor will ignore all + metrics except the TOS 0 metric. + + Bit 2, if set, indicates that the system is + network multicast capable, i.e., that it + implements OSPF multicast routing." + ::= { ospfVirtNbrEntry 4 } + + ospfVirtNbrState OBJECT-TYPE + SYNTAX INTEGER { + down (1), + attempt (2), + + + + init (3), + twoWay (4), + exchangeStart (5), + exchange (6), + loading (7), + full (8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the virtual neighbor relationship." + ::= { ospfVirtNbrEntry 5 } + + ospfVirtNbrEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this virtual link has + changed its state or an error has occurred. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at other + times as indicated by the value of ospfDiscontinuityTime." + ::= { ospfVirtNbrEntry 6 } + + ospfVirtNbrLsRetransQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current length of the retransmission + queue." + ::= { ospfVirtNbrEntry 7 } + + ospfVirtNbrHelloSuppressed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether Hellos are being suppressed + to the neighbor." + ::= { ospfVirtNbrEntry 8 } + + ospfVirtNbrRestartHelperStatus OBJECT-TYPE + SYNTAX INTEGER { notHelping (1), + helping (2) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether the router is acting + as a graceful restart helper for the neighbor." + ::= { ospfVirtNbrEntry 9 } + + ospfVirtNbrRestartHelperAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Remaining time in current OSPF graceful restart + interval, if the router is acting as a restart + helper for the neighbor." + ::= { ospfVirtNbrEntry 10 } + + ospfVirtNbrRestartHelperExitReason OBJECT-TYPE + SYNTAX INTEGER { none (1), -- not attempted + inProgress (2), -- restart in + -- progress + completed (3), -- successfully + -- completed + timedOut (4), -- timed out + topologyChanged (5) -- aborted due to + -- topology + -- change. + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the outcome of the last attempt at acting + as a graceful restart helper for the neighbor." + ::= { ospfVirtNbrEntry 11 } + +-- OSPF Link State Database, External + + ospfExtLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfExtLsdbEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The OSPF Process's external LSA link state database. + + This table is identical to the OSPF LSDB Table + in format, but contains only external link state + advertisements. The purpose is to allow external + + + + LSAs to be displayed once for the router rather + than once in each non-stub area. + + Note that external LSAs are also in the AS-scope link state + database." + REFERENCE + "OSPF Version 2, Section 12 Link State Advertisements" + ::= { ospf 12 } + + ospfExtLsdbEntry OBJECT-TYPE + SYNTAX OspfExtLsdbEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A single link state advertisement." + INDEX { ospfExtLsdbType, ospfExtLsdbLsid, ospfExtLsdbRouterId } + ::= { ospfExtLsdbTable 1 } + + OspfExtLsdbEntry ::= + SEQUENCE { + ospfExtLsdbType + INTEGER, + ospfExtLsdbLsid + IpAddress, + ospfExtLsdbRouterId + RouterID, + ospfExtLsdbSequence + Integer32, + ospfExtLsdbAge + Integer32, + ospfExtLsdbChecksum + Integer32, + ospfExtLsdbAdvertisement + OCTET STRING + } + + ospfExtLsdbType OBJECT-TYPE + SYNTAX INTEGER { + asExternalLink (5) + } + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate advertisement + format." + REFERENCE + + + + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + + ::= { ospfExtLsdbEntry 1 } + + ospfExtLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing either a Router ID or an IP address; + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfExtLsdbEntry 2 } + + ospfExtLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS deprecated + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfExtLsdbEntry 3 } + + ospfExtLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate link state + advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfExtLsdbEntry 4 } + + + + ospfExtLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfExtLsdbEntry 5 } + + ospfExtLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO + connectionless datagrams; it is commonly referred + to as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfExtLsdbEntry 6 } + + ospfExtLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(36)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The entire link state advertisement, including + its header." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements" + ::= { ospfExtLsdbEntry 7 } + +-- OSPF Use of the CIDR Route Table + + ospfRouteGroup OBJECT IDENTIFIER ::= { ospf 13 } + +-- The IP Forwarding Table defines a number of objects for use by +-- the routing protocol to externalize its information. Most of + + + +-- the variables (ipForwardDest, ipForwardMask, ipForwardPolicy, +-- ipForwardNextHop, ipForwardIfIndex, ipForwardType, +-- ipForwardProto, ipForwardAge, and ipForwardNextHopAS) are +-- defined there. + +-- Those that leave some discretion are defined here. + +-- ipCidrRouteProto is, of course, ospf (13). + +-- ipCidrRouteAge is the time since the route was first +-- calculated, as opposed to the time since the last SPF run. +-- ipCidrRouteInfo is an OBJECT IDENTIFIER for use by the routing +-- protocol. The following values shall be found there depending +-- on the way the route was calculated. + + ospfIntraArea OBJECT IDENTIFIER ::= { ospfRouteGroup 1 } + ospfInterArea OBJECT IDENTIFIER ::= { ospfRouteGroup 2 } + ospfExternalType1 OBJECT IDENTIFIER ::= { ospfRouteGroup 3 } + ospfExternalType2 OBJECT IDENTIFIER ::= { ospfRouteGroup 4 } + +-- ipCidrRouteMetric1 is, by definition, the primary routing +-- metric. Therefore, it should be the metric that route +-- selection is based on. For intra-area and inter-area routes, +-- it is an OSPF metric. For External Type 1 (comparable value) +-- routes, it is an OSPF metric plus the External Metric. For +-- external Type 2 (non-comparable value) routes, it is the +-- external metric. + +-- ipCidrRouteMetric2 is, by definition, a secondary routing +-- metric. Therefore, it should be the metric that breaks a tie +-- among routes having equal metric1 values and the same +-- calculation rule. For intra-area, inter-area routes, and +-- External Type 1 (comparable value) routes, it is unused. For +-- External Type 2 (non-comparable value) routes, it is the metric +-- to the AS border router. + +-- ipCidrRouteMetric3, ipCidrRouteMetric4, and ipCidrRouteMetric5 +-- are unused. + +-- The OSPF Area Aggregate Table +-- +-- This table replaces the OSPF Area Summary Table, being an +-- extension of that for CIDR routers. + + ospfAreaAggregateTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAreaAggregateEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The Area Aggregate Table acts as an adjunct + to the Area Table. It describes those address aggregates + that are configured to be propagated from an area. + Its purpose is to reduce the amount of information + that is known beyond an Area's borders. + + It contains a set of IP address ranges + specified by an IP address/IP network mask pair. + For example, a class B address range of X.X.X.X + with a network mask of 255.255.0.0 includes all IP + addresses from X.X.0.0 to X.X.255.255. + + Note that if ranges are configured such that one range + subsumes another range (e.g., 10.0.0.0 mask 255.0.0.0 + and 10.1.0.0 mask 255.255.0.0), + the most specific match is the preferred one." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospf 14 } + + ospfAreaAggregateEntry OBJECT-TYPE + SYNTAX OspfAreaAggregateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single area aggregate entry. + + Information in this table is persistent and when this object + is written the entity SHOULD save the change to non-volatile + storage." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + INDEX { ospfAreaAggregateAreaID, ospfAreaAggregateLsdbType, + ospfAreaAggregateNet, ospfAreaAggregateMask } + ::= { ospfAreaAggregateTable 1 } + + OspfAreaAggregateEntry ::= + SEQUENCE { + ospfAreaAggregateAreaID + AreaID, + ospfAreaAggregateLsdbType + INTEGER, + ospfAreaAggregateNet + IpAddress, + ospfAreaAggregateMask + IpAddress, + ospfAreaAggregateStatus + + + + RowStatus, + ospfAreaAggregateEffect + INTEGER, + ospfAreaAggregateExtRouteTag + Unsigned32 + } + + ospfAreaAggregateAreaID OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The area within which the address aggregate is to be + found." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaAggregateEntry 1 } + + ospfAreaAggregateLsdbType OBJECT-TYPE + SYNTAX INTEGER { + summaryLink (3), + nssaExternalLink (7) + } + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The type of the address aggregate. This field + specifies the Lsdb type that this address + aggregate applies to." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfAreaAggregateEntry 2 } + + ospfAreaAggregateNet OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The IP address of the net or subnet indicated + by the range." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaAggregateEntry 3 } + + + + + ospfAreaAggregateMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only -- read-only since originally an + -- SMIv1 index + STATUS current + DESCRIPTION + "The subnet mask that pertains to the net or + subnet." + REFERENCE + "OSPF Version 2, Appendix C.2 Area parameters" + ::= { ospfAreaAggregateEntry 4 } + + ospfAreaAggregateStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object permits management of the table by + facilitating actions such as row creation, + construction, and destruction. + + The value of this object has no effect on + whether other objects in this conceptual row can be + modified." + ::= { ospfAreaAggregateEntry 5 } + + ospfAreaAggregateEffect OBJECT-TYPE + SYNTAX INTEGER { + advertiseMatching (1), + doNotAdvertiseMatching (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Subnets subsumed by ranges either trigger the + advertisement of the indicated aggregate + (advertiseMatching) or result in the subnet's not + being advertised at all outside the area." + DEFVAL { advertiseMatching } + ::= { ospfAreaAggregateEntry 6 } + + ospfAreaAggregateExtRouteTag OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "External route tag to be included in NSSA (type-7) + LSAs." + + + + DEFVAL { 0 } + ::= { ospfAreaAggregateEntry 7 } + +-- OSPF Link State Database, link-local for non-virtual links + + + ospfLocalLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfLocalLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF Process's link-local link state database + for non-virtual links. + This table is identical to the OSPF LSDB Table + in format, but contains only link-local Link State + Advertisements for non-virtual links. The purpose is + to allow link-local LSAs to be displayed for each + non-virtual interface. This table is implemented to + support type-9 LSAs that are defined + in 'The OSPF Opaque LSA Option'." + REFERENCE + "OSPF Version 2, Section 12 Link State Advertisements + and The OSPF Opaque LSA Option" + ::= { ospf 17 } + + ospfLocalLsdbEntry OBJECT-TYPE + SYNTAX OspfLocalLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single link state advertisement." + INDEX { ospfLocalLsdbIpAddress, ospfLocalLsdbAddressLessIf, + ospfLocalLsdbType, ospfLocalLsdbLsid, ospfLocalLsdbRouterId + } + ::= { ospfLocalLsdbTable 1 } + + OspfLocalLsdbEntry ::= + SEQUENCE { + ospfLocalLsdbIpAddress + IpAddress, + ospfLocalLsdbAddressLessIf + InterfaceIndexOrZero, + ospfLocalLsdbType + INTEGER, + ospfLocalLsdbLsid + IpAddress, + ospfLocalLsdbRouterId + RouterID, + + + + ospfLocalLsdbSequence + Integer32, + ospfLocalLsdbAge + Integer32, + ospfLocalLsdbChecksum + Integer32, + ospfLocalLsdbAdvertisement + OCTET STRING + } + + ospfLocalLsdbIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the interface from + which the LSA was received if the interface is + numbered." + REFERENCE + "OSPF Version 2, Appendix C.3 Interface parameters" + ::= { ospfLocalLsdbEntry 1 } + + ospfLocalLsdbAddressLessIf OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interface index of the interface from + which the LSA was received if the interface is + unnumbered." + REFERENCE + "OSPF Version 2, Appendix C.3 Interface parameters" + ::= { ospfLocalLsdbEntry 2 } + + ospfLocalLsdbType OBJECT-TYPE + SYNTAX INTEGER { localOpaqueLink (9) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate + advertisement format." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfLocalLsdbEntry 3 } + + ospfLocalLsdbLsid OBJECT-TYPE + + + + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing a 32-bit identifier in IP address format; + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfLocalLsdbEntry 4 } + + ospfLocalLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfLocalLsdbEntry 5 } + + ospfLocalLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate link state + advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfLocalLsdbEntry 6 } + + ospfLocalLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfLocalLsdbEntry 7 } + + ospfLocalLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO + connectionless datagrams; it is commonly referred + to as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfLocalLsdbEntry 8 } + + ospfLocalLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire link state advertisement, including + its header. + + Note that for variable length LSAs, SNMP agents + may not be able to return the largest string size." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements" + ::= { ospfLocalLsdbEntry 9 } + +-- OSPF Link State Database, link-local for virtual Links + + ospfVirtLocalLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfVirtLocalLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF Process's link-local link state database + for virtual links. + + + + + This table is identical to the OSPF LSDB Table + in format, but contains only link-local Link State + Advertisements for virtual links. The purpose is to + allow link-local LSAs to be displayed for each virtual + interface. This table is implemented to support type-9 LSAs + that are defined in 'The OSPF Opaque LSA Option'." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements and The OSPF Opaque LSA Option" + ::= { ospf 18 } + + ospfVirtLocalLsdbEntry OBJECT-TYPE + SYNTAX OspfVirtLocalLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single link state advertisement." + INDEX { ospfVirtLocalLsdbTransitArea, + ospfVirtLocalLsdbNeighbor, + ospfVirtLocalLsdbType, + ospfVirtLocalLsdbLsid, + ospfVirtLocalLsdbRouterId + } + ::= { ospfVirtLocalLsdbTable 1 } + + OspfVirtLocalLsdbEntry ::= + SEQUENCE { + ospfVirtLocalLsdbTransitArea + AreaID, + ospfVirtLocalLsdbNeighbor + RouterID, + ospfVirtLocalLsdbType + INTEGER, + ospfVirtLocalLsdbLsid + IpAddress, + ospfVirtLocalLsdbRouterId + RouterID, + ospfVirtLocalLsdbSequence + Integer32, + ospfVirtLocalLsdbAge + Integer32, + ospfVirtLocalLsdbChecksum + Integer32, + ospfVirtLocalLsdbAdvertisement + OCTET STRING + } + + ospfVirtLocalLsdbTransitArea OBJECT-TYPE + + + + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The transit area that the virtual link + traverses. By definition, this is not 0.0.0.0." + REFERENCE + "OSPF Version 2, Appendix C.3 Interface parameters" + ::= { ospfVirtLocalLsdbEntry 1 } + + ospfVirtLocalLsdbNeighbor OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Router ID of the virtual neighbor." + REFERENCE + "OSPF Version 2, Appendix C.3 Interface parameters" + ::= { ospfVirtLocalLsdbEntry 2 } + + ospfVirtLocalLsdbType OBJECT-TYPE + SYNTAX INTEGER { localOpaqueLink (9) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate + advertisement format." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfVirtLocalLsdbEntry 3 } + + ospfVirtLocalLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing a 32-bit identifier in IP address format; + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfVirtLocalLsdbEntry 4 } + + ospfVirtLocalLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfVirtLocalLsdbEntry 5 } + + ospfVirtLocalLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate link state + advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfVirtLocalLsdbEntry 6 } + + ospfVirtLocalLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfVirtLocalLsdbEntry 7 } + + ospfVirtLocalLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + + + + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO + connectionless datagrams; it is commonly + referred to as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfVirtLocalLsdbEntry 8 } + + ospfVirtLocalLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire link state advertisement, including + its header." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements. + + Note that for variable length LSAs, SNMP agents + may not be able to return the largest string size." + ::= { ospfVirtLocalLsdbEntry 9 } + +-- OSPF Link State Database, AS-scope + + ospfAsLsdbTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAsLsdbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The OSPF Process's AS-scope LSA link state database. + The database contains the AS-scope Link State + Advertisements from throughout the areas that + the device is attached to. + + This table is identical to the OSPF LSDB Table + in format, but contains only AS-scope Link State + Advertisements. The purpose is to allow AS-scope + LSAs to be displayed once for the router rather + than once in each non-stub area." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements" + ::= { ospf 19 } + + ospfAsLsdbEntry OBJECT-TYPE + SYNTAX OspfAsLsdbEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single link state advertisement." + INDEX { ospfAsLsdbType, ospfAsLsdbLsid, ospfAsLsdbRouterId } + ::= { ospfAsLsdbTable 1 } + + OspfAsLsdbEntry ::= + SEQUENCE { + ospfAsLsdbType + INTEGER, + ospfAsLsdbLsid + IpAddress, + ospfAsLsdbRouterId + RouterID, + ospfAsLsdbSequence + Integer32, + ospfAsLsdbAge + Integer32, + ospfAsLsdbChecksum + Integer32, + ospfAsLsdbAdvertisement + OCTET STRING + } + + ospfAsLsdbType OBJECT-TYPE + SYNTAX INTEGER { + asExternalLink (5), + asOpaqueLink (11) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of the link state advertisement. + Each link state type has a separate + advertisement format." + REFERENCE + "OSPF Version 2, Appendix A.4.1 The Link State + Advertisement header" + ::= { ospfAsLsdbEntry 1 } + + ospfAsLsdbLsid OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Link State ID is an LS Type Specific field + containing either a Router ID or an IP address; + + + + it identifies the piece of the routing domain + that is being described by the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.4 Link State ID" + ::= { ospfAsLsdbEntry 2 } + + ospfAsLsdbRouterId OBJECT-TYPE + SYNTAX RouterID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The 32-bit number that uniquely identifies the + originating router in the Autonomous System." + REFERENCE + "OSPF Version 2, Appendix C.1 Global parameters" + ::= { ospfAsLsdbEntry 3 } + + ospfAsLsdbSequence OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sequence number field is a signed 32-bit + integer. It starts with the value '80000001'h, + or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. + Thus, a typical sequence number will be very negative. + It is used to detect old and duplicate link state + advertisements. The space of sequence numbers is linearly + ordered. The larger the sequence number, the more recent + the advertisement." + REFERENCE + "OSPF Version 2, Section 12.1.6 LS sequence + number" + ::= { ospfAsLsdbEntry 4 } + + ospfAsLsdbAge OBJECT-TYPE + SYNTAX Integer32 -- Should be 0..MaxAge, except when + -- doNotAge bit is set + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the age of the link state + advertisement in seconds." + REFERENCE + "OSPF Version 2, Section 12.1.1 LS age" + ::= { ospfAsLsdbEntry 5 } + + + + + ospfAsLsdbChecksum OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This field is the checksum of the complete + contents of the advertisement, excepting the + age field. The age field is excepted so that + an advertisement's age can be incremented + without updating the checksum. The checksum + used is the same that is used for ISO + connectionless datagrams; it is commonly referred + to as the Fletcher checksum." + REFERENCE + "OSPF Version 2, Section 12.1.7 LS checksum" + ::= { ospfAsLsdbEntry 6 } + + ospfAsLsdbAdvertisement OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..65535)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The entire link state advertisement, including + its header." + REFERENCE + "OSPF Version 2, Section 12 Link State + Advertisements. + + Note that for variable length LSAs, SNMP agents + may not be able to return the largest string size." + ::= { ospfAsLsdbEntry 7 } + + -- OSPF Area LSA Counter Table + + ospfAreaLsaCountTable OBJECT-TYPE + SYNTAX SEQUENCE OF OspfAreaLsaCountEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maintains per-area, per-LSA-type counters" + ::= { ospf 20 } + + ospfAreaLsaCountEntry OBJECT-TYPE + SYNTAX OspfAreaLsaCountEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry with a number of link advertisements + + + + of a given type for a given area." + INDEX { ospfAreaLsaCountAreaId, ospfAreaLsaCountLsaType } + ::= { ospfAreaLsaCountTable 1 } + + OspfAreaLsaCountEntry ::= + SEQUENCE { + ospfAreaLsaCountAreaId + AreaID, + ospfAreaLsaCountLsaType + INTEGER, + ospfAreaLsaCountNumber + Gauge32 + } + + ospfAreaLsaCountAreaId OBJECT-TYPE + SYNTAX AreaID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry Area ID." + ::= { ospfAreaLsaCountEntry 1 } + + ospfAreaLsaCountLsaType OBJECT-TYPE + SYNTAX INTEGER { + routerLink (1), + networkLink (2), + summaryLink (3), + asSummaryLink (4), + multicastLink (6), + nssaExternalLink (7), + areaOpaqueLink (10) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry LSA type." + ::= { ospfAreaLsaCountEntry 2 } + + ospfAreaLsaCountNumber OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of LSAs of a given type for a given area." + ::= { ospfAreaLsaCountEntry 3 } + +-- conformance information + + + + +ospfConformance OBJECT IDENTIFIER ::= { ospf 15 } + +ospfGroups OBJECT IDENTIFIER ::= { ospfConformance 1 } +ospfCompliances OBJECT IDENTIFIER ::= { ospfConformance 2 } + +-- compliance statements + + ospfCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for OSPF systems + conforming to RFC 1850." + MODULE -- this module + MANDATORY-GROUPS { + ospfBasicGroup, + ospfAreaGroup, + ospfStubAreaGroup, + ospfIfGroup, + ospfIfMetricGroup, + ospfVirtIfGroup, + ospfNbrGroup, + ospfVirtNbrGroup, + ospfAreaAggregateGroup + } + GROUP ospfHostGroup + DESCRIPTION + "This group is mandatory for OSPF systems that support + attached hosts." + GROUP ospfLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their per-area link state database." + GROUP ospfExtLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their external link state database." + ::= { ospfCompliances 1 } + + ospfCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement." + MODULE -- this module + MANDATORY-GROUPS { + ospfBasicGroup2, + ospfAreaGroup2, + ospfStubAreaGroup, + ospfIfGroup2, + + + + ospfIfMetricGroup, + ospfVirtIfGroup2, + ospfNbrGroup2, + ospfVirtNbrGroup2, + ospfAreaAggregateGroup2 + } + GROUP ospfHostGroup2 + DESCRIPTION + "This group is mandatory for OSPF systems that support + attached hosts." + GROUP ospfLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their per-area link state database." + GROUP ospfAsLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their AS-scope link state database." + GROUP ospfLocalLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their per-link link state database for non-virtual + links." + GROUP ospfVirtLocalLsdbGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + their per-link link state database for virtual links." + GROUP ospfAreaLsaCountGroup + DESCRIPTION + "This group is mandatory for OSPF systems that display + per-area, per-LSA-type counters." + ::= { ospfCompliances 2 } + + ospfComplianceObsolete MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "Contains obsolete object groups." + MODULE -- this module + GROUP ospfAreaRangeGroup + DESCRIPTION + "This group is obsolete, and it is mandatory only + for non-Classless Inter-Domain Routing (CIDR) OSPF + systems that support multiple areas." + GROUP ospfObsoleteGroup + DESCRIPTION + "This group contains obsolete objects, + which are no longer required for OSPF systems." + ::= { ospfCompliances 3 } + + + +-- units of conformance + + ospfBasicGroup OBJECT-GROUP + OBJECTS { + ospfRouterId, + ospfAdminStat, + ospfVersionNumber, + ospfAreaBdrRtrStatus, + ospfASBdrRtrStatus, + ospfExternLsaCount, + ospfExternLsaCksumSum, + ospfTOSSupport, + ospfOriginateNewLsas, + ospfRxNewLsas, + ospfExtLsdbLimit, + ospfMulticastExtensions, + ospfExitOverflowInterval, + ospfDemandExtensions + } + STATUS deprecated + DESCRIPTION + "These objects are used to monitor/manage + global OSPF parameters. This object group + conforms to RFC 1850." + ::= { ospfGroups 1 } + + ospfAreaGroup OBJECT-GROUP + OBJECTS { + ospfAreaId, + ospfImportAsExtern, + ospfSpfRuns, + ospfAreaBdrRtrCount, + ospfAsBdrRtrCount, + ospfAreaLsaCount, + ospfAreaLsaCksumSum, + ospfAreaSummary, + ospfAreaStatus + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems + supporting areas per RFC 1850." + ::= { ospfGroups 2 } + + ospfStubAreaGroup OBJECT-GROUP + OBJECTS { + ospfStubAreaId, + ospfStubTOS, + + + + ospfStubMetric, + ospfStubStatus, + ospfStubMetricType + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + supporting stub areas." + ::= { ospfGroups 3 } + + ospfLsdbGroup OBJECT-GROUP + OBJECTS { + ospfLsdbAreaId, + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId, + ospfLsdbSequence, + ospfLsdbAge, + ospfLsdbChecksum, + ospfLsdbAdvertisement + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that display their link state database." + ::= { ospfGroups 4 } + + ospfAreaRangeGroup OBJECT-GROUP + OBJECTS { + ospfAreaRangeAreaId, + ospfAreaRangeNet, + ospfAreaRangeMask, + ospfAreaRangeStatus, + ospfAreaRangeEffect + } + STATUS obsolete + DESCRIPTION + "These objects are used for non-CIDR OSPF + systems that support multiple areas. This + object group is obsolete." + ::= { ospfGroups 5 } + + ospfHostGroup OBJECT-GROUP + OBJECTS { + ospfHostIpAddress, + ospfHostTOS, + ospfHostMetric, + ospfHostStatus, + + + + ospfHostAreaID + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems + that support attached hosts." + ::= { ospfGroups 6 } + + ospfIfGroup OBJECT-GROUP + OBJECTS { + ospfIfIpAddress, + ospfAddressLessIf, + ospfIfAreaId, + ospfIfType, + ospfIfAdminStat, + ospfIfRtrPriority, + ospfIfTransitDelay, + ospfIfRetransInterval, + ospfIfHelloInterval, + ospfIfRtrDeadInterval, + ospfIfPollInterval, + ospfIfState, + ospfIfDesignatedRouter, + ospfIfBackupDesignatedRouter, + ospfIfEvents, + ospfIfAuthType, + ospfIfAuthKey, + ospfIfStatus, + ospfIfMulticastForwarding, + ospfIfDemand + } + STATUS deprecated + DESCRIPTION + "These objects are used to monitor/manage OSPF + interfaces. This object group conforms to RFC 1850." + ::= { ospfGroups 7 } + + ospfIfMetricGroup OBJECT-GROUP + OBJECTS { + ospfIfMetricIpAddress, + ospfIfMetricAddressLessIf, + ospfIfMetricTOS, + ospfIfMetricValue, + ospfIfMetricStatus + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems for supporting + + + + interface metrics." + ::= { ospfGroups 8 } + + ospfVirtIfGroup OBJECT-GROUP + OBJECTS { + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfVirtIfTransitDelay, + ospfVirtIfRetransInterval, + ospfVirtIfHelloInterval, + ospfVirtIfRtrDeadInterval, + ospfVirtIfState, + ospfVirtIfEvents, + ospfVirtIfAuthType, + ospfVirtIfAuthKey, + ospfVirtIfStatus + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems for supporting + virtual interfaces. This object group conforms + to RFC 1850." + ::= { ospfGroups 9 } + + ospfNbrGroup OBJECT-GROUP + OBJECTS { + ospfNbrIpAddr, + ospfNbrAddressLessIndex, + ospfNbrRtrId, + ospfNbrOptions, + ospfNbrPriority, + ospfNbrState, + ospfNbrEvents, + ospfNbrLsRetransQLen, + ospfNbmaNbrStatus, + ospfNbmaNbrPermanence, + ospfNbrHelloSuppressed + } + STATUS deprecated + DESCRIPTION + "These objects are used to monitor/manage OSPF neighbors. + This object group conforms to RFC 1850." + ::= { ospfGroups 10 } + + ospfVirtNbrGroup OBJECT-GROUP + OBJECTS { + ospfVirtNbrArea, + ospfVirtNbrRtrId, + + + + ospfVirtNbrIpAddr, + ospfVirtNbrOptions, + ospfVirtNbrState, + ospfVirtNbrEvents, + ospfVirtNbrLsRetransQLen, + ospfVirtNbrHelloSuppressed + } + STATUS deprecated + DESCRIPTION + "These objects are used to monitor/manage OSPF virtual + neighbors. This object group conforms to RFC 1850." + + ::= { ospfGroups 11 } + + ospfExtLsdbGroup OBJECT-GROUP + OBJECTS { + ospfExtLsdbType, + ospfExtLsdbLsid, + ospfExtLsdbRouterId, + ospfExtLsdbSequence, + ospfExtLsdbAge, + ospfExtLsdbChecksum, + ospfExtLsdbAdvertisement + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems that display + their link state database. This object group + conforms to RFC 1850. + + This object group is replaced by the ospfAsLsdbGroup + in order to support any AS-scope LSA type in a single + table." + ::= { ospfGroups 12 } + + ospfAreaAggregateGroup OBJECT-GROUP + OBJECTS { + ospfAreaAggregateAreaID, + ospfAreaAggregateLsdbType, + ospfAreaAggregateNet, + ospfAreaAggregateMask, + ospfAreaAggregateStatus, + ospfAreaAggregateEffect + } + STATUS deprecated + DESCRIPTION + "These objects are used for OSPF systems to support + network prefix aggregation across areas." + + + + ::= { ospfGroups 13 } + + ospfLocalLsdbGroup OBJECT-GROUP + OBJECTS { + ospfLocalLsdbSequence, + ospfLocalLsdbAge, + ospfLocalLsdbChecksum, + ospfLocalLsdbAdvertisement + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that display their link-local link state databases + for non-virtual links." + ::= { ospfGroups 14 } + + ospfVirtLocalLsdbGroup OBJECT-GROUP + OBJECTS { + ospfVirtLocalLsdbSequence, + ospfVirtLocalLsdbAge, + ospfVirtLocalLsdbChecksum, + ospfVirtLocalLsdbAdvertisement + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that display their link-local link state databases + for virtual links." + ::= { ospfGroups 15 } + + ospfAsLsdbGroup OBJECT-GROUP + OBJECTS { + ospfAsLsdbSequence, + ospfAsLsdbAge, + ospfAsLsdbChecksum, + ospfAsLsdbAdvertisement + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that display their AS-scope link state database." + ::= { ospfGroups 16 } + + ospfBasicGroup2 OBJECT-GROUP + OBJECTS { + ospfRouterId, + ospfAdminStat, + ospfVersionNumber, + + + + ospfAreaBdrRtrStatus, + ospfASBdrRtrStatus, + ospfExternLsaCount, + ospfExternLsaCksumSum, + ospfTOSSupport, + ospfOriginateNewLsas, + ospfRxNewLsas, + ospfExtLsdbLimit, + ospfMulticastExtensions, + ospfExitOverflowInterval, + ospfDemandExtensions, + ospfRFC1583Compatibility, + ospfOpaqueLsaSupport, + ospfReferenceBandwidth, + ospfRestartSupport, + ospfRestartInterval, + ospfRestartStrictLsaChecking, + ospfRestartStatus, + ospfRestartAge, + ospfRestartExitReason, + ospfAsLsaCount, + ospfAsLsaCksumSum, + ospfStubRouterSupport, + ospfStubRouterAdvertisement, + ospfDiscontinuityTime + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF global + parameters." + ::= { ospfGroups 17 } + + ospfAreaGroup2 OBJECT-GROUP + OBJECTS { + ospfAreaId, + ospfImportAsExtern, + ospfSpfRuns, + ospfAreaBdrRtrCount, + ospfAsBdrRtrCount, + ospfAreaLsaCount, + ospfAreaLsaCksumSum, + ospfAreaSummary, + ospfAreaStatus, + ospfAreaNssaTranslatorRole, + ospfAreaNssaTranslatorState, + ospfAreaNssaTranslatorStabilityInterval, + ospfAreaNssaTranslatorEvents + } + + + + STATUS current + DESCRIPTION + "These objects are used by OSPF systems + to support areas." + ::= { ospfGroups 18 } + + ospfIfGroup2 OBJECT-GROUP + OBJECTS { + ospfIfIpAddress, + ospfAddressLessIf, + ospfIfAreaId, + ospfIfType, + ospfIfAdminStat, + ospfIfRtrPriority, + ospfIfTransitDelay, + ospfIfRetransInterval, + ospfIfHelloInterval, + ospfIfRtrDeadInterval, + ospfIfPollInterval, + ospfIfState, + ospfIfDesignatedRouter, + ospfIfBackupDesignatedRouter, + ospfIfEvents, + ospfIfAuthType, + ospfIfAuthKey, + ospfIfStatus, + ospfIfMulticastForwarding, + ospfIfDemand, + ospfIfLsaCount, + ospfIfLsaCksumSum + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF interfaces." + ::= { ospfGroups 19 } + + ospfVirtIfGroup2 OBJECT-GROUP + OBJECTS { + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfVirtIfTransitDelay, + ospfVirtIfRetransInterval, + ospfVirtIfHelloInterval, + ospfVirtIfRtrDeadInterval, + ospfVirtIfState, + ospfVirtIfEvents, + ospfVirtIfAuthType, + ospfVirtIfAuthKey, + + + + ospfVirtIfStatus, + ospfVirtIfLsaCount, + ospfVirtIfLsaCksumSum, + ospfIfDesignatedRouterId, + ospfIfBackupDesignatedRouterId + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF + virtual interfaces." + ::= { ospfGroups 20 } + + ospfNbrGroup2 OBJECT-GROUP + OBJECTS { + ospfNbrIpAddr, + ospfNbrAddressLessIndex, + ospfNbrRtrId, + ospfNbrOptions, + ospfNbrPriority, + ospfNbrState, + ospfNbrEvents, + ospfNbrLsRetransQLen, + ospfNbmaNbrStatus, + ospfNbmaNbrPermanence, + ospfNbrHelloSuppressed, + ospfNbrRestartHelperStatus, + ospfNbrRestartHelperAge, + ospfNbrRestartHelperExitReason + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF + neighbors." + ::= { ospfGroups 21 } + + ospfVirtNbrGroup2 OBJECT-GROUP + OBJECTS { + ospfVirtNbrArea, + ospfVirtNbrRtrId, + ospfVirtNbrIpAddr, + ospfVirtNbrOptions, + ospfVirtNbrState, + ospfVirtNbrEvents, + ospfVirtNbrLsRetransQLen, + ospfVirtNbrHelloSuppressed, + ospfVirtNbrRestartHelperStatus, + ospfVirtNbrRestartHelperAge, + ospfVirtNbrRestartHelperExitReason + + + + } + STATUS current + DESCRIPTION + "These objects are used to monitor/manage OSPF + virtual neighbors." + ::= { ospfGroups 22 } + + ospfAreaAggregateGroup2 OBJECT-GROUP + OBJECTS { + ospfAreaAggregateAreaID, + ospfAreaAggregateLsdbType, + ospfAreaAggregateNet, + ospfAreaAggregateMask, + ospfAreaAggregateStatus, + ospfAreaAggregateEffect, + ospfAreaAggregateExtRouteTag + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems to support + network prefix aggregation across areas." + ::= { ospfGroups 23 } + + ospfAreaLsaCountGroup OBJECT-GROUP + OBJECTS { + ospfAreaLsaCountNumber + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems that display + per-area, per-LSA-type counters." + ::= { ospfGroups 24 } + + ospfHostGroup2 OBJECT-GROUP + OBJECTS { + ospfHostIpAddress, + ospfHostTOS, + ospfHostMetric, + ospfHostStatus, + ospfHostCfgAreaID + } + STATUS current + DESCRIPTION + "These objects are used for OSPF systems + that support attached hosts." + ::= { ospfGroups 25 } + +-- This object group is included for SMI conformance. It is not a + + + +-- mandatory group for compliance with this MIB + + ospfObsoleteGroup OBJECT-GROUP + OBJECTS { + ospfAuthType + } + STATUS obsolete + DESCRIPTION + "These objects are obsolete and are no longer required for + OSPF systems. They are placed into this group for SMI + conformance." + ::= { ospfGroups 26 } + +END diff --git a/mibs/ietf/OSPF-TRAP-MIB b/mibs/ietf/OSPF-TRAP-MIB new file mode 100644 index 0000000..780c228 --- /dev/null +++ b/mibs/ietf/OSPF-TRAP-MIB @@ -0,0 +1,616 @@ +OSPF-TRAP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, IpAddress + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + ospfRouterId, ospfIfIpAddress, ospfAddressLessIf, ospfIfState, + ospfVirtIfAreaId, ospfVirtIfNeighbor, ospfVirtIfState, + ospfNbrIpAddr, ospfNbrAddressLessIndex, ospfNbrRtrId, + ospfNbrState, ospfVirtNbrArea, ospfVirtNbrRtrId, + ospfVirtNbrState, ospfLsdbType, ospfLsdbLsid, ospfLsdbRouterId, + ospfLsdbAreaId, ospfExtLsdbLimit, ospf, ospfAreaId, + ospfAreaNssaTranslatorState, ospfRestartStatus, + ospfRestartInterval, ospfRestartExitReason, + ospfNbrRestartHelperStatus, ospfNbrRestartHelperAge, + ospfNbrRestartHelperExitReason, ospfVirtNbrRestartHelperStatus, + ospfVirtNbrRestartHelperAge, ospfVirtNbrRestartHelperExitReason + FROM OSPF-MIB; + + ospfTrap MODULE-IDENTITY + + LAST-UPDATED "200611100000Z" -- November 10, 2006 00:00:00 EST + ORGANIZATION "IETF OSPF Working Group" + CONTACT-INFO + "WG E-Mail: ospf@ietf.org + + WG Chairs: acee@cisco.com + rohit@gmail.com + + Editors: Dan Joyal + Nortel + 600 Technology Park Drive + Billerica, MA 01821 + djoyal@nortel.com + + Piotr Galecki + Airvana + 19 Alpha Road + Chelmsford, MA 01824 + pgalecki@airvana.com + + Spencer Giacalone + CSFB + Eleven Madison Ave + New York, NY 10010-3629 + + + spencer.giacalone@gmail.com" + + DESCRIPTION + "The MIB module to describe traps for the OSPF + Version 2 Protocol. + + Copyright (C) The IETF Trust (2006). + This version of this MIB module is part of + RFC 4750; see the RFC itself for full legal + notices." + + REVISION "200611100000Z" -- November 10, 2006 00:00:00 EST + DESCRIPTION + "Updated for latest changes to OSPFv2: + -added graceful restart related traps + -added new config error types + -added ospfNssaTranslatorStatusChange trap. + See Appendix B of RFC 4750 for more details. + + This version published as part of RFC 4750" + + REVISION "199501201225Z" -- Fri Jan 20 12:25:50 PST 1995 + DESCRIPTION + "The initial SMIv2 revision of this MIB module, published + in RFC 1850." + + ::= { ospf 16 } + +-- Trap Support Objects + +-- The following are support objects for the OSPF traps. + + ospfTrapControl OBJECT IDENTIFIER ::= { ospfTrap 1 } + ospfTraps OBJECT IDENTIFIER ::= { ospfTrap 2 } + + ospfSetTrap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A 4-octet string serving as a bit map for + the trap events defined by the OSPF traps. This + object is used to enable and disable specific + OSPF traps where a 1 in the bit field + represents enabled. The right-most bit (least + significant) represents trap 0. + + This object is persistent and when written + + + + the entity SHOULD save the change to non-volatile + storage." + ::= { ospfTrapControl 1 } + + ospfConfigErrorType OBJECT-TYPE + SYNTAX INTEGER { + badVersion (1), + areaMismatch (2), + unknownNbmaNbr (3), -- Router is DR eligible + unknownVirtualNbr (4), + authTypeMismatch(5), + authFailure (6), + netMaskMismatch (7), + helloIntervalMismatch (8), + deadIntervalMismatch (9), + optionMismatch (10), + mtuMismatch (11), + duplicateRouterId (12), + noError (13) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Potential types of configuration conflicts. + Used by the ospfConfigError and + ospfConfigVirtError traps. When the last value + of a trap using this object is needed, but no + traps of that type have been sent, this value + pertaining to this object should be returned as + noError." + ::= { ospfTrapControl 2 } + + ospfPacketType OBJECT-TYPE + SYNTAX INTEGER { + hello (1), + dbDescript (2), + lsReq (3), + lsUpdate (4), + lsAck (5), + nullPacket (6) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "OSPF packet types. When the last value of a trap + using this object is needed, but no traps of + that type have been sent, this value pertaining + to this object should be returned as nullPacket." + ::= { ospfTrapControl 3 } + + + + + ospfPacketSrc OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of an inbound packet that cannot + be identified by a neighbor instance. When + the last value of a trap using this object is + needed, but no traps of that type have been sent, + this value pertaining to this object should + be returned as 0.0.0.0." + ::= { ospfTrapControl 4 } + +-- Traps + + ospfVirtIfStateChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfVirtIfState -- The new state + } + STATUS current + DESCRIPTION + "An ospfVirtIfStateChange trap signifies that there + has been a change in the state of an OSPF virtual + interface. + + This trap should be generated when the interface + state regresses (e.g., goes from Point-to-Point to Down) + or progresses to a terminal state + (i.e., Point-to-Point)." + ::= { ospfTraps 1 } + + ospfNbrStateChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfNbrIpAddr, + ospfNbrAddressLessIndex, + ospfNbrRtrId, + ospfNbrState -- The new state + } + STATUS current + DESCRIPTION + "An ospfNbrStateChange trap signifies that + there has been a change in the state of a + non-virtual OSPF neighbor. This trap should be + generated when the neighbor state regresses + (e.g., goes from Attempt or Full to 1-Way or + Down) or progresses to a terminal state (e.g., + + + + 2-Way or Full). When an neighbor transitions + from or to Full on non-broadcast multi-access + and broadcast networks, the trap should be + generated by the designated router. A designated + router transitioning to Down will be noted by + ospfIfStateChange." + ::= { ospfTraps 2 } + + ospfVirtNbrStateChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtNbrArea, + ospfVirtNbrRtrId, + ospfVirtNbrState -- The new state + } + STATUS current + DESCRIPTION + "An ospfVirtNbrStateChange trap signifies that there + has been a change in the state of an OSPF virtual + neighbor. This trap should be generated + when the neighbor state regresses (e.g., goes + from Attempt or Full to 1-Way or Down) or + progresses to a terminal state (e.g., Full)." + ::= { ospfTraps 3 } + + ospfIfConfigError NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfPacketSrc, -- The source IP address + ospfConfigErrorType, -- Type of error + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfIfConfigError trap signifies that a + packet has been received on a non-virtual + interface from a router whose configuration + parameters conflict with this router's + configuration parameters. Note that the event + optionMismatch should cause a trap only if it + prevents an adjacency from forming." + ::= { ospfTraps 4 } + + ospfVirtIfConfigError NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfConfigErrorType, -- Type of error + + + + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfVirtIfConfigError trap signifies that a + packet has been received on a virtual interface + from a router whose configuration parameters + conflict with this router's configuration + parameters. Note that the event optionMismatch + should cause a trap only if it prevents an + adjacency from forming." + ::= { ospfTraps 5 } + + ospfIfAuthFailure NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfPacketSrc, -- The source IP address + ospfConfigErrorType, -- authTypeMismatch or + -- authFailure + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfIfAuthFailure trap signifies that a + packet has been received on a non-virtual + interface from a router whose authentication key + or authentication type conflicts with this + router's authentication key or authentication + type." + ::= { ospfTraps 6 } + + ospfVirtIfAuthFailure NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfConfigErrorType, -- authTypeMismatch or + -- authFailure + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfVirtIfAuthFailure trap signifies that a + packet has been received on a virtual interface + from a router whose authentication key or + authentication type conflicts with this router's + authentication key or authentication type." + + + + + ::= { ospfTraps 7 } + + ospfIfRxBadPacket NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfPacketSrc, -- The source IP address + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfIfRxBadPacket trap signifies that an + OSPF packet has been received on a non-virtual + interface that cannot be parsed." + ::= { ospfTraps 8 } + + ospfVirtIfRxBadPacket NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfPacketType + } + STATUS current + DESCRIPTION + "An ospfVirtIfRxBadPacket trap signifies that an OSPF + packet has been received on a virtual interface + that cannot be parsed." + ::= { ospfTraps 9 } + + ospfTxRetransmit NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfNbrRtrId, -- Destination + ospfPacketType, + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId + } + STATUS current + DESCRIPTION + "An ospfTxRetransmit trap signifies than an + OSPF packet has been retransmitted on a + non-virtual interface. All packets that may be + retransmitted are associated with an LSDB entry. + The LS type, LS ID, and Router ID are used to + identify the LSDB entry." + ::= { ospfTraps 10 } + + + + ospfVirtIfTxRetransmit NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtIfAreaId, + ospfVirtIfNeighbor, + ospfPacketType, + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId + } + STATUS current + DESCRIPTION + "An ospfVirtIfTxRetransmit trap signifies than an + OSPF packet has been retransmitted on a virtual + interface. All packets that may be retransmitted + are associated with an LSDB entry. The LS + type, LS ID, and Router ID are used to identify + the LSDB entry." + ::= { ospfTraps 11 } + + ospfOriginateLsa NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfLsdbAreaId, -- 0.0.0.0 for AS Externals + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId + } + STATUS current + DESCRIPTION + "An ospfOriginateLsa trap signifies that a new + LSA has been originated by this router. This + trap should not be invoked for simple refreshes + of LSAs (which happens every 30 minutes), but + instead will only be invoked when an LSA is + (re)originated due to a topology change. + Additionally, this trap does not include LSAs that + are being flushed because they have reached + MaxAge." + ::= { ospfTraps 12 } + + ospfMaxAgeLsa NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfLsdbAreaId, -- 0.0.0.0 for AS Externals + ospfLsdbType, + ospfLsdbLsid, + ospfLsdbRouterId + } + STATUS current + DESCRIPTION + + + + "An ospfMaxAgeLsa trap signifies that one of + the LSAs in the router's link state database has + aged to MaxAge." + ::= { ospfTraps 13 } + + ospfLsdbOverflow NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfExtLsdbLimit + } + + STATUS current + DESCRIPTION + "An ospfLsdbOverflow trap signifies that the + number of LSAs in the router's link state + database has exceeded ospfExtLsdbLimit." + ::= { ospfTraps 14 } + + ospfLsdbApproachingOverflow NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfExtLsdbLimit + } + STATUS current + DESCRIPTION + "An ospfLsdbApproachingOverflow trap signifies + that the number of LSAs in the router's + link state database has exceeded ninety percent of + ospfExtLsdbLimit." + ::= { ospfTraps 15 } + + ospfIfStateChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfIfIpAddress, + ospfAddressLessIf, + ospfIfState -- The new state + } + STATUS current + DESCRIPTION + "An ospfIfStateChange trap signifies that there + has been a change in the state of a non-virtual + OSPF interface. This trap should be generated + when the interface state regresses (e.g., goes + from Dr to Down) or progresses to a terminal + state (i.e., Point-to-Point, DR Other, Dr, or + Backup)." + ::= { ospfTraps 16 } + + ospfNssaTranslatorStatusChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + + + + ospfAreaId, + ospfAreaNssaTranslatorState -- The current translation + -- status + } + STATUS current + DESCRIPTION + "An ospfNssaTranslatorStatusChange trap indicates that + there has been a change in the router's ability to + translate OSPF type-7 LSAs into OSPF type-5 LSAs. + This trap should be generated when the translator + status transitions from or to any defined status on + a per-area basis." + ::= { ospfTraps 17 } + + ospfRestartStatusChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfRestartStatus, + ospfRestartInterval, + ospfRestartExitReason + } + STATUS current + DESCRIPTION + "An ospfRestartStatusChange trap signifies that + there has been a change in the graceful restart + state for the router. This trap should be + generated when the router restart status + changes." + ::= { ospfTraps 18 } + + ospfNbrRestartHelperStatusChange NOTIFICATION-TYPE + OBJECTS { ospfRouterId, -- The originator of the trap + ospfNbrIpAddr, + ospfNbrAddressLessIndex, + ospfNbrRtrId, + ospfNbrRestartHelperStatus, + ospfNbrRestartHelperAge, + ospfNbrRestartHelperExitReason + } + STATUS current + DESCRIPTION + "An ospfNbrRestartHelperStatusChange trap signifies that + there has been a change in the graceful restart + helper state for the neighbor. This trap should be + generated when the neighbor restart helper status + transitions for a neighbor." + ::= { ospfTraps 19 } + + ospfVirtNbrRestartHelperStatusChange NOTIFICATION-TYPE + + + + OBJECTS { ospfRouterId, -- The originator of the trap + ospfVirtNbrArea, + ospfVirtNbrRtrId, + ospfVirtNbrRestartHelperStatus, + ospfVirtNbrRestartHelperAge, + ospfVirtNbrRestartHelperExitReason + } + STATUS current + DESCRIPTION + "An ospfVirtNbrRestartHelperStatusChange trap signifies + that there has been a change in the graceful restart + helper state for the virtual neighbor. This trap should + be generated when the virtual neighbor restart helper + status transitions for a virtual neighbor." + ::= { ospfTraps 20 } + +-- conformance information + +ospfTrapConformance OBJECT IDENTIFIER ::= { ospfTrap 3 } +ospfTrapGroups OBJECT IDENTIFIER ::= { ospfTrapConformance 1 } +ospfTrapCompliances OBJECT IDENTIFIER ::= { ospfTrapConformance 2 } + +-- compliance statements + +ospfTrapCompliance MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "The compliance statement." + MODULE -- this module + MANDATORY-GROUPS { ospfTrapControlGroup } + + GROUP ospfTrapControlGroup + DESCRIPTION + "This group is optional but recommended for all + OSPF systems." + ::= { ospfTrapCompliances 1 } + +ospfTrapCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement." + MODULE -- this module + MANDATORY-GROUPS { ospfTrapControlGroup, ospfTrapEventGroup } + OBJECT ospfConfigErrorType + MIN-ACCESS accessible-for-notify + DESCRIPTION + "This object is only required to be supplied within + notifications." + + + + OBJECT ospfPacketType + MIN-ACCESS accessible-for-notify + DESCRIPTION + "This object is only required to be supplied within + notifications." + OBJECT ospfPacketSrc + MIN-ACCESS accessible-for-notify + DESCRIPTION + "This object is only required to be supplied within + notifications." + ::= { ospfTrapCompliances 2 } + +-- units of conformance + + ospfTrapControlGroup OBJECT-GROUP + OBJECTS { ospfSetTrap, + ospfConfigErrorType, + ospfPacketType, + ospfPacketSrc } + STATUS current + DESCRIPTION + "These objects are required to control traps + from OSPF systems." + ::= { ospfTrapGroups 1 } + + ospfTrapEventGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ospfVirtIfStateChange, + ospfNbrStateChange, + ospfVirtNbrStateChange, + ospfIfConfigError, + ospfVirtIfConfigError, + ospfIfAuthFailure, + ospfVirtIfAuthFailure, + ospfIfRxBadPacket, + ospfVirtIfRxBadPacket, + ospfTxRetransmit, + ospfVirtIfTxRetransmit, + ospfOriginateLsa, + ospfMaxAgeLsa, + ospfLsdbOverflow, + ospfLsdbApproachingOverflow, + ospfIfStateChange, + ospfNssaTranslatorStatusChange, + ospfRestartStatusChange, + ospfNbrRestartHelperStatusChange, + ospfVirtNbrRestartHelperStatusChange + } + + + + STATUS current + DESCRIPTION + "A grouping of OSPF trap events, as specified + in NOTIFICATION-TYPE constructs." + ::= { ospfTrapGroups 2 } + +END diff --git a/mibs/ietf/P-BRIDGE-MIB b/mibs/ietf/P-BRIDGE-MIB new file mode 100644 index 0000000..3eb17e3 --- /dev/null +++ b/mibs/ietf/P-BRIDGE-MIB @@ -0,0 +1,1216 @@ +P-BRIDGE-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- MIB for IEEE 802.1p devices +-- ------------------------------------------------------------- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, 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 "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 + + Vivian Ngai + + + + Email: vivian_ngai@acm.org + + 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 Bridge MIB Extension module for managing Priority + and Multicast Filtering, defined by IEEE 802.1D-1998, + including Restricted Group Registration defined by + IEEE 802.1t-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 dot1dPortRestrictedGroupRegistration. + Deprecated pBridgePortGmrpGroup and pBridgeCompliance + and added pBridgePortGmrpGroup2 and pBridgeCompliance2." + + + + REVISION "199908250000Z" + DESCRIPTION + "The Bridge MIB Extension module for managing Priority + and Multicast Filtering, defined by IEEE 802.1D-1998. + + 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) } + +-- ------------------------------------------------------------- +-- subtrees 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 subtree +-- ------------------------------------------------------------- + +dot1dDeviceCapabilities OBJECT-TYPE + SYNTAX BITS { + dot1dExtendedFilteringServices(0), + dot1dTrafficClasses(1), + dot1qStaticEntryIndividualPort(2), + dot1qIVLCapable(3), + dot1qSVLCapable(4), + dot1qHybridCapable(5), + dot1qConfigurablePvidTagging(6), + dot1dLocalVlanCapable(7) + } + 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. + + 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 (IVL). + dot1qSVLCapable(4), -- Shared VLAN Learning (SVL). + 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." + 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. + + The value of this object MUST be retained across + reinitializations of the management system." + 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 and 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. + + The value of this object MUST be retained across + reinitializations of the management system." + 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), + dot1qConfigurableAcceptableFrameTypes(1), + dot1qIngressFiltering(2) + } + 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 that are manageable through this MIB. + + 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." + REFERENCE + "ISO/IEC 15802-3 Section 5.2, + IEEE 802.1Q/D11 Section 5.2" + ::= { dot1dPortCapabilitiesEntry 1 } + +-- ------------------------------------------------------------- +-- the dot1dPriority subtree +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- 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 + Integer32, + dot1dPortNumTrafficClasses + Integer32 + } + +dot1dPortDefaultUserPriority OBJECT-TYPE + SYNTAX Integer32 (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. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { dot1dPortPriorityEntry 1 } + +dot1dPortNumTrafficClasses OBJECT-TYPE + SYNTAX Integer32 (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. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { 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 + Integer32, + dot1dRegenUserPriority + Integer32 + } + +dot1dUserPriority OBJECT-TYPE + SYNTAX Integer32 (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 Integer32 (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Regenerated User Priority that the incoming User + + + + Priority is mapped to for this port. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { 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 + Integer32, + dot1dTrafficClass + Integer32 + } + +dot1dTrafficClassPriority OBJECT-TYPE + SYNTAX Integer32 (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 Integer32 (0..7) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Traffic Class the received frame is mapped to. + + The value of this object MUST be retained across + reinitializations of the management system." + ::= { 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 + Integer32 + } + +dot1dPortOutboundAccessPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Outbound Access Priority the received frame is + mapped to." + ::= { dot1dPortOutboundAccessPriorityEntry 1 } + +-- ------------------------------------------------------------- +-- the dot1dGarp subtree +-- ------------------------------------------------------------- + +-- ------------------------------------------------------------- +-- 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. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { 20 } + ::= { dot1dPortGarpEntry 1 } + +dot1dPortGarpLeaveTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The GARP Leave time, in centiseconds. + + The value of this object MUST be retained across + reinitializations of the management system." + DEFVAL { 60 } + ::= { dot1dPortGarpEntry 2 } + +dot1dPortGarpLeaveAllTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The GARP LeaveAll time, in centiseconds. + + The value of this object MUST be retained across + reinitializations of the management system." + 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, + dot1dPortRestrictedGroupRegistration + TruthValue + } + +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. + + The value of this object MUST be retained across + reinitializations of the management system." + 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 } + +dot1dPortRestrictedGroupRegistration OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of Restricted Group Registration on this port. + If the value of this control is true(1), then creation + of a new dynamic entry is permitted only if there is a + Static Filtering Entry for the VLAN concerned, in which + the Registrar Administrative Control value is Normal + Registration. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1t clause 10.3.2.3, 14.10.1.3." + DEFVAL { false } + ::= { dot1dPortGmrpEntry 4 } + +-- ------------------------------------------------------------- +-- 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 that 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 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." + ::= { 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 + that 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 + capabilities 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 that 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 that 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 deprecated + 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 } + +pBridgePortGmrpGroup2 OBJECT-GROUP + OBJECTS { + dot1dPortGmrpStatus, + dot1dPortGmrpFailedRegistrations, + dot1dPortGmrpLastPduOrigin, + dot1dPortRestrictedGroupRegistration + } + STATUS current + DESCRIPTION + "A collection of objects providing port level control + and status information for GMRP operation." + ::= { pBridgeGroups 12 } + + + +-- ------------------------------------------------------------- +-- compliance statements +-- ------------------------------------------------------------- + +pBridgeCompliance MODULE-COMPLIANCE + STATUS deprecated + 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 that 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 that 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 that 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 that 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 } + + + + +pBridgeCompliance2 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 that 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 that 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 pBridgePortGmrpGroup2 + 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 that 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 that 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 2 } + +END diff --git a/mibs/ietf/PARALLEL-MIB b/mibs/ietf/PARALLEL-MIB new file mode 100644 index 0000000..1e426dd --- /dev/null +++ b/mibs/ietf/PARALLEL-MIB @@ -0,0 +1,292 @@ +PARALLEL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32 + FROM SNMPv2-SMI + InterfaceIndex + FROM IF-MIB + transmission + FROM RFC1213-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +para MODULE-IDENTITY + LAST-UPDATED "9405261700Z" + ORGANIZATION "IETF Character MIB Working Group" + CONTACT-INFO + " Bob Stewart + Postal: Xyplex, Inc. + 295 Foster Street + Littleton, MA 01460 + + Tel: 508-952-4816 + Fax: 508-952-4887 + E-mail: rlstewart@eng.xyplex.com" + DESCRIPTION + "The MIB module for Parallel-printer-like hardware devices." + ::= { transmission 34 } + + +-- Generic Parallel-printer-like information + +paraNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ports (regardless of their current + state) in the Parallel-printer-like port table." + ::= { para 1 } + + +-- the Parallel-printer-like Port table + +paraPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ParaPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port entries. The number of entries is + given by the value of paraNumber." + ::= { para 2 } + +paraPortEntry OBJECT-TYPE + SYNTAX ParaPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a port." + INDEX { paraPortIndex } + ::= { paraPortTable 1 } + +ParaPortEntry ::= + SEQUENCE { + paraPortIndex + InterfaceIndex, + paraPortType + INTEGER, + paraPortInSigNumber + Integer32, + paraPortOutSigNumber + Integer32 + } + +paraPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the port. By convention + and if possible, hardware port numbers map directly + to external connectors. The value for each port must + remain constant at least from one re-initialization + of the network management agent to the next." + ::= { paraPortEntry 1 } + +paraPortType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + centronics(2), + dataproducts(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's hardware type." + ::= { paraPortEntry 2 } + +paraPortInSigNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input signals for the port in the + input signal table (paraPortInSigTable). The table + contains entries only for those signals the software + can detect and that are useful to observe." + ::= { paraPortEntry 3 } + +paraPortOutSigNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output signals for the port in the + output signal table (paraPortOutSigTable). The + table contains entries only for those signals the + software can assert and that are useful to observe." + ::= { paraPortEntry 4 } + +-- Parallel-printer-like Input Signal Table + +paraInSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF ParaInSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port input control signal entries." + ::= { para 3 } + +paraInSigEntry OBJECT-TYPE + SYNTAX ParaInSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Input control signal status for a hardware port." + INDEX { paraInSigPortIndex, paraInSigName } + ::= { paraInSigTable 1 } + +ParaInSigEntry ::= + SEQUENCE { + paraInSigPortIndex + InterfaceIndex, + paraInSigName + INTEGER, + paraInSigState + INTEGER, + paraInSigChanges + Counter32 + } + +paraInSigPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of paraPortIndex for the port to which + this entry belongs." + ::= { paraInSigEntry 1 } + +paraInSigName OBJECT-TYPE + SYNTAX INTEGER { power(1), online(2), busy(3), + paperout(4), fault(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of a hardware signal." + ::= { paraInSigEntry 2 } + +paraInSigState OBJECT-TYPE + SYNTAX INTEGER { none(1), on(2), off(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current signal state." + ::= { paraInSigEntry 3 } + +paraInSigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the signal has changed from + 'on' to 'off' or from 'off' to 'on'." + ::= { paraInSigEntry 4 } + + +-- Output Signal Table + +paraOutSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF ParaOutSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port output control signal entries." + ::= { para 4 } + +paraOutSigEntry OBJECT-TYPE + SYNTAX ParaOutSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Output control signal status for a hardware port." + INDEX { paraOutSigPortIndex, paraOutSigName } + ::= { paraOutSigTable 1 } + +ParaOutSigEntry ::= + SEQUENCE { + paraOutSigPortIndex + InterfaceIndex, + paraOutSigName + INTEGER, + paraOutSigState + INTEGER, + paraOutSigChanges + Counter32 + } + +paraOutSigPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of paraPortIndex for the port to which + this entry belongs." + ::= { paraOutSigEntry 1 } + +paraOutSigName OBJECT-TYPE + SYNTAX INTEGER { power(1), online(2), busy(3), + paperout(4), fault(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of a hardware signal." + ::= { paraOutSigEntry 2 } + +paraOutSigState OBJECT-TYPE + SYNTAX INTEGER { none(1), on(2), off(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current signal state." + ::= { paraOutSigEntry 3 } + +paraOutSigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the signal has changed from + 'on' to 'off' or from 'off' to 'on'." + ::= { paraOutSigEntry 4 } + + +-- conformance information + +paraConformance OBJECT IDENTIFIER ::= { para 5 } + +paraGroups OBJECT IDENTIFIER ::= { paraConformance 1 } +paraCompliances OBJECT IDENTIFIER ::= { paraConformance 2 } + +-- compliance statements + +paraCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which have Parallel-printer-like hardware + interfaces." + + MODULE -- this module + MANDATORY-GROUPS { paraGroup } + ::= { paraCompliances 1 } + + +-- units of conformance + +paraGroup OBJECT-GROUP + OBJECTS { paraNumber, paraPortIndex, paraPortType, + paraPortInSigNumber, paraPortOutSigNumber, + paraInSigPortIndex, paraInSigName, + paraInSigState, paraInSigChanges, + paraOutSigPortIndex, paraOutSigName, + paraOutSigState, paraOutSigChanges } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all Parallel-printer-like interfaces." + ::= { paraGroups 1 } + +END diff --git a/mibs/ietf/PIM-MIB b/mibs/ietf/PIM-MIB new file mode 100644 index 0000000..99bddbc --- /dev/null +++ b/mibs/ietf/PIM-MIB @@ -0,0 +1,924 @@ +PIM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, experimental, + NOTIFICATION-TYPE, + Integer32, IpAddress, TimeTicks FROM SNMPv2-SMI + RowStatus, TruthValue FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + ipMRouteGroup, ipMRouteSource, + ipMRouteSourceMask, ipMRouteNextHopGroup, + ipMRouteNextHopSource, ipMRouteNextHopSourceMask, + ipMRouteNextHopIfIndex, + ipMRouteNextHopAddress FROM IPMROUTE-STD-MIB + InterfaceIndex FROM IF-MIB; + +pimMIB MODULE-IDENTITY + LAST-UPDATED "200009280000Z" -- September 28, 2000 + ORGANIZATION "IETF IDMR Working Group." + CONTACT-INFO + " Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + US + + Phone: +1 425 703 8835 + EMail: dthaler@microsoft.com" + DESCRIPTION + "The MIB module for management of PIM routers." + REVISION "200009280000Z" -- September 28, 2000 + DESCRIPTION + "Initial version, published as RFC 2934." + ::= { experimental 61 } + +pimMIBObjects OBJECT IDENTIFIER ::= { pimMIB 1 } + +pimTraps OBJECT IDENTIFIER ::= { pimMIBObjects 0 } + +pim OBJECT IDENTIFIER ::= { pimMIBObjects 1 } + +pimJoinPruneInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + + + DESCRIPTION + "The default interval at which periodic PIM-SM Join/Prune + messages are to be sent." + ::= { pim 1 } + +-- The PIM Interface Table + +pimInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's PIM interfaces. + IGMP and PIM are enabled on all interfaces listed in this + table." + ::= { pim 2 } + +pimInterfaceEntry OBJECT-TYPE + SYNTAX PimInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimInterfaceTable." + INDEX { pimInterfaceIfIndex } + ::= { pimInterfaceTable 1 } + +PimInterfaceEntry ::= SEQUENCE { + pimInterfaceIfIndex InterfaceIndex, + pimInterfaceAddress IpAddress, + pimInterfaceNetMask IpAddress, + pimInterfaceMode INTEGER, + pimInterfaceDR IpAddress, + pimInterfaceHelloInterval Integer32, + pimInterfaceStatus RowStatus, + pimInterfaceJoinPruneInterval Integer32, + pimInterfaceCBSRPreference Integer32 +} + +pimInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of this PIM interface." + ::= { pimInterfaceEntry 1 } + +pimInterfaceAddress OBJECT-TYPE + SYNTAX IpAddress + + + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The IP address of the PIM interface." + ::= { pimInterfaceEntry 2 } + +pimInterfaceNetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network mask for the IP address of the PIM interface." + ::= { pimInterfaceEntry 3 } + +pimInterfaceMode OBJECT-TYPE + SYNTAX INTEGER { dense(1), sparse(2), sparseDense(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The configured mode of this PIM interface. A value of + sparseDense is only valid for PIMv1." + DEFVAL { dense } + ::= { pimInterfaceEntry 4 } + +pimInterfaceDR OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Designated Router on this PIM interface. For point-to- + point interfaces, this object has the value 0.0.0.0." + ::= { pimInterfaceEntry 5 } + +pimInterfaceHelloInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which PIM Hello messages are transmitted + on this interface." + DEFVAL { 30 } + ::= { pimInterfaceEntry 6 } + +pimInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The status of this entry. Creating the entry enables PIM + on the interface; destroying the entry disables PIM on the + interface." + ::= { pimInterfaceEntry 7 } + +pimInterfaceJoinPruneInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which PIM Join/Prune messages are + transmitted on this PIM interface. The default value of + this object is the pimJoinPruneInterval." + ::= { pimInterfaceEntry 8 } + +pimInterfaceCBSRPreference OBJECT-TYPE + SYNTAX Integer32 (-1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The preference value for the local interface as a candidate + bootstrap router. The value of -1 is used to indicate that + the local interface is not a candidate BSR interface." + DEFVAL { 0 } + ::= { pimInterfaceEntry 9 } + + +-- The PIM Neighbor Table + +pimNeighborTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimNeighborEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's PIM neighbors." + ::= { pim 3 } + +pimNeighborEntry OBJECT-TYPE + SYNTAX PimNeighborEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimNeighborTable." + INDEX { pimNeighborAddress } + ::= { pimNeighborTable 1 } + + +PimNeighborEntry ::= SEQUENCE { + pimNeighborAddress IpAddress, + pimNeighborIfIndex InterfaceIndex, + pimNeighborUpTime TimeTicks, + pimNeighborExpiryTime TimeTicks, + pimNeighborMode INTEGER +} + +pimNeighborAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the PIM neighbor for which this entry + contains information." + ::= { pimNeighborEntry 1 } + +pimNeighborIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the interface used to reach this + PIM neighbor." + ::= { pimNeighborEntry 2 } + +pimNeighborUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this PIM neighbor (last) became a neighbor + of the local router." + ::= { pimNeighborEntry 3 } + +pimNeighborExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining before this PIM neighbor will be + aged out." + ::= { pimNeighborEntry 4 } + +pimNeighborMode OBJECT-TYPE + SYNTAX INTEGER { dense(1), sparse(2) } + MAX-ACCESS read-only + STATUS deprecated + + + DESCRIPTION + "The active PIM mode of this neighbor. This object is + deprecated for PIMv2 routers since all neighbors on the + interface must be either dense or sparse as determined by + the protocol running on the interface." + ::= { pimNeighborEntry 5 } + +-- +-- The PIM IP Multicast Route Table +-- + +pimIpMRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimIpMRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing PIM-specific information on + a subset of the rows of the ipMRouteTable defined in the IP + Multicast MIB." + ::= { pim 4 } + +pimIpMRouteEntry OBJECT-TYPE + SYNTAX PimIpMRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimIpMRouteTable. There + is one entry per entry in the ipMRouteTable whose incoming + interface is running PIM." + INDEX { ipMRouteGroup, ipMRouteSource, ipMRouteSourceMask } + ::= { pimIpMRouteTable 1 } + +PimIpMRouteEntry ::= SEQUENCE { + pimIpMRouteUpstreamAssertTimer TimeTicks, + pimIpMRouteAssertMetric Integer32, + pimIpMRouteAssertMetricPref Integer32, + pimIpMRouteAssertRPTBit TruthValue, + pimIpMRouteFlags BITS +} + +pimIpMRouteUpstreamAssertTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the router changes its upstream + neighbor back to its RPF neighbor. This timer is called the + Assert timer in the PIM Sparse and Dense mode specification. + + + A value of 0 indicates that no Assert has changed the + upstream neighbor away from the RPF neighbor." + ::= { pimIpMRouteEntry 1 } + +pimIpMRouteAssertMetric OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric advertised by the assert winner on the upstream + interface, or 0 if no such assert is in received." + ::= { pimIpMRouteEntry 2 } + +pimIpMRouteAssertMetricPref OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The preference advertised by the assert winner on the + upstream interface, or 0 if no such assert is in effect." + ::= { pimIpMRouteEntry 3 } + +pimIpMRouteAssertRPTBit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the RPT-bit advertised by the assert winner on + the upstream interface, or false if no such assert is in + effect." + ::= { pimIpMRouteEntry 4 } + +pimIpMRouteFlags OBJECT-TYPE + SYNTAX BITS { + rpt(0), + spt(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes PIM-specific flags related to a + multicast state entry. See the PIM Sparse Mode + specification for the meaning of the RPT and SPT bits." + ::= { pimIpMRouteEntry 5 } + +-- +-- The PIM Next Hop Table +-- + + +pimIpMRouteNextHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimIpMRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing PIM-specific information on + a subset of the rows of the ipMRouteNextHopTable defined in + the IP Multicast MIB." + ::= { pim 7 } + +pimIpMRouteNextHopEntry OBJECT-TYPE + SYNTAX PimIpMRouteNextHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimIpMRouteNextHopTable. + There is one entry per entry in the ipMRouteNextHopTable + whose interface is running PIM and whose + ipMRouteNextHopState is pruned(1)." + INDEX { ipMRouteNextHopGroup, ipMRouteNextHopSource, + ipMRouteNextHopSourceMask, ipMRouteNextHopIfIndex, + ipMRouteNextHopAddress } + ::= { pimIpMRouteNextHopTable 1 } + +PimIpMRouteNextHopEntry ::= SEQUENCE { + pimIpMRouteNextHopPruneReason INTEGER +} + +pimIpMRouteNextHopPruneReason OBJECT-TYPE + SYNTAX INTEGER { + other (1), + prune (2), + assert (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates why the downstream interface was + pruned, whether in response to a PIM prune message or due to + PIM Assert processing." + ::= { pimIpMRouteNextHopEntry 2 } + +-- The PIM RP Table + +pimRPTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimRPEntry + MAX-ACCESS not-accessible + STATUS deprecated + + + DESCRIPTION + "The (conceptual) table listing PIM version 1 information + for the Rendezvous Points (RPs) for IP multicast groups. + This table is deprecated since its function is replaced by + the pimRPSetTable for PIM version 2." + ::= { pim 5 } + +pimRPEntry OBJECT-TYPE + SYNTAX PimRPEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) in the pimRPTable. There is one + entry per RP address for each IP multicast group." + INDEX { pimRPGroupAddress, pimRPAddress } + ::= { pimRPTable 1 } + +PimRPEntry ::= SEQUENCE { + pimRPGroupAddress IpAddress, + pimRPAddress IpAddress, + pimRPState INTEGER, + pimRPStateTimer TimeTicks, + pimRPLastChange TimeTicks, + pimRPRowStatus RowStatus +} + +pimRPGroupAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The IP multicast group address for which this entry + contains information about an RP." + ::= { pimRPEntry 1 } + +pimRPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The unicast address of the RP." + ::= { pimRPEntry 2 } + +pimRPState OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + + + "The state of the RP." + ::= { pimRPEntry 3 } + +pimRPStateTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The minimum time remaining before the next state change. + When pimRPState is up, this is the minimum time which must + expire until it can be declared down. When pimRPState is + down, this is the time until it will be declared up (in + order to retry)." + ::= { pimRPEntry 4 } + +pimRPLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of sysUpTime at the time when the corresponding + instance of pimRPState last changed its value." + ::= { pimRPEntry 5 } + +pimRPRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table." + ::= { pimRPEntry 6 } + +-- The PIM RP-Set Table + +pimRPSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimRPSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing PIM information for + candidate Rendezvous Points (RPs) for IP multicast groups. + When the local router is the BSR, this information is + obtained from received Candidate-RP-Advertisements. When + the local router is not the BSR, this information is + obtained from received RP-Set messages." + ::= { pim 6 } + + + +pimRPSetEntry OBJECT-TYPE + SYNTAX PimRPSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimRPSetTable." + INDEX { pimRPSetComponent, pimRPSetGroupAddress, + pimRPSetGroupMask, pimRPSetAddress } + ::= { pimRPSetTable 1 } + +PimRPSetEntry ::= SEQUENCE { + + pimRPSetGroupAddress IpAddress, + pimRPSetGroupMask IpAddress, + pimRPSetAddress IpAddress, + pimRPSetHoldTime Integer32, + pimRPSetExpiryTime TimeTicks, + pimRPSetComponent Integer32 +} + +pimRPSetGroupAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address which, when combined with + pimRPSetGroupMask, gives the group prefix for which this + entry contains information about the Candidate-RP." + ::= { pimRPSetEntry 1 } + +pimRPSetGroupMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address mask which, when combined with + pimRPSetGroupAddress, gives the group prefix for which this + entry contains information about the Candidate-RP." + ::= { pimRPSetEntry 2 } + +pimRPSetAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the Candidate-RP." + ::= { pimRPSetEntry 3 } + + + +pimRPSetHoldTime OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The holdtime of a Candidate-RP. If the local router is not + the BSR, this value is 0." + ::= { pimRPSetEntry 4 } + +pimRPSetExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining before the Candidate-RP will be + declared down. If the local router is not the BSR, this + value is 0." + ::= { pimRPSetEntry 5 } + +pimRPSetComponent OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " A number uniquely identifying the component. Each + protocol instance connected to a separate domain should have + a different index value." + ::= { pimRPSetEntry 6 } + +-- +-- Note: { pim 8 } through { pim 10 } were used in older versions +-- of this MIB. Since some earlier versions of this MIB have been +-- widely-deployed, these values must not be used in the future, +-- as long the MIB is rooted under { experimental 61 }. +-- + +-- The PIM Candidate-RP Table + +pimCandidateRPTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimCandidateRPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the IP multicast groups for + which the local router is to advertise itself as a + Candidate-RP when the value of pimComponentCRPHoldTime is + non-zero. If this table is empty, then the local router + + + will advertise itself as a Candidate-RP for all groups + (providing the value of pimComponentCRPHoldTime is non- + zero)." + ::= { pim 11 } + +pimCandidateRPEntry OBJECT-TYPE + SYNTAX PimCandidateRPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimCandidateRPTable." + INDEX { pimCandidateRPGroupAddress, + pimCandidateRPGroupMask } + ::= { pimCandidateRPTable 1 } + +PimCandidateRPEntry ::= SEQUENCE { + pimCandidateRPGroupAddress IpAddress, + pimCandidateRPGroupMask IpAddress, + pimCandidateRPAddress IpAddress, + pimCandidateRPRowStatus RowStatus +} + +pimCandidateRPGroupAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address which, when combined with + pimCandidateRPGroupMask, identifies a group prefix for which + the local router will advertise itself as a Candidate-RP." + ::= { pimCandidateRPEntry 1 } + +pimCandidateRPGroupMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address mask which, when combined with + pimCandidateRPGroupMask, identifies a group prefix for which + the local router will advertise itself as a Candidate-RP." + ::= { pimCandidateRPEntry 2 } + +pimCandidateRPAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The (unicast) address of the interface which will be + + + advertised as a Candidate-RP." + ::= { pimCandidateRPEntry 3 } + +pimCandidateRPRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table." + ::= { pimCandidateRPEntry 4 } + +-- The PIM Component Table + +pimComponentTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimComponentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing objects specific to a PIM + domain. One row exists for each domain to which the router + is connected. A PIM-SM domain is defined as an area of the + network over which Bootstrap messages are forwarded. + Typically, a PIM-SM router will be a member of exactly one + domain. This table also supports, however, routers which + may form a border between two PIM-SM domains and do not + forward Bootstrap messages between them." + ::= { pim 12 } + +pimComponentEntry OBJECT-TYPE + SYNTAX PimComponentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimComponentTable." + INDEX { pimComponentIndex } + ::= { pimComponentTable 1 } + +PimComponentEntry ::= SEQUENCE { + pimComponentIndex Integer32, + pimComponentBSRAddress IpAddress, + pimComponentBSRExpiryTime TimeTicks, + pimComponentCRPHoldTime Integer32, + pimComponentStatus RowStatus +} + +pimComponentIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying the component. Each protocol + instance connected to a separate domain should have a + different index value. Routers that only support membership + in a single PIM-SM domain should use a pimComponentIndex + value of 1." + ::= { pimComponentEntry 1 } + +pimComponentBSRAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the bootstrap router (BSR) for the local + PIM region." + ::= { pimComponentEntry 2 } + +pimComponentBSRExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining before the bootstrap router in + the local domain will be declared down. For candidate BSRs, + this is the time until the component sends an RP-Set + message. For other routers, this is the time until it may + accept an RP-Set message from a lower candidate BSR." + ::= { pimComponentEntry 3 } + +pimComponentCRPHoldTime OBJECT-TYPE + SYNTAX Integer32 (0..255) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The holdtime of the component when it is a candidate RP in + the local domain. The value of 0 is used to indicate that + the local system is not a Candidate-RP." + DEFVAL { 0 } + ::= { pimComponentEntry 4 } + +pimComponentStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The status of this entry. Creating the entry creates + another protocol instance; destroying the entry disables a + protocol instance." + ::= { pimComponentEntry 5 } + +-- PIM Traps + +pimNeighborLoss NOTIFICATION-TYPE + OBJECTS { + pimNeighborIfIndex + } + STATUS current + DESCRIPTION + "A pimNeighborLoss trap signifies the loss of an adjacency + with a neighbor. This trap should be generated when the + neighbor timer expires, and the router has no other + neighbors on the same interface with a lower IP address than + itself." + ::= { pimTraps 1 } + +-- conformance information + +pimMIBConformance OBJECT IDENTIFIER ::= { pimMIB 2 } +pimMIBCompliances OBJECT IDENTIFIER ::= { pimMIBConformance 1 } +pimMIBGroups OBJECT IDENTIFIER ::= { pimMIBConformance 2 } + + +-- compliance statements + +pimV1MIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for routers running PIMv1 and + implementing the PIM MIB." + MODULE -- this module + MANDATORY-GROUPS { pimV1MIBGroup } + + ::= { pimMIBCompliances 1 } + +pimSparseV2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running PIM Sparse + Mode and implementing the PIM MIB." + MODULE -- this module + MANDATORY-GROUPS { pimV2MIBGroup } + + GROUP pimV2CandidateRPMIBGroup + + + DESCRIPTION + "This group is mandatory if the router is capable of being a + Candidate RP." + + OBJECT pimInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { pimMIBCompliances 2 } + +pimDenseV2MIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers running PIM Dense Mode + and implementing the PIM MIB." + MODULE -- this module + + MANDATORY-GROUPS { pimDenseV2MIBGroup } + + OBJECT pimInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { pimMIBCompliances 3 } + +-- units of conformance + +pimNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pimNeighborLoss } + STATUS current + DESCRIPTION + "A collection of notifications for signaling important PIM + events." + ::= { pimMIBGroups 1 } + +pimV2MIBGroup OBJECT-GROUP + OBJECTS { pimJoinPruneInterval, pimNeighborIfIndex, + pimNeighborUpTime, pimNeighborExpiryTime, + pimInterfaceAddress, pimInterfaceNetMask, + pimInterfaceDR, pimInterfaceHelloInterval, + pimInterfaceStatus, pimInterfaceJoinPruneInterval, + pimInterfaceCBSRPreference, pimInterfaceMode, + pimRPSetHoldTime, pimRPSetExpiryTime, + pimComponentBSRAddress, pimComponentBSRExpiryTime, + pimComponentCRPHoldTime, pimComponentStatus, + pimIpMRouteFlags, pimIpMRouteUpstreamAssertTimer + + + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM Sparse + Mode (version 2) routers." + ::= { pimMIBGroups 2 } + +pimDenseV2MIBGroup OBJECT-GROUP + OBJECTS { pimNeighborIfIndex, + pimNeighborUpTime, pimNeighborExpiryTime, + pimInterfaceAddress, pimInterfaceNetMask, + pimInterfaceDR, pimInterfaceHelloInterval, + pimInterfaceStatus, pimInterfaceMode + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM Dense + Mode (version 2) routers." + ::= { pimMIBGroups 5 } + +pimV2CandidateRPMIBGroup OBJECT-GROUP + OBJECTS { pimCandidateRPAddress, + pimCandidateRPRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects to support configuration of which + groups a router is to advertise itself as a Candidate-RP." + ::= { pimMIBGroups 3 } + +pimV1MIBGroup OBJECT-GROUP + OBJECTS { pimJoinPruneInterval, pimNeighborIfIndex, + pimNeighborUpTime, pimNeighborExpiryTime, + pimNeighborMode, + pimInterfaceAddress, pimInterfaceNetMask, + pimInterfaceJoinPruneInterval, pimInterfaceStatus, + pimInterfaceMode, pimInterfaceDR, + pimInterfaceHelloInterval, + pimRPState, pimRPStateTimer, + pimRPLastChange, pimRPRowStatus + } + STATUS deprecated + DESCRIPTION + "A collection of objects to support management of PIM + (version 1) routers." + ::= { pimMIBGroups 4 } + +pimNextHopGroup OBJECT-GROUP + + + OBJECTS { pimIpMRouteNextHopPruneReason } + STATUS current + DESCRIPTION + "A collection of optional objects to provide per-next hop + information for diagnostic purposes. Supporting this group + may add a large number of instances to a tree walk, but the + information in this group can be extremely useful in + tracking down multicast connectivity problems." + ::= { pimMIBGroups 6 } + +pimAssertGroup OBJECT-GROUP + OBJECTS { pimIpMRouteAssertMetric, pimIpMRouteAssertMetricPref, + pimIpMRouteAssertRPTBit } + STATUS current + DESCRIPTION + "A collection of optional objects to provide extra + information about the assert election process. There is no + protocol reason to keep such information, but some + implementations may already keep this information and make + it available. These objects can also be very useful in + debugging connectivity or duplicate packet problems, + especially if the assert winner does not support the PIM and + IP Multicast MIBs." + ::= { pimMIBGroups 7 } + +END diff --git a/mibs/ietf/PIM-STD-MIB b/mibs/ietf/PIM-STD-MIB new file mode 100644 index 0000000..3042c14 --- /dev/null +++ b/mibs/ietf/PIM-STD-MIB @@ -0,0 +1,3967 @@ +PIM-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, + NOTIFICATION-TYPE, Unsigned32, + Counter32, Counter64, Gauge32, + TimeTicks FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, + RowStatus, TruthValue, + StorageType FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + InterfaceIndexOrZero, + InterfaceIndex FROM IF-MIB -- [RFC2863] + InetAddressType, + InetAddressPrefixLength, + InetAddress, InetVersion FROM INET-ADDRESS-MIB -- [RFC4001] + IANAipRouteProtocol FROM IANA-RTPROTO-MIB; -- [RTPROTO] + +pimStdMIB MODULE-IDENTITY + LAST-UPDATED "200711020000Z" -- 2 November 2007 + ORGANIZATION + "IETF Protocol Independent Multicast (PIM) Working Group" + CONTACT-INFO + "Email: pim@ietf.org + WG charter: + + + + + http://www.ietf.org/html.charters/pim-charter.html" + DESCRIPTION + "The MIB module for management of PIM routers. + + Copyright (C) The IETF Trust (2007). This version of this + MIB module is part of RFC 5060; see the RFC itself for full + legal notices." + REVISION "200711020000Z" -- 2 November 2007 + DESCRIPTION "Initial version, published as RFC 5060." + ::= { mib-2 157 } + +-- +-- Textual Conventions +-- + +PimMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The PIM mode in which a group is operating. + + none(1) The group is not using PIM, which may be the + case if, for example, it is a link-local or + unroutable group address. + + ssm(2) Source-Specific Multicast (SSM) with PIM Sparse + Mode. + + asm(3) Any Source Multicast (ASM) with PIM Sparse + Mode. + + bidir(4) Bidirectional PIM. + + dm(5) PIM Dense Mode. + + other(6) Any other PIM mode." + + SYNTAX INTEGER { + none(1), + ssm(2), + asm(3), + bidir(4), + dm(5), + other(6) + } + +PimGroupMappingOriginType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "The mechanism by which a PIM group mapping was learned. + + fixed(1) Link-local or unroutable group mappings. + + configRp(2) Local static RP configuration. + + configSsm(3) Local SSM Group configuration. + + bsr(4) The PIM Bootstrap Router (BSR) mechanism. + + autoRP(5) Cisco's Auto-RP mechanism. + + embedded(6) The Embedded-RP mechanism where the RP address + is embedded in the multicast group address. + + other(7) Any other mechanism." + + REFERENCE "RFC 3569, RFC 3956, and RFC 5059" + SYNTAX INTEGER { + fixed(1), + configRp(2), + configSsm(3), + bsr(4), + autoRP(5), + embedded(6), + other(7) + } + +-- +-- Top-level structure +-- + +pimNotifications OBJECT IDENTIFIER ::= { pimStdMIB 0 } +pim OBJECT IDENTIFIER ::= { pimStdMIB 1 } + +pimKeepalivePeriod OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The duration of the Keepalive Timer. This is the period + during which the PIM router will maintain (S,G) state in the + absence of explicit (S,G) local membership or (S,G) join + messages received to maintain it. This timer period is + called the Keepalive_Period in the PIM-SM specification. It + is called the SourceLifetime in the PIM-DM specification. + + + + + The storage type of this object is determined by + pimDeviceConfigStorageType." + REFERENCE "RFC 4601 section 4.11" + DEFVAL { 210 } + ::= { pim 14 } + +pimRegisterSuppressionTime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The duration of the Register Suppression Timer. This is + the period during which a PIM Designated Router (DR) stops + sending Register-encapsulated data to the Rendezvous Point + (RP) after receiving a Register-Stop message. This object + is used to run timers both at the DR and at the RP. This + timer period is called the Register_Suppression_Time in the + PIM-SM specification. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + REFERENCE "RFC 4601 section 4.11" + DEFVAL { 60 } + ::= { pim 15 } + +pimStarGEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimStarGTable." + ::= { pim 16 } + +pimStarGIEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimStarGITable." + ::= { pim 17 } + +pimSGEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimSGTable." + + + + ::= { pim 18 } + +pimSGIEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimSGITable." + ::= { pim 19 } + +pimSGRptEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimSGRptTable." + ::= { pim 20 } + +pimSGRptIEntries OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of entries in the pimSGRptITable." + ::= { pim 21 } + +pimOutAsserts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Asserts sent by this router. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.6" + ::= { pim 22 } + +pimInAsserts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Asserts received by this router. Asserts + are multicast to all routers on a network. This counter is + incremented by all routers that receive an assert, not only + those routers that are contesting the assert. + + + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.6" + ::= { pim 23 } + +pimLastAssertInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface on which this router most recently sent or + received an assert, or zero if this router has not sent or + received an assert." + REFERENCE "RFC 4601 section 4.6" + ::= { pim 24 } + +pimLastAssertGroupAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the multicast group address in the most + recently sent or received assert. If this router has not + sent or received an assert, then this object is set to + unknown(0)." + ::= { pim 25 } + +pimLastAssertGroupAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The multicast group address in the most recently sent or + received assert. The InetAddressType is given by the + pimLastAssertGroupAddressType object." + ::= { pim 26 } + +pimLastAssertSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the source address in the most recently + sent or received assert. If the most recent assert was + (*,G), or if this router has not sent or received an assert, + then this object is set to unknown(0)." + ::= { pim 27 } + + + +pimLastAssertSourceAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source address in the most recently sent or received + assert. The InetAddressType is given by the + pimLastAssertSourceAddressType object." + ::= { pim 28 } + +pimNeighborLossNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time that must elapse between pimNeighborLoss + notifications originated by this router. The maximum value + 65535 represents an 'infinite' time, in which case, no + pimNeighborLoss notifications are ever sent. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 0 } + ::= { pim 29 } + +pimNeighborLossCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of neighbor loss events that have occurred. + + This counter is incremented when the neighbor timer expires, + and the router has no other neighbors on the same interface + with the same IP version and a lower IP address than itself. + + This counter is incremented whenever a pimNeighborLoss + notification would be generated. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.3.2" + ::= { pim 30 } + +pimInvalidRegisterNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (10..65535) + + + + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time that must elapse between + pimInvalidRegister notifications originated by this router. + The default value of 65535 represents an 'infinite' time, in + which case, no pimInvalidRegister notifications are ever + sent. + + The non-zero minimum allowed value provides resilience + against propagation of denial-of-service attacks from the + data and control planes to the network management plane. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 65535 } + ::= { pim 31 } + +pimInvalidRegisterMsgsRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid PIM Register messages that have been + received by this device. + + A PIM Register message is invalid if either + + o the destination address of the Register message does not + match the Group to RP mapping on this device, or + + o this device believes the group address to be within an + SSM address range, but this Register implies ASM usage. + + These conditions can occur transiently while RP mapping + changes propagate through the network. If this counter is + incremented repeatedly over several minutes, then there is a + persisting configuration error that requires correction. + + The active Group to RP mapping on this device is specified + by the object pimGroupMappingPimMode. If there is no such + mapping, then the object pimGroupMappingPimMode is absent. + The RP address contained in the invalid Register is + pimInvalidRegisterRp. + + Multicast data carried by invalid Register messages is + discarded. The discarded data is from a source directly + + + + connected to pimInvalidRegisterOrigin, and is addressed to + pimInvalidRegisterGroup. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.4.2, RFC 3569, and + 'IP Multicast MIB' (August 2007) ipMcastSsmRangeTable" + ::= { pim 32 } + +pimInvalidRegisterAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type stored in pimInvalidRegisterOrigin, + pimInvalidRegisterGroup, and pimInvalidRegisterRp. + + If no invalid Register messages have been received, then + this object is set to unknown(0)." + ::= { pim 33 } + +pimInvalidRegisterOrigin OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source address of the last invalid Register message + received by this device." + ::= { pim 34 } + +pimInvalidRegisterGroup OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP multicast group address to which the last invalid + Register message received by this device was addressed." + ::= { pim 35 } + +pimInvalidRegisterRp OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RP address to which the last invalid Register message + received by this device was delivered." + ::= { pim 36 } + + + +pimInvalidJoinPruneNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (10..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time that must elapse between + pimInvalidJoinPrune notifications originated by this router. + The default value of 65535 represents an 'infinite' time, in + which case, no pimInvalidJoinPrune notifications are ever + sent. + + The non-zero minimum allowed value provides resilience + against propagation of denial-of-service attacks from the + control plane to the network management plane. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 65535 } + ::= { pim 37 } + +pimInvalidJoinPruneMsgsRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invalid PIM Join/Prune messages that have + been received by this device. + + A PIM Join/Prune message is invalid if either + + o the Group to RP mapping specified by this message does not + match the Group to RP mapping on this device, or + + o this device believes the group address to be within an + SSM address range, but this Join/Prune (*,G) or (S,G,rpt) + implies ASM usage. + + These conditions can occur transiently while RP mapping + changes propagate through the network. If this counter is + incremented repeatedly over several minutes, then there is a + persisting configuration error that requires correction. + + The active Group to RP mapping on this device is specified + by the object pimGroupMappingPimMode. If there is no such + mapping, then the object pimGroupMappingPimMode is absent. + The RP address contained in the invalid Join/Prune is + pimInvalidJoinPruneRp. + + + + Invalid Join/Prune messages are discarded. This may result + in loss of multicast data affecting listeners downstream of + pimInvalidJoinPruneOrigin, for multicast data addressed to + pimInvalidJoinPruneGroup. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.5.2, RFC 3569, and + 'IP Multicast MIB' (August 2007) ipMcastSsmRangeTable" + ::= { pim 38 } + +pimInvalidJoinPruneAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type stored in pimInvalidJoinPruneOrigin, + pimInvalidJoinPruneGroup, and pimInvalidJoinPruneRp. + + If no invalid Join/Prune messages have been received, this + object is set to unknown(0)." + ::= { pim 39 } + +pimInvalidJoinPruneOrigin OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source address of the last invalid Join/Prune message + received by this device." + ::= { pim 40 } + +pimInvalidJoinPruneGroup OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP multicast group address carried in the last + invalid Join/Prune message received by this device." + ::= { pim 41 } + +pimInvalidJoinPruneRp OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RP address carried in the last invalid Join/Prune + + + + message received by this device." + ::= { pim 42 } + +pimRPMappingNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time that must elapse between + pimRPMappingChange notifications originated by this router. + The default value of 65535 represents an 'infinite' time, in + which case, no pimRPMappingChange notifications are ever + sent. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 65535 } + ::= { pim 43 } + +pimRPMappingChangeCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of changes to active RP mappings on this device. + + Information about active RP mappings is available in + pimGroupMappingTable. Only changes to active mappings cause + this counter to be incremented. That is, changes that + modify the pimGroupMappingEntry with the highest precedence + for a group (lowest value of pimGroupMappingPrecedence). + + Such changes may result from manual configuration of this + device, or from automatic RP mapping discovery methods + including the PIM Bootstrap Router (BSR) mechanism. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 5059" + ::= { pim 44 } + +pimInterfaceElectionNotificationPeriod OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The minimum time that must elapse between + pimInterfaceElection notifications originated by this + router. The default value of 65535 represents an 'infinite' + time, in which case, no pimInterfaceElection notifications + are ever sent. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + DEFVAL { 65535 } + ::= { pim 45 } + +pimInterfaceElectionWinCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this device has been elected DR or DF + on any interface. + + Elections occur frequently on newly-active interfaces, as + triggered Hellos establish adjacencies. This counter is not + incremented for elections on an interface until the first + periodic Hello has been sent. If this router is the DR or + DF at the time of sending the first periodic Hello after + interface activation, then this counter is incremented + (once) at that time. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, for example, + when the device is rebooted." + REFERENCE "RFC 4601 section 4.3.2 and RFC 5015 section 3.5.2" + ::= { pim 46 } + +pimRefreshInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval between successive State Refresh messages sent + by an Originator. This timer period is called the + RefreshInterval in the PIM-DM specification. This object is + used only by PIM-DM. + + The storage type of this object is determined by + pimDeviceConfigStorageType." + REFERENCE "RFC 3973 section 4.8" + + + + DEFVAL { 60 } + ::= { pim 47 } + +pimDeviceConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type used for the global PIM configuration of + this device, comprised of the objects listed below. If this + storage type takes the value 'permanent', write-access to + the listed objects need not be allowed. + + The objects described by this storage type are: + pimKeepalivePeriod, pimRegisterSuppressionTime, + pimNeighborLossNotificationPeriod, + pimInvalidRegisterNotificationPeriod, + pimInvalidJoinPruneNotificationPeriod, + pimRPMappingNotificationPeriod, + pimInterfaceElectionNotificationPeriod, and + pimRefreshInterval." + DEFVAL { nonVolatile } + ::= { pim 48 } + +-- +-- The PIM Interface Table +-- + +pimInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's PIM interfaces. + PIM is enabled on all interfaces listed in this table." + ::= { pim 1 } + +pimInterfaceEntry OBJECT-TYPE + SYNTAX PimInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimInterfaceTable. This + entry is preserved on agent restart." + INDEX { pimInterfaceIfIndex, + pimInterfaceIPVersion } + ::= { pimInterfaceTable 1 } + + + + +PimInterfaceEntry ::= SEQUENCE { + pimInterfaceIfIndex InterfaceIndex, + pimInterfaceIPVersion InetVersion, + pimInterfaceAddressType InetAddressType, + pimInterfaceAddress InetAddress, + pimInterfaceGenerationIDValue Unsigned32, + pimInterfaceDR InetAddress, + pimInterfaceDRPriority Unsigned32, + pimInterfaceDRPriorityEnabled TruthValue, + pimInterfaceHelloInterval Unsigned32, + pimInterfaceTrigHelloInterval Unsigned32, + pimInterfaceHelloHoldtime Unsigned32, + pimInterfaceJoinPruneInterval Unsigned32, + pimInterfaceJoinPruneHoldtime Unsigned32, + pimInterfaceDFElectionRobustness Unsigned32, + pimInterfaceLanDelayEnabled TruthValue, + pimInterfacePropagationDelay Unsigned32, + pimInterfaceOverrideInterval Unsigned32, + pimInterfaceEffectPropagDelay Unsigned32, + pimInterfaceEffectOverrideIvl Unsigned32, + pimInterfaceSuppressionEnabled TruthValue, + pimInterfaceBidirCapable TruthValue, + pimInterfaceDomainBorder TruthValue, + pimInterfaceStubInterface TruthValue, + pimInterfacePruneLimitInterval Unsigned32, + pimInterfaceGraftRetryInterval Unsigned32, + pimInterfaceSRPriorityEnabled TruthValue, + pimInterfaceStatus RowStatus, + pimInterfaceStorageType StorageType +} + +pimInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value of this PIM interface." + ::= { pimInterfaceEntry 1 } + +pimInterfaceIPVersion OBJECT-TYPE + SYNTAX InetVersion + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP version of this PIM interface. A physical interface + may be configured in multiple modes concurrently, e.g., IPv4 + and IPv6; however, the traffic is considered to be logically + separate." + + + + ::= { pimInterfaceEntry 2 } + +pimInterfaceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of this PIM interface." + ::= { pimInterfaceEntry 3 } + +pimInterfaceAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary IP address of this router on this PIM + interface. The InetAddressType is given by the + pimInterfaceAddressType object." + REFERENCE "RFC 4601 sections 4.1.6, 4.3.1-4.3.4, and 4.5.1" + ::= { pimInterfaceEntry 4 } + +pimInterfaceGenerationIDValue OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Generation ID this router inserted in the + last PIM Hello message it sent on this interface." + REFERENCE "RFC 4601 section 4.3.1" + ::= { pimInterfaceEntry 5 } + +pimInterfaceDR OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary IP address of the Designated Router on this PIM + interface. The InetAddressType is given by the + pimInterfaceAddressType object." + REFERENCE "RFC 4601 section 4.3" + ::= { pimInterfaceEntry 6 } + +pimInterfaceDRPriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Designated Router Priority value inserted into the DR + + + + Priority option in PIM Hello messages transmitted on this + interface. Numerically higher values for this object + indicate higher priorities." + REFERENCE "RFC 4601 section 4.3.2" + DEFVAL { 1 } + ::= { pimInterfaceEntry 7 } + +pimInterfaceDRPriorityEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if all routers on this interface are + using the DR Priority option." + REFERENCE "RFC 4601 section 4.3.2" + ::= { pimInterfaceEntry 8 } + +pimInterfaceHelloInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..18000) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which PIM Hello messages are transmitted + on this interface. This object corresponds to the + 'Hello_Period' timer value defined in the PIM-SM + specification. A value of zero represents an 'infinite' + interval, and indicates that periodic PIM Hello messages + should not be sent on this interface." + REFERENCE "RFC 4601 section 9" + DEFVAL { 30 } + ::= { pimInterfaceEntry 9 } + +pimInterfaceTrigHelloInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..60) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum time before this router sends a triggered PIM + Hello message on this interface. This object corresponds to + the 'Trigered_Hello_Delay' timer value defined in the PIM-SM + specification. A value of zero has no special meaning and + indicates that triggered PIM Hello messages should always be + sent immediately." + REFERENCE "RFC 4601 section 4.11" + DEFVAL { 5 } + ::= { pimInterfaceEntry 10 } + + + +pimInterfaceHelloHoldtime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value set in the Holdtime field of PIM Hello messages + transmitted on this interface. A value of 65535 represents + an 'infinite' holdtime. Implementations are recommended + to use a holdtime that is 3.5 times the value of + pimInterfaceHelloInterval, or 65535 if + pimInterfaceHelloInterval is set to zero." + REFERENCE "RFC 4601 sections 4.3.2 and 4.9.2" + DEFVAL { 105 } + ::= { pimInterfaceEntry 11 } + +pimInterfaceJoinPruneInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..18000) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The frequency at which this router sends PIM Join/Prune + messages on this PIM interface. This object corresponds to + the 't_periodic' timer value defined in the PIM-SM + specification. A value of zero represents an 'infinite' + interval, and indicates that periodic PIM Join/Prune + messages should not be sent on this interface." + REFERENCE "RFC 4601 section 4.11" + DEFVAL { 60 } + ::= { pimInterfaceEntry 12 } + +pimInterfaceJoinPruneHoldtime OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value inserted into the Holdtime field of a PIM + Join/Prune message sent on this interface. A value of 65535 + represents an 'infinite' holdtime. Implementations are + recommended to use a holdtime that is 3.5 times the value of + pimInterfaceJoinPruneInterval, or 65535 if + pimInterfaceJoinPruneInterval is set to zero. PIM-DM + implementations are recommended to use the value of + pimInterfacePruneLimitInterval." + REFERENCE "RFC 4601 sections 4.5.3 and 4.9.5" + DEFVAL { 210 } + + + + ::= { pimInterfaceEntry 13 } + +pimInterfaceDFElectionRobustness OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum number of PIM DF-Election messages that must be + lost in order for DF election on this interface to fail." + DEFVAL { 3 } + ::= { pimInterfaceEntry 14 } + +pimInterfaceLanDelayEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if all routers on this interface are + using the LAN Prune Delay option." + REFERENCE "RFC 4601 sections 4.3.3 and 4.9.2" + ::= { pimInterfaceEntry 15 } + +pimInterfacePropagationDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..32767) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The expected propagation delay between PIM routers on this + network or link. + + This router inserts this value into the Propagation_Delay + field of the LAN Prune Delay option in the PIM Hello + messages sent on this interface. Implementations SHOULD + enforce a lower bound on the permitted values for this + object to allow for scheduling and processing delays within + the local router." + DEFVAL { 500 } + ::= { pimInterfaceEntry 16 } + +pimInterfaceOverrideInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value this router inserts into the Override_Interval + field of the LAN Prune Delay option in the PIM Hello + + + + messages it sends on this interface. + + When overriding a prune, PIM routers pick a random timer + duration up to the value of this object. The more PIM + routers that are active on a network, the more likely it is + that the prune will be overridden after a small proportion + of this time has elapsed. + + The more PIM routers are active on this network, the larger + this object should be to obtain an optimal spread of prune + override latencies." + REFERENCE "RFC 4601 section 4.3.3" + DEFVAL { 2500 } + ::= { pimInterfaceEntry 17 } + +pimInterfaceEffectPropagDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..32767) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Effective Propagation Delay on this interface. This + object is always 500 if pimInterfaceLanDelayEnabled is + FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimInterfaceEntry 18 } + +pimInterfaceEffectOverrideIvl OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Effective Override Interval on this interface. This + object is always 2500 if pimInterfaceLanDelayEnabled is + FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimInterfaceEntry 19 } + +pimInterfaceSuppressionEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether join suppression is enabled on this interface. + This object is always TRUE if pimInterfaceLanDelayEnabled is + FALSE." + REFERENCE "RFC 4601 section 4.3.3" + + + + ::= { pimInterfaceEntry 20 } + +pimInterfaceBidirCapable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if all routers on this interface are + using the Bidirectional-PIM Capable option." + REFERENCE "RFC 5015 section 3.2 and 3.7.4" + ::= { pimInterfaceEntry 21 } + +pimInterfaceDomainBorder OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether or not this interface is a PIM domain border. This + includes acting as a border for PIM Bootstrap Router (BSR) + messages, if the BSR mechanism is in use." + DEFVAL { false } + ::= { pimInterfaceEntry 22 } + +pimInterfaceStubInterface OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether this interface is a 'stub interface'. If this + object is set to TRUE, then no PIM packets are sent out this + interface, and any received PIM packets are ignored. + + Setting this object to TRUE is a security measure for + interfaces towards untrusted hosts. This allows an + interface to be configured for use with IGMP (Internet Group + Management Protocol) or MLD (Multicast Listener Discovery) + only, which protects the PIM router from forged PIM messages + on the interface. + + To communicate with other PIM routers using this interface, + this object must remain set to FALSE. + + Changing the value of this object while the interface is + operational causes PIM to be disabled and then re-enabled on + this interface." + REFERENCE "RFC 3376, RFC 3810" + DEFVAL { false } + ::= { pimInterfaceEntry 23 } + + + +pimInterfacePruneLimitInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum interval that must transpire between two + successive Prunes sent by a router. This object corresponds + to the 't_limit' timer value defined in the PIM-DM + specification. This object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.8" + DEFVAL { 60 } + ::= { pimInterfaceEntry 24 } + +pimInterfaceGraftRetryInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum interval that must transpire between two + successive Grafts sent by a router. This object corresponds + to the 'Graft_Retry_Period' timer value defined in the + PIM-DM specification. This object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.8" + DEFVAL { 3 } + ::= { pimInterfaceEntry 25 } + +pimInterfaceSRPriorityEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if all routers on this interface are + using the State Refresh option. This object is used only by + PIM-DM." + ::= { pimInterfaceEntry 26 } + +pimInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this entry. Creating the entry enables PIM + on the interface; destroying the entry disables PIM on the + interface. + + This status object can be set to active(1) without setting + + + + any other columnar objects in this entry. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { pimInterfaceEntry 27 } + +pimInterfaceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { pimInterfaceEntry 28 } + +-- +-- The PIM Neighbor Table +-- + +pimNeighborTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimNeighborEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the router's PIM neighbors." + ::= { pim 2 } + +pimNeighborEntry OBJECT-TYPE + SYNTAX PimNeighborEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimNeighborTable." + INDEX { pimNeighborIfIndex, + pimNeighborAddressType, + pimNeighborAddress } + ::= { pimNeighborTable 1 } + +PimNeighborEntry ::= SEQUENCE { + pimNeighborIfIndex InterfaceIndex, + pimNeighborAddressType InetAddressType, + pimNeighborAddress InetAddress, + pimNeighborGenerationIDPresent TruthValue, + pimNeighborGenerationIDValue Unsigned32, + pimNeighborUpTime TimeTicks, + pimNeighborExpiryTime TimeTicks, + + + + pimNeighborDRPriorityPresent TruthValue, + pimNeighborDRPriority Unsigned32, + pimNeighborLanPruneDelayPresent TruthValue, + pimNeighborTBit TruthValue, + pimNeighborPropagationDelay Unsigned32, + pimNeighborOverrideInterval Unsigned32, + pimNeighborBidirCapable TruthValue, + pimNeighborSRCapable TruthValue +} + +pimNeighborIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex for the interface used to reach this + PIM neighbor." + ::= { pimNeighborEntry 1 } + +pimNeighborAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of this PIM neighbor." + ::= { pimNeighborEntry 2 } + +pimNeighborAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The primary IP address of this PIM neighbor. The + InetAddressType is given by the pimNeighborAddressType + object." + ::= { pimNeighborEntry 3 } + +pimNeighborGenerationIDPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the Generation + ID option." + REFERENCE "RFC 4601 section 4.3.1" + ::= { pimNeighborEntry 4 } + +pimNeighborGenerationIDValue OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Generation ID from the last PIM Hello + message received from this neighbor. This object is always + zero if pimNeighborGenerationIDPresent is FALSE." + REFERENCE "RFC 4601 section 4.3.1" + ::= { pimNeighborEntry 5 } + +pimNeighborUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this PIM neighbor (last) became a neighbor + of the local router." + ::= { pimNeighborEntry 6 } + +pimNeighborExpiryTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining before this PIM neighbor will + time out. The value zero indicates that this PIM neighbor + will never time out." + ::= { pimNeighborEntry 7 } + +pimNeighborDRPriorityPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the DR Priority + option." + REFERENCE "RFC 4601 section 4.3.2" + ::= { pimNeighborEntry 8 } + +pimNeighborDRPriority OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Designated Router Priority from the last + PIM Hello message received from this neighbor. This object + is always zero if pimNeighborDRPriorityPresent is FALSE." + REFERENCE "RFC 4601 section 4.3.2" + + + + ::= { pimNeighborEntry 9 } + +pimNeighborLanPruneDelayPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the LAN Prune + Delay option." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimNeighborEntry 10 } + +pimNeighborTBit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the T bit was set in the LAN Prune Delay option + received from this neighbor. The T bit specifies the + ability of the neighbor to disable join suppression. This + object is always TRUE if pimNeighborLanPruneDelayPresent is + FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimNeighborEntry 11 } + +pimNeighborPropagationDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..32767) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Propagation_Delay field of the LAN Prune + Delay option received from this neighbor. This object is + always zero if pimNeighborLanPruneDelayPresent is FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimNeighborEntry 12 } + +pimNeighborOverrideInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the Override_Interval field of the LAN Prune + Delay option received from this neighbor. This object is + always zero if pimNeighborLanPruneDelayPresent is FALSE." + REFERENCE "RFC 4601 section 4.3.3" + ::= { pimNeighborEntry 13 } + +pimNeighborBidirCapable OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the + Bidirectional-PIM Capable option." + REFERENCE "RFC 5015 section 3.2 and 3.7.4" + ::= { pimNeighborEntry 14 } + +pimNeighborSRCapable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Evaluates to TRUE if this neighbor is using the State + Refresh Capable option. This object is used only by + PIM-DM." + REFERENCE "RFC 3973 section 4.3.4" + ::= { pimNeighborEntry 15 } + +-- +-- The PIM Neighbor Secondary Address Table +-- + +pimNbrSecAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimNbrSecAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the secondary addresses + advertised by each PIM neighbor (on a subset of the rows of + the pimNeighborTable defined above)." + REFERENCE "RFC 4601 section 4.3.4" + ::= { pim 3 } + +pimNbrSecAddressEntry OBJECT-TYPE + SYNTAX PimNbrSecAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimNbrSecAddressTable." + INDEX { pimNbrSecAddressIfIndex, + pimNbrSecAddressType, + pimNbrSecAddressPrimary, + pimNbrSecAddress } + ::= { pimNbrSecAddressTable 1 } + +PimNbrSecAddressEntry ::= SEQUENCE { + + + + pimNbrSecAddressIfIndex InterfaceIndex, + pimNbrSecAddressType InetAddressType, + pimNbrSecAddressPrimary InetAddress, + pimNbrSecAddress InetAddress +} + +pimNbrSecAddressIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex for the interface used to reach this + PIM neighbor." + ::= { pimNbrSecAddressEntry 1 } + +pimNbrSecAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of this PIM neighbor." + ::= { pimNbrSecAddressEntry 2 } + +pimNbrSecAddressPrimary OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The primary IP address of this PIM neighbor. The + InetAddressType is given by the pimNbrSecAddressType + object." + ::= { pimNbrSecAddressEntry 3 } + +pimNbrSecAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The secondary IP address of this PIM neighbor. The + InetAddressType is given by the pimNbrSecAddressType + object." + ::= { pimNbrSecAddressEntry 4 } + +-- +-- The PIM (*,G) State Table +-- + +pimStarGTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF PimStarGEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the non-interface specific + (*,G) state that PIM has." + REFERENCE "RFC 4601 section 4.1.3" + ::= { pim 4 } + +pimStarGEntry OBJECT-TYPE + SYNTAX PimStarGEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimStarGTable." + INDEX { pimStarGAddressType, + pimStarGGrpAddress } + ::= { pimStarGTable 1 } + +PimStarGEntry ::= SEQUENCE { + pimStarGAddressType InetAddressType, + pimStarGGrpAddress InetAddress, + pimStarGUpTime TimeTicks, + pimStarGPimMode PimMode, + pimStarGRPAddressType InetAddressType, + pimStarGRPAddress InetAddress, + pimStarGPimModeOrigin PimGroupMappingOriginType, + pimStarGRPIsLocal TruthValue, + pimStarGUpstreamJoinState INTEGER, + pimStarGUpstreamJoinTimer TimeTicks, + pimStarGUpstreamNeighborType InetAddressType, + pimStarGUpstreamNeighbor InetAddress, + pimStarGRPFIfIndex InterfaceIndexOrZero, + pimStarGRPFNextHopType InetAddressType, + pimStarGRPFNextHop InetAddress, + pimStarGRPFRouteProtocol IANAipRouteProtocol, + pimStarGRPFRouteAddress InetAddress, + pimStarGRPFRoutePrefixLength InetAddressPrefixLength, + pimStarGRPFRouteMetricPref Unsigned32, + pimStarGRPFRouteMetric Unsigned32 +} + +pimStarGAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of this multicast group." + + + + ::= { pimStarGEntry 1 } + +pimStarGGrpAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address. The InetAddressType is given + by the pimStarGAddressType object." + ::= { pimStarGEntry 2 } + +pimStarGUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimStarGEntry 3 } + +pimStarGPimMode OBJECT-TYPE + SYNTAX PimMode { asm(3), bidir(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether this entry represents an ASM (Any Source Multicast, + used with PIM-SM) or BIDIR-PIM group." + ::= { pimStarGEntry 4 } + +pimStarGRPAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the Rendezvous Point (RP), or + unknown(0) if the RP address is unknown." + ::= { pimStarGEntry 5 } + +pimStarGRPAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the Rendezvous Point (RP) for the group. + The InetAddressType is given by the pimStarGRPAddressType." + ::= { pimStarGEntry 6 } + +pimStarGPimModeOrigin OBJECT-TYPE + SYNTAX PimGroupMappingOriginType + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The mechanism by which the PIM mode and RP for the group + were learned." + ::= { pimStarGEntry 7 } + +pimStarGRPIsLocal OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router is the RP for the group." + ::= { pimStarGEntry 8 } + +pimStarGUpstreamJoinState OBJECT-TYPE + SYNTAX INTEGER { + notJoined (1), + joined (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router should join the RP tree for the + group. This corresponds to the state of the upstream (*,G) + state machine in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.6" + ::= { pimStarGEntry 9 } + +pimStarGUpstreamJoinTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router next sends a + periodic (*,G) Join message on pimStarGRPFIfIndex. This + timer is called the (*,G) Upstream Join Timer in the PIM-SM + specification. This object is zero if the timer is not + running." + REFERENCE "RFC 4601 section 4.10" + ::= { pimStarGEntry 10 } + +pimStarGUpstreamNeighborType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary address type of the upstream neighbor, or + + + + unknown(0) if the upstream neighbor address is unknown or is + not a PIM neighbor." + ::= { pimStarGEntry 11 } + +pimStarGUpstreamNeighbor OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary address of the neighbor on pimStarGRPFIfIndex + that the local router is sending periodic (*,G) Join + messages to. The InetAddressType is given by the + pimStarGUpstreamNeighborType object. This address is called + RPF'(*,G) in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.1.6" + ::= { pimStarGEntry 12 } + +pimStarGRPFIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the Reverse Path Forwarding + (RPF) interface towards the RP, or zero if the RPF + interface is unknown." + ::= { pimStarGEntry 13 } + +pimStarGRPFNextHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the RPF next hop towards the RP, or + unknown(0) if the RPF next hop is unknown." + ::= { pimStarGEntry 14 } + +pimStarGRPFNextHop OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the RPF next hop towards the RP. The + InetAddressType is given by the pimStarGRPFNextHopType + object. This address is called MRIB.next_hop(RP(G)) + in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.5" + ::= { pimStarGEntry 15 } + + + + +pimStarGRPFRouteProtocol OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which the route used to find the + RPF interface towards the RP was learned." + ::= { pimStarGEntry 16 } + +pimStarGRPFRouteAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address that, when combined with the corresponding + value of pimStarGRPFRoutePrefixLength, identifies the route + used to find the RPF interface towards the RP. The + InetAddressType is given by the pimStarGRPFNextHopType + object. + + This address object is only significant up to + pimStarGRPFRoutePrefixLength bits. The remainder of the + address bits are zero." + ::= { pimStarGEntry 17 } + +pimStarGRPFRoutePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The prefix length that, when combined with the + corresponding value of pimStarGRPFRouteAddress, identifies + the route used to find the RPF interface towards the RP. + The InetAddressType is given by the pimStarGRPFNextHopType + object." + ::= { pimStarGEntry 18 } + +pimStarGRPFRouteMetricPref OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric preference of the route used to find the RPF + interface towards the RP." + ::= { pimStarGEntry 19 } + +pimStarGRPFRouteMetric OBJECT-TYPE + SYNTAX Unsigned32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing metric of the route used to find the RPF + interface towards the RP." + ::= { pimStarGEntry 20 } + +-- +-- The PIM (*,G,I) State Table +-- + +pimStarGITable OBJECT-TYPE + SYNTAX SEQUENCE OF PimStarGIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interface-specific (*,G) + state that PIM has." + REFERENCE "RFC 4601 section 4.1.3" + ::= { pim 5 } + +pimStarGIEntry OBJECT-TYPE + SYNTAX PimStarGIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimStarGITable." + INDEX { pimStarGAddressType, + pimStarGGrpAddress, + pimStarGIIfIndex } + ::= { pimStarGITable 1 } + +PimStarGIEntry ::= SEQUENCE { + pimStarGIIfIndex InterfaceIndex, + pimStarGIUpTime TimeTicks, + pimStarGILocalMembership TruthValue, + pimStarGIJoinPruneState INTEGER, + pimStarGIPrunePendingTimer TimeTicks, + pimStarGIJoinExpiryTimer TimeTicks, + pimStarGIAssertState INTEGER, + pimStarGIAssertTimer TimeTicks, + pimStarGIAssertWinnerAddressType InetAddressType, + pimStarGIAssertWinnerAddress InetAddress, + pimStarGIAssertWinnerMetricPref Unsigned32, + pimStarGIAssertWinnerMetric Unsigned32 +} + +pimStarGIIfIndex OBJECT-TYPE + + + + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that this entry corresponds + to." + ::= { pimStarGIEntry 1 } + +pimStarGIUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimStarGIEntry 2 } + +pimStarGILocalMembership OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router has (*,G) local membership on this + interface (resulting from a mechanism such as IGMP or MLD). + This corresponds to local_receiver_include(*,G,I) in the + PIM-SM specification." + REFERENCE "RFC 3376, RFC 3810, and RFC 4601 section 4.1.6" + ::= { pimStarGIEntry 3 } + +pimStarGIJoinPruneState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + join (2), + prunePending (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state resulting from (*,G) Join/Prune messages + received on this interface. This corresponds to the state + of the downstream per-interface (*,G) state machine in the + PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.2" + ::= { pimStarGIEntry 4 } + +pimStarGIPrunePendingTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The time remaining before the local router acts on a (*,G) + Prune message received on this interface, during which the + router is waiting to see whether another downstream router + will override the Prune message. This timer is called the + (*,G) Prune-Pending Timer in the PIM-SM specification. This + object is zero if the timer is not running." + REFERENCE "RFC 4601 section 4.5.1" + ::= { pimStarGIEntry 5 } + +pimStarGIJoinExpiryTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before (*,G) Join state for this + interface expires. This timer is called the (*,G) Join + Expiry Timer in the PIM-SM specification. This object is + zero if the timer is not running. A value of 'FFFFFFFF'h + indicates an infinite expiry time." + REFERENCE "RFC 4601 section 4.10" + ::= { pimStarGIEntry 6 } + +pimStarGIAssertState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + iAmAssertWinner (2), + iAmAssertLoser (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The (*,G) Assert state for this interface. This + corresponds to the state of the per-interface (*,G) Assert + state machine in the PIM-SM specification. If + pimStarGPimMode is 'bidir', this object must be 'noInfo'." + REFERENCE "RFC 4601 section 4.6.2" + ::= { pimStarGIEntry 7 } + +pimStarGIAssertTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertWinner', this is the + time remaining before the local router next sends a (*,G) + Assert message on this interface. If pimStarGIAssertState + is 'iAmAssertLoser', this is the time remaining before the + + + + (*,G) Assert state expires. If pimStarGIAssertState is + 'noInfo', this is zero. This timer is called the (*,G) + Assert Timer in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.6.2" + ::= { pimStarGIEntry 8 } + +pimStarGIAssertWinnerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertLoser', this is the + address type of the assert winner; otherwise, this object is + unknown(0)." + ::= { pimStarGIEntry 9 } + +pimStarGIAssertWinnerAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertLoser', this is the + address of the assert winner. The InetAddressType is given + by the pimStarGIAssertWinnerAddressType object." + ::= { pimStarGIEntry 10 } + +pimStarGIAssertWinnerMetricPref OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertLoser', this is the + metric preference of the route to the RP advertised by the + assert winner; otherwise, this object is zero." + ::= { pimStarGIEntry 11 } + +pimStarGIAssertWinnerMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimStarGIAssertState is 'iAmAssertLoser', this is the + routing metric of the route to the RP advertised by the + assert winner; otherwise, this object is zero." + ::= { pimStarGIEntry 12 } + +-- +-- The PIM (S,G) State Table + + + +-- + +pimSGTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimSGEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the non-interface specific + (S,G) state that PIM has." + REFERENCE "RFC 4601 section 4.1.4" + ::= { pim 6 } + +pimSGEntry OBJECT-TYPE + SYNTAX PimSGEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimSGTable." + INDEX { pimSGAddressType, + pimSGGrpAddress, + pimSGSrcAddress } + ::= { pimSGTable 1 } + +PimSGEntry ::= SEQUENCE { + pimSGAddressType InetAddressType, + pimSGGrpAddress InetAddress, + pimSGSrcAddress InetAddress, + pimSGUpTime TimeTicks, + pimSGPimMode PimMode, + pimSGUpstreamJoinState INTEGER, + pimSGUpstreamJoinTimer TimeTicks, + pimSGUpstreamNeighbor InetAddress, + pimSGRPFIfIndex InterfaceIndexOrZero, + pimSGRPFNextHopType InetAddressType, + pimSGRPFNextHop InetAddress, + pimSGRPFRouteProtocol IANAipRouteProtocol, + pimSGRPFRouteAddress InetAddress, + pimSGRPFRoutePrefixLength InetAddressPrefixLength, + pimSGRPFRouteMetricPref Unsigned32, + pimSGRPFRouteMetric Unsigned32, + pimSGSPTBit TruthValue, + pimSGKeepaliveTimer TimeTicks, + pimSGDRRegisterState INTEGER, + pimSGDRRegisterStopTimer TimeTicks, + pimSGRPRegisterPMBRAddressType InetAddressType, + pimSGRPRegisterPMBRAddress InetAddress, + pimSGUpstreamPruneState INTEGER, + pimSGUpstreamPruneLimitTimer TimeTicks, + + + + pimSGOriginatorState INTEGER, + pimSGSourceActiveTimer TimeTicks, + pimSGStateRefreshTimer TimeTicks +} + +pimSGAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the source and multicast group for this + entry." + ::= { pimSGEntry 1 } + +pimSGGrpAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address for this entry. The + InetAddressType is given by the pimSGAddressType object." + ::= { pimSGEntry 2 } + +pimSGSrcAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The source address for this entry. The InetAddressType is + given by the pimSGAddressType object." + ::= { pimSGEntry 3 } + +pimSGUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimSGEntry 4 } + +pimSGPimMode OBJECT-TYPE + SYNTAX PimMode { ssm(2), asm(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether pimSGGrpAddress is an SSM (Source Specific + Multicast, used with PIM-SM) or ASM (Any Source Multicast, + used with PIM-SM) group." + + + + REFERENCE "RFC 4601 section 4.5.2, RFC 3569, and + 'IP Multicast MIB' (August 2007) ipMcastSsmRangeTable" + ::= { pimSGEntry 5 } + +pimSGUpstreamJoinState OBJECT-TYPE + SYNTAX INTEGER { + notJoined (1), + joined (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router should join the shortest-path tree + for the source and group represented by this entry. This + corresponds to the state of the upstream (S,G) state machine + in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.7" + ::= { pimSGEntry 6 } + +pimSGUpstreamJoinTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router next sends a + periodic (S,G) Join message on pimSGRPFIfIndex. This timer + is called the (S,G) Upstream Join Timer in the PIM-SM + specification. This object is zero if the timer is not + running." + REFERENCE "RFC 4601 sections 4.10 and 4.11" + ::= { pimSGEntry 7 } + +pimSGUpstreamNeighbor OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary address of the neighbor on pimSGRPFIfIndex that + the local router is sending periodic (S,G) Join messages to. + This is zero if the RPF next hop is unknown or is not a + PIM neighbor. The InetAddressType is given by the + pimSGAddressType object. This address is called RPF'(S,G) + in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.1.6" + ::= { pimSGEntry 8 } + +pimSGRPFIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the RPF interface towards the + source, or zero if the RPF interface is unknown." + ::= { pimSGEntry 9 } + +pimSGRPFNextHopType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the RPF next hop towards the source, or + unknown(0) if the RPF next hop is unknown." + ::= { pimSGEntry 10 } + +pimSGRPFNextHop OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the RPF next hop towards the source. The + InetAddressType is given by the pimSGRPFNextHopType. This + address is called MRIB.next_hop(S) in the PIM-SM + specification." + REFERENCE "RFC 4601 section 4.5.5" + ::= { pimSGEntry 11 } + +pimSGRPFRouteProtocol OBJECT-TYPE + SYNTAX IANAipRouteProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing mechanism via which the route used to find the + RPF interface towards the source was learned." + ::= { pimSGEntry 12 } + +pimSGRPFRouteAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address that, when combined with the corresponding + value of pimSGRPFRoutePrefixLength, identifies the route + used to find the RPF interface towards the source. The + InetAddressType is given by the pimSGRPFNextHopType object. + + This address object is only significant up to + + + + pimSGRPFRoutePrefixLength bits. The remainder of the + address bits are zero." + ::= { pimSGEntry 13 } + +pimSGRPFRoutePrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The prefix length that, when combined with the + corresponding value of pimSGRPFRouteAddress, identifies the + route used to find the RPF interface towards the source. + The InetAddressType is given by the pimSGRPFNextHopType + object." + ::= { pimSGEntry 14 } + +pimSGRPFRouteMetricPref OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric preference of the route used to find the RPF + interface towards the source." + ::= { pimSGEntry 15 } + +pimSGRPFRouteMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The routing metric of the route used to find the RPF + interface towards the source." + ::= { pimSGEntry 16 } + +pimSGSPTBit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the SPT bit is set; and therefore whether + forwarding is taking place on the shortest-path tree." + ::= { pimSGEntry 17 } + +pimSGKeepaliveTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The time remaining before this (S,G) state expires, in + the absence of explicit (S,G) local membership or (S,G) + Join messages received to maintain it. This timer is + called the (S,G) Keepalive Timer in the PIM-SM + specification." + REFERENCE "RFC 4601 section 4.1.4" + ::= { pimSGEntry 18 } + +pimSGDRRegisterState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + join (2), + joinPending (3), + prune (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router should encapsulate (S,G) data + packets in Register messages and send them to the RP. This + corresponds to the state of the per-(S,G) Register state + machine in the PIM-SM specification. This object is always + 'noInfo' unless pimSGPimMode is 'asm'." + REFERENCE "RFC 4601 section 4.4.1" + ::= { pimSGEntry 19 } + +pimSGDRRegisterStopTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGDRRegisterState is 'prune', this is the time + remaining before the local router sends a Null-Register + message to the RP. If pimSGDRRegisterState is + 'joinPending', this is the time remaining before the local + router resumes encapsulating data packets and sending them + to the RP. Otherwise, this is zero. This timer is called + the Register-Stop Timer in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.4" + ::= { pimSGEntry 20 } + +pimSGRPRegisterPMBRAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the first PIM Multicast Border Router + to send a Register message with the Border bit set. This + + + + object is unknown(0) if the local router is not the RP for + the group." + ::= { pimSGEntry 21 } + +pimSGRPRegisterPMBRAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the first PIM Multicast Border Router to + send a Register message with the Border bit set. The + InetAddressType is given by the + pimSGRPRegisterPMBRAddressType object." + ::= { pimSGEntry 22 } + +pimSGUpstreamPruneState OBJECT-TYPE + SYNTAX INTEGER { + forwarding (1), + ackpending (2), + pruned (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router has pruned itself from the tree. + This corresponds to the state of the upstream prune (S,G) + state machine in the PIM-DM specification. This object is + used only by PIM-DM." + REFERENCE "RFC 3973 section 4.4.1" + ::= { pimSGEntry 23 } + +pimSGUpstreamPruneLimitTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router may send a (S,G) + Prune message on pimSGRPFIfIndex. This timer is called the + (S,G) Prune Limit Timer in the PIM-DM specification. This + object is zero if the timer is not running. This object is + used only by PIM-DM." + REFERENCE "RFC 2973 section 4.8" + ::= { pimSGEntry 24 } + +pimSGOriginatorState OBJECT-TYPE + SYNTAX INTEGER { + notOriginator (1), + originator (2) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the router is an originator for an (S,G) message + flow. This corresponds to the state of the per-(S,G) + Originator state machine in the PIM-DM specification. This + object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.5.2" + ::= { pimSGEntry 25 } + +pimSGSourceActiveTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGOriginatorState is 'originator', this is the time + remaining before the local router reverts to a notOriginator + state. Otherwise, this is zero. This timer is called the + Source Active Timer in the PIM-DM specification. This + object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.8" + ::= { pimSGEntry 26 } + +pimSGStateRefreshTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGOriginatorState is 'originator', this is the time + remaining before the local router sends a State Refresh + message. Otherwise, this is zero. This timer is called the + State Refresh Timer in the PIM-DM specification. This + object is used only by PIM-DM." + REFERENCE "RFC 3973 section 4.8" + ::= { pimSGEntry 27 } + +-- +-- The PIM (S,G,I) State Table +-- + +pimSGITable OBJECT-TYPE + SYNTAX SEQUENCE OF PimSGIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interface-specific (S,G) + state that PIM has." + + + + REFERENCE "RFC 4601 section 4.1.4" + ::= { pim 7 } + +pimSGIEntry OBJECT-TYPE + SYNTAX PimSGIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimSGITable." + INDEX { pimSGAddressType, + pimSGGrpAddress, + pimSGSrcAddress, + pimSGIIfIndex } + ::= { pimSGITable 1 } + +PimSGIEntry ::= SEQUENCE { + pimSGIIfIndex InterfaceIndex, + pimSGIUpTime TimeTicks, + pimSGILocalMembership TruthValue, + pimSGIJoinPruneState INTEGER, + pimSGIPrunePendingTimer TimeTicks, + pimSGIJoinExpiryTimer TimeTicks, + pimSGIAssertState INTEGER, + pimSGIAssertTimer TimeTicks, + pimSGIAssertWinnerAddressType InetAddressType, + pimSGIAssertWinnerAddress InetAddress, + pimSGIAssertWinnerMetricPref Unsigned32, + pimSGIAssertWinnerMetric Unsigned32 +} + +pimSGIIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that this entry corresponds + to." + ::= { pimSGIEntry 1 } + +pimSGIUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimSGIEntry 2 } + +pimSGILocalMembership OBJECT-TYPE + + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router has (S,G) local membership on this + interface (resulting from a mechanism such as IGMP or MLD). + This corresponds to local_receiver_include(S,G,I) in the + PIM-SM specification." + REFERENCE "RFC 3376, RFC 3810, RFC 4601 sections 4.1.6, 4.6.1, and + 4.6.2" + ::= { pimSGIEntry 3 } + +pimSGIJoinPruneState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + join (2), + prunePending (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state resulting from (S,G) Join/Prune messages + received on this interface. This corresponds to the state + of the downstream per-interface (S,G) state machine in the + PIM-SM and PIM-DM specification." + REFERENCE "RFC 4601 section 4.5.3 and RFC 3973 section 4.4.2" + ::= { pimSGIEntry 4 } + +pimSGIPrunePendingTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router acts on an (S,G) + Prune message received on this interface, during which the + router is waiting to see whether another downstream router + will override the Prune message. This timer is called the + (S,G) Prune-Pending Timer in the PIM-SM specification. This + object is zero if the timer is not running." + REFERENCE "RFC 4601 sections 4.5.3 and 4.5.4" + ::= { pimSGIEntry 5 } + +pimSGIJoinExpiryTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before (S,G) Join state for this + + + + interface expires. This timer is called the (S,G) Join + Expiry Timer in the PIM-SM specification. This object is + zero if the timer is not running. A value of 'FFFFFFFF'h + indicates an infinite expiry time. This timer is called the + (S,G) Prune Timer in the PIM-DM specification." + REFERENCE "RFC 4601 section 4.10 and RFC 3973 section 4.8" + ::= { pimSGIEntry 6 } + +pimSGIAssertState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + iAmAssertWinner (2), + iAmAssertLoser (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The (S,G) Assert state for this interface. This + corresponds to the state of the per-interface (S,G) Assert + state machine in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.6.1" + ::= { pimSGIEntry 7 } + +pimSGIAssertTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertWinner', this is the time + remaining before the local router next sends a (S,G) Assert + message on this interface. If pimSGIAssertState is + 'iAmAssertLoser', this is the time remaining before the + (S,G) Assert state expires. If pimSGIAssertState is + 'noInfo', this is zero. This timer is called the (S,G) + Assert Timer in the PIM-SM specification." + REFERENCE "RFC 4601 section 4.6.1" + ::= { pimSGIEntry 8 } + +pimSGIAssertWinnerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertLoser', this is the + address type of the assert winner; otherwise, this object is + unknown(0)." + ::= { pimSGIEntry 9 } + + + + +pimSGIAssertWinnerAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertLoser', this is the + address of the assert winner. The InetAddressType is given + by the pimSGIAssertWinnerAddressType object." + ::= { pimSGIEntry 10 } + +pimSGIAssertWinnerMetricPref OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertLoser', this is the + metric preference of the route to the source advertised by + the assert winner; otherwise, this object is zero." + ::= { pimSGIEntry 11 } + +pimSGIAssertWinnerMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If pimSGIAssertState is 'iAmAssertLoser', this is the + routing metric of the route to the source advertised by the + assert winner; otherwise, this object is zero." + ::= { pimSGIEntry 12 } + +-- +-- The PIM (S,G,rpt) State Table +-- + +pimSGRptTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimSGRptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the non-interface specific + (S,G,rpt) state that PIM has." + REFERENCE "RFC 4601 section 4.1.5" + ::= { pim 8 } + +pimSGRptEntry OBJECT-TYPE + SYNTAX PimSGRptEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An entry (conceptual row) in the pimSGRptTable." + INDEX { pimStarGAddressType, + pimStarGGrpAddress, + pimSGRptSrcAddress } + ::= { pimSGRptTable 1 } + +PimSGRptEntry ::= SEQUENCE { + pimSGRptSrcAddress InetAddress, + pimSGRptUpTime TimeTicks, + pimSGRptUpstreamPruneState INTEGER, + pimSGRptUpstreamOverrideTimer TimeTicks +} + +pimSGRptSrcAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The source address for this entry. The InetAddressType is + given by the pimStarGAddressType object." + ::= { pimSGRptEntry 1 } + +pimSGRptUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimSGRptEntry 2 } + +pimSGRptUpstreamPruneState OBJECT-TYPE + SYNTAX INTEGER { + rptNotJoined (1), + pruned (2), + notPruned (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router should prune the source off the RP + tree. This corresponds to the state of the upstream + (S,G,rpt) state machine for triggered messages in the PIM-SM + specification." + REFERENCE "RFC 4601 section 4.5.9" + ::= { pimSGRptEntry 3 } + +pimSGRptUpstreamOverrideTimer OBJECT-TYPE + + + + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before the local router sends a + triggered (S,G,rpt) Join message on pimStarGRPFIfIndex. + This timer is called the (S,G,rpt) Upstream Override Timer + in the PIM-SM specification. This object is zero if the + timer is not running." + REFERENCE "RFC 4601 section 4.5.9" + ::= { pimSGRptEntry 4 } + +-- +-- The PIM (S,G,rpt,I) State Table +-- + +pimSGRptITable OBJECT-TYPE + SYNTAX SEQUENCE OF PimSGRptIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the interface-specific + (S,G,rpt) state that PIM has." + REFERENCE "RFC 4601 section 4.1.5" + ::= { pim 9 } + +pimSGRptIEntry OBJECT-TYPE + SYNTAX PimSGRptIEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimSGRptITable." + INDEX { pimStarGAddressType, + pimStarGGrpAddress, + pimSGRptSrcAddress, + pimSGRptIIfIndex } + ::= { pimSGRptITable 1 } + +PimSGRptIEntry ::= SEQUENCE { + pimSGRptIIfIndex InterfaceIndex, + pimSGRptIUpTime TimeTicks, + pimSGRptILocalMembership TruthValue, + pimSGRptIJoinPruneState INTEGER, + pimSGRptIPrunePendingTimer TimeTicks, + pimSGRptIPruneExpiryTimer TimeTicks +} + +pimSGRptIIfIndex OBJECT-TYPE + + + + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the interface that this entry corresponds + to." + ::= { pimSGRptIEntry 1 } + +pimSGRptIUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this entry was created by the local router." + ::= { pimSGRptIEntry 2 } + +pimSGRptILocalMembership OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether the local router has both (*,G) include local + membership and (S,G) exclude local membership on this + interface (resulting from a mechanism such as IGMP or MLD). + This corresponds to local_receiver_exclude(S,G,I) in the + PIM-SM specification." + REFERENCE "RFC 3376, RFC 3810, RFC 4601 section 4.1.6" + ::= { pimSGRptIEntry 3 } + +pimSGRptIJoinPruneState OBJECT-TYPE + SYNTAX INTEGER { + noInfo (1), + prune (2), + prunePending (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state resulting from (S,G,rpt) Join/Prune messages + received on this interface. This corresponds to the state + of the downstream per-interface (S,G,rpt) state machine in + the PIM-SM specification." + REFERENCE "RFC 4601 section 4.5.4" + ::= { pimSGRptIEntry 4 } + +pimSGRptIPrunePendingTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The time remaining before the local router starts pruning + this source off the RP tree. This timer is called the + (S,G,rpt) Prune-Pending Timer in the PIM-SM specification. + This object is zero if the timer is not running." + REFERENCE "RFC 4601 section 4.5.4" + ::= { pimSGRptIEntry 5 } + +pimSGRptIPruneExpiryTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time remaining before (S,G,rpt) Prune state for this + interface expires. This timer is called the (S,G,rpt) + Prune Expiry Timer in the PIM-SM specification. This object + is zero if the timer is not running. A value of 'FFFFFFFF'h + indicates an infinite expiry time." + REFERENCE "RFC 4601 section 4.5.4" + ::= { pimSGRptIEntry 6 } + +-- +-- The PIM Bidir DF-Election Table +-- + +pimBidirDFElectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimBidirDFElectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the per-RP Designated + Forwarder (DF) Election state for each interface for all the + RPs in BIDIR mode." + REFERENCE "RFC 5015 section 3.5" + ::= { pim 10 } + +pimBidirDFElectionEntry OBJECT-TYPE + SYNTAX PimBidirDFElectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimBidirDFElectionTable." + INDEX { pimBidirDFElectionAddressType, + pimBidirDFElectionRPAddress, + pimBidirDFElectionIfIndex } + ::= { pimBidirDFElectionTable 1 } + + + + +PimBidirDFElectionEntry ::= SEQUENCE { + pimBidirDFElectionAddressType InetAddressType, + pimBidirDFElectionRPAddress InetAddress, + pimBidirDFElectionIfIndex InterfaceIndex, + pimBidirDFElectionWinnerAddressType InetAddressType, + pimBidirDFElectionWinnerAddress InetAddress, + pimBidirDFElectionWinnerUpTime TimeTicks, + pimBidirDFElectionWinnerMetricPref Unsigned32, + pimBidirDFElectionWinnerMetric Unsigned32, + pimBidirDFElectionState INTEGER, + pimBidirDFElectionStateTimer TimeTicks +} + +pimBidirDFElectionAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the RP for which the DF state is being + maintained." + ::= { pimBidirDFElectionEntry 1 } + +pimBidirDFElectionRPAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the RP for which the DF state is being + maintained. The InetAddressType is given by the + pimBidirDFElectionAddressType object." + ::= { pimBidirDFElectionEntry 2 } + +pimBidirDFElectionIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex for the interface for which the DF + state is being maintained." + ::= { pimBidirDFElectionEntry 3 } + +pimBidirDFElectionWinnerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary address type of the winner of the DF Election + process. A value of unknown(0) indicates there is currently + + + + no DF." + ::= { pimBidirDFElectionEntry 4 } + +pimBidirDFElectionWinnerAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary IP address of the winner of the DF Election + process. The InetAddressType is given by the + pimBidirDFElectionWinnerAddressType object." + ::= { pimBidirDFElectionEntry 5 } + +pimBidirDFElectionWinnerUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since the current winner (last) became elected as + the DF for this RP." + ::= { pimBidirDFElectionEntry 6 } + +pimBidirDFElectionWinnerMetricPref OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric preference advertised by the DF Winner, or zero + if there is currently no DF." + ::= { pimBidirDFElectionEntry 7 } + +pimBidirDFElectionWinnerMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The metric advertised by the DF Winner, or zero if there is + currently no DF." + ::= { pimBidirDFElectionEntry 8 } + +pimBidirDFElectionState OBJECT-TYPE + SYNTAX INTEGER { + dfOffer(1), + dfLose(2), + dfWinner(3), + dfBackoff(4) + } + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The state of this interface with respect to DF-Election for + this RP. The states correspond to the ones defined in the + BIDIR-PIM specification." + REFERENCE "RFC 5015 section 3.5.3.1" + ::= { pimBidirDFElectionEntry 9 } + +pimBidirDFElectionStateTimer OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum time remaining after which the local router + will expire the current DF state represented by + pimBidirDFElectionState." + ::= { pimBidirDFElectionEntry 10 } + +-- +-- The PIM Static RP Table +-- + +pimStaticRPTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimStaticRPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to manage static configuration of RPs. + + If the group prefixes configured for two or more rows in + this table overlap, the row with the greatest value of + pimStaticRPGrpPrefixLength is used for the overlapping + range." + REFERENCE "RFC 4601 section 3.7" + ::= { pim 11 } + +pimStaticRPEntry OBJECT-TYPE + SYNTAX PimStaticRPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimStaticRPTable. This + entry is preserved on agent restart." + INDEX { pimStaticRPAddressType, + pimStaticRPGrpAddress, + pimStaticRPGrpPrefixLength } + ::= { pimStaticRPTable 1 } + + + + +PimStaticRPEntry ::= SEQUENCE { + pimStaticRPAddressType InetAddressType, + pimStaticRPGrpAddress InetAddress, + pimStaticRPGrpPrefixLength InetAddressPrefixLength, + pimStaticRPRPAddress InetAddress, + pimStaticRPPimMode PimMode, + pimStaticRPOverrideDynamic TruthValue, + pimStaticRPPrecedence Unsigned32, + pimStaticRPRowStatus RowStatus, + pimStaticRPStorageType StorageType +} + +pimStaticRPAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of this entry." + ::= { pimStaticRPEntry 1 } + +pimStaticRPGrpAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group address that, when combined with + pimStaticRPGrpPrefixLength, gives the group prefix for this + entry. The InetAddressType is given by the + pimStaticRPAddressType object. + + This address object is only significant up to + pimStaticRPGrpPrefixLength bits. The remainder of the + address bits are zero. This is especially important for + this index field, which is part of the index of this entry. + Any non-zero bits would signify an entirely different + entry." + ::= { pimStaticRPEntry 2 } + +pimStaticRPGrpPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength (4..128) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group prefix length that, when combined + with pimStaticRPGrpAddress, gives the group prefix for this + entry. The InetAddressType is given by the + pimStaticRPAddressType object. If pimStaticRPAddressType is + 'ipv4' or 'ipv4z', this object must be in the range 4..32. + + + + If pimStaticRPGrpAddressType is 'ipv6' or 'ipv6z', this + object must be in the range 8..128." + ::= { pimStaticRPEntry 3 } + +pimStaticRPRPAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP address of the RP to be used for groups within this + group prefix. The InetAddressType is given by the + pimStaticRPAddressType object." + ::= { pimStaticRPEntry 4 } + +pimStaticRPPimMode OBJECT-TYPE + SYNTAX PimMode { ssm(2), asm(3), bidir(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The PIM mode to be used for groups in this group prefix. + + If this object is set to ssm(2), then pimStaticRPRPAddress + must be set to zero. No RP operations are ever possible for + PIM Mode SSM." + REFERENCE "RFC 4601 section 3.7, RFC 3569, and + 'IP Multicast MIB' (August 2007) ipMcastSsmRangeTable" + DEFVAL { asm } + ::= { pimStaticRPEntry 5 } + +pimStaticRPOverrideDynamic OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Whether this static RP configuration will override other + group mappings in this group prefix. If this object is + TRUE, then it will override: + + - RP information learned dynamically for groups in this + group prefix. + + - RP information configured in pimStaticRPTable with + pimStaticRPOverrideDynamic set to FALSE. + + See pimGroupMappingTable for details." + DEFVAL { false } + ::= { pimStaticRPEntry 6 } + + + + +pimStaticRPPrecedence OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value for pimGroupMappingPrecedence to be used for this + static RP configuration. This allows fine control over + which configuration is overridden by this static + configuration. + + If pimStaticRPOverrideDynamic is set to TRUE, all dynamic RP + configuration is overridden by this static configuration, + whatever the value of this object. + + The absolute values of this object have a significance only + on the local router and do not need to be coordinated with + other routers. A setting of this object may have different + effects when applied to other routers. + + Do not use this object unless fine control of static RP + behavior on the local router is required." + ::= { pimStaticRPEntry 7 } + +pimStaticRPRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. + + This status object cannot be set to active(1) before a valid + value has been written to pimStaticRPRPAddress. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { pimStaticRPEntry 8 } + +pimStaticRPStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { pimStaticRPEntry 9 } + + + +-- +-- The PIM Anycast-RP Set Table +-- + +pimAnycastRPSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimAnycastRPSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to manage Anycast-RP via PIM Register + messages, as opposed to via other protocols such as MSDP + (Multicast Source Discovery Protocol). + + Entries must be configured in this table if and only if the + local router is a member of one or more Anycast-RP sets, + that is, one or more Anycast-RP addresses are assigned to + the local router. Note that if using static RP + configuration, this is in addition to, not instead of, the + pimStaticRPTable entries that must be configured for the + Anycast-RPs. + + The set of rows with the same values of both + pimAnycastRPSetAddressType and pimAnycastRPSetAnycastAddress + corresponds to the Anycast-RP set for that Anycast-RP + address. + + When an Anycast-RP set configuration is active, one entry + per pimAnycastRPSetAnycastAddress corresponds to the local + router. The local router is identified by the + pimAnycastRpSetLocalRouter object. That entry determines + the source address used by the local router when forwarding + PIM Register messages within the Anycast-RP set." + REFERENCE "RFC 4610, RFC 3618" + ::= { pim 12 } + +pimAnycastRPSetEntry OBJECT-TYPE + SYNTAX PimAnycastRPSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry corresponds to a single router within a particular + Anycast-RP set. This entry is preserved on agent restart." + INDEX { pimAnycastRPSetAddressType, + pimAnycastRPSetAnycastAddress, + pimAnycastRPSetRouterAddress } + ::= { pimAnycastRPSetTable 1 } + +PimAnycastRPSetEntry ::= SEQUENCE { + + + + pimAnycastRPSetAddressType InetAddressType, + pimAnycastRPSetAnycastAddress InetAddress, + pimAnycastRPSetRouterAddress InetAddress, + pimAnycastRPSetLocalRouter TruthValue, + pimAnycastRPSetRowStatus RowStatus, + pimAnycastRPSetStorageType StorageType +} + +pimAnycastRPSetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the Anycast-RP address and router + address." + ::= { pimAnycastRPSetEntry 1 } + +pimAnycastRPSetAnycastAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Anycast-RP address. The InetAddressType is given by + the pimAnycastRPSetAddressType object." + ::= { pimAnycastRPSetEntry 2 } + +pimAnycastRPSetRouterAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of a router that is a member of the Anycast-RP + set. The InetAddressType is given by the + pimAnycastRPSetAddressType object. + + This address differs from pimAnycastRPSetAnycastAddress. + Equal values for these two addresses in a single entry are + not permitted. That would cause a Register loop." + ::= { pimAnycastRPSetEntry 3 } + +pimAnycastRPSetLocalRouter OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Whether this entry corresponds to the local router." + ::= { pimAnycastRPSetEntry 4 } + + + + +pimAnycastRPSetRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which rows in this table can + be created and destroyed. + + This status object can be set to active(1) without setting + any other columnar objects in this entry. + + All writeable objects in this entry can be modified when the + status of this entry is active(1)." + ::= { pimAnycastRPSetEntry 5 } + +pimAnycastRPSetStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } + ::= { pimAnycastRPSetEntry 6 } + +-- +-- The PIM Group Mapping Table +-- + +pimGroupMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF PimGroupMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing mappings from multicast + group prefixes to the PIM mode and RP address to use for + groups within that group prefix. + + Rows in this table are created for a variety of reasons, + indicated by the value of the pimGroupMappingOrigin object. + + - Rows with a pimGroupMappingOrigin value of 'fixed' are + created automatically by the router at startup, to + correspond to the well-defined prefixes of link-local and + unroutable group addresses. These rows are never + destroyed. + + + + + - Rows with a pimGroupMappingOrigin value of 'embedded' are + created by the router to correspond to group prefixes + that are to be treated as being in Embedded-RP format. + + - Rows with a pimGroupMappingOrigin value of 'configRp' are + created and destroyed as a result of rows in the + pimStaticRPTable being created and destroyed. + + - Rows with a pimGroupMappingOrigin value of 'configSsm' + are created and destroyed as a result of configuration of + SSM address ranges to the local router. + + - Rows with a pimGroupMappingOrigin value of 'bsr' are + created as a result of running the PIM Bootstrap Router + (BSR) mechanism. If the local router is not the elected + BSR, these rows are created to correspond to group + prefixes in the PIM Bootstrap messages received from the + elected BSR. If the local router is the elected BSR, + these rows are created to correspond to group prefixes in + the PIM Bootstrap messages that the local router sends. + In either case, these rows are destroyed when the group + prefixes are timed out by the BSR mechanism. + + - Rows with a pimGroupMappingOrigin value of 'other' are + created and destroyed according to some other mechanism + not specified here. + + Given the collection of rows in this table at any point in + time, the PIM mode and RP address to use for a particular + group is determined using the following algorithm. + + 1. From the set of all rows, the subset whose group prefix + contains the group in question are selected. + + 2. If there are no such rows, then the group mapping is + undefined. + + 3. If there are multiple selected rows, and a subset is + defined by pimStaticRPTable (pimGroupMappingOrigin value + of 'configRp') with pimStaticRPOverrideDynamic set to + TRUE, then this subset is selected. + + 4. From the selected subset of rows, the subset that have + the greatest value of pimGroupMappingGrpPrefixLength are + selected. + + 5. If there are still multiple selected rows, the subset + that has the highest precedence (the lowest numerical + + + + value for pimGroupMappingPrecedence) is selected. + + 6. If there are still multiple selected rows, the row + selected is implementation dependent; the implementation + might or might not apply the PIM hash function to select + the row. + + 7. The group mode to use is given by the value of + pimGroupMappingPimMode from the single selected row; the + RP to use is given by the value of + pimGroupMappingRPAddress, unless pimGroupMappingOrigin is + 'embedded', in which case, the RP is extracted from the + group address in question." + REFERENCE "RFC 4601 section 3.7, RFC 3956, and RFC 4610" + ::= { pim 13 } + +pimGroupMappingEntry OBJECT-TYPE + SYNTAX PimGroupMappingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the pimGroupMappingTable." + INDEX { pimGroupMappingOrigin, + pimGroupMappingAddressType, + pimGroupMappingGrpAddress, + pimGroupMappingGrpPrefixLength, + pimGroupMappingRPAddressType, + pimGroupMappingRPAddress } + ::= { pimGroupMappingTable 1 } + +PimGroupMappingEntry ::= SEQUENCE { + pimGroupMappingOrigin PimGroupMappingOriginType, + pimGroupMappingAddressType InetAddressType, + pimGroupMappingGrpAddress InetAddress, + pimGroupMappingGrpPrefixLength InetAddressPrefixLength, + pimGroupMappingRPAddressType InetAddressType, + pimGroupMappingRPAddress InetAddress, + pimGroupMappingPimMode PimMode, + pimGroupMappingPrecedence Unsigned32 +} + +pimGroupMappingOrigin OBJECT-TYPE + SYNTAX PimGroupMappingOriginType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mechanism by which this group mapping was learned." + ::= { pimGroupMappingEntry 1 } + + + +pimGroupMappingAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the IP multicast group prefix." + ::= { pimGroupMappingEntry 2 } + +pimGroupMappingGrpAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP multicast group address that, when combined with + pimGroupMappingGrpPrefixLength, gives the group prefix for + this mapping. The InetAddressType is given by the + pimGroupMappingAddressType object. + + This address object is only significant up to + pimGroupMappingGrpPrefixLength bits. The remainder of the + address bits are zero. This is especially important for + this index field, which is part of the index of this entry. + Any non-zero bits would signify an entirely different + entry." + ::= { pimGroupMappingEntry 3 } + +pimGroupMappingGrpPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength (4..128) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The multicast group prefix length that, when combined + with pimGroupMappingGrpAddress, gives the group prefix for + this mapping. The InetAddressType is given by the + pimGroupMappingAddressType object. If + pimGroupMappingAddressType is 'ipv4' or 'ipv4z', this + object must be in the range 4..32. If + pimGroupMappingAddressType is 'ipv6' or 'ipv6z', this object + must be in the range 8..128." + ::= { pimGroupMappingEntry 4 } + +pimGroupMappingRPAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of the RP to be used for groups within + this group prefix, or unknown(0) if no RP is to be used or + + + + if the RP address is unknown. This object must be + unknown(0) if pimGroupMappingPimMode is ssm(2), or if + pimGroupMappingOrigin is embedded(6)." + ::= { pimGroupMappingEntry 5 } + +pimGroupMappingRPAddress OBJECT-TYPE + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of the RP to be used for groups within this + group prefix. The InetAddressType is given by the + pimGroupMappingRPAddressType object." + ::= { pimGroupMappingEntry 6 } + +pimGroupMappingPimMode OBJECT-TYPE + SYNTAX PimMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PIM mode to be used for groups in this group prefix." + ::= { pimGroupMappingEntry 7 } + +pimGroupMappingPrecedence OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The precedence of this row, used in the algorithm that + determines which row applies to a given group address + (described above). Numerically higher values for this + object indicate lower precedences, with the value zero + denoting the highest precedence. + + The absolute values of this object have a significance only + on the local router and do not need to be coordinated with + other routers." + ::= { pimGroupMappingEntry 8 } + +-- +-- PIM Notifications +-- + +pimNeighborLoss NOTIFICATION-TYPE + OBJECTS { pimNeighborUpTime } + STATUS current + DESCRIPTION + "A pimNeighborLoss notification signifies the loss of an + + + + adjacency with a neighbor. This notification should be + generated when the neighbor timer expires, and the router + has no other neighbors on the same interface with the same + IP version and a lower IP address than itself. + + This notification is generated whenever the counter + pimNeighborLossCount is incremented, subject + to the rate limit specified by + pimNeighborLossNotificationPeriod." + REFERENCE "RFC 4601 section 4.3.2" + ::= { pimNotifications 1 } + +pimInvalidRegister NOTIFICATION-TYPE + OBJECTS { pimGroupMappingPimMode, + pimInvalidRegisterAddressType, + pimInvalidRegisterOrigin, + pimInvalidRegisterGroup, + pimInvalidRegisterRp + } + STATUS current + DESCRIPTION + "A pimInvalidRegister notification signifies that an invalid + PIM Register message was received by this device. + + This notification is generated whenever the counter + pimInvalidRegisterMsgsRcvd is incremented, subject to the + rate limit specified by + pimInvalidRegisterNotificationPeriod." + REFERENCE "RFC 4601 section 4.4.2" + ::= { pimNotifications 2 } + +pimInvalidJoinPrune NOTIFICATION-TYPE + OBJECTS { pimGroupMappingPimMode, + pimInvalidJoinPruneAddressType, + pimInvalidJoinPruneOrigin, + pimInvalidJoinPruneGroup, + pimInvalidJoinPruneRp, + pimNeighborUpTime + } + STATUS current + DESCRIPTION + "A pimInvalidJoinPrune notification signifies that an + invalid PIM Join/Prune message was received by this device. + + This notification is generated whenever the counter + pimInvalidJoinPruneMsgsRcvd is incremented, subject to the + rate limit specified by + pimInvalidJoinPruneNotificationPeriod." + + + + REFERENCE "RFC 4601 section 4.5.2" + ::= { pimNotifications 3 } + +pimRPMappingChange NOTIFICATION-TYPE + OBJECTS { pimGroupMappingPimMode, + pimGroupMappingPrecedence + } + STATUS current + DESCRIPTION + "A pimRPMappingChange notification signifies a change to the + active RP mapping on this device. + + This notification is generated whenever the counter + pimRPMappingChangeCount is incremented, subject to the + rate limit specified by + pimRPMappingChangeNotificationPeriod." + ::= { pimNotifications 4 } + +pimInterfaceElection NOTIFICATION-TYPE + OBJECTS { pimInterfaceAddressType, + pimInterfaceAddress } + STATUS current + DESCRIPTION + "A pimInterfaceElection notification signifies that a new DR + or DF has been elected on a network. + + This notification is generated whenever the counter + pimInterfaceElectionWinCount is incremented, subject to the + rate limit specified by + pimInterfaceElectionNotificationPeriod." + REFERENCE "RFC 4601 section 4.3.2 and RFC 5015 section 3.5.2" + ::= { pimNotifications 5 } + +-- +-- Conformance Information +-- + +pimMIBConformance OBJECT IDENTIFIER ::= { pimStdMIB 2 } +pimMIBCompliances OBJECT IDENTIFIER ::= { pimMIBConformance 1 } +pimMIBGroups OBJECT IDENTIFIER ::= { pimMIBConformance 2 } + +-- +-- Compliance Statements +-- + +pimMIBComplianceAsm MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + + + "The compliance statement for routers which are running + PIM-SM (Sparse Mode)." + MODULE -- this module + MANDATORY-GROUPS { pimTopologyGroup, + pimSsmGroup, + pimRPConfigGroup, + pimSmGroup } + + GROUP pimNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimTuningParametersGroup + DESCRIPTION + "This group is optional." + + GROUP pimRouterStatisticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimAnycastRpGroup + DESCRIPTION + "This group is optional." + + GROUP pimStaticRPPrecedenceGroup + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationObjects + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimDeviceStorageGroup + DESCRIPTION + "This group is optional." + + ::= { pimMIBCompliances 1 } + +pimMIBComplianceBidir MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "The compliance statement for routers which are running + Bidir-PIM." + MODULE -- this module + MANDATORY-GROUPS { pimTopologyGroup, + pimRPConfigGroup, + pimSmGroup, + pimBidirGroup } + + GROUP pimNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimTuningParametersGroup + DESCRIPTION + "This group is optional." + + GROUP pimRouterStatisticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimAnycastRpGroup + DESCRIPTION + "This group is optional." + + GROUP pimStaticRPPrecedenceGroup + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationObjects + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimDeviceStorageGroup + DESCRIPTION + "This group is optional." + + ::= { pimMIBCompliances 2 } + +pimMIBComplianceSsm MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "The compliance statement for routers which are running + PIM SSM (Source Specific Multicast)." + MODULE -- this module + MANDATORY-GROUPS { pimTopologyGroup, + pimSsmGroup } + + GROUP pimNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimTuningParametersGroup + DESCRIPTION + "This group is optional." + + GROUP pimRouterStatisticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationObjects + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimDeviceStorageGroup + DESCRIPTION + "This group is optional." + + ::= { pimMIBCompliances 3 } + +pimMIBComplianceDm MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for routers which are running + PIM-DM (Dense Mode)." + MODULE -- this module + MANDATORY-GROUPS { pimTopologyGroup, + pimSsmGroup, + pimRPConfigGroup, + pimSmGroup, + + + + pimDmGroup } + + GROUP pimNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimTuningParametersGroup + DESCRIPTION + "This group is optional." + + GROUP pimRouterStatisticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimAnycastRpGroup + DESCRIPTION + "This group is optional." + + GROUP pimStaticRPPrecedenceGroup + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationObjects + DESCRIPTION + "This group is optional." + + GROUP pimNetMgmtNotificationGroup + DESCRIPTION + "This group is optional." + + GROUP pimDiagnosticsGroup + DESCRIPTION + "This group is optional." + + GROUP pimDeviceStorageGroup + DESCRIPTION + "This group is optional." + + ::= { pimMIBCompliances 4 } + +-- +-- Units of Conformance +-- + +pimTopologyGroup OBJECT-GROUP + OBJECTS { pimInterfaceAddressType, + pimInterfaceAddress, + pimInterfaceGenerationIDValue, + + + + pimInterfaceDR, + pimInterfaceDRPriorityEnabled, + pimInterfaceHelloHoldtime, + pimInterfaceJoinPruneHoldtime, + pimInterfaceLanDelayEnabled, + pimInterfaceEffectPropagDelay, + pimInterfaceEffectOverrideIvl, + pimInterfaceSuppressionEnabled, + pimInterfaceBidirCapable, + pimNeighborGenerationIDPresent, + pimNeighborGenerationIDValue, + pimNeighborUpTime, + pimNeighborExpiryTime, + pimNeighborDRPriorityPresent, + pimNeighborDRPriority, + pimNeighborLanPruneDelayPresent, + pimNeighborTBit, + pimNeighborPropagationDelay, + pimNeighborOverrideInterval, + pimNeighborBidirCapable, + pimNbrSecAddress + } + STATUS current + DESCRIPTION + "A collection of read-only objects used to report local PIM + topology." + ::= { pimMIBGroups 1 } + +pimNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pimNeighborLoss } + STATUS current + DESCRIPTION + "A collection of notifications for signaling important PIM + events." + ::= { pimMIBGroups 2 } + +pimTuningParametersGroup OBJECT-GROUP + OBJECTS { pimKeepalivePeriod, + pimRegisterSuppressionTime, + pimInterfaceDRPriority, + pimInterfaceHelloInterval, + pimInterfaceTrigHelloInterval, + pimInterfaceJoinPruneInterval, + pimInterfacePropagationDelay, + pimInterfaceOverrideInterval, + pimInterfaceDomainBorder, + pimInterfaceStubInterface, + pimInterfaceStatus, + + + + pimInterfaceStorageType + } + STATUS current + DESCRIPTION + "A collection of writeable objects used to configure PIM + behavior and to tune performance." + ::= { pimMIBGroups 3 } + +pimRouterStatisticsGroup OBJECT-GROUP + OBJECTS { pimStarGEntries, + pimStarGIEntries, + pimSGEntries, + pimSGIEntries, + pimSGRptEntries, + pimSGRptIEntries + } + STATUS current + DESCRIPTION + "A collection of statistics global to the PIM router." + ::= { pimMIBGroups 4 } + +pimSsmGroup OBJECT-GROUP + OBJECTS { pimSGUpTime, + pimSGPimMode, + pimSGUpstreamJoinState, + pimSGUpstreamJoinTimer, + pimSGUpstreamNeighbor, + pimSGRPFIfIndex, + pimSGRPFNextHopType, + pimSGRPFNextHop, + pimSGRPFRouteProtocol, + pimSGRPFRouteAddress, + pimSGRPFRoutePrefixLength, + pimSGRPFRouteMetricPref, + pimSGRPFRouteMetric, + pimSGSPTBit, + pimSGKeepaliveTimer, + pimSGDRRegisterState, + pimSGDRRegisterStopTimer, + pimSGRPRegisterPMBRAddressType, + pimSGRPRegisterPMBRAddress, + pimSGIUpTime, + pimSGILocalMembership, + pimSGIJoinPruneState, + pimSGIPrunePendingTimer, + pimSGIJoinExpiryTimer, + pimSGIAssertState, + pimSGIAssertTimer, + + + + pimSGIAssertWinnerAddressType, + pimSGIAssertWinnerAddress, + pimSGIAssertWinnerMetricPref, + pimSGIAssertWinnerMetric + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM + routers running the PIM SSM (Source Specific Multicast) + protocol, in PIM mode SM (Sparse Mode)." + ::= { pimMIBGroups 5 } + +pimRPConfigGroup OBJECT-GROUP + OBJECTS { pimStaticRPRPAddress, + pimStaticRPPimMode, + pimStaticRPOverrideDynamic, + pimStaticRPRowStatus, + pimStaticRPStorageType, + pimGroupMappingPimMode, + pimGroupMappingPrecedence + } + STATUS current + DESCRIPTION + "A collection of objects to support configuration of RPs + (Rendezvous Points) and Group Mappings." + ::= { pimMIBGroups 6 } + +pimSmGroup OBJECT-GROUP + OBJECTS { pimStarGUpTime, + pimStarGPimMode, + pimStarGRPAddressType, + pimStarGRPAddress, + pimStarGPimModeOrigin, + pimStarGRPIsLocal, + pimStarGUpstreamJoinState, + pimStarGUpstreamJoinTimer, + pimStarGUpstreamNeighborType, + pimStarGUpstreamNeighbor, + pimStarGRPFIfIndex, + pimStarGRPFNextHopType, + pimStarGRPFNextHop, + pimStarGRPFRouteProtocol, + pimStarGRPFRouteAddress, + pimStarGRPFRoutePrefixLength, + pimStarGRPFRouteMetricPref, + pimStarGRPFRouteMetric, + pimStarGIUpTime, + pimStarGILocalMembership, + + + + pimStarGIJoinPruneState, + pimStarGIPrunePendingTimer, + pimStarGIJoinExpiryTimer, + pimStarGIAssertState, + pimStarGIAssertTimer, + pimStarGIAssertWinnerAddressType, + pimStarGIAssertWinnerAddress, + pimStarGIAssertWinnerMetricPref, + pimStarGIAssertWinnerMetric, + pimSGRptUpTime, + pimSGRptUpstreamPruneState, + pimSGRptUpstreamOverrideTimer, + pimSGRptIUpTime, + pimSGRptILocalMembership, + pimSGRptIJoinPruneState, + pimSGRptIPrunePendingTimer, + pimSGRptIPruneExpiryTimer + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM + routers running PIM-SM (Sparse Mode). The groups + pimSsmGroup and pimRPConfigGroup are also required." + ::= { pimMIBGroups 7 } + +pimBidirGroup OBJECT-GROUP + OBJECTS { pimInterfaceDFElectionRobustness, + pimBidirDFElectionWinnerAddressType, + pimBidirDFElectionWinnerAddress, + pimBidirDFElectionWinnerUpTime, + pimBidirDFElectionWinnerMetricPref, + pimBidirDFElectionWinnerMetric, + pimBidirDFElectionState, + pimBidirDFElectionStateTimer + } + STATUS current + DESCRIPTION + "A collection of objects to support management of PIM + routers running BIDIR mode. The groups pimSsmGroup, + pimSmGroup and pimRPConfigGroup are also required." + ::= { pimMIBGroups 8 } + +pimAnycastRpGroup OBJECT-GROUP + OBJECTS { pimAnycastRPSetLocalRouter, + pimAnycastRPSetRowStatus, + pimAnycastRPSetStorageType + } + STATUS current + + + + DESCRIPTION + "A collection of objects to support management of the PIM + Anycast-RP mechanism." + ::= { pimMIBGroups 9 } + +pimStaticRPPrecedenceGroup OBJECT-GROUP + OBJECTS { pimStaticRPPrecedence } + STATUS current + DESCRIPTION + "A collection of objects to allow fine control of + interactions between static RP configuration and + dynamically acquired group to RP mappings." + ::= { pimMIBGroups 10 } + +pimNetMgmtNotificationObjects OBJECT-GROUP + OBJECTS { pimInvalidRegisterNotificationPeriod, + pimInvalidRegisterMsgsRcvd, + pimInvalidRegisterAddressType, + pimInvalidRegisterOrigin, + pimInvalidRegisterGroup, + pimInvalidRegisterRp, + pimInvalidJoinPruneNotificationPeriod, + pimInvalidJoinPruneMsgsRcvd, + pimInvalidJoinPruneAddressType, + pimInvalidJoinPruneOrigin, + pimInvalidJoinPruneGroup, + pimInvalidJoinPruneRp, + pimRPMappingNotificationPeriod, + pimRPMappingChangeCount, + pimInterfaceElectionNotificationPeriod, + pimInterfaceElectionWinCount + } + STATUS current + DESCRIPTION + "A collection of objects to support notification of PIM + network management events." + ::= { pimMIBGroups 11 } + +pimNetMgmtNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pimInvalidRegister, + pimInvalidJoinPrune, + pimRPMappingChange, + pimInterfaceElection + } + STATUS current + DESCRIPTION + "A collection of notifications for signaling PIM network + management events." + + + + ::= { pimMIBGroups 12 } + +pimDiagnosticsGroup OBJECT-GROUP + OBJECTS { pimInAsserts, + pimOutAsserts, + pimLastAssertInterface, + pimLastAssertGroupAddressType, + pimLastAssertGroupAddress, + pimLastAssertSourceAddressType, + pimLastAssertSourceAddress, + pimNeighborLossNotificationPeriod, + pimNeighborLossCount + } + STATUS current + DESCRIPTION + "Objects providing additional diagnostics related to a PIM + router." + ::= { pimMIBGroups 13 } + +pimDmGroup OBJECT-GROUP + OBJECTS { + pimRefreshInterval, + pimInterfacePruneLimitInterval, + pimInterfaceGraftRetryInterval, + pimInterfaceSRPriorityEnabled, + pimNeighborSRCapable, + pimSGUpstreamPruneState, + pimSGUpstreamPruneLimitTimer, + pimSGOriginatorState, + pimSGSourceActiveTimer, + pimSGStateRefreshTimer + } + STATUS current + DESCRIPTION + "A collection of objects required for management of PIM + Dense Mode (PIM-DM) function. The groups pimSsmGroup and + pimSmGroup are also required." + REFERENCE "RFC 3973" + ::= { pimMIBGroups 14 } + + + + + + + + + + + + +pimDeviceStorageGroup OBJECT-GROUP + OBJECTS { pimDeviceConfigStorageType + } + STATUS current + DESCRIPTION + "An object that specifies the volatility of global PIM + configuration settings on this device." + ::= { pimMIBGroups 15 } + +END diff --git a/mibs/ietf/PINT-MIB b/mibs/ietf/PINT-MIB new file mode 100644 index 0000000..408a298 --- /dev/null +++ b/mibs/ietf/PINT-MIB @@ -0,0 +1,593 @@ +PINT-MIB DEFINITIONS ::= BEGIN + + IMPORTS + OBJECT-TYPE, Counter32, MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + sysApplInstallPkgEntry + FROM SYSAPPL-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; -- RFC 2571 [2] + + pintMib MODULE-IDENTITY + LAST-UPDATED "200102010000Z" -- 1 Feb 2001 + +ORGANIZATION "IETF PINT Working Group" +CONTACT-INFO " + Chairs: Steve Bellovin + E-mail: smb@research.att.com + + Igor Faynberg + E-mail: faynberg@lucent.com + + Authors: Murali Krishnaswamy + Postal: 20 Corporate Place South + Piscataway, NJ 08854 + Tel: +1 (732)465-1000 + + + E-mail: murali@photuris.com + + Dan Romascanu + Postal: Atidim Technology Park, Bldg 3 + Tel Aviv, Israel + Tel: +972 3 6458414 + E-mail: dromasca@avaya.com + + General Discussion:pint@lists.bell-labs.com + To Subscribe: pint-request@lists.bell-labs.com + In Body: subscribe your-email-addres + Archive: http://www.bell-labs.com/mailing-lists/pint/ + " + +DESCRIPTION + "This MIB defines the objects necessary to monitor + PINT Services" + +-- Revision history + +REVISION "200102010000Z" -- 1 Feb 2001 +DESCRIPTION + "Initial version, published as RFC 3055." +::= { mib-2 93 } + +PintServiceType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the type of a PINT service." + SYNTAX INTEGER { + r2C(1), -- Request-to-Talk + r2F(2), -- Request-to-Fax + r2FB(3), -- Request-to-Fax-Back + r2HC(4) -- Request-to-Hear-Content + } + +PintPerfStatPeriod ::= TEXTUAL-CONVENTION +STATUS current +DESCRIPTION + "This TC describes the statistics period of time. + + Note that the values of the counters indexed with a value + SinceReboot(4) can be potentially affected by a counter rollover. + It is the responsibility of the application using this object to + take into account that the counter has been zeroed each time it + reached a value of (2**32-1)." +SYNTAX INTEGER { +last30sec(1), -- Performance Statics for the last 30 sec + + +last15min(2), -- 15 min +last24Hr(3), -- 24 Hour +sinceReboot(4) -- Since the time the pint server was +-- last rebooted +} + +pintServerConfig OBJECT IDENTIFIER ::= { pintMib 1 } +pintServerMonitor OBJECT IDENTIFIER ::= { pintMib 2 } +pintMibConformance OBJECT IDENTIFIER ::= { pintMib 3 } + +-- pintServerConfig - PINT configuration MIB variables + +pintReleaseNumber OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of version of the PINT protocol supported + by this agent." + ::= { pintServerConfig 1 } + +pintSysContact OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Contact information related to the administration of the PINT + services." + ::= { pintServerConfig 2 } + +pintApplInstallPkgTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintApplInstallPkgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table describing the PINT applications that are installed." + ::= { pintServerConfig 3 } + +pintApplInstallPkgEntry OBJECT-TYPE + SYNTAX PintApplInstallPkgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries per PINT Application." + AUGMENTS { sysApplInstallPkgEntry } + ::= { pintApplInstallPkgTable 1 } + +PintApplInstallPkgEntry ::= SEQUENCE { + + +pintApplInstallPkgDescription SnmpAdminString +} + +pintApplInstallPkgDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Textual description of the installed PINT application." + ::= { pintApplInstallPkgEntry 1 } + +pintRegisteredGatewayTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintRegisteredGatewayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table describing the registered gateway applications." + ::= { pintServerConfig 4 } + +pintRegisteredGatewayEntry OBJECT-TYPE + SYNTAX PintRegisteredGatewayEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries per Registered Gateway Application." +AUGMENTS { sysApplInstallPkgEntry } + ::= { pintRegisteredGatewayTable 1 } + +PintRegisteredGatewayEntry ::= SEQUENCE { +pintRegisteredGatewayName SnmpAdminString, +pintRegisteredGatewayDescription SnmpAdminString +} + +pintRegisteredGatewayName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the registered gateway." + ::= { pintRegisteredGatewayEntry 1 } + +pintRegisteredGatewayDescription OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Textual description of the registered gateway." + ::= { pintRegisteredGatewayEntry 2 } + + +-- pintServerMonitor - PINT monitoring statistics MIB variables + +pintServerGlobalPerf OBJECT IDENTIFIER ::= {pintServerMonitor 1 } +pintServerClientPerf OBJECT IDENTIFIER ::= {pintServerMonitor 2 } +pintServerUserIdPerf OBJECT IDENTIFIER ::= {pintServerMonitor 3 } +pintServerGatewayPerf OBJECT IDENTIFIER ::= {pintServerMonitor 4 } + +pintServerGlobalStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintServerGlobalStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table displaying the monitored global server statistics." + ::= { pintServerGlobalPerf 1 } + +pintServerGlobalStatsEntry OBJECT-TYPE + SYNTAX PintServerGlobalStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in the global statistics table. + One entry is defined for each monitored service type and + performance statistics collection period." + INDEX {pintServerServiceTypeIndex, pintServerPerfStatPeriodIndex} + ::= { pintServerGlobalStatsTable 1 } + +PintServerGlobalStatsEntry ::= SEQUENCE { +pintServerServiceTypeIndex PintServiceType, +pintServerPerfStatPeriodIndex PintPerfStatPeriod, +pintServerGlobalCallsReceived Counter32, +pintServerGlobalSuccessfulCalls Counter32, +pintServerGlobalDisconnectedCalls Counter32, +pintServerGlobalDisCUAutFCalls Counter32, +pintServerGlobalDisServProbCalls Counter32, +pintServerGlobalDisGatProbCalls Counter32 +} + +pintServerServiceTypeIndex OBJECT-TYPE + SYNTAX PintServiceType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the monitored service." + ::= { pintServerGlobalStatsEntry 1 } + +pintServerPerfStatPeriodIndex OBJECT-TYPE + SYNTAX PintPerfStatPeriod + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "Time period for which the performance statistics are requested + from the pint server." + ::= { pintServerGlobalStatsEntry 2 } + +pintServerGlobalCallsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of received global calls." + ::= { pintServerGlobalStatsEntry 3 } + +pintServerGlobalSuccessfulCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of global successful calls." + ::= { pintServerGlobalStatsEntry 4 } + +pintServerGlobalDisconnectedCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of global disconnected (failed) calls." + ::= { pintServerGlobalStatsEntry 5 } + +pintServerGlobalDisCUAutFCalls +OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION + "Number of global calls that were disconnected because of client + or user authorization failure." +::= { pintServerGlobalStatsEntry 6 } + +pintServerGlobalDisServProbCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of global calls that were disconnected because of + server problems." + ::= { pintServerGlobalStatsEntry 7 } + + +pintServerGlobalDisGatProbCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of global calls that were disconnected because of + gateway problems." + ::= { pintServerGlobalStatsEntry 8 } + +pintServerClientStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintServerClientStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table displaying the monitored server client statistics." + ::= { pintServerClientPerf 1 } + +pintServerClientStatsEntry OBJECT-TYPE + SYNTAX PintServerClientStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in the client server statistics table. + One entry is defined for each client identified by name, + monitored service type and performance statistics collection + period." + INDEX {pintServerClientAddress, pintServerServiceTypeIndex, + pintServerPerfStatPeriodIndex} + ::= { pintServerClientStatsTable 1 } + +PintServerClientStatsEntry ::= SEQUENCE { +pintServerClientAddress SnmpAdminString, +pintServerClientCallsReceived Counter32, +pintServerClientSuccessfulCalls Counter32, +pintServerClientDisconnectedCalls Counter32, +pintServerClientDisCAutFCalls Counter32, +pintServerClientDisEFProbCalls Counter32 +} + +pintServerClientAddress OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the monitored client + identified by its address represented as as a string." + ::= { pintServerClientStatsEntry 1 } + + + +pintServerClientCallsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received from the specific client." + ::= { pintServerClientStatsEntry 2 } + +pintServerClientSuccessfulCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from the client successfully completed." + ::= { pintServerClientStatsEntry 3 } + +pintServerClientDisconnectedCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received from the client, and that were + disconnected (failed)." + ::= { pintServerClientStatsEntry 4 } + +pintServerClientDisCAutFCalls +OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION + "Number of calls from the client that were disconnected because of + client authorization failure." +::= { pintServerClientStatsEntry 5 } + +pintServerClientDisEFProbCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from the client that were disconnected because + of egress facility problems." + ::= { pintServerClientStatsEntry 6 } + +pintServerUserIdStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintServerUserIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "Table displaying the monitored Pint service user statistics." + ::= { pintServerUserIdPerf 1 } + +pintServerUserIdStatsEntry OBJECT-TYPE + SYNTAX PintServerUserIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in the user statistics table. + One entry is defined for each user identified by name, + each monitored service type and performance statistics collection + period. + + It is assumed that the capabilities of the pint server + are enough to accommodate the number of entries in this table. + It is a local server implementation issue if an aging mechanism + Is implemented in order to avoid scalability problems." + INDEX {pintServerUserIdName, pintServerServiceTypeIndex, + pintServerPerfStatPeriodIndex} + ::= { pintServerUserIdStatsTable 1 } + +PintServerUserIdStatsEntry ::= SEQUENCE { +pintServerUserIdName SnmpAdminString, +pintServerUserIdCallsReceived Counter32, +pintServerUserIdSuccessfulCalls Counter32, +pintServerUserIdDisconnectedCalls Counter32, +pintServerUserIdDiscUIdAFailCalls Counter32, +pintServerUserIdEFProbCalls Counter32 +} + +pintServerUserIdName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the monitored user + identified by its name." + ::= { pintServerUserIdStatsEntry 1 } + +pintServerUserIdCallsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received from the specific user." + ::= { pintServerUserIdStatsEntry 2 } + + + +pintServerUserIdSuccessfulCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from the user successfully completed." + ::= { pintServerUserIdStatsEntry 3 } + +pintServerUserIdDisconnectedCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received from the user that were + disconnected (failed)." + ::= { pintServerUserIdStatsEntry 4 } + +pintServerUserIdDiscUIdAFailCalls +OBJECT-TYPE +SYNTAX Counter32 +MAX-ACCESS read-only +STATUS current +DESCRIPTION + "Number of calls from the user that were disconnected because of + user authorization failure." +::= { pintServerUserIdStatsEntry 5 } + +pintServerUserIdEFProbCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls from the user that were disconnected because of + egress facility problems." + ::= { pintServerUserIdStatsEntry 6 } + +pintServerGatewayStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PintServerGatewayStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table displaying the monitored gateway statistics." + ::= { pintServerGatewayPerf 1 } + +pintServerGatewayStatsEntry OBJECT-TYPE + SYNTAX PintServerGatewayStatsEntry + MAX-ACCESS not-accessible + STATUS current + + + DESCRIPTION + "Entries in the gateway table. + One entry is defined for each gateway identified by name, + each monitored service type and performance statistics collection + period." + + INDEX { pintRegisteredGatewayName, pintServerServiceTypeIndex, + pintServerPerfStatPeriodIndex } + ::= { pintServerGatewayStatsTable 1 } + +PintServerGatewayStatsEntry ::= SEQUENCE { +pintServerGatewayCallsReceived Counter32, +pintServerGatewaySuccessfulCalls Counter32, +pintServerGatewayDisconnectedCalls Counter32 +} + +pintServerGatewayCallsReceived OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls received at the specified gateway." + ::= { pintServerGatewayStatsEntry 1 } + +pintServerGatewaySuccessfulCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls successfully completed at the specified gateway." + ::= { pintServerGatewayStatsEntry 2 } + +pintServerGatewayDisconnectedCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of calls that were disconnected (failed) at the specified + gateway." + ::= { pintServerGatewayStatsEntry 3 } + +-- +-- Notifications Section +-- (none defined) +-- + +-- +-- Conformance Section + + +-- + +pintMibCompliances OBJECT IDENTIFIER ::= { pintMibConformance 1 } +pintMibGroups OBJECT IDENTIFIER ::= { pintMibConformance 2 } + +pintMibCompliance MODULE-COMPLIANCE +STATUS current +DESCRIPTION + "Describes the requirements for conformance to the + PINT MIB." +MODULE -- this module +MANDATORY-GROUPS { pintMibConfigGroup, pintMibMonitorGroup } +::= { pintMibCompliances 1 } + +pintMibConfigGroup OBJECT-GROUP +OBJECTS { +pintReleaseNumber, +pintSysContact, +pintApplInstallPkgDescription, +pintRegisteredGatewayName, +pintRegisteredGatewayDescription +} +STATUS current +DESCRIPTION + "A collection of objects providing configuration + information + for a PINT Server." +::= { pintMibGroups 1 } + +pintMibMonitorGroup OBJECT-GROUP +OBJECTS { +pintServerGlobalCallsReceived, +pintServerGlobalSuccessfulCalls, +pintServerGlobalDisconnectedCalls, +pintServerGlobalDisCUAutFCalls, +pintServerGlobalDisServProbCalls, +pintServerGlobalDisGatProbCalls, +pintServerClientCallsReceived, +pintServerClientSuccessfulCalls, +pintServerClientDisconnectedCalls, +pintServerClientDisCAutFCalls, +pintServerClientDisEFProbCalls, +--pintServerUserIdName, +pintServerUserIdCallsReceived, +pintServerUserIdSuccessfulCalls, +pintServerUserIdDisconnectedCalls, +pintServerUserIdDiscUIdAFailCalls, +pintServerUserIdEFProbCalls, + + +pintServerGatewayCallsReceived, +pintServerGatewaySuccessfulCalls, +pintServerGatewayDisconnectedCalls +} +STATUS current +DESCRIPTION + "A collection of objects providing monitoring + information + for a PINT Server." +::= { pintMibGroups 2 } + +END diff --git a/mibs/ietf/PKTC-IETF-MTA-MIB b/mibs/ietf/PKTC-IETF-MTA-MIB new file mode 100644 index 0000000..50e90c4 --- /dev/null +++ b/mibs/ietf/PKTC-IETF-MTA-MIB @@ -0,0 +1,2199 @@ +PKTC-IETF-MTA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + OBJECT-IDENTITY, + Unsigned32, + Counter32, + NOTIFICATION-TYPE, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION, + RowStatus, + TruthValue + FROM SNMPv2-TC -- [RFC2579] + OBJECT-GROUP, + MODULE-COMPLIANCE, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB -- [RFC4001] + sysDescr + FROM SNMPv2-MIB -- [RFC3418] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + docsDevSoftwareGroupV2 + FROM DOCS-CABLE-DEVICE-MIB -- [RFC4639] + DocsX509ASN1DEREncodedCertificate, + docsBpi2CodeDownloadGroup + FROM DOCS-IETF-BPI2-MIB -- [RFC4131] + LongUtf8String + FROM SYSAPPL-MIB -- [RFC2287] + ifPhysAddress + FROM IF-MIB; -- [RFC2863] + + pktcIetfMtaMib MODULE-IDENTITY + LAST-UPDATED "200609180000Z" -- September 18, 2006 + ORGANIZATION "IETF IP over Cable Data Network Working Group" + CONTACT-INFO + "Eugene Nechamkin + Broadcom Corporation, + 200-13711 International Place, + + + + Richmond, BC, V6V 2Z8 + CANADA + Phone: +1 604 233 8500 + Email: enechamkin@broadcom.com + + Jean-Francois Mule + Cable Television Laboratories, Inc. + 858 Coal Creek Circle + Louisville, CO 80027-9750 + U.S.A. + Phone: +1 303 661 9100 + Email: jf.mule@cablelabs.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-Chair: Jean-Francois Mule, jf.mule@cablelabs.com + Co-Chair: Richard Woundy, Richard_Woundy@cable.comcast.com" + + DESCRIPTION + "This MIB module defines the basic management object + for the Multimedia Terminal Adapter devices compliant + with PacketCable and IPCablecom requirements. + + Copyright (C) The IETF Trust (2006). This version of + this MIB module is part of RFC 4682; see the RFC itself for + full legal notices." + + REVISION "200609180000Z" -- September 18, 2006 + + DESCRIPTION + "Initial version, published as RFC 4682." + +::= { mib-2 140 } + + -- Textual Conventions + +PktcMtaDevProvEncryptAlg ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " This textual convention defines various types of the + encryption algorithms used for the encryption of the MTA + configuration file. The description of the encryption + algorithm for each enumerated value is as follows: + + 'none(0)' no encryption is used, + 'des64CbcMode(1)' DES 64-bit key in CBC mode, + + + + 't3Des192CbcMode(2)' 3DES 192-bit key in CBC mode, + 'aes128CbcMode(3)' AES 128-bit key in CBC mode, + 'aes256CbcMode(4)' AES 256-bit key in CBC mode." + SYNTAX INTEGER { + none (0), + des64CbcMode (1), + t3Des192CbcMode (2), + aes128CbcMode (3), + aes256CbcMode (4) + } + +--================================================================= +-- The MTA MIB module only supports a single Provisioning Server. +--================================================================= + +pktcMtaNotification OBJECT IDENTIFIER ::= { pktcIetfMtaMib 0 } +pktcMtaMibObjects OBJECT IDENTIFIER ::= { pktcIetfMtaMib 1 } +pktcMtaDevBase OBJECT IDENTIFIER ::= { pktcMtaMibObjects 1 } +pktcMtaDevServer OBJECT IDENTIFIER ::= { pktcMtaMibObjects 2 } +pktcMtaDevSecurity OBJECT IDENTIFIER ::= { pktcMtaMibObjects 3 } +pktcMtaDevErrors OBJECT IDENTIFIER ::= { pktcMtaMibObjects 4 } +pktcMtaConformance OBJECT IDENTIFIER ::= { pktcIetfMtaMib 2 } + +-- +-- The following pktcMtaDevBase group describes the base MTA objects +-- + +pktcMtaDevResetNow OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object controls the MTA software reset. + Reading this object always returns 'false'. Setting this + object to 'true' causes the device to reset immediately + and the following actions to occur: + 1. All connections (if present) are flushed locally. + 2. All current actions such as ringing immediately + terminate. + 3. Requests for signaling notifications, such as + notification based on digit map recognition, are + flushed. + 4. All endpoints are disabled. + 5. The provisioning flow is started at step MTA-1. + If a value is written into an instance of + pktcMtaDevResetNow, the agent MUST NOT retain the supplied + value across MTA re-initializations or reboots." + REFERENCE + + + + " PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevBase 1 } + +pktcMtaDevSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object specifies the manufacturer's serial + number of this MTA. The value of this object MUST be + identical to the value specified in DHCP option 43, + sub-option 4. The list of sub-options for DHCP option + 43 are defined in the PacketCable MTA Device + Provisioning Specification." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevBase 2 } + +pktcMtaDevSwCurrentVers OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object identifies the software version currently + operating in the MTA. + The MTA MUST return a string descriptive of the current + software load. This object should use the syntax + defined by the individual vendor to identify the software + version. The data presented in this object MUST be + identical to the software version information contained + in the 'sysDescr' MIB object of the MTA. The value of + this object MUST be identical to the value specified in + DHCP option 43, sub-option 6. The list of sub-options for + DHCP option 43 are defined in the PacketCable MTA Device + Provisioning Specification." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + +::= { pktcMtaDevBase 3 } + +pktcMtaDevFQDN OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Fully Qualified Domain Name for + this MTA. The MTA FQDN is used to uniquely identify the + device to the PacketCable back office elements." + + + + ::= { pktcMtaDevBase 4 } + +pktcMtaDevEndPntCount OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the number of physical endpoints for + this MTA." + ::= { pktcMtaDevBase 5 } + +pktcMtaDevEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the MTA Admin Status of this device. + If this object is set to 'true', the MTA is + administratively enabled, and the MTA MUST be able to + interact with the PacketCable entities, such as CMS, + Provisioning Server, KDC, and other MTAs and MGs on all + PacketCable interfaces. + If this object is set to 'false', the MTA is + administratively disabled, and the MTA MUST perform the + following actions for all endpoints: + - Shut down all media sessions, if present. + - Shut down Network Control Signaling (NCS) + signaling by following the Restart in + Progress procedures in the PacketCable NCS + specification. + The MTA must execute all actions required to + enable or disable the telephony services for all + endpoints immediately upon receipt of an SNMP SET + operation. + + Additionally, the MTA MUST maintain the SNMP Interface + for management and also the SNMP Key management interface. + Also, the MTA MUST NOT continue Kerberized key management + with CMSes until this object is set to 'true'. + Note: MTAs MUST renew the CMS Kerberos tickets according + to the PacketCable Security or IPCablecom Specification. + If a value is written into an instance of + pktcMtaDevEnabled, the agent MUST NOT retain the supplied + value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + PacketCable Security Specification; + PacketCable Network-Based Call Signaling Protocol + + + + Specification." + ::= { pktcMtaDevBase 6 } + +pktcMtaDevTypeIdentifier OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object provides the MTA device type identifier. The + value of this object must be a copy of the DHCP option 60 + value exchanged between the MTA and the DHCP server. The + DHCP option 60 value contains an ASCII-encoded string + identifying capabilities of the MTA as defined in the + PacketCable MTA Device Provisioning Specification." + REFERENCE + " RFC 2132, DHCP Options and BOOTP Vendor Extensions; + PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevBase 7 } + +pktcMtaDevProvisioningState OBJECT-TYPE + SYNTAX INTEGER { + pass (1), + inProgress (2), + failConfigFileError (3), + passWithWarnings (4), + passWithIncompleteParsing (5), + failureInternalError (6), + failureOtherReason (7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object indicates the completion state of the MTA + device provisioning process. + + pass: + If the configuration file could be parsed successfully + and the MTA is able to reflect the same in its + MIB, the MTA MUST return the value 'pass'. + + inProgress: + If the MTA is in the process of being provisioned, + the MTA MUST return the value 'inProgress'. + + failConfigFileError: + If the configuration file was in error due to incorrect + values in the mandatory parameters, the MTA MUST reject + the configuration file, and the MTA MUST return the value + + + + 'failConfigFileError'. + + passWithWarnings: + If the configuration file had proper values for all the + mandatory parameters but has errors in any of the optional + parameters (this includes any vendor-specific Object + Identifiers (OIDs) that are incorrect or not known + to the MTA), the MTA MUST return the value + 'passWithWarnings'. + + passWithIncompleteParsing: + If the configuration file is valid but the MTA cannot + reflect the same in its configuration (for example, too + many entries caused memory exhaustion), it must accept + the CMS configuration entries related, and the MTA MUST + return the value 'passWithIncompleteParsing'. + + failureInternalError: + If the configuration file cannot be parsed due to an + Internal error, the MTA MUST return the value + 'failureInternalError'. + + failureOtherReason: + If the MTA cannot accept the configuration file for any + other reason than the ones stated above, the MTA MUST + return the value 'failureOtherReason'. + + When a final SNMP INFORM is sent as part of Step 25 of the + MTA Provisioning process, this parameter is also included + in the final INFORM message." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevBase 8 } + +pktcMtaDevHttpAccess OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object indicates whether the HTTP protocol is + supported for the MTA configuration file transfer." + ::= { pktcMtaDevBase 9 } + +pktcMtaDevProvisioningTimer OBJECT-TYPE + SYNTAX Unsigned32 (0..30) + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + " This object defines the time interval for the provisioning + flow to complete. The MTA MUST finish all provisioning + operations starting from the moment when an MTA receives + its DHCP ACK and ending at the moment when the MTA + downloads its configuration file (e.g., MTA5 to MTA23) + within the period of time set by this object. + Failure to comply with this condition constitutes + a provisioning flow failure. If the object is set to 0, + the MTA MUST ignore the provisioning timer condition. + If a value is written into an instance of + pktcMtaDevProvisioningTimer, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + DEFVAL {10} + ::= {pktcMtaDevBase 10} + +pktcMtaDevProvisioningCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of times the + provisioning cycle has looped through step MTA-1." + ::= {pktcMtaDevBase 11} + + pktcMtaDevErrorOidsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcMtaDevErrorOidsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table contains the list of configuration errors or + warnings the MTA encountered when parsing the + configuration file it received from the Provisioning + Server. + For each error, an entry is created in this table, + containing the configuration parameters the MTA rejected + and the associated reason (e.g., wrong or unknown OID, + inappropriate object values). If the MTA + did not report a provisioning state of 'pass(1)' in + the pktcMtaDevProvisioningState object, this table MUST be + populated for each error or warning instance. Even if + different parameters share the same error type (e.g., all + realm name configuration parameters are invalid), all + observed errors or warnings must be reported as + different instances. Errors are placed into the table in + no particular order. The table MUST be cleared each time + + + + the MTA reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + ::= {pktcMtaDevBase 12 } + +pktcMtaDevErrorOidsEntry OBJECT-TYPE + SYNTAX PktcMtaDevErrorOidsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This entry contains the necessary information the MTA MUST + attempt to provide in case of configuration file errors or + warnings." + INDEX { pktcMtaDevErrorOidIndex } + ::= {pktcMtaDevErrorOidsTable 1} + +PktcMtaDevErrorOidsEntry ::= SEQUENCE { + pktcMtaDevErrorOidIndex Unsigned32, + pktcMtaDevErrorOid SnmpAdminString, + pktcMtaDevErrorValue SnmpAdminString, + pktcMtaDevErrorReason SnmpAdminString + } + +pktcMtaDevErrorOidIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..1024) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object is the index of the MTA configuration error + table. It is an integer value that starts at value '1' + and is incremented for each encountered configuration + file error or warning. + + The maximum number of errors or warnings that can be + recorded in the pktcMtaDevErrorOidsTable is set to 1024 as + a configuration file is usually validated by operators + before deployment. Given the possible number of + configuration parameter assignments in the MTA + configuration file, 1024 is perceived as a sufficient + limit even with future extensions. + + If the number of the errors in the configuration file + exceeds 1024, all errors beyond the 1024th one MUST + be ignored and not be reflected in the + pktcMtaDevErrorOidsTable." + + ::= {pktcMtaDevErrorOidsEntry 1} + + + + +pktcMtaDevErrorOid OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains a human readable representation + (character string) of the OID corresponding to the + configuration file parameter that caused the particular + error. + For example, if the value of the pktcMtaDevEnabled object + in the configuration file caused an error, then this + object instance will contain the human-readable string of + '1.3.6.1.2.1.140.1.1.6.0'. + If the MTA generated an error because it was not able + to recognize a particular OID, then this object + instance would contain an empty value (zero-length + string). + For example, if the value of an OID in the configuration + file was interpreted by the MTA as being 1.2.3.4.5, and if + the MTA was not able to recognize this OID as a valid one, + this object instance will contain a zero-length string. + + If the number of errors in the configuration file exceeds + 1024, then for all subsequent errors, the + pktcMtaDevErrorOid of the table's 1024th entry MUST + contain a human-readable representation of the + pktcMtaDevErrorsTooManyErrors object; i.e., the string + '1.3.6.1.2.1.140.1.1.4.1.0'. + Note that the syntax of this object is SnmpAdminString + instead of OBJECT IDENTIFIER because the object value may + not be a valid OID due to human or configuration tool + encoding errors." + + ::= {pktcMtaDevErrorOidsEntry 2} + +pktcMtaDevErrorValue OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the value of the OID corresponding to + the configuration file parameter that caused the error. + If the MTA cannot recognize the OID of the + configuration parameter causing the error, then this + object instance contains the OID itself as interpreted + by the MTA in human-readable representation. + If the MTA can recognize the OID but generate an error due + to a wrong value of the parameter, then the object + + + + instance contains the erroneous value of the parameter as + read from the configuration file. + In both cases, the value of this object must be + represented in human-readable form as a character string. + For example, if the value of the pktcMtaDevEnabled object + in the configuration file was 3 (invalid value), then the + pktcMtaDevErrorValue object instance will contain the + human-readable (string) representation of value '3'. + Similarly, if the OID in the configuration file has been + interpreted by the MTA as being 1.2.3.4.5 and the MTA + cannot recognize this OID as a valid one, then this + pktcMtaDevErrorValue object instance will contain human + readable (string) representation of value '1.2.3.4.5'. + + If the number of errors in the configuration file exceeds + 1024, then for all subsequent errors, the + pktcMtaDevErrorValue of the table's 1024th entry MUST + contain a human-readable representation of the + pktcMtaDevErrorsTooManyErrors object; i.e., the string + '1.3.6.1.2.1.140.1.1.4.1.0'." + + ::= {pktcMtaDevErrorOidsEntry 3} + +pktcMtaDevErrorReason OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object indicates the reason for the error or warning, + as per the MTA's interpretation, in human-readable form. + For example: + 'VALUE NOT IN RANGE', 'VALUE DOES NOT MATCH TYPE', + 'UNSUPPORTED VALUE', 'LAST 4 BITS MUST BE SET TO ZERO', + 'OUT OF MEMORY - CANNOT STORE'. + This object may also contain vendor specific errors for + private vendor OIDs and any proprietary error codes or + messages that can help diagnose configuration errors. + + If the number of errors in the configuration file exceeds + 1024, then for all subsequent errors, the + pktcMtaDevErrorReason of the table's 1024th entry MUST + contain a human-readable string indicating the reason + for an error; for example, + 'Too many errors in the configuration file'." + ::= {pktcMtaDevErrorOidsEntry 4} + +-- +-- The following group describes server access and parameters used + + + +-- for the initial MTA provisioning and bootstrapping phases. +-- + +pktcMtaDevDhcpServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Internet address type for the + PacketCable DHCP servers specified in MTA MIB." + DEFVAL { ipv4 } + ::= { pktcMtaDevServer 1} + +pktcMtaDevServerDhcp1 OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Internet Address of the primary + DHCP server the MTA uses during provisioning. + The type of this address is determined by the value of + the pktcMtaDevDhcpServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the primary DHCP + server. It is provided by the CM to the MTA via the DHCP + option code 122, sub-option 1, as defined in RFC 3495. + + The behavior of this object when the value of + pktcMtaDevDhcpServerAddressType is other than 'ipv4(1)' + is not presently specified, but it may be specified + in future versions of this MIB module. + If this object is of value + 0.0.0.0, the MTA MUST stop all provisioning + attempts, as well as all other activities. + If this object is of value 255.255.255.255, it means + that there was no preference given for the primary + DHCP server, and, the MTA must follow the logic of + RFC2131, and the value of DHCP option 122, + sub-option 2, must be ignored." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 2131, Dynamic Host Configuration Protocol; + RFC 3495, DHCP Option for CableLabs Client Configuration." + ::= { pktcMtaDevServer 2 } + +pktcMtaDevServerDhcp2 OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + " This object contains the Internet Address of the secondary + DHCP server the MTA uses during provisioning. + The type of this address is determined by the value of + the pktcMtaDevDhcpServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the secondary DHCP + server. It is provided by the CM to the MTA via the DHCP + option code 122, sub-option 2, as defined in RFC 3495. + + The behavior of this object when the value of + pktcMtaDevDhcpServerAddressType is other than 'ipv4(1)' + is not presently specified, but it may be specified + in future versions of this MIB module. + If there was no secondary DHCP server provided in DHCP + Option 122, sub-option 2, this object must return the value + 0.0.0.0." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 3495, DHCP Option for CableLabs Client Configuration." + ::= { pktcMtaDevServer 3 } + +pktcMtaDevDnsServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Internet address type for the + PacketCable DNS servers specified in MTA MIB." + DEFVAL { ipv4 } + ::= { pktcMtaDevServer 4} + +pktcMtaDevServerDns1 OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the IP Address of the primary + DNS server to be used by the MTA. The type of this address + is determined by the value of the + pktcMtaDevDnsServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the primary DNS server. + As defined in RFC 2132, PacketCable-compliant MTAs receive + the IP addresses of the DNS Servers in DHCP option 6. + The behavior of this object when the value of + pktcMtaDevDnsServerAddressType is other than 'ipv4(1)' + + + + is not presently specified, but it may be specified + in future versions of this MIB module. + If a value is written into an instance of + pktcMtaDevServerDns1, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 2132, DHCP Options and BOOTP Vendor Extensions." + ::= { pktcMtaDevServer 5 } + +pktcMtaDevServerDns2 OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the IP Address of the secondary + DNS server to be used by the MTA. The type of this address + is determined by the value of the + pktcMtaDevDnsServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the secondary DNS + server. As defined in RFC 2132, PacketCable-compliant MTAs + receive the IP addresses of the DNS Servers in DHCP + option 6. + The behavior of this object when the value of + pktcMtaDevDnsServerAddressType is other than 'ipv4(1)' + is not presently specified, but it may be specified + in future versions of this MIB module. + If a value is written into an instance of + pktcMtaDevServerDns2, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 2132, DHCP Options and BOOTP Vendor Extensions." + ::= { pktcMtaDevServer 6 } + +pktcMtaDevTimeServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the Internet address type for the + PacketCable Time servers specified in MTA MIB." + DEFVAL { ipv4 } + ::= { pktcMtaDevServer 7} + +pktcMtaDevTimeServer OBJECT-TYPE + SYNTAX InetAddress + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the Internet Address of the Time + Server used by an S-MTA for Time Synchronization. The type + of this address is determined by the value of the + pktcMtaDevTimeServerAddressType object. + When the latter has the value 'ipv4(1)', this object + contains the IP address of the Time Server used for Time + Synchronization. + In the case of an S-MTA, this object must be + populated with a value other than 0.0.0.0 as obtained + from DHCP option 4. The protocol by which the time of day + MUST be retrieved is defined in RFC 868. + In the case of an E-MTA, this object must contain a + value of 0.0.0.0 if the address type is 'ipv4(1)' since + an E-MTA does not use the Time Protocol for time + synchronization (an E-MTA uses the time retrieved by the + DOCSIS cable modem). + The behavior of this object when the value of + pktcMtaDevTimeServerAddressType is other than 'ipv4(1)' + is not presently specified, but it may be specified in + future versions of this MIB module. + If a value is written into an instance of + pktcMtaDevTimeServer, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " RFC 868, Time Protocol; + RFC 2131, Dynamic Host Configuration Protocol; + RFC 2132, DHCP Options and BOOTP Vendor Extensions." + ::= { pktcMtaDevServer 8} + +pktcMtaDevConfigFile OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the MTA device configuration file + information, including the access method, the server name, + and the configuration file name. The value of this object + is the Uniform Resource Locator (URL) of the configuration + file for TFTP or HTTP download. + If this object value is a TFTP URL, it must be formatted + as defined in RFC 3617. + If this object value is an HTTP URL, it must be formatted + as defined in RFC 2616. + If the MTA SNMP Enrollment mechanism is used, then the MTA + must download the file provided by the Provisioning Server + + + + during provisioning via an SNMP SET on this object. + If the MTA SNMP Enrollment mechanism is not used, this + object MUST contain the URL value corresponding to the + 'siaddr' and 'file' fields received in the DHCP ACK to + locate the configuration file: the 'siaddr' and 'file' + fields represent the host and file of the TFTP URL, + respectively. In this case, the MTA MUST return an + 'inconsistentValue' error in response to SNMP SET + operations. + The MTA MUST return a zero-length string if the server + address (host part of the URL) is unknown. + If a value is written into an instance of + pktcMtaDevConfigFile, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 3617, URI Scheme for TFTP; RFC 2616, HTTP 1.1" + ::= { pktcMtaDevServer 9 } + +pktcMtaDevSnmpEntity OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the FQDN of the SNMP entity of the + Provisioning Server. When the MTA SNMP Enrollment + Mechanism is used, this object represents the server that + the MTA communicates with, that it receives the + configuration file URL from, and that it sends the + enrollment notification to. The SNMP entity is also the + destination entity for all the provisioning + notifications. It may be used for post-provisioning + SNMP operations. During the provisioning phase, this + SNMP entity FQDN is supplied to the MTA via DHCP option + 122, sub-option 3, as defined in RFC 3495. The MTA must + resolve the FQDN value before its very first network + interaction with the SNMP entity during the provisioning + phase." + + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 3495, DHCP Option for CableLabs Client Configuration." + ::= { pktcMtaDevServer 10 } + +pktcMtaDevProvConfigHash OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(20)) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + " This object contains the hash value of the contents of the + configuration file. + The authentication algorithm is Secure Hashing Algorithm + 1 (SHA-1), and the length is 160 bits. The hash + calculation MUST follow the requirements defined in the + PacketCable Security Specification. When the MTA SNMP + Enrollment mechanism is used, this hash value is + calculated and sent to the MTA prior to sending the + config file. This object value is then provided by the + Provisioning server via an SNMP SET operation. + When the MTA SNMP Enrollment mechanism is not in use, the + hash value is provided in the configuration file itself, + and it is also calculated by the MTA. This object value + MUST represent the hash value calculated by the MTA. + When the MTA SNMP Enrollment mechanism is not in use, the + MTA must reject all SNMP SET operations on this object and + return an 'inconsistentValue' error. + If a value is written into an instance of + pktcMtaDevProvConfigHash, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + PacketCable Security Specification." + ::= { pktcMtaDevServer 11 } + +pktcMtaDevProvConfigKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the key used to encrypt/decrypt + the configuration file when secure SNMPv3 provisioning + is used. + The value of this object is provided along with the + configuration file information (pktcMtaDevConfigFile) + and hash (pktcMtaDevProvConfigHash) by the Provisioning + Server via SNMP SET once the configuration file has been + created, as defined by the PacketCable Security + specification. + + The privacy algorithm is defined by the + pktcMtaDevProvConfigEncryptAlg MIB object. The + MTA requirements related to the privacy algorithm are + defined in the PacketCable Security Specification. + + If this object is set at any other provisioning step than + that allowed by the PacketCable MTA Device + + + + Provisioning Specification, the MTA SHOULD return + an 'inconsistentValue' error. + This object must not be used in non secure provisioning + mode. In non-secure provisioning modes, the MTA SHOULD + return an 'inconsistentValue' in response to SNMP SET + operations, and the MTA SHOULD return a zero-length + string in response to SNMP GET operations. + If a value is written into an instance of + pktcMtaDevProvConfigKey, the agent MUST NOT retain the + supplied value across MTA re-initializations or reboots." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + PacketCable Security Specification." + ::= { pktcMtaDevServer 12 } + +pktcMtaDevProvConfigEncryptAlg OBJECT-TYPE + SYNTAX PktcMtaDevProvEncryptAlg + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object defines the encryption algorithm used for + privacy protection of the MTA Configuration File content." + DEFVAL { des64CbcMode } + ::= { pktcMtaDevServer 13 } + +pktcMtaDevProvSolicitedKeyTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..180) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object defines a Kerberos Key Management timer on the + MTA. It is the time period during which the MTA saves the + nonce and Server Kerberos Principal Identifier to match an + AP Request and its associated AP Reply response from the + Provisioning Server. + After the timeout has been exceeded, the client discards + this (nonce, Server Kerberos Principal Identifier) pair, + after which it will no longer accept a matching AP Reply. + This timer only applies when the Provisioning Server + initiated key management for SNMPv3 (with a + Wake Up message). + If this object is set to a zero value, the MTA MUST return + an 'inconsistentValue' in response to SNMP SET operations. + This object should not be used in non-secure provisioning + modes. In non-secure provisioning modes, the MTA MUST + return an 'inconsistentValue' in response to SNMP SET + operations, and the MTA MUST return a zero value in + + + + response to SNMP GET operations. + If a value is written into an instance of + pktcMtaDevProvSolicitedKeyTimeout, the agent MUST NOT + retain the supplied value across MTA re-initializations + or reboots." + DEFVAL { 3 } + ::= { pktcMtaDevServer 14 } + +--================================================================= +-- +-- Unsolicited key updates are retransmitted according to an +-- exponential back-off mechanism using two timers and a maximum +-- retry counter for AS replies. +-- The initial retransmission timer value is the nominal timer +-- value (pktcMtaDevProvUnsolicitedKeyNomTimeout). The +-- retransmissions occur with an exponentially increasing interval +-- that caps at the maximum timeout value +-- (pktcMtaDevProvUnsolicitedKeyMaxTimeout). +-- Retransmissions stop when the maximum retry counter is reached +-- (pktcMtaDevProvUnsolicitedKeyMaxRetries). +-- For example, with values of 3 seconds for the nominal +-- timer, 100 seconds for the maximum timeout, and 8 retries max, +-- and with an exponential value of 2, this results in +-- retransmission intervals will be 3 s, 6 s, 12 s, 24 s, 48 s, +-- 96 s, 100 s, and 100 s; +-- retransmissions then stop because the maximum number of +-- retries (8) has been reached. +-- +--================================================================= +-- +-- Timeouts for unsolicited key management updates are only +-- pertinent before the first SNMPv3 message is sent between the +-- MTA and the Provisioning Server and before the configuration +-- file is loaded. +-- +--================================================================= + +pktcMtaDevProvUnsolicitedKeyMaxTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..600) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object defines the timeout value that applies to + an MTA-initiated AP-REQ/REP key management exchange with + the Provisioning Server in SNMPv3 provisioning. + It is the maximum timeout value, and it may not be exceeded + in the exponential back-off algorithm. If the DHCP option + + + + code 122, sub-option 5, is provided to the MTA, it + overwrites this value. + In non-secure provisioning modes, the MTA MUST + return a zero value in response to SNMP GET + operations." + REFERENCE + " PacketCable Security Specification." + DEFVAL {600} + ::= { pktcMtaDevServer 15 } + +pktcMtaDevProvUnsolicitedKeyNomTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..600) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object defines the starting value of the timeout + for the AP-REQ/REP Backoff and Retry mechanism + with exponential timeout in SNMPv3 provisioning. + If the DHCP option code 122, sub-option 5, is provided + the MTA, it overwrites this value. + In non-secure provisioning modes, the MTA MUST + return a zero value in response to SNMP GET + operations." + REFERENCE + " PacketCable Security Specification." + DEFVAL {3} + ::= { pktcMtaDevServer 16} + +pktcMtaDevProvUnsolicitedKeyMaxRetries OBJECT-TYPE + SYNTAX Unsigned32 (0..32) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains a retry counter that applies to + an MTA-initiated AP-REQ/REP key management exchange with + the Provisioning Server in secure SNMPv3 provisioning. + It is the maximum number of retries before the MTA stops + attempting to establish a Security Association with + Provisioning Server. + If the DHCP option code 122, sub-option 5, is provided to + the MTA, it overwrites this value. + If this object is set to a zero value, the MTA MUST return + an 'inconsistentValue' in response to SNMP SET operations. + In non-secure provisioning modes, the MTA MUST + return a zero value in response to SNMP GET + operations." + REFERENCE + + + + " PacketCable Security Specification." + DEFVAL {8} + ::= { pktcMtaDevServer 17 } + +pktcMtaDevProvKerbRealmName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the name of the associated + provisioning Kerberos realm acquired during the MTA4 + provisioning step (DHCP Ack) for SNMPv3 provisioning. + The uppercase ASCII representation of the associated + Kerberos realm name MUST be used by both the Manager (SNMP + entity) and the MTA. + The Kerberos realm name for the Provisioning Server is + supplied to the MTA via DHCP option code 122, sub-option 6, + as defined in RFC 3495. In secure SNMP provisioning mode, + the value of the Kerberos realm name for the Provisioning + Server supplied in the MTA configuration file must match + the value supplied in the DHCP option code 122, + sub-option 6. Otherwise, the value of this object must + contain the value supplied in DHCP Option 122, + sub-option 6." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + RFC 3495, DHCP Option for CableLabs Client Configuration." + ::= { pktcMtaDevServer 18 } + +pktcMtaDevProvState OBJECT-TYPE + SYNTAX INTEGER { + operational (1), + waitingForSnmpSetInfo (2), + waitingForTftpAddrResponse (3), + waitingForConfigFile (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object defines the MTA provisioning state. + If the state is: + + 'operational(1)', the device has completed the loading + and processing of the initialization parameters. + + 'waitingForSnmpSetInfo(2)', the device is waiting on + its configuration file download access information. + Note that this state is only reported when the MTA + + + + SNMP enrollment mechanism is used. + + 'waitingForTftpAddrResponse(3)', the device has sent a + DNS request to resolve the server providing the + configuration file, and it is awaiting for a response. + Note that this state is only reported when the MTA + SNMP enrollment mechanism is used. + + 'waitingForConfigFile(4)', the device has sent a + request via TFTP or HTTP for the download of its + configuration file, and it is awaiting for a response or + the file download is in progress." + REFERENCE + " PacketCable MTA Device Provisioning Specification, + PacketCable Security Specification." + ::= { pktcMtaDevServer 19 } + + -- + -- The following object group describes the security objects. + -- + +pktcMtaDevManufacturerCertificate OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the MTA Manufacturer Certificate. + The object value must be the ASN.1 DER encoding of the MTA + manufacturer's X.509 public key certificate. The MTA + Manufacturer Certificate is issued to each MTA + manufacturer and is installed into each MTA at the time of + manufacture or with a secure code download. The specific + requirements related to this certificate are defined in + the PacketCable or IPCablecom Security specifications." + REFERENCE + " PacketCable Security Specification." + + ::= {pktcMtaDevSecurity 1} + +pktcMtaDevCertificate OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the MTA Device Certificate. + The object value must be the ASN.1 DER encoding of the + MTA's X.509 public-key certificate issued by the + manufacturer and installed into the MTA at the time of + + + + manufacture or with a secure code download. + This certificate contains the MTA MAC address. The + specific requirements related to this certificate are + defined in the PacketCable or IPCablecom Security + specifications." + REFERENCE + " PacketCable Security Specification." + ::= { pktcMtaDevSecurity 2 } + +pktcMtaDevCorrelationId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains a correlation ID, an arbitrary value + generated by the MTA that will be exchanged as part of the + device capability data to the Provisioning Application. + This random value is used as an identifier to correlate + related events in the MTA provisioning sequence. + This value is intended for use only during the MTA + initialization and configuration file download." + REFERENCE + " PacketCable MTA Device Provisioning Specification." + ::= { pktcMtaDevSecurity 3 } + +pktcMtaDevTelephonyRootCertificate OBJECT-TYPE + SYNTAX DocsX509ASN1DEREncodedCertificate + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the telephony Service Provider Root + certificate. The object value is the ASN.1 DER encoding of + the IP Telephony Service Provider Root X.509 public key + certificate. This certification is stored in the MTA + non-volatile memory and can be updated with a secure code + download. This certificate is used to validate the initial + AS Reply received by the MTA from the Key Distribution + Center (KDC) during the MTA initialization. The specific + requirements related to this certificate are defined in + the PacketCable or IPCablecom Security specifications." + REFERENCE + " PacketCable Security Specification." + ::= { pktcMtaDevSecurity 4 } + +--================================================================= +-- +-- Informative Procedures for Setting up Security Associations +-- + + + +-- A Security Association may be set up either via configuration or +-- via NCS signaling. +-- +-- I. Security association setup via configuration. +-- +-- The realm must be configured first. Associated with the realm +-- is a KDC. The realm table (pktcMtaDevRealmTable) indicates +-- information about the realm (e.g., name, organization name) and +-- parameters associated with KDC communications (e.g., grace +-- periods, AS Request/AS Reply adaptive back-off parameters). +-- +-- Once the realm is established, one or more CMS(es) may be +-- defined in the realm. Associated with each CMS +-- entry in the pktcMtaDevCmsTable is an explicit reference +-- to a Realm via the realm name (pktcMtaDevCmsKerbRealmName), +-- the FQDN of the CMS, and parameters associated with IPSec +-- key management with the CMS (e.g., clock skew, AP Request/ +-- AP Reply adaptive back-off parameters). +-- +-- II. Security association setup via NCS signaling. +-- +-- The procedure of establishing the Security Associations +-- for NCS signaling is described in the PacketCable Security +-- specification. +-- It involves the analysis of the pktcNcsEndPntConfigTable row +-- for the corresponding endpoint number and the correlation of +-- the CMS FQDN from this row with the CMS Table and +-- consequently, with the Realm Table. Both of these tables +-- are defined below. The pktcNcsEndPntConfigTable is defined in +-- the IP over Cable Data Network (IPCDN) +-- NCS Signaling MIB [NCSSIGMIB]. +-- +-- III. When the MTA receives wake-up or re-key messages from a +-- CMS, it performs key management based on the corresponding +-- entry in the CMS table. If the matching CMS entry does not +-- exist, it must ignore the wake-up or re-key messages. +-- +--================================================================= +--================================================================= +-- +-- pktcMtaDevRealmTable +-- +-- The pktcMtaDevRealmTable shows the KDC realms. The table is +-- indexed with pktcMtaDevRealmIndex. The Realm Table contains the +-- pktcMtaDevRealmName in conjunction with any server that needs +-- a Security Association with the MTA. Uppercase must be used +-- to compare the pktcMtaDevRealmName content. +-- + + + +--================================================================= + +pktcMtaDevRealmAvailSlot OBJECT-TYPE + SYNTAX Unsigned32 (0..64) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the index number of the first + available entry in the realm table (pktcMtaDevRealmTable). + If all the entries in the realm table have been assigned, + this object contains the value of zero. + A management station should create new entries in the + realm table, using the following procedure: + + First, issue a management protocol retrieval operation + to determine the value of the first available index in the + realm table (pktcMtaDevRealmAvailSlot). + + Second, issue a management protocol SET operation + to create an instance of the pktcMtaDevRealmStatus + object by setting its value to 'createAndWait(5)'. + + Third, if the SET operation succeeded, continue + modifying the object instances corresponding to the newly + created conceptual row, without fear of collision with + other management stations. When all necessary conceptual + columns of the row are properly populated (via SET + operations or default values), the management station may + SET the pktcMtaDevRealmStatus object to 'active(1)'." + ::= { pktcMtaDevSecurity 5 } + +pktcMtaDevRealmTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcMtaDevRealmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object contains the realm table. + The CMS table (pktcMtaDevCmsTable) and the realm table + (pktcMtaDevRealmTable) are used for managing the MTA-CMS + Security Associations. The realm table defines the + Kerberos realms for the Application Servers (CMSes and the + Provisioning Server)." + ::= { pktcMtaDevSecurity 6 } + +pktcMtaDevRealmEntry OBJECT-TYPE + SYNTAX PktcMtaDevRealmEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + " This table entry object lists the MTA security parameters + for a single Kerberos realm. The conceptual rows MUST NOT + persist across MTA reboots." + INDEX { pktcMtaDevRealmIndex } +::= { pktcMtaDevRealmTable 1 } + +PktcMtaDevRealmEntry ::= SEQUENCE { + pktcMtaDevRealmIndex Unsigned32, + pktcMtaDevRealmName SnmpAdminString, + pktcMtaDevRealmPkinitGracePeriod Unsigned32, + pktcMtaDevRealmTgsGracePeriod Unsigned32, + pktcMtaDevRealmOrgName LongUtf8String, + pktcMtaDevRealmUnsolicitedKeyMaxTimeout Unsigned32, + pktcMtaDevRealmUnsolicitedKeyNomTimeout Unsigned32, + pktcMtaDevRealmUnsolicitedKeyMaxRetries Unsigned32, + pktcMtaDevRealmStatus RowStatus + } + +pktcMtaDevRealmIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..64) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object defines the realm table index." + ::= { pktcMtaDevRealmEntry 1} + +pktcMtaDevRealmName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object identifies the Kerberos realm name in all + capitals. The MTA MUST prohibit the instantiation of any + two rows with identical Kerberos realm names. The MTA MUST + also verify that any search operation involving Kerberos + realm names is done using the uppercase ASCII + representation of the characters." + ::= { pktcMtaDevRealmEntry 2 } + +pktcMtaDevRealmPkinitGracePeriod OBJECT-TYPE + SYNTAX Unsigned32 (15..600) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the PKINIT Grace Period. For the + purpose of key management with Application Servers (CMSes + + + + or the Provisioning Server), the MTA must utilize the + PKINIT exchange to obtain Application Server tickets. The + MTA may utilize the PKINIT exchange to obtain Ticket + Granting Tickets (TGTs), which are then used to obtain + Application Server tickets in a TGS exchange. + The PKINIT exchange occurs according to the current Ticket + Expiration Time (TicketEXP) and on the PKINIT Grace Period + (PKINITGP). The MTA MUST initiate the PKINIT exchange at + the time: TicketEXP - PKINITGP." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 15 } + ::= { pktcMtaDevRealmEntry 3 } + +pktcMtaDevRealmTgsGracePeriod OBJECT-TYPE + SYNTAX Unsigned32 (1..600) + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the Ticket Granting Server Grace + Period (TGSGP). The Ticket Granting Server (TGS) + Request/Reply exchange may be performed by the MTA + on demand whenever an Application Server ticket is + needed to establish security parameters. If the MTA + possesses a ticket that corresponds to the Provisioning + Server or a CMS that currently exists in the CMS table, + the MTA MUST initiate the TGS Request/Reply exchange + at the time: TicketEXP - TGSGP." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 10 } + ::= { pktcMtaDevRealmEntry 4 } + +pktcMtaDevRealmOrgName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the X.500 organization name attribute + as defined in the subject name of the service provider + certificate." + REFERENCE + " PacketCable Security Specification; + RFCs 3280 and 4630, Internet X.509 Public Key + Infrastructure Certificate and Certificate Revocation List + (CRL) Profile" + ::= { pktcMtaDevRealmEntry 5 } + + + + +pktcMtaDevRealmUnsolicitedKeyMaxTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the maximum time the MTA will + attempt to perform the exponential back-off algorithm. + This timer only applies when the MTA initiated key + management. If the DHCP option code 122, sub-option 4, is + provided to the MTA, it overwrites this value. + + Unsolicited key updates are retransmitted according to an + exponential back-off mechanism using two timers and a + maximum retry counter for AS replies. + The initial retransmission timer value is the nominal + timer value (pktcMtaDevRealmUnsolicitedKeyNomTimeout). The + retransmissions occur with an exponentially increasing + interval that caps at the maximum timeout value + (pktcMtaDevRealmUnsolicitedKeyMaxTimeout). + Retransmissions stop when the maximum retry counter is + reached (pktcMatDevRealmUnsolicitedMaxRetries). + + For example, with values of 3 seconds for the nominal + timer, 20 seconds for the maximum timeout, and 5 retries + max, retransmission intervals will be 3 s, 6 s, + 12 s, 20 s, and 20 s, and retransmissions then stop because + the maximum number of retries has been reached." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 100 } + ::= { pktcMtaDevRealmEntry 6 } + +pktcMtaDevRealmUnsolicitedKeyNomTimeout OBJECT-TYPE + SYNTAX Unsigned32 (100..600000) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the initial timeout value + for the AS-REQ/AS-REP exponential back-off and retry + mechanism. If the DHCP option code 122, sub-option 4, is + provided to the MTA, it overwrites this value. + This value should account for the average roundtrip + time between the MTA and the KDC, as well as the + processing delay on the KDC. + + + + + Unsolicited key updates are retransmitted according to an + exponential back-off mechanism using two timers and a + maximum retry counter for AS replies. + The initial retransmission timer value is the nominal + timer value (pktcMtaDevRealmUnsolicitedKeyNomTimeout). The + retransmissions occur with an exponentially increasing + interval that caps at the maximum timeout value + (pktcMtaDevRealmUnsolicitedKeyMaxTimeout). + Retransmissions stop when the maximum retry counter is + reached (pktcMatDevRealmUnsolicitedMaxRetries). + + For example, with values of 3 seconds for the nominal + timer, 20 seconds for the maximum timeout, and 5 retries + max, in retransmission intervals will be 3 s, 6 s, + 12 s, 20 s, and 20 s; retransmissions then stop because + the maximum number of retries has been reached." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 3000 } + ::= { pktcMtaDevRealmEntry 7 } + +pktcMtaDevRealmUnsolicitedKeyMaxRetries OBJECT-TYPE + SYNTAX Unsigned32 (0..1024) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the maximum number of retries the + MTA attempts to obtain a ticket from the KDC. + + Unsolicited key updates are retransmitted according to an + exponential back-off mechanism using two timers and a + maximum retry counter for AS replies. + The initial retransmission timer value is the nominal + timer value (pktcMtaDevRealmUnsolicitedKeyNomTimeout). The + retransmissions occur with an exponentially increasing + interval that caps at the maximum timeout value + (pktcMtaDevRealmUnsolicitedKeyMaxTimeout). + Retransmissions stop when the maximum retry counter is + reached (pktcMatDevRealmUnsolicitedMaxRetries). + + For example, with values of 3 seconds for the nominal + timer, 20 seconds for the maximum timeout, and 5 retries + max, retransmission intervals will be 3 s, 6 s, + 12 s, 20 s, and 20 s; retransmissions then stop because + the maximum number of retries has been reached." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 5 } + + + + ::= { pktcMtaDevRealmEntry 8 } + +pktcMtaDevRealmStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines the row status of this realm in the + realm table (pktcMtaDevRealmTable). + + An entry in this table is not qualified for activation + until the object instances of all corresponding columns + have been initialized, either by default values, or via + explicit SET operations. Until all object instances in + this row are initialized, the status value for this realm + must be 'notReady(3)'. + In particular, two columnar objects must be explicitly + SET: the realm name (pktcMtaDevRealmName) and the + organization name (pktcMtaDevRealmOrgName). Once these 2 + objects have been set and the row status is SET to + 'active(1)', the MTA MUST NOT allow any modification of + these 2 object values. + The value of this object has no effect on whether other + columnar objects in this row can be modified." + ::= { pktcMtaDevRealmEntry 9 } + +--================================================================= +-- +-- The CMS table, pktcMtaDevCmsTable +-- +-- The CMS table and the realm table (pktcMtaDevRealmTable) are used +-- for managing the MTA signaling security. The CMS table defines +-- the CMSes the MTA is allowed to communicate with and contains +-- the parameters describing the SA establishment between the MTA +-- and a CMS. +-- The CMS table is indexed by pktcMtaDevCmsIndex. The table +-- contains the CMS FQDN (pktcMtaDevCmsFQDN) and the associated +-- Kerberos realm name (pktcMtaDevCmsKerbRealmName) so that the MTA +-- can find the corresponding Kerberos realm name in the +-- pktcMtaDevRealmTable. +-- +--================================================================= + +pktcMtaDevCmsAvailSlot OBJECT-TYPE + SYNTAX Unsigned32 (0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + " This object contains the index number of the first + available entry in the CMS table (pktcMtaDevCmsTable). + If all the entries in the CMS table have been assigned, + this object contains the value of zero. + A management station should create new entries in the + CMS table, using the following procedure: + + First, issue a management protocol retrieval operation + to determine the value of the first available index in the + CMS table (pktcMtaDevCmsAvailSlot). + + Second, issue a management protocol SET operation + to create an instance of the pktcMtaDevCmsStatus + object by setting its value to 'createAndWait(5)'. + + Third, if the SET operation succeeded, continue + modifying the object instances corresponding to the newly + created conceptual row, without fear of collision with + other management stations. When all necessary conceptual + columns of the row are properly populated (via SET + operations or default values), the management station may + SET the pktcMtaDevCmsStatus object to 'active(1)'." + ::= { pktcMtaDevSecurity 7 } + +pktcMtaDevCmsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcMtaDevCmsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object defines the CMS table. + The CMS table (pktcMtaDevCmsTable) and the realm table + (pktcMtaDevRealmTable) are used for managing security + between the MTA and CMSes. Each CMS table entry defines + a CMS the managed MTA is allowed to communicate with + and contains security parameters for key management with + that CMS." + ::= { pktcMtaDevSecurity 8 } + +pktcMtaDevCmsEntry OBJECT-TYPE + SYNTAX PktcMtaDevCmsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table entry object lists the MTA key management + parameters used when establishing Security Associations + with a CMS. The conceptual rows MUST NOT persist across + MTA reboots." + INDEX { pktcMtaDevCmsIndex } + + + + ::= { pktcMtaDevCmsTable 1 } + +PktcMtaDevCmsEntry ::= SEQUENCE { + pktcMtaDevCmsIndex Unsigned32, + pktcMtaDevCmsFqdn SnmpAdminString, + pktcMtaDevCmsKerbRealmName SnmpAdminString, + pktcMtaDevCmsMaxClockSkew Unsigned32, + pktcMtaDevCmsSolicitedKeyTimeout Unsigned32, + pktcMtaDevCmsUnsolicitedKeyMaxTimeout Unsigned32, + pktcMtaDevCmsUnsolicitedKeyNomTimeout Unsigned32, + pktcMtaDevCmsUnsolicitedKeyMaxRetries Unsigned32, + pktcMtaDevCmsIpsecCtrl TruthValue, + pktcMtaDevCmsStatus RowStatus + } + +pktcMtaDevCmsIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..128) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object defines the CMS table index." + ::= { pktcMtaDevCmsEntry 1 } + +pktcMtaDevCmsFqdn OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the CMS FQDN. The MTA must + prohibit the instantiation of any two rows with identical + FQDNs. The MTA must also verify that any search and/or + comparison operation involving a CMS FQDN is case + insensitive. The MTA must resolve the CMS FQDN as required + by the corresponding PacketCable Specifications." + REFERENCE + " PacketCable MTA Device Provisioning Specification; + PacketCable Security Specification; + PacketCable Network-Based Call Signaling Protocol + Specification." + ::= { pktcMtaDevCmsEntry 2 } + +pktcMtaDevCmsKerbRealmName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object identifies the Kerberos realm name in uppercase + characters associated with the CMS defined in this + + + + conceptual row. The object value is a reference + point to the corresponding Kerberos realm name in the + realm table (pktcMtaDevRealmTable)." + ::= { pktcMtaDevCmsEntry 3 } + +pktcMtaDevCmsMaxClockSkew OBJECT-TYPE + SYNTAX Unsigned32 (1..1800) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object specifies the maximum allowable clock skew + between the MTA and the CMS defined in this row." + DEFVAL { 300 } + ::= { pktcMtaDevCmsEntry 4 } + +pktcMtaDevCmsSolicitedKeyTimeout OBJECT-TYPE + SYNTAX Unsigned32 (100..30000) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines a Kerberos Key Management timer on the + MTA. It is the time period during which the MTA saves the + nonce and Server Kerberos Principal Identifier to match an + AP Request and its associated AP Reply response from the + CMS. This timer only applies when the CMS initiated key + management (with a Wake Up message or a Rekey message)." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 1000 } + ::= { pktcMtaDevCmsEntry 5 } + +--================================================================= +-- +-- Unsolicited key updates are retransmitted according to an +-- exponential back-off mechanism using two timers and a maximum +-- retry counter for AS replies. +-- The initial retransmission timer value is the nominal timer +-- value (pktcMtaDevCmsUnsolicitedKeyNomTimeout). The +-- retransmissions occur with an exponentially increasing interval +-- that caps at the maximum timeout value +-- (pktcMtaDevCmsUnsolicitedKeyMaxTimeout). +-- Retransmissions stop when the maximum retry counter is reached +-- (pktcMatDevCmsUnsolicitedMaxRetries). +-- For example, with values of 3 seconds for the nominal +-- timer, 20 seconds for the maximum timeout, and 5 retries max, +-- retransmission intervals will be 3 s, 6 s, 12 s, + + + +-- 20 s, and 20 s; retransmissions then stop due to the +-- maximum number of retries reached. +-- +--================================================================= + +pktcMtaDevCmsUnsolicitedKeyMaxTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..600) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines the timeout value that only applies + to an MTA-initiated key management exchange. It is the + maximum timeout, and it may not be exceeded in the + exponential back-off algorithm." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 600 } + ::= { pktcMtaDevCmsEntry 6 } + +pktcMtaDevCmsUnsolicitedKeyNomTimeout OBJECT-TYPE + SYNTAX Unsigned32 (100..30000) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines the starting value of the timeout + for an MTA-initiated key management. It should account for + the average roundtrip time between the MTA and the CMS and + the processing time on the CMS." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 500 } + ::= { pktcMtaDevCmsEntry 7 } + +pktcMtaDevCmsUnsolicitedKeyMaxRetries OBJECT-TYPE + SYNTAX Unsigned32 (0..1024) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the maximum number of retries before + the MTA stops attempting to establish a Security + Association with the CMS." + REFERENCE + " PacketCable Security Specification." + DEFVAL { 5 } + ::= { pktcMtaDevCmsEntry 8 } + + + + +pktcMtaDevCmsIpsecCtrl OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object specifies the MTA IPSec control flag. + If the object value is 'true', the MTA must use Kerberos + Key Management and IPsec to communicate with this CMS. If + it is 'false', IPSec Signaling Security and Kerberos key + management are disabled for this specific CMS." + DEFVAL { true } + ::= { pktcMtaDevCmsEntry 9 } + +pktcMtaDevCmsStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object defines the row status associated with this + particular CMS in the CMS table (pktcMtaDevCmsTable). + + An entry in this table is not qualified for activation + until the object instances of all corresponding columns + have been initialized, either by default values or via + explicit SET operations. Until all object instances in + this row are initialized, the status value for this realm + must be 'notReady(3)'. + In particular, two columnar objects must be SET: the + CMS FQDN (pktcMtaDevCmsFqdn) and the Kerberos realm name + (pktcMtaDevCmsKerbRealmName). Once these 2 objects have + been set and the row status is SET to 'active(1)', the MTA + MUST NOT allow any modification of these 2 object values. + + The value of this object has no effect on + whether other columnar objects in this row can be + modified." + ::= { pktcMtaDevCmsEntry 10 } + +pktcMtaDevResetKrbTickets OBJECT-TYPE + SYNTAX BITS { + invalidateProvOnReboot (0), + invalidateAllCmsOnReboot (1) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object defines a Kerberos Ticket Control Mask that + instructs the MTA to invalidate the specific Application + + + + Server Kerberos ticket(s) that are stored locally in the + MTA NVRAM (non-volatile or persistent memory). + If the MTA does not store Kerberos tickets in NVRAM, it + MUST ignore setting of this object and MUST report a BITS + value of zero when the object is read. + If the MTA supports Kerberos tickets storage in NVRAM, the + object value is encoded as follows: + - Setting the invalidateProvOnReboot bit (bit 0) to 1 + means that the MTA MUST invalidate the Kerberos + Application Ticket(s) for the Provisioning Application + at the next MTA reboot if secure SNMP provisioning mode + is used. In non-secure provisioning modes, the MTA MUST + return an 'inconsistentValue' in response to SNMP SET + operations with a bit 0 set to 1. + - Setting the invalidateAllCmsOnReboot bit (bit 1) to 1 + means that the MTA MUST invalidate the Kerberos + Application Ticket(s) for all CMSes currently assigned + to the MTA endpoints. + If a value is written into an instance of + pktcMtaDevResetKrbTickets, the agent MUST retain the + supplied value across an MTA re-initialization or + reboot." + REFERENCE + "PacketCable Security Specification." + DEFVAL { { } } + ::= { pktcMtaDevSecurity 9 } + +-- +-- The following group, pktcMtaDevErrors, defines an OID +-- corresponding to error conditions encountered during the MTA +-- provisioning. +-- + +pktcMtaDevErrorsTooManyErrors OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This object defines the OID corresponding to the error + condition when too many errors are encountered in the + MTA configuration file during provisioning." + ::= { pktcMtaDevErrors 1 } + +pktcMtaDevProvisioningEnrollment NOTIFICATION-TYPE + OBJECTS { + sysDescr, + pktcMtaDevSwCurrentVers, + pktcMtaDevTypeIdentifier, + ifPhysAddress, + pktcMtaDevCorrelationId + + + + } + STATUS current + DESCRIPTION + " This INFORM notification is issued by the MTA to initiate + the PacketCable provisioning process when the MTA SNMP + enrollment mechanism is used. + It contains the system description, the current software + version, the MTA device type identifier, the MTA MAC + address (obtained in the MTA ifTable in the ifPhysAddress + object that corresponds to the ifIndex 1), and a + correlation ID." + ::= { pktcMtaNotification 1 } + +pktcMtaDevProvisioningStatus NOTIFICATION-TYPE + OBJECTS { + ifPhysAddress, + pktcMtaDevCorrelationId, + pktcMtaDevProvisioningState + } + STATUS current + DESCRIPTION + " This INFORM notification may be issued by the MTA to + confirm the completion of the PacketCable provisioning + process, and to report its provisioning completion + status. + It contains the MTA MAC address (obtained in the MTA + ifTable in the ifPhysAddress object that corresponds + to the ifIndex 1), a correlation ID and the MTA + provisioning state as defined in + pktcMtaDevProvisioningState." + ::= { pktcMtaNotification 2 } + +-- +-- Compliance Statements +-- + +pktcMtaCompliances OBJECT IDENTIFIER ::= { pktcMtaConformance 1 } +pktcMtaGroups OBJECT IDENTIFIER ::= { pktcMtaConformance 2 } + +pktcMtaBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for MTA devices that implement + PacketCable or IPCablecom requirements. + + This compliance statement applies to MTA implementations + that support PacketCable 1.0 or IPCablecom requirements, + which are not IPv6-capable at the time of this + + + + RFC publication." + + MODULE -- Unconditionally mandatory groups for MTAs + + MANDATORY-GROUPS { + pktcMtaGroup, + pktcMtaNotificationGroup + } + + OBJECT pktcMtaDevDhcpServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevDnsServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevTimeServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevServerDhcp1 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDhcp2 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDns1 + + + + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDns2 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevTimeServer + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevProvConfigEncryptAlg + SYNTAX PktcMtaDevProvEncryptAlg + DESCRIPTION + "An implementation is only required to support + values of none(0) and des64Cbcmode(1). + An IV of zero is used to encrypt in des64Cbcmode, and + the length of pktcMtaDevProvConfigKey is 64 bits, as + defined in the PacketCable Security specification. + Other encryption types may be defined in future + versions of this MIB module." + + OBJECT pktcMtaDevRealmOrgName + SYNTAX LongUtf8String (SIZE (1..384)) + DESCRIPTION + "The Organization Name field in X.509 certificates + can contain up to 64 UTF-8 encoded characters, + as defined in RFCs 3280 and 4630. Therefore, compliant + devices are only required to support Organization + Name values of up to 64 UTF-8 encoded characters. + Given that RFCs 3280 and 4630 define the UTF-8 encoding, + compliant devices must support a maximum size of 384 + octets for pktcMtaDevRealmOrgName. The calculation of + 384 octets comes from the RFC 3629 UTF-8 encoding + definition whereby the UTF-8 encoded characters + are encoded as sequences of 1 to 6 octets, + assuming that code points as high as 0x7ffffffff + might be used. Subsequent versions of Unicode and ISO + 10646 have limited the upper bound to 0x10ffff. + + + + Consequently, the current version of UTF-8, defined in + RFC 3629, does not require more than four octets to + encode a valid code point." + + ::= { pktcMtaCompliances 1 } + +pktcMtaGroup OBJECT-GROUP + OBJECTS { + pktcMtaDevResetNow, + pktcMtaDevSerialNumber, + pktcMtaDevSwCurrentVers, + pktcMtaDevFQDN, + pktcMtaDevEndPntCount, + pktcMtaDevEnabled, + pktcMtaDevProvisioningCounter, + pktcMtaDevErrorOid, + pktcMtaDevErrorValue, + pktcMtaDevErrorReason, + pktcMtaDevTypeIdentifier, + pktcMtaDevProvisioningState, + pktcMtaDevHttpAccess, + pktcMtaDevCertificate, + pktcMtaDevCorrelationId, + pktcMtaDevManufacturerCertificate, + pktcMtaDevDhcpServerAddressType, + pktcMtaDevDnsServerAddressType, + pktcMtaDevTimeServerAddressType, + pktcMtaDevProvConfigEncryptAlg, + pktcMtaDevServerDhcp1, + pktcMtaDevServerDhcp2, + pktcMtaDevServerDns1, + pktcMtaDevServerDns2, + pktcMtaDevTimeServer, + pktcMtaDevConfigFile, + pktcMtaDevSnmpEntity, + pktcMtaDevRealmPkinitGracePeriod, + pktcMtaDevRealmTgsGracePeriod, + pktcMtaDevRealmAvailSlot, + pktcMtaDevRealmName, + pktcMtaDevRealmOrgName, + pktcMtaDevRealmUnsolicitedKeyMaxTimeout, + pktcMtaDevRealmUnsolicitedKeyNomTimeout, + pktcMtaDevRealmUnsolicitedKeyMaxRetries, + pktcMtaDevRealmStatus, + pktcMtaDevCmsAvailSlot, + pktcMtaDevCmsFqdn, + pktcMtaDevCmsKerbRealmName, + pktcMtaDevCmsUnsolicitedKeyMaxTimeout, + + + + pktcMtaDevCmsUnsolicitedKeyNomTimeout, + pktcMtaDevCmsUnsolicitedKeyMaxRetries, + pktcMtaDevCmsSolicitedKeyTimeout, + pktcMtaDevCmsMaxClockSkew, + pktcMtaDevCmsIpsecCtrl, + pktcMtaDevCmsStatus, + pktcMtaDevResetKrbTickets, + pktcMtaDevProvUnsolicitedKeyMaxTimeout, + pktcMtaDevProvUnsolicitedKeyNomTimeout, + pktcMtaDevProvUnsolicitedKeyMaxRetries, + pktcMtaDevProvKerbRealmName, + pktcMtaDevProvSolicitedKeyTimeout, + pktcMtaDevProvConfigHash, + pktcMtaDevProvConfigKey, + pktcMtaDevProvState, + pktcMtaDevProvisioningTimer, + pktcMtaDevTelephonyRootCertificate + } + STATUS current + DESCRIPTION + " A collection of objects for managing PacketCable or + IPCablecom MTA implementations." + ::= { pktcMtaGroups 1 } + +pktcMtaNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + pktcMtaDevProvisioningStatus, + pktcMtaDevProvisioningEnrollment + } + STATUS current + DESCRIPTION + " A collection of notifications dealing with the change of + MTA provisioning status." + ::= { pktcMtaGroups 2 } + +pktcMtaBasicSmtaCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for S-MTA devices + that implement PacketCable or IPCablecom requirements. + + This compliance statement applies to S-MTA implementations + that support PacketCable or IPCablecom requirements, + which are not IPv6-capable at the time of this + RFC publication." + + MODULE -- Unconditionally Mandatory Groups for S-MTA devices + MANDATORY-GROUPS { + + + + pktcMtaGroup, + pktcMtaNotificationGroup + } + + OBJECT pktcMtaDevDhcpServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevDnsServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevTimeServerAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + " Support for address types other than 'ipv4(1)' + is not presently specified and therefore is not + required. It may be defined in future versions of + this MIB module." + + OBJECT pktcMtaDevServerDhcp1 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDhcp2 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevServerDns1 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + + + + OBJECT pktcMtaDevServerDns2 + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevTimeServer + SYNTAX InetAddress (SIZE(4)) + DESCRIPTION + "An implementation is only required to support IPv4 + addresses. Other address types support may be defined in + future versions of this MIB module." + + OBJECT pktcMtaDevProvConfigEncryptAlg + SYNTAX PktcMtaDevProvEncryptAlg + DESCRIPTION + "An implementation is only required to support + values of none(0) and des64Cbcmode(1). + An IV of zero is used to encrypt in des64Cbcmode, and + the length of pktcMtaDevProvConfigKey is 64 bits, as + defined in the PacketCable Security specification. + Other encryption types may be defined in future + versions of this MIB module." + + OBJECT pktcMtaDevRealmOrgName + SYNTAX LongUtf8String (SIZE (1..384)) + DESCRIPTION + "The Organization Name field in X.509 certificates + can contain up to 64 UTF-8 encoded characters, as + defined in RFCs 3280 and 4630. Therefore, compliant + devices are only required to support Organization + Name values of up to 64 UTF-8 encoded characters. + Given that RFCs 3280 and 4630 define the UTF-8 encoding, + compliant devices must support a maximum size of 384 + octets for pktcMtaDevRealmOrgName. The calculation of + 384 octets comes from the RFC 3629 UTF-8 encoding + definition whereby the UTF-8 encoded characters + are encoded as sequences of 1 to 6 octets, + assuming that code points as high as 0x7ffffffff + might be used. Subsequent versions of Unicode and ISO + 10646 have limited the upper bound to 0x10ffff. + Consequently, the current version of UTF-8, defined in + RFC 3629 does not require more than four octets to + encode a valid code point." + MODULE DOCS-CABLE-DEVICE-MIB + MANDATORY-GROUPS { + + + + docsDevSoftwareGroupV2 + } + + MODULE DOCS-IETF-BPI2-MIB + MANDATORY-GROUPS { + docsBpi2CodeDownloadGroup + } + + ::= { pktcMtaCompliances 2 } + +END diff --git a/mibs/ietf/PKTC-IETF-SIG-MIB b/mibs/ietf/PKTC-IETF-SIG-MIB new file mode 100644 index 0000000..c9f708a --- /dev/null +++ b/mibs/ietf/PKTC-IETF-SIG-MIB @@ -0,0 +1,3199 @@ +PKTC-IETF-SIG-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + Unsigned32, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB -- [RFC4001] + TEXTUAL-CONVENTION, + RowStatus, + TruthValue + FROM SNMPv2-TC -- [RFC2579] + + + + OBJECT-GROUP, + MODULE-COMPLIANCE + FROM SNMPv2-CONF -- [RFC2580] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + ifIndex + FROM IF-MIB -- [RFC2863] + Dscp + FROM DIFFSERV-DSCP-TC; -- [RFC3289] + +pktcIetfSigMib MODULE-IDENTITY + LAST-UPDATED "200712180000Z" -- December 18, 2007 + ORGANIZATION "IETF IPCDN Working Group" + CONTACT-INFO + "Sumanth Channabasappa + Cable Television Laboratories, Inc. + 858 Coal Creek Circle, + Louisville, CO 80027, USA + Phone: +1 303-661-3307 + Email: Sumanth@cablelabs.com + + Gordon Beacham + Motorola, Inc. + 6450 Sequence Drive, Bldg. 1 + San Diego, CA 92121, USA + Phone: +1 858-404-2334 + Email: gordon.beacham@motorola.com + + Satish Kumar Mudugere Eswaraiah + Texas Instruments India (P) Ltd., + Golf view, Wind Tunnel Road + Murugesh Palya + Bangalore 560 017, INDIA + Phone: +91 80 5269451 + Email: satish.kumar@ti.com + + IETF IPCDN Working Group + General Discussion: ipcdn@ietf.org + Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn + Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn + Co-Chair: Jean-Francois Mule, jf.mule@cablelabs.com + Co-Chair: Richard Woundy, Richard_Woundy@cable.comcast.com" + + DESCRIPTION + "This MIB module supplies the basic management + objects for the PacketCable and IPCablecom Signaling + protocols. This version of the MIB includes + common signaling and Network Call Signaling + + + + (NCS)-related signaling objects. + + Copyright (C) The IETF Trust (2008). This version of + this MIB module is part of RFC 5098; see the RFC itself for + full legal notices." + REVISION "200712180000Z" + DESCRIPTION + "Initial version, published as RFC 5098." + +::= { mib-2 169 } + +-- Textual Conventions + +TenthdBm ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-1" + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION represents power levels that are + normally expressed in dBm. Units are in tenths of a dBm; + for example, -13.5 dBm will be represented as -135." + SYNTAX Integer32 + +PktcCodecType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " This TEXTUAL-CONVENTION defines various types of codecs + that MAY be supported. The description for each + enumeration is listed below: + + Enumeration Description + other a defined codec not in the enumeration + unknown a codec not defined by the PacketCable + Codec Specification + g729 ITU-T Recommendation G.729 + reserved for future use + g729E ITU-T Recommendation G.729E + pcmu Pulse Code Modulation u-law (PCMU) + g726at32 ITU-T Recommendation G.726-32 (32 kbit/s) + g728 ITU-T Recommendation G.728 + pcma Pulse Code Modulation a-law (PCMA) + g726at16 ITU-T Recommendation G.726-16 (16 kbit/s) + g726at24 ITU-T Recommendation G.726-24 (24 kbit/s) + g726at40 ITU-T Recommendation G.726-40 (40 kbit/s) + ilbc IETF Internet low-bit rate codec + bv16 Broadcom BroadVoice16 + + The list of codecs is consistent with the IETF + Real-Time Transport Protocol (RTP) Profile registry and + + + + the RTP Map Parameters Table in PacketCable Audio/Video + Codecs Specification [PKT-SP-CODEC]. The literal codec + name for each codec is listed below: + + Codec Literal Codec Name + g729 G729 + g729E G729E + pcmu PCMU + g726at32 G726-32 + g728 G728 + pcma PCMA + g726at16 G726-16 + g726at24 G726-24 + g726at40 G726-40 + ilbc iLBC + bv16 BV16 + + The literal codec name is the second column of the table + with codec RTP Map Parameters. The Literal Codec Name Column + contains the codec name used in the local connection + options (LCO) of the NCS messages create connection + (CRCX)/modify connection (MDCX) and is also used to + identify the codec in the Call Management System (CMS) + Provisioning Specification. The RTP Map Parameter column of + the Table contains the string used in the media attribute + line (a=) of the session description protocol (SDP) + parameters in NCS messages." + SYNTAX INTEGER { + other (1), + unknown (2), + g729 (3), + reserved (4), + g729E (5), + pcmu (6), + g726at32 (7), + g728 (8), + pcma (9), + g726at16 (10), + g726at24 (11), + g726at40 (12), + ilbc (13), + bv16 (14) + } + +PktcRingCadence ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This object provides an encoding scheme for ring + + + + cadences, including repeatability characteristics. All + fields in this object MUST be encoded in network-byte + order. + + The first three higher-order octets are reserved. The + octets that follow are used to encode a 'bit-string', with + each bit corresponding to 50 milliseconds. A bit value of + '1' indicates the presence of a ring-tone, and a bit value + of '0' indicates the absence of a ring-tone, for that + duration (50 ms) (Note: A minimum number of octets + required to encode the bit-string MUST be used). + + The first two of the reserved octets MUST indicate the + length of the encoded cadence (in bits) and MUST range + between 1 and 264. (Note: The length in bits MUST also be + consistent with the number of octets that encode the + cadence). The MTA MUST ignore any unused bits in the last + octet, but MUST reflect the value as provided on + subsequent SNMP GETs. + + The third of the reserved octets indicates 'repeatability' + and MUST be either 0x80 or 0x00 -- the former value + indicating 'non-repeatability', and the latter indicating + 'repeatability'. + + The MTA MUST reject attempts to set a value that violates + any of the above requirements." + + + SYNTAX OCTET STRING (SIZE(4..36)) + + +PktcSigType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " This object lists the various types of signaling that may + be supported: + + other(1) - set when signaling other than NCS is used + ncs(2) - Network Call Signaling is a derivation of MGCP + (Media Gateway Control Protocol) defined for + IPCablecom/PacketCable MTAs." + SYNTAX INTEGER { + other(1), + ncs(2) + } + + + + + +DtmfCode::=TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION represents the Dual-Tone + Multi-Frequency (DTMF) Character used + to indicate the start or end of the digit transition + sequence used for caller id or Visual Message Waiting + Indicator (VMWI). + + Note: The DTMF code '*' is indicated using 'dtmfcodeStar', + and the DTMF code '#' is indicated using ' dtmfcodeHash'." + SYNTAX INTEGER { + dtmfcode0(0), + dtmfcode1(1), + dtmfcode2(2), + dtmfcode3(3), + dtmfcode4(4), + dtmfcode5(5), + dtmfcode6(6), + dtmfcode7(7), + dtmfcode8(8), + dtmfcode9(9), + dtmfcodeStar(10), + dtmfcodeHash(11), + dtmfcodeA(12), + dtmfcodeB(13), + dtmfcodeC(14), + dtmfcodeD(15) +} + +PktcSubscriberSideSigProtocol::=TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION represents the Signaling + protocol being used for purposes such as caller id + or VMWI. + + A value of fsk(1) indicates Frequency Shift Keying + (FSK). + A value of dtmf(2) indicates Dual-Tone Multi-Frequency + (DTMF)." + SYNTAX INTEGER { + fsk(1), + dtmf(2) + } + +pktcSigMibObjects OBJECT IDENTIFIER ::= { pktcIetfSigMib 1 } +pktcSigDevObjects OBJECT IDENTIFIER ::= + + + + { pktcSigMibObjects 1 } +pktcSigEndPntConfigObjects OBJECT IDENTIFIER ::= + { pktcSigMibObjects 2 } +-- +-- The codec table (pktcSigDevCodecTable) defines all combinations +-- of codecs supported by the Multimedia Terminal Adapter (MTA). +-- +pktcSigDevCodecTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigDevCodecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table describes the MTA-supported codec types. An MTA + MUST populate this table with all possible combinations of + codecs it supports for simultaneous operation. For example, + an MTA with two endpoints may be designed with a particular + Digital Signal Processing (DSP) and memory architecture that + allows it to support the following fixed combinations of + codecs for simultaneous operation: + + Codec Type Maximum Number of Simultaneous Codecs + PCMA 3 + + PCMA 2 + PCMU 1 + + PCMA 1 + + PCMU 2 + + PCMU 3 + + PCMA 1 + G729 1 + + G729 2 + + PCMU 1 + G729 1 + + Based on this example, the entries in the codec table + would be: + + pktcSigDev pktcSigDev pktcSigDev + CodecComboIndex CodecType CodecMax + 1 pcma 3 + 2 pcma 2 + 2 pcmu 1 + + + + 3 pcma 1 + 3 pcmu 2 + 4 pcmu 3 + 5 pcma 1 + 5 g729 1 + 6 g729 2 + 7 pcmu 1 + 7 g729 1 + + An operator querying this table is able to determine all + possible codec combinations the MTA is capable of + simultaneously supporting. + + This table MUST NOT include non-voice codecs." + ::= { pktcSigDevObjects 1 } + +pktcSigDevCodecEntry OBJECT-TYPE + SYNTAX PktcSigDevCodecEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents the maximum number of active + connections with a particular codec the MTA is capable of + supporting. Each row is indexed by a composite key + consisting of a number enumerating the particular codec + combination and the codec type." + INDEX { pktcSigDevCodecComboIndex, pktcSigDevCodecType } + ::= { pktcSigDevCodecTable 1 } + +PktcSigDevCodecEntry ::= SEQUENCE { + pktcSigDevCodecComboIndex Unsigned32, + pktcSigDevCodecType PktcCodecType, + pktcSigDevCodecMax Unsigned32 + } + +pktcSigDevCodecComboIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The index value that enumerates a particular codec + combination in the pktcSigDevCodecTable." + ::= { pktcSigDevCodecEntry 1 } + +pktcSigDevCodecType OBJECT-TYPE + SYNTAX PktcCodecType + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + " A codec type supported by this MTA." + ::= { pktcSigDevCodecEntry 2 } + +pktcSigDevCodecMax OBJECT-TYPE + SYNTAX Unsigned32(1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The maximum number of simultaneous sessions of a + particular codec that the MTA can support." + ::= { pktcSigDevCodecEntry 3 } + +-- +-- These are the common signaling-related definitions that affect +-- the entire MTA device. +-- + +pktcSigDevEchoCancellation OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object specifies if the device is capable of echo + cancellation. The MTA MUST set this MIB object to a + value of true(1) if it is capable of echo + cancellation, and a value of false(2) if not." + ::= { pktcSigDevObjects 2 } + +pktcSigDevSilenceSuppression OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object specifies if the device is capable of + silence suppression (as a result of Voice Activity + Detection). The MTA MUST set this MIB object to a + value of true(1) if it is capable of silence + suppression, and a value of false(2) if not." +::= { pktcSigDevObjects 3 } + +pktcSigDevCidSigProtocol OBJECT-TYPE + SYNTAX PktcSubscriberSideSigProtocol + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure the subscriber-line + protocol used for signaling on-hook caller id information. + + + + Different countries define different caller id signaling + protocols to support caller identification. + + Setting this object at a value fsk(1) sets the subscriber + line protocol to be Frequency Shift Keying (FSK). + + Setting this object at a value dtmf(2) sets the subscriber + line protocol to be Dual-Tone Multi-Frequency (DTMF). + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { fsk } +::= { pktcSigDevObjects 4 } + +pktcSigDevR0Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 0 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 5 } + +pktcSigDevR1Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 1 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 6 } + +pktcSigDevR2Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 2 (a user-defined + field). + + + + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 7 } + +pktcSigDevR3Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 3 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 8 } + +pktcSigDevR4Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 4 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 9 } + +pktcSigDevR5Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 5 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 10 } + +pktcSigDevR6Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 6 (a user-defined + field). + + + + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 11 } + +pktcSigDevR7Cadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence 7 (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 12 } + +pktcSigDevRgCadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence rg (a user-defined + field). + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 13 } + +pktcSigDevRsCadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies ring cadence rs (a user-defined + field). The MTA MUST reject any attempt to make this object + repeatable. + + The value of this MIB object MUST NOT persist across MTA + reboots." + ::= { pktcSigDevObjects 14 } + +pktcSigDefCallSigDscp OBJECT-TYPE + SYNTAX Dscp -- RFC 3289: DIFFSERV-DSCP-TC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " The default value used in the IP header for setting the + Differentiated Services Code Point (DSCP) value for call + + + + signaling. + + The value of this MIB object MUST NOT persist across MTA + reboots." + DEFVAL { 0 } + ::= { pktcSigDevObjects 15 } + +pktcSigDefMediaStreamDscp OBJECT-TYPE + SYNTAX Dscp -- RFC 3289: DIFFSERV-DSCP-TC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object contains the default value used in the IP + header for setting the Differentiated Services Code Point + (DSCP) value for media stream packets. The MTA MUST NOT + update this object with the value supplied by the CMS in + the NCS messages (if present). Any currently active + connections are not affected by updates to this object. + When the value of this object is updated by SNMP, the MTA + MUST use the new value as a default starting only from + new connections. + + The value of this MIB object MUST NOT persist across MTA + reboots." + DEFVAL { 0 } + ::= { pktcSigDevObjects 16 } + +-- +-- pktcSigCapabilityTable - This table defines the valid signaling +-- types supported by this MTA. +-- + +pktcSigCapabilityTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table describes the signaling types supported by this + MTA." + ::= { pktcSigDevObjects 17 } + +pktcSigCapabilityEntry OBJECT-TYPE + SYNTAX PktcSigCapabilityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Entries in pktcMtaDevSigCapabilityTable - list of + supported signaling types, versions, and vendor extensions + + + + for this MTA. Each entry in the list provides for one + signaling type and version combination. If the device + supports multiple versions of the same signaling type, it + will require multiple entries." + INDEX { pktcSigCapabilityIndex } + ::= { pktcSigCapabilityTable 1 } + +PktcSigCapabilityEntry ::= SEQUENCE { + pktcSigCapabilityIndex Unsigned32, + pktcSigCapabilityType PktcSigType, + pktcSigCapabilityVersion SnmpAdminString, + pktcSigCapabilityVendorExt SnmpAdminString + } + +pktcSigCapabilityIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The index value that uniquely identifies an entry in the + pktcSigCapabilityTable." + ::= { pktcSigCapabilityEntry 1 } + +pktcSigCapabilityType OBJECT-TYPE + SYNTAX PktcSigType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object identifies the type of signaling used. This + value has to be associated with a single signaling + version." + ::= { pktcSigCapabilityEntry 2 } + +pktcSigCapabilityVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " Provides the version of the signaling type - reference + pktcSigCapabilityType. Examples would be 1.0 or 2.33 etc." + ::= { pktcSigCapabilityEntry 3 } + +pktcSigCapabilityVendorExt OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " The vendor extension allows vendors to provide a list of + + + + additional capabilities. + + The syntax for this MIB object in ABNF ([RFC5234]) is + specified to be zero or more occurrences of vendor + extensions, as follows: + + pktcSigCapabilityVendorExt = *(vendor-extension) + vendor-extension = (ext symbol alphanum) DQUOTE ; DQUOTE + ext = DQUOTE %x58 DQUOTE + symbol = (DQUOTE %x2D DQUOTE)/(DQUOTE %x2D DQUOTE) + alphanum = 1*6(ALPHA/DIGIT) + + " + ::= { pktcSigCapabilityEntry 4 } + +pktcSigDefNcsReceiveUdpPort OBJECT-TYPE + SYNTAX InetPortNumber (1025..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the MTA User Datagram Protocol (UDP) + receive port that is being used for NCS call signaling. + This object should only be changed by the configuration + file. + + Unless changed via configuration, this MIB object MUST + reflect a value of '2427'." + REFERENCE + "PacketCable NCS Specification" + ::= { pktcSigDevObjects 18 } + +pktcSigPowerRingFrequency OBJECT-TYPE + SYNTAX INTEGER { + f20Hz(1), + f25Hz(2), + f33Point33Hz(3), + f50Hz(4), + f15Hz(5), + f16Hz(6), + f22Hz(7), + f23Hz(8), + f45Hz(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object must only be provided via the configuration + file during the provisioning process. The power ring + + + + frequency is the frequency at which the sinusoidal voltage + must travel down the twisted pair to make terminal + equipment ring. Different countries define different + electrical characteristics to make terminal equipment + ring. + + The f20Hz setting corresponds to a power ring frequency + of 20 Hertz. The f25Hz setting corresponds to a power ring + frequency of 25 Hertz. The f33Point33Hz setting + corresponds to a power ring frequency of 33.33 Hertz. The + f50Hz setting corresponds to a power ring frequency of 50 + Hertz. The f15Hz setting corresponds to a power ring + frequency of 15 Hertz. The f16Hz setting corresponds to a + power ring frequency of 16 Hertz. The f22Hz setting + corresponds to a power ring frequency of 22 Hertz. The + f23Hz setting corresponds to a power ring frequency of 23 + Hertz. The f45Hz setting corresponds to a power ring + frequency of 45 Hertz." + REFERENCE + "ETSI-EN-300-001" + ::= { pktcSigDevObjects 19 } + +pktcSigPulseSignalTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigPulseSignalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The Pulse signal table defines the pulse signal operation. + There are nine types of international pulse signals, + with each signal having a set of provisionable parameters. + The values of the MIB objects in this table take effect + only if these parameters are not defined via signaling, in + which case, the latter determines the values of the + parameters. The MIB objects in this table do not persist + across MTA reboots." + REFERENCE + "ETSI-TS-101-909-4 Specification" + ::= { pktcSigDevObjects 20 } + +pktcSigPulseSignalEntry OBJECT-TYPE + SYNTAX PktcSigPulseSignalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This object defines the set of parameters associated with + each particular value of pktcSigPulseSignalType. Each + entry in the pktcSigPulseSignalTable is indexed by the + pktcSigPulseSignalType object. + + + + The conceptual rows MUST NOT persist across MTA reboots." + INDEX { pktcSigPulseSignalType } + ::= { pktcSigPulseSignalTable 1 } + +PktcSigPulseSignalEntry ::= SEQUENCE { + pktcSigPulseSignalType INTEGER, + pktcSigPulseSignalFrequency INTEGER, + pktcSigPulseSignalDbLevel TenthdBm, + pktcSigPulseSignalDuration Unsigned32, + pktcSigPulseSignalPulseInterval Unsigned32, + pktcSigPulseSignalRepeatCount Unsigned32 +} + +pktcSigPulseSignalType OBJECT-TYPE + SYNTAX INTEGER + { + initialRing(1), + pulseLoopClose(2), + pulseLoopOpen(3), + enableMeterPulse(4), + meterPulseBurst(5), + pulseNoBattery(6), + pulseNormalPolarity(7), + pulseReducedBattery(8), + pulseReversePolarity(9) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There are nine types of international pulse signals. These + signals are defined as follows: + initial ring + pulse loop close + pulse loop open + enable meter pulse + meter pulse burst + pulse no battery + pulse normal polarity + pulse reduced battery + pulse reverse polarity" + REFERENCE + "ETSI-EN-300-324-1 Specification" + + ::= { pktcSigPulseSignalEntry 1 } + +pktcSigPulseSignalFrequency OBJECT-TYPE + SYNTAX INTEGER { + twentyfive(1), + + + + twelvethousand(2), + sixteenthousand(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object is only applicable to the initialRing, + enableMeterPulse, and meterPulseBurst signal types. This + object identifies the frequency of the generated signal. + The following table defines the default values for this + object depending on signal type: + + pktcSigPulseSignalType Default + initialRing 25 + enableMeterPulse 16000 + meterPulseBurst 16000 + + The value of twentyfive MUST only be used for the + initialRing signal type. The values of twelvethousand and + sixteenthousand MUST only be used for enableMeterPulse and + meterPulseBurst signal types. An attempt to set this + object while the value of pktcSigPulseSignalType is not + initialRing, enableMeterPulse, or meterPulseBurst will + result in an 'inconsistentValue' error." + REFERENCE + "ETSI-EN-300-001 Specification" + ::= { pktcSigPulseSignalEntry 2} + +pktcSigPulseSignalDbLevel OBJECT-TYPE + SYNTAX TenthdBm (-350..0) + UNITS "1/10 of a dBm" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object is only applicable to the enableMeterPulse and + meterPulseBurst signal types. This is the decibel level + for each frequency at which tones could be generated at + the a and b terminals (TE connection point). An attempt to + set this object while the value of pktcSigPulseSignalType + is not enableMeterPulse or meterPulseBurst will result in + an 'inconsistentValue' error." + REFERENCE + "ETSI-EN-300-001 Specification" + + DEFVAL { -135 } + ::={pktcSigPulseSignalEntry 3 } + +pktcSigPulseSignalDuration OBJECT-TYPE + + + + SYNTAX Unsigned32 (0..5000) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the pulse duration for each + signal type. In addition, the MTA must accept the values + in the incremental steps specific for each signal type. + The following table defines the default values and the + incremental steps for this object depending on the signal + type: + + pktcSigPulseSignaltype Default (ms) Increment (ms) + initialRing 200 50 + pulseLoopClose 200 10 + pulseLoopOpen 200 10 + enableMeterPulse 150 10 + meterPulseBurst 150 10 + pulseNoBattery 200 10 + pulseNormalPolarity 200 10 + pulseReducedBattery 200 10 + pulseReversePolarity 200 10 + + An attempt to set this object to a value that does not + fall on one of the increment boundaries, or on the wrong + increment boundary for the specific signal type, will + result in an 'inconsistentValue' error." + REFERENCE + "ETSI-EN-300-324-1 Specification" + ::= {pktcSigPulseSignalEntry 4 } + +pktcSigPulseSignalPulseInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..5000) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the repeat interval, or the period, + for each signal type. In addition, the MTA must accept + the values in the incremental steps specific for each + signal type. The following table defines the default + values and the incremental steps for this object, depending + on the signal type: + + pktcSigPulseSignaltype Default (ms) Increment (ms) + initialRing 200 50 + pulseLoopClose 1000 10 + pulseLoopOpen 1000 10 + + + + enableMeterPulse 1000 10 + meterPulseBurst 1000 10 + pulseNoBattery 1000 10 + pulseNormalPolarity 1000 10 + pulseReducedBattery 1000 10 + pulseReversePolarity 1000 10 + + An attempt to set this object to a value that does not + fall on one of the increment boundaries, or on the wrong + increment boundary for the specific signal type, will + result in an 'inconsistentValue' error." + REFERENCE + "ETSI-EN-300-324-1 Specification" + ::= { pktcSigPulseSignalEntry 5} + +pktcSigPulseSignalRepeatCount OBJECT-TYPE + SYNTAX Unsigned32 (1..50) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies how many times to repeat a pulse. + This object is not used by the enableMeterPulse signal + type, and in that case, the value is irrelevant. The + following table defines the default values and the valid + ranges for this object, depending on the signal type: + + pktcSigPulseSignaltype Default Range + + initialRing 1 1-5 + pulseLoopClose 1 1-50 + pulseLoopOpen 1 1-50 + enableMeterPulse (any value)(but not used) + meterPulseBurst 1 1-50 + pulseNoBattery 1 1-50 + pulseNormalPolarity 1 1-50 + pulseReducedBattery 1 1-50 + pulseReversePolarity 1 1-50 + + An attempt to set this object to a value that does not + fall within the range for the specific + signal type will result in an 'inconsistentValue' error." + ::={ pktcSigPulseSignalEntry 6 } + +pktcSigDevCidMode OBJECT-TYPE + SYNTAX INTEGER { + duringRingingETS(1), + dtAsETS(2), + rpAsETS(3), + + + + lrAsETS(4), + lrETS(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " For on-hook caller id, pktcSigDevCidMode selects the method + for representing and signaling caller identification. For + the duringRingingETS method, the Frequency Shift Keying + (FSK) or the Dual-Tone Multi-Frequency (DTMF) containing + the caller identification information is sent between the + first and second ring pattern. + + For the dtAsETS,rpAsETS, lrAsETS and lrETS + methods, the FSK or DTMF containing the caller id + information is sent before the first ring pattern. + + For the dtAsETS method, the FSK or DTMF is sent after the + Dual Tone Alert Signal. For the rpAsETS method, the FSK or + DTMF is sent after a Ring Pulse. + + For the lrAsETS method, the Line Reversal occurs first, + then the Dual Tone Alert Signal, and, finally, the FSK or + DTMF is sent. + + For the lrETS method, the Line Reversal occurs first, + then the FSK or DTMF is sent. + + The value of this MIB object MUST NOT persist across MTA + reboots." + + DEFVAL { rpAsETS} + ::= {pktcSigDevObjects 21 } + +pktcSigDevCidAfterRing OBJECT-TYPE + SYNTAX Unsigned32 (0|50..2000) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of first + ringing pattern and the start of the transmission of the + FSK or DTMF containing the caller id information. It is + only used when pktcSigDevCidMode is set to a value of + 'duringRingingETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + + + + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS 550 ms + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS any value (not used) + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevCidMode is not duringringingETS will result in + an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 550 } + ::= {pktcSigDevObjects 22 } + +pktcSigDevCidAfterDTAS OBJECT-TYPE + SYNTAX Unsigned32 (0|45..500) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Dual Tone Alert Signal (DT-AS) and the start of the + transmission of the FSK or DTMF containing the caller id + information. This object is only used when + pktcSigDevCidMode is set to a value of 'dtAsETS' or + 'lrAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + + duringringingETS any value (not used) + dtAsETS 50 ms + rpAsETS any value (not used) + lrAsETS 50 ms + lrETS any value (not used) + + An attempt to set this object while the value of + + + + pktcSigDevCidMode is not 'dtAsETS' or 'lrAsETS' will + result in an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 50 } + ::= {pktcSigDevObjects 23 } + +pktcSigDevCidAfterRPAS OBJECT-TYPE + SYNTAX Unsigned32 (0|500..800) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Ring Pulse Alert Signal (RP-AS) and the start of the + transmission of the FSK or DTMF containing the caller id + information. This MIB object is only used when + pktcSigDevCidMode is set to a value of 'rpAsETS'. + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS 650 ms + lrAsETS any value (not used) + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevCidMode is not 'rpAsETS' will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 650 } + ::= {pktcSigDevObjects 24 } + +pktcSigDevRingAfterCID OBJECT-TYPE + SYNTAX Unsigned32 (0|50..500) + UNITS "Milliseconds" + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + complete transmission of the FSK or DTMF containing the + caller id information and the start of the first ring + pattern. It is only used when pktcSigDevCidMode is + set to a value of 'dtAsETS', 'rpAsETS', 'lrAsETS' or + 'lrETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS 250 ms + rpAsETS 250 ms + lrAsETS 250 ms + lrETS 250 ms + + An attempt to set this object while the value of + pktcSigDevCidMode is not 'dtAsETS', 'rpAsETS', + 'lrAsETS', or 'lrETS' will result in an 'inconsistent + value' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 250 } + ::= {pktcSigDevObjects 25 } + +pktcSigDevCidDTASAfterLR OBJECT-TYPE + SYNTAX Unsigned32 (50..655) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Line Reversal and the start of the Dual Tone Alert Signal + (DT-AS). This object is only used when pktcSigDevCidMode + is set to a value of 'lrAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + + + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS 250 ms + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevCidMode is not lrAsETS will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 250 } + + ::= {pktcSigDevObjects 26 } + +pktcSigDevVmwiMode OBJECT-TYPE + SYNTAX INTEGER { + dtAsETS(1), + rpAsETS(2), + lrAsETS(3), + osi(4), + lrETS(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " For visual message waiting indicator (VMWI), + pktcSigDevVmwiMode selects the alerting signal method. For + the dtAsETS, rpAsETS, lrAsETS, osi, and lrETS methods, + the FSK containing the VMWI information is sent after an + alerting signal. + + For the dtAsETS method, the FSK, or DTMF + is sent after the Dual Tone Alert Signal. For the rpAsETS + method, the FSK or DTMF is sent after a Ring Pulse. + + For the lrAsETS method, the Line Reversal occurs first, + then the Dual Tone Alert Signal, and, finally, the FSK or + DTMF is sent. + + For the OSI method, the FSK or DTMF is sent after the Open + Switching Interval. + + + + + For the lrETS method, the Line Reversal occurs first, + then the FSK or DTMF is sent. + + The value of this MIB object MUST NOT persist across MTA + reboots." + + DEFVAL { rpAsETS } + ::= {pktcSigDevObjects 27 } + +pktcSigDevVmwiAfterDTAS OBJECT-TYPE + SYNTAX Unsigned32 (0|45..500) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Dual Tone Alert Signal (DT-AS) and the start of the + transmission of the FSK or DTMF containing the VMWI + information. + + This object is only used when pktcSigDevVmwiMode is + set to a value of 'dtAsETS' or 'lrAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevVmwiMode), and MUST be followed: + + Value of pktcSigDevVmwiMode Default value + + dtAsETS 50 ms + rpAsETS any value (not used) + lrAsETS 50 ms + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevVmwiMode is not 'dtAsETS' or 'lrAsETS' will + result in an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 50 } + ::= {pktcSigDevObjects 28 } + + +pktcSigDevVmwiAfterRPAS OBJECT-TYPE + SYNTAX Unsigned32 (0|500..800) + + + + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Ring Pulse Alert Signal (RP-AS) and the start of the + transmission of the FSK or DTMF containing the VMWI + information. + + This object is only used when pktcSigDevVmwiMode is + set to a value of 'rpAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevVmwiMode), and MUST be followed: + + Value of pktcSigDevVmwiMode Default value + + dtAsETS any value (not used) + rpAsETS 650 ms + lrAsETS any value (not used) + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevVmwiMode is not 'rpAsETS' will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 650 } + ::= {pktcSigDevObjects 29 } + +pktcSigDevVmwiDTASAfterLR OBJECT-TYPE + SYNTAX Unsigned32 (0|50..655) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the delay between the end of the + Line Reversal and the start of the Dual Tone Alert Signal + (DT-AS) for VMWI information. This object is only used + when pktcSigDevVmwiMode is set to a value of 'lrAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevVmwiMode), and MUST be followed: + + + + + Value of pktcSigDevVmwiMode Default value + + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS 250 ms + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevVmwiMode is not 'lrAsETS' will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification" + DEFVAL { 250 } + ::= {pktcSigDevObjects 30 } + +pktcSigDevRingCadenceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigDevRingCadenceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Cadence rings are defined by the telco governing + body for each country. The MTA must be able to support + various ranges of cadence patterns and cadence periods. + The MTA will be able to support country-specific + provisioning of the cadence and idle period. Each + cadence pattern will be assigned a unique value ranging + from 0-127 (inclusive) corresponding to the value of x, + where x is the value sent in the cadence ringing (cr) + signal cr(x), requested per the appropriate NCS + message, and defined in the E package. The MTA will derive + the cadence periods from the ring cadence table entry, as + provisioned by the customer. The MTA is allowed to provide + appropriate default values for each of the ring cadences. + This table only needs to be supported when the MTA + implements the E package." + REFERENCE + "ETSI-TS-101-909-4 Specification" + ::= { pktcSigDevObjects 31 } + +pktcSigDevRingCadenceEntry OBJECT-TYPE + SYNTAX PktcSigDevRingCadenceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + " Each entry in this row corresponds to a ring cadence + that is being supported by the device. The conceptual + rows MUST NOT persist across MTA reboots." + INDEX { pktcSigDevRingCadenceIndex } + ::= { pktcSigDevRingCadenceTable 1 } + +PktcSigDevRingCadenceEntry ::= SEQUENCE { + pktcSigDevRingCadenceIndex Unsigned32, + pktcSigDevRingCadence PktcRingCadence + } + +pktcSigDevRingCadenceIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " A unique value ranging from 0 to 127 that corresponds to the + value sent by the LE based on country-specific cadences, + one row per cadence cycle. In any given system + implementation for a particular country, it is anticipated + that a small number of ring cadences will be in use. Thus, + this table most likely will not be populated to its full + size." + ::= { pktcSigDevRingCadenceEntry 1 } + +pktcSigDevRingCadence OBJECT-TYPE + SYNTAX PktcRingCadence + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This is the Ring Cadence." + ::= { pktcSigDevRingCadenceEntry 2 } + + +pktcSigDevToneTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigDevToneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The Tone Table defines the composition of tones and + various tone operations. + + The definition of the tones callWaiting1 through + callWaiting4 in this table MUST only contain the + audible tone itself; the delay between tones or the value + of the tone repeat count are not applicable for the call + waiting tones. + + + + + The delay between tones or the repeat count is controlled + by the objects pktcSigEndPntConfigCallWaitingDelay and + pktcSigEndPntConfigCallWaitingMaxRep. If the + pktcSigDevToneType is set to either of the values + callWaiting1, callWaiting2, callWaiting3, or callWaiting4, + then the value of the pktcSigDevToneWholeToneRepeatCount + object indicates that the particular frequency group is + applicable, as a repeatable part of the tone, based on the + value of the MIB object + pktcSigDevToneWholeToneRepeatCount. + + The MTA MUST make sure that, after the provisioning + cycle, the table is fully populated (i.e., for each + possible index, an entry MUST be defined) using + reasonable defaults for each row that was not defined + by the provisioning information delivered via MTA + Configuration. + + The frequency composition of each tone is defined by the + pktcSigDevMultiFreqToneTable. For each tone type defined + in pktcSigDevToneTable, the MTA MUST populate at least + one entry in the pktcSigDevMultiFreqToneTable. + + For each particular value of pktcSigDevToneType, the + pktcSigDevToneTable table can define non-repeating and + repeating groups of the frequencies defined by the + pktcSigDevMultiFreqToneTable, such that each group is + represented by the set of the consecutive rows + (frequency group) in the pktcSigDevMultiFreqToneTable. + + Objects in this table do not persist across MTA reboots. + For tones with multiple frequencies refer to the MIB table + pktcSigDevMultiFreqToneTable." + REFERENCE + "PacketCable NCS Specification, ETSI-TS-101-909-4 + Specification." + ::= { pktcSigDevObjects 32 } + +pktcSigDevToneEntry OBJECT-TYPE + SYNTAX PktcSigDevToneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The different tone types that can be provisioned based on + country-specific needs. + + Each entry contains the tone generation parameters for + a specific frequency group of the specific Tone Type. + + + + The different parameters can be provisioned via MTA + configuration based on country specific needs. + An MTA MUST populate all entries of this table for each + tone type." + INDEX { pktcSigDevToneType, pktcSigDevToneFreqGroup } + ::= { pktcSigDevToneTable 1 } + +PktcSigDevToneEntry ::= SEQUENCE { + pktcSigDevToneType INTEGER, + pktcSigDevToneFreqGroup Unsigned32, + pktcSigDevToneFreqCounter Unsigned32, + pktcSigDevToneWholeToneRepeatCount Unsigned32, + pktcSigDevToneSteady TruthValue + } + +pktcSigDevToneType OBJECT-TYPE + SYNTAX INTEGER { + busy(1), + confirmation(2), + dial(3), + messageWaiting(4), + offHookWarning(5), + ringBack(6), + reOrder(7), + stutterdial(8), + callWaiting1(9), + callWaiting2(10), + callWaiting3(11), + callWaiting4(12), + alertingSignal(13), + specialDial(14), + specialInfo(15), + release(16), + congestion(17), + userDefined1(18), + userDefined2(19), + userDefined3(20), + userDefined4(21) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value that will correspond to the different + tone types. These tones can be provisioned based on + country-specific needs. This object defines the type + of tone being accessed. + + The alertingSignal, specialDial, specialInfo, release, + + + + congestion, userDefined1, userDefined2, userDefined3, + and userDefined4 tone types are used in + the E line package." + ::= { pktcSigDevToneEntry 1 } + +pktcSigDevToneFreqGroup OBJECT-TYPE + SYNTAX Unsigned32(1..4) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This MIB object represents the Tone Sequence reference + of a multi-sequence tone." + ::={ pktcSigDevToneEntry 2} + +pktcSigDevToneFreqCounter OBJECT-TYPE + SYNTAX Unsigned32(1..8) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the number of consecutive + multi-frequency tones for the particular tone type in + the multi-frequency table (pktcSigDevMultiFreqToneTable). + + Such a sequence of the consecutive multi-frequency tones + forms the tone group for the particular tone type in the + pktcSigDevToneTable." + ::={ pktcSigDevToneEntry 3} + +pktcSigDevToneWholeToneRepeatCount OBJECT-TYPE + SYNTAX Unsigned32 (0..5000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the repeat count, which signifies how many times + to repeat the entire on-off cadence sequence. Setting this + object may result in a cadence duration longer or shorter + than the overall signal duration specified by the time out + (TO) object for a particular signal. If the repeat count + results in a longer tone duration than the signal duration + specified by the TO, the tone duration defined by the + TO object for a particular signal always represents + the overall signal duration for a tone. In this case, the + tone duration repeat count will not be fully exercised, and + the desired tone duration will be truncated per the TO + setting. If the repeat count results in a shorter tone + duration than the signal duration specified by the TO, the + tone duration defined by the repeat count takes precedence + over the TO and will end the signal event. In this case, + + + + the TO represents a time not to be exceeded for the signal. + It is recommended to ensure proper telephony signaling so that + the TO duration setting should always be longer than the + desired repeat count-time duration." + ::={ pktcSigDevToneEntry 4 } + +pktcSigDevToneSteady OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the steady tone status. A value + of 'true(1)' indicates that the steady tone is applied, and + a value of 'false(2)' indicates otherwise. + Devices must play out the on-off cadence sequence for + the number of times indicated by the MIB object + 'pktcSigDevToneWholeToneRepeatCount' prior to applying the + last tone steadily, indefinitely. If the MIB table + 'pktcSigDevToneTable' contains multiple rows with this + Object set to a value of 'true(1)', the steady tone is + applied to the last repeating frequency group of the tone. + + Setting this MIB object may result in a tone duration that is + longer or shorter than the overall signal duration + specified by the time out (TO) MIB object for a particular + signal. If the repeat count results in a longer tone + duration than the signal duration specified by the TO, the + tone duration defined by the TO object for a particular + signal always represents the overall signal duration for a + tone. In this case, the tone duration repeat count will + not be fully exercised, and the desired tone duration will + be truncated per the TO setting. If the repeat count + results in a shorter tone duration than the signal duration + specified by the TO, the tone duration defined by the + repeat count takes precedence over the TO and will end the + signal event. In this case, the TO represents a time not to + be exceeded for the signal. + + It is recommended to ensure proper telephony signaling that + The TO duration setting should always be longer than the + desired repeat count-time duration, plus the desired maximum + steady tone period." + ::={ pktcSigDevToneEntry 5 } + + pktcSigDevMultiFreqToneTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigDevMultiFreqToneEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + " This MIB table defines the characteristics of tones + with multiple frequencies. The constraints imposed + on the tones by the MIB table pktcSigDevToneTable + need to be considered for MIB objects in this table + as well. + + The MTA MUST populate the corresponding row(s) + of the pktcSigDevMultiFreqToneTable for each tone + defined in the pktcSigDevToneTable. + + The contents of the table may be provisioned via + MTA configuration." + REFERENCE + "PacketCable NCS Specification, ETSI-TS-101-909-4 + Specification." + ::= { pktcSigDevObjects 33 } + + pktcSigDevMultiFreqToneEntry OBJECT-TYPE + SYNTAX PktcSigDevMultiFreqToneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " The different tone types with multiple frequencies + that can be provisioned based on country-specific + needs." + INDEX {pktcSigDevToneType, pktcSigDevToneNumber} + ::= { pktcSigDevMultiFreqToneTable 1 } + + PktcSigDevMultiFreqToneEntry ::= SEQUENCE { + pktcSigDevToneNumber Unsigned32, + pktcSigDevToneFirstFreqValue Unsigned32, + pktcSigDevToneSecondFreqValue Unsigned32, + pktcSigDevToneThirdFreqValue Unsigned32, + pktcSigDevToneFourthFreqValue Unsigned32, + pktcSigDevToneFreqMode INTEGER, + pktcSigDevToneFreqAmpModePrtg Unsigned32, + pktcSigDevToneDbLevel TenthdBm, + pktcSigDevToneFreqOnDuration Unsigned32, + pktcSigDevToneFreqOffDuration Unsigned32, + pktcSigDevToneFreqRepeatCount Unsigned32 + } + + pktcSigDevToneNumber OBJECT-TYPE + SYNTAX Unsigned32(1..8) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This MIB object represents the frequency reference + of a multi-frequency tone." + ::={ pktcSigDevMultiFreqToneEntry 1} + + pktcSigDevToneFirstFreqValue OBJECT-TYPE + SYNTAX Unsigned32(0..4000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the value of the first + frequency of a tone type. A value of zero implies + absence of the referenced frequency." + ::={ pktcSigDevMultiFreqToneEntry 2} + + pktcSigDevToneSecondFreqValue OBJECT-TYPE + SYNTAX Unsigned32(0..4000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the value of the second + frequency of a tone type. A value of zero implies + absence of the referenced frequency." + ::={ pktcSigDevMultiFreqToneEntry 3} + + pktcSigDevToneThirdFreqValue OBJECT-TYPE + SYNTAX Unsigned32(0..4000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the value of the third + frequency of a tone type. A value of zero implies + absence of the referenced frequency." + ::={ pktcSigDevMultiFreqToneEntry 4} + + pktcSigDevToneFourthFreqValue OBJECT-TYPE + SYNTAX Unsigned32(0..4000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the value of the fourth + frequency of a tone type. A value of zero implies + absence of the referenced frequency." + ::={ pktcSigDevMultiFreqToneEntry 5} + + pktcSigDevToneFreqMode OBJECT-TYPE + SYNTAX INTEGER { + firstModulatedBySecond(1), + summation(2) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object provides directive on the + modulation or summation of the frequencies + involved in the tone. + + It is to be noted that while summation can + be done without any constraint on the number + of frequencies, the modulation (amplitude) + holds good only when there are two frequencies + (first and second). + + Thus: + - If the mode is set to a value of + 'firstModulatedBySecond(1)', the first frequency + MUST be modulated by the second, and the remaining + frequencies (third and fourth) ignored. The + percentage of amplitude modulation to be applied + is defined by the MIB object + pktcSigDevToneFreqAmpModePrtg. + + - If the mode is set to a value of + 'summation(2)', all the frequencies MUST be + summed without any modulation. + " + ::={ pktcSigDevMultiFreqToneEntry 6} + + pktcSigDevToneFreqAmpModePrtg OBJECT-TYPE + SYNTAX Unsigned32(0..100) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the percentage of amplitude + modulation applied to the second frequency + when the MIB object pktcSigDevToneFreqMode is + set to a value of 'firstModulatedBySecond (1)'. + + If the MIB object pktcSigDevToneFreqMode is set to + value of 'summation (2)', then this MIB object MUST be + ignored." + ::={ pktcSigDevMultiFreqToneEntry 7} + + pktcSigDevToneDbLevel OBJECT-TYPE + SYNTAX TenthdBm (-250..-110) + UNITS "1/10 of a dBm" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This MIB object contains the decibel level for each + analog signal (tone) that is locally generated + (versus in-band supervisory tones) and sourced to + the a-b terminals (TE connection point). Each tone + in itself may consist of multiple frequencies, as + defined by the MIB table pktcSigDevMultiFreqToneTable. + + This MIB object reflects the desired level at + the Telco (POTS) a-b (T/R) terminals, including the + effect of any MTA receiver gain (loss). This is required + so that locally generated tones are consistent with + remotely generated in-band tones at the a-b terminals, + consistent with user expectations. + + This MIB object must be set for each tone. + When tones are formed by combining multi-frequencies, + the level of each frequency shall be set so as to result + in the tone level specified in this object at the a-b + (T/R) terminals. + + The wide range of levels for this Object is required + to provide signal-generator levels across the wide + range of gains (losses) -- but does not imply the entire + range is to be achievable given the range of gains (losses) + in the MTA." + DEFVAL { -120 } + ::={ pktcSigDevMultiFreqToneEntry 8} + + pktcSigDevToneFreqOnDuration OBJECT-TYPE + SYNTAX Unsigned32(0..5000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the duration for which the + frequency reference corresponding to the tone type + is turned on." + ::={ pktcSigDevMultiFreqToneEntry 9} + + pktcSigDevToneFreqOffDuration OBJECT-TYPE + SYNTAX Unsigned32(0..5000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object represents the duration for which the + + + + frequency reference corresponding to the tone type + is turned off." + ::={ pktcSigDevMultiFreqToneEntry 10} + + pktcSigDevToneFreqRepeatCount OBJECT-TYPE + SYNTAX Unsigned32(0..5000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This MIB object indicates the number of times + to repeat the cadence cycle represented by the + on/off durations (refer to the MIB objects + pktcSigDevToneFreqOnDuration and + pktcSigDevToneFreqOffDuration). + + Setting this object may result in a tone duration that is + longer or shorter than the overall signal duration + specified by the time out (TO) object for the + corresponding tone type. If the value of this MIB + Object indicates a longer duration than that + specified by the TO, the latter overrules the former, + and the desired tone duration will be truncated according + to the TO. + + However, if the repeat count results in a shorter + tone duration than the signal duration specified by + the TO, the tone duration defined by the repeat count + takes precedence over the TO and will end the signal + event. In this case, the TO represents a time not to + be exceeded for the signal. It is recommended, to + ensure proper telephony signaling, that the TO + duration setting should always be longer than the + desired repeat count-time duration. A value of zero + means the tone sequence is to be played once but not + repeated." + ::={ pktcSigDevMultiFreqToneEntry 11} + + pktcSigDevCidDelayAfterLR OBJECT-TYPE + SYNTAX Unsigned32 (300..800) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the delay between the end of the + Line Reversal and the start of the FSK or DTMF signal. + This MIB object is used only when pktcSigDevCidMode is + set to a value of 'lrETS'. This timing has a range of + 300 to 800 ms. + + + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS any value (not used) + lrETS 400 + + An attempt to set this object while the value of + pktcSigDevCidMode is not set to a value of 'lrETS' will + result in an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + DEFVAL { 400 } + ::= {pktcSigDevObjects 34 } + + pktcSigDevCidDtmfStartCode OBJECT-TYPE + SYNTAX DtmfCode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies optional start codes used when + the MIB object pktcSigDevCidSigProtocol is set + to a value of 'dtmf(2)'. + + Different countries define different caller id signaling + codes to support caller identification. When Dual-Tone + Multi-Frequency (DTMF) is used, the caller id digits are + preceded by a 'start code' digit, followed by the digit + transmission sequence ... (where Sx represents + the digits 0-9), and terminated by the 'end code' digit. + + For example, + ... ... ... . + The start code for calling number delivery may be DTMF + 'A' or 'D'. The start code for redirecting a number may be + DTMF 'D'. The DTMF code 'B' may be sent by the network + as a start code for the transfer of information values, + through which special events can be indicated to the + user. In some countries, the '*' or '#' may be used + instead of 'A', 'B', 'C', or 'D'. + + The value of this MIB object MUST NOT persist across MTA + + + + reboots." + REFERENCE + "ETSI-EN-300-659-1 specification" + DEFVAL {dtmfcodeA} + ::= { pktcSigDevObjects 35 } + + pktcSigDevCidDtmfEndCode OBJECT-TYPE + SYNTAX DtmfCode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies optional end codes used when the + pktcSigDevCidSigProtocol is set to a value of + 'dtmf(2)'. + + Different countries define different caller id signaling + protocols to support caller identification. When + Dual-Tone Multi-Frequency (DTMF) is used, the caller id + digits are preceded by a 'start code' digit, followed by + the digit transmission sequence ... (where Sx + represents the digits 0-9), and terminated by the 'end + code' digit. + + For example, + ... ... ... . + + The DTMF code 'C' may be sent by the network as an + end code for the transfer of information values, through + which special events can be indicated to the user. In + some countries, the '*' or '#' may be used instead of + 'A', 'B', 'C', or 'D'. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 specification" + DEFVAL {dtmfcodeC} + ::= { pktcSigDevObjects 36 } + + pktcSigDevVmwiSigProtocol OBJECT-TYPE + SYNTAX PktcSubscriberSideSigProtocol + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the subscriber line protocol used + for signaling the information on Visual Message Waiting + Indicator (VMWI). Different countries define different + VMWI signaling protocols to support VMWI service. + + + + Frequency shift keying (FSK) is most commonly used. + DTMF is an alternative. + + The value of this MIB object MUST NOT persist across MTA + reboots." + DEFVAL { fsk } + ::= { pktcSigDevObjects 37 } + + pktcSigDevVmwiDelayAfterLR OBJECT-TYPE + SYNTAX Unsigned32 (0|300..800) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the delay between the end of the + Line Reversal and the start of the FSK or DTMF signal. + This object is only used when pktcSigDevVmwiMode is + set to a value of 'lrETS'. + This timing has a range of 300 to 800 ms. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevVmwiMode), and MUST be followed: + + Value of pktcSigDevVmwiMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS any value (not used) + lrAsETS any value (not used) + lrETS 400 + + An attempt to set this object while the value of + pktcSigDevVmwiMode is not 'lrETS' will result in an + 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + + DEFVAL {400} + ::= {pktcSigDevObjects 38 } + + pktcSigDevVmwiDtmfStartCode OBJECT-TYPE + SYNTAX DtmfCode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies optional start codes used when + + + + the pktcSigDevVmwiSigProtocol is set to a value of + 'dtmf(2)'. Different countries define different On Hook + Data Transmission Protocol signaling codes to support + VMWI. + + When Dual-Tone Multi-Frequency (DTMF) is used, the VMWI + digits are preceded by a 'start code' digit, followed + by the digit transmission sequence ... (where + Sx represents the digits 0-9), and terminated by the 'end + code' digit. + + For example, + ... ... ... . + + The start code for redirecting VMWI may be DTMF 'D' + The DTMF code 'B' may be sent by the network as a start + code for the transfer of information values, through + which special events can be indicated to the user. In + some countries, the '*' or '#' may be used instead of + 'A', 'B', 'C', or 'D'. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 specification" + DEFVAL {dtmfcodeA} + ::= { pktcSigDevObjects 39 } + + pktcSigDevVmwiDtmfEndCode OBJECT-TYPE + SYNTAX DtmfCode + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies an optional end code used when the + pktcSigDevVmwiSigProtocol is set to a value of + 'dtmf(2)'. Different countries define different on-hook + Data Transmission Protocol signaling codes to support + VMWI. + + When Dual-Tone Multi-Frequency (DTMF) is used, the VMWI + digits are preceded by a 'start code' digit, followed + by the digit transmission sequence ... (where + Sx represents the digits 0-9), and terminated by the 'end + code' digit. + + For example, + ... ... ... . + + + + + The DTMF code 'C' may be sent by the network as an end code + for the transfer of information values, through which + special events can be indicated to the user. In some + countries, the '*' or '#' may be used instead of 'A', + 'B', 'C', or 'D'. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 specification" + DEFVAL {dtmfcodeC} + ::= { pktcSigDevObjects 40 } + +pktcSigDevrpAsDtsDuration OBJECT-TYPE + SYNTAX Unsigned32 (0|200..500) + UNITS "Milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + " This object specifies the duration of the rpASDTS ring + pulse prior to the start of the transmission of the + FSK or DTMF containing the caller id information. It is + only used when pktcSigDevCidMode is set to a value of + 'rpAsETS'. + + The following table defines the default values + for this MIB object, depending on the signal type + (pktcSigDevCidMode), and MUST be followed: + + Value of pktcSigDevCidMode Default value + + duringringingETS any value (not used) + dtAsETS any value (not used) + rpAsETS 250 + lrAsETS any value (not used) + lrETS any value (not used) + + An attempt to set this object while the value of + pktcSigDevCidMode is not 'rpAsETS' will result in + an 'inconsistentValue' error. + + The value of this MIB object MUST NOT persist across MTA + reboots." + REFERENCE + "ETSI-EN-300-659-1 Specification and Belgacom + BGC_D_48_9811_30_09_EDOC version 3.3" + DEFVAL { 250 } + ::= {pktcSigDevObjects 41 } + + + + +-- +-- The Endpoint Config Table is used to define attributes that +-- are specific to connection EndPoints. +-- + +pktcSigEndPntConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PktcSigEndPntConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " This table describes the information pertaining to each + endpoint of the MTA. All entries in this table represent + the provisioned endpoints provisioned with the information + required by the MTA to maintain the NCS protocol + communication with the CMS. Each endpoint can be assigned + to its own CMS. If the specific endpoint does not have + the corresponding CMS information in this table, the + endpoint is considered as not provisioned with voice + services. Objects in this table do not persist across + MTA reboots." + ::= { pktcSigEndPntConfigObjects 1 } + +pktcSigEndPntConfigEntry OBJECT-TYPE + SYNTAX PktcSigEndPntConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in the pktcSigEndPntConfigTable represents + required signaling parameters for the specific endpoint + provisioned with voice services. The conceptual rows MUST + NOT persist across MTA reboots." + INDEX { ifIndex } + ::= { pktcSigEndPntConfigTable 1 } + +PktcSigEndPntConfigEntry ::= SEQUENCE { + pktcSigEndPntConfigCallAgentId SnmpAdminString, + pktcSigEndPntConfigCallAgentUdpPort InetPortNumber, + pktcSigEndPntConfigPartialDialTO Unsigned32, + pktcSigEndPntConfigCriticalDialTO Unsigned32, + pktcSigEndPntConfigBusyToneTO Unsigned32, + pktcSigEndPntConfigDialToneTO Unsigned32, + pktcSigEndPntConfigMessageWaitingTO Unsigned32, + pktcSigEndPntConfigOffHookWarnToneTO Unsigned32, + pktcSigEndPntConfigRingingTO Unsigned32, + pktcSigEndPntConfigRingBackTO Unsigned32, + pktcSigEndPntConfigReorderToneTO Unsigned32, + pktcSigEndPntConfigStutterDialToneTO Unsigned32, + + + + pktcSigEndPntConfigTSMax Unsigned32, + pktcSigEndPntConfigMax1 Unsigned32, + pktcSigEndPntConfigMax2 Unsigned32, + pktcSigEndPntConfigMax1QEnable TruthValue, + pktcSigEndPntConfigMax2QEnable TruthValue, + pktcSigEndPntConfigMWD Unsigned32, + pktcSigEndPntConfigTdinit Unsigned32, + pktcSigEndPntConfigTdmin Unsigned32, + pktcSigEndPntConfigTdmax Unsigned32, + pktcSigEndPntConfigRtoMax Unsigned32, + pktcSigEndPntConfigRtoInit Unsigned32, + pktcSigEndPntConfigLongDurationKeepAlive Unsigned32, + pktcSigEndPntConfigThist Unsigned32, + pktcSigEndPntConfigStatus RowStatus, + pktcSigEndPntConfigCallWaitingMaxRep Unsigned32, + pktcSigEndPntConfigCallWaitingDelay Unsigned32, + pktcSigEndPntStatusCallIpAddressType InetAddressType, + pktcSigEndPntStatusCallIpAddress InetAddress, + pktcSigEndPntStatusError INTEGER, + pktcSigEndPntConfigMinHookFlash Unsigned32, + pktcSigEndPntConfigMaxHookFlash Unsigned32, + pktcSigEndPntConfigPulseDialInterdigitTime Unsigned32, + pktcSigEndPntConfigPulseDialMinMakeTime Unsigned32, + pktcSigEndPntConfigPulseDialMaxMakeTime Unsigned32, + pktcSigEndPntConfigPulseDialMinBreakTime Unsigned32, + pktcSigEndPntConfigPulseDialMaxBreakTime Unsigned32 + } + +pktcSigEndPntConfigCallAgentId OBJECT-TYPE + SYNTAX SnmpAdminString(SIZE (3..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains a string indicating the call agent + name (e.g., ca@example.com). The call agent name, after + the character '@', MUST be a fully qualified domain name + (FQDN) and MUST have a corresponding pktcMtaDevCmsFqdn + entry in the pktcMtaDevCmsTable. The object + pktcMtaDevCmsFqdn is defined in the PacketCable MIBMTA + Specification. For each particular endpoint, the MTA MUST + use the current value of this object to communicate with + the corresponding CMS. The MTA MUST update this object + with the value of the 'Notified Entity' parameter of the + NCS message. Because of the high importance of this object + to the ability of the MTA to maintain reliable NCS + communication with the CMS, it is highly recommended not + to change this object's value using SNMP during normal + operation." + + + + ::= { pktcSigEndPntConfigEntry 1 } + +pktcSigEndPntConfigCallAgentUdpPort OBJECT-TYPE + SYNTAX InetPortNumber (1025..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the current value of the User + Datagram Protocol (UDP) receive port on which the + call agent will receive NCS from the endpoint. + For each particular endpoint, the MTA MUST use the current + value of this object to communicate with the corresponding + CMS. The MTA MUST update this object with the value of the + 'Notified Entity' parameter of the NCS message. If the + Notified Entity parameter does not contain a CallAgent + port, the MTA MUST update this object with the default + value of 2727. Because of the high importance of this + object to the ability of the MTA to maintain reliable NCS + communication with the CMS, it is highly recommended not + to change this object's value using SNMP during normal + operation." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 2727 } + ::= { pktcSigEndPntConfigEntry 2 } + +pktcSigEndPntConfigPartialDialTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the value of the partial dial + time out. + The time out (TO) elements are intended to limit the time a + tone or frequency is generated. When this MIB object is set + to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 16 } + ::= { pktcSigEndPntConfigEntry 3 } + +pktcSigEndPntConfigCriticalDialTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the value of the critical + dial time out. + The time out (TO) elements are intended to limit the time a + tone or frequency is generated. When this MIB object is set + to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 4 } + ::= { pktcSigEndPntConfigEntry 4 } + +pktcSigEndPntConfigBusyToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for busy + tone. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 30 } + ::= { pktcSigEndPntConfigEntry 5 } + +pktcSigEndPntConfigDialToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for dial + tone. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + + + + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 16 } + ::= { pktcSigEndPntConfigEntry 6 } + +pktcSigEndPntConfigMessageWaitingTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for message + waiting indicator. The MTA MUST NOT update this object + with the value provided in the NCS message (if + present). If the value of the object is modified by the + SNMP Manager application, the MTA MUST use the new value + as a default only for a new signal requested by the NCS + message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 16 } + ::= { pktcSigEndPntConfigEntry 7 } + +pktcSigEndPntConfigOffHookWarnToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for the + off-hook warning tone. The MTA MUST NOT update this object + with the value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Manager + + + + application, the MTA MUST use the new value as a default + only for a new signal requested by the NCS message. The + time out (TO) elements are intended to limit the time a tone + or frequency is generated. When this MIB object is set to a + value of '0', the MTA MUST NOT generate the corresponding + frequency or tone, regardless of the definitions pertaining + to frequency, tone duration, or cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 0 } + ::= { pktcSigEndPntConfigEntry 8 } + +pktcSigEndPntConfigRingingTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for + ringing. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 180 } + ::= { pktcSigEndPntConfigEntry 9 } + +pktcSigEndPntConfigRingBackTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for ring + back. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + + + + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 180 } + ::= { pktcSigEndPntConfigEntry 10 } + +pktcSigEndPntConfigReorderToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for reorder + tone. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 30 } + ::= { pktcSigEndPntConfigEntry 11 } + +pktcSigEndPntConfigStutterDialToneTO OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default time out value for stutter + dial tone. The MTA MUST NOT update this object with the + value provided in the NCS message (if present). If + the value of the object is modified by the SNMP Management + Station, the MTA MUST use the new value as a default only + for a new signal requested by the NCS message. + The time out (TO) elements are intended to limit the time + a tone or frequency is generated. When this MIB object is + set to a value of '0', the MTA MUST NOT generate the + + + + corresponding frequency or tone, regardless of the + definitions pertaining to frequency, tone duration, or + cadence." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 16 } + ::= { pktcSigEndPntConfigEntry 12 } + +pktcSigEndPntConfigTSMax OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This MIB object is used as part of an NCS + retransmission algorithm. Prior to any retransmission, + the MTA must check to make sure that the time elapsed + since the sending of the initial datagram does not + exceed the value specified by this MIB object. If more + than Tsmax time has elapsed, then the retransmissions + MUST cease. + + Refer to the MIB object pktcSigEndPntConfigThist for + information on when the endpoint becomes disconnected." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 20 } + ::= { pktcSigEndPntConfigEntry 13 } + +pktcSigEndPntConfigMax1 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the suspicious error threshold for + signaling messages. The pktcSigEndPntConfigMax1 object + indicates the retransmission threshold at which the MTA MAY + actively query the domain name server (DNS) in order to + detect the possible change of call agent interfaces." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 5 } + ::= { pktcSigEndPntConfigEntry 14 } + +pktcSigEndPntConfigMax2 OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This object contains the disconnect error threshold for + signaling messages. The pktcSigEndPntConfigMax2 object + indicates the retransmission threshold at which the MTA + SHOULD contact the DNS one more time to see if any other + interfaces to the call agent have become available." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 7 } + ::= { pktcSigEndPntConfigEntry 15 } + +pktcSigEndPntConfigMax1QEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables the Max1 domain name server + (DNS) query operation when the pktcSigEndPntConfigMax1 + threshold has been reached. + A value of true(1) indicates enabling, and a value of + false(2) indicates disabling." + DEFVAL { true } + ::= { pktcSigEndPntConfigEntry 16 } + +pktcSigEndPntConfigMax2QEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables/disables the Max2 domain name server + (DNS) query operation when the pktcSigEndPntConfigMax2 + threshold has been reached. + A value of true(1) indicates enabling, and a value of + false(2) indicates disabling." + DEFVAL { true } + ::= { pktcSigEndPntConfigEntry 17 } + +pktcSigEndPntConfigMWD OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum Waiting Delay (MWD) contains the maximum number of + seconds an MTA waits, after powering on, before initiating + the restart procedure with the call agent." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 600 } + + + + ::= { pktcSigEndPntConfigEntry 18 } + +pktcSigEndPntConfigTdinit OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This MIB object represents the 'disconnected' initial + waiting delay within the context of an MTA's 'disconnected + procedure'. The 'disconnected procedure' is initiated when + an endpoint becomes 'disconnected' while attempting to + communicate with a call agent. + + The 'disconnected timer' associated with the 'disconnected + Procedure' is initialized to a random value, uniformly + distributed between zero and the value contained in this + MIB object. + + For more information on the usage of this timer, please + refer to the PacketCable NCS Specification." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 15 } + ::= { pktcSigEndPntConfigEntry 19 } + +pktcSigEndPntConfigTdmin OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This MIB object represents the 'disconnected' minimum + waiting delay within the context of an MTA's + 'disconnected procedure', specifically when local user + activity is detected. + The 'disconnected procedure' is initiated when + an endpoint becomes 'disconnected' while attempting to + communicate with a call agent. + For more information on the usage of this timer, please + refer to the PacketCable NCS Specification." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 15 } + ::= { pktcSigEndPntConfigEntry 20 } + +pktcSigEndPntConfigTdmax OBJECT-TYPE + SYNTAX Unsigned32 + + + + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the maximum number of seconds the MTA + waits, after a disconnect, before initiating the + disconnected procedure with the call agent. + " + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 600 } + ::= { pktcSigEndPntConfigEntry 21 } + +pktcSigEndPntConfigRtoMax OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the maximum number of seconds the MTA + waits for a response to an NCS message before initiating + a retransmission." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 4 } + ::= { pktcSigEndPntConfigEntry 22 } + +pktcSigEndPntConfigRtoInit OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the initial number of seconds for the + retransmission timer." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 200 } + ::= { pktcSigEndPntConfigEntry 23 } + +pktcSigEndPntConfigLongDurationKeepAlive OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "minutes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " Specifies a time out value, in minutes, for sending long + duration call notification messages." + + + + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 60 } + ::= { pktcSigEndPntConfigEntry 24 } + +pktcSigEndPntConfigThist OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " Time out period, in seconds, before no response is declared." + REFERENCE + "PacketCable NCS Specification" + DEFVAL { 30 } + ::= { pktcSigEndPntConfigEntry 25 } + +pktcSigEndPntConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the Row Status associated with the + pktcSigEndPntConfigTable. There are no restrictions or + dependencies amidst the columnar objects before this + row can be activated or for modifications of the + columnar objects when this object is set to a + value of 'active(1)." + ::= { pktcSigEndPntConfigEntry 26 } + +pktcSigEndPntConfigCallWaitingMaxRep OBJECT-TYPE + SYNTAX Unsigned32 (0..10) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the default value of the maximum + number of repetitions of the Call Waiting tone that the + MTA will play from a single CMS request. The MTA MUST NOT + update this object with the information provided in the + NCS message (if present). If the value of the object is + modified by the SNMP Manager application, the MTA MUST use + the new value as a default only for a new signal + requested by the NCS message." + DEFVAL { 1 } + ::= { pktcSigEndPntConfigEntry 27 } + +pktcSigEndPntConfigCallWaitingDelay OBJECT-TYPE + SYNTAX Unsigned32 (1..100) + + + + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + " This object contains the delay between repetitions of the + Call Waiting tone that the MTA will play from a single CMS + request." + DEFVAL { 10 } + ::= { pktcSigEndPntConfigEntry 28 } + +pktcSigEndPntStatusCallIpAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the type of Internet address contained + in the MIB object 'pktcSigEndPntStatusCallIpAddress'. + + Since pktcSigEndPntStatusCallIpAddress is expected to + contain an IP address, a value of dns(16) is disallowed." + + ::= { pktcSigEndPntConfigEntry 29 } + +pktcSigEndPntStatusCallIpAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This MIB object contains the chosen IP address of the CMS + currently being used for the corresponding endpoint. + + The device determines the IP address by using DNS to + resolve the IP address of the CMS from the FQDN stored in + the MIB object 'pktcSigEndPntConfigCallAgentId'. The + processes are outlined in the PacketCable NCS and Security + specifications, and MUST be followed by the MTA. + + The IP address type contained in this MIB object is + indicated by pktcSigEndPntStatusCallIpAddressType." + REFERENCE + "PacketCable NCS Specification; + PacketCable Security specification, [PKT-SP-SEC]." +::= { pktcSigEndPntConfigEntry 30 } + +pktcSigEndPntStatusError OBJECT-TYPE + SYNTAX INTEGER { + operational (1), + noSecurityAssociation (2), + + + + disconnected (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This object contains the error status for this interface. + The operational status indicates that all operations + necessary to put the line in service have occurred, and the + CMS has acknowledged the Restart In Progress (RSIP) + message successfully. If pktcMtaDevCmsIpsecCtrl is enabled + for the associated call agent, the noSecurityAssociation + status indicates that no Security Association (SA) yet + exists for this endpoint. If pktcMtaDevCmsIpsecCtrl is + disabled for the associated call agent, the + noSecurityAssociation status is not applicable and should + not be used by the MTA. The disconnected status indicates + one of the following two: + If pktcMtaDevCmsIpsecCtrl is disabled, then no security + association is involved with this endpoint. The NCS + signaling software is in process of establishing the NCS + signaling link via an RSIP exchange. + Otherwise, when pktcMtaDevCmsIpsecCtrl is enabled, + security Association has been established, and the NCS + signaling software is in process of establishing the NCS + signaling link via an RSIP exchange." + ::= { pktcSigEndPntConfigEntry 31 } + +pktcSigEndPntConfigMinHookFlash OBJECT-TYPE + SYNTAX Unsigned32 (20..1550) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the minimum time a line needs to be on-hook for a + valid hook flash. The value of this object MUST be + greater than the value of + pktcSigEndPntConfigPulseDialMaxBreakTime. The value of + pktcSigEndPntConfigMinHookFlash MUST be less than + pktcSigEndPntConfigMaxHookFlash. This object MUST only be + set via the MTA configuration during the provisioning + process. + Furthermore, given the possibility for the 'pulse dial' + and 'hook flash' to overlap, the value of this object + MUST be greater than the value contained by the MIB + Object 'pktcSigEndPntConfigPulseDialMaxMakeTime'." + DEFVAL { 300 } + ::= { pktcSigEndPntConfigEntry 32 } + + + + +pktcSigEndPntConfigMaxHookFlash OBJECT-TYPE + SYNTAX Unsigned32 (20..1550) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the maximum time a line needs to be on-hook for a + valid hook flash. The value of + pktcSigEndPntConfigMaxHookFlash MUST be greater than + pktcSigEndPntConfigMinHookFlash. This object MUST only be + set via the MTA configuration during the provisioning + process." + DEFVAL { 800 } + ::= { pktcSigEndPntConfigEntry 33 } + +pktcSigEndPntConfigPulseDialInterdigitTime OBJECT-TYPE + SYNTAX Unsigned32 (100..1500) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the pulse dial inter-digit time out. This object + MUST only be set via the MTA configuration during the + provisioning process." + DEFVAL { 100 } + ::= { pktcSigEndPntConfigEntry 34 } + +pktcSigEndPntConfigPulseDialMinMakeTime OBJECT-TYPE + SYNTAX Unsigned32 (20..200) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the minimum make pulse width for the dial pulse. + The value of pktcSigEndPntConfigPulseDialMinMakeTime MUST + be less than pktcSigEndPntConfigPulseDialMaxMakeTime. This + object MUST only be set via the MTA configuration during + the provisioning process." + DEFVAL { 25 } + ::= { pktcSigEndPntConfigEntry 35 } + +pktcSigEndPntConfigPulseDialMaxMakeTime OBJECT-TYPE + SYNTAX Unsigned32 (20..200) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the maximum make pulse width for the dial pulse. + + + + The value of pktcSigEndPntConfigPulseDialMaxMakeTime MUST + be greater than pktcSigEndPntConfigPulseDialMinMakeTime. + This object MUST only be provided via the configuration + file during the provisioning process. + Furthermore, given the possibility for the 'pulse dial' + and 'hook flash' to overlap, the value of this object MUST + be less than the value contained by the MIB object + pktcSigEndPntConfigMinHookFlash." + DEFVAL { 55 } + ::= { pktcSigEndPntConfigEntry 36 } + +pktcSigEndPntConfigPulseDialMinBreakTime OBJECT-TYPE + SYNTAX Unsigned32 (20..200) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the minimum break pulse width for the dial pulse. + The value of pktcSigEndPntConfigPulseDialMinBreakTime MUST + be less than pktcSigEndPntConfigPulseDialMaxBreakTime. + This object must only be provided via the configuration + file during the provisioning process." + DEFVAL { 45 } + ::= { pktcSigEndPntConfigEntry 37 } + +pktcSigEndPntConfigPulseDialMaxBreakTime OBJECT-TYPE + SYNTAX Unsigned32 (20..200) + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " This is the maximum break pulse width for the dial pulse. + The value of pktcSigEndPntConfigPulseDialMaxBreakTime MUST + be greater than pktcSigEndPntConfigPulseDialMinBreakTime. + This object MUST only be provided via the configuration + file during the provisioning process." + DEFVAL { 75 } + ::= { pktcSigEndPntConfigEntry 38 } + +-- +-- notification group is for future extension. +-- +pktcSigNotification OBJECT IDENTIFIER ::= { pktcIetfSigMib 0 } +pktcSigConformance OBJECT IDENTIFIER ::= { pktcIetfSigMib 2 } +pktcSigCompliances OBJECT IDENTIFIER ::= { pktcSigConformance 1 } +pktcSigGroups OBJECT IDENTIFIER ::= { pktcSigConformance 2 } + +-- + + + +-- compliance statements +-- + +pktcSigBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " The compliance statement for MTAs that implement + NCS signaling." + +MODULE -- pktcIetfSigMib + +--- +-- Unconditionally mandatory groups for all MTAs +--- + +MANDATORY-GROUPS { + pktcSigDeviceGroup, + pktcSigEndpointGroup +} +--- +-- Conditionally mandatory groups for MTAs +--- + +GROUP pktcInternationalGroup + DESCRIPTION + " This group is mandatory only for MTAs implementing + international telephony features." + +GROUP pktcLLinePackageGroup + DESCRIPTION + " This group is mandatory only for MTAs implementing the L + line package." + +GROUP pktcELinePackageGroup + DESCRIPTION + " This group is mandatory only for MTAs implementing the E + Line Package." + ::={ pktcSigCompliances 1 } + +pktcSigDeviceGroup OBJECT-GROUP + OBJECTS { + pktcSigDevCodecMax, + pktcSigDevEchoCancellation, + pktcSigDevSilenceSuppression, + pktcSigDevR0Cadence, + pktcSigDevR1Cadence, + pktcSigDevR2Cadence, + pktcSigDevR3Cadence, + + + + pktcSigDevR4Cadence, + pktcSigDevR5Cadence, + pktcSigDevR6Cadence, + pktcSigDevR7Cadence, + pktcSigDevRgCadence, + pktcSigDevRsCadence, + pktcSigDefCallSigDscp, + pktcSigDefMediaStreamDscp, + pktcSigDevVmwiMode, + pktcSigCapabilityType, + pktcSigCapabilityVersion, + pktcSigCapabilityVendorExt, + pktcSigDefNcsReceiveUdpPort + } + STATUS current + DESCRIPTION + "Group of MIB objects containing signaling configuration + information that is applicable per-device." + ::= { pktcSigGroups 1 } + +pktcSigEndpointGroup OBJECT-GROUP + OBJECTS { + pktcSigEndPntConfigCallAgentId, + pktcSigEndPntConfigCallAgentUdpPort, + pktcSigEndPntConfigPartialDialTO, + pktcSigEndPntConfigCriticalDialTO, + pktcSigEndPntConfigBusyToneTO, + pktcSigEndPntConfigDialToneTO, + pktcSigEndPntConfigMessageWaitingTO, + pktcSigEndPntConfigOffHookWarnToneTO, + pktcSigEndPntConfigRingingTO, + pktcSigEndPntConfigRingBackTO, + pktcSigEndPntConfigReorderToneTO, + pktcSigEndPntConfigStutterDialToneTO, + pktcSigEndPntConfigTSMax, + pktcSigEndPntConfigMax1, + pktcSigEndPntConfigMax2, + pktcSigEndPntConfigMax1QEnable, + pktcSigEndPntConfigMax2QEnable, + pktcSigEndPntConfigMWD, + pktcSigEndPntConfigTdinit, + pktcSigEndPntConfigTdmin, + pktcSigEndPntConfigTdmax, + pktcSigEndPntConfigRtoMax, + pktcSigEndPntConfigRtoInit, + pktcSigEndPntConfigLongDurationKeepAlive, + pktcSigEndPntConfigThist, + pktcSigEndPntConfigStatus, + + + + pktcSigEndPntConfigCallWaitingMaxRep, + pktcSigEndPntConfigCallWaitingDelay, + pktcSigEndPntStatusCallIpAddressType, + pktcSigEndPntStatusCallIpAddress, + pktcSigEndPntStatusError + } + STATUS current + DESCRIPTION + "Group of MIB objects containing signaling configuration + information that is applicable per-endpoint." + ::= { pktcSigGroups 2 } + +pktcInternationalGroup OBJECT-GROUP + OBJECTS { + pktcSigEndPntConfigMinHookFlash, + pktcSigEndPntConfigMaxHookFlash, + pktcSigEndPntConfigPulseDialInterdigitTime, + pktcSigEndPntConfigPulseDialMinMakeTime, + pktcSigEndPntConfigPulseDialMaxMakeTime, + pktcSigEndPntConfigPulseDialMinBreakTime, + pktcSigEndPntConfigPulseDialMaxBreakTime, + pktcSigDevRingCadence, + pktcSigDevCidSigProtocol, + pktcSigDevCidDelayAfterLR, + pktcSigDevCidDtmfStartCode, + pktcSigDevCidDtmfEndCode, + pktcSigDevVmwiSigProtocol, + pktcSigDevVmwiDelayAfterLR, + pktcSigDevVmwiDtmfStartCode, + pktcSigDevVmwiDtmfEndCode, + pktcSigDevrpAsDtsDuration, + pktcSigDevCidMode, + pktcSigDevCidAfterRing, + pktcSigDevCidAfterDTAS, + pktcSigDevCidAfterRPAS, + pktcSigDevRingAfterCID, + pktcSigDevCidDTASAfterLR, + pktcSigDevVmwiMode, + pktcSigDevVmwiAfterDTAS, + pktcSigDevVmwiAfterRPAS, + pktcSigDevVmwiDTASAfterLR, + pktcSigPowerRingFrequency, + pktcSigPulseSignalFrequency, + pktcSigPulseSignalDbLevel, + pktcSigPulseSignalDuration, + pktcSigPulseSignalPulseInterval, + pktcSigPulseSignalRepeatCount, + pktcSigDevToneDbLevel, + + + + pktcSigDevToneFreqCounter, + pktcSigDevToneWholeToneRepeatCount, + pktcSigDevToneSteady, + pktcSigDevToneFirstFreqValue, + pktcSigDevToneSecondFreqValue, + pktcSigDevToneThirdFreqValue, + pktcSigDevToneFourthFreqValue, + pktcSigDevToneFreqMode, + pktcSigDevToneFreqAmpModePrtg, + pktcSigDevToneFreqOnDuration, + pktcSigDevToneFreqOffDuration, + pktcSigDevToneFreqRepeatCount + } + STATUS current + DESCRIPTION + " Group of objects that extend the behavior of existing + objects to support operations in the widest possible set + of international marketplaces. Note that many of these + objects represent a superset of behaviors described in + other objects within this MIB module." + ::= { pktcSigGroups 3 } + +pktcLLinePackageGroup OBJECT-GROUP + OBJECTS { + pktcSigDevR0Cadence, + pktcSigDevR1Cadence, + pktcSigDevR2Cadence, + pktcSigDevR3Cadence, + pktcSigDevR4Cadence, + pktcSigDevR5Cadence, + pktcSigDevR6Cadence, + pktcSigDevR7Cadence, + pktcSigDevRgCadence, + pktcSigDevRsCadence + } + STATUS current + DESCRIPTION + "Group of Objects to support the L line package." + ::= { pktcSigGroups 4 } + +pktcELinePackageGroup OBJECT-GROUP + OBJECTS { + pktcSigDevR0Cadence, + pktcSigDevR1Cadence, + pktcSigDevR2Cadence, + pktcSigDevR3Cadence, + pktcSigDevR4Cadence, + pktcSigDevR5Cadence, + + + + pktcSigDevR6Cadence, + pktcSigDevR7Cadence, + pktcSigDevRgCadence, + pktcSigDevRsCadence, + pktcSigPulseSignalFrequency, + pktcSigPulseSignalDbLevel, + pktcSigPulseSignalDuration, + pktcSigPulseSignalPulseInterval, + pktcSigPulseSignalRepeatCount, + pktcSigDevRingCadence + } + STATUS current + DESCRIPTION + "Group of Objects to support the E line package." + ::= { pktcSigGroups 5 } + +END diff --git a/mibs/ietf/POLICY-BASED-MANAGEMENT-MIB b/mibs/ietf/POLICY-BASED-MANAGEMENT-MIB new file mode 100644 index 0000000..077a0e4 --- /dev/null +++ b/mibs/ietf/POLICY-BASED-MANAGEMENT-MIB @@ -0,0 +1,2194 @@ +POLICY-BASED-MANAGEMENT-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Gauge32, Unsigned32, + mib-2 FROM SNMPv2-SMI + RowStatus, RowPointer, TEXTUAL-CONVENTION, + DateAndTime, StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + +-- Policy-Based Management MIB + +pmMib MODULE-IDENTITY + LAST-UPDATED "200502070000Z" -- February 7, 2005 + ORGANIZATION "IETF SNMP Configuration Working Group" + CONTACT-INFO + " + + + + + Steve Waldbusser + Phone: +1-650-948-6500 + Fax: +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Jon Saperia (WG Co-chair) + JDS Consulting, Inc. + 84 Kettell Plain Road. + Stow MA 01775 + USA + Phone: +1-978-461-0249 + Fax: +1-617-249-0874 + Email: saperia@jdscons.com + + Thippanna Hongal + Riverstone Networks, Inc. + 5200 Great America Parkway + Santa Clara, CA, 95054 + USA + + Phone: +1-408-878-6562 + Fax: +1-408-878-6501 + Email: hongal@riverstonenet.com + + David Partain (WG Co-chair) + Postal: Ericsson AB + P.O. Box 1248 + SE-581 12 Linkoping + Sweden + Tel: +46 13 28 41 44 + E-mail: David.Partain@ericsson.com + + Any questions or comments about this document can also be + directed to the working group at snmpconf@snmp.com." + DESCRIPTION + "The MIB module for policy-based configuration of SNMP + infrastructures. + + Copyright (C) The Internet Society (2005). This version of + this MIB module is part of RFC 4011; see the RFC itself for + full legal notices." + + REVISION "200502070000Z" -- February 7, 2005 + DESCRIPTION + "The original version of this MIB, published as RFC4011." + ::= { mib-2 124 } + + + + + +PmUTF8String ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string containing information typically in + human-readable form. + + To facilitate internationalization, this + information is represented by using the ISO/IEC + IS 10646-1 character set, encoded as an octet + string using the UTF-8 transformation format + described in RFC 3629. + + As additional code points are added by + amendments to the 10646 standard from time + to time, implementations must be prepared to + encounter any code point from 0x00000000 to + 0x10FFFF. Byte sequences that do not + correspond to the valid UTF-8 encoding of a + code point or that are outside this range are + prohibited. + + The use of control codes should be avoided. + + When it is necessary to represent a newline, + the control code sequence CR LF should be used. + + For code points not directly supported by user + interface hardware or software, an alternative + means of entry and display, such as hexadecimal, + may be provided. + + For information encoded in 7-bit US-ASCII, + the UTF-8 encoding is identical to the + US-ASCII encoding. + + UTF-8 may require multiple bytes to represent a + single character/code point; thus, the length + of this object in octets may be different from + the number of characters encoded. Similarly, + size constraints refer to the number of encoded + octets, not the number of characters represented + by an encoding. + + Note that when this TC is used for an object + used or envisioned to be used as an index, then + a SIZE restriction MUST be specified so that the + number of sub-identifiers for any object instance + does not exceed the limit of 128, as defined by + + + + RFC 3416. + + Note that the size of PmUTF8String object is + measured in octets, not characters." + SYNTAX OCTET STRING (SIZE (0..65535)) + +-- The policy table + +pmPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The policy table. A policy is a pairing of a + policyCondition and a policyAction that is used to apply the + action to a selected set of elements." + ::= { pmMib 1 } + +pmPolicyEntry OBJECT-TYPE + SYNTAX PmPolicyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the policy table representing one policy." + INDEX { pmPolicyAdminGroup, pmPolicyIndex } + ::= { pmPolicyTable 1 } + +PmPolicyEntry ::= SEQUENCE { + pmPolicyAdminGroup PmUTF8String, + pmPolicyIndex Unsigned32, + pmPolicyPrecedenceGroup PmUTF8String, + pmPolicyPrecedence Unsigned32, + pmPolicySchedule Unsigned32, + pmPolicyElementTypeFilter PmUTF8String, + pmPolicyConditionScriptIndex Unsigned32, + pmPolicyActionScriptIndex Unsigned32, + pmPolicyParameters OCTET STRING, + pmPolicyConditionMaxLatency Unsigned32, + pmPolicyActionMaxLatency Unsigned32, + pmPolicyMaxIterations Unsigned32, + pmPolicyDescription PmUTF8String, + pmPolicyMatches Gauge32, + pmPolicyAbnormalTerminations Gauge32, + pmPolicyExecutionErrors Counter32, + pmPolicyDebugging INTEGER, + pmPolicyAdminStatus INTEGER, + pmPolicyStorageType StorageType, + pmPolicyRowStatus RowStatus + + + +} + +pmPolicyAdminGroup OBJECT-TYPE + SYNTAX PmUTF8String (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An administratively assigned string that can be used to group + policies for convenience, for readability, or to simplify + configuration of access control. + + The value of this string does not affect policy processing in + any way. If grouping is not desired or necessary, this object + may be set to a zero-length string." + ::= { pmPolicyEntry 1 } + +pmPolicyIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this policy entry, unique among all + policies regardless of administrative group." + ::= { pmPolicyEntry 2 } + +pmPolicyPrecedenceGroup OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An administratively assigned string that is used to group + policies. For each element, only one policy in the same + precedence group may be active on that element. If multiple + policies would be active on an element (because their + conditions return non-zero), the execution environment will + only allow the policy with the highest value of + pmPolicyPrecedence to be active. + + All values of this object must have been successfully + transformed by Stringprep RFC 3454. Management stations + must perform this translation and must only set this object to + string values that have been transformed." + ::= { pmPolicyEntry 3 } + +pmPolicyPrecedence OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "If, while checking to see which policy conditions match an + element, 2 or more ready policies in the same precedence group + match the same element, the pmPolicyPrecedence object provides + the rule to arbitrate which single policy will be active on + 'this element'. Of policies in the same precedence group, only + the ready and matching policy with the highest precedence + value (e.g., 2 is higher than 1) will have its policy action + periodically executed on 'this element'. + + When a policy is active on an element but the condition ceases + to match the element, its action (if currently running) will + be allowed to finish and then the condition-matching ready + policy with the next-highest precedence will immediately + become active (and have its action run immediately). If the + condition of a higher-precedence ready policy suddenly begins + matching an element, the previously-active policy's action (if + currently running) will be allowed to finish and then the + higher precedence policy will immediately become active. Its + action will run immediately, and any lower-precedence matching + policy will not be active anymore. + + In the case where multiple ready policies share the highest + value, it is an implementation-dependent matter as to which + single policy action will be chosen. + + Note that if it is necessary to take certain actions after a + policy is no longer active on an element, these actions should + be included in a lower-precedence policy that is in the same + precedence group." + ::= { pmPolicyEntry 4 } + +pmPolicySchedule OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This policy will be ready if any of the associated schedule + entries are active. + + If the value of this object is 0, this policy is always + ready. + + If the value of this object is non-zero but doesn't + refer to a schedule group that includes an active schedule, + then the policy will not be ready, even if this is due to a + misconfiguration of this object or the pmSchedTable." + ::= { pmPolicyEntry 5 } + + + +pmPolicyElementTypeFilter OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..128)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the element types for which this policy + can be executed. + + The format of this object will be a sequence of + pmElementTypeRegOIDPrefix values, encoded in the following + BNF form: + + elementTypeFilter: oid [ ';' oid ]* + oid: subid [ '.' subid ]* + subid: '0' | decimal_constant + + For example, to register for the policy to be run on all + interface elements, the 'ifEntry' element type will be + registered as '1.3.6.1.2.1.2.2.1'. + + If a value is included that does not represent a registered + pmElementTypeRegOIDPrefix, then that value will be ignored." + ::= { pmPolicyEntry 6 } + +pmPolicyConditionScriptIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the row or rows in the pmPolicyCodeTable that + contain the condition code for this policy. When a policy + entry is created, a pmPolicyCodeIndex value unused by this + policy's adminGroup will be assigned to this object. + + A policy condition is one or more PolicyScript statements + that result(s) in a boolean value that represents whether + an element is a member of a set of elements upon which an + action is to be performed. If a policy is ready and the + condition returns true for an element of a proper element + type, and if no higher-precedence policy should be active, + then the policy is active on that element. + + Condition evaluation stops immediately when any run-time + exception is detected, and the policyAction is not executed. + + The policyCondition is evaluated for various elements. Any + element for which the policyCondition returns any nonzero value + will match the condition and will have the associated + + + + policyAction executed on that element unless a + higher-precedence policy in the same precedence group also + matches 'this element'. + + If the condition object is empty (contains no code) or + otherwise does not return a value, the element will not be + matched. + + When this condition is executed, if SNMP requests are made to + the local system and secModel/secName/secLevel aren't + specified, access to objects is under the security + credentials of the requester who most recently modified the + associated pmPolicyAdminStatus object. If SNMP requests are + made in which secModel/secName/secLevel are specified, then + the specified credentials are retrieved from the local + configuration datastore only if VACM is configured to + allow access to the requester who most recently modified the + associated pmPolicyAdminStatus object. See the Security + Considerations section for more information." + ::= { pmPolicyEntry 7 } + +pmPolicyActionScriptIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A pointer to the row or rows in the pmPolicyCodeTable that + contain the action code for this policy. When a policy entry + is created, a pmPolicyCodeIndex value unused by this policy's + adminGroup will be assigned to this object. + + A PolicyAction is an operation performed on a + set of elements for which the policy is active. + + Action evaluation stops immediately when any run-time + exception is detected. + + When this condition is executed, if SNMP requests are made to + the local system and secModel/secName/secLevel aren't + specified, access to objects is under the security + credentials of the requester who most recently modified the + associated pmPolicyAdminStatus object. If SNMP requests are + made in which secModel/secName/secLevel are specified, then + the specified credentials are retrieved from the local + configuration datastore only if VACM is configured to + allow access to the requester who most recently modified the + associated pmPolicyAdminStatus object. See the Security + Considerations section for more information." + + + + ::= { pmPolicyEntry 8 } + +pmPolicyParameters OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..65535)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "From time to time, policy scripts may seek one or more + parameters (e.g., site-specific constants). These parameters + may be installed with the script in this object and are + accessible to the script via the getParameters() function. If + it is necessary for multiple parameters to be passed to the + script, the script can choose whatever encoding/delimiting + mechanism is most appropriate." + ::= { pmPolicyEntry 9 } + +pmPolicyConditionMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Every element under the control of this agent is + re-checked periodically to see whether it is under control + of this policy by re-running the condition for this policy. + This object lets the manager control the maximum amount of + time that may pass before an element is re-checked. + + In other words, in any given interval of this duration, all + elements must be re-checked. Note that how the policy agent + schedules the checking of various elements within this + interval is an implementation-dependent matter. + Implementations may wish to re-run a condition more + quickly if they note a change to the role strings for an + element." + ::= { pmPolicyEntry 10 } + +pmPolicyActionMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Every element that matches this policy's condition and is + therefore under control of this policy will have this policy's + action executed periodically to ensure that the element + remains in the state dictated by the policy. + This object lets the manager control the maximum amount of + + + + time that may pass before an element has the action run on + it. + + In other words, in any given interval of this duration, all + elements under control of this policy must have the action run + on them. Note that how the policy agent schedules the policy + action on various elements within this interval is an + implementation-dependent matter." + ::= { pmPolicyEntry 11 } + +pmPolicyMaxIterations OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If a condition or action script iterates in loops too many + times in one invocation, the execution environment may + consider it in an infinite loop or otherwise not acting + as intended and may be terminated by the execution + environment. The execution environment will count the + cumulative number of times all 'for' or 'while' loops iterated + and will apply a threshold to determine when to terminate the + script. What threshold the execution environment uses is an + implementation-dependent manner, but the value of + this object SHOULD be the basis for choosing the threshold for + each script. The value of this object represents a + policy-specific threshold and can be tuned for policies of + varying workloads. If this value is zero, no + threshold will be enforced except for any + implementation-dependent maximum. Regardless of this value, + the agent is allowed to terminate any script invocation that + exceeds a local CPU or memory limitation. + + Note that the condition and action invocations are tracked + separately." + ::= { pmPolicyEntry 12 } + +pmPolicyDescription OBJECT-TYPE + SYNTAX PmUTF8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A description of this rule and its significance, typically + provided by a human." + ::= { pmPolicyEntry 13 } + +pmPolicyMatches OBJECT-TYPE + SYNTAX Gauge32 + + + + UNITS "elements" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of elements that, in their most recent execution + of the associated condition, were matched by the condition." + ::= { pmPolicyEntry 14 } + +pmPolicyAbnormalTerminations OBJECT-TYPE + SYNTAX Gauge32 + UNITS "elements" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of elements that, in their most recent execution + of the associated condition or action, have experienced a + run-time exception and terminated abnormally. Note that if a + policy was experiencing a run-time exception while processing + a particular element but runs normally on a subsequent + invocation, this number can decline." + ::= { pmPolicyEntry 15 } + +pmPolicyExecutionErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "errors" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times that execution of this policy's + condition or action has been terminated due to run-time + exceptions." + ::= { pmPolicyEntry 16 } + +pmPolicyDebugging OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of debugging for this policy. If this is turned + on(2), log entries will be created in the pmDebuggingTable + for each run-time exception that is experienced by this + policy." + DEFVAL { off } + ::= { pmPolicyEntry 17 } + + + + +pmPolicyAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabled(2), + enabledAutoRemove(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative status of this policy. + + The policy will be valid only if the associated + pmPolicyRowStatus is set to active(1) and this object is set + to enabled(2) or enabledAutoRemove(3). + + If this object is set to enabledAutoRemove(3), the next time + the associated schedule moves from the active state to the + inactive state, this policy will immediately be deleted, + including any associated entries in the pmPolicyCodeTable. + + The following related objects may not be changed unless this + object is set to disabled(1): + pmPolicyPrecedenceGroup, pmPolicyPrecedence, + pmPolicySchedule, pmPolicyElementTypeFilter, + pmPolicyConditionScriptIndex, pmPolicyActionScriptIndex, + pmPolicyParameters, and any pmPolicyCodeTable row + referenced by this policy. + In order to change any of these parameters, the policy must + be moved to the disabled(1) state, changed, and then + re-enabled. + + When this policy moves to either enabled state from the + disabled state, any cached values of policy condition must be + erased, and any Policy or PolicyElement scratchpad values for + this policy should be removed. Policy execution will begin by + testing the policy condition on all appropriate elements." + ::= { pmPolicyEntry 18 } + +pmPolicyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this policy and any associated + entries in the pmPolicyCodeTable are kept in volatile storage + and lost upon reboot or if this row is backed up by + non-volatile or permanent storage. + + + + + If the value of this object is 'permanent', the values for + the associated pmPolicyAdminStatus object must remain + writable." + ::= { pmPolicyEntry 19 } + +pmPolicyRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status of this pmPolicyEntry. + + The status may not be set to active if any of the related + entries in the pmPolicyCode table do not have a status of + active or if any of the objects in this row are not set to + valid values. Only the following objects may be modified + while in the active state: + pmPolicyParameters + pmPolicyConditionMaxLatency + pmPolicyActionMaxLatency + pmPolicyDebugging + pmPolicyAdminStatus + + If this row is deleted, any associated entries in the + pmPolicyCodeTable will be deleted as well." + ::= { pmPolicyEntry 20 } + +-- Policy Code Table + +pmPolicyCodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmPolicyCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmPolicyCodeTable stores the code for policy conditions and + actions. + + An example of the relationships between the code table and the + policy table follows: + + pmPolicyTable + AdminGroup Index ConditionScriptIndex ActionScriptIndex + A '' 1 1 2 + B 'oper' 1 1 2 + C 'oper' 2 3 4 + + pmPolicyCodeTable + AdminGroup ScriptIndex Segment Note + + + + '' 1 1 Filter for policy A + '' 2 1 Action for policy A + 'oper' 1 1 Filter for policy B + 'oper' 2 1 Action 1/2 for policy B + 'oper' 2 2 Action 2/2 for policy B + 'oper' 3 1 Filter for policy C + 'oper' 4 1 Action for policy C + + In this example, there are 3 policies: 1 in the '' adminGroup, + and 2 in the 'oper' adminGroup. Policy A has been assigned + script indexes 1 and 2 (these script indexes are assigned out of + a separate pool per adminGroup), with 1 code segment each for + the filter and the action. Policy B has been assigned script + indexes 1 and 2 (out of the pool for the 'oper' adminGroup). + While the filter has 1 segment, the action is longer and is + loaded into 2 segments. Finally, Policy C has been assigned + script indexes 3 and 4, with 1 code segment each for the filter + and the action." + ::= { pmMib 2 } + +pmPolicyCodeEntry OBJECT-TYPE + SYNTAX PmPolicyCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the policy code table representing one code + segment. Entries that share a common AdminGroup/ScriptIndex + pair make up a single script. Valid values of ScriptIndex are + retrieved from pmPolicyConditionScriptIndex and + pmPolicyActionScriptIndex after a pmPolicyEntry is + created. Segments of code can then be written to this table + with the learned ScriptIndex values. + + The StorageType of this entry is determined by the value of + the associated pmPolicyStorageType. + + The pmPolicyAdminGroup element of the index represents the + administrative group of the policy of which this code entry is + a part." + INDEX { pmPolicyAdminGroup, pmPolicyCodeScriptIndex, + pmPolicyCodeSegment } + ::= { pmPolicyCodeTable 1 } + +PmPolicyCodeEntry ::= SEQUENCE { + pmPolicyCodeScriptIndex Unsigned32, + pmPolicyCodeSegment Unsigned32, + pmPolicyCodeText PmUTF8String, + pmPolicyCodeStatus RowStatus + + + +} + +pmPolicyCodeScriptIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for each policy condition or action. The code + for each such condition or action may be composed of multiple + entries in this table if the code cannot fit in one entry. + Values of pmPolicyCodeScriptIndex may not be used unless + they have previously been assigned in the + pmPolicyConditionScriptIndex or pmPolicyActionScriptIndex + objects." + ::= { pmPolicyCodeEntry 1 } + +pmPolicyCodeSegment OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for each segment of a policy condition or + action. + + When a policy condition or action spans multiple entries in + this table, the code of that policy starts from the + lowest-numbered segment and continues with increasing segment + values until it ends with the highest-numbered segment." + ::= { pmPolicyCodeEntry 2 } + +pmPolicyCodeText OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A segment of policy code (condition or action). Lengthy + Policy conditions or actions may be stored in multiple + segments in this table that share the same value of + pmPolicyCodeScriptIndex. When multiple segments are used, it + is recommended that each segment be as large as is practical. + + Entries in this table are associated with policies by values + of the pmPolicyConditionScriptIndex and + pmPolicyActionScriptIndex objects. If the status of the + related policy is active, then this object may not be + modified." + ::= { pmPolicyCodeEntry 3 } + + + + +pmPolicyCodeStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this code entry. + + Entries in this table are associated with policies by values + of the pmPolicyConditionScriptIndex and + pmPolicyActionScriptIndex objects. If the status of the + related policy is active, then this object can not be + modified (i.e., deleted or set to notInService), nor may new + entries be created. + + If the status of this object is active, no objects in this + row may be modified." + ::= { pmPolicyCodeEntry 4 } + +-- Element Type Registration Table + +pmElementTypeRegTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmElementTypeRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A registration table for element types managed by this + system. + + The Element Type Registration table allows the manager to + learn what element types are being managed by the system and + to register new types, if necessary. An element type is + registered by providing the OID of an SNMP object (i.e., + without the instance). Each SNMP instance that exists under + that object is a distinct element. The index of the element is + the index part of the discovered OID. This index will be + supplied to policy conditions and actions so that this code + can inspect and configure the element. + + For example, this table might contain the following entries. + The first three are agent-installed, and the 4th was + downloaded by a management station: + + OIDPrefix MaxLatency Description StorageType + ifEntry 100 mS interfaces - builtin readOnly + 0.0 100 mS system element - builtin readOnly + frCircuitEntry 100 mS FR Circuits - builtin readOnly + hrSWRunEntry 60 sec Running Processes volatile + + + + + Note that agents may automatically configure elements in this + table for frequently used element types (interfaces, circuits, + etc.). In particular, it may configure elements for whom + discovery is optimized in one or both of the following ways: + + 1. The agent may discover elements by scanning internal data + structures as opposed to issuing local SNMP requests. It is + possible to recreate the exact semantics described in this + table even if local SNMP requests are not issued. + + 2. The agent may receive asynchronous notification of new + elements (for example, 'card inserted') and use that + information to instantly create elements rather than + through polling. A similar feature might be available for + the deletion of elements. + + Note that the disposition of agent-installed entries is + described by the pmPolicyStorageType object." + ::= { pmMib 3 } + +pmElementTypeRegEntry OBJECT-TYPE + SYNTAX PmElementTypeRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A registration of an element type. + + Note that some values of this table's index may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP protocol. + Implementations should take care to avoid such values." + INDEX { pmElementTypeRegOIDPrefix } + ::= { pmElementTypeRegTable 1 } + +PmElementTypeRegEntry ::= SEQUENCE { + pmElementTypeRegOIDPrefix OBJECT IDENTIFIER, + pmElementTypeRegMaxLatency Unsigned32, + pmElementTypeRegDescription PmUTF8String, + pmElementTypeRegStorageType StorageType, + pmElementTypeRegRowStatus RowStatus +} + +pmElementTypeRegOIDPrefix OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This OBJECT IDENTIFIER value identifies a table in which all + + + + elements of this type will be found. Every row in the + referenced table will be treated as an element for the + period of time that it remains in the table. The agent will + then execute policy conditions and actions as appropriate on + each of these elements. + + This object identifier value is specified down to the 'entry' + component (e.g., ifEntry) of the identifier. + + The index of each discovered row will be passed to each + invocation of the policy condition and policy action. + + The actual mechanism by which instances are discovered is + implementation dependent. Periodic walks of the table to + discover the rows in the table is one such mechanism. This + mechanism has the advantage that it can be performed by an + agent with no knowledge of the names, syntax, or semantics + of the MIB objects in the table. This mechanism also serves as + the reference design. Other implementation-dependent + mechanisms may be implemented that are more efficient (perhaps + because they are hard coded) or that don't require polling. + These mechanisms must discover the same elements as would the + table-walking reference design. + + This object can contain a OBJECT IDENTIFIER, '0.0'. + '0.0' represents the single instance of the system + itself and provides an execution context for policies to + operate on the 'system element' and on MIB objects + modeled as scalars. For example, '0.0' gives an execution + context for policy-based selection of the operating system + code version (likely modeled as a scalar MIB object). The + element type '0.0' always exists; as a consequence, no actual + discovery will take place, and the pmElementTypeRegMaxLatency + object will have no effect for the '0.0' element + type. However, if the '0.0' element type is not registered in + the table, policies will not be executed on the '0.0' element. + + When a policy is invoked on behalf of a '0.0' entry in this + table, the element name will be '0.0', and there is no index + of 'this element' (in other words, it has zero length). + + As this object is used in the index for the + pmElementTypeRegTable, users of this table should be careful + not to create entries that would result in instance names with + more than 128 sub-identifiers." + ::= { pmElementTypeRegEntry 2 } + + + + + +pmElementTypeRegMaxLatency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The PM agent is responsible for discovering new elements of + types that are registered. This object lets the manager + control the maximum amount of time that may pass between the + time an element is created and when it is discovered. + + In other words, in any given interval of this duration, all + new elements must be discovered. Note that how the policy + agent schedules the checking of various elements within this + interval is an implementation-dependent matter." + ::= { pmElementTypeRegEntry 3 } + +pmElementTypeRegDescription OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A descriptive label for this registered type." + ::= { pmElementTypeRegEntry 4 } + +pmElementTypeRegStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept + in volatile storage and lost upon reboot or + backed up by non-volatile or permanent storage. + + If the value of this object is 'permanent', no values in the + associated row have to be writable." + ::= { pmElementTypeRegEntry 5 } + +pmElementTypeRegRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this registration entry. + + If the value of this object is active, no objects in this row + may be modified." + ::= { pmElementTypeRegEntry 6 } + + + +-- Role Table + +pmRoleTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmRoleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmRoleTable is a read-create table that organizes role + strings sorted by element. This table is used to create and + modify role strings and their associations, as well as to allow + a management station to learn about the existence of roles and + their associations. + + It is the responsibility of the agent to keep track of any + re-indexing of the underlying SNMP elements and to continue to + associate role strings with the element with which they were + initially configured. + + Policy MIB agents that have elements in multiple local SNMP + contexts have to allow some roles to be assigned to elements + in particular contexts. This is particularly true when some + elements have the same names in different contexts and the + context is required to disambiguate them. In those situations, + a value for the pmRoleContextName may be provided. When a + pmRoleContextName value is not provided, the assignment is to + the element in the default context. + + Policy MIB agents that discover elements on other systems and + execute policies on their behalf need to have access to role + information for these remote elements. In such situations, + role assignments for other systems can be stored in this table + by providing values for the pmRoleContextEngineID parameters. + + For example: + Example: + element role context ctxEngineID #comment + ifindex.1 gold local, default context + ifindex.2 gold local, default context + repeaterid.1 foo rptr1 local, rptr1 context + repeaterid.1 bar rptr2 local, rptr2 context + ifindex.1 gold '' A different system + ifindex.1 gold '' B different system + + The agent must store role string associations in non-volatile + storage." + ::= { pmMib 4 } + + + + + +pmRoleEntry OBJECT-TYPE + SYNTAX PmRoleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A role string entry associates a role string with an + individual element. + + Note that some combinations of index values may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP + protocol. Implementations should take care to avoid such + combinations." + INDEX { pmRoleElement, pmRoleContextName, + pmRoleContextEngineID, pmRoleString } + ::= { pmRoleTable 1 } + +PmRoleEntry ::= SEQUENCE { + pmRoleElement RowPointer, + pmRoleContextName SnmpAdminString, + pmRoleContextEngineID OCTET STRING, + pmRoleString PmUTF8String, + pmRoleStatus RowStatus +} + +pmRoleElement OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The element with which this role string is associated. + + For example, if the element is interface 3, then this object + will contain the OID for 'ifIndex.3'. + + If the agent assigns new indexes in the MIB table to + represent the same underlying element (re-indexing), the + agent will modify this value to contain the new index for the + underlying element. + + As this object is used in the index for the pmRoleTable, + users of this table should be careful not to create entries + that would result in instance names with more than 128 + sub-identifiers." + ::= { pmRoleEntry 1 } + + + + + + +pmRoleContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is not in the default SNMP context + for the target system, this object is used to identify the + context. If the element is in the default context, this object + is equal to the empty string." + ::= { pmRoleEntry 2 } + +pmRoleContextEngineID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 5..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is on a remote system, this object + is used to identify the remote system. This object contains + the contextEngineID of the system for which this role string + assignment is valid. If the element is on the local system + this object will be the empty string." + ::= { pmRoleEntry 3 } + +pmRoleString OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The role string that is associated with an element through + this table. All role strings must have been successfully + transformed by Stringprep RFC 3454. Management stations + must perform this translation and must only set this object + to string values that have been transformed. + + A role string is an administratively specified characteristic + of a managed element (for example, an interface). It is a + selector for policy rules, that determines the applicability of + the rule to a particular managed element." + ::= { pmRoleEntry 4 } + +pmRoleStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this role string. + + + + + + If the value of this object is active, no object in this row + may be modified." + ::= { pmRoleEntry 5 } + +-- Capabilities table + +pmCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmCapabilitiesTable contains a description of + the inherent capabilities of the system so that + management stations can learn of an agent's capabilities and + differentially install policies based on the capabilities. + + Capabilities are expressed at the system level. There can be + variation in how capabilities are realized from one vendor or + model to the next. Management systems should consider these + differences before selecting which policy to install in a + system." + ::= { pmMib 5 } + +pmCapabilitiesEntry OBJECT-TYPE + SYNTAX PmCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A capabilities entry holds an OID indicating support for a + particular capability. Capabilities may include hardware and + software functions and the implementation of MIB + Modules. The semantics of the OID are defined in the + description of pmCapabilitiesType. + + Entries appear in this table if any element in the system has + a specific capability. A capability should appear in this + table only once, regardless of the number of elements in the + system with that capability. An entry is removed from this + table when the last element in the system that has the + capability is removed. In some cases, capabilities are + dynamic and exist only in software. This table should have an + entry for the capability even if there are no current + instances. Examples include systems with database or WEB + services. While the system has the ability to create new + databases or WEB services, the entry should exist. In these + cases, the ability to create these services could come from + other processes that are running in the system, even though + there are no currently open databases or WEB servers running. + + + + Capabilities may include the implementation of MIB Modules + but need not be limited to those that represent MIB Modules + with one or more configurable objects. It may also be + valuable to include entries for capabilities that do not + include configuration objects, as that information, in + combination with other entries in this table, might be used + by the management software to determine whether to + install a policy. + + Vendor software may also add entries in this table to express + capabilities from their private branch. + + Note that some values of this table's index may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP + protocol. Implementations should take care to avoid such + values." + INDEX { pmCapabilitiesType } + ::= { pmCapabilitiesTable 1 } + +PmCapabilitiesEntry ::= SEQUENCE { + pmCapabilitiesType OBJECT IDENTIFIER +} + +pmCapabilitiesType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "There are three types of OIDs that may be present in the + pmCapabilitiesType object: + + 1) The OID of a MODULE-COMPLIANCE macro that represents the + highest level of compliance realized by the agent for that + MIB Module. For example, an agent that implements the OSPF + MIB Module at the highest level of compliance would have the + value of '1.3.6.1.2.1.14.15.2' in the pmCapabilitiesType + object. For software that realizes standard MIB + Modules that do not have compliance statements, the base OID + of the MIB Module should be used instead. If the OSPF MIB + Module had not been created with a compliance statement, then + the correct value of the pmCapabilitiesType would be + '1.3.6.1.2.1.14'. In the cases where multiple compliance + statements in a MIB Module are supported by the agent, and + where one compliance statement does not by definition include + the other, each of the compliance OIDs would have entries in + this table. + + + + + MIB Documents can contain more than one MIB Module. In the + case of OSPF, there is a second MIB Module + that describes notifications for the OSPF Version 2 Protocol. + If the agent also realizes these functions, an entry will + also exist for those capabilities in this table. + + 2) Vendors should install OIDs in this table that represent + vendor-specific capabilities. These capabilities can be + expressed just as those described above for MIB Modules on + the standards track. In addition, vendors may install any + OID they desire from their registered branch. The OIDs may be + at any level of granularity, from the root of their entire + branch to an instance of a single OID. There is no + restriction on the number of registrations they may make, + though care should be taken to avoid unnecessary entries. + + 3) OIDs that represent one capability or a collection of + capabilities that could be any collection of MIB Objects or + hardware or software functions may be created in working + groups and registered in a MIB Module. Other entities (e.g., + vendors) may also make registrations. Software will register + these standard capability OIDs, as well as vendor specific + OIDs. + + If the OID for a known capability is not present in the + table, then it should be assumed that the capability is not + implemented. + + As this object is used in the index for the + pmCapabilitiesTable, users of this table should be careful + not to create entries that would result in instance names + with more than 128 sub-identifiers." + ::= { pmCapabilitiesEntry 1 } + +-- Capabilities override table + +pmCapabilitiesOverrideTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmCapabilitiesOverrideEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmCapabilitiesOverrideTable allows management stations + to override pmCapabilitiesTable entries that have been + registered by the agent. This facility can be used to avoid + situations in which managers in the network send policies to + a system that has advertised a capability in the + pmCapabilitiesTable but that should not be installed on this + particular system. One example could be newly deployed + + + + equipment that is still in a trial state in a trial state or + resources reserved for some other administrative reason. + This table can also be used to override entries in the + pmCapabilitiesTable through the use of the + pmCapabilitiesOverrideState object. Capabilities can also be + declared available in this table that were not registered in + the pmCapabilitiesTable. A management application can make + an entry in this table for any valid OID and declare the + capability available by setting the + pmCapabilitiesOverrideState for that row to valid(1)." + ::= { pmMib 6 } + +pmCapabilitiesOverrideEntry OBJECT-TYPE + SYNTAX PmCapabilitiesOverrideEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table indicates whether a particular + capability is valid or invalid. + + Note that some values of this table's index may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP + protocol. Implementations should take care to avoid such + values." + INDEX { pmCapabilitiesOverrideType } + ::= { pmCapabilitiesOverrideTable 1 } + +PmCapabilitiesOverrideEntry ::= SEQUENCE { + pmCapabilitiesOverrideType OBJECT IDENTIFIER, + pmCapabilitiesOverrideState INTEGER, + pmCapabilitiesOverrideRowStatus RowStatus +} + +pmCapabilitiesOverrideType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the OID of the capability that is declared valid or + invalid by the pmCapabilitiesOverrideState value for this + row. Any valid OID, as described in the pmCapabilitiesTable, + is permitted in the pmCapabilitiesOverrideType object. This + means that capabilities can be expressed at any level, from a + specific instance of an object to a table or entire module. + There are no restrictions on whether these objects are from + standards track MIB documents or in the private branch of the + MIB. + + + + If an entry exists in this table for which there is a + corresponding entry in the pmCapabilitiesTable, then this entry + shall have precedence over the entry in the + pmCapabilitiesTable. All entries in this table must be + preserved across reboots. + + As this object is used in the index for the + pmCapabilitiesOverrideTable, users of this table should be + careful not to create entries that would result in instance + names with more than 128 sub-identifiers." + ::= { pmCapabilitiesOverrideEntry 1 } + +pmCapabilitiesOverrideState OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + valid(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pmCapabilitiesOverrideState of invalid indicates that + management software should not send policies to this system + for the capability identified in the + pmCapabilitiesOverrideType for this row of the table. This + behavior is the same whether the capability represented by + the pmCapabilitiesOverrideType exists only in this table + (that is, it was installed by an external management + application) or exists in this table as well as the + pmCapabilitiesTable. This would be the case when a manager + wanted to disable a capability that the native management + system found and registered in the pmCapabilitiesTable. + + An entry in this table that has a pmCapabilitiesOverrideState + of valid should be treated as though it appeared in the + pmCapabilitiesTable. If the entry also exists in the + pmCapabilitiesTable in the pmCapabilitiesType object, and if + the value of this object is valid, then the system shall + operate as though this entry did not exist and policy + installations and executions will continue in a normal + fashion." + ::= { pmCapabilitiesOverrideEntry 2 } + +pmCapabilitiesOverrideRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status of this pmCapabilitiesOverrideEntry. + + + + If the value of this object is active, no object in this row + may be modified." + ::= { pmCapabilitiesOverrideEntry 3 } + +-- The Schedule Group + +pmSchedLocalTime OBJECT-TYPE + SYNTAX DateAndTime (SIZE (11)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local time used by the scheduler. Schedules that + refer to calendar time will use the local time indicated + by this object. An implementation MUST return all 11 bytes + of the DateAndTime textual-convention so that a manager + may retrieve the offset from GMT time." + ::= { pmMib 7 } + +-- +-- The schedule table that controls the scheduler. +-- + +pmSchedTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmSchedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines schedules for policies." + ::= { pmMib 8 } + +pmSchedEntry OBJECT-TYPE + SYNTAX PmSchedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular schedule. + + Unless noted otherwise, writable objects of this row can be + modified independently of the current value of pmSchedRowStatus, + pmSchedAdminStatus and pmSchedOperStatus. In particular, it + is legal to modify pmSchedWeekDay, pmSchedMonth, and + pmSchedDay when pmSchedRowStatus is active." + INDEX { pmSchedIndex } + ::= { pmSchedTable 1 } + + + + + + + +PmSchedEntry ::= SEQUENCE { + pmSchedIndex Unsigned32, + pmSchedGroupIndex Unsigned32, + pmSchedDescr PmUTF8String, + pmSchedTimePeriod PmUTF8String, + pmSchedMonth BITS, + pmSchedDay BITS, + pmSchedWeekDay BITS, + pmSchedTimeOfDay PmUTF8String, + pmSchedLocalOrUtc INTEGER, + pmSchedStorageType StorageType, + pmSchedRowStatus RowStatus +} + +pmSchedIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally unique, administratively assigned index for this + scheduling entry." + ::= { pmSchedEntry 1 } + +pmSchedGroupIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The locally unique, administratively assigned index for the + schedule group this scheduling entry belongs to. + + To assign multiple schedule entries to the same group, the + pmSchedGroupIndex of each entry in the group will be set to + the same value. This pmSchedGroupIndex value must be equal to + the pmSchedIndex of one of the entries in the group. If the + entry whose pmSchedIndex equals the pmSchedGroupIndex + for the group is deleted, the agent will assign a new + pmSchedGroupIndex to all remaining members of the group. + + If an entry is not a member of a group, its pmSchedGroupIndex + must be assigned to the value of its pmSchedIndex. + + Policies that are controlled by a group of schedule entries + are active when any schedule in the group is active." + ::= { pmSchedEntry 2 } + + + + + + +pmSchedDescr OBJECT-TYPE + SYNTAX PmUTF8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The human-readable description of the purpose of this + scheduling entry." + DEFVAL { ''H } + ::= { pmSchedEntry 3 } + +pmSchedTimePeriod OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..31)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The overall range of calendar dates and times over which this + schedule is active. It is stored in a slightly extended version + of the format for a 'period-explicit' defined in RFC 2445. + This format is expressed as a string representing the + starting date and time, in which the character 'T' indicates + the beginning of the time portion, followed by the solidus + character, '/', followed by a similar string representing an + end date and time. The start of the period MUST be before the + end of the period. Date-Time values are expressed as + substrings of the form 'yyyymmddThhmmss'. For example: + + 20000101T080000/20000131T130000 + + January 1, 2000, 0800 through January 31, 2000, 1PM + + The 'Date with UTC time' format defined in RFC 2445 in which + the Date-Time string ends with the character 'Z' is not + allowed. + + This 'period-explicit' format is also extended to allow two + special cases in which one of the Date-Time strings is + replaced with a special string defined in RFC 2445: + + 1. If the first Date-Time value is replaced with the string + 'THISANDPRIOR', then the value indicates that the schedule + is active at any time prior to the Date-Time that appears + after the '/'. + + 2. If the second Date-Time is replaced with the string + 'THISANDFUTURE', then the value indicates that the schedule + is active at any time after the Date-Time that appears + before the '/'. + + + + + Note that although RFC 2445 defines these two strings, they are + not specified for use in the 'period-explicit' format. The use + of these strings represents an extension to the + 'period-explicit' format." + ::= { pmSchedEntry 4 } + +pmSchedMonth OBJECT-TYPE + SYNTAX BITS { + january(0), + february(1), + march(2), + april(3), + may(4), + june(5), + july(6), + august(7), + september(8), + october(9), + november(10), + december(11) + } + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Within the overall time period specified in the + pmSchedTimePeriod object, the value of this object specifies + the specific months within that time period when the schedule + is active. Setting all bits will cause the schedule to act + independently of the month." + DEFVAL { { january, february, march, april, may, june, july, + august, september, october, november, december } } + ::= { pmSchedEntry 5 } + +pmSchedDay OBJECT-TYPE + SYNTAX BITS { + d1(0), d2(1), d3(2), d4(3), d5(4), + d6(5), d7(6), d8(7), d9(8), d10(9), + d11(10), d12(11), d13(12), d14(13), d15(14), + d16(15), d17(16), d18(17), d19(18), d20(19), + d21(20), d22(21), d23(22), d24(23), d25(24), + d26(25), d27(26), d28(27), d29(28), d30(29), + d31(30), + r1(31), r2(32), r3(33), r4(34), r5(35), + r6(36), r7(37), r8(38), r9(39), r10(40), + r11(41), r12(42), r13(43), r14(44), r15(45), + r16(46), r17(47), r18(48), r19(49), r20(50), + r21(51), r22(52), r23(53), r24(54), r25(55), + + + + r26(56), r27(57), r28(58), r29(59), r30(60), + r31(61) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Within the overall time period specified in the + pmSchedTimePeriod object, the value of this object specifies + the specific days of the month within that time period when + the schedule is active. + + There are two sets of bits one can use to define the day + within a month: + + Enumerations starting with the letter 'd' indicate a + day in a month relative to the first day of a month. + The first day of the month can therefore be specified + by setting the bit d1(0), and d31(30) means the last + day of a month with 31 days. + + Enumerations starting with the letter 'r' indicate a + day in a month in reverse order, relative to the last + day of a month. The last day in the month can therefore + be specified by setting the bit r1(31), and r31(61) means + the first day of a month with 31 days. + + Setting multiple bits will include several days in the set + of possible days for this schedule. Setting all bits starting + with the letter 'd' or all bits starting with the letter 'r' + will cause the schedule to act independently of the day of the + month." + DEFVAL { { d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, + d11, d12, d13, d14, d15, d16, d17, d18, d19, d20, + d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, + d31, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, + r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, + r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, + r31 } } + ::= { pmSchedEntry 6 } + +pmSchedWeekDay OBJECT-TYPE + SYNTAX BITS { + sunday(0), + monday(1), + tuesday(2), + wednesday(3), + thursday(4), + friday(5), + + + + saturday(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Within the overall time period specified in the + pmSchedTimePeriod object, the value of this object specifies + the specific days of the week within that time period when + the schedule is active. Setting all bits will cause the + schedule to act independently of the day of the week." + DEFVAL { { sunday, monday, tuesday, wednesday, thursday, + friday, saturday } } + ::= { pmSchedEntry 7 } + +pmSchedTimeOfDay OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..15)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "Within the overall time period specified in the + pmSchedTimePeriod object, the value of this object specifies + the range of times in a day when the schedule is active. + + This value is stored in a format based on the RFC 2445 format + for 'time': The character 'T' followed by a 'time' string, + followed by the solidus character, '/', followed by the + character 'T', followed by a second time string. The first time + indicates the beginning of the range, and the second time + indicates the end. Thus, this value takes the following + form: + + 'Thhmmss/Thhmmss'. + + The second substring always identifies a later time than the + first substring. To allow for ranges that span midnight, + however, the value of the second string may be smaller than + the value of the first substring. Thus, 'T080000/T210000' + identifies the range from 0800 until 2100, whereas + 'T210000/T080000' identifies the range from 2100 until 0800 of + the following day. + + When a range spans midnight, by definition it includes parts + of two successive days. When one of these days is also + selected by either the MonthOfYearMask, DayOfMonthMask, and/or + DayOfWeekMask, but the other day is not, then the policy is + active only during the portion of the range that falls on the + selected day. For example, if the range extends from 2100 + + + + until 0800, and the day of week mask selects Monday and + Tuesday, then the policy is active during the following three + intervals: + + From midnight Sunday until 0800 Monday + From 2100 Monday until 0800 Tuesday + From 2100 Tuesday until 23:59:59 Tuesday + + Setting this value to 'T000000/T235959' will cause the + schedule to act independently of the time of day." + DEFVAL { '543030303030302F54323335393539'H } -- T000000/T235959 + ::= { pmSchedEntry 8 } + +pmSchedLocalOrUtc OBJECT-TYPE + SYNTAX INTEGER { + localTime(1), + utcTime(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the times represented in the + TimePeriod object and in the various Mask objects represent + local times or UTC times." + DEFVAL { utcTime } + ::= { pmSchedEntry 9 } + +pmSchedStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this schedule entry is kept + in volatile storage and lost upon reboot or + backed up by non-volatile or permanent storage. + + Conceptual rows having the value 'permanent' must allow write + access to the columnar objects pmSchedDescr, pmSchedWeekDay, + pmSchedMonth, and pmSchedDay. + + If the value of this object is 'permanent', no values in the + associated row have to be writable." + DEFVAL { volatile } + ::= { pmSchedEntry 10 } + + + + + + + +pmSchedRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this schedule entry. + + If the value of this object is active, no object in this row + may be modified." + ::= { pmSchedEntry 11 } + +-- Policy Tracking + +-- The "policy to element" (PE) table and the "element to policy" (EP) +-- table track the status of execution contexts grouped by policy and +-- element respectively. + +pmTrackingPETable OBJECT-TYPE + SYNTAX SEQUENCE OF PmTrackingPEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmTrackingPETable describes what elements + are active (under control of) a policy. This table is indexed + in order to optimize retrieval of the entire status for a + given policy." + ::= { pmMib 9 } + +pmTrackingPEEntry OBJECT-TYPE + SYNTAX PmTrackingPEEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the pmTrackingPETable. The pmPolicyIndex in + the index specifies the policy tracked by this entry. + + Note that some combinations of index values may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP + protocol. Implementations should take care to avoid such + combinations." + INDEX { pmPolicyIndex, pmTrackingPEElement, + pmTrackingPEContextName, pmTrackingPEContextEngineID } + ::= { pmTrackingPETable 1 } + + + + + + + +PmTrackingPEEntry ::= SEQUENCE { + pmTrackingPEElement RowPointer, + pmTrackingPEContextName SnmpAdminString, + pmTrackingPEContextEngineID OCTET STRING, + pmTrackingPEInfo BITS +} + +pmTrackingPEElement OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The element that is acted upon by the associated policy. + + As this object is used in the index for the + pmTrackingPETable, users of this table should be careful not + to create entries that would result in instance names with + more than 128 sub-identifiers." + ::= { pmTrackingPEEntry 1 } + +pmTrackingPEContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is not in the default SNMP context + for the target system, this object is used to identify the + context. If the element is in the default context, this object + is equal to the empty string." + ::= { pmTrackingPEEntry 2 } + +pmTrackingPEContextEngineID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 5..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is on a remote system, this object + is used to identify the remote system. This object contains + the contextEngineID of the system on which the associated + element resides. If the element is on the local system, + this object will be the empty string." + ::= { pmTrackingPEEntry 3 } + +pmTrackingPEInfo OBJECT-TYPE + SYNTAX BITS { + actionSkippedDueToPrecedence(0), + conditionRunTimeException(1), + conditionUserSignal(2), + + + + actionRunTimeException(3), + actionUserSignal(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns information about the previous policy + script executions. + + If the actionSkippedDueToPrecedence(1) bit is set, the last + execution of the associated policy condition returned non-zero, + but the action is not active, because it was trumped by a + matching policy condition in the same precedence group with a + higher precedence value. + + If the conditionRunTimeException(2) bit is set, the last + execution of the associated policy condition encountered a + run-time exception and aborted. + + If the conditionUserSignal(3) bit is set, the last + execution of the associated policy condition called the + signalError() function. + + If the actionRunTimeException(4) bit is set, the last + execution of the associated policy action encountered a + run-time exception and aborted. + + If the actionUserSignal(5) bit is set, the last + execution of the associated policy action called the + signalError() function. + + Entries will only exist in this table of one or more bits are + set. In particular, if an entry does not exist for a + particular policy/element combination, it can be assumed that + the policy's condition did not match 'this element'." + ::= { pmTrackingPEEntry 4 } + +-- Element to Policy Table + +pmTrackingEPTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmTrackingEPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The pmTrackingEPTable describes what policies + are controlling an element. This table is indexed in + order to optimize retrieval of the status of all policies + active for a given element." + + + + ::= { pmMib 10 } + +pmTrackingEPEntry OBJECT-TYPE + SYNTAX PmTrackingEPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the pmTrackingEPTable. Entries exist for all + element/policy combinations for which the policy's condition + matches and only if the schedule for the policy is active. + + The pmPolicyIndex in the index specifies the policy + tracked by this entry. + + Note that some combinations of index values may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP protocol. + Implementations should take care to avoid such combinations." + INDEX { pmTrackingEPElement, pmTrackingEPContextName, + pmTrackingEPContextEngineID, pmPolicyIndex } + ::= { pmTrackingEPTable 1 } + +PmTrackingEPEntry ::= SEQUENCE { + pmTrackingEPElement RowPointer, + pmTrackingEPContextName SnmpAdminString, + pmTrackingEPContextEngineID OCTET STRING, + pmTrackingEPStatus INTEGER +} + +pmTrackingEPElement OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The element acted upon by the associated policy. + + As this object is used in the index for the + pmTrackingEPTable, users of this table should be careful + not to create entries that would result in instance names + with more than 128 sub-identifiers." + ::= { pmTrackingEPEntry 1 } + +pmTrackingEPContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is not in the default SNMP context + + + + for the target system, this object is used to identify the + context. If the element is in the default context, this object + is equal to the empty string." + ::= { pmTrackingEPEntry 2 } + +pmTrackingEPContextEngineID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 5..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is on a remote system, this object + is used to identify the remote system. This object contains + the contextEngineID of the system on which the associated + element resides. If the element is on the local system, + this object will be the empty string." + ::= { pmTrackingEPEntry 3 } + +pmTrackingEPStatus OBJECT-TYPE + SYNTAX INTEGER { + on(1), + forceOff(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This entry will only exist if the calendar for the policy is + active and if the associated policyCondition returned 1 for + 'this element'. + + A policy can be forcibly disabled on a particular element + by setting this value to forceOff(2). The agent should then + act as though the policyCondition failed for 'this element'. + The forceOff(2) state will persist (even across reboots) until + this value is set to on(1) by a management request. The + forceOff(2) state may be set even if the entry does not + previously exist so that future policy invocations can be + avoided. + + Unless forcibly disabled, if this entry exists, its value + will be on(1)." + ::= { pmTrackingEPEntry 4 } + +-- Policy Debugging Table + +pmDebuggingTable OBJECT-TYPE + SYNTAX SEQUENCE OF PmDebuggingEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Policies that have debugging turned on will generate a log + entry in the policy debugging table for every runtime + exception that occurs in either the condition or action + code. + + The pmDebuggingTable logs debugging messages when + policies experience run-time exceptions in either the condition + or action code and the associated pmPolicyDebugging object + has been turned on. + + The maximum number of debugging entries that will be stored + and the maximum length of time an entry will be kept are an + implementation-dependent manner. If entries must + be discarded to make room for new entries, the oldest entries + must be discarded first. + + If the system restarts, all debugging entries may be deleted." + ::= { pmMib 11 } + +pmDebuggingEntry OBJECT-TYPE + SYNTAX PmDebuggingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the pmDebuggingTable. The pmPolicyIndex in the + index specifies the policy that encountered the exception + that led to this log entry. + + Note that some combinations of index values may result in an + instance name that exceeds a length of 128 sub-identifiers, + which exceeds the maximum for the SNMP protocol. + Implementations should take care to avoid such combinations." + INDEX { pmPolicyIndex, pmDebuggingElement, + pmDebuggingContextName, pmDebuggingContextEngineID, + pmDebuggingLogIndex } + ::= { pmDebuggingTable 1 } + +PmDebuggingEntry ::= SEQUENCE { + pmDebuggingElement RowPointer, + pmDebuggingContextName SnmpAdminString, + pmDebuggingContextEngineID OCTET STRING, + pmDebuggingLogIndex Unsigned32, + pmDebuggingMessage PmUTF8String +} + + + + + + +pmDebuggingElement OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The element the policy was executing on when it encountered + the error that led to this log entry. + + For example, if the element is interface 3, then this object + will contain the OID for 'ifIndex.3'. + + As this object is used in the index for the + pmDebuggingTable, users of this table should be careful + not to create entries that would result in instance names + with more than 128 sub-identifiers." + ::= { pmDebuggingEntry 1 } + +pmDebuggingContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is not in the default SNMP context + for the target system, this object is used to identify the + context. If the element is in the default context, this object + is equal to the empty string." + ::= { pmDebuggingEntry 2 } + +pmDebuggingContextEngineID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 5..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the associated element is on a remote system, this object + is used to identify the remote system. This object contains + the contextEngineID of the system on which the associated + element resides. If the element is on the local system, + this object will be the empty string." + ::= { pmDebuggingEntry 3 } + +pmDebuggingLogIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index for this log entry among other log entries + for this policy/element combination." + ::= { pmDebuggingEntry 4 } + + + +pmDebuggingMessage OBJECT-TYPE + SYNTAX PmUTF8String (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An error message generated by the policy execution + environment. It is recommended that this message include the + time of day when the message was generated, if known." + ::= { pmDebuggingEntry 5 } + +-- Notifications + +pmNotifications OBJECT IDENTIFIER ::= { pmMib 0 } + +pmNewRoleNotification NOTIFICATION-TYPE + OBJECTS { pmRoleStatus } + STATUS current + DESCRIPTION + "The pmNewRoleNotification is sent when an agent is configured + with its first instance of a previously unused role string + (not every time a new element is given a particular role). + + An instance of the pmRoleStatus object is sent containing + the new roleString in its index. In the event that two or + more elements are given the same role simultaneously, it is an + implementation-dependent matter as to which pmRoleTable + instance will be included in the notification." + ::= { pmNotifications 1 } + +pmNewCapabilityNotification NOTIFICATION-TYPE + OBJECTS { pmCapabilitiesType } + STATUS current + DESCRIPTION + "The pmNewCapabilityNotification is sent when an agent + gains a new capability that did not previously exist in any + element on the system (not every time an element gains a + particular capability). + + An instance of the pmCapabilitiesType object is sent containing + the identity of the new capability. In the event that two or + more elements gain the same capability simultaneously, it is an + implementation-dependent matter as to which pmCapabilitiesType + instance will be included in the notification." + ::= { pmNotifications 2 } + +pmAbnormalTermNotification NOTIFICATION-TYPE + OBJECTS { pmTrackingPEInfo } + STATUS current + + + + DESCRIPTION + "The pmAbnormalTermNotification is sent when a policy's + pmPolicyAbnormalTerminations gauge value changes from zero to + any value greater than zero and no such notification has been + sent for that policy in the last 5 minutes. + + The notification contains an instance of the pmTrackingPEInfo + object where the pmPolicyIndex component of the index + identifies the associated policy and the rest of the index + identifies an element on which the policy failed." + ::= { pmNotifications 3 } + +-- Compliance Statements + + pmConformance OBJECT IDENTIFIER ::= { pmMib 12 } + pmCompliances OBJECT IDENTIFIER ::= { pmConformance 1 } + pmGroups OBJECT IDENTIFIER ::= { pmConformance 2 } + +pmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the Policy-Based Management MIB" + MODULE -- this module + MANDATORY-GROUPS { pmPolicyManagementGroup, pmSchedGroup, + pmNotificationGroup } + ::= { pmCompliances 1 } + +pmPolicyManagementGroup OBJECT-GROUP + OBJECTS { pmPolicyPrecedenceGroup, pmPolicyPrecedence, + pmPolicySchedule, pmPolicyElementTypeFilter, + pmPolicyConditionScriptIndex, pmPolicyActionScriptIndex, + pmPolicyParameters, + pmPolicyConditionMaxLatency, pmPolicyActionMaxLatency, + pmPolicyMaxIterations, + pmPolicyDescription, pmPolicyMatches, + pmPolicyAbnormalTerminations, + pmPolicyExecutionErrors, pmPolicyDebugging, + pmPolicyStorageType, pmPolicyAdminStatus, + pmPolicyRowStatus, pmPolicyCodeText, pmPolicyCodeStatus, + pmElementTypeRegMaxLatency, pmElementTypeRegDescription, + pmElementTypeRegStorageType, pmElementTypeRegRowStatus, + pmRoleStatus, + pmCapabilitiesType, pmCapabilitiesOverrideState, + pmCapabilitiesOverrideRowStatus, + pmTrackingPEInfo, + pmTrackingEPStatus, + pmDebuggingMessage } + + + + STATUS current + DESCRIPTION + "Objects that allow for the creation and management of + configuration policies." + ::= { pmGroups 1 } + +pmSchedGroup OBJECT-GROUP + OBJECTS { pmSchedLocalTime, pmSchedGroupIndex, + pmSchedDescr, pmSchedTimePeriod, + pmSchedMonth, pmSchedDay, pmSchedWeekDay, + pmSchedTimeOfDay, pmSchedLocalOrUtc, pmSchedStorageType, + pmSchedRowStatus + } + STATUS current + DESCRIPTION + "Objects that allow for the scheduling of policies." + ::= { pmGroups 2 } + +pmNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pmNewRoleNotification, + pmNewCapabilityNotification, + pmAbnormalTermNotification } + STATUS current + DESCRIPTION + "Notifications sent by an Policy MIB agent." + ::= { pmGroups 3 } + +pmBaseFunctionLibrary OBJECT IDENTIFIER ::= { pmGroups 4 } + +END diff --git a/mibs/ietf/POWER-ETHERNET-MIB b/mibs/ietf/POWER-ETHERNET-MIB new file mode 100644 index 0000000..3b45a60 --- /dev/null +++ b/mibs/ietf/POWER-ETHERNET-MIB @@ -0,0 +1,659 @@ +POWER-ETHERNET-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2, OBJECT-TYPE, Integer32, + Gauge32, Counter32, NOTIFICATION-TYPE + FROM SNMPv2-SMI + TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + powerEthernetMIB MODULE-IDENTITY + + LAST-UPDATED "200311240000Z" -- November 24, 2003 + ORGANIZATION "IETF Ethernet Interfaces and Hub MIB + Working Group" + + + + + + + CONTACT-INFO + " + WG Charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-requests@ietf.org + In Body: subscribe your_email_address + + Chair: Dan Romascanu + Avaya + Tel: +972-3-645-8414 + Email: dromasca@avaya.com + + Editor: Avi Berger + PowerDsine Inc. + Tel: 972-9-7755100 Ext 307 + Fax: 972-9-7755120 + E-mail: avib@PowerDsine.com + " + + DESCRIPTION + "The MIB module for managing Power Source Equipment + (PSE) working according to the IEEE 802.af Powered + Ethernet (DTE Power via MDI) standard. + + The following terms are used throughout this + MIB module. For complete formal definitions, + the IEEE 802.3 standards should be consulted + wherever possible: + + Group - A recommended, but optional, entity + defined by the IEEE 802.3 management standard, + in order to support a modular numbering scheme. + The classical example allows an implementor to + represent field-replaceable units as groups of + ports, with the port numbering matching the + modular hardware implementation. + + Port - This entity identifies the port within the group + for which this entry contains information. The numbering + scheme for ports is implementation specific. + + Copyright (c) The Internet Society (2003). This version + of this MIB module is part of RFC 3621; See the RFC + itself for full legal notices." + + + + + REVISION "200311240000Z" -- November 24, 2003 + DESCRIPTION "Initial version, published as RFC 3621." + ::= { mib-2 105 } + +pethNotifications OBJECT IDENTIFIER ::= { powerEthernetMIB 0 } +pethObjects OBJECT IDENTIFIER ::= { powerEthernetMIB 1 } +pethConformance OBJECT IDENTIFIER ::= { powerEthernetMIB 2 } + +-- PSE Objects + + pethPsePortTable OBJECT-TYPE + SYNTAX SEQUENCE OF PethPsePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of objects that display and control the power + characteristics of power Ethernet ports on a Power Source + Entity (PSE) device. This group will be implemented in + managed power Ethernet switches and mid-span devices. + Values of all read-write objects in this table are + persistent at restart/reboot." + ::= { pethObjects 1 } + + pethPsePortEntry OBJECT-TYPE + SYNTAX PethPsePortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of objects that display and control the power + characteristics of a power Ethernet PSE port." + INDEX { pethPsePortGroupIndex , pethPsePortIndex } + ::= { pethPsePortTable 1 } + + PethPsePortEntry ::= SEQUENCE { + pethPsePortGroupIndex + Integer32, + pethPsePortIndex + Integer32, + pethPsePortAdminEnable + TruthValue, + pethPsePortPowerPairsControlAbility + TruthValue, + pethPsePortPowerPairs + INTEGER, + pethPsePortDetectionStatus + INTEGER, + pethPsePortPowerPriority + INTEGER, + + + + pethPsePortMPSAbsentCounter + Counter32, + pethPsePortType + SnmpAdminString, + pethPsePortPowerClassifications + INTEGER, + pethPsePortInvalidSignatureCounter + Counter32, + pethPsePortPowerDeniedCounter + Counter32, + pethPsePortOverLoadCounter + Counter32, + pethPsePortShortCounter + Counter32 + } + + pethPsePortGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the group + containing the port to which a power Ethernet PSE is + connected. Group means box in the stack, module in a + rack and the value 1 MUST be used for non-modular devices. + Furthermore, the same value MUST be used in this variable, + pethMainPseGroupIndex, and pethNotificationControlGroupIndex + to refer to a given box in a stack or module in the rack." + ::= { pethPsePortEntry 1 } + + pethPsePortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the power Ethernet PSE + port within group pethPsePortGroupIndex to which the + power Ethernet PSE entry is connected." + ::= { pethPsePortEntry 2 } + + pethPsePortAdminEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "true (1) An interface which can provide the PSE functions. + false(2) The interface will act as it would if it had no PSE + function." + + + + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.2 aPSEAdminState" + ::= { pethPsePortEntry 3 } + + pethPsePortPowerPairsControlAbility OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the capability of controlling the power pairs + functionality to switch pins for sourcing power. + The value true indicate that the device has the capability + to control the power pairs. When false the PSE Pinout + Alternative used cannot be controlled through the + PethPsePortAdminEnable attribute." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.3 + aPSEPowerPairsControlAbility" + ::= { pethPsePortEntry 4 } + + pethPsePortPowerPairs OBJECT-TYPE + SYNTAX INTEGER { + signal(1), + spare(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Describes or controls the pairs in use. If the value of + pethPsePortPowerPairsControl is true, this object is + writable. + A value of signal(1) means that the signal pairs + only are in use. + A value of spare(2) means that the spare pairs + only are in use." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.4 aPSEPowerPairs" + ::= { pethPsePortEntry 5 } + + pethPsePortDetectionStatus OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + searching(2), + deliveringPower(3), + fault(4), + test(5), + otherFault(6) + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Describes the operational status of the port PD detection. + A value of disabled(1)- indicates that the PSE State diagram + is in the state DISABLED. + A value of deliveringPower(3) - indicates that the PSE State + diagram is in the state POWER_ON for a duration greater than + tlim max (see IEEE Std 802.3af Table 33-5 tlim). + A value of fault(4) - indicates that the PSE State diagram is + in the state TEST_ERROR. + A value of test(5) - indicates that the PSE State diagram is + in the state TEST_MODE. + A value of otherFault(6) - indicates that the PSE State + diagram is in the state IDLE due to the variable + error_conditions. + A value of searching(2)- indicates the PSE State diagram is + in a state other than those listed above." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.5 + aPSEPowerDetectionStatus" + ::= { pethPsePortEntry 6 } + + pethPsePortPowerPriority OBJECT-TYPE + SYNTAX INTEGER { + critical(1), + high(2), + low(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the priority of the port from the point + of view of a power management algorithm. The priority that + is set by this variable could be used by a control mechanism + that prevents over current situations by disconnecting first + ports with lower power priority. Ports that connect devices + critical to the operation of the network - like the E911 + telephones ports - should be set to higher priority." + ::= { pethPsePortEntry 7 } + + pethPsePortMPSAbsentCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when the PSE state diagram + transitions directly from the state POWER_ON to the + + + + state IDLE due to tmpdo_timer_done being asserted." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.11 + aPSEMPSAbsentCounter" + ::= { pethPsePortEntry 8 } + + pethPsePortType OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A manager will set the value of this variable to indicate + the type of powered device that is connected to the port. + The default value supplied by the agent if no value has + ever been set should be a zero-length octet string." + ::= { pethPsePortEntry 9 } + + pethPsePortPowerClassifications OBJECT-TYPE + SYNTAX INTEGER { + class0(1), + class1(2), + class2(3), + class3(4), + class4(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Classification is a way to tag different terminals on the + Power over LAN network according to their power consumption. + Devices such as IP telephones, WLAN access points and others, + will be classified according to their power requirements. + + The meaning of the classification labels is defined in the + IEEE specification. + + This variable is valid only while a PD is being powered, + that is, while the attribute pethPsePortDetectionStatus + is reporting the enumeration deliveringPower." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.6 + aPSEPowerClassification" + ::= { pethPsePortEntry 10 } + + pethPsePortInvalidSignatureCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This counter is incremented when the PSE state diagram + enters the state SIGNATURE_INVALID." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.7 + aPSEInvalidSignatureCounter" + ::= { pethPsePortEntry 11 } + + pethPsePortPowerDeniedCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when the PSE state diagram + enters the state POWER_DENIED." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.8 + aPSEPowerDeniedCounter" + ::= { pethPsePortEntry 12 } + + pethPsePortOverLoadCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when the PSE state diagram + enters the state ERROR_DELAY_OVER." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.9 + aPSEOverLoadCounter" + ::= { pethPsePortEntry 13 } + + pethPsePortShortCounter OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when the PSE state diagram + enters the state ERROR_DELAY_SHORT." + REFERENCE + "IEEE Std 802.3af Section 30.9.1.1.10 + aPSEShortCounter" + ::= { pethPsePortEntry 14 } + +-- Main PSE Objects + +pethMainPseObjects OBJECT IDENTIFIER ::= { pethObjects 3 } + + + + +pethMainPseTable OBJECT-TYPE + SYNTAX SEQUENCE OF PethMainPseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of objects that display and control attributes + of the main power source in a PSE device. Ethernet + switches are one example of boxes that would support + these objects. + Values of all read-write objects in this table are + persistent at restart/reboot." + ::= { pethMainPseObjects 1 } + + pethMainPseEntry OBJECT-TYPE + SYNTAX PethMainPseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of objects that display and control the Main + power of a PSE. " + INDEX { pethMainPseGroupIndex } + ::= { pethMainPseTable 1 } + + PethMainPseEntry ::= SEQUENCE { + pethMainPseGroupIndex + Integer32, + pethMainPsePower + Gauge32 , + pethMainPseOperStatus + INTEGER, + pethMainPseConsumptionPower + Gauge32, + pethMainPseUsageThreshold + Integer32 + } + pethMainPseGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the group to which + power Ethernet PSE is connected. Group means (box in + the stack, module in a rack) and the value 1 MUST be + used for non-modular devices. Furthermore, the same + value MUST be used in this variable, pethPsePortGroupIndex, + and pethNotificationControlGroupIndex to refer to a + given box in a stack or module in a rack." + ::= { pethMainPseEntry 1 } + + + + pethMainPsePower OBJECT-TYPE + SYNTAX Gauge32 (1..65535) + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nominal power of the PSE expressed in Watts." + ::= { pethMainPseEntry 2 } + + pethMainPseOperStatus OBJECT-TYPE + SYNTAX INTEGER { + on(1), + off(2), + faulty(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational status of the main PSE." + ::= { pethMainPseEntry 3 } + + pethMainPseConsumptionPower OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured usage power expressed in Watts." + ::= { pethMainPseEntry 4 } + + pethMainPseUsageThreshold OBJECT-TYPE + SYNTAX Integer32 (1..99) + UNITS "%" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The usage threshold expressed in percents for + comparing the measured power and initiating + an alarm if the threshold is exceeded." + ::= { pethMainPseEntry 5 } + +-- Notification Control Objects + +pethNotificationControl OBJECT IDENTIFIER ::= { pethObjects 4 } + +pethNotificationControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF PethNotificationControlEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "A table of objects that display and control the + Notification on a PSE device. + Values of all read-write objects in this table are + persistent at restart/reboot." + ::= { pethNotificationControl 1 } + + pethNotificationControlEntry OBJECT-TYPE + SYNTAX PethNotificationControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of objects that control the Notification events." + INDEX { pethNotificationControlGroupIndex } + ::= { pethNotificationControlTable 1 } + + PethNotificationControlEntry ::= SEQUENCE { + pethNotificationControlGroupIndex + Integer32, + pethNotificationControlEnable + TruthValue + } + pethNotificationControlGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the group. Group + means box in the stack, module in a rack and the value + 1 MUST be used for non-modular devices. Furthermore, + the same value MUST be used in this variable, + pethPsePortGroupIndex, and + pethMainPseGroupIndex to refer to a given box in a + stack or module in a rack. " + ::= { pethNotificationControlEntry 1 } + + pethNotificationControlEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls, on a per-group 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." + ::= { pethNotificationControlEntry 2 } + + + + +-- +-- Notifications Section +-- +-- + + pethPsePortOnOffNotification NOTIFICATION-TYPE + OBJECTS { pethPsePortDetectionStatus } + STATUS current + DESCRIPTION + " This Notification indicates if Pse Port is delivering or + not power to the PD. This Notification SHOULD be sent on + every status change except in the searching mode. + At least 500 msec must elapse between notifications + being emitted by the same object instance." + ::= { pethNotifications 1 } + + pethMainPowerUsageOnNotification NOTIFICATION-TYPE + OBJECTS { pethMainPseConsumptionPower } + STATUS current + DESCRIPTION + " This Notification indicate PSE Threshold usage + indication is on, the usage power is above the + threshold. At least 500 msec must elapse between + notifications being emitted by the same object + instance." + ::= { pethNotifications 2 } + + pethMainPowerUsageOffNotification NOTIFICATION-TYPE + OBJECTS { pethMainPseConsumptionPower } + STATUS current + DESCRIPTION + " This Notification indicates PSE Threshold usage indication + off, the usage power is below the threshold. + At least 500 msec must elapse between notifications being + emitted by the same object instance." + ::= { pethNotifications 3 } + +-- +-- Conformance Section +-- +pethCompliances OBJECT IDENTIFIER ::= { pethConformance 1 } +pethGroups OBJECT IDENTIFIER ::= { pethConformance 2 } + +pethCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Power Ethernet MIB." + + + + MODULE -- this module + MANDATORY-GROUPS { pethPsePortGroup, + pethPsePortNotificationGroup, + pethNotificationControlGroup + } + GROUP pethMainPseGroup + DESCRIPTION + "The pethMainPseGroup is mandatory for PSE systems + that implement a main power supply." + GROUP pethMainPowerNotificationGroup + DESCRIPTION + "The pethMainPowerNotificationGroup is mandatory for + PSE systems that implement a main power supply." + ::= { pethCompliances 1 } + +pethPsePortGroup OBJECT-GROUP + OBJECTS { + pethPsePortAdminEnable, + pethPsePortPowerPairsControlAbility, + pethPsePortPowerPairs, + pethPsePortDetectionStatus, + pethPsePortPowerPriority, + pethPsePortMPSAbsentCounter, + pethPsePortInvalidSignatureCounter, + pethPsePortPowerDeniedCounter, + pethPsePortOverLoadCounter, + pethPsePortShortCounter, + pethPsePortType, + pethPsePortPowerClassifications + } + STATUS current + DESCRIPTION + "PSE Port objects." + ::= { pethGroups 1 } + +pethMainPseGroup OBJECT-GROUP + OBJECTS { + pethMainPsePower, + pethMainPseOperStatus, + pethMainPseConsumptionPower, + pethMainPseUsageThreshold + } + STATUS current + DESCRIPTION + "Main PSE Objects. " + ::= { pethGroups 2 } + +pethNotificationControlGroup OBJECT-GROUP + + + + OBJECTS { + pethNotificationControlEnable + } + STATUS current + DESCRIPTION + "Notification Control Objects. " + ::= { pethGroups 3 } + +pethPsePortNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pethPsePortOnOffNotification} + STATUS current + DESCRIPTION "Pse Port Notifications." + ::= { pethGroups 4 } + + pethMainPowerNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { pethMainPowerUsageOnNotification, + pethMainPowerUsageOffNotification} + STATUS current + DESCRIPTION "Main PSE Notifications." + ::= { pethGroups 5 } + +END diff --git a/mibs/ietf/PPP-BRIDGE-NCP-MIB b/mibs/ietf/PPP-BRIDGE-NCP-MIB new file mode 100644 index 0000000..2dac327 --- /dev/null +++ b/mibs/ietf/PPP-BRIDGE-NCP-MIB @@ -0,0 +1,449 @@ +PPP-BRIDGE-NCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + ifIndex + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212 + ppp + FROM PPP-LCP-MIB; + + pppBridge OBJECT IDENTIFIER ::= { ppp 4 } + +-- +-- The PPP Bridge NCP Group. +-- Implementation of this group is mandatory for all +-- PPP implementations that support MAC Bridging over +-- PPP (RFC1220). +-- + +-- The following object reflect the values of the option +-- parameters used in the PPP Link Control Protocol +-- pppBridgeLocalToRemoteTinygramCompression +-- pppBridgeRemoteToLocalTinygramCompression +-- pppBridgeLocalToRemoteLanId +-- pppBridgeRemoteToLocalLanId +-- +-- These values are not available until after the PPP Option + +-- negotiation has completed, which is indicated by the link +-- reaching the open state (i.e. pppBridgeOperStatus is set to +-- opened). +-- +-- Therefore, when pppBridgeOperStatus is not opened +-- the contents of these objects is undefined. The value +-- returned when accessing the objects is an implementation +-- dependent issue. + + +pppBridgeTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppBridgeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the parameters and statistics + for the local PPP entity that are related to + the operation of Bridging over the PPP." + ::= { pppBridge 1 } + + +pppBridgeEntry OBJECT-TYPE + SYNTAX PppBridgeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Bridging information for a particular PPP + link." + INDEX { ifIndex } + ::= { pppBridgeTable 1 } + + +PppBridgeEntry ::= SEQUENCE { + pppBridgeOperStatus + INTEGER, + pppBridgeLocalToRemoteTinygramCompression + INTEGER, + pppBridgeRemoteToLocalTinygramCompression + INTEGER, + pppBridgeLocalToRemoteLanId + INTEGER, + pppBridgeRemoteToLocalLanId + INTEGER +} + +pppBridgeOperStatus OBJECT-TYPE + SYNTAX INTEGER {opened(1), not-opened(2)} + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The operational status of the Bridge network + protocol. If the value of this object is up + then the finite state machine for the Bridge + network protocol has reached the Opened state." + ::= { pppBridgeEntry 1 } + + +pppBridgeLocalToRemoteTinygramCompression OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local node will perform + Tinygram Compression when sending packets to + the remote entity. If false then the local + entity will not perform Tinygram Compression. + If true then the local entity will perform + Tinygram Compression. The value of this object + is meaningful only when the link has reached + the open state (pppBridgeOperStatus is + opened)." + REFERENCE + "Section 6.7, Tinygram Compression Option, of + RFC1220" + ::= { pppBridgeEntry 2 } + + +pppBridgeRemoteToLocalTinygramCompression OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "If false(1) then the remote entity is not + expected to perform Tinygram Compression. If + true then the remote entity is expected to + perform Tinygram Compression. The value of this + object is meaningful only when the link has + reached the open state (pppBridgeOperStatus is + opened)." + REFERENCE + "Section 6.7, Tinygram Compression Option, of + RFC1220" + ::= { pppBridgeEntry 3 } + +pppBridgeLocalToRemoteLanId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local node will include + the LAN Identification field in transmitted + packets or not. If false(1) then the local node + will not transmit this field, true(2) means + that the field will be transmitted. The value + of this object is meaningful only when the link + has reached the open state (pppBridgeOperStatus + is opened)." + REFERENCE + "Section 6.8, LAN Identification Option, of + RFC1220" + ::= { pppBridgeEntry 4 } + + +pppBridgeRemoteToLocalLanId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the remote node has + indicated that it will include the LAN + Identification field in transmitted packets or + not. If false(1) then the field will not be + transmitted, if true(2) then the field will be + transmitted. The value of this object is + meaningful only when the link has reached the + open state (pppBridgeOperStatus is opened)." + REFERENCE + "Section 6.8, LAN Identification Option, of + RFC1220" + ::= { pppBridgeEntry 5 } + + +-- +-- The PPP Bridge Configuration table +-- + +pppBridgeConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppBridgeConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the parameters and statistics + for the local PPP entity that are related to + the operation of Bridging over the PPP." + ::= { pppBridge 2 } + + +pppBridgeConfigEntry OBJECT-TYPE + SYNTAX PppBridgeConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Bridging Configuration information for a + particular PPP link." + INDEX { ifIndex } + ::= { pppBridgeConfigTable 1 } + + +PppBridgeConfigEntry ::= SEQUENCE { + pppBridgeConfigAdminStatus + INTEGER, + pppBridgeConfigTinygram + INTEGER, + pppBridgeConfigRingId + INTEGER, + pppBridgeConfigLineId + INTEGER, + pppBridgeConfigLanId + INTEGER +} + + +pppBridgeConfigAdminStatus OBJECT-TYPE + SYNTAX INTEGER { open(1), close(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The immediate desired status of the Bridging + network protocol. Setting this object to open + will inject an administrative open event into + the Bridging network protocol's finite state + machine. Setting this object to close will + inject an administrative close event into the + Bridging network protocol's finite state + machine." + ::= { pppBridgeConfigEntry 1 } + + +pppBridgeConfigTinygram OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If false then the local BNCP entity will not + initiate the Tinygram Compression Option + Negotiation. If true then the local BNCP entity + will initiate negotiation of this option." + REFERENCE + "Section 6.7, Tinygram Compression Option, of + RFC1220" + DEFVAL { true } + ::= { pppBridgeConfigEntry 2 } + + +pppBridgeConfigRingId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If false then the local PPP Entity will not + initiate a Remote Ring Identification Option + negotiation. If true then the local PPP entity + will intiate this negotiation. This MIB object + is relevant only if the interface is for 802.5 + Token Ring bridging." + REFERENCE + "Section 6.4, IEEE 802.5 Remote Ring + Identification Option, of RFC1220" + DEFVAL { false } + ::= { pppBridgeConfigEntry 3 } + + +pppBridgeConfigLineId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If false then the local PPP Entity is not to + initiate a Line Identification Option + negotiation. If true then the local PPP entity + will intiate this negotiation. This MIB object + is relevant only if the interface is for 802.5 + Token Ring bridging." + REFERENCE + "Section 6.5, IEEE 802.5 Line Identification + Option, of RFC1220" + DEFVAL { false } + ::= { pppBridgeConfigEntry 4 } + +pppBridgeConfigLanId OBJECT-TYPE + SYNTAX INTEGER { false(1), true(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If false then the local BNCP entity will not + initiate the LAN Identification Option + Negotiation. If true then the local BNCP entity + will initiate negotiation of this option." + REFERENCE + "Section 6.8, LAN Identification Option, of + RFC1220" + DEFVAL { false } + ::= { pppBridgeConfigEntry 5 } + + +-- +-- The PPP Bridge Media Status Table +-- + +pppBridgeMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppBridgeMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table identifying which MAC media types are + enabled for the Bridging NCPs." + ::= { pppBridge 3 } + + +pppBridgeMediaEntry OBJECT-TYPE + SYNTAX PppBridgeMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Status of a specific MAC Type for a specific + PPP Link." + INDEX { ifIndex, pppBridgeMediaMacType } + ::= { pppBridgeMediaTable 1 } + + +PppBridgeMediaEntry ::= SEQUENCE { + pppBridgeMediaMacType + INTEGER, + pppBridgeMediaLocalStatus + INTEGER, + pppBridgeMediaRemoteStatus + INTEGER +} + +pppBridgeMediaMacType OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC type for which this entry in the + pppBridgeMediaTable is providing status + information. Valid values for this object are + defined in Section 6.6 MAC Type Support + Selection of RFC1220 (Bridging Point-to-Point + Protocol)." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaEntry 1 } + + +pppBridgeMediaLocalStatus OBJECT-TYPE + SYNTAX INTEGER { accept(1), dont-accept(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP Bridging + Entity will accept packets of the protocol type + identified in pppBridgeMediaMacType on the PPP + link identified by ifIndex or not. If this + object is accept then any packets of the + indicated MAC type will be received and + properly processed. If this object is dont- + accept then received packets of the indicated + MAC type will not be properly processed." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaEntry 2 } + + +pppBridgeMediaRemoteStatus OBJECT-TYPE + SYNTAX INTEGER { accept(1), dont-accept(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP Bridging + Entity believes that the remote PPP Bridging + Entity will accept packets of the protocol type + identified in pppBridgeMediaMacType on the PPP + link identified by ifIndex or not." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaEntry 3 } + + +-- +-- The PPP Bridge Media Configuration Table +-- + +pppBridgeMediaConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppBridgeMediaConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table identifying which MAC media types are + enabled for the Bridging NCPs." + ::= { pppBridge 4 } + + +pppBridgeMediaConfigEntry OBJECT-TYPE + SYNTAX PppBridgeMediaConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Status of a specific MAC Type for a specific + PPP Link." + INDEX { ifIndex, pppBridgeMediaConfigMacType } + ::= { pppBridgeMediaConfigTable 1 } + + +PppBridgeMediaConfigEntry ::= SEQUENCE { + pppBridgeMediaConfigMacType + INTEGER, + pppBridgeMediaConfigLocalStatus + INTEGER +} + + +pppBridgeMediaConfigMacType OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The MAC type for which this entry in the + pppBridgeMediaConfigTable is providing status + information. Valid values for this object are + defined in Section 6.6 MAC Type Support + Selection of RFC1220 (Bridging Point-to-Point + Protocol)." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaConfigEntry 1 } + + +pppBridgeMediaConfigLocalStatus OBJECT-TYPE + SYNTAX INTEGER { accept(1), dont-accept(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP Bridging + Entity should accept packets of the protocol + type identified in pppBridgeMediaConfigMacType + on the PPP link identified by ifIndex or not. + Setting this object to the value dont-accept + has the affect of invalidating the + corresponding entry in the + pppBridgeMediaConfigTable object. It is an + implementation-specific matter as to whether + the agent removes an invalidated entry from the + table. Accordingly, management stations must be + prepared to receive tabular information from + agents that corresponds to entries not + currently in use. Changing this object will + have effect when the link is next restarted." + REFERENCE + "Section 6.6, MAC Type Support Selection, of + RFC1212." + ::= { pppBridgeMediaConfigEntry 2 } + + +END diff --git a/mibs/ietf/PPP-IP-NCP-MIB b/mibs/ietf/PPP-IP-NCP-MIB new file mode 100644 index 0000000..a823971 --- /dev/null +++ b/mibs/ietf/PPP-IP-NCP-MIB @@ -0,0 +1,214 @@ +PPP-IP-NCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + ifIndex + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212 + ppp + FROM PPP-LCP-MIB; + + -- The PPP IP Group. + -- Implementation of this group is mandatory for all + -- PPP implementations that support operating IP over PPP. + + pppIp OBJECT IDENTIFIER ::= { ppp 3 } + + +pppIpTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppIpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the IP parameters and + statistics for the local PPP entity." + ::= { pppIp 1 } + + +pppIpEntry OBJECT-TYPE + SYNTAX PppIpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "IPCP status information for a particular PPP + link." + INDEX { ifIndex } + ::= { pppIpTable 1 } + + +PppIpEntry ::= SEQUENCE { + pppIpOperStatus + INTEGER, + pppIpLocalToRemoteCompressionProtocol + INTEGER, + pppIpRemoteToLocalCompressionProtocol + INTEGER, + pppIpRemoteMaxSlotId + INTEGER, + pppIpLocalMaxSlotId + INTEGER +} + +-- The following object reflect the values of the option +-- parameters used in the PPP IP Control Protocol +-- pppIpLocalToRemoteCompressionProtocol +-- pppIpRemoteToLocalCompressionProtocol +-- pppIpRemoteMaxSlotId +-- pppIpLocalMaxSlotId +-- These values are not available until after the PPP Option +-- negotiation has completed, which is indicated by the link +-- reaching the open state (i.e., pppIpOperStatus is set to +-- opened). +-- +-- Therefore, when pppIpOperStatus is not opened +-- the contents of these objects is undefined. The value +-- returned when accessing the objects is an implementation +-- dependent issue. + + +pppIpOperStatus OBJECT-TYPE + SYNTAX INTEGER {opened(1), not-opened(2)} + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The operational status of the IP network + protocol. If the value of this object is up + then the finite state machine for the IP + network protocol has reached the Opened state." + ::= { pppIpEntry 1 } + + +pppIpLocalToRemoteCompressionProtocol OBJECT-TYPE + SYNTAX INTEGER { + none(1), + vj-tcp(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP compression protocol that the local + PPP-IP entity uses when sending packets to the + remote PPP-IP entity. The value of this object + is meaningful only when the link has reached + the open state (pppIpOperStatus is opened)." + ::= { pppIpEntry 2 } + + +pppIpRemoteToLocalCompressionProtocol OBJECT-TYPE + SYNTAX INTEGER { + none(1), + vj-tcp(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP compression protocol that the remote + PPP-IP entity uses when sending packets to the + local PPP-IP entity. The value of this object + is meaningful only when the link has reached + the open state (pppIpOperStatus is opened)." + ::= { pppIpEntry 3 } + + +pppIpRemoteMaxSlotId OBJECT-TYPE + SYNTAX INTEGER(0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Max-Slot-Id parameter that the remote node + has advertised and that is in use on the link. + If vj-tcp header compression is not in use on + the link then the value of this object shall be + 0. The value of this object is meaningful only + when the link has reached the open state + (pppIpOperStatus is opened)." + ::= { pppIpEntry 4 } + + +pppIpLocalMaxSlotId OBJECT-TYPE + SYNTAX INTEGER(0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Max-Slot-Id parameter that the local node + has advertised and that is in use on the link. + If vj-tcp header compression is not in use on + the link then the value of this object shall be + 0. The value of this object is meaningful only + when the link has reached the open state + (pppIpOperStatus is opened)." + ::= { pppIpEntry 5 } + + +-- +-- The PPP IP Configuration table. +-- This is a separate table in order to facilitate +-- placing these variables in a separate MIB view. +-- + +pppIpConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppIpConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing configuration variables for + the IPCP for the local PPP entity." + ::= { pppIp 2 } + + +pppIpConfigEntry OBJECT-TYPE + SYNTAX PppIpConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "IPCP information for a particular PPP link." + INDEX { ifIndex } + ::= { pppIpConfigTable 1 } + + +PppIpConfigEntry ::= SEQUENCE { + pppIpConfigAdminStatus + INTEGER, + pppIpConfigCompression + INTEGER +} + +pppIpConfigAdminStatus OBJECT-TYPE + SYNTAX INTEGER {open(1), close(2)} + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The immediate desired status of the IP network + protocol. Setting this object to open will + inject an administrative open event into the IP + network protocol's finite state machine. + Setting this object to close will inject an + administrative close event into the IP network + protocol's finite state machine." + ::= { pppIpConfigEntry 1 } + + +pppIpConfigCompression OBJECT-TYPE + SYNTAX INTEGER { + none(1), + vj-tcp(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If none(1) then the local node will not + attempt to negotiate any IP Compression option. + Otherwise, the local node will attempt to + negotiate compression mode indicated by the + enumerated value. Changing this object will + have effect when the link is next restarted." + REFERENCE + "Section 4.0, Van Jacobson TCP/IP Header + Compression of RFC1332." + DEFVAL { none } + ::= { pppIpConfigEntry 2 } + + +END diff --git a/mibs/ietf/PPP-LCP-MIB b/mibs/ietf/PPP-LCP-MIB new file mode 100644 index 0000000..6e22c38 --- /dev/null +++ b/mibs/ietf/PPP-LCP-MIB @@ -0,0 +1,798 @@ +PPP-LCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + ifIndex, transmission + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + + -- PPP MIB + + ppp OBJECT IDENTIFIER ::= { transmission 23 } + + pppLcp OBJECT IDENTIFIER ::= { ppp 1 } + + -- The individual groups within the PPP-LCP-MIB + + pppLink OBJECT IDENTIFIER ::= { pppLcp 1 } + pppLqr OBJECT IDENTIFIER ::= { pppLcp 2 } + pppTests OBJECT IDENTIFIER ::= { pppLcp 3 } + + +-- 4.1. PPP Link Group + + +-- +-- The PPP Link Group. Implementation of this +-- group is mandatory for all PPP entities. +-- + +-- The following object reflect the values of the option +-- parameters used in the PPP Link Control Protocol +-- pppLinkStatusLocalMRU +-- pppLinkStatusRemoteMRU +-- pppLinkStatusLocalToPeerACCMap +-- pppLinkStatusPeerToLocalACCMap +-- pppLinkStatusLocalToRemoteProtocolCompression +-- pppLinkStatusRemoteToLocalProtocolCompression +-- pppLinkStatusLocalToRemoteACCompression +-- pppLinkStatusRemoteToLocalACCompression +-- pppLinkStatusTransmitFcsSize +-- pppLinkStatusReceiveFcsSize +-- +-- These values are not available until after the PPP Option +-- negotiation has completed, which is indicated by the link +-- reaching the open state (i.e., ifOperStatus is set to +-- up). +-- +-- Therefore, when ifOperStatus is not up +-- the contents of these objects is undefined. The value +-- returned when accessing the objects is an implementation +-- dependent issue. + + +pppLinkStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLinkStatusEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing PPP-link specific variables + for this PPP implementation." + ::= { pppLink 1 } + +pppLinkStatusEntry OBJECT-TYPE + SYNTAX PppLinkStatusEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Management information about a particular PPP + Link." + INDEX { ifIndex } + ::= { pppLinkStatusTable 1 } + + +PppLinkStatusEntry ::= SEQUENCE { + pppLinkStatusPhysicalIndex + INTEGER, + pppLinkStatusBadAddresses + Counter, + pppLinkStatusBadControls + Counter, + pppLinkStatusPacketTooLongs + Counter, + pppLinkStatusBadFCSs + Counter, + pppLinkStatusLocalMRU + INTEGER, + pppLinkStatusRemoteMRU + INTEGER, + pppLinkStatusLocalToPeerACCMap + OCTET STRING, + pppLinkStatusPeerToLocalACCMap + OCTET STRING, + pppLinkStatusLocalToRemoteProtocolCompression + INTEGER, + pppLinkStatusRemoteToLocalProtocolCompression + INTEGER, + pppLinkStatusLocalToRemoteACCompression + INTEGER, + pppLinkStatusRemoteToLocalACCompression + INTEGER, + pppLinkStatusTransmitFcsSize + INTEGER, + pppLinkStatusReceiveFcsSize + INTEGER + } +pppLinkStatusPhysicalIndex OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of ifIndex that identifies the + lower-level interface over which this PPP Link + is operating. This interface would usually be + an HDLC or RS-232 type of interface. If there + is no lower-layer interface element, or there + is no ifEntry for the element, or the element + can not be identified, then the value of this + object is 0. For example, suppose that PPP is + operating over a serial port. This would use + two entries in the ifTable. The PPP could be + running over `interface' number 123 and the + serial port could be running over `interface' + number 987. Therefore, ifSpecific.123 would + contain the OBJECT IDENTIFIER ppp + pppLinkStatusPhysicalIndex.123 would contain + 987, and ifSpecific.987 would contain the + OBJECT IDENTIFIER for the serial-port's media- + specific MIB." + ::= { pppLinkStatusEntry 1 } + + +pppLinkStatusBadAddresses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received with an + incorrect Address Field. This counter is a + component of the ifInErrors variable that is + associated with the interface that represents + this PPP Link." + REFERENCE + "Section 3.1, Address Field, of RFC1331." + ::= { pppLinkStatusEntry 2 } + + +pppLinkStatusBadControls OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received on this link + with an incorrect Control Field. This counter + is a component of the ifInErrors variable that + is associated with the interface that + represents this PPP Link." + REFERENCE + "Section 3.1, Control Field, of RFC1331." + ::= { pppLinkStatusEntry 3 } + + +pppLinkStatusPacketTooLongs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of received packets that have been + discarded because their length exceeded the + MRU. This counter is a component of the + ifInErrors variable that is associated with the + interface that represents this PPP Link. NOTE, + packets which are longer than the MRU but which + are successfully received and processed are NOT + included in this count." + ::= { pppLinkStatusEntry 4 } + + +pppLinkStatusBadFCSs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of received packets that have been + discarded due to having an incorrect FCS. This + counter is a component of the ifInErrors + variable that is associated with the interface + that represents this PPP Link." + ::= { pppLinkStatusEntry 5 } + + +pppLinkStatusLocalMRU OBJECT-TYPE + SYNTAX INTEGER(1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current value of the MRU for the local PPP + Entity. This value is the MRU that the remote + entity is using when sending packets to the + local PPP entity. The value of this object is + meaningful only when the link has reached the + open state (ifOperStatus is up)." + ::= { pppLinkStatusEntry 6 } + + +pppLinkStatusRemoteMRU OBJECT-TYPE + SYNTAX INTEGER(1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current value of the MRU for the remote + PPP Entity. This value is the MRU that the + local entity is using when sending packets to + the remote PPP entity. The value of this object + is meaningful only when the link has reached + the open state (ifOperStatus is up)." + ::= { pppLinkStatusEntry 7 } + + +pppLinkStatusLocalToPeerACCMap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current value of the ACC Map used for + sending packets from the local PPP entity to + the remote PPP entity. The value of this object + is meaningful only when the link has reached + the open state (ifOperStatus is up)." + ::= { pppLinkStatusEntry 8 } + + +pppLinkStatusPeerToLocalACCMap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ACC Map used by the remote PPP entity when + transmitting packets to the local PPP entity. + The value of this object is meaningful only + when the link has reached the open state + (ifOperStatus is up)." + ::= { pppLinkStatusEntry 9 } + + +pppLinkStatusLocalToRemoteProtocolCompression + OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP entity will + use Protocol Compression when transmitting + packets to the remote PPP entity. The value of + this object is meaningful only when the link + has reached the open state (ifOperStatus is + up)." + ::= { pppLinkStatusEntry 10 } + + +pppLinkStatusRemoteToLocalProtocolCompression + OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the remote PPP entity will + use Protocol Compression when transmitting + packets to the local PPP entity. The value of + this object is meaningful only when the link + has reached the open state (ifOperStatus is + up)." + ::= { pppLinkStatusEntry 11 } + + +pppLinkStatusLocalToRemoteACCompression OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the local PPP entity will + use Address and Control Compression when + transmitting packets to the remote PPP entity. + The value of this object is meaningful only + when the link has reached the open state + (ifOperStatus is up)." + ::= { pppLinkStatusEntry 12 } + + +pppLinkStatusRemoteToLocalACCompression OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the remote PPP entity will + use Address and Control Compression when + transmitting packets to the local PPP entity. + The value of this object is meaningful only + when the link has reached the open state + (ifOperStatus is up)." + ::= { pppLinkStatusEntry 13 } + + +pppLinkStatusTransmitFcsSize OBJECT-TYPE + SYNTAX INTEGER (0..128) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the Frame Check Sequence (FCS) in + bits that the local node will generate when + sending packets to the remote node. The value + of this object is meaningful only when the link + has reached the open state (ifOperStatus is + up)." + ::= { pppLinkStatusEntry 14 } + + +pppLinkStatusReceiveFcsSize OBJECT-TYPE + SYNTAX INTEGER (0..128) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the Frame Check Sequence (FCS) in + bits that the remote node will generate when + sending packets to the local node. The value of + this object is meaningful only when the link + has reached the open state (ifOperStatus is + up)." + ::= { pppLinkStatusEntry 15 } + + +pppLinkConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLinkConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing the LCP configuration + parameters for this PPP Link. These variables + represent the initial configuration of the PPP + Link. The actual values of the parameters may + be changed when the link is brought up via the + LCP options negotiation mechanism." + ::= { pppLink 2 } + + +pppLinkConfigEntry OBJECT-TYPE + SYNTAX PppLinkConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Configuration information about a particular + PPP Link." + INDEX { ifIndex } + ::= { pppLinkConfigTable 1 } + + +PppLinkConfigEntry ::= SEQUENCE { + pppLinkConfigInitialMRU + INTEGER, + pppLinkConfigReceiveACCMap + OCTET STRING, + pppLinkConfigTransmitACCMap + OCTET STRING, + pppLinkConfigMagicNumber + INTEGER, + pppLinkConfigFcsSize + INTEGER + } + +pppLinkConfigInitialMRU OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The initial Maximum Receive Unit (MRU) that + the local PPP entity will advertise to the + remote entity. If the value of this variable is + 0 then the local PPP entity will not advertise + any MRU to the remote entity and the default + MRU will be assumed. Changing this object will + have effect when the link is next restarted." + REFERENCE + "Section 7.2, Maximum Receive Unit of RFC1331." + DEFVAL { 1500 } + ::= { pppLinkConfigEntry 1 } + +pppLinkConfigReceiveACCMap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Asynchronous-Control-Character-Map (ACC) + that the local PPP entity requires for use on + its receive side. In effect, this is the ACC + Map that is required in order to ensure that + the local modem will successfully receive all + characters. The actual ACC map used on the + receive side of the link will be a combination + of the local node's pppLinkConfigReceiveACCMap + and the remote node's + pppLinkConfigTransmitACCMap. Changing this + object will have effect when the link is next + restarted." + REFERENCE + "Section 7.3, page 4, Async-Control-Character- + Map of RFC1331." + DEFVAL { 'ffffffff'h } + ::= { pppLinkConfigEntry 2 } + + +pppLinkConfigTransmitACCMap OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Asynchronous-Control-Character-Map (ACC) + that the local PPP entity requires for use on + its transmit side. In effect, this is the ACC + Map that is required in order to ensure that + all characters can be successfully transmitted + through the local modem. The actual ACC map + used on the transmit side of the link will be a + combination of the local node's + pppLinkConfigTransmitACCMap and the remote + node's pppLinkConfigReceiveACCMap. Changing + this object will have effect when the link is + next restarted." + REFERENCE + "Section 7.3, page 4, Async-Control-Character- + Map of RFC1331." + DEFVAL { 'ffffffff'h } + ::= { pppLinkConfigEntry 3 } + +pppLinkConfigMagicNumber OBJECT-TYPE + SYNTAX INTEGER {false (1), true (2)} + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If true(2) then the local node will attempt to + perform Magic Number negotiation with the + remote node. If false(1) then this negotiation + is not performed. In any event, the local node + will comply with any magic number negotiations + attempted by the remote node, per the PPP + specification. Changing this object will have + effect when the link is next restarted." + REFERENCE + "Section 7.6, Magic Number, of RFC1331." + DEFVAL { false } + ::= { pppLinkConfigEntry 4 } + + +pppLinkConfigFcsSize OBJECT-TYPE + SYNTAX INTEGER (0..128) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The size of the FCS, in bits, the local node + will attempt to negotiate for use with the + remote node. Regardless of the value of this + object, the local node will comply with any FCS + size negotiations initiated by the remote node, + per the PPP specification. Changing this object + will have effect when the link is next + restarted." + DEFVAL { 16 } + ::= { pppLinkConfigEntry 5 } + + +-- 4.2. PPP LQR Group + + + -- + -- The PPP LQR Group. + -- Implementation of this group is mandatory for all + -- PPP implementations that implement LQR. + -- + +pppLqrTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLqrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the LQR parameters and + statistics for the local PPP entity." + ::= { pppLqr 1 } + + +pppLqrEntry OBJECT-TYPE + SYNTAX PppLqrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "LQR information for a particular PPP link. A + PPP link will have an entry in this table if + and only if LQR Quality Monitoring has been + successfully negotiated for said link." + INDEX { ifIndex } + ::= { pppLqrTable 1 } + + +PppLqrEntry ::= SEQUENCE { + pppLqrQuality + INTEGER, + pppLqrInGoodOctets + Counter, + pppLqrLocalPeriod + INTEGER, + pppLqrRemotePeriod + INTEGER, + pppLqrOutLQRs + Counter, + pppLqrInLQRs + Counter +} + +pppLqrQuality OBJECT-TYPE + SYNTAX INTEGER { + good(1), + bad(2), + not-determined(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current quality of the link as declared by + the local PPP entity's Link-Quality Management + modules. No effort is made to define good or + bad, nor the policy used to determine it. The + not-determined value indicates that the entity + does not actually evaluate the link's quality. + This value is used to disambiguate the + `determined to be good' case from the `no + determination made and presumed to be good' + case." + ::= { pppLqrEntry 1 } + + +pppLqrInGoodOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The LQR InGoodOctets counter for this link." + REFERENCE + "Section 2.2, Counters, of RFC1333." + ::= { pppLqrEntry 2 } + + +pppLqrLocalPeriod OBJECT-TYPE + SYNTAX INTEGER(1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The LQR reporting period, in hundredths of a + second that is in effect for the local PPP + entity." + REFERENCE + "Section 2.5, Configuration Option Format, of + RFC1333." + ::= { pppLqrEntry 3 } + + +pppLqrRemotePeriod OBJECT-TYPE + SYNTAX INTEGER(1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The LQR reporting period, in hundredths of a + second, that is in effect for the remote PPP + entity." + REFERENCE + "Section 2.5, Configuration Option Format, of + RFC1333." + ::= { pppLqrEntry 4 } + +pppLqrOutLQRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the OutLQRs counter on the local + node for the link identified by ifIndex." + REFERENCE + "Section 2.2, Counters, of RFC1333." + ::= { pppLqrEntry 5 } + + +pppLqrInLQRs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the InLQRs counter on the local + node for the link identified by ifIndex." + REFERENCE + "Section 2.2, Counters, of RFC1333." + ::= { pppLqrEntry 6 } + + +-- +-- The PPP LQR Configuration table. +-- + +pppLqrConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLqrConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the LQR Configuration + parameters for the local PPP entity." + ::= { pppLqr 2 } + + +pppLqrConfigEntry OBJECT-TYPE + SYNTAX PppLqrConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "LQR configuration information for a particular + PPP link." + INDEX { ifIndex } + ::= { pppLqrConfigTable 1 } + +PppLqrConfigEntry ::= SEQUENCE { + pppLqrConfigPeriod + INTEGER, + pppLqrConfigStatus + INTEGER +} + +pppLqrConfigPeriod OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The LQR Reporting Period that the local PPP + entity will attempt to negotiate with the + remote entity, in units of hundredths of a + second. Changing this object will have effect + when the link is next restarted." + REFERENCE + "Section 2.5, Configuration Option Format, of + RFC1333." + DEFVAL { 0 } + ::= { pppLqrConfigEntry 1 } + + +pppLqrConfigStatus OBJECT-TYPE + SYNTAX INTEGER {disabled (1), enabled (2)} + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If enabled(2) then the local node will attempt + to perform LQR negotiation with the remote + node. If disabled(1) then this negotiation is + not performed. In any event, the local node + will comply with any magic number negotiations + attempted by the remote node, per the PPP + specification. Changing this object will have + effect when the link is next restarted. + Setting this object to the value disabled(1) + has the effect of invalidating the + corresponding entry in the pppLqrConfigTable + object. It is an implementation-specific matter + as to whether the agent removes an invalidated + entry from the table. Accordingly, management + stations must be prepared to receive tabular + information from agents that corresponds to + entries not currently in use." + REFERENCE + "Section 7.6, Magic Number, of RFC1331." + DEFVAL { enabled } + ::= { pppLqrConfigEntry 2 } + + +-- 4.3. PPP LQR Extensions Group + + +-- +-- The PPP LQR Extensions Group. +-- Implementation of this group is optional. +-- +-- The intent of this group is to allow external +-- implementation of the policy mechanisms that +-- are used to declare a link to be "bad" or not. +-- +-- It is not practical to examine the MIB objects +-- which are used to generate LQR packets since +-- LQR policies tend to require synchronization of +-- the values of all data used to determine Link +-- Quality; i.e. the values of the relevant counters +-- must all be taken at the same instant in time. +-- + +pppLqrExtnsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppLqrExtnsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing additional LQR information + for the local PPP entity." + ::= { pppLqr 3 } + + +pppLqrExtnsEntry OBJECT-TYPE + SYNTAX PppLqrExtnsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Extended LQR information for a particular PPP + link. Assuming that this group has been + implemented, a PPP link will have an entry in + this table if and only if LQR Quality + Monitoring has been successfully negotiated for + said link." + INDEX { ifIndex } + ::= { pppLqrExtnsTable 1 } + +PppLqrExtnsEntry ::= SEQUENCE { + pppLqrExtnsLastReceivedLqrPacket + OCTET STRING(SIZE(68)) +} + +pppLqrExtnsLastReceivedLqrPacket OBJECT-TYPE + SYNTAX OCTET STRING(SIZE(68)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object contains the most recently + received LQR packet. The format of the packet + is as described in the LQM Protocol + specificiation. All fields of the packet, + including the `save' fields, are stored in this + object. + + The LQR packet is stored in network byte order. + The LAP-B and PPP headers are not stored in + this object; the first four octets of this + variable contain the Magic-Number field, the + second four octets contain the LastOutLQRs + field and so on. The last four octets of this + object contain the SaveInOctets field of the + LQR packet." + REFERENCE + "Section 2.6, Packet Format, of RFC1333" + ::= { pppLqrExtnsEntry 1 } + + +-- 4.4. PPP Tests + +-- The extensions to the interface table in RFC1229 define a +-- table through which the network manager can instruct the +-- managed object to perform various tests of the interface. This +-- is the ifExtnsTestTable. + +-- The PPP MIB defines two such tests. + +-- 4.4.1. PPP Echo Test + +-- The PPP Echo Test is defined as + + pppEchoTest OBJECT IDENTIFIER ::= { pppTests 1 } + +-- Invoking this test causes a PPP Echo Packet to be sent on the +-- line. ifExtnsTestResult returns success(2) if the echo +-- response came back properly. It returns failed(7) if the +-- response did not properly return. The definition of "proper" + +-- in this context is left to the discretion of the implementor. + +-- 4.4.2. PPP Discard Test + +-- The PPP Discard Test is defined as + + pppDiscardTest OBJECT IDENTIFIER ::= { pppTests 2 } + +-- Invoking this test causes a PPP Discard Packet to be sent on +-- the line. ifExtnsTestResult returns success(2) if the discard +-- packet was successfully transmitted and failed(7) if an error +-- was detected on transmission. The definition of "transmission +-- error" in this context is left to the discretion of the +-- implementor. + +END diff --git a/mibs/ietf/PPP-SEC-MIB b/mibs/ietf/PPP-SEC-MIB new file mode 100644 index 0000000..da476b3 --- /dev/null +++ b/mibs/ietf/PPP-SEC-MIB @@ -0,0 +1,304 @@ +PPP-SEC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + ppp + FROM PPP-LCP-MIB; + + pppSecurity OBJECT IDENTIFIER ::= { ppp 2 } + + pppSecurityProtocols OBJECT IDENTIFIER ::= { pppSecurity 1 } + +-- The following uniquely identify the various protocols +-- used by PPP security. These OBJECT IDENTIFIERS are +-- used in the pppSecurityConfigProtocol and +-- pppSecuritySecretsProtocol objects to identify to which +-- protocols the table entries apply. + + pppSecurityPapProtocol OBJECT IDENTIFIER ::= + { pppSecurityProtocols 1 } + pppSecurityChapMD5Protocol OBJECT IDENTIFIER ::= + { pppSecurityProtocols 2 } + +-- PPP Security Group +-- Implementation of this group is optional. + +-- This table allows the network manager to configure +-- which security protocols are to be used on which +-- link and in what order of preference each is to be tried + + +pppSecurityConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppSecurityConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the configuration and + preference parameters for PPP Security." + ::= { pppSecurity 2 } + + +pppSecurityConfigEntry OBJECT-TYPE + SYNTAX PppSecurityConfigEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Security configuration information for a + particular PPP link." + INDEX { pppSecurityConfigLink, + pppSecurityConfigPreference } + ::= { pppSecurityConfigTable 1 } + + +PppSecurityConfigEntry ::= SEQUENCE { + pppSecurityConfigLink + INTEGER, + pppSecurityConfigPreference + INTEGER, + pppSecurityConfigProtocol + OBJECT IDENTIFIER, + pppSecurityConfigStatus + INTEGER + } + + +pppSecurityConfigLink OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of ifIndex that identifies the entry + in the interface table that is associated with + the local PPP entity's link for which this + particular security algorithm shall be + attempted. A value of 0 indicates the default + algorithm - i.e., this entry applies to all + links for which explicit entries in the table + do not exist." + ::= { pppSecurityConfigEntry 1 } + + +pppSecurityConfigPreference OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The relative preference of the security + protocol identified by + pppSecurityConfigProtocol. Security protocols + with lower values of + pppSecurityConfigPreference are tried before + protocols with higher values of + pppSecurityConfigPreference." + ::= { pppSecurityConfigEntry 2 } + + +pppSecurityConfigProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Identifies the security protocol to be + attempted on the link identified by + pppSecurityConfigLink at the preference level + identified by pppSecurityConfigPreference. " + ::= { pppSecurityConfigEntry 3 } + + +pppSecurityConfigStatus OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + valid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to the value invalid(1) + has the effect of invalidating the + corresponding entry in the + pppSecurityConfigTable. It is an + implementation-specific matter as to whether + the agent removes an invalidated entry from the + table. Accordingly, management stations must + be prepared to receive tabular information from + agents that corresponds to entries not + currently in use. Proper interpretation of + such entries requires examination of the + relevant pppSecurityConfigStatus object." + DEFVAL { valid } + ::= { pppSecurityConfigEntry 4 } + + +-- This table contains all of the ID/Secret pair information. + + +pppSecuritySecretsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PppSecuritySecretsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table containing the identities and secrets + used by the PPP authentication protocols. As + this table contains secret information, it is + expected that access to this table be limited + to those SNMP Party-Pairs for which a privacy + protocol is in use for all SNMP messages that + the parties exchange. This table contains both + the ID and secret pair(s) that the local PPP + entity will advertise to the remote entity and + the pair(s) that the local entity will expect + from the remote entity. This table allows for + multiple id/secret password pairs to be + specified for a particular link by using the + pppSecuritySecretsIdIndex object." + ::= { pppSecurity 3 } + + +pppSecuritySecretsEntry OBJECT-TYPE + SYNTAX PppSecuritySecretsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Secret information." + INDEX { pppSecuritySecretsLink, + pppSecuritySecretsIdIndex } + ::= { pppSecuritySecretsTable 1 } + +PppSecuritySecretsEntry ::= SEQUENCE { + pppSecuritySecretsLink + INTEGER, + pppSecuritySecretsIdIndex + INTEGER, + pppSecuritySecretsDirection + INTEGER, + pppSecuritySecretsProtocol + OBJECT IDENTIFIER, + pppSecuritySecretsIdentity + OCTET STRING, + pppSecuritySecretsSecret + OCTET STRING, + pppSecuritySecretsStatus + INTEGER +} + +pppSecuritySecretsLink OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The link to which this ID/Secret pair applies. + By convention, if the value of this object is 0 + then the ID/Secret pair applies to all links." + ::= { pppSecuritySecretsEntry 1 } + + +pppSecuritySecretsIdIndex OBJECT-TYPE + SYNTAX INTEGER(0..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each ID/Secret pair that + has been defined for use on this link. This + allows multiple ID/Secret pairs to be defined + for each link. How the local entity selects + which pair to use is a local implementation + decision." + ::= { pppSecuritySecretsEntry 2 } + + +pppSecuritySecretsDirection OBJECT-TYPE + SYNTAX INTEGER { + local-to-remote(1), + remote-to-local(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object defines the direction in which a + particular ID/Secret pair is valid. If this + object is local-to-remote then the local PPP + entity will use the ID/Secret pair when + attempting to authenticate the local PPP entity + to the remote PPP entity. If this object is + remote-to-local then the local PPP entity will + expect the ID/Secret pair to be used by the + remote PPP entity when the remote PPP entity + attempts to authenticate itself to the local + PPP entity." + ::= { pppSecuritySecretsEntry 3 } + + +pppSecuritySecretsProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The security protocol (e.g. CHAP or PAP) to + which this ID/Secret pair applies." + ::= { pppSecuritySecretsEntry 4 } + + +pppSecuritySecretsIdentity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Identity of the ID/Secret pair. The + actual format, semantics, and use of + pppSecuritySecretsIdentity depends on the + actual security protocol used. For example, if + pppSecuritySecretsProtocol is + pppSecurityPapProtocol then this object will + contain a PAP Peer-ID. If + pppSecuritySecretsProtocol is + pppSecurityChapMD5Protocol then this object + would contain the CHAP NAME parameter." + ::= { pppSecuritySecretsEntry 5 } + + +pppSecuritySecretsSecret OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The secret of the ID/Secret pair. The actual + format, semantics, and use of + pppSecuritySecretsSecret depends on the actual + security protocol used. For example, if + pppSecuritySecretsProtocol is + pppSecurityPapProtocol then this object will + contain a PAP Password. If + pppSecuritySecretsProtocol is + pppSecurityChapMD5Protocol then this object + would contain the CHAP MD5 Secret." + ::= { pppSecuritySecretsEntry 6 } + + +pppSecuritySecretsStatus OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + valid(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to the value invalid(1) + has the effect of invalidating the + corresponding entry in the + pppSecuritySecretsTable. It is an + implementation-specific matter as to whether + the agent removes an invalidated entry from the + table. Accordingly, management stations must + be prepared to receive tabular information from + agents that corresponds to entries not + currently in use. Proper interpretation of + such entries requires examination of the + relevant pppSecuritySecretsStatus object." + DEFVAL { valid } + ::= { pppSecuritySecretsEntry 7 } + + +END diff --git a/mibs/ietf/PTOPO-MIB b/mibs/ietf/PTOPO-MIB new file mode 100644 index 0000000..def5918 --- /dev/null +++ b/mibs/ietf/PTOPO-MIB @@ -0,0 +1,839 @@ +PTOPO-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Counter32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, AutonomousType, RowStatus, TimeStamp, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + + + FROM SNMPv2-CONF + TimeFilter + FROM RMON2-MIB + PhysicalIndex + FROM ENTITY-MIB + AddressFamilyNumbers + FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB; + +ptopoMIB MODULE-IDENTITY + LAST-UPDATED "200009210000Z" + ORGANIZATION "IETF; PTOPOMIB Working Group" + CONTACT-INFO + "PTOPOMIB WG Discussion: + ptopo@3com.com + Subscription: + majordomo@3com.com + msg body: [un]subscribe ptopomib + + Andy Bierman + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 + 408-527-3711 + abierman@cisco.com + + Kendall S. Jones + Nortel Networks + 4401 Great America Parkway + Santa Clara, CA 95054 + 408-495-7356 + kejones@nortelnetworks.com" + DESCRIPTION + "The MIB module for physical topology information." + REVISION "200009210000Z" + DESCRIPTION + "Initial Version of the Physical Topology MIB. This version + published as RFC 2922." + ::= { mib-2 79 } + +ptopoMIBObjects OBJECT IDENTIFIER ::= { ptopoMIB 1 } + + +-- MIB groups +ptopoData OBJECT IDENTIFIER ::= { ptopoMIBObjects 1 } +ptopoGeneral OBJECT IDENTIFIER ::= { ptopoMIBObjects 2 } +ptopoConfig OBJECT IDENTIFIER ::= { ptopoMIBObjects 3 } + +-- textual conventions + + +PtopoGenAddr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of an address." + SYNTAX OCTET STRING (SIZE (0..20)) + +PtopoChassisIdType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the source of a chassis identifier. + + The enumeration 'chasIdEntPhysicalAlias(1)' represents a + chassis identifier based on the value of entPhysicalAlias + for a chassis component (i.e., an entPhysicalClass value of + 'chassis(3)'). + + The enumeration 'chasIdIfAlias(2)' represents a chassis + identifier based on the value of ifAlias for an interface + on the containing chassis. + + The enumeration 'chasIdPortEntPhysicalAlias(3)' represents + a chassis identifier based on the value of entPhysicalAlias + for a port or backplane component (i.e., entPhysicalClass + value of 'port(10)' or 'backplane(4)'), within the + containing chassis. + + The enumeration 'chasIdMacAddress(4)' represents a chassis + identifier based on the value of a unicast source MAC + address (encoded in network byte order and IEEE 802.3 + canonical bit order), of a port on the containing chassis. + + The enumeration 'chasIdPtopoGenAddr(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 + PtopoGenAddr address value." + SYNTAX INTEGER { + chasIdEntPhysicalAlias(1), + chasIdIfAlias(2), + chasIdPortEntPhysicalAlias(3), + chasIdMacAddress(4), + chasIdPtopoGenAddr(5) + } + +PtopoChassisId ::= 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 PtopoChassisIdType object, which identifies the + format of the particular PtopoChassisId object instance. + + If the associated PtopoChassisIdType object has a value of + 'chasIdEntPhysicalAlias(1)', then the octet string + identifies a particular instance of the entPhysicalAlias + object for a chassis component (i.e., an entPhysicalClass + value of 'chassis(3)'). + + If the associated PtopoChassisIdType object has a value of + 'chasIdIfAlias(2)', then the octet string identifies a + particular instance of the ifAlias object for an interface + on the containing chassis. + + If the associated PtopoChassisIdType object has a value of + 'chasIdPortEntPhysicalAlias(3)', then the octet string + identifies a particular instance of the entPhysicalAlias + object for a port or backplane component within the + containing chassis. + + If the associated PtopoChassisIdType object has a value of + 'chasIdMacAddress(4)', then this string identifies a + particular unicast source MAC address (encoded in network + byte order and IEEE 802.3 canonical bit order), of a port on + the containing chassis. + + If the associated PtopoChassisIdType object has a value of + 'chasIdPtopoGenAddr(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 PtopoGenAddr address value in + network byte order." + SYNTAX OCTET STRING (SIZE (1..32)) + +PtopoPortIdType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the source of a particular type of port + identifier used in the PTOPO MIB. + + The enumeration 'portIdIfAlias(1)' represents a port + identifier based on the ifAlias MIB object. + + + + The enumeration 'portIdPortEntPhysicalAlias(2)' represents a + port identifier based on the value of entPhysicalAlias for a + port or backplane component (i.e., entPhysicalClass value of + 'port(10)' or 'backplane(4)'), within the containing + chassis. + + The enumeration 'portIdMacAddr(3)' represents a port + identifier based on a unicast source MAC address, which has + been detected by the agent and associated with a particular + port. + + The enumeration 'portIdPtopoGenAddr(4)' represents a port + identifier based on a network address, detected by the agent + and associated with a particular port." + SYNTAX INTEGER { + portIdIfAlias(1), + portIdEntPhysicalAlias(2), + portIdMacAddr(3), + portIdPtopoGenAddr(4) + } + +PtopoPortId ::= 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 + PtopoPortIdType object, which identifies the format of the + particular PtopoPortId object instance. + + If the associated PtopoPortIdType object has a value of + 'portIdIfAlias(1)', then the octet string identifies a + particular instance of the ifAlias object. + + If the associated PtopoPortIdType object has a value of + 'portIdEntPhysicalAlias(2)', then the octet string + identifies a particular instance of the entPhysicalAlias + object for a port component (i.e., entPhysicalClass value of + 'port(10)'). + + If the associated PtopoPortIdType object has a value of + 'portIdMacAddr(3)', then this string identifies a particular + unicast source MAC address associated with the port. + + If the associated PtopoPortIdType object has a value of + 'portIdPtopoGenAddr(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 PtopoGenAddr address value in network byte order." + SYNTAX OCTET STRING (SIZE (1..32)) + + +PtopoAddrSeenState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the state of address detection for a + particular type of port identifier used in the PTOPO MIB. + + The enumeration 'notUsed(1)' represents an entry for which + the particular MIB object is not applicable to the remote + connection endpoint, + + The enumeration 'unknown(2)' represents an entry for which + the particular address collection state is not known. + + The enumeration 'oneAddr(3)' represents an entry for which + exactly one source address (of the type indicated by the + particular MIB object), has been detected. + + The enumeration 'multiAddr(4)' represents an entry for + which more than one source address (of the type indicated by + the particular MIB object), has been detected. + + An agent is expected to set the initial state of the + PtopoAddrSeenState to 'notUsed(1)' or 'unknown(2)'. + + Note that the PTOPO MIB does not restrict or specify the + means in which the PtopoAddrSeenState is known to an agent. + In particular, an agent may detect this information through + configuration data, or some means other than directly + monitoring all port traffic." + SYNTAX INTEGER { + notUsed(1), + unknown(2), + oneAddr(3), + multiAddr(4) + } + +-- *********************************************************** +-- +-- P T O P O D A T A G R O U P +-- +-- *********************************************************** + +-- Connection Table + + + +ptopoConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF PtopoConnEntry + 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 ptopoConnEntry is present for each + local port, or it may choose to maintain multiple + ptopoConnEntries for the same local port. + + Entries based on lower numbered identifier types are + preferred over higher numbered identifier types, i.e., lower + values of the ptopoConnRemoteChassisType and + ptopoConnRemotePortType objects." + ::= { ptopoData 1 } + +ptopoConnEntry OBJECT-TYPE + SYNTAX PtopoConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular physical network connection. + Entries may be created and deleted in this table, either + manually or by the agent, if a physical topology discovery + process is active." + INDEX { + ptopoConnTimeMark, + ptopoConnLocalChassis, + ptopoConnLocalPort, + ptopoConnIndex + } + ::= { ptopoConnTable 1 } + +PtopoConnEntry ::= SEQUENCE { + ptopoConnTimeMark TimeFilter, + ptopoConnLocalChassis PhysicalIndex, + ptopoConnLocalPort PhysicalIndex, + ptopoConnIndex Integer32, + ptopoConnRemoteChassisType PtopoChassisIdType, + ptopoConnRemoteChassis PtopoChassisId, + ptopoConnRemotePortType PtopoPortIdType, + ptopoConnRemotePort PtopoPortId, + ptopoConnDiscAlgorithm AutonomousType, + ptopoConnAgentNetAddrType AddressFamilyNumbers, + ptopoConnAgentNetAddr PtopoGenAddr, + ptopoConnMultiMacSASeen PtopoAddrSeenState, + ptopoConnMultiNetSASeen PtopoAddrSeenState, + + + ptopoConnIsStatic TruthValue, + ptopoConnLastVerifyTime TimeStamp, + ptopoConnRowStatus RowStatus +} + +ptopoConnTimeMark OBJECT-TYPE + SYNTAX TimeFilter + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention in RFC 2021 to see how this works." + ::= { ptopoConnEntry 1 } + +ptopoConnLocalChassis OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entPhysicalIndex value used to identify the chassis + component associated with the local connection endpoint." + ::= { ptopoConnEntry 2 } + +ptopoConnLocalPort OBJECT-TYPE + SYNTAX PhysicalIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entPhysicalIndex value used to identify the port + component associated with the local connection endpoint." + ::= { ptopoConnEntry 3 } + +ptopoConnIndex 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 local connection + endpoint. + + A particular ptopoConnIndex value may be reused in the event + an entry is aged out and later re-learned with the same (or + different) remote chassis and port identifiers. + + 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 ptopoConnIndex + will wrap between reboots." + ::= { ptopoConnEntry 4 } + +ptopoConnRemoteChassisType OBJECT-TYPE + SYNTAX PtopoChassisIdType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of encoding used to identify the chassis + associated with the remote connection endpoint. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 5 } + +ptopoConnRemoteChassis OBJECT-TYPE + SYNTAX PtopoChassisId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The string value used to identify the chassis component + associated with the remote connection endpoint. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 6 } + +ptopoConnRemotePortType OBJECT-TYPE + SYNTAX PtopoPortIdType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of port identifier encoding used in the associated + 'ptopoConnRemotePort' object. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 7 } + +ptopoConnRemotePort OBJECT-TYPE + SYNTAX PtopoPortId + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The string value used to identify the port component + associated with the remote connection endpoint. + + + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 8 } + +ptopoConnDiscAlgorithm OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the algorithm used to discover the + information contained in this conceptual row. + + A value of ptopoDiscoveryLocal indicates this entry was + configured by the local agent, without use of a discovery + protocol. + + A value of { 0 0 } indicates this entry was created manually + by an NMS via the associated RowStatus object. " + ::= { ptopoConnEntry 9 } + +ptopoConnAgentNetAddrType OBJECT-TYPE + SYNTAX AddressFamilyNumbers + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This network address type of the associated + ptopoConnNetAddr object, unless that object contains a zero + length string. In such a case, an NMS application should + ignore any returned value for this object. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + ::= { ptopoConnEntry 10 } + +ptopoConnAgentNetAddr OBJECT-TYPE + SYNTAX PtopoGenAddr + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies a network address which may be used + to reach an SNMP agent entity containing information for the + chassis and port components represented by the associated + 'ptopoConnRemoteChassis' and 'ptopoConnRemotePort' objects. + If no such address is known, then this object shall contain + an empty string. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + + + ::= { ptopoConnEntry 11 } + +ptopoConnMultiMacSASeen OBJECT-TYPE + SYNTAX PtopoAddrSeenState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if multiple unicast source MAC + addresses have been detected by the agent from the remote + connection endpoint, since the creation of this entry. + + If this entry has an associated ptopoConnRemoteChassisType + and/or ptopoConnRemotePortType value other than + 'portIdMacAddr(3)', then the value 'notUsed(1)' is returned. + + Otherwise, one of the following conditions must be true: + + If the agent has not yet detected any unicast source MAC + addresses from the remote port, then the value 'unknown(2)' + is returned. + + If the agent has detected exactly one unicast source MAC + address from the remote port, then the value 'oneAddr(3)' is + returned. + + If the agent has detected more than one unicast source MAC + address from the remote port, then the value 'multiAddr(4)' + is returned." + ::= { ptopoConnEntry 12 } + +ptopoConnMultiNetSASeen OBJECT-TYPE + SYNTAX PtopoAddrSeenState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates if multiple network layer source + addresses have been detected by the agent from the remote + connection endpoint, since the creation of this entry. + + If this entry has an associated ptopoConnRemoteChassisType + or ptopoConnRemotePortType value other than + 'portIdGenAddr(4)' then the value 'notUsed(1)' is returned. + + Otherwise, one of the following conditions must be true: + + If the agent has not yet detected any network source + addresses of the appropriate type from the remote port, then + the value 'unknown(2)' is returned. + + + If the agent has detected exactly one network source address + of the appropriate type from the remote port, then the value + 'oneAddr(3)' is returned. + + If the agent has detected more than one network source + address (of the same appropriate type) from the remote port, + this the value 'multiAddr(4)' is returned." + ::= { ptopoConnEntry 13 } + +ptopoConnIsStatic OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies static ptopoConnEntries. If this + object has the value 'true(1)', then this entry is not + subject to any age-out mechanisms implemented by the agent. + + If this object has the value 'false(2)', then this entry is + subject to all age-out mechanisms implemented by the agent. + + This object may not be modified if the associated + ptopoConnRowStatus object has a value of active(1)." + DEFVAL { false } + ::= { ptopoConnEntry 14 } + +ptopoConnLastVerifyTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the associated value of ptopoConnIsStatic is equal to + 'false(2)', then this object contains the value of sysUpTime + at the time the conceptual row was last verified by the + agent, e.g., via reception of a topology protocol message, + pertaining to the associated remote chassis and port. + + If the associated value of ptopoConnIsStatic is equal to + 'true(1)', then this object shall contain the value of + sysUpTime at the time this entry was last activated (i.e., + ptopoConnRowStatus set to 'active(1)')." + ::= { ptopoConnEntry 15 } + +ptopoConnRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The status of this conceptual row." + ::= { ptopoConnEntry 16 } + +-- *********************************************************** +-- +-- P T O P O G E N E R A L G R O U P +-- +-- *********************************************************** + +-- last change time stamp for the whole MIB + +ptopoLastChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time a conceptual row is + created, modified, or deleted in the ptopoConnTable. + + An NMS can use this object to reduce polling of the + ptopoData group objects." + ::= { ptopoGeneral 1 } + +ptopoConnTabInserts OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an entry has been inserted into the + ptopoConnTable." + ::= { ptopoGeneral 2 } + +ptopoConnTabDeletes OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The number of times an entry has been deleted from the + ptopoConnTable." + ::= { ptopoGeneral 3 } + +ptopoConnTabDrops OBJECT-TYPE + SYNTAX Counter32 + UNITS "table entries" + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The number of times an entry would have been added to the + ptopoConnTable, (e.g., via information learned from a + topology protocol), but was not because of insufficient + resources." + ::= { ptopoGeneral 4 } + +ptopoConnTabAgeouts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times an entry has been deleted from the + ptopoConnTable because the information timeliness interval + for that entry has expired." + ::= { ptopoGeneral 5 } + +-- *********************************************************** +-- +-- P T O P O C O N F I G G R O U P +-- +-- *********************************************************** + +ptopoConfigTrapInterval OBJECT-TYPE + SYNTAX Integer32 (0 | 5..3600) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the transmission of PTOPO + notifications. + + If this object has a value of zero, then no + ptopoConfigChange notifications will be transmitted by the + agent. + + If this object has a non-zero value, then the agent must not + generate more than one ptopoConfigChange trap-event in the + indicated period, where a 'trap-event' is the transmission + of a single notification PDU type to a list of notification + destinations. If additional configuration changes occur + within the indicated throttling period, then these trap- + events must be suppressed by the agent. An NMS should + periodically check the value of ptopoLastChangeTime to + detect any missed ptopoConfigChange trap-events, e.g. due to + throttling or transmission loss. + + + + If notification transmission is enabled, the suggested + default throttling period is 60 seconds, but transmission + should be disabled by default. + + If the agent is capable of storing non-volatile + configuration, then the value of this object must be + restored after a re-initialization of the management + system." + DEFVAL { 0 } + ::= { ptopoConfig 1 } + +ptopoConfigMaxHoldTime OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the desired time interval for which + an agent will maintain dynamic ptopoConnEntries. + + After the specified number of seconds since the last time an + entry was verified, in the absence of new verification + (e.g., receipt of a topology protocol message), the agent + shall remove the entry. Note that entries may not always be + removed immediately, but may possibly be removed at periodic + garbage collection intervals. + This object only affects dynamic ptopoConnEntries, i.e. for + which ptopoConnIsStatic equals 'false(2)'. Static entries + are not aged out. + + Note that dynamic ptopoConnEntries may also be removed by + the agent due to the expired timeliness of learned topology + information (e.g., timeliness interval for a remote port + expires). The actual age-out interval for a given entry is + defined by the following formula: + + age-out-time = + min(ptopoConfigMaxHoldTime, ) + + where is determined by the + discovery algorithm, and may be different for each entry." + DEFVAL { 300 } + ::= { ptopoConfig 2 } + + +-- PTOPO MIB Notification Definitions +ptopoMIBNotifications OBJECT IDENTIFIER ::= { ptopoMIB 2 } +ptopoMIBTrapPrefix OBJECT IDENTIFIER ::= + + + { ptopoMIBNotifications 0 } + +ptopoConfigChange NOTIFICATION-TYPE + OBJECTS { + ptopoConnTabInserts, + ptopoConnTabDeletes, + ptopoConnTabDrops, + ptopoConnTabAgeouts + } + STATUS current + DESCRIPTION + "A ptopoConfigChange notification is sent when the value of + ptopoLastChangeTime changes. It can be utilized by an NMS to + trigger physical topology table maintenance polls. + + Note that transmission of ptopoConfigChange notifications + are throttled by the agent, as specified by the + 'ptopoConfigTrapInterval' object." + ::= { ptopoMIBTrapPrefix 1 } + + +-- PTOPO Registration Points +ptopoRegistrationPoints OBJECT IDENTIFIER ::= { ptopoMIB 3 } + +-- values used with ptopoConnDiscAlgorithm object +ptopoDiscoveryMechanisms OBJECT IDENTIFIER ::= + { ptopoRegistrationPoints 1 } + +ptopoDiscoveryLocal OBJECT IDENTIFIER ::= + { ptopoDiscoveryMechanisms 1 } + + +-- conformance information +ptopoConformance OBJECT IDENTIFIER ::= { ptopoMIB 4 } + +ptopoCompliances OBJECT IDENTIFIER ::= { ptopoConformance 1 } +ptopoGroups OBJECT IDENTIFIER ::= { ptopoConformance 2 } + + +-- compliance statements +ptopoCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the PTOPO MIB." + MODULE -- this module + MANDATORY-GROUPS { + ptopoDataGroup, + + + ptopoGeneralGroup, + ptopoConfigGroup, + ptopoNotificationsGroup + } + ::= { ptopoCompliances 1 } + +-- MIB groupings +ptopoDataGroup OBJECT-GROUP + OBJECTS { + ptopoConnRemoteChassisType, + ptopoConnRemoteChassis, + ptopoConnRemotePortType, + ptopoConnRemotePort, + ptopoConnDiscAlgorithm, + ptopoConnAgentNetAddrType, + ptopoConnAgentNetAddr, + ptopoConnMultiMacSASeen, + ptopoConnMultiNetSASeen, + ptopoConnIsStatic, + ptopoConnLastVerifyTime, + ptopoConnRowStatus + } + STATUS current + DESCRIPTION + "The collection of objects which are used to represent + physical topology information for which a single agent + provides management information. + + This group is mandatory for all implementations of the PTOPO + MIB." + ::= { ptopoGroups 1 } + +ptopoGeneralGroup OBJECT-GROUP + OBJECTS { + ptopoLastChangeTime, + ptopoConnTabInserts, + ptopoConnTabDeletes, + ptopoConnTabDrops, + ptopoConnTabAgeouts + } + STATUS current + DESCRIPTION + "The collection of objects which are used to report the + general status of the PTOPO MIB implementation. + + This group is mandatory for all agents which implement the + PTOPO MIB." + ::= { ptopoGroups 2 } + + +ptopoConfigGroup OBJECT-GROUP + OBJECTS { + ptopoConfigTrapInterval, + ptopoConfigMaxHoldTime + } + STATUS current + DESCRIPTION + "The collection of objects which are used to configure the + PTOPO MIB implementation behavior. + + This group is mandatory for agents which implement the PTOPO + MIB." + ::= { ptopoGroups 3 } + +ptopoNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + ptopoConfigChange + } + STATUS current + DESCRIPTION + "The collection of notifications used to indicate PTOPO MIB + data consistency and general status information. + + This group is mandatory for agents which implement the PTOPO + MIB." + ::= { ptopoGroups 4 } + +END diff --git a/mibs/ietf/PerfHist-TC-MIB b/mibs/ietf/PerfHist-TC-MIB new file mode 100644 index 0000000..2ba6732 --- /dev/null +++ b/mibs/ietf/PerfHist-TC-MIB @@ -0,0 +1,191 @@ +PerfHist-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + Gauge32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +perfHistTCMIB MODULE-IDENTITY + LAST-UPDATED "200308130000Z" + ORGANIZATION "IETF AToM MIB WG" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + Editor: Kaj Tesink + Postal: Telcordia Technologies + 331 Newman Springs Road + Red Bank, NJ 07701 + USA + Tel: +1 732 758 5254 + E-mail: kaj@research.telcordia.com" + + DESCRIPTION + "This MIB Module provides Textual Conventions + to be used by systems supporting 15 minute + based performance history counts. + + Copyright (C) The Internet Society (2003). + This version of this MIB module is part of + RFC 3593; see the RFC itself for full + legal notices." + REVISION "200308130000Z" + DESCRIPTION + "Contact information and references updated. + No technical changes have been applied. + Published as RFC 3593." + REVISION "199811071100Z" + DESCRIPTION + "The RFC 2493 version of this MIB module." + ::= { mib-2 58 } + + + +-- The Textual Conventions defined below are organized +-- alphabetically + +-- Use of these TCs assumes the following: +-- 0 The agent supports 15 minute based history +-- counters. +-- 0 The agent is capable of keeping a history of n +-- intervals of 15 minute performance data. The +-- value of n is defined by the specific MIB +-- module but shall be 0 < n =< 96. +-- 0 The agent may optionally support performance +-- data aggregating the history intervals. +-- 0 The agent will keep separate tables for the +-- current interval, the history intervals, and +-- the total aggregates. +-- 0 The agent will keep the following objects. +-- If performance data is kept for multiple instances +-- of a measured entity, then +-- these objects are applied to each instance of +-- the measured entity (e.g., interfaces). +-- +-- xyzTimeElapsed OBJECT-TYPE +-- SYNTAX INTEGER (0..899) +-- MAX-ACCESS read-only +-- STATUS current +-- DESCRIPTION +-- "The number of seconds that have elapsed since +-- the beginning of the current measurement period. +-- If, for some reason, such as an adjustment in the +-- system's time-of-day clock, the current interval +-- exceeds the maximum value, the agent will return +-- the maximum value." +-- ::= { xxx } + +-- xyzValidIntervals OBJECT-TYPE +-- SYNTAX INTEGER (0..) +-- MAX-ACCESS read-only +-- STATUS current +-- DESCRIPTION +-- "The number of previous near end intervals +-- for which data was collected. +-- [ The overall constraint on is 1 =< n =< 96; ] +-- [ Define any additional constraints on here. ] +-- The value will be unless the measurement was +-- (re-)started within the last (*15) minutes, in which +-- case the value will be the number of complete 15 +-- minute intervals for which the agent has at least +-- some data. In certain cases (e.g., in the case + + + +-- where the agent is a proxy) it is possible that some +-- intervals are unavailable. In this case, this +-- interval is the maximum interval number for +-- which data is available." +-- ::= { xxx } + +-- xyzInvalidIntervals OBJECT-TYPE +-- SYNTAX INTEGER (0..) +-- MAX-ACCESS read-only +-- STATUS current +-- DESCRIPTION +-- "The number of intervals in the range from +-- 0 to xyzValidIntervals for which no +-- data is available. This object will typically +-- be zero except in cases where the data for some +-- intervals are not available (e.g., in proxy +-- situations)." +-- ::= { xxx } + +PerfCurrentCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with a + performance measurement in a current 15 + minute measurement interval. The value + of this counter starts from zero and is + increased when associated events occur, + until the end of the 15 minute interval. + At that time the value of the counter is + stored in the first 15 minute history + interval, and the CurrentCount is + restarted at zero. In the + case where the agent has no valid data + available for the current interval the + corresponding object instance is not + available and upon a retrieval request + a corresponding error message shall be + returned to indicate that this instance + does not exist (for example, a noSuchName + error for SNMPv1 and a noSuchInstance for + SNMPv2 GET operation)." + SYNTAX Gauge32 + + + + + + + + + +PerfIntervalCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with a + performance measurement in a previous + 15 minute measurement interval. In the + case where the agent has no valid data + available for a particular interval the + corresponding object instance is not + available and upon a retrieval request + a corresponding error message shall be + returned to indicate that this instance + does not exist (for example, a noSuchName + error for SNMPv1 and a noSuchInstance for + SNMPv2 GET operation). + In a system supporting + a history of n intervals with + IntervalCount(1) and IntervalCount(n) the + most and least recent intervals + respectively, the following applies at + the end of a 15 minute interval: + - discard the value of IntervalCount(n) + - the value of IntervalCount(i) becomes that + of IntervalCount(i-1) for n >= i > 1 + - the value of IntervalCount(1) becomes that + of CurrentCount + - the TotalCount, if supported, is adjusted." + SYNTAX Gauge32 + +PerfTotalCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A counter associated with a + performance measurements aggregating the + previous valid 15 minute measurement + intervals. (Intervals for which no valid + data was available are not counted)" + SYNTAX Gauge32 + +END diff --git a/mibs/ietf/Printer-MIB b/mibs/ietf/Printer-MIB new file mode 100644 index 0000000..4e21a2b --- /dev/null +++ b/mibs/ietf/Printer-MIB @@ -0,0 +1,4638 @@ +Printer-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, TimeTicks, + NOTIFICATION-TYPE, OBJECT-IDENTITY, + mib-2 FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + hrDeviceIndex, hrStorageIndex FROM HOST-RESOURCES-MIB -- [RFC2790] + InterfaceIndexOrZero FROM IF-MIB -- [RFC2863] + PrtCoverStatusTC, PrtGeneralResetTC, PrtChannelTypeTC, + PrtInterpreterLangFamilyTC, PrtInputTypeTC, PrtOutputTypeTC, + PrtMarkerMarkTechTC, PrtMarkerSuppliesTypeTC, PrtConsoleColorTC, + PrtConsoleDisableTC, PrtMediaPathTypeTC, PrtAlertGroupTC, + PrtAlertTrainingLevelTC, PrtAlertCodeTC + FROM IANA-PRINTER-MIB + IANACharset FROM IANA-CHARSET-MIB; + +printmib MODULE-IDENTITY + LAST-UPDATED "200406020000Z" + ORGANIZATION "PWG IEEE/ISTO Printer Working Group" + + + CONTACT-INFO + "Harry Lewis + IBM + Phone (303) 924-5337 + Email: harryl@us.ibm.com + http://www.pwg.org/index.html + + Send comments to the printmib WG using the Printer MIB + Project (PMP) Mailing List: pmp@pwg.org + + For further information, access the PWG web page under 'Printer + MIB': http://www.pwg.org/ + + Implementers of this specification are encouraged to join the + pmp mailing list in order to participate in discussions on any + clarifications needed and registration proposals being reviewed + in order to achieve consensus." + DESCRIPTION + "The MIB module for management of printers. + Copyright (C) The Internet Society (2004). This + version of this MIB module was published + in RFC 3805. For full legal notices see the RFC itself." + REVISION "200406020000Z" + DESCRIPTION + "Printer MIB v2. + Moved all enum groups to be maintained by IANA into new TCs + within the ianaPrinterMIB, which is contained in this + document. + New TCs created from enums defined within RFC 1759 Objects: + PrtPrintOrientationTC, PrtLocalizedDescriptionStringTC, + PrtConsoleDescriptionStringTC, PrtChannelStateTC, + PrtOutputStackingOrderTC, PrtOutputPageDeliveryOrientationTC, + PrtMarkerCounterUnitTC, PrtMarkerSuppliesSupplyUnitTC, + PrtMarkerSuppliesClassTC, PrtMarkerAddressabilityUnitTC, + PrtMarkerColorantRoleTC, PrtMediaPathMaxSpeedPrintUnitTC, + PrtInterpreterTwoWayTC, and PrtAlertSeverityLevelTC. + The following four TCs have been deprecated: + MediaUnit (replaced by PrtMediaUnitTC), + CapacityUnit (replaced by PrtCapacityUnitTC), + SubUnitStatus (replaced by PrtSubUnitStatusTC), + CodedCharSet (replaced by IANACharset in IANA Charset MIB) + Five new OBJECT-GROUPs: prtAuxilliarySheetGroup, + prtInputSwitchingGroup, prtGeneralV2Group, + prtAlertTableV2Group, prtChannelV2Group. + Nine new objects added to those groups: + prtAuxiliarySheetStartupPage, prtAuxiliarySheetBannerPage, + prtGeneralPrinterName, prtGeneralSerialNumber, + prtAlertCriticalEvents, prtAlertAllEvents, + + + prtInputMediaLoadTimeout, prtInputNextIndex, + prtChannelInformation. + SYNTAX range changed from (0..65535) to (1..65535) for the + index objects prtStorageRefSeqNumber, prtDeviceRefSeqNumber, + and prtConsoleLightIndex. + SYNTAX range changed from (0..65535) to (0..2147483647) for the + objects prtStorageRefIndex and prtDeviceRefIndex to agree + with the Host Resources MIB. + Defined a range for the objects with a SYNTAX of Integer32: + prtOutputDefaultIndex, prtInputMediaDimFeedDirDeclared, + prtInputMediaDimXFeedDirDeclared, prtInputMaxCapacity, + prtInputCurrentLevel, prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputMediaWeight, + prtInputMediaFormParts, prtOutputIndex, + prtOutputMaxCapacity, prtOutputRemainingCapacity, + prtOutputMaxDimFeedDir, prtOutputMaxDimXFeedDir, + prtOutputMinDimFeedDir, prtOutputMinDimXFeedDir, + prtMarkerAddressibilityFeedDir, + prtMarkerAddressibilityXFeedDir, prtMarkerNorthMargin, + prtMarkerSouthMargin, prtMarkerWestMargin, + prtMarkerEastMargin, prtMarkerSuppliesMaxCapacity, + prtMarkerSuppliesLevel, prtMarkerColorantTonality, + prtMediaPathMaxSpeed, prtMediaPathMaxMediaFeedDir, + prtMediaPathMaxMediaXFeedDir, prtMediaPathMinMediaFeedDir, + prtMediaPathMinMediaXFeedDir, prtChannelIndex, + prtChannelCurrentJobCntlLangIndex, prtInterpreterIndex, + prtChannelDefaultPageDescLangIndex, prtConsoleOnTime, + prtInterpreterFeedAddressibility, prtConsoleOffTime, + prtInterpreterXFeedAddressibility, prtAlertIndex, + prtAlertGroupIndex, prtAlertLocation. + Changed SYNTAX from Integer32 to InterfaceIndexOrZero for + prtChannelIfIndex. + Changed MAX-ACCESS of prtAlertIndex from not-accessible to + Read-only and added a compliance statement to allow a + MIN-ACCESS of accessible-for-notify. + One new NOTIFICATION-GROUP: prtAlertTrapGroup which contains + printerV2Alert. + In MODULE-COMPLIANCE prtMIBCompliance, new OBJECT-GROUPs and + the NOTIFICATION_GROUP, all in GROUP (not MANDATORY-GROUP) + clauses. The nine new objects are optional, i.e., this + document is backward compatible with RFC 1759." + REVISION "199411250000Z" + DESCRIPTION + "The original version of this MIB, published as RFC1759." + ::= { mib-2 43 } + + + + + +-- TEXTUAL-CONVENTIONs for this MIB module +-- +-- Generic unspecific TEXTUAL-CONVENTIONs +-- + +PrtMediaUnitTC ::= TEXTUAL-CONVENTION + -- Replaces MediaUnit in RFC 1759. + STATUS current + DESCRIPTION + "Units of measure for media dimensions." + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +MediaUnit ::= TEXTUAL-CONVENTION + -- Replaced by PrtMediaUnitTC. + STATUS deprecated + DESCRIPTION + "Units of measure for media dimensions." + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +PrtCapacityUnitTC ::= TEXTUAL-CONVENTION + -- Replaces CapacityUnit in RFC 1759. + STATUS current + DESCRIPTION + "Units of measure for media capacity." + SYNTAX INTEGER { + other(1), -- New, not in RFC 1759 + unknown(2), -- New, not in RFC 1759 + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + sheets(8), + feet(16), + meters(17), + -- Values for Finisher MIB + items(18), -- New, not in RFC 1759 + percent(19) -- New, not in RFC 1759 + } + +CapacityUnit ::= TEXTUAL-CONVENTION + -- Replaced by PrtCapacityUnitTC. + STATUS deprecated + DESCRIPTION + "Units of measure for media capacity." + + + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + sheets(8), + feet(16), + meters(17) + } + +PrtPrintOrientationTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtInterpreterDefaultOrientation in + -- RFC 1759. + STATUS current + DESCRIPTION + "A generic representation for printing orientation on a + 'page'." + SYNTAX INTEGER { + other(1), + portrait(3), + landscape(4) + } + +PrtSubUnitStatusTC ::= TEXTUAL-CONVENTION + -- Replaces SubUnitStatus in RFC 1759. + STATUS current + DESCRIPTION + "Status of a printer sub-unit. + + The SubUnitStatus is an integer that is the sum of 5 distinct + values, Availability, Non-Critical, Critical, On-line, and + Transitioning. These values are: + + Availability Value + + Available and Idle 0 0000'b + Available and Standby 2 0010'b + Available and Active 4 0100'b + Available and Busy 6 0110'b + Unavailable and OnRequest 1 0001'b + Unavailable because Broken 3 0011'b + Unknown 5 0101'b + + Non-Critical + No Non-Critical Alerts 0 0000'b + Non-Critical Alerts 8 1000'b + + Critical + + No Critical Alerts 0 0000'b + + + Critical Alerts 16 1 0000'b + + On-Line + + State is On-Line 0 0000'b + State is Off-Line 32 10 0000'b + + Transitioning + + At intended state 0 0000'b + Transitioning to intended state 64 100 0000'b" + + SYNTAX INTEGER (0..126) + +SubUnitStatus ::= TEXTUAL-CONVENTION + -- Replaced by PrtSubUnitStatusTC. + STATUS deprecated + DESCRIPTION + "Status of a printer sub-unit. + + The SubUnitStatus is an integer that is the sum of 5 distinct + values, Availability, Non-Critical, Critical, On-line, and + Transitioning. These values are: + + Availability Value + Available and Idle 0 0000'b + Available and Standby 2 0010'b + Available and Active 4 0100'b + Available and Busy 6 0110'b + Unavailable and OnRequest 1 0001'b + Unavailable because Broken 3 0011'b + Unknown 5 0101'b + + Non-Critical + No Non-Critical Alerts 0 0000'b + Non-Critical Alerts 8 1000'b + + Critical + + No Critical Alerts 0 0000'b + Critical Alerts 16 1 0000'b + + On-Line + + State is On-Line 0 0000'b + State is Off-Line 32 10 0000'b + + Transitioning + + + At intended state 0 0000'b + Transitioning to intended state 64 100 0000'b" + + SYNTAX INTEGER (0..126) + +PresentOnOff ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Presence and configuration of a device or feature." + SYNTAX INTEGER { + other(1), + on(3), + off(4), + notPresent(5) + } + +PrtLocalizedDescriptionStringTC ::= TEXTUAL-CONVENTION + -- This TC did not appear in RFC 1759. + STATUS current + DESCRIPTION + "An object MUST use this TEXTUAL-CONVENTION when its + 'charset' is controlled by the value of + prtGeneralCurrentLocalization." + SYNTAX OCTET STRING (SIZE(0..255)) + +PrtConsoleDescriptionStringTC ::= TEXTUAL-CONVENTION + -- This TC did not appear in RFC 1759. + STATUS current + DESCRIPTION + "An object MUST use this TEXTUAL-CONVENTION when its + 'charset' is controlled by the value of + prtConsoleLocalization." + SYNTAX OCTET STRING (SIZE(0..255)) + +CodedCharSet ::= TEXTUAL-CONVENTION + + -- Replaced by IANACharset TEXTUAL-CONVENTION in IANA Charset MIB. + STATUS deprecated + DESCRIPTION + "The original description clause from RFC 1759 [RFC1759] was + technically inaccurate and therefore has been deleted." + SYNTAX INTEGER { + other(1) -- used if the designated coded + -- character set is not currently in + -- the enumeration +} + +-- + + +-- Channel Group TEXTUAL-CONVENTIONs +-- + +PrtChannelStateTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtChannelState in RFC 1759. + STATUS current + DESCRIPTION + "The state of this print job delivery channel. The value + determines whether print data is allowed through this channel." + SYNTAX INTEGER { + other(1), + printDataAccepted(3), + noDataAccepted(4) + } + +-- +-- Input/Output Group TEXTUAL-CONVENTIONs +-- + +PrtOutputStackingOrderTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtOutputStackingOrder in RFC 1759. + STATUS current + DESCRIPTION + "The current state of the stacking order for the associated + output sub-unit. 'firstToLast' means that as pages are output, + the front of the next page is placed against the back of the + previous page. 'lastToFirst' means that as pages are output, + the back of the next page is placed against the front of the + previous page." + SYNTAX INTEGER { + unknown(2), + firstToLast(3), + lastToFirst(4) + } + +PrtOutputPageDeliveryOrientationTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtOutputPageDeliveryOrientation + -- in RFC 1759. + STATUS current + DESCRIPTION + "The reading surface that will be 'up' when pages are delivered + to the associated output sub-unit. Values are Face-Up and Face + Down (Note: interpretation of these values is, in general, + context-dependent based on locale; presentation of these values + to an end-user should be normalized to the expectations of the + user." + SYNTAX INTEGER { + faceUp(3), + + + faceDown(4) + } + +-- +-- Marker Group TEXTUAL-CONVENTIONs +-- + +PrtMarkerCounterUnitTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerCounterUnit in RFC 1759. + STATUS current + DESCRIPTION + "The unit that will be used by the printer when reporting + counter values for this marking sub-unit. The + time units of measure are provided for a device like a + strip recorder that does not or cannot track the physical + dimensions of the media and does not use characters, + lines or sheets." + + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + characters(5), + lines(6), + impressions(7), + sheets(8), + dotRow(9), + hours(11), + feet(16), + meters(17) + } + +PrtMarkerSuppliesSupplyUnitTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerSuppliesSupplyUnit + -- in RFC 1759. + STATUS current + DESCRIPTION + "Unit of this marker supply container/receptacle." + SYNTAX INTEGER { + other(1), -- New, not in RFC 1759 + unknown(2), -- New, not in RFC 1759 + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + impressions(7), -- New, not in RFC 1759 + sheets(8), -- New, not in RFC 1759 + hours(11), -- New, not in RFC 1759 + thousandthsOfOunces(12), + tenthsOfGrams(13), + hundrethsOfFluidOunces(14), + + + tenthsOfMilliliters(15), + feet(16), -- New, not in RFC 1759 + meters(17), -- New, not in RFC 1759 + -- Values for Finisher MIB + items(18), -- e.g., #staples. New, not in RFC 1759 + percent(19) -- New, not in RFC 1759 + } + +PrtMarkerSuppliesClassTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerSuppliesClass in RFC 1759. + STATUS current + DESCRIPTION + "Indicates whether this supply entity represents a supply + that is consumed or a receptacle that is filled." + SYNTAX INTEGER { + other(1), + supplyThatIsConsumed(3), + receptacleThatIsFilled(4) + } + +PrtMarkerColorantRoleTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerColorantRole in RFC 1759. + STATUS current + DESCRIPTION + "The role played by this colorant." + SYNTAX INTEGER { -- Colorant Role + other(1), + process(3), + spot(4) + } + +PrtMarkerAddressabilityUnitTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtMarkerAddressabilityUnit + -- in RFC 1759. + STATUS current + DESCRIPTION + "The unit of measure of distances, as applied to the marker's + resolution." + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +-- +-- Media Path TEXTUAL-CONVENTIONs +-- + +PrtMediaPathMaxSpeedPrintUnitTC ::= TEXTUAL-CONVENTION + + + -- This TC was extracted from prtMediaPathMaxSpeedPrintUnit + -- in RFC 1759. + STATUS current + DESCRIPTION + "The unit of measure used in specifying the speed of all + media paths in the printer." + SYNTAX INTEGER { + tenThousandthsOfInchesPerHour(3),-- .0001/hour + micrometersPerHour(4), + charactersPerHour(5), + linesPerHour(6), + impressionsPerHour(7), + sheetsPerHour(8), + dotRowPerHour(9), + feetPerHour(16), + metersPerHour(17) + } + +-- +-- Interpreter Group TEXTUAL-CONVENTIONs +-- + +PrtInterpreterTwoWayTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtInterpreterTwoWay in RFC 1759. + STATUS current + DESCRIPTION + "Indicates whether or not this interpreter returns information + back to the host." + SYNTAX INTEGER { + yes(3), + no(4) + } + +-- +-- Alert Group TEXTUAL-CONVENTIONs +-- + +PrtAlertSeverityLevelTC ::= TEXTUAL-CONVENTION + -- This TC was extracted from prtAlertSeverityLevel in RFC 1759. + STATUS current + DESCRIPTION + "The level of severity of this alert table entry. The printer + determines the severity level assigned to each entry in the + table. A critical alert is binary by nature and definition. A + warning is defined to be a non-critical alert. The original and + most common warning is unary. The binary warning was added later + and given a more distinguished name." + SYNTAX INTEGER { + + + other(1), + critical(3), + warning(4), + warningBinaryChangeEvent(5) -- New, not in RFC 1759 + } + +-- The General Printer Group +-- +-- The general printer sub-unit is responsible for the overall +-- control and status of the printer. There is exactly one +-- general printer sub-unit in a printer. + +prtGeneral OBJECT IDENTIFIER ::= { printmib 5 } + +prtGeneralTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of general information per printer. + Objects in this table are defined in various + places in the MIB, nearby the groups to + which they apply. They are all defined + here to minimize the number of tables that would + otherwise need to exist." + ::= { prtGeneral 1 } + +prtGeneralEntry OBJECT-TYPE + SYNTAX PrtGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry exists in this table for each device entry in the + host resources MIB device table with a device type of + 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex } + ::= { prtGeneralTable 1 } + +PrtGeneralEntry ::= SEQUENCE { + -- Note that not all of the objects in this sequence are in + -- the general printer group. The group to which an + -- object belongs is tagged with a label "General", "Input" + -- "Output", etc. after each entry in the following sequence. + -- + prtGeneralConfigChanges Counter32, -- General + + + + prtGeneralCurrentLocalization Integer32, -- General + prtGeneralReset PrtGeneralResetTC, + -- General + prtGeneralCurrentOperator OCTET STRING, + -- Responsible Party + prtGeneralServicePerson OCTET STRING, + -- Responsible Party + prtInputDefaultIndex Integer32, -- Input + prtOutputDefaultIndex Integer32, -- Output + prtMarkerDefaultIndex Integer32, -- Marker + prtMediaPathDefaultIndex Integer32, -- Media Path + prtConsoleLocalization Integer32, -- Console + prtConsoleNumberOfDisplayLines Integer32, -- Console + prtConsoleNumberOfDisplayChars Integer32, -- Console + prtConsoleDisable PrtConsoleDisableTC, + -- Console, + prtAuxiliarySheetStartupPage PresentOnOff, + -- AuxiliarySheet + prtAuxiliarySheetBannerPage PresentOnOff, + -- AuxiliarySheet + prtGeneralPrinterName OCTET STRING, + -- General V2 + prtGeneralSerialNumber OCTET STRING, + -- General V2 + prtAlertCriticalEvents Counter32, -- Alert V2 + prtAlertAllEvents Counter32 -- Alert V2 + } + +prtGeneralConfigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Counts configuration changes within the printer. A + configuration change is defined to be an action that results in + a change to any MIB object other than those that reflect status + or level, or those that act as counters or gauges. In addition, + any action that results in a row being added or deleted from + any table in the Printer MIB is considered a configuration + change. Such changes will often affect the capability of the + printer to service certain types of print jobs. Management + applications may cache infrequently changed configuration + information about sub units within the printer. This object + should be incremented whenever the agent wishes to notify + management applications that any cached configuration + information for this device is to be considered 'stale'. At + this point, the management application should flush any + configuration information cached about this device and fetch + + + + new configuration information. + + The following are examples of actions that would cause the + prtGeneralConfigChanges object to be incremented: + + - Adding an output bin + - Changing the media in a sensing input tray + - Changing the value of prtInputMediaType + + Note that the prtGeneralConfigChanges counter would not be + incremented when an input tray is temporarily removed to load + additional paper or when the level of an input device changes. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + + ::= { prtGeneralEntry 1 } + +prtGeneralCurrentLocalization OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the prtLocalizationIndex corresponding to the + current language, country, and character set to be used for + localized string values that are identified as being dependent + on the value of this object. Note that this object does not + apply to localized strings in the prtConsole group or to any + object that is not explicitly identified as being localized + according to prtGeneralCurrentLocalization. When an object's + 'charset' is controlled by the value of + prtGeneralCurrentLocalization, it MUST specify + PrtLocalizedDescriptionStringTC as its syntax. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneralEntry 2 } + +prtGeneralReset OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly defined + -- by this object. + SYNTAX PrtGeneralResetTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this value to 'powerCycleReset', 'resetToNVRAM', or + 'resetToFactoryDefaults' will result in the resetting of the + printer. When read, this object will always have the value + + + + 'notResetting(3)', and a SET of the value 'notResetting' shall + have no effect on the printer. Some of the defined values are + optional. However, every implementation must support at least + the values 'notResetting' and 'resetToNVRAM'." + ::= { prtGeneralEntry 3 } + +-- The Responsible Party group + +prtGeneralCurrentOperator OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the person who is responsible for operating + this printer. It is suggested that this string include + information that would enable other humans to reach the + operator, such as a phone number. As a convention to + facilitate automatic notification of the operator by the + agent or network management station, the phone number, + fax number or email address should be indicated by the + URL schemes 'tel:', 'fax:' and 'mailto:', respectively. + If either the phone, fax, or email information is not + available, then a line should not be included for this + information. + + NOTE: For interoperability purposes, it is advisable to + use email addresses formatted according to [RFC2822] + requirements. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneralEntry 4 } + +prtGeneralServicePerson OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the person responsible for servicing this + printer. It is suggested that this string include + information that would enable other humans to reach the + service person, such as a phone number. As a convention + to facilitate automatic notification of the operator by + the agent or network management station, the phone + number, fax number or email address should be indicated + by the URL schemes 'tel:', 'fax:' and 'mailto:', + respectively. If either the phone, fax, or email + information is not available, then a line should not + + + + be included for this information. + + NOTE: For interoperability purposes, it is advisable to use + email addresses formatted per [RFC2822] requirements. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + + ::= { prtGeneralEntry 5 } + +-- Default indexes section +-- +-- The following four objects are used to specify the indexes of +-- certain subunits used as defaults during the printing process. + +prtInputDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInputIndex corresponding to the default input + sub-unit: that is, this object selects the default source of + input media." +::= { prtGeneralEntry 6 } + +prtOutputDefaultIndex OBJECT-TYPE + -- A range has been added to the SYNTAX clause that was not in + -- RFC 1759. Although this violates SNMP compatibility rules, + -- it provides a more reasonable guide for SNMP managers. + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtOutputIndex corresponding to the default + output sub-unit; that is, this object selects the default + output destination." +::= { prtGeneralEntry 7 } + +prtMarkerDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the + default marker sub-unit; that is, this object selects the + default marker." + ::= { prtGeneralEntry 8 } + + + + +prtMediaPathDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtMediaPathIndex corresponding to + the default media path; that is, the selection of the + default media path." + ::= { prtGeneralEntry 9 } + +-- Console general section +-- +-- The following four objects describe overall parameters of the +-- printer console subsystem. + +prtConsoleLocalization OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the prtLocalizationIndex corresponding to + the language, country, and character set to be used for the + console. This localization applies both to the actual display + on the console as well as the encoding of these console objects + in management operations. When an object's 'charset' is + controlled by the value of prtConsoleLocalization, it MUST + specify PrtConsoleDescriptionStringTC as its syntax. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneralEntry 10 } + +prtConsoleNumberOfDisplayLines OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of lines on the printer's physical + display. This value is 0 if there are no lines on the + physical display or if there is no physical display" + ::= { prtGeneralEntry 11 } + +prtConsoleNumberOfDisplayChars OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of characters per line displayed on the physical + + + + display. This value is 0 if there are no lines on the physical + display or if there is no physical display" + ::= { prtGeneralEntry 12 } + +prtConsoleDisable OBJECT-TYPE + -- In RFC 1759, the enumeration values were implicitly defined + -- by this object. + SYNTAX PrtConsoleDisableTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This value indicates how input is (or is not) accepted from + the operator console. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneralEntry 13 } + +-- The Auxiliary Sheet Group +-- +-- The auxiliary sheet group allows the administrator to control +-- the production of auxiliary sheets by the printer. This group +-- contains only the "prtAuxiliarySheetStartupPage" and +-- "prtAuxiliarySheetBannerPage" objects. + +prtAuxiliarySheetStartupPage OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Used to enable or disable printing a startup page. If enabled, + a startup page will be printed shortly after power-up, when the + device is ready. Typical startup pages include test patterns + and/or printer configuration information." + ::= { prtGeneralEntry 14 } + +prtAuxiliarySheetBannerPage OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Used to enable or disable printing banner pages at the + beginning of jobs. This is a master switch which applies to all + jobs, regardless of interpreter." + ::= { prtGeneralEntry 15 } + + + + + + +-- Administrative section (The General V2 Group) +-- +-- The following two objects are used to specify administrative +-- information assigned to the printer. + +prtGeneralPrinterName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administrator-specified name for this printer. Depending + upon implementation of this printer, the value of this object + may or may not be same as the value for the MIB-II 'SysName' + object." + ::= { prtGeneralEntry 16 } + +prtGeneralSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A recorded serial number for this device that indexes some + type device catalog or inventory. This value is usually set by + the device manufacturer but the MIB supports the option of + writing for this object for site-specific administration of + device inventory or tracking." + ::= { prtGeneralEntry 17 } + +-- General alert table section (Alert Table V2 Group) +-- +-- The following two objects are used to specify counters +-- associated with the Alert Table. + +prtAlertCriticalEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A running counter of the number of critical alert events that + have been recorded in the alert table. The value of this object + is RESET in the event of a power cycle operation (i.e., the + value is not persistent." + ::= { prtGeneralEntry 18 } + +prtAlertAllEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "A running counter of the total number of alert event entries + (critical and non-critical) that have been recorded in the + alert table" + ::= { prtGeneralEntry 19 } + +-- The Cover Table +-- +-- The cover portion of the General print sub-unit describes the +-- covers and interlocks of the printer. The Cover Table has an +-- entry for each cover and interlock. + +prtCover OBJECT IDENTIFIER ::= { printmib 6 } + +prtCoverTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtCoverEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the covers and interlocks of the printer." + ::= { prtCover 1 } + +prtCoverEntry OBJECT-TYPE + SYNTAX PrtCoverEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a cover or interlock. + Entries may exist in the table for each device + index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtCoverIndex } + ::= { prtCoverTable 1 } + +PrtCoverEntry ::= SEQUENCE { + prtCoverIndex Integer32, + prtCoverDescription PrtLocalizedDescriptionStringTC, + prtCoverStatus PrtCoverStatusTC + } + +prtCoverIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this Cover sub + + + + unit. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new cover + sub-units to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtCoverEntry 1 } + +prtCoverDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The manufacturer provided cover sub-mechanism name in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtCoverEntry 2 } + +prtCoverStatus OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly defined + -- by this object and are now defined in the IANA-PRINTER-MIB. The + -- new TC has defined "coverOpen" and "coverClosed" to replace + -- "doorOpen" and "doorClosed" in RFC 1759. A name change is not + -- formally allowed per SMI rules, but was agreed to by the WG group + -- since a door has a more restrictive meaning than a cover and + -- Cover group is intended to support doors as a subset of covers. + + SYNTAX PrtCoverStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of this cover sub-unit." + ::= { prtCoverEntry 3 } + +-- The Localization Table +-- +-- The localization portion of the General printer sub-unit is +-- responsible for identifying the natural language, country, and +-- character set in which character strings are expressed. There +-- may be one or more localizations supported per printer. The +-- available localizations are represented by the Localization +-- table. + +prtLocalization OBJECT IDENTIFIER ::= { printmib 7 } + +prtLocalizationTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF PrtLocalizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The available localizations in this printer." + ::= { prtLocalization 1 } + +prtLocalizationEntry OBJECT-TYPE + SYNTAX PrtLocalizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A description of a localization. + Entries may exist in the table for each device + index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtLocalizationIndex } + ::= { prtLocalizationTable 1 } + +PrtLocalizationEntry ::= SEQUENCE { + prtLocalizationIndex Integer32, + prtLocalizationLanguage OCTET STRING, + prtLocalizationCountry OCTET STRING, + prtLocalizationCharacterSet IANACharset + } + +prtLocalizationIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this + localization entry. Although these values may change due to a + major reconfiguration of the device (e.g., the addition of new + localization data to the printer), values SHOULD remain + stable across successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtLocalizationEntry 1 } + +prtLocalizationLanguage OBJECT-TYPE + -- Note: The size is fixed, was incorrectly 0..2 in RFC 1759. + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "A two character language code from ISO 639. Examples en, + es, fr, de. NOTE: These examples were shown as upper case in + RFC 1759 and are now shown as lower case to agree with ISO 639." + ::= { prtLocalizationEntry 2 } + +prtLocalizationCountry OBJECT-TYPE + -- Note: The size is fixed, was incorrectly 0..2 in RFC 1759. + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A two character country code from ISO 3166, a blank string + (two space characters) shall indicate that the country is not + defined. Examples: US, GB, FR, DE, ..." + ::= { prtLocalizationEntry 3 } + +prtLocalizationCharacterSet OBJECT-TYPE + SYNTAX IANACharset + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The coded character set used for this localization." + ::= { prtLocalizationEntry 4 } + +-- The System Resources Tables +-- +-- The Printer MIB makes use of the Host Resources MIB to +-- define system resources by referencing the storage +-- and device groups of the print group. + +prtStorageRefTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtStorageRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines which printer, amongst multiple printers + serviced by one agent, owns which storage units. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtGeneral 2 } + +prtStorageRefEntry OBJECT-TYPE + SYNTAX PrtStorageRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table will have an entry for each entry in the Host + Resources MIB storage table that represents storage associated + with a printer managed by this agent. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrStorageIndex, prtStorageRefSeqNumber } + ::= { prtStorageRefTable 1 } + +PrtStorageRefEntry ::= SEQUENCE { + prtStorageRefSeqNumber Integer32, + prtStorageRefIndex Integer32 + } + +prtStorageRefSeqNumber OBJECT-TYPE + -- NOTE: The range has been changed from RFC 1759, which allowed a + -- minumum value of zero. This was incorrect, since zero is not a + -- valid index. + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value will be unique amongst all entries with a common + value of hrStorageIndex. This object allows a storage entry to + point to the multiple printer devices with which it is + associated." + ::= { prtStorageRefEntry 1 } + +prtStorageRefIndex OBJECT-TYPE + -- NOTE: The range has been changed from RFC 1759 to be compatible + -- with the defined range of hrDeviceIndex. + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrDeviceIndex of the printer device that this + storageEntry is associated with." + ::= { prtStorageRefEntry 2 } + +prtDeviceRefTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtDeviceRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines which printer, amongst multiple printers + serviced by one agent, is associated with which devices. + + NOTE: The above description has been modified from RFC 1759 + + + + for clarification." + ::= { prtGeneral 3 } + +prtDeviceRefEntry OBJECT-TYPE + SYNTAX PrtDeviceRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table will have an entry for each entry in the Host + Resources MIB device table that represents a device associated + with a printer managed by this agent. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtDeviceRefSeqNumber } + ::= { prtDeviceRefTable 1 } + +PrtDeviceRefEntry ::= SEQUENCE { + prtDeviceRefSeqNumber Integer32, + prtDeviceRefIndex Integer32 + } + +prtDeviceRefSeqNumber OBJECT-TYPE + -- NOTE: The range has been changed from RFC 1759, which allowed a + -- minumum value of zero. This was incorrect, since zero is not a + -- valid index. + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value will be unique amongst all entries with a common + value of hrDeviceIndex. This object allows a device entry to + point to the multiple printer devices with which it is + associated." + ::= { prtDeviceRefEntry 1 } + +prtDeviceRefIndex OBJECT-TYPE + -- NOTE: The range has been changed from RFC 1759 to be compatible + -- with the defined range of hrDeviceIndex. + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrDeviceIndex of the printer device that this + deviceEntry is associated with." + ::= { prtDeviceRefEntry 2 } + + + + + +-- The Input Group +-- +-- Input sub-units are managed as a tabular, indexed collection +-- of possible devices capable of providing media for input to +-- the printing process. Input sub-units typically have a +-- location, a type, an identifier, a set of constraints on +-- possible media sizes and potentially other media +-- characteristics, and may be capable of indicating current +-- status or capacity. + +prtInput OBJECT IDENTIFIER ::= { printmib 8 } + +prtInputTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the devices capable of providing media for input to + the printing process." + ::= { prtInput 2 } + +prtInputEntry OBJECT-TYPE + SYNTAX PrtInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a device capable of providing media for input to + the printing process. Entries may exist in the table for each + device index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtInputIndex } + ::= { prtInputTable 1 } + +PrtInputEntry ::= SEQUENCE { + prtInputIndex Integer32, + prtInputType PrtInputTypeTC, + prtInputDimUnit PrtMediaUnitTC, + prtInputMediaDimFeedDirDeclared Integer32, + prtInputMediaDimXFeedDirDeclared Integer32, + prtInputMediaDimFeedDirChosen Integer32, + prtInputMediaDimXFeedDirChosen Integer32, + prtInputCapacityUnit PrtCapacityUnitTC, + prtInputMaxCapacity Integer32, + prtInputCurrentLevel Integer32, + prtInputStatus PrtSubUnitStatusTC, + prtInputMediaName OCTET STRING, + + + + prtInputName OCTET STRING, + prtInputVendorName OCTET STRING, + prtInputModel OCTET STRING, + prtInputVersion OCTET STRING, + prtInputSerialNumber OCTET STRING, + prtInputDescription PrtLocalizedDescriptionStringTC, + prtInputSecurity PresentOnOff, + prtInputMediaWeight Integer32, + prtInputMediaType OCTET STRING, + prtInputMediaColor OCTET STRING, + prtInputMediaFormParts Integer32, + prtInputMediaLoadTimeout Integer32, + prtInputNextIndex Integer32 + } + +prtInputIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this input + sub-unit. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new input + sub-units to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInputEntry 1 } + +prtInputType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtInputTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of technology (discriminated primarily according to + feeder mechanism type) employed by the input sub-unit. Note, + the Input Class provides for a descriptor field to further + qualify the other choice." + ::= { prtInputEntry 2 } + +prtInputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The unit of measurement for use calculating and relaying + dimensional values for this input sub-unit." + ::= { prtInputEntry 3 } + +prtInputMediaDimFeedDirDeclared OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the declared dimension, in + the feed direction, of the media that is (or, if empty, was or + will be) in this input sub-unit. The feed direction is the + direction in which the media is fed on this sub-unit. This + dimension is measured in input sub-unit dimensional units + (controlled by prtInputDimUnit, which uses PrtMediaUnitTC). If + this input sub-unit can reliably sense this value, the value is + sensed by the printer and may not be changed by management + requests. Otherwise, the value may be changed. The value (-1) + means other and specifically means that this sub-unit places no + restriction on this parameter. The value (-2) indicates + unknown." + ::= { prtInputEntry 4 } + +prtInputMediaDimXFeedDirDeclared OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the declared dimension, in + the cross feed direction, of the media that is (or, if empty, + was or will be) in this input sub-unit. The cross feed + direction is ninety degrees relative to the feed direction + associated with this sub-unit. This dimension is measured in + input sub-unit dimensional units (controlled by + prtInputDimUnit,which uses PrtMediaUnitTC). If this input sub- + unit can reliably sense this value, the value is sensed by the + printer and may not be changed by management requests. + Otherwise, the value may be changed. The value (-1) means other + and specifically means that this sub-unit places no restriction + on this parameter. The value (-2) indicates unknown." + ::= { prtInputEntry 5 } + +prtInputMediaDimFeedDirChosen OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The printer will act as if media of the chosen dimension (in + the feed direction) is present in this input source. Note that + this value will be used even if the input tray is empty. Feed + dimension measurements are taken relative to the feed direction + associated with that sub-unit and are in input sub-unit + dimensional units (controlled by prtInputDimUnit, which uses + PrtMediaUnitTC). If the printer supports the declared + dimension,the granted dimension is the same as the declared + dimension. If not, the granted dimension is set to the closest + dimension that the printer supports when the declared dimension + is set. The value (-1) means other and specifically indicates + that this sub-unit places no restriction on this parameter. The + value (-2)indicates unknown." + ::= { prtInputEntry 6 } + +prtInputMediaDimXFeedDirChosen OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The printer will act as if media of the chosen dimension (in + the cross feed direction) is present in this input source. Note + that this value will be used even if the input tray is empty. + The cross feed direction is ninety degrees relative to the feed + direction associated with this sub-unit. This dimension is + measured in input sub-unit dimensional units (controlled by + prtInputDimUnit, which uses PrtMediaUnitTC). If the printer + supports the declare dimension, the granted dimension is the + same as the declared dimension. If not, the granted dimension + is set to the closest dimension that the printer supports when + the declared dimension is set. The value (-1) means other and + specifically indicates that this sub-unit places no restriction + on this parameter. The value (-2) indicates unknown." + ::= { prtInputEntry 7 } + +prtInputCapacityUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + capacity values for this input sub-unit." + ::= { prtInputEntry 8 } + + + +prtInputMaxCapacity OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of the input sub-unit in input sub-unit + capacity units (PrtCapacityUnitTC). There is no convention + associated with the media itself so this value reflects claimed + capacity. If this input sub-unit can reliably sense this value, + the value is sensed by the printer and may not be changed by + management requests; otherwise, the value may be written (by a + Remote Control Panel or a Management Application). The value + (-1) means other and specifically indicates that the sub-unit + places no restrictions on this parameter. The value (-2) means + unknown." + ::= { prtInputEntry 9 } + +prtInputCurrentLevel OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-3..2147483647) -- in capacity units + -- (PrtCapacityUnitTC). + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current capacity of the input sub-unit in input sub-unit + capacity units (PrtCapacityUnitTC). If this input sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed by management requests; otherwise, the + value may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown. The value (-3) means + that the printer knows that at least one unit remains." + ::= { prtInputEntry 10 } + +prtInputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this input sub-unit." + ::= { prtInputEntry 11 } + +prtInputMediaName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "A description of the media contained in this input sub-unit; + This description is to be used by a client to format and + Localize a string for display to a human operator. This + description is not processed by the printer. It is used to + provide information not expressible in terms of the other + media attributes (e.g., prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputMediaWeight, + prtInputMediaType)." + -- The following reference was not included in RFC 1759. + REFERENCE + "The PWG Standardized Media Names specification [PWGMEDIA] + contains the recommended values for this object. See also + RFC 3805 Appendix C,'Media Names', which lists the values + Of standardized media names defined in ISO/IEC 10175." + ::= { prtInputEntry 12 } + +-- INPUT MEASUREMENT +-- +-- _______ | | +-- ^ | | +-- | | | | +-- | |_ _ _ _ _ _ _ _| _______________ |direction +-- | | | ^ v +-- MaxCapacity | Sheets | | +-- | | left | CurrentLevel +-- | | in | | +-- v | tray | v +-- _______ +_______________+ _______ + +-- The Extended Input Group + +prtInputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this input sub-unit." + ::= { prtInputEntry 13 } + +prtInputVendorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor name of this input sub-unit." + ::= { prtInputEntry 14 } + + + + +prtInputModel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The model name of this input sub-unit." + ::= { prtInputEntry 15 } + +prtInputVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of this input sub-unit." + ::= { prtInputEntry 16 } + +prtInputSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number assigned to this input sub-unit." + ::= { prtInputEntry 17 } + +prtInputDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free-form text description of this input sub-unit in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtInputEntry 18 } + +prtInputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this input sub-unit has some security associated + with it." + ::= { prtInputEntry 19 } + +-- The Input Media Group +-- +-- The Input Media Group supports identification of media +-- installed or available for use on a printing device. + + + +-- Medium resources are identified by name, and include a +-- collection of characteristic attributes that may further be +-- used for selection and management of them. +-- The Input Media group consists of a set of optional +-- "columns" in the Input Table. In this manner, a minimally +-- conforming implementation may choose to not support reporting +-- of media resources if it cannot do so. + +prtInputMediaWeight OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The weight of the medium associated with this input sub-unit + in grams / per meter squared. The value (-2) means unknown." + ::= { prtInputEntry 20 } + +prtInputMediaType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the type of medium associated with this input sub + unit. This name need not be processed by the printer; it might + simply be displayed to an operator. + + NOTE: The above description has been modified from RFC 1759." + -- The following reference was not included in RFC 1759. + REFERENCE + "The PWG Standardized Media Names specification [PWGMEDIA], + section 3 Media Type Names, contains the recommended values for + this object. Implementers may add additional string values. + The naming conventions in ISO 9070 are recommended in order to + avoid potential name clashes." + ::= { prtInputEntry 21 } + +prtInputMediaColor OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the color of the medium associated with + this input sub-unit using standardized string values. + + NOTE: The above description has been modified from RFC 1759." + -- The following reference was not included in RFC 1759. + REFERENCE + + + + "The PWG Standardized Media Names specification [PWGMEDIA], + section 4 Media Color Names, contains the recommended values + for this object. Implementers may add additional string values. + The naming conventions in ISO 9070 are recommended in order to + avoid potential name clashes." + ::= { prtInputEntry 22 } + +prtInputMediaFormParts OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of parts associated with the medium + associated with this input sub-unit if the medium is a + multi-part form. The value (-1) means other and + specifically indicates that the device places no + restrictions on this parameter. The value (-2) means + unknown." + ::= { prtInputEntry 23 } + +-- The Input Switching Group +-- +-- The input switching group allows the administrator to set the +-- input subunit time-out for the printer and to control the +-- automatic input subunit switching by the printer when an input +-- subunit becomes empty. + +prtInputMediaLoadTimeout OBJECT-TYPE + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When the printer is not able to print due to a subunit being + empty or the requested media must be manually loaded, the + printer will wait for the duration (in seconds) specified by + this object. Upon expiration of the time-out, the printer will + take the action specified by prtInputNextIndex. + + The event which causes the printer to enter the waiting state + is product specific. If the printer is not waiting for manually + fed media, it may switch from an empty subunit to a different + subunit without waiting for the time-out to expire. + + A value of (-1) implies 'other' or 'infinite' which translates + to 'wait forever'. The action which causes printing to continue + is product specific. A value of (-2) implies 'unknown'." + ::= { prtInputEntry 24 } + + + +prtInputNextIndex OBJECT-TYPE + SYNTAX Integer32 (-3..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInputIndex corresponding to the input subunit + which will be used when this input subunit is emptied and the + time-out specified by prtInputMediaLoadTimeout expires. A value + of zero(0) indicates that auto input switching will not occur + when this input subunit is emptied. If the time-out specified + by prtInputLoadMediaTimeout expires and this value is zero(0), + the job will be aborted. A value of (-1) means other. The + value (-2)means 'unknown' and specifically indicates that an + implementation specific method will determine the next input + subunit to use at the time this subunit is emptied and the time + out expires. The value(-3) means input switching is not + supported for this subunit." + ::= { prtInputEntry 25 } + +-- The Output Group +-- +-- Output sub-units are managed as a tabular, indexed collection +-- of possible devices capable of receiving media delivered from +-- the printing process. Output sub-units typically have a +-- location, a type, an identifier, a set of constraints on +-- possible media sizes and potentially other characteristics, +-- and may be capable of indicating current status or capacity. + +prtOutput OBJECT IDENTIFIER ::= { printmib 9 } + +prtOutputTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the devices capable of receiving media delivered + from the printing process." + ::= { prtOutput 2 } + +prtOutputEntry OBJECT-TYPE + SYNTAX PrtOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a device capable of receiving media delivered + from the printing process. Entries may exist in the table for + each device index with a device type of 'printer'. + + + + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtOutputIndex } + ::= { prtOutputTable 1 } + +PrtOutputEntry ::= SEQUENCE { + prtOutputIndex Integer32, + prtOutputType PrtOutputTypeTC, + prtOutputCapacityUnit PrtCapacityUnitTC, + prtOutputMaxCapacity Integer32, + prtOutputRemainingCapacity Integer32, + prtOutputStatus PrtSubUnitStatusTC, + prtOutputName OCTET STRING, + prtOutputVendorName OCTET STRING, + prtOutputModel OCTET STRING, + prtOutputVersion OCTET STRING, + prtOutputSerialNumber OCTET STRING, + prtOutputDescription PrtLocalizedDescriptionStringTC, + prtOutputSecurity PresentOnOff, + prtOutputDimUnit PrtMediaUnitTC, + prtOutputMaxDimFeedDir Integer32, + prtOutputMaxDimXFeedDir Integer32, + prtOutputMinDimFeedDir Integer32, + prtOutputMinDimXFeedDir Integer32, + prtOutputStackingOrder PrtOutputStackingOrderTC, + prtOutputPageDeliveryOrientation + PrtOutputPageDeliveryOrientationTC, + prtOutputBursting PresentOnOff, + prtOutputDecollating PresentOnOff, + prtOutputPageCollated PresentOnOff, + prtOutputOffsetStacking PresentOnOff + } + +prtOutputIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by this printer to identify this output + sub-unit. Although these values may change due to a major + reconfiguration of the sub-unit (e.g., the addition of new + output devices to the printer), values SHOULD remain stable + across successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtOutputEntry 1 } + + + +prtOutputType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly defined + -- by this object. + SYNTAX PrtOutputTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of technology supported by this output sub-unit." + ::= { prtOutputEntry 2 } + +prtOutputCapacityUnit OBJECT-TYPE + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + capacity values for this output sub-unit." + ::= { prtOutputEntry 3 } + +prtOutputMaxCapacity OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this output sub-unit in output sub- + unit capacity units (PrtCapacityUnitTC). There is no convention + associated with the media itself so this value essentially + reflects claimed capacity. If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may + not be changed by management requests; otherwise, the value may + be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown." + ::= { prtOutputEntry 4 } + +prtOutputRemainingCapacity OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-3..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The remaining capacity of the possible output sub-unit + capacity in output sub-unit capacity units + (PrtCapacityUnitTC)of this output sub-unit. If this output sub- + unit can reliably sense this value, the value is sensed by the + printer and may not be modified by management requests; + + + + otherwise, the value may be written (by a Remote Control Panel + or a Management Application). The value (-1) means other and + specifically indicates that the sub-unit places no restrictions + on this parameter. The value (-2) means unknown. The value + (-3) means that the printer knows that there remains capacity + for at least one unit." + ::= { prtOutputEntry 5 } + +prtOutputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this output sub-unit." + ::= { prtOutputEntry 6 } + +-- OUTPUT MEASUREMENT +-- +-- _______ | | ________ +-- ^ | | ^ +-- | | | | +-- | | |RemainingCapacity +-- MaxCapacity| | | +-- | | | v ^ +-- | |_ _ _ _ _ _ _ _ | _______________ |direction +-- | | Sheets | | +-- | | in | +-- v | Output | +-- _______ +________________+ + +-- The Extended Output Group + +prtOutputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this output sub-unit." + ::= { prtOutputEntry 7 } + +prtOutputVendorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor name of this output sub-unit." + ::= { prtOutputEntry 8 } + + + + +prtOutputModel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The model name assigned to this output sub-unit. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtOutputEntry 9 } + +prtOutputVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of this output sub-unit." + ::= { prtOutputEntry 10 } + +prtOutputSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number assigned to this output sub-unit." + ::= { prtOutputEntry 11 } + +prtOutputDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free-form text description of this output sub-unit in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtOutputEntry 12 } + +prtOutputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this output sub-unit has some security associated + with it and if that security is enabled or not." + ::= { prtOutputEntry 13 } + + + + + +-- The Output Dimensions Group + +prtOutputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + dimensional values for this output sub-unit." + ::= { prtOutputEntry 14 } + +prtOutputMaxDimFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum dimensions supported by this output sub-unit + for measurements taken parallel relative to the feed + direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed with management protocol operations. + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification and to explain the purpose of (-1) and (-2)." + ::= { prtOutputEntry 15 } + +prtOutputMaxDimXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum dimensions supported by this output sub-unit + for measurements taken ninety degrees relative to the + feed direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed with management protocol operations. + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + + + NOTE: The above description has been modified from RFC 1759 + for clarification and to explain the purpose of (-1) and (-2)." + ::= { prtOutputEntry 16 } + +prtOutputMinDimFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum dimensions supported by this output sub-unit + for measurements taken parallel relative to the feed + direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed with management protocol operations. + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification and to explain the purpose of (-1) and (-2)." + ::= { prtOutputEntry 17 } + +prtOutputMinDimXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum dimensions supported by this output sub-unit + for measurements taken ninety degrees relative to the + feed direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed with management protocol operations. + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification and to explain the purpose of (-1) and (-2)." + ::= { prtOutputEntry 18 } + + + + + + +-- The Output Features Group + +prtOutputStackingOrder OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtOutputStackingOrderTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the stacking order for the + associated output sub-unit. 'FirstToLast' means + that as pages are output the front of the next page is + placed against the back of the previous page. + 'LasttoFirst' means that as pages are output the back + of the next page is placed against the front of the + previous page." + ::= { prtOutputEntry 19 } + +prtOutputPageDeliveryOrientation OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtOutputPageDeliveryOrientationTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The reading surface that will be 'up' when pages are + delivered to the associated output sub-unit. Values are + faceUp and faceDown. (Note: interpretation of these + values is in general context-dependent based on locale; + presentation of these values to an end-user should be + normalized to the expectations of the user)." + ::= { prtOutputEntry 20 } + +prtOutputBursting OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the outputting sub-unit supports + bursting, and if so, whether the feature is enabled. Bursting + is the process by which continuous media is separated into + individual sheets, typically by bursting along pre-formed + perforations." + ::= { prtOutputEntry 21 } + +prtOutputDecollating OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "This object indicates that the output supports decollating, + and if so, whether the feature is enabled. Decollating is the + process by which the individual parts within a multi-part form + are separated and sorted into separate stacks for each part." + ::= { prtOutputEntry 22 } + +prtOutputPageCollated OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output sub-unit supports page + collation, and if so, whether the feature is enabled. See RFC + 3805 Appendix A, Glossary Of Terms, for definition of how this + document defines collation. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtOutputEntry 23 } + +prtOutputOffsetStacking OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output supports offset + stacking,and if so, whether the feature is enabled. See RFC + 3805 Appendix A, Glossary Of Terms, for how Offset Stacking is + defined by this document. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtOutputEntry 24 } + +-- The Marker Group +-- +-- A marker is the mechanism that produces marks on the print +-- media. The marker sub-units and their associated supplies are +-- represented by the Marker Group in the model. A printer can +-- contain one or more marking mechanisms. Some examples of +-- multiple marker sub-units are: a printer +-- with separate markers for normal and magnetic ink or an +-- imagesetter that can output to both a proofing device and +-- final film. Each marking device can have its own set of +-- characteristics associated with it, such as marking technology +-- and resolution. + + + +prtMarker OBJECT IDENTIFIER ::= { printmib 10 } + +-- The printable area margins as listed below define an area of +-- the print media which is guaranteed to be printable for all +-- combinations of input, media paths, and interpreters for this +-- marker. + +prtMarkerTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The marker table provides a description of each marker + sub-unit contained within the printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarker 2 } + +prtMarkerEntry OBJECT-TYPE + SYNTAX PrtMarkerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table define the characteristics and status + of each marker sub-unit in the printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtMarkerIndex } + ::= { prtMarkerTable 1 } + +PrtMarkerEntry ::= SEQUENCE { + prtMarkerIndex Integer32, + prtMarkerMarkTech PrtMarkerMarkTechTC, + prtMarkerCounterUnit PrtMarkerCounterUnitTC, + prtMarkerLifeCount Counter32, + prtMarkerPowerOnCount Counter32, + prtMarkerProcessColorants Integer32, + prtMarkerSpotColorants Integer32, + prtMarkerAddressabilityUnit PrtMarkerAddressabilityUnitTC, + prtMarkerAddressabilityFeedDir Integer32, + prtMarkerAddressabilityXFeedDir Integer32, + prtMarkerNorthMargin Integer32, + prtMarkerSouthMargin Integer32, + prtMarkerWestMargin Integer32, + prtMarkerEastMargin Integer32, + prtMarkerStatus PrtSubUnitStatusTC + + + + } + +prtMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this marking + SubUnit. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new marking + sub-units to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 1 } + +prtMarkerMarkTech OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerMarkTechTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of marking technology used for this marking + sub-unit." + ::= { prtMarkerEntry 2 } + +prtMarkerCounterUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerCounterUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit that will be used by the printer when reporting + counter values for this marking sub-unit. The time units of + measure are provided for a device like a strip recorder that + does not or cannot track the physical dimensions of the media + and does not use characters, lines or sheets." + ::= { prtMarkerEntry 3 } + +prtMarkerLifeCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the number of units of measure counted during the + + + + life of printer using units of measure as specified by + prtMarkerCounterUnit. + + Note: This object should be implemented as a persistent object + with a reliable value throughout the lifetime of the printer." + ::= { prtMarkerEntry 4 } + +prtMarkerPowerOnCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the number of units of measure counted since the + equipment was most recently powered on using units of measure + as specified by prtMarkerCounterUnit." + ::= { prtMarkerEntry 5 } + +prtMarkerProcessColorants OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of process colors supported by this marker. A + process color of 1 implies monochrome. The value of this + object and prtMarkerSpotColorants cannot both be 0. The value + of prtMarkerProcessColorants must be 0 or greater. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 6 } + +prtMarkerSpotColorants OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of spot colors supported by this marker. The value + of this object and prtMarkerProcessColorants cannot both be 0. + Must be 0 or greater. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 7 } + +prtMarkerAddressabilityUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerAddressabilityUnitTC + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure of distances, as applied to the marker's + resolution. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 8 } + +prtMarkerAddressabilityFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addressable marking positions in the + feed direction per 10000 units of measure specified by + prtMarkerAddressabilityUnit. A value of (-1) implies 'other' + or 'infinite' while a value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 9 } + +prtMarkerAddressabilityXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addressable marking positions in the + cross feed direction in 10000 units of measure specified by + prtMarkerAddressabilityUnit. A value of (-1) implies 'other' + or 'infinite' while a value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerEntry 10 } + +prtMarkerNorthMargin OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin, in units identified by prtMarkerAddressabilityUnit, + from the leading edge of the medium as the medium flows through + + + + the marking engine with the side to be imaged facing the + observer. The leading edge is the North edge and the other + edges are defined by the normal compass layout of directions + with the compass facing the observer. Printing within the area + bounded by all four margins is guaranteed for all interpreters. + The value (-2) means unknown." + ::= { prtMarkerEntry 11 } + +prtMarkerSouthMargin OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the South edge (see prtMarkerNorthMargin) of + the medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 12 } + +prtMarkerWestMargin OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the West edge (see prtMarkerNorthMargin) of + the medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 13 } + +prtMarkerEastMargin OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the East edge (see prtMarkerNorthMargin) of + the medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 14 } + +prtMarkerStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current status of this marker sub-unit." + ::= { prtMarkerEntry 15 } + +-- The Marker Supplies Group + +prtMarkerSupplies OBJECT IDENTIFIER ::= { printmib 11 } + +prtMarkerSuppliesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerSuppliesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the marker supplies available on this printer." + ::= { prtMarkerSupplies 1 } + +prtMarkerSuppliesEntry OBJECT-TYPE + SYNTAX PrtMarkerSuppliesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a marker supply. Entries may exist in the table + for each device index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtMarkerSuppliesIndex } + ::= { prtMarkerSuppliesTable 1 } +PrtMarkerSuppliesEntry ::= SEQUENCE { + prtMarkerSuppliesIndex Integer32, + prtMarkerSuppliesMarkerIndex Integer32, + prtMarkerSuppliesColorantIndex Integer32, + prtMarkerSuppliesClass PrtMarkerSuppliesClassTC, + prtMarkerSuppliesType PrtMarkerSuppliesTypeTC, + prtMarkerSuppliesDescription PrtLocalizedDescriptionStringTC, + prtMarkerSuppliesSupplyUnit PrtMarkerSuppliesSupplyUnitTC, + prtMarkerSuppliesMaxCapacity Integer32, + prtMarkerSuppliesLevel Integer32 + } + +prtMarkerSuppliesIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this marker + supply. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new marker + + + + supplies to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerSuppliesEntry 1 } + +prtMarkerSuppliesMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the marking sub + unit with which this marker supply sub-unit is associated." + ::= { prtMarkerSuppliesEntry 2 } + +prtMarkerSuppliesColorantIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerColorantIndex corresponding to the + colorant with which this marker supply sub-unit is associated. + This value shall be 0 if there is no colorant table or if this + supply does not depend on a single specified colorant. + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerSuppliesEntry 3 } + +prtMarkerSuppliesClass OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerSuppliesClassTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this supply entity represents a supply that + is consumed or a receptacle that is filled. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerSuppliesEntry 4 } + +prtMarkerSuppliesType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerSuppliesTypeTC + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The type of this supply." + ::= { prtMarkerSuppliesEntry 5 } + +prtMarkerSuppliesDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of this supply container/receptacle in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtMarkerSuppliesEntry 6 } + +prtMarkerSuppliesSupplyUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerSuppliesSupplyUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Unit of measure of this marker supply container/receptacle. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerSuppliesEntry 7 } + +prtMarkerSuppliesMaxCapacity OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this supply container/receptacle + expressed in prtMarkerSuppliesSupplyUnit. If this supply + container/receptacle can reliably sense this value, the value + is reported by the printer and is read-only; otherwise, the + value may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown." + ::= { prtMarkerSuppliesEntry 8 } + +prtMarkerSuppliesLevel OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-3..2147483647) + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current level if this supply is a container; the remaining + space if this supply is a receptacle. If this supply + container/receptacle can reliably sense this value, the value + is reported by the printer and is read-only; otherwise, the + value may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown. A value of (-3) means + that the printer knows that there is some supply/remaining + space, respectively." + ::= { prtMarkerSuppliesEntry 9 } + +-- The Marker Colorant Group + +prtMarkerColorant OBJECT IDENTIFIER ::= { printmib 12 } + +prtMarkerColorantTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerColorantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of all of the colorants available on the printer." + ::= { prtMarkerColorant 1 } + +prtMarkerColorantEntry OBJECT-TYPE + SYNTAX PrtMarkerColorantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a colorant available on the printer. Entries may + exist in the table for each device index with a device type of + 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtMarkerColorantIndex } + ::= { prtMarkerColorantTable 1 } + +PrtMarkerColorantEntry ::= SEQUENCE { + prtMarkerColorantIndex Integer32, + prtMarkerColorantMarkerIndex Integer32, + prtMarkerColorantRole PrtMarkerColorantRoleTC, + prtMarkerColorantValue OCTET STRING, + prtMarkerColorantTonality Integer32 + } + + + +prtMarkerColorantIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this colorant. + Although these values may change due to a major reconfiguration + of the device (e.g., the addition of new colorants to the + printer) , values SHOULD remain stable across successive + printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMarkerColorantEntry 1 } + +prtMarkerColorantMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the marker sub + unit with which this colorant entry is associated." + ::= { prtMarkerColorantEntry 2 } + +prtMarkerColorantRole OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMarkerColorantRoleTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The role played by this colorant." + ::= { prtMarkerColorantEntry 3 } + +prtMarkerColorantValue OBJECT-TYPE + -- NOTE: The string length range has been increased from RFC 1759. + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the color of this colorant using standardized + string names from ISO 10175 (DPA) and ISO 10180 (SPDL) such as: + other + unknown + white + red + green + blue + + + + cyan + magenta + yellow + black + Implementers may add additional string values. The naming + conventions in ISO 9070 are recommended in order to avoid + potential name clashes" + ::= { prtMarkerColorantEntry 4 } + +prtMarkerColorantTonality OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The distinct levels of tonality realizable by a marking sub + unit when using this colorant. This value does not include the + number of levels of tonal difference that an interpreter can + obtain by techniques such as half toning. This value must be at + least 2." + ::= { prtMarkerColorantEntry 5 } + +-- The Media Path Group +-- +-- The media paths encompass the mechanisms in the printer that +-- move the media through the printer and connect all other media +-- related sub-units: inputs, outputs, markers and finishers. A +-- printer contains one or more media paths. These are +-- represented by the Media Path Group in the model. + +prtMediaPath OBJECT IDENTIFIER ::= { printmib 13 } + +prtMediaPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMediaPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The media path table includes both physical and logical paths + within the printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPath 4 } + +prtMediaPathEntry OBJECT-TYPE + SYNTAX PrtMediaPathEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer' Each entry defines the physical + characteristics of and the status of the media path. The data + provided indicates the maximum throughput and the media + size limitations of these subunits. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtMediaPathIndex } + ::= { prtMediaPathTable 1 } + +PrtMediaPathEntry ::= SEQUENCE { + prtMediaPathIndex Integer32, + prtMediaPathMaxSpeedPrintUnit PrtMediaPathMaxSpeedPrintUnitTC, + prtMediaPathMediaSizeUnit PrtMediaUnitTC, + prtMediaPathMaxSpeed Integer32, + prtMediaPathMaxMediaFeedDir Integer32, + prtMediaPathMaxMediaXFeedDir Integer32, + prtMediaPathMinMediaFeedDir Integer32, + prtMediaPathMinMediaXFeedDir Integer32, + prtMediaPathType PrtMediaPathTypeTC, + prtMediaPathDescription PrtLocalizedDescriptionStringTC, + prtMediaPathStatus PrtSubUnitStatusTC + } + +prtMediaPathIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this media + path. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new media + paths to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 1 } + +prtMediaPathMaxSpeedPrintUnit OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMediaPathMaxSpeedPrintUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The unit of measure used in specifying the speed of all media + paths in the printer." + ::= { prtMediaPathEntry 2 } + +prtMediaPathMediaSizeUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The units of measure of media size for use in calculating and + relaying dimensional values for all media paths in the + printer." + ::= { prtMediaPathEntry 3 } + +prtMediaPathMaxSpeed OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum printing speed of this media path expressed in + prtMediaPathMaxSpeedUnit's. A value of (-1) implies 'other'." + ::= { prtMediaPathEntry 4 } + +prtMediaPathMaxMediaFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum physical media size in the feed direction of this + media path expressed in units of measure specified by + PrtMediaPathMediaSizeUnit. A value of (-1) implies 'unlimited' + a value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 5 } + +prtMediaPathMaxMediaXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum physical media size across the feed direction of + this media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'. + + + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 6 } + +prtMediaPathMinMediaFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum physical media size in the feed direction of this + media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 7 } + +prtMediaPathMinMediaXFeedDir OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum physical media size across the feed direction of + this media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtMediaPathEntry 8 } + +prtMediaPathType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtMediaPathTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the media path for this media path." + ::= { prtMediaPathEntry 9 } + +prtMediaPathDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The manufacturer-provided description of this media path in + the localization specified by prtGeneralCurrentLocalization." + ::= { prtMediaPathEntry 10 } + +prtMediaPathStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this media path." + ::= { prtMediaPathEntry 11 } + +-- The Print Job Delivery Channel Group +-- +-- Print Job Delivery Channels are independent sources of print +-- data. Here, print data is the term used for the information +-- that is used to construct printed pages and may have both data +-- and control aspects. The output of a channel is in a form +-- suitable for input to one of the interpreters as a +-- stream. A channel may be independently enabled (allowing +-- print data to flow) or disabled (stopping the flow of +-- print data). A printer may have one or more channels. +-- +-- The Print Job Delivery Channel table describes the +-- capabilities of the printer and not what is currently being +-- performed by the printer +-- +-- Basically, the print job delivery channel abstraction +-- describes the final processing step of getting the print data +-- to an interpreter. It might include some level of +-- decompression or decoding of print stream data. +-- channel. All of these aspects are hidden in the channel +-- abstraction. +-- +-- There are many kinds of print job delivery channels; some of +-- which are based on networks and others which are not. For +-- example, a channel can be a serial (or parallel) connection; +-- it can be a service, such as the UNIX Line Printer Daemon +-- (LPD), offering services over a network connection; or +-- it could be a disk drive into which a floppy disk with +-- the print data is inserted. Each print job delivery channel is +-- identified by the electronic path and/or service protocol +-- used to deliver print data to a print data interpreter. +-- +-- Channel example Implementation +-- +-- serial port channel bi-directional data channel + + + +-- parallel port channel often uni-directional channel +-- IEEE 1284 port channel bi-directional channel +-- SCSI port channel bi-directional +-- Apple PAP channel may be based on LocalTalk, +-- Ethernet or Tokentalk +-- LPD Server channel TCP/IP based, port 515 +-- Netware Remote Printer SPX/IPX based channel +-- Netware Print Server SPX/IPX based channel +-- +-- It is easy to note that this is a mixed bag. There are +-- some physical connections over which no (or very meager) +-- protocols are run (e.g., the serial or old parallel ports) +-- and there are services which often have elaborate +-- protocols that run over a number of protocol stacks. In +-- the end, what is important is the delivery of print data +-- through the channel. +-- +-- The print job delivery channel sub-units are represented by +-- the Print Job Delivery Channel Group in the Model. It has a +-- current print job control language, which can be used to +-- specify which interpreter is to be used for the print data and +-- to query and change environment variables used by the +-- interpreters (and Management Applications). There is also a +-- default interpreter that is to be used if an interpreter is +-- not explicitly specified using the Control Language. + +-- The first seven items in the Print Job Delivery Channel Table +-- define the "channel" itself. A channel typically depends on +-- other protocols and interfaces to provide the data that flows +-- through the channel. +-- +-- Control of a print job delivery channel is largely limited to +-- enabling or disabling the entire channel itself. It is likely +-- that more control of the process of accessing print data +-- will be needed over time. Thus, the ChannelType will +-- allow type-specific data to be associated with each +-- channel (using ChannelType specific groups in a fashion +-- analogous to the media specific MIBs that are associated +-- with the IANAIfType in the Interfaces Table). As a first +-- step in this direction, each channel will identify the +-- underlying Interface on which it is based. This is the +-- eighth object in each row of the table. + + + + + + + + + +-- The Print Job Delivery Channel Table + +prtChannel OBJECT IDENTIFIER ::= { printmib 14 } + +prtChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The channel table represents the set of input data sources + which can provide print data to one or more of the + interpreters available on a printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtChannel 1 } + +prtChannelEntry OBJECT-TYPE + SYNTAX PrtChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'. Each channel table entry is + characterized by a unique protocol stack and/or addressing. + The channel may also have printer dependent features that are + associated with a printing language. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtChannelIndex } + ::= { prtChannelTable 1 } + +PrtChannelEntry ::= SEQUENCE { + prtChannelIndex Integer32, + prtChannelType PrtChannelTypeTC, + prtChannelProtocolVersion OCTET STRING, + prtChannelCurrentJobCntlLangIndex Integer32, + prtChannelDefaultPageDescLangIndex Integer32, + prtChannelState PrtChannelStateTC, + prtChannelIfIndex InterfaceIndexOrZero, + prtChannelStatus PrtSubUnitStatusTC, + prtChannelInformation OCTET STRING + } + +prtChannelIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (1..65535) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this data + channel. Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new data + channels to the printer), values SHOULD remain stable across + successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtChannelEntry 1 } + +prtChannelType OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtChannelTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this print data channel. This object provides the + linkage to ChannelType-specific groups that may (conceptually) + extend the prtChannelTable with additional details about that + channel." + ::= { prtChannelEntry 2 } + +prtChannelProtocolVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of the protocol used on this channel. The format + used for version numbering depends on prtChannelType." + ::= { prtChannelEntry 3 } + +prtChannelCurrentJobCntlLangIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInterpreterIndex corresponding to the Control + Language Interpreter for this channel. This interpreter defines + the syntax used for control functions, such as querying or + changing environment variables and identifying job boundaries + (e.g., PJL, PostScript, NPAP). A value of zero indicates that + there is no current Job Control Language Interpreter for this + channel. + + + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtChannelEntry 4 } + +prtChannelDefaultPageDescLangIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInterpreterIndex corresponding to the Page + Description Language Interpreter for this channel. This + interpreter defines the default Page Description Language + interpreter to be used for the print data unless the Control + Language is used to select a specific interpreter (e.g., PCL, + PostScript Language, auto-sense). A value of zero indicates + that there is no default page description language interpreter + for this channel. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtChannelEntry 5 } + +prtChannelState OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtChannelStateTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this print data channel. The value determines + whether control information and print data is allowed through + this channel or not." + ::= { prtChannelEntry 6 } + +prtChannelIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero -- Was Integer32 in RFC 1759. + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of ifIndex in the ifTable; see the Interfaces Group + MIB [RFC2863] which corresponds to this channel. + When more than one row of the ifTable is relevant, this is the + index of the row representing the topmost layer in the + interface hierarchy. A value of zero indicates that no + interface is associated with this channel. + + NOTE: The above description has been modified from RFC 1759 + + + + for clarification." + ::= { prtChannelEntry 7 } + +prtChannelStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of the channel." + ::= { prtChannelEntry 8 } + +prtChannelInformation OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Auxiliary information to allow a printing application to use + the channel for data submission to the printer. An application + capable of using a specific PrtChannelType should be able to + use the combined information from the prtChannelInformation and + other channel and interface group objects to 'bootstrap' its + use of the channel. prtChannelInformation is not intended to + provide a general channel description, nor to provide + information that is available once the channel is in use. + + The encoding and interpretation of the prtChannelInformation + object is specific to channel type. The description of each + PrtChannelType enum value for which prtChannelInformation is + defined specifies the appropriate encoding and interpretation, + including interaction with other objects. For channel types + that do not specify a prtChannelInformation value, its value + shall be null (0 length). + + When a new PrtChannelType enumeration value is registered, its + accompanying description must specify the encoding and + interpretation of the prtChannelInformation value for the + channel type. prtChannelInformation semantics for an existing + PrtChannelType may be added or amended in the same manner as + described in section 2.4.1 for type 2 enumeration values. + + The prtChannelInformation specifies values for a collection of + channel attributes, represented as text according to the + following rules: + + 1. The prtChannelInformation is not affected by localization. + + 2. The prtChannelInformation is a list of entries representing + the attribute values. Each entry consists of the following + + + + items, in order: + + a. A keyword, composed of alphabetic characters (A-Z, a-z) + represented by their NVT ASCII [RFC854] codes, that + identifies a channel attribute, + + b. The NVT ASCII code for an Equals Sign (=) (code 61) to + delimit the keyword, + + c. A data value encoded using rules specific to the + PrtChannelType to with the prtChannelInformation applies which + must in no case allow an octet with value 10 (the NVT ASCII + Line Feed code), + + d. the NVT ASCII code for a Line Feed character (code 10) to + delimit the data value. + + No other octets shall be present. + + Keywords are case-sensitive. Conventionally, keywords are + capitalized (including each word of a multi-word keyword) and + since they occupy space in the prtChannelInformation, they are + kept short. + + 3. If a channel attribute has multiple values, it is + represented by multiple entries with the same keyword, each + specifying one value. Otherwise, there shall be at most one + entry for each attribute. + + 4. By default, entries may appear in any order. If there are + ordering constraints for particular entries, these must be + specified in their definitions. + + 5. The prtChannelInformation value by default consists of text + represented by NVT ASCII graphics character codes. However, + other representations may be specified: + + a. In cases where the prtChannelInformation value contains + information not normally coded in textual form, whatever + symbolic representation is conventionally used for the + information should be used for encoding the + prtChannelInformation value. (For instance, a binary port value + might be represented as a decimal number using NVT ASCII + codes.) Such encoding must be specified in the definition of + the value. + + b. The value may contain textual information in a character set + other than NVT ASCII graphics characters. (For instance, an + + + + identifier might consist of ISO 10646 text encoded using the + UTF-8 encoding scheme.) Such a character set and its encoding + must be specified in the definition of the value. + + 6. For each PrtChannelType for which prtChannelInformation + entries are defined, the descriptive text associated with the + PrtChannelType enumeration value shall specify the following + information for each entry: + + Title: Brief description phrase, e.g.: 'Port name', + 'Service Name', etc. + + Keyword: The keyword value, e.g.: 'Port' or 'Service' + + Syntax: The encoding of the entry value if it cannot be + directly represented by NVT ASCII. + + Status: 'Mandatory', 'Optional', or 'Conditionally + Mandatory' + + Multiplicity: 'Single' or 'Multiple' to indicate whether the + entry may be present multiple times. + + Description: Description of the use of the entry, other + information required to complete the definition + (e.g.: ordering constraints, interactions between + entries). + + Applications that interpret prtChannelInformation should ignore + unrecognized entries, so they are not affected if new entry + types are added." + + ::= { prtChannelEntry 9 } + +-- The Interpreter Group +-- +-- The interpreter sub-units are responsible for the conversion +-- of a description of intended print instances into images that +-- are to be marked on the media. A printer may have one or more +-- interpreters. The interpreter sub-units are represented by the +-- Interpreter Group in the Model. Each interpreter is generally +-- implemented with software running on the System Controller +-- sub-unit. The Interpreter Table has one entry per interpreter +-- where the interpreters include both Page Description Language +-- (PDL) Interpreters and Control Language Interpreters. + +prtInterpreter OBJECT IDENTIFIER ::= { printmib 15 } + + + + +-- Interpreter Table + +prtInterpreterTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtInterpreterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The interpreter table is a table representing the + interpreters in the printer. An entry shall be placed in the + interpreter table for each interpreter on the printer. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreter 1 } + +prtInterpreterEntry OBJECT-TYPE + SYNTAX PrtInterpreterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'. Each table entry provides a complete + description of the interpreter, including version information, + rendering resolutions, default character sets, output + orientation, and communication capabilities. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtInterpreterIndex } + ::= { prtInterpreterTable 1 } + +PrtInterpreterEntry ::= SEQUENCE { + prtInterpreterIndex Integer32, + prtInterpreterLangFamily PrtInterpreterLangFamilyTC, + prtInterpreterLangLevel OCTET STRING, + prtInterpreterLangVersion OCTET STRING, + prtInterpreterDescription PrtLocalizedDescriptionStringTC, + prtInterpreterVersion OCTET STRING, + prtInterpreterDefaultOrientation PrtPrintOrientationTC, + prtInterpreterFeedAddressability Integer32, + prtInterpreterXFeedAddressability Integer32, + prtInterpreterDefaultCharSetIn IANACharset, + prtInterpreterDefaultCharSetOut IANACharset, + prtInterpreterTwoWay PrtInterpreterTwoWayTC + } + +prtInterpreterIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + + + + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each PDL or control language for which + there exists an interpreter or emulator in the printer. The + value is used to identify this interpreter. Although these + values may change due to a major reconfiguration of the device + (e.g., the addition of new interpreters to the printer), values + SHOULD remain stable across successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreterEntry 1 } + +prtInterpreterLangFamily OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtInterpreterLangFamilyTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The family name of a Page Description Language (PDL) or + control language which this interpreter in the printer can + interpret or emulate. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreterEntry 2 } + +prtInterpreterLangLevel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of the language which this interpreter is + interpreting or emulating. This might contain a value like + '5e'for an interpreter which is emulating level 5e of the PCL + language. It might contain '2' for an interpreter which is + emulating level 2 of the PostScript language. Similarly it + might contain '2' for an interpreter which is emulating level 2 + of the HPGL language." + ::= { prtInterpreterEntry 3 } + +prtInterpreterLangVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The date code or version of the language which this + interpreter is interpreting or emulating." + ::= { prtInterpreterEntry 4 } + +prtInterpreterDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A string to identify this interpreter in the localization + specified by prtGeneralCurrentLocalization as opposed to the + language which is being interpreted. It is anticipated that + this string will allow manufacturers to unambiguously identify + their interpreters." + ::= { prtInterpreterEntry 5 } + +prtInterpreterVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date code, version number, or other product specific + information tied to this interpreter. This value is associated + with the interpreter, rather than with the version of the + language which is being interpreted or emulated." + ::= { prtInterpreterEntry 6 } + +prtInterpreterDefaultOrientation OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtPrintOrientationTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current orientation default for this interpreter. This + value may be overridden for a particular job (e.g., by a + command in the input data stream)." + ::= { prtInterpreterEntry 7 } + +prtInterpreterFeedAddressability OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The maximum interpreter addressability in the feed + direction in 10000 prtMarkerAddressabilityUnits (as specified + by prtMarkerDefaultIndex) for this interpreter. The + value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreterEntry 8 } + +prtInterpreterXFeedAddressability OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum interpreter addressability in the cross feed + direction in 10000 prtMarkerAddressabilityUnits (as specified + by prtMarkerDefaultIndex) for this interpreter. The + value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtInterpreterEntry 9 } + +prtInterpreterDefaultCharSetIn OBJECT-TYPE + SYNTAX IANACharset + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default coded character set for input octets encountered + outside a context in which the Page Description Language + established the interpretation of the octets. (Input octets are + presented to the interpreter through a path defined in the + channel group.)" + ::= { prtInterpreterEntry 10 } + +prtInterpreterDefaultCharSetOut OBJECT-TYPE + SYNTAX IANACharset + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default character set for data coming from this + interpreter through the printer's output channel (i.e. the + 'backchannel')." + + + + ::= { prtInterpreterEntry 11 } + +prtInterpreterTwoWay OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtInterpreterTwoWayTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not this interpreter returns information + back to the host." + ::= { prtInterpreterEntry 12 } + +-- The Console Group +-- +-- Many printers have a console on the printer, the operator +-- console, that is used to display and modify the state of the +-- printer. The console can be as simple as a few indicators and +-- switches or as complicated as full screen displays and +-- keyboards. There can be at most one such console. + +-- The Display Buffer Table + +prtConsoleDisplayBuffer OBJECT IDENTIFIER ::= { printmib 16 } + +prtConsoleDisplayBufferTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtConsoleDisplayBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Physical display buffer for printer console display or + operator panel + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleDisplayBuffer 5 } + +prtConsoleDisplayBufferEntry OBJECT-TYPE + SYNTAX PrtConsoleDisplayBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry for each physical line on + the display. Lines cannot be added or deleted. Entries may + exist in the table for each device index with a device type of + 'printer'. + + NOTE: The above description has been modified from RFC 1759 + + + + for clarification." + INDEX { hrDeviceIndex, prtConsoleDisplayBufferIndex } + ::= { prtConsoleDisplayBufferTable 1 } + +PrtConsoleDisplayBufferEntry ::= SEQUENCE { + prtConsoleDisplayBufferIndex Integer32, + prtConsoleDisplayBufferText PrtConsoleDescriptionStringTC + } + +prtConsoleDisplayBufferIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each console line in the printer. The value + is used to identify this console line. Although these values + may change due to a major reconfiguration of the device (e.g., + the addition of new console lines to the printer). Values + SHOULD remain stable across successive printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleDisplayBufferEntry 1 } + +prtConsoleDisplayBufferText OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtConsoleDescriptionStringTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The content of a line in the logical display buffer of + the operator's console of the printer. When a write + operation occurs, normally a critical message, to one of + the LineText strings, the agent should make that line + displayable if a physical display is present. Writing a zero + length string clears the line. It is an implementation- + specific matter as to whether the agent allows a line to be + overwritten before it has been cleared. Printer generated + strings shall be in the localization specified by + prtConsoleLocalization.Management Application generated strings + should be localized by the Management Application." + ::= { prtConsoleDisplayBufferEntry 2 } + +-- The Console Light Table + +prtConsoleLights OBJECT IDENTIFIER ::= { printmib 17 } + + + + +prtConsoleLightTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtConsoleLightEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The console light table provides a description and state + information for each light present on the printer console. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleLights 6 } + +prtConsoleLightEntry OBJECT-TYPE + SYNTAX PrtConsoleLightEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtConsoleLightIndex } + ::= { prtConsoleLightTable 1 } + +PrtConsoleLightEntry ::= SEQUENCE { + prtConsoleLightIndex Integer32, + prtConsoleOnTime Integer32, + prtConsoleOffTime Integer32, + prtConsoleColor PrtConsoleColorTC, + prtConsoleDescription PrtConsoleDescriptionStringTC + } + +prtConsoleLightIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) -- Lower limit invalid in RFC 1759 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this light. + Although these values may change due to a major + reconfiguration of the device (e.g., the addition of new lights + to the printer). Values SHOULD remain stable across successive + printer power cycles. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleLightEntry 1 } + + + + +prtConsoleOnTime OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object, in conjunction with prtConsoleOffTime, defines + the current status of the light. If both prtConsoleOnTime and + prtConsoleOffTime are non-zero, the lamp is blinking and the + values presented define the on time and off time, respectively, + in milliseconds. If prtConsoleOnTime is zero and + prtConsoleOffTime is non-zero, the lamp is off. If + prtConsoleOffTime is zero and prtConsoleOnTime is non-zero, the + lamp is on. If both values are zero the lamp is off. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleLightEntry 2 } + +prtConsoleOffTime OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object, in conjunction with prtConsoleOnTime, defines the + current status of the light. If both prtConsoleOnTime and + prtConsoleOffTime are non-zero, the lamp is blinking and the + values presented define the on time and off time, respectively, + in milliseconds. If prtConsoleOnTime is zero and + prtConsoleOffTime is non-zero, the lamp is off. If + prtConsoleOffTime is zero and prtConsoleOnTime is non-zero, the + lamp is on. If both values are zero the lamp is off. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtConsoleLightEntry 3 } + +prtConsoleColor OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtConsoleColorTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The color of this light." + ::= { prtConsoleLightEntry 4 } + + + + +prtConsoleDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtConsoleDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor description or label of this light in the + localization specified by prtConsoleLocalization." + ::= { prtConsoleLightEntry 5 } + +-- The Alerts Group +-- +-- The table contains information on the severity, component, +-- detail location within the component, alert code and +-- description of each critical alert that is currently active +-- within the printer. See 2.2.13 for a more complete +-- description of the alerts table and its management. +-- +-- Each parameter in the Trap PDU is a full OID which itself is +-- indexed by the host resources MIB "hrDeviceIndex" object. In +-- order for a management station to obtain the correct +-- "hrDeviceIndex" associated with a particular Trap PDU, the +-- "hrDeviceIndex" value can be extracted from the returned OID +-- value in the Trap PDU when the PDU is received by the +-- Management station. + +prtAlert OBJECT IDENTIFIER ::= { printmib 18 } + +prtAlertTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtAlertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The prtAlertTable lists all the critical and non-critical + alerts currently active in the printer. A critical alert is + one that stops the printer from printing immediately and + printing can not continue until the critical alert condition + is eliminated. Non-critical alerts are those items that do + not stop printing but may at some future time. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlert 1 } + +prtAlertEntry OBJECT-TYPE + SYNTAX PrtAlertEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Entries may exist in the table for each device + index with a device type of 'printer'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + INDEX { hrDeviceIndex, prtAlertIndex } + ::= { prtAlertTable 1 } + +PrtAlertEntry ::= SEQUENCE { + prtAlertIndex Integer32, + prtAlertSeverityLevel PrtAlertSeverityLevelTC, + prtAlertTrainingLevel PrtAlertTrainingLevelTC, + prtAlertGroup PrtAlertGroupTC, + prtAlertGroupIndex Integer32, + prtAlertLocation Integer32, + prtAlertCode PrtAlertCodeTC, + prtAlertDescription PrtLocalizedDescriptionStringTC, + prtAlertTime TimeTicks + } + +prtAlertIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. The MAX-ACCESS has + -- been changed from not accessible to allow the object to be + -- included (as originally in RFC 1759) in the trap bindings. + + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index value used to determine which alerts have been added + or removed from the alert table. This is an incrementing + integer initialized to 1 when the printer is reset. (i.e., The + first event placed in the alert table after a reset of the + printer shall have an index value of 1.) When the printer adds + an alert to the table, that alert is assigned the next higher + integer value from the last item entered into the table. If + the index value reaches its maximum value, the next index value + used must be 1. + + NOTE: The management application will read the alert table when + a trap or event notification occurs or at a periodic rate and + then parse the table to determine if any new entries were added + by comparing the last known index value with the current + highest index value. The management application will then + update its copy of the alert table. When the printer discovers + that an alert is no longer active, the printer shall remove the + + + + row for that alert from the table and shall reduce the number + of rows in the table. The printer may add or delete any number + of rows from the table at any time. The management station can + detect when binary change alerts have been deleted by + requesting an attribute of each alert, and noting alerts as + deleted when that retrieval is not possible. The objects + 'prtAlertCriticalEvents'and 'prtAlertAllEvents' in the + 'prtGeneralTable' reduce the need for management applications + to scan the 'prtAlertTable'. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 1 } + +prtAlertSeverityLevel OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtAlertSeverityLevelTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of severity of this alert table entry. The printer + determines the severity level assigned to each entry into the + table." + ::= { prtAlertEntry 2 } + +prtAlertTrainingLevel OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtAlertTrainingLevelTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "See TEXTUAL-CONVENTION PrtAlertTrainingLevelTC. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 3 } + +prtAlertGroup OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtAlertGroupTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of sub-unit within the printer model that this alert + is related. Input, output, and markers are examples of printer + + + + model groups, i.e., examples of types of sub-units. Wherever + possible, these enumerations match the sub-identifier that + identifies the relevant table in the printmib." + ::= { prtAlertEntry 4 } + +prtAlertGroupIndex OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The low-order index of the row within the table identified + by prtAlertGroup that represents the sub-unit of the printer + that caused this alert, or -1 if not applicable. The + combination of the prtAlertGroup and the prtAlertGroupIndex + defines exactly which printer sub-unit caused the alert; for + example, Input #3, Output#2, and Marker #1. Every object in + this MIB is indexed with hrDeviceIndex and optionally, another + index variable. If this other index variable is present in the + table that generated the alert, it will be used as the value + for this object. Otherwise, this value shall be -1. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 5 } + +prtAlertLocation OBJECT-TYPE + -- NOTE: In RFC 1759, the range was not defined. + SYNTAX Integer32 (-2..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sub-unit location that is defined by the printer + manufacturer to further refine the location of this alert + within the designated sub-unit. The location is used in + conjunction with the Group and GroupIndex values; for example, + there is an alert in Input #2 at location number 7. The value + (-2) indicates unknown. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 6 } + +prtAlertCode OBJECT-TYPE + -- NOTE: In RFC 1759, the enumeration values were implicitly + -- defined by this object. + SYNTAX PrtAlertCodeTC + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "See associated TEXTUAL-CONVENTION PrtAlertCodeTC. + + NOTE: The above description has been modified from RFC 1759 + for clarification." + ::= { prtAlertEntry 7 } + +prtAlertDescription OBJECT-TYPE + -- In RFC 1759, the SYNTAX was OCTET STRING. This has been changed + -- to a TC to better support localization of the object. + SYNTAX PrtLocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of this alert entry in the localization + specified by prtGeneralCurrentLocalization. The description is + provided by the printer to further elaborate on the enumerated + alert or provide information in the case where the code is + classified as 'other' or 'unknown'. The printer is required to + return a description string but the string may be a null + string." + ::= { prtAlertEntry 8 } + +prtAlertTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this alert was + generated." + ::= { prtAlertEntry 9 } + +printerV1Alert OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The value of the enterprise-specific OID in an SNMPv1 trap + sent signaling a critical event in the prtAlertTable." + ::= { prtAlert 2 } + +printerV2AlertPrefix OBJECT IDENTIFIER ::= { printerV1Alert 0 } + +printerV2Alert NOTIFICATION-TYPE + OBJECTS { prtAlertIndex, prtAlertSeverityLevel, prtAlertGroup, + prtAlertGroupIndex, prtAlertLocation, prtAlertCode } + STATUS current + DESCRIPTION + "This trap is sent whenever a critical event is added to the + + + + prtAlertTable. + + NOTE: The prtAlertIndex object was redundantly included in the + bindings of the 'printerV2Alert' notification in RFC 1759, even + though the value exists in the instance qualifier of all the + other bindings. This object has been retained to provide + compatiblity with existing RFC 1759 implementaions." + ::= { printerV2AlertPrefix 1 } + +-- Note that the SNMPv2 to SNMPv1 translation rules dictate that +-- the preceding structure will result in SNMPv1 traps of the +-- following form: +-- +-- printerAlert TRAP-TYPE +-- ENTERPRISE printerV1Alert +-- VARIABLES { prtAlertIndex, prtAlertSeverityLevel, +-- prtAlertGroup, prtAlertGroupIndex, +-- prtAlertLocation, prtAlertCode } +-- DESCRIPTION +-- "This trap is sent whenever a critical event is added +-- to the prtAlertTable." +-- ::= 1 + +-- Conformance Information + +prtMIBConformance OBJECT IDENTIFIER ::= { printmib 2 } + +-- compliance statements + +prtMIBCompliance MODULE-COMPLIANCE + + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + printer MIB as defined by RFC 1759." + MODULE -- this module + MANDATORY-GROUPS { prtGeneralGroup, prtInputGroup, + prtOutputGroup, + prtMarkerGroup, prtMediaPathGroup, + prtChannelGroup, prtInterpreterGroup, + prtConsoleGroup, prtAlertTableGroup } + OBJECT prtGeneralReset + SYNTAX INTEGER { + notResetting(3), + resetToNVRAM(5) + } + DESCRIPTION + "It is conformant to implement just these two states in this + + + + object. Any additional states are optional." + + OBJECT prtConsoleOnTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOffTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + ::= { prtMIBConformance 1 } + +prtMIB2Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + printer MIB V2." + -- The changes from RFC 1759 fall into 2 categories: + -- 1. New objects plus existing objects with a MIN-ACCESS of + -- read-only are included. Existing objects have been added + -- to this category due to feedback from implementers and + -- interoperability testing. This allows products to be + -- be designed with a higher degree of SNMP security. + -- 2. New object groups have been added to include all new + -- objects in this MIB. All new object groups are optional. + -- Any MIB that is compliant with RFC 1759 will also be + -- compliant with this version of the MIB. + MODULE -- this module + MANDATORY-GROUPS { prtGeneralGroup, prtInputGroup, + prtOutputGroup, + prtMarkerGroup, prtMediaPathGroup, + prtChannelGroup, prtInterpreterGroup, + prtConsoleGroup, prtAlertTableGroup } + OBJECT prtGeneralReset + SYNTAX INTEGER { + notResetting(3), + resetToNVRAM(5) + } + DESCRIPTION + "It is conformant to implement just these two states in this + object. Any additional states are optional." + + OBJECT prtGeneralCurrentLocalization + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + + + + OBJECT prtGeneralCurrentOperator + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralServicePerson + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralPrinterName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralSerialNumber + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaDimFeedDirDeclared + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputCurrentLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputName + MIN-ACCESS read-only + DESCRIPTION + + + + "It is conformant to implement this object as read-only" + + OBJECT prtInputSecurity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaWeight + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaType + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaColor + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaFormParts + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputRemainingCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputSecurity + + + + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxDimFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxDimXFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMinDimFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMinDimXFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputStackingOrder + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputPageDeliveryOrientation + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputBursting + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputDecollating + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputPageCollated + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + + + OBJECT prtOutputOffsetStacking + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerSuppliesMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerSuppliesLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMediaPathDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelCurrentJobCntlLangIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelDefaultPageDescLangIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelState + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelIfIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultOrientation + MIN-ACCESS read-only + DESCRIPTION + + + + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultCharSetIn + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultCharSetOut + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleLocalization + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleDisable + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleDisplayBufferText + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOnTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOffTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtAlertIndex + MIN-ACCESS accessible-for-notify + DESCRIPTION + "It is conformant to implement this object as + accessible-for-notify " + + GROUP prtResponsiblePartyGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtExtendedInputGroup + + + + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtInputMediaGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtExtendedOutputGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtOutputDimensionsGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtOutputFeaturesGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtMarkerSuppliesGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtMarkerColorantGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTimeGroup + DESCRIPTION + "This group is unconditionally optional." + + -- the prtResponsiblePartyGroup, prtExtendedInputGroup, + -- prtInputMediaGroup, prtExtendedOutputGroup, + -- prtOutputDimensionsGroup, prtOutputFeaturesGroup, + -- prtMarkerSuppliesGroup, prtMarkerColorantGroup, and the + -- prtAlertTimeGroup are completely optional. However, it is + -- strongly RECOMMENDED that the prtAlertTimeGroup be implemented. + + -- New to version 2 of this printer MIB: + OBJECT prtAuxiliarySheetStartupPage + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtAuxiliarySheetBannerPage + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + + + OBJECT prtInputMediaLoadTimeout + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputNextIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + GROUP prtAuxiliarySheetGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtInputSwitchingGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtGeneralV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTableV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtChannelV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTrapGroup + DESCRIPTION + "This group is unconditionally optional." + ::= { prtMIBConformance 3 } + +prtMIBGroups OBJECT IDENTIFIER ::= { prtMIBConformance 2 } +-- These groups are from RFC 1759 and are applicable to Printer MIB V2 + +prtGeneralGroup OBJECT-GROUP + OBJECTS { prtGeneralConfigChanges, + prtGeneralCurrentLocalization, + prtGeneralReset, prtCoverDescription, + prtCoverStatus, + prtLocalizationLanguage, prtLocalizationCountry, + prtLocalizationCharacterSet, prtStorageRefIndex, + prtDeviceRefIndex } + STATUS current + DESCRIPTION + + + + "The general printer group." + ::= { prtMIBGroups 1 } + +prtResponsiblePartyGroup OBJECT-GROUP + OBJECTS { prtGeneralCurrentOperator, prtGeneralServicePerson } + STATUS current + DESCRIPTION + "The responsible party group contains contact information for + humans responsible for the printer." + ::= { prtMIBGroups 2 } + +prtInputGroup OBJECT-GROUP + OBJECTS { prtInputDefaultIndex, prtInputType, prtInputDimUnit, + prtInputMediaDimFeedDirDeclared, + prtInputMediaDimXFeedDirDeclared, + prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputCapacityUnit, + prtInputMaxCapacity, prtInputCurrentLevel, prtInputStatus, + prtInputMediaName } + STATUS current + DESCRIPTION + "The input group." + ::= { prtMIBGroups 3 } + +prtExtendedInputGroup OBJECT-GROUP + OBJECTS { prtInputName, prtInputVendorName, prtInputModel, + prtInputVersion, prtInputSerialNumber, + prtInputDescription, prtInputSecurity } + STATUS current + DESCRIPTION + "The extended input group." + ::= { prtMIBGroups 4 } + +prtInputMediaGroup OBJECT-GROUP + OBJECTS { prtInputMediaWeight, prtInputMediaType, + prtInputMediaColor, prtInputMediaFormParts } + STATUS current + DESCRIPTION + "The input media group." + ::= { prtMIBGroups 5 } + +prtOutputGroup OBJECT-GROUP + OBJECTS { prtOutputDefaultIndex, prtOutputType, + prtOutputCapacityUnit, prtOutputMaxCapacity, + prtOutputRemainingCapacity, prtOutputStatus } + STATUS current + DESCRIPTION + "The output group." + + + + ::= { prtMIBGroups 6 } + +prtExtendedOutputGroup OBJECT-GROUP + OBJECTS { prtOutputName, prtOutputVendorName, prtOutputModel, + prtOutputVersion, prtOutputSerialNumber, + prtOutputDescription, prtOutputSecurity } + STATUS current + DESCRIPTION + "The extended output group." + ::= { prtMIBGroups 7 } + +prtOutputDimensionsGroup OBJECT-GROUP + OBJECTS { prtOutputDimUnit, prtOutputMaxDimFeedDir, + prtOutputMaxDimXFeedDir, prtOutputMinDimFeedDir, + prtOutputMinDimXFeedDir } + STATUS current + DESCRIPTION + "The output dimensions group" + ::= { prtMIBGroups 8 } + +prtOutputFeaturesGroup OBJECT-GROUP + OBJECTS { prtOutputStackingOrder, + prtOutputPageDeliveryOrientation, prtOutputBursting, + prtOutputDecollating, prtOutputPageCollated, + prtOutputOffsetStacking } + STATUS current + DESCRIPTION + "The output features group." + ::= { prtMIBGroups 9 } + +prtMarkerGroup OBJECT-GROUP + OBJECTS { prtMarkerDefaultIndex, prtMarkerMarkTech, + prtMarkerCounterUnit, prtMarkerLifeCount, + prtMarkerPowerOnCount, prtMarkerProcessColorants, + prtMarkerSpotColorants, prtMarkerAddressabilityUnit, + prtMarkerAddressabilityFeedDir, + prtMarkerAddressabilityXFeedDir, prtMarkerNorthMargin, + prtMarkerSouthMargin, prtMarkerWestMargin, + prtMarkerEastMargin, prtMarkerStatus } + STATUS current + DESCRIPTION + "The marker group." + ::= { prtMIBGroups 10 } + +prtMarkerSuppliesGroup OBJECT-GROUP + OBJECTS { prtMarkerSuppliesMarkerIndex, + prtMarkerSuppliesColorantIndex, prtMarkerSuppliesClass, + prtMarkerSuppliesType, prtMarkerSuppliesDescription, + + + + prtMarkerSuppliesSupplyUnit, + prtMarkerSuppliesMaxCapacity, prtMarkerSuppliesLevel } + STATUS current + DESCRIPTION + "The marker supplies group." + ::= { prtMIBGroups 11 } + +prtMarkerColorantGroup OBJECT-GROUP + OBJECTS { prtMarkerColorantMarkerIndex, prtMarkerColorantRole, + prtMarkerColorantValue, prtMarkerColorantTonality } + STATUS current + DESCRIPTION + "The marker colorant group." + ::= { prtMIBGroups 12 } + +prtMediaPathGroup OBJECT-GROUP + OBJECTS { prtMediaPathDefaultIndex, prtMediaPathMaxSpeedPrintUnit, + prtMediaPathMediaSizeUnit, prtMediaPathMaxSpeed, + prtMediaPathMaxMediaFeedDir, + prtMediaPathMaxMediaXFeedDir, + prtMediaPathMinMediaFeedDir, + prtMediaPathMinMediaXFeedDir, prtMediaPathType, + prtMediaPathDescription, prtMediaPathStatus} + STATUS current + DESCRIPTION + "The media path group." + ::= { prtMIBGroups 13 } + +prtChannelGroup OBJECT-GROUP + OBJECTS { prtChannelType, prtChannelProtocolVersion, + prtChannelCurrentJobCntlLangIndex, + prtChannelDefaultPageDescLangIndex, prtChannelState, + prtChannelIfIndex, prtChannelStatus + } + STATUS current + DESCRIPTION + "The channel group." + ::= { prtMIBGroups 14 } + +prtInterpreterGroup OBJECT-GROUP + OBJECTS { prtInterpreterLangFamily, prtInterpreterLangLevel, + prtInterpreterLangVersion, prtInterpreterDescription, + prtInterpreterVersion, prtInterpreterDefaultOrientation, + prtInterpreterFeedAddressability, + prtInterpreterXFeedAddressability, + prtInterpreterDefaultCharSetIn, + prtInterpreterDefaultCharSetOut, prtInterpreterTwoWay } + STATUS current + + + + DESCRIPTION + "The interpreter group." + ::= { prtMIBGroups 15 } + +prtConsoleGroup OBJECT-GROUP + OBJECTS { prtConsoleLocalization, prtConsoleNumberOfDisplayLines, + prtConsoleNumberOfDisplayChars, prtConsoleDisable, + prtConsoleDisplayBufferText, prtConsoleOnTime, + prtConsoleOffTime, prtConsoleColor, + prtConsoleDescription } + STATUS current + DESCRIPTION + "The console group." + ::= { prtMIBGroups 16 } + +prtAlertTableGroup OBJECT-GROUP + OBJECTS { prtAlertSeverityLevel, prtAlertTrainingLevel, + prtAlertGroup, prtAlertGroupIndex, prtAlertLocation, + prtAlertCode, prtAlertDescription } + STATUS current + DESCRIPTION + "The alert table group." + ::= { prtMIBGroups 17 } + +prtAlertTimeGroup OBJECT-GROUP + OBJECTS { prtAlertTime } + STATUS current + DESCRIPTION + "The alert time group. Implementation of prtAlertTime is + strongly RECOMMENDED." + ::= { prtMIBGroups 18 } + +prtMIB2Groups OBJECT IDENTIFIER ::= { prtMIBConformance 4 } +-- These groups are unique to Printer MIB V2 + +prtAuxiliarySheetGroup OBJECT-GROUP + OBJECTS { prtAuxiliarySheetStartupPage, + prtAuxiliarySheetBannerPage } + STATUS current + DESCRIPTION + "The auxiliary sheet group." + ::= { prtMIBGroups 19 } + +prtInputSwitchingGroup OBJECT-GROUP + OBJECTS { prtInputMediaLoadTimeout, prtInputNextIndex } + STATUS current + DESCRIPTION + "The input switching group." + + + + ::= { prtMIBGroups 20 } + +prtGeneralV2Group OBJECT-GROUP + OBJECTS { prtGeneralPrinterName, prtGeneralSerialNumber } + STATUS current + DESCRIPTION + "The general printer group with new v2 objects." + ::= { prtMIBGroups 21 } + +prtAlertTableV2Group OBJECT-GROUP + OBJECTS { prtAlertIndex, prtAlertCriticalEvents, prtAlertAllEvents } + STATUS current + DESCRIPTION + "The alert table group with new v2 objects and prtAlertIndex + changed to MAX-ACCESS of 'read-only' for inclusion in the trap + bindings (as originally defined in RFC 1759)." + + ::= { prtMIBGroups 22 } + +prtChannelV2Group OBJECT-GROUP + OBJECTS { prtChannelInformation } + STATUS current + DESCRIPTION + "The channel group with a new v2 object." + ::= { prtMIBGroups 23 } + +prtAlertTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { printerV2Alert } + STATUS current + DESCRIPTION + "The alert trap group." + ::= { prtMIBGroups 24 } + +END diff --git a/mibs/ietf/Q-BRIDGE-MIB b/mibs/ietf/Q-BRIDGE-MIB new file mode 100644 index 0000000..b9c82a7 --- /dev/null +++ b/mibs/ietf/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 diff --git a/mibs/ietf/RADIUS-ACC-CLIENT-MIB b/mibs/ietf/RADIUS-ACC-CLIENT-MIB new file mode 100644 index 0000000..56281bd --- /dev/null +++ b/mibs/ietf/RADIUS-ACC-CLIENT-MIB @@ -0,0 +1,694 @@ +RADIUS-ACC-CLIENT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32, Gauge32, + IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress, + InetPortNumber FROM INET-ADDRESS-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + + +radiusAccClientMIB MODULE-IDENTITY + LAST-UPDATED "200608210000Z" -- 21 August 2006 + ORGANIZATION "IETF RADIUS Extensions Working Group." + CONTACT-INFO + " Bernard Aboba + Microsoft + One Microsoft Way + + + + Redmond, WA 98052 + US + Phone: +1 425 936 6605 + EMail: bernarda@microsoft.com" + DESCRIPTION + "The MIB module for entities implementing the client + side of the Remote Authentication Dial-In User Service + (RADIUS) accounting protocol. Copyright (C) The + Internet Society (2006). This version of this MIB + module is part of RFC 4670; see the RFC itself for + full legal notices." + REVISION "200608210000Z" -- 21 August 2006 + DESCRIPTION + "Revised version as published in RFC 4670. + This version obsoletes that of RFC 2620 by + deprecating the MIB table containing IPv4-only + address formats and defining a new table to add support + for version-neutral IP address formats. The remaining + MIB objects from RFC 2620 are carried forward into this + version." + REVISION "199906110000Z" -- 11 Jun 1999 + DESCRIPTION "Initial version as published in RFC 2620." + ::= { radiusAccounting 2 } + +radiusMIB OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to RADIUS MIB work by the IANA." + ::= { mib-2 67 } + +radiusAccounting OBJECT IDENTIFIER ::= {radiusMIB 2} + +radiusAccClientMIBObjects OBJECT IDENTIFIER + ::= { radiusAccClientMIB 1 } + +radiusAccClient OBJECT IDENTIFIER + ::= { radiusAccClientMIBObjects 1 } + +radiusAccClientInvalidServerAddresses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Response packets + received from unknown addresses." + ::= { radiusAccClient 1 } + + + + +radiusAccClientIdentifier OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS accounting client. + This is not necessarily the same as sysName in MIB + II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAccClient 2 } + +radiusAccServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAccServerEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing the RADIUS accounting + servers with which the client shares a secret." + ::= { radiusAccClient 3 } + +radiusAccServerEntry OBJECT-TYPE + SYNTAX RadiusAccServerEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + accounting server with which the client shares a + secret." + INDEX { radiusAccServerIndex } + ::= { radiusAccServerTable 1 } + +RadiusAccServerEntry ::= SEQUENCE { + radiusAccServerIndex Integer32, + radiusAccServerAddress IpAddress, + radiusAccClientServerPortNumber Integer32, + radiusAccClientRoundTripTime TimeTicks, + radiusAccClientRequests Counter32, + radiusAccClientRetransmissions Counter32, + radiusAccClientResponses Counter32, + radiusAccClientMalformedResponses Counter32, + radiusAccClientBadAuthenticators Counter32, + radiusAccClientPendingRequests Gauge32, + radiusAccClientTimeouts Counter32, + radiusAccClientUnknownTypes Counter32, + radiusAccClientPacketsDropped Counter32 +} + + + + + +radiusAccServerIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A number uniquely identifying each RADIUS + Accounting server with which this client + communicates." + ::= { radiusAccServerEntry 1 } + +radiusAccServerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the RADIUS accounting server + referred to in this table entry." + ::= { radiusAccServerEntry 2 } + +radiusAccClientServerPortNumber OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The UDP port the client is using to send requests to + this server." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerEntry 3 } + +radiusAccClientRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The time interval between the most recent + Accounting-Response and the Accounting-Request that + matched it from this RADIUS accounting server." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerEntry 4 } + +-- Request/Response statistics +-- +-- Requests = Responses + PendingRequests + ClientTimeouts +-- +-- Responses - MalformedResponses - BadAuthenticators - +-- UnknownTypes - PacketsDropped = Successfully received + + + + + +radiusAccClientRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + sent. This does not include retransmissions." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccServerEntry 5 } + +radiusAccClientRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + retransmitted to this RADIUS accounting server. + Retransmissions include retries where the + Identifier and Acct-Delay have been updated, as + well as those in which they remain the same." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerEntry 6 } + +radiusAccClientResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets received on the + accounting port from this server." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccServerEntry 7 } + +radiusAccClientMalformedResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of malformed RADIUS Accounting-Response + packets received from this server. Malformed packets + include packets with an invalid length. Bad + authenticators and unknown types are not included as + malformed accounting responses." + REFERENCE "RFC 2866 section 3" + + + + ::= { radiusAccServerEntry 8 } + +radiusAccClientBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Response + packets that contained invalid authenticators + received from this server." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerEntry 9 } + +radiusAccClientPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + sent to this server that have not yet timed out or + received a response. This variable is incremented + when an Accounting-Request is sent and decremented + due to receipt of an Accounting-Response, a timeout, + or a retransmission." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerEntry 10 } + +radiusAccClientTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of accounting timeouts to this server. + After a timeout, the client may retry to the same + server, send to a different server, or give up. + A retry to the same server is counted as a + retransmit as well as a timeout. A send to a different + server is counted as an Accounting-Request as well as + a timeout." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerEntry 11 } + +radiusAccClientUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this server on the accounting port." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccServerEntry 12 } + +radiusAccClientPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets that were received from + this server on the accounting port and dropped for some + other reason." + ::= { radiusAccServerEntry 13 } + + +-- New MIB objects added in this revision + +radiusAccServerExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAccServerExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS accounting + servers with which the client shares a secret." + ::= { radiusAccClient 4 } + +radiusAccServerExtEntry OBJECT-TYPE + SYNTAX RadiusAccServerExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + accounting server with which the client shares a + secret." + INDEX { radiusAccServerExtIndex } + ::= { radiusAccServerExtTable 1 } + +RadiusAccServerExtEntry ::= SEQUENCE { + radiusAccServerExtIndex Integer32, + radiusAccServerInetAddressType InetAddressType, + radiusAccServerInetAddress InetAddress, + radiusAccClientServerInetPortNumber InetPortNumber, + radiusAccClientExtRoundTripTime TimeTicks, + + + + radiusAccClientExtRequests Counter32, + radiusAccClientExtRetransmissions Counter32, + radiusAccClientExtResponses Counter32, + radiusAccClientExtMalformedResponses Counter32, + radiusAccClientExtBadAuthenticators Counter32, + radiusAccClientExtPendingRequests Gauge32, + radiusAccClientExtTimeouts Counter32, + radiusAccClientExtUnknownTypes Counter32, + radiusAccClientExtPacketsDropped Counter32, + radiusAccClientCounterDiscontinuity TimeTicks +} + +radiusAccServerExtIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS + Accounting server with which this client + communicates." + ::= { radiusAccServerExtEntry 1 } + + +radiusAccServerInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format used for the + radiusAccServerInetAddress object." + ::= { radiusAccServerExtEntry 2 } + + + radiusAccServerInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the RADIUS accounting + server referred to in this table entry, using + the version-neutral IP address format." + ::= { radiusAccServerExtEntry 3 } + + radiusAccClientServerInetPortNumber OBJECT-TYPE + SYNTAX InetPortNumber ( 1..65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The UDP port the client is using to send requests + to this accounting server. The value zero (0) is + invalid." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerExtEntry 4 } + + +radiusAccClientExtRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time interval between the most recent + Accounting-Response and the Accounting-Request that + matched it from this RADIUS accounting server." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerExtEntry 5 } + +-- Request/Response statistics +-- +-- Requests = Responses + PendingRequests + ClientTimeouts +-- +-- Responses - MalformedResponses - BadAuthenticators - +-- UnknownTypes - PacketsDropped = Successfully received + +radiusAccClientExtRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + sent. This does not include retransmissions. + This counter may experience a discontinuity when the + RADIUS Accounting Client module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccServerExtEntry 6 } + +radiusAccClientExtRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + retransmitted to this RADIUS accounting server. + + + + Retransmissions include retries where the + Identifier and Acct-Delay have been updated, as + well as those in which they remain the same. + This counter may experience a discontinuity when the + RADIUS Accounting Client module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerExtEntry 7 } + +radiusAccClientExtResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets received on the + accounting port from this server. This counter + may experience a discontinuity when the RADIUS + Accounting Client module within the managed entity is + reinitialized, as indicated by the current value of + radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccServerExtEntry 8 } + +radiusAccClientExtMalformedResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Accounting-Response + packets received from this server. Malformed packets + include packets with an invalid length. Bad + authenticators and unknown types are not included as + malformed accounting responses. This counter may + experience a discontinuity when the RADIUS Accounting + Client module within the managed entity is + reinitialized, as indicated by the current + value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerExtEntry 9 } + +radiusAccClientExtBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of RADIUS Accounting-Response + packets that contained invalid authenticators + received from this server. This counter may + experience a discontinuity when the RADIUS + Accounting Client module within the managed + entity is reinitialized, as indicated by the + current value of + radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServerExtEntry 10 } + +radiusAccClientExtPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + sent to this server that have not yet timed out or + received a response. This variable is incremented + when an Accounting-Request is sent and decremented + due to receipt of an Accounting-Response, a timeout, + or a retransmission. This counter may experience a + discontinuity when the RADIUS Accounting Client module + within the managed entity is reinitialized, as + indicated by the current value of + radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 2" + ::= { radiusAccServerExtEntry 11 } + +radiusAccClientExtTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of accounting timeouts to this server. + After a timeout, the client may retry to the same + server, send to a different server, or give up. + A retry to the same server is counted as a + retransmit as well as a timeout. A send to a different + server is counted as an Accounting-Request as well as + a timeout. This counter may experience a discontinuity + when the RADIUS Accounting Client module within the + managed entity is reinitialized, as indicated by the + current value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 2" + + + + ::= { radiusAccServerExtEntry 12 } + +radiusAccClientExtUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this server on the accounting port. + This counter may experience a discontinuity when the + RADIUS Accounting Client module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccClientCounterDiscontinuity." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccServerExtEntry 13 } + +radiusAccClientExtPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets that were received from + this server on the accounting port and dropped for some + other reason. This counter may experience a + discontinuity when the RADIUS Accounting Client module + within the managed entity is reinitialized, as indicated + by the current value of + radiusAccClientCounterDiscontinuity." + ::= { radiusAccServerExtEntry 14 } + +radiusAccClientCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centiseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centiseconds since the last + discontinuity in the RADIUS Accounting Client + counters. A discontinuity may be the result of a + reinitialization of the RADIUS Accounting Client + module within the managed entity." + ::= { radiusAccServerExtEntry 15 } + + + + + + + +-- conformance information + +radiusAccClientMIBConformance OBJECT IDENTIFIER + ::= { radiusAccClientMIB 2 } + +radiusAccClientMIBCompliances OBJECT IDENTIFIER + ::= { radiusAccClientMIBConformance 1 } + +radiusAccClientMIBGroups OBJECT IDENTIFIER + ::= { radiusAccClientMIBConformance 2 } + + +-- units of conformance + +radiusAccClientMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for accounting clients + implementing the RADIUS Accounting Client MIB. + Implementation of this module is for IPv4-only + entities, or for backwards compatibility use with + entities that support both IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAccClientMIBGroup } + + ::= { radiusAccClientMIBCompliances 1 } + + +radiusAccClientExtMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for accounting + clients implementing the RADIUS Accounting + Client IPv6 Extensions MIB. Implementation of + this module is for entities that support IPv6, + or support IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAccClientExtMIBGroup } + + OBJECT radiusAccServerInetAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + OBJECT radiusAccServerInetAddress + SYNTAX InetAddress ( SIZE (4|16) ) + DESCRIPTION + + + + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + ::= { radiusAccClientMIBCompliances 2 } + + +-- units of conformance + +radiusAccClientMIBGroup OBJECT-GROUP + OBJECTS { radiusAccClientIdentifier, + radiusAccClientInvalidServerAddresses, + radiusAccServerAddress, + radiusAccClientServerPortNumber, + radiusAccClientRoundTripTime, + radiusAccClientRequests, + radiusAccClientRetransmissions, + radiusAccClientResponses, + radiusAccClientMalformedResponses, + radiusAccClientBadAuthenticators, + radiusAccClientPendingRequests, + radiusAccClientTimeouts, + radiusAccClientUnknownTypes, + radiusAccClientPacketsDropped + } + STATUS deprecated + DESCRIPTION + "The basic collection of objects providing management of + RADIUS Accounting Clients." + ::= { radiusAccClientMIBGroups 1 } + + +radiusAccClientExtMIBGroup OBJECT-GROUP + OBJECTS { radiusAccClientIdentifier, + radiusAccClientInvalidServerAddresses, + radiusAccServerInetAddressType, + radiusAccServerInetAddress, + radiusAccClientServerInetPortNumber, + radiusAccClientExtRoundTripTime, + radiusAccClientExtRequests, + radiusAccClientExtRetransmissions, + radiusAccClientExtResponses, + radiusAccClientExtMalformedResponses, + radiusAccClientExtBadAuthenticators, + radiusAccClientExtPendingRequests, + radiusAccClientExtTimeouts, + radiusAccClientExtUnknownTypes, + radiusAccClientExtPacketsDropped, + radiusAccClientCounterDiscontinuity + + + + } + STATUS current + DESCRIPTION + "The basic collection of objects providing management of + RADIUS Accounting Clients." + ::= { radiusAccClientMIBGroups 2 } + + +END diff --git a/mibs/ietf/RADIUS-ACC-SERVER-MIB b/mibs/ietf/RADIUS-ACC-SERVER-MIB new file mode 100644 index 0000000..09317db --- /dev/null +++ b/mibs/ietf/RADIUS-ACC-SERVER-MIB @@ -0,0 +1,772 @@ +RADIUS-ACC-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32, + IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress FROM INET-ADDRESS-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +radiusAccServMIB MODULE-IDENTITY + LAST-UPDATED "200608210000Z" -- 21 August 2006 + ORGANIZATION "IETF RADIUS Extensions Working Group." + CONTACT-INFO + " Bernard Aboba + Microsoft + One Microsoft Way + Redmond, WA 98052 + US + + + + Phone: +1 425 936 6605 + EMail: bernarda@microsoft.com" + DESCRIPTION + "The MIB module for entities implementing the server + side of the Remote Authentication Dial-In User + Service (RADIUS) accounting protocol. Copyright (C) + The Internet Society (2006). This version of this + MIB module is part of RFC 4671; see the RFC itself + for full legal notices." + REVISION "200608210000Z" -- 21 August 2006 + DESCRIPTION + "Revised version as published in RFC 4671. This + version obsoletes that of RFC 2621 by deprecating + the MIB table containing IPv4-only address formats + and defining a new table to add support for version- + neutral IP address formats. The remaining MIB objects + from RFC 2621 are carried forward into this version." + REVISION "199906110000Z" -- 11 Jun 1999 + DESCRIPTION "Initial version as published in RFC 2621." + ::= { radiusAccounting 1 } + +radiusMIB OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to RADIUS MIB work by the IANA." + ::= { mib-2 67 } + +radiusAccounting OBJECT IDENTIFIER ::= {radiusMIB 2} + +radiusAccServMIBObjects OBJECT IDENTIFIER + ::= { radiusAccServMIB 1 } + +radiusAccServ OBJECT IDENTIFIER + ::= { radiusAccServMIBObjects 1 } + +radiusAccServIdent OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation identification string for the + RADIUS accounting server software in use on the + system, for example, 'FNS-2.1'." + ::= {radiusAccServ 1} + +radiusAccServUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a + process), this value will be the time elapsed (in + hundredths of a second) since the server process was + started. For software without persistent state, this + value will be zero." + ::= {radiusAccServ 2} + +radiusAccServResetTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a process) + and supports a 'reset' operation (e.g., can be told to + re-read configuration files), this value will be the + time elapsed (in hundredths of a second) since the + server was 'reset.' For software that does not + have persistence or does not support a 'reset' + operation, this value will be zero." + ::= {radiusAccServ 3} + +radiusAccServConfigReset OBJECT-TYPE + SYNTAX INTEGER { other(1), + reset(2), + initializing(3), + running(4)} + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action object to reinitialize any persistent + server state. When set to reset(2), any persistent + server state (such as a process) is reinitialized as + if the server had just been started. This value will + never be returned by a read operation. When read, + one of the following values will be returned: + other(1) - server in some unknown state; + initializing(3) - server (re)initializing; + running(4) - server currently running." + ::= {radiusAccServ 4} + +radiusAccServTotalRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of packets received on the + accounting port." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccServ 5 } + +radiusAccServTotalInvalidRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + received from unknown addresses." + REFERENCE "RFC 2866 sections 2, 4.1" + ::= { radiusAccServ 6 } + +radiusAccServTotalDupRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Accounting-Request + packets received." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccServ 7 } + +radiusAccServTotalResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Response packets + sent." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccServ 8 } + +radiusAccServTotalMalformedRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Accounting-Request + packets received. Bad authenticators or unknown + types are not included as malformed Access-Requests." + REFERENCE "RFC 2866 section 3" + + + + ::= { radiusAccServ 9 } + +radiusAccServTotalBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that contained an invalid authenticator." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServ 10 } + +radiusAccServTotalPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets silently discarded + for a reason other than malformed, bad authenticators, + or unknown types." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccServ 11 } + +radiusAccServTotalNoRecords OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that were received and responded to but not + recorded." + ::= { radiusAccServ 12 } + +radiusAccServTotalUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccServ 13 } + +radiusAccClientTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF RadiusAccClientEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing the RADIUS accounting + clients with which the server shares a secret." + ::= { radiusAccServ 14 } + +radiusAccClientEntry OBJECT-TYPE + SYNTAX RadiusAccClientEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + accounting client with which the server shares a + secret." + INDEX { radiusAccClientIndex } + ::= { radiusAccClientTable 1 } + +RadiusAccClientEntry ::= SEQUENCE { + radiusAccClientIndex Integer32, + radiusAccClientAddress IpAddress, + radiusAccClientID SnmpAdminString, + radiusAccServPacketsDropped Counter32, + radiusAccServRequests Counter32, + radiusAccServDupRequests Counter32, + radiusAccServResponses Counter32, + radiusAccServBadAuthenticators Counter32, + radiusAccServMalformedRequests Counter32, + radiusAccServNoRecords Counter32, + radiusAccServUnknownTypes Counter32 +} + +radiusAccClientIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A number uniquely identifying each RADIUS accounting + client with which this server communicates." + ::= { radiusAccClientEntry 1 } + +radiusAccClientAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The NAS-IP-Address of the RADIUS accounting client + + + + referred to in this table entry." + ::= { radiusAccClientEntry 2 } + +radiusAccClientID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The NAS-Identifier of the RADIUS accounting client + referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAccClientEntry 3 } + +-- Server Counters +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - Responses = Pending +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - NoRecords = entries logged + +radiusAccServPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of incoming packets received + from this client and silently discarded + for a reason other than malformed, bad + authenticators, or unknown types." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientEntry 4 } + +radiusAccServRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets received from this + client on the accounting port." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccClientEntry 5 } + +radiusAccServDupRequests OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of duplicate RADIUS Accounting-Request + packets received from this client." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccClientEntry 6 } + +radiusAccServResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Response packets + sent to this client." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccClientEntry 7 } + +radiusAccServBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that contained invalid authenticators received + from this client." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientEntry 8 } + +radiusAccServMalformedRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of malformed RADIUS Accounting-Request + packets that were received from this client. + Bad authenticators and unknown types + are not included as malformed Accounting-Requests." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientEntry 9 } + +radiusAccServNoRecords OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + + + + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that were received and responded to but not + recorded." + ::= { radiusAccClientEntry 10 } + +radiusAccServUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this client." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccClientEntry 11 } + + +-- New MIB objects added in this revision + +radiusAccClientExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAccClientExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS accounting + clients with which the server shares a secret." + ::= { radiusAccServ 15 } + +radiusAccClientExtEntry OBJECT-TYPE + SYNTAX RadiusAccClientExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + accounting client with which the server shares a + secret." + INDEX { radiusAccClientExtIndex } + ::= { radiusAccClientExtTable 1 } + +RadiusAccClientExtEntry ::= SEQUENCE { + radiusAccClientExtIndex Integer32, + radiusAccClientInetAddressType InetAddressType, + radiusAccClientInetAddress InetAddress, + radiusAccClientExtID SnmpAdminString, + radiusAccServExtPacketsDropped Counter32, + + + + radiusAccServExtRequests Counter32, + radiusAccServExtDupRequests Counter32, + radiusAccServExtResponses Counter32, + radiusAccServExtBadAuthenticators Counter32, + radiusAccServExtMalformedRequests Counter32, + radiusAccServExtNoRecords Counter32, + radiusAccServExtUnknownTypes Counter32, + radiusAccServerCounterDiscontinuity TimeTicks +} + +radiusAccClientExtIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS accounting + client with which this server communicates." + ::= { radiusAccClientExtEntry 1 } + + radiusAccClientInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format used for the + radiusAccClientInetAddress object." + ::= { radiusAccClientExtEntry 2 } + + radiusAccClientInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the RADIUS accounting + client referred to in this table entry, using + the IPv6 address format." + ::= { radiusAccClientExtEntry 3 } + +radiusAccClientExtID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS accounting client + referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAccClientExtEntry 4 } + + + +-- Server Counters +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - Responses = Pending +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - NoRecords = entries logged + +radiusAccServExtPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets received from this + client and silently discarded for a reason other + than malformed, bad authenticators, or unknown types. + This counter may experience a discontinuity when the + RADIUS Accounting Server module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientExtEntry 5 } + +radiusAccServExtRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received from this + client on the accounting port. This counter + may experience a discontinuity when the + RADIUS Accounting Server module within the + managed entity is reinitialized, as indicated by + the current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccClientExtEntry 6 } + +radiusAccServExtDupRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Accounting-Request + packets received from this client. This counter + + + + may experience a discontinuity when the RADIUS + Accounting Server module within the managed + entity is reinitialized, as indicated by the + current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.1" + ::= { radiusAccClientExtEntry 7 } + +radiusAccServExtResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Response packets + sent to this client. This counter may experience + a discontinuity when the RADIUS Accounting Server + module within the managed entity is reinitialized, + as indicated by the current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 4.2" + ::= { radiusAccClientExtEntry 8 } + +radiusAccServExtBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that contained invalid authenticators received + from this client. This counter may experience a + discontinuity when the RADIUS Accounting Server + module within the managed entity is reinitialized, + as indicated by the current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientExtEntry 9 } + +radiusAccServExtMalformedRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Accounting-Request + packets that were received from this client. + Bad authenticators and unknown types are not + + + + included as malformed Accounting-Requests. This + counter may experience a discontinuity when the + RADIUS Accounting Server module within the managed + entity is reinitialized, as indicated by the current + value of radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 3" + ::= { radiusAccClientExtEntry 10 } + +radiusAccServExtNoRecords OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Accounting-Request packets + that were received and responded to but not + recorded. This counter may experience a + discontinuity when the RADIUS Accounting Server + module within the managed entity is reinitialized, + as indicated by the current value of + radiusAccServerCounterDiscontinuity." + ::= { radiusAccClientExtEntry 11 } + +radiusAccServExtUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this client. This counter may + experience a discontinuity when the RADIUS Accounting + Server module within the managed entity is + reinitialized, as indicated by the current value of + radiusAccServerCounterDiscontinuity." + REFERENCE "RFC 2866 section 4" + ::= { radiusAccClientExtEntry 12 } + +radiusAccServerCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centiseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centiseconds since the last + discontinuity in the RADIUS Accounting Server + counters. A discontinuity may be the result of + a reinitialization of the RADIUS Accounting Server + + + + module within the managed entity." + ::= { radiusAccClientExtEntry 13 } + + +-- conformance information + +radiusAccServMIBConformance OBJECT IDENTIFIER + ::= { radiusAccServMIB 2 } + +radiusAccServMIBCompliances OBJECT IDENTIFIER + ::= { radiusAccServMIBConformance 1 } + +radiusAccServMIBGroups OBJECT IDENTIFIER + ::= { radiusAccServMIBConformance 2 } + + +-- compliance statements + +radiusAccServMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for accounting servers + implementing the RADIUS Accounting Server MIB. + Implementation of this module is for IPv4-only + entities, or for backwards compatibility use with + entities that support both IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAccServMIBGroup } + + OBJECT radiusAccServConfigReset + WRITE-SYNTAX INTEGER { reset(2) } + DESCRIPTION "The only SETable value is 'reset' (2)." + + ::= { radiusAccServMIBCompliances 1 } + +radiusAccServExtMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for accounting + servers implementing the RADIUS Accounting + Server IPv6 Extensions MIB. Implementation of + this module is for entities that support IPv6, + or support IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAccServExtMIBGroup } + + OBJECT radiusAccServConfigReset + WRITE-SYNTAX INTEGER { reset(2) } + + + + DESCRIPTION "The only SETable value is 'reset' (2)." + + OBJECT radiusAccClientInetAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + OBJECT radiusAccClientInetAddress + SYNTAX InetAddress ( SIZE (4|16) ) + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + ::= { radiusAccServMIBCompliances 2 } + + +-- units of conformance + +radiusAccServMIBGroup OBJECT-GROUP + OBJECTS {radiusAccServIdent, + radiusAccServUpTime, + radiusAccServResetTime, + radiusAccServConfigReset, + radiusAccServTotalRequests, + radiusAccServTotalInvalidRequests, + radiusAccServTotalDupRequests, + radiusAccServTotalResponses, + radiusAccServTotalMalformedRequests, + radiusAccServTotalBadAuthenticators, + radiusAccServTotalPacketsDropped, + radiusAccServTotalNoRecords, + radiusAccServTotalUnknownTypes, + radiusAccClientAddress, + radiusAccClientID, + radiusAccServPacketsDropped, + radiusAccServRequests, + radiusAccServDupRequests, + radiusAccServResponses, + radiusAccServBadAuthenticators, + radiusAccServMalformedRequests, + radiusAccServNoRecords, + radiusAccServUnknownTypes + } + STATUS deprecated + DESCRIPTION + "The collection of objects providing management of + a RADIUS Accounting Server." + + + + ::= { radiusAccServMIBGroups 1 } + +radiusAccServExtMIBGroup OBJECT-GROUP + OBJECTS {radiusAccServIdent, + radiusAccServUpTime, + radiusAccServResetTime, + radiusAccServConfigReset, + radiusAccServTotalRequests, + radiusAccServTotalInvalidRequests, + radiusAccServTotalDupRequests, + radiusAccServTotalResponses, + radiusAccServTotalMalformedRequests, + radiusAccServTotalBadAuthenticators, + radiusAccServTotalPacketsDropped, + radiusAccServTotalNoRecords, + radiusAccServTotalUnknownTypes, + radiusAccClientInetAddressType, + radiusAccClientInetAddress, + radiusAccClientExtID, + radiusAccServExtPacketsDropped, + radiusAccServExtRequests, + radiusAccServExtDupRequests, + radiusAccServExtResponses, + radiusAccServExtBadAuthenticators, + radiusAccServExtMalformedRequests, + radiusAccServExtNoRecords, + radiusAccServExtUnknownTypes, + radiusAccServerCounterDiscontinuity + } + STATUS current + DESCRIPTION + "The collection of objects providing management of + a RADIUS Accounting Server." + ::= { radiusAccServMIBGroups 2 } + +END diff --git a/mibs/ietf/RADIUS-AUTH-CLIENT-MIB b/mibs/ietf/RADIUS-AUTH-CLIENT-MIB new file mode 100644 index 0000000..eea8e9d --- /dev/null +++ b/mibs/ietf/RADIUS-AUTH-CLIENT-MIB @@ -0,0 +1,755 @@ +RADIUS-AUTH-CLIENT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32, Gauge32, + IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress, + InetPortNumber FROM INET-ADDRESS-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + + +radiusAuthClientMIB MODULE-IDENTITY + LAST-UPDATED "200608210000Z" -- 21 August 2006 + ORGANIZATION "IETF RADIUS Extensions Working Group." + CONTACT-INFO + " Bernard Aboba + Microsoft + One Microsoft Way + Redmond, WA 98052 + + + + US + Phone: +1 425 936 6605 + EMail: bernarda@microsoft.com" + DESCRIPTION + "The MIB module for entities implementing the client + side of the Remote Authentication Dial-In User Service + (RADIUS) authentication protocol. Copyright (C) The + Internet Society (2006). This version of this MIB + module is part of RFC 4668; see the RFC itself for + full legal notices." + REVISION "200608210000Z" -- 21 August 2006 + DESCRIPTION + "Revised version as published in RFC 4668. This + version obsoletes that of RFC 2618 by deprecating + the MIB table containing IPv4-only address formats + and defining a new table to add support for version + neutral IP address formats. The remaining MIB objects + from RFC 2618 are carried forward into this version." + REVISION "199906110000Z" -- 11 Jun 1999 + DESCRIPTION "Initial version as published in RFC 2618." + ::= { radiusAuthentication 2 } + +radiusMIB OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to RADIUS MIB work by the IANA." + ::= { mib-2 67 } + +radiusAuthentication OBJECT IDENTIFIER ::= {radiusMIB 1} + +radiusAuthClientMIBObjects OBJECT IDENTIFIER + ::= { radiusAuthClientMIB 1 } + +radiusAuthClient OBJECT IDENTIFIER + ::= { radiusAuthClientMIBObjects 1 } + +radiusAuthClientInvalidServerAddresses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Response packets + received from unknown addresses." + ::= { radiusAuthClient 1 } + +radiusAuthClientIdentifier OBJECT-TYPE + SYNTAX SnmpAdminString + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS authentication client. + This is not necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAuthClient 2 } + +radiusAuthServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAuthServerEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing the RADIUS authentication + servers with which the client shares a secret." + ::= { radiusAuthClient 3 } + +radiusAuthServerEntry OBJECT-TYPE + SYNTAX RadiusAuthServerEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + authentication server with which the client shares + a secret." + INDEX { radiusAuthServerIndex } + ::= { radiusAuthServerTable 1 } + +RadiusAuthServerEntry ::= SEQUENCE { + radiusAuthServerIndex Integer32, + radiusAuthServerAddress IpAddress, + radiusAuthClientServerPortNumber Integer32, + radiusAuthClientRoundTripTime TimeTicks, + radiusAuthClientAccessRequests Counter32, + radiusAuthClientAccessRetransmissions Counter32, + radiusAuthClientAccessAccepts Counter32, + radiusAuthClientAccessRejects Counter32, + radiusAuthClientAccessChallenges Counter32, + radiusAuthClientMalformedAccessResponses Counter32, + radiusAuthClientBadAuthenticators Counter32, + radiusAuthClientPendingRequests Gauge32, + radiusAuthClientTimeouts Counter32, + radiusAuthClientUnknownTypes Counter32, + radiusAuthClientPacketsDropped Counter32 +} + +radiusAuthServerIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + + + + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A number uniquely identifying each RADIUS + Authentication server with which this client + communicates." + ::= { radiusAuthServerEntry 1 } + +radiusAuthServerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The IP address of the RADIUS authentication server + referred to in this table entry." + ::= { radiusAuthServerEntry 2 } + +radiusAuthClientServerPortNumber OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The UDP port the client is using to send requests to + this server." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServerEntry 3 } + +radiusAuthClientRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The time interval (in hundredths of a second) between + the most recent Access-Reply/Access-Challenge and the + Access-Request that matched it from this RADIUS + authentication server." + ::= { radiusAuthServerEntry 4 } + +-- Request/Response statistics +-- +-- TotalIncomingPackets = Accepts + Rejects + Challenges + +-- UnknownTypes +-- +-- TotalIncomingPackets - MalformedResponses - +-- BadAuthenticators - UnknownTypes - PacketsDropped = +-- Successfully received +-- +-- AccessRequests + PendingRequests + ClientTimeouts = + + + +-- Successfully received +-- +-- + +radiusAuthClientAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Request packets sent + to this server. This does not include retransmissions." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServerEntry 5 } + +radiusAuthClientAccessRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Request packets + retransmitted to this RADIUS authentication server." + REFERENCE "RFC 2865 sections 2.5, 4.1" + ::= { radiusAuthServerEntry 6 } + +radiusAuthClientAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Accept packets + (valid or invalid) received from this server." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthServerEntry 7 } + +radiusAuthClientAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Reject packets + (valid or invalid) received from this server." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthServerEntry 8 } + + + + +radiusAuthClientAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Challenge packets + (valid or invalid) received from this server." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthServerEntry 9 } + +-- "Access-Response" includes an Access-Accept, Access-Challenge +-- or Access-Reject + +radiusAuthClientMalformedAccessResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of malformed RADIUS Access-Response + packets received from this server. + Malformed packets include packets with + an invalid length. Bad authenticators or + Message Authenticator attributes or unknown types + are not included as malformed access responses." + ::= { radiusAuthServerEntry 10 } + +radiusAuthClientBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Response packets + containing invalid authenticators or Message + Authenticator attributes received from this server." + REFERENCE "RFC 2865 section 3, RFC 2869 section 5.14" + ::= { radiusAuthServerEntry 11 } + +radiusAuthClientPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Request packets + destined for this server that have not yet timed out + or received a response. This variable is incremented + + + + when an Access-Request is sent and decremented due to + receipt of an Access-Accept, Access-Reject, + Access-Challenge, timeout, or retransmission." + REFERENCE "RFC 2865 section 2" + ::= { radiusAuthServerEntry 12 } + +radiusAuthClientTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of authentication timeouts to this server. + After a timeout, the client may retry to the same + server, send to a different server, or + give up. A retry to the same server is counted as a + retransmit as well as a timeout. A send to a different + server is counted as a Request as well as a timeout." + REFERENCE "RFC 2865 section 2, RFC 2869 section 2.3.2" + ::= { radiusAuthServerEntry 13 } + +radiusAuthClientUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this server on the authentication + port." + ::= { radiusAuthServerEntry 14 } + +radiusAuthClientPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets that were + received from this server on the authentication port + and dropped for some other reason." + ::= { radiusAuthServerEntry 15 } + + +-- New MIB Objects in this revision + +radiusAuthServerExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAuthServerExtEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS authentication + servers with which the client shares a secret." + ::= { radiusAuthClient 4 } + +radiusAuthServerExtEntry OBJECT-TYPE + SYNTAX RadiusAuthServerExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + authentication server with which the client shares + a secret." + INDEX { radiusAuthServerExtIndex } + ::= { radiusAuthServerExtTable 1 } + +RadiusAuthServerExtEntry ::= SEQUENCE { + radiusAuthServerExtIndex Integer32, + radiusAuthServerInetAddressType InetAddressType, + radiusAuthServerInetAddress InetAddress, + radiusAuthClientServerInetPortNumber InetPortNumber, + radiusAuthClientExtRoundTripTime TimeTicks, + radiusAuthClientExtAccessRequests Counter32, + radiusAuthClientExtAccessRetransmissions Counter32, + radiusAuthClientExtAccessAccepts Counter32, + radiusAuthClientExtAccessRejects Counter32, + radiusAuthClientExtAccessChallenges Counter32, + radiusAuthClientExtMalformedAccessResponses Counter32, + radiusAuthClientExtBadAuthenticators Counter32, + radiusAuthClientExtPendingRequests Gauge32, + radiusAuthClientExtTimeouts Counter32, + radiusAuthClientExtUnknownTypes Counter32, + radiusAuthClientExtPacketsDropped Counter32, + radiusAuthClientCounterDiscontinuity TimeTicks +} + +radiusAuthServerExtIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS + Authentication server with which this client + communicates." + ::= { radiusAuthServerExtEntry 1 } + + + + +radiusAuthServerInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format used for the + radiusAuthServerInetAddress object." + ::= { radiusAuthServerExtEntry 2 } + +radiusAuthServerInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the RADIUS authentication + server referred to in this table entry, using + the version-neutral IP address format." + ::= { radiusAuthServerExtEntry 3 } + +radiusAuthClientServerInetPortNumber OBJECT-TYPE + SYNTAX InetPortNumber ( 1..65535 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP port the client is using to send requests + to this server. The value of zero (0) is invalid." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServerExtEntry 4 } + +radiusAuthClientExtRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time interval (in hundredths of a second) between + the most recent Access-Reply/Access-Challenge and the + Access-Request that matched it from this RADIUS + authentication server." + REFERENCE "RFC 2865 section 2" + ::= { radiusAuthServerExtEntry 5 } + +-- Request/Response statistics +-- +-- TotalIncomingPackets = Accepts + Rejects + Challenges + +-- UnknownTypes +-- +-- TotalIncomingPackets - MalformedResponses - +-- BadAuthenticators - UnknownTypes - PacketsDropped = + + + +-- Successfully received +-- +-- AccessRequests + PendingRequests + ClientTimeouts = +-- Successfully received +-- +-- + +radiusAuthClientExtAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Request packets sent + to this server. This does not include retransmissions. + This counter may experience a discontinuity when the + RADIUS Client module within the managed entity is + reinitialized, as indicated by the current value of + radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServerExtEntry 6 } + +radiusAuthClientExtAccessRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Request packets + retransmitted to this RADIUS authentication server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed entity + is reinitialized, as indicated by the current value + of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 sections 2.5, 4.1" + ::= { radiusAuthServerExtEntry 7 } + +radiusAuthClientExtAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Accept packets + (valid or invalid) received from this server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed entity + is reinitialized, as indicated by the current value + + + + of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthServerExtEntry 8 } + +radiusAuthClientExtAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Reject packets + (valid or invalid) received from this server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed + entity is reinitialized, as indicated by the + current value of + radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthServerExtEntry 9 } + +radiusAuthClientExtAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Challenge packets + (valid or invalid) received from this server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed + entity is reinitialized, as indicated by the + current value of + radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthServerExtEntry 10 } + +-- "Access-Response" includes an Access-Accept, Access-Challenge, +-- or Access-Reject + +radiusAuthClientExtMalformedAccessResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Access-Response + packets received from this server. + Malformed packets include packets with + + + + an invalid length. Bad authenticators or + Message Authenticator attributes or unknown types + are not included as malformed access responses. + This counter may experience a discontinuity when + the RADIUS Client module within the managed entity + is reinitialized, as indicated by the current value + of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 sections 3, 4" + ::= { radiusAuthServerExtEntry 11 } + +radiusAuthClientExtBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Response packets + containing invalid authenticators or Message + Authenticator attributes received from this server. + This counter may experience a discontinuity when + the RADIUS Client module within the managed entity + is reinitialized, as indicated by the current value + of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServerExtEntry 12 } + +radiusAuthClientExtPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Request packets + destined for this server that have not yet timed out + or received a response. This variable is incremented + when an Access-Request is sent and decremented due to + receipt of an Access-Accept, Access-Reject, + Access-Challenge, timeout, or retransmission." + REFERENCE "RFC 2865 section 2" + ::= { radiusAuthServerExtEntry 13 } + +radiusAuthClientExtTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of authentication timeouts to this server. + + + + After a timeout, the client may retry to the same + server, send to a different server, or + give up. A retry to the same server is counted as a + retransmit as well as a timeout. A send to a different + server is counted as a Request as well as a timeout. + This counter may experience a discontinuity when the + RADIUS Client module within the managed entity is + reinitialized, as indicated by the current value of + radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 sections 2.5, 4.1" + ::= { radiusAuthServerExtEntry 14 } + +radiusAuthClientExtUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this server on the authentication + port. This counter may experience a discontinuity + when the RADIUS Client module within the managed + entity is reinitialized, as indicated by the current + value of radiusAuthClientCounterDiscontinuity." + REFERENCE "RFC 2865 section 4" + ::= { radiusAuthServerExtEntry 15 } + +radiusAuthClientExtPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets that were + received from this server on the authentication port + and dropped for some other reason. This counter may + experience a discontinuity when the RADIUS Client + module within the managed entity is reinitialized, + as indicated by the current value of + radiusAuthClientCounterDiscontinuity." + ::= { radiusAuthServerExtEntry 16 } + +radiusAuthClientCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centiseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of centiseconds since the last discontinuity + in the RADIUS Client counters. A discontinuity may + be the result of a reinitialization of the RADIUS + Client module within the managed entity." + ::= { radiusAuthServerExtEntry 17 } + + +-- conformance information + +radiusAuthClientMIBConformance OBJECT IDENTIFIER + ::= { radiusAuthClientMIB 2 } + +radiusAuthClientMIBCompliances OBJECT IDENTIFIER + ::= { radiusAuthClientMIBConformance 1 } + +radiusAuthClientMIBGroups OBJECT IDENTIFIER + ::= { radiusAuthClientMIBConformance 2 } + + +-- compliance statements + +radiusAuthClientMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for authentication clients + implementing the RADIUS Authentication Client MIB. + Implementation of this module is for IPv4-only + entities, or for backwards compatibility use with + entities that support both IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAuthClientMIBGroup } + + ::= { radiusAuthClientMIBCompliances 1 } + +radiusAuthClientExtMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for authentication + clients implementing the RADIUS Authentication + Client IPv6 Extensions MIB. Implementation of + this module is for entities that support IPv6, + or support IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAuthClientExtMIBGroup } + + OBJECT radiusAuthServerInetAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + + + + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + OBJECT radiusAuthServerInetAddress + SYNTAX InetAddress ( SIZE (4|16) ) + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + ::= { radiusAuthClientMIBCompliances 2 } + + +-- units of conformance + +radiusAuthClientMIBGroup OBJECT-GROUP + OBJECTS { radiusAuthClientIdentifier, + radiusAuthClientInvalidServerAddresses, + radiusAuthServerAddress, + radiusAuthClientServerPortNumber, + radiusAuthClientRoundTripTime, + radiusAuthClientAccessRequests, + radiusAuthClientAccessRetransmissions, + radiusAuthClientAccessAccepts, + radiusAuthClientAccessRejects, + radiusAuthClientAccessChallenges, + radiusAuthClientMalformedAccessResponses, + radiusAuthClientBadAuthenticators, + radiusAuthClientPendingRequests, + radiusAuthClientTimeouts, + radiusAuthClientUnknownTypes, + radiusAuthClientPacketsDropped + } + STATUS deprecated + DESCRIPTION + "The basic collection of objects providing management of + RADIUS Authentication Clients." + ::= { radiusAuthClientMIBGroups 1 } + + +radiusAuthClientExtMIBGroup OBJECT-GROUP + OBJECTS { radiusAuthClientIdentifier, + radiusAuthClientInvalidServerAddresses, + radiusAuthServerInetAddressType, + radiusAuthServerInetAddress, + radiusAuthClientServerInetPortNumber, + radiusAuthClientExtRoundTripTime, + radiusAuthClientExtAccessRequests, + radiusAuthClientExtAccessRetransmissions, + radiusAuthClientExtAccessAccepts, + + + + radiusAuthClientExtAccessRejects, + radiusAuthClientExtAccessChallenges, + radiusAuthClientExtMalformedAccessResponses, + radiusAuthClientExtBadAuthenticators, + radiusAuthClientExtPendingRequests, + radiusAuthClientExtTimeouts, + radiusAuthClientExtUnknownTypes, + radiusAuthClientExtPacketsDropped, + radiusAuthClientCounterDiscontinuity + } + STATUS current + DESCRIPTION + "The collection of extended objects providing + management of RADIUS Authentication Clients + using version-neutral IP address format." + ::= { radiusAuthClientMIBGroups 2 } + +END diff --git a/mibs/ietf/RADIUS-AUTH-SERVER-MIB b/mibs/ietf/RADIUS-AUTH-SERVER-MIB new file mode 100644 index 0000000..6fbd518 --- /dev/null +++ b/mibs/ietf/RADIUS-AUTH-SERVER-MIB @@ -0,0 +1,824 @@ +RADIUS-AUTH-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32, + IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress FROM INET-ADDRESS-MIB + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +radiusAuthServMIB MODULE-IDENTITY + LAST-UPDATED "200608210000Z" -- 21 August 2006 + ORGANIZATION "IETF RADIUS Extensions Working Group." + CONTACT-INFO + " Bernard Aboba + Microsoft + One Microsoft Way + Redmond, WA 98052 + US + Phone: +1 425 936 6605 + + + + EMail: bernarda@microsoft.com" + DESCRIPTION + "The MIB module for entities implementing the server + side of the Remote Authentication Dial-In User + Service (RADIUS) authentication protocol. Copyright + (C) The Internet Society (2006). This version of this + MIB module is part of RFC 4669; see the RFC itself for + full legal notices." + REVISION "200608210000Z" -- 21 August 2006 + DESCRIPTION + "Revised version as published in RFC 4669. This + version obsoletes that of RFC 2619 by deprecating the + MIB table containing IPv4-only address formats and + defining a new table to add support for version-neutral + IP address formats. The remaining MIB objects from RFC + 2619 are carried forward into this version." + REVISION "199906110000Z" -- 11 Jun 1999 + DESCRIPTION "Initial version as published in RFC 2619." + ::= { radiusAuthentication 1 } + +radiusMIB OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The OID assigned to RADIUS MIB work by the IANA." + ::= { mib-2 67 } + +radiusAuthentication OBJECT IDENTIFIER ::= {radiusMIB 1} + +radiusAuthServMIBObjects OBJECT IDENTIFIER + ::= { radiusAuthServMIB 1 } + +radiusAuthServ OBJECT IDENTIFIER + ::= { radiusAuthServMIBObjects 1 } + +radiusAuthServIdent OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The implementation identification string for the + RADIUS authentication server software in use on the + system, for example, 'FNS-2.1'." + ::= {radiusAuthServ 1} + +radiusAuthServUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "If the server has a persistent state (e.g., a + process), this value will be the time elapsed (in + hundredths of a second) since the server process + was started. For software without persistent state, + this value will be zero." + ::= {radiusAuthServ 2} + +radiusAuthServResetTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the server has a persistent state (e.g., a process) + and supports a 'reset' operation (e.g., can be told to + re-read configuration files), this value will be the + time elapsed (in hundredths of a second) since the + server was 'reset.' For software that does not + have persistence or does not support a 'reset' + operation, this value will be zero." + ::= {radiusAuthServ 3} + +radiusAuthServConfigReset OBJECT-TYPE + SYNTAX INTEGER { other(1), + reset(2), + initializing(3), + running(4)} + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Status/action object to reinitialize any persistent + server state. When set to reset(2), any persistent + server state (such as a process) is reinitialized as + if the server had just been started. This value will + never be returned by a read operation. When read, + one of the following values will be returned: + other(1) - server in some unknown state; + initializing(3) - server (re)initializing; + running(4) - server currently running." + ::= {radiusAuthServ 4} + +radiusAuthServTotalAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received on the + + + + authentication port." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServ 5} + +radiusAuthServTotalInvalidRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Request packets + received from unknown addresses." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServ 6 } + +radiusAuthServTotalDupAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Access-Request + packets received." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServ 7 } + +radiusAuthServTotalAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Accept packets sent." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthServ 8 } + +radiusAuthServTotalAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Reject packets sent." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthServ 9 } + +radiusAuthServTotalAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Challenge packets sent." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthServ 10 } + +radiusAuthServTotalMalformedAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Access-Request + packets received. Bad authenticators + and unknown types are not included as + malformed Access-Requests." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthServ 11 } + +radiusAuthServTotalBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Authentication-Request packets + that contained invalid Message Authenticator + attributes received." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServ 12 } + +radiusAuthServTotalPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets + silently discarded for some reason other + than malformed, bad authenticators or + unknown types." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthServ 13 } + +radiusAuthServTotalUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + + + + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received." + REFERENCE "RFC 2865 section 4" + ::= { radiusAuthServ 14 } + + +radiusAuthClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAuthClientEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table listing the RADIUS + authentication clients with which the server shares + a secret." + ::= { radiusAuthServ 15 } + + +radiusAuthClientEntry OBJECT-TYPE + SYNTAX RadiusAuthClientEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + authentication client with which the server shares a + secret." + INDEX { radiusAuthClientIndex } + ::= { radiusAuthClientTable 1 } + +RadiusAuthClientEntry ::= SEQUENCE { + radiusAuthClientIndex Integer32, + radiusAuthClientAddress IpAddress, + radiusAuthClientID SnmpAdminString, + radiusAuthServAccessRequests Counter32, + radiusAuthServDupAccessRequests Counter32, + radiusAuthServAccessAccepts Counter32, + radiusAuthServAccessRejects Counter32, + radiusAuthServAccessChallenges Counter32, + radiusAuthServMalformedAccessRequests Counter32, + radiusAuthServBadAuthenticators Counter32, + radiusAuthServPacketsDropped Counter32, + radiusAuthServUnknownTypes Counter32 +} + +radiusAuthClientIndex OBJECT-TYPE + + + + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A number uniquely identifying each RADIUS + authentication client with which this server + communicates." + ::= { radiusAuthClientEntry 1 } + +radiusAuthClientAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The NAS-IP-Address of the RADIUS authentication client + referred to in this table entry." + REFERENCE "RFC 2865 section 2" + ::= { radiusAuthClientEntry 2 } + +radiusAuthClientID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The NAS-Identifier of the RADIUS authentication client + referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAuthClientEntry 3 } + +-- Server Counters + +-- +-- Responses = AccessAccepts + AccessRejects + AccessChallenges +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - Responses = Pending +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped = entries logged + +radiusAuthServAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets received on the authentication + + + + port from this client." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthClientEntry 4 } + +radiusAuthServDupAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of duplicate RADIUS Access-Request + packets received from this client." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthClientEntry 5 } + +radiusAuthServAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Accept packets + sent to this client." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthClientEntry 6 } + +radiusAuthServAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Reject packets + sent to this client." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthClientEntry 7 } + +radiusAuthServAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Access-Challenge packets + sent to this client." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthClientEntry 8 } + + + + +radiusAuthServMalformedAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of malformed RADIUS Access-Request + packets received from this client. + Bad authenticators and unknown types are not included + as malformed Access-Requests." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientEntry 9 } + +radiusAuthServBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS Authentication-Request packets + that contained invalid Message Authenticator + attributes received from this client." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientEntry 10 } + +radiusAuthServPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of incoming packets from this + client silently discarded for some reason other + than malformed, bad authenticators or + unknown types." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientEntry 11 } + +radiusAuthServUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this client." + REFERENCE "RFC 2865 section 4" + ::= { radiusAuthClientEntry 12 } + + + +-- New MIB objects added in this revision + +radiusAuthClientExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusAuthClientExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS + authentication clients with which the server shares + a secret." + ::= { radiusAuthServ 16 } + +radiusAuthClientExtEntry OBJECT-TYPE + SYNTAX RadiusAuthClientExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing a RADIUS + authentication client with which the server shares a + secret." + INDEX { radiusAuthClientExtIndex } + ::= { radiusAuthClientExtTable 1 } + +RadiusAuthClientExtEntry ::= SEQUENCE { + radiusAuthClientExtIndex Integer32, + radiusAuthClientInetAddressType InetAddressType, + radiusAuthClientInetAddress InetAddress, + radiusAuthClientExtID SnmpAdminString, + radiusAuthServExtAccessRequests Counter32, + radiusAuthServExtDupAccessRequests Counter32, + radiusAuthServExtAccessAccepts Counter32, + radiusAuthServExtAccessRejects Counter32, + radiusAuthServExtAccessChallenges Counter32, + radiusAuthServExtMalformedAccessRequests Counter32, + radiusAuthServExtBadAuthenticators Counter32, + radiusAuthServExtPacketsDropped Counter32, + radiusAuthServExtUnknownTypes Counter32, + radiusAuthServCounterDiscontinuity TimeTicks +} + +radiusAuthClientExtIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS + authentication client with which this server + communicates." + + + + ::= { radiusAuthClientExtEntry 1 } + +radiusAuthClientInetAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of address format used for the + radiusAuthClientInetAddress object." + ::= { radiusAuthClientExtEntry 2 } + + radiusAuthClientInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the RADIUS authentication + client referred to in this table entry, using + the version-neutral IP address format." + ::= { radiusAuthClientExtEntry 3 } + + +radiusAuthClientExtID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS authentication client + referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE "RFC 2865 section 5.32" + ::= { radiusAuthClientExtEntry 4 } + +-- Server Counters + +-- +-- Responses = AccessAccepts + AccessRejects + AccessChallenges +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped - Responses = Pending +-- +-- Requests - DupRequests - BadAuthenticators - MalformedRequests - +-- UnknownTypes - PacketsDropped = entries logged + +radiusAuthServExtAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of packets received on the authentication + port from this client. This counter may experience a + discontinuity when the RADIUS Server module within the + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthClientExtEntry 5 } + +radiusAuthServExtDupAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Access-Request + packets received from this client. This counter may + experience a discontinuity when the RADIUS Server + module within the managed entity is reinitialized, as + indicated by the current value of + radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.1" + ::= { radiusAuthClientExtEntry 6 } + +radiusAuthServExtAccessAccepts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Accept packets + sent to this client. This counter may experience a + discontinuity when the RADIUS Server module within the + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.2" + ::= { radiusAuthClientExtEntry 7 } + +radiusAuthServExtAccessRejects OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Reject packets + sent to this client. This counter may experience a + discontinuity when the RADIUS Server module within the + + + + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.3" + ::= { radiusAuthClientExtEntry 8 } + +radiusAuthServExtAccessChallenges OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Access-Challenge packets + sent to this client. This counter may experience a + discontinuity when the RADIUS Server module within the + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4.4" + ::= { radiusAuthClientExtEntry 9 } + +radiusAuthServExtMalformedAccessRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Access-Request + packets received from this client. Bad authenticators + and unknown types are not included as malformed + Access-Requests. This counter may experience a + discontinuity when the RADIUS Server module within the + managed entity is reinitialized, as indicated by the + current value of radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 sections 3, 4.1" + ::= { radiusAuthClientExtEntry 10 } + +radiusAuthServExtBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Authentication-Request packets + that contained invalid Message Authenticator + attributes received from this client. This counter + may experience a discontinuity when the RADIUS Server + module within the managed entity is reinitialized, as + indicated by the current value of + radiusAuthServCounterDiscontinuity." + + + + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientExtEntry 11 } + +radiusAuthServExtPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets from this client + silently discarded for some reason other than + malformed, bad authenticators or unknown types. + This counter may experience a discontinuity when the + RADIUS Server module within the managed entity is + reinitialized, as indicated by the current value of + radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 3" + ::= { radiusAuthClientExtEntry 12 } + +radiusAuthServExtUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS packets of unknown type that + were received from this client. This counter may + experience a discontinuity when the RADIUS Server + module within the managed entity is reinitialized, as + indicated by the current value of + radiusAuthServCounterDiscontinuity." + REFERENCE "RFC 2865 section 4" + ::= { radiusAuthClientExtEntry 13 } + +radiusAuthServCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "centiseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centiseconds since the last + discontinuity in the RADIUS Server counters. + A discontinuity may be the result of a + reinitialization of the RADIUS Server module + within the managed entity." + ::= { radiusAuthClientExtEntry 14 } + + + + + +-- conformance information + +radiusAuthServMIBConformance OBJECT IDENTIFIER + ::= { radiusAuthServMIB 2 } + +radiusAuthServMIBCompliances OBJECT IDENTIFIER + ::= { radiusAuthServMIBConformance 1 } + +radiusAuthServMIBGroups OBJECT IDENTIFIER + ::= { radiusAuthServMIBConformance 2 } + +-- compliance statements + +radiusAuthServMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for authentication + servers implementing the RADIUS Authentication + Server MIB. Implementation of this module is for + IPv4-only entities, or for backwards compatibility + use with entities that support both IPv4 and + IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAuthServMIBGroup } + + OBJECT radiusAuthServConfigReset + WRITE-SYNTAX INTEGER { reset(2) } + DESCRIPTION "The only SETable value is 'reset' (2)." + + ::= { radiusAuthServMIBCompliances 1 } + + +radiusAuthServMIBExtCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for authentication + servers implementing the RADIUS Authentication + Server IPv6 Extensions MIB. Implementation of + this module is for entities that support IPv6, + or support IPv4 and IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusAuthServExtMIBGroup } + + OBJECT radiusAuthServConfigReset + WRITE-SYNTAX INTEGER { reset(2) } + DESCRIPTION "The only SETable value is 'reset' (2)." + + OBJECT radiusAuthClientInetAddressType + + + + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + OBJECT radiusAuthClientInetAddress + SYNTAX InetAddress ( SIZE (4|16) ) + DESCRIPTION + "An implementation is only required to support + IPv4 and globally unique IPv6 addresses." + + ::= { radiusAuthServMIBCompliances 2 } + + +-- units of conformance + +radiusAuthServMIBGroup OBJECT-GROUP + OBJECTS {radiusAuthServIdent, + radiusAuthServUpTime, + radiusAuthServResetTime, + radiusAuthServConfigReset, + radiusAuthServTotalAccessRequests, + radiusAuthServTotalInvalidRequests, + radiusAuthServTotalDupAccessRequests, + radiusAuthServTotalAccessAccepts, + radiusAuthServTotalAccessRejects, + radiusAuthServTotalAccessChallenges, + radiusAuthServTotalMalformedAccessRequests, + radiusAuthServTotalBadAuthenticators, + radiusAuthServTotalPacketsDropped, + radiusAuthServTotalUnknownTypes, + radiusAuthClientAddress, + radiusAuthClientID, + radiusAuthServAccessRequests, + radiusAuthServDupAccessRequests, + radiusAuthServAccessAccepts, + radiusAuthServAccessRejects, + radiusAuthServAccessChallenges, + radiusAuthServMalformedAccessRequests, + radiusAuthServBadAuthenticators, + radiusAuthServPacketsDropped, + radiusAuthServUnknownTypes + } + STATUS deprecated + DESCRIPTION + "The collection of objects providing management of + a RADIUS Authentication Server." + ::= { radiusAuthServMIBGroups 1 } + + + +radiusAuthServExtMIBGroup OBJECT-GROUP + OBJECTS {radiusAuthServIdent, + radiusAuthServUpTime, + radiusAuthServResetTime, + radiusAuthServConfigReset, + radiusAuthServTotalAccessRequests, + radiusAuthServTotalInvalidRequests, + radiusAuthServTotalDupAccessRequests, + radiusAuthServTotalAccessAccepts, + radiusAuthServTotalAccessRejects, + radiusAuthServTotalAccessChallenges, + radiusAuthServTotalMalformedAccessRequests, + radiusAuthServTotalBadAuthenticators, + radiusAuthServTotalPacketsDropped, + radiusAuthServTotalUnknownTypes, + radiusAuthClientInetAddressType, + radiusAuthClientInetAddress, + radiusAuthClientExtID, + radiusAuthServExtAccessRequests, + radiusAuthServExtDupAccessRequests, + radiusAuthServExtAccessAccepts, + radiusAuthServExtAccessRejects, + radiusAuthServExtAccessChallenges, + radiusAuthServExtMalformedAccessRequests, + radiusAuthServExtBadAuthenticators, + radiusAuthServExtPacketsDropped, + radiusAuthServExtUnknownTypes, + radiusAuthServCounterDiscontinuity + } + STATUS current + DESCRIPTION + "The collection of objects providing management of + a RADIUS Authentication Server." + ::= { radiusAuthServMIBGroups 2 } + +END diff --git a/mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB b/mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB new file mode 100644 index 0000000..d2257e4 --- /dev/null +++ b/mibs/ietf/RADIUS-DYNAUTH-CLIENT-MIB @@ -0,0 +1,816 @@ +RADIUS-DYNAUTH-CLIENT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Gauge32, Integer32, + mib-2, TimeTicks FROM SNMPv2-SMI -- [RFC2578] + SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + InetAddressType, InetAddress, + InetPortNumber FROM INET-ADDRESS-MIB -- [RFC4001] + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF; -- [RFC2580] + +radiusDynAuthClientMIB MODULE-IDENTITY + LAST-UPDATED "200608290000Z" -- 29 August 2006 + ORGANIZATION "IETF RADEXT Working Group" + CONTACT-INFO + " Stefaan De Cnodder + + + + Alcatel + Francis Wellesplein 1 + B-2018 Antwerp + Belgium + + Phone: +32 3 240 85 15 + EMail: stefaan.de_cnodder@alcatel.be + + Nagi Reddy Jonnala + Cisco Systems, Inc. + Divyasree Chambers, B Wing, + O'Shaugnessy Road, + Bangalore-560027, India. + + Phone: +91 94487 60828 + EMail: njonnala@cisco.com + + Murtaza Chiba + Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA, 95134 + + Phone: +1 408 525 7198 + EMail: mchiba@cisco.com " + DESCRIPTION + "The MIB module for entities implementing the client + side of the Dynamic Authorization Extensions to the + Remote Authentication Dial-In User Service (RADIUS) + protocol. Copyright (C) The Internet Society (2006). + Initial version as published in RFC 4672; + for full legal notices see the RFC itself." + + REVISION "200609290000Z" -- 29 August 2006 + DESCRIPTION "Initial version as published in RFC 4672" + ::= { mib-2 145 } + +radiusDynAuthClientMIBObjects OBJECT IDENTIFIER ::= + { radiusDynAuthClientMIB 1 } + +radiusDynAuthClientScalars OBJECT IDENTIFIER ::= + { radiusDynAuthClientMIBObjects 1 } + +radiusDynAuthClientDisconInvalidServerAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Disconnect-Ack and Disconnect-NAK packets + + + + received from unknown addresses. This counter may + experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + ::= { radiusDynAuthClientScalars 1 } + +radiusDynAuthClientCoAInvalidServerAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CoA-Ack and CoA-NAK packets received from + unknown addresses. Disconnect-NAK packets received + from unknown addresses. This counter may experience a + discontinuity when the DAC module (re)starts, as + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + ::= { radiusDynAuthClientScalars 2 } + +radiusDynAuthServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusDynAuthServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS Dynamic + Authorization Servers with which the client shares a + secret." + ::= { radiusDynAuthClientMIBObjects 2 } + +radiusDynAuthServerEntry OBJECT-TYPE + SYNTAX RadiusDynAuthServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing one Dynamic + Authorization Server with which the client shares a + secret." + INDEX { radiusDynAuthServerIndex } + ::= { radiusDynAuthServerTable 1 } + +RadiusDynAuthServerEntry ::= SEQUENCE { + radiusDynAuthServerIndex Integer32, + radiusDynAuthServerAddressType InetAddressType, + radiusDynAuthServerAddress InetAddress, + radiusDynAuthServerClientPortNumber InetPortNumber, + radiusDynAuthServerID SnmpAdminString, + radiusDynAuthClientRoundTripTime TimeTicks, + radiusDynAuthClientDisconRequests Counter32, + + + + radiusDynAuthClientDisconAuthOnlyRequests Counter32, + radiusDynAuthClientDisconRetransmissions Counter32, + radiusDynAuthClientDisconAcks Counter32, + radiusDynAuthClientDisconNaks Counter32, + radiusDynAuthClientDisconNakAuthOnlyRequest Counter32, + radiusDynAuthClientDisconNakSessNoContext Counter32, + radiusDynAuthClientMalformedDisconResponses Counter32, + radiusDynAuthClientDisconBadAuthenticators Counter32, + radiusDynAuthClientDisconPendingRequests Gauge32, + radiusDynAuthClientDisconTimeouts Counter32, + radiusDynAuthClientDisconPacketsDropped Counter32, + radiusDynAuthClientCoARequests Counter32, + radiusDynAuthClientCoAAuthOnlyRequest Counter32, + radiusDynAuthClientCoARetransmissions Counter32, + radiusDynAuthClientCoAAcks Counter32, + radiusDynAuthClientCoANaks Counter32, + radiusDynAuthClientCoANakAuthOnlyRequest Counter32, + radiusDynAuthClientCoANakSessNoContext Counter32, + radiusDynAuthClientMalformedCoAResponses Counter32, + radiusDynAuthClientCoABadAuthenticators Counter32, + radiusDynAuthClientCoAPendingRequests Gauge32, + radiusDynAuthClientCoATimeouts Counter32, + radiusDynAuthClientCoAPacketsDropped Counter32, + radiusDynAuthClientUnknownTypes Counter32, + radiusDynAuthClientCounterDiscontinuity TimeTicks +} + + +radiusDynAuthServerIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS Dynamic + Authorization Server with which this Dynamic + Authorization Client communicates. This number is + allocated by the agent implementing this MIB module + and is unique in this context." + ::= { radiusDynAuthServerEntry 1 } + +radiusDynAuthServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of IP address of the RADIUS Dynamic + Authorization Server referred to in this table entry." + ::= { radiusDynAuthServerEntry 2 } + + + +radiusDynAuthServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address value of the RADIUS Dynamic + Authorization Server referred to in this table entry + using the version neutral IP address format. The type + of this address is determined by the value of the + radiusDynAuthServerAddressType object." + ::= { radiusDynAuthServerEntry 3 } + +radiusDynAuthServerClientPortNumber OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP destination port that the RADIUS Dynamic + Authorization Client is using to send requests to this + server. The value zero is invalid." + ::= { radiusDynAuthServerEntry 4 } + + +radiusDynAuthServerID OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS Dynamic Authorization + Server referred to in this table entry. This is not + necessarily the same as sysName in MIB II." + REFERENCE + "RFC 2865, Section 5.32, NAS-Identifier." + ::= { radiusDynAuthServerEntry 5 } + +radiusDynAuthClientRoundTripTime OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time interval (in hundredths of a second) between + the most recent Disconnect or CoA request and the + receipt of the corresponding Disconnect or CoA reply. + A value of zero is returned if no reply has been + received yet from this server." + ::= { radiusDynAuthServerEntry 6 } + + + + +radiusDynAuthClientDisconRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Requests sent + to this Dynamic Authorization Server. This also + includes the RADIUS Disconnect-Requests that have a + Service-Type attribute with value 'Authorize Only'. + Disconnect-NAK packets received from unknown addresses. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 7 } + +radiusDynAuthClientDisconAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Requests that include a + Service-Type attribute with value 'Authorize Only' + sent to this Dynamic Authorization Server. + Disconnect-NAK packets received from unknown addresses. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 8 } + +radiusDynAuthClientDisconRetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "retransmissions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-request packets + retransmitted to this RADIUS Dynamic Authorization + Server. Disconnect-NAK packets received from unknown + addresses. This counter may experience a discontinuity + when the DAC module (re)starts, as indicated by the + value of radiusDynAuthClientCounterDiscontinuity." + REFERENCE + + + + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 9 } + +radiusDynAuthClientDisconAcks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-ACK packets + received from this Dynamic Authorization Server. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 10 } + +radiusDynAuthClientDisconNaks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + received from this Dynamic Authorization Server. + This includes the RADIUS Disconnect-NAK packets + received with a Service-Type attribute with value + 'Authorize Only' and the RADIUS Disconnect-NAK + packets received if no session context was found. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 11 } + +radiusDynAuthClientDisconNakAuthOnlyRequest OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + that include a Service-Type attribute with value + 'Authorize Only' received from this Dynamic + Authorization Server. This counter may experience a + discontinuity when the DAC module (re)starts, as + + + + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 12 } + +radiusDynAuthClientDisconNakSessNoContext OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + received from this Dynamic Authorization Server + because no session context was found; i.e., it + includes an Error-Cause attribute with value 503 + ('Session Context Not Found'). This counter may + experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 13 } + +radiusDynAuthClientMalformedDisconResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Disconnect-Ack and + Disconnect-NAK packets received from this Dynamic + Authorization Server. Bad authenticators and unknown + types are not included as malformed Disconnect-Ack and + Disconnect-NAK packets. This counter may experience a + discontinuity when the DAC module (re)starts, as + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 14 } + +radiusDynAuthClientDisconBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of RADIUS Disconnect-Ack and Disconnect-NAK + packets that contained invalid Authenticator field + received from this Dynamic Authorization Server. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 15 } + +radiusDynAuthClientDisconPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-request packets + destined for this server that have not yet timed out + or received a response. This variable is incremented + when an Disconnect-Request is sent and decremented + due to receipt of a Disconnect-Ack, a Disconnect-NAK, + a timeout, or a retransmission." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 16 } + +radiusDynAuthClientDisconTimeouts OBJECT-TYPE + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Disconnect request timeouts to this + server. After a timeout, the client may retry to the + same server or give up. A retry to the same server is + counted as a retransmit and as a timeout. A send + to a different server is counted as a + Disconnect-Request and as a timeout. This counter + may experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthServerEntry 17 } + +radiusDynAuthClientDisconPacketsDropped OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming Disconnect-Ack and + Disconnect-NAK packets from this Dynamic Authorization + Server silently discarded by the client application for + some reason other than malformed, bad authenticators, + or unknown types. This counter may experience a + discontinuity when the DAC module (re)starts, as + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 18 } + +radiusDynAuthClientCoARequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-Requests sent to this + Dynamic Authorization Server. This also includes + CoA requests that have a Service-Type attribute + with value 'Authorize Only'. This counter may + experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 19 } + +radiusDynAuthClientCoAAuthOnlyRequest OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-requests that include a + Service-Type attribute with value 'Authorize Only' + sent to this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + + + + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 20 } + +radiusDynAuthClientCoARetransmissions OBJECT-TYPE + SYNTAX Counter32 + UNITS "retransmissions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-request packets + retransmitted to this RADIUS Dynamic Authorization + Server. This counter may experience a discontinuity + when the DAC module (re)starts, as indicated by the + value of radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 21 } + +radiusDynAuthClientCoAAcks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-ACK packets received from + this Dynamic Authorization Server. This counter may + experience a discontinuity when the DAC module + (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 22 } + +radiusDynAuthClientCoANaks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets received from + this Dynamic Authorization Server. This includes the + RADIUS CoA-NAK packets received with a Service-Type + attribute with value 'Authorize Only' and the RADIUS + CoA-NAK packets received because no session context + + + + was found. This counter may experience a discontinuity + when the DAC module (re)starts, as indicated by the + value of radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 23 } + +radiusDynAuthClientCoANakAuthOnlyRequest OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets that include a + Service-Type attribute with value 'Authorize Only' + received from this Dynamic Authorization Server. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 24 } + +radiusDynAuthClientCoANakSessNoContext OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets received from + this Dynamic Authorization Server because no session + context was found; i.e., it includes an Error-Cause + attribute with value 503 ('Session Context Not Found'). + This counter may experience a discontinuity when the + DAC module (re)starts as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 25 } + +radiusDynAuthClientMalformedCoAResponses OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of malformed RADIUS CoA-Ack and CoA-NAK + packets received from this Dynamic Authorization + Server. Bad authenticators and unknown types are + not included as malformed CoA-Ack and CoA-NAK packets. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 26 } + +radiusDynAuthClientCoABadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-Ack and CoA-NAK packets + that contained invalid Authenticator field + received from this Dynamic Authorization Server. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 27 } + +radiusDynAuthClientCoAPendingRequests OBJECT-TYPE + SYNTAX Gauge32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-request packets destined for + this server that have not yet timed out or received a + response. This variable is incremented when an + CoA-Request is sent and decremented due to receipt of + a CoA-Ack, a CoA-NAK, or a timeout, or a + retransmission." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 28 } + +radiusDynAuthClientCoATimeouts OBJECT-TYPE + + + + SYNTAX Counter32 + UNITS "timeouts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CoA request timeouts to this server. + After a timeout, the client may retry to the same + server or give up. A retry to the same server is + counted as a retransmit and as a timeout. A send to + a different server is counted as a CoA-Request and + as a timeout. This counter may experience a + discontinuity when the DAC module (re)starts, as + indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthServerEntry 29 } + +radiusDynAuthClientCoAPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming CoA-Ack and CoA-NAK from this + Dynamic Authorization Server silently discarded by the + client application for some reason other than + malformed, bad authenticators, or unknown types. This + counter may experience a discontinuity when the DAC + module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 30 } + +radiusDynAuthClientUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets of unknown types + that were received on the Dynamic Authorization port. + This counter may experience a discontinuity when the + DAC module (re)starts, as indicated by the value of + radiusDynAuthClientCounterDiscontinuity." + + + + REFERENCE + "RFC 3576, Section 2.3, Packet Format." + ::= { radiusDynAuthServerEntry 31 } + +radiusDynAuthClientCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + last counter discontinuity. A discontinuity may + be the result of a reinitialization of the DAC + module within the managed entity." + ::= { radiusDynAuthServerEntry 32 } + + +-- conformance information + +radiusDynAuthClientMIBConformance + OBJECT IDENTIFIER ::= { radiusDynAuthClientMIB 2 } +radiusDynAuthClientMIBCompliances + OBJECT IDENTIFIER ::= { radiusDynAuthClientMIBConformance 1 } +radiusDynAuthClientMIBGroups + OBJECT IDENTIFIER ::= { radiusDynAuthClientMIBConformance 2 } +-- compliance statements + +radiusDynAuthClientMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities implementing + the RADIUS Dynamic Authorization Client. + Implementation of this module is for entities that + support IPv4 and/or IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusDynAuthClientMIBGroup } + + OBJECT radiusDynAuthServerAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT radiusDynAuthServerAddress + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + + + GROUP radiusDynAuthClientAuthOnlyGroup + DESCRIPTION + "Only required for Dynamic Authorization Clients that + are supporting Service-Type attributes with value + 'Authorize-Only'." + + + GROUP radiusDynAuthClientNoSessGroup + DESCRIPTION + "This group is not required if the Dynamic + Authorization Server cannot easily determine whether + a session exists (e.g., in case of a RADIUS + proxy)." + + ::= { radiusDynAuthClientMIBCompliances 1 } + +-- units of conformance + +radiusDynAuthClientMIBGroup OBJECT-GROUP + OBJECTS { radiusDynAuthClientDisconInvalidServerAddresses, + radiusDynAuthClientCoAInvalidServerAddresses, + radiusDynAuthServerAddressType, + radiusDynAuthServerAddress, + radiusDynAuthServerClientPortNumber, + radiusDynAuthServerID, + radiusDynAuthClientRoundTripTime, + radiusDynAuthClientDisconRequests, + radiusDynAuthClientDisconRetransmissions, + radiusDynAuthClientDisconAcks, + radiusDynAuthClientDisconNaks, + radiusDynAuthClientMalformedDisconResponses, + radiusDynAuthClientDisconBadAuthenticators, + radiusDynAuthClientDisconPendingRequests, + radiusDynAuthClientDisconTimeouts, + radiusDynAuthClientDisconPacketsDropped, + radiusDynAuthClientCoARequests, + radiusDynAuthClientCoARetransmissions, + radiusDynAuthClientCoAAcks, + radiusDynAuthClientCoANaks, + radiusDynAuthClientMalformedCoAResponses, + radiusDynAuthClientCoABadAuthenticators, + radiusDynAuthClientCoAPendingRequests, + radiusDynAuthClientCoATimeouts, + radiusDynAuthClientCoAPacketsDropped, + radiusDynAuthClientUnknownTypes, + radiusDynAuthClientCounterDiscontinuity + } + STATUS current + + + + DESCRIPTION + "The collection of objects providing management of + a RADIUS Dynamic Authorization Client." + ::= { radiusDynAuthClientMIBGroups 1 } + +radiusDynAuthClientAuthOnlyGroup OBJECT-GROUP + OBJECTS { radiusDynAuthClientDisconAuthOnlyRequests, + radiusDynAuthClientDisconNakAuthOnlyRequest, + radiusDynAuthClientCoAAuthOnlyRequest, + radiusDynAuthClientCoANakAuthOnlyRequest + } + STATUS current + DESCRIPTION + "The collection of objects supporting the RADIUS + messages including Service-Type attribute with + value 'Authorize Only'." + ::= { radiusDynAuthClientMIBGroups 2 } + +radiusDynAuthClientNoSessGroup OBJECT-GROUP + OBJECTS { radiusDynAuthClientDisconNakSessNoContext, + radiusDynAuthClientCoANakSessNoContext + } + STATUS current + DESCRIPTION + "The collection of objects supporting the RADIUS + messages that are referring to non-existing sessions." + ::= { radiusDynAuthClientMIBGroups 3 } + + + +END diff --git a/mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB b/mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB new file mode 100644 index 0000000..6163023 --- /dev/null +++ b/mibs/ietf/RADIUS-DYNAUTH-SERVER-MIB @@ -0,0 +1,742 @@ +RADIUS-DYNAUTH-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Integer32, mib-2, + TimeTicks FROM SNMPv2-SMI -- [RFC2578] + SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + InetAddressType, + InetAddress FROM INET-ADDRESS-MIB -- [RFC4001] + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF; -- [RFC2580] + +radiusDynAuthServerMIB MODULE-IDENTITY + LAST-UPDATED "200608290000Z" -- 29 August 2006 + ORGANIZATION "IETF RADEXT Working Group" + CONTACT-INFO + " Stefaan De Cnodder + Alcatel + Francis Wellesplein 1 + B-2018 Antwerp + Belgium + + Phone: +32 3 240 85 15 + EMail: stefaan.de_cnodder@alcatel.be + + Nagi Reddy Jonnala + Cisco Systems, Inc. + Divyasree Chambers, B Wing, + O'Shaugnessy Road, + Bangalore-560027, India. + + Phone: +91 94487 60828 + EMail: njonnala@cisco.com + + Murtaza Chiba + Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA, 95134 + + Phone: +1 408 525 7198 + EMail: mchiba@cisco.com " + DESCRIPTION + "The MIB module for entities implementing the server + side of the Dynamic Authorization Extensions to the + Remote Authentication Dial-In User Service (RADIUS) + protocol. Copyright (C) The Internet Society (2006). + + + + Initial version as published in RFC 4673; for full + legal notices see the RFC itself." + + REVISION "200608290000Z" -- 29 August 2006 + DESCRIPTION "Initial version as published in RFC 4673." + ::= { mib-2 146 } + +radiusDynAuthServerMIBObjects OBJECT IDENTIFIER ::= + { radiusDynAuthServerMIB 1 } + +radiusDynAuthServerScalars OBJECT IDENTIFIER ::= + { radiusDynAuthServerMIBObjects 1 } + +radiusDynAuthServerDisconInvalidClientAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Disconnect-Request packets received from + unknown addresses. This counter may experience a + discontinuity when the DAS module (re)starts, as + indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + ::= { radiusDynAuthServerScalars 1 } + +radiusDynAuthServerCoAInvalidClientAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of CoA-Request packets received from unknown + addresses. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + ::= { radiusDynAuthServerScalars 2 } + +radiusDynAuthServerIdentifier OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The NAS-Identifier of the RADIUS Dynamic Authorization + Server. This is not necessarily the same as sysName in + MIB II." + REFERENCE + "RFC 2865, Section 5.32, NAS-Identifier." + ::= { radiusDynAuthServerScalars 3 } + + + + +radiusDynAuthClientTable OBJECT-TYPE + SYNTAX SEQUENCE OF RadiusDynAuthClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the RADIUS Dynamic + Authorization Clients with which the server shares a + secret." + ::= { radiusDynAuthServerMIBObjects 2 } + +radiusDynAuthClientEntry OBJECT-TYPE + SYNTAX RadiusDynAuthClientEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) representing one Dynamic + Authorization Client with which the server shares a + secret." + INDEX { radiusDynAuthClientIndex } + ::= { radiusDynAuthClientTable 1 } + +RadiusDynAuthClientEntry ::= SEQUENCE { + radiusDynAuthClientIndex Integer32, + radiusDynAuthClientAddressType InetAddressType, + radiusDynAuthClientAddress InetAddress, + radiusDynAuthServDisconRequests Counter32, + radiusDynAuthServDisconAuthOnlyRequests Counter32, + radiusDynAuthServDupDisconRequests Counter32, + radiusDynAuthServDisconAcks Counter32, + radiusDynAuthServDisconNaks Counter32, + radiusDynAuthServDisconNakAuthOnlyRequests Counter32, + radiusDynAuthServDisconNakSessNoContext Counter32, + radiusDynAuthServDisconUserSessRemoved Counter32, + radiusDynAuthServMalformedDisconRequests Counter32, + radiusDynAuthServDisconBadAuthenticators Counter32, + radiusDynAuthServDisconPacketsDropped Counter32, + radiusDynAuthServCoARequests Counter32, + radiusDynAuthServCoAAuthOnlyRequests Counter32, + radiusDynAuthServDupCoARequests Counter32, + radiusDynAuthServCoAAcks Counter32, + radiusDynAuthServCoANaks Counter32, + radiusDynAuthServCoANakAuthOnlyRequests Counter32, + radiusDynAuthServCoANakSessNoContext Counter32, + radiusDynAuthServCoAUserSessChanged Counter32, + radiusDynAuthServMalformedCoARequests Counter32, + radiusDynAuthServCoABadAuthenticators Counter32, + radiusDynAuthServCoAPacketsDropped Counter32, + radiusDynAuthServUnknownTypes Counter32, + + + + radiusDynAuthServerCounterDiscontinuity TimeTicks +} + + +radiusDynAuthClientIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number uniquely identifying each RADIUS Dynamic + Authorization Client with which this Dynamic + Authorization Server communicates. This number is + allocated by the agent implementing this MIB module + and is unique in this context." + ::= { radiusDynAuthClientEntry 1 } + +radiusDynAuthClientAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of IP address of the RADIUS Dynamic + Authorization Client referred to in this table entry." + ::= { radiusDynAuthClientEntry 2 } + +radiusDynAuthClientAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address value of the RADIUS Dynamic + Authorization Client referred to in this table entry, + using the version neutral IP address format. The type + of this address is determined by the value of + the radiusDynAuthClientAddressType object." + ::= { radiusDynAuthClientEntry 3 } + +radiusDynAuthServDisconRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Requests received + from this Dynamic Authorization Client. This also + includes the RADIUS Disconnect-Requests that have a + Service-Type attribute with value 'Authorize Only'. + This counter may experience a discontinuity when the + + + + DAS module (re)starts as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 4 } + +radiusDynAuthServDisconAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Requests that include + a Service-Type attribute with value 'Authorize Only' + received from this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 5 } + +radiusDynAuthServDupDisconRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS Disconnect-Request + packets received from this Dynamic Authorization + Client. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 6 } + +radiusDynAuthServDisconAcks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-ACK packets sent to + this Dynamic Authorization Client. This counter may + experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + + + + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 7 } + +radiusDynAuthServDisconNaks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + sent to this Dynamic Authorization Client. This + includes the RADIUS Disconnect-NAK packets sent + with a Service-Type attribute with value 'Authorize + Only' and the RADIUS Disconnect-NAK packets sent + because no session context was found. This counter + may experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 8 } + +radiusDynAuthServDisconNakAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets that + include a Service-Type attribute with value + 'Authorize Only' sent to this Dynamic Authorization + Client. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 9 } + +radiusDynAuthServDisconNakSessNoContext OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-NAK packets + sent to this Dynamic Authorization Client + because no session context was found. This counter may + + + + experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 10 } + +radiusDynAuthServDisconUserSessRemoved OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user sessions removed for the + Disconnect-Requests received from this + Dynamic Authorization Client. Depending on site- + specific policies, a single Disconnect request + can remove multiple user sessions. In cases where + this Dynamic Authorization Server has no + knowledge of the number of user sessions that + are affected by a single request, each such + Disconnect-Request will count as a single + affected user session only. This counter may experience + a discontinuity when the DAS module (re)starts, as + indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM)." + ::= { radiusDynAuthClientEntry 11 } + +radiusDynAuthServMalformedDisconRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS Disconnect-Request + packets received from this Dynamic Authorization + Client. Bad authenticators and unknown types are not + included as malformed Disconnect-Requests. This counter + may experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 12 } + + + + +radiusDynAuthServDisconBadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS Disconnect-Request packets + that contained an invalid Authenticator field + received from this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 13 } + +radiusDynAuthServDisconPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming Disconnect-Requests + from this Dynamic Authorization Client silently + discarded by the server application for some reason + other than malformed, bad authenticators, or unknown + types. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.1, Disconnect Messages (DM), and + Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 14 } + +radiusDynAuthServCoARequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-requests received from this + Dynamic Authorization Client. This also includes + the CoA requests that have a Service-Type attribute + with value 'Authorize Only'. This counter may + experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + + + + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 15 } + +radiusDynAuthServCoAAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-requests that include a + Service-Type attribute with value 'Authorize Only' + received from this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 16 } + + +radiusDynAuthServDupCoARequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate RADIUS CoA-Request packets + received from this Dynamic Authorization Client. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 17 } + +radiusDynAuthServCoAAcks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-ACK packets sent to this + Dynamic Authorization Client. This counter may + experience a discontinuity when the DAS module + + + + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 18 } + +radiusDynAuthServCoANaks OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets sent to + this Dynamic Authorization Client. This includes + the RADIUS CoA-NAK packets sent with a Service-Type + attribute with value 'Authorize Only' and the RADIUS + CoA-NAK packets sent because no session context was + found. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 19 } + +radiusDynAuthServCoANakAuthOnlyRequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-NAK packets that include a + Service-Type attribute with value 'Authorize Only' + sent to this Dynamic Authorization Client. This counter + may experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 20 } + +radiusDynAuthServCoANakSessNoContext OBJECT-TYPE + SYNTAX Counter32 + UNITS "replies" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of RADIUS CoA-NAK packets sent to this + Dynamic Authorization Client because no session context + was found. This counter may experience a discontinuity + when the DAS module (re)starts, as indicated by the + value of radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 21 } + +radiusDynAuthServCoAUserSessChanged OBJECT-TYPE + SYNTAX Counter32 + UNITS "sessions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user sessions authorization + changed for the CoA-Requests received from this + Dynamic Authorization Client. Depending on site- + specific policies, a single CoA request can change + multiple user sessions' authorization. In cases where + this Dynamic Authorization Server has no knowledge of + the number of user sessions that are affected by a + single request, each such CoA-Request will + count as a single affected user session only. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA)." + ::= { radiusDynAuthClientEntry 22 } + +radiusDynAuthServMalformedCoARequests OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of malformed RADIUS CoA-Request packets + received from this Dynamic Authorization Client. Bad + authenticators and unknown types are not included as + malformed CoA-Requests. This counter may experience a + discontinuity when the DAS module (re)starts, as + indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + + + + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 23 } + +radiusDynAuthServCoABadAuthenticators OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RADIUS CoA-Request packets that + contained an invalid Authenticator field received + from this Dynamic Authorization Client. This counter + may experience a discontinuity when the DAS module + (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 24 } + +radiusDynAuthServCoAPacketsDropped OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming CoA packets from this + Dynamic Authorization Client silently discarded + by the server application for some reason other than + malformed, bad authenticators, or unknown types. This + counter may experience a discontinuity when the DAS + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.2, Change-of-Authorization + Messages (CoA), and Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 25 } + +radiusDynAuthServUnknownTypes OBJECT-TYPE + SYNTAX Counter32 + UNITS "requests" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incoming packets of unknown types that + were received on the Dynamic Authorization port. This + counter may experience a discontinuity when the DAS + + + + module (re)starts, as indicated by the value of + radiusDynAuthServerCounterDiscontinuity." + REFERENCE + "RFC 3576, Section 2.3, Packet Format." + ::= { radiusDynAuthClientEntry 26 } + +radiusDynAuthServerCounterDiscontinuity OBJECT-TYPE + SYNTAX TimeTicks + UNITS "hundredths of a second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + last counter discontinuity. A discontinuity may + be the result of a reinitialization of the DAS + module within the managed entity." + ::= { radiusDynAuthClientEntry 27 } + + +-- conformance information + +radiusDynAuthServerMIBConformance + OBJECT IDENTIFIER ::= { radiusDynAuthServerMIB 2 } +radiusDynAuthServerMIBCompliances + OBJECT IDENTIFIER ::= { radiusDynAuthServerMIBConformance 1 } +radiusDynAuthServerMIBGroups + OBJECT IDENTIFIER ::= { radiusDynAuthServerMIBConformance 2 } + +-- compliance statements + +radiusAuthServerMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities implementing + the RADIUS Dynamic Authorization Server. Implementation + of this module is for entities that support IPv4 and/or + IPv6." + MODULE -- this module + MANDATORY-GROUPS { radiusDynAuthServerMIBGroup } + + OBJECT radiusDynAuthClientAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + OBJECT radiusDynAuthClientAddress + SYNTAX InetAddress (SIZE(4|16)) + + + + DESCRIPTION + "An implementation is only required to support IPv4 and + globally unique IPv6 addresses." + + GROUP radiusDynAuthServerAuthOnlyGroup + DESCRIPTION + "Only required for Dynamic Authorization Clients that + are supporting Service-Type attributes with value + 'Authorize-Only'." + + + GROUP radiusDynAuthServerNoSessGroup + DESCRIPTION + "This group is not required if the Dynamic + Authorization Server cannot easily determine whether + a session exists (e.g., in case of a RADIUS + proxy)." + + ::= { radiusDynAuthServerMIBCompliances 1 } + +-- units of conformance + +radiusDynAuthServerMIBGroup OBJECT-GROUP + OBJECTS { radiusDynAuthServerDisconInvalidClientAddresses, + radiusDynAuthServerCoAInvalidClientAddresses, + radiusDynAuthServerIdentifier, + radiusDynAuthClientAddressType, + radiusDynAuthClientAddress, + radiusDynAuthServDisconRequests, + radiusDynAuthServDupDisconRequests, + radiusDynAuthServDisconAcks, + radiusDynAuthServDisconNaks, + radiusDynAuthServDisconUserSessRemoved, + radiusDynAuthServMalformedDisconRequests, + radiusDynAuthServDisconBadAuthenticators, + radiusDynAuthServDisconPacketsDropped, + radiusDynAuthServCoARequests, + radiusDynAuthServDupCoARequests, + radiusDynAuthServCoAAcks, + radiusDynAuthServCoANaks, + radiusDynAuthServCoAUserSessChanged, + radiusDynAuthServMalformedCoARequests, + radiusDynAuthServCoABadAuthenticators, + radiusDynAuthServCoAPacketsDropped, + radiusDynAuthServUnknownTypes, + radiusDynAuthServerCounterDiscontinuity + } + STATUS current + + + + DESCRIPTION + "The collection of objects providing management of + a RADIUS Dynamic Authorization Server." + ::= { radiusDynAuthServerMIBGroups 1 } + +radiusDynAuthServerAuthOnlyGroup OBJECT-GROUP + OBJECTS { radiusDynAuthServDisconAuthOnlyRequests, + radiusDynAuthServDisconNakAuthOnlyRequests, + radiusDynAuthServCoAAuthOnlyRequests, + radiusDynAuthServCoANakAuthOnlyRequests + } + STATUS current + DESCRIPTION + "The collection of objects supporting the RADIUS + messages including Service-Type attribute with + value 'Authorize Only'." + ::= { radiusDynAuthServerMIBGroups 2 } + +radiusDynAuthServerNoSessGroup OBJECT-GROUP + OBJECTS { radiusDynAuthServDisconNakSessNoContext, + radiusDynAuthServCoANakSessNoContext + } + STATUS current + DESCRIPTION + "The collection of objects supporting the RADIUS + messages that are referring to non-existing sessions." + ::= { radiusDynAuthServerMIBGroups 3 } + + +END diff --git a/mibs/ietf/RAQMON-MIB b/mibs/ietf/RAQMON-MIB new file mode 100644 index 0000000..f8c088a --- /dev/null +++ b/mibs/ietf/RAQMON-MIB @@ -0,0 +1,1514 @@ +RAQMON-MIB DEFINITIONS ::= BEGIN + + IMPORTS + OBJECT-GROUP, NOTIFICATION-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + Integer32, Unsigned32, + Gauge32, Counter32, OBJECT-TYPE, + MODULE-IDENTITY, NOTIFICATION-TYPE + FROM SNMPv2-SMI + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + rmon + FROM RMON-MIB + RowStatus, TruthValue, DateAndTime, RowPointer + FROM SNMPv2-TC; + + raqmonMIB MODULE-IDENTITY + LAST-UPDATED "200610100000Z" -- October 10, 2006 + ORGANIZATION + "IETF RMON MIB Working Group" + CONTACT-INFO + "WG Charter: + http://www.ietf.org/html.charters/rmonmib-charter.html + + Mailing lists: + General Discussion: rmonmib@ietf.org + To Subscribe: rmonmib-requests@ietf.org + In Body: subscribe your_email_address + + Chair: Andy Bierman + Email: ietf@andybierman.com + + Editor: Dan Romascanu + Avaya + Email: dromasca@avaya.com" + DESCRIPTION + "Real-Time Application QoS Monitoring MIB. + + Copyright (c) The Internet Society (2006). + This version of this MIB module is part of + RFC 4711; See the RFC itself for full legal notices." + REVISION "200610100000Z" + DESCRIPTION + "Initial version, published as RFC 4711." + ::= { rmon 31 } +-- This OID allocation conforms to [RFC3737] + + + +-- +-- Node definitions +-- + raqmonNotifications OBJECT IDENTIFIER ::= { raqmonMIB 0 } + + raqmonSessionAlarm NOTIFICATION-TYPE + OBJECTS { raqmonParticipantAddr, + raqmonParticipantName, + raqmonParticipantPeerAddrType, + raqmonParticipantPeerAddr, + raqmonQoSEnd2EndNetDelay, + raqmonQoSInterArrivalJitter, + raqmonQosLostPackets, + raqmonQosRcvdPackets } + STATUS current + DESCRIPTION + "A notification generated by an entry in the + raqmonSessionExceptionTable." + ::= { raqmonNotifications 1 } + + + raqmonMIBObjects OBJECT IDENTIFIER ::= { raqmonMIB 1 } + + raqmonSession OBJECT IDENTIFIER ::= { raqmonMIBObjects 1 } + + raqmonParticipantTable OBJECT-TYPE + SYNTAX SEQUENCE OF RaqmonParticipantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about participants in + both active and closed (terminated) sessions." + ::= { raqmonSession 1 } + + raqmonParticipantEntry OBJECT-TYPE + SYNTAX RaqmonParticipantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each row contains information for a single session + (application) run by one participant. + Indexation by the start time of the session aims + to ease sorting by management applications. Agents MUST + NOT report identical start times for any two sessions + on the same host. + Rows are removed for inactive sessions + when implementation-specific age or space limits are + reached." + + + + INDEX { raqmonParticipantStartDate, raqmonParticipantIndex } + ::= { raqmonParticipantTable 1 } + + RaqmonParticipantEntry ::= + SEQUENCE { + raqmonParticipantStartDate DateAndTime, + raqmonParticipantIndex Unsigned32, + raqmonParticipantReportCaps BITS, + raqmonParticipantAddrType InetAddressType, + raqmonParticipantAddr InetAddress, + raqmonParticipantSendPort InetPortNumber, + raqmonParticipantRecvPort InetPortNumber, + raqmonParticipantSetupDelay Integer32, + raqmonParticipantName SnmpAdminString, + raqmonParticipantAppName SnmpAdminString, + raqmonParticipantQosCount Gauge32, + raqmonParticipantEndDate DateAndTime, + raqmonParticipantDestPayloadType Integer32, + raqmonParticipantSrcPayloadType Integer32, + raqmonParticipantActive TruthValue, + raqmonParticipantPeer RowPointer, + raqmonParticipantPeerAddrType InetAddressType, + raqmonParticipantPeerAddr InetAddress, + raqmonParticipantSrcL2Priority Integer32, + raqmonParticipantDestL2Priority Integer32, + raqmonParticipantSrcDSCP Integer32, + raqmonParticipantDestDSCP Integer32, + raqmonParticipantCpuMean Integer32, + raqmonParticipantCpuMin Integer32, + raqmonParticipantCpuMax Integer32, + raqmonParticipantMemoryMean Integer32, + raqmonParticipantMemoryMin Integer32, + raqmonParticipantMemoryMax Integer32, + raqmonParticipantNetRTTMean Integer32, + raqmonParticipantNetRTTMin Integer32, + raqmonParticipantNetRTTMax Integer32, + raqmonParticipantIAJitterMean Integer32, + raqmonParticipantIAJitterMin Integer32, + raqmonParticipantIAJitterMax Integer32, + raqmonParticipantIPDVMean Integer32, + raqmonParticipantIPDVMin Integer32, + raqmonParticipantIPDVMax Integer32, + raqmonParticipantNetOwdMean Integer32, + raqmonParticipantNetOwdMin Integer32, + raqmonParticipantNetOwdMax Integer32, + raqmonParticipantAppDelayMean Integer32, + raqmonParticipantAppDelayMin Integer32, + raqmonParticipantAppDelayMax Integer32, + + + + raqmonParticipantPacketsRcvd Integer32, + raqmonParticipantPacketsSent Integer32, + raqmonParticipantOctetsRcvd Integer32, + raqmonParticipantOctetsSent Integer32, + raqmonParticipantLostPackets Integer32, + raqmonParticipantLostPacketsFrct Integer32, + raqmonParticipantDiscards Integer32, + raqmonParticipantDiscardsFrct Integer32 + } + + raqmonParticipantStartDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The date and time of this entry. + It will be the date and time + of the first report received." + ::= { raqmonParticipantEntry 1 } + + raqmonParticipantIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the conceptual row, which is for SNMP + purposes only and has no relation to any protocol value. + + There is no requirement that these rows be created or + maintained sequentially. The index will be unique for a + particular date and time." + ::= { raqmonParticipantEntry 2 } + + raqmonParticipantReportCaps OBJECT-TYPE + SYNTAX BITS { + raqmonPartRepDsrcName(0), + raqmonPartRepRecvName(1), + raqmonPartRepDsrcPort(2), + raqmonPartRepRecvPort(3), + raqmonPartRepSetupTime(4), + raqmonPartRepSetupDelay(5), + raqmonPartRepSessionDuration(6), + raqmonPartRepSetupStatus(7), + raqmonPartRepRTEnd2EndNetDelay(8), + raqmonPartRepOWEnd2EndNetDelay(9), + raqmonPartApplicationDelay(10), + raqmonPartRepIAJitter(11), + raqmonPartRepIPDV(12), + + + + raqmonPartRepRcvdPackets(13), + raqmonPartRepRcvdOctets(14), + raqmonPartRepSentPackets(15), + raqmonPartRepSentOctets(16), + raqmonPartRepCumPacketsLoss(17), + raqmonPartRepFractionPacketsLoss(18), + raqmonPartRepCumDiscards(19), + raqmonPartRepFractionDiscards(20), + raqmonPartRepSrcPayloadType(21), + raqmonPartRepDestPayloadType(22), + raqmonPartRepSrcLayer2Priority(23), + raqmonPartRepSrcTosDscp(24), + raqmonPartRepDestLayer2Priority(25), + raqmonPartRepDestTosDscp(26), + raqmonPartRepCPU(27), + raqmonPartRepMemory(28), + raqmonPartRepAppName(29) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Report capabilities of the participant, as perceived + by the Collector. + + If the participant can report the Data Source Name as + defined in [RFC4710], Section 5.3, then the + raqmonPartRepDsrcName bit will be set. + + If the participant can report the Receiver Name as + defined in [RFC4710], Section 5.4, then the + raqmonPartRepRecvName bit will be set. + + If the participant can report the Data Source Port as + defined in [RFC4710], Section 5.5, then the + raqmonPartRepDsrcPort bit will be set. + + If the participant can report the Receiver Port as + defined in [RFC4710], Section 5.6, then the + raqmonPartRepRecvPort bit will be set. + + If the participant can report the Session Setup Time as + defined in [RFC4710], Section 5.7, then the + raqmonPartRepSetupTime bit will be set. + + If the participant can report the Session Setup Delay as + defined in [RFC4710], Section 5.8, then the + raqmonPartRepSetupDelay bit will be set. + + + + + If the participant can report the Session Duration as + defined in [RFC4710], Section 5.9, then the + raqmonPartRepSessionDuration bit will be set. + + If the participant can report the Setup Status as + defined in [RFC4710], Section 5.10, then the + raqmonPartRepSetupStatus bit will be set. + + If the participant can report the Round-Trip End-to-end + Network Delay as defined in [RFC4710], Section 5.11, + then the raqmonPartRepRTEnd2EndNetDelay bit will be set. + + If the participant can report the One-way End-to-end + Network Delay as defined in [RFC4710], Section 5.12, + then the raqmonPartRepOWEnd2EndNetDelay bit will be set. + + If the participant can report the Application Delay as + defined in [RFC4710], Section 5.13, then the + raqmonPartApplicationDelay bit will be set. + + If the participant can report the Inter-Arrival Jitter + as defined in [RFC4710], Section 5.14, then the + raqmonPartRepIAJitter bit will be set. + + If the participant can report the IP Packet Delay + Variation as defined in [RFC4710], Section 5.15, then + the raqmonPartRepIPDV bit will be set. + + If the participant can report the number of application + packets received as defined in [RFC4710], Section 5.16, + then the raqmonPartRepRcvdPackets bit will be set. + + If the participant can report the number of application + octets received as defined in [RFC4710], Section 5.17, + then the raqmonPartRepRcvdOctets bit will be set. + + If the participant can report the number of application + packets sent as defined in [RFC4710], Section 5.18, then + the raqmonPartRepSentPackets bit will be set. + + If the participant can report the number of application + octets sent as defined in [RFC4710], Section 5.19, then + the raqmonPartRepSentOctets bit will be set. + + If the participant can report the number of cumulative + packets lost as defined in [RFC4710], Section 5.20, then + the raqmonPartRepCumPacketsLoss bit will be set. + + + + + If the participant can report the fraction of packet + loss as defined in [RFC4710], Section 5.21, then the + raqmonPartRepFractionPacketsLoss bit will be set. + + If the participant can report the number of cumulative + discards as defined in [RFC4710], Section 5.22, then the + raqmonPartRepCumDiscards bit will be set. + + If the participant can report the fraction of discards + as defined in [RFC4710], Section 5.23, then the + raqmonPartRepFractionDiscards bit will be set. + + If the participant can report the Source Payload Type as + defined in [RFC4710], Section 5.24, then the + raqmonPartRepSrcPayloadType bit will be set. + + If the participant can report the Destination Payload + Type as defined in [RFC4710], Section 5.25, then the + raqmonPartRepDestPayloadType bit will be set. + + If the participant can report the Source Layer 2 + Priority as defined in [RFC4710], Section 5.26, then the + raqmonPartRepSrcLayer2Priority bit will be set. + + If the participant can report the Source DSCP/ToS value + as defined in [RFC4710], Section 5.27, then the + raqmonPartRepSrcToSDscp bit will be set. + + If the participant can report the Destination Layer 2 + Priority as defined in [RFC4710], Section 5.28, then the + raqmonPartRepDestLayer2Priority bit will be set. + + If the participant can report the Destination DSCP/ToS + Value as defined in [RFC4710], Section 5.29, then the + raqmonPartRepDestToSDscp bit will be set. + + If the participant can report the CPU utilization as + defined in [RFC4710], Section 5.30, then the + raqmonPartRepCPU bit will be set. + + If the participant can report the memory utilization as + defined in [RFC4710], Section 5.31, then the + raqmonPartRepMemory bit will be set. + + If the participant can report the Application Name as + defined in [RFC4710], Section 5.32, then the + raqmonPartRepAppName bit will be set. + + + + + The capability of reporting of a specific metric does + not mandate that the metric must be reported permanently + by the data source to the respective collector. Some + data sources MAY be configured not to send a metric, or + some metrics may not be relevant to the specific + application." + ::= { raqmonParticipantEntry 3 } + + raqmonParticipantAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the Internet address of the participant for + this session." + ::= { raqmonParticipantEntry 4 } + + raqmonParticipantAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet Address of the participant for this + session. Formatting of this object is determined + by the value of raqmonParticipantAddrType." + ::= { raqmonParticipantEntry 5 } + + raqmonParticipantSendPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Port from which session data is sent. + If the value was not reported to the collector, + this object will have the value 0." + REFERENCE + "Section 5.5 of the [RFC4710]" + ::= { raqmonParticipantEntry 6 } + + raqmonParticipantRecvPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Port on which session data is received. + If the value was not reported to the collector, + this object will have the value 0." + REFERENCE + + + + "Section 5.6 of the [RFC4710]" + ::= { raqmonParticipantEntry 7 } + + raqmonParticipantSetupDelay OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Session setup time. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.8 of the [RFC4710]" + ::= { raqmonParticipantEntry 8 } + + raqmonParticipantName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The data source name for the participant." + REFERENCE + "Section 5.3 of the [RFC4710]" + ::= { raqmonParticipantEntry 9 } + + raqmonParticipantAppName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A string giving the name and possibly the version + of the application generating the stream, e.g., + 'videotool 1.2.' + + This information may be useful for debugging purposes + and is similar to the Mailer or Mail-System-Version SMTP + headers. The tool value is expected to remain constant + for the duration of the session." + REFERENCE + "Section 5.32 of the [RFC4710]" + ::= { raqmonParticipantEntry 10 } + + raqmonParticipantQosCount OBJECT-TYPE + SYNTAX Gauge32 + UNITS "entries" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current number of entries in the raqmonQosTable + for this participant and session." + ::= { raqmonParticipantEntry 11 } + + raqmonParticipantEndDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time of the most recent report received." + ::= { raqmonParticipantEntry 12 } + + raqmonParticipantDestPayloadType OBJECT-TYPE + SYNTAX Integer32 (-1|0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination Payload Type. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "RFC 3551 and Section 5.25 of the [RFC4710]" + ::= { raqmonParticipantEntry 13 } + + raqmonParticipantSrcPayloadType OBJECT-TYPE + SYNTAX Integer32 (-1|0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source Payload Type. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "RFC 3551 and Section 5.24 of the [RFC4710]" + ::= { raqmonParticipantEntry 14 } + + raqmonParticipantActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Value 'true' indicates that the session + for this participant is active (open). + Value 'false' indicates that the session + is closed (terminated)." + ::= { raqmonParticipantEntry 15 } + + + + + raqmonParticipantPeer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The pointer to the corresponding entry in this table for + the other peer participant. If there is no such entry + in the participant table of the collector represented by + this SNMP agent, then the value will be { 0 0 }. + " + ::= { raqmonParticipantEntry 16 } + + raqmonParticipantPeerAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the Internet address of the peer participant + for this session." + ::= { raqmonParticipantEntry 17 } + + raqmonParticipantPeerAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet Address of the peer participant for this + session. Formatting of this object is determined by + the value of raqmonParticipantPeerAddrType." + ::= { raqmonParticipantEntry 18 } + + raqmonParticipantSrcL2Priority OBJECT-TYPE + SYNTAX Integer32 (-1|0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source Layer 2 Priority. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.26 of the [RFC4710]" + ::= { raqmonParticipantEntry 19 } + + raqmonParticipantDestL2Priority OBJECT-TYPE + SYNTAX Integer32 (-1|0..7) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Destination Layer 2 Priority. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.28 of the [RFC4710]" + ::= { raqmonParticipantEntry 20 } + + raqmonParticipantSrcDSCP OBJECT-TYPE + SYNTAX Integer32 (-1|0..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Source Layer 3 DSCP value. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.27 of the [RFC4710]" + ::= { raqmonParticipantEntry 21 } + + raqmonParticipantDestDSCP OBJECT-TYPE + SYNTAX Integer32 (-1|0..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Destination Layer 3 DSCP value." + REFERENCE + "Section 5.29 of the [RFC4710]" + ::= { raqmonParticipantEntry 22 } + + raqmonParticipantCpuMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean CPU utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.30 of the [RFC4710]" + ::= { raqmonParticipantEntry 23 } + + raqmonParticipantCpuMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Minimum CPU utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.30 of the [RFC4710]" + ::= { raqmonParticipantEntry 24 } + + raqmonParticipantCpuMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum CPU utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.30 of the [RFC4710]" + ::= { raqmonParticipantEntry 25 } + + raqmonParticipantMemoryMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean memory utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.31 of the [RFC4710]" + ::= { raqmonParticipantEntry 26 } + + raqmonParticipantMemoryMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum memory utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.31 of the [RFC4710]" + ::= { raqmonParticipantEntry 27 } + + raqmonParticipantMemoryMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + + + + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum memory utilization. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.31 of the [RFC4710]" + ::= { raqmonParticipantEntry 28 } + + raqmonParticipantNetRTTMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean round-trip end-to-end network + delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.11 of the [RFC4710]" + ::= { raqmonParticipantEntry 29 } + + raqmonParticipantNetRTTMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum round-trip end-to-end network delay + over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.11 of the [RFC4710]" + ::= { raqmonParticipantEntry 30 } + + raqmonParticipantNetRTTMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum round-trip end-to-end network delay + over the entire session. + If the value was not reported to the collector, + + + + this object will have the value -1." + REFERENCE + "Section 5.11 of the [RFC4710]" + ::= { raqmonParticipantEntry 31 } + + raqmonParticipantIAJitterMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean inter-arrival jitter over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.14 of the [RFC4710]" + ::= { raqmonParticipantEntry 32 } + + raqmonParticipantIAJitterMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum inter-arrival jitter over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.14 of the [RFC4710]" + ::= { raqmonParticipantEntry 33 } + + raqmonParticipantIAJitterMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum inter-arrival jitter over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.14 of the [RFC4710]" + ::= { raqmonParticipantEntry 34 } + + raqmonParticipantIPDVMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Mean IP packet delay variation over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.15 of the [RFC4710]" + ::= { raqmonParticipantEntry 35 } + + raqmonParticipantIPDVMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum IP packet delay variation over the entire + session. If the value was not reported to the + collector, this object will have the value -1." + REFERENCE + "Section 5.15 of the [RFC4710]" + ::= { raqmonParticipantEntry 36 } + + raqmonParticipantIPDVMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum IP packet delay variation over the entire + session. If the value was not reported to the + collector, this object will have the value -1." + REFERENCE + "Section 5.15 of the [RFC4710]" + ::= { raqmonParticipantEntry 37 } + + raqmonParticipantNetOwdMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean Network one-way delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.12 of the [RFC4710]" + ::= { raqmonParticipantEntry 38 } + + + + + raqmonParticipantNetOwdMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum Network one-way delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.12 of the [RFC4710]" + ::= { raqmonParticipantEntry 39 } + + raqmonParticipantNetOwdMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum Network one-way delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.1 of the [RFC4710]" + ::= { raqmonParticipantEntry 40 } + + raqmonParticipantAppDelayMean OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mean application delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.13 of the [RFC4710]" + ::= { raqmonParticipantEntry 41 } + + raqmonParticipantAppDelayMin OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Minimum application delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + + + + REFERENCE + "Section 5.13 of the [RFC4710]" + ::= { raqmonParticipantEntry 42 } + + raqmonParticipantAppDelayMax OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum application delay over the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.13 of the [RFC4710]" + ::= { raqmonParticipantEntry 43 } + + raqmonParticipantPacketsRcvd OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets received for the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.16 of the [RFC4710]" + ::= { raqmonParticipantEntry 44 } + + raqmonParticipantPacketsSent OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets sent for the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.17 of the [RFC4710]" + ::= { raqmonParticipantEntry 45 } + + raqmonParticipantOctetsRcvd OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "Count of octets received for the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.18 of the [RFC4710]" + ::= { raqmonParticipantEntry 46 } + + raqmonParticipantOctetsSent OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of octets sent for the entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.19 of the [RFC4710]" + ::= { raqmonParticipantEntry 47 } + + raqmonParticipantLostPackets OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets lost by this receiver for the entire + session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.20 of the [RFC4710]" + ::= { raqmonParticipantEntry 48 } + + raqmonParticipantLostPacketsFrct OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fraction of lost packets out of total packets received. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.21 of the [RFC4710]" + ::= { raqmonParticipantEntry 49 } + + + + + raqmonParticipantDiscards OBJECT-TYPE + SYNTAX Integer32 (-1|0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets discarded by this receiver for the + entire session. + If the value was not reported to the collector, + this object will have the value -1." + REFERENCE + "Section 5.22 of the [RFC4710]" + ::= { raqmonParticipantEntry 50 } + + raqmonParticipantDiscardsFrct OBJECT-TYPE + SYNTAX Integer32 (-1|0..100) + UNITS "percents" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Fraction of discarded packets out of total packets + received. If the value was not reported to the + collector, this object will have the value -1." + REFERENCE + "Section 5.23 of the [RFC4710]" + ::= { raqmonParticipantEntry 51 } + + + raqmonQosTable OBJECT-TYPE + SYNTAX SEQUENCE OF RaqmonQosEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of historical information about quality-of-service + data during sessions." + ::= { raqmonSession 2 } + + raqmonQosEntry OBJECT-TYPE + SYNTAX RaqmonQosEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information from a single RAQMON + packet, related to a single session + (application) run by one participant. + Indexation by the start time of the session aims + to ease sorting by management applications. Agents MUST + NOT report identical start times for any two sessions + + + + on the same host. + Rows are removed for inactive sessions when + implementation-specific time or space limits are + reached." + INDEX { raqmonParticipantStartDate, + raqmonParticipantIndex, + raqmonQosTime } + ::= { raqmonQosTable 1 } + + RaqmonQosEntry ::= + SEQUENCE { + raqmonQosTime Unsigned32, + raqmonQoSEnd2EndNetDelay Integer32, + raqmonQoSInterArrivalJitter Integer32, + raqmonQosRcvdPackets Integer32, + raqmonQosRcvdOctets Integer32, + raqmonQosSentPackets Integer32, + raqmonQosSentOctets Integer32, + raqmonQosLostPackets Integer32, + raqmonQosSessionStatus SnmpAdminString + } + + raqmonQosTime OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Time of this entry measured from the start of the + corresponding participant session." + ::= { raqmonQosEntry 1 } + + raqmonQoSEnd2EndNetDelay OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The round-trip time. + Will contain the previous value if there was no report + for this time, or -1 if the value has never + been reported." + REFERENCE + "Section 5.11 of the [RFC4710]" + ::= { raqmonQosEntry 2 } + + raqmonQoSInterArrivalJitter OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + + + + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of delay variation as observed by this + receiver. Will contain the previous value if there + was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.14 of the [RFC4710]" + ::= { raqmonQosEntry 3 } + + raqmonQosRcvdPackets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets received by this receiver since the + previous entry. Will contain the previous value if + there was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.16 of the [RFC4710]" + ::= { raqmonQosEntry 4 } + + raqmonQosRcvdOctets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of octets received by this receiver since the + previous report. Will contain the previous value if + there was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.18 of the [RFC4710]" + ::= { raqmonQosEntry 5 } + + raqmonQosSentPackets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of packets sent since the previous report. + Will contain the previous value if there + + + + was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.17 of the [RFC4710]" + ::= { raqmonQosEntry 6 } + + raqmonQosSentOctets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of octets sent since the previous report. + Will contain the previous value if there + was no report for this time, or -1 if the value + has never been reported." + REFERENCE + "Section 5.19 of the [RFC4710]" + ::= { raqmonQosEntry 7 } + + raqmonQosLostPackets OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of packets lost as observed by this receiver + since the previous report. Will contain the previous + value if there was no report for this time, or -1 if + the value has never been reported." + REFERENCE + "Section 5.20 of the [RFC4710]" + ::= { raqmonQosEntry 8 } + + raqmonQosSessionStatus OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The session status. Will contain the previous value + if there was no report for this time or the zero-length + string if no value was ever reported." + REFERENCE + "Section 5.10 of the [RFC4710]" + ::= { raqmonQosEntry 9 } + + + raqmonParticipantAddrTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF RaqmonParticipantAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maps raqmonParticipantAddr to the index of the + raqmonParticipantTable. This table allows + management applications to find entries + sorted by raqmonParticipantAddr rather than + raqmonParticipantStartDate." + ::= { raqmonSession 3 } + + raqmonParticipantAddrEntry OBJECT-TYPE + SYNTAX RaqmonParticipantAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to exactly one entry in the + raqmonParticipantEntry: the entry containing the + index pair raqmonParticipantStartDate, + raqmonParticipantIndex. + + Note that there is no concern about the indexation of + this table exceeding the limits defined by RFC 2578, + Section 3.5. According to [RFC4710], Section + 5.1, only IPv4 and IPv6 addresses can be reported as + participant addresses." + INDEX { raqmonParticipantAddrType, + raqmonParticipantAddr, + raqmonParticipantStartDate, + raqmonParticipantIndex } + ::= { raqmonParticipantAddrTable 1 } + + RaqmonParticipantAddrEntry ::= + SEQUENCE { raqmonParticipantAddrEndDate DateAndTime } + + raqmonParticipantAddrEndDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of raqmonParticipantEndDate for the + corresponding raqmonParticipantEntry." + ::= { raqmonParticipantAddrEntry 1 } + + + raqmonException OBJECT IDENTIFIER ::= { raqmonMIBObjects 2 } + + raqmonSessionExceptionTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF RaqmonSessionExceptionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines thresholds for the management + station to get notifications about sessions that + encountered poor quality of service. + + The information in this table MUST be persistent + across agent reboots." + ::= { raqmonException 2 } + + raqmonSessionExceptionEntry OBJECT-TYPE + SYNTAX RaqmonSessionExceptionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the raqmonSessionExceptionTable." + INDEX { raqmonSessionExceptionIndex } + ::= { raqmonSessionExceptionTable 1 } + + RaqmonSessionExceptionEntry ::= + SEQUENCE { + raqmonSessionExceptionIndex Unsigned32, + raqmonSessionExceptionIAJitterThreshold Unsigned32, + raqmonSessionExceptionNetRTTThreshold Unsigned32, + raqmonSessionExceptionLostPacketsThreshold Unsigned32, + raqmonSessionExceptionRowStatus RowStatus + } + + raqmonSessionExceptionIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index that uniquely identifies an + entry in the raqmonSessionExceptionTable. + Management applications can determine unused indices + by performing GetNext or GetBulk operations on the + Table." + ::= { raqmonSessionExceptionEntry 2 } + + raqmonSessionExceptionIAJitterThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Threshold for jitter. + The value during a session must be greater than or + equal to this value for an exception to be created." + ::= { raqmonSessionExceptionEntry 3 } + + raqmonSessionExceptionNetRTTThreshold OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Threshold for round-trip time. + The value during a session must be greater than or + equal to this value for an exception to be created." + ::= { raqmonSessionExceptionEntry 4 } + + raqmonSessionExceptionLostPacketsThreshold OBJECT-TYPE + SYNTAX Unsigned32 (0..1000) + UNITS "tenth of a percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Threshold for lost packets in units of tenths + of a percent. The value during a session must + be greater than or equal to this value for an + exception to be created." + ::= { raqmonSessionExceptionEntry 5 } + + raqmonSessionExceptionRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object has a value of 'active' when + exceptions are being monitored by the system. + A newly-created conceptual row must have all + the read-create objects initialized before + becoming 'active'. A conceptual row that is in + the 'notReady' or 'notInService' state MAY be + removed after 5 minutes. No writeable objects + can be changed while the row is active." + ::= { raqmonSessionExceptionEntry 7 } + + + raqmonConfig OBJECT IDENTIFIER ::= { raqmonMIBObjects 3 } + + raqmonConfigPort OBJECT-TYPE + SYNTAX InetPortNumber + + + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The UDP port to listen on for RAQMON reports, + running on transport protocols other than SNMP. + If the RAQMON PDU transport protocol is SNMP, + a write operation on this object has no effect, as + the standard port 162 is always used. + The value of this object MUST be persistent across + agent reboots." + ::= { raqmonConfig 1 } + + raqmonConfigPduTransport OBJECT-TYPE + SYNTAX BITS + { + other(0), + tcp(1), + snmp(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The PDU transport(s) used by this collector. + If other(0) is set, the collector supports a + transport other than SNMP or TCP. + If tcp(1) is set, the collector supports TCP as a + transport protocol. + If snmp(2) is set, the collector supports SNMP as a + transport protocol." + ::= { raqmonConfig 2 } + + + raqmonConfigRaqmonPdus OBJECT-TYPE + SYNTAX Counter32 + UNITS "PDUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of RAQMON PDUs received by the Collector." + ::= { raqmonConfig 3 } + + raqmonConfigRDSTimeout OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of seconds since the reception of the + last RAQMON PDU from a RDS after which a session + + + + between the respective RDS and the collector will be + considered terminated. + The value of this object MUST be persistent across + agent reboots." + ::= { raqmonConfig 4 } + + + + + raqmonConformance OBJECT IDENTIFIER ::= { raqmonMIB 2 } + + + raqmonCompliances OBJECT IDENTIFIER ::= { raqmonConformance 1 } + raqmonGroups OBJECT IDENTIFIER ::= { raqmonConformance 2 } + + raqmonCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + RAQMON MIB." + MODULE -- this module + MANDATORY-GROUPS { raqmonCollectorGroup, + raqmonCollectorNotificationsGroup + } + + OBJECT raqmonParticipantAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 addresses need to be supported." + + OBJECT raqmonParticipantAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "Only IPv4 and IPv6 addresses need to be supported." + + OBJECT raqmonParticipantPeerAddrType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + DESCRIPTION + "Only IPv4 and IPv6 addresses need to be supported." + + OBJECT raqmonParticipantPeerAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "Only IPv4 and IPv6 addresses need to be supported." + + ::= { raqmonCompliances 1 } + + + + + + raqmonCollectorGroup OBJECT-GROUP + OBJECTS { + raqmonParticipantReportCaps, + raqmonParticipantAddrType, + raqmonParticipantAddr, + raqmonParticipantSendPort, + raqmonParticipantRecvPort, + raqmonParticipantSetupDelay, + raqmonParticipantName, + raqmonParticipantAppName, + raqmonParticipantQosCount, + raqmonParticipantEndDate, + raqmonParticipantDestPayloadType, + raqmonParticipantSrcPayloadType, + raqmonParticipantActive, + raqmonParticipantPeer, + raqmonParticipantPeerAddrType, + raqmonParticipantPeerAddr, + raqmonParticipantSrcL2Priority, + raqmonParticipantDestL2Priority, + raqmonParticipantSrcDSCP, + raqmonParticipantDestDSCP, + raqmonParticipantCpuMean, + raqmonParticipantCpuMin, + raqmonParticipantCpuMax, + raqmonParticipantMemoryMean, + raqmonParticipantMemoryMin, + raqmonParticipantMemoryMax, + raqmonParticipantNetRTTMean, + raqmonParticipantNetRTTMin, + raqmonParticipantNetRTTMax, + raqmonParticipantIAJitterMean, + raqmonParticipantIAJitterMin, + raqmonParticipantIAJitterMax, + raqmonParticipantIPDVMean, + raqmonParticipantIPDVMin, + raqmonParticipantIPDVMax, + raqmonParticipantNetOwdMean, + raqmonParticipantNetOwdMin, + raqmonParticipantNetOwdMax, + raqmonParticipantAppDelayMean, + raqmonParticipantAppDelayMin, + raqmonParticipantAppDelayMax, + raqmonParticipantPacketsRcvd, + raqmonParticipantPacketsSent, + raqmonParticipantOctetsRcvd, + raqmonParticipantOctetsSent, + raqmonParticipantLostPackets, + + + + raqmonParticipantLostPacketsFrct, + raqmonParticipantDiscards, + raqmonParticipantDiscardsFrct, + raqmonQoSEnd2EndNetDelay, + raqmonQoSInterArrivalJitter, + raqmonQosRcvdPackets, + raqmonQosRcvdOctets, + raqmonQosSentPackets, + raqmonQosSentOctets, + raqmonQosLostPackets, + raqmonQosSessionStatus, + raqmonParticipantAddrEndDate, + raqmonConfigPort, + raqmonSessionExceptionIAJitterThreshold, + raqmonSessionExceptionNetRTTThreshold, + raqmonSessionExceptionLostPacketsThreshold, + raqmonSessionExceptionRowStatus, + raqmonConfigPduTransport, + raqmonConfigRaqmonPdus, + raqmonConfigRDSTimeout} + STATUS current + DESCRIPTION + "Objects used in RAQMON by a collector." + + + ::= { raqmonGroups 1 } + + raqmonCollectorNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { raqmonSessionAlarm } + STATUS current + DESCRIPTION + "Notifications emitted by a RAQMON collector." + ::= { raqmonGroups 2 } + +END diff --git a/mibs/ietf/RDBMS-MIB b/mibs/ietf/RDBMS-MIB new file mode 100644 index 0000000..10b66cd --- /dev/null +++ b/mibs/ietf/RDBMS-MIB @@ -0,0 +1,1398 @@ +RDBMS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + OBJECT-IDENTITY, Counter32, Gauge32, Integer32 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + DisplayString, DateAndTime, AutonomousType + FROM SNMPv2-TC + applIndex, applGroups + FROM NETWORK-SERVICES-MIB + mib-2 + FROM RFC1213-MIB; + +rdbmsMIB MODULE-IDENTITY + LAST-UPDATED "9406150655Z" + ORGANIZATION "IETF RDBMSMIB Working Group" + CONTACT-INFO + " David Brower + + Postal: The ASK Group, INGRES DBMS Development + 1080 Marina Village Parkway + Alameda, CA 94501 + US + + Tel: +1 510 748 3418 + Fax: +1 510 748 2770 + + E-mail: daveb@ingres.com" + DESCRIPTION + "The MIB module to describe objects for generic relational + databases." + + ::= { mib-2 39 } + +rdbmsObjects OBJECT IDENTIFIER ::= { rdbmsMIB 1 } + +---------------------------------------------------------------- + +rdbmsDbTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsDbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of databases installed on a system." + ::= { rdbmsObjects 1 } + +rdbmsDbEntry OBJECT-TYPE + SYNTAX RdbmsDbEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single database on the host. Whether a + particular database is represented by a row in rdbmsDbTable + may be dependent on the activity level of that database, + according to the product's implementation. An instance of + rdbmsRelState having the value active, other, or restricted + implies that an entry, corresponding to that instance, will + be present." + INDEX { rdbmsDbIndex } + ::= { rdbmsDbTable 1 } + +RdbmsDbEntry ::= + SEQUENCE { + rdbmsDbIndex INTEGER, + rdbmsDbPrivateMibOID OBJECT IDENTIFIER, + rdbmsDbVendorName DisplayString, + rdbmsDbName DisplayString, + rdbmsDbContact DisplayString + } + +rdbmsDbIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A numeric index, unique among all the databases from all + products on this host. This value is a surrogate for the + conceptually unique key, which is {PrivateMibOID, + databasename}" + ::= { rdbmsDbEntry 1 } + +rdbmsDbPrivateMibOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The authoritative identification for the private MIB for + this database, presumably based on the vendor, e.g., { + enterprises 111 } for Oracle + databases, {enterprises 757 } for + Ingres databases, { enterprises 897 } for Sybase databases, etc. + + If no OBJECT IDENTIFIER exists for the private MIB, attempts + to access this object will return noSuchName (SNMPv1) + or noSuchInstance (SNMPv2)." + ::= { rdbmsDbEntry 2 } + +rdbmsDbVendorName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the vendor whose RDBMS manages this database, + for informational purposes." + ::= { rdbmsDbEntry 3 } + +rdbmsDbName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this database, in a product specific format. The + product may need to qualify the name in some way to resolve + conflicts if it is possible for a database name to be + duplicated on a host. It might be necessary to construct a + hierarchical name embedding the RDBMS instance/installation + on the host, and/or the owner of the database. For instance, + '/test-installation/database-owner/database-name'." + ::= { rdbmsDbEntry 4 } + +rdbmsDbContact OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual identification of the contact person for this + managed database, together with information on how to contact + this person. + + Note: if there is no server associated with this database, an + agent may need to keep this in other persistent storage, + e.g., a configuration file. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbEntry 5 } + +---------------------------------------------------------------- + +rdbmsDbInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsDbInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of additional information about databases present + on the host." + ::= { rdbmsObjects 2 } + +rdbmsDbInfoEntry OBJECT-TYPE + SYNTAX RdbmsDbInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information that must be present if the database is actively + opened. If the database is not actively opened, then + attempts to access corresponding instances in this table may + result in either noSuchName (SNMPv1) or noSuchInstance + (SNMPv2). 'Actively opened' means at least one of the + rdbmsRelState entries for this database in the rdbmsRelTable + is active(2)." + INDEX { rdbmsDbIndex } + ::= { rdbmsDbInfoTable 1 } + +RdbmsDbInfoEntry ::= + SEQUENCE { + rdbmsDbInfoProductName DisplayString, + rdbmsDbInfoVersion DisplayString, + rdbmsDbInfoSizeUnits INTEGER, + rdbmsDbInfoSizeAllocated INTEGER, + rdbmsDbInfoSizeUsed INTEGER, + rdbmsDbInfoLastBackup DateAndTime + } + +rdbmsDbInfoProductName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual product name of the server that created or last + restructured this database. The format is product specific." + ::= { rdbmsDbInfoEntry 1 } + +rdbmsDbInfoVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the server that created or last + restructured this database. The format is product specific." + ::= { rdbmsDbInfoEntry 2 } + +rdbmsDbInfoSizeUnits OBJECT-TYPE + SYNTAX INTEGER { + bytes(1), + kbytes(2), + mbytes(3), + gbytes(4), + tbytes(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of the units used to measure the size of this + database in rdbmsDbInfoSizeAllocated and rdbmsDbInfoSizeUsed. + bytes(1) indicates individual bytes, kbytes(2) indicates + units of kilobytes, mbytes(3) indicates units of megabytes, + gbytes(4) indicates units of gigabytes, and tbytes(5) + indicates units of terabytes. All are binary multiples -- 1K + = 1024. If writable, changes here are reflected in the get + values of the associated objects." + + ::= { rdbmsDbInfoEntry 3 } + +rdbmsDbInfoSizeAllocated OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The estimated size of this database (in + rdbmsDbInfoSizeUnits), which is the disk space that has been + allocated to it and is no longer available to users on this + host. rdbmsDbInfoSize does not necessarily indicate the + amount of space actually in use for database data. Some + databases may support extending allocated size, and others + may not. + + Note that a compliant agent does not need to + allow write access to this object." + +-- Note: computing SizeAllocated may be expensive, and SNMP +-- agents might cache the value to increase performance. + + ::= { rdbmsDbInfoEntry 4 } + +rdbmsDbInfoSizeUsed OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The estimated size of this database, in rdbmsDbInfoSizeUnits, + which is actually in use for database data." + +-- Note: computing SizeUsed may be expensive, and SNMP +-- agents might cache the value to increase performance. + ::= { rdbmsDbInfoEntry 5 } + +rdbmsDbInfoLastBackup OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that the latest complete or partial backup + of the database was taken. If a database has never been + backed up, then attempts to access this object will + result in either noSuchName (SNMPv1) or noSuchInstance + (SNMPv2)." + ::= { rdbmsDbInfoEntry 6 } + +---------------------------------------------------------------- + +rdbmsDbParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsDbParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of configuration parameters for a database. + Entries should be populated according to the following + guidelines: + (1) The value should be specified through administrative + (human) intervention. + (2) It should be configured on a per-database basis. + (3) One of the following is true: + (a) The parameter has a non-numeric value; + (b) The current value is numeric, but it only changes due + to human intervention; + (c) The current value is numeric and dynamic, but the + RDBMS does not track access/allocation failures + related to the parameter; + (d) The current value is numeric and dynamic, the + RDBMS tracks changes in access/allocation failures + related to the parameter, but the failure has no + significant impact on RDBMS performance or + availability. + (e) The current value is numeric and dynamic, the + RDBMS tracks changes in access/allocation failures + related to the parameter, the failure has + significant impact on RDBMS performance or + availability, and is shown in the + rdbmsDbLimitedResource table." + ::= { rdbmsObjects 3 } + +rdbmsDbParamEntry OBJECT-TYPE + SYNTAX RdbmsDbParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single configuration parameter for a database. + Parameters with single values have a subindex value of one. + If the parameter is naturally considered to contain a + variable number of members of a class, e.g. members of the + DBA user group, or files which are part of the database, then + it must be presented as a set of rows. If, on the other + hand, the parameter represents a set of choices from a class, + e.g. the permissions on a file or the options chosen out of + the set of all options allowed, AND is guaranteed to always + fit in the 255 character length of a DisplayString, then it + may be presented as a comma separated list with a subindex + value of one. Zero may not be used as a subindex value. + + If the database is not actively opened, then attempts + to access corresponding instances in this table may result in + either noSuchName (SNMPv1) or noSuchInstance (SNMPv2). + 'Actively opened' means at least one of the + rdbmsRelState entries for this database in the rdbmsRelTable + is active(2)." + INDEX { rdbmsDbIndex, rdbmsDbParamName, rdbmsDbParamSubIndex } + ::= { rdbmsDbParamTable 1 } + +RdbmsDbParamEntry ::= + SEQUENCE { + rdbmsDbParamName DisplayString, + rdbmsDbParamSubIndex INTEGER, + rdbmsDbParamID AutonomousType, + rdbmsDbParamCurrValue DisplayString, + rdbmsDbParamComment DisplayString + } + +rdbmsDbParamName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a configuration parameter for a database. This + name is product-specific. The length is limited to 64 + characters to constrain the number of sub-identifiers needed + for instance identification (and to minimize network + traffic)." + + ::= { rdbmsDbParamEntry 1 } + +rdbmsDbParamSubIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The subindex value for this parameter. If the parameter is + naturally considered to contain a variable number of members + of a class, e.g. members of the DBA user group, or files + which are part of the database, then it must be presented as + a set of rows. If, on the other hand, the parameter + represents a set of choices from a class, e.g. the + permissions on a file or the options chosen out of the set of + all options allowed, AND is guaranteed to always fit in the + 255 character length of a DisplayString, then it may be + presented as a comma separated list with a subindex value of + one. Zero may not be used as a value." + ::= { rdbmsDbParamEntry 2 } + +rdbmsDbParamID OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the parameter which may be described in some other + MIB (e.g., an enterprise-specific MIB module). If there is + no ID for this rdbmsDbParamName, attempts to access this + object will return noSuchName (SNMPv1) or noSuchInstance + (SNMPv2)." + ::= { rdbmsDbParamEntry 3 } + +rdbmsDbParamCurrValue OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value for a configuration parameter now in effect, the + actual setting for the database. While there may multiple + values in the temporal domain of interest (for instance, the + value to take effect at the next restart), this is the + current setting. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbParamEntry 4 } + +rdbmsDbParamComment OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Annotation which describes the purpose of a configuration + parameter or the reason for a particular parameter's + setting. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbParamEntry 5 } + +---------------------------------------------------------------- + +rdbmsDbLimitedResourceTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsDbLimitedResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of limited resources that are kept per-database." + ::= { rdbmsObjects 4 } + +rdbmsDbLimitedResourceEntry OBJECT-TYPE + SYNTAX RdbmsDbLimitedResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single limited resource kept per-database. + A limited resource has maximum use determined by a parameter + that might or might not be changeable at run time, or visible + in the rdbmsDbParamTable. Examples would be the number of + available locks, or disk space on a partition. Arrays of + resources are supported through an integer sub index, which + should have the value of one for single-instance names. + + Limited resources that are shared across databases, are best + put in the rdbmsSvrLimitedResourceTable instead of this one. + If the database is not actively opened, then attempts to + access corresponding instances in this table may result in + either noSuchName (SNMPv1) or noSuchInstance (SNMPv2). + 'Actively opened' means at least one of the rdbmsRelState + entries for this database in the rdbmsRelTable is active(2)." + + INDEX { rdbmsDbIndex, rdbmsDbLimitedResourceName } + ::= { rdbmsDbLimitedResourceTable 1 } + +RdbmsDbLimitedResourceEntry ::= + SEQUENCE { + rdbmsDbLimitedResourceName DisplayString, + rdbmsDbLimitedResourceID AutonomousType, + rdbmsDbLimitedResourceLimit INTEGER, + rdbmsDbLimitedResourceCurrent INTEGER, + rdbmsDbLimitedResourceHighwater INTEGER, + rdbmsDbLimitedResourceFailures Counter32, + rdbmsDbLimitedResourceDescription DisplayString + } + +rdbmsDbLimitedResourceName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the resource, for instance 'global locks' or + 'locks for the FOO database', or 'data space on /dev/rdsk/5s0 + for FOO'. The length is limited to 64 characters to constrain + the number of sub-identifiers needed for instance + identification (and to minimize network traffic)." + ::= { rdbmsDbLimitedResourceEntry 1 } + +rdbmsDbLimitedResourceID OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the resource which may be described in some other + MIB (e.g., an enterprise-specific MIB module). If there is + no ID for this rdbmsDbLimitedResourceName, attempts to access + this object will return noSuchName (SNMPv1) or noSuchInstance + (SNMPv2)." + ::= { rdbmsDbLimitedResourceEntry 2 } + +rdbmsDbLimitedResourceLimit OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum value the resource use may attain. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbLimitedResourceEntry 3 } + +rdbmsDbLimitedResourceCurrent OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value for the resource." + ::= { rdbmsDbLimitedResourceEntry 4 } + +rdbmsDbLimitedResourceHighwater OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the resource seen since applUpTime + was reset for the earliest server which has the database + actively opened. + + If there are two servers with the database open, and the + oldest one dies, the proper way to invalidate the value is by + resetting sysUpTime." + ::= { rdbmsDbLimitedResourceEntry 5 } + +rdbmsDbLimitedResourceFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the system wanted to exceed the limit of + the resource since applUpTime was reset for the earliest + server which has the database actively opened. + + If there are two servers with the DB open, and the + oldest one dies, the proper way to invalidate the value is by + resetting sysUpTime." + ::= { rdbmsDbLimitedResourceEntry 6 } + +rdbmsDbLimitedResourceDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A description of the resource and the meaning of the integer + units used for Limit, Current, and Highwater. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsDbLimitedResourceEntry 7 } + +---------------------------------------------------------------- + +rdbmsSrvTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsSrvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of database servers running or installed + on a system." + ::= { rdbmsObjects 5 } + +rdbmsSrvEntry OBJECT-TYPE + SYNTAX RdbmsSrvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single database server. A server is an + independent entity that provides access to one or more + databases. Failure of one does not affect access to + databases through any other servers. There might be one or + more servers providing access to a database. A server may be + a 'process' or collection of 'processes', as interpreted by + the product." + INDEX { applIndex } + ::= { rdbmsSrvTable 1 } + +RdbmsSrvEntry ::= + SEQUENCE { + rdbmsSrvPrivateMibOID OBJECT IDENTIFIER, + rdbmsSrvVendorName DisplayString, + rdbmsSrvProductName DisplayString, + rdbmsSrvContact DisplayString + } + +rdbmsSrvPrivateMibOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The authoritative identification for the private MIB for this + server, presumably based on the vendor, e.g., { enterprises + 111 } for Oracle servers, { + enterprises 757 } for Ingres + servers, { enterprises 897 } for + Sybase servers, etc. + + If no OBJECT IDENTIFIER exists for the private MIB, attempts + to access this object will return noSuchName (SNMPv1) + or noSuchInstance (SNMPv2)." + ::= { rdbmsSrvEntry 1 } + +rdbmsSrvVendorName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the vendor whose RDBMS manages this database, + for informational purposes." + ::= { rdbmsSrvEntry 2 } + +rdbmsSrvProductName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product name of this server. This is normally the + vendor's formal name for the product, in product specific + format." + ::= { rdbmsSrvEntry 3 } + +rdbmsSrvContact OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual identification of the contact person for this + managed server, together with information on how to contact + this person. + + Note: if there is no active server associated with this + object, an agent may need to keep this in other persistent + storage, e.g., a configuration file. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvEntry 4 } + +---------------------------------------------------------------- + +rdbmsSrvInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsSrvInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of additional information about database servers. + + Entries in this table correspond to applications in the + NETWORK-SERVICES-MIB applTable. Some objects in that table are + application-specific. When they are associated with an RDBMS + server in this table, the objects have the following + meanings. + + applName - The name of this server, i.e., the process or + group of processes providing access to this database. The + exact format will be product and host specific. + + applVersion - The version number of this server, in product + specific format. + + applOperStatus - up(1) means operational and available for + general use. down(2) means the server is not available for + use, but is known to the agent. The other states have broad + meaning, and may need to be supplemented by the vendor + private MIB. Halted(3) implies an administrative state of + unavailability. Congested(4) implies a resource or or + administrative limit is prohibiting new inbound associations. + The 'available soon' description of restarting(5) may include + an indeterminate amount of recovery. + + applLastChange is the time the agent noticed the most recent + change to applOperStatus. + + applInboundAssociation is the number of currently active + local and remote conversations (usually SQL connects). + + applOutboundAssociations is not provided by this MIB. + + applAccumulatedInboundAssociations is the total number of + local and remote conversations started since the server came + up. + + applAccumulatedOutbound associations is not provided by this + MIB. + + applLastInboundActivity is the time the most recent local or + remote conversation was attempted or disconnected. + + applLastOutboundActivity is not provided by this MIB. + + applRejectedInboundAssociations is the number of local or + remote conversations rejected by the server for + administrative reasons or because of resource limitations. + + applFailedOutboundAssociations is not provided by this MIB." + + ::= { rdbmsObjects 6 } + +rdbmsSrvInfoEntry OBJECT-TYPE + SYNTAX RdbmsSrvInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information that must be present for a single 'up' database + server, with visibility determined by the value of the + corresponding applOperStatus object. If an instance of + applOperStatus is not up(1), then attempts to access + corresponding instances in this table may result in either + noSuchName (SNMPv1) or noSuchInstance (SNMPv2) being returned + by the agent." + INDEX { applIndex } + ::= { rdbmsSrvInfoTable 1 } + +RdbmsSrvInfoEntry ::= + SEQUENCE { + rdbmsSrvInfoStartupTime DateAndTime, + rdbmsSrvInfoFinishedTransactions Gauge32, + rdbmsSrvInfoDiskReads Counter32, + rdbmsSrvInfoDiskWrites Counter32, + rdbmsSrvInfoLogicalReads Counter32, + rdbmsSrvInfoLogicalWrites Counter32, + rdbmsSrvInfoPageWrites Counter32, + rdbmsSrvInfoPageReads Counter32, + rdbmsSrvInfoDiskOutOfSpaces Counter32, + rdbmsSrvInfoHandledRequests Counter32, + rdbmsSrvInfoRequestRecvs Counter32, + rdbmsSrvInfoRequestSends Counter32, + rdbmsSrvInfoHighwaterInboundAssociations Gauge32, + rdbmsSrvInfoMaxInboundAssociations Gauge32 + } + +rdbmsSrvInfoStartupTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time at which this server was last started." + ::= { rdbmsSrvInfoEntry 1 } + +rdbmsSrvInfoFinishedTransactions OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transactions visible to this server that have + been completed by either commit or abort. Some database + operations, such as read-only queries, may not result in the + creation of a transaction." + ::= { rdbmsSrvInfoEntry 2 } + +rdbmsSrvInfoDiskReads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of reads of database files issued to the + operating system by this server since startup. Numbers are + not comparable between products. What constitutes a + readand how it is accounted is product-specific." + ::= { rdbmsSrvInfoEntry 3 } + +rdbmsSrvInfoLogicalReads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of logical reads of database files made + internally by this server since startup. The values of this + object and those of rdbmsSrvInfoDiskReads reveal the effect + of caching on read operation. Numbers are not comparable + between products, and may only be meaningful when aggregated + across all servers sharing a common cache." + ::= { rdbmsSrvInfoEntry 4 } + +rdbmsSrvInfoDiskWrites OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of writes to database files issued to the + operating system by this server since startup. Numbers are + not comparable between products." + ::= { rdbmsSrvInfoEntry 5 } + +rdbmsSrvInfoLogicalWrites OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times parts of the database files have + been marked 'dirty' and in need of writing to the disk. This + value and rdbmsSrvInfoDiskWrites give some indication of the + effect of 'write-behind' strategies in reducing the number of + disk writes compared to database operations. Because the + writes may be done by servers other than those marking the + parts of the database files dirty, these values may only be + meaningful when aggregated across all servers sharing a + common cache. Numbers are not comparable between products." + ::= { rdbmsSrvInfoEntry 6 } + +rdbmsSrvInfoPageReads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of pages in database files read by this + server since startup. 'Pages' are product specific units of + disk i/o operations. This value, along with + rdbmsSrvInfoDiskReads, reveals the effect of any grouping + read-ahead that may be used to enhance performance of some + queries, such as scans." + ::= { rdbmsSrvInfoEntry 7} + +rdbmsSrvInfoPageWrites OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of pages in database files written by this + server since startup. Pages are product-specific units of + disk I/O. This value, with rdbmsSrvInfoDiskWrites, shows the + effect of write strategies that collapse logical writes of + contiguous pages into single calls to the operating system." + ::= { rdbmsSrvInfoEntry 8 } + +rdbmsSrvInfoDiskOutOfSpaces OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times the server has been unable to + obtain disk space that it wanted, since server startup. This + would be inspected by an agent on receipt of an + rdbmsOutOfSpace trap." + ::= { rdbmsSrvInfoEntry 9 } + +rdbmsSrvInfoHandledRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of requests made to the server on inbound + associations. The meaning of 'requests' is product specific, + and is not comparable between products. + + This is intended to encapsulate high level semantic + operations between clients and servers, or between peers. + For instance, one request might correspond to a 'select' or + an 'insert' statement. It is not intended to capture disk + i/o described in rdbmsSrvInfoDiskReads and + rdbmsSrvInfoDiskWrites." + ::= { rdbmsSrvInfoEntry 10 } + +rdbmsSrvInfoRequestRecvs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of receive operations made processing any requests + on inbound associations. The meaning of operations is product + specific, and is not comparable between products. + + This is intended to capture lower-level i/o operations than + shown by HandledRequests, between clients and servers, or + between peers. For instance, it might roughly correspond to + the amount of data given with an 'insert' statement. It is + not intended to capture disk i/o described in + rdbmsSrvInfoDiskReads and rdbmsSrvInfoDiskWrites." + ::= { rdbmsSrvInfoEntry 11 } + +rdbmsSrvInfoRequestSends OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of send operations made processing requests + handled on inbound associations. The meaning of operations + is product specific, and is not comparable between products. + This is intended to capture lower-level i/o operations than + shown by HandledRequests, between between clients and + servers, or between peers. It might roughly correspond to + the number of rows returned by a 'select' statement. It is + not intended to capture disk i/o described in DiskReads." + ::= { rdbmsSrvInfoEntry 12 } + +rdbmsSrvInfoHighwaterInboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The greatest number of inbound associations that have been + simultaneously open to this server since startup." + ::= { rdbmsSrvInfoEntry 13 } + +rdbmsSrvInfoMaxInboundAssociations OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The greatest number of inbound associations that can be + simultaneously open with this server. If there is no limit, + then the value should be zero. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvInfoEntry 14 } + +---------------------------------------------------------------- + +rdbmsSrvParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsSrvParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of configuration parameters for a server. Entries + should be populated according to the following guidelines: + (1) The value should be specified through administrative + (human) intervention. + (2) It should be configured on a per-server or a more global + basis, with duplicate entries for each server sharing + use of the parameter. + (3) One of the following is true: + (a) The parameter has a non-numeric value; + (b) The current value is numeric, but it only changes due + to human intervention; + (c) The current value is numeric and dynamic, but the + RDBMS does not track access/allocation failures + related to the parameter; + (d) The current value is numeric and dynamic, the + RDBMS tracks changes in access/allocation failures + related to the parameter, but the failure has no + significant impact on RDBMS performance or + availability. + (e) The current value is numeric and dynamic, the + RDBMS tracks changes in access/allocation failures + related to the parameter, the failure has + significant impact on RDBMS performance or + availability, and is shown in the + rdbmsSrvLimitedResource table." + ::= { rdbmsObjects 7 } + +rdbmsSrvParamEntry OBJECT-TYPE + SYNTAX RdbmsSrvParamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single configuration parameter for a server. + Parameters with single values have a subindex value of one. + If the parameter is naturally considered to contain a + variable number of members of a class, e.g. members of the + DBA user group, or tracepoints active in the server, then it + must be presented as a set of rows. If, on the other hand, + the parameter represents a set of choices from a class, + e.g. the permissions on a file or the options chosen out of + the set of all options allowed, AND is guaranteed to always + fit in the 255 character length of a DisplayString, then it + may be presented as a comma separated list with a subindex + value of one. Zero may not be used as a subindex value. + + Entries for a server must be present if the value of the + corresponding applOperStatus object is up(1). If an instance + of applOperStatus is not up(1), then attempts to access + corresponding instances in this table may result in either + noSuchName (SNMPv1) or noSuchInstance (SNMPv2) being returned + by the agent." + INDEX { applIndex, rdbmsSrvParamName, rdbmsSrvParamSubIndex } + ::= { rdbmsSrvParamTable 1 } + +RdbmsSrvParamEntry ::= + SEQUENCE { + rdbmsSrvParamName DisplayString, + rdbmsSrvParamSubIndex INTEGER, + rdbmsSrvParamID AutonomousType, + rdbmsSrvParamCurrValue DisplayString, + rdbmsSrvParamComment DisplayString + } + +rdbmsSrvParamName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..64)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a configuration parameter for a server. This + name is product-specific. The length is limited to 64 + characters to constrain the number of sub-identifiers needed + for instance identification (and to minimize network + traffic)." + ::= { rdbmsSrvParamEntry 1 } + +rdbmsSrvParamSubIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The subindex value for this parameter. If the parameter is + naturally considered to contain a variable number of members + of a class, e.g. members of the DBA user group, or files + which are part of the database, then it must be presented as + a set of rows. If, on the other hand, the parameter + represents a set of choices from a class, e.g. the + permissions on a file or the options chosen out of the set of + all options allowed, AND is guaranteed to always fit in the + 255 character length of a DisplayString, then it may be + presented as a comma separated list with a subindex value of + one. Zero may not be used as a value." + ::= { rdbmsSrvParamEntry 2 } + +rdbmsSrvParamID OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the parameter which may be described in some + other MIB. If there is no ID for this rdbmsSrvParamName, + attempts to access this object will return noSuchName + (SNMPv1) or noSuchInstance (SNMPv2)." + ::= { rdbmsSrvParamEntry 3 } + +rdbmsSrvParamCurrValue OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value for a configuration parameter now in effect, the + actual setting for the server. While there may multiple + values in the temporal domain of interest (for instance, the + value to take effect at the next restart), this is the + current setting. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvParamEntry 4 } + +rdbmsSrvParamComment OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Annotation which describes the purpose of a configuration + parameter or the reason for a particular parameter's + setting. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvParamEntry 5 } + +---------------------------------------------------------------- + +rdbmsSrvLimitedResourceTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsSrvLimitedResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of limited resources relevant to a server." + ::= { rdbmsObjects 8 } + +rdbmsSrvLimitedResourceEntry OBJECT-TYPE + SYNTAX RdbmsSrvLimitedResourceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a single limited resource kept by the server. + A limited resource has maximum use determined by a parameter + that might or might not changeable at run time, or visible in + the rbmsSrvParamTable. Examples would be the number of + available locks, or number of concurrent executions allowed + in a server. Arrays of resources are supported through an + integer subindex, which should have the value of one for + single-instance names. + + Limited resources that are shared across servers or databases + are best duplicated in this table across + all servers accessing the resource." + INDEX { applIndex, rdbmsSrvLimitedResourceName } + ::= { rdbmsSrvLimitedResourceTable 1 } + +RdbmsSrvLimitedResourceEntry ::= + SEQUENCE { + rdbmsSrvLimitedResourceName DisplayString, + rdbmsSrvLimitedResourceID AutonomousType, + rdbmsSrvLimitedResourceLimit INTEGER, + rdbmsSrvLimitedResourceCurrent INTEGER, + rdbmsSrvLimitedResourceHighwater INTEGER, + rdbmsSrvLimitedResourceFailures Counter32, + rdbmsSrvLimitedResourceDescription DisplayString + } + +rdbmsSrvLimitedResourceName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the resource, for instance 'threads' or + 'semaphores', or 'buffer pages'" + ::= { rdbmsSrvLimitedResourceEntry 1 } + +rdbmsSrvLimitedResourceID OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ID of the resource which may be described in some other + MIB. If there is no ID for this rdbmsSrvLimitedResourceName, + attempts to access this object will return noSuchName + (SNMPv1) or noSuchInstance (SNMPv2)." + ::= { rdbmsSrvLimitedResourceEntry 2 } + +rdbmsSrvLimitedResourceLimit OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum value the resource use may attain. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvLimitedResourceEntry 3 } + +rdbmsSrvLimitedResourceCurrent OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value for the resource." + ::= { rdbmsSrvLimitedResourceEntry 4 } + +rdbmsSrvLimitedResourceHighwater OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the resource seen since applUpTime + was reset." + ::= { rdbmsSrvLimitedResourceEntry 5 } + +rdbmsSrvLimitedResourceFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the system wanted to exceed the limit of + the resource since applUpTime was reset." + ::= { rdbmsSrvLimitedResourceEntry 6 } + +rdbmsSrvLimitedResourceDescription OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A description of the resource and the meaning of the integer + units used for Limit, Current, and Highwater. + + Note that a compliant agent does not need to + allow write access to this object." + + ::= { rdbmsSrvLimitedResourceEntry 7 } + +---------------------------------------------------------------- + +rdbmsRelTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdbmsRelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table relating databases and servers present on a host." + ::= { rdbmsObjects 9 } + +rdbmsRelEntry OBJECT-TYPE + SYNTAX RdbmsRelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry relating a single database server to a single + database to which it may provide access. The table is + indexed first by the index of rdbmsDbTable, and then + rdbmsSrvTable, so that all servers capable of providing + access to a given database may be found by SNMP traversal + operations (get-next and get-bulk). The makeup of this table + depends on the product's architecture, e.g. if it is one + server - many databases, then each server will appear n + times, where n is the number of databases it may access, and + each database will appear once. If the architecture is one + database - many servers, then each server will appear once + and each database will appear n times, where n is the number + of servers that may be accessing it." + INDEX { rdbmsDbIndex, applIndex } + ::= { rdbmsRelTable 1 } + +RdbmsRelEntry ::= + SEQUENCE { + rdbmsRelState INTEGER, + rdbmsRelActiveTime DateAndTime + } + +rdbmsRelState OBJECT-TYPE + SYNTAX INTEGER{ + other(1), + active(2), + available(3), + restricted(4), + unavailable(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of this server's access to this database. + Active(2) means the server is actively using the database. + Available(3) means the server could use the database if + necessary. Restricted(4) means the database is in some + administratively determined state of less-than-complete + availability. Unavailable(5) means the database is not + available through this server. Other(1) means the + database/server is in some other condition, possibly + described in the vendor private MIB." + + ::= { rdbmsRelEntry 1 } + +rdbmsRelActiveTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time the database was made active by the server. If an + instance of rdbmsRelState is not active(1), then attempts to + access the corresponding instance of this object may result + in either noSuchName (SNMPv1) or noSuchInstance (SNMPv2) + being returned by the agent." + ::= { rdbmsRelEntry 2 } + +---------------------------------------------------------------- + +-- Well known resources for which limits, high water marks, +-- access or allocation failures, and current levels of use +-- are possibly available in either the rdbmsDbLimitedResources +-- or the rdbmsSrvLimitedResources tables. + +rdbmsWellKnownLimitedResources OBJECT IDENTIFIER + ::= { rdbmsObjects 10 } + +rdbmsLogSpace OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Storage allocated for redo and undo logs." + ::= { rdbmsWellKnownLimitedResources 1} + +---------------------------------------------------------------- + +rdbmsTraps OBJECT IDENTIFIER ::= { rdbmsMIB 2 } + +rdbmsStateChange NOTIFICATION-TYPE + OBJECTS { rdbmsRelState } + STATUS current + DESCRIPTION + "An rdbmsStateChange trap signifies that one of the database + server/databases managed by this agent has changed its + rdbmsRelState in a way that makes it less accessible for use. + For these purposes, both active(2) and available(3) are + considered fully accessible. The state sent with the trap is + the new, less accessible state." + ::= { rdbmsTraps 1 } + +rdbmsOutOfSpace NOTIFICATION-TYPE + OBJECTS { rdbmsSrvInfoDiskOutOfSpaces } + STATUS current + DESCRIPTION + "An rdbmsOutOfSpace trap signifies that one of the database + servers managed by this agent has been unable to allocate + space for one of the databases managed by this agent. Care + should be taken to avoid flooding the network with these + traps." + ::= { rdbmsTraps 2 } + +---------------------------------------------------------------- + +-- compliance information + +rdbmsConformance OBJECT IDENTIFIER ::= { rdbmsMIB 3 } +rdbmsCompliances OBJECT IDENTIFIER ::= { rdbmsConformance 1 } +rdbmsGroups OBJECT IDENTIFIER ::= { rdbmsConformance 2 } + +-- compliance statements + +rdbmsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + implement the RDBMS MIB" + MODULE HOST-RESOURCES-MIB + MANDATORY-GROUPS { hrSystem } + MODULE NETWORK-SERVICES-MIB + MANDATORY-GROUPS { applGroups } + MODULE RDBMS-MIB + MANDATORY-GROUPS { rdbmsGroup } + + GROUP rdbmsGroup + DESCRIPTION + "The rdbmsGroup is mandatory, but no write access + to objects is required for compliance." + OBJECT rdbmsDbContact + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsDbParamCurrValue + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsDbParamComment + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsDbLimitedResourceLimit + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsDbLimitedResourceDescription + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvContact + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvInfoMaxInboundAssociations + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvParamCurrValue + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvParamComment + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvLimitedResourceLimit + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + OBJECT rdbmsSrvLimitedResourceDescription + MIN-ACCESS read-only + DESCRIPTION + "A compliant system need not allow write-access to this + object." + + ::= { rdbmsCompliances 1 } + +-- units of conformance + + -- rdbmsStateChange and rdbmsOutOfSpace traps are omitted + -- intentionally. They are not required or part of any + -- conformance group. + +rdbmsGroup OBJECT-GROUP + OBJECTS { + rdbmsDbPrivateMibOID, rdbmsDbVendorName, + rdbmsDbName, rdbmsDbContact, + + rdbmsDbInfoProductName, rdbmsDbInfoVersion, + rdbmsDbInfoSizeUnits, rdbmsDbInfoSizeAllocated, + rdbmsDbInfoSizeUsed, rdbmsDbInfoLastBackup, + + rdbmsDbParamCurrValue, rdbmsDbParamComment, + + rdbmsDbLimitedResourceLimit, + rdbmsDbLimitedResourceCurrent, + rdbmsDbLimitedResourceHighwater, + rdbmsDbLimitedResourceFailures, + rdbmsDbLimitedResourceDescription, + + rdbmsSrvPrivateMibOID, rdbmsSrvVendorName, + rdbmsSrvProductName, rdbmsSrvContact, + + rdbmsSrvInfoStartupTime, + rdbmsSrvInfoFinishedTransactions, + rdbmsSrvInfoDiskReads, rdbmsSrvInfoDiskWrites, + rdbmsSrvInfoLogicalReads, rdbmsSrvInfoLogicalWrites, + rdbmsSrvInfoPageReads, rdbmsSrvInfoPageWrites, + rdbmsSrvInfoHandledRequests, + rdbmsSrvInfoRequestRecvs, rdbmsSrvInfoRequestSends, + rdbmsSrvInfoHighwaterInboundAssociations, + rdbmsSrvInfoMaxInboundAssociations, + + rdbmsSrvParamCurrValue, rdbmsSrvParamComment, + + rdbmsSrvLimitedResourceLimit, + rdbmsSrvLimitedResourceCurrent, + rdbmsSrvLimitedResourceHighwater, + rdbmsSrvLimitedResourceFailures, + rdbmsSrvLimitedResourceDescription, + + rdbmsRelState, rdbmsRelActiveTime } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation of an + RDBMS entity." + ::= { rdbmsGroups 1 } + +---------------------------------------------------------------- + +END diff --git a/mibs/ietf/RFC-1212 b/mibs/ietf/RFC-1212 new file mode 100644 index 0000000..4b1bdcf --- /dev/null +++ b/mibs/ietf/RFC-1212 @@ -0,0 +1,75 @@ +RFC-1212 DEFINITIONS ::= BEGIN + + IMPORTS + ObjectName + FROM RFC1155-SMI; +-- DisplayString +-- FROM RFC1158-MIB; + + OBJECT-TYPE MACRO ::= + BEGIN + TYPE NOTATION ::= + -- must conform to + -- RFC1155's ObjectSyntax + "SYNTAX" type(ObjectSyntax) + "ACCESS" Access + "STATUS" Status + DescrPart + ReferPart + IndexPart + DefValPart + VALUE NOTATION ::= value (VALUE ObjectName) + + Access ::= "read-only" + | "read-write" + | "write-only" + | "not-accessible" + Status ::= "mandatory" + | "optional" + | "obsolete" + | "deprecated" + + DescrPart ::= + "DESCRIPTION" value (description DisplayString) + | empty + + ReferPart ::= + "REFERENCE" value (reference DisplayString) + | empty + + IndexPart ::= + "INDEX" "{" IndexTypes "}" + | empty + IndexTypes ::= + IndexType | IndexTypes "," IndexType + IndexType ::= + -- if indexobject, use the SYNTAX + -- value of the correspondent + -- OBJECT-TYPE invocation + value (indexobject ObjectName) + -- otherwise use named SMI type + -- must conform to IndexSyntax below + | type (indextype) + + DefValPart ::= + "DEFVAL" "{" value (defvalue ObjectSyntax) "}" + | empty + + END + + IndexSyntax ::= + CHOICE { + number + INTEGER (0..MAX), + string + OCTET STRING, + object + OBJECT IDENTIFIER, + address + NetworkAddress, + ipAddress + IpAddress + } + +END + diff --git a/mibs/ietf/RFC-1215 b/mibs/ietf/RFC-1215 new file mode 100644 index 0000000..3cdcfdf --- /dev/null +++ b/mibs/ietf/RFC-1215 @@ -0,0 +1,34 @@ +RFC-1215 DEFINITIONS ::= BEGIN + + IMPORTS + ObjectName + FROM RFC1155-SMI; + + TRAP-TYPE MACRO ::= + BEGIN + TYPE NOTATION ::= "ENTERPRISE" value + (enterprise OBJECT IDENTIFIER) + VarPart + DescrPart + ReferPart + VALUE NOTATION ::= value (VALUE INTEGER) + + VarPart ::= + "VARIABLES" "{" VarTypes "}" + | empty + VarTypes ::= + VarType | VarTypes "," VarType + VarType ::= + value (vartype ObjectName) + + DescrPart ::= + "DESCRIPTION" value (description DisplayString) + | empty + + ReferPart ::= + "REFERENCE" value (reference DisplayString) + | empty + + END + +END diff --git a/mibs/ietf/RFC1065-SMI b/mibs/ietf/RFC1065-SMI new file mode 100644 index 0000000..40e55d7 --- /dev/null +++ b/mibs/ietf/RFC1065-SMI @@ -0,0 +1,132 @@ +RFC1065-SMI DEFINITIONS ::= BEGIN + +EXPORTS -- EVERYTHING + internet, directory, mgmt, + experimental, private, enterprises, + OBJECT-TYPE, ObjectName, ObjectSyntax, SimpleSyntax, + ApplicationSyntax, NetworkAddress, IpAddress, + Counter, Gauge, TimeTicks, Opaque; + + -- the path to the root + + internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 } + + directory OBJECT IDENTIFIER ::= { internet 1 } + + mgmt OBJECT IDENTIFIER ::= { internet 2 } + + experimental OBJECT IDENTIFIER ::= { internet 3 } + + private OBJECT IDENTIFIER ::= { internet 4 } + enterprises OBJECT IDENTIFIER ::= { private 1 } + + + -- definition of object types + + OBJECT-TYPE MACRO ::= + BEGIN + TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax) + "ACCESS" Access + "STATUS" Status + VALUE NOTATION ::= value (VALUE ObjectName) + + Access ::= "read-only" + | "read-write" + | "write-only" + | "not-accessible" + Status ::= "mandatory" + | "optional" + | "obsolete" + END + + -- names of objects in the MIB + + ObjectName ::= + OBJECT IDENTIFIER + + + + -- syntax of objects in the MIB + + ObjectSyntax ::= + CHOICE { + simple + SimpleSyntax, + + -- note that simple SEQUENCEs are not directly + -- mentioned here to keep things simple (i.e., + -- prevent mis-use). However, application-wide + -- types which are IMPLICITly encoded simple + -- SEQUENCEs may appear in the following CHOICE + + application-wide + ApplicationSyntax + } + + SimpleSyntax ::= + CHOICE { + number + INTEGER, + + string + OCTET STRING, + + object + OBJECT IDENTIFIER, + + empty + NULL + } + + ApplicationSyntax ::= + CHOICE { + address + NetworkAddress, + + counter + Counter, + + gauge + Gauge, + + ticks + TimeTicks, + + arbitrary + Opaque + + + -- other application-wide types, as they are + -- defined, will be added here + } + + + -- application-wide types + + NetworkAddress ::= + CHOICE { + internet + IpAddress + } + + IpAddress ::= + [APPLICATION 0] -- in network-byte order + IMPLICIT OCTET STRING (SIZE (4)) + + Counter ::= + [APPLICATION 1] + IMPLICIT INTEGER (0..4294967295) + + Gauge ::= + [APPLICATION 2] + IMPLICIT INTEGER (0..4294967295) + + TimeTicks ::= + [APPLICATION 3] + IMPLICIT INTEGER + + Opaque ::= + [APPLICATION 4] -- arbitrary ASN.1 value, + IMPLICIT OCTET STRING -- "double-wrapped" + + END diff --git a/mibs/ietf/RFC1155-SMI b/mibs/ietf/RFC1155-SMI new file mode 100644 index 0000000..a6c3bf6 --- /dev/null +++ b/mibs/ietf/RFC1155-SMI @@ -0,0 +1,129 @@ +RFC1155-SMI DEFINITIONS ::= BEGIN + +EXPORTS -- EVERYTHING + internet, directory, mgmt, + experimental, private, enterprises, + OBJECT-TYPE, ObjectName, ObjectSyntax, SimpleSyntax, + ApplicationSyntax, NetworkAddress, IpAddress, + Counter, Gauge, TimeTicks, Opaque; + + -- the path to the root + + internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 } + + directory OBJECT IDENTIFIER ::= { internet 1 } + + mgmt OBJECT IDENTIFIER ::= { internet 2 } + + experimental OBJECT IDENTIFIER ::= { internet 3 } + + private OBJECT IDENTIFIER ::= { internet 4 } + enterprises OBJECT IDENTIFIER ::= { private 1 } + + + -- definition of object types + + OBJECT-TYPE MACRO ::= + BEGIN + TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax) + "ACCESS" Access + "STATUS" Status + VALUE NOTATION ::= value (VALUE ObjectName) + + Access ::= "read-only" + | "read-write" + | "write-only" + | "not-accessible" + Status ::= "mandatory" + | "optional" + | "obsolete" + END + + -- names of objects in the MIB + + ObjectName ::= + OBJECT IDENTIFIER + + -- syntax of objects in the MIB + + ObjectSyntax ::= + CHOICE { + simple + SimpleSyntax, + + -- note that simple SEQUENCEs are not directly + -- mentioned here to keep things simple (i.e., + -- prevent mis-use). However, application-wide + -- types which are IMPLICITly encoded simple + -- SEQUENCEs may appear in the following CHOICE + + application-wide + ApplicationSyntax + } + + SimpleSyntax ::= + CHOICE { + number + INTEGER, + + string + OCTET STRING, + + object + OBJECT IDENTIFIER, + + empty + NULL + } + + ApplicationSyntax ::= + CHOICE { + address + NetworkAddress, + + counter + Counter, + + gauge + Gauge, + + ticks + TimeTicks, + + arbitrary + Opaque + + -- other application-wide types, as they are + -- defined, will be added here + } + + + -- application-wide types + + NetworkAddress ::= + CHOICE { + internet + IpAddress + } + + IpAddress ::= + [APPLICATION 0] -- in network-byte order + IMPLICIT OCTET STRING (SIZE (4)) + + Counter ::= + [APPLICATION 1] + IMPLICIT INTEGER (0..4294967295) + + Gauge ::= + [APPLICATION 2] + IMPLICIT INTEGER (0..4294967295) + + TimeTicks ::= + [APPLICATION 3] + IMPLICIT INTEGER (0..4294967295) + + Opaque ::= + [APPLICATION 4] -- arbitrary ASN.1 value, + IMPLICIT OCTET STRING -- "double-wrapped" + + END diff --git a/mibs/ietf/RFC1158-MIB b/mibs/ietf/RFC1158-MIB new file mode 100644 index 0000000..4acf34a --- /dev/null +++ b/mibs/ietf/RFC1158-MIB @@ -0,0 +1,1493 @@ +RFC1158-MIB DEFINITIONS ::= BEGIN + +IMPORTS + mgmt, OBJECT-TYPE, NetworkAddress, IpAddress, + Counter, Gauge, TimeTicks + FROM RFC1155-SMI; + +DisplayString ::= + OCTET STRING + +mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } -- MIB-II + -- (same prefix as MIB-I) + +system OBJECT IDENTIFIER ::= { mib-2 1 } +interfaces OBJECT IDENTIFIER ::= { mib-2 2 } +at OBJECT IDENTIFIER ::= { mib-2 3 } +ip OBJECT IDENTIFIER ::= { mib-2 4 } +icmp OBJECT IDENTIFIER ::= { mib-2 5 } +tcp OBJECT IDENTIFIER ::= { mib-2 6 } +udp OBJECT IDENTIFIER ::= { mib-2 7 } +egp OBJECT IDENTIFIER ::= { mib-2 8 } +-- cmot OBJECT IDENTIFIER ::= { mib-2 9 } +transmission OBJECT IDENTIFIER ::= { mib-2 10 } +snmp OBJECT IDENTIFIER ::= { mib-2 11 } + + +-- object types + +-- the System group + +sysDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + ::= { system 1 } + +sysObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + ::= { system 2 } + +sysUpTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + ::= { system 3 } + +sysContact OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + ::= { system 4 } + +sysName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + ::= { system 5 } + +sysLocation OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + ::= { system 6 } + +sysServices OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-only + STATUS mandatory + ::= { system 7 } + + +-- the Interfaces group + +ifNumber OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { interfaces 1 } + +-- the Interfaces table + +ifTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfEntry + ACCESS read-only + STATUS mandatory + ::= { interfaces 2 } + +ifEntry OBJECT-TYPE + SYNTAX IfEntry + ACCESS read-only + STATUS mandatory + ::= { ifTable 1 } + +IfEntry ::= SEQUENCE { + ifIndex + INTEGER, + ifDescr + DisplayString, + ifType + INTEGER, + ifMtu + INTEGER, + ifSpeed + Gauge, + ifPhysAddress + OCTET STRING, + ifAdminStatus + INTEGER, + ifOperStatus + INTEGER, + ifLastChange + TimeTicks, + ifInOctets + Counter, + ifInUcastPkts + Counter, + ifInNUcastPkts + Counter, + ifInDiscards + Counter, + ifInErrors + Counter, + ifInUnknownProtos + Counter, + ifOutOctets + Counter, + ifOutUcastPkts + Counter, + ifOutNUcastPkts + Counter, + ifOutDiscards + Counter, + ifOutErrors + Counter, + ifOutQLen + Gauge, + ifSpecific + OBJECT IDENTIFIER +} + +ifIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { ifEntry 1 } + +ifDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + ::= { ifEntry 2 } + +ifType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the + -- following + regular1822(2), + hdh1822(3), + ddn-x25(4), + rfc877-x25(5), + ethernet-csmacd(6), + iso88023-csmacd(7), + iso88024-tokenBus(8), + iso88025-tokenRing(9), + iso88026-man(10), + starLan(11), + proteon-10Mbit(12), + proteon-80Mbit(13), + hyperchannel(14), + fddi(15), + lapb(16), + sdlc(17), + t1-carrier(18), + cept(19), -- european + --equivalent of T-1 + basicISDN(20), + primaryISDN(21), + -- proprietary + -- serial + propPointToPointSerial(22), + terminalServer-asyncPort(23), + softwareLoopback(24), + eon(25), -- CLNP over IP + ethernet-3Mbit(26), + nsip(27), -- XNS over IP + slip(28) -- generic SLIP + } + ACCESS read-only + STATUS mandatory + ::= { ifEntry 3 } + +ifMtu OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { ifEntry 4 } + +ifSpeed OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + ::= { ifEntry 5 } + +ifPhysAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + ::= { ifEntry 6 } + +ifAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3) -- in some test mode + } + ACCESS read-write + STATUS mandatory + ::= { ifEntry 7 } + +ifOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3) -- in some test mode + } + ACCESS read-only + STATUS mandatory + ::= { ifEntry 8 } + +ifLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + ::= { ifEntry 9 } + +ifInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 10 } + +ifInUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 11 } + +ifInNUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 12 } + +ifInDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 13 } + +ifInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 14 } + +ifInUnknownProtos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 15 } + +ifOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 16 } + +ifOutUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 17 } + +ifOutNUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 18 } + +ifOutDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 19 } + +ifOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ifEntry 20 } + +ifOutQLen OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + ::= { ifEntry 21 } + +ifSpecific OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + ::= { ifEntry 22 } + +nullSpecific OBJECT IDENTIFIER ::= { 0 0 } + +-- the Address Translation group (deprecated) + +atTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtEntry + ACCESS read-write + STATUS deprecated + ::= { at 1 } + +atEntry OBJECT-TYPE + SYNTAX AtEntry + ACCESS read-write + STATUS deprecated + ::= { atTable 1 } + +AtEntry ::= SEQUENCE { + atIfIndex + INTEGER, + atPhysAddress + OCTET STRING, + atNetAddress + NetworkAddress +} + +atIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS deprecated + ::= { atEntry 1 } + +atPhysAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS deprecated + ::= { atEntry 2 } + +atNetAddress OBJECT-TYPE + SYNTAX NetworkAddress + ACCESS read-write + STATUS deprecated + ::= { atEntry 3 } + + +-- the IP group + +ipForwarding OBJECT-TYPE + SYNTAX INTEGER { + gateway(1), -- entity forwards + -- datagrams + host(2) -- entity does NOT + -- forward datagrams + } + ACCESS read-write + STATUS mandatory + ::= { ip 1 } + +ipDefaultTTL OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + ::= { ip 2 } + +ipInReceives OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 3 } + +ipInHdrErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 4 } + +ipInAddrErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 5 } + +ipForwDatagrams OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 6 } + +ipInUnknownProtos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 7 } + +ipInDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 8 } + +ipInDelivers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 9 } + +ipOutRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 10 } + +ipOutDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 11 } + +ipOutNoRoutes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 12 } + +ipReasmTimeout OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { ip 13 } + +ipReasmReqds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 14 } + +ipReasmOKs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 15 } + +ipReasmFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 16 } + +ipFragOKs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 17 } + +ipFragFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 18 } + +ipFragCreates OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { ip 19 } + +-- the IP Interface table + +ipAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpAddrEntry + ACCESS read-only + STATUS mandatory + ::= { ip 20 } + +ipAddrEntry OBJECT-TYPE + SYNTAX IpAddrEntry + ACCESS read-only + STATUS mandatory + ::= { ipAddrTable 1 } + +IpAddrEntry ::= SEQUENCE { + ipAdEntAddr + IpAddress, + ipAdEntIfIndex + INTEGER, + ipAdEntNetMask + IpAddress, + ipAdEntBcastAddr + INTEGER, + ipAdEntReasmMaxSize + INTEGER (0..65535) +} + +ipAdEntAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + ::= { ipAddrEntry 1 } + +ipAdEntIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { ipAddrEntry 2 } + +ipAdEntNetMask OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + ::= { ipAddrEntry 3 } + +ipAdEntBcastAddr OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { ipAddrEntry 4 } + +ipAdEntReasmMaxSize OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + ::= { ipAddrEntry 5 } + +-- the IP Routing table + +ipRoutingTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpRouteEntry + ACCESS read-write + STATUS mandatory + ::= { ip 21 } + +ipRouteEntry OBJECT-TYPE + SYNTAX IpRouteEntry + ACCESS read-write + STATUS mandatory + ::= { ipRoutingTable 1 } + +IpRouteEntry ::= SEQUENCE { + ipRouteDest + IpAddress, + ipRouteIfIndex + INTEGER, + ipRouteMetric1 + INTEGER, + ipRouteMetric2 + INTEGER, + ipRouteMetric3 + INTEGER, + ipRouteMetric4 + INTEGER, + ipRouteNextHop + IpAddress, + ipRouteType + INTEGER, + ipRouteProto + INTEGER, + ipRouteAge + INTEGER, + ipRouteMask + IpAddress +} + +ipRouteDest OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 1 } + +ipRouteIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 2 } + +ipRouteMetric1 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 3 } + +ipRouteMetric2 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 4 } + +ipRouteMetric3 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 5 } + +ipRouteMetric4 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 6 } + +ipRouteNextHop OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 7 } + +ipRouteType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + invalid(2), -- an invalidated route + + -- route to directly + direct(3), -- connected + -- (sub-)network + + -- route to a non-local + remote(4) -- host/network/ + -- sub-network + } + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 8 } + +ipRouteProto OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + -- non-protocol + -- information + + -- e.g., manually + local(2), -- configured entries + + -- set via a network + netmgmt(3), -- management protocol + + -- obtained via ICMP, + icmp(4), -- e.g., Redirect + + -- the following are + -- gateway routing + -- protocols + egp(5), + ggp(6), + hello(7), + rip(8), + is-is(9), + es-is(10), + ciscoIgrp(11), + bbnSpfIgp(12), + ospf(13), + bgp(14) + } + ACCESS read-only + STATUS mandatory + ::= { ipRouteEntry 9 } + +ipRouteAge OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 10 } + +ipRouteMask OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + ::= { ipRouteEntry 11 } + +-- the IP Address Translation tables + +ipNetToMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpNetToMediaEntry + ACCESS read-write + STATUS mandatory + ::= { ip 22 } + +ipNetToMediaEntry OBJECT-TYPE + SYNTAX IpNetToMediaEntry + ACCESS read-write + STATUS mandatory + ::= { ipNetToMediaTable 1 } + +IpNetToMediaEntry ::= SEQUENCE { + ipNetToMediaIfIndex + INTEGER, + ipNetToMediaPhysAddress + OCTET STRING, + ipNetToMediaNetAddress + IpAddress, + ipNetToMediaType + INTEGER +} + +ipNetToMediaIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + ::= { ipNetToMediaEntry 1 } + +ipNetToMediaPhysAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + ::= { ipNetToMediaEntry 2 } + +ipNetToMediaNetAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + ::= { ipNetToMediaEntry 3 } + +ipNetToMediaType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + invalid(2), -- an invalidated mapping + dynamic(3), -- connected (sub-)network + + static(4) + } + ACCESS read-write + STATUS mandatory + ::= { ipNetToMediaEntry 4 } + +-- the ICMP group + +icmpInMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 1 } + +icmpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 2 } + +icmpInDestUnreachs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 3 } + +icmpInTimeExcds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 4 } + +icmpInParmProbs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 5 } + +icmpInSrcQuenchs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 6 } + +icmpInRedirects OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 7 } + +icmpInEchos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 8 } + +icmpInEchoReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 9 } + +icmpInTimestamps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 10 } + +icmpInTimestampReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 11 } + +icmpInAddrMasks OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 12 } + +icmpInAddrMaskReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 13 } + +icmpOutMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 14 } + +icmpOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 15 } + +icmpOutDestUnreachs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 16 } + +icmpOutTimeExcds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 17 } + +icmpOutParmProbs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 18 } + +icmpOutSrcQuenchs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 19 } + +icmpOutRedirects OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 20 } + +icmpOutEchos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 21 } + +icmpOutEchoReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 22 } + +icmpOutTimestamps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 23 } + +icmpOutTimestampReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 24 } + +icmpOutAddrMasks OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 25 } + +icmpOutAddrMaskReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { icmp 26 } + + +-- the TCP group + +tcpRtoAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + constant(2), -- a constant rto + rsre(3), -- MIL-STD-1778, + -- Appendix B + vanj(4) -- Van Jacobson's + -- algorithm + } + ACCESS read-only + STATUS mandatory + ::= { tcp 1 } + +tcpRtoMin OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { tcp 2 } + +tcpRtoMax OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { tcp 3 } + +tcpMaxConn OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { tcp 4 } + +tcpActiveOpens OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 5 } + +tcpPassiveOpens OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 6 } + +tcpAttemptFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 7 } + +tcpEstabResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 8 } + +tcpCurrEstab OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + ::= { tcp 9 } + +tcpInSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 10 } + +tcpOutSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 11 } + +tcpRetransSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 12 } + +-- the TCP connections table + +tcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpConnEntry + ACCESS read-only + STATUS mandatory + ::= { tcp 13 } + +tcpConnEntry OBJECT-TYPE + SYNTAX TcpConnEntry + ACCESS read-only + STATUS mandatory + ::= { tcpConnTable 1 } + +TcpConnEntry ::= SEQUENCE { + tcpConnState + INTEGER, + tcpConnLocalAddress + IpAddress, + tcpConnLocalPort + INTEGER (0..65535), + tcpConnRemAddress + IpAddress, + tcpConnRemPort + INTEGER (0..65535) +} + +tcpConnState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + listen(2), + synSent(3), + synReceived(4), + established(5), + finWait1(6), + finWait2(7), + closeWait(8), + lastAck(9), + closing(10), + timeWait(11) + } + ACCESS read-only + STATUS mandatory + ::= { tcpConnEntry 1 } + +tcpConnLocalAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + ::= { tcpConnEntry 2 } + +tcpConnLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + ::= { tcpConnEntry 3 } + +tcpConnRemAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + ::= { tcpConnEntry 4 } + +tcpConnRemPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + ::= { tcpConnEntry 5 } + +-- additional TCP variables + +tcpInErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 14 } + +tcpOutRsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { tcp 15 } + + +-- the UDP group + +udpInDatagrams OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { udp 1 } + +udpNoPorts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { udp 2 } + +udpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { udp 3 } + +udpOutDatagrams OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { udp 4 } + +-- the UDP listener table + +udpTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpEntry + ACCESS read-only + STATUS mandatory + ::= { udp 5 } + +udpEntry OBJECT-TYPE + SYNTAX UdpEntry + ACCESS read-only + STATUS mandatory + ::= { udpTable 1 } + +UdpEntry ::= SEQUENCE { + udpLocalAddress + IpAddress, + udpLocalPort + INTEGER (0..65535) +} + +udpLocalAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + ::= { udpEntry 1 } + +udpLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + ::= { udpEntry 2 } + +-- the EGP group + +egpInMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egp 1 } + +egpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egp 2 } + +egpOutMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egp 3 } + +egpOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egp 4 } + +-- the EGP Neighbor table + +egpNeighTable OBJECT-TYPE + SYNTAX SEQUENCE OF EgpNeighEntry + ACCESS read-only + STATUS mandatory + ::= { egp 5 } + +egpNeighEntry OBJECT-TYPE + SYNTAX EgpNeighEntry + ACCESS read-only + STATUS mandatory + ::= { egpNeighTable 1 } + +EgpNeighEntry ::= SEQUENCE { + egpNeighState + INTEGER, + egpNeighAddr + IpAddress, + egpNeighAs + INTEGER, + egpNeighInMsgs + Counter, + egpNeighInErrs + Counter, + egpNeighOutMsgs + Counter, + egpNeighOutErrs + Counter, + egpNeighInErrMsgs + Counter, + egpNeighOutErrMsgs + Counter, + egpNeighStateUps + Counter, + egpNeighStateDowns + Counter, + egpNeighIntervalHello + INTEGER, + egpNeighIntervalPoll + INTEGER, + egpNeighMode + INTEGER, + egpNeighEventTrigger + INTEGER +} + +egpNeighState OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + acquisition(2), + down(3), + up(4), + cease(5) + } + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 1 } + +egpNeighAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 2 } + +egpNeighAs OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 3 } + +egpNeighInMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 4 } + +egpNeighInErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 5 } + +egpNeighOutMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 6 } + +egpNeighOutErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 7 } + +egpNeighInErrMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 8 } + +egpNeighOutErrMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 9 } + +egpNeighStateUps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 10 } + +egpNeighStateDowns OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 11 } + +egpNeighIntervalHello OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 12 } + +egpNeighIntervalPoll OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 13 } + +egpNeighMode OBJECT-TYPE + SYNTAX INTEGER { + active(1), + passive(2) + } + ACCESS read-only + STATUS mandatory + ::= { egpNeighEntry 14 } + +egpNeighEventTrigger OBJECT-TYPE + SYNTAX INTEGER { + start(1), + stop(2) + } + ACCESS read-write + STATUS mandatory + ::= { egpNeighEntry 15 } + +-- additional EGP variables + +egpAs OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { egp 6 } + + +-- the Transmission group (empty at present) + +-- the SNMP group + +snmpInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 1 } + +snmpOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 2 } + +snmpInBadVersions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 3 } + +snmpInBadCommunityNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 5 } + +snmpInASNParseErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 6 } + +snmpInBadTypes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 7 } + +snmpInTooBigs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 8 } + +snmpInNoSuchNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 9 } + +snmpInBadValues OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 10 } + +snmpInReadOnlys OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 11 } + +snmpInGenErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 12 } + +snmpInTotalReqVars OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 13 } + +snmpInTotalSetVars OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 14 } + +snmpInGetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 15 } + +snmpInGetNexts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 16 } + +snmpInSetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 17 } + +snmpInGetResponses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 18 } + +snmpInTraps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 19 } + +snmpOutTooBigs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 20 } + +snmpOutNoSuchNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 21 } + +snmpOutBadValues OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 22 } + +snmpOutReadOnlys OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 23 } + +snmpOutGenErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 24 } + +snmpOutGetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 25 } + +snmpOutGetNexts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 26 } + +snmpOutSetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 27 } + +snmpOutGetResponses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 28 } + +snmpOutTraps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + ::= { snmp 29 } + +snmpEnableAuthTraps OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + ACCESS read-write + STATUS mandatory + ::= { snmp 30 } + +END diff --git a/mibs/ietf/RFC1213-MIB b/mibs/ietf/RFC1213-MIB new file mode 100644 index 0000000..2a849de --- /dev/null +++ b/mibs/ietf/RFC1213-MIB @@ -0,0 +1,2621 @@ +RFC1213-MIB DEFINITIONS ::= BEGIN + +IMPORTS + mgmt, NetworkAddress, IpAddress, Counter, Gauge, + TimeTicks + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [14]; + + +-- MIB-II (same prefix as MIB-I) + +mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } + +-- textual conventions + +DisplayString ::= + OCTET STRING +-- This data type is used to model textual information taken +-- from the NVT ASCII character set. By convention, objects +-- with this syntax are declared as having + +-- +-- SIZE (0..255) + +PhysAddress ::= + OCTET STRING +-- This data type is used to model media addresses. For many +-- types of media, this will be in a binary representation. +-- For example, an ethernet address would be represented as +-- a string of 6 octets. + + +-- groups in MIB-II + +system OBJECT IDENTIFIER ::= { mib-2 1 } + +interfaces OBJECT IDENTIFIER ::= { mib-2 2 } + +at OBJECT IDENTIFIER ::= { mib-2 3 } + +ip OBJECT IDENTIFIER ::= { mib-2 4 } + +icmp OBJECT IDENTIFIER ::= { mib-2 5 } + +tcp OBJECT IDENTIFIER ::= { mib-2 6 } + +udp OBJECT IDENTIFIER ::= { mib-2 7 } + +egp OBJECT IDENTIFIER ::= { mib-2 8 } + +-- historical (some say hysterical) +-- cmot OBJECT IDENTIFIER ::= { mib-2 9 } + +transmission OBJECT IDENTIFIER ::= { mib-2 10 } + +snmp OBJECT IDENTIFIER ::= { mib-2 11 } + + +-- the System group + +-- Implementation of the System group is mandatory for all +-- systems. If an agent is not configured to have a value +-- for any of these variables, a string of length 0 is +-- returned. + +sysDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A textual description of the entity. This value + should include the full name and version + identification of the system's hardware type, + software operating-system, and networking + software. It is mandatory that this only contain + printable ASCII characters." + ::= { system 1 } + +sysObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The vendor's authoritative identification of the + network management subsystem contained in the + entity. This value is allocated within the SMI + enterprises subtree (1.3.6.1.4.1) and provides an + easy and unambiguous means for determining `what + kind of box' is being managed. For example, if + vendor `Flintstones, Inc.' was assigned the + subtree 1.3.6.1.4.1.4242, it could assign the + identifier 1.3.6.1.4.1.4242.1.1 to its `Fred + Router'." + ::= { system 2 } + +sysUpTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized." + ::= { system 3 } + +sysContact OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The textual identification of the contact person + for this managed node, together with information + on how to contact this person." + ::= { system 4 } + +sysName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An administratively-assigned name for this + managed node. By convention, this is the node's + fully-qualified domain name." + ::= { system 5 } + +sysLocation OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The physical location of this node (e.g., + `telephone closet, 3rd floor')." + ::= { system 6 } + +sysServices OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value which indicates the set of services that + this entity primarily offers. + + The value is a sum. This sum initially takes the + value zero, Then, for each layer, L, in the range + 1 through 7, that this node performs transactions + for, 2 raised to (L - 1) is added to the sum. For + example, a node which performs primarily routing + functions would have a value of 4 (2^(3-1)). In + contrast, a node which is a host offering + application services would have a value of 72 + (2^(4-1) + 2^(7-1)). Note that in the context of + the Internet suite of protocols, values should be + calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., IP gateways) + 4 end-to-end (e.g., IP hosts) + 7 applications (e.g., mail relays) + + For systems including OSI protocols, layers 5 and + 6 may also be counted." + ::= { system 7 } + +-- the Interfaces group + +-- Implementation of the Interfaces group is mandatory for +-- all systems. + +ifNumber OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of network interfaces (regardless of + their current state) present on this system." + ::= { interfaces 1 } + + +-- the Interfaces table + +-- The Interfaces table contains information on the entity's +-- interfaces. Each interface is thought of as being +-- attached to a `subnetwork'. Note that this term should +-- not be confused with `subnet' which refers to an +-- addressing partitioning scheme used in the Internet suite +-- of protocols. + +ifTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of interface entries. The number of + entries is given by the value of ifNumber." + ::= { interfaces 2 } + +ifEntry OBJECT-TYPE + SYNTAX IfEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An interface entry containing objects at the + subnetwork layer and below for a particular + interface." + INDEX { ifIndex } + ::= { ifTable 1 } + +IfEntry ::= + SEQUENCE { + ifIndex + INTEGER, + ifDescr + DisplayString, + ifType + INTEGER, + ifMtu + INTEGER, + ifSpeed + Gauge, + ifPhysAddress + PhysAddress, + ifAdminStatus + INTEGER, + ifOperStatus + INTEGER, + ifLastChange + TimeTicks, + ifInOctets + Counter, + ifInUcastPkts + Counter, + ifInNUcastPkts + Counter, + ifInDiscards + Counter, + ifInErrors + Counter, + ifInUnknownProtos + Counter, + ifOutOctets + Counter, + ifOutUcastPkts + Counter, + ifOutNUcastPkts + Counter, + ifOutDiscards + Counter, + ifOutErrors + Counter, + ifOutQLen + Gauge, + ifSpecific + OBJECT IDENTIFIER + } + +ifIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each interface. Its value + ranges between 1 and the value of ifNumber. The + value for each interface must remain constant at + least from one re-initialization of the entity's + network management system to the next re- + initialization." + ::= { ifEntry 1 } + +ifDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A textual string containing information about the + interface. This string should include the name of + the manufacturer, the product name and the version + of the hardware interface." + ::= { ifEntry 2 } + +ifType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + regular1822(2), + hdh1822(3), + ddn-x25(4), + rfc877-x25(5), + ethernet-csmacd(6), + iso88023-csmacd(7), + iso88024-tokenBus(8), + iso88025-tokenRing(9), + iso88026-man(10), + starLan(11), + proteon-10Mbit(12), + proteon-80Mbit(13), + hyperchannel(14), + fddi(15), + lapb(16), + sdlc(17), + ds1(18), -- T-1 + e1(19), -- european equiv. of T-1 + basicISDN(20), + primaryISDN(21), -- proprietary serial + propPointToPointSerial(22), + ppp(23), + softwareLoopback(24), + eon(25), -- CLNP over IP [11] + ethernet-3Mbit(26), + nsip(27), -- XNS over IP + slip(28), -- generic SLIP + ultra(29), -- ULTRA technologies + ds3(30), -- T-3 + sip(31), -- SMDS + frame-relay(32) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of interface, distinguished according to + the physical/link protocol(s) immediately `below' + the network layer in the protocol stack." + ::= { ifEntry 3 } + +ifMtu OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the largest datagram which can be + sent/received on the interface, specified in + octets. For interfaces that are used for + transmitting network datagrams, this is the size + of the largest network datagram that can be sent + on the interface." + ::= { ifEntry 4 } + +ifSpeed OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An estimate of the interface's current bandwidth + in bits per second. For interfaces which do not + vary in bandwidth or for those where no accurate + estimation can be made, this object should contain + the nominal bandwidth." + ::= { ifEntry 5 } + +ifPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The interface's address at the protocol layer + immediately `below' the network layer in the + protocol stack. For interfaces which do not have + such an address (e.g., a serial line), this object + should contain an octet string of zero length." + ::= { ifEntry 6 } + +ifAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3) -- in some test mode + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The desired state of the interface. The + testing(3) state indicates that no operational + packets can be passed." + ::= { ifEntry 7 } + +ifOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3) -- in some test mode + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operational state of the interface. + The testing(3) state indicates that no operational + packets can be passed." + ::= { ifEntry 8 } + +ifLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the interface + entered its current operational state. If the + current state was entered prior to the last re- + initialization of the local network management + subsystem, then this object contains a zero + value." + ::= { ifEntry 9 } + +ifInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets received on the + interface, including framing characters." + ::= { ifEntry 10 } + +ifInUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of subnetwork-unicast packets + delivered to a higher-layer protocol." + ::= { ifEntry 11 } + +ifInNUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of non-unicast (i.e., subnetwork- + broadcast or subnetwork-multicast) packets + delivered to a higher-layer protocol." + ::= { ifEntry 12 } + +ifInDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of inbound packets which were chosen + to be discarded even though no errors had been + detected to prevent their being deliverable to a + higher-layer protocol. One possible reason for + discarding such a packet could be to free up + buffer space." + ::= { ifEntry 13 } + +ifInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of inbound packets that contained + errors preventing them from being deliverable to a + higher-layer protocol." + ::= { ifEntry 14 } + +ifInUnknownProtos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received via the interface + which were discarded because of an unknown or + unsupported protocol." + ::= { ifEntry 15 } + +ifOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters." + ::= { ifEntry 16 } + +ifOutUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets that higher-level + protocols requested be transmitted to a + subnetwork-unicast address, including those that + were discarded or not sent." + ::= { ifEntry 17 } + +ifOutNUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets that higher-level + protocols requested be transmitted to a non- + unicast (i.e., a subnetwork-broadcast or + subnetwork-multicast) address, including those + that were discarded or not sent." + ::= { ifEntry 18 } + +ifOutDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of outbound packets which were chosen + to be discarded even though no errors had been + detected to prevent their being transmitted. One + possible reason for discarding such a packet could + be to free up buffer space." + ::= { ifEntry 19 } + +ifOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of outbound packets that could not be + transmitted because of errors." + ::= { ifEntry 20 } + +ifOutQLen OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The length of the output packet queue (in + packets)." + ::= { ifEntry 21 } + +ifSpecific OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A reference to MIB definitions specific to the + particular media being used to realize the + interface. For example, if the interface is + realized by an ethernet, then the value of this + object refers to a document defining objects + specific to ethernet. If this information is not + present, its value should be set to the OBJECT + IDENTIFIER { 0 0 }, which is a syntatically valid + object identifier, and any conformant + implementation of ASN.1 and BER must be able to + generate and recognize this value." + ::= { ifEntry 22 } + + +-- the Address Translation group + +-- Implementation of the Address Translation group is +-- mandatory for all systems. Note however that this group +-- is deprecated by MIB-II. That is, it is being included + +-- solely for compatibility with MIB-I nodes, and will most +-- likely be excluded from MIB-III nodes. From MIB-II and +-- onwards, each network protocol group contains its own +-- address translation tables. + +-- The Address Translation group contains one table which is +-- the union across all interfaces of the translation tables +-- for converting a NetworkAddress (e.g., an IP address) into +-- a subnetwork-specific address. For lack of a better term, +-- this document refers to such a subnetwork-specific address +-- as a `physical' address. + +-- Examples of such translation tables are: for broadcast +-- media where ARP is in use, the translation table is +-- equivalent to the ARP cache; or, on an X.25 network where +-- non-algorithmic translation to X.121 addresses is +-- required, the translation table contains the +-- NetworkAddress to X.121 address equivalences. + +atTable OBJECT-TYPE + SYNTAX SEQUENCE OF AtEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The Address Translation tables contain the + NetworkAddress to `physical' address equivalences. + Some interfaces do not use translation tables for + determining address equivalences (e.g., DDN-X.25 + has an algorithmic method); if all interfaces are + of this type, then the Address Translation table + is empty, i.e., has zero entries." + ::= { at 1 } + +atEntry OBJECT-TYPE + SYNTAX AtEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Each entry contains one NetworkAddress to + `physical' address equivalence." + INDEX { atIfIndex, + atNetAddress } + ::= { atTable 1 } + +AtEntry ::= + SEQUENCE { + atIfIndex + INTEGER, + atPhysAddress + PhysAddress, + atNetAddress + NetworkAddress + } + +atIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The interface on which this entry's equivalence + is effective. The interface identified by a + particular value of this index is the same + interface as identified by the same value of + ifIndex." + ::= { atEntry 1 } + +atPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The media-dependent `physical' address. + + Setting this object to a null string (one of zero + length) has the effect of invaliding the + corresponding entry in the atTable object. That + is, it effectively dissasociates the interface + identified with said entry from the mapping + identified with said entry. It is an + implementation-specific matter as to whether the + agent removes an invalidated entry from the table. + Accordingly, management stations must be prepared + to receive tabular information from agents that + corresponds to entries not currently in use. + Proper interpretation of such entries requires + examination of the relevant atPhysAddress object." + ::= { atEntry 2 } + +atNetAddress OBJECT-TYPE + SYNTAX NetworkAddress + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The NetworkAddress (e.g., the IP address) + corresponding to the media-dependent `physical' + address." + ::= { atEntry 3 } + + +-- the IP group + +-- Implementation of the IP group is mandatory for all +-- systems. + +ipForwarding OBJECT-TYPE + SYNTAX INTEGER { + forwarding(1), -- acting as a gateway + not-forwarding(2) -- NOT acting as a gateway + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The indication of whether this entity is acting + as an IP gateway in respect to the forwarding of + datagrams received by, but not addressed to, this + entity. IP gateways forward datagrams. IP hosts + do not (except those source-routed via the host). + + Note that for some managed nodes, this object may + take on only a subset of the values possible. + Accordingly, it is appropriate for an agent to + return a `badValue' response if a management + station attempts to change this object to an + inappropriate value." + ::= { ip 1 } + +ipDefaultTTL OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default value inserted into the Time-To-Live + field of the IP header of datagrams originated at + this entity, whenever a TTL value is not supplied + by the transport layer protocol." + ::= { ip 2 } + +ipInReceives OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input datagrams received from + interfaces, including those received in error." + ::= { ip 3 } + +ipInHdrErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input datagrams discarded due to + errors in their IP headers, including bad + checksums, version number mismatch, other format + errors, time-to-live exceeded, errors discovered + in processing their IP options, etc." + ::= { ip 4 } + +ipInAddrErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input datagrams discarded because + the IP address in their IP header's destination + field was not a valid address to be received at + this entity. This count includes invalid + addresses (e.g., 0.0.0.0) and addresses of + unsupported Classes (e.g., Class E). For entities + which are not IP Gateways and therefore do not + forward datagrams, this counter includes datagrams + discarded because the destination address was not + a local address." + ::= { ip 5 } + +ipForwDatagrams OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input datagrams for which this + entity was not their final IP destination, as a + result of which an attempt was made to find a + route to forward them to that final destination. + In entities which do not act as IP Gateways, this + counter will include only those packets which were + Source-Routed via this entity, and the Source- + Route option processing was successful." + ::= { ip 6 } + +ipInUnknownProtos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of locally-addressed datagrams + received successfully but discarded because of an + unknown or unsupported protocol." + ::= { ip 7 } + +ipInDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of input IP datagrams for which no + problems were encountered to prevent their + continued processing, but which were discarded + (e.g., for lack of buffer space). Note that this + counter does not include any datagrams discarded + while awaiting re-assembly." + ::= { ip 8 } + +ipInDelivers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of input datagrams successfully + delivered to IP user-protocols (including ICMP)." + ::= { ip 9 } + +ipOutRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of IP datagrams which local IP + user-protocols (including ICMP) supplied to IP in + requests for transmission. Note that this counter + does not include any datagrams counted in + ipForwDatagrams." + ::= { ip 10 } + +ipOutDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of output IP datagrams for which no + problem was encountered to prevent their + transmission to their destination, but which were + discarded (e.g., for lack of buffer space). Note + that this counter would include datagrams counted + in ipForwDatagrams if any such packets met this + (discretionary) discard criterion." + ::= { ip 11 } + +ipOutNoRoutes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of IP datagrams discarded because no + route could be found to transmit them to their + destination. Note that this counter includes any + packets counted in ipForwDatagrams which meet this + `no-route' criterion. Note that this includes any + datagarms which a host cannot route because all of + its default gateways are down." + ::= { ip 12 } + +ipReasmTimeout OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of seconds which received + fragments are held while they are awaiting + reassembly at this entity." + ::= { ip 13 } + +ipReasmReqds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of IP fragments received which needed + to be reassembled at this entity." + ::= { ip 14 } + +ipReasmOKs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of IP datagrams successfully re- + assembled." + ::= { ip 15 } + +ipReasmFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of failures detected by the IP re- + assembly algorithm (for whatever reason: timed + out, errors, etc). Note that this is not + necessarily a count of discarded IP fragments + since some algorithms (notably the algorithm in + RFC 815) can lose track of the number of fragments + by combining them as they are received." + ::= { ip 16 } + +ipFragOKs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of IP datagrams that have been + successfully fragmented at this entity." + ::= { ip 17 } + +ipFragFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of IP datagrams that have been + discarded because they needed to be fragmented at + this entity but could not be, e.g., because their + Don't Fragment flag was set." + ::= { ip 18 } + +ipFragCreates OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of IP datagram fragments that have + been generated as a result of fragmentation at + this entity." + ::= { ip 19 } + +-- the IP address table + +-- The IP address table contains this entity's IP addressing +-- information. + +ipAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpAddrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table of addressing information relevant to + this entity's IP addresses." + ::= { ip 20 } + +ipAddrEntry OBJECT-TYPE + SYNTAX IpAddrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The addressing information for one of this + entity's IP addresses." + INDEX { ipAdEntAddr } + ::= { ipAddrTable 1 } + +IpAddrEntry ::= + SEQUENCE { + ipAdEntAddr + IpAddress, + ipAdEntIfIndex + INTEGER, + ipAdEntNetMask + IpAddress, + ipAdEntBcastAddr + INTEGER, + ipAdEntReasmMaxSize + INTEGER (0..65535) + } + +ipAdEntAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP address to which this entry's addressing + information pertains." + ::= { ipAddrEntry 1 } + +ipAdEntIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The index value which uniquely identifies the + interface to which this entry is applicable. The + interface identified by a particular value of this + index is the same interface as identified by the + same value of ifIndex." + ::= { ipAddrEntry 2 } + +ipAdEntNetMask OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The subnet mask associated with the IP address of + this entry. The value of the mask is an IP + address with all the network bits set to 1 and all + the hosts bits set to 0." + ::= { ipAddrEntry 3 } + +ipAdEntBcastAddr OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the least-significant bit in the IP + broadcast address used for sending datagrams on + the (logical) interface associated with the IP + address of this entry. For example, when the + Internet standard all-ones broadcast address is + used, the value will be 1. This value applies to + both the subnet and network broadcasts addresses + used by the entity on this (logical) interface." + ::= { ipAddrEntry 4 } + +ipAdEntReasmMaxSize OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the largest IP datagram which this + entity can re-assemble from incoming IP fragmented + datagrams received on this interface." + ::= { ipAddrEntry 5 } + +-- the IP routing table + +-- The IP routing table contains an entry for each route +-- presently known to this entity. + +ipRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpRouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entity's IP Routing table." + ::= { ip 21 } + +ipRouteEntry OBJECT-TYPE + SYNTAX IpRouteEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A route to a particular destination." + INDEX { ipRouteDest } + ::= { ipRouteTable 1 } + +IpRouteEntry ::= + SEQUENCE { + ipRouteDest + IpAddress, + ipRouteIfIndex + INTEGER, + ipRouteMetric1 + INTEGER, + ipRouteMetric2 + INTEGER, + ipRouteMetric3 + INTEGER, + ipRouteMetric4 + INTEGER, + ipRouteNextHop + IpAddress, + ipRouteType + INTEGER, + ipRouteProto + INTEGER, + ipRouteAge + INTEGER, + ipRouteMask + IpAddress, + ipRouteMetric5 + INTEGER, + ipRouteInfo + OBJECT IDENTIFIER + } + +ipRouteDest OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The destination IP address of this route. An + entry with a value of 0.0.0.0 is considered a + default route. Multiple routes to a single + destination can appear in the table, but access to + such multiple entries is dependent on the table- + access mechanisms defined by the network + management protocol in use." + ::= { ipRouteEntry 1 } + +ipRouteIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The index value which uniquely identifies the + local interface through which the next hop of this + route should be reached. The interface identified + by a particular value of this index is the same + interface as identified by the same value of + ifIndex." + ::= { ipRouteEntry 2 } + +ipRouteMetric1 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The primary routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + ipRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { ipRouteEntry 3 } + +ipRouteMetric2 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + ipRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { ipRouteEntry 4 } + +ipRouteMetric3 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + ipRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { ipRouteEntry 5 } + +ipRouteMetric4 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + ipRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { ipRouteEntry 6 } + +ipRouteNextHop OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The IP address of the next hop of this route. + (In the case of a route bound to an interface + which is realized via a broadcast media, the value + of this field is the agent's IP address on that + interface.)" + ::= { ipRouteEntry 7 } + +ipRouteType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + invalid(2), -- an invalidated route + + -- route to directly + direct(3), -- connected (sub-)network + + -- route to a non-local + indirect(4) -- host/network/sub-network + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of route. Note that the values + direct(3) and indirect(4) refer to the notion of + direct and indirect routing in the IP + architecture. + + Setting this object to the value invalid(2) has + the effect of invalidating the corresponding entry + in the ipRouteTable object. That is, it + effectively dissasociates the destination + identified with said entry from the route + identified with said entry. It is an + implementation-specific matter as to whether the + agent removes an invalidated entry from the table. + Accordingly, management stations must be prepared + to receive tabular information from agents that + corresponds to entries not currently in use. + Proper interpretation of such entries requires + examination of the relevant ipRouteType object." + ::= { ipRouteEntry 8 } + +ipRouteProto OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + -- non-protocol information, + -- e.g., manually configured + local(2), -- entries + + -- set via a network + netmgmt(3), -- management protocol + + -- obtained via ICMP, + icmp(4), -- e.g., Redirect + + -- the remaining values are + -- all gateway routing + -- protocols + egp(5), + ggp(6), + hello(7), + rip(8), + is-is(9), + es-is(10), + ciscoIgrp(11), + bbnSpfIgp(12), + ospf(13), + bgp(14) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The routing mechanism via which this route was + learned. Inclusion of values for gateway routing + protocols is not intended to imply that hosts + should support those protocols." + ::= { ipRouteEntry 9 } + +ipRouteAge OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of seconds since this route was last + updated or otherwise determined to be correct. + Note that no semantics of `too old' can be implied + except through knowledge of the routing protocol + by which the route was learned." + ::= { ipRouteEntry 10 } + +ipRouteMask OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to the + value in the ipRouteDest field. For those systems + that do not support arbitrary subnet masks, an + agent constructs the value of the ipRouteMask by + determining whether the value of the correspondent + ipRouteDest field belong to a class-A, B, or C + network, and then using one of: + + mask network + 255.0.0.0 class-A + 255.255.0.0 class-B + 255.255.255.0 class-C + If the value of the ipRouteDest is 0.0.0.0 (a + default route), then the mask value is also + 0.0.0.0. It should be noted that all IP routing + subsystems implicitly use this mechanism." + ::= { ipRouteEntry 11 } + +ipRouteMetric5 OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An alternate routing metric for this route. The + semantics of this metric are determined by the + routing-protocol specified in the route's + ipRouteProto value. If this metric is not used, + its value should be set to -1." + ::= { ipRouteEntry 12 } + +ipRouteInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A reference to MIB definitions specific to the + particular routing protocol which is responsible + for this route, as determined by the value + specified in the route's ipRouteProto value. If + this information is not present, its value should + be set to the OBJECT IDENTIFIER { 0 0 }, which is + a syntatically valid object identifier, and any + conformant implementation of ASN.1 and BER must be + able to generate and recognize this value." + ::= { ipRouteEntry 13 } + + +-- the IP Address Translation table + +-- The IP address translation table contain the IpAddress to +-- `physical' address equivalences. Some interfaces do not +-- use translation tables for determining address +-- equivalences (e.g., DDN-X.25 has an algorithmic method); +-- if all interfaces are of this type, then the Address +-- Translation table is empty, i.e., has zero entries. + +ipNetToMediaTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpNetToMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The IP Address Translation table used for mapping + from IP addresses to physical addresses." + ::= { ip 22 } + +ipNetToMediaEntry OBJECT-TYPE + SYNTAX IpNetToMediaEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Each entry contains one IpAddress to `physical' + address equivalence." + INDEX { ipNetToMediaIfIndex, + ipNetToMediaNetAddress } + ::= { ipNetToMediaTable 1 } + +IpNetToMediaEntry ::= + SEQUENCE { + ipNetToMediaIfIndex + INTEGER, + ipNetToMediaPhysAddress + PhysAddress, + ipNetToMediaNetAddress + IpAddress, + ipNetToMediaType + INTEGER + } + +ipNetToMediaIfIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The interface on which this entry's equivalence + is effective. The interface identified by a + particular value of this index is the same + interface as identified by the same value of + ifIndex." + ::= { ipNetToMediaEntry 1 } + +ipNetToMediaPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The media-dependent `physical' address." + ::= { ipNetToMediaEntry 2 } + +ipNetToMediaNetAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The IpAddress corresponding to the media- + dependent `physical' address." + ::= { ipNetToMediaEntry 3 } + +ipNetToMediaType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + invalid(2), -- an invalidated mapping + dynamic(3), + static(4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of mapping. + + Setting this object to the value invalid(2) has + the effect of invalidating the corresponding entry + in the ipNetToMediaTable. That is, it effectively + dissasociates the interface identified with said + entry from the mapping identified with said entry. + It is an implementation-specific matter as to + whether the agent removes an invalidated entry + from the table. Accordingly, management stations + must be prepared to receive tabular information + from agents that corresponds to entries not + currently in use. Proper interpretation of such + entries requires examination of the relevant + ipNetToMediaType object." + ::= { ipNetToMediaEntry 4 } + + +-- additional IP objects + +ipRoutingDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of routing entries which were chosen + to be discarded even though they are valid. One + possible reason for discarding such an entry could + be to free-up buffer space for other routing + entries." + ::= { ip 23 } + + +-- the ICMP group + +-- Implementation of the ICMP group is mandatory for all +-- systems. + +icmpInMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ICMP messages which the + entity received. Note that this counter includes + all those counted by icmpInErrors." + ::= { icmp 1 } + +icmpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP messages which the entity + received but determined as having ICMP-specific + errors (bad ICMP checksums, bad length, etc.)." + ::= { icmp 2 } + +icmpInDestUnreachs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Destination Unreachable + messages received." + ::= { icmp 3 } + +icmpInTimeExcds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Time Exceeded messages + received." + ::= { icmp 4 } + +icmpInParmProbs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Parameter Problem messages + received." + ::= { icmp 5 } + +icmpInSrcQuenchs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Source Quench messages + received." + ::= { icmp 6 } + +icmpInRedirects OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Redirect messages received." + ::= { icmp 7 } + +icmpInEchos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Echo (request) messages + received." + ::= { icmp 8 } + +icmpInEchoReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Echo Reply messages received." + ::= { icmp 9 } + +icmpInTimestamps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Timestamp (request) messages + received." + ::= { icmp 10 } + +icmpInTimestampReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Timestamp Reply messages + received." + ::= { icmp 11 } + +icmpInAddrMasks OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Address Mask Request messages + received." + ::= { icmp 12 } + +icmpInAddrMaskReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Address Mask Reply messages + received." + ::= { icmp 13 } + +icmpOutMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ICMP messages which this + entity attempted to send. Note that this counter + includes all those counted by icmpOutErrors." + ::= { icmp 14 } + +icmpOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP messages which this entity did + not send due to problems discovered within ICMP + such as a lack of buffers. This value should not + include errors discovered outside the ICMP layer + such as the inability of IP to route the resultant + datagram. In some implementations there may be no + types of error which contribute to this counter's + value." + ::= { icmp 15 } + +icmpOutDestUnreachs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Destination Unreachable + messages sent." + ::= { icmp 16 } + +icmpOutTimeExcds OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Time Exceeded messages sent." + ::= { icmp 17 } + +icmpOutParmProbs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Parameter Problem messages + sent." + ::= { icmp 18 } + +icmpOutSrcQuenchs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Source Quench messages sent." + ::= { icmp 19 } + +icmpOutRedirects OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Redirect messages sent. For a + host, this object will always be zero, since hosts + do not send redirects." + ::= { icmp 20 } + +icmpOutEchos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Echo (request) messages sent." + ::= { icmp 21 } + +icmpOutEchoReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Echo Reply messages sent." + ::= { icmp 22 } + +icmpOutTimestamps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Timestamp (request) messages + sent." + ::= { icmp 23 } + +icmpOutTimestampReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Timestamp Reply messages + sent." + ::= { icmp 24 } + +icmpOutAddrMasks OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Address Mask Request messages + sent." + ::= { icmp 25 } + +icmpOutAddrMaskReps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ICMP Address Mask Reply messages + sent." + ::= { icmp 26 } + + +-- the TCP group + +-- Implementation of the TCP group is mandatory for all +-- systems that implement the TCP. + +-- Note that instances of object types that represent +-- information about a particular TCP connection are +-- transient; they persist only as long as the connection +-- in question. + +tcpRtoAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + + constant(2), -- a constant rto + rsre(3), -- MIL-STD-1778, Appendix B + vanj(4) -- Van Jacobson's algorithm [10] + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The algorithm used to determine the timeout value + used for retransmitting unacknowledged octets." + ::= { tcp 1 } + +tcpRtoMin OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The minimum value permitted by a TCP + implementation for the retransmission timeout, + measured in milliseconds. More refined semantics + for objects of this type depend upon the algorithm + used to determine the retransmission timeout. In + particular, when the timeout algorithm is rsre(3), + an object of this type has the semantics of the + LBOUND quantity described in RFC 793." + ::= { tcp 2 } + + +tcpRtoMax OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum value permitted by a TCP + implementation for the retransmission timeout, + measured in milliseconds. More refined semantics + for objects of this type depend upon the algorithm + used to determine the retransmission timeout. In + particular, when the timeout algorithm is rsre(3), + an object of this type has the semantics of the + UBOUND quantity described in RFC 793." + ::= { tcp 3 } + +tcpMaxConn OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The limit on the total number of TCP connections + the entity can support. In entities where the + maximum number of connections is dynamic, this + object should contain the value -1." + ::= { tcp 4 } + +tcpActiveOpens OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times TCP connections have made a + direct transition to the SYN-SENT state from the + CLOSED state." + ::= { tcp 5 } + +tcpPassiveOpens OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times TCP connections have made a + direct transition to the SYN-RCVD state from the + LISTEN state." + ::= { tcp 6 } + +tcpAttemptFails OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times TCP connections have made a + direct transition to the CLOSED state from either + the SYN-SENT state or the SYN-RCVD state, plus the + number of times TCP connections have made a direct + transition to the LISTEN state from the SYN-RCVD + state." + ::= { tcp 7 } + +tcpEstabResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times TCP connections have made a + direct transition to the CLOSED state from either + the ESTABLISHED state or the CLOSE-WAIT state." + ::= { tcp 8 } + +tcpCurrEstab OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of TCP connections for which the + current state is either ESTABLISHED or CLOSE- + WAIT." + ::= { tcp 9 } + +tcpInSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of segments received, including + those received in error. This count includes + segments received on currently established + connections." + ::= { tcp 10 } + +tcpOutSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of segments sent, including + those on current connections but excluding those + containing only retransmitted octets." + ::= { tcp 11 } + +tcpRetransSegs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of segments retransmitted - that + is, the number of TCP segments transmitted + containing one or more previously transmitted + octets." + ::= { tcp 12 } + + +-- the TCP Connection table + +-- The TCP connection table contains information about this +-- entity's existing TCP connections. + +tcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing TCP connection-specific + information." + ::= { tcp 13 } + +tcpConnEntry OBJECT-TYPE + SYNTAX TcpConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current TCP + connection. An object of this type is transient, + in that it ceases to exist when (or soon after) + the connection makes the transition to the CLOSED + state." + INDEX { tcpConnLocalAddress, + tcpConnLocalPort, + tcpConnRemAddress, + tcpConnRemPort } + ::= { tcpConnTable 1 } + +TcpConnEntry ::= + SEQUENCE { + tcpConnState + INTEGER, + tcpConnLocalAddress + IpAddress, + tcpConnLocalPort + INTEGER (0..65535), + tcpConnRemAddress + IpAddress, + tcpConnRemPort + INTEGER (0..65535) + } + +tcpConnState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + listen(2), + synSent(3), + synReceived(4), + established(5), + finWait1(6), + finWait2(7), + closeWait(8), + lastAck(9), + closing(10), + timeWait(11), + deleteTCB(12) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this TCP connection. + + The only value which may be set by a management + station is deleteTCB(12). Accordingly, it is + appropriate for an agent to return a `badValue' + response if a management station attempts to set + this object to any other value. + + If a management station sets this object to the + value deleteTCB(12), then this has the effect of + deleting the TCB (as defined in RFC 793) of the + corresponding connection on the managed node, + resulting in immediate termination of the + connection. + + As an implementation-specific option, a RST + segment may be sent from the managed node to the + other TCP endpoint (note however that RST segments + are not sent reliably)." + ::= { tcpConnEntry 1 } + +tcpConnLocalAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local IP address for this TCP connection. In + the case of a connection in the listen state which + is willing to accept connections for any IP + interface associated with the node, the value + 0.0.0.0 is used." + ::= { tcpConnEntry 2 } + +tcpConnLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpConnEntry 3 } + +tcpConnRemAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote IP address for this TCP connection." + ::= { tcpConnEntry 4 } + +tcpConnRemPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote port number for this TCP connection." + ::= { tcpConnEntry 5 } + + +-- additional TCP objects + +tcpInErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of segments received in error + (e.g., bad TCP checksums)." + ::= { tcp 14 } + +tcpOutRsts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of TCP segments sent containing the + RST flag." + ::= { tcp 15 } + + +-- the UDP group + +-- Implementation of the UDP group is mandatory for all +-- systems which implement the UDP. + +udpInDatagrams OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of UDP datagrams delivered to + UDP users." + ::= { udp 1 } + +udpNoPorts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of received UDP datagrams for + which there was no application at the destination + port." + ::= { udp 2 } + +udpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of received UDP datagrams that could + not be delivered for reasons other than the lack + of an application at the destination port." + ::= { udp 3 } + +udpOutDatagrams OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of UDP datagrams sent from this + entity." + ::= { udp 4 } + + +-- the UDP Listener table + +-- The UDP listener table contains information about this +-- entity's UDP end-points on which a local application is +-- currently accepting datagrams. + +udpTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing UDP listener information." + ::= { udp 5 } + +udpEntry OBJECT-TYPE + SYNTAX UdpEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current UDP + listener." + INDEX { udpLocalAddress, udpLocalPort } + ::= { udpTable 1 } + +UdpEntry ::= + SEQUENCE { + udpLocalAddress + IpAddress, + udpLocalPort + INTEGER (0..65535) + } + +udpLocalAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local IP address for this UDP listener. In + the case of a UDP listener which is willing to + accept datagrams for any IP interface associated + with the node, the value 0.0.0.0 is used." + ::= { udpEntry 1 } + +udpLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this UDP listener." + ::= { udpEntry 2 } + + +-- the EGP group + +-- Implementation of the EGP group is mandatory for all +-- systems which implement the EGP. + +egpInMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of EGP messages received without + error." + ::= { egp 1 } + +egpInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of EGP messages received that proved + to be in error." + ::= { egp 2 } + +egpOutMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of locally generated EGP + messages." + ::= { egp 3 } + +egpOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of locally generated EGP messages not + sent due to resource limitations within an EGP + entity." + ::= { egp 4 } + + +-- the EGP Neighbor table + +-- The EGP neighbor table contains information about this +-- entity's EGP neighbors. + +egpNeighTable OBJECT-TYPE + SYNTAX SEQUENCE OF EgpNeighEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The EGP neighbor table." + ::= { egp 5 } + +egpNeighEntry OBJECT-TYPE + SYNTAX EgpNeighEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about this entity's relationship with + a particular EGP neighbor." + INDEX { egpNeighAddr } + ::= { egpNeighTable 1 } + +EgpNeighEntry ::= + SEQUENCE { + egpNeighState + INTEGER, + egpNeighAddr + IpAddress, + egpNeighAs + INTEGER, + egpNeighInMsgs + Counter, + egpNeighInErrs + Counter, + egpNeighOutMsgs + Counter, + egpNeighOutErrs + Counter, + egpNeighInErrMsgs + Counter, + egpNeighOutErrMsgs + Counter, + egpNeighStateUps + Counter, + egpNeighStateDowns + Counter, + egpNeighIntervalHello + INTEGER, + egpNeighIntervalPoll + INTEGER, + egpNeighMode + INTEGER, + egpNeighEventTrigger + INTEGER + } + +egpNeighState OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + acquisition(2), + down(3), + up(4), + cease(5) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The EGP state of the local system with respect to + this entry's EGP neighbor. Each EGP state is + represented by a value that is one greater than + the numerical value associated with said state in + RFC 904." + ::= { egpNeighEntry 1 } + +egpNeighAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP address of this entry's EGP neighbor." + ::= { egpNeighEntry 2 } + +egpNeighAs OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The autonomous system of this EGP peer. Zero + should be specified if the autonomous system + number of the neighbor is not yet known." + ::= { egpNeighEntry 3 } + +egpNeighInMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of EGP messages received without error + from this EGP peer." + ::= { egpNeighEntry 4 } + +egpNeighInErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of EGP messages received from this EGP + peer that proved to be in error (e.g., bad EGP + checksum)." + ::= { egpNeighEntry 5 } + +egpNeighOutMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of locally generated EGP messages to + this EGP peer." + ::= { egpNeighEntry 6 } + +egpNeighOutErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of locally generated EGP messages not + sent to this EGP peer due to resource limitations + within an EGP entity." + ::= { egpNeighEntry 7 } + +egpNeighInErrMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of EGP-defined error messages received + from this EGP peer." + ::= { egpNeighEntry 8 } + +egpNeighOutErrMsgs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of EGP-defined error messages sent to + this EGP peer." + ::= { egpNeighEntry 9 } + +egpNeighStateUps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of EGP state transitions to the UP + state with this EGP peer." + ::= { egpNeighEntry 10 } + +egpNeighStateDowns OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of EGP state transitions from the UP + state to any other state with this EGP peer." + ::= { egpNeighEntry 11 } + +egpNeighIntervalHello OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The interval between EGP Hello command + retransmissions (in hundredths of a second). This + represents the t1 timer as defined in RFC 904." + ::= { egpNeighEntry 12 } + +egpNeighIntervalPoll OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The interval between EGP poll command + retransmissions (in hundredths of a second). This + represents the t3 timer as defined in RFC 904." + ::= { egpNeighEntry 13 } + +egpNeighMode OBJECT-TYPE + SYNTAX INTEGER { active(1), passive(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The polling mode of this EGP entity, either + passive or active." + ::= { egpNeighEntry 14 } + +egpNeighEventTrigger OBJECT-TYPE + SYNTAX INTEGER { start(1), stop(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A control variable used to trigger operator- + initiated Start and Stop events. When read, this + variable always returns the most recent value that + egpNeighEventTrigger was set to. If it has not + been set since the last initialization of the + network management subsystem on the node, it + returns a value of `stop'. + + When set, this variable causes a Start or Stop + event on the specified neighbor, as specified on + pages 8-10 of RFC 904. Briefly, a Start event + causes an Idle peer to begin neighbor acquisition + and a non-Idle peer to reinitiate neighbor + acquisition. A stop event causes a non-Idle peer + to return to the Idle state until a Start event + occurs, either via egpNeighEventTrigger or + otherwise." + ::= { egpNeighEntry 15 } + + +-- additional EGP objects + +egpAs OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The autonomous system number of this EGP entity." + ::= { egp 6 } + +-- the Transmission group + +-- Based on the transmission media underlying each interface +-- on a system, the corresponding portion of the Transmission +-- group is mandatory for that system. + +-- When Internet-standard definitions for managing +-- transmission media are defined, the transmission group is +-- used to provide a prefix for the names of those objects. + +-- Typically, such definitions reside in the experimental +-- portion of the MIB until they are "proven", then as a +-- part of the Internet standardization process, the +-- definitions are accordingly elevated and a new object +-- identifier, under the transmission group is defined. By +-- convention, the name assigned is: +-- +-- type OBJECT IDENTIFIER ::= { transmission number } +-- +-- where "type" is the symbolic value used for the media in +-- the ifType column of the ifTable object, and "number" is +-- the actual integer value corresponding to the symbol. + + +-- the SNMP group + +-- Implementation of the SNMP group is mandatory for all +-- systems which support an SNMP protocol entity. Some of +-- the objects defined below will be zero-valued in those +-- SNMP implementations that are optimized to support only +-- those functions specific to either a management agent or +-- a management station. In particular, it should be +-- observed that the objects below refer to an SNMP entity, +-- and there may be several SNMP entities residing on a +-- managed node (e.g., if the node is hosting acting as +-- a management station). + +snmpInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of Messages delivered to the + SNMP entity from the transport service." + ::= { snmp 1 } + +snmpOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service." + ::= { snmp 2 } + +snmpInBadVersions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Messages which were + delivered to the SNMP protocol entity and were for + an unsupported SNMP version." + ::= { snmp 3 } + +snmpInBadCommunityNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Messages delivered to + the SNMP protocol entity which used a SNMP + community name not known to said entity." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Messages delivered to + the SNMP protocol entity which represented an SNMP + operation which was not allowed by the SNMP + community named in the Message." + ::= { snmp 5 } + +snmpInASNParseErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ASN.1 or BER errors + encountered by the SNMP protocol entity when + decoding received SNMP Messages." + ::= { snmp 6 } + +-- { snmp 7 } is not used + +snmpInTooBigs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field is + `tooBig'." + ::= { snmp 8 } + +snmpInNoSuchNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field is + `noSuchName'." + ::= { snmp 9 } + +snmpInBadValues OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field is + `badValue'." + ::= { snmp 10 } + +snmpInReadOnlys OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number valid SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field is + `readOnly'. It should be noted that it is a + protocol error to generate an SNMP PDU which + contains the value `readOnly' in the error-status + field, as such this object is provided as a means + of detecting incorrect implementations of the + SNMP." + ::= { snmp 11 } + +snmpInGenErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field is + `genErr'." + ::= { snmp 12 } + +snmpInTotalReqVars OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MIB objects which have been + retrieved successfully by the SNMP protocol entity + as the result of receiving valid SNMP Get-Request + and Get-Next PDUs." + ::= { snmp 13 } + +snmpInTotalSetVars OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MIB objects which have been + altered successfully by the SNMP protocol entity + as the result of receiving valid SNMP Set-Request + PDUs." + ::= { snmp 14 } + +snmpInGetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity." + ::= { snmp 15 } + +snmpInGetNexts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have + been accepted and processed by the SNMP protocol + entity." + ::= { snmp 16 } + +snmpInSetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP + protocol entity." + ::= { snmp 17 } + +snmpInGetResponses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP + protocol entity." + ::= { snmp 18 } + +snmpInTraps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Trap PDUs which have + been accepted and processed by the SNMP protocol + entity." + ::= { snmp 19 } + +snmpOutTooBigs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP PDUs which were + generated by the SNMP protocol entity and for + which the value of the error-status field is + `tooBig.'" + ::= { snmp 20 } + +snmpOutNoSuchNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP PDUs which were + generated by the SNMP protocol entity and for + which the value of the error-status is + `noSuchName'." + ::= { snmp 21 } + +snmpOutBadValues OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP PDUs which were + generated by the SNMP protocol entity and for + which the value of the error-status field is + `badValue'." + ::= { snmp 22 } + +-- { snmp 23 } is not used + +snmpOutGenErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP PDUs which were + generated by the SNMP protocol entity and for + which the value of the error-status field is + `genErr'." + ::= { snmp 24 } + +snmpOutGetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 25 } + +snmpOutGetNexts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 26 } + +snmpOutSetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 27 } + +snmpOutGetResponses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 28 } + +snmpOutTraps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 29 } + +snmpEnableAuthenTraps OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates whether the SNMP agent process is + permitted to generate authentication-failure + traps. The value of this object overrides any + configuration information; as such, it provides a + means whereby all authentication-failure traps may + be disabled. + + Note that it is strongly recommended that this + object be stored in non-volatile memory so that it + remains constant between re-initializations of the + network management system." + ::= { snmp 30 } + +END diff --git a/mibs/ietf/RFC1269-MIB b/mibs/ietf/RFC1269-MIB new file mode 100644 index 0000000..996892e --- /dev/null +++ b/mibs/ietf/RFC1269-MIB @@ -0,0 +1,375 @@ +RFC1269-MIB DEFINITIONS ::= BEGIN + +IMPORTS + NetworkAddress, IpAddress, Counter + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212 + TRAP-TYPE + FROM RFC-1215; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [9], and the TRAP-TYPE macro as defined +-- in [10]. + +bgp OBJECT IDENTIFIER ::= { mib-2 15 } + +bgpVersion OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Vector of supported BGP protocol version + numbers. Each peer negotiates the version from + this vector. Versions are identified via the + string of bits contained within this object. + The first octet contains bits 0 to 7, the + second octet contains bits 8 to 15, and so on, + with the most significant bit referring to the + lowest bit number in the octet (e.g., the MSB + of the first octet refers to bit 0). If a bit, + i, is present and set, then the version (i+1) + of the BGP is supported." + ::= { bgp 1 } + +bgpLocalAs OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local autonomous system number." + ::= { bgp 2 } + +bgpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF BgpPeerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The bgp peer table." + ::= { bgp 3 } + +bgpIdentifier OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The BGP Identifier of local system." + ::= { bgp 4 } + +bgpPeerEntry OBJECT-TYPE + SYNTAX BgpPeerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a BGP peer connection." + INDEX + { bgpPeerRemoteAddr } + ::= { bgpPeerTable 1 } + +BgpPeerEntry ::= SEQUENCE { + bgpPeerIdentifier + IpAddress, + bgpPeerState + INTEGER, + bgpPeerAdminStatus + INTEGER, + bgpPeerNegotiatedVersion + INTEGER, + bgpPeerLocalAddr + IpAddress, + bgpPeerLocalPort + INTEGER, + bgpPeerRemoteAddr + IpAddress, + bgpPeerRemotePort + INTEGER, + bgpPeerRemoteAs + INTEGER, + bgpPeerInUpdates + Counter, + bgpPeerOutUpdates + Counter, + bgpPeerInTotalMessages + Counter, + bgpPeerOutTotalMessages + Counter, + bgpPeerLastError + OCTET STRING + } + +bgpPeerIdentifier OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The BGP Identifier of this entry's BGP peer." + ::= { bgpPeerEntry 1 } + +bgpPeerState OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + connect(2), + active(3), + opensent(4), + openconfirm(5), + established(6) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The bgp peer connection state. " + ::= { bgpPeerEntry 2 } + +bgpPeerAdminStatus OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The desired state of the BGP connection. A + transition from 'stop' to 'start' will cause + the BGP Start Event to be generated. A + transition from 'start' to 'stop' will cause + the BGP Stop Event to be generated. This + parameter can be used to restart BGP peer + connections. Care should be used in providing + write access to this object without adequate + authentication." + ::= { bgpPeerEntry 3 } + +bgpPeerNegotiatedVersion OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The negotiated version of BGP running between + the two peers. " + ::= { bgpPeerEntry 4 } + +bgpPeerLocalAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local IP address of this entry's BGP + connection." + ::= { bgpPeerEntry 5 } + +bgpPeerLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port for the TCP connection between + the BGP peers." + ::= { bgpPeerEntry 6 } + +bgpPeerRemoteAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote IP address of this entry's BGP + peer." + ::= { bgpPeerEntry 7 } + +bgpPeerRemotePort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote port for the TCP connection between + the BGP peers. Note that the objects + bgpLocalAddr, bgpLocalPort, bgpRemoteAddr and + bgpRemotePort provide the appropriate reference + to the standard MIB TCP connection table." + ::= { bgpPeerEntry 8 } + +bgpPeerRemoteAs OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote autonomous system number." + ::= { bgpPeerEntry 9 } + +bgpPeerInUpdates OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of BGP UPDATE messages received on + this connection. This object should be + initialized to zero when the connection is + established." + ::= { bgpPeerEntry 10 } + +bgpPeerOutUpdates OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of BGP UPDATE messages received on + this connection. This object should be + initialized to zero when the connection is + established." + ::= { bgpPeerEntry 11} + +bgpPeerInTotalMessages OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of messages received from the + remote peer on this connection. This object + should be initialized to zero when the + connection is established." + ::= { bgpPeerEntry 12 } + +bgpPeerOutTotalMessages OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of messages transmitted to + the remote peer on this connection. This object + should be initialized to zero when the + connection is established." + ::= { bgpPeerEntry 13 } + +bgpPeerLastError OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last error code and subcode seen by this + peer on this connection. If no error has + occurred, this field is zero. Otherwise, the + first byte of this two byte OCTET STRING + contains the error code; the second contains + the subcode." + ::= { bgpPeerEntry 14 } + +bgpRcvdPathAttrTable OBJECT-TYPE + SYNTAX SEQUENCE OF BgpPathAttrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The BGP Received Path Attribute Table contains + information about paths to destination networks + received by all peers." + ::= { bgp 5 } + +bgpPathAttrEntry OBJECT-TYPE + SYNTAX BgpPathAttrEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a path to a network." + INDEX + { bgpPathAttrDestNetwork, + bgpPathAttrPeer } + ::= { bgpRcvdPathAttrTable 1 } + +BgpPathAttrEntry ::= SEQUENCE { + bgpPathAttrPeer + IpAddress, + bgpPathAttrDestNetwork + IpAddress, + bgpPathAttrOrigin + INTEGER, + bgpPathAttrASPath + OCTET STRING, + bgpPathAttrNextHop + IpAddress, + bgpPathAttrInterASMetric + INTEGER + } + +bgpPathAttrPeer OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP address of the peer where the path + information + was learned." + ::= { bgpPathAttrEntry 1 } + +bgpPathAttrDestNetwork OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the destination network." + ::= { bgpPathAttrEntry 2 } + +bgpPathAttrOrigin OBJECT-TYPE + SYNTAX INTEGER { + igp(1),-- networks are interior + egp(2),-- networks learned via EGP + incomplete(3) -- undetermined + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ultimate origin of the path information." + ::= { bgpPathAttrEntry 3 } + +bgpPathAttrASPath OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of ASs that must be traversed to reach + the network. ( This object is probably best + represented as SEQUENCE OF INTEGER. For SMI + compatibility, though, it is represented as + OCTET STRING. Each AS is represented as a pair + of octets according to the following algorithm: + + first-byte-of-pair = ASNumber / 256; + second-byte-of-pair = ASNumber & 255;" + ::= { bgpPathAttrEntry 4 } + +bgpPathAttrNextHop OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The address of the border router that should + be used for the destination network." + ::= { bgpPathAttrEntry 5 } + +bgpPathAttrInterASMetric OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The optional inter-AS metric. If this + attribute has not been provided for this route, + the value for this object is 0." + ::= { bgpPathAttrEntry 6 } + +bgpEstablished TRAP-TYPE + ENTERPRISE bgp + VARIABLES { bgpPeerRemoteAddr, + bgpPeerLastError, + bgpPeerState } + DESCRIPTION + "The BGP Established event is generated when + the BGP FSM enters the ESTABLISHED state. " + ::= 1 + +bgpBackwardTransition TRAP-TYPE + ENTERPRISE bgp + VARIABLES { bgpPeerRemoteAddr, + bgpPeerLastError, + bgpPeerState } + DESCRIPTION + "The BGPBackwardTransition Event is generated + when the BGP FSM moves from a higher numbered + state to a lower numbered state." + ::= 2 +END diff --git a/mibs/ietf/RFC1271-MIB b/mibs/ietf/RFC1271-MIB new file mode 100644 index 0000000..1e00984 --- /dev/null +++ b/mibs/ietf/RFC1271-MIB @@ -0,0 +1,3356 @@ + RFC1271-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter FROM RFC1155-SMI + mib-2, DisplayString FROM RFC1213-MIB + OBJECT-TYPE FROM RFC-1212; + + -- This MIB module uses the extended OBJECT-TYPE macro as + -- defined in [9]. + + + -- Remote Network Monitoring MIB + + rmon OBJECT IDENTIFIER ::= { mib-2 16 } + + + -- textual conventions + + OwnerString ::= DisplayString + -- 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: + -- IP address, management station name, network manager'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 'monitor'. + + -- + -- SNMP access control is articulated entirely in terms of + -- the contents of MIB views; access to a particular SNMP + -- object instance depends only upon its presence or + -- absence in a particular MIB view and never upon its + -- value or the value of related object instances. Thus, + -- objects of this type afford resolution of resource + -- contention only among cooperating managers; they + -- realize no access control function with respect + -- to uncooperative parties. + -- + -- By convention, objects with this syntax are declared + -- as having + -- + -- SIZE (0..127) + + + EntryStatus ::= INTEGER + { valid(1), + createRequest(2), + underCreation(3), + invalid(4) + } + + -- The status of a table entry. + -- + -- Setting this object to the value invalid(4) has the + -- effect of invalidating the corresponding entry. + -- That is, it effectively disassociates the mapping + -- identified with said entry. + -- It is an implementation-specific matter as to whether + -- the agent removes an invalidated entry from the table. + -- Accordingly, management stations must be prepared to + -- receive tabular information from agents that corresponds + -- to entries currently not in use. Proper + -- interpretation of such entries requires examination + -- of the relevant EntryStatus object. + -- + -- An existing instance of this object cannot be set to + -- createRequest(2). This object may only be set to + -- createRequest(2) when this instance is created. When + -- this object is created, the agent may wish to create + -- supplemental object instances to complete a conceptual + -- row in this table. Immediately after completing the + -- create operation, the agent must set this object to + -- underCreation(3). + -- + -- Entries shall exist in the underCreation(3) state until + + -- the management station is finished configuring the + -- entry and sets this object to valid(1) or aborts, + -- setting this object to invalid(4). If the agent + -- determines that an entry has been in the + -- underCreation(3) state for an abnormally long time, + -- it may decide that the management station has + -- crashed. If the agent makes this decision, + -- it may set this object to invalid(4) to reclaim the + -- entry. A prudent agent will understand that the + -- management station may need to wait for human input + -- and will allow for that possibility in its + -- determination of this abnormally long period. + + + statistics OBJECT IDENTIFIER ::= { rmon 1 } + history OBJECT IDENTIFIER ::= { rmon 2 } + alarm OBJECT IDENTIFIER ::= { rmon 3 } + hosts OBJECT IDENTIFIER ::= { rmon 4 } + hostTopN OBJECT IDENTIFIER ::= { rmon 5 } + matrix OBJECT IDENTIFIER ::= { rmon 6 } + filter OBJECT IDENTIFIER ::= { rmon 7 } + capture OBJECT IDENTIFIER ::= { rmon 8 } + event OBJECT IDENTIFIER ::= { rmon 9 } + + + -- The Statistics Group + -- + -- Implementation of the Statistics group is optional. + -- + -- The statistics group contains statistics measured by the + -- probe for each monitored interface on this device. These + -- statistics take the form of free running counters that + -- start from zero when a valid entry is created. + -- + -- This group currently has statistics defined only for + -- Ethernet interfaces. Each etherStatsEntry contains + -- statistics for one Ethernet interface. The probe must + -- create one etherStats entry for each monitored Ethernet + -- interface on the device. + + etherStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Ethernet statistics entries." + ::= { statistics 1 } + + etherStatsEntry OBJECT-TYPE + SYNTAX EtherStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics kept for a particular + Ethernet interface." + INDEX { etherStatsIndex } + ::= { etherStatsTable 1 } + + EtherStatsEntry ::= SEQUENCE { + etherStatsIndex INTEGER (1..65535), + etherStatsDataSource OBJECT IDENTIFIER, + etherStatsDropEvents Counter, + etherStatsOctets Counter, + etherStatsPkts Counter, + etherStatsBroadcastPkts Counter, + etherStatsMulticastPkts Counter, + etherStatsCRCAlignErrors Counter, + etherStatsUndersizePkts Counter, + etherStatsOversizePkts Counter, + etherStatsFragments Counter, + etherStatsJabbers Counter, + etherStatsCollisions Counter, + etherStatsPkts64Octets Counter, + etherStatsPkts65to127Octets Counter, + etherStatsPkts128to255Octets Counter, + etherStatsPkts256to511Octets Counter, + etherStatsPkts512to1023Octets Counter, + etherStatsPkts1024to1518Octets Counter, + etherStatsOwner OwnerString, + etherStatsStatus INTEGER + } + + etherStatsIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies this + etherStats entry." + ::= { etherStatsEntry 1 } + + etherStatsDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data that + this etherStats entry is configured to analyze. This + source can be any ethernet interface on this device. + In order to identify a particular interface, this + object shall identify the instance of the ifIndex + object, defined in [4,6], 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 packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + etherStatsStatus object is equal to valid(1)." + ::= { etherStatsEntry 2 } + + etherStatsDropEvents 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." + ::= { etherStatsEntry 3 } + + etherStatsOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets)." + ::= { etherStatsEntry 4 } + + etherStatsPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error packets) + received." + ::= { etherStatsEntry 5 } + + etherStatsBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good packets received that were + directed to the broadcast address." + ::= { etherStatsEntry 6 } + + etherStatsMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of good packets received that were + directed to a multicast address. Note that this + number does not include packets directed to the + broadcast address." + ::= { etherStatsEntry 7 } + + etherStatsCRCAlignErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that + had a length (excluding framing bits, but + including FCS octets) of between 64 and 1518 + octets, inclusive, but were not an integral number + of octets in length or had a bad Frame Check + Sequence (FCS)." + ::= { etherStatsEntry 8 } + + etherStatsUndersizePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that were + less than 64 octets long (excluding framing bits, + but including FCS octets) and were otherwise well + formed." + ::= { etherStatsEntry 9 } + + etherStatsOversizePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that were + longer than 1518 octets (excluding framing bits, + but including FCS octets) and were otherwise + well formed." + ::= { etherStatsEntry 10 } + + etherStatsFragments OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that were not an + integral number of octets in length or that had a bad + Frame Check Sequence (FCS), and were less than 64 + octets in length (excluding framing bits but + including FCS octets)." + ::= { etherStatsEntry 11 } + + etherStatsJabbers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received that were + longer than 1518 octets (excluding framing bits, + but including FCS octets), and were not an + integral number of octets in length or had + a bad Frame Check Sequence (FCS)." + ::= { etherStatsEntry 12 } + + etherStatsCollisions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The best estimate of the total number of collisions + on this Ethernet segment." + ::= { etherStatsEntry 13 } + + etherStatsPkts64Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were 64 octets in length + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 14 } + + etherStatsPkts65to127Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 65 and 127 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 15 } + + etherStatsPkts128to255Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 128 and 255 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 16 } + + etherStatsPkts256to511Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 256 and 511 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 17 } + + etherStatsPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 512 and 1023 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 18 } + + etherStatsPkts1024to1518Octets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets (including error + packets) received that were between + 1024 and 1518 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 19 } + + etherStatsOwner 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." + ::= { etherStatsEntry 20 } + + etherStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this etherStats entry." + ::= { etherStatsEntry 21 } + + + -- The History Group + + -- Implementation of the History group is optional. + -- + -- The history group records periodic statistical samples from + -- a network and stores them for later retrieval. The + -- historyControl table stores configuration entries that each + -- define an interface, polling period, and other parameters. + -- Once samples are taken, their data is stored in an entry + -- in a media-specific table. Each such entry defines one + -- sample, and is associated with the historyControlEntry that + -- caused the sample to be taken. Currently the only media- + -- specific table defined is the etherHistoryTable, for + -- Ethernet networks. + -- + -- 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. This tends to make more + + -- user-friendly reports, and enables comparison of reports + -- from different probes that have relatively accurate time + -- of day. + -- + -- The monitor is encouraged to add two history control entries + -- per monitored interface upon initialization that describe + -- a short term and a long term polling period. Suggested + -- parameters are 30 seconds for the short term polling + -- period and 30 minutes for the long term period. + + historyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of history control entries." + ::= { history 1 } + + historyControlEntry OBJECT-TYPE + SYNTAX HistoryControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of parameters that set up a periodic + sampling of statistics." + INDEX { historyControlIndex } + ::= { historyControlTable 1 } + + HistoryControlEntry ::= SEQUENCE { + historyControlIndex INTEGER (1..65535), + historyControlDataSource OBJECT IDENTIFIER, + historyControlBucketsRequested INTEGER (1..65535), + historyControlBucketsGranted INTEGER (1..65535), + historyControlInterval INTEGER (1..3600), + historyControlOwner OwnerString, + historyControlStatus INTEGER + } + + historyControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + historyControl table. Each such entry defines a + set of samples at a particular interval for an + interface on the device." + ::= { historyControlEntry 1 } + + historyControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data for + which historical data was collected and + placed in a media-specific table on behalf of this + historyControlEntry. 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 [4,6], 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 packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + historyControlStatus object is equal to valid(1)." + ::= { historyControlEntry 2 } + + historyControlBucketsRequested OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The requested number of discrete time intervals + over which data is to be saved in the part of the + media-specific table associated with this + historyControl entry. + + When this object is created or modified, the probe + should set historyControlBucketsGranted as closely to + this object as is possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { historyControlEntry 3 } + + historyControlBucketsGranted OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of discrete sampling intervals + over which data shall be saved in the part of + the media-specific table associated with this + historyControl entry. + + When the associated historyControlBucketsRequested + 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 + historyControlBucketsRequested object. + + 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 media-specific table. + + When the number of buckets reaches the value of + this object and a new bucket is to be added to the + media-specific table, the oldest bucket associated + with this historyControlEntry 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 media-specific table associated with this + historyControlEntry. 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 media-specific entries may be allowed + to grow." + ::= { historyControlEntry 4 } + + historyControlInterval OBJECT-TYPE + SYNTAX INTEGER (1..3600) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The interval in seconds over which the data is + sampled for each bucket in the part of the + media-specific table associated with this + historyControl entry. This interval can + be set to any number of seconds between 1 and + 3600 (1 hour). + + 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 historyControlInterval object to a value less + than this interval. This is typically most + important for the 'octets' counter in any + media-specific table. For example, on an Ethernet + network, the etherHistoryOctets counter could overflow + in about one hour at the Ethernet's maximum + utilization. + + This object may not be modified if the associated + historyControlStatus object is equal to valid(1)." + DEFVAL { 1800 } + ::= { historyControlEntry 5 } + + historyControlOwner 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." + ::= { historyControlEntry 6 } + + historyControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this historyControl entry. + + Each instance of the media-specific table associated + with this historyControlEntry will be deleted by the + agent if this historyControlEntry is not equal to + valid(1)." + ::= { historyControlEntry 7 } + + + -- Ether History table + + etherHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of Ethernet history entries." + ::= { history 2 } + + etherHistoryEntry OBJECT-TYPE + SYNTAX EtherHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An historical sample of Ethernet statistics on a + particular Ethernet interface. This sample is + associated with the historyControlEntry which set + up the parameters for a regular collection of these + samples." + INDEX { etherHistoryIndex , etherHistorySampleIndex } + ::= { etherHistoryTable 1 } + + EtherHistoryEntry ::= SEQUENCE { + etherHistoryIndex INTEGER (1..65535), + etherHistorySampleIndex INTEGER, + etherHistoryIntervalStart TimeTicks, + etherHistoryDropEvents Counter, + etherHistoryOctets Counter, + etherHistoryPkts Counter, + etherHistoryBroadcastPkts Counter, + etherHistoryMulticastPkts Counter, + etherHistoryCRCAlignErrors Counter, + etherHistoryUndersizePkts Counter, + etherHistoryOversizePkts Counter, + etherHistoryFragments Counter, + etherHistoryJabbers Counter, + etherHistoryCollisions Counter, + etherHistoryUtilization INTEGER (0..10000) + } + + etherHistoryIndex 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." + ::= { etherHistoryEntry 1 } + + etherHistorySampleIndex 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." + ::= { etherHistoryEntry 2 } + + etherHistoryIntervalStart 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." + ::= { etherHistoryEntry 3 } + + etherHistoryDropEvents 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 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." + ::= { etherHistoryEntry 4 } + + etherHistoryOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets)." + ::= { etherHistoryEntry 5 } + + etherHistoryPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets (including error packets) + received during this sampling interval." + ::= { etherHistoryEntry 6 } + + etherHistoryBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets received during this + sampling interval that were directed to the + broadcast address." + ::= { etherHistoryEntry 7 } + + etherHistoryMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets received during this + sampling interval that were directed to a + multicast address. Note that this number does not + include packets addressed to the broadcast address." + ::= { etherHistoryEntry 8 } + + etherHistoryCRCAlignErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received during this + sampling interval that had a length (excluding + framing bits but including FCS octets) between + 64 and 1518 octets, inclusive, but were not an + integral number of octets in length or had a + bad Frame Check Sequence (FCS)." + ::= { etherHistoryEntry 9 } + + etherHistoryUndersizePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received during this + interval that were less than 64 octets long + (excluding framing bits but including FCS + octets) and were otherwise well formed." + ::= { etherHistoryEntry 10 } + + etherHistoryOversizePkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received during this + interval that were longer than 1518 octets + (excluding framing bits but including FCS + octets) but were otherwise well formed." + ::= { etherHistoryEntry 11 } + + etherHistoryFragments OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets received during this + sampling interval that were not an integral + number of octets in length or that + had a bad Frame Check Sequence (FCS), and + were less than 64 octets in length (excluding + framing bits but including FCS octets)." + ::= { etherHistoryEntry 12 } + + etherHistoryJabbers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received during this + interval that were longer than 1518 octets + (excluding framing bits but including FCS octets), + and were not an integral number of octets in + length or had a bad Frame Check Sequence (FCS)." + ::= { etherHistoryEntry 13 } + + etherHistoryCollisions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The best estimate of the total number of collisions + on this Ethernet segment during this interval." + ::= { etherHistoryEntry 14 } + + etherHistoryUtilization OBJECT-TYPE + SYNTAX INTEGER (0..10000) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The best estimate of the mean physical layer + network utilization on this interface during this + interval, in hundredths of a percent." + ::= { etherHistoryEntry 15 } + + + -- The Alarm Group + + -- Implementation of the Alarm group is optional. + -- + -- The Alarm Group requires the implementation of the Event + -- group. + -- + -- The Alarm group periodically takes statistical samples from + -- variables in the probe and compares them to thresholds + -- that have been configured. The alarm table stores + -- configuration entries that each define a variable, + -- polling period, and threshold parameters. If a sample is + -- found to cross the threshold values, an event is + -- generated. Only variables that resolve to an ASN.1 + -- primitive type of INTEGER (INTEGER, Counter, + -- Gauge, or TimeTicks) may be monitored in this way. + -- + -- This function has a hysteresis mechanism to limit the + -- generation of events. This mechanism generates one event + -- as a threshold is crossed in the appropriate direction. + -- No more events are generated for that threshold until the + -- opposite threshold is crossed. + -- + -- In the case of a sampling a deltaValue, a probe may + -- implement this mechanism with more precision if it takes + -- a delta sample twice per period, each time comparing the + -- sum of the latest two samples to the threshold. This + -- allows the detection of threshold crossings + + -- that span the sampling boundary. Note that this does not + -- require any special configuration of the threshold value. + -- It is suggested that probes implement this more precise + -- algorithm. + + alarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of alarm entries." + ::= { alarm 1 } + + alarmEntry OBJECT-TYPE + SYNTAX AlarmEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of parameters that set up a periodic checking + for alarm conditions." + INDEX { alarmIndex } + ::= { alarmTable 1 } + + AlarmEntry ::= SEQUENCE { + alarmIndex INTEGER (1..65535), + alarmInterval INTEGER, + alarmVariable OBJECT IDENTIFIER, + alarmSampleType INTEGER, + alarmValue INTEGER, + alarmStartupAlarm INTEGER, + alarmRisingThreshold INTEGER, + alarmFallingThreshold INTEGER, + alarmRisingEventIndex INTEGER (1..65535), + alarmFallingEventIndex INTEGER (1..65535), + alarmOwner OwnerString, + alarmStatus INTEGER + } + + alarmIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + alarm table. Each such entry defines a + diagnostic sample at a particular interval + for an object on the device." + ::= { alarmEntry 1 } + + alarmInterval OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The interval in seconds over which the data is + sampled and compared with the rising and falling + thresholds. When setting this variable, care + should be given to ensure that the variable being + monitored will not exceed 2^31 - 1 and roll + over the alarmValue object during the interval. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 2 } + + alarmVariable OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The object identifier of the particular variable to + be sampled. Only variables that resolve to an ASN.1 + primitive type of INTEGER (INTEGER, 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 alarm 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. If at any time + the variable name of an established alarmEntry is + no longer available in the selected MIB view, the + probe must change the status of this alarmEntry + to invalid(4). + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 3 } + + alarmSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The method of sampling the selected variable and + calculating the value to be compared against the + thresholds. If the value of this object is + absoluteValue(1), the value of the selected variable + will be compared directly with the thresholds at the + end of the sampling interval. 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 compared with + the thresholds. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 4 } + + alarmValue OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the statistic during the last sampling + period. The value during the current sampling period + is not made available until the period is completed." + ::= { alarmEntry 5 } + + alarmStartupAlarm OBJECT-TYPE + SYNTAX INTEGER { + risingAlarm(1), + fallingAlarm(2), + risingOrFallingAlarm(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The alarm that may be sent when this entry is first + set to valid. If the first sample after this entry + becomes valid is greater than or equal to the + risingThreshold and alarmStartupAlarm is equal to + risingAlarm(1) or risingOrFallingAlarm(3), then a + single rising alarm will be generated. If the first + sample after this entry becomes valid is less than + or equal to the fallingThreshold and + alarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3), then a single falling + alarm will be generated. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 6 } + + alarmRisingThreshold OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A threshold for the sampled statistic. When the + current sampled value is greater than or equal to + this threshold, and the value at the last sampling + interval was less than this threshold, a single + event will be generated. + A single event will also be generated if the first + sample after this entry becomes valid is greater + than or equal to this threshold and the associated + alarmStartupAlarm is equal to risingAlarm(1) or + risingOrFallingAlarm(3). + + After a rising event is generated, another such event + will not be generated until the sampled value + falls below this threshold and reaches the + alarmFallingThreshold. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 7 } + + alarmFallingThreshold OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A threshold for the sampled statistic. When the + current sampled value is less than or equal to + this threshold, and the value at the last sampling + interval was greater than this threshold, a single + event will be generated. + A single event will also be generated if the first + sample after this entry becomes valid is less than or + equal to this threshold and the associated + alarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3). + + After a falling event is generated, another such event + will not be generated until the sampled value + rises above this threshold and reaches the + alarmRisingThreshold. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 8 } + + alarmRisingEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The index of the eventEntry that is + used when a rising threshold is crossed. The + eventEntry identified by a particular value of + this index is the same as identified by the same value + of the eventIndex object. If there is no + corresponding entry in the eventTable, then + no association exists. In particular, if this value + is zero, no associated event will be generated, as + zero is not a valid event index. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 9 } + + alarmFallingEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The index of the eventEntry that is + used when a falling threshold is crossed. The + eventEntry identified by a particular value of + this index is the same as identified by the same value + of the eventIndex object. If there is no + corresponding entry in the eventTable, then + no association exists. In particular, if this value + is zero, no associated event will be generated, as + zero is not a valid event index. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 10 } + + alarmOwner 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." + ::= { alarmEntry 11 } + + alarmStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this alarm entry." + ::= { alarmEntry 12 } + + + -- The Host Group + + -- Implementation of the Host group is optional. + -- + -- The host group discovers new hosts on the network by + -- keeping a list of source and destination MAC Addresses seen + -- in good packets. For each of these addresses, the host + -- group keeps a set of statistics. The hostControlTable + -- controls which interfaces this function is performed on, + -- and contains some information about the process. On + -- behalf of each hostControlEntry, data is collected on an + -- interface and placed both the hostTable and the + -- hostTimeTable. If the monitoring device finds itself + -- short of resources, it may delete entries as needed. It + -- is suggested that the device delete the least recently + -- used entries first. + + -- The hostTable contains entries for each address + -- discovered on a particular interface. Each entry + -- contains statistical data about that host. This table + -- is indexed by the MAC address of the host, through + -- which a random access may be achieved. + + -- The hostTimeTable contains data in the same format as the + -- hostTable, and must contain the same set of hosts, but is + -- indexed using hostTimeCreationOrder rather than hostAddress. + -- The hostTimeCreationOrder is an integer which reflects + -- the relative order in which a particular entry was + + -- discovered and thus inserted into the table. As this + -- order, and thus index, is among those entries currently + -- in the table, the index for a particular entry may change + -- if an (earlier) entry is deleted. Thus the association + -- between hostTimeCreationOrder and hostTimeEntry may be + -- broken at any time. + + -- The hostTimeTable has two important uses. The first is the + -- fast download of this potentially large table. Because the + -- index of this table runs from 1 to the size of the table, + -- inclusive, its values are predictable. This allows very + -- efficient packing of variables into SNMP PDU's and allows + -- a table transfer to have multiple packets outstanding. + -- These benefits increase transfer rates tremendously. + + -- The second use of the hostTimeTable is the efficient + -- discovery by the management station of new entries added + -- to the table. After the management station has + -- downloaded the entire table, it knows that new entries + -- will be added immediately after the end of the current + -- table. It can thus detect new entries there + -- and retrieve them easily. + + -- Because the association between hostTimeCreationOrder and + -- hostTimeEntry may be broken at any time, the management + -- station must monitor the related hostControlLastDeleteTime + -- object. When the management station thus detects a deletion, + -- it must assume that any such associations have been broken, + -- and invalidate any it has stored locally. This includes + -- restarting any download of the hostTimeTable that may have + -- been in progress, as well as rediscovering the end of the + -- hostTimeTable so that it may detect new entries. If the + -- management station does not detect the broken association, + -- it may continue to refer to a particular host by its + -- creationOrder while unwittingly retrieving the data + -- associated with another host entirely. If this happens + -- while downloading the host table, the management station + -- may fail to download all of the entries in the table. + + + hostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of host table control entries." + ::= { hosts 1 } + + hostControlEntry OBJECT-TYPE + SYNTAX HostControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of parameters that set up the discovery of + hosts on a particular interface and the collection + of statistics about these hosts." + INDEX { hostControlIndex } + ::= { hostControlTable 1 } + + HostControlEntry ::= SEQUENCE { + hostControlIndex INTEGER (1..65535), + hostControlDataSource OBJECT IDENTIFIER, + hostControlTableSize INTEGER, + hostControlLastDeleteTime TimeTicks, + hostControlOwner OwnerString, + hostControlStatus INTEGER + } + + hostControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + hostControl table. Each such entry defines + a function that discovers hosts on a particular + interface and places statistics about them in the + hostTable and the hostTimeTable on behalf of this + hostControlEntry." + ::= { hostControlEntry 1 } + + hostControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of the data for + this instance of the host function. 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 [4,6], 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 packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + hostControlStatus object is equal to valid(1)." + ::= { hostControlEntry 2 } + + hostControlTableSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of hostEntries in the hostTable and the + hostTimeTable associated with this hostControlEntry." + ::= { hostControlEntry 3 } + + hostControlLastDeleteTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the last entry + was deleted from the portion of the hostTable + associated with this hostControlEntry. If no + deletions have occurred, this value shall be zero." + ::= { hostControlEntry 4 } + + hostControlOwner 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." + ::= { hostControlEntry 5 } + + hostControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this hostControl entry. + + If this object is not equal to valid(1), all + associated entries in the hostTable, + hostTimeTable, and the hostTopNTable shall be + deleted by the agent." + ::= { hostControlEntry 6 } + + hostTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of host entries." + ::= { hosts 2 } + + hostEntry OBJECT-TYPE + SYNTAX HostEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular host + that has been discovered on an interface of this + device." + INDEX { hostIndex, hostAddress } + ::= { hostTable 1 } + + HostEntry ::= SEQUENCE { + hostAddress OCTET STRING, + hostCreationOrder INTEGER (1..65535), + hostIndex INTEGER (1..65535), + hostInPkts Counter, + hostOutPkts Counter, + hostInOctets Counter, + hostOutOctets Counter, + hostOutErrors Counter, + hostOutBroadcastPkts Counter, + hostOutMulticastPkts Counter + } + + hostAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this host." + ::= { hostEntry 1 } + + hostCreationOrder OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that defines the relative ordering of + the creation time of hosts captured for a + particular hostControlEntry. This index shall + be between 1 and N, where N is the value of + the associated hostControlTableSize. The ordering + of the indexes is based on the order of each entry's + insertion into the table, in which entries added + earlier have a lower index value than entries added + later. + + It is important to note that the order for a + particular entry may change as an (earlier) entry + is deleted from the table. Because this order may + change, management stations should make use of the + hostControlLastDeleteTime variable in the + hostControlEntry associated with the relevant + portion of the hostTable. By observing + this variable, the management station may detect + the circumstances where a previous association + between a value of hostCreationOrder + and a hostEntry may no longer hold." + ::= { hostEntry 2 } + + hostIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of collected host statistics of which + this entry is a part. The set of hosts + identified by a particular value of this + index is associated with the hostControlEntry + as identified by the same value of hostControlIndex." + ::= { hostEntry 3 } + + hostInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted to + this address since it was added to the hostTable." + ::= { hostEntry 4 } + + hostOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets including errors transmitted + by this address since it was added to the hostTable." + ::= { hostEntry 5 } + + hostInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the hostTable (excluding + framing bits but including FCS octets), except for + those octets in packets that contained errors." + ::= { hostEntry 6 } + + hostOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the hostTable (excluding + framing bits but including FCS octets), including + those octets in packets that contained errors." + ::= { hostEntry 7 } + + hostOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of error packets transmitted by this + address since this host was added to the hostTable." + ::= { hostEntry 8 } + + hostOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to the broadcast address + since this host was added to the hostTable." + ::= { hostEntry 9 } + + hostOutMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to a multicast address + since this host was added to the hostTable. + Note that this number does not include packets + directed to the broadcast address." + ::= { hostEntry 10 } + + + -- host Time Table + + hostTimeTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTimeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of time-ordered host table entries." + ::= { hosts 3 } + + hostTimeEntry OBJECT-TYPE + SYNTAX HostTimeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for a particular host + that has been discovered on an interface of this + device. This collection includes the relative + ordering of the creation time of this object." + INDEX { hostTimeIndex, hostTimeCreationOrder } + ::= { hostTimeTable 1 } + + HostTimeEntry ::= SEQUENCE { + hostTimeAddress OCTET STRING, + hostTimeCreationOrder INTEGER (1..65535), + hostTimeIndex INTEGER (1..65535), + hostTimeInPkts Counter, + hostTimeOutPkts Counter, + hostTimeInOctets Counter, + hostTimeOutOctets Counter, + hostTimeOutErrors Counter, + hostTimeOutBroadcastPkts Counter, + hostTimeOutMulticastPkts Counter + } + + hostTimeAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this host." + ::= { hostTimeEntry 1 } + + hostTimeCreationOrder OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in + the hostTime table among those entries associated + with the same hostControlEntry. This index shall + be between 1 and N, where N is the value of + the associated hostControlTableSize. The ordering + of the indexes is based on the order of each entry's + insertion into the table, in which entries added + earlier have a lower index value than entries added + later. Thus the management station has the ability + to learn of new entries added to this table without + downloading the entire table. + + It is important to note that the index for a + particular entry may change as an (earlier) entry + is deleted from the table. Because this order may + change, management stations should make use of the + hostControlLastDeleteTime variable in the + hostControlEntry associated with the relevant + portion of the hostTimeTable. By observing + this variable, the management station may detect + the circumstances where a download of the table + may have missed entries, and where a previous + association between a value of hostTimeCreationOrder + and a hostTimeEntry may no longer hold." + ::= { hostTimeEntry 2 } + + hostTimeIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of collected host statistics of which + this entry is a part. The set of hosts + identified by a particular value of this + index is associated with the hostControlEntry + as identified by the same value of hostControlIndex." + ::= { hostTimeEntry 3 } + + hostTimeInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets without errors transmitted to + this address since it was added to the hostTimeTable." + ::= { hostTimeEntry 4 } + + hostTimeOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets including errors transmitted + by this address since it was added to the + hostTimeTable." + ::= { hostTimeEntry 5 } + + hostTimeInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the hostTimeTable (excluding + framing bits but including FCS octets), except for + those octets in packets that contained errors." + ::= { hostTimeEntry 6 } + + hostTimeOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted by this address since + it was added to the hostTimeTable (excluding framing + bits but including FCS octets), including those + octets in packets that contained errors." + ::= { hostTimeEntry 7 } + + hostTimeOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of error packets transmitted by this + address since this host was added to the + hostTimeTable." + ::= { hostTimeEntry 8 } + + hostTimeOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to the broadcast address + since this host was added to the hostTimeTable." + ::= { hostTimeEntry 9 } + + hostTimeOutMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to a multicast address + since this host was added to the hostTimeTable. + Note that this number does not include packets + directed to the broadcast address." + ::= { hostTimeEntry 10 } + + + -- The Host Top "N" Group + + -- Implementation of the Host Top N group is optional. + -- + -- The Host Top N group requires the implementation of the + -- host group. + -- + -- The Host Top N group is used to prepare reports that + -- describe the hosts that top a list ordered by one of + -- their statistics. The available statistics are samples + -- of one of their base statistics, over an interval + -- specified by the management station. Thus, these + -- statistics are rate based. The management + -- station also selects how many such hosts are reported. + + -- The hostTopNControlTable is used to initiate the generation + -- of such a report. The management station may select the + -- parameters of such a report, such as which interface, + -- which statistic, how many hosts, and the start and stop + -- times of the sampling. When the report is prepared, + -- entries are created in the hostTopNTable associated with + -- the relevant hostTopNControlEntry. These entries are + + -- static for each report after it has been prepared. + + hostTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of top N host control entries." + ::= { hostTopN 1 } + + hostTopNControlEntry OBJECT-TYPE + SYNTAX HostTopNControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N hosts according to several + metrics." + INDEX { hostTopNControlIndex } + ::= { hostTopNControlTable 1 } + + HostTopNControlEntry ::= SEQUENCE { + hostTopNControlIndex INTEGER (1..65535), + hostTopNHostIndex INTEGER (1..65535), + hostTopNRateBase INTEGER, + hostTopNTimeRemaining INTEGER, + hostTopNDuration INTEGER, + hostTopNRequestedSize INTEGER, + hostTopNGrantedSize INTEGER, + hostTopNStartTime TimeTicks, + hostTopNOwner OwnerString, + hostTopNStatus INTEGER + } + + hostTopNControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the hostTopNControl table. Each such + entry defines one top N report prepared for + one interface." + ::= { hostTopNControlEntry 1 } + + hostTopNHostIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The host table for which a top N report will be + prepared on behalf of this entry. The host table + identified by a particular value of this index is + associated with the same host table as identified + by the same value of hostIndex. + + This object may not be modified if the associated + hostTopNStatus object is equal to valid(1)." + ::= { hostTopNControlEntry 2 } + + hostTopNRateBase OBJECT-TYPE + SYNTAX INTEGER { + hostTopNInPkts(1), + hostTopNOutPkts(2), + hostTopNInOctets(3), + hostTopNOutOctets(4), + hostTopNOutErrors(5), + hostTopNOutBroadcastPkts(6), + hostTopNOutMulticastPkts(7) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The variable for each host that the hostTopNRate + variable is based upon. + + This object may not be modified if the associated + hostTopNStatus object is equal to valid(1)." + ::= { hostTopNControlEntry 3 } + + hostTopNTimeRemaining OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + 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, which is loaded into the associated + hostTopNDuration object. + + When this object is set to a non-zero value, any + associated hostTopNEntries shall be made + inaccessible by the monitor. While the value of this + object is non-zero, it decrements by one per second + until it reaches zero. During this time, all + associated hostTopNEntries shall remain + inaccessible. At the time that this object + decrements to zero, the report is made + accessible in the hostTopNTable. Thus, the hostTopN + table needs to be created only at the end of the + collection interval." + DEFVAL { 0 } + ::= { hostTopNControlEntry 4 } + + hostTopNDuration OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval, or if this + report is currently being collected, the number + of seconds that this report is being collected + during this sampling interval. + + When the associated hostTopNTimeRemaining 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 hostTopNTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this hostTopNControlEntry." + DEFVAL { 0 } + ::= { hostTopNControlEntry 5 } + + hostTopNRequestedSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of hosts requested for the top N + table. + + When this object is created or modified, the probe + should set hostTopNGrantedSize as closely to this + object as is possible for the particular probe + implementation and available resources." + DEFVAL { 10 } + ::= { hostTopNControlEntry 6 } + + hostTopNGrantedSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of hosts in the top N table. + + When the associated hostTopNRequestedSize 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 + hostTopNRequestedSize object. + + Hosts with the highest value of hostTopNRate shall be + placed in this table in decreasing order of this rate + until there is no more room or until there are no more + hosts." + ::= { hostTopNControlEntry 7 } + + hostTopNStartTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this top N report was + last started. In other words, this is the time that + the associated hostTopNTimeRemaining object was + modified to start the requested report." + ::= { hostTopNControlEntry 8 } + + hostTopNOwner 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." + ::= { hostTopNControlEntry 9 } + + hostTopNStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this hostTopNControl entry. + If this object is not equal to valid(1), all + associated hostTopNEntries shall be deleted by + the agent." + ::= { hostTopNControlEntry 10 } + + hostTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of top N host entries." + ::= { hostTopN 2 } + + hostTopNEntry OBJECT-TYPE + SYNTAX HostTopNEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of statistics for a host that is part of a + top N report." + INDEX { hostTopNReport, hostTopNIndex } + ::= { hostTopNTable 1 } + + HostTopNEntry ::= SEQUENCE { + hostTopNReport INTEGER (1..65535), + hostTopNIndex INTEGER (1..65535), + hostTopNAddress OCTET STRING, + hostTopNRate INTEGER + } + + hostTopNReport OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the top N report of which + this entry is a part. The set of hosts + identified by a particular value of this + object is part of the same report as identified + by the same value of the hostTopNControlIndex object." + ::= { hostTopNEntry 1 } + + hostTopNIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in + the hostTopN table among those in the same report. + This index is between 1 and N, where N is the + number of entries in this table. Increasing values + of hostTopNIndex shall be assigned to entries with + decreasing values of hostTopNRate until index N + is assigned to the entry with the lowest value of + hostTopNRate or there are no more hostTopNEntries." + ::= { hostTopNEntry 2 } + + hostTopNAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical address of this host." + ::= { hostTopNEntry 3 } + + hostTopNRate OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval. The selected + variable is this host's instance of the object + selected by hostTopNRateBase." + ::= { hostTopNEntry 4 } + + + -- The Matrix Group + + -- Implementation of the Matrix group is optional. + -- + -- The Matrix group consists of the matrixControlTable, + -- matrixSDTable and the matrixDSTable. These tables + -- store statistics for a particular conversation between + -- two addresses. As the device detects a new conversation, + -- including those to a non-unicast address, it creates a + -- new entry in both of the matrix tables. + -- It must only create new entries based on information + -- received in good packets. If the monitoring device finds + -- itself short of resources, it may delete entries as needed. + -- It is suggested that the device delete the least recently + -- used entries first. + + matrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of information entries for the + traffic matrix on each interface." + ::= { matrix 1 } + + matrixControlEntry OBJECT-TYPE + SYNTAX MatrixControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a traffic matrix on a + particular interface." + INDEX { matrixControlIndex } + ::= { matrixControlTable 1 } + + MatrixControlEntry ::= SEQUENCE { + matrixControlIndex INTEGER (1..65535), + matrixControlDataSource OBJECT IDENTIFIER, + matrixControlTableSize INTEGER, + matrixControlLastDeleteTime TimeTicks, + matrixControlOwner OwnerString, + matrixControlStatus INTEGER + } + + matrixControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + matrixControl table. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + matrixSDTable and the matrixDSTable on behalf of this + matrixControlEntry." + ::= { matrixControlEntry 1 } + + matrixControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the source of + the data from which this entry creates a traffic matrix. + 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 [4,6], 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 packets + on the local network segment attached to the + identified interface. + + This object may not be modified if the associated + matrixControlStatus object is equal to valid(1)." + ::= { matrixControlEntry 2 } + + matrixControlTableSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of matrixSDEntries in the matrixSDTable + for this interface. This must also be the value of + the number of entries in the matrixDSTable for this + interface." + ::= { matrixControlEntry 3 } + + matrixControlLastDeleteTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the last entry + was deleted from the portion of the matrixSDTable + or matrixDSTable associated with this + matrixControlEntry. + If no deletions have occurred, this value shall be + zero." + ::= { matrixControlEntry 4 } + + matrixControlOwner 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." + ::= { matrixControlEntry 5 } + + matrixControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this matrixControl entry. + + If this object is not equal to valid(1), all + associated entries in the matrixSDTable and the + matrixDSTable shall be deleted by the agent." + ::= { matrixControlEntry 6 } + + matrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of traffic matrix entries indexed by + source and destination MAC address." + ::= { matrix 2 } + + matrixSDEntry OBJECT-TYPE + SYNTAX MatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for communications between + two addresses on a particular interface." + INDEX { matrixSDIndex, + matrixSDSourceAddress, matrixSDDestAddress } + ::= { matrixSDTable 1 } + + MatrixSDEntry ::= SEQUENCE { + matrixSDSourceAddress OCTET STRING, + matrixSDDestAddress OCTET STRING, + matrixSDIndex INTEGER (1..65535), + matrixSDPkts Counter, + matrixSDOctets Counter, + matrixSDErrors Counter + } + + matrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The source physical address." + ::= { matrixSDEntry 1 } + + matrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The destination physical address." + ::= { matrixSDEntry 2 } + + matrixSDIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of collected matrix statistics of which + this entry is a part. The set of matrix statistics + identified by a particular value of this index + is associated with the same matrixControlEntry + as identified by the same value of matrixControlIndex." + ::= { matrixSDEntry 3 } + + matrixSDPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number + includes error packets)." + ::= { matrixSDEntry 4 } + + matrixSDOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets (excluding framing bits but + including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixSDEntry 5 } + + matrixSDErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of error packets transmitted from + the source address to the destination address." + ::= { matrixSDEntry 6 } + + + -- Traffic matrix tables from destination to source + + matrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of traffic matrix entries indexed by + destination and source MAC address." + ::= { matrix 3 } + + matrixDSEntry OBJECT-TYPE + SYNTAX MatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A collection of statistics for communications between + two address on a particular interface." + INDEX { matrixDSIndex, + matrixDSDestAddress, matrixDSSourceAddress } + ::= { matrixDSTable 1 } + + MatrixDSEntry ::= SEQUENCE { + matrixDSSourceAddress OCTET STRING, + matrixDSDestAddress OCTET STRING, + matrixDSIndex INTEGER (1..65535), + matrixDSPkts Counter, + matrixDSOctets Counter, + matrixDSErrors Counter + } + + matrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The source physical address." + ::= { matrixDSEntry 1 } + + matrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The destination physical address." + ::= { matrixDSEntry 2 } + + matrixDSIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The set of collected matrix statistics of which + this entry is a part. The set of matrix statistics + identified by a particular value of this index + is associated with the same matrixControlEntry + as identified by the same value of matrixControlIndex." + ::= { matrixDSEntry 3 } + + matrixDSPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number + includes error packets)." + ::= { matrixDSEntry 4 } + + matrixDSOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets (excluding framing bits + but including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixDSEntry 5 } + + matrixDSErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of error packets transmitted from + the source address to the destination address." + ::= { matrixDSEntry 6 } + + + -- The Filter Group + + -- Implementation of the Filter group is optional. + + -- + -- The Filter group allows packets to be captured with an + -- arbitrary filter expression. A logical data and + -- event stream or "channel" is formed by the packets + -- that match the filter expression. + -- + -- This filter mechanism allows the creation of an arbitrary + -- logical expression with which to filter packets. Each + -- filter associated with a channel is OR'ed with the others. + -- Within a filter, any bits checked in the data and status are + -- AND'ed with respect to other bits in the same filter. The + -- NotMask also allows for checking for inequality. Finally, + -- the channelAcceptType object allows for inversion of the + -- whole equation. + -- + -- The channel can be turned on or off, and can also + -- generate events when packets pass through it. + + filterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FilterEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of packet filter entries." + ::= { filter 1 } + + filterEntry OBJECT-TYPE + SYNTAX FilterEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters for a packet filter applied on a + particular interface." + INDEX { filterIndex } + ::= { filterTable 1 } + + FilterEntry ::= SEQUENCE { + filterIndex INTEGER (1..65535), + filterChannelIndex INTEGER (1..65535), + filterPktDataOffset INTEGER, + filterPktData OCTET STRING, + filterPktDataMask OCTET STRING, + filterPktDataNotMask OCTET STRING, + filterPktStatus INTEGER, + filterPktStatusMask INTEGER, + filterPktStatusNotMask INTEGER, + filterOwner OwnerString, + filterStatus INTEGER + } + + filterIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the filter table. Each such entry defines + one filter that is to be applied to every packet + received on an interface." + ::= { filterEntry 1 } + + filterChannelIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the channel of which this + filter is a part. The filters identified by a + particular value of this object are associated + with the same channel as identified by the same + value of the channelIndex object." + ::= { filterEntry 2 } + + filterPktDataOffset OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The offset from the beginning of each packet where + a match of packet data will be attempted. This offset + is measured from the point in the physical layer + packet after the framing bits, if any. For example, + in an Ethernet frame, this point is at the beginning + of the destination MAC address. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + DEFVAL { 0 } + ::= { filterEntry 3 } + + filterPktData OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The data that is to be matched with the input packet. + For each packet received, this filter and the + accompanying filterPktDataMask and + filterPktDataNotMask will be adjusted for the + offset. The only bits relevant to this + match algorithm are those that have the corresponding + filterPktDataMask bit equal to one. The following + three rules are then applied to every packet: + + (1) If the packet is too short and does not have data + corresponding to part of the filterPktData, the + packet will fail this data match. + + (2) For each relevant bit from the packet with the + corresponding filterPktDataNotMask bit set to + zero, if the bit from the packet is not equal to + the corresponding bit from the filterPktData, + then the packet will fail this data match. + + (3) If for every relevant bit from the packet with the + corresponding filterPktDataNotMask bit set to one, + the bit from the packet is equal to the + corresponding bit from the filterPktData, then + the packet will fail this data match. + + Any packets that have not failed any of the three + matches above have passed this data match. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 4 } + + filterPktDataMask OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The mask that is applied to the match process. + After adjusting this mask for the offset, only those + bits in the received packet that correspond to bits + set in this mask are relevant for further processing + by the match algorithm. The offset is applied to + filterPktDataMask in the same way it is applied to + the filter. For the purposes of the matching + algorithm, if the associated filterPktData object + is longer than this mask, this mask is conceptually + extended with '1' bits until it reaches the + length of the filterPktData object. + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 5 } + + filterPktDataNotMask OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The inversion mask that is applied to the match + process. After adjusting this mask for the offset, + those relevant bits in the received packet that + correspond to bits cleared in this mask must all + be equal to their corresponding bits in the + filterPktData object for the packet to be accepted. + In addition, at least one of those relevant + bits in the received packet that correspond to bits + set in this mask must be different to its + corresponding bit in the filterPktData object. + + For the purposes of the matching algorithm, if + the associated filterPktData object is longer than + this mask, this mask is conceptually extended with + '0' bits until it reaches the length of the + filterPktData object. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 6 } + + filterPktStatus OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status that is to be matched with the input + packet. The only bits relevant to this match + algorithm are those that have the corresponding + filterPktStatusMask bit equal to one. + + The following two rules are then applied to every + packet: + + (1) For each relevant bit from the packet status + with the corresponding filterPktStatusNotMask + bit set to zero, if the bit from the packet + status is not equal to the corresponding bit + from the filterPktStatus, then the packet will + fail this status match. + + (2) If for every relevant bit from the packet status + with the corresponding filterPktStatusNotMask + bit set to one, the bit from the packet status + is equal to the corresponding bit from the + filterPktStatus, then the packet will fail + this status match. + + Any packets that have not failed either of the two + matches above have passed this status match. + + The value of the packet status is a sum. This sum + initially takes the value zero. Then, for each + error, E, that has been discovered in this packet, + 2 raised to a value representing E is added to the sum. + The errors and the bits that represent them are + dependent on the media type of the interface that + this channel is receiving packets from. + + The errors defined for a packet captured off of an + Ethernet interface are as follows: + + bit # Error + 0 Packet is longer than 1518 octets + 1 Packet is shorter than 64 octets + 2 Packet experienced a CRC or Alignment + error + + For example, an Ethernet fragment would have a + value of 6 (2^1 + 2^2). + + As this MIB is expanded to new media types, this + object will have other media-specific errors defined. + + For the purposes of this status matching algorithm, if + the packet status is longer than this + object, filterPktStatus this object is conceptually + extended with '0' bits until it reaches the size of + the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 7 } + + filterPktStatusMask OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The mask that is applied to the status match process. + Only those bits in the received packet that correspond + to bits set in this mask are relevant for further + processing by the status match algorithm. For the + purposes of the matching algorithm, if the + associated filterPktStatus object is longer than + this mask, this mask is conceptually extended with + '1' bits until it reaches the size of the + filterPktStatus. In addition, if a packet status is + longer than this mask, this mask is conceptually + extended with '0' bits until it reaches the size of + the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 8 } + + filterPktStatusNotMask OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The inversion mask that is applied to the status match + process. Those relevant bits in the received packet + status that correspond to bits cleared in this mask + must all be equal to their corresponding bits in the + filterPktStatus object for the packet to be accepted. + In addition, at least one of those relevant bits in the + received packet status that correspond to bits set in + this mask must be different to its corresponding bit + in the filterPktStatus object for the packet to be + accepted. + + For the purposes of the matching algorithm, if the + associated filterPktStatus object or a packet status + is longer than this mask, this mask is conceptually + extended with '0' bits until it reaches the longer of + the lengths of the filterPktStatus object and the + packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 9 } + + filterOwner 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." + ::= { filterEntry 10 } + + filterStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this filter entry." + ::= { filterEntry 11 } + + channelTable OBJECT-TYPE + SYNTAX SEQUENCE OF ChannelEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of packet channel entries." + ::= { filter 2 } + + channelEntry OBJECT-TYPE + SYNTAX ChannelEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters for a packet channel applied on a + particular interface." + INDEX { channelIndex } + ::= { channelTable 1 } + + ChannelEntry ::= SEQUENCE { + channelIndex INTEGER (1..65535), + channelIfIndex INTEGER (1..65535), + channelAcceptType INTEGER, + channelDataControl INTEGER, + channelTurnOnEventIndex INTEGER (0..65535), + channelTurnOffEventIndex INTEGER (0..65535), + channelEventIndex INTEGER (0..65535), + channelEventStatus INTEGER, + channelMatches Counter, + channelDescription DisplayString (SIZE (0..127)), + channelOwner OwnerString, + channelStatus INTEGER + } + + channelIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the channel table. Each such + entry defines one channel, a logical data + and event stream." + ::= { channelEntry 1 } + + channelIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device + to which the associated filters are applied to allow + data into this channel. 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 [4,6]. The filters in + this group are applied to all packets on the local + network segment attached to the identified + interface. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 2 } + + channelAcceptType OBJECT-TYPE + SYNTAX INTEGER { + acceptMatched(1), + acceptFailed(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object controls the action of the filters + associated with this channel. If this object is equal + to acceptMatched(1), packets will be accepted to this + channel if they are accepted by both the packet data + and packet status matches of an associated filter. If + this object is equal to acceptFailed(2), packets will + be accepted to this channel only if they fail either + the packet data match or the packet status match of + each of the associated filters. + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 3 } + + channelDataControl OBJECT-TYPE + SYNTAX INTEGER { + on(1), + off(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object controls the flow of data through this + channel. If this object is on(1), data, status and + events flow through this channel. If this object is + off(2), data, status and events will not flow through + this channel." + DEFVAL { off } + ::= { channelEntry 4 } + + channelTurnOnEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of this object identifies the event + that is configured to turn the associated + channelDataControl from off to on when the event is + generated. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelTurnOnEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 5 } + + channelTurnOffEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of this object identifies the event + that is configured to turn the associated + channelDataControl from on to off when the event is + generated. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelTurnOffEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 6 } + + channelEventIndex OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of this object identifies the event + that is configured to be generated when the + associated channelDataControl is on and a packet + is matched. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 7 } + + channelEventStatus OBJECT-TYPE + SYNTAX INTEGER { + eventReady(1), + eventFired(2), + eventAlwaysReady(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The event status of this channel. + + If this channel is configured to generate events + when packets are matched, a means of controlling + the flow of those events is often needed. When + this object is equal to eventReady(1), a single + event may be generated, after which this object + will be set by the probe to eventFired(2). While + in the eventFired(2) state, no events will be + generated until the object is modified to + eventReady(1) (or eventAlwaysReady(3)). The + management station can thus easily respond to a + notification of an event by re-enabling this object. + + If the management station wishes to disable this + flow control and allow events to be generated + at will, this object may be set to + eventAlwaysReady(3). Disabling the flow control + is discouraged as it can result in high network + traffic or other performance problems." + DEFVAL { eventReady } + ::= { channelEntry 8 } + + channelMatches OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this channel has matched a packet. + Note that this object is updated even when + channelDataControl is set to off." + ::= { channelEntry 9 } + + channelDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..127)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A comment describing this channel." + ::= { channelEntry 10 } + + channelOwner 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." + ::= { channelEntry 11 } + + channelStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this channel entry." + ::= { channelEntry 12 } + + + -- The Packet Capture Group + + -- Implementation of the Packet Capture group is optional. + -- + -- The Packet Capture Group requires implementation of the + -- Filter Group. + -- + -- The Packet Capture group allows packets to be captured + -- upon a filter match. The bufferControlTable controls + -- the captured packets output from a channel that is + -- associated with it. The captured packets are placed + -- in entries in the captureBufferTable. These entries are + -- associated with the bufferControlEntry on whose behalf they + -- were stored. + + bufferControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF BufferControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of buffers control entries." + ::= { capture 1 } + + bufferControlEntry OBJECT-TYPE + SYNTAX BufferControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters that control the collection of + a stream of packets that have matched filters." + INDEX { bufferControlIndex } + ::= { bufferControlTable 1 } + + BufferControlEntry ::= SEQUENCE { + bufferControlIndex INTEGER (1..65535), + bufferControlChannelIndex INTEGER (1..65535), + bufferControlFullStatus INTEGER, + bufferControlFullAction INTEGER, + bufferControlCaptureSliceSize INTEGER, + bufferControlDownloadSliceSize INTEGER, + bufferControlDownloadOffset INTEGER, + bufferControlMaxOctetsRequested INTEGER, + bufferControlMaxOctetsGranted INTEGER, + bufferControlCapturedPackets INTEGER, + bufferControlTurnOnTime TimeTicks, + bufferControlOwner OwnerString, + bufferControlStatus INTEGER + } + + bufferControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the bufferControl table. The value of this + index shall never be zero. Each such + entry defines one set of packets that is + captured and controlled by one or more filters." + ::= { bufferControlEntry 1 } + + bufferControlChannelIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An index that identifies the channel that is the + source of packets for this bufferControl table. + The channel identified by a particular value of this + index is the same as identified by the same value of + the channelIndex object. + + This object may not be modified if the associated + bufferControlStatus object is equal to valid(1)." + ::= { bufferControlEntry 2 } + + bufferControlFullStatus OBJECT-TYPE + SYNTAX INTEGER { + spaceAvailable(1), + full(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object shows whether the buffer has room to + accept new packets or if it is full. + + If the status is spaceAvailable(1), the buffer is + accepting new packets normally. If the status is + full(2) and the associated bufferControlFullAction + object is wrapWhenFull, the buffer is accepting new + packets by deleting enough of the oldest packets + to make room for new ones as they arrive. Otherwise, + if the status is full(2) and the + bufferControlFullAction object is lockWhenFull, + then the buffer has stopped collecting packets. + + When this object is set to full(2) the probe must + not later set it to spaceAvailable(1) except in the + case of a significant gain in resources such as + an increase of bufferControlOctetsGranted. In + particular, the wrap-mode action of deleting old + packets to make room for newly arrived packets + must not affect the value of this object." + ::= { bufferControlEntry 3 } + + bufferControlFullAction OBJECT-TYPE + SYNTAX INTEGER { + lockWhenFull(1), + wrapWhenFull(2) -- FIFO + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Controls the action of the buffer when it + reaches the full status. When in the lockWhenFull(1) + state a packet is added to the buffer that + fills the buffer, the bufferControlFullStatus will + be set to full(2) and this buffer will stop capturing + packets." + ::= { bufferControlEntry 4 } + + bufferControlCaptureSliceSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of octets of each packet + that will be saved in this capture buffer. + For example, if a 1500 octet packet is received by + the probe and this object is set to 500, then only + 500 octets of the packet will be stored in the + associated capture buffer. If this variable is set + to 0, the capture buffer will save as many octets + as is possible. + + This object may not be modified if the associated + bufferControlStatus object is equal to valid(1)." + DEFVAL { 100 } + ::= { bufferControlEntry 5 } + + bufferControlDownloadSliceSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of octets of each packet + in this capture buffer that will be returned in + an SNMP retrieval of that packet. For example, + if 500 octets of a packet have been stored in the + associated capture buffer, the associated + bufferControlDownloadOffset is 0, and this + object is set to 100, then the captureBufferPacket + object that contains the packet will contain only + the first 100 octets of the packet. + + A prudent manager will take into account possible + interoperability or fragmentation problems that may + occur if the download slice size is set too large. + In particular, conformant SNMP implementations are not + required to accept messages whose length exceeds 484 + octets, although they are encouraged to support larger + datagrams whenever feasible." + DEFVAL { 100 } + ::= { bufferControlEntry 6 } + + bufferControlDownloadOffset OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The offset of the first octet of each packet + in this capture buffer that will be returned in + an SNMP retrieval of that packet. For example, + if 500 octets of a packet have been stored in the + associated capture buffer and this object is set to + 100, then the captureBufferPacket object that + contains the packet will contain bytes starting + 100 octets into the packet." + DEFVAL { 0 } + ::= { bufferControlEntry 7 } + + bufferControlMaxOctetsRequested OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The requested maximum number of octets to be + saved in this captureBuffer, including any + implementation-specific overhead. If this variable + is set to -1, the capture buffer will save as many + octets as is possible. + + When this object is created or modified, the probe + should set bufferControlMaxOctetsGranted as closely + to this object as is possible for the particular probe + implementation and available resources. However, if + the object has the special value of -1, the probe + must set bufferControlMaxOctetsGranted to -1." + DEFVAL { -1 } + ::= { bufferControlEntry 8 } + + bufferControlMaxOctetsGranted OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The maximum number of octets that can be + saved in this captureBuffer, including overhead. + If this variable is -1, the capture buffer will save + as many octets as possible. + + When the bufferControlMaxOctetsRequested 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. However, if the request object has the + special value of -1, the probe must set this object + to -1. The probe must not lower this value except + as a result of a modification to the associated + bufferControlMaxOctetsRequested object. + + When this maximum number of octets is reached + and a new packet is to be added to this + capture buffer and the corresponding + bufferControlFullAction is set to wrapWhenFull(2), + enough of the oldest packets associated with this + capture buffer shall be deleted by the agent so + that the new packet can be added. If the + corresponding bufferControlFullAction is set to + lockWhenFull(1), the new packet shall be discarded. + In either case, the probe must set + bufferControlFullStatus to full(2). + + When the value of this object changes to a value less + than the current value, entries are deleted from + the captureBufferTable associated with this + bufferControlEntry. Enough of the + oldest of these captureBufferEntries shall be + deleted by the agent so that the number of octets + used 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 + captureBufferEntries may be allowed to grow." + ::= { bufferControlEntry 9 } + + bufferControlCapturedPackets OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets currently in this captureBuffer." + ::= { bufferControlEntry 10 } + + bufferControlTurnOnTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this capture buffer was + first turned on." + ::= { bufferControlEntry 11 } + + bufferControlOwner 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." + ::= { bufferControlEntry 12 } + + bufferControlStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this buffer Control Entry." + ::= { bufferControlEntry 13 } + + captureBufferTable OBJECT-TYPE + SYNTAX SEQUENCE OF CaptureBufferEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of packets captured off of a channel." + ::= { capture 2 } + + captureBufferEntry OBJECT-TYPE + SYNTAX CaptureBufferEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A packet captured off of an attached network." + INDEX { captureBufferControlIndex, captureBufferIndex } + ::= { captureBufferTable 1 } + + CaptureBufferEntry ::= SEQUENCE { + captureBufferControlIndex INTEGER (1..65535), + captureBufferIndex INTEGER, + captureBufferPacketID INTEGER, + captureBufferPacketData OCTET STRING, + captureBufferPacketLength INTEGER, + captureBufferPacketTime INTEGER, + captureBufferPacketStatus INTEGER + } + + captureBufferControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The index of the bufferControlEntry with which + this packet is associated." + ::= { captureBufferEntry 1 } + + captureBufferIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the captureBuffer table associated with a + particular bufferControlEntry. This index will + start at 1 and increase by one for each new packet + added with the same captureBufferControlIndex." + ::= { captureBufferEntry 2 } + + captureBufferPacketID OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that describes the order of packets + that are received on a particular interface. + The packetID of a packet captured on an + interface is defined to be greater than the + packetID's of all packets captured previously on + the same interface. As the captureBufferPacketID + object has a maximum positive value of 2^31 - 1, + any captureBufferPacketID object shall have the + value of the associated packet's packetID mod 2^31." + ::= { captureBufferEntry 3 } + + captureBufferPacketData OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The data inside the packet, starting at the beginning + of the packet plus any offset specified in the + associated bufferControlDownloadOffset, including any + link level headers. The length of the data in this + object is the minimum of the length of the captured + packet minus the offset, the length of the associated + bufferControlCaptureSliceSize minus the offset, and the + associated bufferControlDownloadSliceSize. If this + minimum is less than zero, this object shall have a + length of zero." + ::= { captureBufferEntry 4 } + + captureBufferPacketLength OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The actual length (off the wire) of the packet stored + in this entry, including FCS octets." + ::= { captureBufferEntry 5 } + + captureBufferPacketTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of milliseconds that had passed since + this capture buffer was first turned on when this + packet was captured." + ::= { captureBufferEntry 6 } + + captureBufferPacketStatus OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value which indicates the error status of this + packet. + + The value of this object is defined in the same way as + filterPacketStatus. The value is a sum. This sum + initially takes the value zero. Then, for each + error, E, that has been discovered in this packet, + 2 raised to a value representing E is added to the sum. + + The errors defined for a packet captured off of an + Ethernet interface are as follows: + + bit # Error + 0 Packet is longer than 1518 octets + 1 Packet is shorter than 64 octets + 2 Packet experienced a CRC or Alignment + error + 3 First packet in this capture buffer after + it was detected that some packets were + not processed correctly. + + For example, an Ethernet fragment would have a + value of 6 (2^1 + 2^2). + + As this MIB is expanded to new media types, this object + will have other media-specific errors defined." + ::= { captureBufferEntry 7 } + + + -- The Event Group + + -- Implementation of the Event group is optional. + -- + -- The Event group controls the generation and notification + -- of events from this device. Each entry in the eventTable + -- describes the parameters of the event that can be triggered. + -- Each event entry is fired by an associated condition located + -- elsewhere in the MIB. An event entry may also be associated + -- with a function elsewhere in the MIB that will be executed + -- when the event is generated. For example, a channel may + -- be turned on or off by the firing of an event. + -- + -- Each eventEntry may optionally specify that a log entry + + -- be created on its behalf whenever the event occurs. + -- Each entry may also specify that notification should + -- occur by way of SNMP trap messages. In this case, the + -- community for the trap message is given in the associated + -- eventCommunity object. The enterprise and specific trap + -- fields of the trap are determined by the condition that + -- triggered the event. Three traps are defined in a companion + -- document: risingAlarm, fallingAlarm, and packetMatch. + -- If the eventTable is triggered by a condition specified + -- elsewhere, the enterprise and specific trap fields + -- must be specified for traps generated for that condition. + + eventTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of events to be generated." + ::= { event 1 } + + eventEntry OBJECT-TYPE + SYNTAX EventEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of parameters that describe an event to be + generated when certain conditions are met." + INDEX { eventIndex } + ::= { eventTable 1 } + + EventEntry ::= SEQUENCE { + eventIndex INTEGER (1..65535), + eventDescription DisplayString (SIZE (0..127)), + eventType INTEGER, + eventCommunity OCTET STRING (SIZE (0..127)), + eventLastTimeSent TimeTicks, + eventOwner OwnerString, + eventStatus INTEGER + } + + eventIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry in the + event table. Each such entry defines one event that + is to be generated when the appropriate conditions + occur." + ::= { eventEntry 1 } + + eventDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..127)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A comment describing this event entry." + ::= { eventEntry 2 } + + eventType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + log(2), + snmp-trap(3), -- send an SNMP trap + log-and-trap(4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The type of notification that the probe will make + about this event. In the case of log, an entry is + made in the log table for each event. In the case of + snmp-trap, an SNMP trap is sent to one or more + management stations." + ::= { eventEntry 3 } + + eventCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If an SNMP trap is to be sent, it will be sent to + the SNMP community specified by this octet string. + In the future this table will be extended to include + the party security mechanism. This object shall be + set to a string of length zero if it is intended that + that mechanism be used to specify the destination of + the trap." + ::= { eventEntry 4 } + + eventLastTimeSent OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this event + entry last generated an event. If this entry has + not generated any events, this value will be + zero." + ::= { eventEntry 5 } + + eventOwner 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. + + If this object contains a string starting with 'monitor' + and has associated entries in the log table, all + connected management stations should retrieve those + log entries, as they may have significance to all + management stations connected to this device" + ::= { eventEntry 6 } + + eventStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this event entry. + + If this object is not equal to valid(1), all associated + log entries shall be deleted by the agent." + ::= { eventEntry 7 } + + -- + logTable OBJECT-TYPE + SYNTAX SEQUENCE OF LogEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of events that have been logged." + ::= { event 2 } + + logEntry OBJECT-TYPE + SYNTAX LogEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A set of data describing an event that has been + logged." + INDEX { logEventIndex, logIndex } + ::= { logTable 1 } + + LogEntry ::= SEQUENCE { + logEventIndex INTEGER (1..65535), + logIndex INTEGER, + logTime TimeTicks, + logDescription DisplayString (SIZE (0..255)) + } + + logEventIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The event entry that generated this log + entry. The log identified by a particular + value of this index is associated with the same + eventEntry as identified by the same value + of eventIndex." + ::= { logEntry 1 } + + logIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the log table amongst those generated by the + same eventEntries. These indexes are + assigned beginning with 1 and increase by one + with each new log entry. The association + between values of logIndex and logEntries + is fixed for the lifetime of each logEntry. + The agent may choose to delete the oldest + instances of logEntry as required because of + lack of memory. It is an implementation-specific + matter as to when this deletion may occur." + ::= { logEntry 2 } + + logTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this log entry was + created." + ::= { logEntry 3 } + + logDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An implementation dependent description of the + event that activated this log entry." + ::= { logEntry 4 } + + END diff --git a/mibs/ietf/RFC1285-MIB b/mibs/ietf/RFC1285-MIB new file mode 100644 index 0000000..faad832 --- /dev/null +++ b/mibs/ietf/RFC1285-MIB @@ -0,0 +1,1870 @@ +RFC1285-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + transmission + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- This MIB module uses the extended OBJECT-TYPE macro as +-- defined in [7]. + + +-- this is the FDDI MIB module + +fddi OBJECT IDENTIFIER ::= { transmission 15 } + + +-- textual conventions + +FddiTime ::= INTEGER (0..2147483647) +-- This data type specifies octet units of 80 nanoseconds as +-- an integer value. It is used for Path Latency and +-- Synchronous Bandwidth values. The encoding is normal +-- integer representation (not twos complement). + +FddiResourceId ::= INTEGER (0..65535) +-- This data type is used to refer to an instance of a MAC, +-- PORT, PATH, or ATTACHMENT Resource ID. Indexing begins +-- at 1. Zero is used to indicate the absence of a resource. + +FddiSMTStationIdType ::= OCTET STRING (SIZE (8)) +-- The unique identifier for the FDDI station. This is a +-- string of 8 octets, represented as +-- X' yy yy xx xx xx xx xx xx' +-- with the low order 6 octet (xx) from a unique IEEE +-- assigned address. The high order two bits of the IEEE +-- address, the group address bit and the administration bit + +-- (Universal/Local) bit should both be zero. The first two +-- octets, the yy octets, are implementor-defined. +-- +-- The representation of the address portion of the station id +-- is in the IEEE (ANSI/IEEE P802.1A) canonical notation for +-- 48 bit addresses. The canonical form is a 6-octet string +-- where the first octet contains the first 8 bits of the +-- address, with the I/G(Individual/Group) address bit as the +-- least significant bit and the U/L (Universal/Local) bit +-- as the next more significant bit, and so on. Note that +-- addresses in the ANSI FDDI standard SMT frames are +-- represented in FDDI MAC order. + +FddiMACLongAddressType ::= OCTET STRING (SIZE (6)) +-- The representation of long MAC addresses as management +-- values is in the IEEE (ANSI/IEEE P802.1A) canonical +-- notation for 48 bit addresses. The canonical form is a +-- 6-octet string where the first octet contains the first 8 +-- bits of the address, with the I/G (Individual/Group) +-- address bit as the least significant bit and the U/L +-- (Universal/Local) bit as the next more significant bit, +-- and so on. Note that the addresses in the SMT frames are +-- represented in FDDI MAC order. + +-- groups in the FDDI MIB module + +snmpFddiSMT OBJECT IDENTIFIER ::= { fddi 1 } + +snmpFddiMAC OBJECT IDENTIFIER ::= { fddi 2 } + +snmpFddiPATH OBJECT IDENTIFIER ::= { fddi 3 } + +snmpFddiPORT OBJECT IDENTIFIER ::= { fddi 4 } + +snmpFddiATTACHMENT OBJECT IDENTIFIER ::= { fddi 5 } + +snmpFddiChipSets OBJECT IDENTIFIER ::= { fddi 6 } + + +-- the SMT group +-- Implementation of the SMT group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +snmpFddiSMTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of SMT implementations (regardless of + their current state) on this network management + application entity. The value for this variable + must remain constant at least from one re- + initialization of the entity's network management + system to the next re-initialization." + ::= { snmpFddiSMT 1 } + + +-- the SMT table + +snmpFddiSMTTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpFddiSMTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of SMT entries. The number of entries is + given by the value of snmpFddiSMTNumber." + ::= { snmpFddiSMT 2 } + +snmpFddiSMTEntry OBJECT-TYPE + SYNTAX SnmpFddiSMTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An SMT entry containing information common to a + given SMT." + INDEX { snmpFddiSMTIndex } + ::= { snmpFddiSMTTable 1 } + +SnmpFddiSMTEntry ::= + SEQUENCE { + snmpFddiSMTIndex + INTEGER, + snmpFddiSMTStationId + FddiSMTStationIdType, + snmpFddiSMTOpVersionId + INTEGER, + snmpFddiSMTHiVersionId + INTEGER, + snmpFddiSMTLoVersionId + INTEGER, + snmpFddiSMTMACCt + INTEGER, + snmpFddiSMTNonMasterCt + INTEGER, + snmpFddiSMTMasterCt + INTEGER, + snmpFddiSMTPathsAvailable + INTEGER, + snmpFddiSMTConfigCapabilities + INTEGER, + snmpFddiSMTConfigPolicy + INTEGER, + snmpFddiSMTConnectionPolicy + INTEGER, + snmpFddiSMTTNotify + INTEGER, + snmpFddiSMTStatusReporting + INTEGER, + snmpFddiSMTECMState + INTEGER, + snmpFddiSMTCFState + INTEGER, + snmpFddiSMTHoldState + INTEGER, + snmpFddiSMTRemoteDisconnectFlag + INTEGER, + snmpFddiSMTStationAction + INTEGER + } + +snmpFddiSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each SMT. Its value ranges + between 1 and the value of snmpFddiSMTNumber. The + value for each SMT must remain constant at least + from one re-initialization of the entity's network + management system to the next re-initialization." + ::= { snmpFddiSMTEntry 1 } + +snmpFddiSMTStationId OBJECT-TYPE + SYNTAX FddiSMTStationIdType -- OCTET STRING (SIZE (8)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Uniquely identifies an FDDI station." + REFERENCE + "ANSI { fddiSMT 11 }" + ::= { snmpFddiSMTEntry 2 } + +snmpFddiSMTOpVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The version that this station is using for its + operation (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 13 }" + ::= { snmpFddiSMTEntry 3 } + +snmpFddiSMTHiVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The highest version of SMT that this station + supports (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 14 }" + ::= { snmpFddiSMTEntry 4 } + +snmpFddiSMTLoVersionId OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The lowest version of SMT that this station + supports (refer to ANSI 7.1.2.2)." + REFERENCE + "ANSI { fddiSMT 15 }" + ::= { snmpFddiSMTEntry 5 } + +snmpFddiSMTMACCt OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of MACs in the station or + concentrator." + REFERENCE + "ANSI { fddiSMT 21 }" + ::= { snmpFddiSMTEntry 6 } + +snmpFddiSMTNonMasterCt OBJECT-TYPE + SYNTAX INTEGER (0..2) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Non Master PORTs (A, B, or S PORTs) + in the station or concentrator." + REFERENCE + "ANSI { fddiSMT 22 }" + ::= { snmpFddiSMTEntry 7 } + +snmpFddiSMTMasterCt OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Master PORTs in a node. If the + node is not a concentrator, the value is zero." + REFERENCE + "ANSI { fddiSMT 23 }" + ::= { snmpFddiSMTEntry 8 } + +snmpFddiSMTPathsAvailable OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the PATH types available + in the station. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this node has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 + + For example, a station having Primary and Local + PATHs available would have a value of 5 (2**0 + + 2**2)." + REFERENCE + "ANSI { fddiSMT 24 }" + ::= { snmpFddiSMTEntry 9 } + +snmpFddiSMTConfigCapabilities OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates capabilities that are + present in the node. If 'holdAvailable' is + present, this indicates support of the optional + Hold Function (refer to ANSI SMT 9.4.3.2). If + 'CF-Wrap-AB' is present, this indicates that the + WRAP_AB state is forced. + + The value is a sum. This value initially takes + the value zero, then for each of the configuration + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + holdAvailable 0 + CF-Wrap-AB 1 " + REFERENCE + "ANSI { fddiSMT 25 }" + ::= { snmpFddiSMTEntry 10 } + +snmpFddiSMTConfigPolicy OBJECT-TYPE + SYNTAX INTEGER (0..3) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the configuration policies + currently enforced in the node (refer to ANSI SMT + 9.4.3.2). The 'configurationHold' policy refers + to the Hold flag, and should not be present only + if the Hold function is supported. The 'CF-Wrap- + AB' policy refers to the CF_Wrap_AB flag. + + The value is a sum. This value initially takes + the value zero, then for each of the configuration + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + configurationHold 0 + CF-Wrap-AB 1 " + REFERENCE + "ANSI { fddiSMT 26 }" + ::= { snmpFddiSMTEntry 11 } + +snmpFddiSMTConnectionPolicy OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the connection policies + enforced at the station. A station sets the + corresponding policy for each of the connection + types that it rejects. The letter designations, X + and Y, in the 'rejectX-Y' names have the following + significance: X represents the PC-Type of the + local PORT and Y represents a PC-Neighbor in the + evaluation of Connection-Policy (PC-Type, PC- + Neighbor) that is done to determine the setting of + T-Val(3) in the PC-Signaling sequence (refer to + ANSI Section 9.6.3). + + The value is a sum. This value initially takes + the value zero, then for each of the connection + policies currently enforced on the node, 2 raised + to a power is added to the sum. The powers are + according to the following table: + + Policy Power + rejectA-A 0 + rejectA-B 1 + rejectA-S 2 + rejectA-M 3 + rejectB-A 4 + rejectB-B 5 + rejectB-S 6 + rejectB-M 7 + rejectS-A 8 + rejectS-B 9 + rejectS-S 10 + rejectS-M 11 + rejectM-A 12 + rejectM-B 13 + rejectM-S 14 + rejectM-M 15 + + Implementors should note that the polarity of + these bits is different in different places in an + SMT system. Implementors should take appropriate + care." + REFERENCE + "ANSI { fddiSMT 27 }" + ::= { snmpFddiSMTEntry 12 } + +snmpFddiSMTTNotify OBJECT-TYPE + SYNTAX INTEGER (2..30) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The timer used in the Neighbor Notification + protocol, reported in seconds and ranging from 2 + to 30 seconds (refer to ANSI SMT 8.3.1)." + REFERENCE + "ANSI { fddiSMT 29 }" + ::= { snmpFddiSMTEntry 13 } + +snmpFddiSMTStatusReporting OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the node implements the Status + Reporting Protocol. This object is included for + compatibility with products that were designed + prior to the adoption of this standard." + REFERENCE + "ANSI { fddiSMT 30 }" + ::= { snmpFddiSMTEntry 14 } + +snmpFddiSMTECMState OBJECT-TYPE + SYNTAX INTEGER { + ec0(1), -- Out + ec1(2), -- In + ec2(3), -- Trace + ec3(4), -- Leave + ec4(5), -- Path_Test + ec5(6), -- Insert + ec6(7), -- Check + ec7(8) -- Deinsert + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of the ECM state + machine (refer to ANSI SMT 9.5.2)." + REFERENCE + "ANSI { fddiSMT 41 }" + ::= { snmpFddiSMTEntry 15 } + +snmpFddiSMTCFState OBJECT-TYPE + SYNTAX INTEGER { + cf0(1), -- Isolated + cf1(2), -- Wrap_S + cf2(3), -- Wrap_A + cf3(4), -- Wrap_B + cf4(5), -- Wrap_AB + cf5(6) -- Thru + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The attachment configuration for the station or + concentrator (refer to ANSI SMT 9.7.4.3)." + REFERENCE + "ANSI { fddiSMT 42 }" + ::= { snmpFddiSMTEntry 16 } + +snmpFddiSMTHoldState OBJECT-TYPE + SYNTAX INTEGER { + not-implemented(1), -- holding not implemented + not-holding(2), + holding-prm(3), -- holding on primary + holding-sec(4) -- holding on secondary + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This value indicates the current state of the + Hold function. The values are determined as + follows: 'holding-prm' is set if the primary ring + is operational and the Recovery Enable Flag is + clear (NOT NO_Flag(primary) AND NOT RE_Flag). is + set if the secondary ring is operational and the + Recovery Enable Flag is clear (NOT + NO_Flag(secondary) AND NOT RE_Flag). Ref 9.4.3. + and 10.3.1. the primary or secondary, i.e., the + Recovery Enable, RE_Flag, is set." + REFERENCE + "ANSI { fddiSMT 43 }" + ::= { snmpFddiSMTEntry 17 } + +snmpFddiSMTRemoteDisconnectFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag indicating that the station was remotely + disconnected from the network. A station requires + a Connect Action (SM_CM_CONNECT.request (Connect)) + to rejoin and clear the flag (refer to ANSI + 6.4.5.2)." + REFERENCE + "ANSI { fddiSMT 44 }" + ::= { snmpFddiSMTEntry 18 } + +snmpFddiSMTStationAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + connect(2), + disconnect(3), + path-Test(4), + self-Test(5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object, when read, always returns a value of + other(1). The behavior of setting this variable + to each of the acceptable values is as follows: + + Other: Results in a badValue error. + + Connect: Generates an + SM_CM_Connect.request(connect) signal to CMT + indicating that the ECM State machine is to begin + a connection sequence. The + fddiSMTRemoteDisconnectFlag is cleared on the + setting of this variable to 1. See ANSI Ref + 9.3.1.1. + + Disconnect: Generates an + SM_CM_Connect.request(disconnect) signal to ECM + and sets the fddiSMTRemoteDisconnectFlag. See + ANSI Ref 9.3.1.1. + + Path-Test: Initiates a station path test. + The Path_Test variable (See ANSI Ref. 9.4.1) is + set to Testing. The results of this action are + not specified in this standard. + + Self-Test: Initiates a station self test. + The results of this action are not specified in + this standard. + + Attempts to set this object to all other values + results in a badValue error. Agents may elect to + return a badValue error on attempts to set this + variable to path-Test(4) or self-Test(5)." + REFERENCE + "ANSI { fddiSMT 60 }" + ::= { snmpFddiSMTEntry 19 } + + +-- the MAC group +-- Implementation of the MAC Group is mandatory for all +-- systems which implement manageable FDDI subsystems. + +snmpFddiMACNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of MAC implementations (across + all SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { snmpFddiMAC 1 } + + +-- the MAC table + +snmpFddiMACTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpFddiMACEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MAC entries. The number of entries is + given by the value of snmpFddiMACNumber." + ::= { snmpFddiMAC 2 } + +snmpFddiMACEntry OBJECT-TYPE + SYNTAX SnmpFddiMACEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A MAC entry containing information common to a + given MAC." + INDEX { snmpFddiMACSMTIndex, snmpFddiMACIndex } + ::= { snmpFddiMACTable 1 } + +SnmpFddiMACEntry ::= + SEQUENCE { + snmpFddiMACSMTIndex + INTEGER, + snmpFddiMACIndex + INTEGER, + snmpFddiMACFrameStatusCapabilities + INTEGER, + snmpFddiMACTMaxGreatestLowerBound + FddiTime, + snmpFddiMACTVXGreatestLowerBound + FddiTime, + snmpFddiMACPathsAvailable + INTEGER, + snmpFddiMACCurrentPath + INTEGER, + snmpFddiMACUpstreamNbr + FddiMACLongAddressType, + snmpFddiMACOldUpstreamNbr + FddiMACLongAddressType, + snmpFddiMACDupAddrTest + INTEGER, + snmpFddiMACPathsRequested + INTEGER, + snmpFddiMACDownstreamPORTType + INTEGER, + snmpFddiMACSMTAddress + FddiMACLongAddressType, + snmpFddiMACTReq + FddiTime, + snmpFddiMACTNeg + FddiTime, + snmpFddiMACTMax + FddiTime, + snmpFddiMACTvxValue + FddiTime, + snmpFddiMACTMin + FddiTime, + snmpFddiMACCurrentFrameStatus + INTEGER, + snmpFddiMACFrameCts + Counter, + snmpFddiMACErrorCts + Counter, + snmpFddiMACLostCts + Counter, + snmpFddiMACFrameErrorThreshold + INTEGER, + snmpFddiMACFrameErrorRatio + INTEGER, + snmpFddiMACRMTState + INTEGER, + snmpFddiMACDaFlag + INTEGER, + snmpFddiMACUnaDaFlag + INTEGER, + snmpFddiMACFrameCondition + INTEGER, + snmpFddiMACChipSet + OBJECT IDENTIFIER, + snmpFddiMACAction + INTEGER + } + + +snmpFddiMACSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + MAC." + ::= { snmpFddiMACEntry 1 } + +snmpFddiMACIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each MAC on the managed + entity. The MAC identified by a particular value + of this index is that identified by the same value + of an ifIndex object instance. That is, if a MAC + is associated with the interface whose value of + ifIndex in the Internet-Standard MIB is equal to + 5, then the value of snmpFddiMACIndex shall also + equal 5. The value for each MAC must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { snmpFddiMACEntry 2 } + +snmpFddiMACFrameStatusCapabilities OBJECT-TYPE + SYNTAX INTEGER (0..1799) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the MAC's bridge and end- + station capabilities for operating in a bridged + FDDI network. + The value is a sum. This value initially takes + the value zero, then for each capability present, + 2 raised to a power is added to the sum. The + powers are according to the following table: + + + Capability Power + FSC-Type0 0 + -- MAC repeats A/C indicators as received on + -- copying with the intent to forward. + + FSC-Type1 1 + -- MAC sets C but not A on copying for + -- forwarding. + + FSC-Type2 2 + -- MAC resets C and sets A on C set and + -- A reset if the frame is not copied and the + -- frame was addressed to this MAC + + FSC-Type0-programmable 8 + -- Type0 capability is programmable + + FSC-Type1-programmable 9 + -- Type1 capability is programmable + + FSC-Type2-programmable 10 + -- Type2 capability is programmable + " + REFERENCE + "ANSI { fddiMAC 11 }" + ::= { snmpFddiMACEntry 3 } + +snmpFddiMACTMaxGreatestLowerBound OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The greatest lower bound of T_Max supported for + this MAC." + REFERENCE + "ANSI { fddiMAC 13 }" + ::= { snmpFddiMACEntry 4 } + +snmpFddiMACTVXGreatestLowerBound OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The greatest lower bound of TVX supported for + this MAC." + REFERENCE + "ANSI { fddiMAC 14 }" + ::= { snmpFddiMACEntry 5 } + +snmpFddiMACPathsAvailable OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the PATH types available + for this MAC. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this MAC has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 " + REFERENCE + "ANSI { fddiMAC 22 }" + ::= { snmpFddiMACEntry 6 } + +snmpFddiMACCurrentPath OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + primary(2), + secondary(4), + local(8), + isolated(16) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the association of the MAC with a + station PATH." + REFERENCE + "ANSI { fddiMAC 23 }" + ::= { snmpFddiMACEntry 7 } + +snmpFddiMACUpstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC's upstream neighbor's long individual MAC + address. It may be determined by the Neighbor + Information Frame protocol (refer to ANSI SMT + 7.2.1). The value shall be reported as '00 00 00 + 00 00 00' if it is unknown." + REFERENCE + "ANSI { fddiMAC 24 }" + ::= { snmpFddiMACEntry 8 } + +snmpFddiMACOldUpstreamNbr OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The previous value of the MAC's upstream + neighbor's long individual MAC address. It may be + determined by the Neighbor Information Frame + protocol (refer to ANSI SMT 7.2.1). The value + shall be reported as '00 00 00 00 00 00' if it is + unknown." + REFERENCE + "ANSI { fddiMAC 26 }" + ::= { snmpFddiMACEntry 9 } + +snmpFddiMACDupAddrTest OBJECT-TYPE + SYNTAX INTEGER { none(1), pass(2), fail(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Duplicate Address Test flag, Dup_Addr_Test + (refer to ANSI 8.3.1)." + REFERENCE + "ANSI { fddiMAC 29 }" + ::= { snmpFddiMACEntry 10 } + +snmpFddiMACPathsRequested OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates PATH(s) desired for this + MAC. + + The value is a sum which represents the individual + PATHs that are desired. This value initially + takes the value zero, then for each type of PATH + that this node is, 2 raised to a power is added to + the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 + Isolated 3 + + The precedence order is primary, secondary, local, + and then isolated if multiple PATHs are desired + are set." + REFERENCE + "ANSI { fddiMAC 32 }" + ::= { snmpFddiMACEntry 11 } + +snmpFddiMACDownstreamPORTType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), unknown(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the PC-Type of the first port that is + downstream of this MAC (the exit port)." + REFERENCE + "ANSI { fddiMAC 33 }" + ::= { snmpFddiMACEntry 12 } + +snmpFddiMACSMTAddress OBJECT-TYPE + SYNTAX FddiMACLongAddressType -- OCTET STRING (SIZE (6)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The 48 bit individual address of the MAC used for + SMT frames." + REFERENCE + "ANSI { fddiMAC 41 }" + ::= { snmpFddiMACEntry 13 } + +snmpFddiMACTReq OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of T-Req (refer to ANSI MAC 2.2.1 and + ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 51 }" + ::= { snmpFddiMACEntry 14 } + +snmpFddiMACTNeg OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of T-Neg (refer to ANSI MAC 2.2.1 and + ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 52 }" + ::= { snmpFddiMACEntry 15 } + +snmpFddiMACTMax OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of T-Max (refer to ANSI MAC 2.2.1 and + ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 53 }" + ::= { snmpFddiMACEntry 16 } + +snmpFddiMACTvxValue OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of TvxValue (refer to ANSI MAC 2.2.1 + and ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 54 }" + ::= { snmpFddiMACEntry 17 } + +snmpFddiMACTMin OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of T-Min (refer to ANSI MAC 2.2.1 and + ANSI MAC 7.3.5.2)." + REFERENCE + "ANSI { fddiMAC 55 }" + ::= { snmpFddiMACEntry 18 } + +snmpFddiMACCurrentFrameStatus OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the MAC's operational + frame status setting functionality. + + The value is a sum. This value initially takes + the value zero, then for each functionality + present, 2 raised to a power is added to the sum. + The powers are according to the following table: + + Functionality Power + FSC-Type0 0 + -- MAC repeats A/C indicators as received + + FSC-Type1 1 + -- MAC sets C but not A on copying for + -- forwarding + + FSC-Type2 2 + -- MAC resets C and sets A on C set and A + -- reset if frame is not copied + " + REFERENCE + "ANSI { fddiMAC 63 }" + ::= { snmpFddiMACEntry 19 } + +snmpFddiMACFrameCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Frame_Ct (refer to ANSI MAC 2.2.1)." + REFERENCE + "ANSI { fddiMAC 71 }" + ::= { snmpFddiMACEntry 20 } + +snmpFddiMACErrorCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Error_Ct (refer to ANSI MAC 2.2.1)." + REFERENCE + "ANSI { fddiMAC 81 }" + ::= { snmpFddiMACEntry 21 } + +snmpFddiMACLostCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Lost_Ct (refer to ANSI MAC 2.2.1)." + REFERENCE + "ANSI { fddiMAC 82 }" + ::= { snmpFddiMACEntry 22 } + +snmpFddiMACFrameErrorThreshold OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A threshold for determining when a MAC Condition + report should be generated. The condition is true + when the ratio, ((delta snmpFddiMACLostCt + delta + snmpFddiMACErrorCt) / (delta snmpFddiMACFrameCt + + delta snmpFddiMACLostCt)) x 2**16. exceeds the + threshold. It is used to determine when a station + has an unacceptable frame error threshold. The + sampling algorithm is implementation dependent. + Any attempt to set this variable to a value of + less than one shall result in a badValue error. + Those who are familiar with the SNMP management + framework will recognize that thresholds are not + in keeping with the SNMP philosophy. However, + this variable is supported by underlying SMT + implementations already and maintaining this + threshold should not pose an undue additional + burden on SNMP agent implementors." + REFERENCE + "ANSI { fddiMAC 95 }" + ::= { snmpFddiMACEntry 23 } + +snmpFddiMACFrameErrorRatio OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This attribute is the actual ratio, ((delta + snmpFddiMACLostCt + delta snmpFddiMACErrorCt) / + (delta snmpFddiMACFrameCt + delta + snmpFddiMACLostCt)) x 2**16." + REFERENCE + "ANSI { fddiMAC 96 }" + ::= { snmpFddiMACEntry 24 } + +snmpFddiMACRMTState OBJECT-TYPE + SYNTAX INTEGER { + rm0(1), -- Isolated + rm1(2), -- Non_Op + rm2(3), -- Ring_Op + rm3(4), -- Detect + rm4(5), -- Non_Op_Dup + rm5(6), -- Ring_Op_Dup + rm6(7), -- Directed + rm7(8) -- Trace + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of the Ring + Management state machine (refer to ANSI Section + 10)." + REFERENCE + "ANSI { fddiMAC 111 }" + ::= { snmpFddiMACEntry 25 } + +snmpFddiMACDaFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The RMT flag Duplicate Address Flag, DA_Flag + (refer to ANSI 10.3.1.2)." + REFERENCE + "ANSI { fddiMAC 112 }" + ::= { snmpFddiMACEntry 26 } + +snmpFddiMACUnaDaFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A flag set when the upstream neighbor reports a + duplicate address condition. Reset when the + condition clears." + REFERENCE + "ANSI { fddiMAC 113 }" + ::= { snmpFddiMACEntry 27 } + +snmpFddiMACFrameCondition OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the MAC Condition is active when set. + Cleared when the condition clears and on power + up." + REFERENCE + "ANSI { fddiMAC 114 }" + ::= { snmpFddiMACEntry 28 } + +snmpFddiMACChipSet OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the hardware chip(s) which + is (are) principally responsible for the + implementation of the MAC function. A few OBJECT + IDENTIFIERS are identified elsewhere in this memo. + For those The assignment of additional OBJECT + IDENTIFIERs to various types of hardware chip sets + is managed by the IANA. For example, vendors + whose chip sets are not defined in this memo may + request a number from the Internet Assigned + Numbers Authority (IANA) which indicates the + assignment of a enterprise specific subtree which, + among other things, may be used to allocate OBJECT + IDENTIFIER assignments for that enterprise's chip + sets. Similarly, in the absence of an + appropriately assigned OBJECT IDENTIFIER in this + memo or in an enterprise specific subtree of a + chip vendor, a board or system vendor can request + a number for a subtree from the IANA and make an + appropriate assignment. It is desired that, + whenever possible, the same OBJECT IDENTIFIER be + used for all chips of a given type. Consequently, + the assignment made in this memo for a chip, if + any, should be used in preference to any other + assignment and the assignment made by the chip + manufacturer, if any, should be used in preference + to assignments made by users of those chips. If + the hardware chip set is unknown, the object + identifier + + unknownChipSet OBJECT IDENTIFIER ::= { 0 0 } + + is returned. Note that unknownChipSet is a + syntactically valid object identifier, and any + conformant implementation of ASN.1 and the BER + must be able to generate and recognize this + value." + ::= { snmpFddiMACEntry 29 } + +snmpFddiMACAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + enableLLCService(2), + disableLLCService(3), + connectMAC(4), + disconnectMAC(5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object, when read, always returns a value of + other(1). The behavior of setting this variable + to each of the acceptable values is as follows: + + Other: Results in a badValue + error. + + enableLLCService: enables MAC service to + higher layers. + + disableLLCService: disables MAC service to + higher layers. + + connectMAC: connect this MAC in + station. + + disconnectMAC: disconnect this MAC in + station. + + Attempts to set this object to all other values + results in a badValue error." + REFERENCE + "ANSI { fddiMAC 130 }" + ::= { snmpFddiMACEntry 30 } + + +-- the PATH group + +-- the PATH group is empty for now and shall remain so until +-- the ANSI community sorts out their PATH group + + +-- the PORT group +-- Implementation of the PORT group is mandatory for all + +-- systems which implement manageable FDDI subsystems. + +snmpFddiPORTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of PORT implementations (across + all SMTs) on this network management application + entity. The value for this variable must remain + constant at least from one re-initialization of + the entity's network management system to the next + re-initialization." + ::= { snmpFddiPORT 1 } + + +-- the PORT table + +snmpFddiPORTTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpFddiPORTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of PORT entries. The number of entries is + given by the value of snmpFddiPORTNumber." + ::= { snmpFddiPORT 2 } + +snmpFddiPORTEntry OBJECT-TYPE + SYNTAX SnmpFddiPORTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A PORT entry containing information common to a + given PORT." + INDEX { snmpFddiPORTSMTIndex, snmpFddiPORTIndex } + ::= { snmpFddiPORTTable 1 } + +SnmpFddiPORTEntry ::= + SEQUENCE { + snmpFddiPORTSMTIndex + INTEGER, + snmpFddiPORTIndex + INTEGER, + snmpFddiPORTPCType + INTEGER, + snmpFddiPORTPCNeighbor + INTEGER, + snmpFddiPORTConnectionPolicies + INTEGER, + snmpFddiPORTRemoteMACIndicated + INTEGER, + snmpFddiPORTCEState + INTEGER, + snmpFddiPORTPathsRequested + INTEGER, + snmpFddiPORTMACPlacement + FddiResourceId, + snmpFddiPORTAvailablePaths + INTEGER, + snmpFddiPORTMACLoopTime + FddiTime, + snmpFddiPORTTBMax + FddiTime, + snmpFddiPORTBSFlag + INTEGER, + snmpFddiPORTLCTFailCts + Counter, + snmpFddiPORTLerEstimate + INTEGER, + snmpFddiPORTLemRejectCts + Counter, + snmpFddiPORTLemCts + Counter, + snmpFddiPORTLerCutoff + INTEGER, + snmpFddiPORTLerAlarm + INTEGER, + snmpFddiPORTConnectState + INTEGER, + snmpFddiPORTPCMState + INTEGER, + snmpFddiPORTPCWithhold + INTEGER, + snmpFddiPORTLerCondition + INTEGER, + snmpFddiPORTChipSet + OBJECT IDENTIFIER, + snmpFddiPORTAction + INTEGER + } + +snmpFddiPORTSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + PORT." + ::= { snmpFddiPORTEntry 1 } + +snmpFddiPORTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each PORT within a given SMT. + Its value ranges between 1 and the sum of the + values of snmpFddiSMTNonMasterCt + { snmpFddiSMTEntry 6 } and snmpFddiSMTMasterCt + { snmpFddiSMTEntry 7 } on the given SMT. The + value for each PORT must remain constant at least + from one re-initialization of the entity's network + management system to the next re-initialization." + ::= { snmpFddiPORTEntry 2 } + +snmpFddiPORTPCType OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "PC_Type (refer to ANSI SMT 9.2.2 and ANSI SMT + 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 12 }" + ::= { snmpFddiPORTEntry 3 } + +snmpFddiPORTPCNeighbor OBJECT-TYPE + SYNTAX INTEGER { a(1), b(2), s(3), m(4), unknown(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type (PC_Neighbor) of the remote PORT that is + determined in PC_Signaling in R_Val (1,2) (refer + to ANSI SMT 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 13 }" + ::= { snmpFddiPORTEntry 4 } + +snmpFddiPORTConnectionPolicies OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the node's PORT policies. + Pc-MAC-LCT, Pc-MAC-Loop, and Pc-MAC-Placement + indicate how the respective PC Signaling + Capability flags should be set (refer to ANSI SMT + 9.4.3.2). + + The value is a sum. This value initially takes + the value zero, then for each PORT policy, 2 + raised to a power is added to the sum. The powers + are according to the following table: + + Policy Power + Pc-MAC-LCT 0 + Pc-MAC-Loop 1 + Pc-MAC-Placement 2 " + REFERENCE + "ANSI { fddiPORT 14 }" + ::= { snmpFddiPORTEntry 5 } + +snmpFddiPORTRemoteMACIndicated OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The indication, in PC-Signaling that the remote + partner intends to place a MAC in the output token + PATH of this PORT. Signaled as R_Val (9) (refer + to ANSI SMT 9.6.3.2)." + REFERENCE + "ANSI { fddiPORT 15 }" + ::= { snmpFddiPORTEntry 6 } + +snmpFddiPORTCEState OBJECT-TYPE + SYNTAX INTEGER { + ce0(1), -- Isolated + ce1(2), -- Insert_P + ce2(3), -- Insert_S + ce3(4), -- Insert_X + ce4(5) -- Local + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the current state of PORT's + Configuration Element (CE) (refer to ANSI 9.7.5). + Note that this value represents the Current Path + information for this PORT." + REFERENCE + "ANSI { fddiPORT 16 }" + ::= { snmpFddiPORTEntry 7 } + +snmpFddiPORTPathsRequested OBJECT-TYPE + SYNTAX INTEGER (0..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that indicates the desired association(s) + of the port with a station PATH. The 'Primary' + Path is the default. The value of 'Secondary' is + only meaningful for S (slave) or M (master) PORT + PC-Types. This value effects the setting of the + CF_Insert_S, and CF_Insert_L flags (refer to ANSI + Section 9.4.3). If the 'Primary' PATH is present, + then the Primary PATH (the default PATH) is + selected. If the 'Secondary' PATH is present and + the 'Primary' PATH is not present, then the + CF_Insert_S flag is set. If the 'Local' PATH is + sent and neither the 'Primary' or 'Secondary' + PATHs are sent, then the CF_Insert_L flag is set. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH + desired, 2 raised to a power is added to the sum. + The powers are according to the following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 + Isolated 3 " + REFERENCE + "ANSI { fddiPORT 17 }" + ::= { snmpFddiPORTEntry 8 } + +snmpFddiPORTMACPlacement OBJECT-TYPE + SYNTAX FddiResourceId -- INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the upstream MAC, if any, that is + associated with the PORT. The value shall be zero + if there is no MAC associated with the PORT. + Otherwise, the value shall be equal to the value + of snmpFddiMACIndex associated with the MAC." + REFERENCE + "ANSI { fddiPORT 18 }" + ::= { snmpFddiPORTEntry 9 } + +snmpFddiPORTAvailablePaths OBJECT-TYPE + SYNTAX INTEGER (0..7) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that indicates the PATH types available + for M and S PORTs. + + The value is a sum. This value initially takes + the value zero, then for each type of PATH that + this port has available, 2 raised to a power is + added to the sum. The powers are according to the + following table: + + Path Power + Primary 0 + Secondary 1 + Local 2 " + REFERENCE + "ANSI { fddiPORT 19 }" + ::= { snmpFddiPORTEntry 10 } + +snmpFddiPORTMACLoopTime OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Time for the optional MAC Local Loop, T_Next(9), + which is greater-than or equal-to 200 milliseconds + (refer to ANSI SMT 9.4.4.2.3)." + REFERENCE + "ANSI { fddiPORT 21 }" + ::= { snmpFddiPORTEntry 11 } + +snmpFddiPORTTBMax OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-write + STATUS mandatory + DESCRIPTION + "TB_Max (refer to ANSI SMT 9.4.4.2.1)." + REFERENCE + "ANSI { fddiPORT 32 }" + ::= { snmpFddiPORTEntry 12 } + +snmpFddiPORTBSFlag OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Break State, BS_Flag (refer to ANSI SMT + 9.4.3.4)." + REFERENCE + "ANSI { fddiPORT 33 }" + ::= { snmpFddiPORTEntry 13 } + +snmpFddiPORTLCTFailCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The count of the consecutive times the link + confidence test (LCT) has failed during connection + management (refer to ANSI 9.4.1)." + REFERENCE + "ANSI { fddiPORT 42 }" + ::= { snmpFddiPORTEntry 14 } + +snmpFddiPORTLerEstimate OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A long term average link error rate. It ranges + from 10**-4 to 10**-15 and is reported as the + absolute value of the exponent of the estimate." + REFERENCE + "ANSI { fddiPORT 51 }" + ::= { snmpFddiPORTEntry 15 } + +snmpFddiPORTLemRejectCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A link error monitoring count of the times that a + link has been rejected." + REFERENCE + "ANSI { fddiPORT 52 }" + ::= { snmpFddiPORTEntry 16 } + +snmpFddiPORTLemCts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The aggregate link error monitor error count, set + to zero only on station power_up." + REFERENCE + "ANSI { fddiPORT 53 }" + ::= { snmpFddiPORTEntry 17 } + +snmpFddiPORTLerCutoff OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The link error rate estimate at which a link + connection will be broken. It ranges from 10**-4 + to 10**-15 and is reported as the absolute value + of the exponent." + REFERENCE + "ANSI { fddiPORT 58 }" + ::= { snmpFddiPORTEntry 18 } + +snmpFddiPORTLerAlarm OBJECT-TYPE + SYNTAX INTEGER (4..15) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The link error rate estimate at which a link + connection will generate an alarm. It ranges from + 10**-4 to 10**-15 and is reported as the absolute + value of the exponent of the estimate." + REFERENCE + "ANSI { fddiPORT 59 }" + ::= { snmpFddiPORTEntry 19 } + +snmpFddiPORTConnectState OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + connecting(2), + standby(3), + active(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An indication of the connect state of this PORT. + Basically, this gives a higher level view of the + state of the connection by grouping PCM states and + the PC-Withhold flag state. The supported values + and their corresponding PCM states and PC-Withhold + condition, when relevant, are: + disabled: (PC0:Off, PC9:Maint) + + connecting: (PC1(Break) || PC3 (Connect) || PC4 + (Next) || PC5 (Signal) || PC6 + (Join) || PC7 (Verify)) && + (PC_Withhold = None) + + standby: (NOT PC_Withhold == None) + + active: (PC2:Trace || PC8:Active) " + REFERENCE + "ANSI { fddiPORT 61 }" + ::= { snmpFddiPORTEntry 20 } + +snmpFddiPORTPCMState OBJECT-TYPE + SYNTAX INTEGER { + pc0(1), -- Off + pc1(2), -- Break + pc2(3), -- Trace + pc3(4), -- Connect + pc4(5), -- Next + pc5(6), -- Signal + pc6(7), -- Join + pc7(8), -- Verify + pc8(9), -- Active + pc9(10) -- Maint + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "(refer to SMT 9.6.2)." + REFERENCE + "ANSI { fddiPORT 62 }" + ::= { snmpFddiPORTEntry 21 } + +snmpFddiPORTPCWithhold OBJECT-TYPE + SYNTAX INTEGER { none(1), m-m(2), other(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "PC_Withhold, (refer to ANSI SMT 9.4.1)." + REFERENCE + "ANSI { fddiPORT 63 }" + ::= { snmpFddiPORTEntry 22 } + +snmpFddiPORTLerCondition OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable is set to true whenever LerEstimate + is less than or equal to LerAlarm." + REFERENCE + "ANSI { fddiPORT 64 }" + ::= { snmpFddiPORTEntry 23 } + +snmpFddiPORTChipSet OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the hardware chip(s) which + is (are) principally responsible for the + implementation of the PORT (PHY) function. A few + OBJECT IDENTIFIERS are identified elsewhere in + this memo. For those The assignment of additional + OBJECT IDENTIFIERs to various types of hardware + chip sets is managed by the IANA. For example, + vendors whose chip sets are not defined in this + memo may request a number from the Internet + Assigned Numbers Authority (IANA) which indicates + the assignment of a enterprise specific subtree + which, among other things, may be used to allocate + OBJECT IDENTIFIER assignments for that + enterprise's chip sets. Similarly, in the absence + of an appropriately assigned OBJECT IDENTIFIER in + this memo or in an enterprise specific subtree of + a chip vendor, a board or system vendor can + request a number for a subtree from the IANA and + make an appropriate assignment. It is desired + that, whenever possible, the same OBJECT + IDENTIFIER be used for all chips of a given type. + Consequently, the assignment made in this memo for + a chip, if any, should be used in preference to + any other assignment and the assignment made by + the chip manufacturer, if any, should be used in + preference to assignments made by users of those + chips. If the hardware chip set is unknown, the + object identifier + + unknownChipSet OBJECT IDENTIFIER ::= { 0 0 } + + is returned. Note that unknownChipSet is a + syntactically valid object identifier, and any + conformant implementation of ASN.1 and the BER + must be able to generate and recognize this + value." + ::= { snmpFddiPORTEntry 24 } + +snmpFddiPORTAction OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + maintPORT(2), + enablePORT(3), + disablePORT(4), + startPORT(5), + stopPORT(6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object, when read, always returns a value of + other(1). The behavior of setting this variable + to each of the acceptable values is as follows: + + Other: Results in a badValue error. + + maintPORT: Signal PC_Maint + + enablePORT: Signal PC_Enable + + disablePORT: Signal PC_Disable + + startPORT: Signal PC_Start + + stopPORT: Signal PC_Stop + + Signals cause an SM_CM_CONTROL.request service to + be generated with a control_action of `Signal' and + the `variable' parameter set with the appropriate + value (i.e., PC_Maint, PC_Enable, PC_Disable, + PC_Start, PC_Stop). Ref. ANSI SMT Section 9.3.2. + + Attempts to set this object to all other values + results in a badValue error." + REFERENCE + "ANSI { fddiPORT 70 }" + ::= { snmpFddiPORTEntry 25 } + + +-- the ATTACHMENT group +-- Implementation of the ATTACHMENT group is mandatory for +-- all systems which implement manageable FDDI subsystems. + +snmpFddiATTACHMENTNumber OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of attachments (across all SMTs) + on this network management application entity. + The value for this variable must remain constant + at least from one re-initialization of the + entity's network management system to the next + re-initialization." + ::= { snmpFddiATTACHMENT 1 } + + +-- the ATTACHMENT table + +snmpFddiATTACHMENTTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpFddiATTACHMENTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of ATTACHMENT entries. The number of + entries is given by the value of + snmpFddiATTACHMENTNumber." + ::= { snmpFddiATTACHMENT 2 } + +snmpFddiATTACHMENTEntry OBJECT-TYPE + SYNTAX SnmpFddiATTACHMENTEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An ATTACHMENT entry containing information common + to a given set of ATTACHMENTs. + + The ATTACHMENT Resource represents a PORT or a + pair of PORTs plus the optional associated optical + bypass that are managed as a functional unit. + Because of its relationship to the PORT Objects, + there is a natural association of ATTACHMENT + Resource Indices to the PORT Indices. The + resource index for the ATTACHMENT is equal to the + associated PORT index for 'single-attachment' and + 'concentrator' type snmpFddiATTACHMENTClasses. + For 'dual-attachment' Classes, the ATTACHMENT + Index is the PORT Index of the A PORT of the A/B + PORT Pair that represents the ATTACHMENT." + INDEX { snmpFddiATTACHMENTSMTIndex, + snmpFddiATTACHMENTIndex } + ::= { snmpFddiATTACHMENTTable 1 } + +SnmpFddiATTACHMENTEntry ::= + SEQUENCE { + snmpFddiATTACHMENTSMTIndex + INTEGER, + snmpFddiATTACHMENTIndex + INTEGER, + snmpFddiATTACHMENTClass + INTEGER, + snmpFddiATTACHMENTOpticalBypassPresent + INTEGER, + snmpFddiATTACHMENTIMaxExpiration + FddiTime, + snmpFddiATTACHMENTInsertedStatus + INTEGER, + snmpFddiATTACHMENTInsertPolicy + INTEGER + } + +snmpFddiATTACHMENTSMTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of the SMT index associated with this + ATTACHMENT." + ::= { snmpFddiATTACHMENTEntry 1 } + +snmpFddiATTACHMENTIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each ATTACHMENT on a given + SMT. Its value ranges between 1 and the sum of + the values of snmpFddiSMTNonMasterCt { + snmpFddiSMTEntry 6 } and snmpFddiSMTMasterCt { + snmpFddiSMTEntry 7 } on the given SMT. The value + for each ATTACHMENT must remain constant at least + from one re-initialization of the entity's network + management system to the next re-initialization." + ::= { snmpFddiATTACHMENTEntry 2 } + +snmpFddiATTACHMENTClass OBJECT-TYPE + SYNTAX INTEGER { + single-attachment(1), + dual-attachment(2), + concentrator(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Attachment class. This represents a PORT or + a pair of PORTs plus the associated optional + optical bypass that are managed as a functional + unit. The PORT associations are the following: + + single-attachment - S PORTs + dual-attachment - A/B PORT Pairs + concentrator - M PORTs " + REFERENCE + "ANSI { fddiATTACHMENT 11 }" + ::= { snmpFddiATTACHMENTEntry 3 } + +snmpFddiATTACHMENTOpticalBypassPresent OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of this value is false for 'single- + attachment' and { snmpFddiATTACHMENT 11 }. + Correct operation of CMT for single-attachment and + concentrator attachments requires that a bypass + function must not loopback the network side of the + MIC, but only the node side." + REFERENCE + "ANSI { fddiATTACHMENT 12 }" + ::= { snmpFddiATTACHMENTEntry 4 } + +snmpFddiATTACHMENTIMaxExpiration OBJECT-TYPE + SYNTAX FddiTime + ACCESS read-only + STATUS mandatory + DESCRIPTION + "I_Max (refer to ANSI SMT 9.4.4.2.1). It is + recognized that some currently deployed systems do + not implement an optical bypass. Systems which do + not implement optical bypass should return a value + of 0." + REFERENCE + "ANSI { fddiATTACHMENT 13 }" + ::= { snmpFddiATTACHMENTEntry 5 } + +snmpFddiATTACHMENTInsertedStatus OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2), unimplemented(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether the attachment is currently + inserted in the node." + REFERENCE + "ANSI { fddiATTACHMENT 14 }" + ::= { snmpFddiATTACHMENTEntry 6 } + +snmpFddiATTACHMENTInsertPolicy OBJECT-TYPE + SYNTAX INTEGER { true(1), false(2), unimplemented(3) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates the Insert Policy for this Attachment. + Insert: True (1), Don't Insert: False (2), + Unimplemented (3)" + REFERENCE + "ANSI { fddiATTACHMENT 15 }" + ::= { snmpFddiATTACHMENTEntry 7 } + + +-- the Chip Set group +-- The following object identifiers are allocated for use +-- with the snmpFddiMACChipSet and snmpFddiPORTChipSet +-- variables. + + snmpFddiPHYChipSets -- Chips primarily responsible + -- for implementing the PHY + -- function. + OBJECT IDENTIFIER ::= { snmpFddiChipSets 1 } + + -- None defined at present + -- Chipsets may someday be + -- defined here + + + snmpFddiMACChipSets -- Chips primarily responsible + -- for implementing the + -- MAC function. + OBJECT IDENTIFIER ::= { snmpFddiChipSets 2 } + + -- None defined at present + -- Chipsets may someday be + -- defined here + + snmpFddiPHYMACChipSets -- Chips which implement both + -- the PHY and MAC functions + OBJECT IDENTIFIER ::= { snmpFddiChipSets 3 } + + -- None defined at present + -- Chipsets may someday be + -- defined here + +END diff --git a/mibs/ietf/RFC1316-MIB b/mibs/ietf/RFC1316-MIB new file mode 100644 index 0000000..c09af9f --- /dev/null +++ b/mibs/ietf/RFC1316-MIB @@ -0,0 +1,513 @@ + RFC1316-MIB DEFINITIONS ::= BEGIN + + IMPORTS + Counter, TimeTicks, Gauge + FROM RFC1155-SMI + DisplayString, mib-2 + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + +-- this is the MIB module for character stream devices + +char OBJECT IDENTIFIER ::= { mib-2 19 } + +-- Textual Conventions + + AutonomousType ::= OBJECT IDENTIFIER + +-- The object identifier is an independently extensible type +-- identification value. It may, for example indicate a +-- particular sub-tree with further MIB definitions, or +-- define something like a protocol type or type of +-- hardware. + + InstancePointer ::= OBJECT IDENTIFIER + +-- The object identifier is a pointer to a specific instance +-- of a MIB object in this agent's implemented MIB. By +-- convention, it is the first object in the conceptual row +-- for the instance. + +-- the generic Character group + +-- Implementation of this group is mandatory for all +-- systems that offer character ports + +charNumber OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of entries in charPortTable, regardless + of their current state." + ::= { char 1 } + + +-- the Character Port table + +charPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF CharPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of port entries. The number of entries is + given by the value of charNumber." + ::= { char 2 } + +charPortEntry OBJECT-TYPE + SYNTAX CharPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Status and parameter values for a character port." + INDEX { charPortIndex } + ::= { charPortTable 1 } + +CharPortEntry ::= + SEQUENCE { + charPortIndex + INTEGER, + charPortName + DisplayString, + charPortType + INTEGER, + charPortHardware + AutonomousType, + charPortReset + INTEGER, + charPortAdminStatus + INTEGER, + charPortOperStatus + INTEGER, + charPortLastChange + TimeTicks, + charPortInFlowType + INTEGER, + charPortOutFlowType + INTEGER, + charPortInFlowState + INTEGER, + charPortOutFlowState + INTEGER, + charPortInCharacters + Counter, + charPortOutCharacters + Counter, + charPortAdminOrigin + INTEGER, + charPortSessionMaximum + INTEGER, + charPortSessionNumber + Gauge, + charPortSessionIndex + INTEGER + } + +charPortIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value for each character port. Its value + ranges between 1 and the value of charNumber. By + convention and if possible, hardware port numbers + come first, with a simple, direct mapping. The + value for each port must remain constant at least + from one re-initialization of the network management + agent to the next." + ::= { charPortEntry 1 } + +charPortName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An administratively assigned name for the port, + typically with some local significance." + ::= { charPortEntry 2 } + +charPortType OBJECT-TYPE + SYNTAX INTEGER { physical(1), virtual(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The port's type, 'physical' if the port represents + an external hardware connector, 'virtual' if it does + not." + ::= { charPortEntry 3 } + +charPortHardware OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A reference to hardware MIB definitions specific to + a physical port's external connector. For example, + if the connector is RS-232, then the value of this + object refers to a MIB sub-tree defining objects + specific to RS-232. If an agent is not configured + to have such values, the agent returns the object + identifier: + + nullHardware OBJECT IDENTIFIER ::= { 0 0 } + " + ::= { charPortEntry 4 } + +charPortReset OBJECT-TYPE + SYNTAX INTEGER { ready(1), execute(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A control to force the port into a clean, initial + state, both hardware and software, disconnecting all + the port's existing sessions. In response to a + get-request or get-next-request, the agent always + returns 'ready' as the value. Setting the value to + 'execute' causes a reset." + ::= { charPortEntry 5 } + +charPortAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2), off(3), + maintenance(4) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port's desired state, independent of flow + control. 'enabled' indicates that the port is + allowed to pass characters and form new sessions. + 'disabled' indicates that the port is allowed to + pass characters but not form new sessions. 'off' + indicates that the port is not allowed to pass + characters or have any sessions. 'maintenance' + indicates a maintenance mode, exclusive of normal + operation, such as running a test." + ::= { charPortEntry 6 } + +charPortOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), + maintenance(3), absent(4), active(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The port's actual, operational state, independent + of flow control. 'up' indicates able to function + normally. 'down' indicates inability to function + for administrative or operational reasons. + 'maintenance' indicates a maintenance mode, + exclusive of normal operation, such as running a + test. 'absent' indicates that port hardware is not + present. 'active' indicates up with a user present + (e.g. logged in)." + ::= { charPortEntry 7 } + +charPortLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the port entered + its current operational state. If the current state + was entered prior to the last reinitialization of + the local network management subsystem, then this + object contains a zero value." + ::= { charPortEntry 8 } + +charPortInFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), xonXoff(2), hardware(3), + ctsRts(4), dsrDtr(5) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port's type of input flow control. 'none' + indicates no flow control at this level or below. + 'xonXoff' indicates software flow control by + recognizing XON and XOFF characters. 'hardware' + indicates flow control delegated to the lower level, + for example a parallel port. + + 'ctsRts' and 'dsrDtr' are specific to RS-232-like + ports. Although not architecturally pure, they are + included here for simplicity's sake." + ::= { charPortEntry 9 } + +charPortOutFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), xonXoff(2), hardware(3), + ctsRts(4), dsrDtr(5) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port's type of output flow control. 'none' + indicates no flow control at this level or below. + 'xonXoff' indicates software flow control by + recognizing XON and XOFF characters. 'hardware' + indicates flow control delegated to the lower level, + for example a parallel port. + + 'ctsRts' and 'dsrDtr' are specific to RS-232-like + ports. Although not architecturally pure, they are + included here for simplicy's sake." + ::= { charPortEntry 10 } + +charPortInFlowState OBJECT-TYPE + SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operational state of input flow control + on the port. 'none' indicates not applicable. + 'unknown' indicates this level does not know. + 'stop' indicates flow not allowed. 'go' indicates + flow allowed." + ::= { charPortEntry 11 } + +charPortOutFlowState OBJECT-TYPE + SYNTAX INTEGER { none(1), unknown(2), stop(3), go(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operational state of output flow + control on the port. 'none' indicates not + applicable. 'unknown' indicates this level does not + know. 'stop' indicates flow not allowed. 'go' + indicates flow allowed." + ::= { charPortEntry 12 } + +charPortInCharacters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Total number of characters detected as input from + the port since system re-initialization and while + the port operational state was 'up', 'active', or + 'maintenance', including, for example, framing, flow + control (i.e. XON and XOFF), each occurrence of a + BREAK condition, locally-processed input, and input + sent to all sessions." + ::= { charPortEntry 13 } + +charPortOutCharacters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Total number of characters detected as output to + the port since system re-initialization and while + the port operational state was 'up', 'active', or + 'maintenance', including, for example, framing, flow + control (i.e. XON and XOFF), each occurrence of a + BREAK condition, locally-created output, and output + received from all sessions." + ::= { charPortEntry 14 } + +charPortAdminOrigin OBJECT-TYPE + SYNTAX INTEGER { dynamic(1), network(2), local(3), + none(4) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The administratively allowed origin for + establishing session on the port. 'dynamic' allows + 'network' or 'local' session establishment. 'none' + disallows session establishment." + ::= { charPortEntry 15 } + +charPortSessionMaximum OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of concurrent sessions allowed + on the port. A value of -1 indicates no maximum. + Setting the maximum to less than the current number + of sessions has unspecified results." + ::= { charPortEntry 16 } + +charPortSessionNumber OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of open sessions on the port that are in + the connecting, connected, or disconnecting state." + ::= { charPortEntry 17 } + +charPortSessionIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of charSessIndex for the port's first or + only active session. If the port has no active + session, the agent returns the value zero." + ::= { charPortEntry 18 } + + +-- the Character Session table + +charSessTable OBJECT-TYPE + SYNTAX SEQUENCE OF CharSessEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of port session entries." + ::= { char 3 } + +charSessEntry OBJECT-TYPE + SYNTAX CharSessEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Status and parameter values for a character port + session." + INDEX { charSessPortIndex, charSessIndex } + ::= { charSessTable 1 } + +CharSessEntry ::= + SEQUENCE { + charSessPortIndex + INTEGER, + charSessIndex + INTEGER, + charSessKill + INTEGER, + charSessState + INTEGER, + charSessProtocol + AutonomousType, + charSessOperOrigin + INTEGER, + charSessInCharacters + Counter, + charSessOutCharacters + Counter, + charSessConnectionId + InstancePointer, + charSessStartTime + TimeTicks + } + +charSessPortIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of charPortIndex for the port to which + this session belongs." + ::= { charSessEntry 1 } + +charSessIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The session index in the context of the port, a + non-zero positive integer. Session indexes within a + port need not be sequential. Session indexes may be + reused for different ports. For example, port 1 and + port 3 may both have a session 2 at the same time. + Session indexes may have any valid integer value, + with any meaning convenient to the agent + implementation." + ::= { charSessEntry 2 } + +charSessKill OBJECT-TYPE + SYNTAX INTEGER { ready(1), execute(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A control to terminate the session. In response to + a get-request or get-next-request, the agent always + returns 'ready' as the value. Setting the value to + 'execute' causes termination." + ::= { charSessEntry 3 } + +charSessState OBJECT-TYPE + SYNTAX INTEGER { connecting(1), connected(2), + disconnecting(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operational state of the session, + disregarding flow control. 'connected' indicates + that character data could flow on the network side + of session. 'connecting' indicates moving from + nonexistent toward 'connected'. 'disconnecting' + indicates moving from 'connected' or 'connecting' to + nonexistent." + ::= { charSessEntry 4 } + +charSessProtocol OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network protocol over which the session is + running. Other OBJECT IDENTIFIER values may be + defined elsewhere, in association with specific + protocols. However, this document assigns those of + known interest as of this writing." + ::= { charSessEntry 5 } + +wellKnownProtocols OBJECT IDENTIFIER ::= { char 4 } + +protocolOther OBJECT IDENTIFIER ::= {wellKnownProtocols 1} +protocolTelnet OBJECT IDENTIFIER ::= {wellKnownProtocols 2} +protocolRlogin OBJECT IDENTIFIER ::= {wellKnownProtocols 3} +protocolLat OBJECT IDENTIFIER ::= {wellKnownProtocols 4} +protocolX29 OBJECT IDENTIFIER ::= {wellKnownProtocols 5} +protocolVtp OBJECT IDENTIFIER ::= {wellKnownProtocols 6} + +charSessOperOrigin OBJECT-TYPE + SYNTAX INTEGER { unknown(1), network(2), local(3) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The session's source of establishment." + ::= { charSessEntry 6 } + +charSessInCharacters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This session's subset of charPortInCharacters." + ::= { charSessEntry 7 } + +charSessOutCharacters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This session's subset of charPortOutCharacters." + ::= { charSessEntry 8 } + +charSessConnectionId OBJECT-TYPE + SYNTAX InstancePointer + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A reference to additional local MIB information. + This should be the highest available related MIB, + corresponding to charSessProtocol, such as Telnet. + For example, the value for a TCP connection (in the + absence of a Telnet MIB) is the object identifier of + tcpConnState. If an agent is not configured to have + such values, the agent returns the object + identifier: + + nullConnectionId OBJECT IDENTIFIER ::= { 0 0 } + " + ::= { charSessEntry 9 } + +charSessStartTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime in MIB-2 when the session + entered connecting state." + ::= { charSessEntry 10 } + +END diff --git a/mibs/ietf/RFC1381-MIB b/mibs/ietf/RFC1381-MIB new file mode 100644 index 0000000..80cf6b6 --- /dev/null +++ b/mibs/ietf/RFC1381-MIB @@ -0,0 +1,1011 @@ +RFC1381-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter + FROM RFC1155-SMI + transmission + FROM RFC1213-MIB + OBJECT-TYPE + FROM RFC-1212; + + + -- LAPB MIB + +lapb OBJECT IDENTIFIER ::= { transmission 16 } + +PositiveInteger ::= INTEGER (0..2147483647) + +IfIndexType ::= INTEGER (1..2147483647) +-- IfIndexType specifies an index object for a table +-- with entries that match entries in the MIB-II ifTable. +-- The value of the index for the table will match the +-- ifIndex entry for same interface in the ifTable. +-- The values of this object range from 1 to ifNumber +-- inclusive. + + +-- ########################################################### +-- LAPB Admn Table +-- ########################################################### + +-- Support of the lapbAdmnTable is mandatory for all +-- agents of systems that implement LAPB. + +lapbAdmnTable OBJECT-TYPE + SYNTAX SEQUENCE OF LapbAdmnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains objects that can be + changed to manage a LAPB interface. + Changing one of these parameters may take + effect in the operating LAPB immediately or + may wait until the interface is restarted + depending on the details of the + implementation. + + Most of the objects in this read-write table + have corresponding read-only objects in the + lapbOperTable that return the current + operating value. + + The operating values may be different from + these configured values if changed by XID + negotiation or if a configured parameter was + changed after the interface was started." + ::= { lapb 1 } + +lapbAdmnEntry OBJECT-TYPE + SYNTAX LapbAdmnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Configured parameter values for a specific + LAPB." + INDEX { lapbAdmnIndex } + ::= { lapbAdmnTable 1 } + +LapbAdmnEntry ::= SEQUENCE { + lapbAdmnIndex + IfIndexType, + lapbAdmnStationType + INTEGER, + lapbAdmnControlField + INTEGER, + lapbAdmnTransmitN1FrameSize + PositiveInteger, + lapbAdmnReceiveN1FrameSize + PositiveInteger, + lapbAdmnTransmitKWindowSize + INTEGER, + lapbAdmnReceiveKWindowSize + INTEGER, + lapbAdmnN2RxmitCount + INTEGER, + lapbAdmnT1AckTimer + PositiveInteger, + lapbAdmnT2AckDelayTimer + PositiveInteger, + lapbAdmnT3DisconnectTimer + PositiveInteger, + lapbAdmnT4IdleTimer + PositiveInteger, + lapbAdmnActionInitiate + INTEGER, + lapbAdmnActionRecvDM + INTEGER + } + +lapbAdmnIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the LAPB interface." + ::= { lapbAdmnEntry 1 } + +lapbAdmnStationType OBJECT-TYPE + SYNTAX INTEGER { + dte (1), + dce (2), + dxe (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Identifies the desired station type of this + interface." + REFERENCE "ISO 7776 section 3.1" + DEFVAL { dte } + ::= { lapbAdmnEntry 2 } + +lapbAdmnControlField OBJECT-TYPE + SYNTAX INTEGER { + modulo8 (1), + modulo128 (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The desired size of the sequence numbers + used to number frames." + REFERENCE "ISO 8885 Table 3, Name: HDLC Option - 10" + DEFVAL { modulo8 } + ::= { lapbAdmnEntry 3 } + +lapbAdmnTransmitN1FrameSize OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default maximum N1 frame size desired + in number of bits for a frame transmitted by + this DTE. This excludes flags and 0 bits + inserted for transparency." + REFERENCE "ISO 8885 Table 3, + Name: Information Field length" + DEFVAL { 36000 } -- 4500 * 8; 802.5 Frame size + ::= { lapbAdmnEntry 4 } + +lapbAdmnReceiveN1FrameSize OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default maximum N1 frame size desired + in number of bits for a frame the DCE/remote + DTE transmits to this DTE. This excludes + flags and 0 bits inserted for transparency." + DEFVAL { 36000 } -- 4500 * 8; 802.5 Frame size + ::= { lapbAdmnEntry 5 } + +lapbAdmnTransmitKWindowSize OBJECT-TYPE + SYNTAX INTEGER (1..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default transmit window size for this + Interface. This is the maximum number of + unacknowledged sequenced PDUs that may be + outstanding from this DTE at any one time." + REFERENCE "ISO 8885 Table 3, Name: Window size" + DEFVAL { 7 } + ::= { lapbAdmnEntry 6 } + +lapbAdmnReceiveKWindowSize OBJECT-TYPE + SYNTAX INTEGER (1..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default receive window size for this + Interface. This is the maximum number of + unacknowledged sequenced PDUs that may be + outstanding from the DCE/remote DTE at any + one time." + REFERENCE "ISO 8885 Table 3, Name: Window size" + DEFVAL { 7 } + ::= { lapbAdmnEntry 7 } + +lapbAdmnN2RxmitCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default N2 retry counter for this + interface. This specifies the number of + times a PDU will be resent after the T1 + timer expires without an acknowledgement for + the PDU." + REFERENCE "ISO 8885 Table 3, + Name: Retransmission Attempts" + DEFVAL { 20 } + ::= { lapbAdmnEntry 8 } + +lapbAdmnT1AckTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default T1 timer for this interface. + This specifies the maximum time in + Milliseconds to wait for acknowledgment of a + PDU." + REFERENCE "ISO 8885 Table 3, Name: + Acknowledgement timer" + DEFVAL { 3000 } + ::= { lapbAdmnEntry 9 } + +lapbAdmnT2AckDelayTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default T2 timer for this interface. + This specifies the maximum time in + Milliseconds to wait before sending an + acknowledgment for a sequenced PDU. A value + of zero means there will be no delay in + acknowledgement generation." + REFERENCE "ISO 8885 Table 3, + Name: Reply delay timer" + DEFVAL { 0 } + ::= { lapbAdmnEntry 10 } + +lapbAdmnT3DisconnectTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T3 timer for this interface. This + specifies the time in Milliseconds to wait + before considering the link disconnected. A + value of zero indicates the link will be + considered disconnected upon completion of + the frame exchange to disconnect the link." + REFERENCE "ISO 7776 section 5.7.1.3" + DEFVAL { 60000 } + ::= { lapbAdmnEntry 11 } + +lapbAdmnT4IdleTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T4 timer for this interface. This + specifies the maximum time in Milliseconds + to allow without frames being exchanged on + the data link. A value of 2147483647 + indicates no idle timer is being kept." + REFERENCE "ISO 7776 section 5.7.1.4" + DEFVAL { 2147483647 } + ::= { lapbAdmnEntry 12 } + +lapbAdmnActionInitiate OBJECT-TYPE + SYNTAX INTEGER { + sendSABM (1), + sendDISC (2), + sendDM (3), + none (4), + other (5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the action LAPB will take + to initiate link set-up." + DEFVAL { sendSABM } + ::= { lapbAdmnEntry 13 } + +lapbAdmnActionRecvDM OBJECT-TYPE + SYNTAX INTEGER { + sendSABM (1), + sendDISC (2), + other (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the action LAPB will take + when it receives a DM response." + DEFVAL { sendSABM } + ::= { lapbAdmnEntry 14 } + + +-- ########################################################### +-- LAPB operating parameters. +-- ########################################################### + +-- Support of the lapbOperTable is mandatory for all +-- agents of systems that implement LAPB. + +lapbOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF LapbOperEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains configuration + information about interface parameters + currently set in the interface. Many of + these objects have corresponding objects in + the lapbAdmnTable." + ::= { lapb 2 } + +lapbOperEntry OBJECT-TYPE + SYNTAX LapbOperEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Currently set parameter values for a + specific LAPB." + INDEX { lapbOperIndex } + ::= { lapbOperTable 1 } + +LapbOperEntry ::= SEQUENCE { + lapbOperIndex + IfIndexType, + lapbOperStationType + INTEGER, + lapbOperControlField + INTEGER, + lapbOperTransmitN1FrameSize + PositiveInteger, + lapbOperReceiveN1FrameSize + PositiveInteger, + lapbOperTransmitKWindowSize + INTEGER, + lapbOperReceiveKWindowSize + INTEGER, + lapbOperN2RxmitCount + INTEGER, + lapbOperT1AckTimer + PositiveInteger, + lapbOperT2AckDelayTimer + PositiveInteger, + lapbOperT3DisconnectTimer + PositiveInteger, + lapbOperT4IdleTimer + PositiveInteger, + lapbOperPortId + OBJECT IDENTIFIER, + lapbOperProtocolVersionId + OBJECT IDENTIFIER + } + +lapbOperIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the LAPB interface." + ::= { lapbOperEntry 1 } + +lapbOperStationType OBJECT-TYPE + SYNTAX INTEGER { + dte (1), + dce (2), + dxe (3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Identifies the current operating station + type of this interface. A value of dxe (3) + indicates XID negotiation has not yet taken + place." + REFERENCE "ISO 7776 section 3.1" + ::= { lapbOperEntry 2 } + +lapbOperControlField OBJECT-TYPE + SYNTAX INTEGER { + modulo8 (1), + modulo128 (2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operating size of the sequence + numbers used to number frames." + REFERENCE "ISO 7776 section 3.3" + ::= { lapbOperEntry 3 } + +lapbOperTransmitN1FrameSize OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operating N1 frame size used + for the maximum number of bits in a frame + this DTE can transmit. This excludes flags + and 0 bits inserted for transparency." + REFERENCE "ISO 7776 section 5.7.3" + ::= { lapbOperEntry 4 } + +lapbOperReceiveN1FrameSize OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + -- See lapbOperTransmitN1FrameSize above + DESCRIPTION + "The current operating N1 frame size used + for the maximum number of bits in a frame + the DCE/remote DTE can transmit. This + excludes flags and 0 bits inserted for + transparency." + ::= { lapbOperEntry 5 } + +lapbOperTransmitKWindowSize OBJECT-TYPE + SYNTAX INTEGER (1..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current PDU window size this Interface + uses to transmit. This is the maximum + number of unacknowledged sequenced PDUs that + may be outstanding from this DTE at any one + time." + REFERENCE "ISO 7776 section 5.7.4" + ::= { lapbOperEntry 6 } + +lapbOperReceiveKWindowSize OBJECT-TYPE + SYNTAX INTEGER (1..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current receive PDU window size for + this Interface. This is the maximum number + of unacknowledged sequenced PDUs that may be + outstanding from the DCE/remote DTE at any + one time." + REFERENCE "ISO 7776 section 5.7.4" + ::= { lapbOperEntry 7 } + +lapbOperN2RxmitCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current N2 retry counter used for this + interface. This specifies the number of + times a PDU will be resent after the T1 + timer expires without an acknowledgement for + the PDU." + REFERENCE "ISO 7776 section 5.7.2" + ::= { lapbOperEntry 8 } + +lapbOperT1AckTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current T1 timer for this interface. + This specifies the maximum time in + Milliseconds to wait for acknowledgment of a + PDU." + REFERENCE "ISO 7776 section 5.7.1.1" + ::= { lapbOperEntry 9 } + +lapbOperT2AckDelayTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current T2 timer for this interface. + This specifies the maximum time in + Milliseconds to wait before sending an + acknowledgment for a sequenced PDU. A value + of zero means there will be no delay in + acknowledgement generation." + REFERENCE "ISO 7776 section 5.7.1.2" + ::= { lapbOperEntry 10 } + +lapbOperT3DisconnectTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current T3 timer for this interface. + This specifies the time in Milliseconds to + wait before considering the link + disconnected. A value of zero indicates the + link will be considered disconnected upon + completion of the frame exchange to + disconnect the link." + REFERENCE "ISO 7776 section 5.7.1.3" + ::= { lapbOperEntry 11 } + +lapbOperT4IdleTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The current T4 timer for this interface. + This specifies the maximum time in + Milliseconds to allow without frames being + exchanged on the data link. A value of + 2147483647 indicates no idle timer is being + kept." + REFERENCE "ISO 7776 section 5.7.1.4" + ::= { lapbOperEntry 12 } + +lapbOperPortId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies an instance of the + index object in the first group of objects + in the MIB specific to the physical device + or interface used to send and receive + frames. If an agent does not support any + such objects, it should return nullSpec + OBJECT IDENTIFIER {0 0}." + ::= { lapbOperEntry 13 } + +lapbOperProtocolVersionId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the version of the + lapb protocol implemented by this + interface." + ::= { lapbOperEntry 14 } + + +-- ########################################################### +-- LAPB Flow Table +-- ########################################################### + +-- Support of the lapbFlowTable is mandatory for all +-- agents of systems that implement LAPB. + +lapbFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF LapbFlowEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table defines the objects recorded by + LAPB to provide information about the + traffic flow through the interface." + ::= { lapb 3 } + +lapbFlowEntry OBJECT-TYPE + SYNTAX LapbFlowEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The information regarding the effects of + flow controls in LAPB." + INDEX { lapbFlowIfIndex } + ::= { lapbFlowTable 1 } + +LapbFlowEntry ::= SEQUENCE { + lapbFlowIfIndex + IfIndexType, + lapbFlowStateChanges + Counter, + lapbFlowChangeReason + INTEGER, + lapbFlowCurrentMode + INTEGER, + lapbFlowBusyDefers + Counter, + lapbFlowRejOutPkts + Counter, + lapbFlowRejInPkts + Counter, + lapbFlowT1Timeouts + Counter, + lapbFlowFrmrSent + OCTET STRING, + lapbFlowFrmrReceived + OCTET STRING, + lapbFlowXidReceived + OCTET STRING + } + +lapbFlowIfIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the LAPB Interface." + ::= { lapbFlowEntry 1 } + +lapbFlowStateChanges OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of LAPB State Changes, including + resets." + ::= { lapbFlowEntry 2 } + +lapbFlowChangeReason OBJECT-TYPE + SYNTAX INTEGER { + notStarted (1), -- Initial state + abmEntered (2), -- SABM or UA + abmeEntered (3), -- SABME or UA + abmReset (4), -- SABM in ABM + abmeReset (5), -- SABME in ABME + dmReceived (6), -- DM Response + dmSent (7), -- DM sent + discReceived (8), -- DISC Response + discSent (9), -- DISC Sent + frmrReceived (10), -- FRMR Received + frmrSent (11), -- FRMR Sent + n2Timeout (12), -- N2 Timer Expired + other (13) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The reason for the most recent incrementing + of lapbFlowStateChanges. A DM or DISC frame + generated to initiate link set-up does not + alter this object. When the MIB-II object + ifOperStatus does not have a value of + testing, there exists a correlation between + this object and ifOperStatus. IfOperStatus + will have a value of up when this object + contains: abmEntered, abmeEntered, + abmReset, or abmeReset. IfOperStatus will + have a value of down when this object has a + value of notStarted, or dmReceived through + n2Timeout. There is no correlation when + this object has the value other." + ::= { lapbFlowEntry 3 } + +lapbFlowCurrentMode OBJECT-TYPE + SYNTAX INTEGER { + disconnected (1), + -- initial state or DISC received + + linkSetup (2), + -- SABM sent + + frameReject (3), + -- Invalid frame received and + -- FRMR sent + + disconnectRequest (4), + -- DISC sent + + informationTransfer (5), + -- normal information transfer state + -- SABM(E) sent and UA received, or + -- SABM(E) received and UA sent + + rejFrameSent (6), + -- invalid NS received and REJ sent + + waitingAcknowledgement (7), + + -- T1 expired and RR sent + + stationBusy (8), + -- RNR sent + + remoteStationBusy (9), + -- RNR received + + bothStationsBusy (10), + -- RNR received and RNR sent + + waitingAckStationBusy (11), + -- T1 expired, RNR sent + + waitingAckRemoteBusy (12), + -- T1 expired, RNR received + + waitingAckBothBusy (13), + -- T1 expired, RNR sent, + -- and RNR received + + rejFrameSentRemoteBusy (14), + -- REJ sent and RNR received + + xidFrameSent (15), + -- XID frame sent + + error (16), + -- An error state other than + -- a one defined above + + other (17) + -- A state not listed above + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current condition of the conversation." + ::= { lapbFlowEntry 4 } + +lapbFlowBusyDefers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times this device was unable + to transmit a frame due to a perceived + remote busy condition. Busy conditions can + result from the receipt of an RNR from the + remote device, the lack of valid sequence + number space (window saturation), or other + conditions." + ::= { lapbFlowEntry 5 } + +lapbFlowRejOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of REJ or SREJ frames sent by + this station." + ::= { lapbFlowEntry 6 } + +lapbFlowRejInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of REJ or SREJ frames received + by this station." + ::= { lapbFlowEntry 7 } + +lapbFlowT1Timeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a re-transmission was + effected by the T1 Timer expiring." + ::= { lapbFlowEntry 8 } + +lapbFlowFrmrSent OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..7)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Information Field of the FRMR most + recently sent. If no FRMR has been sent + (the normal case) or the information isn't + available, this will be an OCTET STRING of + zero length." + REFERENCE "ISO 7776 Section 4.3.9, tables 7 and 8" + ::= { lapbFlowEntry 9 } + +lapbFlowFrmrReceived OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..7)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Information Field of the FRMR most + recently received. If no FRMR has been + received (the normal case) or the + information isn't available, this will be an + OCTET STRING of zero length." + REFERENCE "ISO 7776 Section 4.3.9, tables 7 and 8" + ::= { lapbFlowEntry 10 } + +lapbFlowXidReceived OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8206)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Information Field of the XID frame most + recently received. If no XID frame has been + received, this will be an OCTET STRING of + zero length." + REFERENCE "ISO 8885" + ::= { lapbFlowEntry 11 } + + +-- ########################################################### +-- LAPB XID Table +-- ########################################################### + +-- Support for the lapbXidTable is mandatory for all agents +-- of systems that have a LAPB implementation using XID +-- negotiation. Agents of systems without XID negotiation +-- support should not implement this table. + +lapbXidTable OBJECT-TYPE + SYNTAX SEQUENCE OF LapbXidEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table defines values to use for XID + negotiation that are not found in the + lapbAdmnTable. This table is optional for + implementations that don't support XID and + mandatory for implementations that do + initiate XID negotiation." + ::= { lapb 4 } + +lapbXidEntry OBJECT-TYPE + SYNTAX LapbXidEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "XId negotiation parameter values for a + specific LAPB." + INDEX { lapbXidIndex } + ::= { lapbXidTable 1 } + + +LapbXidEntry ::= SEQUENCE { + lapbXidIndex + IfIndexType, + lapbXidAdRIdentifier + OCTET STRING, + lapbXidAdRAddress + OCTET STRING, + lapbXidParameterUniqueIdentifier + OCTET STRING, + lapbXidGroupAddress + OCTET STRING, + lapbXidPortNumber + OCTET STRING, + lapbXidUserDataSubfield + OCTET STRING + } + +lapbXidIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the LAPB interface." + ::= { lapbXidEntry 1 } + +lapbXidAdRIdentifier OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the Address Resolution + Identifier. A zero length string indicates + no Identifier value has been assigned." + REFERENCE "ISO 8885 Table 2, Name: Identifier" + DEFVAL { ''h } + ::= { lapbXidEntry 2 } + +lapbXidAdRAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the Address Resolution + Address. A zero length string indicates no + Address value has been assigned." + REFERENCE "ISO 8885 Table 2, Name: Address" + DEFVAL { ''h } + ::= { lapbXidEntry 3 } + +lapbXidParameterUniqueIdentifier OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the parameter unique + Identifier. A zero length string indicates + no Unique identifier value has been + assigned." + REFERENCE "ISO 8885 Table 3, Name: Identifier" + DEFVAL { ''h } + ::= { lapbXidEntry 4 } + +lapbXidGroupAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The value of the parameter Group address. + A zero length string indicates no Group + address value has been assigned." + REFERENCE "ISO 8885 Table 3, Name: Group address" + DEFVAL { ''h } + ::= { lapbXidEntry 5 } + +lapbXidPortNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port number assigned for this link. A + zero length string indicates no local port + number identifier has been assigned." + REFERENCE "ISO 8885 Table 3, Name: Port number" + DEFVAL { ''h } + ::= { lapbXidEntry 6 } + +lapbXidUserDataSubfield OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..8206)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A user data subfield, if any, to be + transmitted in an XID frame. A zero length + frame indicates no user data subfield has + been assigned. The octet string should + include both the User data identifier and + User data field as shown in Figures 1 and + 4." + REFERENCE "ISO 8885 section 4.3" + DEFVAL { ''h } + ::= { lapbXidEntry 7 } + + +-- ########################################################### +-- LAPB protocol versions +-- ########################################################### + +lapbProtocolVersion OBJECT IDENTIFIER + ::= { lapb 5 } + +lapbProtocolIso7776v1986 OBJECT IDENTIFIER + ::= { lapbProtocolVersion 1 } + +lapbProtocolCcittV1980 OBJECT IDENTIFIER + ::= { lapbProtocolVersion 2 } + +lapbProtocolCcittV1984 OBJECT IDENTIFIER + ::= { lapbProtocolVersion 3 } + + + +-- The following describes some of the MIB-II interface +-- objects and their relationship with the objects in this +-- MIB extension. + +-- ifDescr: describes the interface. It should include +-- identification information for the physical line and a +-- description of the network. For connections to PDNs, +-- it should name the PDN. + +-- ifMtu: the maximum number of octets an upper layer can +-- pass to this interface as a single frame. + +-- ifSpeed: + +-- ifAdminStatus: + +-- ifOperStatus: + +-- ifLastChange: the last time the state of the interface +-- changed. A reset is considered an instantaneous change to +-- the ndm state and back to abm or abme. This will be the +-- last time that lapbFlowChangeReason and lapbFlowChanges +-- changed. + +-- ifInOctets: contains the number of octets +-- received from the peer LAPB including FCS. + +-- ifInUcastPkts: contains the number of I-frames delivered +-- by this interface to a higher layer interface. + +-- ifInDiscards: contains the number of received +-- frames discarded because of internal conditions +-- (such as lack of buffering). + +-- ifInErrors: contains the number of Invalid frames received. +-- This does not have any relationship with the number REJ, +-- or RNR frames sent or received. + +-- ifInUnknownProtos: contains the number of frames +-- that were correct but were dropped because they +-- were inappropriate for the current state. This +-- includes an invalid Poll bit, an unknown address, +-- or other condition such as an RNR when connection +-- not established. This also includes the number of +-- DISC or other frames that were ignored because the +-- link was not established and this interface was not +-- configured to perform link setup on that type frame. + +-- ifOutOctets: number of octets sent to peer including +-- FCS octets. + +-- ifOutUcastPkts: number of I-frames received from +-- a higher layer for transmission to peer. + +-- ifOutDiscards: number of frames to be sent that were +-- dropped due to internal conditions such as buffering etc. + +-- ifOutErrors: number of transmissions that failed +-- due to errors or were considered invalid by the receiver. +-- This does not have any relationship with the number REJ, +-- or RNR frames sent or received. + +-- ifOutQLen: number of frames waiting to be transmitted. + + +-- This MIB does not provide any support for: +-- Multilink procedure (MLP) in ISO 7776 section 6 +-- LLC Pbit timer +-- LLC REJ timer +-- LLC Busy State Timer 7.8.1.4 + +-- ########################################################### + +END diff --git a/mibs/ietf/RFC1382-MIB b/mibs/ietf/RFC1382-MIB new file mode 100644 index 0000000..cc9bcbc --- /dev/null +++ b/mibs/ietf/RFC1382-MIB @@ -0,0 +1,2625 @@ +RFC1382-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter, Gauge, TimeTicks + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212 + DisplayString, transmission + FROM RFC1213-MIB + TRAP-TYPE + FROM RFC-1215 + EntryStatus + FROM RFC1271-MIB + PositiveInteger, + IfIndexType + FROM RFC1381-MIB; + +x25 OBJECT IDENTIFIER ::= { transmission 5 } + + +-- Support of the X25 subtree and all subtrees under it +-- is mandatory for all agents of system that implement X.25. + +X121Address ::= OCTET STRING (SIZE(0..17)) + -- 0 to 17 bytes in length containing the ASCII + -- characters [0-9], each octet contains one digit + -- of the address. + + +-- ########################################################### +-- X.25 Administration Table +-- ########################################################### + +x25AdmnTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25AdmnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains the administratively + set configuration parameters for an X.25 + Packet Level Entity (PLE). + + Most of the objects in this table have + corresponding objects in the x25OperTable. + This table contains the values as last set + by the administrator. The x25OperTable + contains the values actually in use by an + X.25 PLE. + + Changing an administrative value may or may + not change a current operating value. The + operating value may not change until the + interface is restarted. Some + implementations may change the values + immediately upon changing the administrative + table. All implementations are required to + load the values from the administrative + table when initializing a PLE." + ::= { x25 1 } + +x25AdmnEntry OBJECT-TYPE + SYNTAX X25AdmnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25AdmnTable." + INDEX { x25AdmnIndex } + ::= { x25AdmnTable 1 } + +X25AdmnEntry ::= SEQUENCE { + x25AdmnIndex + IfIndexType, + x25AdmnInterfaceMode + INTEGER, + x25AdmnMaxActiveCircuits + INTEGER, + x25AdmnPacketSequencing + INTEGER, + x25AdmnRestartTimer + PositiveInteger, + x25AdmnCallTimer + PositiveInteger, + x25AdmnResetTimer + PositiveInteger, + x25AdmnClearTimer + PositiveInteger, + x25AdmnWindowTimer + PositiveInteger, + x25AdmnDataRxmtTimer + PositiveInteger, + x25AdmnInterruptTimer + PositiveInteger, + x25AdmnRejectTimer + PositiveInteger, + x25AdmnRegistrationRequestTimer + PositiveInteger, + x25AdmnMinimumRecallTimer + PositiveInteger, + x25AdmnRestartCount + INTEGER, + x25AdmnResetCount + INTEGER, + x25AdmnClearCount + INTEGER, + x25AdmnDataRxmtCount + INTEGER, + x25AdmnRejectCount + INTEGER, + x25AdmnRegistrationRequestCount + INTEGER, + x25AdmnNumberPVCs + INTEGER, + x25AdmnDefCallParamId + OBJECT IDENTIFIER, + x25AdmnLocalAddress + X121Address, + x25AdmnProtocolVersionSupported + OBJECT IDENTIFIER + } + +x25AdmnIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 Interface." + ::= { x25AdmnEntry 1 } + +x25AdmnInterfaceMode OBJECT-TYPE + SYNTAX INTEGER { + dte (1), + dce (2), + dxe (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Identifies DCE/DTE mode in which the + interface operates. A value of dxe + indicates the mode will be determined by XID + negotiation." + REFERENCE "10733 5.9 interfaceMode" + ::= { x25AdmnEntry 2 } + +x25AdmnMaxActiveCircuits OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of circuits this PLE can + support; including PVCs." + REFERENCE "10733 5.9 maxActiveCircuits; + See ISO 8208, Section 3.7" + ::= { x25AdmnEntry 3 } + +x25AdmnPacketSequencing OBJECT-TYPE + SYNTAX INTEGER { + modulo8 (1), + modulo128 (2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The modulus of the packet sequence number + space." + REFERENCE "10733 extendedPacketSequencing; + See ISO 8208 Section 7.1.1" + ::= { x25AdmnEntry 4 } + +x25AdmnRestartTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T20 restart timer in milliseconds." + REFERENCE "10733 5.9 restartTime + See ISO 8208 Section 4.1, table 26" + ::= { x25AdmnEntry 5 } + +x25AdmnCallTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T21 Call timer in milliseconds." + REFERENCE "10733 callTime; + See ISO 8208 Section 5.2.1, table 26" + ::= { x25AdmnEntry 6 } + +x25AdmnResetTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T22 Reset timer in milliseconds." + REFERENCE "10733 resetTime; + See ISO 8208 Section 8.1, table 26" + ::= { x25AdmnEntry 7 } + +x25AdmnClearTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T23 Clear timer in milliseconds." + REFERENCE "10733 clearTime; + See ISO 8208 Section 5.5.1, table 26" + ::= { x25AdmnEntry 8 } + +x25AdmnWindowTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T24 window status transmission timer in + milliseconds. A value of 2147483647 + indicates no window timer in use." + REFERENCE "10733 5.10.1 windowTime (opt); + See ISO 8208 Section 11.2.2, table 26" + ::= { x25AdmnEntry 9 } + +x25AdmnDataRxmtTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T25 data retransmission timer in + milliseconds. A value of 2147483647 + indicates no data retransmission timer in + use." + REFERENCE "10733 5.10.1 dataRetransmissionTime (opt); + See ISO 8208 Section 11.2.1, table 26" + ::= { x25AdmnEntry 10 } + +x25AdmnInterruptTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T26 interrupt timer in milliseconds. A + value of 2147483647 indicates no interrupt + timer in use." + REFERENCE "10733 interruptTime; + See ISO 8208 Section 6.8.1, table 26" + ::= { x25AdmnEntry 11 } + +x25AdmnRejectTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T27 Reject retransmission timer in + milliseconds. A value of 2147483647 + indicates no reject timer in use." + REFERENCE "10733 5.10.1 dataRejectTime (opt); + See ISO 8208 Section 13.4.1, table 26" + ::= { x25AdmnEntry 12 } + +x25AdmnRegistrationRequestTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The T28 registration timer in milliseconds. + A value of 2147483647 indicates no + registration timer in use." + REFERENCE "10733 5.8.1 registrationRequestTime (opt) + See ISO 8208 Section 13.1.1.1, table 26" + ::= { x25AdmnEntry 13 } + +x25AdmnMinimumRecallTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Minimum time interval between unsuccessful + call attempts in milliseconds." + REFERENCE "10733 5.9 minimum RecallTimer" + ::= { x25AdmnEntry 14 } + +x25AdmnRestartCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The R20 restart retransmission count." + REFERENCE "10733 5.9 restartCount; + See ISO 8208 Section 4.1, table 27" + ::= { x25AdmnEntry 15 } + +x25AdmnResetCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The r22 Reset retransmission count." + REFERENCE "10733 resetCount; + See section ISO 8208 8.1, table 27" + ::= { x25AdmnEntry 16 } + +x25AdmnClearCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The r23 Clear retransmission count." + REFERENCE "10733 clearCount; + See ISO 8208 Section 5.5.1, table 27" + ::= { x25AdmnEntry 17 } + +x25AdmnDataRxmtCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The R25 Data retransmission count. This + value is irrelevant if the + x25AdmnDataRxmtTimer indicates no timer in + use." + REFERENCE "10733 5.10.1 dataRetransmissionCount (opt) + See ISO 8208 Section 11.2.1, table 27" + ::= { x25AdmnEntry 18 } + +x25AdmnRejectCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The R27 reject retransmission count. This + value is irrelevant if the + x25AdmnRejectTimer indicates no timer in + use." + REFERENCE "10733 5.10.1 dataRejectCount (opt)" + ::= { x25AdmnEntry 19 } + +x25AdmnRegistrationRequestCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The R28 Registration retransmission Count. + This value is irrelevant if the + x25AdmnRegistrationRequestTimer indicates no + timer in use." + REFERENCE "10733 5.8.1 registrationRequestCount (opt); + See ISO 8208 Section 13.1.1.1, table 27" + ::= { x25AdmnEntry 20 } + +x25AdmnNumberPVCs OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The number of PVC configured for this PLE. + The PVCs use channel numbers from 1 to this + number." + ::= { x25AdmnEntry 21 } + +x25AdmnDefCallParamId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the instance of the + x25CallParmIndex for the entry in the + x25CallParmTable which contains the default + call parameters for this PLE." + ::= { x25AdmnEntry 22 } + +x25AdmnLocalAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The local address for this PLE subnetwork. + A zero length address maybe returned by PLEs + that only support PVCs." + REFERENCE "10733 5.9 localDTEAddress" + ::= { x25AdmnEntry 23 } + +x25AdmnProtocolVersionSupported OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Identifies the version of the X.25 protocol + this interface should support. Object + identifiers for common versions are defined + below in the x25ProtocolVersion subtree." + REFERENCE "10733 5.9 protocolVersionSupported" + ::= { x25AdmnEntry 24 } + + +-- ########################################################### +-- X.25 Operational Table +-- ########################################################### + +x25OperTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25OperEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The operation parameters in use by the X.25 + PLE." + ::= { x25 2 } + +x25OperEntry OBJECT-TYPE + SYNTAX X25OperEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25OperTable." + INDEX { x25OperIndex } + ::= { x25OperTable 1 } + +X25OperEntry ::= SEQUENCE { + x25OperIndex + IfIndexType, + x25OperInterfaceMode + INTEGER, + x25OperMaxActiveCircuits + INTEGER, + x25OperPacketSequencing + INTEGER, + x25OperRestartTimer + PositiveInteger, + x25OperCallTimer + PositiveInteger, + x25OperResetTimer + PositiveInteger, + x25OperClearTimer + PositiveInteger, + x25OperWindowTimer + PositiveInteger, + x25OperDataRxmtTimer + PositiveInteger, + x25OperInterruptTimer + PositiveInteger, + x25OperRejectTimer + PositiveInteger, + x25OperRegistrationRequestTimer + PositiveInteger, + x25OperMinimumRecallTimer + PositiveInteger, + x25OperRestartCount + INTEGER, + x25OperResetCount + INTEGER, + x25OperClearCount + INTEGER, + x25OperDataRxmtCount + INTEGER, + x25OperRejectCount + INTEGER, + x25OperRegistrationRequestCount + INTEGER, + x25OperNumberPVCs + INTEGER, + x25OperDefCallParamId + OBJECT IDENTIFIER, + x25OperLocalAddress + X121Address, + x25OperDataLinkId + OBJECT IDENTIFIER, + x25OperProtocolVersionSupported + OBJECT IDENTIFIER + } + +x25OperIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 interface." + ::= { x25OperEntry 1 } + +x25OperInterfaceMode OBJECT-TYPE + SYNTAX INTEGER { + dte (1), + dce (2), + dxe (3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Identifies DCE/DTE mode in which the + interface operates. A value of dxe + indicates the role will be determined by XID + negotiation at the Link Layer and that + negotiation has not yet taken place." + REFERENCE "10733 5.9 interfaceMode" + ::= { x25OperEntry 2 } + +x25OperMaxActiveCircuits OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Maximum number of circuits this PLE can + support." + REFERENCE "10733 5.9 maxActiveCircuits + See ISO 8208, Section 3.7" + ::= { x25OperEntry 3 } + +x25OperPacketSequencing OBJECT-TYPE + SYNTAX INTEGER { + modulo8 (1), + modulo128 (2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The modulus of the packet sequence number + space." + REFERENCE "10733 extendedPacketSequencing; + See ISO 8208 Section 7.1.1" + ::= { x25OperEntry 4 } + +x25OperRestartTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T20 restart timer in milliseconds." + REFERENCE "10733 5.9 restartTime; + See ISO 8208 Section 4.1, table 26" + ::= { x25OperEntry 5 } + +x25OperCallTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T21 Call timer in milliseconds." + REFERENCE "10733 callTime; + See ISO 8208 Section 5.2.1, table 26" + ::= { x25OperEntry 6 } + +x25OperResetTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T22 Reset timer in milliseconds." + REFERENCE "10733 resetTime; + See ISO 8208 Section 8.1, table 26" + ::= { x25OperEntry 7 } + +x25OperClearTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T23 Clear timer in milliseconds." + REFERENCE "10733 clearTime; + See ISO 8208 Section 5.5.1, table 26" + ::= { x25OperEntry 8 } + +x25OperWindowTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T24 window status transmission timer + milliseconds. A value of 2147483647 + indicates no window timer in use." + REFERENCE "10733 5.10.1 windowTime (opt); + See ISO 8208 Section 11.2.2, table 26" + ::= { x25OperEntry 9 } + +x25OperDataRxmtTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T25 Data Retransmission timer in + milliseconds. A value of 2147483647 + indicates no data retransmission timer in + use." + REFERENCE "10733 5.10.1 dataRetransmissionTime (opt); + See ISO 8208 Section 11.2.1, table 26" + ::= { x25OperEntry 10 } + +x25OperInterruptTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T26 Interrupt timer in milliseconds. A + value of 2147483647 indicates interrupts are + not being used." + REFERENCE "10733 interruptTime; + See ISO 8208 Section 6.8.1, table 26" + ::= { x25OperEntry 11 } + +x25OperRejectTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T27 Reject retransmission timer in + milliseconds. A value of 2147483647 + indicates no reject timer in use." + REFERENCE "10733 5.10.1 dataRejectTime (opt); + See ISO 8208 Section 13.4.1, table 26" + ::= { x25OperEntry 12 } + +x25OperRegistrationRequestTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The T28 registration timer in milliseconds. + A value of 2147483647 indicates no + registration timer in use." + REFERENCE "10733 5.8.1 registrationRequestTime (opt); + See ISO 8208 Section 13.1.1.1, table 26" + ::= { x25OperEntry 13 } + +x25OperMinimumRecallTimer OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Minimum time interval between unsuccessful + call attempts in milliseconds." + REFERENCE "10733 5.9 minimum RecallTimer" + ::= { x25OperEntry 14 } + +x25OperRestartCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The R20 restart retransmission count." + REFERENCE "10733 5.9 restartCount + See ISO 8208 Section 4.1, table 27" + ::= { x25OperEntry 15 } + +x25OperResetCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The r22 Reset retransmission count." + REFERENCE "10733 resetCount; + See section ISO 8208 8.1, table 27" + ::= { x25OperEntry 16 } + +x25OperClearCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The r23 Clear retransmission count." + REFERENCE "10733 clearCount; + See ISO 8208 Section 5.5.1, table 27" + ::= { x25OperEntry 17 } + +x25OperDataRxmtCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The R25 Data retransmission count. This + value is undefined if the + x25OperDataRxmtTimer indicates no timer in + use." + REFERENCE "10733 5.10.1 dataRetransmissionCount (opt); + See ISO 8208 Section 11.2.1, table 27" + ::= { x25OperEntry 18 } + +x25OperRejectCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The R27 reject retransmission count. This + value is undefined if the x25OperRejectTimer + indicates no timer in use." + REFERENCE "10733 5.10.1 dataRejectCount (opt)" + ::= { x25OperEntry 19 } + +x25OperRegistrationRequestCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The R28 Registration retransmission Count. + This value is undefined if the + x25OperREgistrationRequestTimer indicates no + timer in use." + REFERENCE "10733 5.8.1 registrationRequestCount (opt); + See ISO 8208 Section 13.1.1.1, table 27" + ::= { x25OperEntry 20 } + +x25OperNumberPVCs OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PVC configured for this PLE. + The PVCs use channel numbers from 1 to this + number." + ::= { x25OperEntry 21 } + +x25OperDefCallParamId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This identifies the instance of the + x25CallParmIndex for the entry in the + x25CallParmTable that contains the default + call parameters for this PLE." + ::= { x25OperEntry 22 } + +x25OperLocalAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local address for this PLE subnetwork. + A zero length address maybe returned by PLEs + that only support PVCs." + REFERENCE "10733 5.9 localDTEAddress" + ::= { x25OperEntry 23 } + +x25OperDataLinkId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This identifies the instance of the index + object in the first table of the most device + specific MIB for the interface used by this + PLE." + ::= { x25OperEntry 24 } + +x25OperProtocolVersionSupported OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Identifies the version of the X.25 protocol + this interface supports. Object identifiers + for common versions are defined below in the + x25ProtocolVersion subtree." + REFERENCE "10733 5.9 protocolVersionSupported" + ::= { x25OperEntry 25 } + + +-- MIB-II also provides: + +-- ifDescr: +-- On an X.25 interface this must include sufficient + +-- information to enable the system's administrator +-- to determine the appropriate configuration +-- information on a system having multiple X.25 +-- subnetworks. + +-- ifType: ddn-x25 or rfc877-x25 +-- an interface of type ddn-x25 will use an algorithm to +-- translate between X.121 address and IP addresses. +-- An interface of type rfc877-x25 will use a +-- configuration table to translate between X.121 +-- addresses and IP addresses. + +-- ifMtu: the maximum PDU a higher layer can pass to X.25 or +-- receive from X.25 + +-- ifSpeed: +-- This will be the value of the local clock for this line. +-- A value of zero indicates external clocking. + +-- ifAdminStatus: + +-- ifOperStatus + +-- ifLastChange + + +-- ########################################################### +-- X.25 Statistics Table +-- ########################################################### + +x25StatTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25StatEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Statistics information about this X.25 + PLE." + ::= { x25 3 } + +x25StatEntry OBJECT-TYPE + SYNTAX X25StatEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of the x25StatTable." + INDEX { x25StatIndex } + ::= { x25StatTable 1 } + +X25StatEntry ::= SEQUENCE { + x25StatIndex + IfIndexType, + x25StatInCalls + Counter, + x25StatInCallRefusals + Counter, + x25StatInProviderInitiatedClears + Counter, + x25StatInRemotelyInitiatedResets + Counter, + x25StatInProviderInitiatedResets + Counter, + x25StatInRestarts + Counter, + x25StatInDataPackets + Counter, + x25StatInAccusedOfProtocolErrors + Counter, + x25StatInInterrupts + Counter, + x25StatOutCallAttempts + Counter, + x25StatOutCallFailures + Counter, + x25StatOutInterrupts + Counter, + x25StatOutDataPackets + Counter, + x25StatOutgoingCircuits + Gauge, + x25StatIncomingCircuits + Gauge, + x25StatTwowayCircuits + Gauge, + x25StatRestartTimeouts + Counter, + x25StatCallTimeouts + Counter, + x25StatResetTimeouts + Counter, + x25StatClearTimeouts + Counter, + x25StatDataRxmtTimeouts + Counter, + x25StatInterruptTimeouts + Counter, + x25StatRetryCountExceededs + Counter, + x25StatClearCountExceededs + Counter + } + +x25StatIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 interface." + ::= { x25StatEntry 1 } + +x25StatInCalls OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of incoming calls received." + ::= { x25StatEntry 2 } + +x25StatInCallRefusals OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of incoming calls refused. This + includes calls refused by the PLE and by + higher layers. This also includes calls + cleared because of restricted fast select." + ::= { x25StatEntry 3 } + +x25StatInProviderInitiatedClears OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of clear requests with a cause + code other than DTE initiated." + REFERENCE "10733 providerInitiatedDisconnect" + ::= { x25StatEntry 4 } + +x25StatInRemotelyInitiatedResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reset requests received with + cause code DTE initiated." + REFERENCE "10733 remotelyInitiatedResets" + ::= { x25StatEntry 5 } + +x25StatInProviderInitiatedResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reset requests received with + cause code other than DTE initiated." + REFERENCE "10733 ProviderInitiatedResets" + ::= { x25StatEntry 6 } + +x25StatInRestarts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of remotely initiated (including + provider initiated) restarts experienced by + the PLE excluding the restart associated + with bringing up the PLE interface. This + only counts restarts received when the PLE + already has an established connection with + the remove PLE." + REFERENCE "10733 5.9 remotelyInitiatedRestarts" + ::= { x25StatEntry 7 } + +x25StatInDataPackets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of data packets received." + REFERENCE "10733 5.9 dataPacketsReceived." + ::= { x25StatEntry 8 } + +x25StatInAccusedOfProtocolErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets received containing a + procedure error cause code. These include + clear, reset, restart, or diagnostic + packets." + REFERENCE "CD 10733 5.9 accusedOfProtocolError" + ::= { x25StatEntry 9 } + +x25StatInInterrupts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of interrupt packets received by + the PLE or over the PVC/VC." + REFERENCE "10733 interruptPacketsReceived" + ::= { x25StatEntry 10 } + +x25StatOutCallAttempts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of calls attempted." + REFERENCE "10733 5.9 callAttempts" + ::= { x25StatEntry 11 } + +x25StatOutCallFailures OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of call attempts which failed. + This includes calls that were cleared + because of restrictive fast select." + ::= { x25StatEntry 12 } + +x25StatOutInterrupts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of interrupt packets send by the + PLE or over the PVC/VC." + REFERENCE "10733 InterruptPacketsSent" + ::= { x25StatEntry 13 } + +x25StatOutDataPackets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of data packets sent by this + PLE." + REFERENCE "10733 dataPacketSent" + ::= { x25StatEntry 14 } + +x25StatOutgoingCircuits OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of active outgoing circuits. + This includes call requests sent but not yet + confirmed. This does not count PVCs." + ::= { x25StatEntry 15 } + +x25StatIncomingCircuits OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of active Incoming Circuits. + This includes call indications received but + not yet acknowledged. This does not count + PVCs." + ::= { x25StatEntry 16 } + +x25StatTwowayCircuits OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of active two-way Circuits. + This includes call requests sent but not yet + confirmed. This does not count PVCs." + ::= { x25StatEntry 17 } + +x25StatRestartTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T20 restart timer + expired." + REFERENCE "10733 5.9 restartTimeouts" + ::= { x25StatEntry 18 } + +x25StatCallTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T21 call timer + expired." + REFERENCE "10733 5.9 callTimeouts" + ::= { x25StatEntry 19 } + +x25StatResetTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T22 reset timer + expired." + REFERENCE "10733 5.9 resetTimeouts" + ::= { x25StatEntry 20 } + +x25StatClearTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T23 clear timer + expired." + REFERENCE "10733 5.9 clearTimeouts" + ::= { x25StatEntry 21 } + +x25StatDataRxmtTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T25 data timer + expired." + REFERENCE "10733 5.9 dataRetransmissionsTimerExpiries" + ::= { x25StatEntry 22 } + +x25StatInterruptTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T26 interrupt timer + expired." + REFERENCE "10733 5.9 interruptTimerExpires" + ::= { x25StatEntry 23 } + +x25StatRetryCountExceededs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times a retry counter was + exhausted." + REFERENCE "10733 5.9 retryCountsExceeded" + ::= { x25StatEntry 24 } + +x25StatClearCountExceededs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the R23 clear count was + exceeded." + REFERENCE "10733 5.9 clearCountsExceeded" + ::= { x25StatEntry 25 } + + +-- MIB-II also contains: + +-- ifInOctets: Number of data octets delivered to upper +-- layer entities. + +-- ifInUcastPkts: Number of packets with a clear M-bit +-- delivered to higher layer entities. + +-- ifDiscards: Number of packets dropped for lack of buffering + +-- ifInErrors: Number of packets received containing errors + -- REFERENCE ProtocolErrorsDetectedLocally + +-- ifInUnknownProtos: Number of packets with unknown circuit +-- identifier. + +-- ifOutOctets: Number of data octets delivered by +-- X.25 to upper layers. + +-- ifOutUcastPkts: Number of packets with a clear M-bit +-- received from higher layer entities. + + +-- ########################################################### +-- X.25 Channel Table +-- ########################################################### + +x25ChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25ChannelEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "These objects contain information about the + channel number configuration in an X.25 PLE. + These values are the configured values. + changes in these values after the interfaces + has started may not be reflected in the + operating PLE." + REFERENCE "See ISO 8208, Section 3.7" + ::= { x25 4 } + +x25ChannelEntry OBJECT-TYPE + SYNTAX X25ChannelEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25ChannelTable." + REFERENCE "This provides the information available + in 10733 logicalChannelAssignments." + INDEX { x25ChannelIndex } + ::= { x25ChannelTable 1 } + +X25ChannelEntry ::= SEQUENCE { + x25ChannelIndex + IfIndexType, + x25ChannelLIC + INTEGER, + x25ChannelHIC + INTEGER, + x25ChannelLTC + INTEGER, + x25ChannelHTC + INTEGER, + x25ChannelLOC + INTEGER, + x25ChannelHOC + INTEGER + } + +x25ChannelIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 Interface." + ::= { x25ChannelEntry 1 } + +x25ChannelLIC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Lowest Incoming channel." + ::= { x25ChannelEntry 2 } + +x25ChannelHIC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Highest Incoming channel. A value of zero + indicates no channels in this range." + ::= { x25ChannelEntry 3 } + +x25ChannelLTC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Lowest Two-way channel." + ::= { x25ChannelEntry 4 } + +x25ChannelHTC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Highest Two-way channel. A value of zero + indicates no channels in this range." + ::= { x25ChannelEntry 5 } + +x25ChannelLOC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Lowest outgoing channel." + ::= { x25ChannelEntry 6 } + +x25ChannelHOC OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Highest outgoing channel. A value of zero + indicates no channels in this range." + ::= { x25ChannelEntry 7 } + + + + +-- ########################################################### +-- X25 Per Circuits Information Table +-- ########################################################### + +x25CircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25CircuitEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "These objects contain general information + about a specific circuit of an X.25 PLE." + ::= { x25 5 } + +x25CircuitEntry OBJECT-TYPE + SYNTAX X25CircuitEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25CircuitTable." + INDEX { x25CircuitIndex, + x25CircuitChannel } + ::= { x25CircuitTable 1 } + +X25CircuitEntry ::= SEQUENCE { + x25CircuitIndex + IfIndexType, + x25CircuitChannel + INTEGER, + x25CircuitStatus + INTEGER, + x25CircuitEstablishTime + TimeTicks, + x25CircuitDirection + INTEGER, + x25CircuitInOctets + Counter, + x25CircuitInPdus + Counter, + x25CircuitInRemotelyInitiatedResets + Counter, + x25CircuitInProviderInitiatedResets + Counter, + x25CircuitInInterrupts + Counter, + x25CircuitOutOctets + Counter, + x25CircuitOutPdus + Counter, + x25CircuitOutInterrupts + Counter, + x25CircuitDataRetransmissionTimeouts + Counter, + x25CircuitResetTimeouts + Counter, + x25CircuitInterruptTimeouts + Counter, + x25CircuitCallParamId + OBJECT IDENTIFIER, + x25CircuitCalledDteAddress + X121Address, + x25CircuitCallingDteAddress + X121Address, + x25CircuitOriginallyCalledAddress + X121Address, + x25CircuitDescr + DisplayString + } + +x25CircuitIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The ifIndex value for the X.25 Interface." + ::= { x25CircuitEntry 1 } + +x25CircuitChannel OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The channel number for this circuit." + ::= { x25CircuitEntry 2 } + +x25CircuitStatus OBJECT-TYPE + SYNTAX INTEGER { -- state table states + invalid (1), + closed (2), -- (p1) + calling (3), -- (p2,p3,p5) + open (4), -- (p4) + clearing (5), -- (p6,p7) + pvc (6), + pvcResetting (7), + startClear (8), -- Close cmd + startPvcResetting (9), -- Reset cmd + other (10) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object reports the current status of + the circuit. + + An existing instance of this object can only + be set to startClear, startPvcResetting, or + invalid. An instance with the value calling + or open can only be set to startClear and + that action will start clearing the circuit. + An instance with the value PVC can only be + set to startPvcResetting or invalid and that + action resets the PVC or deletes the circuit + respectively. The values startClear or + startPvcResetting will never be returned by + an agent. An attempt to set the status of + an existing instance to a value other than + one of these values will result in an error. + + A non-existing instance can be set to PVC to + create a PVC if the implementation supports + dynamic creation of PVCs. Some + implementations may only allow creation and + deletion of PVCs if the interface is down. + Since the instance identifier will supply + the PLE index and the channel number, + setting this object alone supplies + sufficient information to create the + instance. All the DEFVAL clauses for the + other objects of this table are appropriate + for creating a PVC; PLEs creating entries + for placed or accepted calls will use values + appropriate for the call rather than the + value of the DEFVAL clause. Two managers + trying to create the same PVC can determine + from the return code which manager succeeded + and which failed (the failing manager fails + because it can not set a value of PVC for an + existing object). + An entry in the closed or invalid state may + be deleted or reused at the agent's + convence. If the entry is kept in the + closed state, the values of the parameters + associated with the entry must be correct. + Closed implies the values in the circuit + table are correct. + + The value of invalid indicates the other + values in the table are invalid. Many + agents may never return a value of invalid + because they dynamically allocate and free + unused table entries. An agent for a + statically configured systems can return + invalid to indicate the entry has not yet + been used so the counters contain no + information." + REFERENCE "See ISO 8208, + table 33 for (p) state table" + ::= { x25CircuitEntry 3 } + +x25CircuitEstablishTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the channel was + associated with this circuit. For outgoing + SVCs, this is the time the first call packet + was sent. For incoming SVCs, this is the + time the call indication was received. For + PVCs this is the time the PVC was able to + pass data to a higher layer entity without + loss of data." + ::= { x25CircuitEntry 4 } + +x25CircuitDirection OBJECT-TYPE + SYNTAX INTEGER { + incoming (1), + outgoing (2), + pvc (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The direction of the call that established + this circuit." + REFERENCE "10733 direction" + DEFVAL { pvc } + ::= { x25CircuitEntry 5 } + + -- X25 Circuit data flow statistics + +x25CircuitInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets of user data delivered + to upper layer." + REFERENCE "5.11 octetsReceivedCounter" + ::= { x25CircuitEntry 6 } + +x25CircuitInPdus OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PDUs received for this + circuit." + REFERENCE "10733 5.11 dataPacketsReceived" + ::= { x25CircuitEntry 7 } + +x25CircuitInRemotelyInitiatedResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Resets received for this + circuit with cause code of DTE initiated." + REFERENCE "10733 remotelyInitiatedResets" + ::= { x25CircuitEntry 8 } + +x25CircuitInProviderInitiatedResets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Resets received for this + circuit with cause code other than DTE + initiated." + REFERENCE "10733 ProviderInitiatedResets" + ::= { x25CircuitEntry 9 } + +x25CircuitInInterrupts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of interrupt packets received + for this circuit." + REFERENCE "10733 interruptPacketsReceived" + ::= { x25CircuitEntry 10 } + +x25CircuitOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets of user data sent for + this circuit." + REFERENCE "10733 5.11 octetsSentCounter" + ::= { x25CircuitEntry 11 } + +x25CircuitOutPdus OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PDUs sent for this circuit." + REFERENCE "10733 5.11 dataPacketsSent" + ::= { x25CircuitEntry 12 } + +x25CircuitOutInterrupts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of interrupt packets sent on + this circuit." + REFERENCE "10733 interruptPacketsSent" + ::= { x25CircuitEntry 13 } + + + -- X25 circuit timer statistics + +x25CircuitDataRetransmissionTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T25 data + retransmission timer expired for this + circuit." + REFERENCE "10733 5.11 dataRetransmissionTimerExpiries" + ::= { x25CircuitEntry 14 } + +x25CircuitResetTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T22 reset timer + expired for this circuit." + REFERENCE "10733 5.11 resetTimeouts" + ::= { x25CircuitEntry 15 } + +x25CircuitInterruptTimeouts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of times the T26 Interrupt timer + expired for this circuit." + REFERENCE "10733 interruptTimerExpiries" + ::= { x25CircuitEntry 16 } + +x25CircuitCallParamId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This identifies the instance of the + x25CallParmIndex for the entry in the + x25CallParmTable which contains the call + parameters in use with this circuit. The + entry referenced must contain the values + that are currently in use by the circuit + rather than proposed values. A value of + NULL indicates the circuit is a PVC or is + using all the default parameters." + DEFVAL { {0 0} } + ::= { x25CircuitEntry 17 } + +x25CircuitCalledDteAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "For incoming calls, this is the called + address from the call indication packet. + For outgoing calls, this is the called + address from the call confirmation packet. + This will be zero length for PVCs." + REFERENCE "10733 calledDTEAddress" + DEFVAL { ''h } + ::= { x25CircuitEntry 18 } + +x25CircuitCallingDteAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "For incoming calls, this is the calling + address from the call indication packet. + For outgoing calls, this is the calling + address from the call confirmation packet. + This will be zero length for PVCs." + REFERENCE "10733 callingDTEAddress" + DEFVAL { ''h } + ::= { x25CircuitEntry 19 } + +x25CircuitOriginallyCalledAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-write + STATUS mandatory + DESCRIPTION + "For incoming calls, this is the address in + the call Redirection or Call Deflection + Notification facility if the call was + deflected or redirected, otherwise it will + be called address from the call indication + packet. For outgoing calls, this is the + address from the call request packet. This + will be zero length for PVCs." + REFERENCE "10733 originallyCalledAddress" + DEFVAL { ''h } + ::= { x25CircuitEntry 20 } + +x25CircuitDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A descriptive string associated with this + circuit. This provides a place for the + agent to supply any descriptive information + it knows about the use or owner of the + circuit. The agent may return the process + identifier and user name for the process + using the circuit. Alternative the agent + may return the name of the configuration + entry that caused a bridge to establish the + circuit. A zero length value indicates the + agent doesn't have any additional + information." + DEFVAL { ''h } + ::= { x25CircuitEntry 21 } + + + +-- ########################################################### +-- The Cleared Circuit Table +-- ########################################################### + +x25ClearedCircuitEntriesRequested OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The requested number of entries for the + agent to keep in the x25ClearedCircuit + table." + ::= { x25 6 } + +x25ClearedCircuitEntriesGranted OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The actual number of entries the agent will + keep in the x25ClearedCircuit Table." + ::= { x25 7 } + +x25ClearedCircuitTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25ClearedCircuitEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table of entries about closed circuits. + Entries must be made in this table whenever + circuits are closed and the close request or + close indication packet contains a clearing + cause other than DTE Originated or a + Diagnostic code field other than Higher + Layer Initiated disconnection-normal. An + agent may optionally make entries for normal + closes (to record closing facilities or + other information). + + Agents will delete the oldest entry in the + table when adding a new entry would exceed + agent resources. Agents are required to + keep the last entry put in the table and may + keep more entries. The object + x25OperClearEntriesGranted returns the + maximum number of entries kept in the + table." + REFERENCE "See ISO 8208 Section 12.2.3.1.1 + and 12.2.3.1.2" + ::= { x25 8 } + +x25ClearedCircuitEntry OBJECT-TYPE + SYNTAX X25ClearedCircuitEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a cleared circuit." + INDEX { x25ClearedCircuitIndex } + ::= { x25ClearedCircuitTable 1 } + +X25ClearedCircuitEntry ::= SEQUENCE { + x25ClearedCircuitIndex + PositiveInteger, + x25ClearedCircuitPleIndex + IfIndexType, + x25ClearedCircuitTimeEstablished + TimeTicks, + x25ClearedCircuitTimeCleared + TimeTicks, + x25ClearedCircuitChannel + INTEGER, + x25ClearedCircuitClearingCause + INTEGER, + x25ClearedCircuitDiagnosticCode + INTEGER, + x25ClearedCircuitInPdus + Counter, + x25ClearedCircuitOutPdus + Counter, + x25ClearedCircuitCalledAddress + X121Address, + x25ClearedCircuitCallingAddress + X121Address, + x25ClearedCircuitClearFacilities + OCTET STRING + } + +x25ClearedCircuitIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An index that uniquely distinguishes one + entry in the clearedCircuitTable from + another. This index will start at + 2147483647 and will decrease by one for each + new entry added to the table. Upon reaching + one, the index will reset to 2147483647. + Because the index starts at 2147483647 and + decreases, a manager may do a getnext on + entry zero and obtain the most recent entry. + When the index has the value of 1, the next + entry will delete all entries in the table + and that entry will be numbered 2147483647." + ::= { x25ClearedCircuitEntry 1 } + +x25ClearedCircuitPleIndex OBJECT-TYPE + SYNTAX IfIndexType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of ifIndex for the PLE which + cleared the circuit that created the entry." + ::= { x25ClearedCircuitEntry 2 } + +x25ClearedCircuitTimeEstablished OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the circuit was + established. This will be the same value + that was in the x25CircuitEstablishTime for + the circuit." + ::= { x25ClearedCircuitEntry 3 } + +x25ClearedCircuitTimeCleared OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when the circuit was + cleared. For locally initiated clears, this + will be the time when the clear confirmation + was received. For remotely initiated + clears, this will be the time when the clear + indication was received." + ::= { x25ClearedCircuitEntry 4 } + +x25ClearedCircuitChannel OBJECT-TYPE + SYNTAX INTEGER (0..4095) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The channel number for the circuit that was + cleared." + ::= { x25ClearedCircuitEntry 5 } + +x25ClearedCircuitClearingCause OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Clearing Cause from the clear request + or clear indication packet that cleared the + circuit." + REFERENCE "See ISO 8208 Section 12.2.3.1.1" + ::= { x25ClearedCircuitEntry 6 } + +x25ClearedCircuitDiagnosticCode OBJECT-TYPE + SYNTAX INTEGER (0..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The Diagnostic Code from the clear request + or clear indication packet that cleared the + circuit." + REFERENCE "See ISO 8208 Section 12.2.3.1.2" + ::= { x25ClearedCircuitEntry 7 } + +x25ClearedCircuitInPdus OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PDUs received on the + circuit." + ::= { x25ClearedCircuitEntry 8 } + +x25ClearedCircuitOutPdus OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of PDUs transmitted on the + circuit." + ::= { x25ClearedCircuitEntry 9 } + +x25ClearedCircuitCalledAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The called address from the cleared + circuit." + ::= { x25ClearedCircuitEntry 10 } + +x25ClearedCircuitCallingAddress OBJECT-TYPE + SYNTAX X121Address + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The calling address from the cleared + circuit." + ::= { x25ClearedCircuitEntry 11 } + +x25ClearedCircuitClearFacilities OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..109)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The facilities field from the clear request + or clear indication packet that cleared the + circuit. A size of zero indicates no + facilities were present." + ::= { x25ClearedCircuitEntry 12 } + + + + +-- ########################################################### +-- The Call Parameter Table +-- ########################################################### + +x25CallParmTable OBJECT-TYPE + SYNTAX SEQUENCE OF X25CallParmEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "These objects contain the parameters that + can be varied between X.25 calls. The + entries in this table are independent of the + PLE. There exists only one of these tables + for the entire system. The indexes for the + entries are independent of any PLE or any + circuit. Other tables reference entries in + this table. Entries in this table can be + used for default PLE parameters, for + parameters to use to place/answer a call, + for the parameters currently in use for a + circuit, or parameters that were used by a + circuit. + + The number of references to a given set of + parameters can be found in the + x25CallParmRefCount object sharing the same + instance identifier with the parameters. + The value of this reference count also + affects the access of the objects in this + table. An object in this table with the + same instance identifier as the instance + identifier of an x25CallParmRefCount must be + consider associated with that reference + count. An object with an associated + reference count of zero can be written (if + its ACCESS clause allows it). An object + with an associated reference count greater + than zero can not be written (regardless of + the ACCESS clause). This ensures that a set + of call parameters being referenced from + another table can not be modified or changed + in a ways inappropriate for continued use by + that table." + ::= { x25 9 } + +x25CallParmEntry OBJECT-TYPE + SYNTAX X25CallParmEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Entries of x25CallParmTable." + INDEX { x25CallParmIndex } + ::= { x25CallParmTable 1 } + +X25CallParmEntry ::= SEQUENCE { + x25CallParmIndex + PositiveInteger, + x25CallParmStatus + EntryStatus, + x25CallParmRefCount + PositiveInteger, + x25CallParmInPacketSize + INTEGER, + x25CallParmOutPacketSize + INTEGER, + x25CallParmInWindowSize + INTEGER, + x25CallParmOutWindowSize + INTEGER, + x25CallParmAcceptReverseCharging + INTEGER, + x25CallParmProposeReverseCharging + INTEGER, + x25CallParmFastSelect + INTEGER, + x25CallParmInThruPutClasSize + INTEGER, + x25CallParmOutThruPutClasSize + INTEGER, + x25CallParmCug + DisplayString, + x25CallParmCugoa + DisplayString, + x25CallParmBcug + DisplayString, + x25CallParmNui + OCTET STRING, + x25CallParmChargingInfo + INTEGER, + x25CallParmRpoa + DisplayString, + x25CallParmTrnstDly + INTEGER, + x25CallParmCallingExt + DisplayString, + x25CallParmCalledExt + DisplayString, + x25CallParmInMinThuPutCls + INTEGER, + x25CallParmOutMinThuPutCls + INTEGER, + x25CallParmEndTrnsDly + OCTET STRING, + x25CallParmPriority + OCTET STRING, + x25CallParmProtection + DisplayString, + x25CallParmExptData + INTEGER, + x25CallParmUserData + OCTET STRING, + x25CallParmCallingNetworkFacilities + OCTET STRING, + x25CallParmCalledNetworkFacilities + OCTET STRING + } + +x25CallParmIndex OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that distinguishes this entry from + another entry. Entries in this table are + referenced from other objects which identify + call parameters. + + It is impossible to know which other objects + in the MIB reference entries in the table by + looking at this table. Because of this, + changes to parameters must be accomplished + by creating a new entry in this table and + then changing the referencing table to + identify the new entry. + + Note that an agent will only use the values + in this table when another table is changed + to reference those values. The number of + other tables that reference an index object + in this table can be found in + x25CallParmRefCount. The value of the + reference count will affect the writability + of the objects as explained above. + + Entries in this table which have a reference + count of zero maybe deleted at the convence + of the agent. Care should be taken by the + agent to give the NMS sufficient time to + create a reference to newly created entries. + + Should a Management Station not find a free + index with which to create a new entry, it + may feel free to delete entries with a + reference count of zero. However in doing + so the Management Station much realize it + may impact other Management Stations." + ::= { x25CallParmEntry 1 } + +x25CallParmStatus OBJECT-TYPE + SYNTAX EntryStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of this call parameter entry. + See RFC 1271 for details of usage." + ::= { x25CallParmEntry 2 } + +x25CallParmRefCount OBJECT-TYPE + SYNTAX PositiveInteger + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of references know by a + management station to exist to this set of + call parameters. This is the number of + other objects that have returned a value of, + and will return a value of, the index for + this set of call parameters. Examples of + such objects are the x25AdmnDefCallParamId, + x25OperDataLinkId, or x25AdmnDefCallParamId + objects defined above." + ::= { x25CallParmEntry 3 } + +x25CallParmInPacketSize OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum receive packet size in octets + for a circuit. A size of zero for a circuit + means use the PLE default size. A size of + zero for the PLE means use a default size of + 128." + REFERENCE "10733 proposedPacketSize; + See ISO 8208 Section 15.2.2.1.1" + DEFVAL { 128 } + ::= { x25CallParmEntry 4 } + +x25CallParmOutPacketSize OBJECT-TYPE + SYNTAX INTEGER (0..4096) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum transmit packet size in octets + for a circuit. A size of zero for a circuit + means use the PLE default size. A size of + zero for the PLE default means use a default + size of 128." + REFERENCE "10733 proposedPacketSize; + See ISO 8208 Section 15.2.2.1.1" + DEFVAL { 128 } + ::= { x25CallParmEntry 5 } + +x25CallParmInWindowSize OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The receive window size for a circuit. A + size of zero for a circuit means use the PLE + default size. A size of zero for the PLE + default means use 2." + REFERENCE "10733 proposedWindowSize; + See ISO 8208 Section 15.2.2.1.2" + DEFVAL { 2 } + ::= { x25CallParmEntry 6 } + +x25CallParmOutWindowSize OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The transmit window size for a circuit. A + size of zero for a circuit means use the PLE + default size. A size of zero for the PLE + default means use 2." + REFERENCE "10733 proposedWindowSize; + See ISO 8208 Section 15.2.2.1.2" + DEFVAL { 2 } + ::= { x25CallParmEntry 7 } + +x25CallParmAcceptReverseCharging OBJECT-TYPE + SYNTAX INTEGER { + default (1), + accept (2), + refuse (3), + neverAccept (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An enumeration defining if the PLE will + accept or refuse charges. A value of + default for a circuit means use the PLE + default value. A value of neverAccept is + only used for the PLE default and indicates + the PLE will never accept reverse charging. + A value of default for a PLE default means + refuse." + REFERENCE "10733 acceptReverseCharging" + DEFVAL { refuse } + ::= { x25CallParmEntry 8 } + +x25CallParmProposeReverseCharging OBJECT-TYPE + SYNTAX INTEGER { + default (1), + reverse (2), + local (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An enumeration defining if the PLE should + propose reverse or local charging. The + value of default for a circuit means use the + PLE default. The value of default for the + PLE default means use local." + REFERENCE "10733 proposedPacketSize; + See ISO 8208 Section 15.2.2.6" + DEFVAL { local } + ::= { x25CallParmEntry 9 } + +x25CallParmFastSelect OBJECT-TYPE + SYNTAX INTEGER { + default (1), + notSpecified (2), + fastSelect (3), + restrictedFastResponse (4), + noFastSelect (5), + noRestrictedFastResponse (6) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Expresses preference for use of fast select + facility. The value of default for a + circuit is the PLE default. A value of + default for the PLE means noFastSelect. A + value of noFastSelect or + noRestrictedFastResponse indicates a circuit + may not use fast select or restricted fast + response." + REFERENCE "10733 fastSelect; + Sec ISO 8208 Section 15.2.2.6" + DEFVAL { noFastSelect } + ::= { x25CallParmEntry 10 } + +x25CallParmInThruPutClasSize OBJECT-TYPE + SYNTAX INTEGER { + tcReserved1 (1), + tcReserved2 (2), + tc75 (3), + tc150 (4), + tc300 (5), + tc600 (6), + tc1200 (7), + tc2400 (8), + tc4800 (9), + tc9600 (10), + tc19200 (11), + tc48000 (12), + tc64000 (13), + tcReserved14 (14), + tcReserved15 (15), + tcReserved0 (16), + tcNone (17), + tcDefault (18) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The incoming throughput class to negotiate. + A value of tcDefault for a circuit means use + the PLE default. A value of tcDefault for + the PLE default means tcNone. A value of + tcNone means do not negotiate throughtput + class." + REFERENCE "See ISO 8208 Section 15.2.2.2, table 18" + DEFVAL { tcNone } + ::= { x25CallParmEntry 11 } + +x25CallParmOutThruPutClasSize OBJECT-TYPE + SYNTAX INTEGER { + tcReserved1 (1), + tcReserved2 (2), + tc75 (3), + tc150 (4), + tc300 (5), + tc600 (6), + tc1200 (7), + tc2400 (8), + tc4800 (9), + tc9600 (10), + tc19200 (11), + tc48000 (12), + tc64000 (13), + tcReserved14 (14), + tcReserved15 (15), + tcReserved0 (16), + tcNone (17), + tcDefault (18) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The outgoing throughput class to negotiate. + A value of tcDefault for a circuit means use + the PLE default. A value of tcDefault for + the PLE default means use tcNone. A value + of tcNone means do not negotiate throughtput + class." + REFERENCE "See ISO 8208 Section 15.2.2.2, table 18" + DEFVAL { tcNone } + ::= { x25CallParmEntry 12 } + +x25CallParmCug OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..4)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Closed User Group to specify. This + consists of two or four octets containing + the characters 0 through 9. A zero length + string indicates no facility requested. A + string length of three containing the + characters DEF for a circuit means use the + PLE default, (the PLE default parameter may + not reference an entry of DEF.)" + REFERENCE "See ISO 8208 Section 15.2.2.3" + DEFVAL { ''h } + ::= { x25CallParmEntry 13 } + +x25CallParmCugoa OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..4)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Closed User Group with Outgoing Access + to specify. This consists of two or four + octets containing the characters 0 through + 9. A string length of three containing the + characters DEF for a circuit means use the + PLE default (the PLE default parameters may + not reference an entry of DEF). A zero + length string indicates no facility + requested." + REFERENCE "See ISO 8208 Section 15.2.2.4" + DEFVAL { ''h } + ::= { x25CallParmEntry 14 } + +x25CallParmBcug OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..3)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Bilateral Closed User Group to specify. + This consists of two octets containing the + characters 0 through 9. A string length of + three containing the characters DEF for a + circuit means use the PLE default (the PLE + default parameter may not reference an entry + of DEF). A zero length string indicates no + facility requested." + REFERENCE "See ISO 8208 Section 15.2.2.5" + DEFVAL { ''h } + ::= { x25CallParmEntry 15 } + +x25CallParmNui OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Network User Identifier facility. This + is binary value to be included immediately + after the length field. The PLE will supply + the length octet. A zero length string + indicates no facility requested. This value + is ignored for the PLE default parameters + entry." + REFERENCE "See ISO 8208 Section 15.2.2.7" + DEFVAL { ''h } + ::= { x25CallParmEntry 16 } + +x25CallParmChargingInfo OBJECT-TYPE + SYNTAX INTEGER { + default (1), + noFacility (2), + noChargingInfo (3), + chargingInfo (4) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The charging Information facility. A value + of default for a circuit means use the PLE + default. The value of default for the + default PLE parameters means use noFacility. + The value of noFacility means do not include + a facility." + REFERENCE "See ISO 8208 Section 15.2.2.8" + DEFVAL { noFacility } + ::= { x25CallParmEntry 17 } + +x25CallParmRpoa OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The RPOA facility. The octet string + contains n * 4 sequences of the characters + 0-9 to specify a facility with n entries. + The octet string containing the 3 characters + DEF for a circuit specifies use of the PLE + default (the entry for the PLE default may + not contain DEF). A zero length string + indicates no facility requested." + REFERENCE "See ISO 8208, section 15.2.2.9" + DEFVAL { ''h } + ::= { x25CallParmEntry 18 } + +x25CallParmTrnstDly OBJECT-TYPE + SYNTAX INTEGER (0..65537) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Transit Delay Selection and Indication + value. A value of 65536 indicates no + facility requested. A value of 65537 for a + circuit means use the PLE default (the PLE + default parameters entry may not use the + value 65537). The value 65535 may only be + used to indicate the value in use by a + circuit." + REFERENCE "See ISO 8208, Section 15.2.2.13" + DEFVAL { 65536 } + ::= { x25CallParmEntry 19 } + + + -- The following parameters are for CCITT facilities. + +x25CallParmCallingExt OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..40)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Calling Extension facility. This + contains one of the following: + + A sequence of hex digits with the value to + be put in the facility. These digits will be + converted to binary by the agent and put in + the facility. These octets do not include + the length octet. + + A value containing the three character DEF + for a circuit means use the PLE default, + (the entry for the PLE default parameters + may not use the value DEF). + + A zero length string indicates no facility + requested." + REFERENCE "See ISO 8208 Section 15.3.2.1" + DEFVAL { ''h } + ::= { x25CallParmEntry 20 } + +x25CallParmCalledExt OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..40)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Called Extension facility. This + contains one of the following: + + A sequence of hex digits with the value to + be put in the facility. These digits will be + converted to binary by the agent and put in + the facility. These octets do not include + the length octet. + + A value containing the three character DEF + for a circuit means use the PLE default, + (the entry for the PLE default parameters + may not use the value DEF). + + A zero length string indicates no facility + requested." + REFERENCE "See ISO 8208 Section 15.3.2.2" + DEFVAL { ''h } + ::= { x25CallParmEntry 21 } + +x25CallParmInMinThuPutCls OBJECT-TYPE + SYNTAX INTEGER (0..17) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The minimum input throughput Class. A + value of 16 for a circuit means use the PLE + default (the PLE parameters entry may not + use this value). A value of 17 indicates no + facility requested." + REFERENCE "See ISO 8208 Section 15.3.2.3" + DEFVAL { 17 } + ::= { x25CallParmEntry 22 } + +x25CallParmOutMinThuPutCls OBJECT-TYPE + SYNTAX INTEGER (0..17) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The minimum output throughput Class. A + value of 16 for a circuit means use the PLE + default (the PLE parameters entry may not + use this value). A value of 17 indicates no + facility requested." + REFERENCE "See ISO 8208 Section 15.3.2.3" + DEFVAL { 17 } + ::= { x25CallParmEntry 23 } + +x25CallParmEndTrnsDly OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..6)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The End-to-End Transit Delay to negotiate. + An octet string of length 2, 4, or 6 + contains the facility encoded as specified + in ISO/IEC 8208 section 15.3.2.4. An octet + string of length 3 containing the three + character DEF for a circuit means use the + PLE default (the entry for the PLE default + can not contain the characters DEF). A zero + length string indicates no facility + requested." + REFERENCE "See ISO 8208 Section 15.3.2.4" + DEFVAL { ''h } + ::= { x25CallParmEntry 24 } + +x25CallParmPriority OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..6)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The priority facility to negotiate. The + octet string encoded as specified in ISO/IEC + 8208 section 15.3.2.5. A zero length string + indicates no facility requested. The entry + for the PLE default parameters must be zero + length." + REFERENCE "See ISO 8208 Section 15.3.2.5" + DEFVAL { ''h } + ::= { x25CallParmEntry 25 } + +x25CallParmProtection OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A string contains the following: + A hex string containing the value for the + protection facility. This will be converted + from hex to the octets actually in the + packet by the agent. The agent will supply + the length field and the length octet is not + contained in this string. + + An string containing the 3 characters DEF + for a circuit means use the PLE default (the + entry for the PLE default parameters may not + use the value DEF). + + A zero length string mean no facility + requested." + REFERENCE "See ISO 8208 Section 15.3.2.5" + DEFVAL { ''h } + ::= { x25CallParmEntry 26 } + +x25CallParmExptData OBJECT-TYPE + SYNTAX INTEGER { + default (1), + noExpeditedData (2), + expeditedData (3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The Expedited Data facility to negotiate. + A value of default for a circuit means use + the PLE default value. The entry for the + PLE default parameters may not have the + value default." + REFERENCE "See ISO 8208 Section 15.3.2.7" + DEFVAL { noExpeditedData } + ::= { x25CallParmEntry 27 } + +x25CallParmUserData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..128)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The call user data as placed in the packet. + A zero length string indicates no call user + data. If both the circuit call parameters + and the PLE default have call user data + defined, the data from the circuit call + parameters will be used. If only the PLE + has data defined, the PLE entry will be + used. If neither the circuit call + parameters or the PLE default entry has a + value, no call user data will be sent." + REFERENCE "See ISO 8208 Section 12.2.1.1.6, 12.2.1.2" + DEFVAL { ''h } + ::= { x25CallParmEntry 28 } + +x25CallParmCallingNetworkFacilities OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The calling network facilities. The + facilities are encoded here exactly as + encoded in the call packet. These + facilities do not include the marker + facility code. + + A zero length string in the entry for the + parameter to use when establishing a circuit + means use the PLE default. A zero length + string in the entry for PLE default + parameters indicates no default facilities." + REFERENCE "See ISO 8206 Section 15.1, category b" + DEFVAL { ''h } + ::= { x25CallParmEntry 29 } + +x25CallParmCalledNetworkFacilities OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..108)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The called network facilities. The + facilities are encoded here exactly as + encoded in the call packet. These + facilities do not include the marker + facility code. + + A zero length string in the entry for the + parameter to use when establishing a circuit + means use the PLE default. A zero length + string in the entry for PLE default + parameters indicates no default facilities." + REFERENCE "See ISO 8206 Section 15.1, category c" + DEFVAL { ''h } + ::= { x25CallParmEntry 30 } + +-- ########################################################### +-- X.25 Traps +-- ########################################################### + +x25Restart TRAP-TYPE + ENTERPRISE x25 + VARIABLES { x25OperIndex } + DESCRIPTION + "This trap means the X.25 PLE sent or + received a restart packet. The restart that + brings up the link should not send a + x25Restart trap so the interface should send + a linkUp trap. Sending this trap means the + agent does not send a linkDown and linkUp + trap." + ::= 1 + +x25Reset TRAP-TYPE + ENTERPRISE x25 + VARIABLES { x25CircuitIndex, + x25CircuitChannel } + DESCRIPTION + "If the PLE sends or receives a reset, the + agent should send an x25Reset trap." + ::= 2 + + +-- ########################################################### +-- X.25 Protocol Version Identifiers +-- ########################################################### + +x25ProtocolVersion OBJECT IDENTIFIER + ::= { x25 10 } + + -- X.25 CCITT 1976 version. +x25protocolCcittV1976 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 1 } + + -- X.25 CCITT 1980 version. +x25protocolCcittV1980 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 2 } + + -- X.25 CCITT 1984 version. +x25protocolCcittV1984 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 3 } + + -- X.25 CCITT 1988 version. +x25protocolCcittV1988 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 4 } + + -- X.25 1987 version of ISO 8208. +x25protocolIso8208V1987 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 5 } + + -- X.25 1989 version of ISO 8208. +x25protocolIso8208V1989 OBJECT IDENTIFIER + ::= { x25ProtocolVersion 6 } + +-- ########################################################### + +END diff --git a/mibs/ietf/RFC1414-MIB b/mibs/ietf/RFC1414-MIB new file mode 100644 index 0000000..c5223af --- /dev/null +++ b/mibs/ietf/RFC1414-MIB @@ -0,0 +1,134 @@ +RFC1414-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE + FROM RFC-1212 + tcpConnLocalAddress, tcpConnLocalPort, + tcpConnRemAddress, tcpConnRemPort, mib-2 + FROM RFC1213-MIB; + + +ident OBJECT IDENTIFIER ::= { mib-2 24 } + + +-- conformance groups + +identInfo OBJECT IDENTIFIER ::= { ident 1 } + + +-- textual conventions + +-- none + +-- the ident information system group +-- +-- implementation of this group is mandatory + +identTable OBJECT-TYPE + SYNTAX SEQUENCE OF IdentEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing user information for TCP + connections. + + Note that this table contains entries for all TCP + connections on a managed system. The + corresponding instance of tcpConnState (defined in + MIB-II) indicates the state of a particular + connection." + ::= { identInfo 1 } + +identEntry OBJECT-TYPE + SYNTAX IdentEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "User information about a particular TCP + connection." + INDEX { tcpConnLocalAddress, tcpConnLocalPort, + tcpConnRemAddress, tcpConnRemPort } + ::= { identTable 1 } + +IdentEntry ::= + SEQUENCE { + identStatus INTEGER, + identOpSys OCTET STRING, + identCharset OCTET STRING, + identUserid OCTET STRING, + identMisc OCTET STRING + } + +identStatus OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + unknownError(2) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates whether user information for the + associated TCP connection can be determined. A + value of `noError(1)' indicates that user + information is available. A value of + `unknownError(2)' indicates that user information + is not available." + ::= { identEntry 1 } + +identOpSys OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..40)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the type of operating system in use. + In addition to identifying an operating system, + each assignment made for this purpose also + (implicitly) identifies the textual format and + maximum size of the corresponding identUserid and + identMisc objects. + + The legal values for the `indentOpSys' strings + are those listed in the SYSTEM NAMES section of + the most recent edition of the ASSIGNED NUMBERS + RFC [8]." + ::= { identEntry 2 } + + +identCharset OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..40)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the repertoire of the corresponding + identUserid and identMisc objects. + + The legal values for the `identCharset' strings + are those listed in the CHARACTER SET section of + the most recent edition of the ASSIGNED NUMBERS + RFC [8]." + ::= { identEntry 3 } + +identUserid OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates the user's identity. Interpretation of + this object requires examination of the + corresponding value of the identOpSys and + identCharset objects." + ::= { identEntry 4 } + +identMisc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "Indicates miscellaneous information about the + user. Interpretation of this object requires + examination of the corresponding value of the + identOpSys and identCharset objects." + ::= { identEntry 5 } + + +END diff --git a/mibs/ietf/RIPv2-MIB b/mibs/ietf/RIPv2-MIB new file mode 100644 index 0000000..6fb9f9d --- /dev/null +++ b/mibs/ietf/RIPv2-MIB @@ -0,0 +1,530 @@ + RIPv2-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + TimeTicks, IpAddress FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + mib-2 FROM RFC1213-MIB; + + -- This MIB module uses the extended OBJECT-TYPE macro as + -- defined in [9]. + + rip2 MODULE-IDENTITY + LAST-UPDATED "9407272253Z" -- Wed Jul 27 22:53:04 PDT 1994 + ORGANIZATION "IETF RIP-II Working Group" + CONTACT-INFO + " Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 805 681 0115 + E-Mail: fbaker@cisco.com + + Postal: Gary Malkin + Xylogics, Inc. + 53 Third Avenue + Burlington, MA 01803 + + Phone: (617) 272-8140 + EMail: gmalkin@Xylogics.COM" + DESCRIPTION + "The MIB module to describe the RIP2 Version 2 Protocol" + ::= { mib-2 23 } + + -- RIP-2 Management Information Base + + -- the RouteTag type represents the contents of the + -- Route Domain field in the packet header or route entry. + -- The use of the Route Domain is deprecated. + + RouteTag ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "the RouteTag type represents the contents of the Route Domain + field in the packet header or route entry" + SYNTAX OCTET STRING (SIZE (2)) + +--4.1 Global Counters + +-- The RIP-2 Globals Group. +-- Implementation of this group is mandatory for systems +-- which implement RIP-2. + +-- These counters are intended to facilitate debugging quickly +-- changing routes or failing neighbors + +rip2Globals OBJECT IDENTIFIER ::= { rip2 1 } + + rip2GlobalRouteChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of route changes made to the IP Route + Database by RIP. This does not include the refresh + of a route's age." + ::= { rip2Globals 1 } + + rip2GlobalQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses sent to RIP queries + from other systems." + ::= { rip2Globals 2 } + +--4.2 RIP Interface Tables + +-- RIP Interfaces Groups +-- Implementation of these Groups is mandatory for systems +-- which implement RIP-2. + +-- The RIP Interface Status Table. + + rip2IfStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rip2IfStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of subnets which require separate + status monitoring in RIP." + ::= { rip2 2 } + + rip2IfStatEntry OBJECT-TYPE + SYNTAX Rip2IfStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Single Routing Domain in a single Subnet." + INDEX { rip2IfStatAddress } + ::= { rip2IfStatTable 1 } + + Rip2IfStatEntry ::= + SEQUENCE { + rip2IfStatAddress + IpAddress, + rip2IfStatRcvBadPackets + Counter32, + rip2IfStatRcvBadRoutes + Counter32, + rip2IfStatSentUpdates + Counter32, + rip2IfStatStatus + RowStatus + } + + rip2IfStatAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address of this system on the indicated + subnet. For unnumbered interfaces, the value 0.0.0.N, + where the least significant 24 bits (N) is the ifIndex + for the IP Interface in network byte order." + ::= { rip2IfStatEntry 1 } + + rip2IfStatRcvBadPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RIP response packets received by + the RIP process which were subsequently discarded + for any reason (e.g. a version 0 packet, or an + unknown command type)." + ::= { rip2IfStatEntry 2 } + + rip2IfStatRcvBadRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of routes, in valid RIP packets, + which were ignored for any reason (e.g. unknown + address family, or invalid metric)." + ::= { rip2IfStatEntry 3 } + + rip2IfStatSentUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of triggered RIP updates actually + sent on this interface. This explicitly does + NOT include full updates sent containing new + information." + ::= { rip2IfStatEntry 4 } + + rip2IfStatStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Writing invalid has the effect of deleting + this interface." + ::= { rip2IfStatEntry 5 } + +-- The RIP Interface Configuration Table. + + rip2IfConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rip2IfConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of subnets which require separate + configuration in RIP." + ::= { rip2 3 } + + rip2IfConfEntry OBJECT-TYPE + SYNTAX Rip2IfConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A Single Routing Domain in a single Subnet." + INDEX { rip2IfConfAddress } + ::= { rip2IfConfTable 1 } + + Rip2IfConfEntry ::= + SEQUENCE { + rip2IfConfAddress + IpAddress, + rip2IfConfDomain + RouteTag, + rip2IfConfAuthType + INTEGER, + rip2IfConfAuthKey + OCTET STRING, + rip2IfConfSend + INTEGER, + rip2IfConfReceive + INTEGER, + rip2IfConfDefaultMetric + INTEGER, + rip2IfConfStatus + RowStatus, + rip2IfConfSrcAddress + IpAddress + } + + rip2IfConfAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address of this system on the indicated + subnet. For unnumbered interfaces, the value 0.0.0.N, + where the least significant 24 bits (N) is the ifIndex + for the IP Interface in network byte order." + ::= { rip2IfConfEntry 1 } + + rip2IfConfDomain OBJECT-TYPE + SYNTAX RouteTag + MAX-ACCESS read-create + STATUS obsolete + DESCRIPTION + "Value inserted into the Routing Domain field + of all RIP packets sent on this interface." + DEFVAL { '0000'h } + ::= { rip2IfConfEntry 2 } + + rip2IfConfAuthType OBJECT-TYPE + SYNTAX INTEGER { + noAuthentication (1), + simplePassword (2), + md5 (3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Authentication used on this + interface." + DEFVAL { noAuthentication } + ::= { rip2IfConfEntry 3 } + + rip2IfConfAuthKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value to be used as the Authentication Key + whenever the corresponding instance of + rip2IfConfAuthType has a value other than + noAuthentication. A modification of the corresponding + instance of rip2IfConfAuthType does not modify + the rip2IfConfAuthKey value. If a string shorter + than 16 octets is supplied, it will be left- + justified and padded to 16 octets, on the right, + with nulls (0x00). + + Reading this object always results in an OCTET + STRING of length zero; authentication may not + be bypassed by reading the MIB object." + DEFVAL { ''h } + ::= { rip2IfConfEntry 4 } + + rip2IfConfSend OBJECT-TYPE + SYNTAX INTEGER { + doNotSend (1), + ripVersion1 (2), + rip1Compatible (3), + ripVersion2 (4), + ripV1Demand (5), + ripV2Demand (6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "What the router sends on this interface. + ripVersion1 implies sending RIP updates compliant + with RFC 1058. rip1Compatible implies + broadcasting RIP-2 updates using RFC 1058 route + subsumption rules. ripVersion2 implies + multicasting RIP-2 updates. ripV1Demand indicates + the use of Demand RIP on a WAN interface under RIP + Version 1 rules. ripV2Demand indicates the use of + Demand RIP on a WAN interface under Version 2 rules." + DEFVAL { rip1Compatible } + ::= { rip2IfConfEntry 5 } + + rip2IfConfReceive OBJECT-TYPE + SYNTAX INTEGER { + rip1 (1), + rip2 (2), + rip1OrRip2 (3), + doNotRecieve (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This indicates which version of RIP updates + are to be accepted. Note that rip2 and + rip1OrRip2 implies reception of multicast + packets." + DEFVAL { rip1OrRip2 } + ::= { rip2IfConfEntry 6 } + + rip2IfConfDefaultMetric OBJECT-TYPE + SYNTAX INTEGER ( 0..15 ) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable indicates the metric that is to + be used for the default route entry in RIP updates + originated on this interface. A value of zero + indicates that no default route should be + originated; in this case, a default route via + another router may be propagated." + ::= { rip2IfConfEntry 7 } + + rip2IfConfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Writing invalid has the effect of deleting + this interface." + ::= { rip2IfConfEntry 8 } + + rip2IfConfSrcAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Address this system will use as a source + address on this interface. If it is a numbered + interface, this MUST be the same value as + rip2IfConfAddress. On unnumbered interfaces, + it must be the value of rip2IfConfAddress for + some interface on the system." + ::= { rip2IfConfEntry 9 } + +--4.3 Peer Table + +-- Peer Table + +-- The RIP Peer Group +-- Implementation of this Group is Optional + +-- This group provides information about active peer +-- relationships intended to assist in debugging. An +-- active peer is a router from which a valid RIP +-- updated has been heard in the last 180 seconds. + + rip2PeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rip2PeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of RIP Peers." + ::= { rip2 4 } + + rip2PeerEntry OBJECT-TYPE + SYNTAX Rip2PeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information regarding a single routing peer." + INDEX { rip2PeerAddress, rip2PeerDomain } + ::= { rip2PeerTable 1 } + + Rip2PeerEntry ::= + SEQUENCE { + rip2PeerAddress + IpAddress, + rip2PeerDomain + RouteTag, + rip2PeerLastUpdate + TimeTicks, + rip2PeerVersion + INTEGER, + rip2PeerRcvBadPackets + Counter32, + rip2PeerRcvBadRoutes + Counter32 + } + + rip2PeerAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Address that the peer is using as its source + address. Note that on an unnumbered link, this may + not be a member of any subnet on the system." + ::= { rip2PeerEntry 1 } + + rip2PeerDomain OBJECT-TYPE + SYNTAX RouteTag + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value in the Routing Domain field in RIP + packets received from the peer. As domain suuport + is deprecated, this must be zero." + ::= { rip2PeerEntry 2 } + + rip2PeerLastUpdate OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the most recent + RIP update was received from this system." + ::= { rip2PeerEntry 3 } + + rip2PeerVersion OBJECT-TYPE + SYNTAX INTEGER ( 0..255 ) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RIP version number in the header of the + last RIP packet received." + ::= { rip2PeerEntry 4 } + + rip2PeerRcvBadPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RIP response packets from this + peer discarded as invalid." + ::= { rip2PeerEntry 5 } + + + rip2PeerRcvBadRoutes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of routes from this peer that were + ignored because the entry format was invalid." + ::= { rip2PeerEntry 6 } + +-- conformance information + +rip2Conformance OBJECT IDENTIFIER ::= { rip2 5 } + +rip2Groups OBJECT IDENTIFIER ::= { rip2Conformance 1 } +rip2Compliances OBJECT IDENTIFIER ::= { rip2Conformance 2 } + +-- compliance statements +rip2Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement " + MODULE -- this module + MANDATORY-GROUPS { + rip2GlobalGroup, + rip2IfStatGroup, + rip2IfConfGroup, + rip2PeerGroup + } + GROUP rip2GlobalGroup + DESCRIPTION + "This group defines global controls for RIP-II systems." + GROUP rip2IfStatGroup + DESCRIPTION + "This group defines interface statistics for RIP-II systems." + GROUP rip2IfConfGroup + DESCRIPTION + "This group defines interface configuration for RIP-II systems." + GROUP rip2PeerGroup + DESCRIPTION + "This group defines peer information for RIP-II systems." + ::= { rip2Compliances 1 } + +-- units of conformance + +rip2GlobalGroup OBJECT-GROUP + OBJECTS { + rip2GlobalRouteChanges, + rip2GlobalQueries + } + STATUS current + DESCRIPTION + "This group defines global controls for RIP-II systems." + ::= { rip2Groups 1 } +rip2IfStatGroup OBJECT-GROUP + OBJECTS { + rip2IfStatAddress, + rip2IfStatRcvBadPackets, + rip2IfStatRcvBadRoutes, + rip2IfStatSentUpdates, + rip2IfStatStatus + } + STATUS current + DESCRIPTION + "This group defines interface statistics for RIP-II systems." + ::= { rip2Groups 2 } +rip2IfConfGroup OBJECT-GROUP + OBJECTS { + rip2IfConfAddress, + rip2IfConfAuthType, + rip2IfConfAuthKey, + rip2IfConfSend, + rip2IfConfReceive, + rip2IfConfDefaultMetric, + rip2IfConfStatus, + rip2IfConfSrcAddress + } + STATUS current + DESCRIPTION + "This group defines interface configuration for RIP-II systems." + ::= { rip2Groups 3 } +rip2PeerGroup OBJECT-GROUP + OBJECTS { + rip2PeerAddress, + rip2PeerDomain, + rip2PeerLastUpdate, + rip2PeerVersion, + rip2PeerRcvBadPackets, + rip2PeerRcvBadRoutes + } + STATUS current + DESCRIPTION + "This group defines peer information for RIP-II systems." + ::= { rip2Groups 4 } +END diff --git a/mibs/ietf/RMON-MIB b/mibs/ietf/RMON-MIB new file mode 100644 index 0000000..023f9bb --- /dev/null +++ b/mibs/ietf/RMON-MIB @@ -0,0 +1,3952 @@ +RMON-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + NOTIFICATION-TYPE, mib-2, Counter32, + Integer32, TimeTicks FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, DisplayString FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF; + + +-- Remote Network Monitoring MIB + +rmonMibModule MODULE-IDENTITY + LAST-UPDATED "200005110000Z" -- 11 May, 2000 + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Steve Waldbusser + Phone: +1-650-948-6500 + Fax: +1-650-745-0671 + Email: waldbusser@nextbeacon.com" + DESCRIPTION + "Remote network monitoring devices, often called + monitors or probes, are instruments that exist for + the purpose of managing a network. This MIB defines + objects for managing remote network monitoring devices." + + REVISION "200005110000Z" -- 11 May, 2000 + DESCRIPTION + "Reformatted into SMIv2 format. + + This version published as RFC 2819." + + REVISION "199502010000Z" -- 1 Feb, 1995 + DESCRIPTION + "Bug fixes, clarifications and minor changes based on + implementation experience, published as RFC1757 [18]. + + Two changes were made to object definitions: + + 1) A new status bit has been defined for the + captureBufferPacketStatus object, indicating that the + packet order within the capture buffer may not be identical to + the packet order as received off the wire. This bit may only + be used for packets transmitted by the probe. Older NMS + applications can safely ignore this status bit, which might be + used by newer agents. + + 2) The packetMatch trap has been removed. This trap was never + actually 'approved' and was not added to this document along + with the risingAlarm and fallingAlarm traps. The packetMatch + trap could not be throttled, which could cause disruption of + normal network traffic under some circumstances. An NMS should + configure a risingAlarm threshold on the appropriate + channelMatches instance if a trap is desired for a packetMatch + event. Note that logging of packetMatch events is still + supported--only trap generation for such events has been + removed. + + In addition, several clarifications to individual object + definitions have been added to assist agent and NMS + implementors: + + - global definition of 'good packets' and 'bad packets' + + - more detailed text governing conceptual row creation and + modification + + - instructions for probes relating to interface changes and + disruptions + + - clarification of some ethernet counter definitions + + - recommended formula for calculating network utilization + + - clarification of channel and captureBuffer behavior for some + unusual conditions + + - examples of proper instance naming for each table" + + REVISION "199111010000Z" -- 1 Nov, 1991 + DESCRIPTION + "The original version of this MIB, published as RFC1271." + ::= { rmonConformance 8 } + + rmon OBJECT IDENTIFIER ::= { mib-2 16 } + + + -- textual conventions + +OwnerString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model an administratively + assigned name of the owner of a resource. Implementations + must accept values composed of well-formed NVT ASCII + sequences. In addition, implementations should accept + values composed of well-formed UTF-8 sequences. + + It is suggested that this name contain one or more of + the following: IP address, management station name, + network manager'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 'monitor'. + + SNMP access control is articulated entirely in terms + of the contents of MIB views; access to a particular + SNMP object instance depends only upon its presence + or absence in a particular MIB view and never upon + its value or the value of related object instances. + Thus, objects of this type afford resolution of + resource contention only among cooperating + managers; they realize no access control function + with respect to uncooperative parties." + SYNTAX OCTET STRING (SIZE (0..127)) + +EntryStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The status of a table entry. + + Setting this object to the value invalid(4) has the + effect of invalidating the corresponding entry. + That is, it effectively disassociates the mapping + identified with said entry. + It is an implementation-specific matter as to whether + the agent removes an invalidated entry from the table. + Accordingly, management stations must be prepared to + receive tabular information from agents that corresponds + to entries currently not in use. Proper + interpretation of such entries requires examination + of the relevant EntryStatus object. + + An existing instance of this object cannot be set to + createRequest(2). This object may only be set to + createRequest(2) when this instance is created. When + this object is created, the agent may wish to create + supplemental object instances with default values + to complete a conceptual row in this table. Because the + creation of these default objects is entirely at the option + of the agent, the manager must not assume that any will be + created, but may make use of any that are created. + Immediately after completing the create operation, the agent + must set this object to underCreation(3). + + When in the underCreation(3) state, an entry is allowed to + exist in a possibly incomplete, possibly inconsistent state, + usually to allow it to be modified in multiple PDUs. When in + this state, an entry is not fully active. + Entries shall exist in the underCreation(3) state until + the management station is finished configuring the entry + and sets this object to valid(1) or aborts, setting this + object to invalid(4). If the agent determines that an + entry has been in the underCreation(3) state for an + abnormally long time, it may decide that the management + station has crashed. If the agent makes this decision, + it may set this object to invalid(4) to reclaim the + entry. A prudent agent will understand that the + management station may need to wait for human input + and will allow for that possibility in its + determination of this abnormally long period. + + An entry in the valid(1) state is fully configured and + consistent and fully represents the configuration or + operation such a row is intended to represent. For + example, it could be a statistical function that is + configured and active, or a filter that is available + in the list of filters processed by the packet capture + process. + + A manager is restricted to changing the state of an entry in + the following ways: + + To: valid createRequest underCreation invalid + From: + valid OK NO OK OK + createRequest N/A N/A N/A N/A + underCreation OK NO OK OK + invalid NO NO NO OK + nonExistent NO OK NO OK + + In the table above, it is not applicable to move the state + from the createRequest state to any other state because the + manager will never find the variable in that state. The + nonExistent state is not a value of the enumeration, rather + it means that the entryStatus variable does not exist at all. + An agent may allow an entryStatus variable to change state in + additional ways, so long as the semantics of the states are + followed. This allowance is made to ease the implementation of + the agent and is made despite the fact that managers should + never exercise these additional state transitions." + SYNTAX INTEGER { + valid(1), + createRequest(2), + underCreation(3), + invalid(4) + } + + statistics OBJECT IDENTIFIER ::= { rmon 1 } + history OBJECT IDENTIFIER ::= { rmon 2 } + alarm OBJECT IDENTIFIER ::= { rmon 3 } + hosts OBJECT IDENTIFIER ::= { rmon 4 } + hostTopN OBJECT IDENTIFIER ::= { rmon 5 } + matrix OBJECT IDENTIFIER ::= { rmon 6 } + filter OBJECT IDENTIFIER ::= { rmon 7 } + capture OBJECT IDENTIFIER ::= { rmon 8 } + event OBJECT IDENTIFIER ::= { rmon 9 } + rmonConformance OBJECT IDENTIFIER ::= { rmon 20 } + +-- The Ethernet Statistics Group +-- +-- Implementation of the Ethernet Statistics group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The ethernet statistics group contains statistics measured by the +-- probe for each monitored interface on this device. These +-- statistics take the form of free running counters that start from +-- zero when a valid entry is created. +-- +-- This group currently has statistics defined only for +-- Ethernet interfaces. Each etherStatsEntry contains statistics +-- for one Ethernet interface. The probe must create one +-- etherStats entry for each monitored Ethernet interface +-- on the device. + +etherStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Ethernet statistics entries." + ::= { statistics 1 } + +etherStatsEntry OBJECT-TYPE + SYNTAX EtherStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics kept for a particular + Ethernet interface. As an example, an instance of the + etherStatsPkts object might be named etherStatsPkts.1" + INDEX { etherStatsIndex } + ::= { etherStatsTable 1 } + +EtherStatsEntry ::= SEQUENCE { + etherStatsIndex Integer32, + etherStatsDataSource OBJECT IDENTIFIER, + etherStatsDropEvents Counter32, + etherStatsOctets Counter32, + etherStatsPkts Counter32, + etherStatsBroadcastPkts Counter32, + etherStatsMulticastPkts Counter32, + etherStatsCRCAlignErrors Counter32, + etherStatsUndersizePkts Counter32, + etherStatsOversizePkts Counter32, + etherStatsFragments Counter32, + etherStatsJabbers Counter32, + etherStatsCollisions Counter32, + etherStatsPkts64Octets Counter32, + etherStatsPkts65to127Octets Counter32, + etherStatsPkts128to255Octets Counter32, + etherStatsPkts256to511Octets Counter32, + etherStatsPkts512to1023Octets Counter32, + etherStatsPkts1024to1518Octets Counter32, + etherStatsOwner OwnerString, + etherStatsStatus EntryStatus +} + +etherStatsIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object uniquely identifies this + etherStats entry." + ::= { etherStatsEntry 1 } + +etherStatsDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of the data that + this etherStats entry is configured to analyze. This + source can be any ethernet interface on this device. + In order to identify a particular interface, this object + shall identify the instance of the ifIndex object, + defined in RFC 2233 [17], 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 packets + on the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + etherStatsStatus object is equal to valid(1)." + ::= { etherStatsEntry 2 } + +etherStatsDropEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + 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." + ::= { etherStatsEntry 3 } + +etherStatsOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets). + This object can be used as a reasonable estimate of + 10-Megabit ethernet utilization. If greater precision is + desired, the etherStatsPkts and etherStatsOctets objects + should be sampled before and after a common interval. The + differences in the sampled values are Pkts and Octets, + respectively, and the number of seconds in the interval is + Interval. These values are used to calculate the Utilization + as follows: + + Pkts * (9.6 + 6.4) + (Octets * .8) + Utilization = ------------------------------------- + Interval * 10,000 + + The result of this equation is the value Utilization which + is the percent utilization of the ethernet segment on a + scale of 0 to 100 percent." + ::= { etherStatsEntry 4 } + +etherStatsPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad packets, + broadcast packets, and multicast packets) received." + ::= { etherStatsEntry 5 } + +etherStatsBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of good packets received that were + directed to the broadcast address. Note that this + does not include multicast packets." + ::= { etherStatsEntry 6 } + +etherStatsMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of good packets received that were + directed to a multicast address. Note that this number + does not include packets directed to the broadcast + address." + ::= { etherStatsEntry 7 } + +etherStatsCRCAlignErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that + had a length (excluding framing bits, but + including FCS octets) of between 64 and 1518 + octets, inclusive, but had either a bad + Frame Check Sequence (FCS) with an integral + number of octets (FCS Error) or a bad FCS with + a non-integral number of octets (Alignment Error)." + ::= { etherStatsEntry 8 } + +etherStatsUndersizePkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that were + less than 64 octets long (excluding framing bits, + but including FCS octets) and were otherwise well + formed." + ::= { etherStatsEntry 9 } + +etherStatsOversizePkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that were + longer than 1518 octets (excluding framing bits, + but including FCS octets) and were otherwise + well formed." + ::= { etherStatsEntry 10 } + +etherStatsFragments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that were less than + 64 octets in length (excluding framing bits but including + FCS octets) and had either a bad Frame Check Sequence + (FCS) with an integral number of octets (FCS Error) or a + bad FCS with a non-integral number of octets (Alignment + Error). + + Note that it is entirely normal for etherStatsFragments to + increment. This is because it counts both runts (which are + normal occurrences due to collisions) and noise hits." + ::= { etherStatsEntry 11 } + +etherStatsJabbers OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received that were + longer than 1518 octets (excluding framing bits, + but including FCS octets), and had either a bad + Frame Check Sequence (FCS) with an integral number + of octets (FCS Error) or a bad FCS with a non-integral + number of octets (Alignment Error). + + Note that this definition of jabber is different + than the definition in IEEE-802.3 section 8.2.1.5 + (10BASE5) and section 10.3.1.4 (10BASE2). These + documents define jabber as the condition where any + packet exceeds 20 ms. The allowed range to detect + jabber is between 20 ms and 150 ms." + ::= { etherStatsEntry 12 } + +etherStatsCollisions OBJECT-TYPE + SYNTAX Counter32 + UNITS "Collisions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The best estimate of the total number of collisions + on this Ethernet segment. + + The value returned will depend on the location of the + RMON probe. Section 8.2.1.3 (10BASE-5) and section + 10.3.1.3 (10BASE-2) of IEEE standard 802.3 states that a + station must detect a collision, in the receive mode, if + three or more stations are transmitting simultaneously. A + repeater port must detect a collision when two or more + stations are transmitting simultaneously. Thus a probe + placed on a repeater port could record more collisions + than a probe connected to a station on the same segment + would. + + Probe location plays a much smaller role when considering + 10BASE-T. 14.2.1.4 (10BASE-T) of IEEE standard 802.3 + defines a collision as the simultaneous presence of signals + on the DO and RD circuits (transmitting and receiving + at the same time). A 10BASE-T station can only detect + collisions when it is transmitting. Thus probes placed on + a station and a repeater, should report the same number of + collisions. + + Note also that an RMON probe inside a repeater should + ideally report collisions between the repeater and one or + more other hosts (transmit collisions as defined by IEEE + 802.3k) plus receiver collisions observed on any coax + segments to which the repeater is connected." + ::= { etherStatsEntry 13 } + +etherStatsPkts64Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were 64 octets in length + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 14 } + +etherStatsPkts65to127Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 65 and 127 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 15 } + +etherStatsPkts128to255Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 128 and 255 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 16 } + +etherStatsPkts256to511Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 256 and 511 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 17 } + +etherStatsPkts512to1023Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 512 and 1023 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 18 } + +etherStatsPkts1024to1518Octets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets (including bad + packets) received that were between + 1024 and 1518 octets in length inclusive + (excluding framing bits but including FCS octets)." + ::= { etherStatsEntry 19 } + +etherStatsOwner 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." + ::= { etherStatsEntry 20 } + +etherStatsStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this etherStats entry." + ::= { etherStatsEntry 21 } + +-- The History Control Group + +-- Implementation of the History Control group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The history control group controls the periodic statistical +-- sampling of data from various types of networks. The +-- historyControlTable stores configuration entries that each +-- define an interface, polling period, and other parameters. +-- Once samples are taken, their data is stored in an entry +-- in a media-specific table. Each such entry defines one +-- sample, and is associated with the historyControlEntry that +-- caused the sample to be taken. Each counter in the +-- etherHistoryEntry counts the same event as its similarly-named +-- counterpart in the etherStatsEntry, except that each value here +-- is a cumulative sum during a sampling period. +-- +-- 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. This tends to make more +-- user-friendly reports, and enables comparison of reports +-- from different probes that have relatively accurate time +-- of day. +-- +-- The probe is encouraged to add two history control entries +-- per monitored interface upon initialization that describe a short +-- term and a long term polling period. Suggested parameters are 30 +-- seconds for the short term polling period and 30 minutes for +-- the long term period. + +historyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of history control entries." + ::= { history 1 } + +historyControlEntry OBJECT-TYPE + SYNTAX HistoryControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up a periodic sampling of + statistics. As an example, an instance of the + historyControlInterval object might be named + historyControlInterval.2" + INDEX { historyControlIndex } + ::= { historyControlTable 1 } + +HistoryControlEntry ::= SEQUENCE { + historyControlIndex Integer32, + historyControlDataSource OBJECT IDENTIFIER, + historyControlBucketsRequested Integer32, + historyControlBucketsGranted Integer32, + historyControlInterval Integer32, + historyControlOwner OwnerString, + historyControlStatus EntryStatus +} + +historyControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + historyControl table. Each such entry defines a + set of samples at a particular interval for an + interface on the device." + ::= { historyControlEntry 1 } + +historyControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of the data for + which historical data was collected and + placed in a media-specific table on behalf of this + historyControlEntry. 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 RFC 2233 [17], 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 packets + on the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + historyControlStatus object is equal to valid(1)." + ::= { historyControlEntry 2 } + +historyControlBucketsRequested 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 + media-specific table associated with this + historyControlEntry. + + When this object is created or modified, the probe + should set historyControlBucketsGranted as closely to + this object as is possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { historyControlEntry 3 } + +historyControlBucketsGranted 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 media-specific table associated with this + historyControlEntry. + When the associated historyControlBucketsRequested + 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 + historyControlBucketsRequested object. + + 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 media-specific table. + + When the number of buckets reaches the value of + this object and a new bucket is to be added to the + media-specific table, the oldest bucket associated + with this historyControlEntry 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 media-specific table associated with this + historyControlEntry. 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 media- + specific entries may be allowed to grow." + ::= { historyControlEntry 4 } + +historyControlInterval OBJECT-TYPE + SYNTAX Integer32 (1..3600) + UNITS "Seconds" + 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 + media-specific table associated with this + historyControlEntry. This interval can + be set to any number of seconds between 1 and + 3600 (1 hour). + + 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 historyControlInterval + object to a value less than this interval. This is + typically most important for the 'octets' counter in any + media-specific table. For example, on an Ethernet + network, the etherHistoryOctets counter could overflow + in about one hour at the Ethernet's maximum + utilization. + + This object may not be modified if the associated + historyControlStatus object is equal to valid(1)." + DEFVAL { 1800 } + ::= { historyControlEntry 5 } + +historyControlOwner 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." + ::= { historyControlEntry 6 } + +historyControlStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this historyControl entry. + + Each instance of the media-specific table associated + with this historyControlEntry will be deleted by the agent + if this historyControlEntry is not equal to valid(1)." + ::= { historyControlEntry 7 } + +-- The Ethernet History Group + +-- Implementation of the Ethernet History group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Ethernet History group records periodic statistical samples +-- from a network and stores them for later retrieval. +-- Once samples are taken, their data is stored in an entry +-- in a media-specific table. Each such entry defines one + +-- sample, and is associated with the historyControlEntry that +-- caused the sample to be taken. This group defines the +-- etherHistoryTable, for Ethernet networks. +-- + +etherHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF EtherHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Ethernet history entries." + ::= { history 2 } + +etherHistoryEntry OBJECT-TYPE + SYNTAX EtherHistoryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An historical sample of Ethernet statistics on a particular + Ethernet interface. This sample is associated with the + historyControlEntry which set up the parameters for + a regular collection of these samples. As an example, an + instance of the etherHistoryPkts object might be named + etherHistoryPkts.2.89" + INDEX { etherHistoryIndex , etherHistorySampleIndex } + ::= { etherHistoryTable 1 } + +EtherHistoryEntry ::= SEQUENCE { + etherHistoryIndex Integer32, + etherHistorySampleIndex Integer32, + etherHistoryIntervalStart TimeTicks, + etherHistoryDropEvents Counter32, + etherHistoryOctets Counter32, + etherHistoryPkts Counter32, + etherHistoryBroadcastPkts Counter32, + etherHistoryMulticastPkts Counter32, + etherHistoryCRCAlignErrors Counter32, + etherHistoryUndersizePkts Counter32, + etherHistoryOversizePkts Counter32, + etherHistoryFragments Counter32, + etherHistoryJabbers Counter32, + etherHistoryCollisions Counter32, + etherHistoryUtilization Integer32 +} + +etherHistoryIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + 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." + ::= { etherHistoryEntry 1 } + +etherHistorySampleIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + 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." + ::= { etherHistoryEntry 2 } + +etherHistoryIntervalStart OBJECT-TYPE + SYNTAX TimeTicks + 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." + ::= { etherHistoryEntry 3 } + +etherHistoryDropEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + 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." + ::= { etherHistoryEntry 4 } + +etherHistoryOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets of data (including + those in bad packets) received on the + network (excluding framing bits but including + FCS octets)." + ::= { etherHistoryEntry 5 } + +etherHistoryPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets (including bad packets) + received during this sampling interval." + ::= { etherHistoryEntry 6 } + +etherHistoryBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets received during this + sampling interval that were directed to the + broadcast address." + ::= { etherHistoryEntry 7 } + +etherHistoryMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets received during this + sampling interval that were directed to a + multicast address. Note that this number does not + include packets addressed to the broadcast address." + ::= { etherHistoryEntry 8 } + +etherHistoryCRCAlignErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received during this + sampling interval that had a length (excluding + framing bits but including FCS octets) between + 64 and 1518 octets, inclusive, but had either a bad Frame + Check Sequence (FCS) with an integral number of octets + (FCS Error) or a bad FCS with a non-integral number + of octets (Alignment Error)." + ::= { etherHistoryEntry 9 } + +etherHistoryUndersizePkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received during this + sampling interval that were less than 64 octets + long (excluding framing bits but including FCS + octets) and were otherwise well formed." + ::= { etherHistoryEntry 10 } + +etherHistoryOversizePkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received during this + sampling interval that were longer than 1518 + octets (excluding framing bits but including + FCS octets) but were otherwise well formed." + ::= { etherHistoryEntry 11 } + +etherHistoryFragments OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received during this + sampling interval that were less than 64 octets in + length (excluding framing bits but including FCS + octets) had either a bad Frame Check Sequence (FCS) + with an integral number of octets (FCS Error) or a bad + FCS with a non-integral number of octets (Alignment + Error). + + Note that it is entirely normal for etherHistoryFragments to + increment. This is because it counts both runts (which are + normal occurrences due to collisions) and noise hits." + ::= { etherHistoryEntry 12 } + +etherHistoryJabbers OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received during this + sampling interval that were longer than 1518 octets + (excluding framing bits but including FCS octets), + and had either a bad Frame Check Sequence (FCS) + with an integral number of octets (FCS Error) or + a bad FCS with a non-integral number of octets + (Alignment Error). + + Note that this definition of jabber is different + than the definition in IEEE-802.3 section 8.2.1.5 + (10BASE5) and section 10.3.1.4 (10BASE2). These + documents define jabber as the condition where any + packet exceeds 20 ms. The allowed range to detect + jabber is between 20 ms and 150 ms." + ::= { etherHistoryEntry 13 } + +etherHistoryCollisions OBJECT-TYPE + SYNTAX Counter32 + UNITS "Collisions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The best estimate of the total number of collisions + on this Ethernet segment during this sampling + interval. + + The value returned will depend on the location of the + RMON probe. Section 8.2.1.3 (10BASE-5) and section + 10.3.1.3 (10BASE-2) of IEEE standard 802.3 states that a + station must detect a collision, in the receive mode, if + three or more stations are transmitting simultaneously. A + repeater port must detect a collision when two or more + stations are transmitting simultaneously. Thus a probe + placed on a repeater port could record more collisions + than a probe connected to a station on the same segment + would. + + Probe location plays a much smaller role when considering + 10BASE-T. 14.2.1.4 (10BASE-T) of IEEE standard 802.3 + defines a collision as the simultaneous presence of signals + on the DO and RD circuits (transmitting and receiving + at the same time). A 10BASE-T station can only detect + collisions when it is transmitting. Thus probes placed on + a station and a repeater, should report the same number of + collisions. + + Note also that an RMON probe inside a repeater should + ideally report collisions between the repeater and one or + more other hosts (transmit collisions as defined by IEEE + 802.3k) plus receiver collisions observed on any coax + segments to which the repeater is connected." + ::= { etherHistoryEntry 14 } + +etherHistoryUtilization OBJECT-TYPE + SYNTAX Integer32 (0..10000) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The best estimate of the mean physical layer + network utilization on this interface during this + sampling interval, in hundredths of a percent." + ::= { etherHistoryEntry 15 } + +-- The Alarm Group + +-- Implementation of the Alarm group is optional. The Alarm Group +-- requires the implementation of the Event group. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Alarm group periodically takes statistical samples from +-- variables in the probe and compares them to thresholds that have +-- been configured. The alarm table stores configuration +-- entries that each define a variable, polling period, and +-- threshold parameters. If a sample is found to cross the +-- threshold values, an event is generated. Only variables that +-- resolve to an ASN.1 primitive type of INTEGER (INTEGER, Integer32, +-- Counter32, Counter64, Gauge32, or TimeTicks) may be monitored in +-- this way. +-- + +-- This function has a hysteresis mechanism to limit the generation +-- of events. This mechanism generates one event as a threshold +-- is crossed in the appropriate direction. No more events are +-- generated for that threshold until the opposite threshold is +-- crossed. +-- +-- In the case of a sampling a deltaValue, a probe may implement +-- this mechanism with more precision if it takes a delta sample +-- twice per period, each time comparing the sum of the latest two +-- samples to the threshold. This allows the detection of threshold +-- crossings that span the sampling boundary. Note that this does +-- not require any special configuration of the threshold value. +-- It is suggested that probes implement this more precise algorithm. + +alarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of alarm entries." + ::= { alarm 1 } + +alarmEntry OBJECT-TYPE + SYNTAX AlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up a periodic checking + for alarm conditions. For example, an instance of the + alarmValue object might be named alarmValue.8" + INDEX { alarmIndex } + ::= { alarmTable 1 } + +AlarmEntry ::= SEQUENCE { + alarmIndex Integer32, + alarmInterval Integer32, + alarmVariable OBJECT IDENTIFIER, + alarmSampleType INTEGER, + alarmValue Integer32, + alarmStartupAlarm INTEGER, + alarmRisingThreshold Integer32, + alarmFallingThreshold Integer32, + alarmRisingEventIndex Integer32, + alarmFallingEventIndex Integer32, + alarmOwner OwnerString, + alarmStatus EntryStatus +} + +alarmIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + alarm table. Each such entry defines a + diagnostic sample at a particular interval + for an object on the device." + ::= { alarmEntry 1 } + +alarmInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval in seconds over which the data is + sampled and compared with the rising and falling + thresholds. When setting this variable, care + should be taken in the case of deltaValue + sampling - the interval should be set short enough + that the sampled variable is very unlikely to + increase or decrease by more than 2^31 - 1 during + a single sampling interval. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 2 } + +alarmVariable 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 INTEGER (INTEGER, Integer32, Counter32, Counter64, + 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 alarm 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. If at any time the variable name of + an established alarmEntry is no longer available in the + selected MIB view, the probe must change the status of + this alarmEntry to invalid(4). + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 3 } + +alarmSampleType OBJECT-TYPE + SYNTAX INTEGER { + absoluteValue(1), + deltaValue(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The method of sampling the selected variable and + calculating the value to be compared against the + thresholds. If the value of this object is + absoluteValue(1), the value of the selected variable + will be compared directly with the thresholds at the + end of the sampling interval. 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 compared with + the thresholds. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 4 } + +alarmValue OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the statistic during the last sampling + period. For example, if the sample type is deltaValue, + this value will be the difference between the samples + at the beginning and end of the period. If the sample + type is absoluteValue, this value will be the sampled + value at the end of the period. + This is the value that is compared with the rising and + falling thresholds. + + The value during the current sampling period is not + made available until the period is completed and will + remain available until the next period completes." + ::= { alarmEntry 5 } + +alarmStartupAlarm OBJECT-TYPE + SYNTAX INTEGER { + risingAlarm(1), + fallingAlarm(2), + risingOrFallingAlarm(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The alarm that may be sent when this entry is first + set to valid. If the first sample after this entry + becomes valid is greater than or equal to the + risingThreshold and alarmStartupAlarm is equal to + risingAlarm(1) or risingOrFallingAlarm(3), then a single + rising alarm will be generated. If the first sample + after this entry becomes valid is less than or equal + to the fallingThreshold and alarmStartupAlarm is equal + to fallingAlarm(2) or risingOrFallingAlarm(3), then a + single falling alarm will be generated. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 6 } + +alarmRisingThreshold OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A threshold for the sampled statistic. When the current + sampled value is greater than or equal to this threshold, + and the value at the last sampling interval was less than + this threshold, a single event will be generated. + A single event will also be generated if the first + sample after this entry becomes valid is greater than or + equal to this threshold and the associated + alarmStartupAlarm is equal to risingAlarm(1) or + risingOrFallingAlarm(3). + + After a rising event is generated, another such event + will not be generated until the sampled value + falls below this threshold and reaches the + alarmFallingThreshold. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 7 } + +alarmFallingThreshold OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A threshold for the sampled statistic. When the current + sampled value is less than or equal to this threshold, + and the value at the last sampling interval was greater than + this threshold, a single event will be generated. + A single event will also be generated if the first + sample after this entry becomes valid is less than or + equal to this threshold and the associated + alarmStartupAlarm is equal to fallingAlarm(2) or + risingOrFallingAlarm(3). + + After a falling event is generated, another such event + will not be generated until the sampled value + rises above this threshold and reaches the + alarmRisingThreshold. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 8 } + +alarmRisingEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index of the eventEntry that is + used when a rising threshold is crossed. The + eventEntry identified by a particular value of + this index is the same as identified by the same value + of the eventIndex object. If there is no + corresponding entry in the eventTable, then + no association exists. In particular, if this value + is zero, no associated event will be generated, as + zero is not a valid event index. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 9 } + +alarmFallingEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The index of the eventEntry that is + used when a falling threshold is crossed. The + eventEntry identified by a particular value of + this index is the same as identified by the same value + of the eventIndex object. If there is no + corresponding entry in the eventTable, then + no association exists. In particular, if this value + is zero, no associated event will be generated, as + zero is not a valid event index. + + This object may not be modified if the associated + alarmStatus object is equal to valid(1)." + ::= { alarmEntry 10 } + +alarmOwner 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." + ::= { alarmEntry 11 } + +alarmStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this alarm entry." + ::= { alarmEntry 12 } + +-- The Host Group + +-- Implementation of the Host group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The host group discovers new hosts on the network by +-- keeping a list of source and destination MAC Addresses seen +-- in good packets. For each of these addresses, the host group + +-- keeps a set of statistics. The hostControlTable controls +-- which interfaces this function is performed on, and contains +-- some information about the process. On behalf of each +-- hostControlEntry, data is collected on an interface and placed +-- in both the hostTable and the hostTimeTable. If the +-- monitoring device finds itself short of resources, it may +-- delete entries as needed. It is suggested that the device +-- delete the least recently used entries first. + +-- The hostTable contains entries for each address discovered on +-- a particular interface. Each entry contains statistical +-- data about that host. This table is indexed by the +-- MAC address of the host, through which a random access +-- may be achieved. + +-- The hostTimeTable contains data in the same format as the +-- hostTable, and must contain the same set of hosts, but is +-- indexed using hostTimeCreationOrder rather than hostAddress. +-- The hostTimeCreationOrder is an integer which reflects +-- the relative order in which a particular entry was discovered +-- and thus inserted into the table. As this order, and thus +-- the index, is among those entries currently in the table, +-- the index for a particular entry may change if an +-- (earlier) entry is deleted. Thus the association between +-- hostTimeCreationOrder and hostTimeEntry may be broken at +-- any time. + +-- The hostTimeTable has two important uses. The first is the +-- fast download of this potentially large table. Because the +-- index of this table runs from 1 to the size of the table, +-- inclusive, its values are predictable. This allows very +-- efficient packing of variables into SNMP PDU's and allows +-- a table transfer to have multiple packets outstanding. +-- These benefits increase transfer rates tremendously. + +-- The second use of the hostTimeTable is the efficient discovery +-- by the management station of new entries added to the table. +-- After the management station has downloaded the entire table, +-- it knows that new entries will be added immediately after the +-- end of the current table. It can thus detect new entries there +-- and retrieve them easily. + +-- Because the association between hostTimeCreationOrder and +-- hostTimeEntry may be broken at any time, the management +-- station must monitor the related hostControlLastDeleteTime +-- object. When the management station thus detects a deletion, +-- it must assume that any such associations have been broken, +-- and invalidate any it has stored locally. This includes + +-- restarting any download of the hostTimeTable that may have been +-- in progress, as well as rediscovering the end of the +-- hostTimeTable so that it may detect new entries. If the +-- management station does not detect the broken association, +-- it may continue to refer to a particular host by its +-- creationOrder while unwittingly retrieving the data associated +-- with another host entirely. If this happens while downloading +-- the host table, the management station may fail to download +-- all of the entries in the table. + + +hostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of host table control entries." + ::= { hosts 1 } + +hostControlEntry OBJECT-TYPE + SYNTAX HostControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of parameters that set up the discovery of hosts + on a particular interface and the collection of statistics + about these hosts. For example, an instance of the + hostControlTableSize object might be named + hostControlTableSize.1" + INDEX { hostControlIndex } + ::= { hostControlTable 1 } + +HostControlEntry ::= SEQUENCE { + + hostControlIndex Integer32, + hostControlDataSource OBJECT IDENTIFIER, + hostControlTableSize Integer32, + hostControlLastDeleteTime TimeTicks, + hostControlOwner OwnerString, + hostControlStatus EntryStatus +} + +hostControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + hostControl table. Each such entry defines + a function that discovers hosts on a particular interface + and places statistics about them in the hostTable and + the hostTimeTable on behalf of this hostControlEntry." + ::= { hostControlEntry 1 } + +hostControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of the data for + this instance of the host function. 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 RFC 2233 [17], 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 packets + on the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + hostControlStatus object is equal to valid(1)." + ::= { hostControlEntry 2 } + +hostControlTableSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of hostEntries in the hostTable and the + hostTimeTable associated with this hostControlEntry." + ::= { hostControlEntry 3 } + +hostControlLastDeleteTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last entry + was deleted from the portion of the hostTable + associated with this hostControlEntry. If no + deletions have occurred, this value shall be zero." + ::= { hostControlEntry 4 } + +hostControlOwner 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." + ::= { hostControlEntry 5 } + +hostControlStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hostControl entry. + + If this object is not equal to valid(1), all associated + entries in the hostTable, hostTimeTable, and the + hostTopNTable shall be deleted by the agent." + ::= { hostControlEntry 6 } + +hostTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of host entries." + ::= { hosts 2 } + +hostEntry OBJECT-TYPE + SYNTAX HostEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular host that has + been discovered on an interface of this device. For example, + an instance of the hostOutBroadcastPkts object might be + named hostOutBroadcastPkts.1.6.8.0.32.27.3.176" + INDEX { hostIndex, hostAddress } + ::= { hostTable 1 } + +HostEntry ::= SEQUENCE { + hostAddress OCTET STRING, + hostCreationOrder Integer32, + hostIndex Integer32, + hostInPkts Counter32, + hostOutPkts Counter32, + hostInOctets Counter32, + hostOutOctets Counter32, + hostOutErrors Counter32, + hostOutBroadcastPkts Counter32, + hostOutMulticastPkts Counter32 +} + +hostAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical address of this host." + ::= { hostEntry 1 } + +hostCreationOrder OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that defines the relative ordering of + the creation time of hosts captured for a + particular hostControlEntry. This index shall + be between 1 and N, where N is the value of + the associated hostControlTableSize. The ordering + of the indexes is based on the order of each entry's + insertion into the table, in which entries added earlier + have a lower index value than entries added later. + + It is important to note that the order for a + particular entry may change as an (earlier) entry + is deleted from the table. Because this order may + change, management stations should make use of the + hostControlLastDeleteTime variable in the + hostControlEntry associated with the relevant + portion of the hostTable. By observing + this variable, the management station may detect + the circumstances where a previous association + between a value of hostCreationOrder + and a hostEntry may no longer hold." + ::= { hostEntry 2 } + +hostIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of collected host statistics of which + this entry is a part. The set of hosts + identified by a particular value of this + index is associated with the hostControlEntry + as identified by the same value of hostControlIndex." + ::= { hostEntry 3 } + +hostInPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted to this + address since it was added to the hostTable." + ::= { hostEntry 4 } + +hostOutPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, including bad packets, transmitted + by this address since it was added to the hostTable." + ::= { hostEntry 5 } + +hostInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address since + it was added to the hostTable (excluding framing + bits but including FCS octets), except for those + octets in bad packets." + ::= { hostEntry 6 } + +hostOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address since + it was added to the hostTable (excluding framing + bits but including FCS octets), including those + octets in bad packets." + ::= { hostEntry 7 } + +hostOutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bad packets transmitted by this address + since this host was added to the hostTable." + ::= { hostEntry 8 } + +hostOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to the broadcast address + since this host was added to the hostTable." + ::= { hostEntry 9 } + +hostOutMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to a multicast address + since this host was added to the hostTable. + Note that this number does not include packets + directed to the broadcast address." + ::= { hostEntry 10 } + +-- host Time Table + +hostTimeTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTimeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of time-ordered host table entries." + ::= { hosts 3 } + +hostTimeEntry OBJECT-TYPE + SYNTAX HostTimeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for a particular host that has + been discovered on an interface of this device. This + collection includes the relative ordering of the creation + time of this object. For example, an instance of the + hostTimeOutBroadcastPkts object might be named + hostTimeOutBroadcastPkts.1.687" + INDEX { hostTimeIndex, hostTimeCreationOrder } + ::= { hostTimeTable 1 } + +HostTimeEntry ::= SEQUENCE { + hostTimeAddress OCTET STRING, + hostTimeCreationOrder Integer32, + hostTimeIndex Integer32, + hostTimeInPkts Counter32, + hostTimeOutPkts Counter32, + hostTimeInOctets Counter32, + hostTimeOutOctets Counter32, + hostTimeOutErrors Counter32, + hostTimeOutBroadcastPkts Counter32, + hostTimeOutMulticastPkts Counter32 +} + +hostTimeAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical address of this host." + ::= { hostTimeEntry 1 } + +hostTimeCreationOrder OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the hostTime table among those entries associated + with the same hostControlEntry. This index shall + be between 1 and N, where N is the value of + the associated hostControlTableSize. The ordering + of the indexes is based on the order of each entry's + insertion into the table, in which entries added earlier + have a lower index value than entries added later. + Thus the management station has the ability to + learn of new entries added to this table without + downloading the entire table. + + It is important to note that the index for a + particular entry may change as an (earlier) entry + is deleted from the table. Because this order may + change, management stations should make use of the + hostControlLastDeleteTime variable in the + hostControlEntry associated with the relevant + portion of the hostTimeTable. By observing + this variable, the management station may detect + the circumstances where a download of the table + may have missed entries, and where a previous + association between a value of hostTimeCreationOrder + and a hostTimeEntry may no longer hold." + ::= { hostTimeEntry 2 } + +hostTimeIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of collected host statistics of which + this entry is a part. The set of hosts + identified by a particular value of this + index is associated with the hostControlEntry + as identified by the same value of hostControlIndex." + ::= { hostTimeEntry 3 } + +hostTimeInPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted to this + address since it was added to the hostTimeTable." + ::= { hostTimeEntry 4 } + +hostTimeOutPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, including bad packets, transmitted + by this address since it was added to the hostTimeTable." + ::= { hostTimeEntry 5 } + +hostTimeInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted to this address since + it was added to the hostTimeTable (excluding framing + bits but including FCS octets), except for those + octets in bad packets." + ::= { hostTimeEntry 6 } + +hostTimeOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets transmitted by this address since + it was added to the hostTimeTable (excluding framing + bits but including FCS octets), including those + octets in bad packets." + ::= { hostTimeEntry 7 } + +hostTimeOutErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bad packets transmitted by this address + since this host was added to the hostTimeTable." + ::= { hostTimeEntry 8 } + +hostTimeOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to the broadcast address + since this host was added to the hostTimeTable." + ::= { hostTimeEntry 9 } + +hostTimeOutMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of good packets transmitted by this + address that were directed to a multicast address + since this host was added to the hostTimeTable. + Note that this number does not include packets directed + to the broadcast address." + ::= { hostTimeEntry 10 } + +-- The Host Top "N" Group + +-- Implementation of the Host Top N group is optional. The Host Top N +-- group requires the implementation of the host group. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Host Top N group is used to prepare reports that describe +-- the hosts that top a list ordered by one of their statistics. +-- The available statistics are samples of one of their +-- base statistics, over an interval specified by the management +-- station. Thus, these statistics are rate based. The management +-- station also selects how many such hosts are reported. + +-- The hostTopNControlTable is used to initiate the generation of +-- such a report. The management station may select the parameters +-- of such a report, such as which interface, which statistic, +-- how many hosts, and the start and stop times of the sampling. +-- When the report is prepared, entries are created in the +-- hostTopNTable associated with the relevant hostTopNControlEntry. +-- These entries are static for each report after it has been +-- prepared. + +hostTopNControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of top N host control entries." + ::= { hostTopN 1 } + +hostTopNControlEntry OBJECT-TYPE + SYNTAX HostTopNControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a report + of the top N hosts according to several metrics. For + example, an instance of the hostTopNDuration object might + be named hostTopNDuration.3" + INDEX { hostTopNControlIndex } + ::= { hostTopNControlTable 1 } + +HostTopNControlEntry ::= SEQUENCE { + hostTopNControlIndex Integer32, + hostTopNHostIndex Integer32, + hostTopNRateBase INTEGER, + hostTopNTimeRemaining Integer32, + hostTopNDuration Integer32, + hostTopNRequestedSize Integer32, + hostTopNGrantedSize Integer32, + hostTopNStartTime TimeTicks, + hostTopNOwner OwnerString, + hostTopNStatus EntryStatus +} + +hostTopNControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the hostTopNControl table. Each such + entry defines one top N report prepared for + one interface." + ::= { hostTopNControlEntry 1 } + +hostTopNHostIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The host table for which a top N report will be prepared + on behalf of this entry. The host table identified by a + particular value of this index is associated with the same + host table as identified by the same value of + hostIndex. + + This object may not be modified if the associated + hostTopNStatus object is equal to valid(1)." + ::= { hostTopNControlEntry 2 } + +hostTopNRateBase OBJECT-TYPE + SYNTAX INTEGER { + hostTopNInPkts(1), + hostTopNOutPkts(2), + hostTopNInOctets(3), + hostTopNOutOctets(4), + hostTopNOutErrors(5), + hostTopNOutBroadcastPkts(6), + hostTopNOutMulticastPkts(7) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each host that the hostTopNRate + variable is based upon. + + This object may not be modified if the associated + hostTopNStatus object is equal to valid(1)." + ::= { hostTopNControlEntry 3 } + +hostTopNTimeRemaining OBJECT-TYPE + SYNTAX Integer32 + UNITS "Seconds" + 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, which is + loaded into the associated hostTopNDuration object. + + When this object is set to a non-zero value, any + associated hostTopNEntries shall be made + inaccessible by the monitor. While the value of this + object is non-zero, it decrements by one per second until + it reaches zero. During this time, all associated + hostTopNEntries shall remain inaccessible. At the time + that this object decrements to zero, the report is made + accessible in the hostTopNTable. Thus, the hostTopN + table needs to be created only at the end of the collection + interval." + DEFVAL { 0 } + ::= { hostTopNControlEntry 4 } + +hostTopNDuration OBJECT-TYPE + SYNTAX Integer32 + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has collected + during the last sampling interval, or if this + report is currently being collected, the number + of seconds that this report is being collected + during this sampling interval. + + When the associated hostTopNTimeRemaining 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 hostTopNTimeRemaining is set. + + This value shall be zero if no reports have been + requested for this hostTopNControlEntry." + DEFVAL { 0 } + ::= { hostTopNControlEntry 5 } + +hostTopNRequestedSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of hosts requested for the top N + table. + + When this object is created or modified, the probe + should set hostTopNGrantedSize as closely to this + object as is possible for the particular probe + implementation and available resources." + DEFVAL { 10 } + ::= { hostTopNControlEntry 6 } + +hostTopNGrantedSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of hosts in the top N table. + + When the associated hostTopNRequestedSize 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 + hostTopNRequestedSize object. + + Hosts with the highest value of hostTopNRate shall be + placed in this table in decreasing order of this rate + until there is no more room or until there are no more + hosts." + ::= { hostTopNControlEntry 7 } + +hostTopNStartTime OBJECT-TYPE + SYNTAX TimeTicks + 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 hostTopNTimeRemaining object was + modified to start the requested report." + ::= { hostTopNControlEntry 8 } + +hostTopNOwner 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." + ::= { hostTopNControlEntry 9 } + +hostTopNStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this hostTopNControl entry. + + If this object is not equal to valid(1), all associated + hostTopNEntries shall be deleted by the agent." + ::= { hostTopNControlEntry 10 } + +hostTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF HostTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of top N host entries." + ::= { hostTopN 2 } + +hostTopNEntry OBJECT-TYPE + SYNTAX HostTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for a host that is part of a top N + report. For example, an instance of the hostTopNRate + object might be named hostTopNRate.3.10" + INDEX { hostTopNReport, hostTopNIndex } + ::= { hostTopNTable 1 } + +HostTopNEntry ::= SEQUENCE { + hostTopNReport Integer32, + hostTopNIndex Integer32, + hostTopNAddress OCTET STRING, + hostTopNRate Integer32 +} + +hostTopNReport OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the top N report of which + this entry is a part. The set of hosts + identified by a particular value of this + object is part of the same report as identified + by the same value of the hostTopNControlIndex object." + ::= { hostTopNEntry 1 } + +hostTopNIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the hostTopN table among those in the same report. + This index is between 1 and N, where N is the + number of entries in this table. Increasing values + of hostTopNIndex shall be assigned to entries with + decreasing values of hostTopNRate until index N + is assigned to the entry with the lowest value of + hostTopNRate or there are no more hostTopNEntries." + ::= { hostTopNEntry 2 } + +hostTopNAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical address of this host." + ::= { hostTopNEntry 3 } + +hostTopNRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval. The selected + variable is this host's instance of the object + selected by hostTopNRateBase." + ::= { hostTopNEntry 4 } + +-- The Matrix Group + +-- Implementation of the Matrix group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Matrix group consists of the matrixControlTable, matrixSDTable +-- and the matrixDSTable. These tables store statistics for a +-- particular conversation between two addresses. As the device +-- detects a new conversation, including those to a non-unicast +-- address, it creates a new entry in both of the matrix tables. +-- It must only create new entries based on information +-- received in good packets. If the monitoring device finds +-- itself short of resources, it may delete entries as needed. +-- It is suggested that the device delete the least recently used +-- entries first. + +matrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of information entries for the + traffic matrix on each interface." + ::= { matrix 1 } + +matrixControlEntry OBJECT-TYPE + SYNTAX MatrixControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a traffic matrix on a particular + interface. For example, an instance of the + matrixControlLastDeleteTime object might be named + matrixControlLastDeleteTime.1" + INDEX { matrixControlIndex } + ::= { matrixControlTable 1 } + +MatrixControlEntry ::= SEQUENCE { + matrixControlIndex Integer32, + matrixControlDataSource OBJECT IDENTIFIER, + matrixControlTableSize Integer32, + matrixControlLastDeleteTime TimeTicks, + matrixControlOwner OwnerString, + matrixControlStatus EntryStatus +} + +matrixControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + matrixControl table. Each such entry defines + a function that discovers conversations on a particular + interface and places statistics about them in the + matrixSDTable and the matrixDSTable on behalf of this + matrixControlEntry." + ::= { matrixControlEntry 1 } + +matrixControlDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the source of + the data from which this entry creates a traffic matrix. + 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 RFC 2233 [17], 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 packets + on the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + matrixControlStatus object is equal to valid(1)." + ::= { matrixControlEntry 2 } + +matrixControlTableSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of matrixSDEntries in the matrixSDTable + for this interface. This must also be the value of + the number of entries in the matrixDSTable for this + interface." + ::= { matrixControlEntry 3 } + +matrixControlLastDeleteTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last entry + was deleted from the portion of the matrixSDTable + or matrixDSTable associated with this matrixControlEntry. + If no deletions have occurred, this value shall be + zero." + ::= { matrixControlEntry 4 } + +matrixControlOwner 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." + ::= { matrixControlEntry 5 } + +matrixControlStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this matrixControl entry. + If this object is not equal to valid(1), all associated + entries in the matrixSDTable and the matrixDSTable + shall be deleted by the agent." + ::= { matrixControlEntry 6 } + +matrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries indexed by + source and destination MAC address." + ::= { matrix 2 } + +matrixSDEntry OBJECT-TYPE + SYNTAX MatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for communications between + two addresses on a particular interface. For example, + an instance of the matrixSDPkts object might be named + matrixSDPkts.1.6.8.0.32.27.3.176.6.8.0.32.10.8.113" + INDEX { matrixSDIndex, + matrixSDSourceAddress, matrixSDDestAddress } + ::= { matrixSDTable 1 } + +MatrixSDEntry ::= SEQUENCE { + matrixSDSourceAddress OCTET STRING, + matrixSDDestAddress OCTET STRING, + matrixSDIndex Integer32, + matrixSDPkts Counter32, + matrixSDOctets Counter32, + matrixSDErrors Counter32 +} + +matrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source physical address." + ::= { matrixSDEntry 1 } + +matrixSDDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination physical address." + ::= { matrixSDEntry 2 } + +matrixSDIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of collected matrix statistics of which + this entry is a part. The set of matrix statistics + identified by a particular value of this index + is associated with the same matrixControlEntry + as identified by the same value of matrixControlIndex." + ::= { matrixSDEntry 3 } + +matrixSDPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number includes + bad packets)." + ::= { matrixSDEntry 4 } + +matrixSDOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets (excluding framing bits but + including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixSDEntry 5 } + +matrixSDErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bad packets transmitted from + the source address to the destination address." + ::= { matrixSDEntry 6 } + +-- Traffic matrix tables from destination to source + +matrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries indexed by + destination and source MAC address." + ::= { matrix 3 } + +matrixDSEntry OBJECT-TYPE + SYNTAX MatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistics for communications between + two addresses on a particular interface. For example, + an instance of the matrixSDPkts object might be named + matrixSDPkts.1.6.8.0.32.10.8.113.6.8.0.32.27.3.176" + INDEX { matrixDSIndex, + matrixDSDestAddress, matrixDSSourceAddress } + ::= { matrixDSTable 1 } + +MatrixDSEntry ::= SEQUENCE { + matrixDSSourceAddress OCTET STRING, + matrixDSDestAddress OCTET STRING, + matrixDSIndex Integer32, + matrixDSPkts Counter32, + matrixDSOctets Counter32, + matrixDSErrors Counter32 +} + +matrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source physical address." + ::= { matrixDSEntry 1 } + +matrixDSDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination physical address." + ::= { matrixDSEntry 2 } + +matrixDSIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The set of collected matrix statistics of which + this entry is a part. The set of matrix statistics + identified by a particular value of this index + is associated with the same matrixControlEntry + as identified by the same value of matrixControlIndex." + ::= { matrixDSEntry 3 } + +matrixDSPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets transmitted from the source + address to the destination address (this number includes + bad packets)." + ::= { matrixDSEntry 4 } + +matrixDSOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets (excluding framing bits + but including FCS octets) contained in all packets + transmitted from the source address to the + destination address." + ::= { matrixDSEntry 5 } + +matrixDSErrors OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bad packets transmitted from + the source address to the destination address." + ::= { matrixDSEntry 6 } + +-- The Filter Group + +-- Implementation of the Filter group is optional. + +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Filter group allows packets to be captured with an +-- arbitrary filter expression. A logical data and +-- event stream or "channel" is formed by the packets +-- that match the filter expression. +-- +-- This filter mechanism allows the creation of an arbitrary +-- logical expression with which to filter packets. Each +-- filter associated with a channel is OR'ed with the others. +-- Within a filter, any bits checked in the data and status are +-- AND'ed with respect to other bits in the same filter. The +-- NotMask also allows for checking for inequality. Finally, +-- the channelAcceptType object allows for inversion of the +-- whole equation. +-- +-- If a management station wishes to receive a trap to alert it +-- that new packets have been captured and are available for +-- download, it is recommended that it set up an alarm entry that +-- monitors the value of the relevant channelMatches instance. +-- +-- The channel can be turned on or off, and can also +-- generate events when packets pass through it. + +filterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of packet filter entries." + ::= { filter 1 } + +filterEntry OBJECT-TYPE + SYNTAX FilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters for a packet filter applied on a + particular interface. As an example, an instance of the + filterPktData object might be named filterPktData.12" + INDEX { filterIndex } + ::= { filterTable 1 } + +FilterEntry ::= SEQUENCE { + filterIndex Integer32, + filterChannelIndex Integer32, + filterPktDataOffset Integer32, + filterPktData OCTET STRING, + filterPktDataMask OCTET STRING, + filterPktDataNotMask OCTET STRING, + filterPktStatus Integer32, + filterPktStatusMask Integer32, + filterPktStatusNotMask Integer32, + filterOwner OwnerString, + filterStatus EntryStatus +} + +filterIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the filter table. Each such entry defines + one filter that is to be applied to every packet + received on an interface." + ::= { filterEntry 1 } + +filterChannelIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the channel of which this filter + is a part. The filters identified by a particular value + of this object are associated with the same channel as + identified by the same value of the channelIndex object." + ::= { filterEntry 2 } + +filterPktDataOffset OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The offset from the beginning of each packet where + a match of packet data will be attempted. This offset + is measured from the point in the physical layer + packet after the framing bits, if any. For example, + in an Ethernet frame, this point is at the beginning of + the destination MAC address. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + DEFVAL { 0 } + ::= { filterEntry 3 } + +filterPktData OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The data that is to be matched with the input packet. + For each packet received, this filter and the accompanying + filterPktDataMask and filterPktDataNotMask will be + adjusted for the offset. The only bits relevant to this + match algorithm are those that have the corresponding + filterPktDataMask bit equal to one. The following three + rules are then applied to every packet: + + (1) If the packet is too short and does not have data + corresponding to part of the filterPktData, the packet + will fail this data match. + + (2) For each relevant bit from the packet with the + corresponding filterPktDataNotMask bit set to zero, if + the bit from the packet is not equal to the corresponding + bit from the filterPktData, then the packet will fail + this data match. + + (3) If for every relevant bit from the packet with the + corresponding filterPktDataNotMask bit set to one, the + bit from the packet is equal to the corresponding bit + from the filterPktData, then the packet will fail this + data match. + + Any packets that have not failed any of the three matches + above have passed this data match. In particular, a zero + length filter will match any packet. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 4 } + +filterPktDataMask OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mask that is applied to the match process. + After adjusting this mask for the offset, only those + bits in the received packet that correspond to bits set + in this mask are relevant for further processing by the + match algorithm. The offset is applied to filterPktDataMask + in the same way it is applied to the filter. For the + purposes of the matching algorithm, if the associated + filterPktData object is longer than this mask, this mask is + conceptually extended with '1' bits until it reaches the + length of the filterPktData object. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 5 } + +filterPktDataNotMask OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The inversion mask that is applied to the match + process. After adjusting this mask for the offset, + those relevant bits in the received packet that correspond + to bits cleared in this mask must all be equal to their + corresponding bits in the filterPktData object for the packet + to be accepted. In addition, at least one of those relevant + bits in the received packet that correspond to bits set in + this mask must be different to its corresponding bit in the + filterPktData object. + + For the purposes of the matching algorithm, if the associated + filterPktData object is longer than this mask, this mask is + conceptually extended with '0' bits until it reaches the + length of the filterPktData object. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 6 } + +filterPktStatus OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status that is to be matched with the input packet. + The only bits relevant to this match algorithm are those that + have the corresponding filterPktStatusMask bit equal to one. + The following two rules are then applied to every packet: + + (1) For each relevant bit from the packet status with the + corresponding filterPktStatusNotMask bit set to zero, if + the bit from the packet status is not equal to the + corresponding bit from the filterPktStatus, then the + packet will fail this status match. + + (2) If for every relevant bit from the packet status with the + corresponding filterPktStatusNotMask bit set to one, the + bit from the packet status is equal to the corresponding + bit from the filterPktStatus, then the packet will fail + this status match. + + Any packets that have not failed either of the two matches + above have passed this status match. In particular, a zero + length status filter will match any packet's status. + + The value of the packet status is a sum. This sum + initially takes the value zero. Then, for each + error, E, that has been discovered in this packet, + 2 raised to a value representing E is added to the sum. + The errors and the bits that represent them are dependent + on the media type of the interface that this channel + is receiving packets from. + + The errors defined for a packet captured off of an + Ethernet interface are as follows: + + bit # Error + 0 Packet is longer than 1518 octets + 1 Packet is shorter than 64 octets + 2 Packet experienced a CRC or Alignment error + + For example, an Ethernet fragment would have a + value of 6 (2^1 + 2^2). + + As this MIB is expanded to new media types, this object + will have other media-specific errors defined. + + For the purposes of this status matching algorithm, if the + packet status is longer than this filterPktStatus object, + this object is conceptually extended with '0' bits until it + reaches the size of the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 7 } + +filterPktStatusMask OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mask that is applied to the status match process. + Only those bits in the received packet that correspond to + bits set in this mask are relevant for further processing + by the status match algorithm. For the purposes + of the matching algorithm, if the associated filterPktStatus + object is longer than this mask, this mask is conceptually + extended with '1' bits until it reaches the size of the + filterPktStatus. In addition, if a packet status is longer + than this mask, this mask is conceptually extended with '0' + bits until it reaches the size of the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 8 } + +filterPktStatusNotMask OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The inversion mask that is applied to the status match + process. Those relevant bits in the received packet status + that correspond to bits cleared in this mask must all be + equal to their corresponding bits in the filterPktStatus + object for the packet to be accepted. In addition, at least + one of those relevant bits in the received packet status + that correspond to bits set in this mask must be different + to its corresponding bit in the filterPktStatus object for + the packet to be accepted. + + For the purposes of the matching algorithm, if the associated + filterPktStatus object or a packet status is longer than this + mask, this mask is conceptually extended with '0' bits until + it reaches the longer of the lengths of the filterPktStatus + object and the packet status. + + This object may not be modified if the associated + filterStatus object is equal to valid(1)." + ::= { filterEntry 9 } + +filterOwner 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." + ::= { filterEntry 10 } + +filterStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this filter entry." + ::= { filterEntry 11 } + +channelTable OBJECT-TYPE + SYNTAX SEQUENCE OF ChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of packet channel entries." + ::= { filter 2 } + +channelEntry OBJECT-TYPE + SYNTAX ChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters for a packet channel applied on a + particular interface. As an example, an instance of the + channelMatches object might be named channelMatches.3" + INDEX { channelIndex } + ::= { channelTable 1 } + +ChannelEntry ::= SEQUENCE { + channelIndex Integer32, + channelIfIndex Integer32, + channelAcceptType INTEGER, + channelDataControl INTEGER, + channelTurnOnEventIndex Integer32, + channelTurnOffEventIndex Integer32, + channelEventIndex Integer32, + channelEventStatus INTEGER, + channelMatches Counter32, + channelDescription DisplayString, + channelOwner OwnerString, + channelStatus EntryStatus +} + +channelIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the channel + table. Each such entry defines one channel, a logical + data and event stream. + + It is suggested that before creating a channel, an + application should scan all instances of the + filterChannelIndex object to make sure that there are no + pre-existing filters that would be inadvertently be linked + to the channel." + ::= { channelEntry 1 } + +channelIfIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object uniquely identifies the + interface on this remote network monitoring device to which + the associated filters are applied to allow data into this + channel. 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 RFC 2233 [17]. + + The filters in this group are applied to all packets on + the local network segment attached to the identified + interface. + + An agent may or may not be able to tell if fundamental + changes to the media of the interface have occurred and + necessitate an invalidation of this entry. For example, a + hot-pluggable ethernet card could be pulled out and replaced + by a token-ring card. In such a case, if the agent has such + knowledge of the change, it is recommended that it + invalidate this entry. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 2 } + +channelAcceptType OBJECT-TYPE + SYNTAX INTEGER { + acceptMatched(1), + acceptFailed(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the action of the filters + associated with this channel. If this object is equal + to acceptMatched(1), packets will be accepted to this + channel if they are accepted by both the packet data and + packet status matches of an associated filter. If + this object is equal to acceptFailed(2), packets will + be accepted to this channel only if they fail either + the packet data match or the packet status match of + each of the associated filters. + + In particular, a channel with no associated filters will + match no packets if set to acceptMatched(1) case and will + match all packets in the acceptFailed(2) case. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 3 } + +channelDataControl OBJECT-TYPE + SYNTAX INTEGER { + on(1), + off(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the flow of data through this channel. + If this object is on(1), data, status and events flow + through this channel. If this object is off(2), data, + status and events will not flow through this channel." + DEFVAL { off } + ::= { channelEntry 4 } + +channelTurnOnEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the event + that is configured to turn the associated + channelDataControl from off to on when the event is + generated. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelTurnOnEventIndex must be + set to zero, a non-existent event index. + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 5 } + +channelTurnOffEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the event + that is configured to turn the associated + channelDataControl from on to off when the event is + generated. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelTurnOffEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 6 } + +channelEventIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the event + that is configured to be generated when the + associated channelDataControl is on and a packet + is matched. The event identified by a particular value + of this object is the same event as identified by the + same value of the eventIndex object. If there is no + corresponding entry in the eventTable, then no + association exists. In fact, if no event is intended + for this channel, channelEventIndex must be + set to zero, a non-existent event index. + + This object may not be modified if the associated + channelStatus object is equal to valid(1)." + ::= { channelEntry 7 } + +channelEventStatus OBJECT-TYPE + SYNTAX INTEGER { + eventReady(1), + eventFired(2), + eventAlwaysReady(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The event status of this channel. + + If this channel is configured to generate events + when packets are matched, a means of controlling + the flow of those events is often needed. When + this object is equal to eventReady(1), a single + event may be generated, after which this object + will be set by the probe to eventFired(2). While + in the eventFired(2) state, no events will be + generated until the object is modified to + eventReady(1) (or eventAlwaysReady(3)). The + management station can thus easily respond to a + notification of an event by re-enabling this object. + + If the management station wishes to disable this + flow control and allow events to be generated + at will, this object may be set to + eventAlwaysReady(3). Disabling the flow control + is discouraged as it can result in high network + traffic or other performance problems." + DEFVAL { eventReady } + ::= { channelEntry 8 } + +channelMatches OBJECT-TYPE + SYNTAX Counter32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this channel has matched a packet. + Note that this object is updated even when + channelDataControl is set to off." + ::= { channelEntry 9 } + +channelDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A comment describing this channel." + ::= { channelEntry 10 } + +channelOwner 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." + ::= { channelEntry 11 } + +channelStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this channel entry." + ::= { channelEntry 12 } + +-- The Packet Capture Group + +-- Implementation of the Packet Capture group is optional. The Packet +-- Capture Group requires implementation of the Filter Group. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Packet Capture group allows packets to be captured +-- upon a filter match. The bufferControlTable controls +-- the captured packets output from a channel that is +-- associated with it. The captured packets are placed +-- in entries in the captureBufferTable. These entries are +-- associated with the bufferControlEntry on whose behalf they +-- were stored. + +bufferControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF BufferControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of buffers control entries." + ::= { capture 1 } + +bufferControlEntry OBJECT-TYPE + SYNTAX BufferControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the collection of a stream + of packets that have matched filters. As an example, an + instance of the bufferControlCaptureSliceSize object might + be named bufferControlCaptureSliceSize.3" + INDEX { bufferControlIndex } + ::= { bufferControlTable 1 } + +BufferControlEntry ::= SEQUENCE { + bufferControlIndex Integer32, + bufferControlChannelIndex Integer32, + bufferControlFullStatus INTEGER, + bufferControlFullAction INTEGER, + bufferControlCaptureSliceSize Integer32, + bufferControlDownloadSliceSize Integer32, + bufferControlDownloadOffset Integer32, + bufferControlMaxOctetsRequested Integer32, + bufferControlMaxOctetsGranted Integer32, + bufferControlCapturedPackets Integer32, + bufferControlTurnOnTime TimeTicks, + bufferControlOwner OwnerString, + bufferControlStatus EntryStatus +} + +bufferControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the bufferControl table. The value of this + index shall never be zero. Each such + entry defines one set of packets that is + captured and controlled by one or more filters." + ::= { bufferControlEntry 1 } + +bufferControlChannelIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An index that identifies the channel that is the + source of packets for this bufferControl table. + The channel identified by a particular value of this + index is the same as identified by the same value of + the channelIndex object. + + This object may not be modified if the associated + bufferControlStatus object is equal to valid(1)." + ::= { bufferControlEntry 2 } + +bufferControlFullStatus OBJECT-TYPE + SYNTAX INTEGER { + spaceAvailable(1), + full(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object shows whether the buffer has room to + accept new packets or if it is full. + + If the status is spaceAvailable(1), the buffer is + accepting new packets normally. If the status is + full(2) and the associated bufferControlFullAction + object is wrapWhenFull, the buffer is accepting new + packets by deleting enough of the oldest packets + to make room for new ones as they arrive. Otherwise, + if the status is full(2) and the + bufferControlFullAction object is lockWhenFull, + then the buffer has stopped collecting packets. + + When this object is set to full(2) the probe must + not later set it to spaceAvailable(1) except in the + case of a significant gain in resources such as + an increase of bufferControlOctetsGranted. In + particular, the wrap-mode action of deleting old + packets to make room for newly arrived packets + must not affect the value of this object." + ::= { bufferControlEntry 3 } + +bufferControlFullAction OBJECT-TYPE + SYNTAX INTEGER { + lockWhenFull(1), + wrapWhenFull(2) -- FIFO + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls the action of the buffer when it + reaches the full status. When in the lockWhenFull(1) + state and a packet is added to the buffer that + fills the buffer, the bufferControlFullStatus will + be set to full(2) and this buffer will stop capturing + packets." + ::= { bufferControlEntry 4 } + +bufferControlCaptureSliceSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of octets of each packet + that will be saved in this capture buffer. + For example, if a 1500 octet packet is received by + the probe and this object is set to 500, then only + 500 octets of the packet will be stored in the + associated capture buffer. If this variable is set + to 0, the capture buffer will save as many octets + as is possible. + + This object may not be modified if the associated + bufferControlStatus object is equal to valid(1)." + DEFVAL { 100 } + ::= { bufferControlEntry 5 } + +bufferControlDownloadSliceSize OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of octets of each packet + in this capture buffer that will be returned in + an SNMP retrieval of that packet. For example, + if 500 octets of a packet have been stored in the + associated capture buffer, the associated + bufferControlDownloadOffset is 0, and this + object is set to 100, then the captureBufferPacket + object that contains the packet will contain only + the first 100 octets of the packet. + + A prudent manager will take into account possible + interoperability or fragmentation problems that may + occur if the download slice size is set too large. + In particular, conformant SNMP implementations are not + required to accept messages whose length exceeds 484 + octets, although they are encouraged to support larger + datagrams whenever feasible." + DEFVAL { 100 } + ::= { bufferControlEntry 6 } + +bufferControlDownloadOffset OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The offset of the first octet of each packet + in this capture buffer that will be returned in + an SNMP retrieval of that packet. For example, + if 500 octets of a packet have been stored in the + associated capture buffer and this object is set to + 100, then the captureBufferPacket object that + contains the packet will contain bytes starting + 100 octets into the packet." + DEFVAL { 0 } + ::= { bufferControlEntry 7 } + +bufferControlMaxOctetsRequested OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested maximum number of octets to be + saved in this captureBuffer, including any + implementation-specific overhead. If this variable + is set to -1, the capture buffer will save as many + octets as is possible. + + When this object is created or modified, the probe + should set bufferControlMaxOctetsGranted as closely + to this object as is possible for the particular probe + implementation and available resources. However, if + the object has the special value of -1, the probe + must set bufferControlMaxOctetsGranted to -1." + DEFVAL { -1 } + ::= { bufferControlEntry 8 } + +bufferControlMaxOctetsGranted OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of octets that can be + saved in this captureBuffer, including overhead. + If this variable is -1, the capture buffer will save + as many octets as possible. + + When the bufferControlMaxOctetsRequested 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. + However, if the request object has the special value + of -1, the probe must set this object to -1. + + The probe must not lower this value except as a result of + a modification to the associated + bufferControlMaxOctetsRequested object. + + When this maximum number of octets is reached + and a new packet is to be added to this + capture buffer and the corresponding + bufferControlFullAction is set to wrapWhenFull(2), + enough of the oldest packets associated with this + capture buffer shall be deleted by the agent so + that the new packet can be added. If the corresponding + bufferControlFullAction is set to lockWhenFull(1), + the new packet shall be discarded. In either case, + the probe must set bufferControlFullStatus to + full(2). + + When the value of this object changes to a value less + than the current value, entries are deleted from + the captureBufferTable associated with this + bufferControlEntry. Enough of the + oldest of these captureBufferEntries shall be + deleted by the agent so that the number of octets + used 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 + captureBufferEntries may be allowed to grow." + ::= { bufferControlEntry 9 } + +bufferControlCapturedPackets OBJECT-TYPE + SYNTAX Integer32 + UNITS "Packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets currently in this captureBuffer." + ::= { bufferControlEntry 10 } + +bufferControlTurnOnTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this capture buffer was + first turned on." + ::= { bufferControlEntry 11 } + +bufferControlOwner 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." + ::= { bufferControlEntry 12 } + +bufferControlStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this buffer Control Entry." + ::= { bufferControlEntry 13 } + +captureBufferTable OBJECT-TYPE + SYNTAX SEQUENCE OF CaptureBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of packets captured off of a channel." + ::= { capture 2 } + +captureBufferEntry OBJECT-TYPE + SYNTAX CaptureBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A packet captured off of an attached network. As an + example, an instance of the captureBufferPacketData + object might be named captureBufferPacketData.3.1783" + INDEX { captureBufferControlIndex, captureBufferIndex } + ::= { captureBufferTable 1 } + +CaptureBufferEntry ::= SEQUENCE { + captureBufferControlIndex Integer32, + captureBufferIndex Integer32, + captureBufferPacketID Integer32, + captureBufferPacketData OCTET STRING, + captureBufferPacketLength Integer32, + captureBufferPacketTime Integer32, + captureBufferPacketStatus Integer32 +} + +captureBufferControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the bufferControlEntry with which + this packet is associated." + ::= { captureBufferEntry 1 } + +captureBufferIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the captureBuffer table associated with a + particular bufferControlEntry. This index will + start at 1 and increase by one for each new packet + added with the same captureBufferControlIndex. + + Should this value reach 2147483647, the next packet + added with the same captureBufferControlIndex shall + cause this value to wrap around to 1." + ::= { captureBufferEntry 2 } + +captureBufferPacketID OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that describes the order of packets + that are received on a particular interface. + The packetID of a packet captured on an + interface is defined to be greater than the + packetID's of all packets captured previously on + the same interface. As the captureBufferPacketID + object has a maximum positive value of 2^31 - 1, + any captureBufferPacketID object shall have the + value of the associated packet's packetID mod 2^31." + ::= { captureBufferEntry 3 } + +captureBufferPacketData OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The data inside the packet, starting at the beginning + of the packet plus any offset specified in the + associated bufferControlDownloadOffset, including any + link level headers. The length of the data in this object + is the minimum of the length of the captured packet minus + the offset, the length of the associated + bufferControlCaptureSliceSize minus the offset, and the + associated bufferControlDownloadSliceSize. If this minimum + is less than zero, this object shall have a length of zero." + ::= { captureBufferEntry 4 } + +captureBufferPacketLength OBJECT-TYPE + SYNTAX Integer32 + UNITS "Octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual length (off the wire) of the packet stored + in this entry, including FCS octets." + ::= { captureBufferEntry 5 } + +captureBufferPacketTime OBJECT-TYPE + SYNTAX Integer32 + UNITS "Milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of milliseconds that had passed since + this capture buffer was first turned on when this + packet was captured." + ::= { captureBufferEntry 6 } + +captureBufferPacketStatus OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the error status of this packet. + + The value of this object is defined in the same way as + filterPktStatus. The value is a sum. This sum + initially takes the value zero. Then, for each + error, E, that has been discovered in this packet, + 2 raised to a value representing E is added to the sum. + + The errors defined for a packet captured off of an + Ethernet interface are as follows: + + bit # Error + 0 Packet is longer than 1518 octets + 1 Packet is shorter than 64 octets + 2 Packet experienced a CRC or Alignment error + 3 First packet in this capture buffer after + it was detected that some packets were + not processed correctly. + 4 Packet's order in buffer is only approximate + (May only be set for packets sent from + the probe) + + For example, an Ethernet fragment would have a + value of 6 (2^1 + 2^2). + + As this MIB is expanded to new media types, this object + will have other media-specific errors defined." + ::= { captureBufferEntry 7 } + +-- The Event Group + +-- Implementation of the Event group is optional. +-- Consult the MODULE-COMPLIANCE macro for the authoritative +-- conformance information for this MIB. +-- +-- The Event group controls the generation and notification +-- of events from this device. Each entry in the eventTable +-- describes the parameters of the event that can be triggered. +-- Each event entry is fired by an associated condition located +-- elsewhere in the MIB. An event entry may also be associated +-- with a function elsewhere in the MIB that will be executed +-- when the event is generated. For example, a channel may +-- be turned on or off by the firing of an event. +-- +-- Each eventEntry may optionally specify that a log entry +-- be created on its behalf whenever the event occurs. +-- Each entry may also specify that notification should +-- occur by way of SNMP trap messages. In this case, the +-- community for the trap message is given in the associated +-- eventCommunity object. The enterprise and specific trap +-- fields of the trap are determined by the condition that +-- triggered the event. Two traps are defined: risingAlarm and +-- fallingAlarm. If the eventTable is triggered by a condition +-- specified elsewhere, the enterprise and specific trap fields +-- must be specified for traps generated for that condition. + +eventTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of events to be generated." + ::= { event 1 } + +eventEntry OBJECT-TYPE + SYNTAX EventEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that describe an event to be generated + when certain conditions are met. As an example, an instance + of the eventLastTimeSent object might be named + eventLastTimeSent.6" + INDEX { eventIndex } + ::= { eventTable 1 } + +EventEntry ::= SEQUENCE { + eventIndex Integer32, + eventDescription DisplayString, + eventType INTEGER, + eventCommunity OCTET STRING, + eventLastTimeSent TimeTicks, + eventOwner OwnerString, + eventStatus EntryStatus +} + +eventIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + event table. Each such entry defines one event that + is to be generated when the appropriate conditions + occur." + ::= { eventEntry 1 } + +eventDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A comment describing this event entry." + ::= { eventEntry 2 } + +eventType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + log(2), + snmptrap(3), -- send an SNMP trap + logandtrap(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of notification that the probe will make + about this event. In the case of log, an entry is + made in the log table for each event. In the case of + snmp-trap, an SNMP trap is sent to one or more + management stations." + ::= { eventEntry 3 } + +eventCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If an SNMP trap is to be sent, it will be sent to + the SNMP community specified by this octet string." + ::= { eventEntry 4 } + +eventLastTimeSent OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this event + entry last generated an event. If this entry has + not generated any events, this value will be + zero." + ::= { eventEntry 5 } + +eventOwner 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. + + If this object contains a string starting with 'monitor' + and has associated entries in the log table, all connected + management stations should retrieve those log entries, + as they may have significance to all management stations + connected to this device" + ::= { eventEntry 6 } + +eventStatus OBJECT-TYPE + SYNTAX EntryStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this event entry. + + If this object is not equal to valid(1), all associated + log entries shall be deleted by the agent." + ::= { eventEntry 7 } + +-- +logTable OBJECT-TYPE + SYNTAX SEQUENCE OF LogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of events that have been logged." + ::= { event 2 } + +logEntry OBJECT-TYPE + SYNTAX LogEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of data describing an event that has been + logged. For example, an instance of the logDescription + object might be named logDescription.6.47" + INDEX { logEventIndex, logIndex } + ::= { logTable 1 } + +LogEntry ::= SEQUENCE { + logEventIndex Integer32, + logIndex Integer32, + logTime TimeTicks, + logDescription DisplayString +} + +logEventIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The event entry that generated this log + entry. The log identified by a particular + value of this index is associated with the same + eventEntry as identified by the same value + of eventIndex." + ::= { logEntry 1 } + +logIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry + in the log table amongst those generated by the + same eventEntries. These indexes are + assigned beginning with 1 and increase by one + with each new log entry. The association + between values of logIndex and logEntries + is fixed for the lifetime of each logEntry. + The agent may choose to delete the oldest + instances of logEntry as required because of + lack of memory. It is an implementation-specific + matter as to when this deletion may occur." + ::= { logEntry 2 } + +logTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this log entry was created." + ::= { logEntry 3 } + +logDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An implementation dependent description of the + event that activated this log entry." + ::= { logEntry 4 } + +-- Remote Network Monitoring Traps + +rmonEventsV2 OBJECT-IDENTITY + STATUS current + DESCRIPTION "Definition point for RMON notifications." + ::= { rmon 0 } + +risingAlarm NOTIFICATION-TYPE + OBJECTS { alarmIndex, alarmVariable, alarmSampleType, + alarmValue, alarmRisingThreshold } + STATUS current + DESCRIPTION + "The SNMP trap that is generated when an alarm + entry crosses its rising threshold and generates + an event that is configured for sending SNMP + traps." + ::= { rmonEventsV2 1 } + +fallingAlarm NOTIFICATION-TYPE + OBJECTS { alarmIndex, alarmVariable, alarmSampleType, + alarmValue, alarmFallingThreshold } + STATUS current + DESCRIPTION + "The SNMP trap that is generated when an alarm + entry crosses its falling threshold and generates + an event that is configured for sending SNMP + traps." + ::= { rmonEventsV2 2 } + +-- Conformance information + +rmonCompliances OBJECT IDENTIFIER ::= { rmonConformance 9 } +rmonGroups OBJECT IDENTIFIER ::= { rmonConformance 10 } + +-- Compliance Statements +rmonCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The requirements for conformance to the RMON MIB. At least + one of the groups in this module must be implemented to + conform to the RMON MIB. Implementations of this MIB + must also implement the system group of MIB-II [16] and the + IF-MIB [17]." + MODULE -- this module + + GROUP rmonEtherStatsGroup + DESCRIPTION + "The RMON Ethernet Statistics Group is optional." + + GROUP rmonHistoryControlGroup + DESCRIPTION + "The RMON History Control Group is optional." + + GROUP rmonEthernetHistoryGroup + DESCRIPTION + "The RMON Ethernet History Group is optional." + + GROUP rmonAlarmGroup + DESCRIPTION + "The RMON Alarm Group is optional." + + GROUP rmonHostGroup + DESCRIPTION + "The RMON Host Group is mandatory when the + rmonHostTopNGroup is implemented." + + GROUP rmonHostTopNGroup + DESCRIPTION + "The RMON Host Top N Group is optional." + + GROUP rmonMatrixGroup + DESCRIPTION + "The RMON Matrix Group is optional." + + GROUP rmonFilterGroup + DESCRIPTION + "The RMON Filter Group is mandatory when the + rmonPacketCaptureGroup is implemented." + + GROUP rmonPacketCaptureGroup + DESCRIPTION + "The RMON Packet Capture Group is optional." + + GROUP rmonEventGroup + DESCRIPTION + "The RMON Event Group is mandatory when the + rmonAlarmGroup is implemented." + ::= { rmonCompliances 1 } + + rmonEtherStatsGroup OBJECT-GROUP + OBJECTS { + etherStatsIndex, etherStatsDataSource, + etherStatsDropEvents, etherStatsOctets, etherStatsPkts, + etherStatsBroadcastPkts, etherStatsMulticastPkts, + etherStatsCRCAlignErrors, etherStatsUndersizePkts, + etherStatsOversizePkts, etherStatsFragments, + etherStatsJabbers, etherStatsCollisions, + etherStatsPkts64Octets, etherStatsPkts65to127Octets, + etherStatsPkts128to255Octets, + etherStatsPkts256to511Octets, + etherStatsPkts512to1023Octets, + etherStatsPkts1024to1518Octets, + etherStatsOwner, etherStatsStatus + } + STATUS current + DESCRIPTION + "The RMON Ethernet Statistics Group." + ::= { rmonGroups 1 } + + rmonHistoryControlGroup OBJECT-GROUP + OBJECTS { + historyControlIndex, historyControlDataSource, + historyControlBucketsRequested, + historyControlBucketsGranted, historyControlInterval, + historyControlOwner, historyControlStatus + } + STATUS current + DESCRIPTION + "The RMON History Control Group." + ::= { rmonGroups 2 } + + rmonEthernetHistoryGroup OBJECT-GROUP + OBJECTS { + etherHistoryIndex, etherHistorySampleIndex, + etherHistoryIntervalStart, etherHistoryDropEvents, + etherHistoryOctets, etherHistoryPkts, + etherHistoryBroadcastPkts, etherHistoryMulticastPkts, + etherHistoryCRCAlignErrors, etherHistoryUndersizePkts, + etherHistoryOversizePkts, etherHistoryFragments, + etherHistoryJabbers, etherHistoryCollisions, + etherHistoryUtilization + } + STATUS current + DESCRIPTION + "The RMON Ethernet History Group." + ::= { rmonGroups 3 } + + rmonAlarmGroup OBJECT-GROUP + OBJECTS { + alarmIndex, alarmInterval, alarmVariable, + alarmSampleType, alarmValue, alarmStartupAlarm, + alarmRisingThreshold, alarmFallingThreshold, + alarmRisingEventIndex, alarmFallingEventIndex, + alarmOwner, alarmStatus + } + STATUS current + DESCRIPTION + "The RMON Alarm Group." + ::= { rmonGroups 4 } + + rmonHostGroup OBJECT-GROUP + OBJECTS { + hostControlIndex, hostControlDataSource, + hostControlTableSize, hostControlLastDeleteTime, + hostControlOwner, hostControlStatus, + hostAddress, hostCreationOrder, hostIndex, + hostInPkts, hostOutPkts, hostInOctets, + hostOutOctets, hostOutErrors, hostOutBroadcastPkts, + hostOutMulticastPkts, hostTimeAddress, + hostTimeCreationOrder, hostTimeIndex, + hostTimeInPkts, hostTimeOutPkts, hostTimeInOctets, + hostTimeOutOctets, hostTimeOutErrors, + hostTimeOutBroadcastPkts, hostTimeOutMulticastPkts + } + STATUS current + DESCRIPTION + "The RMON Host Group." + ::= { rmonGroups 5 } + + rmonHostTopNGroup OBJECT-GROUP + OBJECTS { + hostTopNControlIndex, hostTopNHostIndex, + hostTopNRateBase, hostTopNTimeRemaining, + hostTopNDuration, hostTopNRequestedSize, + hostTopNGrantedSize, hostTopNStartTime, + hostTopNOwner, hostTopNStatus, + hostTopNReport, hostTopNIndex, + hostTopNAddress, hostTopNRate + } + STATUS current + DESCRIPTION + "The RMON Host Top 'N' Group." + ::= { rmonGroups 6 } + + rmonMatrixGroup OBJECT-GROUP + OBJECTS { + matrixControlIndex, matrixControlDataSource, + matrixControlTableSize, matrixControlLastDeleteTime, + matrixControlOwner, matrixControlStatus, + matrixSDSourceAddress, matrixSDDestAddress, + matrixSDIndex, matrixSDPkts, + matrixSDOctets, matrixSDErrors, + matrixDSSourceAddress, matrixDSDestAddress, + matrixDSIndex, matrixDSPkts, + matrixDSOctets, matrixDSErrors + } + STATUS current + DESCRIPTION + "The RMON Matrix Group." + ::= { rmonGroups 7 } + + rmonFilterGroup OBJECT-GROUP + OBJECTS { + filterIndex, filterChannelIndex, filterPktDataOffset, + filterPktData, filterPktDataMask, + filterPktDataNotMask, filterPktStatus, + filterPktStatusMask, filterPktStatusNotMask, + filterOwner, filterStatus, + channelIndex, channelIfIndex, channelAcceptType, + channelDataControl, channelTurnOnEventIndex, + channelTurnOffEventIndex, channelEventIndex, + channelEventStatus, channelMatches, + channelDescription, channelOwner, channelStatus + } + STATUS current + DESCRIPTION + "The RMON Filter Group." + ::= { rmonGroups 8 } + + rmonPacketCaptureGroup OBJECT-GROUP + OBJECTS { + bufferControlIndex, bufferControlChannelIndex, + bufferControlFullStatus, bufferControlFullAction, + bufferControlCaptureSliceSize, + bufferControlDownloadSliceSize, + bufferControlDownloadOffset, + bufferControlMaxOctetsRequested, + bufferControlMaxOctetsGranted, + bufferControlCapturedPackets, + bufferControlTurnOnTime, + bufferControlOwner, bufferControlStatus, + captureBufferControlIndex, captureBufferIndex, + captureBufferPacketID, captureBufferPacketData, + captureBufferPacketLength, captureBufferPacketTime, + captureBufferPacketStatus + } + STATUS current + DESCRIPTION + "The RMON Packet Capture Group." + ::= { rmonGroups 9 } + + rmonEventGroup OBJECT-GROUP + OBJECTS { + eventIndex, eventDescription, eventType, + eventCommunity, eventLastTimeSent, + eventOwner, eventStatus, + logEventIndex, logIndex, logTime, + logDescription + } + STATUS current + DESCRIPTION + "The RMON Event Group." + ::= { rmonGroups 10 } + + rmonNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { risingAlarm, fallingAlarm } + STATUS current + DESCRIPTION + "The RMON Notification Group." + ::= { rmonGroups 11 } +END diff --git a/mibs/ietf/RMON2-MIB b/mibs/ietf/RMON2-MIB new file mode 100644 index 0000000..31ec04e --- /dev/null +++ b/mibs/ietf/RMON2-MIB @@ -0,0 +1,6019 @@ +RMON2-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, + Gauge32, IpAddress, TimeTicks, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, DisplayString, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-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 "200605020000Z" -- May 2, 2006 + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: " + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices." + + REVISION "200605020000Z" -- May 2, 2006 + DESCRIPTION + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics." + + REVISION "200207080000Z" -- 08 July, 2002 + DESCRIPTION + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications." + + REVISION "199605270000Z" -- 27 May, 1996 + DESCRIPTION + "Original version. Published as RFC 2021." + ::= { mib-2 16 } + +-- { rmon 1 } through { rmon 10 } are defined in RMON and +-- the Token Ring RMON MIB [RFC1513] + + 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 that 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 value of the + sysUpTime object at 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. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects." + SYNTAX TimeTicks + +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. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk." + + 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 [RFC2863], 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 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex Integer32, + protocolDirDescr DisplayString, + protocolDirType BITS, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..128)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner 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 that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 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 + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether 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 (SIZE (1..32)) + 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 that 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 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 this protocol directory entry can be extended + by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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, 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 + 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, 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that 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 and 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 of this protocol type received + without errors. 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 of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that 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 mappings from network + layer address to physical address to interface. + + 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 mappings from network layer address to physical + address to interface. + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE (1..255)) + 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 [RFC2863], 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 [RFC2108], 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 that 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 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations." + 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 (SIZE (1..255)) + 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 + octets in packets that contained errors. + + Note that 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 + octets in packets that contained errors. + + Note that 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 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 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 that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE (1..255)) + 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 (SIZE (1..255)) + 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 octets in packets that + contained errors. + + Note that 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 that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE (1..255)) + 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 (SIZE (1..255)) + 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 octets in packets that + contained errors. + + Note that 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 topN 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 topN 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), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object." + ::= { 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 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 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 topN 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 whether a report was missed." + ::= { 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 (SIZE (1..255)) + 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 (SIZE (1..255)) + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets in packets that + contained errors. + + Note that 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 octets in packets that + contained errors. + + Note that 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 that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets + in packets that contained errors. + + Note that 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 that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets + in packets that contained errors. + + Note that 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 topN 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 topN 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), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + + + + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets 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 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 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 topN 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 whether a report was missed." + ::= { 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 (SIZE (1..255)) + 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 (SIZE (1..255)) + 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 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 + 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 to 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. See USM [RFC3414] and VACM [RFC3415] for more + information. + + 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 that 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 that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + 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)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, 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 the 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 store 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, i.e., + 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 OCTET STRING (SIZE (0..255)) + +probeCapabilities OBJECT-TYPE + 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 + time zone information (fields 8-10) is not + present, and that 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 to 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 deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { + notDownloading(1), + downloadToPROM(2), + downloadToRAM(3) + } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), 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(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) 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). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { 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 deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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, + serialModemInitString ControlString, + serialModemHangUpString ControlString, + serialModemConnectResp DisplayString, + serialModemNoConnectResp DisplayString, + serialDialoutTimeout Integer32, + + + + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { + direct(1), + modem(2) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of incoming connection to be expected on this + serial interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { + other(1), + slip(2), + ppp(3) + } + MAX-ACCESS read-create + STATUS deprecated + 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 deprecated + 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 deprecated + + + + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + 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 deprecated + 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 deprecated + 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 deprecated + 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 deprecated + DESCRIPTION + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + 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 is 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 them very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + + + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + 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 is 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 them very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + 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-write + STATUS deprecated + 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), as long as no access control mechanism +-- (e.g., VACM) prohibits sending to one or more of the destinations. +-- 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 deprecated + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entry includes a destination IP address to which + traps are sent 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 deprecated + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-create + STATUS deprecated + 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, as long as no access control mechanism + precludes it (e.g., VACM). + + 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 deprecated + DESCRIPTION + "The protocol with which this trap is to be sent." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The destination address for 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 deprecated + 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 deprecated + 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 deprecated + DESCRIPTION + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + 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 deprecated + DESCRIPTION + + + + "The type of outgoing connection to be made. 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 deprecated + DESCRIPTION + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + 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 deprecated + 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 is a zero-length string + or cannot be correctly parsed as a ConnectString, 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 6 } + + + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 deprecated + + + + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 } + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { + nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2) + } + DESCRIPTION + + + + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]." + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + ::= { 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 } + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { + nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2) + } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + OBJECT alMatrixTopNControlRateBase + SYNTAX INTEGER { + alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), + alMatrixTopNAllOctets(4) + } + DESCRIPTION + "Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase." + + GROUP rmon1EnhancementGroup + DESCRIPTION + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]." + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + ::= { 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 and controls 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 deprecated + DESCRIPTION + "This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { 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 deprecated + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 13 } +END diff --git a/mibs/ietf/ROHC-MIB b/mibs/ietf/ROHC-MIB new file mode 100644 index 0000000..1ec8213 --- /dev/null +++ b/mibs/ietf/ROHC-MIB @@ -0,0 +1,1197 @@ +ROHC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, Counter32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + TEXTUAL-CONVENTION, TruthValue, + TimeInterval, DateAndTime + FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + + ifIndex + FROM IF-MIB; -- [RFC2863] + +rohcMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "IETF Robust Header Compression Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/rohc-charter.html + + Mailing Lists: + General Discussion: rohc@ietf.org + To Subscribe: rohc-request@ietf.org + In Body: subscribe your_email_address + + Editor: + Juergen Quittek + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + + + + 69221 Heidelberg + Germany + Tel: +49 6221 90511-15 + EMail: quittek@netlab.nec.de" + DESCRIPTION + "This MIB module defines a set of basic objects for + monitoring and configuring robust header compression. + The module covers information about running instances + of ROHC (compressors or decompressors) at IP interfaces. + + Information about compressor contexts and decompressor + contexts has different structure for different profiles. + Therefore it is not provided by this MIB module, but by + individual modules for different profiles. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3816. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION "Initial version, published as RFC 3816." + ::= { mib-2 112 } + +RohcChannelIdentifier ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A number identifying a channel. + The value of 0 must not be used as identifier + of an existing channel." + SYNTAX Unsigned32 (1..4294967295) + +RohcChannelIdentifierOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A number identifying a channel. + The value of 0 is indicates that + no channel is identified." + SYNTAX Unsigned32 (0..4294967295) + +RohcCompressionRatio ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A number indicating a compression ratio over + + + + a set of bytes. The value is defined as + 1000 * bytes(compressed) / bytes(original) + rounded to the next integer value. + + Note that compressed sets of bytes can be larger + than the corresponding uncompressed ones. + Therefore, the number can be greater than 1000." + SYNTAX Unsigned32 + +-- +-- The groups defined within this MIB module: +-- + +rohcObjects OBJECT IDENTIFIER ::= { rohcMIB 1 } +rohcConformance OBJECT IDENTIFIER ::= { rohcMIB 2 } + +-- +-- The ROHC Instance group lists properties of ROHC +-- instances in the rohcInstanceTable, about the channels used +-- by the instances in the rohcChanneltable and about the profiles +-- available at the instances in the rohcProfileTable. +-- + +rohcInstanceObjects OBJECT IDENTIFIER ::= { rohcObjects 1 } + +-- +-- Channel Table +-- +-- Listing all channels used for ROHC data channel +-- and/or as feedback channel. +-- + +rohcChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes all ROHC channels + per interface." + ::= { rohcInstanceObjects 1 } + +rohcChannelEntry OBJECT-TYPE + SYNTAX RohcChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular script. Every script that + is stored in non-volatile memory is required to appear in + + + + this script table. + + Note, that the rohcChannelID identifies the channel + uniquely. The ifIndex is part of the index of this table + just in order to allow addressing channels per interface." + INDEX { ifIndex, rohcChannelID } + ::= { rohcChannelTable 1 } + +RohcChannelEntry ::= SEQUENCE { + rohcChannelID RohcChannelIdentifier, + rohcChannelType INTEGER, + rohcChannelFeedbackFor RohcChannelIdentifierOrZero, + rohcChannelDescr SnmpAdminString, + rohcChannelStatus INTEGER +} + +rohcChannelID OBJECT-TYPE + SYNTAX RohcChannelIdentifier + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this channel. The value is REQUIRED to be unique + per ROHC MIB implementation independent of the associated + interface. + + The value is REQUIRED to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization. It is RECOMMENDED that the + value persist across such re-initializations." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcChannelEntry 2 } + +rohcChannelType OBJECT-TYPE + SYNTAX INTEGER { + notInUse(1), + rohc(2), + dedicatedFeedback(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Type of usage of the channel. A channel might be currently + not in use for ROHC or feedback, it might be in use as + a ROHC channel carrying packets and optional piggy-backed + feedback, or it might be used as a dedicated feedback + channel exclusively carrying feedback." + + + + ::= { rohcChannelEntry 3 } + +rohcChannelFeedbackFor OBJECT-TYPE + SYNTAX RohcChannelIdentifierOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of another channel of this interface for which + the channel serves as feedback channel. + + If no feedback information is transferred on this channel, + then the value of this ID is 0. If the channel type is set + to notInUse(1), then the value of this object must be 0. + If the channel type is rohc(2) and the value of this object + is a valid channel ID, then feedback information is + piggy-backed on the ROHC channel. If the channel type is + dedicatedFeedback(3), then feedback is transferred on this + channel and the value of this object MUST be different from + 0 and MUST identify an existing ROHC channel." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcChannelEntry 4 } + +rohcChannelDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the channel." + ::= { rohcChannelEntry 5 } + +rohcChannelStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the channel." + ::= { rohcChannelEntry 6 } + +-- +-- Instances of ROHC +-- +-- This table lists properties of running instances of ROHC +-- compressors and decompressors at the managed node. +-- + + + + +rohcInstanceTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists properties of running instances + of robust header compressors and decompressors + at IP interfaces. It is indexed by interface number, + the type of instance (compressor or decompressor), + and the ID of the channel used by the instance as + ROHC channel. + + Note that the rohcChannelID uniquely identifies an + instance. The ifIndex and rohcInstanceType are part + of the index, because it simplifies accessing instances + per interface and for addressing either compressors or + decompressors only." + ::= { rohcInstanceObjects 2 } + +rohcInstanceEntry OBJECT-TYPE + SYNTAX RohcInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular instance + of a robust header compressor or decompressor." + INDEX { ifIndex, rohcInstanceType, rohcChannelID } + ::= { rohcInstanceTable 1 } + +RohcInstanceEntry ::= SEQUENCE { + rohcInstanceType INTEGER, + rohcInstanceFBChannelID RohcChannelIdentifierOrZero, + rohcInstanceVendor OBJECT IDENTIFIER, + rohcInstanceVersion SnmpAdminString, + rohcInstanceDescr SnmpAdminString, + rohcInstanceClockRes Unsigned32, + rohcInstanceMaxCID Unsigned32, + rohcInstanceLargeCIDs TruthValue, + rohcInstanceMRRU Unsigned32, + rohcInstanceContextStorageTime TimeInterval, + rohcInstanceStatus INTEGER, + rohcInstanceContextsTotal Counter32, + rohcInstanceContextsCurrent Unsigned32, + rohcInstancePackets Counter32, + rohcInstanceIRs Counter32, + rohcInstanceIRDYNs Counter32, + rohcInstanceFeedbacks Counter32, + + + + rohcInstanceCompressionRatio RohcCompressionRatio +} + +rohcInstanceType OBJECT-TYPE + SYNTAX INTEGER { + compressor(1), + decompressor(2) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Type of the instance of ROHC. It is either a + compressor instance or a decompressor instance." + ::= { rohcInstanceEntry 2 } + +rohcInstanceFBChannelID OBJECT-TYPE + SYNTAX RohcChannelIdentifierOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifier of the channel used for feedback. + If no feedback channel is used, the value of + this object is 0 ." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceEntry 4 } + +rohcInstanceVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifier that identifies the vendor who + provides the implementation of robust header description. + This object identifier SHALL point to the object identifier + directly below the enterprise object identifier + {1 3 6 1 4 1} allocated for the vendor. The value must be + the object identifier {0 0} if the vendor is not known." + ::= { rohcInstanceEntry 5 } + +rohcInstanceVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the implementation of robust header + compression. The zero-length string shall be used if the + implementation does not have a version number. + + + + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { rohcInstanceEntry 6 } + +rohcInstanceDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the implementation." + ::= { rohcInstanceEntry 7 } + +rohcInstanceClockRes OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the system clock resolution in + units of milliseconds. A zero (0) value means that there + is no clock available." + ::= { rohcInstanceEntry 8 } + +rohcInstanceMaxCID OBJECT-TYPE + SYNTAX Unsigned32 (1..16383) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The highest context ID number to be used by the + compressor. Note that this parameter is not coupled to, + but in effect further constrained by, + rohcChannelLargeCIDs." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceEntry 9 } + +rohcInstanceLargeCIDs OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When retrieved, this boolean object returns false if + the short CID representation (0 bytes or 1 prefix byte, + covering CID 0 to 15) is used; it returns true, if the + embedded CID representation (1 or 2 embedded CID bytes + covering CID 0 to 16383) is used." + + + + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceEntry 10 } + +rohcInstanceMRRU OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum reconstructed reception unit. This is the + size of the largest reconstructed unit in octets that + the decompressor is expected to reassemble from + segments (see RFC 3095, Section 5.2.5). Note that this + size includes the CRC. If MRRU is negotiated to be 0, + no segment headers are allowed on the channel." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceEntry 11 } + +rohcInstanceContextStorageTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates the default maximum amount of time + information on a context belonging to this instance is kept + as entry in the rohcContextTable after the context is + expired or terminated. The value of this object is used + to initialize rohcContexStorageTime object when a new + context is created. + Changing the value of an rohcInstanceContextStorageTime + instance does not affect any entry of the rohcContextTable + created previously. + ROHC-MIB implementations SHOULD store the set value of this + object persistently." + DEFVAL { 360000 } + ::= { rohcInstanceEntry 12 } + +rohcInstanceStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Status of the instance of ROHC." + + + + ::= { rohcInstanceEntry 13 } + +rohcInstanceContextsTotal OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Counter of all contexts created by this instance. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + ::= { rohcInstanceEntry 14 } + +rohcInstanceContextsCurrent OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of currently active contexts created by this + instance." + ::= { rohcInstanceEntry 15 } + +rohcInstancePackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Counter of all packets passing this instance. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + ::= { rohcInstanceEntry 16 } + +rohcInstanceIRs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all IR packets that are either sent + or received by this instance. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + + + + value of ifCounterDiscontinuityTime." + REFERENCE + "RFC 3095, Section 5.7.7.1" + ::= { rohcInstanceEntry 17 } + +rohcInstanceIRDYNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all IR-DYN packets that are either sent + or received by this instance. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "RFC 3095, Section 5.7.7.2" + ::= { rohcInstanceEntry 18 } + +rohcInstanceFeedbacks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all feedbacks that are either sent + or received by this instance. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime." + ::= { rohcInstanceEntry 19 } + +rohcInstanceCompressionRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the compression ratio so far over all + packets on the channel served by this instance. The + compression is computed over all bytes of the IP packets + including the IP header but excluding all lower layer + headers." + ::= { rohcInstanceEntry 20 } + +-- + + + +-- Profile Table +-- + +rohcProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists a set of profiles supported by the + instance." + REFERENCE + "RFC 3095, Section 5.1.1" + ::= { rohcInstanceObjects 3 } + +rohcProfileEntry OBJECT-TYPE + SYNTAX RohcProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular profile supported by + the instance. It is indexed by the rohcChannelID + identifying the instance and by the rohcProfile." + INDEX { rohcChannelID, rohcProfile } + ::= { rohcProfileTable 1 } + +RohcProfileEntry ::= SEQUENCE { + rohcProfile Unsigned32, + rohcProfileVendor OBJECT IDENTIFIER, + rohcProfileVersion SnmpAdminString, + rohcProfileDescr SnmpAdminString, + rohcProfileNegotiated TruthValue +} + +rohcProfile OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifier of a profile supported. For a listing of + possible profile values, see the IANA registry for + 'RObust Header Compression (ROHC) Profile Identifiers' + at http://www.iana.org/assignments/rohc-pro-ids" + ::= { rohcProfileEntry 2 } + +rohcProfileVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "An object identifier that identifies the vendor who + provides the implementation of robust header description. + This object identifier SHALL point to the object identifier + directly below the enterprise object identifier + {1 3 6 1 4 1} allocated for the vendor. The value must be + the object identifier {0 0} if the vendor is not known." + ::= { rohcProfileEntry 3 } + +rohcProfileVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the implementation of robust header + compression. The zero-length string shall be used if the + implementation does not have a version number. + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { rohcProfileEntry 4 } + +rohcProfileDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the implementation." + ::= { rohcProfileEntry 5 } + +rohcProfileNegotiated OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When retrieved, this boolean object returns true + if the profile has been negotiated to be used at + the instance, i.e., is supported also be the + corresponding compressor/decompressor." + ::= { rohcProfileEntry 6 } + +-- +-- Context Table +-- + +rohcContextTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcContextEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes all compressor contexts + per instance." + ::= { rohcObjects 2 } + +rohcContextEntry OBJECT-TYPE + SYNTAX RohcContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular compressor context." + INDEX { + rohcChannelID, + rohcContextCID + } + ::= { rohcContextTable 1 } + +RohcContextEntry ::= SEQUENCE { + rohcContextCID Unsigned32, + rohcContextCIDState INTEGER, + rohcContextProfile Unsigned32, + rohcContextDecompressorDepth Unsigned32, + rohcContextStorageTime TimeInterval, + rohcContextActivationTime DateAndTime, + rohcContextDeactivationTime DateAndTime, + rohcContextPackets Counter32, + rohcContextIRs Counter32, + rohcContextIRDYNs Counter32, + rohcContextFeedbacks Counter32, + rohcContextDecompressorFailures Counter32, + rohcContextDecompressorRepairs Counter32, + rohcContextAllPacketsRatio RohcCompressionRatio, + rohcContextAllHeadersRatio RohcCompressionRatio, + rohcContextAllPacketsMeanSize Unsigned32, + rohcContextAllHeadersMeanSize Unsigned32, + rohcContextLastPacketsRatio RohcCompressionRatio, + rohcContextLastHeadersRatio RohcCompressionRatio, + rohcContextLastPacketsMeanSize Unsigned32, + rohcContextLastHeadersMeanSize Unsigned32 +} + +rohcContextCID OBJECT-TYPE + SYNTAX Unsigned32 (0..16383) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The context identifier (CID) of this context." + REFERENCE + "RFC 3095, Sections 5.1.1 and 5.1.3" + ::= { rohcContextEntry 2 } + +rohcContextCIDState OBJECT-TYPE + SYNTAX INTEGER { + unused(1), + active(2), + expired(3), + terminated(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of the CID. When a CID is assigned to a context, + its state changes from `unused' to `active'. The active + context may stop operation due to some explicit + signalling or after observing no packet for some specified + time. In the first case then the CID state changes to + `terminated', in the latter case it changes to `expired'. + If the CID is re-used again for another context, the + state changes back to `active'." + ::= { rohcContextEntry 3 } + +rohcContextProfile OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifier of the profile for this context. + The profile is identified by its index in the + rohcProfileTable for this instance. There MUST exist a + corresponding entry in the rohcProfileTable using the + value of rohcContextProfile as second part of the index + (and using the same rohcChannelID as first part of the + index)." + ::= { rohcContextEntry 4 } + +rohcContextDecompressorDepth OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether reverse decompression, for + example as described in RFC 3095, Section 6.1, is used + on this channel or not, and if used, to what extent. + + + + + Its value is only valid for decompressor contexts, i.e., + if rohcInstanceType has the value decompressor(2). For + compressor contexts where rohcInstanceType has the value + compressor(1), the value of this object is irrelevant + and MUST be set to zero (0). + + The value of the reverse decompression depth indicates + the maximum number of packets that are buffered, and thus + possibly be reverse decompressed by the decompressor. + A zero (0) value means that reverse decompression is not + used." + ::= { rohcContextEntry 5 } + +rohcContextStorageTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object specifies how long this row + can exist in the rohcContextTable after the + rohcContextCIDState switched to expired(3) or + terminated(4). This object returns the remaining time + that the row may exist before it is aged out. The object + is initialized with the value of the associated + rohcContextStorageTime object. After expiration or + termination of the context, the value of this object ticks + backwards. The entry in the rohcContextTable is destroyed + when the value reaches 0. + + The value of this object may be set in order to increase or + reduce the remaining time that the row may exist. Setting + the value to 0 will destroy this entry as soon as the + rochContextCIDState has the value expired(3) or + terminated(4). + + Note that there is no guarantee that the row is stored as + long as this object indicates. In case of limited CID + space, the instance may re-use a CID before the storage + time of the corresponding row in rohcContextTable reaches + the value of 0. In this case the information stored in this + row is not anymore available." + ::= { rohcContextEntry 6 } + +rohcContextActivationTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The date and time when the context started to be able to + compress packets or decompress packets, respectively. + The value '0000000000000000'H is returned if the context + has not been activated yet." + DEFVAL { '0000000000000000'H } + ::= { rohcContextEntry 7 } + +rohcContextDeactivationTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the context stopped being able to + compress packets or decompress packets, respectively, + because it expired or was terminated for other reasons. + The value '0000000000000000'H is returned if the context + has not been deactivated yet." + DEFVAL { '0000000000000000'H } + ::= { rohcContextEntry 8 } + +rohcContextPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all packets passing this context. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + ::= { rohcContextEntry 9 } + +rohcContextIRs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all IR packets sent or received, + respectively, by this context. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + + + + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + REFERENCE + "RFC 3095, Section 5.7.7.1" + ::= { rohcContextEntry 10 } + +rohcContextIRDYNs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all IR-DYN packets sent or received, + respectively, by this context. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + REFERENCE + "RFC 3095, Section 5.7.7.2" + ::= { rohcContextEntry 11 } + +rohcContextFeedbacks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all feedbacks sent or received, + respectively, by this context. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + ::= { rohcContextEntry 12 } + +rohcContextDecompressorFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of all decompressor failures so far in this + context. The number is only valid for decompressor + contexts, i.e., if rohcInstanceType has the value + decompressor(2). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + ::= { rohcContextEntry 13 } + +rohcContextDecompressorRepairs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all context repairs so far in this + context. The number is only valid for decompressor + contexts, i.e., if rohcInstanceType has the value + decompressor(2). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable." + ::= { rohcContextEntry 14 } + +rohcContextAllPacketsRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the compression ratio so far over all + packets passing this context. The compression is computed + over all bytes of the IP packets including the IP header + but excluding all lower layer headers." + ::= { rohcContextEntry 15 } + +rohcContextAllHeadersRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object indicates the compression ratio so far over all + packet headers passing this context. The compression is + computed over all bytes of all headers that are subject to + compression for the used profile." + ::= { rohcContextEntry 16 } + +rohcContextAllPacketsMeanSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the mean compressed packet size + of all packets passing this context. The packet size + includes the IP header and payload but excludes all lower + layer headers. The mean value is given in byte rounded + to the next integer value." + ::= { rohcContextEntry 17 } + +rohcContextAllHeadersMeanSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the mean compressed packet header size + of all packets passing this context. The packet header size + is the sum of the size of all headers of a packet that are + subject to compression for the used profile. The mean value + is given in byte rounded to the next integer value." + ::= { rohcContextEntry 18 } + +rohcContextLastPacketsRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the compression ratio + concerning the last 16 packets passing this context + or concerning all packets passing this context + if they are less than 16, so far. The compression is + computed over all bytes of the IP packets including the IP + header but excluding all lower layer headers." + ::= { rohcContextEntry 19 } + +rohcContextLastHeadersRatio OBJECT-TYPE + SYNTAX RohcCompressionRatio + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object indicates the compression ratio concerning the + headers of the last 16 packets passing this context or + concerning the headers of all packets passing this context + if they are less than 16, so far. The compression is + computed over all bytes of all headers that are subject to + compression for the used profile." + ::= { rohcContextEntry 20 } + +rohcContextLastPacketsMeanSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the mean compressed packet size + concerning the last 16 packets passing this context or + concerning all packets passing this context if they are + less than 16, so far. The packet size includes the IP + header and payload but excludes all lower layer headers. + The mean value is given in byte rounded to the next + integer value." + ::= { rohcContextEntry 21 } + +rohcContextLastHeadersMeanSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the mean compressed packet header size + concerning the last 16 packets passing this context or + concerning all packets passing this context if they are + less than 16, so far. The packet header size is the sum of + the size of all headers of a packet that are subject to + compression for the used profile. The mean value is given + in byte rounded to the next integer value." + ::= { rohcContextEntry 22 } + +-- +-- conformance information +-- + +rohcCompliances OBJECT IDENTIFIER ::= { rohcConformance 1 } +rohcGroups OBJECT IDENTIFIER ::= { rohcConformance 2 } + +-- +-- compliance statements +-- + + + + + +rohcCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + the ROHC-MIB. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC2863)." + MODULE -- this module + MANDATORY-GROUPS { + rohcInstanceGroup, rohcContextGroup + } + GROUP rohcStatisticsGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcStatisticsGroup." + GROUP rohcTimerGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcTimerGroup." + OBJECT rohcInstanceContextStorageTime + MIN-ACCESS read-only + DESCRIPTION + "A compliant implementation does not have to support changing + the value of object rohcInstanceContextStorageTime." + OBJECT rohcContextStorageTime + MIN-ACCESS read-only + DESCRIPTION + "A compliant implementation does not have to support changing + the value of object rohcContextStorageTime." + GROUP rohcContextStatisticsGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcContextStatisticsGroup." + ::= { rohcCompliances 1 } + +rohcInstanceGroup OBJECT-GROUP + OBJECTS { + rohcChannelType, + rohcChannelFeedbackFor, + rohcChannelDescr, + rohcChannelStatus, + rohcInstanceFBChannelID, + rohcInstanceVendor, + + + + rohcInstanceVersion, + rohcInstanceDescr, + rohcInstanceClockRes, + rohcInstanceMaxCID, + rohcInstanceLargeCIDs, + rohcInstanceMRRU, + rohcInstanceStatus, + rohcProfileVendor, + rohcProfileVersion, + rohcProfileDescr, + rohcProfileNegotiated + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + ROHC instances, used channels and available profiles." + ::= { rohcGroups 2 } + +rohcStatisticsGroup OBJECT-GROUP + OBJECTS { + rohcInstanceContextsTotal, + rohcInstanceContextsCurrent, + rohcInstancePackets, + rohcInstanceIRs, + rohcInstanceIRDYNs, + rohcInstanceFeedbacks, + rohcInstanceCompressionRatio + } + STATUS current + DESCRIPTION + "A collection of objects providing ROHC statistics." + ::= { rohcGroups 4 } + +rohcContextGroup OBJECT-GROUP + OBJECTS { + rohcContextCIDState, + rohcContextProfile, + rohcContextDecompressorDepth + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + ROHC compressor contexts and decompressor contexts." + ::= { rohcGroups 5 } + +rohcTimerGroup OBJECT-GROUP + OBJECTS { + rohcInstanceContextStorageTime, + + + + rohcContextStorageTime, + rohcContextActivationTime, + rohcContextDeactivationTime + + } + STATUS current + DESCRIPTION + "A collection of objects providing statistical information + about ROHC compressor contexts and decompressor contexts." + ::= { rohcGroups 6 } + +rohcContextStatisticsGroup OBJECT-GROUP + OBJECTS { + rohcContextPackets, + rohcContextIRs, + rohcContextIRDYNs, + rohcContextFeedbacks, + rohcContextDecompressorFailures, + rohcContextDecompressorRepairs, + rohcContextAllPacketsRatio, + rohcContextAllHeadersRatio, + rohcContextAllPacketsMeanSize, + rohcContextAllHeadersMeanSize, + rohcContextLastPacketsRatio, + rohcContextLastHeadersRatio, + rohcContextLastPacketsMeanSize, + rohcContextLastHeadersMeanSize + } + STATUS current + DESCRIPTION + "A collection of objects providing statistical information + about ROHC compressor contexts and decompressor contexts." + ::= { rohcGroups 7 } + +END diff --git a/mibs/ietf/ROHC-RTP-MIB b/mibs/ietf/ROHC-RTP-MIB new file mode 100644 index 0000000..9c7a0a0 --- /dev/null +++ b/mibs/ietf/ROHC-RTP-MIB @@ -0,0 +1,655 @@ +ROHC-RTP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, Counter32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + + TruthValue + FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + rohcChannelID, rohcContextCID + FROM ROHC-MIB; -- [RFC3816] + +rohcRtpMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "IETF Robust Header Compression Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/rohc-charter.html + + Mailing Lists: + General Discussion: rohc@ietf.org + To Subscribe: rohc-request@ietf.org + In Body: subscribe your_email_address + + Editor: + Juergen Quittek + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69221 Heidelberg + Germany + Tel: +49 6221 90511-15 + EMail: quittek@netlab.nec.de" + DESCRIPTION + "This MIB module defines a set of objects for monitoring + and configuring RObust Header Compression (ROHC). + The objects are specific to ROHC RTP (profile 0x0001), + ROHC UDP (profile 0x0002), and ROHC ESP (profile 0x0003) + defined in RFC 3095 and for the ROHC LLA profile (profile + 0x0005) defined in RFC 3242. + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3816. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION "Initial version, published as RFC 3816." + ::= { mib-2 114 } + + + +-- +-- The groups defined within this MIB module: +-- + +rohcRtpObjects OBJECT IDENTIFIER ::= { rohcRtpMIB 1 } +rohcRtpConformance OBJECT IDENTIFIER ::= { rohcRtpMIB 2 } + +-- +-- Context Table +-- +-- The rohcRtpContextTable lists all contexts per interface +-- and instance. It extends the rohcContextTable. +-- + +rohcRtpContextTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcRtpContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes RTP profile specific + properties of compressor contexts and decompressor + contexts. It extends the rohcContextTable of the + ROHC-MIB module." + ::= { rohcRtpObjects 1 } + +rohcRtpContextEntry OBJECT-TYPE + SYNTAX RohcRtpContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular context." + INDEX { + rohcChannelID, + rohcContextCID + } + ::= { rohcRtpContextTable 1 } + +RohcRtpContextEntry ::= SEQUENCE { + rohcRtpContextState INTEGER, + rohcRtpContextMode INTEGER, + rohcRtpContextAlwaysPad TruthValue, + rohcRtpContextLargePktsAllowed TruthValue, + rohcRtpContextVerifyPeriod Unsigned32, + rohcRtpContextSizesAllowed Unsigned32, + rohcRtpContextSizesUsed Unsigned32, + rohcRtpContextACKs Counter32, + rohcRtpContextNACKs Counter32, + rohcRtpContextSNACKs Counter32, + + + rohcRtpContextNHPs Counter32, + rohcRtpContextCSPs Counter32, + rohcRtpContextCCPs Counter32, + rohcRtpContextPktsLostPhysical Counter32, + rohcRtpContextPktsLostPreLink Counter32 +} + +rohcRtpContextState OBJECT-TYPE + SYNTAX INTEGER { + initAndRefresh(1), + firstOrder(2), + secondOrder(3), + noContext(4), + staticContext(5), + fullContext(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of the context as defined in RFC 3095. States + initAndRefresh(1), firstOrder(2), and secondOrder(3) + are states of compressor contexts, states noContext(4), + staticContext(5) and fullContext(6) are states of + decompressor contexts." + REFERENCE + "RFC 3095" + ::= { rohcRtpContextEntry 3 } + +rohcRtpContextMode OBJECT-TYPE + SYNTAX INTEGER { + unidirectional(1), + optimistic(2), + reliable(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mode of the context." + REFERENCE + "RFC 3095, Section 4.4" + ::= { rohcRtpContextEntry 4 } + +rohcRtpContextAlwaysPad OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Boolean, only applicable to compressor contexts using the + + + LLA profile. If its value is true, the compressor must + pad every RHP packet with a minimum of one octet ROHC + padding. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + DEFVAL { false } + ::= { rohcRtpContextEntry 5 } + +rohcRtpContextLargePktsAllowed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Boolean, only applicable to compressor contexts using the + LLA profile. It specifies how to handle packets that do + not fit any of the preferred packet sizes specified. If + its value is true, the compressor must deliver the larger + packet as-is and must not use segmentation. If it is set + to false, the ROHC segmentation scheme must be used to + split the packet into two or more segments, and each + segment must further be padded to fit one of the preferred + packet sizes. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + DEFVAL { true } + ::= { rohcRtpContextEntry 6 } + +rohcRtpContextVerifyPeriod OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to compressor contexts + using the LLA profile. It specifies the minimum frequency + with which a packet validating the context must be sent. + This tells the compressor that a packet containing a CRC + + + field must be sent at least once every N packets, where N + is the value of the object. A value of 0 indicates that + periodical verifications are disabled. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + DEFVAL { 0 } + ::= { rohcRtpContextEntry 7 } + +rohcRtpContextSizesAllowed OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is only valid for decompressor + contexts, i.e., if rohcInstanceType of the corresponding + rohcContextEntry has the value decompressor(2). For + compressor contexts where rohcInstanceType has the value + compressor(1), this object MUST NOT be instantiated. + + This object contains the number of different packet sizes + that may be used in the context." + REFERENCE + "RFC 3095, Section 6.3.1" + ::= { rohcRtpContextEntry 8 } + +rohcRtpContextSizesUsed OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is only valid for decompressor + contexts, i.e., if rohcInstanceType of the corresponding + rohcContextEntry has the value decompressor(2). For + compressor contexts where rohcInstanceType has the value + compressor(1), this object MUST NOT be instantiated. + + This object contains the number of different packet sizes + that are used in the context." + REFERENCE + "RFC 3095, Section 6.3.1" + ::= { rohcRtpContextEntry 9 } + + + +rohcRtpContextACKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all positive feedbacks (ACK) sent or + received in this context, respectively. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB." + REFERENCE + "RFC 3095, Section 5.2.1." + ::= { rohcRtpContextEntry 10 } + +rohcRtpContextNACKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all dynamic negative feedbacks (ACK) sent + or received in this context, respectively. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB." + REFERENCE + "RFC 3095, Section 5.2.1." + ::= { rohcRtpContextEntry 11 } + +rohcRtpContextSNACKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all static negative feedbacks (ACK) sent + or received in this context, respectively. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + + + + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB." + REFERENCE + "RFC 3095, Section 5.2.1." + ::= { rohcRtpContextEntry 12 } + +rohcRtpContextNHPs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to contexts using the + LLA profile. It contains the number of all no-header + packets (NHP) sent or received in this context, + respectively. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 4.1.1." + ::= { rohcRtpContextEntry 13 } + +rohcRtpContextCSPs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to contexts using the + LLA profile. It contains the number of all context + synchronization packets (CSP) sent or received in this + context, respectively. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + + + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 4.1.2." + ::= { rohcRtpContextEntry 14 } + +rohcRtpContextCCPs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to contexts using the + LLA profile. It contains the number of all context check + packets (CCP) sent or received in this context, + respectively. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 4.1.3." + ::= { rohcRtpContextEntry 15 } + +rohcRtpContextPktsLostPhysical OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to decompressor contexts + + + using the LLA profile. It contains the number of physical + packet losses on the link between compressor and + decompressor, that have been indicated to the decompressor. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.2." + ::= { rohcRtpContextEntry 16 } + +rohcRtpContextPktsLostPreLink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to decompressor contexts + using the LLA profile. It contains the number of pre-link + packet losses on the link between compressor and + decompressor, that have been indicated to the decompressor. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.2." + ::= { rohcRtpContextEntry 17 } + + + +-- +-- Packet Sizes Table +-- +-- The rohcPacketSizeTable lists allowed, preferred, and used +-- packet sizes per compressor context. + +rohcRtpPacketSizeTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcRtpPacketSizeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists all allowed, preferred, and used packet + sizes per compressor context and channel. + + Note, that the sizes table represents implementation + parameters that are suggested by RFC 3095 and/or RFC 3242, + but that are not mandatory." + ::= { rohcRtpObjects 2 } + +rohcRtpPacketSizeEntry OBJECT-TYPE + SYNTAX RohcRtpPacketSizeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry of a particular packet size." + INDEX { + rohcChannelID, + rohcContextCID, + rohcRtpPacketSize + } + ::= { rohcRtpPacketSizeTable 1 } + +RohcRtpPacketSizeEntry ::= SEQUENCE { + rohcRtpPacketSize Unsigned32, + rohcRtpPacketSizePreferred TruthValue, + rohcRtpPacketSizeUsed TruthValue, + rohcRtpPacketSizeRestrictedType INTEGER +} + +rohcRtpPacketSize OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A packet size used as index." + ::= { rohcRtpPacketSizeEntry 3 } + +rohcRtpPacketSizePreferred OBJECT-TYPE + + + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to compressor contexts + using the LLA profile. When retrieved, it will have + the value true(1) if the packet size is preferred. + Otherwise, its value will be false(2). + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + ::= { rohcRtpPacketSizeEntry 4 } + +rohcRtpPacketSizeUsed OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to compressor contexts + using the UDP, RTP, or ESP profile. When retrieved, + it will have the value true(1) if the packet size is + used. Otherwise, its value will be false(2). + + The value of this object is only valid for UDP, RTP, + and ESP profiles, i.e., if the corresponding rohcProfile + has a value of either 0x0001, 0x0002 or 0x0003. If + the corresponding rohcProfile has a value other than + 0x0001, 0x0002 or 0x0003, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3095, Section 6.3.1" + ::= { rohcRtpPacketSizeEntry 5 } + +rohcRtpPacketSizeRestrictedType OBJECT-TYPE + SYNTAX INTEGER { + nhpOnly(1), + rhpOnly(2), + noRestrictions(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is only applicable to preferred packet + + + sizes of compressor contexts using the LLA profile. + When retrieved, it will indicate whether the packet + size is preferred for NHP only, for RHP only, or + for both of them. + + The value of this object is only valid for LLA profiles, + i.e., if the corresponding rohcProfile has a value of + 0x0005. If the corresponding rohcProfile has a value + other than 0x0005, then this object MUST NOT be + instantiated." + REFERENCE + "RFC 3242, Section 5.1.1" + ::= { rohcRtpPacketSizeEntry 6 } +-- +-- conformance information +-- + +rohcRtpCompliances OBJECT IDENTIFIER ::= { rohcRtpConformance 1 } +rohcRtpGroups OBJECT IDENTIFIER ::= { rohcRtpConformance 2 } + +-- +-- compliance statements +-- + +rohcRtpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + the ROHC-RTP-MIB. + + Note that compliance with this compliance + statement requires compliance with the + rohcCompliance MODULE-COMPLIANCE statement of the + ROHC-MIB and with the ifCompliance3 MODULE-COMPLIANCE + statement of the IF-MIB (RFC2863)." + MODULE -- this module + MANDATORY-GROUPS { + rohcRtpContextGroup + } + GROUP rohcRtpPacketSizesGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcRtpPacketSizesGroup." + GROUP rohcRtpStatisticsGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcRtpStatisticsGroup." + ::= { rohcRtpCompliances 1 } + + +rohcRtpContextGroup OBJECT-GROUP + OBJECTS { + rohcRtpContextState, + rohcRtpContextMode, + rohcRtpContextAlwaysPad, + rohcRtpContextLargePktsAllowed, + rohcRtpContextVerifyPeriod + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + ROHC RTP compressors and decompressors." + ::= { rohcRtpGroups 1 } + +rohcRtpPacketSizesGroup OBJECT-GROUP + OBJECTS { + rohcRtpContextSizesAllowed, + rohcRtpContextSizesUsed, + rohcRtpPacketSizePreferred, + rohcRtpPacketSizeUsed, + rohcRtpPacketSizeRestrictedType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + allowed and used packet sizes at a ROHC RTP compressor." + ::= { rohcRtpGroups 2 } + +rohcRtpStatisticsGroup OBJECT-GROUP + OBJECTS { + rohcRtpContextACKs, + rohcRtpContextNACKs, + rohcRtpContextSNACKs, + rohcRtpContextNHPs, + rohcRtpContextCSPs, + rohcRtpContextCCPs, + rohcRtpContextPktsLostPhysical, + rohcRtpContextPktsLostPreLink + } + STATUS current + DESCRIPTION + "A collection of objects providing ROHC compressor and + decompressor statistics." + ::= { rohcRtpGroups 3 } + +END diff --git a/mibs/ietf/ROHC-UNCOMPRESSED-MIB b/mibs/ietf/ROHC-UNCOMPRESSED-MIB new file mode 100644 index 0000000..ccdca76 --- /dev/null +++ b/mibs/ietf/ROHC-UNCOMPRESSED-MIB @@ -0,0 +1,206 @@ +ROHC-UNCOMPRESSED-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + rohcChannelID, rohcContextCID + FROM ROHC-MIB; + + + +rohcUncmprMIB MODULE-IDENTITY + LAST-UPDATED "200406030000Z" -- June 3, 2004 + ORGANIZATION "IETF Robust Header Compression Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/rohc-charter.html + + Mailing Lists: + General Discussion: rohc@ietf.org + To Subscribe: rohc-request@ietf.org + In Body: subscribe your_email_address + + Editor: + Juergen Quittek + NEC Europe Ltd. + Network Laboratories + Kurfuersten-Anlage 36 + 69221 Heidelberg + Germany + Tel: +49 6221 90511-15 + EMail: quittek@netlab.nec.de" + DESCRIPTION + "This MIB module defines a set of objects for monitoring + and configuring RObust Header Compression (ROHC). + The objects are specific to ROHC uncompressed + (profile 0x0000). + + Copyright (C) The Internet Society (2004). The + initial version of this MIB module was published + in RFC 3816. For full legal notices see the RFC + itself or see: + http://www.ietf.org/copyrights/ianamib.html" + + REVISION "200406030000Z" -- June 3, 2004 + DESCRIPTION "Initial version, published as RFC 3816." + ::= { mib-2 113 } + +-- +-- The groups defined within this MIB module: +-- + +rohcUncmprObjects OBJECT IDENTIFIER ::= { rohcUncmprMIB 1 } +rohcUncmprConformance OBJECT IDENTIFIER ::= { rohcUncmprMIB 2 } + +-- +-- Context Table +-- +-- The rohcUncmprContextTable lists all contexts per interface + + +-- and instance. It extends the rohcContextTable. +-- + +rohcUncmprContextTable OBJECT-TYPE + SYNTAX SEQUENCE OF RohcUncmprContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes ROHC uncompressed profile + specific properties of compressor contexts and + decompressor contexts. It extends the rohcContextTable + of the ROHC-MIB module." + ::= { rohcUncmprObjects 1 } + +rohcUncmprContextEntry OBJECT-TYPE + SYNTAX RohcUncmprContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular context." + INDEX { + rohcChannelID, + rohcContextCID + } + ::= { rohcUncmprContextTable 1 } + +RohcUncmprContextEntry ::= SEQUENCE { + rohcUncmprContextState INTEGER, + rohcUncmprContextMode INTEGER, + rohcUncmprContextACKs Counter32 +} + +rohcUncmprContextState OBJECT-TYPE + SYNTAX INTEGER { + initAndRefresh(1), + normal(2), + noContext(3), + fullContext(4) + } + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of the context. States initAndRefresh(1) and normal(2) + are states of compressor contexts, states noContext(3) + and fullContext(4) are states of decompressor contexts." + REFERENCE + "RFC 3095, Section 5.10.3" + + + + ::= { rohcUncmprContextEntry 3 } + +rohcUncmprContextMode OBJECT-TYPE + SYNTAX INTEGER { + unidirectional(1), + bidirectional(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Mode of the context." + REFERENCE + "RFC 3095, Section 5.10.3" + ::= { rohcUncmprContextEntry 4 } + +rohcUncmprContextACKs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of all positive feedbacks (ACK) sent or + received in this context, respectively. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system, and at other times as indicated by the + value of ifCounterDiscontinuityTime. For checking + ifCounterDiscontinuityTime, the interface index is + required. It can be determined by reading the + rohcChannelTable of the ROHC-MIB." + REFERENCE + "RFC 3095, Section 5.2.1" + ::= { rohcUncmprContextEntry 5 } + +-- +-- conformance information +-- + +rohcUncmprCompliances OBJECT IDENTIFIER + ::= { rohcUncmprConformance 1 } +rohcUncmprGroups OBJECT IDENTIFIER + ::= { rohcUncmprConformance 2 } + +-- +-- compliance statements +-- + +rohcUncmprCompliance MODULE-COMPLIANCE + + + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities that implement + the ROHC-UNCOMPRESSED-MIB. + + Note that compliance with this compliance + statement requires compliance with the + rohcCompliance MODULE-COMPLIANCE statement of the + ROHC-MIB and with the ifCompliance3 MODULE-COMPLIANCE + statement of the IF-MIB (RFC2863)." + MODULE -- this module + MANDATORY-GROUPS { + rohcUncmprContextGroup + } + GROUP rohcUncmprStatisticsGroup + DESCRIPTION + "A compliant implementation does not have to implement + the rohcUncmprStatisticsGroup." + ::= { rohcUncmprCompliances 1 } + +rohcUncmprContextGroup OBJECT-GROUP + OBJECTS { + rohcUncmprContextState, + rohcUncmprContextMode + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + ROHC uncompressed compressors and decompressors." + ::= { rohcUncmprGroups 1 } + +rohcUncmprStatisticsGroup OBJECT-GROUP + OBJECTS { + rohcUncmprContextACKs + } + STATUS current + DESCRIPTION + "An object providing context statistics." + ::= { rohcUncmprGroups 2 } + +END diff --git a/mibs/ietf/RS-232-MIB b/mibs/ietf/RS-232-MIB new file mode 100644 index 0000000..e5c5365 --- /dev/null +++ b/mibs/ietf/RS-232-MIB @@ -0,0 +1,792 @@ +RS-232-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32 + FROM SNMPv2-SMI + InterfaceIndex + FROM IF-MIB + transmission + FROM RFC1213-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +rs232 MODULE-IDENTITY + LAST-UPDATED "9405261700Z" + ORGANIZATION "IETF Character MIB Working Group" + CONTACT-INFO + " Bob Stewart + Postal: Xyplex, Inc. + 295 Foster Street + Littleton, MA 01460 + + Tel: 508-952-4816 + Fax: 508-952-4887 + E-mail: rlstewart@eng.xyplex.com" + DESCRIPTION + "The MIB module for RS-232-like hardware devices." + ::= { transmission 33 } + + +-- Generic RS-232-like information + +rs232Number OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of ports (regardless of their current + state) in the RS-232-like general port table." + ::= { rs232 1 } + + +-- RS-232-like General Port Table + +rs232PortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port entries. The number of entries is + given by the value of rs232Number." + ::= { rs232 2 } + +rs232PortEntry OBJECT-TYPE + SYNTAX Rs232PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a port." + INDEX { rs232PortIndex } + ::= { rs232PortTable 1 } + +Rs232PortEntry ::= + SEQUENCE { + rs232PortIndex + InterfaceIndex, + rs232PortType + INTEGER, + rs232PortInSigNumber + Integer32, + rs232PortOutSigNumber + Integer32, + rs232PortInSpeed + Integer32, + rs232PortOutSpeed + Integer32, + rs232PortInFlowType + INTEGER, + rs232PortOutFlowType + INTEGER + } + +rs232PortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of ifIndex for the port. By convention + and if possible, hardware port numbers map directly + to external connectors. The value for each port must + remain constant at least from one re-initialization + of the network management agent to the next." + ::= { rs232PortEntry 1 } + +rs232PortType OBJECT-TYPE + SYNTAX INTEGER { other(1), rs232(2), rs422(3), + rs423(4), v35(5), x21(6) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port's hardware type." + ::= { rs232PortEntry 2 } + +rs232PortInSigNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input signals for the port in the + input signal table (rs232PortInSigTable). The table + contains entries only for those signals the software + can detect and that are useful to observe." + ::= { rs232PortEntry 3 } + +rs232PortOutSigNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output signals for the port in the + output signal table (rs232PortOutSigTable). The + table contains entries only for those signals the + software can assert and that are useful to observe." + ::= { rs232PortEntry 4 } + +rs232PortInSpeed OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's input speed in bits per second. Note that + non-standard values, such as 9612, are probably not allowed + on most implementations." + ::= { rs232PortEntry 5 } + +rs232PortOutSpeed OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's output speed in bits per second. Note that + non-standard values, such as 9612, are probably not allowed + on most implementations." + ::= { rs232PortEntry 6 } + +rs232PortInFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), ctsRts(2), dsrDtr(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's type of input flow control. 'none' + indicates no flow control at this level. + 'ctsRts' and 'dsrDtr' indicate use of the indicated + hardware signals." + ::= { rs232PortEntry 7 } + +rs232PortOutFlowType OBJECT-TYPE + SYNTAX INTEGER { none(1), ctsRts(2), dsrDtr(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's type of output flow control. 'none' + indicates no flow control at this level. + 'ctsRts' and 'dsrDtr' indicate use of the indicated + hardware signals." + ::= { rs232PortEntry 8 } + + +-- RS-232-like Asynchronous Port Table + +rs232AsyncPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232AsyncPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of asynchronous port entries. Entries need + not exist for synchronous ports." + ::= { rs232 3 } + +rs232AsyncPortEntry OBJECT-TYPE + SYNTAX Rs232AsyncPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for an asynchronous + port." + INDEX { rs232AsyncPortIndex } + ::= { rs232AsyncPortTable 1 } + +Rs232AsyncPortEntry ::= + SEQUENCE { + rs232AsyncPortIndex + InterfaceIndex, + rs232AsyncPortBits + INTEGER, + rs232AsyncPortStopBits + INTEGER, + rs232AsyncPortParity + INTEGER, + rs232AsyncPortAutobaud + INTEGER, + rs232AsyncPortParityErrs + Counter32, + rs232AsyncPortFramingErrs + Counter32, + rs232AsyncPortOverrunErrs + Counter32 + + } + +rs232AsyncPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each port. Its value is the + same as rs232PortIndex for the port." + ::= { rs232AsyncPortEntry 1 } + +rs232AsyncPortBits OBJECT-TYPE + SYNTAX INTEGER (5..8) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's number of bits in a character." + ::= { rs232AsyncPortEntry 2 } + +rs232AsyncPortStopBits OBJECT-TYPE + SYNTAX INTEGER { one(1), two(2), + oneAndHalf(3), dynamic(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's number of stop bits." + ::= { rs232AsyncPortEntry 3 } + +rs232AsyncPortParity OBJECT-TYPE + SYNTAX INTEGER { none(1), odd(2), even(3), + mark(4), space(5) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The port's sense of a character parity bit." + ::= { rs232AsyncPortEntry 4 } + +rs232AsyncPortAutobaud OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control for the port's ability to automatically + sense input speed. + + When rs232PortAutoBaud is 'enabled', a port may + autobaud to values different from the set values for + speed, parity, and character size. As a result a + network management system may temporarily observe + values different from what was previously set." + ::= { rs232AsyncPortEntry 5 } + +rs232AsyncPortParityErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters with a parity error, + input from the port since system re-initialization + and while the port state was 'up' or 'test'." + ::= { rs232AsyncPortEntry 6 } + +rs232AsyncPortFramingErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters with a framing error, + input from the port since system re-initialization + and while the port state was 'up' or 'test'." + ::= { rs232AsyncPortEntry 7 } + +rs232AsyncPortOverrunErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of characters with an overrun error, + input from the port since system re-initialization + and while the port state was 'up' or 'test'." + ::= { rs232AsyncPortEntry 8 } + + +-- RS-232-like Synchronous Port Table + +rs232SyncPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232SyncPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of asynchronous port entries. Entries need + not exist for synchronous ports." + ::= { rs232 4 } + +rs232SyncPortEntry OBJECT-TYPE + SYNTAX Rs232SyncPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Status and parameter values for a synchronous + port." + INDEX { rs232SyncPortIndex } + ::= { rs232SyncPortTable 1 } + +Rs232SyncPortEntry ::= + SEQUENCE { + rs232SyncPortIndex + InterfaceIndex, + rs232SyncPortClockSource + INTEGER, + rs232SyncPortFrameCheckErrs + Counter32, + rs232SyncPortTransmitUnderrunErrs + Counter32, + rs232SyncPortReceiveOverrunErrs + Counter32, + rs232SyncPortInterruptedFrames + Counter32, + rs232SyncPortAbortedFrames + Counter32, + rs232SyncPortRole + INTEGER, + rs232SyncPortEncoding + INTEGER, + rs232SyncPortRTSControl + INTEGER, + rs232SyncPortRTSCTSDelay + Integer32, + rs232SyncPortMode + INTEGER, + rs232SyncPortIdlePattern + INTEGER, + rs232SyncPortMinFlags + Integer32 + } + +rs232SyncPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value for each port. Its value is the + same as rs232PortIndex for the port." + ::= { rs232SyncPortEntry 1 } + +rs232SyncPortClockSource OBJECT-TYPE + SYNTAX INTEGER { internal(1), external(2), split(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Source of the port's bit rate clock. 'split' means + the tranmit clock is internal and the receive clock + is external." + ::= { rs232SyncPortEntry 2 } + +rs232SyncPortFrameCheckErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of frames with an invalid frame check + sequence, input from the port since system + re-initialization and while the port state was 'up' + or 'test'." + ::= { rs232SyncPortEntry 3 } + +rs232SyncPortTransmitUnderrunErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of frames that failed to be + transmitted on the port since system + re-initialization and while the port state was 'up' + or 'test' because data was not available to the + transmitter in time." + ::= { rs232SyncPortEntry 4 } + +rs232SyncPortReceiveOverrunErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of frames that failed to be received + on the port since system re-initialization and while + the port state was 'up' or 'test' because the + receiver did not accept the data in time." + ::= { rs232SyncPortEntry 5 } + +rs232SyncPortInterruptedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of frames that failed to be received + or transmitted on the port due to loss of modem + signals since system re-initialization and while the + port state was 'up' or 'test'." + ::= { rs232SyncPortEntry 6 } + +rs232SyncPortAbortedFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of frames aborted on the port due to + receiving an abort sequence since system + re-initialization and while the port state was 'up' + or 'test'." + ::= { rs232SyncPortEntry 7 } + +rs232SyncPortRole OBJECT-TYPE + SYNTAX INTEGER { dte(1), dce(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The role the device is playing that is using this port. + dte means the device is performing the role of + data terminal equipment + dce means the device is performing the role of + data circuit-terminating equipment." + DEFVAL { dce } + ::= { rs232SyncPortEntry 8 } + +rs232SyncPortEncoding OBJECT-TYPE + SYNTAX INTEGER { nrz(1), nrzi(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The bit stream encoding technique that is in effect + for this port. + nrz for Non-Return to Zero encoding + nrzi for Non-Return to Zero Inverted encoding." + DEFVAL { nrz } + ::= { rs232SyncPortEntry 9 } + +rs232SyncPortRTSControl OBJECT-TYPE + SYNTAX INTEGER { controlled(1), constant(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The method used to control the Request To Send (RTS) + signal. + + controlled when the DTE is asserts RTS each time + data needs to be transmitted and drops + RTS at some point after data + transmission begins. + + If rs232SyncPortRole is 'dte', the + RTS is an output signal. The device + will issue a RTS and wait for a CTS + from the DCE before starting to + transmit. + + If rs232SyncPortRole is 'dce', the + RTS is an input signal. The device + will issue a CTS only after having + received RTS and waiting the + rs232SyncPortRTSCTSDelay interval. + + constant when the DTE constantly asserts RTS." + DEFVAL { constant } + ::= { rs232SyncPortEntry 10 } + +rs232SyncPortRTSCTSDelay OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The interval (in milliseconds) that the DCE must wait + after it sees RTS asserted before asserting CTS. This + object exists in support of older synchronous devices + that cannot recognize CTS within a certain interval + after it asserts RTS." + DEFVAL { 0 } + ::= { rs232SyncPortEntry 11 } + +rs232SyncPortMode OBJECT-TYPE + SYNTAX INTEGER { fdx(1), hdx(2), simplex-receive(3), + simplex-send(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The mode of operation of the port with respect to the + direction and simultaneity of data transfer. + fdx when frames on the data link can be + transmitted and received at the same + time + + hdx when frames can either be received + from the data link or transmitted + onto the data link but not at the + same time. + + simplex-receive when frames can only be received on + this data link. + + simplex-send when frames can only be sent on this + data link." + DEFVAL { fdx } + ::= { rs232SyncPortEntry 12 } + +rs232SyncPortIdlePattern OBJECT-TYPE + SYNTAX INTEGER { mark(1), space(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The bit pattern used to indicate an idle line." + DEFVAL { space } + ::= { rs232SyncPortEntry 13 } + +rs232SyncPortMinFlags OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum number of flag patterns this port needs in + order to recognize the end of one frame and the start + of the next. Plausible values are 1 and 2." + DEFVAL { 2 } + ::= { rs232SyncPortEntry 14 } + + +-- Input Signal Table + +rs232InSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232InSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port input control signal entries + implemented and visible to the software on the port, + and useful to monitor." + ::= { rs232 5 } + +rs232InSigEntry OBJECT-TYPE + SYNTAX Rs232InSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Input control signal status for a hardware port." + INDEX { rs232InSigPortIndex, rs232InSigName } + ::= { rs232InSigTable 1 } + +Rs232InSigEntry ::= + SEQUENCE { + rs232InSigPortIndex + InterfaceIndex, + rs232InSigName + INTEGER, + rs232InSigState + INTEGER, + rs232InSigChanges + Counter32 + } + +rs232InSigPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of rs232PortIndex for the port to which + this entry belongs." + ::= { rs232InSigEntry 1 } + +rs232InSigName OBJECT-TYPE + SYNTAX INTEGER { rts(1), cts(2), dsr(3), dtr(4), ri(5), + dcd(6), sq(7), srs(8), srts(9), + scts(10), sdcd(11) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of a hardware signal, as follows: + + rts Request to Send + cts Clear to Send + dsr Data Set Ready + dtr Data Terminal Ready + ri Ring Indicator + dcd Received Line Signal Detector + sq Signal Quality Detector + srs Data Signaling Rate Selector + srts Secondary Request to Send + scts Secondary Clear to Send + sdcd Secondary Received Line Signal Detector + " + REFERENCE + "EIA Standard RS-232-C, August 1969." + ::= { rs232InSigEntry 2 } + +rs232InSigState OBJECT-TYPE + SYNTAX INTEGER { none(1), on(2), off(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current signal state." + ::= { rs232InSigEntry 3 } + +rs232InSigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the signal has changed from + 'on' to 'off' or from 'off' to 'on'." + ::= { rs232InSigEntry 4 } + + +-- Output Signal Table + +rs232OutSigTable OBJECT-TYPE + SYNTAX SEQUENCE OF Rs232OutSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of port output control signal entries + implemented and visible to the software on the port, + and useful to monitor." + ::= { rs232 6 } + +rs232OutSigEntry OBJECT-TYPE + SYNTAX Rs232OutSigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Output control signal status for a hardware port." + INDEX { rs232OutSigPortIndex, rs232OutSigName } + ::= { rs232OutSigTable 1 } + +Rs232OutSigEntry ::= + SEQUENCE { + rs232OutSigPortIndex + InterfaceIndex, + rs232OutSigName + INTEGER, + rs232OutSigState + INTEGER, + rs232OutSigChanges + Counter32 + } + +rs232OutSigPortIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of rs232PortIndex for the port to which + this entry belongs." + ::= { rs232OutSigEntry 1 } + +rs232OutSigName OBJECT-TYPE + SYNTAX INTEGER { rts(1), cts(2), dsr(3), dtr(4), ri(5), + dcd(6), sq(7), srs(8), srts(9), + scts(10), sdcd(11) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identification of a hardware signal, as follows: + + rts Request to Send + cts Clear to Send + dsr Data Set Ready + dtr Data Terminal Ready + ri Ring Indicator + dcd Received Line Signal Detector + sq Signal Quality Detector + srs Data Signaling Rate Selector + srts Secondary Request to Send + scts Secondary Clear to Send + sdcd Secondary Received Line Signal Detector + " + REFERENCE + "EIA Standard RS-232-C, August 1969." + ::= { rs232OutSigEntry 2 } + +rs232OutSigState OBJECT-TYPE + SYNTAX INTEGER { none(1), on(2), off(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current signal state." + ::= { rs232OutSigEntry 3 } + +rs232OutSigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the signal has changed from + 'on' to 'off' or from 'off' to 'on'." + ::= { rs232OutSigEntry 4 } + + +-- conformance information + +rs232Conformance OBJECT IDENTIFIER ::= { rs232 7 } + +rs232Groups OBJECT IDENTIFIER ::= { rs232Conformance 1 } +rs232Compliances OBJECT IDENTIFIER ::= { rs232Conformance 2 } + + +-- compliance statements + +rs232Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which have RS-232-like hardware interfaces." + + MODULE -- this module + MANDATORY-GROUPS { rs232Group } + + GROUP rs232AsyncGroup + DESCRIPTION + "The Asynch group is mandatory only for those + SNMPv2 entities which have asynchronous + interfaces Rs-232-like." + + GROUP rs232SyncGroup + DESCRIPTION + "The Synch group is mandatory only for those + SNMPv2 entities which have synchronous + interfaces Rs-232-like." + ::= { rs232Compliances 1 } + +-- units of conformance + +rs232Group OBJECT-GROUP + OBJECTS { rs232Number, rs232PortIndex, rs232PortType, + rs232PortInSigNumber, rs232PortOutSigNumber, + rs232PortInSpeed, rs232PortOutSpeed, + rs232PortInFlowType, rs232PortOutFlowType, + rs232InSigPortIndex, rs232InSigName, + rs232InSigState, rs232InSigChanges, + rs232OutSigPortIndex, rs232OutSigName, + rs232OutSigState, rs232OutSigChanges } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all RS-232-like interfaces." + ::= { rs232Groups 1 } + +rs232AsyncGroup OBJECT-GROUP + OBJECTS { rs232AsyncPortIndex, rs232AsyncPortBits, + rs232AsyncPortStopBits, rs232AsyncPortParity, + rs232AsyncPortAutobaud, rs232AsyncPortParityErrs, + rs232AsyncPortFramingErrs, rs232AsyncPortOverrunErrs } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to asynchronous RS-232-like interfaces." + ::= { rs232Groups 2 } + +rs232SyncGroup OBJECT-GROUP + OBJECTS { rs232SyncPortIndex, rs232SyncPortClockSource, + rs232SyncPortFrameCheckErrs, + rs232SyncPortTransmitUnderrunErrs, + rs232SyncPortReceiveOverrunErrs, + rs232SyncPortInterruptedFrames, + rs232SyncPortAbortedFrames } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to synchronous RS-232-like interfaces." + ::= { rs232Groups 3 } + +rs232SyncSDLCGroup OBJECT-GROUP + OBJECTS { rs232SyncPortRole, + rs232SyncPortEncoding, + rs232SyncPortRTSControl, + rs232SyncPortRTSCTSDelay, + rs232SyncPortMode, + rs232SyncPortIdlePattern, + rs232SyncPortMinFlags } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to synchronous RS-232-like interfaces + running SDLC." + ::= { rs232Groups 4 } + +END diff --git a/mibs/ietf/RSTP-MIB b/mibs/ietf/RSTP-MIB new file mode 100644 index 0000000..9a98f70 --- /dev/null +++ b/mibs/ietf/RSTP-MIB @@ -0,0 +1,327 @@ +RSTP-MIB DEFINITIONS ::= BEGIN + +-- ------------------------------------------------------------- +-- MIB for IEEE 802.1w Rapid Spanning Tree Protocol +-- ------------------------------------------------------------- + +IMPORTS + + + + MODULE-IDENTITY, OBJECT-TYPE, Integer32, mib-2 + FROM SNMPv2-SMI + TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + dot1dStp, dot1dStpPortEntry + FROM BRIDGE-MIB; + +rstpMIB MODULE-IDENTITY + LAST-UPDATED "200512070000Z" + ORGANIZATION "IETF Bridge MIB Working Group" + CONTACT-INFO + "Email: Bridge-mib@ietf.org" + DESCRIPTION + "The Bridge MIB Extension module for managing devices + that support the Rapid Spanning Tree Protocol defined + by IEEE 802.1w. + + Copyright (C) The Internet Society (2005). This version of + this MIB module is part of RFC 4318; See the RFC itself for + full legal notices." + + REVISION "200512070000Z" + DESCRIPTION + "The initial version of this MIB module as published in + RFC 4318." + ::= { mib-2 134 } + +-- ---------------------------------------------------------- -- +-- subtrees in the RSTP-MIB +-- ---------------------------------------------------------- -- + +rstpNotifications OBJECT IDENTIFIER ::= { rstpMIB 0 } +rstpObjects OBJECT IDENTIFIER ::= { rstpMIB 1 } +rstpConformance OBJECT IDENTIFIER ::= { rstpMIB 2 } + +-- ------------------------------------------------------------- +-- Addition to the dot1dStp group +-- ------------------------------------------------------------- + +dot1dStpVersion OBJECT-TYPE + SYNTAX INTEGER { + stpCompatible(0), + rstp(2) + } + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The version of Spanning Tree Protocol the bridge is + currently running. The value 'stpCompatible(0)' + indicates the Spanning Tree Protocol specified in + IEEE 802.1D-1998 and 'rstp(2)' indicates the Rapid + Spanning Tree Protocol specified in IEEE 802.1w and + clause 17 of 802.1D-2004. The values are directly from + the IEEE standard. New values may be defined as future + versions of the protocol become available. + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1w clause 14.8.1, 17.12, 17.16.1" + DEFVAL { rstp } + ::= { dot1dStp 16 } + +dot1dStpTxHoldCount OBJECT-TYPE + SYNTAX Integer32 (1..10) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value used by the Port Transmit state machine to limit + the maximum transmission rate. + + The value of this object MUST be retained across + reinitializations of the management system." + + REFERENCE + "IEEE 802.1w clause 17.16.6" + DEFVAL { 3 } + ::= { dot1dStp 17 } + +-- +-- { dot1dStp 18 } was used to represent dot1dStpPathCostDefault +-- in an earlier version of this MIB. It has since been +-- obsoleted, and should not be used. +-- + +dot1dStpExtPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dStpExtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains port-specific Rapid Spanning Tree + information." + ::= { dot1dStp 19 } + + + + +dot1dStpExtPortEntry OBJECT-TYPE + SYNTAX Dot1dStpExtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Rapid Spanning Tree information maintained by + each port." + AUGMENTS { dot1dStpPortEntry } + ::= { dot1dStpExtPortTable 1 } + +Dot1dStpExtPortEntry ::= + SEQUENCE { + dot1dStpPortProtocolMigration + TruthValue, + dot1dStpPortAdminEdgePort + TruthValue, + dot1dStpPortOperEdgePort + TruthValue, + dot1dStpPortAdminPointToPoint + INTEGER, + dot1dStpPortOperPointToPoint + TruthValue, + dot1dStpPortAdminPathCost + Integer32 + } + +dot1dStpPortProtocolMigration OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When operating in RSTP (version 2) mode, writing true(1) + to this object forces this port to transmit RSTP BPDUs. + Any other operation on this object has no effect and + it always returns false(2) when read." + REFERENCE + "IEEE 802.1w clause 14.8.2.4, 17.18.10, 17.26" + ::= { dot1dStpExtPortEntry 1 } + +dot1dStpPortAdminEdgePort OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative value of the Edge Port parameter. A + value of true(1) indicates that this port should be + assumed as an edge-port, and a value of false(2) indicates + that this port should be assumed as a non-edge-port. + + + + Setting this object will also cause the corresponding + instance of dot1dStpPortOperEdgePort to change to the + same value. Note that even when this object's value + is true, the value of the corresponding instance of + dot1dStpPortOperEdgePort can be false if a BPDU has + been received. + + The value of this object MUST be retained across + reinitializations of the management system." + + REFERENCE + "IEEE 802.1t clause 14.8.2, 18.3.3" + ::= { dot1dStpExtPortEntry 2 } + +dot1dStpPortOperEdgePort OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational value of the Edge Port parameter. The + object is initialized to the value of the corresponding + instance of dot1dStpPortAdminEdgePort. When the + corresponding instance of dot1dStpPortAdminEdgePort is + set, this object will be changed as well. This object + will also be changed to false on reception of a BPDU." + + REFERENCE + "IEEE 802.1t clause 14.8.2, 18.3.4" + ::= { dot1dStpExtPortEntry 3 } + +dot1dStpPortAdminPointToPoint OBJECT-TYPE + SYNTAX INTEGER { + forceTrue(0), + forceFalse(1), + auto(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administrative point-to-point status of the LAN segment + attached to this port, using the enumeration values of the + IEEE 802.1w clause. A value of forceTrue(0) indicates + that this port should always be treated as if it is + connected to a point-to-point link. A value of + forceFalse(1) indicates that this port should be treated as + having a shared media connection. A value of auto(2) + indicates that this port is considered to have a + point-to-point link if it is an Aggregator and all of its + + + + members are aggregatable, or if the MAC entity + is configured for full duplex operation, either through + auto-negotiation or by management means. Manipulating this + object changes the underlying adminPortToPortMAC. + + The value of this object MUST be retained across + reinitializations of the management system." + + REFERENCE + "IEEE 802.1w clause 6.4.3, 6.5, 14.8.2" + ::= { dot1dStpExtPortEntry 4 } + +dot1dStpPortOperPointToPoint OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational point-to-point status of the LAN segment + attached to this port. It indicates whether a port is + considered to have a point-to-point connection. + If adminPointToPointMAC is set to auto(2), then the value + of operPointToPointMAC is determined in accordance with the + specific procedures defined for the MAC entity concerned, + as defined in IEEE 802.1w, clause 6.5. The value is + determined dynamically; that is, it is re-evaluated whenever + the value of adminPointToPointMAC changes, and whenever + the specific procedures defined for the MAC entity evaluate + a change in its point-to-point status." + REFERENCE + "IEEE 802.1w clause 6.4.3, 6.5, 14.8.2" + ::= { dot1dStpExtPortEntry 5 } + +dot1dStpPortAdminPathCost OBJECT-TYPE + SYNTAX Integer32 (0..200000000) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The administratively assigned value for the contribution + of this port to the path cost of paths toward the spanning + tree root. + + Writing a value of '0' assigns the automatically calculated + default Path Cost value to the port. If the default Path + Cost is being used, this object returns '0' when read. + + This complements the object dot1dStpPortPathCost or + dot1dStpPortPathCost32, which returns the operational value + of the path cost. + + + + The value of this object MUST be retained across + reinitializations of the management system." + REFERENCE + "IEEE 802.1D-1998: Section 8.5.5.3" + ::= { dot1dStpExtPortEntry 6 } + +-- ------------------------------------------------------------- +-- rstpMIB - Conformance Information +-- ------------------------------------------------------------- + +rstpGroups OBJECT IDENTIFIER ::= { rstpConformance 1 } + +rstpCompliances OBJECT IDENTIFIER ::= { rstpConformance 2 } + +-- ------------------------------------------------------------- +-- Units of conformance +-- ------------------------------------------------------------- + +rstpBridgeGroup OBJECT-GROUP + OBJECTS { + dot1dStpVersion, + dot1dStpTxHoldCount + } + STATUS current + DESCRIPTION + "Rapid Spanning Tree information for the bridge." + ::= { rstpGroups 1 } + +rstpPortGroup OBJECT-GROUP + OBJECTS { + dot1dStpPortProtocolMigration, + dot1dStpPortAdminEdgePort, + dot1dStpPortOperEdgePort, + dot1dStpPortAdminPointToPoint, + dot1dStpPortOperPointToPoint, + dot1dStpPortAdminPathCost + } + STATUS current + DESCRIPTION + "Rapid Spanning Tree information for individual ports." + ::= { rstpGroups 2 } + +-- ------------------------------------------------------------- +-- Compliance statements +-- ------------------------------------------------------------- + +rstpCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "The compliance statement for device support of Rapid + Spanning Tree Protocol (RSTP) bridging services." + MODULE + MANDATORY-GROUPS { + rstpBridgeGroup, + rstpPortGroup + } + ::= { rstpCompliances 1 } + +END diff --git a/mibs/ietf/RSVP-MIB b/mibs/ietf/RSVP-MIB new file mode 100644 index 0000000..fefe9d2 --- /dev/null +++ b/mibs/ietf/RSVP-MIB @@ -0,0 +1,2812 @@ +RSVP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Gauge32, + NOTIFICATION-TYPE, Integer32, mib-2 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, RowStatus, + TimeStamp, TestAndIncr, TimeInterval + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + Port, SessionNumber, SessionType, + Protocol, QosService, intSrvFlowStatus, + MessageSize, BitRate, BurstSize + FROM INTEGRATED-SERVICES-MIB + ifIndex, InterfaceIndex FROM IF-MIB; + + + rsvp MODULE-IDENTITY + LAST-UPDATED "9511030500Z" -- Thu Aug 28 09:03:53 PDT 1997 + ORGANIZATION "IETF RSVP Working Group" + CONTACT-INFO + " Fred Baker + Postal: Cisco Systems + 519 Lado Drive + Santa Barbara, California 93111 + Tel: +1 805 681 0115 + E-Mail: fred@cisco.com + John Krawczyk + Postal: ArrowPoint Communications + 235 Littleton Road + Westford, Massachusetts 01886 + Tel: +1 508 692 5875 + E-Mail: jjk@tiac.net + + Arun Sastry + Postal: Cisco Systems + 210 W. Tasman Drive + San Jose, California 95134 + Tel: +1 408 526 7685 + E-Mail: arun@cisco.com" + DESCRIPTION + "The MIB module to describe the RSVP Protocol" + ::= { mib-2 51 } + + rsvpObjects OBJECT IDENTIFIER + ::= { rsvp 1 } -- tables + rsvpGenObjects OBJECT IDENTIFIER + ::= { rsvp 2 } -- global objects + rsvpNotificationsPrefix OBJECT IDENTIFIER + ::= { rsvp 3 } -- traps + rsvpConformance OBJECT IDENTIFIER + ::= { rsvp 4 } -- conformance + + + RsvpEncapsulation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This indicates the encapsulation that an RSVP + Neighbor is perceived to be using." + SYNTAX INTEGER { + ip (1), -- IP Protocol 46 + udp (2), -- UDP Encapsulation + both (3) -- neighbor is using both encapsulations + } + + + RefreshInterval ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The number of milliseconds that are expected + to elapse between refreshes of path or reserva- + tion state. Unrefreshed Path or reservation + state is removed after a small multiple of this + period." + SYNTAX INTEGER (0..'7FFFFFFF'h) + + +-- The RSVP Session Statistics Database displays statistics +-- relating to the number of senders and receivers in each +-- session. + + + rsvpSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of all sessions seen by a given sys- + tem." + ::= { rsvpObjects 1 } + + + rsvpSessionEntry OBJECT-TYPE + SYNTAX RsvpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A single session seen by a given system." + INDEX { rsvpSessionNumber } + ::= { rsvpSessionTable 1 } + + + RsvpSessionEntry ::= + SEQUENCE { + rsvpSessionNumber SessionNumber, + rsvpSessionType SessionType, + rsvpSessionDestAddr OCTET STRING, + rsvpSessionDestAddrLength INTEGER, + rsvpSessionProtocol Protocol, + rsvpSessionPort Port, + rsvpSessionSenders Gauge32, + rsvpSessionReceivers Gauge32, + rsvpSessionRequests Gauge32 + } + + + rsvpSessionNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this session. This is for SNMP + Indexing purposes only and has no relation to + any protocol value." + ::= { rsvpSessionEntry 1 } + + + rsvpSessionType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { rsvpSessionEntry 2 } + + + rsvpSessionDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpSessionEntry 3 } + + + rsvpSessionDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The CIDR prefix length of the session address, + which is 32 for IP4 host and multicast ad- + dresses, and 128 for IP6 addresses. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSessionEntry 4 } + + + rsvpSessionProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Protocol used by this session. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSessionEntry 5 } + + + rsvpSessionPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by rsvpSen- + derProtocol, is 50 (ESP) or 51 (AH), this + represents a virtual destination port number. + A value of zero indicates that the IP protocol + in use does not have ports. This object may + not be changed when the value of the RowStatus + object is 'active'." + ::= { rsvpSessionEntry 6 } + + + rsvpSessionSenders OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of distinct senders currently known + to be part of this session." + ::= { rsvpSessionEntry 7 } + + + rsvpSessionReceivers OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reservations being requested of + this system for this session." + ::= { rsvpSessionEntry 8 } + + + rsvpSessionRequests OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of reservation requests this system + is sending upstream for this session." + ::= { rsvpSessionEntry 9 } + + rsvpBadPackets OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object keeps a count of the number of bad + RSVP packets received." + ::= { rsvpGenObjects 1 } + + +-- The RSVP Session Sender Database contains the information +-- displayed by senders regarding their potential contribution +-- to session data content. It is in essence a list of the +-- valid PATH messages that the RSVP Router or Host is receiving. + + + rsvpSenderNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to + rsvpSenderNumber as described in 'Textual Con- + ventions for SNMPv2'. The network manager + reads the object, and then writes the value + back in the SET that creates a new instance of + rsvpSenderEntry. If the SET fails with the + code 'inconsistentValue', then the process must + be repeated; If the SET succeeds, then the ob- + ject is incremented, and the new instance is + created according to the manager's directions." + ::= { rsvpGenObjects 2 } + + + rsvpSenderTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpSenderEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed by senders in PATH messages." + ::= { rsvpObjects 2 } + + + rsvpSenderEntry OBJECT-TYPE + SYNTAX RsvpSenderEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed by a single sender's PATH message." + INDEX { rsvpSessionNumber, rsvpSenderNumber } + ::= { rsvpSenderTable 1 } + +RsvpSenderEntry ::= + + + SEQUENCE { + rsvpSenderNumber SessionNumber, + rsvpSenderType SessionType, + rsvpSenderDestAddr OCTET STRING, + rsvpSenderAddr OCTET STRING, + rsvpSenderDestAddrLength INTEGER, + rsvpSenderAddrLength INTEGER, + rsvpSenderProtocol Protocol, + rsvpSenderDestPort Port, + rsvpSenderPort Port, + rsvpSenderFlowId INTEGER, + rsvpSenderHopAddr OCTET STRING, + rsvpSenderHopLih Integer32, + rsvpSenderInterface InterfaceIndex, + rsvpSenderTSpecRate BitRate, + rsvpSenderTSpecPeakRate BitRate, + rsvpSenderTSpecBurst BurstSize, + rsvpSenderTSpecMinTU MessageSize, + rsvpSenderTSpecMaxTU MessageSize, + rsvpSenderInterval RefreshInterval, + rsvpSenderRSVPHop TruthValue, + rsvpSenderLastChange TimeStamp, + rsvpSenderPolicy OCTET STRING, + rsvpSenderAdspecBreak TruthValue, + rsvpSenderAdspecHopCount INTEGER, + rsvpSenderAdspecPathBw BitRate, + rsvpSenderAdspecMinLatency Integer32, + rsvpSenderAdspecMtu INTEGER, + rsvpSenderAdspecGuaranteedSvc TruthValue, + rsvpSenderAdspecGuaranteedBreak TruthValue, + rsvpSenderAdspecGuaranteedCtot Integer32, + rsvpSenderAdspecGuaranteedDtot Integer32, + rsvpSenderAdspecGuaranteedCsum Integer32, + rsvpSenderAdspecGuaranteedDsum Integer32, + rsvpSenderAdspecGuaranteedHopCount INTEGER, + rsvpSenderAdspecGuaranteedPathBw BitRate, + rsvpSenderAdspecGuaranteedMinLatency Integer32, + rsvpSenderAdspecGuaranteedMtu INTEGER, + rsvpSenderAdspecCtrlLoadSvc TruthValue, + rsvpSenderAdspecCtrlLoadBreak TruthValue, + rsvpSenderAdspecCtrlLoadHopCount INTEGER, + rsvpSenderAdspecCtrlLoadPathBw BitRate, + rsvpSenderAdspecCtrlLoadMinLatency Integer32, + rsvpSenderAdspecCtrlLoadMtu INTEGER, + rsvpSenderStatus RowStatus, + + + rsvpSenderTTL INTEGER + } + + rsvpSenderNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this sender. This is for SNMP + Indexing purposes only and has no relation to + any protocol value." + ::= { rsvpSenderEntry 1 } + + + rsvpSenderType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { rsvpSenderEntry 2 } + + + rsvpSenderDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpSenderEntry 3 } + + + rsvpSenderAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source address used by this sender in this + session. This object may not be changed when + the value of the RowStatus object is 'active'." + ::= { rsvpSenderEntry 4 } + + + rsvpSenderDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the destination address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSenderEntry 5 } + + + rsvpSenderAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the sender's address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSenderEntry 6 } + + + rsvpSenderProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Protocol used by this session. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpSenderEntry 7 } + + + rsvpSenderDestPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by rsvpSen- + derProtocol, is 50 (ESP) or 51 (AH), this + represents a virtual destination port number. + A value of zero indicates that the IP protocol + in use does not have ports. This object may + not be changed when the value of the RowStatus + object is 'active'." + ::= { rsvpSenderEntry 8 } + + + rsvpSenderPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a source + port for this sender in this session. If the + IP protocol in use, specified by rsvpSenderPro- + tocol is 50 (ESP) or 51 (AH), this represents a + generalized port identifier (GPI). A value of + zero indicates that the IP protocol in use does + not have ports. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpSenderEntry 9 } + + + rsvpSenderFlowId OBJECT-TYPE + SYNTAX INTEGER (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow ID that this sender is using, if + this is an IPv6 session." + ::= { rsvpSenderEntry 10 } + + + rsvpSenderHopAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address used by the previous RSVP hop + (which may be the original sender)." + ::= { rsvpSenderEntry 11 } + + rsvpSenderHopLih OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Logical Interface Handle used by the pre- + vious RSVP hop (which may be the original + sender)." + ::= { rsvpSenderEntry 12 } + + + rsvpSenderInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value of the interface on which + this PATH message was most recently received." + ::= { rsvpSenderEntry 13 } + + + rsvpSenderTSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Average Bit Rate of the sender's data + stream. Within a transmission burst, the ar- + rival rate may be as fast as rsvpSenderTSpec- + PeakRate (if supported by the service model); + however, averaged across two or more burst in- + tervals, the rate should not exceed rsvpSen- + derTSpecRate. + + Note that this is a prediction, often based on + the general capability of a type of codec or + particular encoding; the measured average rate + may be significantly lower." + ::= { rsvpSenderEntry 14 } + + + rsvpSenderTSpecPeakRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Peak Bit Rate of the sender's data stream. + Traffic arrival is not expected to exceed this + rate at any time, apart from the effects of + jitter in the network. If not specified in the + TSpec, this returns zero or noSuchValue." + ::= { rsvpSenderEntry 15 } + + + rsvpSenderTSpecBurst OBJECT-TYPE + SYNTAX BurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of the largest burst expected from + the sender at a time." + ::= { rsvpSenderEntry 16 } + + + rsvpSenderTSpecMinTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum message size for this flow. The + policing algorithm will treat smaller messages + as though they are this size." + ::= { rsvpSenderEntry 17 } + + + rsvpSenderTSpecMaxTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum message size for this flow. The + admission algorithm will reject TSpecs whose + Maximum Transmission Unit, plus the interface + headers, exceed the interface MTU." + ::= { rsvpSenderEntry 18 } + + + rsvpSenderInterval OBJECT-TYPE + SYNTAX RefreshInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval between refresh messages as ad- + vertised by the Previous Hop." + ::= { rsvpSenderEntry 19 } + + + rsvpSenderRSVPHop OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the node believes that the previous + IP hop is an RSVP hop. If FALSE, the node be- + lieves that the previous IP hop may not be an + RSVP hop." + ::= { rsvpSenderEntry 20 } + + + rsvpSenderLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last change in this PATH mes- + sage; This is either the first time it was re- + ceived or the time of the most recent change in + parameters." + ::= { rsvpSenderEntry 21 } + + + rsvpSenderPolicy OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..65536)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contents of the policy object, displayed + as an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length." + ::= { rsvpSenderEntry 22 } + + + rsvpSenderAdspecBreak OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The global break bit general characterization + parameter from the ADSPEC. If TRUE, at least + one non-IS hop was detected in the path. If + FALSE, no non-IS hops were detected." + ::= { rsvpSenderEntry 23 } + + + rsvpSenderAdspecHopCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The hop count general characterization parame- + ter from the ADSPEC. A return of zero or + noSuchValue indicates one of the following con- + ditions: + + the invalid bit was set + the parameter was not present" + ::= { rsvpSenderEntry 24 } + + + rsvpSenderAdspecPathBw OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The path bandwidth estimate general character- + ization parameter from the ADSPEC. A return of + zero or noSuchValue indicates one of the fol- + lowing conditions: + + the invalid bit was set + the parameter was not present" + ::= { rsvpSenderEntry 25 } + + + rsvpSenderAdspecMinLatency OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum path latency general characteriza- + tion parameter from the ADSPEC. A return of + zero or noSuchValue indicates one of the fol- + lowing conditions: + + the invalid bit was set + the parameter was not present" + ::= { rsvpSenderEntry 26 } + + + rsvpSenderAdspecMtu OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The composed Maximum Transmission Unit general + characterization parameter from the ADSPEC. A + return of zero or noSuchValue indicates one of + the following conditions: + + the invalid bit was set + the parameter was not present" + ::= { rsvpSenderEntry 27 } + + + rsvpSenderAdspecGuaranteedSvc OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the ADSPEC contains a Guaranteed Ser- + vice fragment. If FALSE, the ADSPEC does not + contain a Guaranteed Service fragment." + ::= { rsvpSenderEntry 28 } + + + rsvpSenderAdspecGuaranteedBreak OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the Guaranteed Service fragment has + its 'break' bit set, indicating that one or + more nodes along the path do not support the + guaranteed service. If FALSE, and rsvpSen- + derAdspecGuaranteedSvc is TRUE, the 'break' bit + is not set. + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns FALSE or noSuchValue." + ::= { rsvpSenderEntry 29 } + + + rsvpSenderAdspecGuaranteedCtot OBJECT-TYPE + SYNTAX Integer32 + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the end-to-end composed value for the + guaranteed service 'C' parameter. A return of + zero or noSuchValue indicates one of the fol- + lowing conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 30 } + + + rsvpSenderAdspecGuaranteedDtot OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the end-to-end composed value for the + guaranteed service 'D' parameter. A return of + zero or noSuchValue indicates one of the fol- + lowing conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 31 } + + + rsvpSenderAdspecGuaranteedCsum OBJECT-TYPE + SYNTAX Integer32 + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the composed value for the guaranteed ser- + vice 'C' parameter since the last reshaping + point. A return of zero or noSuchValue indi- + cates one of the following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 32 } + + + rsvpSenderAdspecGuaranteedDsum OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the composed value for the guaranteed ser- + vice 'D' parameter since the last reshaping + point. A return of zero or noSuchValue indi- + cates one of the following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 33 } + + + rsvpSenderAdspecGuaranteedHopCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the service-specific override of the hop + count general characterization parameter from + the ADSPEC. A return of zero or noSuchValue + indicates one of the following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 34 } + + + rsvpSenderAdspecGuaranteedPathBw OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the service-specific override of the path + bandwidth estimate general characterization + parameter from the ADSPEC. A return of zero or + noSuchValue indicates one of the following con- + ditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 35 } + + + rsvpSenderAdspecGuaranteedMinLatency OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the service-specific override of the minimum + path latency general characterization parameter + from the ADSPEC. A return of zero or noSuch- + Value indicates one of the following condi- + tions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 36 } + + + rsvpSenderAdspecGuaranteedMtu OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecGuaranteedSvc is TRUE, this + is the service-specific override of the com- + posed Maximum Transmission Unit general charac- + terization parameter from the ADSPEC. A return + of zero or noSuchValue indicates one of the + following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecGuaranteedSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 37 } + + + rsvpSenderAdspecCtrlLoadSvc OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the ADSPEC contains a Controlled Load + Service fragment. If FALSE, the ADSPEC does + not contain a Controlled Load Service frag- + ment." + ::= { rsvpSenderEntry 38 } + + + rsvpSenderAdspecCtrlLoadBreak OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the Controlled Load Service fragment + has its 'break' bit set, indicating that one or + more nodes along the path do not support the + controlled load service. If FALSE, and + rsvpSenderAdspecCtrlLoadSvc is TRUE, the + 'break' bit is not set. + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns FALSE or noSuchValue." + ::= { rsvpSenderEntry 39 } + + rsvpSenderAdspecCtrlLoadHopCount OBJECT-TYPE + SYNTAX INTEGER (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "If rsvpSenderAdspecCtrlLoadSvc is TRUE, this + is the service-specific override of the hop + count general characterization parameter from + the ADSPEC. A return of zero or noSuchValue + indicates one of the following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 40 } + + + rsvpSenderAdspecCtrlLoadPathBw OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecCtrlLoadSvc is TRUE, this + is the service-specific override of the path + bandwidth estimate general characterization + parameter from the ADSPEC. A return of zero or + noSuchValue indicates one of the following con- + ditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 41 } + + + rsvpSenderAdspecCtrlLoadMinLatency OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecCtrlLoadSvc is TRUE, this + is the service-specific override of the minimum + path latency general characterization parameter + from the ADSPEC. A return of zero or noSuch- + Value indicates one of the following condi- + tions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 42 } + + + rsvpSenderAdspecCtrlLoadMtu OBJECT-TYPE + SYNTAX INTEGER (0..65535) + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If rsvpSenderAdspecCtrlLoadSvc is TRUE, this + is the service-specific override of the com- + posed Maximum Transmission Unit general charac- + terization parameter from the ADSPEC. A return + of zero or noSuchValue indicates one of the + following conditions: + + the invalid bit was set + the parameter was not present + + If rsvpSenderAdspecCtrlLoadSvc is FALSE, this + returns zero or noSuchValue." + ::= { rsvpSenderEntry 43 } + + + rsvpSenderStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' for all active PATH messages. This + object may be used to install static PATH in- + formation or delete PATH information." + ::= { rsvpSenderEntry 44 } + + + rsvpSenderTTL OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TTL value in the RSVP header that was last + received." + ::= { rsvpSenderEntry 45 } + + + rsvpSenderOutInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpSenderOutInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "List of outgoing interfaces that PATH messages + use. The ifIndex is the ifIndex value of the + egress interface." + ::= { rsvpObjects 3 } + + + rsvpSenderOutInterfaceEntry OBJECT-TYPE + SYNTAX RsvpSenderOutInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "List of outgoing interfaces that a particular + PATH message has." + INDEX { rsvpSessionNumber, rsvpSenderNumber, ifIndex } + ::= { rsvpSenderOutInterfaceTable 1 } + +RsvpSenderOutInterfaceEntry ::= + SEQUENCE { + rsvpSenderOutInterfaceStatus RowStatus + } + + rsvpSenderOutInterfaceStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "'active' for all active PATH messages." + ::= { rsvpSenderOutInterfaceEntry 1 } + + +-- The RSVP Reservation Requests Received Table contains the +-- information displayed by receivers regarding their needs with +-- respect to sessions and senders. It is in essence a list of the +-- valid RESV messages that the RSVP Router or Host is receiving. + + rsvpResvNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to + rsvpResvNumber as described in 'Textual Conven- + tions for SNMPv2'. The network manager reads + the object, and then writes the value back in + the SET that creates a new instance of + rsvpResvEntry. If the SET fails with the code + 'inconsistentValue', then the process must be + repeated; If the SET succeeds, then the object + is incremented, and the new instance is created + according to the manager's directions." + ::= { rsvpGenObjects 3 } + + + rsvpResvTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpResvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed by receivers in RESV messages." + ::= { rsvpObjects 4 } + + + rsvpResvEntry OBJECT-TYPE + SYNTAX RsvpResvEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed by a single receiver's RESV message + concerning a single sender." + INDEX { rsvpSessionNumber, rsvpResvNumber } + ::= { rsvpResvTable 1 } + + + + RsvpResvEntry ::= + SEQUENCE { + rsvpResvNumber SessionNumber, + rsvpResvType SessionType, + rsvpResvDestAddr OCTET STRING, + rsvpResvSenderAddr OCTET STRING, + rsvpResvDestAddrLength INTEGER, + rsvpResvSenderAddrLength INTEGER, + rsvpResvProtocol Protocol, + rsvpResvDestPort Port, + rsvpResvPort Port, + rsvpResvHopAddr OCTET STRING, + rsvpResvHopLih Integer32, + rsvpResvInterface InterfaceIndex, + rsvpResvService QosService, + rsvpResvTSpecRate BitRate, + rsvpResvTSpecPeakRate BitRate, + rsvpResvTSpecBurst BurstSize, + rsvpResvTSpecMinTU MessageSize, + rsvpResvTSpecMaxTU MessageSize, + rsvpResvRSpecRate BitRate, + rsvpResvRSpecSlack Integer32, + rsvpResvInterval RefreshInterval, + rsvpResvScope OCTET STRING, + rsvpResvShared TruthValue, + rsvpResvExplicit TruthValue, + rsvpResvRSVPHop TruthValue, + rsvpResvLastChange TimeStamp, + rsvpResvPolicy OCTET STRING, + rsvpResvStatus RowStatus, + rsvpResvTTL INTEGER, + rsvpResvFlowId INTEGER + } + + + rsvpResvNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this reservation request. This + is for SNMP Indexing purposes only and has no + relation to any protocol value." + ::= { rsvpResvEntry 1 } + + + rsvpResvType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { rsvpResvEntry 2 } + + rsvpResvDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpResvEntry 3 } + + + rsvpResvSenderAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source address of the sender selected by + this reservation. The value of all zeroes in- + dicates 'all senders'. This object may not be + changed when the value of the RowStatus object + is 'active'." + ::= { rsvpResvEntry 4 } + + + rsvpResvDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the destination address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvEntry 5 } + + + rsvpResvSenderAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The length of the sender's address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvEntry 6 } + + + rsvpResvProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The IP Protocol used by this session. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvEntry 7 } + + + rsvpResvDestPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by + rsvpResvProtocol, is 50 (ESP) or 51 (AH), this + represents a virtual destination port number. + A value of zero indicates that the IP protocol + in use does not have ports. This object may + not be changed when the value of the RowStatus + object is 'active'." + ::= { rsvpResvEntry 8 } + + + rsvpResvPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a source + port for this sender in this session. If the + IP protocol in use, specified by rsvpResvProto- + col is 50 (ESP) or 51 (AH), this represents a + generalized port identifier (GPI). A value of + zero indicates that the IP protocol in use does + not have ports. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpResvEntry 9 } + + rsvpResvHopAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address used by the next RSVP hop (which + may be the ultimate receiver)." + ::= { rsvpResvEntry 10 } + + + rsvpResvHopLih OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Logical Interface Handle received from the + previous RSVP hop (which may be the ultimate + receiver)." + ::= { rsvpResvEntry 11 } + + + rsvpResvInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value of the interface on which + this RESV message was most recently received." + ::= { rsvpResvEntry 12 } + + + rsvpResvService OBJECT-TYPE + SYNTAX QosService + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The QoS Service classification requested by + the receiver." + ::= { rsvpResvEntry 13 } + + + rsvpResvTSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Average Bit Rate of the sender's data + stream. Within a transmission burst, the ar- + rival rate may be as fast as rsvpResvTSpec- + PeakRate (if supported by the service model); + however, averaged across two or more burst in- + tervals, the rate should not exceed + rsvpResvTSpecRate. + + Note that this is a prediction, often based on + the general capability of a type of codec or + particular encoding; the measured average rate + may be significantly lower." + ::= { rsvpResvEntry 14 } + + + rsvpResvTSpecPeakRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Peak Bit Rate of the sender's data stream. + Traffic arrival is not expected to exceed this + rate at any time, apart from the effects of + jitter in the network. If not specified in the + TSpec, this returns zero or noSuchValue." + ::= { rsvpResvEntry 15 } + + + rsvpResvTSpecBurst OBJECT-TYPE + SYNTAX BurstSize + UNITS "bytes" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of the largest burst expected from + the sender at a time. + + If this is less than the sender's advertised + burst size, the receiver is asking the network + to provide flow pacing beyond what would be + provided under normal circumstances. Such pac- + ing is at the network's option." + ::= { rsvpResvEntry 16 } + + + rsvpResvTSpecMinTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The minimum message size for this flow. The + policing algorithm will treat smaller messages + as though they are this size." + ::= { rsvpResvEntry 17 } + + + rsvpResvTSpecMaxTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum message size for this flow. The + admission algorithm will reject TSpecs whose + Maximum Transmission Unit, plus the interface + headers, exceed the interface MTU." + ::= { rsvpResvEntry 18 } + + + rsvpResvRSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the requested service is Guaranteed, as + specified by rsvpResvService, this is the + clearing rate that is being requested. Other- + wise, it is zero, or the agent may return + noSuchValue." + ::= { rsvpResvEntry 19 } + + + rsvpResvRSpecSlack OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the requested service is Guaranteed, as + specified by rsvpResvService, this is the delay + slack. Otherwise, it is zero, or the agent may + return noSuchValue." + ::= { rsvpResvEntry 20 } + + + rsvpResvInterval OBJECT-TYPE + SYNTAX RefreshInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval between refresh messages as ad- + vertised by the Next Hop." + ::= { rsvpResvEntry 21 } + + + rsvpResvScope OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65536)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + "The contents of the scope object, displayed as + an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length. + + If the length is non-zero, this contains a + series of IP4 or IP6 addresses." + ::= { rsvpResvEntry 22 } + + + rsvpResvShared OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, a reservation shared among senders is + requested. If FALSE, a reservation specific to + this sender is requested." + ::= { rsvpResvEntry 23 } + + + rsvpResvExplicit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, individual senders are listed using + Filter Specifications. If FALSE, all senders + are implicitly selected. The Scope Object will + contain a list of senders that need to receive + this reservation request for the purpose of + routing the RESV message." + ::= { rsvpResvEntry 24 } + + rsvpResvRSVPHop OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, the node believes that the previous + IP hop is an RSVP hop. If FALSE, the node be- + lieves that the previous IP hop may not be an + RSVP hop." + ::= { rsvpResvEntry 25 } + + + rsvpResvLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last change in this reserva- + tion request; This is either the first time it + was received or the time of the most recent + change in parameters." + ::= { rsvpResvEntry 26 } + + + rsvpResvPolicy OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65536)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contents of the policy object, displayed + as an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length." + ::= { rsvpResvEntry 27 } + + + rsvpResvStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' for all active RESV messages. This + object may be used to install static RESV in- + formation or delete RESV information." + ::= { rsvpResvEntry 28 } + + + rsvpResvTTL OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TTL value in the RSVP header that was last + received." + ::= { rsvpResvEntry 29 } + + + rsvpResvFlowId OBJECT-TYPE + SYNTAX INTEGER (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow ID that this receiver is using, if + this is an IPv6 session." + ::= { rsvpResvEntry 30 } + + +-- The RSVP Reservation Requests Forwarded Table contains the +-- information displayed by receivers regarding their needs with +-- respect to sessions and senders. It is in essence a list of the +-- valid RESV messages that the RSVP Router or Host is sending +-- to its upstream neighbors. + + + rsvpResvFwdNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to + rsvpResvFwdNumber as described in 'Textual Con- + ventions for SNMPv2'. The network manager + reads the object, and then writes the value + back in the SET that creates a new instance of + rsvpResvFwdEntry. If the SET fails with the + code 'inconsistentValue', then the process must + be repeated; If the SET succeeds, then the ob- + ject is incremented, and the new instance is + created according to the manager's directions." + ::= { rsvpGenObjects 4 } + + + rsvpResvFwdTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpResvFwdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed upstream in RESV messages." + ::= { rsvpObjects 5 } + + + rsvpResvFwdEntry OBJECT-TYPE + SYNTAX RsvpResvFwdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the state information + displayed upstream in an RESV message concern- + ing a single sender." + INDEX { rsvpSessionNumber, rsvpResvFwdNumber } + ::= { rsvpResvFwdTable 1 } + + + RsvpResvFwdEntry ::= + SEQUENCE { + rsvpResvFwdNumber SessionNumber, + rsvpResvFwdType SessionType, + rsvpResvFwdDestAddr OCTET STRING, + rsvpResvFwdSenderAddr OCTET STRING, + rsvpResvFwdDestAddrLength INTEGER, + rsvpResvFwdSenderAddrLength INTEGER, + rsvpResvFwdProtocol Protocol, + rsvpResvFwdDestPort Port, + rsvpResvFwdPort Port, + rsvpResvFwdHopAddr OCTET STRING, + rsvpResvFwdHopLih Integer32, + rsvpResvFwdInterface InterfaceIndex, + rsvpResvFwdService QosService, + rsvpResvFwdTSpecRate BitRate, + rsvpResvFwdTSpecPeakRate BitRate, + rsvpResvFwdTSpecBurst BurstSize, + rsvpResvFwdTSpecMinTU MessageSize, + rsvpResvFwdTSpecMaxTU MessageSize, + rsvpResvFwdRSpecRate BitRate, + rsvpResvFwdRSpecSlack Integer32, + rsvpResvFwdInterval RefreshInterval, + rsvpResvFwdScope OCTET STRING, + rsvpResvFwdShared TruthValue, + rsvpResvFwdExplicit TruthValue, + rsvpResvFwdRSVPHop TruthValue, + rsvpResvFwdLastChange TimeStamp, + rsvpResvFwdPolicy OCTET STRING, + rsvpResvFwdStatus RowStatus, + rsvpResvFwdTTL INTEGER, + rsvpResvFwdFlowId INTEGER + } + + + rsvpResvFwdNumber OBJECT-TYPE + SYNTAX SessionNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The number of this reservation request. This + is for SNMP Indexing purposes only and has no + relation to any protocol value." + ::= { rsvpResvFwdEntry 1 } + + + rsvpResvFwdType OBJECT-TYPE + SYNTAX SessionType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of session (IP4, IP6, IP6 with flow + information, etc)." + ::= { rsvpResvFwdEntry 2 } + + + rsvpResvFwdDestAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination address used by all senders in + this session. This object may not be changed + when the value of the RowStatus object is 'ac- + tive'." + ::= { rsvpResvFwdEntry 3 } + + + rsvpResvFwdSenderAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source address of the sender selected by + this reservation. The value of all zeroes in- + dicates 'all senders'. This object may not be + changed when the value of the RowStatus object + is 'active'." + ::= { rsvpResvFwdEntry 4 } + + + rsvpResvFwdDestAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of the destination address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 5 } + + + rsvpResvFwdSenderAddrLength OBJECT-TYPE + SYNTAX INTEGER(0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The length of the sender's address in bits. + This is the CIDR Prefix Length, which for IP4 + hosts and multicast addresses is 32 bits. This + object may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 6 } + + + rsvpResvFwdProtocol OBJECT-TYPE + SYNTAX Protocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP Protocol used by a session. for secure + sessions, this indicates IP Security. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 7 } + + + rsvpResvFwdDestPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a destina- + tion port for all senders in this session. If + the IP protocol in use, specified by + rsvpResvFwdProtocol, is 50 (ESP) or 51 (AH), + this represents a virtual destination port + number. A value of zero indicates that the IP + protocol in use does not have ports. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 8 } + + + rsvpResvFwdPort OBJECT-TYPE + SYNTAX Port + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UDP or TCP port number used as a source + port for this sender in this session. If the + IP protocol in use, specified by + rsvpResvFwdProtocol is 50 (ESP) or 51 (AH), + this represents a generalized port identifier + (GPI). A value of zero indicates that the IP + protocol in use does not have ports. This ob- + ject may not be changed when the value of the + RowStatus object is 'active'." + ::= { rsvpResvFwdEntry 9 } + + + rsvpResvFwdHopAddr OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address of the (previous) RSVP that will + receive this message." + ::= { rsvpResvFwdEntry 10 } + + + rsvpResvFwdHopLih OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Logical Interface Handle sent to the (pre- + vious) RSVP that will receive this message." + ::= { rsvpResvFwdEntry 11 } + + + rsvpResvFwdInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ifIndex value of the interface on which + this RESV message was most recently sent." + ::= { rsvpResvFwdEntry 12 } + + + rsvpResvFwdService OBJECT-TYPE + SYNTAX QosService + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The QoS Service classification requested." + ::= { rsvpResvFwdEntry 13 } + + + rsvpResvFwdTSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Average Bit Rate of the sender's data + stream. Within a transmission burst, the ar- + rival rate may be as fast as rsvpResvFwdTSpec- + PeakRate (if supported by the service model); + however, averaged across two or more burst in- + tervals, the rate should not exceed + rsvpResvFwdTSpecRate. + + Note that this is a prediction, often based on + the general capability of a type of codec or + particular encoding; the measured average rate + may be significantly lower." + ::= { rsvpResvFwdEntry 14 } + + + rsvpResvFwdTSpecPeakRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Peak Bit Rate of the sender's data stream + Traffic arrival is not expected to exceed this + rate at any time, apart from the effects of + jitter in the network. If not specified in the + TSpec, this returns zero or noSuchValue." + ::= { rsvpResvFwdEntry 15 } + + + rsvpResvFwdTSpecBurst OBJECT-TYPE + SYNTAX BurstSize + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest burst expected from + the sender at a time. + + If this is less than the sender's advertised + burst size, the receiver is asking the network + to provide flow pacing beyond what would be + provided under normal circumstances. Such pac- + ing is at the network's option." + ::= { rsvpResvFwdEntry 16 } + + + rsvpResvFwdTSpecMinTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum message size for this flow. The + policing algorithm will treat smaller messages + as though they are this size." + ::= { rsvpResvFwdEntry 17 } + + + rsvpResvFwdTSpecMaxTU OBJECT-TYPE + SYNTAX MessageSize + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum message size for this flow. The + admission algorithm will reject TSpecs whose + Maximum Transmission Unit, plus the interface + headers, exceed the interface MTU." + ::= { rsvpResvFwdEntry 18 } + + + rsvpResvFwdRSpecRate OBJECT-TYPE + SYNTAX BitRate + UNITS "bytes per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the requested service is Guaranteed, as + specified by rsvpResvService, this is the + clearing rate that is being requested. Other- + wise, it is zero, or the agent may return + noSuchValue." + ::= { rsvpResvFwdEntry 19 } + + + rsvpResvFwdRSpecSlack OBJECT-TYPE + SYNTAX Integer32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the requested service is Guaranteed, as + specified by rsvpResvService, this is the delay + slack. Otherwise, it is zero, or the agent may + return noSuchValue." + ::= { rsvpResvFwdEntry 20 } + + + rsvpResvFwdInterval OBJECT-TYPE + SYNTAX RefreshInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interval between refresh messages adver- + tised to the Previous Hop." + ::= { rsvpResvFwdEntry 21 } + + + rsvpResvFwdScope OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65536)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The contents of the scope object, displayed as + an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length." + ::= { rsvpResvFwdEntry 22 } + + + rsvpResvFwdShared OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If TRUE, a reservation shared among senders is + requested. If FALSE, a reservation specific to + this sender is requested." + ::= { rsvpResvFwdEntry 23 } + + + rsvpResvFwdExplicit OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If TRUE, individual senders are listed using + Filter Specifications. If FALSE, all senders + are implicitly selected. The Scope Object will + contain a list of senders that need to receive + this reservation request for the purpose of + routing the RESV message." + ::= { rsvpResvFwdEntry 24 } + + + rsvpResvFwdRSVPHop OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If TRUE, the node believes that the next IP + hop is an RSVP hop. If FALSE, the node be- + lieves that the next IP hop may not be an RSVP + hop." + ::= { rsvpResvFwdEntry 25 } + + + rsvpResvFwdLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last change in this request; + This is either the first time it was sent or + the time of the most recent change in parame- + ters." + ::= { rsvpResvFwdEntry 26 } + + + rsvpResvFwdPolicy OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65536)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The contents of the policy object, displayed + as an uninterpreted string of octets, including + the object header. In the absence of such an + object, this should be of zero length." + ::= { rsvpResvFwdEntry 27 } + + + rsvpResvFwdStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "'active' for all active RESV messages. This + object may be used to delete RESV information." + ::= { rsvpResvFwdEntry 28 } + + + rsvpResvFwdTTL OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TTL value in the RSVP header that was last + received." + ::= { rsvpResvFwdEntry 29 } + + + rsvpResvFwdFlowId OBJECT-TYPE + SYNTAX INTEGER (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The flow ID that this receiver is using, if + this is an IPv6 session." + ::= { rsvpResvFwdEntry 30 } + + +-- The RSVP Interface Attributes Database contains the +-- RSVP-specific information for an interface. Information +-- that is shared with other reservation procedures such +-- as ST-II is in the Integrated Interface Attributes +-- Database. + + rsvpIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RSVP-specific attributes of the system's + interfaces." + ::= { rsvpObjects 6 } + + + rsvpIfEntry OBJECT-TYPE + SYNTAX RsvpIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RSVP-specific attributes of the a given + interface." + INDEX { ifIndex } + ::= { rsvpIfTable 1 } + +RsvpIfEntry ::= + SEQUENCE { + rsvpIfUdpNbrs Gauge32, + rsvpIfIpNbrs Gauge32, + rsvpIfNbrs Gauge32, + rsvpIfEnabled TruthValue, + rsvpIfUdpRequired TruthValue, + rsvpIfRefreshBlockadeMultiple INTEGER, + rsvpIfRefreshMultiple INTEGER, + rsvpIfTTL INTEGER, + rsvpIfRefreshInterval TimeInterval, + rsvpIfRouteDelay TimeInterval, + rsvpIfStatus RowStatus + } + + + rsvpIfUdpNbrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of neighbors perceived to be using + only the RSVP UDP Encapsulation." + ::= { rsvpIfEntry 1 } + + + rsvpIfIpNbrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of neighbors perceived to be using + only the RSVP IP Encapsulation." + ::= { rsvpIfEntry 2 } + + + rsvpIfNbrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of neighbors currently perceived; + this will exceed rsvpIfIpNbrs + rsvpIfUdpNbrs + by the number of neighbors using both encapsu- + lations." + ::= { rsvpIfEntry 3 } + + + rsvpIfRefreshBlockadeMultiple OBJECT-TYPE + SYNTAX INTEGER (1..65536) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the RSVP value 'Kb', Which is the + minimum number of refresh intervals that + blockade state will last once entered." + DEFVAL { 4 } + ::= { rsvpIfEntry 4 } + + + rsvpIfRefreshMultiple OBJECT-TYPE + SYNTAX INTEGER (1..65536) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the RSVP value 'K', which is the + number of refresh intervals which must elapse + (minimum) before a PATH or RESV message which + is not being refreshed will be aged out." + DEFVAL { 3 } + ::= { rsvpIfEntry 5 } + + + rsvpIfTTL OBJECT-TYPE + SYNTAX INTEGER (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of SEND_TTL used on this interface + for messages this node originates. If set to + zero, the node determines the TTL via other + means." + DEFVAL { 0 } -- which is to say, no override + ::= { rsvpIfEntry 6 } + + + rsvpIfRefreshInterval OBJECT-TYPE + SYNTAX TimeInterval + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the RSVP value 'R', which is the + minimum period between refresh transmissions of + a given PATH or RESV message on an interface." + DEFVAL { 3000 } -- 30 seconds + ::= { rsvpIfEntry 7 } + + + rsvpIfRouteDelay OBJECT-TYPE + SYNTAX TimeInterval + UNITS "hundredths of a second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The approximate period from the time a route + is changed to the time a resulting message ap- + pears on the interface." + DEFVAL { 200 } -- 2 seconds + ::= { rsvpIfEntry 8 } + + + rsvpIfEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, RSVP is enabled on this Interface. + If FALSE, RSVP is not enabled on this inter- + face." + ::= { rsvpIfEntry 9 } + + + rsvpIfUdpRequired OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If TRUE, manual configuration forces the use + of UDP encapsulation on the interface. If + FALSE, UDP encapsulation is only used if rsvpI- + fUdpNbrs is not zero." + + ::= { rsvpIfEntry 10 } + + + rsvpIfStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' on interfaces that are configured for + RSVP." + ::= { rsvpIfEntry 11 } + + +-- The RSVP Neighbor Database lists the neighbors the RSVP +-- process currently is receiving messages from. + + + rsvpNbrTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing the Neighbors of an + RSVP system." + ::= { rsvpObjects 7 } + + + rsvpNbrEntry OBJECT-TYPE + SYNTAX RsvpNbrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information describing a single RSVP Neigh- + bor." + INDEX { ifIndex, rsvpNbrAddress } + ::= { rsvpNbrTable 1 } + +RsvpNbrEntry ::= + SEQUENCE { + rsvpNbrAddress OCTET STRING, + rsvpNbrProtocol RsvpEncapsulation, + rsvpNbrStatus RowStatus + } + + rsvpNbrAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP4 or IP6 Address used by this neighbor. + This object may not be changed when the value + of the RowStatus object is 'active'." + ::= { rsvpNbrEntry 1 } + + + rsvpNbrProtocol OBJECT-TYPE + SYNTAX RsvpEncapsulation + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The encapsulation being used by this neigh- + bor." + ::= { rsvpNbrEntry 2 } + + + rsvpNbrStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "'active' for all neighbors. This object may + be used to configure neighbors. In the pres- + ence of configured neighbors, the implementa- + tion may (but is not required to) limit the set + of valid neighbors to those configured." + ::= { rsvpNbrEntry 3 } + + +-- +-- Notifications used to signal events +-- + + rsvpNotifications OBJECT IDENTIFIER + ::= { rsvpNotificationsPrefix 0 } + + + newFlow NOTIFICATION-TYPE + OBJECTS { + intSrvFlowStatus, rsvpSessionDestAddr, + rsvpResvFwdStatus, rsvpResvStatus, rsvpSenderStatus + } + STATUS current + DESCRIPTION + "The newFlow trap indicates that the originat- + ing system has installed a new flow in its + classifier, or (when reservation authorization + is in view) is prepared to install such a flow + in the classifier and is requesting authoriza- + tion. The objects included with the Notifica- + tion may be used to read further information + using the Integrated Services and RSVP MIBs. + Authorization or non-authorization may be + enacted by a write to the variable intSrvFlowS- + tatus." + ::= { rsvpNotifications 1 } + + + lostFlow NOTIFICATION-TYPE + OBJECTS { + intSrvFlowStatus, rsvpSessionDestAddr, + rsvpResvFwdStatus, rsvpResvStatus, rsvpSenderStatus + } + STATUS current + DESCRIPTION + "The lostFlow trap indicates that the originat- + ing system has removed a flow from its classif- + ier." + ::= { rsvpNotifications 2 } + + +-- conformance information + + +rsvpGroups OBJECT IDENTIFIER ::= { rsvpConformance 1 } +rsvpCompliances OBJECT IDENTIFIER ::= { rsvpConformance 2 } + +-- compliance statements + + + rsvpCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement. Note that the im- + plementation of this module requires implemen- + tation of the Integrated Services MIB as well." + MODULE -- this module + MANDATORY-GROUPS { + rsvpSessionGroup, rsvpSenderGroup, rsvpResvGroup, + rsvpIfGroup, rsvpNbrGroup + } + + GROUP rsvpResvFwdGroup + DESCRIPTION + "The Reservation Requests table is appropriate + in implementations that store upstream reserva- + tion messages, but not appropriate in implemen- + tations which calculate them on each transmis- + sion." + + GROUP rsvpNotificationGroup + DESCRIPTION + "The notifications in this module may be used to + advise a network management station of changes in + flow status, and are required when this use is in + view." + + OBJECT rsvpSessionRequests + MIN-ACCESS not-accessible + DESCRIPTION + "This object is optional." + + OBJECT rsvpSenderType + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderDestAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderDestAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderProtocol + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderDestPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderHopAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderHopLih + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderInterface + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecPeakRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecBurst + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecMinTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderTSpecMaxTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderInterval + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderRSVPHop + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderPolicy + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecBreak + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecHopCount + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecPathBw + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecMinLatency + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecMtu + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderAdspecGuaranteedSvc + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedBreak + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedCtot + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedDtot + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedCsum + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedDsum + MIN-ACCESS read-only + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedHopCount + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedPathBw + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedMinLatency + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecGuaranteedMtu + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Guaranteed Service." + + OBJECT rsvpSenderAdspecCtrlLoadSvc + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadBreak + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadHopCount + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadPathBw + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadMinLatency + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderAdspecCtrlLoadMtu + MIN-ACCESS not-accessible + DESCRIPTION + "This may be not-accessible if the system does not + support Controlled Load." + + OBJECT rsvpSenderStatus + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpSenderFlowId + MIN-ACCESS not-accessible + DESCRIPTION + "This object is needed only in a system that imple- + ments IPv6." + + + OBJECT rsvpResvType + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvDestAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvSenderAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvDestAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvSenderAddrLength + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvProtocol + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvDestPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvPort + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvHopAddr + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvHopLih + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvInterface + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvService + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecPeakRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecBurst + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecMinTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvTSpecMaxTU + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvRSpecRate + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvRSpecSlack + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvInterval + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvScope + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvShared + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvExplicit + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvRSVPHop + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvPolicy + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvStatus + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + OBJECT rsvpResvFlowId + MIN-ACCESS not-accessible + DESCRIPTION + "This object is needed only in a system that imple- + ments IPv6." + + OBJECT rsvpResvFwdStatus + MIN-ACCESS read-only + DESCRIPTION + "read-create access is not required. This may be + read-only." + + OBJECT rsvpResvFwdFlowId + MIN-ACCESS not-accessible + DESCRIPTION + "This object is needed only in a system that imple- + ments IPv6." + + ::= { rsvpCompliances 1 } + + + rsvpSessionGroup OBJECT-GROUP + OBJECTS { + rsvpSessionType, rsvpSessionDestAddr, + rsvpSessionDestAddrLength, rsvpSessionProtocol, + rsvpSessionPort, rsvpSessionSenders, rsvpSessionReceivers, + rsvpSessionRequests + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 1 } + + rsvpSenderGroup OBJECT-GROUP + OBJECTS { + rsvpSenderType, rsvpSenderDestAddr, rsvpSenderAddr, + rsvpSenderDestAddrLength, rsvpSenderAddrLength, + rsvpSenderProtocol, rsvpSenderDestPort, rsvpSenderPort, + rsvpSenderHopAddr, rsvpSenderHopLih, rsvpSenderInterface, + rsvpSenderTSpecRate, rsvpSenderTSpecPeakRate, + rsvpSenderTSpecBurst, rsvpSenderTSpecMinTU, + rsvpSenderTSpecMaxTU, rsvpSenderInterval, + rsvpSenderLastChange, rsvpSenderStatus, + rsvpSenderRSVPHop, rsvpSenderPolicy, + rsvpSenderAdspecBreak, rsvpSenderAdspecHopCount, + rsvpSenderAdspecPathBw, rsvpSenderAdspecMinLatency, + rsvpSenderAdspecMtu, rsvpSenderAdspecGuaranteedSvc, + rsvpSenderAdspecGuaranteedBreak, + rsvpSenderAdspecGuaranteedCtot, + rsvpSenderAdspecGuaranteedDtot, + rsvpSenderAdspecGuaranteedCsum, + rsvpSenderAdspecGuaranteedDsum, + rsvpSenderAdspecGuaranteedHopCount, + rsvpSenderAdspecGuaranteedPathBw, + rsvpSenderAdspecGuaranteedMinLatency, + rsvpSenderAdspecGuaranteedMtu, rsvpSenderAdspecCtrlLoadSvc, + rsvpSenderAdspecCtrlLoadBreak, + rsvpSenderAdspecCtrlLoadHopCount, + rsvpSenderAdspecCtrlLoadPathBw, + rsvpSenderAdspecCtrlLoadMinLatency, + rsvpSenderAdspecCtrlLoadMtu, rsvpSenderNewIndex + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 2 } + + + rsvpResvGroup OBJECT-GROUP + OBJECTS { + rsvpResvType, rsvpResvDestAddr, rsvpResvSenderAddr, + rsvpResvDestAddrLength, rsvpResvSenderAddrLength, + rsvpResvProtocol, rsvpResvDestPort, rsvpResvPort, + rsvpResvHopAddr, rsvpResvHopLih, rsvpResvInterface, + rsvpResvService, rsvpResvTSpecRate, rsvpResvTSpecBurst, + rsvpResvTSpecPeakRate, rsvpResvTSpecMinTU, + rsvpResvTSpecMaxTU, rsvpResvRSpecRate, + rsvpResvRSpecSlack, rsvpResvInterval, + rsvpResvScope, rsvpResvShared, rsvpResvExplicit, + rsvpResvRSVPHop, rsvpResvLastChange, rsvpResvPolicy, + rsvpResvStatus, rsvpResvNewIndex + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 3 } + + + rsvpResvFwdGroup OBJECT-GROUP + OBJECTS { + rsvpResvFwdType, rsvpResvFwdDestAddr, rsvpResvFwdSenderAddr, + rsvpResvFwdDestAddrLength, rsvpResvFwdSenderAddrLength, + rsvpResvFwdProtocol, rsvpResvFwdDestPort, rsvpResvFwdPort, + rsvpResvFwdHopAddr, rsvpResvFwdHopLih, rsvpResvFwdInterface, + rsvpResvFwdNewIndex, rsvpResvFwdService, + rsvpResvFwdTSpecPeakRate, rsvpResvFwdTSpecMinTU, + rsvpResvFwdTSpecMaxTU, rsvpResvFwdTSpecRate, + rsvpResvFwdTSpecBurst, rsvpResvFwdRSpecRate, + rsvpResvFwdRSpecSlack, rsvpResvFwdInterval, + rsvpResvFwdScope, rsvpResvFwdShared, rsvpResvFwdExplicit, + rsvpResvFwdRSVPHop, rsvpResvFwdLastChange, + rsvpResvFwdPolicy, rsvpResvFwdStatus + } + STATUS current + DESCRIPTION + "These objects are optional, used for some RSVP + Systems." + ::= { rsvpGroups 4 } + + + rsvpIfGroup OBJECT-GROUP + OBJECTS { + rsvpIfUdpNbrs, rsvpIfIpNbrs, rsvpIfNbrs, rsvpIfEnabled, + rsvpIfUdpRequired, rsvpIfRefreshBlockadeMultiple, + rsvpIfRefreshMultiple, rsvpIfRefreshInterval, rsvpIfTTL, + rsvpIfRouteDelay, rsvpIfStatus + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 6 } + + + rsvpNbrGroup OBJECT-GROUP + OBJECTS { + rsvpNbrProtocol, rsvpNbrStatus + } + STATUS current + DESCRIPTION + "These objects are required for RSVP Systems." + ::= { rsvpGroups 7 } + + + rsvpNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { newFlow, lostFlow } + STATUS current + DESCRIPTION + "This notification is required for Systems sup- + porting the RSVP Policy Module using an SNMP + interface to the Policy Manager." + ::= { rsvpGroups 8 } +END diff --git a/mibs/ietf/RTP-MIB b/mibs/ietf/RTP-MIB new file mode 100644 index 0000000..ea6668f --- /dev/null +++ b/mibs/ietf/RTP-MIB @@ -0,0 +1,1012 @@ +RTP-MIB DEFINITIONS ::= BEGIN +IMPORTS + Counter32, Counter64, Gauge32, mib-2, Integer32, + MODULE-IDENTITY, + OBJECT-TYPE, Unsigned32 FROM SNMPv2-SMI + RowStatus, TAddress, + TDomain, TestAndIncr, + TimeStamp, TruthValue FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF + Utf8String FROM SYSAPPL-MIB + InterfaceIndex FROM IF-MIB; + +rtpMIB MODULE-IDENTITY + LAST-UPDATED "200010020000Z" -- 2 October 2000 + ORGANIZATION + "IETF AVT Working Group + Email: rem-conf@es.net" + CONTACT-INFO + "Mark Baugher + Postal: Intel Corporation + 2111 NE 25th Avenue + Hillsboro, OR 97124 + + + United States + Tel: +1 503 466 8406 + Email: mbaugher@passedge.com + + Bill Strahm + Postal: Intel Corporation + 2111 NE 25th Avenue + Hillsboro, OR 97124 + United States + Tel: +1 503 264 4632 + Email: bill.strahm@intel.com + + Irina Suconick + Postal: Ennovate Networks + 60 Codman Hill Rd., + Boxboro, Ma 01719 + Tel: +1 781-505-2155 + Email: irina@ennovatenetworks.com" + + DESCRIPTION + "The managed objects of RTP systems. The MIB is + structured around three types of information. + 1. General information about RTP sessions such + as the session address. + 2. Information about RTP streams being sent to + an RTP session by a particular sender. + 3. Information about RTP streams received on an + RTP session by a particular receiver from a + particular sender. + There are two types of RTP Systems, RTP hosts and + RTP monitors. As described below, certain objects + are unique to a particular type of RTP System. An + RTP host may also function as an RTP monitor. + Refer to RFC 1889, 'RTP: A Transport Protocol for + Real-Time Applications,' section 3.0, for definitions." + REVISION "200010020000Z" -- 2 October 2000 + DESCRIPTION "Initial version of this MIB. + Published as RFC 2959." + +::= { mib-2 87 } + +-- +-- OBJECTS +-- +rtpMIBObjects OBJECT IDENTIFIER ::= { rtpMIB 1 } +rtpConformance OBJECT IDENTIFIER ::= { rtpMIB 2 } + +-- + + +-- SESSION NEW INDEX +-- +rtpSessionNewIndex OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to assign values to rtpSessionIndex + as described in 'Textual Conventions for SMIv2'. For an RTP + system that supports the creation of rows, the network manager + would read the object, and then write the value back in + the Set that creates a new instance of rtpSessionEntry. If + the Set fails with the code 'inconsistentValue,' then the + process must be repeated; If the Set succeeds, then the object + is incremented, and the new instance is created according to + the manager's directions. However, if the RTP agent is not + acting as a monitor, only the RTP agent may create conceptual + rows in the RTP session table." + ::= { rtpMIBObjects 1 } + +-- +-- SESSION INVERSE TABLE +-- +rtpSessionInverseTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpSessionInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maps rtpSessionDomain, rtpSessionRemAddr, and rtpSessionLocAddr + TAddress pairs to one or more rtpSessionIndex values, each + describing a row in the rtpSessionTable. This makes it possible + to retrieve the row(s) in the rtpSessionTable corresponding to a + given session without having to walk the entire (potentially + large) table." + ::= { rtpMIBObjects 2 } + +rtpSessionInverseEntry OBJECT-TYPE + SYNTAX RtpSessionInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to exactly one entry in the + rtpSessionTable - the entry containing the tuple, + rtpSessionDomain, rtpSessionRemAddr, rtpSessionLocAddr + and rtpSessionIndex." + INDEX { rtpSessionDomain, rtpSessionRemAddr, rtpSessionLocAddr, + rtpSessionIndex } + ::= { rtpSessionInverseTable 1 } + + +RtpSessionInverseEntry ::= SEQUENCE { + rtpSessionInverseStartTime TimeStamp + } + +rtpSessionInverseStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpSessionInverseEntry 1 } + +-- +-- SESSION TABLE +-- +rtpSessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "There's one entry in rtpSessionTable for each RTP session + on which packets are being sent, received, and/or + monitored." + ::= { rtpMIBObjects 3 } + +rtpSessionEntry OBJECT-TYPE + SYNTAX RtpSessionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Data in rtpSessionTable uniquely identify an RTP session. A + host RTP agent MUST create a read-only row for each session to + which packets are being sent or received. Rows MUST be created + by the RTP Agent at the start of a session when one or more + senders or receivers are observed. Rows created by an RTP agent + MUST be deleted when the session is over and there are no + rtpRcvrEntry and no rtpSenderEntry for this session. An RTP + session SHOULD be monitored to create management information on + all RTP streams being sent or received when the + rtpSessionMonitor has the TruthValue of 'true(1)'. An RTP + monitor SHOULD permit row creation with the side effect of + causing the RTP System to join the multicast session for the + purposes of gathering management information (additional + conceptual rows are created in the rtpRcvrTable and + rtpSenderTable). Thus, rtpSessionTable rows SHOULD be created + for RTP session monitoring purposes. Rows created by a + management application SHOULD be deleted via SNMP operations by + + + management applications. Rows created by management operations + are deleted by management operations by setting + rtpSessionRowStatus to 'destroy(6)'." + INDEX { rtpSessionIndex } + ::= { rtpSessionTable 1 } + +RtpSessionEntry ::= SEQUENCE { + rtpSessionIndex Integer32, + rtpSessionDomain TDomain, + rtpSessionRemAddr TAddress, + rtpSessionLocAddr TAddress, + rtpSessionIfIndex InterfaceIndex, + rtpSessionSenderJoins Counter32, + rtpSessionReceiverJoins Counter32, + rtpSessionByes Counter32, + rtpSessionStartTime TimeStamp, + rtpSessionMonitor TruthValue, + rtpSessionRowStatus RowStatus + } + +rtpSessionIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the conceptual row which is for SNMP purposes + only and has no relation to any protocol value. There is + no requirement that these rows are created or maintained + sequentially." + ::= { rtpSessionEntry 1 } + +rtpSessionDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The transport-layer protocol used for sending or receiving + the stream of RTP data packets on this session. + Cannot be changed if rtpSessionRowStatus is 'active'." + ::= { rtpSessionEntry 2 } + +rtpSessionRemAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address to which RTP packets are sent by the RTP system. + In an IP multicast RTP session, this is the single address used + + + by all senders and receivers of RTP session data. In a unicast + RTP session this is the unicast address of the remote RTP system. + 'The destination address pair may be common for all participants, + as in the case of IP multicast, or may be different for each, as + in the case of individual unicast network address pairs.' See + RFC 1889, 'RTP: A Transport Protocol for Real-Time Applications,' + sec. 3. The transport service is identified by rtpSessionDomain. + For snmpUDPDomain, this is an IP address and even-numbered UDP + Port with the RTCP being sent on the next higher odd-numbered + port, see RFC 1889, sec. 5." + ::= { rtpSessionEntry 3 } + +rtpSessionLocAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local address used by the RTP system. In an IP multicast + RTP session, rtpSessionRemAddr will be the same IP multicast + address as rtpSessionLocAddr. In a unicast RTP session, + rtpSessionRemAddr and rtpSessionLocAddr will have different + unicast addresses. See RFC 1889, 'RTP: A Transport Protocol for + Real-Time Applications,' sec. 3. The transport service is + identified by rtpSessionDomain. For snmpUDPDomain, this is an IP + address and even-numbered UDP Port with the RTCP being sent on + the next higher odd-numbered port, see RFC 1889, sec. 5." + ::= { rtpSessionEntry 4 } + +rtpSessionIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex value is set to the corresponding value + from IF-MIB (See RFC 2233, 'The Interfaces Group MIB using + SMIv2'). This is the interface that the RTP stream is being sent + to or received from, or in the case of an RTP Monitor the + interface that RTCP packets will be received on. Cannot be + changed if rtpSessionRowStatus is 'active'." + ::= { rtpSessionEntry 5 } + +rtpSessionSenderJoins OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of senders that have been observed to have + joined the session since this conceptual row was created + + + (rtpSessionStartTime). A sender 'joins' an RTP + session by sending to it. Senders that leave and then + re-join following an RTCP BYE (see RFC 1889, 'RTP: A + Transport Protocol for Real-Time Applications,' sec. 6.6) + or session timeout may be counted twice. Every time a new + RTP sender is detected either using RTP or RTCP, this counter + is incremented." + ::= { rtpSessionEntry 6 } + +rtpSessionReceiverJoins OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of receivers that have been been observed to + have joined this session since this conceptual row was + created (rtpSessionStartTime). A receiver 'joins' an RTP + session by sending RTCP Receiver Reports to the session. + Receivers that leave and then re-join following an RTCP BYE + (see RFC 1889, 'RTP: A Transport Protocol for Real-Time + Applications,' sec. 6.6) or session timeout may be counted + twice." + ::= { rtpSessionEntry 7 } + +rtpSessionByes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of RTCP BYE (see RFC 1889, 'RTP: A Transport + Protocol for Real-Time Applications,' sec. 6.6) messages + received by this entity." + ::= { rtpSessionEntry 8 } + +rtpSessionStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpSessionEntry 9 } + +rtpSessionMonitor OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "Boolean, Set to 'true(1)' if remote senders or receivers in + addition to the local RTP System are to be monitored using RTCP. + RTP Monitors MUST initialize to 'true(1)' and RTP Hosts SHOULD + initialize this 'false(2)'. Note that because 'host monitor' + systems are receiving RTCP from their remote participants they + MUST set this value to 'true(1)'." + ::= { rtpSessionEntry 10 } + +rtpSessionRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Value of 'active' when RTP or RTCP messages are being + sent or received by an RTP System. A newly-created + conceptual row must have the all read-create objects + initialized before becoming 'active'. + A conceptual row that is in the 'notReady' or 'notInService' + state MAY be removed after 5 minutes." + ::= { rtpSessionEntry 11 } + +-- +-- SENDER INVERSE TABLE +-- +rtpSenderInverseTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpSenderInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maps rtpSenderAddr, rtpSessionIndex, to the rtpSenderSSRC + index of the rtpSenderTable. This table allows management + applications to find entries sorted by rtpSenderAddr rather than + sorted by rtpSessionIndex. Given the rtpSessionDomain and + rtpSenderAddr, a set of rtpSessionIndex and rtpSenderSSRC values + can be returned from a tree walk. When rtpSessionIndex is + specified in the SNMP Get-Next operations, one or more + rtpSenderSSRC values may be returned." + ::= { rtpMIBObjects 4 } + +rtpSenderInverseEntry OBJECT-TYPE + SYNTAX RtpSenderInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to exactly one entry in the + rtpSenderTable - the entry containing the index pair, + rtpSessionIndex, rtpSenderSSRC." + INDEX { rtpSessionDomain, rtpSenderAddr, rtpSessionIndex, + + + rtpSenderSSRC } + ::= { rtpSenderInverseTable 1 } + +RtpSenderInverseEntry ::= SEQUENCE { + rtpSenderInverseStartTime TimeStamp + } + +rtpSenderInverseStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpSenderInverseEntry 1 } + +-- +-- SENDERS TABLE +-- +rtpSenderTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpSenderEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of information about a sender or senders to an RTP + Session. RTP sending hosts MUST have an entry in this table + for each stream being sent. RTP receiving hosts MAY have an + entry in this table for each sending stream being received by + this host. RTP monitors MUST create an entry for each observed + sender to a multicast RTP Session as a side-effect when a + conceptual row in the rtpSessionTable is made 'active' by a + manager." + ::= { rtpMIBObjects 5 } + +rtpSenderEntry OBJECT-TYPE + SYNTAX RtpSenderEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information from a single RTP Sender + Synchronization Source (SSRC, see RFC 1889 'RTP: A Transport + Protocol for Real-Time Applications' sec.6). The session is + identified to the the SNMP entity by rtpSessionIndex. + Rows are removed by the RTP agent when a BYE is received + from the sender or when the sender times out (see RFC + 1889, Sec. 6.2.1) or when the rtpSessionEntry is deleted." + INDEX { rtpSessionIndex, rtpSenderSSRC } + ::= { rtpSenderTable 1 } + + +RtpSenderEntry ::= SEQUENCE { + rtpSenderSSRC Unsigned32, + rtpSenderCNAME Utf8String, + rtpSenderAddr TAddress, + rtpSenderPackets Counter64, + rtpSenderOctets Counter64, + rtpSenderTool Utf8String, + rtpSenderSRs Counter32, + rtpSenderSRTime TimeStamp, + rtpSenderPT INTEGER, + rtpSenderStartTime TimeStamp + } + +rtpSenderSSRC OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RTP SSRC, or synchronization source identifier of the + sender. The RTP session address plus an SSRC uniquely + identify a sender to an RTP session (see RFC 1889, 'RTP: A + Transport Protocol for Real-Time Applications' sec.3)." + ::= { rtpSenderEntry 1 } + +rtpSenderCNAME OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RTP canonical name of the sender." + ::= { rtpSenderEntry 2 } + +rtpSenderAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unicast transport source address of the sender. In the + case of an RTP Monitor this address is the address that the + sender is using to send its RTCP Sender Reports." + ::= { rtpSenderEntry 3 } + +rtpSenderPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of RTP packets sent by this sender, or observed by + + + an RTP monitor, since rtpSenderStartTime." + ::= { rtpSenderEntry 4 } + +rtpSenderOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of non-header RTP octets sent by this sender, or observed + by an RTP monitor, since rtpSenderStartTime." + ::= { rtpSenderEntry 5 } + +rtpSenderTool OBJECT-TYPE + SYNTAX Utf8String (SIZE(0..127)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the application program source of the stream." + ::= { rtpSenderEntry 6 } + +rtpSenderSRs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of RTCP Sender Reports that have + been sent from this sender, or observed if the RTP entity + is a monitor, since rtpSenderStartTime." + ::= { rtpSenderEntry 7 } + +rtpSenderSRTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "rtpSenderSRTime is the value of SysUpTime at the time that + the last SR was received from this sender, in the case of a + monitor or receiving host. Or sent by this sender, in the + case of a sending host." + ::= { rtpSenderEntry 8 } + +rtpSenderPT OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Payload type from the RTP header of the most recently received + RTP Packet (see RFC 1889, 'RTP: A Transport Protocol for + + + Real-Time Applications' sec. 5)." + ::= { rtpSenderEntry 9 } + +rtpSenderStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpSenderEntry 10 } + +-- +-- RECEIVER INVERSE TABLE +-- +rtpRcvrInverseTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpRcvrInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Maps rtpRcvrAddr and rtpSessionIndex to the rtpRcvrSRCSSRC and + rtpRcvrSSRC indexes of the rtpRcvrTable. This table allows + management applications to find entries sorted by rtpRcvrAddr + rather than by rtpSessionIndex. Given rtpSessionDomain and + rtpRcvrAddr, a set of rtpSessionIndex, rtpRcvrSRCSSRC, and + rtpRcvrSSRC values can be returned from a tree walk. When + rtpSessionIndex is specified in SNMP Get-Next operations, one or + more rtpRcvrSRCSSRC and rtpRcvrSSRC pairs may be returned." + ::= { rtpMIBObjects 6 } + +rtpRcvrInverseEntry OBJECT-TYPE + SYNTAX RtpRcvrInverseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry corresponds to exactly one entry in the + rtpRcvrTable - the entry containing the index pair, + rtpSessionIndex, rtpRcvrSSRC." + INDEX { rtpSessionDomain, rtpRcvrAddr, rtpSessionIndex, + rtpRcvrSRCSSRC, rtpRcvrSSRC } + ::= { rtpRcvrInverseTable 1 } + +RtpRcvrInverseEntry ::= SEQUENCE { + rtpRcvrInverseStartTime TimeStamp + } + +rtpRcvrInverseStartTime OBJECT-TYPE + SYNTAX TimeStamp + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpRcvrInverseEntry 1 } + +-- +-- RECEIVERS TABLE +-- +rtpRcvrTable OBJECT-TYPE + SYNTAX SEQUENCE OF RtpRcvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of information about a receiver or receivers of RTP + session data. RTP hosts that receive RTP session packets + MUST create an entry in this table for that receiver/sender + pair. RTP hosts that send RTP session packets MAY create + an entry in this table for each receiver to their stream + using RTCP feedback from the RTP group. RTP monitors + create an entry for each observed RTP session receiver as + a side effect when a conceptual row in the rtpSessionTable + is made 'active' by a manager." + ::= { rtpMIBObjects 7 } + +rtpRcvrEntry OBJECT-TYPE + SYNTAX RtpRcvrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information from a single RTP + Synchronization Source that is receiving packets from the + sender identified by rtpRcvrSRCSSRC (SSRC, see RFC 1889, + 'RTP: A Transport Protocol for Real-Time Applications' + sec.6). The session is identified to the the RTP Agent entity + by rtpSessionIndex. Rows are removed by the RTP agent when + a BYE is received from the sender or when the sender times + out (see RFC 1889, Sec. 6.2.1) or when the rtpSessionEntry is + deleted." + INDEX { rtpSessionIndex, rtpRcvrSRCSSRC, rtpRcvrSSRC } + ::= { rtpRcvrTable 1 } + +RtpRcvrEntry ::= SEQUENCE { + rtpRcvrSRCSSRC Unsigned32, + rtpRcvrSSRC Unsigned32, + rtpRcvrCNAME Utf8String, + rtpRcvrAddr TAddress, + + + rtpRcvrRTT Gauge32, + rtpRcvrLostPackets Counter64, + rtpRcvrJitter Gauge32, + rtpRcvrTool Utf8String, + rtpRcvrRRs Counter32, + rtpRcvrRRTime TimeStamp, + rtpRcvrPT INTEGER, + rtpRcvrPackets Counter64, + rtpRcvrOctets Counter64, + rtpRcvrStartTime TimeStamp + } + +rtpRcvrSRCSSRC OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RTP SSRC, or synchronization source identifier of the + sender. The RTP session address plus an SSRC uniquely + identify a sender or receiver of an RTP stream (see RFC + 1889, 'RTP: A Transport Protocol for Real-Time + Applications' sec.3)." + ::= { rtpRcvrEntry 1 } + +rtpRcvrSSRC OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RTP SSRC, or synchronization source identifier of the + receiver. The RTP session address plus an SSRC uniquely + identify a receiver of an RTP stream (see RFC 1889, 'RTP: + A Transport Protocol for Real-Time Applications' sec.3)." + ::= { rtpRcvrEntry 2 } + +rtpRcvrCNAME OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The RTP canonical name of the receiver." + ::= { rtpRcvrEntry 3 } + +rtpRcvrAddr OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "The unicast transport address on which the receiver is + receiving RTP packets and/or RTCP Receiver Reports." + ::= { rtpRcvrEntry 4 } + +rtpRcvrRTT OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The round trip time measurement taken by the source of the + RTP stream based on the algorithm described on sec. 6 of + RFC 1889, 'RTP: A Transport Protocol for Real-Time + Applications.' This algorithm can produce meaningful + results when the RTP agent has the same clock as the stream + sender (when the RTP monitor is also the sending host for the + particular receiver). Otherwise, the entity should return + 'noSuchInstance' in response to queries against rtpRcvrRTT." + ::= { rtpRcvrEntry 5 } + +rtpRcvrLostPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of RTP packets lost as observed by this receiver + since rtpRcvrStartTime." + ::= { rtpRcvrEntry 6 } + +rtpRcvrJitter OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of delay variation as observed by this + receiver. (see RFC 1889, 'RTP: A Transport Protocol + for Real-Time Applications' sec.6.3.1 and A.8)." + ::= { rtpRcvrEntry 7 } + +rtpRcvrTool OBJECT-TYPE + SYNTAX Utf8String (SIZE(0..127)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Name of the application program source of the stream." + ::= { rtpRcvrEntry 8 } + +rtpRcvrRRs OBJECT-TYPE + SYNTAX Counter32 + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of RTCP Receiver Reports that have + been sent from this receiver, or observed if the RTP entity + is a monitor, since rtpRcvrStartTime." + ::= { rtpRcvrEntry 9 } + +rtpRcvrRRTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "rtpRcvrRRTime is the value of SysUpTime at the time that the + last RTCP Receiver Report was received from this receiver, in + the case of a monitor or RR receiver (the RTP Sender). It is + the value of SysUpTime at the time that the last RR was sent by + this receiver in the case of an RTP receiver sending the RR." + ::= { rtpRcvrEntry 10 } + +rtpRcvrPT OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Static or dynamic payload type from the RTP header (see + RFC 1889, 'RTP: A Transport Protocol for Real-Time + Applications' sec. 5)." + ::= { rtpRcvrEntry 11 } + +rtpRcvrPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of RTP packets received by this RTP host receiver + since rtpRcvrStartTime." + ::= { rtpRcvrEntry 12 } + +rtpRcvrOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of non-header RTP octets received by this receiving RTP + host since rtpRcvrStartTime." + ::= { rtpRcvrEntry 13 } + + + +rtpRcvrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was + created." + ::= { rtpRcvrEntry 14 } + +-- +-- MODULE GROUPS +-- +-- +-- There are two types of RTP Systems, RTP hosts and RTP Monitors. +-- Thus there are three kinds of objects: 1) Objects common to both +-- kinds of systems, 2) Objects unique to RTP Hosts and 3) Objects +-- unique to RTP Monitors. There is a fourth group, 4) Objects that +-- SHOULD be implemented by Multicast hosts and RTP Monitors + +rtpGroups OBJECT IDENTIFIER ::= { rtpConformance 1 } +rtpSystemGroup OBJECT-GROUP + OBJECTS { + rtpSessionDomain, + rtpSessionRemAddr, + rtpSessionIfIndex, + rtpSessionSenderJoins, + rtpSessionReceiverJoins, + rtpSessionStartTime, + rtpSessionByes, + rtpSessionMonitor, + rtpSenderCNAME, + rtpSenderAddr, + rtpSenderPackets, + rtpSenderOctets, + rtpSenderTool, + rtpSenderSRs, + rtpSenderSRTime, + rtpSenderStartTime, + rtpRcvrCNAME, + rtpRcvrAddr, + rtpRcvrLostPackets, + rtpRcvrJitter, + rtpRcvrTool, + rtpRcvrRRs, + rtpRcvrRRTime, + rtpRcvrStartTime + } + STATUS current + + + DESCRIPTION + "Objects available to all RTP Systems." + ::= { rtpGroups 1 } + +rtpHostGroup OBJECT-GROUP + OBJECTS { + rtpSessionLocAddr, + rtpSenderPT, + rtpRcvrPT, + rtpRcvrRTT, + rtpRcvrOctets, + rtpRcvrPackets + } + STATUS current + DESCRIPTION + "Objects that are available to RTP Host systems, but may not + be available to RTP Monitor systems." + ::= { rtpGroups 2 } + +rtpMonitorGroup OBJECT-GROUP + OBJECTS { + rtpSessionNewIndex, + rtpSessionRowStatus + } + STATUS current + DESCRIPTION + "Objects used to create rows in the RTP Session Table. These + objects are not needed if the system does not create rows." + ::= { rtpGroups 3 } + +rtpInverseGroup OBJECT-GROUP + OBJECTS { + rtpSessionInverseStartTime, + rtpSenderInverseStartTime, + rtpRcvrInverseStartTime + } + STATUS current + DESCRIPTION + "Objects used in the Inverse Lookup Tables." + ::= { rtpGroups 4 } + +-- +-- Compliance +-- +rtpCompliances OBJECT IDENTIFIER ::= { rtpConformance 2 } + +rtpHostCompliance MODULE-COMPLIANCE + STATUS current + + + DESCRIPTION + "Host implementations MUST comply." + MODULE RTP-MIB + MANDATORY-GROUPS { + rtpSystemGroup, + rtpHostGroup + } + GROUP rtpMonitorGroup + DESCRIPTION + "Host systems my optionally support row creation and deletion. + This would allow an RTP Host system to act as an RTP Monitor." + GROUP rtpInverseGroup + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpSessionNewIndex + MIN-ACCESS not-accessible + DESCRIPTION + "RTP system implementations support of + row creation and deletion is OPTIONAL so + implementation of this object is OPTIONAL." + OBJECT rtpSessionDomain + MIN-ACCESS read-only + DESCRIPTION + "RTP system implementation support of + row creation and deletion is OPTIONAL. When + it is not supported so write access is + OPTIONAL." + OBJECT rtpSessionRemAddr + MIN-ACCESS read-only + DESCRIPTION + "Row creation and deletion is OPTIONAL so + read-create access to this object is OPTIONAL." + OBJECT rtpSessionIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Row creation and deletion is OPTIONAL so + read-create access to this object is OPTIONAL." + OBJECT rtpSessionRowStatus + MIN-ACCESS not-accessible + DESCRIPTION + "Row creation and deletion is OPTIONAL so + read-create access to this object is OPTIONAL." + OBJECT rtpSessionInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + + + OBJECT rtpSenderInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpRcvrInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + ::= { rtpCompliances 1 } + +rtpMonitorCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Monitor implementations must comply. RTP Monitors are not + required to support creation or deletion." + MODULE RTP-MIB + MANDATORY-GROUPS { + rtpSystemGroup, + rtpMonitorGroup + } + GROUP rtpHostGroup + DESCRIPTION + "Monitor implementations may not have access to values in the + rtpHostGroup." + GROUP rtpInverseGroup + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpSessionLocAddr + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor sourcing of RTP or RTCP data packets + is OPTIONAL and implementation of this object is + OPTIONAL." + OBJECT rtpRcvrPT + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor systems may not support + retrieval of the RTP Payload Type from the RTP + header (and may receive RTCP messages only). When + queried for the payload type information" + OBJECT rtpSenderPT + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor systems may not support + retrieval of the RTP Payload Type from the RTP + + + header (and may receive RTCP messages only). When + queried for the payload type information." + OBJECT rtpRcvrOctets + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor systems may receive only the RTCP messages + and not the RTP messages that contain the octet count + of the RTP message. Thus implementation of this + object is OPTIONAL" + OBJECT rtpRcvrPackets + MIN-ACCESS not-accessible + DESCRIPTION + "RTP monitor systems may receive only the RTCP messages + and not the RTP messages that contain the octet count + of the RTP message. Thus implementation of this + object is OPTIONAL." + OBJECT rtpSessionIfIndex + MIN-ACCESS read-only + DESCRIPTION + "Row creation and deletion is OPTIONAL so + read-create access to this object is OPTIONAL." + OBJECT rtpSessionInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpSenderInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + OBJECT rtpRcvrInverseStartTime + MIN-ACCESS not-accessible + DESCRIPTION + "Multicast RTP Systems SHOULD implement the optional + tables." + ::= { rtpCompliances 2 } +END diff --git a/mibs/ietf/SCSI-MIB b/mibs/ietf/SCSI-MIB new file mode 100644 index 0000000..81d0e72 --- /dev/null +++ b/mibs/ietf/SCSI-MIB @@ -0,0 +1,2930 @@ +SCSI-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, Integer32, Unsigned32, Counter32, + Counter64, Gauge32, + mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TimeStamp, TruthValue, + RowStatus, RowPointer, AutonomousType, + StorageType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + SnmpAdminString FROM SNMP-FRAMEWORK-MIB; + +scsiMIB MODULE-IDENTITY + LAST-UPDATED "200603300000Z" -- 30th March 2006 + ORGANIZATION "IETF" + CONTACT-INFO " + Michele Hallak-Stamler + + + + Sanrad Intelligent Network + 27 Habarzel Street + Tel Aviv, Israel + Phone: +972 3 7674809 + E-mail: michele@sanrad.com + + Yaron Lederman + Siliquent Technologies Ltd. + 21 Etzel Street + Ramat Gan, Israel + Phone: +972 54 5308833 + E-mail: yaronled@bezeqint.net + + Mark Bakke + Postal: Cisco Systems, Inc + 7900 International Drive, Suite 400 + Bloomington, MN + USA 55425 + E-mail: mbakke@cisco.com + + Marjorie Krueger + Postal: Hewlett-Packard + 8000 Foothills Blvd. + Roseville, CA 95747 + E-mail: marjorie_krueger@hp.com + + Keith McCloghrie + Cisco Systems, Inc. + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + Phone: +1 408 526-5260 + E-mail: kzm@cisco.com + + " + DESCRIPTION + "The SCSI MIB Module. + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4455; see the RFC + itself for full legal notices." + + -- Revision History + + REVISION "200603300000Z" + DESCRIPTION " Initial version published as RFC 4455." +::= { mib-2 139} + +--****************** Textual Conventions ************************** +ScsiLUN ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "This textual convention represents a SCSI Logical Unit + Number (LUN). The format of a LUN is documented in Tables + A.2 and A.3 of SAM-2 [SAM2]." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Annex A [SAM2]" + SYNTAX OCTET STRING (SIZE ( 2 | 8)) + +ScsiIndexValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An arbitrary integer value, greater than zero, for use + as a unique index value." + SYNTAX Unsigned32 (1..4294967295) + +ScsiPortIndexValueOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the ScsiIndexValue + convention. The latter defines a greater than zero value used + to identify an index. This extension permits the additional + value of zero and is applicable only to indices of SCSI port. + Usage of the zero is object-specific and must therefore be + defined as part of the description of any object that uses + this syntax. Examples of the usage of zero might include + situations where the index was unknown, or when none or all + indices need to be referenced." + SYNTAX Unsigned32 (0..4294967295) + +ScsiIndexValueOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the ScsiIndexValue + convention. The latter defines a greater than zero value used + to identify an index. This extension permits the additional + value of zero. Usage of the zero is object-specific and must + therefore be defined as part of the description of any object + that uses this syntax. Examples of the usage of zero might + include situations where index was unknown, or when none or + all indices need to be referenced." + SYNTAX Unsigned32 (0..4294967295) + +ScsiIdentifier ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "This textual convention represents a generic SCSI port + identifier. + The format depends on the transport used and is documented + in Tables A.2 and A.3 of SAM-2 [SAM2]." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Annex A [SAM2]" + SYNTAX OCTET STRING (SIZE (0..262)) + +ScsiName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention represents the name of a SCSI + initiator device, a SCSI target device, a SCSI initiator port + or a SCSI target port. + The format depends on the transport used and is documented + in Tables A.4 and A.5 of SAM-2 [SAM2]. + Every object defined using this syntax must define whether it + is + a) always used for a port, + b) always used for a device, or + c) the circumstances under which it is used for a port or + device." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Annex A [SAM2]" + SYNTAX OCTET STRING (SIZE (0..262)) + +ScsiLuNameOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention represents either the name of a SCSI + logical unit or a zero-length string. Objects defined with + this syntax must specify the meaning of the zero-length + string. + The format of the name of a LU is defined as: + - a zero-length octet string or + - a string of eight bytes." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Annex A [SAM2]" + SYNTAX OCTET STRING (SIZE (0 | 8)) + + + +ScsiDeviceOrPort ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "This type specifies whether a particular configuration is + applicable to a port or to a device." + SYNTAX INTEGER { + device(1), + port(2), + other(3) + } + +ScsiIdCodeSet ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention specifies the code set for the + identifier contained in an Identification Descriptor returned + in a logical unit's Device Identification Page, and is + formatted as defined in T10 SPC-2 (see REFERENCE) Table 172 - + Code Set" + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" + SYNTAX Unsigned32 (0..15) + +ScsiIdAssociation ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention specifies what the identifier is + associated with (e.g., with the addressed physical/logical + device or with a particular port) for the identifier + contained in an Identification Descriptor returned in a + logical unit's Device Identification Page, and is + formatted as defined in T10 SPC-2 (see REFERENCE) + Table 173 - Association." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" + SYNTAX Unsigned32 (0..3) + +ScsiIdType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention specifies the type for the identifier + contained in an Identification Descriptor returned in a + + + + logical unit's Device Identification Page, and is formatted + as defined in T10 SPC-2 (see REFERENCE) table 174 - Identifier + Type." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" + SYNTAX Unsigned32 (0..15) + +ScsiIdValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention represents an identifier. The objects + of type ScsiIdCodeSet, ScsiIdAssociation, ScsiIdType define + together the format. + The format is the same as contained in an Identification + Descriptor returned in a logical unit's Device Identification + Page, and is formatted as defined in T10 SPC-2 + (see REFERENCE)." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" + SYNTAX OCTET STRING (SIZE (0..255)) + +ScsiHrSWInstalledIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "The index value for a software module's row in the Host + Resources MIBs hrSWInstalledTable. A zero value indicates + that no row in the hrSWInstalledTable is applicable." + REFERENCE + "hrSWInstalledTable is defined in the Host Resources MIB, + [RFC2790]." + SYNTAX Integer32 (0..2147483647) + + +--****************** Structure of the MIB ************************** +scsiNotifications OBJECT IDENTIFIER ::= { scsiMIB 0 } +scsiAdmin OBJECT IDENTIFIER ::= { scsiMIB 1 } +scsiObjects OBJECT IDENTIFIER ::= { scsiMIB 2 } +scsiConformance OBJECT IDENTIFIER ::= { scsiMIB 3 } + +scsiTransportTypes OBJECT IDENTIFIER ::= { scsiAdmin 1 } +scsiGeneral OBJECT IDENTIFIER ::= { scsiObjects 1 } +scsiInitiatorDevice OBJECT IDENTIFIER ::= { scsiObjects 2 } +scsiTargetDevice OBJECT IDENTIFIER ::= { scsiObjects 3 } + + + +scsiLogicalUnit OBJECT IDENTIFIER ::= { scsiObjects 4 } + +--****************** Transport Types ******************************* +-- The following object identifiers allow determining the different +-- transports (service delivery subsystems) in use under the SCSI +-- layer. + +scsiTransportOther OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies a transport that has no identity; it + might happen because the transport is unknown or might not + have been defined when this MIB module was created." +::= { scsiTransportTypes 1 } + +scsiTransportSPI OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies a parallel SCSI transport." + REFERENCE + "T10 - SCSI Parallel Interface - 4 (SPI-4) + - ANSI INCITS 362-2002 [SPI4]" +::= { scsiTransportTypes 2 } + +scsiTransportFCP OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies a Fibre Channel Protocol for SCSI, + Second Version." + REFERENCE + "T10 - SCSI Fibre Channel Protocol - 2 (FCP-2) + - ANSI INCITS 350-2003 [FCP2]" +::= { scsiTransportTypes 3 } + +scsiTransportSRP OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies a protocol for transporting SCSI over + Remote Direct Memory Access (RDMA) interfaces, e.g., InfiniBand + (tm)." + REFERENCE + "T10 - SCSI RDMA Protocol (SRP) + - ANSI INCITS 365-2002 [SRP]." +::= { scsiTransportTypes 4 } + +scsiTransportISCSI OBJECT-IDENTITY + STATUS current + DESCRIPTION + + + + "This identity identifies an iSCSI transport." + REFERENCE + "IETF IPS WG - Internet Small Computer Systems Interface + (iSCSI) [RFC3720] " +::= { scsiTransportTypes 5 } + +scsiTransportSBP OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies the Serial Bus Protocol 3." + REFERENCE + "T10 - Serial Bus Protocol 3 (SBP-3) + - ANSI INCITS 375-2004 [SBP3]." +::= { scsiTransportTypes 6 } + +scsiTransportSAS OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This identity identifies the Serial Attach SCSI Protocol." + REFERENCE + "T10 - Serial Attached SCSI - 1.1 (SAS - 1.1) + - #1601-D Rev-10 [SAS-1.1]." +::= { scsiTransportTypes 7 } + +--****************** Instance Table ***************************** +scsiInstanceTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of SCSI instances present on the system. + The SCSI instance is the top-level entity, to which everything + else belongs. An SNMP agent could represent more than one + instance if it represents either a stack of devices, or virtual + partitions of a larger device, or a host running multiple SCSI + implementations from different vendors." +::= { scsiGeneral 1 } + +scsiInstanceEntry OBJECT-TYPE + SYNTAX ScsiInstanceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable to + a particular SCSI instance." + INDEX { scsiInstIndex } +::= { scsiInstanceTable 1 } + + + + +ScsiInstanceEntry ::= SEQUENCE { + scsiInstIndex ScsiIndexValue, + scsiInstAlias SnmpAdminString, + scsiInstSoftwareIndex ScsiHrSWInstalledIndexOrZero, + scsiInstVendorVersion SnmpAdminString, + scsiInstScsiNotificationsEnable TruthValue, + scsiInstStorageType StorageType +} + +scsiInstIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular SCSI instance." +::= { scsiInstanceEntry 1 } + +scsiInstAlias OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..79)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object represents an administrative string, configured by + the administrator. It can be a zero-length string." +::= { scsiInstanceEntry 2 } + +scsiInstSoftwareIndex OBJECT-TYPE + SYNTAX ScsiHrSWInstalledIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If this management instance corresponds to an installed + software module, then this object's value is the value of the + hrSWInstalledIndex of that module. If there is no + correspondence to an installed software module (or no module + that has an hrSWInstalledIndex value), then the value of this + object is zero." + REFERENCE + "hrSWInstalledIndex is defined in the Host Resources MIB, + [RFC2790]." +::= { scsiInstanceEntry 3 } + +scsiInstVendorVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object represents a text string set by the manufacturer + describing the version of this instance. The format of this + string is determined solely by the manufacturer and is for + informational purposes only. It is unrelated to the SCSI + specification version numbers." +::= { scsiInstanceEntry 4 } + +scsiInstScsiNotificationsEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether notifications defined in this + MIB module will be generated." + DEFVAL { true } +::= { scsiInstanceEntry 5 } + +scsiInstStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the memory realization for + this SCSI entity. + Specifically, each row in the following tables: + + scsiIntrDevTable + scsiDscTgtTable + scsiAuthorizedIntrTable + scsiLunMapTable + + has a StorageType as specified by the instance of + this object that is INDEXed by the same value of + scsiInstIndex. + This value of this object is also used to indicate + the persistence across reboots of writable values in + its row of the scsiInstanceTable. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row, + nor to any object belonging to a table whose entry is + INDEXed by the same value of scsiInstIndex." + DEFVAL { nonVolatile } +::= { scsiInstanceEntry 6 } + + +--******************** Device Table ******************************** +scsiDeviceTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiDeviceEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of SCSI devices contained in each of the SCSI manageable + instances that this agent is reporting." +::= { scsiGeneral 2 } + +scsiDeviceEntry OBJECT-TYPE + SYNTAX ScsiDeviceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable to + a particular SCSI device included in this SCSI manageable + instance identifiable by the value of scsiInstIndex." + INDEX {scsiInstIndex, scsiDeviceIndex} +::= { scsiDeviceTable 1 } + +ScsiDeviceEntry ::= SEQUENCE { + scsiDeviceIndex ScsiIndexValue, + scsiDeviceAlias SnmpAdminString, + scsiDeviceRole BITS, + scsiDevicePortNumber Unsigned32 +} + +scsiDeviceIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a particular device within a particular SCSI instance." +::= { scsiDeviceEntry 1 } + +scsiDeviceAlias OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..79)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object contains an administrative name for this device. + If no name is assigned, the value of this object is the + zero-length string. + The StorageType of this object is specified by the instance + of scsiInstStorageType that is INDEXed by the same value of + scsiInstIndex." +::= { scsiDeviceEntry 2 } + +scsiDeviceRole OBJECT-TYPE + + + + SYNTAX BITS { + target(0), + initiator(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object determines whether this device is acting as a + SCSI initiator device, or as a SCSI target device, or as both." +::= { scsiDeviceEntry 3 } + +scsiDevicePortNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of ports contained in this + device." +::= { scsiDeviceEntry 4 } + + +--****************** Port Table ************************************ +scsiPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of SCSI ports for each SCSI device in each instance." +::= { scsiGeneral 3 } + +scsiPortEntry OBJECT-TYPE + SYNTAX ScsiPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing management information applicable to + a particular SCSI port of a particular SCSI device in a + particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex } +::= { scsiPortTable 1 } + +ScsiPortEntry ::= SEQUENCE { + scsiPortIndex ScsiIndexValue, + scsiPortRole BITS, + scsiPortTransportPtr RowPointer, + scsiPortBusyStatuses Counter32 +} + + + + +scsiPortIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + port of a given device within a particular SCSI instance." +::= { scsiPortEntry 1 } + +scsiPortRole OBJECT-TYPE + SYNTAX BITS { + target(0), + initiator(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether this port is acting as a + SCSI initiator port, or as a SCSI target port or as both." +::= { scsiPortEntry 2 } + +scsiPortTransportPtr OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is a pointer to the corresponding row in the + scsiTransportTable. This row contains information on the + transport such as transport type and port name." +::= { scsiPortEntry 3 } + +scsiPortBusyStatuses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of port busy statuses sent or + received by this port. Note: Initiator ports only receive busy + status and SCSI target ports only send busy status. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiPortEntry 4 } + + +--******************** Table of supported transports *************** +scsiTransportTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiTransportEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table contains the device transport-specific information + for each transport connected to each device in + scsiDeviceTable." +::= { scsiGeneral 5 } + +scsiTransportEntry OBJECT-TYPE + SYNTAX ScsiTransportEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing parameters applicable to a transport + used by a particular device of a particular SCSI manageable + instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiTransportIndex} +::= { scsiTransportTable 1 } + +ScsiTransportEntry ::= SEQUENCE { + scsiTransportIndex ScsiIndexValue, + scsiTransportType AutonomousType, + scsiTransportPointer RowPointer, + scsiTransportDevName ScsiName +} + +scsiTransportIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + transport within a given device within a particular SCSI + instance." +::= { scsiTransportEntry 1 } + +scsiTransportType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the transport type of this row of the + transport table. For example, if this object has the value + scsiTransportFCP, then the identified transport is FCP." +::= { scsiTransportEntry 2 } + +scsiTransportPointer OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object represents a pointer to a conceptual row in a + 'transport' MIB module allowing a manager to get useful + information for the transport described by this entry. + For example, if the transport of this device is iSCSI, this + object will point to the iSCSI Instance of the iSCSI MIB + module. + If there is no MIB for this transport, this object has the + value 0.0." +::= { scsiTransportEntry 3 } + +scsiTransportDevName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the name of this device in one of the + format(s) appropriate for this type of transport." +::= { scsiTransportEntry 4 } + +--******************** SCSI Initiator Device Table *************** +scsiIntrDevTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiIntrDevEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information for each local SCSI initiator + device in each instance." +::= { scsiInitiatorDevice 1} + +scsiIntrDevEntry OBJECT-TYPE + SYNTAX ScsiIntrDevEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a SCSI + initiator device within a particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex } +::= { scsiIntrDevTable 1 } + +ScsiIntrDevEntry ::= SEQUENCE { + scsiIntrDevTgtAccessMode INTEGER, + scsiIntrDevOutResets Counter32 +} + +scsiIntrDevTgtAccessMode OBJECT-TYPE + SYNTAX INTEGER { + + + + unknown(1), + autoEnable(2), + manualEnable(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls whether or not a discovered SCSI target + device is immediately authorized: + - autoEnable (2) means that when a SCSI initiator device + discovers a SCSI target device, it can use it immediately. + - manualEnable (3) means that the SCSI initiator device + must wait for an operator to set scsiIntrDscTgtConfigured + = true before it is authorized. + The StorageType of this object is specified by the instance + of scsiInstStorageType that is INDEXed by the same value of + scsiInstIndex." +::= { scsiIntrDevEntry 1 } + +scsiIntrDevOutResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the total number of times that this SCSI + initiator device has issued + - a LOGICAL UNIT RESET or TARGET RESET task management request, + or + - any other SCSI transport protocol-specific action or event + that causes a Logical Unit Reset or a Hard Reset at one or + more SCSI target ports ([SAM2] chapters 5.9.6, 5.9.7). + Discontinuities in the value of this counter can occur at re- + initialization of the management system." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 + Chapters 5.9.6 & 5.9.7 [SAM2]" +::= { scsiIntrDevEntry 2 } + + +-- The following section describes managed objects related to +-- SCSI initiator ports. + +scsiIntrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiIntrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table contains all the SCSI initiator ports for each + local SCSI initiator or target/initiator devices in each SCSI + instance." +::= { scsiInitiatorDevice 2 } + +scsiIntrPortEntry OBJECT-TYPE + SYNTAX ScsiIntrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a + particular SCSI initiator port of a particular SCSI device + within a SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex } +::= { scsiIntrPortTable 1 } + +ScsiIntrPortEntry ::= SEQUENCE { + scsiIntrPortName ScsiName, + scsiIntrPortIdentifier ScsiIdentifier, + scsiIntrPortOutCommands Counter32, + scsiIntrPortWrittenMegaBytes Counter32, + scsiIntrPortReadMegaBytes Counter32, + scsiIntrPortHSOutCommands Counter64 +} + +scsiIntrPortName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the name of the port assigned for use + by the SCSI protocol. The format will depend on the type of + transport this port is using." +::= { scsiIntrPortEntry 1 } + + +scsiIntrPortIdentifier OBJECT-TYPE + SYNTAX ScsiIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the identifier of the port in one of + the format(s) appropriate for the type of transport in use." +::= { scsiIntrPortEntry 2 } + +scsiIntrPortOutCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands sent by this + SCSI initiator port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiIntrPortEntry 3 } + +scsiIntrPortWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data in megabytes sent + by this SCSI initiator port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiIntrPortEntry 4 } + +scsiIntrPortReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data in megabytes + received by this SCSI initiator port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiIntrPortEntry 5 } + +scsiIntrPortHSOutCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands sent by this + SCSI initiator port. This object provides support for systems + that can quickly generate a large number of commands because + they run at high speed. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiIntrPortEntry 6 } + + + + + +--******************** Discovered SCSI Target Device group ******** +scsiRemoteTgtDev OBJECT IDENTIFIER ::= { scsiInitiatorDevice 3 } + +-- SCSI target device discovered or authorized to attach each of the +-- SCSI initiator ports of each SCSI initiator device of each +-- instance. + +scsiDscTgtTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiDscTgtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the remote (not in the local system) + SCSI target ports that are authorized to attach to each local + SCSI initiator port of this SCSI instance." +::= { scsiRemoteTgtDev 1 } + +scsiDscTgtEntry OBJECT-TYPE + SYNTAX ScsiDscTgtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry (row) contains information about the SCSI target + device or port to which this SCSI initiator port (or all SCSI + initiator ports in the SCSI initiator entry indexed by + scsiInstIndex, scsiDeviceIndex) will attempt to attach. The + entry is either for all local ports (if scsiDscTgtIntrPortIndex + is zero) or only for the specific SCSI initiator port + identified by scsiDscTgtIntrPortIndex. Note that if an entry in + this table is deleted, any corresponding entries in the + scsiDscLunsTable must be deleted as well. + The StorageType of a row in this table is specified by the + instance of scsiInstStorageType that is INDEXed by the same + value of scsiInstIndex." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiDscTgtIntrPortIndex, + scsiDscTgtIndex } +::= { scsiDscTgtTable 1 } + +ScsiDscTgtEntry ::= SEQUENCE { + scsiDscTgtIntrPortIndex ScsiPortIndexValueOrZero, + scsiDscTgtIndex ScsiIndexValue, + scsiDscTgtDevOrPort ScsiDeviceOrPort, + scsiDscTgtName ScsiName, + scsiDscTgtConfigured TruthValue, + scsiDscTgtDiscovered TruthValue, + scsiDscTgtInCommands Counter32, + scsiDscTgtWrittenMegaBytes Counter32, + scsiDscTgtReadMegaBytes Counter32, + + + + scsiDscTgtHSInCommands Counter64, + scsiDscTgtLastCreation TimeStamp, + scsiDscTgtRowStatus RowStatus +} + +scsiDscTgtIntrPortIndex OBJECT-TYPE + SYNTAX ScsiPortIndexValueOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object relates to a particular local device within a + particular SCSI instance and specifies + - the index of the local SCSI initiator port, + - or zero, if this entry refers to the local device and + therefore refers to all the local SCSI initiator ports." +::= { scsiDscTgtEntry 1 } + +scsiDscTgtIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a particular SCSI target device either discovered by, or + configured for use with, one or more ports scsiDscTgtName of + a particular device within a particular SCSI instance." +::= { scsiDscTgtEntry 2 } + +scsiDscTgtDevOrPort OBJECT-TYPE + SYNTAX ScsiDeviceOrPort + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether this entry describes a + configured SCSI target device name (and applies to all ports + on the identified SCSI target device) or an individual SCSI + target port." +::= { scsiDscTgtEntry 3 } + +scsiDscTgtName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the name of this configured or + discovered SCSI target device or port depending on the value + of scsiDscTgtDevOrPort." + ::= { scsiDscTgtEntry 4 } + + + +scsiDscTgtConfigured OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object means + -true(1): this entry has been configured by an administrator. + -false(2): this entry has been added from a discovery + mechanism (e.g., SendTargets, SLP, iSNS). + An administrator can modify this value from false to true." + DEFVAL { true } +::= { scsiDscTgtEntry 5 } + +scsiDscTgtDiscovered OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object means + -true(1): this entry has been discovered by the SCSI instance + as result of an automatic discovery process. + -false(2):this entry has been added by manual configuration. + This entry is read-only because an administrator cannot change + it. + Note that it is an implementation decision to determine how + long to retain a row with configured=false, such as when the + SCSI target device is no longer visible/accessible to the local + SCSI initiator device." +::= { scsiDscTgtEntry 6 } + +scsiDscTgtInCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received from + this SCSI target port or device. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiDscTgtLastCreation." +::= { scsiDscTgtEntry 7 } + +scsiDscTgtWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object represents the amount of megabytes of data sent as + the result of WRITE commands to this SCSI target port or device. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiDscTgtLastCreation." +::= { scsiDscTgtEntry 8 } + +scsiDscTgtReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of megabytes received as the + result of READ commands to this SCSI target port or device. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiDscTgtLastCreation." +::= { scsiDscTgtEntry 9 } + +scsiDscTgtHSInCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received by this + SCSI target port or device. This object provides support for + system that can quickly generate a large number of commands + because they run at high speed. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiDscTgtLastCreation." +::= { scsiDscTgtEntry 10 } + +scsiDscTgtLastCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the value of sysUpTime when this row + was created." +::= { scsiDscTgtEntry 11 } + +scsiDscTgtRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object allows an administrator to configure dynamically a + new entry in this table via SNMP or eventually delete it. + An administrator is not allowed to delete an entry for which + the value of the object scsiIntrDscTgtDiscovered is equal to + true. + Note that when an entry in this table is deleted, then any + corresponding entries in the scsiDscLunsTable must also be + automatically deleted. + + A newly created row cannot be made active until a value has + been set for scsiDscTgtName. In this case, the value of the + corresponding instance of the scsiDscTgtRowStatus column will + stay 'notReady'. + The RowStatus TC [RFC2579] requires that this DESCRIPTION + clause states under which circumstances other objects in this + row can be modified: + The value of this object has no effect on whether other objects + in this conceptual row can be modified." +::= { scsiDscTgtEntry 12 } + + +--********************** LUNs discovered *************************** +scsiDscLunTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiDscLunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the remote (not in the local system) + logical unit numbers (LUNs) discovered via each local SCSI + initiator port of each local device within a particular SCSI + instance." +::= { scsiRemoteTgtDev 2 } + +scsiDscLunEntry OBJECT-TYPE + SYNTAX ScsiDscLunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) represents a discovered LUN at a particular + SCSI target device (scsiDscTgtIndex), where the LUN was + discovered by a particular local SCSI initiator device within a + particular SCSI instance, possibly via a particular local + SCSI initiator port. + Note that when an entry in the scsiDscTgtTable is deleted, + all corresponding entries in this table should automatically be + deleted." + + + + INDEX { scsiInstIndex, scsiDeviceIndex, scsiDscTgtIntrPortIndex, + scsiDscTgtIndex, scsiDscLunIndex } +::= { scsiDscLunTable 1 } + +ScsiDscLunEntry ::= SEQUENCE { + scsiDscLunIndex ScsiIndexValue, + scsiDscLunLun ScsiLUN +} + +scsiDscLunIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a particular LUN discovered by a particular SCSI initiator port + or a particular SCSI initiator device within a particular SCSI + instance. + Entries in the scsiDscLunIdTable are associated with a LUN by + having the value of this object in their INDEX." +::= { scsiDscLunEntry 1 } + +scsiDscLunLun OBJECT-TYPE + SYNTAX ScsiLUN + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the Logical Unit Number (LUN) of the + discovered logical unit." +::= { scsiDscLunEntry 2 } + + +--******************** LU Identifiers discovered ******************* +scsiDscLunIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiDscLunIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the known LU identifiers of the remote + (not in the local system) logical units discovered via each + local SCSI initiator port or device of this SCSI instance." +::= { scsiRemoteTgtDev 3 } + +scsiDscLunIdEntry OBJECT-TYPE + SYNTAX ScsiDscLunIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "An entry (row) represents the LU identifier of a discovered + LUN at a particular SCSI target device (scsiDscTgtIndex), where + the LUN was discovered by a particular local SCSI initiator + device within a particular SCSI instance, possibly via a + particular local SCSI initiator port." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiDscTgtIntrPortIndex, + scsiDscTgtIndex, scsiDscLunIndex, scsiDscLunIdIndex } +::= { scsiDscLunIdTable 1 } + +ScsiDscLunIdEntry ::= SEQUENCE { + scsiDscLunIdIndex ScsiIndexValue, + scsiDscLunIdCodeSet ScsiIdCodeSet, + scsiDscLunIdAssociation ScsiIdAssociation, + scsiDscLunIdType ScsiIdType, + scsiDscLunIdValue ScsiIdValue +} + +scsiDscLunIdIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a particular LUN identifier discovered by each SCSI initiator + device or particular SCSI initiator port within a particular + SCSI instance." +::= { scsiDscLunIdEntry 1 } + +scsiDscLunIdCodeSet OBJECT-TYPE + SYNTAX ScsiIdCodeSet + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the code set in use with this + identifier. The value is represented in the same format as + is contained in the identifier's Identification Descriptor + within the logical unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiDscLunIdEntry 2 } + +scsiDscLunIdAssociation OBJECT-TYPE + SYNTAX ScsiIdAssociation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object specifies what the identifier is associated with + (e.g., with the addressed physical/logical device or with a + particular port). The value is represented in the same format + as is contained in the identifier's Identification Descriptor + within the logical unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiDscLunIdEntry 3 } + +scsiDscLunIdType OBJECT-TYPE + SYNTAX ScsiIdType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the type of the identifier. + The value is represented in the same format as is contained in + the identifier's Identification Descriptor within the logical + unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiDscLunIdEntry 4 } + +scsiDscLunIdValue OBJECT-TYPE + SYNTAX ScsiIdValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the actual value of this identifier. + The format is defined by the objects scsiDscLunIdCodeSet, + scsiDscLunIdAssociation, scsiDscLunIdType. + The value is represented in the same format as is contained in + the identifier's Identification Descriptor within the logical + unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiDscLunIdEntry 5 } + +--***** Table of SCSI Target Device Attached to local SCSI +--***** Initiator Ports +scsiAttTgtPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiAttTgtPortEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This table includes all the remote (not in the local system) + SCSI target ports that are currently attached to each local + SCSI initiator port of this SCSI instance." +::= { scsiRemoteTgtDev 4 } + +scsiAttTgtPortEntry OBJECT-TYPE + SYNTAX ScsiAttTgtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) represents a remote SCSI target port + (scsiAttTgtPortIndex) currently attached to a particular + SCSI initiator port (scsiPortIndex) of a particular SCSI + initiator device within a particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex, + scsiAttTgtPortIndex } +::= { scsiAttTgtPortTable 1 } + +ScsiAttTgtPortEntry ::= SEQUENCE { + scsiAttTgtPortIndex ScsiIndexValue, + scsiAttTgtPortDscTgtIdx ScsiIndexValueOrZero, + scsiAttTgtPortName ScsiName, + scsiAttTgtPortIdentifier ScsiIdentifier +} + +scsiAttTgtPortIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used to uniquely identify a particular + SCSI target currently attached to a particular SCSI initiator + port of a particular SCSI initiator device within a particular + SCSI instance." +::= { scsiAttTgtPortEntry 1 } + +scsiAttTgtPortDscTgtIdx OBJECT-TYPE + SYNTAX ScsiIndexValueOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the scsiDscTgtIntrPortIndex + index variable for the row in the scsiDscTgtTable representing + this currently attached SCSI target port. If the currently + attached SCSI target port is not represented in the + scsiDscTgtTable, then the value of this object is zero." + + + +::= { scsiAttTgtPortEntry 2 } + +scsiAttTgtPortName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the name of the attached SCSI target + port." +::= { scsiAttTgtPortEntry 3 } + +scsiAttTgtPortIdentifier OBJECT-TYPE + SYNTAX ScsiIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the identifier of the attached SCSI + target port." +::= { scsiAttTgtPortEntry 4 } + +-- ***************************************************************** +-- ***** Table of SCSI Target devices +-- +scsiTgtDevTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiTgtDevEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about each local SCSI target + device." +::= { scsiTargetDevice 1 } + +scsiTgtDevEntry OBJECT-TYPE + SYNTAX ScsiTgtDevEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a + particular local SCSI target device within a particular SCSI + instance." + INDEX { scsiInstIndex, scsiDeviceIndex } +::= { scsiTgtDevTable 1 } + +ScsiTgtDevEntry ::= SEQUENCE { + scsiTgtDevNumberOfLUs Gauge32, + scsiTgtDeviceStatus INTEGER, + scsiTgtDevNonAccessibleLUs Gauge32, + scsiTgtDevResets Counter32 + + + +} + +scsiTgtDevNumberOfLUs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of logical units accessible via this + local SCSI target device." +::= { scsiTgtDevEntry 1 } + +scsiTgtDeviceStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + available(2), + broken(3), + readying(4), + abnormal(5), + nonAddrFailure(6), + nonAddrFailReadying(7), + nonAddrFailAbnormal(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the status of this SCSI device, + summarizing the state of both the addressable devices (i.e., + the logical units) and the non-addressable devices within this + SCSI device: + - unknown(1): This value is used when the status cannot be + determined + - available(2): All addressable and non-addressable + devices within the SCSI device are fully operational (i.e., + no logical units have an abnormal status). + - broken(3): The SCSI device is not operational and cannot + be made operational without external intervention. + - readying(4): One or more logical units within the SCSI + device are being initialized and access to the SCSI device + is temporarily limited (i.e., one or more of the logical + units have a readying status). + - abnormal(5): One or more addressable devices within the + SCSI device are indicating a status other than available; + nevertheless, the SCSI device is operational (i.e., one or + more of the logical units have an abnormal status). + - nonAddrFailure(6): One or more non-addressable devices + within the SCSI device have failed; nevertheless, the SCSI + device is operational (i.e., no logical units have an + abnormal or readying status). + + + + - nonAddrFailReadying(7): One or more non-addressable + devices within the SCSI device have failed; nevertheless, + one or more logical units within the SCSI device are being + initialized and access to the SCSI device is temporarily + limited. + - nonAddrFailAbnormal(8): One or more non-addressable + devices within the SCSI device have failed and one or more + addressable devices within the SCSI device are indicating a + status other than available; however, the SCSI device is + operational. + " + REFERENCE + "SCSI Controller Commands-2 (SCC-2) ANSI INCITS 318-1998 + 6.3.1.8 REPORT STATES service action [SCC2]" +::= { scsiTgtDevEntry 2} + +scsiTgtDevNonAccessibleLUs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of logical units existing but not + currently accessible via this local SCSI target device." +::= { scsiTgtDevEntry 3 } + +scsiTgtDevResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object counts the number of hard resets encountered + by this SCSI target device. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Chapter 5.9.7 [SAM2]" +::= { scsiTgtDevEntry 4 } + + +--******************** SCSI Target Port Table ********************* +scsiTgtPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiTgtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the local SCSI target ports of all the + local SCSI target devices." + + + +::= { scsiTargetDevice 2 } + +scsiTgtPortEntry OBJECT-TYPE + SYNTAX ScsiTgtPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a + particular local SCSI target port of a particular local SCSI + target device within a particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex} +::= { scsiTgtPortTable 1 } + +ScsiTgtPortEntry ::= SEQUENCE { + scsiTgtPortName ScsiName, + scsiTgtPortIdentifier ScsiIdentifier, + scsiTgtPortInCommands Counter32, + scsiTgtPortWrittenMegaBytes Counter32, + scsiTgtPortReadMegaBytes Counter32, + scsiTgtPortHSInCommands Counter64 +} + +scsiTgtPortName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the name of the port assigned for use + in the SCSI protocol." +::= { scsiTgtPortEntry 1 } + +scsiTgtPortIdentifier OBJECT-TYPE + SYNTAX ScsiIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the identifier of the port in one of + the format(s) appropriate for the type of transport." +::= { scsiTgtPortEntry 2 } + +scsiTgtPortInCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received by this + SCSI target port. + + + + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiTgtPortEntry 3 } + +scsiTgtPortWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data written in megabytes + by this SCSI target port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiTgtPortEntry 4 } + +scsiTgtPortReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data read in megabytes by + this SCSI target port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiTgtPortEntry 5 } + +scsiTgtPortHSInCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received. This + object provides support for systems that can quickly generate a + large number of commands because they run at high speed. + Discontinuities in the value of this counter can occur at re- + initialization of the management system." +::= { scsiTgtPortEntry 6 } + +scsiRemoteIntrDev OBJECT IDENTIFIER ::= { scsiTargetDevice 3 } + +-- The scsiAuthorizedIntrTable contains the list of remote initiator +-- ports that are authorized to be attached to specific SCSI target +-- ports and on which an administrator would like to keep permanent +-- information and long term statistics even when not currently +-- attached. + + + +scsiAuthorizedIntrTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiAuthorizedIntrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the authorized SCSI initiator devices + or ports that may attach a SCSI target device + (ScsiAuthIntrTgtPortIndex = 0) or port (ScsiAuthIntrTgtPortIndex + different than 0) of the local SCSI instance. Statistics are + kept for each such authorization; thus, the authorizations + should be configured in the manner that will cause the desired + set of statistics to be collected and that will determine the + correct LUN map." +::= { scsiRemoteIntrDev 1 } + +scsiAuthorizedIntrEntry OBJECT-TYPE + SYNTAX ScsiAuthorizedIntrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) represents a remote SCSI initiator port or + remote SCSI initiator device that may attach to the local SCSI + target port or device within a particular SCSI instance. + The StorageType of a row in this table is specified by the + instance of scsiInstStorageType that is INDEXed by the same + value of scsiInstIndex." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiAuthIntrTgtPortIndex, + scsiAuthIntrIndex } +::= { scsiAuthorizedIntrTable 1 } + +ScsiAuthorizedIntrEntry ::= SEQUENCE { + scsiAuthIntrTgtPortIndex ScsiPortIndexValueOrZero, + scsiAuthIntrIndex ScsiIndexValue, + scsiAuthIntrDevOrPort ScsiDeviceOrPort, + scsiAuthIntrName ScsiName, + scsiAuthIntrLunMapIndex ScsiIndexValueOrZero, + scsiAuthIntrAttachedTimes Counter32, + scsiAuthIntrOutCommands Counter32, + scsiAuthIntrReadMegaBytes Counter32, + scsiAuthIntrWrittenMegaBytes Counter32, + scsiAuthIntrHSOutCommands Counter64, + scsiAuthIntrLastCreation TimeStamp, + scsiAuthIntrRowStatus RowStatus +} + + +scsiAuthIntrTgtPortIndex OBJECT-TYPE + SYNTAX ScsiPortIndexValueOrZero + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains either the index of the port or zero, to + indicate any port, on the particular local SCSI target device." +::= { scsiAuthorizedIntrEntry 1 } + +scsiAuthIntrIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object is an arbitrary integer used to uniquely identify + a SCSI initiator device or port that is authorized to attach + to a particular local SCSI target device or port of a particular + SCSI instance." +::= { scsiAuthorizedIntrEntry 2 } + +scsiAuthIntrDevOrPort OBJECT-TYPE + SYNTAX ScsiDeviceOrPort + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies whether this entry refers to a remote + SCSI initiator port or to a SCSI initiator device. + A value of device(1) means that the authorized remote initiator + is a SCSI initiator device and includes all of its ports. + A value of port(2) means that the authorized remote initiator + is a SCSI initiator port." +::= { scsiAuthorizedIntrEntry 3 } + +scsiAuthIntrName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents the name of the remote SCSI initiator + device or port authorized by this row." +::= { scsiAuthorizedIntrEntry 4 } + +scsiAuthIntrLunMapIndex OBJECT-TYPE + SYNTAX ScsiIndexValueOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the set of entries in the + scsiLunMapTable for which scsiLunMapIndex has the same value as + the value of this object. The identified set of entries + + + + constitutes the LUN map to be used for accessing logical units + when the remote SCSI initiator port or device corresponding to + this entry is attached to any local SCSI target port or device + corresponding to this entry. + Note that this object has a value of zero if this entry should + use the default LUN map." +::= { scsiAuthorizedIntrEntry 5 } + +scsiAuthIntrAttachedTimes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Times" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the number of times that this remote + SCSI initiator device or port has transitioned from unattached + to attached to this local SCSI target device or port. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 6 } + +scsiAuthIntrOutCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the number of commands that the remote + SCSI initiator device or port corresponding to this entry has + sent to the local SCSI target device or port corresponding to + this entry. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 7 } + +scsiAuthIntrReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the amount of data in megabytes that + the remote SCSI initiator device or port corresponding to this + entry has read from the local SCSI target device or port + corresponding to this entry. + Discontinuities in the value of this counter can occur at re- + + + + initialization of the management system, and at other times as + indicated by the value of scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 8 } + +scsiAuthIntrWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the amount of data in megabytes that the + remote SCSI initiator device or port corresponding to this + entry has written to the local SCSI target device or port + corresponding to this entry. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 9} + +scsiAuthIntrHSOutCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands sent by the + remote SCSI initiator device or port corresponding to this + entry to the local SCSI target device or port corresponding to + this entry. This object provides support for systems that can + quickly generate a large number of commands because they run at + high speed. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiAuthIntrLastCreation." +::= { scsiAuthorizedIntrEntry 10 } + +scsiAuthIntrLastCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the value of sysUpTime when this row was + last created." +::= { scsiAuthorizedIntrEntry 11 } + +scsiAuthIntrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object allows an administrator to create or delete this + entry. + A newly created row cannot be made active until a value has + been set for scsiAuthIntrName. In this case, the value of the + corresponding instance of the scsiAuthIntrRowStatus column will + stay 'notReady'. + The RowStatus TC [RFC2579] requires that this DESCRIPTION + clause states under which circumstances other objects in this + row can be modified: + The value of this object has no effect on whether other objects + in this conceptual row can be modified." +::= { scsiAuthorizedIntrEntry 12 } + + +-- Table of SCSI initiator devices or ports attached to local +-- SCSI target ports +-- + +scsiAttIntrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiAttIntrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes all the remote SCSI initiator ports that + are currently attached to a local SCSI target port of all local + devices within all SCSI instances." +::= { scsiRemoteIntrDev 2 } + +scsiAttIntrPortEntry OBJECT-TYPE + SYNTAX ScsiAttIntrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) represents a remote SCSI initiator port + currently attached to a particular local SCSI target port of a + particular SCSI target device of a particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiPortIndex, + scsiAttIntrPortIndex } +::= { scsiAttIntrPortTable 1 } + +ScsiAttIntrPortEntry ::= SEQUENCE { + scsiAttIntrPortIndex ScsiIndexValue, + scsiAttIntrPortAuthIntrIdx ScsiIndexValueOrZero, + scsiAttIntrPortName ScsiName, + scsiAttIntrPortIdentifier ScsiIdentifier +} + + + +scsiAttIntrPortIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular attached remote initiator port to a + particular SCSI target port within a particular SCSI target + device within a particular SCSI instance." +::= { scsiAttIntrPortEntry 1 } + +scsiAttIntrPortAuthIntrIdx OBJECT-TYPE + SYNTAX ScsiIndexValueOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the corresponding index in the + scsiAuthorizedIntrTable for this current attached remote + SCSI initiator device or zero if this remote attached SCSI + initiator device is not configured in that table." +::= { scsiAttIntrPortEntry 2 } + +scsiAttIntrPortName OBJECT-TYPE + SYNTAX ScsiName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the name of the remote SCSI initiator + device attached to this local SCSI target port." +::= { scsiAttIntrPortEntry 3 } + +scsiAttIntrPortIdentifier OBJECT-TYPE + SYNTAX ScsiIdentifier + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the identifier of the remote SCSI + initiator device attached to this local SCSI target port." +::= { scsiAttIntrPortEntry 4 } + +--****************** Managed Objects regarding logical units ******* +scsiLuTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiLuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the logical units exposed by local SCSI + target devices. + + + + It includes attributes for the World Wide Name (WWN), + scsiLuVendorId, scsiLuProductId, and scsiLuRevisionId, which may + also appear in the scsiLuIdTable. If an implementation exposes + a WWN as a LuIdTable entry, it must match the scsiLuWwnName in + this table. If an implementation exposes a (vendor, product, + revision) identifier as an LuIdTable entry, each of these fields + must match the scsiLuVendorId, scsiLuProductId, and + scsiLuRevisionId attributes in this table." +::= { scsiLogicalUnit 1 } + +scsiLuEntry OBJECT-TYPE + SYNTAX ScsiLuEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) contains information applicable to a particular + logical unit of a particular local SCSI target device within a + particular SCSI instance." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiLuIndex} +::= { scsiLuTable 1 } + +ScsiLuEntry ::= SEQUENCE { + scsiLuIndex ScsiIndexValue, + scsiLuDefaultLun ScsiLUN, + scsiLuWwnName ScsiLuNameOrZero, + scsiLuVendorId SnmpAdminString, + scsiLuProductId SnmpAdminString, + scsiLuRevisionId SnmpAdminString, + scsiLuPeripheralType Unsigned32, + scsiLuStatus INTEGER, + scsiLuState BITS, + scsiLuInCommands Counter32, + scsiLuReadMegaBytes Counter32, + scsiLuWrittenMegaBytes Counter32, + scsiLuInResets Counter32, + scsiLuOutTaskSetFullStatus Counter32, + scsiLuHSInCommands Counter64, + scsiLuLastCreation TimeStamp +} + +scsiLuIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular logical unit within a particular SCSI + target device within a particular SCSI instance." + + + +::= { scsiLuEntry 1 } + +scsiLuDefaultLun OBJECT-TYPE + SYNTAX ScsiLUN + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the default Logical Unit Number (LUN) + for this logical unit; if a SCSI initiator device has not been + configured to view this logical unit via an entry in the + ScsiLunMapTable, the LU will be visible as scsiLuDefaultLun. + If this logical unit does not have a default LUN, it will only + be visible if specified via the ScsiLunMapTable, and this + object will contain a zero-length string." +::= { scsiLuEntry 2 } + +scsiLuWwnName OBJECT-TYPE + SYNTAX ScsiLuNameOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the World Wide Name of this LU that is + the device identifier of the Vital Product Data (VPD) page name; + if there is no WWN for this LU, this object will contain a + zero-length string. If there is more than one identifier, they + will be listed in the scsiLuIdTable and this object will contain + a zero-length string." +::= { scsiLuEntry 3 } + +scsiLuVendorId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a string identifying the vendor of this + LU as reported in the Standard INQUIRY data." +::= { scsiLuEntry 4 } + +scsiLuProductId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a string identifying the product for + this LU as reported in the Standard INQUIRY data." +::= { scsiLuEntry 5 } + +scsiLuRevisionId OBJECT-TYPE + + + + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents a string defining the product revision + of this LU as reported in the Standard INQUIRY data." +::= { scsiLuEntry 6 } + +scsiLuPeripheralType OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the value returned by SCSI Standard INQUIRY + data. It can be: direct-access device, sequential-access + device, printer, communication device and so on. + The values that can be returned here are defined in SCSI + Primary Commands -2." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001,11 July 2001 [SPC2]- Table 48." +::= { scsiLuEntry 7 } + +scsiLuStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + available(2), + notAvailable(3), + broken(4), + readying(5), + abnormal(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the status of this logical unit: + - unknown(1): The status of this logical unit cannot be + determined. + - available(2): The logical unit is fully operational (i.e., + accepts media access SCSI commands and has no state + information to report). + - notAvailable(3): The logical unit is capable of being + supported but is not available (i.e., no logical unit is + currently present or the logical unit is present but not + configured for use). + - broken(4): The logical unit has failed and cannot respond + to SCSI commands. + - readying(5): The logical unit is being initialized and + + + + access is temporarily limited. + - abnormal(6): The logical unit has state information + available that indicates it is operating with limits. The + scsiLuState indicates what those limits are. + " + REFERENCE + "SCSI Controller Commands-2 (SCC-2) ANSI INCITS 318-1998 + 6.3.1.8 REPORT STATES service action [SCC2]" +::= { scsiLuEntry 8 } + +scsiLuState OBJECT-TYPE + SYNTAX BITS { + dataLost(0), + dynamicReconfigurationInProgress(1), + exposed(2), + fractionallyExposed(3), + partiallyExposed(4), + protectedRebuild(5), + protectionDisabled(6), + rebuild(7), + recalculate(8), + spareInUse(9), + verifyInProgress(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the state of a logical unit and its + meaning according to the bit position: + 0 Data lost: Within the logical unit data has been lost. + 1 Dynamic reconfiguration in progress: The logical unit is + being reconfigured. In this state all data is still + protected. + 2 Exposed: Within the logical unit data is not protected. + In this state all data is still valid; however, loss + of data or data availability is unavoidable in the + event of a failure. + 3 Fractionally exposed: Within the logical unit part of + the data is not protected. In this state all data is + still valid; however, a failure may cause a loss of + data or a loss of data availability. + 4 Partially exposed: Within the logical unit one or more + underlying storage devices have failed. In this state + all data is still protected. + 5 Protected rebuild: The logical unit is in the process of + a rebuild operation. In this state all data is + protected. + 6 Protection disabled: Within the logical unit the data + + + + protection method has been disabled. + In this state all data is still valid; however, + loss of data or data availability is unavoidable + in the event of a failure. + 7 Rebuild: The data protection method is in the process of + rebuilding data. In this state data is not protected. + 8 Recalculate: The logical unit is in the process of a + recalculate operation. + 9 Spare in use: Within the logical unit a storage device + in full or part is being used to store data. In this + state all data is still protected. + 10 Verify in progress: Within the logical unit data is + being verified." + REFERENCE + "SCSI Controller Commands-2 (SCC-2) ANSI INCITS 318-1998 + 6.3.1.8 REPORT STATES service action [SCC2]" +::= { scsiLuEntry 9 } + +scsiLuInCommands OBJECT-TYPE + SYNTAX Counter32 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of commands received by this + logical unit. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiLuLastCreation." +::= { scsiLuEntry 10 } + +scsiLuReadMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the amount of data in megabytes read + from this logical unit. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiLuLastCreation." +::= { scsiLuEntry 11 } + +scsiLuWrittenMegaBytes OBJECT-TYPE + SYNTAX Counter32 + UNITS "Megabytes" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object represents the amount of data in megabytes written + to this logical unit. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiLuLastCreation." +::= { scsiLuEntry 12 } + +scsiLuInResets OBJECT-TYPE + SYNTAX Counter32 + UNITS "resets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of times that this logical + unit received + - a LOGICAL UNIT RESET or TARGET RESET task management request, + or + - any other SCSI transport protocol-specific action or event + that causes a Logical Unit Reset or a Hard Reset at a SCSI + target port of the containing device + ([SAM2] Chapters 5.9.6, 5.9.7). + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiLuLastCreation." + REFERENCE + "SCSI Architecture Model-2 (SAM-2), ANSI INCITS 366-2003, + T10 Project 1157-D, 12 September 2002 - Chapter 5.9.7 [SAM2]" +::= { scsiLuEntry 13 } + +scsiLuOutTaskSetFullStatus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the number of Task Set full statuses + issued for this logical unit. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiLuLastCreation." +::= { scsiLuEntry 14 } + +scsiLuHSInCommands OBJECT-TYPE + SYNTAX Counter64 + UNITS "commands" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object represents the number of commands received by this + logical unit. This object provides support for systems that can + quickly generate a large number of commands because they run at + high speed. + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of scsiLuLastCreation." +::= { scsiLuEntry 15 } + +scsiLuLastCreation OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the value of sysUpTime when this row was + last created." +::= { scsiLuEntry 16 } + +--****************** Logical Unit Identifier Table ***************** +scsiLuIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiLuIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of identifiers for all logical units exposed by the + local SCSI target device." +::= { scsiLogicalUnit 2 } + +scsiLuIdEntry OBJECT-TYPE + SYNTAX ScsiLuIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (row) containing information applicable to a + particular identifier for a particular logical unit of a + particular SCSI target device within a particular SCSI + instance." + INDEX {scsiInstIndex, scsiDeviceIndex, scsiLuIndex, scsiLuIdIndex} +::= { scsiLuIdTable 1 } + +ScsiLuIdEntry ::= SEQUENCE { + scsiLuIdIndex ScsiIndexValue, + scsiLuIdCodeSet ScsiIdCodeSet, + scsiLuIdAssociation ScsiIdAssociation, + scsiLuIdType ScsiIdType, + scsiLuIdValue ScsiIdValue +} + + + +scsiLuIdIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular LU identifier within a particular logical + unit within a particular SCSI target device within a particular + SCSI instance." +::= { scsiLuIdEntry 1 } + +scsiLuIdCodeSet OBJECT-TYPE + SYNTAX ScsiIdCodeSet + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the code set in use with this + identifier. The value is represented in the same format as is + contained in the identifier's Identification Descriptor within + the logical unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001 Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiLuIdEntry 2 } + +scsiLuIdAssociation OBJECT-TYPE + SYNTAX ScsiIdAssociation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies what the identifier is associated with + (e.g., with the addressed physical/logical device or with a + particular port). The value is represented in the same format + as is contained in the identifier's Identification Descriptor + within the logical unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001, Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiLuIdEntry 3 } + +scsiLuIdType OBJECT-TYPE + SYNTAX ScsiIdType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the type of the identifier. + + + + The value is represented in the same format as is contained in + the identifier's Identification Descriptor within the logical + unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001, Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiLuIdEntry 4 } + +scsiLuIdValue OBJECT-TYPE + SYNTAX ScsiIdValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object represents the actual value of this identifier. + The format is defined by the objects scsiLuIdCodeSet, + scsiLuIdAssociation, scsiLuIdType. + The value is represented in the same format as is contained in + the identifier's Identification Descriptor within the logical + unit's Device Identification Page." + REFERENCE + "ANSI - SCSI Primary Commands - 2 (SPC-2), + ANSI INCITS 351-2001, 11 July 2001, Chapter 8: section 8.4.4, + Vital Product Data Parameters [SPC2]" +::= { scsiLuIdEntry 5 } + +--******************* The LUN Map Table **************************** + +scsiLunMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF ScsiLunMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides the ability to present a logical unit + using different Logical Unit Numbers for different SCSI + initiator devices. + This table provides a mapping between a logical unit and a + Logical Unit Number, and can be referenced by a + ScsiAuthorizedIntrEntry to specify the LUN map for that + initiator." +::= { scsiLogicalUnit 3 } + +scsiLunMapEntry OBJECT-TYPE + SYNTAX ScsiLunMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about the mapping of a + + + + particular logical unit to a particular LUN. The set of + entries that all have the same values of scsiInstIndex, + scsiDeviceIndex and scsiLunMapIndex constitutes a LUN map + within a particular SCSI instance. + The StorageType of a row in this table is specified by + the instance of scsiInstStorageType that is INDEX-ed by + the same value of scsiInstIndex." + INDEX { scsiInstIndex, scsiDeviceIndex, scsiLunMapIndex, + scsiLunMapLun} +::= { scsiLunMapTable 1 } + +ScsiLunMapEntry ::= SEQUENCE { + scsiLunMapIndex ScsiIndexValue, + scsiLunMapLun ScsiLUN, + scsiLunMapLuIndex ScsiIndexValue, + scsiLunMapRowStatus RowStatus +} + +scsiLunMapIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object represents an arbitrary integer used to uniquely + identify a particular LunMap within a particular SCSI target + device within a particular SCSI instance." +::= { scsiLunMapEntry 1 } + +scsiLunMapLun OBJECT-TYPE + SYNTAX ScsiLUN + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the Logical Unit Number, to which a + logical unit is mapped by this row." +::= { scsiLunMapEntry 2 } + + +scsiLunMapLuIndex OBJECT-TYPE + SYNTAX ScsiIndexValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the logical unit for which the value of + scsiLuIndex is the same as the value of this object. The + identified logical unit is the one mapped to a LUN by this + row." +::= { scsiLunMapEntry 3 } + + + +scsiLunMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows an administrator to create and delete this + entry." +::= { scsiLunMapEntry 4 } + +--********************** Notifications ****************************** +-- scsiNotifications OBJECT IDENTIFIER ::= { scsiMIB 2 } + +scsiNotificationsPrefix OBJECT IDENTIFIER + ::= { scsiNotifications 0 } + +scsiTgtDeviceStatusChanged NOTIFICATION-TYPE + OBJECTS { scsiTgtDeviceStatus } + STATUS current + DESCRIPTION + "This notification will be generated for each occurrence of the + abnormal status (e.g., if the SCSI target device's current + status is abnormal) providing that the SCSI instance's value of + scsiInstScsiNotificationsEnable is enabled. + An SNMP agent implementing the SCSI MIB module should not send + more than three SCSI identical notifications in any 10-second + period." +::= { scsiNotificationsPrefix 1 } + +scsiLuStatusChanged NOTIFICATION-TYPE + OBJECTS { scsiLuStatus } + STATUS current + DESCRIPTION + "This notification will be generated each time that + scsiLuStatus changes providing that the SCSI instance's value + of scsiInstScsiNotificationsEnable is enabled. + An SNMP agent implementing the SCSI MIB module should not send + more than three SCSI identical notifications in any 10-second + period." +::= { scsiNotificationsPrefix 2 } + + + +--****************************************************************** +-- The next part defines the conformance groups in use +-- for SCSI MIB module. +scsiCompliances OBJECT IDENTIFIER ::= { scsiConformance 1 } + +scsiCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "Describes the requirements for compliance to this SCSI MIB + module. + If an implementation can be both a SCSI target device and a SCSI + initiator device, all groups are mandatory." + MODULE -- this module + MANDATORY-GROUPS { + scsiDeviceGroup + } + + OBJECT scsiInstAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiInstScsiNotificationsEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiDeviceAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiInstStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when the implementation has + -- SCSI target device. + + GROUP scsiTargetDeviceGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + have SCSI target devices." + GROUP scsiLunMapGroup + DESCRIPTION + "This group is mandatory for systems having the capabilities + of mapping local SCSI target devices and logical units + according to remote SCSI initiator devices." + + OBJECT scsiAuthIntrDevOrPort + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT scsiAuthIntrName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT scsiAuthIntrLunMapIndex + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT scsiAuthIntrRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + GROUP scsiTgtDevLuNotificationsGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + have SCSI target devices and are able to report status + changes." + + + -- Conditionally mandatory groups to be included with + -- the mandatory groups when the implementation has + -- SCSI initiator device. + + GROUP scsiInitiatorDeviceGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + have SCSI initiator devices." + + OBJECT scsiIntrDevTgtAccessMode + MIN-ACCESS read-only + DESCRIPTION "Write access is not mandatory." + + GROUP scsiDiscoveryGroup + DESCRIPTION + "This group is mandatory for systems having the capabilities + of discovering remote SCSI target devices via local SCSI + initiator devices." + + OBJECT scsiLunMapLuIndex + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiLunMapRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + OBJECT scsiDscTgtDevOrPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is not mandatory." + + OBJECT scsiDscTgtName + MIN-ACCESS read-only + DESCRIPTION "Write access is not mandatory." + + OBJECT scsiDscTgtConfigured + SYNTAX TruthValue { false(2) } + MIN-ACCESS read-only + DESCRIPTION + "The value of true(1) is not mandatory neither is the write + access." + + OBJECT scsiDscTgtRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation can gather statistics. + + GROUP scsiDeviceStatGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + can gather statistics." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation can gather statistics at the SCSI +-- initiator device side. + + GROUP scsiInitiatorDevStatsGroup + + + + DESCRIPTION + "This group is mandatory for all SCSI implementations that + can gather statistics at SCSI initiator device side." + + GROUP scsiDiscoveryStatsGroup + DESCRIPTION + "This group is mandatory for system having the capabilities + of gathering statistics regarding remote SCSI target devices + via local SCSI initiator devices." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation can gather statistics at the SCSI +-- target side. + + GROUP scsiTargetDevStatsGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + can gather statistics at SCSI target devices." + + GROUP scsiLunMapStatsGroup + DESCRIPTION + "This group is mandatory for SCSI implementations able to map + local SCSI target devices and logical units according to + remote SCSI initiator devices." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation is running at high speed and can +-- gather statistics at the SCSI initiator device side. + + GROUP scsiInitiatorDevHSStatsGroup + DESCRIPTION + "This group is mandatory for all SCSI implementations that + can gather statistics at the SCSI initiator device side and + are running at high speed, meaning speed of 4 Gbit/second or + higher." + + GROUP scsiDiscoveryHSStatsGroup + DESCRIPTION + "This group is mandatory for systems having the capabilities + of gathering statistics regarding remote SCSI target devices + via local SCSI initiator devices and are running at high + speed, meaning speed of 4 Gbit/second or higher." + +-- Conditionally mandatory groups to be included with the mandatory +-- groups when the implementation is running at high speed and can +-- gather statistics at the SCSI target side. + GROUP scsiTargetDevHSStatsGroup + DESCRIPTION + + + + "This group is mandatory for all SCSI implementations that + can gather statistics at SCSI target devices in high speed + systems, meaning speed of 4 Gbit/second or higher." + + GROUP scsiLunMapHSStatsGroup + DESCRIPTION + "This group is mandatory for SCSI implementations able to map + local SCSI target devices and logical units according to + remote SCSI initiator devices in a high speed system, meaning + speed of 4 Gbit/second or higher." +::= { scsiCompliances 1 } + +scsiGroups OBJECT IDENTIFIER ::= { scsiConformance 2 } + +scsiDeviceGroup OBJECT-GROUP + OBJECTS { + scsiInstAlias, + scsiInstSoftwareIndex, + scsiInstVendorVersion, + scsiInstScsiNotificationsEnable, + scsiInstStorageType, + scsiDeviceAlias, + scsiDeviceRole, + scsiDevicePortNumber, + scsiPortRole, + scsiPortTransportPtr, + scsiTransportType, + scsiTransportPointer, + scsiTransportDevName + } + STATUS current + DESCRIPTION + "A collection of objects providing information about SCSI + instances, devices, and ports." +::= { scsiGroups 1 } + +scsiInitiatorDeviceGroup OBJECT-GROUP + OBJECTS { + scsiIntrDevTgtAccessMode, + scsiIntrPortName, + scsiIntrPortIdentifier, + scsiAttTgtPortDscTgtIdx, + scsiAttTgtPortName, + scsiAttTgtPortIdentifier + } + STATUS current + DESCRIPTION + "This group is relevant for s SCSI initiator device and port." + + + +::= { scsiGroups 2 } + +scsiDiscoveryGroup OBJECT-GROUP + OBJECTS { + scsiDscTgtDevOrPort, + scsiDscTgtName, + scsiDscTgtConfigured, + scsiDscTgtDiscovered, + scsiDscTgtRowStatus, + scsiDscTgtLastCreation, + scsiDscLunLun, + scsiDscLunIdCodeSet, + scsiDscLunIdAssociation, + scsiDscLunIdType, + scsiDscLunIdValue + } + STATUS current + DESCRIPTION + "This group is relevant for the discovered SCSI target devices + by a SCSI initiator port." +::= { scsiGroups 3 } + +scsiTargetDeviceGroup OBJECT-GROUP + OBJECTS { + scsiTgtDevNumberOfLUs, + scsiTgtDeviceStatus, + scsiTgtDevNonAccessibleLUs, + scsiTgtPortName, + scsiTgtPortIdentifier, + scsiAttIntrPortAuthIntrIdx, + scsiAttIntrPortName, + scsiAttIntrPortIdentifier, + scsiLuDefaultLun, + scsiLuWwnName, + scsiLuVendorId, + scsiLuProductId, + scsiLuRevisionId, + scsiLuPeripheralType, + scsiLuStatus, + scsiLuState, + scsiLuLastCreation, + scsiLuIdCodeSet, + scsiLuIdAssociation, + scsiLuIdType, + scsiLuIdValue + } + STATUS current + DESCRIPTION + + + + "This group is relevant for a SCSI target device and port." +::= { scsiGroups 4 } + +scsiLunMapGroup OBJECT-GROUP + OBJECTS { + scsiLunMapLuIndex, + scsiLunMapRowStatus, + scsiAuthIntrDevOrPort, + scsiAuthIntrName, + scsiAuthIntrLunMapIndex, + scsiAuthIntrLastCreation, + scsiAuthIntrRowStatus + } + STATUS current + DESCRIPTION + "This group is a collection of attributes regarding the mapping + between Logical Unit Number, logical unit, and target device." +::= { scsiGroups 5} + +scsiTargetDevStatsGroup OBJECT-GROUP + OBJECTS { + scsiTgtDevResets, + scsiTgtPortInCommands, + scsiTgtPortWrittenMegaBytes, + scsiTgtPortReadMegaBytes, + scsiLuInCommands, + scsiLuReadMegaBytes, + scsiLuWrittenMegaBytes, + scsiLuInResets, + scsiLuOutTaskSetFullStatus + } + STATUS current + DESCRIPTION + "This group is a collection of statistics for all + implementations of the SCSI MIB module that contain SCSI target + devices." +::= { scsiGroups 6} + +scsiTargetDevHSStatsGroup OBJECT-GROUP + OBJECTS { + scsiTgtPortHSInCommands, + scsiLuHSInCommands + } + STATUS current + DESCRIPTION + "This group is a collection of high speed statistics for all + implementations of the SCSI MIB module that contain SCSI target + devices." + + + +::= { scsiGroups 7} + +scsiLunMapStatsGroup OBJECT-GROUP + OBJECTS { + scsiAuthIntrAttachedTimes, + scsiAuthIntrOutCommands, + scsiAuthIntrReadMegaBytes, + scsiAuthIntrWrittenMegaBytes + } + STATUS current + DESCRIPTION + "This group is a collection of statistics regarding SCSI + initiator devices authorized to attach local logical unit and + SCSI target device." +::= { scsiGroups 8} + +scsiLunMapHSStatsGroup OBJECT-GROUP + OBJECTS { + scsiAuthIntrHSOutCommands + } + STATUS current + DESCRIPTION + "This group is a collection of high speed statistics regarding + SCSI initiator devices authorized to attach local logical unit + and SCSI target device." +::= { scsiGroups 9} + +scsiInitiatorDevStatsGroup OBJECT-GROUP + OBJECTS { + scsiIntrDevOutResets, + scsiIntrPortOutCommands, + scsiIntrPortWrittenMegaBytes, + scsiIntrPortReadMegaBytes + } + STATUS current + DESCRIPTION + "This group is a collection of statistics for all + implementations of the SCSI MIB module that contain SCSI + initiator devices." +::= { scsiGroups 10} + +scsiInitiatorDevHSStatsGroup OBJECT-GROUP + OBJECTS { + scsiIntrPortHSOutCommands + } + STATUS current + DESCRIPTION + "This group is a collection of high speed statistics for all + + + + implementations of the SCSI MIB module that contain SCSI + initiator devices." +::= { scsiGroups 11} + +scsiDiscoveryStatsGroup OBJECT-GROUP + OBJECTS { + scsiDscTgtInCommands, + scsiDscTgtReadMegaBytes, + scsiDscTgtWrittenMegaBytes + } + STATUS current + DESCRIPTION + "This group is a collection of statistics for all + implementations of the SCSI MIB module that contain discovered + SCSI initiator devices." +::= { scsiGroups 12} + +scsiDiscoveryHSStatsGroup OBJECT-GROUP + OBJECTS { + scsiDscTgtHSInCommands + } + STATUS current + DESCRIPTION + "This group is a collection of high speed statistics for all + implementations of the SCSI MIB module that contain discovered + SCSI initiator devices." +::= { scsiGroups 13} + +scsiDeviceStatGroup OBJECT-GROUP + OBJECTS { + scsiPortBusyStatuses + } + STATUS current + DESCRIPTION + "A collection of statistics regarding SCSI devices and + ports." +::= { scsiGroups 14 } + +scsiTgtDevLuNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + scsiTgtDeviceStatusChanged, + scsiLuStatusChanged + } + STATUS current + DESCRIPTION + "A collection of notifications regarding status change of SCSI + target devices and logical units." +::= { scsiGroups 15 } + + + +END diff --git a/mibs/ietf/SCTP-MIB b/mibs/ietf/SCTP-MIB new file mode 100644 index 0000000..60a84e0 --- /dev/null +++ b/mibs/ietf/SCTP-MIB @@ -0,0 +1,1641 @@ +SCTP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32, Gauge32, + Counter32, Counter64, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TimeStamp, TruthValue + FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + InetAddressType, InetAddress, InetPortNumber + FROM INET-ADDRESS-MIB; -- [RFC3291] + + + + + + + +sctpMIB MODULE-IDENTITY + LAST-UPDATED "200409020000Z" -- 2nd September 2004 + ORGANIZATION "IETF SIGTRAN Working Group" + CONTACT-INFO + " + WG EMail: sigtran@ietf.org + + Web Page: + http://www.ietf.org/html.charters/sigtran-charter.html + + Chair: Lyndon Ong + Ciena Corporation + 0480 Ridgeview Drive + Cupertino, CA 95014 + USA + Tel: + Email: lyong@ciena.com + + Editors: Maria-Carmen Belinchon + R&D Department + Ericsson Espana S. A. + Via de los Poblados, 13 + 28033 Madrid + Spain + Tel: +34 91 339 3535 + Email: Maria.C.Belinchon@ericsson.com + + Jose-Javier Pastor-Balbas + R&D Department + Ericsson Espana S. A. + Via de los Poblados, 13 + 28033 Madrid + Spain + Tel: +34 91 339 1397 + Email: J.Javier.Pastor@ericsson.com + " + DESCRIPTION + "The MIB module for managing SCTP implementations. + + Copyright (C) The Internet Society (2004). This version of + this MIB module is part of RFC 3873; see the RFC itself for + full legal notices. " + + REVISION "200409020000Z" -- 2nd September 2004 + + DESCRIPTION " Initial version, published as RFC 3873" + + ::= { mib-2 104 } + + + +-- the SCTP base variables group + +sctpObjects OBJECT IDENTIFIER ::= { sctpMIB 1 } + +sctpStats OBJECT IDENTIFIER ::= { sctpObjects 1 } +sctpParams OBJECT IDENTIFIER ::= { sctpObjects 2 } + +-- STATISTICS +-- ********** + +-- STATE-RELATED STATISTICS + +sctpCurrEstab OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of associations for which the current state is + either ESTABLISHED, SHUTDOWN-RECEIVED or SHUTDOWN-PENDING." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 1 } + + +sctpActiveEstabs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that associations have made a direct + transition to the ESTABLISHED state from the COOKIE-ECHOED + state: COOKIE-ECHOED -> ESTABLISHED. The upper layer initiated + the association attempt." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 2 } + + + + + + + + + + + +sctpPassiveEstabs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that associations have made a direct + transition to the ESTABLISHED state from the CLOSED state: + CLOSED -> ESTABLISHED. The remote endpoint initiated the + association attempt." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 3 } + + +sctpAborteds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that associations have made a direct + transition to the CLOSED state from any state using the + primitive 'ABORT': AnyState --Abort--> CLOSED. Ungraceful + termination of the association." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 4 } + + +sctpShutdowns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that associations have made a direct + transition to the CLOSED state from either the SHUTDOWN-SENT + state or the SHUTDOWN-ACK-SENT state. Graceful termination of + the association." + REFERENCE + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpStats 5 } + + + + + +-- OTHER LAYER STATISTICS + +sctpOutOfBlues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of out of the blue packets received by the host. + An out of the blue packet is an SCTP packet correctly formed, + including the proper checksum, but for which the receiver was + unable to identify an appropriate association." + REFERENCE + "Section 8.4 in RFC2960 deals with the Out-Of-The-Blue + (OOTB) packet definition and procedures." + + ::= { sctpStats 6 } + +sctpChecksumErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP packets received with an invalid + checksum." + REFERENCE + "The checksum is located at the end of the SCTP packet as per + Section 3.1 in RFC2960. RFC3309 updates SCTP to use a 32 bit + CRC checksum." + +::= { sctpStats 7 } + +sctpOutCtrlChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP control chunks sent (retransmissions are + not included). Control chunks are those chunks different from + DATA." + REFERENCE + "Sections 1.3.5 and 1.4 in RFC2960 refer to control chunk as + those chunks different from those that contain user + information, i.e., DATA chunks." + + ::= { sctpStats 8 } + + + + + + +sctpOutOrderChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP ordered data chunks sent (retransmissions + are not included)." + REFERENCE + "Section 3.3.1 in RFC2960 defines the ordered data chunk." + + ::= { sctpStats 9 } + +sctpOutUnorderChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP unordered chunks (data chunks in which the + U bit is set to 1) sent (retransmissions are not included)." + REFERENCE + "Section 3.3.1 in RFC2960 defines the unordered data chunk." + + ::= { sctpStats 10 } + +sctpInCtrlChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP control chunks received (no duplicate + chunks included)." + REFERENCE + "Sections 1.3.5 and 1.4 in RFC2960 refer to control chunk as + those chunks different from those that contain user + information, i.e., DATA chunks." + + ::= { sctpStats 11 } + + +sctpInOrderChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP ordered data chunks received (no duplicate + chunks included)." + + + + + + REFERENCE + "Section 3.3.1 in RFC2960 defines the ordered data chunk." + + ::= { sctpStats 12 } + + +sctpInUnorderChunks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP unordered chunks (data chunks in which the + U bit is set to 1) received (no duplicate chunks included)." + REFERENCE + "Section 3.3.1 in RFC2960 defines the unordered data chunk." + + ::= { sctpStats 13 } + + + +sctpFragUsrMsgs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The number of user messages that have to be fragmented + because of the MTU." + + ::= { sctpStats 14 } + + +sctpReasmUsrMsgs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of user messages reassembled, after conversion + into DATA chunks." + REFERENCE + "Section 6.9 in RFC2960 includes a description of the + reassembly process." + + ::= { sctpStats 15 } + + + + + + + +sctpOutSCTPPacks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP packets sent. Retransmitted DATA chunks + are included." + + ::= { sctpStats 16 } + + +sctpInSCTPPacks OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCTP packets received. Duplicates are + included." + + ::= { sctpStats 17 } + +sctpDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this general statistics counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + Counter64 object contained in the SCTP layer statistics + (defined below sctpStats branch). If no such discontinuities + have occurred since the last re-initialization of the local + management subsystem, then this object contains a zero value." + REFERENCE + "The inclusion of this object is recommended by RFC2578." + + ::= { sctpStats 18 } + + +-- PROTOCOL GENERAL VARIABLES +-- ************************** + +sctpRtoAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- Other new one. Future use + vanj(2) -- Van Jacobson's algorithm + } + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The algorithm used to determine the timeout value (T3-rtx) + used for re-transmitting unacknowledged chunks." + REFERENCE + "Section 6.3.1 and 6.3.2 in RFC2960 cover the RTO calculation + and retransmission timer rules." + DEFVAL {vanj} -- vanj(2) + + ::= { sctpParams 1 } + + +sctpRtoMin OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum value permitted by a SCTP implementation for the + retransmission timeout value, measured in milliseconds. More + refined semantics for objects of this type depend upon the + algorithm used to determine the retransmission timeout value. + + A retransmission time value of zero means immediate + retransmission. + + The value of this object has to be lower than or equal to + stcpRtoMax's value." + DEFVAL {1000} -- milliseconds + + ::= { sctpParams 2 } + +sctpRtoMax OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value permitted by a SCTP implementation for the + retransmission timeout value, measured in milliseconds. More + refined semantics for objects of this type depend upon the + algorithm used to determine the retransmission timeout value. + + A retransmission time value of zero means immediate re- + transmission. + + + + + + The value of this object has to be greater than or equal to + stcpRtoMin's value." + DEFVAL {60000} -- milliseconds + + ::= { sctpParams 3 } + + +sctpRtoInitial OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The initial value for the retransmission timer. + + A retransmission time value of zero means immediate re- + transmission." + DEFVAL {3000} -- milliseconds + + ::= { sctpParams 4 } + + +sctpMaxAssocs OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The limit on the total number of associations the entity can + support. In entities where the maximum number of associations + is dynamic, this object should contain the value -1." + + ::= { sctpParams 5 } + + +sctpValCookieLife OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid cookie life in the 4-way start-up handshake procedure." + REFERENCE + "Section 5.1.3 in RFC2960 explains the cookie generation + process. Recommended value is per section 14 in RFC2960." + DEFVAL {60000} -- milliseconds + + ::= { sctpParams 6 } + + + +sctpMaxInitRetr OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of retransmissions at the start-up phase + (INIT and COOKIE ECHO chunks). " + REFERENCE + "Section 5.1.4, 5.1.6 in RFC2960 refers to Max.Init.Retransmit + parameter. Recommended value is per section 14 in RFC2960." + DEFVAL {8} -- number of attempts + + ::= { sctpParams 7 } + + +-- TABLES +-- ****** + +-- the SCTP Association TABLE + +-- The SCTP association table contains information about each +-- association in which the local endpoint is involved. + + +sctpAssocTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpAssocEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing SCTP association-specific information." + + ::= { sctpObjects 3 } + + +sctpAssocEntry OBJECT-TYPE + SYNTAX SctpAssocEntry + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "General common variables and statistics for the whole + association." + INDEX { sctpAssocId } + + ::= { sctpAssocTable 1 } + + + + + + +SctpAssocEntry ::= SEQUENCE { + sctpAssocId Unsigned32, + sctpAssocRemHostName OCTET STRING, + sctpAssocLocalPort InetPortNumber, + sctpAssocRemPort InetPortNumber, + sctpAssocRemPrimAddrType InetAddressType, + sctpAssocRemPrimAddr InetAddress, + sctpAssocHeartBeatInterval Unsigned32, + sctpAssocState INTEGER, + sctpAssocInStreams Unsigned32, + sctpAssocOutStreams Unsigned32, + sctpAssocMaxRetr Unsigned32, + sctpAssocPrimProcess Unsigned32, + sctpAssocT1expireds Counter32, -- Statistic + sctpAssocT2expireds Counter32, -- Statistic + sctpAssocRtxChunks Counter32, -- Statistic + sctpAssocStartTime TimeStamp, + sctpAssocDiscontinuityTime TimeStamp + } + + +sctpAssocId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Association Identification. Value identifying the + association. " + + ::= { sctpAssocEntry 1 } + + +sctpAssocRemHostName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The peer's DNS name. This object needs to have the same + format as the encoding in the DNS protocol. This implies that + the domain name can be up to 255 octets long, each octet being + 0<=x<=255 as value with US-ASCII A-Z having a case insensitive + matching. + + If no DNS domain name was received from the peer at init time + (embedded in the INIT or INIT-ACK chunk), this object is + meaningless. In such cases the object MUST contain a zero- + length string value. Otherwise, it contains the remote host + name received at init time." + + + + ::= { sctpAssocEntry 2 } + + +sctpAssocLocalPort OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local SCTP port number used for this association." + + ::= { sctpAssocEntry 3 } + + +sctpAssocRemPort OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The remote SCTP port number used for this association." + + ::= { sctpAssocEntry 4 } + + +sctpAssocRemPrimAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The internet type of primary remote IP address. " + + ::= { sctpAssocEntry 5 } + +sctpAssocRemPrimAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The primary remote IP address. The type of this address is + determined by the value of sctpAssocRemPrimAddrType. + + The client side will know this value after INIT_ACK message + reception, the server side will know this value when sending + INIT_ACK message. However, values will be filled in at + established(4) state." + + ::= { sctpAssocEntry 6 } + + + + + +sctpAssocHeartBeatInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current heartbeat interval.. + + Zero value means no HeartBeat, even when the concerned + sctpAssocRemAddrHBFlag object is true." + DEFVAL {30000} -- milliseconds + + ::= { sctpAssocEntry 7 } + + +sctpAssocState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + cookieWait(2), + cookieEchoed(3), + established(4), + shutdownPending(5), + shutdownSent(6), + shutdownReceived(7), + shutdownAckSent(8), + deleteTCB(9) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this SCTP association. + + As in TCP, deleteTCB(9) is the only value that may be set by a + management station. If any other value is received, then the + agent must return a wrongValue error. + + If a management station sets this object to the value + deleteTCB(9), then this has the effect of deleting the TCB (as + defined in SCTP) of the corresponding association on the + managed node, resulting in immediate termination of the + association. + + As an implementation-specific option, an ABORT chunk may be + sent from the managed node to the other SCTP endpoint as a + result of setting the deleteTCB(9) value. The ABORT chunk + implies an ungraceful association shutdown." + + + + + + REFERENCE + + "Section 4 in RFC2960 covers the SCTP Association state + diagram." + + ::= { sctpAssocEntry 8 } + + +sctpAssocInStreams OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Inbound Streams according to the negotiation at association + start up." + REFERENCE + "Section 1.3 in RFC2960 includes a definition of stream. + Section 5.1.1 in RFC2960 covers the streams negotiation + process." + + ::= { sctpAssocEntry 9 } + +sctpAssocOutStreams OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Outbound Streams according to the negotiation at association + start up. " + REFERENCE + "Section 1.3 in RFC2960 includes a definition of stream. + Section 5.1.1 in RFC2960 covers the streams negotiation + process." + + ::= { sctpAssocEntry 10 } + + +sctpAssocMaxRetr OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of data retransmissions in the association + context. This value is specific for each association and the + upper layer can change it by calling the appropriate + primitives. This value has to be smaller than the addition of + all the maximum number for all the paths + (sctpAssocRemAddrMaxPathRtx). + + + + A value of zero value means no retransmissions." + DEFVAL {10} -- number of attempts + + ::= { sctpAssocEntry 11 } + +sctpAssocPrimProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the system level process which holds + primary responsibility for the SCTP association. + Wherever possible, this should be the system's native unique + identification number. The special value 0 can be used to + indicate that no primary process is known. + + Note that the value of this object can be used as a pointer + into the swRunTable of the HOST-RESOURCES-MIB(if the value is + smaller than 2147483647) or into the sysApplElmtRunTable of + the SYSAPPL-MIB." + + ::= { sctpAssocEntry 12 } + + +-- Association Statistics + +sctpAssocT1expireds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The T1 timer determines how long to wait for an + acknowledgement after sending an INIT or COOKIE-ECHO chunk. + This object reflects the number of times the T1 timer expires + without having received the acknowledgement. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of sctpAssocDiscontinuityTime." + REFERENCE + "Section 5 in RFC2960." + + + ::= { sctpAssocEntry 13 } + +sctpAssocT2expireds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The T2 timer determines how long to wait for an + acknowledgement after sending a SHUTDOWN or SHUTDOWN-ACK + chunk. This object reflects the number of times that T2- timer + expired. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of sctpAssocDiscontinuityTime." +REFERENCE + "Section 9.2 in RFC2960." + ::= { sctpAssocEntry 14 } + + +sctpAssocRtxChunks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When T3-rtx expires, the DATA chunks that triggered the T3 + timer will be re-sent according with the retransmissions + rules. Every DATA chunk that was included in the SCTP packet + that triggered the T3-rtx timer must be added to the value of + this counter. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of sctpAssocDiscontinuityTime." + REFERENCE + "Section 6 in RFC2960 covers the retransmission process and + rules." + + ::= { sctpAssocEntry 15 } + + +sctpAssocStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that the association + represented by this row enters the ESTABLISHED state, i.e., + the sctpAssocState object is set to established(4). The + value of this object will be zero: + - before the association enters the established(4) + state, or + + + + + - if the established(4) state was entered prior to + the last re-initialization of the local network management + subsystem." + + ::= { sctpAssocEntry 16 } + +sctpAssocDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this SCTP association counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + Counter64 object contained in the sctpAssocTable or + sctpLocalAddrTable or sctpRemAddrTable. If no such + discontinuities have occurred since the last re-initialization + of the local management subsystem, then this object contains a + zero value. " + REFERENCE + "The inclusion of this object is recommended by RFC2578." + + ::= { sctpAssocEntry 17 } + +-- Expanded tables: Including Multi-home feature + +-- Local Address TABLE +-- ******************* + +sctpAssocLocalAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpAssocLocalAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Expanded table of sctpAssocTable based on the AssocId index. + This table shows data related to each local IP address which + is used by this association." + + ::= { sctpObjects 4 } + +sctpAssocLocalAddrEntry OBJECT-TYPE + SYNTAX SctpAssocLocalAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Local information about the available addresses. There will + be an entry for every local IP address defined for this + + + + association. + Implementors need to be aware that if the size of + sctpAssocLocalAddr exceeds 114 octets then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2c, or + SNMPv3." + INDEX { sctpAssocId, -- shared index + sctpAssocLocalAddrType, + sctpAssocLocalAddr } + + ::= { sctpAssocLocalAddrTable 1 } + + +SctpAssocLocalAddrEntry ::= SEQUENCE { + sctpAssocLocalAddrType InetAddressType, + sctpAssocLocalAddr InetAddress, + sctpAssocLocalAddrStartTime TimeStamp + } + + +sctpAssocLocalAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Internet type of local IP address used for this association." + + + ::= { sctpAssocLocalAddrEntry 1 } + +sctpAssocLocalAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of a local IP address available for this + association. The type of this address is determined by the + value of sctpAssocLocalAddrType." + + ::= { sctpAssocLocalAddrEntry 2 } + + + + + + + + + + + +sctpAssocLocalAddrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was + created." + + ::= { sctpAssocLocalAddrEntry 3 } + +-- Remote Addresses TABLE +-- ********************** + +sctpAssocRemAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpAssocRemAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Expanded table of sctpAssocTable based on the AssocId index. + This table shows data related to each remote peer IP address + which is used by this association." + + ::= { sctpObjects 5 } + + +sctpAssocRemAddrEntry OBJECT-TYPE + SYNTAX SctpAssocRemAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the most important variables for every + remote IP address. There will be an entry for every remote IP + address defined for this association. + + Implementors need to be aware that if the size of + sctpAssocRemAddr exceeds 114 octets then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2c, or + SNMPv3." + INDEX { sctpAssocId, -- shared index + sctpAssocRemAddrType, + sctpAssocRemAddr } + + ::= { sctpAssocRemAddrTable 1 } + + + + + + + +SctpAssocRemAddrEntry ::= SEQUENCE { + sctpAssocRemAddrType InetAddressType, + sctpAssocRemAddr InetAddress, + sctpAssocRemAddrActive TruthValue, + sctpAssocRemAddrHBActive TruthValue, + sctpAssocRemAddrRTO Unsigned32, + sctpAssocRemAddrMaxPathRtx Unsigned32, + sctpAssocRemAddrRtx Counter32, -- Statistic + sctpAssocRemAddrStartTime TimeStamp + } + + +sctpAssocRemAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Internet type of a remote IP address available for this + association." + ::= { sctpAssocRemAddrEntry 1 } + + +sctpAssocRemAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of a remote IP address available for this + association. The type of this address is determined by the + value of sctpAssocLocalAddrType." + + ::= { sctpAssocRemAddrEntry 2 } + + +sctpAssocRemAddrActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object gives information about the reachability of this + specific remote IP address. + + When the object is set to 'true' (1), the remote IP address is + understood as Active. Active means that the threshold of no + answers received from this IP address has not been reached. + + + + + + + When the object is set to 'false' (2), the remote IP address + is understood as Inactive. Inactive means that either no + heartbeat or any other message was received from this address, + reaching the threshold defined by the protocol." + + REFERENCE + "The remote transport states are defined as Active and + Inactive in the SCTP, RFC2960." + + ::= { sctpAssocRemAddrEntry 3 } + + +sctpAssocRemAddrHBActive OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether the optional Heartbeat check + associated to one destination transport address is activated + or not (value equal to true or false, respectively). " + + ::= { sctpAssocRemAddrEntry 4 } + + +sctpAssocRemAddrRTO OBJECT-TYPE -- T3-rtx- Timer + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current Retransmission Timeout. T3-rtx timer as defined + in the protocol SCTP." + REFERENCE + "Section 6.3 in RFC2960 deals with the Retransmission Timer + Management." + + ::= { sctpAssocRemAddrEntry 5 } + + +sctpAssocRemAddrMaxPathRtx OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of DATA chunks retransmissions allowed to a + remote IP address before it is considered inactive, as defined + in RFC2960." + + + + + REFERENCE + "Section 8.2, 8.3 and 14 in RFC2960." + DEFVAL {5} -- number of attempts + + ::= { sctpAssocRemAddrEntry 6 } + + +-- Remote Address Statistic + +sctpAssocRemAddrRtx OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of DATA chunks retransmissions to this specific IP + address. When T3-rtx expires, the DATA chunk that triggered + the T3 timer will be re-sent according to the retransmissions + rules. Every DATA chunk that is included in a SCTP packet and + was transmitted to this specific IP address before, will be + included in this counter. + + Discontinuities in the value of this counter can occur at re- + initialization of the management system, and at other times as + indicated by the value of sctpAssocDiscontinuityTime." + + ::= { sctpAssocRemAddrEntry 7 } + +sctpAssocRemAddrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was + created." + + ::= { sctpAssocRemAddrEntry 8 } + +-- ASSOCIATION INVERSE TABLE +-- ************************* + +-- BY LOCAL PORT + +sctpLookupLocalPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupLocalPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "With the use of this table, a list of associations which are + + + + using the specified local port can be retrieved." + + ::= { sctpObjects 6 } + + +sctpLookupLocalPortEntry OBJECT-TYPE + SYNTAX SctpLookupLocalPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by local port and association ID. + Specifying a local port, we would get a list of the + associations whose local port is the one specified." + + INDEX { sctpAssocLocalPort, + sctpAssocId } + + ::= { sctpLookupLocalPortTable 1 } + + +SctpLookupLocalPortEntry::= SEQUENCE { + sctpLookupLocalPortStartTime TimeStamp + } + + +sctpLookupLocalPortStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupLocalPortEntry 1 } + +-- BY REMOTE PORT + +sctpLookupRemPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupRemPortEntry + MAX-ACCESS not-accessible + STATUS current + + + + + + + + DESCRIPTION + "With the use of this table, a list of associations which are + using the specified remote port can be got" + + ::= { sctpObjects 7 } + +sctpLookupRemPortEntry OBJECT-TYPE + SYNTAX SctpLookupRemPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by remote port and association ID. + Specifying a remote port we would get a list of the + associations whose local port is the one specified " + + INDEX { sctpAssocRemPort, + sctpAssocId } + + ::= { sctpLookupRemPortTable 1 } + +SctpLookupRemPortEntry::= SEQUENCE { + sctpLookupRemPortStartTime TimeStamp + } + + +sctpLookupRemPortStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupRemPortEntry 1 } + +-- BY REMOTE HOST NAME + +sctpLookupRemHostNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupRemHostNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "With the use of this table, a list of associations with that + particular host can be retrieved." + + + + + ::= { sctpObjects 8 } + + +sctpLookupRemHostNameEntry OBJECT-TYPE + SYNTAX SctpLookupRemHostNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by remote host name and association ID. + Specifying a host name we would get a list of the associations + specifying that host name as the remote one. + + Implementors need to be aware that if the size of + sctpAssocRemHostName exceeds 115 octets then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2c, or + SNMPv3." + + INDEX { sctpAssocRemHostName, + sctpAssocId } + + ::= { sctpLookupRemHostNameTable 1 } + + +SctpLookupRemHostNameEntry::= SEQUENCE { + sctpLookupRemHostNameStartTime TimeStamp + } + +sctpLookupRemHostNameStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupRemHostNameEntry 1 } + + + + + + + + + + + +-- BY REMOTE PRIMARY IP ADDRESS + +sctpLookupRemPrimIPAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupRemPrimIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "With the use of this table, a list of associations that have + the specified IP address as primary within the remote set of + active addresses can be retrieved." + + ::= { sctpObjects 9 } + + +sctpLookupRemPrimIPAddrEntry OBJECT-TYPE + SYNTAX SctpLookupRemPrimIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by primary address and association ID. + Specifying a primary address, we would get a list of the + associations that have the specified remote IP address marked + as primary. + Implementors need to be aware that if the size of + sctpAssocRemPrimAddr exceeds 114 octets then OIDs of column + instances in this table will have more than 128 sub- + identifiers and cannot be accessed using SNMPv1, SNMPv2c, or + SNMPv3." + + INDEX { sctpAssocRemPrimAddrType, + sctpAssocRemPrimAddr, + sctpAssocId } + + ::= { sctpLookupRemPrimIPAddrTable 1 } + +SctpLookupRemPrimIPAddrEntry::= SEQUENCE { + sctpLookupRemPrimIPAddrStartTime TimeStamp + } + + +sctpLookupRemPrimIPAddrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + + + + + + + + DESCRIPTION + "The value of SysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupRemPrimIPAddrEntry 1 } + + +-- BY REMOTE IP ADDRESS + +sctpLookupRemIPAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SctpLookupRemIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "With the use of this table, a list of associations that have + the specified IP address as one of the remote ones can be + retrieved. " + + ::= { sctpObjects 10 } + + +sctpLookupRemIPAddrEntry OBJECT-TYPE + SYNTAX SctpLookupRemIPAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is indexed by a remote IP address and association + ID. Specifying an IP address we would get a list of the + associations that have the specified IP address included + within the set of remote IP addresses." + + INDEX { sctpAssocRemAddrType, + sctpAssocRemAddr, + sctpAssocId } + + ::= { sctpLookupRemIPAddrTable 1 } + + +SctpLookupRemIPAddrEntry::= SEQUENCE { + + sctpLookupRemIPAddrStartTime TimeStamp + } + + + + + + +sctpLookupRemIPAddrStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SysUpTime at the time that this row was created. + + As the table will be created after the sctpAssocTable + creation, this value could be equal to the sctpAssocStartTime + object from the main table." + + ::= { sctpLookupRemIPAddrEntry 1 } + + +-- 4.1 Conformance Information + +sctpMibConformance OBJECT IDENTIFIER ::= { sctpMIB 2 } +sctpMibCompliances OBJECT IDENTIFIER ::= { sctpMibConformance 1 } +sctpMibGroups OBJECT IDENTIFIER ::= { sctpMibConformance 2 } + + +-- 4.1.1 Units of conformance + +-- +-- MODULE GROUPS +-- + +sctpLayerParamsGroup OBJECT-GROUP + OBJECTS { sctpRtoAlgorithm, + sctpRtoMin, + sctpRtoMax, + sctpRtoInitial, + sctpMaxAssocs, + sctpValCookieLife, + sctpMaxInitRetr + } + + STATUS current + DESCRIPTION + "Common parameters for the SCTP layer, i.e., for all the + associations. They can usually be referred to as configuration + parameters." + + ::= { sctpMibGroups 1 } + + + + + + + +sctpStatsGroup OBJECT-GROUP + OBJECTS { sctpCurrEstab, + sctpActiveEstabs, + sctpPassiveEstabs, + sctpAborteds, + sctpShutdowns, + sctpOutOfBlues, + sctpChecksumErrors, + sctpOutCtrlChunks, + sctpOutOrderChunks, + sctpOutUnorderChunks, + sctpInCtrlChunks, + sctpInOrderChunks, + sctpInUnorderChunks, + sctpFragUsrMsgs, + sctpReasmUsrMsgs, + sctpOutSCTPPacks, + sctpInSCTPPacks, + sctpDiscontinuityTime, + sctpAssocT1expireds, + sctpAssocT2expireds, + sctpAssocRtxChunks, + sctpAssocRemAddrRtx + } + + STATUS current + DESCRIPTION + "Statistics group. It includes the objects to collect state + changes in the SCTP protocol local layer and flow control + statistics." + + ::= { sctpMibGroups 2 } + + +sctpPerAssocParamsGroup OBJECT-GROUP + OBJECTS { sctpAssocRemHostName, + sctpAssocLocalPort, + sctpAssocRemPort, + sctpAssocRemPrimAddrType, + sctpAssocRemPrimAddr, + sctpAssocHeartBeatInterval, + sctpAssocState, + sctpAssocInStreams, + sctpAssocOutStreams, + sctpAssocMaxRetr, + sctpAssocPrimProcess, + sctpAssocStartTime, + sctpAssocDiscontinuityTime, + + + + sctpAssocLocalAddrStartTime, + sctpAssocRemAddrActive, + sctpAssocRemAddrHBActive, + sctpAssocRemAddrRTO, + sctpAssocRemAddrMaxPathRtx, + sctpAssocRemAddrStartTime + } + + STATUS current + DESCRIPTION + "The SCTP group of objects to manage per-association + parameters. These variables include all the SCTP basic + features." + + ::= { sctpMibGroups 3 } + +sctpPerAssocStatsGroup OBJECT-GROUP + OBJECTS + { sctpAssocT1expireds, + sctpAssocT2expireds, + sctpAssocRtxChunks, + sctpAssocRemAddrRtx + } + + STATUS current + DESCRIPTION + "Per Association Statistics group. It includes the objects to + collect flow control statistics per association." + + ::= { sctpMibGroups 4 } + +sctpInverseGroup OBJECT-GROUP + OBJECTS { sctpLookupLocalPortStartTime, + sctpLookupRemPortStartTime, + sctpLookupRemHostNameStartTime, + sctpLookupRemPrimIPAddrStartTime, + sctpLookupRemIPAddrStartTime + } + + STATUS current + DESCRIPTION + "Objects used in the inverse lookup tables." + + ::= { sctpMibGroups 5 } + + + + + + + +-- 4.1.2 Compliance Statements + +-- +-- MODULE COMPLIANCES +-- + +sctpMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + this SCTP MIB Module. + + There are a number of INDEX objects that cannot be represented + in the form of OBJECT clauses in SMIv2, but for which we have + the following compliance requirements, expressed in OBJECT + clause form in this description clause: + +-- OBJECT sctpAssocLocalAddrType +-- SYNTAX InetAddressType {ipv4(1), ipv6(2)} +-- DESCRIPTION +-- It is only required to have IPv4 and IPv6 addresses without +-- zone indices. +-- The address with zone indices is required if an +-- implementation can connect multiple zones. +-- +-- OBJECT sctpAssocLocalAddr +-- SYNTAX InetAddress (SIZE(4|16)) +-- DESCRIPTION +-- An implementation is only required to support globally +-- unique IPv4 and IPv6 addresses. +-- +-- OBJECT sctpAssocRemAddrType +-- SYNTAX InetAddressType {ipv4(1), ipv6(2)} +-- DESCRIPTION +-- It is only required to have IPv4 and IPv6 addresses without +-- zone indices. +-- The address with zone indices is required if an +-- implementation can connect multiple zones. +-- +-- OBJECT sctpAssocRemAddr +-- SYNTAX InetAddress (SIZE(4|16)) +-- DESCRIPTION +-- An implementation is only required to support globally +-- unique IPv4 and IPv6 addresses. +-- + " -- closes DESCRIPTION clause of MODULE-COMPLIANCE + + MODULE -- this module + + + + MANDATORY-GROUPS { sctpLayerParamsGroup, + sctpPerAssocParamsGroup, + sctpStatsGroup, + sctpPerAssocStatsGroup + } + + OBJECT sctpAssocRemPrimAddrType + SYNTAX InetAddressType { ipv4(1), + ipv6(2) + } + DESCRIPTION + "It is only required to have IPv4 and IPv6 addresses + without zone indices. + + The address with zone indices is required if an + implementation can connect multiple zones." + + OBJECT sctpAssocRemPrimAddr + SYNTAX InetAddress (SIZE(4|16)) + DESCRIPTION + "An implementation is only required to support globally + unique IPv4 and globally unique IPv6 addresses." + + + OBJECT sctpAssocState + WRITE-SYNTAX INTEGER { deleteTCB(9) } + MIN-ACCESS read-only + DESCRIPTION + "Only the deleteTCB(9) value MAY be set by a management + station at most. A read-only option is also considered to + be compliant with this MIB module description." + + GROUP sctpInverseGroup + DESCRIPTION + "Objects used in inverse lookup tables. This should be + implemented, at the discretion of the implementers, for + easier lookups in the association tables" + + ::= { sctpMibCompliances 1 } + +END diff --git a/mibs/ietf/SFLOW-MIB b/mibs/ietf/SFLOW-MIB new file mode 100644 index 0000000..75ba9ef --- /dev/null +++ b/mibs/ietf/SFLOW-MIB @@ -0,0 +1,410 @@ +SFLOW-MIB DEFINITIONS ::= BEGIN + +IMPORTS + +MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises + FROM SNMPv2-SMI +SnmpAdminString + FROM SNMP-FRAMEWORK-MIB +OwnerString + FROM RMON-MIB +InetAddressType, InetAddress + FROM INET-ADDRESS-MIB +MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + +sFlowMIB MODULE-IDENTITY + LAST-UPDATED "200105150000Z" -- May 15, 2001 + ORGANIZATION "InMon Corp." + CONTACT-INFO + + + + "Peter Phaal + InMon Corp. + http://www.inmon.com/ + + Tel: +1-415-661-6343 + Email: peter_phaal@inmon.com" + DESCRIPTION + "The MIB module for managing the generation and transportation + of sFlow data records." + + -- + -- Revision History + -- + REVISION "200105150000Z" -- May 15, 2001 + DESCRIPTION + "Version 1.2 + + Brings MIB into SMI v2 compliance." + + REVISION "200105010000Z" -- May 1, 2001 + DESCRIPTION + "Version 1.1 + + Adds sFlowDatagramVersion." + ::= { enterprises 4300 1 } + +sFlowAgent OBJECT IDENTIFIER ::= { sFlowMIB 1 } + +sFlowVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Uniquely identifies the version and implementation of this MIB. + The version string must have the following structure: + ;; + where: + must be '1.2', the version of this MIB. + the name of the organization responsible + for the agent implementation. + the specific software build of this agent. + + As an example, the string '1.2;InMon Corp.;2.1.1' indicates + that this agent implements version '1.2' of the SFLOW MIB, that + it was developed by 'InMon Corp.' and that the software build + is '2.1.1'. + + The MIB Version will change with each revision of the SFLOW + + + + MIB. + + Management entities must check the MIB Version and not attempt + to manage agents with MIB Versions greater than that for which + they were designed. + + Note: The sFlow Datagram Format has an independent version + number which may change independently from . + applies to the structure and semantics of + the SFLOW MIB only." + DEFVAL { "1.2;;" } + ::= { sFlowAgent 1 } + +sFlowAgentAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The address type of the address associated with this agent. + Only ipv4 and ipv6 types are supported." + ::= { sFlowAgent 2 } + +sFlowAgentAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address associated with this agent. In the case of a + multi-homed agent, this should be the loopback address of the + agent. The sFlowAgent address must provide SNMP connectivity + to the agent. The address should be an invariant that does not + change as interfaces are reconfigured, enabled, disabled, + added or removed. A manager should be able to use the + sFlowAgentAddress as a unique key that will identify this + agent over extended periods of time so that a history can + be maintained." + ::= { sFlowAgent 3 } + +sFlowTable OBJECT-TYPE + SYNTAX SEQUENCE OF SFlowEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the sFlow samplers within a device." + ::= { sFlowAgent 4 } + +sFlowEntry OBJECT-TYPE + SYNTAX SFlowEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of an sFlow sampler." + INDEX { sFlowDataSource } + ::= { sFlowTable 1 } + +SFlowEntry ::= SEQUENCE { + sFlowDataSource OBJECT IDENTIFIER, + sFlowOwner OwnerString, + sFlowTimeout Integer32, + sFlowPacketSamplingRate Integer32, + sFlowCounterSamplingInterval Integer32, + sFlowMaximumHeaderSize Integer32, + sFlowMaximumDatagramSize Integer32, + sFlowCollectorAddressType InetAddressType, + sFlowCollectorAddress InetAddress, + sFlowCollectorPort Integer32, + sFlowDatagramVersion Integer32 +} + +sFlowDataSource OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the source of the data for the sFlow sampler. + The following data source types are currently defined: + + - ifIndex. + DataSources of this traditional form are called 'port-based'. + Ideally the sampling entity will perform sampling on all flows + originating from or destined to the specified interface. + However, if the switch architecture only permits input or + output sampling then the sampling agent is permitted to only + sample input flows input or output flows. Each packet must + only be considered once for sampling, irrespective of the + number of ports it will be forwarded to. + + Note: Port 0 is used to indicate that all ports on the device + are represented by a single data source. + - sFlowPacketSamplingRate applies to all ports on the + device capable of packet sampling. + - sFlowCounterSamplingInterval applies to all ports. + + - smonVlanDataSource. + A dataSource of this form refers to a 'Packet-based VLAN' + and is called a 'VLAN-based' dataSource. is the VLAN + + + + ID as defined by the IEEE 802.1Q standard. The + value is between 1 and 4094 inclusive, and it represents + an 802.1Q VLAN-ID with global scope within a given + bridged domain. + Sampling is performed on all packets received that are part + of the specified VLAN (no matter which port they arrived on). + Each packet will only be considered once for sampling, + irrespective of the number of ports it will be forwarded to. + + - entPhysicalEntry. + A dataSource of this form refers to a physical entity within + the agent (e.g., entPhysicalClass = backplane(4)) and is called + an 'entity-based' dataSource. + Sampling is performed on all packets entering the resource (e.g. + If the backplane is being sampled, all packets transmitted onto + the backplane will be considered as single candidates for + sampling irrespective of the number of ports they ultimately + reach). + + Note: Since each DataSource operates independently, a packet + that crosses multiple DataSources may generate multiple + flow records." + ::= { sFlowEntry 1 } + +sFlowOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The entity making use of this sFlow sampler. The empty string + indicates that the sFlow sampler is currently unclaimed. + An entity wishing to claim an sFlow sampler must make sure + that the sampler is unclaimed before trying to claim it. + The sampler is claimed by setting the owner string to identify + the entity claiming the sampler. The sampler must be claimed + before any changes can be made to other sampler objects. + + In order to avoid a race condition, the entity taking control + of the sampler must set both the owner and a value for + sFlowTimeout in the same SNMP set request. + + When a management entity is finished using the sampler, + it should set its value back to unclaimed. The agent + must restore all other entities this row to their + default values when the owner is set to unclaimed. + + This mechanism provides no enforcement and relies on the + cooperation of management entities in order to ensure that + + + + competition for a sampler is fairly resolved." + DEFVAL { "" } + ::= { sFlowEntry 2 } + +sFlowTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time (in seconds) remaining before the sampler is released + and stops sampling. When set, the owner establishes control + for the specified period. When read, the remaining time in the + interval is returned. + + A management entity wanting to maintain control of the sampler + is responsible for setting a new value before the old one + expires. + + When the interval expires, the agent is responsible for + restoring all other entities in this row to their default + values." + DEFVAL { 0 } + ::= { sFlowEntry 3 } + +sFlowPacketSamplingRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The statistical sampling rate for packet sampling from this + source. + + Set to N to sample 1/Nth of the packets in the monitored flows. + An agent should choose its own algorithm introduce variance + into the sampling so that exactly every Nth packet is not + counted. A sampling rate of 1 counts all packets. A sampling + rate of 0 disables sampling. + + The agent is permitted to have minimum and maximum allowable + values for the sampling rate. A minimum rate lets the agent + designer set an upper bound on the overhead associated with + sampling, and a maximum rate may be the result of hardware + restrictions (such as counter size). In addition not all values + between the maximum and minimum may be realizable as the + sampling rate (again because of implementation considerations). + + When the sampling rate is set the agent is free to adjust the + value so that it lies between the maximum and minimum values + + + + and has the closest achievable value. + + When read, the agent must return the actual sampling rate it + will be using (after the adjustments previously described). The + sampling algorithm must converge so that over time the number + of packets sampled approaches 1/Nth of the total number of + packets in the monitored flows." + DEFVAL { 0 } + ::= { sFlowEntry 4 } + +sFlowCounterSamplingInterval OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of seconds between successive samples of the + counters associated with this data source. A sampling interval + of 0 disables counter sampling." + DEFVAL { 0 } + ::= { sFlowEntry 5 } + +sFlowMaximumHeaderSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of bytes that should be copied from a + sampled packet. The agent may have an internal maximum and + minimum permissible sizes. If an attempt is made to set this + value outside the permissible range then the agent should + adjust the value to the closest permissible value." + DEFVAL { 128 } + ::= { sFlowEntry 6 } + +sFlowMaximumDatagramSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of data bytes that can be sent in a single + sample datagram. The manager should set this value to avoid + fragmentation of the sFlow datagrams." + DEFVAL { 1400 } + ::= { sFlowEntry 7 } + +sFlowCollectorAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "The type of sFlowCollectorAddress." + DEFVAL { ipv4 } + ::= { sFlowEntry 8 } + +sFlowCollectorAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IP address of the sFlow collector. + If set to 0.0.0.0 all sampling is disabled." + DEFVAL { "0.0.0.0" } + ::= { sFlowEntry 9 } + +sFlowCollectorPort OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The destination port for sFlow datagrams." + DEFVAL { 6343 } + ::= { sFlowEntry 10 } + +sFlowDatagramVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The version of sFlow datagrams that should be sent. + + When set to a value not support by the agent, the agent should + adjust the value to the highest supported value less than the + requested value, or return an error if no such values exist." + DEFVAL { 4 } + ::= { sFlowEntry 11 } + + -- + -- Compliance Statements + -- + +sFlowMIBConformance OBJECT IDENTIFIER ::= { sFlowMIB 2 } +sFlowMIBGroups OBJECT IDENTIFIER ::= { sFlowMIBConformance 1 } +sFlowMIBCompliances OBJECT IDENTIFIER ::= { sFlowMIBConformance 2 } + +sFlowCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "Compliance statements for the sFlow Agent." + + MODULE -- this module + MANDATORY-GROUPS { sFlowAgentGroup } + OBJECT sFlowAgentAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "Agents need only support ipv4." + + OBJECT sFlowCollectorAddressType + SYNTAX InetAddressType { ipv4(1) } + DESCRIPTION + "Agents need only support ipv4." + + ::= { sFlowMIBCompliances 1 } + +sFlowAgentGroup OBJECT-GROUP + OBJECTS { sFlowVersion, sFlowAgentAddressType, sFlowAgentAddress, + sFlowDataSource, sFlowOwner, sFlowTimeout, + sFlowPacketSamplingRate, sFlowCounterSamplingInterval, + sFlowMaximumHeaderSize, sFlowMaximumDatagramSize, + sFlowCollectorAddressType, sFlowCollectorAddress, + sFlowCollectorPort, sFlowDatagramVersion } + STATUS current + DESCRIPTION + "A collection of objects for managing the generation and + transportation of sFlow data records." + ::= { sFlowMIBGroups 1 } + +END diff --git a/mibs/ietf/SIP-COMMON-MIB b/mibs/ietf/SIP-COMMON-MIB new file mode 100644 index 0000000..8218595 --- /dev/null +++ b/mibs/ietf/SIP-COMMON-MIB @@ -0,0 +1,2013 @@ +SIP-COMMON-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + NOTIFICATION-TYPE, + Counter32, + Gauge32, + TimeTicks, + Unsigned32, + + + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + RowStatus, + TimeStamp, + TruthValue + FROM SNMPv2-TC -- RFC 2579 + + MODULE-COMPLIANCE, + OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + SipTCTransportProtocol, + SipTCMethodName, + SipTCEntityRole, + SipTCOptionTagHeaders + FROM SIP-TC-MIB -- RFC 4780 + + applIndex + FROM NETWORK-SERVICES-MIB -- RFC 2788 + + InetPortNumber + FROM INET-ADDRESS-MIB; -- RFC 4001 + +sipCommonMIB MODULE-IDENTITY + LAST-UPDATED "200704200000Z" + ORGANIZATION "IETF Session Initiation Protocol Working Group" + CONTACT-INFO + "SIP WG email: sip@ietf.org + + Co-editor Kevin Lingle + Cisco Systems, Inc. + postal: 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709 + USA + email: klingle@cisco.com + phone: +1 919 476 2029 + + Co-editor Joon Maeng + email: jmaeng@austin.rr.com + + Co-editor Jean-Francois Mule + CableLabs + + + postal: 858 Coal Creek Circle + Louisville, CO 80027 + USA + email: jf.mule@cablelabs.com + phone: +1 303 661 9100 + + Co-editor Dave Walker + email: drwalker@rogers.com" + DESCRIPTION + "Session Initiation Protocol (SIP) Common MIB module. This + module defines objects that may be common to all SIP entities. + + SIP is an application-layer signaling protocol for creating, + modifying and terminating multimedia sessions with one or more + participants. These sessions include Internet multimedia + conferences and Internet telephone calls. SIP is defined in + RFC 3261 (June 2002). + + This MIB is defined for managing objects that are common to + SIP User Agents (UAs), Proxy, Redirect, and Registrar servers. + Objects specific to each of these entities MAY be managed using + entity specific MIBs defined in other modules. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4780; see the RFC itself for + full legal notices." + REVISION "200704200000Z" + DESCRIPTION + "Initial version of the IETF SIP-COMMON-MIB module. This + version published as part of RFC 4780." + ::= { mib-2 149 } + +-- Top-Level Components of this MIB. +sipCommonMIBNotifications OBJECT IDENTIFIER ::= { sipCommonMIB 0 } +sipCommonMIBObjects OBJECT IDENTIFIER ::= { sipCommonMIB 1 } +sipCommonMIBConformance OBJECT IDENTIFIER ::= { sipCommonMIB 2 } + +-- +-- This MIB contains objects that are common to all SIP entities. +-- + +-- Common basic configuration +sipCommonCfgBase OBJECT IDENTIFIER ::= { sipCommonMIBObjects 1 } + +-- Protocol timer configuration +sipCommonCfgTimer OBJECT IDENTIFIER ::= { sipCommonMIBObjects 2 } + +-- SIP message summary statistics + + +sipCommonSummaryStats OBJECT IDENTIFIER ::= { sipCommonMIBObjects 3 } + +-- Per method statistics +sipCommonMethodStats OBJECT IDENTIFIER ::= { sipCommonMIBObjects 4 } + +-- Per Status code or status code class statistics +sipCommonStatusCode OBJECT IDENTIFIER ::= { sipCommonMIBObjects 5 } + +-- Transaction statistics +sipCommonStatsTrans OBJECT IDENTIFIER ::= { sipCommonMIBObjects 6 } + +-- Method retry statistics +sipCommonStatsRetry OBJECT IDENTIFIER ::= { sipCommonMIBObjects 7 } + +-- Other statistics +sipCommonOtherStats OBJECT IDENTIFIER ::= { sipCommonMIBObjects 8 } + +-- Accessible-for-notify objects +sipCommonNotifObjects OBJECT IDENTIFIER ::= { sipCommonMIBObjects 9 } + +-- +-- Common Configuration Objects +-- +sipCommonCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the common configuration objects applicable + to all SIP entities." + ::= { sipCommonCfgBase 1 } + +sipCommonCfgEntry OBJECT-TYPE + SYNTAX SipCommonCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of common configuration. + + Each row represents objects for a particular SIP entity + instance present in this system. applIndex is used to uniquely + identify these instances of SIP entities and correlate them + through the common framework of the NETWORK-SERVICES-MIB (RFC + 2788)." + INDEX { applIndex } + ::= { sipCommonCfgTable 1 } + +SipCommonCfgEntry ::= SEQUENCE { + + + sipCommonCfgProtocolVersion SnmpAdminString, + sipCommonCfgServiceOperStatus INTEGER, + sipCommonCfgServiceStartTime TimeTicks, + sipCommonCfgServiceLastChange TimeTicks, + sipCommonCfgOrganization SnmpAdminString, + sipCommonCfgMaxTransactions Unsigned32, + sipCommonCfgServiceNotifEnable BITS, + sipCommonCfgEntityType SipTCEntityRole + } + +sipCommonCfgProtocolVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object will reflect the version of SIP supported by this + SIP entity. It will follow the same format as SIP version + information contained in the SIP messages generated by this SIP + entity. For example, entities supporting SIP version 2 will + return 'SIP/2.0' as dictated by the standard." + REFERENCE + "RFC 3261, Section 7.1" + ::= { sipCommonCfgEntry 1 } + +sipCommonCfgServiceOperStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + up(2), + down(3), + congested(4), + restarting(5), + quiescing(6), + testing(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the current operational state of + the SIP application. + + unknown : The operational status cannot be determined + for some reason. + up : The application is operating normally and is + processing (receiving and possibly issuing) SIP + requests and responses. + down : The application is currently unable to process + SIP messages. + congested : The application is operational but no additional + + + + inbound transactions can be accommodated at the + moment. + restarting : The application is currently unavailable, but it + is in the process of restarting and will + presumably, soon be able to process SIP messages. + quiescing : The application is currently operational + but has been administratively put into + quiescence mode. Additional inbound + transactions MAY be rejected. + testing : The application is currently in test mode + and MAY not be able to process SIP messages. + + The operational status values defined for this object are not + based on any specific information contained in the SIP + standard." + ::= { sipCommonCfgEntry 2 } + +sipCommonCfgServiceStartTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the SIP entity was last + started. If started prior to the last re-initialization of the + local network management subsystem, then this object contains a + zero value." + ::= { sipCommonCfgEntry 3 } + +sipCommonCfgServiceLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the SIP entity entered its + current operational state. If the current state was entered + prior to the last re-initialization of the local network + management subsystem, then this object contains a zero value." + ::= { sipCommonCfgEntry 4 } + +sipCommonCfgOrganization OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the organization name that the SIP entity + inserts into Organization headers of SIP messages processed by + this system. If the string is empty, no Organization header is + to be generated." + + + + REFERENCE + "RFC 3261, Section 20.25" + ::= { sipCommonCfgEntry 5 } + +sipCommonCfgMaxTransactions OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the maximum number of simultaneous + transactions per second that the SIP entity can manage. In + general, the value of this object SHOULD reflect a level of + transaction processing per second that is considered high + enough to impact the system's CPU and/or memory resources to + the point of deteriorating SIP call processing but not high + enough to cause catastrophic system failure." + ::= { sipCommonCfgEntry 6 } + +sipCommonCfgServiceNotifEnable OBJECT-TYPE + SYNTAX BITS { + sipCommonServiceColdStart(0), + sipCommonServiceWarmStart(1), + sipCommonServiceStatusChanged(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies which SIP service related notifications + are enabled. Each bit represents a specific notification. If + a bit has a value 1, the associated notification is enabled and + will be generated by the SIP entity at the appropriate time. + + Support for these notifications is OPTIONAL: either none or all + notification values are supported. If an implementation does + not support this object, it should return a 'noSuchObject' + exception to an SNMP GET operation. If notifications are + supported, this object's default value SHOULD reflect + sipCommonServiceColdStart and sipCommonServiceWarmStart enabled + and sipCommonServiceStatusChanged disabled. + + This object value SHOULD persist across reboots." + DEFVAL { { sipCommonServiceColdStart, + sipCommonServiceWarmStart } } + ::= { sipCommonCfgEntry 7 } + +sipCommonCfgEntityType OBJECT-TYPE + SYNTAX SipTCEntityRole + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object identifies the list of SIP entities to which this + row is related. It is defined as a bit map. Each bit + represents a type of SIP entity. If a bit has value 1, the + SIP entity represented by this row plays the role of this + entity type. If a bit has value 0, the SIP entity represented + by this row does not act as this entity type. Combinations + of bits can be set when the SIP entity plays multiple SIP + roles." + ::= { sipCommonCfgEntry 8 } + +-- +-- Support for multiple ports +-- +sipCommonPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the list of ports that each SIP entity in + this system is allowed to use. These ports can be advertised + using the Contact header in a REGISTER request or response." + ::= { sipCommonCfgBase 2 } + +sipCommonPortEntry OBJECT-TYPE + SYNTAX SipCommonPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specification of a particular port. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonPort } + ::= { sipCommonPortTable 1 } + +SipCommonPortEntry ::= SEQUENCE { + sipCommonPort InetPortNumber, + sipCommonPortTransportRcv SipTCTransportProtocol + } + +sipCommonPort OBJECT-TYPE + SYNTAX InetPortNumber (1..65535) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This object reflects a particular port that can be used by the + SIP application." + ::= { sipCommonPortEntry 1 } + +sipCommonPortTransportRcv OBJECT-TYPE + SYNTAX SipTCTransportProtocol + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object will specify the transport protocol the SIP entity + will use to receive SIP messages. + + This object is a bit map. Each bit represents a transport + protocol. If a bit has value 1, then that transport protocol + is currently being used. If a bit has value 0, then that + transport protocol is currently not being used." + ::= { sipCommonPortEntry 2 } + +-- +-- Support for SIP option tags (SIP extensions). +-- SIP extensions MAY be supported or required by SIP entities. +-- + +sipCommonOptionTagTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonOptionTagEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of the SIP option tags (SIP + extensions) that are either required, supported, or + unsupported by the SIP entity. These option tags are + used in the Require, Proxy-Require, Supported, and + Unsupported header fields. + + Example: If a user agent client supports, and requires the + server to support, reliability of provisional responses + (RFC 3262), this table contains a row with the option tag string + '100rel' in sipCommonOptionTag and the OCTET STRING value of + '1010 0000' or '0xA0' in sipCommonOptionTagHeaderField. + + If a server does not support the required feature (indicated in + a Require header to a UAS, or in a Proxy-Require to a Proxy + Server), the server returns a 420 Bad Extension listing the + feature in an Unsupported header. + + Normally, the list of such features supported by an entity is + static (i.e., will not change over time)." + + + + REFERENCE + "RFC 3261, Sections 19.2, 20.32, 20.29, 20.37, and 20.40" + ::= { sipCommonCfgBase 3 } + +sipCommonOptionTagEntry OBJECT-TYPE + SYNTAX SipCommonOptionTagEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A particular SIP option tag (extension) supported or + unsupported by the SIP entity, and which may be supported or + required by a peer. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonOptionTagIndex } + ::= { sipCommonOptionTagTable 1 } + +SipCommonOptionTagEntry ::= SEQUENCE { + sipCommonOptionTagIndex Unsigned32, + sipCommonOptionTag SnmpAdminString, + sipCommonOptionTagHeaderField SipTCOptionTagHeaders + } + +sipCommonOptionTagIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies a conceptual row in the table." + ::= { sipCommonOptionTagEntry 1 } + +sipCommonOptionTag OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the SIP option tag. The option tag names + are registered with IANA and available at http://www.iana.org." + REFERENCE "RFC 3261, Section 27.1" + ::= { sipCommonOptionTagEntry 2 } + +sipCommonOptionTagHeaderField OBJECT-TYPE + SYNTAX SipTCOptionTagHeaders + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "This object indicates whether the SIP option tag is supported + (Supported header), unsupported (Unsupported header), or + required (Require or Proxy-Require header) by the SIP entity. + A SIP option tag may be both supported and required." + ::= { sipCommonOptionTagEntry 3 } + +-- +-- Supported SIP Methods +-- +sipCommonMethodSupportedTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonMethodSupportedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains a list of methods supported by each SIP + entity in this system (see the standard set of SIP methods in + Section 7.1 of RFC 3261). Any additional methods that may be + incorporated into the SIP protocol can be represented by this + table without any requirement to update this MIB module. + + The table is informational in nature and conveys capabilities + of the managed system to the SNMP Manager. + + From a protocol point of view, the list of methods advertised + by the SIP entity in the Allow header (Section 20.5 of RFC + 3261) MUST be consistent with the methods reflected in this + table." + ::= { sipCommonCfgBase 4 } + +sipCommonMethodSupportedEntry OBJECT-TYPE + SYNTAX SipCommonMethodSupportedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A particular method supported by the SIP entity. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonMethodSupportedIndex } + ::= { sipCommonMethodSupportedTable 1 } + +SipCommonMethodSupportedEntry ::= SEQUENCE { + sipCommonMethodSupportedIndex Unsigned32, + sipCommonMethodSupportedName SipTCMethodName + } + + + +sipCommonMethodSupportedIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies a conceptual row in the table + and reflects an assigned number used to identify a specific + SIP method. + + This identifier is suitable for referencing the associated + method throughout this and other MIBs supported by this managed + system." + ::= { sipCommonMethodSupportedEntry 1 } + +sipCommonMethodSupportedName OBJECT-TYPE + SYNTAX SipTCMethodName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the supported method's name. The method + name MUST be all upper case (e.g., 'INVITE')." + ::= { sipCommonMethodSupportedEntry 2 } + +-- +-- SIP Timer Configuration +-- +sipCommonCfgTimerTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonCfgTimerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains timer configuration objects applicable to + SIP user agent and SIP stateful Proxy Server entities." + ::= { sipCommonCfgTimer 1 } + +sipCommonCfgTimerEntry OBJECT-TYPE + SYNTAX SipCommonCfgTimerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of timer configuration. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788). + The objects in this table entry SHOULD be non-volatile and + their value SHOULD be kept at reboot." + + + + INDEX { applIndex } + ::= { sipCommonCfgTimerTable 1 } + +SipCommonCfgTimerEntry ::= SEQUENCE { + sipCommonCfgTimerA Unsigned32, + sipCommonCfgTimerB Unsigned32, + sipCommonCfgTimerC Unsigned32, + sipCommonCfgTimerD Unsigned32, + sipCommonCfgTimerE Unsigned32, + sipCommonCfgTimerF Unsigned32, + sipCommonCfgTimerG Unsigned32, + sipCommonCfgTimerH Unsigned32, + sipCommonCfgTimerI Unsigned32, + sipCommonCfgTimerJ Unsigned32, + sipCommonCfgTimerK Unsigned32, + sipCommonCfgTimerT1 Unsigned32, + sipCommonCfgTimerT2 Unsigned32, + sipCommonCfgTimerT4 Unsigned32 + } + +sipCommonCfgTimerA OBJECT-TYPE + SYNTAX Unsigned32 (100..1000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the initial value for the retransmit timer + for the INVITE method. The retransmit timer doubles after each + retransmission, ensuring an exponential backoff in network + traffic. This object represents the initial time a SIP entity + will wait to receive a provisional response to an INVITE before + resending the INVITE request." + REFERENCE + "RFC 3261, Section 17.1.1.2" + DEFVAL { 500 } + ::= { sipCommonCfgTimerEntry 1 } + +sipCommonCfgTimerB OBJECT-TYPE + SYNTAX Unsigned32 (32000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP entity will wait to + receive a final response to an INVITE. The timer is started + upon transmission of the initial INVITE request." + REFERENCE + "RFC 3261, Section 17.1.1.2" + + + + DEFVAL { 32000 } +::= { sipCommonCfgTimerEntry 2 } + +sipCommonCfgTimerC OBJECT-TYPE + SYNTAX Unsigned32 (180000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP Proxy Server will + wait to receive a provisional response to an INVITE. The Timer + C MUST be set for each client transaction when an INVITE + request is proxied." + REFERENCE + "RFC 3261, Section 16.6" + DEFVAL { 180000 } + ::= { sipCommonCfgTimerEntry 3 } + +sipCommonCfgTimerD OBJECT-TYPE + SYNTAX Unsigned32 (0..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the amount of time that the server + transaction can remain in the 'Completed' state when unreliable + transports are used. The default value MUST be equal to or + greater than 32000 for UDP transport, and its value MUST be 0 + for TCP/SCTP transport." + REFERENCE + "RFC 3261, Section 17.1.1.2" + DEFVAL { 32000 } + ::= { sipCommonCfgTimerEntry 4 } + +sipCommonCfgTimerE OBJECT-TYPE + SYNTAX Unsigned32 (100..1000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the initial value for the retransmit timer + for a non-INVITE method while in 'Trying' state. The + retransmit timer doubles after each retransmission until it + reaches T2 to ensure an exponential backoff in network traffic. + This object represents the initial time a SIP entity will wait + to receive a provisional response to the request before + resending the non-INVITE request." + REFERENCE + + + + "RFC 3261, Section 17.1.2.2" + DEFVAL { 500 } + ::= { sipCommonCfgTimerEntry 5 } + +sipCommonCfgTimerF OBJECT-TYPE + SYNTAX Unsigned32 (32000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP entity will wait to + receive a final response to a non-INVITE request. The timer is + started upon transmission of the initial request." + REFERENCE + "RFC 3261, Section 17.1.2.2" + DEFVAL { 32000 } + + ::= { sipCommonCfgTimerEntry 6 } + +sipCommonCfgTimerG OBJECT-TYPE + SYNTAX Unsigned32 (0..1000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the initial value for the retransmit timer + for final responses to INVITE requests. If timer G fires, the + response is passed to the transport layer again for + retransmission, and timer G is set to fire in MIN(2*T1, T2) + seconds. From then on, when timer G fires, the response is + passed to the transport again for transmission, and timer G is + reset with a value that doubles, unless that value exceeds T2, + in which case, it is reset with the value of T2. The default + value MUST be T1 for UDP transport, and its value MUST be 0 for + reliable transport like TCP/SCTP." + REFERENCE + "RFC 3261, Section 17.2.1" + DEFVAL { 500 } + ::= { sipCommonCfgTimerEntry 7 } + +sipCommonCfgTimerH OBJECT-TYPE + SYNTAX Unsigned32 (32000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a server will wait to + receive an ACK before it abandons retransmitting the response. + + + + The timer is started upon entering the 'Completed' state." + REFERENCE + "RFC 3261, Section 17.2.1" + DEFVAL { 32000 } + ::= { sipCommonCfgTimerEntry 8 } + +sipCommonCfgTimerI OBJECT-TYPE + SYNTAX Unsigned32 (0..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP entity will wait to + receive additional ACK message retransmissions. + + The timer is started upon entering the 'Confirmed' state. The + default value MUST be T4 for UDP transport and its value MUST + be 0 for reliable transport like TCP/SCTP." + REFERENCE + "RFC 3261, Section 17.2.1" + DEFVAL { 5000 } + ::= { sipCommonCfgTimerEntry 9 } + +sipCommonCfgTimerJ OBJECT-TYPE + SYNTAX Unsigned32 (32000..300000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP server will wait to + receive retransmissions of non-INVITE requests. The timer is + started upon entering the 'Completed' state for non-INVITE + transactions. When timer J fires, the server MUST transition to + the 'Terminated' state." + REFERENCE + "RFC 3261, Section 17.2.2" + DEFVAL { 32000 } + ::= { sipCommonCfgTimerEntry 10 } + +sipCommonCfgTimerK OBJECT-TYPE + SYNTAX Unsigned32 (0..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum time a SIP client will wait to + receive retransmissions of responses to non-INVITE requests. + The timer is started upon entering the 'Completed' state for + + + + non-INVITE transactions. When timer K fires, the server MUST + transition to the 'Terminated' state. The default value MUST + be T4 for UDP transport, and its value MUST be 0 for reliable + transport like TCP/SCTP." + REFERENCE + "RFC 3261, Section 17.1.2.2" + DEFVAL { 5000 } + ::= { sipCommonCfgTimerEntry 11 } + +sipCommonCfgTimerT1 OBJECT-TYPE + SYNTAX Unsigned32 (200..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the T1 timer for a SIP entity. T1 is an + estimate of the round-trip time (RTT) between the client and + server transactions." + REFERENCE + "RFC 3261, Section 17" + DEFVAL { 500 } + ::= { sipCommonCfgTimerEntry 12 } + +sipCommonCfgTimerT2 OBJECT-TYPE + SYNTAX Unsigned32 (200..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the T2 timer for a SIP entity. T2 is the + maximum retransmit interval for non-INVITE requests and INVITE + responses. It's used in various parts of the protocol to reset + other Timer* objects to this value." + REFERENCE + "RFC 3261, Section 17" + DEFVAL { 4000 } + ::= { sipCommonCfgTimerEntry 13 } + +sipCommonCfgTimerT4 OBJECT-TYPE + SYNTAX Unsigned32 (200..10000) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the T4 timer for a SIP entity. T4 is the + maximum duration a message will remain in the network. It + represents the amount of time the network will take to clear + messages between client and server transactions. It's used in + + + + various parts of the protocol to reset other Timer* objects to + this value." + REFERENCE + "RFC 3261, Section 17" + DEFVAL { 5000 } + ::= { sipCommonCfgTimerEntry 14 } + +-- +-- Common Statistics Objects +-- + +-- +-- Summary Statistics +-- +sipCommonSummaryStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonSummaryStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the summary statistics objects applicable + to all SIP entities. Each row represents those objects for a + particular SIP entity present in this system." + ::= { sipCommonSummaryStats 1 } + +sipCommonSummaryStatsEntry OBJECT-TYPE + SYNTAX SipCommonSummaryStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of summary statistics. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex } + ::= { sipCommonSummaryStatsTable 1 } + +SipCommonSummaryStatsEntry ::= SEQUENCE { + sipCommonSummaryInRequests Counter32, + sipCommonSummaryOutRequests Counter32, + sipCommonSummaryInResponses Counter32, + sipCommonSummaryOutResponses Counter32, + sipCommonSummaryTotalTransactions Counter32, + sipCommonSummaryDisconTime TimeStamp + } + +sipCommonSummaryInRequests OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the total number of SIP request messages + received by the SIP entity, including retransmissions. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 1 } + +sipCommonSummaryOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of SIP request messages + sent out (originated and relayed) by the SIP entity. Where a + particular message is sent more than once, for example as a + retransmission or as a result of forking, each transmission is + counted separately. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 2 } + +sipCommonSummaryInResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of SIP response messages + received by the SIP entity, including retransmissions. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 3 } + +sipCommonSummaryOutResponses OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the total number of SIP response messages + sent (originated and relayed) by the SIP entity including + retransmissions. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 4 } + +sipCommonSummaryTotalTransactions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a count of the number of transactions that + are in progress and transactions that have reached the + 'Terminated' state. It is not applicable to stateless SIP Proxy + Servers. + + A SIP transaction occurs between a client and a server, and + comprises all messages from the first request sent from the + client to the server, up to a final (non-1xx) response sent + from the server to the client. + + If the request is INVITE and the final response is a non-2xx, + the transaction also include an ACK to the response. The ACK + for a 2xx response to an INVITE request is a separate + transaction. + + The branch ID parameter in the Via header field values serves + as a transaction identifier. + + A transaction is identified by the CSeq sequence number within + a single call leg. The ACK request has the same CSeq number as + the corresponding INVITE request, but comprises a transaction + of its own. + + In the case of a forked request, each branch counts as a single + transaction. + + For a transaction stateless Proxy Server, this counter is + always 0. + + + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonSummaryDisconTime object in the same + row." + ::= { sipCommonSummaryStatsEntry 5 } + +sipCommonSummaryDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + summary statistics objects in this row last experienced a + discontinuity." + ::= { sipCommonSummaryStatsEntry 6 } + +-- +-- SIP Method Statistics +-- Total counts for each SIP method. +-- +sipCommonMethodStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonMethodStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the method statistics objects for SIP + entities. Each row represents those objects for a particular + SIP entity present in this system." + ::= { sipCommonMethodStats 1 } + +sipCommonMethodStatsEntry OBJECT-TYPE + SYNTAX SipCommonMethodStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of per entity method statistics. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonMethodStatsName } + ::= { sipCommonMethodStatsTable 1 } + +SipCommonMethodStatsEntry ::= SEQUENCE { + sipCommonMethodStatsName SipTCMethodName, + sipCommonMethodStatsOutbounds Counter32, + + + + sipCommonMethodStatsInbounds Counter32, + sipCommonMethodStatsDisconTime TimeStamp + + } + +sipCommonMethodStatsName OBJECT-TYPE + SYNTAX SipTCMethodName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies the SIP method related to the + objects in a particular row." + ::= { sipCommonMethodStatsEntry 1 } + +sipCommonMethodStatsOutbounds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of requests sent by the + SIP entity, excluding retransmissions. Retransmissions are + counted separately and are not reflected in this counter. A + Management Station can detect discontinuities in this counter + by monitoring the sipCommonMethodStatsDisconTime object in the + same row." + REFERENCE + "RFC 3261, Section 7.1" + ::= { sipCommonMethodStatsEntry 2 } + +sipCommonMethodStatsInbounds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of requests received by + the SIP entity. Retransmissions are counted separately and are + not reflected in this counter. A Management Station can detect + discontinuities in this counter by monitoring the + sipCommonMethodStatsDisconTime object in the same row." + REFERENCE + "RFC 3261, Section 7.1" + ::= { sipCommonMethodStatsEntry 3 } + +sipCommonMethodStatsDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of the sysUpTime object when the counters for the + method statistics objects in this row last experienced a + discontinuity." + ::= { sipCommonMethodStatsEntry 4 } + +-- +-- Support for specific status codes +-- +sipCommonStatusCodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonStatusCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the list of SIP status codes that each SIP + entity in this system has been requested to monitor. It is the + mechanism by which specific status codes are monitored. + Entries created in this table must not persist across reboots." + ::= { sipCommonStatusCode 1 } + +sipCommonStatusCodeEntry OBJECT-TYPE + SYNTAX SipCommonStatusCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This row contains information on a particular SIP status code + that the SIP entity has been requested to monitor. Entries + created in this table must not persist across reboots. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex, sipCommonStatusCodeMethod, + sipCommonStatusCodeValue } + ::= { sipCommonStatusCodeTable 1 } + +SipCommonStatusCodeEntry ::= SEQUENCE { + sipCommonStatusCodeMethod SipTCMethodName, + sipCommonStatusCodeValue Unsigned32, + sipCommonStatusCodeIns Counter32, + sipCommonStatusCodeOuts Counter32, + sipCommonStatusCodeRowStatus RowStatus, + sipCommonStatusCodeDisconTime TimeStamp + } + +sipCommonStatusCodeMethod OBJECT-TYPE + SYNTAX SipTCMethodName + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "This object uniquely identifies a conceptual row in the + table." + ::= { sipCommonStatusCodeEntry 1 } + +sipCommonStatusCodeValue OBJECT-TYPE + SYNTAX Unsigned32 (100..999) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains a SIP status code value that the SIP + entity has been requested to monitor. All of the other + information in the row is related to this value." + ::= { sipCommonStatusCodeEntry 2 } + +sipCommonStatusCodeIns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of response messages + received by the SIP entity with the status code value contained + in the sipCommonStatusCodeValue column. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service, or when the + monitoring of the status code is temporarily disabled. A + Management Station can detect discontinuities in this counter + by monitoring the sipCommonStatusCodeDisconTime object in the + same row." + ::= { sipCommonStatusCodeEntry 3 } + +sipCommonStatusCodeOuts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of response messages sent + by the SIP entity with the status code value contained in the + sipCommonStatusCodeValue column. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service, or when the + monitoring of the Status code is temporarily disabled. A + Management Station can detect discontinuities in this counter + by monitoring the sipCommonStatusCodeDisconTime object in the + same row." + + + + ::= { sipCommonStatusCodeEntry 4 } + +sipCommonStatusCodeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row augmentation in sipCommonStatusCodeNotifTable will be + governed by the value of this RowStatus. + + The values 'createAndGo' and 'destroy' are the only valid + values allowed for this object. If a row exists, it will + reflect a status of 'active' when queried." + ::= { sipCommonStatusCodeEntry 5 } + +sipCommonStatusCodeDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + status code statistics objects in this row last experienced + a discontinuity." + ::= { sipCommonStatusCodeEntry 6 } + +-- +-- Support for specific status code notifications +-- + +sipCommonStatusCodeNotifTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonStatusCodeNotifEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects to control notifications related to + particular status codes that each SIP entity in this system has + been requested to monitor. + + There is an entry in this table corresponding to each entry in + sipCommonStatusCodeTable. Therefore, this table augments + sipCommonStatusCodeTable and utilizes the same index + methodology. + + The objects in this table are not included directly in the + sipCommonStatusCodeTable simply to keep the status code + notification control objects separate from the actual status + code statistics." + ::= { sipCommonStatusCode 2 } + + + +sipCommonStatusCodeNotifEntry OBJECT-TYPE + SYNTAX SipCommonStatusCodeNotifEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This row contains information controlling notifications for a + particular SIP status code that the SIP entity has been + requested to monitor." + AUGMENTS { sipCommonStatusCodeEntry } + ::= { sipCommonStatusCodeNotifTable 1 } + +SipCommonStatusCodeNotifEntry ::= SEQUENCE { + sipCommonStatusCodeNotifSend TruthValue, + sipCommonStatusCodeNotifEmitMode INTEGER, + sipCommonStatusCodeNotifThresh Unsigned32, + sipCommonStatusCodeNotifInterval Unsigned32 + } + +sipCommonStatusCodeNotifSend OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls whether a sipCommonStatusCodeNotif is + emitted when the status code value specified by + sipCommonStatusCodeValue is sent or received. If the value of + this object is 'true', then a notification is sent. If it is + 'false', no notification is sent. + Note well that a notification MAY be emitted for every message + sent or received that contains the particular status code. + Depending on the status code involved, this can cause a + significant number of notification emissions that could be + detrimental to network performance. Managers are forewarned to + be prudent in the use of this object to enable notifications. + Look to sipCommonStatusCodeNotifEmitMode for alternative + controls for sipCommonStatusCodeNotif emissions." + DEFVAL { false } + ::= { sipCommonStatusCodeNotifEntry 1 } + +sipCommonStatusCodeNotifEmitMode OBJECT-TYPE + SYNTAX INTEGER { + normal(1), + oneShot(2), + triggered(3) -- read-only + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "The object sipCommonStatusCodeNotifSend MUST be set to 'true' + for the values of this object to have any effect. It is + RECOMMENDED that the desired emit mode be established by this + object prior to setting sipCommonStatusCodeNotifSend to 'true'. + This object and the sipCommonStatusCodeNotifSend object can + obviously be set independently, but their respective values + will have a dependency on each other and the resulting + notifications. + + This object specifies the mode for emissions of + sipCommonStatusCodeNotif notifications. + + normal : sipCommonStatusCodeNotif notifications will be + emitted by the system for each SIP response + message sent or received that contains the + desired status code. + + oneShot : Only one sipCommonStatusCodeNotif notification + will be emitted. It will be the next SIP response + message sent or received that contains the + desired status code. + + No more notifications are emitted until this + object is set to 'oneShot' again or set to + 'normal'. This option is provided as a means of + quelling the potential promiscuous behavior that + can be associated with the + sipCommonStatusCodeNotif. + + triggered : This value is only readable and cannot be set. It + reflects that the 'oneShot' case has occurred, + and indicates that the mode needs to be reset to + get further notifications. The mode is reset by + setting this object to 'oneShot' or 'normal'." + DEFVAL { oneShot } + ::= { sipCommonStatusCodeNotifEntry 2 } + +sipCommonStatusCodeNotifThresh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the number of response messages sent or + received by this system that are considered excessive. Based + on crossing that threshold, a + sipCommonStatusCodeThreshExceededInNotif notification or a + sipCommonStatusCodeThreshExceededOutNotif will be sent. The + sipCommonStatusCodeThreshExceededInNotif and + + + + sipCommonStatusCodeThreshExceededOutNotif notifications can be + used as an early warning mechanism in lieu of using + sipCommonStatusCodeNotif. + + Note that the configuration applied by this object will be + applied equally to inbound and outbound response messages." + DEFVAL { 500 } + ::= { sipCommonStatusCodeNotifEntry 3 } + +sipCommonStatusCodeNotifInterval OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the time interval over which, if + sipCommonStatusCodeThresh is exceeded with respect to sent or + received messages, a sipCommonStatusCodeThreshExceededInNotif + or sipCommonStatusCodeThreshExceededOutNotif notification will + be sent. + + Note that the configuration applied by this object will be + applied equally to inbound and outbound response messages." + DEFVAL { 60 } + ::= { sipCommonStatusCodeNotifEntry 4 } + +-- +-- Transaction Statistics +-- +sipCommonTransCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonTransCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the transactions currently + awaiting definitive responses by each SIP entity in this + system. + + This table does not apply to transaction stateless Proxy + Servers." + ::= { sipCommonStatsTrans 1 } + +sipCommonTransCurrentEntry OBJECT-TYPE + SYNTAX SipCommonTransCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular SIP entity's current transactions. + + + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex } + ::= { sipCommonTransCurrentTable 1 } + +SipCommonTransCurrentEntry ::= SEQUENCE { + sipCommonTransCurrentactions Gauge32 + } + +sipCommonTransCurrentactions OBJECT-TYPE + SYNTAX Gauge32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of transactions awaiting + definitive (non-1xx) response. In the case of a forked + request, each branch counts as a single transaction + corresponding to the entity identified by applIndex." +::= { sipCommonTransCurrentEntry 1 } + +-- +-- SIP Retry Statistics +-- +-- This group contains various statistics objects about +-- retransmission counts. +-- +sipCommonStatsRetryTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonStatsRetryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains retry statistics objects applicable to each + SIP entity in this system." + ::= { sipCommonStatsRetry 1 } + +sipCommonStatsRetryEntry OBJECT-TYPE + SYNTAX SipCommonStatsRetryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of retry statistics. + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + + + + INDEX { applIndex, sipCommonStatsRetryMethod } + ::= { sipCommonStatsRetryTable 1 } + +SipCommonStatsRetryEntry ::= SEQUENCE { + sipCommonStatsRetryMethod SipTCMethodName, + sipCommonStatsRetries Counter32, + sipCommonStatsRetryFinalResponses Counter32, + sipCommonStatsRetryNonFinalResponses Counter32, + sipCommonStatsRetryDisconTime TimeStamp + } + +sipCommonStatsRetryMethod OBJECT-TYPE + SYNTAX SipTCMethodName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies the SIP method related to the + objects in a row." + ::= { sipCommonStatsRetryEntry 1 } + +sipCommonStatsRetries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of request + retransmissions that have been sent by the SIP entity. Note + that there could be multiple retransmissions per request. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonStatsRetryDisconTime object in the same + row." + ::= { sipCommonStatsRetryEntry 2 } + +sipCommonStatsRetryFinalResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of Final Response retries + that have been sent by the SIP entity. Note that there could + be multiple retransmissions per request. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + + + + monitoring the sipCommonStatsRetryDisconTime object in the same + row." + ::= { sipCommonStatsRetryEntry 3 } + +sipCommonStatsRetryNonFinalResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of non-Final Response + retries that have been sent by the SIP entity. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonStatsRetryDisconTime object in the same + row." + ::= { sipCommonStatsRetryEntry 4 } + +sipCommonStatsRetryDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + retry statistics objects in this row last experienced a + discontinuity." + ::= { sipCommonStatsRetryEntry 5 } + +-- +-- Other Common Statistics +-- +sipCommonOtherStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipCommonOtherStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains other common statistics supported by each + SIP entity in this system." + ::= { sipCommonOtherStats 1 } + +sipCommonOtherStatsEntry OBJECT-TYPE + SYNTAX SipCommonOtherStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular SIP entity's other common + statistics. + + + + Each row represents those objects for a particular SIP entity + present in this system. applIndex is used to uniquely identify + these instances of SIP entities and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788)." + INDEX { applIndex } + ::= { sipCommonOtherStatsTable 1 } + +SipCommonOtherStatsEntry ::= SEQUENCE { + sipCommonOtherStatsNumUnsupportedUris Counter32, + sipCommonOtherStatsNumUnsupportedMethods Counter32, + sipCommonOtherStatsOtherwiseDiscardedMsgs Counter32, + sipCommonOtherStatsDisconTime TimeStamp + } + +sipCommonOtherStatsNumUnsupportedUris OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of RequestURIs received with an unsupported scheme. + A server normally responds to such requests with a 400 Bad + Request status code. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonOtherStatsDisconTime object in the same + row." + ::= { sipCommonOtherStatsEntry 1 } + +sipCommonOtherStatsNumUnsupportedMethods OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of SIP requests received with unsupported methods. A + server normally responds to such requests with a 501 (Not + Implemented) or 405 (Method Not Allowed). + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonOtherStatsDisconTime object in the same + row." + ::= { sipCommonOtherStatsEntry 2 } + +sipCommonOtherStatsOtherwiseDiscardedMsgs OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of SIP messages received that, for any number of + reasons, was discarded without a response. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipCommonOtherStatsDisconTime object in the same + row." + ::= { sipCommonOtherStatsEntry 3 } + +sipCommonOtherStatsDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + statistics objects in this row last experienced a + discontinuity." + ::= { sipCommonOtherStatsEntry 4 } + +-- +-- Notification related objects +-- + +-- +-- Status code related notification objects. +-- +sipCommonStatusCodeNotifTo OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the value of the To header in the message + containing the status code that caused the notification. The + header name will be part of this object value. For example, + 'To: Watson '." + ::= { sipCommonNotifObjects 1 } + +sipCommonStatusCodeNotifFrom OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the value of the From header in the + message containing the status code that caused the + + + + notification. The header name will be part of this object + value. For example, 'From: Watson '." + ::= { sipCommonNotifObjects 2 } + +sipCommonStatusCodeNotifCallId OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the value of the Call-ID in the message + containing the status code that caused the notification. The + header name will be part of this object value. For example, + 'Call-ID: 5551212@example.com'." + ::= { sipCommonNotifObjects 3 } + +sipCommonStatusCodeNotifCSeq OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the CSeq value in the message containing + the status code that caused the notification. The header name + will be part of this object value. For example, 'CSeq: 1722 + INVITE'." + ::= { sipCommonNotifObjects 4 } + +-- +-- General notification related objects. +-- +sipCommonNotifApplIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the applIndex as described in RFC 2788. + This object is created in order to allow a variable binding + containing a value of applIndex in a notification." + ::= { sipCommonNotifObjects 5 } + +sipCommonNotifSequenceNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains a sequence number for each notification + generated by this SIP entity. Each notification SHOULD have a + unique sequence number. A network manager can use this + information to determine whether notifications from a + + + + particular SIP entity have been missed. The value of this + object MUST start at 1 and increase by 1 with each generated + notification. If a system restarts, the sequence number MAY + start again from 1." + ::= { sipCommonNotifObjects 6 } + +-- +-- Notifications +-- +sipCommonStatusCodeNotif NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonStatusCodeNotifTo, + sipCommonStatusCodeNotifFrom, + sipCommonStatusCodeNotifCallId, + sipCommonStatusCodeNotifCSeq, + sipCommonStatusCodeIns, + sipCommonStatusCodeOuts + } + STATUS current + DESCRIPTION + "Signifies that a specific status code has been sent or received + by the system." + ::= { sipCommonMIBNotifications 1 } + +sipCommonStatusCodeThreshExceededInNotif NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonStatusCodeIns + } + STATUS current + DESCRIPTION + "Signifies that a specific status code was found to have been + received by the system frequently enough to exceed the + configured threshold. This notification can be used as + an early warning mechanism in lieu of using + sipCommonStatusCodeNotif." + ::= { sipCommonMIBNotifications 2 } + +sipCommonStatusCodeThreshExceededOutNotif NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonStatusCodeOuts + } + STATUS current + + + + DESCRIPTION + "Signifies that a specific status code was found to have been + sent by the system enough to exceed the configured threshold. + This notification can be used as an early warning mechanism in + lieu of using sipCommonStatusCodeNotif." + ::= { sipCommonMIBNotifications 3 } + +sipCommonServiceColdStart NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonCfgServiceStartTime + } + STATUS current + DESCRIPTION + "Signifies that the SIP service has reinitialized itself or + started for the first time. This SHOULD result from a hard + 'down' to 'up' administrative status change. The configuration + or behavior of the service MAY be altered." + ::= { sipCommonMIBNotifications 4 } + +sipCommonServiceWarmStart NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonCfgServiceLastChange + } + STATUS current + DESCRIPTION + "Signifies that the SIP service has reinitialized itself and is + restarting after an administrative 'reset'. The configuration + or behavior of the service MAY be altered." + ::= { sipCommonMIBNotifications 5 } + +sipCommonServiceStatusChanged NOTIFICATION-TYPE + OBJECTS { + sipCommonNotifSequenceNumber, + sipCommonNotifApplIndex, + sipCommonCfgServiceLastChange, + sipCommonCfgServiceOperStatus + } + STATUS current + DESCRIPTION + "Signifies that the SIP service operational status has changed." + ::= { sipCommonMIBNotifications 6 } + +-- +-- Conformance + + + +-- +sipCommonMIBCompliances + OBJECT IDENTIFIER ::= { sipCommonMIBConformance 1 } +sipCommonMIBGroups + OBJECT IDENTIFIER ::= { sipCommonMIBConformance 2 } + +-- +-- Compliance Statements +-- +sipCommonCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SIP entities." + + MODULE -- this module + MANDATORY-GROUPS { sipCommonConfigGroup, + sipCommonStatsGroup + } + + OBJECT sipCommonStatusCodeRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not required." + + OBJECT sipCommonCfgServiceNotifEnable + MIN-ACCESS not-accessible + DESCRIPTION + "This object is optional and does not need to be supported." + + GROUP sipCommonInformationalGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any support for these objects, as they provide optional + information." + + GROUP sipCommonConfigTimerGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any timer configuration." + + GROUP sipCommonStatsRetryGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any retry statistics." + + GROUP sipCommonNotifGroup + DESCRIPTION + + + + "This group is OPTIONAL. A SIP entity can elect to not provide + any notifications. If implemented, the + sipCommonStatusCodeNotifGroup and sipCommonNotifObjectsGroup + MUST also be implemented." + + GROUP sipCommonStatusCodeNotifGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any notifications. If implemented, the sipCommonNotifGroup and + sipCommonNotifObjectsGroup MUST also be implemented." + + GROUP sipCommonNotifObjectsGroup + DESCRIPTION + "This group is OPTIONAL. A SIP entity can elect to not provide + any notifications. If implemented, the + sipCommonStatusCodeNotifGroup and sipCommonNotifGroup MUST also + be implemented." + + ::= { sipCommonMIBCompliances 1 } + +-- +-- Units of Conformance +-- +sipCommonConfigGroup OBJECT-GROUP + OBJECTS { + sipCommonCfgProtocolVersion, + sipCommonCfgServiceOperStatus, + sipCommonCfgServiceStartTime, + sipCommonCfgServiceLastChange, + sipCommonPortTransportRcv, + sipCommonOptionTag, + sipCommonOptionTagHeaderField, + sipCommonCfgMaxTransactions, + sipCommonCfgServiceNotifEnable, + sipCommonCfgEntityType, + sipCommonMethodSupportedName + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration common to all + SIP entities." + ::= { sipCommonMIBGroups 1 } + +sipCommonInformationalGroup OBJECT-GROUP + OBJECTS { + sipCommonCfgOrganization + } + STATUS current + + + + DESCRIPTION + "A collection of objects providing configuration common to all + SIP entities." + ::= { sipCommonMIBGroups 2 } + +sipCommonConfigTimerGroup OBJECT-GROUP + OBJECTS { + sipCommonCfgTimerA, + sipCommonCfgTimerB, + sipCommonCfgTimerC, + sipCommonCfgTimerD, + sipCommonCfgTimerE, + sipCommonCfgTimerF, + sipCommonCfgTimerG, + sipCommonCfgTimerH, + sipCommonCfgTimerI, + sipCommonCfgTimerJ, + sipCommonCfgTimerK, + sipCommonCfgTimerT1, + sipCommonCfgTimerT2, + sipCommonCfgTimerT4 + } + STATUS current + DESCRIPTION + "A collection of objects providing timer configuration common to + all SIP entities." + ::= { sipCommonMIBGroups 3 } + +sipCommonStatsGroup OBJECT-GROUP + OBJECTS { + sipCommonSummaryInRequests, + sipCommonSummaryOutRequests, + sipCommonSummaryInResponses, + sipCommonSummaryOutResponses, + sipCommonSummaryTotalTransactions, + sipCommonSummaryDisconTime, + sipCommonMethodStatsOutbounds, + sipCommonMethodStatsInbounds, + sipCommonMethodStatsDisconTime, + sipCommonStatusCodeIns, + sipCommonStatusCodeOuts, + sipCommonStatusCodeRowStatus, + sipCommonStatusCodeDisconTime, + sipCommonTransCurrentactions, + sipCommonOtherStatsNumUnsupportedUris, + sipCommonOtherStatsNumUnsupportedMethods, + sipCommonOtherStatsOtherwiseDiscardedMsgs, + sipCommonOtherStatsDisconTime + + + + } + STATUS current + DESCRIPTION + "A collection of objects providing statistics common to all SIP + entities." + ::= { sipCommonMIBGroups 4 } + +sipCommonStatsRetryGroup OBJECT-GROUP + OBJECTS { + sipCommonStatsRetries, + sipCommonStatsRetryFinalResponses, + sipCommonStatsRetryNonFinalResponses, + sipCommonStatsRetryDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing retry statistics." + ::= { sipCommonMIBGroups 5 } + +sipCommonNotifGroup NOTIFICATION-GROUP + NOTIFICATIONS { + sipCommonStatusCodeNotif, + sipCommonStatusCodeThreshExceededInNotif, + sipCommonStatusCodeThreshExceededOutNotif, + sipCommonServiceColdStart, + sipCommonServiceWarmStart, + sipCommonServiceStatusChanged + } + + STATUS current + DESCRIPTION + "A collection of notifications common to all SIP entities." + ::= { sipCommonMIBGroups 6 } + +sipCommonStatusCodeNotifGroup OBJECT-GROUP + OBJECTS { + sipCommonStatusCodeNotifSend, + sipCommonStatusCodeNotifEmitMode, + sipCommonStatusCodeNotifThresh, + sipCommonStatusCodeNotifInterval + } + STATUS current + DESCRIPTION + "A collection of objects related to the control and attribution + of notifications common to all SIP entities." + ::= { sipCommonMIBGroups 7 } + +sipCommonNotifObjectsGroup OBJECT-GROUP + + + + OBJECTS { + sipCommonStatusCodeNotifTo, + sipCommonStatusCodeNotifFrom, + sipCommonStatusCodeNotifCallId, + sipCommonStatusCodeNotifCSeq, + sipCommonNotifApplIndex, + sipCommonNotifSequenceNumber + } + STATUS current + DESCRIPTION + "A collection of accessible-for-notify objects related to the + notification defined in this MIB module." + ::= { sipCommonMIBGroups 8 } + +END diff --git a/mibs/ietf/SIP-MIB b/mibs/ietf/SIP-MIB new file mode 100644 index 0000000..5878ace --- /dev/null +++ b/mibs/ietf/SIP-MIB @@ -0,0 +1,1117 @@ +SIP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Integer32, IpAddress FROM SNMPv2-SMI + TimeStamp, TEXTUAL-CONVENTION FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + transmission, ifIndex, mib-2 FROM RFC1213-MIB; + +-- This is the MIB module for the SMDS Interface objects. + +sipMIB MODULE-IDENTITY + LAST-UPDATED "9403311818Z" + ORGANIZATION "IETF Interfaces Working Group" + CONTACT-INFO + " Tracy Brown + Postal: Bell Communications Research + 331 Newman Springs Road + P.O. Box 7020 + Red Bank, NJ 07701-7020 + US + + Tel: +1 908 758-2107 + Fax: +1 908 758-4177 + E-mail: tacox@mail.bellcore.com + + Kaj Tesink + Postal: Bell Communications Research + 331 Newman Springs Road + P.O. Box 7020 + Red Bank, NJ 07701-7020 + US + + Tel: +1 908 758 5254 + Fax: +1 908 758 4177 + E-mail: kaj@cc.bellcore.com." + DESCRIPTION + "The MIB module to describe + SMDS interfaces objects." + ::= { mib-2 36 } + +SMDSAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "The 60-bit SMDS address, + preceded by 4 bits with the following values: + 1100 when representing an individual address + 1110 when representing a group address." + SYNTAX OCTET STRING (SIZE (8)) + +IfIndex ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains + management information. The value of this + object for a particular interface has the same + value as the ifIndex object, defined in RFC + 1213, for the same interface." + SYNTAX Integer32 + + +sip OBJECT IDENTIFIER ::= { transmission 31 } +sipMIBObjects OBJECT IDENTIFIER ::= { sipMIB 1 } + + +-- The SIP Level 3 Group + +sipL3Table OBJECT-TYPE + SYNTAX SEQUENCE OF SipL3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP L3 parameters and + state variables, one entry per SIPL3 interface." + ::= { sip 1 } + +sipL3Entry OBJECT-TYPE + SYNTAX SipL3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains SIP L3 parameters and + state variables." + INDEX { sipL3Index } + ::= { sipL3Table 1 } + +SipL3Entry ::= SEQUENCE { + sipL3Index IfIndex, + sipL3ReceivedIndividualDAs Counter32, + sipL3ReceivedGAs Counter32, + sipL3UnrecognizedIndividualDAs Counter32, + sipL3UnrecognizedGAs Counter32, + sipL3SentIndividualDAs Counter32, + sipL3SentGAs Counter32, + sipL3Errors Counter32, + sipL3InvalidSMDSAddressTypes Counter32, + sipL3VersionSupport Integer32 + } + +sipL3Index OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the SIP + L3 interface for which this entry contains + management information. " + ::= { sipL3Entry 1 } + +sipL3ReceivedIndividualDAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifInUcastPkts defined in [9] must be used instead. + DESCRIPTION + "The total number of individually addressed SIP + Level 3 PDUs received from the remote system + across the SNI. The total includes only + unerrored L3PDUs." + ::= { sipL3Entry 2 } + +sipL3ReceivedGAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifInMulticastPkts defined in [9] must be used instead. + DESCRIPTION + "The total number of group addressed SIP Level 3 + PDUs received from the remote system across the + SNI. The total includes only unerrored L3PDUs." + ::= { sipL3Entry 3 } + +sipL3UnrecognizedIndividualDAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of SIP Level 3 PDUs received from the + remote system with invalid or unknown individual + destination addresses (Destination Address + Screening violations are not included). See SMDS + Subscription MIB module." + ::= { sipL3Entry 4 } + +sipL3UnrecognizedGAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of SIP Level 3 PDUs received from the + remote system with invalid or unknown group + addresses. (Destination Address Screening + violations are not included). See SMDS + Subscription MIB module." + ::= { sipL3Entry 5 } + +sipL3SentIndividualDAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifOutUcastPkts defined in [9] must be used instead. + DESCRIPTION + "The number of individually addressed SIP Level 3 + PDUs that have been sent by this system across the + SNI." + ::= { sipL3Entry 6 } + +sipL3SentGAs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifOutMulticastPkts defined in [9] must be used instead. + DESCRIPTION + "The number of group addressed SIP L3PDUs that + have been sent by this system across the SNI." + ::= { sipL3Entry 7 } + +-- The total number of SIP L3PDU errors can be calculated as +-- (Syntactic errors + Semantic Service errors ) +-- Syntactic errors include: +-- sipL3Errors +-- Latest occurrences of syntactic error types are logged in +-- sipL3PDUErrorTable. +-- Semantic Service errors include: + +-- sipL3UnrecognizedIndividualDAs +-- sipL3UnrecognizedGAs +-- sipL3InvalidSMDSAddressTypes +-- Note that public networks supporting SMDS may discard +-- SIP L3PDUs due to subscription violations. Related +-- managed objects are defined in Definitions of Managed +-- Objects for SMDS Subscription. + +sipL3Errors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifInErrors defined in [9] must be used instead. + DESCRIPTION + "The total number of SIP Level 3 PDUs received + from the remote system that were discovered to + have errors (including protocol processing and bit + errors but excluding addressing-related errors) + and were discarded. Includes both group addressed + L3PDUs and L3PDUs containing an individual + destination address." + ::= { sipL3Entry 8 } + +sipL3InvalidSMDSAddressTypes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated +-- Moved to ifTable +-- ifInUnknownProtos defined in [9] must be used instead. + DESCRIPTION + "The number of SIP Level 3 PDUs received from the + remote system that had the Source or Destination + Address_Type subfields, (the four most significant + bits of the 64 bit address field), not equal to + the value 1100 or 1110. Also, an error is + considered to have occurred if the Address_Type + field for a Source Address, the four most + significant bits of the 64 bits, is equal to 1110 + (a group address)." + ::= { sipL3Entry 9 } + +sipL3VersionSupport OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the version(s) of SIP + that this interface supports. The value is a sum. + This sum initially takes the value zero. For each + version, V, that this interface supports, 2 raised + to (V - 1) is added to the sum. For example, a + port supporting versions 1 and 2 would have a + value of (2^(1-1)+2^(2-1))=3. The + sipL3VersionSupport is effectively a bit mask with + Version 1 equal to the least significant bit + (LSB)." + ::= { sipL3Entry 10 } + + +-- The SIP Level 2 Group + +sipL2Table OBJECT-TYPE + SYNTAX SEQUENCE OF SipL2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP L2PDU parameters and + state variables, one entry per SIP L2 interface." + ::= { sip 2 } + +sipL2Entry OBJECT-TYPE + SYNTAX SipL2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains SIP L2 parameters and state + variables." + INDEX { sipL2Index } + ::= { sipL2Table 1 } + +SipL2Entry ::= SEQUENCE { + sipL2Index IfIndex, + sipL2ReceivedCounts Counter32, + sipL2SentCounts Counter32, + sipL2HcsOrCRCErrors Counter32, + sipL2PayloadLengthErrors Counter32, + sipL2SequenceNumberErrors Counter32, + sipL2MidCurrentlyActiveErrors Counter32, + sipL2BomOrSSMsMIDErrors Counter32, + sipL2EomsMIDErrors Counter32 + } + +sipL2Index OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the SIP + interface for which this entry contains management + information." + ::= { sipL2Entry 1 } + +sipL2ReceivedCounts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SIP Level 2 PDUs received from the + remote system across the SNI. The total includes + only unerrored L2PDUs." + ::= { sipL2Entry 2 } + +sipL2SentCounts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SIP Level 2 PDUs that have been + sent by this system across the SNI." + ::= { sipL2Entry 3 } + +-- The following error types are counted, and +-- preclude sipL2ReceivedCounts to be incremented: +-- sipL2HcsOrCRCErrors +-- sipL2PayloadLengthErrors +-- sipL2SequenceNumberErrors +-- sipL2BomOrSSMsMIDErrors +-- sipL2EomsMIDErrors +-- The receipt of SIP Level 2 PDUs which are BOMs and +-- for with a MID that is already active will cause +-- sipL2MidCurrentlyActiveErrors to increment. +-- Any already accumulated (correct) segmentation +-- units are discarded.The sipL2ReceivedCounts +-- is incremented by 1. Thus, +-- sipL2ReceivedCounts defines the number of +-- correct SIP Level 2 PDUs delivered to the reassembly +-- process. + +sipL2HcsOrCRCErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that were + discovered to have either a Header Check Sequence + error or a Payload CRC violation." + ::= { sipL2Entry 4 } + +sipL2PayloadLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that had + Payload Length errors that fall in the following + specifications: + - SSM L2_PDU payload length field value less + - than 28 octets or greater than 44 octets, + + - BOM or COM L2_PDU payload length field not + - equal to 44 octets, + - EOM L2_PDU payload length field value less + - than 4 octets or greater than 44 octets." + ::= { sipL2Entry 5 } + +sipL2SequenceNumberErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that had + a sequence number within the L2PDU not equal to + the expected sequence number of the SMDS SS + receive process." + ::= { sipL2Entry 6 } + +sipL2MidCurrentlyActiveErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that are + BOMs for which an active receive process is + already started." + ::= { sipL2Entry 7 } + +sipL2BomOrSSMsMIDErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that are + SSMs with a MID not equal to zero or are BOMs with + MIDs equal to zero." + ::= { sipL2Entry 8 } + +sipL2EomsMIDErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received SIP Level 2 PDUs that are + EOMs for which there is no active receive process + for the MID (i.e., the receipt of an EOM which + does not correspond to a BOM) OR the EOM has a MID + equal to zero." + ::= { sipL2Entry 9 } + + +-- The SIP PLCP Group + +sipPLCP OBJECT IDENTIFIER ::= { sip 3 } + + +-- The DS1 PLCP Group + +sipDS1PLCPTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipDS1PLCPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP DS1 PLCP parameters and + state variables, one entry per SIP port." + ::= { sipPLCP 1 } + +sipDS1PLCPEntry OBJECT-TYPE + SYNTAX SipDS1PLCPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains SIP DS1 PLCP parameters and + state variables." + INDEX { sipDS1PLCPIndex } + ::= { sipDS1PLCPTable 1 } + +SipDS1PLCPEntry ::= SEQUENCE { + sipDS1PLCPIndex IfIndex, + sipDS1PLCPSEFSs Counter32, + sipDS1PLCPAlarmState INTEGER, + sipDS1PLCPUASs Counter32 + } + +sipDS1PLCPIndex OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains management + information. " + ::= { sipDS1PLCPEntry 1 } + +sipDS1PLCPSEFSs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A DS1 Severely Errored Framing Second (SEFS) is a + count of one-second intervals containing one or + more SEF events. A Severely Errored Framing (SEF) + event is declared when an error in the A1 octet + and an error in the A2 octet of a framing octet + pair (i.e., errors in both framing octets), or two + consecutive invalid and/or nonsequential Path + Overhead Identifier octets are detected." + ::= { sipDS1PLCPEntry 2 } + +sipDS1PLCPAlarmState OBJECT-TYPE + SYNTAX INTEGER { + noAlarm (1), + receivedFarEndAlarm (2), + incomingLOF (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if there is an alarm + present for the DS1 PLCP. The value + receivedFarEndAlarm means that the DS1 PLCP has + received an incoming Yellow Signal, the value + incomingLOF means that the DS1 PLCP has declared a + loss of frame (LOF) failure condition, and the + value noAlarm means that there are no alarms + present. See TR-TSV-000773 for a description of + alarm states." + ::= { sipDS1PLCPEntry 3 } + +sipDS1PLCPUASs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds, as defined by TR-TSV-000773, + encountered by the PLCP." + ::= { sipDS1PLCPEntry 4 } + + +-- The DS3 PLCP Group + +sipDS3PLCPTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipDS3PLCPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP DS3 PLCP parameters and + state variables, one entry per SIP port." + ::= { sipPLCP 2 } + +sipDS3PLCPEntry OBJECT-TYPE + SYNTAX SipDS3PLCPEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This list contains SIP DS3 PLCP parameters and + state variables." + INDEX { sipDS3PLCPIndex } + ::= { sipDS3PLCPTable 1 } + +SipDS3PLCPEntry ::= SEQUENCE { + sipDS3PLCPIndex IfIndex, + sipDS3PLCPSEFSs Counter32, + sipDS3PLCPAlarmState INTEGER, + sipDS3PLCPUASs Counter32 + } + +sipDS3PLCPIndex OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains management + information. " + ::= { sipDS3PLCPEntry 1 } + +sipDS3PLCPSEFSs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A DS3 Severely Errored Framing Second (SEFS) is a + count of one-second intervals containing one or + more SEF events. A Severely Errored Framing (SEF) + event is declared when an error in the A1 octet + and an error in the A2 octet of a framing octet + pair (i.e., errors in both framing octets), or two + consecutive invalid and/or nonsequential Path + Overhead Identifier octets are detected." + ::= { sipDS3PLCPEntry 2 } + +sipDS3PLCPAlarmState OBJECT-TYPE + SYNTAX INTEGER { + noAlarm (1), + receivedFarEndAlarm (2), + incomingLOF (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if there is an alarm + present for the DS3 PLCP. The value + receivedFarEndAlarm means that the DS3 PLCP has + received an incoming Yellow Signal, the value + incomingLOF means that the DS3 PLCP has declared a + loss of frame (LOF) failure condition, and the + value noAlarm means that there are no alarms + present. See TR-TSV-000773 for a description of + alarm states." + ::= { sipDS3PLCPEntry 3 } + +sipDS3PLCPUASs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds, as defined by TR-TSV-000773, + encountered by the PLCP." + ::= { sipDS3PLCPEntry 4 } + + +-- The SMDS Applications group +-- Applications that have been identified for this group are: + +-- * IP-over-SMDS (details are specified in RFC 1209) + +smdsApplications OBJECT IDENTIFIER ::= { sip 4 } + +ipOverSMDS OBJECT IDENTIFIER ::= { smdsApplications 1 } + +-- Although the objects in this group are read-only, at the +-- agent's discretion they may be made read-write so that the +-- management station, when appropriately authorized, may +-- change the addressing information related to the +-- configuration of a logical IP subnetwork implemented on +-- top of SMDS. + +-- This table is necessary to support RFC1209 (IP-over-SMDS) +-- and gives information on the Group Addresses and ARP +-- Addresses used in the Logical IP subnetwork. +-- One SMDS address may be associated with multiple IP +-- addresses. One SNI may be associated with multiple LISs. + +ipOverSMDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpOverSMDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of addressing information relevant to + this entity's IP addresses." + ::= { ipOverSMDS 1 } + +ipOverSMDSEntry OBJECT-TYPE + SYNTAX IpOverSMDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The addressing information for one of this + entity's IP addresses." + INDEX { ipOverSMDSIndex, ipOverSMDSAddress } + ::= { ipOverSMDSTable 1 } + +IpOverSMDSEntry ::= + SEQUENCE { + ipOverSMDSIndex IfIndex, + ipOverSMDSAddress IpAddress, + ipOverSMDSHA SMDSAddress, + ipOverSMDSLISGA SMDSAddress, + ipOverSMDSARPReq SMDSAddress + } + +ipOverSMDSIndex OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains management + information. " + ::= { ipOverSMDSEntry 1 } + +ipOverSMDSAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address to which this entry's addressing + information pertains." + ::= { ipOverSMDSEntry 2 } + +ipOverSMDSHA OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SMDS Individual address of the IP station." + ::= { ipOverSMDSEntry 3 } + +ipOverSMDSLISGA OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SMDS Group Address that has been configured + to identify the SMDS Subscriber-Network Interfaces + (SNIs) of all members of the Logical IP Subnetwork + (LIS) connected to the network supporting SMDS." + ::= { ipOverSMDSEntry 4 } + +ipOverSMDSARPReq OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The SMDS address (individual or group) to which + ARP Requests are to be sent." + ::= { ipOverSMDSEntry 5 } + + +-- The SMDS Carrier Selection group + +-- This group is used as a place holder +-- for carrier selection objects. + +smdsCarrierSelection OBJECT IDENTIFIER ::= { sip 5 } + + +-- The SIP Error Log + +sipErrorLog OBJECT IDENTIFIER ::= { sip 6 } + +sipL3PDUErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipL3PDUErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table that contains the latest occurrence of + the following syntactical SIP L3PDU errors: + + - Destination Address Field Format Error, + + The following pertains to the 60 least significant + bits of the 64 bit address field. The 60 bits + contained in the address subfield can be used to + represent addresses up to 15 decimal digits. Each + decimal digit shall be encoded into four bits + using Binary Coded Decimal (BCD), with the most + significant digit occurring left-most. If not all + 15 digits are required, then the remainder of this + field shall be padded on the right with bits set + to one. An error is considered to have occurred: + a). if the first four bits of the address + subfield are not BCD, OR b). if the first four + bits of the address subfield are populated with + the country code value 0001, AND the 40 bits which + follow are not Binary Coded Decimal (BCD) encoded + values of the 10 digit addresses, OR the remaining + 16 least significant bits are not populated with + 1's, OR c). if the address subfield is not + correct according to another numbering plan which + is dependent upon the carrier assigning the + numbers and offering SMDS. + + - Source Address Field Format Error, + + The description of this parameter is the same as + the description of the Destination Address Field + Format Error. + - Invalid BAsize Field Value, + + An error is considered to have occurred when the + BAsize field of an SIP L3PDU contains a value less + that 32, greater than 9220 octets without the + CRC32 field present, greater than 9224 octets with + the CRC32 field present, or not equal to a + multiple of 4 octets, + + - Invalid Header Extension Length Field Value, + + An error is considered to have occurred when the + Header Extension Length field value is not equal + 3. + + - Invalid Header Extension - Element Length, + + An error is considered to have occurred when the + Header Extension - Element Length is greater than + 12. + + - Invalid Header Extension - Version Element + Position, Length, or Value, + + An error is considered to have occurred when a + Version element with Length=3, Type=0, and Value=1 + does not appear first within the Header Extension, + or an element Type=0 appears somewhere other than + within the first three octets in the Header + Extension. + + - Invalid Header Extension - Carrier Selection + Element Position, Length, Value or Format, + + An error is considered to have occurred when a + Carrier Selection element does not appear second + within the Header Extension, if the Element Type + does not equal 1, the Element Length does not + equal 4, 6, or 8, the Element Value field is not + four BCD encoded decimal digits used in specifying + the Carrier Identification Code (CIC), or the + identified CIC code is invalid. + + - Header Extension PAD Error + + An error is considered to have occurred when the + Header Extension PAD is 9 octets in length, or if + the Header Extension PAD is greater than zero + octets in length and the Header Extension PAD does + not follow all Header Extension elements or does + not begin with at least one octet of all zeros. + + - BEtag Mismatch Error, + + An error is considered to have occurred when the + Beginning-End Tags in the SIP L3PDU header and + trailer are not equal. + + - BAsize Field not equal to Length Field Error, + + An error is considered to have occurred when the + value of the BAsize Field does not equal the value + of the Length Field. + + - Incorrect Length Error, and + + An error is considered to have occurred when the + the Length field value is not equal to the portion + of the SIP L3PDU which extends from the + Destination Address field up to and including the + CRC32 field (if present) or up to and including + the PAD field (if the CRC32 field is not present). + As an optional check, an error is considered to + have occurred when the length of a partially + received SIP L3PDU exceeds the BAsize value. + + - MRI Timeout Error. + + An error is considered to have occurred when the + elapsed time between receipt of BOM and + corresponding EOM exceeds the value of the MRI + (Message Receive Interval) for a particular + transport signal format. + + An entry is indexed by interface number and error + type, and contains Source Address, Destination + Address and a timestamp. All these errors are + counted in the sipL3Errors counter. When + sipL3PDUErrorTimeStamp is equal to zero, the + SipL3PDUErrorEntry does not contain any valid + information." + ::= { sipErrorLog 1 } + +sipL3PDUErrorEntry OBJECT-TYPE + SYNTAX SipL3PDUErrorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the service disagreement table." + INDEX { sipL3PDUErrorIndex, sipL3PDUErrorType } + ::= { sipL3PDUErrorTable 1 } + +SipL3PDUErrorEntry ::= SEQUENCE { + sipL3PDUErrorIndex IfIndex, + sipL3PDUErrorType INTEGER, + sipL3PDUErrorSA SMDSAddress, + sipL3PDUErrorDA SMDSAddress, + sipL3PDUErrorTimeStamp TimeStamp + } + +sipL3PDUErrorIndex OBJECT-TYPE + SYNTAX IfIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + interface for which this entry contains management + information." + ::= { sipL3PDUErrorEntry 1 } + +sipL3PDUErrorType OBJECT-TYPE + SYNTAX INTEGER { + erroredDAFieldFormat (1), + erroredSAFieldFormat (2), + invalidBAsizeFieldValue (3), + invalidHdrExtLength (4), + invalidHdrExtElementLength (5), + invalidHdrExtVersionElementPositionLenthOrValue (6), + invalidHdrExtCarSelectElementPositionLenghtValueOrFormat (7), + hePADError (8), + beTagMismatch (9), + baSizeFieldNotEqualToLengthField (10), + incorrectLength (11), + mriTimeout (12) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of error." + ::= { sipL3PDUErrorEntry 2 } + +sipL3PDUErrorSA OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A rejected SMDS source address." + ::= { sipL3PDUErrorEntry 3 } + +sipL3PDUErrorDA OBJECT-TYPE + SYNTAX SMDSAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A rejected SMDS destination address." + ::= { sipL3PDUErrorEntry 4 } + +sipL3PDUErrorTimeStamp OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for the service disagreement. The + timestamp contains the value of sysUpTime at the + latest occurrence of this type of service + disagreement. See textual description under + sipL3PDUErrorTable for boundary conditions." + ::= { sipL3PDUErrorEntry 5 } + + +-- The DXI Group + +sipDxiTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipDxiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The DXI table." + ::= { sipMIBObjects 1 } + +sipDxiEntry OBJECT-TYPE + SYNTAX SipDxiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the DXI table." + INDEX { ifIndex } + ::= { sipDxiTable 1 } + +SipDxiEntry ::= + SEQUENCE { + sipDxiCrc + INTEGER, + sipDxiOutDiscards + Counter32, + sipDxiInErrors + Counter32, + sipDxiInAborts + Counter32, + sipDxiInTestFrames + Counter32, + sipDxiOutTestFrames + Counter32, + sipDxiHbpNoAcks + Counter32 + } + +sipDxiCrc OBJECT-TYPE + SYNTAX INTEGER { + crc16(1), + crc32(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the type + of Frame Checksum used by DXI. Current + choices include CCITT CRC16 or CRC32." + ::= { sipDxiEntry 1 } + +sipDxiOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound frames discarded + because of congestion." + ::= { sipDxiEntry 2 } + +sipDxiInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound frames discarded + because of errors such as frame checksum + (CRC) violations, + non-integral number of octets, address + and control field violations, and frame + size errors." + ::= { sipDxiEntry 3 } + +sipDxiInAborts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound frames discarded + because of an abort bit sequence (1111111) + received before closing flag." + ::= { sipDxiEntry 4 } + +sipDxiInTestFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of unerrored, + inbound Test frames received + (generally as part of Heart + Beat Poll procedure)." + ::= { sipDxiEntry 5 } + +sipDxiOutTestFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of unerrored, + outbound Test frames sent + (generally as part of Heart + Beat Poll procedure)." + ::= { sipDxiEntry 6 } + +sipDxiHbpNoAcks OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Heart Beat + Poll (HBP) No Ack timeouts." + ::= { sipDxiEntry 7 } + + +-- conformance information + +smdsConformance OBJECT IDENTIFIER ::= { sipMIB 2 } +smdsGroups OBJECT IDENTIFIER ::= { smdsConformance 1 } +smdsCompliances OBJECT IDENTIFIER ::= { smdsConformance 2 } + + +-- compliance statements + +smdsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SMDS interfaces." + + MODULE -- this module + MANDATORY-GROUPS { sipLevel3Stuff } + + GROUP sipLevel2Stuff + DESCRIPTION + "This group is mandatory only for those + interfaces (SNIs) which run SIP Level 2." + + GROUP sipDS1PLCPStuff + DESCRIPTION + "This group is mandatory only for those + interfaces (SNIs) which run the DS1 PLCP." + + GROUP sipDS3PLCPStuff + DESCRIPTION + "This group is mandatory only for those + interfaces (SNIs) which run the DS3 PLCP." + + GROUP sipIPApplicationsStuff + DESCRIPTION + "This group is mandatory only for interfaces + operating IP over SMDS in accordance with + RFC1209." + + GROUP sipDxiStuff + DESCRIPTION + "This group is mandatory only for those interfaces + (DXI-SNI) + which run the DXI protocol." + ::= { smdsCompliances 1 } + +-- units of conformance + +sipLevel3Stuff OBJECT-GROUP + OBJECTS { sipL3Index, + sipL3VersionSupport, sipL3PDUErrorIndex, + sipL3PDUErrorType, + sipL3PDUErrorSA, sipL3PDUErrorDA, + sipL3PDUErrorTimeStamp } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all SMDS interfaces." + ::= { smdsGroups 1 } + +sipLevel2Stuff OBJECT-GROUP + OBJECTS { sipL2Index, sipL2HcsOrCRCErrors, + sipL2PayloadLengthErrors, + sipL2SequenceNumberErrors, + sipL2MidCurrentlyActiveErrors, + sipL2BomOrSSMsMIDErrors, + sipL2EomsMIDErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to interfaces using the SIP Level 2." + ::= { smdsGroups 2 } + +sipDS1PLCPStuff OBJECT-GROUP + OBJECTS { sipDS1PLCPIndex, sipDS1PLCPSEFSs, + sipDS1PLCPAlarmState, sipDS1PLCPUASs } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to interfaces using the DS1 PLCP." + ::= { smdsGroups 3 } + +sipDS3PLCPStuff OBJECT-GROUP + OBJECTS { sipDS3PLCPIndex, sipDS3PLCPSEFSs, + sipDS3PLCPAlarmState, sipDS3PLCPUASs } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to interfaces using the DS3 PLCP." + ::= { smdsGroups 4 } + + +sipIPApplicationsStuff OBJECT-GROUP + OBJECTS { ipOverSMDSIndex, ipOverSMDSAddress, + ipOverSMDSHA, ipOverSMDSLISGA, ipOverSMDSARPReq } + STATUS current + DESCRIPTION + "A collection of objects providing information + for running IP over SMDS." + ::= { smdsGroups 5 } + +sipDxiStuff OBJECT-GROUP + OBJECTS { sipDxiCrc, sipDxiOutDiscards, + sipDxiInErrors, sipDxiInAborts, + sipDxiInTestFrames, sipDxiOutTestFrames, + sipDxiHbpNoAcks } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to interfaces using the DXI protocol." + ::= { smdsGroups 6 } + +END diff --git a/mibs/ietf/SIP-SERVER-MIB b/mibs/ietf/SIP-SERVER-MIB new file mode 100644 index 0000000..bc1e38a --- /dev/null +++ b/mibs/ietf/SIP-SERVER-MIB @@ -0,0 +1,901 @@ +SIP-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Counter32, + Unsigned32, + Gauge32, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + TruthValue, + TimeStamp, DateAndTime + FROM SNMPv2-TC -- RFC 2579 + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- RFC 3411 + + + applIndex + FROM NETWORK-SERVICES-MIB -- RFC 2788 + + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB; -- RFC 4001 + +sipServerMIB MODULE-IDENTITY + LAST-UPDATED "200704200000Z" + ORGANIZATION "IETF Session Initiation Protocol + Working Group" + CONTACT-INFO + "SIP WG email: sip@ietf.org + + Co-editor: Kevin Lingle + Cisco Systems, Inc. + postal: 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709 + USA + email: klingle@cisco.com + phone: +1 919 476 2029 + + Co-editor: Joon Maeng + email: jmaeng@austin.rr.com + + Co-editor: Jean-Francois Mule + CableLabs + postal: 858 Coal Creek Circle + Louisville, CO 80027 + USA + email: jf.mule@cablelabs.com + phone: +1 303 661 9100 + + Co-editor: Dave Walker + email: drwalker@rogers.com + " + DESCRIPTION + "Session Initiation Protocol (SIP) Server MIB module. SIP is an + application-layer signaling protocol for creating, modifying, + and terminating multimedia sessions with one or more + participants. These sessions include Internet multimedia + conferences and Internet telephone calls. SIP is defined in + RFC 3261 (June 2002). + + This MIB is defined for the management of SIP Proxy, Redirect, + and Registrar Servers. + + + + A Proxy Server acts as both a client and a server. It accepts + requests from other clients, either responding to them or + passing them on to other servers, possibly after modification. + + A Redirect Server accepts requests from clients and returns + zero or more addresses to that client. Unlike a User Agent + Server, it does not accept calls. + + A Registrar is a server that accepts REGISTER requests. A + Registrar is typically co-located with a Proxy or Redirect + Server. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4780; see the RFC itself for + full legal notices." + REVISION "200704200000Z" + DESCRIPTION + "Initial version of the IETF SIP-SERVER-MIB module. This + version published as part of RFC 4780." + ::= { mib-2 151 } + +-- Top-Level Components of this MIB. + +sipServerMIBObjects OBJECT IDENTIFIER ::= { sipServerMIB 1 } +sipServerMIBConformance OBJECT IDENTIFIER ::= { sipServerMIB 2 } + +-- +-- These groups contain objects common to all SIP servers. +-- +sipServerCfg OBJECT IDENTIFIER ::= { sipServerMIBObjects 1 } + +-- +-- Common Server Configuration Objects +-- +sipServerCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains configuration objects applicable to SIP + Redirect and Proxy Servers." + ::= { sipServerCfg 1 } + +sipServerCfgEntry OBJECT-TYPE + SYNTAX SipServerCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + "A row of common configuration. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through + the common framework of the NETWORK-SERVICES-MIB (RFC 2788). + The same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerCfgTable 1 } + +SipServerCfgEntry ::= + SEQUENCE { + sipServerCfgHostAddressType InetAddressType, + sipServerCfgHostAddress InetAddress + } + +sipServerCfgHostAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The type of Internet address by which the SIP server is + reachable." + REFERENCE + "RFC 3261, Section 19.1.1" + ::= { sipServerCfgEntry 1 } + +sipServerCfgHostAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the host portion of a SIP URI that is assigned to the + SIP server. It MAY contain a fully qualified domain name or + an IP address. The length of the value will depend on the type + of address specified. The type of address given by this object + is controlled by sipServerCfgHostAddressType." + REFERENCE + "RFC 3261, Section 19.1.1" + ::= { sipServerCfgEntry 2 } + +-- +-- This group contains MIB objects +-- related to SIP Proxy Servers. +-- +sipServerProxyCfg OBJECT IDENTIFIER ::= { sipServerMIBObjects 3 } + + +sipServerProxyStats OBJECT IDENTIFIER ::= { sipServerMIBObjects 4 } + +-- +-- Proxy Server Configuration +-- +sipServerProxyCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerProxyCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains configuration objects applicable to SIP + Proxy Servers." + ::= { sipServerProxyCfg 1 } + +sipServerProxyCfgEntry OBJECT-TYPE + SYNTAX SipServerProxyCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of common proxy configuration. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerProxyCfgTable 1 } + +SipServerProxyCfgEntry ::= + SEQUENCE { + sipServerCfgProxyStatefulness INTEGER, + sipServerCfgProxyRecursion TruthValue, + sipServerCfgProxyRecordRoute TruthValue, + sipServerCfgProxyAuthMethod BITS, + sipServerCfgProxyAuthDefaultRealm SnmpAdminString + } + +sipServerCfgProxyStatefulness OBJECT-TYPE + SYNTAX INTEGER { + stateless(1), + transactionStateful(2), + callStateful(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object reflects the default mode of operation for the + Proxy Server entity. + + A stateless proxy is a logical entity that does not maintain + the client or server transaction state machines when it + processes requests. A stateless proxy forwards every request it + receives downstream and every response it receives upstream. If + the value of this object is stateless(1), the proxy defaults to + stateless operations. + + A transaction stateful proxy, or simply a 'stateful proxy', is + a logical entity that maintains the client and server + transaction state machines during the processing of a request. + A (transaction) stateful proxy is not the same as a call + stateful proxy. If the value of this object is + transactionStateful(2), the proxy is stateful on a transaction + basis. + + A call stateful proxy is a logical entity if it retains state + for a dialog from the initiating INVITE to the terminating BYE + request. A call stateful proxy is always transaction stateful, + but the converse is not necessarily true. If the value of this + object is callStateful(3), the proxy is call stateful." + + REFERENCE + "RFC 3261, Section 16" + ::= { sipServerProxyCfgEntry 1 } + +sipServerCfgProxyRecursion OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects whether or not the Proxy performs a + recursive search on the Contacts provided in 3xx redirects. + + If the value of this object is 'true', a recursive search is + performed. If the value is 'false', no search is performed, + and the 3xx response is sent upstream towards the source of + the request." + REFERENCE + "RFC 3261 Sections 16.5 and 16.6" + ::= { sipServerProxyCfgEntry 2 } + +sipServerCfgProxyRecordRoute OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "This object reflects whether or not the proxy adds itself to + the Record-Route header as a default action. This header is + used to list the proxies that insist on being in the signaling + path for subsequent requests related to the call leg. + + If the value of this object is 'true', the proxy adds itself to + the end of the Record-Route header, creating the header if + required. If the value is 'false', the proxy does not add + itself to the Record-Route header." + REFERENCE + "RFC 3261, Section 20.30" + ::= { sipServerProxyCfgEntry 3 } + +-- +-- Security +-- +sipServerCfgProxyAuthMethod OBJECT-TYPE + SYNTAX BITS { + none(0), + tls(1), + digest(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the authentication methods that MAY be + used to authenticate request originators. + + bit 0 no authentication is performed + bit 1 TLS is used + bit 2 HTTP Digest is used." + REFERENCE + "RFC 3261 Sections 22, 23, 26, 26.2.3" + ::= { sipServerProxyCfgEntry 4 } + +sipServerCfgProxyAuthDefaultRealm OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the default realm value used in + Proxy-Authenticate headers. Note that this MAY need to be + stored per user, in which case, this default value is ignored. + " + REFERENCE + "RFC 3261, Section 22.1" + ::= { sipServerProxyCfgEntry 5 } + + +-- +-- Proxy Server Statistics +-- +sipServerProxyStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerProxyStatsEntry + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "This table contains the statistics objects applicable to all + SIP Proxy Servers in this system." + ::= { sipServerProxyStats 1 } + +sipServerProxyStatsEntry OBJECT-TYPE + SYNTAX SipServerProxyStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of summary statistics. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerProxyStatsTable 1 } + +SipServerProxyStatsEntry ::= + SEQUENCE { + sipServerProxyStatProxyReqFailures Counter32, + sipServerProxyStatsDisconTime TimeStamp + } + +sipServerProxyStatProxyReqFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the number of occurrences of unsupported + options being specified in received Proxy-Require headers. + Such occurrences result in a 420 Bad Extension status code + being returned. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + + + monitoring the sipServerProxyStatsDisconTime object in the same + row." + ::= { sipServerProxyStatsEntry 1 } + +sipServerProxyStatsDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the server + statistics objects in this row last experienced a discontinuity." + ::= { sipServerProxyStatsEntry 2 } + +-- +-- This group contains MIB objects related to SIP Registrars. +-- +sipServerRegCfg OBJECT IDENTIFIER ::= { sipServerMIBObjects 5 } +sipServerRegStats OBJECT IDENTIFIER ::= { sipServerMIBObjects 6 } + +-- +-- Registrar Configuration +-- +sipServerRegCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerRegCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains configuration objects applicable to SIP + Registrars." + ::= { sipServerRegCfg 1 } + +sipServerRegCfgEntry OBJECT-TYPE + SYNTAX SipServerRegCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of common Registrar configuration. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerRegCfgTable 1 } + +SipServerRegCfgEntry ::= + + + SEQUENCE { + sipServerRegMaxContactExpiryDuration Unsigned32, + sipServerRegMaxUsers Unsigned32, + sipServerRegCurrentUsers Gauge32, + sipServerRegDfltRegActiveInterval Unsigned32 + } + +sipServerRegMaxContactExpiryDuration OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum expiry that may be requested + by a User Agent for a particular Contact. User Agents can + specify expiry using either an Expiry header in a REGISTER + request, or using an Expires parameter in a Contact header in + a REGISTER request. If the value requested by the User Agent + is greater than the value of this object, then the contact + information is given the duration specified by this object, and + that duration is indicated to the User Agent in the response." + ::= { sipServerRegCfgEntry 1 } + +sipServerRegMaxUsers OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the maximum number of users that the + Registrar supports. The current number of users is reflected + by sipServerRegCurrentUsers." + ::= { sipServerRegCfgEntry 2 } + +sipServerRegCurrentUsers OBJECT-TYPE + SYNTAX Gauge32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the number of users currently registered + with the Registrar." + ::= { sipServerRegCfgEntry 3 } + +sipServerRegDfltRegActiveInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + "This object reflects the default time interval the Registrar + considers registrations to be active. The value is used to + compute the Expires header in the REGISTER response. If a user + agent requests a time interval shorter than specified by this + object, the Registrar SHOULD honor that request. If a Contact + entry does not have an 'expires' parameter, the value of the + Expires header field is used instead. If a Contact entry has no + 'expires' parameter and no Expires header field is present, + the value of this object is used as the default value." + REFERENCE + "RFC 3261, Section 10.2" + ::= { sipServerRegCfgEntry 4 } +-- +-- Per User Information +-- +sipServerRegUserTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerRegUserEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on all users registered to each + Registrar in this system." + ::= { sipServerRegCfg 2 } + +sipServerRegUserEntry OBJECT-TYPE + SYNTAX SipServerRegUserEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry contains information for a single user registered to + this Registrar. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex, sipServerRegUserIndex } + ::= { sipServerRegUserTable 1 } + +SipServerRegUserEntry ::= + SEQUENCE { + sipServerRegUserIndex Unsigned32, + sipServerRegUserUri SnmpAdminString, + sipServerRegUserAuthenticationFailures Counter32, + sipServerRegUserDisconTime TimeStamp + } + + +sipServerRegUserIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object uniquely identifies a conceptual row in the table." + ::= { sipServerRegUserEntry 1 } + +sipServerRegUserUri OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the user's address-of-record. It is the + main form by which the Registrar knows the user. The format is + typically 'user@domain'. It is contained in the To header for + all REGISTER requests." + ::= { sipServerRegUserEntry 2 } + +sipServerRegUserAuthenticationFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a count of the number of times the user + has failed authentication. + + Discontinuities in the value of this counter can occur due to + successful user authentications and at re-initialization of + the SIP entity or service. A Management Station can detect + discontinuities in this counter by monitoring the + sipServerRegUserDisconTime object in the same row." + ::= { sipServerRegUserEntry 3 } + +sipServerRegUserDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + user registration statistics objects in this row last + experienced a discontinuity." + ::= { sipServerRegUserEntry 4 } +-- +-- Per Contact Information +-- +sipServerRegContactTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerRegContactEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on every location where a + registered user (specified by sipServerRegUserIndex) wishes to + be found (i.e., the user has provided contact information to + each SIP Registrar in this system)." + ::= { sipServerRegCfg 3 } + +sipServerRegContactEntry OBJECT-TYPE + SYNTAX SipServerRegContactEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry contains information for a single Contact. Multiple + contacts may exist for a single user. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + + INDEX { applIndex, + sipServerRegUserIndex, + sipServerRegContactIndex + } + ::= { sipServerRegContactTable 1 } + +SipServerRegContactEntry ::= + SEQUENCE { + sipServerRegContactIndex Unsigned32, + sipServerRegContactDisplayName SnmpAdminString, + sipServerRegContactURI SnmpAdminString, + sipServerRegContactLastUpdated TimeStamp, + sipServerRegContactExpiry DateAndTime, + sipServerRegContactPreference SnmpAdminString + } + +sipServerRegContactIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Along with the sipServerRegUserIndex, this object uniquely + identifies a conceptual row in the table." + ::= { sipServerRegContactEntry 1 } + + +sipServerRegContactDisplayName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the display name for the Contact. For + example, 'Santa at Home', or 'Santa on his Sled', corresponding + to contact URIs of sip:BigGuy@example.com or + sip:sclaus817@example.com, respectively." + ::= { sipServerRegContactEntry 2 } + +sipServerRegContactURI OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains either a SIP URI where the user can be + contacted. This URI is normally returned to a client from a + Redirect Server, or is used as the RequestURI in a SIP request + line for requests forwarded by a proxy." + ::= { sipServerRegContactEntry 3 } + +sipServerRegContactLastUpdated OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the time when this contact information + was accepted. If the contact information is updated via a + subsequent REGISTER of the same information, this object is + also updated." + ::= { sipServerRegContactEntry 4 } + +sipServerRegContactExpiry OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the date and time when the contact + information will no longer be valid. Such times may be + specified by the user at registration (i.e., Expires header or + expiry parameter in the Contact information), or a system + default can be applied." + ::= { sipServerRegContactEntry 5 } + +sipServerRegContactPreference OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "This object indicates a relative preference for the particular + Contact header field value compared to other bindings for this + address-of-record. A registering user may provide this + preference as a 'qvalue' parameter in the Contact header. + + The format of this item is a decimal number between 0 and 1 + (for example 0.9). Higher values indicate locations preferred + by the user." + REFERENCE + "RFC 3261, Section 10.2.1.2, 16.6, and 20.10" + ::= { sipServerRegContactEntry 6 } + +-- +-- Registrar Statistics +-- +sipServerRegStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipServerRegStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the summary statistics objects applicable + to all SIP Registrars in this system." + ::= { sipServerRegStats 1 } + +sipServerRegStatsEntry OBJECT-TYPE + SYNTAX SipServerRegStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of summary statistics. + + Each row represents those objects for a particular SIP server + present in this system. applIndex is used to uniquely identify + these instances of SIP servers and correlate them through the + common framework of the NETWORK-SERVICES-MIB (RFC 2788). The + same value of applIndex used in the corresponding + SIP-COMMON-MIB is used here." + INDEX { applIndex } + ::= { sipServerRegStatsTable 1 } + +SipServerRegStatsEntry ::= + SEQUENCE { + sipServerRegStatsAcceptedRegs Counter32, + sipServerRegStatsRejectedRegs Counter32, + sipServerRegStatsDisconTime TimeStamp + } + + +sipServerRegStatsAcceptedRegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a count of the number of REGISTER requests + that have been accepted (status code 200) by the Registrar. + This includes additions of new contact information, refreshing + contact information, as well as requests for deletion of + contact information. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipServerRegStatsDisconTime object in the same + row." + ::= { sipServerRegStatsEntry 1 } + +sipServerRegStatsRejectedRegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a count of the number REGISTER requests + that have been rejected by the Registrar. + + Discontinuities in the value of this counter can occur at + re-initialization of the SIP entity or service. A Management + Station can detect discontinuities in this counter by + monitoring the sipServerRegStatsDisconTime object in the same + row." + ::= { sipServerRegStatsEntry 2 } + +sipServerRegStatsDisconTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object when the counters for the + registrar statistics objects in this row last experienced a + discontinuity." + ::= { sipServerRegStatsEntry 3 } + +-- +-- Conformance +-- +sipServerMIBCompliances + OBJECT IDENTIFIER ::= { sipServerMIBConformance 1 } + + +sipServerMIBGroups + OBJECT IDENTIFIER ::= { sipServerMIBConformance 2 } + +-- +-- Compliance Statements +-- +sipServerProxyServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SIP entities acting as Proxy + Servers." + MODULE -- this module + MANDATORY-GROUPS { sipServerConfigGroup, + sipServerProxyConfigGroup, + sipServerProxyStatsGroup + } + ::= { sipServerMIBCompliances 1 } + +sipRedirectServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SIP entities acting as Redirect + Servers." + MODULE -- this module + MANDATORY-GROUPS { sipServerConfigGroup } + ::= { sipServerMIBCompliances 2 } + +sipServerRegistrarServerCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SIP entities acting as + Registrars." + MODULE -- this module + MANDATORY-GROUPS { sipServerConfigGroup, + sipServerRegistrarConfigGroup, + sipServerRegistrarStatsGroup } + GROUP sipServerRegistrarUsersGroup + DESCRIPTION + "This is an optional group." + ::= { sipServerMIBCompliances 3 } + +-- +-- Units of Conformance +-- +sipServerConfigGroup OBJECT-GROUP + OBJECTS { + sipServerCfgHostAddressType, + sipServerCfgHostAddress + + + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration common to SIP + Proxy and Redirect servers." + ::= { sipServerMIBGroups 1 } + +sipServerProxyConfigGroup OBJECT-GROUP + OBJECTS { + sipServerCfgProxyStatefulness, + sipServerCfgProxyRecursion, + sipServerCfgProxyRecordRoute, + sipServerCfgProxyAuthMethod, + sipServerCfgProxyAuthDefaultRealm + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration for SIP Proxy + servers." + ::= { sipServerMIBGroups 2 } + +sipServerProxyStatsGroup OBJECT-GROUP + OBJECTS { + sipServerProxyStatProxyReqFailures, + sipServerProxyStatsDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing statistics for SIP Proxy + servers." + ::= { sipServerMIBGroups 3 } + +sipServerRegistrarConfigGroup OBJECT-GROUP + OBJECTS { + sipServerRegMaxContactExpiryDuration, + sipServerRegMaxUsers, + sipServerRegCurrentUsers, + sipServerRegDfltRegActiveInterval + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration for SIP + Registrars." + ::= { sipServerMIBGroups 4 } + +sipServerRegistrarStatsGroup OBJECT-GROUP + OBJECTS { + sipServerRegStatsAcceptedRegs, + + + sipServerRegStatsRejectedRegs, + sipServerRegStatsDisconTime + } + STATUS current + DESCRIPTION + "A collection of objects providing statistics for SIP + Registrars." + ::= { sipServerMIBGroups 5 } + +sipServerRegistrarUsersGroup OBJECT-GROUP + OBJECTS { + sipServerRegUserUri, + sipServerRegUserAuthenticationFailures, + sipServerRegUserDisconTime, + sipServerRegContactDisplayName, + sipServerRegContactURI, + sipServerRegContactLastUpdated, + sipServerRegContactExpiry, + sipServerRegContactPreference + } + STATUS current + DESCRIPTION + "A collection of objects related to registered users." + ::= { sipServerMIBGroups 6 } + +END diff --git a/mibs/ietf/SIP-TC-MIB b/mibs/ietf/SIP-TC-MIB new file mode 100644 index 0000000..436a016 --- /dev/null +++ b/mibs/ietf/SIP-TC-MIB @@ -0,0 +1,183 @@ +SIP-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- RFC 2579 + +sipTC MODULE-IDENTITY + LAST-UPDATED "200704200000Z" + ORGANIZATION "IETF Session Initiation Protocol Working Group" + CONTACT-INFO + "SIP WG email: sip@ietf.org + + Co-editor Kevin Lingle + Cisco Systems, Inc. + postal: 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709 + USA + email: klingle@cisco.com + phone: +1 919 476 2029 + + Co-editor Joon Maeng + email: jmaeng@austin.rr.com + + Co-editor Jean-Francois Mule + CableLabs + postal: 858 Coal Creek Circle + Louisville, CO 80027 + USA + email: jf.mule@cablelabs.com + phone: +1 303 661 9100 + + Co-editor Dave Walker + email: drwalker@rogers.com" + DESCRIPTION + "Session Initiation Protocol (SIP) MIB TEXTUAL-CONVENTION + module used by other SIP-related MIB Modules. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4780; see the RFC itself for + + + + full legal notices." + REVISION "200704200000Z" + DESCRIPTION + "Initial version of the IETF SIP-TC-MIB module. This version + published as part of RFC 4780." + ::= { mib-2 148 } + +-- +-- Textual Conventions +-- + +SipTCTransportProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This convention is a bit map. Each bit represents a transport + protocol. If a bit has value 1, then that selected transport + protocol is in some way dependent on the context of the object + using this convention. If a bit has value 0, then that + transport protocol is not selected. Combinations of bits can + be set when multiple transport protocols are selected. + + bit 0: a protocol other than those defined here + bit 1: User Datagram Protocol + bit 2: Transmission Control Protocol + bit 3: Stream Control Transmission Protocol + bit 4: Transport Layer Security Protocol over TCP + bit 5: Transport Layer Security Protocol over SCTP + " + REFERENCE "RFC 3261, Section 18 and RFC 4168" + SYNTAX BITS { + other(0), -- none of the following + udp(1), + tcp(2), + sctp(3), -- RFC4168 + tlsTcp(4), + tlsSctp(5) -- RFC 4168 + } + +SipTCEntityRole ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This convention defines the role of a SIP entity. Examples of + SIP entities are proxies, user agents, redirect servers, + registrars, or combinations of the above. + + User Agent (UA): A logical entity that can act as both a user + agent client and user agent server. + + + + + User Agent Client (UAC): A logical entity that creates a new + request, and then uses the client transaction state machinery + to send it. The role of UAC lasts only for the duration of + that transaction. In other words, if a piece of software + initiates a request, it acts as a UAC for the duration of that + transaction. If it receives a request later, it assumes the + role of a user agent server for the processing of that + transaction. + + User Agent Server (UAS): A logical entity that generates a + response to a SIP request. The response accepts, rejects, + or redirects the request. This role lasts only for the + duration of that transaction. In other words, if a piece of + software responds to a request, it acts as a UAS for the + duration of that transaction. If it generates a request + later, it assumes the role of a user agent client for the + processing of that transaction. + + Proxy, Proxy Server: An intermediary entity that acts as both + a server and a client for the purpose of making requests on + behalf of other clients. A proxy server primarily plays the + role of routing, which means its job is to ensure that a + request is sent to another entity 'closer' to the targeted + user. Proxies are also useful for enforcing policy. A proxy + interprets and, if necessary, rewrites specific parts of a + request message before forwarding it. + + Redirect Server: A redirect server is a user agent server that + generates 3xx responses to requests it receives, directing the + client to contact an alternate set of URIs. + + Registrar: A registrar is a server that accepts REGISTER + requests and places the information it receives in those + requests into the location service for the domain it handles." + REFERENCE + "RFC 3261, Section 6" + SYNTAX BITS { + other(0), + userAgent(1), + proxyServer(2), + redirectServer(3), + registrarServer(4) + } + +SipTCOptionTagHeaders ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This convention defines the header fields that use the option + + + + tags per Section 19.2 of RFC 3261. These tags are used in + Require (Section 20.32), Proxy-Require (Section 20.29), + Supported (Section 20.37), and Unsupported (Section 20.40) + header fields." + REFERENCE + "RFC 3261, Sections 19.2, 20.32, 20.29, 20.37, and 20.40" + SYNTAX BITS { + require(0), -- Require header + proxyRequire(1), -- Proxy-Require header + supported(2), -- Supported header + unsupported(3) -- Unsupported header + } + +SipTCMethodName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TEXTUAL-CONVENTION is a string that uniquely identifies a + SIP method. The scope of uniqueness is the context of all + defined SIP methods. + + Experimental support of extension methods is acceptable and + expected. Extension methods are those defined in + officially sanctioned by IANA. + + To support experimental extension methods, any object using + this TEXTUAL-CONVENTION as syntax MAY return/accept a method + identifier value other than those sanctioned by IANA. That + system MUST ensure no collisions with officially assigned + method names." + REFERENCE + "RFC 3261, Section 27.4" + SYNTAX OCTET STRING (SIZE (1..100)) + +END diff --git a/mibs/ietf/SIP-UA-MIB b/mibs/ietf/SIP-UA-MIB new file mode 100644 index 0000000..f37a346 --- /dev/null +++ b/mibs/ietf/SIP-UA-MIB @@ -0,0 +1,209 @@ +SIP-UA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + Unsigned32, + mib-2 + FROM SNMPv2-SMI -- RFC 2578 + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF -- RFC 2580 + + applIndex + FROM NETWORK-SERVICES-MIB -- RFC 2788 + + InetAddressType, + InetAddress + FROM INET-ADDRESS-MIB -- RFC 4001 + + SipTCEntityRole + FROM SIP-TC-MIB; -- RFC 4780 + +sipUAMIB MODULE-IDENTITY + LAST-UPDATED "200704200000Z" + ORGANIZATION "IETF Session Initiation Protocol Working Group" + CONTACT-INFO + "SIP WG email: sip@ietf.org + + Co-editor Kevin Lingle + + + + Cisco Systems, Inc. + postal: 7025 Kit Creek Road + P.O. Box 14987 + Research Triangle Park, NC 27709 + USA + email: klingle@cisco.com + phone: +1 919 476 2029 + + Co-editor Joon Maeng + email: jmaeng@austin.rr.com + + Co-editor Jean-Francois Mule + CableLabs + postal: 858 Coal Creek Circle + Louisville, CO 80027 + USA + email: jf.mule@cablelabs.com + phone: +1 303 661 9100 + + Co-editor Dave Walker + email: drwalker@rogers.com" + DESCRIPTION + "Session Initiation Protocol (SIP) User Agent (UA) MIB module. + + SIP is an application-layer signaling protocol for creating, + modifying, and terminating multimedia sessions with one or more + participants. These sessions include Internet multimedia + conferences and Internet telephone calls. SIP is defined in + RFC 3261 (June 2002). + + A User Agent is an application that contains both a User Agent + Client (UAC) and a User Agent Server (UAS). A UAC is an + application that initiates a SIP request. A UAS is an + application that contacts the user when a SIP request is + received and that returns a response on behalf of the user. + The response accepts, rejects, or redirects the request. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4780; see the RFC itself for + full legal notices." + REVISION "200704200000Z" + DESCRIPTION + "Initial version of the IETF SIP-UA-MIB module. This version + published as part of RFC 4780." + ::= { mib-2 150 } + +-- Top-Level Components of this MIB. +sipUAMIBObjects OBJECT IDENTIFIER ::= { sipUAMIB 1 } + + + +sipUAMIBConformance OBJECT IDENTIFIER ::= { sipUAMIB 2 } + +-- +-- This MIB contains objects related to SIP User Agents. +-- +sipUACfgServer OBJECT IDENTIFIER ::= { sipUAMIBObjects 1 } + +-- +-- SIP Server Configuration +-- +sipUACfgServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF SipUACfgServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains SIP server configuration objects applicable + to each SIP user agent in this system." + ::= { sipUACfgServer 1 } + +sipUACfgServerEntry OBJECT-TYPE + SYNTAX SipUACfgServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of server configuration. + + Each row represents those objects for a particular SIP user + agent present in this system. applIndex is used to uniquely + identify these instances of SIP user agents and correlate + them through the common framework of the NETWORK-SERVICES-MIB + (RFC 2788). The same value of applIndex used in the + corresponding SIP-COMMON-MIB is used here." + INDEX { applIndex, sipUACfgServerIndex } + ::= { sipUACfgServerTable 1 } + +SipUACfgServerEntry ::= SEQUENCE { + sipUACfgServerIndex Unsigned32, + sipUACfgServerAddressType InetAddressType, + sipUACfgServerAddress InetAddress, + sipUACfgServerRole SipTCEntityRole + } + +sipUACfgServerIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier of a server address when multiple addresses + + + are configured by the SIP entity. If one address isn't + reachable, then another can be tried." + ::= { sipUACfgServerEntry 1 } + +sipUACfgServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the type of address contained in the + associated instance of sipUACfgServerAddress." + REFERENCE + "INET-ADDRESS-MIB (RFC 4001)" + ::= { sipUACfgServerEntry 2 } + +sipUACfgServerAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the address of a SIP server this user + agent will use to proxy/redirect calls. The type of this + address is determined by the value of the + sipUACfgServerAddressType object." + REFERENCE "INET-ADDRESS-MIB (RFC 4001)" + ::= { sipUACfgServerEntry 3 } + +sipUACfgServerRole OBJECT-TYPE + SYNTAX SipTCEntityRole + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the function of the SIP server this user + agent should communicate with: registrar, proxy (outbound + proxy), etc." + ::= { sipUACfgServerEntry 4 } + +-- +-- Conformance +-- +sipUAMIBCompliances OBJECT IDENTIFIER ::= { sipUAMIBConformance 1 } +sipUAMIBGroups OBJECT IDENTIFIER ::= { sipUAMIBConformance 2 } + +-- +-- Compliance Statements +-- +sipUACompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "The compliance statement for SIP entities that implement the + SIP-UA-MIB module." + MODULE -- this module + MANDATORY-GROUPS { sipUAConfigGroup } + + ::= { sipUAMIBCompliances 1 } + +-- +-- Units of Conformance +-- +sipUAConfigGroup OBJECT-GROUP + OBJECTS { + sipUACfgServerAddressType, + sipUACfgServerAddress, + sipUACfgServerRole + } + STATUS current + DESCRIPTION + "A collection of objects providing information about the + configuration of SIP User Agents." + ::= { sipUAMIBGroups 1 } + +END diff --git a/mibs/ietf/SLAPM-MIB b/mibs/ietf/SLAPM-MIB new file mode 100644 index 0000000..45d10e6 --- /dev/null +++ b/mibs/ietf/SLAPM-MIB @@ -0,0 +1,2821 @@ +SLAPM-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + experimental, Integer32, NOTIFICATION-TYPE, + Gauge32, Counter32, Unsigned32 + FROM SNMPv2-SMI -- RFC2578 + TEXTUAL-CONVENTION, RowStatus, + TestAndIncr, DateAndTime + FROM SNMPv2-TC -- RFC2579 + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- RFC2580 + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; -- RFC2571 + + slapmMIB MODULE-IDENTITY + LAST-UPDATED "200001240000Z" -- 24 January 2000 + ORGANIZATION "International Business Machines Corp." + CONTACT-INFO + "Kenneth White + + International Business Machines Corporation + Network Computing Software Division + Research Triangle Park, NC, USA + + E-mail: wkenneth@us.ibm.com" + DESCRIPTION + "The Service Level Agreement Performance Monitoring MIB + (SLAPM-MIB) provides data collection and monitoring + capabilities for Service Level Agreements (SLAs) + policy definitions." + + -- Revision history + REVISION "200001240000Z" -- 24 January 2000 + DESCRIPTION + "This version published as RFC 2758." + + ::= { experimental 88 } + + -- Textual Conventions + + SlapmNameType ::= TEXTUAL-CONVENTION + STATUS deprecated + DESCRIPTION + "The textual convention for naming entities + within this MIB. The actual contents of an object + defined using this textual convention should consist + of the distinguished name portion of an name. + This is usually the right-most + portion of the name. This convention is necessary, + since names within this MIB can be used as index + items and an instance identifier is limited to 128 + subidentifiers. + + This textual convention has been deprecated. All of the + tables defined within this MIB that use this textual + convention have been deprecated as well since the method + of using a portion of the name (either of a policy + definition or of a traffic profile) has been replaced + by using an Unsigned32 index. The new slapmPolicyNameTable + would then map the Unsigned32 index to a real name." + SYNTAX SnmpAdminString (SIZE(0..32)) + + SlapmStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for defining the various + slapmPRMonTable (or old slapmPolicyMonitorTable) + and the slapmSubcomponentTable states for actual policy + rule traffic monitoring." + SYNTAX BITS { + slaMinInRateNotAchieved(0), + slaMaxInRateExceeded(1), + slaMaxDelayExceeded(2), + slaMinOutRateNotAchieved(3), + slaMaxOutRateExceeded(4), + monitorMinInRateNotAchieved(5), + monitorMaxInRateExceeded(6), + monitorMaxDelayExceeded(7), + monitorMinOutRateNotAchieved(8), + monitorMaxOutRateExceeded(9) + } + + SlapmPolicyRuleName ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1024t" + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC + represents information taken from the ISO/IEC IS + 10646-1 character set, encoded as an octet string + using the UTF-8 character encoding scheme described + in RFC 2044. For strings in 7-bit US-ASCII, + there is no impact since the UTF-8 representation + is identical to the US-ASCII encoding." + SYNTAX OCTET STRING (SIZE (0..1024)) + + -- Top-level structure of the MIB + + slapmNotifications OBJECT IDENTIFIER ::= { slapmMIB 0 } + slapmObjects OBJECT IDENTIFIER ::= { slapmMIB 1 } + slapmConformance OBJECT IDENTIFIER ::= { slapmMIB 2 } + + -- All scalar objects + + slapmBaseObjects OBJECT IDENTIFIER ::= { slapmObjects 1 } + + -- Scalar Object Definitions + + slapmSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating applications + to coordinate their use of the contents of this MIB. This + typically occurs when an application seeks to create an + new entry or alter an existing entry in + slapmPRMonTable (or old slapmPolicyMonitorTable). A + management implementation MAY utilize the slapmSpinLock to + serialize its changes or additions. This usage is not + required. However, slapmSpinLock MUST be supported by + agent implementations." + ::= { slapmBaseObjects 1 } + + slapmPolicyCountQueries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times that a policy lookup occurred + with respect to a policy agent. + This is the number of times that a reference was made to + a policy definition at a system and includes the number + of times that a policy repository was accessed, + slapmPolicyCountAccesses. The object + slapmPolicyCountAccesses should be less than + slapmPolicyCountQueries when policy definitions are + cached at a system." + ::= { slapmBaseObjects 2 } + + slapmPolicyCountAccesses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of times that a policy repository was + accessed with respect to a policy agent. + The value of this object should be less than + slapmPolicyCountQueries, since typically policy entries + are cached to minimize repository accesses." + ::= { slapmBaseObjects 3 } + + slapmPolicyCountSuccessAccesses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of successful policy repository accesses + with respect to a policy agent." + ::= { slapmBaseObjects 4 } + + slapmPolicyCountNotFounds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of policy repository accesses, + with respect to a policy agent, that + resulted in an entry not being located." + ::= { slapmBaseObjects 5 } + + slapmPolicyPurgeTime OBJECT-TYPE + SYNTAX Integer32 (0..3600) -- maximum of 1 hour + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The purpose of this object is to define the amount + of time (in seconds) to wait before removing an + slapmPolicyRuleStatsEntry (or old slapmPolicyStatsEntry) + when a system detects that the associated policy + definition has been deleted. This gives any polling + management applications time to complete their last poll + before an entry is removed. An slapmPolicyRuleStatsEntry + (or old slapmPolicyStatsEntry) enters the + deleteNeeded(3) state via slapmPolicyRuleStatsOperStatus + (or old slapmPolicyStatsOperStatus) when a system first + detects that the entry needs to be removed. + + Once slapmPolicyPurgeTime has expired for an entry in + deleteNeeded(3) state it is removed a long with any + dependent slapmPRMonTable (or slapmPolicyMonitorTable) + entries. + + A value of 0 for this option disables this function and + results in the automatic purging of slapmPRMonTable + (or slapmPolicyTable) entries upon transition into + deleteNeeded(3) state. + + A slapmPolicyRuleDeleted (or slapmPolicyProfileDeleted) + notification is sent when an slapmPolicyRuleStatsEntry (or + slapmPolicyStatsEntry) is removed. Dependent + slapmPRMonTable (or slapmPolicyMonitorTable) + deletion results in a slapmPolicyRuleMonDeleted (or + slapmPolicyMonitorDeleted) notification being sent. + These notifications are suppressed if the value of + slapmPolicyTrapEnable is disabled(2)." + DEFVAL { 900 } -- 15 minute default purge time + ::= { slapmBaseObjects 6 } + + slapmPolicyTrapEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether slapmPolicyRuleDeleted and + slapmPolicyRuleMonDeleted (or slapmPolicyProfileDeleted + and slapmPolicyMonitorDeleted) notifications should be + generated by this system." + DEFVAL { disabled } + ::= { slapmBaseObjects 7 } + + slapmPolicyTrapFilter OBJECT-TYPE + SYNTAX Integer32 (0..64) + UNITS "intervals" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The purpose of this object is to suppress unnecessary + slapmSubcMonitorNotOkay (or + slapmSubcomponentMonitoredEventNotAchieved), for example, + notifications. Basically, a monitored event has to + not meet its SLA requirement for the number of + consecutive intervals indicated by the value of this + object." + DEFVAL { 3 } + ::= { slapmBaseObjects 8 } + + slapmTableObjects OBJECT IDENTIFIER ::= { slapmObjects 2 } + + -- Sla Performance Monitoring Policy Statistics Table + + slapmPolicyStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPolicyStatsEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Provides statistics on all policies known at a + system. + + This table has been deprecated and replaced with + the slapmPolicyRuleStatsTable. Older implementations of + this MIB are expected to continue their support of this + table." + ::= { slapmTableObjects 1 } + + slapmPolicyStatsEntry OBJECT-TYPE + SYNTAX SlapmPolicyStatsEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Defines an entry in the slapmPolicyStatsTable. This table + defines a set of statistics that is kept on a per system, + policy and traffic profile basis. A policy can be + defined to contain multiple traffic profiles that map to + a single action. + + Entries in this table are not created or deleted via SNMP + but reflect the set of policy definitions known at a system." + INDEX { + slapmPolicyStatsSystemAddress, + slapmPolicyStatsPolicyName, + slapmPolicyStatsTrafficProfileName + } + ::= { slapmPolicyStatsTable 1 } + + SlapmPolicyStatsEntry ::= + SEQUENCE { + slapmPolicyStatsSystemAddress OCTET STRING, + slapmPolicyStatsPolicyName SlapmNameType, + slapmPolicyStatsTrafficProfileName SlapmNameType, + slapmPolicyStatsOperStatus INTEGER, + slapmPolicyStatsActiveConns Gauge32, + slapmPolicyStatsTotalConns Counter32, + slapmPolicyStatsFirstActivated DateAndTime, + slapmPolicyStatsLastMapping DateAndTime, + slapmPolicyStatsInOctets Counter32, + slapmPolicyStatsOutOctets Counter32, + slapmPolicyStatsConnectionLimit Integer32, + slapmPolicyStatsCountAccepts Counter32, + slapmPolicyStatsCountDenies Counter32, + slapmPolicyStatsInDiscards Counter32, + slapmPolicyStatsOutDiscards Counter32, + slapmPolicyStatsInPackets Counter32, + slapmPolicyStatsOutPackets Counter32, + slapmPolicyStatsInProfileOctets Counter32, + slapmPolicyStatsOutProfileOctets Counter32, + slapmPolicyStatsMinRate Integer32, + slapmPolicyStatsMaxRate Integer32, + slapmPolicyStatsMaxDelay Integer32 + } + + slapmPolicyStatsSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Address of a system that an Policy definition relates to. + A zero length octet string must be used to indicate that + only a single system is being represented. + Otherwise, the length of the octet string must be + 4 for an ipv4 address or 16 for an ipv6 address." + ::= { slapmPolicyStatsEntry 1 } + + slapmPolicyStatsPolicyName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Policy name that this entry relates to." + ::= { slapmPolicyStatsEntry 2 } + + slapmPolicyStatsTrafficProfileName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The name of a traffic profile that is associated with + a policy." + ::= { slapmPolicyStatsEntry 3 } + + slapmPolicyStatsOperStatus OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + active(2), + deleteNeeded(3) + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The state of a policy entry: + + inactive(1) - An policy entry was either defined + by local system definition or + discovered via a directory search + but has not been activated (not + currently being used). + active(2) - Policy entry is being used to affect + traffic flows. + deleteNeeded(3) - Either though local implementation + dependent methods or by discovering + that the directory entry corresponding + to this table entry no longer + exists and slapmPolicyPurgeTime needs + to expire before attempting to remove + the corresponding slapmPolicyStatsEntry + and any dependent slapmPolicyMonitor + table entries. + Note: a policy traffic profile in a state other than + active(1) is not being used to affect traffic flows." + ::= { slapmPolicyStatsEntry 4 } + + slapmPolicyStatsActiveConns OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of active TCP connections that are + affected by the corresponding policy entry." + ::= { slapmPolicyStatsEntry 5 } + + slapmPolicyStatsTotalConns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of total TCP connections that are + affected by the corresponding policy entry." + ::= { slapmPolicyStatsEntry 6 } + + slapmPolicyStatsFirstActivated OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The timestamp for when the corresponding policy entry + is activated. The value of this object serves as + the discontinuity event indicator when polling entries + in this table. The value of this object is updated on + transition of slapmPolicyStatsOperStatus into the active(2) + state." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyStatsEntry 7 } + + slapmPolicyStatsLastMapping OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The timestamp for when the last time + that the associated policy entry was used." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyStatsEntry 8 } + + slapmPolicyStatsInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of octets that was received by IP for an + entity that map to this entry." + ::= { slapmPolicyStatsEntry 9 } + + slapmPolicyStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of octets that was transmitted by IP for an + entity that map to this entry." + ::= { slapmPolicyStatsEntry 10 } + + slapmPolicyStatsConnectionLimit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The limit for the number of active TCP connections that + are allowed for this policy definition. A value of zero + for this object implies that a connection limit has not + been specified." + ::= { slapmPolicyStatsEntry 11 } + + slapmPolicyStatsCountAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter is incremented when a policy action's + Permission value is set to Accept and a session + (TCP connection) is accepted." + ::= { slapmPolicyStatsEntry 12 } + + slapmPolicyStatsCountDenies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter is incremented when a policy action's + Permission value is set to Deny and a session is denied, + or when a session (TCP connection) is rejected due to a + policy's connection limit (slapmPolicyStatsConnectLimit) + being reached." + ::= { slapmPolicyStatsEntry 13 } + + slapmPolicyStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of in octets discarded. + This occurs when an error is detected. Examples of this + are buffer overflow, checksum error, or bad packet + format." + ::= { slapmPolicyStatsEntry 14 } + + slapmPolicyStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of out octets discarded. + Examples of this are buffer overflow, checksum error, or + bad packet format." + ::= { slapmPolicyStatsEntry 15 } + + slapmPolicyStatsInPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of in packets received + that relate to this policy entry from IP." + ::= { slapmPolicyStatsEntry 16 } + + slapmPolicyStatsOutPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of out packets sent + by IP that relate to this policy entry." + ::= { slapmPolicyStatsEntry 17 } + + slapmPolicyStatsInProfileOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of in octets that are + determined to be within profile." + ::= { slapmPolicyStatsEntry 18 } + + slapmPolicyStatsOutProfileOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This counter counts the number of out octets that are + determined to be within profile." + ::= { slapmPolicyStatsEntry 19 } + + slapmPolicyStatsMinRate OBJECT-TYPE + SYNTAX Integer32 + UNITS "Kilobits per second" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The minimum transfer rate defined for this entry." + ::= { slapmPolicyStatsEntry 20 } + + slapmPolicyStatsMaxRate OBJECT-TYPE + SYNTAX Integer32 + UNITS "Kilobits per second" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The maximum transfer rate defined for this entry." + ::= { slapmPolicyStatsEntry 21 } + + slapmPolicyStatsMaxDelay OBJECT-TYPE + SYNTAX Integer32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The maximum delay defined for this entry." + ::= { slapmPolicyStatsEntry 22 } + + -- SLA Performance Monitoring Policy Monitor Table + + slapmPolicyMonitorTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPolicyMonitorEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Provides a method of monitoring policies and their + effect at a system. + + This table has been deprecated and replaced with + the slapmPRMonTable. Older implementations of + this MIB are expected to continue their support + of this table." + ::= { slapmTableObjects 2 } + + slapmPolicyMonitorEntry OBJECT-TYPE + SYNTAX SlapmPolicyMonitorEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Defines an entry in the slapmPolicyMonitorTable. This + table defines which policies should be monitored on a + per policy traffic profile basis." + INDEX { + slapmPolicyMonitorOwnerIndex, + slapmPolicyMonitorSystemAddress, + slapmPolicyMonitorPolicyName, + slapmPolicyMonitorTrafficProfileName + } + ::= { slapmPolicyMonitorTable 1 } + + SlapmPolicyMonitorEntry ::= + SEQUENCE { + slapmPolicyMonitorOwnerIndex SnmpAdminString, + slapmPolicyMonitorSystemAddress OCTET STRING, + slapmPolicyMonitorPolicyName SlapmNameType, + slapmPolicyMonitorTrafficProfileName SlapmNameType, + slapmPolicyMonitorControl BITS, + slapmPolicyMonitorStatus SlapmStatus, + slapmPolicyMonitorInterval Integer32, + slapmPolicyMonitorIntTime DateAndTime, + slapmPolicyMonitorCurrentInRate Gauge32, + slapmPolicyMonitorCurrentOutRate Gauge32, + slapmPolicyMonitorMinRateLow Integer32, + slapmPolicyMonitorMinRateHigh Integer32, + slapmPolicyMonitorMaxRateHigh Integer32, + slapmPolicyMonitorMaxRateLow Integer32, + slapmPolicyMonitorMaxDelayHigh Integer32, + slapmPolicyMonitorMaxDelayLow Integer32, + slapmPolicyMonitorMinInRateNotAchieves Counter32, + slapmPolicyMonitorMaxInRateExceeds Counter32, + slapmPolicyMonitorMaxDelayExceeds Counter32, + slapmPolicyMonitorMinOutRateNotAchieves Counter32, + slapmPolicyMonitorMaxOutRateExceeds Counter32, + slapmPolicyMonitorCurrentDelayRate Gauge32, + slapmPolicyMonitorRowStatus RowStatus + } + + slapmPolicyMonitorOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..16)) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 2575, VACM) for tables in which + multiple users may need to independently create or modify + entries, the initial index is used as an 'owner index'. + Such an initial index has a syntax of SnmpAdminString, + and can thus be trivially mapped to a securityName or + groupName as defined in VACM, in accordance with a + security policy. + + All entries in that table belonging to a particular user + will have the same value for this initial index. For a + given user's entries in a particular table, the object + identifiers for the information in these entries will + have the same subidentifiers (except for the 'column' + subidentifier) up to the end of the encoded owner index. + To configure VACM to permit access to this portion of the + table, one would create vacmViewTreeFamilyTable entries + with the value of vacmViewTreeFamilySubtree including the + owner index portion, and vacmViewTreeFamilyMask + 'wildcarding' the column subidentifier. More elaborate + configurations are possible." + ::= { slapmPolicyMonitorEntry 1 } + + slapmPolicyMonitorSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Address of a system that an Policy definition relates to. + A zero length octet string can be used to indicate that + only a single system is being represented. + Otherwise, the length of the octet string should be + 4 for an ipv4 address and 16 for an ipv6 address." + ::= { slapmPolicyMonitorEntry 2 } + + slapmPolicyMonitorPolicyName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Policy name that this entry relates to." + ::= { slapmPolicyMonitorEntry 3 } + + slapmPolicyMonitorTrafficProfileName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The corresponding Traffic Profile name." + ::= { slapmPolicyMonitorEntry 4 } + + slapmPolicyMonitorControl OBJECT-TYPE + SYNTAX BITS { + monitorMinRate(0), + monitorMaxRate(1), + monitorMaxDelay(2), + enableAggregateTraps(3), + enableSubcomponentTraps(4), + monitorSubcomponents(5) + } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The value of this object determines the type and level + of monitoring that is applied to a policy/profile. The + value of this object can't be changed once the table + entry that it is a part of is activated via a + slapmPolicyMonitorRowStatus transition to active state. + + monitorMinRate(0) - Monitor minimum transfer rate. + monitorMaxRate(1) - Monitor maximum transfer rate. + monitorMaxDelay(2) - Monitor maximum delay. + enableAggregateTraps(3) - The enableAggregateTraps(3) + BITS setting enables notification generation + when monitoring a policy traffic profile as an + aggregate using the values in the corresponding + slapmPolicyStatsEntry. By default this function + is not enabled. + enableSubcomponentTraps(4) - This BITS setting enables + notification generation when monitoring all + subcomponents that are mapped to an corresponding + slapmPolicyStatsEntry. By default this + function is not enabled. + monitorSubcomponents(5) - This BITS setting enables + monitoring of each subcomponent (typically a + TCP connection or UDP listener) individually." + DEFVAL { { monitorMinRate, monitorMaxRate, + monitorMaxDelay } } + ::= { slapmPolicyMonitorEntry 5 } + + slapmPolicyMonitorStatus OBJECT-TYPE + SYNTAX SlapmStatus + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The value of this object indicates when a monitored + value has not meet a threshold or isn't meeting the + defined service level. The SlapmStatus TEXTUAL-CONVENTION + defines two levels of not meeting a threshold. The first + set: + slaMinInRateNotAchieved(0), + slaMaxInRateExceeded(1), + slaMaxDelayExceeded(2), + slaMinOutRateNotAchieved(3), + slaMaxOutRateExceeded(4) + + are used to indicate when the SLA as an aggregate is + not meeting a threshold while the second set: + + monitorMinInRateNotAchieved(5), + monitorMaxInRateExceeded(6), + monitorMaxDelayExceeded(7), + monitorMinOutRateNotAchieved(8), + monitorMaxOutRateExceeded(9) + + indicate that at least one subcomponent is not meeting + a threshold." + ::= { slapmPolicyMonitorEntry 6 } + + slapmPolicyMonitorInterval OBJECT-TYPE + SYNTAX Integer32 (15..86400) -- 15 second min, 24 hour max + UNITS "seconds" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The number of seconds that defines the sample period." + DEFVAL {20} -- 20 seconds + ::= { slapmPolicyMonitorEntry 7 } + + slapmPolicyMonitorIntTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The timestamp for when the last interval ended." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyMonitorEntry 8 } + + slapmPolicyMonitorCurrentInRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Using the value of the corresponding + slapmPolicyMonitorInterval, slapmPolicyStatsInOctets + is sampled and then divided by slapmPolicyMonitorInterval + to determine the current in transfer rate." + ::= { slapmPolicyMonitorEntry 9 } + + slapmPolicyMonitorCurrentOutRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Using the value of the corresponding + slapmPolicyMonitorInterval, slapmPolicyStatsOutOctets + is sampled and then divided by slapmPolicyMonitorInterval + to determine the current out transfer rate." + ::= { slapmPolicyMonitorEntry 10 } + + slapmPolicyMonitorMinRateLow OBJECT-TYPE + SYNTAX Integer32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a + slapmMonitoredEventNotAchieved notification, signalling + that a monitored minimum transfer rate has not been meet. + + A slapmMonitoredEventNotAchieved notification is not + generated again for an slapmPolicyMonitorEntry until + the minimum transfer rate + exceeds slapmPolicyMonitorMinRateHigh (a + slapmMonitoredEventOkay notification is then transmitted) + and then fails below slapmPolicyMonitorMinRateLow. This + behavior reduces the slapmMonitoredEventNotAchieved + notifications that are transmitted. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMinRate(0) is not + enabled. When enabled the default value for this object + is the min rate value specified in the associated + action definition minus 10%. If the action definition + doesn't have a min rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMinRate(0) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 11 } + + slapmPolicyMonitorMinRateHigh OBJECT-TYPE + SYNTAX Integer32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a slapmMonitoredEventOkay + notification, signalling that a monitored minimum + transfer rate has increased to an acceptable level. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMinRate(0) is not + enabled. When enabled the default value for this object + is the min rate value specified in the associated + action definition plus 10%. If the action definition + doesn't have a min rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMinRate(0) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 12 } + + slapmPolicyMonitorMaxRateHigh OBJECT-TYPE + SYNTAX Integer32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a + slapmMonitoredEventNotAchieved notification, signalling + that a monitored maximum transfer rate has been exceeded. + + A slapmMonitoredEventNotAchieved notification is not + generated again for an slapmPolicyMonitorEntry until the + maximum transfer rate fails below + slapmPolicyMonitorMaxRateLow (a slapmMonitoredEventOkay + notification is then transmitted) and then raises above + slapmPolicyMonitorMaxRateHigh. This behavior reduces the + slapmMonitoredEventNotAchieved notifications that are + transmitted. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMaxRate(1) is not + enabled. When enabled the default value for this object + is the max rate value specified in the associated + action definition plus 10%. If the action definition + doesn't have a max rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxRate(1) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 13 } + + slapmPolicyMonitorMaxRateLow OBJECT-TYPE + SYNTAX Integer32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a slapmMonitoredEventOkay + notification, signalling that a monitored maximum + transfer rate has fallen to an acceptable level. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMaxRate(1) is not + enabled. When enabled the default value for this object + is the max rate value specified in the associated + action definition minus 10%. If the action definition + doesn't have a max rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxRate(1) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 14 } + + slapmPolicyMonitorMaxDelayHigh OBJECT-TYPE + SYNTAX Integer32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a + slapmMonitoredEventNotAchieved notification, signalling + that a monitored maximum delay rate has been exceeded. + + A slapmMonitoredEventNotAchieved notification is not + generated again for an slapmPolicyMonitorEntry until + the maximum delay rate falls below + slapmPolicyMonitorMaxDelayLow (a slapmMonitoredEventOkay + notification is then transmitted) and raises above + slapmPolicyMonitorMaxDelayHigh. This behavior reduces + the slapmMonitoredEventNotAchieved notifications that are + transmitted. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMaxDelay(4) is not + enabled. When enabled the default value for this object + is the max delay value specified in the associated + action definition plus 10%. If the action definition + doesn't have a max delay defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxDelay(4) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 15 } + + slapmPolicyMonitorMaxDelayLow OBJECT-TYPE + SYNTAX Integer32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The threshold for generating a slapmMonitoredEventOkay + notification, signalling that a monitored maximum delay + rate has fallen to an acceptable level. + + A value of zero for this object is returned when the + slapmPolicyMonitorControl monitorMaxDelay(4) is not + enabled. When enabled the default value for this object + is the max delay value specified in the associated + action definition minus 10%. If the action definition + doesn't have a max delay defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxDelay(4) + is selected. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPolicyMonitorEntry 16 } + + slapmPolicyMonitorMinInRateNotAchieves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a minimum transfer in rate + was not achieved." + ::= { slapmPolicyMonitorEntry 17 } + + slapmPolicyMonitorMaxInRateExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a maximum transfer in rate + was exceeded." + ::= { slapmPolicyMonitorEntry 18 } + + slapmPolicyMonitorMaxDelayExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a maximum delay in rate + was exceeded." + ::= { slapmPolicyMonitorEntry 19 } + + slapmPolicyMonitorMinOutRateNotAchieves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a minimum transfer out rate + was not achieved." + ::= { slapmPolicyMonitorEntry 20 } + + slapmPolicyMonitorMaxOutRateExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of times that a maximum transfer out rate + was exceeded." + ::= { slapmPolicyMonitorEntry 21 } + + slapmPolicyMonitorCurrentDelayRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The current delay rate for this entry. This is + calculated by taking the average of the TCP + round trip times for all associating + slapmSubcomponentTable entries within a interval." + ::= { slapmPolicyMonitorEntry 22 } + + slapmPolicyMonitorRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "This object allows entries to be created and deleted + in the slapmPolicyMonitorTable. An entry in this table + is deleted by setting this object to destroy(6). + + Removal of a corresponding (same policy and traffic profile + names) slapmPolicyStatsEntry has the side effect of the + automatic deletion an entry in this table." + ::= { slapmPolicyMonitorEntry 23 } + + -- Subcomponent Table + + slapmSubcomponentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmSubcomponentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines a table to provide information on the + individually components that are mapped to + a policy rule (or old traffic profile). + + The indexing for this table is designed to support + the use of an SNMP GET-NEXT operation using only + the remote address and remote port as a way for + a management station to retrieve the table entries + relating to a particular client." + ::= { slapmTableObjects 3 } + + slapmSubcomponentEntry OBJECT-TYPE + SYNTAX SlapmSubcomponentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a particular subcomponent entry. This + table does not have an OwnerIndex as + part of its indexing since this table's contents + is intended to span multiple users." + INDEX { + slapmSubcomponentRemAddress, + slapmSubcomponentRemPort, + slapmSubcomponentLocalAddress, + slapmSubcomponentLocalPort + } + ::= { slapmSubcomponentTable 1 } + + SlapmSubcomponentEntry ::= + SEQUENCE { + slapmSubcomponentRemAddress OCTET STRING, + slapmSubcomponentRemPort Integer32, + slapmSubcomponentLocalAddress OCTET STRING, + slapmSubcomponentLocalPort Integer32, + slapmSubcomponentProtocol INTEGER, + slapmSubcomponentSystemAddress OCTET STRING, + slapmSubcomponentPolicyName SlapmNameType, + slapmSubcomponentTrafficProfileName SlapmNameType, + slapmSubcomponentLastActivity DateAndTime, + slapmSubcomponentInOctets Counter32, + slapmSubcomponentOutOctets Counter32, + slapmSubcomponentTcpOutBufferedOctets Counter32, + slapmSubcomponentTcpInBufferedOctets Counter32, + slapmSubcomponentTcpReXmts Counter32, + slapmSubcomponentTcpRoundTripTime Integer32, + slapmSubcomponentTcpRoundTripVariance Integer32, + slapmSubcomponentInPdus Counter32, + slapmSubcomponentOutPdus Counter32, + slapmSubcomponentApplName SnmpAdminString, + slapmSubcomponentMonitorStatus SlapmStatus, + slapmSubcomponentMonitorIntTime DateAndTime, + slapmSubcomponentMonitorCurrentInRate Gauge32, + slapmSubcomponentMonitorCurrentOutRate Gauge32, + slapmSubcomponentPolicyRuleIndex Unsigned32 + } + + slapmSubcomponentRemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicate the remote address of a subcomponent. + A remote address can be either an ipv4 address in which + case 4 octets are required or as an ipv6 address that + requires 16 octets. The value of this subidentifier + is a zero length octet string when this entry relates + to a UDP listener." + ::= { slapmSubcomponentEntry 1 } + + slapmSubcomponentRemPort OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicate the remote port of a subcomponent. + The value of this subidentifier + is 0 when this entry relates to a UDP listener." + ::= { slapmSubcomponentEntry 2 } + + slapmSubcomponentLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicate the local address of a subcomponent. + A local address can be either an ipv4 address in which + case 4 octets are required or as an ipv6 address that + requires 16 octets." + ::= { slapmSubcomponentEntry 3 } + + slapmSubcomponentLocalPort OBJECT-TYPE + SYNTAX Integer32(0..65535) + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "Indicate the local port of a subcomponent." + ::= { slapmSubcomponentEntry 4 } + + slapmSubcomponentProtocol OBJECT-TYPE + SYNTAX INTEGER { + udpListener(1), + tcpConnection(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicate the protocol in use that identifies the + type of subcomponent." + ::= { slapmSubcomponentEntry 5 } + + slapmSubcomponentSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Address of a system that an Policy definition relates to. + A zero length octet string can be used to indicate that + only a single system is being represented. + Otherwise, the length of the octet string should be + 4 for an ipv4 address and 16 for an ipv6 address." + ::= { slapmSubcomponentEntry 6 } + + slapmSubcomponentPolicyName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "Policy name that this entry relates to. + + This object, along with slapmSubcomponentTrafficProfileName, + have been replaced with the use of an unsigned integer + index that is mapped to an slapmPolicyNameEntry to actually + identify policy naming." + ::= { slapmSubcomponentEntry 7 } + + slapmSubcomponentTrafficProfileName OBJECT-TYPE + SYNTAX SlapmNameType + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The corresponding traffic profile name. + + This object, along with slapmSubcomponentProfileName, + have been replaced with the use of an unsigned integer + index that is mapped to an slapmPolicyNameEntry to + actually identify policy naming." + ::= { slapmSubcomponentEntry 8 } + + slapmSubcomponentLastActivity OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and timestamp of when this entry was last used." + DEFVAL { '0000000000000000'H } + ::= { slapmSubcomponentEntry 9 } + + slapmSubcomponentInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets received from IP for this + connection." + ::= { slapmSubcomponentEntry 10 } + + slapmSubcomponentOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets sent to IP for this connection." + ::= { slapmSubcomponentEntry 11 } + + slapmSubcomponentTcpOutBufferedOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outgoing octets buffered. The value + of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 12 } + + slapmSubcomponentTcpInBufferedOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of incoming octets buffered. The value + of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 13 } + + slapmSubcomponentTcpReXmts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of retransmissions. The value + of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 14 } + + slapmSubcomponentTcpRoundTripTime OBJECT-TYPE + SYNTAX Integer32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time that has elapsed, measured in + milliseconds, from when the last TCP segment was + transmitted by the TCP Stack until the ACK was + received. + + The value of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 15 } + + slapmSubcomponentTcpRoundTripVariance OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Round trip time variance. + + The value of this object is zero when the entry is not + for a TCP connection." + ::= { slapmSubcomponentEntry 16 } + + slapmSubcomponentInPdus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of protocol related data units transferred + inbound: + + slapmSubcomponentProtocol PDU Type + + udpListener(1) UDP datagrams + tcpConnection(2) TCP segments" + ::= { slapmSubcomponentEntry 17 } + + slapmSubcomponentOutPdus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of protocol related data units transferred + outbound: + + slapmSubcomponentProtocol PDU Type + + udpListener(1) UDP datagrams + tcpConnection(2) TCP segments" + ::= { slapmSubcomponentEntry 18 } + + slapmSubcomponentApplName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The application name associated with this entry if known, + otherwise a zero-length octet string is returned as the + value of this object." + ::= { slapmSubcomponentEntry 19 } + + slapmSubcomponentMonitorStatus OBJECT-TYPE + SYNTAX SlapmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates when a monitored + value has exceeded a threshold or isn't meeting the + defined service level. Only the following SlapmStatus + BITS setting can be reported here: + + monitorMinInRateNotAchieved(5), + monitorMaxInRateExceeded(6), + monitorMaxDelayExceeded(7), + monitorMinOutRateNotAchieved(8), + monitorMaxOutRateExceeded(9) + + This object only has meaning when an corresponding + slapmPolicyMonitorEntry exists with the + slapmPolicyMonitorControl BITS setting + monitorSubcomponents(5) enabled." + ::= { slapmSubcomponentEntry 20 } + + slapmSubcomponentMonitorIntTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for when the last interval ended. + + This object only has meaning when an corresponding + slapmPRMonEntry (or old slapmPolicyMonitorEntry) + exists with the slapmPRMonControl (or + slapmPolicyMonitorControl) BITS setting + monitorSubcomponents(5) enabled. All of the + octets returned when monitoring is not in effect + must be zero." + DEFVAL { '0000000000000000'H } + ::= { slapmSubcomponentEntry 21 } + + slapmSubcomponentMonitorCurrentInRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Using the value of the corresponding + slapmPRMonInterval (or slapmPolicyMonitorInterval), + slapmSubcomponentStatsInOctets + is divided by slapmSubcomponentMonitorInterval to determine + the current in transfer rate. + + This object only has meaning when an corresponding + slapmPRMonEntry (or slapmPolicyMonitorEntry) + exists with the slapmPRMonControl (or + slapmPolicyMonitorControl) BITS setting + monitorSubcomponents(5) enabled. The value of this + object is zero when monitoring is not in effect." + ::= { slapmSubcomponentEntry 22 } + + slapmSubcomponentMonitorCurrentOutRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Using the value of the corresponding slapmPRMonInterval (or + slapmPolicyMonitorInterva)l, slapmSubcomponentStatsOutOctets + is divided by slapmPRMonInterval (or + slapmPolicyMonitorInterval) to determine the + current out transfer rate. + + This object only has meaning when an corresponding + slapmPRMonEntry (or slapmPolicyMonitorEntry) exists with + the slapmPRMonControl (or slapmPolicyMonitorControl) + BITS setting monitorSubcomponents(5) enabled. The value + of this object is zero when monitoring is not in effect." + ::= { slapmSubcomponentEntry 23 } + + slapmSubcomponentPolicyRuleIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Points to an slapmPolicyNameEntry when combined with + slapmSubcomponentSystemAddress to indicate the + policy naming that relates to this entry. + + A value of 0 for this object MUST be returned when + the corresponding slapmSubcomponentEntry has no + policy rule associated with it." + ::= { slapmSubcomponentEntry 24 } + + -- Table that maps an unsigned integer index to whatever + -- names a policy rule. + + slapmPolicyNameTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPolicyNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides the mapping between a policy index as a + unsigned 32 bit integer and the unique name associated + with a policy rule." + ::= { slapmTableObjects 4 } + + slapmPolicyNameEntry OBJECT-TYPE + SYNTAX SlapmPolicyNameEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the slapmPolicyNameTable." + INDEX { + slapmPolicyNameSystemAddress, + slapmPolicyNameIndex + } + ::= { slapmPolicyNameTable 1 } + + SlapmPolicyNameEntry ::= + SEQUENCE { + slapmPolicyNameSystemAddress OCTET STRING, + slapmPolicyNameIndex Unsigned32, + slapmPolicyNameOfRule SlapmPolicyRuleName + } + + slapmPolicyNameSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Address of a system that an Policy rule definition relates + to. A zero length octet string must be used to indicate + that only a single system is being represented. + Otherwise, the length of the octet string must be + 4 for an ipv4 address or 16 for an ipv6 address." + ::= { slapmPolicyNameEntry 1 } + + slapmPolicyNameIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally arbitrary, but unique identifier associated + with this table entry. This value is not expected to + remain constant across reIPLs." + ::= { slapmPolicyNameEntry 2 } + + slapmPolicyNameOfRule OBJECT-TYPE + SYNTAX SlapmPolicyRuleName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unique name that identifies a policy rule definition." + ::= { slapmPolicyNameEntry 3 } + + -- Sla Performance Monitoring Policy Rule Statistics Table + + slapmPolicyRuleStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPolicyRuleStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides statistics on a per system and a per policy + rule basis." + ::= { slapmTableObjects 5 } + + slapmPolicyRuleStatsEntry OBJECT-TYPE + SYNTAX SlapmPolicyRuleStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the slapmPolicyRuleStatsTable. + This table defines a set of statistics that is kept + on a per system and per policy rule basis. + + Entries in this table are not created or deleted via SNMP + but reflect the set of policy rule definitions known + at a system." + INDEX { + slapmPolicyNameSystemAddress, + slapmPolicyNameIndex + } + ::= { slapmPolicyRuleStatsTable 1 } + + SlapmPolicyRuleStatsEntry ::= + SEQUENCE { + slapmPolicyRuleStatsOperStatus INTEGER, + slapmPolicyRuleStatsActiveConns Gauge32, + slapmPolicyRuleStatsTotalConns Counter32, + slapmPolicyRuleStatsLActivated DateAndTime, + slapmPolicyRuleStatsLastMapping DateAndTime, + slapmPolicyRuleStatsInOctets Counter32, + slapmPolicyRuleStatsOutOctets Counter32, + slapmPolicyRuleStatsConnLimit Unsigned32, + slapmPolicyRuleStatsCountAccepts Counter32, + slapmPolicyRuleStatsCountDenies Counter32, + slapmPolicyRuleStatsInDiscards Counter32, + slapmPolicyRuleStatsOutDiscards Counter32, + slapmPolicyRuleStatsInPackets Counter32, + slapmPolicyRuleStatsOutPackets Counter32, + slapmPolicyRuleStatsInProOctets Counter32, + slapmPolicyRuleStatsOutProOctets Counter32, + slapmPolicyRuleStatsMinRate Unsigned32, + slapmPolicyRuleStatsMaxRate Unsigned32, + slapmPolicyRuleStatsMaxDelay Unsigned32, + slapmPolicyRuleStatsTotalRsvpFlows Counter32, + slapmPolicyRuleStatsActRsvpFlows Gauge32 + } + + slapmPolicyRuleStatsOperStatus OBJECT-TYPE + SYNTAX INTEGER { + inactive(1), + active(2), + deleteNeeded(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of a policy entry: + + inactive(1) - An policy entry was either defined + by local system definition or + discovered via + a directory search but has not been + activated (not currently being used). + active(2) - Policy entry is being used to affect + traffic flows. + deleteNeeded(3) - Either though local implementation + dependent methods or by discovering + that the directory entry corresponding + to this table entry no longer + exists and slapmPolicyPurgeTime needs + to expire before attempting to remove + the corresponding slapmPolicyStatsEntry + and any dependent slapmPolicyMonitor + table entries. + Note: a policy rule in a state other than + active(2) is not being used to affect traffic flows." + ::= { slapmPolicyRuleStatsEntry 1 } + + slapmPolicyRuleStatsActiveConns OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of active TCP connections that are + affected by the corresponding policy entry." + ::= { slapmPolicyRuleStatsEntry 2 } + + slapmPolicyRuleStatsTotalConns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of total TCP connections that are + affected by the corresponding policy entry." + ::= { slapmPolicyRuleStatsEntry 3 } + + slapmPolicyRuleStatsLActivated OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for when the corresponding policy entry + was last activated. The value of this object serves as + the discontinuity event indicator when polling entries + in this table. The value of this object is updated on + transition of slapmPolicyRuleStatsOperStatus into the + active(2) state." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyRuleStatsEntry 4 } + + slapmPolicyRuleStatsLastMapping OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for when the last time + that the associated policy entry was used." + DEFVAL { '0000000000000000'H } + ::= { slapmPolicyRuleStatsEntry 5 } + + slapmPolicyRuleStatsInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that was received by IP for an + entity that map to this entry." + ::= { slapmPolicyRuleStatsEntry 6 } + + slapmPolicyRuleStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that was transmitted by IP for an + entity that map to this entry." + ::= { slapmPolicyRuleStatsEntry 7 } + + slapmPolicyRuleStatsConnLimit OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The limit for the number of active TCP connections that + are allowed for this policy definition. A value of zero + for this object implies that a connection limit has not + been specified." + ::= { slapmPolicyRuleStatsEntry 8 } + + slapmPolicyRuleStatsCountAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a policy action's + Permission value is set to Accept and a session + (TCP connection) is accepted." + ::= { slapmPolicyRuleStatsEntry 9 } + + slapmPolicyRuleStatsCountDenies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a policy action's + Permission value is set to Deny and a session is denied, + or when a session (TCP connection) is rejected due to a + policy's connection limit (slapmPolicyRuleStatsConnectLimit) + being reached." + ::= { slapmPolicyRuleStatsEntry 10 } + + slapmPolicyRuleStatsInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of in octets discarded. + This occurs when an error is detected. Examples of this + are buffer overflow, checksum error, or bad packet + format." + ::= { slapmPolicyRuleStatsEntry 11 } + + slapmPolicyRuleStatsOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of out octets discarded. + Examples of this are buffer overflow, checksum error, or + bad packet format." + ::= { slapmPolicyRuleStatsEntry 12 } + + slapmPolicyRuleStatsInPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of in packets received + that relate to this policy entry from IP." + ::= { slapmPolicyRuleStatsEntry 13 } + + slapmPolicyRuleStatsOutPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of out packets sent + by IP that relate to this policy entry." + ::= { slapmPolicyRuleStatsEntry 14 } + + slapmPolicyRuleStatsInProOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of in octets that are + determined to be within profile." + ::= { slapmPolicyRuleStatsEntry 15 } + + slapmPolicyRuleStatsOutProOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter counts the number of out octets that are + determined to be within profile." + ::= { slapmPolicyRuleStatsEntry 16 } + + slapmPolicyRuleStatsMinRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum transfer rate defined for this entry." + ::= { slapmPolicyRuleStatsEntry 17 } + + slapmPolicyRuleStatsMaxRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum transfer rate defined for this entry." + ::= { slapmPolicyRuleStatsEntry 18 } + + slapmPolicyRuleStatsMaxDelay OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum delay defined for this entry." + ::= { slapmPolicyRuleStatsEntry 19 } + + slapmPolicyRuleStatsTotalRsvpFlows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total number of RSVP flows that have be activated." + ::= { slapmPolicyRuleStatsEntry 20 } + + slapmPolicyRuleStatsActRsvpFlows OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Current number of active RSVP flows." + ::= { slapmPolicyRuleStatsEntry 21 } + + -- SLA Performance Monitoring Policy Rule Monitor Table + + slapmPRMonTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlapmPRMonEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides a method of monitoring policies and their + effect at a system." + ::= { slapmTableObjects 6 } + + slapmPRMonEntry OBJECT-TYPE + SYNTAX SlapmPRMonEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an entry in the slapmPRMonTable. This + table defines which policies should be monitored on a + per policy rule basis. + + An attempt to set any read-create object defined within an + slapmPRMonEntry while the value of slapmPRMonRowStatus is + active(1) will result in an inconsistentValue error." + INDEX { + slapmPRMonOwnerIndex, + slapmPRMonSystemAddress, + slapmPRMonIndex + } + ::= { slapmPRMonTable 1 } + + SlapmPRMonEntry ::= + SEQUENCE { + slapmPRMonOwnerIndex SnmpAdminString, + slapmPRMonSystemAddress OCTET STRING, + slapmPRMonIndex Unsigned32, + slapmPRMonControl BITS, + slapmPRMonStatus SlapmStatus, + slapmPRMonInterval Unsigned32, + slapmPRMonIntTime DateAndTime, + slapmPRMonCurrentInRate Gauge32, + slapmPRMonCurrentOutRate Gauge32, + slapmPRMonMinRateLow Unsigned32, + slapmPRMonMinRateHigh Unsigned32, + slapmPRMonMaxRateHigh Unsigned32, + slapmPRMonMaxRateLow Unsigned32, + slapmPRMonMaxDelayHigh Unsigned32, + slapmPRMonMaxDelayLow Unsigned32, + slapmPRMonMinInRateNotAchieves Counter32, + slapmPRMonMaxInRateExceeds Counter32, + slapmPRMonMaxDelayExceeds Counter32, + slapmPRMonMinOutRateNotAchieves Counter32, + slapmPRMonMaxOutRateExceeds Counter32, + slapmPRMonCurrentDelayRate Gauge32, + slapmPRMonRowStatus RowStatus + } + + slapmPRMonOwnerIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "To facilitate the provisioning of access control by a + security administrator using the View-Based Access + Control Model (RFC 2575, VACM) for tables in which + multiple users may need to independently create or modify + entries, the initial index is used as an 'owner index'. + Such an initial index has a syntax of SnmpAdminString, + and can thus be trivially mapped to a securityName or + groupName as defined in VACM, in accordance with a + security policy. + + All entries in that table belonging to a particular user + will have the same value for this initial index. For a + given user's entries in a particular table, the object + identifiers for the information in these entries will + have the same subidentifiers (except for the 'column' + subidentifier) up to the end of the encoded owner index. + To configure VACM to permit access to this portion of the + table, one would create vacmViewTreeFamilyTable entries + with the value of vacmViewTreeFamilySubtree including the + owner index portion, and vacmViewTreeFamilyMask + 'wildcarding' the column subidentifier. More elaborate + configurations are possible." + ::= { slapmPRMonEntry 1 } + + slapmPRMonSystemAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 4 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Address of a system that an Policy definition relates to. + A zero length octet string can be used to indicate that + only a single system is being represented. + Otherwise, the length of the octet string should be + 4 for an ipv4 address and 16 for an ipv6 address." + ::= { slapmPRMonEntry 2 } + + slapmPRMonIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An slapmPolicyNameTable index, slapmPolicyNameIndex, + that points to the unique name associated with a + policy rule definition." + ::= { slapmPRMonEntry 3 } + + slapmPRMonControl OBJECT-TYPE + SYNTAX BITS { + monitorMinRate(0), + monitorMaxRate(1), + monitorMaxDelay(2), + enableAggregateTraps(3), + enableSubcomponentTraps(4), + monitorSubcomponents(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object determines the type and level + of monitoring that is applied to a policy rule. The + value of this object can't be changed once the table + entry that it is a part of is activated via a + slapmPRMonRowStatus transition to active state. + + monitorMinRate(0) - Monitor minimum transfer rate. + monitorMaxRate(1) - Monitor maximum transfer rate. + monitorMaxDelay(2) - Monitor maximum delay. + enableAggregateTraps(3) - The enableAggregateTraps(3) + BITS setting enables notification generation + when monitoring a policy rule as an + aggregate using the values in the corresponding + slapmPRMonStatsEntry. By default this function + is not enabled. + enableSubcomponentTraps(4) - This BITS setting enables + notification generation when monitoring all + subcomponents that are mapped to an corresponding + slapmPRMonStatsEntry. By default this + function is not enabled. + monitorSubcomponents(5) - This BITS setting enables + monitoring of each subcomponent (typically a + TCP connection or UDP listener) individually." + DEFVAL { { monitorMinRate, monitorMaxRate, + monitorMaxDelay } } + ::= { slapmPRMonEntry 4 } + + slapmPRMonStatus OBJECT-TYPE + SYNTAX SlapmStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates when a monitored + value has not meet a threshold or isn't meeting the + defined service level. The SlapmStatus TEXTUAL-CONVENTION + defines two levels of not meeting a threshold. The first + set: + slaMinInRateNotAchieved(0), + slaMaxInRateExceeded(1), + slaMaxDelayExceeded(2), + slaMinOutRateNotAchieved(3), + slaMaxOutRateExceeded(4) + + are used to indicate when the SLA as an aggregate is + not meeting a threshold while the second set: + + monitorMinInRateNotAchieved(5), + monitorMaxInRateExceeded(6), + monitorMaxDelayExceeded(7), + monitorMinOutRateNotAchieved(8), + monitorMaxOutRateExceeded(9) + + indicate that at least one subcomponent is not meeting + a threshold." + ::= { slapmPRMonEntry 5 } + + slapmPRMonInterval OBJECT-TYPE + SYNTAX Unsigned32 (15..86400) -- 15 second min, 24 hour max + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that defines the sample period." + DEFVAL {20} -- 20 seconds + ::= { slapmPRMonEntry 6 } + + slapmPRMonIntTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp for when the last interval ended." + DEFVAL { '0000000000000000'H } + ::= { slapmPRMonEntry 7 } + + slapmPRMonCurrentInRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Using the value of the corresponding + slapmPRMonInterval, slapmPolicyRuleStatsInOctets + is sampled and then divided by slapmPRMonInterval + to determine the current in transfer rate." + ::= { slapmPRMonEntry 8 } + + slapmPRMonCurrentOutRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kilobits per second" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Using the value of the corresponding + slapmPolicyMonInterval, slapmPolicyRuleStatsOutOctets + is sampled and then divided by slapmPRMonInterval + to determine the current out transfer rate." + ::= { slapmPRMonEntry 9 } + + slapmPRMonMinRateLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a + slapmPolicyRuleMonNotOkay notification, signalling + that a monitored minimum transfer rate has not been meet. + A slapmPolicyRuleMonNotOkay notification is not + generated again for an slapmPRMonEntry until + the minimum transfer rate + exceeds slapmPRMonMinRateHigh (a + slapmPolicyRuleMonOkay notification is then transmitted) + and then fails below slapmPRMonMinRateLow. This + behavior reduces the slapmPolicyRuleMonNotOkay + notifications that are transmitted. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMinRate(0) is not + enabled. When enabled the default value for this object + is the min rate value specified in the associated + action definition minus 10%. If the action definition + doesn't have a min rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMinRate(0) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 10 } + + slapmPRMonMinRateHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a slapmPolicyRuleMonOkay + notification, signalling that a monitored minimum + transfer rate has increased to an acceptable level. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMinRate(0) is not + enabled. When enabled the default value for this object + is the min rate value specified in the associated + action definition plus 10%. If the action definition + doesn't have a min rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMinRate(0) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 11 } + + slapmPRMonMaxRateHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a + slapmPolicyRuleMonNotOkay notification, signalling + that a monitored maximum transfer rate has been exceeded. + + A slapmPolicyRuleNotOkay notification is not + generated again for an slapmPRMonEntry until the + maximum transfer rate fails below + slapmPRMonMaxRateLow (a slapmPolicyRuleMonOkay + notification is then transmitted) and then raises above + slapmPRMonMaxRateHigh. This behavior reduces the + slapmPolicyRuleMonNotOkay notifications that are + transmitted. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMaxRate(1) is not + enabled. When enabled the default value for this object + is the max rate value specified in the associated + action definition plus 10%. If the action definition + doesn't have a max rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxRate(1) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 12 } + + slapmPRMonMaxRateLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a slapmPolicyRuleMonOkay + notification, signalling that a monitored maximum + transfer rate has fallen to an acceptable level. + A value of zero for this object is returned when the + slapmPRMonControl monitorMaxRate(1) is not + enabled. When enabled the default value for this object + is the max rate value specified in the associated + action definition minus 10%. If the action definition + doesn't have a max rate defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxRate(1) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected in + order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 13 } + + slapmPRMonMaxDelayHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a + slapmPolicyRuleMonNotOkay notification, signalling + that a monitored maximum delay rate has been exceeded. + + A slapmPolicyRuleMonNotOkay notification is not + generated again for an slapmPRMonEntry until + the maximum delay rate falls below + slapmPRMonMaxDelayLow (a slapmPolicyRuleMonOkay + notification is then transmitted) and raises above + slapmPRMonMaxDelayHigh. This behavior reduces + the slapmPolicyRuleMonNotOkay notifications that are + transmitted. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMaxDelay(4) is not + enabled. When enabled the default value for this object + is the max delay value specified in the associated + action definition plus 10%. If the action definition + doesn't have a max delay defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxDelay(4) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 14 } + + slapmPRMonMaxDelayLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a slapmPolicyRuleMonOkay + notification, signalling that a monitored maximum delay + rate has fallen to an acceptable level. + + A value of zero for this object is returned when the + slapmPRMonControl monitorMaxDelay(4) is not + enabled. When enabled the default value for this object + is the max delay value specified in the associated + action definition minus 10%. If the action definition + doesn't have a max delay defined then there is no + default for this object and a value MUST be specified + prior to activating this entry when monitorMaxDelay(4) + is selected. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be selected + in order for any notification relating to this entry to + potentially be generated." + ::= { slapmPRMonEntry 15 } + + slapmPRMonMinInRateNotAchieves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a minimum transfer in rate + was not achieved." + ::= { slapmPRMonEntry 16 } + + slapmPRMonMaxInRateExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a maximum transfer in rate + was exceeded." + ::= { slapmPRMonEntry 17 } + + slapmPRMonMaxDelayExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a maximum delay in rate + was exceeded." + ::= { slapmPRMonEntry 18 } + + slapmPRMonMinOutRateNotAchieves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a minimum transfer out rate + was not achieved." + ::= { slapmPRMonEntry 19 } + + slapmPRMonMaxOutRateExceeds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that a maximum transfer out rate + was exceeded." + ::= { slapmPRMonEntry 20 } + + slapmPRMonCurrentDelayRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current delay rate for this entry. This is + calculated by taking the average of the TCP + round trip times for all associating + slapmSubcomponentTable entries within a interval." + ::= { slapmPRMonEntry 21 } + + slapmPRMonRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the slapmPRMonTable. An entry in this table + is deleted by setting this object to destroy(6). + + Removal of an corresponding (same policy index) + slapmPolicyRuleStatsEntry has the side effect of the + automatic deletion an entry in this table. + + Note that an attempt to set any read-create object + defined within an slapmPRMonEntry while the value + of slapmPRMonRowStatus is active(1) will result in + an inconsistentValue error." + ::= { slapmPRMonEntry 22 } + + -- Notifications + + slapmMonitoredEventNotAchieved NOTIFICATION-TYPE + OBJECTS { + slapmPolicyMonitorIntTime, + slapmPolicyMonitorControl, + slapmPolicyMonitorStatus, + slapmPolicyMonitorStatus, + slapmPolicyMonitorCurrentInRate, + slapmPolicyMonitorCurrentOutRate, + slapmPolicyMonitorCurrentDelayRate + } + STATUS deprecated + DESCRIPTION + "This notification is generated when an monitored event + is not achieved with respect to threshold. This + applies only towards monitoring a policy traffic + profile as an aggregate via an associating + slapmPolicyStatsEntry. The value + of slapmPolicyMonitorControl can be examined to + determine what is being monitored. The first + slapmPolicyMonitorStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be + selected in order for this notification to + potentially be generated." + ::= { slapmNotifications 1 } + + slapmMonitoredEventOkay NOTIFICATION-TYPE + OBJECTS { + slapmPolicyMonitorIntTime, + slapmPolicyMonitorControl, + slapmPolicyMonitorStatus, + slapmPolicyMonitorStatus, + slapmPolicyMonitorCurrentInRate, + slapmPolicyMonitorCurrentOutRate, + slapmPolicyMonitorCurrentDelayRate + } + STATUS deprecated + DESCRIPTION + "This notification is generated when a monitored + event has improved to an acceptable level. This + applies only towards monitoring a policy traffic + profile as an aggregate via an associating + slapmPolicyStatsEntry. The value + of slapmPolicyMonitorControl can be examined to + determine what is being monitored. The first + slapmPolicyMonitorStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableAggregateTraps(3), MUST be + selected in order for this notification to + potentially be generated." + ::= { slapmNotifications 2 } + + slapmPolicyProfileDeleted NOTIFICATION-TYPE + OBJECTS { + slapmPolicyStatsActiveConns, + slapmPolicyStatsTotalConns, + slapmPolicyStatsFirstActivated, + slapmPolicyStatsLastMapping, + slapmPolicyStatsInOctets, + slapmPolicyStatsOutOctets, + slapmPolicyStatsConnectionLimit, + slapmPolicyStatsCountAccepts, + slapmPolicyStatsCountDenies, + slapmPolicyStatsInDiscards, + slapmPolicyStatsOutDiscards, + slapmPolicyStatsInPackets, + slapmPolicyStatsOutPackets, + slapmPolicyStatsInProfileOctets, + slapmPolicyStatsOutProfileOctets, + slapmPolicyStatsMinRate, + slapmPolicyStatsMaxRate, + slapmPolicyStatsMaxDelay + } + STATUS deprecated + DESCRIPTION + "A slapmPolicyDeleted notification is sent when a + slapmPolicyStatsEntry is deleted if the value of + slapmPolicyTrapEnable is enabled(1)." + ::= { slapmNotifications 3 } + + slapmPolicyMonitorDeleted NOTIFICATION-TYPE + OBJECTS { + slapmPolicyMonitorStatus, + slapmPolicyMonitorInterval, + slapmPolicyMonitorIntTime, + slapmPolicyMonitorCurrentInRate, + slapmPolicyMonitorCurrentOutRate, + slapmPolicyMonitorCurrentDelayRate, + slapmPolicyMonitorMinRateLow, + slapmPolicyMonitorMinRateHigh, + slapmPolicyMonitorMaxRateHigh, + slapmPolicyMonitorMaxRateLow, + slapmPolicyMonitorMaxDelayHigh, + slapmPolicyMonitorMaxDelayLow, + slapmPolicyMonitorMinInRateNotAchieves, + slapmPolicyMonitorMaxInRateExceeds, + slapmPolicyMonitorMaxDelayExceeds, + slapmPolicyMonitorMinOutRateNotAchieves, + slapmPolicyMonitorMaxOutRateExceeds + } + STATUS deprecated + DESCRIPTION + "A slapmPolicyMonitorDeleted notification is sent when a + slapmPolicyMonitorEntry is deleted if the value of + slapmPolicyTrapEnable is enabled(1)." + ::= { slapmNotifications 4 } + + slapmSubcomponentMonitoredEventNotAchieved NOTIFICATION-TYPE + OBJECTS { + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyName, + slapmSubcomponentTrafficProfileName, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentTcpRoundTripTime + } + STATUS deprecated + DESCRIPTION + "This notification is generated when a monitored value + does not achieved a threshold specification. This + applies only towards monitoring the individual components + of a policy traffic profile. The value of the + corresponding slapmPolicyMonitorControl can be examined + to determine what is being monitored. The first + slapmSubcomponentMonitorStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableSubcomponentTraps(4), MUST be selected + in order for this notification to potentially be generated." + ::= { slapmNotifications 5 } + + slapmSubcomponentMonitoredEventOkay NOTIFICATION-TYPE + OBJECTS { + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyName, + slapmSubcomponentTrafficProfileName, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentTcpRoundTripTime + } + STATUS deprecated + DESCRIPTION + "This notification is generated when a monitored value + has reached an acceptable level. + + Note: The corresponding slapmPolicyMonitorControl + BITS setting, enableSubcomponentTraps(3), MUST be + selected in order for this notification to potentially + be generated." + ::= { slapmNotifications 6 } + + slapmPolicyRuleMonNotOkay NOTIFICATION-TYPE + OBJECTS { + slapmPRMonIntTime, + slapmPRMonControl, + slapmPRMonStatus, + slapmPRMonStatus, + slapmPRMonCurrentInRate, + slapmPRMonCurrentOutRate, + slapmPRMonCurrentDelayRate + } + STATUS current + DESCRIPTION + "This notification is generated when an monitored event + is not achieved with respect to a threshold. This + applies only towards monitoring a policy rule + as an aggregate via an associating + slapmPolicyRuleStatsEntry. The value + of slapmPRMonControl can be examined to + determine what is being monitored. The first + slapmPRMonStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be + selected in order for this notification to + potentially be generated." + ::= { slapmNotifications 7 } + + slapmPolicyRuleMonOkay NOTIFICATION-TYPE + OBJECTS { + slapmPRMonIntTime, + slapmPRMonControl, + slapmPRMonStatus, + slapmPRMonStatus, + slapmPRMonCurrentInRate, + slapmPRMonCurrentOutRate, + slapmPRMonCurrentDelayRate + } + STATUS current + DESCRIPTION + "This notification is generated when a monitored + event has improved to an acceptable level. This + applies only towards monitoring a policy rule + as an aggregate via an associating + slapmPolicyRuleStatsEntry. The value + of slapmPRMonControl can be examined to + determine what is being monitored. The first + slapmPRMonStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPRMonControl + BITS setting, enableAggregateTraps(3), MUST be + selected in order for this notification to + potentially be generated." + ::= { slapmNotifications 8 } + + slapmPolicyRuleDeleted NOTIFICATION-TYPE + OBJECTS { + slapmPolicyRuleStatsActiveConns, + slapmPolicyRuleStatsTotalConns, + slapmPolicyRuleStatsLActivated, + slapmPolicyRuleStatsLastMapping, + slapmPolicyRuleStatsInOctets, + slapmPolicyRuleStatsOutOctets, + slapmPolicyRuleStatsConnLimit, + slapmPolicyRuleStatsCountAccepts, + slapmPolicyRuleStatsCountDenies, + slapmPolicyRuleStatsInDiscards, + slapmPolicyRuleStatsOutDiscards, + slapmPolicyRuleStatsInPackets, + slapmPolicyRuleStatsOutPackets, + slapmPolicyRuleStatsInProOctets, + slapmPolicyRuleStatsOutProOctets, + slapmPolicyRuleStatsMinRate, + slapmPolicyRuleStatsMaxRate, + slapmPolicyRuleStatsMaxDelay, + slapmPolicyRuleStatsTotalRsvpFlows, + slapmPolicyRuleStatsActRsvpFlows + } + STATUS current + DESCRIPTION + "A slapmPolicyRuleDeleted notification is sent when a + slapmPolicyRuleStatsEntry is deleted if the value of + slapmPolicyTrapEnable is enabled(1)." + ::= { slapmNotifications 9 } + + slapmPolicyRuleMonDeleted NOTIFICATION-TYPE + OBJECTS { + slapmPRMonControl, + slapmPRMonStatus, + slapmPRMonInterval, + slapmPRMonIntTime, + slapmPRMonCurrentInRate, + slapmPRMonCurrentOutRate, + slapmPRMonCurrentDelayRate, + slapmPRMonMinRateLow, + slapmPRMonMinRateHigh, + slapmPRMonMaxRateHigh, + slapmPRMonMaxRateLow, + slapmPRMonMaxDelayHigh, + slapmPRMonMaxDelayLow, + slapmPRMonMinInRateNotAchieves, + slapmPRMonMaxInRateExceeds, + slapmPRMonMaxDelayExceeds, + slapmPRMonMinOutRateNotAchieves, + slapmPRMonMaxOutRateExceeds + } + STATUS current + DESCRIPTION + "A slapmPolicyRuleMonDeleted notification is sent when a + slapmPRMonEntry is deleted if the value of + slapmPolicyTrapEnable is enabled(1)." + ::= { slapmNotifications 10 } + + slapmSubcMonitorNotOkay NOTIFICATION-TYPE + OBJECTS { + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyRuleIndex, + slapmPRMonControl, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentTcpRoundTripTime + } + STATUS current + DESCRIPTION + "This notification is generated when a monitored value + does not achieved a threshold specification. This + applies only towards monitoring the individual components + of a policy rule. The value of the + corresponding slapmPRMonControl can be examined + to determine what is being monitored. The first + slapmSubcomponentMonitorStatus value supplies the current + monitor status while the 2nd value supplies the + previous status. + + Note: The corresponding slapmPRMonControl + BITS setting, enableSubcomponentTraps(4), MUST be selected + in order for this notification to potentially be generated." + ::= { slapmNotifications 11 } + + slapmSubcMonitorOkay NOTIFICATION-TYPE + OBJECTS { + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyRuleIndex, + slapmPRMonControl, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentTcpRoundTripTime + } + + STATUS current + DESCRIPTION + "This notification is generated when a monitored value + has reached an acceptable level. + + Note: The corresponding slapmPRMonControl + BITS setting, enableSubcomponentTraps(3), MUST be + selected in order for this notification to potentially + be generated." + ::= { slapmNotifications 12 } + + -- Conformance information + -- Compliance statements + + slapmCompliances OBJECT IDENTIFIER ::= { slapmConformance 1 } + slapmGroups OBJECT IDENTIFIER ::= { slapmConformance 2 } + + -- Compliance statements + + slapmCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SLAPM-MIB." + MODULE -- this module + MANDATORY-GROUPS { + slapmBaseGroup2, + slapmNotGroup2 + } + GROUP slapmEndSystemGroup2 + DESCRIPTION + "The contents of this group is required by end-system + implementations." + GROUP slapmEndSystemNotGroup2 + DESCRIPTION + "The contents of this group is required by end-system + implementations." + GROUP slapmBaseGroup + DESCRIPTION + "The contents of this group has been deprecated in favor + of the new slapmBaseGroup2. Older implementations of this + MIB would continue its support of the contents of this + group." + GROUP slapmNotGroup + DESCRIPTION + "The contents of this group has been deprecated in favor + of the new slapmNotGroup2. Older implementations of this + MIB would continue its support of the contents of + this group." + GROUP slapmOptionalGroup + DESCRIPTION + "The contents of this group has been deprecated." + GROUP slapmEndSystemGroup + DESCRIPTION + "The contents of this group has been deprecated in favor + of the new slapmEndSystemGroup2. Older implementations + of this MIB would continue its support of the + contents of this group." + GROUP slapmEndSystemNotGroup + DESCRIPTION + "The contents of this group has been deprecated in favor + of the new slapmEndSystemNotGroup2. Older + implementations of this MIB would continue its support + of the contents of this group." + ::= { slapmCompliances 1 } + + -- MIB groupings + + slapmBaseGroup OBJECT-GROUP + OBJECTS { + slapmSpinLock, + slapmPolicyCountQueries, + slapmPolicyCountAccesses, + slapmPolicyCountSuccessAccesses, + slapmPolicyCountNotFounds, + slapmPolicyPurgeTime, + slapmPolicyTrapEnable, + slapmPolicyStatsOperStatus, + slapmPolicyStatsActiveConns, + slapmPolicyStatsFirstActivated, + slapmPolicyStatsLastMapping, + slapmPolicyStatsInOctets, + slapmPolicyStatsOutOctets, + slapmPolicyStatsConnectionLimit, + slapmPolicyStatsTotalConns, + slapmPolicyStatsCountAccepts, + slapmPolicyStatsCountDenies, + slapmPolicyStatsInDiscards, + slapmPolicyStatsOutDiscards, + slapmPolicyStatsInPackets, + slapmPolicyStatsOutPackets, + slapmPolicyStatsMinRate, + slapmPolicyStatsMaxRate, + slapmPolicyStatsMaxDelay, + slapmPolicyMonitorControl, + slapmPolicyMonitorStatus, + slapmPolicyMonitorInterval, + slapmPolicyMonitorIntTime, + slapmPolicyMonitorCurrentInRate, + slapmPolicyMonitorCurrentOutRate, + slapmPolicyMonitorMinRateLow, + slapmPolicyMonitorMinRateHigh, + slapmPolicyMonitorMaxRateHigh, + slapmPolicyMonitorMaxRateLow, + slapmPolicyMonitorMaxDelayHigh, + slapmPolicyMonitorMaxDelayLow, + slapmPolicyMonitorMinInRateNotAchieves, + slapmPolicyMonitorMaxInRateExceeds, + slapmPolicyMonitorMaxDelayExceeds, + slapmPolicyMonitorMinOutRateNotAchieves, + slapmPolicyMonitorMaxOutRateExceeds, + slapmPolicyMonitorCurrentDelayRate, + slapmPolicyMonitorRowStatus + } + STATUS deprecated + DESCRIPTION + "The group of objects defined by this MIB that are + required for all implementations to be compliant." + ::= { slapmGroups 1 } + + slapmOptionalGroup OBJECT-GROUP + OBJECTS { + slapmPolicyStatsInProfileOctets, + slapmPolicyStatsOutProfileOctets + } + STATUS deprecated + DESCRIPTION + "The group of objects defined by this MIB that are + optional." + ::= { slapmGroups 2 } + + slapmEndSystemGroup OBJECT-GROUP + OBJECTS { + slapmPolicyTrapFilter, + slapmSubcomponentProtocol, + slapmSubcomponentSystemAddress, + slapmSubcomponentPolicyName, + slapmSubcomponentTrafficProfileName, + slapmSubcomponentLastActivity, + slapmSubcomponentInOctets, + slapmSubcomponentOutOctets, + slapmSubcomponentTcpOutBufferedOctets, + slapmSubcomponentTcpInBufferedOctets, + slapmSubcomponentTcpReXmts, + slapmSubcomponentTcpRoundTripTime, + slapmSubcomponentTcpRoundTripVariance, + slapmSubcomponentInPdus, + slapmSubcomponentOutPdus, + slapmSubcomponentApplName, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentMonitorCurrentInRate + } + STATUS deprecated + DESCRIPTION + "The group of objects defined by this MIB that are + required for end system implementations." + ::= { slapmGroups 3 } + + slapmNotGroup NOTIFICATION-GROUP + NOTIFICATIONS { + slapmMonitoredEventNotAchieved, + slapmMonitoredEventOkay, + slapmPolicyProfileDeleted, + slapmPolicyMonitorDeleted + } + STATUS deprecated + DESCRIPTION + "The group of notifications defined by this MIB that MUST + be implemented." + ::= { slapmGroups 4 } + + slapmEndSystemNotGroup NOTIFICATION-GROUP + NOTIFICATIONS { + slapmSubcomponentMonitoredEventNotAchieved, + slapmSubcomponentMonitoredEventOkay + } + STATUS deprecated + DESCRIPTION + "The group of objects defined by this MIB that are + required for end system implementations." + ::= { slapmGroups 5 } + + slapmBaseGroup2 OBJECT-GROUP + OBJECTS { + slapmSpinLock, + slapmPolicyCountQueries, + slapmPolicyCountAccesses, + slapmPolicyCountSuccessAccesses, + slapmPolicyCountNotFounds, + slapmPolicyPurgeTime, + slapmPolicyTrapEnable, + slapmPolicyNameOfRule, + slapmPolicyRuleStatsOperStatus, + slapmPolicyRuleStatsActiveConns, + slapmPolicyRuleStatsTotalConns, + slapmPolicyRuleStatsLActivated, + slapmPolicyRuleStatsLastMapping, + slapmPolicyRuleStatsInOctets, + slapmPolicyRuleStatsOutOctets, + slapmPolicyRuleStatsConnLimit, + slapmPolicyRuleStatsCountAccepts, + slapmPolicyRuleStatsCountDenies, + slapmPolicyRuleStatsInDiscards, + slapmPolicyRuleStatsOutDiscards, + slapmPolicyRuleStatsInPackets, + slapmPolicyRuleStatsOutPackets, + slapmPolicyRuleStatsInProOctets, + slapmPolicyRuleStatsOutProOctets, + slapmPolicyRuleStatsMinRate, + slapmPolicyRuleStatsMaxRate, + slapmPolicyRuleStatsMaxDelay, + slapmPolicyRuleStatsTotalRsvpFlows, + slapmPolicyRuleStatsActRsvpFlows, + slapmPRMonControl, + slapmPRMonStatus, + slapmPRMonInterval, + slapmPRMonIntTime, + slapmPRMonCurrentInRate, + slapmPRMonCurrentOutRate, + slapmPRMonMinRateLow, + slapmPRMonMinRateHigh, + slapmPRMonMaxRateHigh, + slapmPRMonMaxRateLow, + slapmPRMonMaxDelayHigh, + slapmPRMonMaxDelayLow, + slapmPRMonMinInRateNotAchieves, + slapmPRMonMaxInRateExceeds, + slapmPRMonMaxDelayExceeds, + slapmPRMonMinOutRateNotAchieves, + slapmPRMonMaxOutRateExceeds, + slapmPRMonCurrentDelayRate, + slapmPRMonRowStatus + } + STATUS current + DESCRIPTION + "The group of objects defined by this MIB that are + required for all implementations to be compliant." + ::= { slapmGroups 6 } + + slapmEndSystemGroup2 OBJECT-GROUP + OBJECTS { + slapmPolicyTrapFilter, + slapmSubcomponentProtocol, + slapmSubcomponentSystemAddress, + slapmSubcomponentLastActivity, + slapmSubcomponentInOctets, + slapmSubcomponentOutOctets, + slapmSubcomponentTcpOutBufferedOctets, + slapmSubcomponentTcpInBufferedOctets, + slapmSubcomponentTcpReXmts, + slapmSubcomponentTcpRoundTripTime, + slapmSubcomponentTcpRoundTripVariance, + slapmSubcomponentInPdus, + slapmSubcomponentOutPdus, + slapmSubcomponentApplName, + slapmSubcomponentMonitorStatus, + slapmSubcomponentMonitorIntTime, + slapmSubcomponentMonitorCurrentOutRate, + slapmSubcomponentMonitorCurrentInRate, + slapmSubcomponentPolicyRuleIndex + } + STATUS current + DESCRIPTION + "The group of objects defined by this MIB that are + required for end system implementations." + ::= { slapmGroups 7 } + + slapmNotGroup2 NOTIFICATION-GROUP + NOTIFICATIONS { + slapmPolicyRuleMonNotOkay, + slapmPolicyRuleMonOkay, + slapmPolicyRuleDeleted, + slapmPolicyRuleMonDeleted + } + STATUS current + DESCRIPTION + "The group of notifications defined by this MIB that MUST + be implemented." + ::= { slapmGroups 8 } + + slapmEndSystemNotGroup2 NOTIFICATION-GROUP + NOTIFICATIONS { + slapmSubcMonitorNotOkay, + slapmSubcMonitorOkay + } + STATUS current + DESCRIPTION + "The group of objects defined by this MIB that are + required for end system implementations." + ::= { slapmGroups 9 } +END diff --git a/mibs/ietf/SMON-MIB b/mibs/ietf/SMON-MIB new file mode 100644 index 0000000..368a309 --- /dev/null +++ b/mibs/ietf/SMON-MIB @@ -0,0 +1,1262 @@ +SMON-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, + Integer32, Counter64 + FROM SNMPv2-SMI + RowStatus, TEXTUAL-CONVENTION + FROM SNMPv2-TC + rmon, OwnerString + FROM RMON-MIB + LastCreateTime, DataSource, rmonConformance, probeConfig + FROM RMON2-MIB + InterfaceIndex + FROM IF-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + +switchRMON MODULE-IDENTITY + LAST-UPDATED "9812160000Z" + ORGANIZATION "IETF RMON MIB Working Group" + CONTACT-INFO + "IETF RMONMIB WG Mailing list: rmonmib@cisco.com + + Rich Waterman + Allot Networks Inc. + Tel: +1-408-559-0253 + Email: rich@allot.com + + Bill Lahaye + Xylan Corp. + Tel: +1-800-995-2612 + Email: lahaye@ctron.com + + Dan Romascanu + Lucent Technologies + Tel: +972-3-645-8414 + Email: dromasca@lucent.com + + Steven Waldbusser + International Network Services (INS) + Tel: +1-650-318-1251 + Email: waldbusser@ins.com" + + DESCRIPTION + "The MIB module for managing remote monitoring device + implementations for Switched Networks" + + -- revision history + + REVISION "9812160000Z" -- 16 Dec 1998 midemight + DESCRIPTION "Initial Version, published as RFC 2613." + + ::= { rmon 22 } + +smonMIBObjects OBJECT IDENTIFIER ::= { switchRMON 1 } + +dataSourceCaps OBJECT IDENTIFIER ::= {smonMIBObjects 1} +smonStats OBJECT IDENTIFIER ::= {smonMIBObjects 2} +portCopyConfig OBJECT IDENTIFIER ::= {smonMIBObjects 3} +smonRegistrationPoints OBJECT IDENTIFIER ::= {smonMIBObjects 4} + +-- Textual Conventions +-- + +SmonDataSource ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies the source of the data that the associated function + is configured to analyze. This Textual Convention + extends the DataSource Textual Convention defined by RMON 2 + to the following data source types: + + - ifIndex. + DataSources of this traditional form are called 'port-based', + but only if ifType. is not equal to 'propVirtual(53)'. + + - smonVlanDataSource. + A dataSource of this form refers to a 'Packet-based VLAN' + and is called a 'VLAN-based' dataSource. is the VLAN + ID as defined by the IEEE 802.1Q standard [19]. The + value is between 1 and 4094 inclusive, and it represents + an 802.1Q VLAN-ID with global scope within a given + bridged domain, as defined by [19]. + + - entPhysicalEntry. + A dataSource of this form refers to a physical entity within + the agent (e.g. entPhysicalClass = backplane(4)) and is called + an 'entity-based' dataSource." + SYNTAX OBJECT IDENTIFIER + +-- The smonCapabilities object describes SMON agent capabilities. + +smonCapabilities OBJECT-TYPE + SYNTAX BITS { + smonVlanStats(0), + smonPrioStats(1), + dataSource(2), + smonUnusedBit(3), + portCopy(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of the SMON MIB groups supported + by this agent." + ::= { probeConfig 15 } + +-- dataSourceCaps MIB group - defines SMON data source and port +-- copy capabilities for devices supporting SMON. + +-- A NMS application will check this MIB group and retrieve +-- information about the SMON capabilities of the device before +-- applying SMON control operations to the device. + + +-- dataSourceCapsTable: defines capabilities of RMON data sources + +dataSourceCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DataSourceCapsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table describes RMON data sources and port copy + capabilities. An NMS MAY use this table to discover the + identity and attributes of the data sources on a given agent + implementation. Similar to the probeCapabilities object, + actual row-creation operations will succeed or fail based on + the resources available and parameter values used in each + row-creation operation. + + Upon restart of the RMON agent, the dataSourceTable, ifTable, + and perhaps entPhysicalTable are initialized for the available + dataSources. + + For each dataSourceCapsEntry representing a VLAN or + entPhysicalEntry the agent MUST create an associated ifEntry + with a ifType value of 'propVirtual(53)'. This ifEntry will be + used as the actual value in RMON control table dataSource + objects. The assigned ifIndex value is copied into the + associated dataSourceCapsIfIndex object. + + It is understood that dataSources representing VLANs may not + always be instantiated immediately upon restart, but rather as + VLAN usage is detected by the agent. The agent SHOULD attempt + to create dataSource and interface entries for all dataSources + as soon as possible." +::= { dataSourceCaps 1 } + +dataSourceCapsEntry OBJECT-TYPE + SYNTAX DataSourceCapsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries per data source containing descriptions of data + source and port copy capabilities. This table is populated by + the SMON agent with one entry for each supported data + source." +INDEX { IMPLIED dataSourceCapsObject } +::= { dataSourceCapsTable 1 } + +DataSourceCapsEntry ::= SEQUENCE { + dataSourceCapsObject + SmonDataSource, + dataSourceRmonCaps + BITS, + dataSourceCopyCaps + BITS, + dataSourceCapsIfIndex + InterfaceIndex + } + +dataSourceCapsObject OBJECT-TYPE + SYNTAX SmonDataSource + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines an object that can be a SMON data source or a + source or a destination for a port copy operation." + ::= { dataSourceCapsEntry 1 } + +dataSourceRmonCaps OBJECT-TYPE + SYNTAX BITS { + countErrFrames(0), + countAllGoodFrames(1), + countAnyRmonTables(2), + babyGiantsCountAsGood(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + " General attributes of the specified dataSource. Note that + these are static attributes, which SHOULD NOT be adjusted + because of current resources or configuration. + + - countErrFrames(0) + The agent sets this bit for the dataSource if errored frames + received on this dataSource can actually be monitored by the + agent The agent clears this bit if any errored frames are + not visible to the RMON data collector. + + - countAllGoodFrames(1) + The agent sets this bit for the dataSource if all good + frames received on this dataSource can actually be monitored + by the agent. The agent clears this bit if any good frames + are not visible for RMON collection, e.g., the dataSource is + a non-promiscuous interface or an internal switch interface + which may not receive frames which were switched in hardware + or dropped by the bridge forwarding function. + + - countAnyRmonTables(2) + The agent sets this bit if this dataSource can actually be + used in any of the implemented RMON tables, resources + notwithstanding. The agent clears this bit if this + dataSourceCapsEntry is present simply to identify a + dataSource that may only be used as portCopySource and/or a + portCopyDest, but not the source of an actual RMON data + collection. + + - babyGiantsCountAsGood(3) + The agent sets this bit if it can distinguish, for counting + purposes, between true giant frames and frames that exceed + Ethernet maximum frame size 1518 due to VLAN tagging ('baby + giants'). Specifically, this BIT means that frames up to + 1522 octets are counted as good. + + Agents not capable of detecting 'baby giants' will clear + this bit and will view all frames less than or equal to 1518 + octets as 'good frames' and all frames larger than 1518 + octets as 'bad frames' for the purpose of counting in the + smonVlanIdStats and smonPrioStats tables. + + Agents capable of detecting 'baby giants' SHALL consider + them as 'good frames' for the purpose of counting in the + smonVlanIdStats and smonPrioStats tables." + + ::= { dataSourceCapsEntry 2 } + +dataSourceCopyCaps OBJECT-TYPE + SYNTAX BITS { + copySourcePort(0), + copyDestPort(1), + copySrcTxTraffic(2), + copySrcRxTraffic(3), + countDestDropEvents(4), + copyErrFrames(5), + copyUnalteredFrames(6), + copyAllGoodFrames(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "PortCopy function capabilities of the specified dataSource. + Note that these are static capabilities, which SHOULD NOT be + adjusted because of current resources or configuration. + + - copySourcePort(0) + The agent sets this bit if this dataSource is capable of + acting as a source of a portCopy operation. The agent clears + this bit otherwise. + + - copyDestPort(1) + The agent sets this bit if this dataSource is capable of + acting as a destination of a portCopy operation. The agent + clears this bit otherwise. + + - copySrcTxTraffic(2) + If the copySourcePort bit is set: + The agent sets this bit if this dataSource is capable of + copying frames transmitted out this portCopy source. The + agent clears this bit otherwise. This function is needed + to support full-duplex ports. + Else: + this bit SHOULD be cleared. + + - copySrcRxTraffic(3) + If the copySourcePort bit is set: + The agent sets this bit if this dataSource is capable of + copying frames received on this portCopy source. The agent + clears this bit otherwise. This function is needed to + support full-duplex ports. + Else: + this bit SHOULD be cleared. + + - countDestDropEvents(4) + If the copyDestPort bit is set: + The agent sets this bit if it is capable of incrementing + portCopyDestDropEvents, when this dataSource is the + target of a portCopy operation and a frame destined to + this dataSource is dropped (for RMON counting purposes). + Else: + this BIT SHOULD be cleared. + + - copyErrFrames(5) + If the copySourcePort bit is set: + The agent sets this bit if it is capable of copying all + errored frames from this portCopy source-port, for + errored frames received on this dataSource. + Else: + this BIT SHOULD be cleared. + + - copyUnalteredFrames(6) + If the copySourcePort bit is set: + The agent sets the copyUnalteredFrames bit If it is + capable of copying all frames from this portCopy + source-port without alteration in any way; + Else: + this bit SHOULD be cleared. + + - copyAllGoodFrames(7) + If the copySourcePort bit is set: + The agent sets this bit for the dataSource if all good + frames received on this dataSource are normally capable + of being copied by the agent. The agent clears this bit + if any good frames are not visible for the RMON portCopy + operation, e.g., the dataSource is a non-promiscuous + interface or an internal switch interface which may not + receive frames which were switched in hardware or + dropped by the bridge forwarding function. + Else: + this bit SHOULD be cleared." + + ::= { dataSourceCapsEntry 3 } + +dataSourceCapsIfIndex OBJECT-TYPE +SYNTAX InterfaceIndex +MAX-ACCESS read-only +STATUS current +DESCRIPTION + "This object contains the ifIndex value of the ifEntry + associated with this smonDataSource. The agent MUST create + 'propVirtual' ifEntries for each dataSourceCapsEntry of type + VLAN or entPhysicalEntry." + + ::= { dataSourceCapsEntry 4 } + +-- The SMON Statistics MIB Group + +-- aggregated statistics for IEEE 802.1Q VLAN environments. + +-- VLAN statistics can be gathered by configuring smonVlanIdStats +-- and/or smonPrioStats collections. These functions allow a +-- VLAN-ID or user priority distributions per dataSource, +-- auto-populated by the agent in a manner similar to the RMON +-- hostTable. + +-- Only good frames are counted in the tables described in this +-- section. + +-- VLAN ID Stats + +-- smonVlanStatsControlTable allows configuration of VLAN-ID +-- collections. + +smonVlanStatsControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonVlanStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "Controls the setup of VLAN statistics tables. + + The statistics collected represent a distribution based on + the IEEE 802.1Q VLAN-ID (VID), for each good frame attributed + to the data source for the collection." + ::= { smonStats 1 } + +smonVlanStatsControlEntry OBJECT-TYPE + SYNTAX SmonVlanStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the smonVlanStatsControlTable." + INDEX { smonVlanStatsControlIndex } + ::= { smonVlanStatsControlTable 1 } + +SmonVlanStatsControlEntry ::= SEQUENCE { + smonVlanStatsControlIndex Integer32, + smonVlanStatsControlDataSource DataSource, + smonVlanStatsControlCreateTime LastCreateTime, + smonVlanStatsControlOwner OwnerString, + smonVlanStatsControlStatus RowStatus +} + +smonVlanStatsControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique arbitrary index for this smonVlanStatsControlEntry." + ::= { smonVlanStatsControlEntry 1 } + +smonVlanStatsControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this set of VLAN statistics. + + This object MAY NOT be modified if the associated + smonVlanStatsControlStatus object is equal to active(1)." + ::= { smonVlanStatsControlEntry 2 } + +smonVlanStatsControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this control entry was last + activated. This object allows to a management station to + detect deletion and recreation cycles between polls." + ::= { smonVlanStatsControlEntry 3 } + +smonVlanStatsControlOwner OBJECT-TYPE + + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Administratively assigned named of the owner of this entry. + It usually defines the entity that created this entry and is + therefore using the resources assigned to it, though there is + no enforcement mechanism, nor assurance that rows created are + ever used." + ::= { smonVlanStatsControlEntry 4 } + +smonVlanStatsControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + An entry MAY NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the smonVlanIdStatsTable SHALL be deleted." + ::= { smonVlanStatsControlEntry 5 } + +-- The VLAN Statistics Table + +smonVlanIdStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonVlanIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the VLAN statistics data. + The statistics collected represent a distribution based + on the IEEE 802.1Q VLAN-ID (VID), for each good frame + attributed to the data source for the collection. + + This function applies the same rules for attributing frames + to VLAN-based collections. RMON VLAN statistics are collected + after the Ingress Rules defined in section 3.13 of the VLAN + Specification [20] are applied. + + It is possible that entries in this table will be + garbage-collected, based on agent resources, and VLAN + configuration. Agents are encouraged to support all 4094 + index values and not garbage collect this table." +::= { smonStats 2 } + +smonVlanIdStatsEntry OBJECT-TYPE + SYNTAX SmonVlanIdStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in smonVlanIdStatsTable." + INDEX { smonVlanStatsControlIndex, smonVlanIdStatsId } + ::= { smonVlanIdStatsTable 1 } + +SmonVlanIdStatsEntry ::= SEQUENCE { + smonVlanIdStatsId Integer32, + smonVlanIdStatsTotalPkts Counter32, + smonVlanIdStatsTotalOverflowPkts Counter32, + smonVlanIdStatsTotalHCPkts Counter64, + smonVlanIdStatsTotalOctets Counter32, + smonVlanIdStatsTotalOverflowOctets Counter32, + smonVlanIdStatsTotalHCOctets Counter64, + smonVlanIdStatsNUcastPkts Counter32, + smonVlanIdStatsNUcastOverflowPkts Counter32, + smonVlanIdStatsNUcastHCPkts Counter64, + smonVlanIdStatsNUcastOctets Counter32, + smonVlanIdStatsNUcastOverflowOctets Counter32, + smonVlanIdStatsNUcastHCOctets Counter64, + smonVlanIdStatsCreateTime LastCreateTime +} + +smonVlanIdStatsId OBJECT-TYPE + SYNTAX Integer32 (1..4094) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the VLAN monitored for + this specific statistics collection. + + Tagged packets match the VID for the range between 1 and 4094. + An external RMON probe MAY detect VID=0 on an Inter Switch + Link, in which case the packet belongs to a VLAN determined by + the PVID of the ingress port. The VLAN to which such a packet + belongs can be determined only by a RMON probe internal to the + switch." + REFERENCE + "Draft Standard for Virtual Bridged Local Area Networks, + P802.1Q/D10, chapter 3.13" + ::= { smonVlanIdStatsEntry 1 } + +smonVlanIdStatsTotalPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on this VLAN." + ::= { smonVlanIdStatsEntry 2 } + +smonVlanIdStatsTotalOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsTotalPkts + counter has overflowed." + ::= { smonVlanIdStatsEntry 3 } + +smonVlanIdStatsTotalHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on this VLAN." + ::= { smonVlanIdStatsEntry 4 } + +smonVlanIdStatsTotalOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on this VLAN." + ::= { smonVlanIdStatsEntry 5 } + +smonVlanIdStatsTotalOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsTotalOctets + counter has overflowed." + ::= { smonVlanIdStatsEntry 6 } + +smonVlanIdStatsTotalHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on this VLAN." +::= { smonVlanIdStatsEntry 7 } + +smonVlanIdStatsNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets counted on this + VLAN." + ::= { smonVlanIdStatsEntry 8 } + +smonVlanIdStatsNUcastOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonVlanIdStatsNUcastPkts + counter has overflowed." + ::= { smonVlanIdStatsEntry 9 } + +smonVlanIdStatsNUcastHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast packets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 10 } + +smonVlanIdStatsNUcastOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of non-unicast octets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 11 } + +smonVlanIdStatsNUcastOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated + smonVlanIdStatsNUcastOctets counter has overflowed." + ::= { smonVlanIdStatsEntry 12 } + +smonVlanIdStatsNUcastHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Non-unicast octets counted on + this VLAN." + ::= { smonVlanIdStatsEntry 13 } + +smonVlanIdStatsCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last + activated. This object allows to a management station to + detect deletion and recreation cycles between polls." + ::= { smonVlanIdStatsEntry 14 } + +-- smonPrioStatsControlTable + +smonPrioStatsControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonPrioStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Controls the setup of priority statistics tables. + + The smonPrioStatsControlTable allows configuration of + collections based on the value of the 3-bit user priority + field encoded in the Tag Control Information (TCI) field + according to [19],[20]. + + Note that this table merely reports priority as encoded in + the VLAN headers, not the priority (if any) given to the + frame for the actual switching purposes." + + ::= { smonStats 3 } + +smonPrioStatsControlEntry OBJECT-TYPE + SYNTAX SmonPrioStatsControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the smonPrioStatsControlTable." + INDEX { smonPrioStatsControlIndex } + ::= { smonPrioStatsControlTable 1 } + + +SmonPrioStatsControlEntry ::= SEQUENCE { + smonPrioStatsControlIndex Integer32, + smonPrioStatsControlDataSource DataSource, + smonPrioStatsControlCreateTime LastCreateTime, + smonPrioStatsControlOwner OwnerString, + smonPrioStatsControlStatus RowStatus +} + +smonPrioStatsControlIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique arbitrary index for this smonPrioStatsControlEntry." + ::= { smonPrioStatsControlEntry 1 } + +smonPrioStatsControlDataSource OBJECT-TYPE + SYNTAX DataSource + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source of data for this set of VLAN statistics. + + This object MAY NOT be modified if the associated + smonPrioStatsControlStatus object is equal to active(1)." + ::= { smonPrioStatsControlEntry 2 } + +smonPrioStatsControlCreateTime OBJECT-TYPE + SYNTAX LastCreateTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was created. + This object allows to a management station to + detect deletion and recreation cycles between polls." + + ::= { smonPrioStatsControlEntry 3 } + +smonPrioStatsControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Administratively assigned named of the owner of this entry. + It usually defines the entity that created this entry and is + therefore using the resources assigned to it, though there is + no enforcement mechanism, nor assurance that rows created are + ever used." + ::= { smonPrioStatsControlEntry 4 } + +smonPrioStatsControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + An entry MAY NOT exist in the active state unless all + objects in the entry have an appropriate value. + + If this object is not equal to active(1), all associated + entries in the smonPrioStatsTable SHALL be deleted." + ::= { smonPrioStatsControlEntry 5 } + +-- The Priority Statistics Table + +smonPrioStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmonPrioStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the priority statistics. The collections are based + on the value of the 3-bit user priority field encoded in the + Tag Control Information (TCI) field according to [19], [20]. + Note that this table merely reports priority as encoded in + the VLAN headers, not the priority (if any) given to the + frame for the actual switching purposes. + + No garbage collection is designed for this table, as there + always are at most eight rows per statistical set, and the + low memory requirements do not justify the implementation of + such a mechanism." + ::= { smonStats 4 } + +smonPrioStatsEntry OBJECT-TYPE + SYNTAX SmonPrioStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in smonPrioStatsTable." + INDEX { smonPrioStatsControlIndex, smonPrioStatsId } + ::= { smonPrioStatsTable 1 } + +SmonPrioStatsEntry ::= SEQUENCE { + smonPrioStatsId Integer32, + smonPrioStatsPkts Counter32, + smonPrioStatsOverflowPkts Counter32, + smonPrioStatsHCPkts Counter64, + smonPrioStatsOctets Counter32, + smonPrioStatsOverflowOctets Counter32, + smonPrioStatsHCOctets Counter64 +} + +smonPrioStatsId OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique identifier of the priority level monitored for + this specific statistics collection." + REFERENCE + " Draft Standard for Virtual Bridged Local Area Networks, + P802.1Q/D10, chapter 4.3.2.1" + ::= { smonPrioStatsEntry 1 } + +smonPrioStatsPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on + this priority level." + ::= { smonPrioStatsEntry 2 } + +smonPrioStatsOverflowPkts OBJECT-TYPE + SYNTAX Counter32 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonPrioStatsPkts + counter has overflowed." + ::= { smonPrioStatsEntry 3 } + +smonPrioStatsHCPkts OBJECT-TYPE + SYNTAX Counter64 + UNITS "packets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets counted on + this priority level." + ::= { smonPrioStatsEntry 4 } + +smonPrioStatsOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on + this priority level." + ::= { smonPrioStatsEntry 5 } + +smonPrioStatsOverflowOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the associated smonPrioStatsOctets + counter has overflowed." + ::= { smonPrioStatsEntry 6 } + +smonPrioStatsHCOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets counted on + this priority level." + ::= { smonPrioStatsEntry 7 } + + +portCopyTable OBJECT-TYPE + SYNTAX SEQUENCE OF PortCopyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " Port Copy provides the ability to copy all frames from a + specified source to specified destination within a switch. + Source and destinations MUST be ifEntries, as defined by [22]. + One to one, one to many, many to one and many to many source to + destination relationships may be configured. + + Applicable counters on the destination will increment for all + packets transiting the port, be it by normal bridging/switching + or due to packet copy. + Note that this table manages no RMON data collection by itself, + and an agent may possibly implement no RMON objects except + objects related to the port copy operation defined by the + portCopyCompliance conformance macro. That allows for a switch + with no other embedded RMON capability to perform port copy + operations to a destination port at which a different external + RMON probe is connected. + + One to one, many to one and one to many source to destination + relationships may be configured. + Each row that exists in this table defines such a + relationship. By disabling a row in this table the port copy + relationship no longer exists. + + The number of entries and the types of port copies (1-1, + many-1, 1-many) are implementation specific and could + possibly be dynamic due to changing resource availability. + + In order to configure a source to destination portCopy + relationship, both source and destination interfaces MUST be + present as an ifEntry in the ifTable and their respective + ifAdminStatus and ifOperStatus values MUST be equal to + 'up(1)'. If the value of any of those two objects changes + after the portCopyEntry is activated, portCopyStatus will + transition to 'notReady(3)'. + + The capability of an interface to be source or destination of + a port copy operation is described by the 'copySourcePort(0)' + and 'copyDestPort(1)' bits in dataSourceCopyCaps. Those bits + SHOULD be appropriately set by the agent, in order to allow + for a portCopyEntry to be created. + + Applicable counters on the destination will increment for all + packets transmitted, be it by normal bridging/switching or + due to packet copy." +::= { portCopyConfig 1 } + +portCopyEntry OBJECT-TYPE + SYNTAX PortCopyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Describes a particular port copy entry." +INDEX { portCopySource, portCopyDest } +::= { portCopyTable 1 } + +PortCopyEntry ::= SEQUENCE { + portCopySource + InterfaceIndex, + portCopyDest + InterfaceIndex, + portCopyDestDropEvents + Counter32, + portCopyDirection + INTEGER, + portCopyStatus + RowStatus + } + +portCopySource OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex of the source which will have all packets + redirected to the destination as defined by portCopyDest." + ::= { portCopyEntry 1 } + +portCopyDest OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Defines the ifIndex destination for the copy operation." + ::= { portCopyEntry 2 } + +portCopyDestDropEvents OBJECT-TYPE + SYNTAX Counter32 + UNITS "events" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of events in which port copy packets were + dropped by the switch at the destination port due to lack of + resources. + + Note that this number is not necessarily the number of + packets dropped; it is just the number of times this + condition has been detected. + + A single dropped event counter is maintained for each + portCopyDest. Thus all instances associated with a given + portCopyDest will have the same portCopyDestDropEvents + value." + ::= { portCopyEntry 3 } + +portCopyDirection OBJECT-TYPE + SYNTAX INTEGER { + copyRxOnly(1), + copyTxOnly(2), + copyBoth(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object affects the way traffic is copied from a switch + source port, for the indicated port copy operation. + If this object has the value 'copyRxOnly(1)', then only + traffic received on the indicated source port will be copied + to the indicated destination port. + + If this object has the value 'copyTxOnly(2)', then only + traffic transmitted out the indicated source port will be + copied to the indicated destination port. + + If this object has the value 'copyBoth(3)', then all traffic + received or transmitted on the indicated source port will be + copied to the indicated destination port. + + The creation and deletion of instances of this object is + controlled by the portCopyRowStatus object. Note that there + is no guarantee that changes in the value of this object + performed while the associated portCopyRowStatus object is + equal to active will not cause traffic discontinuities in the + packet stream." +DEFVAL { copyBoth } +::= { portCopyEntry 4 } + +portCopyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines the status of the port copy entry. + + In order to configure a source to destination portCopy + relationship, both source and destination interfaces MUST be + present as an ifEntry in the ifTable and their respective + ifAdminStatus and ifOperStatus values MUST be equal to + 'up(1)'. If the value of any of those two objects changes + after the portCopyEntry is activated, portCopyStatus will + transition to 'notReady(3)'. + + The capability of an interface to be source or destination of + a port copy operation is described by the 'copySourcePort(0)' + and 'copyDestPort(1)' bits in dataSourceCopyCaps. Those bits + SHOULD be appropriately set by the agent, in order to allow + for a portCopyEntry to be created." + ::= { portCopyEntry 5 } + +-- smonRegistrationPoints +-- defines a set of OIDs for registration purposes of entities +-- supported by the SMON MIB. + +smonVlanDataSource + OBJECT IDENTIFIER ::= { smonRegistrationPoints 1} + +-- Defined for use as an SmonDataSource. A single integer parameter +-- is appended to the end of this OID when actually encountered in +-- the dataSourceCapsTable, which represents a positive, non-zero +-- VLAN identifier value. + +-- Conformance Macros + +smonMIBCompliances OBJECT IDENTIFIER ::= { rmonConformance 3} +smonMIBGroups OBJECT IDENTIFIER ::= { rmonConformance 4} + +smonMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for full conformance with the SMON + MIB" + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonVlanStatsGroup, + smonPrioStatsGroup, + portCopyConfigGroup, + smonInformationGroup} + + GROUP smonHcTo100mbGroup + DESCRIPTION + "This group of VLAN statistics counter are mandatory only for + those network interfaces for which the corresponding ifSpeed + can be greater than 10MB/sec and less than or equal to + 100MB/sec." + + GROUP smonHc100mbPlusGroup + DESCRIPTION + "This group of VLAN statistics counters are mandatory only for + those network interfaces for which the corresponding ifSpeed + can be more than 100MB/sec. This group of VLAN statistics is + also mandatory for smonDataSources of type VLAN or + entPhysicalEntry." + +::= { smonMIBCompliances 1 } + +smonMIBVlanStatsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the SMON MIB + with support for VLAN Statistics. Mandatory for a SMON probe + in environment where IEEE 802.1Q bridging is implemented." + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonVlanStatsGroup, + smonInformationGroup} + GROUP hcVlanTo100mbGroup + DESCRIPTION + "This group of VLAN statistics counter are mandatory only + for those network interfaces for which the corresponding + ifSpeed can be up to and including 100MB/sec." + + GROUP hcVlan100mbPlusGroup + DESCRIPTION + "This group of VLAN statistics counters are mandatory only for + those network interfaces for which the corresponding ifSpeed + is greater than 100MB/sec. This group of VLAN statistics is + also mandatory for smonDataSources of type VLAN or + entPhysicalEntry." + +::= { smonMIBCompliances 2 } + +smonMIBPrioStatsCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the SMON MIB + with support for priority level Statistics. Mandatory for a + SMON probe in a environment where IEEE 802.1p + priority-switching is implemented." + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + smonPrioStatsGroup, + smonInformationGroup} + + GROUP hcPrioTo100mbGroup + DESCRIPTION + "This group of VLAN priority statistics counters are mandatory + only for those network interfaces for which the corresponding + ifSpeed can be up to and including 100MB/sec." + + GROUP hcPrio100mbPlusGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces for which the corresponding ifSpeed is greater + than 100MB/sec. This group of VLAN priority + statistics is also mandatory for smonDataSources of type + VLAN or entPhysicalEntry" + +::= { smonMIBCompliances 3 } + +portCopyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance with the port copy + functionality defined by the SMON MIB" + MODULE -- this module + MANDATORY-GROUPS {dataSourceCapsGroup, + portCopyConfigGroup, + smonInformationGroup} + + ::= { smonMIBCompliances 4} + +dataSourceCapsGroup OBJECT-GROUP + OBJECTS { dataSourceRmonCaps, + dataSourceCopyCaps, + dataSourceCapsIfIndex} + STATUS current + DESCRIPTION + "Defines the objects that describe the capabilities of RMON + data sources." +::= {smonMIBGroups 1 } + +smonVlanStatsGroup OBJECT-GROUP + OBJECTS { smonVlanStatsControlDataSource, + smonVlanStatsControlCreateTime, + smonVlanStatsControlOwner, + smonVlanStatsControlStatus, + smonVlanIdStatsTotalPkts, + smonVlanIdStatsTotalOctets, + smonVlanIdStatsNUcastPkts, + smonVlanIdStatsCreateTime} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics - per VLAN + Id on interfaces of 10MB or less." +::= { smonMIBGroups 2 } + +smonPrioStatsGroup OBJECT-GROUP + OBJECTS { smonPrioStatsControlDataSource, + smonPrioStatsControlCreateTime, + smonPrioStatsControlOwner, + smonPrioStatsControlStatus, + smonPrioStatsPkts, + smonPrioStatsOctets} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics - per VLAN + Id on interface." +::= { smonMIBGroups 3 } + +smonHcTo100mbGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity statistics needed to be + kept on interfaces with ifSpeed greater than 10MB/sec and + less than or equal to 100MB/sec." +::= { smonMIBGroups 4 } + +smonHc100mbPlusGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowPkts, + smonVlanIdStatsTotalHCPkts, + smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonVlanIdStatsNUcastOverflowPkts, + smonVlanIdStatsNUcastHCPkts, + smonPrioStatsOverflowPkts, + smonPrioStatsHCPkts, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity statistics needed to be + kept on interfaces with ifSpeed of more than 100MB/sec. These + statistics MUST also be kept on smonDataSources of type VLAN + or entPhysicalEntry." +::= { smonMIBGroups 5 } + +hcVlanTo100mbGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN statistics + needed to be kept on interfaces with ifSpeed greater than + 10MB/sec and less than or equal to 100MB/sec." +::= { smonMIBGroups 6 } + +hcVlan100mbPlusGroup OBJECT-GROUP + OBJECTS { smonVlanIdStatsTotalOverflowPkts, + smonVlanIdStatsTotalHCPkts, + smonVlanIdStatsTotalOverflowOctets, + smonVlanIdStatsTotalHCOctets, + smonVlanIdStatsNUcastOverflowPkts, + smonVlanIdStatsNUcastHCPkts} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN statistics + needed to be kept on interfaces with ifSpeed of more than + 100MB/sec. These statistics MUST also be kept on + smonDataSources of type VLAN or entPhysicalEntry." +::= { smonMIBGroups 7 } + +hcPrioTo100mbGroup OBJECT-GROUP + OBJECTS { smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets } + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN priority + statistics needed to be kept on interfaces with + ifSpeed of greater than 10MB/sec and less than or equal + to 100MB/sec." +::= { smonMIBGroups 8 } + +hcPrio100mbPlusGroup OBJECT-GROUP + OBJECTS { smonPrioStatsOverflowPkts, + smonPrioStatsHCPkts, + smonPrioStatsOverflowOctets, + smonPrioStatsHCOctets} + STATUS current + DESCRIPTION + "Defines the additional high capacity VLAN priority + statistics needed to be kept on interfaces with + ifSpeed of greater than 100MB/sec. These statistics MUST + also be kept on smonDataSources of type VLAN or + entPhysicalEntry." +::= { smonMIBGroups 9 } + +smonVlanStatsExtGroup OBJECT-GROUP + OBJECTS {smonVlanIdStatsNUcastOctets, + smonVlanIdStatsNUcastOverflowOctets, + smonVlanIdStatsNUcastHCOctets} + STATUS current + DESCRIPTION + "Defines the switch monitoring specific statistics for systems + capable of counting non-unicast octets for a given dataSource + (as described in the dataSourceRmonCaps object)." +::= { smonMIBGroups 10 } + +smonInformationGroup OBJECT-GROUP + OBJECTS { smonCapabilities } + STATUS current + DESCRIPTION + "An indication of the SMON capabilities supported by this + agent." +::= { smonMIBGroups 11 } + +portCopyConfigGroup OBJECT-GROUP + OBJECTS { portCopyDestDropEvents, + portCopyDirection, + portCopyStatus + } + STATUS current + DESCRIPTION + "Defines the control objects for copy port operations." +::= { smonMIBGroups 12 } + +END diff --git a/mibs/ietf/SNA-NAU-MIB b/mibs/ietf/SNA-NAU-MIB new file mode 100644 index 0000000..19a80ff --- /dev/null +++ b/mibs/ietf/SNA-NAU-MIB @@ -0,0 +1,2764 @@ +SNA-NAU-MIB DEFINITIONS ::= BEGIN + +-- This MIB module contains objects necessary +-- for management of the following SNA devices: PU types 1.0, 2.0, 2.1 +-- and LU types 0, 1, 2, 3, 4, 7. It also contains generic objects +-- which can be used to manage LU 6.2. + +-- Naming conventions in this document: +-- The following names are used in object descriptors according to +-- SNA conventions. +-- The name 'PU' or 'Node' is used to describe Node type 1.0, 2.0 or +-- 2.1. +-- The name 'LU' is used to describe Logical Unit of type 0,1,2,3, +-- 4,7 or 6.2. + + + +IMPORTS + DisplayString, RowStatus, TimeStamp, InstancePointer + FROM SNMPv2-TC + + Counter32, Gauge32, Integer32, mib-2, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +snanauMIB MODULE-IDENTITY + LAST-UPDATED "9405120900Z" + ORGANIZATION "IETF SNA NAU MIB Working Group" + CONTACT-INFO + " Zbigniew Kielczewski + Eicon Technology Inc. + 2196 32nd Avenue + Lachine, Que H8T 3H7 + Canada + Tel: 1 514 631 2592 + E-mail: zbig@eicon.qc.ca + + Deirdre Kostick + Bellcore + 331 Newman Springs Road + Red Bank, NJ 07701 + Tel: 1 908 758 2642 + E-mail: dck2@mail.bellcore.com + + Kitty Shih (editor) + Novell + 890 Ross Drive + Sunnyvale, CA 94089 + Tel: 1 408 747 4305 + E-mail: kmshih@novell.com" + DESCRIPTION + "This is the MIB module for objects used to + manage SNA devices." +::= { mib-2 34 } + +-- The SNANAU MIB module contains an objects part and a conformance part. +-- Objects are organized into the following groups: +-- (1)snaNode group, +-- (2)snaLU group, +-- (3)snaMgtTools group. + +snanauObjects OBJECT IDENTIFIER ::= { snanauMIB 1 } + + snaNode OBJECT IDENTIFIER ::= { snanauObjects 1 } + snaLu OBJECT IDENTIFIER ::= { snanauObjects 2 } + snaMgtTools OBJECT IDENTIFIER ::= { snanauObjects 3} + + +-- *************************************************************** +-- snaNode group +-- +-- It contains Managed Objects related to any type of Node and +-- some specific objects for Node Type 2.0. +-- *************************************************************** + + +-- *************************************************************** +-- The following table contains generic Node configuration +-- parameters. +-- *************************************************************** + +snaNodeAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaNodeAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects which describe the + configuration parameters for an SNA Node. Link + specific configuration objects are contained in + a separate MIB module (e.g., SNA DLC MIB) + corresponding to the link type. + The table snaNodeAdminLinkTable contains objects + which identify the relationship between node instances + and link instances. + + The entries (i.e., rows) in this table can be created + by either an Agent or a Management Station. + The Management Station can do this through setting + the appropriate value in the snaNodeAdminRowStatus. + + The snaNodeAdminRowStatus object describes the + status of an entry and is used to change the status + of an entry. The entry is deleted by an Agent based + on the value of the snaNodeAdminRowStatus. + + The snaNodeAdminState object describes the desired + operational state of a Node and is used to change the + operational state of a Node. For example, such + information may be obtained from a configuration file. + + How an Agent or a Management Station obtains the + initial value of each object at creation time is an + implementation specific issue. + + For each entry in this table, there is a corresponding + entry in the snaNodeOperTable. + While the objects in this table describe the desired + or configured operational values of the SNA Node, the + actual runtime values are contained in + snaNodeOperTable." + ::= { snaNode 1 } + +snaNodeAdminEntry OBJECT-TYPE + SYNTAX SnaNodeAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry contains the configuration parameters for + one SNA Node instance. The objects in the entry + have read-create access. + An entry can be created, modified or deleted. The + object snaNodeAdminRowStatus is used (i.e., set) to + create or delete a row entry." + INDEX { snaNodeAdminIndex } + ::= { snaNodeAdminTable 1 } + +SnaNodeAdminEntry ::= SEQUENCE { + snaNodeAdminIndex + Integer32, + snaNodeAdminName + DisplayString, + snaNodeAdminType + INTEGER, + snaNodeAdminXidFormat + INTEGER, + snaNodeAdminBlockNum + DisplayString, + snaNodeAdminIdNum + DisplayString, + snaNodeAdminEnablingMethod + INTEGER, + snaNodeAdminLuTermDefault + INTEGER, + snaNodeAdminMaxLu + Integer32, + snaNodeAdminHostDescription + DisplayString, + snaNodeAdminStopMethod + INTEGER, + snaNodeAdminState + INTEGER, + snaNodeAdminRowStatus + RowStatus + } + +snaNodeAdminIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index used to uniquely identify each Node instance. + If an Agent creates the entry, then it will assign + this number otherwise a Management Station + generates a random number when it reserves the + entry for creation." + ::= { snaNodeAdminEntry 1 } + +snaNodeAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..17)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the desired name of the + Node for use during Node activation. + In Type 2.1 networks, this is a fully-qualified name, + meaning that the Node name is preceded by the NetId (if + present) with a period as the delimiter. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperName until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 2 } + +snaNodeAdminType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + pu10(2), + pu20(3), + t21len(4), + endNode(5), + networkNode(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the type of SNA Node. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperType until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 3 } + +snaNodeAdminXidFormat OBJECT-TYPE + SYNTAX INTEGER { + format0(1), + format1(2), + format3(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the type of XID format used for + this Node. Note that there is no format type 2. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperAdminXidFormat until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 4 } + +snaNodeAdminBlockNum OBJECT-TYPE + SYNTAX DisplayString (SIZE(3)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the block number for this Node + instance. It is the first 3 hexadecimal digits of the + SNA Node id. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperBlockNum until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 5 } + +snaNodeAdminIdNum OBJECT-TYPE + SYNTAX DisplayString (SIZE(5)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the ID number for this Node + instance. This is the last 5 hexadecimal digits of + the SNA Node id. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperIdNum until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 6 } + +snaNodeAdminEnablingMethod OBJECT-TYPE + SYNTAX INTEGER { + other (1), + startup (2), + demand (3), + onlyMS (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates how the Node should be + activated for the first time. + The values have the following meanings: + + other (1) - may be used for proprietary methods + not listed in this enumeration, + startup (2) - at SNA services' initialization time + (this is the default), + demand (3) - only when LU is requested by application, + or + onlyMS (4) - by a Management Station only. + + A write operation to this object may immediately + change the operational value reflected + in snaNodeOperEnablingMethod depending + on the Agent implementation. If the Agent + implementation accepts immediate changes, then the + behavior of the Node changes immediately and not only + after the next system startup of the SNA services. + An immediate change may only apply when the + current value 'demand (3)' is changed to 'onlyMS (4)' + and vice versa." + ::= { snaNodeAdminEntry 7 } + +snaNodeAdminLuTermDefault OBJECT-TYPE + SYNTAX INTEGER { + unbind (1), + termself (2), + rshutd (3), + poweroff(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the desired default method + used to deactivate LUs for this Node + For LU6.2s, 'unbind(1)' is the only valid value. + + unbind(1) - terminate the LU-LU session by sending + an SNA UNBIND request. + termself(2) - terminate the LU-LU session by sending + an SNA TERM-SELF (Terminate Self) request on + the SSCP-LU session. The SSCP will inform the + remote session LU partner to send an UNBIND + request to terminate the session. + rshutd(3) - terminate the LU-LU session by sending + an SNA RSHUTD (Request ShutDown) request to + the remote session LU partner. The remote LU + will then send an UNBIND request to terminate + the session. + poweroff(4) - terminate the LU-LU session by sending + either an SNA LUSTAT (LU Status) request on + the LU-LU session or an SNA NOTIFY request on + the SSCP-LU session indicating that the LU has + been powered off. Sending both is also + acceptable. The result should be that the + remote session LU partner will send an UNBIND + to terminate the session. + + The default behavior indicated by the value of this + object may be overridden for an LU instance. The + override is performed by setting the snaLuAdminTerm + object instance in the snaLuAdminTable to the desired + value. + + A write operation to this object may immediately + change the operational value reflected + in snaNodeOperLuTermDefault depending + on the Agent implementation." + ::= { snaNodeAdminEntry 8 } + +snaNodeAdminMaxLu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of LUs that may be + activated for this Node. For PU2.1, this object + refers to the number of dependent LUs. + + A write operation to this object will + not change the operational value reflected + in snaNodeOperMaxLu until the Node has + been re-activated (e.g., after the next initialization + of the SNA services)." + ::= { snaNodeAdminEntry 9 } + +snaNodeAdminHostDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..128)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value identifies the remote host associated + with this Node. + Since SSCP Id's may not be unique + across hosts, the host description + is required to uniquely identify the SSCP. + This object is only applicable to PU2.0 type + Nodes. If the remote host is unknown, then the + value is the null string. + + A write operation to this object may immediately + change the operational value reflected + in snaNodeOperHostDescription depending + on the Agent implementation." + ::= { snaNodeAdminEntry 10 } + +snaNodeAdminStopMethod OBJECT-TYPE + SYNTAX INTEGER { + other (1), + normal (2), + immed (3), + force (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the desired method to be used + by the Agent to stop a Node (i.e., change the Node's + operational state to inactive(1) ). + + The values have the following meaning: + + other (1) - used for proprietary + methods not listed in this enumeration. + normal(2) - deactivate only when there is no more + activity on this Node (i.e., all data flows + have been completed and all sessions + have been terminated). + immed(3) - deactivate immediately regardless of + current activities on this Node. Wait for + deactivation responses (from remote Node) + before changing the Node state to inactive. + force(4) - deactivate immediately regardless of + current activities on this Node. Do not wait + for deactivation responses (from remote Node) + before changing the Node state to inactive. + + A write operation to this object may immediately + change the operational value reflected + in snaNodeOperStopMethod depending + on the Agent implementation." + ::= { snaNodeAdminEntry 11 } + +snaNodeAdminState OBJECT-TYPE + SYNTAX INTEGER { + inactive (1), + active (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value indicates the desired operational + state of the SNA Node. This object is used + by the Management Station to + activate or deactivate the Node. + + If the current value in snaNodeOperState is + 'active (2)', then setting this object to + 'inactive (1)' will initiate the Node shutdown + process using the method indicated + by snaNodeOperStopMethod. + + If the current value in snaNodeOperState is + 'inactive (1)', then setting this object to + 'active (2)' will initiate the + Node's activation. + + A Management Station can always set this object to + 'active (2)' irrespective of the value in the + snaOperEnablingMethod." + ::= { snaNodeAdminEntry 12 } + +snaNodeAdminRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by a Management Station to + create or delete the row entry in the + snaNodeAdminTable following + the RowStatus textual convention. + + Upon successful creation of + the row, an Agent automatically creates a + corresponding entry in the snaNodeOperTable with + snaNodeOperState equal to 'inactive (1)'. + + Row deletion can be Management Station or Agent + initiated: + (a) The Management Station can set the value to + 'destroy (6)' only when the value of + snaNodeOperState of this Node instance is + 'inactive (1)'. The Agent will then delete the rows + corresponding to this Node instance from the + snaNodeAdminTable and the snaNodeOperTable. + (b) The Agent detects that a row is in the + 'notReady (3)' state for greater than a + default period of 5 minutes. + (c) All rows with the snaNodeAdminRowStatus object's + value of 'notReady (3)' will be removed upon the + next initialization of the SNA services." + ::= { snaNodeAdminEntry 13 } + + +-- *************************************************************** +-- The following object is updated when there is a change to +-- the value of any object in the snaNodeAdminTable. +-- *************************************************************** + +snaNodeAdminTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the timestamp + (e.g., the Agent's sysUpTime value) of the last + change made to any object in the snaNodeAdminTable, + including row deletions/additions (e.g., changes to + snaNodeAdminRowStatus values). + + This object can be used to reduce frequent + retrievals of the snaNodeAdminTable by a Management + Station. It is expected that a Management Station + will periodically poll this object and compare its + current value with the previous one. A difference + indicates that some Node configuration information + has been changed. Only then will the Management + Station retrieve the entire table." + ::= { snaNode 2 } + + +-- *************************************************************** +-- The following table contains Node operational parameters. +-- *************************************************************** + +snaNodeOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaNodeOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the dynamic parameters which + have read-only access. These objects reflect the + actual status of the Node. The entries in this + table cannot be created or modified by a + Management Station. + This table augments the snaNodeAdminTable." + ::= { snaNode 3 } + +snaNodeOperEntry OBJECT-TYPE + SYNTAX SnaNodeOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry contains parameters which describe the + state of one Node. The entries are created by the + Agent. They have read-only access." + AUGMENTS { snaNodeAdminEntry } + ::= { snaNodeOperTable 1 } + +SnaNodeOperEntry ::= SEQUENCE { + snaNodeOperName + DisplayString, + snaNodeOperType + INTEGER, + snaNodeOperXidFormat + INTEGER, + snaNodeOperBlockNum + DisplayString, + snaNodeOperIdNum + DisplayString, + snaNodeOperEnablingMethod + INTEGER, + snaNodeOperLuTermDefault + INTEGER, + snaNodeOperMaxLu + Integer32, + snaNodeOperHostDescription + DisplayString, + snaNodeOperStopMethod + INTEGER, + snaNodeOperState + INTEGER, + snaNodeOperHostSscpId + OCTET STRING, + snaNodeOperStartTime + TimeStamp, + snaNodeOperLastStateChange + TimeStamp, + snaNodeOperActFailures + Counter32, + snaNodeOperActFailureReason + INTEGER + } + +snaNodeOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current name of the Node. + In Type 2.1 networks, this + is a fully-qualified name, meaning that the Node name + is preceded by the NetId (if present) with a period + as the delimiter." + ::= { snaNodeOperEntry 1 } + +snaNodeOperType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + pu10(2), + pu20(3), + t21LEN(4), + endNode(5), + networkNode(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current type of the Node." + ::= { snaNodeOperEntry 2 } + +snaNodeOperXidFormat OBJECT-TYPE + SYNTAX INTEGER { + format0 (1), + format1 (2), + format3 (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the type of XID format currently + used for this Node. + Note that there is no format type 2." + ::= { snaNodeOperEntry 3 } + +snaNodeOperBlockNum OBJECT-TYPE + SYNTAX DisplayString (SIZE(3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the block number for this Node + instance. It is the first 3 hexadecimal digits + of the SNA Node id." + ::= { snaNodeOperEntry 4 } + +snaNodeOperIdNum OBJECT-TYPE + SYNTAX DisplayString (SIZE(5)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the ID number for this Node + instance. This is the last 5 hexadecimal digits of + the SNA Node id." + ::= { snaNodeOperEntry 5 } + +snaNodeOperEnablingMethod OBJECT-TYPE + SYNTAX INTEGER { + other (1), + startup (2), + demand (3), + onlyMS (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates how the Node is activated for + the first time. + The values have the following meanings: + other (1) - not at boot time, LU activation + or by a Management Station; + startup (2) - at SNA services' initialization + time (this is the default), + demand (3) - only when LU is requested by + application, + onlyMS (4) - by a network Management Station + only." + ::= { snaNodeOperEntry 6 } + +snaNodeOperLuTermDefault OBJECT-TYPE + SYNTAX INTEGER { + unbind (1), + termself (2), + rshutd (3), + poweroff (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the default method used to + deactivate LUs for this Node. + For LU6.2s, 'unbind(1)' is the only valid value. + + unbind(1) - terminate the LU-LU session by sending + an SNA UNBIND request. + termself(2) - terminate the LU-LU session by sending + an SNA TERM-SELF (Terminate Self) request on + the SSCP-LU session. The SSCP will inform the + remote session LU partner to send an UNBIND + request to terminate the session. + rshutd(3) - terminate the LU-LU session by sending + an SNA RSHUTD (Request ShutDown) request to + the remote session LU partner. The remote LU + will then send an UNBIND request to terminate + the session. + poweroff(4) - terminate the LU-LU session by sending + either an SNA LUSTAT (LU Status) request on + the LU-LU session or an SNA NOTIFY request on + the SSCP-LU session indicating that the LU has + been powered off. Sending both is also + acceptable. The result should be that the + remote session LU partner will send an UNBIND + to terminate the session. + + This object describes the default behavior for this + Node; however, it is possible that for a specific LU + the behavior indicated by the snaLuOperTerm object is + different." + ::= { snaNodeOperEntry 7 } + +snaNodeOperMaxLu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the current, maximum number + of LUs that are activated for this Node. For PU2.1, + this object refers to the number of dependent LUs." + ::= { snaNodeOperEntry 8 } + +snaNodeOperHostDescription OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the remote host currently + associated with this Node. + Since SSCP Id's may not be unique + across hosts, the host description + is required to uniquely identify the SSCP." + ::= { snaNodeOperEntry 9 } + +snaNodeOperStopMethod OBJECT-TYPE + SYNTAX INTEGER { + other (1), + normal (2), + immed (3), + force (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the current Node shutdown + method to be used by the Agent to stop the Node. + When the Agent changes the Node's state to 'inactive + (1)', the Agent must use the shutdown method + indicated by this object. + + The values have the following meaning: + + other (1) - proprietary method not listed in this + enumeration + normal(2) - deactivate only when there is no more + activity on this Node (i.e., all data flows + have been completed and all sessions have + been terminated). + immed(3) - deactivate immediately regardless of + current activities on this Node. Wait for + deactivation responses (from remote Node) + before changing the Node state to inactive. + force(4) - deactivate immediately regardless of + current activities on this Node. Do not wait + for deactivation responses (from remote Node) + before changing the Node state to inactive. + + Note that a write operation to + snaNodeAdminOperStopMethod may immediately change + the value of snaNodeOperStopMethod depending on + the Agent implementation." + ::= { snaNodeOperEntry 10 } + +snaNodeOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive (1), + active (2), + waiting (3), + stopping (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the Node. + The values have the following meanings: + inactive (1), a row representing the Node has + been created in the AdminTable + and, the Node is ready for activation -or- + an active Node has been stopped -or- + a waiting Node has returned to the inactive + state. + waiting (3), a request to have the Node activated + has been issued, and the Node is pending + activation. + active (2), the Node is ready and operating. + stopping (4), the request to stop the Node has + been issued while the StopMethod normal + or immediate is used." + ::= { snaNodeOperEntry 11 } + +snaNodeOperHostSscpId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..6)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the current SSCP Id + associated with the Node. This object is only + applicable to PU 2.0s. If the Node + is not a PU 2.0 type, then this object contains a + zero length string." + ::= { snaNodeOperEntry 12 } + +snaNodeOperStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g, the Agent's sysUpTime value) + at the Node activation." + ::= { snaNodeOperEntry 13 } + +snaNodeOperLastStateChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + at the last state change of the Node." + ::= { snaNodeOperEntry 14 } + +snaNodeOperActFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the number of failed Node + activation attempts." + ::= { snaNodeOperEntry 15 } + +snaNodeOperActFailureReason OBJECT-TYPE + SYNTAX INTEGER { + other (1), + linkFailure (2), + noResources (3), + badConfiguration (4), + internalError (5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the reason for the activation + failure. The value 'other (1)' indicates a reason + not listed in the enumeration. This object + will be sent in the trap snaNodeActFailTrap." + ::= { snaNodeOperEntry 16 } + + +-- *************************************************************** +-- The following object is updated when there is a change to +-- the value of snaNodeOperState in any row or a row is +-- added/deleted from the snaNodeOperTable via the snaNodeAdminTable. +-- *************************************************************** + +snaNodeOperTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + at the last change made to any object in the + snaNodeOperTable, including row deletions/additions + made as a result of changes to the + snaNodeAdminRowStatus object. + + This object can be used to reduce frequent + retrievals of the snaNodeOperTable by a Management + Station. It is expected that a Management Station + will periodically poll this object and compare its + current value with the previous one. A difference + indicates that some Node operational information + has been changed. Only then will the Management + Station retrieve the entire table." + ::= { snaNode 4 } + + +-- *************************************************************** +-- The following table contains PU 2.0 statistics dynamic parameters. +-- *************************************************************** + +snaPu20StatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaPu20StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the dynamic parameters which + have read-only access. The entries in this table + correspond to PU 2.0 entries in the snaNodeOperTable + and cannot be created by a Management Station." + ::= { snaNode 5 } + +snaPu20StatsEntry OBJECT-TYPE + SYNTAX SnaPu20StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The entry contains parameters which describe the + statistics for one PU 2.0. They have read-only + access. + The counters represent traffic for all kinds + of sessions: LU-LU, SSCP-PU, SSCP-LU. + + Each Node of PU Type 2.0 from the snaNodeAdminTable + has one entry in this table and the index used + here has the same value as snaNodeAdminIndex of + that PU. The entry is created by the Agent." + INDEX { snaNodeAdminIndex } + ::= { snaPu20StatsTable 1 } + +SnaPu20StatsEntry ::= SEQUENCE { + snaPu20StatsSentBytes + Counter32, + snaPu20StatsReceivedBytes + Counter32, + snaPu20StatsSentPius + Counter32, + snaPu20StatsReceivedPius + Counter32, + snaPu20StatsSentNegativeResps + Counter32, + snaPu20StatsReceivedNegativeResps + Counter32, + snaPu20StatsActLus + Gauge32, + snaPu20StatsInActLus + Gauge32, + snaPu20StatsBindLus + Gauge32 + } + +snaPu20StatsSentBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes sent by this Node." + ::= { snaPu20StatsEntry 1 } + +snaPu20StatsReceivedBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes received by this Node." + ::= { snaPu20StatsEntry 2 } + +snaPu20StatsSentPius OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PIUs sent by this Node." + ::= { snaPu20StatsEntry 3 } + +snaPu20StatsReceivedPius OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of PIUs received by this Node." + ::= { snaPu20StatsEntry 4 } + +snaPu20StatsSentNegativeResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of negative responses sent + by this Node." + ::= { snaPu20StatsEntry 5 } + +snaPu20StatsReceivedNegativeResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of negative responses received + by this Node." + ::= { snaPu20StatsEntry 6 } + +snaPu20StatsActLus OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LUs on this PU which have + received and responded to ACTLU from the host." + ::= { snaPu20StatsEntry 7 } + +snaPu20StatsInActLus OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LUs on this PU which have + not received an ACTLU from the host. This is + possible if the number of configured LUs exceeds + that on the host." + ::= { snaPu20StatsEntry 8 } + +snaPu20StatsBindLus OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LUs on this PU which have + received and acknowledged a BIND request from the + host." + ::= { snaPu20StatsEntry 9 } + +-- *************************************************************** +-- The following table contains the association between Nodes and +-- link identifiers. +-- It is used for configuration purposes. +-- *************************************************************** + +snaNodeLinkAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaNodeLinkAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the references to link + specific tables. If a Node is configured for + multiple links, then the Node will have + multiple entries in this table. + The entries in this table can be generated + initially, after initialization of SNA service, + by the Agent which uses information from + Node configuration file. + Subsequent modifications of parameters, + creation of new Nodes link entries and deletion + of entries is possible. + The modification to this table can be + saved in the Node configuration file for the + next initialization of SNA service, but the mechanism + for this function is not defined here." + ::= { snaNode 6 } + +snaNodeLinkAdminEntry OBJECT-TYPE + SYNTAX SnaNodeLinkAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry contains the configuration information that + associates a Node instance to one link instance. + The objects in the entry have read-create access. + Entry can be created, modified or deleted. + The object snaNodeLinkAdminRowStatus is used (set) + to create or delete an entry. + The object snaNodeLinkAdminSpecific can be set + later, after the entry has been created." + INDEX { snaNodeAdminIndex, + snaNodeLinkAdminIndex } + ::= { snaNodeLinkAdminTable 1 } + +SnaNodeLinkAdminEntry ::= SEQUENCE { + snaNodeLinkAdminIndex + Integer32, + snaNodeLinkAdminSpecific + InstancePointer, + snaNodeLinkAdminMaxPiu + Integer32, + snaNodeLinkAdminRowStatus + RowStatus + } + +snaNodeLinkAdminIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value is used to index the instances of objects. + If an Agent creates the entry, then it will assign + this number otherwise a Management Station + generates a random number when it reserves the + entry for creation." + ::= { snaNodeLinkAdminEntry 1 } + +snaNodeLinkAdminSpecific OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value points to the row in the table + containing information on the link instance. + (e.g., the sdlcLSAdminTable of + the SNA DLC MIB module)." + ::= { snaNodeLinkAdminEntry 2 } + +snaNodeLinkAdminMaxPiu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the maximum number of octets + that can be exchanged by this Node in one + Path Information Unit (PIU)." + ::= { snaNodeLinkAdminEntry 3 } + +snaNodeLinkAdminRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by a Management Station to + create or delete the row entry in the + snaNodeLinkAdminTable. + To activate a row, a Management Station sets the value + to 'active (1)' or 'notReady (3)'. Upon successful + creation of the row, the Agent automatically creates + a corresponding entry in the snaNodeLinkOperTable. + + Row deletion can be Management Station or Agent + initiated: + (a) The Management Station can set the value to + 'destroy (6)' only when the value of + snaNodeLinkOperState of this Link + instance is 'inactive (1)'. The Agent will then + delete the row corresponding to this Link + instance from snaNodeLinkOperTable and + from snaNodeLinkAdminTable. + (b) The Agent detects that a row is in the + 'notReady (3)' state for greater than a + default period of 5 minutes. + (c) The Agent will not include a row with RowStatus= + 'notReady (3)', after SNA system re-initialization + (e.g., reboot)." + ::= { snaNodeLinkAdminEntry 4 } + + +-- *************************************************************** +-- The following object is updated when there is a change to +-- the value of any object in the snaNodeLinkAdminTable. +-- *************************************************************** + +snaNodeLinkAdminTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + at the last + change made to any object in the snaNodeLinkAdminTable, + including row deletions/additions (i.e., changes + to the snaNodeLinkAdminRowStatus object). + + This object can be used to reduce frequent + retrievals of the snaNodeLinkAdminTable by a + Management Station. It is expected that a + Management Station will periodically poll this + object and compare its current value with the + previous one. + A difference indicates that some Node operational + information has been changed. Only then will the + Management Station retrieve the entire table." + ::= { snaNode 7 } + + +-- *************************************************************** +-- The following table contains the association between +-- Nodes and link identifiers. +-- It provides the current status. +-- *************************************************************** + +snaNodeLinkOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaNodeLinkOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all references to link + specific tables for operational parameters. + If a Node is configured for multiple links, + then the Node will have multiple entries in + this table. This table augments the + snaNodeLinkAdminTable." + ::= { snaNode 8 } + +snaNodeLinkOperEntry OBJECT-TYPE + SYNTAX SnaNodeLinkOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry contains all current parameters for one + Node link. The objects in the entry have + read-only access." + AUGMENTS { snaNodeLinkAdminEntry } + ::= { snaNodeLinkOperTable 1 } + +SnaNodeLinkOperEntry ::= SEQUENCE { + snaNodeLinkOperSpecific + InstancePointer, + snaNodeLinkOperMaxPiu + Integer32 + } + +snaNodeLinkOperSpecific OBJECT-TYPE + SYNTAX InstancePointer + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value points to the row in the table + containing information on the link instance. + (e.g., the sdlcLSOperTable of + the SNA DLC MIB module)." + ::= { snaNodeLinkOperEntry 1 } + +snaNodeLinkOperMaxPiu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Maximum number of octets that can + be exchanged by this Node in one Path + Information Unit (PIU)." + ::= { snaNodeLinkOperEntry 2 } + + +-- *************************************************************** +-- The following object is updated when a row is added/deleted +-- from the snaNodeLinkOperTable. +-- *************************************************************** + +snaNodeLinkOperTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp of the last + change made to any object in the snaNodeLinkOperTable, + including row deletions/additions. + + This object can be used to reduce frequent + retrievals of the snaNodeLinkOperTable by a + Management Station. It is expected that a + Management Station will periodically poll this + object and compare its current value with the + previous one. + A difference indicates that some Node operational + information has been changed. Only then will the + Management Station retrieve the entire table." + ::= { snaNode 9 } + +-- *************************************************************** +-- Traps +-- *************************************************************** + +snaNodeTraps OBJECT IDENTIFIER ::= { snaNode 10 } + +snaNodeStateChangeTrap NOTIFICATION-TYPE + OBJECTS { snaNodeOperName, + snaNodeOperState } + STATUS current + DESCRIPTION + "This trap indicates that the operational state + (i.e., value of the snaNodeOperState object) of a Node + has changed. The following variables are returned: + snaNodeOperName - current name of the Node, + with the instance identifying the Node; and, + snaNodeOperState - current state after + the change." + ::= { snaNodeTraps 1 } + +snaNodeActFailTrap NOTIFICATION-TYPE + OBJECTS { snaNodeOperName, + snaNodeOperState, + snaNodeOperActFailureReason } + STATUS current + DESCRIPTION + "This trap indicates a Node activation failure. + The value of snaNodeOperState indicates the current + state after the activation attempt. + The value of snaNodeOperActFailureReason indicates + the failure reason." + ::= { snaNodeTraps 2 } + + +-- *************************************************************** +-- snaLu group +-- +-- It contains Managed Objects related to LUs in general and some +-- specific for LUs of type 0, 1, 2, 3. +-- *************************************************************** + + +-- *************************************************************** +-- The following table contains LU configuration parameters. +-- *************************************************************** + +snaLuAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains LU configuration information. + The rows in this table can be created and deleted + by a Management Station. + Only objects which are common to all types of LUs + are included in this table." + ::= { snaLu 1 } + +snaLuAdminEntry OBJECT-TYPE + SYNTAX SnaLuAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains configuration variables for an LU." + INDEX { snaNodeAdminIndex, snaLuAdminLuIndex } + ::= { snaLuAdminTable 1 } + +SnaLuAdminEntry ::= SEQUENCE { + snaLuAdminLuIndex + Integer32, + snaLuAdminName + DisplayString, + snaLuAdminSnaName + DisplayString, + snaLuAdminType + INTEGER, + snaLuAdminDepType + INTEGER, + snaLuAdminLocalAddress + OCTET STRING, + snaLuAdminDisplayModel + INTEGER, + snaLuAdminTerm + INTEGER, + snaLuAdminRowStatus + RowStatus + } + +snaLuAdminLuIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value identifies the unique index for an + LU instance within a Node." + ::= { snaLuAdminEntry 1 } + +snaLuAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..48)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the user configurable + name for this LU. If a name is not assigned to the LU, + then this object contains a zero length string. + + A write operation to this object will + not change the operational value reflected + in snaLuOperName until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuAdminEntry 2 } + +snaLuAdminSnaName OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..17)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the SNA LU name + used in exchange of SNA data. + + A write operation to this object will + not change the operational value reflected + in snaLuOperSnaName until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuAdminEntry 3 } + +snaLuAdminType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + lu0(2), + lu1(3), + lu2(4), + lu3(5), + lu4(6), + lu62(7), + lu7(8) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the LU type. + + A write operation to this object will + not change the operational value reflected + in snaLuOperAdminType until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuAdminEntry 4 } + +snaLuAdminDepType OBJECT-TYPE + SYNTAX INTEGER { + dependent(1), + independent(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies whether the LU is + dependent or independent. + + A write operation to this object will + not change the operational value reflected + in snaLuOperDepType until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuAdminEntry 5 } + +snaLuAdminLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local address for this LU is a byte with a value + ranging from 0 to 254.For dependent LUs, this value + ranges from 1 to 254 and for independent LUs this + value is always 0. + + A write operation to this object will not change the + operational value reflected in snaLuOperLocalAddress + until the Node has been re-activated (e.g., after the + next initialization of the SNA services)." + ::= { snaLuAdminEntry 6 } + +snaLuAdminDisplayModel OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + model2A(2), + model2B(3), + model3A(4), + model3B(5), + model4A(6), + model4B(7), + model5A(8), + model5B(9), + dynamic(10) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies the model type + and screen size of the terminal connected to the host. + This is only valid for LU Type 2. The values have + the following meaning: + + model2A(2) - Model 2 (24 rows x 80 cols) with base + attributes + model2B(3) - Model 2 (24 rows x 80 cols) with + extended attributes + model3A(4) - Model 3 (32 rows x 80 cols) with base + attributes + model3B(5) - Model 3 (32 rows x 80 cols) with extended + attributes + model4A(6) - Model 4 (43 rows x 80 cols) with base + attributes + model4B(7) - Model 4 (43 rows x 80 cols) with extended + attributes + model5A(8) - Model 5 (27 rows x 132 cols) with base + attributes + model5B(9) - Model 5 (27 rows x 132 cols) with + extended attributes + dynamic(10) - Screen size determine with BIND and Read + Partition Query. + + In case this LU is not Type 2, then this object + should contain the invalid(1) value." + ::= { snaLuAdminEntry 7 } + +snaLuAdminTerm OBJECT-TYPE + SYNTAX INTEGER { + unbind (1), + termself (2), + rshutd (3), + poweroff (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value identifies the desired method for + deactivation of this LU. This value overrides the + default method (snaNodeOperLuTermDefault) for this + Node. For LU 6.2, only the value 'unbind (1)' + applies. + + unbind(1) - terminate the LU-LU session by sending + an SNA UNBIND request. + termself(2) - terminate the LU-LU session by sending + an SNA TERM-SELF (Terminate Self) request on + the SSCP-LU session. The SSCP will inform the + remote session LU partner to send an UNBIND + request to terminate the session. + rshutd(3) - terminate the LU-LU session by sending + an SNA RSHUTD (Request ShutDown) request to + the remote session LU partner. The remote LU + will then send an UNBIND request to terminate + the session. + poweroff(4) - terminate the LU-LU session by sending + either an SNA LUSTAT (LU Status) request on + the LU-LU session or an SNA NOTIFY request on + the SSCP-LU session indicating that the LU has + been powered off. Sending both is also + acceptable. The result should be that the + remote session LU partner will send an UNBIND + to terminate the session. + + A write operation to this object may immediately + change the operational value reflected + in snaLuOperTerm depending + on the Agent implementation." + ::= { snaLuAdminEntry 8 } + +snaLuAdminRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by a Management Station to + create or delete the row entry in the + snaLuAdminTable. + To activate a row, the Management Station sets the + value to 'active (1)' or 'notReady (3)'. + Upon successful creation of the row, the Agent + automatically creates a corresponding entry in the + snaLuOperTable with snaLuOperState equal to + 'inactive (1)'. + Row deletion can be Management Station or Agent + initiated: + (a) The Management Station can set the value to + 'destroy (6)' only when the value of snaLuOperState + of this LU instance is 'inactive (1)'. The Agent will + then delete the row corresponding to this LU + instance from snaLuAdminTable and + from snaLuOperTable. + (b) The Agent detects that a row is in the + 'notReady (3)' state for greater than a + default period of 5 minutes. + (c) The Agent will not create a row with RowStatus + equal to 'notReady (3)', after SNA system + re-initialization (e.g., reboot)." + ::= { snaLuAdminEntry 9 } + + +-- *************************************************************** +-- The following table contains LU state dynamic parameters. +-- *************************************************************** + +snaLuOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains dynamic runtime information and + control variables relating to LUs. + Only objects which are common to all types of LUs are + included in this table. This table augments the + snaLuAdminTable." + ::= { snaLu 2 } + +snaLuOperEntry OBJECT-TYPE + SYNTAX SnaLuOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains objects reflecting current information + for an LU. + Each entry is created by the Agent. All entries + have read-only access." + AUGMENTS { snaLuAdminEntry } + ::= { snaLuOperTable 1 } + +SnaLuOperEntry ::= SEQUENCE { + snaLuOperName + DisplayString, + snaLuOperSnaName + DisplayString, + snaLuOperType + INTEGER, + snaLuOperDepType + INTEGER, + snaLuOperLocalAddress + OCTET STRING, + snaLuOperDisplayModel + INTEGER, + snaLuOperTerm + INTEGER, + snaLuOperState + INTEGER, + snaLuOperSessnCount + Gauge32 + } + +snaLuOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..48)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "User configurable name for this LU. If a name + is not assigned, then this object contains a + zero length string." + ::= { snaLuOperEntry 1 } + +snaLuOperSnaName OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current SNA LU name." + ::= { snaLuOperEntry 2 } + +snaLuOperType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + lu0(2), + lu1(3), + lu2(4), + lu3(5), + lu4(6), + lu62(7), + lu7(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current LU type." + ::= { snaLuOperEntry 3 } + +snaLuOperDepType OBJECT-TYPE + SYNTAX INTEGER { + dependent(1), + independent(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies whether the LU is currently + dependent or independent. + + A write operation to this object will + not change the operational value reflected + in snaLuOperDepType until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuOperEntry 4 } + +snaLuOperLocalAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local address for this LU is a byte with a value + ranging from 0 to 254. For dependent LUs, this value + ranges from 1 to 254; for independent LUs this value + is always 0. + + A write operation to this object will + not change the operational value reflected + in snaLuOperLocalAddress until the Node has + been re-activated (e.g., after the next + initialization of the SNA services)." + ::= { snaLuOperEntry 5 } + +snaLuOperDisplayModel OBJECT-TYPE + SYNTAX INTEGER { + invalid(1), + model2A(2), + model2B(3), + model3A(4), + model3B(5), + model4A(6), + model4B(7), + model5A(8), + model5B(9), + dynamic(10) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The screen model type of the terminal connected to + the host. If this LU is not Type 2, then this + object should contain the 'invalid(1)' value." + ::= { snaLuOperEntry 6 } + +snaLuOperTerm OBJECT-TYPE + SYNTAX INTEGER { + unbind (1), + termself (2), + rshutd (3), + poweroff (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current method for + deactivation of this LU. This value overrides the + default method (snaNodeOperLuTermDefault) for this + Node. For LU 6.2, only the value 'unbind (1)' + applies. + + unbind(1) - terminate the LU-LU session by sending + an SNA UNBIND request. + termself(2) - terminate the LU-LU session by sending + an SNA TERM-SELF (Terminate Self) request on + the SSCP-LU session. The SSCP will inform the + remote session LU partner to send an UNBIND + request to terminate the session. + rshutd(3) - terminate the LU-LU session by sending + an SNA RSHUTD (Request ShutDown) request to + the remote session LU partner. The remote LU + will then send an UNBIND request to terminate + the session. + poweroff(4) - terminate the LU-LU session by sending + either an SNA LUSTAT (LU Status) request on + the LU-LU session or an SNA NOTIFY request on + the SSCP-LU session indicating that the LU has + been powered off. Sending both is also + acceptable. The result should be that the + remote session LU partner will send an UNBIND + to terminate the session." + ::= { snaLuOperEntry 7 } + +snaLuOperState OBJECT-TYPE + SYNTAX INTEGER { + inactive (1), + active (2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the current operational state of + this LU. + It has different meanings for dependent and independent + LUs. + For dependent LUs the values indicate the following: + inactive (1) - LU didn't receive ACTLU, or + it received DACTLU, or received ACTLU and sent + negative response. + active (2) - LU received ACTLU and acknowledged + positively. + + For independent LUs the values indicate the following: + active (2) - the LU is defined and is able to send + and receive BIND. + inactive (1) - the LU has a session count equal + to 0." + ::= { snaLuOperEntry 8 } + +snaLuOperSessnCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of currently active LU-LU sessions of + this LU. + For the independent LU, if this object has value 0, + it indicates that LU is inactive." + ::= { snaLuOperEntry 9 } + + +-- *************************************************************** +-- The following table contains LU session status parameters. +-- *************************************************************** + +snaLuSessnTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuSessnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is a table containing objects which describe the + operational state of LU sessions. Only objects which + are common to all types of LU sessions are included + in this table. + + When a session's snaLuSessnOperState value changes to + 'pendingBind (2)', then the corresponding entry + in the session table is created by the Agent. + + When the session's snaLuSessnOperState value changes to + 'unbound (1)', then the session will be removed from + the session table by the Agent." + ::= { snaLu 3 } + +snaLuSessnEntry OBJECT-TYPE + SYNTAX SnaLuSessnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry contains dynamic parameters for an LU-LU + session. + The indices identify the Node, local LU, and remote LU + for this session." + INDEX { snaNodeAdminIndex, + snaLuAdminLuIndex, + snaLuSessnRluIndex, + snaLuSessnIndex } + ::= { snaLuSessnTable 1 } + +SnaLuSessnEntry ::= SEQUENCE { + snaLuSessnRluIndex + Integer32, + snaLuSessnIndex + Integer32, + snaLuSessnLocalApplName + DisplayString, + snaLuSessnRemoteLuName + DisplayString, + snaLuSessnMaxSndRuSize + INTEGER, + snaLuSessnMaxRcvRuSize + INTEGER, + snaLuSessnSndPacingSize + INTEGER, + snaLuSessnRcvPacingSize + INTEGER, + snaLuSessnActiveTime + TimeStamp, + snaLuSessnAdminState + INTEGER, + snaLuSessnOperState + INTEGER, + snaLuSessnSenseData + OCTET STRING, + snaLuSessnTerminationRu + INTEGER, + snaLuSessnUnbindType + OCTET STRING, + snaLuSessnLinkIndex + Integer32 + } + +snaLuSessnRluIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value may be used to identify information about + the session partner LU in a table of information about + remote LUs. Such a table is not defined in this + document. If a table of remote LU information is not + implemented, or if the table is implemented but it does + not contain information about the partner LU for a + particular session (as for dependent LU-LU sessions) + then this object will have a value of zero." + ::= { snaLuSessnEntry 1 } + +snaLuSessnIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the unique index of the session. + It is recommended that an Agent should not reuse the + index of a deactivated session for a significant + period of time (e.g., one week)." + ::= { snaLuSessnEntry 2 } + +snaLuSessnLocalApplName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..48)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the local application using this LU. + If the local application is unknown, then this object + contains a zero length string." + ::= { snaLuSessnEntry 3 } + +snaLuSessnRemoteLuName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..17)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For dependent LUs which are indicated by the + snaLuOperDepType object containing the value + 'dependent (1)', this object contains the Primary + LU (PLU) name. For independent LUs, + this object contains the fully-qualified remote LU + name of this 6.2 session. + A fully qualified name is an SNA NAU entity name + preceded by the NetId and a period as the delimiter." + ::= { snaLuSessnEntry 4 } + +snaLuSessnMaxSndRuSize OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum RU size used on this session for sending + RUs." + ::= { snaLuSessnEntry 5 } + +snaLuSessnMaxRcvRuSize OBJECT-TYPE + SYNTAX INTEGER (1..8192) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum RU size used on this session for + receiving RUs." + ::= { snaLuSessnEntry 6 } + +snaLuSessnSndPacingSize OBJECT-TYPE + SYNTAX INTEGER (1..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the send pacing window on this session." + ::= { snaLuSessnEntry 7 } + +snaLuSessnRcvPacingSize OBJECT-TYPE + SYNTAX INTEGER (1..63) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the receive pacing window on this + session." + ::= { snaLuSessnEntry 8 } + +snaLuSessnActiveTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + when this session becomes active." + ::= { snaLuSessnEntry 9 } + +snaLuSessnAdminState OBJECT-TYPE + SYNTAX INTEGER { + unbound (1), + bound (3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value indicates the desired operational state of + the session. This object is used to + change the operational state of the session. + A Management Station can only change the operational + state of the session to 'unbound (1)'. + + Session deactivation: + If a session is in the operational state + 'bound (3)' then setting the value of this + object to 'unbound (1)' will initiate the + session shutdown. + + If a session is in the operational state + 'pendingBind (2)' then setting the value of this + object to 'unbound (1)' will initiate the session + shutdown. + If a session is in the operational state + 'pendingUnbind (4)' for an abnormally long period + of time (e.g., three minutes) then setting the value + of this object to 'unbound (1)' will change the + session operational state to 'unbound (1)'. + + Note: for dependent LUs, deactivating the session is + the same as deactivating the LU." + ::= { snaLuSessnEntry 10 } + +snaLuSessnOperState OBJECT-TYPE + SYNTAX INTEGER { + unbound (1), + pendingBind (2), + bound (3), + pendingUnbind (4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the current operational state of + the session. + + 'unbound (1)' - session has been unbound; + in this state it will be removed from the + session table by the Agent. + + 'pendingBind (2)' - this state has different + meanings for dependent and independent LUs; + for dependent LU - waiting for BIND from + the host, for independent LU - waiting for + BIND response. When a session enters this + state, the corresponding entry in the + session table is created by the Agent. + + 'bound (3)' - session has been successfully bound. + + 'pendingUnbind (4)' - session enters this state + when an UNBIND is sent and before the + rsp(UNBIND) is received." + ::= { snaLuSessnEntry 11 } + +snaLuSessnSenseData OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the sense code when there is + a BIND failure. It is taken from the negative BIND + response or UNBIND request. + This is displayed as 8 hexadecimal digits." + ::= { snaLuSessnEntry 12 } + +snaLuSessnTerminationRu OBJECT-TYPE + SYNTAX INTEGER { + other (1), + bindFailure (2), + unbind (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value identifies the SNA RU that terminated the + session. + If the session is not in the unbound state, this object + has a value of 'other (1)'." + ::= { snaLuSessnEntry 13 } + + +snaLuSessnUnbindType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the session is in the unbound state, and it was + terminated by an UNBIND, then this object contains + the UNBIND type value (byte 1 of the UNBIND RU); + otherwise the string is null." + ::= { snaLuSessnEntry 14 } + +snaLuSessnLinkIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the link over which the session + passes. It is an index into snaNodeLinkAdminTable. + If the index value is not known, the value of this + object shall be zero." + ::= { snaLuSessnEntry 15 } + + +-- *************************************************************** +-- The following table contains LU sessions statistics dynamic +-- parameters. +-- *************************************************************** + +snaLuSessnStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuSessnStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains dynamic statistics information + relating to LU sessions. + The entries in this table augment the entries in + the snaLuSessnTable and cannot be created by + a Management Station." + ::= { snaLu 4 } + +snaLuSessnStatsEntry OBJECT-TYPE + SYNTAX SnaLuSessnStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains statistics information for an LU session. + Each entry is created by the Agent. + Objects in this table have read-only access. + Each session from snaLuSessnTable + has one entry in this table." + AUGMENTS { snaLuSessnEntry } + ::= { snaLuSessnStatsTable 1 } + +SnaLuSessnStatsEntry ::= SEQUENCE { + snaLuSessnStatsSentBytes + Counter32, + snaLuSessnStatsReceivedBytes + Counter32, + snaLuSessnStatsSentRus + Counter32, + snaLuSessnStatsReceivedRus + Counter32, + snaLuSessnStatsSentNegativeResps + Counter32, + snaLuSessnStatsReceivedNegativeResps + Counter32 + } + +snaLuSessnStatsSentBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes sent by the local LU." + ::= { snaLuSessnStatsEntry 1 } + +snaLuSessnStatsReceivedBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes received by the local LU." + ::= { snaLuSessnStatsEntry 2 } + +snaLuSessnStatsSentRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RUs sent by the local LU." + ::= { snaLuSessnStatsEntry 3 } + +snaLuSessnStatsReceivedRus OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RUs received by the local LU." + ::= { snaLuSessnStatsEntry 4 } + +snaLuSessnStatsSentNegativeResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of negative responses sent by the + local LU." + ::= { snaLuSessnStatsEntry 5 } + +snaLuSessnStatsReceivedNegativeResps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of negative responses received by the + local LU." + ::= { snaLuSessnStatsEntry 6 } + + +-- *************************************************************** +-- Traps +-- *************************************************************** + +snaLuTraps OBJECT IDENTIFIER ::= { snaLu 5 } + +snaLuStateChangeTrap NOTIFICATION-TYPE + OBJECTS { snaLuOperName, + snaLuOperSnaName, + snaLuOperState } + STATUS current + DESCRIPTION + "This trap indicates that the operational state + (i.e., snaLuOperState value) of the LU has changed. + The value of snaLuOperName indicates the name of the + LU. + The value of snaLuOperSnaName indicates the SNA name + of LU. + The value of snaLuOperState indicates the current + state after change." + ::= { snaLuTraps 1 } + +snaLuSessnBindFailTrap NOTIFICATION-TYPE + OBJECTS { snaLuSessnLocalApplName, + snaLuSessnRemoteLuName, + snaLuSessnOperState, + snaLuSessnSenseData } + STATUS current + DESCRIPTION + "This trap indicates the failure of a BIND. + The value of snaLuSessnLocalApplName indicates the local + application name. + The value of snaLuSessnPartnerName indicates the partner + name. + The value of snaLuSessnOperState indicates the current + state after change. + The value of snaLuSessnBindFailureReason + indicates the failure reason. + The Agent should not generate more than 1 trap of this + type per minute to minimize the level of management + traffic on the network." + ::= { snaLuTraps 2 } + +-- *************************************************************** +-- snaMgtTools group +-- +-- Currently this group contains only one table. +-- *************************************************************** + + +-- *************************************************************** +-- The following table contains Response Time Monitoring (RTM) +-- configuration information and statistics for LU Type 2s. +-- RTM supports the capability to measure and report end-user +-- response times for dependent LUs. When the RTM state of an LU +-- is 'on', response times for each LU transaction are monitored. +-- A set of ranges is defined (e.g., Range 1 includes the number of +-- transactions with response times less than 1 second) using the +-- "boundary" definitions (e.g., boundary #2 is defined as 3 seconds). +-- A set of counters (one per range) identifies +-- the number of transactions within each response time range. +-- *************************************************************** + +snaLuRtmTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnaLuRtmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Response Time Monitoring (RTM) + information relating to an LU (Type 2). Each entry + corresponds to an LU 2 entry in + snaLuAdminTable." + ::= { snaMgtTools 1 } + +snaLuRtmEntry OBJECT-TYPE + SYNTAX SnaLuRtmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains RTM information for an LU (Type 2). + Each entry is created by the Agent." + INDEX { snaLuRtmPuIndex, snaLuRtmLuIndex } + ::= { snaLuRtmTable 1 } + +SnaLuRtmEntry ::= SEQUENCE { + snaLuRtmPuIndex + Integer32, + snaLuRtmLuIndex + Integer32, + snaLuRtmState + INTEGER, + snaLuRtmStateTime + TimeStamp, + snaLuRtmDef + INTEGER, + snaLuRtmBoundary1 + Integer32, + snaLuRtmBoundary2 + Integer32, + snaLuRtmBoundary3 + Integer32, + snaLuRtmBoundary4 + Integer32, + snaLuRtmCounter1 + Counter32, + snaLuRtmCounter2 + Counter32, + snaLuRtmCounter3 + Counter32, + snaLuRtmCounter4 + Counter32, + snaLuRtmOverFlows + Counter32, + snaLuRtmObjPercent + Integer32, + snaLuRtmObjRange + INTEGER, + snaLuRtmNumTrans + Integer32, + snaLuRtmLastRspTime + Integer32, + snaLuRtmAvgRspTime + Integer32 + } + +snaLuRtmPuIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value identifies the PU 2.0 with which this LU is + associated." + ::= { snaLuRtmEntry 1 } + +snaLuRtmLuIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value uniquely identifies an LU in a PU 2.0." + ::= { snaLuRtmEntry 2 } + +snaLuRtmState OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the current RTM state of an LU." + ::= { snaLuRtmEntry 3 } + +snaLuRtmStateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The timestamp (e.g., the Agent's sysUpTime value) + when this session's RTM state (e.g., snaLuRtmState) + changes value." + ::= { snaLuRtmEntry 4 } + +snaLuRtmDef OBJECT-TYPE + SYNTAX INTEGER { + firstChar(1), + kb(2), + cdeb(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value indicates the mode of measurement for this + RTM request. The values have following meaning: + firstChar(1) - time to first character on screen + kb(2) - time to keyboard usable by operator + cdeb(3) - time to Change Direction/End Bracket." + ::= { snaLuRtmEntry 5 } + +snaLuRtmBoundary1 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the first boundary + in units of 1/10th of a second." + ::= { snaLuRtmEntry 6 } + +snaLuRtmBoundary2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the second boundary + in units of 1/10th of a second." + ::= { snaLuRtmEntry 7 } + +snaLuRtmBoundary3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the third boundary + in units of 1/10th of a second." + ::= { snaLuRtmEntry 8 } + +snaLuRtmBoundary4 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of the fourth boundary + in units of 1/10th of a second." + ::= { snaLuRtmEntry 9 } + +snaLuRtmCounter1 OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + fall in the range specified by the first boundary." + ::= { snaLuRtmEntry 10 } + +snaLuRtmCounter2 OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + fall in the range specified by the second boundary." + ::= { snaLuRtmEntry 11 } + +snaLuRtmCounter3 OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + fall in the range specified by the third boundary." + ::= { snaLuRtmEntry 12 } + +snaLuRtmCounter4 OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + fall in the range specified by the fourth boundary." + ::= { snaLuRtmEntry 13 } + +snaLuRtmOverFlows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the number of transactions which + exceed the highest range specified by the + boundaries." + ::= { snaLuRtmEntry 14 } + +snaLuRtmObjPercent OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the desired percentage of + transactions which should be under a designated + boundary range indicated by snaLuRtmObjRange." + ::= { snaLuRtmEntry 15 } + +snaLuRtmObjRange OBJECT-TYPE + SYNTAX INTEGER { + other(1), + range1(2), + range2(3), + range3(4), + range4(5), + range5(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the designated boundary range to + which the snaLuRtmObject refers. + The values have the following meanings: + other(1) - not specified + range1(2) - less than boundary 1 + range2(3) - between boundary 1 and 2 + range3(4) - between boundary 2 and 3 + range4(5) - between boundary 3 and 4 + range5(6) - greater than boundary 4." + ::= { snaLuRtmEntry 16 } + +snaLuRtmNumTrans OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the total number of transactions + executed since the RTM monitoring began (i.e., + snaLuRtmState changed to 'on(2)') for this LU." + ::= { snaLuRtmEntry 17 } + +snaLuRtmLastRspTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the response time for the last + transaction in units of 1/10th of a second." + ::= { snaLuRtmEntry 18 } + +snaLuRtmAvgRspTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value indicates the average response time for all + transactions in units of 1/10th of a second." + ::= { snaLuRtmEntry 19 } + + +-- *************************************************************** +-- Conformance information +-- *************************************************************** + +snanauConformance OBJECT IDENTIFIER ::= { snanauMIB 2 } + +snanauCompliances OBJECT IDENTIFIER ::= {snanauConformance 1 } +snanauGroups OBJECT IDENTIFIER ::= {snanauConformance 2 } + +-- Compliance statements +snanauCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for the SNMPv2 entities + which implement the snanau MIB." + MODULE -- this module + +-- Unconditionally mandatory groups + MANDATORY-GROUPS { snaNodeGroup, + snaLuGroup, + snaSessionGroup } + +-- Conditionally mandatory groups + GROUP snaPu20Group + DESCRIPTION + "The snaPu20Group is mandatory only for those + entities which implement PU type 2.0" + GROUP snaMgtToolsRtmGroup + DESCRIPTION + "The snaMgtToolsGroup is mandatory only for + those entities which implement LU type 2 + and RTM." + +-- Refinement of requirements for objects access. +-- The Agent which does not implement row creation for +-- snaNodeAdminTable, snaNodeLinkAdminTable and +-- snaLuAdminTable must at least accept +-- objects modification (read-write access instead of +-- read-create). + + OBJECT snaNodeAdminName + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminType + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminXidFormat + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminBlockNum + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminIdNum + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminEnablingMethod + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminLuTermDefault + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminMaxLu + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminHostDescription + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminStopMethod + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeAdminState + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeLinkAdminSpecific + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaNodeLinkAdminMaxPiu + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + OBJECT snaLuAdminName + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminSnaName + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminType + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminDepType + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminLocalAddress + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminDisplayModel + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + OBJECT snaLuAdminTerm + MIN-ACCESS read-write + DESCRIPTION + "An Agent is required to implement read-write + access to this object." + + ::= {snanauCompliances 1 } + + +-- Units of conformance + +snaNodeGroup OBJECT-GROUP + OBJECTS { snaNodeAdminName, + snaNodeAdminType, + snaNodeAdminXidFormat, + snaNodeAdminBlockNum, + snaNodeAdminIdNum, + snaNodeAdminEnablingMethod, + snaNodeAdminLuTermDefault, + snaNodeAdminMaxLu, + snaNodeAdminHostDescription, + snaNodeAdminStopMethod, + snaNodeAdminState, + snaNodeAdminRowStatus, + snaNodeAdminTableLastChange, + snaNodeOperName, + snaNodeOperType, + snaNodeOperXidFormat, + snaNodeOperBlockNum, + snaNodeOperIdNum, + snaNodeOperEnablingMethod, + snaNodeOperLuTermDefault, + snaNodeOperMaxLu, + snaNodeOperHostDescription, + snaNodeOperStopMethod, + snaNodeOperState, + snaNodeOperHostSscpId, + snaNodeOperStartTime, + snaNodeOperLastStateChange, + snaNodeOperActFailures, + snaNodeOperActFailureReason, + snaNodeOperTableLastChange, + snaNodeLinkAdminSpecific, + snaNodeLinkAdminMaxPiu, + snaNodeLinkAdminRowStatus, + snaNodeLinkAdminTableLastChange, + snaNodeLinkOperSpecific, + snaNodeLinkOperMaxPiu, + snaNodeLinkOperTableLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of SNA nodes." + ::= { snanauGroups 1 } + +snaLuGroup OBJECT-GROUP + OBJECTS { snaLuAdminName, + snaLuAdminSnaName, + snaLuAdminType, + snaLuAdminDepType, + snaLuAdminLocalAddress, + snaLuAdminDisplayModel, + snaLuAdminTerm, + snaLuAdminRowStatus, + snaLuOperName, + snaLuOperSnaName, + snaLuOperType, + snaLuOperDepType, + snaLuOperLocalAddress, + snaLuOperDisplayModel, + snaLuOperTerm, + snaLuOperState, + snaLuOperSessnCount } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of SNA LUs." + ::= { snanauGroups 2 } + +snaSessionGroup OBJECT-GROUP + OBJECTS { snaLuSessnRluIndex, + snaLuSessnIndex, + snaLuSessnLocalApplName, + snaLuSessnRemoteLuName, + snaLuSessnMaxSndRuSize, + snaLuSessnMaxRcvRuSize, + snaLuSessnSndPacingSize, + snaLuSessnRcvPacingSize, + snaLuSessnActiveTime, + snaLuSessnAdminState, + snaLuSessnOperState, + snaLuSessnSenseData, + snaLuSessnTerminationRu, + snaLuSessnUnbindType, + snaLuSessnLinkIndex, + snaLuSessnStatsSentBytes, + snaLuSessnStatsReceivedBytes, + snaLuSessnStatsSentRus, + snaLuSessnStatsReceivedRus, + snaLuSessnStatsSentNegativeResps, + snaLuSessnStatsReceivedNegativeResps } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of SNA sessions." + ::= { snanauGroups 3 } + +snaPu20Group OBJECT-GROUP + OBJECTS { snaPu20StatsSentBytes, + snaPu20StatsReceivedBytes, + snaPu20StatsSentPius, + snaPu20StatsReceivedPius, + snaPu20StatsSentNegativeResps, + snaPu20StatsReceivedNegativeResps, + snaPu20StatsActLus, + snaPu20StatsInActLus, + snaPu20StatsBindLus } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of PU 2.0." + ::= { snanauGroups 4 } + +snaMgtToolsRtmGroup OBJECT-GROUP + OBJECTS { snaLuRtmState, + snaLuRtmStateTime, + snaLuRtmDef, + snaLuRtmBoundary1, + snaLuRtmBoundary2, + snaLuRtmBoundary3, + snaLuRtmBoundary4, + snaLuRtmCounter1, + snaLuRtmCounter2, + snaLuRtmCounter3, + snaLuRtmCounter4, + snaLuRtmOverFlows, + snaLuRtmObjPercent, + snaLuRtmObjRange, + snaLuRtmNumTrans, + snaLuRtmLastRspTime, + snaLuRtmAvgRspTime } + STATUS current + DESCRIPTION + "A collection of objects providing the + instrumentation of RTM for SNA LU 2.0." + ::= { snanauGroups 5 } + +-- end of conformance statement + + +END diff --git a/mibs/ietf/SNA-SDLC-MIB b/mibs/ietf/SNA-SDLC-MIB new file mode 100644 index 0000000..5dc3fc7 --- /dev/null +++ b/mibs/ietf/SNA-SDLC-MIB @@ -0,0 +1,2759 @@ +SNA-SDLC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32, TimeTicks + FROM SNMPv2-SMI + DisplayString, RowStatus, TimeInterval + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + mib-2, ifIndex, ifAdminStatus, ifOperStatus + FROM RFC1213-MIB; + + +snaDLC MODULE-IDENTITY + LAST-UPDATED "9411150000Z" + ORGANIZATION "IETF SNA DLC MIB Working Group" + CONTACT-INFO + " Wayne Clark + + Postal: cisco Systems, Inc. + 3100 Smoketree Ct. + Suite 1000 + Raleigh, NC 27604 + US + + Tel: +1 919 878 6958 + + E-Mail: wclark@cisco.com" + + DESCRIPTION + "This is the MIB module for objects used to + manage SDLC devices." + +::= { mib-2 41 } + +-- +-- The following data link controls are modelled in this MIB module: +-- +-- 1. SDLC +-- + +sdlc OBJECT IDENTIFIER ::= { snaDLC 1 } + +-- +-- THE SDLC GROUP +-- ============== +-- +-- The following resources are modelled in the SDLC group of this +-- MIB module: +-- +-- 1. PORTS +-- 2. LINK STATIONS + +sdlcPortGroup OBJECT IDENTIFIER ::= { sdlc 1 } -- Physical Ports +sdlcLSGroup OBJECT IDENTIFIER ::= { sdlc 2 } -- Logical Link Stations + +-- +-- THE SDLC PORT GROUP +-- =================== +-- +-- The following classes of information is modelled for each SDLC port: +-- +-- 1. ADMINISTRATIVE ( read/write) +-- 2. OPERATIONAL ( read-only) +-- 3. STATISTICS ( read-only) + +-- Information not found in this group is found in tables described in +-- the following RFCs: +-- +-- 1. RFC1213 - MIB-II +-- +-- TABLE INDEX +-- ==================== ==================== +-- a. ifTable ifIndex +-- +-- 2. RFC1659 - The RS232-like MIB +-- +-- TABLE INDEX +-- ==================== ==================== +-- a. rs232PortTable rs232PortIndex +-- b. rs232SyncPortTable rs232SyncPortIndex +-- c. rs232InSigTable rs232InSigPortIndex, +-- rs232InSigName +-- d. rs232OutSigTable rs232OutSigPortIndex, +-- rs232OutSigName +-- ** e. rs232AsyncPortTable rs232AsyncPortIndex +-- +-- ** rs232AsyncPortTable for ISO 3309.3 ( Start-Stop SDLC). + +-- ************************************************************* +-- * * +-- * THE SDLC PORT ADMINISTRATIVE TABLE * +-- * * +-- ************************************************************* + +sdlcPortAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcPortAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that can be + changed to manage an SDLC port. Changing one + of these parameters may take effect in the + operating port immediately or may wait until + the interface is restarted depending on the + details of the implementation. + + Most of the objects in this read-write table + have corresponding read-only objects in the + sdlcPortOperTable that return the current + operating value. + + The operating values may be different from + these configured values if a configured + parameter was changed after the interface was + started." + ::= { sdlcPortGroup 1 } + +sdlcPortAdminEntry OBJECT-TYPE + SYNTAX SdlcPortAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of configured values for an SDLC port." + INDEX { ifIndex } + ::= { sdlcPortAdminTable 1 } + +SdlcPortAdminEntry ::= SEQUENCE +{ + sdlcPortAdminName DisplayString, + sdlcPortAdminRole INTEGER, + sdlcPortAdminType INTEGER, + sdlcPortAdminTopology INTEGER, + sdlcPortAdminISTATUS INTEGER, + sdlcPortAdminACTIVTO TimeInterval, + sdlcPortAdminPAUSE TimeInterval, + sdlcPortAdminSERVLIM Integer32, + sdlcPortAdminSlowPollTimer TimeInterval +} + +sdlcPortAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An octet string that defines the physical port + to which this interface is assigned. It has + implementation-specific significance. Its value + shall be unique within the administered + system. It must contain only ASCII printable + characters. Should an implementation choose to + accept a write operation for this object, it + causes the logical port definition associated + with the table instance to be moved to a + different physical port. A write operation + shall not take effect until the port is cycled + inactive." + ::= { sdlcPortAdminEntry 1 } + +sdlcPortAdminRole OBJECT-TYPE + SYNTAX INTEGER + { + primary(1), + secondary(2), + negotiable(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object describes the role that the link + station shall assume the next time a connection + is established. + + Even though this is defined as a port object, + it is a link station attribute in the sense + that a role is per link station. However, it + is not possible to vary link station roles on a + particular port. For example, if an SDLC port + is configured to primary, all link stations on + that port must be primary." + ::= { sdlcPortAdminEntry 2 } + +sdlcPortAdminType OBJECT-TYPE + SYNTAX INTEGER + { + leased(1), + switched(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter defines whether the SDLC port + is to connect to a leased or switched line. A + write operation to this administrative value + shall not take effect until the SDLC port has + been cycled inactive." + DEFVAL { leased } + ::= { sdlcPortAdminEntry 3 } + +sdlcPortAdminTopology OBJECT-TYPE + SYNTAX INTEGER + { + pointToPoint(1), + multipoint(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter defines whether the SDLC port is + capable of operating in either a point-to-point + or multipoint topology. + + sdlcPortAdminTopology == multipoint implies the + port can also operate in a point-to-point + topology. sdlcPortAdminTopology == + pointToPoint does not imply the port can + operate in a multipoint topology. + + A write operation to this administrative value + shall not take effect until the SDLC port has + been cycled inactive." + DEFVAL { pointToPoint } + ::= { sdlcPortAdminEntry 4 } + +sdlcPortAdminISTATUS OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + active(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter controls the initial value of + the administrative status, ifAdminStatus, of + this SDLC port at port start-up. Depending + on the implementation, a write operation to + this administrative object may not take effect + until the SDLC port has been cycled inactive." + DEFVAL { active } + ::= { sdlcPortAdminEntry 5 } + +sdlcPortAdminACTIVTO OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This parameter defines the period of time (in + 1/100ths of a second) that the port will allow a + switched line to remain inactive before + disconnecting. A switched line is considered + to be inactive if there are no I-Frames being + transferred. A value of zero indicates no + timeout. Depending on the implementation, a + write operation to this administered value may + not take effect until the port is cycled + inactive. + + This object only has meaning for SDLC ports + where sdlcPortAdminType == switched + + The object descriptor contains the name of an + NCP configuration parameter, ACTIVTO. Please + note that the value of this object represents + 1/100ths of a second while the NCP ACTIVTO is + represented in seconds." + DEFVAL { 0 } + ::= { sdlcPortAdminEntry 6 } + +sdlcPortAdminPAUSE OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the minimum elapsed time + (in 1/100ths of a second) between any two + traversals of the poll list for a primary SDLC + port. Depending on the implementation, a write + operation to this administered value may not + take effect until the port is cycled inactive. + The object descriptor contains the name of an + NCP configuration parameter, PAUSE. Please + note that the value of this object represents + 1/100ths of a second while the NCP PAUSE is + represented in 1/10ths of a second. + + This object only has meaning for SDLC ports + where sdlcPortAdminRole == primary " + DEFVAL { 200 } + ::= { sdlcPortAdminEntry 7 } + +sdlcPortAdminSERVLIM OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object defines the number of times the + active poll list will be traversed before + polling a station on the slow poll list for a + primary, multipoint SDLC port. Depending on + the implementation, a write operation to this + administered value may not take effect until + the port is cycled inactive. + + This object only has meaning for SDLC ports + where + sdlcPortAdminRole == primary + and + sdlcPortAdminTopology == multipoint " + DEFVAL { 20 } + ::= { sdlcPortAdminEntry 8 } + +sdlcPortAdminSlowPollTimer OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object describes the elapsed time (in + 1/100ths of a second) between polls for failed + secondary link station addresses. Depending + on the implementation, a write operation to + this administered value may not take effect + until the port is cycled inactive. + + This object only has meaning for SDLC ports + where + sdlcPortAdminRole == primary + and + sdlcPortAdminTopology == multipoint " + DEFVAL { 2000 } + ::= { sdlcPortAdminEntry 9 } + +-- ************************************************************* +-- * * +-- * THE SDLC PORT OPERATIONAL TABLE * +-- * * +-- ************************************************************* + +sdlcPortOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcPortOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains current SDLC port + parameters. Many of these objects have + corresponding objects inthe sdlcPortAdminTable." + ::= { sdlcPortGroup 2 } + +sdlcPortOperEntry OBJECT-TYPE + SYNTAX SdlcPortOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Currently set parameters for a specific SDLC + port." + INDEX { ifIndex } + ::= { sdlcPortOperTable 1 } + +SdlcPortOperEntry ::= SEQUENCE +{ + sdlcPortOperName DisplayString, + sdlcPortOperRole INTEGER, + sdlcPortOperType INTEGER, + sdlcPortOperTopology INTEGER, + sdlcPortOperISTATUS INTEGER, + sdlcPortOperACTIVTO TimeInterval, + sdlcPortOperPAUSE TimeInterval, + sdlcPortOperSlowPollMethod INTEGER, + sdlcPortOperSERVLIM Integer32, + sdlcPortOperSlowPollTimer TimeInterval, + sdlcPortOperLastModifyTime TimeTicks, + sdlcPortOperLastFailTime TimeTicks, + sdlcPortOperLastFailCause INTEGER +} + +sdlcPortOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An octet string that describes the physical + port to which this interface is currently + attached. It has implementation-specific + significance." + ::= { sdlcPortOperEntry 1 } + +sdlcPortOperRole OBJECT-TYPE + SYNTAX INTEGER + { + primary(1), + secondary(2), + undefined(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the role that the link + station has assumed on this connection. + + Even though this is defined as a port object, + it is a link station attribute in the sense + that a role is per link station. However, it + is not possible to vary link station roles on a + particular port. For example, if an SDLC port + is configured to primary, all link stations on + that port must be primary. + + The value of sdlcPortOperRole is undefined(3) + whenever the link station role has not yet been + established by the mode setting command." + ::= { sdlcPortOperEntry 2 } + +sdlcPortOperType OBJECT-TYPE + SYNTAX INTEGER + { + leased(1), + switched(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This parameter defines whether the SDLC port + is currently operating as though connected to a + leased or switched line." + ::= { sdlcPortOperEntry 3 } + +sdlcPortOperTopology OBJECT-TYPE + SYNTAX INTEGER + { + pointToPoint(1), + multipoint(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This parameter defines whether the SDLC port is + currently operating in a point-to-point or + multipoint topology." + ::= { sdlcPortOperEntry 4 } + +sdlcPortOperISTATUS OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + active(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This parameter describes the initial value of + the administrative status, ifAdminStatus, of + this SDLC port at last port start-up." + ::= { sdlcPortOperEntry 5 } + + +sdlcPortOperACTIVTO OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This parameter defines the period of time (in + 100ths of a second) that the port will allow a + switched line to remain inactive before + disconnecting. A switched line is considered + to be inactive if there are no I-Frames being + transferred. + + The object descriptor contains the name of an + NCP configuration parameter, ACTIVTO. Please + note that the value of this object represents + 1/100ths of a second while the NCP ACTIVTO is + represented in seconds. + A value of zero indicates no timeout." + ::= { sdlcPortOperEntry 6 } + +sdlcPortOperPAUSE OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the current minimum + elapsed time (in 1/100ths of a second) between + any two traversals of the poll list for a + primary SDLC port. + + The object descriptor contains the name of an + NCP configuration parameter, PAUSE. Please + note that the value of this object represents + 1/100ths of a second while the NCP PAUSE is + represented in 1/10ths of a second. + + This object only has meaning for SDLC ports + where + sdlcPortAdminRole == primary " + ::= { sdlcPortOperEntry 7 } + +sdlcPortOperSlowPollMethod OBJECT-TYPE + SYNTAX INTEGER + { + servlim(1), + pollpause(2), + other(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object defines the exact method that is in + effect for periodically polling failed secondary + link station addresses. + + If sdlcPortOperSlowPollMethod == servlim, then + sdlcPortOperSERVLIM defines the actual polling + characteristics. + + If sdlcPortOperSlowPollMethod == pollpause, + then sdlcPortOperSlowPollTimer defines the + actual polling characteristics. + + If sdlcPortOperSlowPollMethod == other, then + the polling characteristics are modeled in + vendor-specific objects. + + This object only has meaning for SDLC ports + where + sdlcPortOperRole == primary + and + sdlcPortOperTopology == multipoint " + ::= { sdlcPortOperEntry 8 } + +sdlcPortOperSERVLIM OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the number of times the + active poll list is currently being traversed + before polling a station on the slow poll list + for a primary, multipoint SDLC port. + + This object only has meaning for SDLC ports + where + sdlcPortOperRole == primary + and + sdlcPortOperTopology == multipoint " + ::= { sdlcPortOperEntry 9 } + +sdlcPortOperSlowPollTimer OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the elapsed time (in + 1/100ths of a second) between polls for failed + secondary link station addresses. + + This object only has meaning for SDLC ports + where + sdlcPortOperRole == primary + and + sdlcPortOperTopology == multipoint " + ::= { sdlcPortOperEntry 10 } + +sdlcPortOperLastModifyTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the value of sysUpTime + when this port definition was last modified. + If the port has not been modified, then this + value shall be zero." + ::= { sdlcPortOperEntry 11 } + +sdlcPortOperLastFailTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the value of sysUpTime + when this SDLC port last failed. If the port + has not failed, then this value shall be zero." + ::= { sdlcPortOperEntry 12 } + +sdlcPortOperLastFailCause OBJECT-TYPE + SYNTAX INTEGER + { + undefined(1), + physical(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This enumerated object describes the cause of + the last failure of this SDLC port. If the + port has not failed, then this object has a + value of undefined(1)." + DEFVAL { undefined } + ::= { sdlcPortOperEntry 13 } + +-- ************************************************************* +-- * * +-- * THE SDLC PORT STATISTICS TABLE * +-- * * +-- ************************************************************* + +sdlcPortStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table contains statistics + for a specific SDLC port." + ::= { sdlcPortGroup 3 } + +sdlcPortStatsEntry OBJECT-TYPE + SYNTAX SdlcPortStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of statistics for an SDLC port." + INDEX { ifIndex } + ::= { sdlcPortStatsTable 1 } + +SdlcPortStatsEntry ::= SEQUENCE +{ + sdlcPortStatsPhysicalFailures Counter32, + sdlcPortStatsInvalidAddresses Counter32, + sdlcPortStatsDwarfFrames Counter32, + sdlcPortStatsPollsIn Counter32, + sdlcPortStatsPollsOut Counter32, + sdlcPortStatsPollRspsIn Counter32, + sdlcPortStatsPollRspsOut Counter32, + sdlcPortStatsLocalBusies Counter32, + sdlcPortStatsRemoteBusies Counter32, + sdlcPortStatsIFramesIn Counter32, + sdlcPortStatsIFramesOut Counter32, + sdlcPortStatsOctetsIn Counter32, + sdlcPortStatsOctetsOut Counter32, + sdlcPortStatsProtocolErrs Counter32, + sdlcPortStatsActivityTOs Counter32, + sdlcPortStatsRNRLIMITs Counter32, + sdlcPortStatsRetriesExps Counter32, + sdlcPortStatsRetransmitsIn Counter32, + sdlcPortStatsRetransmitsOut Counter32 +} + +sdlcPortStatsPhysicalFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of times + this port has failed due to its physical media + since port startup. At port startup time, + this object must be initialized to zero." + ::= { sdlcPortStatsEntry 1 } + +sdlcPortStatsInvalidAddresses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + frames received by this port with invalid link + station addresses." + ::= { sdlcPortStatsEntry 2 } + +sdlcPortStatsDwarfFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + frames received by this port which were + delivered intact by the physical layer but were + too short to be legal. + + Ignoring the frame check sequence (FCS), a + frame is considered to be too short if it + is less than 2 bytes for sdlcLSOperMODULO of + eight, or if it is less than 3 bytes for + sdlcLSOperMODULO of onetwentyeight." + + ::= { sdlcPortStatsEntry 3 } + +sdlcPortStatsPollsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of polls + received by this port since the port was + created." + + ::= { sdlcPortStatsEntry 4 } + +sdlcPortStatsPollsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of polls + sent by this port since the port was created." + + ::= { sdlcPortStatsEntry 5 } + +sdlcPortStatsPollRspsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of poll + responses received by this port since the port + was created." + + ::= { sdlcPortStatsEntry 6 } + +sdlcPortStatsPollRspsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of poll + responses sent by this port since the port was + created." + + ::= { sdlcPortStatsEntry 7 } + +sdlcPortStatsLocalBusies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the local SDLC link stations on + this port have entered a busy state (RNR). + This object is initialized to zero when the + port is created." + ::= { sdlcPortStatsEntry 8 } + +sdlcPortStatsRemoteBusies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the adjacent (i.e., remote) SDLC + link stations on this port have entered a busy + state (RNR). This object is initialized to + zero when the port is created." + ::= { sdlcPortStatsEntry 9 } + +sdlcPortStatsIFramesIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + I-Frames that have been received by SDLC link + stations on this port. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 10 } + +sdlcPortStatsIFramesOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + I-Frames that have been transmitted by SDLC + link stations on this port. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 11 } + +sdlcPortStatsOctetsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total octets + received from adjacent SDLC link stations on + this port. This object covers the address, + control, and information field of I-Frames + only. This object is initialized to zero when + the port is created." + ::= { sdlcPortStatsEntry 12 } + +sdlcPortStatsOctetsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total octets + transmitted to adjacent SDLC link stations on + this port. This object covers the address, + control, and information field of I-Frames + only. This object is initialized to zero when + the port is created." + ::= { sdlcPortStatsEntry 13 } + +sdlcPortStatsProtocolErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the SDLC link stations on this port + have deactivated the link as a result of + having received a protocol violation from the + adjacent link station. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 14 } + +sdlcPortStatsActivityTOs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the SDLC link stations on this port + have deactivated the link as a result of no + activity on the link. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 15 } + +sdlcPortStatsRNRLIMITs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the SDLC link stations on this port + have deactivated the link as a result of its + RNRLIMIT timer expiring. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 16 } + +sdlcPortStatsRetriesExps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + times that the SDLC link stations on this port + have deactivated the link as a result of a + retry sequence being exhausted. This object + is initialized to zero when the port is + created." + ::= { sdlcPortStatsEntry 17 } + +sdlcPortStatsRetransmitsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + I-Frames retransmitted by remote link stations + for all SDLC link stations on this port. This + object is initialized to zero when the port is + created." + ::= { sdlcPortStatsEntry 18 } + +sdlcPortStatsRetransmitsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + I-Frames retransmitted by all local SDLC link + stations on this port. This object is + initialized to zero when the port is created." + ::= { sdlcPortStatsEntry 19 } + +-- +-- THE SDLC LINK STATION GROUP +-- =========================== +-- + +-- The following classes of information is modelled for each SDLC link +-- station: +-- +-- 1. ADMINISTRATIVE ( read-write) +-- 2. OPERATIONAL ( read-only) +-- 3. STATISTICS ( read-only) + +-- ************************************************************* +-- * * +-- * THE SDLC LINK STATION ADMINISTRATIVE TABLE * +-- * * +-- ************************************************************* + +sdlcLSAdminTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcLSAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that can be + changed to manage an SDLC link station. + Changing one of these parameters may take + effect in the operating link immediately or may + wait until the link is restarted depending on + the details of the implementation. + + The entries in sdlcLSAdminTable can be created + either by an agent or a management station. The + management station can create an entry in + sdlcLSAdminTable by setting the appropriate + value in sdlcLSAdminRowStatus. + + Most of the objects in this read-create table + have corresponding read-only objects in the + sdlcLSOperTable that reflect the current + operating value. + + The operating values may be different from + these configured values if changed by XID + negotiation or if a configured parameter was + changed after the link was started." + ::= { sdlcLSGroup 1 } + +sdlcLSAdminEntry OBJECT-TYPE + SYNTAX SdlcLSAdminEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of configured values for an SDLC link + station." + INDEX { ifIndex, sdlcLSAddress } + ::= { sdlcLSAdminTable 1 } + +SdlcLSAdminEntry ::= SEQUENCE +{ + sdlcLSAddress INTEGER, + sdlcLSAdminName DisplayString, + sdlcLSAdminState INTEGER, + sdlcLSAdminISTATUS INTEGER, + sdlcLSAdminMAXDATASend Integer32, + sdlcLSAdminMAXDATARcv Integer32, + sdlcLSAdminREPLYTO TimeInterval, + sdlcLSAdminMAXIN INTEGER, + sdlcLSAdminMAXOUT INTEGER, + sdlcLSAdminMODULO INTEGER, + sdlcLSAdminRETRIESm INTEGER, + sdlcLSAdminRETRIESt TimeInterval, + sdlcLSAdminRETRIESn Integer32, + sdlcLSAdminRNRLIMIT TimeInterval, + sdlcLSAdminDATMODE INTEGER, + sdlcLSAdminGPoll INTEGER, + sdlcLSAdminSimRim INTEGER, + sdlcLSAdminXmitRcvCap INTEGER, + sdlcLSAdminRowStatus RowStatus +} + +sdlcLSAddress OBJECT-TYPE + SYNTAX INTEGER (1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This value is the poll address of the + secondary link station for this SDLC link. It + uniquely identifies the SDLC link station + within a single SDLC port." + ::= { sdlcLSAdminEntry 1 } + +sdlcLSAdminName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An octet string that defines the local name of + the SDLC link station. This field may be sent + in the XID3 control vector 0x0E, type 0xF7." + ::= { sdlcLSAdminEntry 2 } + +sdlcLSAdminState OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + active(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the desired state of the + SDLC station. The managed system shall attempt + to keep the operational state, sdlcLSOperState, + consistent with this value." + DEFVAL { active } + ::= { sdlcLSAdminEntry 3 } + +sdlcLSAdminISTATUS OBJECT-TYPE + SYNTAX INTEGER + { + inactive(1), + active(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter controls the desired state, + sdlcLSAdminState, of the SDLC link station at + link station start-up." + DEFVAL { active } + ::= { sdlcLSAdminEntry 4 } + +sdlcLSAdminMAXDATASend OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the maximum PDU size that + the local link station thinks it can send to + the adjacent link station before having + received any XID from the ALS. After the + maximum PDU size that the ALS can receive is + known (via XID exchange) that value is + reflected in sdlcLSOperMAXDATASend and takes + precedence over this object. + + This value includes the Transmission Header + (TH) and the Request Header (RH)." + ::= { sdlcLSAdminEntry 5 } + +sdlcLSAdminMAXDATARcv OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the maximum PDU size that + the local link station can receive from the + adjacent link station. This value is sent in + the XID to the ALS. + + This value includes the Transmission Header + (TH) and the Request Header (RH)." + ::= { sdlcLSAdminEntry 6 } + +sdlcLSAdminREPLYTO OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the reply timeout (in + 1/100ths of a second) for an SDLC link + station. If the link station does not receive + a response to a poll or message before the + specified time expires then the appropriate + error recovery shall be initiated. + + The object descriptor contains the name of an + NCP configuration parameter, REPLYTO. Please + note that the value of this object represents + 1/100ths of a second while the NCP REPLYTO is + represented in 1/10ths of a second. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, sdlcLSOperREPLYTO, + until the link station is cycled inactive. + + This object only has meaning for SDLC ports + where sdlcPortAdminRole == primary " + DEFVAL { 100 } + ::= { sdlcLSAdminEntry 7 } + +sdlcLSAdminMAXIN OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the maximum number of + unacknowledged I-frames which an SDLC link + station may receive. This should range from 1 + to (sdlcLSAdminMODULO - 1). This value is sent + in the XID to the ALS. + + A write operation to this administered value + will not change the operational value, + sdlcLSOperMAXIN, until the link station is + cycled inactive." + DEFVAL { 7 } + ::= { sdlcLSAdminEntry 8 } + +sdlcLSAdminMAXOUT OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the maximum number of + consecutive unacknowledged I-frames which an + SDLC link station shall send without an + acknowledgement. This shall range from 1 to + (sdlcLSAdminMODULO - 1). + + For link stations on switched SDLC lines, + certain implementions may choose to override + this administered value with the value + received in the XID exchange. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperMAXOUT, until the link station is + cycled inactive. + + An implementation can support only modulo 8, + only modulo 128, or both." + DEFVAL { 1 } + ::= { sdlcLSAdminEntry 9 } + +sdlcLSAdminMODULO OBJECT-TYPE + SYNTAX INTEGER + { + eight(8), + onetwentyeight(128) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the modulus for an SDLC + link station. This modulus determines the size + of the rotating acknowledgement window used the + SDLC link station pair. + + A write operation to this administered value + will not change the operational value, + sdlcLSOperMODULO, until the link station is + cycled inactive. + + An implementation can support only modulo 8, + only modulo 128, or both." + DEFVAL { eight } + ::= { sdlcLSAdminEntry 10 } + +sdlcLSAdminRETRIESm OBJECT-TYPE + SYNTAX INTEGER (0..128) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls number of retries in a + retry sequence for the local SDLC link + station. A retry sequence is a series of + retransmitted frames ( data or control) for + which no positive acknowledgement is received. + + The number of times that the retry sequence is + to be repeated is controlled by the object: + sdlcLSAdminRETRIESn. The interval between retry + sequences is controlled by the object: + sdlcLSAdminRETRIESt. + + A value of zero indicates no retries. If the + value of sdlcLSAdminRETRIESm is zero, then the + values of sdlcLSAdminRETRIESt and + sdlcLSAdminRETRIESn should also be zero. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperRETRIESm, until the link station is + cycled inactive." + DEFVAL { 15 } + ::= { sdlcLSAdminEntry 11 } + +sdlcLSAdminRETRIESt OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the interval (in 1/100ths + of a second) between retry sequences for the + local SDLC link station if multiple retry + sequences are specified . A retry sequence is + a series of retransmitted frames ( data or + control) for which no positive acknowledgement + is received. + + The number of repeated retries sequences is + controlled by the object: sdlcLSAdminRETRIESn. + The retries per sequence is controlled by the + object: sdlcLSAdminRETRIESm. + + The object descriptor contains the name of an + NCP configuration parameter, RETRIESt. Please + note that the value of this object represents + 1/100ths of a second while the NCP RETRIESt is + represented in seconds. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperRETRIESt, until the link station is + cycled inactive." + DEFVAL { 0 } + ::= { sdlcLSAdminEntry 12 } + +sdlcLSAdminRETRIESn OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the number of times that + a retry sequence is repeated for the local SDLC + link station. A retry sequence is a series of + retransmitted frames ( data or control) for + which no positive acknowledgement is received. + + The interval between retry sequences is + controlled by the object: sdlcLSAdminRETRIESn. + The retries per sequence is controlled by the + object: sdlcLSAdminRETRIESm. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperRETRIESn, until the link station is + cycled inactive." + DEFVAL { 0 } + ::= { sdlcLSAdminEntry 13 } + +sdlcLSAdminRNRLIMIT OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the length of time (in + 1/100ths of a second) that an SDLC link station + will allow its adjacent link station to remain + in a busy (RNR) state before declaring it + inoperative. + + A value of sdlcLSAdminRNRLIMIT == 0 means there + is no limit. + + The object descriptor contains the name of an + NCP configuration parameter, RNRLIMIT. Please + note that the value of this object represents + 1/100ths of a second while the NCP RNRLIMIT is + represented in minutes. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, + sdlcLSOperRNRLIMIT, until the link station is + cycled inactive." + DEFVAL { 18000 } + ::= { sdlcLSAdminEntry 14 } + +sdlcLSAdminDATMODE OBJECT-TYPE + SYNTAX INTEGER + { + half(1), + full(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls whether communications + mode with the adjacent link station is + two-way-alternate (half) or two-way-simultaneous + (full). + + A write operation to this administered value + will not change the operational value, + sdlcLSOperDATMODE, until the link station is + cycled inactive." + DEFVAL { half } + ::= { sdlcLSAdminEntry 15 } + +sdlcLSAdminGPoll OBJECT-TYPE + SYNTAX INTEGER (0..254) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object describes the group poll address + for this link station instance. If group poll + is not in effect for this link station + instance, the value for sdlcLSAdminGPoll should + be zero. + + Depending on the implementation, a write + operation to this administered value may not + change the operational value, sdlcLSOperGPoll, + until the link station is cycled inactive." + ::= { sdlcLSAdminEntry 16 } + +sdlcLSAdminSimRim OBJECT-TYPE + SYNTAX INTEGER + { + no(1), + yes(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the support for + transmission and receipt of SIM and RIM control + frames for this link station. The value of + this object controls the setting of the + transmit-receive capability sent in the XID + field." + DEFVAL { no } + ::= { sdlcLSAdminEntry 17 } + +sdlcLSAdminXmitRcvCap OBJECT-TYPE + SYNTAX INTEGER + { + twa(1), + tws(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls the transmit-receive + capabilities for this SDLC link station. The + value of this object establishes the value of + the transmit-receive capability indicator sent + in the XID image to the adjacent link station." + DEFVAL { twa } + ::= { sdlcLSAdminEntry 18 } + +sdlcLSAdminRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used by a management station to + create or delete the row entry in + sdlcLSAdminTable following the RowStatus + textual convention. + + Upon successful creation of the row, an agent + automatically creates a corresponding entry in + the sdlcLSOperTable with sdlcLSOperState equal + to 'discontacted (1)'." + ::= { sdlcLSAdminEntry 19 } + +-- ************************************************************* +-- * * +-- * THE SDLC LINK STATION OPERATIONAL TABLE * +-- * * +-- ************************************************************* + +sdlcLSOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcLSOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains current SDLC link + parameters. Many of these objects have + corresponding objects in the + sdlcLSAdminTable." + ::= { sdlcLSGroup 2 } + +sdlcLSOperEntry OBJECT-TYPE + SYNTAX SdlcLSOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of status and control values for an + SDLC link station." + INDEX { ifIndex, sdlcLSAddress } + ::= { sdlcLSOperTable 1 } + +SdlcLSOperEntry ::= SEQUENCE +{ + sdlcLSOperName DisplayString, + sdlcLSOperRole INTEGER, + sdlcLSOperState INTEGER, + sdlcLSOperMAXDATASend Integer32, + sdlcLSOperREPLYTO TimeInterval, + sdlcLSOperMAXIN INTEGER, + sdlcLSOperMAXOUT INTEGER, + sdlcLSOperMODULO INTEGER, + sdlcLSOperRETRIESm INTEGER, + sdlcLSOperRETRIESt TimeInterval, + sdlcLSOperRETRIESn INTEGER, + sdlcLSOperRNRLIMIT TimeInterval, + sdlcLSOperDATMODE INTEGER, + sdlcLSOperLastModifyTime TimeTicks, + sdlcLSOperLastFailTime TimeTicks, + sdlcLSOperLastFailCause INTEGER, + sdlcLSOperLastFailCtrlIn OCTET STRING, + sdlcLSOperLastFailCtrlOut OCTET STRING, + sdlcLSOperLastFailFRMRInfo OCTET STRING, + sdlcLSOperLastFailREPLYTOs Counter32, + sdlcLSOperEcho INTEGER, + sdlcLSOperGPoll INTEGER, + sdlcLSOperSimRim INTEGER, + sdlcLSOperXmitRcvCap INTEGER +} + +sdlcLSOperName OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..10)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An octet string that defines the name of the + remote SDLC link station. This field is + received in the XID3 control vector 0x0E, type + 0xF7." + ::= { sdlcLSOperEntry 1 } + +sdlcLSOperRole OBJECT-TYPE + SYNTAX INTEGER + { + primary(1), + secondary(2), + undefined(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current role that the + link station is assuming. + + The value of sdlcLSOperRole is undefined(3) + whenever the link station role has not yet been + established by the mode setting command." + ::= { sdlcLSOperEntry 2 } + +sdlcLSOperState OBJECT-TYPE + SYNTAX INTEGER + { + discontacted(1), + contactPending(2), + contacted(3), + discontactPending(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the operational state of + the SDLC link station. The managed system + shall attempt to keep this value consistent + with the administered state, sdlcLSAdminState" + ::= { sdlcLSOperEntry 3 } + +sdlcLSOperMAXDATASend OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the actual maximum PDU + size that the local link station can send to + the adjacent link station. This object is + established from the value received in the XID + from the adjacent link station. If no XID + is received, then this value is implementation + dependent (for instance, it could be the value + of sdlcLSAdminMAXDATASend). + This value includes the Transmission Header + (TH) and the Request Header (RH)." + ::= { sdlcLSOperEntry 4 } + +sdlcLSOperREPLYTO OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current reply timeout + (in 1/100ths of a second) for an SDLC link + station. If the link station does not receive + a response to a poll or message before the + specified time expires then the appropriate + error recovery shall be initiated. + + The object descriptor contains the name of an + NCP configuration parameter, REPLYTO. Please + note that the value of this object represents + 1/100ths of a second while the NCP REPLYTO is + represented in 1/10ths of a second. + + This object only has meaning for SDLC ports + where sdlcPortOperRole == primary " + ::= { sdlcLSOperEntry 5 } + +sdlcLSOperMAXIN OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current maximum + number of unacknowledged I-frames which an SDLC + link station may receive. This shall range + from 1 to (sdlcLSOperMODULO - 1)." + ::= { sdlcLSOperEntry 6 } + +sdlcLSOperMAXOUT OBJECT-TYPE + SYNTAX INTEGER (1..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object controls the maximum number of + consecutive unacknowledged I-frames which an + SDLC link station shall send without an + acknowledgement. This shall range from 1 to + (sdlcLSAdminMODULO - 1). + This value may controlled by the administered + MAXOUT, sdlcLSAdminMAXOUT, or by the MAXIN value + received during the XID exchange." + ::= { sdlcLSOperEntry 7 } + +sdlcLSOperMODULO OBJECT-TYPE + SYNTAX INTEGER + { + eight(8), + onetwentyeight(128) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current modulus for + an SDLC link station. This modulus determines + the size of rotating acknowledgement window + used by the SDLC link station pair." + DEFVAL { eight } + ::= { sdlcLSOperEntry 8 } + +sdlcLSOperRETRIESm OBJECT-TYPE + SYNTAX INTEGER (0..128) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object controls number of retries in a + retry sequence for an SDLC link station. A + retry sequence is a series of retransmitted + frames ( data or control) for which no positive + acknowledgement is received. + + The current number of times that the retry + sequence is to be repeated is reflected by the + object: sdlcLSOperRETRIESn. The current + interval between retry sequences is reflected + by the object: sdlcLSOperRETRIESt." + ::= { sdlcLSOperEntry 9 } + +sdlcLSOperRETRIESt OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current interval (in + 1/100ths of a second) between retry sequences + for an SDLC link station if multiple retry + sequences are specified. A retry sequence is a + series of retransmitted frames ( data or + control) for which no positive acknowledgement + is received. + + The object descriptor contains the name of an + NCP configuration parameter, RETRIESt. Please + note that the value of this object represents + 1/100ths of a second while the NCP RETRIESt is + represented in seconds. + + The current number of repeated retries + sequences is reflected by the object: + sdlcLSOperRETRIESn. The current retries per + sequence is reflected by the object: + sdlcLSOperRETRIESm." + ::= { sdlcLSOperEntry 10 } + +sdlcLSOperRETRIESn OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current number of + times that a retry sequence is repeated for an + SDLC link station. A retry sequence is a + series of retransmitted frames ( data or + control) for which no positive acknowledgement + is received. + + The current interval between retry sequences is + reflected by the object: sdlcLSOperRETRIESn. + The current retries per sequence is reflected + by the object: sdlcLSOperRETRIESm." + ::= { sdlcLSOperEntry 11 } + +sdlcLSOperRNRLIMIT OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the current length of + time (in 1/100ths of a second) that an SDLC + link station will allow its adjacent link + station to remain in a busy (RNR) state before + declaring it inoperative. + + The object descriptor contains the name of an + NCP configuration parameter, RNRLIMIT. Please + note that the value of this object represents + 1/100ths of a second while the NCP RNRLIMIT is + represented in minutes. + + A value of sdlcLSOperRNRLIMIT == 0 means there + is no limit." + ::= { sdlcLSOperEntry 12 } + +sdlcLSOperDATMODE OBJECT-TYPE + SYNTAX INTEGER + { + half(1), + full(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects whether the current + communications mode with the adjacent link + station is two-way-alternate (half) or + two-way-simultaneous (full)." + ::= { sdlcLSOperEntry 13 } + +sdlcLSOperLastModifyTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the value of sysUpTime + when this link station definition was last + modified. If the link station has not been + modified, then this value shall be zero." + ::= { sdlcLSOperEntry 14 } + +sdlcLSOperLastFailTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the value of sysUpTime + when this SDLC link station last failed. If + the link station has not failed, then this + value shall be zero." + ::= { sdlcLSOperEntry 15 } + +sdlcLSOperLastFailCause OBJECT-TYPE + SYNTAX INTEGER + { + undefined(1), + rxFRMR(2), + txFRMR(3), + noResponse(4), + protocolErr(5), + noActivity(6), + rnrLimit(7), + retriesExpired(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This enumerated object reflects the cause of + the last failure of this SDLC link station. If + the link station has not failed, then this + object will have a value of undefined(1)." + DEFVAL { undefined } + ::= { sdlcLSOperEntry 16 } + +sdlcLSOperLastFailCtrlIn OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the last control octet or + octets (depending on modulus) received by this + SDLC link station at the time of the last + failure. If the link station has not failed, + then this value has no meaning." + ::= { sdlcLSOperEntry 17 } + +sdlcLSOperLastFailCtrlOut OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the last control octet or + octets (depending on modulus) sent by this SDLC + link station at the time of the last failure. + If the link station has not failed, then this + value has no meaning." + ::= { sdlcLSOperEntry 18 } + +sdlcLSOperLastFailFRMRInfo OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(3)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the information field of + the FRMR frame if the last failure for this + SDLC link station was as a result of an invalid + frame. Otherwise, this field has no meaning." + ::= { sdlcLSOperEntry 19 } + +sdlcLSOperLastFailREPLYTOs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the number of times that + the REPLYTO timer had expired for an SDLC link + station at the time of the last failure. If the + link station has not failed, then this value + has no meaning." + ::= { sdlcLSOperEntry 20 } + +sdlcLSOperEcho OBJECT-TYPE + SYNTAX INTEGER + { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies whether the echo bit is + in effect for this particular link station." + DEFVAL { no } + ::= { sdlcLSOperEntry 21 } + +sdlcLSOperGPoll OBJECT-TYPE + SYNTAX INTEGER (0..254) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object describes the group poll address + in effect for this link station instance." + DEFVAL { 0 } + ::= { sdlcLSOperEntry 22 } + +sdlcLSOperSimRim OBJECT-TYPE + SYNTAX INTEGER + { + no(1), + yes(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the support for + transmission and receipt of SIM and RIM control + frames for the adjacent link station. The + value of this object is set from the XID field + received from the adjacent link station." + DEFVAL { no } + ::= { sdlcLSOperEntry 23 } + +sdlcLSOperXmitRcvCap OBJECT-TYPE + SYNTAX INTEGER + { + twa(1), + tws(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the transmit-receive + capabilities for the adjacent SDLC link + station. The value of this object is the value + of the transmit-receive capability indicator + received in the XID image from the adjacent + link station." + DEFVAL { twa } + ::= { sdlcLSOperEntry 24 } + + +-- ************************************************************* +-- * * +-- * THE SDLC LINK STATION STATISTICS TABLE * +-- * * +-- ************************************************************* + +sdlcLSStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SdlcLSStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table contains statistics + for a specific SDLC link station." + ::= { sdlcLSGroup 3 } + +sdlcLSStatsEntry OBJECT-TYPE + SYNTAX SdlcLSStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of statistics for an SDLC link station." + INDEX { ifIndex, sdlcLSAddress } + ::= { sdlcLSStatsTable 1 } + +SdlcLSStatsEntry ::= SEQUENCE +{ + sdlcLSStatsBLUsIn Counter32, + sdlcLSStatsBLUsOut Counter32, + sdlcLSStatsOctetsIn Counter32, + sdlcLSStatsOctetsOut Counter32, + sdlcLSStatsPollsIn Counter32, + sdlcLSStatsPollsOut Counter32, + sdlcLSStatsPollRspsIn Counter32, + sdlcLSStatsPollRspsOut Counter32, + sdlcLSStatsLocalBusies Counter32, + sdlcLSStatsRemoteBusies Counter32, + sdlcLSStatsIFramesIn Counter32, + sdlcLSStatsIFramesOut Counter32, + sdlcLSStatsUIFramesIn Counter32, + sdlcLSStatsUIFramesOut Counter32, + sdlcLSStatsXIDsIn Counter32, + sdlcLSStatsXIDsOut Counter32, + sdlcLSStatsTESTsIn Counter32, + sdlcLSStatsTESTsOut Counter32, + sdlcLSStatsREJsIn Counter32, + sdlcLSStatsREJsOut Counter32, + sdlcLSStatsFRMRsIn Counter32, + sdlcLSStatsFRMRsOut Counter32, + sdlcLSStatsSIMsIn Counter32, + sdlcLSStatsSIMsOut Counter32, + sdlcLSStatsRIMsIn Counter32, + sdlcLSStatsRIMsOut Counter32, + sdlcLSStatsDISCIn Counter32, + sdlcLSStatsDISCOut Counter32, + sdlcLSStatsUAIn Counter32, + sdlcLSStatsUAOut Counter32, + sdlcLSStatsDMIn Counter32, + sdlcLSStatsDMOut Counter32, + sdlcLSStatsSNRMIn Counter32, + sdlcLSStatsSNRMOut Counter32, + sdlcLSStatsProtocolErrs Counter32, + sdlcLSStatsActivityTOs Counter32, + sdlcLSStatsRNRLIMITs Counter32, + sdlcLSStatsRetriesExps Counter32, + sdlcLSStatsRetransmitsIn Counter32, + sdlcLSStatsRetransmitsOut Counter32 +} + +sdlcLSStatsBLUsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total basic link + units (BLUs; frames) received from an adjacent + SDLC link station since link station startup. + At link station startup time, this object must + be initialized to zero." + ::= { sdlcLSStatsEntry 1 } + +sdlcLSStatsBLUsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total basic link + units (BLUs; frames), transmitted to an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 2 } + +sdlcLSStatsOctetsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total octets received + from an adjacent SDLC link station since link + station startup. This object covers the + address, control, and information field of + I-Frames only. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 3 } + +sdlcLSStatsOctetsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total octets + transmitted to an adjacent SDLC link station + since link station startup. This object covers + the address, control, and information field of + I-Frames only. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 4 } + +sdlcLSStatsPollsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total polls received + from an adjacent SDLC link station since link + station startup. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 5 } + +sdlcLSStatsPollsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total polls sent to + an adjacent SDLC link station since link + station startup. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 6 } + +sdlcLSStatsPollRspsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of poll + responses sent to the adjacent SDLC link + station since link station startup. This value + includes I-frames that are sent in response to + a poll. + + At link station startup time, this object must + be initialized to zero." + ::= { sdlcLSStatsEntry 7 } + +sdlcLSStatsPollRspsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of poll + responses received from the adjacent SDLC link + station since station startup. This value + includes I-frames that are received in response + to a poll. + + At link station startup time, this object must + be initialized to zero." + ::= { sdlcLSStatsEntry 8 } + +sdlcLSStatsLocalBusies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of times + that the local SDLC link station has entered a + busy state (RNR) since link station startup. + At link station startup time, this object must + be initialized to zero." + ::= { sdlcLSStatsEntry 9 } + +sdlcLSStatsRemoteBusies OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of times + that an adjacent ( remote) SDLC link station + has entered a busy state (RNR) since link + station startup. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 10 } + +sdlcLSStatsIFramesIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total I-frames + received from an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 11 } + +sdlcLSStatsIFramesOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total I-frames + transmitted to an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 12 } + +sdlcLSStatsUIFramesIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total UI-frames + received from an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 13 } + +sdlcLSStatsUIFramesOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total UI-frames + transmitted to an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 14 } + +sdlcLSStatsXIDsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total XID frames + received from an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 15 } + +sdlcLSStatsXIDsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total XID frames + transmitted to an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 16 } + +sdlcLSStatsTESTsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total TEST frames, + commands or responses, received from an + adjacent SDLC link station since link station + startup." + ::= { sdlcLSStatsEntry 17 } + +sdlcLSStatsTESTsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total TEST frames, + commands or responses, transmitted to an + adjacent SDLC link station since link station + startup." + ::= { sdlcLSStatsEntry 18 } + +sdlcLSStatsREJsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total REJ frames + received from an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 19 } + +sdlcLSStatsREJsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total REJ frames + transmitted to an adjacent SDLC link station + since link station startup." + ::= { sdlcLSStatsEntry 20 } + +sdlcLSStatsFRMRsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total frame reject + (FRMR) frames received from an adjacent SDLC + link station since link station startup." + ::= { sdlcLSStatsEntry 21 } + +sdlcLSStatsFRMRsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total frame reject + (FRMR) frames transmitted to an adjacent SDLC + link station since link station startup." + ::= { sdlcLSStatsEntry 22 } + +sdlcLSStatsSIMsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total set + initialization mode (SIM) frames received from + an adjacent SDLC link station since link station + startup." + ::= { sdlcLSStatsEntry 23 } + +sdlcLSStatsSIMsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total set + initialization mode (SIM) frames transmitted to + an adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 24 } + +sdlcLSStatsRIMsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total request + initialization mode (RIM) frames received from + an adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 25 } + +sdlcLSStatsRIMsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total request + initialization mode (RIM) frames transmitted to + an adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 26 } + +sdlcLSStatsDISCIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + disconnect (DISC) requests received from an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 27 } + +sdlcLSStatsDISCOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + disconnect (DISC) requests transmited to an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 28 } + +sdlcLSStatsUAIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + unnumbered acknowledgements (UA) requests + received from an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 29 } + +sdlcLSStatsUAOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + unnumbered acknowledgements (UA) requests + transmited to an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 30 } + +sdlcLSStatsDMIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + disconnect mode (DM) requests received from an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 31 } + +sdlcLSStatsDMOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + disconnect mode (DM) requests transmited to an + adjacent SDLC link station since link station + startup. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 32 } + +sdlcLSStatsSNRMIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + set normal response mode (SNRM/SNRME) requests + received from an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 33 } + +sdlcLSStatsSNRMOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + set normal response mode (SNRM/SNRME) requests + transmited to an adjacent SDLC link station + since link station startup. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 34 } + +sdlcLSStatsProtocolErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total occurrences, + since link station startup, where this SDLC + link station has inactivated the link as a + result of receiving a frame from its adjacent + link station which was in violation of the + protocol. At link station startup time, this + object must be initialized to zero." + ::= { sdlcLSStatsEntry 35 } + +sdlcLSStatsActivityTOs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total occurrences, + since startup, where this SDLC link station has + inactivated the link as a result of no activity + on the link. At link station startup time, + this object must be initialized to zero." + ::= { sdlcLSStatsEntry 36 } + +sdlcLSStatsRNRLIMITs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total occurrences, + since startup, where this SDLC link station has + inactivated the link as a result of its + RNRLIMIT timer expiring. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 37 } + +sdlcLSStatsRetriesExps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total occurrences, + since startup, where this SDLC link station has + inactivated the link as a result of a retry + sequence being exhausted. At link station + startup time, this object must be initialized + to zero." + ::= { sdlcLSStatsEntry 38 } + +sdlcLSStatsRetransmitsIn OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + information frames retransmitted by the remote + link station because the N(s) received from + that link station indicated that one or more + information frames sent by that station were + lost. This event causes the first missing + information frame of a window and all + subsequent information frames to be + retransmitted. At link station startup time, + this object must be initialized to zero. + + Management: If the value of + sdlcLSStatsRetransmitsIn grows over time, then + the quality of the serial line is in + question. You might want to look at + decreasing the value for + sdlcLSAdminMAXDATASend to compensate for the + lower quality line." + ::= { sdlcLSStatsEntry 39 } + +sdlcLSStatsRetransmitsOut OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reflects the total number of + information frames retransmitted to a remote + link station because the N(r) received from + that link station indicated that one or more + information frames sent to that station were + lost. This event causes the first missing + information frame of a window and all + subsequent information frames to be + retransmitted. At link station startup time, + this object must be initialized to zero. + + Management: If the value of + sdlcLSStatsRetransmitsOut grows over time, + then the quality of the serial line is in + question. You might want to look at + decreasing the value for sdlcLSAdminMAXDATASend + to compensate for the lower quality line." + ::= { sdlcLSStatsEntry 40 } + +-- +-- TRAP DEFINITIONS +-- + +-- +-- Notifications +-- + +sdlcTraps OBJECT IDENTIFIER ::= { sdlc 3 } + +sdlcPortStatusChange NOTIFICATION-TYPE + OBJECTS { ifIndex, + ifAdminStatus, + ifOperStatus, + sdlcPortOperLastFailTime, + sdlcPortOperLastFailCause + } + STATUS current + DESCRIPTION + "This trap indicates that the state of an SDLC + port has transitioned to active or inactive." + ::= { sdlcTraps 1 } + +sdlcLSStatusChange NOTIFICATION-TYPE + OBJECTS { ifIndex, + sdlcLSAddress, + sdlcLSOperState, + sdlcLSAdminState, + sdlcLSOperLastFailTime, + sdlcLSOperLastFailCause, + sdlcLSOperLastFailFRMRInfo, + sdlcLSOperLastFailCtrlIn, + sdlcLSOperLastFailCtrlOut, + sdlcLSOperLastFailREPLYTOs + } + STATUS current + DESCRIPTION + "This trap indicates that the state of an SDLC + link station has transitioned to contacted or + discontacted." + ::= { sdlcTraps 2 } + + +-- +-- Conformance Information +-- + +sdlcConformance OBJECT IDENTIFIER ::= { sdlc 4 } + +sdlcCompliances OBJECT IDENTIFIER ::= { sdlcConformance 1 } +sdlcGroups OBJECT IDENTIFIER ::= { sdlcConformance 2 } + +-- +-- Compliance Statements +-- + +sdlcCoreCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The core compliance statement for all SDLC + nodes." + MODULE + MANDATORY-GROUPS + { + sdlcCorePortAdminGroup, + sdlcCorePortOperGroup, + sdlcCorePortStatsGroup, + sdlcCoreLSAdminGroup, + sdlcCoreLSOperGroup, + sdlcCoreLSStatsGroup + } + + OBJECT sdlcPortAdminName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + OBJECT sdlcPortAdminRole + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcPortAdminType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcPortAdminTopology + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcPortAdminISTATUS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminISTATUS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMAXDATASend + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMAXDATARcv + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMAXIN + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMAXOUT + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminMODULO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRETRIESm + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRETRIESt + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRETRIESn + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRNRLIMIT + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminDATMODE + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminGPoll + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminSimRim + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { sdlcCompliances 1 } + +sdlcPrimaryCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for all nodes that + are performing the role of a Primary link + station." + MODULE + MANDATORY-GROUPS { sdlcPrimaryGroup } + + OBJECT sdlcPortAdminPAUSE + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcLSAdminREPLYTO + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { sdlcCompliances 2 } + +sdlcPrimaryMultipointCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for all nodes that + are performing the role of a primary link + station on a multipoint line." + MODULE + MANDATORY-GROUPS { sdlcPrimaryMultipointGroup } + + OBJECT sdlcPortAdminSERVLIM + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sdlcPortAdminSlowPollTimer + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { sdlcCompliances 3 } + + +-- +-- Core Conformance Groups for All Link Stations +-- + +sdlcCoreGroups OBJECT IDENTIFIER ::= { sdlcGroups 1 } + +sdlcCorePortAdminGroup OBJECT-GROUP + OBJECTS + { + sdlcPortAdminName, sdlcPortAdminRole, + sdlcPortAdminType, sdlcPortAdminTopology, + sdlcPortAdminISTATUS + } + STATUS current + DESCRIPTION + "The sdlcCorePortAdminGroup defines objects + which are common to the PortAdmin group of all + compliant link stations." + ::= { sdlcCoreGroups 1 } + +sdlcCorePortOperGroup OBJECT-GROUP + OBJECTS + { + sdlcPortOperName, + sdlcPortOperRole, + sdlcPortOperType, + sdlcPortOperTopology, + sdlcPortOperISTATUS, + sdlcPortOperACTIVTO, + sdlcPortOperLastFailTime, + sdlcPortOperLastFailCause + } + STATUS current + DESCRIPTION + "The sdlcCorePortOperGroup defines objects + which are common to the PortOper group of all + compliant link stations." + ::= { sdlcCoreGroups 2 } + + +sdlcCorePortStatsGroup OBJECT-GROUP + OBJECTS + { + sdlcPortStatsPhysicalFailures, + sdlcPortStatsInvalidAddresses, + sdlcPortStatsDwarfFrames + } + STATUS current + DESCRIPTION + "The sdlcCorePortStatsGroup defines objects + which are common to the PortStats group of all + compliant link stations." + ::= { sdlcCoreGroups 3 } + + +sdlcCoreLSAdminGroup OBJECT-GROUP + OBJECTS + { + sdlcLSAddress, + sdlcLSAdminName, + sdlcLSAdminState, + sdlcLSAdminISTATUS, + sdlcLSAdminMAXDATASend, + sdlcLSAdminMAXDATARcv, + sdlcLSAdminMAXIN, + sdlcLSAdminMAXOUT, + sdlcLSAdminMODULO, + sdlcLSAdminRETRIESm, + sdlcLSAdminRETRIESt, + sdlcLSAdminRETRIESn, + sdlcLSAdminRNRLIMIT, + sdlcLSAdminDATMODE, + sdlcLSAdminGPoll, + sdlcLSAdminSimRim, + sdlcLSAdminRowStatus + } + STATUS current + DESCRIPTION + "The sdlcCorePortAdminGroup defines objects + which are common to the PortAdmin group of all + compliant link stations." + ::= { sdlcCoreGroups 4 } + +sdlcCoreLSOperGroup OBJECT-GROUP + OBJECTS + { + sdlcLSOperRole, + sdlcLSOperState, + sdlcLSOperMAXDATASend, + sdlcLSOperMAXIN, + sdlcLSOperMAXOUT, + sdlcLSOperMODULO, + sdlcLSOperRETRIESm, + sdlcLSOperRETRIESt, + sdlcLSOperRETRIESn, + sdlcLSOperRNRLIMIT, + sdlcLSOperDATMODE, + sdlcLSOperLastFailTime, + sdlcLSOperLastFailCause, + sdlcLSOperLastFailCtrlIn, + sdlcLSOperLastFailCtrlOut, + sdlcLSOperLastFailFRMRInfo, + sdlcLSOperLastFailREPLYTOs, + sdlcLSOperEcho, + sdlcLSOperGPoll + } + STATUS current + DESCRIPTION + "The sdlcCorePortOperGroup defines objects + which are common to the PortOper group of all + compliant link stations." + ::= { sdlcCoreGroups 5 } + + +sdlcCoreLSStatsGroup OBJECT-GROUP + OBJECTS + { + sdlcLSStatsBLUsIn, + sdlcLSStatsBLUsOut, + sdlcLSStatsOctetsIn, + sdlcLSStatsOctetsOut, + sdlcLSStatsPollsIn, + sdlcLSStatsPollsOut, + sdlcLSStatsPollRspsIn, + sdlcLSStatsPollRspsOut, + sdlcLSStatsLocalBusies, + sdlcLSStatsRemoteBusies, + sdlcLSStatsIFramesIn, + sdlcLSStatsIFramesOut, + sdlcLSStatsRetransmitsIn, + sdlcLSStatsRetransmitsOut, + sdlcLSStatsUIFramesIn, + sdlcLSStatsUIFramesOut, + sdlcLSStatsXIDsIn, + sdlcLSStatsXIDsOut, + sdlcLSStatsTESTsIn, + sdlcLSStatsTESTsOut, + sdlcLSStatsREJsIn, + sdlcLSStatsREJsOut, + sdlcLSStatsFRMRsIn, + sdlcLSStatsFRMRsOut, + sdlcLSStatsSIMsIn, + sdlcLSStatsSIMsOut, + sdlcLSStatsRIMsIn, + sdlcLSStatsRIMsOut, + sdlcLSStatsProtocolErrs, + sdlcLSStatsRNRLIMITs, + sdlcLSStatsRetriesExps + } + STATUS current + DESCRIPTION + "The sdlcCorePortStatsGroup defines objects + which are common to the PortStats group of all + compliant link stations." + ::= { sdlcCoreGroups 6 } + + +-- +-- Conformance Groups for Primary Link Stations +-- + +sdlcPrimaryGroups OBJECT IDENTIFIER ::= { sdlcGroups 2 } + +sdlcPrimaryGroup OBJECT-GROUP + OBJECTS + { + sdlcPortAdminPAUSE, + sdlcPortOperPAUSE, + sdlcLSAdminREPLYTO, + sdlcLSOperREPLYTO + } + STATUS current + DESCRIPTION + "The sdlcPrimaryGroup defines objects which + are common to all compliant primary link + stations." + ::= { sdlcPrimaryGroups 1 } + +sdlcPrimaryMultipointGroup OBJECT-GROUP + OBJECTS + { + sdlcPortAdminSERVLIM, + sdlcPortAdminSlowPollTimer, + sdlcPortOperSlowPollMethod, + sdlcPortOperSERVLIM, + sdlcPortOperSlowPollTimer + } + STATUS current + DESCRIPTION + "The sdlcPrimaryMultipointGroup defines objects + which are common to all compliant primary link + stations that are in a multipoint topology." + ::= { sdlcPrimaryGroups 2 } + + +END diff --git a/mibs/ietf/SNMP-COMMUNITY-MIB b/mibs/ietf/SNMP-COMMUNITY-MIB new file mode 100644 index 0000000..d24f4e0 --- /dev/null +++ b/mibs/ietf/SNMP-COMMUNITY-MIB @@ -0,0 +1,443 @@ +SNMP-COMMUNITY-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IpAddress, + MODULE-IDENTITY, + OBJECT-TYPE, + Integer32, + snmpModules + FROM SNMPv2-SMI + RowStatus, + StorageType + FROM SNMPv2-TC + SnmpAdminString, + SnmpEngineID + FROM SNMP-FRAMEWORK-MIB + SnmpTagValue, + snmpTargetAddrEntry + FROM SNMP-TARGET-MIB + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF; + +snmpCommunityMIB MODULE-IDENTITY + LAST-UPDATED "200003060000Z" -- 6 Mar 2000, midnight + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In msg body: subscribe snmpv3 + + Chair: Russ Mundy + TIS Labs at Network Associates + Postal: 3060 Washington Rd + Glenwood MD 21738 + USA + Email: mundy@tislabs.com + Phone: +1-301-854-6889 + + + + Co-editor: Rob Frye + CoSine Communications + Postal: 1200 Bridge Parkway + Redwood City, CA 94065 + USA + E-mail: rfrye@cosinecom.com + Phone: +1 703 725 1130 + + Co-editor: David B. Levi + Nortel Networks + Postal: 3505 Kesterwood Drive + Knoxville, TN 37918 + E-mail: dlevi@nortelnetworks.com + Phone: +1 423 686 0432 + + Co-editor: Shawn A. Routhier + Integrated Systems Inc. + Postal: 333 North Ave 4th Floor + Wakefield, MA 01880 + E-mail: sar@epilogue.com + Phone: +1 781 245 0804 + + Co-editor: Bert Wijnen + Lucent Technologies + Postal: Schagen 33 + 3461 GL Linschoten + Netherlands + Email: bwijnen@lucent.com + Phone: +31-348-407-775 + " + + DESCRIPTION + "This MIB module defines objects to help support coexistence + between SNMPv1, SNMPv2c, and SNMPv3." + REVISION "200003060000Z" -- 6 Mar 2000 + DESCRIPTION "This version published as RFC 2576." + REVISION "199905130000Z" -- 13 May 1999 + DESCRIPTION "The Initial Revision" + ::= { snmpModules 18 } + +-- Administrative assignments **************************************** + +snmpCommunityMIBObjects OBJECT IDENTIFIER ::= { snmpCommunityMIB 1 } +snmpCommunityMIBConformance OBJECT IDENTIFIER ::= { snmpCommunityMIB 2 } + +-- +-- The snmpCommunityTable contains a database of community strings. +-- This table provides mappings between community strings, and the + + +-- parameters required for View-based Access Control. +-- + +snmpCommunityTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of community strings configured in the SNMP + engine's Local Configuration Datastore (LCD)." + ::= { snmpCommunityMIBObjects 1 } + +snmpCommunityEntry OBJECT-TYPE + SYNTAX SnmpCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular community string." + INDEX { IMPLIED snmpCommunityIndex } + ::= { snmpCommunityTable 1 } + +SnmpCommunityEntry ::= SEQUENCE { + snmpCommunityIndex SnmpAdminString, + snmpCommunityName OCTET STRING, + snmpCommunitySecurityName SnmpAdminString, + snmpCommunityContextEngineID SnmpEngineID, + snmpCommunityContextName SnmpAdminString, + snmpCommunityTransportTag SnmpTagValue, + snmpCommunityStorageType StorageType, + snmpCommunityStatus RowStatus +} + +snmpCommunityIndex OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The unique index value of a row in this table." + ::= { snmpCommunityEntry 1 } + +snmpCommunityName OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The community string for which a row in this table + represents a configuration." + ::= { snmpCommunityEntry 2 } + + +snmpCommunitySecurityName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A human readable string representing the corresponding + value of snmpCommunityName in a Security Model + independent format." + ::= { snmpCommunityEntry 3 } + +snmpCommunityContextEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contextEngineID indicating the location of the + context in which management information is accessed + when using the community string specified by the + corresponding instance of snmpCommunityName. + + The default value is the snmpEngineID of the entity in + which this object is instantiated." + ::= { snmpCommunityEntry 4 } + +snmpCommunityContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The context in which management information is accessed + when using the community string specified by the corresponding + instance of snmpCommunityName." + DEFVAL { ''H } -- the empty string + ::= { snmpCommunityEntry 5 } + +snmpCommunityTransportTag OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies a set of transport endpoints + from which a command responder application will accept + management requests. If a management request containing + this community is received on a transport endpoint other + than the transport endpoints identified by this object, + the request is deemed unauthentic. + + The transports identified by this object are specified + + + in the snmpTargetAddrTable. Entries in that table + whose snmpTargetAddrTagList contains this tag value + are identified. + + If the value of this object has zero-length, transport + endpoints are not checked when authenticating messages + containing this community string." + DEFVAL { ''H } -- the empty string + ::= { snmpCommunityEntry 6 } + +snmpCommunityStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + snmpCommunityTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { snmpCommunityEntry 7 } + +snmpCommunityStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row in the snmpCommunityTable. + + An entry in this table is not qualified for activation + until instances of all corresponding columns have been + initialized, either through default values, or through + Set operations. The snmpCommunityName and + snmpCommunitySecurityName objects must be explicitly set. + + There is no restriction on setting columns in this table + when the value of snmpCommunityStatus is active(1)." + ::= { snmpCommunityEntry 8 } + +-- +-- The snmpTargetAddrExtTable +-- + +snmpTargetAddrExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpTargetAddrExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of mask and mms values associated with the + + + snmpTargetAddrTable. + + The snmpTargetAddrExtTable augments the + snmpTargetAddrTable with a transport address mask value + and a maximum message size value. The transport address + mask allows entries in the snmpTargetAddrTable to define + a set of addresses instead of just a single address. + The maximum message size value allows the maximum + message size of another SNMP entity to be configured for + use in SNMPv1 (and SNMPv2c) transactions, where the + message format does not specify a maximum message size." + ::= { snmpCommunityMIBObjects 2 } + +snmpTargetAddrExtEntry OBJECT-TYPE + SYNTAX SnmpTargetAddrExtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular mask and mms value." + AUGMENTS { snmpTargetAddrEntry } + ::= { snmpTargetAddrExtTable 1 } + +SnmpTargetAddrExtEntry ::= SEQUENCE { + snmpTargetAddrTMask OCTET STRING, + snmpTargetAddrMMS Integer32 +} + +snmpTargetAddrTMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The mask value associated with an entry in the + snmpTargetAddrTable. The value of this object must + have the same length as the corresponding instance of + snmpTargetAddrTAddress, or must have length 0. An + attempt to set it to any other value will result in + an inconsistentValue error. + + The value of this object allows an entry in the + snmpTargetAddrTable to specify multiple addresses. + The mask value is used to select which bits of + a transport address must match bits of the corresponding + instance of snmpTargetAddrTAddress, in order for the + transport address to match a particular entry in the + snmpTargetAddrTable. Bits which are 1 in the mask + value indicate bits in the transport address which + must match bits in the snmpTargetAddrTAddress value. + + + Bits which are 0 in the mask indicate bits in the + transport address which need not match. If the + length of the mask is 0, the mask should be treated + as if all its bits were 1 and its length were equal + to the length of the corresponding value of + snmpTargetAddrTable. + + This object may not be modified while the value of the + corresponding instance of snmpTargetAddrRowStatus is + active(1). An attempt to set this object in this case + will result in an inconsistentValue error." + DEFVAL { ''H } + ::= { snmpTargetAddrExtEntry 1 } + +snmpTargetAddrMMS OBJECT-TYPE + SYNTAX Integer32 (0|484..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum message size value associated with an entry + in the snmpTargetAddrTable." + DEFVAL { 484 } + ::= { snmpTargetAddrExtEntry 2 } + +-- +-- The snmpTrapAddress and snmpTrapCommunity objects are included +-- in notifications that are forwarded by a proxy, which were +-- originally received as SNMPv1 Trap messages. +-- + +snmpTrapAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The value of the agent-addr field of a Trap PDU which + is forwarded by a proxy forwarder application using + an SNMP version other than SNMPv1. The value of this + object SHOULD contain the value of the agent-addr field + from the original Trap PDU as generated by an SNMPv1 + agent." + ::= { snmpCommunityMIBObjects 3 } + +snmpTrapCommunity OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + + + "The value of the community string field of an SNMPv1 + message containing a Trap PDU which is forwarded by a + a proxy forwarder application using an SNMP version + other than SNMPv1. The value of this object SHOULD + contain the value of the community string field from + the original SNMPv1 message containing a Trap PDU as + generated by an SNMPv1 agent." + ::= { snmpCommunityMIBObjects 4 } + +-- Conformance Information ******************************************* + +snmpCommunityMIBCompliances OBJECT IDENTIFIER + ::= { snmpCommunityMIBConformance 1 } +snmpCommunityMIBGroups OBJECT IDENTIFIER + ::= { snmpCommunityMIBConformance 2 } + +-- Compliance statements + +snmpCommunityMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP engines which + implement the SNMP-COMMUNITY-MIB." + + MODULE -- this module + MANDATORY-GROUPS { snmpCommunityGroup } + + OBJECT snmpCommunityName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunitySecurityName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityContextEngineID + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityContextName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityTransportTag + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityStorageType + + + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT snmpCommunityStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { snmpCommunityMIBCompliances 1 } + +snmpProxyTrapForwardCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP engines which + contain a proxy forwarding application which is + capable of forwarding SNMPv1 traps using SNMPv2c + or SNMPv3." + MODULE -- this module + MANDATORY-GROUPS { snmpProxyTrapForwardGroup } + ::= { snmpCommunityMIBCompliances 2 } + +snmpCommunityGroup OBJECT-GROUP + OBJECTS { + snmpCommunityName, + snmpCommunitySecurityName, + snmpCommunityContextEngineID, + snmpCommunityContextName, + snmpCommunityTransportTag, + snmpCommunityStorageType, + snmpCommunityStatus, + snmpTargetAddrTMask, + snmpTargetAddrMMS + } + STATUS current + DESCRIPTION + "A collection of objects providing for configuration + of community strings for SNMPv1 (and SNMPv2c) usage." + ::= { snmpCommunityMIBGroups 1 } + +snmpProxyTrapForwardGroup OBJECT-GROUP + OBJECTS { + snmpTrapAddress, + snmpTrapCommunity + } + STATUS current + DESCRIPTION + "Objects which are used by proxy forwarding applications + when translating traps between SNMP versions. These are + used to preserve SNMPv1-specific information when + + + translating to SNMPv2c or SNMPv3." + ::= { snmpCommunityMIBGroups 3 } + +END diff --git a/mibs/ietf/SNMP-FRAMEWORK-MIB b/mibs/ietf/SNMP-FRAMEWORK-MIB new file mode 100644 index 0000000..ca4e4e4 --- /dev/null +++ b/mibs/ietf/SNMP-FRAMEWORK-MIB @@ -0,0 +1,564 @@ +SNMP-FRAMEWORK-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + OBJECT-IDENTITY, + snmpModules FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +snmpFrameworkMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301-947-7107 + + Co-Chair & + Co-editor: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603-337-2614 + + Co-editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, California 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408-546-1006 + + Co-editor: Bert Wijnen + Lucent Technologies + postal: Schagen 33 + 3461 GL Linschoten + Netherlands + + + + EMail: bwijnen@lucent.com + phone: +31 348-680-485 + " + DESCRIPTION "The SNMP Management Architecture MIB + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3411; + see the RFC itself for full legal notices. + " + + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Changes in this revision: + - Updated various administrative information. + - Corrected some typos. + - Corrected typo in description of SnmpEngineID + that led to range overlap for 127. + - Changed '255a' to '255t' in definition of + SnmpAdminString to align with current SMI. + - Reworded 'reserved' for value zero in + DESCRIPTION of SnmpSecurityModel. + - The algorithm for allocating security models + should give 256 per enterprise block, rather + than 255. + - The example engine ID of 'abcd' is not + legal. Replaced with '800002b804616263'H based + on example enterprise 696, string 'abc'. + - Added clarification that engineID should + persist across re-initializations. + This revision published as RFC 3411. + " + REVISION "199901190000Z" -- 19 January 1999 + DESCRIPTION "Updated editors' addresses, fixed typos. + Published as RFC 2571. + " + REVISION "199711200000Z" -- 20 November 1997 + DESCRIPTION "The initial version, published in RFC 2271. + " + ::= { snmpModules 10 } + + -- Textual Conventions used in the SNMP Management Architecture *** + +SnmpEngineID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "An SNMP engine's administratively-unique identifier. + Objects of this type are for identification, not for + addressing, even though it is possible that an + address may have been used in the generation of + a specific value. + + + + The value for this object may not be all zeros or + all 'ff'H or the empty (zero length) string. + + The initial value for this object may be configured + via an operator console entry or via an algorithmic + function. In the latter case, the following + example algorithm is recommended. + + In cases where there are multiple engines on the + same system, the use of this algorithm is NOT + appropriate, as it would result in all of those + engines ending up with the same ID value. + + 1) The very first bit is used to indicate how the + rest of the data is composed. + + 0 - as defined by enterprise using former methods + that existed before SNMPv3. See item 2 below. + + 1 - as defined by this architecture, see item 3 + below. + + Note that this allows existing uses of the + engineID (also known as AgentID [RFC1910]) to + co-exist with any new uses. + + 2) The snmpEngineID has a length of 12 octets. + + The first four octets are set to the binary + equivalent of the agent's SNMP management + private enterprise number as assigned by the + Internet Assigned Numbers Authority (IANA). + For example, if Acme Networks has been assigned + { enterprises 696 }, the first four octets would + be assigned '000002b8'H. + + The remaining eight octets are determined via + one or more enterprise-specific methods. Such + methods must be designed so as to maximize the + possibility that the value of this object will + be unique in the agent's administrative domain. + For example, it may be the IP address of the SNMP + entity, or the MAC address of one of the + interfaces, with each address suitably padded + with random octets. If multiple methods are + defined, then it is recommended that the first + octet indicate the method being used and the + remaining octets be a function of the method. + + + + 3) The length of the octet string varies. + + The first four octets are set to the binary + equivalent of the agent's SNMP management + private enterprise number as assigned by the + Internet Assigned Numbers Authority (IANA). + For example, if Acme Networks has been assigned + { enterprises 696 }, the first four octets would + be assigned '000002b8'H. + + The very first bit is set to 1. For example, the + above value for Acme Networks now changes to be + '800002b8'H. + + The fifth octet indicates how the rest (6th and + following octets) are formatted. The values for + the fifth octet are: + + 0 - reserved, unused. + + 1 - IPv4 address (4 octets) + lowest non-special IP address + + 2 - IPv6 address (16 octets) + lowest non-special IP address + + 3 - MAC address (6 octets) + lowest IEEE MAC address, canonical + order + + 4 - Text, administratively assigned + Maximum remaining length 27 + + 5 - Octets, administratively assigned + Maximum remaining length 27 + + 6-127 - reserved, unused + + 128-255 - as defined by the enterprise + Maximum remaining length 27 + " + SYNTAX OCTET STRING (SIZE(5..32)) + + + + + + + + + +SnmpSecurityModel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "An identifier that uniquely identifies a + Security Model of the Security Subsystem within + this SNMP Management Architecture. + + The values for securityModel are allocated as + follows: + + - The zero value does not identify any particular + security model. + + - Values between 1 and 255, inclusive, are reserved + for standards-track Security Models and are + managed by the Internet Assigned Numbers Authority + (IANA). + - Values greater than 255 are allocated to + enterprise-specific Security Models. An + enterprise-specific securityModel value is defined + to be: + + enterpriseID * 256 + security model within + enterprise + + For example, the fourth Security Model defined by + the enterprise whose enterpriseID is 1 would be + 259. + + This scheme for allocation of securityModel + values allows for a maximum of 255 standards- + based Security Models, and for a maximum of + 256 Security Models per enterprise. + + It is believed that the assignment of new + securityModel values will be rare in practice + because the larger the number of simultaneously + utilized Security Models, the larger the + chance that interoperability will suffer. + Consequently, it is believed that such a range + will be sufficient. In the unlikely event that + the standards committee finds this number to be + insufficient over time, an enterprise number + can be allocated to obtain an additional 256 + possible values. + + Note that the most significant bit must be zero; + hence, there are 23 bits allocated for various + organizations to design and define non-standard + + + + securityModels. This limits the ability to + define new proprietary implementations of Security + Models to the first 8,388,608 enterprises. + + It is worthwhile to note that, in its encoded + form, the securityModel value will normally + require only a single byte since, in practice, + the leftmost bits will be zero for most messages + and sign extension is suppressed by the encoding + rules. + + As of this writing, there are several values + of securityModel defined for use with SNMP or + reserved for use with supporting MIB objects. + They are as follows: + + 0 reserved for 'any' + 1 reserved for SNMPv1 + 2 reserved for SNMPv2c + 3 User-Based Security Model (USM) + " + SYNTAX INTEGER(0 .. 2147483647) + + +SnmpMessageProcessingModel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "An identifier that uniquely identifies a Message + Processing Model of the Message Processing + Subsystem within this SNMP Management Architecture. + + The values for messageProcessingModel are + allocated as follows: + + - Values between 0 and 255, inclusive, are + reserved for standards-track Message Processing + Models and are managed by the Internet Assigned + Numbers Authority (IANA). + + - Values greater than 255 are allocated to + enterprise-specific Message Processing Models. + An enterprise messageProcessingModel value is + defined to be: + + enterpriseID * 256 + + messageProcessingModel within enterprise + + For example, the fourth Message Processing Model + defined by the enterprise whose enterpriseID + + + + is 1 would be 259. + + This scheme for allocating messageProcessingModel + values allows for a maximum of 255 standards- + based Message Processing Models, and for a + maximum of 256 Message Processing Models per + enterprise. + + It is believed that the assignment of new + messageProcessingModel values will be rare + in practice because the larger the number of + simultaneously utilized Message Processing Models, + the larger the chance that interoperability + will suffer. It is believed that such a range + will be sufficient. In the unlikely event that + the standards committee finds this number to be + insufficient over time, an enterprise number + can be allocated to obtain an additional 256 + possible values. + + Note that the most significant bit must be zero; + hence, there are 23 bits allocated for various + organizations to design and define non-standard + messageProcessingModels. This limits the ability + to define new proprietary implementations of + Message Processing Models to the first 8,388,608 + enterprises. + + It is worthwhile to note that, in its encoded + form, the messageProcessingModel value will + normally require only a single byte since, in + practice, the leftmost bits will be zero for + most messages and sign extension is suppressed + by the encoding rules. + + As of this writing, there are several values of + messageProcessingModel defined for use with SNMP. + They are as follows: + + 0 reserved for SNMPv1 + 1 reserved for SNMPv2c + 2 reserved for SNMPv2u and SNMPv2* + 3 reserved for SNMPv3 + " + SYNTAX INTEGER(0 .. 2147483647) + + + + + + +SnmpSecurityLevel ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "A Level of Security at which SNMP messages can be + sent or with which operations are being processed; + in particular, one of: + + noAuthNoPriv - without authentication and + without privacy, + authNoPriv - with authentication but + without privacy, + authPriv - with authentication and + with privacy. + + These three values are ordered such that + noAuthNoPriv is less than authNoPriv and + authNoPriv is less than authPriv. + " + SYNTAX INTEGER { noAuthNoPriv(1), + authNoPriv(2), + authPriv(3) + } + +SnmpAdminString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255t" + STATUS current + DESCRIPTION "An octet string containing administrative + information, preferably in human-readable form. + + To facilitate internationalization, this + information is represented using the ISO/IEC + IS 10646-1 character set, encoded as an octet + string using the UTF-8 transformation format + described in [RFC2279]. + + Since additional code points are added by + amendments to the 10646 standard from time + to time, implementations must be prepared to + encounter any code point from 0x00000000 to + 0x7fffffff. Byte sequences that do not + correspond to the valid UTF-8 encoding of a + code point or are outside this range are + prohibited. + + The use of control codes should be avoided. + + When it is necessary to represent a newline, + the control code sequence CR LF should be used. + + + + + The use of leading or trailing white space should + be avoided. + + For code points not directly supported by user + interface hardware or software, an alternative + means of entry and display, such as hexadecimal, + may be provided. + + For information encoded in 7-bit US-ASCII, + the UTF-8 encoding is identical to the + US-ASCII encoding. + + UTF-8 may require multiple bytes to represent a + single character / code point; thus the length + of this object in octets may be different from + the number of characters encoded. Similarly, + size constraints refer to the number of encoded + octets, not the number of characters represented + by an encoding. + + Note that when this TC is used for an object that + is used or envisioned to be used as an index, then + a SIZE restriction MUST be specified so that the + number of sub-identifiers for any object instance + does not exceed the limit of 128, as defined by + [RFC3416]. + + Note that the size of an SnmpAdminString object is + measured in octets, not characters. + " + SYNTAX OCTET STRING (SIZE (0..255)) + + +-- Administrative assignments *************************************** + +snmpFrameworkAdmin + OBJECT IDENTIFIER ::= { snmpFrameworkMIB 1 } +snmpFrameworkMIBObjects + OBJECT IDENTIFIER ::= { snmpFrameworkMIB 2 } +snmpFrameworkMIBConformance + OBJECT IDENTIFIER ::= { snmpFrameworkMIB 3 } + +-- the snmpEngine Group ******************************************** + +snmpEngine OBJECT IDENTIFIER ::= { snmpFrameworkMIBObjects 1 } + + + + + + +snmpEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An SNMP engine's administratively-unique identifier. + + This information SHOULD be stored in non-volatile + storage so that it remains constant across + re-initializations of the SNMP engine. + " + ::= { snmpEngine 1 } + +snmpEngineBoots OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of times that the SNMP engine has + (re-)initialized itself since snmpEngineID + was last configured. + " + ::= { snmpEngine 2 } + +snmpEngineTime OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of seconds since the value of + the snmpEngineBoots object last changed. + When incrementing this object's value would + cause it to exceed its maximum, + snmpEngineBoots is incremented as if a + re-initialization had occurred, and this + object's value consequently reverts to zero. + " + ::= { snmpEngine 3 } + +snmpEngineMaxMessageSize OBJECT-TYPE + SYNTAX INTEGER (484..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The maximum length in octets of an SNMP message + which this SNMP engine can send or receive and + process, determined as the minimum of the maximum + message size values supported among all of the + transports available to and supported by the engine. + " + ::= { snmpEngine 4 } + + + +-- Registration Points for Authentication and Privacy Protocols ** + +snmpAuthProtocols OBJECT-IDENTITY + STATUS current + DESCRIPTION "Registration point for standards-track + authentication protocols used in SNMP Management + Frameworks. + " + ::= { snmpFrameworkAdmin 1 } + +snmpPrivProtocols OBJECT-IDENTITY + STATUS current + DESCRIPTION "Registration point for standards-track privacy + protocols used in SNMP Management Frameworks. + " + ::= { snmpFrameworkAdmin 2 } + +-- Conformance information ****************************************** + +snmpFrameworkMIBCompliances + OBJECT IDENTIFIER ::= {snmpFrameworkMIBConformance 1} +snmpFrameworkMIBGroups + OBJECT IDENTIFIER ::= {snmpFrameworkMIBConformance 2} + +-- compliance statements + +snmpFrameworkMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for SNMP engines which + implement the SNMP Management Framework MIB. + " + MODULE -- this module + MANDATORY-GROUPS { snmpEngineGroup } + + ::= { snmpFrameworkMIBCompliances 1 } + +-- units of conformance + +snmpEngineGroup OBJECT-GROUP + OBJECTS { + snmpEngineID, + snmpEngineBoots, + snmpEngineTime, + snmpEngineMaxMessageSize + } + STATUS current + DESCRIPTION "A collection of objects for identifying and + determining the configuration and current timeliness + + + + values of an SNMP engine. + " + ::= { snmpFrameworkMIBGroups 1 } + +END diff --git a/mibs/ietf/SNMP-MPD-MIB b/mibs/ietf/SNMP-MPD-MIB new file mode 100644 index 0000000..69ad202 --- /dev/null +++ b/mibs/ietf/SNMP-MPD-MIB @@ -0,0 +1,153 @@ +SNMP-MPD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + MODULE-IDENTITY, OBJECT-TYPE, + snmpModules, Counter32 FROM SNMPv2-SMI; + +snmpMPDMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + + + + EMail: mundy@tislabs.com + phone: +1 301-947-7107 + + Co-Chair & + Co-editor: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603-337-2614 + + Co-editor: Jeffrey Case + SNMP Research, Inc. + postal: 3001 Kimberlin Heights Road + Knoxville, TN 37920-9716 + USA + EMail: case@snmp.com + phone: +1 423-573-1434 + + Co-editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408-546-1006 + + Co-editor: Bert Wijnen + Lucent Technologies + postal: Schagen 33 + 3461 GL Linschoten + Netherlands + EMail: bwijnen@lucent.com + phone: +31 348-680-485 + " + DESCRIPTION "The MIB for Message Processing and Dispatching + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3412; + see the RFC itself for full legal notices. + " + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Updated addresses, published as RFC 3412." + REVISION "199905041636Z" -- 4 May 1999 + DESCRIPTION "Updated addresses, published as RFC 2572." + + + + + REVISION "199709300000Z" -- 30 September 1997 + DESCRIPTION "Original version, published as RFC 2272." + ::= { snmpModules 11 } + +-- Administrative assignments *************************************** + +snmpMPDAdmin OBJECT IDENTIFIER ::= { snmpMPDMIB 1 } +snmpMPDMIBObjects OBJECT IDENTIFIER ::= { snmpMPDMIB 2 } +snmpMPDMIBConformance OBJECT IDENTIFIER ::= { snmpMPDMIB 3 } + +-- Statistics for SNMP Messages ************************************* + +snmpMPDStats OBJECT IDENTIFIER ::= { snmpMPDMIBObjects 1 } + +snmpUnknownSecurityModels OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they referenced a + securityModel that was not known to or supported by + the SNMP engine. + " + ::= { snmpMPDStats 1 } + +snmpInvalidMsgs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because there were invalid + or inconsistent components in the SNMP message. + " + ::= { snmpMPDStats 2 } + +snmpUnknownPDUHandlers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because the PDU contained + in the packet could not be passed to an application + responsible for handling the pduType, e.g. no SNMP + application had registered for the proper + combination of the contextEngineID and the pduType. + " + ::= { snmpMPDStats 3 } + + + + +-- Conformance information ****************************************** + +snmpMPDMIBCompliances OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 1} +snmpMPDMIBGroups OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 2} + +-- Compliance statements + +snmpMPDCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for SNMP entities which + implement the SNMP-MPD-MIB. + " + MODULE -- this module + MANDATORY-GROUPS { snmpMPDGroup } + ::= { snmpMPDMIBCompliances 1 } + +snmpMPDGroup OBJECT-GROUP + OBJECTS { + snmpUnknownSecurityModels, + snmpInvalidMsgs, + snmpUnknownPDUHandlers + } + STATUS current + DESCRIPTION "A collection of objects providing for remote + monitoring of the SNMP Message Processing and + Dispatching process. + " + ::= { snmpMPDMIBGroups 1 } + +END diff --git a/mibs/ietf/SNMP-NOTIFICATION-MIB b/mibs/ietf/SNMP-NOTIFICATION-MIB new file mode 100644 index 0000000..a01dd20 --- /dev/null +++ b/mibs/ietf/SNMP-NOTIFICATION-MIB @@ -0,0 +1,621 @@ +SNMP-NOTIFICATION-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + snmpModules + FROM SNMPv2-SMI + + RowStatus, + StorageType + FROM SNMPv2-TC + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + SnmpTagValue, + + + snmpTargetParamsName + FROM SNMP-TARGET-MIB + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF; + +snmpNotificationMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In message body: subscribe snmpv3 + + Co-Chair: Russ Mundy + Network Associates Laboratories + Postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + Phone: +1 301-947-7107 + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor: David B. Levi + Nortel Networks + Postal: 3505 Kesterwood Drive + Knoxville, Tennessee 37918 + EMail: dlevi@nortelnetworks.com + Phone: +1 865 686 0432 + + Co-editor: Paul Meyer + Secure Computing Corporation + Postal: 2675 Long Lake Road + Roseville, Minnesota 55113 + EMail: paul_meyer@securecomputing.com + Phone: +1 651 628 1592 + + Co-editor: Bob Stewart + Retired" + + + + DESCRIPTION + "This MIB module defines MIB objects which provide + mechanisms to remotely configure the parameters + used by an SNMP entity for the generation of + notifications. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3413; + see the RFC itself for full legal notices. + " + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Clarifications, published as + RFC 3413." + REVISION "199808040000Z" -- 4 August 1998 + DESCRIPTION "Clarifications, published as + RFC 2573." + REVISION "199707140000Z" -- 14 July 1997 + DESCRIPTION "The initial revision, published as RFC2273." + ::= { snmpModules 13 } + +snmpNotifyObjects OBJECT IDENTIFIER ::= + { snmpNotificationMIB 1 } +snmpNotifyConformance OBJECT IDENTIFIER ::= + { snmpNotificationMIB 3 } + +-- +-- +-- The snmpNotifyObjects group +-- +-- + +snmpNotifyTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpNotifyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is used to select management targets which should + receive notifications, as well as the type of notification + which should be sent to each selected management target." + ::= { snmpNotifyObjects 1 } + +snmpNotifyEntry OBJECT-TYPE + SYNTAX SnmpNotifyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table selects a set of management targets + which should receive notifications, as well as the type of + + + + notification which should be sent to each selected + management target. + + Entries in the snmpNotifyTable are created and + deleted using the snmpNotifyRowStatus object." + INDEX { IMPLIED snmpNotifyName } + ::= { snmpNotifyTable 1 } + +SnmpNotifyEntry ::= SEQUENCE { + snmpNotifyName SnmpAdminString, + snmpNotifyTag SnmpTagValue, + snmpNotifyType INTEGER, + snmpNotifyStorageType StorageType, + snmpNotifyRowStatus RowStatus +} + +snmpNotifyName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this snmpNotifyEntry." + ::= { snmpNotifyEntry 1 } + +snmpNotifyTag OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains a single tag value which is used + to select entries in the snmpTargetAddrTable. Any entry + in the snmpTargetAddrTable which contains a tag value + which is equal to the value of an instance of this + object is selected. If this object contains a value + of zero length, no entries are selected." + DEFVAL { "" } + ::= { snmpNotifyEntry 2 } + +snmpNotifyType OBJECT-TYPE + SYNTAX INTEGER { + trap(1), + inform(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines the type of notification to + + + + be generated for entries in the snmpTargetAddrTable + selected by the corresponding instance of + snmpNotifyTag. This value is only used when + generating notifications, and is ignored when + using the snmpTargetAddrTable for other purposes. + + If the value of this object is trap(1), then any + messages generated for selected rows will contain + Unconfirmed-Class PDUs. + + If the value of this object is inform(2), then any + messages generated for selected rows will contain + Confirmed-Class PDUs. + + Note that if an SNMP entity only supports + generation of Unconfirmed-Class PDUs (and not + Confirmed-Class PDUs), then this object may be + read-only." + DEFVAL { trap } + ::= { snmpNotifyEntry 3 } + +snmpNotifyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpNotifyEntry 4 } + +snmpNotifyRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5)." + ::= { snmpNotifyEntry 5 } + +snmpNotifyFilterProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpNotifyFilterProfileEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table is used to associate a notification filter + profile with a particular set of target parameters." + ::= { snmpNotifyObjects 2 } + +snmpNotifyFilterProfileEntry OBJECT-TYPE + SYNTAX SnmpNotifyFilterProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table indicates the name of the filter + profile to be used when generating notifications using + the corresponding entry in the snmpTargetParamsTable. + + Entries in the snmpNotifyFilterProfileTable are created + and deleted using the snmpNotifyFilterProfileRowStatus + object." + INDEX { IMPLIED snmpTargetParamsName } + ::= { snmpNotifyFilterProfileTable 1 } + +SnmpNotifyFilterProfileEntry ::= SEQUENCE { + snmpNotifyFilterProfileName SnmpAdminString, + snmpNotifyFilterProfileStorType StorageType, + snmpNotifyFilterProfileRowStatus RowStatus +} + +snmpNotifyFilterProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the filter profile to be used when generating + notifications using the corresponding entry in the + snmpTargetAddrTable." + ::= { snmpNotifyFilterProfileEntry 1 } + +snmpNotifyFilterProfileStorType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpNotifyFilterProfileEntry 2 } + +snmpNotifyFilterProfileRowStatus OBJECT-TYPE + + + + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5). + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the + snmpNotifyFilterProfileRowStatus column is 'notReady'. + + In particular, a newly created row cannot be made + active until the corresponding instance of + snmpNotifyFilterProfileName has been set." + ::= { snmpNotifyFilterProfileEntry 3 } + +snmpNotifyFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpNotifyFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of filter profiles. Filter profiles are used + to determine whether particular management targets should + receive particular notifications. + + When a notification is generated, it must be compared + with the filters associated with each management target + which is configured to receive notifications, in order to + determine whether it may be sent to each such management + target. + + A more complete discussion of notification filtering + can be found in section 6. of [SNMP-APPL]." + ::= { snmpNotifyObjects 3 } + +snmpNotifyFilterEntry OBJECT-TYPE + SYNTAX SnmpNotifyFilterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An element of a filter profile. + + Entries in the snmpNotifyFilterTable are created and + deleted using the snmpNotifyFilterRowStatus object." + + + + INDEX { snmpNotifyFilterProfileName, + IMPLIED snmpNotifyFilterSubtree } + ::= { snmpNotifyFilterTable 1 } + +SnmpNotifyFilterEntry ::= SEQUENCE { + snmpNotifyFilterSubtree OBJECT IDENTIFIER, + snmpNotifyFilterMask OCTET STRING, + snmpNotifyFilterType INTEGER, + snmpNotifyFilterStorageType StorageType, + snmpNotifyFilterRowStatus RowStatus +} + +snmpNotifyFilterSubtree OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The MIB subtree which, when combined with the corresponding + instance of snmpNotifyFilterMask, defines a family of + subtrees which are included in or excluded from the + filter profile." + ::= { snmpNotifyFilterEntry 1 } + +snmpNotifyFilterMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The bit mask which, in combination with the corresponding + instance of snmpNotifyFilterSubtree, defines a family of + subtrees which are included in or excluded from the + filter profile. + + Each bit of this bit mask corresponds to a + sub-identifier of snmpNotifyFilterSubtree, with the + most significant bit of the i-th octet of this octet + string value (extended if necessary, see below) + corresponding to the (8*i - 7)-th sub-identifier, and + the least significant bit of the i-th octet of this + octet string corresponding to the (8*i)-th + sub-identifier, where i is in the range 1 through 16. + + Each bit of this bit mask specifies whether or not + the corresponding sub-identifiers must match when + determining if an OBJECT IDENTIFIER matches this + family of filter subtrees; a '1' indicates that an + exact match must occur; a '0' indicates 'wild card', + i.e., any sub-identifier value matches. + + + + Thus, the OBJECT IDENTIFIER X of an object instance + is contained in a family of filter subtrees if, for + each sub-identifier of the value of + snmpNotifyFilterSubtree, either: + + the i-th bit of snmpNotifyFilterMask is 0, or + + the i-th sub-identifier of X is equal to the i-th + sub-identifier of the value of + snmpNotifyFilterSubtree. + + If the value of this bit mask is M bits long and + there are more than M sub-identifiers in the + corresponding instance of snmpNotifyFilterSubtree, + then the bit mask is extended with 1's to be the + required length. + + Note that when the value of this object is the + zero-length string, this extension rule results in + a mask of all-1's being used (i.e., no 'wild card'), + and the family of filter subtrees is the one + subtree uniquely identified by the corresponding + instance of snmpNotifyFilterSubtree." + DEFVAL { ''H } + ::= { snmpNotifyFilterEntry 2 } + +snmpNotifyFilterType OBJECT-TYPE + SYNTAX INTEGER { + included(1), + excluded(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates whether the family of filter subtrees + defined by this entry are included in or excluded from a + filter. A more detailed discussion of the use of this + object can be found in section 6. of [SNMP-APPL]." + DEFVAL { included } + ::= { snmpNotifyFilterEntry 3 } + +snmpNotifyFilterStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + + + + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpNotifyFilterEntry 4 } + +snmpNotifyFilterRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5)." + ::= { snmpNotifyFilterEntry 5 } + +-- +-- +-- Conformance information +-- +-- + +snmpNotifyCompliances OBJECT IDENTIFIER ::= + { snmpNotifyConformance 1 } +snmpNotifyGroups OBJECT IDENTIFIER ::= + { snmpNotifyConformance 2 } + +-- +-- +-- Compliance statements +-- +-- + +snmpNotifyBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for minimal SNMP entities which + implement only SNMP Unconfirmed-Class notifications and + read-create operations on only the snmpTargetAddrTable." + MODULE SNMP-TARGET-MIB + MANDATORY-GROUPS { snmpTargetBasicGroup } + + OBJECT snmpTargetParamsMPModel + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access is not required." + + OBJECT snmpTargetParamsSecurityModel + + + + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access is not required." + + OBJECT snmpTargetParamsSecurityName + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access is not required." + + OBJECT snmpTargetParamsSecurityLevel + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access is not required." + + OBJECT snmpTargetParamsStorageType + SYNTAX INTEGER { + readOnly(5) + } + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access is not required. + Support of the values other(1), volatile(2), + nonVolatile(3), and permanent(4) is not required." + + OBJECT snmpTargetParamsRowStatus + SYNTAX INTEGER { + active(1) + } + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access to the + snmpTargetParamsTable is not required. + Support of the values notInService(2), notReady(3), + createAndGo(4), createAndWait(5), and destroy(6) is + not required." + + MODULE -- This Module + MANDATORY-GROUPS { snmpNotifyGroup } + + OBJECT snmpNotifyTag + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access is not required." + + OBJECT snmpNotifyType + SYNTAX INTEGER { + trap(1) + } + + + + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access is not required. + Support of the value notify(2) is not required." + + OBJECT snmpNotifyStorageType + SYNTAX INTEGER { + readOnly(5) + } + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access is not required. + Support of the values other(1), volatile(2), + nonVolatile(3), and permanent(4) is not required." + + OBJECT snmpNotifyRowStatus + SYNTAX INTEGER { + active(1) + } + MIN-ACCESS read-only + DESCRIPTION + "Create/delete/modify access to the + snmpNotifyTable is not required. + Support of the values notInService(2), notReady(3), + createAndGo(4), createAndWait(5), and destroy(6) is + not required." + + ::= { snmpNotifyCompliances 1 } + +snmpNotifyBasicFiltersCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + SNMP Unconfirmed-Class notifications with filtering, and + read-create operations on all related tables." + MODULE SNMP-TARGET-MIB + MANDATORY-GROUPS { snmpTargetBasicGroup } + MODULE -- This Module + MANDATORY-GROUPS { snmpNotifyGroup, + snmpNotifyFilterGroup } + ::= { snmpNotifyCompliances 2 } + +snmpNotifyFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which either + implement only SNMP Confirmed-Class notifications, or both + SNMP Unconfirmed-Class and Confirmed-Class notifications, + + + + plus filtering and read-create operations on all related + tables." + MODULE SNMP-TARGET-MIB + MANDATORY-GROUPS { snmpTargetBasicGroup, + snmpTargetResponseGroup } + MODULE -- This Module + MANDATORY-GROUPS { snmpNotifyGroup, + snmpNotifyFilterGroup } + ::= { snmpNotifyCompliances 3 } + +snmpNotifyGroup OBJECT-GROUP + OBJECTS { + snmpNotifyTag, + snmpNotifyType, + snmpNotifyStorageType, + snmpNotifyRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects for selecting which management + targets are used for generating notifications, and the + type of notification to be generated for each selected + management target." + ::= { snmpNotifyGroups 1 } + +snmpNotifyFilterGroup OBJECT-GROUP + OBJECTS { + snmpNotifyFilterProfileName, + snmpNotifyFilterProfileStorType, + snmpNotifyFilterProfileRowStatus, + snmpNotifyFilterMask, + snmpNotifyFilterType, + snmpNotifyFilterStorageType, + snmpNotifyFilterRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing remote configuration + of notification filters." + ::= { snmpNotifyGroups 2 } + +END diff --git a/mibs/ietf/SNMP-PROXY-MIB b/mibs/ietf/SNMP-PROXY-MIB new file mode 100644 index 0000000..4a4a6ba --- /dev/null +++ b/mibs/ietf/SNMP-PROXY-MIB @@ -0,0 +1,305 @@ +SNMP-PROXY-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + snmpModules + FROM SNMPv2-SMI + + RowStatus, + StorageType + FROM SNMPv2-TC + + SnmpEngineID, + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + SnmpTagValue + FROM SNMP-TARGET-MIB + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF; + +snmpProxyMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In message body: subscribe snmpv3 + + Co-Chair: Russ Mundy + Network Associates Laboratories + Postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + Phone: +1 301-947-7107 + + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor: David B. Levi + Nortel Networks + Postal: 3505 Kesterwood Drive + Knoxville, Tennessee 37918 + EMail: dlevi@nortelnetworks.com + Phone: +1 865 686 0432 + + Co-editor: Paul Meyer + Secure Computing Corporation + Postal: 2675 Long Lake Road + Roseville, Minnesota 55113 + EMail: paul_meyer@securecomputing.com + Phone: +1 651 628 1592 + + Co-editor: Bob Stewart + Retired" + DESCRIPTION + "This MIB module defines MIB objects which provide + mechanisms to remotely configure the parameters + used by a proxy forwarding application. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3413; + see the RFC itself for full legal notices. + " + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Clarifications, published as + RFC 3413." + REVISION "199808040000Z" -- 4 August 1998 + DESCRIPTION "Clarifications, published as + RFC 2573." + REVISION "199707140000Z" -- 14 July 1997 + DESCRIPTION "The initial revision, published as RFC2273." + ::= { snmpModules 14 } + +snmpProxyObjects OBJECT IDENTIFIER ::= { snmpProxyMIB 1 } +snmpProxyConformance OBJECT IDENTIFIER ::= { snmpProxyMIB 3 } + +-- + + +-- +-- The snmpProxyObjects group +-- +-- + +snmpProxyTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpProxyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of translation parameters used by proxy forwarder + applications for forwarding SNMP messages." + ::= { snmpProxyObjects 2 } + +snmpProxyEntry OBJECT-TYPE + SYNTAX SnmpProxyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of translation parameters used by a proxy forwarder + application for forwarding SNMP messages. + + Entries in the snmpProxyTable are created and deleted + using the snmpProxyRowStatus object." + INDEX { IMPLIED snmpProxyName } + ::= { snmpProxyTable 1 } + +SnmpProxyEntry ::= SEQUENCE { + snmpProxyName SnmpAdminString, + snmpProxyType INTEGER, + snmpProxyContextEngineID SnmpEngineID, + snmpProxyContextName SnmpAdminString, + snmpProxyTargetParamsIn SnmpAdminString, + snmpProxySingleTargetOut SnmpAdminString, + snmpProxyMultipleTargetOut SnmpTagValue, + snmpProxyStorageType StorageType, + snmpProxyRowStatus RowStatus +} + +snmpProxyName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this snmpProxyEntry." + ::= { snmpProxyEntry 1 } + + + +snmpProxyType OBJECT-TYPE + SYNTAX INTEGER { + read(1), + write(2), + trap(3), + inform(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of message that may be forwarded using + the translation parameters defined by this entry." + ::= { snmpProxyEntry 2 } + +snmpProxyContextEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contextEngineID contained in messages that + may be forwarded using the translation parameters + defined by this entry." + ::= { snmpProxyEntry 3 } + +snmpProxyContextName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The contextName contained in messages that may be + forwarded using the translation parameters defined + by this entry. + + This object is optional, and if not supported, the + contextName contained in a message is ignored when + selecting an entry in the snmpProxyTable." + ::= { snmpProxyEntry 4 } + +snmpProxyTargetParamsIn OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object selects an entry in the snmpTargetParamsTable. + The selected entry is used to determine which row of the + snmpProxyTable to use for forwarding received messages." + ::= { snmpProxyEntry 5 } + + + + +snmpProxySingleTargetOut OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object selects a management target defined in the + snmpTargetAddrTable (in the SNMP-TARGET-MIB). The + selected target is defined by an entry in the + snmpTargetAddrTable whose index value (snmpTargetAddrName) + is equal to this object. + + This object is only used when selection of a single + target is required (i.e. when forwarding an incoming + read or write request)." + ::= { snmpProxyEntry 6 } + +snmpProxyMultipleTargetOut OBJECT-TYPE + SYNTAX SnmpTagValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object selects a set of management targets defined + in the snmpTargetAddrTable (in the SNMP-TARGET-MIB). + + This object is only used when selection of multiple + targets is required (i.e. when forwarding an incoming + notification)." + ::= { snmpProxyEntry 7 } + +snmpProxyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpProxyEntry 8 } + +snmpProxyRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + + + set this object to either createAndGo(4) or + createAndWait(5). + + The following objects may not be modified while the + value of this object is active(1): + - snmpProxyType + - snmpProxyContextEngineID + - snmpProxyContextName + - snmpProxyTargetParamsIn + - snmpProxySingleTargetOut + - snmpProxyMultipleTargetOut" + ::= { snmpProxyEntry 9 } + +-- +-- +-- Conformance information +-- +-- + +snmpProxyCompliances OBJECT IDENTIFIER ::= + { snmpProxyConformance 1 } +snmpProxyGroups OBJECT IDENTIFIER ::= + { snmpProxyConformance 2 } + +-- +-- +-- Compliance statements +-- +-- + +snmpProxyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which include + a proxy forwarding application." + MODULE SNMP-TARGET-MIB + MANDATORY-GROUPS { snmpTargetBasicGroup, + snmpTargetResponseGroup } + MODULE -- This Module + MANDATORY-GROUPS { snmpProxyGroup } + ::= { snmpProxyCompliances 1 } + +snmpProxyGroup OBJECT-GROUP + OBJECTS { + snmpProxyType, + snmpProxyContextEngineID, + snmpProxyContextName, + snmpProxyTargetParamsIn, + + + + snmpProxySingleTargetOut, + snmpProxyMultipleTargetOut, + snmpProxyStorageType, + snmpProxyRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing remote configuration of + management target translation parameters for use by + proxy forwarder applications." + ::= { snmpProxyGroups 3 } + +END diff --git a/mibs/ietf/SNMP-REPEATER-MIB b/mibs/ietf/SNMP-REPEATER-MIB new file mode 100644 index 0000000..ffcb719 --- /dev/null +++ b/mibs/ietf/SNMP-REPEATER-MIB @@ -0,0 +1,3268 @@ +SNMP-REPEATER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter32, Counter64, Integer32, Gauge32, TimeTicks, + OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, mib-2 + FROM SNMPv2-SMI + TimeStamp, DisplayString, MacAddress, TEXTUAL-CONVENTION, + RowStatus, TestAndIncr + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + OwnerString + FROM IF-MIB; + + +snmpRptrMod MODULE-IDENTITY + LAST-UPDATED "9609140000Z" + ORGANIZATION "IETF HUB MIB Working Group" + CONTACT-INFO + "WG E-mail: hubmib@hprnd.rose.hp.com + + Chair: Dan Romascanu + Postal: Madge Networks (Israel) Ltd. + Atidim Technology Park, Bldg. 3 + Tel Aviv 61131, Israel + Tel: 972-3-6458414, 6458458 + Fax: 972-3-6487146 + E-mail: dromasca@madge.com + + Editor: Kathryn de Graaf + Postal: 3Com Corporation + 118 Turnpike Rd. + Southborough, MA 01772 USA + Tel: (508)229-1627 + Fax: (508)490-5882 + E-mail: kdegraaf@isd.3com.com" + DESCRIPTION + "Management information for 802.3 repeaters. + + The following references are used throughout + this MIB module: + + [IEEE 802.3 Std] + refers to IEEE 802.3/ISO 8802-3 Information + processing systems - Local area networks - + Part 3: Carrier sense multiple access with + collision detection (CSMA/CD) access method + and physical layer specifications (1993). + + [IEEE 802.3 Mgt] + refers to IEEE 802.3u-1995, '10 Mb/s & + 100 Mb/s Management, Section 30,' + Supplement to ANSI/IEEE 802.3. + + The following terms are used throughout this + MIB module. For complete formal definitions, + the IEEE 802.3 standards should be consulted + wherever possible: + + System - A managed entity compliant with this + MIB, and incorporating at least one managed + 802.3 repeater. + + Chassis - An enclosure for one managed repeater, + part of a managed repeater, or several managed + repeaters. It typically contains an integral + power supply and a variable number of available + module slots. + + Repeater-unit - The portion of the repeater set + that is inboard of the physical media interfaces. + The physical media interfaces (MAUs, AUIs) may be + physically separated from the repeater-unit, or + they may be integrated into the same physical + package. + + Trivial repeater-unit - An isolated port that can + gather statistics. + + Group - A recommended, but optional, entity + defined by the IEEE 802.3 management standard, + in order to support a modular numbering scheme. + The classical example allows an implementor to + represent field-replaceable units as groups of + ports, with the port numbering matching the + modular hardware implementation. + + System interconnect segment - An internal + segment allowing interconnection of ports + belonging to different physical entities + into the same logical manageable repeater. + Examples of implementation might be + backplane busses in modular hubs, or + chaining cables in stacks of hubs. + Stack - A scalable system that may include + managed repeaters, in which modularity is + achieved by interconnecting a number of + different chassis. + + Module - A building block in a modular + chassis. It typically maps into one 'slot'; + however, the range of configurations may be + very large, with several modules entering + one slot, or one module covering several + slots. + " + REVISION "9309010000Z" + DESCRIPTION + "Published as RFC 1516" + REVISION "9210010000Z" + DESCRIPTION + "Published as RFC 1368" + ::= { snmpDot3RptrMgt 5 } + + + +snmpDot3RptrMgt OBJECT IDENTIFIER ::= { mib-2 22 } + + +OptMacAddr ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "Either a 6 octet address in the `canonical' + order defined by IEEE 802.1a, i.e., as if it + were transmitted least significant bit first + if a value is available or a zero length string." + REFERENCE + "See MacAddress in SNMPv2-TC. The only difference + is that a zero length string is allowed as a value + for OptMacAddr and not for MacAddress." + SYNTAX OCTET STRING (SIZE (0 | 6)) + + + +-- Basic information at the repeater, group, and port level. + +rptrBasicPackage + OBJECT IDENTIFIER ::= { snmpDot3RptrMgt 1 } + rptrRptrInfo + OBJECT IDENTIFIER ::= { rptrBasicPackage 1 } + rptrGroupInfo + OBJECT IDENTIFIER ::= { rptrBasicPackage 2 } + rptrPortInfo + OBJECT IDENTIFIER ::= { rptrBasicPackage 3 } + rptrAllRptrInfo + OBJECT IDENTIFIER ::= { rptrBasicPackage 4 } + +-- Monitoring information at the repeater, group, and port level. +rptrMonitorPackage + OBJECT IDENTIFIER ::= { snmpDot3RptrMgt 2 } + rptrMonitorRptrInfo + OBJECT IDENTIFIER ::= { rptrMonitorPackage 1 } + rptrMonitorGroupInfo + OBJECT IDENTIFIER ::= { rptrMonitorPackage 2 } + rptrMonitorPortInfo + OBJECT IDENTIFIER ::= { rptrMonitorPackage 3 } + rptrMonitorAllRptrInfo + OBJECT IDENTIFIER ::= { rptrMonitorPackage 4 } + +-- Address tracking information at the repeater, group, +-- and port level. +rptrAddrTrackPackage + OBJECT IDENTIFIER ::= { snmpDot3RptrMgt 3 } + rptrAddrTrackRptrInfo + OBJECT IDENTIFIER ::= { rptrAddrTrackPackage 1 } + rptrAddrTrackGroupInfo + -- this subtree is currently unused + OBJECT IDENTIFIER ::= { rptrAddrTrackPackage 2 } + rptrAddrTrackPortInfo + OBJECT IDENTIFIER ::= { rptrAddrTrackPackage 3 } + +-- TopN information. +rptrTopNPackage + OBJECT IDENTIFIER ::= { snmpDot3RptrMgt 4 } + rptrTopNRptrInfo + -- this subtree is currently unused + OBJECT IDENTIFIER ::= { rptrTopNPackage 1 } + rptrTopNGroupInfo + -- this subtree is currently unused + OBJECT IDENTIFIER ::= { rptrTopNPackage 2 } + rptrTopNPortInfo + OBJECT IDENTIFIER ::= { rptrTopNPackage 3 } + + +-- Old version of basic information at the repeater level. +-- +-- In a system containing a single managed repeater, +-- configuration, status, and control objects for the overall +-- repeater. + +-- +-- The objects contained under the rptrRptrInfo subtree are +-- intended for backwards compatibility with implementations of +-- RFC 1516 [11]. In newer implementations (both single- and +-- multiple-repeater implementations) the rptrInfoTable should +-- be implemented. It is the preferred source of this information, +-- as it contains the values for all repeaters managed by the +-- agent. In all cases, the objects in the rptrRptrInfo subtree +-- are duplicates of the corresponding objects in the first entry +-- of the rptrInfoTable. + +rptrGroupCapacity OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The rptrGroupCapacity is the number of groups + that can be contained within the repeater. Within + each managed repeater, the groups are uniquely + numbered in the range from 1 to rptrGroupCapacity. + + Some groups may not be present in the repeater, in + which case the actual number of groups present + will be less than rptrGroupCapacity. The number + of groups present will never be greater than + rptrGroupCapacity. + + Note: In practice, this will generally be the + number of field-replaceable units (i.e., modules, + cards, or boards) that can fit in the physical + repeater enclosure, and the group numbers will + correspond to numbers marked on the physical + enclosure." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.3, + aRepeaterGroupCapacity." + ::= { rptrRptrInfo 1 } + +rptrOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- undefined or unknown + ok(2), -- no known failures + rptrFailure(3), -- repeater-related failure + groupFailure(4), -- group-related failure + portFailure(5), -- port-related failure + generalFailure(6) -- failure, unspecified type + } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The rptrOperStatus object indicates the + operational state of the repeater. The + rptrHealthText object may be consulted for more + specific information about the state of the + repeater's health. + + In the case of multiple kinds of failures (e.g., + repeater failure and port failure), the value of + this attribute shall reflect the highest priority + failure in the following order, listed highest + priority first: + + rptrFailure(3) + groupFailure(4) + portFailure(5) + generalFailure(6)." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.5, aRepeaterHealthState." + ::= { rptrRptrInfo 2 } + +rptrHealthText OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The health text object is a text string that + provides information relevant to the operational + state of the repeater. Agents may use this string + to provide detailed information on current + failures, including how they were detected, and/or + instructions for problem resolution. The contents + are agent-specific." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.6, aRepeaterHealthText." + ::= { rptrRptrInfo 3 } + +rptrReset OBJECT-TYPE + SYNTAX INTEGER { + noReset(1), + reset(2) + } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + Setting this object to reset(2) causes a + transition to the START state of Fig 9-2 in + section 9 [IEEE 802.3 Std] for a 10Mb/s repeater, + and the START state of Fig 27-2 in section 27 + of that standard for a 100Mb/s repeater. + + Setting this object to noReset(1) has no effect. + The agent will always return the value noReset(1) + when this object is read. + + After receiving a request to set this variable to + reset(2), the agent is allowed to delay the reset + for a short period. For example, the implementor + may choose to delay the reset long enough to allow + the SNMP response to be transmitted. In any + event, the SNMP response must be transmitted. + + This action does not reset the management counters + defined in this document nor does it affect the + portAdminStatus parameters. Included in this + action is the execution of a disruptive Self-Test + with the following characteristics: a) The nature + of the tests is not specified. b) The test resets + the repeater but without affecting management + information about the repeater. c) The test does + not inject packets onto any segment. d) Packets + received during the test may or may not be + transferred. e) The test does not interfere with + management functions. + + After performing this self-test, the agent will + update the repeater health information (including + rptrOperStatus and rptrHealthText), and send a + rptrHealth trap." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.2.1, acResetRepeater." + ::= { rptrRptrInfo 4 } + +rptrNonDisruptTest OBJECT-TYPE + SYNTAX INTEGER { + noSelfTest(1), + selfTest(2) + } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + Setting this object to selfTest(2) causes the + repeater to perform a agent-specific, non- + disruptive self-test that has the following + characteristics: a) The nature of the tests is + not specified. b) The test does not change the + state of the repeater or management information + about the repeater. c) The test does not inject + packets onto any segment. d) The test does not + prevent the relay of any packets. e) The test + does not interfere with management functions. + + After performing this test, the agent will update + the repeater health information (including + rptrOperStatus and rptrHealthText) and send a + rptrHealth trap. + + Note that this definition allows returning an + 'okay' result after doing a trivial test. + + Setting this object to noSelfTest(1) has no + effect. The agent will always return the value + noSelfTest(1) when this object is read." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.2.2, + acExecuteNonDisruptiveSelfTest." + ::= { rptrRptrInfo 5 } + +rptrTotalPartitionedPorts OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object returns the total number of ports in + the repeater whose current state meets all three + of the following criteria: rptrPortOperStatus + does not have the value notPresent(3), + rptrPortAdminStatus is enabled(1), and + rptrPortAutoPartitionState is autoPartitioned(2)." + ::= { rptrRptrInfo 6 } + +-- Basic information at the group level. +-- +-- Configuration and status objects for each +-- managed group in the system, independent +-- of whether there is one or more managed +-- repeater-units in the system. + +rptrGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information about + the groups of ports." + ::= { rptrGroupInfo 1 } + +rptrGroupEntry OBJECT-TYPE + SYNTAX RptrGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single group of ports." + INDEX { rptrGroupIndex } + ::= { rptrGroupTable 1 } + +RptrGroupEntry ::= + SEQUENCE { + rptrGroupIndex + Integer32, + rptrGroupDescr + DisplayString, + rptrGroupObjectID + OBJECT IDENTIFIER, + rptrGroupOperStatus + INTEGER, + rptrGroupLastOperStatusChange + TimeTicks, + rptrGroupPortCapacity + Integer32 + } + +rptrGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the group within the + system for which this entry contains + information." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.2.1.1, aGroupID." + ::= { rptrGroupEntry 1 } + +rptrGroupDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + A textual description of the group. This value + should include the full name and version + identification of the group's hardware type and + indicate how the group is differentiated from + other types of groups in the repeater. Plug-in + Module, Rev A' or 'Barney Rubble 10BASE-T 4-port + SIMM socket Version 2.1' are examples of valid + group descriptions. + + It is mandatory that this only contain printable + ASCII characters." + ::= { rptrGroupEntry 2 } + +rptrGroupObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the + group. This value may be allocated within the SMI + enterprises subtree (1.3.6.1.4.1) and provides a + straight-forward and unambiguous means for + determining what kind of group is being managed. + + For example, this object could take the value + 1.3.6.1.4.1.4242.1.2.14 if vendor 'Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.4242, + and had assigned the identifier + 1.3.6.1.4.1.4242.1.2.14 to its 'Wilma Flintstone + 6-Port FOIRL Plug-in Module.'" + ::= { rptrGroupEntry 3 } + +rptrGroupOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + operational(2), + malfunctioning(3), + notPresent(4), + underTest(5), + resetInProgress(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object that indicates the operational status + of the group. + + A status of notPresent(4) indicates that the group + is temporarily or permanently physically and/or + logically not a part of the repeater. It is an + implementation-specific matter as to whether the + agent effectively removes notPresent entries from + the table. + + A status of operational(2) indicates that the + group is functioning, and a status of + malfunctioning(3) indicates that the group is + malfunctioning in some way." + ::= { rptrGroupEntry 4 } + +rptrGroupLastOperStatusChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An object that contains the value of sysUpTime at + the time when the last of the following occurred: + 1) the agent cold- or warm-started; + 2) the row for the group was created (such + as when the group was added to the system); or + 3) the value of rptrGroupOperStatus for the + group changed. + + A value of zero indicates that the group's + operational status has not changed since the agent + last restarted." + ::= { rptrGroupEntry 5 } + +rptrGroupPortCapacity OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rptrGroupPortCapacity is the number of ports + that can be contained within the group. Valid + range is 1-2147483647. Within each group, the + ports are uniquely numbered in the range from 1 to + rptrGroupPortCapacity. + + Some ports may not be present in the system, in + which case the actual number of ports present + will be less than the value of rptrGroupPortCapacity. + The number of ports present in the group will never + be greater than the value of rptrGroupPortCapacity. + + Note: In practice, this will generally be the + number of ports on a module, card, or board, and + the port numbers will correspond to numbers marked + on the physical embodiment." + REFERENCE + "IEEE 802.3 Mgt, 30.4.2.1.2, aGroupPortCapacity." + ::= { rptrGroupEntry 6 } + + +-- Basic information at the port level. +-- +-- Configuration and status objects for +-- each managed repeater port in the system, +-- independent of whether there is one or more +-- managed repeater-units in the system. + +rptrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information about + the repeater ports in the system. The number of + entries is independent of the number of repeaters + in the managed system." + ::= { rptrPortInfo 1 } + +rptrPortEntry OBJECT-TYPE + SYNTAX RptrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single port." + INDEX { rptrPortGroupIndex, rptrPortIndex } + ::= { rptrPortTable 1 } + +RptrPortEntry ::= + SEQUENCE { + rptrPortGroupIndex + Integer32, + rptrPortIndex + Integer32, + rptrPortAdminStatus + INTEGER, + rptrPortAutoPartitionState + INTEGER, + rptrPortOperStatus + INTEGER, + rptrPortRptrId + Integer32 + } + +rptrPortGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the group containing the + port for which this entry contains information." + ::= { rptrPortEntry 1 } + +rptrPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the port within the group + for which this entry contains information. This + identifies the port independently from the repeater + it may be attached to. The numbering scheme for + ports is implementation specific; however, this + value can never be greater than + rptrGroupPortCapacity for the associated group." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.1, aPortID." + ::= { rptrPortEntry 2 } + +rptrPortAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to disabled(2) disables the + port. A disabled port neither transmits nor + receives. Once disabled, a port must be + explicitly enabled to restore operation. A port + which is disabled when power is lost or when a + reset is exerted shall remain disabled when normal + operation resumes. + + The admin status takes precedence over auto- + partition and functionally operates between the + auto-partition mechanism and the AUI/PMA. + + Setting this object to enabled(1) enables the port + and exerts a BEGIN on the port's auto-partition + state machine. + + (In effect, when a port is disabled, the value of + rptrPortAutoPartitionState for that port is frozen + until the port is next enabled. When the port + becomes enabled, the rptrPortAutoPartitionState + becomes notAutoPartitioned(1), regardless of its + pre-disabling state.)" + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.2, aPortAdminState + and 30.4.3.2.1, acPortAdminControl." + ::= { rptrPortEntry 3 } + +rptrPortAutoPartitionState OBJECT-TYPE + SYNTAX INTEGER { + notAutoPartitioned(1), + autoPartitioned(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The autoPartitionState flag indicates whether the + port is currently partitioned by the repeater's + auto-partition protection. + + The conditions that cause port partitioning are + specified in partition state machine in Sections + 9 and 27 of [IEEE 802.3 Std]. They are not + differentiated here." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.3, aAutoPartitionState." + ::= { rptrPortEntry 4 } + +rptrPortOperStatus OBJECT-TYPE + SYNTAX INTEGER { + operational(1), + notOperational(2), + notPresent(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the port's operational + status. The notPresent(3) status indicates the + port is physically removed (note this may or may + not be possible depending on the type of port.) + The operational(1) status indicates that the port + is enabled (see rptrPortAdminStatus) and working, + even though it might be auto-partitioned (see + rptrPortAutoPartitionState). + + If this object has the value operational(1) and + rptrPortAdminStatus is set to disabled(2), it is + expected that this object's value will soon change + to notOperational(2)." + ::= { rptrPortEntry 5 } + +rptrPortRptrId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the repeater to + which this port belongs. The repeater + identified by a particular value of this object + is the same as that identified by the same + value of rptrInfoId. A value of zero + indicates that this port currently is not + a member of any repeater." + ::= { rptrPortEntry 6 } + + +-- New version of basic information at the repeater level. +-- +-- Configuration, status, and control objects for +-- each managed repeater in the system. + +rptrInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about each + non-trivial repeater. The number of entries + depends on the physical configuration of the + managed system." + ::= { rptrAllRptrInfo 1 } + +rptrInfoEntry OBJECT-TYPE + SYNTAX RptrInfoEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single non-trivial repeater." + INDEX { rptrInfoId } + ::= { rptrInfoTable 1 } + +RptrInfoEntry ::= + SEQUENCE { + rptrInfoId + Integer32, + rptrInfoRptrType + INTEGER, + rptrInfoOperStatus + INTEGER, + rptrInfoReset + INTEGER, + rptrInfoPartitionedPorts + Gauge32, + rptrInfoLastChange + TimeStamp + } + +rptrInfoId OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the repeater for which + this entry contains information." + ::= { rptrInfoEntry 1 } + +rptrInfoRptrType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- undefined or unknown + tenMb(2), + onehundredMbClassI(3), + onehundredMbClassII(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rptrInfoRptrType returns a value that identifies + the CSMA/CD repeater type." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.2, aRepeaterType." + ::= { rptrInfoEntry 2 } + +rptrInfoOperStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + ok(2), + failure(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The rptrInfoOperStatus object indicates the + operational state of the repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.5, aRepeaterHealthState." + ::= { rptrInfoEntry 3 } + +rptrInfoReset OBJECT-TYPE + SYNTAX INTEGER { + noReset(1), + reset(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to reset(2) causes a + transition to the START state of Fig 9-2 in + section 9 [IEEE 802.3 Std] for a 10Mb/s repeater, + and to the START state of Fig 27-2 in section 27 + of that standard for a 100Mb/s repeater. + + Setting this object to noReset(1) has no effect. + The agent will always return the value noReset(1) + when this object is read. + + After receiving a request to set this variable to + reset(2), the agent is allowed to delay the reset + for a short period. For example, the implementor + may choose to delay the reset long enough to allow + the SNMP response to be transmitted. In any + event, the SNMP response must be transmitted. + + This action does not reset the management counters + defined in this document nor does it affect the + portAdminStatus parameters. Included in this + action is the execution of a disruptive Self-Test + with the following characteristics: a) The nature + of the tests is not specified. b) The test resets + the repeater but without affecting management + information about the repeater. c) The test does + not inject packets onto any segment. d) Packets + received during the test may or may not be + transferred. e) The test does not interfere with + management functions. + + After performing this self-test, the agent will + update the repeater health information (including + rptrInfoOperStatus), and send a rptrInfoResetEvent + notification." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.2.1, acResetRepeater." + ::= { rptrInfoEntry 4 } + +rptrInfoPartitionedPorts OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object returns the total number of ports in + the repeater whose current state meets all three + of the following criteria: rptrPortOperStatus + does not have the value notPresent(3), + rptrPortAdminStatus is enabled(1), and + rptrPortAutoPartitionState is autoPartitioned(2)." + ::= { rptrInfoEntry 5 } + +rptrInfoLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when any of the following + conditions occurred: + 1) agent cold- or warm-started; + 2) this instance of repeater was created + (such as when a device or module was + added to the system); + 3) a change in the value of rptrInfoOperStatus; + 4) ports were added or removed as members of + the repeater; or + 5) any of the counters associated with this + repeater had a discontinuity." + ::= { rptrInfoEntry 6 } + + + + +-- +-- Old version of statistics at the repeater level. +-- +-- Performance monitoring statistics for the repeater +-- +-- In a system containing a single managed repeater-unit, +-- the statistics object for the repeater-unit. + +-- The objects contained under the rptrMonitorRptrInfo subtree are +-- intended for backwards compatibility with implementations of +-- RFC 1516 [11]. In newer implementations (both single- and +-- multiple-repeater implementations), the rptrMonitorTable will +-- be implemented. It is the preferred source of this information, +-- as it contains the values for all repeaters managed by the +-- agent. In all cases, the objects in the rptrMonitorRptrInfo +-- subtree are duplicates of the corresponding objects in the +-- first entry of the rptrMonitorTable. + + +rptrMonitorTransmitCollisions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + For a clause 9 (10Mb/s) repeater, this counter + is incremented every time the repeater state + machine enters the TRANSMIT COLLISION state + from any state other than ONE PORT LEFT + (Ref: Fig 9-2 [IEEE 802.3 Std]). + + For a clause 27 repeater, this counter is + incremented every time the repeater core state + diagram enters the Jam state as a result of + Activity(ALL) > 1 (fig 27-2 [IEEE 802.3 Std]). + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater and 1.6 + hours in a 100Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.8, aTransmitCollisions." + ::= { rptrMonitorRptrInfo 1 } + + +-- Statistics at the group level. +-- +-- In a system containing a single managed repeater-unit, +-- the statistics objects for each group. + +rptrMonitorGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMonitorGroupEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + Table of performance and error statistics for the + groups within the repeater. The number of entries + is the same as that in the rptrGroupTable." + ::= { rptrMonitorGroupInfo 1 } + +rptrMonitorGroupEntry OBJECT-TYPE + SYNTAX RptrMonitorGroupEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing total + performance and error statistics for a single + group. Regular retrieval of the information in + this table provides a means of tracking the + performance and health of the networked devices + attached to this group's ports. + + The counters in this table are redundant in the + sense that they are the summations of information + already available through other objects. However, + these sums provide a considerable optimization of + network management traffic over the otherwise + necessary retrieval of the individual counters + included in each sum. + + Note: Group-level counters are + deprecated in this MIB. It is recommended + that management applications instead use + the repeater-level counters contained in + the rptrMonTable." + INDEX { rptrMonitorGroupIndex } + ::= { rptrMonitorGroupTable 1 } + +RptrMonitorGroupEntry ::= + SEQUENCE { + rptrMonitorGroupIndex + Integer32, + rptrMonitorGroupTotalFrames + Counter32, + rptrMonitorGroupTotalOctets + Counter32, + rptrMonitorGroupTotalErrors + Counter32 + } + +rptrMonitorGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object identifies the group within the + repeater for which this entry contains + information." + ::= { rptrMonitorGroupEntry 1 } + +rptrMonitorGroupTotalFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The total number of frames of valid frame length + that have been received on the ports in this group + and for which the FCSError and CollisionEvent + signals were not asserted. This counter is the + summation of the values of the + rptrMonitorPortReadableFrames counters for all of + the ports in the group. + + This statistic provides one of the parameters + necessary for obtaining the packet error rate. + The approximate minimum time for rollover of this + counter is 80 hours in a 10Mb/s repeater." + ::= { rptrMonitorGroupEntry 2 } + +rptrMonitorGroupTotalOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The total number of octets contained in the valid + frames that have been received on the ports in + this group. This counter is the summation of the + values of the rptrMonitorPortReadableOctets + counters for all of the ports in the group. + + This statistic provides an indicator of the total + data transferred. The approximate minimum time + for rollover of this counter is 58 minutes in a + 10Mb/s repeater." + ::= { rptrMonitorGroupEntry 3 } + +rptrMonitorGroupTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + The total number of errors which have occurred on + all of the ports in this group. This counter is + the summation of the values of the + rptrMonitorPortTotalErrors counters for all of the + ports in the group." + ::= { rptrMonitorGroupEntry 4 } + + +-- Statistics at the port level. +-- + +rptrMonitorPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMonitorPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of performance and error statistics for the + ports. The number of entries is the same as that + in the rptrPortTable. + + The columnar object rptrMonitorPortLastChange + is used to indicate possible discontinuities + of counter type columnar objects in the table." + ::= { rptrMonitorPortInfo 1 } + +rptrMonitorPortEntry OBJECT-TYPE + SYNTAX RptrMonitorPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing performance and + error statistics for a single port." + INDEX { rptrMonitorPortGroupIndex, rptrMonitorPortIndex } + ::= { rptrMonitorPortTable 1 } + +RptrMonitorPortEntry ::= + SEQUENCE { + rptrMonitorPortGroupIndex + Integer32, + rptrMonitorPortIndex + Integer32, + rptrMonitorPortReadableFrames + Counter32, + rptrMonitorPortReadableOctets + Counter32, + rptrMonitorPortFCSErrors + Counter32, + rptrMonitorPortAlignmentErrors + Counter32, + rptrMonitorPortFrameTooLongs + Counter32, + rptrMonitorPortShortEvents + Counter32, + rptrMonitorPortRunts + Counter32, + rptrMonitorPortCollisions + Counter32, + rptrMonitorPortLateEvents + Counter32, + rptrMonitorPortVeryLongEvents + Counter32, + rptrMonitorPortDataRateMismatches + Counter32, + rptrMonitorPortAutoPartitions + Counter32, + rptrMonitorPortTotalErrors + Counter32, + rptrMonitorPortLastChange + TimeStamp + } + +rptrMonitorPortGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the group containing the + port for which this entry contains information." + ::= { rptrMonitorPortEntry 1 } + +rptrMonitorPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the port within the group + for which this entry contains information." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.1, aPortID." + ::= { rptrMonitorPortEntry 2 } + +rptrMonitorPortReadableFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of frames of valid + frame length that have been received on this port. + This counter is incremented by one for each frame + received on this port whose OctetCount is greater + than or equal to minFrameSize and less than or + equal to maxFrameSize (Ref: IEEE 802.3 Std, + 4.4.2.1) and for which the FCSError and + CollisionEvent signals are not asserted. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + This statistic provides one of the parameters + necessary for obtaining the packet error rate. + The approximate minimum time for rollover of this + counter is 80 hours at 10Mb/s." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.4, aReadableFrames." + ::= { rptrMonitorPortEntry 3 } + +rptrMonitorPortReadableOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of octets contained in + valid frames that have been received on this port. + This counter is incremented by OctetCount for each + frame received on this port which has been + determined to be a readable frame (i.e., including + FCS octets but excluding framing bits and dribble + bits). + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + This statistic provides an indicator of the total + data transferred. The approximate minimum time + for rollover of this counter in a 10Mb/s repeater + is 58 minutes. + + For ports receiving traffic at a maximum rate in + a 100Mb/s repeater, this counter can roll over + in less than 6 minutes. Since that amount of time + could be less than a management station's poll cycle + time, in order to avoid a loss of information a + management station is advised to also poll the + rptrMonitorPortUpper32Octets object, or to use the + 64-bit counter defined by + rptrMonitorPortHCReadableOctets instead of the + two 32-bit counters." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.5, aReadableOctets." + ::= { rptrMonitorPortEntry 4 } + +rptrMonitorPortFCSErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each frame + received on this port with the FCSError signal + asserted and the FramingError and CollisionEvent + signals deasserted and whose OctetCount is greater + than or equal to minFrameSize and less than or + equal to maxFrameSize (Ref: 4.4.2.1, IEEE 802.3 + Std). + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 80 hours at 10Mb/s." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.6, + aFrameCheckSequenceErrors." + ::= { rptrMonitorPortEntry 5 } + +rptrMonitorPortAlignmentErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each frame + received on this port with the FCSError and + FramingError signals asserted and CollisionEvent + signal deasserted and whose OctetCount is greater + than or equal to minFrameSize and less than or + equal to maxFrameSize (Ref: IEEE 802.3 Std, + 4.4.2.1). If rptrMonitorPortAlignmentErrors is + incremented then the rptrMonitorPortFCSErrors + Counter shall not be incremented for the same + frame. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 80 hours at 10Mb/s." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.7, aAlignmentErrors." + ::= { rptrMonitorPortEntry 6 } + +rptrMonitorPortFrameTooLongs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each frame + received on this port whose OctetCount is greater + than maxFrameSize (Ref: 4.4.2.1, IEEE 802.3 Std). + If rptrMonitorPortFrameTooLongs is incremented + then neither the rptrMonitorPortAlignmentErrors + nor the rptrMonitorPortFCSErrors counter shall be + incremented for the frame. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 61 days in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.8, aFramesTooLong." + ::= { rptrMonitorPortEntry 7 } + +rptrMonitorPortShortEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each + CarrierEvent on this port with ActivityDuration + less than ShortEventMaxTime. ShortEventMaxTime is + greater than 74 bit times and less than 82 bit + times. ShortEventMaxTime has tolerances included + to provide for circuit losses between a + conformance test point at the AUI and the + measurement point within the state machine. + + Notes: + + ShortEvents may indicate externally + generated noise hits which will cause the repeater + to transmit Runts to its other ports, or propagate + a collision (which may be late) back to the + transmitting DTE and damaged frames to the rest of + the network. + + Implementors may wish to consider selecting the + ShortEventMaxTime towards the lower end of the + allowed tolerance range to accommodate bit losses + suffered through physical channel devices not + budgeted for within this standard. + + The significance of this attribute is different + in 10 and 100 Mb/s collision domains. Clause 9 + repeaters perform fragment extension of short + events which would be counted as runts on the + interconnect ports of other repeaters. Clause + 27 repeaters do not perform fragment extension. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.9, aShortEvents." + ::= { rptrMonitorPortEntry 8 } + +rptrMonitorPortRunts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each + CarrierEvent on this port that meets one of the + following two conditions. Only one test need be + made. a) The ActivityDuration is greater than + ShortEventMaxTime and less than ValidPacketMinTime + and the CollisionEvent signal is deasserted. b) + The OctetCount is less than 64, the + ActivityDuration is greater than ShortEventMaxTime + and the CollisionEvent signal is deasserted. + ValidPacketMinTime is greater than or equal to 552 + bit times and less than 565 bit times. + + An event whose length is greater than 74 bit times + but less than 82 bit times shall increment either + the shortEvents counter or the runts counter but + not both. A CarrierEvent greater than or equal to + 552 bit times but less than 565 bit times may or + may not be counted as a runt. + + ValidPacketMinTime has tolerances included to + provide for circuit losses between a conformance + test point at the AUI and the measurement point + within the state machine. + + Runts usually indicate collision fragments, a + normal network event. In certain situations + associated with large diameter networks a + percentage of collision fragments may exceed + ValidPacketMinTime. + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.10, aRunts." + ::= { rptrMonitorPortEntry 9 } + +rptrMonitorPortCollisions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a clause 9 repeater, this counter is + incremented by one for any CarrierEvent signal + on any port for which the CollisionEvent signal + on this port is asserted. For a clause 27 + repeater port the counter increments on entering + the Collision Count Increment state of the + partition state diagram (fig 27-8 of + [IEEE 802.3 Std]). + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.11, aCollisions." + ::= { rptrMonitorPortEntry 10 } + +rptrMonitorPortLateEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a clause 9 repeater port, this counter is + incremented by one for each CarrierEvent + on this port in which the CollIn(X) + variable transitions to the value SQE (Ref: + 9.6.6.2, IEEE 802.3 Std) while the + ActivityDuration is greater than the + LateEventThreshold. For a clause 27 repeater + port, this counter is incremented by one on + entering the Collision Count Increment state + of the partition state diagram (fig 27-8) + while the ActivityDuration is greater than + the LateEvent- Threshold. Such a CarrierEvent + is counted twice, as both a collision and as a + lateEvent. + + The LateEventThreshold is greater than 480 bit + times and less than 565 bit times. + LateEventThreshold has tolerances included to + permit an implementation to build a single + threshold to serve as both the LateEventThreshold + and ValidPacketMinTime threshold. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 81 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.12, aLateEvents." + ::= { rptrMonitorPortEntry 11 } + +rptrMonitorPortVeryLongEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a clause 9 repeater port, this counter + is incremented by one for each CarrierEvent + whose ActivityDuration is greater than the + MAU Jabber Lockup Protection timer TW3 + (Ref: 9.6.1 & 9.6.5, IEEE 802.3 Std). + + For a clause 27 repeater port, this counter + is incremented by one on entry to the + Rx Jabber state of the receiver timer state + diagram (fig 27-7). Other counters may + be incremented as appropriate. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.13, aVeryLongEvents." + ::= { rptrMonitorPortEntry 12 } + +rptrMonitorPortDataRateMismatches OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each + frame received by this port that meets all + of the conditions required by only one of the + following two measurement methods: + + Measurement method A: 1) The CollisionEvent + signal is not asserted (10Mb/s operation) or + the Collision Count Increment state of the + partition state diagram (fig 27-8 of + [IEEE 802.3 Std]) has not been entered + (100Mb/s operation). 2) The ActivityDuration + is greater than ValidPacketMinTime. 3) The + frequency (data rate) is detectably mismatched + from the local transmit frequency. + + Measurement method B: 1) The CollisionEvent + signal is not asserted (10Mb/s operation) + or the Collision Count Increment state of the + partition state diagram (fig 27-8 of + [IEEE 802.3 Std]) has not been entered + (100Mb/s operation). 2) The OctetCount is + greater than 63. 3) The frequency (data + rate) is detectably mismatched from the local + transmit frequency. The exact degree of + mismatch is vendor specific and is to be + defined by the vendor for conformance testing. + + When this event occurs, other counters whose + increment conditions were satisfied may or may not + also be incremented, at the implementor's + discretion. Whether or not the repeater was able + to maintain data integrity is beyond the scope of + this standard. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.14, aDataRateMismatches." + ::= { rptrMonitorPortEntry 13 } + +rptrMonitorPortAutoPartitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for + each time the repeater has automatically + partitioned this port. + + The conditions that cause a clause 9 + repeater port to partition are specified in + the partition state diagram in clause 9 of + [IEEE 802.3 Std]. They are not differentiated + here. A clause 27 repeater port partitions + on entry to the Partition Wait state of the + partition state diagram (fig 27-8 in + [IEEE 802.3 Std]). + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.15, aAutoPartitions." + ::= { rptrMonitorPortEntry 14 } + +rptrMonitorPortTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of errors which have occurred on + this port. This counter is the summation of the + values of other error counters (for the same + port), namely: + + rptrMonitorPortFCSErrors, + rptrMonitorPortAlignmentErrors, + rptrMonitorPortFrameTooLongs, + rptrMonitorPortShortEvents, + rptrMonitorPortLateEvents, + rptrMonitorPortVeryLongEvents, + rptrMonitorPortDataRateMismatches, and + rptrMonitorPortSymbolErrors. + + This counter is redundant in the sense that it is + the summation of information already available + through other objects. However, it is included + specifically because the regular retrieval of this + object as a means of tracking the health of a port + provides a considerable optimization of network + management traffic over the otherwise necessary + retrieval of the summed counters. + + Note that rptrMonitorPortRunts is not included + in this total; this is because runts usually + indicate collision fragments, a normal network + event. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + ::= { rptrMonitorPortEntry 15 } + +rptrMonitorPortLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last of + the following occurred: + 1) the agent cold- or warm-started; + 2) the row for the port was created + (such as when a device or module was added + to the system); or + 3) any condition that would cause one of + the counters for the row to experience + a discontinuity." + ::= { rptrMonitorPortEntry 16 } + +rptrMonitor100PortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMonitor100PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of additional performance and error + statistics for 100Mb/s ports, above and + beyond those parameters that apply to both + 10 and 100Mbps ports. Entries exist only for + ports attached to 100Mbps repeaters. + + The columnar object rptrMonitorPortLastChange + is used to indicate possible discontinuities + of counter type columnar objects in this table." + ::= { rptrMonitorPortInfo 2 } + +rptrMonitor100PortEntry OBJECT-TYPE + SYNTAX RptrMonitor100PortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing performance + and error statistics for a single 100Mb/s port." + INDEX { rptrMonitorPortGroupIndex, rptrMonitorPortIndex } + ::= { rptrMonitor100PortTable 1 } + +RptrMonitor100PortEntry ::= + SEQUENCE { + rptrMonitorPortIsolates + Counter32, + rptrMonitorPortSymbolErrors + Counter32, + rptrMonitorPortUpper32Octets + Counter32, + rptrMonitorPortHCReadableOctets + Counter64 + } + +rptrMonitorPortIsolates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one each time that + the repeater port automatically isolates as a + consequence of false carrier events. The conditions + which cause a port to automatically isolate are + defined by the transition from the False Carrier + state to the Link Unstable state of the carrier + integrity state diagram (figure 27-9) + [IEEE 802.3 Standard]. + + Note: Isolates do not affect the value of + the PortOperStatus object. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.16, aIsolates." + ::= { rptrMonitor100PortEntry 1 } + +rptrMonitorPortSymbolErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one each time when + valid length packet was received at the port and + there was at least one occurrence of an invalid + data symbol. This can increment only once per valid + carrier event. A collision presence at any port of + the repeater containing port N, will not cause this + attribute to increment. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 7.4 hours at 100Mb/s." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.17, + aSymbolErrorDuringPacket." + ::= { rptrMonitor100PortEntry 2 } + +rptrMonitorPortUpper32Octets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of octets contained in + valid frames that have been received on this port, + modulo 2**32. That is, it contains the upper 32 + bits of a 64-bit octets counter, of which the + lower 32 bits are contained in the + rptrMonitorPortReadableOctets object. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMP V1) and are used to + manage a repeater type of 100Mb/s. + + Conformance clauses for this MIB are defined such + that implementation of this object is not required + in a system which does not support 100Mb/s. + However, systems with mixed 10 and 100Mb/s ports + may implement this object across all ports, + including 10Mb/s. If this object is implemented, + it must be according to the definition in the first + paragraph of this description; that is, the value + of this object MUST be a valid count. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + ::= { rptrMonitor100PortEntry 3 } + +rptrMonitorPortHCReadableOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the number of octets contained in + valid frames that have been received on this port. + This counter is incremented by OctetCount for each + frame received on this port which has been + determined to be a readable frame (i.e., including + FCS octets but excluding framing bits and dribble + bits). + + This statistic provides an indicator of the total + data transferred. + + This counter is a 64-bit version of rptrMonitor- + PortReadableOctets. It should be used by network + management protocols which suppport 64-bit counters + (e.g. SNMPv2). + + Conformance clauses for this MIB are defined such + that implementation of this object is not required + in a system which does not support 100Mb/s. + However, systems with mixed 10 and 100Mb/s ports + may implement this object across all ports, + including 10Mb/s. If this object is implemented, + it must be according to the definition in the first + paragraph of this description; that is, the value + of this object MUST be a valid count. + + A discontinuity may occur in the value + when the value of object + rptrMonitorPortLastChange changes." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.5, aReadableOctets." + ::= { rptrMonitor100PortEntry 4 } + + +-- New version of statistics at the repeater level. +-- +-- Statistics objects for each managed repeater +-- in the system. + +rptrMonTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMonEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of information about each + non-trivial repeater. The number of entries + in this table is the same as the number of + entries in the rptrInfoTable. + + The columnar object rptrInfoLastChange is + used to indicate possible discontinuities of + counter type columnar objects in this table." + ::= { rptrMonitorAllRptrInfo 1 } + +rptrMonEntry OBJECT-TYPE + SYNTAX RptrMonEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single non-trivial repeater." + INDEX { rptrInfoId } + ::= { rptrMonTable 1 } + +RptrMonEntry ::= + SEQUENCE { + rptrMonTxCollisions + Counter32, + rptrMonTotalFrames + Counter32, + rptrMonTotalErrors + Counter32, + rptrMonTotalOctets + Counter32 + } + +rptrMonTxCollisions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For a clause 9 (10Mb/s) repeater, this counter + is incremented every time the repeater state + machine enters the TRANSMIT COLLISION state + from any state other than ONE PORT LEFT + (Ref: Fig 9-2 [IEEE 802.3 Std]). + + For a clause 27 repeater, this counter is + incremented every time the repeater core state + diagram enters the Jam state as a result of + Activity(ALL) > 1 (fig 27-2 [IEEE 802.3 Std]). + + The approximate minimum time for rollover of this + counter is 16 hours in a 10Mb/s repeater and 1.6 + hours in a 100Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.1.8, aTransmitCollisions" + ::= { rptrMonEntry 1 } + +rptrMonTotalFrames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of frames of valid frame length + that have been received on the ports in this repeater + and for which the FCSError and CollisionEvent + signals were not asserted. If an implementation + can not obtain a count of frames as seen by + the repeater itself, this counter may be + implemented as the summation of the values of the + rptrMonitorPortReadableFrames counters for all of + the ports in the repeater. + + This statistic provides one of the parameters + necessary for obtaining the packet error rate. + The approximate minimum time for rollover of this + counter is 80 hours in a 10Mb/s repeater." + ::= { rptrMonEntry 3 } + +rptrMonTotalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of errors which have occurred on + all of the ports in this repeater. The errors + included in this count are the same as those listed + for the rptrMonitorPortTotalErrors counter. If an + implementation can not obtain a count of these + errors as seen by the repeater itself, this counter + may be implemented as the summation of the values of + the rptrMonitorPortTotalErrors counters for all of + the ports in the repeater." + ::= { rptrMonEntry 4 } + +rptrMonTotalOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in the valid + frames that have been received on the ports in + this group. If an implementation can not obtain + a count of octets as seen by the repeater itself, + this counter may be the summation of the + values of the rptrMonitorPortReadableOctets + counters for all of the ports in the group. + + This statistic provides an indicator of the total + data transferred. The approximate minimum time + for rollover of this counter in a 10Mb/s repeater + is 58 minutes divided by the number of ports in + the repeater. + + For 100Mb/s repeaters processing traffic at a + maximum rate, this counter can roll over in less + than 6 minutes divided by the number of ports in + the repeater. Since that amount of time could + be less than a management station's poll cycle + time, in order to avoid a loss of information a + management station is advised to also poll the + rptrMonUpper32TotalOctets object, or to use the + 64-bit counter defined by rptrMonHCTotalOctets + instead of the two 32-bit counters." + ::= { rptrMonEntry 5 } + +rptrMon100Table OBJECT-TYPE + SYNTAX SEQUENCE OF RptrMon100Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of additional information about each + 100Mb/s repeater, augmenting the entries in + the rptrMonTable. Entries exist in this table + only for 100Mb/s repeaters. + + The columnar object rptrInfoLastChange is + used to indicate possible discontinuities of + counter type columnar objects in this table." + ::= { rptrMonitorAllRptrInfo 2 } + +rptrMon100Entry OBJECT-TYPE + SYNTAX RptrMon100Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single 100Mbps repeater." + INDEX { rptrInfoId } + ::= { rptrMon100Table 1 } + +RptrMon100Entry ::= + SEQUENCE { + rptrMonUpper32TotalOctets + Counter32, + rptrMonHCTotalOctets + Counter64 + } + +rptrMonUpper32TotalOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in the valid + frames that have been received on the ports in + this repeater, modulo 2**32. That is, it contains + the upper 32 bits of a 64-bit counter, of which + the lower 32 bits are contained in the + rptrMonTotalOctets object. If an implementation + can not obtain a count of octets as seen + by the repeater itself, the 64-bit value + may be the summation of the values of the + rptrMonitorPortReadableOctets counters combined + with the corresponding rptrMonitorPortUpper32Octets + counters for all of the ports in the repeater. + + This statistic provides an indicator of the total + data transferred within the repeater. + + This two-counter mechanism is provided for those + network management protocols that do not support + 64-bit counters (e.g. SNMP V1) and are used to + manage a repeater type of 100Mb/s. + + Conformance clauses for this MIB are defined such + that implementation of this object is not required + in a system which does not support 100Mb/s. + However, systems with mixed 10 and 100Mb/s ports + may implement this object across all ports, + including 10Mb/s. If this object is implemented, + it must be according to the definition in the first + paragraph of this description; that is, the value + of this object MUST be a valid count." + ::= { rptrMon100Entry 1 } + +rptrMonHCTotalOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets contained in the valid + frames that have been received on the ports in + this group. If a implementation can not obtain + a count of octets as seen by the repeater itself, + this counter may be the summation of the + values of the rptrMonitorPortReadableOctets + counters for all of the ports in the group. + + This statistic provides an indicator of the total + data transferred. + + This counter is a 64-bit (high-capacity) version + of rptrMonUpper32TotalOctets and rptrMonTotalOctets. + It should be used by network management protocols + which support 64-bit counters (e.g. SNMPv2). + + Conformance clauses for this MIB are defined such + that implementation of this object is not required + in a system which does not support 100Mb/s. + However, systems with mixed 10 and 100Mb/s ports + may implement this object across all ports, + including 10Mb/s. If this object is implemented, + it must be according to the definition in the first + paragraph of this description; that is, the value + of this object MUST be a valid count." + ::= { rptrMon100Entry 2 } + + +-- +-- The Repeater Address Search Table +-- +-- This table provides an active address tracking +-- capability which can be also used to collect the +-- necessary information for mapping the topology +-- of a network. Note that an NMS is required to have +-- read-write access to the table in order to access +-- this function. Section 4, "Topology Mapping", +-- contains a description of an algorithm which can +-- make use of this table, in combination with the + +-- forwarding databases of managed bridges/switches +-- in the network, to map network topology. +-- + +rptrAddrSearchTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrAddrSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry per repeater in the + system. It defines objects which allow a network + management application to instruct an agent to watch + for a given MAC address and report which port it + was seen on. Only one address search can be in + progress on each repeater at any one time. Before + starting an address search, a management application + should obtain 'ownership' of the entry in + rptrAddrSearchTable for the repeater that is to + perform the search. This is accomplished with the + rptrAddrSearchLock and rptrAddrSearchStatus as + follows: + + try_again: + get(rptrAddrSearchLock, rptrAddrSearchStatus) + while (rptrAddrSearchStatus != notInUse) + { + /* Loop waiting for objects to be available*/ + short delay + get(rptrAddrSearchLock, rptrAddrSearchStatus) + } + + /* Try to claim map objects */ + lock_value = rptrAddrSearchLock + if ( set(rptrAddrSearchLock = lock_value, + rptrAddrSearchStatus = inUse, + rptrAddrSearchOwner = 'my-IP-address) + == FAILURE) + /* Another manager got the lock */ + goto try_again + + /* I have the lock */ + set (rptrAddrSearchAddress = ) + + wait for rptrAddrSearchState to change from none + + if (rptrAddrSearchState == single) + get (rptrAddrSearchGroup, rptrAddrSearchPort) + /* release the lock, making sure not to overwrite + anyone else's lock */ + set (rptrAddrSearchLock = lock_value+1, + rptrAddrSearchStatus = notInUse, + rptrAddrSearchOwner = '') + + A management station first retrieves the values of + the appropriate instances of the rptrAddrSearchLock + and rptrAddrSearchStatus objects, periodically + repeating the retrieval if necessary, until the value + of rptrAddrSearchStatus is 'notInUse'. The + management station then tries to set the same + instance of the rptrAddrSearchLock object to the + value it just retrieved, the same instance of the + rptrAddrSearchStatus object to 'inUse', and the + corresponding instance of rptrAddrSearchOwner to a + value indicating itself. If the set operation + succeeds, then the management station has obtained + ownership of the rptrAddrSearchEntry, and the value + of rptrAddrSearchLock is incremented by the agent (as + per the semantics of TestAndIncr). Failure of the + set operation indicates that some other manager has + obtained ownership of the rptrAddrSearchEntry. + + Once ownership is obtained, the management station + can proceed with the search operation. Note that the + agent will reset rptrAddrSearchStatus to 'notInUse' + if it has been in the 'inUse' state for an abnormally + long period of time, to prevent a misbehaving manager + from permanently locking the entry. It is suggested + that this timeout period be between one and five + minutes. + + When the management station has completed its search + operation, it should free the entry by setting + the instance of the rptrAddrSearchLock object to the + previous value + 1, the instance of the + rptrAddrSearchStatus to 'notInUse', and the instance + of rptrAddrSearchOwner to a zero length string. This + is done to prevent overwriting another station's + lock." + ::= { rptrAddrTrackRptrInfo 1 } + +rptrAddrSearchEntry OBJECT-TYPE + SYNTAX RptrAddrSearchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing objects for invoking an address + search on a repeater." + INDEX { rptrInfoId } + ::= { rptrAddrSearchTable 1 } + +RptrAddrSearchEntry ::= + SEQUENCE { + rptrAddrSearchLock TestAndIncr, + rptrAddrSearchStatus INTEGER, + rptrAddrSearchAddress MacAddress, + rptrAddrSearchState INTEGER, + rptrAddrSearchGroup Integer32, + rptrAddrSearchPort Integer32, + rptrAddrSearchOwner OwnerString + } + + +rptrAddrSearchLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used by a management station as an + advisory lock for this rptrAddrSearchEntry." + ::= { rptrAddrSearchEntry 1 } + +rptrAddrSearchStatus OBJECT-TYPE + SYNTAX INTEGER { + notInUse(1), + inUse(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to indicate that some management + station is currently using this rptrAddrSearchEntry. + Cooperating managers should set this object to + 'notInUse' when they are finished using this entry. + The agent will automatically set the value of this + object to 'notInUse' if it has been set to 'inUse' + for an unusually long period of time." + ::= { rptrAddrSearchEntry 2 } + +rptrAddrSearchAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to search for a specified MAC + address. When this object is set, an address search + begins. This automatically sets the corresponding + instance of the rptrAddrSearchState object to 'none' + and the corresponding instances of the + rptrAddrSearchGroup and rptrAddrSearchPort objects to + 0. + + When a valid frame is received by this repeater with + a source MAC address which matches the current value + of rptrAddrSearchAddress, the agent will update the + corresponding instances of rptrAddrSearchState, + rptrAddrSearchGroup and rptrAddrSearchPort to reflect + the current status of the search, and the group and + port on which the frame was seen." + ::= { rptrAddrSearchEntry 3 } + +rptrAddrSearchState OBJECT-TYPE + SYNTAX INTEGER { + none(1), + single(2), + multiple(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the MAC address search on this + repeater. This object is initialized to 'none' when + the corresponding instance of rptrAddrSearchAddress + is set. If the agent detects the address on exactly + one port, it will set this object to 'single', and + set the corresponding instances of + rptrAddrSearchGroup and rptrAddrSearchPort to reflect + the group and port on which the address was heard. + If the agent detects the address on more than one + port, it will set this object to 'multiple'." + ::= { rptrAddrSearchEntry 4 } + +rptrAddrSearchGroup OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The group from which an error-free frame whose + source address is equal to the corresponding instance + of rptrAddrSearchAddress has been received. The + value of this object is undefined when the + corresponding instance of rptrAddrSearchState is + equal to 'none' or 'multiple'." + ::= { rptrAddrSearchEntry 5 } + +rptrAddrSearchPort OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port rom which an error-free frame whose + source address is equal to the corresponding instance + of rptrAddrSearchAddress has been received. The + value of this object is undefined when the + corresponding instance of rptrAddrSearchState is + equal to 'none' or 'multiple'." + ::= { rptrAddrSearchEntry 6 } + +rptrAddrSearchOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The entity which currently has 'ownership' of this + rptrAddrSearchEntry." + ::= { rptrAddrSearchEntry 7 } + + +-- +-- The Port Address Tracking Table +-- +-- This table provides a way for a network management +-- application to passively gather information (using +-- read-only privileges) about which network addresses +-- are connected to which ports of a repeater. +-- + +rptrAddrTrackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of address mapping information about the + ports." + ::= { rptrAddrTrackPortInfo 1 } + +rptrAddrTrackEntry OBJECT-TYPE + SYNTAX RptrAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing address mapping + information about a single port." + INDEX { rptrAddrTrackGroupIndex, rptrAddrTrackPortIndex } + ::= { rptrAddrTrackTable 1 } + +RptrAddrTrackEntry ::= + SEQUENCE { + rptrAddrTrackGroupIndex + INTEGER, + rptrAddrTrackPortIndex + INTEGER, + rptrAddrTrackLastSourceAddress -- DEPRECATED OBJECT + MacAddress, + rptrAddrTrackSourceAddrChanges + Counter32, + rptrAddrTrackNewLastSrcAddress + OptMacAddr, + rptrAddrTrackCapacity + Integer32 + } + +rptrAddrTrackGroupIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the group containing the + port for which this entry contains information." + ::= { rptrAddrTrackEntry 1 } + +rptrAddrTrackPortIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the port within the group + for which this entry contains information." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.1, aPortID." + ::= { rptrAddrTrackEntry 2 } + +rptrAddrTrackLastSourceAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + This object is the SourceAddress of the last + readable frame (i.e., counted by + rptrMonitorPortReadableFrames) received by this + port. + + This object has been deprecated because its value + is undefined when no frames have been observed on + this port. The replacement object is + rptrAddrTrackNewLastSrcAddress." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.18, aLastSourceAddress." + ::= { rptrAddrTrackEntry 3 } + +rptrAddrTrackSourceAddrChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented by one for each time + that the rptrAddrTrackLastSourceAddress attribute + for this port has changed. + + This may indicate whether a link is connected to a + single DTE or another multi-user segment. + + A discontinuity may occur in the value when the + value of object rptrMonitorPortLastChange changes. + + The approximate minimum time for rollover of this + counter is 81 hours in a 10Mb/s repeater." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.19, aSourceAddressChanges." + ::= { rptrAddrTrackEntry 4 } + +rptrAddrTrackNewLastSrcAddress OBJECT-TYPE + SYNTAX OptMacAddr + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is the SourceAddress of the last + readable frame (i.e., counted by + rptrMonitorPortReadableFrames) received by this + port. If no frames have been received by this + port since the agent began monitoring the port + activity, the agent shall return a string of + length zero." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.18, aLastSourceAddress." + ::= { rptrAddrTrackEntry 5 } + +rptrAddrTrackCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addresses that can be + detected on this port. This value indicates + to the maximum number of entries in the + rptrExtAddrTrackTable relative to this port. + + If this object has the value of 1, the agent + implements only the LastSourceAddress mechanism + described by RFC 1368 or RFC 1516." + ::= { rptrAddrTrackEntry 6 } + + +-- Table for multiple addresses per port + +rptrExtAddrTrackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrExtAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table to extend the address tracking table (i.e., + rptrAddrTrackTable) with a list of source MAC + addresses that were recently received on each port. + The number of ports is the same as the number + of entries in table rptrPortTable. The number of + entries in this table depends on the agent/repeater + implementation and the number of different + addresses received on each port. + + The first entry for each port contains + the same MAC address that is given by the + rptrAddrTrackNewLastSrcAddress for that port. + + Entries in this table for a particular port are + retained when that port is switched from one + repeater to another. + + The ordering of MAC addresses listed for a + particular port is implementation dependent." + ::= { rptrAddrTrackPortInfo 2 } + +rptrExtAddrTrackEntry OBJECT-TYPE + SYNTAX RptrExtAddrTrackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row in the table of extended address tracking + information for ports. Entries can not be directly + created or deleted via SNMP operations." + INDEX { rptrAddrTrackGroupIndex, + rptrAddrTrackPortIndex, + rptrExtAddrTrackMacIndex } + ::= { rptrExtAddrTrackTable 1 } + +RptrExtAddrTrackEntry ::= SEQUENCE { + rptrExtAddrTrackMacIndex Integer32, + rptrExtAddrTrackSourceAddress MacAddress + } + +rptrExtAddrTrackMacIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of a source MAC address seen on + the port. + + The ordering of MAC addresses listed for a + particular port is implementation dependent. + + There is no implied relationship between a + particular index and a particular MAC + address. The index for a particular MAC + address may change without notice." + ::= { rptrExtAddrTrackEntry 1 } + +rptrExtAddrTrackSourceAddress OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source MAC address from a readable frame + (i.e., counted by rptrMonitorPortReadableFrames) + recently received by the port." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.3.1.18, aLastSourceAddress." + ::= { rptrExtAddrTrackEntry 2 } + + +-- The Repeater Top "N" Port Group + +-- The Repeater Top N Port group is used to prepare reports that +-- describe a list of ports ordered by one of the statistics in the +-- Repeater Monitor Port Table. The statistic chosen by the +-- management station is sampled over a management +-- station-specified time interval, making the report rate based. +-- The management station also specifies the number of ports that +-- are reported. +-- +-- The rptrTopNPortControlTable is used to initiate the generation +-- of a report. The management station may select the parameters +-- of such a report, such as which repeater, which statistic, how +-- many ports, and the start & stop times of the sampling. When +-- the report is prepared, entries are created in the +-- rptrTopNPortTable associated with the relevent +-- rptrTopNControlEntry. These entries are static for +-- each report after it has been prepared. + +-- Note that counter discontinuities may appear in some +-- implementations if ports' assignment to repeaters changes +-- during the collection of data for a Top "N" report. +-- A management application could read the corresponding +-- rptrMonitorPortLastChange timestamp in order to check +-- whether a discontinuity occurred. + + +rptrTopNPortControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrTopNPortControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control records for reports on the top `N' + ports for the rate of a selected counter. The number + of entries depends on the configuration of the agent. + The maximum number of entries is implementation + dependent." + ::= { rptrTopNPortInfo 1 } + +rptrTopNPortControlEntry OBJECT-TYPE + SYNTAX RptrTopNPortControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of parameters that control the creation of a + report of the top N ports according to several metrics." + INDEX { rptrTopNPortControlIndex } + ::= { rptrTopNPortControlTable 1 } + +RptrTopNPortControlEntry ::= SEQUENCE { + rptrTopNPortControlIndex + Integer32, + rptrTopNPortRepeaterId + Integer32, + rptrTopNPortRateBase + INTEGER, + rptrTopNPortTimeRemaining + Integer32, + rptrTopNPortDuration + Integer32, + rptrTopNPortRequestedSize + Integer32, + rptrTopNPortGrantedSize + Integer32, + rptrTopNPortStartTime + TimeStamp, + rptrTopNPortOwner + OwnerString, + rptrTopNPortRowStatus + RowStatus +} + +rptrTopNPortControlIndex OBJECT-TYPE + SYNTAX Integer32 (1 .. 65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in the + rptrTopNPortControl table. Each such entry defines + one top N report prepared for a repeater or system." + ::= { rptrTopNPortControlEntry 1 } + +rptrTopNPortRepeaterId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Identifies the repeater for which a top N report will + be prepared (see rptrInfoId). If the value of this + object is positive, only ports assigned to this repeater + will be used to form the list in which to order the + Top N table. If this value is zero, all ports will be + eligible for inclusion on the list. + + The value of this object may not be modified if the + associated rptrTopNPortRowStatus object is equal to + active(1). + If, for a particular row in this table, the repeater + specified by the value of this object goes away (is + removed from the rptrInfoTable) while the associated + rptrTopNPortRowStatus object is equal to active(1), + the row in this table is preserved by the agent but + the value of rptrTopNPortRowStatus is changed to + notInService(2), and the agent may time out the row + if appropriate. If the specified repeater comes + back (reappears in the rptrInfoTable) before the row + has been timed out, the management station must set + the value of the rptrTopNPortRowStatus object back + to active(1) if desired (the agent doesn't do this + automatically)." + ::= { rptrTopNPortControlEntry 2 } + +rptrTopNPortRateBase OBJECT-TYPE + SYNTAX INTEGER { + readableFrames(1), + readableOctets(2), + fcsErrors(3), + alignmentErrors(4), + frameTooLongs(5), + shortEvents(6), + runts(7), + collisions(8), + lateEvents(9), + veryLongEvents(10), + dataRateMismatches(11), + autoPartitions(12), + totalErrors(13), + isolates(14), + symbolErrors(15) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The monitored variable, which the rptrTopNPortRate + variable is based upon. + + The value of this object may not be modified if + the associated rptrTopNPortRowStatus object has + a value of active(1)." + ::= { rptrTopNPortControlEntry 3 } + +rptrTopNPortTimeRemaining 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, + which is loaded into the associated + rptrTopNPortDuration object. + + When this object is set to a non-zero value, + any associated rptrTopNPortEntries shall be + made inaccessible by the agent. While the value + of this object is non-zero, it decrements by one + per second until it reaches zero. During this + time, all associated rptrTopNPortEntries shall + remain inaccessible. At the time that this object + decrements to zero, the report is made accessible + in the rptrTopNPortTable. Thus, the rptrTopNPort + table needs to be created only at the end of the + collection interval. + + If the value of this object is set to zero + while the associated report is running, the + running report is aborted and no associated + rptrTopNPortEntries are created." + DEFVAL { 0 } + ::= { rptrTopNPortControlEntry 4 } + +rptrTopNPortDuration OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds that this report has + collected during the last sampling interval, + or if this report is currently being collected, + the number of seconds that this report is being + collected during this sampling interval. + + When the associated rptrTopNPortTimeRemaining + object is set, this object shall be set by the + agent to the same value and shall not be modified + until the next time the rptrTopNPortTimeRemaining + is set. + + This value shall be zero if no reports have been + requested for this rptrTopNPortControlEntry." + ::= { rptrTopNPortControlEntry 5 } + +rptrTopNPortRequestedSize OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of repeater ports requested + for the Top N Table. + + When this object is created or modified, the + agent should set rptrTopNPortGrantedSize as close + to this object as is possible for the particular + implementation and available resources." + DEFVAL { 10 } + ::= { rptrTopNPortControlEntry 6 } + +rptrTopNPortGrantedSize OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of repeater ports in the + top N table. + + When the associated rptrTopNPortRequestedSize object is + created or modified, the agent should set this object as + closely to the requested value as is possible for the + particular implementation and available resources. The + agent must not lower this value except as a result of a + set to the associated rptrTopNPortRequestedSize object." + ::= { rptrTopNPortControlEntry 7 } + +rptrTopNPortStartTime 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 rptrTopNPortTimeRemaining object was + modified to start the requested report. + + If the report has not yet been started, the value + of this object is zero." + ::= { rptrTopNPortControlEntry 8 } + +rptrTopNPortOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The entity that configured this entry and is + using the resources assigned to it." + ::= { rptrTopNPortControlEntry 9 } + +rptrTopNPortRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. + + If the value of this object is not equal to + active(1), all associated entries in the + rptrTopNPortTable shall be deleted by the + agent." + ::= { rptrTopNPortControlEntry 10 } + + +-- Top "N" reports + +rptrTopNPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF RptrTopNPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of reports for the top `N' ports based on + setting of associated control table entries. The + maximum number of entries depends on the number + of entries in table rptrTopNPortControlTable and + the value of object rptrTopNPortGrantedSize for + each entry. + + For each entry in the rptrTopNPortControlTable, + repeater ports with the highest value of + rptrTopNPortRate shall be placed in this table + in decreasing order of that rate until there is + no more room or until there are no more ports." + ::= { rptrTopNPortInfo 2 } + +rptrTopNPortEntry OBJECT-TYPE + SYNTAX RptrTopNPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for a repeater port that is + part of a top N report." + INDEX { rptrTopNPortControlIndex, + rptrTopNPortIndex } + ::= { rptrTopNPortTable 1 } + +RptrTopNPortEntry ::= SEQUENCE { + rptrTopNPortIndex + Integer32, + rptrTopNPortGroupIndex + Integer32, + rptrTopNPortPortIndex + Integer32, + rptrTopNPortRate + Gauge32 +} + +rptrTopNPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index that uniquely identifies an entry in + the rptrTopNPort table among those in the same + report. This index is between 1 and N, where N + is the number of entries in this report. Increasing + values of rptrTopNPortIndex shall be assigned to + entries with decreasing values of rptrTopNPortRate + until index N is assigned to the entry with the + lowest value of rptrTopNPortRate or there are no + more rptrTopNPortEntries. + + No ports are included in a report where their + value of rptrTopNPortRate would be zero." + ::= { rptrTopNPortEntry 1 } + +rptrTopNPortGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifes the group containing + the port for this entry. (See also object + type rptrGroupIndex.)" + ::= { rptrTopNPortEntry 2 } + +rptrTopNPortPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index of the repeater port. + (See object type rptrPortIndex.)" + ::= { rptrTopNPortEntry 3 } + +rptrTopNPortRate OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of change in the selected variable + during this sampling interval for the identified + port. The selected variable is that port's + instance of the object selected by + rptrTopNPortRateBase." + ::= { rptrTopNPortEntry 4 } + + + +-- Notifications for use by Repeaters + +rptrHealth NOTIFICATION-TYPE + OBJECTS { rptrOperStatus } + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + In a system containing a single managed repeater, + the rptrHealth notification conveys information + related to the operational status of the repeater. + It is sent either when the value of + rptrOperStatus changes, or upon completion of a + non-disruptive test. + + The rptrHealth notification must contain the + rptrOperStatus object. The agent may optionally + include the rptrHealthText object in the varBind + list. See the rptrOperStatus and rptrHealthText + objects for descriptions of the information that + is sent. + + The agent must throttle the generation of + consecutive rptrHealth traps so that there is at + least a five-second gap between traps of this + type. When traps are throttled, they are dropped, + not queued for sending at a future time. (Note + that 'generating' a trap means sending to all + configured recipients.)" + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.1, nRepeaterHealth + notification." + ::= { snmpDot3RptrMgt 0 1 } + +rptrGroupChange NOTIFICATION-TYPE + OBJECTS { rptrGroupIndex } + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + In a system containing a single managed repeater, + this notification is sent when a change occurs in the + group structure of the repeater. This occurs only + when a group is logically or physically removed + from or added to a repeater. The varBind list + contains the identifier of the group that was + removed or added. + + The agent must throttle the generation of + consecutive rptrGroupChange traps for the same + group so that there is at least a five-second gap + between traps of this type. When traps are + throttled, they are dropped, not queued for + sending at a future time. (Note that 'generating' + a trap means sending to all configured + recipients.)" + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.3, nGroupMapChange + notification." + ::= { snmpDot3RptrMgt 0 2 } + +rptrResetEvent NOTIFICATION-TYPE + OBJECTS { rptrOperStatus } + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + In a system containing a single managed repeater-unit, + the rptrResetEvent notification conveys information + related to the operational status of the repeater. + This trap is sent on completion of a repeater + reset action. A repeater reset action is defined + as an a transition to the START state of Fig 9-2 + in section 9 [IEEE 802.3 Std], when triggered by a + management command (e.g., an SNMP Set on the + rptrReset object). + + The agent must throttle the generation of + consecutive rptrResetEvent traps so that there is + at least a five-second gap between traps of this + type. When traps are throttled, they are dropped, + not queued for sending at a future time. (Note + that 'generating' a trap means sending to all + configured recipients.) + + The rptrResetEvent trap is not sent when the agent + restarts and sends an SNMP coldStart or warmStart + trap. However, it is recommended that a repeater + agent send the rptrOperStatus object as an + optional object with its coldStart and warmStart + trap PDUs. + + The rptrOperStatus object must be included in the + varbind list sent with this trap. The agent may + optionally include the rptrHealthText object as + well." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.2, nRepeaterReset + notification." + ::= { snmpDot3RptrMgt 0 3 } + + +-- Notifications for repeaters in a multiple-repeater implementation. +-- An implementation may send either the single-repeater OR +-- multiple-repeater version of these notifications (1 or 4; 2 or 5) +-- but not both. + +rptrInfoHealth NOTIFICATION-TYPE + OBJECTS { rptrInfoOperStatus } + STATUS current + DESCRIPTION + "In a system containing multiple managed repeaters, + the rptrInfoHealth notification conveys information + related to the operational status of a repeater. + It is sent either when the value of rptrInfoOperStatus + changes, or upon completion of a non-disruptive test. + + The agent must throttle the generation of + consecutive rptrInfoHealth notifications for + the same repeater so that there is at least + a five-second gap between notifications of this type. + When notifications are throttled, they are dropped, + not queued for sending at a future time. (Note + that 'generating' a notification means sending + to all configured recipients.)" + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.1, nRepeaterHealth + notification." + ::= { snmpDot3RptrMgt 0 4 } + +rptrInfoResetEvent NOTIFICATION-TYPE + OBJECTS { rptrInfoOperStatus } + STATUS current + DESCRIPTION + "In a system containing multiple managed + repeaters, the rptrInfoResetEvent notification + conveys information related to the operational + status of a repeater. This notification is sent + on completion of a repeater reset action. A + repeater reset action is defined as a transition + to the START state of Fig 9-2 in section 9 of + [IEEE 802.3 Std], when triggered by a management + command (e.g., an SNMP Set on the rptrInfoReset + object). + + The agent must throttle the generation of + consecutive rptrInfoResetEvent notifications for + a single repeater so that there is at least + a five-second gap between notifications of + this type. When notifications are throttled, + they are dropped, not queued for sending at + a future time. (Note that 'generating' a + notification means sending to all configured + recipients.) + + The rptrInfoResetEvent is not sent when the + agent restarts and sends an SNMP coldStart or + warmStart trap. However, it is recommended that + a repeater agent send the rptrInfoOperStatus + object as an optional object with its coldStart + and warmStart trap PDUs." + REFERENCE + "[IEEE 802.3 Mgt], 30.4.1.3.2, nRepeaterReset + notification." + ::= { snmpDot3RptrMgt 0 5 } + + +-- Conformance information + +snmpRptrModConf + OBJECT IDENTIFIER ::= { snmpRptrMod 1 } + snmpRptrModCompls + OBJECT IDENTIFIER ::= { snmpRptrModConf 1 } + snmpRptrModObjGrps + OBJECT IDENTIFIER ::= { snmpRptrModConf 2 } + snmpRptrModNotGrps + OBJECT IDENTIFIER ::= { snmpRptrModConf 3 } + + +-- Object groups + +snmpRptrGrpBasic1516 OBJECT-GROUP + OBJECTS { rptrGroupCapacity, + rptrOperStatus, + rptrHealthText, + rptrReset, + rptrNonDisruptTest, + rptrTotalPartitionedPorts, + + rptrGroupIndex, + rptrGroupDescr, + rptrGroupObjectID, + rptrGroupOperStatus, + rptrGroupLastOperStatusChange, + rptrGroupPortCapacity, + + rptrPortGroupIndex, + rptrPortIndex, + rptrPortAdminStatus, + rptrPortAutoPartitionState, + rptrPortOperStatus } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Basic group from RFCs 1368 and 1516. + + NOTE: this object group is DEPRECATED and replaced + with snmpRptrGrpBasic." + ::= { snmpRptrModObjGrps 1 } + +snmpRptrGrpMonitor1516 OBJECT-GROUP + OBJECTS { rptrMonitorTransmitCollisions, + + rptrMonitorGroupIndex, + rptrMonitorGroupTotalFrames, + rptrMonitorGroupTotalOctets, + rptrMonitorGroupTotalErrors, + rptrMonitorPortGroupIndex, + rptrMonitorPortIndex, + rptrMonitorPortReadableFrames, + rptrMonitorPortReadableOctets, + rptrMonitorPortFCSErrors, + rptrMonitorPortAlignmentErrors, + rptrMonitorPortFrameTooLongs, + rptrMonitorPortShortEvents, + rptrMonitorPortRunts, + rptrMonitorPortCollisions, + rptrMonitorPortLateEvents, + rptrMonitorPortVeryLongEvents, + rptrMonitorPortDataRateMismatches, + rptrMonitorPortAutoPartitions, + rptrMonitorPortTotalErrors } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Monitor group from RFCs 1368 and 1516. + + NOTE: this object group is DEPRECATED and replaced + with snmpRptrGrpMonitor." + ::= { snmpRptrModObjGrps 2 } + +snmpRptrGrpAddrTrack1368 OBJECT-GROUP + OBJECTS { rptrAddrTrackGroupIndex, + rptrAddrTrackPortIndex, + rptrAddrTrackLastSourceAddress, + rptrAddrTrackSourceAddrChanges } + STATUS obsolete + DESCRIPTION + "Address tracking group from RFC 1368. + + NOTE: this object group is OBSOLETE and replaced + with snmpRptrGrpAddrTrack1516." + ::= { snmpRptrModObjGrps 3 } + +snmpRptrGrpAddrTrack1516 OBJECT-GROUP + OBJECTS { rptrAddrTrackGroupIndex, + rptrAddrTrackPortIndex, + rptrAddrTrackLastSourceAddress, + rptrAddrTrackSourceAddrChanges, + rptrAddrTrackNewLastSrcAddress } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + Address tracking group from RFC 1516. + + NOTE: this object group is DEPRECATED and + replaced with snmpRptrGrpAddrTrack." + ::= { snmpRptrModObjGrps 4 } + +snmpRptrGrpBasic OBJECT-GROUP + OBJECTS { rptrGroupIndex, + rptrGroupObjectID, + rptrGroupOperStatus, + rptrGroupPortCapacity, + + rptrPortGroupIndex, + rptrPortIndex, + rptrPortAdminStatus, + rptrPortAutoPartitionState, + rptrPortOperStatus, + rptrPortRptrId, + + rptrInfoId, + rptrInfoRptrType, + rptrInfoOperStatus, + rptrInfoReset, + rptrInfoPartitionedPorts, + rptrInfoLastChange } + STATUS current + DESCRIPTION + "Basic group for a system with one or more + repeater-units in multi-segment (post-RFC 1516) + version of the MIB module." + ::= { snmpRptrModObjGrps 5 } + +snmpRptrGrpMonitor OBJECT-GROUP + OBJECTS { rptrMonitorPortGroupIndex, + rptrMonitorPortIndex, + rptrMonitorPortReadableFrames, + rptrMonitorPortReadableOctets, + rptrMonitorPortFCSErrors, + rptrMonitorPortAlignmentErrors, + rptrMonitorPortFrameTooLongs, + rptrMonitorPortShortEvents, + rptrMonitorPortRunts, + rptrMonitorPortCollisions, + rptrMonitorPortLateEvents, + rptrMonitorPortVeryLongEvents, + rptrMonitorPortDataRateMismatches, + rptrMonitorPortAutoPartitions, + rptrMonitorPortTotalErrors, + rptrMonitorPortLastChange, + + rptrMonTxCollisions, + rptrMonTotalFrames, + rptrMonTotalErrors, + rptrMonTotalOctets } + STATUS current + DESCRIPTION + "Monitor group for a system with one or more + repeater-units in multi-segment (post-RFC 1516) + version of the MIB module." + ::= { snmpRptrModObjGrps 6 } + +snmpRptrGrpMonitor100 OBJECT-GROUP + OBJECTS { rptrMonitorPortIsolates, + rptrMonitorPortSymbolErrors, + rptrMonitorPortUpper32Octets, + + rptrMonUpper32TotalOctets } + STATUS current + DESCRIPTION + "Monitor group for 100Mb/s ports and repeaters + in a system with one or more repeater-units in + multi-segment (post-RFC 1516) version of the MIB + module. Systems which support Counter64 should + also implement snmpRptrGrpMonitor100w64." + ::= { snmpRptrModObjGrps 7 } + +snmpRptrGrpMonitor100w64 OBJECT-GROUP + OBJECTS { rptrMonitorPortHCReadableOctets, + rptrMonHCTotalOctets } + STATUS current + DESCRIPTION + "Monitor group for 100Mb/s ports and repeaters in a + system with one or more repeater-units and support + for Counter64." + ::= { snmpRptrModObjGrps 8 } + +snmpRptrGrpAddrTrack OBJECT-GROUP + OBJECTS { rptrAddrTrackGroupIndex, + rptrAddrTrackPortIndex, + rptrAddrTrackSourceAddrChanges, + rptrAddrTrackNewLastSrcAddress, + rptrAddrTrackCapacity } + STATUS current + DESCRIPTION + "Passive address tracking group for post-RFC 1516 + version of the MIB module." + ::= { snmpRptrModObjGrps 9 } + +snmpRptrGrpExtAddrTrack OBJECT-GROUP + OBJECTS { rptrExtAddrTrackMacIndex, + rptrExtAddrTrackSourceAddress } + STATUS current + DESCRIPTION + "Extended passive address tracking group for + a system with one or more repeater-units in + post-RFC 1516 version of the MIB module." + ::= { snmpRptrModObjGrps 10 } + +snmpRptrGrpRptrAddrSearch OBJECT-GROUP + OBJECTS { rptrAddrSearchLock, + rptrAddrSearchStatus, + rptrAddrSearchAddress, + rptrAddrSearchState, + rptrAddrSearchGroup, + rptrAddrSearchPort, + rptrAddrSearchOwner } + STATUS current + DESCRIPTION + "Active MAC address search group and topology + mapping support for repeaters." + ::= { snmpRptrModObjGrps 11 } + +snmpRptrGrpTopNPort OBJECT-GROUP + OBJECTS { rptrTopNPortControlIndex, + rptrTopNPortRepeaterId, + rptrTopNPortRateBase, + rptrTopNPortTimeRemaining, + rptrTopNPortDuration, + rptrTopNPortRequestedSize, + rptrTopNPortGrantedSize, + rptrTopNPortStartTime, + rptrTopNPortOwner, + rptrTopNPortRowStatus, + rptrTopNPortIndex, + rptrTopNPortGroupIndex, + rptrTopNPortPortIndex, + rptrTopNPortRate } + STATUS current + DESCRIPTION + "Top `N' group for repeater ports." + ::= { snmpRptrModObjGrps 12 } + + +-- Compliances + +snmpRptrModComplRFC1368 MODULE-COMPLIANCE + STATUS obsolete + DESCRIPTION + "Compliance for RFC 1368. + + NOTE: this module compliance is OBSOLETE and + replaced by snmpRptrModComplRFC1516." + + MODULE -- this module + MANDATORY-GROUPS { snmpRptrGrpBasic1516 } + + GROUP snmpRptrGrpMonitor1516 + DESCRIPTION + "Implementation of this optional group is + recommended for systems which have the + instrumentation to do performance monitoring." + + GROUP snmpRptrGrpAddrTrack1368 + DESCRIPTION + "Implementation of this group is + recommended for systems which have + the necessary instrumentation." + + ::= { snmpRptrModCompls 1 } + +snmpRptrModComplRFC1516 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "********* THIS COMPLIANCE IS DEPRECATED ********** + + Compliance for RFC 1516 and for backwards + compatibility with single-repeater, + 10Mb/s-only implementations." + + MODULE -- this module + MANDATORY-GROUPS { snmpRptrGrpBasic1516 } + + GROUP snmpRptrGrpMonitor1516 + DESCRIPTION + "Implementation of this optional group is + recommended for systems which have the + instrumentation to do performance monitoring." + + GROUP snmpRptrGrpAddrTrack1516 + DESCRIPTION + "Implementation of this group is + recommended for systems which have + the necessary instrumentation." + ::= { snmpRptrModCompls 2 } + +snmpRptrModCompl MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for the multi-segment version of the + MIB module for a system with one or more + repeater-units." + + MODULE -- this module + MANDATORY-GROUPS { snmpRptrGrpBasic, + snmpRptrGrpMonitor, + snmpRptrGrpAddrTrack } + + GROUP snmpRptrGrpMonitor100 + DESCRIPTION + "Implementation of this group is + mandatory for managed systems which + contain 100Mb/s repeaters." + + GROUP snmpRptrGrpMonitor100w64 + DESCRIPTION + "Implementation of this group is + mandatory for managed systems which + contain 100Mb/s repeaters and which + can support Counter64." + + GROUP snmpRptrGrpExtAddrTrack + DESCRIPTION + "Implementation of this group is + recommended for systems which have + the necessary instrumentation to track + MAC addresses of multiple DTEs attached + to a single repeater port." + + GROUP snmpRptrGrpRptrAddrSearch + DESCRIPTION + "Implementation of this group is + recommended for systems which allow + read-write access and which have + the necessary instrumentation to + search all incoming data streams + for a particular MAC address." + + GROUP snmpRptrGrpTopNPort + DESCRIPTION + "Implementation of this group is + recommended for systems which have + the necessary resources to support + TopN statistics reporting." + + ::= { snmpRptrModCompls 3 } + + +END diff --git a/mibs/ietf/SNMP-TARGET-MIB b/mibs/ietf/SNMP-TARGET-MIB new file mode 100644 index 0000000..0152502 --- /dev/null +++ b/mibs/ietf/SNMP-TARGET-MIB @@ -0,0 +1,693 @@ +SNMP-TARGET-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + snmpModules, + Counter32, + Integer32 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, + TDomain, + TAddress, + TimeInterval, + RowStatus, + StorageType, + + + + TestAndIncr + FROM SNMPv2-TC + + SnmpSecurityModel, + SnmpMessageProcessingModel, + SnmpSecurityLevel, + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + + MODULE-COMPLIANCE, + OBJECT-GROUP + FROM SNMPv2-CONF; + +snmpTargetMIB MODULE-IDENTITY + LAST-UPDATED "200210140000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In message body: subscribe snmpv3 + + Co-Chair: Russ Mundy + Network Associates Laboratories + Postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + Phone: +1 301-947-7107 + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor: David B. Levi + Nortel Networks + Postal: 3505 Kesterwood Drive + Knoxville, Tennessee 37918 + EMail: dlevi@nortelnetworks.com + Phone: +1 865 686 0432 + + Co-editor: Paul Meyer + Secure Computing Corporation + Postal: 2675 Long Lake Road + + + + Roseville, Minnesota 55113 + EMail: paul_meyer@securecomputing.com + Phone: +1 651 628 1592 + + Co-editor: Bob Stewart + Retired" + DESCRIPTION + "This MIB module defines MIB objects which provide + mechanisms to remotely configure the parameters used + by an SNMP entity for the generation of SNMP messages. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3413; + see the RFC itself for full legal notices. + " + REVISION "200210140000Z" -- 14 October 2002 + DESCRIPTION "Fixed DISPLAY-HINTS for UTF-8 strings, fixed hex + value of LF characters, clarified meaning of zero + length tag values, improved tag list examples. + Published as RFC 3413." + REVISION "199808040000Z" -- 4 August 1998 + DESCRIPTION "Clarifications, published as + RFC 2573." + REVISION "199707140000Z" -- 14 July 1997 + DESCRIPTION "The initial revision, published as RFC2273." + ::= { snmpModules 12 } + +snmpTargetObjects OBJECT IDENTIFIER ::= { snmpTargetMIB 1 } +snmpTargetConformance OBJECT IDENTIFIER ::= { snmpTargetMIB 3 } + +SnmpTagValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255t" + STATUS current + DESCRIPTION + "An octet string containing a tag value. + Tag values are preferably in human-readable form. + + To facilitate internationalization, this information + is represented using the ISO/IEC IS 10646-1 character + set, encoded as an octet string using the UTF-8 + character encoding scheme described in RFC 2279. + + Since additional code points are added by amendments + to the 10646 standard from time to time, + implementations must be prepared to encounter any code + point from 0x00000000 to 0x7fffffff. + + The use of control codes should be avoided, and certain + + + + control codes are not allowed as described below. + + For code points not directly supported by user + interface hardware or software, an alternative means + of entry and display, such as hexadecimal, may be + provided. + + For information encoded in 7-bit US-ASCII, the UTF-8 + representation is identical to the US-ASCII encoding. + + Note that when this TC is used for an object that + is used or envisioned to be used as an index, then a + SIZE restriction must be specified so that the number + of sub-identifiers for any object instance does not + exceed the limit of 128, as defined by [RFC1905]. + + An object of this type contains a single tag value + which is used to select a set of entries in a table. + + A tag value is an arbitrary string of octets, but + may not contain a delimiter character. Delimiter + characters are defined to be one of the following: + + - An ASCII space character (0x20). + + - An ASCII TAB character (0x09). + + - An ASCII carriage return (CR) character (0x0D). + + - An ASCII line feed (LF) character (0x0A). + + Delimiter characters are used to separate tag values + in a tag list. An object of this type may only + contain a single tag value, and so delimiter + characters are not allowed in a value of this type. + + Note that a tag value of 0 length means that no tag is + defined. In other words, a tag value of 0 length would + never match anything in a tag list, and would never + select any table entries. + + Some examples of valid tag values are: + + - 'acme' + + - 'router' + + - 'host' + + + + The use of a tag value to select table entries is + application and MIB specific." + SYNTAX OCTET STRING (SIZE (0..255)) + +SnmpTagList ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255t" + STATUS current + DESCRIPTION + "An octet string containing a list of tag values. + Tag values are preferably in human-readable form. + + To facilitate internationalization, this information + is represented using the ISO/IEC IS 10646-1 character + set, encoded as an octet string using the UTF-8 + character encoding scheme described in RFC 2279. + + Since additional code points are added by amendments + to the 10646 standard from time to time, + implementations must be prepared to encounter any code + point from 0x00000000 to 0x7fffffff. + + The use of control codes should be avoided, except as + described below. + + For code points not directly supported by user + interface hardware or software, an alternative means + of entry and display, such as hexadecimal, may be + provided. + + For information encoded in 7-bit US-ASCII, the UTF-8 + representation is identical to the US-ASCII encoding. + + An object of this type contains a list of tag values + which are used to select a set of entries in a table. + + A tag value is an arbitrary string of octets, but + may not contain a delimiter character. Delimiter + characters are defined to be one of the following: + + - An ASCII space character (0x20). + + - An ASCII TAB character (0x09). + + - An ASCII carriage return (CR) character (0x0D). + + - An ASCII line feed (LF) character (0x0A). + + Delimiter characters are used to separate tag values + + + + in a tag list. Only a single delimiter character may + occur between two tag values. A tag value may not + have a zero length. These constraints imply certain + restrictions on the contents of this object: + + - There cannot be a leading or trailing delimiter + character. + + - There cannot be multiple adjacent delimiter + characters. + + Some examples of valid tag lists are: + + - '' -- an empty list + + - 'acme' -- list of one tag + + - 'host router bridge' -- list of several tags + + Note that although a tag value may not have a length of + zero, an empty string is still valid. This indicates + an empty list (i.e. there are no tag values in the list). + + The use of the tag list to select table entries is + application and MIB specific. Typically, an application + will provide one or more tag values, and any entry + which contains some combination of these tag values + will be selected." + SYNTAX OCTET STRING (SIZE (0..255)) + +-- +-- +-- The snmpTargetObjects group +-- +-- + +snmpTargetSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to facilitate modification of table + entries in the SNMP-TARGET-MIB module by multiple + managers. In particular, it is useful when modifying + the value of the snmpTargetAddrTagList object. + + The procedure for modifying the snmpTargetAddrTagList + object is as follows: + + + + 1. Retrieve the value of snmpTargetSpinLock and + of snmpTargetAddrTagList. + + 2. Generate a new value for snmpTargetAddrTagList. + + 3. Set the value of snmpTargetSpinLock to the + retrieved value, and the value of + snmpTargetAddrTagList to the new value. If + the set fails for the snmpTargetSpinLock + object, go back to step 1." + ::= { snmpTargetObjects 1 } + +snmpTargetAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpTargetAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of transport addresses to be used in the generation + of SNMP messages." + ::= { snmpTargetObjects 2 } + +snmpTargetAddrEntry OBJECT-TYPE + SYNTAX SnmpTargetAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A transport address to be used in the generation + of SNMP operations. + + Entries in the snmpTargetAddrTable are created and + deleted using the snmpTargetAddrRowStatus object." + INDEX { IMPLIED snmpTargetAddrName } + ::= { snmpTargetAddrTable 1 } + +SnmpTargetAddrEntry ::= SEQUENCE { + snmpTargetAddrName SnmpAdminString, + snmpTargetAddrTDomain TDomain, + snmpTargetAddrTAddress TAddress, + snmpTargetAddrTimeout TimeInterval, + snmpTargetAddrRetryCount Integer32, + snmpTargetAddrTagList SnmpTagList, + snmpTargetAddrParams SnmpAdminString, + snmpTargetAddrStorageType StorageType, + snmpTargetAddrRowStatus RowStatus +} + +snmpTargetAddrName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this snmpTargetAddrEntry." + ::= { snmpTargetAddrEntry 1 } + +snmpTargetAddrTDomain OBJECT-TYPE + SYNTAX TDomain + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object indicates the transport type of the address + contained in the snmpTargetAddrTAddress object." + ::= { snmpTargetAddrEntry 2 } + +snmpTargetAddrTAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains a transport address. The format of + this address depends on the value of the + snmpTargetAddrTDomain object." + ::= { snmpTargetAddrEntry 3 } + +snmpTargetAddrTimeout OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object should reflect the expected maximum round + trip time for communicating with the transport address + defined by this row. When a message is sent to this + address, and a response (if one is expected) is not + received within this time period, an implementation + may assume that the response will not be delivered. + + Note that the time interval that an application waits + for a response may actually be derived from the value + of this object. The method for deriving the actual time + interval is implementation dependent. One such method + is to derive the expected round trip time based on a + particular retransmission algorithm and on the number + of timeouts which have occurred. The type of message may + also be considered when deriving expected round trip + times for retransmissions. For example, if a message is + being sent with a securityLevel that indicates both + + + + authentication and privacy, the derived value may be + increased to compensate for extra processing time spent + during authentication and encryption processing." + DEFVAL { 1500 } + ::= { snmpTargetAddrEntry 4 } + +snmpTargetAddrRetryCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies a default number of retries to be + attempted when a response is not received for a generated + message. An application may provide its own retry count, + in which case the value of this object is ignored." + DEFVAL { 3 } + ::= { snmpTargetAddrEntry 5 } + +snmpTargetAddrTagList OBJECT-TYPE + SYNTAX SnmpTagList + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains a list of tag values which are + used to select target addresses for a particular + operation." + DEFVAL { "" } + ::= { snmpTargetAddrEntry 6 } + +snmpTargetAddrParams OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object identifies an entry in the + snmpTargetParamsTable. The identified entry + contains SNMP parameters to be used when generating + messages to be sent to this transport address." + ::= { snmpTargetAddrEntry 7 } + +snmpTargetAddrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + + + + DEFVAL { nonVolatile } + ::= { snmpTargetAddrEntry 8 } + +snmpTargetAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5). + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the snmpTargetAddrRowStatus + column is 'notReady'. + + In particular, a newly created row cannot be made + active until the corresponding instances of + snmpTargetAddrTDomain, snmpTargetAddrTAddress, and + snmpTargetAddrParams have all been set. + + The following objects may not be modified while the + value of this object is active(1): + - snmpTargetAddrTDomain + - snmpTargetAddrTAddress + An attempt to set these objects while the value of + snmpTargetAddrRowStatus is active(1) will result in + an inconsistentValue error." + ::= { snmpTargetAddrEntry 9 } + +snmpTargetParamsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SnmpTargetParamsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of SNMP target information to be used + in the generation of SNMP messages." + ::= { snmpTargetObjects 3 } + +snmpTargetParamsEntry OBJECT-TYPE + SYNTAX SnmpTargetParamsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of SNMP target information. + + + + Entries in the snmpTargetParamsTable are created and + deleted using the snmpTargetParamsRowStatus object." + INDEX { IMPLIED snmpTargetParamsName } + ::= { snmpTargetParamsTable 1 } + +SnmpTargetParamsEntry ::= SEQUENCE { + snmpTargetParamsName SnmpAdminString, + snmpTargetParamsMPModel SnmpMessageProcessingModel, + snmpTargetParamsSecurityModel SnmpSecurityModel, + snmpTargetParamsSecurityName SnmpAdminString, + snmpTargetParamsSecurityLevel SnmpSecurityLevel, + snmpTargetParamsStorageType StorageType, + snmpTargetParamsRowStatus RowStatus +} + +snmpTargetParamsName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this snmpTargetParamsEntry." + ::= { snmpTargetParamsEntry 1 } + +snmpTargetParamsMPModel OBJECT-TYPE + SYNTAX SnmpMessageProcessingModel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Message Processing Model to be used when generating + SNMP messages using this entry." + ::= { snmpTargetParamsEntry 2 } + +snmpTargetParamsSecurityModel OBJECT-TYPE + SYNTAX SnmpSecurityModel (1..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Security Model to be used when generating SNMP + messages using this entry. An implementation may + choose to return an inconsistentValue error if an + attempt is made to set this variable to a value + for a security model which the implementation does + not support." + ::= { snmpTargetParamsEntry 3 } + +snmpTargetParamsSecurityName OBJECT-TYPE + SYNTAX SnmpAdminString + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The securityName which identifies the Principal on + whose behalf SNMP messages will be generated using + this entry." + ::= { snmpTargetParamsEntry 4 } + +snmpTargetParamsSecurityLevel OBJECT-TYPE + SYNTAX SnmpSecurityLevel + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Level of Security to be used when generating + SNMP messages using this entry." + ::= { snmpTargetParamsEntry 5 } + +snmpTargetParamsStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { snmpTargetParamsEntry 6 } + +snmpTargetParamsRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + To create a row in this table, a manager must + set this object to either createAndGo(4) or + createAndWait(5). + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the snmpTargetParamsRowStatus + column is 'notReady'. + + In particular, a newly created row cannot be made + active until the corresponding + snmpTargetParamsMPModel, + snmpTargetParamsSecurityModel, + + + + snmpTargetParamsSecurityName, + and snmpTargetParamsSecurityLevel have all been set. + + The following objects may not be modified while the + value of this object is active(1): + - snmpTargetParamsMPModel + - snmpTargetParamsSecurityModel + - snmpTargetParamsSecurityName + - snmpTargetParamsSecurityLevel + An attempt to set these objects while the value of + snmpTargetParamsRowStatus is active(1) will result in + an inconsistentValue error." + ::= { snmpTargetParamsEntry 7 } + +snmpUnavailableContexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMP + engine which were dropped because the context + contained in the message was unavailable." + ::= { snmpTargetObjects 4 } + +snmpUnknownContexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMP + engine which were dropped because the context + contained in the message was unknown." + ::= { snmpTargetObjects 5 } + +-- +-- +-- Conformance information +-- +-- + +snmpTargetCompliances OBJECT IDENTIFIER ::= + { snmpTargetConformance 1 } +snmpTargetGroups OBJECT IDENTIFIER ::= + { snmpTargetConformance 2 } + +-- +-- +-- Compliance statements + + + +-- +-- + +snmpTargetCommandResponderCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which include + a command responder application." + MODULE -- This Module + MANDATORY-GROUPS { snmpTargetCommandResponderGroup } + ::= { snmpTargetCompliances 1 } + +snmpTargetBasicGroup OBJECT-GROUP + OBJECTS { + snmpTargetSpinLock, + snmpTargetAddrTDomain, + snmpTargetAddrTAddress, + snmpTargetAddrTagList, + snmpTargetAddrParams, + snmpTargetAddrStorageType, + snmpTargetAddrRowStatus, + snmpTargetParamsMPModel, + snmpTargetParamsSecurityModel, + snmpTargetParamsSecurityName, + snmpTargetParamsSecurityLevel, + snmpTargetParamsStorageType, + snmpTargetParamsRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing basic remote + configuration of management targets." + ::= { snmpTargetGroups 1 } + +snmpTargetResponseGroup OBJECT-GROUP + OBJECTS { + snmpTargetAddrTimeout, + snmpTargetAddrRetryCount + } + STATUS current + DESCRIPTION + "A collection of objects providing remote configuration + of management targets for applications which generate + SNMP messages for which a response message would be + expected." + ::= { snmpTargetGroups 2 } + +snmpTargetCommandResponderGroup OBJECT-GROUP + + + + OBJECTS { + snmpUnavailableContexts, + snmpUnknownContexts + } + STATUS current + DESCRIPTION + "A collection of objects required for command responder + applications, used for counting error conditions." + ::= { snmpTargetGroups 3 } + +END diff --git a/mibs/ietf/SNMP-USER-BASED-SM-MIB b/mibs/ietf/SNMP-USER-BASED-SM-MIB new file mode 100644 index 0000000..bf4eec9 --- /dev/null +++ b/mibs/ietf/SNMP-USER-BASED-SM-MIB @@ -0,0 +1,959 @@ +SNMP-USER-BASED-SM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + OBJECT-IDENTITY, + snmpModules, Counter32 FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TestAndIncr, + RowStatus, RowPointer, + StorageType, AutonomousType FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + SnmpAdminString, SnmpEngineID, + snmpAuthProtocols, snmpPrivProtocols FROM SNMP-FRAMEWORK-MIB; + +snmpUsmMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" -- 16 Oct 2002, midnight + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In msg body: subscribe snmpv3 + + Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + email: mundy@tislabs.com + + + + phone: +1 301-947-7107 + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor Uri Blumenthal + Lucent Technologies + postal: 67 Whippany Rd. + Whippany, NJ 07981 + USA + email: uri@lucent.com + phone: +1-973-386-2163 + + Co-editor: Bert Wijnen + Lucent Technologies + postal: Schagen 33 + 3461 GL Linschoten + Netherlands + email: bwijnen@lucent.com + phone: +31-348-480-685 + " + DESCRIPTION "The management information definitions for the + SNMP User-based Security Model. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3414; + see the RFC itself for full legal notices. + " +-- Revision history + + REVISION "200210160000Z" -- 16 Oct 2002, midnight + DESCRIPTION "Changes in this revision: + - Updated references and contact info. + - Clarification to usmUserCloneFrom DESCRIPTION + clause + - Fixed 'command responder' into 'command generator' + in last para of DESCRIPTION clause of + usmUserTable. + This revision published as RFC3414. + " + REVISION "199901200000Z" -- 20 Jan 1999, midnight + DESCRIPTION "Clarifications, published as RFC2574" + + + + REVISION "199711200000Z" -- 20 Nov 1997, midnight + DESCRIPTION "Initial version, published as RFC2274" + + ::= { snmpModules 15 } + +-- Administrative assignments **************************************** + +usmMIBObjects OBJECT IDENTIFIER ::= { snmpUsmMIB 1 } +usmMIBConformance OBJECT IDENTIFIER ::= { snmpUsmMIB 2 } + +-- Identification of Authentication and Privacy Protocols ************ + +usmNoAuthProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "No Authentication Protocol." + ::= { snmpAuthProtocols 1 } + +usmHMACMD5AuthProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "The HMAC-MD5-96 Digest Authentication Protocol." + REFERENCE "- H. Krawczyk, M. Bellare, R. Canetti HMAC: + Keyed-Hashing for Message Authentication, + RFC2104, Feb 1997. + - Rivest, R., Message Digest Algorithm MD5, RFC1321. + " + ::= { snmpAuthProtocols 2 } + +usmHMACSHAAuthProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "The HMAC-SHA-96 Digest Authentication Protocol." + REFERENCE "- H. Krawczyk, M. Bellare, R. Canetti, HMAC: + Keyed-Hashing for Message Authentication, + RFC2104, Feb 1997. + - Secure Hash Algorithm. NIST FIPS 180-1. + " + ::= { snmpAuthProtocols 3 } + +usmNoPrivProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "No Privacy Protocol." + ::= { snmpPrivProtocols 1 } + +usmDESPrivProtocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "The CBC-DES Symmetric Encryption Protocol." + REFERENCE "- Data Encryption Standard, National Institute of + Standards and Technology. Federal Information + Processing Standard (FIPS) Publication 46-1. + + + + Supersedes FIPS Publication 46, + (January, 1977; reaffirmed January, 1988). + + - Data Encryption Algorithm, American National + Standards Institute. ANSI X3.92-1981, + (December, 1980). + + - DES Modes of Operation, National Institute of + Standards and Technology. Federal Information + Processing Standard (FIPS) Publication 81, + (December, 1980). + + - Data Encryption Algorithm - Modes of Operation, + American National Standards Institute. + ANSI X3.106-1983, (May 1983). + " + ::= { snmpPrivProtocols 2 } + +-- Textual Conventions *********************************************** + +KeyChange ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Every definition of an object with this syntax must identify + a protocol P, a secret key K, and a hash algorithm H + that produces output of L octets. + + The object's value is a manager-generated, partially-random + value which, when modified, causes the value of the secret + key K, to be modified via a one-way function. + + The value of an instance of this object is the concatenation + of two components: first a 'random' component and then a + 'delta' component. + + The lengths of the random and delta components + are given by the corresponding value of the protocol P; + if P requires K to be a fixed length, the length of both the + random and delta components is that fixed length; if P + allows the length of K to be variable up to a particular + maximum length, the length of the random component is that + maximum length and the length of the delta component is any + length less than or equal to that maximum length. + For example, usmHMACMD5AuthProtocol requires K to be a fixed + length of 16 octets and L - of 16 octets. + usmHMACSHAAuthProtocol requires K to be a fixed length of + 20 octets and L - of 20 octets. Other protocols may define + other sizes, as deemed appropriate. + + + + When a requester wants to change the old key K to a new + key keyNew on a remote entity, the 'random' component is + obtained from either a true random generator, or from a + pseudorandom generator, and the 'delta' component is + computed as follows: + + - a temporary variable is initialized to the existing value + of K; + - if the length of the keyNew is greater than L octets, + then: + - the random component is appended to the value of the + temporary variable, and the result is input to the + the hash algorithm H to produce a digest value, and + the temporary variable is set to this digest value; + - the value of the temporary variable is XOR-ed with + the first (next) L-octets (16 octets in case of MD5) + of the keyNew to produce the first (next) L-octets + (16 octets in case of MD5) of the 'delta' component. + - the above two steps are repeated until the unused + portion of the keyNew component is L octets or less, + - the random component is appended to the value of the + temporary variable, and the result is input to the + hash algorithm H to produce a digest value; + - this digest value, truncated if necessary to be the same + length as the unused portion of the keyNew, is XOR-ed + with the unused portion of the keyNew to produce the + (final portion of the) 'delta' component. + + For example, using MD5 as the hash algorithm H: + + iterations = (lenOfDelta - 1)/16; /* integer division */ + temp = keyOld; + for (i = 0; i < iterations; i++) { + temp = MD5 (temp || random); + delta[i*16 .. (i*16)+15] = + temp XOR keyNew[i*16 .. (i*16)+15]; + } + temp = MD5 (temp || random); + delta[i*16 .. lenOfDelta-1] = + temp XOR keyNew[i*16 .. lenOfDelta-1]; + + The 'random' and 'delta' components are then concatenated as + described above, and the resulting octet string is sent to + the recipient as the new value of an instance of this object. + + At the receiver side, when an instance of this object is set + to a new value, then a new value of K is computed as follows: + + + + + - a temporary variable is initialized to the existing value + of K; + - if the length of the delta component is greater than L + octets, then: + - the random component is appended to the value of the + temporary variable, and the result is input to the + hash algorithm H to produce a digest value, and the + temporary variable is set to this digest value; + - the value of the temporary variable is XOR-ed with + the first (next) L-octets (16 octets in case of MD5) + of the delta component to produce the first (next) + L-octets (16 octets in case of MD5) of the new value + of K. + - the above two steps are repeated until the unused + portion of the delta component is L octets or less, + - the random component is appended to the value of the + temporary variable, and the result is input to the + hash algorithm H to produce a digest value; + - this digest value, truncated if necessary to be the same + length as the unused portion of the delta component, is + XOR-ed with the unused portion of the delta component to + produce the (final portion of the) new value of K. + + For example, using MD5 as the hash algorithm H: + + iterations = (lenOfDelta - 1)/16; /* integer division */ + temp = keyOld; + for (i = 0; i < iterations; i++) { + temp = MD5 (temp || random); + keyNew[i*16 .. (i*16)+15] = + temp XOR delta[i*16 .. (i*16)+15]; + } + temp = MD5 (temp || random); + keyNew[i*16 .. lenOfDelta-1] = + temp XOR delta[i*16 .. lenOfDelta-1]; + + The value of an object with this syntax, whenever it is + retrieved by the management protocol, is always the zero + length string. + + Note that the keyOld and keyNew are the localized keys. + + Note that it is probably wise that when an SNMP entity sends + a SetRequest to change a key, that it keeps a copy of the old + key until it has confirmed that the key change actually + succeeded. + " + SYNTAX OCTET STRING + + + +-- Statistics for the User-based Security Model ********************** + + +usmStats OBJECT IDENTIFIER ::= { usmMIBObjects 1 } + + +usmStatsUnsupportedSecLevels OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they requested a + securityLevel that was unknown to the SNMP engine + or otherwise unavailable. + " + ::= { usmStats 1 } + +usmStatsNotInTimeWindows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they appeared + outside of the authoritative SNMP engine's window. + " + ::= { usmStats 2 } + +usmStatsUnknownUserNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they referenced a + user that was not known to the SNMP engine. + " + ::= { usmStats 3 } + +usmStatsUnknownEngineIDs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they referenced an + snmpEngineID that was not known to the SNMP engine. + " + ::= { usmStats 4 } + +usmStatsWrongDigests OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they didn't + contain the expected digest value. + " + ::= { usmStats 5 } + +usmStatsDecryptionErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total number of packets received by the SNMP + engine which were dropped because they could not be + decrypted. + " + ::= { usmStats 6 } + +-- The usmUser Group ************************************************ + +usmUser OBJECT IDENTIFIER ::= { usmMIBObjects 2 } + +usmUserSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION "An advisory lock used to allow several cooperating + Command Generator Applications to coordinate their + use of facilities to alter secrets in the + usmUserTable. + " + ::= { usmUser 1 } + +-- The table of valid users for the User-based Security Model ******** + +usmUserTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsmUserEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The table of users configured in the SNMP engine's + Local Configuration Datastore (LCD). + + To create a new user (i.e., to instantiate a new + conceptual row in this table), it is recommended to + follow this procedure: + + 1) GET(usmUserSpinLock.0) and save in sValue. + + + + 2) SET(usmUserSpinLock.0=sValue, + usmUserCloneFrom=templateUser, + usmUserStatus=createAndWait) + You should use a template user to clone from + which has the proper auth/priv protocol defined. + + If the new user is to use privacy: + + 3) generate the keyChange value based on the secret + privKey of the clone-from user and the secret key + to be used for the new user. Let us call this + pkcValue. + 4) GET(usmUserSpinLock.0) and save in sValue. + 5) SET(usmUserSpinLock.0=sValue, + usmUserPrivKeyChange=pkcValue + usmUserPublic=randomValue1) + 6) GET(usmUserPulic) and check it has randomValue1. + If not, repeat steps 4-6. + + If the new user will never use privacy: + + 7) SET(usmUserPrivProtocol=usmNoPrivProtocol) + + If the new user is to use authentication: + + 8) generate the keyChange value based on the secret + authKey of the clone-from user and the secret key + to be used for the new user. Let us call this + akcValue. + 9) GET(usmUserSpinLock.0) and save in sValue. + 10) SET(usmUserSpinLock.0=sValue, + usmUserAuthKeyChange=akcValue + usmUserPublic=randomValue2) + 11) GET(usmUserPulic) and check it has randomValue2. + If not, repeat steps 9-11. + + If the new user will never use authentication: + + 12) SET(usmUserAuthProtocol=usmNoAuthProtocol) + + Finally, activate the new user: + + 13) SET(usmUserStatus=active) + + The new user should now be available and ready to be + used for SNMPv3 communication. Note however that access + to MIB data must be provided via configuration of the + SNMP-VIEW-BASED-ACM-MIB. + + + + The use of usmUserSpinlock is to avoid conflicts with + another SNMP command generator application which may + also be acting on the usmUserTable. + " + ::= { usmUser 2 } + +usmUserEntry OBJECT-TYPE + SYNTAX UsmUserEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A user configured in the SNMP engine's Local + Configuration Datastore (LCD) for the User-based + Security Model. + " + INDEX { usmUserEngineID, + usmUserName + } + ::= { usmUserTable 1 } + +UsmUserEntry ::= SEQUENCE + { + usmUserEngineID SnmpEngineID, + usmUserName SnmpAdminString, + usmUserSecurityName SnmpAdminString, + usmUserCloneFrom RowPointer, + usmUserAuthProtocol AutonomousType, + usmUserAuthKeyChange KeyChange, + usmUserOwnAuthKeyChange KeyChange, + usmUserPrivProtocol AutonomousType, + usmUserPrivKeyChange KeyChange, + usmUserOwnPrivKeyChange KeyChange, + usmUserPublic OCTET STRING, + usmUserStorageType StorageType, + usmUserStatus RowStatus + } + +usmUserEngineID OBJECT-TYPE + SYNTAX SnmpEngineID + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An SNMP engine's administratively-unique identifier. + + In a simple agent, this value is always that agent's + own snmpEngineID value. + + The value can also take the value of the snmpEngineID + of a remote SNMP engine with which this user can + communicate. + + + + " + ::= { usmUserEntry 1 } + +usmUserName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A human readable string representing the name of + the user. + + This is the (User-based Security) Model dependent + security ID. + " + ::= { usmUserEntry 2 } + +usmUserSecurityName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "A human readable string representing the user in + Security Model independent format. + + The default transformation of the User-based Security + Model dependent security ID to the securityName and + vice versa is the identity function so that the + securityName is the same as the userName. + " + ::= { usmUserEntry 3 } + +usmUserCloneFrom OBJECT-TYPE + SYNTAX RowPointer + MAX-ACCESS read-create + STATUS current + DESCRIPTION "A pointer to another conceptual row in this + usmUserTable. The user in this other conceptual + row is called the clone-from user. + + When a new user is created (i.e., a new conceptual + row is instantiated in this table), the privacy and + authentication parameters of the new user must be + cloned from its clone-from user. These parameters are: + - authentication protocol (usmUserAuthProtocol) + - privacy protocol (usmUserPrivProtocol) + They will be copied regardless of what the current + value is. + + Cloning also causes the initial values of the secret + authentication key (authKey) and the secret encryption + + + + key (privKey) of the new user to be set to the same + values as the corresponding secrets of the clone-from + user to allow the KeyChange process to occur as + required during user creation. + + The first time an instance of this object is set by + a management operation (either at or after its + instantiation), the cloning process is invoked. + Subsequent writes are successful but invoke no + action to be taken by the receiver. + The cloning process fails with an 'inconsistentName' + error if the conceptual row representing the + clone-from user does not exist or is not in an active + state when the cloning process is invoked. + + When this object is read, the ZeroDotZero OID + is returned. + " + ::= { usmUserEntry 4 } + +usmUserAuthProtocol OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "An indication of whether messages sent on behalf of + this user to/from the SNMP engine identified by + usmUserEngineID, can be authenticated, and if so, + the type of authentication protocol which is used. + + An instance of this object is created concurrently + with the creation of any other object instance for + the same user (i.e., as part of the processing of + the set operation which creates the first object + instance in the same conceptual row). + + If an initial set operation (i.e. at row creation time) + tries to set a value for an unknown or unsupported + protocol, then a 'wrongValue' error must be returned. + + The value will be overwritten/set when a set operation + is performed on the corresponding instance of + usmUserCloneFrom. + + Once instantiated, the value of such an instance of + this object can only be changed via a set operation to + the value of the usmNoAuthProtocol. + + If a set operation tries to change the value of an + + + + existing instance of this object to any value other + than usmNoAuthProtocol, then an 'inconsistentValue' + error must be returned. + + If a set operation tries to set the value to the + usmNoAuthProtocol while the usmUserPrivProtocol value + in the same row is not equal to usmNoPrivProtocol, + then an 'inconsistentValue' error must be returned. + That means that an SNMP command generator application + must first ensure that the usmUserPrivProtocol is set + to the usmNoPrivProtocol value before it can set + the usmUserAuthProtocol value to usmNoAuthProtocol. + " + DEFVAL { usmNoAuthProtocol } + ::= { usmUserEntry 5 } + +usmUserAuthKeyChange OBJECT-TYPE + SYNTAX KeyChange -- typically (SIZE (0 | 32)) for HMACMD5 + -- typically (SIZE (0 | 40)) for HMACSHA + MAX-ACCESS read-create + STATUS current + DESCRIPTION "An object, which when modified, causes the secret + authentication key used for messages sent on behalf + of this user to/from the SNMP engine identified by + usmUserEngineID, to be modified via a one-way + function. + + The associated protocol is the usmUserAuthProtocol. + The associated secret key is the user's secret + authentication key (authKey). The associated hash + algorithm is the algorithm used by the user's + usmUserAuthProtocol. + + When creating a new user, it is an 'inconsistentName' + error for a set operation to refer to this object + unless it is previously or concurrently initialized + through a set operation on the corresponding instance + of usmUserCloneFrom. + + When the value of the corresponding usmUserAuthProtocol + is usmNoAuthProtocol, then a set is successful, but + effectively is a no-op. + + When this object is read, the zero-length (empty) + string is returned. + + The recommended way to do a key change is as follows: + + + + + 1) GET(usmUserSpinLock.0) and save in sValue. + 2) generate the keyChange value based on the old + (existing) secret key and the new secret key, + let us call this kcValue. + + If you do the key change on behalf of another user: + + 3) SET(usmUserSpinLock.0=sValue, + usmUserAuthKeyChange=kcValue + usmUserPublic=randomValue) + + If you do the key change for yourself: + + 4) SET(usmUserSpinLock.0=sValue, + usmUserOwnAuthKeyChange=kcValue + usmUserPublic=randomValue) + + If you get a response with error-status of noError, + then the SET succeeded and the new key is active. + If you do not get a response, then you can issue a + GET(usmUserPublic) and check if the value is equal + to the randomValue you did send in the SET. If so, then + the key change succeeded and the new key is active + (probably the response got lost). If not, then the SET + request probably never reached the target and so you + can start over with the procedure above. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 6 } + +usmUserOwnAuthKeyChange OBJECT-TYPE + SYNTAX KeyChange -- typically (SIZE (0 | 32)) for HMACMD5 + -- typically (SIZE (0 | 40)) for HMACSHA + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Behaves exactly as usmUserAuthKeyChange, with one + notable difference: in order for the set operation + to succeed, the usmUserName of the operation + requester must match the usmUserName that + indexes the row which is targeted by this + operation. + In addition, the USM security model must be + used for this operation. + + The idea here is that access to this column can be + public, since it will only allow a user to change + his own secret authentication key (authKey). + Note that this can only be done once the row is active. + + + + When a set is received and the usmUserName of the + requester is not the same as the umsUserName that + indexes the row which is targeted by this operation, + then a 'noAccess' error must be returned. + + When a set is received and the security model in use + is not USM, then a 'noAccess' error must be returned. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 7 } + +usmUserPrivProtocol OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "An indication of whether messages sent on behalf of + this user to/from the SNMP engine identified by + usmUserEngineID, can be protected from disclosure, + and if so, the type of privacy protocol which is used. + + An instance of this object is created concurrently + with the creation of any other object instance for + the same user (i.e., as part of the processing of + the set operation which creates the first object + instance in the same conceptual row). + + If an initial set operation (i.e. at row creation time) + tries to set a value for an unknown or unsupported + protocol, then a 'wrongValue' error must be returned. + + The value will be overwritten/set when a set operation + is performed on the corresponding instance of + usmUserCloneFrom. + + Once instantiated, the value of such an instance of + this object can only be changed via a set operation to + the value of the usmNoPrivProtocol. + + If a set operation tries to change the value of an + existing instance of this object to any value other + than usmNoPrivProtocol, then an 'inconsistentValue' + error must be returned. + + Note that if any privacy protocol is used, then you + must also use an authentication protocol. In other + words, if usmUserPrivProtocol is set to anything else + than usmNoPrivProtocol, then the corresponding instance + of usmUserAuthProtocol cannot have a value of + + + + usmNoAuthProtocol. If it does, then an + 'inconsistentValue' error must be returned. + " + DEFVAL { usmNoPrivProtocol } + ::= { usmUserEntry 8 } + +usmUserPrivKeyChange OBJECT-TYPE + SYNTAX KeyChange -- typically (SIZE (0 | 32)) for DES + MAX-ACCESS read-create + STATUS current + DESCRIPTION "An object, which when modified, causes the secret + encryption key used for messages sent on behalf + of this user to/from the SNMP engine identified by + usmUserEngineID, to be modified via a one-way + function. + + The associated protocol is the usmUserPrivProtocol. + The associated secret key is the user's secret + privacy key (privKey). The associated hash + algorithm is the algorithm used by the user's + usmUserAuthProtocol. + + When creating a new user, it is an 'inconsistentName' + error for a set operation to refer to this object + unless it is previously or concurrently initialized + through a set operation on the corresponding instance + of usmUserCloneFrom. + + When the value of the corresponding usmUserPrivProtocol + is usmNoPrivProtocol, then a set is successful, but + effectively is a no-op. + + When this object is read, the zero-length (empty) + string is returned. + See the description clause of usmUserAuthKeyChange for + a recommended procedure to do a key change. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 9 } + +usmUserOwnPrivKeyChange OBJECT-TYPE + SYNTAX KeyChange -- typically (SIZE (0 | 32)) for DES + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Behaves exactly as usmUserPrivKeyChange, with one + notable difference: in order for the Set operation + to succeed, the usmUserName of the operation + requester must match the usmUserName that indexes + + + + the row which is targeted by this operation. + In addition, the USM security model must be + used for this operation. + + The idea here is that access to this column can be + public, since it will only allow a user to change + his own secret privacy key (privKey). + Note that this can only be done once the row is active. + + When a set is received and the usmUserName of the + requester is not the same as the umsUserName that + indexes the row which is targeted by this operation, + then a 'noAccess' error must be returned. + + When a set is received and the security model in use + is not USM, then a 'noAccess' error must be returned. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 10 } + +usmUserPublic OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "A publicly-readable value which can be written as part + of the procedure for changing a user's secret + authentication and/or privacy key, and later read to + determine whether the change of the secret was + effected. + " + DEFVAL { ''H } -- the empty string + ::= { usmUserEntry 11 } + +usmUserStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' must + allow write-access at a minimum to: + + - usmUserAuthKeyChange, usmUserOwnAuthKeyChange + and usmUserPublic for a user who employs + authentication, and + - usmUserPrivKeyChange, usmUserOwnPrivKeyChange + and usmUserPublic for a user who employs + privacy. + + + + Note that any user who employs authentication or + privacy must allow its secret(s) to be updated and + thus cannot be 'readOnly'. + + If an initial set operation tries to set the value to + 'readOnly' for a user who employs authentication or + privacy, then an 'inconsistentValue' error must be + returned. Note that if the value has been previously + set (implicit or explicit) to any value, then the rules + as defined in the StorageType Textual Convention apply. + + It is an implementation issue to decide if a SET for + a readOnly or permanent row is accepted at all. In some + contexts this may make sense, in others it may not. If + a SET for a readOnly or permanent row is not accepted + at all, then a 'wrongValue' error must be returned. + " + DEFVAL { nonVolatile } + ::= { usmUserEntry 12 } + +usmUserStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + Until instances of all corresponding columns are + appropriately configured, the value of the + corresponding instance of the usmUserStatus column + is 'notReady'. + + In particular, a newly created row for a user who + employs authentication, cannot be made active until the + corresponding usmUserCloneFrom and usmUserAuthKeyChange + have been set. + + Further, a newly created row for a user who also + employs privacy, cannot be made active until the + usmUserPrivKeyChange has been set. + + The RowStatus TC [RFC2579] requires that this + DESCRIPTION clause states under which circumstances + other objects in this row can be modified: + + The value of this object has no effect on whether + other objects in this conceptual row can be modified, + except for usmUserOwnAuthKeyChange and + usmUserOwnPrivKeyChange. For these 2 objects, the + + + + value of usmUserStatus MUST be active. + " + ::= { usmUserEntry 13 } + +-- Conformance Information ******************************************* + +usmMIBCompliances OBJECT IDENTIFIER ::= { usmMIBConformance 1 } +usmMIBGroups OBJECT IDENTIFIER ::= { usmMIBConformance 2 } + +-- Compliance statements + +usmMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for SNMP engines which + implement the SNMP-USER-BASED-SM-MIB. + " + + MODULE -- this module + MANDATORY-GROUPS { usmMIBBasicGroup } + + OBJECT usmUserAuthProtocol + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT usmUserPrivProtocol + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { usmMIBCompliances 1 } + +-- Units of compliance +usmMIBBasicGroup OBJECT-GROUP + OBJECTS { + usmStatsUnsupportedSecLevels, + usmStatsNotInTimeWindows, + usmStatsUnknownUserNames, + usmStatsUnknownEngineIDs, + usmStatsWrongDigests, + usmStatsDecryptionErrors, + usmUserSpinLock, + usmUserSecurityName, + usmUserCloneFrom, + usmUserAuthProtocol, + usmUserAuthKeyChange, + usmUserOwnAuthKeyChange, + usmUserPrivProtocol, + usmUserPrivKeyChange, + usmUserOwnPrivKeyChange, + + + + usmUserPublic, + usmUserStorageType, + usmUserStatus + } + STATUS current + DESCRIPTION "A collection of objects providing for configuration + of an SNMP engine which implements the SNMP + User-based Security Model. + " + ::= { usmMIBGroups 1 } + +END diff --git a/mibs/ietf/SNMP-USM-AES-MIB b/mibs/ietf/SNMP-USM-AES-MIB new file mode 100644 index 0000000..a1dd75f --- /dev/null +++ b/mibs/ietf/SNMP-USM-AES-MIB @@ -0,0 +1,68 @@ +SNMP-USM-AES-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, + snmpModules FROM SNMPv2-SMI -- [RFC2578] + snmpPrivProtocols FROM SNMP-FRAMEWORK-MIB; -- [RFC3411] + +snmpUsmAesMIB MODULE-IDENTITY + LAST-UPDATED "200406140000Z" + ORGANIZATION "IETF" + CONTACT-INFO "Uri Blumenthal + Lucent Technologies / Bell Labs + 67 Whippany Rd. + 14D-318 + Whippany, NJ 07981, USA + 973-386-2163 + uri@bell-labs.com + + Fabio Maino + Andiamo Systems, Inc. + 375 East Tasman Drive + San Jose, CA 95134, USA + 408-853-7530 + fmaino@andiamo.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706, USA + + 408-526-5260 + kzm@cisco.com" + DESCRIPTION "Definitions of Object Identities needed for + the use of AES by SNMP's User-based Security + Model. + + Copyright (C) The Internet Society (2004). + + This version of this MIB module is part of RFC 3826; + see the RFC itself for full legal notices. + Supplementary information may be available on + http://www.ietf.org/copyrights/ianamib.html." + + + + + + + REVISION "200406140000Z" + DESCRIPTION "Initial version, published as RFC3826" + + ::= { snmpModules 20 } + +usmAesCfb128Protocol OBJECT-IDENTITY + STATUS current + DESCRIPTION "The CFB128-AES-128 Privacy Protocol." + REFERENCE "- Specification for the ADVANCED ENCRYPTION + STANDARD. Federal Information Processing + Standard (FIPS) Publication 197. + (November 2001). + + - Dworkin, M., NIST Recommendation for Block + Cipher Modes of Operation, Methods and + Techniques. NIST Special Publication 800-38A + (December 2001). + " + ::= { snmpPrivProtocols 4 } + +END diff --git a/mibs/ietf/SNMP-USM-DH-OBJECTS-MIB b/mibs/ietf/SNMP-USM-DH-OBJECTS-MIB new file mode 100644 index 0000000..ee2076a --- /dev/null +++ b/mibs/ietf/SNMP-USM-DH-OBJECTS-MIB @@ -0,0 +1,537 @@ +SNMP-USM-DH-OBJECTS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + -- OBJECT-IDENTITY, + experimental, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + usmUserEntry + FROM SNMP-USER-BASED-SM-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +snmpUsmDHObjectsMIB MODULE-IDENTITY + LAST-UPDATED "200003060000Z" -- 6 March 2000, Midnight + ORGANIZATION "Excite@Home" + CONTACT-INFO "Author: Mike StJohns + Postal: Excite@Home + 450 Broadway + Redwood City, CA 94063 + Email: stjohns@corp.home.net + Phone: +1-650-556-5368" + + DESCRIPTION + "The management information definitions for providing forward + secrecy for key changes for the usmUserTable, and for providing a + method for 'kickstarting' access to the agent via a Diffie-Helman + key agreement." + + REVISION "200003060000Z" + DESCRIPTION + "Initial version published as RFC 2786." + + + ::= { experimental 101 } -- IANA DHKEY-CHANGE 101 + +-- Administrative assignments + +usmDHKeyObjects OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 1 } +usmDHKeyConformance OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 2 } + +-- Textual conventions + +DHKeyChange ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Upon initialization, or upon creation of a row containing an + object of this type, and after any successful SET of this value, a + GET of this value returns 'y' where y = g^xa MOD p, and where g is + the base from usmDHParameters, p is the prime from + usmDHParameters, and xa is a new random integer selected by the + agent in the interval 2^(l-1) <= xa < 2^l < p-1. 'l' is the + optional privateValueLength from usmDHParameters in bits. If 'l' + is omitted, then xa (and xr below) is selected in the interval 0 + <= xa < p-1. y is expressed as an OCTET STRING 'PV' of length 'k' + which satisfies + + k + y = SUM 2^(8(k-i)) PV'i + i=1 + + where PV1,...,PVk are the octets of PV from first to last, and + where PV1 <> 0. + + A successful SET consists of the value 'y' expressed as an OCTET + STRING as above concatenated with the value 'z'(expressed as an + OCTET STRING in the same manner as y) where z = g^xr MOD p, where + g, p and l are as above, and where xr is a new random integer + selected by the manager in the interval 2^(l-1) <= xr < 2^l < + p-1. A SET to an object of this type will fail with the error + wrongValue if the current 'y' does not match the 'y' portion of + the value of the varbind for the object. (E.g. GET yout, SET + concat(yin, z), yout <> yin). + + Note that the private values xa and xr are never transmitted from + manager to device or vice versa, only the values y and z. + Obviously, these values must be retained until a successful SET on + the associated object. + + The shared secret 'sk' is calculated at the agent as sk = z^xa MOD + p, and at the manager as sk = y^xr MOD p. + + Each object definition of this type MUST describe how to map from + the shared secret 'sk' to the operational key value used by the + protocols and operations related to the object. In general, if n + bits of key are required, the author suggests using the n + right-most bits of the shared secret as the operational key value." + REFERENCE + "-- Diffie-Hellman Key-Agreement Standard, PKCS #3; + RSA Laboratories, November 1993" + SYNTAX OCTET STRING + +-- Diffie Hellman public values + +usmDHPublicObjects OBJECT IDENTIFIER ::= { usmDHKeyObjects 1 } + +usmDHParameters OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The public Diffie-Hellman parameters for doing a Diffie-Hellman + key agreement for this device. This is encoded as an ASN.1 + DHParameter per PKCS #3, section 9. E.g. + + DHParameter ::= SEQUENCE { + prime INTEGER, -- p + base INTEGER, -- g + privateValueLength INTEGER OPTIONAL } + + + Implementors are encouraged to use either the values from + Oakley Group 1 or the values of from Oakley Group 2 as specified + in RFC-2409, The Internet Key Exchange, Section 6.1, 6.2 as the + default for this object. Other values may be used, but the + security properties of those values MUST be well understood and + MUST meet the requirements of PKCS #3 for the selection of + Diffie-Hellman primes. + + In addition, any time usmDHParameters changes, all values of + type DHKeyChange will change and new random numbers MUST be + generated by the agent for each DHKeyChange object." + REFERENCE + "-- Diffie-Hellman Key-Agreement Standard, PKCS #3, + RSA Laboratories, November 1993 + -- The Internet Key Exchange, RFC 2409, November 1998, + Sec 6.1, 6.2" + ::= { usmDHPublicObjects 1 } + +usmDHUserKeyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsmDHUserKeyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table augments and extends the usmUserTable and provides + 4 objects which exactly mirror the objects in that table with the + textual convention of 'KeyChange'. This extension allows key + changes to be done in a manner where the knowledge of the current + secret plus knowledge of the key change data exchanges (e.g. via + wiretapping) will not reveal the new key." + ::= { usmDHPublicObjects 2 } + +usmDHUserKeyEntry OBJECT-TYPE + SYNTAX UsmDHUserKeyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of DHKeyChange objects which augment or replace the + functionality of the KeyChange objects in the base table row." + AUGMENTS { usmUserEntry } + ::= {usmDHUserKeyTable 1 } + +UsmDHUserKeyEntry ::= SEQUENCE { + usmDHUserAuthKeyChange DHKeyChange, + usmDHUserOwnAuthKeyChange DHKeyChange, + usmDHUserPrivKeyChange DHKeyChange, + usmDHUserOwnPrivKeyChange DHKeyChange + } + +usmDHUserAuthKeyChange OBJECT-TYPE + SYNTAX DHKeyChange + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object used to change any given user's Authentication Key + using a Diffie-Hellman key exchange. + + The right-most n bits of the shared secret 'sk', where 'n' is the + number of bits required for the protocol defined by + usmUserAuthProtocol, are installed as the operational + authentication key for this row after a successful SET." + ::= { usmDHUserKeyEntry 1 } + +usmDHUserOwnAuthKeyChange OBJECT-TYPE + SYNTAX DHKeyChange + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object used to change the agents own Authentication Key + using a Diffie-Hellman key exchange. + + The right-most n bits of the shared secret 'sk', where 'n' is the + number of bits required for the protocol defined by + usmUserAuthProtocol, are installed as the operational + authentication key for this row after a successful SET." + ::= { usmDHUserKeyEntry 2 } + +usmDHUserPrivKeyChange OBJECT-TYPE + SYNTAX DHKeyChange + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object used to change any given user's Privacy Key using + a Diffie-Hellman key exchange. + + The right-most n bits of the shared secret 'sk', where 'n' is the + number of bits required for the protocol defined by + usmUserPrivProtocol, are installed as the operational privacy key + for this row after a successful SET." + ::= { usmDHUserKeyEntry 3 } + +usmDHUserOwnPrivKeyChange OBJECT-TYPE + SYNTAX DHKeyChange + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The object used to change the agent's own Privacy Key using a + Diffie-Hellman key exchange. + + The right-most n bits of the shared secret 'sk', where 'n' is the + number of bits required for the protocol defined by + usmUserPrivProtocol, are installed as the operational privacy key + for this row after a successful SET." + ::= { usmDHUserKeyEntry 4 } + +usmDHKickstartGroup OBJECT IDENTIFIER ::= { usmDHKeyObjects 2 } + +usmDHKickstartTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsmDHKickstartEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of mappings between zero or more Diffie-Helman key + agreement values and entries in the usmUserTable. Entries in this + table are created by providing the associated device with a + Diffie-Helman public value and a usmUserName/usmUserSecurityName + pair during initialization. How these values are provided is + outside the scope of this MIB, but could be provided manually, or + through a configuration file. Valid public value/name pairs + result in the creation of a row in this table as well as the + creation of an associated row (with keys derived as indicated) in + the usmUserTable. The actual access the related usmSecurityName + has is dependent on the entries in the VACM tables. In general, + an implementor will specify one or more standard security names + and will provide entries in the VACM tables granting various + levels of access to those names. The actual content of the VACM + table is beyond the scope of this MIB. + + Note: This table is expected to be readable without authentication + using the usmUserSecurityName 'dhKickstart'. See the conformance + statements for details." + ::= { usmDHKickstartGroup 1 } + +usmDHKickstartEntry OBJECT-TYPE + SYNTAX UsmDHKickstartEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "An entry in the usmDHKickstartTable. The agent SHOULD either + delete this entry or mark it as inactive upon a successful SET of + any of the KeyChange-typed objects in the usmUserEntry or upon a + successful SET of any of the DHKeyChange-typed objects in the + usmDhKeyChangeEntry where the related usmSecurityName (e.g. row of + usmUserTable or row of ushDhKeyChangeTable) equals this entry's + usmDhKickstartSecurityName. In otherwords, once you've changed + one or more of the keys for a row in usmUserTable with a + particular security name, the row in this table with that same + security name is no longer useful or meaningful." + + INDEX { usmDHKickstartIndex } + ::= {usmDHKickstartTable 1 } + +UsmDHKickstartEntry ::= SEQUENCE { + usmDHKickstartIndex Integer32, + usmDHKickstartMyPublic OCTET STRING, + usmDHKickstartMgrPublic OCTET STRING, + usmDHKickstartSecurityName SnmpAdminString + } + +usmDHKickstartIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Index value for this row." + ::= { usmDHKickstartEntry 1 } + +usmDHKickstartMyPublic OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The agent's Diffie-Hellman public value for this row. At + initialization, the agent generates a random number and derives + its public value from that number. This public value is published + here. This public value 'y' equals g^r MOD p where g is the from + the set of Diffie-Hellman parameters, p is the prime from those + parameters, and r is a random integer selected by the agent in the + interval 2^(l-1) <= r < p-1 < 2^l. If l is unspecified, then r is + a random integer selected in the interval 0 <= r < p-1 + + The public value is expressed as an OCTET STRING 'PV' of length + 'k' which satisfies + + k + y = SUM 2^(8(k-i)) PV'i + i = 1 + + where PV1,...,PVk are the octets of PV from first to last, and + where PV1 != 0. + + + The following DH parameters (Oakley group #2, RFC 2409, sec 6.1, + 6.2) are used for this object: + + g = 2 + p = FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 + 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD + EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 + E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED + EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 + FFFFFFFF FFFFFFFF + l=1024 + " + REFERENCE + "-- Diffie-Hellman Key-Agreement Standard, PKCS#3v1.4; + RSA Laboratories, November 1993 + -- The Internet Key Exchange, RFC2409; + Harkins, D., Carrel, D.; November 1998" + ::= { usmDHKickstartEntry 2 } + +usmDHKickstartMgrPublic OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The manager's Diffie-Hellman public value for this row. Note + that this value is not set via the SNMP agent, but may be set via + some out of band method, such as the device's configuration file. + The manager calculates this value in the same manner and using the + same parameter set as the agent does. E.g. it selects a random + number 'r', calculates y = g^r mod p and provides 'y' as the + public number expressed as an OCTET STRING. See + usmDHKickstartMyPublic for details. + + When this object is set with a valid value during initialization, + a row is created in the usmUserTable with the following values: + + usmUserEngineID localEngineID + usmUserName [value of usmDHKickstartSecurityName] + usmUserSecurityName [value of usmDHKickstartSecurityName] + usmUserCloneFrom ZeroDotZero + usmUserAuthProtocol usmHMACMD5AuthProtocol + usmUserAuthKeyChange -- derived from set value + usmUserOwnAuthKeyChange -- derived from set value + usmUserPrivProtocol usmDESPrivProtocol + usmUserPrivKeyChange -- derived from set value + usmUserOwnPrivKeyChange -- derived from set value + usmUserPublic '' + usmUserStorageType permanent + usmUserStatus active + + A shared secret 'sk' is calculated at the agent as sk = + mgrPublic^r mod p where r is the agents random number and p is the + DH prime from the common parameters. The underlying privacy key + for this row is derived from sk by applying the key derivation + function PBKDF2 defined in PKCS#5v2.0 with a salt of 0xd1310ba6, + and iterationCount of 500, a keyLength of 16 (for + usmDESPrivProtocol), and a prf (pseudo random function) of + 'id-hmacWithSHA1'. The underlying authentication key for this row + is derived from sk by applying the key derivation function PBKDF2 + with a salt of 0x98dfb5ac , an interation count of 500, a + keyLength of 16 (for usmHMAC5AuthProtocol), and a prf of + 'id-hmacWithSHA1'. Note: The salts are the first two words in the + ks0 [key schedule 0] of the BLOWFISH cipher from 'Applied + Cryptography' by Bruce Schnier - they could be any relatively + random string of bits. + + The manager can use its knowledge of its own random number and the + agent's public value to kickstart its access to the agent in a + secure manner. Note that the security of this approach is + directly related to the strength of the authorization security of + the out of band provisioning of the managers public value + (e.g. the configuration file), but is not dependent at all on the + strength of the confidentiality of the out of band provisioning + data." + REFERENCE + "-- Password-Based Cryptography Standard, PKCS#5v2.0; + RSA Laboratories, March 1999 + -- Applied Cryptography, 2nd Ed.; B. Schneier, + Counterpane Systems; John Wiley & Sons, 1996" + ::= { usmDHKickstartEntry 3 } + +usmDHKickstartSecurityName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The usmUserName and usmUserSecurityName in the usmUserTable + associated with this row. This is provided in the same manner and + at the same time as the usmDHKickstartMgrPublic value - + e.g. possibly manually, or via the device's configuration file." + ::= { usmDHKickstartEntry 4 } + +-- Conformance Information + +usmDHKeyMIBCompliances OBJECT IDENTIFIER ::= { usmDHKeyConformance 1 } +usmDHKeyMIBGroups OBJECT IDENTIFIER ::= { usmDHKeyConformance 2 } + +-- Compliance statements + +usmDHKeyMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for this module." + MODULE + GROUP usmDHKeyMIBBasicGroup + DESCRIPTION + "This group MAY be implemented by any agent which + implements the usmUserTable and which wishes to provide the + ability to change user and agent authentication and privacy + keys via Diffie-Hellman key exchanges." + + GROUP usmDHKeyParamGroup + DESCRIPTION + "This group MUST be implemented by any agent which + implements a MIB containing the DHKeyChange Textual + Convention defined in this module." + + GROUP usmDHKeyKickstartGroup + DESCRIPTION + "This group MAY be implemented by any agent which + implements the usmUserTable and which wishes the ability to + populate the USM table based on out-of-band provided DH + ignition values. + Any agent implementing this group is expected to provide + preinstalled entries in the vacm tables as follows: + + In the usmUserTable: This entry allows access to the + system and dhKickstart groups + + usmUserEngineID localEngineID + usmUserName 'dhKickstart' + usmUserSecurityName 'dhKickstart' + usmUserCloneFrom ZeroDotZero + usmUserAuthProtocol none + usmUserAuthKeyChange '' + usmUserOwnAuthKeyChange '' + usmUserPrivProtocol none + usmUserPrivKeyChange '' + usmUserOwnPrivKeyChange '' + usmUserPublic '' + usmUserStorageType permanent + usmUserStatus active + + In the vacmSecurityToGroupTable: This maps the initial + user into the accessible objects. + + vacmSecurityModel 3 (USM) + vacmSecurityName 'dhKickstart' + vacmGroupName 'dhKickstart' + vacmSecurityToGroupStorageType permanent + vacmSecurityToGroupStatus active + + In the vacmAccessTable: Group name to view name translation. + + vacmGroupName 'dhKickstart' + vacmAccessContextPrefix '' + vacmAccessSecurityModel 3 (USM) + vacmAccessSecurityLevel noAuthNoPriv + vacmAccessContextMatch exact + vacmAccessReadViewName 'dhKickRestricted' + vacmAccessWriteViewName '' + vacmAccessNotifyViewName 'dhKickRestricted' + vacmAccessStorageType permanent + vacmAccessStatus active + + In the vacmViewTreeFamilyTable: Two entries to allow the + initial entry to access the system and kickstart groups. + + vacmViewTreeFamilyViewName 'dhKickRestricted' + vacmViewTreeFamilySubtree 1.3.6.1.2.1.1 (system) + vacmViewTreeFamilyMask '' + vacmViewTreeFamilyType 1 + vacmViewTreeFamilyStorageType permanent + vacmViewTreeFamilyStatus active + + vacmViewTreeFamilyViewName 'dhKickRestricted' + vacmViewTreeFamilySubtree (usmDHKickstartTable OID) + vacmViewTreeFamilyMask '' + vacmViewTreeFamilyType 1 + vacmViewTreeFamilyStorageType permanent + vacmViewTreeFamilyStatus active + " + + OBJECT usmDHParameters + MIN-ACCESS read-only + DESCRIPTION + "It is compliant to implement this object as read-only for + any device." + + ::= { usmDHKeyMIBCompliances 1 } + +-- Units of Compliance + +usmDHKeyMIBBasicGroup OBJECT-GROUP + OBJECTS { + usmDHUserAuthKeyChange, + usmDHUserOwnAuthKeyChange, + usmDHUserPrivKeyChange, + usmDHUserOwnPrivKeyChange + } + STATUS current + DESCRIPTION + "" + ::= { usmDHKeyMIBGroups 1 } + +usmDHKeyParamGroup OBJECT-GROUP + OBJECTS { + usmDHParameters + } + STATUS current + DESCRIPTION + "The mandatory object for all MIBs which use the DHKeyChange + textual convention." + ::= { usmDHKeyMIBGroups 2 } + +usmDHKeyKickstartGroup OBJECT-GROUP + OBJECTS { + usmDHKickstartMyPublic, + usmDHKickstartMgrPublic, + usmDHKickstartSecurityName + } + STATUS current + DESCRIPTION + "The objects used for kickstarting one or more SNMPv3 USM + associations via a configuration file or other out of band, + non-confidential access." + ::= { usmDHKeyMIBGroups 3 } + + +END diff --git a/mibs/ietf/SNMP-VIEW-BASED-ACM-MIB b/mibs/ietf/SNMP-VIEW-BASED-ACM-MIB new file mode 100644 index 0000000..c24bffd --- /dev/null +++ b/mibs/ietf/SNMP-VIEW-BASED-ACM-MIB @@ -0,0 +1,870 @@ +SNMP-VIEW-BASED-ACM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + MODULE-IDENTITY, OBJECT-TYPE, + snmpModules FROM SNMPv2-SMI + TestAndIncr, + RowStatus, StorageType FROM SNMPv2-TC + SnmpAdminString, + SnmpSecurityLevel, + SnmpSecurityModel FROM SNMP-FRAMEWORK-MIB; + +snmpVacmMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" -- 16 Oct 2002, midnight + ORGANIZATION "SNMPv3 Working Group" + CONTACT-INFO "WG-email: snmpv3@lists.tislabs.com + Subscribe: majordomo@lists.tislabs.com + In message body: subscribe snmpv3 + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + email: mundy@tislabs.com + phone: +1 301-947-7107 + + Co-Chair: David Harrington + Enterasys Networks + Postal: 35 Industrial Way + P. O. Box 5004 + Rochester, New Hampshire 03866-5005 + USA + EMail: dbh@enterasys.com + Phone: +1 603-337-2614 + + Co-editor: Bert Wijnen + Lucent Technologies + postal: Schagen 33 + 3461 GL Linschoten + Netherlands + email: bwijnen@lucent.com + phone: +31-348-480-685 + + Co-editor: Randy Presuhn + BMC Software, Inc. + + + + postal: 2141 North First Street + San Jose, CA 95131 + USA + email: randy_presuhn@bmc.com + phone: +1 408-546-1006 + + Co-editor: Keith McCloghrie + Cisco Systems, Inc. + postal: 170 West Tasman Drive + San Jose, CA 95134-1706 + USA + email: kzm@cisco.com + phone: +1-408-526-5260 + " + DESCRIPTION "The management information definitions for the + View-based Access Control Model for SNMP. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3415; + see the RFC itself for full legal notices. + " +-- Revision history + + REVISION "200210160000Z" -- 16 Oct 2002, midnight + DESCRIPTION "Clarifications, published as RFC3415" + + REVISION "199901200000Z" -- 20 Jan 1999, midnight + DESCRIPTION "Clarifications, published as RFC2575" + + REVISION "199711200000Z" -- 20 Nov 1997, midnight + DESCRIPTION "Initial version, published as RFC2275" + + ::= { snmpModules 16 } + +-- Administrative assignments **************************************** + +vacmMIBObjects OBJECT IDENTIFIER ::= { snmpVacmMIB 1 } +vacmMIBConformance OBJECT IDENTIFIER ::= { snmpVacmMIB 2 } + +-- Information about Local Contexts ********************************** + +vacmContextTable OBJECT-TYPE + SYNTAX SEQUENCE OF VacmContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The table of locally available contexts. + + This table provides information to SNMP Command + + + + Generator applications so that they can properly + configure the vacmAccessTable to control access to + all contexts at the SNMP entity. + + This table may change dynamically if the SNMP entity + allows that contexts are added/deleted dynamically + (for instance when its configuration changes). Such + changes would happen only if the management + instrumentation at that SNMP entity recognizes more + (or fewer) contexts. + + The presence of entries in this table and of entries + in the vacmAccessTable are independent. That is, a + context identified by an entry in this table is not + necessarily referenced by any entries in the + vacmAccessTable; and the context(s) referenced by an + entry in the vacmAccessTable does not necessarily + currently exist and thus need not be identified by an + entry in this table. + + This table must be made accessible via the default + context so that Command Responder applications have + a standard way of retrieving the information. + + This table is read-only. It cannot be configured via + SNMP. + " + ::= { vacmMIBObjects 1 } + +vacmContextEntry OBJECT-TYPE + SYNTAX VacmContextEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Information about a particular context." + INDEX { + vacmContextName + } + ::= { vacmContextTable 1 } + +VacmContextEntry ::= SEQUENCE + { + vacmContextName SnmpAdminString + } + +vacmContextName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "A human readable name identifying a particular + context at a particular SNMP entity. + + The empty contextName (zero length) represents the + default context. + " + ::= { vacmContextEntry 1 } + +-- Information about Groups ****************************************** + +vacmSecurityToGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF VacmSecurityToGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This table maps a combination of securityModel and + securityName into a groupName which is used to define + an access control policy for a group of principals. + " + ::= { vacmMIBObjects 2 } + +vacmSecurityToGroupEntry OBJECT-TYPE + SYNTAX VacmSecurityToGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in this table maps the combination of a + securityModel and securityName into a groupName. + " + INDEX { + vacmSecurityModel, + vacmSecurityName + } + ::= { vacmSecurityToGroupTable 1 } + +VacmSecurityToGroupEntry ::= SEQUENCE + { + vacmSecurityModel SnmpSecurityModel, + vacmSecurityName SnmpAdminString, + vacmGroupName SnmpAdminString, + vacmSecurityToGroupStorageType StorageType, + vacmSecurityToGroupStatus RowStatus + } + +vacmSecurityModel OBJECT-TYPE + SYNTAX SnmpSecurityModel(1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The Security Model, by which the vacmSecurityName + referenced by this entry is provided. + + + + Note, this object may not take the 'any' (0) value. + " + ::= { vacmSecurityToGroupEntry 1 } + +vacmSecurityName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The securityName for the principal, represented in a + Security Model independent format, which is mapped by + this entry to a groupName. + " + ::= { vacmSecurityToGroupEntry 2 } + +vacmGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The name of the group to which this entry (e.g., the + combination of securityModel and securityName) + belongs. + + This groupName is used as index into the + vacmAccessTable to select an access control policy. + However, a value in this table does not imply that an + instance with the value exists in table vacmAccesTable. + " + ::= { vacmSecurityToGroupEntry 3 } + +vacmSecurityToGroupStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + DEFVAL { nonVolatile } + ::= { vacmSecurityToGroupEntry 4 } + +vacmSecurityToGroupStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + Until instances of all corresponding columns are + appropriately configured, the value of the + + + + corresponding instance of the vacmSecurityToGroupStatus + column is 'notReady'. + + In particular, a newly created row cannot be made + active until a value has been set for vacmGroupName. + + The RowStatus TC [RFC2579] requires that this + DESCRIPTION clause states under which circumstances + other objects in this row can be modified: + + The value of this object has no effect on whether + other objects in this conceptual row can be modified. + " + ::= { vacmSecurityToGroupEntry 5 } + +-- Information about Access Rights *********************************** + +vacmAccessTable OBJECT-TYPE + SYNTAX SEQUENCE OF VacmAccessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The table of access rights for groups. + + Each entry is indexed by a groupName, a contextPrefix, + a securityModel and a securityLevel. To determine + whether access is allowed, one entry from this table + needs to be selected and the proper viewName from that + entry must be used for access control checking. + + To select the proper entry, follow these steps: + + 1) the set of possible matches is formed by the + intersection of the following sets of entries: + + the set of entries with identical vacmGroupName + the union of these two sets: + - the set with identical vacmAccessContextPrefix + - the set of entries with vacmAccessContextMatch + value of 'prefix' and matching + vacmAccessContextPrefix + intersected with the union of these two sets: + - the set of entries with identical + vacmSecurityModel + - the set of entries with vacmSecurityModel + value of 'any' + intersected with the set of entries with + vacmAccessSecurityLevel value less than or equal + to the requested securityLevel + + + + 2) if this set has only one member, we're done + otherwise, it comes down to deciding how to weight + the preferences between ContextPrefixes, + SecurityModels, and SecurityLevels as follows: + a) if the subset of entries with securityModel + matching the securityModel in the message is + not empty, then discard the rest. + b) if the subset of entries with + vacmAccessContextPrefix matching the contextName + in the message is not empty, + then discard the rest + c) discard all entries with ContextPrefixes shorter + than the longest one remaining in the set + d) select the entry with the highest securityLevel + + Please note that for securityLevel noAuthNoPriv, all + groups are really equivalent since the assumption that + the securityName has been authenticated does not hold. + " + ::= { vacmMIBObjects 4 } + +vacmAccessEntry OBJECT-TYPE + SYNTAX VacmAccessEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An access right configured in the Local Configuration + Datastore (LCD) authorizing access to an SNMP context. + + Entries in this table can use an instance value for + object vacmGroupName even if no entry in table + vacmAccessSecurityToGroupTable has a corresponding + value for object vacmGroupName. + " + INDEX { vacmGroupName, + vacmAccessContextPrefix, + vacmAccessSecurityModel, + vacmAccessSecurityLevel + } + ::= { vacmAccessTable 1 } + +VacmAccessEntry ::= SEQUENCE + { + vacmAccessContextPrefix SnmpAdminString, + vacmAccessSecurityModel SnmpSecurityModel, + vacmAccessSecurityLevel SnmpSecurityLevel, + vacmAccessContextMatch INTEGER, + vacmAccessReadViewName SnmpAdminString, + vacmAccessWriteViewName SnmpAdminString, + + + + vacmAccessNotifyViewName SnmpAdminString, + vacmAccessStorageType StorageType, + vacmAccessStatus RowStatus + } + +vacmAccessContextPrefix OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "In order to gain the access rights allowed by this + conceptual row, a contextName must match exactly + (if the value of vacmAccessContextMatch is 'exact') + or partially (if the value of vacmAccessContextMatch + is 'prefix') to the value of the instance of this + object. + " + ::= { vacmAccessEntry 1 } + +vacmAccessSecurityModel OBJECT-TYPE + SYNTAX SnmpSecurityModel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "In order to gain the access rights allowed by this + conceptual row, this securityModel must be in use. + " + ::= { vacmAccessEntry 2 } + +vacmAccessSecurityLevel OBJECT-TYPE + SYNTAX SnmpSecurityLevel + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The minimum level of security required in order to + gain the access rights allowed by this conceptual + row. A securityLevel of noAuthNoPriv is less than + authNoPriv which in turn is less than authPriv. + + If multiple entries are equally indexed except for + this vacmAccessSecurityLevel index, then the entry + which has the highest value for + vacmAccessSecurityLevel is selected. + " + ::= { vacmAccessEntry 3 } + +vacmAccessContextMatch OBJECT-TYPE + SYNTAX INTEGER + { exact (1), -- exact match of prefix and contextName + prefix (2) -- Only match to the prefix + } + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION "If the value of this object is exact(1), then all + rows where the contextName exactly matches + vacmAccessContextPrefix are selected. + + If the value of this object is prefix(2), then all + rows where the contextName whose starting octets + exactly match vacmAccessContextPrefix are selected. + This allows for a simple form of wildcarding. + " + DEFVAL { exact } + ::= { vacmAccessEntry 4 } + +vacmAccessReadViewName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The value of an instance of this object identifies + the MIB view of the SNMP context to which this + conceptual row authorizes read access. + + The identified MIB view is that one for which the + vacmViewTreeFamilyViewName has the same value as the + instance of this object; if the value is the empty + string or if there is no active MIB view having this + value of vacmViewTreeFamilyViewName, then no access + is granted. + " + DEFVAL { ''H } -- the empty string + ::= { vacmAccessEntry 5 } + +vacmAccessWriteViewName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The value of an instance of this object identifies + the MIB view of the SNMP context to which this + conceptual row authorizes write access. + + The identified MIB view is that one for which the + vacmViewTreeFamilyViewName has the same value as the + instance of this object; if the value is the empty + string or if there is no active MIB view having this + value of vacmViewTreeFamilyViewName, then no access + is granted. + " + DEFVAL { ''H } -- the empty string + + + + ::= { vacmAccessEntry 6 } + +vacmAccessNotifyViewName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The value of an instance of this object identifies + the MIB view of the SNMP context to which this + conceptual row authorizes access for notifications. + + The identified MIB view is that one for which the + vacmViewTreeFamilyViewName has the same value as the + instance of this object; if the value is the empty + string or if there is no active MIB view having this + value of vacmViewTreeFamilyViewName, then no access + is granted. + " + DEFVAL { ''H } -- the empty string + ::= { vacmAccessEntry 7 } + +vacmAccessStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + DEFVAL { nonVolatile } + ::= { vacmAccessEntry 8 } + +vacmAccessStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + The RowStatus TC [RFC2579] requires that this + DESCRIPTION clause states under which circumstances + other objects in this row can be modified: + + The value of this object has no effect on whether + other objects in this conceptual row can be modified. + " + ::= { vacmAccessEntry 9 } + +-- Information about MIB views *************************************** + + + +-- Support for instance-level granularity is optional. +-- +-- In some implementations, instance-level access control +-- granularity may come at a high performance cost. Managers +-- should avoid requesting such configurations unnecessarily. + +vacmMIBViews OBJECT IDENTIFIER ::= { vacmMIBObjects 5 } + +vacmViewSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION "An advisory lock used to allow cooperating SNMP + Command Generator applications to coordinate their + use of the Set operation in creating or modifying + views. + + When creating a new view or altering an existing + view, it is important to understand the potential + interactions with other uses of the view. The + vacmViewSpinLock should be retrieved. The name of + the view to be created should be determined to be + unique by the SNMP Command Generator application by + consulting the vacmViewTreeFamilyTable. Finally, + the named view may be created (Set), including the + advisory lock. + If another SNMP Command Generator application has + altered the views in the meantime, then the spin + lock's value will have changed, and so this creation + will fail because it will specify the wrong value for + the spin lock. + + Since this is an advisory lock, the use of this lock + is not enforced. + " + ::= { vacmMIBViews 1 } + +vacmViewTreeFamilyTable OBJECT-TYPE + SYNTAX SEQUENCE OF VacmViewTreeFamilyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Locally held information about families of subtrees + within MIB views. + + Each MIB view is defined by two sets of view subtrees: + - the included view subtrees, and + - the excluded view subtrees. + Every such view subtree, both the included and the + + + + excluded ones, is defined in this table. + + To determine if a particular object instance is in + a particular MIB view, compare the object instance's + OBJECT IDENTIFIER with each of the MIB view's active + entries in this table. If none match, then the + object instance is not in the MIB view. If one or + more match, then the object instance is included in, + or excluded from, the MIB view according to the + value of vacmViewTreeFamilyType in the entry whose + value of vacmViewTreeFamilySubtree has the most + sub-identifiers. If multiple entries match and have + the same number of sub-identifiers (when wildcarding + is specified with the value of vacmViewTreeFamilyMask), + then the lexicographically greatest instance of + vacmViewTreeFamilyType determines the inclusion or + exclusion. + + An object instance's OBJECT IDENTIFIER X matches an + active entry in this table when the number of + sub-identifiers in X is at least as many as in the + value of vacmViewTreeFamilySubtree for the entry, + and each sub-identifier in the value of + vacmViewTreeFamilySubtree matches its corresponding + sub-identifier in X. Two sub-identifiers match + either if the corresponding bit of the value of + vacmViewTreeFamilyMask for the entry is zero (the + 'wild card' value), or if they are equal. + + A 'family' of subtrees is the set of subtrees defined + by a particular combination of values of + vacmViewTreeFamilySubtree and vacmViewTreeFamilyMask. + + In the case where no 'wild card' is defined in the + vacmViewTreeFamilyMask, the family of subtrees reduces + to a single subtree. + + When creating or changing MIB views, an SNMP Command + Generator application should utilize the + vacmViewSpinLock to try to avoid collisions. See + DESCRIPTION clause of vacmViewSpinLock. + + When creating MIB views, it is strongly advised that + first the 'excluded' vacmViewTreeFamilyEntries are + created and then the 'included' entries. + + When deleting MIB views, it is strongly advised that + first the 'included' vacmViewTreeFamilyEntries are + + + + deleted and then the 'excluded' entries. + + If a create for an entry for instance-level access + control is received and the implementation does not + support instance-level granularity, then an + inconsistentName error must be returned. + " + ::= { vacmMIBViews 2 } + +vacmViewTreeFamilyEntry OBJECT-TYPE + SYNTAX VacmViewTreeFamilyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Information on a particular family of view subtrees + included in or excluded from a particular SNMP + context's MIB view. + + Implementations must not restrict the number of + families of view subtrees for a given MIB view, + except as dictated by resource constraints on the + overall number of entries in the + vacmViewTreeFamilyTable. + + If no conceptual rows exist in this table for a given + MIB view (viewName), that view may be thought of as + consisting of the empty set of view subtrees. + " + INDEX { vacmViewTreeFamilyViewName, + vacmViewTreeFamilySubtree + } + ::= { vacmViewTreeFamilyTable 1 } + +VacmViewTreeFamilyEntry ::= SEQUENCE + { + vacmViewTreeFamilyViewName SnmpAdminString, + vacmViewTreeFamilySubtree OBJECT IDENTIFIER, + vacmViewTreeFamilyMask OCTET STRING, + vacmViewTreeFamilyType INTEGER, + vacmViewTreeFamilyStorageType StorageType, + vacmViewTreeFamilyStatus RowStatus + } + +vacmViewTreeFamilyViewName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The human readable name for a family of view subtrees. + " + + + + ::= { vacmViewTreeFamilyEntry 1 } + +vacmViewTreeFamilySubtree OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "The MIB subtree which when combined with the + corresponding instance of vacmViewTreeFamilyMask + defines a family of view subtrees. + " + ::= { vacmViewTreeFamilyEntry 2 } + +vacmViewTreeFamilyMask OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The bit mask which, in combination with the + corresponding instance of vacmViewTreeFamilySubtree, + defines a family of view subtrees. + + Each bit of this bit mask corresponds to a + sub-identifier of vacmViewTreeFamilySubtree, with the + most significant bit of the i-th octet of this octet + string value (extended if necessary, see below) + corresponding to the (8*i - 7)-th sub-identifier, and + the least significant bit of the i-th octet of this + octet string corresponding to the (8*i)-th + sub-identifier, where i is in the range 1 through 16. + + Each bit of this bit mask specifies whether or not + the corresponding sub-identifiers must match when + determining if an OBJECT IDENTIFIER is in this + family of view subtrees; a '1' indicates that an + exact match must occur; a '0' indicates 'wild card', + i.e., any sub-identifier value matches. + + Thus, the OBJECT IDENTIFIER X of an object instance + is contained in a family of view subtrees if, for + each sub-identifier of the value of + vacmViewTreeFamilySubtree, either: + + the i-th bit of vacmViewTreeFamilyMask is 0, or + + the i-th sub-identifier of X is equal to the i-th + sub-identifier of the value of + vacmViewTreeFamilySubtree. + + If the value of this bit mask is M bits long and + + + + there are more than M sub-identifiers in the + corresponding instance of vacmViewTreeFamilySubtree, + then the bit mask is extended with 1's to be the + required length. + + Note that when the value of this object is the + zero-length string, this extension rule results in + a mask of all-1's being used (i.e., no 'wild card'), + and the family of view subtrees is the one view + subtree uniquely identified by the corresponding + instance of vacmViewTreeFamilySubtree. + + Note that masks of length greater than zero length + do not need to be supported. In this case this + object is made read-only. + " + DEFVAL { ''H } + ::= { vacmViewTreeFamilyEntry 3 } + +vacmViewTreeFamilyType OBJECT-TYPE + SYNTAX INTEGER { included(1), excluded(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Indicates whether the corresponding instances of + vacmViewTreeFamilySubtree and vacmViewTreeFamilyMask + define a family of view subtrees which is included in + or excluded from the MIB view. + " + DEFVAL { included } + ::= { vacmViewTreeFamilyEntry 4 } + +vacmViewTreeFamilyStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + DEFVAL { nonVolatile } + ::= { vacmViewTreeFamilyEntry 5 } + +vacmViewTreeFamilyStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + + + The RowStatus TC [RFC2579] requires that this + DESCRIPTION clause states under which circumstances + other objects in this row can be modified: + + The value of this object has no effect on whether + other objects in this conceptual row can be modified. + " + ::= { vacmViewTreeFamilyEntry 6 } + +-- Conformance information ******************************************* + +vacmMIBCompliances OBJECT IDENTIFIER ::= { vacmMIBConformance 1 } +vacmMIBGroups OBJECT IDENTIFIER ::= { vacmMIBConformance 2 } + +-- Compliance statements ********************************************* + +vacmMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for SNMP engines which + implement the SNMP View-based Access Control Model + configuration MIB. + " + MODULE -- this module + MANDATORY-GROUPS { vacmBasicGroup } + + OBJECT vacmAccessContextMatch + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessReadViewName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessWriteViewName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessNotifyViewName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmAccessStatus + MIN-ACCESS read-only + DESCRIPTION "Create/delete/modify access to the + + + + vacmAccessTable is not required. + " + + OBJECT vacmViewTreeFamilyMask + WRITE-SYNTAX OCTET STRING (SIZE (0)) + MIN-ACCESS read-only + DESCRIPTION "Support for configuration via SNMP of subtree + families using wild-cards is not required. + " + + OBJECT vacmViewTreeFamilyType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmViewTreeFamilyStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT vacmViewTreeFamilyStatus + MIN-ACCESS read-only + DESCRIPTION "Create/delete/modify access to the + vacmViewTreeFamilyTable is not required. + " + ::= { vacmMIBCompliances 1 } + +-- Units of conformance ********************************************** + +vacmBasicGroup OBJECT-GROUP + OBJECTS { + vacmContextName, + vacmGroupName, + vacmSecurityToGroupStorageType, + vacmSecurityToGroupStatus, + vacmAccessContextMatch, + vacmAccessReadViewName, + vacmAccessWriteViewName, + vacmAccessNotifyViewName, + vacmAccessStorageType, + vacmAccessStatus, + vacmViewSpinLock, + vacmViewTreeFamilyMask, + vacmViewTreeFamilyType, + vacmViewTreeFamilyStorageType, + vacmViewTreeFamilyStatus + } + STATUS current + DESCRIPTION "A collection of objects providing for remote + configuration of an SNMP engine which implements + + + + the SNMP View-based Access Control Model. + " + ::= { vacmMIBGroups 1 } + +END diff --git a/mibs/ietf/SNMPv2-CONF b/mibs/ietf/SNMPv2-CONF new file mode 100644 index 0000000..904dbbb --- /dev/null +++ b/mibs/ietf/SNMPv2-CONF @@ -0,0 +1,318 @@ +SNMPv2-CONF DEFINITIONS ::= BEGIN + +IMPORTS ObjectName, NotificationName, ObjectSyntax + FROM SNMPv2-SMI; + +-- definitions for conformance groups + +OBJECT-GROUP MACRO ::= +BEGIN + TYPE NOTATION ::= + ObjectsPart + "STATUS" Status + "DESCRIPTION" Text + ReferPart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + ObjectsPart ::= + "OBJECTS" "{" Objects "}" + Objects ::= + Object + | Objects "," Object + Object ::= + value(ObjectName) + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + -- a character string as defined in [2] + Text ::= value(IA5String) +END + +-- more definitions for conformance groups + +NOTIFICATION-GROUP MACRO ::= +BEGIN + TYPE NOTATION ::= + NotificationsPart + "STATUS" Status + "DESCRIPTION" Text + ReferPart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + NotificationsPart ::= + "NOTIFICATIONS" "{" Notifications "}" + Notifications ::= + Notification + | Notifications "," Notification + Notification ::= + value(NotificationName) + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + -- a character string as defined in [2] + Text ::= value(IA5String) +END + +-- definitions for compliance statements + +MODULE-COMPLIANCE MACRO ::= +BEGIN + TYPE NOTATION ::= + "STATUS" Status + "DESCRIPTION" Text + ReferPart + ModulePart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + ModulePart ::= + Modules + Modules ::= + Module + | Modules Module + Module ::= + -- name of module -- + "MODULE" ModuleName + MandatoryPart + CompliancePart + + ModuleName ::= + -- identifier must start with uppercase letter + identifier ModuleIdentifier + -- must not be empty unless contained + -- in MIB Module + | empty + ModuleIdentifier ::= + value(OBJECT IDENTIFIER) + | empty + + MandatoryPart ::= + "MANDATORY-GROUPS" "{" Groups "}" + | empty + + Groups ::= + Group + | Groups "," Group + Group ::= + value(OBJECT IDENTIFIER) + + CompliancePart ::= + Compliances + | empty + + Compliances ::= + Compliance + | Compliances Compliance + Compliance ::= + ComplianceGroup + | Object + + ComplianceGroup ::= + "GROUP" value(OBJECT IDENTIFIER) + "DESCRIPTION" Text + + Object ::= + "OBJECT" value(ObjectName) + SyntaxPart + WriteSyntaxPart + AccessPart + "DESCRIPTION" Text + + -- must be a refinement for object's SYNTAX clause + SyntaxPart ::= "SYNTAX" Syntax + | empty + + -- must be a refinement for object's SYNTAX clause + WriteSyntaxPart ::= "WRITE-SYNTAX" Syntax + | empty + + Syntax ::= -- Must be one of the following: + -- a base type (or its refinement), + -- a textual convention (or its refinement), or + -- a BITS pseudo-type + type + | "BITS" "{" NamedBits "}" + + NamedBits ::= NamedBit + | NamedBits "," NamedBit + + NamedBit ::= identifier "(" number ")" -- number is nonnegative + + AccessPart ::= + "MIN-ACCESS" Access + | empty + Access ::= + "not-accessible" + | "accessible-for-notify" + | "read-only" + | "read-write" + | "read-create" + + -- a character string as defined in [2] + Text ::= value(IA5String) +END + +-- definitions for capabilities statements + +AGENT-CAPABILITIES MACRO ::= +BEGIN + TYPE NOTATION ::= + "PRODUCT-RELEASE" Text + "STATUS" Status + "DESCRIPTION" Text + ReferPart + ModulePart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + Status ::= + "current" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + ModulePart ::= + Modules + | empty + Modules ::= + Module + | Modules Module + Module ::= + -- name of module -- + "SUPPORTS" ModuleName + "INCLUDES" "{" Groups "}" + VariationPart + + ModuleName ::= + -- identifier must start with uppercase letter + identifier ModuleIdentifier + ModuleIdentifier ::= + value(OBJECT IDENTIFIER) + | empty + + Groups ::= + Group + | Groups "," Group + Group ::= + value(OBJECT IDENTIFIER) + + VariationPart ::= + Variations + | empty + Variations ::= + Variation + | Variations Variation + + Variation ::= + ObjectVariation + | NotificationVariation + + NotificationVariation ::= + "VARIATION" value(NotificationName) + AccessPart + "DESCRIPTION" Text + + ObjectVariation ::= + "VARIATION" value(ObjectName) + SyntaxPart + WriteSyntaxPart + AccessPart + CreationPart + DefValPart + "DESCRIPTION" Text + + -- must be a refinement for object's SYNTAX clause + SyntaxPart ::= "SYNTAX" Syntax + | empty + + WriteSyntaxPart ::= "WRITE-SYNTAX" Syntax + | empty + + Syntax ::= -- Must be one of the following: + -- a base type (or its refinement), + -- a textual convention (or its refinement), or + -- a BITS pseudo-type + type + | "BITS" "{" NamedBits "}" + + NamedBits ::= NamedBit + | NamedBits "," NamedBit + + NamedBit ::= identifier "(" number ")" -- number is nonnegative + + AccessPart ::= + "ACCESS" Access + | empty + + Access ::= + "not-implemented" + -- only "not-implemented" for notifications + | "accessible-for-notify" + | "read-only" + | "read-write" + | "read-create" + -- following is for backward-compatibility only + | "write-only" + + CreationPart ::= + "CREATION-REQUIRES" "{" Cells "}" + | empty + Cells ::= + Cell + | Cells "," Cell + Cell ::= + value(ObjectName) + + DefValPart ::= "DEFVAL" "{" Defvalue "}" + | empty + + Defvalue ::= -- must be valid for the object's syntax + -- in this macro's SYNTAX clause, if present, + -- or if not, in object's OBJECT-TYPE macro + value(ObjectSyntax) + | "{" BitsValue "}" + + BitsValue ::= BitNames + | empty + + BitNames ::= BitName + | BitNames "," BitName + + BitName ::= identifier + + -- a character string as defined in [2] + Text ::= value(IA5String) +END + +END diff --git a/mibs/ietf/SNMPv2-MIB b/mibs/ietf/SNMPv2-MIB new file mode 100644 index 0000000..9494e42 --- /dev/null +++ b/mibs/ietf/SNMPv2-MIB @@ -0,0 +1,903 @@ +SNMPv2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + TimeTicks, Counter32, snmpModules, mib-2 + FROM SNMPv2-SMI + DisplayString, TestAndIncr, TimeStamp + + + + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF; + +snmpMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + DESCRIPTION + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices. + " + REVISION "200210160000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 3418." + REVISION "199511090000Z" + DESCRIPTION + + + + "This revision of this MIB module was published as + RFC 1907." + REVISION "199304010000Z" + DESCRIPTION + "The initial revision of this MIB module was published + as RFC 1450." + ::= { snmpModules 1 } + +snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 } + +-- ::= { snmpMIBObjects 1 } this OID is obsolete +-- ::= { snmpMIBObjects 2 } this OID is obsolete +-- ::= { snmpMIBObjects 3 } this OID is obsolete + +-- the System group +-- +-- a collection of objects common to all managed systems. + +system OBJECT IDENTIFIER ::= { mib-2 1 } + +sysDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the entity. This value should + include the full name and version identification of + the system's hardware type, software operating-system, + and networking software." + ::= { system 1 } + +sysObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the + network management subsystem contained in the entity. + This value is allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides an easy and + unambiguous means for determining `what kind of box' is + being managed. For example, if vendor `Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'." + ::= { system 2 } + +sysUpTime OBJECT-TYPE + + + + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized." + ::= { system 3 } + +sysContact OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual identification of the contact person for + this managed node, together with information on how + to contact this person. If no contact information is + known, the value is the zero-length string." + ::= { system 4 } + +sysName OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administratively-assigned name for this managed + node. By convention, this is the node's fully-qualified + domain name. If the name is unknown, the value is + the zero-length string." + ::= { system 5 } + +sysLocation OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string." + ::= { system 6 } + +sysServices OBJECT-TYPE + SYNTAX INTEGER (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the set of services that this + entity may potentially offer. The value is a sum. + + + + This sum initially takes the value zero. Then, for + each layer, L, in the range 1 through 7, that this node + performs transactions for, 2 raised to (L - 1) is added + to the sum. For example, a node which performs only + routing functions would have a value of 4 (2^(3-1)). + In contrast, a node which is a host offering application + services would have a value of 72 (2^(4-1) + 2^(7-1)). + Note that in the context of the Internet suite of + protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + + For systems including OSI protocols, layers 5 and 6 + may also be counted." + ::= { system 7 } + +-- object resource information +-- +-- a collection of objects which describe the SNMP entity's +-- (statically and dynamically configurable) support of +-- various MIB modules. + +sysORLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID." + ::= { system 8 } + +sysORTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysOREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows." + ::= { system 9 } + + + +sysOREntry OBJECT-TYPE + SYNTAX SysOREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the sysORTable." + INDEX { sysORIndex } + ::= { sysORTable 1 } + +SysOREntry ::= SEQUENCE { + sysORIndex INTEGER, + sysORID OBJECT IDENTIFIER, + sysORDescr DisplayString, + sysORUpTime TimeStamp +} + +sysORIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable." + ::= { sysOREntry 1 } + +sysORID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder." + ::= { sysOREntry 2 } + +sysORDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the capabilities identified + by the corresponding instance of sysORID." + ::= { sysOREntry 3 } + +sysORUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this conceptual + row was last instantiated." + ::= { sysOREntry 4 } + + +-- the SNMP group +-- +-- a collection of objects providing basic instrumentation and +-- control of an SNMP entity. + +snmp OBJECT IDENTIFIER ::= { mib-2 11 } + +snmpInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages delivered to the SNMP + entity from the transport service." + ::= { snmp 1 } + +snmpInBadVersions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version." + ::= { snmp 3 } + +snmpInBadCommunityNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value." + ::= { snmp 5 } + +snmpInASNParseErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages." + ::= { snmp 6 } + +snmpEnableAuthenTraps OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the SNMP entity is permitted to + generate authenticationFailure traps. The value of this + object overrides any configuration information; as such, + it provides a means whereby all authenticationFailure + traps may be disabled. + + Note that it is strongly recommended that this object + be stored in non-volatile memory so that it remains + constant across re-initializations of the network + management system." + + + + ::= { snmp 30 } + +snmpSilentDrops OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Confirmed Class PDUs (such as + GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the size of a reply + containing an alternate Response Class PDU (such as a + Response-PDU) with an empty variable-bindings field + was greater than either a local constraint or the + maximum message size associated with the originator of + the request." + ::= { snmp 31 } + +snmpProxyDrops OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Confirmed Class PDUs + (such as GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the transmission of + the (possibly translated) message to a proxy target + failed in a manner (other than a time-out) such that + no Response Class PDU (such as a Response-PDU) could + be returned." + ::= { snmp 32 } + +-- information for notifications +-- +-- a collection of objects which allow the SNMP entity, when +-- supporting a notification originator application, +-- to be configured to generate SNMPv2-Trap-PDUs. + +snmpTrap OBJECT IDENTIFIER ::= { snmpMIBObjects 4 } + +snmpTrapOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + + + + "The authoritative identification of the notification + currently being sent. This variable occurs as + the second varbind in every SNMPv2-Trap-PDU and + InformRequest-PDU." + ::= { snmpTrap 1 } + +-- ::= { snmpTrap 2 } this OID is obsolete + +snmpTrapEnterprise OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind." + ::= { snmpTrap 3 } + +-- ::= { snmpTrap 4 } this OID is obsolete + + +-- well-known traps + +snmpTraps OBJECT IDENTIFIER ::= { snmpMIBObjects 5 } + +coldStart NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered." + ::= { snmpTraps 1 } + +warmStart NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered." + ::= { snmpTraps 2 } + +-- Note the linkDown NOTIFICATION-TYPE ::= { snmpTraps 3 } +-- and the linkUp NOTIFICATION-TYPE ::= { snmpTraps 4 } +-- are defined in RFC 2863 [RFC2863] + + + +authenticationFailure NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated." + ::= { snmpTraps 5 } + +-- Note the egpNeighborLoss notification is defined +-- as { snmpTraps 6 } in RFC 1213 + +-- the set group +-- +-- a collection of objects which allow several cooperating +-- command generator applications to coordinate their use of the +-- set operation. + +snmpSet OBJECT IDENTIFIER ::= { snmpMIBObjects 6 } + +snmpSetSerialNo OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP set operation. + + This object is used for coarse-grain coordination. + To achieve fine-grain coordination, one or more similar + objects might be defined within each MIB group, as + appropriate." + ::= { snmpSet 1 } + +-- conformance information + +snmpMIBConformance + OBJECT IDENTIFIER ::= { snmpMIB 2 } + +snmpMIBCompliances + OBJECT IDENTIFIER ::= { snmpMIBConformance 1 } +snmpMIBGroups OBJECT IDENTIFIER ::= { snmpMIBConformance 2 } + +-- compliance statements + + + + +-- ::= { snmpMIBCompliances 1 } this OID is obsolete +snmpBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2." + MODULE -- this module + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMPv2 entities which + support community-based authentication." + + ::= { snmpMIBCompliances 2 } + +snmpBasicComplianceRev2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + implement this MIB module." + MODULE -- this module + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMP entities which + support community-based authentication." + + GROUP snmpWarmStartNotificationGroup + DESCRIPTION + "This group is mandatory for an SNMP entity which + supports command responder applications, and is + able to reinitialize itself such that its + configuration is unaltered." + + ::= { snmpMIBCompliances 3 } + +-- units of conformance + +-- ::= { snmpMIBGroups 1 } this OID is obsolete +-- ::= { snmpMIBGroups 2 } this OID is obsolete +-- ::= { snmpMIBGroups 3 } this OID is obsolete + + + +-- ::= { snmpMIBGroups 4 } this OID is obsolete + +snmpGroup OBJECT-GROUP + OBJECTS { snmpInPkts, + snmpInBadVersions, + snmpInASNParseErrs, + snmpSilentDrops, + snmpProxyDrops, + snmpEnableAuthenTraps } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + and control of an SNMP entity." + ::= { snmpMIBGroups 8 } + +snmpCommunityGroup OBJECT-GROUP + OBJECTS { snmpInBadCommunityNames, + snmpInBadCommunityUses } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication." + ::= { snmpMIBGroups 9 } + +snmpSetGroup OBJECT-GROUP + OBJECTS { snmpSetSerialNo } + STATUS current + DESCRIPTION + "A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the set operation." + ::= { snmpMIBGroups 5 } + +systemGroup OBJECT-GROUP + OBJECTS { sysDescr, sysObjectID, sysUpTime, + sysContact, sysName, sysLocation, + sysServices, + sysORLastChange, sysORID, + sysORUpTime, sysORDescr } + STATUS current + DESCRIPTION + "The system group defines objects which are common to all + managed systems." + ::= { snmpMIBGroups 6 } + +snmpBasicNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { coldStart, authenticationFailure } + + + + STATUS current + DESCRIPTION + "The basic notifications implemented by an SNMP entity + supporting command responder applications." + ::= { snmpMIBGroups 7 } + +snmpWarmStartNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { warmStart } + STATUS current + DESCRIPTION + "An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered." + ::= { snmpMIBGroups 11 } + +snmpNotificationGroup OBJECT-GROUP + OBJECTS { snmpTrapOID, snmpTrapEnterprise } + STATUS current + DESCRIPTION + "These objects are required for entities + which support notification originator applications." + ::= { snmpMIBGroups 12 } + +-- definitions in RFC 1213 made obsolete by the inclusion of a +-- subset of the snmp group in this MIB + +snmpOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service." + ::= { snmp 2 } + +-- { snmp 7 } is not used + +snmpInTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `tooBig'." + ::= { snmp 8 } + + + +snmpInNoSuchNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `noSuchName'." + ::= { snmp 9 } + +snmpInBadValues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `badValue'." + ::= { snmp 10 } + +snmpInReadOnlys OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number valid SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `readOnly'. It should + be noted that it is a protocol error to generate an + SNMP PDU which contains the value `readOnly' in the + error-status field, as such this object is provided + as a means of detecting incorrect implementations of + the SNMP." + ::= { snmp 11 } + +snmpInGenErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `genErr'." + ::= { snmp 12 } + +snmpInTotalReqVars OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of MIB objects which have been + retrieved successfully by the SNMP protocol entity + as the result of receiving valid SNMP Get-Request + and Get-Next PDUs." + ::= { snmp 13 } + +snmpInTotalSetVars OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of MIB objects which have been + altered successfully by the SNMP protocol entity as + the result of receiving valid SNMP Set-Request PDUs." + ::= { snmp 14 } + +snmpInGetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity." + ::= { snmp 15 } + +snmpInGetNexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity." + ::= { snmp 16 } + +snmpInSetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity." + ::= { snmp 17 } + + + +snmpInGetResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity." + ::= { snmp 18 } + +snmpInTraps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity." + ::= { snmp 19 } + +snmpOutTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `tooBig.'" + ::= { snmp 20 } + +snmpOutNoSuchNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status was `noSuchName'." + ::= { snmp 21 } + +snmpOutBadValues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `badValue'." + ::= { snmp 22 } + + + +-- { snmp 23 } is not used + +snmpOutGenErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `genErr'." + ::= { snmp 24 } + +snmpOutGetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 25 } + +snmpOutGetNexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 26 } + +snmpOutSetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 27 } + +snmpOutGetResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 28 } + + + + +snmpOutTraps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 29 } + +snmpObsoleteGroup OBJECT-GROUP + OBJECTS { snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames, + snmpInBadValues, snmpInReadOnlys, snmpInGenErrs, + snmpInTotalReqVars, snmpInTotalSetVars, + snmpInGetRequests, snmpInGetNexts, snmpInSetRequests, + snmpInGetResponses, snmpInTraps, snmpOutTooBigs, + snmpOutNoSuchNames, snmpOutBadValues, + snmpOutGenErrs, snmpOutGetRequests, snmpOutGetNexts, + snmpOutSetRequests, snmpOutGetResponses, snmpOutTraps + } + STATUS obsolete + DESCRIPTION + "A collection of objects from RFC 1213 made obsolete + by this MIB module." + ::= { snmpMIBGroups 10 } + +END diff --git a/mibs/ietf/SNMPv2-SMI b/mibs/ietf/SNMPv2-SMI new file mode 100644 index 0000000..2132646 --- /dev/null +++ b/mibs/ietf/SNMPv2-SMI @@ -0,0 +1,352 @@ +SNMPv2-SMI DEFINITIONS ::= BEGIN + + +-- the path to the root + +org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1 +dod OBJECT IDENTIFIER ::= { org 6 } +internet OBJECT IDENTIFIER ::= { dod 1 } + +directory OBJECT IDENTIFIER ::= { internet 1 } + +mgmt OBJECT IDENTIFIER ::= { internet 2 } +mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } +transmission OBJECT IDENTIFIER ::= { mib-2 10 } + +experimental OBJECT IDENTIFIER ::= { internet 3 } + +private OBJECT IDENTIFIER ::= { internet 4 } +enterprises OBJECT IDENTIFIER ::= { private 1 } + +security OBJECT IDENTIFIER ::= { internet 5 } + +snmpV2 OBJECT IDENTIFIER ::= { internet 6 } + +-- transport domains +snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 } + +-- transport proxies +snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 } + +-- module identities +snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 } + +-- Extended UTCTime, to allow dates with four-digit years +-- (Note that this definition of ExtUTCTime is not to be IMPORTed +-- by MIB modules.) +ExtUTCTime ::= OCTET STRING(SIZE(11 | 13)) + -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ + -- where: YY - last two digits of year (only years + -- between 1900-1999) + -- YYYY - last four digits of the year (any year) + -- MM - month (01 through 12) + -- DD - day of month (01 through 31) + -- HH - hours (00 through 23) + -- MM - minutes (00 through 59) + -- Z - denotes GMT (the ASCII character Z) + -- + -- For example, "9502192015Z" and "199502192015Z" represent + -- 8:15pm GMT on 19 February 1995. Years after 1999 must use + -- the four digit year format. Years 1900-1999 may use the + -- two or four digit format. + +-- definitions for information modules + +MODULE-IDENTITY MACRO ::= +BEGIN + TYPE NOTATION ::= + "LAST-UPDATED" value(Update ExtUTCTime) + "ORGANIZATION" Text + "CONTACT-INFO" Text + "DESCRIPTION" Text + RevisionPart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + RevisionPart ::= + Revisions + | empty + Revisions ::= + Revision + | Revisions Revision + Revision ::= + "REVISION" value(Update ExtUTCTime) + "DESCRIPTION" Text + + -- a character string as defined in section 3.1.1 + Text ::= value(IA5String) +END + + +OBJECT-IDENTITY MACRO ::= +BEGIN + TYPE NOTATION ::= + "STATUS" Status + "DESCRIPTION" Text + ReferPart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + -- a character string as defined in section 3.1.1 + Text ::= value(IA5String) +END + + +-- names of objects +-- (Note that these definitions of ObjectName and NotificationName +-- are not to be IMPORTed by MIB modules.) + +ObjectName ::= + OBJECT IDENTIFIER + +NotificationName ::= + OBJECT IDENTIFIER + +-- syntax of objects + +-- the "base types" defined here are: +-- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER +-- 8 application-defined types: Integer32, IpAddress, Counter32, +-- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64 + +ObjectSyntax ::= + CHOICE { + simple + SimpleSyntax, + + -- note that SEQUENCEs for conceptual tables and + -- rows are not mentioned here... + + application-wide + ApplicationSyntax + } + +-- built-in ASN.1 types + +SimpleSyntax ::= + CHOICE { + -- INTEGERs with a more restrictive range + -- may also be used + integer-value -- includes Integer32 + INTEGER (-2147483648..2147483647), + + -- OCTET STRINGs with a more restrictive size + -- may also be used + string-value + OCTET STRING (SIZE (0..65535)), + + objectID-value + OBJECT IDENTIFIER + } + +-- indistinguishable from INTEGER, but never needs more than +-- 32-bits for a two's complement representation +Integer32 ::= + INTEGER (-2147483648..2147483647) + + +-- application-wide types + +ApplicationSyntax ::= + CHOICE { + ipAddress-value + IpAddress, + + counter-value + Counter32, + + timeticks-value + TimeTicks, + + arbitrary-value + Opaque, + + big-counter-value + Counter64, + + unsigned-integer-value -- includes Gauge32 + Unsigned32 + } + +-- in network-byte order +-- (this is a tagged type for historical reasons) +IpAddress ::= + [APPLICATION 0] + IMPLICIT OCTET STRING (SIZE (4)) + +-- this wraps +Counter32 ::= + [APPLICATION 1] + IMPLICIT INTEGER (0..4294967295) + +-- this doesn't wrap +Gauge32 ::= + [APPLICATION 2] + IMPLICIT INTEGER (0..4294967295) + +-- an unsigned 32-bit quantity +-- indistinguishable from Gauge32 +Unsigned32 ::= + [APPLICATION 2] + IMPLICIT INTEGER (0..4294967295) + +-- hundredths of seconds since an epoch +TimeTicks ::= + [APPLICATION 3] + IMPLICIT INTEGER (0..4294967295) + +-- for backward-compatibility only +Opaque ::= + [APPLICATION 4] + IMPLICIT OCTET STRING + +-- for counters that wrap in less than one hour with only 32 bits +Counter64 ::= + [APPLICATION 6] + IMPLICIT INTEGER (0..18446744073709551615) + + +-- definition for objects + +OBJECT-TYPE MACRO ::= +BEGIN + TYPE NOTATION ::= + "SYNTAX" Syntax + UnitsPart + "MAX-ACCESS" Access + "STATUS" Status + "DESCRIPTION" Text + ReferPart + IndexPart + DefValPart + + VALUE NOTATION ::= + value(VALUE ObjectName) + + Syntax ::= -- Must be one of the following: + -- a base type (or its refinement), + -- a textual convention (or its refinement), or + -- a BITS pseudo-type + type + | "BITS" "{" NamedBits "}" + + NamedBits ::= NamedBit + | NamedBits "," NamedBit + + NamedBit ::= identifier "(" number ")" -- number is nonnegative + + UnitsPart ::= + "UNITS" Text + | empty + + Access ::= + "not-accessible" + | "accessible-for-notify" + | "read-only" + | "read-write" + | "read-create" + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + IndexPart ::= + "INDEX" "{" IndexTypes "}" + | "AUGMENTS" "{" Entry "}" + | empty + IndexTypes ::= + IndexType + | IndexTypes "," IndexType + IndexType ::= + "IMPLIED" Index + | Index + Index ::= + -- use the SYNTAX value of the + -- correspondent OBJECT-TYPE invocation + value(ObjectName) + Entry ::= + -- use the INDEX value of the + -- correspondent OBJECT-TYPE invocation + value(ObjectName) + + DefValPart ::= "DEFVAL" "{" Defvalue "}" + | empty + + Defvalue ::= -- must be valid for the type specified in + -- SYNTAX clause of same OBJECT-TYPE macro + value(ObjectSyntax) + | "{" BitsValue "}" + + BitsValue ::= BitNames + | empty + + BitNames ::= BitName + | BitNames "," BitName + + BitName ::= identifier + + -- a character string as defined in section 3.1.1 + Text ::= value(IA5String) +END + + +-- definitions for notifications + +NOTIFICATION-TYPE MACRO ::= +BEGIN + TYPE NOTATION ::= + ObjectsPart + "STATUS" Status + "DESCRIPTION" Text + ReferPart + + VALUE NOTATION ::= + value(VALUE NotificationName) + + ObjectsPart ::= + "OBJECTS" "{" Objects "}" + | empty + Objects ::= + Object + | Objects "," Object + Object ::= + value(ObjectName) + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + -- a character string as defined in section 3.1.1 + Text ::= value(IA5String) +END + +-- definitions of administrative identifiers + +zeroDotZero OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A value used for null identifiers." + ::= { 0 0 } + +END diff --git a/mibs/ietf/SNMPv2-TC b/mibs/ietf/SNMPv2-TC new file mode 100644 index 0000000..a68f969 --- /dev/null +++ b/mibs/ietf/SNMPv2-TC @@ -0,0 +1,786 @@ +SNMPv2-TC DEFINITIONS ::= BEGIN + +IMPORTS + TimeTicks FROM SNMPv2-SMI; + + +-- definition of textual conventions + +TEXTUAL-CONVENTION MACRO ::= +BEGIN + TYPE NOTATION ::= + DisplayPart + "STATUS" Status + "DESCRIPTION" Text + ReferPart + "SYNTAX" Syntax + + VALUE NOTATION ::= + value(VALUE Syntax) -- adapted ASN.1 + + DisplayPart ::= + "DISPLAY-HINT" Text + | empty + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + -- a character string as defined in [2] + Text ::= value(IA5String) + + Syntax ::= -- Must be one of the following: + -- a base type (or its refinement), or + -- a BITS pseudo-type + type + | "BITS" "{" NamedBits "}" + + NamedBits ::= NamedBit + | NamedBits "," NamedBit + + NamedBit ::= identifier "(" number ")" -- number is nonnegative + +END + + + + +DisplayString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "Represents textual information taken from the NVT ASCII + character set, as defined in pages 4, 10-11 of RFC 854. + + To summarize RFC 854, the NVT ASCII repertoire specifies: + + - the use of character codes 0-127 (decimal) + + - the graphics characters (32-126) are interpreted as + US ASCII + + - NUL, LF, CR, BEL, BS, HT, VT and FF have the special + meanings specified in RFC 854 + + - the other 25 codes have no standard interpretation + + - the sequence 'CR LF' means newline + + - the sequence 'CR NUL' means carriage-return + + - an 'LF' not preceded by a 'CR' means moving to the + same column on the next line. + + - the sequence 'CR x' for any x other than LF or NUL is + illegal. (Note that this also means that a string may + end with either 'CR LF' or 'CR NUL', but not with CR.) + + Any object defined using this syntax may not exceed 255 + characters in length." + SYNTAX OCTET STRING (SIZE (0..255)) + +PhysAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "Represents media- or physical-level addresses." + SYNTAX OCTET STRING + + +MacAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "Represents an 802 MAC address represented 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." + SYNTAX OCTET STRING (SIZE (6)) + +TruthValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a boolean value." + SYNTAX INTEGER { true(1), false(2) } + +TestAndIncr ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents integer-valued information used for atomic + operations. When the management protocol is used to specify + that an object instance having this syntax is to be + modified, the new value supplied via the management protocol + must precisely match the value presently held by the + instance. If not, the management protocol set operation + fails with an error of `inconsistentValue'. Otherwise, if + the current value is the maximum value of 2^31-1 (2147483647 + decimal), then the value held by the instance is wrapped to + zero; otherwise, the value held by the instance is + incremented by one. (Note that regardless of whether the + management protocol set operation succeeds, the variable- + binding in the request and response PDUs are identical.) + + The value of the ACCESS clause for objects having this + syntax is either `read-write' or `read-create'. When an + instance of a columnar object having this syntax is created, + any value may be supplied via the management protocol. + + When the network management portion of the system is re- + initialized, the value of every object instance having this + syntax must either be incremented from its value prior to + the re-initialization, or (if the value prior to the re- + initialization is unknown) be set to a pseudo-randomly + generated value." + SYNTAX INTEGER (0..2147483647) + +AutonomousType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents an independently extensible type identification + value. It may, for example, indicate a particular sub-tree + with further MIB definitions, or define a particular type of + protocol or hardware." + SYNTAX OBJECT IDENTIFIER + + +InstancePointer ::= TEXTUAL-CONVENTION + STATUS obsolete + DESCRIPTION + "A pointer to either a specific instance of a MIB object or + a conceptual row of a MIB table in the managed device. In + the latter case, by convention, it is the name of the + particular instance of the first accessible columnar object + in the conceptual row. + + The two uses of this textual convention are replaced by + VariablePointer and RowPointer, respectively." + SYNTAX OBJECT IDENTIFIER + + +VariablePointer ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A pointer to a specific object instance. For example, + sysContact.0 or ifInOctets.3." + SYNTAX OBJECT IDENTIFIER + + +RowPointer ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a pointer to a conceptual row. The value is the + name of the instance of the first accessible columnar object + in the conceptual row. + + For example, ifIndex.3 would point to the 3rd row in the + ifTable (note that if ifIndex were not-accessible, then + ifDescr.3 would be used instead)." + SYNTAX OBJECT IDENTIFIER + +RowStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The RowStatus textual convention is used to manage the + creation and deletion of conceptual rows, and is used as the + value of the SYNTAX clause for the status column of a + conceptual row (as described in Section 7.7.1 of [2].) + The status column has six defined values: + + - `active', which indicates that the conceptual row is + available for use by the managed device; + + - `notInService', which indicates that the conceptual + row exists in the agent, but is unavailable for use by + the managed device (see NOTE below); 'notInService' has + no implication regarding the internal consistency of + the row, availability of resources, or consistency with + the current state of the managed device; + + - `notReady', which indicates that the conceptual row + exists in the agent, but is missing information + necessary in order to be available for use by the + managed device (i.e., one or more required columns in + the conceptual row have not been instanciated); + + - `createAndGo', which is supplied by a management + station wishing to create a new instance of a + conceptual row and to have its status automatically set + to active, making it available for use by the managed + device; + + - `createAndWait', which is supplied by a management + station wishing to create a new instance of a + conceptual row (but not make it available for use by + the managed device); and, + + - `destroy', which is supplied by a management station + wishing to delete all of the instances associated with + an existing conceptual row. + + Whereas five of the six values (all except `notReady') may + be specified in a management protocol set operation, only + three values will be returned in response to a management + protocol retrieval operation: `notReady', `notInService' or + `active'. That is, when queried, an existing conceptual row + has only three states: it is either available for use by + the managed device (the status column has value `active'); + it is not available for use by the managed device, though + the agent has sufficient information to attempt to make it + so (the status column has value `notInService'); or, it is + not available for use by the managed device, and an attempt + to make it so would fail because the agent has insufficient + information (the state column has value `notReady'). + + NOTE WELL + + This textual convention may be used for a MIB table, + irrespective of whether the values of that table's + conceptual rows are able to be modified while it is + active, or whether its conceptual rows must be taken + out of service in order to be modified. That is, it is + the responsibility of the DESCRIPTION clause of the + status column to specify whether the status column must + not be `active' in order for the value of some other + column of the same conceptual row to be modified. If + such a specification is made, affected columns may be + changed by an SNMP set PDU if the RowStatus would not + be equal to `active' either immediately before or after + processing the PDU. In other words, if the PDU also + contained a varbind that would change the RowStatus + value, the column in question may be changed if the + RowStatus was not equal to `active' as the PDU was + received, or if the varbind sets the status to a value + other than 'active'. + + + Also note that whenever any elements of a row exist, the + RowStatus column must also exist. + + To summarize the effect of having a conceptual row with a + status column having a SYNTAX clause value of RowStatus, + consider the following state diagram: + + + STATE + +--------------+-----------+-------------+------------- + | A | B | C | D + | |status col.|status column| + |status column | is | is |status column + ACTION |does not exist| notReady | notInService| is active +--------------+--------------+-----------+-------------+------------- +set status |noError ->D|inconsist- |inconsistent-|inconsistent- +column to | or | entValue| Value| Value +createAndGo |inconsistent- | | | + | Value| | | +--------------+--------------+-----------+-------------+------------- +set status |noError see 1|inconsist- |inconsistent-|inconsistent- +column to | or | entValue| Value| Value +createAndWait |wrongValue | | | +--------------+--------------+-----------+-------------+------------- +set status |inconsistent- |inconsist- |noError |noError +column to | Value| entValue| | +active | | | | + | | or | | + | | | | + | |see 2 ->D|see 8 ->D| ->D +--------------+--------------+-----------+-------------+------------- +set status |inconsistent- |inconsist- |noError |noError ->C +column to | Value| entValue| | +notInService | | | | + | | or | | or + | | | | + | |see 3 ->C| ->C|see 6 +--------------+--------------+-----------+-------------+------------- +set status |noError |noError |noError |noError ->A +column to | | | | or +destroy | ->A| ->A| ->A|see 7 +--------------+--------------+-----------+-------------+------------- +set any other |see 4 |noError |noError |see 5 +column to some| | | | +value | | see 1| ->C| ->D +--------------+--------------+-----------+-------------+------------- + + (1) goto B or C, depending on information available to the + agent. + + (2) if other variable bindings included in the same PDU, + provide values for all columns which are missing but + required, and all columns have acceptable values, then + return noError and goto D. + + (3) if other variable bindings included in the same PDU, + provide legal values for all columns which are missing but + required, then return noError and goto C. + + (4) at the discretion of the agent, the return value may be + either: + + inconsistentName: because the agent does not choose to + create such an instance when the corresponding + RowStatus instance does not exist, or + + inconsistentValue: if the supplied value is + inconsistent with the state of some other MIB object's + value, or + + noError: because the agent chooses to create the + instance. + + If noError is returned, then the instance of the status + column must also be created, and the new state is B or C, + depending on the information available to the agent. If + inconsistentName or inconsistentValue is returned, the row + remains in state A. + + (5) depending on the MIB definition for the column/table, + either noError or inconsistentValue may be returned. + + (6) the return value can indicate one of the following + errors: + + wrongValue: because the agent does not support + notInService (e.g., an agent which does not support + createAndWait), or + + inconsistentValue: because the agent is unable to take + the row out of service at this time, perhaps because it + is in use and cannot be de-activated. + + (7) the return value can indicate the following error: + + inconsistentValue: because the agent is unable to + remove the row at this time, perhaps because it is in + use and cannot be de-activated. + + (8) the transition to D can fail, e.g., if the values of the + conceptual row are inconsistent, then the error code would + be inconsistentValue. + + NOTE: Other processing of (this and other varbinds of) the + set request may result in a response other than noError + being returned, e.g., wrongValue, noCreation, etc. + + + Conceptual Row Creation + + There are four potential interactions when creating a + conceptual row: selecting an instance-identifier which is + not in use; creating the conceptual row; initializing any + objects for which the agent does not supply a default; and, + making the conceptual row available for use by the managed + device. + + Interaction 1: Selecting an Instance-Identifier + + The algorithm used to select an instance-identifier varies + for each conceptual row. In some cases, the instance- + identifier is semantically significant, e.g., the + destination address of a route, and a management station + selects the instance-identifier according to the semantics. + + In other cases, the instance-identifier is used solely to + distinguish conceptual rows, and a management station + without specific knowledge of the conceptual row might + examine the instances present in order to determine an + unused instance-identifier. (This approach may be used, but + it is often highly sub-optimal; however, it is also a + questionable practice for a naive management station to + attempt conceptual row creation.) + + Alternately, the MIB module which defines the conceptual row + might provide one or more objects which provide assistance + in determining an unused instance-identifier. For example, + if the conceptual row is indexed by an integer-value, then + an object having an integer-valued SYNTAX clause might be + defined for such a purpose, allowing a management station to + issue a management protocol retrieval operation. In order + to avoid unnecessary collisions between competing management + stations, `adjacent' retrievals of this object should be + different. + + Finally, the management station could select a pseudo-random + number to use as the index. In the event that this index + was already in use and an inconsistentValue was returned in + response to the management protocol set operation, the + management station should simply select a new pseudo-random + number and retry the operation. + + A MIB designer should choose between the two latter + algorithms based on the size of the table (and therefore the + efficiency of each algorithm). For tables in which a large + number of entries are expected, it is recommended that a MIB + object be defined that returns an acceptable index for + creation. For tables with small numbers of entries, it is + recommended that the latter pseudo-random index mechanism be + used. + + Interaction 2: Creating the Conceptual Row + + Once an unused instance-identifier has been selected, the + management station determines if it wishes to create and + activate the conceptual row in one transaction or in a + negotiated set of interactions. + + Interaction 2a: Creating and Activating the Conceptual Row + + The management station must first determine the column + requirements, i.e., it must determine those columns for + which it must or must not provide values. Depending on the + complexity of the table and the management station's + knowledge of the agent's capabilities, this determination + can be made locally by the management station. Alternately, + the management station issues a management protocol get + operation to examine all columns in the conceptual row that + it wishes to create. In response, for each column, there + are three possible outcomes: + + - a value is returned, indicating that some other + management station has already created this conceptual + row. We return to interaction 1. + + - the exception `noSuchInstance' is returned, + indicating that the agent implements the object-type + associated with this column, and that this column in at + least one conceptual row would be accessible in the MIB + view used by the retrieval were it to exist. For those + columns to which the agent provides read-create access, + the `noSuchInstance' exception tells the management + station that it should supply a value for this column + when the conceptual row is to be created. + + - the exception `noSuchObject' is returned, indicating + that the agent does not implement the object-type + associated with this column or that there is no + conceptual row for which this column would be + accessible in the MIB view used by the retrieval. As + such, the management station can not issue any + management protocol set operations to create an + instance of this column. + + Once the column requirements have been determined, a + management protocol set operation is accordingly issued. + This operation also sets the new instance of the status + column to `createAndGo'. + + When the agent processes the set operation, it verifies that + it has sufficient information to make the conceptual row + available for use by the managed device. The information + available to the agent is provided by two sources: the + management protocol set operation which creates the + conceptual row, and, implementation-specific defaults + supplied by the agent (note that an agent must provide + implementation-specific defaults for at least those objects + which it implements as read-only). If there is sufficient + information available, then the conceptual row is created, a + `noError' response is returned, the status column is set to + `active', and no further interactions are necessary (i.e., + interactions 3 and 4 are skipped). If there is insufficient + information, then the conceptual row is not created, and the + set operation fails with an error of `inconsistentValue'. + On this error, the management station can issue a management + protocol retrieval operation to determine if this was + because it failed to specify a value for a required column, + or, because the selected instance of the status column + already existed. In the latter case, we return to + interaction 1. In the former case, the management station + can re-issue the set operation with the additional + information, or begin interaction 2 again using + `createAndWait' in order to negotiate creation of the + conceptual row. + + NOTE WELL + + Regardless of the method used to determine the column + requirements, it is possible that the management + station might deem a column necessary when, in fact, + the agent will not allow that particular columnar + instance to be created or written. In this case, the + management protocol set operation will fail with an + error such as `noCreation' or `notWritable'. In this + case, the management station decides whether it needs + to be able to set a value for that particular columnar + instance. If not, the management station re-issues the + management protocol set operation, but without setting + a value for that particular columnar instance; + otherwise, the management station aborts the row + creation algorithm. + + Interaction 2b: Negotiating the Creation of the Conceptual + Row + + The management station issues a management protocol set + operation which sets the desired instance of the status + column to `createAndWait'. If the agent is unwilling to + process a request of this sort, the set operation fails with + an error of `wrongValue'. (As a consequence, such an agent + must be prepared to accept a single management protocol set + operation, i.e., interaction 2a above, containing all of the + columns indicated by its column requirements.) Otherwise, + the conceptual row is created, a `noError' response is + returned, and the status column is immediately set to either + `notInService' or `notReady', depending on whether it has + sufficient information to (attempt to) make the conceptual + row available for use by the managed device. If there is + sufficient information available, then the status column is + set to `notInService'; otherwise, if there is insufficient + information, then the status column is set to `notReady'. + Regardless, we proceed to interaction 3. + + Interaction 3: Initializing non-defaulted Objects + + The management station must now determine the column + requirements. It issues a management protocol get operation + to examine all columns in the created conceptual row. In + the response, for each column, there are three possible + outcomes: + + - a value is returned, indicating that the agent + implements the object-type associated with this column + and had sufficient information to provide a value. For + those columns to which the agent provides read-create + access (and for which the agent allows their values to + be changed after their creation), a value return tells + the management station that it may issue additional + management protocol set operations, if it desires, in + order to change the value associated with this column. + + - the exception `noSuchInstance' is returned, + indicating that the agent implements the object-type + associated with this column, and that this column in at + least one conceptual row would be accessible in the MIB + view used by the retrieval were it to exist. However, + the agent does not have sufficient information to + provide a value, and until a value is provided, the + conceptual row may not be made available for use by the + managed device. For those columns to which the agent + provides read-create access, the `noSuchInstance' + exception tells the management station that it must + issue additional management protocol set operations, in + order to provide a value associated with this column. + + - the exception `noSuchObject' is returned, indicating + that the agent does not implement the object-type + associated with this column or that there is no + conceptual row for which this column would be + accessible in the MIB view used by the retrieval. As + such, the management station can not issue any + management protocol set operations to create an + instance of this column. + + If the value associated with the status column is + `notReady', then the management station must first deal with + all `noSuchInstance' columns, if any. Having done so, the + value of the status column becomes `notInService', and we + proceed to interaction 4. + + Interaction 4: Making the Conceptual Row Available + + Once the management station is satisfied with the values + associated with the columns of the conceptual row, it issues + a management protocol set operation to set the status column + to `active'. If the agent has sufficient information to + make the conceptual row available for use by the managed + device, the management protocol set operation succeeds (a + `noError' response is returned). Otherwise, the management + protocol set operation fails with an error of + `inconsistentValue'. + + NOTE WELL + + A conceptual row having a status column with value + `notInService' or `notReady' is unavailable to the + managed device. As such, it is possible for the + managed device to create its own instances during the + time between the management protocol set operation + which sets the status column to `createAndWait' and the + management protocol set operation which sets the status + column to `active'. In this case, when the management + protocol set operation is issued to set the status + column to `active', the values held in the agent + supersede those used by the managed device. + + If the management station is prevented from setting the + status column to `active' (e.g., due to management station + or network failure) the conceptual row will be left in the + `notInService' or `notReady' state, consuming resources + indefinitely. The agent must detect conceptual rows that + have been in either state for an abnormally long period of + time and remove them. It is the responsibility of the + DESCRIPTION clause of the status column to indicate what an + abnormally long period of time would be. This period of + time should be long enough to allow for human response time + (including `think time') between the creation of the + conceptual row and the setting of the status to `active'. + In the absence of such information in the DESCRIPTION + clause, it is suggested that this period be approximately 5 + minutes in length. This removal action applies not only to + newly-created rows, but also to previously active rows which + are set to, and left in, the notInService state for a + prolonged period exceeding that which is considered normal + for such a conceptual row. + + Conceptual Row Suspension + + When a conceptual row is `active', the management station + may issue a management protocol set operation which sets the + instance of the status column to `notInService'. If the + agent is unwilling to do so, the set operation fails with an + error of `wrongValue' or `inconsistentValue'. Otherwise, + the conceptual row is taken out of service, and a `noError' + response is returned. It is the responsibility of the + DESCRIPTION clause of the status column to indicate under + what circumstances the status column should be taken out of + service (e.g., in order for the value of some other column + of the same conceptual row to be modified). + + + Conceptual Row Deletion + + For deletion of conceptual rows, a management protocol set + operation is issued which sets the instance of the status + column to `destroy'. This request may be made regardless of + the current value of the status column (e.g., it is possible + to delete conceptual rows which are either `notReady', + `notInService' or `active'.) If the operation succeeds, + then all instances associated with the conceptual row are + immediately removed." + SYNTAX INTEGER { + -- the following two values are states: + -- these values may be read or written + active(1), + notInService(2), + + -- the following value is a state: + -- this value may be read, but not written + notReady(3), + + -- the following three values are + -- actions: these values may be written, + -- but are never read + createAndGo(4), + createAndWait(5), + destroy(6) + } + +TimeStamp ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The value of the sysUpTime object at which a specific + occurrence happened. The specific occurrence must be + defined in the description of any object defined using this + type. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all TimeStamp objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment around to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects." + SYNTAX TimeTicks + + +TimeInterval ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A period of time, measured in units of 0.01 seconds." + SYNTAX INTEGER (0..2147483647) + +DateAndTime ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d" + STATUS current + DESCRIPTION + "A date-time specification. + + 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..13 + 10 11 minutes from UTC 0..59 + + * Notes: + - the value of year is in network-byte order + - daylight saving time in New Zealand is +13 + + 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." + SYNTAX OCTET STRING (SIZE (8 | 11)) + + +StorageType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Describes the memory realization of a conceptual row. A + row which is volatile(2) is lost upon reboot. A row which + is either nonVolatile(3), permanent(4) or readOnly(5), is + backed up by stable storage. A row which is permanent(4) + can be changed but not deleted. A row which is readOnly(5) + cannot be changed nor deleted. + + If the value of an object with this syntax is either + permanent(4) or readOnly(5), it cannot be written. + Conversely, if the value is either other(1), volatile(2) or + nonVolatile(3), it cannot be modified to be permanent(4) or + readOnly(5). (All illegal modifications result in a + 'wrongValue' error.) + + Every usage of this textual convention is required to + specify the columnar objects which a permanent(4) row must + at a minimum allow to be writable." + SYNTAX INTEGER { + other(1), -- eh? + volatile(2), -- e.g., in RAM + nonVolatile(3), -- e.g., in NVRAM + permanent(4), -- e.g., partially in ROM + readOnly(5) -- e.g., completely in ROM + } + +TDomain ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a kind of transport service. + + Some possible values, such as snmpUDPDomain, are defined in + the SNMPv2-TM MIB module. Other possible values are defined + in other MIB modules." + REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906." + SYNTAX OBJECT IDENTIFIER + + +TAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a transport service address. + + A TAddress value is always interpreted within the context of a + TDomain value. Thus, each definition of a TDomain value must + be accompanied by a definition of a textual convention for use + with that TDomain. Some possible textual conventions, such as + SnmpUDPAddress for snmpUDPDomain, are defined in the SNMPv2-TM + MIB module. Other possible textual conventions are defined in + other MIB modules." + REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906." + SYNTAX OCTET STRING (SIZE (1..255)) + + +END diff --git a/mibs/ietf/SNMPv2-TM b/mibs/ietf/SNMPv2-TM new file mode 100644 index 0000000..dadbc4a --- /dev/null +++ b/mibs/ietf/SNMPv2-TM @@ -0,0 +1,194 @@ +SNMPv2-TM DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, + snmpModules, snmpDomains, snmpProxys + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +snmpv2tm MODULE-IDENTITY + LAST-UPDATED "200210160000Z" + ORGANIZATION "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + DESCRIPTION + "The MIB module for SNMP transport mappings. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3417; + see the RFC itself for full legal notices. + " + REVISION "200210160000Z" + DESCRIPTION + "Clarifications, published as RFC 3417." + REVISION "199601010000Z" + DESCRIPTION + "Clarifications, published as RFC 1906." + REVISION "199304010000Z" + DESCRIPTION + "The initial version, published as RFC 1449." + ::= { snmpModules 19 } + +-- SNMP over UDP over IPv4 + +snmpUDPDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP over UDP over IPv4 transport domain. + The corresponding transport address is of type + SnmpUDPAddress." + ::= { snmpDomains 1 } + + + + + + + + +SnmpUDPAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d/2d" + STATUS current + DESCRIPTION + "Represents a UDP over IPv4 address: + + octets contents encoding + 1-4 IP-address network-byte order + 5-6 UDP-port network-byte order + " + SYNTAX OCTET STRING (SIZE (6)) + +-- SNMP over OSI + +snmpCLNSDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP over CLNS transport domain. + The corresponding transport address is of type + SnmpOSIAddress." + ::= { snmpDomains 2 } + +snmpCONSDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP over CONS transport domain. + The corresponding transport address is of type + SnmpOSIAddress." + ::= { snmpDomains 3 } + +SnmpOSIAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "*1x:/1x:" + STATUS current + DESCRIPTION + "Represents an OSI transport-address: + + octets contents encoding + 1 length of NSAP 'n' as an unsigned-integer + (either 0 or from 3 to 20) + 2..(n+1) NSAP concrete binary representation + (n+2)..m TSEL string of (up to 64) octets + " + SYNTAX OCTET STRING (SIZE (1 | 4..85)) + + + + + + + + +-- SNMP over DDP + +snmpDDPDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP over DDP transport domain. The corresponding + transport address is of type SnmpNBPAddress." + ::= { snmpDomains 4 } + +SnmpNBPAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents an NBP name: + + octets contents encoding + 1 length of object 'n' as an unsigned integer + 2..(n+1) object string of (up to 32) octets + n+2 length of type 'p' as an unsigned integer + (n+3)..(n+2+p) type string of (up to 32) octets + n+3+p length of zone 'q' as an unsigned integer + (n+4+p)..(n+3+p+q) zone string of (up to 32) octets + + For comparison purposes, strings are + case-insensitive. All strings may contain any octet + other than 255 (hex ff)." + SYNTAX OCTET STRING (SIZE (3..99)) + +-- SNMP over IPX + +snmpIPXDomain OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SNMP over IPX transport domain. The corresponding + transport address is of type SnmpIPXAddress." + ::= { snmpDomains 5 } + +SnmpIPXAddress ::= TEXTUAL-CONVENTION + DISPLAY-HINT "4x.1x:1x:1x:1x:1x:1x.2d" + STATUS current + DESCRIPTION + "Represents an IPX address: + + octets contents encoding + 1-4 network-number network-byte order + 5-10 physical-address network-byte order + 11-12 socket-number network-byte order + " + SYNTAX OCTET STRING (SIZE (12)) + + + +-- for proxy to SNMPv1 (RFC 1157) + +rfc1157Proxy OBJECT IDENTIFIER ::= { snmpProxys 1 } + +rfc1157Domain OBJECT-IDENTITY + STATUS deprecated + DESCRIPTION + "The transport domain for SNMPv1 over UDP over IPv4. + The corresponding transport address is of type + SnmpUDPAddress." + ::= { rfc1157Proxy 1 } + +-- ::= { rfc1157Proxy 2 } this OID is obsolete + +END diff --git a/mibs/ietf/SNMPv2-USEC-MIB b/mibs/ietf/SNMPv2-USEC-MIB new file mode 100644 index 0000000..62e2563 --- /dev/null +++ b/mibs/ietf/SNMPv2-USEC-MIB @@ -0,0 +1,255 @@ +SNMPv2-USEC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Unsigned32, + snmpModules + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +usecMIB MODULE-IDENTITY + LAST-UPDATED "9601120000Z" + ORGANIZATION "IETF SNMPv2 Working Group" + CONTACT-INFO + " Glenn W. Waters + + Postal: Bell-Northern Research, Ltd. + P.O. Box 3511, Station C + Ottawa, ON, K1Y 4H7 + Canada + + Tel: +1 613 763 3933 + + E-mail: gwaters@bnr.ca" + DESCRIPTION + "The MIB module for SNMPv2 entities implementing the user- + based security model." + ::= { snmpModules 6 } + + +usecMIBObjects OBJECT IDENTIFIER ::= { usecMIB 1 } + + +-- Textual Conventions + +AgentID ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An agent's administratively-unique identifier. + + The value for this object may not be all zeros or all 'ff'H. + + The initial value for this object may be configured via an + operator console entry or via an algorithmic function. In + + + the later case, the following guidelines are recommended: + + 1) The first four octets are set to the binary equivalent + of the agent's SNMP network management private + enterprise number as assigned by the Internet Assigned + Numbers Authority (IANA). For example, if Acme + Networks has been assigned { enterprises 696 }, the + first four octets would be assigned '000002b8'H. + + 2) The remaining eight octets are the cookie whose + contents are determined via one or more enterprise- + specific methods. Such methods must be designed so as + to maximize the possibility that the value of this + object will be unique in the agent's administrative + domain. For example, the cookie may be the IP address + of the agent, or the MAC address of one of the + interfaces, with each address suitably padded with + random octets. If multiple methods are defined, then + it is recommended that the cookie be further divided + into one octet that indicates the method being used and + seven octets which are a function of the method." + SYNTAX OCTET STRING (SIZE (12)) + + +-- the USEC Basic group +-- +-- a collection of objects providing basic instrumentation of +-- the SNMPv2 entity implementing the user-based security model + + +usecAgent OBJECT IDENTIFIER ::= { usecMIBObjects 1 } + +agentID OBJECT-TYPE + SYNTAX AgentID + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The agent's administratively-unique identifier." + ::= { usecAgent 1 } + +agentBoots OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the agent has re-initialized + itself since its initial configuration." + ::= { usecAgent 2 } + + +agentTime OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds since the agent last incremented the + agentBoots object." + ::= { usecAgent 3 } + +agentSize OBJECT-TYPE + SYNTAX INTEGER (484..65507) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum length in octets of an SNMPv2 message which + this agent will accept using any transport mapping." + ::= { usecAgent 4 } + + +-- USEC statistics +-- +-- a collection of objects providing basic instrumentation of +-- the SNMPv2 entity implementing the user-based security model + +usecStats OBJECT IDENTIFIER ::= { usecMIBObjects 2 } + + +usecStatsUnsupportedQoS OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they requested a quality-of- + service that was unknown to the agent or otherwise + unavailable." + ::= { usecStats 1 } + +usecStatsNotInWindows OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they appeared outside of the + agent's window." + ::= { usecStats 2 } + + +usecStatsUnknownUserNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they referenced a user that was + not known to the agent." + ::= { usecStats 3 } + +usecStatsWrongDigestValues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they didn't contain the expected + digest value." + ::= { usecStats 4 } + +usecStatsUnknownContexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because they referenced a context that + was not known to the agent." + ::= { usecStats 5 } + +usecStatsBadParameters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because the field was + improperly encoded or had invalid syntax." + ::= { usecStats 6 } + +usecStatsUnauthorizedOperations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received by the SNMPv2 entity + which were dropped because the PDU type referred to an + operation that is invalid or not authorized." + + + ::= { usecStats 7 } + + +-- conformance information + +usecMIBConformance + OBJECT IDENTIFIER ::= { usecMIB 2 } + +usecMIBCompliances + OBJECT IDENTIFIER ::= { usecMIBConformance 1 } +usecMIBGroups OBJECT IDENTIFIER ::= { usecMIBConformance 2 } + + +-- compliance statements + +usecMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 USEC model." + MODULE -- this module + MANDATORY-GROUPS { usecBasicGroup, + usecStatsGroup } + ::= { usecMIBCompliances 1 } + + +-- units of conformance + +usecBasicGroup OBJECT-GROUP + OBJECTS { agentID, + agentBoots, + agentTime, + agentSize } + STATUS current + DESCRIPTION + "A collection of objects providing identification, clocks, + and capabilities of an SNMPv2 entity which implements the + SNMPv2 USEC model." + ::= { usecMIBGroups 1 } + +usecStatsGroup OBJECT-GROUP + OBJECTS { usecStatsUnsupportedQoS, + usecStatsNotInWindows, + usecStatsUnknownUserNames, + usecStatsWrongDigestValues, + usecStatsUnknownContexts, + usecStatsBadParameters, + usecStatsUnauthorizedOperations } + + + STATUS current + DESCRIPTION + "A collection of objects providing basic error statistics of + an SNMPv2 entity which implements the SNMPv2 USEC model." + ::= { usecMIBGroups 2 } + +END diff --git a/mibs/ietf/SONET-MIB b/mibs/ietf/SONET-MIB new file mode 100644 index 0000000..a887604 --- /dev/null +++ b/mibs/ietf/SONET-MIB @@ -0,0 +1,2523 @@ +SONET-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Integer32, transmission + FROM SNMPv2-SMI + DisplayString, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ifIndex + FROM IF-MIB + PerfCurrentCount, PerfIntervalCount + FROM PerfHist-TC-MIB; + +-- This is the MIB module for the SONET/SDH Interface objects. + +sonetMIB MODULE-IDENTITY + LAST-UPDATED "200308110000Z" + ORGANIZATION "IETF AToM MIB Working Group" + + + + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/atommib-charter.html + + Mailing Lists: + General Discussion: atommib@research.telcordia.com + To Subscribe: atommib-request@research.telcordia.com + + Kaj Tesink + Telcordia Technologies + Tel: (732) 758-5254 + Fax: (732) 758-2269 + E-mail: kaj@research.telcordia.com." + DESCRIPTION + "The MIB module to describe SONET/SDH interface objects. + + Copyright (C) The Internet Society (2003). This version + of this MIB module is part of RFC 3592; see the RFC + itself for full legal notices." + REVISION "200308110000Z" + DESCRIPTION + "The key changes made to this MIB module + since its publication in RFC 2558 + are as follows. + + (1) Corrected typographical error + (bellcore1991(2) in sonetSESthresholdSet) + + (2) Added support for sts192cSTM64(6) and + sts768cSTM256(7) in sonetPathCurrentWidth + + (3) Corrected description of the applicability + of VTs for SDH for improved accuracy + + (4) Added clarification in the SES description that + CV counts should be frozen during SESs + + (5) Corrected typographical errors: + - Line Alarm Indication Signal description of the + Terminology section (20.5 --> 2.5 seconds) + - In the Terminology section + sonetSESThresholdSet --> sonetSESthresholdSet + " + REVISION "199810190000Z" + DESCRIPTION + "The RFC 2558 version of this MIB module. + + + + + + The key changes made to this MIB module + since its initial publication in RFC 1595 + are as follows. + + (1) The MODULE-IDENTITY has been updated to reflect the + changes to the MIB. + + (2) Where applicable, the textual conventions + PerfCurrentCount and PerfIntervalCount from + PerfHist-TC-MIB have been used in place of Gauge32. + + (3) An agent now has the option to delay updates to + the various performance counts in lieu of performing + retroactive adjustments upon entering into or exiting + from unavailable time. This implementation option is + described in Appendix A of this memo. + + (4) In order to make the SONET-MIB more useful for + circuit provisioning, the formerly read-only objects + sonetMediumType, sonetMediumLineCoding, + sonetMediumLineType, and sonetMediumCircuitIdentifier + have been given a MAX-ACCESS of read-write. The + MIN-ACCESS remains read-only. + + (5) The DESCRIPTION clause for sonetMediumTimeElapsed has + been updated to describe its behaviour if the duration + of the current interval exceeds the maximum value. + + (6) The DESCRIPTION clause for sonetMediumValidIntervals + has been updated to describe its behaviour when some + intervals may be unavailable, and the object + sonetMediumInvalidIntervals has been added to keep + count of the number of missing intervals (if any). + + (7) The object sonetMediumLoopbackConfig has been added + to enable or disable loopback configurations. + + (8) Because the error count thresholds for declaring + severely errored seconds that are specified in ANSI + T1.231-1993, ITU-T G.826-1995, and ANSI T1.231-1997 + are all different from each other and from the thresholds + specified in RFC 1595, an enumerated INTEGER object + sonetSESthresholdSet has been added to allow an agent + to specify which threshold set is in use. Text has + been added to Section 3 stating that if this object is + not implemented the thresholds specified in RFC 1595 + should be assumed, and the table containing those + thresholds has been moved to Appendix B of this memo. + + + + (9) A column with SYNTAX TruthValue has been added to each + interval table. The purpose of the additional column + is to indicate, for each interval, whether the data + is valid in the sense intended by ANSI T1.231 clause + 9.1.2.2 [T1.231a][T1.231b]. The objects in question are: + + sonetSectionIntervalValidData + sonetLineIntervalValidData + sonetFarEndLineIntervalValidData + sonetPathIntervalValidData + sonetFarEndPathIntervalValidData + sonetVTIntervalValidData + sonetFarEndVTIntervalValidData + + (10) The ranges for sonetPathCurrentStatus and + sonetVTCurrentStatus have been made consistent + with the DESCRIPTION clauses. + + (11) The conformance information has been updated. Previous + conformance information from RFC 1595 has been + deprecated. Some typographical errors in the deprecated + section have been corrected in order to prevent + MIB compilation errors." + + REVISION "199401030000Z" + DESCRIPTION + "The RFC 1595 version of this MIB module." + + ::= { transmission 39 } + +-- This is the MIB module for the SONET/SDH objects + +sonetObjects OBJECT IDENTIFIER ::= { sonetMIB 1 } + +sonetObjectsPath OBJECT IDENTIFIER ::= { sonetMIB 2 } + +sonetObjectsVT OBJECT IDENTIFIER ::= { sonetMIB 3 } + +-- groups in the SONET/SDH MIB module + +sonetMedium OBJECT IDENTIFIER ::= { sonetObjects 1 } + +sonetSection OBJECT IDENTIFIER ::= { sonetObjects 2 } + +sonetLine OBJECT IDENTIFIER ::= { sonetObjects 3 } + +sonetFarEndLine OBJECT IDENTIFIER ::= { sonetObjects 4 } + + + + +sonetPath OBJECT IDENTIFIER ::= { sonetObjectsPath 1 } + +sonetFarEndPath OBJECT IDENTIFIER ::= { sonetObjectsPath 2 } + +sonetVT OBJECT IDENTIFIER ::= { sonetObjectsVT 1 } + +sonetFarEndVT OBJECT IDENTIFIER ::= { sonetObjectsVT 2 } + +-- the SONET/SDH Medium group + +-- SONET/SDH interfaces for some applications may be electrical +-- interfaces and not optical interfaces. This group handles +-- the configuration information for both optical SONET/SDH +-- interfaces and electrical SONET/SDH interfaces. + +sonetMediumTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetMediumEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Medium table." + ::= { sonetMedium 1 } + +sonetMediumEntry OBJECT-TYPE + SYNTAX SonetMediumEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Medium table." + INDEX { ifIndex } + ::= { sonetMediumTable 1 } + +SonetMediumEntry ::= + SEQUENCE { + sonetMediumType INTEGER, + sonetMediumTimeElapsed Integer32, + sonetMediumValidIntervals Integer32, + sonetMediumLineCoding INTEGER, + sonetMediumLineType INTEGER, + sonetMediumCircuitIdentifier DisplayString, + sonetMediumInvalidIntervals Integer32, + sonetMediumLoopbackConfig BITS + } + +sonetMediumType OBJECT-TYPE + SYNTAX INTEGER { + sonet(1), + sdh(2) + + + + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable identifies whether a SONET + or a SDH signal is used across this interface." + ::= { sonetMediumEntry 1 } + +sonetMediumTimeElapsed OBJECT-TYPE + SYNTAX Integer32 (1..900) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of seconds, including partial seconds, + that have elapsed since the beginning of the current + measurement period. If, for some reason, such as an + adjustment in the system's time-of-day clock, the + current interval exceeds the maximum value, the + agent will return the maximum value." + ::= { sonetMediumEntry 2 } + +sonetMediumValidIntervals OBJECT-TYPE + SYNTAX Integer32 (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of previous 15-minute intervals + for which data was collected. + A SONET/SDH interface must be capable + of supporting at least n intervals. + The minimum value of n is 4. + The default of n is 32. + The maximum value of n is 96. + The value will be unless the measurement was + (re-)started within the last (*15) minutes, in which + case the value will be the number of complete 15 + minute intervals for which the agent has at least + some data. In certain cases (e.g., in the case + where the agent is a proxy) it is possible that some + intervals are unavailable. In this case, this + interval is the maximum interval number for + which data is available. " + ::= { sonetMediumEntry 3 } + +sonetMediumLineCoding OBJECT-TYPE + SYNTAX INTEGER { + sonetMediumOther(1), + sonetMediumB3ZS(2), + + + + sonetMediumCMI(3), + sonetMediumNRZ(4), + sonetMediumRZ(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable describes the line coding for + this interface. The B3ZS and CMI are used for + electrical SONET/SDH signals (STS-1 and STS-3). + The Non-Return to Zero (NRZ) and the Return + to Zero are used for optical SONET/SDH signals." + ::= { sonetMediumEntry 4 } + +sonetMediumLineType OBJECT-TYPE + SYNTAX INTEGER { + sonetOther(1), + sonetShortSingleMode(2), + sonetLongSingleMode(3), + sonetMultiMode(4), + sonetCoax(5), + sonetUTP(6) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable describes the line type for + this interface. The line types are + Short and Long Range + Single Mode fiber or Multi-Mode fiber interfaces, + and coax and UTP for electrical interfaces. The + value sonetOther should be used when the Line Type is + not one of the listed values." + ::= { sonetMediumEntry 5 } + +sonetMediumCircuitIdentifier OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable contains the transmission + vendor's circuit identifier, for the + purpose of facilitating troubleshooting. + Note that the circuit identifier, if available, + is also represented by ifPhysAddress." + ::= { sonetMediumEntry 6 } + + + + + +sonetMediumInvalidIntervals OBJECT-TYPE + SYNTAX Integer32 (0..96) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of intervals in the range from + 0 to sonetMediumValidIntervals for which no + data is available. This object will typically + be zero except in cases where the data for some + intervals are not available (e.g., in proxy + situations)." + ::= { sonetMediumEntry 7 } + +sonetMediumLoopbackConfig OBJECT-TYPE + SYNTAX BITS { + sonetNoLoop(0), + sonetFacilityLoop(1), + sonetTerminalLoop(2), + sonetOtherLoop(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current loopback state of the SONET/SDH interface. The + values mean: + + sonetNoLoop + Not in the loopback state. A device that is not + capable of performing a loopback on this interface + shall always return this value. + + sonetFacilityLoop + The received signal at this interface is looped back + out through the corresponding transmitter in the return + direction. + + sonetTerminalLoop + The signal that is about to be transmitted is connected + to the associated incoming receiver. + + sonetOtherLoop + Loopbacks that are not defined here." + + ::= { sonetMediumEntry 8 } + +sonetSESthresholdSet OBJECT-TYPE + SYNTAX INTEGER { + other(1), + bellcore1991(2), + + + + ansi1993(3), + itu1995(4), + ansi1997(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An enumerated integer indicating which + recognized set of SES thresholds that + the agent uses for determining severely + errored seconds and unavailable time. + + other(1) + None of the following. + + bellcore1991(2) + Bellcore TR-NWT-000253, 1991 [TR253], or + ANSI T1M1.3/93-005R2, 1993 [T1M1.3]. + See also Appendix B. + + ansi1993(3) + ANSI T1.231, 1993 [T1.231a], or + Bellcore GR-253-CORE, Issue 2, 1995 [GR253] + + itu1995(4) + ITU Recommendation G.826, 1995 [G.826] + + ansi1997(5) + ANSI T1.231, 1997 [T1.231b] + + If a manager changes the value of this + object then the SES statistics collected + prior to this change must be invalidated." + ::= { sonetMedium 2 } + +-- the SONET/SDH Section group + +-- this group consists of 2 tables: +-- - the SONET/SDH Section Current Table +-- - the SONET/SDH Section Interval Table + +-- the SONET/SDH Section Current Table + +-- The SONET/SDH Section +-- current table contains various statistics +-- being collected for the current 15 minute interval. + + + + + +sonetSectionCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetSectionCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Section Current table." + ::= { sonetSection 1 } + +sonetSectionCurrentEntry OBJECT-TYPE + SYNTAX SonetSectionCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Section Current table." + INDEX { ifIndex } + ::= { sonetSectionCurrentTable 1 } + +SonetSectionCurrentEntry ::= + SEQUENCE { + sonetSectionCurrentStatus Integer32, + sonetSectionCurrentESs PerfCurrentCount, + sonetSectionCurrentSESs PerfCurrentCount, + sonetSectionCurrentSEFSs PerfCurrentCount, + sonetSectionCurrentCVs PerfCurrentCount + } + +sonetSectionCurrentStatus OBJECT-TYPE + SYNTAX Integer32 (1..6) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the + status of the interface. + The sonetSectionCurrentStatus + is a bit map represented + as a sum, therefore, + it can represent multiple defects + simultaneously. + The sonetSectionNoDefect should be + set if and only if + no other flag is set. + + The various bit positions are: + 1 sonetSectionNoDefect + 2 sonetSectionLOS + 4 sonetSectionLOF" + ::= { sonetSectionCurrentEntry 1 } + + + + +sonetSectionCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Errored + Seconds encountered by a SONET/SDH + Section in the current 15 minute interval." + ::= { sonetSectionCurrentEntry 2 } + +sonetSectionCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Section in the current 15 + minute interval." + ::= { sonetSectionCurrentEntry 3 } + +sonetSectionCurrentSEFSs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds + encountered by a SONET/SDH Section in the current + 15 minute interval." + ::= { sonetSectionCurrentEntry 4 } + +sonetSectionCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Section in the current 15 minute interval." + ::= { sonetSectionCurrentEntry 5 } + +-- the SONET/SDH Section Interval Table + +-- The SONET/SDH Section Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of + + + +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetSectionIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetSectionIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Section Interval table." + ::= { sonetSection 2 } + +sonetSectionIntervalEntry OBJECT-TYPE + SYNTAX SonetSectionIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Section Interval table." + INDEX { ifIndex, + sonetSectionIntervalNumber } + ::= { sonetSectionIntervalTable 1 } + +SonetSectionIntervalEntry ::= + SEQUENCE { + sonetSectionIntervalNumber Integer32, + sonetSectionIntervalESs PerfIntervalCount, + sonetSectionIntervalSESs PerfIntervalCount, + sonetSectionIntervalSEFSs PerfIntervalCount, + sonetSectionIntervalCVs PerfIntervalCount, + sonetSectionIntervalValidData TruthValue + } + +sonetSectionIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetSectionIntervalEntry 1 } + + + +sonetSectionIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Errored Seconds encountered + by a SONET/SDH Section in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetSectionIntervalEntry 2 } + +sonetSectionIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Section in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetSectionIntervalEntry 3 } + +sonetSectionIntervalSEFSs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Framing Seconds + encountered by a SONET/SDH Section in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetSectionIntervalEntry 4 } + +sonetSectionIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Section in a particular 15-minute interval + in the past 24 hours." + ::= { sonetSectionIntervalEntry 5 } + + + + + +sonetSectionIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetSectionIntervalEntry 6 } + +-- the SONET/SDH Line group + +-- this group consists of 2 tables: +-- - the SONET/SDH Line Current Table +-- - the SONET/SDH Line Interval Table + +-- the SONET/SDH Line Current Table + +-- The SONET/SDH Line +-- current table contains various statistics +-- being collected for the current 15 minute interval. + +sonetLineCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetLineCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Line Current table." + ::= { sonetLine 1 } + +sonetLineCurrentEntry OBJECT-TYPE + SYNTAX SonetLineCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Line Current table." + INDEX { ifIndex } + ::= { sonetLineCurrentTable 1 } + +SonetLineCurrentEntry ::= + SEQUENCE { + sonetLineCurrentStatus Integer32, + sonetLineCurrentESs PerfCurrentCount, + sonetLineCurrentSESs PerfCurrentCount, + sonetLineCurrentCVs PerfCurrentCount, + sonetLineCurrentUASs PerfCurrentCount + } + + + + + +sonetLineCurrentStatus OBJECT-TYPE + SYNTAX Integer32 (1..6) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the + status of the interface. + The sonetLineCurrentStatus + is a bit map represented + as a sum, therefore, + it can represent multiple defects + simultaneously. + The sonetLineNoDefect should be + set if and only if + no other flag is set. + + The various bit positions are: + 1 sonetLineNoDefect + 2 sonetLineAIS + 4 sonetLineRDI" + ::= { sonetLineCurrentEntry 1 } + +sonetLineCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Errored + Seconds encountered by a SONET/SDH + Line in the current 15 minute interval." + ::= { sonetLineCurrentEntry 2 } + +sonetLineCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Line in the current 15 + minute + interval." + ::= { sonetLineCurrentEntry 3 } + +sonetLineCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Line in the current 15 minute interval." + ::= { sonetLineCurrentEntry 4 } + +sonetLineCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a SONET/SDH Line in the current 15 + minute + interval." + ::= { sonetLineCurrentEntry 5 } + +-- the SONET/SDH Line Interval Table + +-- The SONET/SDH Line Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetLineIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetLineIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Line Interval table." + ::= { sonetLine 2 } + +sonetLineIntervalEntry OBJECT-TYPE + SYNTAX SonetLineIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Line Interval table." + INDEX { ifIndex, + sonetLineIntervalNumber } + ::= { sonetLineIntervalTable 1 } + + + + +SonetLineIntervalEntry ::= + SEQUENCE { + sonetLineIntervalNumber Integer32, + sonetLineIntervalESs PerfIntervalCount, + sonetLineIntervalSESs PerfIntervalCount, + sonetLineIntervalCVs PerfIntervalCount, + sonetLineIntervalUASs PerfIntervalCount, + sonetLineIntervalValidData TruthValue + } + +sonetLineIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetLineIntervalEntry 1 } + +sonetLineIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Errored Seconds encountered + by a SONET/SDH Line in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetLineIntervalEntry 2 } + +sonetLineIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Line in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetLineIntervalEntry 3 } + + + +sonetLineIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Line in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetLineIntervalEntry 4 } + +sonetLineIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the + number of Unavailable Seconds + encountered by a SONET/SDH Line in + a particular 15-minute interval + in the past 24 hours." + ::= { sonetLineIntervalEntry 5 } + +sonetLineIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetLineIntervalEntry 6 } + +-- The SONET/SDH Far End Line group. +-- This group may only be implemented by SONET/SDH (LTEs) +-- systems that provide for a far end block error (FEBE) +-- information at the SONET/SDH Line Layer. + +-- This group consists of two tables: +-- SONET/SDH Far End Line Current Table +-- SONET/SDH Far End Line Interval Table + +-- The SONET/SDH Far End Line Current Table + +-- The SONET/SDH Far End Line Current table contains +-- various statistics being +-- collected for the current 15 minute interval. +-- The statistics are collected from the far end + + + +-- block error code (FEBE) +-- within the third Z2 byte of the Line Overhead +-- in Broadband ISDN applications. +-- The definitions are the same as described for +-- the near-end information. + +sonetFarEndLineCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndLineCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End Line Current table." + ::= { sonetFarEndLine 1 } + +sonetFarEndLineCurrentEntry OBJECT-TYPE + SYNTAX SonetFarEndLineCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far End Line Current table." + INDEX { ifIndex } + ::= { sonetFarEndLineCurrentTable 1 } + +SonetFarEndLineCurrentEntry ::= + SEQUENCE { + sonetFarEndLineCurrentESs PerfCurrentCount, + sonetFarEndLineCurrentSESs PerfCurrentCount, + sonetFarEndLineCurrentCVs PerfCurrentCount, + sonetFarEndLineCurrentUASs PerfCurrentCount + } + +sonetFarEndLineCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far + End Errored Seconds encountered by a SONET/SDH + interface in the current 15 minute interval." + ::= { sonetFarEndLineCurrentEntry 1 } + +sonetFarEndLineCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + + + + encountered by a SONET/SDH Medium/Section/Line + interface in the current 15 minute + interval." + ::= { sonetFarEndLineCurrentEntry 2 } + +sonetFarEndLineCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH Medium/Section/Line + interface in the current 15 minute interval." + ::= { sonetFarEndLineCurrentEntry 3 } + +sonetFarEndLineCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH Medium/Section/Line + interface in the current 15 minute interval." + ::= { sonetFarEndLineCurrentEntry 4 } + +-- The SONET/SDH Far End Line Interval Table + +-- The SONET/SDH Far End Line Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetFarEndLineIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndLineIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End Line Interval table." + + + + ::= { sonetFarEndLine 2 } + +sonetFarEndLineIntervalEntry OBJECT-TYPE + SYNTAX SonetFarEndLineIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far + End Line Interval table." + INDEX { ifIndex, + sonetFarEndLineIntervalNumber } + ::= { sonetFarEndLineIntervalTable 1 } + +SonetFarEndLineIntervalEntry ::= + SEQUENCE { + sonetFarEndLineIntervalNumber Integer32, + sonetFarEndLineIntervalESs PerfIntervalCount, + sonetFarEndLineIntervalSESs PerfIntervalCount, + sonetFarEndLineIntervalCVs PerfIntervalCount, + sonetFarEndLineIntervalUASs PerfIntervalCount, + sonetFarEndLineIntervalValidData TruthValue + } + +sonetFarEndLineIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetFarEndLineIntervalEntry 1 } + +sonetFarEndLineIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Errored Seconds encountered + by a SONET/SDH Line + interface in a particular 15-minute interval + in the past 24 hours." + + + + ::= { sonetFarEndLineIntervalEntry 2 } + +sonetFarEndLineIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH Line + interface in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndLineIntervalEntry 3 } + +sonetFarEndLineIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH Line + interface in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndLineIntervalEntry 4 } + +sonetFarEndLineIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH Line + interface in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndLineIntervalEntry 5 } + +sonetFarEndLineIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + + + + ::= { sonetFarEndLineIntervalEntry 6 } + +-- the SONET/SDH Path group + +-- this group consists of 2 tables: +-- - the SONET/SDH Path Current Table +-- - the SONET/SDH Path Interval Table + +-- the SONET/SDH Path Current Table + +-- The SONET/SDH Path +-- current table contains various statistics +-- being collected for the current 15 minute interval. + +sonetPathCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Path Current table." +::= { sonetPath 1 } + +sonetPathCurrentEntry OBJECT-TYPE + SYNTAX SonetPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Path Current table." + INDEX { ifIndex } +::= { sonetPathCurrentTable 1 } + +SonetPathCurrentEntry ::= + SEQUENCE { + sonetPathCurrentWidth INTEGER, + sonetPathCurrentStatus Integer32, + sonetPathCurrentESs PerfCurrentCount, + sonetPathCurrentSESs PerfCurrentCount, + sonetPathCurrentCVs PerfCurrentCount, + sonetPathCurrentUASs PerfCurrentCount + } + +sonetPathCurrentWidth OBJECT-TYPE + SYNTAX INTEGER { + sts1(1), + sts3cSTM1(2), + sts12cSTM4(3), + sts24c(4), + sts48cSTM16(5), + + + + sts192cSTM64(6), + sts768cSTM256(7) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that indicates the type of the SONET/SDH + Path. For SONET, the assigned types are + the STS-Nc SPEs, where N = 1, 3, 12, 24, 48, 192 and 768. + STS-1 is equal to 51.84 Mbps. For SDH, the assigned + types are the STM-Nc VCs, where N = 1, 4, 16, 64 and 256." +::= { sonetPathCurrentEntry 1 } + +sonetPathCurrentStatus OBJECT-TYPE + SYNTAX Integer32 (1..62) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the + status of the interface. + The sonetPathCurrentStatus + is a bit map represented + as a sum, therefore, + it can represent multiple defects + simultaneously. + The sonetPathNoDefect should be + set if and only if + no other flag is set. + + The various bit positions are: + 1 sonetPathNoDefect + 2 sonetPathSTSLOP + 4 sonetPathSTSAIS + 8 sonetPathSTSRDI + 16 sonetPathUnequipped + 32 sonetPathSignalLabelMismatch" +::= { sonetPathCurrentEntry 2 } + +sonetPathCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Errored + Seconds encountered by a SONET/SDH + Path in the current 15 minute interval." +::= { sonetPathCurrentEntry 3 } + + + + +sonetPathCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Path in the current 15 + minute + interval." +::= { sonetPathCurrentEntry 4 } + +sonetPathCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Path in the current 15 minute interval." +::= { sonetPathCurrentEntry 5 } + +sonetPathCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a Path in the current + 15 minute interval." +::= { sonetPathCurrentEntry 6 } + +-- the SONET/SDH Path Interval Table + +-- The SONET/SDH Path Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + + + + + + + +sonetPathIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetPathIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Path Interval table." +::= { sonetPath 2 } + +sonetPathIntervalEntry OBJECT-TYPE + SYNTAX SonetPathIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Path Interval table." + INDEX { ifIndex, + sonetPathIntervalNumber } +::= { sonetPathIntervalTable 1 } + +SonetPathIntervalEntry ::= + SEQUENCE { + sonetPathIntervalNumber Integer32, + sonetPathIntervalESs PerfIntervalCount, + sonetPathIntervalSESs PerfIntervalCount, + sonetPathIntervalCVs PerfIntervalCount, + sonetPathIntervalUASs PerfIntervalCount, + sonetPathIntervalValidData TruthValue + } + +sonetPathIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." +::= { sonetPathIntervalEntry 1 } + +sonetPathIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The counter associated with the number of + Errored Seconds encountered + by a SONET/SDH Path in a + particular 15-minute interval + in the past 24 hours." +::= { sonetPathIntervalEntry 2 } + +sonetPathIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH Path in + a particular 15-minute interval + in the past 24 hours." +::= { sonetPathIntervalEntry 3 } + +sonetPathIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH Path in a particular 15-minute interval + in the past 24 hours." +::= { sonetPathIntervalEntry 4 } + +sonetPathIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a Path in a + particular 15-minute interval + in the past 24 hours." +::= { sonetPathIntervalEntry 5 } + +sonetPathIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + + + + interval is valid." + ::= { sonetPathIntervalEntry 6 } + +-- The SONET/SDH Far End Path group + +-- This group consists of two tables: +-- - SONET/SDH Far End Path Current Table +-- - SONET/SDH Far End Path Interval Table + +-- The SONET/SDH Far End Path Current Table + +-- The SONET/SDH Far End Path Current table +-- contains various statistics +-- being collected for the current 15 minute interval. +-- The statistics are collected from +-- the far end block error code +-- (FEBE) within the G1 byte of the Path Overhead. +-- The definitions are the same as described for +-- the near-end information. + +sonetFarEndPathCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End Path Current table." + ::= { sonetFarEndPath 1 } + +sonetFarEndPathCurrentEntry OBJECT-TYPE + SYNTAX SonetFarEndPathCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far End Path Current table." + INDEX { ifIndex } + ::= { sonetFarEndPathCurrentTable 1 } + +SonetFarEndPathCurrentEntry ::= + SEQUENCE { + sonetFarEndPathCurrentESs PerfCurrentCount, + sonetFarEndPathCurrentSESs PerfCurrentCount, + sonetFarEndPathCurrentCVs PerfCurrentCount, + sonetFarEndPathCurrentUASs PerfCurrentCount + } + + + + + + + +sonetFarEndPathCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far + End Errored Seconds encountered by a SONET/SDH + interface in the current 15 minute interval." + ::= { sonetFarEndPathCurrentEntry 1 } + +sonetFarEndPathCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH Path + interface in the current 15 minute + interval." + ::= { sonetFarEndPathCurrentEntry 2 } + +sonetFarEndPathCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH Path interface in + the current 15 minute interval." + ::= { sonetFarEndPathCurrentEntry 3 } + +sonetFarEndPathCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH Path interface in + the current 15 minute interval." + ::= { sonetFarEndPathCurrentEntry 4 } + + + + + +-- The SONET/SDH Far End Path Interval Table + +-- The SONET/SDH Far End Path Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetFarEndPathIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndPathIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End Path Interval table." + ::= { sonetFarEndPath 2 } + +sonetFarEndPathIntervalEntry OBJECT-TYPE + SYNTAX SonetFarEndPathIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far + End Path Interval table." + INDEX { ifIndex, + sonetFarEndPathIntervalNumber } + ::= { sonetFarEndPathIntervalTable 1 } + +SonetFarEndPathIntervalEntry ::= + SEQUENCE { + sonetFarEndPathIntervalNumber Integer32, + sonetFarEndPathIntervalESs PerfIntervalCount, + sonetFarEndPathIntervalSESs PerfIntervalCount, + sonetFarEndPathIntervalCVs PerfIntervalCount, + sonetFarEndPathIntervalUASs PerfIntervalCount, + sonetFarEndPathIntervalValidData TruthValue + } + +sonetFarEndPathIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + + + + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetFarEndPathIntervalEntry 1 } + +sonetFarEndPathIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Errored Seconds encountered + by a SONET/SDH Path interface in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndPathIntervalEntry 2 } + +sonetFarEndPathIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH Path interface + in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndPathIntervalEntry 3 } + +sonetFarEndPathIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH Path interface + in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndPathIntervalEntry 4 } + + + + + + +sonetFarEndPathIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH Path interface in + a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndPathIntervalEntry 5 } + +sonetFarEndPathIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetFarEndPathIntervalEntry 6 } + +-- the SONET/SDH Virtual Tributary group + +-- this group consists of 2 tables: +-- - the SONET/SDH VT Current Table +-- - the SONET/SDH VT Interval Table + +-- Corresponding SDH signals for SONET VTs are +-- as follows: + +-- A VT1.5 = TU11 +-- A VT2 = TU12 +-- A VT3 = none +-- none = TU3 +-- A VT6 = TU2 + +-- the SONET/SDH VT Current Table + +-- The SONET/SDH VT current table +-- contains various statistics +-- being collected for the +-- current 15 minute interval. + + + + + + + + +sonetVTCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetVTCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH VT Current table." +::= { sonetVT 1 } + +sonetVTCurrentEntry OBJECT-TYPE + SYNTAX SonetVTCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH VT Current table." + INDEX { ifIndex } +::= { sonetVTCurrentTable 1 } + +SonetVTCurrentEntry ::= + SEQUENCE { + sonetVTCurrentWidth INTEGER, + sonetVTCurrentStatus Integer32, + sonetVTCurrentESs PerfCurrentCount, + sonetVTCurrentSESs PerfCurrentCount, + sonetVTCurrentCVs PerfCurrentCount, + sonetVTCurrentUASs PerfCurrentCount + } + +sonetVTCurrentWidth OBJECT-TYPE + SYNTAX INTEGER { + vtWidth15VC11(1), + vtWidth2VC12(2), + vtWidth3(3), + vtWidth6VC2(4), + vtWidth6c(5) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that indicates the type of the SONET + VT and SDH VC. Assigned widths are + VT1.5/VC11, VT2/VC12, VT3, VT6/VC2, and VT6c." +::= { sonetVTCurrentEntry 1 } + + + + + + + + + +sonetVTCurrentStatus OBJECT-TYPE + SYNTAX Integer32 (1..126) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates the + status of the interface. + The sonetVTCurrentStatus + is a bit map represented + as a sum, therefore, + it can represent multiple defects + and failures + simultaneously. + The sonetVTNoDefect should be + set if and only if + no other flag is set. + + The various bit positions are: + 1 sonetVTNoDefect + 2 sonetVTLOP + 4 sonetVTPathAIS + 8 sonetVTPathRDI + 16 sonetVTPathRFI + 32 sonetVTUnequipped + 64 sonetVTSignalLabelMismatch" +::= { sonetVTCurrentEntry 2 } + +sonetVTCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Errored + Seconds encountered by a SONET/SDH + VT in the current 15 minute interval." +::= { sonetVTCurrentEntry 3 } + +sonetVTCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH VT in the current 15 minute + interval." +::= { sonetVTCurrentEntry 4 } + + + + +sonetVTCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH VT in the current 15 minute interval." +::= { sonetVTCurrentEntry 5 } + +sonetVTCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a VT in the current + 15 minute interval." +::= { sonetVTCurrentEntry 6 } + +-- the SONET/SDH VT Interval Table + +-- The SONET/SDH VT Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetVTIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetVTIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH VT Interval table." +::= { sonetVT 2 } + +sonetVTIntervalEntry OBJECT-TYPE + SYNTAX SonetVTIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH VT Interval table." + INDEX { ifIndex, + + + + sonetVTIntervalNumber } +::= { sonetVTIntervalTable 1 } + +SonetVTIntervalEntry ::= + SEQUENCE { + sonetVTIntervalNumber Integer32, + sonetVTIntervalESs PerfIntervalCount, + sonetVTIntervalSESs PerfIntervalCount, + sonetVTIntervalCVs PerfIntervalCount, + sonetVTIntervalUASs PerfIntervalCount, + sonetVTIntervalValidData TruthValue + } + +sonetVTIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." +::= { sonetVTIntervalEntry 1 } + +sonetVTIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Errored Seconds encountered + by a SONET/SDH VT in a particular 15-minute interval + in the past 24 hours." +::= { sonetVTIntervalEntry 2 } + +sonetVTIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Severely Errored Seconds + encountered by a SONET/SDH VT + in a particular 15-minute interval + + + + in the past 24 hours." +::= { sonetVTIntervalEntry 3 } + +sonetVTIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Coding + Violations encountered by a + SONET/SDH VT in a particular 15-minute interval + in the past 24 hours." +::= { sonetVTIntervalEntry 4 } + +sonetVTIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Unavailable Seconds + encountered by a VT in a particular 15-minute interval + in the past 24 hours." +::= { sonetVTIntervalEntry 5 } + +sonetVTIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetVTIntervalEntry 6 } + +-- The SONET/SDH Far End VT group + +-- This group consists of two tables: +-- SONET/SDH Far End VT Current Table +-- SONET/SDH Far End VT Interval Table + +-- The SONET/SDH Far End VT Current + +-- The SONET/SDH Far End VT Current table +-- contains various statistics +-- being collected for the current 15 minute interval. +-- The statistics are collected from +-- the far end block error code +-- (FEBE) within the G1 byte of the VT Overhead. + + + +-- The definitions are the same as described for +-- the near-end information. + +sonetFarEndVTCurrentTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndVTCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End VT Current table." + ::= { sonetFarEndVT 1 } + +sonetFarEndVTCurrentEntry OBJECT-TYPE + SYNTAX SonetFarEndVTCurrentEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far End VT Current table." + INDEX { ifIndex } + ::= { sonetFarEndVTCurrentTable 1 } + +SonetFarEndVTCurrentEntry ::= + SEQUENCE { + sonetFarEndVTCurrentESs PerfCurrentCount, + sonetFarEndVTCurrentSESs PerfCurrentCount, + sonetFarEndVTCurrentCVs PerfCurrentCount, + sonetFarEndVTCurrentUASs PerfCurrentCount + } + +sonetFarEndVTCurrentESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of Far + End Errored Seconds encountered by a SONET/SDH + interface in the current 15 minute interval." +::= { sonetFarEndVTCurrentEntry 1 } + +sonetFarEndVTCurrentSESs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH VT interface + in the current 15 minute + interval." + + + + ::= { sonetFarEndVTCurrentEntry 2 } + +sonetFarEndVTCurrentCVs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH VT interface + in the current 15 minute interval." + ::= { sonetFarEndVTCurrentEntry 3 } + +sonetFarEndVTCurrentUASs OBJECT-TYPE + SYNTAX PerfCurrentCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH VT interface + in the current 15 minute interval." + ::= { sonetFarEndVTCurrentEntry 4 } + +-- The SONET/SDH Far End VT Interval Table + +-- The SONET/SDH Far End VT Interval Table +-- contains various statistics +-- collected by each system over a maximum +-- of the previous 24 hours of +-- operation. The past 24 hours may be broken into 96 +-- completed 15 minute intervals. +-- A system is required to store at +-- least 4 completed 15 minute interval. +-- The default value is 32 intervals. + +sonetFarEndVTIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF SonetFarEndVTIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The SONET/SDH Far End VT Interval table." + ::= { sonetFarEndVT 2 } + + + + + +sonetFarEndVTIntervalEntry OBJECT-TYPE + SYNTAX SonetFarEndVTIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the SONET/SDH Far + End VT Interval table." + INDEX { ifIndex, + sonetFarEndVTIntervalNumber } + ::= { sonetFarEndVTIntervalTable 1 } + +SonetFarEndVTIntervalEntry ::= + SEQUENCE { + sonetFarEndVTIntervalNumber Integer32, + sonetFarEndVTIntervalESs PerfIntervalCount, + sonetFarEndVTIntervalSESs PerfIntervalCount, + sonetFarEndVTIntervalCVs PerfIntervalCount, + sonetFarEndVTIntervalUASs PerfIntervalCount, + sonetFarEndVTIntervalValidData TruthValue + } + +sonetFarEndVTIntervalNumber OBJECT-TYPE + SYNTAX Integer32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A number between 1 and 96, which identifies the + interval for which the set of statistics is available. + The interval identified by 1 is the most recently + completed 15 minute interval, + and the interval identified + by N is the interval immediately preceding the + one identified + by N-1." + ::= { sonetFarEndVTIntervalEntry 1 } + +sonetFarEndVTIntervalESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Errored Seconds encountered + by a SONET/SDH VT interface + in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndVTIntervalEntry 2 } + + + + +sonetFarEndVTIntervalSESs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Severely Errored Seconds + encountered by a SONET/SDH VT interface + in a particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndVTIntervalEntry 3 } + +sonetFarEndVTIntervalCVs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Coding Violations reported via + the far end block error count + encountered by a + SONET/SDH VT interface in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndVTIntervalEntry 4 } + +sonetFarEndVTIntervalUASs OBJECT-TYPE + SYNTAX PerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The counter associated with the number of + Far End Unavailable Seconds + encountered by a + SONET/SDH VT interface in a + particular 15-minute interval + in the past 24 hours." + ::= { sonetFarEndVTIntervalEntry 5 } + +sonetFarEndVTIntervalValidData OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable indicates if the data for this + interval is valid." + ::= { sonetFarEndVTIntervalEntry 6 } + + + + +-- conformance information + +sonetConformance OBJECT IDENTIFIER ::= { sonetMIB 4 } + +sonetGroups OBJECT IDENTIFIER ::= { sonetConformance 1 } +sonetCompliances OBJECT IDENTIFIER ::= { sonetConformance 2 } + +-- deprecated compliance statement + +sonetCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SONET/SDH interfaces." + + MODULE -- this module + MANDATORY-GROUPS { sonetMediumStuff, sonetSectionStuff } + + GROUP sonetLineStuff + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH Lines, + Paths or Virtual Tributaries." + + GROUP sonetFarEndLineStuff + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate SONET/SDH Lines, + Paths or Virtual Tributaries, and that + provide for a far end block error (FEBE) + information at the SONET/SDH Line Layer." + + GROUP sonetPathStuff + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH + Paths or Virtual Tributaries." + + OBJECT sonetPathCurrentWidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP sonetFarEndPathStuff + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate SONET/SDH + Paths or Virtual Tributaries, and that process + Far End information." + + + + GROUP sonetVTStuff + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH Virtual + Tributaries." + + OBJECT sonetVTCurrentWidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP sonetFarEndVTStuff + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate the SONET/SDH + floating Virtual Tributaries, and that process + Far End information." + + ::= { sonetCompliances 1 } + +-- current compliance statements + +sonetCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SONET/SDH interfaces." + + MODULE -- this module + MANDATORY-GROUPS { sonetMediumStuff2, sonetSectionStuff2 } + + OBJECT sonetMediumType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumLineCoding + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumLineType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetMediumCircuitIdentifier + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT sonetMediumLoopbackConfig + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT sonetSESthresholdSet + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one + of the enumerated values need be supported." + + GROUP sonetLineStuff2 + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH Lines, + Paths or Virtual Tributaries." + + GROUP sonetFarEndLineStuff2 + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate SONET/SDH Lines, + Paths or Virtual Tributaries, and that + provide for a far end block error (FEBE) + information at the SONET/SDH Line Layer." + + GROUP sonetPathStuff2 + DESCRIPTION + "Implementation of this group is mandatory for all + SONET/SDH systems that terminate SONET/SDH + Paths or Virtual Tributaries." + + OBJECT sonetPathCurrentWidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP sonetFarEndPathStuff2 + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate SONET/SDH + Paths or Virtual Tributaries, and that process + Far End information." + + GROUP sonetVTStuff2 + DESCRIPTION + "Implementation of this group is mandatory for all + + + + SONET/SDH systems that terminate SONET/SDH Virtual + Tributaries." + + OBJECT sonetVTCurrentWidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP sonetFarEndVTStuff2 + DESCRIPTION + "Implementation of this group is optional for all + SONET/SDH systems that terminate the SONET/SDH + floating Virtual Tributaries, and that process + Far End information." + + ::= { sonetCompliances 2 } + +-- units of conformance + +-- deprecated groups + +sonetMediumStuff OBJECT-GROUP + OBJECTS { sonetMediumType, + sonetMediumTimeElapsed, + sonetMediumValidIntervals, + sonetMediumLineCoding, + sonetMediumLineType, + sonetMediumCircuitIdentifier } + STATUS deprecated + DESCRIPTION + "A collection of objects providing configuration + information applicable to all SONET/SDH interfaces." + ::= { sonetGroups 1 } + +sonetSectionStuff OBJECT-GROUP + OBJECTS { sonetSectionCurrentStatus, + sonetSectionCurrentESs, + sonetSectionCurrentSESs, + sonetSectionCurrentSEFSs, + sonetSectionCurrentCVs, + sonetSectionIntervalESs, + sonetSectionIntervalSESs, + sonetSectionIntervalSEFSs, + sonetSectionIntervalCVs + } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + + + + specific to SONET/SDH Section interfaces." + ::= { sonetGroups 2 } + +sonetLineStuff OBJECT-GROUP + OBJECTS { sonetLineCurrentStatus, + sonetLineCurrentESs, + sonetLineCurrentSESs, + sonetLineCurrentCVs, + sonetLineCurrentUASs, + sonetLineIntervalESs, + sonetLineIntervalSESs, + sonetLineIntervalCVs, + sonetLineIntervalUASs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Line interfaces." + ::= { sonetGroups 3 } + +sonetFarEndLineStuff OBJECT-GROUP + OBJECTS { sonetFarEndLineCurrentESs, + sonetFarEndLineCurrentSESs, + sonetFarEndLineCurrentCVs, + sonetFarEndLineCurrentUASs, + sonetFarEndLineIntervalESs, + sonetFarEndLineIntervalSESs, + sonetFarEndLineIntervalCVs, + sonetFarEndLineIntervalUASs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Line interfaces, + and maintaining Line Far End information." + ::= { sonetGroups 4 } + +sonetPathStuff OBJECT-GROUP + OBJECTS { sonetPathCurrentWidth, + sonetPathCurrentStatus, + sonetPathCurrentESs, + sonetPathCurrentSESs, + sonetPathCurrentCVs, + sonetPathCurrentUASs, + sonetPathIntervalESs, + sonetPathIntervalSESs, + sonetPathIntervalCVs, + sonetPathIntervalUASs } + STATUS deprecated + DESCRIPTION + + + + "A collection of objects providing information + specific to SONET/SDH Path interfaces." + ::= { sonetGroups 5 } + +sonetFarEndPathStuff OBJECT-GROUP + OBJECTS { sonetFarEndPathCurrentESs, + sonetFarEndPathCurrentSESs, + sonetFarEndPathCurrentCVs, + sonetFarEndPathCurrentUASs, + sonetFarEndPathIntervalESs, + sonetFarEndPathIntervalSESs, + sonetFarEndPathIntervalCVs, + sonetFarEndPathIntervalUASs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Path interfaces, + and maintaining Path Far End information." + ::= { sonetGroups 6 } + +sonetVTStuff OBJECT-GROUP + OBJECTS { sonetVTCurrentWidth, + sonetVTCurrentStatus, + sonetVTCurrentESs, + sonetVTCurrentSESs, + sonetVTCurrentCVs, + sonetVTCurrentUASs, + sonetVTIntervalESs, + sonetVTIntervalSESs, + sonetVTIntervalCVs, + sonetVTIntervalUASs } + STATUS deprecated + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH VT interfaces." + ::= { sonetGroups 7 } + +sonetFarEndVTStuff OBJECT-GROUP + OBJECTS { sonetFarEndVTCurrentESs, + sonetFarEndVTCurrentSESs, + sonetFarEndVTCurrentCVs, + sonetFarEndVTCurrentUASs, + sonetFarEndVTIntervalESs, + sonetFarEndVTIntervalSESs, + sonetFarEndVTIntervalCVs, + sonetFarEndVTIntervalUASs } + STATUS deprecated + DESCRIPTION + + + + "A collection of objects providing information + specific to SONET/SDH VT interfaces, + and maintaining VT Far End information." + ::= { sonetGroups 8 } + +-- current groups + +sonetMediumStuff2 OBJECT-GROUP + OBJECTS { sonetMediumType, + sonetMediumTimeElapsed, + sonetMediumValidIntervals, + sonetMediumLineCoding, + sonetMediumLineType, + sonetMediumCircuitIdentifier, + sonetMediumInvalidIntervals, + sonetMediumLoopbackConfig, + sonetSESthresholdSet } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information applicable to all SONET/SDH interfaces." + ::= { sonetGroups 9 } + +sonetSectionStuff2 OBJECT-GROUP + OBJECTS { sonetSectionCurrentStatus, + sonetSectionCurrentESs, + sonetSectionCurrentSESs, + sonetSectionCurrentSEFSs, + sonetSectionCurrentCVs, + sonetSectionIntervalESs, + sonetSectionIntervalSESs, + sonetSectionIntervalSEFSs, + sonetSectionIntervalCVs, + sonetSectionIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Section interfaces." + ::= { sonetGroups 10 } + +sonetLineStuff2 OBJECT-GROUP + OBJECTS { sonetLineCurrentStatus, + sonetLineCurrentESs, + sonetLineCurrentSESs, + sonetLineCurrentCVs, + sonetLineCurrentUASs, + sonetLineIntervalESs, + sonetLineIntervalSESs, + + + + sonetLineIntervalCVs, + sonetLineIntervalUASs, + sonetLineIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Line interfaces." + ::= { sonetGroups 11 } + +sonetPathStuff2 OBJECT-GROUP + OBJECTS { sonetPathCurrentWidth, + sonetPathCurrentStatus, + sonetPathCurrentESs, + sonetPathCurrentSESs, + sonetPathCurrentCVs, + sonetPathCurrentUASs, + sonetPathIntervalESs, + sonetPathIntervalSESs, + sonetPathIntervalCVs, + sonetPathIntervalUASs, + sonetPathIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Path interfaces." + ::= { sonetGroups 12 } + +sonetVTStuff2 OBJECT-GROUP + OBJECTS { sonetVTCurrentWidth, + sonetVTCurrentStatus, + sonetVTCurrentESs, + sonetVTCurrentSESs, + sonetVTCurrentCVs, + sonetVTCurrentUASs, + sonetVTIntervalESs, + sonetVTIntervalSESs, + sonetVTIntervalCVs, + sonetVTIntervalUASs, + sonetVTIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH VT interfaces." + ::= { sonetGroups 13 } + +sonetFarEndLineStuff2 OBJECT-GROUP + OBJECTS { sonetFarEndLineCurrentESs, + sonetFarEndLineCurrentSESs, + + + + sonetFarEndLineCurrentCVs, + sonetFarEndLineCurrentUASs, + sonetFarEndLineIntervalESs, + sonetFarEndLineIntervalSESs, + sonetFarEndLineIntervalCVs, + sonetFarEndLineIntervalUASs, + sonetFarEndLineIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Line interfaces, + and maintaining Line Far End information." + ::= { sonetGroups 14 } + +sonetFarEndPathStuff2 OBJECT-GROUP + OBJECTS { sonetFarEndPathCurrentESs, + sonetFarEndPathCurrentSESs, + sonetFarEndPathCurrentCVs, + sonetFarEndPathCurrentUASs, + sonetFarEndPathIntervalESs, + sonetFarEndPathIntervalSESs, + sonetFarEndPathIntervalCVs, + sonetFarEndPathIntervalUASs, + sonetFarEndPathIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH Path interfaces, + and maintaining Path Far End information." + ::= { sonetGroups 15 } + +sonetFarEndVTStuff2 OBJECT-GROUP + OBJECTS { sonetFarEndVTCurrentESs, + sonetFarEndVTCurrentSESs, + sonetFarEndVTCurrentCVs, + sonetFarEndVTCurrentUASs, + sonetFarEndVTIntervalESs, + sonetFarEndVTIntervalSESs, + sonetFarEndVTIntervalCVs, + sonetFarEndVTIntervalUASs, + sonetFarEndVTIntervalValidData } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to SONET/SDH VT interfaces, + and maintaining VT Far End information." + ::= { sonetGroups 16 } + + + + +END diff --git a/mibs/ietf/SOURCE-ROUTING-MIB b/mibs/ietf/SOURCE-ROUTING-MIB new file mode 100644 index 0000000..b97a28b --- /dev/null +++ b/mibs/ietf/SOURCE-ROUTING-MIB @@ -0,0 +1,456 @@ +SOURCE-ROUTING-MIB DEFINITIONS ::= BEGIN + +IMPORTS + Counter, Gauge + FROM RFC1155-SMI + dot1dBridge, dot1dSr + FROM BRIDGE-MIB + OBJECT-TYPE + FROM RFC-1212; + + + +-- groups in the SR MIB + +-- dot1dSr is imported from the Bridge MIB + +dot1dPortPair OBJECT IDENTIFIER ::= { dot1dBridge 10 } + +-- the dot1dSr group + +-- this group is implemented by those bridges that +-- support the source route bridging mode, including Source +-- Routing and SRT bridges. + + +dot1dSrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dSrPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table that contains information about every + port that is associated with this source route + bridge." + ::= { dot1dSr 1 } + +dot1dSrPortEntry OBJECT-TYPE + SYNTAX Dot1dSrPortEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of information for each port of a source + route bridge." + INDEX { dot1dSrPort } + ::= { dot1dSrPortTable 1 } + +Dot1dSrPortEntry ::= + SEQUENCE { + dot1dSrPort + INTEGER, + dot1dSrPortHopCount + INTEGER, + dot1dSrPortLocalSegment + INTEGER, + dot1dSrPortBridgeNum + INTEGER, + dot1dSrPortTargetSegment + INTEGER, + dot1dSrPortLargestFrame + INTEGER, + dot1dSrPortSTESpanMode + INTEGER, + dot1dSrPortSpecInFrames + Counter, + dot1dSrPortSpecOutFrames + Counter, + dot1dSrPortApeInFrames + Counter, + dot1dSrPortApeOutFrames + Counter, + dot1dSrPortSteInFrames + Counter, + dot1dSrPortSteOutFrames + Counter, + dot1dSrPortSegmentMismatchDiscards + Counter, + dot1dSrPortDuplicateSegmentDiscards + Counter, + dot1dSrPortHopCountExceededDiscards + Counter, + dot1dSrPortDupLanIdOrTreeErrors + Counter, + dot1dSrPortLanIdMismatches + Counter + } + +dot1dSrPort OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The port number of the port for which this entry + contains Source Route management information." + ::= { dot1dSrPortEntry 1 } + +dot1dSrPortHopCount OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum number of routing descriptors allowed + in an All Paths or Spanning Tree Explorer frames." + ::= { dot1dSrPortEntry 2 } + +dot1dSrPortLocalSegment OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The segment number that uniquely identifies the + segment to which this port is connected. Current + source routing protocols limit this value to the + range: 0 through 4095. (The value 0 is used by + some management applications for special test + cases.) A value of 65535 signifies that no segment + number is assigned to this port." + ::= { dot1dSrPortEntry 3 } + +dot1dSrPortBridgeNum OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A bridge number uniquely identifies a bridge when + more than one bridge is used to span the same two + segments. Current source routing protocols limit + this value to the range: 0 through 15. A value of + 65535 signifies that no bridge number is assigned + to this bridge." + ::= { dot1dSrPortEntry 4 } + +dot1dSrPortTargetSegment OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The segment number that corresponds to the target + segment this port is considered to be connected to + by the bridge. Current source routing protocols + limit this value to the range: 0 through 4095. + (The value 0 is used by some management + applications for special test cases.) A value of + 65535 signifies that no target segment is assigned + to this port." + ::= { dot1dSrPortEntry 5 } + +-- It would be nice if we could use ifMtu as the size of the +-- largest frame, but we can't because ifMtu is defined to be +-- the size that the (inter-)network layer can use which can +-- differ from the MAC layer (especially if several layers of +-- encapsulation are used). + +dot1dSrPortLargestFrame OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The maximum size of the INFO field (LLC and + above) that this port can send/receive. It does + not include any MAC level (framing) octets. The + value of this object is used by this bridge to + determine whether a modification of the + LargestFrame (LF, see [14]) field of the Routing + Control field of the Routing Information Field is + necessary. + + 64 valid values are defined by the IEEE 802.5M SRT + Addendum: 516, 635, 754, 873, 993, 1112, 1231, + 1350, 1470, 1542, 1615, 1688, 1761, 1833, 1906, + 1979, 2052, 2345, 2638, 2932, 3225, 3518, 3812, + 4105, 4399, 4865, 5331, 5798, 6264, 6730, 7197, + 7663, 8130, 8539, 8949, 9358, 9768, 10178, 10587, + 10997, 11407, 12199, 12992, 13785, 14578, 15370, + 16163, 16956, 17749, 20730, 23711, 26693, 29674, + 32655, 35637, 38618, 41600, 44591, 47583, 50575, + 53567, 56559, 59551, and 65535. + + An illegal value will not be accepted by the + bridge." + ::= { dot1dSrPortEntry 6 } + +dot1dSrPortSTESpanMode OBJECT-TYPE + SYNTAX INTEGER { + auto-span(1), + disabled(2), + forced(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Determines how this port behaves when presented + with a Spanning Tree Explorer frame. The value + 'disabled(2)' indicates that the port will not + accept or send Spanning Tree Explorer packets; any + STE packets received will be silently discarded. + The value 'forced(3)' indicates the port will + always accept and propagate Spanning Tree Explorer + frames. This allows a manually configured + Spanning Tree for this class of packet to be + configured. Note that unlike transparent + bridging, this is not catastrophic to the network + if there are loops. The value 'auto-span(1)' can + only be returned by a bridge that both implements + the Spanning Tree Protocol and has use of the + protocol enabled on this port. The behavior of the + port for Spanning Tree Explorer frames is + determined by the state of dot1dStpPortState. If + the port is in the 'forwarding' state, the frame + will be accepted or propagated. Otherwise, it + will be silently discarded." + ::= { dot1dSrPortEntry 7 } + +dot1dSrPortSpecInFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Specifically Routed frames, also + referred to as Source Routed Frames, that have + been received from this port's segment." + ::= { dot1dSrPortEntry 8 } + +dot1dSrPortSpecOutFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Specifically Routed frames, also + referred to as Source Routed Frames, that this + port has transmitted on its segment." + ::= { dot1dSrPortEntry 9 } + +dot1dSrPortApeInFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of All Paths Explorer frames, also + referred to as All Routes Explorer frames, that + have been received by this port from its segment." + ::= { dot1dSrPortEntry 10 } + +dot1dSrPortApeOutFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of all Paths Explorer Frames, also + referred to as All Routes Explorer frames, that + have been transmitted by this port on its + segment." + ::= { dot1dSrPortEntry 11 } + +dot1dSrPortSteInFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of spanning tree explorer frames that + have been received by this port from its segment." + ::= { dot1dSrPortEntry 12 } + +dot1dSrPortSteOutFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of spanning tree explorer frames that + have been transmitted by this port on its + segment." + ::= { dot1dSrPortEntry 13 } + +dot1dSrPortSegmentMismatchDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of explorer frames that have been + discarded by this port because the routing + descriptor field contained an invalid adjacent + segment value." + ::= { dot1dSrPortEntry 14 } + +dot1dSrPortDuplicateSegmentDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of frames that have been discarded by + this port because the routing descriptor field + contained a duplicate segment identifier." + ::= { dot1dSrPortEntry 15 } + +dot1dSrPortHopCountExceededDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of explorer frames that have been + discarded by this port because the Routing + Information Field has exceeded the maximum route + descriptor length." + ::= { dot1dSrPortEntry 16 } + +dot1dSrPortDupLanIdOrTreeErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of duplicate LAN IDs or Tree errors. + This helps in detection of problems in networks + containing older IBM Source Routing Bridges." + ::= { dot1dSrPortEntry 17 } + +dot1dSrPortLanIdMismatches OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ARE and STE frames that were + discarded because the last LAN ID in the routing + information field did not equal the LAN-in ID. + This error can occur in implementations which do + only a LAN-in ID and Bridge Number check instead + of a LAN-in ID, Bridge Number, and LAN-out ID + check before they forward broadcast frames." + ::= { dot1dSrPortEntry 18 } + + +-- scalar object in dot1dSr + +dot1dSrBridgeLfMode OBJECT-TYPE + SYNTAX INTEGER { + mode3(1), + mode6(2) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates whether the bridge operates using older + 3 bit length negotiation fields or the newer 6 bit + length field in its RIF." + ::= { dot1dSr 2 } + + +-- The Port-Pair Database + +-- Implementation of this group is optional. + +-- This group is implemented by those bridges that support +-- the direct multiport model of the source route bridging +-- mode as defined in the IEEE 802.5 SRT Addendum to +-- 802.1d. + +-- Bridges implementing this group may report 65535 for +-- dot1dSrPortBridgeNumber and dot1dSrPortTargetSegment, +-- indicating that those objects are not applicable. + +dot1dPortPairTableSize OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of entries in the Bridge Port + Pair Database." + ::= { dot1dPortPair 1 } + + +-- the Bridge Port-Pair table + +-- this table represents port pairs within a bridge forming +-- a unique bridge path, as defined in the IEEE 802.5M SRT +-- Addendum. + +dot1dPortPairTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot1dPortPairEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table that contains information about every + port pair database entity associated with this + source routing bridge." + ::= { dot1dPortPair 2 } + +dot1dPortPairEntry OBJECT-TYPE + SYNTAX Dot1dPortPairEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of information for each port pair entity + of a bridge." + INDEX { dot1dPortPairLowPort, dot1dPortPairHighPort } + ::= { dot1dPortPairTable 1 } + +Dot1dPortPairEntry ::= + SEQUENCE { + dot1dPortPairLowPort + INTEGER, + dot1dPortPairHighPort + INTEGER, + dot1dPortPairBridgeNum + INTEGER, + dot1dPortPairBridgeState + INTEGER + } + +dot1dPortPairLowPort OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port number of the lower numbered port for + which this entry contains port pair database + information." + ::= { dot1dPortPairEntry 1 } + +dot1dPortPairHighPort OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The port number of the higher numbered port for + which this entry contains port pair database + information." + ::= { dot1dPortPairEntry 2 } + +dot1dPortPairBridgeNum OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A bridge number that uniquely identifies the path + provided by this source routing bridge between the + segments connected to dot1dPortPairLowPort and + dot1dPortPairHighPort. The purpose of bridge + number is to disambiguate between multiple paths + connecting the same two LANs." + ::= { dot1dPortPairEntry 3 } + +dot1dPortPairBridgeState OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + invalid(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of dot1dPortPairBridgeNum. Writing + 'invalid(3)' to this object removes the + corresponding entry." + ::= { dot1dPortPairEntry 4 } + + + + +END diff --git a/mibs/ietf/SSPM-MIB b/mibs/ietf/SSPM-MIB new file mode 100644 index 0000000..7031185 --- /dev/null +++ b/mibs/ietf/SSPM-MIB @@ -0,0 +1,1090 @@ +SSPM-MIB DEFINITIONS ::= BEGIN + + IMPORTS + + MODULE-IDENTITY, OBJECT-TYPE, + Counter32, Integer32, Unsigned32 + FROM SNMPv2-SMI --[RFC2578] + + TEXTUAL-CONVENTION, StorageType, + TruthValue, RowStatus + FROM SNMPv2-TC --[RFC2579] + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF --[RFC2578, + -- RFC2579, + -- RFC2580] + OwnerString, rmon + FROM RMON-MIB --[RFC2819] + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB --[RFC3291] + + + + + InterfaceIndexOrZero + FROM IF-MIB --[RFC2863] + + AppLocalIndex + FROM APM-MIB --[RFC3729] + + Utf8String + FROM SYSAPPL-MIB; --[RFC2287] + + sspmMIB MODULE-IDENTITY + LAST-UPDATED "200507280000Z" -- July 28, 2005 + ORGANIZATION "IETF RMON MIB working group" + CONTACT-INFO + " Carl W. Kalbfleisch + Consultant + + E-mail: ietf@kalbfleisch.us + + Working group mailing list: rmonmib@ietf.org + To subscribe send email to rmonmib-request@ietf.org" + DESCRIPTION + "This SSPM MIB module is applicable to probes + implementing Synthetic Source for Performance + Monitoring functions. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4149; see the RFC + itself for full legal notices." + + -- revision history + + REVISION "200507280000Z" -- July 28, 2005 + DESCRIPTION + "The original version of this MIB module, + was published as RFC4149." + ::= { rmon 28 } + +-- +-- Object Identifier Assignments +-- +sspmMIBObjects OBJECT IDENTIFIER ::= { sspmMIB 1 } +sspmMIBNotifications OBJECT IDENTIFIER ::= { sspmMIB 2 } +sspmMIBConformance OBJECT IDENTIFIER ::= { sspmMIB 3 } + +-- +-- Textual Conventions +-- + + + + +SspmMicroSeconds ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unit of time with resolution of MicroSeconds." + SYNTAX Unsigned32 + +SspmClockSource ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An indication of the source of the clock as defined by the + NTP specification RFC1305 [RFC1305] definition of stratum: + + Stratum (sys.stratum, peer.stratum, pkt.stratum): This is + an integer indicating the stratum of the local clock, + with values defined as follows: + + 0 unspecified + + 1 primary reference (e.g., calibrated atomic clock, + radio clock) + + 2-255 secondary reference (via NTP)." + REFERENCE + "RFC1305." + SYNTAX Integer32 (0..255) + +SspmClockMaxSkew ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + -- UNITS "Seconds" + DESCRIPTION + "An indication of the accuracy of the clock as defined by + RFC1305. This variable indicates the maximum offset + error due to skew of the local clock over the + time interval 86400 seconds, in seconds." + REFERENCE + "RFC1305." + SYNTAX Integer32 (1..65535) + +-- +-- sspmGeneral +-- +sspmGeneral OBJECT IDENTIFIER ::= { sspmMIBObjects 1 } +sspmGeneralClockResolution OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-only + + + + STATUS current + -- UNITS Microseconds + DESCRIPTION + "A read-only variable indicating the resolution + of the measurements possible by this device." + ::= { sspmGeneral 1 } + +sspmGeneralClockMaxSkew OBJECT-TYPE + SYNTAX SspmClockMaxSkew + MAX-ACCESS read-only + STATUS current + -- UNITS Seconds + DESCRIPTION + "A read-only variable indicating the maximum offset + error due to skew of the local clock over the + time interval 86400 seconds, in seconds." + ::= { sspmGeneral 2 } + + +sspmGeneralClockSource OBJECT-TYPE + SYNTAX SspmClockSource + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A read-only variable indicating the source of the clock. + This is provided to allow a user to determine how accurate + the timing mechanism is compared with other devices. This + is needed for the coordination of time values + between probes for one-way measurements." + ::= { sspmGeneral 3 } + +sspmGeneralMinFrequency OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-only + -- units MicroSeconds + STATUS current + DESCRIPTION + "A read-only variable that indicates the devices' + capability for the minimum supported + sspmSourceFrequency. If sspmSourceFrequency is + set to a value lower than the value reported + by this attribute, then the set of sspmSourceFrequency + will fail with an inconsistent value error." + ::= { sspmGeneral 4 } + +-- +-- sspmCapabilities +-- + + + +-- Describes the capabilities of the SSPM device. +-- +sspmCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF SspmCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of SSPM capabilities." + ::= { sspmGeneral 5 } + +sspmCapabilitiesEntry OBJECT-TYPE + SYNTAX SspmCapabilitiesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Details about a particular SSPM capability." + INDEX { sspmCapabilitiesInstance } + ::= { sspmCapabilitiesTable 1 } + +SspmCapabilitiesEntry ::= SEQUENCE { + sspmCapabilitiesInstance AppLocalIndex + } + +sspmCapabilitiesInstance OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether SSPM configuration of the corresponding + AppLocalIndex is supported by this device. Generally, + entries in this table are only made by the device when the + configuration of the measurement is available." + ::= { sspmCapabilitiesEntry 1 } + +-- +-- sspmSource +-- +-- Contains the details of the source of the +-- Synthetic Sources for Performance Monitoring algorithms. +-- This information is split into two tables. The first defines +-- profiles that can be applied to specific sources in the +-- control table. +-- +sspmSource OBJECT IDENTIFIER ::= { sspmMIBObjects 2 } + +-- +-- sspmSourceProfileTable +-- Defines template profiles for measurements. + + + +-- +sspmSourceProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF SspmSourceProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of SSPM Source Profiles configured." + ::= { sspmSource 1 } + +sspmSourceProfileEntry OBJECT-TYPE + SYNTAX SspmSourceProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Details about a particular SSPM Source Profile + configuration. Entries must exist in this table + in order to be referenced by rows in the + sspmSourceControlTable." + INDEX { sspmSourceProfileInstance } + ::= { sspmSourceProfileTable 1 } + +SspmSourceProfileEntry ::= SEQUENCE { + sspmSourceProfileInstance Unsigned32, + sspmSourceProfileType AppLocalIndex, + sspmSourceProfilePacketSize Unsigned32, + sspmSourceProfilePacketFillType INTEGER, + sspmSourceProfilePacketFillValue OCTET STRING, + sspmSourceProfileTOS Integer32, + sspmSourceProfileFlowLabel Integer32, + sspmSourceProfileLooseSrcRteFill OCTET STRING, + sspmSourceProfileLooseSrcRteLen Integer32, + sspmSourceProfileTTL Integer32, + sspmSourceProfileNoFrag TruthValue, + sspmSourceProfile8021Tagging Integer32, + sspmSourceProfileUsername Utf8String, + sspmSourceProfilePassword Utf8String, + sspmSourceProfileParameter OCTET STRING, + sspmSourceProfileOwner OwnerString, + sspmSourceProfileStorageType StorageType, + sspmSourceProfileStatus RowStatus +} + +sspmSourceProfileInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index." + + + + ::= { sspmSourceProfileEntry 1 } + +sspmSourceProfileType OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The AppLocalIndex value that uniquely identifies the + measurement per the APM-MIB. In order to create a row + in this table, there must be a corresponding row in the + sspmCapabilitiesTable. + + When attempting to set this object, if no + corresponding row exists in the sspmCapabilitiesTable, + then the agent should return a 'badValue' error." + ::= { sspmSourceProfileEntry 2} + +sspmSourceProfilePacketSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The size of packet to be transmitted in bytes. The + size accounts for all data within the IPv4 or IPv6 + payloads, excluding the IP headers, IP header options + and link-level protocol headers. + + If the size is set smaller than the minimum allowed + packet size or greater than the maximum allowed + packet size, then the set should fail, and the agent + should return a 'badValue' error." + ::= { sspmSourceProfileEntry 3 } + +sspmSourceProfilePacketFillType OBJECT-TYPE + SYNTAX INTEGER { + random (1), + pattern (2), + url(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates how the packet is filled. + + 'random' indicates that the packet contains random + data patterns. This is probe and implementation + dependent. + + + + + 'pattern' indicates that the pattern defined in the + sspmSourceProfilePacketFillValue attribute is used to + fill the packet. + + 'url' indicates that the value of + sspmSourceProfilePacketFillValue should + contain a URL. The contents of the document + at that URL are retrieved when sspmSourceStatus becomes + active and utilized in the packet. If the attempt to + access that URL fails, then the row status is set to + 'notReady', and the set should fail with + 'inconsistentValue'. This value must contain a + dereferencable URL of the type 'http:', 'https:', or + 'ftp:' only." + ::= { sspmSourceProfileEntry 4 } + +sspmSourceProfilePacketFillValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The string value with which to fill the packet. If + sspmSourceProfilePacketFillType is set to 'pattern', + then this pattern is repeated until the packet is + sspmSourcePacketSize in bytes. Note that if the + length of the octet string specified for this + value does not divide evenly into the packet + size, then an incomplete last copy of this data + may be copied into the packet. If the value of + sspmSourceProfilePacketFillType is set to 'random', then + this attribute is unused. If the value of the + sspmSourceProfilePacketFillType is set to 'url', then + the URL specified in this attribute is retrieved + and used by the probe. In the case of a URL, this value + must contain a dereferencable URL of the type + 'http:', 'https:', or 'ftp:' only." + ::= { sspmSourceProfileEntry 5 } + +sspmSourceProfileTOS OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Represents the TOS field in the IP packet header. The + value of this object defaults to zero if not set." + DEFVAL { 0 } + ::= { sspmSourceProfileEntry 6 } + + + + +sspmSourceProfileFlowLabel OBJECT-TYPE + SYNTAX Integer32 (0..1048575) -- 20-bit range (0 to 0xfffff) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to specify the Flow Label in a IPv6 + packet (RFC 2460) to force special handling by the IPv6 + routers; e.g., non-default quality-of-service handling. + + This object is meaningful only when the object + sspmSourceDestAddressType is IPv6(2). + The value of this object defaults to zero if not set." + DEFVAL { 0 } + ::= { sspmSourceProfileEntry 7 } + +sspmSourceProfileLooseSrcRteFill OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..240)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In the event that the test should run over a + specific route, the intent is to force the route using the + Loose Source Route option in IPv4 [RFC791] and + IPv6 [RFC2460]. This object contains a + series of IP addresses along the path that would be + put into the loose source route option in the IP header. + + The IPv4 addresses are to be listed as 32-bit + address values, and the IPv6 addresses are to be + listed as a string of 128-bit addresses. The + maximum length allowed within the IPv4 source route + option is 63 addresses. To simply account for + IPv6 addresses as well, the maximum length of the + octet string is 240. This allows up to 60 + IPv4 addresses or up to 15 IPv6 addresses in the + string." + ::= { sspmSourceProfileEntry 8 } + +sspmSourceProfileLooseSrcRteLen OBJECT-TYPE + SYNTAX Integer32(0..240) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In the event that the test should run over a + specific route, the intent is to force the route. + This attribute specifies the length of data to + be copied from the sspmSourceProfileLooseSrcRteFill + into the route data fields of the loose source route + + + + options in the IPv4 or IPv6 headers." + ::= { sspmSourceProfileEntry 9 } + +sspmSourceProfileTTL OBJECT-TYPE + SYNTAX Integer32(1..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If non-zero, this specifies the value to place into + the TTL field on transmission." + ::= { sspmSourceProfileEntry 10 } + +sspmSourceProfileNoFrag OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When true, the 'Don't Fragment Bit' should be set + on the packet header." + ::= { sspmSourceProfileEntry 11 } + +sspmSourceProfile8021Tagging OBJECT-TYPE + SYNTAX Integer32 (-1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "IEEE 802.1Q tagging used in IEEE 802.1D bridged + environments. + + A value of -1 indicates that the packets are untagged. + + A value of 0 to 65535 is the value of the tag to be + inserted in the tagged packets. + + Note that according to IEEE 802.1Q, VLAN-ID tags with + a value of 4095 shall not be transmitted on the wire. + As the VLAN-ID is encoded in the 12 least significant + bits on the tag, values that translate in a binary + representation of all 1's in the last 12 bits + SHALL NOT be configured. In this case, the set should + fail, and return an error-status of 'inconsistentValue'." + ::= { sspmSourceProfileEntry 12 } + +sspmSourceProfileUsername OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "An optional username used by the application protocol." + ::= { sspmSourceProfileEntry 13 } + +sspmSourceProfilePassword OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An optional password used by the application protocol." + ::= { sspmSourceProfileEntry 14 } + +sspmSourceProfileParameter OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..65535)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "An optional parameter used by the application protocol. + For DNS, this would be the hostname or IP. For HTTP, + this would be the URL. For nntp, this would be the + news group. For TCP, this would be the port number. + For SMTP, this would be the recipient (and could + assume the message is predefined)." + ::= { sspmSourceProfileEntry 15 } + +sspmSourceProfileOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name of the management station/application that + set up the profile." + ::= { sspmSourceProfileEntry 16 } + +sspmSourceProfileStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this sspmSourceProfileEntry. If the + value of this object is 'permanent', no objects in this row + need to be writable." + ::= { sspmSourceProfileEntry 17 } + +sspmSourceProfileStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Status of this profile. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + Once this object is set to active(1), no objects in the + sspmSourceProfileTable can be changed." + ::= { sspmSourceProfileEntry 18 } + +-- +-- sspmSourceControlTable +-- Defines specific measurement instances based on template +-- profiles in the sspmSourceProfileTable which must be +-- pre-configured. +-- + +sspmSourceControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SspmSourceControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of SSPM measurements configured." + ::= { sspmSource 2 } + +sspmSourceControlEntry OBJECT-TYPE + SYNTAX SspmSourceControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Details about a particular SSPM configuration." + INDEX { sspmSourceControlInstance } + ::= { sspmSourceControlTable 1 } + +SspmSourceControlEntry ::= SEQUENCE { + sspmSourceControlInstance Unsigned32, + sspmSourceControlProfile Integer32, + sspmSourceControlSrc InterfaceIndexOrZero, + sspmSourceControlDestAddrType InetAddressType, + sspmSourceControlDestAddr InetAddress, + sspmSourceControlEnabled TruthValue, + sspmSourceControlTimeOut SspmMicroSeconds, + sspmSourceControlSamplingDist INTEGER, + sspmSourceControlFrequency SspmMicroSeconds, + sspmSourceControlFirstSeqNum Unsigned32, + sspmSourceControlLastSeqNum Unsigned32, + sspmSourceControlOwner OwnerString, + sspmSourceControlStorageType StorageType, + sspmSourceControlStatus RowStatus + + + +} + +sspmSourceControlInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index." + ::= { sspmSourceControlEntry 1 } + +sspmSourceControlProfile OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A pointer to the profile (sspmSourceProfileEntry) that + this control entry uses to define the test being + performed." + ::= { sspmSourceControlEntry 2 } + +sspmSourceControlSrc OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ifIndex where the packet should originate from the + probe (if it matters). A value of zero indicates that + it does not matter and that the device decides." + ::= { sspmSourceControlEntry 3 } + +sspmSourceControlDestAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address by which the destination + is accessed." + ::= { sspmSourceControlEntry 4 } + +sspmSourceControlDestAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address for the destination. The formatting + of this object is controlled by the + sspmSourceControlDestAddrType object above. + + + + + When this object contains a DNS name, then the name is + resolved to an address each time measurement is to be made. + Further, the agent should not cache this address, + but instead should perform the resolution prior to each + measurement." + ::= { sspmSourceControlEntry 5 } + +sspmSourceControlEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When set to 'true', this test is enabled. When set to + 'false', it is disabled." + ::= { sspmSourceControlEntry 6 } + +sspmSourceControlTimeOut OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Timeout value for the measurement response. If no + response is received in the time specified, then + the test fails." + ::= { sspmSourceControlEntry 7 } + +sspmSourceControlSamplingDist OBJECT-TYPE + SYNTAX INTEGER { + deterministic(1), + poisson(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "When this attribute is set to 'deterministic', then + packets are generated at with a fixed inter-packet + injection time specified by sspmSourceFrequency. + + When this attribute is set to 'Poisson', then packets + are generated with inter-packet injection times sampled + from an exponential distribution with the single + distributional parameter determined by the inverse + frequency)." + ::= { sspmSourceControlEntry 8 } + +sspmSourceControlFrequency OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The inverse of this value is the rate at which packets + are generated. Refer to sspmSourceSamplingDistribution. + If the value set is less than the value of + sspmGeneralMinFrequency, then the set will fail with an + error-status of 'inconsistentValue'." + ::= { sspmSourceControlEntry 9 } + +sspmSourceControlFirstSeqNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The first sequence number of packets to be transmitted." + ::= { sspmSourceControlEntry 10 } + +sspmSourceControlLastSeqNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last sequence number transmitted. This value is updated + by the agent after packet generation." + ::= { sspmSourceControlEntry 11 } + +sspmSourceControlOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name of the management station/application that set + up the test." + ::= { sspmSourceControlEntry 12 } + +sspmSourceControlStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this sspmSourceControlEntry. If the + value of this object is 'permanent', no objects in this row + need to be writable." + ::= { sspmSourceControlEntry 13 } + +sspmSourceControlStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "Status of this source control entry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + When this attribute has the value of + 'active', none of the read-write or read-create attributes + in this table may be modified, with the exception of + sspmSourceControlEnabled." + ::= { sspmSourceControlEntry 14 } + +-- +-- sspmSinkTable +-- +-- Contains attributes for configuration of Synthetic +-- Sources for Performance Monitoring sinks, i.e., +-- sinks for receipt of one-way delay measurements. +-- +sspmSink OBJECT IDENTIFIER ::= { sspmMIBObjects 5 } + +sspmSinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF SspmSinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table configuring the sink for measurements." + ::= { sspmSink 1 } + +sspmSinkEntry OBJECT-TYPE + SYNTAX SspmSinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The details of a particular sink entry. If the measurement + is a round-trip type, then the sink entry will be on the + same probe as the corresponding sspmSourceEntry. If the + measurement is a one-way, type then the sink entry will be + on a different probe." + INDEX { sspmSinkInstance } + ::= { sspmSinkTable 1} + +SspmSinkEntry ::= SEQUENCE { + sspmSinkInstance Unsigned32, + sspmSinkType AppLocalIndex, + sspmSinkSourceAddressType InetAddressType, + sspmSinkSourceAddress InetAddress, + + + + sspmSinkExpectedRate SspmMicroSeconds, + sspmSinkEnable TruthValue, + sspmSinkExpectedFirstSequenceNum Unsigned32, + sspmSinkLastSequenceNumber Unsigned32, + sspmSinkLastSequenceInvalid Counter32, + sspmSinkStorageType StorageType, + sspmSinkStatus RowStatus +} + +sspmSinkInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index. When the measurement is for a round-trip + measurement, then this table entry is on the same probe as + the corresponding sspmSourceEntry, and the value of this + attribute should correspond to the value of + sspmSourceInstance. Management applications configuring + sinks for one-way measurements could define some + scheme whereby the sspmSinkInstance is unique across + all probes. Note that the unique key to this entry is + also constructed with sspmSinkType, + sspmSinkSourceAddressType, and sspmSinkSourceAddress. + To make the implementation simpler, those other + attributes are not included in the index but uniqueness + is still needed to receive all the packets." + ::= { sspmSinkEntry 1 } + +sspmSinkType OBJECT-TYPE + SYNTAX AppLocalIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The AppLocalIndex value that uniquely identifies the + measurement per the APM-MIB. In order to create a row + in this table, there must be a corresponding row in the + sspmCapabilitiesTable. If there is no corresponding + row in the sspmCapabilitiestable, then the agent will + return an error-status of 'inconsistentValue'." + ::= { sspmSinkEntry 2} + +sspmSinkSourceAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address of the source." + + + + ::= { sspmSinkEntry 3 } + +sspmSinkSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Internet address of the source. The formatting + of this object is controlled by the sspmSinkSourceAddressType + object above. + + This object should be set only to a valid device address + that has been administratively configured into the + device. If a set attempts to set this object to an + address that does not belong (i.e., is not administratively + configured into the device), the set should fail, and the + agent should return a error-status of 'inconsistentValue'." + ::= { sspmSinkEntry 4 } + +sspmSinkExpectedRate OBJECT-TYPE + SYNTAX SspmMicroSeconds + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The expected rate at which packets will arrive." + ::= { sspmSinkEntry 5 } + +sspmSinkEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates if the sink is enabled or not." + ::= { sspmSinkEntry 6 } + +sspmSinkExpectedFirstSequenceNum OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The expected first sequence number of packets. + This is used by the sink to determine if packets + were lost at the initiation of the test." + ::= { sspmSinkEntry 7 } + +sspmSinkLastSequenceNumber OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The last sequence number received." + ::= { sspmSinkEntry 8 } + +sspmSinkLastSequenceInvalid OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that arrived whose + sequence number was not one plus the value of + sspmSinkLastSequenceNumber." + ::= { sspmSinkEntry 9 } + +sspmSinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this sspmSinkEntry. If the value + of this object is 'permanent', no objects in this row + need to be writable." + ::= { sspmSinkEntry 10 } + +sspmSinkStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Status of this conceptual row. + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + Once this object is set to active(1), no objects with + MAX-ACCESS of read-create in the sspmSinkTable can + be changed." + ::= { sspmSinkEntry 11 } + +-- +-- Notifications +-- + +-- +-- Conformance information +-- +sspmCompliances OBJECT IDENTIFIER ::= { sspmMIBConformance 1 } +sspmGroups OBJECT IDENTIFIER ::= { sspmMIBConformance 2 } + + + +-- Compliance Statements +sspmGeneralCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "A general compliance that allows all things to be optional." + MODULE -- this module + + MANDATORY-GROUPS { sspmGeneralGroup } + + GROUP sspmSourceGroup + DESCRIPTION + "The SSPM Source Group is optional." + + GROUP sspmSinkGroup + DESCRIPTION + "The SSPM Sink Group is optional." + + GROUP sspmUserPassGroup + DESCRIPTION + "The SSPM User Pass Group is optional." + + ::= { sspmCompliances 1 } + +-- +-- SSPM Source Compliance +-- +sspmSourceFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "A source compliance. Use this compliance when implementing + a traffic-source-only device. This is useful for implementing + devices that probe other devices for intrusive application + monitoring. It is also useful for implementing the source + of one-way tests used with a sink-only device." + MODULE -- this module + + MANDATORY-GROUPS { sspmGeneralGroup, sspmSourceGroup } + + GROUP sspmUserPassGroup + DESCRIPTION + "The SSPM User Pass Group is optional." + ::= { sspmCompliances 2 } + +-- +-- SSPM Sink Compliance +-- +sspmSinkFullCompliance MODULE-COMPLIANCE + STATUS current + + + + DESCRIPTION + "A sink-only compliance. Use this compliance when implementing a + sink-only device. This is useful for devices to receive one-way + measurements." + MODULE -- this module + + MANDATORY-GROUPS { sspmGeneralGroup, sspmSinkGroup } + + ::= { sspmCompliances 3 } + +-- +-- Groups +-- +sspmGeneralGroup OBJECT-GROUP + OBJECTS { + sspmGeneralClockResolution, + sspmGeneralClockMaxSkew, + sspmGeneralClockSource, + sspmGeneralMinFrequency, + sspmCapabilitiesInstance + } + STATUS current + DESCRIPTION + "The objects in the SSPM General Group." + ::= { sspmGroups 1 } + +sspmSourceGroup OBJECT-GROUP + OBJECTS { + sspmSourceProfileType, + sspmSourceProfilePacketSize, + sspmSourceProfilePacketFillType, + sspmSourceProfilePacketFillValue, + sspmSourceProfileTOS, + sspmSourceProfileFlowLabel, + sspmSourceProfileLooseSrcRteFill, + sspmSourceProfileLooseSrcRteLen, + sspmSourceProfileTTL, + sspmSourceProfileNoFrag, + sspmSourceProfile8021Tagging, + sspmSourceProfileUsername, + sspmSourceProfilePassword, + sspmSourceProfileParameter, + sspmSourceProfileOwner, + sspmSourceProfileStorageType, + sspmSourceProfileStatus, + sspmSourceControlProfile, + sspmSourceControlSrc, + sspmSourceControlDestAddrType, + + + + sspmSourceControlDestAddr, + sspmSourceControlEnabled, + sspmSourceControlTimeOut, + sspmSourceControlSamplingDist, + sspmSourceControlFrequency, + sspmSourceControlFirstSeqNum, + sspmSourceControlLastSeqNum, + sspmSourceControlOwner, + sspmSourceControlStorageType, + sspmSourceControlStatus + } + STATUS current + DESCRIPTION + "The objects in the SSPM Source Group." + ::= { sspmGroups 2 } + +sspmUserPassGroup OBJECT-GROUP + OBJECTS { + sspmSourceProfileUsername, + sspmSourceProfilePassword + } + STATUS current + DESCRIPTION + "The objects in the SSPM Username and password group." + ::= { sspmGroups 3 } + +sspmSinkGroup OBJECT-GROUP + OBJECTS { + sspmSinkType, + sspmSinkSourceAddressType, + sspmSinkSourceAddress, + sspmSinkExpectedRate, + sspmSinkEnable, + sspmSinkExpectedFirstSequenceNum, + sspmSinkLastSequenceNumber, + sspmSinkLastSequenceInvalid, + sspmSinkStorageType, + sspmSinkStatus + } + STATUS current + DESCRIPTION + "The objects in the SSPM Sink Group." + ::= { sspmGroups 4 } + +END diff --git a/mibs/ietf/SYSAPPL-MIB b/mibs/ietf/SYSAPPL-MIB new file mode 100644 index 0000000..65ce422 --- /dev/null +++ b/mibs/ietf/SYSAPPL-MIB @@ -0,0 +1,1543 @@ + SYSAPPL-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, TimeTicks, Counter32, Gauge32 + FROM SNMPv2-SMI + DateAndTime, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + mib-2 FROM SNMPv2-SMI; + + -- System Application MIB + + sysApplMIB MODULE-IDENTITY + LAST-UPDATED "9710200000Z" + ORGANIZATION "IETF Applications MIB Working Group" + CONTACT-INFO + "Cheryl Krupczak (Editor, WG Advisor) + Postal: Empire Technologies, Inc. + 541 Tenth Street NW + Suite 169 + Atlanta, GA 30318 + USA + Phone: (770) 384-0184 + Email: cheryl@empiretech.com + + Jon Saperia (WG Chair) + Postal: BGS Systems, Inc. + One First Avenue + Waltham, MA 02254-9111 + USA + Phone: (617) 891-0000 + Email: saperia@networks.bgs.com" + DESCRIPTION + "The MIB module defines management objects that model + applications as collections of executables and files + installed and executing on a host system. The MIB + presents a system-level view of applications; i.e., + objects in this MIB are limited to those attributes + that can typically be obtained from the system itself + without adding special instrumentation to the applications." + ::= { mib-2 54 } + + + sysApplOBJ OBJECT IDENTIFIER ::= { sysApplMIB 1 } + sysApplInstalled OBJECT IDENTIFIER ::= { sysApplOBJ 1 } + sysApplRun OBJECT IDENTIFIER ::= { sysApplOBJ 2 } + sysApplMap OBJECT IDENTIFIER ::= { sysApplOBJ 3 } + sysApplNotifications OBJECT IDENTIFIER ::= { sysApplMIB 2 } + sysApplConformance OBJECT IDENTIFIER ::= { sysApplMIB 3 } + + -- Textual Conventions + + RunState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes the current execution state of + a running application or process. The possible + values are: + running(1), + runnable(2), - waiting for a resource (CPU, etc.) + waiting(3), - waiting for an event + exiting(4), + other(5) - other invalid state" + SYNTAX INTEGER { + running (1), + runnable (2), -- waiting for resource (CPU, etc.) + waiting (3), -- waiting for event + exiting (4), + other (5) -- other invalid state + } + +LongUtf8String ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1024a" + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC + represents information taken from the ISO/IEC IS + 10646-1 character set, encoded as an octet string + using the UTF-8 character encoding scheme described + in RFC 2044 [10]. For strings in 7-bit US-ASCII, + there is no impact since the UTF-8 representation + is identical to the US-ASCII encoding." + SYNTAX OCTET STRING (SIZE (0..1024)) + +Utf8String ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "To facilitate internationalization, this TC + represents information taken from the ISO/IEC IS + 10646-1 character set, encoded as an octet string + using the UTF-8 character encoding scheme described + in RFC 2044 [10]. For strings in 7-bit US-ASCII, + there is no impact since the UTF-8 representation + is identical to the US-ASCII encoding." + SYNTAX OCTET STRING (SIZE (0..255)) + + + + -- sysApplInstalled Group + -- This group provides information about application packages + -- that have been installed on the host computer. The group + -- contains two tables. The first, the sysApplInstallPkgTable, + -- describes the application packages, the second, the + -- sysApplInstallElmtTable, describes the constituent elements + -- (files and executables) which compose an application package. + + -- + -- In order to appear in this group, an application and its + -- component files must be discoverable by the system itself, + -- possibly through some type of software installation mechanism + -- or registry. + + -- sysApplInstallPkgTable + -- The system installed application packages table provides + -- information on the software packages installed on a system. + -- These packages may consist of many different files including + -- executable and non-executable files. + + sysApplInstallPkgTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplInstallPkgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table listing the software application packages + installed on a host computer. In order to appear in + this table, it may be necessary for the application + to be installed using some type of software + installation mechanism or global registry so that its + existence can be detected by the agent implementation." + + ::= { sysApplInstalled 1 } + + sysApplInstallPkgEntry OBJECT-TYPE + SYNTAX SysApplInstallPkgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing an installed application + package." + INDEX { sysApplInstallPkgIndex } + ::= { sysApplInstallPkgTable 1 } + + SysApplInstallPkgEntry ::= SEQUENCE { + sysApplInstallPkgIndex Unsigned32, + sysApplInstallPkgManufacturer Utf8String, + sysApplInstallPkgProductName Utf8String, + sysApplInstallPkgVersion Utf8String, + sysApplInstallPkgSerialNumber Utf8String, + sysApplInstallPkgDate DateAndTime, + sysApplInstallPkgLocation LongUtf8String + } + + sysApplInstallPkgIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer used only for indexing purposes. + Generally monotonically increasing from 1 as new + applications are installed. + + The value for each installed application must + remain constant at least from one re-initialization of + the network management entity which implements this + MIB module to the next re-initialization. + + The specific value is meaningful only within a given SNMP + entity. A sysApplInstallPkgIndex value must not be re-used + until the next agent entity restart in the event the + installed application entry is deleted." + ::= { sysApplInstallPkgEntry 1 } + + sysApplInstallPkgManufacturer OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Manufacturer of the software application package." + ::= { sysApplInstallPkgEntry 2 } + + sysApplInstallPkgProductName OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name assigned to the software application package + by the Manufacturer." + ::= { sysApplInstallPkgEntry 3 } + + sysApplInstallPkgVersion OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number assigned to the application package + by the manufacturer of the software." + ::= { sysApplInstallPkgEntry 4 } + + sysApplInstallPkgSerialNumber OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number of the software assigned by the + manufacturer." + ::= { sysApplInstallPkgEntry 5 } + + sysApplInstallPkgDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time this software application was installed + on the host." + ::= { sysApplInstallPkgEntry 6 } + + sysApplInstallPkgLocation OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The complete path name where the application package + is installed. For example, the value would be + '/opt/MyapplDir' if the application package was installed + in the /opt/MyapplDir directory." + ::= { sysApplInstallPkgEntry 7 } + + + -- sysApplInstallElmtTable + -- The table describing the individual application package + -- elements (files and executables) installed on the host computer. + + sysApplInstallElmtTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplInstallElmtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table details the individual application package + elements (files and executables) which comprise the + applications defined in the sysApplInstallPkg Table. + Each entry in this table has an index to the + sysApplInstallPkg table to identify the application + package of which it is a part. As a result, there may + be many entries in this table for each instance in the + sysApplInstallPkg Table. + + Table entries are indexed by sysApplInstallPkgIndex, + sysApplInstallElmtIndex to facilitate retrieval of + all elements associated with a particular installed + application package." + ::= { sysApplInstalled 2 } + + sysApplInstallElmtEntry OBJECT-TYPE + SYNTAX SysApplInstallElmtEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing an element of an installed + application. The element may be an executable or + non-executable file." + INDEX {sysApplInstallPkgIndex, sysApplInstallElmtIndex} + ::= { sysApplInstallElmtTable 1 } + + SysApplInstallElmtEntry ::= SEQUENCE { + sysApplInstallElmtIndex Unsigned32, + sysApplInstallElmtName Utf8String, + sysApplInstallElmtType INTEGER, + sysApplInstallElmtDate DateAndTime, + sysApplInstallElmtPath LongUtf8String, + sysApplInstallElmtSizeHigh Unsigned32, + sysApplInstallElmtSizeLow Unsigned32, + sysApplInstallElmtRole BITS, + sysApplInstallElmtModifyDate DateAndTime, + sysApplInstallElmtCurSizeHigh Unsigned32, + sysApplInstallElmtCurSizeLow Unsigned32 + + } + + sysApplInstallElmtIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary integer used for indexing. The value + of this index is unique among all rows in this table + that exist or have existed since the last agent restart." + ::= { sysApplInstallElmtEntry 1 } + + + sysApplInstallElmtName OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this element which is contained in the + application." + ::= { sysApplInstallElmtEntry 2 } + + sysApplInstallElmtType OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + nonexecutable(2), + operatingSystem(3), -- executable + deviceDriver(4), -- executable + application(5) -- executable + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of element that is part of the installed + application." + ::= { sysApplInstallElmtEntry 3 } + + sysApplInstallElmtDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that this component was installed on + the system." + ::= { sysApplInstallElmtEntry 4 } + + sysApplInstallElmtPath OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The full directory path where this element is installed. + For example, the value would be '/opt/EMPuma/bin' for an + element installed in the directory '/opt/EMPuma/bin'. + Most application packages include information about the + elements contained in the package. In addition, elements + are typically installed in sub-directories under the + package installation directory. In cases where the + element path names are not included in the package + information itself, the path can usually be determined + by a simple search of the sub-directories. If the + element is not installed in that location and there is + no other information available to the agent implementation, + then the path is unknown and null is returned." + ::= { sysApplInstallElmtEntry 5} + + sysApplInstallElmtSizeHigh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The installed file size in 2^32 byte blocks. This is + the size of the file on disk immediately after installation. + + For example, for a file with a total size of 4,294,967,296 + bytes, this variable would have a value of 1; for a file + with a total size of 4,294,967,295 bytes this variable + would be 0." + ::= { sysApplInstallElmtEntry 6 } + + sysApplInstallElmtSizeLow OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The installed file size modulo 2^32 bytes. This is + the size of the file on disk immediately after installation. + + For example, for a file with a total size of 4,294,967,296 + bytes this variable would have a value of 0; for a file with + a total size of 4,294,967,295 bytes this variable would be + 4,294,967,295." + ::= { sysApplInstallElmtEntry 7 } + + sysApplInstallElmtRole OBJECT-TYPE + SYNTAX BITS { + executable(0), + -- An application may have one or + -- more executable elements. The rest of the + -- bits have no meaning if the element is not + -- executable. + exclusive(1), + -- Only one copy of an exclusive element may be + -- running per invocation of the running + -- application. + primary(2), + -- The primary executable. An application can + -- have one, and only one element that is designated + -- as the primary executable. The execution of + -- this element constitutes an invocation of + -- the application. This is used by the agent + -- implementation to determine the initiation of + -- an application. The primary executable must + -- remain running long enough for the agent + -- implementation to detect its presence. + required(3), + -- An application may have zero or more required + -- elements. All required elements must be running + + -- in order for the application to be judged to be + -- running and healthy. + dependent(4), + -- An application may have zero or more + -- dependent elements. Dependent elements may + -- not be running unless required elements are. + unknown(5) + -- Default value for the case when an operator + -- has not yet assigned one of the other values. + -- When set, bits 1, 2, 3, and 4 have no meaning. + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An operator assigned value used in the determination of + application status. This value is used by the agent to + determine both the mapping of started processes to the + initiation of an application, as well as to allow for a + determination of application health. The default value, + unknown(5), is used when an operator has not yet assigned + one of the other values. If unknown(5) is set, bits + 1 - 4 have no meaning. The possible values are: + + executable(0), + An application may have one or + more executable elements. The rest of the + bits have no meaning if the element is not + executable. + exclusive(1), + Only one copy of an exclusive element may be + running per invocation of the running + application. + primary(2), + The primary executable. An application can + have one, and only one element that is designated + as the primary executable. The execution of + this element constitutes an invocation of + the application. This is used by the agent + implementation to determine the initiation of + an application. The primary executable must + remain running long enough for the agent + implementation to detect its presence. + required(3), + An application may have zero or more required + elements. All required elements must be running + in order for the application to be judged to be + running and healthy. + dependent(4), + An application may have zero or more + dependent elements. Dependent elements may + not be running unless required elements are. + unknown(5) + Default value for the case when an operator + has not yet assigned one of the other values. + When set, bits 1, 2, 3, and 4 have no meaning. + + sysApplInstallElmtRole is used by the agent implementation + in determining the initiation of an application, the + current state of a running application (see + sysApplRunCurrentState), when an application invocation is + no longer running, and the exit status of a terminated + application invocation (see sysApplPastRunExitState)." + + DEFVAL { { unknown } } + ::= { sysApplInstallElmtEntry 8 } + + sysApplInstallElmtModifyDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that this element was last modified. + Modification of the sysApplInstallElmtRole columnar + object does NOT constitute a modification of the element + itself and should not affect the value of this object." + ::= { sysApplInstallElmtEntry 9 } + + sysApplInstallElmtCurSizeHigh OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current file size in 2^32 byte blocks. + For example, for a file with a total size of 4,294,967,296 + bytes, this variable would have a value of 1; for a file + with a total size of 4,294,967,295 bytes this variable + would be 0." + ::= { sysApplInstallElmtEntry 10 } + + sysApplInstallElmtCurSizeLow OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current file size modulo 2^32 bytes. + For example, for a file with a total size of 4,294,967,296 + bytes this variable would have a value of 0; for a file with + a total size of 4,294,967,295 bytes this variable would be + 4,294,967,295." + ::= { sysApplInstallElmtEntry 11 } + + + + -- sysApplRun Group + -- This group models activity information for applications + -- that have been invoked and are either currently running, + -- or have previously run on the host system. Likewise, + -- the individual elements of an invoked application are + -- also modeled to show currently running processes, and + -- processes that have run in the past. + + -- sysApplRunTable + -- The sysApplRunTable contains the application instances + -- which are currently running on the host. Since a single + -- application might be invoked multiple times, an entry is + -- added to this table for each INVOCATION of an application. + -- The table is indexed by sysApplInstallPkgIndex, sysApplRunIndex + -- to enable managers to easily locate all invocations of + -- a particular application package. + + sysApplRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table describes the applications which are executing + on the host. Each time an application is invoked, + an entry is created in this table. When an application ends, + the entry is removed from this table and a corresponding + entry is created in the SysApplPastRunTable. + + A new entry is created in this table whenever the agent + implementation detects a new running process that is an + installed application element whose sysApplInstallElmtRole + designates it as being the application's primary executable + (sysApplInstallElmtRole = primary(2) ). + + The table is indexed by sysApplInstallPkgIndex, + sysApplRunIndex to enable managers to easily locate all + invocations of a particular application package." + ::= { sysApplRun 1 } + + sysApplRunEntry OBJECT-TYPE + SYNTAX SysApplRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing an application which is + currently running on this host." + INDEX { sysApplInstallPkgIndex, sysApplRunIndex } + ::= { sysApplRunTable 1 } + + SysApplRunEntry ::= SEQUENCE { + sysApplRunIndex Unsigned32, + sysApplRunStarted DateAndTime, + sysApplRunCurrentState RunState + } + + sysApplRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table. An arbitrary + integer used only for indexing purposes. Generally + monotonically increasing from 1 as new applications are + started on the host, it uniquely identifies application + invocations. + + The numbering for this index increases by 1 for each + INVOCATION of an application, regardless of which + installed application package this entry represents a + running instance of. + + An example of the indexing for a couple of entries is + shown below. + + : + sysApplRunStarted.17.14 + sysApplRunStarted.17.63 + sysApplRunStarted.18.13 + : + + In this example, the agent has observed 12 application + invocations when the application represented by entry 18 + in the sysApplInstallPkgTable is invoked. The next + invocation detected by the agent is an invocation of + installed application package 17. Some time later, + installed application 17 is invoked a second time. + + NOTE: this index is not intended to reflect a real-time + (wall clock time) ordering of application invocations; + it is merely intended to uniquely identify running + instances of applications. Although the + sysApplInstallPkgIndex is included in the INDEX clause + for this table, it serves only to ease searching of + this table by installed application and does not + contribute to uniquely identifying table entries." + ::= { sysApplRunEntry 1 } + + sysApplRunStarted OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that the application was started." + ::= { sysApplRunEntry 2 } + + sysApplRunCurrentState OBJECT-TYPE + SYNTAX RunState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the running application instance. + The possible values are running(1), runnable(2) but waiting + for a resource such as CPU, waiting(3) for an event, + exiting(4), or other(5). This value is based on an evaluation + of the running elements of this application instance (see + sysApplElmRunState) and their Roles as defined by + sysApplInstallElmtRole. An agent implementation may + detect that an application instance is in the process of + exiting if one or more of its REQUIRED elements are no + longer running. Most agent implementations will wait until + a second internal poll has been completed to give the + system time to start REQUIRED elements before marking the + application instance as exiting." + ::= { sysApplRunEntry 3 } + + + -- sysApplPastRunTable + -- The sysApplPastRunTable provides a history of applications + -- previously run on the host computer. Entries are removed from + -- the sysApplRunTable and corresponding entries are added to this + -- table when an application becomes inactive. Entries remain in + -- this table until they are aged out when either the table size + -- reaches a maximum as determined by the sysApplPastRunMaxRows, + -- or when an entry has aged to exceed a time limit as set be + -- sysApplPastRunTblTimeLimit. + -- + -- When aging out entries, the oldest entry, as determined by + + -- the value of sysApplPastRunTimeEnded, will be removed first. + + sysApplPastRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplPastRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A history of the applications that have previously run + on the host computer. An entry's information is moved to + this table from the sysApplRunTable when the invoked + application represented by the entry ceases to be running. + + An agent implementation can determine that an application + invocation is no longer running by evaluating the running + elements of the application instance and their Roles as + defined by sysApplInstallElmtRole. Obviously, if there + are no running elements for the application instance, + then the application invocation is no longer running. + If any one of the REQUIRED elements is not running, + the application instance may be in the process of exiting. + Most agent implementations will wait until a second internal + poll has been completed to give the system time to either + restart partial failures or to give all elements time to + exit. If, after the second poll, there are REQUIRED + elements that are not running, then the application + instance may be considered by the agent implementation + to no longer be running. + + Entries remain in the sysApplPastRunTable until they + are aged out when either the table size reaches a maximum + as determined by the sysApplPastRunMaxRows, or when an entry + has aged to exceed a time limit as set by + sysApplPastRunTblTimeLimit. + + Entries in this table are indexed by sysApplInstallPkgIndex, + sysApplPastRunIndex to facilitate retrieval of all past + run invocations of a particular installed application." + ::= { sysApplRun 2 } + + sysApplPastRunEntry OBJECT-TYPE + SYNTAX SysApplPastRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing an invocation of an application + which was previously run and has terminated. The entry + is basically copied from the sysApplRunTable when the + application instance terminates. Hence, the entry's + value for sysApplPastRunIndex is the same as its value was + for sysApplRunIndex." + INDEX { sysApplInstallPkgIndex, sysApplPastRunIndex } + ::= { sysApplPastRunTable 1 } + + SysApplPastRunEntry ::= SEQUENCE { + sysApplPastRunIndex Unsigned32, + sysApplPastRunStarted DateAndTime, + sysApplPastRunExitState INTEGER, + sysApplPastRunTimeEnded DateAndTime + } + + sysApplPastRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table. An integer + matching the value of the removed sysApplRunIndex + corresponding to this row." + ::= { sysApplPastRunEntry 1 } + + sysApplPastRunStarted OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time that the application was started." + ::= { sysApplPastRunEntry 2 } + + sysApplPastRunExitState OBJECT-TYPE + SYNTAX INTEGER { + complete (1), -- normal exit at sysApplRunTimeEnded + failed (2), -- abnormal exit + other (3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the application instance when it terminated. + This value is based on an evaluation of the running elements + of an application and their Roles as defined by + sysApplInstallElmtRole. An application instance is said to + have exited in a COMPLETE state and its entry is removed + from the sysApplRunTable and added to the sysApplPastRunTable + when the agent detects that ALL elements of an application + invocation are no longer running. Most agent implementations + will wait until a second internal poll has been completed to + give the system time to either restart partial failures or + to give all elements time to exit. A failed state occurs if, + after the second poll, any elements continue to run but + one or more of the REQUIRED elements are no longer running. + All other combinations MUST be defined as OTHER." + ::= { sysApplPastRunEntry 3 } + + sysApplPastRunTimeEnded OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The DateAndTime the application instance was determined + to be no longer running." + ::= { sysApplPastRunEntry 4 } + + -- sysApplElmtRunTable + -- The sysApplElmtRunTable contains an entry for each process that + -- is currently running on the host. An entry is created in + -- this table for each process at the time it is started, and will + -- remain in the table until the process terminates. + -- + -- The table is indexed by sysApplElmtRunInstallPkg, + -- sysApplElmtRunInvocID, and sysApplElmtRunIndex to make it easy + -- to locate all running elements of a particular invoked application + -- which has been installed on the system. + + + sysApplElmtRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplElmtRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table describes the processes which are + currently executing on the host system. Each entry + represents a running process and is associated with + the invoked application of which that process is a part, if + possible. This table contains an entry for every process + currently running on the system, regardless of whether its + 'parent' application can be determined. So, for example, + processes like 'ps' and 'grep' will have entries though they + are not associated with an installed application package. + + Because a running application may involve + more than one executable, it is possible to have + multiple entries in this table for each application. + Entries are removed from this table when the process + terminates. + The table is indexed by sysApplElmtRunInstallPkg, + sysApplElmtRunInvocID, and sysApplElmtRunIndex to + facilitate the retrieval of all running elements of a + particular invoked application which has been installed on + the system." + ::= { sysApplRun 3 } + + sysApplElmtRunEntry OBJECT-TYPE + SYNTAX SysApplElmtRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing a process currently + running on this host. When possible, the entry is + associated with the invoked application of which it + is a part." + INDEX { sysApplElmtRunInstallPkg, sysApplElmtRunInvocID, + sysApplElmtRunIndex } + ::= { sysApplElmtRunTable 1 } + + SysApplElmtRunEntry ::= SEQUENCE { + sysApplElmtRunInstallPkg Unsigned32, + sysApplElmtRunInvocID Unsigned32, + sysApplElmtRunIndex Unsigned32, + sysApplElmtRunInstallID Unsigned32, + sysApplElmtRunTimeStarted DateAndTime, + sysApplElmtRunState RunState, + sysApplElmtRunName LongUtf8String, + sysApplElmtRunParameters Utf8String, + sysApplElmtRunCPU TimeTicks, + sysApplElmtRunMemory Gauge32, + sysApplElmtRunNumFiles Gauge32, + sysApplElmtRunUser Utf8String + } + + sysApplElmtRunInstallPkg OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table, this value + identifies the installed software package for + the application of which this process is a part. + Provided that the process's 'parent' application can be + determined, the value of this object is the same + value as the sysApplInstallPkgIndex for the + entry in the sysApplInstallPkgTable that corresponds + to the installed application of which this process + is a part. + + If, however, the 'parent' application cannot be + determined, (for example the process is not part + of a particular installed application), the value + for this object is then '0', signifying that this + process cannot be related back to an application, + and in turn, an installed software package." + ::= { sysApplElmtRunEntry 1 } + + sysApplElmtRunInvocID OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table, this value + identifies the invocation of an application of which + this process is a part. Provided that the 'parent' + application can be determined, the value of this object + is the same value as the sysApplRunIndex for the + corresponding application invocation in the + sysApplRunTable. + + If, however, the 'parent' application cannot be + determined, the value for this object is then '0', + signifying that this process cannot be related back + to an invocation of an application in the + sysApplRunTable." + ::= { sysApplElmtRunEntry 2 } + + sysApplElmtRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table. A unique value + for each process running on the host. Wherever + possible, this should be the system's native, unique + identification number." + ::= { sysApplElmtRunEntry 3 } + + + sysApplElmtRunInstallID OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index into the sysApplInstallElmtTable. The + value of this object is the same value as the + sysApplInstallElmtIndex for the application element + of which this entry represents a running instance. + If this process cannot be associated with an installed + executable, the value should be '0'." + ::= { sysApplElmtRunEntry 4 } + + sysApplElmtRunTimeStarted OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time the process was started." + ::= { sysApplElmtRunEntry 5 } + + sysApplElmtRunState OBJECT-TYPE + SYNTAX RunState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the running process. The + possible values are running(1), runnable(2) but waiting + for a resource such as CPU, waiting(3) for an event, + exiting(4), or other(5)." + ::= { sysApplElmtRunEntry 6 } + + sysApplElmtRunName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The full path and filename of the process. + For example, '/opt/MYYpkg/bin/myyproc' would + be returned for process 'myyproc' whose execution + path is '/opt/MYYpkg/bin/myyproc'." + ::= { sysApplElmtRunEntry 7 } + + sysApplElmtRunParameters OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The starting parameters for the process." + ::= { sysApplElmtRunEntry 8 } + + sysApplElmtRunCPU OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of centi-seconds of the total system's + CPU resources consumed by this process. Note that + on a multi-processor system, this value may + have been incremented by more than one centi-second + in one centi-second of real (wall clock) time." + ::= { sysApplElmtRunEntry 9 } + + sysApplElmtRunMemory OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Kbytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total amount of real system memory measured in + Kbytes currently allocated to this process." + + ::= { sysApplElmtRunEntry 10 } + + sysApplElmtRunNumFiles OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of regular files currently open by the + process. Transport connections (sockets) + should NOT be included in the calculation of + this value, nor should operating system specific + special file types." + ::= { sysApplElmtRunEntry 11 } + + sysApplElmtRunUser OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The process owner's login name (e.g. root)." + ::= { sysApplElmtRunEntry 12 } + + -- sysApplElmtPastRunTable + -- The sysApplElmtPastRunTable maintains a history of + -- processes which have previously executed on + -- the host as part of an application. Upon termination + -- of a process, the entry representing the process is removed from + -- the sysApplElmtRunTable and a corresponding entry is created in + -- this table provided that the process was part of an + -- identifiable application. If the process could not be associated + + -- with an invoked application, no corresponding entry is created. + -- Hence, whereas the sysApplElmtRunTable contains an entry for + -- every process currently executing on the system, the + -- sysApplElmtPastRunTable only contains entries for processes + -- that previously executed as part of an invoked application. + -- + -- Entries remain in this table until they are aged out when + -- either the number of entries in the table reaches a + -- maximum as determined by sysApplElmtPastRunMaxRows, or + -- when an entry has aged to exceed a time limit as set by + -- sysApplElmtPastRunTblTimeLimit. When aging out entries, + -- the oldest entry, as determined by the value of + -- sysApplElmtPastRunTimeEnded, will be removed first. + -- + -- The table is indexed by sysApplInstallPkgIndex (from the + -- sysApplInstallPkgTable), sysApplElmtPastRunInvocID, and + -- sysApplElmtPastRunIndex to make it easy to locate all + -- previously executed processes of a particular invoked application + -- that has been installed on the system. + + + sysApplElmtPastRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplElmtPastRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table describes the processes which have previously + executed on the host system as part of an application. + Each entry represents a process which has previously + executed and is associated with the invoked application + of which it was a part. Because an invoked application + may involve more than one executable, it is possible + to have multiple entries in this table for + each application invocation. Entries are added + to this table when the corresponding process in the + sysApplElmtRun Table terminates. + + Entries remain in this table until they are aged out when + either the number of entries in the table reaches a + maximum as determined by sysApplElmtPastRunMaxRows, or + when an entry has aged to exceed a time limit as set by + sysApplElmtPastRunTblTimeLimit. When aging out entries, + the oldest entry, as determined by the value of + sysApplElmtPastRunTimeEnded, will be removed first. + + The table is indexed by sysApplInstallPkgIndex (from the + sysApplInstallPkgTable), sysApplElmtPastRunInvocID, + and sysApplElmtPastRunIndex to make it easy to locate all + previously executed processes of a particular invoked + application that has been installed on the system." + ::= { sysApplRun 4 } + + sysApplElmtPastRunEntry OBJECT-TYPE + SYNTAX SysApplElmtPastRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The logical row describing a process which was + previously executed on this host as part of an + installed application. The entry is basically copied + from the sysApplElmtRunTable when the process + terminates. Hence, the entry's value for + sysApplElmtPastRunIndex is the same as its value + was for sysApplElmtRunIndex. Note carefully: only those + processes which could be associated with an + identified application are included in this table." + INDEX { sysApplInstallPkgIndex, sysApplElmtPastRunInvocID, + sysApplElmtPastRunIndex } + ::= { sysApplElmtPastRunTable 1 } + + SysApplElmtPastRunEntry ::= SEQUENCE { + sysApplElmtPastRunInvocID Unsigned32, + sysApplElmtPastRunIndex Unsigned32, + sysApplElmtPastRunInstallID Unsigned32, + sysApplElmtPastRunTimeStarted DateAndTime, + sysApplElmtPastRunTimeEnded DateAndTime, + sysApplElmtPastRunName LongUtf8String, + sysApplElmtPastRunParameters Utf8String, + sysApplElmtPastRunCPU TimeTicks, + sysApplElmtPastRunMemory Unsigned32, + sysApplElmtPastRunNumFiles Unsigned32, + sysApplElmtPastRunUser Utf8String + } + + sysApplElmtPastRunInvocID OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table, this value + identifies the invocation of an application of which + the process represented by this entry was a part. + The value of this object is the same value as the + sysApplRunIndex for the corresponding application + invocation in the sysApplRunTable. If the invoked + application as a whole has terminated, it will be the + same as the sysApplPastRunIndex." + ::= { sysApplElmtPastRunEntry 1 } + + sysApplElmtPastRunIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Part of the index for this table. An integer + assigned by the agent equal to the corresponding + sysApplElmtRunIndex which was removed from the + sysApplElmtRunTable and moved to this table + when the element terminated. + + Note: entries in this table are indexed by + sysApplElmtPastRunInvocID, sysApplElmtPastRunIndex. + The possibility exists, though unlikely, of a + collision occurring by a new entry which was run + by the same invoked application (InvocID), and + was assigned the same process identification number + (ElmtRunIndex) as an element which was previously + run by the same invoked application. + + Should this situation occur, the new entry replaces + the old entry. + + See Section: 'Implementation Issues - + sysApplElmtPastRunTable Entry Collisions' for the + conditions that would have to occur in order for a + collision to occur." + ::= { sysApplElmtPastRunEntry 2 } + + + sysApplElmtPastRunInstallID OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index into the installed element table. The + value of this object is the same value as the + sysApplInstallElmtIndex for the application element + of which this entry represents a previously executed + process." + ::= { sysApplElmtPastRunEntry 3 } + + sysApplElmtPastRunTimeStarted OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time the process was started." + ::= { sysApplElmtPastRunEntry 4 } + + sysApplElmtPastRunTimeEnded OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time the process ended." + ::= { sysApplElmtPastRunEntry 5 } + + sysApplElmtPastRunName OBJECT-TYPE + SYNTAX LongUtf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The full path and filename of the process. + For example, '/opt/MYYpkg/bin/myyproc' would + be returned for process 'myyproc' whose execution + path was '/opt/MYYpkg/bin/myyproc'." + ::= { sysApplElmtPastRunEntry 6 } + + sysApplElmtPastRunParameters OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The starting parameters for the process." + ::= { sysApplElmtPastRunEntry 7 } + + sysApplElmtPastRunCPU OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last known number of centi-seconds of the total + system's CPU resources consumed by this process. + Note that on a multi-processor system, this value may + increment by more than one centi-second in one + centi-second of real (wall clock) time." + ::= { sysApplElmtPastRunEntry 8 } + + sysApplElmtPastRunMemory OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + UNITS "Kbytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last known total amount of real system memory + measured in Kbytes allocated to this process before it + terminated." + ::= { sysApplElmtPastRunEntry 9 } + + sysApplElmtPastRunNumFiles OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last known number of files open by the + process before it terminated. Transport + connections (sockets) should NOT be included in + the calculation of this value." + ::= { sysApplElmtPastRunEntry 10 } + + sysApplElmtPastRunUser OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The process owner's login name (e.g. root)." + ::= { sysApplElmtPastRunEntry 11 } + + + -- Additional Scalar objects to control table sizes + + sysApplPastRunMaxRows OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries allowed in the + sysApplPastRunTable. Once the number of rows in + the sysApplPastRunTable reaches this value, the + management subsystem will remove the oldest entry + in the table to make room for the new entry to be added. + Entries will be removed on the basis of oldest + sysApplPastRunTimeEnded value first. + + This object may be used to control the amount of + system resources that can used for sysApplPastRunTable + entries. A conforming implementation should attempt + to support the default value, however, a lesser value + may be necessary due to implementation-dependent issues + and resource availability." + DEFVAL { 500 } + ::= { sysApplRun 5 } + + sysApplPastRunTableRemItems OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A counter of the number of entries removed from + the sysApplPastRunTable because of table size limitations + as set in sysApplPastRunMaxRows. This counter is the + number of entries the management subsystem has had to + remove in order to make room for new entries (so as not + to exceed the limit set by sysApplPastRunMaxRows) since + the last initialization of the management subsystem." + ::= { sysApplRun 6 } + + sysApplPastRunTblTimeLimit OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum time in seconds which an entry in the + sysApplPastRunTable may exist before it is removed. + Any entry that is older than this value will be + removed (aged out) from the table. + + Note that an entry may be aged out prior to reaching + this time limit if it is the oldest entry in the + table and must be removed to make space for a new + entry so as to not exceed sysApplPastRunMaxRows." + DEFVAL { 7200 } + ::= { sysApplRun 7 } + + sysApplElemPastRunMaxRows OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries allowed in the + sysApplElmtPastRunTable. Once the number of rows in + the sysApplElmtPastRunTable reaches this value, + the management subsystem will remove the oldest entry + to make room for the new entry to be added. Entries + will be removed on the basis of oldest + sysApplElmtPastRunTimeEnded value first. + This object may be used to control the amount of + system resources that can used for sysApplElemPastRunTable + entries. A conforming implementation should attempt + to support the default value, however, a lesser value + may be necessary due to implementation-dependent issues + and resource availability." + DEFVAL { 500 } + ::= { sysApplRun 8 } + + sysApplElemPastRunTableRemItems OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A counter of the number of entries removed from the + sysApplElemPastRunTable because of table size limitations + as set in sysApplElemPastRunMaxRows. This counter is the + number of entries the management subsystem has had to + remove in order to make room for new entries (so as not + to exceed the limit set by sysApplElemPastRunMaxRows) since + the last initialization of the management subsystem." + ::= { sysApplRun 9 } + + sysApplElemPastRunTblTimeLimit OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum time in seconds which an entry in the + sysApplElemPastRunTable may exist before it is removed. + Any entry that is older than this value will be + removed (aged out) from the table. + + Note that an entry may be aged out prior to reaching + this time limit if it is the oldest entry in the + table and must be removed to make space for a new + entry so as to not exceed sysApplElemPastRunMaxRows." + DEFVAL { 7200 } + ::= { sysApplRun 10 } + + sysApplAgentPollInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum interval in seconds that the management + subsystem implementing this MIB will poll the status + of the managed resources. Because of the non-trivial + effort involved in polling the managed resources, + and because the method for obtaining the status of + the managed resources is implementation-dependent, + a conformant implementation may chose a lower bound + greater than 0. + + A value of 0 indicates that there is no delay + in the passing of information from the managed + resources to the agent." + DEFVAL { 60 } + ::= { sysApplRun 11 } + + + -- sysApplMap Group + -- This group contains a table, the sysApplMapTable, + -- whose sole purpose is to provide a 'backwards' + -- mapping so that, given a known sysApplElmtRunIndex + -- (process identification number), the corresponding invoked + -- application (sysApplRunIndex), installed element + -- (sysApplInstallElmtIndex), and installed application + -- package (sysApplInstallPkgIndex) can be quickly determined. + -- + -- The table will contain one entry for each process + -- currently running on the system. + -- + -- A backwards mapping is extremely useful since the tables + -- in this MIB module are typically indexed with the + -- installed application package (sysApplInstallPkgIndex) + -- as the primary key, and on down as required by the + -- specific table, with the process ID number (sysApplElmtRunIndex) + -- being the least significant key. + -- + -- It is expected that management applications will use + -- this mapping table by doing a 'GetNext' operation with + -- the known process ID number (sysApplElmtRunIndex) as the partial + -- instance identifier. Assuming that there is an entry for + -- the process, the result should return a single columnar value, + -- the sysApplMapInstallPkgIndex, with the sysApplElmtRunIndex, + -- sysApplRunIndex, and sysApplInstallElmtIndex contained in the + -- instance identifier for the returned MIB object value. + -- + -- NOTE: if the process can not be associated back to an + -- invoked application installed on the system, then the + -- value returned for the columnar value sysApplMapInstallPkgIndex + -- will be '0' and the instance portion of the object-identifier + -- will be the process ID number (sysApplElmtRunIndex) followed + + -- by 0.0. + + sysApplMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysApplMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The sole purpose of this table is to provide a + 'backwards' mapping so that, given a known + sysApplElmtRunIndex (process identification number), + the corresponding invoked application (sysApplRunIndex), + installed element (sysApplInstallElmtIndex), and + installed application package (sysApplInstallPkgIndex) + can be quickly determined. + + This table will contain one entry for each process + that is currently executing on the system. + + It is expected that management applications will use + this mapping table by doing a 'GetNext' operation with + the known process ID number (sysApplElmtRunIndex) as the + partial instance identifier. Assuming that there is an + entry for the process, the result should return a single + columnar value, the sysApplMapInstallPkgIndex, with the + sysApplElmtRunIndex, sysApplRunIndex, and + sysApplInstallElmtIndex contained in the instance identifier + for the returned MIB object value. + + NOTE: if the process can not be associated back to an + invoked application installed on the system, then the + value returned for the columnar value + sysApplMapInstallPkgIndex will be '0' and the instance + portion of the object-identifier will be the process ID + number (sysApplElmtRunIndex) followed by 0.0." + ::= { sysApplMap 1 } + + sysApplMapEntry OBJECT-TYPE + SYNTAX SysApplMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A logical row representing a process currently running + on the system. This entry provides the index mapping from + process identifier, back to the invoked application, + installed element, and finally, the installed application + package. The entry includes only one accessible columnar + object, the sysApplMapInstallPkgIndex, but the + invoked application and installed element can be + determined from the instance identifier since they form + part of the index clause." + INDEX { sysApplElmtRunIndex, sysApplElmtRunInvocID, + sysApplMapInstallElmtIndex } + ::= { sysApplMapTable 1 } + + SysApplMapEntry ::= SEQUENCE { + sysApplMapInstallElmtIndex Unsigned32, + sysApplMapInstallPkgIndex Unsigned32 + } + + sysApplMapInstallElmtIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index into the sysApplInstallElmtTable. The + value of this object is the same value as the + sysApplInstallElmtIndex for the application element + of which this entry represents a running instance. + If this process cannot be associated to an installed + executable, the value should be '0'." + ::= { sysApplMapEntry 1 } + + sysApplMapInstallPkgIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the installed + software package for the application of which this + process is a part. Provided that the process's 'parent' + application can be determined, the value of this object + is the same value as the sysApplInstallPkgIndex for the + entry in the sysApplInstallPkgTable that corresponds + to the installed application of which this process + is a part. + + If, however, the 'parent' application cannot be + determined, (for example the process is not part + of a particular installed application), the value + for this object is then '0', signifying that this + process cannot be related back to an application, + and in turn, an installed software package." + ::= { sysApplMapEntry 2 } + + + -- Conformance Macros + sysApplMIBCompliances OBJECT IDENTIFIER ::= { sysApplConformance 1 } + sysApplMIBGroups OBJECT IDENTIFIER ::= { sysApplConformance 2 } + + sysApplMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to + the System Application MIB" + MODULE -- this module + MANDATORY-GROUPS { sysApplInstalledGroup, + sysApplRunGroup, sysApplMapGroup } + ::= { sysApplMIBCompliances 1 } + + sysApplInstalledGroup OBJECT-GROUP + OBJECTS { sysApplInstallPkgManufacturer, + sysApplInstallPkgProductName, + sysApplInstallPkgVersion, + sysApplInstallPkgSerialNumber, + sysApplInstallPkgDate, + sysApplInstallPkgLocation, + sysApplInstallElmtName, + sysApplInstallElmtType, + sysApplInstallElmtDate, + sysApplInstallElmtPath, + sysApplInstallElmtSizeHigh, + sysApplInstallElmtSizeLow, + sysApplInstallElmtRole, + sysApplInstallElmtModifyDate, + sysApplInstallElmtCurSizeHigh, + sysApplInstallElmtCurSizeLow } + STATUS current + DESCRIPTION + "The system application installed group contains + information about applications and their constituent + components which have been installed on the host system." + ::= { sysApplMIBGroups 1 } + + sysApplRunGroup OBJECT-GROUP + OBJECTS { sysApplRunStarted, + sysApplRunCurrentState, + sysApplPastRunStarted, + sysApplPastRunExitState, + sysApplPastRunTimeEnded, + sysApplElmtRunInstallID, + sysApplElmtRunTimeStarted, + sysApplElmtRunState, + sysApplElmtRunName, + sysApplElmtRunParameters, + sysApplElmtRunCPU, + sysApplElmtRunMemory, + sysApplElmtRunNumFiles, + sysApplElmtRunUser, + sysApplElmtPastRunInstallID, + sysApplElmtPastRunTimeStarted, + sysApplElmtPastRunTimeEnded, + sysApplElmtPastRunName, + sysApplElmtPastRunParameters, + sysApplElmtPastRunCPU, + sysApplElmtPastRunMemory, + sysApplElmtPastRunNumFiles, + sysApplElmtPastRunUser, + sysApplPastRunMaxRows, + sysApplPastRunTableRemItems, + sysApplPastRunTblTimeLimit, + sysApplElemPastRunMaxRows, + sysApplElemPastRunTableRemItems, + sysApplElemPastRunTblTimeLimit, + sysApplAgentPollInterval } + STATUS current + DESCRIPTION + "The system application run group contains information + about applications and associated elements which have + run or are currently running on the host system." + ::= { sysApplMIBGroups 2 } + + sysApplMapGroup OBJECT-GROUP + OBJECTS { sysApplMapInstallPkgIndex } + STATUS current + DESCRIPTION + "The Map Group contains a single table, sysApplMapTable, + that provides a backwards mapping for determining the + invoked application, installed element, and installed + application package given a known process identification + number." + ::= { sysApplMIBGroups 3 } + + END diff --git a/mibs/ietf/T11-FC-FABRIC-ADDR-MGR-MIB b/mibs/ietf/T11-FC-FABRIC-ADDR-MGR-MIB new file mode 100644 index 0000000..484f903 --- /dev/null +++ b/mibs/ietf/T11-FC-FABRIC-ADDR-MGR-MIB @@ -0,0 +1,1322 @@ +T11-FC-FABRIC-ADDR-MGR-MIB DEFINITIONS ::= BEGIN + +-- the Fibre Channel Fabric Address Manager MIB +-- +-- for management of the functionality, in Fibre Channel switches, +-- which is used to manage fabric configuration, domains, and +-- addresses within a domain. +-- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, Unsigned32, + Counter32, Gauge32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, TruthValue, + RowStatus FROM SNMPv2-TC -- [RFC2579] + ifIndex FROM IF-MIB -- [IF-MIB] + fcmInstanceIndex, fcmSwitchIndex, + FcDomainIdOrZero, FcNameIdOrZero FROM FC-MGMT-MIB -- [FC-MGMT] + T11FabricIndex FROM T11-TC-MIB; + +t11FcFabricAddrMgrMIB MODULE-IDENTITY + + + + LAST-UPDATED "200603020000Z" + ORGANIZATION "T11" + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + Phone: +1 408 853-9172 + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Phone: +1 408-526-5260 + EMail: kzm@cisco.com" + DESCRIPTION + "The MIB module for the Fabric Address management + functionality defined by the Fibre Channel standards. For + the purposes of this MIB, Fabric Address Manager refers to + the functionality of acquiring DomainID(s) as specified in + FC-SW-3, and managing Fibre Channel Identifiers as specified + in FC-FS. An instance of 'Fabric Address Manager' software + functionality executes in the Principal Switch, and in each + other switch. + + After an agent reboot, the values of read-write objects + defined in this MIB module are implementation-dependent. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4439; see the RFC itself for + full legal notices." + REVISION "200603020000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4439." + ::= { mib-2 137 } + +t11FamNotifications OBJECT IDENTIFIER ::= { t11FcFabricAddrMgrMIB 0 } +t11FamMIBObjects OBJECT IDENTIFIER ::= { t11FcFabricAddrMgrMIB 1 } +t11FamMIBConformance OBJECT IDENTIFIER ::= { t11FcFabricAddrMgrMIB 2 } +t11FamConfiguration OBJECT IDENTIFIER ::= { t11FamMIBObjects 1 } +t11FamInfo OBJECT IDENTIFIER ::= { t11FamMIBObjects 2 } +t11FamNotifyControl OBJECT IDENTIFIER ::= { t11FamMIBObjects 3 } + + +-- Textual Conventions + +T11FamDomainPriority ::= TEXTUAL-CONVENTION + + + + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "Priority of a switch. + + The Principal Switch selection is influenced by the + priority of the switches. + + Some values of importance are: + + 1 : The highest priority in Principal Switch + selection, which is used by the administrator + to establish which switch becomes the Principal + Switch. + 255 : Indicates that the switch is not capable of + acting as a Principal Switch." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, section 6.1.5." + SYNTAX Unsigned32 (1..255) + +T11FamDomainInterfaceRole ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The 'designated' state/role of the Inter-Switch Link (ISL) + to which an interface connects, or (if not connected) + the state of the interface: + + nonPrincipal (1) - non-Principal ISL + principalUpstream (2) - Upstream Principal ISL + principalDownsteam (3) - Downstream Principal ISL + isolated (4) - interface is isolated + down (5) - interface is down + unknown (6) - state/role is unknown + " + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, Sections 3.1, 5.7, + and Figure 9." + SYNTAX INTEGER { + nonPrincipal (1), + principalUpstream (2), + principalDownsteam (3), + isolated (4), + down (5), + unknown (6) + } + +T11FamState ::= TEXTUAL-CONVENTION + STATUS current + + + + DESCRIPTION + "The state of the Fabric Address Manager, as described in + Table 86 and Figure 15 of FC-SW-3. + + - 'other' represents a switch that is in a state not + represented by any of the below enumerations. + + - 'starting' represents a switch engaged in the process + represented by the first row in Table 86. + + - 'unconfigured' represents a switch that requires + operator input before it can begin the process + represented by the first row in Table 86. + + - 'principalSwitchSelection' represents a switch engaged + in the process represented by the second row in + Table 86, but not in states F0 or F1 of Figure 15. + + - 'domainIdDistribution' represents a switch engaged in + the process represented by the third row in Table 86. + + - 'buildFabricPhase' represents a switch that is in + state F0 of Figure 15. + + - 'reconfigureFabricPhase' represents a switch that is + in state F1 of Figure 15. + + - 'stable' represents a switch that has successfully + completed the process represented by the third row in + Table 86 and has at least one E_Port. + + - 'stableWithNoEports' represents a switch that has + successfully completed the process represented by the + third row in Table 86 but has no E_Ports. + + - 'noDomains' represents a switch that has completed + the process represented by the third row in Table 86 + but failed to obtain a Domain_ID. + + - 'disabled' represents any situation in which the + corresponding instance of t11FamEnable has the value + 'false'. + + - 'unknown' represents a switch that is confused about + what state it is in." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, Table 86 and Figure 15." + SYNTAX INTEGER { + + + + other(1), + starting(2), + unconfigured(3), + principalSwitchSelection(4), + domainIdDistribution(5), + buildFabricPhase(6), + reconfigureFabricPhase(7), + stable(8), + stableWithNoEports(9), + noDomains(10), + disabled(11), + unknown(12) + } + + +-- +-- t11FamTable +-- + +t11FamTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Fabric Address Manager related + parameters that are able to be configured and monitored + in a Fibre Channel switch. For each of the switches + (identified by fcmSwitchIndex) managed by a Fibre Channel + management instance (identified by fcmInstanceIndex), + there is any entry for each Fabric known to that switch. + Entries are implicitly created/removed if and when + additional Fabrics are created/deleted." + ::= { t11FamConfiguration 1 } + +t11FamEntry OBJECT-TYPE + SYNTAX T11FamEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry provides information on the local Fabric Address + Manager functionality for a Fabric known to a + particular switch." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FamFabricIndex } + ::= { t11FamTable 1 } + +T11FamEntry ::= SEQUENCE { + t11FamFabricIndex T11FabricIndex, + t11FamConfigDomainId FcDomainIdOrZero, + + + + t11FamConfigDomainIdType INTEGER, + t11FamAutoReconfigure TruthValue, + t11FamContiguousAllocation TruthValue, + t11FamPriority T11FamDomainPriority, + t11FamPrincipalSwitchWwn FcNameIdOrZero, + t11FamLocalSwitchWwn FcNameIdOrZero, + t11FamAssignedAreaIdList OCTET STRING, + t11FamGrantedFcIds Counter32, + t11FamRecoveredFcIds Counter32, + t11FamFreeFcIds Gauge32, + t11FamAssignedFcIds Gauge32, + t11FamAvailableFcIds Gauge32, + t11FamRunningPriority T11FamDomainPriority, + t11FamPrincSwRunningPriority T11FamDomainPriority, + t11FamState T11FamState, + t11FamLocalPrincipalSwitchSlctns Counter32, + t11FamPrincipalSwitchSelections Counter32, + t11FamBuildFabrics Counter32, + t11FamFabricReconfigures Counter32, + t11FamDomainId FcDomainIdOrZero, + t11FamSticky TruthValue, + t11FamRestart INTEGER, + t11FamRcFabricNotifyEnable TruthValue, + t11FamEnable TruthValue, + t11FamFabricName FcNameIdOrZero +} + +t11FamFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric known to a particular switch. + + In a Fabric conformant to FC-SW-3, only a single Fabric + can operate within a physical infrastructure, and thus, + the value of this Fabric Index will always be 1. + + However, the current standard, FC-SW-4, defines + how multiple Fabrics, each with its own management + instrumentation, could operate within one (or more) + physical infrastructures. When such multiple Fabrics + are in use, this index value is used to uniquely + identify a particular Fabric within a physical + infrastructure." + ::= { t11FamEntry 1 } + + + + +t11FamConfigDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The configured Domain_ID of the particular switch on this + Fabric, or zero if no Domain_ID has been configured. + The meaning of this object depends on + t11FamConfigDomainIdType object. + + If t11FamConfigDomainIdType is 'preferred', then the + configured Domain_ID is called the 'preferred Domain_ID'. + Valid values are between 0 and 239. In a situation where + this Domain_ID cannot be assigned, any other Domain_ID + will be acceptable. A value of zero means any Domain_ID. + + If t11FamConfigDomainIdType is 'insistent', then the + configured Domain_ID is called the 'insistent Domain_ID' and + valid values are between 1 and 239. In a situation where + this Domain_ID cannot be assigned, no other Domain_ID is + acceptable. + + In both of the above cases, the switch sends an RDI (Request + Domain_ID) to request this Domain_ID to the Principal + Switch. If no Domain_ID is able to be granted in the case + of 'preferred', or if an 'insistent' Domain_ID is configured + but not able to be granted, then it is an error condition. + When this error occurs, the switch will continue as if it + receives a SW_RJT with a reason/explanation of 'Unable to + perform command request'/'Domain_ID not available'. That + is, its E_Ports on that Fabric will be isolated and the + administrator informed via a 't11FamDomainIdNotAssigned' + notification. + + If t11FamConfigDomainIdType is 'static', then the configured + Domain_ID is called the 'static Domain_ID' and valid values + are between 1 and 239. In this situation, there is no + Principal Switch in the Fabric and the Domain_ID is simply + assigned by configuration, together with the Fabric_Name. + A switch configured with a static Domain_ID, on receiving + an EFP, BF, RCF, DIA, or RDI SW_ILS, shall reply with an + SW_RJT having Reason Code Explanation 'E_Port is Isolated' + and shall isolate the receiving E_Port. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 7." + + + + DEFVAL { 0 } + ::= { t11FamEntry 2 } + +t11FamConfigDomainIdType OBJECT-TYPE + SYNTAX INTEGER { + preferred(1), + insistent(2), + static(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Type of configured Domain_ID contained in + t11FamConfigDomainId. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + DEFVAL { preferred } + ::= { t11FamEntry 3 } + +t11FamAutoReconfigure OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines how a particular switch + responds to certain error conditions. + + The condition that might cause these errors is + the merging of two disjoint Fabrics that have + overlapping Domain_ID lists. + + If value of this object is 'true', the switch will + send an RCF (ReConfigureFabric) to rebuild the + Fabric. + + If 'false', the switch will isolate the E_Ports on + which the errors happened. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + December 2003, sections 6.1.12 & 7.3. + Fibre Channel - Methodologies for Interconnects + (FC-MI), INCITS TR-30-2002, table 14, note g." + DEFVAL { false } + ::= { t11FamEntry 4 } + + + + +t11FamContiguousAllocation OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Determines how a particular switch behaves when elected as + the Principal Switch. + + If true, the switch will only accept RDIs with a contiguous + allocation; specifically, it will reject RDIs with + non-contiguous Domain_IDs, and if an RDI for a contiguous + Domain_ID is not able to be fulfilled, it will try to + replace all the Domain_IDs in the list with contiguous + Domain_IDs, and if that fails, the RDI will be rejected. + + If false, then the switch acts normally in granting + the Domain_IDs even if they are not contiguous. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + ::= { t11FamEntry 5 } + +t11FamPriority OBJECT-TYPE + SYNTAX T11FamDomainPriority + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The initial or configured priority of a particular switch + to be used in Principal Switch selection process. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + ::= { t11FamEntry 6 } + +t11FamPrincipalSwitchWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The WWN of the Principal Switch on this Fabric, + or zero-length string if the identity of the principal + switch is unknown." + DEFVAL { ''H } + ::= { t11FamEntry 7 } + +t11FamLocalSwitchWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The WWN of the particular switch on this Fabric." + ::= { t11FamEntry 8 } + +t11FamAssignedAreaIdList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The list of (zero or more) Area_IDs that have been + assigned by a particular switch in this Fabric, formatted + as an array of octets in ascending order. + + Each octet represents one Area_ID. So, the list containing + Area_IDs 23, 45, 235, and 56 would be formatted as the + 4-octet string x'172d38eb'. + + A particular area's Area_ID is used as the index into the + t11FamAreaTable to get the statistics on that area." + ::= { t11FamEntry 9 } + +t11FamGrantedFcIds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Fibre Channel Address Identifiers + granted (for local use, i.e., with a particular switch's + Domain_ID) by the Fabric Address Manager on that switch. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 10 } + +t11FamRecoveredFcIds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Fibre Channel Address Identifiers that + have been recovered by the Fabric Address Manager on a + particular switch since the switch has been initialized. + A recovered Fibre Channel Address Identifier is one that is + explicitly returned after previously being used. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + + + + ::= { t11FamEntry 11 } + +t11FamFreeFcIds OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Fibre Channel Address Identifiers that are + currently unassigned on this Fabric and could be available + for assignment either immediately or at some later time. + + The sum of the instances of FreeFcIds and AssignedFcIds + corresponding to a particular Fabric is the total number of + Fibre Channel Address Identifiers that the local Fabric + Address Management is capable of assigning on that Fabric." + ::= { t11FamEntry 12 } + +t11FamAssignedFcIds OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Fibre Channel Address Identifiers that are + currently assigned on this Fabric. + + The sum of the instances of FreeFcIds and AssignedFcIds + corresponding to a particular Fabric is the total number of + Fibre Channel Address Identifiers that the local Fabric + Address Management is capable of assigning on that Fabric." + ::= { t11FamEntry 13 } + +t11FamAvailableFcIds OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Fibre Channel Address Identifiers that are + unassigned and currently available for immediate assignment + on the Fabric, e.g., with the 'Clean Address' bit set to 1." + REFERENCE + "Fibre Channel - Framing and Signaling (FC-FS), + ANSI INCITS 373-2003, section 15.6.2.4.2." + ::= { t11FamEntry 14 } + +t11FamRunningPriority OBJECT-TYPE + SYNTAX T11FamDomainPriority + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The running priority of a particular switch on this Fabric. + This value is initialized to the value of t11FamPriority, + and subsequently altered as specified by the procedures + defined in FC-SW-3." + ::= { t11FamEntry 15 } + +t11FamPrincSwRunningPriority OBJECT-TYPE + SYNTAX T11FamDomainPriority + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The running priority of the Principal Switch on this + Fabric." + ::= { t11FamEntry 16 } + +t11FamState OBJECT-TYPE + SYNTAX T11FamState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the Fabric Address Manager on a particular + switch on this Fabric." + ::= { t11FamEntry 17 } + +t11FamLocalPrincipalSwitchSlctns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times a particular switch became the + Principal Switch on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 18 } + +t11FamPrincipalSwitchSelections OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Principal Switch selections on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 19 } + + + + +t11FamBuildFabrics OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of non-disruptive fabric reconfigurations (BFs) + that have occurred on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 20 } + +t11FamFabricReconfigures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of disruptive fabric reconfigurations (RCFs) + that have occurred on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11FamEntry 21 } + +t11FamDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Domain_ID of a particular switch on this Fabric or + zero if no Domain_ID has been assigned." + ::= { t11FamEntry 22 } + +t11FamSticky OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether a particular switch is supporting + the concept of Preferred Domain_IDs via a best-effort + attempt to re-assign the same Fibre Channel Address + Identifier value to a port on the next occasion when a port + requests an assignment on this Fabric. + + If the value of this object is 'true', then the switch is + maintaining rows in the t11FamFcIdCacheTable for this + Fabric." + ::= { t11FamEntry 23 } + + + +t11FamRestart OBJECT-TYPE + SYNTAX INTEGER { + nonDisruptive(1), + disruptive(2), + noOp(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object tells the Fabric Address Manager to + request a Fabric reconfiguration. + + If this object is set to 'disruptive', then an RCF + (ReConfigure Fabric) is generated in the Fabric + in order for the Fabric to recover from the errors. + + If this object is set to 'nonDisruptive', then a + BF (Build Fabric) is generated in the Fabric. + + No action is taken if this object is set to 'noOp'. + The value of the object when read is always 'noOp'. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, section 7.3." + ::= { t11FamEntry 24 } + +t11FamRcFabricNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An indication of whether or not a particular switch + should issue a t11FamFabricChangeNotify notification on + sending or receiving ReConfigureFabric (RCF) on a Fabric. + + If the value of the object is 'true', then the + notification is generated. If the value is 'false', + notification is not generated. + + If an implementation requires all Fabrics to have the + same value, then setting one instance of this object + to a new object will result in all corresponding + instances being set to that same new value. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + + + + DEFVAL { false } + ::= { t11FamEntry 25 } + +t11FamEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Enables the Fabric Address Manager on this switch + on this Fabric. + + If enabled on a Fabric, the switch will participate in + Principal Switch selection, and Domain_IDs are assigned + dynamically. If disabled, the switch will not participate + in Principal Switch selection, and Domain_IDs are + assigned statically. Thus, the corresponding value of + t11FamConfigDomainIdType needs to be 'static'. + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, sections 7.1 and 7.3." + DEFVAL { true } + ::= { t11FamEntry 26 } + +t11FamFabricName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The WWN that is configured on this switch to be used as + the name of this Fabric when the value of t11FamEnable is + 'false'. + + If the value of t11FamEnable is 'true', this value is not + used. + + Fibre Channel requires that: + a) all switches in an operational Fabric be + configured with the same Fabric name; and + b) each Fabric have a unique Fabric name. + If either of these is violated, either by switches within a + single Fabric being configured with different Fabric names, + or by multiple Fabrics that share management applications + or interact in other ways having the same Fabric name, + then the behavior of the switches and associated management + functions is not specified by Fibre Channel or Internet + standards. + + + + For the persistence of values across reboots, see the + MODULE-IDENTITY's DESCRIPTION clause." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 7.1." + ::= { t11FamEntry 27 } + + +-- +-- t11FamIfTable - Interface configuration +-- + +t11FamIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains those Fabric Address Manager parameters + and status values that are per-interface (identified + by an ifIndex value), per-Fabric (identified by a + t11FamFabricIndex value), and per-switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex). + + An entry in this table is automatically created when + an E_Port becomes non-isolated on a particular Fabric. + + An entry is deleted automatically from this table if: + a) the corresponding interface is no longer an E_Port (e.g., + a G_Port that is dynamically determined to be an F_Port), + and all configuration parameter(s) have default values; or + b) the interface identified by ifIndex no longer exists + (e.g., because a line-card is physically removed); or + c) the row in the t11FamTable corresponding the fabric + identified by t11FamFabricID no longer exists. + + Creating an entry in this table via t11FamIfRowStatus + provides the means to specify non-default parameter value(s) + for an interface at a time when the relevant row in this + table does not exist, i.e., because the interface is either + down or it is not an E_Port." + ::= { t11FamConfiguration 2 } + +t11FamIfEntry OBJECT-TYPE + SYNTAX T11FamIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information on the interface + configuration on the Fabric identified by + + + + t11FamFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FamFabricIndex, ifIndex} + ::= { t11FamIfTable 1 } + +T11FamIfEntry ::= SEQUENCE { + t11FamIfRcfReject TruthValue, + t11FamIfRole T11FamDomainInterfaceRole, + t11FamIfRowStatus RowStatus +} + +t11FamIfRcfReject OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines if the incoming ReConfigure + Fabric (RCF) messages on this interface on this + Fabric is accepted or not. If this object is 'true', then + the incoming RCF is rejected. If 'false', incoming RCF is + accepted. + + Note that this object does not apply to the outgoing + RCFs generated by this interface. + + Implementations that support write-access to this object + can do so under whatever conditions they choose." + DEFVAL {false} + ::= { t11FamIfEntry 1 } + +t11FamIfRole OBJECT-TYPE + SYNTAX T11FamDomainInterfaceRole + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The role of this interface." + ::= { t11FamIfEntry 2 } + +t11FamIfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row." + ::= { t11FamIfEntry 3 } + + +-- + + + +-- t11FamAreaTable +-- + +t11FamAreaTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains area assignments per-Fabric by a + switch's Fabric Address Manager. Each octet in + t11FamAssignedAreaList is able to be used to index into + this table to find information on each area." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, section 4.8." + ::= { t11FamInfo 1 } + +t11FamAreaEntry OBJECT-TYPE + SYNTAX T11FamAreaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry gives information on the Area_ID and all + Port_IDs that have been assigned within an area for + the Fabric identified by t11FamFabricIndex, by the + Fabric Address Manager in the switch identified by + fcmInstanceIndex and fcmSwitchIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FamFabricIndex, t11FamAreaAreaId} + ::= { t11FamAreaTable 1 } + +T11FamAreaEntry ::= SEQUENCE { + t11FamAreaAreaId Unsigned32, + t11FamAreaAssignedPortIdList OCTET STRING +} + +t11FamAreaAreaId OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Area_ID of this area." + ::= { t11FamAreaEntry 1 } + +t11FamAreaAssignedPortIdList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The list of Port_IDs which have been assigned in + this area and Fabric, formatted as an array of + octets in ascending order. There could be zero or more + Port_IDs assigned on this area and Fabric. + + Each octet represents one Port_ID. So, the list containing + the Port_IDs 23, 45, 235, and 56 would be formatted as the + 4-octet string x'172d38eb'." + ::= { t11FamAreaEntry 2 } + + +-- +-- t11FamDatabaseTable +-- + +t11FamDatabaseTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamDatabaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all information known by + a switch about all the domains that have been + assigned in each Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 3 (FC-SW-3), + ANSI INCITS 384-2004, section 4.8." + ::= { t11FamInfo 2 } + +t11FamDatabaseEntry OBJECT-TYPE + SYNTAX T11FamDatabaseEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the t11FamDatabaseTable + containing information about one Domain_ID in the + Fabric identified by t11FamFabricIndex, and known by + the switch identified by t11FamFabricIndex and + t11FamDatabaseDomainId." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FamFabricIndex , t11FamDatabaseDomainId} + ::= { t11FamDatabaseTable 1 } + +T11FamDatabaseEntry ::= SEQUENCE { + t11FamDatabaseDomainId FcDomainIdOrZero, + t11FamDatabaseSwitchWwn FcNameIdOrZero +} + +t11FamDatabaseDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero (1..239) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Domain_ID for which this row contains information. + The value must be non-zero." + ::= { t11FamDatabaseEntry 1 } + +t11FamDatabaseSwitchWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The node name (WWN) of the switch to which the + corresponding value of t11FamDatabaseDomainId is currently + assigned for the particular Fabric." + ::= { t11FamDatabaseEntry 2 } + + +-- +-- Fibre Channel Address Identifier cache information +-- +-- The cached information allows the Fabric Address Manager to +-- implement the concept of a Preferred Domain_ID, whereby after a port +-- releases a Fibre Channel Address Identifier value, a switch makes an +-- attempt to re-assign the same Fibre Channel Address Identifier value +-- on the next occasion when that port requests an assignment. +-- + +t11FamMaxFcIdCacheSize OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of Fibre Channel Address Identifiers + that are able to be cached in the t11FamFcIdCacheTable. + If the number is unknown, the value of this object is + zero." + ::= { t11FamInfo 3 } + + +-- +-- t11FamFcIdCacheTable +-- + +t11FamFcIdCacheTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FamFcIdCacheEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "This table contains all the Fibre Channel Address + Identifiers that have recently been released by the + Fabric Address Manager in a switch. So, it lists + all the Fibre Channel Address Identifiers that have valid + WWN-to-Fibre Channel Address Identifier mappings and are + currently not assigned to any ports. These Fibre Channel + Address Identifiers were assigned to ports but have since + been released. These cached Fibre Channel Address + Identifiers contain only Area_ID and Port_ID information. + This cache is kept to provide best-effort re-assignment of + same Fibre Channel Address Identifiers; i.e., when an + Nx_Port asks for a Fibre Channel Address Identifier, soon + after releasing one, the same value is re-assigned, if + possible." + ::= { t11FamInfo 4 } + +t11FamFcIdCacheEntry OBJECT-TYPE + SYNTAX T11FamFcIdCacheEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the t11FamFcIdCacheTable + containing information about one Fibre Channel Address + Identifier that was released from a WWN, corresponding to a + range of one or more ports connected to the switch + (identified by t11FamFabricIndex and t11FamFcIdCacheWwn) in + the Fabric (identified by t11FamFabricIndex). An entry is + created when a Fibre Channel Address Identifier is released + by the last port in the range. The oldest entry is deleted + if the number of rows in this table reaches + t11FamMaxFcIdCacheSize, and its space is required for a new + entry. An entry is also deleted when its Fibre Channel + Address Identifier is assigned to a port." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FamFabricIndex, t11FamFcIdCacheWwn} + ::= { t11FamFcIdCacheTable 1 } + +T11FamFcIdCacheEntry ::= SEQUENCE { + t11FamFcIdCacheWwn FcNameIdOrZero, + t11FamFcIdCacheAreaIdPortId OCTET STRING, + t11FamFcIdCachePortIds Unsigned32 +} + +t11FamFcIdCacheWwn OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The N_Port_Name (WWN) of the port associated with this + entry." + ::= { t11FamFcIdCacheEntry 1 } + +t11FamFcIdCacheAreaIdPortId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The combination of this object and t11FamFcIdCachePortIds + represent one range of Fibre Channel Address Identifiers, + which were assigned and later released. This object + contains the Area_ID and Port_ID of the first Fibre + Channel Address Identifier in the range. + + Note that this object is only 2 bytes." + ::= { t11FamFcIdCacheEntry 2 } + +t11FamFcIdCachePortIds OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The combination of t11FamFcIdCacheAreaIdPortId and this + object represent one range of Fibre Channel Address + Identifiers, which were assigned and later released. This + object contains the number of (consecutive) Fibre Channel + Address Identifiers in the range." + ::= { t11FamFcIdCacheEntry 3 } + + +-- Objects for use in notifications + +t11FamNotifyFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "A unique index value that identifies a particular + Fabric for which a particular notification is generated. + + In a Fabric conformant to SW-3, only a single Fabric + can operate within a physical infrastructure, and thus, + the value of this Fabric Index will always be 1. + + However, the current standard, FC-SW-4, defines + how multiple Fabrics, each with its own management + + + + instrumentation, could operate within one (or more) + physical infrastructures. In order to accommodate this + scenario, this index value is used to uniquely identify a + particular Fabric within a physical infrastructure." + ::= { t11FamNotifyControl 1 } + + +-- Notifications + +t11FamDomainIdNotAssignedNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, t11FamNotifyFabricIndex } + STATUS current + DESCRIPTION + "This notification indicates that a Domain_ID has not + been configured or assigned for a particular Fabric, + identified by t11FamNotifyFabricIndex, on a particular + switch identified by t11FamLocalSwitchWwn. This could + happen under the following conditions, and results in the + switch isolating E_Ports on the Fabric: + + - if the switch's request for a configured static + Domain_ID is rejected or no other Domain_ID is + assigned, then the E_Ports are isolated." + ::= { t11FamNotifications 1 } + +t11FamNewPrincipalSwitchNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, t11FamNotifyFabricIndex } + STATUS current + DESCRIPTION + "This notification indicates that a particular switch, + identified by t11FamLocalSwitchWwn, has become the new + Principal Switch on the Fabric identified by + t11FamNotifyFabricIndex. + + This notification is sent soon after its election as + the new Principal Switch, i.e., upon expiration of a + Principal Switch selection timer that is equal to + twice the Fabric Stability Timeout value (F_S_TOV)." + ::= { t11FamNotifications 2 } + +t11FamFabricChangeNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, t11FamNotifyFabricIndex } + STATUS current + DESCRIPTION + "This notification is sent whenever a particular switch, + identified by t11FamLocalSwitchWwn, sends or + receives a Build Fabric (BF) or a ReConfigure Fabric + (RCF) message on the Fabric identified by + + + + t11FamNotifyFabricIndex. + + This notification is not sent if a + 't11FamNewPrincipalSwitchNotify' notification is sent + for the same event." + ::= { t11FamNotifications 3 } + + +-- +-- Conformance +-- + +t11FamMIBCompliances OBJECT IDENTIFIER ::= { t11FamMIBConformance 1 } +t11FamMIBGroups OBJECT IDENTIFIER ::= { t11FamMIBConformance 2 } + +t11FamMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for Fibre Channel switches + that implement Fabric Address Manager functionality." + MODULE + MANDATORY-GROUPS { t11FamGroup, + t11FamDatabaseGroup, + t11FamAreaGroup, + t11FamNotificationGroup + } + + OBJECT t11FamConfigDomainId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamConfigDomainIdType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamAutoReconfigure + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamContiguousAllocation + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamPriority + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamIfRcfReject + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamIfRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FamRcFabricNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP t11FamCacheGroup + DESCRIPTION + "This group is mandatory only for switches that + support the concept of Preferred Domain_ID via a best- + effort attempt for (short-term) re-assignment of the + same FC address identifiers." + + GROUP t11FamCommandGroup + DESCRIPTION + "This group is optional." + + ::= { t11FamMIBCompliances 1 } + + +-- Units of Conformance + +t11FamGroup OBJECT-GROUP + OBJECTS { t11FamConfigDomainId, + t11FamConfigDomainIdType, + t11FamAutoReconfigure, + t11FamContiguousAllocation, + t11FamPriority, + t11FamPrincipalSwitchWwn, + t11FamLocalSwitchWwn, + t11FamAssignedAreaIdList, + t11FamGrantedFcIds, + t11FamRecoveredFcIds, + t11FamFreeFcIds, + t11FamAssignedFcIds, + + + + t11FamAvailableFcIds, + t11FamRunningPriority, + t11FamPrincSwRunningPriority, + t11FamState, + t11FamLocalPrincipalSwitchSlctns, + t11FamPrincipalSwitchSelections, + t11FamBuildFabrics, + t11FamFabricReconfigures, + t11FamDomainId, + t11FamSticky, + t11FamRestart, + t11FamRcFabricNotifyEnable, + t11FamEnable, + t11FamFabricName, + t11FamIfRcfReject, + t11FamIfRole, + t11FamIfRowStatus, + t11FamNotifyFabricIndex + } + STATUS current + DESCRIPTION + "A collection of general objects for displaying and + configuring Fabric Address management." + ::= { t11FamMIBGroups 1 } + +t11FamCommandGroup OBJECT-GROUP + OBJECTS { t11FamRestart } + STATUS current + DESCRIPTION + "A collection of objects used for initiating an + operation on the Fabric." + ::= { t11FamMIBGroups 2 } + +t11FamDatabaseGroup OBJECT-GROUP + OBJECTS { t11FamDatabaseSwitchWwn } + STATUS current + DESCRIPTION + "A collection of objects containing information about + Domain-IDs assignments." + ::= { t11FamMIBGroups 3 } + +t11FamAreaGroup OBJECT-GROUP + OBJECTS { t11FamAreaAssignedPortIdList } + STATUS current + DESCRIPTION + "A collection of objects containing information about + currently assigned addresses within a domain." + ::= { t11FamMIBGroups 4 } + + + +t11FamCacheGroup OBJECT-GROUP + OBJECTS { t11FamMaxFcIdCacheSize, + t11FamFcIdCacheAreaIdPortId, + t11FamFcIdCachePortIds + } + STATUS current + DESCRIPTION + "A collection of objects containing information about + recently-released Fibre Channel Address Identifiers." + ::= { t11FamMIBGroups 5 } + +t11FamNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11FamDomainIdNotAssignedNotify, + t11FamNewPrincipalSwitchNotify, + t11FamFabricChangeNotify } + STATUS current + DESCRIPTION + "A collection of notifications for status monitoring + and notification." + ::= { t11FamMIBGroups 6 } +END diff --git a/mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB b/mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB new file mode 100644 index 0000000..f711e01 --- /dev/null +++ b/mibs/ietf/T11-FC-FABRIC-CONFIG-SERVER-MIB @@ -0,0 +1,1822 @@ +T11-FC-FABRIC-CONFIG-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, mib-2, Counter32, Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, TruthValue, TimeStamp + FROM SNMPv2-TC -- [RFC2579] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + URLString + FROM NETWORK-SERVICES-MIB -- [RFC2788] + + FcPortType, FcNameIdOrZero, FcDomainIdOrZero, + fcmInstanceIndex, fcmSwitchIndex, FcAddressIdOrZero + FROM FC-MGMT-MIB -- [RFC4044] + T11NsGs4RejectReasonCode + FROM T11-FC-NAME-SERVER-MIB -- [RFC4438] + T11FabricIndex + FROM T11-TC-MIB -- [RFC4439] + t11FamLocalSwitchWwn + FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [RFC4439] + + +t11FcFabricConfigServerMIB MODULE-IDENTITY + LAST-UPDATED "200706270000Z" + ORGANIZATION "For the initial versions, T11. + For later versions, the IETF's IMSS Working Group." + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: kzm@cisco.com" + DESCRIPTION + "The MIB module for the management of a Fabric + Configuration Server (FCS) in a Fibre Channel (FC) + network. An FCS is defined by the FC-GS-5 standard. This + + + + MIB provides the capabilities to trigger a discovery of + the configuration of one or more Fabrics, to retrieve the + results of such a discovery, as well as to control and + monitor the operation of an FCS. The discovered + configuration contains information about: + + - Interconnect Elements (IEs), i.e., switches, hubs, + bridges, etc., + - Ports on IEs, and + - Platforms that consist of one or more FC nodes. + + Copyright (C) The IETF Trust (2007). This version of + this MIB module is part of RFC 4935; see the RFC itself for + full legal notices." + REVISION "200706270000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4935." + ::= { mib-2 162 } + +t11FcsMIBObjects OBJECT IDENTIFIER + ::= { t11FcFabricConfigServerMIB 1 } +t11FcsMIBConformance OBJECT IDENTIFIER + ::= { t11FcFabricConfigServerMIB 2 } +t11FcsNotifications OBJECT IDENTIFIER + ::= { t11FcFabricConfigServerMIB 0 } + +t11FcsDiscovery OBJECT IDENTIFIER ::= { t11FcsMIBObjects 1 } +t11FcsDiscoveredConfig OBJECT IDENTIFIER ::= { t11FcsMIBObjects 2 } +t11FcsStats OBJECT IDENTIFIER ::= { t11FcsMIBObjects 3 } +t11FcsNotificationInfo OBJECT IDENTIFIER ::= { t11FcsMIBObjects 4 } + +-- +-- Textual Conventions +-- + +T11FcListIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "An index that identifies a list of elements. + All elements that belong to the same list have the + same index value. This syntax is used for objects + which identify a list in the INDEX clause of a table + of elements of that type of list." + SYNTAX Unsigned32 (1..4294967295) + +T11FcListIndexPointerOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + + + + STATUS current + DESCRIPTION + "Objects with this syntax point to a list of elements + contained in a table, by holding the same value as the + object with syntax T11FcListIndex defined in the table's + INDEX clause, or, zero to indicate an empty list. + Note that such a table could have one row per list, or + it could have one row per element of a list. + + The definition of an object with this syntax must + identify the table(s) into which it points." + SYNTAX Unsigned32 -- the default range of (0..4294967295) + +T11FcIeType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The type of Interconnect Element (IE): + + unknown(1) - an unknown IE. + other(2) - some other type of IE. + switch(3) - the IE is a switch. + hub(4) - the IE is a hub. + bridge(5) - the IE is a bridge." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, Table 96." + SYNTAX INTEGER { + unknown(1), + other(2), + switch(3), + hub(4), + bridge(5) + } + +T11FcPortState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The state of a port: + + unknown(1) - unknown state. + other(2) - some other state. + online(3) - port is in online state. + offline(4) - port is in offline state. + testing(5) - port is in testing state. + fault(6) - port is faulty." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, Table 106." + + + + SYNTAX INTEGER { + unknown(1), + other(2), + online(3), + offline(4), + testing(5), + fault(6) + } + +T11FcPortTxType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The technology of the port transceiver: + + unknown(1) - unknown (includes the 'null' type) + other(2) - some other technology + shortwave850nm(3) - Short wave laser - SN (850 nm) + longwave1550nm(4) - Long wave laser - LL (1550 nm) + longwave1310nm(5) - Long wave laser cost + reduced - LC (1310 nm) + electrical(6) - Electrical - EL. + tenGbaseSr850(7) - 10GBASE-SR 850nm laser + tenGbaseLr1310(8) - 10GBASE-LR 1310nm laser + tenGbaseEr1550(9) - 10GBASE-ER 1550nm laser + tenGbaseLx1300(10) - 10GBASE-LX4 WWDM 1300nm laser + tenGbaseSw850(11) - 10GBASE-SW 850nm laser + tenGbaseLw1310(12) - 10GBASE-LW 1310nm laser + tenGbaseEw1550(13) - 10GBASE-EW 1550nm laser + " + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, Table 101." + SYNTAX INTEGER { + unknown(1), + other(2), + shortwave850nm(3), + longwave1550nm(4), + longwave1310nm(5), + electrical(6), + tenGbaseSr850(7), + tenGbaseLr1310(8), + tenGbaseEr1550(9), + tenGbaseLx1300(10), + tenGbaseSw850(11), + tenGbaseLw1310(12), + tenGbaseEw1550(13) + } + + + + +T11FcsRejectReasonExplanation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reject reason code explanation: + + noAdditionalExplanation(1) + - no additional explanation. + invNameIdForIEOrPort(2) + - the format of IE or port name is invalid. + ieListNotAvailable(3) + - IE list is not available. + ieTypeNotAvailable(4) + - IE type is not available. + domainIdNotAvailable(5) + - Domain ID is not available. + mgmtIdNotAvailable(6) + - mgmt ID is not available. + fabNameNotAvailable(7) + - Fabric_Name is not available. + ielogNameNotAvailable(8) + - IE logical name is not available. + mgmtAddrListNotAvailable(9) + - mgmt address list is not available. + ieInfoListNotAvailable(10) + - IE info list is not available. + portListNotAvailable(11) + - port list is not available. + portTypeNotAvailable(12) + - port type is not available. + phyPortNumNotAvailable(13) + - physical port number is not available. + attPortNameListNotAvailable(14) + - attached port name list is not available. + portStateNotAvailable(15) + - port state is not available. + unableToRegIELogName(16) + - not able to register IE logical name. + platformNameNoExist(17) + - platform name does not exist. + platformNameAlreadyExists(18) + - platform name already exists. + platformNodeNameNoExists(19) + - platform node name does not exist. + platformNodeNameAlreadyExists(20) + - platform node name already exists. + resourceUnavailable(21) + - resource unavailable. + noEntriesInLunMap(22) + + + + - zero entries in OS LUN Map. + invalidDeviceNameLength(23) + - invalid OS device name length. + multipleAttributes(24) + - multiple attributes of same type in + platform attribute block. + invalidAttribBlockLength(25) + - invalid platform attribute block length. + attributesMissing(26) + - required platform attributes not present." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, Table 124." + SYNTAX INTEGER { + noAdditionalExplanation(1), + invNameIdForIEOrPort(2), + ieListNotAvailable(3), + ieTypeNotAvailable(4), + domainIdNotAvailable(5), + mgmtIdNotAvailable(6), + fabNameNotAvailable(7), + ielogNameNotAvailable(8), + mgmtAddrListNotAvailable(9), + ieInfoListNotAvailable(10), + portListNotAvailable(11), + portTypeNotAvailable(12), + phyPortNumNotAvailable(13), + attPortNameListNotAvailable(14), + portStateNotAvailable(15), + unableToRegIELogName(16), + platformNameNoExist(17), + platformNameAlreadyExists(18), + platformNodeNameNoExists(19), + platformNodeNameAlreadyExists(20), + resourceUnavailable(21), + noEntriesInLunMap(22), + invalidDeviceNameLength(23), + multipleAttributes(24), + invalidAttribBlockLength(25), + attributesMissing(26) + } + +-- +-- Objects for Fabric Discovery +-- + +t11FcsFabricDiscoveryTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsFabricDiscoveryEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains control information for discovery + of Fabric configuration by switches. + + Values written to objects in this table are not + retained over agent reboots." + ::= { t11FcsDiscovery 1 } + +t11FcsFabricDiscoveryEntry OBJECT-TYPE + SYNTAX T11FcsFabricDiscoveryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Control information for discovery by the switch + identified by fcmInstanceIndex and fcmSwitchIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex } + ::= { t11FcsFabricDiscoveryTable 1 } + +T11FcsFabricDiscoveryEntry ::= SEQUENCE { + t11FcsFabricDiscoveryRangeLow T11FabricIndex, + t11FcsFabricDiscoveryRangeHigh T11FabricIndex, + t11FcsFabricDiscoveryStart INTEGER, + t11FcsFabricDiscoveryTimeOut Unsigned32 +} + +t11FcsFabricDiscoveryRangeLow OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The discovery by a particular switch operates + within all existing Fabrics that have a Fabric + Index within a specific inclusive range. This + object specifies the minimum Fabric Index value + within that range. This value just represents + the lower end of the range and does not necessarily + represent any existing Fabric." + ::= { t11FcsFabricDiscoveryEntry 1 } + +t11FcsFabricDiscoveryRangeHigh OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The discovery by a particular switch operates + within all existing Fabrics that have a Fabric + + + + Index within a specific inclusive range. This + object specifies the maximum Fabric Index value + within that range. This value just represents the + higher end of the range and does not necessarily + represent any existing Fabric." + ::= { t11FcsFabricDiscoveryEntry 2 } + +t11FcsFabricDiscoveryStart OBJECT-TYPE + SYNTAX INTEGER { + start(1), + noOp(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the capability to trigger the start + of a discovery by a Fabric Configuration Server. If this + object is set to 'start', then the discovery is started on + those Fabrics that have their Fabric Index value in the + range specified by t11FcsFabricDiscoveryRangeLow and + t11FcsFabricDiscoveryRangeHigh. It is recommended that + whenever an instance of this object is set to 'start', + that the desired range be specified at the same time by + setting the corresponding instances of + t11FcsFabricDiscoveryRangeLow and + t11FcsFabricDiscoveryRangeHigh. + + Setting this object to 'start' will be rejected if a + discovery is already/still in progress on any Fabrics in + the specified range. + + No action is taken if this object is set to 'noOp'. + The value of this object when read is always 'noOp'." + ::= { t11FcsFabricDiscoveryEntry 3 } + +t11FcsFabricDiscoveryTimeOut OBJECT-TYPE + SYNTAX Unsigned32 (300..86400) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum interval of time for which the discovered + Fabric information is cached by a Fabric Configuration + Server." + DEFVAL { 900 } + ::= { t11FcsFabricDiscoveryEntry 4 } + +-- + + + +-- Discovery State table +-- + +t11FcsDiscoveryStateTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsDiscoveryStateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the status of discovery of + locally known Fabrics." + ::= { t11FcsDiscovery 2 } + +t11FcsDiscoveryStateEntry OBJECT-TYPE + SYNTAX T11FcsDiscoveryStateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The discovery status for a particular Fabric on the + switch identified by fcmInstanceIndex and fcmSwitchIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex } + ::= { t11FcsDiscoveryStateTable 1 } + +T11FcsDiscoveryStateEntry ::= SEQUENCE { + t11FcsFabricIndex T11FabricIndex, + t11FcsDiscoveryStatus INTEGER, + t11FcsDiscoveryCompleteTime TimeStamp +} + +t11FcsFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures, + and this index value is used to uniquely identify a + particular (physical or virtual) Fabric within a physical + infrastructure. + + In a Fabric conformant to versions earlier than FC-SW-4, + only a single Fabric could operate within a physical + infrastructure, and thus, the value of this Fabric Index + was defined to always be 1." + ::= { t11FcsDiscoveryStateEntry 1 } + + + + +t11FcsDiscoveryStatus OBJECT-TYPE + SYNTAX INTEGER { + inProgress(1), + completed(2), + localOnly(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of the discovery for the particular Fabric. + + Initially when the switch comes up, all instances of this + object have the value: 'localOnly', and the database + contains only local information, i.e., no information + discovered via the Fabric Configuration Server protocol + specified in FC-GS-5. + + If t11FcsFabricDiscoveryStart is set to 'start' for a + range of Fabrics that includes this Fabric, then the + value of this object transitions to 'inProgress'. When + the discovery completes, this object transitions to + 'completed', and the data is cached for the minimum + interval of time specified by + t11FcsFabricDiscoveryTimeOut. After this interval has + been exceeded, the data may be lost, in which case, the + value of this object changes to 'localOnly'. + + This object cannot be set via SNMP to any value other + than 'localOnly'. If this object is set (via SNMP) to + 'localOnly', the cached data for the Fabric is discarded + immediately, and if a discovery initiated from this + switch was in progress for this Fabric, then that + discovery is aborted." + ::= { t11FcsDiscoveryStateEntry 2 } + +t11FcsDiscoveryCompleteTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the value of sysUpTime at which + discovery was most recently completed or aborted on this + Fabric. This object contains the value of zero before + the first discovery on this Fabric." + ::= { t11FcsDiscoveryStateEntry 3 } + + + + + + +-- +-- The Database of Fabric Configuration Information + +-- +-- Interconnect Element table +-- + +t11FcsIeTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsIeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Interconnect Elements. Interconnect + Elements (IEs) are switches, hubs, bridges etc. + + By default, the Fabric Configuration Server will + maintain detailed information pertaining only to + local resources. As far as discovered topology is + concerned, only the IE name, type, and Domain ID + information will be maintained. If a discovery + cycle is triggered on a set of Fabrics, this table + along with the Port and Platform tables will be + populated with the discovered information. The + discovered data will be retained in this table for + at least t11FcsFabricDiscoveryTimeOut seconds after + the completion of its discovery or until the + discovered data is invalidated." + ::= { t11FcsDiscoveredConfig 1 } + +t11FcsIeEntry OBJECT-TYPE + SYNTAX T11FcsIeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about an Interconnect Element that was + discovered on a Fabric (identified by t11FcsFabricIndex), + by a switch (identified by fcmInstanceIndex and + fcmSwitchIndex)." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex, + t11FcsIeName } + ::= { t11FcsIeTable 1 } + +T11FcsIeEntry ::= SEQUENCE { + t11FcsIeName FcNameIdOrZero, + t11FcsIeType T11FcIeType, + + + + t11FcsIeDomainId FcDomainIdOrZero, + t11FcsIeMgmtId FcAddressIdOrZero, + t11FcsIeFabricName FcNameIdOrZero, + t11FcsIeLogicalName OCTET STRING, + t11FcsIeMgmtAddrListIndex T11FcListIndexPointerOrZero, + t11FcsIeInfoList OCTET STRING +} + +t11FcsIeName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The WWN of an Interconnect Element. This object + uniquely identifies an Interconnect Element on a + Fabric. If the IE is a switch, then this object + is the Switch_Name (WWN) of the switch." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.1." + ::= { t11FcsIeEntry 1 } + +t11FcsIeType OBJECT-TYPE + SYNTAX T11FcIeType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this Interconnect Element." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.2" + ::= { t11FcsIeEntry 2 } + +t11FcsIeDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Domain ID of this Interconnect Element." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.3." + ::= { t11FcsIeEntry 3 } + +t11FcsIeMgmtId OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The management identifier of this Interconnect Element. + If the Interconnect Element is a switch, this object will + be the Domain Controller identifier of the switch. When + the value of the identifier is unknown, this object + contains the all-zeros value: x'00 00 00'." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.4." + DEFVAL { '000000'h } + ::= { t11FcsIeEntry 4 } + +t11FcsIeFabricName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fabric_Name (WWN) of this Interconnect Element. + When the Fabric_Name is unknown, this object contains + the all-zeros value: x'00 00 00 00 00 00 00 00'." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.5." + DEFVAL { '0000000000000000'h } + ::= { t11FcsIeEntry 5 } + +t11FcsIeLogicalName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The logical name of this Interconnect Element. + When the logical name is unknown, this object contains + the zero-length string." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.6." + ::= { t11FcsIeEntry 6 } + +t11FcsIeMgmtAddrListIndex OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The management address list for this Interconnect Element. + This object points to an entry in the + t11FcsMgmtAddrListTable." + REFERENCE + + + + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.7." + ::= { t11FcsIeEntry 7 } + +t11FcsIeInfoList OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..252)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The information list for this Interconnect Element. + + The value of this object is formatted as specified in + FC-GS-5, i.e., it has the following substrings in order: + vendor name, model name/number, and release code/level, + followed by zero or more substrings of vendor-specific + information. Each substring is terminated with a byte + containing a null value (x'00')." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.8" + ::= { t11FcsIeEntry 8 } + +-- +-- Management Address List table +-- + +t11FcsMgmtAddrListTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsMgmtAddrListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the set of management address lists + that are currently referenced by any instance of the + t11FcsIeMgmtAddrListIndex or + t11FcsPlatformMgmtAddrListIndex objects." + ::= { t11FcsDiscoveredConfig 2 } + +t11FcsMgmtAddrListEntry OBJECT-TYPE + SYNTAX T11FcsMgmtAddrListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about one management address in a + management address list, which is known to a + switch (identified by fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsMgmtAddrListIndex, t11FcsMgmtAddrIndex } + + + + ::= { t11FcsMgmtAddrListTable 1 } + +T11FcsMgmtAddrListEntry ::= SEQUENCE { + t11FcsMgmtAddrListIndex T11FcListIndex, + t11FcsMgmtAddrIndex Unsigned32, + t11FcsMgmtAddr URLString +} + +t11FcsMgmtAddrListIndex OBJECT-TYPE + SYNTAX T11FcListIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value of the management address list." + ::= { t11FcsMgmtAddrListEntry 1 } + +t11FcsMgmtAddrIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer value to distinguish different + management addresses in the same list." + ::= { t11FcsMgmtAddrListEntry 2 } + +t11FcsMgmtAddr OBJECT-TYPE + SYNTAX URLString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The management address of this entry. + + The format of this object is a Uniform Resource + Locator (URL), e.g., for SNMP, see RFC 4088." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.2.7" + ::= { t11FcsMgmtAddrListEntry 3 } + +-- +-- Ports +-- + +t11FcsPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table contains information about the ports of IEs." + ::= { t11FcsDiscoveredConfig 4 } + +t11FcsPortEntry OBJECT-TYPE + SYNTAX T11FcsPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular port of an Interconnect + Element (identified by t11FcsIeName). The port is + connected to a Fabric (identified by t11FcsFabricIndex) + and known to a switch (identified by fcmInstanceIndex + and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex, + t11FcsIeName, t11FcsPortName } + ::= { t11FcsPortTable 1 } + +T11FcsPortEntry ::= SEQUENCE { + t11FcsPortName FcNameIdOrZero, + t11FcsPortType FcPortType, + t11FcsPortTxType T11FcPortTxType, + t11FcsPortModuleType Unsigned32, + t11FcsPortPhyPortNum Unsigned32, + t11FcsPortAttachPortNameIndex T11FcListIndexPointerOrZero, + t11FcsPortState T11FcPortState, + t11FcsPortSpeedCapab OCTET STRING, + t11FcsPortOperSpeed OCTET STRING, + t11FcsPortZoningEnfStatus OCTET STRING +} + +t11FcsPortName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Port_Name (WWN) of the port for which this row + contains information." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.1." + ::= { t11FcsPortEntry 1 } + +t11FcsPortType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port Type of this port." + + + + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.2." + ::= { t11FcsPortEntry 2 } + +t11FcsPortTxType OBJECT-TYPE + SYNTAX T11FcPortTxType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port TX Type of this port." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.3." + ::= { t11FcsPortEntry 3 } + +t11FcsPortModuleType OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port module type of this port." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.4." + ::= { t11FcsPortEntry 4 } + +t11FcsPortPhyPortNum OBJECT-TYPE + SYNTAX Unsigned32 -- the default range of (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical number for this port. FC-GS-5 says that + the contents of this field, which are carried in a field + with a size of 4 bytes, are not to be restricted due to + vendor-specific methods for numbering physical ports." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.5." + ::= { t11FcsPortEntry 5 } + +t11FcsPortAttachPortNameIndex OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The attached port name list for this port. This object + points to an entry in the t11FcsAttachPortNameListTable." + + + + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.6." + ::= { t11FcsPortEntry 6 } + +t11FcsPortState OBJECT-TYPE + SYNTAX T11FcPortState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of this port." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.7." + ::= { t11FcsPortEntry 7 } + +t11FcsPortSpeedCapab OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port speed capabilities of this port. The two octets + of the value are formatted as described in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.8." + ::= { t11FcsPortEntry 8 } + +t11FcsPortOperSpeed OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operating speed of this port. The two octets + of the value are formatted as described in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.9." + ::= { t11FcsPortEntry 9 } + +t11FcsPortZoningEnfStatus OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (12)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The zoning enforcement status of this port. The 12 + octets of the value are formatted as described in FC-GS-5." + REFERENCE + + + + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.10." + ::= { t11FcsPortEntry 10 } + +-- +-- Attached Port List table +-- + +t11FcsAttachPortNameListTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsAttachPortNameListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all the lists of attach port + names." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.6" + ::= { t11FcsDiscoveredConfig 5 } + +t11FcsAttachPortNameListEntry OBJECT-TYPE + SYNTAX T11FcsAttachPortNameListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the name of a particular attached port, + which is known to a switch (identified by fcmInstanceIndex + and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsAttachPortNameListIndex, t11FcsAttachPortName } + ::= { t11FcsAttachPortNameListTable 1 } + +T11FcsAttachPortNameListEntry ::= SEQUENCE { + t11FcsAttachPortNameListIndex T11FcListIndex, + t11FcsAttachPortName OCTET STRING +} + +t11FcsAttachPortNameListIndex OBJECT-TYPE + SYNTAX T11FcListIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value of the attach port name list." + ::= { t11FcsAttachPortNameListEntry 1 } + +t11FcsAttachPortName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (12)) + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The attached port name. Zero or more of these names + may be associated with a port object. + The first 8 bytes of this object contain the WWN of + the port followed by 2 reserved bytes. Following + this is one byte of Port flags and one byte of + Port type, as described in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.3.6" + ::= { t11FcsAttachPortNameListEntry 2 } + +-- +-- Platforms +-- + +t11FcsPlatformTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsPlatformEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on platforms. + + By default, this table only contains local (e.g., for a + local switch) information. If a discovery is triggered, + this table will also contain information gathered by the + discovery process. The discovered information is retained + in this table for at least t11FcsFabricDiscoveryTimeOut + seconds after the completion of its discovery or until + the discovered cache is invalidated." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4" + ::= { t11FcsDiscoveredConfig 6 } + +t11FcsPlatformEntry OBJECT-TYPE + SYNTAX T11FcsPlatformEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular platform, which is + known to a switch (identified by fcmInstanceIndex and + fcmSwitchIndex). + + A platform can contain multiple nodes. Information on + nodes is contained in the t11FcsNodeNameListTable. The + t11FcsPlatformNodeNameListIndex object in this table + + + + points to the list of nodes contained in this platform. + Similarly, the t11FcsPlatformMgmtAddrListIndex object in + this table points to the list of management addresses + associated with this platform." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsFabricIndex, t11FcsPlatformIndex } + ::= { t11FcsPlatformTable 1 } + +T11FcsPlatformEntry ::= SEQUENCE { + t11FcsPlatformIndex Unsigned32, + t11FcsPlatformName OCTET STRING, + t11FcsPlatformType OCTET STRING, + t11FcsPlatformNodeNameListIndex T11FcListIndexPointerOrZero, + t11FcsPlatformMgmtAddrListIndex T11FcListIndexPointerOrZero, + t11FcsPlatformVendorId SnmpAdminString, + t11FcsPlatformProductId SnmpAdminString, + t11FcsPlatformProductRevLevel SnmpAdminString, + t11FcsPlatformDescription SnmpAdminString, + t11FcsPlatformLabel SnmpAdminString, + t11FcsPlatformLocation SnmpAdminString, + t11FcsPlatformSystemID SnmpAdminString, + t11FcsPlatformSysMgmtAddr T11FcListIndexPointerOrZero, + t11FcsPlatformClusterId SnmpAdminString, + t11FcsPlatformClusterMgmtAddr T11FcListIndexPointerOrZero, + t11FcsPlatformFC4Types OCTET STRING +} + +t11FcsPlatformIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer value to distinguish one platform from + other platforms in the same Fabric." + ::= { t11FcsPlatformEntry 1 } + +t11FcsPlatformName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this platform. The last byte of the value + indicates the format of the name (even if the name itself + is the zero-length string) as specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.2" + ::= { t11FcsPlatformEntry 2 } + + + +t11FcsPlatformType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type(s) of this platform, encoded in 4 bytes as + specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.3" + ::= { t11FcsPlatformEntry 3 } + +t11FcsPlatformNodeNameListIndex OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The list of nodes for this platform. This object points + to an entry in the t11FcsNodeNameListTable." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.6" + ::= { t11FcsPlatformEntry 4 } + +t11FcsPlatformMgmtAddrListIndex OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The list of management addresses for this platform. This + object points to an entry in the t11FcsMgmtAddrListTable." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.7" + ::= { t11FcsPlatformEntry 5 } + +t11FcsPlatformVendorId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 12)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identifier of the vendor of this platform, in the + format specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 6 } + + + + +t11FcsPlatformProductId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 20)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's product and/or model identifier for this + platform, in the format specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 7 } + +t11FcsPlatformProductRevLevel OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The product revision level for this platform, in the + format specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 8 } + +t11FcsPlatformDescription OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of this platform, in the + format specified in FC-GS-5. This value should + include the full name and version identification of the + platform's hardware type and software operating system." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.10" + ::= { t11FcsPlatformEntry 9 } + +t11FcsPlatformLabel OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An administratively assigned symbolic name for the + platform, in the format specified in FC-GS-5." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.11" + + + + ::= { t11FcsPlatformEntry 10 } + +t11FcsPlatformLocation OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The physical location of the platform, in the format + specified in FC-GS-5 (e.g., 'telephone closet, 3rd floor')." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.12" + ::= { t11FcsPlatformEntry 11 } + +t11FcsPlatformSystemID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identifier for a hosting system that this platform is + associated with. This identifier is used to associate + platforms of logical types (e.g., logical partitions) with + a physical system." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 12 } + +t11FcsPlatformSysMgmtAddr OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A list of management addresses for the platform." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, sections 6.2.3.4.5 and 6.2.3.2.7." + ::= { t11FcsPlatformEntry 13 } + +t11FcsPlatformClusterId OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0 | 4..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identifier for a cluster that this platform is + associated with, where a cluster is a set of independent + platforms that are managed together to provide increased + performance capabilities, failover, etc." + + + + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 14 } + +t11FcsPlatformClusterMgmtAddr OBJECT-TYPE + SYNTAX T11FcListIndexPointerOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A list of management addresses for the cluster identified + in the corresponding instance of t11FcsPlatformClusterId." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, sections 6.2.3.4.5 and 6.2.3.2.7." + ::= { t11FcsPlatformEntry 15 } + +t11FcsPlatformFC4Types OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC-4 types supported by this platform, formatted as + a bit mask as specified in FC-GS-5. If this object + contains the zero-length string, the types are unknown." + REFERENCE + "ANSI INCITS 427-2007, Fibre Channel - Generic Services 5, + FC-GS-5, section 6.2.3.4.5" + ::= { t11FcsPlatformEntry 16 } + +-- +-- Node Name List table +-- + +t11FcsNodeNameListTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsNodeNameListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all the lists of nodes." + ::= { t11FcsDiscoveredConfig 7 } + +t11FcsNodeNameListEntry OBJECT-TYPE + SYNTAX T11FcsNodeNameListEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a node, which is known to a + + + + switch (identified by fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsNodeNameListIndex, t11FcsNodeName } + ::= { t11FcsNodeNameListTable 1 } + +T11FcsNodeNameListEntry ::= SEQUENCE { + t11FcsNodeNameListIndex T11FcListIndex, + t11FcsNodeName FcNameIdOrZero +} + +t11FcsNodeNameListIndex OBJECT-TYPE + SYNTAX T11FcListIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value of the node name list." + ::= { t11FcsNodeNameListEntry 1 } + +t11FcsNodeName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this node." + ::= { t11FcsNodeNameListEntry 2 } + +-- +-- Statistics +-- + +t11FcsStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all the statistics related + to the Fabric Configuration Server." + ::= { t11FcsStats 1 } + +t11FcsStatsEntry OBJECT-TYPE + SYNTAX T11FcsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for a particular Fabric (identified + by t11FcsFabricIndex) on a switch (identified by + fcmInstanceIndex and fcmSwitchIndex)." + + + + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcsFabricIndex } + ::= { t11FcsStatsTable 1 } + +T11FcsStatsEntry ::= SEQUENCE { + t11FcsInGetReqs Counter32, + t11FcsOutGetReqs Counter32, + t11FcsInRegReqs Counter32, + t11FcsOutRegReqs Counter32, + t11FcsInDeregReqs Counter32, + t11FcsOutDeregReqs Counter32, + t11FcsRejects Counter32 +} + +t11FcsInGetReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Get Requests received by the Fabric + Configuration Server on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 1 } + + +t11FcsOutGetReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Get Requests sent by the Fabric + Configuration Server on this Fabric to other + servers in the Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 2 } + + +t11FcsInRegReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registration Requests received by the + Fabric Configuration Server on this Fabric. + + + + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 3 } + +t11FcsOutRegReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registration Requests sent by the + Fabric Configuration Server on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 4 } + + +t11FcsInDeregReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Deregistration Requests received by + the Fabric Configuration Server on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 5 } + +t11FcsOutDeregReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Deregistration Requests sent by + the Fabric Configuration Server on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 6 } + +t11FcsRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of requests rejected by the Fabric + Configuration Server on this Fabric. + + + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcsStatsEntry 7 } + +-- +-- Notification Control Table +-- + +t11FcsNotifyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcsNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control information for notifications + generated due to Fabric Configuration Server events. + + Values written to objects in this table should be + persistent/retained over agent reboots." + ::= { t11FcsNotificationInfo 1 } + +t11FcsNotifyControlEntry OBJECT-TYPE + SYNTAX T11FcsNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains notification control information + for a Fabric Configuration Server on a particular Fabric + (identified by t11FcsFabricIndex) on a particular + switch (identified by fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcsFabricIndex } + ::= { t11FcsNotifyControlTable 1 } + +T11FcsNotifyControlEntry ::= SEQUENCE { + t11FcsReqRejectNotifyEnable TruthValue, + t11FcsDiscoveryCompNotifyEnable TruthValue, + t11FcsMgmtAddrChangeNotifyEnable TruthValue, + t11FcsRejectCtCommandString OCTET STRING, + t11FcsRejectRequestSource FcNameIdOrZero, + t11FcsRejectReasonCode T11NsGs4RejectReasonCode, + t11FcsRejectReasonCodeExp T11FcsRejectReasonExplanation, + t11FcsRejectReasonVendorCode OCTET STRING +} + +t11FcsReqRejectNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "This object specifies if the Fabric Configuration + Server should generate 't11FcsRqRejectNotification' + notifications. + + If the value of this object is 'true', then the + notification is issued. If the value of this object + is 'false', then the notification is not issued." + DEFVAL { false } + ::= { t11FcsNotifyControlEntry 1 } + +t11FcsDiscoveryCompNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies if the Fabric Configuration + Server should generate 't11FcsDiscoveryCompleteNotify' + notifications. + + If the value of this object is 'true', then the + notification is issued. If the value of this object + is 'false', then the notification is not issued." + DEFVAL { false } + ::= { t11FcsNotifyControlEntry 2 } + +t11FcsMgmtAddrChangeNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies if the Fabric Configuration + Server should generate 't11FcsMgmtAddrChangeNotify' + notifications. + + If the value of this object is 'true', then the + notification is issued. If the value of this object + is 'false', then the notification is not issued." + DEFVAL { false } + ::= { t11FcsNotifyControlEntry 3 } + +t11FcsRejectCtCommandString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The binary content of the Fabric Configuration Server + + + + request, formatted as an octet string (in network byte + order) containing the Common Transport Information Unit + (CT_IU), as described in Table 2 of FC-GS-5 (including + the preamble), which was most recently rejected by the + Fabric Configuration Server for this Fabric. + + This object contains the zero-length string if and when the + CT-IU's content is unavailable. + + When the length of this object is 255 octets, it contains + the first 255 octets of the CT-IU (in network byte order)." + ::= { t11FcsNotifyControlEntry 4 } + +t11FcsRejectRequestSource OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The WWN that was the source of the CT_IU contained in + the corresponding instance of t11FcsRejectCtCommandString." + ::= { t11FcsNotifyControlEntry 5 } + +t11FcsRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the reason code corresponding + to the latest Fabric Configuration Server request + rejected by the local system." + ::= { t11FcsNotifyControlEntry 6 } + +t11FcsRejectReasonCodeExp OBJECT-TYPE + SYNTAX T11FcsRejectReasonExplanation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the corresponding instance of + t11FcsRejectReasonCode has the value: 'unable to + perform command request', this object contains the + corresponding reason code explanation." + ::= { t11FcsNotifyControlEntry 7 } + +t11FcsRejectReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "A registration reject vendor-specific code. This + object contains the vendor-specific code of the most + recently rejected Fabric Configuration Server + Registration request for the particular port on + the particular Fabric." + ::= { t11FcsNotifyControlEntry 8 } +-- +-- Notifications +-- + +t11FcsRqRejectNotification NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, + t11FcsRejectReasonCode, + t11FcsRejectReasonCodeExp, + t11FcsRejectReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated whenever the Fabric + Configuration Server on a switch (indicated by the + value of t11FamLocalSwitchWwn) rejects a Fabric + Configuration Server request. + + The Fabric Configuration Server should update the + t11FcsRejectReasonCode, t11FcsRejectReasonCodeExp + and t11FcsRejectReasonVendorCode objects with the + corresponding reason code, explanation and vendor + specific code before sending the notification." + ::= { t11FcsNotifications 1 } + +t11FcsDiscoveryCompleteNotify NOTIFICATION-TYPE + OBJECTS {t11FcsFabricDiscoveryRangeLow} + STATUS current + DESCRIPTION + "This notification is generated by the Fabric + Configuration Server on the completion of the + discovery of Fabrics in the range that has + t11FcsFabricDiscoveryRangeLow at its low end." + ::= { t11FcsNotifications 2 } + +t11FcsMgmtAddrChangeNotify NOTIFICATION-TYPE + OBJECTS { t11FcsMgmtAddrChangeFabricIndex, + t11FcsMgmtAddrChangeIeName } + STATUS current + DESCRIPTION + "This notification is generated by the Fabric + Configuration Server whenever the management + address of an IE changes, i.e., whenever an + entry in the t11FcsMgmtAddrListTable changes." + + + + ::= { t11FcsNotifications 3 } + +t11FcsMgmtAddrChangeFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The index value that identifies the Fabric on which + a management address change has been detected." + ::= { t11FcsNotificationInfo 2 } + +t11FcsMgmtAddrChangeIeName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The IE for which a management address change has been + detected." + ::= { t11FcsNotificationInfo 3 } + + +-- Conformance + +t11FcsMIBCompliances OBJECT IDENTIFIER ::= { t11FcsMIBConformance 1 } +t11FcsMIBGroups OBJECT IDENTIFIER ::= { t11FcsMIBConformance 2 } + +t11FcsMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the Fabric Configuration Server." + MODULE MANDATORY-GROUPS { t11FcsDiscoveredConfigGroup, + t11FcsDiscoveryStatusGroup, + t11FcsNotificationInfoGroup, + t11FcsNotificationGroup } + + GROUP t11FcsDiscoveryControlGroup + DESCRIPTION + "This group is mandatory only for those systems that + allow discovery of configuration by Fabric Configuration + Servers to be controlled via a MIB." + + GROUP t11FcsStatisticsGroup + DESCRIPTION + "These counters, containing Fabric Configuration + Server statistics, are mandatory only for those systems + that count such events." + + + + + OBJECT t11FcsDiscoveryStatus + WRITE-SYNTAX INTEGER { localOnly(3) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + However, if write access is supported, then the only + writable value is 'localOnly'." + + OBJECT t11FcsReqRejectNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcsDiscoveryCompNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcsMgmtAddrChangeNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FcsMIBCompliances 1 } + + +-- Units of Conformance + +t11FcsDiscoveryControlGroup OBJECT-GROUP + OBJECTS { t11FcsFabricDiscoveryRangeLow, + t11FcsFabricDiscoveryRangeHigh, + t11FcsFabricDiscoveryStart, + t11FcsFabricDiscoveryTimeOut } + STATUS current + DESCRIPTION + "A collection of objects for requesting a Fabric + Configuration Server to discover the configuration + of one or more Fabrics." + ::= { t11FcsMIBGroups 1 } + +t11FcsDiscoveryStatusGroup OBJECT-GROUP + OBJECTS { t11FcsDiscoveryStatus, + t11FcsDiscoveryCompleteTime } + STATUS current + DESCRIPTION + "A collection of objects with which to monitor the + status of discovery (of Fabric configurations) by + Fabric Configuration Servers." + + + + ::= { t11FcsMIBGroups 2 } + +t11FcsDiscoveredConfigGroup OBJECT-GROUP + OBJECTS { + t11FcsIeType, + t11FcsIeDomainId, + t11FcsIeMgmtId, + t11FcsIeFabricName, + t11FcsIeLogicalName, + t11FcsIeMgmtAddrListIndex, + t11FcsIeInfoList, + t11FcsMgmtAddr, + t11FcsPortType, + t11FcsPortTxType, + t11FcsPortModuleType, + t11FcsPortPhyPortNum, + t11FcsPortAttachPortNameIndex, + t11FcsPortState, + t11FcsPortSpeedCapab, + t11FcsPortOperSpeed, + t11FcsPortZoningEnfStatus, + t11FcsAttachPortName, + t11FcsPlatformName, + t11FcsPlatformType, + t11FcsPlatformNodeNameListIndex, + t11FcsPlatformMgmtAddrListIndex, + t11FcsPlatformVendorId, + t11FcsPlatformProductId, + t11FcsPlatformProductRevLevel, + t11FcsPlatformDescription, + t11FcsPlatformLabel, + t11FcsPlatformLocation, + t11FcsPlatformSystemID, + t11FcsPlatformSysMgmtAddr, + t11FcsPlatformClusterId, + t11FcsPlatformClusterMgmtAddr, + t11FcsPlatformFC4Types, + t11FcsNodeName } + STATUS current + DESCRIPTION + "A collection of objects to contain the Fabric configuration + information discovered by Fabric Configuration Servers." + ::= { t11FcsMIBGroups 3 } + +t11FcsStatisticsGroup OBJECT-GROUP + OBJECTS { t11FcsInGetReqs, + t11FcsOutGetReqs, + t11FcsInRegReqs, + + + + t11FcsOutRegReqs, + t11FcsInDeregReqs, + t11FcsOutDeregReqs, + t11FcsRejects } + STATUS current + DESCRIPTION + "A collection of objects for Fabric Configuration Server + statistics information." + ::= { t11FcsMIBGroups 4 } + +t11FcsNotificationInfoGroup OBJECT-GROUP + OBJECTS { t11FcsReqRejectNotifyEnable, + t11FcsDiscoveryCompNotifyEnable, + t11FcsMgmtAddrChangeNotifyEnable, + t11FcsRejectCtCommandString, + t11FcsRejectRequestSource, + t11FcsRejectReasonCode, + t11FcsRejectReasonCodeExp, + t11FcsRejectReasonVendorCode, + t11FcsMgmtAddrChangeFabricIndex, + t11FcsMgmtAddrChangeIeName } + STATUS current + DESCRIPTION + "A collection of notification control and notification + information objects for monitoring Fabric + Configuration Servers." + ::= { t11FcsMIBGroups 5 } + +t11FcsNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11FcsRqRejectNotification, + t11FcsDiscoveryCompleteNotify, + t11FcsMgmtAddrChangeNotify } + STATUS current + DESCRIPTION + "A collection of notifications for monitoring Fabric + Configuration Servers." + ::= { t11FcsMIBGroups 6 } + +END diff --git a/mibs/ietf/T11-FC-FABRIC-LOCK-MIB b/mibs/ietf/T11-FC-FABRIC-LOCK-MIB new file mode 100644 index 0000000..c6c757f --- /dev/null +++ b/mibs/ietf/T11-FC-FABRIC-LOCK-MIB @@ -0,0 +1,515 @@ +T11-FC-FABRIC-LOCK-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + mib-2 FROM SNMPv2-SMI -- [RFC2578] + RowStatus FROM SNMPv2-TC -- [RFC2579] + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + InetAddressType, InetAddress FROM + INET-ADDRESS-MIB -- [RFC4001] + fcmInstanceIndex, fcmSwitchIndex FROM FC-MGMT-MIB -- [RFC4044] + T11NsGs4RejectReasonCode FROM + T11-FC-NAME-SERVER-MIB -- [RFC4438] + T11FabricIndex FROM T11-TC-MIB; -- [RFC4439] + +t11FabricLockMIB MODULE-IDENTITY + LAST-UPDATED "200706270000Z" + ORGANIZATION "For the initial versions, T11. + For later versions, the IETF's IMSS Working Group." + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + Keith McCloghrie + + + + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: kzm@cisco.com" + + DESCRIPTION + "The MIB module for the management of locks on a Fibre + Channel Fabric. A Fibre Channel Fabric lock is used to + ensure serialized access to some types of management data + related to a Fabric, e.g., the Fabric's Zoning Database. + + Some (managing) applications generate Fabric locks by + initiating server sessions. Server sessions are + defined generically in FC-GS-5 to represent a collection of + one or more requests to the session's server, e.g., to the + Zone Server. Such a session is started by a Server Session + Begin (SSB) request, and terminated by a Server Session End + (SSE) request. The switch receiving the SSB is called the + 'managing' switch. Some applications require the + 'managing' switch to lock the Fabric for the particular + application, e.g., for Enhanced Zoning, before it can + respond successfully to the SSB. On receipt of the + subsequent SSE, the lock is released. For this usage, the + managing switch sends an Acquire Change Authorization (ACA) + request to other switches to lock the Fabric. + + For some other applications, a managing switch locks the + Fabric using an Enhanced Acquire Change Authorization (EACA) + request, which identifies the application on whose behalf + the Fabric is being locked with an Application_ID. + + Fabric locks can also be requested more directly, e.g., + through the use of this MIB. In these situations, the term + 'managing' switch is used to indicate the switch that + receives such a request and executes it by issuing either + ACA or EACA requests to other switches in the Fabric. + + This MIB module defines information about the 'managing' + switch for currently-active Fabric locks. + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of RFC 4936; see the RFC + itself for full legal notices." + REVISION "200706270000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4936." + ::= { mib-2 159 } + + + + +t11FLockMIBObjects OBJECT IDENTIFIER ::= { t11FabricLockMIB 1 } +t11FLockMIBConformance OBJECT IDENTIFIER ::= { t11FabricLockMIB 2 } +t11FLockMIBNotifications OBJECT IDENTIFIER ::= { t11FabricLockMIB 0 } +t11FLockConfiguration OBJECT IDENTIFIER ::= { t11FLockMIBObjects 1 } + +-- +-- The table of Managing Switches and their Fabric Locks +-- + +t11FLockTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FLockEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about the 'managing' + switch of each current Fabric lock, e.g., for the + types of Servers defined in FC-GS-5. + + Each entry in this table represents either: + + 1) a current Fabric lock, + 2) an in-progress attempt, requested via SNMP, to set up + a lock, or + 3) a failed attempt, requested via SNMP, to set up a lock. + + If an entry is created via t11FLockRowStatus, but the + attempt to obtain the lock fails, then the entry continues + to exist until it is deleted via t11FLockRowStatus, or + it is overwritten by the lock being established via + a means other than SNMP. However, rows created via + t11FLockRowStatus are not retained over restarts." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, sections 4.9.5 and 6.4.10.2." + ::= { t11FLockConfiguration 1 } + +t11FLockEntry OBJECT-TYPE + SYNTAX T11FLockEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information specific to a current + Fabric lock set up by a particular 'managing' switch on a + particular Fabric. The 'managing switch' is identified by + values of fcmInstanceIndex and fcmSwitchIndex. + + Server sessions for several different types of servers + are defined in FC-GS-5. The behavior of a server with + + + + respect to commands received within a server session is + specified for each type of server. For some types, + parameter changes can only be made within the context of a + session, and the setting up of a session requires that the + Fabric be locked. A Fabric is locked by one switch, called + the 'managing' switch, sending Acquire Change Authorization + (ACA) requests to all other switches in the Fabric. + + For other applications, a Fabric lock is established by the + 'managing' switch sending Enhanced Acquire Change + Authorization (EACA) requests to other switches in the + Fabric. Each EACA request includes an Application_ID + value to identify the application requesting the lock. + + For the benefit of this MIB module, a distinct value of + Application_ID has also been assigned/reserved (see + ANSI INCITS T11/06-679v0, titled 'FC-SW-5 Letter to + T11.5') as a means of distinguishing locks established via + Acquire Change Authorization (ACA) requests. This + additional assignment allows an Application_ID to be used to + uniquely identify any active lock amongst all those + established by either an EACA or an ACA. + + Whenever a Fabric is locked, by the sending of either an ACA + or an EACA, a row gets created in the representation of this + table for the 'managing' switch. + + In order to process SNMP SetRequests that make parameter + changes for the relevant types of servers (e.g., to the + Zoning Database), the SNMP agent must get serialized access + to the Fabric (for the relevant type of management data), + i.e., the Fabric must be locked by creating an entry in + this table via an SNMP SetRequest. Creating an entry in + this table via an SNMP SetRequest causes an ACA or an EACA + to be sent to all other switches in the Fabric. The value + of t11FLockApplicationID for such an entry determines + whether an ACA or an EACA is sent. + + If an entry in this table is created by an SNMP SetRequest, + the value of the t11FLockInitiatorType object in that entry + will normally be 'snmp'. A row for which the value of + t11FLockInitiatorType is not 'snmp' cannot be modified + via SNMP. In particular, it cannot be deleted via + t11FLockRowStatus. Note that it's possible for a row to be + created by an SNMP SetRequest, but for the setup of the lock + to fail, and immediately thereafter be replaced by a lock + successfully set up by some other means; in such a case, the + value of t11FLockInitiatorType would change as and when the + + + + lock was set up by the other means, and so the row could + not thereafter be deleted via t11FLockRowStatus. + + FC-GS-5 mentions various error situations in which a + Fabric lock is released so as to avoid a deadlock. In + such situations, the agent removes the corresponding row + in this table as and when the lock is released. This can + happen for all values of t11FLockInitiatorType." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, sections 4.9.5.5 and 6.4.7.1. + + Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, sections 6.1.17, 10.6.6, and 13.2, + and table 116. + + 'FC-SW-5 Letter to T11.5' ANSI INCITS T11/06-679v0, + http://www.t11.org/ftp/t11/pub/fc/sw-5/06-679v0.pdf, + 21 September 2006." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FLockFabricIndex, + t11FLockApplicationID } + ::= { t11FLockTable 1 } + +T11FLockEntry ::= SEQUENCE { + t11FLockFabricIndex T11FabricIndex, + t11FLockApplicationID OCTET STRING, + t11FLockInitiatorType INTEGER, + t11FLockInitiator OCTET STRING, + t11FLockInitiatorIpAddrType InetAddressType, + t11FLockInitiatorIpAddr InetAddress, + t11FLockStatus INTEGER, + t11FLockRejectReasonCode T11NsGs4RejectReasonCode, + t11FLockRejectReasonCodeExp OCTET STRING, + t11FLockRejectReasonVendorCode OCTET STRING, + t11FLockRowStatus RowStatus +} + +t11FLockFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures, + and this index value is used to uniquely identify a + + + + particular (physical or virtual) Fabric within a physical + infrastructure. + + In a Fabric conformant to versions earlier than FC-SW-4, + only a single Fabric could operate within a physical + infrastructure, and thus, the value of this Fabric Index + was defined to always be 1." + ::= { t11FLockEntry 1 } + +t11FLockApplicationID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Application_ID value that identifies the type of + application for which the Fabric is locked. + + A lock established via Acquire Change Authorization (ACA) + does not, strictly speaking, have an Application_ID value. + However, the value 'FF'h (255 decimal) has been reserved + by T11 to be used as the value of this MIB object as and + when a lock is established by an ACA. This value was + initially documented in a letter from the FC-SW-5 Editor + to T11.5, which was approved by the T11 and T11.5 plenary + meetings on October 5, 2006." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, Table 116. + + 'FC-SW-5 Letter to T11.5' ANSI INCITS T11/06-679v0, + http://www.t11.org/ftp/t11/pub/fc/sw-5/06-679v0.pdf, + 21 September 2006." + ::= { t11FLockEntry 2 } + +t11FLockInitiatorType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + ssb(2), + cli(3), + snmp(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies what type of initiator generated + the request that caused this lock to be established: + + other - none of the following. + + + + ssb - this lock was established due to the + receipt of an SSB, e.g., from a GS-5 + client. + cli - this lock was established in order + to process a Command Line Interface + (CLI) command. + snmp - this lock was established as a result + of an SNMP SetRequest. + " + ::= { t11FLockEntry 3 } + +t11FLockInitiator OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the initiator whose request + caused this lock to be established. + + If the value of the corresponding instance + of t11FLockInitiatorType is 'ssb', this + object will contain the FC_ID of the client + that issued the Server Session Begin (SSB) + that required the lock to be established. + + If the value of the corresponding instance + of t11FLockInitiatorType object is 'cli', this + object will contain the user name of the CLI + (Command Line Interface) user on whose behalf + the lock was established. + + If the value of the corresponding instance of + t11FLockInitiatorType is 'snmp', this object + will contain the SNMP securityName used by the + SNMPv3 message containing the SetRequest that + created this row. (If the row was created via + SNMPv1 or SNMPv2c, then the appropriate value of + the snmpCommunitySecurityName is used.)" + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 4.9.5.2. + + SNMP securityName is defined in RFC 3411, 'An + Architecture for Describing Simple Network + Management Protocol (SNMP) Management Frameworks'. + + snmpCommunitySecurityName is defined in RFC 3584, + 'Coexistence between Version 1, Version 2, and + + + + Version 3 of the Internet-standard Network + Management Framework.'" + ::= { t11FLockEntry 4 } + +t11FLockInitiatorIpAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the type of IP address contained + in the corresponding instance of t11FLockInitiatorIpAddr. + If the IP address of the location of the initiator is + unknown or not applicable, this object has the value: + 'unknown'." + ::= { t11FLockEntry 5 } + +t11FLockInitiatorIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object specifies the IP address of the location + of the initiator that established this lock via a + request of the type given by the corresponding instance + of t11FLockInitiatorType. In cases where the + corresponding instance of t11FLockInitiatorIpAddrType has + the value: 'unknown', the value of this object is the + zero-length string." + ::= { t11FLockEntry 6 } + +t11FLockStatus OBJECT-TYPE + SYNTAX INTEGER { + active(1), + settingUp(2), + rejectFailure(3), + otherFailure(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object gives the current status of the lock: + + 'active' -- the lock is currently established. + 'settingUp' -- the 'managing' switch is currently + attempting to set up the lock, e.g., + it is waiting to receive Accepts + for ACAs from every switch in the + Fabric. + + + + 'rejectFailure' -- the 'managing' switch's attempt to + set up the lock was rejected with + the reason codes given by: + t11FLockRejectReasonCode, + t11FLockRejectReasonCodeExp and + t11FLockRejectReasonVendorCode. + 'otherFailure' -- the 'managing' switch's attempt + to set up the lock failed (but no + reason codes are available). + + For values of t11FLockInitiatorType other than 'snmp', + a row is only required to be instantiated in this table + when the value of this object is 'active'. + + If the value of the corresponding instance of + t11FLockInitiatorType is 'snmp', the initial value of this + object when the row is first created is 'settingUp'. As + and when the setup succeeds, the value transitions to + 'active'. If the setup fails, the value transitions to + either 'rejectFailure' or 'otherFailure'. Note that such a + failure value is overwritten on the next attempt to obtain + the lock, which could be immediately after the failure, + e.g., by a GS-5 client. + + When the value of this object is 'rejectFailure', the + rejection's reason codes are given by the corresponding + values of t11FLockRejectReasonCode, + t11FLockRejectReasonCodeExp and + t11FLockRejectReasonVendorCode." + ::= { t11FLockEntry 7 } + +t11FLockRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of the corresponding instance of + t11FLockStatus is 'rejectFailure', this object contains + the rejection's reason code." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 4.4.4 and table 10." + ::= { t11FLockEntry 8 } + +t11FLockRejectReasonCodeExp OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 1)) + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "When the value of the corresponding instance of + t11FLockStatus is 'rejectFailure', this object contains + the rejection's reason code explanation." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, sections 4.4.4 and 6.4.9, + tables 10 and 252." + ::= { t11FLockEntry 9 } + +t11FLockRejectReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0 | 1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of the corresponding instance of + t11FLockStatus is 'rejectFailure', this object contains + the rejection's vendor-specific code." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 4.4.4." + ::= { t11FLockEntry 10 } + +t11FLockRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + A row in this table can be modified or deleted via + this object only when the row's value of + t11FLockInitiatorType is 'snmp'." + ::= { t11FLockEntry 11 } + +-- Conformance + +t11FLockMIBCompliances + OBJECT IDENTIFIER ::= { t11FLockMIBConformance 1 } +t11FLockMIBGroups OBJECT IDENTIFIER ::= { t11FLockMIBConformance 2 } + +t11FLockMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that support + Fabric locks in support of GS-5 Server applications." + MODULE MANDATORY-GROUPS { t11FLockActiveGroup } + + + + + OBJECT t11FLockRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FLockMIBCompliances 1 } + +-- Units of Conformance + +t11FLockActiveGroup OBJECT-GROUP + OBJECTS { t11FLockInitiatorType, + t11FLockInitiator, + t11FLockInitiatorIpAddrType, + t11FLockInitiatorIpAddr, + t11FLockStatus, + t11FLockRejectReasonCode, + t11FLockRejectReasonCodeExp, + t11FLockRejectReasonVendorCode, + t11FLockRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects containing information + about current Fabric locks." + ::= { t11FLockMIBGroups 1 } + +END diff --git a/mibs/ietf/T11-FC-FSPF-MIB b/mibs/ietf/T11-FC-FSPF-MIB new file mode 100644 index 0000000..4ff7db7 --- /dev/null +++ b/mibs/ietf/T11-FC-FSPF-MIB @@ -0,0 +1,1234 @@ +T11-FC-FSPF-MIB DEFINITIONS ::= BEGIN +-- +-- For management of FSPF, the Fibre Channel routing protocol. +-- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Integer32, Unsigned32, TimeTicks, + Gauge32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, RowStatus, StorageType, + TruthValue FROM SNMPv2-TC -- [RFC2579] + ifIndex, InterfaceIndex FROM IF-MIB -- [RFC2863] + fcmInstanceIndex, fcmSwitchIndex, + FcDomainIdOrZero FROM FC-MGMT-MIB -- [FC-MGMT] + T11FabricIndex FROM T11-TC-MIB -- [RFC4439] + t11FamConfigDomainId + FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [RFC4439] + +t11FcFspfMIB MODULE-IDENTITY + LAST-UPDATED "200608140000Z" + ORGANIZATION "T11" + CONTACT-INFO + "Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + + + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for managing the Fabric Shortest Path + First (FSPF) protocol. FSPF is specified in FC-SW-4. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4626; see the RFC itself for + full legal notices." + REVISION "200608140000Z" + DESCRIPTION + "Initial version of this MIB module published as RFC4626." + + ::= { mib-2 143 } + +t11FspfNotifications OBJECT IDENTIFIER ::= { t11FcFspfMIB 0 } +t11FspfObjects OBJECT IDENTIFIER ::= { t11FcFspfMIB 1 } +t11FspfConformance OBJECT IDENTIFIER ::= { t11FcFspfMIB 2 } +t11FspfConfiguration OBJECT IDENTIFIER ::= { t11FspfObjects 1 } +t11FspfDatabase OBJECT IDENTIFIER ::= { t11FspfObjects 2 } + +-- +-- TEXTUAL CONVENTIONS + +T11FspfLsrType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Type of the Link State Record. + + FC-SW-4 defines two types of LSRs and allows for the + possibility for more will be defined in the future: + + 01 - Switch Link Record + 02 - Obsolete + 240 - 255 - Vendor Specific + others - Reserved. + " + REFERENCE + "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 6.1.9.3." + SYNTAX Integer32 (0..255) + +T11FspfLinkType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + + + + "Type of an the FSPF Link. Presently defined values: + + 1 - Point-to-Point + 240-255 - Vendor Specific + all others - Reserved. + " + REFERENCE + "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 6.1.9.4." + SYNTAX Integer32 (0..255) + +T11FspfInterfaceState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The state of the FSPF Neighbor Finite State Machine + for the neighbor (switch) on a particular interface. + Possible values are : + + down(1) - Down + init(2) - Init + dbExchange(3) - Database Exchange + dbAckwait(4) - Database AckWait + dbWait(5) - Database Wait + full(6) - Full (Connected) + " + REFERENCE + "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.7." + SYNTAX INTEGER { + down(1), + init(2), + dbExchange(3), + dbAckwait(4), + dbWait(5), + full(6) + } + +T11FspfLastCreationTime ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that stores the last time + it, and the row containing it, was created. + + This can be used by management applications to determine + that a row has been deleted and re-created between reads, + causing an otherwise undetectable discontinuity in the + data." + SYNTAX TimeTicks + + + +-- +-- t11FspfTable + +t11FspfTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FspfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows the users to configure and monitor FSPF's + per-Fabric parameters and statistics on all Fabrics known to + locally managed switches. + + Entries are created/removed by the agent if and when + (Virtual) Fabrics are created/deleted." + ::= { t11FspfConfiguration 1 } + +t11FspfEntry OBJECT-TYPE + SYNTAX T11FspfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing FSPF variables, parameters, and + statistics on a particular switch (identified by values + of fcmInstanceIndex and fcmSwitchIndex) for a particular + Fabric (identified by a t11FspfFabricIndex value). + + (Note that the local switch's per-fabric Domain-ID is + available in t11FamConfigDomainId, which is defined in + T11-FC-FABRIC-ADDR-MGR-MIB.)" + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FspfFabricIndex } + ::= { t11FspfTable 1 } + +T11FspfEntry ::= SEQUENCE { + t11FspfFabricIndex T11FabricIndex, + t11FspfMinLsArrival Unsigned32, + t11FspfMinLsInterval Unsigned32, + t11FspfLsRefreshTime Unsigned32, + t11FspfMaxAge Unsigned32, + t11FspfMaxAgeDiscards Counter32, + t11FspfPathComputations Counter32, + t11FspfChecksumErrors Counter32, + t11FspfLsrs Gauge32, + t11FspfCreateTime T11FspfLastCreationTime, + t11FspfAdminStatus INTEGER, + t11FspfOperStatus INTEGER, + t11FspfNbrStateChangNotifyEnable TruthValue, + t11FspfSetToDefault INTEGER, + t11FspfStorageType StorageType + + + +} + +t11FspfFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures. + In such a case, index value is used to uniquely identify a + particular Fabric within a physical infrastructure. + + In a Fabric that has (can have) only a single Fabric + operating within the physical infrastructure, the + value of this Fabric Index will always be 1." + ::= { t11FspfEntry 1 } + +t11FspfMinLsArrival OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "milliSeconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time after accepting a Link State Record + (LSR) on this Fabric before accepting another update of + the same LSR on the same Fabric. + + An LSR update that is not accepted because of this time + interval is discarded." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, sections 8.6.4.5 & 15.1." + DEFVAL {1000} + ::= { t11FspfEntry 2 } + +t11FspfMinLsInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "milliSeconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum time after this switch sends an LSR on this + Fabric before it will send another update of the same LSR + on the same Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 15.1." + + + + DEFVAL {5000} + ::= { t11FspfEntry 3 } + +t11FspfLsRefreshTime OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interval between transmission of refresh LSRs on this + Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, sections 8.5.1 & 15.1." + DEFVAL {30} + ::= { t11FspfEntry 4 } + +t11FspfMaxAge OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum age an LSR will be retained in the FSPF + database on this Fabric. An LSR is removed from the + database after MaxAge is reached." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 15.1." + DEFVAL {60} + ::= { t11FspfEntry 5 } + +t11FspfMaxAgeDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LSRs discarded due to their age reaching + t11FspfMaxAge in this Fabric. The last discontinuity of + this counter is indicated by t11FspfCreateTime." + ::= { t11FspfEntry 6 } + +t11FspfPathComputations OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that the path computation algorithm + has been invoked by this Switch on this Fabric to compute + a set of minimum cost paths for this Fabric. The last + + + + discontinuity of this counter is indicated by + t11FspfCreateTime." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.1.1." + ::= { t11FspfEntry 7 } + +t11FspfChecksumErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of FSPF checksum errors that were detected + locally (and therefore discarded) on this Fabric. + The last discontinuity of this counter is indicated by + t11FspfCreateTime." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.5.4." + ::= { t11FspfEntry 8 } + +t11FspfLsrs OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of entries for this Fabric in the + t11FspfLsrTable." + ::= { t11FspfEntry 9 } + +t11FspfCreateTime OBJECT-TYPE + SYNTAX T11FspfLastCreationTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last created." + ::= { t11FspfEntry 10 } + +t11FspfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of FSPF in this Fabric. If value of + this object is set to 'up', then FSPF is enabled in + this Fabric. If set to 'down', then FSPF is disabled + in this Fabric -- when FSPF is disabled, FSPF provides + + + + no routes to be included in the T11-FC-ROUTE-MIB module. + (see the T11-FC-ROUTE-MIB)." + REFERENCE "T11-FC-ROUTE-MIB, The Fibre Channel Routing + Information MIB, RFC4625." + DEFVAL {up} + ::= { t11FspfEntry 11 } + +t11FspfOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "State of FSPF in this Fabric. If 't11FspfAdminStatus' is + 'down', then the 't11FspfOperStatus' should be 'down'. + If 't11FspfAdminStatus' is changed to 'up', then + 't11FspfOperStatus' should change to 'up' as and when + FSPF is active in this Fabric." + ::= { t11FspfEntry 12 } + +t11FspfNbrStateChangNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies whether or not the local agent should + issue the notification 't11FspfNbrStateChangNotify' + when the local switch learns of a change of state + in the FSPF Neighbor Finite State Machine on an + interface in this Fabric. + If the value of the object is 'true, then the + notification is generated. If the value is 'false', + notification is not generated." + DEFVAL { false } + ::= { t11FspfEntry 13 } + +t11FspfSetToDefault OBJECT-TYPE + SYNTAX INTEGER { + default(1), + noOp(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this value to 'default' changes the value of each + and every writable object in this row to its default + + + + value. + + No action is taken if this object is set to 'noOp'. + The value of the object, when read, is always 'noOp'." + ::= { t11FspfEntry 14 } + +t11FspfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for read-write objects in this + conceptual row. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11FspfEntry 15 } + +-- +-- t11FspfIfTable + +t11FspfIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FspfIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table allows the users to configure and monitor + the FSPF parameters that are per-interface (identified + by a t11FspfIfIndex value), per-Fabric (identified by a + t11FspfFabricIndex value), and per-switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex). + + Creating a row in this table via t11FspfIfRowStatus + provides the means to specify non-default parameter value(s) + for an interface at a time when the relevant row in this + table would not otherwise exist because the interface is + either down or it is not an E_Port, but the corresponding + row in the t11FspfTable must already exist. + + After the non-default values have been specified for a + port's parameters, they need to be retained in this table, + even when the port becomes 'isolated'. However, having + unnecessary rows in this table clutters it up and makes + those rows that are useful harder for an NMS to find. + Therefore, when an E_Port becomes isolated, its row gets + deleted if and only if all of its parameter values are the + default values; also, when an E_Port becomes non-isolated + + + + in a particular Fabric, a row in this table needs to exist + and is automatically created, if necessary. + + The specific conditions for an automated/implicit deletion + of a row are: + a) if the corresponding interface is no longer an E_Port + (e.g., a G_Port which is dynamically determined to be an + F_Port), and all configurable parameters have default + values; or + b) if the interface identified by t11FspfIfIndex no longer + exists (e.g., because a line-card is physically removed); + or + c) if the corresponding row in the t11FspfTable is deleted. + " + ::= { t11FspfConfiguration 2 } + +t11FspfIfEntry OBJECT-TYPE + SYNTAX T11FspfIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing FSPF information for the interface + identified by t11FspfIfIndex, on the fabric identified + by t11FspfFabricIndex, on the switch identified by + fcmSwitchIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FspfFabricIndex, t11FspfIfIndex } + ::= { t11FspfIfTable 1 } + +T11FspfIfEntry ::= SEQUENCE { + t11FspfIfIndex InterfaceIndex, + t11FspfIfHelloInterval Unsigned32, + t11FspfIfDeadInterval Unsigned32, + t11FspfIfRetransmitInterval Unsigned32, + t11FspfIfInLsuPkts Counter32, + t11FspfIfInLsaPkts Counter32, + t11FspfIfOutLsuPkts Counter32, + t11FspfIfOutLsaPkts Counter32, + t11FspfIfOutHelloPkts Counter32, + t11FspfIfInHelloPkts Counter32, + t11FspfIfRetransmittedLsuPkts Counter32, + t11FspfIfInErrorPkts Counter32, + t11FspfIfNbrState T11FspfInterfaceState, + t11FspfIfNbrDomainId FcDomainIdOrZero, + t11FspfIfNbrPortIndex Unsigned32, + t11FspfIfAdminStatus INTEGER, + t11FspfIfCreateTime T11FspfLastCreationTime, + t11FspfIfSetToDefault INTEGER, + + + + t11FspfIfLinkCostFactor Unsigned32, + t11FspfIfStorageType StorageType, + t11FspfIfRowStatus RowStatus +} + +t11FspfIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex that identifies the local + Fibre Channel interface for which this entry + contains FSPF information." + ::= { t11FspfIfEntry 1 } + +t11FspfIfHelloInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Interval between the periodic HELLO messages sent on this + interface in this Fabric to verify the link health. Note + that this value must be same at both ends of a link in + this Fabric." + DEFVAL {20} + ::= { t11FspfIfEntry 2 } + +t11FspfIfDeadInterval OBJECT-TYPE + SYNTAX Unsigned32 (2..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Maximum time for which no HELLO messages can be received + on this interface in this Fabric. After this time, the + interface is assumed to be broken and removed from the + database. Note that this value must be greater than the + HELLO interval specified on this interface in this Fabric." + DEFVAL {80} + ::= { t11FspfIfEntry 3 } + +t11FspfIfRetransmitInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "The time after which an unacknowledged LSR is + retransmitted on this interface in this Fabric." + DEFVAL {5} + ::= { t11FspfIfEntry 4 } + +t11FspfIfInLsuPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Link State Update (LSU) packets received on + this interface in this Fabric. The last discontinuity + of this counter is indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 5 } + +t11FspfIfInLsaPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Link State Acknowledgement (LSA) packets + received on this interface in this Fabric. The last + discontinuity of this counter is indicated by + t11FspfIfCreateTime." + ::= { t11FspfIfEntry 6 } + +t11FspfIfOutLsuPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Link State Update (LSU) packets transmitted + on this interface in this Fabric. The last + discontinuity of this counter is indicated by + t11FspfIfCreateTime." + ::= { t11FspfIfEntry 7 } + +t11FspfIfOutLsaPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of Link State Acknowledgement (LSA) packets + transmitted on this interface in this Fabric. The + last discontinuity of this counter is indicated by + t11FspfIfCreateTime." + ::= { t11FspfIfEntry 8 } + + + + +t11FspfIfOutHelloPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of HELLO packets transmitted on this interface in + this Fabric. The last discontinuity of this counter is + indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 9 } + +t11FspfIfInHelloPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of HELLO packets received on this interface in + this Fabric. The last discontinuity of this counter is + indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 10 } + +t11FspfIfRetransmittedLsuPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of LSU packets that contained one or more + retransmitted LSRs, and that were transmitted on this + interface in this Fabric. The last discontinuity of + this counter is indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 11 } + +t11FspfIfInErrorPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of invalid FSPF control packets received on this + interface in this Fabric. The last discontinuity of + this counter is indicated by t11FspfIfCreateTime." + ::= { t11FspfIfEntry 12 } + +t11FspfIfNbrState OBJECT-TYPE + SYNTAX T11FspfInterfaceState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of FSPF's 'neighbor state machine', which is + the operational state of the interaction with the + + + + neighbor's interface that is connected to this interface. + + If the 't11FspfIfAdminStatus' is 'down', then this object + should be 'down'. If the 't11FspfIfAdminStatus' is 'up', + then this object's value depends on the state of FSPF's + 'neighbor state machine' on this interface in this + Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.7" + ::= { t11FspfIfEntry 13 } + +t11FspfIfNbrDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Domain Id of the neighbor in this Fabric." + ::= { t11FspfIfEntry 14 } + +t11FspfIfNbrPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index, as known by the neighbor, of the neighbor's + interface that is connected to this interface in this + Fabric." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 6.1.9.4." + ::= { t11FspfIfEntry 15 } + +t11FspfIfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired state of FSPF on this interface in this + Fabric, whenever 't11FspfAdminStatus' is 'up'. + If the value of this object is set to 'up', then FSPF is + enabled on this interface in this Fabric. If set to + 'down', then FSPF is disabled on this interface in this + Fabric. Note that the operational state of FSPF on an + interface is given by t11FspfIfNbrState." + DEFVAL {up} + ::= { t11FspfIfEntry 16 } + + + +t11FspfIfCreateTime OBJECT-TYPE + SYNTAX T11FspfLastCreationTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this entry was last + created." + ::= { t11FspfIfEntry 17 } + +t11FspfIfSetToDefault OBJECT-TYPE + SYNTAX INTEGER { + default(1), + noOp(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Setting this value to 'default' changes the value of each + and every writable object in this row to its default + value. + + If all the configuration parameters have their default + values, and if the interface is down, then the row is + deleted automatically. + + No action is taken if this object is set to 'noOp'. + The value of the object, when read, is always 'noOp'." + ::= { t11FspfIfEntry 18 } + +t11FspfIfLinkCostFactor OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The administrative factor used in calculating the cost + of sending a frame on this interface in this Fabric. + + The formula used to calculate the link cost is: + + Link Cost = S * (1.0625e12 / ifSpeed) + where: + S = (the value of this object / 100) + ifSpeed = interface speed (as defined in the IF-MIB). + " + REFERENCE + "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 8.5.5; and + IF-MIB, RFC 2863." + + + + DEFVAL { 100 } + ::= { t11FspfIfEntry 19 } + +t11FspfIfStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11FspfIfEntry 20 } + +t11FspfIfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the conceptual row. + + This object can be used to create an entry only if there + is an entry in the t11FspfTable for the corresponding + Fabric, and if the interface is either isolated or is a + non-E_port. + + Setting this object to 'destroy' will typically fail; + to reverse the creation process, set the corresponding + instance of t11FspfIfSetToDefault to 'default'." + ::= { t11FspfIfEntry 21 } + +-- +-- t11FspfLsrTable + +t11FspfLsrTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FspfLsrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table is the database of all the latest + incarnations of the Link State Records (LSRs) that + are currently contained in the topology database, + for all interfaces on all Fabrics known to + locally managed switches. + + A Fabric's topology database contains the LSRs that + have been either issued or received by a local switch on + that Fabric, and that have not reached t11FspfMaxAge." + + + + ::= { t11FspfDatabase 1 } + +t11FspfLsrEntry OBJECT-TYPE + SYNTAX T11FspfLsrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This gives information for the most recent update of an + LSR. There is one entry for every LSR issued or received + by a locally managed switch (identified by + fcmInstanceIndex and fcmSwitchIndex) in a Fabric + (identified by t11FspfFabricIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FspfFabricIndex, + t11FspfLsrDomainId, t11FspfLsrType } + ::= { t11FspfLsrTable 1 } + +T11FspfLsrEntry ::= SEQUENCE { + t11FspfLsrDomainId FcDomainIdOrZero, + t11FspfLsrType T11FspfLsrType, + t11FspfLsrAdvDomainId FcDomainIdOrZero, + t11FspfLsrAge Unsigned32, + t11FspfLsrIncarnationNumber Unsigned32, + t11FspfLsrCheckSum Unsigned32, + t11FspfLsrLinks Unsigned32 +} + +t11FspfLsrDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Domain Id of the LSR owner in this Fabric. It is the + Link State Id of this LSR." + ::= { t11FspfLsrEntry 1 } + +t11FspfLsrType OBJECT-TYPE + SYNTAX T11FspfLsrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Type of this LSR." + ::= { t11FspfLsrEntry 2 } + +t11FspfLsrAdvDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Domain Id of the switch that is advertising the LSR on + the behalf of the switch owning it." + ::= { t11FspfLsrEntry 3 } + +t11FspfLsrAge OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time since this LSR was inserted into the database." + ::= { t11FspfLsrEntry 4 } + +t11FspfLsrIncarnationNumber OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The link state incarnation number of this LSR. This is + used to identify most recent instance of an LSR while + updating the topology database when an LSR is received. + The updating of an LSR includes incrementing its + incarnation number prior to transmission of the updated + LSR. So, the most recent LSR is the one with the + largest incarnation number." + ::= { t11FspfLsrEntry 5 } + +t11FspfLsrCheckSum OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The checksum of the LSR." + ::= { t11FspfLsrEntry 6 } + +t11FspfLsrLinks OBJECT-TYPE + SYNTAX Unsigned32 (0..65355) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of entries in the t11FspfLinkTable associated with + this LSR." + ::= { t11FspfLsrEntry 7 } +-- +-- t11FspfLinkTable + +t11FspfLinkNumber OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of rows in the t11FspfLinkTable." + ::= { t11FspfDatabase 3 } + +t11FspfLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FspfLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the list of Inter-Switch Links and + their information that is part of an LSR, either + received or transmitted." + ::= { t11FspfDatabase 4 } + +t11FspfLinkEntry OBJECT-TYPE + SYNTAX T11FspfLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry that contains information about a link + contained in an LSR in this Fabric. An entry is created + whenever a new link appears in an (issued or received) + LSR. An entry is deleted when a link no longer appears + in an (issued or received) LSR." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FspfFabricIndex, + t11FspfLsrDomainId, t11FspfLsrType, t11FspfLinkIndex} + ::= { t11FspfLinkTable 1 } + +T11FspfLinkEntry ::= SEQUENCE { + t11FspfLinkIndex Unsigned32, + t11FspfLinkNbrDomainId FcDomainIdOrZero, + t11FspfLinkPortIndex Unsigned32, + t11FspfLinkNbrPortIndex Unsigned32, + t11FspfLinkType T11FspfLinkType, + t11FspfLinkCost Integer32 +} + +t11FspfLinkIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary index of this link." + ::= { t11FspfLinkEntry 1 } + +t11FspfLinkNbrDomainId OBJECT-TYPE + + + + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Domain Id of the neighbor on the other end of this + link in this Fabric." + ::= { t11FspfLinkEntry 2 } + +t11FspfLinkPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The source E_port of this link, as indicated by the index + value in the LSR received from the switch identified by + 't11FspfLsrDomainId'." + ::= { t11FspfLinkEntry 3 } + +t11FspfLinkNbrPortIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..16777215) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The destination E_port of this link, as indicated by the + index value in the LSR received from the switch identified + by 't11FspfLinkNbrDomainId'." + ::= { t11FspfLinkEntry 4 } + +t11FspfLinkType OBJECT-TYPE + SYNTAX T11FspfLinkType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this link." + ::= { t11FspfLinkEntry 5 } + +t11FspfLinkCost OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cost of sending a frame on this link in this Fabric. + Link cost is calculated using the formula: + + link cost = S * (1.0625e12 / Signalling Rate) + + For issued LSRs, S is determined by the value of + t11FspfIfLinkCostFactor for the corresponding interface + + + + and Fabric." + ::= { t11FspfLinkEntry 6 } + +-- +-- Notification-related object + +t11FspfIfPrevNbrState OBJECT-TYPE + SYNTAX T11FspfInterfaceState + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The previous state of FSPF's Neighbor Finite State + Machine on an interface. + + This object is only used in the + 't11FspfNbrStateChangNotify' notification." + ::= { t11FspfConfiguration 3 } + +-- +-- Notifications + +t11FspfNbrStateChangNotify NOTIFICATION-TYPE + OBJECTS { ifIndex, + t11FamConfigDomainId, + t11FspfIfNbrDomainId, + t11FspfIfNbrState, + t11FspfIfPrevNbrState + } + STATUS current + DESCRIPTION + "This notification signifies that there has been a change in + the state of an FSPF neighbor. This is generated when the + FSPF state changes to a terminal state, through either + regression (i.e., goes from Full to Init or Down) or + progression (i.e., from any state to Full). The value of + 't11FspfIfNbrState' is the state of the neighbor after the + change." + ::= { t11FspfNotifications 1 } + +-- +-- Conformance + +t11FspfMIBCompliances + OBJECT IDENTIFIER ::= { t11FspfConformance 1 } + +t11FspfMIBGroups + OBJECT IDENTIFIER ::= { t11FspfConformance 2 } + + + + +t11FspfMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the FSPF." + MODULE -- this module + MANDATORY-GROUPS { t11FspfGeneralGroup, + t11FspfIfGroup, + t11FspfDatabaseGroup, + t11FspfNotificationGroup } + + GROUP t11FspfIfCounterGroup + DESCRIPTION + "These counters, for particular FSPF-packet + occurrences on an interface, are mandatory only + for those systems that count such events." + + OBJECT t11FspfIfRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, so only + one value needs to be supported." + + OBJECT t11FspfIfStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfNbrStateChangNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfMinLsArrival + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfMinLsInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT t11FspfSetToDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfHelloInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfDeadInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfRetransmitInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfAdminStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfSetToDefault + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FspfIfLinkCostFactor + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FspfMIBCompliances 1 } + +-- Units of Conformance + +t11FspfGeneralGroup OBJECT-GROUP + OBJECTS { t11FspfMinLsArrival, + t11FspfMinLsInterval, + t11FspfLsRefreshTime, + + + + t11FspfMaxAge, + t11FspfMaxAgeDiscards, + t11FspfPathComputations, + t11FspfChecksumErrors, + t11FspfLsrs, + t11FspfCreateTime, + t11FspfAdminStatus, + t11FspfOperStatus, + t11FspfNbrStateChangNotifyEnable, + t11FspfSetToDefault, + t11FspfStorageType } + STATUS current + DESCRIPTION + "A collection of objects for displaying and + configuring FSPF parameters." + ::= { t11FspfMIBGroups 1 } + +t11FspfIfGroup OBJECT-GROUP + OBJECTS { t11FspfIfHelloInterval, + t11FspfIfDeadInterval, + t11FspfIfRetransmitInterval, + t11FspfIfNbrState, + t11FspfIfNbrDomainId, + t11FspfIfNbrPortIndex, + t11FspfIfAdminStatus, + t11FspfIfCreateTime, + t11FspfIfSetToDefault, + t11FspfIfLinkCostFactor, + t11FspfIfRowStatus, + t11FspfIfStorageType, + t11FspfIfPrevNbrState } + STATUS current + DESCRIPTION + "A collection of objects for displaying the FSPF + interface information." + ::= { t11FspfMIBGroups 2 } + +t11FspfIfCounterGroup OBJECT-GROUP + OBJECTS { t11FspfIfInLsuPkts, + t11FspfIfInLsaPkts, + t11FspfIfOutLsuPkts, + t11FspfIfOutLsaPkts, + t11FspfIfOutHelloPkts, + t11FspfIfInHelloPkts, + t11FspfIfRetransmittedLsuPkts, + t11FspfIfInErrorPkts } + STATUS current + DESCRIPTION + + + + "A collection of objects for counting particular + FSPF-packet occurrences on an interface." + ::= { t11FspfMIBGroups 3 } + +t11FspfDatabaseGroup OBJECT-GROUP + OBJECTS { t11FspfLsrAdvDomainId, + t11FspfLsrAge, + t11FspfLsrIncarnationNumber, + t11FspfLsrCheckSum, + t11FspfLsrLinks, + t11FspfLinkNbrDomainId, + t11FspfLinkPortIndex, + t11FspfLinkNbrPortIndex, + t11FspfLinkType, + t11FspfLinkCost, + t11FspfLinkNumber } + STATUS current + DESCRIPTION + "A collection of objects for displaying the FSPF + topology database information." + ::= { t11FspfMIBGroups 4 } +t11FspfNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11FspfNbrStateChangNotify } + STATUS current + DESCRIPTION + "A collection of notifications for FSPF." + ::= { t11FspfMIBGroups 5 } +END diff --git a/mibs/ietf/T11-FC-NAME-SERVER-MIB b/mibs/ietf/T11-FC-NAME-SERVER-MIB new file mode 100644 index 0000000..e814df2 --- /dev/null +++ b/mibs/ietf/T11-FC-NAME-SERVER-MIB @@ -0,0 +1,1192 @@ +T11-FC-NAME-SERVER-MIB DEFINITIONS ::= BEGIN + +-- The MIB for management of the Fibre Channel functionality which +-- implements the Name Server function. + +IMPORTS + MODULE-IDENTITY,OBJECT-TYPE, + NOTIFICATION-TYPE, Unsigned32, + Counter32, Integer32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + TruthValue, TEXTUAL-CONVENTION, + TimeStamp FROM SNMPv2-TC -- [RFC2579] + fcmInstanceIndex, FcPortType, + FcAddressIdOrZero, FcClasses, + FcNameIdOrZero FROM FC-MGMT-MIB -- [FC-MGMT] + T11FabricIndex FROM T11-TC-MIB -- [FC-FAM-MIB] + t11FamLocalSwitchWwn + FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [FC-FAM-MIB] + +t11FcNameServerMIB MODULE-IDENTITY + LAST-UPDATED "200603020000Z" + ORGANIZATION "T11" + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + Phone: +1 408 853-9172 + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Phone: +1 408-526-5260 + EMail: kzm@cisco.com" + DESCRIPTION + "The MIB module for the management of the functionality, + which realizes the FC-GS-4 requirements for Name + Server (NS). + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4438; see the RFC itself for + full legal notices." + + + + REVISION "200603020000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4438." + ::= { mib-2 135 } + +t11NsNotifications OBJECT IDENTIFIER ::= { t11FcNameServerMIB 0 } +t11NsMIBObjects OBJECT IDENTIFIER ::= { t11FcNameServerMIB 1 } +t11NsMIBConformance OBJECT IDENTIFIER ::= { t11FcNameServerMIB 2 } +t11NsStatus OBJECT IDENTIFIER ::= { t11NsMIBObjects 1 } +t11NsStatistics OBJECT IDENTIFIER ::= { t11NsMIBObjects 2 } + +-- Textual Conventions + +T11NsGs4RejectReasonCode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The FC-GS-4 reject reason code for a request. + + none(1) + - no error. + invalidCmdCode(2) + - request contained an invalid command code. + invalidVerLevel(3) + - request contained an invalid version number. + logicalError(4) + - there was a logical error. + invalidIUSize(5) + - the CT_IU (Information Unit) size was invalid. + logicalBusy(6) + - the module is busy. + protocolError(7) + - there was a protocol error. + unableToPerformCmdReq(8) + - the command specified in the req could not be + executed. The details of exactly what failed + will be in the corresponding reason code + explanation. + cmdNotSupported(9) + - the command is not supported. + serverNotAvailable(10) + - the identified server was not available. + couldNotEstabSession(11) + - a server session could not be established. + vendorError(12) + - a vendor-specific error." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 4.4.3." + + + + SYNTAX INTEGER { + none(1), + invalidCmdCode(2), + invalidVerLevel(3), + logicalError(4), + invalidIUSize(5), + logicalBusy(6), + protocolError(7), + unableToPerformCmdReq(8), + cmdNotSupported(9), + serverNotAvailable(10), + couldNotEstabSession(11), + vendorError(12) + } + +T11NsRejReasonCodeExpl ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reject reason code explanation: + + noAdditionalExplanation(1) + - no additional explanation. + portIdentifierNotRegistered(2) + - Port Identifier not registered. + portNameNotRegistered(3) + - Port Name not registered. + nodeNameNotRegistered(4) + - Node Name not registered. + classOfServiceNotRegistered(5) + - Class of Service not registered. + nodeIpAddressNotRegistered(6) + - 'IP Address (Node)' value not registered. + ipaNotRegistered(7) + - Initial Process Associator (IPA) not registered. + fc4TypeNotRegistered(8) + - FC-4 TYPEs not registered. + symbolicPortNameNotRegistered(9) + - Symbolic Port Name not registered. + symbolicNodeNameNotRegistered(10) + - Symbolic Node Name not registered. + portTypeNotRegistered(11) + - 'Port Type' not registered. + portIpAddressNotRegistered(12) + - 'IP Address (Port)' value not registered. + fabricPortNameNotRegistered(13) + - Fabric Port Name not registered. + hardAddressNotRegistered(14) + - 'Hard Address' not registered. + + + + fc4DescriptorNotRegistered(15) + - FC-4 Descriptor not registered. + fc4FeaturesNotRegistered(16) + - FC-4 Features not registered. + accessDenied(17) + - Access denied. + unacceptablePortIdentifier(18) + - Unacceptable Port Identifier. + databaseEmpty(19) + - Database is empty. + noObjectRegInSpecifiedScope(20) + - no object has been registered in the specified + scope. + domainIdNotPresent(21) + - Domain ID not present. + portIdNotPresent(22) + - Port number not present. + noDeviceAttached(23) + - No device attached. + authorizationException(24) + - Authorization Exception. + authenticationException(25) + - Authentication Exception. + databaseFull(26) + - Database full." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), sections 4.4.4 and 5.2.4" + SYNTAX INTEGER { + noAdditionalExplanation(1), + portIdentifierNotRegistered(2), + portNameNotRegistered(3), + nodeNameNotRegistered(4), + classOfServiceNotRegistered(5), + nodeIpAddressNotRegistered(6), + ipaNotRegistered(7), + fc4TypeNotRegistered(8), + symbolicPortNameNotRegistered(9), + symbolicNodeNameNotRegistered(10), + portTypeNotRegistered(11), + portIpAddressNotRegistered(12), + fabricPortNameNotRegistered(13), + hardAddressNotRegistered(14), + fc4DescriptorNotRegistered(15), + fc4FeaturesNotRegistered(16), + accessDenied(17), + unacceptablePortIdentifier(18), + databaseEmpty(19), + + + + noObjectRegInSpecifiedScope(20), + domainIdNotPresent(21), + portIdNotPresent(22), + noDeviceAttached(23), + authorizationException(24), + authenticationException(25), + databaseFull(26) + } + +-- +-- Information about a Name Server Information Subset +-- + +t11NsInfoSubsetTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsInfoSubsetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry for each Name Server + Information Subset within each Fibre Channel + management instance." + ::= { t11NsStatus 1 } + +t11NsInfoSubsetEntry OBJECT-TYPE + SYNTAX T11NsInfoSubsetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This entry contains information about operations + on a particular Name Server Information Subset + within the Fibre Channel management instance + identified by fcmInstanceIndex." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex } + ::= { t11NsInfoSubsetTable 1 } + +T11NsInfoSubsetEntry ::= SEQUENCE { + t11NsInfoSubsetIndex Unsigned32, + t11NsInfoSubsetSwitchIndex Unsigned32, + t11NsInfoSubsetTableLastChange TimeStamp, + t11NsInfoSubsetNumRows Integer32, + t11NsInfoSubsetTotalRejects Counter32, + t11NsInfoSubsetRejReqNotfyEnable TruthValue +} + +t11NsInfoSubsetIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "An arbitrary integer value that uniquely identifies + this Name Server Information Subset amongst all others + within the same Fibre Channel management instance. + + It is mandatory to keep this value constant between + restarts of the agent and to make every possible + effort to keep it constant across such restarts." + ::= { t11NsInfoSubsetEntry 1 } + +t11NsInfoSubsetSwitchIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object is zero when operations + upon this Name Server Information Subset do not occur + at a local Fibre Channel switch; otherwise, it is + non-zero and identifies the local switch. + + The switch identified by a non-zero value of this + object is the same switch as is identified by the + same value of fcmSwitchIndex." + REFERENCE + "fcmSwitchIndex is defined in the FC-MGMT-MIB module" + ::= { t11NsInfoSubsetEntry 2 } + +t11NsInfoSubsetTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last update + to any entry in the t11NsRegTable with the same values + of fcmInstanceIndex and t11NsInfoSubsetIndex. This + includes creation of an entry, deletion of an entry, or + modification of an existing entry. If no such update + has taken place since the last re-initialization of the + local network management subsystem, then this object + contains a zero value." + ::= { t11NsInfoSubsetEntry 3 } + +t11NsInfoSubsetNumRows OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Nx_Ports currently registered in this + + + + Name Server Information Subset, i.e., the number of + rows in the t11NsRegTable with the same values of + fcmInstanceIndex and t11NsInfoSubsetIndex." + ::= { t11NsInfoSubsetEntry 4 } + +t11NsInfoSubsetTotalRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) Requests for Name Server + functions that were rejected for inclusion in this + Name Server Information Subset, across all Fabrics + for which it contains information. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsInfoSubsetEntry 5 } + +t11NsInfoSubsetRejReqNotfyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates whether 't11NsRejectRegNotify' + notifications are generated by rejections of requests + to register information in this Name Server Information + Subset. + + If value of this object is 'true', then the + notification is generated when a request is rejected. + If it is 'false', the notification is not generated. + + The persistence of values of this object across an + agent reboot is implementation-dependent." + DEFVAL { false } + ::= { t11NsInfoSubsetEntry 6 } + +-- +-- Registered Port Information +-- + +t11NsRegTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains entries for all Nx_Ports registered + + + + in the identified Name Server Information Subsets across + all Fabrics for which such subsets contain information." + ::= { t11NsStatus 2 } + +t11NsRegEntry OBJECT-TYPE + SYNTAX T11NsRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about an Nx_Port + represented by t11NsRegPortIdentifier that is registered + with a Name Server Information Subset (identified by + t11NsInfoSubsetIndex) within the Fibre Channel management + instance (identified by fcmInstanceIndex) on the Fabric + (identified by t11NsRegFabricIndex)." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex, + t11NsRegFabricIndex, t11NsRegPortIdentifier } + ::= { t11NsRegTable 1 } + +T11NsRegEntry ::= SEQUENCE { + t11NsRegFabricIndex T11FabricIndex, + t11NsRegPortIdentifier FcAddressIdOrZero, + t11NsRegPortName FcNameIdOrZero, + t11NsRegNodeName FcNameIdOrZero, + t11NsRegClassOfSvc FcClasses, + t11NsRegNodeIpAddress OCTET STRING, + t11NsRegProcAssoc OCTET STRING, + t11NsRegFc4Type OCTET STRING, + t11NsRegPortType FcPortType, + t11NsRegPortIpAddress OCTET STRING, + t11NsRegFabricPortName FcNameIdOrZero, + t11NsRegHardAddress FcAddressIdOrZero, + t11NsRegSymbolicPortName SnmpAdminString, + t11NsRegSymbolicNodeName SnmpAdminString, + t11NsRegFc4Features OCTET STRING + } + +t11NsRegFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to SW-3, only a single Fabric can + operate within a single physical infrastructure, and thus, + the value of this Fabric Index will always be 1. + + + + However, it is possible that future standards will define + how multiple Fabrics, each with its own management + instrumentation, could operate within one (or more) physical + infrastructures. To allow for this future possibility, this + index value is used to uniquely identify a particular + Fabric within a physical infrastructure." + ::= { t11NsRegEntry 1 } + +t11NsRegPortIdentifier OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Fibre Channel Address Identifier of this Nx_Port. + If no Port Identifier has been registered, then the + value of this object is the zero-length string." + ::= { t11NsRegEntry 2 } + +t11NsRegPortName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Port_Name (WWN) of this Nx_Port. + If this object has not been registered, then its value + is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 3 } + +t11NsRegNodeName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Node_Name (WWN) of this Nx_Port. + If this object has not been registered, then its value + is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 4 } + +t11NsRegClassOfSvc OBJECT-TYPE + SYNTAX FcClasses + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The class of service indicator. This object is an + array of bits that contain a bit map of the classes of + service supported by the associated port. If a bit in + + + + this object is 1, it indicates that the class of + service is supported by the associated port. When a + bit is set to 0, it indicates that no class of service + is supported by this Nx_Port. + + If this object has not been not registered for a port, + then the instance for that port is not instantiated." + ::= { t11NsRegEntry 5 } + +t11NsRegNodeIpAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The IP address of the node of this Nx_Port, in + network-byte order, either as a 32-bit IPv4 address or + a 128-bit IPv6 address. For the former, the leftmost 96 bits + (12 bytes) should contain x'00 00 00 00 00 00 00 00 00 00 FF + FF', and the IPv4 address should be present in the rightmost + 32 bits. + + Note that the value of this object is the IP address value + that is received in the FC-GS-4 message Register IP address + (Node) RIP_NN. It is not validated against any IP address + format. + + If no 'IP address (Node)' has been registered, then the + value of this object is the zero-length string." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4)" + DEFVAL { ''H } + ::= { t11NsRegEntry 6 } + +t11NsRegProcAssoc OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 8)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fibre Channel Initial Process Associator (IPA). + + If no 'Initial Process Associator' has been registered, + then the value of this object is the zero-length string." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4)" + DEFVAL { ''H } + ::= { t11NsRegEntry 7 } + + + +t11NsRegFc4Type OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC-4 protocol types supported by this Nx_Port. + This is an array of 256 bits. Each bit in the array + corresponds to a Type value as defined by Fibre Channel + standards and contained in the Type field of the frame + header. The order of the bits in the 256-bit (32-byte) + value is the same as defined in FC-GS-4, section 5.2.3.8, + and represented in network-byte order. + + If no 'FC-4 TYPEs' has been registered, then the + value of this object is the zero-length string." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 5.2.3.8." + DEFVAL { ''H } + ::= { t11NsRegEntry 8 } + +t11NsRegPortType OBJECT-TYPE + SYNTAX FcPortType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port type of this port. + + If no 'Port Type' has been registered, then the value + of this object is unidentified and is represented by + the value 'unknown'." + DEFVAL { 1 } -- 'unknown', see [FC-MGMT] + ::= { t11NsRegEntry 9 } + +t11NsRegPortIpAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value that Fibre Channel calls an 'IP Address (Port)' + that represents the IP address of the associated port. + The value is either in 32-bit IPv4 format or 128-bit IPv6 + format, in network-byte order. When this object contains an + IPv4 address, the leftmost 96 bits (12 bytes) should contain + x'00 00 00 00 00 00 00 00 00 00 FF FF'. The IPv4 address + should be present in the rightmost 32 bits. + + Note that the value of this object is the IP address value + + + + that is received in the FC-GS-4 message Register IP address + (Port) RIPP_ID. It is not validated against any IP address + format. + + If no 'IP address (Port)' has been registered, then the + value of this object is the zero-length string." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4, (FC-GS-4)" + DEFVAL {''H} + ::= { t11NsRegEntry 10 } + +t11NsRegFabricPortName OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Fabric Port Name (WWN) of the Fx_Port to which + this Nx_Port is attached. + + If no 'Fabric Port Name' has been registered, then the + value of this object is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 11 } + +t11NsRegHardAddress OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The format of this object is identical to the format + of Hard Address defined in the Discover Address (ADISC) + Extended Link Service (FC-FS). + + Hard Address is the 24-bit NL_Port identifier that + consists of: + - the 8-bit Domain_ID in the most significant byte + - the 8-bit Area_ID in the next most significant + byte + - the 8-bit AL-PA (Arbitrated Loop Physical Address) + which an NL_Port attempts acquire during FC-AL + initialization in the least significant byte. + + If the port is not an NL_Port, or if it is an NL_Port + but does not have a hard address, then all bits are + reported as zeros. + + If no 'Hard Address' has been registered, then the + + + + value of this object is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 12 } + +t11NsRegSymbolicPortName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined name of this port. + + If no 'Symbolic Port Name' has been registered, then + the value of this object is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 13 } + +t11NsRegSymbolicNodeName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The user-defined name of the node of this port. + + If no 'Symbolic Node Name' has been registered, then + the value of this object is the zero-length string." + DEFVAL {''H} + ::= { t11NsRegEntry 14 } + + +t11NsRegFc4Features OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC-4 Features associated with FC-4 Types on this + port encoded as a 128-byte value in network-byte order, + or the zero-length string if no 'FC-4 Features' have been + registered. + + Section 5.2.3.15 of FC-GS-4 is the authoritative + definition of the format of the 128-byte value, + i.e., if different, FC-GS-4 takes precedence over the + following description: + + The 128-byte value is an array of 4-bit values, one for + each FC-4 Type value, positioned as follows: the 5 most + significant bits of a Type value identify where it appears + within the 128-byte value, specifically, within which word: + + + + - Word 0 (of the 128-byte value) contains information + related to Types '00' through '07'; + - Word 1 contains information related to Types + '08' through 0F'; + - and so forth, up to Word 31, which contains + information related to Types 'F8' through 'FF'. + + The least significant of the eight 4-bit values in each + Word represents an FC-4 Type with 000 as its 3 least + significant bits, and most significant 4-bit value in + each Word represents an FC-4 Type with 111 as its 3 least + significant bits." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 5.2.3.15." + DEFVAL {''H} + ::= { t11NsRegEntry 15 } + + +-- +-- Registered FC-4 Descriptors +-- + +t11NsRegFc4DescriptorTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsRegFc4DescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains entries for all FC-4 Descriptors + registered in the identified Name Server Information + Subsets across all Fabrics for which such subsets + contain information." + ::= { t11NsStatus 3 } + +t11NsRegFc4DescriptorEntry OBJECT-TYPE + SYNTAX T11NsRegFc4DescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the t11NsRegFc4DescriptorTable, + containing information about an FC-4 Descriptor + that is associated with a particular FC-4 Type + value. The particular FC-4 Descriptor was + registered by an Nx_Port (identified by + t11NsRegPortIdentifier) in a Name Server Information + Subset (identified by t11NsInfoSubsetIndex) within + the Fibre Channel management instance (identified by + fcmInstanceIndex) on the Fabric (identified by + + + + t11NsRegFabricIndex). + + If no FC-4 Descriptors have been registered + for a particular port, then there will be no + entries in this table for that port." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex, + t11NsRegFabricIndex, t11NsRegPortIdentifier, + t11NsRegFc4TypeValue } + ::= { t11NsRegFc4DescriptorTable 1 } + +T11NsRegFc4DescriptorEntry ::= SEQUENCE { + t11NsRegFc4TypeValue Unsigned32, + t11NsRegFc4Descriptor OCTET STRING +} + +t11NsRegFc4TypeValue OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer value that identifies an FC-4 Type value + (representing a particular protocol type, as specified + in FC-FS) for which an FC-4 Descriptor has been + registered. + + An instance of this object contains a 'Type value' + that corresponds to a '1' bit in the value of the + t11NsRegFc4Type registered for the same port; + this correspondence is as specified in FC-GS-4." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 5.2.3.8, and + ANSI INCITS 373-2003, Fibre Channel - Framing and + Signaling (FC-FS), section 9.6, Table 29." + ::= { t11NsRegFc4DescriptorEntry 1 } + +t11NsRegFc4Descriptor OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The FC-4 Descriptor value that has been registered + for the particular port on the particular Fabric, and + for the FC-4 Type represented by the corresponding + value of t11NsRegFc4TypeIndex. + + The format of an FC-4 Descriptor is dependent on the + corresponding FC-4 Type value, but is represented in + + + + network-byte order." + REFERENCE + "ANSI INCITS 387-2004, Fibre Channel - Generic + Services-4 (FC-GS-4), section 5.2.5.42" + ::= { t11NsRegFc4DescriptorEntry 2 } + + +-- +-- Name Server per-Fabric Statistics +-- + +t11NsStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains per-Fabric state and statistics + for operations upon the identified Name Server + Information Subsets." + ::= { t11NsStatistics 1 } + +t11NsStatsEntry OBJECT-TYPE + SYNTAX T11NsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains state and statistics + for operations upon a Name Server Information Subset + (identified by t11NsInfoSubsetIndex) within the Fibre + Channel management instance (identified by + fcmInstanceIndex) on the Fabric (identified by + t11NsRegFabricIndex)." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex, + t11NsRegFabricIndex } + ::= { t11NsStatsTable 1 } + +T11NsStatsEntry ::= SEQUENCE { + t11NsInGetReqs Counter32, + t11NsOutGetReqs Counter32, + t11NsInRegReqs Counter32, + t11NsInDeRegReqs Counter32, + t11NsInRscns Counter32, + t11NsOutRscns Counter32, + t11NsRejects Counter32, + t11NsDatabaseFull TruthValue + } + +t11NsInGetReqs OBJECT-TYPE + + + + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) Get Requests + received requesting information from this Name + Server Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 1 } + +t11NsOutGetReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) Get Requests sent in + order to obtain information needed in this Name Server + Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 2 } + +t11NsInRegReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) Registration Requests + received to register information in the Name Server + Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 3 } + +t11NsInDeRegReqs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of (CT_IU) De-registration Requests + received to de-register information from this Name Server + Information Subset on this Fabric. + + This counter has no discontinuities other than those + + + + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 4 } + +t11NsInRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of received RSCNs, indicating + Name Server-related changes relating to this Name + Server Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 5 } + +t11NsOutRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of transmitted RSCNs, indicating + Name Server-related changes relating to this Name + Server Information Subset on this Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 6 } + +t11NsRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of CT_IU Requests for Name + Server functions on this Name Server Information + Subset on this Fabric that were rejected. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11NsStatsEntry 7 } + +t11NsDatabaseFull OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An indication of whether the database containing this + + + + Name Server Information Subset is full. This object is + set to 'true' only if the Name Server is unable to allocate + space for a new entry for the corresponding Fabric, and it is + set to 'false' whenever an existing entry is deleted for the + corresponding Fabric." + ::= { t11NsStatsEntry 8 } + +-- +-- Reject information objects +-- + +t11NsRejectTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11NsRejectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the most recent + Name Server Registration Request failures for various + ports on various Fabrics. + + If no information is available about the most recent + rejection of a Registration Request on a particular port + on a particular Fabric, then there will no entry in this + table for that port and Fabric. + + When a t11NsRejectRegNotify notification is sent for + such a Registration Request failure, the values of the + objects in the relevant entry of this table are updated + immediately prior to generating the notification." + ::= { t11NsStatus 4 } + +t11NsRejectEntry OBJECT-TYPE + SYNTAX T11NsRejectEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about the most recent + rejection of a request to register information in the Name + Server Information Subset (identified by + t11NsInfoSubsetIndex) within the Fibre Channel management + instance (identified by fcmInstanceIndex) for a particular + port (identified by t11NsRegPortIdentifier) on a particular + Fabric (identified by t11NsRegFabricIndex)." + INDEX { fcmInstanceIndex, t11NsInfoSubsetIndex, + t11NsRegFabricIndex, t11NsRegPortIdentifier } + ::= { t11NsRejectTable 1 } + +T11NsRejectEntry ::= SEQUENCE { + + + + t11NsRejectCtCommandString OCTET STRING, + t11NsRejectReasonCode T11NsGs4RejectReasonCode, + t11NsRejReasonCodeExp T11NsRejReasonCodeExpl, + t11NsRejReasonVendorCode OCTET STRING +} + +t11NsRejectCtCommandString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The binary content of the Registration Request, + formatted as an octet string (in network byte + order) containing the CT_IU, as described in + Table 2 of [FC-GS-4] (including the preamble), + which was most recently rejected for the particular + Name Server Information Subset on the particular port + on the particular Fabric. + + This object contains the zero-length string + if and when the CT-IU's content is unavailable. + + When the length of this object is 255 octets, it + contains the first 255 octets of the CT-IU (in + network-byte order)." + ::= { t11NsRejectEntry 1 } + +t11NsRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A registration reject reason code. This object + contains the reason code of the most recent Name + Server Registration Request failure for the + particular port on the particular Fabric." + ::= { t11NsRejectEntry 2 } + +t11NsRejReasonCodeExp OBJECT-TYPE + SYNTAX T11NsRejReasonCodeExpl + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A registration reject reason code explanation. This + object contains the reason code explanation of the most + recent Name Server Registration Request failure for the + particular port on the particular Fabric." + ::= { t11NsRejectEntry 3 } + + + +t11NsRejReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A registration reject vendor-specific code. This + object contains the vendor-specific code of the most + recent Name Server Registration Request failure for the + particular port on the particular Fabric." + ::= { t11NsRejectEntry 4 } + + +-- +-- Notifications +-- + +t11NsRejectRegNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, + t11NsRegPortName, t11NsRejectCtCommandString, + t11NsRejectReasonCode, t11NsRejReasonCodeExp, + t11NsRejReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated whenever a request to + register information in a Name Server Information + Subset (for which the corresponding instance of + t11NsInfoSubsetRejReqNotfyEnable is 'true') is + rejected on a particular Fabric for a particular Nx_Port. + + The value of t11FamLocalSwitchWwn indicates the + WWN of the switch that received the request. + (If the WWN is unavailable, the value is set to + the zero-length string.) + + The value of t11NsRejectCtCommandString indicates + the rejected request, and the values of + t11NsRejectReasonCode, t11NsRejReasonCodeExp, and + t11NsRejReasonVendorCode indicate the reason for + the rejection. + + The value of t11NsRegPortName represents the Port Name + if it is able to be extracted out of the Registration + Request, or otherwise the value as currently registered + on the port." + ::= { t11NsNotifications 1 } + +-- +-- Conformance + + + +-- + +t11NsMIBCompliances OBJECT IDENTIFIER ::= {t11NsMIBConformance 1} +t11NsMIBGroups OBJECT IDENTIFIER ::= {t11NsMIBConformance 2} + +t11NsMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the Fibre Channel Name Server." + MODULE MANDATORY-GROUPS {t11NsDBGroup, + t11NsNotifyControlGroup, + t11NsNotifyGroup} + + OBJECT t11NsInfoSubsetRejReqNotfyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + GROUP t11NsRequestStatsGroup + DESCRIPTION + "This group is mandatory only for an implementation + that captures statistics related to Name Server + requests." + + GROUP t11NsRscnStatsGroup + DESCRIPTION + "This group is mandatory only for an implementation + that captures statistics related to Name + Server-related RSCNs." + + GROUP t11NsRejectStatsGroup + DESCRIPTION + "This group is mandatory only for an implementation + that captures statistics related to Name Server + rejects." + + ::= { t11NsMIBCompliances 1 } + +-- Units of conformance + +t11NsDBGroup OBJECT-GROUP + OBJECTS { t11NsInfoSubsetSwitchIndex, + t11NsInfoSubsetTableLastChange, + t11NsInfoSubsetNumRows, + t11NsRegPortName, + t11NsRegNodeName, + t11NsRegClassOfSvc, + + + + t11NsRegNodeIpAddress, + t11NsRegProcAssoc, + t11NsRegFc4Type, + t11NsRegPortType, + t11NsRegPortIpAddress, + t11NsRegFabricPortName, + t11NsRegHardAddress, + t11NsRegSymbolicPortName, + t11NsRegSymbolicNodeName, + t11NsRegFc4Features, + t11NsRegFc4Descriptor } + STATUS current + DESCRIPTION + "A collection of objects for monitoring the information + registered in a Name Server Information Subset." + ::= { t11NsMIBGroups 1 } + +t11NsRequestStatsGroup OBJECT-GROUP + OBJECTS { t11NsInGetReqs, + t11NsOutGetReqs, + t11NsInRegReqs, + t11NsInDeRegReqs, + t11NsDatabaseFull} + STATUS current + DESCRIPTION + "A collection of objects for displaying Name + Server statistics and state for Name Server requests." + ::= { t11NsMIBGroups 2 } + +t11NsRscnStatsGroup OBJECT-GROUP + OBJECTS { t11NsInRscns, + t11NsOutRscns } + STATUS current + DESCRIPTION + "A collection of objects for displaying Name + Server statistics for Name Server-related RSCNs." + ::= { t11NsMIBGroups 3 } + +t11NsRejectStatsGroup OBJECT-GROUP + OBJECTS { t11NsInfoSubsetTotalRejects, + t11NsRejects } + STATUS current + DESCRIPTION + "A collection of objects for displaying Name + Server statistics for rejects." + ::= { t11NsMIBGroups 4 } + +t11NsNotifyControlGroup OBJECT-GROUP + + + + OBJECTS { t11NsRejectCtCommandString, + t11NsRejectReasonCode, + t11NsRejReasonCodeExp, + t11NsRejReasonVendorCode, + t11NsInfoSubsetRejReqNotfyEnable } + STATUS current + DESCRIPTION + "A collection of notification control and + notification information objects for monitoring + rejections of Name Server registrations." + ::= { t11NsMIBGroups 5 } + +t11NsNotifyGroup NOTIFICATION-GROUP + NOTIFICATIONS {t11NsRejectRegNotify } + STATUS current + DESCRIPTION + "A collection of notifications for monitoring + rejections of Name Server registrations." + ::= { t11NsMIBGroups 6 } + +END diff --git a/mibs/ietf/T11-FC-ROUTE-MIB b/mibs/ietf/T11-FC-ROUTE-MIB new file mode 100644 index 0000000..bf2ec05 --- /dev/null +++ b/mibs/ietf/T11-FC-ROUTE-MIB @@ -0,0 +1,475 @@ +T11-FC-ROUTE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + RowStatus, TimeStamp, + StorageType FROM SNMPv2-TC -- [RFC2579] + InterfaceIndex, InterfaceIndexOrZero FROM IF-MIB -- [RFC2863] + fcmInstanceIndex, fcmSwitchIndex, + FcAddressIdOrZero, FcDomainIdOrZero FROM FC-MGMT-MIB -- [FC-MGMT] + T11FabricIndex FROM T11-TC-MIB; -- [RFC4439] + +t11FcRouteMIB MODULE-IDENTITY + LAST-UPDATED "200608140000Z" + ORGANIZATION "T11" + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for configuring and displaying Fibre + Channel Route Information. + + Copyright (C) The Internet Society (2006). This version + of this MIB module is part of RFC 4625; see the RFC + itself for full legal notices." + REVISION "200608140000Z" + + + + DESCRIPTION + "Initial version of this MIB module, published as RFC4625." + + ::= {mib-2 144 } + +t11FcRouteNotifications OBJECT IDENTIFIER ::= { t11FcRouteMIB 0 } +t11FcRouteObjects OBJECT IDENTIFIER ::= { t11FcRouteMIB 1 } +t11FcRouteConformance OBJECT IDENTIFIER ::= { t11FcRouteMIB 2 } + +-- +-- Per-Fabric routing information +-- +t11FcRouteFabricTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRouteFabricEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing Fibre Channel Routing information + that is specific to a Fabric." + ::= { t11FcRouteObjects 1 } + +t11FcRouteFabricEntry OBJECT-TYPE + SYNTAX T11FcRouteFabricEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains routing information specific to a + particular Fabric on a particular switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcRouteFabricIndex } + ::= { t11FcRouteFabricTable 1 } + +T11FcRouteFabricEntry ::= + SEQUENCE { + t11FcRouteFabricIndex T11FabricIndex, + t11FcRouteFabricLastChange TimeStamp + } + +t11FcRouteFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric. + + In a Fabric conformant to FC-SW-3, only a single Fabric + + + + can operate within a physical infrastructure, and thus + the value of this Fabric Index will always be 1. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures. + In such a case, index value is used to uniquely identify a + particular Fabric within a physical infrastructure." + ::= { t11FcRouteFabricEntry 1 } + +t11FcRouteFabricLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the most recent time when any + corresponding row in the t11FcRouteTable was created, + modified, or deleted. A corresponding row in the + t11FcRouteTable is for the same management instance, + the same switch, and same Fabric as the row in this table. + + If no change has occurred since the last restart of the + management system, then the value of this object is 0." + ::= { t11FcRouteFabricEntry 2 } + +-- +-- Fibre Channel Routing table +-- +t11FcRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Fibre Channel Routing tables for the + locally managed switches. This table lists all the + routes that are configured in and/or computed by any + local switch for any Fabric. + + Such routes are used by a switch to forward frames (of user + data) on a Fabric. The conceptual process is based on + extracting the Destination Fibre Channel Address Identifier + (D_ID) out of a received frame (of user data) and comparing + it to each entry of this table that is applicable to the + given switch and Fabric. Such comparison consists of first + performing a logical-AND of the extracted D_ID with a mask + (the value of t11FcRouteDestMask) and second comparing the + result of that 'AND' operation to the value of + t11FcRouteDestAddrId. A similar comparison is made of the + Source Fibre Channel Address Identifier (S_ID) of a frame + + + + against the t11FcRouteSrcAddrId and t11FcRouteSrcMask values + of an entry. If an entry's value of t11FcRouteInInterface + is non-zero, then a further comparison determines if the + frame was received on the appropriate interface. If all of + these comparisons for a particular entry are successful, + then that entry represents a potential route for forwarding + the received frame. + + For entries configured by a user, t11FcRouteProto has + the value 'netmgmt'; only entries of this type can be + deleted by the user." + ::= { t11FcRouteObjects 2 } + +t11FcRouteEntry OBJECT-TYPE + SYNTAX T11FcRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains a route to a particular destination, + possibly from a particular subset of source addresses, + on a particular Fabric via a particular output interface + and learned in a particular manner." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11FcRouteFabricIndex, + t11FcRouteDestAddrId, t11FcRouteDestMask, + t11FcRouteSrcAddrId, t11FcRouteSrcMask, + t11FcRouteInInterface, t11FcRouteProto, + t11FcRouteOutInterface } + ::= { t11FcRouteTable 1 } +T11FcRouteEntry ::= + SEQUENCE { + t11FcRouteDestAddrId FcAddressIdOrZero, + t11FcRouteDestMask FcAddressIdOrZero, + t11FcRouteSrcAddrId FcAddressIdOrZero, + t11FcRouteSrcMask FcAddressIdOrZero, + t11FcRouteInInterface InterfaceIndexOrZero, + t11FcRouteProto INTEGER, + t11FcRouteOutInterface InterfaceIndex, + t11FcRouteDomainId FcDomainIdOrZero, + t11FcRouteMetric Unsigned32, + t11FcRouteType INTEGER, + t11FcRouteIfDown INTEGER, + t11FcRouteStorageType StorageType, + t11FcRouteRowStatus RowStatus + } + +t11FcRouteDestAddrId OBJECT-TYPE + SYNTAX FcAddressIdOrZero (SIZE (3)) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination Fibre Channel Address Identifier of + this route. A zero-length string for this field is + not allowed." + ::= { t11FcRouteEntry 1 } + +t11FcRouteDestMask OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mask to be logical-ANDed with a destination + Fibre Channel Address Identifier before it is compared + to the value in the t11FcRouteDestAddrId field. + Allowed values are 255.255.255, 255.255.0, or 255.0.0. + FSPF's definition generates routes to a Domain_ID, + so the mask for all FSPF-generated routes is 255.0.0. + The zero-length value has the same meaning as 0.0.0." + ::= { t11FcRouteEntry 2 } + +t11FcRouteSrcAddrId OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The source Fibre Channel Address Identifier of this + route. Note that if this object and the corresponding + instance of t11FcRouteSrcMask both have a value of 0.0.0, + then this route matches all source addresses. The + zero-length value has the same meaning as 0.0.0." + ::= { t11FcRouteEntry 3 } + +t11FcRouteSrcMask OBJECT-TYPE + SYNTAX FcAddressIdOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mask to be logical-ANDed with a source + Fibre Channel Address Identifier before it is compared + to the value in the t11FcRouteSrcAddrId field. Allowed + values are 255.255.255, 255.255.0, 255.0.0, or 0.0.0. + The zero-length value has the same meaning as 0.0.0." + ::= { t11FcRouteEntry 4 } + +t11FcRouteInInterface OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "If the value of this object is non-zero, it is the + value of ifIndex that identifies the local + Fibre Channel interface through which a frame + must have been received in order to match with + this entry. If the value of this object is zero, + the matching does not require that the frame be + received on any specific interface." + ::= { t11FcRouteEntry 5 } + +t11FcRouteProto OBJECT-TYPE + SYNTAX INTEGER { + other(1), + local(2), + netmgmt(3), + fspf(4) + } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The mechanism via which this route was learned: + other(1) - not specified + local(2) - local interface + netmgmt(3)- static route + fspf(4) - Fibre Shortest Path First + " + ::= { t11FcRouteEntry 6 } + +t11FcRouteOutInterface OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex that identifies the local + Fibre Channel interface through which the next hop + of this route is to be reached." + ::= { t11FcRouteEntry 7 } + +t11FcRouteDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The domain_ID of next hop switch. + + This object can have a value of zero if the value + + + + of t11FcRouteProto is 'local'." + ::= { t11FcRouteEntry 8 } + +t11FcRouteMetric OBJECT-TYPE + SYNTAX Unsigned32 (0..65536) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The routing metric for this route. + + The use of this object is dependent on t11FcRouteProto." + ::= { t11FcRouteEntry 9 } + +t11FcRouteType OBJECT-TYPE + SYNTAX INTEGER { + local(1), + remote(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of route. + + local(1) - a route for which the next Fibre Channel + port is the final destination; + remote(2) - a route for which the next Fibre Channel + port is not the final destination." + DEFVAL {local} + ::= { t11FcRouteEntry 10 } + +t11FcRouteIfDown OBJECT-TYPE + SYNTAX INTEGER { + remove(1), + retain(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates what happens to + this route when the output interface (given by the + corresponding value of t11FcRouteOutInterface) is + operationally 'down'. If this object's value is 'retain', + the route is to be retained in this table. If this + object's value is 'remove', the route is to be removed + from this table." + DEFVAL { retain } + ::= { t11FcRouteEntry 11 } + + + + +t11FcRouteStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11FcRouteEntry 12 } + +t11FcRouteRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + The only rows that can be deleted by setting this object to + 'destroy' are those for which t11FcRouteProto has the value + 'netmgmt'." + ::= { t11FcRouteEntry 13 } + +-- +-- Conformance +-- +t11FcRouteCompliances OBJECT IDENTIFIER + ::= { t11FcRouteConformance 1 } +t11FcRouteGroups OBJECT IDENTIFIER + ::= { t11FcRouteConformance 2 } + + +t11FcRouteCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the T11-FC-ROUTE-MIB. +-- +-- Note: The next four OBJECT clauses are for auxiliary objects, and the +-- SMIv2 does not permit inclusion of objects that are not accessible +-- in an OBJECT clause (see Sections 3.1 & 5.4.3 in STD 58, RFC 2580). +-- Thus, these four clauses cannot be included below in the normal +-- location for OBJECT clauses. +-- +-- OBJECT t11FcRouteSrcAddrId +-- SYNTAX FcAddressIdOrZero (SIZE (0)) +-- DESCRIPTION +-- 'Support is not required for routes that +-- match only a subset of possible source + + + +-- addresses.' +-- +-- OBJECT t11FcRouteSrcMask +-- SYNTAX FcAddressIdOrZero (SIZE (0)) +-- DESCRIPTION +-- 'Support is not required for routes that +-- match only a subset of possible source +-- addresses.' +-- +-- OBJECT t11FcRouteDestMask +-- DESCRIPTION +-- 'Support is mandatory only for FSPF-generated +-- routes. Since FSPF's definition generates +-- routes to a Domain_ID, the mask for all +-- FSPF-generated routes is 255.0.0. Thus, +-- support is only required for 255.0.0.' +-- +-- OBJECT t11FcRouteInInterface +-- SYNTAX InterfaceIndexOrZero (0) +-- DESCRIPTION +-- 'Support for routes specific to particular +-- source interfaces is not required.' + " + + MODULE -- this module + MANDATORY-GROUPS { t11FcRouteGroup } + + OBJECT t11FcRouteIfDown + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteDomainId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteMetric + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteStorageType + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRouteRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FcRouteCompliances 1 } +t11FcRouteGroup OBJECT-GROUP + OBJECTS { t11FcRouteFabricLastChange, + t11FcRouteDomainId, + t11FcRouteMetric, + t11FcRouteType, + t11FcRouteIfDown, + t11FcRouteStorageType, + t11FcRouteRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects for displaying and configuring + routes." + ::= { t11FcRouteGroups 1 } + +END diff --git a/mibs/ietf/T11-FC-RSCN-MIB b/mibs/ietf/T11-FC-RSCN-MIB new file mode 100644 index 0000000..0af280f --- /dev/null +++ b/mibs/ietf/T11-FC-RSCN-MIB @@ -0,0 +1,799 @@ +T11-FC-RSCN-MIB DEFINITIONS ::= BEGIN + +-- The Fibre Channel RSCN MIB +-- +-- for the monitoring of registrations by Nx_Ports to receive +-- Registered State Change Notifications (RSCNs), and the +-- monitoring of RSCN usage. +-- + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, + Counter32, mib-2 FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] + TruthValue FROM SNMPv2-TC -- [RFC2579] + fcmInstanceIndex, fcmSwitchIndex, + FcNameIdOrZero, FcAddressIdOrZero FROM FC-MGMT-MIB -- [RFC4044] + T11NsGs4RejectReasonCode FROM T11-FC-NAME-SERVER-MIB -- [RFC4438] + T11FabricIndex FROM T11-TC-MIB; -- [RFC4439] + +t11FcRscnMIB MODULE-IDENTITY + LAST-UPDATED "200701080000Z" + ORGANIZATION "For the initial versions, T11. + For later versions, the IETF's IMSS Working Group." + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: kzm@cisco.com" + + DESCRIPTION + "The MIB module for the management of registrations + + + + by Nx_Ports to receive RSCNs (Registered State Change + Notifications) on a Fibre Channel Fabric, as defined + in FC-LS, and for the monitoring of RSCNs sent/received + or rejected in a Fibre Channel Fabric. + + Copyright (C) The Internet Society (2007). This version of + this MIB module is part of RFC 4983; see the RFC itself for + full legal notices." + REVISION "200701080000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4983." + ::= { mib-2 161 } + +t11FcRscnNotifications OBJECT IDENTIFIER ::= { t11FcRscnMIB 0 } +t11FcRscnObjects OBJECT IDENTIFIER ::= { t11FcRscnMIB 1 } +t11FcRscnConformance OBJECT IDENTIFIER ::= { t11FcRscnMIB 2 } +t11FcRscnRegistrations OBJECT IDENTIFIER ::= { t11FcRscnObjects 1 } +t11FcRscnStats OBJECT IDENTIFIER ::= { t11FcRscnObjects 2 } +t11FcRscnInformation OBJECT IDENTIFIER ::= { t11FcRscnObjects 3 } + + +-- State Change Registration Table + +t11FcRscnRegTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRscnRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Nx_Ports that have registered to receive + RSCNs on all Fabrics configured on one or more Fibre + Channel switches." + ::= { t11FcRscnRegistrations 1 } + +t11FcRscnRegEntry OBJECT-TYPE + SYNTAX T11FcRscnRegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about one Nx_Port that + has registered with a particular switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex) for a + particular Fabric (identified by a t11FcRscnFabricIndex + value)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcRscnFabricIndex, + t11FcRscnRegFcId } + ::= { t11FcRscnRegTable 1 } + +T11FcRscnRegEntry ::= SEQUENCE { + + + + t11FcRscnFabricIndex T11FabricIndex, + t11FcRscnRegFcId FcAddressIdOrZero, + t11FcRscnRegType BITS +} + +t11FcRscnFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies a particular + Fabric. + + In a Fabric conformant to FC-SW-4, multiple Virtual Fabrics + can operate within one (or more) physical infrastructures. + In such a case, this index value is used to uniquely + identify a particular Fabric within a physical + infrastructure. + + In a Fabric that has (or can have) only a single Fabric + operating within the physical infrastructure, the + value of this Fabric Index will always be 1." + REFERENCE + "ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006." + ::= { t11FcRscnRegEntry 1 } + +t11FcRscnRegFcId OBJECT-TYPE + SYNTAX FcAddressIdOrZero (SIZE (3)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Fibre Channel Address Identifier of the + registering Nx_Port." + ::= { t11FcRscnRegEntry 2 } + +t11FcRscnRegType OBJECT-TYPE + SYNTAX BITS { + fromFabricController(0), + fromNxPort(1) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of registration + desired by the registering Nx_Port, one bit per type: + + 'fromFabricController' -- RSCNs generated for events + + + + detected by the Fabric Controller. + + 'fromNxPorts' -- RSCNs generated for events + detected by the affected Nx_Port." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 40." + ::= { t11FcRscnRegEntry 3 } + + +-- Statistics + +t11FcRscnStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRscnStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The RSCN-related statistics on all Fabrics configured + on one or more Fibre Channel switches. + + Two levels of statistics are included: + + 1) counters at the message-type level, for: + - the number of SCRs received/rejected, + - the number of RSCNs sent/received/rejected, + - the number of SW_RSCNs sent/received/rejected. + + 2) counters of sent/received RSCNs per 'Event + Qualifier' value. Note that if and when several + RSCN events are coalesced into a single RSCN + message, then that message may be counted in + more than one of these counters." + ::= { t11FcRscnStats 1 } + +t11FcRscnStatsEntry OBJECT-TYPE + SYNTAX T11FcRscnStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing statistics for a particular Fabric + (identified by a t11FcRscnFabricIndex value) on a particular + switch (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcRscnFabricIndex } + ::= { t11FcRscnStatsTable 1 } + +T11FcRscnStatsEntry ::= SEQUENCE { + t11FcRscnInScrs Counter32, + + + + t11FcRscnInRscns Counter32, + t11FcRscnOutRscns Counter32, + t11FcRscnInSwRscns Counter32, + t11FcRscnOutSwRscns Counter32, + t11FcRscnScrRejects Counter32, + t11FcRscnRscnRejects Counter32, + t11FcRscnSwRscnRejects Counter32, + t11FcRscnInUnspecifiedRscns Counter32, + t11FcRscnOutUnspecifiedRscns Counter32, + t11FcRscnInChangedAttribRscns Counter32, + t11FcRscnOutChangedAttribRscns Counter32, + t11FcRscnInChangedServiceRscns Counter32, + t11FcRscnOutChangedServiceRscns Counter32, + t11FcRscnInChangedSwitchRscns Counter32, + t11FcRscnOutChangedSwitchRscns Counter32, + t11FcRscnInRemovedRscns Counter32, + t11FcRscnOutRemovedRscns Counter32 +} + +t11FcRscnInScrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCRs received from Nx_Ports + by this switch on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 1 } + + +t11FcRscnInRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RSCNs received from Nx_Ports + by this switch on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 2 } + +t11FcRscnOutRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of RSCNs transmitted to Nx_Ports + by this switch on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 3 } + + +t11FcRscnInSwRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_RSCNs received by this switch from + other switches on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 4 } + +t11FcRscnOutSwRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_RSCNs transmitted by this switch + from other switches on this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 5 } + +t11FcRscnScrRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SCRs rejected by this switch on + this Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 6 } + +t11FcRscnRscnRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "The number of RSCNs rejected by this switch on this + Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 7 } + +t11FcRscnSwRscnRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_RSCN rejected by this switch on this + Fabric. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + ::= { t11FcRscnStatsEntry 8 } + +t11FcRscnInUnspecifiedRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0000'b + meaning 'Event is not specified'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 9 } + +t11FcRscnOutUnspecifiedRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0000'b + meaning 'Event is not specified'. + + + + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 10 } + +t11FcRscnInChangedAttribRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0002'b + meaning 'Changed Port Attribute'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 11 } + +t11FcRscnOutChangedAttribRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0002'b + meaning 'Changed Port Attribute'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 12 } + +t11FcRscnInChangedServiceRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + + + + contained an RSCN Event Qualifier value of '0003'b + meaning 'Changed Service Object'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 13 } + +t11FcRscnOutChangedServiceRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0003'b + meaning 'Changed Service Object'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 14 } + +t11FcRscnInChangedSwitchRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0004'b + meaning 'Changed Switch Configuration'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 15 } + +t11FcRscnOutChangedSwitchRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0004'b + meaning 'Changed Switch Configuration'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 16 } + +t11FcRscnInRemovedRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) received by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0005'b + meaning 'Removed Object'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 17 } + +t11FcRscnOutRemovedRscns OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Registered State Change Notifications + (RSCNs) sent by this switch on this Fabric which + contained an RSCN Event Qualifier value of '0005'b + meaning 'Removed Object'. + + This counter has no discontinuities other than + those that all Counter32s have when sysUpTime=0." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 36." + ::= { t11FcRscnStatsEntry 18 } + + + + + +-- +-- Notification Control Table +-- +t11FcRscnNotifyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11FcRscnNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control information for notifications + generated due to the rejection of an SCR or RSCN." + ::= { t11FcRscnInformation 1 } + +t11FcRscnNotifyControlEntry OBJECT-TYPE + SYNTAX T11FcRscnNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains notification control information + concerning the rejection of RSCN/SCRs for a particular + Fabric (identified by the value of t11FcRscnFabricIndex) + by a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, t11FcRscnFabricIndex } + ::= { t11FcRscnNotifyControlTable 1 } + +T11FcRscnNotifyControlEntry ::= SEQUENCE { + t11FcRscnIlsRejectNotifyEnable TruthValue, + t11FcRscnElsRejectNotifyEnable TruthValue, + t11FcRscnRejectedRequestString OCTET STRING, + t11FcRscnRejectedRequestSource FcNameIdOrZero, + t11FcRscnRejectReasonCode T11NsGs4RejectReasonCode, + t11FcRscnRejectReasonCodeExp OCTET STRING, + t11FcRscnRejectReasonVendorCode OCTET STRING +} + +t11FcRscnIlsRejectNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies if a t11FcRscnIlsRejectReqNotify + notification should be generated when this switch + rejects an SW_RSCN on this Fabric. + + Values written to this object should be retained + over agent reboots." + DEFVAL { false } + ::= { t11FcRscnNotifyControlEntry 1 } + + + +t11FcRscnElsRejectNotifyEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies if a t11FcRscnElsRejectReqNotify + notification should be generated when this switch + rejects an RSCN or SCR on this Fabric. + + Values written to this object should be retained + over agent reboots." + DEFVAL { false } + ::= { t11FcRscnNotifyControlEntry 2 } + +t11FcRscnRejectedRequestString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The binary content of the RSCN, SCR, or SW_RSCN that + was most recently rejected by this switch on this Fabric. + The value is formatted as an octet string (in network + byte order) as described in the relevant Fibre Channel + standard, containing the payload (which is typically a + list of affected ports and error codes) of the rejected + RSCN or SCR as described in FC-LS, or the rejected + SW_RSCN as described in FC-SW-4. + + This object contains the zero-length string if and when + the RSCN/SCR/SW_RSCN payload is unavailable. When the + length of this object is 255 octets, it contains the + first 255 octets of the payload (in network byte order)." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Tables 34 & 39. + + ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006, Table 45." + ::= { t11FcRscnNotifyControlEntry 3 } + +t11FcRscnRejectedRequestSource OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The WWN that was the source of the RSCN, SCR, or + SW_RSCN that was most recently rejected by this switch + on this Fabric." + + + + ::= { t11FcRscnNotifyControlEntry 4 } + +t11FcRscnRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the Reason Code of the most recent + rejection by this switch of an RSCN, SCR or SW_RSCN on + this Fabric." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 146. + + ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006, Table 5." + ::= { t11FcRscnNotifyControlEntry 5 } + +t11FcRscnRejectReasonCodeExp OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the Reason Code Explanation + of the most recent rejection by this switch of an + RSCN, SCR or SW_RSCN on this Fabric." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 147. + + ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006, Table 6." + ::= { t11FcRscnNotifyControlEntry 6 } + +t11FcRscnRejectReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the Reason Vendor Specific + Code of the most recent rejection by this switch + of an RSCN, SCR or SW_RSCN on this Fabric." + REFERENCE + "ANSI INCITS 433-2007, Fibre Channel - Link Services + (FC-LS), July 2007, Table 148. + + ANSI INCITS 418-2006, Fibre Channel - Switch Fabric - 4 + (FC-SW-4), December 2006, Section 6.1.3." + + + + ::= { t11FcRscnNotifyControlEntry 7 } + + +-- Notifications + +t11FcRscnElsRejectReqNotify NOTIFICATION-TYPE + OBJECTS { t11FcRscnRejectedRequestString, + t11FcRscnRejectedRequestSource, + t11FcRscnRejectReasonCode, + t11FcRscnRejectReasonCodeExp, + t11FcRscnRejectReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated when a switch rejects + an SCR or RSCN. + + The value of t11FcRscnRejectedRequestString indicates the + binary content of the rejected request if available, or + the zero-length string otherwise. The source of the + rejected request is given by t11FcRscnRejectedRequestSource, + and the reason for rejection is given by the values of + t11FcRscnRejectReasonCode, t11FcRscnRejectReasonCodeExp + and t11FcRscnRejectReasonVendorCode." + ::= { t11FcRscnNotifications 1 } + +t11FcRscnIlsRejectReqNotify NOTIFICATION-TYPE + OBJECTS { t11FcRscnRejectedRequestString, + t11FcRscnRejectedRequestSource, + t11FcRscnRejectReasonCode, + t11FcRscnRejectReasonCodeExp, + t11FcRscnRejectReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated when a switch rejects + an SW_RSCN. + + The value of t11FcRscnRejectedRequestString indicates the + binary content of the rejected request if available, or + the zero-length string otherwise. The source of the + rejected request is given by t11FcRscnRejectedRequestSource, + and the reason for rejection is given by the values of + t11FcRscnRejectReasonCode, t11FcRscnRejectReasonCodeExp + and t11FcRscnRejectReasonVendorCode." + ::= { t11FcRscnNotifications 2 } + +-- Conformance +t11FcRscnCompliances OBJECT IDENTIFIER ::= { t11FcRscnConformance 1 } +t11FcRscnGroups OBJECT IDENTIFIER ::= { t11FcRscnConformance 2 } + + + +t11FcRscnCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that implement + this MIB." + MODULE + MANDATORY-GROUPS { t11FcRscnRegistrationGroup, + t11FcRscnNotifyControlGroup, + t11FcRscnNotifyGroup } + + GROUP t11FcRscnStatsGroup + DESCRIPTION + "These counters, containing RSCN-related statistics, are + mandatory only for those systems that count such events." + + OBJECT t11FcRscnIlsRejectNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11FcRscnElsRejectNotifyEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11FcRscnCompliances 1 } + + +-- Units of conformance + +t11FcRscnRegistrationGroup OBJECT-GROUP + OBJECTS { t11FcRscnRegType } + STATUS current + DESCRIPTION + "A collection of objects for monitoring RSCN + registrations." + ::= { t11FcRscnGroups 1 } + +t11FcRscnStatsGroup OBJECT-GROUP + OBJECTS { t11FcRscnInScrs, + t11FcRscnInRscns, + t11FcRscnOutRscns, + t11FcRscnInSwRscns, + t11FcRscnOutSwRscns, + t11FcRscnScrRejects, + t11FcRscnRscnRejects, + t11FcRscnSwRscnRejects, + t11FcRscnInUnspecifiedRscns, + + + + t11FcRscnOutUnspecifiedRscns, + t11FcRscnInChangedAttribRscns, + t11FcRscnOutChangedAttribRscns, + t11FcRscnInChangedServiceRscns, + t11FcRscnOutChangedServiceRscns, + t11FcRscnInChangedSwitchRscns, + t11FcRscnOutChangedSwitchRscns, + t11FcRscnInRemovedRscns, + t11FcRscnOutRemovedRscns + } + STATUS current + DESCRIPTION + "A collection of objects for collecting RSCN-related + statistics." + ::= { t11FcRscnGroups 2 } + +t11FcRscnNotifyControlGroup OBJECT-GROUP + OBJECTS { t11FcRscnIlsRejectNotifyEnable, + t11FcRscnElsRejectNotifyEnable, + t11FcRscnRejectedRequestString, + t11FcRscnRejectedRequestSource, + t11FcRscnRejectReasonCode, + t11FcRscnRejectReasonCodeExp, + t11FcRscnRejectReasonVendorCode + } + STATUS current + DESCRIPTION + "A collection of notification control and + notification information objects." + ::= { t11FcRscnGroups 3 } + +t11FcRscnNotifyGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11FcRscnIlsRejectReqNotify, + t11FcRscnElsRejectReqNotify + } + STATUS current + DESCRIPTION + "A collection of notifications for monitoring + ILS and ELS rejections by the RSCN module." + ::= { t11FcRscnGroups 4 } + +END diff --git a/mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB b/mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB new file mode 100644 index 0000000..55d47b8 --- /dev/null +++ b/mibs/ietf/T11-FC-VIRTUAL-FABRIC-MIB @@ -0,0 +1,553 @@ +T11-FC-VIRTUAL-FABRIC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Unsigned32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF -- [RFC2580] + RowStatus, StorageType FROM SNMPv2-TC -- [RFC2579] + InterfaceIndex FROM IF-MIB -- [RFC2863] + fcmInstanceIndex, FcNameIdOrZero, + fcmPortEntry, fcmSwitchEntry + FROM FC-MGMT-MIB -- [RFC4044] + T11FabricIndex FROM T11-TC-MIB; -- [RFC4439] + +t11FcVirtualFabricMIB MODULE-IDENTITY + LAST-UPDATED "200611100000Z" + ORGANIZATION "IETF IMSS (Internet and Management Support + for Storage) Working Group" + CONTACT-INFO + " + Scott Kipp + McDATA Corporation + Tel: +1 720 558-3452 + E-mail: scott.kipp@mcdata.com + Postal: 4 McDATA Parkway + Broomfield, CO USA 80021 + + G D Ramkumar + SnapTell, Inc. + Tel: +1 650-326-7627 + E-mail: gramkumar@stanfordalumni.org + Postal: 2741 Middlefield Rd, Suite 200 + Palo Alto, CA USA 94306 + + Keith McCloghrie + Cisco Systems, Inc. + Tel: +1 408 526-5260 + E-mail: kzm@cisco.com + Postal: 170 West Tasman Drive + San Jose, CA USA 95134 + " + + DESCRIPTION + "This module defines management information specific to + Fibre Channel Virtual Fabrics. A Virtual Fabric is a + + + + Fabric composed of partitions of switches, links and + N_Ports with a single Fabric management domain, Fabric + Services and independence from other Virtual Fabrics. + + Copyright (C) The IETF Trust (2006). This version of + this MIB module is part of RFC 4747; see the RFC itself for + full legal notices." + REVISION "200611100000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4747." + ::= { mib-2 147 } + +t11vfObjects OBJECT IDENTIFIER ::= { t11FcVirtualFabricMIB 1 } +t11vfConformance OBJECT IDENTIFIER ::= { t11FcVirtualFabricMIB 2 } + +--******************************** +-- MIB object definitions +-- + +t11vfCoreSwitchTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11vfCoreSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of core switches supported by the current + management entity." + ::= { t11vfObjects 1 } + +t11vfCoreSwitchEntry OBJECT-TYPE + SYNTAX T11vfCoreSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents one core switch." + INDEX { fcmInstanceIndex, t11vfCoreSwitchSwitchName } + ::= { t11vfCoreSwitchTable 1} + +T11vfCoreSwitchEntry ::= + SEQUENCE { + t11vfCoreSwitchSwitchName FcNameIdOrZero, + t11vfCoreSwitchMaxSupported Unsigned32, + t11vfCoreSwitchStorageType StorageType + } + +t11vfCoreSwitchSwitchName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The Core Switch_Name (WWN) of this Core Switch." + ::= { t11vfCoreSwitchEntry 1 } + +t11vfCoreSwitchMaxSupported OBJECT-TYPE + SYNTAX Unsigned32 (1..4095) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "In switches that do not support Virtual Fabrics, + this object has the value of 1. If Virtual Fabrics + are supported, this object is the maximum number of + Virtual Fabrics supported by the Core Switch. For + the purpose of this count, the Control VF_ID is + ignored." + ::= { t11vfCoreSwitchEntry 2 } + +t11vfCoreSwitchStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11vfCoreSwitchEntry 3 } + +-- Virtual Switch table + +t11vfVirtualSwitchTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11vfVirtualSwitchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Virtual Switches. When one Core Switch + provides switching functions for multiple Virtual Fabrics, + that Core Switch is modeled as containing multiple + Virtual Switches, one for each Virtual Fabric. This table + contains one row for every Virtual Switch on every Core + Switch. This table augments the basic switch information in + the fcmSwitchTable Table in the FC-MGMT-MIB." + REFERENCE + "fcmSwitchTable is defined in the FC-MGMT-MIB [RFC4044]." + ::= { t11vfObjects 2 } + +t11vfVirtualSwitchEntry OBJECT-TYPE + SYNTAX T11vfVirtualSwitchEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry of the Virtual Switch table. Each row is for a + Virtual Switch. + + This table augments the fcmSwitchTable, i.e., every entry + in this table has a one-to-one correspondence with an + entry in the fcmSwitchTable. At the time when the + fcmSwitchTable was defined, it applied to physical + switches. With the definition and usage of virtual + switches, fcmSwitchTable now applies to virtual switches + as well as physical switches, and (in contrast to physical + switches) it is appropriate to provide the capability for + virtual switches to be created via remote management + applications, e.g., via SNMP. + + So, this entry contains a RowStatus object (to allow the + creation of a virtual switch), as well as a StorageType + object. Obviously, if a row is created/deleted in this + table, the corresponding row in the fcmSwitchTable will + be created/deleted." + REFERENCE + "fcmSwitchEntry is defined in the FC-MGMT-MIB module + [RFC4044]." + AUGMENTS { fcmSwitchEntry } + ::= { t11vfVirtualSwitchTable 1} + +T11vfVirtualSwitchEntry ::= + SEQUENCE { + t11vfVirtualSwitchVfId T11FabricIndex, + t11vfVirtualSwitchCoreSwitchName FcNameIdOrZero, + t11vfVirtualSwitchRowStatus RowStatus, + t11vfVirtualSwitchStorageType StorageType + } + +t11vfVirtualSwitchVfId OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VF_ID of the Virtual Fabric for which this virtual + switch performs its switching function. The Control + VF_ID is implicitly enabled and is not set. + Communication with the Control VF_ID is required." + REFERENCE + "FC-SW-4, REV 7.5, section 12.2" + ::= { t11vfVirtualSwitchEntry 1 } + + + + +t11vfVirtualSwitchCoreSwitchName OBJECT-TYPE + SYNTAX FcNameIdOrZero (SIZE(8 | 16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Core Switch_Name (WWN) of the Core Switch that + contains this Virtual Switch." + REFERENCE + "FC-SW-4, REV 7.5, section 12.2." + ::= { t11vfVirtualSwitchEntry 2 } + +t11vfVirtualSwitchRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row." + ::= { t11vfVirtualSwitchEntry 3 } + +t11vfVirtualSwitchStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11vfVirtualSwitchEntry 4 } + +-- Port table + +t11vfPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11vfPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of Port attributes related to Virtual Fabrics." + ::= { t11vfObjects 3 } + +t11vfPortEntry OBJECT-TYPE + SYNTAX T11vfPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a physical Port on a switch. + Switches that support Virtual Fabrics would add + + + + these four additional columns to the fcmPortEntry + row." + REFERENCE + "fcmPortEntry is defined in the FC-MGMT-MIB module." + AUGMENTS { fcmPortEntry } + ::= { t11vfPortTable 1} + +T11vfPortEntry ::= + SEQUENCE { + t11vfPortVfId T11FabricIndex, + t11vfPortTaggingAdminStatus INTEGER, + t11vfPortTaggingOperStatus INTEGER, + t11vfPortStorageType StorageType + } + +t11vfPortVfId OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Port VF_ID assigned to this Port. The Port VF_ID is the + default Virtual Fabric that is assigned to untagged frames + arriving at this Port. The Control VF_ID is implicitly + enabled and is not set. Communication with the Control + VF_ID is required." + REFERENCE + "FC-SW-4, REV 7.5, section 12.1" + DEFVAL {1} + ::= { t11vfPortEntry 1 } + +t11vfPortTaggingAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2), + auto(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to configure the administrative status + of Virtual Fabric tagging on this Port. + + SET operation Description + -------------- ------------------------------------------- + off(1) To disable Virtual Fabric tagging on this + Port. + + on(2) To enable Virtual Fabric tagging on this + + + + Port if the attached Port doesn't + prohibit it. + + auto(3) To enable Virtual Fabric tagging if the + peer requests it." + REFERENCE + "FC-SW-4, REV 7.5, section 12.4" + ::= { t11vfPortEntry 2 } + + t11vfPortTaggingOperStatus OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to report the operational status of + Virtual Fabric tagging on this Port. + + SET operation Description + -------------- ------------------------------------------- + off(1) Virtual Fabric tagging is disabled on this + Port. + + on(2) Virtual Fabric tagging is enabled on this + Port." + REFERENCE + "FC-SW-4, REV 7.5, section 12.4" + ::= { t11vfPortEntry 3 } + +t11vfPortStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for this conceptual row, and for the + corresponding row in the augmented fcmPortTable. + + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11vfPortEntry 4 } + + +-- Locally Enabled Table + +t11vfLocallyEnabledTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF T11vfLocallyEnabledEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table for assigning and reporting operational status of + locally-enabled Virtual Fabric IDs to Ports. The set of + Virtual Fabrics operational on the Port is the bit-wise + 'AND' of the set of locally-enabled VF_IDs of this Port + and the locally-enabled VF_IDs of the attached Port." + ::= { t11vfObjects 4 } + +t11vfLocallyEnabledEntry OBJECT-TYPE + SYNTAX T11vfLocallyEnabledEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for each locally-enabled VF_ID on + each Port." + REFERENCE + "FC-SW-4, REV 7.5, section 12.4" + INDEX { t11vfLocallyEnabledPortIfIndex, t11vfLocallyEnabledVfId } + + ::= { t11vfLocallyEnabledTable 1} + +T11vfLocallyEnabledEntry ::= + SEQUENCE { + t11vfLocallyEnabledPortIfIndex InterfaceIndex, + t11vfLocallyEnabledVfId T11FabricIndex, + t11vfLocallyEnabledOperStatus INTEGER, + t11vfLocallyEnabledRowStatus RowStatus, + t11vfLocallyEnabledStorageType StorageType + } + +t11vfLocallyEnabledPortIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of the ifIndex that identifies the Port." + ::= { t11vfLocallyEnabledEntry 1 } + +t11vfLocallyEnabledVfId OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally-enabled VF_ID on this Port." + ::= { t11vfLocallyEnabledEntry 2 } + + + + +t11vfLocallyEnabledOperStatus OBJECT-TYPE + SYNTAX INTEGER { + off(1), + on(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object is used to report the operational status of + Virtual Fabric tagging on this Port. + + SET operation Description + -------------- ------------------------------------------- + off(1) Virtual Fabric tagging is disabled on this + Port. + + on(2) Virtual Fabric tagging is enabled on this + Port." + REFERENCE + "FC-SW-4, REV 7.3, section 12.4" + ::= { t11vfLocallyEnabledEntry 3 } + +t11vfLocallyEnabledRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + When a row in this table is in 'active(1)' state, + no object in that row can be modified except + t11vfLocallyEnabledRowStatus and + t11vfLocallyEnabledStorageType." + ::= { t11vfLocallyEnabledEntry 4 } + +t11vfLocallyEnabledStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { t11vfLocallyEnabledEntry 5 } + +--******************************** + + + +-- Conformance Section +-- + +t11vfMIBCompliances OBJECT IDENTIFIER ::= { t11vfConformance 1 } +t11vfMIBGroups OBJECT IDENTIFIER ::= { t11vfConformance 2 } + +t11vfMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for compliance to the + Fibre Channel Virtual Fabric MIB." + MODULE -- this module + MANDATORY-GROUPS { t11vfGeneralGroup } + + OBJECT t11vfCoreSwitchMaxSupported + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfCoreSwitchStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfVirtualSwitchVfId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfVirtualSwitchRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfVirtualSwitchStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfPortVfId + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfPortTaggingAdminStatus + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT t11vfPortStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfLocallyEnabledRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11vfLocallyEnabledStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11vfMIBCompliances 1 } + +-- Units of conformance + + t11vfGeneralGroup OBJECT-GROUP + OBJECTS { t11vfCoreSwitchMaxSupported, + t11vfVirtualSwitchVfId, + t11vfVirtualSwitchCoreSwitchName, + t11vfVirtualSwitchRowStatus, + t11vfPortVfId, + t11vfPortTaggingAdminStatus, + t11vfLocallyEnabledOperStatus, + t11vfPortTaggingOperStatus, + t11vfLocallyEnabledRowStatus, + t11vfCoreSwitchStorageType, + t11vfVirtualSwitchStorageType, + t11vfPortStorageType, + t11vfLocallyEnabledStorageType + + } + STATUS current + DESCRIPTION + "A collection of objects for monitoring and + configuring Virtual Fabrics in a Fibre Channel switch." + ::= { t11vfMIBGroups 1 } + +END diff --git a/mibs/ietf/T11-FC-ZONE-SERVER-MIB b/mibs/ietf/T11-FC-ZONE-SERVER-MIB new file mode 100644 index 0000000..1e9c3ea --- /dev/null +++ b/mibs/ietf/T11-FC-ZONE-SERVER-MIB @@ -0,0 +1,2807 @@ +T11-FC-ZONE-SERVER-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, mib-2, + Counter32, Unsigned32 + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + TEXTUAL-CONVENTION, RowStatus, + StorageType, + TruthValue, TimeStamp + FROM SNMPv2-TC -- [RFC2579] + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB -- [RFC3411] + ifIndex FROM IF-MIB -- [RFC2863] + fcmInstanceIndex, fcmSwitchIndex, + FcNameIdOrZero, + FcDomainIdOrZero FROM FC-MGMT-MIB -- [RFC4044] + T11NsGs4RejectReasonCode + FROM T11-FC-NAME-SERVER-MIB -- [RFC4438] + T11FabricIndex FROM T11-TC-MIB -- [RFC4439] + t11FamLocalSwitchWwn + FROM T11-FC-FABRIC-ADDR-MGR-MIB; -- [RFC4439] + +t11ZoneServerMIB MODULE-IDENTITY + LAST-UPDATED "200706270000Z" + ORGANIZATION "For the initial versions, T11. + For later versions, the IETF's IMSS Working Group." + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + EMail: kzm@cisco.com" + + DESCRIPTION + "The MIB module for the management of Fibre Channel Zoning + Servers, both for Basic Zoning Management and for Enhanced + + + Zoning Management, as defined in the FC-GS-5 specification. + + FC-GS-5 defines (in-band) management operations for + manipulating the Zone Set Database, some for use in Basic + mode (e.g., 'Add Zone Set (AZS)', etc.), and some for use in + Enhanced mode (e.g., Create Zone Set (CZS)', etc.). When + Enhanced Zoning Management is in use, FC-GS-5 requires that + these in-band management operations be rejected unless they + are issued within the context of a GS-5 server session. The + use of a server session ensures serialized access to the + Zoning Database since the Fabric lock for the Zone Server + must be obtained as a part of establishing the server + session to the Zone Server. + + Thus, if and when this MIB is used for Enhanced Zoning + Management, SNMP SetRequests that request the modification + of zoning definitions must be serialized with respect to + the GS-5 requests to modify the Zoning Database. This is + achieved by requiring that an SNMP management application + must first obtain the Fabric lock for the Zone Server + before attempting to modify any zoning definitions. The + companion T11-FC-FABRIC-LOCK-MIB module is defined as a means + of obtaining the Fabric lock for the Zone Server (or any + other server). + + In Enhanced Zoning Management, a Zone Server keeps track of + changes requested in the zoning definitions, but does not + update its Zone Set Database unless there is (and until + there is) a 'commit' operation. To model this behavior, + this MIB module assumes that a Zone Server (in Enhanced + mode) takes a snapshot of its Zone Set Database as and when + the Fabric lock (for the Zone Server application) is + obtained; this snapshot is used to create what is herein + called the 'copy' database. It is this 'copy' database + that is then updated by SNMP SetRequests (while the Fabric + is locked). If and when a 'commit' operation is requested + (while the Fabric is still locked), the 'copy' database is + then used to overwrite the previously committed contents of + the Zone Set Database, and the new Zone Set Database is + distributed to all other switches in the Fabric. When the + lock is released, any changes made that were not + 'committed' are discarded. + + When this MIB is used for Basic Zoning Management, the same + set of MIB objects as used for Enhanced mode are used to + make changes to the Database of a Zone Server on a + particular switch, but the changes take immediate effect at + that switch without an explicit commit. The distribution of + + + + those changes to Zone Servers on other switches in the + Fabric is subsequently requested through the use of a + separate set of MIB objects. + + The management information specified in this MIB module + includes the Zoning Database for each of one or more Fibre + Channel Fabrics. A Zoning Database is a combination of the + Fabric's Zone Set Database and its Active Zone Set. The + Active Zone Set is the Zone Set currently enforced by the + Fabric; a Zone Set Database is a database of the Zone Sets + available to be activated within a Fabric. All the MIB + objects representing a Zone Set Database are modifiable at + any time (irrespective of the value of any RowStatus + object), whereas all objects representing the Active Zone + Set are always read-only (except to deactivate it and/or + activate a different one). + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is part of RFC 4936; see the RFC + itself for full legal notices." + REVISION "200706270000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4936." + ::= { mib-2 160 } + +t11ZsMIBObjects OBJECT IDENTIFIER ::= { t11ZoneServerMIB 1 } +t11ZsMIBConformance OBJECT IDENTIFIER ::= { t11ZoneServerMIB 2 } +t11ZsMIBNotifications OBJECT IDENTIFIER ::= { t11ZoneServerMIB 0 } +t11ZsConfiguration OBJECT IDENTIFIER ::= { t11ZsMIBObjects 1 } +t11ZsStatistics OBJECT IDENTIFIER ::= { t11ZsMIBObjects 2 } + +-- Textual Conventions + +T11ZsZoneMemberType ::= TEXTUAL-CONVENTION + DISPLAY-HINT "x" + STATUS current + DESCRIPTION + "Represents the addressing mechanism by + which a member is identified: + + 01 - N_Port_Name + 02 - Domain_ID and physical port + 03 - N_Port_ID + 04 - Node_Name + 05 - Alias Name + 06 - F_Port_Name + E0-FF (hex) - Vendor Specific. + " + + + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.6." + SYNTAX Unsigned32 (0..255) + +T11ZsRejectReasonExplanation ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The reason code explanation when rejecting a + Zone Server request: + + 'other' + - e.g., a reason code assigned too recently + to be included in this version of this MIB + 'noAdditionalExplanation' + - there is no additional explanation + 'zonesNotSupported' + - Zones are not supported + 'zoneSetNameUnknown' + - Zone Set name is not known + 'noZoneSetActive' + - no Zone Set is currently active + 'zoneNameUnknown' + - Zone name is unknown + 'zoneStateUnknown' + - state of the Zone is not known + 'incorrectPayloadLen' + - payload length is not correct + 'tooLargeZoneSet' + - Zone Set is larger than permitted size + 'deactivateZoneSetFailed' + - deactivation of Zone Set failed + 'reqNotSupported' + - request is not supported + 'capabilityNotSupported' + - capability is not supported + 'zoneMemberIDTypeNotSupp' + - Zone Member Identifier Type is not supported + 'invalidZoneSetDefinition' + - Zone Set definition is invalid + 'enhancedZoningCmdsNotSupported' + - Enhanced Zoning commands are not supported + 'zoneSetExists' + - Zone Set already exists + 'zoneExists' + - Zone already exists + 'aliasExists' + - Zone Alias already exists + + + 'zoneSetUnknown' + - Zone Set unknown + 'zoneUnknown' + - Zone unknown + 'aliasUnknown' + - Zone Alias unknown + 'zoneAliasTypeUnknown' + - unknown Zone attribute type + 'unableEnhancedMode' + - Fabric unable to work in Enhanced Mode + 'basicZoningCmdsNotSupported' + - Basic Zoning commands are not supported + 'zoneAttribObjectExists' + - Zone attribute object already exists + 'zoneAttribObjectUnknown' + - Zone attribute object unknown + 'requestInProcess' + - request in process + 'cmitInProcess' + - CMIT in process + 'hardEnforcementFailed' + - hard enforcement failed + 'unresolvedReferences' + - unresolved references in the Zone Set Database + 'consistencyChecksFailed' + - consistency checks failed." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.9." + SYNTAX INTEGER { + other(1), + noAdditionalExplanation(2), + zonesNotSupported(3), + zoneSetNameUnknown(4), + noZoneSetActive(5), + zoneNameUnknown(6), + zoneStateUnknown(7), + incorrectPayloadLen(8), + tooLargeZoneSet(9), + deactivateZoneSetFailed(10), + reqNotSupported(11), + capabilityNotSupported(12), + zoneMemberIDTypeNotSupp(13), + invalidZoneSetDefinition(14), + enhancedZoningCmdsNotSupported(15), + zoneSetExists(16), + zoneExists(17), + aliasExists(18), + + + zoneSetUnknown(19), + zoneUnknown(20), + aliasUnknown(21), + zoneAliasTypeUnknown(22), + unableEnhancedMode(23), + basicZoningCmdsNotSupported(24), + zoneAttribObjectExists(25), + zoneAttribObjectUnknown(26), + requestInProcess(27), + cmitInProcess(28), + hardEnforcementFailed(29), + unresolvedReferences(30), + consistencyChecksFailed(31) + } + +T11ZoningName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This datatype is a refinement of an SnmpAdminString, + and is used to represent a name stored in a Fibre + Channel Zoning Data Structure. + + The value begins with an ASCII letter (upper or lower + case) followed by zero or more characters from the set: + lower case letters, upper case letters, numbers, and + the symbols ($-^_). + + The value does not include fill bytes." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.1." + SYNTAX OCTET STRING (SIZE (1..64)) + +-- +-- The table of Zone Servers +-- + +t11ZsServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about the Zone Servers + on each Fabric in one or more switches, and providing + the capability to perform operations on their Zone + Server databases." + ::= { t11ZsConfiguration 1 } + + + +t11ZsServerEntry OBJECT-TYPE + SYNTAX T11ZsServerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information specific to a + Zone Server for a particular Fabric (identified by + the value of t11ZsServerFabricIndex) on a particular + switch (identified by values of fcmInstanceIndex + and fcmSwitchIndex). + + The persistence across reboots of writable values in + a row of this table is given by the instance of + t11ZsServerDatabaseStorageType in that row." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsServerTable 1 } + +T11ZsServerEntry ::= SEQUENCE { + t11ZsServerFabricIndex T11FabricIndex, + t11ZsServerCapabilityObject BITS, + t11ZsServerDatabaseStorageType StorageType, + t11ZsServerDistribute INTEGER, + t11ZsServerCommit INTEGER, + t11ZsServerResult INTEGER, + t11ZsServerReasonCode T11NsGs4RejectReasonCode, + t11ZsServerReasonCodeExp OCTET STRING, + t11ZsServerReasonVendorCode OCTET STRING, + t11ZsServerLastChange TimeStamp, + t11ZsServerHardZoning TruthValue, + t11ZsServerReadFromDatabase INTEGER, + t11ZsServerOperationMode INTEGER, + t11ZsServerChangeModeResult INTEGER, + t11ZsServerDefaultZoneSetting INTEGER, + t11ZsServerMergeControlSetting INTEGER, + t11ZsServerDefZoneBroadcast TruthValue +} + +t11ZsServerFabricIndex OBJECT-TYPE + SYNTAX T11FabricIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique index value that uniquely identifies a + particular Fabric." + ::= { t11ZsServerEntry 1 } + +t11ZsServerCapabilityObject OBJECT-TYPE + + + + SYNTAX BITS { + enhancedMode(0), + zoneSetDb(1), + activateDirect(2), + hardZoning(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This bitmap represents the capability of the switch + on this Fabric: + + 'enhancedMode' - able to support enhanced Zoning + mode of operation. + + 'zoneSetDb' - able to support maintaining of + a Zone Set Database. + + 'activateDirect' - able to support the Activate + Direct command. + + 'hardZoning' - able to support Hard Zoning." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.23.4.4" + ::= { t11ZsServerEntry 2 } + +t11ZsServerDatabaseStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies the memory realization, on a + particular switch, of the Zone Set database for a + particular Fabric. Specifically, each row in the + following tables: + + t11ZsSetTable + t11ZsZoneTable + t11ZsSetZoneTable + t11ZsAliasTable + t11ZsZoneMemberTable + t11ZsAttribBlockTable + t11ZsAttribTable + + has a StorageType as specified by the instance of + this object that is INDEXed by the same values of + fcmInstanceIndex, fcmSwitchIndex, and + + + t11ZsServerFabricIndex. + + The value of this object is also used to indicate + the persistence across reboots of writable values in + its row of the t11ZsServerTable, as well as the + corresponding row in the t11ZsNotifyControlTable. + + If an instance of this object has the value + 'permanent(4)', the Zone Set database for the given + Fabric on the given switch is not required to be + writeable." + DEFVAL { nonVolatile } + ::= { t11ZsServerEntry 3 } + +t11ZsServerDistribute OBJECT-TYPE + SYNTAX INTEGER { + noop(1), + zoneSetDb(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object can be set only in Basic mode. When set + to the value 'zoneSetDb', it requests that the Zone Set + database of a particular switch for a particular Fabric + be distributed to every other switch in that Fabric, + e.g., by using Stage Fabric Configuration Update (SFC) + and Update Fabric Configuration (UFC) requests. + + Setting this object to 'noop' has no effect. + When read, the value of this object is always 'noop'. + + When the corresponding instance of t11ZsServerOperationMode + has the value 'enhanced', or when the corresponding instance + of t11ZsZoneSetResult has the value 'inProgress', it + is inconsistent to try to set the value of this object." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.19.1." + ::= { t11ZsServerEntry 4 } + +t11ZsServerCommit OBJECT-TYPE + SYNTAX INTEGER { + commitZoneChanges(1), + noop(2) + } + MAX-ACCESS read-write + STATUS current + + + DESCRIPTION + "This object is only used in Enhanced mode. + + In Enhanced mode, it can only be modified when the Fabric + lock for the Zone Server on the particular Fabric has been + obtained for use by SNMP SetRequests, and even then, only + by the SNMP entity identified by the value of corresponding + instance of t11FLockInitiator. + + Setting the object requests an action: + + commitZoneChanges - requests that the changes made + within this session to the Zone + Set Database be committed. + noop - requests nothing. + + When read, the value is always 'noop'." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.2." + ::= { t11ZsServerEntry 5 } + +t11ZsServerResult OBJECT-TYPE + SYNTAX INTEGER { + none(1), + inProgress(2), + success(3), + rejectFailure(4), + otherFailure(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "In Basic mode, this object indicates the status/result + of the last distribution of the Zone Set database that + was invoked via the corresponding instance of + t11ZsZoneSetDistribute, e.g., the status/result of + Stage Fabric Configuration Update (SFC) request(s) used + to implement the setting of t11ZsZoneSetDistribute. + + In Enhanced mode, this object indicates the status/result + of the last commit of changes to the Zone Set database + that was invoked via the corresponding instance of + t11ZsServerCommit. + + 'none' - no distribution/commit invoked + via the corresponding instance of + t11ZsZoneSetDistribute (Basic mode) + + + or t11ZsServerCommit (Enhanced mode). + 'inProgress' - distribution/commit is still in + progress. + 'success' - distribution/commit completed + successfully. + 'rejectFailure' - distribution/commit failed due to + an SW_RJT. + 'otherFailure' - distribution/commit failed for some + other reason. + + When the value is 'rejectFailure', the corresponding + instances of t11ZsServerReasonCode, + t11ZsServerReasonCodeExp and t11ZsServerReasonVendorCode + contain the reason codes. " + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.2.3." + ::= { t11ZsServerEntry 6 } + +t11ZsServerReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the corresponding instance of t11ZsZoneSetResult + has the value 'rejectFailure', this object contains + the rejection's reason code. + + When the corresponding instance of t11ZsServerResult + has a value other than 'rejectFailure', this object + should contain the value 'none'." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.3 and + tables 4, 5, and 6." + ::= { t11ZsServerEntry 7 } + +t11ZsServerReasonCodeExp OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the corresponding instance of t11ZsZoneSetResult + has the value 'rejectFailure', this object contains + the rejection's reason code explanation. + + When the corresponding instance of t11ZsServerResult + has a value other than 'rejectFailure', this object + + + + should contain the zero-length string." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.3 and + tables 4, 5, and 6." + ::= { t11ZsServerEntry 8 } + +t11ZsServerReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0 | 1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the corresponding instance of t11ZsZoneSetResult + has the value 'rejectFailure', this object contains + the rejection's reason vendor-specific code. + + When the corresponding instance of t11ZsServerResult + has a value other than 'rejectFailure', this object + should contain the zero-length string." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, section 6.1.3 and + tables 4, 5, and 6." + ::= { t11ZsServerEntry 9 } + +t11ZsServerLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last change + (creation, modification, or deletion) to the Zone Set + database for the Zone Server for a particular Fabric. + If said Zone Set database has not changed since the + last re-initialization of the local network management + system, then this object will contain a zero value." + ::= { t11ZsServerEntry 10 } + +t11ZsServerHardZoning OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether this switch, if and when it + is in Basic mode, enforces Hard Zoning on this Fabric." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.3.2." + + + + ::= { t11ZsServerEntry 11 } + +t11ZsServerReadFromDatabase OBJECT-TYPE + SYNTAX INTEGER { + committedDB(1), + copyDB(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "In Enhanced mode, this object specifies whether + subsequent SNMP Responses (generated by the local SNMP + agent) to operations that read the configuration of + Zone Sets, Zones, Members, Aliases and Attributes will + reflect the values stored in the current (committed) + Zone Set database, or those stored in the 'copy' + database. + + In Basic mode, the value of this object is always + 'committedDB' (since there is no 'copy' database in + Basic mode). In SNMP agents that don't support + write access to the Zone Set database, this object + is always 'committedDB' (since the copy database, + if it were to exist, would be identical)." + DEFVAL { committedDB } + ::= { t11ZsServerEntry 12 } + +t11ZsServerOperationMode OBJECT-TYPE + SYNTAX INTEGER { + basic(1), + enhanced(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The operational mode of the Zone Server. + + Setting this object to 'enhanced' is a request that the mode + of operation of the Zone Server be Enhanced mode, which is + only possible if all devices in the Fibre Channel Fabric are + capable of working in Enhanced mode. If not, the request + will fail and the corresponding value of + t11ZsServerChangeModeResult will so indicate. + + Setting this object to 'basic' is a request that the mode + of operation of the Zone Server be Basic mode. However, + such a set may fail while operating in Enhanced mode, + since FC-GS-5 makes no provision for changing (back) + + + + to Basic mode. + + Note that setting this object does not cause or require + that the Fabric lock for the Zone Server be obtained. + However, when this object has the value 'enhanced', any SNMP + SetRequests that attempt to modify the copy database cannot + be successful if the Fabric lock has not been obtained + or has since been released." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, sections 6.4.10.1.1 and 6.4.10.1.2." + DEFVAL { basic } + ::= { t11ZsServerEntry 13 } + +t11ZsServerChangeModeResult OBJECT-TYPE + SYNTAX INTEGER { + success(1), + failure(2), + inProgress(3), + none(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When this object has the value of 'success' or + 'failure', the value indicates the outcome of the most + recent request, invoked via t11ZsServerOperationMode, + to change the mode of operation of the Zone Server. + When such a request is in progress, this object has the + value 'inProgress'. Prior to the first such request, + the value of this object is 'none'." + ::= { t11ZsServerEntry 14 } + +t11ZsServerDefaultZoneSetting OBJECT-TYPE + SYNTAX INTEGER { + permit(1), + deny(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the Enhanced Zoning flag that + governs the behavior of the Default Zone on this Fabric. + + If this object is set to 'permit', then the members of + the Default Zone on this Fabric can communicate with + each other. + + + + + If this object is set to 'deny', then the members of the + Default Zone on this Fabric cannot communicate with each + other." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.1.1." + DEFVAL { deny } + ::= { t11ZsServerEntry 15 } + +t11ZsServerMergeControlSetting OBJECT-TYPE + SYNTAX INTEGER { + allow(1), + restrict(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls the Enhanced Zoning flag that + indicates the Merge Control Setting for this Fabric: + + 'allow' - a switch may join the Fabric only if + its Zoning Database is able to merge + with the Fabric's Zoning Database. + 'restrict' - a switch may join the Fabric only if + its Zoning Database is equal to the + Fabric's Zoning Database." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.10.1.1." + DEFVAL { allow } + ::= { t11ZsServerEntry 16 } + +t11ZsServerDefZoneBroadcast OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object controls an Enhanced Zoning capability: + it indicates whether Broadcast Zoning is enabled on + the Default Zone on this Fabric. If this object is + set to 'true', then it is enabled. If this object is + set to 'false', then it is disabled. + + If broadcast Zoning is enabled on a Default Zone, + then broadcast frames generated by a member in that + Default Zone will be restricted to members in that + Default Zone." + REFERENCE + + + + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.7.2.2." + ::= { t11ZsServerEntry 17 } + +-- +-- The table of Zone Sets +-- + +t11ZsSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on every Zone + Set in the Zone Set database of the Zone Servers + on each Fabric in one or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 2 } + +t11ZsSetEntry OBJECT-TYPE + SYNTAX T11ZsSetEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone Set + in the Zone Set database of a particular Fabric + (identified by the value of t11ZsServerFabricIndex) + on a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex). + + A Zone Set can be created in an existing Zone Set + database, and can contain zero or more existing + Zones. As and when new Zones are created + (as rows in the t11ZsZoneTable), they can be added + to a Zone Set by creating an entry for each in the + t11ZsSetZoneTable. Deleting a row from this table + deletes the Zone Set from the Zone Set database + maintained by the Zone Server, but does not otherwise + affect the Zone Server. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + + + + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsSetIndex } + ::= { t11ZsSetTable 1 } + +T11ZsSetEntry ::= SEQUENCE { + t11ZsSetIndex Unsigned32, + t11ZsSetName T11ZoningName, + t11ZsSetRowStatus RowStatus +} + +t11ZsSetIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of a Zone Set. This object uniquely + identifies a Zone Set in the Zone Set database + for a particular Fabric on a particular switch." + ::= { t11ZsSetEntry 1 } + +t11ZsSetName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of this Zone Set. The t11ZsSetName should + be unique within a Fabric. + + The Zone Set can be renamed at any time (i.e., even + when the row in an active state) by setting this object + to a new value." + ::= { t11ZsSetEntry 2 } + +t11ZsSetRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + This object cannot be set to 'active' unless the + corresponding value of t11ZsSetName is unique within + the Fabric's Zone Server database on this switch." + ::= { t11ZsSetEntry 3 } + + + + + +-- +-- The table of Zones +-- + +t11ZsZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table gives information on all the Zones in the + Zone Set database of the Zone Servers on each Fabric + in one or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 3 } + +t11ZsZoneEntry OBJECT-TYPE + SYNTAX T11ZsZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone + in the Zone Set database of a particular Fabric + (identified by the value of t11ZsServerFabricIndex) + on a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex). + + A Zone can be created in an existing Zone Set + database, by first creating an entry in this table, + and then adding members to it by creating entries in the + t11ZsZoneMemberTable. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsZoneIndex } + ::= { t11ZsZoneTable 1 } + +T11ZsZoneEntry ::= SEQUENCE { + t11ZsZoneIndex Unsigned32, + t11ZsZoneName T11ZoningName, + + + + t11ZsZoneAttribBlock Unsigned32, + t11ZsZoneRowStatus RowStatus +} + +t11ZsZoneIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this + Zone within a particular Fabric's Zone Set database + on a particular switch." + ::= { t11ZsZoneEntry 1 } + +t11ZsZoneName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of this Zone. The t11ZsZoneName should be + unique within a Fabric. + + The Zone can be renamed by setting this object + to a new value." + ::= { t11ZsZoneEntry 2 } + +t11ZsZoneAttribBlock OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the index value of the + Zone Attribute Block that contains the Attributes + of this Zone. + + In Enhanced mode, a value of zero indicates this + Zone has no Zone Attributes. In Basic mode, this + object always has the value of zero." + ::= { t11ZsZoneEntry 3 } + +t11ZsZoneRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + This object cannot be set to 'active' unless the + + + + corresponding value of t11ZsZoneName is unique within + the Fabric's Zone Server database on this switch." + ::= { t11ZsZoneEntry 4 } + +-- +-- The table specifying the Zones that belong to each Zone Set +-- + +t11ZsSetZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsSetZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies which Zones belong to which Zone + Sets in the Zone Set database of the Zone Servers + on each Fabric in one or more switches." + ::= { t11ZsConfiguration 4 } + +t11ZsSetZoneEntry OBJECT-TYPE + SYNTAX T11ZsSetZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry specifies that a particular Zone (identified + by the value of t11ZsZoneIndex) is one of the Zones + that form a particular Zone Set (identified by the + value of t11ZsSetIndex) in the Zone Set database of a + particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex). + + When a row in this table exists, it references one row in + the t11ZsSetTable and one row in the t11ZsZoneTable. The + agent must ensure that both such rows when referenced by an + active row in this table, do exist and have a status of + 'active', either by refusing to create new rows in this + table, or by automatically deleting rows in this table. + + An 'active' row in this table references one row in the + t11ZsSetTable and one in the t11ZsZoneTable. The agent must + ensure that all such referenced rows exist with a status of + 'active', either by refusing to create new active rows in + this table, or by automatically deleting any rows in this + table that reference a deleted row. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + + + + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, + t11ZsSetIndex, t11ZsZoneIndex } + ::= { t11ZsSetZoneTable 1 } + +T11ZsSetZoneEntry ::= SEQUENCE { + t11ZsSetZoneRowStatus RowStatus +} + +t11ZsSetZoneRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row." + ::= { t11ZsSetZoneEntry 1 } + +-- +-- The table of Zone Aliases +-- + +t11ZsAliasTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsAliasEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about the Zone Aliases + in the Zone Set database of the Zone Servers on each + Fabric in one or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 5 } + +t11ZsAliasEntry OBJECT-TYPE + SYNTAX T11ZsAliasEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone Alias in + the Zone Set database of a particular Fabric + (identified by the value of t11ZsServerFabricIndex) on + + + + a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex). + + A Zone Member is added to a Zone Alias by creating + an entry in the t11ZsZoneMemberTable pointing to a + row of this table via t11ZsAliasIndex, i.e.,: + + - t11ZsZoneMemberParentType = 'alias', + - t11ZsZoneMemberParentIndex = Alias's t11ZsAliasIndex, + - t11ZsZoneMemberFormat != '05 - Alias Name', and + - t11ZsZoneMemberID = Member's identifier. + + A Zone Alias is added to a Zone by creating + an entry in the t11ZsZoneMemberTable pointing to a + row of this table via t11ZsAliasName, i.e.,: + + - t11ZsZoneMemberParentType = 'zone', and + - t11ZsZoneMemberParentIndex = Zone's t11ZsZoneIndex, + - t11ZsZoneMemberFormat = '05 - Alias Name', + - t11ZsZoneMemberID = Alias's t11ZsAliasName. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsAliasIndex } + ::= { t11ZsAliasTable 1 } + +T11ZsAliasEntry ::= SEQUENCE { + t11ZsAliasIndex Unsigned32, + t11ZsAliasName T11ZoningName, + t11ZsAliasRowStatus RowStatus +} + +t11ZsAliasIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value which uniquely identifies this Zone + Alias within the Zone Set database of a particular + Fabric on a particular switch." + ::= { t11ZsAliasEntry 1 } + +t11ZsAliasName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The name of this Zone Alias. The name of the Zone + Alias should be unique within a Fabric. + + The Zone Alias can be renamed by setting this object + to a new value if and when it is not in a Zone, i.e., + if and only if the current name is not the value of + any t11ZsZoneMemberID in the same Zone Set database." + ::= { t11ZsAliasEntry 2 } + +t11ZsAliasRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + This object cannot be set to 'active' unless the + corresponding value of t11ZsAliasName is unique within + the Fabric's Zone Server database on this switch." + ::= { t11ZsAliasEntry 3 } + +-- +-- The table of Zone Members +-- + +t11ZsZoneMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsZoneMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all members of a Zone/Zone Alias + and information about those members in the Zone Set + database of the Zone Servers on each Fabric in one or + more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 6 } + +t11ZsZoneMemberEntry OBJECT-TYPE + SYNTAX T11ZsZoneMemberEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Each entry represents the relationship between a + member and (one of) its 'parent(s)', i.e., a Zone + or Zone Alias to which the member belongs, within + a particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex). + + A Zone member (other than an alias) is added to a + Zone by creating an entry in this table having: + + - t11ZsZoneMemberParentType = 'zone', and + - t11ZsZoneMemberParentIndex = Zone's t11ZsZoneIndex, + - t11ZsZoneMemberFormat != '05 - Alias Name', + - t11ZsZoneMemberID = Member's identifier. + + An 'active' row in this table references rows in other + tables. The agent must ensure that all such referenced + rows exist with a status of 'active', either by refusing to + create new active rows in this table, or by automatically + deleting any rows in this table that reference a deleted + row. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsZoneMemberParentType, + t11ZsZoneMemberParentIndex, t11ZsZoneMemberIndex } + ::= { t11ZsZoneMemberTable 1 } + +T11ZsZoneMemberEntry ::= SEQUENCE { + t11ZsZoneMemberParentType INTEGER, + t11ZsZoneMemberParentIndex Unsigned32, + t11ZsZoneMemberIndex Unsigned32, + t11ZsZoneMemberFormat T11ZsZoneMemberType, + t11ZsZoneMemberID OCTET STRING, + t11ZsZoneMemberRowStatus RowStatus +} + +t11ZsZoneMemberParentType OBJECT-TYPE + SYNTAX INTEGER { + zone(1), -- member belongs to a Zone + alias(2) -- member belongs to a Zone Alias + } + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object determines whether this member belongs + to a Zone or Zone Alias." + ::= { t11ZsZoneMemberEntry 1 } + +t11ZsZoneMemberParentIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains the index value of the Zone or + Zone Alias to which this member belongs. + + If the value of the corresponding instance of + t11ZsZoneMemberParentType is 'zone', then this object + will contain the value of the t11ZsZoneIndex object of + the Zone to which this member belongs. + + If the value of the corresponding instance of + t11ZsZoneMemberParentType is 'alias', then this object + will contain the value of the t11ZsAliasIndex object + of the Zone Alias to which this member belongs." + ::= { t11ZsZoneMemberEntry 2 } + +t11ZsZoneMemberIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this Zone + Member amongst all Zone Members in the Zone Set + database of a particular Fabric on a particular switch." + ::= { t11ZsZoneMemberEntry 3 } + +t11ZsZoneMemberFormat OBJECT-TYPE + SYNTAX T11ZsZoneMemberType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object identifies the format of the + Zone/Zone Alias member's identifier contained in + t11ZsZoneMemberID. + + This object cannot be modified while the corresponding + value of t11ZsZoneMemberRowStatus object is 'active'." + ::= { t11ZsZoneMemberEntry 4 } + + + +t11ZsZoneMemberID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object contains the Member Identifier of the + Zone or Alias. The interpretation of this object + depends on the value of the corresponding instance + of t11ZsZoneMemberFormat: + + - if t11ZsZoneMemberFormat is 'N_Port_Name', then + this object contains an N_Port_Name. + + - if t11ZsZoneMemberFormat is 'Domain_ID and physical + port', then this object contains a 4-octet value in + network byte order. The first octet is zero, + the second octet contains the Domain_ID, and the + last 2 octets contain the physical port number. + + - if t11ZsZoneMemberFormat is 'N_Port_ID', then this + object contains the 3-octet Nx_Port FC_ID. + + - if t11ZsZoneMemberFormat is 'Alias Name', then + this object contains the value of t11ZsAliasName + for some Alias in the same Zone Set database. + + - if t11ZsZoneMemberFormat is 'Node_Name', then + this object contains an 8-octet Node_Name. + + - if t11ZsZoneMemberFormat is 'F_Port_Name', then + this object contains an 8-octet F_Port_Name. + + - if t11ZsZoneMemberFormat is one of the 'Vendor + Specific' values, then this object contains a value + of 1 to 255 octets in a format defined by the relevant + vendor. + + This object cannot be modified while the corresponding + value of t11ZsZoneMemberRowStatus object is 'active'." + ::= { t11ZsZoneMemberEntry 5 } + +t11ZsZoneMemberRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row. + + + + + The corresponding instances of t11ZsZoneMemberID and + t11ZsZoneMemberFormat objects must be set before or + concurrently with setting this object to 'active'." + ::= { t11ZsZoneMemberEntry 6 } + +-- +-- The table of Zone Attribute Blocks +-- + +t11ZsAttribBlockTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsAttribBlockEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table gives information on all the Zone + Attributes in the Zone Set database of the Zone + Servers on each Fabric in one or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 7 } + +t11ZsAttribBlockEntry OBJECT-TYPE + SYNTAX T11ZsAttribBlockEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone Attribute + Block (of Zone Attributes) in the Zone Set database + of a particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex). + + An 'active' row in this table references a row in the + t11ZsAttribBlockTable. The agent must ensure that the + referenced rows exists with a status of 'active', either by + refusing to create new active rows in this table, or by + automatically deleting any rows in this table that + reference a deleted row. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + + + + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsAttribBlockIndex } + ::= { t11ZsAttribBlockTable 1 } + +T11ZsAttribBlockEntry ::= SEQUENCE { + t11ZsAttribBlockIndex Unsigned32, + t11ZsAttribBlockName T11ZoningName, + t11ZsAttribBlockRowStatus RowStatus +} + +t11ZsAttribBlockIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this Zone + Attribute within the Zone Set database of a particular + Fabric on a particular switch." + ::= { t11ZsAttribBlockEntry 1 } + +t11ZsAttribBlockName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of this Zone Attribute Block, which should + be unique within the Fabric." + ::= { t11ZsAttribBlockEntry 2 } + +t11ZsAttribBlockRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row." + ::= { t11ZsAttribBlockEntry 3 } + + + + + + + + + + + + + + +-- +-- The table of Zone Attributes +-- + +t11ZsAttribTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table gives information on the Zone Attributes + within the Zone Attribute Blocks in the Zone Set + database of the Zone Servers on each Fabric in one + or more switches. + + In Enhanced mode, changes to a database made via this + table are always made to the 'copy' database, but + values read from this table reflect the contents of + either the 'copy' database or the current (committed) + database as indicated by the corresponding value of + t11ZsServerReadFromDatabase." + ::= { t11ZsConfiguration 8 } + +t11ZsAttribEntry OBJECT-TYPE + SYNTAX T11ZsAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains information about a Zone + Attribute in a Zone Attribute Block (identified by + t11ZsAttribBlockIndex) in the Zone Set database of + a particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex). + + An entry in this table cannot be created prior to + its associated entry in the t11ZsAttribBlockTable. + + The StorageType of a row in this table is specified by + the instance of t11ZsServerDatabaseStorageType that is + INDEXed by the same values of fcmInstanceIndex, + fcmSwitchIndex, and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, + t11ZsAttribBlockIndex, t11ZsAttribIndex } + ::= { t11ZsAttribTable 1 } + +T11ZsAttribEntry ::= SEQUENCE { + + + + t11ZsAttribIndex Unsigned32, + t11ZsAttribType Unsigned32, + t11ZsAttribValue OCTET STRING, + t11ZsAttribRowStatus RowStatus +} + +t11ZsAttribIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this + Zone Attribute within its Zone Attribute Block in + the Zone Set database of a particular Fabric on a + particular switch." + ::= { t11ZsAttribEntry 1 } + +t11ZsAttribType OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of attribute: + + 0001 - Protocol + 0002 - Broadcast Zone + 0003 - Hard Zone + 00E0 (hex) - Vendor Specific." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.8, Table 249." + ::= { t11ZsAttribEntry 2 } + +t11ZsAttribValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (4..252)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of the attribute, formatted as specified + in FC-GS-5 for the type given by the corresponding + instance of t11ZsAttribType. + + Note that FC-GS-5 requires that the length of this + value is a multiple of 4 bytes." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.8." + ::= { t11ZsAttribEntry 3 } + + + +t11ZsAttribRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this conceptual row." + ::= { t11ZsAttribEntry 4 } + +-- +-- Activating a Zone Set +-- + +t11ZsActivateTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActivateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides a mechanism to allow a Zone Set + to be activated on a Fabric." + ::= { t11ZsConfiguration 9 } + +t11ZsActivateEntry OBJECT-TYPE + SYNTAX T11ZsActivateEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry reflects the state of the activation of a + Zone Set by a particular switch (identified by values + of fcmInstanceIndex and fcmSwitchIndex) on a particular + Fabric (identified by the value of + t11ZsServerFabricIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsActivateTable 1 } + +T11ZsActivateEntry ::= SEQUENCE { + t11ZsActivateRequest Unsigned32, + t11ZsActivateDeactivate INTEGER, + t11ZsActivateResult INTEGER, + t11ZsActivateFailCause SnmpAdminString, + t11ZsActivateFailDomainId FcDomainIdOrZero +} + +t11ZsActivateRequest OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + + "Setting this object to a value is a request for a + Zone Set to be activated on the Fabric that is + represented by this row. The Zone Set to be + activated is the one for which t11ZsSetIndex has + the same value. + + If a Zone Set is already active on a Fabric when a + request is made to activate a different one on that + Fabric, then the existing Zone Set is automatically + deactivated and the specified Zone Set is activated + in its place. + + The value of this object when read is always 0." + ::= { t11ZsActivateEntry 1 } + +t11ZsActivateDeactivate OBJECT-TYPE + SYNTAX INTEGER { + deactivate(1), + noop(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'deactivate' is a request + to deactivate the currently active Zone Set on + a Fabric. + + Note that the deactivation of the active Zone Set + allows all ports to communicate or no ports to + communicate, depending on the current Default Zone + behavior. + + No action is taken if this object is set to 'noop'. + When read, the value of this object is always 'noop'." + ::= { t11ZsActivateEntry 2 } + +t11ZsActivateResult OBJECT-TYPE + SYNTAX INTEGER { + activateSuccess(1), + activateFailure(2), + deactivateSuccess(3), + deactivateFailure(4), + inProgress(5), + none(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "This object indicates the outcome of the most recent + activation/deactivation using this entry. + + When the value of this object is 'inProgress', the + values of the corresponding instances of + t11ZsActivateRequest and t11ZsActivateDeactivate + cannot be modified. + + The value 'none' indicates activation/deactivation + has not been attempted since the last restart of + the management system." + ::= { t11ZsActivateEntry 3 } + +t11ZsActivateFailCause OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..64)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual message indicating the reason for the + most recent failure of a Zone Set activation or + deactivation, or the zero-length string if no + information is available (e.g., because the + corresponding instance of t11ZsActivateResult + has the value 'none'). + + When the corresponding instance of + t11ZsActivateResult is either 'activateFailure' + or 'deactivateFailure', the value of this object + indicates the reason for that failure." + ::= { t11ZsActivateEntry 4 } + +t11ZsActivateFailDomainId OBJECT-TYPE + SYNTAX FcDomainIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the failure cause (as indicated by + t11ZsSetFailCause) was specific to a particular + device, this object contains the Domain_ID of that + device. Otherwise, this object contains zero." + ::= { t11ZsActivateEntry 5 } + + + + + + + + + + +-- +-- t11ZsActiveTable +-- + +t11ZsActiveTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information on the currently + enforced/active Zone Set on each Fabric. + An active Zone Set cannot be modified. + This table will be empty when no Zone Set is + activated." + ::= { t11ZsConfiguration 10 } + +t11ZsActiveEntry OBJECT-TYPE + SYNTAX T11ZsActiveEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents an active Zone Set of a + particular Fabric (identified by the value of + t11ZsServerFabricIndex), according to a particular + switch (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsActiveTable 1 } + +T11ZsActiveEntry ::= SEQUENCE { + t11ZsActiveZoneSetName T11ZoningName, + t11ZsActiveActivateTime TimeStamp +} + +t11ZsActiveZoneSetName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this Zone Set on this Fabric." + ::= { t11ZsActiveEntry 1 } + +t11ZsActiveActivateTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of sysUpTime at which this entry was most + recently activated. If this row was activated prior to + the last re-initialization of the local network management + system, then this object will contain a zero value." + ::= { t11ZsActiveEntry 2 } + +-- +-- Zones in the Active/Enforced Zone Set +-- + +t11ZsActiveZoneTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActiveZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all the Zones that are present in + the active Zone Sets on all Fabrics." + ::= { t11ZsConfiguration 11 } + +t11ZsActiveZoneEntry OBJECT-TYPE + SYNTAX T11ZsActiveZoneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry represents a Zone in the active Zone Set + of a particular Fabric (identified by the value of + t11ZsServerFabricIndex), according to a particular + switch (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, t11ZsActiveZoneIndex } + ::= { t11ZsActiveZoneTable 1 } + +T11ZsActiveZoneEntry ::= SEQUENCE { + t11ZsActiveZoneIndex Unsigned32, + t11ZsActiveZoneName T11ZoningName, + t11ZsActiveZoneBroadcastZoning TruthValue, + t11ZsActiveZoneHardZoning TruthValue +} + +t11ZsActiveZoneIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this Zone + within the active Zone Set on a particular Fabric." + ::= { t11ZsActiveZoneEntry 1 } + + + +t11ZsActiveZoneName OBJECT-TYPE + SYNTAX T11ZoningName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of this Zone." + ::= { t11ZsActiveZoneEntry 2 } + +t11ZsActiveZoneBroadcastZoning OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether broadcast Zoning is + enabled on this Zone. If broadcast Zoning is enabled, + then broadcast frames generated by a member in this + Zone will be restricted to members in this Zone. + + This object is only instantiated in Enhanced mode." + ::= { t11ZsActiveZoneEntry 3 } + +t11ZsActiveZoneHardZoning OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether hard Zoning is + enabled on this Zone. + + This object is only instantiated in Enhanced mode." + ::= { t11ZsActiveZoneEntry 4 } + +-- +-- Zone Members in the Active/Enforced Zone Set +-- + +t11ZsActiveZoneMemberTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActiveZoneMemberEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains all members of all Zones + within the active Zone Set on any Fabric." + ::= { t11ZsConfiguration 12 } + +t11ZsActiveZoneMemberEntry OBJECT-TYPE + SYNTAX T11ZsActiveZoneMemberEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Each entry represents a member of a Zone in the active + Zone Set of a particular Fabric (identified by the value + t11ZsServerFabricIndex), according to a particular + switch (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, + t11ZsActiveZoneIndex, t11ZsActiveZoneMemberIndex } + ::= { t11ZsActiveZoneMemberTable 1 } + +T11ZsActiveZoneMemberEntry ::= SEQUENCE { + t11ZsActiveZoneMemberIndex Unsigned32, + t11ZsActiveZoneMemberFormat T11ZsZoneMemberType, + t11ZsActiveZoneMemberID OCTET STRING +} + +t11ZsActiveZoneMemberIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An index value that uniquely identifies this + member amongst the members of a particular Zone + in the active Zone Set on a particular Fabric." + ::= { t11ZsActiveZoneMemberEntry 1 } + +t11ZsActiveZoneMemberFormat OBJECT-TYPE + SYNTAX T11ZsZoneMemberType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the identifier format of the + corresponding instance of t11ZsActiveZoneMemberID." + ::= { t11ZsActiveZoneMemberEntry 2 } + +t11ZsActiveZoneMemberID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value of this object identifies the member + using the format specified in the corresponding + instance of t11ZsActiveZoneMemberFormat." + ::= { t11ZsActiveZoneMemberEntry 3 } + + + + + +-- +-- Zone Attributes in the Active/Enforced Zone Set +-- + +t11ZsActiveAttribTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsActiveAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about some of the + Attributes of the Zones within the active Zone Set + on each Fabric. + + This table contains all the types of attributes + that might apply zero, one, or more times to a Zone. + Attributes that apply once and only to a Zone are + specified in the t11ZsActiveZoneTable. + + This table will always be empty in Basic mode. + It will also be empty if there are no Zones in + any active Zone Set having any of the applicable + types of attributes." + ::= { t11ZsConfiguration 13 } + +t11ZsActiveAttribEntry OBJECT-TYPE + SYNTAX T11ZsActiveAttribEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains an Attribute of a particular + Zone in the active Zone Set of a particular Fabric + (identified by the value of t11ZsServerFabricIndex), + according to a particular switch (identified by + values of fcmInstanceIndex and fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex, + t11ZsActiveZoneIndex, t11ZsActiveAttribIndex } + ::= { t11ZsActiveAttribTable 1 } + +T11ZsActiveAttribEntry ::= SEQUENCE { + t11ZsActiveAttribIndex Unsigned32, + t11ZsActiveAttribType Unsigned32, + t11ZsActiveAttribValue OCTET STRING +} + +t11ZsActiveAttribIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An index value that uniquely identifies this + attribute amongst the other attributes for a + particular Zone in the active Zone Set on a + particular Fabric." + ::= { t11ZsActiveAttribEntry 1 } + +t11ZsActiveAttribType OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of attribute: + + 0001 - Protocol + 00E0 (hex) - Vendor Specific + + Note that type 2 (Hard) and type 3 (Broadcast) + do not need to be represented here, because they + are represented by t11ZsActiveZoneBroadcastZoning and + t11ZsActiveZoneHardZoning." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.8, Table 249." + ::= { t11ZsActiveAttribEntry 2 } + +t11ZsActiveAttribValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..252)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the attribute, formatted according to + its type as indicated by the corresponding instance + of t11ZsActiveAttribType. + + As specified in FC-GS-5, the length of an attribute + value is at least 4 bytes, and if necessary, the value + is appended with zero bytes so that the length is a + multiple of 4. For a Vendor-Specific attribute + value, the first 8 bytes contain the T10 Vendor ID + as described in FC-GS-5." + REFERENCE + "Fibre Channel - Generic Services-5 (FC-GS-5), + ANSI INCITS 427-2007, section 6.4.8.3.8." + ::= { t11ZsActiveAttribEntry 3 } + + + + + +-- +-- Zone Server Statistics +-- + +t11ZsStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of statistics maintained by Zone Servers." + ::= { t11ZsStatistics 1 } + +t11ZsStatsEntry OBJECT-TYPE + SYNTAX T11ZsStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A set of statistics for a Zone Server on a + particular Fabric (identified by the value of + t11ZsServerFabricIndex) on a particular switch + (identified by values of fcmInstanceIndex and + fcmSwitchIndex)." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsStatsTable 1 } + +T11ZsStatsEntry ::= SEQUENCE { + t11ZsOutMergeRequests Counter32, + t11ZsInMergeAccepts Counter32, + t11ZsInMergeRequests Counter32, + t11ZsOutMergeAccepts Counter32, + t11ZsOutChangeRequests Counter32, + t11ZsInChangeAccepts Counter32, + t11ZsInChangeRequests Counter32, + t11ZsOutChangeAccepts Counter32, + t11ZsInZsRequests Counter32, + t11ZsOutZsRejects Counter32 +} + +t11ZsOutMergeRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Merge Request Frames sent by this Zone + Server to other Zone Servers in the same Fabric. + + This counter has no discontinuities other than those + + + + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 1 } + +t11ZsInMergeAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Merge Accept Frames received by this Zone + Server from other Zone Servers in the same Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 2 } + +t11ZsInMergeRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Merge Request Frames received by this Zone + Server from other Zone Servers in the same Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 3 } + +t11ZsOutMergeAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Merge Accept Frames sent by this Zone + Server to other Zone Servers in the same Fabric. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 4 } + +t11ZsOutChangeRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of change requests sent (via the Fabric + Management Session Protocol) by this Zone Server to + other Zone Servers in the same Fabric. + + + + + This includes Acquire Change Authorization requests, Stage + Fabric Config Update requests, Update Fabric Config requests + and Release Change Authorization requests. It also includes + the corresponding types of requests defined by the Enhanced + Commit Service. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, sections 10.6 and 13." + ::= { t11ZsStatsEntry 5 } + +t11ZsInChangeAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_ACC messages received from other Zone + Servers in the same Fabric (according to the Fabric + Management Session Protocol) in response to change + requests by this Zone Server. + + This includes SW_ACC messages received in response to + Acquire Change Authorization requests, to Stage Fabric + Config Update requests, to Update Fabric Config requests, + and to Release Change Authorization requests. It also + includes responses to the corresponding types of requests + defined for the Enhanced Commit Service. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, sections 10.6 and 13." + ::= { t11ZsStatsEntry 6 } + +t11ZsInChangeRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of change requests received (via the Fabric + Management Session Protocol) by this Zone Server from + other Zone Servers in the same Fabric. + + This includes Acquire Change Authorization requests, Stage + Fabric Config Update requests, Update Fabric Config requests + + + + and Release Change Authorization requests. It also includes + the corresponding types of requests defined by the Enhanced + Commit Service. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, sections 10.6 and 13." + ::= { t11ZsStatsEntry 7 } + +t11ZsOutChangeAccepts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SW_ACC messages sent by this Zone Server + (according to the Fabric Management Session Protocol) in + response to change requests from other Zone Servers in + the same Fabric. + + This includes SW_ACC messages sent in response to + Acquire Change Authorization requests, to Stage Fabric + Config Update requests, to Update Fabric Config requests + and to Release Change Authorization requests. It also + includes responses to the corresponding types of requests + defined for the Enhanced Commit Service. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + REFERENCE + "Fibre Channel - Switch Fabric-4 (FC-SW-4), + ANSI INCITS 418-2006, April 2006, sections 10.6 and 13." + ::= { t11ZsStatsEntry 8 } + +t11ZsInZsRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Zone Server requests received by this + Zone Server on this Fabric, both those received in + Basic mode and in Enhanced mode. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 9 } + + + + +t11ZsOutZsRejects OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Zone Server requests rejected by this + Zone Server on this Fabric, both those rejected in + Basic mode and in Enhanced mode. + + This counter has no discontinuities other than those + that all Counter32s have when sysUpTime=0." + ::= { t11ZsStatsEntry 10 } + +-- +-- Notification Control Table +-- + +t11ZsNotifyControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF T11ZsNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of control information for notifications + generated due to Zone Server events." + ::= { t11ZsConfiguration 14 } + +t11ZsNotifyControlEntry OBJECT-TYPE + SYNTAX T11ZsNotifyControlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry contains notification control information + specific to a Zone Server for a particular Fabric + (identified by the value of t11ZsServerFabricIndex) + on a particular switch (identified by values of + fcmInstanceIndex and fcmSwitchIndex). + + The persistence across reboots of writable values in + a row of this table is specified by the instance of + t11ZsServerDatabaseStorageType that is INDEXed by + the same values of fcmInstanceIndex, fcmSwitchIndex, + and t11ZsServerFabricIndex." + INDEX { fcmInstanceIndex, fcmSwitchIndex, + t11ZsServerFabricIndex } + ::= { t11ZsNotifyControlTable 1 } + +T11ZsNotifyControlEntry ::= SEQUENCE { + t11ZsNotifyRequestRejectEnable TruthValue, + + + + t11ZsNotifyMergeFailureEnable TruthValue, + t11ZsNotifyMergeSuccessEnable TruthValue, + t11ZsNotifyDefZoneChangeEnable TruthValue, + t11ZsNotifyActivateEnable TruthValue, + t11ZsRejectCtCommandString OCTET STRING, + t11ZsRejectRequestSource FcNameIdOrZero, + t11ZsRejectReasonCode T11NsGs4RejectReasonCode, + t11ZsRejectReasonCodeExp T11ZsRejectReasonExplanation, + t11ZsRejectReasonVendorCode OCTET STRING +} + +t11ZsNotifyRequestRejectEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsRequestRejectNotify + notifications should be generated by the Zone Server + for this Fabric." + ::= { t11ZsNotifyControlEntry 1 } + +t11ZsNotifyMergeFailureEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsMergeFailureNotify + notifications should be generated by the Zone Server + for this Fabric." + ::= { t11ZsNotifyControlEntry 2 } + +t11ZsNotifyMergeSuccessEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsMergeSuccessNotify + notifications should be generated by the Zone Server + for this Fabric." + ::= { t11ZsNotifyControlEntry 3 } + +t11ZsNotifyDefZoneChangeEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsDefZoneChangeNotify + notifications should be generated by the Zone Server + + + + for this Fabric." + ::= { t11ZsNotifyControlEntry 4 } + +t11ZsNotifyActivateEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies whether t11ZsActivateNotify + notifications should be generated by the Zone Server + for this Fabric." + ::= { t11ZsNotifyControlEntry 5 } + +t11ZsRejectCtCommandString OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The binary content of the Zone Server request, + formatted as an octet string (in network byte order) + containing the Common Transport Information Unit + (CT_IU), as described in Table 2 of FC-GS-5 (including + the preamble), which was most recently rejected by the + Fabric Configuration Server for this Fabric. + + This object contains the zero-length string + if and when the CT-IU's content is unavailable. + + When the length of this object is 255 octets, it + contains the first 255 octets of the CT-IU (in + network byte order)." + ::= { t11ZsNotifyControlEntry 6 } + +t11ZsRejectRequestSource OBJECT-TYPE + SYNTAX FcNameIdOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The WWN that was the source of the CT_IU + contained in the corresponding instance of + t11ZsRejectCtCommandString." + ::= { t11ZsNotifyControlEntry 7 } + +t11ZsRejectReasonCode OBJECT-TYPE + SYNTAX T11NsGs4RejectReasonCode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The reason code corresponding to the most recent + rejection of a request by the Zone Server for + this Fabric." + ::= { t11ZsNotifyControlEntry 8 } + +t11ZsRejectReasonCodeExp OBJECT-TYPE + SYNTAX T11ZsRejectReasonExplanation + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of t11ZsRejectReasonCode is + 'Unable to perform command request', this + object contains the corresponding reason code + explanation." + ::= { t11ZsNotifyControlEntry 9 } + +t11ZsRejectReasonVendorCode OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When the value of t11ZsRejectReasonCode is + 'Vendor Specific Error', this object contains + the corresponding vendor-specific reason code." + ::= { t11ZsNotifyControlEntry 10 } + +t11ZsFabricIndex OBJECT-TYPE + SYNTAX Unsigned32 (0..4096) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains either a value of + T11FabricIndex to identify the Fabric on which + some occurrence has caused a notification to be + generated, or it has the value 4096 to indicate + all applicable Fabrics." + ::= { t11ZsConfiguration 15 } + + + + + + + + + + + + + + +-- Notifications + +t11ZsRequestRejectNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, + t11ZsRejectRequestSource, + t11ZsRejectCtCommandString, + t11ZsRejectReasonCode, + t11ZsRejectReasonCodeExp, + t11ZsRejectReasonVendorCode } + STATUS current + DESCRIPTION + "This notification is generated whenever a Zone Server + (indicated by the value of t11FamLocalSwitchWwn) rejects + a request. + + The value of t11ZsRejectCtCommandString indicates the + rejected request, and the values of t11ZsRejectReasonCode, + t11ZsRejectReasonCodeExp and t11ZsRejectReasonVendorCode + indicate the reason for the rejection. The value of + t11ZsRequestClient indicates the source of the request." + ::= { t11ZsMIBNotifications 1 } + +t11ZsMergeFailureNotify NOTIFICATION-TYPE + OBJECTS { ifIndex, t11ZsFabricIndex } + STATUS current + DESCRIPTION + "This notification indicates that a Zone merge + failure has occurred on the Fabric indicated by the + value of t11ZsFabricIndex, on the interface + indicated by the value of ifIndex. + + If multiple Virtual Fabrics are configured on an + interface, and all have a Zone merge failure + at the same time, then just one notification is + generated and t11ZsFabricIndex has the value 4096." + ::= { t11ZsMIBNotifications 2 } + +t11ZsMergeSuccessNotify NOTIFICATION-TYPE + OBJECTS { ifIndex, t11ZsFabricIndex } + STATUS current + DESCRIPTION + "This notification indicates that a successful Zone + merge has occurred on the Fabric indicated by the + value of t11ZsFabricIndex, on the interface + indicated by the value of ifIndex. + + If multiple Virtual Fabrics are configured on an + interface, and all have a successful Zone Merge + + + + at the same time, then just one notification is + generated and t11ZsFabricIndex has the value 4096." + ::= { t11ZsMIBNotifications 3 } + +t11ZsDefZoneChangeNotify NOTIFICATION-TYPE + OBJECTS { t11ZsServerDefaultZoneSetting } + STATUS current + DESCRIPTION + "This notification indicates that the + value of a Default Zone Setting has changed. + The value of t11ZsServerDefaultZoneSetting + contains the value after the change." + ::= { t11ZsMIBNotifications 4 } + +t11ZsActivateNotify NOTIFICATION-TYPE + OBJECTS { t11FamLocalSwitchWwn, t11ZsActivateResult } + STATUS current + DESCRIPTION + "This notification is generated whenever a switch + (indicated by the value of t11FamLocalSwitchWwn) + activates/deactivates a Zone Set on a Fabric. + The t11ZsActivateResult object denotes the outcome + of the activation/deactivation." + ::= { t11ZsMIBNotifications 5 } + +-- Conformance + +t11ZsMIBCompliances OBJECT IDENTIFIER ::= { t11ZsMIBConformance 1 } +t11ZsMIBGroups OBJECT IDENTIFIER ::= { t11ZsMIBConformance 2 } + +t11ZsMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for entities that + implement the Zone Server." + MODULE MANDATORY-GROUPS {t11ZsBasicGroup, + t11ZsNotificationControlGroup, + t11ZsNotificationGroup } + + GROUP t11ZsEnhancedModeGroup + DESCRIPTION + "This group is mandatory only for those systems + with Zone Servers that support Enhanced Mode." + + GROUP t11ZsActivateGroup + DESCRIPTION + "Only entities that provide write access for + activating a Zone Set support need to support + + + + this group." + + GROUP t11ZsStatisticsGroup + DESCRIPTION + "These counters, containing Zone Server statistics, + are mandatory only for those systems that count + such events." + + OBJECT t11ZsSetRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsSetZoneRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAliasRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneMemberRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribBlockRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribRowStatus + SYNTAX INTEGER { active(1) } + MIN-ACCESS read-only + DESCRIPTION + + + + "Write access is not required." + + OBJECT t11ZsServerDatabaseStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerDistribute + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerCommit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerReadFromDatabase + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerOperationMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerDefaultZoneSetting + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerMergeControlSetting + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsServerDefZoneBroadcast + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsSetName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneName + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneAttribBlock + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAliasName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneMemberFormat + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsZoneMemberID + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribBlockName + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsAttribValue + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsActivateRequest + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsActivateDeactivate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT t11ZsNotifyRequestRejectEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsNotifyMergeFailureEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsNotifyMergeSuccessEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsNotifyDefZoneChangeEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT t11ZsNotifyActivateEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { t11ZsMIBCompliances 1 } + +-- Units of Conformance + +t11ZsBasicGroup OBJECT-GROUP + OBJECTS { t11ZsServerCapabilityObject, + t11ZsServerDatabaseStorageType, + t11ZsServerDistribute, + t11ZsServerResult, + t11ZsServerReasonCode, + t11ZsServerReasonCodeExp, + t11ZsServerReasonVendorCode, + t11ZsServerLastChange, + t11ZsServerHardZoning, + t11ZsServerReadFromDatabase, + t11ZsServerOperationMode, + t11ZsSetName, + t11ZsSetRowStatus, + t11ZsZoneName, + t11ZsZoneAttribBlock, + t11ZsZoneRowStatus, + t11ZsSetZoneRowStatus, + t11ZsZoneMemberFormat, + + + + t11ZsZoneMemberID, + t11ZsZoneMemberRowStatus, + t11ZsActiveZoneSetName, + t11ZsActiveActivateTime, + t11ZsActiveZoneName, + t11ZsActiveZoneMemberFormat, + t11ZsActiveZoneMemberID + } + STATUS current + DESCRIPTION + "A collection of objects for displaying and updating + the Zone configuration of a Zone Server capable of + operating in Basic mode." + ::= { t11ZsMIBGroups 1 } + +t11ZsEnhancedModeGroup OBJECT-GROUP + OBJECTS { t11ZsServerCommit, + t11ZsServerChangeModeResult, + t11ZsServerDefaultZoneSetting, + t11ZsServerMergeControlSetting, + t11ZsServerDefZoneBroadcast, + t11ZsAliasName, + t11ZsAliasRowStatus, + t11ZsAttribBlockName, + t11ZsAttribBlockRowStatus, + t11ZsAttribType, + t11ZsAttribValue, + t11ZsAttribRowStatus, + t11ZsActiveZoneBroadcastZoning, + t11ZsActiveZoneHardZoning, + t11ZsActiveAttribType, + t11ZsActiveAttribValue + } + STATUS current + DESCRIPTION + "A collection of additional objects for displaying + and updating the Zone configuration of a Zone Server + capable of operating in Enhanced mode." + ::= { t11ZsMIBGroups 2 } + +t11ZsStatisticsGroup OBJECT-GROUP + OBJECTS { t11ZsOutMergeRequests, + t11ZsInMergeAccepts, + t11ZsInMergeRequests, + t11ZsOutMergeAccepts, + t11ZsOutChangeRequests, + t11ZsInChangeAccepts, + t11ZsInChangeRequests, + + + + t11ZsOutChangeAccepts, + t11ZsInZsRequests, + t11ZsOutZsRejects + } + STATUS current + DESCRIPTION + "A collection of objects for collecting Zone Server + statistics information." + ::= { t11ZsMIBGroups 3 } + +t11ZsNotificationControlGroup OBJECT-GROUP + OBJECTS { t11ZsNotifyRequestRejectEnable, + t11ZsNotifyMergeFailureEnable, + t11ZsNotifyMergeSuccessEnable, + t11ZsNotifyDefZoneChangeEnable, + t11ZsNotifyActivateEnable, + t11ZsRejectCtCommandString, + t11ZsRejectRequestSource, + t11ZsRejectReasonCode, + t11ZsRejectReasonCodeExp, + t11ZsRejectReasonVendorCode, + t11ZsFabricIndex + } + STATUS current + DESCRIPTION + "A collection of notification control and + notification information objects for monitoring + Zone Server request rejection and Zone merge + failures." + ::= { t11ZsMIBGroups 4 } + +t11ZsActivateGroup OBJECT-GROUP + OBJECTS { t11ZsActivateRequest, + t11ZsActivateDeactivate, + t11ZsActivateResult, + t11ZsActivateFailCause, + t11ZsActivateFailDomainId + } + STATUS current + DESCRIPTION + "A collection of objects that allow a Zone Set to + be activated via SNMP SetRequests and provide the + status and result of such an activation." + ::= { t11ZsMIBGroups 5 } + +t11ZsNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { t11ZsRequestRejectNotify, + t11ZsMergeFailureNotify, + + + + t11ZsMergeSuccessNotify, + t11ZsDefZoneChangeNotify, + t11ZsActivateNotify } + STATUS current + DESCRIPTION + "A collection of notification(s) for monitoring + Zone Server request rejection, Zone merge + failures and successes, and Default Zoning + behavioral changes." + ::= { t11ZsMIBGroups 6 } + +END diff --git a/mibs/ietf/T11-TC-MIB b/mibs/ietf/T11-TC-MIB new file mode 100644 index 0000000..375dac9 --- /dev/null +++ b/mibs/ietf/T11-TC-MIB @@ -0,0 +1,69 @@ +T11-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, Unsigned32, mib-2 + FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION FROM SNMPv2-TC; -- [RFC2579] + +t11TcMIB MODULE-IDENTITY + LAST-UPDATED "200603020000Z" + ORGANIZATION "T11" + CONTACT-INFO + " Claudio DeSanti + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134 USA + Phone: +1 408 853-9172 + EMail: cds@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA USA 95134 + Phone: +1 408-526-5260 + EMail: kzm@cisco.com" + DESCRIPTION + "This module defines textual conventions used in T11 MIBs. + + Copyright (C) The Internet Society (2006). This version + of this MIB module is part of RFC 4439; see the RFC + itself for full legal notices." + REVISION "200603020000Z" + DESCRIPTION + "Initial version of this MIB module, published as RFC 4439." + ::= { mib-2 136 } + +T11FabricIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A Fabric Index that is used as a unique + index value to identify a particular Fabric within + one (or more) physical infrastructures. + + In an environment that is conformant to FC-SW-3, where + + + + there is always exactly one Fabric in a single physical + infrastructure, the value of this Fabric Index will + always be 1. + + However, the current standard, FC-SW-4, defines + how multiple Fabrics, each with its own management + instrumentation, could operate within one (or more) + physical infrastructures. When such multiple Fabrics + are in use, this index value is used to uniquely + identify a particular Fabric within a physical + infrastructure. + + Note that the value of this textual convention has a + range of (0..4095) so as to be consistent with FC-SW-4, + which says that a 'VF_ID Bitmap' is 512 bytes long, with + the high-order bit representing VF_ID zero, and the + low-order bit representing 4095." + REFERENCE "Fibre Channel - Switch Fabric - 4 (FC-SW-4), + ANSI INCITS 418-2006, section 6.1.27.2.4." + SYNTAX Unsigned32 (0..4095) + +END diff --git a/mibs/ietf/TCP-ESTATS-MIB b/mibs/ietf/TCP-ESTATS-MIB new file mode 100644 index 0000000..16452f0 --- /dev/null +++ b/mibs/ietf/TCP-ESTATS-MIB @@ -0,0 +1,3108 @@ +TCP-ESTATS-MIB DEFINITIONS ::= BEGIN +IMPORTS + MODULE-IDENTITY, Counter32, Integer32, Unsigned32, + Gauge32, OBJECT-TYPE, mib-2, + NOTIFICATION-TYPE + FROM SNMPv2-SMI -- [RFC2578] + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + ZeroBasedCounter32 + FROM RMON2-MIB -- [RFC4502] + ZeroBasedCounter64 + FROM HCNUM-TC -- [RFC2856] + TEXTUAL-CONVENTION, + DateAndTime, TruthValue, TimeStamp + + + + FROM SNMPv2-TC -- [RFC2579] + tcpListenerEntry, tcpConnectionEntry + FROM TCP-MIB; -- [RFC4022] + +tcpEStatsMIB MODULE-IDENTITY + LAST-UPDATED "200705180000Z" -- 18 May 2007 + ORGANIZATION "IETF TSV Working Group" + CONTACT-INFO + "Matt Mathis + John Heffner + Web100 Project + Pittsburgh Supercomputing Center + 300 S. Craig St. + Pittsburgh, PA 15213 + Email: mathis@psc.edu, jheffner@psc.edu + + Rajiv Raghunarayan + Cisco Systems Inc. + San Jose, CA 95134 + Phone: 408 853 9612 + Email: raraghun@cisco.com + + Jon Saperia + 84 Kettell Plain Road + Stow, MA 01775 + Phone: 617-201-2655 + Email: saperia@jdscons.com " + DESCRIPTION + "Documentation of TCP Extended Performance Instrumentation + variables from the Web100 project. [Web100] + + All of the objects in this MIB MUST have the same + persistence properties as the underlying TCP implementation. + On a reboot, all zero-based counters MUST be cleared, all + dynamically created table rows MUST be deleted, and all + read-write objects MUST be restored to their default values. + + It is assumed that all TCP implementation have some + initialization code (if nothing else to set IP addresses) + that has the opportunity to adjust tcpEStatsConnTableLatency + and other read-write scalars controlling the creation of the + various tables, before establishing the first TCP + connection. Implementations MAY also choose to make these + control scalars persist across reboots. + + Copyright (C) The IETF Trust (2007). This version + of this MIB module is a part of RFC 4898; see the RFC + itself for full legal notices." + + + + REVISION "200705180000Z" -- 18 May 2007 + DESCRIPTION + "Initial version, published as RFC 4898." + ::= { mib-2 156 } + +tcpEStatsNotifications OBJECT IDENTIFIER ::= { tcpEStatsMIB 0 } +tcpEStatsMIBObjects OBJECT IDENTIFIER ::= { tcpEStatsMIB 1 } +tcpEStatsConformance OBJECT IDENTIFIER ::= { tcpEStatsMIB 2 } +tcpEStats OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 1 } +tcpEStatsControl OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 2 } +tcpEStatsScalar OBJECT IDENTIFIER ::= { tcpEStatsMIBObjects 3 } + +-- +-- Textual Conventions +-- + +TcpEStatsNegotiated ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Indicates if some optional TCP feature was negotiated. + + Enabled(1) indicates that the feature was successfully + negotiated on, which generally requires both hosts to agree + to use the feature. + + selfDisabled(2) indicates that the local host refused the + feature because it is not implemented, configured off, or + refused for some other reason, such as the lack of + resources. + + peerDisabled(3) indicates that the local host was willing + to negotiate the feature, but the remote host did not + do so." + SYNTAX INTEGER { + enabled(1), + selfDisabled(2), + peerDisabled(3) + } + +-- +-- TCP Extended statistics scalars +-- + +tcpEStatsListenerTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of sysUpTime at the time of the last + creation or deletion of an entry in the tcpListenerTable. + If the number of entries has been unchanged since the + last re-initialization of the local network management + subsystem, then this object contains a zero value." + ::= { tcpEStatsScalar 3 } + +-- ================================================================ +-- +-- The tcpEStatsControl Group +-- + +-- The scalar objects in this group are used to control the +-- activation and deactivation of the TCP Extended Statistics +-- tables and notifications in this module. +-- + +tcpEStatsControlPath OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the activation of the TCP Path Statistics + table. + + A value 'true' indicates that the TCP Path Statistics + table is active, while 'false' indicates that the + table is inactive." + DEFVAL { false } + ::= { tcpEStatsControl 1 } + +tcpEStatsControlStack OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the activation of the TCP Stack Statistics + table. + + A value 'true' indicates that the TCP Stack Statistics + table is active, while 'false' indicates that the + table is inactive." + DEFVAL { false } + ::= { tcpEStatsControl 2 } + +tcpEStatsControlApp OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "Controls the activation of the TCP Application + Statistics table. + + A value 'true' indicates that the TCP Application + Statistics table is active, while 'false' indicates + that the table is inactive." + DEFVAL { false } + ::= { tcpEStatsControl 3 } + +tcpEStatsControlTune OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the activation of the TCP Tuning table. + + A value 'true' indicates that the TCP Tuning + table is active, while 'false' indicates that the + table is inactive." + DEFVAL { false } + ::= { tcpEStatsControl 4 } + +tcpEStatsControlNotify OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Controls the generation of all notifications defined in + this MIB. + + A value 'true' indicates that the notifications + are active, while 'false' indicates that the + notifications are inactive." + DEFVAL { false } + ::= { tcpEStatsControl 5 } + +tcpEStatsConnTableLatency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies the number of seconds that the entity will + retain entries in the TCP connection tables, after the + connection first enters the closed state. The entity + SHOULD provide a configuration option to enable + + + + customization of this value. A value of 0 + results in entries being removed from the tables as soon as + the connection enters the closed state. The value of + this object pertains to the following tables: + tcpEStatsConnectIdTable + tcpEStatsPerfTable + tcpEStatsPathTable + tcpEStatsStackTable + tcpEStatsAppTable + tcpEStatsTuneTable" + DEFVAL { 0 } + ::= { tcpEStatsControl 6 } + +-- ================================================================ +-- +-- Listener Table +-- + +tcpEStatsListenerTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information about TCP Listeners, + in addition to the information maintained by the + tcpListenerTable RFC 4022." + ::= { tcpEStats 1 } + +tcpEStatsListenerEntry OBJECT-TYPE + SYNTAX TcpEStatsListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in the table contains information about + a specific TCP Listener." + AUGMENTS { tcpListenerEntry } + ::= { tcpEStatsListenerTable 1 } + +TcpEStatsListenerEntry ::= SEQUENCE { + tcpEStatsListenerStartTime TimeStamp, + tcpEStatsListenerSynRcvd ZeroBasedCounter32, + tcpEStatsListenerInitial ZeroBasedCounter32, + tcpEStatsListenerEstablished ZeroBasedCounter32, + tcpEStatsListenerAccepted ZeroBasedCounter32, + tcpEStatsListenerExceedBacklog ZeroBasedCounter32, + tcpEStatsListenerHCSynRcvd ZeroBasedCounter64, + tcpEStatsListenerHCInitial ZeroBasedCounter64, + tcpEStatsListenerHCEstablished ZeroBasedCounter64, + + + + tcpEStatsListenerHCAccepted ZeroBasedCounter64, + tcpEStatsListenerHCExceedBacklog ZeroBasedCounter64, + tcpEStatsListenerCurConns Gauge32, + tcpEStatsListenerMaxBacklog Unsigned32, + tcpEStatsListenerCurBacklog Gauge32, + tcpEStatsListenerCurEstabBacklog Gauge32 +} + +tcpEStatsListenerStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this listener was + established. If the current state was entered prior to + the last re-initialization of the local network management + subsystem, then this object contains a zero value." + ::= { tcpEStatsListenerEntry 1 } + +tcpEStatsListenerSynRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SYNs which have been received for this + listener. The total number of failed connections for + all reasons can be estimated to be tcpEStatsListenerSynRcvd + minus tcpEStatsListenerAccepted and + tcpEStatsListenerCurBacklog." + ::= { tcpEStatsListenerEntry 2 } + +tcpEStatsListenerInitial OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections for which the Listener + has allocated initial state and placed the + connection in the backlog. This may happen in the + SYN-RCVD or ESTABLISHED states, depending on the + implementation." + ::= { tcpEStatsListenerEntry 3 } + +tcpEStatsListenerEstablished OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of connections that have been established to + this endpoint (e.g., the number of first ACKs that have + been received for this listener)." + ::= { tcpEStatsListenerEntry 4 } + +tcpEStatsListenerAccepted OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections for which the Listener + has successfully issued an accept, removing the connection + from the backlog." + ::= { tcpEStatsListenerEntry 5 } + +tcpEStatsListenerExceedBacklog OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections dropped from the + backlog by this listener due to all reasons. This + includes all connections that are allocated initial + resources, but are not accepted for some reason." + ::= { tcpEStatsListenerEntry 6 } + +tcpEStatsListenerHCSynRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SYNs that have been received for this + listener on systems that can process (or reject) more + than 1 million connections per second. See + tcpEStatsListenerSynRcvd." + ::= { tcpEStatsListenerEntry 7 } + +tcpEStatsListenerHCInitial OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections for which the Listener + has allocated initial state and placed the connection + in the backlog on systems that can process (or reject) + more than 1 million connections per second. See + tcpEStatsListenerInitial." + ::= { tcpEStatsListenerEntry 8 } + + + +tcpEStatsListenerHCEstablished OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of connections that have been established to + this endpoint on systems that can process (or reject) more + than 1 million connections per second. See + tcpEStatsListenerEstablished." + ::= { tcpEStatsListenerEntry 9 } + +tcpEStatsListenerHCAccepted OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections for which the Listener + has successfully issued an accept, removing the connection + from the backlog on systems that can process (or reject) + more than 1 million connections per second. See + tcpEStatsListenerAccepted." + ::= { tcpEStatsListenerEntry 10 } + +tcpEStatsListenerHCExceedBacklog OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of connections dropped from the + backlog by this listener due to all reasons on + systems that can process (or reject) more than + 1 million connections per second. See + tcpEStatsListenerExceedBacklog." + ::= { tcpEStatsListenerEntry 11 } + +tcpEStatsListenerCurConns OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of connections in the ESTABLISHED + state, which have also been accepted. It excludes + connections that have been established but not accepted + because they are still subject to being discarded to + shed load without explicit action by either endpoint." + ::= { tcpEStatsListenerEntry 12 } + +tcpEStatsListenerMaxBacklog OBJECT-TYPE + + + + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of connections allowed in the + backlog at one time." + ::= { tcpEStatsListenerEntry 13 } + +tcpEStatsListenerCurBacklog OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of connections that are in the backlog. + This gauge includes connections in ESTABLISHED or + SYN-RECEIVED states for which the Listener has not yet + issued an accept. + + If this listener is using some technique to implicitly + represent the SYN-RECEIVED states (e.g., by + cryptographically encoding the state information in the + initial sequence number, ISS), it MAY elect to exclude + connections in the SYN-RECEIVED state from the backlog." + ::= { tcpEStatsListenerEntry 14 } + +tcpEStatsListenerCurEstabBacklog OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of connections in the backlog that are + in the ESTABLISHED state, but for which the Listener has + not yet issued an accept." + ::= { tcpEStatsListenerEntry 15 } + + +-- ================================================================ +-- +-- TCP Connection ID Table +-- + +tcpEStatsConnectIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsConnectIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table maps information that uniquely identifies + each active TCP connection to the connection ID used by + + + + other tables in this MIB Module. It is an extension of + tcpConnectionTable in RFC 4022. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 2 } + +tcpEStatsConnectIdEntry OBJECT-TYPE + SYNTAX TcpEStatsConnectIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table maps a TCP connection + 4-tuple to a connection index." + AUGMENTS { tcpConnectionEntry } + ::= { tcpEStatsConnectIdTable 1 } + +TcpEStatsConnectIdEntry ::= SEQUENCE { + tcpEStatsConnectIndex Unsigned32 +} + +tcpEStatsConnectIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique integer value assigned to each TCP Connection + entry. + + The RECOMMENDED algorithm is to begin at 1 and increase to + some implementation-specific maximum value and then start + again at 1 skipping values already in use." + ::= { tcpEStatsConnectIdEntry 1 } + +-- ================================================================ +-- +-- Basic TCP Performance Statistics +-- + +tcpEStatsPerfTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "This table contains objects that are useful for + + + + measuring TCP performance and first line problem + diagnosis. Most objects in this table directly expose + some TCP state variable or are easily implemented as + simple functions (e.g., the maximum value) of TCP + state variables. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 3 } + +tcpEStatsPerfEntry OBJECT-TYPE + SYNTAX TcpEStatsPerfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table has information about the + characteristics of each active and recently closed TCP + connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsPerfTable 1 } + +TcpEStatsPerfEntry ::= SEQUENCE { + + tcpEStatsPerfSegsOut ZeroBasedCounter32, + tcpEStatsPerfDataSegsOut ZeroBasedCounter32, + tcpEStatsPerfDataOctetsOut ZeroBasedCounter32, + tcpEStatsPerfHCDataOctetsOut ZeroBasedCounter64, + tcpEStatsPerfSegsRetrans ZeroBasedCounter32, + tcpEStatsPerfOctetsRetrans ZeroBasedCounter32, + tcpEStatsPerfSegsIn ZeroBasedCounter32, + tcpEStatsPerfDataSegsIn ZeroBasedCounter32, + tcpEStatsPerfDataOctetsIn ZeroBasedCounter32, + tcpEStatsPerfHCDataOctetsIn ZeroBasedCounter64, + tcpEStatsPerfElapsedSecs ZeroBasedCounter32, + tcpEStatsPerfElapsedMicroSecs ZeroBasedCounter32, + tcpEStatsPerfStartTimeStamp DateAndTime, + tcpEStatsPerfCurMSS Gauge32, + tcpEStatsPerfPipeSize Gauge32, + tcpEStatsPerfMaxPipeSize Gauge32, + tcpEStatsPerfSmoothedRTT Gauge32, + tcpEStatsPerfCurRTO Gauge32, + tcpEStatsPerfCongSignals ZeroBasedCounter32, + tcpEStatsPerfCurCwnd Gauge32, + tcpEStatsPerfCurSsthresh Gauge32, + tcpEStatsPerfTimeouts ZeroBasedCounter32, + tcpEStatsPerfCurRwinSent Gauge32, + + + + tcpEStatsPerfMaxRwinSent Gauge32, + tcpEStatsPerfZeroRwinSent ZeroBasedCounter32, + tcpEStatsPerfCurRwinRcvd Gauge32, + tcpEStatsPerfMaxRwinRcvd Gauge32, + tcpEStatsPerfZeroRwinRcvd ZeroBasedCounter32, + tcpEStatsPerfSndLimTransRwin ZeroBasedCounter32, + tcpEStatsPerfSndLimTransCwnd ZeroBasedCounter32, + tcpEStatsPerfSndLimTransSnd ZeroBasedCounter32, + tcpEStatsPerfSndLimTimeRwin ZeroBasedCounter32, + tcpEStatsPerfSndLimTimeCwnd ZeroBasedCounter32, + tcpEStatsPerfSndLimTimeSnd ZeroBasedCounter32 + } + +-- +-- The following objects provide statistics on aggregate +-- segments and data sent on a connection. These provide a +-- direct measure of the Internet capacity consumed by a +-- connection. +-- + +tcpEStatsPerfSegsOut OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments sent." + ::= { tcpEStatsPerfEntry 1 } + +tcpEStatsPerfDataSegsOut OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of segments sent containing a positive length + data segment." + ::= { tcpEStatsPerfEntry 2 } + +tcpEStatsPerfDataOctetsOut OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of data contained in transmitted + segments, including retransmitted data. Note that this does + not include TCP headers." + ::= { tcpEStatsPerfEntry 3 } + + + + +tcpEStatsPerfHCDataOctetsOut OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets of data contained in transmitted + segments, including retransmitted data, on systems that can + transmit more than 10 million bits per second. Note that + this does not include TCP headers." + ::= { tcpEStatsPerfEntry 4 } + +tcpEStatsPerfSegsRetrans OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of segments transmitted containing at least some + retransmitted data." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 5 } + +tcpEStatsPerfOctetsRetrans OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets retransmitted." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 6 } + +tcpEStatsPerfSegsIn OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments received." + ::= { tcpEStatsPerfEntry 7 } + +tcpEStatsPerfDataSegsIn OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of segments received containing a positive + + + + length data segment." + ::= { tcpEStatsPerfEntry 8 } + +tcpEStatsPerfDataOctetsIn OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in received data segments, + including retransmitted data. Note that this does not + include TCP headers." + ::= { tcpEStatsPerfEntry 9 } + +tcpEStatsPerfHCDataOctetsIn OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets contained in received data segments, + including retransmitted data, on systems that can receive + more than 10 million bits per second. Note that this does + not include TCP headers." + ::= { tcpEStatsPerfEntry 10 } + +tcpEStatsPerfElapsedSecs OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The seconds part of the time elapsed between + tcpEStatsPerfStartTimeStamp and the most recent protocol + event (segment sent or received)." + ::= { tcpEStatsPerfEntry 11 } + +tcpEStatsPerfElapsedMicroSecs OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The micro-second part of time elapsed between + tcpEStatsPerfStartTimeStamp to the most recent protocol + event (segment sent or received). This may be updated in + whatever time granularity is the system supports." + ::= { tcpEStatsPerfEntry 12 } + + + +tcpEStatsPerfStartTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Time at which this row was created and all + ZeroBasedCounters in the row were initialized to zero." + ::= { tcpEStatsPerfEntry 13 } + +-- +-- The following objects can be used to fit minimal +-- performance models to the TCP data rate. +-- + +tcpEStatsPerfCurMSS OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current maximum segment size (MSS), in octets." + REFERENCE + "RFC 1122, Requirements for Internet Hosts - Communication + Layers" + ::= { tcpEStatsPerfEntry 14 } + +tcpEStatsPerfPipeSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The TCP senders current estimate of the number of + unacknowledged data octets in the network. + + While not in recovery (e.g., while the receiver is not + reporting missing data to the sender), this is precisely the + same as 'Flight size' as defined in RFC 2581, which can be + computed as SND.NXT minus SND.UNA. [RFC793] + + During recovery, the TCP sender has incomplete information + about the state of the network (e.g., which segments are + lost vs reordered, especially if the return path is also + dropping TCP acknowledgments). Current TCP standards do not + mandate any specific algorithm for estimating the number of + unacknowledged data octets in the network. + + RFC 3517 describes a conservative algorithm to use SACK + + + + information to estimate the number of unacknowledged data + octets in the network. tcpEStatsPerfPipeSize object SHOULD + be the same as 'pipe' as defined in RFC 3517 if it is + implemented. (Note that while not in recovery the pipe + algorithm yields the same values as flight size). + + If RFC 3517 is not implemented, the data octets in flight + SHOULD be estimated as SND.NXT minus SND.UNA adjusted by + some measure of the data that has left the network and + retransmitted data. For example, with Reno or NewReno style + TCP, the number of duplicate acknowledgment is used to + count the number of segments that have left the network. + That is, + PipeSize=SND.NXT-SND.UNA+(retransmits-dupacks)*CurMSS" + REFERENCE + "RFC 793, RFC 2581, RFC 3517" + ::= { tcpEStatsPerfEntry 15 } + +tcpEStatsPerfMaxPipeSize OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of tcpEStatsPerfPipeSize, for this + connection." + REFERENCE + "RFC 793, RFC 2581, RFC 3517" + ::= { tcpEStatsPerfEntry 16 } + +tcpEStatsPerfSmoothedRTT OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The smoothed round trip time used in calculation of the + RTO. See SRTT in [RFC2988]." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPerfEntry 17 } + +tcpEStatsPerfCurRTO OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The current value of the retransmit timer RTO." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPerfEntry 18 } + +tcpEStatsPerfCongSignals OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of multiplicative downward congestion window + adjustments due to all forms of congestion signals, + including Fast Retransmit, Explicit Congestion Notification + (ECN), and timeouts. This object summarizes all events that + invoke the MD portion of Additive Increase Multiplicative + Decrease (AIMD) congestion control, and as such is the best + indicator of how a cwnd is being affected by congestion. + + Note that retransmission timeouts multiplicatively reduce + the window implicitly by setting ssthresh, and SHOULD be + included in tcpEStatsPerfCongSignals. In order to minimize + spurious congestion indications due to out-of-order + segments, tcpEStatsPerfCongSignals SHOULD be incremented in + association with the Fast Retransmit algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPerfEntry 19 } + +tcpEStatsPerfCurCwnd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current congestion window, in octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPerfEntry 20 } + +tcpEStatsPerfCurSsthresh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current slow start threshold in octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + + + + ::= { tcpEStatsPerfEntry 21 } + +tcpEStatsPerfTimeouts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the retransmit timeout has expired when + the RTO backoff multiplier is equal to one." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPerfEntry 22 } + +-- +-- The following objects instrument receiver window updates +-- sent by the local receiver to the remote sender. These can +-- be used to determine if the local receiver is exerting flow +-- control back pressure on the remote sender. +-- + +tcpEStatsPerfCurRwinSent OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent window advertisement sent, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 23 } + +tcpEStatsPerfMaxRwinSent OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum window advertisement sent, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 24 } + +tcpEStatsPerfZeroRwinSent OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of acknowledgments sent announcing a zero + + + + receive window, when the previously announced window was + not zero." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 25 } + +-- +-- The following objects instrument receiver window updates +-- from the far end-system to determine if the remote receiver +-- has sufficient buffer space or is exerting flow-control +-- back pressure on the local sender. +-- + +tcpEStatsPerfCurRwinRcvd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent window advertisement received, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 26 } + +tcpEStatsPerfMaxRwinRcvd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum window advertisement received, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 27 } + +tcpEStatsPerfZeroRwinRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of acknowledgments received announcing a zero + receive window, when the previously announced window was + not zero." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 28 } + +-- + + + +-- The following optional objects can be used to quickly +-- identify which subsystems are limiting TCP performance. +-- There are three parallel pairs of instruments that measure +-- the extent to which TCP performance is limited by the +-- announced receiver window (indicating a receiver +-- bottleneck), the current congestion window or +-- retransmission timeout (indicating a path bottleneck) and +-- all others events (indicating a sender bottleneck). +-- +-- These instruments SHOULD be updated every time the TCP +-- output routine stops sending data. The elapsed time since +-- the previous stop is accumulated into the appropriate +-- object as determined by the previous stop reason (e.g., +-- stop state). The current stop reason determines which timer +-- will be updated the next time TCP output stops. +-- +-- Since there is no explicit stop at the beginning of a +-- timeout, it is necessary to retroactively reclassify the +-- previous stop as 'Congestion Limited'. +-- + +tcpEStatsPerfSndLimTransRwin OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions into the 'Receiver Limited' state + from either the 'Congestion Limited' or 'Sender Limited' + states. This state is entered whenever TCP transmission + stops because the sender has filled the announced receiver + window, i.e., when SND.NXT has advanced to SND.UNA + + SND.WND - 1 as described in RFC 793." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsPerfEntry 31 } + +tcpEStatsPerfSndLimTransCwnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions into the 'Congestion Limited' + state from either the 'Receiver Limited' or 'Sender + Limited' states. This state is entered whenever TCP + transmission stops because the sender has reached some + limit defined by congestion control (e.g., cwnd) or other + algorithms (retransmission timeouts) designed to control + network traffic. See the definition of 'CONGESTION WINDOW' + + + + in RFC 2581." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPerfEntry 32 } + +tcpEStatsPerfSndLimTransSnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of transitions into the 'Sender Limited' state + from either the 'Receiver Limited' or 'Congestion Limited' + states. This state is entered whenever TCP transmission + stops due to some sender limit such as running out of + application data or other resources and the Karn algorithm. + When TCP stops sending data for any reason, which cannot be + classified as Receiver Limited or Congestion Limited, it + MUST be treated as Sender Limited." + ::= { tcpEStatsPerfEntry 33 } + +tcpEStatsPerfSndLimTimeRwin OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative time spent in the 'Receiver Limited' state. + See tcpEStatsPerfSndLimTransRwin." + ::= { tcpEStatsPerfEntry 34 } + +tcpEStatsPerfSndLimTimeCwnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The cumulative time spent in the 'Congestion Limited' + state. See tcpEStatsPerfSndLimTransCwnd. When there is a + retransmission timeout, it SHOULD be counted in + tcpEStatsPerfSndLimTimeCwnd (and not the cumulative time + for some other state.)" + ::= { tcpEStatsPerfEntry 35 } + +tcpEStatsPerfSndLimTimeSnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The cumulative time spent in the 'Sender Limited' state. + See tcpEStatsPerfSndLimTransSnd." + ::= { tcpEStatsPerfEntry 36 } + +-- ================================================================ +-- +-- Statistics for diagnosing path problems +-- + +tcpEStatsPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that can be used to infer + detailed behavior of the Internet path, such as the + extent that there is reordering, ECN bits, and if + RTT fluctuations are correlated to losses. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 4 } + +tcpEStatsPathEntry OBJECT-TYPE + SYNTAX TcpEStatsPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table has information about the + characteristics of each active and recently closed TCP + connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsPathTable 1 } + +TcpEStatsPathEntry ::= SEQUENCE { + + tcpEStatsPathRetranThresh Gauge32, + tcpEStatsPathNonRecovDAEpisodes ZeroBasedCounter32, + tcpEStatsPathSumOctetsReordered ZeroBasedCounter32, + tcpEStatsPathNonRecovDA ZeroBasedCounter32, + tcpEStatsPathSampleRTT Gauge32, + tcpEStatsPathRTTVar Gauge32, + tcpEStatsPathMaxRTT Gauge32, + tcpEStatsPathMinRTT Gauge32, + tcpEStatsPathSumRTT ZeroBasedCounter32, + + + + tcpEStatsPathHCSumRTT ZeroBasedCounter64, + tcpEStatsPathCountRTT ZeroBasedCounter32, + tcpEStatsPathMaxRTO Gauge32, + tcpEStatsPathMinRTO Gauge32, + tcpEStatsPathIpTtl Unsigned32, + tcpEStatsPathIpTosIn OCTET STRING, + tcpEStatsPathIpTosOut OCTET STRING, + tcpEStatsPathPreCongSumCwnd ZeroBasedCounter32, + tcpEStatsPathPreCongSumRTT ZeroBasedCounter32, + tcpEStatsPathPostCongSumRTT ZeroBasedCounter32, + tcpEStatsPathPostCongCountRTT ZeroBasedCounter32, + tcpEStatsPathECNsignals ZeroBasedCounter32, + tcpEStatsPathDupAckEpisodes ZeroBasedCounter32, + tcpEStatsPathRcvRTT Gauge32, + tcpEStatsPathDupAcksOut ZeroBasedCounter32, + tcpEStatsPathCERcvd ZeroBasedCounter32, + tcpEStatsPathECESent ZeroBasedCounter32 + } + +-- +-- The following optional objects can be used to infer segment +-- reordering on the path from the local sender to the remote +-- receiver. +-- + +tcpEStatsPathRetranThresh OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate acknowledgments required to trigger + Fast Retransmit. Note that although this is constant in + traditional Reno TCP implementations, it is adaptive in + many newer TCPs." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 1 } + +tcpEStatsPathNonRecovDAEpisodes OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate acknowledgment episodes that did + not trigger a Fast Retransmit because ACK advanced prior to + the number of duplicate acknowledgments reaching + RetranThresh. + + + + + In many implementations this is the number of times the + 'dupacks' counter is set to zero when it is non-zero but + less than RetranThresh. + + Note that the change in tcpEStatsPathNonRecovDAEpisodes + divided by the change in tcpEStatsPerfDataSegsOut is an + estimate of the frequency of data reordering on the forward + path over some interval." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 2 } + +tcpEStatsPathSumOctetsReordered OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of the amounts SND.UNA advances on the + acknowledgment which ends a dup-ack episode without a + retransmission. + + Note the change in tcpEStatsPathSumOctetsReordered divided + by the change in tcpEStatsPathNonRecovDAEpisodes is an + estimates of the average reordering distance, over some + interval." + ::= { tcpEStatsPathEntry 3 } + +tcpEStatsPathNonRecovDA OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Duplicate acks (or SACKS) that did not trigger a Fast + Retransmit because ACK advanced prior to the number of + duplicate acknowledgments reaching RetranThresh. + + In many implementations, this is the sum of the 'dupacks' + counter, just before it is set to zero because ACK advanced + without a Fast Retransmit. + + Note that the change in tcpEStatsPathNonRecovDA divided by + the change in tcpEStatsPathNonRecovDAEpisodes is an + estimate of the average reordering distance in segments + over some interval." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 4 } + + + +-- +-- The following optional objects instrument the round trip +-- time estimator and the retransmission timeout timer. +-- + +tcpEStatsPathSampleRTT OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The most recent raw round trip time measurement used in + calculation of the RTO." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 11 } + +tcpEStatsPathRTTVar OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The round trip time variation used in calculation of the + RTO. See RTTVAR in [RFC2988]." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 12 } + +tcpEStatsPathMaxRTT OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum sampled round trip time." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 13 } + +tcpEStatsPathMinRTT OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum sampled round trip time." + REFERENCE + + + + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 14 } + +tcpEStatsPathSumRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of all sampled round trip times. + + Note that the change in tcpEStatsPathSumRTT divided by the + change in tcpEStatsPathCountRTT is the mean RTT, uniformly + averaged over an enter interval." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 15 } + +tcpEStatsPathHCSumRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of all sampled round trip times, on all systems + that implement multiple concurrent RTT measurements. + + Note that the change in tcpEStatsPathHCSumRTT divided by + the change in tcpEStatsPathCountRTT is the mean RTT, + uniformly averaged over an enter interval." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 16 } + +tcpEStatsPathCountRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of round trip time samples included in + tcpEStatsPathSumRTT and tcpEStatsPathHCSumRTT." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 17 } + +tcpEStatsPathMaxRTO OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of the retransmit timer RTO." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 18 } + +tcpEStatsPathMinRTO OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum value of the retransmit timer RTO." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsPathEntry 19 } + +-- +-- The following optional objects provide information about +-- how TCP is using the IP layer. +-- + +tcpEStatsPathIpTtl OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the TTL field carried in the most recently + received IP header. This is sometimes useful to detect + changing or unstable routes." + REFERENCE + "RFC 791, Internet Protocol" + ::= { tcpEStatsPathEntry 20 } + +tcpEStatsPathIpTosIn OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the IPv4 Type of Service octet, or the IPv6 + traffic class octet, carried in the most recently received + IP header. + + This is useful to diagnose interactions between TCP and any + IP layer packet scheduling and delivery policy, which might + be in effect to implement Diffserv." + + + + REFERENCE + "RFC 3260, New Terminology and Clarifications for Diffserv" + ::= { tcpEStatsPathEntry 21 } + +tcpEStatsPathIpTosOut OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the IPv4 Type Of Service octet, or the IPv6 + traffic class octet, carried in the most recently + transmitted IP header. + + This is useful to diagnose interactions between TCP and any + IP layer packet scheduling and delivery policy, which might + be in effect to implement Diffserv." + REFERENCE + "RFC 3260, New Terminology and Clarifications for Diffserv" + ::= { tcpEStatsPathEntry 22 } + +-- +-- The following optional objects characterize the congestion +-- feedback signals by collecting statistics on how the +-- congestion events are correlated to losses, changes in RTT +-- and other protocol events. +-- + +tcpEStatsPathPreCongSumCwnd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of the values of the congestion window, in octets, + captured each time a congestion signal is received. This + MUST be updated each time tcpEStatsPerfCongSignals is + incremented, such that the change in + tcpEStatsPathPreCongSumCwnd divided by the change in + tcpEStatsPerfCongSignals is the average window (over some + interval) just prior to a congestion signal." + ::= { tcpEStatsPathEntry 23 } + +tcpEStatsPathPreCongSumRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Sum of the last sample of the RTT (tcpEStatsPathSampleRTT) + prior to the received congestion signals. This MUST be + updated each time tcpEStatsPerfCongSignals is incremented, + such that the change in tcpEStatsPathPreCongSumRTT divided by + the change in tcpEStatsPerfCongSignals is the average RTT + (over some interval) just prior to a congestion signal." + ::= { tcpEStatsPathEntry 24 } + +tcpEStatsPathPostCongSumRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Sum of the first sample of the RTT (tcpEStatsPathSampleRTT) + following each congestion signal. Such that the change in + tcpEStatsPathPostCongSumRTT divided by the change in + tcpEStatsPathPostCongCountRTT is the average RTT (over some + interval) just after a congestion signal." + ::= { tcpEStatsPathEntry 25 } + +tcpEStatsPathPostCongCountRTT OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of RTT samples included in + tcpEStatsPathPostCongSumRTT such that the change in + tcpEStatsPathPostCongSumRTT divided by the change in + tcpEStatsPathPostCongCountRTT is the average RTT (over some + interval) just after a congestion signal." + ::= { tcpEStatsPathEntry 26 } + +-- +-- The following optional objects can be used to detect other +-- types of non-loss congestion signals such as source quench +-- or ECN. +-- + +tcpEStatsPathECNsignals OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of congestion signals delivered to the TCP + sender via explicit congestion notification (ECN). This is + typically the number of segments bearing Echo Congestion + + + + Experienced (ECE) bits, but + should also include segments failing the ECN nonce check or + other explicit congestion signals." + REFERENCE + "RFC 3168, The Addition of Explicit Congestion Notification + (ECN) to IP" + ::= { tcpEStatsPathEntry 27 } + +-- +-- The following optional objects are receiver side +-- instruments of the path from the sender to the receiver. In +-- general, the receiver has less information about the state +-- of the path because the receiver does not have a robust +-- mechanism to infer the sender's actions. +-- + +tcpEStatsPathDupAckEpisodes OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Duplicate Acks Sent when prior Ack was not + duplicate. This is the number of times that a contiguous + series of duplicate acknowledgments have been sent. + + This is an indication of the number of data segments lost + or reordered on the path from the remote TCP endpoint to + the near TCP endpoint." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 28 } + +tcpEStatsPathRcvRTT OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The receiver's estimate of the Path RTT. + + Adaptive receiver window algorithms depend on the receiver + to having a good estimate of the path RTT." + ::= { tcpEStatsPathEntry 29 } + +tcpEStatsPathDupAcksOut OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of duplicate ACKs sent. The ratio of the change + in tcpEStatsPathDupAcksOut to the change in + tcpEStatsPathDupAckEpisodes is an indication of reorder or + recovery distance over some interval." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsPathEntry 30 } + +tcpEStatsPathCERcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of segments received with IP headers bearing + Congestion Experienced (CE) markings." + REFERENCE + "RFC 3168, The Addition of Explicit Congestion Notification + (ECN) to IP" + ::= { tcpEStatsPathEntry 31 } + +tcpEStatsPathECESent OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of times the Echo Congestion Experienced (ECE) bit + in the TCP header has been set (transitioned from 0 to 1), + due to a Congestion Experienced (CE) marking on an IP + header. Note that ECE can be set and reset only once per + RTT, while CE can be set on many segments per RTT." + REFERENCE + "RFC 3168, The Addition of Explicit Congestion Notification + (ECN) to IP" + ::= { tcpEStatsPathEntry 32 } + +-- ================================================================ +-- +-- Statistics for diagnosing stack algorithms +-- + +tcpEStatsStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that are most useful for + determining how well some of the TCP control + algorithms are coping with this particular + + + + path. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 5 } + +tcpEStatsStackEntry OBJECT-TYPE + SYNTAX TcpEStatsStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table has information about the + characteristics of each active and recently closed TCP + connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsStackTable 1 } + +TcpEStatsStackEntry ::= SEQUENCE { + + tcpEStatsStackActiveOpen TruthValue, + tcpEStatsStackMSSSent Unsigned32, + tcpEStatsStackMSSRcvd Unsigned32, + tcpEStatsStackWinScaleSent Integer32, + tcpEStatsStackWinScaleRcvd Integer32, + tcpEStatsStackTimeStamps TcpEStatsNegotiated, + tcpEStatsStackECN TcpEStatsNegotiated, + tcpEStatsStackWillSendSACK TcpEStatsNegotiated, + tcpEStatsStackWillUseSACK TcpEStatsNegotiated, + tcpEStatsStackState INTEGER, + tcpEStatsStackNagle TruthValue, + tcpEStatsStackMaxSsCwnd Gauge32, + tcpEStatsStackMaxCaCwnd Gauge32, + tcpEStatsStackMaxSsthresh Gauge32, + tcpEStatsStackMinSsthresh Gauge32, + tcpEStatsStackInRecovery INTEGER, + tcpEStatsStackDupAcksIn ZeroBasedCounter32, + tcpEStatsStackSpuriousFrDetected ZeroBasedCounter32, + tcpEStatsStackSpuriousRtoDetected ZeroBasedCounter32, + tcpEStatsStackSoftErrors ZeroBasedCounter32, + tcpEStatsStackSoftErrorReason INTEGER, + tcpEStatsStackSlowStart ZeroBasedCounter32, + tcpEStatsStackCongAvoid ZeroBasedCounter32, + tcpEStatsStackOtherReductions ZeroBasedCounter32, + tcpEStatsStackCongOverCount ZeroBasedCounter32, + tcpEStatsStackFastRetran ZeroBasedCounter32, + tcpEStatsStackSubsequentTimeouts ZeroBasedCounter32, + + + + tcpEStatsStackCurTimeoutCount Gauge32, + tcpEStatsStackAbruptTimeouts ZeroBasedCounter32, + tcpEStatsStackSACKsRcvd ZeroBasedCounter32, + tcpEStatsStackSACKBlocksRcvd ZeroBasedCounter32, + tcpEStatsStackSendStall ZeroBasedCounter32, + tcpEStatsStackDSACKDups ZeroBasedCounter32, + tcpEStatsStackMaxMSS Gauge32, + tcpEStatsStackMinMSS Gauge32, + tcpEStatsStackSndInitial Unsigned32, + tcpEStatsStackRecInitial Unsigned32, + tcpEStatsStackCurRetxQueue Gauge32, + tcpEStatsStackMaxRetxQueue Gauge32, + tcpEStatsStackCurReasmQueue Gauge32, + tcpEStatsStackMaxReasmQueue Gauge32 + } + +-- +-- The following objects reflect TCP options carried on the +-- SYN or SYN-ACK. These options are used to provide +-- additional protocol parameters or to enable various +-- optional TCP features or algorithms. +-- +-- Except as noted, the TCP protocol does not permit these +-- options to change after the SYN exchange. +-- + +tcpEStatsStackActiveOpen OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "True(1) if the local connection traversed the SYN-SENT + state, else false(2)." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 1 } + +tcpEStatsStackMSSSent OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value sent in an MSS option, or zero if none." + REFERENCE + "RFC 1122, Requirements for Internet Hosts - Communication + Layers" + ::= { tcpEStatsStackEntry 2 } + + + + +tcpEStatsStackMSSRcvd OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value received in an MSS option, or zero if none." + REFERENCE + "RFC 1122, Requirements for Internet Hosts - Communication + Layers" + ::= { tcpEStatsStackEntry 3 } + +tcpEStatsStackWinScaleSent OBJECT-TYPE + SYNTAX Integer32 (-1..14) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the transmitted window scale option if one was + sent; otherwise, a value of -1. + + Note that if both tcpEStatsStackWinScaleSent and + tcpEStatsStackWinScaleRcvd are not -1, then Rcv.Wind.Scale + will be the same as this value and used to scale receiver + window announcements from the local host to the remote + host." + REFERENCE + "RFC 1323, TCP Extensions for High Performance" + ::= { tcpEStatsStackEntry 4 } + +tcpEStatsStackWinScaleRcvd OBJECT-TYPE + SYNTAX Integer32 (-1..14) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the received window scale option if one was + received; otherwise, a value of -1. + + Note that if both tcpEStatsStackWinScaleSent and + tcpEStatsStackWinScaleRcvd are not -1, then Snd.Wind.Scale + will be the same as this value and used to scale receiver + window announcements from the remote host to the local + host." + REFERENCE + "RFC 1323, TCP Extensions for High Performance" + ::= { tcpEStatsStackEntry 5 } + +tcpEStatsStackTimeStamps OBJECT-TYPE + SYNTAX TcpEStatsNegotiated + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Enabled(1) if TCP timestamps have been negotiated on, + selfDisabled(2) if they are disabled or not implemented on + the local host, or peerDisabled(3) if not negotiated by the + remote hosts." + REFERENCE + "RFC 1323, TCP Extensions for High Performance" + ::= { tcpEStatsStackEntry 6 } + +tcpEStatsStackECN OBJECT-TYPE + SYNTAX TcpEStatsNegotiated + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Enabled(1) if Explicit Congestion Notification (ECN) has + been negotiated on, selfDisabled(2) if it is disabled or + not implemented on the local host, or peerDisabled(3) if + not negotiated by the remote hosts." + REFERENCE + "RFC 3168, The Addition of Explicit Congestion Notification + (ECN) to IP" + ::= { tcpEStatsStackEntry 7 } + +tcpEStatsStackWillSendSACK OBJECT-TYPE + SYNTAX TcpEStatsNegotiated + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Enabled(1) if the local host will send SACK options, + selfDisabled(2) if SACK is disabled or not implemented on + the local host, or peerDisabled(3) if the remote host did + not send the SACK-permitted option. + + Note that SACK negotiation is not symmetrical. SACK can + enabled on one side of the connection and not the other." + REFERENCE + "RFC 2018, TCP Selective Acknowledgement Options" + ::= { tcpEStatsStackEntry 8 } + +tcpEStatsStackWillUseSACK OBJECT-TYPE + SYNTAX TcpEStatsNegotiated + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Enabled(1) if the local host will process SACK options, + selfDisabled(2) if SACK is disabled or not implemented on + the local host, or peerDisabled(3) if the remote host sends + + + + duplicate ACKs without SACK options, or the local host + otherwise decides not to process received SACK options. + + Unlike other TCP options, the remote data receiver cannot + explicitly indicate if it is able to generate SACK options. + When sending data, the local host has to deduce if the + remote receiver is sending SACK options. This object can + transition from Enabled(1) to peerDisabled(3) after the SYN + exchange. + + Note that SACK negotiation is not symmetrical. SACK can + enabled on one side of the connection and not the other." + REFERENCE + "RFC 2018, TCP Selective Acknowledgement Options" + ::= { tcpEStatsStackEntry 9 } + +-- +-- The following two objects reflect the current state of the +-- connection. +-- + +tcpEStatsStackState OBJECT-TYPE + SYNTAX INTEGER { + tcpESStateClosed(1), + tcpESStateListen(2), + tcpESStateSynSent(3), + tcpESStateSynReceived(4), + tcpESStateEstablished(5), + tcpESStateFinWait1(6), + tcpESStateFinWait2(7), + tcpESStateCloseWait(8), + tcpESStateLastAck(9), + tcpESStateClosing(10), + tcpESStateTimeWait(11), + tcpESStateDeleteTcb(12) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An integer value representing the connection state from the + TCP State Transition Diagram. + + The value listen(2) is included only for parallelism to the + old tcpConnTable, and SHOULD NOT be used because the listen + state in managed by the tcpListenerTable. + + The value DeleteTcb(12) is included only for parallelism to + the tcpConnTable mechanism for terminating connections, + + + + although this table does not permit writing." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 10 } + +tcpEStatsStackNagle OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "True(1) if the Nagle algorithm is being used, else + false(2)." + REFERENCE + "RFC 1122, Requirements for Internet Hosts - Communication + Layers" + ::= { tcpEStatsStackEntry 11 } + +-- +-- The following objects instrument the overall operation of +-- TCP congestion control and data retransmissions. These +-- instruments are sufficient to fit the actual performance to +-- an updated macroscopic performance model [RFC2581] [Mat97] +-- [Pad98]. +-- + +tcpEStatsStackMaxSsCwnd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum congestion window used during Slow Start, in + octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 12 } + +tcpEStatsStackMaxCaCwnd OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum congestion window used during Congestion + Avoidance, in octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 13 } + + + +tcpEStatsStackMaxSsthresh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum slow start threshold, excluding the initial + value." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 14 } + +tcpEStatsStackMinSsthresh OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum slow start threshold." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 15 } + +tcpEStatsStackInRecovery OBJECT-TYPE + SYNTAX INTEGER { + tcpESDataContiguous(1), + tcpESDataUnordered(2), + tcpESDataRecovery(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An integer value representing the state of the loss + recovery for this connection. + + tcpESDataContiguous(1) indicates that the remote receiver + is reporting contiguous data (no duplicate acknowledgments + or SACK options) and that there are no unacknowledged + retransmissions. + + tcpESDataUnordered(2) indicates that the remote receiver is + reporting missing or out-of-order data (e.g., sending + duplicate acknowledgments or SACK options) and that there + are no unacknowledged retransmissions (because the missing + data has not yet been retransmitted). + + tcpESDataRecovery(3) indicates that the sender has + outstanding retransmitted data that is still + + + + unacknowledged." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 16 } + +tcpEStatsStackDupAcksIn OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate ACKs received." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 17 } + +tcpEStatsStackSpuriousFrDetected OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of acknowledgments reporting out-of-order + segments after the Fast Retransmit algorithm has already + retransmitted the segments. (For example as detected by the + Eifel algorithm).'" + REFERENCE + "RFC 3522, The Eifel Detection Algorithm for TCP" + ::= { tcpEStatsStackEntry 18 } + +tcpEStatsStackSpuriousRtoDetected OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of acknowledgments reporting segments that have + already been retransmitted due to a Retransmission Timeout." + ::= { tcpEStatsStackEntry 19 } + +-- +-- The following optional objects instrument unusual protocol +-- events that probably indicate implementation problems in +-- the protocol or path. +-- + +tcpEStatsStackSoftErrors OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The number of segments that fail various consistency tests + during TCP input processing. Soft errors might cause the + segment to be discarded but some do not. Some of these soft + errors cause the generation of a TCP acknowledgment, while + others are silently discarded." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 21 } + +tcpEStatsStackSoftErrorReason OBJECT-TYPE + SYNTAX INTEGER { + belowDataWindow(1), + aboveDataWindow(2), + belowAckWindow(3), + aboveAckWindow(4), + belowTSWindow(5), + aboveTSWindow(6), + dataCheckSum(7), + otherSoftError(8) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies which consistency test most recently + failed during TCP input processing. This object SHOULD be + set every time tcpEStatsStackSoftErrors is incremented. The + codes are as follows: + + belowDataWindow(1) - All data in the segment is below + SND.UNA. (Normal for keep-alives and zero window probes). + + aboveDataWindow(2) - Some data in the segment is above + SND.WND. (Indicates an implementation bug or possible + attack). + + belowAckWindow(3) - ACK below SND.UNA. (Indicates that the + return path is reordering ACKs) + + aboveAckWindow(4) - An ACK for data that we have not sent. + (Indicates an implementation bug or possible attack). + + belowTSWindow(5) - TSecr on the segment is older than the + current TS.Recent (Normal for the rare case where PAWS + detects data reordered by the network). + + aboveTSWindow(6) - TSecr on the segment is newer than the + current TS.Recent. (Indicates an implementation bug or + possible attack). + + + + + dataCheckSum(7) - Incorrect checksum. Note that this value + is intrinsically fragile, because the header fields used to + identify the connection may have been corrupted. + + otherSoftError(8) - All other soft errors not listed + above." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 22 } + +-- +-- The following optional objects expose the detailed +-- operation of the congestion control algorithms. +-- + +tcpEStatsStackSlowStart OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the congestion window has been + increased by the Slow Start algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 23 } + +tcpEStatsStackCongAvoid OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the congestion window has been + increased by the Congestion Avoidance algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 24 } + +tcpEStatsStackOtherReductions OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of congestion window reductions made as a result + of anything other than AIMD congestion control algorithms. + Examples of non-multiplicative window reductions include + Congestion Window Validation [RFC2861] and experimental + algorithms such as Vegas [Bra94]. + + + + + All window reductions MUST be counted as either + tcpEStatsPerfCongSignals or tcpEStatsStackOtherReductions." + REFERENCE + "RFC 2861, TCP Congestion Window Validation" + ::= { tcpEStatsStackEntry 25 } + +tcpEStatsStackCongOverCount OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of congestion events that were 'backed out' of + the congestion control state machine such that the + congestion window was restored to a prior value. This can + happen due to the Eifel algorithm [RFC3522] or other + algorithms that can be used to detect and cancel spurious + invocations of the Fast Retransmit Algorithm. + + Although it may be feasible to undo the effects of spurious + invocation of the Fast Retransmit congestion events cannot + easily be backed out of tcpEStatsPerfCongSignals and + tcpEStatsPathPreCongSumCwnd, etc." + REFERENCE + "RFC 3522, The Eifel Detection Algorithm for TCP" + ::= { tcpEStatsStackEntry 26 } + +tcpEStatsStackFastRetran OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of invocations of the Fast Retransmit algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 27 } + +tcpEStatsStackSubsequentTimeouts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the retransmit timeout has expired after + the RTO has been doubled. See Section 5.5 of RFC 2988." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsStackEntry 28 } + + + + +tcpEStatsStackCurTimeoutCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of times the retransmit timeout has + expired without receiving an acknowledgment for new data. + tcpEStatsStackCurTimeoutCount is reset to zero when new + data is acknowledged and incremented for each invocation of + Section 5.5 of RFC 2988." + REFERENCE + "RFC 2988, Computing TCP's Retransmission Timer" + ::= { tcpEStatsStackEntry 29 } + +tcpEStatsStackAbruptTimeouts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of timeouts that occurred without any + immediately preceding duplicate acknowledgments or other + indications of congestion. Abrupt Timeouts indicate that + the path lost an entire window of data or acknowledgments. + + Timeouts that are preceded by duplicate acknowledgments or + other congestion signals (e.g., ECN) are not counted as + abrupt, and might have been avoided by a more sophisticated + Fast Retransmit algorithm." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsStackEntry 30 } + +tcpEStatsStackSACKsRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SACK options received." + REFERENCE + "RFC 2018, TCP Selective Acknowledgement Options" + ::= { tcpEStatsStackEntry 31 } + +tcpEStatsStackSACKBlocksRcvd OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of SACK blocks received (within SACK options)." + + + + REFERENCE + "RFC 2018, TCP Selective Acknowledgement Options" + ::= { tcpEStatsStackEntry 32 } + +tcpEStatsStackSendStall OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of interface stalls or other sender local + resource limitations that are treated as congestion + signals." + ::= { tcpEStatsStackEntry 33 } + +tcpEStatsStackDSACKDups OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of duplicate segments reported to the local host + by D-SACK blocks." + REFERENCE + "RFC 2883, An Extension to the Selective Acknowledgement + (SACK) Option for TCP" + ::= { tcpEStatsStackEntry 34 } + +-- +-- The following optional objects instrument path MTU +-- discovery. +-- + +tcpEStatsStackMaxMSS OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum MSS, in octets." + REFERENCE + "RFC 1191, Path MTU discovery" + ::= { tcpEStatsStackEntry 35 } + +tcpEStatsStackMinMSS OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The minimum MSS, in octets." + REFERENCE + "RFC 1191, Path MTU discovery" + ::= { tcpEStatsStackEntry 36 } + +-- +-- The following optional initial value objects are useful for +-- conformance testing instruments on application progress and +-- consumed network resources. +-- + +tcpEStatsStackSndInitial OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Initial send sequence number. Note that by definition + tcpEStatsStackSndInitial never changes for a given + connection." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 37 } + +tcpEStatsStackRecInitial OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Initial receive sequence number. Note that by definition + tcpEStatsStackRecInitial never changes for a given + connection." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsStackEntry 38 } + +-- +-- The following optional objects instrument the senders +-- buffer usage, including any buffering in the application +-- interface to TCP and the retransmit queue. All 'buffer +-- memory' instruments are assumed to include OS data +-- structure overhead. +-- + +tcpEStatsStackCurRetxQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The current number of octets of data occupying the + retransmit queue." + ::= { tcpEStatsStackEntry 39 } + +tcpEStatsStackMaxRetxQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of octets of data occupying the + retransmit queue." + ::= { tcpEStatsStackEntry 40 } + +tcpEStatsStackCurReasmQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of octets of sequence space spanned by + the reassembly queue. This is generally the difference + between rcv.nxt and the sequence number of the right most + edge of the reassembly queue." + ::= { tcpEStatsStackEntry 41 } + +tcpEStatsStackMaxReasmQueue OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value of tcpEStatsStackCurReasmQueue" + ::= { tcpEStatsStackEntry 42 } + +-- ================================================================ +-- +-- Statistics for diagnosing interactions between +-- applications and TCP. +-- + +tcpEStatsAppTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsAppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains objects that are useful for + determining if the application using TCP is + + + + limiting TCP performance. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 6 } + +tcpEStatsAppEntry OBJECT-TYPE + SYNTAX TcpEStatsAppEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table has information about the + characteristics of each active and recently closed TCP + connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsAppTable 1 } + +TcpEStatsAppEntry ::= SEQUENCE { + + tcpEStatsAppSndUna Counter32, + tcpEStatsAppSndNxt Unsigned32, + tcpEStatsAppSndMax Counter32, + tcpEStatsAppThruOctetsAcked ZeroBasedCounter32, + tcpEStatsAppHCThruOctetsAcked ZeroBasedCounter64, + tcpEStatsAppRcvNxt Counter32, + tcpEStatsAppThruOctetsReceived ZeroBasedCounter32, + tcpEStatsAppHCThruOctetsReceived ZeroBasedCounter64, + tcpEStatsAppCurAppWQueue Gauge32, + tcpEStatsAppMaxAppWQueue Gauge32, + tcpEStatsAppCurAppRQueue Gauge32, + tcpEStatsAppMaxAppRQueue Gauge32 + } + +-- +-- The following objects provide throughput statistics for the +-- connection including sequence numbers and elapsed +-- application data. These permit direct observation of the +-- applications progress, in terms of elapsed data delivery +-- and elapsed time. +-- + +tcpEStatsAppSndUna OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The value of SND.UNA, the oldest unacknowledged sequence + number. + + Note that SND.UNA is a TCP state variable that is congruent + to Counter32 semantics." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsAppEntry 1 } + +tcpEStatsAppSndNxt OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of SND.NXT, the next sequence number to be sent. + Note that tcpEStatsAppSndNxt is not monotonic (and thus not + a counter) because TCP sometimes retransmits lost data by + pulling tcpEStatsAppSndNxt back to the missing data." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsAppEntry 2 } + +tcpEStatsAppSndMax OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The farthest forward (right most or largest) SND.NXT value. + Note that this will be equal to tcpEStatsAppSndNxt except + when tcpEStatsAppSndNxt is pulled back during recovery." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsAppEntry 3 } + +tcpEStatsAppThruOctetsAcked OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets for which cumulative acknowledgments + have been received. Note that this will be the sum of + changes to tcpEStatsAppSndUna." + ::= { tcpEStatsAppEntry 4 } + +tcpEStatsAppHCThruOctetsAcked OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets for which cumulative acknowledgments + have been received, on systems that can receive more than + 10 million bits per second. Note that this will be the sum + of changes in tcpEStatsAppSndUna." + ::= { tcpEStatsAppEntry 5 } + +tcpEStatsAppRcvNxt OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of RCV.NXT. The next sequence number expected on + an incoming segment, and the left or lower edge of the + receive window. + + Note that RCV.NXT is a TCP state variable that is congruent + to Counter32 semantics." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsAppEntry 6 } + +tcpEStatsAppThruOctetsReceived OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets for which cumulative acknowledgments + have been sent. Note that this will be the sum of changes + to tcpEStatsAppRcvNxt." + ::= { tcpEStatsAppEntry 7 } + +tcpEStatsAppHCThruOctetsReceived OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets for which cumulative acknowledgments + have been sent, on systems that can transmit more than 10 + million bits per second. Note that this will be the sum of + changes in tcpEStatsAppRcvNxt." + ::= { tcpEStatsAppEntry 8 } + +tcpEStatsAppCurAppWQueue OBJECT-TYPE + + + + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of octets of application data buffered + by TCP, pending first transmission, i.e., to the left of + SND.NXT or SndMax. This data will generally be transmitted + (and SND.NXT advanced to the left) as soon as there is an + available congestion window (cwnd) or receiver window + (rwin). This is the amount of data readily available for + transmission, without scheduling the application. TCP + performance may suffer if there is insufficient queued + write data." + ::= { tcpEStatsAppEntry 11 } + +tcpEStatsAppMaxAppWQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of octets of application data buffered + by TCP, pending first transmission. This is the maximum + value of tcpEStatsAppCurAppWQueue. This pair of objects can + be used to determine if insufficient queued data is steady + state (suggesting insufficient queue space) or transient + (suggesting insufficient application performance or + excessive CPU load or scheduler latency)." + ::= { tcpEStatsAppEntry 12 } + +tcpEStatsAppCurAppRQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current number of octets of application data that has + been acknowledged by TCP but not yet delivered to the + application." + ::= { tcpEStatsAppEntry 13 } + +tcpEStatsAppMaxAppRQueue OBJECT-TYPE + SYNTAX Gauge32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The maximum number of octets of application data that has + been acknowledged by TCP but not yet delivered to the + application." + ::= { tcpEStatsAppEntry 14 } + +-- ================================================================ +-- +-- Controls for Tuning TCP +-- + +tcpEStatsTuneTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpEStatsTuneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains per-connection controls that can + be used to work around a number of common problems that + plague TCP over some paths. All can be characterized as + limiting the growth of the congestion window so as to + prevent TCP from overwhelming some component in the + path. + + Entries are retained in this table for the number of + seconds indicated by the tcpEStatsConnTableLatency + object, after the TCP connection first enters the closed + state." + ::= { tcpEStats 7 } + +tcpEStatsTuneEntry OBJECT-TYPE + SYNTAX TcpEStatsTuneEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry in this table is a control that can be used to + place limits on each active TCP connection." + INDEX { tcpEStatsConnectIndex } + ::= { tcpEStatsTuneTable 1 } + +TcpEStatsTuneEntry ::= SEQUENCE { + + tcpEStatsTuneLimCwnd Unsigned32, + tcpEStatsTuneLimSsthresh Unsigned32, + tcpEStatsTuneLimRwin Unsigned32, + tcpEStatsTuneLimMSS Unsigned32 + } + +tcpEStatsTuneLimCwnd OBJECT-TYPE + SYNTAX Unsigned32 + + + + UNITS "octets" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to set the maximum congestion window that may be + used, in octets." + REFERENCE + "RFC 2581, TCP Congestion Control" + ::= { tcpEStatsTuneEntry 1 } + +tcpEStatsTuneLimSsthresh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "octets" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to limit the maximum queue space (in octets) that + this TCP connection is likely to occupy during slowstart. + + It can be implemented with the algorithm described in + RFC 3742 by setting the max_ssthresh parameter to twice + tcpEStatsTuneLimSsthresh. + + This algorithm can be used to overcome some TCP performance + problems over network paths that do not have sufficient + buffering to withstand the bursts normally present during + slowstart." + REFERENCE + "RFC 3742, Limited Slow-Start for TCP with Large Congestion + Windows" + ::= { tcpEStatsTuneEntry 2 } + +tcpEStatsTuneLimRwin OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "octets" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control to set the maximum window advertisement that may + be sent, in octets." + REFERENCE + "RFC 793, Transmission Control Protocol" + ::= { tcpEStatsTuneEntry 3 } + +tcpEStatsTuneLimMSS OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "octets" + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "A control to limit the maximum segment size in octets, that + this TCP connection can use." + REFERENCE + "RFC 1191, Path MTU discovery" + ::= { tcpEStatsTuneEntry 4 } + +-- ================================================================ +-- +-- TCP Extended Statistics Notifications Group +-- + +tcpEStatsEstablishNotification NOTIFICATION-TYPE + OBJECTS { + tcpEStatsConnectIndex + } + STATUS current + DESCRIPTION + "The indicated connection has been accepted + (or alternatively entered the established state)." + ::= { tcpEStatsNotifications 1 } + +tcpEStatsCloseNotification NOTIFICATION-TYPE + OBJECTS { + tcpEStatsConnectIndex + } + STATUS current + DESCRIPTION + "The indicated connection has left the + established state" + ::= { tcpEStatsNotifications 2 } + +-- ================================================================ +-- +-- Conformance Definitions +-- + + tcpEStatsCompliances OBJECT IDENTIFIER + ::= { tcpEStatsConformance 1 } + tcpEStatsGroups OBJECT IDENTIFIER + ::= { tcpEStatsConformance 2 } + +-- +-- Compliance Statements +-- + + tcpEStatsCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "Compliance statement for all systems that implement TCP + extended statistics." + MODULE -- this module + MANDATORY-GROUPS { + tcpEStatsListenerGroup, + tcpEStatsConnectIdGroup, + tcpEStatsPerfGroup, + tcpEStatsPathGroup, + tcpEStatsStackGroup, + tcpEStatsAppGroup + } + GROUP tcpEStatsListenerHCGroup + DESCRIPTION + "This group is mandatory for all systems that can + wrap the values of the 32-bit counters in + tcpEStatsListenerGroup in less than one hour." + + GROUP tcpEStatsPerfOptionalGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsPerfHCGroup + DESCRIPTION + "This group is mandatory for systems that can + wrap the values of the 32-bit counters in + tcpEStatsPerfGroup in less than one hour. + + Note that any system that can attain 10 Mb/s + can potentially wrap 32-Bit Octet counters in + under one hour." + + GROUP tcpEStatsPathOptionalGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsPathHCGroup + DESCRIPTION + "This group is mandatory for systems that can + wrap the values of the 32-bit counters in + tcpEStatsPathGroup in less than one hour. + + Note that any system that can attain 10 Mb/s + can potentially wrap 32-Bit Octet counters in + under one hour." + + GROUP tcpEStatsStackOptionalGroup + + + + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsAppHCGroup + DESCRIPTION + "This group is mandatory for systems that can + wrap the values of the 32-bit counters in + tcpEStatsStackGroup in less than one hour. + + Note that any system that can attain 10 Mb/s + can potentially wrap 32-Bit Octet counters in + under one hour." + + GROUP tcpEStatsAppOptionalGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsTuneOptionalGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsNotificationsGroup + DESCRIPTION + "This group is optional for all systems." + + GROUP tcpEStatsNotificationsCtlGroup + DESCRIPTION + "This group is mandatory for systems that include the + tcpEStatsNotificationGroup." + + ::= { tcpEStatsCompliances 1 } + +-- ================================================================ +-- +-- Units of Conformance +-- + tcpEStatsListenerGroup OBJECT-GROUP + OBJECTS { + tcpEStatsListenerTableLastChange, + tcpEStatsListenerStartTime, + tcpEStatsListenerSynRcvd, + tcpEStatsListenerInitial, + tcpEStatsListenerEstablished, + tcpEStatsListenerAccepted, + tcpEStatsListenerExceedBacklog, + tcpEStatsListenerCurConns, + tcpEStatsListenerMaxBacklog, + tcpEStatsListenerCurBacklog, + + + + tcpEStatsListenerCurEstabBacklog + } + STATUS current + DESCRIPTION + "The tcpEStatsListener group includes objects that + provide valuable statistics and debugging + information for TCP Listeners." + ::= { tcpEStatsGroups 1 } + + tcpEStatsListenerHCGroup OBJECT-GROUP + OBJECTS { + tcpEStatsListenerHCSynRcvd, + tcpEStatsListenerHCInitial, + tcpEStatsListenerHCEstablished, + tcpEStatsListenerHCAccepted, + tcpEStatsListenerHCExceedBacklog + } + STATUS current + DESCRIPTION + "The tcpEStatsListenerHC group includes 64-bit + counters in tcpEStatsListenerTable." + ::= { tcpEStatsGroups 2 } + + tcpEStatsConnectIdGroup OBJECT-GROUP + OBJECTS { + tcpEStatsConnTableLatency, + tcpEStatsConnectIndex + } + STATUS current + DESCRIPTION + "The tcpEStatsConnectId group includes objects that + identify TCP connections and control how long TCP + connection entries are retained in the tables." + ::= { tcpEStatsGroups 3 } + + tcpEStatsPerfGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPerfSegsOut, tcpEStatsPerfDataSegsOut, + tcpEStatsPerfDataOctetsOut, + tcpEStatsPerfSegsRetrans, + tcpEStatsPerfOctetsRetrans, tcpEStatsPerfSegsIn, + tcpEStatsPerfDataSegsIn, + tcpEStatsPerfDataOctetsIn, + tcpEStatsPerfElapsedSecs, + tcpEStatsPerfElapsedMicroSecs, + tcpEStatsPerfStartTimeStamp, tcpEStatsPerfCurMSS, + tcpEStatsPerfPipeSize, tcpEStatsPerfMaxPipeSize, + tcpEStatsPerfSmoothedRTT, tcpEStatsPerfCurRTO, + + + + tcpEStatsPerfCongSignals, tcpEStatsPerfCurCwnd, + tcpEStatsPerfCurSsthresh, tcpEStatsPerfTimeouts, + tcpEStatsPerfCurRwinSent, + tcpEStatsPerfMaxRwinSent, + tcpEStatsPerfZeroRwinSent, + tcpEStatsPerfCurRwinRcvd, + tcpEStatsPerfMaxRwinRcvd, + tcpEStatsPerfZeroRwinRcvd + } + STATUS current + DESCRIPTION + "The tcpEStatsPerf group includes those objects that + provide basic performance data for a TCP connection." + ::= { tcpEStatsGroups 4 } + + tcpEStatsPerfOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPerfSndLimTransRwin, + tcpEStatsPerfSndLimTransCwnd, + tcpEStatsPerfSndLimTransSnd, + tcpEStatsPerfSndLimTimeRwin, + tcpEStatsPerfSndLimTimeCwnd, + tcpEStatsPerfSndLimTimeSnd + } + STATUS current + DESCRIPTION + "The tcpEStatsPerf group includes those objects that + provide basic performance data for a TCP connection." + ::= { tcpEStatsGroups 5 } + + tcpEStatsPerfHCGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPerfHCDataOctetsOut, + tcpEStatsPerfHCDataOctetsIn + } + STATUS current + DESCRIPTION + "The tcpEStatsPerfHC group includes 64-bit + counters in the tcpEStatsPerfTable." + ::= { tcpEStatsGroups 6 } + + + tcpEStatsPathGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlPath, + tcpEStatsPathRetranThresh, + tcpEStatsPathNonRecovDAEpisodes, + tcpEStatsPathSumOctetsReordered, + + + + tcpEStatsPathNonRecovDA + } + STATUS current + DESCRIPTION + "The tcpEStatsPath group includes objects that + control the creation of the tcpEStatsPathTable, + and provide information about the path + for each TCP connection." + ::= { tcpEStatsGroups 7 } + + tcpEStatsPathOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPathSampleRTT, tcpEStatsPathRTTVar, + tcpEStatsPathMaxRTT, tcpEStatsPathMinRTT, + tcpEStatsPathSumRTT, tcpEStatsPathCountRTT, + tcpEStatsPathMaxRTO, tcpEStatsPathMinRTO, + tcpEStatsPathIpTtl, tcpEStatsPathIpTosIn, + tcpEStatsPathIpTosOut, + tcpEStatsPathPreCongSumCwnd, + tcpEStatsPathPreCongSumRTT, + tcpEStatsPathPostCongSumRTT, + tcpEStatsPathPostCongCountRTT, + tcpEStatsPathECNsignals, + tcpEStatsPathDupAckEpisodes, tcpEStatsPathRcvRTT, + tcpEStatsPathDupAcksOut, tcpEStatsPathCERcvd, + tcpEStatsPathECESent + } + STATUS current + DESCRIPTION + "The tcpEStatsPath group includes objects that + provide additional information about the path + for each TCP connection." + ::= { tcpEStatsGroups 8 } + + tcpEStatsPathHCGroup OBJECT-GROUP + OBJECTS { + tcpEStatsPathHCSumRTT + } + STATUS current + DESCRIPTION + "The tcpEStatsPathHC group includes 64-bit + counters in the tcpEStatsPathTable." + ::= { tcpEStatsGroups 9 } + + tcpEStatsStackGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlStack, + tcpEStatsStackActiveOpen, tcpEStatsStackMSSSent, + + + + tcpEStatsStackMSSRcvd, tcpEStatsStackWinScaleSent, + tcpEStatsStackWinScaleRcvd, + tcpEStatsStackTimeStamps, tcpEStatsStackECN, + tcpEStatsStackWillSendSACK, + tcpEStatsStackWillUseSACK, tcpEStatsStackState, + tcpEStatsStackNagle, tcpEStatsStackMaxSsCwnd, + tcpEStatsStackMaxCaCwnd, + tcpEStatsStackMaxSsthresh, + tcpEStatsStackMinSsthresh, + tcpEStatsStackInRecovery, tcpEStatsStackDupAcksIn, + tcpEStatsStackSpuriousFrDetected, + tcpEStatsStackSpuriousRtoDetected + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + control the creation of the tcpEStatsStackTable, + and provide information about the operation of + algorithms used within TCP." + ::= { tcpEStatsGroups 10 } + + tcpEStatsStackOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsStackSoftErrors, + tcpEStatsStackSoftErrorReason, + tcpEStatsStackSlowStart, tcpEStatsStackCongAvoid, + tcpEStatsStackOtherReductions, + tcpEStatsStackCongOverCount, + tcpEStatsStackFastRetran, + tcpEStatsStackSubsequentTimeouts, + tcpEStatsStackCurTimeoutCount, + tcpEStatsStackAbruptTimeouts, + tcpEStatsStackSACKsRcvd, + tcpEStatsStackSACKBlocksRcvd, + tcpEStatsStackSendStall, tcpEStatsStackDSACKDups, + tcpEStatsStackMaxMSS, tcpEStatsStackMinMSS, + tcpEStatsStackSndInitial, + tcpEStatsStackRecInitial, + tcpEStatsStackCurRetxQueue, + tcpEStatsStackMaxRetxQueue, + tcpEStatsStackCurReasmQueue, + tcpEStatsStackMaxReasmQueue + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + provide additional information about the operation of + algorithms used within TCP." + + + + ::= { tcpEStatsGroups 11 } + + tcpEStatsAppGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlApp, + tcpEStatsAppSndUna, tcpEStatsAppSndNxt, + tcpEStatsAppSndMax, tcpEStatsAppThruOctetsAcked, + tcpEStatsAppRcvNxt, + tcpEStatsAppThruOctetsReceived + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + control the creation of the tcpEStatsAppTable, + and provide information about the operation of + algorithms used within TCP." + ::= { tcpEStatsGroups 12 } + + tcpEStatsAppHCGroup OBJECT-GROUP + OBJECTS { + tcpEStatsAppHCThruOctetsAcked, + tcpEStatsAppHCThruOctetsReceived + } + STATUS current + DESCRIPTION + "The tcpEStatsStackHC group includes 64-bit + counters in the tcpEStatsStackTable." + ::= { tcpEStatsGroups 13 } + + tcpEStatsAppOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsAppCurAppWQueue, + tcpEStatsAppMaxAppWQueue, + tcpEStatsAppCurAppRQueue, + tcpEStatsAppMaxAppRQueue + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + provide additional information about how applications + are interacting with each TCP connection." + ::= { tcpEStatsGroups 14 } + + tcpEStatsTuneOptionalGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlTune, + tcpEStatsTuneLimCwnd, tcpEStatsTuneLimSsthresh, + tcpEStatsTuneLimRwin, tcpEStatsTuneLimMSS + + + + } + STATUS current + DESCRIPTION + "The tcpEStatsConnState group includes objects that + control the creation of the tcpEStatsConnectionTable, + which can be used to set tuning parameters + for each TCP connection." + ::= { tcpEStatsGroups 15 } + + tcpEStatsNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + tcpEStatsEstablishNotification, + tcpEStatsCloseNotification + } + STATUS current + DESCRIPTION + "Notifications sent by a TCP extended statistics agent." + ::= { tcpEStatsGroups 16 } + + tcpEStatsNotificationsCtlGroup OBJECT-GROUP + OBJECTS { + tcpEStatsControlNotify + } + STATUS current + DESCRIPTION + "The tcpEStatsNotificationsCtl group includes the + object that controls the creation of the events + in the tcpEStatsNotificationsGroup." + ::= { tcpEStatsGroups 17 } + + END diff --git a/mibs/ietf/TCP-MIB b/mibs/ietf/TCP-MIB new file mode 100644 index 0000000..5b9e0bf --- /dev/null +++ b/mibs/ietf/TCP-MIB @@ -0,0 +1,829 @@ +TCP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32, + Gauge32, Counter32, Counter64, IpAddress, mib-2 + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InetAddress, InetAddressType, + InetPortNumber FROM INET-ADDRESS-MIB; + +tcpMIB MODULE-IDENTITY + LAST-UPDATED "200502180000Z" -- 18 February 2005 + ORGANIZATION + "IETF IPv6 MIB Revision Team + http://www.ietf.org/html.charters/ipv6-charter.html" + CONTACT-INFO + "Rajiv Raghunarayan (editor) + + Cisco Systems Inc. + 170 West Tasman Drive + San Jose, CA 95134 + + Phone: +1 408 853 9612 + Email: + + Send comments to " + DESCRIPTION + "The MIB module for managing TCP implementations. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is a part of RFC 4022; see the RFC + itself for full legal notices." + REVISION "200502180000Z" -- 18 February 2005 + DESCRIPTION + "IP version neutral revision, published as RFC 4022." + REVISION "9411010000Z" + DESCRIPTION + "Initial SMIv2 version, published as RFC 2012." + REVISION "9103310000Z" + DESCRIPTION + "The initial revision of this MIB module was part of + MIB-II." + ::= { mib-2 49 } + +-- the TCP base variables group + + + + +tcp OBJECT IDENTIFIER ::= { mib-2 6 } + +-- Scalars + +tcpRtoAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + constant(2), -- a constant rto + rsre(3), -- MIL-STD-1778, Appendix B + vanj(4), -- Van Jacobson's algorithm + rfc2988(5) -- RFC 2988 + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The algorithm used to determine the timeout value used for + retransmitting unacknowledged octets." + ::= { tcp 1 } + +tcpRtoMin OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum value permitted by a TCP implementation for + the retransmission timeout, measured in milliseconds. + More refined semantics for objects of this type depend + on the algorithm used to determine the retransmission + timeout; in particular, the IETF standard algorithm + rfc2988(5) provides a minimum value." + ::= { tcp 2 } + +tcpRtoMax OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum value permitted by a TCP implementation for + the retransmission timeout, measured in milliseconds. + More refined semantics for objects of this type depend + on the algorithm used to determine the retransmission + timeout; in particular, the IETF standard algorithm + rfc2988(5) provides an upper bound (as part of an + adaptive backoff algorithm)." + ::= { tcp 3 } + + + + +tcpMaxConn OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The limit on the total number of TCP connections the entity + can support. In entities where the maximum number of + connections is dynamic, this object should contain the + value -1." + ::= { tcp 4 } + +tcpActiveOpens OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that TCP connections have made a direct + transition to the SYN-SENT state from the CLOSED state. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 5 } + +tcpPassiveOpens OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times TCP connections have made a direct + transition to the SYN-RCVD state from the LISTEN state. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 6 } + +tcpAttemptFails OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that TCP connections have made a direct + transition to the CLOSED state from either the SYN-SENT + state or the SYN-RCVD state, plus the number of times that + TCP connections have made a direct transition to the + LISTEN state from the SYN-RCVD state. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + + + + ::= { tcp 7 } + +tcpEstabResets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times that TCP connections have made a direct + transition to the CLOSED state from either the ESTABLISHED + state or the CLOSE-WAIT state. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 8 } + +tcpCurrEstab OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TCP connections for which the current state + is either ESTABLISHED or CLOSE-WAIT." + ::= { tcp 9 } + +tcpInSegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments received, including those + received in error. This count includes segments received + on currently established connections. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 10 } + +tcpOutSegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments sent, including those on + current connections but excluding those containing only + retransmitted octets. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + + + + ::= { tcp 11 } + +tcpRetransSegs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments retransmitted; that is, the + number of TCP segments transmitted containing one or more + previously transmitted octets. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 12 } + +tcpInErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments received in error (e.g., bad + TCP checksums). + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 14 } + +tcpOutRsts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TCP segments sent containing the RST flag. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 15 } + +-- { tcp 16 } was used to represent the ipv6TcpConnTable in RFC 2452, +-- which has since been obsoleted. It MUST not be used. + +tcpHCInSegs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments received, including those + received in error. This count includes segments received + + + + on currently established connections. This object is + the 64-bit equivalent of tcpInSegs. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 17 } + +tcpHCOutSegs OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of segments sent, including those on + current connections but excluding those containing only + retransmitted octets. This object is the 64-bit + equivalent of tcpOutSegs. + + Discontinuities in the value of this counter are + indicated via discontinuities in the value of sysUpTime." + ::= { tcp 18 } + + +-- The TCP Connection table + +tcpConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about existing TCP + connections. Note that unlike earlier TCP MIBs, there + is a separate table for connections in the LISTEN state." + ::= { tcp 19 } + +tcpConnectionEntry OBJECT-TYPE + SYNTAX TcpConnectionEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the tcpConnectionTable containing + information about a particular current TCP connection. + Each row of this table is transient in that it ceases to + exist when (or soon after) the connection makes the + transition to the CLOSED state." + INDEX { tcpConnectionLocalAddressType, + tcpConnectionLocalAddress, + tcpConnectionLocalPort, + tcpConnectionRemAddressType, + + + + tcpConnectionRemAddress, + tcpConnectionRemPort } + ::= { tcpConnectionTable 1 } + +TcpConnectionEntry ::= SEQUENCE { + tcpConnectionLocalAddressType InetAddressType, + tcpConnectionLocalAddress InetAddress, + tcpConnectionLocalPort InetPortNumber, + tcpConnectionRemAddressType InetAddressType, + tcpConnectionRemAddress InetAddress, + tcpConnectionRemPort InetPortNumber, + tcpConnectionState INTEGER, + tcpConnectionProcess Unsigned32 + } + +tcpConnectionLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of tcpConnectionLocalAddress." + ::= { tcpConnectionEntry 1 } + +tcpConnectionLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IP address for this TCP connection. The type + of this address is determined by the value of + tcpConnectionLocalAddressType. + + As this object is used in the index for the + tcpConnectionTable, implementors should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; otherwise the information + cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3." + ::= { tcpConnectionEntry 2 } + +tcpConnectionLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpConnectionEntry 3 } + +tcpConnectionRemAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of tcpConnectionRemAddress." + ::= { tcpConnectionEntry 4 } + +tcpConnectionRemAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote IP address for this TCP connection. The type + of this address is determined by the value of + tcpConnectionRemAddressType. + + As this object is used in the index for the + tcpConnectionTable, implementors should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; otherwise the information + cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3." + ::= { tcpConnectionEntry 5 } + +tcpConnectionRemPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this TCP connection." + ::= { tcpConnectionEntry 6 } + +tcpConnectionState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + listen(2), + synSent(3), + synReceived(4), + established(5), + finWait1(6), + finWait2(7), + closeWait(8), + lastAck(9), + closing(10), + timeWait(11), + deleteTCB(12) + } + MAX-ACCESS read-write + STATUS current + + + + DESCRIPTION + "The state of this TCP connection. + + The value listen(2) is included only for parallelism to the + old tcpConnTable and should not be used. A connection in + LISTEN state should be present in the tcpListenerTable. + + The only value that may be set by a management station is + deleteTCB(12). Accordingly, it is appropriate for an agent + to return a `badValue' response if a management station + attempts to set this object to any other value. + + If a management station sets this object to the value + deleteTCB(12), then the TCB (as defined in [RFC793]) of + the corresponding connection on the managed node is + deleted, resulting in immediate termination of the + connection. + + As an implementation-specific option, a RST segment may be + sent from the managed node to the other TCP endpoint (note, + however, that RST segments are not sent reliably)." + ::= { tcpConnectionEntry 7 } + +tcpConnectionProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system's process ID for the process associated with + this connection, or zero if there is no such process. This + value is expected to be the same as HOST-RESOURCES-MIB:: + hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some + row in the appropriate tables." + ::= { tcpConnectionEntry 8 } + +-- The TCP Listener table + +tcpListenerTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about TCP listeners. A + listening application can be represented in three + possible ways: + + 1. An application that is willing to accept both IPv4 and + IPv6 datagrams is represented by + + + + a tcpListenerLocalAddressType of unknown (0) and + a tcpListenerLocalAddress of ''h (a zero-length + octet-string). + + 2. An application that is willing to accept only IPv4 or + IPv6 datagrams is represented by a + tcpListenerLocalAddressType of the appropriate address + type and a tcpListenerLocalAddress of '0.0.0.0' or '::' + respectively. + + 3. An application that is listening for data destined + only to a specific IP address, but from any remote + system, is represented by a tcpListenerLocalAddressType + of an appropriate address type, with + tcpListenerLocalAddress as the specific local address. + + NOTE: The address type in this table represents the + address type used for the communication, irrespective + of the higher-layer abstraction. For example, an + application using IPv6 'sockets' to communicate via + IPv4 between ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would + use InetAddressType ipv4(1))." + ::= { tcp 20 } + +tcpListenerEntry OBJECT-TYPE + SYNTAX TcpListenerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row of the tcpListenerTable containing + information about a particular TCP listener." + INDEX { tcpListenerLocalAddressType, + tcpListenerLocalAddress, + tcpListenerLocalPort } + ::= { tcpListenerTable 1 } + +TcpListenerEntry ::= SEQUENCE { + tcpListenerLocalAddressType InetAddressType, + tcpListenerLocalAddress InetAddress, + tcpListenerLocalPort InetPortNumber, + tcpListenerProcess Unsigned32 + } + +tcpListenerLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The address type of tcpListenerLocalAddress. The value + should be unknown (0) if connection initiations to all + local IP addresses are accepted." + ::= { tcpListenerEntry 1 } + +tcpListenerLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IP address for this TCP connection. + + The value of this object can be represented in three + possible ways, depending on the characteristics of the + listening application: + + 1. For an application willing to accept both IPv4 and + IPv6 datagrams, the value of this object must be + ''h (a zero-length octet-string), with the value + of the corresponding tcpListenerLocalAddressType + object being unknown (0). + + 2. For an application willing to accept only IPv4 or + IPv6 datagrams, the value of this object must be + '0.0.0.0' or '::' respectively, with + tcpListenerLocalAddressType representing the + appropriate address type. + + 3. For an application which is listening for data + destined only to a specific IP address, the value + of this object is the specific local address, with + tcpListenerLocalAddressType representing the + appropriate address type. + + As this object is used in the index for the + tcpListenerTable, implementors should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; otherwise the information + cannot be accessed, using SNMPv1, SNMPv2c, or SNMPv3." + ::= { tcpListenerEntry 2 } + +tcpListenerLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpListenerEntry 3 } + + + +tcpListenerProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system's process ID for the process associated with + this listener, or zero if there is no such process. This + value is expected to be the same as HOST-RESOURCES-MIB:: + hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some + row in the appropriate tables." + ::= { tcpListenerEntry 4 } + + +-- The deprecated TCP Connection table + +tcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpConnEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table containing information about existing IPv4-specific + TCP connections or listeners. This table has been + deprecated in favor of the version neutral + tcpConnectionTable." + ::= { tcp 13 } + +tcpConnEntry OBJECT-TYPE + SYNTAX TcpConnEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A conceptual row of the tcpConnTable containing information + about a particular current IPv4 TCP connection. Each row + of this table is transient in that it ceases to exist when + (or soon after) the connection makes the transition to the + CLOSED state." + INDEX { tcpConnLocalAddress, + tcpConnLocalPort, + tcpConnRemAddress, + tcpConnRemPort } + ::= { tcpConnTable 1 } + +TcpConnEntry ::= SEQUENCE { + tcpConnState INTEGER, + tcpConnLocalAddress IpAddress, + tcpConnLocalPort Integer32, + tcpConnRemAddress IpAddress, + tcpConnRemPort Integer32 + + + + } + +tcpConnState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + listen(2), + synSent(3), + synReceived(4), + established(5), + finWait1(6), + finWait2(7), + closeWait(8), + lastAck(9), + closing(10), + timeWait(11), + deleteTCB(12) + } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The state of this TCP connection. + + The only value that may be set by a management station is + deleteTCB(12). Accordingly, it is appropriate for an agent + to return a `badValue' response if a management station + attempts to set this object to any other value. + + If a management station sets this object to the value + deleteTCB(12), then the TCB (as defined in [RFC793]) of + the corresponding connection on the managed node is + deleted, resulting in immediate termination of the + connection. + + As an implementation-specific option, a RST segment may be + sent from the managed node to the other TCP endpoint (note, + however, that RST segments are not sent reliably)." + ::= { tcpConnEntry 1 } + +tcpConnLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The local IP address for this TCP connection. In the case + of a connection in the listen state willing to + accept connections for any IP interface associated with the + node, the value 0.0.0.0 is used." + ::= { tcpConnEntry 2 } + + + +tcpConnLocalPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpConnEntry 3 } + +tcpConnRemAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The remote IP address for this TCP connection." + ::= { tcpConnEntry 4 } + +tcpConnRemPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The remote port number for this TCP connection." + ::= { tcpConnEntry 5 } + +-- conformance information + +tcpMIBConformance OBJECT IDENTIFIER ::= { tcpMIB 2 } + +tcpMIBCompliances OBJECT IDENTIFIER ::= { tcpMIBConformance 1 } +tcpMIBGroups OBJECT IDENTIFIER ::= { tcpMIBConformance 2 } + +-- compliance statements + +tcpMIBCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems that implement TCP. + + A number of INDEX objects cannot be + represented in the form of OBJECT clauses in SMIv2 but + have the following compliance requirements, + expressed in OBJECT clause form in this description + clause: + + -- OBJECT tcpConnectionLocalAddressType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- This MIB requires support for only global IPv4 + + + + -- and IPv6 address types. + -- + -- OBJECT tcpConnectionRemAddressType + -- SYNTAX InetAddressType { ipv4(1), ipv6(2) } + -- DESCRIPTION + -- This MIB requires support for only global IPv4 + -- and IPv6 address types. + -- + -- OBJECT tcpListenerLocalAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2) } + -- DESCRIPTION + -- This MIB requires support for only global IPv4 + -- and IPv6 address types. The type unknown also + -- needs to be supported to identify a special + -- case in the listener table: a listen using + -- both IPv4 and IPv6 addresses on the device. + -- + " + MODULE -- this module + MANDATORY-GROUPS { tcpBaseGroup, tcpConnectionGroup, + tcpListenerGroup } + GROUP tcpHCGroup + DESCRIPTION + "This group is mandatory for systems that are capable + of receiving or transmitting more than 1 million TCP + segments per second. 1 million segments per second will + cause a Counter32 to wrap in just over an hour." + OBJECT tcpConnectionState + SYNTAX INTEGER { closed(1), listen(2), synSent(3), + synReceived(4), established(5), + finWait1(6), finWait2(7), closeWait(8), + lastAck(9), closing(10), timeWait(11) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + deleteTCB (12)." + ::= { tcpMIBCompliances 2 } + +tcpMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for IPv4-only systems that + implement TCP. In order to be IP version independent, this + compliance statement is deprecated in favor of + tcpMIBCompliance2. However, agents are still encouraged + to implement these objects in order to interoperate with + the deployed base of managers." + + + + MODULE -- this module + MANDATORY-GROUPS { tcpGroup } + OBJECT tcpConnState + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { tcpMIBCompliances 1 } + + +-- units of conformance + +tcpGroup OBJECT-GROUP + OBJECTS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax, + tcpMaxConn, tcpActiveOpens, + tcpPassiveOpens, tcpAttemptFails, + tcpEstabResets, tcpCurrEstab, tcpInSegs, + tcpOutSegs, tcpRetransSegs, tcpConnState, + tcpConnLocalAddress, tcpConnLocalPort, + tcpConnRemAddress, tcpConnRemPort, + tcpInErrs, tcpOutRsts } + STATUS deprecated + DESCRIPTION + "The tcp group of objects providing for management of TCP + entities." + ::= { tcpMIBGroups 1 } + +tcpBaseGroup OBJECT-GROUP + OBJECTS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax, + tcpMaxConn, tcpActiveOpens, + tcpPassiveOpens, tcpAttemptFails, + tcpEstabResets, tcpCurrEstab, tcpInSegs, + tcpOutSegs, tcpRetransSegs, + tcpInErrs, tcpOutRsts } + STATUS current + DESCRIPTION + "The group of counters common to TCP entities." + ::= { tcpMIBGroups 2 } + +tcpConnectionGroup OBJECT-GROUP + OBJECTS { tcpConnectionState, tcpConnectionProcess } + STATUS current + DESCRIPTION + "The group provides general information about TCP + connections." + ::= { tcpMIBGroups 3 } + +tcpListenerGroup OBJECT-GROUP + OBJECTS { tcpListenerProcess } + + + + STATUS current + DESCRIPTION + "This group has objects providing general information about + TCP listeners." + ::= { tcpMIBGroups 4 } + +tcpHCGroup OBJECT-GROUP + OBJECTS { tcpHCInSegs, tcpHCOutSegs } + STATUS current + DESCRIPTION + "The group of objects providing for counters of high speed + TCP implementations." + ::= { tcpMIBGroups 5 } + +END diff --git a/mibs/ietf/TCPIPX-MIB b/mibs/ietf/TCPIPX-MIB new file mode 100644 index 0000000..976399f --- /dev/null +++ b/mibs/ietf/TCPIPX-MIB @@ -0,0 +1,337 @@ + TCPIPX-MIB DEFINITIONS ::= BEGIN + + IMPORTS + enterprises + FROM RFC1155-SMI + OBJECT-TYPE + FROM RFC-1212; + + +-- IPX address type. +-- First 4 octests are the network numbers and the last 6 +-- octests are the node numbers. In ascii, it is represented + +-- as hex digits, as in: nnnnnnnn:mmmmmmmmmmmm + +IpxAddress ::= OCTET STRING (SIZE (10)) + + -- TCP/IPX MIB object idenfifiers + +novell OBJECT IDENTIFIER ::= { enterprises 23 } +mibDoc OBJECT IDENTIFIER ::= { novell 2 } +tcpx OBJECT IDENTIFIER ::= { mibDoc 29 } +tcpxTcp OBJECT IDENTIFIER ::= { tcpx 1 } +tcpxUdp OBJECT IDENTIFIER ::= { tcpx 2 } + + + + -- the TCP/IPX Connection table + + -- The TCP/IPX connection table contains information + -- about this entity's existing TCP connections over + -- IPX. + + tcpIpxConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpIpxConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing information specific on + TCP connection over IPX network layer." + + ::= { tcpxTcp 1 } + + tcpIpxConnEntry OBJECT-TYPE + SYNTAX TcpIpxConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current TCP + connection over IPX An object of this type is + transient, in that it ceases to exist when (or + soon after) the connection makes the transition + to the CLOSED state." + INDEX { tcpIpxConnLocalAddress, + tcpIpxConnLocalPort, + tcpIpxConnRemAddress, + tcpIpxConnRemPort } + ::= { tcpIpxConnTable 1 } + + TcpIpxConnEntry ::= + SEQUENCE { + tcpIpxConnState + INTEGER, + tcpIpxConnLocalAddress + IpxAddress, + tcpIpxConnLocalPort + INTEGER (0..65535), + tcpIpxConnRemAddress + IpxAddress, + tcpIpxConnRemPort + INTEGER (0..65535) + } + + tcpIpxConnState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + listen(2), + synSent(3), + synReceived(4), + established(5), + finWait1(6), + finWait2(7), + closeWait(8), + lastAck(9), + closing(10), + timeWait(11), + deleteTCB(12) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this TCP connection. + + The only value which may be set by a management + station is deleteTCB(12). Accordingly, it is + appropriate for an agent to return a `badValue' + response if a management station attempts to set + this object to any other value. + + If a management station sets this object to the + value deleteTCB(12), then this has the effect of + deleting the TCB (as defined in RFC 793) of the + corresponding connection on the managed node, + resulting in immediate termination of the + connection. + + As an implementation-specific option, a RST + segment may be sent from the managed node to the + other TCP endpoint (note however that RST + segments are not sent reliably)." + ::= { tcpIpxConnEntry 1 } + + tcpIpxConnLocalAddress OBJECT-TYPE + SYNTAX IpxAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local IPX address for this TCP connection. + In the case of a connection in the listen state + which is willing to accept connections for any + interface, the value 00000000:000000000000 is + used. See tcpUnspecConnTable for connections in + the listen state which is willing to accept + connects for any IP interface associated with + the node." + ::= { tcpIpxConnEntry 2 } + + -- NetworkAddress defined in SMI only include IP currently, + -- so we can't use it to represent both IP and IPX address. + + tcpIpxConnLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpIpxConnEntry 3 } + + tcpIpxConnRemAddress OBJECT-TYPE + SYNTAX IpxAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote IPX address for this TCP connection." + ::= { tcpIpxConnEntry 4 } + + tcpIpxConnRemPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The remote port number for this TCP connection." + ::= { tcpIpxConnEntry 5 } + + -- the UDP Listener table + + -- The UDP listener table contains information about this + -- entity's UDP end-points on which a local application is + -- currently accepting datagrams. + + udpIpxTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpIpxEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing UDP listener information." + ::= { tcpxUdp 1 } + + udpIpxEntry OBJECT-TYPE + SYNTAX UdpIpxEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current UDP + listener." + INDEX { udpIpxLocalAddress, udpIpxLocalPort } + ::= { udpIpxTable 1 } + + UdpIpxEntry ::= + SEQUENCE { + udpIpxLocalAddress + IpxAddress, + udpIpxLocalPort + INTEGER (0..65535) + } + + udpIpxLocalAddress OBJECT-TYPE + SYNTAX IpxAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local IPX address for this UDP listener. In + the case of a UDP listener which is willing to + accept datagrams for any interface, the value + 00000000:000000000000 is used. See + udpUnspecTable for UDP listener which is + willing to accept datagrams from any network + layer." + ::= { udpIpxEntry 1 } + + udpIpxLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this UDP listener." + ::= { udpIpxEntry 2 } + + + -- the TCP/UNSPEC Connection table + + -- The TCP/UPSPEC connection table contains information + -- about this entity's existing TCP connections over + -- unspecified network. + -- Since the network is unspecified, the network + -- address is also unspecified. Hence, this + -- connection table does not include any network + -- address. + + tcpUnspecConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF TcpIpxConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing information specific on + TCP connection over unspecified network layer." + + ::= { tcpxTcp 2 } + + tcpUnspecConnEntry OBJECT-TYPE + SYNTAX TcpUnspecConnEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current TCP + connection over unspecified network layer. An + object of this type is transient, in that it + ceases to exist when the connection makes + transition beyond LISTEN state, or when (or + soon after) the connection makes transition + to the CLOSED state," + + INDEX { tcpUnspecConnLocalPort } + ::= { tcpUnspecConnTable 1 } + + TcpUnspecConnEntry ::= + SEQUENCE { + tcpUnspecConnState + INTEGER, + tcpUnspecConnLocalPort + INTEGER (0..65535) + } + + tcpUnspecConnState OBJECT-TYPE + SYNTAX INTEGER { + closed(1), + listen(2), + deleteTCB(12) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The state of this TCP connection. + + Since the TCP connection can belong to this table + only when its state is less than SYN_SENT, only + closed and listen state apply. + + The only value which may be set by a management + station is deleteTCB(12). Accordingly, it is + appropriate for an agent to return a `badValue' + response if a management station attempts to set + this object to any other value. + + If a management station sets this object to the + value deleteTCB(12), then this has the effect of + deleting the TCB (as defined in RFC 793) of the + corresponding connection on the managed node, + resulting in immediate termination of the + connection. + + As an implementation-specific option, a RST + segment may be sent from the managed node to the + other TCP endpoint (note however that RST + segments are not sent reliably)." + ::= { tcpUnspecConnEntry 1 } + + tcpUnspecConnLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this TCP connection." + ::= { tcpUnspecConnEntry 2 } + + -- the UDP Listener table + + -- The UDP listener table contains information about this + -- entity's UDP end-points over unspecified network layer, + -- on which a local application is currently accepting + -- datagrams. If network layer is unspecified, the network + -- address is also unspecified. Hence, this table does not + -- include any network address. + + udpUnspecTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpUnspecEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table containing UDP listener information." + ::= { tcpxUdp 2 } + + udpUnspecEntry OBJECT-TYPE + SYNTAX UdpUnspecEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about a particular current UDP + listener." + INDEX { udpUnspecLocalPort } + ::= { udpUnspecTable 1 } + + UdpUnspecEntry ::= + SEQUENCE { + udpUnspecLocalPort + INTEGER (0..65535) + } + + udpUnspecLocalPort OBJECT-TYPE + SYNTAX INTEGER (0..65535) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The local port number for this UDP listener." + ::= { udpUnspecEntry 1 } + + END diff --git a/mibs/ietf/TE-LINK-STD-MIB b/mibs/ietf/TE-LINK-STD-MIB new file mode 100644 index 0000000..e53c95b --- /dev/null +++ b/mibs/ietf/TE-LINK-STD-MIB @@ -0,0 +1,1860 @@ +TE-LINK-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, transmission, Integer32, Unsigned32 + FROM SNMPv2-SMI + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + TEXTUAL-CONVENTION, RowStatus, StorageType + FROM SNMPv2-TC + + InterfaceIndexOrZero, ifIndex + FROM IF-MIB + + InetAddressType, InetAddress + FROM INET-ADDRESS-MIB; + + +teLinkStdMIB MODULE-IDENTITY + LAST-UPDATED "200510110000Z" -- 11 October 2005 + ORGANIZATION "Multiprotocol Label Switching (MPLS) Working Group" + CONTACT-INFO + " Martin Dubuc + Email: mdubuc@ncf.ca + + Thomas D. Nadeau + Email: tnadeau@cisco.com + + + + + Jonathan P. Lang + Email: jplang@ieee.org + + Comments about this document should be emailed directly to + the MPLS working group mailing list at mpls@uu.net." + + DESCRIPTION + "Copyright (C) 2005 The Internet Society. This version of + this MIB module is part of RFC 4220; see the RFC + itself for full legal notices. + + This MIB module contains managed object definitions for + MPLS traffic engineering links as defined in + 'Link Bundling in MPLS Traffic Engineering (TE)'." + + -- Revision history. + REVISION + "200510110000Z" -- 11 October 2005 + DESCRIPTION + "Initial version published as RFC 4220." + ::= { transmission 200 } + +-- Textual Conventions + +TeLinkBandwidth ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This type is used to represent link bandwidth in bps. This + value is represented using a 4 octet IEEE floating point + format [IEEE]. The floating point representation is not + used to represent fractional value but rather to allow + specification of large numbers that cannot be expressed + with 32-bit integers." + REFERENCE + "IEEE Standard for Binary Floating-Point Arithmetic, + Standard 754-1985" + SYNTAX OCTET STRING (SIZE(4)) + +TeLinkPriority ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This type is used to represent a priority. Each connection + is assigned a priority. This priority is used when + accounting for bandwidth on TE links or component + links, for resource allocation and for rerouting purposes. + Value 0 is the highest priority. Value 7 is the lowest + priority." + + + + SYNTAX Unsigned32 (0..7) + +TeLinkProtection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Link protection." + SYNTAX INTEGER { + primary(1), + secondary(2) + } + +TeLinkSwitchingCapability ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Switching capability as specified in the 'OSPF Extensions in + Support of Generalized Multi-Protocol Label Switching + (GMPLS)' document. The values specified in this document + are not contiguous." + SYNTAX INTEGER { + packetSwitch1(1), + packetSwitch2(2), + packetSwitch3(3), + packetSwitch4(4), + layer2Switch(51), + tdm(100), + lambdaSwitch(150), + fiberSwitch(200) + } + +TeLinkEncodingType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Link encoding type as specified in 'Generalized + Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description' document. The values + specified in this document are not contiguous." + SYNTAX INTEGER { + packet(1), + ethernet(2), + ansiEtsiPdh(3), + sdhItuSonetAnsi(5), + digitalWrapper(7), + lambda(8), + fiber(9), + fiberChannel(11) + } + +TeLinkSonetSdhIndication ::= TEXTUAL-CONVENTION + + + + STATUS current + DESCRIPTION + "This convention is used to indicate whether the interface + supports Standard or Arbitrary SONET/SDH. To simplify the + mapping process, the values used in this textual convention + match the values specified in the interface switching + capability specific information field, i.e., 0 for Standard + SONET/SDH and 1 for Arbitrary SONET/SDH." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + SYNTAX INTEGER { + standard(0), + arbitrary(1) + } + +-- Top level components of this MIB module + +-- Notifications +teLinkNotifications OBJECT IDENTIFIER ::= { teLinkStdMIB 0 } +-- Tables, Scalars +teLinkObjects OBJECT IDENTIFIER ::= { teLinkStdMIB 1 } +-- Conformance +teLinkConformance OBJECT IDENTIFIER ::= { teLinkStdMIB 2 } + +-- TE Link Table + +teLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the grouping of component links into + TE links and the grouping of TE links into bundled links." + ::= { teLinkObjects 1 } + +teLinkEntry OBJECT-TYPE + SYNTAX TeLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table exists for each ifEntry with an + ifType of teLink(200), i.e., for every TE link. An ifEntry + in the ifTable must exist before a teLinkEntry is created + with the corresponding ifIndex. If a TE link entry in the + ifTable is destroyed, then so is the corresponding entry + in the teLinkTable. The administrative and operational + status values are controlled from the ifEntry." + + + + INDEX { ifIndex } + ::= { teLinkTable 1 } + +TeLinkEntry ::= SEQUENCE { + teLinkAddressType InetAddressType, + teLinkLocalIpAddr InetAddress, + teLinkRemoteIpAddr InetAddress, + teLinkMetric Unsigned32, + teLinkMaximumReservableBandwidth TeLinkBandwidth, + teLinkProtectionType INTEGER, + teLinkWorkingPriority TeLinkPriority, + teLinkResourceClass Unsigned32, + teLinkIncomingIfId Integer32, + teLinkOutgoingIfId InterfaceIndexOrZero, + teLinkRowStatus RowStatus, + teLinkStorageType StorageType +} + +teLinkAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of Internet address for the TE link." + ::= { teLinkEntry 1 } + +teLinkLocalIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The local Internet address for numbered links. The type of + this address is determined by the value of the + teLinkAddressType object. + + For IPv4 and IPv6 numbered links, this object represents the + local IP address associated with the TE link. For an + unnumbered link, the local address is of type unknown, this + object is set to the zero length string, and the + teLinkOutgoingIfId object then identifies the unnumbered + address. + + If the TE link is a Forwarding Adjacency (FA), the local + IP address is set to the head-end address of the FA-LSP. + + If ipAddrTable is implemented, this object must have the + same value as the ipAdEntAddr object that belongs to the + row in ipAddrTable where ipAdEntIfIndex is equal to + + + + ifIndex." + ::= { teLinkEntry 2 } + +teLinkRemoteIpAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The remote Internet address for numbered links. The type of + this address is determined by the value of the + teLinkAddressType object. + + The remote IP address associated with the TE link (IPv4 and + IPv6 numbered links). For an unnumbered link, the remote + address is of type unknown, this object is set to the + zero length string, and the teLinkIncomingIfId object then + identifies the unnumbered address. + + If the TE link is a Forwarding Adjacency, the remote IP + address is set to the tail-end address of the FA-LSP." + ::= { teLinkEntry 3 } + +teLinkMetric OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The traffic engineering metric for the TE link is + derived from its component links. All component links + within the TE link must have the same traffic + engineering metric." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201" + ::= { teLinkEntry 4 } + +teLinkMaximumReservableBandwidth OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies the maximum reservable bandwidth on + the TE link. This is the union of the maximum reservable + bandwidth of all the component links within the + TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + + + + ::= { teLinkEntry 5 } + +teLinkProtectionType OBJECT-TYPE + SYNTAX INTEGER { + extraTraffic(1), + unprotected(2), + shared(3), + dedicated1For1(4), + dedicated1Plus1(5), + enhanced(6) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the link protection type of the + TE link. Descriptions of the different protection types can + be found in the 'Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)' + document." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203 and + Routing Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4202" + ::= { teLinkEntry 6 } + +teLinkWorkingPriority OBJECT-TYPE + SYNTAX TeLinkPriority + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object represents a priority value such that a new + connection with a higher priority, i.e., numerically lower + than this value, is guaranteed to be setup on a primary + link and not on a secondary link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkEntry 7 } + +teLinkResourceClass OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the TE link resource class. + The resource class is a 32 bit bitfield. The resource class + for a link bundle is derived from the resource class of its + + + + TE links. All TE links within a link bundle must have the + same resource class. Encoding of the resource class is + described in the 'Traffic Engineering (TE) Extensions to + OSPF Version 2' document." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201 + and Traffic Engineering (TE) Extensions to OSPF Version 2, + RFC 3630" + ::= { teLinkEntry 8 } + +teLinkIncomingIfId OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For unnumbered links, the incoming interface is set to the + outgoing interface identifier chosen by the neighboring LSR + for the reverse link corresponding to this TE link. If the + link is numbered, the value of this object is 0 and the + address is stored in the teLinkRemoteIpAddr instead." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201" + ::= { teLinkEntry 9 } + +teLinkOutgoingIfId OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If the link is unnumbered, the outgoing interface identifier + is set to the outgoing interface identifier chosen for the + TE link by the advertising LSR. If the link is numbered, the + value of this object is 0 and the address is stored in the + teLinkLocalIpAddr instead." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201" + ::= { teLinkEntry 10 } + +teLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. None of the writable objects in + a row can be changed if status is active(1)." + ::= { teLinkEntry 11 } + + + + +teLinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + teLinkTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { teLinkEntry 12 } + +-- End of teLinkTable + + +-- TE Link Descriptor Table + +teLinkDescriptorTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeLinkDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the interface switching capability + descriptors associated with the TE links." + ::= { teLinkObjects 2 } + +teLinkDescriptorEntry OBJECT-TYPE + SYNTAX TeLinkDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created for every TE link interface + switching capability descriptor. An ifEntry in the ifTable + must exist before a teLinkDescriptorEntry using the same + ifIndex is created. ifType of ifEntry must be teLink(200). + If a TE link entry in the ifTable is destroyed, then so are + all of the entries in the teLinkDescriptorTable that use the + ifIndex of this TE link." + INDEX { ifIndex, teLinkDescriptorId } + ::= { teLinkDescriptorTable 1 } + +TeLinkDescriptorEntry ::= SEQUENCE { + teLinkDescriptorId Unsigned32, + teLinkDescrSwitchingCapability TeLinkSwitchingCapability, + teLinkDescrEncodingType TeLinkEncodingType, + teLinkDescrMinLspBandwidth TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio0 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio1 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio2 TeLinkBandwidth, + + + + teLinkDescrMaxLspBandwidthPrio3 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio4 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio5 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio6 TeLinkBandwidth, + teLinkDescrMaxLspBandwidthPrio7 TeLinkBandwidth, + teLinkDescrInterfaceMtu Unsigned32, + teLinkDescrIndication TeLinkSonetSdhIndication, + teLinkDescrRowStatus RowStatus, + teLinkDescrStorageType StorageType +} + +teLinkDescriptorId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the link descriptor identifier." + ::= { teLinkDescriptorEntry 1 } + +teLinkDescrSwitchingCapability OBJECT-TYPE + SYNTAX TeLinkSwitchingCapability + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies interface switching capability of + the TE link, which is derived from its component links." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 2 } + +teLinkDescrEncodingType OBJECT-TYPE + SYNTAX TeLinkEncodingType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the TE link encoding type." + REFERENCE + "Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description, RFC 3471" + ::= { teLinkDescriptorEntry 3 } + +teLinkDescrMinLspBandwidth OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This attribute specifies the minimum LSP bandwidth on + the TE link. This is derived from the union of the + minimum LSP bandwidth of all the component links + associated with the TE link that can be used to carry + live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 4 } + +teLinkDescrMaxLspBandwidthPrio0 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 0 on the TE link. This is the union of the maximum + LSP bandwidth at priority 0 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 5 } + +teLinkDescrMaxLspBandwidthPrio1 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 1 on the TE link. This is the union of the maximum + LSP bandwidth at priority 1 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 6 } + +teLinkDescrMaxLspBandwidthPrio2 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 2 on the TE link. This is the union of the maximum + + + + LSP bandwidth at priority 2 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 7 } + +teLinkDescrMaxLspBandwidthPrio3 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 3 on the TE link. This is the union of the maximum + LSP bandwidth at priority 3 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 8 } + +teLinkDescrMaxLspBandwidthPrio4 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 4 on the TE link. This is the union of the maximum + LSP bandwidth at priority 4 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 9 } + +teLinkDescrMaxLspBandwidthPrio5 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 5 on the TE link. This is the union of the maximum + LSP bandwidth at priority 5 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + + + + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 10 } + +teLinkDescrMaxLspBandwidthPrio6 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 6 on the TE link. This is the union of the maximum + LSP bandwidth at priority 6 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 11 } + +teLinkDescrMaxLspBandwidthPrio7 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 7 on the TE link. This is the union of the maximum + LSP bandwidth at priority 7 of all the component links within + the TE link that can be used to carry live traffic." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 12 } + +teLinkDescrInterfaceMtu OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the interface MTU for the TE + link descriptor." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 13 } + +teLinkDescrIndication OBJECT-TYPE + SYNTAX TeLinkSonetSdhIndication + + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies whether this interface supports + Standard or Arbitrary SONET/SDH." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkDescriptorEntry 14 } + +teLinkDescrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object + can be changed if teLinkDescrRowStatus is in the active(1) + state." + ::= { teLinkDescriptorEntry 15 } + +teLinkDescrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + teLinkDescriptorTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { teLinkDescriptorEntry 16 } + +-- End of teLinkDescriptorTable + + +-- TE Link Shared Risk Link Group Table + +teLinkSrlgTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeLinkSrlgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the SRLGs associated with TE links." + ::= { teLinkObjects 3 } + +teLinkSrlgEntry OBJECT-TYPE + SYNTAX TeLinkSrlgEntry + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "An entry in this table contains information about an + SRLG associated with a TE link. + An ifEntry in the ifTable must exist before a + teLinkSrlgEntry using the same ifIndex is created. + The ifType of ifEntry must be teLink(200). + If a TE link entry in the ifTable is destroyed, then so + are all of the entries in the teLinkSrlgTable that use the + ifIndex of this TE link." + INDEX { ifIndex, teLinkSrlg } + ::= { teLinkSrlgTable 1 } + +TeLinkSrlgEntry ::= SEQUENCE { + teLinkSrlg Unsigned32, + teLinkSrlgRowStatus RowStatus, + teLinkSrlgStorageType StorageType +} + +teLinkSrlg OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This identifies an SRLG supported by the TE link. An SRLG is + identified with a 32-bit number that is unique within an IGP + domain. Zero is a valid SRLG number." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { teLinkSrlgEntry 1 } + +teLinkSrlgRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object can + be modified if teLinkSrlgRowStatus is active(1)." + ::= { teLinkSrlgEntry 2 } + +teLinkSrlgStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + + + + teLinkSrlgTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { teLinkSrlgEntry 3 } + +-- End of teLinkSrlgTable + + +-- TE Link Bandwidth Table + +teLinkBandwidthTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeLinkBandwidthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the priority-based bandwidth table + for TE links." + ::= { teLinkObjects 4 } + +teLinkBandwidthEntry OBJECT-TYPE + SYNTAX TeLinkBandwidthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains information about + the priority-based bandwidth of TE links. An ifEntry in the + ifTable must exist before a teLinkBandwidthEntry using the + same ifIndex is created. The ifType of ifEntry must be + teLink(200). If a TE link entry in the ifTable is destroyed, + then so are all of the entries in the teLinkBandwidthTable + that use the ifIndex of this TE link." + INDEX { ifIndex, teLinkBandwidthPriority } + ::= { teLinkBandwidthTable 1 } + +TeLinkBandwidthEntry ::= SEQUENCE { + teLinkBandwidthPriority TeLinkPriority, + teLinkBandwidthUnreserved TeLinkBandwidth, + teLinkBandwidthRowStatus RowStatus, + teLinkBandwidthStorageType StorageType +} + +teLinkBandwidthPriority OBJECT-TYPE + SYNTAX TeLinkPriority + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This attribute specifies the priority. A value of 0 is valid + as specified in the 'Traffic Engineering (TE) Extensions to + + + + OSPF Version 2' document." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203 and + Traffic Engineering (TE) Extensions to OSPF Version 2, + RFC 3630" + ::= { teLinkBandwidthEntry 1 } + +teLinkBandwidthUnreserved OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies the TE link unreserved + bandwidth at priority p. It is the sum of the unreserved + bandwidths at priority p of all component links associated + with the TE link (excluding all links that are strictly + used as protecting links)." + REFERENCE + "Link Bundling in MPLS Traffic Engineering (TE), RFC 4201" + ::= { teLinkBandwidthEntry 2 } + +teLinkBandwidthRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object + can be modified when teLinkBandwidthRowStatus is active(1)." + ::= { teLinkBandwidthEntry 3 } + +teLinkBandwidthStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + teLinkBandwidthTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { teLinkBandwidthEntry 4 } + +-- End of teLinkBandwidthTable + + +-- Component Link Table + + + +componentLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF ComponentLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the component link parameters." + ::= { teLinkObjects 5 } + +componentLinkEntry OBJECT-TYPE + SYNTAX ComponentLinkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table exists for each ifEntry that + represents a component link. An ifEntry must exist in + the ifTable before a componentLinkEntry is created with + the corresponding ifIndex. ifEntry's ifType can be + of any interface type that has been defined for TE Link + interworking. Examples include ATM, Frame Relay, Ethernet, + etc. If an entry representing a component link is destroyed + in the ifTable, then so is the corresponding entry in the + componentLinkTable. The administrative and operational + status values are controlled from the ifEntry." + INDEX { ifIndex } + ::= { componentLinkTable 1 } + +ComponentLinkEntry ::= SEQUENCE { + componentLinkMaxResBandwidth TeLinkBandwidth, + componentLinkPreferredProtection TeLinkProtection, + componentLinkCurrentProtection TeLinkProtection, + componentLinkRowStatus RowStatus, + componentLinkStorageType StorageType +} + +componentLinkMaxResBandwidth OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum reservable bandwidth on + the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkEntry 1 } + +componentLinkPreferredProtection OBJECT-TYPE + + + + SYNTAX TeLinkProtection + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies whether this component link is + a primary or secondary entity." + ::= { componentLinkEntry 2 } + +componentLinkCurrentProtection OBJECT-TYPE + SYNTAX TeLinkProtection + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies whether this component link is + currently used as primary or secondary link." + ::= { componentLinkEntry 3 } + +componentLinkRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object + can be modified when componentLinkRowStatus is active(1)." + ::= { componentLinkEntry 4 } + +componentLinkStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + componentLinkTable. Conceptual rows having the value + 'permanent' need not allow write-access to any + columnar object in the row." + ::= { componentLinkEntry 5 } + +-- End of componentLinkTable + + +-- Component Link Descriptor Table + +componentLinkDescriptorTable OBJECT-TYPE + SYNTAX SEQUENCE OF ComponentLinkDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "This table specifies the interface switching capability + descriptors associated with the component links." + ::= { teLinkObjects 6 } + +componentLinkDescriptorEntry OBJECT-TYPE + SYNTAX ComponentLinkDescriptorEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table is created for every component link + descriptor. An ifEntry in the ifTable must exist before a + componentLinkDescriptorEntry using the same ifIndex is + created. ifEntry's ifType can be of any interface type that + has been defined for TE Link interworking. Examples include + ATM, Frame Relay, Ethernet, etc. If a component link entry + in the ifTable is destroyed, then so are all entries in the + componentLinkDescriptorTable that use the ifIndex of this + component link." + INDEX { ifIndex, componentLinkDescrId } + ::= { componentLinkDescriptorTable 1 } + +ComponentLinkDescriptorEntry ::= SEQUENCE { + componentLinkDescrId Unsigned32, + componentLinkDescrSwitchingCapability TeLinkSwitchingCapability, + componentLinkDescrEncodingType TeLinkEncodingType, + componentLinkDescrMinLspBandwidth TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio0 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio1 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio2 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio3 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio4 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio5 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio6 TeLinkBandwidth, + componentLinkDescrMaxLspBandwidthPrio7 TeLinkBandwidth, + componentLinkDescrInterfaceMtu Unsigned32, + componentLinkDescrIndication TeLinkSonetSdhIndication, + componentLinkDescrRowStatus RowStatus, + componentLinkDescrStorageType StorageType +} + +componentLinkDescrId OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object specifies the link descriptor identifier." + ::= { componentLinkDescriptorEntry 1 } + + + + +componentLinkDescrSwitchingCapability OBJECT-TYPE + SYNTAX TeLinkSwitchingCapability + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies link multiplexing capabilities of + the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 2 } + +componentLinkDescrEncodingType OBJECT-TYPE + SYNTAX TeLinkEncodingType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the component link encoding type." + REFERENCE + "Generalized Multi-Protocol Label Switching (GMPLS) Signaling + Functional Description, RFC 3471" + ::= { componentLinkDescriptorEntry 3 } + +componentLinkDescrMinLspBandwidth OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the minimum LSP bandwidth on + the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 4 } + +componentLinkDescrMaxLspBandwidthPrio0 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 0 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 5 } + + + +componentLinkDescrMaxLspBandwidthPrio1 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 1 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 6 } + +componentLinkDescrMaxLspBandwidthPrio2 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 2 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 7 } + +componentLinkDescrMaxLspBandwidthPrio3 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 3 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 8 } + +componentLinkDescrMaxLspBandwidthPrio4 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 4 on the component link." + REFERENCE + + + + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 9 } + +componentLinkDescrMaxLspBandwidthPrio5 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "thousand bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 5 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 10 } + +componentLinkDescrMaxLspBandwidthPrio6 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 6 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 11 } + +componentLinkDescrMaxLspBandwidthPrio7 OBJECT-TYPE + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies the maximum LSP bandwidth at + priority 7 on the component link." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 12 } + +componentLinkDescrInterfaceMtu OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "This attribute specifies the interface MTU for the component + link descriptor." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 13 } + +componentLinkDescrIndication OBJECT-TYPE + SYNTAX TeLinkSonetSdhIndication + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This attribute specifies whether this interface supports + Standard or Arbitrary SONET/SDH." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkDescriptorEntry 14 } + +componentLinkDescrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object + can be modified when componentLinkDescrRowStatus + is active(1)." + ::= { componentLinkDescriptorEntry 15 } + +componentLinkDescrStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + componentLinkDescriptorTable. Conceptual rows + having the value 'permanent' need not allow write-access + to any columnar object in the row." + ::= { componentLinkDescriptorEntry 16 } + +-- End of componentLinkDescriptorTable + + +-- Component Link Bandwidth Table + +componentLinkBandwidthTable OBJECT-TYPE + SYNTAX SEQUENCE OF ComponentLinkBandwidthEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table specifies the priority-based bandwidth + for component links." + ::= { teLinkObjects 7 } + +componentLinkBandwidthEntry OBJECT-TYPE + SYNTAX ComponentLinkBandwidthEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in this table contains information about + the priority-based bandwidth on component links. + An ifEntry in the ifTable must exist before a + componentLinkBandwidthEntry using the same ifIndex is + created. ifEntry's ifType can be of any interface type that + has been defined for TE Link interworking. Examples + include ATM, Frame Relay, Ethernet, etc. If a component link + entry in the ifTable is destroyed, then so are all entries + in the componentLinkBandwidthTable that use the ifIndex of + this component link." + INDEX { ifIndex, componentLinkBandwidthPriority } + ::= { componentLinkBandwidthTable 1 } + +ComponentLinkBandwidthEntry ::= SEQUENCE { + componentLinkBandwidthPriority TeLinkPriority, + componentLinkBandwidthUnreserved TeLinkBandwidth, + componentLinkBandwidthRowStatus RowStatus, + componentLinkBandwidthStorageType StorageType +} + +componentLinkBandwidthPriority OBJECT-TYPE + SYNTAX TeLinkPriority + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This attribute specifies the priority. A value of 0 is valid + as specified in the 'Traffic Engineering (TE) Extensions to + OSPF Version 2' document." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203 and + Traffic Engineering (TE) Extensions to OSPF Version 2, + RFC 3630" + ::= { componentLinkBandwidthEntry 1 } + +componentLinkBandwidthUnreserved OBJECT-TYPE + + + + SYNTAX TeLinkBandwidth + UNITS "bps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute specifies the component link unreserved + bandwidth at priority p." + REFERENCE + "OSPF Extensions in Support of Generalized Multi-Protocol + Label Switching (GMPLS), RFC 4203" + ::= { componentLinkBandwidthEntry 2 } + +componentLinkBandwidthRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This variable is used to create, modify, and/or + delete a row in this table. No read-create object can + be modified when componentLinkBandwidthRowStatus is + active(1)." + ::= { componentLinkBandwidthEntry 3 } + +componentLinkBandwidthStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row in the + componentLinkBandwidthTable. Conceptual rows + having the value 'permanent' need not allow write-access + to any columnar object in the row." + ::= { componentLinkBandwidthEntry 4 } + +-- End of componentLinkBandwidthTable + + +-- Module compliance + +teLinkCompliances + OBJECT IDENTIFIER ::= { teLinkConformance 1 } + +teLinkGroups + OBJECT IDENTIFIER ::= { teLinkConformance 2 } + +teLinkModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + + + "Compliance statement for agents that support read-create + so that both configuration and monitoring of TE links can + be accomplished via this MIB module." + MODULE -- this module + + MANDATORY-GROUPS { teLinkGroup, + teLinkBandwidthGroup, + componentLinkBandwidthGroup } + + GROUP teLinkSrlgGroup + DESCRIPTION + "This group is mandatory for GMPLS enabled devices." + + GROUP teLinkPscGroup + DESCRIPTION + "This group is mandatory for devices that support the + packet switching capability." + + GROUP teLinkTdmGroup + DESCRIPTION + "This group is mandatory for devices that support the TDM + switching capability." + + -- teLinkTable + + OBJECT teLinkAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for numbered links. For unnumbered links, the + unknown(0) address type needs to be supported." + + OBJECT teLinkLocalIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "Size of TE link IP address depends on type of TE link. + TE link IP address size is zero if the link is unnumbered, + four if the link IP address is IPv4, and sixteen if the + link IP address is IPv6." + + OBJECT teLinkRemoteIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + DESCRIPTION + "Size of TE link IP address depends on type of TE link. + TE link IP address size is zero if the link is unnumbered, + four if the link IP address is IPv4, and sixteen if the + link IP address is IPv6." + + + + + OBJECT teLinkRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- teLinkDescriptorTable + + OBJECT teLinkDescrRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- teLinkSrlgTable + + OBJECT teLinkSrlgRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- teLinkBandwidthTable + + OBJECT teLinkBandwidthRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- componentLinkTable + + OBJECT componentLinkRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + + + + -- componentLinkDescriptorTable + + OBJECT componentLinkDescrRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + -- componentLinkBandwidthTable + + OBJECT componentLinkBandwidthRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) } + DESCRIPTION + "Support for notReady(3) and createAndWait(5) is + not required." + + ::= { teLinkCompliances 1 } + +teLinkModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance statement for agents that support the + monitoring of the TE link MIB module." + MODULE -- this module + + MANDATORY-GROUPS { teLinkGroup, + teLinkBandwidthGroup, + componentLinkBandwidthGroup } + + GROUP teLinkSrlgGroup + DESCRIPTION + "This group is mandatory for GMPLS enabled devices." + + GROUP teLinkPscGroup + DESCRIPTION + "This group is mandatory for devices that support the + packet switching capability." + + GROUP teLinkTdmGroup + DESCRIPTION + "This group is mandatory for devices that support the TDM + switching capability." + + -- teLinkTable + + + + OBJECT teLinkAddressType + SYNTAX INTEGER { unknown(0), ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "Only ipv4(1) and ipv6(2) address types need to be + supported for numbered links. For unnumbered links, the + unknown(0) address type needs to be supported." + + OBJECT teLinkLocalIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Size of TE link IP address depends on type of TE link. + TE link IP address size is zero if the link is unnumbered, + four if the link IP address is IPv4, and sixteen if the + link IP address is IPv6." + + OBJECT teLinkRemoteIpAddr + SYNTAX InetAddress (SIZE(0|4|16)) + MIN-ACCESS read-only + DESCRIPTION + "Size of TE link IP address depends on type of TE link. + TE link IP address size is zero if the link is unnumbered, + four if the link IP address is IPv4, and sixteen if the + link IP address is IPv6." + + OBJECT teLinkProtectionType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkWorkingPriority + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT teLinkStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + + -- teLinkDescriptorTable + + OBJECT teLinkDescrSwitchingCapability + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrEncodingType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMinLspBandwidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio0 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio1 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio6 + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrMaxLspBandwidthPrio7 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT teLinkDescrRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT teLinkDescrStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- teLinkSrlgTable + + OBJECT teLinkSrlgRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT teLinkSrlgStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- teLinkBandwidthTable + + OBJECT teLinkBandwidthRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT teLinkBandwidthStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + -- componentLinkTable + + OBJECT componentLinkMaxResBandwidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkPreferredProtection + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT componentLinkStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- componentLinkDescriptorTable + + OBJECT componentLinkDescrSwitchingCapability + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrEncodingType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMinLspBandwidth + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio0 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio1 + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio2 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio3 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio4 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio5 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio6 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrMaxLspBandwidthPrio7 + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrInterfaceMtu + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrIndication + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT componentLinkDescrRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + + + + only status that needs to be supported." + + OBJECT componentLinkDescrStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + -- componentLinkBandwidthTable + + OBJECT componentLinkBandwidthRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required and active(1) is the + only status that needs to be supported." + + OBJECT componentLinkBandwidthStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { teLinkCompliances 2 } + +-- Units of conformance + +teLinkGroup OBJECT-GROUP + OBJECTS { teLinkAddressType, + teLinkLocalIpAddr, + teLinkRemoteIpAddr, + teLinkMetric, + teLinkProtectionType, + teLinkWorkingPriority, + teLinkResourceClass, + teLinkIncomingIfId, + teLinkOutgoingIfId, + teLinkRowStatus, + teLinkStorageType, + teLinkDescrSwitchingCapability, + teLinkDescrEncodingType, + teLinkDescrRowStatus, + teLinkDescrStorageType, + componentLinkPreferredProtection, + componentLinkCurrentProtection, + componentLinkRowStatus, + componentLinkStorageType, + componentLinkDescrSwitchingCapability, + componentLinkDescrEncodingType, + componentLinkDescrRowStatus, + + + + componentLinkDescrStorageType + } + + STATUS current + DESCRIPTION + "Collection of objects needed for the management of + resources associated with TE links." + ::= { teLinkGroups 1 } + +teLinkSrlgGroup OBJECT-GROUP + OBJECTS { teLinkSrlgRowStatus, + teLinkSrlgStorageType + } + + STATUS current + DESCRIPTION + "Collection of objects needed for the management of + SRLG resources associated with TE links." + ::= { teLinkGroups 2 } + +teLinkBandwidthGroup OBJECT-GROUP + OBJECTS { teLinkMaximumReservableBandwidth, + teLinkDescrMaxLspBandwidthPrio0, + teLinkDescrMaxLspBandwidthPrio1, + teLinkDescrMaxLspBandwidthPrio2, + teLinkDescrMaxLspBandwidthPrio3, + teLinkDescrMaxLspBandwidthPrio4, + teLinkDescrMaxLspBandwidthPrio5, + teLinkDescrMaxLspBandwidthPrio6, + teLinkDescrMaxLspBandwidthPrio7, + teLinkBandwidthUnreserved, + teLinkBandwidthRowStatus, + teLinkBandwidthStorageType + } + + STATUS current + DESCRIPTION + "Collection of objects needed for the management of + the bandwidth resources associated with TE links and + component links." + ::= { teLinkGroups 3 } + +componentLinkBandwidthGroup OBJECT-GROUP + OBJECTS { componentLinkMaxResBandwidth, + componentLinkDescrMaxLspBandwidthPrio0, + componentLinkDescrMaxLspBandwidthPrio1, + componentLinkDescrMaxLspBandwidthPrio2, + componentLinkDescrMaxLspBandwidthPrio3, + + + + componentLinkDescrMaxLspBandwidthPrio4, + componentLinkDescrMaxLspBandwidthPrio5, + componentLinkDescrMaxLspBandwidthPrio6, + componentLinkDescrMaxLspBandwidthPrio7, + componentLinkBandwidthUnreserved, + componentLinkBandwidthRowStatus, + componentLinkBandwidthStorageType + } + + STATUS current + DESCRIPTION + "Collection of objects needed for the management of the + bandwidth parameters associated with component links." + ::= { teLinkGroups 4 } + +teLinkPscGroup OBJECT-GROUP + OBJECTS { teLinkDescrMinLspBandwidth, + teLinkDescrInterfaceMtu, + componentLinkDescrMinLspBandwidth, + componentLinkDescrInterfaceMtu + } + + STATUS current + DESCRIPTION + "Collection of objects needed for devices that are + packet switch capable." + ::= { teLinkGroups 5 } + +teLinkTdmGroup OBJECT-GROUP + OBJECTS { teLinkDescrMinLspBandwidth, + teLinkDescrIndication, + componentLinkDescrMinLspBandwidth, + componentLinkDescrIndication + } + + STATUS current + DESCRIPTION + "Collection of objects needed for devices that are + TDM switching capable." + ::= { teLinkGroups 6 } + +-- End of TE-LINK-STD-MIB +END diff --git a/mibs/ietf/TE-MIB b/mibs/ietf/TE-MIB new file mode 100644 index 0000000..408ee93 --- /dev/null +++ b/mibs/ietf/TE-MIB @@ -0,0 +1,1773 @@ +TE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, mib-2, + Integer32, Gauge32, Counter32, + Counter64, Unsigned32, TimeTicks FROM SNMPv2-SMI + + RowStatus, StorageType, TimeStamp, + TruthValue FROM SNMPv2-TC + + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + + TeHopAddress, TeHopAddressType, + MplsBitRate FROM MPLS-TC-STD-MIB; + +teMIB MODULE-IDENTITY + LAST-UPDATED "200501040000Z" -- 01 January 2005 + ORGANIZATION "IETF Traffic Engineering Working Group" + CONTACT-INFO " + Editor: Kireeti Kompella + Postal: Juniper Networks, Inc. + 1194 Mathilda Ave + + + + Sunnyvale, CA 94089 + Tel: +1 408 745 2000 + E-mail: kireeti@juniper.net + + The IETF Traffic Engineering Working Group is + chaired by Jim Boyle and Ed Kern. + + WG Mailing List information: + + General Discussion: te-wg@ops.ietf.org + To Subscribe: te-wg-request@ops.ietf.org + In Body: subscribe + Archive: ftp://ops.ietf.org/pub/lists + + Comments on the MIB module should be sent to the + mailing list. The archives for this mailing list + should be consulted for previous discussion on + this MIB. + " + DESCRIPTION "The Traffic Engineering MIB module. + + Copyright (C) The Internet Society (2005). This + version of this MIB module is part of RFC 3970; + see the RFC itself for full legal notices. + " + + -- revision history + + REVISION "200501040000Z" -- 01 January 2005 + DESCRIPTION "Initial version, published as RFC 3970." + ::= { mib-2 122 } + +-- Top level objects + +teMIBNotifications OBJECT IDENTIFIER ::= { teMIB 0 } +teMIBObjects OBJECT IDENTIFIER ::= { teMIB 1 } +teMIBConformance OBJECT IDENTIFIER ::= { teMIB 2 } + +-- **************************************************************** +-- +-- TE MIB Objects +-- + +-- TE Info + +teInfo OBJECT IDENTIFIER ::= { teMIBObjects 1 } + +teDistProtocol OBJECT-TYPE + + + + SYNTAX BITS { + other(0), + isis(1), + ospf(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "IGP used to distribute Traffic Engineering + information and topology to each device for the + purpose of automatic path computation. More than + one IGP may be used to distribute TE information. + " + ::= { teInfo 1 } + +teSignalingProto OBJECT-TYPE + SYNTAX BITS { + other(0), + rsvpte(1), + crldp(2), + static(3) -- static configuration + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Traffic Engineering signaling protocols supported + by this device. More than one protocol may be + supported. + " + REFERENCE "For a description of RSVP-TE, see RFC 3209; + for CR-LDP, see RFC 3212. + " + ::= { teInfo 2 } + +teNotificationEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION "If this object is true, then it enables the + generation of notifications from this MIB module. + Otherwise notifications are not generated. + " + DEFVAL { false } + ::= { teInfo 3 } + +teNextTunnelIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An integer that may be used as a new Index in the + + + + teTunnelTable. + + The special value of 0 indicates that no more new + entries can be created in that table. + + When this MIB module is used for configuration, this + object always contains a legal value (if non-zero) + for an index that is not currently used in that + table. The Command Generator (Network Management + Application) reads this variable and uses the + (non-zero) value read when creating a new row with + an SNMP SET. When the SET is performed, the Command + Responder (agent) must determine whether the value + is indeed still unused; Two Network Management + Applications may attempt to create a row + (configuration entry) simultaneously and use the + same value. If it is currently unused, the SET + succeeds, and the Command Responder (agent) changes + the value of this object according to an + implementation-specific algorithm. If the value is + in use, however, the SET fails. The Network + Management Application must then re-read this + variable to obtain a new usable value. + " + ::= { teInfo 4 } + +teNextPathHopIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An integer that may be used as a new Index in the + tePathHopTable. + + The special value of 0 indicates that no more new + entries can be created in that table. + + When this MIB module is used for configuration, this + object always contains a legal value (if non-zero) + for an index that is not currently used in that + table. The Command Generator (Network Management + Application) reads this variable and uses the + (non-zero) value read when creating a new row with + an SNMP SET. When the SET is performed, the Command + Responder (agent) must determine whether the value + is indeed still unused; Two Network Management + Applications may attempt to create a row + (configuration entry) simultaneously and use the + same value. If it is currently unused, the SET + + + + succeeds, and the Command Responder (agent) changes + the value of this object according to an + implementation-specific algorithm. If the value is + in use, however, the SET fails. The Network + Management Application must then re-read this + variable to obtain a new usable value. + " + ::= { teInfo 5 } + +teConfiguredTunnels OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of currently configured Tunnels." + ::= { teInfo 6 } + +teActiveTunnels OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of currently active Tunnels." + ::= { teInfo 7 } + +tePrimaryTunnels OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Number of currently active Tunnels running on + their primary paths. + " + ::= { teInfo 8 } + +teAdminGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeAdminGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A mapping of configured administrative groups. Each + entry represents an Administrative Group and + provides a name and index for the group. + Administrative groups are used to label links in the + Traffic Engineering topology in order to place + constraints (include and exclude) on Tunnel paths. + + A groupName can only be linked to one group number. + The groupNumber is the number assigned to the + administrative group used in constraints, + such as tePathIncludeAny or tePathIncludeAll. + " + + + + ::= { teInfo 9 } + +teAdminGroupEntry OBJECT-TYPE + SYNTAX TeAdminGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A mapping between a configured group number and + its human-readable name. The group number should + be between 1 and 32, inclusive. Group number n + represents bit number (n-1) in the bit vector for + Include/Exclude constraints. + + All entries in this table MUST be kept in stable + storage so that they will re-appear in case of a + restart/reboot. + " + INDEX { teAdminGroupNumber } + ::= { teAdminGroupTable 1 } + +TeAdminGroupEntry ::= + SEQUENCE { + teAdminGroupNumber Integer32, + teAdminGroupName SnmpAdminString, + teAdminGroupRowStatus RowStatus + } + +teAdminGroupNumber OBJECT-TYPE + SYNTAX Integer32 (1..32) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index of the administrative group." + ::= { teAdminGroupEntry 1 } + +teAdminGroupName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Name of the administrative group." + ::= { teAdminGroupEntry 2 } + +teAdminGroupRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + The value of this object has no effect on whether + other objects in this conceptual row can be + + + + modified. + " + ::= { teAdminGroupEntry 3 } + +-- Tunnel Table + +teTunnelTable OBJECT-TYPE + SYNTAX SEQUENCE OF TeTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of Configured Traffic Tunnels." + ::= { teMIBObjects 2 } + +teTunnelEntry OBJECT-TYPE + SYNTAX TeTunnelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry containing information about a particular + Traffic Tunnel. + " + INDEX { teTunnelIndex } + ::= { teTunnelTable 1 } + +TeTunnelEntry ::= + SEQUENCE { + teTunnelIndex Unsigned32, + teTunnelName SnmpAdminString, + teTunnelNextPathIndex Unsigned32, + -- Conceptual row information: + teTunnelRowStatus RowStatus, + teTunnelStorageType StorageType, + -- Address information: + teTunnelSourceAddressType TeHopAddressType, + teTunnelSourceAddress TeHopAddress, + teTunnelDestinationAddressType TeHopAddressType, + teTunnelDestinationAddress TeHopAddress, + -- State/performance information: + teTunnelState INTEGER, + teTunnelDiscontinuityTimer TimeStamp, + teTunnelOctets Counter64, + teTunnelPackets Counter64, + teTunnelLPOctets Counter32, + teTunnelLPPackets Counter32, + teTunnelAge TimeTicks, + teTunnelTimeUp TimeTicks, + teTunnelPrimaryTimeUp TimeTicks, + teTunnelTransitions Counter32, + teTunnelLastTransition TimeTicks, + + + + teTunnelPathChanges Counter32, + teTunnelLastPathChange TimeTicks, + teTunnelConfiguredPaths Gauge32, + teTunnelStandbyPaths Gauge32, + teTunnelOperationalPaths Gauge32 + } + +teTunnelIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "A unique index that identifies a Tunnel. If the TE + Tunnel is considered an interface, then this index + must match the interface index of the corresponding + interface. Otherwise, this index must be at least + 2^24, so that it does not overlap with any existing + interface index. + " + ::= { teTunnelEntry 1 } + +teTunnelName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "Name of the Traffic Tunnel. + + Note that the name of a Tunnel MUST be unique. + When a SET request contains a name that is already + in use for another entry, then the implementation + must return an inconsistentValue error. + + The value of this object cannot be changed if the + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { teTunnelEntry 2 } + +teTunnelNextPathIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "An integer that may be used as a new Index for the + next Path in this Tunnel. + + The special value of 0 indicates that no more Paths + can be created for this Tunnel, or that no more new + entries can be created in tePathTable. + + + + + When this MIB module is used for configuration, this + object always contains a legal value (if non-zero) + for an index that is not currently used in that + table. The Command Generator (Network Management + Application) reads this variable and uses the + (non-zero) value read when creating a new row with + an SNMP SET. When the SET is performed, the Command + Responder (agent) must determine whether the value + is indeed still unused; Two Network Management + Applications may attempt to create a row + (configuration entry) simultaneously and use the + same value. If it is currently unused, the SET + succeeds, and the Command Responder (agent) changes + the value of this object according to an + implementation-specific algorithm. If the value is + in use, however, the SET fails. The Network + Management Application must then re-read this + variable to obtain a new usable value. + " + ::= { teTunnelEntry 3 } + +teTunnelRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + When the value of this object is 'active', then + the values for the corresponding objects + teTunnelName, teTunnelSourceAddressType, + teTunnelSourceAddress, + teTunnelDestinationAddressType, and + teTunnelDestinationAddress cannot be changed. + " + ::= { teTunnelEntry 4 } + +teTunnelStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need + not allow write-access to any columnar objects + in the row. + " + ::= { teTunnelEntry 5 } + + + + +teTunnelSourceAddressType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The type of Traffic Engineered Tunnel hop address + for the source of this Tunnel. Typically, this + address type is IPv4 or IPv6, with a prefix length + of 32 or 128, respectively. If the TE Tunnel path + is being computed by a path computation server, + however, it is possible to use more flexible source + address types, such as AS numbers or prefix lengths + less than host address lengths. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { teTunnelEntry 6 } + +teTunnelSourceAddress OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Source Traffic Engineered Tunnel hop address of + this Tunnel. + + The type of this address is determined by the value + of the corresponding teTunnelSourceAddressType. + + Note that the source and destination addresses of a + Tunnel can be different address types. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { teTunnelEntry 7 } + +teTunnelDestinationAddressType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The type of Traffic Engineered Tunnel hop address + for the destination of this Tunnel. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + + + + " + ::= { teTunnelEntry 8 } + +teTunnelDestinationAddress OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Destination Traffic Engineered Tunnel hop + address of this Tunnel. + + The type of this address is determined by the value + of the corresponding teTunnelDestinationAddressType. + + Note that source and destination addresses of a + Tunnel can be different address types. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { teTunnelEntry 9 } + +teTunnelState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + up(2), + down(3), + testing(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The operational state of the Tunnel." + ::= { teTunnelEntry 10 } + +teTunnelDiscontinuityTimer OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The value of sysUpTime on the most recent occasion + at which any one or more of this tunnel's counters + suffered a discontinuity. The relevant counters + are teTunnelOctets, teTunnelPackets, + teTunnelLPOctets, and teTunnelLPPackets. If no such + discontinuities have occurred since the last + re-initialization of the local management subsystem + then this object contains a zero value. + " + ::= { teTunnelEntry 11 } + + + +teTunnelOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of octets that have been forwarded over + the Tunnel. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system, + and at other times, as indicated by the value of + teTunnelDiscontinuityTimer. + " + ::= { teTunnelEntry 12 } + +teTunnelPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of packets that have been forwarded over + the Tunnel. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times, as indicated by the value of + teTunnelDiscontinuityTimer. + " + ::= { teTunnelEntry 13 } + +teTunnelLPOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of octets that have been forwarded over + the Tunnel. + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times, as indicated by the value of + teTunnelDiscontinuityTimer. + " + ::= { teTunnelEntry 14 } + +teTunnelLPPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of packets that have been forwarded over + the Tunnel. + + + + Discontinuities in the value of this counter can + occur at re-initialization of the management system + and at other times, as indicated by the value of + teTunnelDiscontinuityTimer. + " + ::= { teTunnelEntry 15 } + +teTunnelAge OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The age (i.e., time from creation of this conceptual + row till now) of this Tunnel in hundredths of a + second. Note that because TimeTicks wrap in about + 16 months, this value is best used in interval + measurements. + " + ::= { teTunnelEntry 16 } + +teTunnelTimeUp OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total time in hundredths of a second that this + Tunnel has been operational. Note that because + TimeTicks wrap in about 16 months, this value is + best used in interval measurements. + + An example of usage of this object would be to + compute the percentage up time over a period of time + by obtaining values of teTunnelAge and + teTunnelTimeUp at two points in time and computing + the following ratio: + ((teTunnelTimeUp2 - teTunnelTimeUp1)/ + (teTunnelAge2 - teTunnelAge1)) * 100 %. In doing + so, the management station must account for + wrapping of the values of teTunnelAge and + teTunnelTimeUp between the two measurements. + " + ::= { teTunnelEntry 17 } + +teTunnelPrimaryTimeUp OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The total time in hundredths of a second that this + Tunnel's primary path has been operational. Note + that because TimeTicks wrap in about 16 months, this + + + + value is best used in interval measurements. + + An example of usage of this field would be to + compute what percentage of time that a TE Tunnel was + on the primary path over a period of time by + computing + ((teTunnelPrimaryTimeUp2 - teTunnelPrimaryTimeUp1)/ + (teTunnelTimeUp2 - teTunnelTimeUp1))*100 %. In + doing so, the management station must account for + wrapping of the values of teTunnelPrimaryTimeUp and + teTunnelTimeUp between the two measurements. + " + ::= { teTunnelEntry 18 } + +teTunnelTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of operational state transitions + (up -> down and down -> up) this Tunnel has + undergone. + " + ::= { teTunnelEntry 19 } + +teTunnelLastTransition OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The time in hundredths of a second since the last + operational state transition occurred on this + Tunnel. + + Note that if the last transition was over 16 + months ago, this value will be inaccurate. + " + ::= { teTunnelEntry 20 } + +teTunnelPathChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of path changes this Tunnel has had." + ::= { teTunnelEntry 21 } + +teTunnelLastPathChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION "The time in hundredths of a second since the last + path change occurred on this Tunnel. + + Note that if the last transition was over 16 + months ago, this value will be inaccurate. + + Path changes may be caused by network events or by + reconfiguration that affects the path. + " + ::= { teTunnelEntry 22 } + +teTunnelConfiguredPaths OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of paths configured for this Tunnel." + ::= { teTunnelEntry 23 } + +teTunnelStandbyPaths OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of standby paths configured for this + Tunnel. + " + ::= { teTunnelEntry 24 } + +teTunnelOperationalPaths OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The number of operational paths for this Tunnel. + This includes the path currently active, as + well as operational standby paths. + " + ::= { teTunnelEntry 25 } + +-- **************************************************************** +-- +-- Tunnel Path Table +-- + +tePathTable OBJECT-TYPE + SYNTAX SEQUENCE OF TePathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of Configured Traffic Tunnels." + ::= { teMIBObjects 3 } + + + +tePathEntry OBJECT-TYPE + SYNTAX TePathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry containing information about a particular + Traffic Tunnel. Each Traffic Tunnel can have zero + or more Traffic Paths. + + As a Traffic Path can only exist over an existing + Traffic Tunnel, all tePathEntries with + a value of n for teTunnelIndex MUST be removed by + the implementation when the corresponding + teTunnelEntry with a value of n for teTunnelIndex + is removed. + " + INDEX { teTunnelIndex, tePathIndex } + ::= { tePathTable 1 } + +TePathEntry ::= + SEQUENCE { + tePathIndex Unsigned32, + tePathName SnmpAdminString, + -- Conceptual row information + tePathRowStatus RowStatus, + tePathStorageType StorageType, + -- Path properties + tePathType INTEGER, + tePathConfiguredRoute Unsigned32, + tePathBandwidth MplsBitRate, + tePathIncludeAny Unsigned32, + tePathIncludeAll Unsigned32, + tePathExclude Unsigned32, + tePathSetupPriority Integer32, + tePathHoldPriority Integer32, + tePathProperties BITS, + -- Path status + tePathOperStatus INTEGER, + tePathAdminStatus INTEGER, + tePathComputedRoute Unsigned32, + tePathRecordedRoute Unsigned32 + } + +tePathIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An index that uniquely identifies a path within + a Tunnel. + + + + The combination of thus + uniquely identifies a path among all paths on this + router. + " + ::= { tePathEntry 1 } + +tePathName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The name of this path. + + A pathName must be unique within the set of paths + over a single tunnel. If a SET request is received + with a duplicate name, then the implementation MUST + return an inconsistentValue error. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { tePathEntry 2 } + +tePathRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + When the value of this object is 'active', then + the value of tePathName cannot be changed. All + other writable objects may be changed; however, + these changes may affect traffic going over the TE + tunnel or require the path to be computed and/or + re-signaled. + " + ::= { tePathEntry 3 } + +tePathStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need + not allow write-access to any columnar objects + in the row. + " + + + + ::= { tePathEntry 4 } + +tePathType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + primary(2), + standby(3), + secondary(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The type for this PathEntry; i.e., whether this path + is a primary path, a standby path, or a secondary + path. + " + ::= { tePathEntry 5 } + +tePathConfiguredRoute OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The route that this TE path is configured to follow; + i.e., an ordered list of hops. The value of this + object gives the primary index into the Hop Table. + The secondary index is the hop count in the path, so + to get the route, one could get the first hop with + index in the Hop Table + and do a getnext to get subsequent hops. + " + ::= { tePathEntry 6 } + +tePathBandwidth OBJECT-TYPE + SYNTAX MplsBitRate + UNITS "Kilobits per second" + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The configured bandwidth for this Tunnel, + in units of thousands of bits per second (Kbps). + " + DEFVAL { 0 } + ::= { tePathEntry 7 } + +tePathIncludeAny OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This is a configured set of administrative groups + specified as a bit vector (i.e., bit n is 1 if group + + + + n is in the set, where n = 0 is the LSB). For each + link that this path goes through, the link must have + at least one of the groups specified in IncludeAny + to be acceptable. If IncludeAny is zero, all links + are acceptable. + " + DEFVAL { 0 } + ::= { tePathEntry 8 } + +tePathIncludeAll OBJECT-TYPE + + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This is a configured set of administrative groups + specified as a bit vector (i.e., bit n is 1 if group + n is in the set, where n = 0 is the LSB). For each + link that this path goes through, the link must have + all of the groups specified in IncludeAll to be + acceptable. If IncludeAll is zero, all links are + acceptable. + " + DEFVAL { 0 } + ::= { tePathEntry 9 } + +tePathExclude OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION "This is a configured set of administrative groups + specified as a bit vector (i.e., bit n is 1 if group + n is in the set, where n = 0 is the LSB). For each + link that this path goes through, the link MUST have + groups associated with it, and the intersection of + the link's groups and the 'exclude' set MUST be + null. + " + DEFVAL { 0 } + ::= { tePathEntry 10 } + +tePathSetupPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The setup priority configured for this path, with 0 + as the highest priority and 7 as the lowest. + " + DEFVAL { 7 } + + + + ::= { tePathEntry 11 } + +tePathHoldPriority OBJECT-TYPE + SYNTAX Integer32 (0..7) + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The hold priority configured for this path, with 0 + as the highest priority and 7 as the lowest. + " + DEFVAL { 0 } + ::= { tePathEntry 12 } + +tePathProperties OBJECT-TYPE + SYNTAX BITS { + recordRoute(0), + cspf(1), + makeBeforeBreak(2), + mergeable(3), + fastReroute(4), + protected(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The set of configured properties for this path, + expressed as a bit map. For example, if the path + supports 'make before break', then bit 2 is set. + " + ::= { tePathEntry 13 } + +tePathOperStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + down(1), + testing(2), + dormant(3), + ready(4), + operational(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The operational status of the path: + unknown: + down: Signaling failed. + testing: Administratively set aside for testing. + dormant: Not signaled (for a backup tunnel). + ready: Signaled but not yet carrying traffic. + operational: Signaled and carrying traffic. + " + + + + ::= { tePathEntry 14 } + +tePathAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + normal(1), + testing(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The operational status of the path: + normal: Used normally for forwarding. + testing: Administratively set aside for testing. + " + ::= { tePathEntry 15 } + +tePathComputedRoute OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The route computed for this path, perhaps using + some form of Constraint-based Routing. The + algorithm is implementation dependent. + + This object returns the computed route as an ordered + list of hops. The value of this object gives the + primary index into the Hop Table. The secondary + index is the hop count in the path, so to get the + route, one could get the first hop with index + in the Hop Table and do a + getnext to get subsequent hops. + + A value of zero (0) means there is no computedRoute. + " + ::= { tePathEntry 16 } + +tePathRecordedRoute OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The route actually used for this path, as recorded + by the signaling protocol. This is again an ordered + list of hops; each hop is expected to be strict. + + The value of this object gives the primary index + into the Hop Table. The secondary index is the hop + count in the path, so to get the route, one can get + the first hop with index + in the Hop Table and do a getnext to get subsequent + + + + hops. + + A value of zero (0) means there is no recordedRoute. + " + ::= { tePathEntry 17 } + +-- **************************************************************** +-- +-- Tunnel Path Hop Table +-- + +tePathHopTable OBJECT-TYPE + SYNTAX SEQUENCE OF TePathHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Table of Tunnel Path Hops." + ::= { teMIBObjects 4 } + +tePathHopEntry OBJECT-TYPE + SYNTAX TePathHopEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Entry containing information about a particular + hop. + " + INDEX { teHopListIndex, tePathHopIndex } + ::= { tePathHopTable 1 } + +TePathHopEntry ::= + SEQUENCE { + teHopListIndex Unsigned32, + tePathHopIndex Unsigned32, + -- Conceptual row information + tePathHopRowStatus RowStatus, + tePathHopStorageType StorageType, + tePathHopAddrType TeHopAddressType, + tePathHopAddress TeHopAddress, + tePathHopType INTEGER + } + +teHopListIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An index that identifies a list of hops. This is + the primary index to access hops. + " + ::= { tePathHopEntry 1 } + + + +tePathHopIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An index that identifies a particular hop among the + list of hops for a path. An index of i identifies + the ith hop. This is the secondary index for a hop + entry. + " + ::= { tePathHopEntry 2 } + +tePathHopRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The status of this conceptual row. + + Any field in this table can be changed, even if the + value of this object is 'active'. However, such a + change may cause traffic to be rerouted or even + disrupted. + " + ::= { tePathHopEntry 3 } + +tePathHopStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The storage type for this conceptual row. + + Conceptual rows having the value 'permanent' need + not allow write-access to any columnar objects + in the row. + " + ::= { tePathHopEntry 4 } + +tePathHopAddrType OBJECT-TYPE + SYNTAX TeHopAddressType + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The type of Traffic Engineered Tunnel hop Address + of this hop. + + The value of this object cannot be changed + if the value of the corresponding tePathRowStatus + object is 'active'. + " + ::= { tePathHopEntry 5 } + + + +tePathHopAddress OBJECT-TYPE + SYNTAX TeHopAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION "The Traffic Engineered Tunnel hop Address of this + hop. + + The type of this address is determined by the value + of the corresponding tePathHopAddressType. + + The value of this object cannot be changed + if the value of the corresponding teTunnelRowStatus + object is 'active'. + " + ::= { tePathHopEntry 6 } + +tePathHopType OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + loose(1), + strict(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "The type of hop: + unknown: + loose: This hop is a LOOSE hop. + strict: This hop is a STRICT hop. + " + ::= { tePathHopEntry 7 } + +-- **************************************************************** +-- +-- TE Notifications +-- + +teTunnelUp NOTIFICATION-TYPE + OBJECTS { teTunnelName, + tePathName } -- TunnelPath + STATUS current + DESCRIPTION "A teTunnelUp notification is generated when the + Tunnel indexed by teTunnelName transitions to the + 'up' state. + + A tunnel is up when at least one of its paths is up. + The tePathName is the name of the path whose + transition to up made the tunnel go up. + + + + + This notification MUST be limited to at most one + every minute, in case the tunnel flaps up and down. + " + ::= { teMIBNotifications 1 } + +teTunnelDown NOTIFICATION-TYPE + OBJECTS { teTunnelName, + tePathName } -- TunnelPath + STATUS current + DESCRIPTION "A teTunnelDown notification is generated when the + Tunnel indexed by teTunnelName transitions to the + 'down' state. + + A tunnel is up when at least one of its paths is up. + The tePathName is the name of the path whose + transition to down made the tunnel go down. + + This notification MUST be limited to at most one + every minute, in case the tunnel flaps up and down. + " + ::= { teMIBNotifications 2 } + +teTunnelChanged NOTIFICATION-TYPE + OBJECTS { teTunnelName, + tePathName } -- toTunnelPath + STATUS current + DESCRIPTION "A teTunnelChanged notification is generated when an + active path on the Tunnel indexed by teTunnelName + changes or a new path becomes active. The value + of tePathName is the new active path. + + This notification MUST be limited to at most one + every minute, in case the tunnel changes quickly. + " + ::= { teMIBNotifications 3 } + +teTunnelRerouted NOTIFICATION-TYPE + OBJECTS { teTunnelName, + tePathName } -- toTunnelPath + STATUS current + DESCRIPTION "A teTunnelRerouted notification is generated when + an active path for the Tunnel indexed by + teTunnelName stays the same, but its route changes. + + This notification MUST be limited to at most one + every minute, in case the tunnel reroutes quickly. + " + ::= { teMIBNotifications 4 } + + + +-- End of TE-MIB objects + +-- **************************************************************** +-- +-- TE Compliance Statements +-- + +teGroups + OBJECT IDENTIFIER ::= { teMIBConformance 1 } + +teModuleCompliance + OBJECT IDENTIFIER ::= { teMIBConformance 2 } + +-- **************************************************************** +-- +-- TE object groups +-- + +teTrafficEngineeringGroup OBJECT-GROUP + OBJECTS { + teTunnelName, + teTunnelNextPathIndex, + teTunnelRowStatus, + teTunnelStorageType, + teTunnelSourceAddressType, + teTunnelSourceAddress, + teTunnelDestinationAddressType, + teTunnelDestinationAddress, + teTunnelState, + teTunnelDiscontinuityTimer, + teTunnelOctets, + teTunnelPackets, + teTunnelLPOctets, + teTunnelLPPackets, + teTunnelAge, + teTunnelTimeUp, + teTunnelPrimaryTimeUp, + teTunnelTransitions, + teTunnelLastTransition, + teTunnelPathChanges, + teTunnelLastPathChange, + teTunnelConfiguredPaths, + teTunnelStandbyPaths, + teTunnelOperationalPaths, + tePathBandwidth, + tePathIncludeAny, + tePathIncludeAll, + tePathExclude, + + + + tePathSetupPriority, + tePathHoldPriority, + tePathProperties, + tePathOperStatus, + tePathAdminStatus, + tePathComputedRoute, + tePathRecordedRoute, + teDistProtocol, + teSignalingProto, + teNotificationEnable, + teNextTunnelIndex, + teNextPathHopIndex, + teAdminGroupName, + teAdminGroupRowStatus, + teConfiguredTunnels, + teActiveTunnels, + tePrimaryTunnels, + tePathName, + tePathType, + tePathRowStatus, + tePathStorageType, + tePathConfiguredRoute, + tePathHopRowStatus, + tePathHopStorageType, + tePathHopAddrType, + tePathHopAddress, + tePathHopType + } + STATUS current + DESCRIPTION "Objects for Traffic Engineering in this MIB module." + ::= { teGroups 1 } + +teNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + teTunnelUp, + teTunnelDown, + teTunnelChanged, + teTunnelRerouted + } + STATUS current + DESCRIPTION "Notifications specified in this MIB module." + ::= { teGroups 2 } + +-- **************************************************************** +-- +-- TE compliance statements +-- +-- There are four compliance statements: read-only and full + + + +-- compliance for regular TE devices, and read-only and full +-- compliance for path computation servers. +-- + +teModuleReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "When this MIB module is implemented without support + for read-create (i.e., in read-only mode), then such + an implementation can claim read-only compliance. + Such a device can be monitored but cannot be + configured with this MIB module. + " + + MODULE -- enclosing module, i.e., TE-MIB + + MANDATORY-GROUPS { + teTrafficEngineeringGroup + } + + GROUP teNotificationGroup + DESCRIPTION "Implementation of this group is optional." + + OBJECT teNotificationEnable + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teAdminGroupName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teAdminGroupRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT teTunnelSourceAddressType + SYNTAX TeHopAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. An + implementation is only required to support + IPv4 and IPv6 host addresses." + + OBJECT teTunnelSourceAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelDestinationAddressType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelDestinationAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathConfiguredRoute + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathBandwidth + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathIncludeAny + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT tePathIncludeAll + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathExclude + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathSetupPriority + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHoldPriority + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathProperties + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathAdminStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopAddrType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { teModuleCompliance 1 } + +teModuleFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "When this MIB module is implemented with support for + read-create, then the implementation can claim + full compliance. Such devices can be both + + + + monitored and configured with this MIB module. + " + + MODULE -- enclosing module, i.e., TE-MIB + + MANDATORY-GROUPS { + teTrafficEngineeringGroup + } + + GROUP teNotificationGroup + DESCRIPTION "Implementation of this group is optional." + + + OBJECT teAdminGroupRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION "Support for notInService, createAndWait and + notReady is not required. + " + + OBJECT teTunnelRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + + OBJECT teTunnelSourceAddressType + SYNTAX TeHopAddressType { ipv4(1), ipv6(2) } + DESCRIPTION "Write access is required. An implementation is + only required to support IPv4 and IPv6 host + addresses. + " + + OBJECT tePathRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + + OBJECT tePathHopRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + + + + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + ::= { teModuleCompliance 2 } + +teModuleServerReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "When this MIB module is implemented by a path + computation server without support for read-create + (i.e., in read-only mode), then the implementation + can claim read-only compliance. Such + a device can be monitored but cannot be + configured with this MIB module. + " + + MODULE -- enclosing module, i.e., TE-MIB + + MANDATORY-GROUPS { + teTrafficEngineeringGroup + } + + GROUP teNotificationGroup + DESCRIPTION "Implementation of this group is optional." + + OBJECT teNotificationEnable + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teAdminGroupName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teAdminGroupRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT teTunnelStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelSourceAddressType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required. A path + computation server SHOULD implement all types + of tunnel source address types. + " + + OBJECT teTunnelSourceAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelDestinationAddressType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT teTunnelDestinationAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathName + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathConfiguredRoute + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathBandwidth + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + + + OBJECT tePathIncludeAny + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathIncludeAll + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathExclude + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathSetupPriority + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHoldPriority + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathProperties + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathAdminStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopStorageType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopAddrType + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + OBJECT tePathHopAddress + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + ::= { teModuleCompliance 3 } + +teModuleServerFullCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION "When this MIB module is implemented by a path + computation server with support for read-create, + then the implementation can claim full + compliance. + " + + MODULE -- enclosing module, i.e., TE-MIB + MANDATORY-GROUPS { + teTrafficEngineeringGroup + } + + GROUP teNotificationGroup + DESCRIPTION "Implementation of this group is optional." + + + OBJECT teAdminGroupRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION "Support for notInService, createAndWait, and + notReady is not required. + " + + OBJECT teTunnelRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + + OBJECT teTunnelSourceAddressType + DESCRIPTION "Write access is required. An implementation + of a path computation server SHOULD support all + types of tunnel source address types. + " + + OBJECT tePathRowStatus + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + + OBJECT tePathHopRowStatus + + + + SYNTAX RowStatus { active(1), notInService(2) } + WRITE-SYNTAX RowStatus { active(1), notInService(2), + createAndGo(4), destroy(6) + } + DESCRIPTION "Support for createAndWait and notReady is not + required. + " + ::= { teModuleCompliance 4 } + +END diff --git a/mibs/ietf/TIME-AGGREGATE-MIB b/mibs/ietf/TIME-AGGREGATE-MIB new file mode 100644 index 0000000..5002bcf --- /dev/null +++ b/mibs/ietf/TIME-AGGREGATE-MIB @@ -0,0 +1,396 @@ + TIME-AGGREGATE-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, experimental, + OBJECT-TYPE, Opaque, Integer32 + FROM SNMPv2-SMI + OwnerString + FROM RMON-MIB + RowStatus, StorageType, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + tAggrMIB MODULE-IDENTITY + LAST-UPDATED "200604270000Z" -- 27 April 2006 + ORGANIZATION "Cyber Solutions Inc. NetMan Working Group" + CONTACT-INFO + " Glenn Mansfield Keeni + Postal: Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku, Sendai, Japan 989-3204. + Tel: +81-22-303-4012 + Fax: +81-22-303-4015 + E-mail: glenn@cysols.com + + Support Group E-mail: mibsupport@cysols.com" + + DESCRIPTION + + + + "The MIB for servicing Time-Based aggregate + objects. + + Copyright (C) The Internet Society (2006). This + version of this MIB module is part of RFC 4498; + see the RFC itself for full legal notices. + " + REVISION "200604270000Z" -- 27th April, 2006 + DESCRIPTION "Initial version, published as RFC 4498." + ::= { experimental 124 } + + TAggrMOErrorStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the error status of the + sampled MO instance. The error status for a sampled MO + instance is given in terms of two elements: + o The moIndex, which indicates the sample number of the MO + instance (starting at 1) in the value of the time- + aggregated MO instance. + o The moError, which indicates the error that was + encountered in sampling that MO instance. + The syntax in ASN.1 Notation will be + ErrorStatus :: = SEQUENCE { + moIndex Integer32, + moError SnmpPduErrorStatus + } + TAggrMOErrorStatus ::= SEQUENCE OF { + ErrorStatus + } + Note1: The command responder will supply values for all + the samples of the MO instance. If an error is + encountered for a sample, then the corresponding + value will have an ASN.1 value NULL, and an error + will be flagged in the corresponding + TAggrMOErrorStatus object. + Only MOs for which errors have been encountered will + the corresponding moIndex and moError values be set. + Note2: The error code for the component MO instances will be + in accordance with the SnmpPduErrorStatus TC defined + in the DISMAN-SCHEDULE-MIB[RFC3231]. + " + SYNTAX Opaque (SIZE (0..1024)) + + TimeAggrMOValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the time-aggregated MOs. It + + + will be a sequence of values. The syntax in ASN.1 Notation + will be + MOSampleValue :: = SEQUENCE { + value ObjectSyntax + } + TimeAggrMOValue ::= SEQUENCE OF { + MOSampleValue + } + where the first MOSampleValue, if any, will always be the + timestamp of the first sample in the aggregated object. The + subsequent values are the values of the MO instance sampled + at the specified intervals for the specified number of times. + Note: The command generator will need to know the + constituent MO instance and the sampling interval to + correctly interpret TimeAggrMOValue. + " + SYNTAX Opaque (SIZE (0..1024)) + + CompressedTimeAggrMOValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the compressed + TAgMOs." + SYNTAX Opaque (SIZE (0..1024)) + +-- +-- The Time-Based aggregation control table +-- + tAggrCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF TAggrCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The Time-Based aggregation control table. It controls + the aggregation of the samples of MO instances. There + will be a row for each TAgMO. + " + ::= {tAggrMIB 1} + + tAggrCtlEntry OBJECT-TYPE + SYNTAX TAggrCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of the control table that defines one Time-Based + aggregate MO (TAgMO)." + INDEX {tAggrCtlEntryID } + ::= {tAggrCtlTable 1 } + + + TAggrCtlEntry ::= SEQUENCE { + tAggrCtlEntryID + SnmpAdminString, + tAggrCtlMOInstance + OBJECT IDENTIFIER, + tAggrCtlAgMODescr + SnmpAdminString, + tAggrCtlInterval + Integer32, + tAggrCtlSamples + Integer32, + tAggrCtlCompressionAlgorithm + INTEGER, + tAggrCtlEntryOwner + OwnerString, + tAggrCtlEntryStorageType + StorageType, + tAggrCtlEntryStatus + RowStatus + } + + tAggrCtlEntryID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A locally unique, administratively assigned name + for this aggregated MO. It is used as an index to + uniquely identify this row in the table." + ::= { tAggrCtlEntry 1 } + + tAggrCtlMOInstance OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The sampled values of this MO instance will be + aggregated by the TAgMO. + " + ::= { tAggrCtlEntry 2 } + + tAggrCtlAgMODescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(0..64)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A textual description of the aggregate object." + ::= {tAggrCtlEntry 3} + + + tAggrCtlInterval OBJECT-TYPE + SYNTAX Integer32 + UNITS "micro seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The interval, in microseconds, at which the MO instance + pointed at by tAggrInstance will be sampled for + Time-Based aggregation. + " + ::= {tAggrCtlEntry 4} + + tAggrCtlSamples OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of times at which the MO instance referred + to by tAggrInstance will be sampled for Time-Based + aggregation." + ::= {tAggrCtlEntry 5} + + -- only one compression algorithm is defined as of now. + tAggrCtlCompressionAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + none (1), + deflate (2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The compression algorithm that will be used by + the agent to compress the value of the TAgMO. + The deflate algorithm and corresponding data format + specification is described in RFC 1951. It is + compatible with the widely used gzip utility. + " + REFERENCE + "RFC1951 : DEFLATE Compressed Data Format Specification + version 1.3 + " + DEFVAL { none } + ::= {tAggrCtlEntry 6} + + tAggrCtlEntryOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "A textual description of the entity that created + this entry. + " + ::= {tAggrCtlEntry 7} + + + tAggrCtlEntryStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether the parameters defined in + this row are kept in volatile storage and lost upon + reboot or backed up by non-volatile (permanent) + storage. + Conceptual rows having the value 'permanent' need not + allow write-access to any columnar objects in the row. + " + ::= {tAggrCtlEntry 8} + + tAggrCtlEntryStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to row + installation and removal conventions. + Objects in a row can be modified only when the value of + this object in the corresponding conceptual row is not + 'active'. + Thus, to modify one or more of the objects in this + conceptual row, + a. change the row status to 'notInService', + b. change the values of the row, and + c. change the row status to 'active'. + The tAggrCtlEntryStatus may be changed to 'active' iff + all the MOs in the conceptual row have been assigned + valid values. + " + ::= {tAggrCtlEntry 9} + + + -- + -- tAggrDataTable: The data table. + -- + tAggrDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF TAggrDataEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the data table. Each row of this table contains + information about a TAgMO indexed by tAggrCtlEntryID. + tAggrCtlEntryID is the key to the table. It is used to + identify instances of the TAgMO that are present in the + table. + " + ::= {tAggrMIB 2} + + tAggrDataEntry OBJECT-TYPE + SYNTAX TAggrDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information pertaining + to a TAgMO." + INDEX {tAggrCtlEntryID} + ::= {tAggrDataTable 1 } + + TAggrDataEntry ::= SEQUENCE { + tAggrDataRecord + TimeAggrMOValue, + tAggrDataRecordCompressed + CompressedTimeAggrMOValue, + tAggrDataErrorRecord + TAggrMOErrorStatus + } + + tAggrDataRecord OBJECT-TYPE + SYNTAX TimeAggrMOValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The snapshot value of the TAgMO." + ::= { tAggrDataEntry 1} + + tAggrDataRecordCompressed OBJECT-TYPE + SYNTAX CompressedTimeAggrMOValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The compressed value of the TAgMO. + The compression algorithm will depend on the + tAggrCtlCompressionAlgorithm given in the corresponding + tAggrCtlEntry. If the value of the corresponding + tAggrCtlCompressionAlgorithm is (1) 'none', then the + + + + value of all instances of this object will be a string + of zero length. + Note that the access privileges to this object will be + governed by the access privileges of the corresponding MO + instance. Thus, an entity attempting to access an + instance of this MO MUST have access rights to the + instance object pointed at by tAggrCtlMOInstance and this + MO instance. + " + ::= { tAggrDataEntry 2} + + tAggrDataErrorRecord OBJECT-TYPE + SYNTAX TAggrMOErrorStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The error status corresponding to the MO instance + samples aggregated in tAggrDataRecord (and + tAggrDataRecordCompressed)." + ::= { tAggrDataEntry 3} + + + -- Conformance information + tAggrConformance OBJECT IDENTIFIER ::= { tAggrMIB 3 } + tAggrGroups OBJECT IDENTIFIER ::= { tAggrConformance 1 } + tAggrCompliances OBJECT IDENTIFIER ::= { tAggrConformance 2 } + + -- Compliance statements + tAggrMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities + that implement the TIME-AGGREGATE-MIB." + MODULE -- this module + MANDATORY-GROUPS { tAggrMibBasicGroup } + ::= { tAggrCompliances 1 } + + -- Units of conformance + tAggrMibBasicGroup OBJECT-GROUP + OBJECTS { + tAggrCtlMOInstance, + tAggrCtlAgMODescr, + tAggrCtlInterval, + tAggrCtlSamples, + tAggrCtlCompressionAlgorithm, + tAggrCtlEntryOwner, + tAggrCtlEntryStorageType, + tAggrCtlEntryStatus, + + + + tAggrDataRecord, + tAggrDataRecordCompressed, + tAggrDataErrorRecord + } + STATUS current + DESCRIPTION + "A collection of objects for Time-Based aggregation + of MOs." + ::= { tAggrGroups 1 } + END diff --git a/mibs/ietf/TN3270E-MIB b/mibs/ietf/TN3270E-MIB new file mode 100644 index 0000000..221d33f --- /dev/null +++ b/mibs/ietf/TN3270E-MIB @@ -0,0 +1,1943 @@ +TN3270E-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, TimeTicks, + IpAddress, Counter32, Gauge32, Counter64 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, TestAndIncr, DateAndTime, + TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + snanauMIB + FROM SNA-NAU-MIB + Utf8String + FROM SYSAPPL-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + IANATn3270eAddrType, IANATn3270eAddress, + IANATn3270eClientType, IANATn3270Functions, + IANATn3270ResourceType, IANATn3270DeviceType, + IANATn3270eLogData + FROM IANATn3270eTC-MIB; + + tn3270eMIB MODULE-IDENTITY + LAST-UPDATED "9807270000Z" -- July 27, 1998 + ORGANIZATION "TN3270E Working Group" + CONTACT-INFO + "Kenneth White (kennethw@vnet.ibm.com) + IBM Corp. - Dept. BRQA/Bldg. 501/G114 + P.O. Box 12195 + 3039 Cornwallis + RTP, NC 27709-2195 + USA + + Robert Moore (remoore@us.ibm.com) + IBM Corp. - Dept. BRQA/Bldg. 501/G114 + P.O. Box 12195 + 3039 Cornwallis + RTP, NC 27709-2195 + USA + +1-919-254-4436" + DESCRIPTION + "This module defines a portion of the management + information base (MIB) for managing TN3270E servers." + REVISION "9807270000Z" -- July 27, 1998 + DESCRIPTION + "RFC nnnn (Proposed Standard)" -- RFC Editor to fill in + ::= { snanauMIB 8 } + +-- Textual Conventions + +SnaResourceName ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for defining an SNA resource + name. A fully qualified SNA resource name, consisting + of a 1 to 8 character network identifier (NetId), a + period ('.'), and a 1 to 8 character resource name + (ResName). + + The NetId and ResName are constructed from the + uppercase letters 'A' - 'Z' and the numerics '0' - '9', + all encoded in ASCII, with the restriction that the + first character of each must be a letter. Blanks are + not allowed. + + Earlier versions of SNA permitted three additional + characters in NetIds and ResNames: '#', '@', and '$'. + While this use of these characters has been retired, + a Management Station should still accept them for + backward compatibility. + + Note: This Textual Convention is not subject to + internationalization, and does not use the character + encodings used by the Utf8String Textual Convention." + SYNTAX OCTET STRING (SIZE(0..17)) + +Tn3270eTraceData ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string representing trace data from the + Telnet half of a TN3270E session, from the SNA half, + or from both. The octet string contains a sequence + of trace elements, with the trace elements in the + string ordered from earliest to latest. + + Each trace element has the following form: + + +---+---+----+----------------------+ + !length !type!data ! + +---+---+----+----------------------+ + where: + + length = two-octet length of the data portion of the + trace element, not including the length and + type octets + + type = one-octet code point characterizing the data; + defined values are: + + X'01' telnet PDU from the server to the client + X'02' telnet PDU from the client to the server + X'03' SNA data from the server to the SNA host + X'04' SNA data from the SNA host to the server + + data = initial part of a PDU. + + It is implementation-dependent where the 'initial part of + a PDU' starts. For SNA data, however, the starting point + SHOULD be the first byte of the TH. For IP data the + starting point SHOULD be the first byte of the IP header. + + It is left to implementations to determine how much of + each PDU to return in a trace element. + + The zero-length string indicates that no trace + data is available." + SYNTAX OCTET STRING (SIZE (0 | 3..4096)) + +-- Top-level structure of the MIB + +tn3270eNotifications OBJECT IDENTIFIER ::= { tn3270eMIB 0 } +tn3270eObjects OBJECT IDENTIFIER ::= { tn3270eMIB 1 } +tn3270eConformance OBJECT IDENTIFIER ::= { tn3270eMIB 3 } + +-- MIB Objects + +tn3270eSrvrConfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eSrvrConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the configuration elements for + TN3270E servers. The number of entries in this table + is expected to vary depending on the location of the + table. A particular TN3270E server is expected to + have a single entry. Modeling of the configuration + elements as a table allows multiple TN3270E + servers to be serviced by the same SNMP agent. + An implementation SHOULD NOT retain an SNMP-created + entry in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + + ::= { tn3270eObjects 1 } + +tn3270eSrvrConfEntry OBJECT-TYPE + SYNTAX Tn3270eSrvrConfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of the configuration elements for a single + TN3270E server." + INDEX { tn3270eSrvrConfIndex } + ::= { tn3270eSrvrConfTable 1 } + +Tn3270eSrvrConfEntry ::= SEQUENCE { + tn3270eSrvrConfIndex Unsigned32, + tn3270eSrvrConfInactivityTimeout Unsigned32, + tn3270eSrvrConfConnectivityChk INTEGER, + tn3270eSrvrConfTmNopInactTime Unsigned32, + tn3270eSrvrConfTmNopInterval Unsigned32, + tn3270eSrvrFunctionsSupported IANATn3270Functions, + tn3270eSrvrConfAdminStatus INTEGER, + tn3270eSrvrConfOperStatus INTEGER, + tn3270eSrvrConfSessionTermState INTEGER, + tn3270eSrvrConfSrvrType INTEGER, + tn3270eSrvrConfContact SnmpAdminString, + tn3270eSrvrConfRowStatus RowStatus, + tn3270eSrvrConfLastActTime DateAndTime, + tn3270eSrvrConfTmTimeout Unsigned32 + } + +tn3270eSrvrConfIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifier for a single TN3270E server. + + tn3270eSrvrConfIndex values need not be + contiguous." + ::= { tn3270eSrvrConfEntry 1 } + +tn3270eSrvrConfInactivityTimeout OBJECT-TYPE + SYNTAX Unsigned32 (0..99999999) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The inactivity time-out specified in seconds. When a + connection has been inactive for the number of seconds + specified by this object it is closed. Only user traffic + is considered when determining whether there has been + activity on a connection. + + The default value 0 means that no inactivity time-out is + in effect." + DEFVAL { 0 } + ::= { tn3270eSrvrConfEntry 2 } + +tn3270eSrvrConfConnectivityChk OBJECT-TYPE + SYNTAX INTEGER { + timingMark(1), + nop(2), + noCheck(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object enables TIMING-MARK processing, NOP + processing, or neither for a TN3270E server." + DEFVAL { noCheck } + ::= { tn3270eSrvrConfEntry 3 } + +tn3270eSrvrConfTmNopInactTime OBJECT-TYPE + SYNTAX Unsigned32 (1..86400) -- 1 second to 24 hours + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The amount of time a connection must have had no + traffic on it in order for a TIMING-MARK or NOP request + to be sent on the connection. This value applies only + when connections are being examined for recent activity + on a scan interval controlled by the value of the + tn3270eSrvrConfTmNopInterval object." + DEFVAL { 600 } -- 10 minutes + ::= { tn3270eSrvrConfEntry 4 } + +tn3270eSrvrConfTmNopInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..86400) -- 1 second to 24 hours + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The scan interval to be used by a TN3270E server when + it examines its Telnet connections for recent activity. + The server scans its Telnet connections on the interval + provided by this object, looking for ones that have been + idle for more than the value provided by the + tn3270eSrvrConfTmNopInactTime object. A TIMING-MARK or + NOP request is sent for each connection that has + exhibited no activity for this period of time." + DEFVAL { 120 } -- 2 minutes + ::= { tn3270eSrvrConfEntry 5 } + +tn3270eSrvrFunctionsSupported OBJECT-TYPE + SYNTAX IANATn3270Functions + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the functions supported by a + TN3270E server." + DEFVAL { { scsCtlCodes, dataStreamCtl, + responses, bindImage, sysreq } } + ::= { tn3270eSrvrConfEntry 6 } + +tn3270eSrvrConfAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + stopImmediate(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The desired state of the TN3270E server represented + by this entry in the table: + + up(1) - Activate this TN3270E server. + down(2) - Informs the associated TN3270E + server to gracefully terminate + its processing. + stopImmediate(3) - Informs the associated TN3270E + server to terminate itself + immediately. + + When a managed system creates an entry in this table, + tn3270eSrvrConfAdminStatus and tn3270eSrvrConfOperStatus + are initialized as up(1) by default. + + The exact behavior of a server in response to a down(2) + or stopImmediate(3) command is left implementation- + dependent. A TN3270E server that is capable of it + SHOULD close all of its TN3270 and TN3270E sessions + during a graceful termination. + + Often the function enabled via stopImmediate(3) is used + as a last resort by a system administrator, to attempt + to either bring down a hung TN3270E server or free up + its resources immediately to aid in general system + availability, or to shut down a TN3270E server that is + not recognizing a down(2) request. + + A TN3270E server that does not distinguish between + down(2) or stopImmediate(3) transitions should not + support stopImmediate(3)." + DEFVAL { up } + ::= { tn3270eSrvrConfEntry 7 } + +tn3270eSrvrConfOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + busy(3), + shuttingDown(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of a TN3270E server. + The following values are defined: + + up(1) - the server is active and accepting + new client connections + down(2) - the server is not active + busy(3) - the server is active, but is not + accepting new client connections + because it lacks the resources to + do so + shuttingDown(4) - the server is active, but is not + accepting new client connections + because it is in the process of + performing a graceful shutdown." + DEFVAL { up } + ::= { tn3270eSrvrConfEntry 8 } + +tn3270eSrvrConfSessionTermState OBJECT-TYPE + SYNTAX INTEGER { + terminate(1), + luSessionPend(2), + queueSession(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object determines what a TN3270E server + should do when a TN3270 Session terminates: + terminate(1) => Terminate the TCP connection. + luSessionPend(2) => Do not drop the TCP connection + associated with a client when its + TN3270 session ends. Processing + should redrive session initialization + as if the client were first connecting. + queueSession(3) => This value relates to the Close + Destination PASS (CLSDST PASS) operation + in VTAM. An example provides the + easiest explanation. Suppose a TN3270E + client is in session with APPL1, and + APPL1 does a CLSDST PASS of the client's + session to APPL2. queueSession(3) + specifies that the TN3270E server must + keep the TCP connection with the client + active after it receives the UNBIND from + APPL1, waiting for the BIND from APPL2." + DEFVAL { terminate } + ::= { tn3270eSrvrConfEntry 9 } + +tn3270eSrvrConfSrvrType OBJECT-TYPE + SYNTAX INTEGER { + host(1), + gateway(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the type of TN3270E server. + The existence of MIB tables and objects that will be + defined by follow-on MIBs may be predicated on whether + the TN3270E server can be local to the same host as a + target application (host(1)) or will always be remote + (gateway(2)). + + A host TN3270E server refers to an implementation where + the TN3270E server is collocated with the Systems + Network Architecture (SNA) System Services Control Point + (SSCP) for the dependent Secondary Logical Units (SLUs) + that the server makes available to its clients for + connecting into an SNA network. + A gateway TN3270E server resides on an SNA node other + than an SSCP, either an SNA type 2.0 node or an APPN node + acting in the role of a Dependent LU Requester (DLUR). + + Host and gateway TN3270E server implementations typically + differ greatly as to their internal implementation and + system definition (SYSDEF) requirements." + ::= { tn3270eSrvrConfEntry 10 } + +tn3270eSrvrConfContact OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object provides a scratch pad for a TN3270E + server administrator for storing information for + later retrieval." + DEFVAL { ''H } -- the empty string + ::= { tn3270eSrvrConfEntry 11 } + +tn3270eSrvrConfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eSrvrConfTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + With the exception of tn3270eSrvrConfSrvrType, which + an implementation can easily fill in for itself, all + the columnar objects in this table have DEFVALs + associated with them. Consequently, a Management + Station can create a conceptual row via a SET + operation that specifies a value only for this object. + + When a tn3270eSrvrConfEntry is deleted (by setting + this object to destroy(6)), this has the side-effect + of removing all the associated entries (i.e., those + having the same tn3270eSrvrConfIndex) from the + tn3270eSrvrPortTable, the tn3270eSrvrStatsTable, the + tn3270eClientGroupTable, the tn3270eResPoolTable, + the tn3270eSnaMapTable, the tn3270eClientResMapTable, + and the tn3270eResMapTable. All entries in the + tn3270eTcpConnTable that belong to a TN3270E server + that has been deleted MUST also be removed. + In other words, a tn3270eSrvrConfEntry must exist for + a TN3270E server in order for it to have entries in + any of the other tables defined by this MIB." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eSrvrConfEntry 12 } + +tn3270eSrvrConfLastActTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object reports the DateAndTime when a TN3270E + server was most recently activated. + + The special value of all '00'Hs indicates that the + server has never been active, i.e., that the value of + tn3270eSrvrOperStatus has never been anything other + than down(2)." + DEFVAL { '0000000000000000'H } + ::= { tn3270eSrvrConfEntry 13 } + +tn3270eSrvrConfTmTimeout OBJECT-TYPE + SYNTAX Unsigned32 (1..600) -- 1 second to 10 minutes + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The TIMING-MARK time-out, specified in seconds." + DEFVAL { 5 } -- 5 seconds + ::= { tn3270eSrvrConfEntry 14 } + +tn3270eSrvrPortTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eSrvrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the TCP ports associated with + TN3270E servers. No entry in this table shall exist + without a corresponding (same tn3270eSrvrConfIndex) + entry in the tn3270eSrvrConfTable existing. + + An implementation SHOULD NOT retain SNMP-created + entries in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + ::= { tn3270eObjects 2 } + +tn3270eSrvrPortEntry OBJECT-TYPE + SYNTAX Tn3270eSrvrPortEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single TCP port assignment to a + TN3270E server. Assignment of a port on a local + address basis is enabled though use of + tn3270eSrvrPortAddrType and tn3270eSrvrPortAddress. + + A TCP port assignment that is not restricted to + a local address SHALL specify a tn3270eSrvrPortAddrType + of unknown(0), and SHALL use a zero-length octet string + for the tn3270eSrvrPortAddress." + INDEX { + tn3270eSrvrConfIndex, + tn3270eSrvrPort, + tn3270eSrvrPortAddrType, + tn3270eSrvrPortAddress + } + ::= { tn3270eSrvrPortTable 1 } + +Tn3270eSrvrPortEntry ::= SEQUENCE { + tn3270eSrvrPort Unsigned32, + tn3270eSrvrPortAddrType IANATn3270eAddrType, + tn3270eSrvrPortAddress IANATn3270eAddress, + tn3270eSrvrPortRowStatus RowStatus + } + +tn3270eSrvrPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates a port assigned to a server." + ::= { tn3270eSrvrPortEntry 1 } + +tn3270eSrvrPortAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of an address local to the host on + which the TN3270E server resides that is represented + in tn3270eSrvrPortAddress. A value of unknown(0) + SHALL be used for this object when the port is not + to be restricted to a local address." + ::= { tn3270eSrvrPortEntry 2 } + +tn3270eSrvrPortAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A local address on the host that a TN3270E server + resides on that is associated with a TCP port that + is to be used or is in use by a TN3270E server. + tn3270eClientGroupAddrType indicates the + address type (IPv4 or IPv6, for example). + + A zero-length octet string SHALL be used as the + value of this object when a local address isn't + being specified." + ::= { tn3270eSrvrPortEntry 3 } + +tn3270eSrvrPortRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eSrvrPortTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + Since this is the only accessible object in this table, + a Management Station can create a conceptual row via a SET + operation that specifies a value only for this object. + + An entry in this table is deleted by setting this object + to destroy(6). Deletion of a tn3270eSrvrPortEntry has + no effect on any other table entry defined by this MIB." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eSrvrPortEntry 4 } + +tn3270eSrvrStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eSrvrStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines a set of statistics concerning + TN3270E server performance. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing." + ::= { tn3270eObjects 3 } + +tn3270eSrvrStatsEntry OBJECT-TYPE + SYNTAX Tn3270eSrvrStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A collection of statistical and maximum usage objects + for a single TN3270 server. An entry can represent the total + activity of the server, or it can represent the activity + occurring at the server on either a port or a + port-and-local-address basis. + + Collection of the statistics represented by the objects + in this table is not mandatory. An implementation + of this table MUST use only one of the three levels of + refinement that this table supports for the entries + associated with each TN3270E server. + + The indexing for a row that represents total server + statistics is as follows: + + tn3270eSrvrConfIndex value identifying the server + tn3270eSrvrPort 0 + tn3270eSrvrPortAddrType unknown(0) + tn3270eSrvrPortAddress zero-length octet string. + + On a port basis: + + tn3270eSrvrConfIndex value identifying the server + tn3270eSrvrPort > 0 + tn3270eSrvrPortAddrType unknown(0) + tn3270eSrvrPortAddress zero-length octet string. + + On a port-and-local-address basis: + + tn3270eSrvrConfIndex value identifying the server + tn3270eSrvrPort > 0 + tn3270eSrvrPortAddrType valid value other than unknown(0) + tn3270eSrvrPortAddress non-zero-length octet string. + + " + INDEX { + tn3270eSrvrConfIndex, + tn3270eSrvrPort, + tn3270eSrvrPortAddrType, + tn3270eSrvrPortAddress + } + ::= { tn3270eSrvrStatsTable 1 } + +Tn3270eSrvrStatsEntry ::= SEQUENCE { + tn3270eSrvrStatsUpTime TimeStamp, + tn3270eSrvrStatsMaxTerms Unsigned32, + tn3270eSrvrStatsInUseTerms Gauge32, + tn3270eSrvrStatsSpareTerms Gauge32, + tn3270eSrvrStatsMaxPtrs Unsigned32, + tn3270eSrvrStatsInUsePtrs Gauge32, + tn3270eSrvrStatsSparePtrs Gauge32, + tn3270eSrvrStatsInConnects Counter32, + tn3270eSrvrStatsConnResrceRejs Counter32, + tn3270eSrvrStatsDisconnects Counter32, + tn3270eSrvrStatsHCInOctets Counter64, + tn3270eSrvrStatsInOctets Counter32, + tn3270eSrvrStatsHCOutOctets Counter64, + tn3270eSrvrStatsOutOctets Counter32, + tn3270eSrvrStatsConnErrorRejs Counter32 + } + +tn3270eSrvrStatsUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time + the TN3270E server was re-initialized. + + Server re-initialization is the only discontinuity + event for the counters in this table. Even if table + entries are on a port or port-and-local-address + basis, port deactivation and reactivation do not + result in counter discontinuities." + ::= { tn3270eSrvrStatsEntry 2 } + +tn3270eSrvrStatsMaxTerms OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "LUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum number of terminal LUs available + for use at a TN3270E server for the granularity of this + conceptual row (server-wide, port, or + port-and-local-address)." + ::= { tn3270eSrvrStatsEntry 3 } + +tn3270eSrvrStatsInUseTerms OBJECT-TYPE + SYNTAX Gauge32 + UNITS "LUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of terminal LUs currently in + use at a TN3270E server for the granularity of this + conceptual row (server-wide, port, or + port-and-local-address)." + ::= { tn3270eSrvrStatsEntry 4 } + +tn3270eSrvrStatsSpareTerms OBJECT-TYPE + SYNTAX Gauge32 + UNITS "LUs" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of free terminal LUs at a TN3270E + server for the granularity of this conceptual row + (server-wide, port, or port-and-local-address). + + It is possible that the difference between + tn3270eSrvrStatsMaxTerms and tn3270eSrvrStatsInUseTerms + in a conceptual row does not equal the value of + tn3270eSrvrStatsSpareTerms in that row: an LU may + exist but not be usable by a client connection. + + Alternatively, the administrative ceiling represented + by tn3270eSrvrStatsMaxTerms may have been lowered to + a point where it is less than the current value of + tn3270eSrvrStatsInUseTerms. In this case + tn3270eSrvrStatsSpareTerms returns the value 0." + + ::= { tn3270eSrvrStatsEntry 5 } + +tn3270eSrvrStatsMaxPtrs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Printer Resources" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum number of printer resources + available for use by a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address)." + ::= { tn3270eSrvrStatsEntry 6 } + +tn3270eSrvrStatsInUsePtrs OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Printer Resources" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of printer resources + currently in use by a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address)." + ::= { tn3270eSrvrStatsEntry 7 } + +tn3270eSrvrStatsSparePtrs OBJECT-TYPE + SYNTAX Gauge32 + UNITS "Spare Printer Resources" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of free printer resources at + a TN3270E server for the granularity of this conceptual + row (server-wide, port, or port-and-local-address). + + It is possible that the difference between + tn3270eSrvrStatsMaxPtrs and tn3270eSrvrStatsInUsePtrs + in a conceptual row does not equal the value of + tn3270eSrvrStatsSparePtrs in that row: a printer + resource may exist but not be usable by a client + connection. + + Alternatively, the administrative ceiling represented + by tn3270eSrvrStatsMaxPtrs may have been lowered to + a point where it is less than the current value of + tn3270eSrvrStatsInUsePtrs. In this case + tn3270eSrvrStatsSparePtrs returns the value 0." + ::= { tn3270eSrvrStatsEntry 8 } + +tn3270eSrvrStatsInConnects OBJECT-TYPE + SYNTAX Counter32 + UNITS "connections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of client (TCP) connections + that succeeded at a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address). + + The tn3270eSrvrStatsConnResrceRejs and + tn3270eSrvrStatsConnErrorRejs objects provide a count + of failed connection attempts. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 9 } + +tn3270eSrvrStatsConnResrceRejs OBJECT-TYPE + SYNTAX Counter32 + UNITS "connection attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of (TCP) connections rejected + during connection setup at a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address) due to a lack of + resources at the server. An example of when this + counter would be incremented is when no terminal + or printer resource is available to associate with a + client's TCP connection. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 10 } + +tn3270eSrvrStatsDisconnects OBJECT-TYPE + SYNTAX Counter32 + UNITS "disconnections" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of (TCP) connections that were + disconnected at a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address). + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 11 } + +tn3270eSrvrStatsHCInOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of octets received from TN3270 + and TN3270E clients for the granularity of this + conceptual row (server-wide, port, or + port-and-local-address). + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 12 } + +tn3270eSrvrStatsInOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low-order 32 bits of tn3270eSrvrStatsHCInOctets for + this conceptual row. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 13 } + +tn3270eSrvrStatsHCOutOctets OBJECT-TYPE + SYNTAX Counter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of octets sent to TN3270 + and TN3270E clients for the granularity of this + conceptual row (server-wide, port, or + port-and-local-address). + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 14 } + +tn3270eSrvrStatsOutOctets OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Low-order 32 bits of tn3270eSrvrStatsHCOutOctets for + this conceptual row. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 15 } + +tn3270eSrvrStatsConnErrorRejs OBJECT-TYPE + SYNTAX Counter32 + UNITS "connection attempts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the number of (TCP) connections rejected + during connection setup at a TN3270E server for the + granularity of this conceptual row (server-wide, + port, or port-and-local-address) due to an error + of some type. An example of when this counter would + be incremented is when the client and the server + cannot agree on a common set of TN3270E functions for + the connection. + + A Management Station can detect discontinuities in + this counter by monitoring the tn3270eSrvrStatsUpTime + object." + ::= { tn3270eSrvrStatsEntry 16 } + +tn3270eClientGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eClientGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines client address groupings for use + by a TN3270E server. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing. + + An implementation SHOULD NOT retain SNMP-created + entries in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + ::= { tn3270eObjects 4 } + +tn3270eClientGroupEntry OBJECT-TYPE + SYNTAX Tn3270eClientGroupEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single client address entry. All + entries with the same first two indexes, + tn3270eSrvrConfIndex and tn3270eClientGroupName, are + considered to be in the same client group." + INDEX { tn3270eSrvrConfIndex, + tn3270eClientGroupName, + tn3270eClientGroupAddrType, + tn3270eClientGroupAddress } + ::= { tn3270eClientGroupTable 1 } + +Tn3270eClientGroupEntry ::= SEQUENCE { + tn3270eClientGroupName Utf8String, + tn3270eClientGroupAddrType IANATn3270eAddrType, + tn3270eClientGroupAddress IANATn3270eAddress, + tn3270eClientGroupSubnetMask IpAddress, + tn3270eClientGroupPfxLength Unsigned32, + tn3270eClientGroupRowStatus RowStatus +} + +tn3270eClientGroupName OBJECT-TYPE + SYNTAX Utf8String (SIZE(1..24)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a client group. Note: client group + names are required to be unique only with respect + to a single TN3270E server." + ::= { tn3270eClientGroupEntry 1 } + +tn3270eClientGroupAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of the address represented in + tn3270eClientGroupAddress." + ::= { tn3270eClientGroupEntry 2 } + +tn3270eClientGroupAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The client address of a member of a client group. + The value of tn3270eClientGroupAddrType indicates + the address type (IPv4 or IPv6, for example)." + ::= { tn3270eClientGroupEntry 3 } + +tn3270eClientGroupSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The corresponding subnet mask associated with + tn3270eClientGroupAddress. A single IP address is + represented by having this object contain the value + of 255.255.255.255. + + This object's value is meaningful only if + tn3270eClientGroupAddrType has a value of ipv4(1)." + DEFVAL { 'FFFFFFFF'H } + ::= { tn3270eClientGroupEntry 4 } + +tn3270eClientGroupPfxLength OBJECT-TYPE + SYNTAX Unsigned32 (0..128) + UNITS "bits" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The corresponding IPv6 network prefix length. + + This object's value is meaningful only if + tn3270eClientGroupAddrType has a value of ipv6(2)." + DEFVAL { 0 } + ::= { tn3270eClientGroupEntry 5 } + +tn3270eClientGroupRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eClientGroupTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + An entry in this table is deleted by setting this object + to destroy(6). When the number of entries in this table + for a given client group becomes 0, this has the side- + effect of removing any entries for the group in the + tn3270eClientResMapTable." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eClientGroupEntry 6 } + +tn3270eResPoolTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eResPoolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines resource groupings; the term + 'pool' is used as it is defined by RFC 2355. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing. + + An implementation SHOULD NOT retain SNMP-created + entries in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + ::= { tn3270eObjects 5 } + +tn3270eResPoolEntry OBJECT-TYPE + SYNTAX Tn3270eResPoolEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single resource pool member. All entries + with the same first two indexes, tn3270eSrvrConfIndex and + tn3270eResPoolName, are considered to be in the same pool." + INDEX { tn3270eSrvrConfIndex, + tn3270eResPoolName, + tn3270eResPoolElementName } + ::= { tn3270eResPoolTable 1 } + +Tn3270eResPoolEntry ::= SEQUENCE { + tn3270eResPoolName Utf8String, + tn3270eResPoolElementName SnaResourceName, + tn3270eResPoolElementType IANATn3270ResourceType, + tn3270eResPoolRowStatus RowStatus +} + +tn3270eResPoolName OBJECT-TYPE + SYNTAX Utf8String (SIZE(1..24)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a resource pool." + ::= { tn3270eResPoolEntry 1 } + +tn3270eResPoolElementName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a member of a resource pool." + ::= { tn3270eResPoolEntry 2 } + +tn3270eResPoolElementType OBJECT-TYPE + SYNTAX IANATn3270ResourceType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The type of the entity in a resource pool." + ::= { tn3270eResPoolEntry 3 } + +tn3270eResPoolRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eResPoolTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + An entry in this table is deleted by setting this object + to destroy(6). When all entries in this table associated + with the same tn3270eResPoolElementName have been removed, + then any associated (tn3270eResPoolElementName matching + tn3270eClientResMapPoolName with same tn3270eSrvrConfIndex + values) entries in the tn3270eClientResMapTable SHALL + also be removed." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eResPoolEntry 4 } + +tn3270eSnaMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eSnaMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provide a mapping from the name by which + a secondary LU is known in the SNA network to the + name by which it is known locally at the TN3270e + server. This latter name serves as an index into + the tn3270eResPoolTable and the tn3270eResMapTable. + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing." + ::= { tn3270eObjects 6 } + +tn3270eSnaMapEntry OBJECT-TYPE + SYNTAX Tn3270eSnaMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single mapping from an SSCP-supplied + SLU name to a local SLU name. + + Note: In certain pathological cases, it is possible + that an SSCP will send on an ACTLU for a local LU an + SLU name currently represented by an entry in this + table that associates it with a different local LU. + In these cases the association from the newer ACTLU + SHOULD be the one represented in this table." + INDEX { tn3270eSrvrConfIndex, + tn3270eSnaMapSscpSuppliedName } + ::= { tn3270eSnaMapTable 1 } + +Tn3270eSnaMapEntry ::= SEQUENCE { + tn3270eSnaMapSscpSuppliedName SnaResourceName, + tn3270eSnaMapLocalName SnaResourceName, + tn3270eSnaMapPrimaryLuName SnaResourceName +} + +tn3270eSnaMapSscpSuppliedName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the secondary LU (SLU) as it is known in + the SNA network. This name is sent by the SSCP on + the Activate Logical Unit (ACTLU) request." + ::= { tn3270eSnaMapEntry 1 } + +tn3270eSnaMapLocalName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The local name of the secondary LU (SLU)." + ::= { tn3270eSnaMapEntry 2 } + +tn3270eSnaMapPrimaryLuName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When there is a currently active LU-LU session for + this connection, this object returns the primary LU + (PLU) name from the BIND. When there is no active + LU-LU session, or when the PLU name is unavailable + for some other reason, this object returns a + zero-length octet string." + ::= { tn3270eSnaMapEntry 3 } + +tn3270eClientResMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eClientResMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines resource-pool to client-group + mappings. Since both the resource pool name and client + group name are included in the index clause of this + table, multiple resource pools can be assigned to the + same client group. This enables use of multiple + resource pools for use in client to resource mapping. + Assigning multiple client groups to the same resource + pool is also allowed, but is not the primary purpose + for how the indexing is structured. + + Assignment of a resource pool to client group can be + restricted based on TCP port. An index value of 0 for + tn3270eClientResMapClientPort disables restriction of + resource assignment based on client target port + selection. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing. + + An implementation SHOULD NOT retain SNMP-created + entries in this table across re-IPLs (Initial Program + Loads) of the corresponding TN3270E server." + ::= { tn3270eObjects 7 } + +tn3270eClientResMapEntry OBJECT-TYPE + SYNTAX Tn3270eClientResMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of a single resource pool to client group + mapping." + INDEX { tn3270eSrvrConfIndex, + tn3270eClientResMapPoolName, + tn3270eClientResMapClientGroupName, + tn3270eClientResMapClientPort } + ::= { tn3270eClientResMapTable 1 } + +Tn3270eClientResMapEntry ::= SEQUENCE { + tn3270eClientResMapPoolName Utf8String, + tn3270eClientResMapClientGroupName Utf8String, + tn3270eClientResMapClientPort Unsigned32, + tn3270eClientResMapRowStatus RowStatus +} + +tn3270eClientResMapPoolName OBJECT-TYPE + SYNTAX Utf8String (SIZE(1..24)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a resource pool." + ::= { tn3270eClientResMapEntry 1 } + +tn3270eClientResMapClientGroupName OBJECT-TYPE + SYNTAX Utf8String (SIZE(1..24)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the client group that is mapped to a + resource pool." + ::= { tn3270eClientResMapEntry 2 } + +tn3270eClientResMapClientPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A port number restricting the scope of a mapping + from a resource pool to a client group. The + value 0 for this object indicates that the scope + of the mapping is not restricted." + ::= { tn3270eClientResMapEntry 3 } + +tn3270eClientResMapRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eClientResMapTable. Entries may also be + created and deleted as a result of implementation- + dependent operations. + + An entry in this table is deleted by setting this object + to destroy(6). Removing an entry from this table doesn't + affect any other table entry defined in this MIB." + REFERENCE + "RFC 1903, 'Textual Conventions for version 2 of the + Simple Network Management Protocol (SNMPv2).'" + ::= { tn3270eClientResMapEntry 4 } + +tn3270eResMapTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eResMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table defines the actual mapping of a resource + to a client address. + + No entry in this table shall exist without + a corresponding (same tn3270eSrvrConfIndex) entry in + the tn3270eSrvrConfTable existing." + ::= { tn3270eObjects 8 } + +tn3270eResMapEntry OBJECT-TYPE + SYNTAX Tn3270eResMapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Definition of the mapping of a Resource Element to + a client address." + INDEX { tn3270eSrvrConfIndex, + tn3270eResMapElementName } + ::= { tn3270eResMapTable 1 } + +Tn3270eResMapEntry ::= SEQUENCE { + tn3270eResMapElementName SnaResourceName, + tn3270eResMapAddrType IANATn3270eAddrType, + tn3270eResMapAddress IANATn3270eAddress, + tn3270eResMapPort Unsigned32, + tn3270eResMapElementType IANATn3270ResourceType, + tn3270eResMapSscpSuppliedName SnaResourceName +} + +tn3270eResMapElementName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of a resource element. This is the name by + which the server implementing this table knows the + resource. It may be different from the name by which + the resource is known in the SNA network. This latter + name is returned in the tn3270eResMapSscpSuppliedName + object." + ::= { tn3270eResMapEntry 1 } + +tn3270eResMapAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of the client address represented + in tn3270eResMapAddress." + ::= { tn3270eResMapEntry 2 } + +tn3270eResMapAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A client address." + ::= { tn3270eResMapEntry 3 } + +tn3270eResMapPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A client port." + ::= { tn3270eResMapEntry 4 } + +tn3270eResMapElementType OBJECT-TYPE + SYNTAX IANATn3270ResourceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the associated resource element." + ::= { tn3270eResMapEntry 5 } + +tn3270eResMapSscpSuppliedName OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the secondary LU (SLU) as it is known + in a SNA network. This name is sent by the SSCP on + the Activate Logical Unit (ACTLU) request. If this + name is not known, this object returns a zero-length + octet string." + ::= { tn3270eResMapEntry 6 } + +-- Define the set of objects to supplement the TCP Connection Table + +tn3270eTcpConnTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eTcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table has an entry for each TN3270(E) client + connection that is currently active at a TN3270E server. + An implementation MAY retain entries for connections + that have been terminated, but which entries are + retained, how many entries are retained, and how long + they are retained is entirely implementation-dependent. + + The indexing for this table is designed to support the + use of an SNMP GET-NEXT operation using only the remote + address type, remote address, and remote port, as a way + for a Management Station to retrieve the table entries + related to a particular TN3270(E) client." + ::= { tn3270eObjects 9 } + +tn3270eTcpConnEntry OBJECT-TYPE + SYNTAX Tn3270eTcpConnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Provides information about a single TN3270/TN3270E + session. Note: a tn3270eSrvrConfIndex is not needed + in this table, since the combination of remote and + local addresses and ports is sufficient to + guarantee uniqueness across the TN3270E servers + serviced by an SNMP agent. Because of this indexing + structure, however, this table does not support + view-based access control policies that provide + access to table rows on a per-server basis." + INDEX { tn3270eTcpConnRemAddrType, + tn3270eTcpConnRemAddress, + tn3270eTcpConnRemPort, + tn3270eTcpConnLocalAddrType, + tn3270eTcpConnLocalAddress, + tn3270eTcpConnLocalPort + } + ::= { tn3270eTcpConnTable 1 } + +Tn3270eTcpConnEntry ::= + SEQUENCE + { + tn3270eTcpConnRemAddrType IANATn3270eAddrType, + tn3270eTcpConnRemAddress IANATn3270eAddress, + tn3270eTcpConnRemPort Unsigned32, + tn3270eTcpConnLocalAddrType IANATn3270eAddrType, + tn3270eTcpConnLocalAddress IANATn3270eAddress, + tn3270eTcpConnLocalPort Unsigned32, + tn3270eTcpConnLastActivity TimeTicks, + tn3270eTcpConnBytesIn Counter32, + tn3270eTcpConnBytesOut Counter32, + tn3270eTcpConnResourceElement SnaResourceName, + tn3270eTcpConnResourceType IANATn3270ResourceType, + tn3270eTcpConnDeviceType IANATn3270DeviceType, + tn3270eTcpConnFunctions IANATn3270Functions, + tn3270eTcpConnId Unsigned32, + tn3270eTcpConnClientIdFormat IANATn3270eClientType, + tn3270eTcpConnClientId OCTET STRING, + tn3270eTcpConnTraceData Tn3270eTraceData, + tn3270eTcpConnLogInfo IANATn3270eLogData, + tn3270eTcpConnLuLuBindImage OCTET STRING, + tn3270eTcpConnSnaState INTEGER, + tn3270eTcpConnStateLastDiscReason INTEGER, + tn3270eTcpConnSrvrConfIndex Unsigned32, + tn3270eTcpConnActivationTime TimeStamp + } + +tn3270eTcpConnRemAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of the value of the + tn3270eTcpConnRemAddress object. For example, + ipv4(1) or ipv6(2)." + ::= { tn3270eTcpConnEntry 1 } + +tn3270eTcpConnRemAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote address associated with a TN3270E client. + tn3270eTcpConnRemAddrType indicates the address type + (IPv4 or IPv6, for example). + + If a TN3270(E) client is connected to its + server via a proxy client the address represented by + the value of this object shall be the remote client's + address, not the proxy client's address." + ::= { tn3270eTcpConnEntry 2 } + +tn3270eTcpConnRemPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port associated with a TN3270E client. The value 0 + is used if the tn3270eTcpConnRemAddrType identifies an address + type that does not support ports. + + If a TN3270(E) client is connected to its server via a proxy + client, the port represented by the value of this object shall + be the remote client's port, not the proxy client's port." + ::= { tn3270eTcpConnEntry 3 } + +tn3270eTcpConnLocalAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of the value of the + tn3270eTcpConnLocalAddress object. For example, + ipv4(1) or ipv6(2)." + ::= { tn3270eTcpConnEntry 4 } + +tn3270eTcpConnLocalAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local address associated with a TN3270E client. + tn3270eTcpConnRemAddrType indicates the address type + (IPv4 or IPv6, for example)." + ::= { tn3270eTcpConnEntry 5 } + +tn3270eTcpConnLocalPort OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port associated with a TN3270E client." + ::= { tn3270eTcpConnEntry 6 } + +tn3270eTcpConnLastActivity OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of 100ths of seconds since any data was + transferred for the associated TCP Connection." + DEFVAL { 0 } + ::= { tn3270eTcpConnEntry 7 } + +tn3270eTcpConnBytesIn OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes received by the server from TCP + for this connection. + + A Management Station can detect discontinuities in + this counter by monitoring the + tn3270eTcpConnActivationTime object." + ::= { tn3270eTcpConnEntry 8 } + +tn3270eTcpConnBytesOut OBJECT-TYPE + SYNTAX Counter32 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bytes sent to TCP for this connection. + + A Management Station can detect discontinuities in + this counter by monitoring the + tn3270eTcpConnActivationTime object." + ::= { tn3270eTcpConnEntry 9 } + +tn3270eTcpConnResourceElement OBJECT-TYPE + SYNTAX SnaResourceName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "LU/Print secondary name for connecting an client + into an SNA network." + ::= { tn3270eTcpConnEntry 10 } + +tn3270eTcpConnResourceType OBJECT-TYPE + SYNTAX IANATn3270ResourceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the type of resource identified by + tn3270eTcpConnResourceElement." + ::= { tn3270eTcpConnEntry 11 } + +tn3270eTcpConnDeviceType OBJECT-TYPE + SYNTAX IANATn3270DeviceType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the device type if negotiated with the + client. A value of unknown(100) should be used as + the value of this object when a device type is not + negotiated. Refer to RFC 2355 for how device types + can be negotiated." + ::= { tn3270eTcpConnEntry 12 } + +tn3270eTcpConnFunctions OBJECT-TYPE + SYNTAX IANATn3270Functions + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates which of the TN3270 and TN3270E + functions were negotiated by the server and the client + for this TCP connection. + + Refer to tn3270eSrvrFunctionsSupported for the list of + these functions supported by the server." + ::= { tn3270eTcpConnEntry 13 } + +tn3270eTcpConnId OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The connection identifier associated with a TN3270 or + a TN3270E session's TCP connection. TCP implementations + often assign a unique (with respect to itself) unsigned + integer as an identifier for a TCP connection. + + The value 0 indicates that a connection does not have + a valid connection identifier." + ::= { tn3270eTcpConnEntry 14 } + +tn3270eTcpConnClientIdFormat OBJECT-TYPE + SYNTAX IANATn3270eClientType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The format of a corresponding tn3270eTcpConnClientId + object as defined by the IANSTn3270eClientType textual + convention imported from the IANATn3270eTC-MIB." + ::= { tn3270eTcpConnEntry 15 } + +tn3270eTcpConnClientId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..512)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Additional client identification information. The + type of this information is indicated by the value of + the corresponding tn3270eTcpConnClientIdFormat object. + All values are returned in network-byte order. + + The purpose of this object is to provide an alternate + means of identifying a client, other than though the + remote address returned in tn3270eTcpConnRemAddress." + ::= { tn3270eTcpConnEntry 16 } + +tn3270eTcpConnTraceData OBJECT-TYPE + SYNTAX Tn3270eTraceData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Trace data for this session." + ::= { tn3270eTcpConnEntry 17 } + +tn3270eTcpConnLogInfo OBJECT-TYPE + SYNTAX IANATn3270eLogData + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Log information, encoded as specified in the + IANATn3270eLogData textual convention from the + IANAtn3270eTC-MIB." + ::= { tn3270eTcpConnEntry 18 } + +tn3270eTcpConnLuLuBindImage OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..256)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "When there is a currently active LU-LU session for + this connection, this object returns the BIND Image + (defined to be bytes 1-p of the complete BIND Request + Unit -- see 'SNA Formats' for more information) + that was received from the PLU during session + activation. When there is no active LU-LU session, + or when a BIND image is unavailable for some other + reason, this object returns a zero-length octet + string." + REFERENCE + "'Systems Network Architecture Formats', IBM + Publication GA27-3136." + ::= { tn3270eTcpConnEntry 19 } + +tn3270eTcpConnSnaState OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + noSluSession(2), + sscpLuSession(3), -- but no LU-LU session + luLuSession(4), -- but no SSCP-LU session + sscpLuSessionAndLuLuSession(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current state of the SNA side of the end-to-end + TN3270 connection. The following states are defined: + + unknown(1) - The true state is not known. + noSluSession(2) - The SLU has neither an SSCP-LU + nor an LU-LU session active. + sscpLuSession(3) - The SSCP-LU session for the SLU + is active, but the SLU is not + currently in session with a PLU. + luLuSession(4) - The SLU is currently in session + with a PLU, but the SSCP-LU + session for the LU is not active. + sscpLuSessionAndLuLuSession(5) - The SLU currently has + an active session with a PLU, + and the SSCP-LU session for the + SLU is active." + + ::= { tn3270eTcpConnEntry 20 } + +tn3270eTcpConnStateLastDiscReason OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + hostSendsUnbind(2), + hostDontAcceptConnection(3), + outOfResource(4), + clientProtocolError(5), + invalidDeviceName(6), + deviceInUse(7), + inactivityTimeout(8), + hostNotResponding(9), + clientNotResponding(10), + serverClose(11), + sysreqLogoff(12), + serverSpecificHexCode(13) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The last disconnect reason. A session that has not + experienced a disconnect shall use the value unknown(1) + for this object. Depending on when an implementation + removes entries from this table, certain states may + never be returned." + ::= { tn3270eTcpConnEntry 21 } + +tn3270eTcpConnSrvrConfIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "tn3270eSrvrConfIndex of the tn3270eSrvrConfEntry + belonging to the TN3270E server to which this entry + belongs." + ::= { tn3270eTcpConnEntry 22 } + +tn3270eTcpConnActivationTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the sysUpTime object the last time + this TCP connection became active." + ::= { tn3270eTcpConnEntry 23 } + +tn3270eConfSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating + TN3270E-MIB applications to coordinate their use + of the tn3270eSrvrConfTable, the tn3270eSrvrPortTable, + the tn3270eClientGroupTable, the tn3270eResPoolTable, + and the tn3270eClientResMapTable. + + When creating a new entry or altering an existing entry + in the any of the tables mentioned above, an application + should make use of tn3270eRtSpinLock to serialize + application changes or additions. + + Since this is an advisory lock, the use of this lock is + not enforced." + ::= { tn3270eObjects 10 } + +-- Conformance Definitions + +tn3270eGroups OBJECT IDENTIFIER ::= { tn3270eConformance 1 } + +tn3270eCompliances OBJECT IDENTIFIER ::= { tn3270eConformance 2 } + +-- compliance statements + +tn3270eCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support the + TN3270E-MIB." + MODULE -- this module + MANDATORY-GROUPS { tn3270eBasicGroup, + tn3270eSessionGroup + } + GROUP tn3270eResMapGroup + DESCRIPTION + "This group is optional and provides a method of + performing tn3270eClientGroup to tn3270eResPool + mapping." + + GROUP tn3270eHiCapacityGroup + DESCRIPTION + "This group is optional and provides for support + of high capacity counters." + + OBJECT tn3270eSrvrConfConnectivityChk + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set to this + object if the associated TN3270E server doesn't + support either TIMING-MARK or NOP processing. In + this case an agent should return noCheck on + retrieval." + + OBJECT tn3270eSrvrConfTmNopInactTime + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set to this + object if the functions enabled by + tn3270eSrvrConfConnectivityChk are not supported. + An agent in this case should return a value of 0." + + OBJECT tn3270eSrvrConfTmNopInterval + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set to this + object if the functions enabled by + tn3270eSrvrConfConnectivityChk are not supported. + An agent in this case should return a value of 0." + + OBJECT tn3270eSrvrConfAdminStatus + DESCRIPTION + "A TN3270E server is not required to support a + stopImmediate state transition." + + OBJECT tn3270eSrvrConfRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tn3270eSrvrConfTmTimeout + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a set to this + object if the functions enabled by + tn3270eSrvrConfConnectivityChk are not supported. + An agent in this case should return a value of 0." + + OBJECT tn3270eSrvrPortRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tn3270eClientGroupRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tn3270eResPoolRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tn3270eClientResMapRowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { tn3270eCompliances 1 } + +-- units of conformance + +tn3270eBasicGroup OBJECT-GROUP + OBJECTS { + tn3270eSrvrConfInactivityTimeout, + tn3270eSrvrConfConnectivityChk, + tn3270eSrvrConfTmNopInactTime, + tn3270eSrvrConfTmNopInterval, + tn3270eSrvrFunctionsSupported, + tn3270eSrvrConfAdminStatus, + tn3270eSrvrConfOperStatus, + tn3270eSrvrConfSessionTermState, + tn3270eSrvrConfSrvrType, + tn3270eSrvrConfContact, + tn3270eSrvrConfRowStatus, + tn3270eSrvrConfLastActTime, + tn3270eSrvrConfTmTimeout, + tn3270eSrvrPortRowStatus, + tn3270eSrvrStatsUpTime, + tn3270eSrvrStatsMaxTerms, + tn3270eSrvrStatsInUseTerms, + tn3270eSrvrStatsSpareTerms, + tn3270eSrvrStatsMaxPtrs, + tn3270eSrvrStatsInUsePtrs, + tn3270eSrvrStatsSparePtrs, + tn3270eSrvrStatsInConnects, + tn3270eSrvrStatsConnResrceRejs, + tn3270eSrvrStatsDisconnects, + tn3270eSrvrStatsInOctets, + tn3270eSrvrStatsOutOctets, + tn3270eSrvrStatsConnErrorRejs, + tn3270eClientGroupSubnetMask, + tn3270eClientGroupPfxLength, + tn3270eClientGroupRowStatus, + tn3270eSnaMapLocalName, + tn3270eSnaMapPrimaryLuName, + tn3270eConfSpinLock + } + STATUS current + DESCRIPTION + "This group is mandatory for all hosts supporting the + TN3270E-MIB." + ::= { tn3270eGroups 1 } + +tn3270eSessionGroup OBJECT-GROUP + OBJECTS { + tn3270eResMapAddrType, + tn3270eResMapAddress, + tn3270eResMapPort, + tn3270eResMapElementType, + tn3270eResMapSscpSuppliedName, + tn3270eTcpConnLastActivity, + tn3270eTcpConnBytesIn, + tn3270eTcpConnBytesOut, + tn3270eTcpConnResourceElement, + tn3270eTcpConnResourceType, + tn3270eTcpConnDeviceType, + tn3270eTcpConnFunctions, + tn3270eTcpConnSrvrConfIndex, + tn3270eTcpConnActivationTime + } + STATUS current + DESCRIPTION + "This group is mandatory for all hosts supporting the + TN3270E-MIB." + ::= { tn3270eGroups 2 } + +tn3270eResMapGroup OBJECT-GROUP + OBJECTS { + tn3270eResPoolElementType, + tn3270eResPoolRowStatus, + tn3270eClientResMapRowStatus, + tn3270eTcpConnId, + tn3270eTcpConnClientIdFormat, + tn3270eTcpConnClientId, + tn3270eTcpConnTraceData, + tn3270eTcpConnLogInfo, + tn3270eTcpConnLuLuBindImage, + tn3270eTcpConnSnaState, + tn3270eTcpConnStateLastDiscReason + } + STATUS current + DESCRIPTION + "This group is optional for all hosts supporting the + TN3270E-MIB." + ::= { tn3270eGroups 3 } + +tn3270eHiCapacityGroup OBJECT-GROUP + OBJECTS { + tn3270eSrvrStatsHCInOctets, + tn3270eSrvrStatsHCOutOctets + } + STATUS current + DESCRIPTION + "Support of these objects is REQUIRED when the + Counter32 versions can potentially wrap too + frequently. This group is optional for all other + hosts supporting the TN3270E-MIB. + + The IF-MIB (RFC 2233) requires that the 64-bit + versions of its counters be implemented when an + interface can support rates of around 20 million + bits per second or greater. This implies a minimum + wrap rate of just over 28 minutes. It is recommended + that this same guideline be used for determining + whether an implementation implements these objects. + + This group contains two objects with the syntax + Counter64. An implementation that doesn't support + these objects should return noSuchObject, since + returning a zero is misleading." + + ::= { tn3270eGroups 4 } + +END diff --git a/mibs/ietf/TN3270E-RT-MIB b/mibs/ietf/TN3270E-RT-MIB new file mode 100644 index 0000000..dfb6a59 --- /dev/null +++ b/mibs/ietf/TN3270E-RT-MIB @@ -0,0 +1,890 @@ +TN3270E-RT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Counter32, Unsigned32, Gauge32 + FROM SNMPv2-SMI + RowStatus, DateAndTime, TimeStamp, TestAndIncr + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + tn3270eSrvrConfIndex, tn3270eClientGroupName, + tn3270eResMapElementType + FROM TN3270E-MIB + IANATn3270eAddrType, IANATn3270eAddress + FROM IANATn3270eTC-MIB + snanauMIB + FROM SNA-NAU-MIB; + + tn3270eRtMIB MODULE-IDENTITY + LAST-UPDATED "9807270000Z" -- July 27, 1998 + ORGANIZATION "TN3270E Working Group" + CONTACT-INFO + "Kenneth White (kennethw@vnet.ibm.com) + IBM Corp. - Dept. BRQA/Bldg. 501/G114 + P.O. Box 12195 + 3039 Cornwallis + RTP, NC 27709-2195 + + Robert Moore (remoore@us.ibm.com) + IBM Corp. - Dept. BRQA/Bldg. 501/G114 + P.O. Box 12195 + 3039 Cornwallis + RTP, NC 27709-2195 + (919) 254-4436" + DESCRIPTION + "This module defines a portion of the management + information base (MIB) that enables monitoring of + TN3270 and TN3270E clients' response times by a + TN3270E server." + REVISION "9807270000Z" -- July 27, 1998 + DESCRIPTION + "RFC nnnn (Proposed Standard)" -- RFC Editor to fill in +::= { snanauMIB 9 } +-- snanauMIB ::= { mib-2 34 } + +-- Top level structure of the MIB + +tn3270eRtNotifications OBJECT IDENTIFIER ::= { tn3270eRtMIB 0 } +tn3270eRtObjects OBJECT IDENTIFIER ::= { tn3270eRtMIB 1 } +tn3270eRtConformance OBJECT IDENTIFIER ::= { tn3270eRtMIB 3 } + +-- MIB Objects + +-- Response Time Control Table + +tn3270eRtCollCtlTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eRtCollCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The response time monitoring collection control table, + which allows a management application to control the + types of response time data being collected, and the + clients for which it is being collected. + + This table is indexed by tn3270eSrvrConfIndex and + tn3270eClientGroupName imported from the + TN3270E-MIB. tn3270eSrvrConfIndex indicates within + a host which TN3270E server an entry applies to. + tn3270eClientGroupName it identifies the set of IP + clients for which response time data is being collected. + The particular IP clients making up the set are identified + in the tn3270eClientGroupTable in the TN3270E-MIB." + ::= { tn3270eRtObjects 1} + +tn3270eRtCollCtlEntry OBJECT-TYPE + SYNTAX Tn3270eRtCollCtlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the TN3270E response time monitoring collection + control table. To handle the case of multiple TN3270E + servers on the same host, the first index of this table is + the tn3270eSrvrConfIndex from the TN3270E-MIB." + INDEX { + tn3270eSrvrConfIndex, -- Server's index + tn3270eClientGroupName } -- What to collect on + ::= { tn3270eRtCollCtlTable 1 } + +Tn3270eRtCollCtlEntry ::= SEQUENCE { + tn3270eRtCollCtlType BITS, + tn3270eRtCollCtlSPeriod Unsigned32, + tn3270eRtCollCtlSPMult Unsigned32, + tn3270eRtCollCtlThreshHigh Unsigned32, + tn3270eRtCollCtlThreshLow Unsigned32, + tn3270eRtCollCtlIdleCount Unsigned32, + tn3270eRtCollCtlBucketBndry1 Unsigned32, + tn3270eRtCollCtlBucketBndry2 Unsigned32, + tn3270eRtCollCtlBucketBndry3 Unsigned32, + tn3270eRtCollCtlBucketBndry4 Unsigned32, + tn3270eRtCollCtlRowStatus RowStatus } + +-- The OID { tn3270eRtCollCtlEntry 1 } is not used + +tn3270eRtCollCtlType OBJECT-TYPE + SYNTAX BITS { + aggregate(0), + excludeIpComponent(1), + ddr(2), + average(3), + buckets(4), + traps(5) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls what types of response time data to + collect, whether to summarize the data across the members + of a client group or keep it individually, whether to + introduce dynamic definite responses, and whether to + generate traps. + aggregate(0) - Aggregate response time data for the + client group as a whole. If this bit + is set to 0, then maintain response + time data separately for each member + of the client group. + excludeIpComponent(1) - Do not include the IP-network + component in any response times. + ddr(2) - Enable dynamic definite response. + average(3) - Produce an average response time + based on a specified collection + interval. + buckets(4) - Maintain tn3270eRtDataBucket values in + a corresponding tn3270eRtDataEntry, + based on the bucket boundaries specified + in the tn3270eRtCollCtlBucketBndry + objects . + traps(5) - generate the notifications specified + in this MIB module. The + tn3270eRtExceeded and tn3270eRtOkay + notifications are generated only if + average(3) is also specified." + ::= { tn3270eRtCollCtlEntry 2 } + +tn3270eRtCollCtlSPeriod OBJECT-TYPE + SYNTAX Unsigned32 (15..86400) -- 15 second min, 24 hour max + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The number of seconds that defines the sample period. + The actual interval is defined as tn3270eRtCollCtlSPeriod + times tn3270eRtCollCtlSPMult. + + The value of this object is used only if the corresponding + tn3270eRtCollCtlType has the average(3) setting." + DEFVAL {20} -- 20 seconds + ::= { tn3270eRtCollCtlEntry 3 } + +tn3270eRtCollCtlSPMult OBJECT-TYPE + SYNTAX Unsigned32 (1..5760) -- 5760 x SPeriod of 15 is 24 hours + UNITS "period" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The sample period multiplier; this value is multiplied by + the sample period, tn3270eRtCollCtlSPeriod, to determine + the collection interval. + Sliding-window average calculation can, if necessary, be + disabled, by setting the sample period multiplier, + tn3270eRtCollCtlSPMult, to 1, and setting the sample + period, tn3270eRtCollCtlSPeriod, to the required + collection interval. + + The value of this object is used only if the corresponding + tn3270eRtCollCtlType has the average(3) setting." + DEFVAL { 30 } -- yields an interval of 10 minutes when + -- used with the default SPeriod value + ::= { tn3270eRtCollCtlEntry 4 } + +tn3270eRtCollCtlThreshHigh OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a tn3270eRtExceeded + notification, signalling that a monitored total response + time has exceeded the specified limit. A value of zero + for this object suppresses generation of this notification. + The value of this object is used only if the corresponding + tn3270eRtCollCtlType has average(3) and traps(5) selected. + + A tn3270eRtExceeded notification is not generated again for a + tn3270eRtDataEntry until an average response time falling below + the low threshold tn3270eRtCollCtlThreshLow specified for the + client group has occurred for the entry." + + DEFVAL { 0 } -- suppress notifications + ::= { tn3270eRtCollCtlEntry 5 } + +tn3270eRtCollCtlThreshLow OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The threshold for generating a tn3270eRtOkay notification, + signalling that a monitored total response time has fallen + below the specified limit. A value of zero for this object + suppresses generation of this notification. The value of + this object is used only if the corresponding + tn3270eRtCollCtlType has average(3) and traps(5) selected. + + A tn3270eRtOkay notification is not generated again for a + tn3270eRtDataEntry until an average response time + exceeding the high threshold tn3270eRtCollCtlThreshHigh + specified for the client group has occurred for the entry." + DEFVAL { 0 } -- suppress notifications + ::= { tn3270eRtCollCtlEntry 6 } + +tn3270eRtCollCtlIdleCount OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "transactions" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object is used to determine whether a + sample that yields an average response time exceeding the + value of tn3270eRtCollCtlThreshHigh was a statistically + valid one. If the following statement is true, then the + sample was statistically valid, and so a tn3270eRtExceeded + notification should be generated: + + AvgCountTrans * ((AvgRt/ThreshHigh - 1) ** 2) >= IdleCount + + This comparison is done only if the corresponding + tn3270eRtCollCtlType has average(3) and traps(5) selected." + DEFVAL { 1 } + ::= { tn3270eRtCollCtlEntry 7 } + +tn3270eRtCollCtlBucketBndry1 OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object defines the range of transaction + response times counted in the Tn3270eRtDataBucket1Rts + object: those less than or equal to this value." + DEFVAL { 10 } + ::= { tn3270eRtCollCtlEntry 8 } + +tn3270eRtCollCtlBucketBndry2 OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object, together with that of the + tn3270eRtCollCtlBucketBndry1 object, defines the range + of transaction response times counted in the + Tn3270eRtDataBucket2Rts object: those greater than the + value of the tn3270eRtCollCtlBucketBndry1 object, and + less than or equal to the value of this object." + DEFVAL { 20 } + ::= { tn3270eRtCollCtlEntry 9 } + +tn3270eRtCollCtlBucketBndry3 OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object, together with that of the + tn3270eRtCollCtlBucketBndry2 object, defines the range of + transaction response times counted in the + Tn3270eRtDataBucket3Rts object: those greater than the + value of the tn3270eRtCollCtlBucketBndry2 object, and less + than or equal to the value of this object." + DEFVAL { 50 } + ::= { tn3270eRtCollCtlEntry 10 } + +tn3270eRtCollCtlBucketBndry4 OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object, together with that of the + tn3270eRtCollCtlBucketBndry3 object, defines the range + of transaction response times counted in the + Tn3270eRtDataBucket4Rts object: those greater than the + value of the tn3270eRtCollCtlBucketBndry3 object, and + less than or equal to the value of this object. + + The value of this object also defines the range of + transaction response times counted in the + Tn3270eRtDataBucket5Rts object: those greater than the + value of this object." + DEFVAL { 100 } + ::= { tn3270eRtCollCtlEntry 11 } + +tn3270eRtCollCtlRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object allows entries to be created and deleted + in the tn3270eRtCollCtlTable. An entry in this table + is deleted by setting this object to destroy(6). + Deleting an entry in this table has the side-effect + of removing all entries from the tn3270eRtDataTable + that are associated with the entry being deleted." + ::= { tn3270eRtCollCtlEntry 12 } + + +-- TN3270E Response Time Data Table + +tn3270eRtDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF Tn3270eRtDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The response time data table. Entries in this table are + created based on entries in the tn3270eRtCollCtlTable." + ::= { tn3270eRtObjects 2 } + +tn3270eRtDataEntry OBJECT-TYPE + SYNTAX Tn3270eRtDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries in this table are created based upon the + tn3270eRtCollCtlTable. When the corresponding + tn3270eRtCollCtlType has aggregate(0) specified, a single + entry is created in this table, with a tn3270eRtDataClientAddrType + of unknown(0), a zero-length octet string value for + tn3270eRtDataClientAddress, and a tn3270eRtDataClientPort value of + 0. When aggregate(0) is not specified, a separate entry is + created for each client in the group. + + Note that the following objects defined within an entry in this + table can wrap: + tn3270eRtDataTotalRts + tn3270eRtDataTotalIpRts + tn3270eRtDataCountTrans + tn3270eRtDataCountDrs + tn3270eRtDataElapsRnTrpSq + tn3270eRtDataElapsIpRtSq + tn3270eRtDataBucket1Rts + tn3270eRtDataBucket2Rts + tn3270eRtDataBucket3Rts + tn3270eRtDataBucket4Rts + tn3270eRtDataBucket5Rts" + INDEX { + tn3270eSrvrConfIndex, -- Server's local index + tn3270eClientGroupName, -- Collection target + tn3270eRtDataClientAddrType, + tn3270eRtDataClientAddress, + tn3270eRtDataClientPort } + ::= { tn3270eRtDataTable 1 } + +Tn3270eRtDataEntry ::= SEQUENCE { + tn3270eRtDataClientAddrType IANATn3270eAddrType, + tn3270eRtDataClientAddress IANATn3270eAddress, + tn3270eRtDataClientPort Unsigned32, + tn3270eRtDataAvgRt Gauge32, + tn3270eRtDataAvgIpRt Gauge32, + tn3270eRtDataAvgCountTrans Gauge32, + tn3270eRtDataIntTimeStamp DateAndTime, + tn3270eRtDataTotalRts Counter32, + tn3270eRtDataTotalIpRts Counter32, + tn3270eRtDataCountTrans Counter32, + tn3270eRtDataCountDrs Counter32, + tn3270eRtDataElapsRndTrpSq Unsigned32, + tn3270eRtDataElapsIpRtSq Unsigned32, + tn3270eRtDataBucket1Rts Counter32, + tn3270eRtDataBucket2Rts Counter32, + tn3270eRtDataBucket3Rts Counter32, + tn3270eRtDataBucket4Rts Counter32, + tn3270eRtDataBucket5Rts Counter32, + tn3270eRtDataRtMethod INTEGER, + tn3270eRtDataDiscontinuityTime TimeStamp + } + +tn3270eRtDataClientAddrType OBJECT-TYPE + SYNTAX IANATn3270eAddrType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Indicates the type of address represented by the value + of tn3270eRtDataClientAddress. The value unknown(0) is + used if aggregate data is being collected for the client + group." + ::= { tn3270eRtDataEntry 1 } + +tn3270eRtDataClientAddress OBJECT-TYPE + SYNTAX IANATn3270eAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the IP address of the TN3270 client being + monitored. A zero-length octet string is used if + aggregate data is being collected for the client group." + ::= { tn3270eRtDataEntry 2 } + +tn3270eRtDataClientPort OBJECT-TYPE + SYNTAX Unsigned32(0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Contains the client port number of the TN3270 client being + monitored. The value 0 is used if aggregate data is being + collected for the client group, or if the + tn3270eRtDataClientAddrType identifies an address type that + does not support ports." + ::= { tn3270eRtDataEntry 3 } + +tn3270eRtDataAvgRt OBJECT-TYPE + SYNTAX Gauge32 + UNITS "tenths of seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average total response time measured over the last + collection interval." + DEFVAL { 0 } + ::= { tn3270eRtDataEntry 4 } + +tn3270eRtDataAvgIpRt OBJECT-TYPE + SYNTAX Gauge32 + UNITS "tenths of seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average IP response time measured over the last + collection interval." + DEFVAL { 0 } + ::= { tn3270eRtDataEntry 5 } + +tn3270eRtDataAvgCountTrans OBJECT-TYPE + SYNTAX Gauge32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sliding transaction count used for calculating the + values of the tn3270eRtDataAvgRt and tn3270eRtDataAvgIpRt + objects. The actual transaction count is available in + the tn3270eRtDataCountTrans object. + + The initial value of this object, before any averages have + been calculated, is 0." + ::= { tn3270eRtDataEntry 6 } + +tn3270eRtDataIntTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time of the last interval that + tn3270eRtDataAvgRt, tn3270eRtDataAvgIpRt, and + tn3270eRtDataAvgCountTrans were calculated. + + Prior to the calculation of the first interval + averages, this object returns the value + 0x0000000000000000000000. When this value is + returned, the remaining objects in the entry have + no significance." + ::= { tn3270eRtDataEntry 7 } + +tn3270eRtDataTotalRts OBJECT-TYPE + SYNTAX Counter32 + UNITS "tenths of seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the total response times collected. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 8 } + +tn3270eRtDataTotalIpRts OBJECT-TYPE + SYNTAX Counter32 + UNITS "tenths of seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the total IP-network response times + collected. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 9 } + +tn3270eRtDataCountTrans OBJECT-TYPE + SYNTAX Counter32 + UNITS "transactions" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the total number of transactions detected. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 10 } + +tn3270eRtDataCountDrs OBJECT-TYPE + SYNTAX Counter32 + UNITS "definite responses" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the total number of definite responses + detected. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 11 } + +tn3270eRtDataElapsRndTrpSq OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds squared" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of the elapsed round trip time squared. The sum + of the squares is kept in order to enable calculation of + a variance." + DEFVAL { 0 } + ::= { tn3270eRtDataEntry 12 } + +tn3270eRtDataElapsIpRtSq OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "tenths of seconds squared" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sum of the elapsed IP round trip time squared. + The sum of the squares is kept in order to enable + calculation of a variance." + DEFVAL { 0 } + ::= { tn3270eRtDataEntry 13 } + +tn3270eRtDataBucket1Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 1. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 14 } + +tn3270eRtDataBucket2Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 2. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 15 } + +tn3270eRtDataBucket3Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 3. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 16 } + +tn3270eRtDataBucket4Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 4. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 17 } + +tn3270eRtDataBucket5Rts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the response times falling into bucket 5. + + A management application can detect discontinuities in this + counter by monitoring the tn3270eRtDataDiscontinuityTime + object." + ::= { tn3270eRtDataEntry 18 } + +tn3270eRtDataRtMethod OBJECT-TYPE + SYNTAX INTEGER { + none(0), + responses(1), + timingMark(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the method that was + used in calculating the IP network time. + + The value 'none(0) indicates that response times were not + calculated for the IP network." + ::= { tn3270eRtDataEntry 19 } + +tn3270eRtDataDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at + which one or more of this entry's counter objects + suffered a discontinuity. This may happen if a TN3270E + server is stopped and then restarted, and local methods + are used to set up collection policy + (tn3270eRtCollCtlTable entries)." + ::= { tn3270eRtDataEntry 20 } + + +tn3270eRtSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow cooperating TN3270E-RT-MIB + applications to coordinate their use of the + tn3270eRtCollCtlTable. + When creating a new entry or altering an existing entry + in the tn3270eRtCollCtlTable, an application should make + use of tn3270eRtSpinLock to serialize application changes + or additions. + + Since this is an advisory lock, the use of this lock is + not enforced." + ::= { tn3270eRtObjects 3 } + +-- Notifications + +tn3270eRtExceeded NOTIFICATION-TYPE + OBJECTS { + tn3270eRtDataIntTimeStamp, + tn3270eRtDataAvgRt, + tn3270eRtDataAvgIpRt, + tn3270eRtDataAvgCountTrans, + tn3270eRtDataRtMethod + } + STATUS current + DESCRIPTION + "This notification is generated when the average response + time, tn3270eRtDataAvgRt, exceeds + tn3270eRtCollCtlThresholdHigh at the end of a collection + interval specified by tn3270eCollCtlSPeriod + times tn3270eCollCtlSPMult. Note that the corresponding + tn3270eCollCtlType must have traps(5) and average(3) set + for this notification to be generated. In addition, + tn3270eRtDataAvgCountTrans, tn3270eRtCollCtlThreshHigh, and + tn3270eRtDataAvgRt are algorithmically compared to + tn3270eRtCollCtlIdleCount for determination if this + notification will be suppressed." + ::= { tn3270eRtNotifications 1 } + +tn3270eRtOkay NOTIFICATION-TYPE + OBJECTS { + tn3270eRtDataIntTimeStamp, + tn3270eRtDataAvgRt, + tn3270eRtDataAvgIpRt, + tn3270eRtDataAvgCountTrans, + tn3270eRtDataRtMethod + } + STATUS current + DESCRIPTION + "This notification is generated when the average response + time, tn3270eRtDataAvgRt, falls below + tn3270eRtCollCtlThresholdLow at the end of a collection + interval specified by tn3270eCollCtlSPeriod times + tn3270eCollCtlSPMult, after a tn3270eRtExceeded + notification was generated. Note that the corresponding + tn3270eCollCtlType must have traps(5) and average(3) + set for this notification to be generated." + ::= { tn3270eRtNotifications 2 } + +tn3270eRtCollStart NOTIFICATION-TYPE + OBJECTS { + tn3270eRtDataRtMethod, -- type of collection + tn3270eResMapElementType -- type of resource + } + STATUS current + DESCRIPTION + "This notification is generated when response time data + collection is enabled for a member of a client group. + In order for this notification to occur the corresponding + tn3270eRtCollCtlType must have traps(5) selected. + + tn3270eResMapElementType contains a valid value only if + tn3270eRtDataClientAddress contains a valid address + (rather than a zero-length octet string)." + ::= { tn3270eRtNotifications 3 } + +tn3270eRtCollEnd NOTIFICATION-TYPE + OBJECTS { + tn3270eRtDataDiscontinuityTime, + tn3270eRtDataAvgRt, + tn3270eRtDataAvgIpRt, + tn3270eRtDataAvgCountTrans, + tn3270eRtDataIntTimeStamp, + tn3270eRtDataTotalRts, + tn3270eRtDataTotalIpRts, + tn3270eRtDataCountTrans, + tn3270eRtDataCountDrs, + tn3270eRtDataElapsRndTrpSq, + tn3270eRtDataElapsIpRtSq, + tn3270eRtDataBucket1Rts, + tn3270eRtDataBucket2Rts, + tn3270eRtDataBucket3Rts, + tn3270eRtDataBucket4Rts, + tn3270eRtDataBucket5Rts, + tn3270eRtDataRtMethod + } + STATUS current + DESCRIPTION + "This notification is generated when an tn3270eRtDataEntry + is deleted after being active (actual data collected), in + order to enable a management application monitoring an + tn3270eRtDataEntry to get the entry's final values. Note + that the corresponding tn3270eCollCtlType must have traps(5) + set for this notification to be generated." + ::= { tn3270eRtNotifications 4 } + +-- Conformance Statement + +tn3270eRtGroups OBJECT IDENTIFIER ::= { tn3270eRtConformance 1 } +tn3270eRtCompliances OBJECT IDENTIFIER ::= { tn3270eRtConformance 2 } + +-- Compliance statements + +tn3270eRtCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that support the + TN327E-RT-MIB." + MODULE -- this module + MANDATORY-GROUPS { tn3270eRtGroup, tn3270eRtNotGroup } + + OBJECT tn3270eRtCollCtlType + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation to + this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlSPeriod + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to allow the user to change + the default value of this object, and is allowed to + use a different default." + + OBJECT tn3270eRtCollCtlSPMult + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlThreshHigh + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlThreshLow + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlIdleCount + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlBucketBndry1 + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlBucketBndry2 + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlBucketBndry3 + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlBucketBndry4 + MIN-ACCESS read-only + DESCRIPTION + "The agent is not required to support a SET operation + to this object in the absence of adequate security." + + OBJECT tn3270eRtCollCtlRowStatus + SYNTAX INTEGER { + active(1) -- subset of RowStatus + } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention + need be supported, specifically: active(1)." + + ::= {tn3270eRtCompliances 1 } + +-- Group definitions + +tn3270eRtGroup OBJECT-GROUP + OBJECTS { + tn3270eRtCollCtlType, + tn3270eRtCollCtlSPeriod, + tn3270eRtCollCtlSPMult, + tn3270eRtCollCtlThreshHigh, + tn3270eRtCollCtlThreshLow, + tn3270eRtCollCtlIdleCount, + tn3270eRtCollCtlBucketBndry1, + tn3270eRtCollCtlBucketBndry2, + tn3270eRtCollCtlBucketBndry3, + tn3270eRtCollCtlBucketBndry4, + tn3270eRtCollCtlRowStatus, + tn3270eRtDataDiscontinuityTime, + tn3270eRtDataAvgRt, + tn3270eRtDataAvgIpRt, + tn3270eRtDataAvgCountTrans, + tn3270eRtDataIntTimeStamp, + tn3270eRtDataTotalRts, + tn3270eRtDataTotalIpRts, + tn3270eRtDataCountTrans, + tn3270eRtDataCountDrs, + tn3270eRtDataElapsRndTrpSq, + tn3270eRtDataElapsIpRtSq, + tn3270eRtDataBucket1Rts, + tn3270eRtDataBucket2Rts, + tn3270eRtDataBucket3Rts, + tn3270eRtDataBucket4Rts, + tn3270eRtDataBucket5Rts, + tn3270eRtDataRtMethod, + tn3270eRtSpinLock } + STATUS current + DESCRIPTION + "This group is mandatory for all implementations that + support the TN3270E-RT-MIB. " + ::= { tn3270eRtGroups 1 } + +tn3270eRtNotGroup NOTIFICATION-GROUP + NOTIFICATIONS { + tn3270eRtExceeded, + tn3270eRtOkay, + tn3270eRtCollStart, + tn3270eRtCollEnd + } + STATUS current + DESCRIPTION + "The notifications that must be supported when the + TN3270E-RT-MIB is implemented. " + ::= { tn3270eRtGroups 2 } + +END diff --git a/mibs/ietf/TOKEN-RING-RMON-MIB b/mibs/ietf/TOKEN-RING-RMON-MIB new file mode 100644 index 0000000..75a8692 --- /dev/null +++ b/mibs/ietf/TOKEN-RING-RMON-MIB @@ -0,0 +1,2301 @@ +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; + + + -- 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 } + + +-- 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/mibs/ietf/TOKENRING-MIB b/mibs/ietf/TOKENRING-MIB new file mode 100644 index 0000000..514cc7e --- /dev/null +++ b/mibs/ietf/TOKENRING-MIB @@ -0,0 +1,841 @@ +TOKENRING-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + Counter32, Integer32 FROM SNMPv2-SMI + transmission FROM RFC1213-MIB + MacAddress,TimeStamp FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; + +dot5 MODULE-IDENTITY + LAST-UPDATED "9410231150Z" + ORGANIZATION "IETF Interfaces MIB Working Group" + CONTACT-INFO + " Keith McCloghrie + + Postal: cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 + US + + Phone: +1 408 526 5260 + EMail: kzm@cisco.com" + DESCRIPTION + "The MIB module for IEEE Token Ring entities." + ::= { transmission 9 } + + +-- The 802.5 Interface Table + +-- This table contains state and parameter information which +-- is specific to 802.5 interfaces. It is mandatory that +-- systems having 802.5 interfaces implement this table in +-- addition to the ifTable (see RFCs 1213 and 1573). + +dot5Table OBJECT-TYPE + SYNTAX SEQUENCE OF Dot5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains Token Ring interface + parameters and state variables, one entry + per 802.5 interface." + ::= { dot5 1 } + +dot5Entry OBJECT-TYPE + SYNTAX Dot5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of Token Ring status and parameter + values for an 802.5 interface." + INDEX { dot5IfIndex } + ::= { dot5Table 1 } + +Dot5Entry ::= SEQUENCE { + dot5IfIndex Integer32, + dot5Commands INTEGER, + dot5RingStatus INTEGER, + dot5RingState INTEGER, + dot5RingOpenStatus INTEGER, + dot5RingSpeed INTEGER, + dot5UpStream MacAddress, + dot5ActMonParticipate INTEGER, + dot5Functional MacAddress, + dot5LastBeaconSent TimeStamp +} + +dot5IfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + 802.5 interface for which this entry + contains management information. The + value of this object for a particular + interface has the same value as the + ifIndex object, defined in MIB-II for + the same interface." + ::= { dot5Entry 1 } + +dot5Commands OBJECT-TYPE + SYNTAX INTEGER { + noop(1), + open(2), + reset(3), + close(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When this object is set to the value of + open(2), the station should go into the + open state. The progress and success of + the open is given by the values of the + objects dot5RingState and + dot5RingOpenStatus. + When this object is set to the value + of reset(3), then the station should do + a reset. On a reset, all MIB counters + should retain their values, if possible. + Other side affects are dependent on the + hardware chip set. + When this object is set to the value + of close(4), the station should go into + the stopped state by removing itself + from the ring. + Setting this object to a value of + noop(1) has no effect. + When read, this object always has a + value of noop(1). + The open(2) and close(4) values + correspond to the up(1) and down(2) values + of MIB-II's ifAdminStatus and ifOperStatus, + i.e., the setting of ifAdminStatus and + dot5Commands affects the values of both + dot5Commands and ifOperStatus." + ::= { dot5Entry 2 } + +dot5RingStatus OBJECT-TYPE + SYNTAX INTEGER (0..262143) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current interface status which can + be used to diagnose fluctuating problems + that can occur on token rings, after a + station has successfully been added to + the ring. + Before an open is completed, this + object has the value for the 'no status' + condition. The dot5RingState and + dot5RingOpenStatus objects provide for + debugging problems when the station + can not even enter the ring. + The object's value is a sum of + values, one for each currently applicable + condition. The following values are + defined for various conditions: + + 0 = No Problems detected + 32 = Ring Recovery + 64 = Single Station + 256 = Remove Received + 512 = reserved + 1024 = Auto-Removal Error + 2048 = Lobe Wire Fault + 4096 = Transmit Beacon + 8192 = Soft Error + 16384 = Hard Error + 32768 = Signal Loss + 131072 = no status, open not completed." + ::= { dot5Entry 3 } + +dot5RingState OBJECT-TYPE + SYNTAX INTEGER { + opened(1), + closed(2), + opening(3), + closing(4), + openFailure(5), + ringFailure(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current interface state with respect + to entering or leaving the ring." + ::= { dot5Entry 4 } + +dot5RingOpenStatus OBJECT-TYPE + SYNTAX INTEGER { + noOpen(1), -- no open attempted + badParam(2), + lobeFailed(3), + signalLoss(4), + insertionTimeout(5), + ringFailed(6), + beaconing(7), + duplicateMAC(8), + requestFailed(9), + removeReceived(10), + open(11) -- last open successful + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates the success, or the + reason for failure, of the station's most + recent attempt to enter the ring." + ::= { dot5Entry 5 } + +dot5RingSpeed OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + oneMegabit(2), + fourMegabit(3), + sixteenMegabit(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The ring-speed at the next insertion into + the ring. Note that this may or may not be + different to the current ring-speed which is + given by MIB-II's ifSpeed. For interfaces + which do not support changing ring-speed, + dot5RingSpeed can only be set to its current + value. When dot5RingSpeed has the value + unknown(1), the ring's actual ring-speed is + to be used." + ::= { dot5Entry 6 } + +dot5UpStream OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The MAC-address of the up stream neighbor + station in the ring." + ::= { dot5Entry 7 } + +dot5ActMonParticipate OBJECT-TYPE + SYNTAX INTEGER { + true(1), + false(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If this object has a value of true(1) then + this interface will participate in the + active monitor selection process. If the + value is false(2) then it will not. + Setting this object does not take effect + until the next Active Monitor election, and + might not take effect until the next time + the interface is opened." + ::= { dot5Entry 8 } + +dot5Functional OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The bit mask of all Token Ring functional + addresses for which this interface will + accept frames." + ::= { dot5Entry 9 } + +dot5LastBeaconSent OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of MIB-II's sysUpTime object at which + the local system last transmitted a Beacon frame + on this interface." + ::= { dot5Entry 10 } + +-- The 802.5 Statistics Table + +-- This table contains statistics and error counter which are +-- specific to 802.5 interfaces. It is mandatory that systems +-- having 802.5 interfaces implement this table. + +dot5StatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot5StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing Token Ring statistics, + one entry per 802.5 interface. + All the statistics are defined using + the syntax Counter32 as 32-bit wrap around + counters. Thus, if an interface's + hardware maintains these statistics in + 16-bit counters, then the agent must read + the hardware's counters frequently enough + to prevent loss of significance, in order + to maintain 32-bit counters in software." + ::= { dot5 2 } + +dot5StatsEntry OBJECT-TYPE + SYNTAX Dot5StatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry contains the 802.5 statistics + for a particular interface." + INDEX { dot5StatsIfIndex } + ::= { dot5StatsTable 1 } + + +Dot5StatsEntry ::= SEQUENCE { + dot5StatsIfIndex Integer32, + dot5StatsLineErrors Counter32, + dot5StatsBurstErrors Counter32, + dot5StatsACErrors Counter32, + dot5StatsAbortTransErrors Counter32, + dot5StatsInternalErrors Counter32, + dot5StatsLostFrameErrors Counter32, + dot5StatsReceiveCongestions Counter32, + dot5StatsFrameCopiedErrors Counter32, + dot5StatsTokenErrors Counter32, + dot5StatsSoftErrors Counter32, + dot5StatsHardErrors Counter32, + dot5StatsSignalLoss Counter32, + dot5StatsTransmitBeacons Counter32, + dot5StatsRecoverys Counter32, + dot5StatsLobeWires Counter32, + dot5StatsRemoves Counter32, + dot5StatsSingles Counter32, + dot5StatsFreqErrors Counter32 +} + + +dot5StatsIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object identifies the + 802.5 interface for which this entry + contains management information. The + value of this object for a particular + interface has the same value as MIB-II's + ifIndex object for the same interface." + ::= { dot5StatsEntry 1 } + +dot5StatsLineErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a frame + or token is copied or repeated by a + station, the E bit is zero in the frame + or token and one of the following + conditions exists: 1) there is a + non-data bit (J or K bit) between the SD + and the ED of the frame or token, or + 2) there is an FCS error in the frame." + ::= { dot5StatsEntry 2 } + +dot5StatsBurstErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + detects the absence of transitions for five + half-bit timers (burst-five error)." + ::= { dot5StatsEntry 3 } + +dot5StatsACErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + receives an AMP or SMP frame in which A is + equal to C is equal to 0, and then receives + another SMP frame with A is equal to C is + equal to 0 without first receiving an AMP + frame. It denotes a station that cannot set + the AC bits properly." + ::= { dot5StatsEntry 4 } + +dot5StatsAbortTransErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + transmits an abort delimiter while + transmitting." + ::= { dot5StatsEntry 5 } + +dot5StatsInternalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + recognizes an internal error." + ::= { dot5StatsEntry 6 } + +dot5StatsLostFrameErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + is transmitting and its TRR timer expires. + This condition denotes a condition where a + transmitting station in strip mode does not + receive the trailer of the frame before the + TRR timer goes off." + ::= { dot5StatsEntry 7 } + +dot5StatsReceiveCongestions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + recognizes a frame addressed to its + specific address, but has no available + buffer space indicating that the station + is congested." + ::= { dot5StatsEntry 8 } + +dot5StatsFrameCopiedErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + recognizes a frame addressed to its + specific address and detects that the FS + field A bits are set to 1 indicating a + possible line hit or duplicate address." + ::= { dot5StatsEntry 9 } + +dot5StatsTokenErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter is incremented when a station + acting as the active monitor recognizes an + error condition that needs a token + transmitted." + ::= { dot5StatsEntry 10 } + +dot5StatsSoftErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Soft Errors the interface + has detected. It directly corresponds to + the number of Report Error MAC frames + that this interface has transmitted. + Soft Errors are those which are + recoverable by the MAC layer protocols." + ::= { dot5StatsEntry 11 } + +dot5StatsHardErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this interface has + detected an immediately recoverable + fatal error. It denotes the number of + times this interface is either + transmitting or receiving beacon MAC + frames." + ::= { dot5StatsEntry 12 } + +dot5StatsSignalLoss OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this interface has + detected the loss of signal condition from + the ring." + ::= { dot5StatsEntry 13 } + +dot5StatsTransmitBeacons OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times this interface has + transmitted a beacon frame." + ::= { dot5StatsEntry 14 } + +dot5StatsRecoverys OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Claim Token MAC frames + received or transmitted after the interface + has received a Ring Purge MAC frame. This + counter signifies the number of times the + ring has been purged and is being recovered + back into a normal operating state." + ::= { dot5StatsEntry 15 } + +dot5StatsLobeWires OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has + detected an open or short circuit in the + lobe data path. The adapter will be closed + and dot5RingState will signify this + condition." + ::= { dot5StatsEntry 16 } + +dot5StatsRemoves OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has + received a Remove Ring Station MAC frame + request. When this frame is received + the interface will enter the close state + and dot5RingState will signify this + condition." + ::= { dot5StatsEntry 17 } + +dot5StatsSingles OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has + sensed that it is the only station on the + ring. This will happen if the interface + is the first one up on a ring, or if + there is a hardware problem." + ::= { dot5StatsEntry 18 } + +dot5StatsFreqErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the interface has + detected that the frequency of the + incoming signal differs from the expected + frequency by more than that specified by + the IEEE 802.5 standard." + ::= { dot5StatsEntry 19 } + +-- The Timer Table + +-- This group contains the values of timers for 802.5 +-- interfaces. This table is obsolete, but its definition +-- is retained here for backwards compatibility. + +dot5TimerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot5TimerEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "This table contains Token Ring interface + timer values, one entry per 802.5 + interface." + ::= { dot5 5 } + +dot5TimerEntry OBJECT-TYPE + SYNTAX Dot5TimerEntry + MAX-ACCESS not-accessible + STATUS obsolete + DESCRIPTION + "A list of Token Ring timer values for an + 802.5 interface." + INDEX { dot5TimerIfIndex } + ::= { dot5TimerTable 1 } + +Dot5TimerEntry ::= SEQUENCE { + dot5TimerIfIndex Integer32, + dot5TimerReturnRepeat Integer32, + dot5TimerHolding Integer32, + dot5TimerQueuePDU Integer32, + dot5TimerValidTransmit Integer32, + dot5TimerNoToken Integer32, + dot5TimerActiveMon Integer32, + dot5TimerStandbyMon Integer32, + dot5TimerErrorReport Integer32, + dot5TimerBeaconTransmit Integer32, + dot5TimerBeaconReceive Integer32 +} + +dot5TimerIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The value of this object identifies the + 802.5 interface for which this entry + contains timer values. The value of + this object for a particular interface + has the same value as MIB-II's ifIndex + object for the same interface." + ::= { dot5TimerEntry 1 } + +dot5TimerReturnRepeat OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used to ensure the + interface will return to Repeat State, in + units of 100 micro-seconds. The value + should be greater than the maximum ring + latency." + ::= { dot5TimerEntry 2 } + +dot5TimerHolding OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "Maximum period of time a station is + permitted to transmit frames after capturing + a token, in units of 100 micro-seconds." + ::= { dot5TimerEntry 3 } + +dot5TimerQueuePDU OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value for enqueuing of an SMP + PDU after reception of an AMP or SMP + frame in which the A and C bits were + equal to 0, in units of 100 + micro-seconds." + ::= { dot5TimerEntry 4 } + +dot5TimerValidTransmit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used by the active + monitor to detect the absence of valid + transmissions, in units of 100 + micro-seconds." + ::= { dot5TimerEntry 5 } + +dot5TimerNoToken OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used to recover from + various-related error situations. + If N is the maximum number of stations on + the ring, the value of this timer is + normally: + dot5TimerReturnRepeat + N*dot5TimerHolding." + ::= { dot5TimerEntry 6 } + +dot5TimerActiveMon OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used by the active + monitor to stimulate the enqueuing of an + AMP PDU for transmission, in units of + 100 micro-seconds." + ::= { dot5TimerEntry 7 } + +dot5TimerStandbyMon OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value used by the stand-by + monitors to ensure that there is an active + monitor on the ring and to detect a + continuous stream of tokens, in units of + 100 micro-seconds." + ::= { dot5TimerEntry 8 } + +dot5TimerErrorReport OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value which determines how + often a station shall send a Report Error + MAC frame to report its error counters, + in units of 100 micro-seconds." + ::= { dot5TimerEntry 9 } + +dot5TimerBeaconTransmit OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value which determines how + long a station shall remain in the state + of transmitting Beacon frames before + entering the Bypass state, in units of + 100 micro-seconds." + ::= { dot5TimerEntry 10 } + +dot5TimerBeaconReceive OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The time-out value which determines how + long a station shall receive Beacon + frames from its downstream neighbor + before entering the Bypass state, in + units of 100 micro-seconds." + ::= { dot5TimerEntry 11 } + + +-- 802.5 Interface Tests + +dot5Tests OBJECT IDENTIFIER ::= { dot5 3 } + +-- RFC 1573 defines the ifTestTable, through which a +-- network manager can instruct an agent to test an interface +-- for various faults. A test to be performed is identified +-- as an OBJECT IDENTIFIER. + +-- The Insert Function test + +dot5TestInsertFunc OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Invoking this test causes the station to test the insert + ring logic of the hardware if the station's lobe media + cable is connected to a wiring concentrator. Note that + this command inserts the station into the network, and + thus, could cause problems if the station is connected + to a operational network." + ::= { dot5Tests 1 } + +-- The Full-Duplex Loop Back test + +dot5TestFullDuplexLoopBack OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Invoking this test on a 802.5 interface causes the + interface to check the path from memory through the + chip set's internal logic and back to memory, thus + checking the proper functioning of the system's + interface to the chip set." + ::= { dot5Tests 2 } + + +-- 802.5 Hardware Chip Sets + +-- RFC 1229 specified an object, ifExtnsChipSet, with the +-- syntax of OBJECT IDENTIFIER, to identify the hardware +-- chip set in use by an interface. RFC 1573 obsoletes +-- the use of ifExtnsChipSet. However, the following +-- definitions are retained for backwards compatibility. + +dot5ChipSets OBJECT IDENTIFIER ::= { dot5 4 } + +dot5ChipSetIBM16 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "IBM's 16/4 Mbs chip set." + ::= { dot5ChipSets 1 } + +dot5ChipSetTItms380 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Texas Instruments' TMS 380 4Mbs chip-set" + ::= { dot5ChipSets 2 } + +dot5ChipSetTItms380c16 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Texas Instruments' TMS 380C16 16/4 Mbs chip-set" + ::= { dot5ChipSets 3 } + +-- conformance information + +dot5Conformance OBJECT IDENTIFIER ::= { dot5 6 } + +dot5Groups OBJECT IDENTIFIER ::= { dot5Conformance 1 } +dot5Compliances OBJECT IDENTIFIER ::= { dot5Conformance 2 } + + +-- compliance statements + +dot5Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which implement the IEEE 802.5 MIB." + + MODULE -- this module + MANDATORY-GROUPS { dot5StateGroup, dot5StatsGroup } + + OBJECT dot5ActMonParticipate + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot5Functional + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dot5Compliances 1 } + + +-- units of conformance + +dot5StateGroup OBJECT-GROUP + OBJECTS { dot5Commands, dot5RingStatus, dot5RingState, + dot5RingOpenStatus, dot5RingSpeed, dot5UpStream, + dot5ActMonParticipate, dot5Functional, + dot5LastBeaconSent + } + STATUS current + DESCRIPTION + "A collection of objects providing state information + and parameters for IEEE 802.5 interfaces." + ::= { dot5Groups 1 } + +dot5StatsGroup OBJECT-GROUP + OBJECTS { dot5StatsLineErrors, dot5StatsBurstErrors, + dot5StatsACErrors, dot5StatsAbortTransErrors, + dot5StatsInternalErrors, dot5StatsLostFrameErrors, + dot5StatsReceiveCongestions, + dot5StatsFrameCopiedErrors, dot5StatsTokenErrors, + dot5StatsSoftErrors, dot5StatsHardErrors, + dot5StatsSignalLoss, dot5StatsTransmitBeacons, + dot5StatsRecoverys, dot5StatsLobeWires, + dot5StatsRemoves, dot5StatsSingles, + dot5StatsFreqErrors + } + STATUS current + DESCRIPTION + "A collection of objects providing statistics for + IEEE 802.5 interfaces." + ::= { dot5Groups 2 } + +END diff --git a/mibs/ietf/TOKENRING-STATION-SR-MIB b/mibs/ietf/TOKENRING-STATION-SR-MIB new file mode 100644 index 0000000..f0980f0 --- /dev/null +++ b/mibs/ietf/TOKENRING-STATION-SR-MIB @@ -0,0 +1,177 @@ +TOKENRING-STATION-SR-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, RowStatus, MacAddress + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + mib-2, ifIndex FROM RFC1213-MIB; + +dot5SrMIB MODULE-IDENTITY + LAST-UPDATED "9412161000Z" + ORGANIZATION "IETF Interfaces MIB Working Group" + CONTACT-INFO + " Keith McCloghrie + Postal: Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "The MIB module for managing source routes in + end-stations on IEEE 802.5 Token Ring networks." + ::= { mib-2 42 } +dot5SrMIBObjects OBJECT IDENTIFIER ::= { dot5SrMIB 1 } + +SourceRoute ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1x:" + STATUS current + DESCRIPTION + "Represents a Source Route, containing an + embedded sequence of bridge and ring ID's, + as used by 802.5 Source Routing." + REFERENCE "Annex C of ISO/IEC 10038: 1993, + [ANSI/IEEE Std 802.1D, 1993]" + SYNTAX OCTET STRING (SIZE(0..30)) + + +-- The 802.5 Station Source Route Table +-- + +dot5SrRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF Dot5SrRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of source-routing routes. + This represents the 802.5 RIF database." + ::= { dot5SrMIBObjects 1 } + +dot5SrRouteEntry OBJECT-TYPE + SYNTAX Dot5SrRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a specific route. + + An entry is created whenever a 'Single Path + Explorer' or an 'All Paths Explorer' discovers + a route to a neighbor not currently in the table, + or whenever an 'All Paths Explorer' discovers a + better (e.g., shorter) route than the route currently + stored in the table. This is done on behalf of + any network layer client. + + The ifIndex value in the INDEX clause refers to + the value of MIB-II's ifIndex object for the + interface on which the route is in effect." + INDEX { ifIndex, dot5SrRouteDestination } + ::= { dot5SrRouteTable 1 } + +Dot5SrRouteEntry ::= SEQUENCE { + dot5SrRouteDestination MacAddress, + dot5SrRouteControl OCTET STRING, + dot5SrRouteDescr SourceRoute, + dot5SrRouteStatus RowStatus +} + +dot5SrRouteDestination OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The destination of this route." + ::= { dot5SrRouteEntry 2 } + +dot5SrRouteControl OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(2)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of Routing Control field for this + route." + REFERENCE "Annex C of ISO/IEC 10038: 1993, + [ANSI/IEEE Std 802.1D, 1993]" + ::= { dot5SrRouteEntry 3 } + +dot5SrRouteDescr OBJECT-TYPE + SYNTAX SourceRoute + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The embedded sequence of bridge and ring ID's + for this route. For destinations on the + local ring, the value of this object is + the zero-length string." + REFERENCE "Annex C of ISO/IEC 10038: 1993, + [ANSI/IEEE Std 802.1D, 1993]" + ::= { dot5SrRouteEntry 4 } + +dot5SrRouteStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row. Values of the instances + of dot5SrRouteControl and dot5SrRouteDescr can be + modified while the row's status is 'active." + ::= { dot5SrRouteEntry 5 } + +-- conformance information + +dot5SrConformance OBJECT IDENTIFIER ::= { dot5SrMIB 2 } + +dot5SrGroups OBJECT IDENTIFIER ::= { dot5SrConformance 1 } +dot5SrCompliances OBJECT IDENTIFIER ::= { dot5SrConformance 2 } + + +-- compliance statements + +dot5SrCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities + which implement the IEEE 802.5 Station Source Route + MIB." + + MODULE -- this module + MANDATORY-GROUPS { dot5SrRouteGroup } + + OBJECT dot5SrRouteStatus + SYNTAX INTEGER { active(1) } -- subset of values + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only the 'active' + value need be supported." + + OBJECT dot5SrRouteControl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT dot5SrRouteDescr + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { dot5SrCompliances 1 } + + +-- units of conformance + +dot5SrRouteGroup OBJECT-GROUP + OBJECTS { dot5SrRouteControl, + dot5SrRouteDescr, + dot5SrRouteStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing for the management of + source routes in stations on IEEE 802.5 source-routing + networks." + ::= { dot5SrGroups 1 } + +END diff --git a/mibs/ietf/TRANSPORT-ADDRESS-MIB b/mibs/ietf/TRANSPORT-ADDRESS-MIB new file mode 100644 index 0000000..2c7e54e --- /dev/null +++ b/mibs/ietf/TRANSPORT-ADDRESS-MIB @@ -0,0 +1,444 @@ +TRANSPORT-ADDRESS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + +transportAddressMIB MODULE-IDENTITY + LAST-UPDATED "200211010000Z" + ORGANIZATION + "IETF Operations and Management Area" + CONTACT-INFO + "Juergen Schoenwaelder (Editor) + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig, Germany + + + + Phone: +49 531 391-3289 + EMail: schoenw@ibr.cs.tu-bs.de + + Send comments to ." + DESCRIPTION + "This MIB module provides commonly used transport + address definitions. + + Copyright (C) The Internet Society (2002). This version of + this MIB module is part of RFC 3419; see the RFC itself for + full legal notices." + + -- Revision log + + REVISION "200211010000Z" + DESCRIPTION + "Initial version, published as RFC 3419." + ::= { mib-2 100 } + + +transportDomains OBJECT IDENTIFIER ::= { transportAddressMIB 1 } + +transportDomainUdpIpv4 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UDP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4 for + global IPv4 addresses." + ::= { transportDomains 1 } + +transportDomainUdpIpv6 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UDP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6 for + global IPv6 addresses." + ::= { transportDomains 2 } + +transportDomainUdpIpv4z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UDP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4z for + scoped IPv4 addresses with a zone index." + ::= { transportDomains 3 } + +transportDomainUdpIpv6z OBJECT-IDENTITY + STATUS current + + + + DESCRIPTION + "The UDP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6z for + scoped IPv6 addresses with a zone index." + ::= { transportDomains 4 } + +transportDomainTcpIpv4 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4 for + global IPv4 addresses." + ::= { transportDomains 5 } + +transportDomainTcpIpv6 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6 for + global IPv6 addresses." + ::= { transportDomains 6 } + +transportDomainTcpIpv4z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4z for + scoped IPv4 addresses with a zone index." + ::= { transportDomains 7 } + +transportDomainTcpIpv6z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6z for + scoped IPv6 addresses with a zone index." + ::= { transportDomains 8 } + +transportDomainSctpIpv4 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4 for + global IPv4 addresses. This transport domain usually + represents the primary address on multihomed SCTP + endpoints." + ::= { transportDomains 9 } + + + + +transportDomainSctpIpv6 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6 for + global IPv6 addresses. This transport domain usually + represents the primary address on multihomed SCTP + endpoints." + ::= { transportDomains 10 } + +transportDomainSctpIpv4z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP over IPv4 transport domain. The corresponding + transport address is of type TransportAddressIPv4z for + scoped IPv4 addresses with a zone index. This transport + domain usually represents the primary address on + multihomed SCTP endpoints." + ::= { transportDomains 11 } + +transportDomainSctpIpv6z OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP over IPv6 transport domain. The corresponding + transport address is of type TransportAddressIPv6z for + scoped IPv6 addresses with a zone index. This transport + domain usually represents the primary address on + multihomed SCTP endpoints." + ::= { transportDomains 12 } + +transportDomainLocal OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Posix Local IPC transport domain. The corresponding + transport address is of type TransportAddressLocal. + + The Posix Local IPC transport domain incorporates the + well-known UNIX domain sockets." + ::= { transportDomains 13 } + +transportDomainUdpDns OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UDP transport domain using fully qualified domain + names. The corresponding transport address is of type + TransportAddressDns." + ::= { transportDomains 14 } + + + + +transportDomainTcpDns OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The TCP transport domain using fully qualified domain + names. The corresponding transport address is of type + TransportAddressDns." + ::= { transportDomains 15 } + +transportDomainSctpDns OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The SCTP transport domain using fully qualified domain + names. The corresponding transport address is of type + TransportAddressDns." + ::= { transportDomains 16 } + +TransportDomain ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a transport domain. + + Some possible values, such as transportDomainUdpIpv4, are + defined in this module. Other possible values can be + defined in other MIB modules." + SYNTAX OBJECT IDENTIFIER + +-- +-- The enumerated values of the textual convention below should +-- be identical to the last sub-identifier of the OID registered +-- for the same domain. +-- + +TransportAddressType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a transport domain. This is the + enumerated version of the transport domain registrations + in this MIB module. The enumerated values have the + following meaning: + + unknown(0) unknown transport address type + udpIpv4(1) transportDomainUdpIpv4 + udpIpv6(2) transportDomainUdpIpv6 + udpIpv4z(3) transportDomainUdpIpv4z + udpIpv6z(4) transportDomainUdpIpv6z + tcpIpv4(5) transportDomainTcpIpv4 + tcpIpv6(6) transportDomainTcpIpv6 + tcpIpv4z(7) transportDomainTcpIpv4z + + + + tcpIpv6z(8) transportDomainTcpIpv6z + sctpIpv4(9) transportDomainSctpIpv4 + sctpIpv6(10) transportDomainSctpIpv6 + sctpIpv4z(11) transportDomainSctpIpv4z + sctpIpv6z(12) transportDomainSctpIpv6z + local(13) transportDomainLocal + udpDns(14) transportDomainUdpDns + tcpDns(15) transportDomainTcpDns + sctpDns(16) transportDomainSctpDns + + This textual convention can be used to represent transport + domains in situations where a syntax of TransportDomain is + unwieldy (for example, when used as an index). + + The usage of this textual convention implies that additional + transport domains can only be supported by updating this MIB + module. This extensibility restriction does not apply for the + TransportDomain textual convention which allows MIB authors + to define additional transport domains independently in + other MIB modules." + SYNTAX INTEGER { + unknown(0), + udpIpv4(1), + udpIpv6(2), + udpIpv4z(3), + udpIpv6z(4), + tcpIpv4(5), + tcpIpv6(6), + tcpIpv4z(7), + tcpIpv6z(8), + sctpIpv4(9), + sctpIpv6(10), + sctpIpv4z(11), + sctpIpv6z(12), + local(13), + udpDns(14), + tcpDns(15), + sctpDns(16) + } + +TransportAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a generic transport address. + + A TransportAddress value is always interpreted within the + context of a TransportAddressType or TransportDomain value. + Every usage of the TransportAddress textual convention MUST + + + + specify the TransportAddressType or TransportDomain object + which provides the context. Furthermore, MIB authors SHOULD + define a separate TransportAddressType or TransportDomain + object for each TransportAddress object. It is suggested that + the TransportAddressType or TransportDomain is logically + registered before the object(s) which use the + TransportAddress textual convention if they appear in the + same logical row. + + The value of a TransportAddress object must always be + consistent with the value of the associated + TransportAddressType or TransportDomain object. Attempts + to set a TransportAddress object to a value which is + inconsistent with the associated TransportAddressType or + TransportDomain must fail with an inconsistentValue error. + + When this textual convention is used as a syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the OBJECT-TYPE declaration MUST include a 'SIZE' clause + to limit the number of potential instance sub-identifiers." + SYNTAX OCTET STRING (SIZE (0..255)) + +TransportAddressIPv4 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d:2d" + STATUS current + DESCRIPTION + "Represents a transport address consisting of an IPv4 + address and a port number (as used for example by UDP, + TCP and SCTP): + + octets contents encoding + 1-4 IPv4 address network-byte order + 5-6 port number network-byte order + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair." + SYNTAX OCTET STRING (SIZE (6)) + +TransportAddressIPv6 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "0a[2x:2x:2x:2x:2x:2x:2x:2x]0a:2d" + STATUS current + DESCRIPTION + "Represents a transport address consisting of an IPv6 + address and a port number (as used for example by UDP, + + + + TCP and SCTP): + + octets contents encoding + 1-16 IPv6 address network-byte order + 17-18 port number network-byte order + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair." + SYNTAX OCTET STRING (SIZE (18)) + +TransportAddressIPv4z ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d%4d:2d" + STATUS current + DESCRIPTION + "Represents a transport address consisting of an IPv4 + address, a zone index and a port number (as used for + example by UDP, TCP and SCTP): + + octets contents encoding + 1-4 IPv4 address network-byte order + 5-8 zone index network-byte order + 9-10 port number network-byte order + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair." + SYNTAX OCTET STRING (SIZE (10)) + +TransportAddressIPv6z ::= TEXTUAL-CONVENTION + DISPLAY-HINT "0a[2x:2x:2x:2x:2x:2x:2x:2x%4d]0a:2d" + STATUS current + DESCRIPTION + "Represents a transport address consisting of an IPv6 + address, a zone index and a port number (as used for + example by UDP, TCP and SCTP): + + octets contents encoding + 1-16 IPv6 address network-byte order + 17-20 zone index network-byte order + 21-22 port number network-byte order + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + + + + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair." + SYNTAX OCTET STRING (SIZE (22)) + +TransportAddressLocal ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1a" + STATUS current + DESCRIPTION + "Represents a POSIX Local IPC transport address: + + octets contents encoding + all POSIX Local IPC address string + + The Posix Local IPC transport domain subsumes UNIX domain + sockets. + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair. + + When this textual convention is used as a syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the OBJECT-TYPE declaration MUST include a 'SIZE' clause + to limit the number of potential instance sub-identifiers." + REFERENCE + "Protocol Independent Interfaces (IEEE POSIX 1003.1g)" + SYNTAX OCTET STRING (SIZE (1..255)) + +TransportAddressDns ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1a" + STATUS current + DESCRIPTION + "Represents a DNS domain name followed by a colon ':' + (ASCII character 0x3A) and a port number in ASCII. + The name SHOULD be fully qualified whenever possible. + + Values of this textual convention are not directly useable as + transport-layer addressing information, and require runtime + resolution. As such, applications that write them must be + prepared for handling errors if such values are not + supported, or cannot be resolved (if resolution occurs at the + time of the management operation). + + The DESCRIPTION clause of TransportAddress objects that may + + + + have TransportAddressDns values must fully describe how (and + when) such names are to be resolved to IP addresses and vice + versa. + + This textual convention SHOULD NOT be used directly in object + definitions since it restricts addresses to a specific format. + However, if it is used, it MAY be used either on its own or + in conjunction with TransportAddressType or TransportDomain + as a pair. + + When this textual convention is used as a syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the OBJECT-TYPE declaration MUST include a 'SIZE' clause + to limit the number of potential instance sub-identifiers." + SYNTAX OCTET STRING (SIZE (1..255)) + +END diff --git a/mibs/ietf/TRIP-MIB b/mibs/ietf/TRIP-MIB new file mode 100644 index 0000000..a5369db --- /dev/null +++ b/mibs/ietf/TRIP-MIB @@ -0,0 +1,2117 @@ +TRIP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + NOTIFICATION-TYPE, + Unsigned32, + Integer32, + Counter32, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + DateAndTime, + TimeInterval, + TruthValue, + TimeStamp, + StorageType, + RowStatus + FROM SNMPv2-TC -- [RFC2579] + + OBJECT-GROUP, + MODULE-COMPLIANCE, + NOTIFICATION-GROUP + FROM SNMPv2-CONF -- [RFC2580] + + InetAddressType, + InetAddress, + InetPortNumber + FROM INET-ADDRESS-MIB -- [RFC3291] + + applIndex, + applRFC2788Group + FROM NETWORK-SERVICES-MIB -- [RFC2788] + + TripItad, + TripId, + TripAppProtocol, + TripAddressFamily, + TripCommunityId, + TripProtocolVersion, + TripSendReceiveMode + FROM TRIP-TC-MIB; -- [RFC3872] + + tripMIB MODULE-IDENTITY + LAST-UPDATED "200409020000Z" -- Sep 02, 2004 + ORGANIZATION "IETF IPTel Working Group. + + + Mailing list: iptel@lists.bell-labs.com" + + CONTACT-INFO + "Co-editor David Zinman + postal: 265 Ridley Blvd. + Toronto ON, M5M 4N8 + Canada + email: dzinman@rogers.com + phone: +1 416 433 4298 + + Co-editor: David Walker + Sedna Wireless Inc. + postal: 495 March Road, Suite 500 + Ottawa, ON K2K 3G1 + Canada + email: david.walker@sedna-wireless.com + phone: +1 613 878 8142 + + Co-editor Jianping Jiang + Syndesis Limited + postal: 30 Fulton Way + Richmond Hill, ON L4B 1J5 + Canada + + email: jjiang@syndesis.com + phone: +1 905 886-7818 x2515 + " + DESCRIPTION + "The MIB module describing Telephony Routing over IP + (TRIP). TRIP is a policy driven inter-administrative + domain protocol for advertising the reachability of + telephony destinations between location servers (LS), and + for advertising attributes of the routes to those + destinations. + + Copyright (C) The Internet Society (2004). This version of + this MIB module is part of RFC 3872, see the RFC itself + for full legal notices." + REVISION "200409020000Z" -- Sep 02, 2004 + DESCRIPTION + "The initial version, Published as RFC 3872." + ::= { mib-2 116 } + + tripMIBNotifications OBJECT IDENTIFIER ::= { tripMIB 0 } + tripMIBObjects OBJECT IDENTIFIER ::= { tripMIB 1 } + tripMIBConformance OBJECT IDENTIFIER ::= { tripMIB 2 } + tripMIBNotifObjects OBJECT IDENTIFIER ::= { tripMIB 3 } + + + + tripMIBCompliances OBJECT IDENTIFIER ::= + { tripMIBConformance 1 } + tripMIBGroups OBJECT IDENTIFIER ::= + { tripMIBConformance 2 } + + -- + -- tripCfgTable + -- + tripCfgTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the common configuration objects + applicable to all TRIP applications referenced by the + applIndex. Each row represents those objects for a + particular TRIP LS present in this system. The + instances of TRIP LS's are uniquely identified by the + applIndex. The objects in this table SHOULD be + nonVolatile and survive a reboot." + ::= { tripMIBObjects 1 } + + tripCfgEntry OBJECT-TYPE + SYNTAX TripCfgEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A row of common configuration." + INDEX { applIndex } + ::= { tripCfgTable 1 } + + TripCfgEntry ::= + SEQUENCE { + tripCfgProtocolVersion TripProtocolVersion, + tripCfgItad TripItad, + tripCfgIdentifier TripId, + tripCfgAdminStatus INTEGER, + tripCfgOperStatus INTEGER, + tripCfgAddrIAddrType InetAddressType, + tripCfgAddr InetAddress, + tripCfgPort InetPortNumber, + tripCfgMinItadOriginationInterval Unsigned32, + tripCfgMinRouteAdvertisementInterval Unsigned32, + tripCfgMaxPurgeTime Unsigned32, + tripCfgDisableTime Unsigned32, + tripCfgSendReceiveMode TripSendReceiveMode, + tripCfgStorage StorageType + } + + + + tripCfgProtocolVersion OBJECT-TYPE + SYNTAX TripProtocolVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object will reflect the version of TRIP + supported by this system. It follows the same + format as TRIP version information contained + in the TRIP messages generated by this TRIP entity." + REFERENCE + "RFC 3219, section 4.2." + ::= { tripCfgEntry 1 } + + tripCfgItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The Internet Telephony Administrative domain (ITAD) + of this LS." + ::= { tripCfgEntry 2 } + + tripCfgIdentifier OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The object that identifies this TRIP Client." + ::= { tripCfgEntry 3 } + + tripCfgAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired TRIP state. + + up(1) : Set the application to normal operation. + + down(2): Set the application to a state where it will + not process TRIP messages. + + Setting this object should be reflected in + tripCfgOperStatus. If an unknown error occurs + tripCfgOperStatus will return unknown(0)." + + + + ::= { tripCfgEntry 4 } + + tripCfgOperStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + up(1), + down(2), + faulty(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the TRIP protocol. + + unknown(0): The operating status of the application is + unknown. + + up(1): The application is operating normally, and + is ready to process (receive and issue) TRIP + requests and responses. + + down(2): The application is currently not processing + TRIP messages. This occurs if the TRIP + application is in an initialization state or + if tripCfgAdminStatus is set to down(2). + + faulty(3): The application is not operating normally due + to a fault in the system. + + If tripCfgAdminStatus is down(2) then tripOperStatus SHOULD + be down(2). If tripAdminStatus is changed to up(1) then + tripOperStatus SHOULD change to up(1) if there is no + fault that prevents the TRIP protocol from moving to the + up(1) state." + ::= { tripCfgEntry 5 } + + tripCfgAddrIAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet Address of the tripAddr." + REFERENCE + "RFC 3291, section 3." + ::= { tripCfgEntry 6 } + + tripCfgAddr OBJECT-TYPE + SYNTAX InetAddress + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The network address of the local LS that the peer + connects to. The type of address depends on the object + tripCfgAddrIAddrType. The type of this address is + determined by the value of the + tripCfgAddrIAddrType object." + REFERENCE + "RFC 3291, section 3." + ::= { tripCfgEntry 7 } + + tripCfgPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The local tcp/udp port on the local LS that the peer + connects to." + ::= { tripCfgEntry 8 } + + tripCfgMinItadOriginationInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum amount of time that MUST elapse between + advertisement of the update message that reports changes + within the LS's own ITAD." + DEFVAL { 30 } + ::= { tripCfgEntry 9 } + + tripCfgMinRouteAdvertisementInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Specifies minimal interval between successive + advertisements to a particular destination from an LS." + DEFVAL { 30 } + ::= { tripCfgEntry 10 } + + tripCfgMaxPurgeTime OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-write + + + + STATUS current + DESCRIPTION + "Indicates the interval that the LS MUST maintain routes + marked as withdrawn in its database." + DEFVAL { 10 } + ::= { tripCfgEntry 11 } + + tripCfgDisableTime OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates the interval that the TRIP module of the + LS MUST be disabled while routes originated by this + LS with high sequence numbers can be removed." + DEFVAL { 180 } + ::= { tripCfgEntry 12 } + + tripCfgSendReceiveMode OBJECT-TYPE + SYNTAX TripSendReceiveMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational mode of the TRIP entity running on this + system." + ::= { tripCfgEntry 13 } + + tripCfgStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual rows + having the value 'permanent' need not allow write-access + to any columnar objects in the row." + DEFVAL { nonVolatile } + ::= { tripCfgEntry 14 } + + -- + -- TripRouteTypeTable + -- + + tripRouteTypeTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripRouteTypeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The TRIP peer Route Type table contains one entry per + supported protocol - address family pair. The objects in + this table are volatile and are refreshed after a reboot." + ::= { tripMIBObjects 2 } + + tripRouteTypeEntry OBJECT-TYPE + SYNTAX TripRouteTypeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information about the route type + that a particular TRIP entity supports. Each entry + represents information about either the local or a remote + LS peer. The object tripRouteTypePeer is used to + distinguish this. In the case of a local LS, the + address/port information will reflect the values + configured in tripCfgTable. In the case of a remote + peer, the address/port information will reflect the + values of an entry in the tripPeerTable. + + Implementation need to be aware that if the size of + tripRouteTypeAddr exceeds 111 sub-IDs, then OIDs of column + instances in this table will have more than 128 sub-IDs + and cannot be accessed using SNMPv1, SNMPv2c, or snmpv3." + INDEX { applIndex, + tripRouteTypeAddrInetType, + tripRouteTypeAddr, + tripRouteTypePort, + tripRouteTypeProtocolId, + tripRouteTypeAddrFamilyId } + ::= { tripRouteTypeTable 1 } + + TripRouteTypeEntry ::= SEQUENCE { + tripRouteTypeAddrInetType InetAddressType, + tripRouteTypeAddr InetAddress, + tripRouteTypePort InetPortNumber, + tripRouteTypeProtocolId TripAppProtocol, + tripRouteTypeAddrFamilyId TripAddressFamily, + tripRouteTypePeer INTEGER + } + + tripRouteTypeAddrInetType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The type of Inet Address of the tripRouteTypeAddr." + REFERENCE + + + + "RFC 3291, section 3." + ::= { tripRouteTypeEntry 1 } + + tripRouteTypeAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The network address of this entry's TRIP peer LS. The + type of this address is determined by the value of the + tripRouteTypeAddrInetType object." + REFERENCE + "RFC 3291, section 3." + ::= { tripRouteTypeEntry 2 } + + tripRouteTypePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The port for the TCP connection between this and + an associated TRIP peer." + ::= { tripRouteTypeEntry 3 } + + tripRouteTypeProtocolId OBJECT-TYPE + SYNTAX TripAppProtocol + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The object identifier of a protocol that the associated + peer is using." + ::= { tripRouteTypeEntry 4 } + + tripRouteTypeAddrFamilyId OBJECT-TYPE + SYNTAX TripAddressFamily + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The object identifier of an address family that the + associated peer belongs to." + ::= { tripRouteTypeEntry 5 } + + tripRouteTypePeer OBJECT-TYPE + SYNTAX INTEGER { local(1), remote(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies whether this entry is + + + + associated with a 'local' or 'remote' LS peer." + ::= { tripRouteTypeEntry 6 } + + -- + -- tripSupportedCommunityTable + -- + + tripSupportedCommunityTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripSupportedCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of TRIP communities that this LS supports. A + TRIP community is a group of destinations that share + common properties. + + The TRIP Supported Communities entry is used to group + destinations so that the routing decision can be based + on the identity of the group." + REFERENCE + "RFC 3219, section 5.9" + ::= { tripMIBObjects 3 } + + tripSupportedCommunityEntry OBJECT-TYPE + SYNTAX TripSupportedCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information about a community. A TRIP + community is a group of destinations that share some + common property. This attribute is used so that routing + decisions can be based on the identity of the group." + INDEX { applIndex, tripSupportedCommunityId } + ::= { tripSupportedCommunityTable 1 } + + TripSupportedCommunityEntry ::= SEQUENCE { + tripSupportedCommunityId TripCommunityId, + tripSupportedCommunityItad TripItad, + tripSupportedCommunityStorage StorageType, + tripSupportedCommunityRowStatus RowStatus + } + + tripSupportedCommunityId OBJECT-TYPE + SYNTAX TripCommunityId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier of the supported Community." + + + + ::= { tripSupportedCommunityEntry 1 } + + tripSupportedCommunityItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The ITAD of the community." + ::= { tripSupportedCommunityEntry 2 } + + tripSupportedCommunityStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual + rows having the value 'permanent' need not allow write- + access to any columnar objects in the row. It is not a + requirement that this storage be non volatile." + DEFVAL { nonVolatile } + ::= { tripSupportedCommunityEntry 3 } + + tripSupportedCommunityRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status of the entry. This object is REQUIRED + to create or delete rows by a manager. A value for + tripSupportedCommunityItad MUST be set for row creation + to be successful. If the instance already exists for a + particular applIndex, the row create operation will + fail. + + The value of this object has no effect on whether + other objects in this conceptual row can be modified." + ::= { tripSupportedCommunityEntry 4 } + + -- + -- TripPeerTable + -- + tripPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The TRIP peer table. This table contains one entry per + TRIP peer, and information about the connection with + + + + the peer." + ::= { tripMIBObjects 4 } + + tripPeerEntry OBJECT-TYPE + SYNTAX TripPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entry containing information about the connection with + a TRIP peer. + + Implementation need to be aware that if the size of + tripPeerRemoteAddr exceeds 113 sub-IDs, then OIDs of + column instances in this table will have more than 128 + sub-IDs and cannot be accessed using SNMPv1, SNMPv2c, or + snmpv3." + INDEX { applIndex, + tripPeerRemoteAddrInetType, + tripPeerRemoteAddr, + tripPeerRemotePort } + ::= {tripPeerTable 1} + + TripPeerEntry ::= SEQUENCE { + tripPeerRemoteAddrInetType InetAddressType, + tripPeerRemoteAddr InetAddress, + tripPeerRemotePort InetPortNumber, + tripPeerIdentifier TripId, + tripPeerState INTEGER, + tripPeerAdminStatus INTEGER, + tripPeerNegotiatedVersion TripProtocolVersion, + tripPeerSendReceiveMode TripSendReceiveMode, + tripPeerRemoteItad TripItad, + tripPeerConnectRetryInterval Unsigned32, + tripPeerMaxRetryInterval Unsigned32, + tripPeerHoldTime Unsigned32, + tripPeerKeepAlive Unsigned32, + tripPeerHoldTimeConfigured Unsigned32, + tripPeerKeepAliveConfigured Unsigned32, + tripPeerMaxPurgeTime Unsigned32, + tripPeerDisableTime Unsigned32, + tripPeerLearned TruthValue, + tripPeerStorage StorageType, + tripPeerRowStatus RowStatus + } + + tripPeerRemoteAddrInetType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "The type of Inet Address of the tripPeerRemoteAddr." + REFERENCE + "RFC 3291, section 3." + ::= { tripPeerEntry 1 } + + tripPeerRemoteAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IP address of this entry's TRIP peer LS. The type of + this address is determined by the value of the + tripPeerRemoteAddrInetType object." + REFERENCE + "RFC 3291, section 3." + ::= { tripPeerEntry 2 } + + tripPeerRemotePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port for the TCP connection between the + TRIP peers." + ::= { tripPeerEntry 3 } + + tripPeerIdentifier OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "TRIP identifier of the peer." + ::= { tripPeerEntry 4 } + + tripPeerState OBJECT-TYPE + SYNTAX INTEGER { + idle(1), + connect(2), + active(3), + openSent(4), + openConfirm(5), + established(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "TRIP Peer Finite State Machine state. + + idle(1) : The initial state. Local LS refuses all + incoming connections. No application + resources are allocated to processing + information about the remote peer. + + connect(2) : Local LS waiting for a transport + protocol connection to be completed to + the peer, and is listening for inbound + transport connections from the peer. + + active(3) : Local LS is listening for an inbound + connection from the peer, but is not in + the process of initiating a connection + to the remote peer. + + openSent(4) : Local LS has sent an OPEN message to its + peer and is waiting for an OPEN message + from the remote peer. + + openConfirm(5): Local LS has sent an OPEN message to the + remote peer, received an OPEN message from + the remote peer, and sent a KEEPALIVE + message in response to the OPEN. The local + LS is now waiting for a KEEPALIVE message + or a NOTIFICATION message in response to + its OPEN message. + + established(6): LS can exchange UPDATE, NOTIFICATION, and + KEEPALIVE messages with its peer." + ::= { tripPeerEntry 5 } + + tripPeerAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to affect the TRIP connection + state. + + up(1) : Allow a connection with the peer LS. + + down(2) : disconnect the connection from the peer LS and + do not allow any further connections to this + + + + peer. + + If this value is set to down(2) then tripPeerState will + have the value of idle(1)." + DEFVAL { up } + ::= { tripPeerEntry 6 } + + tripPeerNegotiatedVersion OBJECT-TYPE + SYNTAX TripProtocolVersion + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The negotiated version of TRIP running between this + local entity and this peer." + ::= { tripPeerEntry 7 } + + tripPeerSendReceiveMode OBJECT-TYPE + SYNTAX TripSendReceiveMode + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The operational mode of this peer." + ::= { tripPeerEntry 8 } + + tripPeerRemoteItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Internet Telephony Administrative domain of + this peer." + ::= { tripPeerEntry 9 } + + tripPeerConnectRetryInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the initial amount of time that will elapse + between connection retry. This value SHOULD double + after each attempt up to the value of + tripPeerMaxRetryInterval. This value MUST always be less + than or equal to the value of tripPeerMaxRetryInterval. + Attempts to set this value higher than the max retry + will not be allowed." + DEFVAL { 120 } + ::= { tripPeerEntry 10 } + + + + tripPeerMaxRetryInterval OBJECT-TYPE + SYNTAX Unsigned32 (0..2147483647) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum amount of time that will elapse + between connection retries. Once the value of + tripPeerConnectRetryInterval has reached this value, no + more retries will be attempted. Attempts to set this + value lower than the retry interval SHOULD not be + allowed." + DEFVAL { 360 } + ::= { tripPeerEntry 11 } + + tripPeerHoldTime OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time interval in seconds for the hold timer that + is established with the peer. The value of this object + is the smaller of the values in + tripPeerHoldTimeConfigured and the hold time received + in the open message." + ::= { tripPeerEntry 12 } + + tripPeerKeepAlive OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the amount of time that MUST elapse between + keep alive messages. This value is negotiated with the + remote when a connection is established." + ::= { tripPeerEntry 13 } + + tripPeerHoldTimeConfigured OBJECT-TYPE + SYNTAX Unsigned32 (0 | 3..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum time that MAY elapse between the + receipt of successive keepalive or update message. A value + of 0 means that keepalive or update messages will not be + + + + sent." + DEFVAL { 240 } + ::= { tripPeerEntry 14 } + + tripPeerKeepAliveConfigured OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the amount of time that MUST elapse between + keep alive messages." + DEFVAL { 30 } + ::= { tripPeerEntry 15 } + + tripPeerMaxPurgeTime OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates the interval that the LS MUST maintain routes + marked as withdrawn in its database." + DEFVAL { 10 } + ::= { tripPeerEntry 16 } + + tripPeerDisableTime OBJECT-TYPE + SYNTAX Unsigned32 (1..65535) + UNITS "Seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicate the interval that the TRIP module of the remote + peer LS MUST be disabled while routes originated by the + local LS with high sequence numbers can be removed." + DEFVAL { 180 } + ::= { tripPeerEntry 17 } + + tripPeerLearned OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this entry was learned or + configured." + DEFVAL { false } + ::= { tripPeerEntry 18 } + + + + + tripPeerStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. Conceptual + rows having the value 'permanent' need not allow write- + access to any columnar objects in the row. It is not a + requirement that this storage be non volatile." + DEFVAL { nonVolatile } + ::= { tripPeerEntry 19 } + + tripPeerRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status of the entry. This object is REQUIRED to + create or delete rows remotely by a manager. If the + instance already exists for a particular applIndex, the + row create operation will fail. + + The value of this object has no effect on whether + other objects in this conceptual row can be modified. + + Entries in this table can be learned by the TRIP + application, or provisioned through this table." + ::= { tripPeerEntry 20 } + + -- + -- TripPeerStatisticsTable + -- + + tripPeerStatisticsTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripPeerStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The TRIP peer stats table. This table contains one + entry per remote TRIP peer, and statistics related to the + connection with the remote peer. The objects in this + table are volatile." + ::= { tripMIBObjects 5 } + + tripPeerStatisticsEntry OBJECT-TYPE + SYNTAX TripPeerStatisticsEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Entry containing information about the connection with + a TRIP peer." + AUGMENTS { tripPeerEntry } + ::= { tripPeerStatisticsTable 1 } + + TripPeerStatisticsEntry ::= SEQUENCE { + tripPeerInUpdates Counter32, + tripPeerOutUpdates Counter32, + tripPeerInTotalMessages Counter32, + tripPeerOutTotalMessages Counter32, + tripPeerFsmEstablishedTransitions Counter32, + tripPeerFsmEstablishedTime DateAndTime, + tripPeerInUpdateElapsedTime TimeInterval, + tripPeerStateChangeTime TimeStamp + } + + tripPeerInUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TRIP update messages received from this + remote peer since the last restart of this location + server." + ::= { tripPeerStatisticsEntry 1 } + + tripPeerOutUpdates OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of TRIP update messages sent to this remote + peer since the last restart of this LS." + ::= { tripPeerStatisticsEntry 2 } + + tripPeerInTotalMessages OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of TRIP messages received from the + remote peer on this connection since the last restart + of this LS." + ::= { tripPeerStatisticsEntry 3 } + + tripPeerOutTotalMessages OBJECT-TYPE + SYNTAX Counter32 + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of outgoing TRIP messages sent to the + remote peer since the last restart of this LS." + ::= { tripPeerStatisticsEntry 4 } + + tripPeerFsmEstablishedTransitions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of times the remote peer has transitioned + into the established state since the last restart of this + LS." + ::= { tripPeerStatisticsEntry 5 } + + tripPeerFsmEstablishedTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the time and date that this remote peer entered + the 'established' state." + ::= { tripPeerStatisticsEntry 6 } + + tripPeerInUpdateElapsedTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Elapsed time in hundredths of seconds since the last + TRIP update message was received from this remote peer." + ::= { tripPeerStatisticsEntry 7 } + + tripPeerStateChangeTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the last state change of + tripPeerState took place." + ::= { tripPeerStatisticsEntry 8 } + + -- TRIP Received Route Table. This table contains + -- all routes from all sources. Each entry consists + -- of a route and its associated path attributes. + + + + + tripRouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The TRIP route table containing information about + reachable routes that are to be added to service by the + receiving LS. The objects in this table are volatile + and are refreshed when this LS rediscovers its route + table." + ::= { tripMIBObjects 6 } + + tripRouteEntry OBJECT-TYPE + SYNTAX TripRouteEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a route to a called destination." + INDEX { applIndex, + tripRouteAppProtocol, + tripRouteAddressFamily, + tripRouteAddress, + tripRoutePeer + } + ::= { tripRouteTable 1 } + + TripRouteEntry ::= SEQUENCE { + tripRouteAppProtocol TripAppProtocol, + tripRouteAddressFamily TripAddressFamily, + tripRouteAddress OCTET STRING, + tripRoutePeer TripId, + tripRouteTRIBMask BITS, + tripRouteAddressSequenceNumber Unsigned32, + tripRouteAddressOriginatorId TripId, + tripRouteNextHopServerIAddrType InetAddressType, + tripRouteNextHopServer InetAddress, + tripRouteNextHopServerPort InetPortNumber, + tripRouteNextHopServerItad TripItad, + tripRouteMultiExitDisc Unsigned32, + tripRouteLocalPref Unsigned32, + tripRouteAdvertisementPath OCTET STRING, + tripRouteRoutedPath OCTET STRING, + tripRouteAtomicAggregate TruthValue, + tripRouteUnknown OCTET STRING, + tripRouteWithdrawn TruthValue, + tripRouteConverted TruthValue, + tripRouteReceivedTime TimeStamp + } + + + + tripRouteAppProtocol OBJECT-TYPE + SYNTAX TripAppProtocol + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The protocol for which this entry of the routing table + is maintained." + ::= { tripRouteEntry 1 } + + tripRouteAddressFamily OBJECT-TYPE + SYNTAX TripAddressFamily + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Specifies the type of address for the destination + route." + ::= { tripRouteEntry 2 } + + tripRouteAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..105)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This is the address (prefix) of the family type given + by Address Family of the destination. It is the prefix + of addresses reachable from this gateway via the next + hop server. The SIZE value of 105 has been assigned due + to the sub identifier of object types length limitation + as defined in SMIv2." + REFERENCE + "RFC 3219, section 5.1.1.1." + ::= { tripRouteEntry 3 } + + tripRoutePeer OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The identifier of the peer where the route information + was learned." + ::= { tripRouteEntry 4 } + + tripRouteTRIBMask OBJECT-TYPE + SYNTAX BITS { + adjTribIns(0), + extTrib(1), + locTrib(2), + adjTribOut(3) + + + + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates which Telephony Routing Information Base (TRIB) + this entry belongs to. This is + a bit-map of possible types. If the bit has a value of + 1, then the entry is a member of the corresponding TRIB + type. If the bit has a value of 0 then the entry is not + a member of the TRIP type. The various bit positions + are: + + 0 adjTribIns The entry is of type adj-TRIBs-ins, + stores routing information that has + been learned from inbound UPDATE + messages. + 1 extTrib The entry is of type ext-TRIB, the + best route for a given destination. + 2 locTrib The entry is of type loc-TRIB contains + the local TRIP routing information + that the LS has selected. + 3 adjTribOut The entry is of type adj-TRIBs-out, + stores the information that the local + LS has selected for advertisement to + its external peers." + REFERENCE + "RFC 3291, section 3.5." + ::= { tripRouteEntry 5 } + + tripRouteAddressSequenceNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the version of the destination route + originated by the LS identified by + tripRouteAddressOriginatorId intra-domain attribute." + ::= { tripRouteEntry 6 } + + tripRouteAddressOriginatorId OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is an intra-domain attribute indicating the + internal LS that originated the route into the ITAD." + ::= { tripRouteEntry 7 } + + + + + tripRouteNextHopServerIAddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of Inet Address of the tripRouteNextHopServer." + REFERENCE + "RFC 3291, section 3." + ::= { tripRouteEntry 8 } + + tripRouteNextHopServer OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the next hop that messages of a given protocol + destined for tripRouteAddress SHOULD be sent to. The type + of this address is determined by the value of the + tripRouteNextHopServerIAddrType object." + ::= { tripRouteEntry 9 } + + tripRouteNextHopServerPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The port of the next hop server that this route + will use." + ::= { tripRouteEntry 10 } + + tripRouteNextHopServerItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the domain of the next hop." + ::= { tripRouteEntry 11 } + + tripRouteMultiExitDisc OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The Multiple Exit Discriminator allows an LS to + discriminate between, and indicate preference for, + otherwise similar routes to a neighbouring domain. + A higher value represents a more preferred routing + object." + + + + REFERENCE + "RFC 3219, section 5.8" + ::= { tripRouteEntry 12 } + + tripRouteLocalPref OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicated the local LS's degree of preference for an + advertised route destination." + REFERENCE + "RFC 3219, section 4.3.4.7" + ::= { tripRouteEntry 13 } + + tripRouteAdvertisementPath OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..252)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the sequence of domains through which this + advertisement has passed. + + This object is probably best represented as sequence of + TripItads. For SMI compatibility, though, it is + represented as an OCTET STRING. This object is a sequence + of ITADs where each set of 4 octets corresponds to a TRIP + ITAD in network byte order." + REFERENCE + "RFC 3219, section 4.3.4.4" + ::= { tripRouteEntry 14 } + + tripRouteRoutedPath OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..252)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Identifies the ITADs through which messages sent using + this route would pass. These are a subset of + tripRouteAdvertisementPath. + + This object is probably best represented as sequence of + TripItads. For SMI compatibility, though, it is + represented as OCTET STRING. This object is a sequence + of ITADs where each set of 4 octets corresponds to a TRIP + ITAD in network byte order." + REFERENCE + "RFC 3219, section 4.3.4.5" + + + + ::= { tripRouteEntry 15 } + + tripRouteAtomicAggregate OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates that a route MAY traverse domains not listed + in tripRouteRoutedPath. If an LS selects the less + specific route from a set of overlapping routes, then + this value returns TRUE." + REFERENCE + "RFC 3219, section 4.3.4.6" + ::= { tripRouteEntry 16 } + + tripRouteUnknown OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains one or more attributes that were not + understood, and because they were transitive, were dropped + during aggregation. They take the format of a triple + , of + variable length. If no attributes were dropped, this + returns an OCTET STRING of size 0." + REFERENCE + "RFC 3219, sections 4.3.1, 4.3.2.3" + ::= { tripRouteEntry 17 } + + tripRouteWithdrawn OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if this route is to be removed from service + by the receiving LS." + ::= { tripRouteEntry 18 } + + tripRouteConverted OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates if this route has been converted to a + different application protocol than it had originally." + ::= { tripRouteEntry 19 } + + + + + tripRouteReceivedTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when this route was received." + ::= { tripRouteEntry 20 } + + -- + -- TRIP Received Route Community Table. + -- + + tripRouteCommunityTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripRouteCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing a list of TRIP communities associated + with a route. Each instance of tripRouteTypeEntry that has + the tripRouteTypePeer object set to remote(2) has an + instance in the tripRouteTable as a parent. The objects + in this table are volatile and are refreshed after a + reboot." + REFERENCE + "RFC 3219, section 5.9." + ::= { tripMIBObjects 7 } + + tripRouteCommunityEntry OBJECT-TYPE + SYNTAX TripRouteCommunityEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about communities associated with a route. + An entry with a tripRouteAddress of 00 and a + tripRoutePeer of 0 refers to the local LS." + INDEX { applIndex, + tripRouteAppProtocol, + tripRouteAddressFamily, + tripRouteAddress, + tripRoutePeer, + tripRouteCommunityId + } + ::= { tripRouteCommunityTable 1 } + + TripRouteCommunityEntry ::= SEQUENCE { + tripRouteCommunityId TripCommunityId, + tripRouteCommunityItad TripItad + } + + + + tripRouteCommunityId OBJECT-TYPE + SYNTAX TripCommunityId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The community identifier." + ::= { tripRouteCommunityEntry 1 } + + tripRouteCommunityItad OBJECT-TYPE + SYNTAX TripItad + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ITAD associated with this community." + ::= { tripRouteCommunityEntry 2 } + + -- + -- tripItadTopologyTable + -- + + tripItadTopologyTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripItadTopologyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The sequence of link connections between peers within an + ITAD. The objects in this table are volatile and are + refreshed after a reboot." + ::= { tripMIBObjects 8 } + + tripItadTopologyEntry OBJECT-TYPE + SYNTAX TripItadTopologyEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a peer of the LS identified by + tripItadTopologyOrigId." + INDEX { applIndex, tripItadTopologyOrigId } + ::= { tripItadTopologyTable 1 } + + TripItadTopologyEntry ::= SEQUENCE { + tripItadTopologyOrigId TripId, + tripItadTopologySeqNum Unsigned32 + } + + tripItadTopologyOrigId OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS not-accessible + + + + STATUS current + DESCRIPTION + "Indicates the internal LS that originated the ITAD + topology information into the ITAD." + ::= { tripItadTopologyEntry 1 } + + tripItadTopologySeqNum OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the version of the ITAD topology originated + by the LS identified by tripItadTopologyOrigId." + ::= { tripItadTopologyEntry 2 } + + -- + -- tripItadTopologyIdTable + -- + + tripItadTopologyIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF TripItadTopologyIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The list of other LS's within the ITAD domain that the + LS identified by tripItadTopologyOrigId is currently + peering. Each instance of tripItadTopologyIdEntry has an + instance in the tripItadTopologyTable as a parent. The + objects in this table are volatile and are refreshed + after a reboot." + ::= { tripMIBObjects 9 } + + tripItadTopologyIdEntry OBJECT-TYPE + SYNTAX TripItadTopologyIdEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a peer to the LS identified by + tripItadTopologyOrigId." + INDEX { applIndex, + tripItadTopologyOrigId, + tripItadTopologyId } + ::= { tripItadTopologyIdTable 1 } + + TripItadTopologyIdEntry ::= SEQUENCE { + tripItadTopologyId TripId + } + + + + + tripItadTopologyId OBJECT-TYPE + SYNTAX TripId + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index into this entry. Indicates the other location + servers within the ITAD domain that this LS identified + by tripItadTopologyOrigId is currently peering." + ::= { tripItadTopologyIdEntry 1 } + + -- + -- Notification objects + -- + + tripNotifApplIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "This object contains the application Index. It is used + to bind this notification with a specific instance of + TRIP entity." + REFERENCE + "RFC 2788, section 3." + ::= { tripMIBNotifObjects 1 } + + tripNotifPeerAddrInetType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The type of Inet Address of the tripNotifPeerAddr." + REFERENCE + "RFC 3291, section 3." + ::= { tripMIBNotifObjects 2 } + + tripNotifPeerAddr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The IP address of this entry's TRIP peer LS. This object + contains the value of tripPeerRemoteAddr. The type of this + address is determined by the value of the + tripNotifPeerAddrInetType object." + REFERENCE + "RFC 3291, section 3." + ::= { tripMIBNotifObjects 3 } + + + + tripNotifPeerErrCode OBJECT-TYPE + SYNTAX INTEGER { + messageHeader(1), + openMessage(2), + updateMessage(3), + holdTimerExpired(4), + finiteStateMachine(5), + cease(6), + tripNotification(7) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Notification message of TRIP error. The meaning of this + value is applicable to the following functions: + + messageHeader(1) + - All errors detected while processing the TRIP message + header. + + openMessage(2) + - All errors detected while processing the OPEN message. + + updateMessage(3) + - All errors detected while processing the UPDATE + message. + + holdTimerExpired(4) + - A notification generated when the hold timer expires. + + finiteStateMachine(5) + - All errors detected by the TRIP Finite State Machine. + + cease(6) + - Any fatal error condition that the rest of the values + do not cover. + + tripNotification(7) + - Any error encountered while sending a notification + message." + ::= { tripMIBNotifObjects 4 } + + tripNotifPeerErrSubcode OBJECT-TYPE + SYNTAX Unsigned32 (1..2147483647) + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The sub error code associated with error code. The + + + + meaning of this value is dependent on the value of + tripNotifPeerErrCode. + + Message Header (1) Error Subcodes: + 1 - Bad Message Length. + 2 - Bad Message Type. + + OPEN Message (2) Error Subcodes: + 1 - Unsupported Version Number. + 2 - Bad Peer ITAD. + 3 - Bad TRIP Identifier. + 4 - Unsupported Optional Parameter. + 5 - Unacceptable Hold Time. + 6 - Unsupported Capability. + 7 - Capability Mismatch. + + UPDATE Message (3) Error Subcodes: + 1 - Malformed Attribute List. + 2 - Unrecognized Well-known Attribute. + 3 - Missing Well-known Mandatory Attribute. + 4 - Attribute Flags Error. + 5 - Attribute Length Error. + 6 - Invalid Attribute." + ::= { tripMIBNotifObjects 5 } + + -- + -- Notifications + -- + tripConnectionEstablished NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr + } + STATUS current + DESCRIPTION + "The TRIP Connection Established event is generated when + the TRIP finite state machine enters the ESTABLISHED + state." + ::= { tripMIBNotifications 1 } + + tripConnectionDropped NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr + } + STATUS current + DESCRIPTION + "The TRIP Connection Dropped event is generated when the + + + + TRIP finite state machine leaves the ESTABLISHED state." + ::= { tripMIBNotifications 2 } + + tripFSM NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "The trip FSM Event is generated when any error is + detected by the TRIP Finite State Machine." + ::= { tripMIBNotifications 3 } + + tripOpenMessageError NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "Errors detected while processing the OPEN message." + ::= { tripMIBNotifications 4 } + + tripUpdateMessageError NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "Errors detected while processing the UPDATE message." + ::= { tripMIBNotifications 5 } + + tripHoldTimerExpired NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + + + + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "The system does not receive successive messages within + the period specified by the negotiated Hold Time." + ::= { tripMIBNotifications 6 } + + tripConnectionCollision NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex } + STATUS current + DESCRIPTION + "A pair of LSs tried to simultaneously to establish a + transport connection to each other." + ::= { tripMIBNotifications 7 } + + tripCease NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode, + tripPeerState + } + STATUS current + DESCRIPTION + "A TRIP peer MAY choose at any given time to close its TRIP + connection by sending this notification message. However, + the Cease notification message MUST NOT be used when a + fatal error occurs." + + ::= { tripMIBNotifications 8 } + + tripNotificationErr NOTIFICATION-TYPE + OBJECTS { tripNotifApplIndex } + STATUS current + DESCRIPTION + "Generated if there is an error detected in a TRIP + notification message sent with another cause. Note that + the TRIP notification referred to in this object is not + an SNMP notification, it is a specific message described + in the TRIP specification." + REFERENCE + "RFC 3219, section 6.4." + ::= { tripMIBNotifications 9 } + + -- + + + + -- Compliance Statements + -- + + tripMIBFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for TRIP entities that + implement this MIB module in read-write mode, such + that it can be used for both monitoring and configuring + the TRIP entity. + + There is one INDEX object that cannot be represented in + the form of OBJECT clauses in SMIv2, but for which there + is a compliance requirement, expressed in OBJECT clause + form in this description: + + -- OBJECT tripRouteTypeAddrInetType + -- SYNTAX InetAddressType (ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global ipv4 and ipv6 addresses. + -- + -- OBJECT tripRouteTypeAddr + -- SYNTAX InetAddress (SIZE (4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global IPv4 and IPv6 addresses. + -- + " + + MODULE -- this module + MANDATORY-GROUPS { tripConfigGroup, + tripPeerTableConfigGroup, + tripRouteGroup, + tripItadTopologyGroup, + tripPeerTableStatsGroup } + + GROUP tripNotificationGroup + DESCRIPTION + "This group is OPTIONAL. A TRIP entity can choose not to + send any notifications. If this group is implemented, + the tripNotifObjectGroup MUST also be implemented." + + GROUP tripNotifObjectGroup + DESCRIPTION + "This group is OPTIONAL. A TRIP entity can choose not to + send any notifications. If this group is implemented, + + + + the tripNotificationGroup MUST also be implemented." + + OBJECT tripSupportedCommunityRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + OBJECT tripPeerRowStatus + SYNTAX RowStatus { active(1) } + WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) } + DESCRIPTION + "Support for createAndWait and notInService is not + required." + + MODULE NETWORK-SERVICES-MIB + MANDATORY-GROUPS { applRFC2788Group } + + ::= { tripMIBCompliances 1 } + tripMIBReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for TRIP entities that + implement this MIB module in read only mode. Such TRIP + entities can then only be monitored, but not be + configured via this MIB module. + + In read-only mode, the manager will not be able to add, + remove or modify rows to any table, however the TRIP + application may modify, remove or add rows to a table. + + There is one INDEX object that cannot be represented in + the form of OBJECT clauses in SMIv2, but for which there + is a compliance requirement, expressed in OBJECT clause + form in this description: + + -- OBJECT tripRouteTypeAddrInetType + -- SYNTAX InetAddressType (ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)) + -- DESCRIPTION + -- This MIB requires support for global and + -- non-global ipv4 and ipv6 addresses. + -- + -- OBJECT tripRouteTypeAddr + -- SYNTAX InetAddress (SIZE (4 | 8 | 16 | 20)) + -- DESCRIPTION + -- This MIB requires support for global and + + + + -- non-global IPv4 and IPv6 addresses. + -- + " + + MODULE -- this module + MANDATORY-GROUPS { tripConfigGroup, + tripPeerTableConfigGroup, + tripRouteGroup, + tripItadTopologyGroup, + tripPeerTableStatsGroup } + + GROUP tripNotificationGroup + DESCRIPTION + "This group is OPTIONAL. A TRIP entity can choose not to + send any notifications. If this group is implemented, + the tripNotifObjectGroup MUST also be implemented." + + GROUP tripNotifObjectGroup + DESCRIPTION + "This group is OPTIONAL. A TRIP entity can choose not to + send any notifications. If this group is implemented, + the tripNotificationGroup MUST also be implemented." + OBJECT tripCfgItad + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgAdminStatus + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when implemented in read-only mode." + + OBJECT tripCfgPort + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgMinItadOriginationInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgMinRouteAdvertisementInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgMaxPurgeTime + + + + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgDisableTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripCfgStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripSupportedCommunityItad + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripSupportedCommunityStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripSupportedCommunityRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT tripPeerAdminStatus + MIN-ACCESS not-accessible + DESCRIPTION + "Object is not needed when implemented in read-only mode." + + OBJECT tripPeerConnectRetryInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerMaxRetryInterval + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerHoldTimeConfigured + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerKeepAliveConfigured + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerMaxPurgeTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerDisableTime + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerStorage + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tripPeerRowStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + MODULE NETWORK-SERVICES-MIB + MANDATORY-GROUPS { applRFC2788Group } + + ::= { tripMIBCompliances 2 } + + -- + -- Object and event conformance groups + -- + + tripConfigGroup OBJECT-GROUP + OBJECTS { + tripCfgProtocolVersion, + tripCfgItad, + tripCfgIdentifier, + tripCfgOperStatus, + tripCfgAdminStatus, + tripCfgAddrIAddrType, + tripCfgAddr, + tripCfgPort, + + + + tripCfgMinItadOriginationInterval, + tripCfgMinRouteAdvertisementInterval, + tripCfgMaxPurgeTime, + tripCfgDisableTime, + tripCfgSendReceiveMode, + tripCfgStorage, + tripSupportedCommunityItad, + tripSupportedCommunityStorage, + tripRouteTypePeer, + tripSupportedCommunityRowStatus + } + STATUS current + DESCRIPTION + "The global objects for configuring trip." + ::= { tripMIBGroups 1 } + + tripPeerTableConfigGroup OBJECT-GROUP + OBJECTS { + tripPeerIdentifier, + tripPeerState, + tripPeerAdminStatus, + tripPeerNegotiatedVersion, + tripPeerSendReceiveMode, + tripPeerRemoteItad, + tripPeerConnectRetryInterval, + tripPeerMaxRetryInterval, + tripPeerHoldTime, + tripPeerKeepAlive, + tripPeerHoldTimeConfigured, + tripPeerKeepAliveConfigured, + tripPeerMaxPurgeTime, + tripPeerDisableTime, + tripPeerLearned, + tripPeerStorage, + tripPeerRowStatus + } + + STATUS current + DESCRIPTION + "The global objects for configuring the TRIP peer + table." + ::= { tripMIBGroups 2 } + + tripPeerTableStatsGroup OBJECT-GROUP + OBJECTS { + tripPeerInUpdates, + tripPeerOutUpdates, + tripPeerInTotalMessages, + + + + tripPeerOutTotalMessages, + tripPeerFsmEstablishedTransitions, + tripPeerFsmEstablishedTime, + tripPeerInUpdateElapsedTime, + tripPeerStateChangeTime + } + STATUS current + DESCRIPTION + "The global statistics the TRIP peer table." + ::= { tripMIBGroups 3 } + + tripRouteGroup OBJECT-GROUP + OBJECTS { + tripRouteTRIBMask, + tripRouteAddressSequenceNumber, + tripRouteAddressOriginatorId, + tripRouteNextHopServerIAddrType, + tripRouteNextHopServer, + tripRouteNextHopServerPort, + tripRouteNextHopServerItad, + tripRouteMultiExitDisc, + tripRouteLocalPref, + tripRouteAdvertisementPath, + tripRouteRoutedPath, + tripRouteAtomicAggregate, + tripRouteUnknown, + tripRouteWithdrawn, + tripRouteConverted, + tripRouteReceivedTime, + tripRouteCommunityItad + } + + STATUS current + DESCRIPTION + "The global objects for configuring route attribute." + ::= { tripMIBGroups 4 } + tripItadTopologyGroup OBJECT-GROUP + OBJECTS { + tripItadTopologySeqNum, + tripItadTopologyId + } + STATUS current + DESCRIPTION + "The objects that define the TRIP ITAD topology." + ::= { tripMIBGroups 5 } + + tripNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + + + + tripConnectionEstablished, + tripConnectionDropped, + tripFSM, + tripOpenMessageError, + tripUpdateMessageError, + tripHoldTimerExpired, + tripConnectionCollision, + tripCease, + tripNotificationErr + } + STATUS current + DESCRIPTION + "A collection of notifications defined for TRIP." + ::= { tripMIBGroups 6 } + + tripNotifObjectGroup OBJECT-GROUP + OBJECTS { + tripNotifApplIndex, + tripNotifPeerAddrInetType, + tripNotifPeerAddr, + tripNotifPeerErrCode, + tripNotifPeerErrSubcode + } + STATUS current + DESCRIPTION + "The collection of objects that specify information for + TRIP notifications." + ::= { tripMIBGroups 7 } + +END diff --git a/mibs/ietf/TRIP-TC-MIB b/mibs/ietf/TRIP-TC-MIB new file mode 100644 index 0000000..3790880 --- /dev/null +++ b/mibs/ietf/TRIP-TC-MIB @@ -0,0 +1,139 @@ +TRIP-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + Unsigned32, + Integer32, + mib-2 + FROM SNMPv2-SMI -- [RFC2578] + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; -- [RFC2579] + +tripTC MODULE-IDENTITY + LAST-UPDATED "200409020000Z" -- Sep 02, 2004 + ORGANIZATION "IETF IPTel Working Group. + Mailing list: iptel@lists.bell-labs.com" + CONTACT-INFO + "Co-editor David Zinman + postal: 265 Ridley Blvd. + Toronto ON, M5M 4N8 + Canada + email: dzinman@rogers.com + phone: +1 416 433 4298 + + Co-editor: David Walker + Sedna Wireless Inc. + postal: 495 March Road, Suite 500 + Ottawa, ON K2K 3G1 + Canada + email: david.walker@sedna-wireless.com + phone: +1 613 878 8142 + + Co-editor Jianping Jiang + Syndesis Limited + postal: 30 Fulton Way + Richmond Hill, ON L4B 1J5 + Canada + + email: jjiang@syndesis.com + phone: +1 905 886-7818 x2515 + " + DESCRIPTION + "Initial version of TRIP (Telephony Routing Over IP) + MIB Textual Conventions module used by other + + + + TRIP-related MIB Modules. + + Copyright (C) The Internet Society (2004). This version of + this MIB module is part of RFC 3872, see the RFC itself + for full legal notices." + REVISION "200409020000Z" -- Sep 02, 2004 + DESCRIPTION + "The initial version, Published as RFC 3872." + ::= { mib-2 115 } + +-- +-- Textual Conventions +-- + +TripItad ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The values for identifying the IP Telephony + Administrative Domain (ITAD)." + SYNTAX Unsigned32 (0..4294967295) + +TripId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The TRIP Identifier uniquely identifies a LS within its + ITAD. It is a 4 octet unsigned integer that may, but not + necessarily, represent the IPv4 address of a Location + Server. Where bytes 1-4 of the Unsigned32 represent + 1-4 bytes of the IPv4 address in network-byte order. For + an IPv6 network, TripId will not represent the IPv6 + address." + SYNTAX Unsigned32 (0..4294967295) + +TripAddressFamily ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A type of address for a TRIP route. Address families + defined within this MIB module are: + + Code Address Family + 1 Decimal Routing Numbers + 2 PentaDecimal Routing Numbers + 3 E.164 Numbers + 255 An other type of address family" + + SYNTAX INTEGER + { decimal(1), pentadecimal(2), e164(3), other(255) } + + + + +TripAppProtocol ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The application protocol used for communication with TRIP + Location Servers. Protocols defined in this MIB Module + are: + + Code Protocol + 1 SIP + 2 H.323-H.225.0-Q.931 + 3 H.323-H.225.0-RAS + 4 H.323-H.225.0-Annex-G + 255 An other type of application protocol" + + SYNTAX INTEGER + { sip(1), q931(2), ras(3), annexG(4), other(255) } + +TripCommunityId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The range of legal values for a TRIP Community + Identifier." + SYNTAX Unsigned32 (0..4294967295) + +TripProtocolVersion ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The version number of the TRIP protocol." + SYNTAX Integer32 (1..255) + +TripSendReceiveMode ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The operational mode of the TRIP application. Possible + values are: + 1 - Send Receive mode + 2 - Send only mode + 3 - Receive Only mode" + SYNTAX INTEGER { sendReceive(1), sendOnly(2), receiveOnly(3) } + +END diff --git a/mibs/ietf/TUNNEL-MIB b/mibs/ietf/TUNNEL-MIB new file mode 100644 index 0000000..615faa6 --- /dev/null +++ b/mibs/ietf/TUNNEL-MIB @@ -0,0 +1,774 @@ +TUNNEL-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, transmission, + Integer32, IpAddress FROM SNMPv2-SMI -- [RFC2578] + + RowStatus, StorageType FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + + InetAddressType, + InetAddress FROM INET-ADDRESS-MIB -- [RFC4001] + + IPv6FlowLabelOrAny FROM IPV6-FLOW-LABEL-MIB -- [RFC3595] + + ifIndex, + InterfaceIndexOrZero FROM IF-MIB -- [RFC2863] + + IANAtunnelType FROM IANAifType-MIB; -- [IFTYPE] + +tunnelMIB MODULE-IDENTITY + LAST-UPDATED "200505160000Z" -- May 16, 2005 + ORGANIZATION "IETF IP Version 6 (IPv6) Working Group" + CONTACT-INFO + " Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + EMail: dthaler@microsoft.com" + DESCRIPTION + "The MIB module for management of IP Tunnels, + independent of the specific encapsulation scheme in + use. + + Copyright (C) The Internet Society (2005). This + version of this MIB module is part of RFC 4087; see + the RFC itself for full legal notices." + + + + REVISION "200505160000Z" -- May 16, 2005 + DESCRIPTION + "IPv4-specific objects were deprecated, including + tunnelIfLocalAddress, tunnelIfRemoteAddress, the + tunnelConfigTable, and the tunnelMIBBasicGroup. + + Added IP version-agnostic objects that should be used + instead, including tunnelIfAddressType, + tunnelIfLocalInetAddress, tunnelIfRemoteInetAddress, + the tunnelInetConfigTable, and the + tunnelIMIBInetGroup. + + The new tunnelIfLocalInetAddress and + tunnelIfRemoteInetAddress objects are read-write, + rather than read-only. + + Updated DESCRIPTION clauses of existing version- + agnostic objects (e.g., tunnelIfTOS) that contained + IPv4-specific text to cover IPv6 as well. + + Added tunnelIfFlowLabel for tunnels over IPv6. + + The encapsulation method was previously an INTEGER + type, and is now an IANA-maintained textual + convention. + + Published as RFC 4087." + REVISION "199908241200Z" -- August 24, 1999 + DESCRIPTION + "Initial version, published as RFC 2667." + ::= { transmission 131 } + +tunnelMIBObjects OBJECT IDENTIFIER ::= { tunnelMIB 1 } + +tunnel OBJECT IDENTIFIER ::= { tunnelMIBObjects 1 } + +-- the IP Tunnel MIB-Group +-- +-- a collection of objects providing information about +-- IP Tunnels + +tunnelIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF TunnelIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table containing information on + configured tunnels." + + + + ::= { tunnel 1 } + +tunnelIfEntry OBJECT-TYPE + SYNTAX TunnelIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information + on a particular configured tunnel." + INDEX { ifIndex } + ::= { tunnelIfTable 1 } + +TunnelIfEntry ::= SEQUENCE { + tunnelIfLocalAddress IpAddress, -- deprecated + tunnelIfRemoteAddress IpAddress, -- deprecated + tunnelIfEncapsMethod IANAtunnelType, + tunnelIfHopLimit Integer32, + tunnelIfSecurity INTEGER, + tunnelIfTOS Integer32, + tunnelIfFlowLabel IPv6FlowLabelOrAny, + tunnelIfAddressType InetAddressType, + tunnelIfLocalInetAddress InetAddress, + tunnelIfRemoteInetAddress InetAddress, + tunnelIfEncapsLimit Integer32 +} + +tunnelIfLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The address of the local endpoint of the tunnel + (i.e., the source address used in the outer IP + header), or 0.0.0.0 if unknown or if the tunnel is + over IPv6. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelIfLocalInetAddress." + ::= { tunnelIfEntry 1 } + +tunnelIfRemoteAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The address of the remote endpoint of the tunnel + (i.e., the destination address used in the outer IP + header), or 0.0.0.0 if unknown, or an IPv6 address, or + + + + the tunnel is not a point-to-point link (e.g., if it + is a 6to4 tunnel). + + Since this object does not support IPv6, it is + deprecated in favor of tunnelIfRemoteInetAddress." + ::= { tunnelIfEntry 2 } + +tunnelIfEncapsMethod OBJECT-TYPE + SYNTAX IANAtunnelType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The encapsulation method used by the tunnel." + ::= { tunnelIfEntry 3 } + +tunnelIfHopLimit OBJECT-TYPE + SYNTAX Integer32 (0 | 1..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The IPv4 TTL or IPv6 Hop Limit to use in the outer IP + header. A value of 0 indicates that the value is + copied from the payload's header." + ::= { tunnelIfEntry 4 } + +tunnelIfSecurity OBJECT-TYPE + SYNTAX INTEGER { + none(1), -- no security + ipsec(2), -- IPsec security + other(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The method used by the tunnel to secure the outer IP + header. The value ipsec indicates that IPsec is used + between the tunnel endpoints for authentication or + encryption or both. More specific security-related + information may be available in a MIB module for the + security protocol in use." + ::= { tunnelIfEntry 5 } + +tunnelIfTOS OBJECT-TYPE + SYNTAX Integer32 (-2..63) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The method used to set the high 6 bits (the + + + + differentiated services codepoint) of the IPv4 TOS or + IPv6 Traffic Class in the outer IP header. A value of + -1 indicates that the bits are copied from the + payload's header. A value of -2 indicates that a + traffic conditioner is invoked and more information + may be available in a traffic conditioner MIB module. + A value between 0 and 63 inclusive indicates that the + bit field is set to the indicated value. + + Note: instead of the name tunnelIfTOS, a better name + would have been tunnelIfDSCPMethod, but the existing + name appeared in RFC 2667 and existing objects cannot + be renamed." + ::= { tunnelIfEntry 6 } + +tunnelIfFlowLabel OBJECT-TYPE + SYNTAX IPv6FlowLabelOrAny + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The method used to set the IPv6 Flow Label value. + This object need not be present in rows where + tunnelIfAddressType indicates the tunnel is not over + IPv6. A value of -1 indicates that a traffic + conditioner is invoked and more information may be + available in a traffic conditioner MIB. Any other + value indicates that the Flow Label field is set to + the indicated value." + ::= { tunnelIfEntry 7 } + +tunnelIfAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The type of address in the corresponding + tunnelIfLocalInetAddress and tunnelIfRemoteInetAddress + objects." + ::= { tunnelIfEntry 8 } + +tunnelIfLocalInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The address of the local endpoint of the tunnel + (i.e., the source address used in the outer IP + header). If the address is unknown, the value is + + + + 0.0.0.0 for IPv4 or :: for IPv6. The type of this + object is given by tunnelIfAddressType." + ::= { tunnelIfEntry 9 } + +tunnelIfRemoteInetAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The address of the remote endpoint of the tunnel + (i.e., the destination address used in the outer IP + header). If the address is unknown or the tunnel is + not a point-to-point link (e.g., if it is a 6to4 + tunnel), the value is 0.0.0.0 for tunnels over IPv4 or + :: for tunnels over IPv6. The type of this object is + given by tunnelIfAddressType." + ::= { tunnelIfEntry 10 } + +tunnelIfEncapsLimit OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..255) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of additional encapsulations + permitted for packets undergoing encapsulation at this + node. A value of -1 indicates that no limit is + present (except as a result of the packet size)." + REFERENCE "RFC 2473, section 4.1.1" + ::= { tunnelIfEntry 11 } + +tunnelConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF TunnelConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The (conceptual) table containing information on + configured tunnels. This table can be used to map a + set of tunnel endpoints to the associated ifIndex + value. It can also be used for row creation. Note + that every row in the tunnelIfTable with a fixed IPv4 + destination address should have a corresponding row in + the tunnelConfigTable, regardless of whether it was + created via SNMP. + + Since this table does not support IPv6, it is + deprecated in favor of tunnelInetConfigTable." + ::= { tunnel 2 } + + + + +tunnelConfigEntry OBJECT-TYPE + SYNTAX TunnelConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry (conceptual row) containing the information + on a particular configured tunnel. + + Since this entry does not support IPv6, it is + deprecated in favor of tunnelInetConfigEntry." + INDEX { tunnelConfigLocalAddress, + tunnelConfigRemoteAddress, + tunnelConfigEncapsMethod, + tunnelConfigID } + ::= { tunnelConfigTable 1 } + +TunnelConfigEntry ::= SEQUENCE { + tunnelConfigLocalAddress IpAddress, + tunnelConfigRemoteAddress IpAddress, + tunnelConfigEncapsMethod IANAtunnelType, + tunnelConfigID Integer32, + tunnelConfigIfIndex InterfaceIndexOrZero, + tunnelConfigStatus RowStatus +} + +tunnelConfigLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The address of the local endpoint of the tunnel, or + 0.0.0.0 if the device is free to choose any of its + addresses at tunnel establishment time. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigLocalAddress." + ::= { tunnelConfigEntry 1 } + +tunnelConfigRemoteAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The address of the remote endpoint of the tunnel. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigRemoteAddress." + ::= { tunnelConfigEntry 2 } + + + +tunnelConfigEncapsMethod OBJECT-TYPE + SYNTAX IANAtunnelType + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "The encapsulation method used by the tunnel. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigEncapsMethod." + ::= { tunnelConfigEntry 3 } + +tunnelConfigID OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An identifier used to distinguish between multiple + tunnels of the same encapsulation method, with the + same endpoints. If the encapsulation protocol only + allows one tunnel per set of endpoint addresses (such + as for GRE or IP-in-IP), the value of this object is + 1. For encapsulation methods (such as L2F) which + allow multiple parallel tunnels, the manager is + responsible for choosing any ID which does not + conflict with an existing row, such as choosing a + random number. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigID." + ::= { tunnelConfigEntry 4 } + +tunnelConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "If the value of tunnelConfigStatus for this row is + active, then this object contains the value of ifIndex + corresponding to the tunnel interface. A value of 0 + is not legal in the active state, and means that the + interface index has not yet been assigned. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigIfIndex." + ::= { tunnelConfigEntry 5 } + +tunnelConfigStatus OBJECT-TYPE + SYNTAX RowStatus + + + + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. The + agent need not support setting this object to + createAndWait or notInService since there are no other + writable objects in this table, and writable objects + in rows of corresponding tables such as the + tunnelIfTable may be modified while this row is + active. + + To create a row in this table for an encapsulation + method which does not support multiple parallel + tunnels with the same endpoints, the management + station should simply use a tunnelConfigID of 1, and + set tunnelConfigStatus to createAndGo. For + encapsulation methods such as L2F which allow multiple + parallel tunnels, the management station may select a + pseudo-random number to use as the tunnelConfigID and + set tunnelConfigStatus to createAndGo. In the event + that this ID is already in use and an + inconsistentValue is returned in response to the set + operation, the management station should simply select + a new pseudo-random number and retry the operation. + + Creating a row in this table will cause an interface + index to be assigned by the agent in an + implementation-dependent manner, and corresponding + rows will be instantiated in the ifTable and the + tunnelIfTable. The status of this row will become + active as soon as the agent assigns the interface + index, regardless of whether the interface is + operationally up. + + Deleting a row in this table will likewise delete the + corresponding row in the ifTable and in the + tunnelIfTable. + + Since this object does not support IPv6, it is + deprecated in favor of tunnelInetConfigStatus." + ::= { tunnelConfigEntry 6 } + +tunnelInetConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF TunnelInetConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + + + "The (conceptual) table containing information on + configured tunnels. This table can be used to map a + set of tunnel endpoints to the associated ifIndex + value. It can also be used for row creation. Note + that every row in the tunnelIfTable with a fixed + destination address should have a corresponding row in + the tunnelInetConfigTable, regardless of whether it + was created via SNMP." + ::= { tunnel 3 } + +tunnelInetConfigEntry OBJECT-TYPE + SYNTAX TunnelInetConfigEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) containing the information + on a particular configured tunnel. Note that there is + a 128 subid maximum for object OIDs. Implementers + need to be aware that if the total number of octets in + tunnelInetConfigLocalAddress and + tunnelInetConfigRemoteAddress exceeds 110 then OIDs of + column instances in this table will have more than 128 + sub-identifiers and cannot be accessed using SNMPv1, + SNMPv2c, or SNMPv3. In practice this is not expected + to be a problem since IPv4 and IPv6 addresses will not + cause the limit to be reached, but if other types are + supported by an agent, care must be taken to ensure + that the sum of the lengths do not cause the limit to + be exceeded." + INDEX { tunnelInetConfigAddressType, + tunnelInetConfigLocalAddress, + tunnelInetConfigRemoteAddress, + tunnelInetConfigEncapsMethod, + tunnelInetConfigID } + ::= { tunnelInetConfigTable 1 } + +TunnelInetConfigEntry ::= SEQUENCE { + tunnelInetConfigAddressType InetAddressType, + tunnelInetConfigLocalAddress InetAddress, + tunnelInetConfigRemoteAddress InetAddress, + tunnelInetConfigEncapsMethod IANAtunnelType, + tunnelInetConfigID Integer32, + tunnelInetConfigIfIndex InterfaceIndexOrZero, + tunnelInetConfigStatus RowStatus, + tunnelInetConfigStorageType StorageType +} + +tunnelInetConfigAddressType OBJECT-TYPE + + + + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type over which the tunnel encapsulates + packets." + ::= { tunnelInetConfigEntry 1 } + +tunnelInetConfigLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the local endpoint of the tunnel, or + 0.0.0.0 (for IPv4) or :: (for IPv6) if the device is + free to choose any of its addresses at tunnel + establishment time." + ::= { tunnelInetConfigEntry 2 } + +tunnelInetConfigRemoteAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address of the remote endpoint of the tunnel." + ::= { tunnelInetConfigEntry 3 } + +tunnelInetConfigEncapsMethod OBJECT-TYPE + SYNTAX IANAtunnelType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The encapsulation method used by the tunnel." + ::= { tunnelInetConfigEntry 4 } + +tunnelInetConfigID OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An identifier used to distinguish between multiple + tunnels of the same encapsulation method, with the + same endpoints. If the encapsulation protocol only + allows one tunnel per set of endpoint addresses (such + as for GRE or IP-in-IP), the value of this object is + 1. For encapsulation methods (such as L2F) which + allow multiple parallel tunnels, the manager is + responsible for choosing any ID which does not + + + + conflict with an existing row, such as choosing a + random number." + ::= { tunnelInetConfigEntry 5 } + +tunnelInetConfigIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the value of tunnelInetConfigStatus for this row + is active, then this object contains the value of + ifIndex corresponding to the tunnel interface. A + value of 0 is not legal in the active state, and means + that the interface index has not yet been assigned." + ::= { tunnelInetConfigEntry 6 } + +tunnelInetConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of this row, by which new entries may be + created, or old entries deleted from this table. The + agent need not support setting this object to + createAndWait or notInService since there are no other + writable objects in this table, and writable objects + in rows of corresponding tables such as the + tunnelIfTable may be modified while this row is + active. + + To create a row in this table for an encapsulation + method which does not support multiple parallel + tunnels with the same endpoints, the management + station should simply use a tunnelInetConfigID of 1, + and set tunnelInetConfigStatus to createAndGo. For + encapsulation methods such as L2F which allow multiple + parallel tunnels, the management station may select a + pseudo-random number to use as the tunnelInetConfigID + and set tunnelInetConfigStatus to createAndGo. In the + event that this ID is already in use and an + inconsistentValue is returned in response to the set + operation, the management station should simply select + a new pseudo-random number and retry the operation. + + Creating a row in this table will cause an interface + index to be assigned by the agent in an + implementation-dependent manner, and corresponding + rows will be instantiated in the ifTable and the + + + + tunnelIfTable. The status of this row will become + active as soon as the agent assigns the interface + index, regardless of whether the interface is + operationally up. + + Deleting a row in this table will likewise delete the + corresponding row in the ifTable and in the + tunnelIfTable." + ::= { tunnelInetConfigEntry 7 } + +tunnelInetConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type of this row. If the row is + permanent(4), no objects in the row need be writable." + ::= { tunnelInetConfigEntry 8 } + +-- conformance information + +tunnelMIBConformance + OBJECT IDENTIFIER ::= { tunnelMIB 2 } +tunnelMIBCompliances + OBJECT IDENTIFIER ::= { tunnelMIBConformance 1 } +tunnelMIBGroups OBJECT IDENTIFIER ::= { tunnelMIBConformance 2 } + +-- compliance statements + +tunnelMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The (deprecated) IPv4-only compliance statement for + the IP Tunnel MIB. + + This is deprecated in favor of + tunnelMIBInetFullCompliance and + tunnelMIBInetReadOnlyCompliance." + MODULE -- this module + MANDATORY-GROUPS { tunnelMIBBasicGroup } + + OBJECT tunnelIfHopLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfTOS + MIN-ACCESS read-only + + + + DESCRIPTION + "Write access is not required." + + OBJECT tunnelConfigStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { tunnelMIBCompliances 1 } + +tunnelMIBInetFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The full compliance statement for the IP Tunnel MIB." + MODULE -- this module + MANDATORY-GROUPS { tunnelMIBInetGroup } + + OBJECT tunnelIfAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + DESCRIPTION + "An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation only needs to + support the addresses it actually supports on the + device." + ::= { tunnelMIBCompliances 2 } + +tunnelMIBInetReadOnlyCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The read-only compliance statement for the IP Tunnel + MIB." + MODULE -- this module + MANDATORY-GROUPS { tunnelMIBInetGroup } + + OBJECT tunnelIfHopLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfTOS + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfFlowLabel + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + + + OBJECT tunnelIfAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required. + + An implementation is only required to support IPv4 + and/or IPv6 addresses. An implementation only needs to + support the addresses it actually supports on the + device." + + OBJECT tunnelIfLocalInetAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfRemoteInetAddress + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelIfEncapsLimit + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT tunnelInetConfigStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and active is the only + status that needs to be supported." + + OBJECT tunnelInetConfigStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + ::= { tunnelMIBCompliances 3 } + +-- units of conformance + +tunnelMIBBasicGroup OBJECT-GROUP + OBJECTS { tunnelIfLocalAddress, tunnelIfRemoteAddress, + tunnelIfEncapsMethod, tunnelIfHopLimit, tunnelIfTOS, + tunnelIfSecurity, tunnelConfigIfIndex, tunnelConfigStatus } + STATUS deprecated + DESCRIPTION + "A collection of objects to support basic management + + + + of IPv4 Tunnels. Since this group cannot support + IPv6, it is deprecated in favor of + tunnelMIBInetGroup." + ::= { tunnelMIBGroups 1 } + +tunnelMIBInetGroup OBJECT-GROUP + OBJECTS { tunnelIfAddressType, tunnelIfLocalInetAddress, + tunnelIfRemoteInetAddress, tunnelIfEncapsMethod, + tunnelIfEncapsLimit, + tunnelIfHopLimit, tunnelIfTOS, tunnelIfFlowLabel, + tunnelIfSecurity, tunnelInetConfigIfIndex, + tunnelInetConfigStatus, tunnelInetConfigStorageType } + STATUS current + DESCRIPTION + "A collection of objects to support basic management + of IPv4 and IPv6 Tunnels." + ::= { tunnelMIBGroups 2 } + +END diff --git a/mibs/ietf/UDP-MIB b/mibs/ietf/UDP-MIB new file mode 100644 index 0000000..b947b81 --- /dev/null +++ b/mibs/ietf/UDP-MIB @@ -0,0 +1,579 @@ +UDP-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, Counter64, + Unsigned32, IpAddress, mib-2 FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + InetAddress, InetAddressType, + InetPortNumber FROM INET-ADDRESS-MIB; + +udpMIB MODULE-IDENTITY + LAST-UPDATED "200505200000Z" -- May 20, 2005 + ORGANIZATION + "IETF IPv6 Working Group + http://www.ietf.org/html.charters/ipv6-charter.html" + CONTACT-INFO + "Bill Fenner (editor) + + AT&T Labs -- Research + 75 Willow Rd. + Menlo Park, CA 94025 + + Phone: +1 650 330-7893 + Email: + + John Flick (editor) + + Hewlett-Packard Company + 8000 Foothills Blvd. M/S 5557 + Roseville, CA 95747 + + Phone: +1 916 785 4018 + Email: + + Send comments to " + + + + DESCRIPTION + "The MIB module for managing UDP implementations. + Copyright (C) The Internet Society (2005). This + version of this MIB module is part of RFC 4113; + see the RFC itself for full legal notices." + REVISION "200505200000Z" -- May 20, 2005 + DESCRIPTION + "IP version neutral revision, incorporating the + following revisions: + + - Added udpHCInDatagrams and udpHCOutDatagrams in order + to provide high-capacity counters for fast networks. + - Added text to the descriptions of all counter objects + to indicate how discontinuities are detected. + - Deprecated the IPv4-specific udpTable and replaced it + with the version neutral udpEndpointTable. This + table includes support for connected UDP endpoints + and support for identification of the operating + system process associated with a UDP endpoint. + - Deprecated the udpGroup and replaced it with object + groups representing the current set of objects. + - Deprecated udpMIBCompliance and replaced it with + udpMIBCompliance2, which includes the compliance + information for the new object groups. + + This version published as RFC 4113." + REVISION "199411010000Z" -- November 1, 1994 + DESCRIPTION + "Initial SMIv2 version, published as RFC 2013." + REVISION "199103310000Z" -- March 31, 1991 + DESCRIPTION + "The initial revision of this MIB module was part of + MIB-II, published as RFC 1213." + ::= { mib-2 50 } + +-- the UDP group + +udp OBJECT IDENTIFIER ::= { mib-2 7 } + +udpInDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP datagrams delivered to UDP + users. + + + + + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 1 } + +udpNoPorts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of received UDP datagrams for which + there was no application at the destination port. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 2 } + +udpInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received UDP datagrams that could not be + delivered for reasons other than the lack of an + application at the destination port. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 3 } + +udpOutDatagrams OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP datagrams sent from this + entity. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 4 } + + + +udpHCInDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP datagrams delivered to UDP + users, for devices that can receive more than 1 + million UDP datagrams per second. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 8 } + +udpHCOutDatagrams OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP datagrams sent from this + entity, for devices that can transmit more than 1 + million UDP datagrams per second. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by discontinuities in the + value of sysUpTime." + ::= { udp 9 } + +-- +-- { udp 6 } was defined as the ipv6UdpTable in RFC2454's +-- IPV6-UDP-MIB. This RFC obsoletes RFC 2454, so { udp 6 } is +-- obsoleted. +-- + +-- The UDP "Endpoint" table. + +udpEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about this entity's UDP + endpoints on which a local application is currently + accepting or sending datagrams. + + + + + + The address type in this table represents the address + type used for the communication, irrespective of the + higher-layer abstraction. For example, an application + using IPv6 'sockets' to communicate via IPv4 between + ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would use + InetAddressType ipv4(1). + + Unlike the udpTable in RFC 2013, this table also allows + the representation of an application that completely + specifies both local and remote addresses and ports. A + listening application is represented in three possible + ways: + + 1) An application that is willing to accept both IPv4 + and IPv6 datagrams is represented by a + udpEndpointLocalAddressType of unknown(0) and a + udpEndpointLocalAddress of ''h (a zero-length + octet-string). + + 2) An application that is willing to accept only IPv4 + or only IPv6 datagrams is represented by a + udpEndpointLocalAddressType of the appropriate + address type and a udpEndpointLocalAddress of + '0.0.0.0' or '::' respectively. + + 3) An application that is listening for datagrams only + for a specific IP address but from any remote + system is represented by a + udpEndpointLocalAddressType of the appropriate + address type, with udpEndpointLocalAddress + specifying the local address. + + In all cases where the remote is a wildcard, the + udpEndpointRemoteAddressType is unknown(0), the + udpEndpointRemoteAddress is ''h (a zero-length + octet-string), and the udpEndpointRemotePort is 0. + + If the operating system is demultiplexing UDP packets + by remote address and port, or if the application has + 'connected' the socket specifying a default remote + address and port, the udpEndpointRemote* values should + be used to reflect this." + ::= { udp 7 } + +udpEndpointEntry OBJECT-TYPE + SYNTAX UdpEndpointEntry + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "Information about a particular current UDP endpoint. + + Implementers need to be aware that if the total number + of elements (octets or sub-identifiers) in + udpEndpointLocalAddress and udpEndpointRemoteAddress + exceeds 111, then OIDs of column instances in this table + will have more than 128 sub-identifiers and cannot be + accessed using SNMPv1, SNMPv2c, or SNMPv3." + INDEX { udpEndpointLocalAddressType, + udpEndpointLocalAddress, + udpEndpointLocalPort, + udpEndpointRemoteAddressType, + udpEndpointRemoteAddress, + udpEndpointRemotePort, + udpEndpointInstance } + ::= { udpEndpointTable 1 } + +UdpEndpointEntry ::= SEQUENCE { + udpEndpointLocalAddressType InetAddressType, + udpEndpointLocalAddress InetAddress, + udpEndpointLocalPort InetPortNumber, + udpEndpointRemoteAddressType InetAddressType, + udpEndpointRemoteAddress InetAddress, + udpEndpointRemotePort InetPortNumber, + udpEndpointInstance Unsigned32, + udpEndpointProcess Unsigned32 + } + +udpEndpointLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of udpEndpointLocalAddress. Only + IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or + unknown(0) if datagrams for all local IP addresses are + accepted." + ::= { udpEndpointEntry 1 } + +udpEndpointLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IP address for this UDP endpoint. + + The value of this object can be represented in three + + + + possible ways, depending on the characteristics of the + listening application: + + 1. For an application that is willing to accept both + IPv4 and IPv6 datagrams, the value of this object + must be ''h (a zero-length octet-string), with + the value of the corresponding instance of the + udpEndpointLocalAddressType object being unknown(0). + + 2. For an application that is willing to accept only IPv4 + or only IPv6 datagrams, the value of this object + must be '0.0.0.0' or '::', respectively, while the + corresponding instance of the + udpEndpointLocalAddressType object represents the + appropriate address type. + + 3. For an application that is listening for data + destined only to a specific IP address, the value + of this object is the specific IP address for which + this node is receiving packets, with the + corresponding instance of the + udpEndpointLocalAddressType object representing the + appropriate address type. + + As this object is used in the index for the + udpEndpointTable, implementors of this table should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; else the information + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." + ::= { udpEndpointEntry 2 } + +udpEndpointLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this UDP endpoint." + ::= { udpEndpointEntry 3 } + +udpEndpointRemoteAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of udpEndpointRemoteAddress. Only + IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or + unknown(0) if datagrams for all remote IP addresses are + accepted. Also, note that some combinations of + + + + udpEndpointLocalAdressType and + udpEndpointRemoteAddressType are not supported. In + particular, if the value of this object is not + unknown(0), it is expected to always refer to the + same IP version as udpEndpointLocalAddressType." + ::= { udpEndpointEntry 4 } + +udpEndpointRemoteAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote IP address for this UDP endpoint. If + datagrams from any remote system are to be accepted, + this value is ''h (a zero-length octet-string). + Otherwise, it has the type described by + udpEndpointRemoteAddressType and is the address of the + remote system from which datagrams are to be accepted + (or to which all datagrams will be sent). + + As this object is used in the index for the + udpEndpointTable, implementors of this table should be + careful not to create entries that would result in OIDs + with more than 128 subidentifiers; else the information + cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3." + ::= { udpEndpointEntry 5 } + +udpEndpointRemotePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this UDP endpoint. If + datagrams from any remote system are to be accepted, + this value is zero." + ::= { udpEndpointEntry 6 } + +udpEndpointInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The instance of this tuple. This object is used to + distinguish among multiple processes 'connected' to + the same UDP endpoint. For example, on a system + implementing the BSD sockets interface, this would be + used to support the SO_REUSEADDR and SO_REUSEPORT + socket options." + + + + ::= { udpEndpointEntry 7 } + +udpEndpointProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The system's process ID for the process associated with + this endpoint, or zero if there is no such process. + This value is expected to be the same as + HOST-RESOURCES-MIB::hrSWRunIndex or SYSAPPL-MIB:: + sysApplElmtRunIndex for some row in the appropriate + tables." + ::= { udpEndpointEntry 8 } + +-- The deprecated UDP Listener table + +-- The deprecated UDP listener table only contains information +-- about this entity's IPv4 UDP end-points on which a local +-- application is currently accepting datagrams. It does not +-- provide more detailed connection information, or information +-- about IPv6 endpoints. + +udpTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table containing IPv4-specific UDP listener + information. It contains information about all local + IPv4 UDP end-points on which an application is + currently accepting datagrams. This table has been + deprecated in favor of the version neutral + udpEndpointTable." + ::= { udp 5 } + +udpEntry OBJECT-TYPE + SYNTAX UdpEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Information about a particular current UDP listener." + INDEX { udpLocalAddress, udpLocalPort } + ::= { udpTable 1 } + +UdpEntry ::= SEQUENCE { + udpLocalAddress IpAddress, + udpLocalPort Integer32 + + + +} + +udpLocalAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The local IP address for this UDP listener. In the + case of a UDP listener that is willing to accept + datagrams for any IP interface associated with the + node, the value 0.0.0.0 is used." + ::= { udpEntry 1 } + +udpLocalPort OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The local port number for this UDP listener." + ::= { udpEntry 2 } + +-- conformance information + +udpMIBConformance OBJECT IDENTIFIER ::= { udpMIB 2 } +udpMIBCompliances OBJECT IDENTIFIER ::= { udpMIBConformance 1 } +udpMIBGroups OBJECT IDENTIFIER ::= { udpMIBConformance 2 } + +-- compliance statements + +udpMIBCompliance2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems that implement + UDP. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, but + for which we have the following compliance + requirements, expressed in OBJECT clause form in this + description clause: + + -- OBJECT udpEndpointLocalAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3), + -- ipv6z(4) } + -- DESCRIPTION + -- Support for dns(5) is not required. + -- OBJECT udpEndpointLocalAddress + + + + -- SYNTAX InetAddress (SIZE(0|4|8|16|20)) + -- DESCRIPTION + -- Support is only required for zero-length + -- octet-strings, and for scoped and unscoped + -- IPv4 and IPv6 addresses. + -- OBJECT udpEndpointRemoteAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3), + -- ipv6z(4) } + -- DESCRIPTION + -- Support for dns(5) is not required. + -- OBJECT udpEndpointRemoteAddress + -- SYNTAX InetAddress (SIZE(0|4|8|16|20)) + -- DESCRIPTION + -- Support is only required for zero-length + -- octet-strings, and for scoped and unscoped + -- IPv4 and IPv6 addresses. + " + MODULE -- this module + MANDATORY-GROUPS { udpBaseGroup, udpEndpointGroup } + GROUP udpHCGroup + DESCRIPTION + "This group is mandatory for systems that + are capable of receiving or transmitting more than + 1 million UDP datagrams per second. 1 million + datagrams per second will cause a Counter32 to + wrap in just over an hour." + ::= { udpMIBCompliances 2 } + +udpMIBCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for IPv4-only systems that + implement UDP. For IP version independence, this + compliance statement is deprecated in favor of + udpMIBCompliance2. However, agents are still + encouraged to implement these objects in order to + interoperate with the deployed base of managers." + MODULE -- this module + MANDATORY-GROUPS { udpGroup } + ::= { udpMIBCompliances 1 } + +-- units of conformance + +udpGroup OBJECT-GROUP + OBJECTS { udpInDatagrams, udpNoPorts, + udpInErrors, udpOutDatagrams, + udpLocalAddress, udpLocalPort } + + + + STATUS deprecated + DESCRIPTION + "The deprecated group of objects providing for + management of UDP over IPv4." + ::= { udpMIBGroups 1 } + +udpBaseGroup OBJECT-GROUP + OBJECTS { udpInDatagrams, udpNoPorts, udpInErrors, + udpOutDatagrams } + STATUS current + DESCRIPTION + "The group of objects providing for counters of UDP + statistics." + ::= { udpMIBGroups 2 } + +udpHCGroup OBJECT-GROUP + OBJECTS { udpHCInDatagrams, udpHCOutDatagrams } + STATUS current + DESCRIPTION + "The group of objects providing for counters of high + speed UDP implementations." + ::= { udpMIBGroups 3 } + +udpEndpointGroup OBJECT-GROUP + OBJECTS { udpEndpointProcess } + STATUS current + DESCRIPTION + "The group of objects providing for the IP version + independent management of UDP 'endpoints'." + ::= { udpMIBGroups 4 } + +END diff --git a/mibs/ietf/UDPLITE-MIB b/mibs/ietf/UDPLITE-MIB new file mode 100644 index 0000000..2217e93 --- /dev/null +++ b/mibs/ietf/UDPLITE-MIB @@ -0,0 +1,548 @@ +UDPLITE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, + OBJECT-TYPE, + mib-2, Unsigned32, + Counter32, Counter64 FROM SNMPv2-SMI -- [RFC2578] + + TimeStamp FROM SNMPv2-TC -- [RFC2579] + + MODULE-COMPLIANCE, + OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] + + InetAddress, + InetAddressType, + InetPortNumber FROM INET-ADDRESS-MIB; -- [RFC4001] + +udpliteMIB MODULE-IDENTITY + LAST-UPDATED "200712180000Z" -- 18 December 2007 + ORGANIZATION "IETF TSV Working Group (TSVWG)" + CONTACT-INFO + "IETF TSV Working Group + http://www.ietf.org/html.charters/tsvwg-charter.html + Mailing List: tsvwg@ietf.org + + + + + Gerrit Renker, Godred Fairhurst + Electronics Research Group + School of Engineering, University of Aberdeen + Fraser Noble Building, Aberdeen AB24 3UE, UK" + DESCRIPTION + "The MIB module for managing UDP-Lite implementations. + Copyright (C) The IETF Trust (2008). This version of + this MIB module is part of RFC 5097; see the RFC + itself for full legal notices." + + REVISION "200712180000Z" -- 18 December 2007 + DESCRIPTION + "Initial SMIv2 revision, based on the format of the UDP + MIB module (RFC 4113) and published as RFC 5097." + ::= { mib-2 170 } + +udplite OBJECT IDENTIFIER ::= { udpliteMIB 1 } + +udpliteInDatagrams OBJECT-TYPE -- as in UDP-MIB + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP-Lite datagrams that were + delivered to UDP-Lite users. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 1 } + +udpliteInPartialCov OBJECT-TYPE -- new in UDP-Lite + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of UDP-Lite datagrams that were + delivered to UDP-Lite users (applications) and whose + checksum coverage was strictly less than the datagram + length. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 2 } + + + + + + +udpliteNoPorts OBJECT-TYPE -- as in UDP-MIB + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of received UDP-Lite datagrams for + which there was no listener at the destination port. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 3 } + +udpliteInErrors OBJECT-TYPE -- as in UDP-MIB + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received UDP-Lite datagrams that could not + be delivered for reasons other than the lack of an + application at the destination port. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 4 } + +udpliteInBadChecksum OBJECT-TYPE -- new in UDP-Lite + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of received UDP-Lite datagrams whose checksum + could not be validated. This includes illegal checksum + coverage values, as their use would lead to incorrect + checksums. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + REFERENCE "RFC 3828, section 3.1" + ::= { udplite 5 } + +udpliteOutDatagrams OBJECT-TYPE -- as in UDP-MIB + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "The total number of UDP-Lite datagrams sent from this + entity. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 6 } + +udpliteOutPartialCov OBJECT-TYPE -- new in UDP-Lite + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of udpliteOutDatagrams whose + checksum coverage was strictly less than the + datagram length. + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udplite 7 } + +udpliteEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF UdpLiteEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table containing information about this entity's + UDP-Lite endpoints on which a local application is + currently accepting or sending datagrams. + + The address type in this table represents the address + type used for the communication, irrespective of the + higher-layer abstraction. For example, an application + using IPv6 'sockets' to communicate via IPv4 between + ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would use + InetAddressType ipv4(1). + + Like the udpTable in RFC 4113, this table also allows + the representation of an application that completely + specifies both local and remote addresses and ports. A + listening application is represented in three possible + ways: + + 1) An application that is willing to accept both IPv4 + and IPv6 datagrams is represented by a + udpliteEndpointLocalAddressType of unknown(0) and a + udpliteEndpointLocalAddress of ''h (a zero-length + + + + octet-string). + + 2) An application that is willing to accept only IPv4 + or only IPv6 datagrams is represented by a + udpliteEndpointLocalAddressType of the appropriate + address type and a udpliteEndpointLocalAddress of + '0.0.0.0' or '::' respectively. + + 3) An application that is listening for datagrams only + for a specific IP address but from any remote + system is represented by a + udpliteEndpointLocalAddressType of the appropriate + address type, with udpliteEndpointLocalAddress + specifying the local address. + + In all cases where the remote address is a wildcard, + the udpliteEndpointRemoteAddressType is unknown(0), + the udpliteEndpointRemoteAddress is ''h (a zero-length + octet-string), and the udpliteEndpointRemotePort is 0. + + If the operating system is demultiplexing UDP-Lite + packets by remote address/port, or if the application + has 'connected' the socket specifying a default remote + address/port, the udpliteEndpointRemote* values should + be used to reflect this." + ::= { udplite 8 } + +udpliteEndpointEntry OBJECT-TYPE + SYNTAX UdpLiteEndpointEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a particular current UDP-Lite endpoint. + Implementers need to pay attention to the sizes of + udpliteEndpointLocalAddress/RemoteAddress, as Object + Identifiers (OIDs) of column instances in this table must + have no more than 128 sub-identifiers in order to remain + accessible with SNMPv1, SNMPv2c, and SNMPv3." + INDEX { udpliteEndpointLocalAddressType, + udpliteEndpointLocalAddress, + udpliteEndpointLocalPort, + udpliteEndpointRemoteAddressType, + udpliteEndpointRemoteAddress, + udpliteEndpointRemotePort, + udpliteEndpointInstance } + ::= { udpliteEndpointTable 1 } + +UdpLiteEndpointEntry ::= SEQUENCE { + + + + udpliteEndpointLocalAddressType InetAddressType, + udpliteEndpointLocalAddress InetAddress, + udpliteEndpointLocalPort InetPortNumber, + udpliteEndpointRemoteAddressType InetAddressType, + udpliteEndpointRemoteAddress InetAddress, + udpliteEndpointRemotePort InetPortNumber, + udpliteEndpointInstance Unsigned32, + udpliteEndpointProcess Unsigned32, + udpliteEndpointMinCoverage Unsigned32, + udpliteEndpointViolCoverage Counter32 +} + +udpliteEndpointLocalAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of udpliteEndpointLocalAddress. Only + IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or + unknown(0) if datagrams for all local IP addresses are + accepted." + ::= { udpliteEndpointEntry 1 } + +udpliteEndpointLocalAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local IP address for this UDP-Lite endpoint. + + The value of this object can be represented in three + possible ways, depending on the characteristics of the + listening application: + + 1. For an application that is willing to accept both + IPv4 and IPv6 datagrams, the value of this object + must be ''h (a zero-length octet-string), with + the value of the corresponding instance of the + EndpointLocalAddressType object being unknown(0). + + 2. For an application that is willing to accept only + IPv4 or only IPv6 datagrams, the value of this + object must be '0.0.0.0' or '::', respectively, + while the corresponding instance of the + EndpointLocalAddressType object represents the + appropriate address type. + + 3. For an application that is listening for data + + + + destined only to a specific IP address, the value + of this object is the specific IP address for + which this node is receiving packets, with the + corresponding instance of the + EndpointLocalAddressType object representing the + appropriate address type. + + As this object is used in the index for the + udpliteEndpointTable, implementors should be careful + not to create entries that would result in OIDs with + more than 128 sub-identifiers; this is because of SNMP + and SMI limitations." + ::= { udpliteEndpointEntry 2 } + +udpliteEndpointLocalPort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The local port number for this UDP-Lite endpoint." + ::= { udpliteEndpointEntry 3 } + +udpliteEndpointRemoteAddressType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type of udpliteEndpointRemoteAddress. Only + IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or + unknown(0) if datagrams for all remote IP addresses are + accepted. Also, note that some combinations of + udpliteEndpointLocalAdressType and + udpliteEndpointRemoteAddressType are not supported. In + particular, if the value of this object is not + unknown(0), it is expected to always refer to the + same IP version as udpliteEndpointLocalAddressType." + ::= { udpliteEndpointEntry 4 } + +udpliteEndpointRemoteAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote IP address for this UDP-Lite endpoint. If + datagrams from any remote system are to be accepted, + this value is ''h (a zero-length octet-string). + Otherwise, it has the type described by + udpliteEndpointRemoteAddressType and is the address of + + + + the remote system from which datagrams are to be + accepted (or to which all datagrams will be sent). + + As this object is used in the index for the + udpliteEndpointTable, implementors should be careful + not to create entries that would result in OIDs with + more than 128 sub-identifiers; this is because of SNMP + and SMI limitations." + ::= { udpliteEndpointEntry 5 } + +udpliteEndpointRemotePort OBJECT-TYPE + SYNTAX InetPortNumber + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The remote port number for this UDP-Lite endpoint. If + datagrams from any remote system are to be accepted, + this value is zero." + ::= { udpliteEndpointEntry 6 } + +udpliteEndpointInstance OBJECT-TYPE + SYNTAX Unsigned32 (1..'ffffffff'h) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The instance of this tuple. This object is used to + distinguish among multiple processes 'connected' to + the same UDP-Lite endpoint. For example, on a system + implementing the BSD sockets interface, this would be + used to support the SO_REUSEADDR and SO_REUSEPORT + socket options." + ::= { udpliteEndpointEntry 7 } + +udpliteEndpointProcess OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value corresponding to a piece of software + running on this endpoint. + + If this endpoint is associated with more than one piece + of software, the agent should choose one of these. As + long as the representative piece of software + is running and still associated with the endpoint, + subsequent reads will consistently return the same + value. The implementation may use any algorithm + satisfying these constraints (e.g., choosing the entity + + + + with the oldest start time). + + This identifier is platform-specific. Wherever possible, + it should use the system's native, unique identification + number as the value. + + If the SYSAPPL-MIB module is available, the value should + be the same as sysApplElmtRunIndex. If not available, an + alternative should be used (e.g., the hrSWRunIndex of the + HOST-RESOURCES-MIB module). + + If it is not possible to uniquely identify the pieces of + software associated with this endpoint, then the value + zero should be used. (Note that zero is otherwise a + valid value for sysApplElmtRunIndex.)" + ::= { udpliteEndpointEntry 8 } + +udpliteEndpointMinCoverage OBJECT-TYPE -- new in UDP-Lite + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum checksum coverage expected by this endpoint. + A value of 0 indicates that only fully covered datagrams + are accepted." + REFERENCE "RFC 3828, section 3.1" + ::= { udpliteEndpointEntry 9 } + +udpliteEndpointViolCoverage OBJECT-TYPE -- new / optional in UDP-Lite + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of datagrams received by this endpoint whose + checksum coverage violated the minimum coverage threshold + set for this connection (i.e., all valid datagrams whose + checksum coverage was strictly smaller than the minimum, + as defined in RFC 3828). + Discontinuities in the value of this counter can occur + at re-initialisation of the management system, and at + other times as indicated by the value of + udpliteStatsDiscontinuityTime." + ::= { udpliteEndpointEntry 10 } + + + + + + + + +udpliteStatsDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the most recent occasion at + which one or more of the UDP-Lite counters suffered a + discontinuity. + A value of zero indicates no such discontinuity has + occurred since the last re-initialisation of the local + management subsystem." + ::= { udplite 9 } + +-- Conformance Information + +udpliteMIBConformance OBJECT IDENTIFIER ::= { udpliteMIB 2 } + +udpliteMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for systems that implement + UDP-Lite. + + There are a number of INDEX objects that cannot be + represented in the form of OBJECT clauses in SMIv2, + but for which we have the following compliance + requirements, expressed in OBJECT clause form in this + description clause: + + -- OBJECT udpliteEndpointLocalAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3), + -- ipv6z(4) } + -- DESCRIPTION + -- Support for dns(16) is not required. + -- OBJECT udpliteEndpointLocalAddress + -- SYNTAX InetAddress (SIZE(0|4|8|16|20)) + -- DESCRIPTION + -- Support is only required for zero-length + -- octet-strings, and for scoped and unscoped + -- IPv4 and IPv6 addresses. + -- OBJECT udpliteEndpointRemoteAddressType + -- SYNTAX InetAddressType { unknown(0), ipv4(1), + -- ipv6(2), ipv4z(3), + -- ipv6z(4) } + -- DESCRIPTION + -- Support for dns(16) is not required. + -- OBJECT udpliteEndpointRemoteAddress + + + + -- SYNTAX InetAddress (SIZE(0|4|8|16|20)) + -- DESCRIPTION + -- Support is only required for zero-length + -- octet-strings, and for scoped and unscoped + -- IPv4 and IPv6 addresses. + " + MODULE -- this module + MANDATORY-GROUPS { udpliteBaseGroup, + udplitePartialCsumGroup, + udpliteEndpointGroup } + GROUP udpliteAppGroup + DESCRIPTION + "This group is optional and provides supplementary + information about the effectiveness of using minimum + checksum coverage thresholds on endpoints." + ::= { udpliteMIBConformance 1 } + +udpliteMIBGroups OBJECT IDENTIFIER ::= { udpliteMIBConformance 2 } + +udpliteBaseGroup OBJECT-GROUP -- as in UDP + OBJECTS { udpliteInDatagrams, udpliteNoPorts, udpliteInErrors, + udpliteOutDatagrams, udpliteStatsDiscontinuityTime } + STATUS current + DESCRIPTION + "The group of objects providing for counters of + basic UDP-like statistics." + ::= { udpliteMIBGroups 1 } + +udplitePartialCsumGroup OBJECT-GROUP -- specific to UDP-Lite + OBJECTS { udpliteInPartialCov, + udpliteInBadChecksum, + udpliteOutPartialCov } + STATUS current + DESCRIPTION + "The group of objects providing for counters of + transport layer statistics exclusive to UDP-Lite." + ::= { udpliteMIBGroups 2 } + +udpliteEndpointGroup OBJECT-GROUP + OBJECTS { udpliteEndpointProcess, udpliteEndpointMinCoverage } + STATUS current + DESCRIPTION + "The group of objects providing for the IP version + independent management of UDP-Lite 'endpoints'." + ::= { udpliteMIBGroups 3 } + + + + + + +udpliteAppGroup OBJECT-GROUP + OBJECTS { udpliteEndpointViolCoverage } + STATUS current + DESCRIPTION + "The group of objects that provide application-level + information for the configuration management of + UDP-Lite 'endpoints'." + ::= { udpliteMIBGroups 4 } + +END diff --git a/mibs/ietf/UPS-MIB b/mibs/ietf/UPS-MIB new file mode 100644 index 0000000..b3344fa --- /dev/null +++ b/mibs/ietf/UPS-MIB @@ -0,0 +1,1913 @@ +UPS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + OBJECT-IDENTITY, Counter32, Gauge32, Integer32, mib-2 + FROM SNMPv2-SMI + DisplayString, TimeStamp, TimeInterval, TestAndIncr, + AutonomousType, TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF; + + +upsMIB MODULE-IDENTITY + LAST-UPDATED "9402230000Z" + ORGANIZATION "IETF UPS MIB Working Group" + CONTACT-INFO + " Jeffrey D. Case + + Postal: SNMP Research, Incorporated + 3001 Kimberlin Heights Road + Knoxville, TN 37920 + US + + Tel: +1 615 573 1434 + Fax: +1 615 573 9197 + + E-mail: case@snmp.com" + DESCRIPTION + "The MIB module to describe Uninterruptible Power + Supplies." + ::= { mib-2 33 } + +PositiveInteger ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is a non-zero and non-negative value." + SYNTAX INTEGER (1..2147483647) + +NonNegativeInteger ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This data type is a non-negative value." + SYNTAX INTEGER (0..2147483647) +upsObjects OBJECT IDENTIFIER ::= { upsMIB 1 } + + +-- +-- The Device Identification group. +-- All objects in this group except for upsIdentName and +-- upsIdentAttachedDevices are set at device initialization +-- and remain static. +-- + +upsIdent OBJECT IDENTIFIER ::= { upsObjects 1 } + +upsIdentManufacturer OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the UPS manufacturer." + ::= { upsIdent 1 } + +upsIdentModel OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UPS Model designation." + ::= { upsIdent 2 } + +upsIdentUPSSoftwareVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UPS firmware/software version(s). This variable + may or may not have the same value as + upsIdentAgentSoftwareVersion in some implementations." + ::= { upsIdent 3 } + +upsIdentAgentSoftwareVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The UPS agent software version. This variable may or + may not have the same value as + upsIdentUPSSoftwareVersion in some implementations." + ::= { upsIdent 4 } + +upsIdentName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A string identifying the UPS. This object should be + set by the administrator." + ::= { upsIdent 5 } + +upsIdentAttachedDevices OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A string identifying the devices attached to the + output(s) of the UPS. This object should be set by + the administrator." + ::= { upsIdent 6 } + + +-- +-- Battery Group +-- + +upsBattery OBJECT IDENTIFIER ::= { upsObjects 2 } + +upsBatteryStatus OBJECT-TYPE + SYNTAX INTEGER { + unknown(1), + batteryNormal(2), + batteryLow(3), + batteryDepleted(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The indication of the capacity remaining in the UPS + system's batteries. A value of batteryNormal + indicates that the remaining run-time is greater than + upsConfigLowBattTime. A value of batteryLow indicates + that the remaining battery run-time is less than or + equal to upsConfigLowBattTime. A value of + batteryDepleted indicates that the UPS will be unable + to sustain the present load when and if the utility + power is lost (including the possibility that the + utility power is currently absent and the UPS is + unable to sustain the output)." + ::= { upsBattery 1 } + +upsSecondsOnBattery OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "If the unit is on battery power, the elapsed time + since the UPS last switched to battery power, or the + time since the network management subsystem was last + restarted, whichever is less. Zero shall be returned + if the unit is not on battery power." + ::= { upsBattery 2 } + +upsEstimatedMinutesRemaining OBJECT-TYPE + SYNTAX PositiveInteger + UNITS "minutes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the time to battery charge depletion + under the present load conditions if the utility power + is off and remains off, or if it were to be lost and + remain off." + ::= { upsBattery 3 } + +upsEstimatedChargeRemaining OBJECT-TYPE + SYNTAX INTEGER (0..100) + UNITS "percent" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the battery charge remaining expressed + as a percent of full charge." + ::= { upsBattery 4 } + +upsBatteryVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Volt DC" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the present battery voltage." + ::= { upsBattery 5 } + +upsBatteryCurrent OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.1 Amp DC" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present battery current." + ::= { upsBattery 6 } + +upsBatteryTemperature OBJECT-TYPE + SYNTAX Integer32 + UNITS "degrees Centigrade" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The ambient temperature at or near the UPS Battery + casing." + ::= { upsBattery 7 } + + +-- +-- Input Group +-- + +upsInput OBJECT IDENTIFIER ::= { upsObjects 3 } + +upsInputLineBads OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times the input entered an + out-of-tolerance condition as defined by the + manufacturer. This count is incremented by one each + time the input transitions from zero out-of-tolerance + lines to one or more input lines out-of-tolerance." + ::= { upsInput 1 } + + +upsInputNumLines OBJECT-TYPE + SYNTAX NonNegativeInteger + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of input lines utilized in this device. + This variable indicates the number of rows in the + input table." + ::= { upsInput 2 } + +upsInputTable OBJECT-TYPE + SYNTAX SEQUENCE OF UpsInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of input table entries. The number of entries + is given by the value of upsInputNumLines." + ::= { upsInput 3 } + +upsInputEntry OBJECT-TYPE + SYNTAX UpsInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information applicable to a + particular input line." + INDEX { upsInputLineIndex } + ::= { upsInputTable 1 } + +UpsInputEntry ::= SEQUENCE { + upsInputLineIndex PositiveInteger, + upsInputFrequency NonNegativeInteger, + upsInputVoltage NonNegativeInteger, + upsInputCurrent NonNegativeInteger, + upsInputTruePower NonNegativeInteger +} + +upsInputLineIndex OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The input line identifier." + ::= { upsInputEntry 1 } + +upsInputFrequency OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present input frequency." + ::= { upsInputEntry 2 } + +upsInputVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the present input voltage." + ::= { upsInputEntry 3 } + +upsInputCurrent OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 RMS Amp" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the present input current." + ::= { upsInputEntry 4 } + +upsInputTruePower OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the present input true power." + ::= { upsInputEntry 5 } + + +-- +-- The Output group. +-- + +upsOutput OBJECT IDENTIFIER ::= { upsObjects 4 } + +upsOutputSource OBJECT-TYPE + SYNTAX INTEGER { + other(1), + none(2), + normal(3), + bypass(4), + battery(5), + booster(6), + reducer(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present source of output power. The enumeration + none(2) indicates that there is no source of output + power (and therefore no output power), for example, + the system has opened the output breaker." + ::= { upsOutput 1 } + +upsOutputFrequency OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present output frequency." + ::= { upsOutput 2 } + +upsOutputNumLines OBJECT-TYPE + SYNTAX NonNegativeInteger + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of output lines utilized in this device. + This variable indicates the number of rows in the + output table." + ::= { upsOutput 3 } + +upsOutputTable OBJECT-TYPE + SYNTAX SEQUENCE OF UpsOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of output table entries. The number of + entries is given by the value of upsOutputNumLines." + ::= { upsOutput 4 } + +upsOutputEntry OBJECT-TYPE + SYNTAX UpsOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information applicable to a + particular output line." + INDEX { upsOutputLineIndex } + ::= { upsOutputTable 1 } + +UpsOutputEntry ::= SEQUENCE { + upsOutputLineIndex PositiveInteger, + upsOutputVoltage NonNegativeInteger, + upsOutputCurrent NonNegativeInteger, + upsOutputPower NonNegativeInteger, + upsOutputPercentLoad INTEGER +} + +upsOutputLineIndex OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The output line identifier." + ::= { upsOutputEntry 1 } + +upsOutputVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present output voltage." + ::= { upsOutputEntry 2 } + +upsOutputCurrent OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 RMS Amp" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present output current." + ::= { upsOutputEntry 3 } + +upsOutputPower OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present output true power." + ::= { upsOutputEntry 4 } + +upsOutputPercentLoad OBJECT-TYPE + SYNTAX INTEGER (0..200) + UNITS "percent" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The percentage of the UPS power capacity presently + being used on this output line, i.e., the greater of + the percent load of true power capacity and the + percent load of VA." + ::= { upsOutputEntry 5 } + +-- +-- The Bypass group. +-- + +upsBypass OBJECT IDENTIFIER ::= { upsObjects 5 } + +upsBypassFrequency OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present bypass frequency." + ::= { upsBypass 1 } + +upsBypassNumLines OBJECT-TYPE + SYNTAX NonNegativeInteger + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of bypass lines utilized in this device. + This entry indicates the number of rows in the bypass + table." + ::= { upsBypass 2 } + +upsBypassTable OBJECT-TYPE + SYNTAX SEQUENCE OF UpsBypassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of bypass table entries. The number of + entries is given by the value of upsBypassNumLines." + ::= { upsBypass 3 } + +upsBypassEntry OBJECT-TYPE + SYNTAX UpsBypassEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information applicable to a + particular bypass input." + INDEX { upsBypassLineIndex } + ::= { upsBypassTable 1 } + +UpsBypassEntry ::= SEQUENCE { + upsBypassLineIndex PositiveInteger, + upsBypassVoltage NonNegativeInteger, + upsBypassCurrent NonNegativeInteger, + upsBypassPower NonNegativeInteger +} + +upsBypassLineIndex OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The bypass line identifier." + ::= { upsBypassEntry 1 } + +upsBypassVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present bypass voltage." + ::= { upsBypassEntry 2 } + +upsBypassCurrent OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 RMS Amp" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present bypass current." + ::= { upsBypassEntry 3 } + +upsBypassPower OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present true power conveyed by the bypass." + ::= { upsBypassEntry 4 } + + +-- +-- The Alarm group. +-- + +upsAlarm OBJECT IDENTIFIER ::= { upsObjects 6 } + +upsAlarmsPresent OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The present number of active alarm conditions." + ::= { upsAlarm 1 } + +upsAlarmTable OBJECT-TYPE + SYNTAX SEQUENCE OF UpsAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of alarm table entries. The table contains + zero, one, or many rows at any moment, depending upon + the number of alarm conditions in effect. The table + is initially empty at agent startup. The agent + creates a row in the table each time a condition is + detected and deletes that row when that condition no + longer pertains. The agent creates the first row with + upsAlarmId equal to 1, and increments the value of + upsAlarmId each time a new row is created, wrapping to + the first free value greater than or equal to 1 when + the maximum value of upsAlarmId would otherwise be + exceeded. Consequently, after multiple operations, + the table may become sparse, e.g., containing entries + for rows 95, 100, 101, and 203 and the entries should + not be assumed to be in chronological order because + upsAlarmId might have wrapped. + + Alarms are named by an AutonomousType (OBJECT + IDENTIFIER), upsAlarmDescr, to allow a single table to + reflect well known alarms plus alarms defined by a + particular implementation, i.e., as documented in the + private enterprise MIB definition for the device. No + two rows will have the same value of upsAlarmDescr, + since alarms define conditions. In order to meet this + requirement, care should be taken in the definition of + alarm conditions to insure that a system cannot enter + the same condition multiple times simultaneously. + + The number of rows in the table at any given time is + reflected by the value of upsAlarmsPresent." + ::= { upsAlarm 2 } + +upsAlarmEntry OBJECT-TYPE + SYNTAX UpsAlarmEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing information applicable to a + particular alarm." + INDEX { upsAlarmId } + ::= { upsAlarmTable 1 } + +UpsAlarmEntry ::= SEQUENCE { + upsAlarmId PositiveInteger, + upsAlarmDescr AutonomousType, + upsAlarmTime TimeStamp +} + +upsAlarmId OBJECT-TYPE + SYNTAX PositiveInteger + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for an alarm condition. This + value must remain constant." + ::= { upsAlarmEntry 1 } + +upsAlarmDescr OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A reference to an alarm description object. The + object referenced should not be accessible, but rather + be used to provide a unique description of the alarm + condition." + ::= { upsAlarmEntry 2 } + +upsAlarmTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime when the alarm condition was + detected. If the alarm condition was detected at the + time of agent startup and presumably existed before + agent startup, the value of upsAlarmTime shall equal + 0." + ::= { upsAlarmEntry 3 } + + +-- +-- Well known alarm conditions. +-- + +upsWellKnownAlarms OBJECT IDENTIFIER ::= { upsAlarm 3 } + +upsAlarmBatteryBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "One or more batteries have been determined to require + replacement." + ::= { upsWellKnownAlarms 1 } + +upsAlarmOnBattery OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS is drawing power from the batteries." + ::= { upsWellKnownAlarms 2 } + +upsAlarmLowBattery OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The remaining battery run-time is less than or equal + to upsConfigLowBattTime." + ::= { upsWellKnownAlarms 3 } + + +upsAlarmDepletedBattery OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS will be unable to sustain the present load + when and if the utility power is lost." + ::= { upsWellKnownAlarms 4 } + +upsAlarmTempBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A temperature is out of tolerance." + ::= { upsWellKnownAlarms 5 } + +upsAlarmInputBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "An input condition is out of tolerance." + ::= { upsWellKnownAlarms 6 } + +upsAlarmOutputBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "An output condition (other than OutputOverload) is + out of tolerance." + ::= { upsWellKnownAlarms 7 } + +upsAlarmOutputOverload OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The output load exceeds the UPS output capacity." + ::= { upsWellKnownAlarms 8 } + +upsAlarmOnBypass OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Bypass is presently engaged on the UPS." + ::= { upsWellKnownAlarms 9 } + +upsAlarmBypassBad OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The Bypass is out of tolerance." + ::= { upsWellKnownAlarms 10 } + +upsAlarmOutputOffAsRequested OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS has shutdown as requested, i.e., the output + is off." + ::= { upsWellKnownAlarms 11 } + +upsAlarmUpsOffAsRequested OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The entire UPS has shutdown as commanded." + ::= { upsWellKnownAlarms 12 } + +upsAlarmChargerFailed OBJECT-IDENTITY + STATUS current + DESCRIPTION + "An uncorrected problem has been detected within the + UPS charger subsystem." + ::= { upsWellKnownAlarms 13 } + +upsAlarmUpsOutputOff OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The output of the UPS is in the off state." + ::= { upsWellKnownAlarms 14 } + +upsAlarmUpsSystemOff OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS system is in the off state." + ::= { upsWellKnownAlarms 15 } + +upsAlarmFanFailure OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The failure of one or more fans in the UPS has been + detected." + ::= { upsWellKnownAlarms 16 } + +upsAlarmFuseFailure OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The failure of one or more fuses has been detected." + ::= { upsWellKnownAlarms 17 } + +upsAlarmGeneralFault OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A general fault in the UPS has been detected." + ::= { upsWellKnownAlarms 18 } + +upsAlarmDiagnosticTestFailed OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The result of the last diagnostic test indicates a + failure." + ::= { upsWellKnownAlarms 19 } + +upsAlarmCommunicationsLost OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A problem has been encountered in the communications + between the agent and the UPS." + ::= { upsWellKnownAlarms 20 } + +upsAlarmAwaitingPower OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS output is off and the UPS is awaiting the + return of input power." + ::= { upsWellKnownAlarms 21 } + +upsAlarmShutdownPending OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A upsShutdownAfterDelay countdown is underway." + ::= { upsWellKnownAlarms 22 } + +upsAlarmShutdownImminent OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The UPS will turn off power to the load in less than + 5 seconds; this may be either a timed shutdown or a + low battery shutdown." + ::= { upsWellKnownAlarms 23 } + +upsAlarmTestInProgress OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A test is in progress, as initiated and indicated by + the Test Group. Tests initiated via other + implementation-specific mechanisms can indicate the + presence of the testing in the alarm table, if + desired, via a OBJECT-IDENTITY macro in the MIB + document specific to that implementation and are + outside the scope of this OBJECT-IDENTITY." + ::= { upsWellKnownAlarms 24 } + + +-- +-- The Test Group +-- + +upsTest OBJECT IDENTIFIER ::= { upsObjects 7 } + +upsTestId OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The test is named by an OBJECT IDENTIFIER which + allows a standard mechanism for the initiation of + tests, including the well known tests identified in + this document as well as those introduced by a + particular implementation, i.e., as documented in the + private enterprise MIB definition for the device. + + Setting this variable initiates the named test. Sets + to this variable require the presence of + upsTestSpinLock in the same SNMP message. + + The set request will be rejected with an appropriate + error message if the requested test cannot be + performed, including attempts to start a test when + another test is already in progress. The status of + the current or last test is maintained in + upsTestResultsSummary. Tests in progress may be + aborted by setting the upsTestId variable to + upsTestAbortTestInProgress. + + Read operations return the value of the name of the + test in progress if a test is in progress or the name + of the last test performed if no test is in progress, + unless no test has been run, in which case the well + known value upsTestNoTestsInitiated is returned." + ::= { upsTest 1 } + +-- see [6] for more information on the semantics of objects with +-- syntax of TestAndIncr + +upsTestSpinLock OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A spin lock on the test subsystem. The spinlock is + used as follows. + + Before starting a test, a manager-station should make + sure that a test is not in progress as follows: + + try_again: + get (upsTestSpinLock) + while (upsTestResultsSummary == inProgress) { + /* loop while a test is running for another + manager */ + short delay + get (upsTestSpinLock) + } + lock_value = upsTestSpinLock + /* no test in progress, start the test */ + set (upsTestSpinLock = lock_value, upsTestId = + requested_test) + if (error_index == 1) { /* (upsTestSpinLock + failed) */ + /* if problem is not access control, then + some other manager slipped in ahead of us + */ + goto try_again + } + if (error_index == 2) { /* (upsTestId) */ + /* cannot perform the test */ + give up + } + /* test started ok */ + /* wait for test completion by polling + upsTestResultsSummary */ + get (upsTestSpinLock, upsTestResultsSummary, + upsTestResultsDetail) + while (upsTestResultsSummary == inProgress) { + short delay + get (upsTestSpinLock, upsTestResultsSummary, + upsTestResultsDetail) + } + /* when test completes, retrieve any additional + test results */ + /* if upsTestSpinLock == lock_value + 1, then + these are our test */ + /* results (as opposed to another manager's */ + The initial value of upsTestSpinLock at agent + initialization shall + be 1." + ::= { upsTest 2 } + +upsTestResultsSummary OBJECT-TYPE + SYNTAX INTEGER { + donePass(1), + doneWarning(2), + doneError(3), + aborted(4), + inProgress(5), + noTestsInitiated(6) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The results of the current or last UPS diagnostics + test performed. The values for donePass(1), + doneWarning(2), and doneError(3) indicate that the + test completed either successfully, with a warning, or + with an error, respectively. The value aborted(4) is + returned for tests which are aborted by setting the + value of upsTestId to upsTestAbortTestInProgress. + Tests which have not yet concluded are indicated by + inProgress(5). The value noTestsInitiated(6) + indicates that no previous test results are available, + such as is the case when no tests have been run since + the last reinitialization of the network management + subsystem and the system has no provision for non- + volatile storage of test results." + ::= { upsTest 3 } + +upsTestResultsDetail OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Additional information about upsTestResultsSummary. + If no additional information available, a zero length + string is returned." + ::= { upsTest 4 } + +upsTestStartTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the test in + progress was initiated, or, if no test is in progress, + the time the previous test was initiated. If the + value of upsTestResultsSummary is noTestsInitiated(6), + upsTestStartTime has the value 0." + ::= { upsTest 5 } + +upsTestElapsedTime OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time, in TimeTicks, since the test in + progress was initiated, or, if no test is in progress, + the previous test took to complete. If the value of + upsTestResultsSummary is noTestsInitiated(6), + upsTestElapsedTime has the value 0." + ::= { upsTest 6 } + +-- +-- Well known tests. +-- + +upsWellKnownTests OBJECT IDENTIFIER ::= { upsTest 7 } + + +upsTestNoTestsInitiated OBJECT-IDENTITY + STATUS current + DESCRIPTION + "No tests have been initiated and no test is in + progress." + ::= { upsWellKnownTests 1 } + +upsTestAbortTestInProgress OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The test in progress is to be aborted / the test in + progress was aborted." + ::= { upsWellKnownTests 2 } + +upsTestGeneralSystemsTest OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The manufacturer's standard test of UPS device + systems." + ::= { upsWellKnownTests 3 } + +upsTestQuickBatteryTest OBJECT-IDENTITY + STATUS current + DESCRIPTION + "A test that is sufficient to determine if the battery + needs replacement." + ::= { upsWellKnownTests 4 } + +upsTestDeepBatteryCalibration OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The system is placed on battery to a discharge level, + set by the manufacturer, sufficient to determine + battery replacement and battery run-time with a high + degree of confidence. WARNING: this test will leave + the battery in a low charge state and will require + time for recharging to a level sufficient to provide + normal battery duration for the protected load." + ::= { upsWellKnownTests 5 } + + +-- +-- The Control group. +-- + +upsControl OBJECT IDENTIFIER ::= { upsObjects 8 } + +upsShutdownType OBJECT-TYPE + SYNTAX INTEGER { + output(1), + system(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object determines the nature of the action to be + taken at the time when the countdown of the + upsShutdownAfterDelay and upsRebootWithDuration + objects reaches zero. + + Setting this object to output(1) indicates that + shutdown requests should cause only the output of the + UPS to turn off. Setting this object to system(2) + indicates that shutdown requests will cause the entire + UPS system to turn off." + ::= { upsControl 1 } + +upsShutdownAfterDelay OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object will shutdown (i.e., turn off) + either the UPS output or the UPS system (as determined + by the value of upsShutdownType at the time of + shutdown) after the indicated number of seconds, or + less if the UPS batteries become depleted. Setting + this object to 0 will cause the shutdown to occur + immediately. Setting this object to -1 will abort the + countdown. If the system is already in the desired + state at the time the countdown reaches 0, then + nothing will happen. That is, there is no additional + action at that time if upsShutdownType = system and + the system is already off. Similarly, there is no + additional action at that time if upsShutdownType = + output and the output is already off. When read, + upsShutdownAfterDelay will return the number of + seconds remaining until shutdown, or -1 if no shutdown + countdown is in effect. On some systems, if the agent + is restarted while a shutdown countdown is in effect, + the countdown may be aborted. Sets to this object + override any upsShutdownAfterDelay already in effect." + ::= { upsControl 2 } + +upsStartupAfterDelay OBJECT-TYPE + SYNTAX INTEGER (-1..2147483647) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object will start the output after the + indicated number of seconds, including starting the + UPS, if necessary. Setting this object to 0 will + cause the startup to occur immediately. Setting this + object to -1 will abort the countdown. If the output + is already on at the time the countdown reaches 0, + then nothing will happen. Sets to this object + override the effect of any upsStartupAfterDelay + countdown or upsRebootWithDuration countdown in + progress. When read, upsStartupAfterDelay will return + the number of seconds until startup, or -1 if no + startup countdown is in effect. If the countdown + expires during a utility failure, the startup shall + not occur until the utility power is restored. On + some systems, if the agent is restarted while a + startup countdown is in effect, the countdown is + aborted." + ::= { upsControl 3 } + +upsRebootWithDuration OBJECT-TYPE + SYNTAX INTEGER (-1..300) + UNITS "seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object will immediately shutdown (i.e., + turn off) either the UPS output or the UPS system (as + determined by the value of upsShutdownType at the time + of shutdown) for a period equal to the indicated + number of seconds, after which time the output will be + started, including starting the UPS, if necessary. If + the number of seconds required to perform the request + is greater than the requested duration, then the + requested shutdown and startup cycle shall be + performed in the minimum time possible, but in no case + shall this require more than the requested duration + plus 60 seconds. When read, upsRebootWithDuration + shall return the number of seconds remaining in the + countdown, or -1 if no countdown is in progress. If + the startup should occur during a utility failure, the + startup shall not occur until the utility power is + restored." + ::= { upsControl 4 } + +upsAutoRestart OBJECT-TYPE + SYNTAX INTEGER { + on(1), + off(2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to 'on' will cause the UPS system + to restart after a shutdown if the shutdown occurred + during a power loss as a result of either a + upsShutdownAfterDelay or an internal battery depleted + condition. Setting this object to 'off' will prevent + the UPS system from restarting after a shutdown until + an operator manually or remotely explicitly restarts + it. If the UPS is in a startup or reboot countdown, + then the UPS will not restart until that delay has + been satisfied." + ::= { upsControl 5 } + + +-- +-- The Configuration group. +-- + +upsConfig OBJECT IDENTIFIER ::= { upsObjects 9 } + +upsConfigInputVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The magnitude of the nominal input voltage. On those + systems which support read-write access to this + object, if there is an attempt to set this variable to + a value that is not supported, the request must be + rejected and the agent shall respond with an + appropriate error message, i.e., badValue for SNMPv1, + or inconsistentValue for SNMPv2." + ::= { upsConfig 1 } + +upsConfigInputFreq OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The nominal input frequency. On those systems which + support read-write access to this object, if there is + an attempt to set this variable to a value that is not + supported, the request must be rejected and the agent + shall respond with an appropriate error message, i.e., + badValue for SNMPv1, or inconsistentValue for SNMPv2." + ::= { upsConfig 2 } + +upsConfigOutputVoltage OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The magnitude of the nominal output voltage. On + those systems which support read-write access to this + object, if there is an attempt to set this variable to + a value that is not supported, the request must be + rejected and the agent shall respond with an + appropriate error message, i.e., badValue for SNMPv1, + or inconsistentValue for SNMPv2." + ::= { upsConfig 3 } + +upsConfigOutputFreq OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "0.1 Hertz" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The nominal output frequency. On those systems which + support read-write access to this object, if there is + an attempt to set this variable to a value that is not + supported, the request must be rejected and the agent + shall respond with an appropriate error message, i.e., + badValue for SNMPv1, or inconsistentValue for SNMPv2." + ::= { upsConfig 4 } + +upsConfigOutputVA OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Volt-Amps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the nominal Volt-Amp rating." + ::= { upsConfig 5 } + +upsConfigOutputPower OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "Watts" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The magnitude of the nominal true power rating." + ::= { upsConfig 6 } + +upsConfigLowBattTime OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "minutes" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of upsEstimatedMinutesRemaining at which a + lowBattery condition is declared. For agents which + support only discrete (discontinuous) values, then the + agent shall round up to the next supported value. If + the requested value is larger than the largest + supported value, then the largest supported value + shall be selected." + ::= { upsConfig 7 } + +upsConfigAudibleStatus OBJECT-TYPE + SYNTAX INTEGER { + disabled(1), + enabled(2), + muted(3) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The requested state of the audible alarm. When in + the disabled state, the audible alarm should never + sound. The enabled state is self-describing. Setting + this object to muted(3) when the audible alarm is + sounding shall temporarily silence the alarm. It will + remain muted until it would normally stop sounding and + the value returned for read operations during this + period shall equal muted(3). At the end of this + period, the value shall revert to enabled(2). Writes + of the value muted(3) when the audible alarm is not + sounding shall be accepted but otherwise shall have no + effect." + ::= { upsConfig 8 } + +upsConfigLowVoltageTransferPoint OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum input line voltage allowed before the UPS + system transfers to battery backup." + ::= { upsConfig 9 } + +upsConfigHighVoltageTransferPoint OBJECT-TYPE + SYNTAX NonNegativeInteger + UNITS "RMS Volts" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum line voltage allowed before the UPS + system transfers to battery backup." + ::= { upsConfig 10 } + + +-- +-- notifications, i.e., traps +-- +upsTraps OBJECT IDENTIFIER ::= { upsMIB 2 } + +-- This section defines the well-known notifications sent by +-- UPS agents. +-- Care must be taken to insure that no particular notification +-- is sent to a single receiving entity more often than once +-- every five seconds. + +upsTrapOnBattery NOTIFICATION-TYPE + OBJECTS { upsEstimatedMinutesRemaining, upsSecondsOnBattery, + upsConfigLowBattTime } + STATUS current + DESCRIPTION + "The UPS is operating on battery power. This trap is + persistent and is resent at one minute intervals until + the UPS either turns off or is no longer running on + battery." + ::= { upsTraps 1 } + +upsTrapTestCompleted NOTIFICATION-TYPE + OBJECTS { upsTestId, upsTestSpinLock, + upsTestResultsSummary, upsTestResultsDetail, + upsTestStartTime, upsTestElapsedTime } + STATUS current + DESCRIPTION + "This trap is sent upon completion of a UPS diagnostic + test." + ::= { upsTraps 2 } + +upsTrapAlarmEntryAdded NOTIFICATION-TYPE + OBJECTS { upsAlarmId, upsAlarmDescr } + STATUS current + DESCRIPTION + "This trap is sent each time an alarm is inserted into + to the alarm table. It is sent on the insertion of + all alarms except for upsAlarmOnBattery and + upsAlarmTestInProgress." + ::= { upsTraps 3 } + +upsTrapAlarmEntryRemoved NOTIFICATION-TYPE + OBJECTS { upsAlarmId, upsAlarmDescr } + STATUS current + DESCRIPTION + "This trap is sent each time an alarm is removed from + the alarm table. It is sent on the removal of all + alarms except for upsAlarmTestInProgress." + ::= { upsTraps 4 } + + +-- +-- conformance information +-- +upsConformance OBJECT IDENTIFIER ::= { upsMIB 3 } + +upsCompliances OBJECT IDENTIFIER ::= { upsConformance 1 } + + +-- +-- compliance statements +-- + +upsSubsetCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + "The compliance statement for UPSs that only support + the two-contact communication protocol." + MODULE -- this module + MANDATORY-GROUPS { upsSubsetIdentGroup, + upsSubsetBatteryGroup, upsSubsetInputGroup, + upsSubsetOutputGroup, upsSubsetAlarmGroup, + upsSubsetControlGroup, upsSubsetConfigGroup } + + OBJECT upsBatteryStatus + SYNTAX INTEGER { + batteryNormal(2), + batteryLow(3) + } + DESCRIPTION + "Support of the values unknown(1) and + batteryDepleted(4) is not required." + + OBJECT upsAlarmDescr + DESCRIPTION + "Support of all `well known' alarm types is not + required. The well known alarm types which must be + supported are: upsAlarmOnBattery, upsAlarmLowBattery, + upsAlarmInputBad, upsAlarmUpsOutputOff, + upsAlarmUpsSystemOff, and upsAlarmTestInProgress." + + OBJECT upsOutputSource + SYNTAX INTEGER { + normal(2), + battery(4) + } + DESCRIPTION + "Support of the values other(1), none(2), bypass(4), + booster(6) and reducer(7) is not required." + + OBJECT upsShutdownType + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one shutdown type." + + OBJECT upsAutoRestart + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one restart type." + + OBJECT upsConfigInputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigInputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + ::= { upsCompliances 1 } + +upsBasicCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + + "The compliance statement for UPSs that support + full-featured functions, such as control." + MODULE -- this module + MANDATORY-GROUPS { upsBasicIdentGroup, + upsBasicBatteryGroup, upsBasicInputGroup, + upsBasicOutputGroup, upsBasicAlarmGroup, + upsBasicTestGroup, upsBasicControlGroup, + upsBasicConfigGroup } + + + OBJECT upsAlarmDescr + DESCRIPTION + "Support of all `well known' alarm types is not + required. The well known alarm types which must be + supported are: upsAlarmOnBattery, upsAlarmLowBattery, + upsAlarmDepletedBattery, upsAlarmTempBad, + upsAlarmInputBad, upsAlarmOutputOverload, + upsAlarmOnBypass, upsAlarmBypassBad, + upsAlarmOutputOffAsRequested, + upsAlarmUpsOffAsRequested, upsAlarmUpsOutputOff, + upsAlarmUpsSystemOff, upsAlarmGeneralFault, + upsAlarmDiagnosticTestFailed, + upsAlarmCommunicationsLost, upsAlarmShutdownPending, + and upsAlarmTestInProgress." + + OBJECT upsTestId + DESCRIPTION + "Support of all `well known' test types is not + required. If no tests are supported, then the only + well known test type which must be supported is + upsTestNoTestsInitiated." + + OBJECT upsOutputSource + SYNTAX INTEGER { + normal(2), + battery(4) + } + DESCRIPTION + "Support of the values other(1), none(2), bypass(4), + booster(6) and reducer(7) is not required." + + GROUP upsBasicBypassGroup + DESCRIPTION + "The upsBasicBypassGroup is only required for UPSs + that have a Bypass present." + OBJECT upsShutdownType + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one shutdown type." + + OBJECT upsAutoRestart + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one restart type." + + OBJECT upsConfigInputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigInputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigLowBattTime + DESCRIPTION + "Implementation of all possible values may be onerous + for some systems. Consequently, not all possible + values must be supported. However, at least two + different manufacturer-selected values must be + supported." + + ::= { upsCompliances 2 } + +upsFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for UPSs that support + advanced full-featured functions." + MODULE -- this module + MANDATORY-GROUPS { upsFullIdentGroup, upsFullBatteryGroup, + upsFullInputGroup, upsFullOutputGroup, + upsFullAlarmGroup, upsFullTestGroup, + upsFullControlGroup, upsFullConfigGroup } + + OBJECT upsAlarmDescr + DESCRIPTION + "Support of all `well known' alarm types is not + required. The well known alarm types which must be + supported are: upsAlarmBatteryBad, upsAlarmOnBattery, + upsAlarmLowBattery, upsAlarmDepletedBattery, + upsAlarmTempBad, upsAlarmInputBad, upsAlarmOnBypass, + upsAlarmBypassBad, upsAlarmOutputOffAsRequested, + upsAlarmUpsOffAsRequested, upsAlarmUpsOutputOff, + upsAlarmUpsSystemOff, upsAlarmGeneralFault, + upsAlarmDiagnosticTestFailed, + upsAlarmCommunicationsLost, upsAlarmShutdownPending, + and upsAlarmTestInProgress." + + OBJECT upsTestId + DESCRIPTION + "Support of all `well known' test types is not + required. The well known test types which must be + supported are: upsTestNoTestsInitiated, + upsTestGeneralSystemsTest, and + upsTestQuickBatteryTest." + + OBJECT upsOutputSource + SYNTAX INTEGER { + normal(2), + battery(4) + } + DESCRIPTION + "Support of the values other(1), none(2), bypass(4), + booster(6) and reducer(7) is not required." + + GROUP upsFullBypassGroup + DESCRIPTION + "The upsFullBypassGroup is only required for UPSs that + have a Bypass present." + + OBJECT upsShutdownType + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one shutdown type." + + OBJECT upsAutoRestart + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required, i.e., compliant + systems need not support more than one restart type." + + OBJECT upsConfigInputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigInputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputVoltage + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigOutputFreq + MIN-ACCESS read-only + DESCRIPTION + "Read-write access is not required." + + OBJECT upsConfigLowBattTime + DESCRIPTION + "Implementation of all possible values may be onerous + for some systems. Consequently, not all possible + values must be supported. However, at least two + different manufacturer-selected values must be + supported." + + ::= { upsCompliances 3 } + + +-- +-- units of conformance +-- + +-- summary at a glance: + +-- subset basic adv +--upsIdentManufacturer x x x +--upsIdentModel x x x + +--upsIdentUPSSoftwareVersion x x +--upsIdentAgentSoftwareVersion x x x +--upsIdentName x x x +--upsIdentAttachedDevices x x +-- +--upsBatteryStatus x x x notes +--upsSecondsOnBattery x x x +--upsEstimatedMinutesRemaining x +--upsEstimatedChargeRemaining x +--upsBatteryVoltage +--upsBatteryCurrent +--upsBatteryTemperature +-- +--upsInputLineBads x x x +--upsInputNumLines x x +--upsInputFrequency x x +--upsInputVoltage x x +--upsInputCurrent +--upsInputTruePower +-- +--upsOutputSource x x x notes +--upsOutputFrequency x x +--upsOutputNumLines x x +--upsOutputVoltage x x +--upsOutputCurrent x +--upsOutputPower x +--upsOutputPercentLoad x +-- +-- +--upsBypassFrequency x x notes +--upsBypassNumLines x x +--upsBypassVoltage x x +--upsBypassCurrent +--upsBypassPower +-- +-- +--upsAlarmsPresent x x x +--upsAlarmDescr x x x notes +--upsAlarmTime x x x +-- +--upsTestId x x notes +--upsTestSpinLock x x +--upsTestResultsSummary x x +--upsTestResultsDetail x x +--upsTestStartTime x x +--upsTestElapsedTime x x +-- +--upsShutdownType x x x notes + +--upsShutdownAfterDelay x x x +--upsStartupAfterDelay x x +--upsRebootWithDuration x x +--upsAutoRestart x x x notes +-- +--upsConfigInputVoltage x x x notes +--upsConfigInputFreq x x x notes +--upsConfigOutputVoltage x x x notes +--upsConfigOutputFreq x x x notes +--upsConfigOutputVA x x x +--upsConfigOutputPower x x x +--upsConfigLowBattTime x x notes +--upsConfigAudibleStatus x x +--upsConfigLowVoltageTransferPoint +--upsConfigHighVoltageTransferPoint + + +-- units of conformance +upsGroups OBJECT IDENTIFIER ::= { upsConformance 2 } + +upsSubsetGroups OBJECT IDENTIFIER ::= { upsGroups 1 } + +upsSubsetIdentGroup OBJECT-GROUP + OBJECTS { upsIdentManufacturer, upsIdentModel, + upsIdentAgentSoftwareVersion, upsIdentName, + upsIdentAttachedDevices } + STATUS current + DESCRIPTION + "The upsSubsetIdentGroup defines objects which are + common across all UPSs which meet subset compliance. + Most devices which conform to the upsSubsetIdentGroup + will provide access to these objects via a proxy + agent. If the proxy agent is compatible with multiple + UPS types, configuration of the proxy agent will + require specifying some of these values, either + individually, or as a group (perhaps through a table + lookup mechanism based on the UPS model number)." + ::= { upsSubsetGroups 1 } + +upsSubsetBatteryGroup OBJECT-GROUP + OBJECTS { upsBatteryStatus, upsSecondsOnBattery } + STATUS current + DESCRIPTION + "The upsSubsetBatteryGroup defines the objects that + are common to battery groups of two-contact UPSs." + ::= { upsSubsetGroups 2 } + +upsSubsetInputGroup OBJECT-GROUP + OBJECTS { upsInputLineBads } + STATUS current + DESCRIPTION + "The upsSubsetInputGroup defines the objects that are + common to the Input groups of two-contact UPSs." + ::= { upsSubsetGroups 3 } + +upsSubsetOutputGroup OBJECT-GROUP + OBJECTS { upsOutputSource } + STATUS current + DESCRIPTION + "The upsSubsetOutputGroup defines the objects that are + common to the Output groups of two-contact UPSs." + ::= { upsSubsetGroups 4 } + + +-- { upsSubsetGroups 5 } is reserved for +-- future use (upsSubsetBypassGroup) + +upsSubsetAlarmGroup OBJECT-GROUP + OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime } + STATUS current + DESCRIPTION + "The upsSubsetAlarmGroup defines the objects that are + common to the Alarm groups of two-contact UPSs." + ::= { upsSubsetGroups 6 } + +-- { upsSubsetGroups 7 } is reserved for +-- future use (upsSubsetTestGroup) + +upsSubsetControlGroup OBJECT-GROUP + OBJECTS { upsShutdownType, upsShutdownAfterDelay, + upsAutoRestart } + STATUS current + DESCRIPTION + "The upsSubsetControlGroup defines the objects that + are common to the Control groups of two-contact UPSs." + ::= { upsSubsetGroups 8 } + +upsSubsetConfigGroup OBJECT-GROUP + OBJECTS { upsConfigInputVoltage, upsConfigInputFreq, + upsConfigOutputVoltage, upsConfigOutputFreq, + upsConfigOutputVA, upsConfigOutputPower } + STATUS current + DESCRIPTION + "The upsSubsetConfigGroup defines the objects that are + common to the Config groups of two-contact UPSs." + ::= { upsSubsetGroups 9 } +upsBasicGroups OBJECT IDENTIFIER ::= { upsGroups 2 } + +upsBasicIdentGroup OBJECT-GROUP + OBJECTS { upsIdentManufacturer, upsIdentModel, + upsIdentUPSSoftwareVersion, + upsIdentAgentSoftwareVersion, upsIdentName } + STATUS current + DESCRIPTION + "The upsBasicIdentGroup defines objects which are + common to the Ident group of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 1 } + +upsBasicBatteryGroup OBJECT-GROUP + OBJECTS { upsBatteryStatus, upsSecondsOnBattery } + STATUS current + DESCRIPTION + "The upsBasicBatteryGroup defines the objects that are + common to the battery groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 2 } + +upsBasicInputGroup OBJECT-GROUP + OBJECTS { upsInputLineBads, upsInputNumLines, + upsInputFrequency, upsInputVoltage } + STATUS current + DESCRIPTION + "The upsBasicInputGroup defines the objects that are + common to the Input groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 3 } + +upsBasicOutputGroup OBJECT-GROUP + OBJECTS { upsOutputSource, upsOutputFrequency, + upsOutputNumLines, upsOutputVoltage } + STATUS current + DESCRIPTION + "The upsBasicOutputGroup defines the objects that are + common to the Output groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 4 } + +upsBasicBypassGroup OBJECT-GROUP + OBJECTS { upsBypassFrequency, upsBypassNumLines, + upsBypassVoltage } + STATUS current + DESCRIPTION + "The upsBasicBypassGroup defines the objects that are + common to the Bypass groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 5 } + +upsBasicAlarmGroup OBJECT-GROUP + OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime } + STATUS current + DESCRIPTION + + "The upsBasicAlarmGroup defines the objects that are + common to the Alarm groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 6 } + +upsBasicTestGroup OBJECT-GROUP + OBJECTS { upsTestId, upsTestSpinLock, + upsTestResultsSummary, upsTestResultsDetail, + upsTestStartTime, upsTestElapsedTime } + STATUS current + DESCRIPTION + "The upsBasicTestGroup defines the objects that are + common to the Test groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 7 } + +upsBasicControlGroup OBJECT-GROUP + OBJECTS { upsShutdownType, upsShutdownAfterDelay, + upsStartupAfterDelay, upsRebootWithDuration, + upsAutoRestart } + STATUS current + DESCRIPTION + "The upsBasicControlGroup defines the objects that are + common to the Control groups of compliant UPSs which + support basic functions." + ::= { upsBasicGroups 8 } + +upsBasicConfigGroup OBJECT-GROUP + OBJECTS { upsConfigInputVoltage, upsConfigInputFreq, + upsConfigOutputVoltage, upsConfigOutputFreq, + upsConfigOutputVA, upsConfigOutputPower, + upsConfigLowBattTime, upsConfigAudibleStatus } + STATUS current + DESCRIPTION + "The upsBasicConfigGroup defines the objects that are + common to the Config groups of UPSs which support + basic functions." + ::= { upsBasicGroups 9 } +upsFullGroups OBJECT IDENTIFIER ::= { upsGroups 3 } + +upsFullIdentGroup OBJECT-GROUP + OBJECTS { upsIdentManufacturer, upsIdentModel, + upsIdentUPSSoftwareVersion, + upsIdentAgentSoftwareVersion, upsIdentName, + upsIdentAttachedDevices } + STATUS current + DESCRIPTION + "The upsFullIdentGroup defines objects which are + common to the Ident group of fully compliant UPSs." + ::= { upsFullGroups 1 } + +upsFullBatteryGroup OBJECT-GROUP + OBJECTS { upsBatteryStatus, upsSecondsOnBattery, + upsEstimatedMinutesRemaining, + upsEstimatedChargeRemaining } + STATUS current + DESCRIPTION + "The upsFullBatteryGroup defines the objects that are + common to the battery groups of fully compliant UPSs." + ::= { upsFullGroups 2 } + +upsFullInputGroup OBJECT-GROUP + OBJECTS { upsInputLineBads, upsInputNumLines, + upsInputFrequency, upsInputVoltage } + STATUS current + DESCRIPTION + "The upsFullInputGroup defines the objects that are + common to the Input groups of fully compliant UPSs." + ::= { upsFullGroups 3 } + +upsFullOutputGroup OBJECT-GROUP + OBJECTS { upsOutputSource, upsOutputFrequency, + upsOutputNumLines, upsOutputVoltage, + upsOutputCurrent, upsOutputPower, + upsOutputPercentLoad } + STATUS current + DESCRIPTION + "The upsFullOutputGroup defines the objects that are + common to the Output groups of fully compliant UPSs." + ::= { upsFullGroups 4 } + +upsFullBypassGroup OBJECT-GROUP + OBJECTS { upsBypassFrequency, upsBypassNumLines, + upsBypassVoltage } + STATUS current + DESCRIPTION + "The upsFullBypassGroup defines the objects that are + common to the Bypass groups of fully compliant UPSs." + ::= { upsFullGroups 5 } + +upsFullAlarmGroup OBJECT-GROUP + OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime } + STATUS current + DESCRIPTION + + "The upsFullAlarmGroup defines the objects that are + common to the Alarm groups of fully compliant UPSs." + ::= { upsFullGroups 6 } + +upsFullTestGroup OBJECT-GROUP + OBJECTS { upsTestId, upsTestSpinLock, + upsTestResultsSummary, upsTestResultsDetail, + upsTestStartTime, upsTestElapsedTime } + STATUS current + DESCRIPTION + "The upsFullTestGroup defines the objects that are + common to the Test groups of fully compliant UPSs." + ::= { upsFullGroups 7 } + +upsFullControlGroup OBJECT-GROUP + OBJECTS { upsShutdownType, upsShutdownAfterDelay, + upsStartupAfterDelay, upsRebootWithDuration, + upsAutoRestart } + STATUS current + DESCRIPTION +"The upsFullControlGroup defines the objects that are +common to the Control groups of fully compliant UPSs." + ::= { upsFullGroups 8 } + +upsFullConfigGroup OBJECT-GROUP + OBJECTS { upsConfigInputVoltage, upsConfigInputFreq, + upsConfigOutputVoltage, upsConfigOutputFreq, + upsConfigOutputVA, upsConfigOutputPower, + upsConfigLowBattTime, upsConfigAudibleStatus } + STATUS current + DESCRIPTION + "The upsFullConfigGroup defines the objects that are + common to the Config groups of fully compliant UPSs." + ::= { upsFullGroups 9 } + +END diff --git a/mibs/ietf/URI-TC-MIB b/mibs/ietf/URI-TC-MIB new file mode 100644 index 0000000..744216e --- /dev/null +++ b/mibs/ietf/URI-TC-MIB @@ -0,0 +1,139 @@ +URI-TC-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI -- [RFC2578] + TEXTUAL-CONVENTION FROM SNMPv2-TC; -- [RFC2579] + +uriTcMIB MODULE-IDENTITY + LAST-UPDATED "200709100000Z" -- 10 September 2007 + ORGANIZATION "IETF Operations and Management (OPS) Area" + CONTACT-INFO "EMail: ops-area@ietf.org + Home page: http://www.ops.ietf.org/" + DESCRIPTION + "This MIB module defines textual conventions for + representing URIs, as defined by RFC 3986 STD 66." + REVISION "200709100000Z" -- 10 September 2007 + DESCRIPTION + "Initial revision, published as RFC 5017. + + Copyright (C) The IETF Trust (2007). This version of this + MIB module is part of RFC 5017; see the RFC itself for full + + + + legal notices." + ::= { mib-2 164 } + +Uri ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1a" + STATUS current + DESCRIPTION + "A Uniform Resource Identifier (URI) as defined by STD 66. + + Objects using this TEXTUAL-CONVENTION MUST be in US-ASCII + encoding, and MUST be normalized as described by RFC 3986 + Sections 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide unique + URIs. Note that this normalization is not sufficient to + provide uniqueness. Two URIs that are textually distinct + after this normalization may still be equivalent. + + Objects using this TEXTUAL-CONVENTION MAY restrict the + schemes that they permit. For example, 'data:' and 'urn:' + schemes might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required, for example when used + as an index field. + + Where this TEXTUAL-CONVENTION is used for an index field, + it MUST be subtyped to restrict its length. There is an + absolute limit of 128 subids for an OID, and it is not + efficient to have OIDs whose length approaches this + limit." + REFERENCE "RFC 3986 STD 66 and RFC 3305" + SYNTAX OCTET STRING + +Uri255 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "A Uniform Resource Identifier (URI) as defined by STD 66. + + Objects using this TEXTUAL-CONVENTION MUST be in US-ASCII + encoding, and MUST be normalized as described by RFC 3986 + Sections 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + + + + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide unique + URIs. Note that this normalization is not sufficient to + provide uniqueness. Two URIs that are textually distinct + after this normalization may still be equivalent. + + Objects using this TEXTUAL-CONVENTION MAY restrict the + schemes that they permit. For example, 'data:' and 'urn:' + schemes might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required, for example when used + as an index field. + + STD 66 URIs are of unlimited length. Objects using this + TEXTUAL-CONVENTION impose a length limit on the URIs that + they can represent. Where no length restriction is + required, objects SHOULD use the 'Uri' TEXTUAL-CONVENTION + instead. Objects used as indices SHOULD subtype the 'Uri' + TEXTUAL-CONVENTION." + REFERENCE "RFC 3986 STD 66 and RFC 3305" + SYNTAX OCTET STRING (SIZE (0..255)) + +Uri1024 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1024a" + STATUS current + DESCRIPTION + "A Uniform Resource Identifier (URI) as defined by STD 66. + + Objects using this TEXTUAL-CONVENTION MUST be in US-ASCII + encoding, and MUST be normalized as described by RFC 3986 + Sections 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide unique + URIs. Note that this normalization is not sufficient to + provide uniqueness. Two URIs that are textually distinct + after this normalization may still be equivalent. + + Objects using this TEXTUAL-CONVENTION MAY restrict the + schemes that they permit. For example, 'data:' and 'urn:' + schemes might not be appropriate. + + + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required, for example when used + as an index field. + + STD 66 URIs are of unlimited length. Objects using this + TEXTUAL-CONVENTION impose a length limit on the URIs that + they can represent. Where no length restriction is + required, objects SHOULD use the 'Uri' TEXTUAL-CONVENTION + instead. Objects used as indices SHOULD subtype the 'Uri' + TEXTUAL-CONVENTION." + REFERENCE "RFC 3986 STD 66 and RFC 3305" + SYNTAX OCTET STRING (SIZE (0..1024)) + +END diff --git a/mibs/ietf/VDSL-LINE-EXT-MCM-MIB b/mibs/ietf/VDSL-LINE-EXT-MCM-MIB new file mode 100644 index 0000000..c0eb9a9 --- /dev/null +++ b/mibs/ietf/VDSL-LINE-EXT-MCM-MIB @@ -0,0 +1,705 @@ +VDSL-LINE-EXT-MCM-MIB DEFINITIONS ::= BEGIN + +IMPORTS +MODULE-IDENTITY, +OBJECT-TYPE, +transmission, +Unsigned32 FROM SNMPv2-SMI -- [RFC2578] +RowStatus FROM SNMPv2-TC -- [RFC2579] +MODULE-COMPLIANCE, +OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] +vdslLineConfProfileName FROM VDSL-LINE-MIB; -- [RFC3728] + +vdslExtMCMMIB MODULE-IDENTITY + LAST-UPDATED "200504280000Z" -- April 28, 2005 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-732 + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair/Co-editor: + Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 + USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + + + + Co-editor: Menachem Dodge + ECI Telecom Ltd. + Postal: 30 hasivim St. + Petach Tikva 49517, + Israel. + Email: mbdodge@ieee.org + Phone: +972 3 926 8421 + " + +DESCRIPTION + "The VDSL-LINE-MIB found in RFC 3728 defines objects for + the management of a pair of VDSL transceivers at each end of + the VDSL line. The VDSL-LINE-MIB configures and monitors the + line code independent parameters (TC layer) of the VDSL line. + This MIB module is an optional extension of the VDSL-LINE-MIB + and defines objects for configuration and monitoring of the + line code specific (LCS) elements (PMD layer) for VDSL lines + using MCM coding. The objects in this extension MIB MUST NOT + be used for VDSL lines using Single Carrier Modulation (SCM) + line coding. If an object in this extension MIB is referenced + by a line which does not use MCM, it has no effect on the + operation of that line. + + Naming Conventions: + Vtuc -- (VTUC) transceiver at near (Central) end of line + Vtur -- (VTUR) transceiver at Remote end of line + Vtu -- One of either Vtuc or Vtur + Curr -- Current + LCS -- Line Code Specific + Max -- Maximum + PSD -- Power Spectral Density + Rx -- Receive + Tx -- Transmit + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4070: see the RFC + itself for full legal notices." + REVISION "200504280000Z" -- April 28, 2005 + DESCRIPTION "Initial version, published as RFC 4070." + ::= { transmission 229 } + +vdslLineExtMCMMib OBJECT IDENTIFIER ::= { vdslExtMCMMIB 1 } +vdslLineExtMCMMibObjects OBJECT IDENTIFIER ::= {vdslLineExtMCMMib 1} + +-- +-- Multiple carrier modulation (MCM) configuration profile tables +-- + + + + +vdslLineMCMConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains additional information on multiple + carrier VDSL lines. One entry in this table reflects a + profile defined by a manager which can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + + ::= { vdslLineExtMCMMibObjects 1 } + +vdslLineMCMConfProfileEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of a multiple carrier + modulation VDSL modem." + INDEX { vdslLineConfProfileName } + ::= { vdslLineMCMConfProfileTable 1 } + +VdslLineMCMConfProfileEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileTxWindowLength Unsigned32, + vdslLineMCMConfProfileRowStatus RowStatus + } + +vdslLineMCMConfProfileTxWindowLength OBJECT-TYPE + SYNTAX Unsigned32 (1..255) + UNITS "samples" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the length of the transmit window, counted + in samples at the sampling rate corresponding to the + negotiated value of N." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileEntry 1 } + + + +vdslLineMCMConfProfileRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must first be unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileEntry 2 } + +vdslLineMCMConfProfileTxBandTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileTxBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transmit band descriptor configuration + information for a VDSL line. Each entry in this table + reflects the configuration for one of possibly many bands + with a multiple carrier modulation (MCM) VDSL line. + These entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 2 } + +vdslLineMCMConfProfileTxBandEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileTxBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit band descriptor, which + is defined by a start and a stop tone index." + INDEX { vdslLineConfProfileName, + + + + vdslLineMCMConfProfileTxBandNumber } + ::= { vdslLineMCMConfProfileTxBandTable 1 } + +VdslLineMCMConfProfileTxBandEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileTxBandNumber Unsigned32, + vdslLineMCMConfProfileTxBandStart Unsigned32, + vdslLineMCMConfProfileTxBandStop Unsigned32, + vdslLineMCMConfProfileTxBandRowStatus RowStatus + } + +vdslLineMCMConfProfileTxBandNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this band descriptor entry." + ::= { vdslLineMCMConfProfileTxBandEntry 1 } + +vdslLineMCMConfProfileTxBandStart OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Start tone index for this band." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileTxBandEntry 2 } + +vdslLineMCMConfProfileTxBandStop OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Stop tone index for this band." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileTxBandEntry 3 } + +vdslLineMCMConfProfileTxBandRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + + + + + Each entry must be internally consistent, the Stop Tone must + be greater than the Start Tone. Each entry must also be + externally consistent, all entries indexed by a specific + profile must not overlap. Validation of the profile will + check both internal and external consistency. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileTxBandEntry 4 } + +vdslLineMCMConfProfileRxBandTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileRxBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains receive band descriptor configuration + information for a VDSL line. Each entry in this table + reflects the configuration for one of possibly many bands + with a multiple carrier modulation (MCM) VDSL line. + These entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 3 } + +vdslLineMCMConfProfileRxBandEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileRxBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit band descriptor, which + is defined by a start and a stop tone index." + + INDEX { vdslLineConfProfileName, + vdslLineMCMConfProfileRxBandNumber } + ::= { vdslLineMCMConfProfileRxBandTable 1 } + +VdslLineMCMConfProfileRxBandEntry ::= + + + + SEQUENCE + { + vdslLineMCMConfProfileRxBandNumber Unsigned32, + vdslLineMCMConfProfileRxBandStart Unsigned32, + vdslLineMCMConfProfileRxBandStop Unsigned32, + vdslLineMCMConfProfileRxBandRowStatus RowStatus + } + +vdslLineMCMConfProfileRxBandNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this band descriptor entry." + ::= { vdslLineMCMConfProfileRxBandEntry 1 } + +vdslLineMCMConfProfileRxBandStart OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Start tone index for this band." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileRxBandEntry 2 } + + +vdslLineMCMConfProfileRxBandStop OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Stop tone index for this band." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileRxBandEntry 3 } + +vdslLineMCMConfProfileRxBandRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + Each entry must be internally consistent, the Stop Tone must + be greater than the Start Tone. Each entry must also be + externally consistent, all entries indexed by a specific + + + + profile must not overlap. Validation of the profile will + check both internal and external consistency. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileRxBandEntry 4 } + +vdslLineMCMConfProfileTxPSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileTxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transmit PSD mask descriptor + configuration information for a VDSL line. Each entry in + this table reflects the configuration for one tone within + a multiple carrier modulation (MCM) VDSL line. These + entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 4 } + +vdslLineMCMConfProfileTxPSDEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileTxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit PSD mask descriptor, + which defines the power spectral density (PSD) for a tone." + + INDEX { vdslLineConfProfileName, + vdslLineMCMConfProfileTxPSDNumber } + ::= { vdslLineMCMConfProfileTxPSDTable 1 } + +VdslLineMCMConfProfileTxPSDEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileTxPSDNumber Unsigned32, + + + + vdslLineMCMConfProfileTxPSDTone Unsigned32, + vdslLineMCMConfProfileTxPSDPSD Unsigned32, + vdslLineMCMConfProfileTxPSDRowStatus RowStatus + } + +vdslLineMCMConfProfileTxPSDNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this mask descriptor entry." + ::= { vdslLineMCMConfProfileTxPSDEntry 1 } + +vdslLineMCMConfProfileTxPSDTone OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The tone index for which the PSD is being specified." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileTxPSDEntry 2 } + +vdslLineMCMConfProfileTxPSDPSD OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "0.5dBm/Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Power Spectral Density level in steps of 0.5dBm/Hz with + an offset of -140dBm/Hz." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileTxPSDEntry 3 } + + vdslLineMCMConfProfileTxPSDRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + + + + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileTxPSDEntry 4 } + +vdslLineMCMConfProfileMaxTxPSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileMaxTxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transmit maximum PSD mask descriptor + configuration information for a VDSL line. Each entry in + this table reflects the configuration for one tone within + a multiple carrier modulation (MCM) VDSL modem. These + entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 5 } + +vdslLineMCMConfProfileMaxTxPSDEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileMaxTxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit PSD mask descriptor, + which defines the maximum power spectral density (PSD) + for a tone." + INDEX { vdslLineConfProfileName, + vdslLineMCMConfProfileMaxTxPSDNumber } + ::= { vdslLineMCMConfProfileMaxTxPSDTable 1 } + +VdslLineMCMConfProfileMaxTxPSDEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileMaxTxPSDNumber Unsigned32, + vdslLineMCMConfProfileMaxTxPSDTone Unsigned32, + vdslLineMCMConfProfileMaxTxPSDPSD Unsigned32, + vdslLineMCMConfProfileMaxTxPSDRowStatus RowStatus + } + +vdslLineMCMConfProfileMaxTxPSDNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index for this band descriptor entry." + ::= { vdslLineMCMConfProfileMaxTxPSDEntry 1 } + +vdslLineMCMConfProfileMaxTxPSDTone OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The tone index for which the PSD is being specified. + There must not be multiple rows defined, for a particular + profile, with the same value for this field." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileMaxTxPSDEntry 2 } + +vdslLineMCMConfProfileMaxTxPSDPSD OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "0.5dBm/Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Power Spectral Density level in steps of 0.5dBm/Hz with + an offset of -140dBm/Hz." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileMaxTxPSDEntry 3 } + +vdslLineMCMConfProfileMaxTxPSDRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + There must be only one entry in this table for each tone + associated with a specific profile. This will be checked + during the validation process. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + + + + ::= { vdslLineMCMConfProfileMaxTxPSDEntry 4 } + +vdslLineMCMConfProfileMaxRxPSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineMCMConfProfileMaxRxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains maximum receive PSD mask descriptor + configuration information for a VDSL line. Each entry in + this table reflects the configuration for one tone within + a multiple carrier modulation (MCM) VDSL modem. These + entries are defined by a manager and can be used to + configure the VDSL line. + + If an entry in this table is referenced by a line which + does not use MCM, it has no effect on the operation of that + line. + + All read-create-objects defined in this table SHOULD be + stored persistently." + ::= { vdslLineExtMCMMibObjects 6 } + +vdslLineMCMConfProfileMaxRxPSDEntry OBJECT-TYPE + SYNTAX VdslLineMCMConfProfileMaxRxPSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a transmit PSD mask descriptor, + which defines the power spectral density (PSD) for a + tone." + + INDEX { vdslLineConfProfileName, + vdslLineMCMConfProfileMaxRxPSDNumber } + ::= { vdslLineMCMConfProfileMaxRxPSDTable 1 } + +VdslLineMCMConfProfileMaxRxPSDEntry ::= + SEQUENCE + { + vdslLineMCMConfProfileMaxRxPSDNumber Unsigned32, + vdslLineMCMConfProfileMaxRxPSDTone Unsigned32, + vdslLineMCMConfProfileMaxRxPSDPSD Unsigned32, + vdslLineMCMConfProfileMaxRxPSDRowStatus RowStatus + } + +vdslLineMCMConfProfileMaxRxPSDNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS not-accessible + STATUS current + + + + DESCRIPTION + "The index for this band descriptor entry." + ::= { vdslLineMCMConfProfileMaxRxPSDEntry 1 } + +vdslLineMCMConfProfileMaxRxPSDTone OBJECT-TYPE + SYNTAX Unsigned32 (1..4096) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The tone index for which the PSD is being specified. + There must not be multiple rows defined, for a particular + profile, with the same value for this field." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileMaxRxPSDEntry 2 } + +vdslLineMCMConfProfileMaxRxPSDPSD OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "0.5dBm/Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Power Spectral Density level in steps of 0.5dBm/Hz with + an offset of -140dBm/Hz." + REFERENCE "T1E1.4/2000-013R4" -- Part 3, MCM + ::= { vdslLineMCMConfProfileMaxRxPSDEntry 3 } + +vdslLineMCMConfProfileMaxRxPSDRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile is activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + There must be only one entry in this table for each tone + associated with a specific profile. This will be checked + during the validation process. + + None of the columns in this row may be modified while the + row is in the 'active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + ::= { vdslLineMCMConfProfileMaxRxPSDEntry 4 } + + + +-- conformance information + +vdslLineExtMCMConformance OBJECT IDENTIFIER ::= + { vdslLineExtMCMMib 2 } +vdslLineExtMCMGroups OBJECT IDENTIFIER ::= + { vdslLineExtMCMConformance 1 } +vdslLineExtMCMCompliances OBJECT IDENTIFIER ::= + { vdslLineExtMCMConformance 2 } + +vdslLineExtMCMMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + manage VDSL interfaces." + MODULE -- this module + MANDATORY-GROUPS + { + vdslLineExtMCMGroup + } + + ::= { vdslLineExtMCMCompliances 1 } + +-- units of conformance + + vdslLineExtMCMGroup OBJECT-GROUP + OBJECTS + { + vdslLineMCMConfProfileTxWindowLength, + vdslLineMCMConfProfileRowStatus, + vdslLineMCMConfProfileTxBandStart, + vdslLineMCMConfProfileTxBandStop, + vdslLineMCMConfProfileTxBandRowStatus, + vdslLineMCMConfProfileRxBandStart, + vdslLineMCMConfProfileRxBandStop, + vdslLineMCMConfProfileRxBandRowStatus, + vdslLineMCMConfProfileTxPSDTone, + vdslLineMCMConfProfileTxPSDPSD, + vdslLineMCMConfProfileTxPSDRowStatus, + vdslLineMCMConfProfileMaxTxPSDTone, + vdslLineMCMConfProfileMaxTxPSDPSD, + vdslLineMCMConfProfileMaxTxPSDRowStatus, + vdslLineMCMConfProfileMaxRxPSDTone, + vdslLineMCMConfProfileMaxRxPSDPSD, + vdslLineMCMConfProfileMaxRxPSDRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + + + + information for a VDSL line based upon multiple + carrier modulation modem." + ::= { vdslLineExtMCMGroups 1 } + +END diff --git a/mibs/ietf/VDSL-LINE-EXT-SCM-MIB b/mibs/ietf/VDSL-LINE-EXT-SCM-MIB new file mode 100644 index 0000000..2d8fa65 --- /dev/null +++ b/mibs/ietf/VDSL-LINE-EXT-SCM-MIB @@ -0,0 +1,477 @@ +VDSL-LINE-EXT-SCM-MIB DEFINITIONS ::= BEGIN + +IMPORTS + +MODULE-IDENTITY, +OBJECT-TYPE, +Integer32, +transmission, +Unsigned32 FROM SNMPv2-SMI -- [RFC2578] +TEXTUAL-CONVENTION, +TruthValue, +RowStatus FROM SNMPv2-TC -- [RFC2579] +MODULE-COMPLIANCE, +OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] +ifIndex FROM IF-MIB -- [RFC2863] +vdslLineConfProfileName FROM VDSL-LINE-MIB; -- [RFC3728] + +vdslExtSCMMIB MODULE-IDENTITY + LAST-UPDATED "200504280000Z" -- April 28, 2005 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh NC 27627-732 + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-Chair/Co-editor: + Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 + USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + + + Co-editor: Menachem Dodge + ECI Telecom Ltd. + Postal: 30 Hasivim St. + Petach Tikva 49517, + Israel + Email: mbdodge@ieee.org + Phone: +972 3 926 8421 + " + +DESCRIPTION + "The VDSL-LINE-MIB found in RFC 3728 defines objects for the + management of a pair of VDSL transceivers at each end of the VDSL + line. The VDSL-LINE-MIB configures and monitors the line code + independent parameters (TC layer) of the VDSL line. This MIB + module is an optional extension of the VDSL-LINE-MIB and defines + objects for configuration and monitoring of the line code specific + (LCS) elements (PMD layer) for VDSL lines using SCM coding. The + objects in this extension MIB MUST NOT be used for VDSL lines + using Multiple Carrier Modulation (MCM) line coding. If an object + in this extension MIB is referenced by a line which does not use + SCM, it has no effect on the operation of that line. + + Naming Conventions: + + Vtuc -- VDSL transceiver at near (Central) end of line + Vtur -- VDSL transceiver at Remote end of line + Vtu -- One of either Vtuc or Vtur + Curr -- Current + Atn -- Attenuation + LCS -- Line Code Specific + Max -- Maximum + Mgn -- Margin + PSD -- Power Spectral Density + Rx -- Receive + Snr -- Signal to Noise Ratio + Tx -- Transmit + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4069: see the RFC + itself for full legal notices." + REVISION "200504280000Z" -- April 28, 2005 + DESCRIPTION "Initial version, published as RFC 4069." + ::= { transmission 228 } + + vdslLineExtSCMMib OBJECT IDENTIFIER ::= { vdslExtSCMMIB 1 } + vdslLineExtSCMMibObjects OBJECT IDENTIFIER ::= + { vdslLineExtSCMMib 1 } +-- + + + +-- textual conventions used in this MIB +-- + +VdslSCMBandId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax for the VDSL SCM Band + Identity. Attributes with this syntax identify the SCM Band + referred to. Specified as an INTEGER, the possible values + are: + + optionalBand (1) -- the optional Band range [25kHz - 138kHz] + firstDownstreamBand (2) -- first Downstream Band + firstUpstreamBand (3) -- first Upstream Band + secondDownstreamBand (4) -- second Downstream Band + secondUpstreamBand (5) -- second Upstream Band + thirdDownstreamBand (6) -- third Downstream Band + thirdUpstreamBand (7) -- third Upstream Band" + + + SYNTAX INTEGER { optionalBand (1), + firstDownstreamBand (2), + firstUpstreamBand (3), + secondDownstreamBand (4), + secondUpstreamBand (5), + thirdDownstreamBand (6), + thirdUpstreamBand(7) } + +-- +-- Single carrier modulation (SCM) configuration profile tables +-- + +vdslLineSCMConfProfileBandTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineSCMConfProfileBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains transmit band descriptor configuration + information for a VDSL line. Each entry in this table + reflects the configuration for one of possibly many bands + of a single carrier modulation (SCM) VDSL line. For each + profile which is associated with a VDSL line using SCM + line coding, five entries in this table will exist, one for + each of the five bands. Bands which are not in use will be + marked as unused. These entries are defined by a manager + and can be used to configure the VDSL line. If an entry in + + + + + + this table is referenced by a line which does not use SCM, + it has no effect on the operation of that line." + ::= { vdslLineExtSCMMibObjects 1 } + +vdslLineSCMConfProfileBandEntry OBJECT-TYPE + SYNTAX VdslLineSCMConfProfileBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of a single carrier + modulation VDSL modem transmit band. + + A default profile with an index of 'DEFVAL', will + always exist and its parameters will be set to vendor + specific values, unless otherwise specified in this + document. + + All read-create objects defined in this MIB module SHOULD be + stored persistently." + + INDEX { vdslLineConfProfileName, + vdslLineSCMConfProfileBandId } + ::= { vdslLineSCMConfProfileBandTable 1 } + +VdslLineSCMConfProfileBandEntry ::= + SEQUENCE + { + vdslLineSCMConfProfileBandId VdslSCMBandId, + vdslLineSCMConfProfileBandInUse TruthValue, + vdslLineSCMConfProfileBandCenterFrequency Unsigned32, + vdslLineSCMConfProfileBandSymbolRate Unsigned32, + vdslLineSCMConfProfileBandConstellationSize Unsigned32, + vdslLineSCMConfProfileBandTransmitPSDLevel Unsigned32, + vdslLineSCMConfProfileBandRowStatus RowStatus + } + +vdslLineSCMConfProfileBandId OBJECT-TYPE + SYNTAX VdslSCMBandId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The BandId for this entry, which specifies which band + is being referred to." + ::= { vdslLineSCMConfProfileBandEntry 1 } + + + + + + +vdslLineSCMConfProfileBandInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates whether this band is in use. + If set to True this band is in use." + ::= { vdslLineSCMConfProfileBandEntry 2 } + +vdslLineSCMConfProfileBandCenterFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the center frequency in Hz" + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMConfProfileBandEntry 3 } + +vdslLineSCMConfProfileBandSymbolRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "baud" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested symbol rate in baud." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMConfProfileBandEntry 4 } + +vdslLineSCMConfProfileBandConstellationSize OBJECT-TYPE + SYNTAX Unsigned32 (0..16) + UNITS "log2" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the constellation size." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMConfProfileBandEntry 5 } + + + + + + + + + + + + + +vdslLineSCMConfProfileBandTransmitPSDLevel OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "-0.25 dBm/Hz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The requested transmit power spectral density for the VDSL + modem. The Actual value in -0.25 dBm/Hz." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMConfProfileBandEntry 6 } + +vdslLineSCMConfProfileBandRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile activated by setting this object to `active'. + When `active' is set, the system will validate the profile. + + None of the columns in this row may be modified while the + row is in the `active' state. + + Before a profile can be deleted or taken out of + service, (by setting this object to `destroy' or + `notInService') it must be first unreferenced + from all associated lines." + + ::= { vdslLineSCMConfProfileBandEntry 7 } + +-- +-- SCM physical band +-- + +vdslLineSCMPhysBandTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineSCMPhysBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each SCM Vtu band. This + table is read only as it reflects the current physical + parameters of each band. For each ifIndex which is + associated with a VDSL line using SCM line coding, five + entries in this table will exist, one for each of the + five bands. Bands which are not in use will be marked + as unused." + + + + ::= { vdslLineExtSCMMibObjects 2 } + +vdslLineSCMPhysBandEntry OBJECT-TYPE + SYNTAX VdslLineSCMPhysBandEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslLineSCMPhysBandTable." + INDEX { ifIndex, + vdslLineSCMPhysBandId } + ::= { vdslLineSCMPhysBandTable 1 } + +VdslLineSCMPhysBandEntry ::= + SEQUENCE + { + vdslLineSCMPhysBandId VdslSCMBandId, + vdslLineSCMPhysBandInUse TruthValue, + vdslLineSCMPhysBandCurrCenterFrequency Unsigned32, + vdslLineSCMPhysBandCurrSymbolRate Unsigned32, + vdslLineSCMPhysBandCurrConstellationSize Unsigned32, + vdslLineSCMPhysBandCurrPSDLevel Unsigned32, + vdslLineSCMPhysBandCurrSnrMgn Integer32, + vdslLineSCMPhysBandCurrAtn Unsigned32 + } + +vdslLineSCMPhysBandId OBJECT-TYPE + SYNTAX VdslSCMBandId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The BandId for this entry, which specifies which band + is being referred to." + ::= { vdslLineSCMPhysBandEntry 1 } + +vdslLineSCMPhysBandInUse OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this band is in use. + If set to True this band is in use." + ::= { vdslLineSCMPhysBandEntry 2 } + + + + + + + + + +vdslLineSCMPhysBandCurrCenterFrequency OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "Hz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current center frequency in Hz for this band." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMPhysBandEntry 3 } + +vdslLineSCMPhysBandCurrSymbolRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "baud" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current value of the symbol rate in baud for this + band." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMPhysBandEntry 4 } + +vdslLineSCMPhysBandCurrConstellationSize OBJECT-TYPE + SYNTAX Unsigned32 (0..16) + UNITS "log2" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current constellation size on this band." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMPhysBandEntry 5 } + +vdslLineSCMPhysBandCurrPSDLevel OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "- 0.25 dBm/Hz" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The transmit power spectral density for the + VDSL modem." + REFERENCE "T1E1.4/2000-011R3" -- Part 2, SCM + ::= { vdslLineSCMPhysBandEntry 6 } + + + + + + + + + + +vdslLineSCMPhysBandCurrSnrMgn OBJECT-TYPE + SYNTAX Integer32 + UNITS "0.25 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Noise margin as seen by this Vtu and band with respect + to its received signal in 0.25 dB." + ::= { vdslLineSCMPhysBandEntry 7 } + +vdslLineSCMPhysBandCurrAtn OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "0.25 dB" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured difference in the total power transmitted by + the peer Vtu on this band and the total power received + by this Vtu on this band in 0.25 dB." + ::= { vdslLineSCMPhysBandEntry 8 } + +-- conformance information + +vdslLineExtSCMConformance OBJECT IDENTIFIER ::= + { vdslLineExtSCMMib 2 } +vdslLineExtSCMGroups OBJECT IDENTIFIER ::= + { vdslLineExtSCMConformance 1 } +vdslLineExtSCMCompliances OBJECT IDENTIFIER ::= + { vdslLineExtSCMConformance 2 } + +vdslLineExtSCMMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + manage VDSL interfaces." + + MODULE -- this module + + MANDATORY-GROUPS + { + vdslLineExtSCMGroup + } + + ::= { vdslLineExtSCMCompliances 1 } + + + + + + + +-- units of conformance + +vdslLineExtSCMGroup OBJECT-GROUP + OBJECTS + { + vdslLineSCMConfProfileBandInUse, + vdslLineSCMConfProfileBandTransmitPSDLevel, + vdslLineSCMConfProfileBandSymbolRate, + vdslLineSCMConfProfileBandConstellationSize, + vdslLineSCMConfProfileBandCenterFrequency, + vdslLineSCMConfProfileBandRowStatus, + vdslLineSCMPhysBandInUse, + vdslLineSCMPhysBandCurrPSDLevel, + vdslLineSCMPhysBandCurrSymbolRate, + vdslLineSCMPhysBandCurrConstellationSize, + vdslLineSCMPhysBandCurrCenterFrequency, + vdslLineSCMPhysBandCurrSnrMgn, + vdslLineSCMPhysBandCurrAtn + + } + STATUS current + DESCRIPTION + "A collection of objects providing configuration + information for a VDSL line based upon single carrier + modulation modem." + ::= { vdslLineExtSCMGroups 1 } + +END diff --git a/mibs/ietf/VDSL-LINE-MIB b/mibs/ietf/VDSL-LINE-MIB new file mode 100644 index 0000000..66f7522 --- /dev/null +++ b/mibs/ietf/VDSL-LINE-MIB @@ -0,0 +1,3014 @@ +VDSL-LINE-MIB DEFINITIONS ::= BEGIN + +IMPORTS + +MODULE-IDENTITY, +OBJECT-TYPE, +Gauge32, +Integer32, +Unsigned32, +NOTIFICATION-TYPE, +transmission FROM SNMPv2-SMI -- [RFC2578] +ZeroBasedCounter64 FROM HCNUM-TC -- [RFC2856] +TEXTUAL-CONVENTION, +RowStatus, +TruthValue FROM SNMPv2-TC -- [RFC2579] +HCPerfValidIntervals, +HCPerfInvalidIntervals, +HCPerfTimeElapsed, + + + +HCPerfIntervalThreshold, +HCPerfCurrentCount, +HCPerfIntervalCount FROM HC-PerfHist-TC-MIB -- [RFC3705] +MODULE-COMPLIANCE, +OBJECT-GROUP, +NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580] +ifIndex FROM IF-MIB -- [RFC2863] +SnmpAdminString FROM SNMP-FRAMEWORK-MIB; -- [RFC3411] + +vdslMIB MODULE-IDENTITY + LAST-UPDATED "200402190000Z" -- February 19, 2004 + ORGANIZATION "ADSLMIB Working Group" + CONTACT-INFO "WG-email: adslmib@ietf.org + Info: https://www1.ietf.org/mailman/listinfo/adslmib + + Chair: Mike Sneed + Sand Channel Systems + Postal: P.O. Box 37324 + Raleigh, NC 27627-7324 + USA + Email: sneedmike@hotmail.com + Phone: +1 206 600 7022 + + Co-editor: Bob Ray + PESA Switching Systems, Inc. + Postal: 330-A Wynn Drive + Huntsville, AL 35805 + USA + Email: rray@pesa.com + Phone: +1 256 726 9200 ext. 142 + + Co-editor: Rajesh Abbi + Alcatel USA + Postal: 2301 Sugar Bush Road + Raleigh, NC 27612-3339 + USA + Email: Rajesh.Abbi@alcatel.com + Phone: +1 919 850 6194 + " +DESCRIPTION + "The MIB module defining objects for the management of a pair + of VDSL transceivers at each end of the VDSL line. Each such + line has an entry in an ifTable which may include multiple + transceiver lines. An agent may reside at either end of the + VDSL line. However, the MIB is designed to require no + management communication between them beyond that inherent in + the low-level VDSL line protocol. The agent may monitor and + control this protocol for its needs. + + + + VDSL lines may support optional Fast or Interleaved channels. + If these are supported, additional entries corresponding to the + supported channels must be created in the ifTable. Thus a VDSL + line that supports both channels will have three entries in the + ifTable, one for each physical, fast, and interleaved, whose + ifType values are equal to vdsl(97), fast(125), and + interleaved(124), respectively. The ifStackTable is used to + represent the relationship between the entries. + + Naming Conventions: + Vtuc -- (VTUC) transceiver at near (Central) end of line + Vtur -- (VTUR) transceiver at Remote end of line + Vtu -- One of either Vtuc or Vtur + Curr -- Current + Prev -- Previous + Atn -- Attenuation + ES -- Errored Second. + SES -- Severely Errored Second + UAS -- Unavailable Second + LCS -- Line Code Specific + Lof -- Loss of Frame + Lol -- Loss of Link + Los -- Loss of Signal + Lpr -- Loss of Power + xxxs -- Sum of Seconds in which xxx has occured + (e.g., xxx = Lof, Los, Lpr, Lol) + Max -- Maximum + Mgn -- Margin + Min -- Minimum + Psd -- Power Spectral Density + Snr -- Signal to Noise Ratio + Tx -- Transmit + Blks -- Blocks + + Copyright (C) The Internet Society (2004). This version + of this MIB module is part of RFC 3728: see the RFC + itself for full legal notices." + REVISION "200402190000Z" -- February 19, 2004 + DESCRIPTION "Initial version, published as RFC 3728." + ::= { transmission 97 } + +vdslLineMib OBJECT IDENTIFIER ::= { vdslMIB 1 } +vdslMibObjects OBJECT IDENTIFIER ::= { vdslLineMib 1 } + +-- +-- textual conventions used in this MIB +-- + + + + +VdslLineCodingType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used as the syntax for the VDSL Line + Code. Attributes with this syntax identify the line coding + used. Specified as an INTEGER, the three values are: + + other(1) -- none of the following + mcm(2) -- Multiple Carrier Modulation + scm(3) -- Single Carrier Modulation" + SYNTAX INTEGER + { + other(1), + mcm(2), + scm(3) + } + +VdslLineEntity ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Identifies a transceiver as being either Vtuc or Vtur. + A VDSL line consists of two transceivers, a Vtuc and a + Vtur. Attributes with this syntax reference the two sides + of a line. Specified as an INTEGER, the two values are: + + vtuc(1) -- central site transceiver + vtur(2) -- remote site transceiver" + SYNTAX INTEGER + { + vtuc(1), + vtur(2) + } + +-- +-- objects +-- + +vdslLineTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table includes common attributes describing + both ends of the line. It is required for all VDSL + physical interfaces. VDSL physical interfaces are + those ifEntries where ifType is equal to vdsl(97)." + ::= { vdslMibObjects 1 } + + + + +vdslLineEntry OBJECT-TYPE + SYNTAX VdslLineEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the vdslLineTable." + INDEX { ifIndex } + ::= { vdslLineTable 1 } + +VdslLineEntry ::= + SEQUENCE + { + vdslLineCoding VdslLineCodingType, + vdslLineType INTEGER, + vdslLineConfProfile SnmpAdminString, + vdslLineAlarmConfProfile SnmpAdminString + } + +vdslLineCoding OBJECT-TYPE + SYNTAX VdslLineCodingType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Specifies the VDSL coding type used on this line." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslLineEntry 1 } + +vdslLineType OBJECT-TYPE + SYNTAX INTEGER + { + noChannel(1), -- no channels exist + fastOnly(2), -- only fast channel exists + interleavedOnly(3), -- only interleaved channel exists + fastOrInterleaved(4), -- either fast or interleaved channel + -- exist, but only one at a time + fastAndInterleaved(5) -- both fast and interleaved channels + -- exist + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Defines the type of VDSL physical line entity that exists, + by defining whether and how the line is channelized. If + + + + + + + + + + the line is channelized, the value will be other than + noChannel(1). This object defines which channel type(s) + are supported. Defined values are: + + noChannel(1) -- no channels exist + fastOnly(2) -- only fast channel exists + interleavedOnly(3) -- only interleaved channel exists + fastOrInterleaved(4) -- either fast or interleaved channel + -- exist, but only one at a time + fastAndInterleaved(5) -- both fast and interleaved channels + -- exist + + Note that 'slow' and 'interleaved' refer to the same + channel. In the case that the line is channelized, the + manager can use the ifStackTable to determine the ifIndex + for the associated channel(s)." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslLineEntry 2 } + +vdslLineConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row in the VDSL + Line Configuration Profile Table, vdslLineConfProfileTable, + which applies for this VDSL line, and channels if + applicable. + + This object MUST be maintained in a persistent manner." + DEFVAL { "DEFVAL" } + ::= { vdslLineEntry 3 } + +vdslLineAlarmConfProfile OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object identifies the row in the VDSL + Line Alarm Configuration Profile Table, + vdslLineAlarmConfProfileTable, which applies to this + VDSL line, and channels if applicable. + + This object MUST be maintained in a persistent manner." + DEFVAL { "DEFVAL" } + ::= { vdslLineEntry 4 } + +vdslPhysTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF VdslPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu. Each row + contains the Physical Layer Parameters table for that + Vtu. VDSL physical interfaces are those ifEntries where + ifType is equal to vdsl(97)." + ::= { vdslMibObjects 2 } + +vdslPhysEntry OBJECT-TYPE + SYNTAX VdslPhysEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the vdslPhysTable." + INDEX { ifIndex, + vdslPhysSide } + ::= { vdslPhysTable 1 } + +VdslPhysEntry ::= + SEQUENCE + { + vdslPhysSide VdslLineEntity, + vdslPhysInvSerialNumber SnmpAdminString, + vdslPhysInvVendorID SnmpAdminString, + vdslPhysInvVersionNumber SnmpAdminString, + vdslPhysCurrSnrMgn Integer32, + vdslPhysCurrAtn Gauge32, + vdslPhysCurrStatus BITS, + vdslPhysCurrOutputPwr Integer32, + vdslPhysCurrAttainableRate Gauge32, + vdslPhysCurrLineRate Gauge32 + } + +vdslPhysSide OBJECT-TYPE + SYNTAX VdslLineEntity + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Identifies whether the transceiver is the Vtuc or Vtur." + ::= { vdslPhysEntry 1 } + +vdslPhysInvSerialNumber OBJECT-TYPE + SYNTAX SnmpAdminString(SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific string that identifies the + + + + vendor equipment." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 2 } + +vdslPhysInvVendorID OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor ID code is a copy of the binary vendor + identification field expressed as readable characters + in hexadecimal notation." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 3 } + +vdslPhysInvVersionNumber OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor specific version number sent by this Vtu + as part of the initialization messages. It is a copy + of the binary version number field expressed as + readable characters in hexadecimal notation." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 4 } + +vdslPhysCurrSnrMgn OBJECT-TYPE + SYNTAX Integer32 (-127..127) + UNITS "0.25dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Noise Margin as seen by this Vtu with respect to its + received signal in 0.25dB. The effective range is + -31.75 to +31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 5 } + +vdslPhysCurrAtn OBJECT-TYPE + SYNTAX Gauge32 (0..255) + UNITS "0.25dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured difference in the total power transmitted by + the peer Vtu and the total power received by this Vtu. + The effective range is 0 to +63.75 dB." + + + + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 6 } + +vdslPhysCurrStatus OBJECT-TYPE + SYNTAX BITS + { + noDefect(0), + lossOfFraming(1), + lossOfSignal(2), + lossOfPower(3), + lossOfSignalQuality(4), + lossOfLink(5), + dataInitFailure(6), + configInitFailure(7), + protocolInitFailure(8), + noPeerVtuPresent(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates current state of the Vtu line. This is a + bit-map of possible conditions. The various bit + positions are: + + 0 noDefect There are no defects on the line. + + 1 lossOfFraming Vtu failure due to not receiving + a valid frame. + + 2 lossOfSignal Vtu failure due to not receiving + signal. + + 3 lossOfPower Vtu failure due to loss of power. + + 4 lossOfSignalQuality Loss of Signal Quality is declared + when the Noise Margin falls below + the Minimum Noise Margin, or the + bit-error-rate exceeds 10^-7. + + 5 lossOfLink Vtu failure due to inability to + link with peer Vtu. Set whenever + the transceiver is in the 'Warm + Start' state. + + 6 dataInitFailure Vtu failure during initialization + due to bit errors corrupting + startup exchange data. + + + + + 7 configInitFailure Vtu failure during initialization + due to peer Vtu not able to + support requested configuration. + + 8 protocolInitFailure Vtu failure during initialization + due to incompatible protocol used + by the peer Vtu. + + 9 noPeerVtuPresent Vtu failure during initialization + due to no activation sequence + detected from peer Vtu. + + This is intended to supplement ifOperStatus." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 7 } + +vdslPhysCurrOutputPwr OBJECT-TYPE + SYNTAX Integer32 (0..160) + UNITS "0.1dBm" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Measured total output power transmitted by this VTU. + This is the measurement that was reported during + the last activation sequence." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 8 } + +vdslPhysCurrAttainableRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kbps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the maximum currently attainable data rate + in steps of 1000 bits/second by the Vtu. This value + will be equal to or greater than vdslPhysCurrLineRate. + Note that for SCM, the minimum and maximum data rates + are equal. Note: 1 kbps = 1000 bps." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 9 } + +vdslPhysCurrLineRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kbps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Indicates the current data rate in steps of 1000 + bits/second by the Vtu. This value will be less than + or equal to vdslPhysCurrAttainableRate. Note: 1 kbps = + 1000 bps." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPhysEntry 10 } + +vdslChanTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu channel. + VDSL channel interfaces are those ifEntries where + ifType is equal to interleave(124) or fast(125)." + ::= { vdslMibObjects 3 } + +vdslChanEntry OBJECT-TYPE + SYNTAX VdslChanEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslChanTable." + INDEX { ifIndex, + vdslPhysSide } + ::= { vdslChanTable 1 } + +VdslChanEntry ::= + SEQUENCE + { + vdslChanInterleaveDelay Gauge32, + vdslChanCrcBlockLength Gauge32, + vdslChanCurrTxRate Gauge32, + vdslChanCurrTxSlowBurstProtect Gauge32, + vdslChanCurrTxFastFec Gauge32 + } + +vdslChanInterleaveDelay OBJECT-TYPE + SYNTAX Gauge32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Interleave Delay for this channel. + + Interleave delay applies only to the interleave + (slow) channel and defines the mapping (relative + spacing) between subsequent input bytes at the + + + + interleaver input and their placement in the bit + stream at the interleaver output. Larger numbers + provide greater separation between consecutive + input bytes in the output bit stream allowing for + improved impulse noise immunity at the expense of + payload latency. + + In the case where the ifType is fast(125), return + a value of zero." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanEntry 1 } + +vdslChanCrcBlockLength OBJECT-TYPE + SYNTAX Gauge32 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the length of the channel data-block + on which the CRC operates." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanEntry 2 } + +vdslChanCurrTxRate OBJECT-TYPE + SYNTAX Gauge32 + UNITS "kbps" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual transmit data rate on this channel. Note: 1 + kbps = 1000 bps." + ::= { vdslChanEntry 3 } + +vdslChanCurrTxSlowBurstProtect OBJECT-TYPE + SYNTAX Gauge32 (0..1275) + UNITS "microseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual level of impulse noise (burst) protection + for an interleaved (slow) channel. This parameter is + not applicable to fast channels. For fast channels, + a value of zero shall be returned." + REFERENCE "ITU-T G.997.1, section 7.3.2.3" + ::= { vdslChanEntry 4 } + +vdslChanCurrTxFastFec OBJECT-TYPE + SYNTAX Gauge32 (0..50) + + + + UNITS "%" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Actual Forward Error Correction (FEC) redundancy + related overhead for a fast channel. This parameter + is not applicable to an interleaved (slow) channel. + For interleaved channels, a value of zero shall be + returned." + ::= { vdslChanEntry 5 } + +vdslPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each VDSL physical + interface. VDSL physical interfaces are those ifEntries + where ifType is equal to vdsl(97)." + ::= { vdslMibObjects 4 } + +vdslPerfDataEntry OBJECT-TYPE + SYNTAX VdslPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslPerfDataTable." + INDEX { ifIndex, + vdslPhysSide } + ::= { vdslPerfDataTable 1 } + +VdslPerfDataEntry ::= + SEQUENCE + { + vdslPerfDataValidIntervals HCPerfValidIntervals, + vdslPerfDataInvalidIntervals HCPerfInvalidIntervals, + vdslPerfDataLofs Unsigned32, + vdslPerfDataLoss Unsigned32, + vdslPerfDataLprs Unsigned32, + vdslPerfDataLols Unsigned32, + vdslPerfDataESs Unsigned32, + vdslPerfDataSESs Unsigned32, + vdslPerfDataUASs Unsigned32, + vdslPerfDataInits Unsigned32, + vdslPerfDataCurr15MinTimeElapsed HCPerfTimeElapsed, + vdslPerfDataCurr15MinLofs HCPerfCurrentCount, + vdslPerfDataCurr15MinLoss HCPerfCurrentCount, + vdslPerfDataCurr15MinLprs HCPerfCurrentCount, + + + + vdslPerfDataCurr15MinLols HCPerfCurrentCount, + vdslPerfDataCurr15MinESs HCPerfCurrentCount, + vdslPerfDataCurr15MinSESs HCPerfCurrentCount, + vdslPerfDataCurr15MinUASs HCPerfCurrentCount, + vdslPerfDataCurr15MinInits HCPerfCurrentCount, + vdslPerfData1DayValidIntervals HCPerfValidIntervals, + vdslPerfData1DayInvalidIntervals HCPerfInvalidIntervals, + vdslPerfDataCurr1DayTimeElapsed HCPerfTimeElapsed, + vdslPerfDataCurr1DayLofs Unsigned32, + vdslPerfDataCurr1DayLoss Unsigned32, + vdslPerfDataCurr1DayLprs Unsigned32, + vdslPerfDataCurr1DayLols Unsigned32, + vdslPerfDataCurr1DayESs Unsigned32, + vdslPerfDataCurr1DaySESs Unsigned32, + vdslPerfDataCurr1DayUASs Unsigned32, + vdslPerfDataCurr1DayInits Unsigned32 + } + +vdslPerfDataValidIntervals OBJECT-TYPE + SYNTAX HCPerfValidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslPerfDataEntry 1 } + +vdslPerfDataInvalidIntervals OBJECT-TYPE + SYNTAX HCPerfInvalidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslPerfDataEntry 2 } + +vdslPerfDataLofs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds since the unit was last reset that there + was Loss of Framing." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 3 } + + + +vdslPerfDataLoss OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds since the unit was last reset that there + was Loss of Signal." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 4 } + +vdslPerfDataLprs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds since the unit was last reset that there + was Loss of Power." + + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 5 } + +vdslPerfDataLols OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds since the unit was last reset that there + was Loss of Link." + ::= { vdslPerfDataEntry 6 } + +vdslPerfDataESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds since the unit was last reset. + An Errored Second is a one-second interval containing one + or more CRC anomalies, or one or more LOS or LOF defects." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 7 } + +vdslPerfDataSESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds since the unit was last + reset." + ::= { vdslPerfDataEntry 8 } + +vdslPerfDataUASs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds since the unit was last + reset." + ::= { vdslPerfDataEntry 9 } + +vdslPerfDataInits OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "occurrences" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts since the unit + was last reset. This count includes both successful and + failed attempts." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 10 } + +vdslPerfDataCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { vdslPerfDataEntry 11 } + +vdslPerfDataCurr15MinLofs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval that there + was Loss of Framing." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 12 } + + + +vdslPerfDataCurr15MinLoss OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval that there + was Loss of Signal." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 13 } + +vdslPerfDataCurr15MinLprs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval that there + was Loss of Power." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 14 } + +vdslPerfDataCurr15MinLols OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds during this interval that there + was Loss of Link." + ::= { vdslPerfDataEntry 15 } + +vdslPerfDataCurr15MinESs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds during this interval. An Errored + Second is a one-second interval containing one or more CRC + anomalies, or one or more LOS or LOF defects." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 16 } + +vdslPerfDataCurr15MinSESs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds during this interval." + ::= { vdslPerfDataEntry 17 } + +vdslPerfDataCurr15MinUASs OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds during this interval." + ::= { vdslPerfDataEntry 18 } + +vdslPerfDataCurr15MinInits OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "occurrences" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts during this + interval. This count includes both successful and + failed attempts." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfDataEntry 19 } + +vdslPerfData1DayValidIntervals OBJECT-TYPE + SYNTAX HCPerfValidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslPerfDataEntry 20 } + +vdslPerfData1DayInvalidIntervals OBJECT-TYPE + SYNTAX HCPerfInvalidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslPerfDataEntry 21 } + +vdslPerfDataCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + + + + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 22 } + +vdslPerfDataCurr1DayLofs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Framing (LOF) Seconds since the + beginning of the current 1-day interval." + ::= { vdslPerfDataEntry 23 } + +vdslPerfDataCurr1DayLoss OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Signal (LOS) Seconds since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 24 } + +vdslPerfDataCurr1DayLprs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Power (LPR) Seconds since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 25 } + +vdslPerfDataCurr1DayLols OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Link (LOL) Seconds since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 26 } + + + + +vdslPerfDataCurr1DayESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 27 } + +vdslPerfDataCurr1DaySESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds (SES) since the + beginning of the current 1-day interval." + ::= { vdslPerfDataEntry 28 } + +vdslPerfDataCurr1DayUASs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) since the beginning + of the current 1-day interval." + ::= { vdslPerfDataEntry 29 } + +vdslPerfDataCurr1DayInits OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts since the + beginning of the current 1-day interval. This count + includes both successful and failed attempts." + ::= { vdslPerfDataEntry 30 } + +vdslPerfIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslPerfIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu performance + data collection interval. VDSL physical interfaces are + + + + those ifEntries where ifType is equal to vdsl(97)." + ::= { vdslMibObjects 5 } + +vdslPerfIntervalEntry OBJECT-TYPE + SYNTAX VdslPerfIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslPerfIntervalTable." + INDEX { ifIndex, + vdslPhysSide, + vdslPerfIntervalNumber } + ::= { vdslPerfIntervalTable 1 } + +VdslPerfIntervalEntry ::= + SEQUENCE + { + vdslPerfIntervalNumber Unsigned32, + vdslPerfIntervalLofs HCPerfIntervalCount, + vdslPerfIntervalLoss HCPerfIntervalCount, + vdslPerfIntervalLprs HCPerfIntervalCount, + vdslPerfIntervalLols HCPerfIntervalCount, + vdslPerfIntervalESs HCPerfIntervalCount, + vdslPerfIntervalSESs HCPerfIntervalCount, + vdslPerfIntervalUASs HCPerfIntervalCount, + vdslPerfIntervalInits HCPerfIntervalCount + } + +vdslPerfIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the most recent + previous interval; interval 96 is 24 hours ago. + Intervals 2 to 96 are optional." + ::= { vdslPerfIntervalEntry 1 } + +vdslPerfIntervalLofs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Framing." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 2 } + + + +vdslPerfIntervalLoss OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Signal." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 3 } + +vdslPerfIntervalLprs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Power." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 4 } + +vdslPerfIntervalLols OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of seconds in the interval when there was Loss + of Link." + ::= { vdslPerfIntervalEntry 5 } + +vdslPerfIntervalESs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) in the interval. An Errored + Second is a one-second interval containing one or more CRC + anomalies, one or more LOS or LOF defects." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 6 } + +vdslPerfIntervalSESs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + + + + STATUS current + DESCRIPTION + "Count of Severely Errored Seconds in the interval." + ::= { vdslPerfIntervalEntry 7 } + +vdslPerfIntervalUASs OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds in the interval." + ::= { vdslPerfIntervalEntry 8 } + +vdslPerfIntervalInits OBJECT-TYPE + SYNTAX HCPerfIntervalCount + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts during this + interval. This count includes both successful and + failed attempts." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerfIntervalEntry 9 } + +vdslPerf1DayIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslPerf1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each VDSL performance + data collection interval. This table contains live data + from equipment. As such, it is NOT persistent." + ::= { vdslMibObjects 6 } + +vdslPerf1DayIntervalEntry OBJECT-TYPE + SYNTAX VdslPerf1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslPerf1DayIntervalTable." + INDEX { ifIndex, + vdslPhysSide, + vdslPerf1DayIntervalNumber } + ::= { vdslPerf1DayIntervalTable 1 } + +VdslPerf1DayIntervalEntry ::= + SEQUENCE + + + + { + vdslPerf1DayIntervalNumber Unsigned32, + vdslPerf1DayIntervalMoniSecs HCPerfTimeElapsed, + vdslPerf1DayIntervalLofs Unsigned32, + vdslPerf1DayIntervalLoss Unsigned32, + vdslPerf1DayIntervalLprs Unsigned32, + vdslPerf1DayIntervalLols Unsigned32, + vdslPerf1DayIntervalESs Unsigned32, + vdslPerf1DayIntervalSESs Unsigned32, + vdslPerf1DayIntervalUASs Unsigned32, + vdslPerf1DayIntervalInits Unsigned32 + } + +vdslPerf1DayIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "History Data Interval number. Interval 1 is the most + recent previous day; interval 30 is 30 days ago. Intervals + 2 to 30 are optional." + ::= { vdslPerf1DayIntervalEntry 1 } + +vdslPerf1DayIntervalMoniSecs OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of time in the 1-day interval over which the + performance monitoring information is actually counted. + This value will be the same as the interval duration except + in a situation where performance monitoring data could not + be collected for any reason." + ::= { vdslPerf1DayIntervalEntry 2 } + +vdslPerf1DayIntervalLofs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Frame (LOF) Seconds during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 3 } + +vdslPerf1DayIntervalLoss OBJECT-TYPE + + + + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Signal (LOS) Seconds during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 4 } + +vdslPerf1DayIntervalLprs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Power (LPR) Seconds during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 5 } + +vdslPerf1DayIntervalLols OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Loss of Link (LOL) Seconds during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + ::= { vdslPerf1DayIntervalEntry 6 } + +vdslPerf1DayIntervalESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Errored Seconds (ES) during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 7 } + +vdslPerf1DayIntervalSESs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + + + "Count of Severely Errored Seconds (SES) during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + ::= { vdslPerf1DayIntervalEntry 8 } + +vdslPerf1DayIntervalUASs OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of Unavailable Seconds (UAS) during the 1-day + interval as measured by vdslPerf1DayIntervalMoniSecs." + ::= { vdslPerf1DayIntervalEntry 9 } + +vdslPerf1DayIntervalInits OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of the line initialization attempts during the + 1-day interval as measured by vdslPerf1DayIntervalMoniSecs. + This count includes both successful and failed attempts." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslPerf1DayIntervalEntry 10 } + +vdslChanPerfDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu channel. + VDSL channel interfaces are those ifEntries where + ifType is equal to interleave(124) or fast(125)." + ::= { vdslMibObjects 7 } + +vdslChanPerfDataEntry OBJECT-TYPE + SYNTAX VdslChanPerfDataEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslChanPerfDataTable." + INDEX { ifIndex, + vdslPhysSide } + ::= { vdslChanPerfDataTable 1 } + +VdslChanPerfDataEntry ::= + SEQUENCE + + + + { + vdslChanValidIntervals HCPerfValidIntervals, + vdslChanInvalidIntervals HCPerfInvalidIntervals, + vdslChanFixedOctets ZeroBasedCounter64, + vdslChanBadBlks ZeroBasedCounter64, + vdslChanCurr15MinTimeElapsed HCPerfTimeElapsed, + vdslChanCurr15MinFixedOctets HCPerfCurrentCount, + vdslChanCurr15MinBadBlks HCPerfCurrentCount, + vdslChan1DayValidIntervals HCPerfValidIntervals, + vdslChan1DayInvalidIntervals HCPerfInvalidIntervals, + vdslChanCurr1DayTimeElapsed HCPerfTimeElapsed, + vdslChanCurr1DayFixedOctets HCPerfCurrentCount, + vdslChanCurr1DayBadBlks HCPerfCurrentCount + } + +vdslChanValidIntervals OBJECT-TYPE + SYNTAX HCPerfValidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslChanPerfDataEntry 1 } + +vdslChanInvalidIntervals OBJECT-TYPE + SYNTAX HCPerfInvalidIntervals + UNITS "intervals" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslChanPerfDataEntry 2 } + +vdslChanFixedOctets OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets since the unit was last reset." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 3 } + +vdslChanBadBlks OBJECT-TYPE + SYNTAX ZeroBasedCounter64 + UNITS "blocks" + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks since the unit was last + reset." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 4 } + +vdslChanCurr15MinTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Total elapsed seconds in this interval." + ::= { vdslChanPerfDataEntry 5 } + +vdslChanCurr15MinFixedOctets OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 6 } + +vdslChanCurr15MinBadBlks OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 7 } + +vdslChan1DayValidIntervals OBJECT-TYPE + SYNTAX HCPerfValidIntervals + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslChanPerfDataEntry 8 } + +vdslChan1DayInvalidIntervals OBJECT-TYPE + SYNTAX HCPerfInvalidIntervals + + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid Intervals per definition found in + HC-PerfHist-TC-MIB." + ::= { vdslChanPerfDataEntry 9 } + +vdslChanCurr1DayTimeElapsed OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of seconds that have elapsed since the beginning + of the current 1-day interval." + ::= { vdslChanPerfDataEntry 10 } + +vdslChanCurr1DayFixedOctets OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets since the beginning of the + current 1-day interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 11 } + +vdslChanCurr1DayBadBlks OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks since the beginning of the + current 1-day interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanPerfDataEntry 12 } + +vdslChanIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each Vtu channel data + collection interval. VDSL channel interfaces are those + ifEntries where ifType is equal to interleave(124) or + fast(125)." + + + + ::= { vdslMibObjects 8 } + +vdslChanIntervalEntry OBJECT-TYPE + SYNTAX VdslChanIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslChanIntervalTable." + INDEX { ifIndex, + vdslPhysSide, + vdslChanIntervalNumber } + ::= { vdslChanIntervalTable 1 } + +VdslChanIntervalEntry ::= + SEQUENCE + { + vdslChanIntervalNumber Unsigned32, + vdslChanIntervalFixedOctets HCPerfIntervalCount, + vdslChanIntervalBadBlks HCPerfIntervalCount + } + +vdslChanIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..96) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Performance Data Interval number 1 is the most recent + previous interval; interval 96 is 24 hours ago. + Intervals 2 to 96 are optional." + ::= { vdslChanIntervalEntry 1 } + +vdslChanIntervalFixedOctets OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanIntervalEntry 2 } + +vdslChanIntervalBadBlks OBJECT-TYPE + SYNTAX HCPerfIntervalCount + UNITS "blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks in this interval." + + + + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChanIntervalEntry 3 } + +vdslChan1DayIntervalTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslChan1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides one row for each VDSL performance + data collection interval. This table contains live data + from equipment. As such, it is NOT persistent." + ::= { vdslMibObjects 9 } + +vdslChan1DayIntervalEntry OBJECT-TYPE + SYNTAX VdslChan1DayIntervalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vdslChan1DayIntervalTable." + INDEX { ifIndex, + vdslPhysSide, + vdslChan1DayIntervalNumber } + ::= { vdslChan1DayIntervalTable 1 } + +VdslChan1DayIntervalEntry ::= + SEQUENCE + { + vdslChan1DayIntervalNumber Unsigned32, + vdslChan1DayIntervalMoniSecs HCPerfTimeElapsed, + vdslChan1DayIntervalFixedOctets HCPerfCurrentCount, + vdslChan1DayIntervalBadBlks HCPerfCurrentCount + } + +vdslChan1DayIntervalNumber OBJECT-TYPE + SYNTAX Unsigned32 (1..30) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "History Data Interval number. Interval 1 is the most + recent previous day; interval 30 is 30 days ago. Intervals + 2 to 30 are optional." + ::= { vdslChan1DayIntervalEntry 1 } + +vdslChan1DayIntervalMoniSecs OBJECT-TYPE + SYNTAX HCPerfTimeElapsed + UNITS "seconds" + MAX-ACCESS read-only + STATUS current + + + + DESCRIPTION + "The amount of time in the 1-day interval over which the + performance monitoring information is actually counted. + This value will be the same as the interval duration except + in a situation where performance monitoring data could not + be collected for any reason." + ::= { vdslChan1DayIntervalEntry 2 } + +vdslChan1DayIntervalFixedOctets OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "octets" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of corrected octets in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChan1DayIntervalEntry 3 } + +vdslChan1DayIntervalBadBlks OBJECT-TYPE + SYNTAX HCPerfCurrentCount + UNITS "blocks" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Count of uncorrectable blocks in this interval." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + ::= { vdslChan1DayIntervalEntry 4 } + +-- +-- profile tables +-- + +vdslLineConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the VDSL line + configuration. One entry in this table reflects a + profile defined by a manager which can be used to + configure the VDSL line. + + Entries in this table MUST be maintained in a + persistent manner." + ::= { vdslMibObjects 11 } + +vdslLineConfProfileEntry OBJECT-TYPE + SYNTAX VdslLineConfProfileEntry + + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of a VDSL line. + + A default profile with an index of 'DEFVAL', will + always exist and its parameters will be set to vendor + specific values, unless otherwise specified in this + document." + INDEX { vdslLineConfProfileName } + ::= { vdslLineConfProfileTable 1 } + +VdslLineConfProfileEntry ::= + SEQUENCE + { + vdslLineConfProfileName SnmpAdminString, + vdslLineConfDownRateMode INTEGER, + vdslLineConfUpRateMode INTEGER, + vdslLineConfDownMaxPwr Unsigned32, + vdslLineConfUpMaxPwr Unsigned32, + vdslLineConfDownMaxSnrMgn Unsigned32, + vdslLineConfDownMinSnrMgn Unsigned32, + vdslLineConfDownTargetSnrMgn Unsigned32, + vdslLineConfUpMaxSnrMgn Unsigned32, + vdslLineConfUpMinSnrMgn Unsigned32, + vdslLineConfUpTargetSnrMgn Unsigned32, + vdslLineConfDownFastMaxDataRate Unsigned32, + vdslLineConfDownFastMinDataRate Unsigned32, + vdslLineConfDownSlowMaxDataRate Unsigned32, + vdslLineConfDownSlowMinDataRate Unsigned32, + vdslLineConfUpFastMaxDataRate Unsigned32, + vdslLineConfUpFastMinDataRate Unsigned32, + vdslLineConfUpSlowMaxDataRate Unsigned32, + vdslLineConfUpSlowMinDataRate Unsigned32, + vdslLineConfDownRateRatio Unsigned32, + vdslLineConfUpRateRatio Unsigned32, + vdslLineConfDownMaxInterDelay Unsigned32, + vdslLineConfUpMaxInterDelay Unsigned32, + vdslLineConfDownPboControl INTEGER, + vdslLineConfUpPboControl INTEGER, + vdslLineConfDownPboLevel Unsigned32, + vdslLineConfUpPboLevel Unsigned32, + vdslLineConfDeploymentScenario INTEGER, + vdslLineConfAdslPresence INTEGER, + vdslLineConfApplicableStandard INTEGER, + vdslLineConfBandPlan INTEGER, + vdslLineConfBandPlanFx Unsigned32, + + + + vdslLineConfBandOptUsage INTEGER, + vdslLineConfUpPsdTemplate INTEGER, + vdslLineConfDownPsdTemplate INTEGER, + vdslLineConfHamBandMask BITS, + vdslLineConfCustomNotch1Start Unsigned32, + vdslLineConfCustomNotch1Stop Unsigned32, + vdslLineConfCustomNotch2Start Unsigned32, + vdslLineConfCustomNotch2Stop Unsigned32, + vdslLineConfDownTargetSlowBurst Unsigned32, + vdslLineConfUpTargetSlowBurst Unsigned32, + vdslLineConfDownMaxFastFec Unsigned32, + vdslLineConfUpMaxFastFec Unsigned32, + vdslLineConfLineType INTEGER, + vdslLineConfProfRowStatus RowStatus + } + +vdslLineConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object identifies a row in this table. + + A default profile with an index of 'DEFVAL', will + always exist and its parameters will be set to vendor + specific values, unless otherwise specified in this + document." + ::= { vdslLineConfProfileEntry 1 } + +vdslLineConfDownRateMode OBJECT-TYPE + SYNTAX INTEGER + { + manual(1), + adaptAtInit(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the rate selection behavior for the line + in the downstream direction. + + manual(1) forces the rate to the configured rate + adaptAtInit(2) adapts the line based upon line quality." + DEFVAL { adaptAtInit } + ::= { vdslLineConfProfileEntry 2 } + +vdslLineConfUpRateMode OBJECT-TYPE + SYNTAX INTEGER + + + + { + manual(1), + adaptAtInit(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the rate selection behavior for the line + in the upstream direction. + + manual(1) forces the rate to the configured rate + adaptAtInit(2) adapts the line based upon line quality." + DEFVAL { adaptAtInit } + ::= { vdslLineConfProfileEntry 3 } + +vdslLineConfDownMaxPwr OBJECT-TYPE + SYNTAX Unsigned32 (0..58) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum aggregate downstream power + level in the range 0 to 14.5 dBm." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 4 } + +vdslLineConfUpMaxPwr OBJECT-TYPE + SYNTAX Unsigned32 (0..58) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum aggregate upstream power + level in the range 0 to 14.5 dBm." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 5 } + +vdslLineConfDownMaxSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum downstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + + + + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 6 } + +vdslLineConfDownMinSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum downstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 7 } + +vdslLineConfDownTargetSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the target downstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB. + This is the Noise Margin the transceivers must achieve + with a BER of 10^-7 or better to successfully complete + initialization." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 8 } + +vdslLineConfUpMaxSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum upstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 9 } + +vdslLineConfUpMinSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + + "Specifies the minimum upstream Signal/Noise Margin + in units of 0.25 dB, for a range of 0 to 31.75 dB." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 10 } + +vdslLineConfUpTargetSnrMgn OBJECT-TYPE + SYNTAX Unsigned32 (0..127) + UNITS "0.25dBm" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the target upstream Signal/Noise Margin in + units of 0.25 dB, for a range of 0 to 31.75 dB. This + is the Noise Margin the transceivers must achieve with + a BER of 10^-7 or better to successfully complete + initialization." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 11 } + +vdslLineConfDownFastMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum downstream fast channel + data rate in steps of 1000 bits/second." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 12 } + +vdslLineConfDownFastMinDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum downstream fast channel + data rate in steps of 1000 bits/second." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 13 } + +vdslLineConfDownSlowMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + + + + DESCRIPTION + "Specifies the maximum downstream slow channel + data rate in steps of 1000 bits/second. + + The maximum aggregate downstream transmit speed + of the line can be derived from the sum of maximum + downstream fast and slow channel data rates." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 14 } + +vdslLineConfDownSlowMinDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum downstream slow channel + data rate in steps of 1000 bits/second. + + The minimum aggregate downstream transmit speed + of the line can be derived from the sum of minimum + downstream fast and slow channel data rates." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 15 } + +vdslLineConfUpFastMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum upstream fast channel + data rate in steps of 1000 bits/second. + + The maximum aggregate upstream transmit speed + of the line can be derived from the sum of maximum + upstream fast and slow channel data rates." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 16 } + +vdslLineConfUpFastMinDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum upstream fast channel + data rate in steps of 1000 bits/second. + + + + The minimum aggregate upstream transmit speed + of the line can be derived from the sum of minimum + upstream fast and slow channel data rates." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 17 } + +vdslLineConfUpSlowMaxDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum upstream slow channel + data rate in steps of 1000 bits/second." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 18 } + +vdslLineConfUpSlowMinDataRate OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kbps" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the minimum upstream slow channel + data rate in steps of 1000 bits/second." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 19 } + +vdslLineConfDownRateRatio OBJECT-TYPE + SYNTAX Unsigned32 (0..100) + UNITS "percent" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "For dynamic rate adaptation at startup, the allocation + of data rate in excess of the minimum data rate for each + channel is controlled by the object. This object specifies + the ratio of the allocation of the excess data rate between + the fast and the slow channels. This allocation represents + downstream Fast Channel Allocation / Slow Channel + Allocation." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 20 } + +vdslLineConfUpRateRatio OBJECT-TYPE + SYNTAX Unsigned32 (0..100) + UNITS "percent" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "For dynamic rate adaptation at startup, the allocation + of data rate in excess of the minimum data rate for each + channel is controlled by the object. This object specifies + the ratio of the allocation of the excess data rate between + the fast and the slow channels. This allocation represents + upstream Fast Channel Allocation/Slow Channel Allocation." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 21 } + +vdslLineConfDownMaxInterDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum interleave delay for the + downstream slow channel." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 22 } + +vdslLineConfUpMaxInterDelay OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + UNITS "milliseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the maximum interleave delay for the + upstream slow channel." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 23 } + +vdslLineConfDownPboControl OBJECT-TYPE + SYNTAX INTEGER + { + disabled(1), + auto(2), + manual(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Downstream power backoff (PBO) control for this + line. For transceivers which do not support downstream + PBO control, this object MUST be fixed at disabled(1). + If auto(2) is selected, the transceiver will automatically + adjust the power backoff. If manual(3) is selected, + + + + then the transceiver will use the value from + vdslLineConfDownPboLevel." + DEFVAL { disabled } + ::= { vdslLineConfProfileEntry 24 } + +vdslLineConfUpPboControl OBJECT-TYPE + SYNTAX INTEGER + { + disabled(1), + auto(2), + manual(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Upstream power backoff (PBO) control for this + line. For transceivers which do not support upstream + PBO control, this object MUST be fixed at disabled(1). + If auto(2) is selected, the transceiver will automatically + adjust the power backoff. If manual(3) is selected, + then the transceiver will use the value from + vdslLineConfUpPboLevel." + DEFVAL { disabled } + ::= { vdslLineConfProfileEntry 25 } + +vdslLineConfDownPboLevel OBJECT-TYPE + SYNTAX Unsigned32 (0..160) + UNITS "0.25dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the downstream backoff level to be used + when vdslLineConfDownPboControl = manual(3)." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 26 } + +vdslLineConfUpPboLevel OBJECT-TYPE + SYNTAX Unsigned32 (0..160) + UNITS "0.25dB" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the upstream backoff level to be used + when vdslLineConfUpPboControl = manual(3)." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 27 } + +vdslLineConfDeploymentScenario OBJECT-TYPE + + + + SYNTAX INTEGER + { + fttCab(1), + fttEx(2), + other(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VDSL line deployment scenario. When using + fttCab(1), the VTU-C is located in a street cabinet. + When using fttEx(2), the VTU-C is located at the + central office. Changes to this value will have + no effect on the transceiver." + REFERENCE "DSL Forum TR-057" + DEFVAL { fttCab } + ::= { vdslLineConfProfileEntry 28 } + +vdslLineConfAdslPresence OBJECT-TYPE + SYNTAX INTEGER + { + none(1), + adslOverPots(2), + adslOverISDN(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Indicates presence of ADSL service in the associated + cable bundle/binder. + + none(1) indicates no ADSL service in the bundle + adslOverPots(2) indicates ADSL service over POTS is + present in the bundle + adslOverISDN(3) indicates ADSL service over ISDN is + present in the bundle" + DEFVAL { none } + ::= { vdslLineConfProfileEntry 29 } + +vdslLineConfApplicableStandard OBJECT-TYPE + SYNTAX INTEGER + { + ansi(1), + etsi(2), + itu(3), + other(4) + } + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The VDSL standard to be used for the line. + + ansi(1) indicates ANSI standard + etsi(2) indicates ETSI standard + itu(3) indicates ITU standard + other(4) indicates a standard other than the above." + DEFVAL { ansi } + ::= { vdslLineConfProfileEntry 30 } + +vdslLineConfBandPlan OBJECT-TYPE + SYNTAX INTEGER + { + bandPlan997(1), + bandPlan998(2), + bandPlanFx(3), + other(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The VDSL band plan to be used for the line. + + bandPlan997(1) is to be used for + ITU-T G.993.1 Bandplan-B + ETSI Bandplan + ANSI Plan 997 + + bandPlan998(2) is to be used for + ITU-T G.993.1 Bandplan-A + ANSI Plan 998 + + bandPlanFx(3) is to be used for + ITU-T G.993.1 Bandplan-C. + + other(4) is to be used for + non-standard bandplans. + + If this object is set to bandPlanFx(3), then the + object vdslLineConfBandPlanFx MUST also be set." + DEFVAL { bandPlan997 } + ::= { vdslLineConfProfileEntry 31 } + +vdslLineConfBandPlanFx OBJECT-TYPE + SYNTAX Unsigned32 (3750..12000) + UNITS "kHz" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "The frequency limit between bands D2 and U2 when + vdslLineConfBandPlan is set to bandPlanFx(3)." + DEFVAL { 3750 } + ::= { vdslLineConfProfileEntry 32 } + + vdslLineConfBandOptUsage OBJECT-TYPE + SYNTAX INTEGER + { + unused(1), + upstream(2), + downstream(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Defines the VDSL link use of the optional frequency + range [25kHz - 138kHz] (Opt). + + unused(1) indicates Opt is unused + upstream(2) indicates Opt usage is for upstream + downstream(3) indicates Opt usage is for downstream." + REFERENCE "ITU-T G.993.1, section 6.1" + DEFVAL { unused } + ::= { vdslLineConfProfileEntry 33 } + +vdslLineConfUpPsdTemplate OBJECT-TYPE + SYNTAX INTEGER + { + templateMask1(1), + templateMask2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The upstream PSD template to be used for the line. + Here, templateMask1(1) refers to a notched mask that + limits the transmitted PSD within the internationally + standardized HAM (Handheld Amateur Radio) radio bands, + while templateMask2(2) refers to an unnotched mask. + + The masks themselves depend upon the applicable + standard being used (vdslLineConfApplicableStandard)." + REFERENCE "DSL TR-057" + DEFVAL { templateMask1 } + ::= { vdslLineConfProfileEntry 34 } + + + + +vdslLineConfDownPsdTemplate OBJECT-TYPE + SYNTAX INTEGER + { + templateMask1(1), + templateMask2(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The downstream PSD template to be used for the line. + Here, templateMask1(1) refers to a notched mask that + limits the transmitted PSD within the internationally + standardized HAM (Handheld Amateur Radio) radio bands, + while templateMask2(2) refers to an unnotched mask. + + The masks themselves depend upon the applicable + standard being used (vdslLineConfApplicableStandard)." + REFERENCE "DSL TR-057" + DEFVAL { templateMask1 } + ::= { vdslLineConfProfileEntry 35 } + +vdslLineConfHamBandMask OBJECT-TYPE + SYNTAX BITS + { + customNotch1(0), -- custom (region-specific) notch + customNotch2(1), -- custom (region-specific) notch + amateurBand30m(2), -- amateur radio band notch + amateurBand40m(3), -- amateur radio band notch + amateurBand80m(4), -- amateur radio band notch + amateurBand160m(5) -- amateur radio band notch + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The transmit power spectral density mask code, used + to avoid interference with HAM (Handheld Amateur Radio) + radio bands by introducing power control (notching) in one + or more of these bands. + + Amateur radio band notching is defined in the VDSL + spectrum as follows: + + Band Start Frequency Stop Frequency + ---- ------------------ -------------------------------- + 30m 1810 kHz 2000 kHz + 40m 3500 kHz 3800 kHz (ETSI); 4000 kHz (ANSI) + 80m 7000 kHz 7100 kHz (ETSI); 7300 kHz (ANSI) + 160m 10100 kHz 10150 kHz + + + + Notching for each standard band can be enabled or disabled + via the bit mask. + + Two custom notches may be specified. If either of these + are enabled via the bit mask, then the following objects + MUST be specified: + + If customNotch1 is enabled, then both + vdslLineConfCustomNotch1Start + vdslLineConfCustomNotch1Stop + MUST be specified. + + If customNotch2 is enabled, then both + vdslLineConfCustomNotch2Start + vdslLineConfCustomNotch2Stop + MUST be specified." + REFERENCE "DSLF TR-057, section 2.6" + DEFVAL { { } } + ::= { vdslLineConfProfileEntry 36 } + +vdslLineConfCustomNotch1Start OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kHz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the start frequency of custom HAM (Handheld + Amateur Radio) notch 1. vdslLineConfCustomNotch1Start MUST + be less than or equal to vdslLineConfCustomNotch1Stop." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 37 } + +vdslLineConfCustomNotch1Stop OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kHz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the stop frequency of custom HAM (Handheld + Amateur Radio) notch 1. vdslLineConfCustomNotch1Stop MUST + be greater than or equal to vdslLineConfCustomNotch1Start." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 38 } + +vdslLineConfCustomNotch2Start OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kHz" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "Specifies the start frequency of custom HAM (Handheld + Amateur Radio) notch 2. vdslLineConfCustomNotch2Start MUST + be less than or equal to vdslLineConfCustomNotch2Stop." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 39 } + +vdslLineConfCustomNotch2Stop OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "kHz" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the stop frequency of custom HAM (Handheld + Amateur Radio) notch 2. vdslLineConfCustomNotch2Stop MUST + be greater than or equal to vdslLineConfCustomNotch2Start." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 40 } + +vdslLineConfDownTargetSlowBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..1275) + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the target level of impulse noise (burst) + protection for an interleaved (slow) channel." + REFERENCE "ITU-T G.997.1, section 7.3.2.3" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 41 } + +vdslLineConfUpTargetSlowBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..1275) + UNITS "microseconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Specifies the target level of impulse noise (burst) + protection for an interleaved (slow) channel." + REFERENCE "ITU-T G.997.1, section 7.3.2.3" + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 42 } + +vdslLineConfDownMaxFastFec OBJECT-TYPE + SYNTAX Unsigned32 (0..50) + UNITS "%" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This parameter provisions the maximum level of Forward + Error Correction (FEC) redundancy related overhead to + be maintained for a fast channel." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 43 } + +vdslLineConfUpMaxFastFec OBJECT-TYPE + SYNTAX Unsigned32 (0..50) + UNITS "%" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter provisions the maximum level of Forward + Error Correction (FEC) redundancy related overhead to + be maintained for a fast channel." + DEFVAL { 0 } + ::= { vdslLineConfProfileEntry 44 } + +vdslLineConfLineType OBJECT-TYPE + SYNTAX INTEGER + { + noChannel(1), -- no channels exist + fastOnly(2), -- only fast channel exists + interleavedOnly(3), -- only interleaved channel exists + fastOrInterleaved(4), -- either fast or interleaved channel + -- exist, but only one at a time + fastAndInterleaved(5) -- both fast and interleaved channels + -- exist + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This parameter provisions the VDSL physical entity at + start-up by defining whether and how the line will be + channelized, i.e., which channel type(s) are supported. + If the line is to be channelized, the value will be other + than noChannel(1). + + This configuration can be activated only during start-up. + Afterwards, the value of vdslLineType coincides with the + value of vdslLineConfLineType. Depending on this value, + the corresponding entries in the ifTable for the + interleaved and the fast channels are enabled or disabled + according to the value of their ifOperStatus. + + Defined values are: + + + + noChannel(1) -- no channels exist + fastOnly(2) -- only fast channel exists + interleavedOnly(3) -- only interleaved channel exists + fastOrInterleaved(4) -- either fast or interleaved channel + -- exists, but only one at a time + fastAndInterleaved(5) -- both fast and interleaved channels + -- exist + + Note that 'slow' and 'interleaved' refer to the same + channel." + REFERENCE "T1E1.4/2000-009R3, Part 1, common spec" + DEFVAL { noChannel } + ::= { vdslLineConfProfileEntry 45 } + +vdslLineConfProfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile activated by setting this object to 'active'. + When 'active' is set, the system will validate the profile. + + Before a profile can be deleted or taken out of service + (by setting this object to 'destroy' or 'outOfService'), + it must be first unreferenced from all associated lines. + + An 'active' profile may be modified at any time. Note + that some changes may require that any referenced lines be + restarted (e.g., vdslLineConfLineType)." + ::= { vdslLineConfProfileEntry 46 } + +-- +-- Alarm configuration profile table +-- + +vdslLineAlarmConfProfileTable OBJECT-TYPE + SYNTAX SEQUENCE OF VdslLineAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains information on the VDSL line alarm + configuration. One entry in this table reflects a profile + defined by a manager which can be used to configure the + VDSL line alarm thresholds. + + + + + Entries in this table MUST be maintained in a + persistent manner." + ::= { vdslMibObjects 20 } + +vdslLineAlarmConfProfileEntry OBJECT-TYPE + SYNTAX VdslLineAlarmConfProfileEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Each entry consists of a list of parameters that + represents the configuration of a VDSL line alarm + profile. + + A default profile with an index of 'DEFVAL', will + always exist and its parameters will be set to vendor + specific values, unless otherwise specified in this + document." + INDEX { vdslLineAlarmConfProfileName } + ::= { vdslLineAlarmConfProfileTable 1 } + +VdslLineAlarmConfProfileEntry ::= + SEQUENCE + { + vdslLineAlarmConfProfileName SnmpAdminString, + vdslLineAlarmConfThresh15MinLofs HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinLoss HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinLprs HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinLols HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinESs HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinSESs HCPerfIntervalThreshold, + vdslLineAlarmConfThresh15MinUASs HCPerfIntervalThreshold, + vdslLineAlarmConfInitFailure TruthValue, + vdslLineAlarmConfProfRowStatus RowStatus + } + +vdslLineAlarmConfProfileName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name for this profile as specified by an + administrator." + ::= { vdslLineAlarmConfProfileEntry 1 } + +vdslLineAlarmConfThresh15MinLofs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + + + + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + loss of frame seconds (lofs) within any given 15-minute + performance data collection interval. If the value of + loss of frame seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfLofsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 2 } + +vdslLineAlarmConfThresh15MinLoss OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + loss of signal seconds (loss) within any given 15-minute + performance data collection interval. If the value of + loss of signal seconds in a particular 15-minute + collection interval reaches/exceeds this value, a + vdslPerfLossThreshNotification notification will be + generated. One notification will be sent per interval + per endpoint." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 3 } + +vdslLineAlarmConfThresh15MinLprs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + loss of power seconds (lprs) within any given 15-minute + performance data collection interval. If the value of + loss of power seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfLprsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 4 } + +vdslLineAlarmConfThresh15MinLols OBJECT-TYPE + + + + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + loss of link seconds (lols) within any given 15-minute + performance data collection interval. If the value of + loss of power seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfLolsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 5 } + +vdslLineAlarmConfThresh15MinESs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + errored seconds (ESs) within any given 15-minute + performance data collection interval. If the value of + errored seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfESsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 6 } + +vdslLineAlarmConfThresh15MinSESs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + severely errored seconds (SESs) within any given 15-minute + performance data collection interval. If the value of + severely errored seconds in a particular 15-minute + collection interval reaches/exceeds this value, a + vdslPerfSESsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + + + + ::= { vdslLineAlarmConfProfileEntry 7 } + +vdslLineAlarmConfThresh15MinUASs OBJECT-TYPE + SYNTAX HCPerfIntervalThreshold + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object configures the threshold for the number of + unavailable seconds (UASs) within any given 15-minute + performance data collection interval. If the value of + unavailable seconds in a particular 15-minute collection + interval reaches/exceeds this value, a + vdslPerfUASsThreshNotification notification will be + generated. No more than one notification will be sent + per interval." + DEFVAL { 0 } + ::= { vdslLineAlarmConfProfileEntry 8 } + +vdslLineAlarmConfInitFailure OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies if a vdslInitFailureNotification + notification will be generated if an initialization + failure occurs." + DEFVAL { false } + ::= { vdslLineAlarmConfProfileEntry 9 } + +vdslLineAlarmConfProfRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create a new row or modify or + delete an existing row in this table. + + A profile activated by setting this object to 'active'. + When 'active' is set, the system will validate the profile. + + Before a profile can be deleted or taken out of service, + (by setting this object to 'destroy' or 'outOfService') it + must be first unreferenced from all associated lines. + + An 'active' profile may be modified at any time." + ::= { vdslLineAlarmConfProfileEntry 10 } + + + + +-- Notification definitions + +vdslNotifications OBJECT IDENTIFIER ::= { vdslLineMib 0 } + +vdslPerfLofsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinLofs + } + STATUS current + DESCRIPTION + "Loss of Framing 15-minute interval threshold + (vdslLineAlarmConfThresh15MinLofs) reached." + ::= { vdslNotifications 1 } + +vdslPerfLossThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinLoss + } + STATUS current + DESCRIPTION + "Loss of Signal 15-minute interval threshold + (vdslLineAlarmConfThresh15MinLoss) reached." + ::= { vdslNotifications 2 } + +vdslPerfLprsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinLprs + } + STATUS current + DESCRIPTION + "Loss of Power 15-minute interval threshold + (vdslLineAlarmConfThresh15MinLprs) reached." + ::= { vdslNotifications 3 } + +vdslPerfLolsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinLols + } + STATUS current + DESCRIPTION + "Loss of Link 15-minute interval threshold + (vdslLineAlarmConfThresh15MinLols) reached." + ::= { vdslNotifications 4 } + +vdslPerfESsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinESs + } + + + + STATUS current + DESCRIPTION + "Errored Seconds 15-minute interval threshold + (vdslLineAlarmConfThresh15MinESs) reached." + ::= { vdslNotifications 5 } + +vdslPerfSESsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinSESs + } + STATUS current + DESCRIPTION + "Severely Errored Seconds 15-minute interval threshold + (vdslLineAlarmConfThresh15MinSESs) reached." + ::= { vdslNotifications 6 } + +vdslPerfUASsThreshNotification NOTIFICATION-TYPE + OBJECTS { + vdslPerfDataCurr15MinUASs + } + STATUS current + DESCRIPTION + "Unavailable Seconds 15-minute interval threshold + (vdslLineAlarmConfThresh15MinUASs) reached." + ::= { vdslNotifications 7 } + +vdslDownMaxSnrMgnNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrSnrMgn + } + STATUS current + DESCRIPTION + "The downstream Signal to Noise Margin exceeded + vdslLineConfDownMaxSnrMgn. The object + vdslPhysCurrSnrMgn will contain the Signal to Noise + margin as measured by the VTU-R." + ::= { vdslNotifications 8 } + +vdslDownMinSnrMgnNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrSnrMgn + } + STATUS current + DESCRIPTION + "The downstream Signal to Noise Margin fell below + vdslLineConfDownMinSnrMgn. The object vdslPhysCurrSnrMgn + will contain the Signal to Noise margin as measured by + the VTU-R." + + + + ::= { vdslNotifications 9 } + +vdslUpMaxSnrMgnNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrSnrMgn + } + STATUS current + DESCRIPTION + "The upstream Signal to Noise Margin exceeded + vdslLineConfUpMaxSnrMgn. The object vdslPhysCurrSnrMgn + will contain the Signal to Noise margin as measured + by the VTU-C." + ::= { vdslNotifications 10 } + +vdslUpMinSnrMgnNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrSnrMgn + } + STATUS current + DESCRIPTION + "The upstream Signal to Noise Margin fell below + vdslLineConfUpMinSnrMgn. The object vdslPhysCurrSnrMgn + will contain the Signal to Noise margin as measured + by the VTU-C." + ::= { vdslNotifications 11 } + +vdslInitFailureNotification NOTIFICATION-TYPE + OBJECTS { + vdslPhysCurrStatus + } + STATUS current + DESCRIPTION + "Vtu initialization failed. See vdslPhysCurrStatus for + potential reasons." + ::= { vdslNotifications 12 } + +-- conformance information + +vdslConformance OBJECT IDENTIFIER ::= { vdslLineMib 3 } +vdslGroups OBJECT IDENTIFIER ::= { vdslConformance 1 } +vdslCompliances OBJECT IDENTIFIER ::= { vdslConformance 2 } + +vdslLineMibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + manage VDSL interfaces." + + + + + MODULE -- this module + MANDATORY-GROUPS + { + vdslGroup, + vdslNotificationGroup + } + ::= { vdslCompliances 1 } + +-- units of conformance + + vdslGroup OBJECT-GROUP + OBJECTS + { + vdslLineCoding, + vdslLineType, + vdslLineConfProfile, + vdslLineAlarmConfProfile, + vdslPhysInvSerialNumber, + vdslPhysInvVendorID, + vdslPhysInvVersionNumber, + vdslPhysCurrSnrMgn, + vdslPhysCurrAtn, + vdslPhysCurrStatus, + vdslPhysCurrOutputPwr, + vdslPhysCurrAttainableRate, + vdslPhysCurrLineRate, + vdslChanInterleaveDelay, + vdslChanCrcBlockLength, + vdslChanCurrTxRate, + vdslChanCurrTxSlowBurstProtect, + vdslChanCurrTxFastFec, + vdslPerfDataValidIntervals, + vdslPerfDataInvalidIntervals, + vdslPerfDataLofs, + vdslPerfDataLoss, + vdslPerfDataLprs, + vdslPerfDataLols, + vdslPerfDataESs, + vdslPerfDataSESs, + vdslPerfDataUASs, + vdslPerfDataInits, + vdslPerfDataCurr15MinTimeElapsed, + vdslPerfDataCurr15MinLofs, + vdslPerfDataCurr15MinLoss, + vdslPerfDataCurr15MinLprs, + vdslPerfDataCurr15MinLols, + vdslPerfDataCurr15MinESs, + vdslPerfDataCurr15MinSESs, + + + + vdslPerfDataCurr15MinUASs, + vdslPerfDataCurr15MinInits, + vdslPerfData1DayValidIntervals, + vdslPerfData1DayInvalidIntervals, + vdslPerfDataCurr1DayTimeElapsed, + vdslPerfDataCurr1DayLofs, + vdslPerfDataCurr1DayLoss, + vdslPerfDataCurr1DayLprs, + vdslPerfDataCurr1DayLols, + vdslPerfDataCurr1DayESs, + vdslPerfDataCurr1DaySESs, + vdslPerfDataCurr1DayUASs, + vdslPerfDataCurr1DayInits, + vdslPerfIntervalLofs, + vdslPerfIntervalLoss, + vdslPerfIntervalLprs, + vdslPerfIntervalLols, + vdslPerfIntervalESs, + vdslPerfIntervalSESs, + vdslPerfIntervalUASs, + vdslPerfIntervalInits, + vdslPerf1DayIntervalMoniSecs, + vdslPerf1DayIntervalLofs, + vdslPerf1DayIntervalLoss, + vdslPerf1DayIntervalLprs, + vdslPerf1DayIntervalLols, + vdslPerf1DayIntervalESs, + vdslPerf1DayIntervalSESs, + vdslPerf1DayIntervalUASs, + vdslPerf1DayIntervalInits, + vdslChanValidIntervals, + vdslChanInvalidIntervals, + vdslChanFixedOctets, + vdslChanBadBlks, + vdslChanCurr15MinTimeElapsed, + vdslChanCurr15MinFixedOctets, + vdslChanCurr15MinBadBlks, + vdslChan1DayValidIntervals, + vdslChan1DayInvalidIntervals, + vdslChanCurr1DayTimeElapsed, + vdslChanCurr1DayFixedOctets, + vdslChanCurr1DayBadBlks, + vdslChanIntervalFixedOctets, + vdslChanIntervalBadBlks, + vdslChan1DayIntervalMoniSecs, + vdslChan1DayIntervalFixedOctets, + vdslChan1DayIntervalBadBlks, + vdslLineConfDownRateMode, + + + + vdslLineConfUpRateMode, + vdslLineConfDownMaxPwr, + vdslLineConfUpMaxPwr, + vdslLineConfDownMaxSnrMgn, + vdslLineConfDownMinSnrMgn, + vdslLineConfDownTargetSnrMgn, + vdslLineConfUpMaxSnrMgn, + vdslLineConfUpMinSnrMgn, + vdslLineConfUpTargetSnrMgn, + vdslLineConfDownFastMaxDataRate, + vdslLineConfDownFastMinDataRate, + vdslLineConfDownSlowMaxDataRate, + vdslLineConfDownSlowMinDataRate, + vdslLineConfUpFastMaxDataRate, + vdslLineConfUpFastMinDataRate, + vdslLineConfUpSlowMaxDataRate, + vdslLineConfUpSlowMinDataRate, + vdslLineConfDownRateRatio, + vdslLineConfUpRateRatio, + vdslLineConfDownMaxInterDelay, + vdslLineConfUpMaxInterDelay, + vdslLineConfDownPboControl, + vdslLineConfUpPboControl, + vdslLineConfDownPboLevel, + vdslLineConfUpPboLevel, + vdslLineConfDeploymentScenario, + vdslLineConfAdslPresence, + vdslLineConfApplicableStandard, + vdslLineConfBandPlan, + vdslLineConfBandPlanFx, + vdslLineConfBandOptUsage, + vdslLineConfUpPsdTemplate, + vdslLineConfDownPsdTemplate, + vdslLineConfHamBandMask, + vdslLineConfCustomNotch1Start, + vdslLineConfCustomNotch1Stop, + vdslLineConfCustomNotch2Start, + vdslLineConfCustomNotch2Stop, + vdslLineConfDownTargetSlowBurst, + vdslLineConfUpTargetSlowBurst, + vdslLineConfDownMaxFastFec, + vdslLineConfUpMaxFastFec, + vdslLineConfLineType, + vdslLineConfProfRowStatus, + vdslLineAlarmConfThresh15MinLofs, + vdslLineAlarmConfThresh15MinLoss, + vdslLineAlarmConfThresh15MinLprs, + vdslLineAlarmConfThresh15MinLols, + + + + vdslLineAlarmConfThresh15MinESs, + vdslLineAlarmConfThresh15MinSESs, + vdslLineAlarmConfThresh15MinUASs, + vdslLineAlarmConfInitFailure, + vdslLineAlarmConfProfRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + a VDSL Line." + ::= { vdslGroups 1 } + + vdslNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS + { + vdslPerfLofsThreshNotification, + vdslPerfLossThreshNotification, + vdslPerfLprsThreshNotification, + vdslPerfLolsThreshNotification, + vdslPerfESsThreshNotification, + vdslPerfSESsThreshNotification, + vdslPerfUASsThreshNotification, + vdslDownMaxSnrMgnNotification, + vdslDownMinSnrMgnNotification, + vdslUpMaxSnrMgnNotification, + vdslUpMinSnrMgnNotification, + vdslInitFailureNotification + } + STATUS current + DESCRIPTION + "This group supports notifications of significant + conditions associated with VDSL Lines." + ::= { vdslGroups 2 } + +END diff --git a/mibs/ietf/VPN-TC-STD-MIB b/mibs/ietf/VPN-TC-STD-MIB new file mode 100644 index 0000000..2944290 --- /dev/null +++ b/mibs/ietf/VPN-TC-STD-MIB @@ -0,0 +1,76 @@ +VPN-TC-STD-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, mib-2 + FROM SNMPv2-SMI + + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +vpnTcMIB MODULE-IDENTITY + LAST-UPDATED "200511150000Z" -- 15 November 2005 + ORGANIZATION + "Layer 3 Virtual Private Networks (L3VPN) Working Group." + + + + CONTACT-INFO + "Benson Schliesser + bensons@savvis.net + + Thomas D. Nadeau + tnadeau@cisco.com + + This TC MIB is a product of the PPVPN + http://www.ietf.org/html.charters/ppvpn-charter.html + and subsequently the L3VPN + http://www.ietf.org/html.charters/l3vpn-charter.html + working groups. + + Comments and discussion should be directed to + l3vpn@ietf.org" + DESCRIPTION + "This MIB contains TCs for VPNs. + + Copyright (C) The Internet Society (2005). This version + of this MIB module is part of RFC 4265; see the RFC + itself for full legal notices." + -- Revision history. + REVISION "200511150000Z" -- 15 November 2005 + DESCRIPTION "Initial version, published as RFC 4265." + ::= { mib-2 129 } + +-- definition of textual conventions + +VPNId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The purpose of a VPN-ID is to uniquely identify a VPN. + The Global VPN Identifier format is: + 3 octet VPN Authority, Organizationally Unique Identifier + followed by 4 octet VPN index identifying VPN according + to OUI" + REFERENCE + "Fox, B. and Gleeson, B., 'Virtual Private Networks + Identifier', RFC 2685, September 1999." + SYNTAX OCTET STRING (SIZE (7)) + +VPNIdOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This textual convention is an extension of the + VPNId textual convention that defines a non-zero-length + OCTET STRING to identify a physical entity. This extension + permits the additional value of a zero-length OCTET STRING. + + + + The semantics of the value zero-length OCTET STRING are + object-specific and must therefore be defined + as part of the description of any object that uses this + syntax. Examples of usage of this extension are + situations where none or all VPN IDs need to be + referenced." + SYNTAX OCTET STRING (SIZE (0 | 7)) + +END diff --git a/mibs/ietf/VRRP-MIB b/mibs/ietf/VRRP-MIB new file mode 100644 index 0000000..81a2f74 --- /dev/null +++ b/mibs/ietf/VRRP-MIB @@ -0,0 +1,792 @@ +VRRP-MIB DEFINITIONS ::= BEGIN + + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + NOTIFICATION-TYPE, Counter32, + Integer32, IpAddress, mib-2 FROM SNMPv2-SMI + + TEXTUAL-CONVENTION, RowStatus, + MacAddress, TruthValue, TimeStamp FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, + NOTIFICATION-GROUP FROM SNMPv2-CONF + ifIndex FROM IF-MIB; + + + vrrpMIB MODULE-IDENTITY + LAST-UPDATED "200003030000Z" + ORGANIZATION "IETF VRRP Working Group" + CONTACT-INFO + "Brian R. Jewell + Postal: Copper Mountain Networks, Inc. + 2470 Embarcadero Way + Palo Alto, California 94303 + Tel: +1 650 687 3367 + E-Mail: bjewell@coppermountain.com" + + DESCRIPTION + "This MIB describes objects used for managing Virtual Router + Redundancy Protocol (VRRP) routers." + REVISION "200003030000Z" -- 03 Mar 2000 + DESCRIPTION "Initial version as published in RFC 2787." + ::= { mib-2 68 } + +-- ******************************************************************* +-- Textual Conventions +-- ******************************************************************* + + VrId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A number which, along with an interface index (ifIndex), + serves to uniquely identify a virtual router on a given VRRP + router. A set of one or more associated addresses is assigned + to a VRID." + SYNTAX Integer32 (1..255) + +-- ******************************************************************* +-- VRRP MIB Groups +-- ******************************************************************* + + vrrpOperations OBJECT IDENTIFIER ::= { vrrpMIB 1 } + vrrpStatistics OBJECT IDENTIFIER ::= { vrrpMIB 2 } + vrrpConformance OBJECT IDENTIFIER ::= { vrrpMIB 3 } + + +-- ******************************************************************* +-- Start of MIB objects +-- ******************************************************************* + + vrrpNodeVersion OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This value identifies the particular version of the VRRP + supported by this node." + ::= { vrrpOperations 1 } + + vrrpNotificationCntl OBJECT-TYPE + SYNTAX INTEGER { + enabled (1), + disabled (2) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the VRRP-enabled router will generate + SNMP traps for events defined in this MIB. 'Enabled' + results in SNMP traps; 'disabled', no traps are sent." + DEFVAL { enabled } + ::= { vrrpOperations 2 } + +-- ******************************************************************* +-- VRRP Operations Table +-- ******************************************************************* + + vrrpOperTable OBJECT-TYPE + SYNTAX SEQUENCE OF VrrpOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Operations table for a VRRP router which consists of a + sequence (i.e., one or more conceptual rows) of + 'vrrpOperEntry' items." + ::= { vrrpOperations 3 } + + vrrpOperEntry OBJECT-TYPE + SYNTAX VrrpOperEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the vrrpOperTable containing the operational + characteristics of a virtual router. On a VRRP router, + a given virtual router is identified by a combination + of the IF index and VRID. + + Rows in the table cannot be modified unless the value + of `vrrpOperAdminState' is `disabled' and the + `vrrpOperState' has transitioned to `initialize'." + + INDEX { ifIndex, vrrpOperVrId } + ::= { vrrpOperTable 1 } + + VrrpOperEntry ::= + SEQUENCE { + vrrpOperVrId + VrId, + vrrpOperVirtualMacAddr + MacAddress, + vrrpOperState + INTEGER, + vrrpOperAdminState + INTEGER, + vrrpOperPriority + Integer32, + vrrpOperIpAddrCount + Integer32, + vrrpOperMasterIpAddr + IpAddress, + vrrpOperPrimaryIpAddr + IpAddress, + vrrpOperAuthType + INTEGER, + vrrpOperAuthKey + OCTET STRING, + vrrpOperAdvertisementInterval + Integer32, + vrrpOperPreemptMode + TruthValue, + vrrpOperVirtualRouterUpTime + TimeStamp, + vrrpOperProtocol + INTEGER, + vrrpOperRowStatus + RowStatus + } + + vrrpOperVrId OBJECT-TYPE + SYNTAX VrId + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This object contains the Virtual Router Identifier (VRID)." + ::= { vrrpOperEntry 1 } + + vrrpOperVirtualMacAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The virtual MAC address of the virtual router. Although this + object can be derived from the 'vrrpOperVrId' object, it is + defined so that it is easily obtainable by a management + application and can be included in VRRP-related SNMP traps." + ::= { vrrpOperEntry 2 } + + vrrpOperState OBJECT-TYPE + SYNTAX INTEGER { + initialize(1), + backup(2), + master(3) + } + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The current state of the virtual router. This object has + three defined values: + + - `initialize', which indicates that all the + virtual router is waiting for a startup event. + + - `backup', which indicates the virtual router is + monitoring the availability of the master router. + + - `master', which indicates that the virtual router + is forwarding packets for IP addresses that are + associated with this router. + + Setting the `vrrpOperAdminState' object (below) initiates + transitions in the value of this object." + ::= { vrrpOperEntry 3 } + + vrrpOperAdminState OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object will enable/disable the virtual router + function. Setting the value to `up', will transition + the state of the virtual router from `initialize' to `backup' + or `master', depending on the value of `vrrpOperPriority'. + Setting the value to `down', will transition the + router from `master' or `backup' to `initialize'. State + transitions may not be immediate; they sometimes depend on + other factors, such as the interface (IF) state. + + The `vrrpOperAdminState' object must be set to `down' prior + to modifying the other read-create objects in the conceptual + row. The value of the `vrrpOperRowStatus' object (below) + must be `active', signifying that the conceptual row + is valid (i.e., the objects are correctly set), + in order for this object to be set to `up'." + DEFVAL { down } + ::= { vrrpOperEntry 4 } + + vrrpOperPriority OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object specifies the priority to be used for the + virtual router master election process. Higher values imply + higher priority. + + A priority of '0', although not settable, is sent by + the master router to indicate that this router has ceased + to participate in VRRP and a backup virtual router should + transition to become a new master. + + A priority of 255 is used for the router that owns the + associated IP address(es)." + DEFVAL { 100 } + ::= { vrrpOperEntry 5 } + + vrrpOperIpAddrCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of IP addresses that are associated with this + virtual router. This number is equal to the number of rows + in the vrrpAssoIpAddrTable that correspond to a given IF + index/VRID pair." + ::= { vrrpOperEntry 6 } + + vrrpOperMasterIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The master router's real (primary) IP address. This is + the IP address listed as the source in VRRP advertisement + last received by this virtual router." + ::= { vrrpOperEntry 7 } + + vrrpOperPrimaryIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "In the case where there is more than one IP address for + a given `ifIndex', this object is used to specify the IP + address that will become the `vrrpOperMasterIpAddr', should + the virtual router transition from backup to master. If + this object is set to 0.0.0.0, the IP address which is + numerically lowest will be selected." + DEFVAL { '00000000'H } -- 0.0.0.0 + ::= { vrrpOperEntry 8 } + + vrrpOperAuthType OBJECT-TYPE + SYNTAX INTEGER { + noAuthentication(1), -- VRRP protocol exchanges are not + -- authenticated. + simpleTextPassword(2), -- Exchanges are authenticated by a + -- clear text password. + ipAuthenticationHeader(3) -- Exchanges are authenticated using + -- the IP authentication header. + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Authentication type used for VRRP protocol exchanges between + virtual routers. This value of this object is the same for a + given ifIndex. + + New enumerations to this list can only be added via a new + RFC on the standards track." + DEFVAL { noAuthentication } + ::= { vrrpOperEntry 9 } + + vrrpOperAuthKey OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The Authentication Key. This object is set according to + the value of the 'vrrpOperAuthType' object + ('simpleTextPassword' or 'ipAuthenticationHeader'). If the + length of the value is less than 16 octets, the agent will + left adjust and zero fill to 16 octets. The value of this + object is the same for a given ifIndex. + + When read, vrrpOperAuthKey always returns an Octet String + of length zero." + ::= { vrrpOperEntry 10 } + + vrrpOperAdvertisementInterval OBJECT-TYPE + SYNTAX Integer32 (1..255) + UNITS "seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The time interval, in seconds, between sending + advertisement messages. Only the master router sends + VRRP advertisements." + DEFVAL { 1 } + ::= { vrrpOperEntry 11 } + + vrrpOperPreemptMode OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Controls whether a higher priority virtual router will + preempt a lower priority master." + DEFVAL { true } + ::= { vrrpOperEntry 12 } + + vrrpOperVirtualRouterUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This is the value of the `sysUpTime' object when this + virtual router (i.e., the `vrrpOperState') transitioned + out of `initialized'." + ::= { vrrpOperEntry 13 } + + vrrpOperProtocol OBJECT-TYPE + SYNTAX INTEGER { + ip (1), + bridge (2), + decnet (3), + other (4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The particular protocol being controlled by this Virtual + Router. + + New enumerations to this list can only be added via a new + RFC on the standards track." + DEFVAL { ip } + ::= { vrrpOperEntry 14 } + + vrrpOperRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used in accordance to installation + and removal conventions for conceptual rows. The rowstatus of + a currently active row in the vrrpOperTable is constrained + by the operational state of the corresponding virtual router. + When `vrrpOperRowStatus' is set to active(1), no other + objects in the conceptual row, with the exception of + `vrrpOperAdminState', can be modified. Prior to setting the + `vrrpOperRowStatus' object from `active' to a different value, + the `vrrpOperAdminState' object must be set to `down' and the + `vrrpOperState' object be transitioned to `initialize'. + + To create a row in this table, a manager sets this object + to either createAndGo(4) or createAndWait(5). Until instances + of all corresponding columns are appropriately configured, + the value of the corresponding instance of the `vrrpOperRowStatus' + column will be read as notReady(3). + In particular, a newly created row cannot be made active(1) + until (minimally) the corresponding instance of + `vrrpOperVrId' has been set and there is at least one active + row in the `vrrpAssoIpAddrTable' defining an associated + IP address for the virtual router." + ::= { vrrpOperEntry 15 } + + +-- ******************************************************************* +-- VRRP Associated IP Address Table +-- ******************************************************************* + + vrrpAssoIpAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF VrrpAssoIpAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of addresses associated with this virtual router." + ::= { vrrpOperations 4 } + + vrrpAssoIpAddrEntry OBJECT-TYPE + SYNTAX VrrpAssoIpAddrEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table contains an IP address that is + associated with a virtual router. The number of rows for + a given ifIndex and VrId will equal the number of IP + addresses associated (e.g., backed up) by the virtual + router (equivalent to 'vrrpOperIpAddrCount'). + + Rows in the table cannot be modified unless the value + of `vrrpOperAdminState' is `disabled' and the + `vrrpOperState' has transitioned to `initialize'." + + INDEX { ifIndex, vrrpOperVrId, vrrpAssoIpAddr } + ::= { vrrpAssoIpAddrTable 1 } + + VrrpAssoIpAddrEntry ::= + SEQUENCE { + vrrpAssoIpAddr + IpAddress, + vrrpAssoIpAddrRowStatus + RowStatus + } + + vrrpAssoIpAddr OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The assigned IP addresses that a virtual router is + responsible for backing up." + ::= { vrrpAssoIpAddrEntry 1 } + + vrrpAssoIpAddrRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The row status variable, used according to installation + and removal conventions for conceptual rows. Setting this + object to active(1) or createAndGo(4) results in the + addition of an associated address for a virtual router. + Destroying the entry or setting it to notInService(2) + removes the associated address from the virtual router. + The use of other values is implementation-dependent." + ::= { vrrpAssoIpAddrEntry 2 } + + +-- ******************************************************************* +-- VRRP Router Statistics +-- ******************************************************************* + + vrrpRouterChecksumErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received with an invalid + VRRP checksum value." + ::= { vrrpStatistics 1 } + + vrrpRouterVersionErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received with an unknown + or unsupported version number." + ::= { vrrpStatistics 2 } + + vrrpRouterVrIdErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received with an invalid + VRID for this virtual router." + ::= { vrrpStatistics 3 } + +-- ******************************************************************* +-- VRRP Router Statistics Table +-- ******************************************************************* + + vrrpRouterStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF VrrpRouterStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of virtual router statistics." + ::= { vrrpStatistics 4 } + + vrrpRouterStatsEntry OBJECT-TYPE + SYNTAX VrrpRouterStatsEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing statistics information + about a given virtual router." + AUGMENTS { vrrpOperEntry } + ::= { vrrpRouterStatsTable 1 } + + VrrpRouterStatsEntry ::= + SEQUENCE { + vrrpStatsBecomeMaster + Counter32, + vrrpStatsAdvertiseRcvd + Counter32, + vrrpStatsAdvertiseIntervalErrors + Counter32, + vrrpStatsAuthFailures + Counter32, + vrrpStatsIpTtlErrors + Counter32, + vrrpStatsPriorityZeroPktsRcvd + Counter32, + vrrpStatsPriorityZeroPktsSent + Counter32, + vrrpStatsInvalidTypePktsRcvd + Counter32, + vrrpStatsAddressListErrors + Counter32, + vrrpStatsInvalidAuthType + Counter32, + vrrpStatsAuthTypeMismatch + Counter32, + vrrpStatsPacketLengthErrors + Counter32 + } + + vrrpStatsBecomeMaster OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of times that this virtual router's state + has transitioned to MASTER." + ::= { vrrpRouterStatsEntry 1 } + + vrrpStatsAdvertiseRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP advertisements received by this + virtual router." + ::= { vrrpRouterStatsEntry 2 } + + vrrpStatsAdvertiseIntervalErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP advertisement packets received + for which the advertisement interval is different than the + one configured for the local virtual router." + ::= { vrrpRouterStatsEntry 3 } + + vrrpStatsAuthFailures OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received that do not pass + the authentication check." + ::= { vrrpRouterStatsEntry 4 } + + vrrpStatsIpTtlErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received by the virtual + router with IP TTL (Time-To-Live) not equal to 255." + ::= { vrrpRouterStatsEntry 5 } + + vrrpStatsPriorityZeroPktsRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets received by the virtual + router with a priority of '0'." + ::= { vrrpRouterStatsEntry 6 } + + vrrpStatsPriorityZeroPktsSent OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of VRRP packets sent by the virtual router + with a priority of '0'." + ::= { vrrpRouterStatsEntry 7 } + + vrrpStatsInvalidTypePktsRcvd OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of VRRP packets received by the virtual router + with an invalid value in the 'type' field." + ::= { vrrpRouterStatsEntry 8 } + + vrrpStatsAddressListErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received for which the address + list does not match the locally configured list for the + virtual router." + ::= { vrrpRouterStatsEntry 9 } + + vrrpStatsInvalidAuthType OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received with an unknown + authentication type." + ::= { vrrpRouterStatsEntry 10 } + + vrrpStatsAuthTypeMismatch OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received with 'Auth Type' not + equal to the locally configured authentication method + (`vrrpOperAuthType')." + ::= { vrrpRouterStatsEntry 11 } + + vrrpStatsPacketLengthErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets received with a packet length + less than the length of the VRRP header." + ::= { vrrpRouterStatsEntry 12 } + +-- ******************************************************************* +-- Trap Definitions +-- ******************************************************************* + + vrrpNotifications OBJECT IDENTIFIER ::= { vrrpMIB 0 } + + vrrpTrapPacketSrc OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The IP address of an inbound VRRP packet. Used by + vrrpTrapAuthFailure trap." + ::= { vrrpOperations 5 } + + vrrpTrapAuthErrorType OBJECT-TYPE + SYNTAX INTEGER { + invalidAuthType (1), + authTypeMismatch (2), + authFailure (3) + } + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "Potential types of configuration conflicts. + Used by vrrpAuthFailure trap." + ::= { vrrpOperations 6 } + + vrrpTrapNewMaster NOTIFICATION-TYPE + OBJECTS { vrrpOperMasterIpAddr + } + STATUS current + DESCRIPTION + "The newMaster trap indicates that the sending agent + has transitioned to 'Master' state." + ::= { vrrpNotifications 1 } + + vrrpTrapAuthFailure NOTIFICATION-TYPE + OBJECTS { vrrpTrapPacketSrc, + vrrpTrapAuthErrorType + } + STATUS current + DESCRIPTION + "A vrrpAuthFailure trap signifies that a packet has + been received from a router whose authentication key + or authentication type conflicts with this router's + authentication key or authentication type. Implementation + of this trap is optional." + ::= { vrrpNotifications 2 } + + +-- ******************************************************************* +-- Conformance Information +-- ******************************************************************* + + vrrpMIBCompliances OBJECT IDENTIFIER ::= { vrrpConformance 1 } + vrrpMIBGroups OBJECT IDENTIFIER ::= { vrrpConformance 2 } + +-- ................................................................... +-- Compliance Statements +-- ................................................................... + + vrrpMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The core compliance statement for all VRRP implementations." + MODULE -- this module + MANDATORY-GROUPS { + vrrpOperGroup, + vrrpStatsGroup + } + OBJECT vrrpOperPriority + WRITE-SYNTAX Integer32 (1..255) + DESCRIPTION "SETable values are from 1 to 255." + ::= { vrrpMIBCompliances 1 } + +-- ................................................................... +-- Conformance Groups +-- ................................................................... + + vrrpOperGroup OBJECT-GROUP + OBJECTS { + vrrpNodeVersion, + vrrpNotificationCntl, + vrrpOperVirtualMacAddr, + vrrpOperState, + vrrpOperAdminState, + vrrpOperPriority, + vrrpOperIpAddrCount, + vrrpOperMasterIpAddr, + vrrpOperPrimaryIpAddr, + vrrpOperAuthType, + vrrpOperAuthKey, + vrrpOperAdvertisementInterval, + vrrpOperPreemptMode, + vrrpOperVirtualRouterUpTime, + vrrpOperProtocol, + vrrpOperRowStatus, + vrrpAssoIpAddrRowStatus + } + STATUS current + DESCRIPTION + "Conformance group for VRRP operations." + ::= { vrrpMIBGroups 1 } + + vrrpStatsGroup OBJECT-GROUP + OBJECTS { + vrrpRouterChecksumErrors, + vrrpRouterVersionErrors, + vrrpRouterVrIdErrors, + vrrpStatsBecomeMaster, + vrrpStatsAdvertiseRcvd, + vrrpStatsAdvertiseIntervalErrors, + vrrpStatsAuthFailures, + vrrpStatsIpTtlErrors, + vrrpStatsPriorityZeroPktsRcvd, + vrrpStatsPriorityZeroPktsSent, + vrrpStatsInvalidTypePktsRcvd, + vrrpStatsAddressListErrors, + vrrpStatsInvalidAuthType, + vrrpStatsAuthTypeMismatch, + vrrpStatsPacketLengthErrors + } + STATUS current + DESCRIPTION + "Conformance group for VRRP statistics." + ::= { vrrpMIBGroups 2 } + + vrrpTrapGroup OBJECT-GROUP + OBJECTS { + vrrpTrapPacketSrc, + vrrpTrapAuthErrorType + } + STATUS current + DESCRIPTION + "Conformance group for objects contained in VRRP notifications." + ::= { vrrpMIBGroups 3 } + + vrrpNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + vrrpTrapNewMaster, + vrrpTrapAuthFailure + } + STATUS current + DESCRIPTION + "The VRRP MIB Notification Group." + ::= { vrrpMIBGroups 4 } + +END diff --git a/mibs/ietf/WWW-MIB b/mibs/ietf/WWW-MIB new file mode 100644 index 0000000..83f831e --- /dev/null +++ b/mibs/ietf/WWW-MIB @@ -0,0 +1,1276 @@ +WWW-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, mib-2, + Counter32, Counter64, Integer32, Unsigned32, TimeTicks + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString, DateAndTime, TimeInterval + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + + Utf8String + FROM SYSAPPL-MIB; + +wwwMIB MODULE-IDENTITY + LAST-UPDATED "9902251400Z" + ORGANIZATION "IETF Application MIB Working Group" + CONTACT-INFO + " Harrie Hazewinkel + + Postal: Joint Research Centre of the E.C. + via Fermi - Ispra 21020 (VA) + Italy + + Tel: +39+(0)332 786322 + Fax: +39+(0)332 785641 + E-mail: harrie.hazewinkel@jrc.it + + Carl W. Kalbfleisch + + Postal: Verio, Inc. + 1950 Stemmons Freeway + Suite 2006 + Dallas, TX 75207 + US + + Tel: +1 214 290-8653 + Fax: +1 214 744-0742 + E-mail: cwk@verio.net + + Juergen Schoenwaelder + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391-3683 + Fax: +49 531 489-5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "This WWW service MIB module is applicable to services + realized by a family of 'Document Transfer Protocols' + (DTP). Examples of DTPs are HTTP and FTP." + + -- revision history + + REVISION "9902251400Z" + DESCRIPTION "Initial version, published as RFC2594." + + ::= { mib-2 65 } + +-- +-- Object Identifier Assignments +-- + +wwwMIBObjects OBJECT IDENTIFIER ::= { wwwMIB 1 } +wwwMIBConformance OBJECT IDENTIFIER ::= { wwwMIB 2 } + +-- +-- Textual Conventions +-- + +WwwRequestType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The WwwRequestType defines the textual identification of + request types used by a document transfer protocol. For + the proper values for a given DTP, refer to the protocol + mappings for that DTP." + SYNTAX OCTET STRING (SIZE (1..40)) + +WwwResponseType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The WwwResponseType defines the different response values + used by document transfer protocols. For the proper values + for a given DTP, refer to the protocol mappings for that + DTP." + SYNTAX Integer32 (0..2147483647) + +WwwOperStatus ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The operational status of a WWW service. 'down' indicates + that the service is not available. 'running' indicates + that the service is operational and available. 'halted' + indicates that the service is operational but not + available. 'congested' indicates that the service is + operational but no additional inbound associations can be + accommodated. 'restarting' indicates that the service is + currently unavailable but is in the process of restarting + and will be available soon." + SYNTAX INTEGER { + down(1), + running(2), + halted(3), + congested(4), + restarting(5) + } + +WwwDocName ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "The server relative name of a document. If the URL were + http://www.x.org/standards/search/search.cgi?string=test + then the value of this textual convention would resolve + to '/standards/search/search.cgi'. This textual convention + uses the character set for URIs as defined in RFC 2396 + section 2." + SYNTAX OCTET STRING (SIZE (0..255)) + + +-- The WWW Service Information Group +-- +-- The WWW service information group contains information about +-- the WWW services known by the SNMP agent. + +wwwService OBJECT IDENTIFIER ::= { wwwMIBObjects 1 } + +wwwServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of the WWW services known by the SNMP agent." + ::= { wwwService 1 } + +wwwServiceEntry OBJECT-TYPE + SYNTAX WwwServiceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Details about a particular WWW service." + INDEX { wwwServiceIndex } + ::= { wwwServiceTable 1 } + +WwwServiceEntry ::= SEQUENCE { + wwwServiceIndex Unsigned32, + wwwServiceDescription Utf8String, + wwwServiceContact Utf8String, + wwwServiceProtocol OBJECT IDENTIFIER, + wwwServiceName DisplayString, + wwwServiceType INTEGER, + wwwServiceStartTime DateAndTime, + wwwServiceOperStatus WwwOperStatus, + wwwServiceLastChange DateAndTime +} + +wwwServiceIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An integer used to uniquely identify a WWW service. The + value must be the same as the corresponding value of the + applSrvIndex defined in the Application Management MIB + (APPLICATION-MIB) if the applSrvIndex object is available. + It might be necessary to manually configure sub-agents in + order to meet this requirement." + ::= { wwwServiceEntry 1 } + +wwwServiceDescription OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Textual description of the WWW service. This shall include + at least the vendor and version number of the application + realizing the WWW service. In a minimal case, this might + be the Product Token (see RFC 2068) for the application." + ::= { wwwServiceEntry 2 } + +wwwServiceContact OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual identification of the contact person for this + service, together with information on how to contact this + person. For instance, this might be a string containing an + email address, e.g. ''." + ::= { wwwServiceEntry 3 } + +wwwServiceProtocol OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An identification of the primary protocol in use by this + service. For Internet applications, the IANA maintains + a registry of the OIDs which correspond to well-known + application protocols. If the application protocol is not + listed in the registry, an OID value of the form + {applTCPProtoID port} or {applUDPProtoID port} are used for + TCP-based and UDP-based protocols, respectively. In either + case 'port' corresponds to the primary port number being + used by the protocol." + REFERENCE + "The OID values applTCPProtoID and applUDPProtoID are + defined in the NETWORK-SERVICES-MIB (RFC 2248)." + ::= { wwwServiceEntry 4 } + +wwwServiceName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The fully qualified domain name by which this service is + known. This object must contain the virtual host name if + the service is realized for a virtual host." + ::= { wwwServiceEntry 5 } + +wwwServiceType OBJECT-TYPE + SYNTAX INTEGER { + wwwOther(1), + wwwServer(2), + wwwClient(3), + wwwProxy(4), + wwwCachingProxy(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The application type using or realizing this WWW service." + ::= { wwwServiceEntry 6 } + +wwwServiceStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this WWW service was last started. + The value SHALL be '0000000000000000'H if the last start + time of this WWW service is not known." + ::= { wwwServiceEntry 7 } + +wwwServiceOperStatus OBJECT-TYPE + SYNTAX WwwOperStatus + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates the operational status of the WWW service." + ::= { wwwServiceEntry 8 } + +wwwServiceLastChange OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when this WWW service entered its current + operational state. The value SHALL be '0000000000000000'H if + the time of the last state change is not known." + ::= { wwwServiceEntry 9 } + + +-- The WWW Protocol Statistics Group +-- +-- The WWW protocol statistics group contains statistics about +-- the DTP requests and responses sent or received. + +wwwProtocolStatistics OBJECT IDENTIFIER ::= { wwwMIBObjects 2 } + +wwwSummaryTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwSummaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing overview statistics for the + WWW services on this system." + ::= { wwwProtocolStatistics 1 } + +wwwSummaryEntry OBJECT-TYPE + SYNTAX WwwSummaryEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Overview statistics for an individual service." + INDEX { wwwServiceIndex } + ::= { wwwSummaryTable 1 } + +WwwSummaryEntry ::= SEQUENCE { + wwwSummaryInRequests Counter32, + wwwSummaryOutRequests Counter32, + wwwSummaryInResponses Counter32, + wwwSummaryOutResponses Counter32, + wwwSummaryInBytes Counter64, + wwwSummaryInLowBytes Counter32, + wwwSummaryOutBytes Counter64, + wwwSummaryOutLowBytes Counter32 +} + +wwwSummaryInRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests successfully received." + ::= { wwwSummaryEntry 1 } + +wwwSummaryOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests generated." + ::= { wwwSummaryEntry 2 } + +wwwSummaryInResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses successfully received." + ::= { wwwSummaryEntry 3 } + +wwwSummaryOutResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses generated." + ::= { wwwSummaryEntry 4 } + +wwwSummaryInBytes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes received." + ::= { wwwSummaryEntry 5 } + +wwwSummaryInLowBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest thirty-two bits of wwwSummaryInBytes." + ::= { wwwSummaryEntry 6 } + +wwwSummaryOutBytes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes transmitted." + ::= { wwwSummaryEntry 7 } + +wwwSummaryOutLowBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The lowest thirty-two bits of wwwSummaryOutBytes." + ::= { wwwSummaryEntry 8 } + +-- The WWW request tables contain detailed information about +-- requests send or received by WWW services. + +wwwRequestInTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwRequestInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing detailed statistics for requests + received by WWW services on this system." + ::= { wwwProtocolStatistics 2 } + +wwwRequestInEntry OBJECT-TYPE + SYNTAX WwwRequestInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Request statistics for an individual service." + INDEX { wwwServiceIndex, wwwRequestInIndex } + ::= { wwwRequestInTable 1 } + +WwwRequestInEntry ::= SEQUENCE { + wwwRequestInIndex WwwRequestType, + wwwRequestInRequests Counter32, + wwwRequestInBytes Counter32, + wwwRequestInLastTime DateAndTime +} + +wwwRequestInIndex OBJECT-TYPE + SYNTAX WwwRequestType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The particular request type the statistics apply to." + ::= { wwwRequestInEntry 1 } + +wwwRequestInRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests of this type received by this + WWW service." + ::= { wwwRequestInEntry 2 } + +wwwRequestInBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes per request type received + by this WWW service." + ::= { wwwRequestInEntry 3 } + +wwwRequestInLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the last byte of the last complete + request of this type was received by this WWW service. The + value SHALL be '0000000000000000'H if no request of this + type has been received yet." + ::= { wwwRequestInEntry 4 } + +wwwRequestOutTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwRequestOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing detailed statistics for requests + generated by the services on this system." + ::= { wwwProtocolStatistics 3 } + +wwwRequestOutEntry OBJECT-TYPE + SYNTAX WwwRequestOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Request statistics for an individual service." + INDEX { wwwServiceIndex, wwwRequestOutIndex } + ::= { wwwRequestOutTable 1 } + +WwwRequestOutEntry ::= SEQUENCE { + wwwRequestOutIndex WwwRequestType, + wwwRequestOutRequests Counter32, + wwwRequestOutBytes Counter32, + wwwRequestOutLastTime DateAndTime +} + +wwwRequestOutIndex OBJECT-TYPE + SYNTAX WwwRequestType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The particular request type the statistics apply to." + ::= { wwwRequestOutEntry 1 } + +wwwRequestOutRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of requests of this type generated by this + WWW service." + ::= { wwwRequestOutEntry 2 } + +wwwRequestOutBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes per requests type generated + by this WWW service." + ::= { wwwRequestOutEntry 3 } + +wwwRequestOutLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the first byte of the last request + of this type was send by this WWW service. The value SHALL + be '0000000000000000'H if no request of this type has been + send yet." + ::= { wwwRequestOutEntry 4 } + +-- The WWW response tables contain detailed information about +-- responses sent or received by WWW services. + +wwwResponseInTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwResponseInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing detailed statistics for responses + received by WWW services on this system." + ::= { wwwProtocolStatistics 4 } + +wwwResponseInEntry OBJECT-TYPE + SYNTAX WwwResponseInEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Response statistics for an individual service." + INDEX { wwwServiceIndex, wwwResponseInIndex } + ::= { wwwResponseInTable 1 } + +WwwResponseInEntry ::= SEQUENCE { + wwwResponseInIndex WwwResponseType, + wwwResponseInResponses Counter32, + wwwResponseInBytes Counter32, + wwwResponseInLastTime DateAndTime +} + +wwwResponseInIndex OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The particular response type the statistics apply to." + ::= { wwwResponseInEntry 1 } + +wwwResponseInResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses of this type received by this + WWW service." + ::= { wwwResponseInEntry 2 } + +wwwResponseInBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes per response type received + by this WWW service." + ::= { wwwResponseInEntry 3 } + +wwwResponseInLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the last byte of the last complete + response of this type was received by this WWW service. The + value SHALL be '0000000000000000'H if no response of this + type has been received yet." + ::= { wwwResponseInEntry 4 } + +wwwResponseOutTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwResponseOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table providing detailed statistics for responses + generated by services on this system." + ::= { wwwProtocolStatistics 5 } + +wwwResponseOutEntry OBJECT-TYPE + SYNTAX WwwResponseOutEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Response statistics for an individual service." + INDEX { wwwServiceIndex, wwwResponseOutIndex } + ::= { wwwResponseOutTable 1 } + +WwwResponseOutEntry ::= SEQUENCE { + wwwResponseOutIndex WwwResponseType, + wwwResponseOutResponses Counter32, + wwwResponseOutBytes Counter32, + wwwResponseOutLastTime DateAndTime +} + +wwwResponseOutIndex OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The particular response type the statistics apply to." + ::= { wwwResponseOutEntry 1 } + +wwwResponseOutResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of responses of this type generated by this + WWW service." + ::= { wwwResponseOutEntry 2 } + +wwwResponseOutBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes per response type generated + by this WWW service." + ::= { wwwResponseOutEntry 3 } + +wwwResponseOutLastTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the first byte of the last response of + this type was sent by this WWW service. The value SHALL be + '0000000000000000'H if response of this type has been send + yet." + ::= { wwwResponseOutEntry 4 } + + +-- The WWW Document Statistics Group +-- +-- The WWW document statistics group contains statistics about +-- document read attempts. + +wwwDocumentStatistics OBJECT IDENTIFIER ::= { wwwMIBObjects 3 } + +wwwDocCtrlTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table which controls how the MIB implementation + collects and maintains document statistics." + ::= { wwwDocumentStatistics 1 } + +wwwDocCtrlEntry OBJECT-TYPE + SYNTAX WwwDocCtrlEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry used to configure the wwwDocLastNTable, + the wwwDocBucketTable, the wwwDocAccessTopNTable, + and the wwwDocBytesTopNTable." + INDEX { wwwServiceIndex } + ::= { wwwDocCtrlTable 1 } + +WwwDocCtrlEntry ::= SEQUENCE { + wwwDocCtrlLastNSize Unsigned32, + wwwDocCtrlLastNLock TimeTicks, + wwwDocCtrlBuckets Unsigned32, + wwwDocCtrlBucketTimeInterval TimeInterval, + wwwDocCtrlTopNSize Unsigned32 +} + +wwwDocCtrlLastNSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries in the wwwDocLastNTable." + DEFVAL { 25 } + ::= { wwwDocCtrlEntry 1 } + +wwwDocCtrlLastNLock OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object allows a manager to lock the wwwDocLastNTable + in order to retrieve the wwwDocLastNTable in a consistent + state. The agent is expected to take a snapshot of the + wwwDocLastNTable when it is locked and to continue updating + the real wwwDocLastNTable table so that recent information is + available as soon as the wwwDocLastNTable is unlocked again. + + Setting this object to a value greater than 0 will lock + the table. The timer ticks backwards until it reaches 0. + The table unlocks automatically once the timer reaches 0 + and the timer stops ticking. + + A manager can increase the timer to request more time to + read the table. However, any attempt to decrease the timer + will fail with an inconsistentValue error. This rule ensures + that multiple managers can simultaneously lock and retrieve + the wwwDocLastNTable. Note that managers must cooperate in + using wwwDocCtrlLastNLock. In particular, a manager MUST not + keep the wwwDocLastNTable locked when it is not necessary to + finish a retrieval operation." + ::= { wwwDocCtrlEntry 2 } + +wwwDocCtrlBuckets OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of buckets maintained by the agent + before the oldest bucket is deleted. The buckets are + used to populate the wwwDocAccessTopNTable and the + wwwDocBytesTopNTable. The time interval captured in + each bucket can be configured by setting the + wwwDocCtrlBucketTimeInterval object." + DEFVAL { 4 } -- 4 buckets times 15 minutes = 1 hour + ::= { wwwDocCtrlEntry 3 } + +wwwDocCtrlBucketTimeInterval OBJECT-TYPE + SYNTAX TimeInterval + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The time interval after which a new bucket is created. + Changing this object has no effect on existing buckets." + DEFVAL { 90000 } -- 15 minutes (resolution .01 s) + ::= { wwwDocCtrlEntry 4 } + +wwwDocCtrlTopNSize OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum number of entries shown in the + wwwDocAccessTopNTable and the wwwDocBytesTopNTable. + Changing this object has no effect on existing buckets." + DEFVAL { 25 } + ::= { wwwDocCtrlEntry 5 } + + +wwwDocLastNTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocLastNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table which logs the last N access attempts." + ::= { wwwDocumentStatistics 2 } + +wwwDocLastNEntry OBJECT-TYPE + SYNTAX WwwDocLastNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry which describes a recent access attempt." + INDEX { wwwServiceIndex, wwwDocLastNIndex } + ::= { wwwDocLastNTable 1 } + +WwwDocLastNEntry ::= SEQUENCE { + wwwDocLastNIndex Unsigned32, + wwwDocLastNName WwwDocName, + wwwDocLastNTimeStamp DateAndTime, + wwwDocLastNRequestType WwwRequestType, + wwwDocLastNResponseType WwwResponseType, + wwwDocLastNStatusMsg Utf8String, + wwwDocLastNBytes Unsigned32 +} + +wwwDocLastNIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary monotonically increasing integer number used + for indexing the wwwDocLastNTable. The first document + accessed appears in the table with this index value equal + to one. Each subsequent document is indexed with the next + sequential index value. The Nth document accessed will be + indexed by N. This table presents a sliding window of the + last wwwDocCtrlLastNSize documents accessed. Thus, entries + in this table will be indexed by N-wwwDocCtrlLastNSize + thru N if N > wwwDocCtrlLastNSize and 1 thru N if + N <= wwwDocCtrlLastNSize. + + The wwwDocCtrlLastNLock attribute can be used to lock + this table to allow the manager to read its contents." + ::= { wwwDocLastNEntry 1 } + +wwwDocLastNName OBJECT-TYPE + SYNTAX WwwDocName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the document for which access was attempted." + ::= { wwwDocLastNEntry 2 } + +wwwDocLastNTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time of the last attempt to access this + document." + ::= { wwwDocLastNEntry 3 } + +wwwDocLastNRequestType OBJECT-TYPE + SYNTAX WwwRequestType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol request type which was received by the + server when this document access was attempted." + ::= { wwwDocLastNEntry 4 } + +wwwDocLastNResponseType OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol response type which was sent to the client + as a result of this attempt to access a document. This + object contains the type of the primary response if + there were multiple responses to a single request." + ::= { wwwDocLastNEntry 5 } + +wwwDocLastNStatusMsg OBJECT-TYPE + SYNTAX Utf8String + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a human readable description of the + reason why the wwwDocLastNResponseType was returned to the + client. This object defines the implementation-specific + reason if the value of wwwDocLastNResponseType indicates + an error. For example, this object can indicate that the + requested document could not be transferred due to a + timeout condition or the document could not be transferred + because a 'soft link' pointing to the document could not be + resolved." + ::= { wwwDocLastNEntry 6 } + +wwwDocLastNBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of content bytes that were returned as a + result of this attempt to access a document." + ::= { wwwDocLastNEntry 7 } + + +wwwDocBucketTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocBucketEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table provides administrative summary information for + the buckets maintained per WWW service." + ::= { wwwDocumentStatistics 3 } + +wwwDocBucketEntry OBJECT-TYPE + SYNTAX WwwDocBucketEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry which describes the parameters associated with a + particular bucket." + INDEX { wwwServiceIndex, wwwDocBucketIndex } + ::= { wwwDocBucketTable 1 } + +WwwDocBucketEntry ::= SEQUENCE { + wwwDocBucketIndex Unsigned32, + wwwDocBucketTimeStamp DateAndTime, + wwwDocBucketAccesses Unsigned32, + wwwDocBucketDocuments Unsigned32, + wwwDocBucketBytes Unsigned32 +} + +wwwDocBucketIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary monotonically increasing integer number + used for indexing the wwwDocBucketTable. The index number + wraps to 1 whenever the maximum value is reached." + ::= { wwwDocBucketEntry 1 } + +wwwDocBucketTimeStamp OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the bucket was made available." + ::= { wwwDocBucketEntry 2 } + +wwwDocBucketAccesses OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of access attempts for any document + provided by this WWW service during the time interval + over which this bucket was created." + ::= { wwwDocBucketEntry 3 } + +wwwDocBucketDocuments OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of different documents for which access + was attempted this this WWW service during the time interval + over which this bucket was created." + ::= { wwwDocBucketEntry 4 } + +wwwDocBucketBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of content bytes which were transferred + from this WWW service during the time interval over which + this bucket was created." + ::= { wwwDocBucketEntry 5 } + + +wwwDocAccessTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocAccessTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of the most frequently accessed documents in a + given bucket. This table is sorted by the column + wwwDocAccessTopNAccesses. Entries having the same number + of accesses are secondarily sorted by wwwDocAccessTopNBytes. + Entries with the same number of accesses and the same + number of bytes will have an arbitrary order." + ::= { wwwDocumentStatistics 4 } + +wwwDocAccessTopNEntry OBJECT-TYPE + SYNTAX WwwDocAccessTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the top N table sorted by document accesses." + INDEX { wwwServiceIndex, wwwDocBucketIndex, + wwwDocAccessTopNIndex } + ::= { wwwDocAccessTopNTable 1 } + +WwwDocAccessTopNEntry ::= SEQUENCE { + wwwDocAccessTopNIndex Unsigned32, + wwwDocAccessTopNName WwwDocName, + wwwDocAccessTopNAccesses Unsigned32, + wwwDocAccessTopNBytes Unsigned32, + wwwDocAccessTopNLastResponseType WwwResponseType +} + +wwwDocAccessTopNIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary monotonically increasing integer number + used for indexing the wwwDocAccessTopNTable. The index is + inversely correlated to the sorting order of the table. The + document with the highest access count will get the index + value 1." + ::= { wwwDocAccessTopNEntry 1 } + +wwwDocAccessTopNName OBJECT-TYPE + SYNTAX WwwDocName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the document for which access was attempted." + ::= { wwwDocAccessTopNEntry 2 } + +wwwDocAccessTopNAccesses OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of access attempts for this document." + ::= { wwwDocAccessTopNEntry 3 } + +wwwDocAccessTopNBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of content bytes that were transmitted + as a result of attempts to access this document." + ::= { wwwDocAccessTopNEntry 4 } + +wwwDocAccessTopNLastResponseType OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol response type which was sent to the client + as a result of the last attempt to access this document. + This object contains the type of the primary response if + there were multiple responses to a single request." + ::= { wwwDocAccessTopNEntry 5 } + + +wwwDocBytesTopNTable OBJECT-TYPE + SYNTAX SEQUENCE OF WwwDocBytesTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table of the documents which caused most network + traffic in a given bucket. This table is sorted by the + column wwwDocBytesTopNBytes. Entries having the same number + bytes are secondarily sorted by wwwDocBytesTopNAccesses. + Entries with the same number of accesses and the same + number of bytes will have an arbitrary order." + ::= { wwwDocumentStatistics 5 } + +wwwDocBytesTopNEntry OBJECT-TYPE + SYNTAX WwwDocBytesTopNEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the top N table sorted by network traffic." + INDEX { wwwServiceIndex, wwwDocBucketIndex, + wwwDocBytesTopNIndex } + ::= { wwwDocBytesTopNTable 1 } + +WwwDocBytesTopNEntry ::= SEQUENCE { + wwwDocBytesTopNIndex Unsigned32, + wwwDocBytesTopNName WwwDocName, + wwwDocBytesTopNAccesses Unsigned32, + wwwDocBytesTopNBytes Unsigned32, + wwwDocBytesTopNLastResponseType WwwResponseType +} + +wwwDocBytesTopNIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An arbitrary monotonically increasing integer number + used for indexing the wwwDocBytesTopNTable. The index is + inversely correlated to the sorting order of the table. The + document with the highest byte count will get the index + value 1." + ::= { wwwDocBytesTopNEntry 1 } + +wwwDocBytesTopNName OBJECT-TYPE + SYNTAX WwwDocName + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the document for which access was attempted." + ::= { wwwDocBytesTopNEntry 2 } + +wwwDocBytesTopNAccesses OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of access attempts for this document." + ::= { wwwDocBytesTopNEntry 3 } + +wwwDocBytesTopNBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of content bytes that were transmitted + as a result of attempts to access this document." + ::= { wwwDocBytesTopNEntry 4 } + +wwwDocBytesTopNLastResponseType OBJECT-TYPE + SYNTAX WwwResponseType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The protocol response type which was sent to the client + as a result of the last attempt to access this document. + This object contains the type of the primary response if + there were multiple responses to a single request." + ::= { wwwDocBytesTopNEntry 5 } + +-- +-- Conformance Definitions +-- + +wwwMIBCompliances OBJECT IDENTIFIER ::= { wwwMIBConformance 1 } +wwwMIBGroups OBJECT IDENTIFIER ::= { wwwMIBConformance 2 } + +wwwMinimalCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP agents which implement + the minimal subset of the WWW-MIB. Implementors might + choose this subset for high-performance server where + full compliance might be to expensive." + MODULE -- this module + MANDATORY-GROUPS { + wwwServiceGroup, + wwwSummaryGroup + } + OBJECT wwwSummaryOutRequests + DESCRIPTION + "Instances of wwwSummaryOutRequests do not exist on pure + WWW server implementations." + OBJECT wwwSummaryInResponses + DESCRIPTION + "Instances of wwwSummaryOutRequests do not exist on pure + WWW server implementations." + OBJECT wwwSummaryInRequests + DESCRIPTION + "Instances of wwwSummaryInRequests do not exist on pure + WWW client implementations." + OBJECT wwwSummaryOutResponses + DESCRIPTION + "Instances of wwwSummaryOutResponses do not exist on pure + WWW client implementations." + ::= { wwwMIBCompliances 1 } + +wwwFullCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP agents which implement + the full WWW-MIB." + MODULE -- this module + MANDATORY-GROUPS { + wwwServiceGroup, + wwwSummaryGroup + } + GROUP wwwRequestInGroup + DESCRIPTION + "The wwwRequestInGroup is mandatory only for WWW server + or proxy server implementations." + GROUP wwwResponseOutGroup + DESCRIPTION + "The wwwResponseOutGroup is mandatory only for WWW server + or proxy server implementations." + GROUP wwwRequestOutGroup + DESCRIPTION + "The wwwRequestOutGroup is mandatory only for WWW client + or proxy server implementations." + GROUP wwwResponseInGroup + DESCRIPTION + "The wwwRequestOutGroup is mandatory only for WWW client + or proxy server implementations." + GROUP wwwDocumentGroup + DESCRIPTION + "The wwwDocumentGroup is mandatory only for WWW server + or proxy server implementations." + OBJECT wwwSummaryOutRequests + DESCRIPTION + "Instances of wwwSummaryOutRequests do not exist on pure + WWW server implementations." + OBJECT wwwSummaryInResponses + DESCRIPTION + "Instances of wwwSummaryOutRequests do not exist on pure + WWW server implementations." + OBJECT wwwSummaryInRequests + DESCRIPTION + "Instances of wwwSummaryInRequests do not exist on pure + WWW client implementations." + OBJECT wwwSummaryOutResponses + DESCRIPTION + "Instances of wwwSummaryOutResponses do not exist on pure + WWW client implementations." + ::= { wwwMIBCompliances 2 } + +wwwServiceGroup OBJECT-GROUP + OBJECTS { + wwwServiceDescription, + wwwServiceContact, + wwwServiceProtocol, + wwwServiceName, + wwwServiceType, + wwwServiceStartTime, + wwwServiceOperStatus, + wwwServiceLastChange + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + the WWW services known by the SNMP agent." + ::= { wwwMIBGroups 1 } + +wwwSummaryGroup OBJECT-GROUP + OBJECTS { + wwwSummaryInRequests, + wwwSummaryOutRequests, + wwwSummaryInResponses, + wwwSummaryOutResponses, + wwwSummaryInBytes, + wwwSummaryInLowBytes, + wwwSummaryOutBytes, + wwwSummaryOutLowBytes + } + STATUS current + DESCRIPTION + "A collection of objects providing summary statistics + about requests and responses generated and received + by a WWW service." + ::= { wwwMIBGroups 2 } + +wwwRequestInGroup OBJECT-GROUP + OBJECTS { + wwwRequestInRequests, + wwwRequestInBytes, + wwwRequestInLastTime + } + STATUS current + DESCRIPTION + "A collection of objects providing detailed statistics + about requests received by a WWW service." + ::= { wwwMIBGroups 3 } + +wwwRequestOutGroup OBJECT-GROUP + OBJECTS { + wwwRequestOutRequests, + wwwRequestOutBytes, + wwwRequestOutLastTime + } + STATUS current + DESCRIPTION + "A collection of objects providing detailed statistics + about requests generated by a WWW service." + ::= { wwwMIBGroups 4 } + +wwwResponseInGroup OBJECT-GROUP + OBJECTS { + wwwResponseInResponses, + wwwResponseInBytes, + wwwResponseInLastTime + } + STATUS current + DESCRIPTION + "A collection of objects providing detailed statistics + about responses received by a WWW service." + ::= { wwwMIBGroups 5 } + +wwwResponseOutGroup OBJECT-GROUP + OBJECTS { + wwwResponseOutResponses, + wwwResponseOutBytes, + wwwResponseOutLastTime + } + STATUS current + DESCRIPTION + "A collection of objects providing detailed statistics + about responses generated by a WWW service." + ::= { wwwMIBGroups 6 } + +wwwDocumentGroup OBJECT-GROUP + OBJECTS { + wwwDocCtrlLastNSize, + wwwDocCtrlLastNLock, + wwwDocCtrlBuckets, + wwwDocCtrlBucketTimeInterval, + wwwDocCtrlTopNSize, + wwwDocLastNName, + wwwDocLastNTimeStamp, + wwwDocLastNRequestType, + wwwDocLastNResponseType, + wwwDocLastNStatusMsg, + wwwDocLastNBytes, + wwwDocBucketTimeStamp, + wwwDocBucketAccesses, + wwwDocBucketDocuments, + wwwDocBucketBytes, + wwwDocAccessTopNName, + wwwDocAccessTopNAccesses, + wwwDocAccessTopNBytes, + wwwDocAccessTopNLastResponseType, + wwwDocBytesTopNName, + wwwDocBytesTopNAccesses, + wwwDocBytesTopNBytes, + wwwDocBytesTopNLastResponseType + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + accesses to documents." + ::= { wwwMIBGroups 7 } + +END diff --git a/mibs/irtf/IRTF-NMRG-SMING b/mibs/irtf/IRTF-NMRG-SMING new file mode 100644 index 0000000..d9383b4 --- /dev/null +++ b/mibs/irtf/IRTF-NMRG-SMING @@ -0,0 +1,61 @@ +module IRTF-NMRG-SMING { + +// +// $RCSfile: IRTF-NMRG-SMING.sming,v $ +// $Revision: 813 $ +// $Author: strauss $ +// $Date: 2000-02-13 23:08:34 +0100 (Sun, 13 Feb 2000) $ +// + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core node definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + node ccitt { oid 0; }; + + node zeroDotZero { + oid 0.0; + description "A value used for null identifiers."; + }; + + node iso { oid 1; }; + node org { oid iso.3; }; + node dod { oid org.6; }; + node internet { oid dod.1; }; + node directory { oid internet.1; }; + node mgmt { oid internet.2; }; + node mib-2 { oid mgmt.1; }; + node transmission { oid mib-2.10; }; + node experimental { oid internet.3; }; + node private { oid internet.4; }; + node enterprises { oid private.1; }; + node security { oid internet.5; }; + node snmpV2 { oid internet.6; }; + node snmpDomains { oid snmpV2.1; }; + node snmpProxys { oid snmpV2.2; }; + node snmpModules { oid snmpV2.3; }; + + node joint-iso-ccitt { oid 2; }; + +}; diff --git a/mibs/irtf/IRTF-NMRG-SMING-EXTENSIONS b/mibs/irtf/IRTF-NMRG-SMING-EXTENSIONS new file mode 100644 index 0000000..08349e7 --- /dev/null +++ b/mibs/irtf/IRTF-NMRG-SMING-EXTENSIONS @@ -0,0 +1,76 @@ +module IRTF-NMRG-SMING-EXTENSIONS { + +// +// $RCSfile: IRTF-NMRG-SMING-EXTENSIONS.sming,v $ +// $Revision: 813 $ +// $Author: strauss $ +// $Date: 2000-02-13 23:08:34 +0100 (Sun, 13 Feb 2000) $ +// + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core extension definitions for SMIng."; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + extension agentcaps { + status current; + description + "The agentcaps extension statement is used to describe + an agent's deviation from the compliance statements + of the modules it implements. It is designed to be + compatible with the SMIv2 AGENT-CAPABILITIES macro. + + The agentcaps extension statement should only be used + in the statement body of a module that does not + contain any other type or node definitions that do not + correspond to an agent implementation."; + reference + "RFC 2580, Section 6 describes the SMIv2 + compatible AGENT-CAPABILITIES macro."; + abnf + "agentcapsStatement = 'agentcaps' sep lcIdentifier + optsep '{' stmtsep + oidStatement stmtsep + releaseStatement stmtsep + *1(statusStatement stmtsep) + descriptionStatement stmtsep + *1(referenceStatement stmtsep) + *(includesStatement stmtsep) + '}' optsep ';' + + includesStatement = 'includes' sep qlcIdentifier + optsep '{' stmtsep + *(variationStatement stmtsep) + '}' optsep ';' + + variationStatement = 'variation' sep qlcIdentifier + optsep '{' stmtsep + typeStatement stmtsep + writetypeStatement stmtsep + accessStatement stmtsep + createStatement stmtsep + '}' optsep ';' + "; + }; + +}; diff --git a/mibs/irtf/IRTF-NMRG-SMING-TYPES b/mibs/irtf/IRTF-NMRG-SMING-TYPES new file mode 100644 index 0000000..4f5080f --- /dev/null +++ b/mibs/irtf/IRTF-NMRG-SMING-TYPES @@ -0,0 +1,952 @@ +module IRTF-NMRG-SMING-TYPES { + +// +// $RCSfile: IRTF-NMRG-SMING-TYPES,v $ +// $Revision: 7606 $ +// $Author: schoenw $ +// $Date: 2008-01-22 13:38:03 +0100 (Tue, 22 Jan 2008) $ +// + + organization "IRTF Network Management Research Group (NMRG), + Network Management Group, TU Braunschweig"; + + contact " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3266 + EMail: strauss@ibr.cs.tu-bs.de"; + + description "Core type definitions for SMIng."; + + revision { + date "2000-10-19"; + description "Special semantics and default value of 8 or 11 + zero bytes for the DateAndTime type."; + }; + + revision { + date "2000-02-13"; + description "SMIng grammar dropped module identity objects."; + }; + + revision { + date "1999-05-07"; + description "Initial Revision."; + }; + + typedef Gauge32 { + type Unsigned32; + description + "The Gauge32 type represents a non-negative integer, + which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum + value. The maximum value can not be greater than + 2^32-1 (4294967295 decimal), and the minimum value + can not be smaller than 0. The value of a Gauge32 + has its maximum value whenever the information + being modeled is greater than or equal to its + maximum value, and has its minimum value whenever + the information being modeled is smaller than or + equal to its minimum value. If the information + being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + Gauge32 also decreases (increases). (Note that + despite of the use of the term `latched' in the + original definition of this type, it does not + become `stuck' at its maximum or minimum value.)"; + reference + "RFC 2578, Sections 2. and 7.1.7."; + }; + + typedef Counter32 { + type Unsigned32; + description + "The Counter32 type represents a non-negative integer + which monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined `initial' value, and thus, a + single value of a Counter has (in general) no + information content. Discontinuities in the + monotonically increasing value normally occur at + re-initialization of the management system, and at + other times as specified in the description of an + object using this type. If such other times can + occur, for example, the creation of an object + instance at times other than re-initialization, then + a corresponding object should be defined, with an + appropriate type, to indicate the last discontinuity. + Examples of appropriate types include: TimeStamp, + DateAndTime or TimeTicks (other types defined in this + module). + + The value of the access statement for objects with a + type value of Counter32 should be either `readonly' + or `notifyonly'. + + A default statement should not be used for objects + with a type value of Counter32."; + reference + "RFC 2578, Sections 2. and 7.1.6."; + }; + + typedef Gauge64 { + type Unsigned64; + description + "The Gauge64 type represents a non-negative integer, + which may increase or decrease, but shall never + exceed a maximum value, nor fall below a minimum + value. The maximum value can not be greater than + 2^64-1 (18446744073709551615), and the minimum value + can not be smaller than 0. The value of a Gauge64 + has its maximum value whenever the information + being modeled is greater than or equal to its + maximum value, and has its minimum value whenever + the information being modeled is smaller than or + equal to its minimum value. If the information + being modeled subsequently decreases below + (increases above) the maximum (minimum) value, the + Gauge64 also decreases (increases). (Note that + despite of the use of the term `latched' in the + original definition of this type, it does not + become `stuck' at its maximum or minimum value.)"; + }; + + typedef Counter64 { + type Unsigned64; + description + "The Counter64 type represents a non-negative integer + which monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615), when + it wraps around and starts increasing again from zero. + + Counters have no defined `initial' value, and thus, a + single value of a Counter has (in general) no + information content. Discontinuities in the + monotonically increasing value normally occur at + re-initialization of the management system, and at + other times as specified in the description of an + object using this type. If such other times can + occur, for example, the creation of an object + instance at times other than re-initialization, then + a corresponding object should be defined, with an + appropriate type, to indicate the last discontinuity. + Examples of appropriate types include: TimeStamp, + DateAndTime or TimeTicks (other types defined in this + module). + + The value of the access statement for objects with a + type value of Counter64 should be either `readonly' + or `notifyonly'. + + A default statement should not be used for objects + with a type value of Counter64."; + reference + "RFC 2578, Sections 2. and 7.1.10."; + }; + + typedef Opaque { + type OctetString; + description + "The Opaque type is provided solely for + backward-compatibility, and shall not be used for + newly-defined object types. + + The Opaque type supports the capability to pass + arbitrary ASN.1 syntax. A value is encoded using + the ASN.1 Basic Encoding Rules into a string of + octets. This, in turn, is encoded as an + OctetString, in effect `double-wrapping' the + original ASN.1 value. + + Note that a conforming implementation need only be + able to accept and recognize opaquely-encoded data. + It need not be able to unwrap the data and then + interpret its contents. + + A requirement on `standard' MIB modules is that no + object may have a type value of Opaque."; + reference + "RFC 2578, Sections 2. and 7.1.9."; + }; + + typedef IpAddress { + type OctetString (4); + status deprecated; + description + "******* THIS TYPE DEFINITION IS DEPRECATED ******* + + The IpAddress type represents a 32-bit internet + IPv4 address. It is represented as an OctetString + of length 4, in network byte-order. + + Note that the IpAddress type is present for + historical reasons. IPv4 and IPv6 addresses should + be represented using the IpAddr type. Generic + Network addresses should be represented using a + pair of TDomain and TAddress types (all defined in + this module)."; + reference + "RFC 2578, Sections 2. and 7.1.5."; + }; + + typedef TimeTicks { + type Unsigned32; + description + "The TimeTicks type represents a non-negative + integer which represents the time, modulo 2^32 + (4294967296 decimal), in hundredths of a second + between two epochs. When objects are defined which + use this type, the description of the object + identifies both of the reference epochs. + + For example, the TimeStamp type (defined in this + module) is based on the TimeTicks type. + + With a TimeStamp, the first reference epoch is + defined as the time when SNMPv2-MIB::sysUpTime was + zero, and the second reference epoch is defined as + the current value of sysUpTime. + + The TimeTicks type should not be sub-typed."; + reference + "RFC 2578, Sections 2. and 7.1.8."; + }; + + // + // The following type definitions are + // conversions of the textual conventions from + // the SNMPv2-TC module (RFC 2579), except for + // TAddressOrZero, which is not present in + // SNMPv2-TC. + // + + typedef DisplayString { + type OctetString (0..255); + format "255a"; + description + "Represents textual information taken from the NVT ASCII + character set, as defined in pages 4, 10-11 of RFC 854. + + To summarize RFC 854, the NVT ASCII repertoire specifies: + + - the use of character codes 0-127 (decimal) + + - the graphics characters (32-126) are interpreted as + US ASCII + + - NUL, LF, CR, BEL, BS, HT, VT and FF have the special + meanings specified in RFC 854 + + - the other 25 codes have no standard interpretation + + - the sequence 'CR LF' means newline + + - the sequence 'CR NUL' means carriage-return + + - an 'LF' not preceded by a 'CR' means moving to the + same column on the next line. + + - the sequence 'CR x' for any x other than LF or NUL is + illegal. (Note that this also means that a string may + end with either 'CR LF' or 'CR NUL', but not with CR.) + + Any object defined using this syntax may not exceed 255 + characters in length."; + }; + + typedef PhysAddress { + type OctetString; + format "1x:"; + description + "Represents media- or physical-level addresses."; + }; + + typedef MacAddress { + type OctetString (6); + format "1x:"; + description + "Represents an 802 MAC address represented 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."; + }; + + typedef TruthValue { + type Enumeration (true(1), false(2)); + description + "Represents a boolean value."; + }; + + typedef TestAndIncr { + type Integer32 (0..2147483647); + description + "Represents integer-valued information used for atomic + operations. When the management protocol is used to specify + that an object instance having this syntax is to be + modified, the new value supplied via the management protocol + must precisely match the value presently held by the + instance. If not, the management protocol set operation + fails with an error of `inconsistentValue'. Otherwise, if + the current value is the maximum value of 2^31-1 (2147483647 + decimal), then the value held by the instance is wrapped to + zero; otherwise, the value held by the instance is + incremented by one. (Note that regardless of whether the + management protocol set operation succeeds, the variable- + binding in the request and response PDUs are identical.) + + The value of the ACCESS clause for objects having this + syntax is either `read-write' or `read-create'. When an + instance of a columnar object having this syntax is created, + any value may be supplied via the management protocol. + + When the network management portion of the system is re- + initialized, the value of every object instance having this + syntax must either be incremented from its value prior to + the re-initialization, or (if the value prior to the re- + initialization is unknown) be set to a pseudo-randomly + generated value."; + }; + + typedef AutonomousType { + type ObjectIdentifier; + description + "Represents an independently extensible type identification + value. It may, for example, indicate a particular sub-tree + with further MIB definitions, or define a particular type of + protocol or hardware."; + }; + + typedef InstancePointer { + type ObjectIdentifier; + status obsolete; + description + "A pointer to either a specific instance of a MIB object or + a conceptual row of a MIB table in the managed device. In + the latter case, by convention, it is the name of the + particular instance of the first accessible columnar object + in the conceptual row. + + The two uses of this textual convention are replaced by + VariablePointer and RowPointer, respectively."; + }; + + typedef VariablePointer { + type ObjectIdentifier; + description + "A pointer to a specific object instance. For example, + sysContact.0 or ifInOctets.3."; + }; + + typedef RowPointer { + type ObjectIdentifier; + description + "Represents a pointer to a conceptual row. The value is the + name of the instance of the first accessible columnar object + in the conceptual row. + + For example, ifIndex.3 would point to the 3rd row in the + ifTable (note that if ifIndex were not-accessible, then + ifDescr.3 would be used instead)."; + }; + + typedef RowStatus { + type Enumeration (active(1), notInService(2), + notReady(3), createAndGo(4), + createAndWait(5), destroy(6)); + description + "The RowStatus textual convention is used to manage the + creation and deletion of conceptual rows, and is used as the + value of the SYNTAX clause for the status column of a + conceptual row (as described in Section 7.7.1 of [2].) + + The status column has six defined values: + + - `active', which indicates that the conceptual row is + available for use by the managed device; + + - `notInService', which indicates that the conceptual + row exists in the agent, but is unavailable for use by + the managed device (see NOTE below); + + - `notReady', which indicates that the conceptual row + exists in the agent, but is missing information + necessary in order to be available for use by the + managed device; + + - `createAndGo', which is supplied by a management + station wishing to create a new instance of a + conceptual row and to have its status automatically set + to active, making it available for use by the managed + device; + + - `createAndWait', which is supplied by a management + station wishing to create a new instance of a + conceptual row (but not make it available for use by + the managed device); and, + + - `destroy', which is supplied by a management station + wishing to delete all of the instances associated with + an existing conceptual row. + + Whereas five of the six values (all except `notReady') may + be specified in a management protocol set operation, only + three values will be returned in response to a management + protocol retrieval operation: `notReady', `notInService' or + `active'. That is, when queried, an existing conceptual row + has only three states: it is either available for use by the + managed device (the status column has value `active'); it is + not available for use by the managed device, though the + + + agent has sufficient information to make it so (the status + column has value `notInService'); or, it is not available + for use by the managed device, and an attempt to make it so + would fail because the agent has insufficient information + (the state column has value `notReady'). + + NOTE WELL + + This textual convention may be used for a MIB table, + irrespective of whether the values of that table's + conceptual rows are able to be modified while it is + active, or whether its conceptual rows must be taken + out of service in order to be modified. That is, it is + the responsibility of the DESCRIPTION clause of the + status column to specify whether the status column must + not be `active' in order for the value of some other + column of the same conceptual row to be modified. If + such a specification is made, affected columns may be + changed by an SNMP set PDU if the RowStatus would not + be equal to `active' either immediately before or after + processing the PDU. In other words, if the PDU also + contained a varbind that would change the RowStatus + value, the column in question may be changed if the + RowStatus was not equal to `active' as the PDU was + received, or if the varbind sets the status to a value + other than 'active'. + + Also note that whenever any elements of a row exist, the + RowStatus column must also exist. + + + To summarize the effect of having a conceptual row with a + status column having a SYNTAX clause value of RowStatus, + consider the following state diagram: + + STATE + +--------------+-----------+-------------+------------- + | A | B | C | D + | |status col.|status column| + |status column | is | is |status column + ACTION |does not exist| notReady | notInService| is active +--------------+--------------+-----------+-------------+------------- +set status |noError ->D|inconsist- |inconsistent-|inconsistent- +column to | or | entValue| Value| Value +createAndGo |inconsistent- | | | + | Value| | | +--------------+--------------+-----------+-------------+------------- +set status |noError see 1|inconsist- |inconsistent-|inconsistent- +column to | or | entValue| Value| Value +createAndWait |wrongValue | | | +--------------+--------------+-----------+-------------+------------- +set status |inconsistent- |inconsist- |noError |noError +column to | Value| entValue| | +active | | | | + | | or | | + | | | | + | |see 2 ->D|see 8 ->D| ->D +--------------+--------------+-----------+-------------+------------- +set status |inconsistent- |inconsist- |noError |noError ->C +column to | Value| entValue| | +notInService | | | | + | | or | | or + | | | | + | |see 3 ->C| ->C|see 6 +--------------+--------------+-----------+-------------+------------- +set status |noError |noError |noError |noError ->A +column to | | | | or +destroy | ->A| ->A| ->A|see 7 +--------------+--------------+-----------+-------------+------------- +set any other |see 4 |noError |noError |see 5 +column to some| | | | +value | | see 1| ->C| ->D +--------------+--------------+-----------+-------------+------------- + + (1) goto B or C, depending on information available to the + + + agent. + + (2) if other variable bindings included in the same PDU, + provide values for all columns which are missing but + required, then return noError and goto D. + + (3) if other variable bindings included in the same PDU, + provide values for all columns which are missing but + required, then return noError and goto C. + + (4) at the discretion of the agent, the return value may be + either: + + inconsistentName: because the agent does not choose to + create such an instance when the corresponding + RowStatus instance does not exist, or + + inconsistentValue: if the supplied value is + inconsistent with the state of some other MIB object's + value, or + + noError: because the agent chooses to create the + instance. + + If noError is returned, then the instance of the status + column must also be created, and the new state is B or C, + depending on the information available to the agent. If + inconsistentName or inconsistentValue is returned, the row + remains in state A. + + (5) depending on the MIB definition for the column/table, + either noError or inconsistentValue may be returned. + + (6) the return value can indicate one of the following + errors: + + wrongValue: because the agent does not support + createAndWait, or + + inconsistentValue: because the agent is unable to take + the row out of service at this time, perhaps because it + is in use and cannot be de-activated. + + (7) the return value can indicate the following error: + + + inconsistentValue: because the agent is unable to + remove the row at this time, perhaps because it is in + use and cannot be de-activated. + + NOTE: Other processing of the set request may result in a + response other than noError being returned, e.g., + wrongValue, noCreation, etc. + + Conceptual Row Creation + + There are four potential interactions when creating a + conceptual row: selecting an instance-identifier which is + not in use; creating the conceptual row; initializing any + objects for which the agent does not supply a default; and, + making the conceptual row available for use by the managed + device. + + Interaction 1: Selecting an Instance-Identifier + + The algorithm used to select an instance-identifier varies + for each conceptual row. In some cases, the instance- + identifier is semantically significant, e.g., the + destination address of a route, and a management station + selects the instance-identifier according to the semantics. + + In other cases, the instance-identifier is used solely to + distinguish conceptual rows, and a management station + without specific knowledge of the conceptual row might + examine the instances present in order to determine an + unused instance-identifier. (This approach may be used, but + it is often highly sub-optimal; however, it is also a + questionable practice for a naive management station to + attempt conceptual row creation.) + + Alternately, the MIB module which defines the conceptual row + might provide one or more objects which provide assistance + in determining an unused instance-identifier. For example, + if the conceptual row is indexed by an integer-value, then + an object having an integer-valued SYNTAX clause might be + defined for such a purpose, allowing a management station to + issue a management protocol retrieval operation. In order + to avoid unnecessary collisions between competing management + stations, `adjacent' retrievals of this object should be + different. + + + Finally, the management station could select a pseudo-random + number to use as the index. In the event that this index + was already in use and an inconsistentValue was returned in + response to the management protocol set operation, the + management station should simply select a new pseudo-random + number and retry the operation. + + A MIB designer should choose between the two latter + algorithms based on the size of the table (and therefore the + efficiency of each algorithm). For tables in which a large + number of entries are expected, it is recommended that a MIB + object be defined that returns an acceptable index for + creation. For tables with small numbers of entries, it is + recommended that the latter pseudo-random index mechanism be + used. + + Interaction 2: Creating the Conceptual Row + + Once an unused instance-identifier has been selected, the + management station determines if it wishes to create and + activate the conceptual row in one transaction or in a + negotiated set of interactions. + + Interaction 2a: Creating and Activating the Conceptual Row + + The management station must first determine the column + requirements, i.e., it must determine those columns for + which it must or must not provide values. Depending on the + complexity of the table and the management station's + knowledge of the agent's capabilities, this determination + can be made locally by the management station. Alternately, + the management station issues a management protocol get + operation to examine all columns in the conceptual row that + it wishes to create. In response, for each column, there + are three possible outcomes: + + - a value is returned, indicating that some other + management station has already created this conceptual + row. We return to interaction 1. + + + - the exception `noSuchInstance' is returned, + indicating that the agent implements the object-type + associated with this column, and that this column in at + least one conceptual row would be accessible in the MIB + view used by the retrieval were it to exist. For those + columns to which the agent provides read-create access, + the `noSuchInstance' exception tells the management + station that it should supply a value for this column + when the conceptual row is to be created. + + - the exception `noSuchObject' is returned, indicating + that the agent does not implement the object-type + associated with this column or that there is no + conceptual row for which this column would be + accessible in the MIB view used by the retrieval. As + such, the management station can not issue any + management protocol set operations to create an + instance of this column. + + Once the column requirements have been determined, a + management protocol set operation is accordingly issued. + This operation also sets the new instance of the status + column to `createAndGo'. + + When the agent processes the set operation, it verifies that + it has sufficient information to make the conceptual row + available for use by the managed device. The information + available to the agent is provided by two sources: the + management protocol set operation which creates the + conceptual row, and, implementation-specific defaults + supplied by the agent (note that an agent must provide + implementation-specific defaults for at least those objects + which it implements as read-only). If there is sufficient + information available, then the conceptual row is created, a + `noError' response is returned, the status column is set to + `active', and no further interactions are necessary (i.e., + interactions 3 and 4 are skipped). If there is insufficient + information, then the conceptual row is not created, and the + set operation fails with an error of `inconsistentValue'. + On this error, the management station can issue a management + protocol retrieval operation to determine if this was + because it failed to specify a value for a required column, + or, because the selected instance of the status column + already existed. In the latter case, we return to + interaction 1. In the former case, the management station + + + can re-issue the set operation with the additional + information, or begin interaction 2 again using + `createAndWait' in order to negotiate creation of the + conceptual row. + + NOTE WELL + + Regardless of the method used to determine the column + requirements, it is possible that the management + station might deem a column necessary when, in fact, + the agent will not allow that particular columnar + instance to be created or written. In this case, the + management protocol set operation will fail with an + error such as `noCreation' or `notWritable'. In this + case, the management station decides whether it needs + to be able to set a value for that particular columnar + instance. If not, the management station re-issues the + management protocol set operation, but without setting + a value for that particular columnar instance; + otherwise, the management station aborts the row + creation algorithm. + + + Interaction 2b: Negotiating the Creation of the Conceptual + Row + + The management station issues a management protocol set + operation which sets the desired instance of the status + column to `createAndWait'. If the agent is unwilling to + process a request of this sort, the set operation fails with + an error of `wrongValue'. (As a consequence, such an agent + must be prepared to accept a single management protocol set + operation, i.e., interaction 2a above, containing all of the + columns indicated by its column requirements.) Otherwise, + the conceptual row is created, a `noError' response is + returned, and the status column is immediately set to either + `notInService' or `notReady', depending on whether it has + sufficient information to make the conceptual row available + for use by the managed device. If there is sufficient + information available, then the status column is set to + `notInService'; otherwise, if there is insufficient + information, then the status column is set to `notReady'. + Regardless, we proceed to interaction 3. + + Interaction 3: Initializing non-defaulted Objects + + The management station must now determine the column + requirements. It issues a management protocol get operation + to examine all columns in the created conceptual row. In + the response, for each column, there are three possible + outcomes: + + - a value is returned, indicating that the agent + implements the object-type associated with this column + and had sufficient information to provide a value. For + those columns to which the agent provides read-create + access (and for which the agent allows their values to + be changed after their creation), a value return tells + the management station that it may issue additional + management protocol set operations, if it desires, in + order to change the value associated with this column. + + + - the exception `noSuchInstance' is returned, + indicating that the agent implements the object-type + associated with this column, and that this column in at + least one conceptual row would be accessible in the MIB + view used by the retrieval were it to exist. However, + the agent does not have sufficient information to + provide a value, and until a value is provided, the + conceptual row may not be made available for use by the + managed device. For those columns to which the agent + provides read-create access, the `noSuchInstance' + exception tells the management station that it must + issue additional management protocol set operations, in + order to provide a value associated with this column. + + - the exception `noSuchObject' is returned, indicating + that the agent does not implement the object-type + associated with this column or that there is no + conceptual row for which this column would be + accessible in the MIB view used by the retrieval. As + such, the management station can not issue any + management protocol set operations to create an + instance of this column. + + If the value associated with the status column is + `notReady', then the management station must first deal with + all `noSuchInstance' columns, if any. Having done so, the + value of the status column becomes `notInService', and we + proceed to interaction 4. + + Interaction 4: Making the Conceptual Row Available + + Once the management station is satisfied with the values + associated with the columns of the conceptual row, it issues + a management protocol set operation to set the status column + to `active'. If the agent has sufficient information to + make the conceptual row available for use by the managed + device, the management protocol set operation succeeds (a + `noError' response is returned). Otherwise, the management + protocol set operation fails with an error of + `inconsistentValue'. + + + NOTE WELL + + A conceptual row having a status column with value + `notInService' or `notReady' is unavailable to the + managed device. As such, it is possible for the + managed device to create its own instances during the + time between the management protocol set operation + which sets the status column to `createAndWait' and the + management protocol set operation which sets the status + column to `active'. In this case, when the management + protocol set operation is issued to set the status + column to `active', the values held in the agent + supersede those used by the managed device. + + If the management station is prevented from setting the + status column to `active' (e.g., due to management station + or network failure) the conceptual row will be left in the + `notInService' or `notReady' state, consuming resources + indefinitely. The agent must detect conceptual rows that + have been in either state for an abnormally long period of + time and remove them. It is the responsibility of the + DESCRIPTION clause of the status column to indicate what an + abnormally long period of time would be. This period of + time should be long enough to allow for human response time + (including `think time') between the creation of the + conceptual row and the setting of the status to `active'. + In the absence of such information in the DESCRIPTION + clause, + it is suggested that this period be approximately 5 minutes + in length. This removal action applies not only to newly- + created rows, but also to previously active rows which are + set to, and left in, the notInService state for a prolonged + period exceeding that which is considered normal for such a + conceptual row. + + + Conceptual Row Suspension + + When a conceptual row is `active', the management station + may issue a management protocol set operation which sets the + instance of the status column to `notInService'. If the + agent is unwilling to do so, the set operation fails with an + error of `wrongValue' or `inconsistentValue'. + Otherwise, the conceptual row is taken out of service, and a + `noError' response is returned. It is the responsibility of + the DESCRIPTION clause of the status column to indicate + under what circumstances the status column should be taken + out of service (e.g., in order for the value of some other + column of the same conceptual row to be modified). + + Conceptual Row Deletion + + For deletion of conceptual rows, a management protocol set + operation is issued which sets the instance of the status + column to `destroy'. This request may be made regardless of + the current value of the status column (e.g., it is possible + to delete conceptual rows which are either `notReady', + `notInService' or `active'.) If the operation succeeds, then + all instances associated with the conceptual row are + immediately removed."; + }; + + typedef TimeStamp { + type TimeTicks; + description + "The value of the sysUpTime object at which a specific + occurrence happened. The specific occurrence must be + defined in the description of any object defined using this + type. When the specific occurrence occurred prior to the + last time sysUpTime was zero, then the TimeStamp value is + zero. Note that this requires all TimeStamp values to be + reset to zero when the value of sysUpTime reaches 497+ days + and wraps around to zero."; + }; + + typedef TimeInterval { + type Integer32 (0..2147483647); + description + "A period of time, measured in units of 0.01 seconds."; + }; + + typedef DateAndTime { + type OctetString (8 | 11); + default 0x0000000000000000000000; + format "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"; + description + "A date-time specification. + + 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..13 + 10 11 minutes from UTC 0..59 + + * Notes: + - the value of year is in big-endian encoding + - daylight saving time in New Zealand is +13 + + 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. + + The two special values of 8 or 11 zero bytes denote an + unknown date-time specification."; + }; + + typedef StorageType { + type Enumeration (other(1), volatile(2), + nonVolatile(3), permanent(4), + readOnly(5)); + description + "Describes the memory realization of a conceptual row. A + row which is volatile(2) is lost upon reboot. A row which + is either nonVolatile(3), permanent(4) or readOnly(5), is + backed up by stable storage. A row which is permanent(4) + can be changed but not deleted. A row which is readOnly(5) + cannot be changed nor deleted. + + If the value of an object with this syntax is either + permanent(4) or readOnly(5), it cannot be modified. + Conversely, if the value is either other(1), volatile(2) or + nonVolatile(3), it cannot be modified to be permanent(4) or + readOnly(5). (All illegal modifications result in a + 'wrongValue' error.) + + Every usage of this textual convention is required to + specify the columnar objects which a permanent(4) row must + at a minimum allow to be writable."; + }; + + typedef TDomain { + type ObjectIdentifier; + description + "Denotes a kind of transport service. + + Some possible values, such as snmpUDPDomain, are defined + in the SNMPv2-TM MIB module. Other possible values are + defined in other MIB modules."; + reference + "The SNMPv2-TM MIB module is defined in RFC 1906."; + }; + + typedef TAddressOrZero { + type OctetString (0..255); + description + "Denotes a transport service address. + + A TAddress value is always interpreted within the context + of a TDomain value. Thus, each definition of a TDomain + value must be accompanied by a definition of a textual + convention for use with that TDomain. Some possible + textual conventions, such as SnmpUDPAddress for + snmpUDPDomain, are defined in the SNMPv2-TM MIB module. + Other possible textual conventions are defined in + other MIB modules. + + A zero-length TAddress value denotes an unknown transport + service address."; + reference + "The SNMPv2-TM MIB module is defined in RFC 1906."; + }; + + typedef TAddress { + type TAddressOrZero (1..255); + description + "Denotes a transport service address. + + This type does not allow a zero-length TAddress value."; + }; + +}; diff --git a/mibs/irtf/Makefile.am b/mibs/irtf/Makefile.am new file mode 100644 index 0000000..20285b3 --- /dev/null +++ b/mibs/irtf/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/irtf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +irtfdir = $(mibdir)/irtf +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +irtf_DATA = $(MIBS) diff --git a/mibs/irtf/Makefile.in b/mibs/irtf/Makefile.in new file mode 100644 index 0000000..258c0e0 --- /dev/null +++ b/mibs/irtf/Makefile.in @@ -0,0 +1,388 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/irtf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/irtf +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(irtfdir)" +irtfDATA_INSTALL = $(INSTALL_DATA) +DATA = $(irtf_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +irtfdir = $(mibdir)/irtf +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +irtf_DATA = $(MIBS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/irtf/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/irtf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-irtfDATA: $(irtf_DATA) + @$(NORMAL_INSTALL) + test -z "$(irtfdir)" || $(MKDIR_P) "$(DESTDIR)$(irtfdir)" + @list='$(irtf_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(irtfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(irtfdir)/$$f'"; \ + $(irtfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(irtfdir)/$$f"; \ + done + +uninstall-irtfDATA: + @$(NORMAL_UNINSTALL) + @list='$(irtf_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(irtfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(irtfdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(irtfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-irtfDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-irtfDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-irtfDATA install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-irtfDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/site/Makefile.am b/mibs/site/Makefile.am new file mode 100644 index 0000000..3081292 --- /dev/null +++ b/mibs/site/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/site Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +sitedir = $(mibdir)/site +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +site_DATA = $(MIBS) diff --git a/mibs/site/Makefile.in b/mibs/site/Makefile.in new file mode 100644 index 0000000..6216a2a --- /dev/null +++ b/mibs/site/Makefile.in @@ -0,0 +1,388 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/site Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/site +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(sitedir)" +siteDATA_INSTALL = $(INSTALL_DATA) +DATA = $(site_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +sitedir = $(mibdir)/site +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +site_DATA = $(MIBS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/site/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/site/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-siteDATA: $(site_DATA) + @$(NORMAL_INSTALL) + test -z "$(sitedir)" || $(MKDIR_P) "$(DESTDIR)$(sitedir)" + @list='$(site_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(siteDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sitedir)/$$f'"; \ + $(siteDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sitedir)/$$f"; \ + done + +uninstall-siteDATA: + @$(NORMAL_UNINSTALL) + @list='$(site_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(sitedir)/$$f'"; \ + rm -f "$(DESTDIR)$(sitedir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(sitedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-siteDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-siteDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-siteDATA \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-siteDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/tubs/Makefile.am b/mibs/tubs/Makefile.am new file mode 100644 index 0000000..538ed32 --- /dev/null +++ b/mibs/tubs/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/tubs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +tubsdir = $(mibdir)/tubs +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +tubs_DATA = $(MIBS) diff --git a/mibs/tubs/Makefile.in b/mibs/tubs/Makefile.in new file mode 100644 index 0000000..778122e --- /dev/null +++ b/mibs/tubs/Makefile.in @@ -0,0 +1,388 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/tubs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1607 2003-12-01 19:01:38Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mibs/tubs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(tubsdir)" +tubsDATA_INSTALL = $(INSTALL_DATA) +DATA = $(tubs_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +tubsdir = $(mibdir)/tubs +MIBS = $(shell ls -1 $(srcdir) | egrep -v 'CVS|Makefile') +EXTRA_DIST = $(MIBS) +tubs_DATA = $(MIBS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mibs/tubs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mibs/tubs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-tubsDATA: $(tubs_DATA) + @$(NORMAL_INSTALL) + test -z "$(tubsdir)" || $(MKDIR_P) "$(DESTDIR)$(tubsdir)" + @list='$(tubs_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(tubsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(tubsdir)/$$f'"; \ + $(tubsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(tubsdir)/$$f"; \ + done + +uninstall-tubsDATA: + @$(NORMAL_UNINSTALL) + @list='$(tubs_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(tubsdir)/$$f'"; \ + rm -f "$(DESTDIR)$(tubsdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(tubsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-tubsDATA + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-tubsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + install-tubsDATA installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-tubsDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mibs/tubs/POLICY-DEVICE-AUX-MIB b/mibs/tubs/POLICY-DEVICE-AUX-MIB new file mode 100644 index 0000000..da72f41 --- /dev/null +++ b/mibs/tubs/POLICY-DEVICE-AUX-MIB @@ -0,0 +1,233 @@ +POLICY-DEVICE-AUX-MIB DEFINITIONS ::= BEGIN + + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, experimental + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + TEXTUAL-CONVENTION, RowStatus, StorageType + FROM SNMPv2-TC + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InterfaceIndex FROM IF-MIB; + + +policyDeviceAuxMib MODULE-IDENTITY + LAST-UPDATED "200007121800Z" -- 12 July 2000 + ORGANIZATION "IETF RAP WG" + CONTACT-INFO + "Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA USA 95054 + Phone: +1 408 495-2992 + Email: jseligso@nortelnetworks.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "This module defines an infrastructure used + for support of policy-based provisioning of + a network device." + ::= { experimental 999 } + + + +policyDeviceAuxObjects OBJECT IDENTIFIER ::= { policyDeviceAuxMib 1 } +policyDeviceAuxConformance OBJECT IDENTIFIER ::= { policyDeviceAuxMib 2 } + + +policyDeviceConfig OBJECT IDENTIFIER ::= { policyDeviceAuxObjects 1 } + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A role represents a functionality characteristic or + capability of a resource to which policies are applied. + Examples of roles include Backbone interface, Frame Relay + interface, BGP-capable router, web server, firewall, etc. + + Valid characters are a-z, A-Z, 0-9, period, hyphen and + underscore. A role must not start with an underscore." + REFERENCE + "Policy Core Information Model, + draft-ietf-policy-core-info-model-06.txt" + SYNTAX OCTET STRING (SIZE (1..31)) + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Display string consisting of a set of roles concatenated + with a '+' character where the roles are in lexicographic + order from minimum to maximum. + + For example, a+b and b+a are NOT different role-combinations; + rather, they are different formating of the same (one) role- + combination. + + Notice the roles within a role-combination are in lexicographic + order from minimum to maximum, hence, we declare: + a+b is the valid formating of the role-combination, + b+a is an invalid formating of the role-combination. + + Notice the need of zero-length role-combination as the role- + combination of interfaces to which no roles have been assigned. + This role-combination is also known as the null role-combination. + (Note the deliberate use of lower case leters to avoid confusion + with the ASCII NULL character which has a value of zero but length + of one.)" + SYNTAX OCTET STRING (SIZE (0..255)) + +-- The Policy Interface Table supports +-- associating an interface with a specific role combination. + +-- This table satisfy the need to monitor the configuration of +-- roles on a per interface basis, and is no less scalable as +-- other required per interface parameters. +-- This does not preclude roles being associated with some less +-- granular entities, and should be addressed when such need arise. + +policyInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Policy information about a device's interfaces." + ::= { policyDeviceConfig 1 } + + +policyInterfaceEntry OBJECT-TYPE + SYNTAX PolicyInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the policyInterfaceTable. + Each row identifies policy infromation about a + particular interface." + INDEX { policyInterfaceIfIndex } + ::= { policyInterfaceTable 1 } + + +PolicyInterfaceEntry ::= SEQUENCE { + policyInterfaceIfIndex InterfaceIndex, + policyInterfaceRoleCombo RoleCombination, + policyInterfaceStorage StorageType, + policyInterfaceStatus RowStatus +} + + +policyInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value for which this conceptual row provides + policy information." + + ::= { policyInterfaceEntry 1 } + + +policyInterfaceRoleCombo OBJECT-TYPE + SYNTAX RoleCombination + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The role combination that is associated with this interface + for the purpose of assigning policies to this interface." + ::= { policyInterfaceEntry 2 } + + +policyInterfaceStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + + + Conceptual rows having the value permanent(4) need not + allow write-access to any columnar objects in the row. + + + This object may not be modified if the associated + policyInterfaceStatus object is equal to active(1)." + DEFVAL { volatile } + ::= { policyInterfaceEntry 3 } + + +policyInterfaceStatus 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. Row + creation using only default values is supported." + ::= { policyInterfaceEntry 4 } + +-- +-- Conformance Section +-- + + +policyDeviceCompliances + OBJECT IDENTIFIER ::= { policyDeviceAuxConformance 1 } +policyDeviceGroups OBJECT IDENTIFIER ::= { policyDeviceAuxConformance 2 } + + +policyDeviceCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Policy Auxiliary MIB." + + + MODULE -- this module + MANDATORY-GROUPS { policyInterfaceGroup } + + + OBJECT policyInterfaceRoleCombo + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + OBJECT policyInterfaceStorage + MIN-ACCESS read-only + DESCRIPTION "Write access is not required, nor is + support for the nonVolatile(2) enumeration." + + + OBJECT policyInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { policyDeviceCompliances 1 } + + +policyInterfaceGroup OBJECT-GROUP + OBJECTS { + policyInterfaceRoleCombo, + policyInterfaceStorage, + policyInterfaceStatus + } + STATUS current + + DESCRIPTION + "Objects used to define interface to role combination + mappings." + ::= { policyDeviceGroups 1 } + + +END diff --git a/mibs/tubs/POLICY-DEVICE-AUX-MIB-orig b/mibs/tubs/POLICY-DEVICE-AUX-MIB-orig new file mode 100644 index 0000000..71c3cf1 --- /dev/null +++ b/mibs/tubs/POLICY-DEVICE-AUX-MIB-orig @@ -0,0 +1,233 @@ +POLICY-DEVICE-AUX-MIB DEFINITIONS ::= BEGIN + + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, experimental + FROM SNMPv2-SMI + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + TEXTUAL-CONVENTION, RowStatus, StorageType + FROM SNMPv2-TC + SnmpAdminString FROM SNMP-FRAMEWORK-MIB + InterfaceIndex FROM IF-MIB; + + +policyDeviceAuxMib MODULE-IDENTITY + LAST-UPDATED "200007121800Z" -- 12 July 2000 + ORGANIZATION "IETF RAP WG" + CONTACT-INFO + "Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA USA 95054 + Phone: +1 408 495-2992 + Email: jseligso@nortelnetworks.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com" + DESCRIPTION + "This module defines an infrastructure used + for support of policy-based provisioning of + a network device." + ::= { experimental 999 } + + + +policyDeviceAuxObjects OBJECT IDENTIFIER ::= { policyDeviceAuxMib 1 } +policyDeviceAuxConformance OBJECT IDENTIFIER ::= { policyDeviceAuxMib 2 } + + +policyDeviceConfig OBJECT IDENTIFIER ::= { policyDeviceAuxObjects 1 } + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A role represents a functionality characteristic or + capability of a resource to which policies are applied. + Examples of roles include Backbone interface, Frame Relay + interface, BGP-capable router, web server, firewall, etc. + + Valid characters are a-z, A-Z, 0-9, period, hyphen and + underscore. A role must not start with an underscore." + REFERENCE + "Policy Core Information Model, + draft-ietf-policy-core-info-model-06.txt" + SYNTAX SnmpAdminString (SIZE (1..31)) + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Display string consisting of a set of roles concatenated + with a '+' character where the roles are in lexicographic + order from minimum to maximum. + + For example, a+b and b+a are NOT different role-combinations; + rather, they are different formating of the same (one) role- + combination. + + Notice the roles within a role-combination are in lexicographic + order from minimum to maximum, hence, we declare: + a+b is the valid formating of the role-combination, + b+a is an invalid formating of the role-combination. + + Notice the need of zero-length role-combination as the role- + combination of interfaces to which no roles have been assigned. + This role-combination is also known as the null role-combination. + (Note the deliberate use of lower case leters to avoid confusion + with the ASCII NULL character which has a value of zero but length + of one.)" + SYNTAX SnmpAdminString (SIZE (0..255)) + +-- The Policy Interface Table supports +-- associating an interface with a specific role combination. + +-- This table satisfy the need to monitor the configuration of +-- roles on a per interface basis, and is no less scalable as +-- other required per interface parameters. +-- This does not preclude roles being associated with some less +-- granular entities, and should be addressed when such need arise. + +policyInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Policy information about a device's interfaces." + ::= { policyDeviceConfig 1 } + + +policyInterfaceEntry OBJECT-TYPE + SYNTAX PolicyInterfaceEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A conceptual row in the policyInterfaceTable. + Each row identifies policy infromation about a + particular interface." + INDEX { policyInterfaceIfIndex } + ::= { policyInterfaceTable 1 } + + +PolicyInterfaceEntry ::= SEQUENCE { + policyInterfaceIfIndex InterfaceIndex, + policyInterfaceRoleCombo RoleCombination, + policyInterfaceStorage StorageType, + policyInterfaceStatus RowStatus +} + + +policyInterfaceIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The ifIndex value for which this conceptual row provides + policy information." + + ::= { policyInterfaceEntry 1 } + + +policyInterfaceRoleCombo OBJECT-TYPE + SYNTAX RoleCombination + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The role combination that is associated with this interface + for the purpose of assigning policies to this interface." + ::= { policyInterfaceEntry 2 } + + +policyInterfaceStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The storage type for this conceptual row. + + + Conceptual rows having the value permanent(4) need not + allow write-access to any columnar objects in the row. + + + This object may not be modified if the associated + policyInterfaceStatus object is equal to active(1)." + DEFVAL { volatile } + ::= { policyInterfaceEntry 3 } + + +policyInterfaceStatus 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. Row + creation using only default values is supported." + ::= { policyInterfaceEntry 4 } + +-- +-- Conformance Section +-- + + +policyDeviceCompliances + OBJECT IDENTIFIER ::= { policyDeviceAuxConformance 1 } +policyDeviceGroups OBJECT IDENTIFIER ::= { policyDeviceAuxConformance 2 } + + +policyDeviceCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Policy Auxiliary MIB." + + + MODULE -- this module + MANDATORY-GROUPS { policyInterfaceGroup } + + + OBJECT policyInterfaceRoleCombo + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + + + OBJECT policyInterfaceStorage + MIN-ACCESS read-only + DESCRIPTION "Write access is not required, nor is + support for the nonVolatile(2) enumeration." + + + OBJECT policyInterfaceStatus + MIN-ACCESS read-only + DESCRIPTION "Write access is not required." + ::= { policyDeviceCompliances 1 } + + +policyInterfaceGroup OBJECT-GROUP + OBJECTS { + policyInterfaceRoleCombo, + policyInterfaceStorage, + policyInterfaceStatus + } + STATUS current + + DESCRIPTION + "Objects used to define interface to role combination + mappings." + ::= { policyDeviceGroups 1 } + + +END diff --git a/mibs/tubs/TUBS-IBR-AGENT-CAPABILITIES b/mibs/tubs/TUBS-IBR-AGENT-CAPABILITIES new file mode 100644 index 0000000..a8ee855 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-AGENT-CAPABILITIES @@ -0,0 +1,208 @@ +TUBS-IBR-AGENT-CAPABILITIES DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-AGENT-CAPABILITIES 814 2000-02-14 08:54:20Z strauss $ + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + AGENT-CAPABILITIES + FROM SNMPv2-CONF + ibr + FROM TUBS-SMI; + +ibrAgentCapabilities MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Agent capability statements." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9808051623Z" + DESCRIPTION + "Added agent capabilities for the WWW-MIB subagent version 1.0." + REVISION "9702141023Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 6 } + +linux OBJECT IDENTIFIER + ::= { ibrAgentCapabilities 1 } + +linuxAgent3dot3 AGENT-CAPABILITIES + PRODUCT-RELEASE "cmu-snmp-linux-3.3" + STATUS current + DESCRIPTION "CMU SNMP v1.1b + SNMPv2 USEC + LINUX" + + SUPPORTS SNMPv2-MIB + INCLUDES { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup, + snmpCommunityGroup } + + SUPPORTS SNMPv2-USEC-MIB + INCLUDES { usecBasicGroup, usecStatsGroup } + + SUPPORTS IF-MIB + INCLUDES { ifGeneralGroup, ifPacketGroup } + VARIATION ifLinkUpDownTrapEnable + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifConnectorPresent + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifName + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifHighSpeed + ACCESS not-implemented + DESCRIPTION "" + + VARIATION ifInMulticastPkts + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifInBroadcastPkts + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifOutMulticastPkts + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifOutBroadcastPkts + ACCESS not-implemented + DESCRIPTION "" + VARIATION ifPromiscuousMode + ACCESS not-implemented + DESCRIPTION "" + + SUPPORTS IP-MIB + INCLUDES { ipGroup, + icmpGroup } + VARIATION ipAdEntReasmMaxSize + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipNetToMediaIfIndex + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipNetToMediaPhysAddress + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipNetToMediaNetAddress + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipNetToMediaType + ACCESS not-implemented + DESCRIPTION "" + VARIATION ipRoutingDiscards + ACCESS not-implemented + DESCRIPTION "" + + SUPPORTS TCP-MIB + INCLUDES { tcpGroup } + VARIATION tcpInErrs + ACCESS not-implemented + DESCRIPTION "" + VARIATION tcpOutRsts + ACCESS not-implemented + DESCRIPTION "" + + SUPPORTS UDP-MIB + INCLUDES { udpGroup } + VARIATION udpLocalAddress + ACCESS not-implemented + DESCRIPTION "" + VARIATION udpLocalPort + ACCESS not-implemented + DESCRIPTION "" + + SUPPORTS HOST-RESOURCES-MIB + INCLUDES { hrSystemGroup, + hrStorageGroup, + hrDeviceGroup, + hrSWRunGroup, + hrSWRunPerfGroup, + hrSWInstalledGroup } + + VARIATION hrSWOSIndex + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrStorageAllocationFailures + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrDeviceErrors + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrProcessorFrwID + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrFSAccess + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrSWRunName + ACCESS not-implemented + DESCRIPTION "" + + VARIATION hrSWRunID + ACCESS not-implemented + DESCRIPTION "" + + ::= { ibrAgentCapabilities 2 } + +wwwSubagent1dot0 AGENT-CAPABILITIES + PRODUCT-RELEASE "TUBS Apache WWW-MIB sub-agent version 1.0" + STATUS current + DESCRIPTION "TUBS WWW-MIB sub-agent version 1.0 for Solaris." + + SUPPORTS WWW-MIB + INCLUDES { wwwServiceGroup, wwwSummaryGroup, + wwwRequestInGroup, wwwResponseOutGroup, + wwwDocumentGroup } + + VARIATION wwwServiceOperStatus + SYNTAX INTEGER { running(2) } + DESCRIPTION "The sub-agent toolkit does not allow to return + noSuchObject exceptions." + VARIATION wwwServiceLastChange + DESCRIPTION "Always zero. The sub-agent toolkit does not allow + to return noSuchObject exceptions." + + VARIATION wwwSummaryOutRequests + DESCRIPTION "Always zero. The implementation only supports + the server role." + VARIATION wwwSummaryInResponses + DESCRIPTION "Always zero. The implementation only supports + the server role." + VARIATION wwwSummaryInBytes + DESCRIPTION "Counter64 data-type does not exist in SNMPv1." + VARIATION wwwSummaryOutBytes + DESCRIPTION "Counter64 data-type does not exist in SNMPv1." + + VARIATION wwwRequestInRequests + DESCRIPTION "Uses illegal instance identifier values since + the sub-agent toolkit does not support variable + length OCTET STRING instance identifier." + VARIATION wwwRequestInBytes + DESCRIPTION "Uses illegal instance identifier values since + the sub-agent toolkit does not support variable + length OCTET STRING instance identifier." + VARIATION wwwRequestInLastTime + DESCRIPTION "Uses illegal instance identifier values since + the sub-agent toolkit does not support variable + length OCTET STRING instance identifier." + + ::= { ibrAgentCapabilities 3 } + +END diff --git a/mibs/tubs/TUBS-IBR-LINUX-MIB b/mibs/tubs/TUBS-IBR-LINUX-MIB new file mode 100644 index 0000000..9fe7be4 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-LINUX-MIB @@ -0,0 +1,131 @@ +TUBS-IBR-LINUX-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-LINUX-MIB 807 2000-02-12 11:52:35Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ibr + FROM TUBS-SMI; + +linuxMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for the linux operating system." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9801070622Z" + DESCRIPTION + "Load average object-types added, clarification of linuxCPU." + REVISION "9702141023Z" + DESCRIPTION + "Various cleanups to make the module conforming to SNMPv2 SMI." + REVISION "9411152024Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 5 } + +-- The various groups defined within this MIB module: + +linuxObjects OBJECT IDENTIFIER ::= { linuxMIB 2 } + +linuxConformance OBJECT IDENTIFIER ::= { linuxMIB 3 } + +-- Textual Conventions: + +LoadValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-2" + STATUS current + DESCRIPTION + "This data type represents a systems load average over a + given time interval. Every usage of this textual convention + is required to specify the time interval. A value represents + the average number of processes ready to run times 100." + SYNTAX Integer32 (0..2147483647) + +-- Object definitions: + +linuxCPU OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The identification of the linux CPUs. This string contains + foreach CPU present in the system the CPU type, model and + vendor (if known by the operating system)." + ::= { linuxObjects 1 } + +linuxBogo OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of BOGO MIPS of the linux system." + ::= { linuxObjects 2 } + +linuxLoadAvg1 OBJECT-TYPE + SYNTAX LoadValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average system load during the last 60 seconds." + ::= { linuxObjects 3 } + +linuxLoadAvg5 OBJECT-TYPE + SYNTAX LoadValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average system load during the last 5 minutes." + ::= { linuxObjects 4 } + +linuxLoadAvg15 OBJECT-TYPE + SYNTAX LoadValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average system load during the last 15 minutes." + ::= { linuxObjects 5 } + +-- Conformance statements: + +linuxCompliances OBJECT IDENTIFIER ::= { linuxConformance 1 } + +linuxGroups OBJECT IDENTIFIER ::= { linuxConformance 2 } + +linuxCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for an SNMP entity which implements + the linux MIB." + MODULE -- this module + MANDATORY-GROUPS { linuxGroup } + ::= { linuxCompliances 1 } + +linuxGroup OBJECT-GROUP + OBJECTS { + linuxCPU, linuxBogo, + linuxLoadAvg1, linuxLoadAvg5, linuxLoadAvg15 + } + STATUS current + DESCRIPTION + "A collection of linux specific objects." + ::= { linuxGroups 1 } + +END diff --git a/mibs/tubs/TUBS-IBR-LINUX-NETFILTER-MIB b/mibs/tubs/TUBS-IBR-LINUX-NETFILTER-MIB new file mode 100644 index 0000000..c1df6e0 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-LINUX-NETFILTER-MIB @@ -0,0 +1,636 @@ +TUBS-IBR-LINUX-NETFILTER-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-LINUX-NETFILTER-MIB,v 1.7 2002/08/26 16:46:14 wellnitz Exp $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Unsigned32, Counter64 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, TruthValue, StorageType, RowStatus, TimeStamp + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddressType, InetAddress, InetAddressPrefixLength + FROM INET-ADDRESS-MIB + ibr + FROM TUBS-SMI; + +lnfMIB MODULE-IDENTITY + LAST-UPDATED "200207230000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Frank Strauss, Oliver Wellnitz + TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: {strauss,wellnitz}@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for the Linux 2.4 netfilter + subsystem." + REVISION "200207260000Z" + DESCRIPTION + "The initial revision of this module. This revision does + not cover any match extensions and target extensions." + ::= { ibr 13 } + +-- +-- The various groups defined within this MIB module: +-- + +lnfObjects OBJECT IDENTIFIER ::= { lnfMIB 1 } + +lnfTraps OBJECT IDENTIFIER ::= { lnfMIB 2 } + +lnfConformance OBJECT IDENTIFIER ::= { lnfMIB 3 } + +-- +-- Textual Conventions: +-- + +LnfTarget ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type represents an action that is about to + be applied to a packet. + + none(1): No action, except increasing counters. + + other(2): An unknown extension action which cannot + be described by the values specified below. + + drop(3): Drop the packet on the floor. + + accept(4): Let the packet through. + + queue(5): Pass the packet to userspace. + + return(6): Stop traversing this chain and resume at the + next rule in the previous (calling) chain. + + chain(7): Jump to the user chain specified by a + related object. + " + SYNTAX INTEGER { + none(1), + other(2), + drop(3), + accept(4), + queue(5), + return(6), + chain(7) + } + +-- +-- Object definitions: +-- + +lnfLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last netfilter configuration change of any kind, + including any creation, deletion or modification of any table of this + MIB." + ::= { lnfObjects 1 } + +lnfTableTable OBJECT-TYPE + SYNTAX SEQUENCE OF LnfTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all tables installed on the netfilter subsystem." + ::= { lnfObjects 2 } + +lnfTableEntry OBJECT-TYPE + SYNTAX LnfTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular netfilter table." + INDEX { lnfTableAddressType, lnfTableName } + ::= { lnfTableTable 1 } + +LnfTableEntry ::= + SEQUENCE { + lnfTableAddressType InetAddressType, + lnfTableName SnmpAdminString, + lnfTableLastChange TimeStamp + } + +lnfTableAddressType OBJECT-TYPE + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The address type for which the netfilter table works." + ::= { lnfTableEntry 1 } + +lnfTableName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the netfilter table." + ::= { lnfTableEntry 2 } + +lnfTableLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last modification of this netfilter + table, including the creation or deletion of a netfilter + chain that belongs to this table." + ::= { lnfTableEntry 3 } + +-- + +lnfChainTable OBJECT-TYPE + SYNTAX SEQUENCE OF LnfChainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all chains installed on the netfilter + subsystem." + ::= { lnfObjects 3 } + +lnfChainEntry OBJECT-TYPE + SYNTAX LnfChainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular netfilter chain." + INDEX { lnfTableAddressType, lnfTableName, lnfChainName } + ::= { lnfChainTable 1 } + +LnfChainEntry ::= + SEQUENCE { + lnfChainName SnmpAdminString, + lnfChainPackets Counter64, + lnfChainOctets Counter64, + lnfChainTarget LnfTarget, + lnfChainLastChange TimeStamp, + lnfChainStorage StorageType, + lnfChainStatus RowStatus + } + +lnfChainName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The netfilter chain to which the rule belongs." + ::= { lnfChainEntry 1 } + +lnfChainPackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that passed this chain since + the rule was installed or reset." + ::= { lnfChainEntry 2 } + +lnfChainOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that passed this chain since + the chain was installed or reset." + ::= { lnfChainEntry 3 } + +lnfChainTarget OBJECT-TYPE + SYNTAX LnfTarget { drop(3), accept(4), return(6) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The action that shall be applied to a packet if no rule + within the chain matches. Note that user-defined chains + only allow return(6)." + DEFVAL { return } + ::= { lnfChainEntry 4 } + +lnfChainLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last modification of this netfilter + chain, including the creation or deletion of a netfilter + rule that belongs to this chain." + ::= { lnfChainEntry 5 } + +lnfChainStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept in + volatile storage and lost upon reboot or whether it + is backed up by stable storage or builtin." + ::= { lnfChainEntry 6 } + +lnfChainStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + lnfChainTable." + ::= { lnfChainEntry 7 } + +-- + +lnfRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF LnfRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all rules installed on the netfilter + subsystem." + ::= { lnfObjects 4 } + +lnfRuleEntry OBJECT-TYPE + SYNTAX LnfRuleEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular netfilter rule. Rules + of different netfilter tables and chains are + distinguished by the corresponding index objects." + INDEX { lnfTableAddressType, lnfTableName, + lnfChainName, lnfRuleIndex } + ::= { lnfRuleTable 1 } + +LnfRuleEntry ::= + SEQUENCE { + lnfRuleIndex Unsigned32, + lnfRuleProtocol Unsigned32, + lnfRuleProtocolInv TruthValue, + lnfRuleSourceAddress InetAddress, + lnfRuleSourceAddressPrefixLength InetAddressPrefixLength, + lnfRuleSourceAddressInv TruthValue, + lnfRuleDestinationAddress InetAddress, + lnfRuleDestinationAddressPrefixLength InetAddressPrefixLength, + lnfRuleDestinationAddressInv TruthValue, + lnfRuleInInterface SnmpAdminString, + lnfRuleInInterfaceInv TruthValue, + lnfRuleOutInterface SnmpAdminString, + lnfRuleOutInterfaceInv TruthValue, + lnfRuleFragment TruthValue, + lnfRuleFragmentInv TruthValue, + lnfRulePackets Counter64, + lnfRuleOctets Counter64, + lnfRuleTarget LnfTarget, + lnfRuleTargetChain SnmpAdminString, + lnfRuleTrapEnable TruthValue, + lnfRuleLastChange TimeStamp, + lnfRuleStorage StorageType, + lnfRuleStatus RowStatus + } + +lnfRuleIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique number identifying the rule within a netfilter + chain." + ::= { lnfRuleEntry 1 } + +lnfRuleProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The protocol of the rule. The number zero matches all + protocols." + DEFVAL { 0 } + ::= { lnfRuleEntry 2 } + +lnfRuleProtocolInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleProtocol test + has to be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 3 } + +lnfRuleSourceAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The source address of a packet. The exact format depends + on the address type specified by lnfRuleAddressType. + This test is applied for an address prefix whose length + is specified by lnfRuleSourceAddressPrefixLength. + + If a new row is created this object should default to + an all-zeros value with a length approrpiate for the + corresponding lnfRuleAddressType object value." + ::= { lnfRuleEntry 4 } + +lnfRuleSourceAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The network prefix length associated with + lnfRuleSourceAddress." + DEFVAL { 0 } + ::= { lnfRuleEntry 5 } + +lnfRuleSourceAddressInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleSourceAddress + and lnfRuleSourceAddressPrefixLength test has to + be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 6 } + +lnfRuleDestinationAddress OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination address of a packet. The exact format + depends on the address type specified by + lnfRuleAddressType. This test is applied for an address + prefix whose length is specified by + lnfRuleDestinationAddressPrefixLength. + + If a new row is created this object should default to + an all-zeros value with a length approrpiate for the + corresponding lnfRuleAddressType object value." + ::= { lnfRuleEntry 7 } + +lnfRuleDestinationAddressPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The network prefix length associated with + lnfRuleDestinationAddress." + DEFVAL { 0 } + ::= { lnfRuleEntry 8 } + +lnfRuleDestinationAddressInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleDestinationAddress + and lnfRuleDestinationAddressPrefixLength test has to + be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 9 } + +lnfRuleInInterface OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name of an interface via which a packet is going to be + received (only for packets entering the INPUT, FORWARD and + PREROUTING chains). If the interface name ends in a '+', + then any interface which begins with this name will match. + If this is an empty string, any interface name will match." + DEFVAL { "" } + ::= { lnfRuleEntry 10 } + +lnfRuleInInterfaceInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleInInterface test + has to be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 11 } + +lnfRuleOutInterface OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..16)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "Name of an interface via which a packet is going to be + sent (for packets entering the FORWARD, OUTPUT and + POSTROUTING chains). If the interface name ends in a '+', + then any interface which begins with this name will match. + If this is an empty string, any interface name will match." + DEFVAL { "" } + ::= { lnfRuleEntry 12 } + +lnfRuleOutInterfaceInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleOutInterface test + has to be inverted." + DEFVAL { false } + ::= { lnfRuleEntry 13 } + +lnfRuleFragment OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "If this flag is true, the rule only refers to second and + further fragments of fragmented packets. Since there is + no way to tell the source or destination ports of such a + packet (or ICMP type), such a packet will not match any + rules which specify them." + DEFVAL { false } + ::= { lnfRuleEntry 14 } + +lnfRuleFragmentInv OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This flag specifies whether the lnfRuleFragmentInv test, + if true, has to be inverted. An inverted rule will only + match head fragments, or unfragmented packets." + DEFVAL { false } + ::= { lnfRuleEntry 15 } + +lnfRulePackets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that matched this rule since + the rule was installed or reset." + ::= { lnfRuleEntry 16 } + +lnfRuleOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of octets that matched this rule since the + rule was installed or reset." + ::= { lnfRuleEntry 17 } + +lnfRuleTarget OBJECT-TYPE + SYNTAX LnfTarget + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The action that shall be applied to a packet if the + rule matches. If the value is chain(7), then jump to + the user chain specified by lnfRuleTargetChain." + DEFVAL { none } + ::= { lnfRuleEntry 18 } + +lnfRuleTargetChain OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The name of the target chain if the value of + lnfRuleTarget is chain(7)." + ::= { lnfRuleEntry 19 } + +lnfRuleTrapEnable OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether lnfRuleMatch traps should be + generated for packets matching this rule. Note + that it's up to the implementation to delay and + accumulate mutliple traps in order to reduce the + number of emitted traps." + DEFVAL { false } + ::= { lnfRuleEntry 20 } + +lnfRuleLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time of the last modification of this netfilter rule. + If it has been unchanged since the last re-initialization + of the local network management subsystem, then this + object contains a zero value." + ::= { lnfRuleEntry 21 } + +lnfRuleStorage OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row is kept in + volatile storage and lost upon reboot or whether it + is backed up by stable storage or builtin." + ::= { lnfRuleEntry 22 } + +lnfRuleStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + lnfRuleTable." + ::= { lnfRuleEntry 23 } + +-- +-- Notifications: +-- + +lnfNotifications OBJECT IDENTIFIER ::= { lnfTraps 0 } + +lnfRuleMatch NOTIFICATION-TYPE + OBJECTS { lnfRulePackets, lnfRuleOctets } + STATUS current + DESCRIPTION + "A lnfRuleMatch trap signifies that the rule to which + the lnfRulePackets and lnfRuleOctets objects belong + was matched by at least one packets since the last + trap for the same rule was emitted. + + The agent may delay and accumulate mutliple traps in order + to reduce the number of emitted traps, but the time for + accumulation should be no more than 60 seconds. + + Note that detailed information on the packet(s) that + triggered a trap is not available from the trap's + objects. This would cause problems with the accumulation + of matches and/or increased trap traffic." + ::= { lnfNotifications 1 } + +-- +-- Conformance statements: +-- + +lnfCompliances OBJECT IDENTIFIER ::= { lnfConformance 1 } + +lnfGroups OBJECT IDENTIFIER ::= { lnfConformance 2 } + +lnfCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for an SNMP entity which + implements the Linux Netfilter MIB." + MODULE -- this module + MANDATORY-GROUPS { lnfGeneralGroup, lnfNotificationGroup } + +-- OBJECT lnfTableAddressType +-- SYNTAX InetAddressType { ipv4(1), ipv6(2) } +-- DESCRIPTION +-- "Other address types than IPv4 and IPv6 are not required." + + ::= { lnfCompliances 1 } + +lnfGeneralGroup OBJECT-GROUP + OBJECTS { + lnfLastChange, + + lnfTableLastChange, + + lnfChainPackets, lnfChainOctets, lnfChainTarget, + lnfChainLastChange, lnfChainStorage, lnfChainStatus, + + lnfRuleProtocol, lnfRuleProtocolInv, + lnfRuleSourceAddress, lnfRuleSourceAddressPrefixLength, + lnfRuleSourceAddressInv, lnfRuleDestinationAddress, + lnfRuleDestinationAddressPrefixLength, + lnfRuleDestinationAddressInv, lnfRuleInInterface, + lnfRuleInInterfaceInv, lnfRuleOutInterface, + lnfRuleOutInterfaceInv, lnfRuleFragment, + lnfRuleFragmentInv, lnfRulePackets, lnfRuleOctets, + lnfRuleTarget, lnfRuleTargetChain, lnfRuleTrapEnable, + lnfRuleLastChange, lnfRuleStorage, lnfRuleStatus + } + STATUS current + DESCRIPTION + "A collection of all Linux Netfilter objects of + the core table." + ::= { lnfGroups 1 } + +lnfNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { + lnfRuleMatch + } + STATUS current + DESCRIPTION + "A collection of all Linux Netfilter notifications." + ::= { lnfGroups 2 } + +END diff --git a/mibs/tubs/TUBS-IBR-NFS-MIB b/mibs/tubs/TUBS-IBR-NFS-MIB new file mode 100644 index 0000000..83d07a0 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-NFS-MIB @@ -0,0 +1,372 @@ +TUBS-IBR-NFS-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-NFS-MIB 807 2000-02-12 11:52:35Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + Counter32 + FROM SNMPv2-SMI + ibr + FROM TUBS-SMI; + +nfsMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for NFS server and clients." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9702141023Z" + DESCRIPTION + "Various cleanups to make the module conforming to SNMPv2 SMI." + REVISION "9411152024Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 2 } + +nfsServer OBJECT IDENTIFIER ::= { nfsMIB 1 } +nfsClient OBJECT IDENTIFIER ::= { nfsMIB 2 } + +-- server nfs statistics + +nfsServerCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs calls received by the server. + Every read access to this variable will cause the + agent to reload the statistics contained in this + group." + ::= { nfsServer 1 } + +nfsServerBad OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incorrect nfs calls received by the + server." + ::= { nfsServer 2 } + +nfsServerNull OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs null operations." + ::= { nfsServer 3 } + +nfsServerGetattr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs getattr operations." + ::= { nfsServer 4 } + +nfsServerSetattr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs setattr operations." + ::= { nfsServer 5 } + +nfsServerRoot OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs root operations." + ::= { nfsServer 6 } + +nfsServerLookup OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs lookup operations." + ::= { nfsServer 7 } + +nfsServerReadlink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs readlink operations." + ::= { nfsServer 8 } + +nfsServerRead OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs read operations." + ::= { nfsServer 9 } + +nfsServerWrcache OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs wrcache operations." + ::= { nfsServer 10 } + +nfsServerWrite OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs write operations." + ::= { nfsServer 11 } + +nfsServerCreate OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs create operations." + ::= { nfsServer 12 } + +nfsServerRemove OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs remove operations." + ::= { nfsServer 13 } + +nfsServerRename OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs rename operations." + ::= { nfsServer 14 } + +nfsServerLink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs link operations." + ::= { nfsServer 15 } + +nfsServerSymlink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs symlink operations." + ::= { nfsServer 16 } + +nfsServerMkdir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs mkdir operations." + ::= { nfsServer 17 } + +nfsServerRmdir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs rmdir operations." + ::= { nfsServer 18 } + +nfsServerReaddir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs readdir operations." + ::= { nfsServer 19 } + +nfsServerFsstat OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs fsstat operations." + ::= { nfsServer 20 } + +-- client nfs statistics. + +nfsClientCalls OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs calls send by the client + Every read access to this variable will cause the + agent to reload the statistics contained in this + group." + ::= { nfsClient 1 } + +nfsClientBad OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of incorrect nfs calls send by the client." + ::= { nfsClient 2 } + +nfsClientNull OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs null operations." + ::= { nfsClient 3 } + +nfsClientGetattr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs getattr operations." + ::= { nfsClient 4 } + +nfsClientSetattr OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs setattr operations." + ::= { nfsClient 5 } + +nfsClientRoot OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs root operations." + ::= { nfsClient 6 } + +nfsClientLookup OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs lookup operations." + ::= { nfsClient 7 } + +nfsClientReadlink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs readlink operations." + ::= { nfsClient 8 } + +nfsClientRead OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs read operations." + ::= { nfsClient 9 } + +nfsClientWrcache OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs wrcache operations." + ::= { nfsClient 10 } + +nfsClientWrite OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs write operations." + ::= { nfsClient 11 } + +nfsClientCreate OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs create operations." + ::= { nfsClient 12 } + +nfsClientRemove OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs remove operations." + ::= { nfsClient 13 } + +nfsClientRename OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs rename operations." + ::= { nfsClient 14 } + +nfsClientLink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs link operations." + ::= { nfsClient 15 } + +nfsClientSymlink OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs symlink operations." + ::= { nfsClient 16 } + +nfsClientMkdir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs mkdir operations." + ::= { nfsClient 17 } + +nfsClientRmdir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs rmdir operations." + ::= { nfsClient 18 } + +nfsClientReaddir OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs readdir operations." + ::= { nfsClient 19 } + +nfsClientFsstat OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of nfs fsstat operations." + ::= { nfsClient 20 } + +END diff --git a/mibs/tubs/TUBS-IBR-PING-MIB b/mibs/tubs/TUBS-IBR-PING-MIB new file mode 100644 index 0000000..439587c --- /dev/null +++ b/mibs/tubs/TUBS-IBR-PING-MIB @@ -0,0 +1,127 @@ +TUBS-IBR-PING-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Unsigned32 + FROM SNMPv2-SMI + ibr + FROM TUBS-SMI; + +pingMIB MODULE-IDENTITY + LAST-UPDATED "200007070000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Frank Strauss + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3266 + Fax: +49 531 391 5936 + E-mail: strauss@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for JAX code generator tests." + REVISION "200007070000Z" + DESCRIPTION + "Added scalar group and notification." + REVISION "200003300000Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 8 } + + +pingNotifications OBJECT IDENTIFIER ::= { pingMIB 0 } + +pingObjects OBJECT IDENTIFIER ::= { pingMIB 1 } + +-- Object definitions. + +pingTable OBJECT-TYPE + SYNTAX SEQUENCE OF PingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of ping destinations and their round trip times." + ::= { pingObjects 1 } + +pingEntry OBJECT-TYPE + SYNTAX PingEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing a ping destinations and its + round trip time." + INDEX { pingIndex } + ::= { pingTable 1 } + +PingEntry ::= + SEQUENCE { + pingIndex Unsigned32, + pingAddress IpAddress, + pingRtt Unsigned32 + } + +pingIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value identifying the ping entry." + ::= { pingEntry 1 } + +pingAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The destination IP address for the ping entry. + Writing to an instance of this object with an + unused pingIndex creates a new pingTable entry." + ::= { pingEntry 2 } + +pingRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The measured round trip time for the ping entry. + The value zero denotes a ping target that did + not respond (yet)." + ::= { pingEntry 3 } + + +pingStatistics OBJECT IDENTIFIER ::= { pingObjects 2 } + +pingTimeout OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Maximum time to wait for a response." + ::= { pingStatistics 1 } + +pingAvgRtt OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "milliseconds" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The average round trip time for all ping entries." + ::= { pingStatistics 2 } + +-- Notification definitions. + +pingNoResponse NOTIFICATION-TYPE + OBJECTS { pingRtt, pingTimeout } + STATUS current + DESCRIPTION + "This notification is generated whenever a ping + target did not reply within the current timeout. + The pingAddress objects contains the target address + and the pingTimeout objects contains the timeout + value in milli seconds." + ::= { pingNotifications 1 } + +END diff --git a/mibs/tubs/TUBS-IBR-PROC-MIB b/mibs/tubs/TUBS-IBR-PROC-MIB new file mode 100644 index 0000000..2230cf0 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-PROC-MIB @@ -0,0 +1,87 @@ +TUBS-IBR-PROC-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-PROC-MIB 807 2000-02-12 11:52:35Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + DisplayString, DateAndTime + FROM SNMPv2-TC + ibr + FROM TUBS-SMI; + +procMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for listing processes." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9702141023Z" + DESCRIPTION + "Various cleanups to make the module conforming to SNMPv2 SMI." + REVISION "9411152024Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 3 } + +procReload OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Any set operation will reload the process table. + It contains a time stamp when the proc table + was reloaded the last time." + ::= { procMIB 1 } + +procTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The process table." + ::= { procMIB 2 } + +procEntry OBJECT-TYPE + SYNTAX ProcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry for a process in the processes table." + INDEX { procID } + ::= { procTable 1 } + +ProcEntry ::= SEQUENCE { + procID Integer32, + procCmd DisplayString +} + +procID OBJECT-TYPE + SYNTAX Integer32 (1..'7fffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unique process ID." + ::= { procEntry 1 } + +procCmd OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The command name used to start this process." + ::= { procEntry 2 } + +END diff --git a/mibs/tubs/TUBS-IBR-TEST-MIB b/mibs/tubs/TUBS-IBR-TEST-MIB new file mode 100644 index 0000000..093390a --- /dev/null +++ b/mibs/tubs/TUBS-IBR-TEST-MIB @@ -0,0 +1,74 @@ +TUBS-IBR-TEST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + ibr + FROM TUBS-SMI; + +testMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "A MIB module which is only used for testing purposes." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9810091711Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 7 } + +OctalValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "o" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX Integer32 (0..2147483647) + +HexValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "x" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX Integer32 (0..2147483647) + +BinaryValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "b" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX Integer32 (0..2147483647) + +Dot3Value ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-3" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX Integer32 (0..2147483647) + +NumValue ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d-1x-1o-1b" + STATUS current + DESCRIPTION + "This TC is used to test DISPLAY-HINT interpretation. It is + not intended to be used in any OBJECT-TYPE definition." + SYNTAX OCTET STRING + +END diff --git a/mibs/tubs/TUBS-IBR-TNM-MIB b/mibs/tubs/TUBS-IBR-TNM-MIB new file mode 100644 index 0000000..67d2209 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-TNM-MIB @@ -0,0 +1,330 @@ +TUBS-IBR-TNM-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-IBR-TNM-MIB 807 2000-02-12 11:52:35Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, Unsigned32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString, RowStatus, DateAndTime, + TruthValue, TimeStamp, TAddress + FROM SNMPv2-TC + ibr + FROM TUBS-SMI; + +tnmMIB MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB modules for tnm based agents." + REVISION "200002090000Z" + DESCRIPTION + "Updated IMPORTS and minor stylistic fixes." + REVISION "9702141023Z" + DESCRIPTION + "Various cleanups to make the module conforming to SNMPv2 SMI." + REVISION "9607152024Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 1 } + +-- the tnm group + +tnmStatus OBJECT IDENTIFIER ::= { tnmMIB 1 } + +tnmVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the tnm agent." + ::= { tnmStatus 1 } + +tnmTclVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the running Tcl interpreter." + ::= { tnmStatus 2 } + +tnmTclCmdCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The nummber of Tcl statements evaluated so far." + ::= { tnmStatus 3 } + +tnmDate OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current date." + ::= { tnmStatus 4 } + +tnmTrapDst OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The host name of the trap sink host." + ::= { tnmStatus 5 } + +tnmTrapMsg OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of the last trap create by this entity." + ::= { tnmStatus 6 } + +-- the download mechanism + +tnmDownload OBJECT IDENTIFIER ::= { tnmMIB 2 } + +URL ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "A uniform ressource locator as defined in RFC 1738." + SYNTAX OCTET STRING (SIZE (0..255)) + +tnmHttpProxy OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable specifies the proxy server. It must be of the + form [:] where is either a domain name + or an IP address and is the port number used to access + the proxy server. The default port number is 80." + ::= { tnmDownload 1 } + +tnmHttpSource OBJECT-TYPE + SYNTAX URL + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this variable will make tnm to download + and source the document with the given URL. The agent + will try to retrieve the document and sets the variable + to the URL if this operations was successfull. + Otherwise, the value will become an empty string." + ::= { tnmDownload 2 } + +tnmHttpError OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable contains an error string is an http + operation fails. An empty string signals that the + last operation completed successfully." + ::= { tnmDownload 3 } + +-- the peer table + +tnmPeers OBJECT IDENTIFIER ::= { tnmMIB 3 } + +tnmPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF TnmPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A (conceptual) table storing known tnm peers." + ::= { tnmPeers 1 } + +tnmPeerEntry OBJECT-TYPE + SYNTAX TnmPeerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the peer table." + INDEX { tnmPeerTAddress } + ::= { tnmPeerTable 1 } + +TnmPeerEntry ::= SEQUENCE { + tnmPeerTAddress TAddress, + tnmPeerAuth OCTET STRING, + tnmPeerState INTEGER, + tnmPeerLastChecked TimeStamp, + tnmPeerStatus RowStatus +} + +tnmPeerTAddress OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The address and port number of the peer agent." + ::= { tnmPeerEntry 1 } + +tnmPeerAuth OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The authentication information for this peer. This will + usually be a community string until we get the final SNMPv2 + decisions about the security model." + ::= { tnmPeerEntry 2 } + +tnmPeerState OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The current status of the peer as returned by the last + status probe message." + ::= { tnmPeerEntry 3 } + +tnmPeerLastChecked OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of sysUpTime when the status of the peer was + retrieved and written to tnmPeerState." + ::= { tnmPeerEntry 4 } + +tnmPeerStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status column used for creating, modifying, + and deleting instances of the columnar objects in + the tnm peer table." + DEFVAL { active } + ::= { tnmPeerEntry 5 } + +-- election section + +tnmElection OBJECT IDENTIFIER ::= { tnmMIB 4 } + +tnmElectionIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The (hopefully) unique index of this peer used by the + bully election algorithm." + ::= { tnmElection 1 } + +tnmElectionPanic OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Reading this variable will start the panic algorithm + on this peer. (We should use an inform request here.)" + ::= { tnmElection 2 } + +tnmElectionMaster OBJECT-TYPE + SYNTAX TAddress + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This variable will be set by a new master appearing + on the scene. (We should use an inform request here.)" + ::= { tnmElection 3 } + +-- the tnmEvalTable example adopted from RFC 1442 + +tnmEval OBJECT IDENTIFIER ::= { tnmMIB 5 } + +tnmEvalSlot OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The index number of the first unassigned entry in + the evaluation table. + + A management station should create new entries in + the evaluation table using this algorithm: first, + issue a management protocol retrieval operation to + determine the value of evalSlot; and, second, + issue a management protocol set operation to + create an instance of the evalStatus object + setting its value to underCreation(1). If this + latter operation succeeds, then the management + station may continue modifying the instances + corresponding to the newly created conceptual row, + without fear of collision with other management + stations." + ::= { tnmEval 1 } + +tnmEvalTable OBJECT-TYPE + SYNTAX SEQUENCE OF TnmEvalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) evaluation table." + ::= { tnmEval 2 } + +tnmEvalEntry OBJECT-TYPE + SYNTAX TnmEvalEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the evaluation table." + INDEX { tnmEvalIndex } + ::= { tnmEvalTable 1 } + +TnmEvalEntry ::= SEQUENCE { + tnmEvalIndex Integer32, + tnmEvalString DisplayString, + tnmEvalValue DisplayString, + tnmEvalStatus RowStatus +} + +tnmEvalIndex OBJECT-TYPE + SYNTAX Integer32 (1..'7fffffff'h) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The auxiliary variable used for identifying + instances of the columnar objects in the + evaluation table." + ::= { tnmEvalEntry 1 } + +tnmEvalString OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The string to evaluate." + ::= { tnmEvalEntry 2 } + +tnmEvalValue OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value resturned by executing evalString." + ::= { tnmEvalEntry 3 } + +tnmEvalStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status column used for creating, modifying, + and deleting instances of the columnar objects in + the evaluation table." + DEFVAL { active } + ::= { tnmEvalEntry 4 } + +END diff --git a/mibs/tubs/TUBS-IBR-XEN-MIB b/mibs/tubs/TUBS-IBR-XEN-MIB new file mode 100644 index 0000000..b8c5236 --- /dev/null +++ b/mibs/tubs/TUBS-IBR-XEN-MIB @@ -0,0 +1,387 @@ +TUBS-IBR-XEN-MIB DEFINITIONS ::= BEGIN + +-- @(#) $Id$ + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Counter32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + ibr + FROM TUBS-SMI; + +xenMIB MODULE-IDENTITY + LAST-UPDATED "200602200000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Frank Strauss, Oliver Wellnitz + TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: {strauss,wellnitz}@ibr.cs.tu-bs.de" + DESCRIPTION + "Experimental MIB module for Xen Virtual Hosting." + REVISION "200602200000Z" + DESCRIPTION + "The initial revision of this module." + ::= { ibr 14 } + +-- +-- The various groups defined within this MIB module: +-- + +xenObjects OBJECT IDENTIFIER ::= { xenMIB 1 } + +xenTraps OBJECT IDENTIFIER ::= { xenMIB 2 } + +xenConformance OBJECT IDENTIFIER ::= { xenMIB 3 } + +-- +-- Textual Conventions: +-- + +XenDomainState ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type represents the state of a Xen domain. + + unknown(1): No known/defined state. + + running(2): The domain is running on any CPU. + + blocked(3): The domain is blocked, e.g., waiting for I/O. + + paused(4): The domain has been paused. + + crashed(5): The domain exepectedly crashed. + + dying(6): The domain is in the process of going + down or dying to any other reason. + + shutdown(7): The domain has been shutdown. + " + SYNTAX INTEGER { + unknown(1), + running(2), + blocked(3), + paused(4), + crashed(5), + dying(6), + shutdown(7) + } + +-- +-- Object definitions: +-- + +-- +-- Host scalars: +-- + +xenHost OBJECT IDENTIFIER ::= { xenObjects 1 } + +xenHostXenVersion OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version string of the Xen version running + on the physical host." + ::= { xenHost 1 } + +xenHostTotalMemKBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total amount of available memory in Kbytes + on the physical host." + ::= { xenHost 2 } + +xenHostCPUs OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of CPUs on the physical host." + ::= { xenHost 3 } + +xenHostCPUMHz OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The CPU frequency in MHz of the CPUs on the + physical host." + ::= { xenHost 4 } + +-- +-- Domain table: +-- + +xenDomainTable OBJECT-TYPE + SYNTAX SEQUENCE OF XenDomainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all Xen domains on the physical host." + ::= { xenObjects 2 } + +xenDomainEntry OBJECT-TYPE + SYNTAX XenDomainEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular Xen domain." + INDEX { xenDomainName } + ::= { xenDomainTable 1 } + +XenDomainEntry ::= + SEQUENCE { + xenDomainName SnmpAdminString, + xenDomainState XenDomainState, + xenDomainMemKBytes Unsigned32, + xenDomainMaxMemKBytes Unsigned32 + } + +xenDomainName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE(1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The name of the Xen domain." + ::= { xenDomainEntry 1 } + +xenDomainState OBJECT-TYPE + SYNTAX XenDomainState + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The state of the Xen domain." + ::= { xenDomainEntry 2 } + +xenDomainMemKBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The amount of memory in Kbytes currently occupied + by the Xen domain." + ::= { xenDomainEntry 3 } + +xenDomainMaxMemKBytes OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total amount of memory in Kbytes assigned + to the Xen domain. A value of zero denotes that + there is no limit." + ::= { xenDomainEntry 4 } + +-- +-- VCPU table: +-- + +xenVCPUTable OBJECT-TYPE + SYNTAX SEQUENCE OF XenVCPUEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all VCPUs per Xen domain." + ::= { xenObjects 3 } + +xenVCPUEntry OBJECT-TYPE + SYNTAX XenVCPUEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a VCPU of a Xen domain." + INDEX { xenDomainName, xenVCPUIndex } + ::= { xenVCPUTable 1 } + +XenVCPUEntry ::= + SEQUENCE { + xenVCPUIndex Unsigned32, + xenVCPUMilliseconds Counter32 + } + +xenVCPUIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the VCPU." + ::= { xenVCPUEntry 1 } + +xenVCPUMilliseconds OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number milliseconds consumed by the VCPU since + the Xen domain has been set up." + ::= { xenVCPUEntry 2 } + +-- +-- Network table: +-- + +xenNetworkTable OBJECT-TYPE + SYNTAX SEQUENCE OF XenNetworkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of all networks per Xen domain." + ::= { xenObjects 4 } + +xenNetworkEntry OBJECT-TYPE + SYNTAX XenNetworkEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a network of a Xen domain." + INDEX { xenDomainName, xenNetworkIndex } + ::= { xenNetworkTable 1 } + +XenNetworkEntry ::= + SEQUENCE { + xenNetworkIndex Unsigned32, + xenNetworkInKBytes Counter32, + xenNetworkInPkts Counter32, + xenNetworkInErrors Counter32, + xenNetworkInDiscards Counter32, + xenNetworkOutKBytes Counter32, + xenNetworkOutPkts Counter32, + xenNetworkOutErrors Counter32, + xenNetworkOutDiscards Counter32 + } + +xenNetworkIndex OBJECT-TYPE + SYNTAX Unsigned32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index of the network." + ::= { xenNetworkEntry 1 } + +xenNetworkInKBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Kbytes received on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 2 } + +xenNetworkInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets received on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 3 } + +xenNetworkInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of erroneous packets received on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 4 } + +xenNetworkInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of dropped packets received on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 5 } + +xenNetworkOutKBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of Kbytes sent on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 6 } + +xenNetworkOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets sent on the network + interface since the Xen domain has been set up." + ::= { xenNetworkEntry 7 } + +xenNetworkOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that could not be sent + on the network interface because of any errors + since the Xen domain has been set up." + ::= { xenNetworkEntry 8 } + +xenNetworkOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets that have not been sent + on the network interface even though no errors + had been detected since the Xen domain has been + set up." + ::= { xenNetworkEntry 9 } + +-- +-- Conformance statements: +-- + +xenCompliances OBJECT IDENTIFIER ::= { xenConformance 1 } + +xenGroups OBJECT IDENTIFIER ::= { xenConformance 2 } + +xenCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for an SNMP entity which + implements the Xen MIB." + MODULE -- this module + MANDATORY-GROUPS { xenGeneralGroup } + + ::= { xenCompliances 1 } + +xenGeneralGroup OBJECT-GROUP + OBJECTS { + xenHostXenVersion, xenHostTotalMemKBytes, xenHostCPUs, + xenHostCPUMHz, + + xenDomainState, xenDomainMemKBytes, xenDomainMaxMemKBytes, + + xenVCPUMilliseconds, + + xenNetworkInKBytes, xenNetworkInPkts, xenNetworkInErrors, + xenNetworkInDiscards, xenNetworkOutKBytes, xenNetworkOutPkts, + xenNetworkOutErrors, xenNetworkOutDiscards + } + STATUS current + DESCRIPTION + "A collection of all Xen MIB objects." + ::= { xenGroups 1 } + +END diff --git a/mibs/tubs/TUBS-SMI b/mibs/tubs/TUBS-SMI new file mode 100644 index 0000000..2f10653 --- /dev/null +++ b/mibs/tubs/TUBS-SMI @@ -0,0 +1,101 @@ +TUBS-SMI DEFINITIONS ::= BEGIN + +-- @(#) $Id: TUBS-SMI 3211 2006-02-20 09:30:29Z strauss $ + +IMPORTS + MODULE-IDENTITY, OBJECT-IDENTITY, enterprises + FROM SNMPv2-SMI; + +tubs MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION "TU Braunschweig" + CONTACT-INFO + "Juergen Schoenwaelder + TU Braunschweig + Muehlenpfordtstrasse 23, 1. OG + 38106 Braunschweig + Germany + + Tel: +49 531 391 3283 + Fax: +49 531 391 5936 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "The toplevel OID registration for the Technical University + of Braunschweig, Germany." + REVISION "200207011500Z" + DESCRIPTION + "Added ibrpibtomib for automatic PIB to MIB conversion via + 'smidump -f smiv2'." + REVISION "200205161500Z" + DESCRIPTION + "Added ibrpib for all PIBs that are temporarily assigned + to the ibr tree until they get official assignments + from IANA. Fixed CONTACT-INFO to contain the current address." + REVISION "200002090000Z" + DESCRIPTION + "Changed the module name from TUBS-REGISTRATION to TUBS-SMI." + REVISION "9702141023Z" + DESCRIPTION + "The initial revision." + ::= { enterprises 1575 } + +ibr OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The subtree delegated to the Department of Operating Systems + and Computer Networks (Institut fuer Betriebssysteme und + Rechnerverbund)." + ::= { tubs 1 } + +ibrpib OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Only for PIBs that are temporarily assigned to the ibr tree until + they get official assignments from IANA." + ::= { ibr 10 } + +ibrpibtomib OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Only for PIBs that are automatically converted to MIBs via + 'smidump -f smiv2'." + ::= { ibr 11 } + +ibrmibtopib OBJECT-IDENTITY + STATUS current + DESCRIPTION + "Only for MIBs that are automatically converted to PIBs via + 'smidump -f sppi'." + ::= { ibr 12 } + +IBRUnsigned64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A dummy type for automatic PIB to MIB conversion." + SYNTAX OCTET STRING (SIZE(8)) + +IBRInteger64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A dummy type for automatic PIB to MIB conversion." + SYNTAX OCTET STRING (SIZE(8)) + + +-- Allocations below TUBS-SMI::ibr: +-- +-- 1 TUBS-IBR-TNM-MIB::tnmMIB +-- 2 TUBS-IBR-NFS-MIB::nfsMIB +-- 3 TUBS-IBR-PROC-MIB::procMIB +-- 4 +-- 5 TUBS-IBR-LINUX-MIB::linuxMIB +-- 6 TUBS-IBR-AGENT-CAPABILITIES::ibrAgentCapabilities +-- 7 TUBS-IBR-TEST-MIB::testMIB +-- 8 +-- 9 LIBSMI-TEST-MIB::testMib +-- 10 TUBS-SMI::ibrpib +-- 11 TUBS-SMI::ibrpibtomib +-- 12 TUBS-SMI::ibrmibtopib +-- 13 TUBS-IBR-LINUX-NETFILTER-MIB::lnfMIB +-- 14 TUBS-IBR-XEN-MIB::xenMIB + +END diff --git a/missing b/missing new file mode 100755 index 0000000..1c8ff70 --- /dev/null +++ b/missing @@ -0,0 +1,367 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2006-05-10.23 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# 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, 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. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case $1 in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $1 in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/pibs/Makefile.am b/pibs/Makefile.am new file mode 100644 index 0000000..0f9dc7b --- /dev/null +++ b/pibs/Makefile.am @@ -0,0 +1,23 @@ +# +# Makefile.am -- +# +# Template to generate the pibs Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1508 2002-12-22 16:14:01Z strauss $ +# + +PIBDIRS = ietf tubs site + +PIBS = $(shell ls -1d [a-z]*/* | egrep -v 'CVS|Makefile') +pib_DATA = $(PIBS) +SUBDIRS = $(PIBDIRS) + +install-exec-local: + for dir in $(PIBDIRS) ; do \ + $(mkinstalldirs) $(DESTDIR)$(pibdir)/$$dir ; \ + done diff --git a/pibs/Makefile.in b/pibs/Makefile.in new file mode 100644 index 0000000..9e3a1fc --- /dev/null +++ b/pibs/Makefile.in @@ -0,0 +1,552 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the pibs Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1508 2002-12-22 16:14:01Z strauss $ +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pibs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pibdir)" +pibDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pib_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +PIBDIRS = ietf tubs site +PIBS = $(shell ls -1d [a-z]*/* | egrep -v 'CVS|Makefile') +pib_DATA = $(PIBS) +SUBDIRS = $(PIBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pibs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pibs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pibDATA: $(pib_DATA) + @$(NORMAL_INSTALL) + test -z "$(pibdir)" || $(MKDIR_P) "$(DESTDIR)$(pibdir)" + @list='$(pib_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pibdir)/$$f'"; \ + $(pibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pibdir)/$$f"; \ + done + +uninstall-pibDATA: + @$(NORMAL_UNINSTALL) + @list='$(pib_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pibdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pibdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pibdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-pibDATA + +install-dvi: install-dvi-recursive + +install-exec-am: install-exec-local + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-pibDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-exec-local install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pibDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-pibDATA + + +install-exec-local: + for dir in $(PIBDIRS) ; do \ + $(mkinstalldirs) $(DESTDIR)$(pibdir)/$$dir ; \ + done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/pibs/ietf/COPS-PR-SPPI b/pibs/ietf/COPS-PR-SPPI new file mode 100644 index 0000000..5b3a519 --- /dev/null +++ b/pibs/ietf/COPS-PR-SPPI @@ -0,0 +1,509 @@ +COPS-PR-SPPI DEFINITIONS ::= BEGIN + +IMPORTS ObjectName, SimpleSyntax, ExtUTCTime, mgmt + FROM SNMPv2-SMI; + +-- the root for PIB definitions + + pib OBJECT IDENTIFIER ::= { mgmt 2 } + +-- definitions for PIB modules + +MODULE-IDENTITY MACRO ::= +BEGIN + TYPE NOTATION ::= + SubjectPart -- new + "LAST-UPDATED" value(Update ExtUTCTime) + "ORGANIZATION" Text + "CONTACT-INFO" Text + "DESCRIPTION" Text + RevisionPart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + SubjectPart ::= -- new + "SUBJECT-CATEGORIES" "{" Categories "}" + -- see IANA Considerations section + Categories ::= -- new + CategoryIDs + | "all" + CategoryIDs ::= -- new + CategoryID + | CategoryIDs "," CategoryID + CategoryID ::= -- new + identifier "(" number ")" -- number is positive + + RevisionPart ::= + Revisions + | empty + Revisions ::= + Revision + | Revisions Revision + Revision ::= + "REVISION" value(Update ExtUTCTime) + "DESCRIPTION" Text + + + + + -- a character string as defined in [SMI] + Text ::= value(IA5String) +END + +-- + +OBJECT-IDENTITY MACRO ::= +BEGIN + TYPE NOTATION ::= + "STATUS" Status + "DESCRIPTION" Text + ReferPart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + -- a character string as defined in [SMI] + Text ::= value(IA5String) +END + + +-- syntax of attributes + +-- the "base types" defined here are: +-- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER +-- 7 application-defined types: Integer32, IpAddress, Unsigned32, +-- TimeTicks, Opaque, Integer64 and Unsigned64 + +ObjectSyntax ::= + CHOICE { + simple + SimpleSyntax, + + -- note that SEQUENCEs for table and row definitions + -- are not mentioned here... + + application-wide + ApplicationSyntax + } + + + +-- application-wide types + +ApplicationSyntax ::= + CHOICE { + ipAddress-value + IpAddress, + + timeticks-value + TimeTicks, + + arbitrary-value + Opaque, + + unsigned-integer-value + Unsigned32, + + large-integer-value -- new + Integer64, + + large-unsigned-integer-value -- new + Unsigned64 + } + + +-- the following 5 types are copied from the SMI + +-- indistinguishable from INTEGER, but never needs more than +-- 32-bits for a two's complement representation +Integer32 ::= + INTEGER (-2147483648..2147483647) + +-- (this is a tagged type for historical reasons) +IpAddress ::= + [APPLICATION 0] + IMPLICIT OCTET STRING (SIZE (4)) +-- ******* THIS TYPE DEFINITION IS DEPRECATED ******* +-- The IpAddress type represents a 32-bit internet +-- IPv4 address. It is represented as an OctetString +-- of length 4, in network byte-order. +-- Note that the IpAddress type is present for +-- historical reasons. IPv4 and IPv6 addresses should +-- be represented using the INET-ADDRESS-MIB +-- defined in [INETADDR]. + +-- an unsigned 32-bit quantity +Unsigned32 ::= + [APPLICATION 2] + IMPLICIT INTEGER (0..4294967295) + + + +-- hundredths of seconds since an epoch +TimeTicks ::= + [APPLICATION 3] + IMPLICIT INTEGER (0..4294967295) + +--for backward compatibility only +Opaque ::= + [APPLICATION 4] + IMPLICIT OCTET STRING + + +-- the following 2 types are not present in the SMI + +Integer64 ::= + [APPLICATION 10] + IMPLICIT INTEGER (-9223372036854775808..9223372036854775807) + +Unsigned64 ::= + [APPLICATION 11] + IMPLICIT INTEGER (0..18446744073709551615) + +-- definition for Provisioning Classes and their attributes +-- (differences from the SMI are noted in the ASN.1 comments) + +OBJECT-TYPE MACRO ::= +BEGIN + TYPE NOTATION ::= + "SYNTAX" Syntax + UnitsPart + "PIB-ACCESS" Access -- modified + PibReferencesPart -- new + PibTagPart -- new + "STATUS" Status + "DESCRIPTION" Text + ErrorsPart -- new + ReferPart + IndexPart -- modified + MibIndexPart -- modified + UniquePart -- new + DefValPart + + VALUE NOTATION ::= + value(VALUE ObjectName) + + Syntax ::= -- Must be one of the following: + -- a base type (or its refinement), + -- a textual convention (or its refinement), or + -- a BITS pseudo-type + + + + type + | "BITS" "{" NamedBits "}" + + NamedBits ::= NamedBit + | NamedBits "," NamedBit + + NamedBit ::= identifier "(" number ")" -- number is nonnegative + + UnitsPart ::= + "UNITS" Text + | empty + + Access ::= -- modified + "install" + | "notify" + | "install-notify" + | "report-only" + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ErrorsPart ::= -- new + "INSTALL-ERRORS" "{" Errors "}" + | empty + + Errors ::= -- new + Error + | Errors "," Error + Error ::= -- new + identifier "(" number ")" -- number is positive + + ReferPart ::= + "REFERENCE" Text + | empty + + IndexPart ::= + "PIB-INDEX" "{" Index "}" -- new + | "AUGMENTS" "{" Entry "}" + | "EXTENDS" "{" Entry "}" -- new + | empty + Index ::= + -- the correspondent OBJECT-TYPE invocation + value(ObjectName) + Entry ::= + -- use the INDEX value of the + -- correspondent OBJECT-TYPE invocation + + + + value(ObjectName) + MibIndexPart ::= + "INDEX" "{" IndexTypePart "}" + | empty + IndexTypePart ::= + IndexTypes + | IndexTypes "," ImpliedIndex + | ImpliedIndex + IndexTypes ::= + Index + | IndexTypes "," Index + ImpliedIndex ::= + "IMPLIED" Index + + + PibReferencesPart ::= + -- for use with ReferenceId TC + "PIB-REFERENCES" "{" Entry "}" + | empty + + PibTagPart ::= + -- for use with TagReferenceId TC + "PIB-TAG" "{" Attr "}" + | empty + + Attr ::= -- specifies an attribute + value(ObjectName) + + UniquePart ::= -- new + "UNIQUENESS" "{" UniqueTypes "}" + | "UNIQUENESS" "{" "}" + | empty + UniqueTypes ::= + UniqueType + | UniqueTypes "," UniqueType + UniqueType ::= + -- the correspondent OBJECT-TYPE invocation + value(ObjectName) + + DefValPart ::= "DEFVAL" "{" Defvalue "}" + | empty + + Defvalue ::= -- must be valid for the type specified in + -- SYNTAX clause of same OBJECT-TYPE macro + value(ObjectSyntax) + | "{" BitsValue "}" + + BitsValue ::= BitNames + + + + | empty + + BitNames ::= BitName + | BitNames "," BitName + + BitName ::= identifier + + -- a character string as defined in [SMI] + Text ::= value(IA5String) +END + + +-- definitions for conformance groups + +OBJECT-GROUP MACRO ::= +BEGIN + TYPE NOTATION ::= + ObjectsPart + "STATUS" Status + "DESCRIPTION" Text + ReferPart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + ObjectsPart ::= + "OBJECTS" "{" Objects "}" + Objects ::= + Object + | Objects "," Object + Object ::= + value(ObjectName) + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + -- a character string as defined in [SMI] + Text ::= value(IA5String) +END + + +-- definitions for compliance statements + + + +MODULE-COMPLIANCE MACRO ::= +BEGIN + TYPE NOTATION ::= + "STATUS" Status + "DESCRIPTION" Text + ReferPart + ModulePart + + VALUE NOTATION ::= + value(VALUE OBJECT IDENTIFIER) + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + ModulePart ::= + Modules + Modules ::= + Module + | Modules Module + Module ::= + -- name of module -- + "MODULE" ModuleName + MandatoryPart + CompliancePart + + ModuleName ::= + -- identifier must start with uppercase letter + identifier ModuleIdentifier + -- must not be empty unless contained + -- in MIB Module + | empty + ModuleIdentifier ::= + value(OBJECT IDENTIFIER) + | empty + + MandatoryPart ::= + "MANDATORY-GROUPS" "{" Groups "}" + | empty + + Groups ::= + Group + | Groups "," Group + + + + Group ::= + value(OBJECT IDENTIFIER) + + CompliancePart ::= + Compliances + | empty + + Compliances ::= + Compliance + | Compliances Compliance + Compliance ::= + ComplianceGroup + | Object + + ComplianceGroup ::= + "GROUP" value(OBJECT IDENTIFIER) + "DESCRIPTION" Text + + Object ::= + "OBJECT" value(ObjectName) + InstallSyntaxPart -- modified + AccessPart + "DESCRIPTION" Text + + -- must be a refinement for object's SYNTAX clause + InstallSyntaxPart ::= "SYNTAX" Syntax + | empty + + Syntax ::= -- Must be one of the following: + -- a base type (or its refinement), + -- a textual convention (or its refinement), or + -- a BITS pseudo-type + type + | "BITS" "{" NamedBits "}" + + NamedBits ::= NamedBit + | NamedBits "," NamedBit + + NamedBit ::= identifier "(" number ")" -- number is nonnegative + + AccessPart ::= + "PIB-MIN-ACCESS" Access -- modified + | empty + Access ::= -- modified + "not-accessible" + | "install" + | "notify" + | "install-notify" + + + + | "report-only" + + -- a character string as defined in [SMI] + Text ::= value(IA5String) +END + +-- definition of textual conventions + +TEXTUAL-CONVENTION MACRO ::= +BEGIN + TYPE NOTATION ::= + DisplayPart + "STATUS" Status + "DESCRIPTION" Text + ReferPart + "SYNTAX" Syntax + + VALUE NOTATION ::= + value(VALUE Syntax) -- adapted ASN.1 + + DisplayPart ::= + "DISPLAY-HINT" Text + | empty + + Status ::= + "current" + | "deprecated" + | "obsolete" + + ReferPart ::= + "REFERENCE" Text + | empty + + -- a character string as defined in [SMI] + Text ::= value(IA5String) + + Syntax ::= -- Must be one of the following: + -- a base type (or its refinement), or + -- a BITS pseudo-type + type + | "BITS" "{" NamedBits "}" + + NamedBits ::= NamedBit + | NamedBits "," NamedBit + + NamedBit ::= identifier "(" number ")" -- number is nonnegative + +END + + + +END diff --git a/pibs/ietf/COPS-PR-SPPI-TC b/pibs/ietf/COPS-PR-SPPI-TC new file mode 100644 index 0000000..6147fe1 --- /dev/null +++ b/pibs/ietf/COPS-PR-SPPI-TC @@ -0,0 +1,95 @@ +COPS-PR-SPPI-TC PIB-DEFINITIONS ::= BEGIN + +IMPORTS Unsigned32, MODULE-IDENTITY, TEXTUAL-CONVENTION, pib + FROM COPS-PR-SPPI; + +copsPrSppiTc MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200108160000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO "Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + Ravi Sahita + Intel + 2111 NE 25th Avenue + Hillsboro, OR 97124 USA + Phone: +1 503 712 1554 + Email: ravi.sahita@intel.com " + DESCRIPTION + "The PIB module containing a set of Textual Conventions + which have general applicability to all PIB modules." + REVISION "200108160000Z" + DESCRIPTION + "Initial version, published in RFC 3159." + ::= { pib 1 } + +InstanceId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The textual convention for use by an attribute which is used + as the instance-identifying index of a PRC, i.e., an attribute + named in a PIB-INDEX clause. The value of an attribute with + this syntax is always greater than zero. PRIs of the same PRC + need not have contiguous values for their instance-identifying + attribute." + SYNTAX Unsigned32 (1..4294967295) + +ReferenceId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A textual convention for use by an attribute which is used as + a pointer in order to reference an instance of a particular + + + PRC. An attribute with this syntax must not be used in a + PIB-INDEX clause , and its description must specify the + particular PRC to which the referenced PRI will belong. + For an attribute of this type, the referenced PRI must exist. + Furthermore, it is an error to try to delete a PRI that is + referenced by another instance without first deleting/modifying + the referencing instance. The definition of an attribute with + this syntax can permit the attribute to have a value of zero to + indicate that it is not currently pointing to a PRI." + SYNTAX Unsigned32 + +Prid ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a pointer to a PRI, i.e,. to an instance of a + PRC. The value is the OID name of the PRC's row definition, + appended with one sub-identifier containing the value of the + InstanceId value for the referenced instance. The definition + of an attribute with this syntax can permit the attribute to + have a value of 0.0 to indicate that it is not currently + pointing to a PRI." + SYNTAX OBJECT IDENTIFIER + +TagId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a tag value, such that all instances of a + particular PRC having the same tag value form a tag list. + A tag list is identified by the tag value shared by all + instances in that tag list." + SYNTAX Unsigned32 (1..4294967295) + +TagReferenceId ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Represents a reference to a tag list of instances of a + particular PRC. The particular PRC must have an attribute + with the syntax of TagId. The tag list consists of + all instances which have the same value of the TagId + attribute. Reference to the tag list is via the attribute + with the syntax of TagReferenceId containing the tag + value which identifies the tag list. + The definition of an attribute with this syntax can permit + the attribute to have a value of 0 to indicate that it is + not currently referencing a tag list." + SYNTAX Unsigned32 +END diff --git a/pibs/ietf/DIFFSERV-PIB b/pibs/ietf/DIFFSERV-PIB new file mode 100644 index 0000000..e9e0b2c --- /dev/null +++ b/pibs/ietf/DIFFSERV-PIB @@ -0,0 +1,3128 @@ +DIFFSERV-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, MODULE-IDENTITY, MODULE-COMPLIANCE, + OBJECT-TYPE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + InstanceId, Prid, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + zeroDotZero + FROM SNMPv2-SMI + AutonomousType + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + RoleCombination, PrcIdentifierOid, PrcIdentifierOidOrZero, + AttrIdentifier + FROM FRAMEWORK-TC-PIB + Dscp + FROM DIFFSERV-DSCP-TC + IfDirection + FROM DIFFSERV-MIB + BurstSize + FROM INTEGRATED-SERVICES-MIB; + + +dsPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { diffServ (2) } -- DiffServ QoS COPS Client Type + LAST-UPDATED "200302180000Z" -- 18 Feb 2003 + ORGANIZATION "IETF DIFFSERV WG" + CONTACT-INFO " + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com + + Kwok Ho Chan + Nortel Networks, Inc. + + + + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + Differentiated Services Working Group: + diffserv@ietf.org" + DESCRIPTION + "The PIB module containing a set of provisioning classes + that describe quality of service (QoS) policies for + DiffServ. It includes general classes that may be extended + by other PIB specifications as well as a set of PIB + classes related to IP processing. + + Copyright (C) The Internet Society (2003). This version of + this PIB module is part of RFC 3317; see the RFC itself for + full legal notices." + + REVISION "200302180000Z" -- 18 Feb 2003 + DESCRIPTION + "Initial version, published as RFC 3317." + ::= { pib 4 } + +dsCapabilityClasses OBJECT IDENTIFIER ::= { dsPolicyPib 1 } +dsPolicyClasses OBJECT IDENTIFIER ::= { dsPolicyPib 2 } +dsPolicyPibConformance OBJECT IDENTIFIER ::= { dsPolicyPib 3 } + +-- +-- Interface Type Capabilities Group +-- + +-- +-- Interface Type Capability Tables +-- +-- The Interface type capability tables define capabilities that may +-- be associated with interfaces of a specific type. +-- This PIB defines capability tables for DiffServ Functionalities. +-- + +-- +-- The Base Capability Table +-- + +dsBaseIfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsBaseIfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + + + + "The Base Interface Type Capability class. This class + represents a generic capability supported by a device in the + ingress, egress, or both directions." + ::= { dsCapabilityClasses 1 } + +dsBaseIfCapsEntry OBJECT-TYPE + SYNTAX DsBaseIfCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the dsBaseIfCaps class." + + PIB-INDEX { dsBaseIfCapsPrid } +::= { dsBaseIfCapsTable 1 } + +DsBaseIfCapsEntry ::= SEQUENCE { + dsBaseIfCapsPrid InstanceId, + dsBaseIfCapsDirection INTEGER +} + +dsBaseIfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsBaseIfCapsEntry 1 } + + +dsBaseIfCapsDirection OBJECT-TYPE + SYNTAX INTEGER { + inbound(1), + outbound(2), + inAndOut(3) + } + STATUS current + DESCRIPTION + "This object specifies the direction(s) for which the + capability applies. A value of 'inbound(1)' means the + capability applies only to the ingress direction. A value of + 'outbound(2)' means the capability applies only to the egress + direction. A value of 'inAndOut(3)' means the capability + applies to both directions." + ::= { dsBaseIfCapsEntry 2 } + +-- +-- The Classification Capability Table +-- + + + + +dsIfClassificationCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfClassificationCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the classification capabilities of + a Capability Set." + ::= { dsCapabilityClasses 2 } + + +dsIfClassificationCapsEntry OBJECT-TYPE + SYNTAX DsIfClassificationCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the classification + capabilities of a Capability Set." + + + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfClassificationCapsSpec } + ::= { dsIfClassificationCapsTable 1 } + +DsIfClassificationCapsEntry ::= SEQUENCE { + dsIfClassificationCapsSpec BITS +} + +dsIfClassificationCapsSpec OBJECT-TYPE + SYNTAX BITS { + ipSrcAddrClassification(0), + -- indicates the ability to classify based on + -- IP source addresses + ipDstAddrClassification(1), + -- indicates the ability to classify based on + -- IP destination addresses + ipProtoClassification(2), + -- indicates the ability to classify based on + -- IP protocol numbers + ipDscpClassification(3), + -- indicates the ability to classify based on + -- IP DSCP + ipL4Classification(4), + -- indicates the ability to classify based on + -- IP layer 4 port numbers for UDP and TCP + ipV6FlowID(5) + -- indicates the ability to classify based on + -- IPv6 FlowIDs. + } + + + + STATUS current + DESCRIPTION + "Bit set of supported classification capabilities. In + addition to these capabilities, other PIBs may define other + capabilities that can then be specified in addition to the + ones specified here (or instead of the ones specified here if + none of these are specified)." + ::= { dsIfClassificationCapsEntry 1 } + +-- +-- Metering Capabilities +-- + +dsIfMeteringCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfMeteringCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the metering capabilities of a + Capability Set." + ::= { dsCapabilityClasses 3 } + +dsIfMeteringCapsEntry OBJECT-TYPE + SYNTAX DsIfMeteringCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the metering + capabilities of a Capability Set." + + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfMeteringCapsSpec } + ::= { dsIfMeteringCapsTable 1 } + +DsIfMeteringCapsEntry ::= SEQUENCE { + dsIfMeteringCapsSpec BITS +} + +dsIfMeteringCapsSpec OBJECT-TYPE + SYNTAX BITS { + zeroNotUsed(0), + simpleTokenBucket(1), + avgRate(2), + srTCMBlind(3), + srTCMAware(4), + trTCMBlind(5), + trTCMAware(6), + tswTCM(7) + + + + } + STATUS current + DESCRIPTION + "Bit set of supported metering capabilities. As with + classification capabilities, these metering capabilities may + be augmented by capabilities specified in other PRCs (in other + PIBs)." + ::= { dsIfMeteringCapsEntry 1 } + +-- +-- Algorithmic Dropper Capabilities +-- + +dsIfAlgDropCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfAlgDropCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the algorithmic dropper + capabilities of a Capability Set. + + This capability table indicates the types of algorithmic + drop supported by a Capability Set for a specific flow + direction. + Additional capabilities affecting the drop functionalities + are determined based on queue capabilities associated with + specific instance of a dropper, hence not specified by + this class." + ::= { dsCapabilityClasses 4 } + +dsIfAlgDropCapsEntry OBJECT-TYPE + SYNTAX DsIfAlgDropCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the algorithmic dropper + capabilities of a Capability Set." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfAlgDropCapsType, + dsIfAlgDropCapsMQCount } + ::= { dsIfAlgDropCapsTable 1 } + +DsIfAlgDropCapsEntry ::= SEQUENCE { + dsIfAlgDropCapsType BITS, + dsIfAlgDropCapsMQCount Unsigned32 +} + +dsIfAlgDropCapsType OBJECT-TYPE + + + + SYNTAX BITS { + zeroNotUsed(0), + oneNotUsed(1), + tailDrop(2), + headDrop(3), + randomDrop(4), + alwaysDrop(5), + mQDrop(6) } + STATUS current + DESCRIPTION + "The type of algorithm that droppers associated with queues + may use. + + The tailDrop(2) algorithm means that packets are dropped from + the tail of the queue when the associated queue's MaxQueueSize + is exceeded. The headDrop(3) algorithm means that packets are + dropped from the head of the queue when the associated queue's + MaxQueueSize is exceeded. The randomDrop(4) algorithm means + that an algorithm is executed which may randomly + drop the packet, or drop other packet(s) from the queue + in its place. The specifics of the algorithm may be + proprietary. However, parameters would be specified in the + dsRandomDropTable. The alwaysDrop(5) will drop every packet + presented to it. The mQDrop(6) algorithm will drop packets + based on measurement from multiple queues." + ::= { dsIfAlgDropCapsEntry 1 } + +dsIfAlgDropCapsMQCount OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "Indicates the number of queues measured for the drop + algorithm. + This attribute is ignored when alwaysDrop(5) algorithm is + used. This attribute contains the value of 1 for all drop + algorithm types except for mQDrop(6), where this attribute + is used to indicate the maximum number of dsMQAlgDropEntry + that can be chained together." + ::= { dsIfAlgDropCapsEntry 2 } + +-- +-- Queue Capabilities +-- + +dsIfQueueCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfQueueCapsEntry + PIB-ACCESS notify + STATUS current + + + + DESCRIPTION + "This class specifies the queueing capabilities of a + Capability Set." + ::= { dsCapabilityClasses 5 } + +dsIfQueueCapsEntry OBJECT-TYPE + SYNTAX DsIfQueueCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the queue + capabilities of a Capability Set." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfQueueCapsMinQueueSize, + dsIfQueueCapsMaxQueueSize, + dsIfQueueCapsTotalQueueSize } + ::= { dsIfQueueCapsTable 1 } + +DsIfQueueCapsEntry ::= SEQUENCE { + dsIfQueueCapsMinQueueSize Unsigned32, + dsIfQueueCapsMaxQueueSize Unsigned32, + dsIfQueueCapsTotalQueueSize Unsigned32 +} + +dsIfQueueCapsMinQueueSize OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "Bytes" + STATUS current + DESCRIPTION + "Some interfaces may allow the size of a queue to be + configured. This attribute specifies the minimum size that + can be configured for a queue, specified in bytes. + dsIfQueueCapsMinQueueSize must be less than or equals to + dsIfQueueCapsMaxQueueSize when both are specified. + A zero value indicates not specified." + ::= { dsIfQueueCapsEntry 1 } + +dsIfQueueCapsMaxQueueSize OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "Bytes" + STATUS current + DESCRIPTION + "Some interfaces may allow the size of a queue to be + configured. This attribute specifies the maximum size that + can be configured for a queue, specified in bytes. + dsIfQueueCapsMinQueueSize must be less than or equals to + dsIfQueueCapsMaxQueueSize when both are specified. + A zero value indicates not specified." + + + + ::= { dsIfQueueCapsEntry 2 } + +dsIfQueueCapsTotalQueueSize OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + UNITS "Bytes" + STATUS current + DESCRIPTION + "Some interfaces may have a limited buffer space to be + shared amongst all queues of that interface while also + allowing the size of each queue to be configurable. To + prevent the situation where the PDP configures the sizes of + the queues in excess of the total buffer available to the + interface, the PEP can report the total buffer space in + bytes available with this capability. + A zero value indicates not specified." + ::= { dsIfQueueCapsEntry 3 } + +-- +-- Scheduler Capabilities +-- + +dsIfSchedulerCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfSchedulerCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the scheduler capabilities of a + Capability Set." + ::= { dsCapabilityClasses 6 } + +dsIfSchedulerCapsEntry OBJECT-TYPE + SYNTAX DsIfSchedulerCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the scheduler + capabilities of a Capability Set." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfSchedulerCapsServiceDisc, + dsIfSchedulerCapsMaxInputs } + ::= { dsIfSchedulerCapsTable 1 } + +DsIfSchedulerCapsEntry ::= SEQUENCE { + dsIfSchedulerCapsServiceDisc AutonomousType, + dsIfSchedulerCapsMaxInputs Unsigned32, + dsIfSchedulerCapsMinMaxRate INTEGER +} + + + + +dsIfSchedulerCapsServiceDisc OBJECT-TYPE + SYNTAX AutonomousType + STATUS current + DESCRIPTION + "The scheduling discipline for which the set of capabilities + specified in this object apply. Object identifiers for several + general purpose and well-known scheduling disciplines are + shared with and defined in the DiffServ MIB. + + These include diffServSchedulerPriority, + diffServSchedulerWRR, diffServSchedulerWFQ." + ::= { dsIfSchedulerCapsEntry 1 } + +dsIfSchedulerCapsMaxInputs OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "The maximum number of queues and/or schedulers that can + feed into a scheduler indicated by this capability entry. + A value of zero means there is no maximum." + ::= { dsIfSchedulerCapsEntry 2 } + +dsIfSchedulerCapsMinMaxRate OBJECT-TYPE + SYNTAX INTEGER { + minRate(1), + maxRate(2), + minAndMaxRates(3) + } + STATUS current + DESCRIPTION + "Scheduler capability indicating ability to handle inputs + with minimum rate, maximum rate, or both." + ::= { dsIfSchedulerCapsEntry 3 } + +-- +-- Maximum Rate Capabilities +-- + +dsIfMaxRateCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfMaxRateCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the maximum rate capabilities of a + Capability Set." + ::= { dsCapabilityClasses 7 } + +dsIfMaxRateCapsEntry OBJECT-TYPE + + + + SYNTAX DsIfMaxRateCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the maximum rate + capabilities of a Capability Set." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfMaxRateCapsMaxLevels } + ::= { dsIfMaxRateCapsTable 1 } + +DsIfMaxRateCapsEntry ::= SEQUENCE { + dsIfMaxRateCapsMaxLevels Unsigned32 +} + +dsIfMaxRateCapsMaxLevels OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "The maximum number of levels a maximum rate specification + may have for this Capability Set and flow direction." + ::= { dsIfMaxRateCapsEntry 1 } + +-- +-- DataPath Element Linkage Capabilities +-- + +-- +-- DataPath Element Cascade Depth +-- + +dsIfElmDepthCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfElmDepthCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies the number of elements of the same + type that can be cascaded together in a datapath." + ::= { dsCapabilityClasses 8 } + +dsIfElmDepthCapsEntry OBJECT-TYPE + SYNTAX DsIfElmDepthCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the cascade depth + for a particular functional datapath element PRC. A + functional datapath element not represented in this + class can be assumed to have no specific maximum + depth." + + + + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfElmDepthCapsPrc } + ::= { dsIfElmDepthCapsTable 1 } + +DsIfElmDepthCapsEntry ::= SEQUENCE { + dsIfElmDepthCapsPrc PrcIdentifierOid, + dsIfElmDepthCapsCascadeMax Unsigned32 +} + +dsIfElmDepthCapsPrc OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The object identifier of a PRC that represents a functional + datapath element. This may be one of: dsClfrElementEntry, + dsMeterEntry, dsActionEntry, dsAlgDropEntry, dsQEntry, or + dsSchedulerEntry. + There may not be more than one instance of this class with + the same value of dsIfElmDepthCapsPrc and same value of + dsBaseIfCapsDirection. Must not contain the value of + zeroDotZero." + ::= { dsIfElmDepthCapsEntry 1 } + +dsIfElmDepthCapsCascadeMax OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "The maximum number of elements of type dsIfElmDepthCapsPrc + that can be linked consecutively in a data path. A value of + zero indicates there is no specific maximum." + ::= { dsIfElmDepthCapsEntry 2 } + +-- +-- DataPath Element Linkage Types +-- + +dsIfElmLinkCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsIfElmLinkCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class specifies what types of datapath functional + elements may be used as the next downstream element for + a specific type of functional element." + ::= { dsCapabilityClasses 9 } + +dsIfElmLinkCapsEntry OBJECT-TYPE + + + + SYNTAX DsIfElmLinkCapsEntry + STATUS current + DESCRIPTION + "An instance of this class specifies a PRC that may + be used as the next functional element after a specific + type of element in a data path." + EXTENDS { dsBaseIfCapsEntry } + UNIQUENESS { dsBaseIfCapsDirection, + dsIfElmLinkCapsPrc, + dsIfElmLinkCapsAttr, + dsIfElmLinkCapsNextPrc } + ::= { dsIfElmLinkCapsTable 1 } + +DsIfElmLinkCapsEntry ::= SEQUENCE { + dsIfElmLinkCapsPrc PrcIdentifierOid, + dsIfElmLinkCapsAttr AttrIdentifier, + dsIfElmLinkCapsNextPrc PrcIdentifierOidOrZero +} + +dsIfElmLinkCapsPrc OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + " The object identifier of a PRC that represents a functional + datapath element. This may be one of: dsClfrElementEntry, + dsMeterEntry, dsActionEntry, dsAlgDropEntry, dsQEntry, or + dsSchedulerEntry. + This must not have the value zeroDotZero." + ::= { dsIfElmLinkCapsEntry 1 } + +dsIfElmLinkCapsAttr OBJECT-TYPE + SYNTAX AttrIdentifier + STATUS current + DESCRIPTION + "The value represents the attribute in the PRC + indicated by dsIfElmLinkCapsPrc that is used to + specify the next functional element in the datapath." + ::= { dsIfElmLinkCapsEntry 2 } + +dsIfElmLinkCapsNextPrc OBJECT-TYPE + SYNTAX PrcIdentifierOidOrZero + STATUS current + DESCRIPTION + "The value is the OID of a PRC table entry from which + instances can be referenced by the attribute indicated + by dsIfElmLinkCapsPrc and dsIfElmLinkAttr. + + For example, suppose a meter's success output can be an + + + + action or another meter, and the fail output can only be + an action. This can be expressed as follows: + + Prid Prc Attr NextPrc + 1 dsMeterEntry dsMeterSucceedNext dsActionEntry + 2 dsMeterEntry dsMeterSucceedNext dsMeterEntry + 3 dsMeterEntry dsMeterFailNext dsActionEntry. + + zeroDotZero is a valid value for this attribute to + specify that the PRC specified in dsIfElmLinkCapsPrc + is the last functional data path element." + ::= { dsIfElmLinkCapsEntry 3 } + +-- +-- Policy Classes +-- + +-- +-- Data Path Table +-- + +dsDataPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsDataPathEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The data path table indicates the start of + functional data paths in this device. + + The Data Path Table enumerates the Differentiated + Services Functional Data Paths within this device. + Each entry specifies the first functional datapath + element to process data flow for each specific datapath. + Each datapath is defined by the interface set's capability + set name, role combination, and direction. This class can + therefore have up to two entries for each interface set, + ingress and egress." + ::= { dsPolicyClasses 1 } + +dsDataPathEntry OBJECT-TYPE + SYNTAX DsDataPathEntry + STATUS current + DESCRIPTION + "Each entry in this class indicates the start of a single + functional data path, defined by its capability set name, + role combination and traffic direction. The first + functional datapath element to handle traffic for each + data path is defined by the dsDataPathStart attribute + + + + of each table entry. + Notice for each entry: + 1. dsDataPathCapSetName must reference an existing capability + set name in frwkCapabilitySetTable [FR-PIB]. + 2. dsDataPathRoles must reference existing Role Combination + in frwkIfRoleComboTable [FR-PIB]. + 3. dsDataPathStart must reference an existing entry in a + functional data path element table. + If any one or more of these three requirements is not + satisfied, the dsDataPathEntry will not be installed." + PIB-INDEX { dsDataPathPrid } + UNIQUENESS { dsDataPathCapSetName, + dsDataPathRoles, + dsDataPathIfDirection } + ::= { dsDataPathTable 1 } + +DsDataPathEntry ::= SEQUENCE { + dsDataPathPrid InstanceId, + dsDataPathCapSetName SnmpAdminString, + dsDataPathRoles RoleCombination, + dsDataPathIfDirection IfDirection, + dsDataPathStart Prid +} + +dsDataPathPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsDataPathEntry 1 } + +dsDataPathCapSetName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The capability set associated with this data path entry. + The capability set name specified by this attribute + must exist in the frwkCapabilitySetTable [FR-PIB] + prior to association with an instance of this class." + ::= { dsDataPathEntry 2 } + +dsDataPathRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this data path entry applies, + specified in terms of roles. There must exist an entry + + + + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the capability + set specified by dsDataPathCapSetName, prior to + association with an instance of this class." + ::= { dsDataPathEntry 3 } + +dsDataPathIfDirection OBJECT-TYPE + SYNTAX IfDirection + STATUS current + DESCRIPTION + "Specifies the direction for which this data path + entry applies." + ::= { dsDataPathEntry 4 } + +dsDataPathStart OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the first functional datapath element + to handle traffic for this data path. This + Prid should point to an instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry + + The PRI pointed to must exist prior to the installation of + this datapath start element." + ::= { dsDataPathEntry 5 } + +-- +-- Classifiers +-- +-- Classifier allows multiple classifier elements, of same or +-- different types, to be used together. +-- A classifier must completely classify all packets presented to +-- it. This means all traffic handled by a classifier must match +-- at least one classifier element within the classifier, +-- with the classifier element parameters specified by a filter. +-- It is the PDP's responsibility to create a _catch all_ classifier +-- element and filter that matches all packet. This _catch all_ +-- classifier element should have the lowest Precedence value. +-- +-- If there is ambiguity between classifier elements of different +-- classifier, classifier linkage order indicates their precedence; +-- the first classifier in the link is applied to the traffic first. +-- + + + +-- Each entry in the classifier table represents a classifier, with +-- classifier element table handling the fan-out functionality of a +-- classifier, and filter table defining the classification +-- patterns. +-- + +-- +-- Classifier Table +-- + +dsClfrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsClfrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table enumerates all the DiffServ classifier functional + data path elements of this device. The actual classification + definitions are detailed in dsClfrElementTable entries + belonging to each classifier. Each classifier is referenced + by its classifier elements using its classifier ID. + + An entry in this table, referenced by an upstream functional + data path element or a datapath table entry, is the entry + point to the classifier functional data path element. + + The dsClfrId of each entry is used to organize all + classifier elements belonging to the same classifier." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 4.1" + ::= { dsPolicyClasses 2 } + +dsClfrEntry OBJECT-TYPE + SYNTAX DsClfrEntry + STATUS current + DESCRIPTION + "An entry in the classifier table describes a single + classifier. Each classifier element belonging to this + classifier must have its dsClfrElementClfrId attribute equal + to dsClfrId." + PIB-INDEX { dsClfrPrid } + UNIQUENESS { dsClfrId } + ::= { dsClfrTable 1 } + +DsClfrEntry ::= SEQUENCE { + dsClfrPrid InstanceId, + dsClfrId TagReferenceId +} + + + + +dsClfrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsClfrEntry 1 } + +dsClfrId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { dsClfrElementClfrId } + STATUS current + DESCRIPTION + "Identifies a Classifier. A Classifier must be + complete, this means all traffic handled by a + Classifier must match at least one Classifier + Element within the Classifier." + ::= { dsClfrEntry 2 } + +-- +-- Classifier Element Table +-- + +dsClfrElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsClfrElementEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Entries in the classifier element table serves as + the anchor for each classification pattern, defined + in filter table entries. Each classifier element + table entry also specifies the subsequent downstream + diffserv functional datapath element when the + classification pattern is satisfied. Hence + the classifier element table enumerates the relationship + between classification patterns and subsequent downstream + diffserv functional data path elements, describing one + branch of the fan-out characteristic of a classifier + indicated in [Model]. + + Classification parameters are defined by entries of filter + tables pointed to by dsClfrElementSpecific. There can be + filter tables of different types, and they can be inter-mixed + and used within a classifier. An example of a filter table is + the frwkIpFilterTable [FR-PIB], for IP Multi-Field + Classifiers (MFCs). + + + + + If there is ambiguity between classifier elements of the same + classifier, then dsClfrElementPrecedence needs to be used." + ::= { dsPolicyClasses 3 } + +dsClfrElementEntry OBJECT-TYPE + SYNTAX DsClfrElementEntry + STATUS current + DESCRIPTION + "An entry in the classifier element table describes a + single element of the classifier." + PIB-INDEX { dsClfrElementPrid } + UNIQUENESS { dsClfrElementClfrId, + dsClfrElementPrecedence, + dsClfrElementSpecific } + ::= { dsClfrElementTable 1 } + +DsClfrElementEntry ::= SEQUENCE { + dsClfrElementPrid InstanceId, + dsClfrElementClfrId TagId, + dsClfrElementPrecedence Unsigned32, + dsClfrElementNext Prid, + dsClfrElementSpecific Prid +} + +dsClfrElementPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsClfrElementEntry 1 } + +dsClfrElementClfrId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "A classifier is composed of one or more classifier + elements. Each classifier element belonging to + the same classifier uses the same classifier ID. + + Hence, A classifier Id identifies which classifier + this classifier element is a part of. This must be + the value of dsClfrId attribute for an existing + instance of dsClfrEntry." + ::= { dsClfrElementEntry 2 } + +dsClfrElementPrecedence OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + + + + STATUS current + DESCRIPTION + "The relative order in which classifier elements are + applied: higher numbers represent classifier elements + with higher precedence. Classifier elements with the + same precedence must be unambiguous i.e., they must + define non-overlapping patterns, and are considered to + be applied simultaneously to the traffic stream. + Classifier elements with different precedence may + overlap in their filters: the classifier element with + the highest precedence that matches is taken. + + On a given interface, there must be a complete + classifier in place at all times in the ingress + direction. This means that there will always be one + or more filters that match every possible pattern + that could be presented in an incoming packet. + There is no such requirement in the egress direction." + ::= { dsClfrElementEntry 3 } + +dsClfrElementNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute provides one branch of the fan-out + functionality of a classifier described in Diffserv + Model section 4.1. + + This selects the next diffserv functional datapath + element to handle traffic for this data path. + + A value of zeroDotZero marks the end of DiffServ processing + for this data path. Any other value must point to a + valid (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry." + DEFVAL { zeroDotZero } + ::= { dsClfrElementEntry 4 } + +dsClfrElementSpecific OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid entry in another table that + describes the applicable classification filter, e.g., + + + + an entry in frwkIpFilterTable (Framework PIB). + + The PRI pointed to must exist prior to the installation of + this classifier element. + + The value zeroDotZero is interpreted to match any- + thing not matched by another classifier element - only one + such entry may exist for each classifier." + ::= { dsClfrElementEntry 5 } + +-- +-- Meters +-- +-- This PIB supports a variety of Meters. It includes a +-- specific definition for Meters whose parameter set can +-- be modeled using Token Bucket parameters. +-- Other metering parameter sets can be defined by other PIBs. +-- +-- Multiple meter elements may be logically cascaded +-- using their dsMeterSucceedNext and dsMeterFailNext pointers if +-- required. +-- One example of this might be for an AF PHB implementation +-- that uses multiple level conformance meters. +-- +-- Cascading of individual meter elements in the PIB is intended +-- to be functionally equivalent to multiple level conformance +-- determination of a packet. The sequential nature of the +-- representation is merely a notational convenience for this PIB. +-- +-- srTCM meters (RFC 2697) can be specified using two sets of +-- dsMeterEntry and dsTBParamEntry. First set specifies the +-- Committed Information Rate and Committed Burst Size +-- token-bucket. Second set specifies the Excess Burst +-- Size token-bucket. +-- +-- trTCM meters (RFC 2698) can be specified using two sets of +-- dsMeterEntry and dsTBParamEntry. First set specifies the +-- Committed Information Rate and Committed Burst Size +-- token-bucket. Second set specifies the Peak Information +-- Rate and Peak Burst Size token-bucket. +-- +-- tswTCM meters (RFC 2859) can be specified using two sets of +-- dsMeterEntry and dsTBParamEntry. First set specifies the +-- Committed Target Rate token-bucket. Second set specifies the +-- Peak Target Rate token-bucket. dsTBParamInterval in each +-- token bucket reflects the Average Interval. + +dsMeterTable OBJECT-TYPE + + + + SYNTAX SEQUENCE OF DsMeterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class enumerates specific meters that a system + may use to police a stream of traffic. The traffic + stream to be metered is determined by the element(s) + upstream of the meter i.e., by the object(s) that + point to each entry in this class. This may include + all traffic on an interface. + + Specific meter details are to be found in table entry + referenced by dsMeterSpecific." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 5" + ::= { dsPolicyClasses 4 } + +dsMeterEntry OBJECT-TYPE + SYNTAX DsMeterEntry + STATUS current + DESCRIPTION + "An entry in the meter table describes a single + conformance level of a meter." + PIB-INDEX { dsMeterPrid } + UNIQUENESS { dsMeterSucceedNext, + dsMeterFailNext, + dsMeterSpecific } + ::= { dsMeterTable 1 } + +DsMeterEntry ::= SEQUENCE { + dsMeterPrid InstanceId, + dsMeterSucceedNext Prid, + dsMeterFailNext Prid, + dsMeterSpecific Prid +} + +dsMeterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsMeterEntry 1 } + +dsMeterSucceedNext OBJECT-TYPE + SYNTAX Prid + STATUS current + + + + DESCRIPTION + "If the traffic does conform, this selects the next + diffserv functional datapath element to handle + traffic for this data path. + + The value zeroDotZero in this variable indicates no + further DiffServ treatment is performed on traffic of + this datapath. Any other value must point to a valid + (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry." + DEFVAL { zeroDotZero } + ::= { dsMeterEntry 2 } + +dsMeterFailNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "If the traffic does not conform, this selects the + next diffserv functional datapath element to handle + traffic for this data path. + + The value zeroDotZero in this variable indicates no + further DiffServ treatment is performed on traffic of + this datapath. Any other value must point to a valid + (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry." + DEFVAL { zeroDotZero } + ::= { dsMeterEntry 3 } + +dsMeterSpecific OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This indicates the behaviour of the meter by point- + ing to an entry containing detailed parameters. Note + that entries in that specific table must be managed + explicitly. + + For example, dsMeterSpecific may point to an + entry in dsTBMeterTable, which contains an + + + + instance of a single set of Token Bucket parameters. + + The PRI pointed to must exist prior to installing this + Meter datapath element." + ::= { dsMeterEntry 4 } + +-- +-- Token-Bucket Parameter Table +-- +-- Each entry in the Token Bucket Parameter Table parameterizes +-- a single token bucket. Multiple token buckets can be +-- used together to parameterize multiple levels of +-- conformance. +-- +-- Note that an entry in the Token Bucket Parameter Table can +-- be shared, pointed to, by multiple dsMeterTable entries. +-- + +dsTBParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsTBParamEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table enumerates token-bucket meter parameter sets + that a system may use to police a stream of traffic. + Such parameter sets are modelled here as each having a single + rate and a single burst size. Multiple entries are used + when multiple rates/burst sizes are needed." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 5.1" + ::= { dsPolicyClasses 5 } + +dsTBParamEntry OBJECT-TYPE + SYNTAX DsTBParamEntry + STATUS current + DESCRIPTION + "An entry that describes a single token-bucket + parameter set." + PIB-INDEX { dsTBParamPrid } + UNIQUENESS { dsTBParamType, + dsTBParamRate, + dsTBParamBurstSize, + dsTBParamInterval } + ::= { dsTBParamTable 1 } + +DsTBParamEntry ::= SEQUENCE { + dsTBParamPrid InstanceId, + + + + dsTBParamType AutonomousType, + dsTBParamRate Unsigned32, + dsTBParamBurstSize BurstSize, + dsTBParamInterval Unsigned32 +} + +dsTBParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsTBParamEntry 1 } + +dsTBParamType OBJECT-TYPE + SYNTAX AutonomousType + STATUS current + DESCRIPTION + "The Metering algorithm associated with the + Token-Bucket parameters. zeroDotZero indicates this + is unknown. + + Standard values for generic algorithms are as follows: + + diffServTBParamSimpleTokenBucket, diffServTBParamAvgRate, + diffServTBParamSrTCMBlind, diffServTBParamSrTCMAware, + diffServTBParamTrTCMBlind, diffServTBParamTrTCMAware, + diffServTBParamTswTCM + + These are specified in the DiffServ MIB." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 5.1" + ::= { dsTBParamEntry 2 } + +dsTBParamRate OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "The token-bucket rate, in kilobits per second + (kbps). This attribute is used for: + 1. CIR in RFC 2697 for srTCM + 2. CIR and PIR in RFC 2698 for trTCM + 3. CTR and PTR in RFC 2859 for TSWTCM + 4. AverageRate in RFC 3290, section 5.1.1" + ::= { dsTBParamEntry 3 } + + + + +dsTBParamBurstSize OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + STATUS current + DESCRIPTION + "The maximum number of bytes in a single transmission + burst. This attribute is used for: + 1. CBS and EBS in RFC 2697 for srTCM + 2. CBS and PBS in RFC 2698 for trTCM + 3. Burst Size in RFC 3290, section 5." + ::= { dsTBParamEntry 4 } + +dsTBParamInterval OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "microseconds" + STATUS current + DESCRIPTION + "The time interval used with the token bucket. For: + 1. Average Rate Meter, RFC 3290, section 5.1.1, + -Delta. + 2. Simple Token Bucket Meter, RFC 3290, section + 5.1.3, - time interval t. + 3. RFC 2859 TSWTCM, - AVG_INTERVAL. + 4. RFC 2697 srTCM, RFC 2698 trTCM, - token + bucket update time interval." + ::= { dsTBParamEntry 5 } + +-- +-- Actions +-- + +-- +-- The Action Table allows enumeration of the different +-- types of actions to be applied to a traffic flow. +-- + +dsActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Action Table enumerates actions that can be per- + formed to a stream of traffic. Multiple actions can + be concatenated. + + Specific actions are indicated by dsAction- + Specific which points to an entry of a specific + action type parameterizing the action in detail." + + + + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 6." + ::= { dsPolicyClasses 6 } + +dsActionEntry OBJECT-TYPE + SYNTAX DsActionEntry + STATUS current + DESCRIPTION + "Each entry in the action table allows description of + one specific action to be applied to traffic." + PIB-INDEX { dsActionPrid } + UNIQUENESS { dsActionNext, + dsActionSpecific } + ::= { dsActionTable 1 } + +DsActionEntry ::= SEQUENCE { + dsActionPrid InstanceId, + dsActionNext Prid, + dsActionSpecific Prid +} + +dsActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsActionEntry 1 } + +dsActionNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the next diffserv functional datapath + element to handle traffic for this data path. + + The value zeroDotZero in this variable indicates no + further DiffServ treatment is performed on traffic of + this datapath. Any other value must point to a valid + (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry." + DEFVAL { zeroDotZero } + ::= { dsActionEntry 2 } + + + + +dsActionSpecific OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to an object instance providing additional + information for the type of action indicated by this + action table entry. + + For the standard actions defined by this PIB module, + this should point to an instance of dsDscpMarkActEntry. + For other actions, it may point to an instance of a + PRC defined in some other PIB. + + The PRI pointed to must exist prior to installing this + action datapath entry." + ::= { dsActionEntry 3 } + +-- DSCP Mark Action Table +-- +-- Rows of this class are pointed to by dsActionSpecific +-- to provide detailed parameters specific to the DSCP +-- Mark action. +-- This class should at most contain one entry for each supported +-- DSCP value. These entries should be reused by different +-- dsActionEntry in same or different data paths. +-- + +dsDscpMarkActTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsDscpMarkActEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class enumerates specific DSCPs used for marking or + remarking the DSCP field of IP packets. The entries of this + table may be referenced by a dsActionSpecific attribute." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 6.1" + ::= { dsPolicyClasses 7 } + +dsDscpMarkActEntry OBJECT-TYPE + SYNTAX DsDscpMarkActEntry + STATUS current + DESCRIPTION + "An entry in the DSCP mark action table that describes a + single DSCP used for marking." + PIB-INDEX { dsDscpMarkActPrid } + + + + UNIQUENESS { dsDscpMarkActDscp } + ::= { dsDscpMarkActTable 1 } + +DsDscpMarkActEntry ::= SEQUENCE { + dsDscpMarkActPrid InstanceId, + dsDscpMarkActDscp Dscp +} + +dsDscpMarkActPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsDscpMarkActEntry 1 } + +dsDscpMarkActDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP that this Action uses for marking/remarking + traffic. Note that a DSCP value of -1 is not permit- + ted in this class. It is quite possible that the + only packets subject to this Action are already + marked with this DSCP. Note also that DiffServ may + result in packet remarking both on ingress to a net- + work and on egress from it and it is quite possible + that ingress and egress would occur in the same + router." + ::= { dsDscpMarkActEntry 2 } + +-- +-- Algorithmic Drop Table +-- + +-- Algorithmic Drop Table is the entry point for the Algorithmic +-- Dropper functional data path element. + +-- For a simple algorithmic dropper, a single algorithmic drop entry +-- will be sufficient to parameterize the dropper. + +-- For more complex algorithmic dropper, the dsAlgDropSpecific +-- attribute can be used to reference an entry in a parameter table, +-- e.g., dsRandomDropTable for random dropper. + +-- For yet more complex dropper, for example, dropper that measures +-- multiple queues, each queue with its own algorithm, can use a +-- dsAlgDropTable entry as the entry point for Algorithmic Dropper + + + +-- functional data path element, leaving the dropper parameters +-- for each queue be specified by entries of dsMQAlgDropTable. +-- In such usage, the anchoring dsAlgDropEntry's dsAlgDropType +-- should be mQDrop, and its dsAlgDropQMeasure should reference +-- the subsequent dsMQAlgDropEntry's, its dsAlgDropSpecific +-- should be used to reference parameters applicable to all the +-- queues being measured. +-- The subsequent dsMQAlgDropEntry's will provide the parameters, +-- one for each queue being measured. The dsMQAlgDropEntry's are +-- chained using their dsMQAlgDropNext attributes. +-- + +dsAlgDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsAlgDropEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The algorithmic drop table contains entries describ- + ing a functional data path element that drops + packets according to some algorithm." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 7.1.3" + ::= { dsPolicyClasses 8 } + +dsAlgDropEntry OBJECT-TYPE + SYNTAX DsAlgDropEntry + STATUS current + DESCRIPTION + "An entry describes a process that drops packets + according to some algorithm. Further details of the + algorithm type are to be found in dsAlgDropType + and with more detail parameter entry pointed to by + dsAlgDropSpecific when necessary." + PIB-INDEX { dsAlgDropPrid } + UNIQUENESS { dsAlgDropType, + dsAlgDropNext, + dsAlgDropQMeasure, + dsAlgDropQThreshold, + dsAlgDropSpecific } + ::= { dsAlgDropTable 1 } + +DsAlgDropEntry ::= SEQUENCE { + dsAlgDropPrid InstanceId, + dsAlgDropType INTEGER, + dsAlgDropNext Prid, + dsAlgDropQMeasure Prid, + dsAlgDropQThreshold Unsigned32, + + + + dsAlgDropSpecific Prid +} + +dsAlgDropPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsAlgDropEntry 1 } + +dsAlgDropType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + tailDrop(2), + headDrop(3), + randomDrop(4), + alwaysDrop(5), + mQDrop(6) + } + STATUS current + DESCRIPTION + "The type of algorithm used by this dropper. A value + of tailDrop(2), headDrop(3), or alwaysDrop(5) represents + an algorithm that is completely specified by this PIB. + + A value of other(1) indicates that the specifics of + the drop algorithm are specified in some other PIB + module, and that the dsAlgDropSpecific attribute + points to an instance of a PRC in that PIB that + specifies the information necessary to implement the + algorithm. + + The tailDrop(2) algorithm is described as follows: + dsAlgDropQThreshold represents the depth of the + queue, pointed to by dsAlgDropQMeasure, at + which all newly arriving packets will be dropped. + + The headDrop(3) algorithm is described as follows: if + a packet arrives when the current depth of the queue, + pointed to by dsAlgDropQMeasure, is at + dsAlgDropQThreshold, packets currently at the head of + the queue are dropped to make room for the new packet + to be enqueued at the tail of the queue. + + The randomDrop(4) algorithm is described as follows: + on packet arrival, an algorithm is executed which may + randomly drop the packet, or drop other packet(s) + + + + from the queue in its place. The specifics of the + algorithm may be proprietary. For this algorithm, + dsAlgDropSpecific points to a dsRandomDropEntry + that describes the algorithm. For this + algorithm, dsAlgQThreshold is understood to be + the absolute maximum size of the queue and additional + parameters are described in dsRandomDropTable. + + The alwaysDrop(5) algorithm always drops packets. In + this case, the other configuration values in this Entry + are not meaningful; The queue is not used, therefore, + dsAlgDropNext, dsAlgDropQMeasure, and + dsAlgDropSpecific should be all set to zeroDotZero. + + The mQDrop(6) algorithm measures multiple queues for + the drop algorithm. The queues measured are represented + by having dsAlgDropQMeasure referencing a dsMQAlgDropEntry. + Each of the chained dsMQAlgDropEntry is used to describe + the drop algorithm for one of the measured queues." + + ::= { dsAlgDropEntry 2 } + +dsAlgDropNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the next diffserv functional datapath + element to handle traffic for this data path. + + The value zeroDotZero in this attribute indicates no + further DiffServ treatment is performed on traffic of + this datapath. Any other value must point to a valid + (pre-existing) instance of one of: + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + dsQEntry. + + When dsAlgDropType is alwaysDrop(5), this attribute is + Ignored." + DEFVAL { zeroDotZero } + ::= { dsAlgDropEntry 3 } + +dsAlgDropQMeasure OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + + + + "Points to a PRI to indicate the queues that a drop algorithm + is to monitor when deciding whether to drop a packet. + + For alwaysDrop(5), this attribute should be zeroDotZero. + For tailDrop(2), headDrop(3), randomDrop(4), this should + point to an entry in the dsQTable. + For mQDrop(6), this should point to a dsMQAlgDropEntry that + Describe one of the queues being measured for multiple + queue dropper. + + The PRI pointed to must exist prior to installing + this dropper element." + ::= { dsAlgDropEntry 4 } + +dsAlgDropQThreshold OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "Bytes" + STATUS current + DESCRIPTION + "A threshold on the depth in bytes of the queue being + measured at which a trigger is generated to the drop- + ping algorithm, unless dsAlgDropType is alwaysDrop(5) + where this attribute is ignored. + + For the tailDrop(2) or headDrop(3) algorithms, this + represents the depth of the queue, pointed to by + dsAlgDropQMeasure, at which the drop action + will take place. Other algorithms will need to define + their own semantics for this threshold." + ::= { dsAlgDropEntry 5 } + +dsAlgDropSpecific OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Points to a table entry that provides further detail + regarding a drop algorithm. The PRI pointed to + must exist prior to installing this dropper element. + + Entries with dsAlgDropType equal to other(1) must + have this point to an instance of a PRC defined + in another PIB module. + + Entries with dsAlgDropType equal to random- + Drop(4) must have this point to an entry in + dsRandomDropTable. + + Entries with dsAlgDropType equal to mQDrop(6) can use this + + + + attribute to reference parameters that is used by all the + queues of the multiple queues being measured. + + For all other algorithms, this should take the value + zeroDotZero." + ::= { dsAlgDropEntry 6 } + +-- +-- Multiple Queue Algorithmic Drop Table +-- +-- Entries of this table should be referenced by dsAlgDropQMeasure +-- when dsAlgDropType is mQDrop(6) for droppers measuring multiple +-- queues for its drop algorithm. +-- Each entry of the table is used to describe the drop algorithm +-- for a single queue within the multiple queues being measured. +-- +-- Entries of this table, dsMQAlgDropEntry, is extended from +-- dsAlgDropEntry, with usage of corresponding parameters the same +-- except: +-- dsAlgDropNext is used to point to the next diffserv +-- functional data path element when the packet is not dropped. +-- dsMQAlgDropExceedNext is used to point to the next +-- dsMQAlgDropEntry for chaining together the multiple +-- dsMQAlgDropEntry's for the multiple queues being measured. +-- + +dsMQAlgDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsMQAlgDropEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The multiple queue algorithmic drop table contains entries + describing each queue being measured for the multiple queue + algorithmic dropper." + ::= { dsPolicyClasses 9 } + +dsMQAlgDropEntry OBJECT-TYPE + SYNTAX DsMQAlgDropEntry + STATUS current + DESCRIPTION + "An entry describes a process that drops packets + according to some algorithm. Each entry is used for + each of the multiple queues being measured. Each entry + extends the basic dsAlgDropEntry with adding of a + dsMQAlgDropExceedNext attribute. + + Further details of the algorithm type are to be found in + dsAlgDropType and with more detail parameter entry pointed + + + + to by dsMQAlgDropSpecific when necessary." + EXTENDS { dsAlgDropEntry } + UNIQUENESS { dsMQAlgDropExceedNext } + ::= { dsMQAlgDropTable 1 } + +DsMQAlgDropEntry ::= SEQUENCE { + dsMQAlgDropExceedNext Prid +} + +dsMQAlgDropExceedNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Used for linking of multiple dsMQAlgDropEntry for mQDrop. + A value of zeroDotZero indicates this is the last of a + chain of dsMQAlgDropEntry." + DEFVAL { zeroDotZero } + ::= { dsMQAlgDropEntry 1 } + +-- +-- Random Drop Table +-- + +dsRandomDropTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsRandomDropEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The random drop table contains entries describing a + process that drops packets randomly. Entries in this + table is intended to be pointed to by dsAlgDropSpecific + when dsAlgDropType is randomDrop(4)." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 7.1.3" + ::= { dsPolicyClasses 10 } + +dsRandomDropEntry OBJECT-TYPE + SYNTAX DsRandomDropEntry + STATUS current + DESCRIPTION + "An entry describes a process that drops packets + according to a random algorithm." + PIB-INDEX { dsRandomDropPrid } + UNIQUENESS { dsRandomDropMinThreshBytes, + dsRandomDropMinThreshPkts, + dsRandomDropMaxThreshBytes, + dsRandomDropMaxThreshPkts, + + + + dsRandomDropProbMax, + dsRandomDropWeight, + dsRandomDropSamplingRate + } + ::= { dsRandomDropTable 1 } + +DsRandomDropEntry ::= SEQUENCE { + dsRandomDropPrid InstanceId, + dsRandomDropMinThreshBytes Unsigned32, + dsRandomDropMinThreshPkts Unsigned32, + dsRandomDropMaxThreshBytes Unsigned32, + dsRandomDropMaxThreshPkts Unsigned32, + dsRandomDropProbMax Unsigned32, + dsRandomDropWeight Unsigned32, + dsRandomDropSamplingRate Unsigned32 +} + +dsRandomDropPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsRandomDropEntry 1 } + +dsRandomDropMinThreshBytes OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "bytes" + STATUS current + DESCRIPTION + "The average queue depth in bytes, beyond which traffic has a + non-zero probability of being dropped." + ::= { dsRandomDropEntry 2 } + +dsRandomDropMinThreshPkts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "packets" + STATUS current + DESCRIPTION + "The average queue depth in packets, beyond which traffic has + a non-zero probability of being dropped." + ::= { dsRandomDropEntry 3 } + +dsRandomDropMaxThreshBytes OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "bytes" + STATUS current + DESCRIPTION + + + + "The average queue depth beyond which traffic has a + probability indicated by dsRandomDropProbMax of being dropped + or marked. Note that this differs from the physical queue + limit, which is stored in dsAlgDropQThreshold." + ::= { dsRandomDropEntry 4 } + +dsRandomDropMaxThreshPkts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "packets" + STATUS current + DESCRIPTION + "The average queue depth beyond which traffic has a + probability indicated by dsRandomDropProbMax of being dropped + or marked. Note that this differs from the physical queue + limit, which is stored in dsAlgDropQThreshold." + ::= { dsRandomDropEntry 5 } + +dsRandomDropProbMax OBJECT-TYPE + SYNTAX Unsigned32 (0..1000) + STATUS current + DESCRIPTION + "The worst case random drop probability, expressed in drops + per thousand packets. + + For example, if every packet may be dropped in the worst case + (100%), this has the value 1000. Alternatively, if in the + worst case one percent (1%) of traffic may be dropped, it has + the value 10." + ::= { dsRandomDropEntry 6 } + +dsRandomDropWeight OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "The weighting of past history in affecting the Exponentially + Weighted Moving Average function which calculates the current + average queue depth. The equation uses + dsRandomDropWeight/MaxValue as the coefficient for the new + sample in the equation, and + (MaxValue - dsRandomDropWeight)/MaxValue as the coefficient + of the old value, where, MaxValue is determined via capability + reported by the PEP. + + Implementations may further limit the values of + dsRandomDropWeight via the capability tables." + ::= { dsRandomDropEntry 7 } + +dsRandomDropSamplingRate OBJECT-TYPE + + + + SYNTAX Unsigned32 (0..1000000) + STATUS current + DESCRIPTION + "The number of times per second the queue is sampled for queue + average calculation. A value of zero means the queue is + sampled approximately each time a packet is enqueued (or + dequeued)." + ::= { dsRandomDropEntry 8 } + +-- +-- Queue Table +-- + +-- +-- An entry of dsQTable represents a FIFO queue diffserv +-- functional data path element as described in [MODEL] section +-- 7.1.1. +-- Notice the specification of scheduling parameters for a queue +-- as part of the input to a scheduler functional data path +-- element as described in [MODEL] section 7.1.2. This allows +-- building of hierarchical queuing/scheduling. +-- A queue therefore is parameterized by: +-- 1. Which scheduler will service this queue, dsQNext. +-- 2. How the scheduler will service this queue, with respect +-- to all the other queues the same scheduler needs to service, +-- dsQMinRate and dsQMaxRate. +-- +-- Notice one or more upstream diffserv functional data path element +-- may share, point to, a dsQTable entry as described in [MODEL] +-- section 7.1.1. +-- + +dsQTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsQEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Queue Table enumerates the queues." + ::= { dsPolicyClasses 11 } + +dsQEntry OBJECT-TYPE + SYNTAX DsQEntry + STATUS current + DESCRIPTION + "An entry in the Queue Table describes a single queue + as a functional data path element." + PIB-INDEX { dsQPrid } + UNIQUENESS { dsQNext, + + + + dsQMinRate, + dsQMaxRate } + ::= { dsQTable 1 } + +DsQEntry ::= SEQUENCE { + dsQPrid InstanceId, + dsQNext Prid, + dsQMinRate Prid, + dsQMaxRate Prid +} + +dsQPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsQEntry 1 } + +dsQNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the next diffserv scheduler. This must point + to a dsSchedulerEntry. + + A value of zeroDotZero in this attribute indicates an + incomplete dsQEntry instance. In such a case, the entry + has no operational effect, since it has no parameters to + give it meaning." + ::= { dsQEntry 2 } + +dsQMinRate OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This Prid indicates the entry in dsMinRateTable + the scheduler, pointed to by dsQNext, should use to service + this queue. + If this value is zeroDotZero + then minimum rate and priority is unspecified. + If this value is not zeroDotZero then the instance pointed to + must exist prior to installing this entry." + ::= { dsQEntry 3 } + +dsQMaxRate OBJECT-TYPE + SYNTAX Prid + STATUS current + + + + DESCRIPTION + "This Prid indicates the entry in dsMaxRateTable + the scheduler, pointed to by dsQNext, should use to service + this queue. + If this value is zeroDotZero, then the maximum rate is the + line speed of the interface. + If this value is not zeroDotZero, then the instance pointed + to must exist prior to installing this entry." + ::= { dsQEntry 4 } + +-- +-- Scheduler Table +-- +-- +-- The Scheduler Table is used for representing packet schedulers: +-- it provides flexibility for multiple scheduling algorithms, each +-- servicing multiple queues, to be used on the same +-- logical/physical interface of a data path. +-- +-- Notice the servicing parameters the scheduler uses is +-- specified by each of its upstream functional data path elements, +-- queues or schedulers of this PIB. +-- The coordination and coherency between the servicing parameters +-- of the scheduler's upstream functional data path elements must +-- be maintained for the scheduler to function correctly. +-- +-- The dsSchedulerMinRate and dsSchedulerMaxRate attributes are +-- used for specifying the servicing parameters for output of a +-- scheduler when its downstream functional data path element +-- is another scheduler. +-- This is used for building hierarchical queue/scheduler. +-- +-- More discussion of the scheduler functional data path element +-- is in [MODEL] section 7.1.2. +-- + +dsSchedulerTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsSchedulerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Scheduler Table enumerates packet schedulers. + Multiple scheduling algorithms can be used on a given + datapath, with each algorithm described by one + dsSchedulerEntry." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 7.1.2" + + + + ::= { dsPolicyClasses 12 } + +dsSchedulerEntry OBJECT-TYPE + SYNTAX DsSchedulerEntry + STATUS current + DESCRIPTION + "An entry in the Scheduler Table describing a single + instance of a scheduling algorithm." + PIB-INDEX { dsSchedulerPrid } + UNIQUENESS { dsSchedulerNext, + dsSchedulerMethod, + dsSchedulerMinRate, + dsSchedulerMaxRate } + ::= { dsSchedulerTable 1 } + +DsSchedulerEntry ::= SEQUENCE { + dsSchedulerPrid InstanceId, + dsSchedulerNext Prid, + dsSchedulerMethod AutonomousType, + dsSchedulerMinRate Prid, + dsSchedulerMaxRate Prid +} + +dsSchedulerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsSchedulerEntry 1 } + +dsSchedulerNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This selects the next diffserv functional datapath + element to handle traffic for this data path. + + This attribute normally have a value of zeroDotZero to + indicate no further DiffServ treatment is performed on + traffic of this datapath. The use of zeroDotZero is the + normal usage for the last functional datapath element. + Any value other than zeroDotZero must point to a valid + (pre-existing) instance of one of: + dsSchedulerEntry + dsQEntry, + + or: + + + + dsClfrEntry + dsMeterEntry + dsActionEntry + dsAlgDropEntry + + This points to another dsSchedulerEntry + for implementation of multiple scheduler methods for + the same data path, and for implementation of + hierarchical schedulers." + DEFVAL { zeroDotZero } + ::= { dsSchedulerEntry 2 } + +dsSchedulerMethod OBJECT-TYPE + SYNTAX AutonomousType + STATUS current + DESCRIPTION + "The scheduling algorithm used by this Scheduler. + Standard values for generic algorithms: + diffServSchedulerPriority, + diffServSchedulerWRR, + diffServSchedulerWFQ + are specified in the DiffServ MIB. + Additional values may be further specified in other PIBs. + A value of zeroDotZero indicates this is unknown." + REFERENCE + "An Informal Management Model for Diffserv Routers, + RFC 3290, section 7.1.2" + ::= { dsSchedulerEntry 3 } + +dsSchedulerMinRate OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This Prid indicates the entry in dsMinRateTable + which indicates the priority or minimum output rate from this + scheduler. This attribute is used only when there is more + than one level of scheduler. + + When it has the value zeroDotZero, it indicates that no + Minimum rate or priority is imposed." + DEFVAL { zeroDotZero } + ::= { dsSchedulerEntry 4 } + +dsSchedulerMaxRate OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This Prid indicates the entry in dsMaxRateTable + + + + which indicates the maximum output rate from this scheduler. + When more than one maximum rate applies (e.g., a multi-rate + shaper is used), it points to the first of the rate entries. + This attribute is only used when there is more than one level + of scheduler. + + When it has the value zeroDotZero, it indicates that no + Maximum rate is imposed." + DEFVAL { zeroDotZero } + ::= { dsSchedulerEntry 5 } + +-- +-- Minimum Rate Parameters Table +-- +-- The parameters used by a scheduler for its inputs or outputs are +-- maintained separately from the Queue or Scheduler table entries +-- for reusability reasons and so that they may be used by both +-- queues and schedulers. This follows the approach for separation +-- of data path elements from parameterization that is used +-- throughout this PIB. +-- Use of these Minimum Rate Parameter Table entries by Queues and +-- Schedulers allows the modeling of hierarchical scheduling +-- systems. +-- +-- Specifically, a Scheduler has one or more inputs and one output. +-- Any queue feeding a scheduler, or any scheduler which feeds a +-- second scheduler, might specify a minimum transfer rate by +-- pointing to a Minimum Rate Parameter Table entry. +-- +-- The dsMinRatePriority/Absolute/Relative attributes are used as +-- parameters to the work-conserving portion of a scheduler: +-- "work-conserving" implies that the scheduler can continue to emit +-- data as long as there is data available at its input(s). This +-- has the effect of guaranteeing a certain priority relative to +-- other scheduler inputs and/or a certain minimum proportion of the +-- available output bandwidth. Properly configured, this means a +-- certain minimum rate, which may be exceeded should traffic be +-- available should there be spare bandwidth after all other classes +-- have had opportunities to consume their own minimum rates. +-- + +dsMinRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsMinRateEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Minimum Rate Table enumerates individual + sets of scheduling parameter that can be used/reused + + + + by Queues and Schedulers." + ::= { dsPolicyClasses 13 } + +dsMinRateEntry OBJECT-TYPE + SYNTAX DsMinRateEntry + STATUS current + DESCRIPTION + "An entry in the Minimum Rate Table describes + a single set of scheduling parameter for use by + queues and schedulers." + PIB-INDEX { dsMinRatePrid } + UNIQUENESS { dsMinRatePriority, + dsMinRateAbsolute, + dsMinRateRelative } + ::= { dsMinRateTable 1 } + +DsMinRateEntry ::= SEQUENCE { + dsMinRatePrid InstanceId, + dsMinRatePriority Unsigned32, + dsMinRateAbsolute Unsigned32, + dsMinRateRelative Unsigned32 +} + +dsMinRatePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsMinRateEntry 1 } + +dsMinRatePriority OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "The priority of this input to the associated scheduler, + relative to the scheduler's other inputs. Higher Priority + value indicates the associated queue/scheduler will get + service first before others with lower Priority values." + ::= { dsMinRateEntry 2 } + +dsMinRateAbsolute OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "The minimum absolute rate, in kilobits/sec, that a downstream + scheduler element should allocate to this queue. If the value + + + + is zero, then there is effectively no minimum rate guarantee. + If the value is non-zero, the scheduler will assure the + servicing of this queue to at least this rate. + + Note that this attribute's value is coupled to that + of dsMinRateRelative: changes to one will affect the value + of the other. + + [IFMIB] defines ifSpeed as Gauge32 in units of bits per + second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits + per second. + This yields the following equations: + + RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000 + + Where, 1000 is for converting kbps used by RateAbsolute to bps + used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for + RateRelative. + + or, if appropriate: + + RateRelative = + { [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * + 1,000 + + Where, 1000 and 1,000,000 is for converting kbps used by + RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is + for 'in units of 1/1,000 of 1' for RateRelative." + REFERENCE + "ifSpeed, ifHighSpeed from the IF-MIB, RFC 2863." + ::= { dsMinRateEntry 3 } + +dsMinRateRelative OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "The minimum rate that a downstream scheduler element + should allocate to this queue, relative to the max- + imum rate of the interface as reported by ifSpeed or + ifHighSpeed, in units of 1/1,000 of 1. If the value + is zero, then there is effectively no minimum rate + guarantee. If the value is non-zero, the scheduler + will assure the servicing of this queue to at least + this rate. + + Note that this attribute's value is coupled to that + of dsMinRateAbsolute: changes to one will + affect the value of the other. + + + + + [IFMIB] defines ifSpeed as Gauge32 in units of bits per + second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits + per second. + This yields the following equations: + + RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000 + + Where, 1000 is for converting kbps used by RateAbsolute to bps + used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for + RateRelative. + + or, if appropriate: + + RateRelative = + { [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * + 1,000 + + Where, 1000 and 1,000,000 is for converting kbps used by + RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is + for 'in units of 1/1,000 of 1' for RateRelative." + REFERENCE + "ifSpeed, ifHighSpeed from the IF-MIB, RFC 2863." + ::= { dsMinRateEntry 4 } + +-- +-- Maximum Rate Parameters Table +-- +-- The parameters used by a scheduler for its inputs or outputs are +-- maintained separately from the Queue or Scheduler table entries +-- for reusability reasons and so that they may be used by both +-- queues and schedulers. This follows the approach for separation +-- of data path elements from parameterization that is used +-- throughout this PIB. +-- +-- Use of these Maximum Rate Parameter Table entries by Queues and +-- Schedulers allows the modeling of hierarchical scheduling +-- systems. +-- +-- Specifically, a Scheduler has one or more inputs and one output. +-- Any queue feeding a scheduler, or any scheduler which feeds a +-- second scheduler, might specify a maximum transfer rate by +-- pointing to a Maximum Rate Parameter Table entry. Multi-rate +-- shapers, such as a Dual Leaky Bucket algorithm, specify their +-- rates using multiple Maximum Rate Parameter Entries with the same +-- dsMaxRateId but different dsMaxRateLevels. +-- +-- The dsMaxRateLevel/Absolute/Relative attributes are used as + + + +-- parameters to the non-work-conserving portion of a scheduler: +-- non-work-conserving implies that the scheduler may sometimes not +-- emit a packet, even if there is data available at its input(s). +-- This has the effect of limiting the servicing of the +-- queue/scheduler input or output, in effect performing shaping of +-- the packet stream passing through the queue/scheduler, as +-- described in the Informal Differentiated Services Model +-- section 7.2. +-- + +dsMaxRateTable OBJECT-TYPE + SYNTAX SEQUENCE OF DsMaxRateEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Maximum Rate Table enumerates individual + sets of scheduling parameter that can be used/reused + by Queues and Schedulers." + ::= { dsPolicyClasses 14 } + +dsMaxRateEntry OBJECT-TYPE + SYNTAX DsMaxRateEntry + STATUS current + DESCRIPTION + "An entry in the Maximum Rate Table describes + a single set of scheduling parameter for use by + queues and schedulers." + PIB-INDEX { dsMaxRatePrid } + UNIQUENESS { dsMaxRateId, + dsMaxRateLevel, + dsMaxRateAbsolute, + dsMaxRateRelative, + dsMaxRateThreshold } + ::= { dsMaxRateTable 1 } + +DsMaxRateEntry ::= SEQUENCE { + dsMaxRatePrid InstanceId, + dsMaxRateId Unsigned32, + dsMaxRateLevel Unsigned32, + dsMaxRateAbsolute Unsigned32, + dsMaxRateRelative Unsigned32, + dsMaxRateThreshold BurstSize +} + +dsMaxRatePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + + + + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { dsMaxRateEntry 1 } + +dsMaxRateId OBJECT-TYPE + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "An identifier used together with dsMaxRateLevel for + representing a multi-rate shaper. This attribute is used for + associating all the rate attributes of a multi-rate shaper. + Each dsMaxRateEntry of a multi-rate shaper must have the same + value in this attribute. The different rates of a multi-rate + shaper is identified using dsMaxRateLevel. + This attribute uses the value of zero to indicate this + attribute is not used, for single rate shaper." + DEFVAL { 0 } + ::= { dsMaxRateEntry 2 } + +dsMaxRateLevel OBJECT-TYPE + SYNTAX Unsigned32 (1..32) + STATUS current + DESCRIPTION + "An index that indicates which level of a multi-rate shaper is + being given its parameters. A multi-rate shaper has some + number of rate levels. Frame Relay's dual rate specification + refers to a 'committed' and an 'excess' rate; ATM's dual rate + specification refers to a 'mean' and a 'peak' rate. This table + is generalized to support an arbitrary number of rates. The + committed or mean rate is level 1, the peak rate (if any) is + the highest level rate configured, and if there are other + rates they are distributed in monotonically increasing order + between them. + When the entry is used for a single rate shaper, this + attribute contains a value of one." + DEFVAL { 1 } + ::= { dsMaxRateEntry 3 } + +dsMaxRateAbsolute OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "The maximum rate in kilobits/sec that a downstream + scheduler element should allocate to this queue. If + the value is zero, then there is effectively no max- + imum rate limit and that the scheduler should attempt + to be work-conserving for this queue. If the value + + + + is non-zero, the scheduler will limit the servicing + of this queue to, at most, this rate in a non-work- + conserving manner. + + Note that this attribute's value is coupled to that + of dsMaxRateRelative: changes to one will + affect the value of the other. + + [IFMIB] defines ifSpeed as Gauge32 in units of bits per + second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits + per second. + This yields the following equations: + + RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000 + + Where, 1000 is for converting kbps used by RateAbsolute to bps + used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' + for RateRelative. + + or, if appropriate: + + RateRelative = + { [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * + 1,000 + + Where, 1000 and 1,000,000 is for converting kbps used by + RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is + for 'in units of 1/1,000 of 1' for RateRelative." + ::= { dsMaxRateEntry 4 } + +dsMaxRateRelative OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + STATUS current + DESCRIPTION + "The maximum rate that a downstream scheduler element + should allocate to this queue, relative to the max- + imum rate of the interface as reported by ifSpeed or + ifHighSpeed, in units of 1/1,000 of 1. If the value + is zero, then there is effectively no maximum rate + limit and the scheduler should attempt to be work- + conserving for this queue. If the value is non-zero, + the scheduler will limit the servicing of this queue + to, at most, this rate in a non-work-conserving + manner. + + Note that this attribute's value is coupled to that + of dsMaxRateAbsolute: changes to one will + affect the value of the other. + + + + + [IFMIB] defines ifSpeed as Gauge32 in units of bits per + second, and ifHighSpeed as Gauge32 in units of 1,000,000 bits + per second. + This yields the following equations: + + RateRelative = [ (RateAbsolute * 1000) / ifSpeed ] * 1,000 + + Where, 1000 is for converting kbps used by RateAbsolute to bps + used by ifSpeed, 1,000 is for 'in units of 1/1,000 of 1' for + RateRelative. + + or, if appropriate: + + RateRelative = + { [ (RateAbsolute * 1000) / 1,000,000 ] / ifHIghSpeed } * + 1,000 + + Where, 1000 and 1,000,000 is for converting kbps used by + RateAbsolute to 1 million bps used by ifHighSpeed, 1,000 is + for 'in units of 1/1,000 of 1' for RateRelative." + REFERENCE + "ifSpeed, ifHighSpeed from the IF-MIB, RFC 2863." + ::= { dsMaxRateEntry 5 } + +dsMaxRateThreshold OBJECT-TYPE + SYNTAX BurstSize + UNITS "Bytes" + STATUS current + DESCRIPTION + "The number of bytes of queue depth at which the rate of a + multi-rate scheduler will increase to the next output rate. In + the last PRI for such a shaper, this threshold is + ignored and by convention is zero." + REFERENCE + "Adaptive Rate Shaper, RFC 2963" + ::= { dsMaxRateEntry 6 } + +-- +-- Conformance Section +-- + +dsPolicyPibCompliances + OBJECT IDENTIFIER ::= { dsPolicyPibConformance 1 } +dsPolicyPibGroups + OBJECT IDENTIFIER ::= { dsPolicyPibConformance 2 } + +dsPolicyPibCompliance MODULE-COMPLIANCE + + + + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + QoS Policy PIB." + + MODULE FRAMEWORK-PIB + MANDATORY-GROUPS { + frwkPrcSupportGroup, + frwkPibIncarnationGroup, + frwkDeviceIdGroup, + frwkCompLimitsGroup, + frwkCapabilitySetGroup, + frwkRoleComboGroup, + frwkIfRoleComboGroup, + frwkBaseFilterGroup, + frwkIpFilterGroup } + + OBJECT frwkPibIncarnationLongevity + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if policy expiration is to + be supported." + + OBJECT frwkPibIncarnationTtl + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if policy expiration is to + be supported." + + MODULE DIFFSERV-PIB -- this module + MANDATORY-GROUPS { + dsPibBaseIfCapsGroup, + dsPibIfClassificationCapsGroup, + dsPibIfAlgDropCapsGroup, + dsPibIfQueueCapsGroup, + dsPibIfSchedulerCapsGroup, + dsPibIfMaxRateCapsGroup, + dsPibIfElmDepthCapsGroup, + dsPibIfElmLinkCapsGroup, + dsPibDataPathGroup, + dsPibClfrGroup, + dsPibClfrElementGroup, + dsPibActionGroup, + dsPibAlgDropGroup, + dsPibQGroup, + dsPibSchedulerGroup, + dsPibMinRateGroup, + dsPibMaxRateGroup } + + + + + GROUP dsPibIfMeteringCapsGroup + DESCRIPTION + "This group is mandatory for devices that implement + metering functions." + + GROUP dsPibMeterGroup + DESCRIPTION + "This group is mandatory for devices that implement + metering functions." + + GROUP dsPibTBParamGroup + DESCRIPTION + "This group is mandatory for devices that implement + token-bucket metering functions." + + GROUP dsPibDscpMarkActGroup + DESCRIPTION + "This group is mandatory for devices that implement + DSCP-Marking functions." + + GROUP dsPibMQAlgDropGroup + DESCRIPTION + "This group is mandatory for devices that implement + Multiple Queue Measured Algorithmic Drop functions." + + GROUP dsPibRandomDropGroup + DESCRIPTION + "This group is mandatory for devices that implement + Random Drop functions." + + OBJECT dsClfrId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsClfrElementClfrId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsClfrElementPrecedence + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsClfrElementNext + PIB-MIN-ACCESS not-accessible + + + + DESCRIPTION + "Install support is not required." + + OBJECT dsClfrElementSpecific + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMeterSucceedNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMeterFailNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMeterSpecific + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsTBParamType + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsTBParamRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsTBParamBurstSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsTBParamInterval + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsActionNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + + + + OBJECT dsActionSpecific + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropType + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropQMeasure + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropQThreshold + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsAlgDropSpecific + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropMinThreshBytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropMinThreshPkts + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropMaxThreshBytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropMaxThreshPkts + PIB-MIN-ACCESS not-accessible + DESCRIPTION + + + + "Install support is not required." + + OBJECT dsRandomDropProbMax + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropWeight + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsRandomDropSamplingRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsQNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsQMinRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsQMaxRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsSchedulerNext + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsSchedulerMethod + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsSchedulerMinRate + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsSchedulerMaxRate + + + + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMinRatePriority + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMinRateAbsolute + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMinRateRelative + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateLevel + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateAbsolute + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateRelative + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + OBJECT dsMaxRateThreshold + PIB-MIN-ACCESS not-accessible + DESCRIPTION + "Install support is not required." + + ::= { dsPolicyPibCompliances 1 } + +dsPibBaseIfCapsGroup OBJECT-GROUP + OBJECTS { + + + + dsBaseIfCapsPrid, dsBaseIfCapsDirection + } + STATUS current + DESCRIPTION + "The Base Interface Capability Group defines the PIB + Objects that describe the base for interface capabilities." + ::= { dsPolicyPibGroups 1 } + +dsPibIfClassificationCapsGroup OBJECT-GROUP + OBJECTS { + dsIfClassificationCapsSpec + } + STATUS current + DESCRIPTION + "The Classification Capability Group defines the PIB + Objects that describe the classification capabilities." + ::= { dsPolicyPibGroups 2 } + +dsPibIfMeteringCapsGroup OBJECT-GROUP + OBJECTS { + dsIfMeteringCapsSpec + } + STATUS current + DESCRIPTION + "The Metering Capability Group defines the PIB + Objects that describe the metering capabilities." + ::= { dsPolicyPibGroups 3 } + +dsPibIfAlgDropCapsGroup OBJECT-GROUP + OBJECTS { + dsIfAlgDropCapsType, dsIfAlgDropCapsMQCount + } + STATUS current + DESCRIPTION + "The Algorithmic Dropper Capability Group defines the + PIB Objects that describe the algorithmic dropper + capabilities." + ::= { dsPolicyPibGroups 4 } + +dsPibIfQueueCapsGroup OBJECT-GROUP + OBJECTS { + dsIfQueueCapsMinQueueSize, dsIfQueueCapsMaxQueueSize, + dsIfQueueCapsTotalQueueSize + } + STATUS current + DESCRIPTION + "The Queueing Capability Group defines the PIB + Objects that describe the queueing capabilities." + + + + ::= { dsPolicyPibGroups 5 } + +dsPibIfSchedulerCapsGroup OBJECT-GROUP + OBJECTS { + dsIfSchedulerCapsServiceDisc, dsIfSchedulerCapsMaxInputs, + dsIfSchedulerCapsMinMaxRate + } + STATUS current + DESCRIPTION + "The Scheduler Capability Group defines the PIB + Objects that describe the scheduler capabilities." + ::= { dsPolicyPibGroups 6 } + +dsPibIfMaxRateCapsGroup OBJECT-GROUP + OBJECTS { + dsIfMaxRateCapsMaxLevels + } + STATUS current + DESCRIPTION + "The Max Rate Capability Group defines the PIB + Objects that describe the max rate capabilities." + ::= { dsPolicyPibGroups 7 } + +dsPibIfElmDepthCapsGroup OBJECT-GROUP + OBJECTS { + dsIfElmDepthCapsPrc, dsIfElmDepthCapsCascadeMax + } + STATUS current + DESCRIPTION + "The DataPath Element Depth Capability Group defines the PIB + Objects that describe the datapath element depth + capabilities." + ::= { dsPolicyPibGroups 8 } + +dsPibIfElmLinkCapsGroup OBJECT-GROUP + OBJECTS { + dsIfElmLinkCapsPrc, dsIfElmLinkCapsAttr, + dsIfElmLinkCapsNextPrc + } + STATUS current + DESCRIPTION + "The DataPath Element Linkage Capability Group defines the + PIB Objects that describe the datapath element linkage + capabilities." + ::= { dsPolicyPibGroups 9 } + +dsPibDataPathGroup OBJECT-GROUP + OBJECTS { + + + + dsDataPathPrid, dsDataPathCapSetName, + dsDataPathRoles, dsDataPathIfDirection, + dsDataPathStart + } + STATUS current + DESCRIPTION + "The Data Path Group defines the PIB Objects that + describe a data path." + ::= { dsPolicyPibGroups 10 } + +dsPibClfrGroup OBJECT-GROUP + OBJECTS { + dsClfrPrid, dsClfrId + } + STATUS current + DESCRIPTION + "The Classifier Group defines the PIB Objects that + describe a generic classifier." + ::= { dsPolicyPibGroups 11 } + +dsPibClfrElementGroup OBJECT-GROUP + OBJECTS { + dsClfrElementPrid, dsClfrElementClfrId, + dsClfrElementPrecedence, dsClfrElementNext, + dsClfrElementSpecific + } + STATUS current + DESCRIPTION + "The Classifier Group defines the PIB Objects that + describe a generic classifier." + ::= { dsPolicyPibGroups 12 } + +dsPibMeterGroup OBJECT-GROUP + OBJECTS { + dsMeterPrid, dsMeterSucceedNext, + dsMeterFailNext, dsMeterSpecific + } + STATUS current + DESCRIPTION + "The Meter Group defines the objects used in describ- + ing a generic meter element." + ::= { dsPolicyPibGroups 13 } + +dsPibTBParamGroup OBJECT-GROUP + OBJECTS { + dsTBParamPrid, dsTBParamType, dsTBParamRate, + dsTBParamBurstSize, dsTBParamInterval + } + + + + STATUS current + DESCRIPTION + "The Token-Bucket Parameter Group defines the objects + used in describing a single-rate token bucket meter + element." + ::= { dsPolicyPibGroups 14 } + +dsPibActionGroup OBJECT-GROUP + OBJECTS { + dsActionPrid, dsActionNext, dsActionSpecific + } + STATUS current + DESCRIPTION + "The Action Group defines the objects used in + describing a generic action element." + ::= { dsPolicyPibGroups 15 } + +dsPibDscpMarkActGroup OBJECT-GROUP + OBJECTS { + dsDscpMarkActPrid, dsDscpMarkActDscp + } + STATUS current + DESCRIPTION + "The DSCP Mark Action Group defines the objects used + in describing a DSCP Marking Action element." + ::= { dsPolicyPibGroups 16 } + +dsPibAlgDropGroup OBJECT-GROUP + OBJECTS { + dsAlgDropPrid, dsAlgDropType, dsAlgDropNext, + dsAlgDropQMeasure, dsAlgDropQThreshold, + dsAlgDropSpecific + } + STATUS current + DESCRIPTION + "The Algorithmic Drop Group contains the objects that + describe algorithmic dropper operation and configura- + tion." + ::= { dsPolicyPibGroups 17 } + +dsPibMQAlgDropGroup OBJECT-GROUP + OBJECTS { + dsMQAlgDropExceedNext + } + STATUS current + DESCRIPTION + "The Multiple Queue Measured Algorithmic Drop Group + contains the objects that describe multiple queue + + + + measured algorithmic dropper operation and configuration." + ::= { dsPolicyPibGroups 18 } + +dsPibRandomDropGroup OBJECT-GROUP + OBJECTS { + dsRandomDropPrid, + dsRandomDropMinThreshBytes, + dsRandomDropMinThreshPkts, + dsRandomDropMaxThreshBytes, + dsRandomDropMaxThreshPkts, + dsRandomDropProbMax, + dsRandomDropWeight, + dsRandomDropSamplingRate + } + STATUS current + DESCRIPTION + "The Random Drop Group augments the Algorithmic Drop Group + for random dropper operation and configuration." + ::= { dsPolicyPibGroups 19 } + +dsPibQGroup OBJECT-GROUP + OBJECTS { + dsQPrid, dsQNext, dsQMinRate, dsQMaxRate + } + STATUS current + DESCRIPTION + "The Queue Group contains the objects that describe + an interface type's queues." + ::= { dsPolicyPibGroups 20 } + +dsPibSchedulerGroup OBJECT-GROUP + OBJECTS { + dsSchedulerPrid, dsSchedulerNext, dsSchedulerMethod, + dsSchedulerMinRate, dsSchedulerMaxRate + } + STATUS current + DESCRIPTION + "The Scheduler Group contains the objects that + describe packet schedulers on interface types." + ::= { dsPolicyPibGroups 21 } + +dsPibMinRateGroup OBJECT-GROUP + OBJECTS { + dsMinRatePrid, dsMinRatePriority, + dsMinRateAbsolute, dsMinRateRelative + } + STATUS current + DESCRIPTION + + + + "The Minimum Rate Group contains the objects + that describe packet schedulers' parameters on interface + types." + ::= { dsPolicyPibGroups 22 } + +dsPibMaxRateGroup OBJECT-GROUP + OBJECTS { + dsMaxRatePrid, dsMaxRateId, dsMaxRateLevel, + dsMaxRateAbsolute, dsMaxRateRelative, + dsMaxRateThreshold + } + STATUS current + DESCRIPTION + "The Maximum Rate Group contains the objects + that describe packet schedulers' parameters on interface + types." + ::= { dsPolicyPibGroups 23 } + +END diff --git a/pibs/ietf/FRAMEWORK-FEEDBACK-PIB b/pibs/ietf/FRAMEWORK-FEEDBACK-PIB new file mode 100644 index 0000000..2fdb990 --- /dev/null +++ b/pibs/ietf/FRAMEWORK-FEEDBACK-PIB @@ -0,0 +1,1013 @@ +FRAMEWORK-FEEDBACK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + pib, Unsigned32, Unsigned64, Integer32, + MODULE-IDENTITY, OBJECT-TYPE, MODULE-COMPLIANCE, OBJECT-GROUP + FROM COPS-PR-SPPI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + InstanceId, ReferenceId, Prid, + TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + PrcIdentifierOid, PrcIdentifierOidOrZero + FROM FRAMEWORK-TC-PIB + frwkRoleComboEntry + FROM FRAMEWORK-PIB + InterfaceIndex + FROM IF-MIB; + + frwkFeedbackPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200307140000Z" -- 14 July 2003 + ORGANIZATION "IETF RAP WG" + CONTACT-INFO "IETF RAP WG + Email: rap@ops.ietf.org + + Diana Rawlins + MCI + 400 International Parkway + Richardson, Texas 75081 + Phone: 972-729-4071 + Email: Diana.Rawlins@mci.com + + + + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com + + Martin Bokaemper + Juniper Networks + 700 Silver Seven Road + Kanata, ON, K2V 1C3, Canada + Phone: 613-591-2735 + Email: mbokaemper@juniper.net + + Dinesh G Dutt + Cisco Systems, Inc. + 170 Tasman Dr. + San Jose, CA 95134-1706 + Phone: 408-527-0955 + Email: ddutt@cisco.com" + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all policy + usage monitoring, tracking and reporting policies. + + Copyright (C) The Internet Society (2003). This version + of this PIB module is part of RFC 3571; see the RFC + itself for full legal notices." + REVISION "200307140000Z" + DESCRIPTION + "Initial version, published in RFC 3571." + + ::= { pib 5 } + +-- +-- Textual Conventions +-- + +Usage32 ::= TEXTUAL-CONVENTION + STATUS current + + + + DESCRIPTION + "The Usage32 type represents a non-negative integer + which monotonically increases. + Usage32 initial value is 0 and the object-type using + Usage32 needs to specify when it is initialized. + + The Usage32 type is intended to reflect the absolute + number of counted events, so that even a new PDP + after a COPS reconnect can use the value directly. + + If there is the possibility that the maximum Usage32 + value of 2^32-1 is exceeded during the lifetime + of the Usage32 object, the larger Usage64 type + should be used. + + If conditions other than the reset of the COPS + subsystem exist that disrupt the monotonic + characteristics of Usage32, these conditions and a + method how to detect their presence should be + specified in the description of the object-type using + Usage32 or its enclosing object-types (e.g. the + Entry or Table object-type of the Usage32 + object-type). + + Whenever the monotonic increase of Usage32 is violated, + it should be reset to 0 and the fact that this occurred + should be indicated through an appropriate mechanism, + for example a corresponding object of type TimeStamp + or TimeAndDate." + SYNTAX Unsigned32 + +Usage64 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The Usage64 type represents a non-negative integer + which monotonically increases. + Usage64 initial value is 0 and the object-type using + Usage64 needs to specify when it is initialized. + + The Usage64 type is intended to reflect the absolute + number of counted events, so that even a new PDP + after a COPS reconnect can use the value directly. + + The lifetime of the Usage64 object should be defined + in a way that ensures the maximum Usage64 value of + 2^64-1 is never exceeded. + + If conditions other than the reset of the COPS + + + + subsystem exist that disrupt the monotonic + characteristics of Usage64, these conditions and a + method how to detect their presence should be + specified in the description of the object-type using + Usage64 or its enclosing object-types (e.g. the + Entry or Table object-type of the Usage64 + object-type). + + Whenever the monotonic increase of Usage64 is violated, + it should be reset to 0 and the fact that this occurred + should be indicated through an appropriate mechanism, + for example a corresponding object of type TimeStamp + or TimeAndDate." + SYNTAX Unsigned64 + +-- +-- The feedback report group +-- + +frwkFeedbackGroupClasses + OBJECT IDENTIFIER ::= { frwkFeedbackPib 1 } + +-- +-- Feedback Action Table +-- + +frwkFeedbackActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class represents commands that the PDP sends to + suspend, resume or solicit collection or reporting of + usage data." + + ::= { frwkFeedbackGroupClasses 1} + +frwkFeedbackActionEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionEntry + STATUS current + DESCRIPTION + "Each frwkFeedbackActionEntry represents a command from + the PDP. FrwkFeedbackActionIndicator specifies the + command itself while frwkFeedbackActionSpecificPri + indicates if all frwkFeedbackLink objects in the system + are affected by the command, or just the set that is + referenced by frwkFeedbackActionList." + + + + + PIB-INDEX { frwkFeedbackActionId} + + ::= { frwkFeedbackActionTable 1} + +FrwkFeedbackActionEntry ::= SEQUENCE { + frwkFeedbackActionId InstanceId, + frwkFeedbackActionIndicator INTEGER, + frwkFeedbackActionSpecificPri TruthValue, + frwkFeedbackActionList TagReferenceId + } + +frwkFeedbackActionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackAction class." + + ::= { frwkFeedbackActionEntry 1} + +frwkFeedbackActionIndicator OBJECT-TYPE + SYNTAX INTEGER { + suspendMonitoringAndReports(1), + suspendReports(2), + resume(3), + solicitReport(4) + } + STATUS current + DESCRIPTION + "The value indicates if the PEP is to send cached + usage policies via COPS accounting type report + messages. + The enumeration values are: + (1) suspendMonitoringAndReports + (2) suspendReports + (3) resume + (4) solicitReport " + + ::= { frwkFeedbackActionEntry 2 } + +frwkFeedbackActionSpecificPri OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "A value of 0 indicates that the + frwkFeedbackActionList attribute should be ignored, + and the action applied to all policies. A value of + 1 indicates that the action entry has a specific + + + + list of policies to which it is to be applied." + ::= { frwkFeedbackActionEntry 3} + +frwkFeedbackActionList OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { frwkFeedbackActionListTag } + STATUS current + DESCRIPTION + "Identifies a group of frwkFeedbackLink instances + that this action should affect. The group is + identified through a tag reference in the + frwkFeedbackList class." + ::= { frwkFeedbackActionEntry 4} + +-- +-- Feedback Action List Table +-- + +frwkFeedbackActionListTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionListEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines groups of linkage instances. + Groups can be referenced by commands sent by the + PDP in a frwkFeedbackActionEntry -in this case the + command affects all linkage instances that are part + of the group. + A group can be referred to by its tag stored in + frwkFeedbackActionListTag." + ::= { frwkFeedbackGroupClasses 2} + +frwkFeedbackActionListEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionListEntry + STATUS current + DESCRIPTION + "Each instance associates a linkage instance with a + specific ActionListGroup." + + PIB-INDEX {frwkFeedbackActionListId } + UNIQUENESS { frwkFeedbackActionListTag, + frwkFeedbackActionListRefID + } + ::= { frwkFeedbackActionListTable 1} + +FrwkFeedbackActionListEntry::= SEQUENCE { + frwkFeedbackActionListId InstanceId, + frwkFeedbackActionListTag TagId, + + + + frwkFeedbackActionListRefID ReferenceId + } + +frwkFeedbackActionListId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely + identifies an instance of the class." + + ::= { frwkFeedbackActionListEntry 1 } + +frwkFeedbackActionListTag OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Identifies a group of linkage instances that can + be referenced from the Action class." + + ::= { frwkFeedbackActionListEntry 2 } + +frwkFeedbackActionListRefID OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkFeedbackLinkEntry } + STATUS current + DESCRIPTION + "A frwkFeedbackLink instance that is referred to + by this ReferenceId becomes part of the group, + that is identified by the + frwkFeedbackActionListTag." + + ::= { frwkFeedbackActionListEntry 3 } + +-- +-- The Feedback Link Capability Table +-- + +frwkFeedbackLinkCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackLinkCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Instances of the frwkFeedbackLink class reference + instances of selection and threshold classes and a + usage class. + This class allows the PEP to communicate valid + combinations of these three classes to the PDP." + ::= { frwkFeedbackGroupClasses 3} + + + +frwkFeedbackLinkCapsEntry OBJECT-TYPE + SYNTAX FrwkFeedbackLinkCapsEntry + STATUS current + DESCRIPTION + "The attributes of this class identify valid + combinations of selection criteria, usage and + threshold classes for feedback." + PIB-INDEX { frwkFeedbackLinkCapsId } + UNIQUENESS { + frwkFeedbackLinkCapsSelection, + frwkFeedbackLinkCapsUsage, + frwkFeedbackLinkCapsThreshold + } + + ::= {frwkFeedbackLinkCapsTable 1} + +FrwkFeedbackLinkCapsEntry ::= SEQUENCE { + frwkFeedbackLinkCapsId InstanceId, + frwkFeedbackLinkCapsSelection PrcIdentifierOid, + frwkFeedbackLinkCapsUsage PrcIdentifierOid, + frwkFeedbackLinkCapsThreshold PrcIdentifierOidOrZero +} + +frwkFeedbackLinkCapsId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackLinkCaps class." + ::= { frwkFeedbackLinkCapsEntry 1} + +frwkFeedbackLinkCapsSelection OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The identifier of a class that is supported by the + device for feedback selection in combination with the + usage and threshold classes referenced in this + instance." + ::= { frwkFeedbackLinkCapsEntry 2} + +frwkFeedbackLinkCapsUsage OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The identifier of the usage class that is supported by + the PEP in combination with the selection and threshold + classes referenced in this instance." + + + + ::= { frwkFeedbackLinkCapsEntry 3} + + +frwkFeedbackLinkCapsThreshold OBJECT-TYPE + SYNTAX PrcIdentifierOidOrZero + STATUS current + DESCRIPTION + "The identifier of the threshold class that is + supported by the PEP in combination with the selection + and usage classes referenced in this instance. + 0.0 is used if this combination does not allow a + threshold." + ::= { frwkFeedbackLinkCapsEntry 4} + +-- +-- The Feedback Report Linkage Table +-- + +frwkFeedbackLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackLinkEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permits the defining of the max + interval used for reporting the usage instance." + + ::= { frwkFeedbackGroupClasses 4} + +frwkFeedbackLinkEntry OBJECT-TYPE + SYNTAX FrwkFeedbackLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permits the defining of the max + interval used for reporting the usage instance." + PIB-INDEX { frwkFeedbackLinkId } + UNIQUENESS {frwkFeedbackLinkSel, + frwkFeedbackLinkUsage } + ::= {frwkFeedbackLinkTable 1} + +FrwkFeedbackLinkEntry ::= SEQUENCE { + frwkFeedbackLinkId InstanceId, + frwkFeedbackLinkSel Prid, + frwkFeedbackLinkUsage PrcIdentifierOid, + frwkFeedbackLinkInterval Integer32, + frwkFeedbackLinkThreshold Prid, + frwkFeedbackLinkFlags BITS + + + +} + +frwkFeedbackLinkId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackLinkTable class." + ::= { frwkFeedbackLinkEntry 1} + +frwkFeedbackLinkSel OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Policy Class instance as the monitoring + point, or the PRID of the selection criteria instance that + defines the conditions for monitoring, to be use by the + PEP for usage reporting." + + ::= { frwkFeedbackLinkEntry 2} + +frwkFeedbackLinkUsage OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The identifier of the usage class that the PEP uses to + monitor, record and report." + + ::= { frwkFeedbackLinkEntry 3} + +frwkFeedbackLinkInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specified by the PDP in the client + accept message. A frwkFeedbackLinkInterval of 1 is + equal to the value of the Accounting Timer. This value + must be 1 or greater. " + + ::= { frwkFeedbackLinkEntry 4} + +frwkFeedbackLinkThreshold OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a threshold class instance. This instance + specifies the threshold values for the usage policy." + + + + ::= { frwkFeedbackLinkEntry 5} + +frwkFeedbackLinkFlags OBJECT-TYPE + SYNTAX BITS { + periodic(0), + threshold(1), + changeOnly(2) + } + STATUS current + DESCRIPTION + "This value indicates the reporting basis of the usage + policy. The feed back may be generated on demand, on a + periodic basis regardless of a change in value from the + previous report, on a periodic basis if a change in + value has occurred, or the usage is reported when an + identified threshold value in the usage instance has + been reached. + If the 'periodic' flag is set, the PEP will provide + unsolicited reports at the rate specified in + frwkFeedbackLinkInterval. + If the 'periodic' flag is not set, reports will only be + generated when solicited by the PDP. + The 'threshold' and 'changeOnly' flags make the + periodic reports conditional - these flags only make + sense in combination with the 'periodic' flag." + + ::= { frwkFeedbackLinkEntry 6} + +-- +-- The Threshold class that accompanies the above Usage PRCs +-- + +frwkFeedbackTrafficThresTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficThresEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the threshold attributes + corresponding to usage attributes specified in + frwkFeedbackTrafficTable, frwkFeedbackIfTrafficTable + and other similar usage classes. + + The usage object is considered to match the threshold + condition if at least one of the packet or byte + threshold conditions match. + + The byte and packet thresholds are considered to + match, if the threshold is present (not ASN1 NULL) + + + + and the corresponding usage value exceeds the + threshold." + + ::= { frwkFeedbackGroupClasses 5} + +frwkFeedbackTrafficThresEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficThresEntry + STATUS current + DESCRIPTION + "Defines the attributes to hold threshold values." + PIB-INDEX {frwkFeedbackTrafficThresId} + + ::= {frwkFeedbackTrafficThresTable 1} + +FrwkFeedbackTrafficThresEntry ::= SEQUENCE { + frwkFeedbackTrafficThresId InstanceId, + frwkFeedbackTrafficThresPackets Unsigned64, + frwkFeedbackTrafficThresBytes Unsigned64 +} + +frwkFeedbackTrafficThresId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficThresEntry 1 } + +frwkFeedbackTrafficThresPackets OBJECT-TYPE + SYNTAX Unsigned64 + STATUS current + DESCRIPTION + "The threshold, in terms of packets, that must be + matched or exceeded to trigger a report in the + next reporting interval." + ::= { frwkFeedbackTrafficThresEntry 2 } + +frwkFeedbackTrafficThresBytes OBJECT-TYPE + SYNTAX Unsigned64 + STATUS current + DESCRIPTION + "The threshold, in terms of bytes, that must be + exceeded to trigger a report in the next reporting + interval." + ::= { frwkFeedbackTrafficThresEntry 3 } + + +-- + + + +-- All actual usage classes are in the separate +-- frwkFeedbackUsageClasses group +-- + +frwkFeedbackUsageClasses + OBJECT IDENTIFIER ::= { frwkFeedbackPib 2 } + + +-- +-- The generic traffic (byte & packet count) usage class +-- + +frwkFeedbackTrafficTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor for plain traffic handling elements + like filters. All packets and the bytes contained in + these packets are counted. It also contains the PRID + of the linkage instance associating the selection + criteria instance with the usage instance." + + ::= { frwkFeedbackUsageClasses 1} + +frwkFeedbackTrafficEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackTrafficId} + UNIQUENESS { frwkFeedbackTrafficLinkRefID } + + ::= {frwkFeedbackTrafficTable 1} + +FrwkFeedbackTrafficEntry ::= SEQUENCE { + frwkFeedbackTrafficId InstanceId, + frwkFeedbackTrafficLinkRefID ReferenceId, + frwkFeedbackTrafficPacketCount Usage64, + frwkFeedbackTrafficByteCount Usage64 + +} + +frwkFeedbackTrafficId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + + + + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficEntry 1 } + +frwkFeedbackTrafficLinkRefID OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkFeedbackLinkEntry } + STATUS current + DESCRIPTION + "The ReferenceId of the Linkage policy instance used + to base this usage policy instance upon." + + ::= { frwkFeedbackTrafficEntry 2 } + +frwkFeedbackTrafficPacketCount OBJECT-TYPE + SYNTAX Usage64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated + element. The initial value of 0 is set when the + frwkFeedbackTraffic instance is created, for example + triggered through the creation of a frwkFeedbackLink + instance." + + ::= {frwkFeedbackTrafficEntry 3} + +frwkFeedbackTrafficByteCount OBJECT-TYPE + SYNTAX Usage64 + STATUS current + DESCRIPTION + "The byte count of packets handled by the associated + element. The initial value of 0 is set when the + frwkFeedbackTraffic instance is created." + ::= { frwkFeedbackTrafficEntry 4} + + + +-- +-- The traffic usage class, qualified for an interface +-- +frwkFeedbackIfTrafficTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackIfTrafficEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "A usage class similar to the basic Traffic class that + also contains a reference to an interface index. This + + + + class should be used with an underspecified selection + criteria entry from the frwkRoleComboTable that matches + an element that can be assigned to multiple interface + indices. The interface field can be used to associate + the instances of this class with the specific element's + assignment." + ::= { frwkFeedbackUsageClasses 2 } + +frwkFeedbackIfTrafficEntry OBJECT-TYPE + SYNTAX FrwkFeedbackIfTrafficEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackIfTrafficId} + UNIQUENESS { frwkFeedbackIfTrafficLinkRefID, + frwkFeedbackIfTrafficIfIndex } + + ::= {frwkFeedbackIfTrafficTable 1} + +FrwkFeedbackIfTrafficEntry ::= SEQUENCE { + frwkFeedbackIfTrafficId InstanceId, + frwkFeedbackIfTrafficLinkRefID ReferenceId, + frwkFeedbackIfTrafficIfIndex InterfaceIndex, + frwkFeedbackIfTrafficPacketCount Usage64, + frwkFeedbackIfTrafficByteCount Usage64 + +} + +frwkFeedbackIfTrafficId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackIfTrafficEntry 1 } + +frwkFeedbackIfTrafficLinkRefID OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkFeedbackLinkEntry } + STATUS current + DESCRIPTION + "The ReferenceId of the Linkage policy instance used + to base this usage policy instance upon." + ::= { frwkFeedbackIfTrafficEntry 2 } + +frwkFeedbackIfTrafficIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + + + + STATUS current + DESCRIPTION + "The value of this attribute is the ifIndex which is + associated with the specified RoleCombination and + interface capability set name." + + ::= { frwkFeedbackIfTrafficEntry 3 } + +frwkFeedbackIfTrafficPacketCount OBJECT-TYPE + SYNTAX Usage64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated + element. The initial value of 0 is set when the + frwkFeedbackIfTraffic instance is created." + ::= { frwkFeedbackIfTrafficEntry 4 } + +frwkFeedbackIfTrafficByteCount OBJECT-TYPE + SYNTAX Usage64 + STATUS current + DESCRIPTION + "The byte count of packets handled by the associated + element. The initial value of 0 is set when the + frwkFeedbackIfTraffic instance is created." + ::= { frwkFeedbackIfTrafficEntry 5 } + + +-- +-- All Selection classes are in the separate +-- FrwkFeedbackSelectionClasses group +-- + +frwkFeedbackSelectionClasses + OBJECT IDENTIFIER ::= { frwkFeedbackPib 3 } + +-- +-- The Role Combination Filter Selection Table +-- + +frwkFeedbackRoleFilterSelTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackRoleFilterSelEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A selection class that defines selection of objects + for monitoring based on the role combination, + capability set and a filter." + ::= { frwkFeedbackSelectionClasses 1 } + + + +frwkFeedbackRoleFilterSelEntry OBJECT-TYPE + SYNTAX FrwkFeedbackRoleFilterSelEntry + STATUS current + DESCRIPTION + "Each instance selects a filter on multiple interfaces + that share the same frwkRoleCombo instance." + PIB-INDEX { frwkFeedbackRoleFilterSelId} + UNIQUENESS { frwkFeedbackRoleFilterSelRCombo, + frwkFeedbackRoleFilterSelFilter + } + + ::= {frwkFeedbackRoleFilterSelTable 1} + +FrwkFeedbackRoleFilterSelEntry ::= SEQUENCE { + frwkFeedbackRoleFilterSelId InstanceId, + frwkFeedbackRoleFilterSelRCombo ReferenceId, + frwkFeedbackRoleFilterSelFilter Prid +} + +frwkFeedbackRoleFilterSelId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackRoleFilterSelEntry 1 } + +frwkFeedbackRoleFilterSelRCombo OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkRoleComboEntry } + STATUS current + DESCRIPTION + "The ReferenceId of the frwkRoleComboTable policy + instance used for selection." + ::= { frwkFeedbackRoleFilterSelEntry 2 } + +frwkFeedbackRoleFilterSelFilter OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The identifier of a filter instance. Valid classes + are the subclasses of frwkBaseFilter: + - frwkIpFilter + - frwk802Filter + - frwkILabelFilter" + ::= { frwkFeedbackRoleFilterSelEntry 3 } + + + + + +-- +-- Compliance Section +-- + +frwkFeedbackPibConformance + OBJECT IDENTIFIER ::= { frwkFeedbackPib 4 } + +frwkFeedbackPibCompliances + OBJECT IDENTIFIER ::= { frwkFeedbackPibConformance 1 } + +frwkFeedbackPibGroups + OBJECT IDENTIFIER ::= { frwkFeedbackPibConformance 2 } + + +frwkFeedbackPibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the feedback + framework PIB" + + MODULE -- this module + MANDATORY-GROUPS { frwkFeedbackLinkCapsGroup, + frwkFeedbackLinkGroup, + frwkFeedbackActionGroup } + + GROUP frwkFeedbackActionListGroup + DESCRIPTION + "The frwkFeedbackActionListGroup is mandatory if + actions on subsets linkEntries are to be + supported." + + GROUP frwkFeedbackTrafficGroup + DESCRIPTION + "The frwkFeedbackTrafficGroup is mandatory if + monitoring of traffic data is to be supported." + + GROUP frwkFeedbackTrafficThresGroup + DESCRIPTION + "The frwkFeedbackTrafficThresGroup is mandatory + if conditional reporting of traffic usage + thresholds is to be supported." + + GROUP frwkFeedbackIfTrafficGroup + DESCRIPTION + "The frwkFeedbackIfTrafficGroup is mandatory if + per-interface usage collection of traffic data is + to be supported." + + + + + GROUP frwkFeedbackRoleFilterSelGroup + DESCRIPTION + "The frwkFeedbackRoleFilterSelGroup is mandatory + if monitoring of filters referenced through the + frwkRoleCombo class is to be supported." + + ::= { frwkFeedbackPibCompliances 1 } + + frwkFeedbackLinkCapsGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackLinkCapsId, + frwkFeedbackLinkCapsSelection, + frwkFeedbackLinkCapsUsage, + frwkFeedbackLinkCapsThreshold } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackLinkCapsTable." + + ::= { frwkFeedbackPibGroups 1 } + + frwkFeedbackLinkGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackLinkId, + frwkFeedbackLinkSel, + frwkFeedbackLinkUsage, + frwkFeedbackLinkInterval, + frwkFeedbackLinkThreshold, + frwkFeedbackLinkFlags } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackLinkTable." + + ::= { frwkFeedbackPibGroups 2 } + + frwkFeedbackActionGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackActionId, + frwkFeedbackActionIndicator, + frwkFeedbackActionSpecificPri, + frwkFeedbackActionList } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackActionTable." + + ::= { frwkFeedbackPibGroups 3 } + + frwkFeedbackActionListGroup OBJECT-GROUP + OBJECTS { + + + + frwkFeedbackActionListId, + frwkFeedbackActionListTag, + frwkFeedbackActionListRefID } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackActionListTable." + + ::= { frwkFeedbackPibGroups 4 } + + frwkFeedbackTrafficGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackTrafficId, + frwkFeedbackTrafficLinkRefID, + frwkFeedbackTrafficPacketCount, + frwkFeedbackTrafficByteCount } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackTrafficTable." + + ::= { frwkFeedbackPibGroups 5 } + + frwkFeedbackTrafficThresGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackTrafficThresId, + frwkFeedbackTrafficThresPackets, + frwkFeedbackTrafficThresBytes } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackTrafficThresTable." + + ::= { frwkFeedbackPibGroups 6 } + + frwkFeedbackIfTrafficGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackIfTrafficId, + frwkFeedbackIfTrafficLinkRefID, + frwkFeedbackIfTrafficIfIndex, + frwkFeedbackIfTrafficPacketCount, + frwkFeedbackIfTrafficByteCount } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackIfTrafficTable." + + ::= { frwkFeedbackPibGroups 7 } + + frwkFeedbackRoleFilterSelGroup OBJECT-GROUP + OBJECTS { + frwkFeedbackRoleFilterSelId, + + + + frwkFeedbackRoleFilterSelRCombo, + frwkFeedbackRoleFilterSelFilter } + STATUS current + DESCRIPTION + "Objects from the frwkFeedbackRoleFilterSelTable." + + ::= { frwkFeedbackPibGroups 8 } + +END diff --git a/pibs/ietf/FRAMEWORK-PIB b/pibs/ietf/FRAMEWORK-PIB new file mode 100644 index 0000000..a1209a9 --- /dev/null +++ b/pibs/ietf/FRAMEWORK-PIB @@ -0,0 +1,2278 @@ + FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + InstanceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination, PrcIdentifierOid, AttrIdentifierOrZero, + ClientType, ClientHandle + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType, + InetAddressPrefixLength, InetPortNumber + FROM INET-ADDRESS-MIB + InterfaceIndex + FROM IF-MIB + DscpOrAny + FROM DIFFSERV-DSCP-TC + TruthValue, PhysAddress + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + frameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200302130000Z" -- 13 Feb 2003 + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com + + + + + Ravi Sahita + Intel Labs. + 2111 NE 25th Ave. + + Hillsboro, OR 97124 USA + Phone: +1 503 712 1554 + Email: ravi.sahita@intel.com + + RAP WG Mailing list: rap@ops.ietf.org" + + DESCRIPTION + "A PIB module containing the base set of PRCs that + provide support for management of multiple PIB contexts, + association of roles to device capabilities and other + reusable PRCs. PEPs are required for to implement this + PIB if the above features are desired. This PIB defines + PRCs applicable to 'all' subject-categories. + + Copyright (C) The Internet Society (2003). This version + of this PIB module is part of RFC 3318; see the RFC + itself for full legal notices." + REVISION "200302130000Z" -- 13 Feb 2003 + DESCRIPTION + "Initial version, published in RFC 3318." + + ::= { pib 2 } + + -- + -- The root OID for PRCs in the Framework PIB + -- + + frwkBasePibClasses + OBJECT IDENTIFIER ::= { frameworkPib 1 } + + -- + -- PRC Support Table + -- + + + + + + + + + + + + + + frwkPrcSupportTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkPrcSupportEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this PRC specifies a PRC that the device + supports and a bit string to indicate the attributes of the + class that are supported. These PRIs are sent to the PDP to + indicate to the PDP which PRCs, and which attributes of + these PRCs, the device supports. + + All install and install-notify PRCs supported by the device + must be represented in this PRC. Notify PRCs may be + represented for informational purposes." + + ::= { frwkBasePibClasses 1 } + + frwkPrcSupportEntry OBJECT-TYPE + SYNTAX FrwkPrcSupportEntry + STATUS current + DESCRIPTION + "An instance of the frwkPrcSupport class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { frwkPrcSupportPrid } + UNIQUENESS { frwkPrcSupportSupportedPrc } + + ::= { frwkPrcSupportTable 1 } + + FrwkPrcSupportEntry ::= SEQUENCE { + frwkPrcSupportPrid InstanceId, + frwkPrcSupportSupportedPrc PrcIdentifierOid, + frwkPrcSupportSupportedAttrs OCTET STRING + } + + frwkPrcSupportPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkPrcSupport class." + + ::= { frwkPrcSupportEntry 1 } + + + + + + + frwkPrcSupportSupportedPrc OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The object identifier of a supported PRC. The value is the + OID of the Entry object of the PRC definition. The Entry + Object definition of a PRC has an OID with value XxxTable.1 + Where, XxxTable is the OID assigned to the PRC Table + Object definition. There may not be more than one instance + of the frwkPrcSupport class with the same value of + frwkPrcSupportSupportedPrc." + + ::= { frwkPrcSupportEntry 2 } + + frwkPrcSupportSupportedAttrs OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A bit string representing the supported attributes of the + class that is identified by the frwkPrcSupportSupportedPrc + object. + + Each bit of this bit string corresponds to a class + attribute, with the most significant bit of the i-th octet + of this octet string corresponding to the (8*i - 7)-th + attribute, and the least significant bit of the i-th octet + corresponding to the (8*i)-th class attribute. Each bit + specifies whether or not the corresponding class attribute + is currently supported, with a '1' indicating support and a + '0' indicating no support. + + If the value of this bit string is N bits long and there are + more than N class attributes then the bit string is + logically extended with 0's to the required length. + On the other hand, If the PDP receives a bit string of + length N and there are less that N class attributes then the + PDP should ignore the extra bits in the bit string, i.e., + assume those attributes are unsupported." + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, section + 2.2.1." + + ::= { frwkPrcSupportEntry 3 } + + -- + -- PIB Incarnation Table + -- + + + + + frwkPibIncarnationTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkPibIncarnationEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This PRC contains a single PRovisioning Instance per + installed context that identifies the current incarnation + of the PIB and the PDP or network manager that installed + this incarnation. The instance of this PRC is reported to + the PDP in the REQ message so that the PDP can (attempt to) + ascertain the current state of the PIB. A network manager + may use the instance to determine the state of the device." + + ::= { frwkBasePibClasses 2 } + + frwkPibIncarnationEntry OBJECT-TYPE + SYNTAX FrwkPibIncarnationEntry + STATUS current + DESCRIPTION + "An instance of the frwkPibIncarnation class. Only + one instance of this PRC is ever instantiated per context" + + PIB-INDEX { frwkPibIncarnationPrid } + + ::= { frwkPibIncarnationTable 1 } + + FrwkPibIncarnationEntry ::= SEQUENCE { + frwkPibIncarnationPrid InstanceId, + frwkPibIncarnationName SnmpAdminString, + frwkPibIncarnationId OCTET STRING, + frwkPibIncarnationLongevity INTEGER, + frwkPibIncarnationTtl Unsigned32, + frwkPibIncarnationInCtxtSet TruthValue, + frwkPibIncarnationActive TruthValue, + frwkPibIncarnationFullState TruthValue + } + + frwkPibIncarnationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this PRC." + + ::= { frwkPibIncarnationEntry 1 } + + + + + + + + frwkPibIncarnationName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + STATUS current + DESCRIPTION + "The name of the PDP that installed the current incarnation + of the PIB into the device. A zero-length string value for + this type implies the PDP has not assigned this type any + value. By default, it is the zero length string." + + ::= { frwkPibIncarnationEntry 2 } + + frwkPibIncarnationId OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + STATUS current + DESCRIPTION + "An ID to identify the current incarnation. It has meaning + to the PDP/manager that installed the PIB and perhaps its + standby PDPs/managers. A zero-length string value for + this type implies the PDP has not assigned this type any + value. By default, it is the zero-length string." + + ::= { frwkPibIncarnationEntry 3 } + + frwkPibIncarnationLongevity OBJECT-TYPE + SYNTAX INTEGER { + expireNever(1), + expireImmediate(2), + expireOnTimeout(3) + } + STATUS current + DESCRIPTION + "This attribute controls what the PEP does with the + downloaded policy on a Client Close message or a loss of + connection to the PDP. + + If set to expireNever, the PEP continues to operate with the + installed policy indefinitely. If set to expireImmediate, + the PEP immediately expires the policy obtained from the PDP + and installs policy from local configuration. If set to + expireOnTimeout, the PEP continues to operate with the + policy installed by the PDP for a period of time specified + by frwkPibIncarnationTtl. After this time (and it has not + reconnected to the original or new PDP) the PEP expires this + policy and reverts to local configuration. + + For all cases, it is the responsibility of the PDP to check + the incarnation and download new policy, if necessary, on a + reconnect. On receiving a Remove-State for the active + + + + context, this attribute value MUST be ignored and the PEP + should expire the policy in that active context immediately. + Policy enforcement timing only applies to policies that have + been installed dynamically (e.g., by a PDP via COPS)." + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084." + + ::= { frwkPibIncarnationEntry 4 } + + frwkPibIncarnationTtl OBJECT-TYPE + SYNTAX Unsigned32 + UNITS "seconds" + STATUS current + DESCRIPTION + "The number of seconds after a Client Close or TCP timeout + for which the PEP continues to enforce the policy in the + PIB. After this interval, the PIB is considered expired and + the device no longer enforces the policy installed in the + PIB. + + This attribute is only meaningful if + frwkPibIncarnationLongevity is set to expireOnTimeout." + + ::= { frwkPibIncarnationEntry 5 } + + frwkPibIncarnationInCtxtSet OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "When the PDP installs a PRI with this flag set to 'true' it + implies this context belongs to the set of contexts out of + which at the most one context can be active at a given time. + If this attribute is set to 'false' this context is one of + the outsourcing (simultaneous active) contexts on the PEP. + + This attribute is 'true' for all contexts belong to the set + of configuration contexts. Within the configuration context + set, one context can be active identified by the + frwkPibIncarnationActive attribute." + REFERENCE + "TruthValue Textual Convention, defined in RFC 2579." + ::= { frwkPibIncarnationEntry 6 } + + + + + + + + + + frwkPibIncarnationActive OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "When the PDP installs a PRI on the PEP with this attribute + set to 'true' and if this context belongs to the + 'configuration contexts' set, i.e., the + frwkPibIncarnationInCtxtSet is set to 'true', then the PIB + instance to which this PRI belongs must become the active + PIB instance. In this case, the previous active instance + from this set MUST become inactive and the + frwkPibIncarnationActive attribute in that PIB instance MUST + be set to 'false'. + + When the PDP installs an attribute frwkPibIncarnationActive + on the PEP that is 'true' in one PIB instance and if the + context belongs to the 'configuration contexts' set, the PEP + must ensure, re-setting the attribute if necessary, that the + frwkPibIncarnationActive attribute is 'false' in all other + contexts which belong to the 'configuration contexts' set." + + ::= { frwkPibIncarnationEntry 7 } + + frwkPibIncarnationFullState OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "This attribute is interpreted only when sent in a COPS + request message from the PEP to the PDP. It does not have + any meaning when sent from the PDP to the PEP. + + If this attribute is set to 'true' by the PEP, then the + request that the PEP sends to the PDP must be interpreted as + the complete configuration request for the PEP. The PDP must + in this case refresh the request information for the + handle that the request containing this PRI was received on. + If this attribute is set to 'false', then the + request PRIs sent in the request must be interpreted as + updates to the previous request PRIs sent using that handle. + See section 3.3 for details on updating request state + information." + REFERENCE + "RFC 3318 Section 2.3" + + ::= { frwkPibIncarnationEntry 8 } + + -- + -- Device Identification Table + + + + -- + + frwkDeviceIdTable OBJECT-TYPE + + SYNTAX SEQUENCE OF FrwkDeviceIdEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This PRC contains a single PRovisioning Instance that + contains general purpose device-specific information that is + used to facilitate efficient policy communication by a PDP. + The instance of this PRC is reported to the PDP in a COPS + request message so that the PDP can take into account + certain device characteristics during policy installation." + + ::= { frwkBasePibClasses 3 } + + frwkDeviceIdEntry OBJECT-TYPE + SYNTAX FrwkDeviceIdEntry + STATUS current + DESCRIPTION + "An instance of the frwkDeviceId class. Only one instance of + this PRC is ever instantiated." + + PIB-INDEX { frwkDeviceIdPrid } + + ::= { frwkDeviceIdTable 1 } + + FrwkDeviceIdEntry ::= SEQUENCE { + frwkDeviceIdPrid InstanceId, + frwkDeviceIdDescr SnmpAdminString, + frwkDeviceIdMaxMsg Unsigned32, + frwkDeviceIdMaxContexts Unsigned32 + } + + frwkDeviceIdPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this PRC." + + ::= { frwkDeviceIdEntry 1 } + + + + + + + + + + frwkDeviceIdDescr OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..255)) + STATUS current + DESCRIPTION + "A textual description of the PEP. This value should include + the name and version identification of the PEP's hardware + and software." + + ::= { frwkDeviceIdEntry 2 } + + frwkDeviceIdMaxMsg OBJECT-TYPE + SYNTAX Unsigned32 (64..4294967295) + UNITS "octets" + STATUS current + DESCRIPTION + "The maximum COPS-PR message size, in octets, that the + device is capable of processing. Received messages with a + size in excess of this value must cause the PEP to return an + error to the PDP containing the global error code + 'maxMsgSizeExceeded'. This is an additional error-avoidance + mechanism to allow the administrator to know the maximum + message size supported so that they have the ability to + control the message size of messages sent to the device. + This attribute must have a non-zero value. The device should + send the MAX value for Unsigned32 for this attribute if it + not defined." + DEFVAL { 4294967295 } + + ::= { frwkDeviceIdEntry 3 } + + frwkDeviceIdMaxContexts OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + UNITS "contexts" + STATUS current + DESCRIPTION + "The maximum number of unique contexts supported by + the device. This is an additional error-avoidance mechanism + to allow the administrators to have the ability to know the + maximum number of contexts supported so that they can + control the number of configuration contexts they install on + the device. This attribute must have a non-zero value. The + device should send the MAX value for Unsigned32 for this + attribute if it not defined." + DEFVAL { 4294967295 } + + ::= { frwkDeviceIdEntry 4 } + + -- + + + + -- Component Limitations Table + -- + + frwkCompLimitsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkCompLimitsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This PRC supports the ability to export information + detailing PRC/attribute implementation limitations to the + policy management system. Instances of this PRC apply only + for PRCs with access type 'install' or 'install-notify'. + + Each instance of this PRC identifies a PRovisioning Class + or attribute and a limitation related to the implementation + of the class/attribute in the device. Additional information + providing guidance related to the limitation may also be + present. These PRIs are sent to the PDP to indicate which + PRCs or PRC attributes the device supports in a restricted + manner." + + ::= { frwkBasePibClasses 4 } + + frwkCompLimitsEntry OBJECT-TYPE + SYNTAX FrwkCompLimitsEntry + STATUS current + DESCRIPTION + "An instance of the frwkCompLimits class that identifies + a PRC or PRC attribute and a limitation related to the PRC + or PRC attribute implementation supported by the device. + COPS-PR lists the error codes that MUST be returned (if + applicable)for policy installation that don't abide by the + restrictions indicated by the limitations exported. [SPPI] + defines an INSTALL-ERRORS clause that allows PIB designers + to define PRC specific error codes that can be returned for + policy installation. This allows efficient debugging of PIB + implementations." + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084." + + PIB-INDEX { frwkCompLimitsPrid } + UNIQUENESS { frwkCompLimitsComponent, + frwkCompLimitsAttrPos, + frwkCompLimitsNegation, + frwkCompLimitsType, + frwkCompLimitsSubType, + frwkCompLimitsGuidance } + + + + + ::= { frwkCompLimitsTable 1 } + + FrwkCompLimitsEntry ::= SEQUENCE { + frwkCompLimitsPrid InstanceId, + frwkCompLimitsComponent PrcIdentifierOid, + frwkCompLimitsAttrPos AttrIdentifierOrZero, + frwkCompLimitsNegation TruthValue, + frwkCompLimitsType INTEGER, + frwkCompLimitsSubType INTEGER, + frwkCompLimitsGuidance OCTET STRING + } + + frwkCompLimitsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkCompLimits class." + + ::= { frwkCompLimitsEntry 1 } + + frwkCompLimitsComponent OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The value is the OID of a PRC (the table entry) which is + supported in some limited fashion or contains an attribute + that is supported in some limited fashion with regard to + it's definition in the associated PIB module. The same OID + may appear in the table several times, once for each + implementation limitation acknowledged by the device." + + ::= { frwkCompLimitsEntry 2 } + + frwkCompLimitsAttrPos OBJECT-TYPE + SYNTAX AttrIdentifierOrZero + STATUS current + DESCRIPTION + "The relative position of the attribute within the PRC + specified by the frwkCompLimitsComponent. A value of 1 would + represent the first columnar object in the PRC and a value + of N would represent the Nth columnar object in the PRC. A + value of zero (0) indicates that the limit applies to the + PRC itself and not to a specific attribute." + + ::= { frwkCompLimitsEntry 3 } + + + + + + frwkCompLimitsNegation OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "A boolean value ,if 'true', negates the component limit + exported." + + ::= { frwkCompLimitsEntry 4 } + + frwkCompLimitsType OBJECT-TYPE + SYNTAX INTEGER { + priSpaceLimited(1), + attrValueSupLimited(2), + attrEnumSupLimited(3), + attrLengthLimited(4), + prcLimitedNotify(5) + } + STATUS current + DESCRIPTION + "A value describing an implementation limitation for the + device related to the PRC or PRC attribute identified by + the frwkCompLimitsComponent and the frwkCompLimitsAttrPos + attributes. + + Values for this object are one of the following: + + priSpaceLimited(1) - No more instances than that specified + by the guidance value may be installed in the given class. + The component identified MUST be a valid PRC. The SubType + used MUST be valueOnly(9). + + attrValueSupLimited(2) - Limited values are acceptable for + the identified component. The component identified MUST be a + valid PRC attribute. The guidance OCTET STRING will be + decoded according to the attribute type. + + attrEnumSupLimited(3) - Limited enumeration values are legal + for the identified component. The attribute identified MUST + be a valid enum type. + + attrLengthLimited(4) - The length of the specified + value for the identified component is limited. The component + identified MUST be a valid PRC attribute of base-type OCTET + STRING. + + prcLimitedNotify (5) - The component is currently limited + for use by request or report messages prohibiting decision + installation. The component identified must be a valid PRC." + + + + ::= { frwkCompLimitsEntry 5 } + + frwkCompLimitsSubType OBJECT-TYPE + SYNTAX INTEGER { + none(1), + lengthMin(2), + lengthMax(3), + rangeMin(4), + rangeMax(5), + enumMin(6), + enumMax(7), + enumOnly(8), + valueOnly(9), + bitMask(10) + } + STATUS current + DESCRIPTION + "This object indicates the type of guidance related + to the noted limitation (as indicated by the + frwkCompLimitsType attribute) that is provided + in the frwkCompLimitsGuidance attribute. + + A value of 'none(1)' means that no additional + guidance is provided for the noted limitation type. + + A value of 'lengthMin(2)' means that the guidance + attribute provides data related to the minimum + acceptable length for the value of the identified + component. A corresponding class instance + specifying the 'lengthMax(3)' value is required + in conjunction with this sub-type. + + A value of 'lengthMax(3)' means that the guidance + attribute provides data related to the maximum + acceptable length for the value of the identified + component. A corresponding class instance + specifying the 'lengthMin(2)' value is required + in conjunction with this sub-type. + + A value of 'rangeMin(4)' means that the guidance + attribute provides data related to the lower bound + of the range for the value of the identified + component. A corresponding class instance + specifying the 'rangeMax(5)' value is required + in conjunction with this sub-type. + + A value of 'rangeMax(5)' means that the guidance + attribute provides data related to the upper bound + + + + of the range for the value of the identified + component. A corresponding class instance + specifying the 'rangeMin(4)' value is required + in conjunction with this sub-type. + + A value of 'enumMin(6)' means that the guidance + attribute provides data related to the lowest + enumeration acceptable for the value of the + identified component. A corresponding + class instance specifying the 'enumMax(7)' + value is required in conjunction with this sub-type. + + A value of 'enumMax(7)' means that the guidance + attribute provides data related to the largest + enumeration acceptable for the value of the + identified component. A corresponding + class instance specifying the 'enumMin(6)' + value is required in conjunction with this sub-type. + + A value of 'enumOnly(8)' means that the guidance + attribute provides data related to a single + enumeration acceptable for the value of the + identified component. + + A value of 'valueOnly(9)' means that the guidance + attribute provides data related to a single + value that is acceptable for the identified + component. + + A value of 'bitMask(10)' means that the guidance + attribute is a bit mask such that all the combinations of + bits set in the bitmask are acceptable values for the + identified component which should be an attribute of type + + 'BITS'. + + For example, an implementation of the frwkIpFilter class may + be limited in several ways, such as address mask, protocol + and Layer 4 port options. These limitations could be + exported using this PRC with the following instances: + + Component Type Sub-Type Guidance + ------------------------------------------------------------ + DstPrefixLength attrValueSupLimited valueOnly 24 + SrcPrefixLength attrValueSupLimited valueOnly 24 + Protocol attrValueSupLimited rangeMin 10 + Protocol attrValueSupLimited rangeMax 20 + + + + + The above entries describe a number of limitations that + may be in effect for the frwkIpFilter class on a given + device. The limitations include restrictions on acceptable + values for certain attributes. + + Also, an implementation of a PRC may be limited in the ways + it can be accessed. For instance, for a fictitious PRC + dscpMapEntry, which has a PIB-ACCESS of 'install-notify': + + Component Type SubType Guidance + ------------------------------------------------------------ + dscpMapEntry prcLimitedNotify none zero-length string." + + ::= { frwkCompLimitsEntry 6 } + + frwkCompLimitsGuidance OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A value used to convey additional information related + to the implementation limitation. Note that a guidance + value will not necessarily be provided for all exported + limitations. If a guidance value is not provided, the + value must be a zero-length string. + + The format of the guidance value, if one is present as + indicated by the frwkCompLimitsSubType attribute, + is described by the following table. Note that the + format of guidance value is dictated by the base-type of + the component whose limitation is being exported, + interpreted in the context of the frwkCompLimitsType and + frwkCompLimitsSubType values. Any other restrictions + (such as size/range/enumerated value) on the guidance + value MUST be complied with according to the definition + of the component for which guidance is being specified. + + Note that numbers are encoded in network byte order. + + Base Type Value + --------- ----- + Unsigned32/Integer32/INTEGER 32-bit value. + Unsigned64/Integer64 64-bit Value. + OCTET STRING octets of data. + OID 32-bit OID components. + BITS Binary octets of length + same as Component specified." + + ::= { frwkCompLimitsEntry 7 } + + + + -- + -- Complete Reference specification table + -- + + frwkReferenceTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkReferenceEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "Each instance of this PRC specifies a reference to a PRI + in a specific PIB context (handle) for a specific client- + type. This table gives the PDP the ability to set up + policies that span installed contexts and the PEP the + ability to reference instances in another, perhaps + configured context. The PEP must send a + 'attrReferenceUnknown' COPS-PR error to the PDP if it + encounters an invalid reference. " + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, error + codes section 4.5." + + ::= { frwkBasePibClasses 5 } + + frwkReferenceEntry OBJECT-TYPE + SYNTAX FrwkReferenceEntry + STATUS current + DESCRIPTION + "Entry specification for the frwkReferenceTable." + + PIB-INDEX { frwkReferencePrid } + UNIQUENESS { } + + ::= { frwkReferenceTable 1 } + + FrwkReferenceEntry ::= SEQUENCE { + frwkReferencePrid InstanceId, + frwkReferenceClientType ClientType, + frwkReferenceClientHandle ClientHandle, + frwkReferenceInstance Prid + } + + frwkReferencePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkReference class." + + + + + ::= { frwkReferenceEntry 1 } + + frwkReferenceClientType OBJECT-TYPE + SYNTAX ClientType + STATUS current + DESCRIPTION + "Is unused if set to zero else specifies a client-type for + which the reference is to be interpreted. This non-zero + client-type must be activated explicitly via a separate + COPS client-open else this attribute is not valid." + + ::= { frwkReferenceEntry 2 } + + frwkReferenceClientHandle OBJECT-TYPE + SYNTAX ClientHandle + STATUS current + DESCRIPTION + "Must be set to specify a valid client-handle in the scope + of the client-type specified." + + ::= { frwkReferenceEntry 3 } + + frwkReferenceInstance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References a PRI in the context identified by + frwkReferenceClientHandle for client-type identified by + frwkReferenceClientType." + + ::= { frwkReferenceEntry 4 } + + -- + -- Error specification table + -- + + frwkErrorTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkErrorEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this PRC specifies a class specific + error object. Instances of this PRC are transient, i.e., + instances received in a COPS decision message must not be + maintained by the PEP in its copy of the PIB instances. This + PRC allows a PDP to send error information to the PEP if the + PDP cannot process updates to a Request successfully." + + + + + ::= { frwkBasePibClasses 6 } + + frwkErrorEntry OBJECT-TYPE + SYNTAX FrwkErrorEntry + STATUS current + DESCRIPTION + "Entry specification for the frwkErrorTable." + + PIB-INDEX { frwkErrorPrid } + UNIQUENESS { + frwkErrorCode, + frwkErrorSubCode, + frwkErrorPrc, + frwkErrorInstance + } + + ::= { frwkErrorTable 1 } + + FrwkErrorEntry ::= SEQUENCE { + frwkErrorPrid InstanceId, + frwkErrorCode Unsigned32, + frwkErrorSubCode Unsigned32, + frwkErrorPrc PrcIdentifierOid, + frwkErrorInstance InstanceId + } + + frwkErrorPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the frwkError class." + + ::= { frwkErrorEntry 1 } + + frwkErrorCode OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "Error code defined in COPS-PR CPERR object." + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084." + + ::= { frwkErrorEntry 2 } + + frwkErrorSubCode OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + + + + DESCRIPTION + "The class-specific error object is used to communicate + errors relating to specific PRCs." + + ::= { frwkErrorEntry 3 } + + frwkErrorPrc OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The PRC due to which the error specified by codes + (frwkErrorCode , frwkErrorSubCode) occurred." + + ::= { frwkErrorEntry 4 } + + frwkErrorInstance OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "The PRI of the identified PRC (frwkErrorPrc) due to which + the error specified by codes (frwkErrorCode , + frwkErrorSubCode) occurred. Must be set to zero if unused." + + ::= { frwkErrorEntry 5 } + + -- + -- The device capabilities and role combo classes group + -- + + frwkDeviceCapClasses + OBJECT IDENTIFIER ::= { frameworkPib 2 } + -- + -- Capability Set Table + -- + + frwkCapabilitySetTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkCapabilitySetEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + + "This PRC describes the capability sets that exist on the + interfaces on the device. The capability set is given a + unique name that identifies a set. These capability set + names are used by the PDP to determine policy information to + be associated with interfaces that possess similar sets of + capabilities." + + + + + ::= { frwkDeviceCapClasses 1 } + + frwkCapabilitySetEntry OBJECT-TYPE + SYNTAX FrwkCapabilitySetEntry + STATUS current + DESCRIPTION + "An instance of this PRC describes a particular set of + capabilities and associates a unique name with the set." + + PIB-INDEX { frwkCapabilitySetPrid } + UNIQUENESS { frwkCapabilitySetName, + frwkCapabilitySetCapability } + + ::= { frwkCapabilitySetTable 1 } + + FrwkCapabilitySetEntry ::= SEQUENCE { + frwkCapabilitySetPrid InstanceId, + frwkCapabilitySetName SnmpAdminString, + frwkCapabilitySetCapability Prid + } + + frwkCapabilitySetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies a + instance of the class." + + ::= { frwkCapabilitySetEntry 1 } + + frwkCapabilitySetName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..255)) + STATUS current + DESCRIPTION + "The name for the capability set. This name is the unique + identifier of a set of capabilities. This attribute must not + be assigned a zero-length string." + + ::= { frwkCapabilitySetEntry 2 } + + frwkCapabilitySetCapability OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + + "The complete PRC OID and instance identifier specifying the + capability PRC instance for the interface. This attribute + references a specific instance of a capability table. The + + + + capability table whose instance is referenced must be + defined in the client type specific PIB that this PIB is + used with. The referenced capability instance becomes a part + of the set of capabilities associated with the specified + frwkCapabilitySetName." + + ::= { frwkCapabilitySetEntry 3 } + + -- + -- Interface and Role Combination Tables + -- + + frwkRoleComboTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkRoleComboEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This is an abstract PRC that may be extended or referenced + to enumerate the role combinations, capability set names + assigned to any interface on a PEP. The identification of + the interface is to be defined by its extensions or + referencing PRCs." + + ::= { frwkDeviceCapClasses 2 } + + frwkRoleComboEntry OBJECT-TYPE + SYNTAX FrwkRoleComboEntry + STATUS current + DESCRIPTION + "An instance of this PRC describes one association of an + interface to a role-combination and capability set name . + Note that an interface can have multiple associations. This + constraint is controlled by the extending or referencing + PRC's uniqueness clause." + + PIB-INDEX { frwkRoleComboPrid } + UNIQUENESS { } + + ::= { frwkRoleComboTable 1 } + + FrwkRoleComboEntry ::= SEQUENCE { + frwkRoleComboPrid InstanceId, + frwkRoleComboRoles RoleCombination, + frwkRoleComboCapSetName SnmpAdminString + } + + frwkRoleComboPrid OBJECT-TYPE + SYNTAX InstanceId + + + + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + + ::= { frwkRoleComboEntry 1 } + + frwkRoleComboRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination assigned to a specific interface." + + ::= { frwkRoleComboEntry 2 } + + frwkRoleComboCapSetName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..255)) + STATUS current + DESCRIPTION + "The name of the capability set associated with + the Role Combination specified in frwkRoleComboRoles. If + this is a zero length string it implies the PEP is not + exporting any capability set information for this + RoleCombination. The PDP must then use the RoleCombinations + provided as the only means of assigning policies + If a non-zero length string is specified, the name must + exist in frwkCapabilitySetTable." + + ::= { frwkRoleComboEntry 3 } + + -- + -- Interface, Role Combination association via IfIndex + -- + + frwkIfRoleComboTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkIfRoleComboEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This PRC enumerates the interface to role combination and + frwkRoleComboCapSetName mapping for all policy managed + interfaces of a device. Policy for an interface depends not + only on the capability set of an interface but also on its + roles. This table specifies all the tuples + currently on the device" + + ::= { frwkDeviceCapClasses 3 } + + + + frwkIfRoleComboEntry OBJECT-TYPE + SYNTAX FrwkIfRoleComboEntry + STATUS current + DESCRIPTION + "An instance of this PRC describes the association of + a interface to an capability set name and a role + combination. + Note that a capability set name can have multiple role + combinations assigned to it, but an IfIndex can have only + one role combination associated." + + EXTENDS { frwkRoleComboEntry } + UNIQUENESS { frwkIfRoleComboIfIndex, + frwkRoleComboCapSetName } + + ::= { frwkIfRoleComboTable 1 } + + FrwkIfRoleComboEntry ::= SEQUENCE { + frwkIfRoleComboIfIndex InterfaceIndex + } + + frwkIfRoleComboIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + STATUS current + DESCRIPTION + "The value of this attribute is the ifIndex which is + associated with the specified RoleCombination and interface + capability set name." + + ::= { frwkIfRoleComboEntry 1 } + + -- + -- The Classification classes group + -- + + frwkClassifierClasses + OBJECT IDENTIFIER ::= { frameworkPib 3 } + -- + -- The Base Filter Table + -- + + frwkBaseFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkBaseFilterEntry + PIB-ACCESS install + STATUS current + + + + + + + DESCRIPTION + "The Base Filter class. A packet has to match all + fields in an Filter. Wildcards may be specified for those + fields that are not relevant." + + ::= { frwkClassifierClasses 1 } + + frwkBaseFilterEntry OBJECT-TYPE + SYNTAX FrwkBaseFilterEntry + STATUS current + DESCRIPTION + "An instance of the frwkBaseFilter class." + + PIB-INDEX { frwkBaseFilterPrid } + + ::= { frwkBaseFilterTable 1 } + + FrwkBaseFilterEntry ::= SEQUENCE { + frwkBaseFilterPrid InstanceId, + frwkBaseFilterNegation TruthValue + } + + frwkBaseFilterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this Filter among all + the Filters." + + ::= { frwkBaseFilterEntry 1 } + + frwkBaseFilterNegation OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "This attribute behaves like a logical NOT for the filter. + If the packet matches this filter and the value of this + attribute is 'true', the action associated with this filter + is not applied to the packet. If the value of this + attribute is 'false', then the action is applied to the + packet." + + ::= { frwkBaseFilterEntry 2 } + + -- + -- The IP Filter Table + -- + + + + + frwkIpFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkIpFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Filter definitions. A packet has to match all fields in a + filter. Wildcards may be specified for those fields that + are not relevant." + + INSTALL-ERRORS { + invalidDstL4PortData(1), + invalidSrcL4PortData(2) + } + ::= { frwkClassifierClasses 2 } + + frwkIpFilterEntry OBJECT-TYPE + SYNTAX FrwkIpFilterEntry + STATUS current + DESCRIPTION + "An instance of the frwkIpFilter class." + + EXTENDS { frwkBaseFilterEntry } + UNIQUENESS { frwkBaseFilterNegation, + frwkIpFilterAddrType, + frwkIpFilterDstAddr, + frwkIpFilterDstPrefixLength, + frwkIpFilterSrcAddr, + frwkIpFilterSrcPrefixLength, + frwkIpFilterDscp, + frwkIpFilterFlowId, + frwkIpFilterProtocol, + frwkIpFilterDstL4PortMin, + frwkIpFilterDstL4PortMax, + frwkIpFilterSrcL4PortMin, + frwkIpFilterSrcL4PortMax } + + ::= { frwkIpFilterTable 1 } + + FrwkIpFilterEntry ::= SEQUENCE { + frwkIpFilterAddrType InetAddressType, + frwkIpFilterDstAddr InetAddress, + frwkIpFilterDstPrefixLength InetAddressPrefixLength, + frwkIpFilterSrcAddr InetAddress, + frwkIpFilterSrcPrefixLength InetAddressPrefixLength, + frwkIpFilterDscp DscpOrAny, + frwkIpFilterFlowId Integer32, + frwkIpFilterProtocol Unsigned32, + frwkIpFilterDstL4PortMin InetPortNumber, + + + + frwkIpFilterDstL4PortMax InetPortNumber, + frwkIpFilterSrcL4PortMin InetPortNumber, + frwkIpFilterSrcL4PortMax InetPortNumber + } + + frwkIpFilterAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value to specify the type of + the packet's IP address. + + While other types of addresses are defined in the + InetAddressType textual convention, an IP filter can only + use IPv4 and IPv6 addresses directly to classify traffic. + All other InetAddressTypes require mapping to the + corresponding Ipv4 or IPv6 address before being used to + classify traffic. Therefore, this object as such is not + limited to IPv4 and IPv6 addresses, i.e., it can be assigned + any of the valid values defined in the InetAddressType TC, + but the mapping of the address values to IPv4 or IPv6 + addresses for the address attributes (frwkIpFilterDstAddr + and frwkIpFilterSrcAddr) must be done by the PEP. For + example when dns (16) is used, the PEP must resolve + the address to IPv4 or IPv6 at install time." + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + + ::= { frwkIpFilterEntry 1 } + + frwkIpFilterDstAddr OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's + destination IP address. If the address type is 'ipv4', + 'ipv6', 'ipv4z' or 'ipv6z' then, the attribute + frwkIpFilterDstPrefixLength indicates the number of bits + that are relevant. " + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + + ::= { frwkIpFilterEntry 2 } + + + + + frwkIpFilterDstPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. This attribute is interpreted only if the + InetAddressType is 'ipv4', 'ipv4z', 'ipv6' or 'ipv6z'. + Masks are constructed by setting bits in sequence from the + most-significant bit downwards for + frwkIpFilterDstPrefixLength bits length. All other bits in + the mask, up to the number needed to fill the length of + the address frwkIpFilterDstAddr are cleared to zero. A zero + bit in the mask then means that the corresponding bit in + the address always matches. + + In IPv4 addresses, a length of 0 indicates a match of any + address; a length of 32 indicates a match of a single host + address, and a length between 0 and 32 indicates the use of + a CIDR Prefix. IPv6 is similar, except that prefix lengths + range from 0..128." + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + DEFVAL { 0 } + + ::= { frwkIpFilterEntry 3 } + + frwkIpFilterSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's source IP + address. If the address type is 'ipv4', 'ipv6', 'ipv4z' or + 'ipv6z' then, the attribute frwkIpFilterSrcPrefixLength + indicates the number of bits that are relevant." + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + + ::= { frwkIpFilterEntry 4 } + + frwkIpFilterSrcPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + UNITS "bits" + STATUS current + DESCRIPTION + "The length of a mask for the matching of the source IP + address. This attribute is interpreted only if the + + + + InetAddressType is 'ipv4', 'ipv4z', 'ipv6' or 'ipv6z'. + Masks are constructed by setting bits in sequence from the + most-significant bit downwards for + frwkIpFilterSrcPrefixLength bits length. All other bits in + the mask, up to the number needed to fill the length of + the address frwkIpFilterSrcAddr are cleared to zero. A + zero bit in the mask then means that the corresponding bit + in the address always matches. + + In IPv4 addresses, a length of 0 indicates a match of any + address; a length of 32 indicates a match of a single host + address, and a length between 0 and 32 indicates the use of + a CIDR Prefix. IPv6 is similar, except that prefix lengths + range from 0..128." + REFERENCE + "Textual Conventions for Internet Network Addresses. + RFC 3291." + DEFVAL { 0 } + + ::= { frwkIpFilterEntry 5 } + + frwkIpFilterDscp OBJECT-TYPE + SYNTAX DscpOrAny + STATUS current + DESCRIPTION + "The value that the DSCP in the packet can have and + match this filter. A value of -1 indicates that a specific + DSCP value has not been defined and thus all DSCP values + are considered a match." + REFERENCE + "Management Information Base for the Differentiated Services + Architecture. RFC 3289." + DEFVAL { -1 } + + ::= { frwkIpFilterEntry 6 } + + frwkIpFilterFlowId OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..1048575) + STATUS current + DESCRIPTION + "The flow label or flow identifier in an IPv6 header + that may be used to discriminate traffic flows. + The value of -1 for this attribute MUST imply that + any flow label value in the IPv6 header will match, + resulting in the flow label field of the IPv6 header + being ignored for matching this filter entry." + + ::= { frwkIpFilterEntry 7 } + + + + + frwkIpFilterProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + STATUS current + DESCRIPTION + "The layer-4 protocol Id to match against the IPv4 protocol + number or the IPv6 Next-Header number in the packet. A value + of 255 means match all. Note the protocol number of 255 is + reserved by IANA, and Next-Header number of 0 is used in + IPv6." + DEFVAL { 255 } + + ::= { frwkIpFilterEntry 8 } + + frwkIpFilterDstL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have and match this filter. This value must + be equal to or lesser that the value specified for this + filter in frwkIpFilterDstL4PortMax. + + COPS-PR error code 'attrValueInvalid' must be returned if + the frwkIpFilterSrcL4PortMin is greater than + frwkIpFilterSrcL4PortMax" + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, error + codes section 4.5." + DEFVAL { 0 } + + ::= { frwkIpFilterEntry 9 } + + frwkIpFilterDstL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have and match this filter. This value must + be equal to or greater that the value specified for this + filter in frwkIpFilterDstL4PortMin. + + COPS-PR error code 'attrValueInvalid' must be returned if + the frwkIpFilterDstL4PortMax is less than + frwkIpFilterDstL4PortMin" + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, error + codes section 4.5." + + + + DEFVAL { 65535 } + + ::= { frwkIpFilterEntry 10 } + + frwkIpFilterSrcL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have and match this filter. This value must + be equal to or lesser that the value specified for this + filter in frwkIpFilterSrcL4PortMax. + + COPS-PR error code 'attrValueInvalid' must be returned if + the frwkIpFilterSrcL4PortMin is greated than + frwkIpFilterSrcL4PortMax" + REFERENCE + "COPS Usage for Policy Provisioning. RFC 3084, error + codes section 4.5." + DEFVAL { 0 } + + ::= { frwkIpFilterEntry 11 } + + frwkIpFilterSrcL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 source port + number can have and match this filter. This value must be + equal to or greater that the value specified for this filter + in frwkIpFilterSrcL4PortMin. + + COPS-PR error code 'attrValueInvalid' must be returned if + the frwkIpFilterSrcL4PortMax is less than + frwkIpFilterSrcL4PortMin" + REFERENCE + "COPS Usage for Policy Provisioning. RFC error codes + section 4.5." + DEFVAL { 65535 } + + ::= { frwkIpFilterEntry 12 } + + -- + -- The IEEE 802 Filter Table + -- + + frwk802FilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF Frwk802FilterEntry + + + + PIB-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based filter definitions. A class that contains + attributes of IEEE 802 (e.g., 802.3) traffic that form + filters that are used to perform traffic classification." + REFERENCE + "IEEE Standards for Local and Metropolitan Area Networks. + Overview and Architecture, ANSI/IEEE Std 802, 1990." + ::= { frwkClassifierClasses 3 } + + frwk802FilterEntry OBJECT-TYPE + SYNTAX Frwk802FilterEntry + STATUS current + DESCRIPTION + "IEEE 802-based filter definitions. An entry specifies + (potentially) several distinct matching components. Each + component is tested against the data in a frame + individually. An overall match occurs when all of the + individual components match the data they are compared + against in the frame being processed. A failure of any + one test causes the overall match to fail. + + Wildcards may be specified for those fields that are not + relevant." + + EXTENDS { frwkBaseFilterEntry } + UNIQUENESS { frwkBaseFilterNegation, + frwk802FilterDstAddr, + frwk802FilterDstAddrMask, + frwk802FilterSrcAddr, + frwk802FilterSrcAddrMask, + frwk802FilterVlanId, + frwk802FilterVlanTagRequired, + frwk802FilterEtherType, + frwk802FilterUserPriority } + + ::= { frwk802FilterTable 1 } + + Frwk802FilterEntry ::= SEQUENCE { + frwk802FilterDstAddr PhysAddress, + frwk802FilterDstAddrMask PhysAddress, + frwk802FilterSrcAddr PhysAddress, + frwk802FilterSrcAddrMask PhysAddress, + frwk802FilterVlanId Integer32, + frwk802FilterVlanTagRequired INTEGER, + frwk802FilterEtherType Integer32, + frwk802FilterUserPriority BITS + + + + } + + frwk802FilterDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The 802 address against which the 802 DA of incoming + traffic streams will be compared. Frames whose 802 DA + matches the physical address specified by this object, + taking into account address wildcarding as specified by the + frwk802FilterDstAddrMask object, are potentially subject to + the processing guidelines that are associated with this + entry through the related action class." + REFERENCE + "Textual Conventions for SMIv2, RFC 2579." + + ::= { frwk802FilterEntry 1 } + + frwk802FilterDstAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 destination address + that should be considered when performing a 802 DA + comparison against the address specified in the + frwk802FilterDstAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 DA in received frames to derive the + value to be compared against the frwk802FilterDstAddr + address. A zero bit in the mask thus means that the + corresponding bit in the address always matches. The + frwk802FilterDstAddr value must also be masked using this + value prior to any comparisons. + + The length of this object in octets must equal the length in + octets of the frwk802FilterDstAddr. Note that a mask with no + bits set (i.e., all zeroes) effectively wildcards the + frwk802FilterDstAddr object." + + ::= { frwk802FilterEntry 2 } + + frwk802FilterSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The 802 MAC address against which the 802 MAC SA of + incoming traffic streams will be compared. Frames whose 802 + + + + MAC SA matches the physical address specified by this + object, taking into account address wildcarding as specified + by the frwk802FilterSrcAddrMask object, are potentially + subject to the processing guidelines that are associated + with this entry through the related action class." + + ::= { frwk802FilterEntry 3 } + + frwk802FilterSrcAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 MAC source address + that should be considered when performing a 802 MAC SA + comparison against the address specified in the + frwk802FilterSrcAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 MAC SA in received frames to derive the + value to be compared against the frwk802FilterSrcAddr + address. A zero bit in the mask thus means that the + corresponding bit in the address always matches. The + frwk802FilterSrcAddr value must also be masked using this + value prior to any comparisons. + + The length of this object in octets must equal the length in + octets of the frwk802FilterSrcAddr. Note that a mask with no + bits set (i.e., all zeroes) effectively wildcards the + frwk802FilterSrcAddr object." + + ::= { frwk802FilterEntry 4 } + + frwk802FilterVlanId OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..4094) + STATUS current + DESCRIPTION + "The VLAN ID (VID) that uniquely identifies a VLAN + within the device. This VLAN may be known or unknown + (i.e., traffic associated with this VID has not yet + been seen by the device) at the time this entry + is instantiated. + + Setting the frwk802FilterVlanId object to -1 indicates that + VLAN data should not be considered during traffic + classification." + + ::= { frwk802FilterEntry 5 } + + + + + frwk802FilterVlanTagRequired OBJECT-TYPE + SYNTAX INTEGER { + taggedOnly(1), + priorityTaggedPlus(2), + untaggedOnly(3), + ignoreTag(4) + } + STATUS current + DESCRIPTION + "This object indicates whether the presence of an + IEEE 802.1Q VLAN tag in data link layer frames must + be considered when determining if a given frame + matches this 802 filter entry. + + A value of 'taggedOnly(1)' means that only frames + containing a VLAN tag with a non-Null VID (i.e., a + VID in the range 1..4094) will be considered a match. + + A value of 'priorityTaggedPlus(2)' means that only + frames containing a VLAN tag, regardless of the value + of the VID, will be considered a match. + + A value of 'untaggedOnly(3)' indicates that only + untagged frames will match this filter component. + + The presence of a VLAN tag is not taken into + consideration in terms of a match if the value is + 'ignoreTag(4)'." + + ::= { frwk802FilterEntry 6 } + + frwk802FilterEtherType OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..'ffff'h) + STATUS current + DESCRIPTION + "This object specifies the value that will be compared + against the value contained in the EtherType field of an + IEEE 802 frame. Example settings would include 'IP' + (0x0800), 'ARP' (0x0806) and 'IPX' (0x8137). + + Setting the frwk802FilterEtherTypeMin object to -1 indicates + that EtherType data should not be considered during traffic + classification. + + Note that the position of the EtherType field depends on + the underlying frame format. For Ethernet-II encapsulation, + the EtherType field follows the 802 MAC source address. For + 802.2 LLC/SNAP encapsulation, the EtherType value follows + + + + the Organization Code field in the 802.2 SNAP header. The + value that is tested with regard to this filter component + therefore depends on the data link layer frame format being + used. If this 802 filter component is active when there is + no EtherType field in a frame (e.g., 802.2 LLC), a match is + implied." + + ::= { frwk802FilterEntry 7 } + +frwk802FilterUserPriority OBJECT-TYPE + SYNTAX BITS { + matchPriority0(0), + matchPriority1(1), + matchPriority2(2), + matchPriority3(3), + matchPriority4(4), + matchPriority5(5), + matchPriority6(6), + matchPriority7(7) + } + STATUS current + DESCRIPTION + "The set of values, representing the potential range + of user priority values, against which the value contained + in the user priority field of a tagged 802.1 frame is + compared. A test for equality is performed when determining + if a match exists between the data in a data link layer + frame and the value of this 802 filter component. Multiple + values may be set at one time such that potentially several + different user priority values may match this 802 filter + component. + + Setting all of the bits that are associated with this + object causes all user priority values to match this + attribute. This essentially makes any comparisons + with regard to user priority values unnecessary. Untagged + frames are treated as an implicit match." + + ::= { frwk802FilterEntry 8 } + +-- +-- The Internal label filter extension +-- + +frwkILabelFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkILabelFilterEntry + PIB-ACCESS install + STATUS current + + + + DESCRIPTION + "Internal label filter Table. This PRC is used to achieve + classification based on the internal flow label set by the + PEP possibly after ingress classification to avoid + re-classification at the egress interface on the same PEP." + + ::= { frwkClassifierClasses 4 } + +frwkILabelFilterEntry OBJECT-TYPE + SYNTAX FrwkILabelFilterEntry + STATUS current + DESCRIPTION + "Internal label filter entry definition." + + EXTENDS { frwkBaseFilterEntry } + UNIQUENESS { frwkBaseFilterNegation, + frwkILabelFilterILabel } + + ::= { frwkILabelFilterTable 1 } + +FrwkILabelFilterEntry ::= SEQUENCE { + frwkILabelFilterILabel OCTET STRING +} + +frwkILabelFilterILabel OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The Label that this flow uses for differentiating traffic + flows. The flow labeling is meant for network device + internal usage. A value of zero length string matches all + internal labels." + ::= { frwkILabelFilterEntry 1 } + +-- +-- The Marker classes group +-- + +frwkMarkerClasses + OBJECT IDENTIFIER ::= { frameworkPib 4 } +-- +-- The 802 Marker Table +-- + +frwk802MarkerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Frwk802MarkerEntry + PIB-ACCESS install + STATUS current + + + + DESCRIPTION + "The 802 Marker class. An 802 packet can be marked with the + specified VLAN id, priority level." + + ::= { frwkMarkerClasses 1 } + +frwk802MarkerEntry OBJECT-TYPE + SYNTAX Frwk802MarkerEntry + STATUS current + DESCRIPTION + "frwk802Marker entry definition." + + PIB-INDEX { frwk802MarkerPrid } + UNIQUENESS { frwk802MarkerVlanId, + frwk802MarkerPriority } + + ::= { frwk802MarkerTable 1 } + +Frwk802MarkerEntry::= SEQUENCE { + frwk802MarkerPrid InstanceId, + frwk802MarkerVlanId Unsigned32, + frwk802MarkerPriority Unsigned32 +} + +frwk802MarkerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this 802 Marker." + + ::= { frwk802MarkerEntry 1 } + +frwk802MarkerVlanId OBJECT-TYPE + SYNTAX Unsigned32 (1..4094) + STATUS current + DESCRIPTION + "The VLAN ID (VID) that uniquely identifies a VLAN within + the device." + + ::= { frwk802MarkerEntry 2 } + +frwk802MarkerPriority OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + STATUS current + DESCRIPTION + "The user priority field of a tagged 802.1 frame." + + ::= { frwk802MarkerEntry 3 } + + + + +-- +-- The Internal Label Marker Table +-- + +frwkILabelMarkerTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkILabelMarkerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The Internal Label Marker class. A flow in a PEP can be + marked with an internal label using this PRC." + + ::= { frwkMarkerClasses 2 } + +frwkILabelMarkerEntry OBJECT-TYPE + SYNTAX FrwkILabelMarkerEntry + STATUS current + DESCRIPTION + "frwkILabelkMarker entry definition." + + PIB-INDEX { frwkILabelMarkerPrid } + UNIQUENESS { frwkILabelMarkerILabel } + + ::= { frwkILabelMarkerTable 1 } + +FrwkILabelMarkerEntry::= SEQUENCE { + frwkILabelMarkerPrid InstanceId, + frwkILabelMarkerILabel OCTET STRING +} + +frwkILabelMarkerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this Label Marker." + + ::= { frwkILabelMarkerEntry 1 } + +frwkILabelMarkerILabel OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This internal label is implementation specific and may be + used for other policy related functions like flow + accounting purposes and/or other data path treatments." + + ::= { frwkILabelMarkerEntry 2 } + + + + +-- +-- Conformance Section +-- + +frwkBasePibConformance + OBJECT IDENTIFIER ::= { frameworkPib 5 } + +frwkBasePibCompliances + OBJECT IDENTIFIER ::= { frwkBasePibConformance 1 } + +frwkBasePibGroups + OBJECT IDENTIFIER ::= { frwkBasePibConformance 2 } + +frwkBasePibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + Framework PIB." + + MODULE -- this module + MANDATORY-GROUPS { frwkPrcSupportGroup, + frwkPibIncarnationGroup, + frwkDeviceIdGroup, + frwkCompLimitsGroup, + frwkCapabilitySetGroup, + frwkRoleComboGroup, + frwkIfRoleComboGroup } + + OBJECT frwkPibIncarnationLongevity + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if policy expiration is to + be supported." + + OBJECT frwkPibIncarnationTtl + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if policy expiration is to + be supported." + + OBJECT frwkPibIncarnationInCtxtSet + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if configuration contexts + and outsourcing contexts are both to be supported." + + OBJECT frwkPibIncarnationFullState + + + + PIB-MIN-ACCESS notify + DESCRIPTION + "Install support is required if incremental updates to + request states is to be supported." + + GROUP frwkReferenceGroup + DESCRIPTION + "The frwkReferenceGroup is mandatory if referencing + across PIB contexts for specific client-types is to be + supported." + + GROUP frwkErrorGroup + DESCRIPTION + "The frwkErrorGroup is mandatory sending errors in + decisions is to be supported." + + GROUP frwkBaseFilterGroup + DESCRIPTION + "The frwkBaseFilterGroup is mandatory if filtering + based on traffic components is to be supported." + + GROUP frwkIpFilterGroup + DESCRIPTION + "The frwkIpFilterGroup is mandatory if filtering + based on IP traffic components is to be supported." + + GROUP frwk802FilterGroup + DESCRIPTION + "The frwk802FilterGroup is mandatory if filtering + based on 802 traffic criteria is to be supported." + + GROUP frwkILabelFilterGroup + DESCRIPTION + "The frwkILabelFilterGroup is mandatory if filtering + based on PEP internal label is to be supported." + + GROUP frwk802MarkerGroup + DESCRIPTION + "The frwk802MarkerGroup is mandatory if marking a packet + with 802 traffic criteria is to be supported." + + GROUP frwkILabelMarkerGroup + DESCRIPTION + "The frwkILabelMarkerGroup is mandatory if marking a + flow with internal labels is to be supported." + + ::= { frwkBasePibCompliances 1 } + + + + +frwkPrcSupportGroup OBJECT-GROUP + OBJECTS { + frwkPrcSupportPrid, + frwkPrcSupportSupportedPrc, + frwkPrcSupportSupportedAttrs } + STATUS current + DESCRIPTION + "Objects from the frwkPrcSupportTable." + + ::= { frwkBasePibGroups 1 } + +frwkPibIncarnationGroup OBJECT-GROUP + OBJECTS { + frwkPibIncarnationPrid, + frwkPibIncarnationName, + frwkPibIncarnationId, + frwkPibIncarnationLongevity, + frwkPibIncarnationTtl, + frwkPibIncarnationInCtxtSet, + frwkPibIncarnationActive, + frwkPibIncarnationFullState + } + STATUS current + DESCRIPTION + "Objects from the frwkDevicePibIncarnationTable." + + ::= { frwkBasePibGroups 2 } + +frwkDeviceIdGroup OBJECT-GROUP + OBJECTS { + frwkDeviceIdPrid, + frwkDeviceIdDescr, + frwkDeviceIdMaxMsg, + frwkDeviceIdMaxContexts } + STATUS current + DESCRIPTION + "Objects from the frwkDeviceIdTable." + + ::= { frwkBasePibGroups 3 } + +frwkCompLimitsGroup OBJECT-GROUP + OBJECTS { + frwkCompLimitsPrid, + frwkCompLimitsComponent, + frwkCompLimitsAttrPos, + frwkCompLimitsNegation, + frwkCompLimitsType, + frwkCompLimitsSubType, + + + + frwkCompLimitsGuidance } + STATUS current + DESCRIPTION + "Objects from the frwkCompLimitsTable." + + ::= { frwkBasePibGroups 4 } + +frwkReferenceGroup OBJECT-GROUP + OBJECTS { + frwkReferencePrid, + frwkReferenceClientType, + frwkReferenceClientHandle, + frwkReferenceInstance } + STATUS current + DESCRIPTION + "Objects from the frwkReferenceTable." + + ::= { frwkBasePibGroups 5 } + +frwkErrorGroup OBJECT-GROUP + OBJECTS { + frwkErrorPrid, + frwkErrorCode, + frwkErrorSubCode, + frwkErrorPrc, + frwkErrorInstance } + STATUS current + DESCRIPTION + "Objects from the frwkErrorTable." + + ::= { frwkBasePibGroups 6 } + +frwkCapabilitySetGroup OBJECT-GROUP + OBJECTS { + frwkCapabilitySetPrid, + frwkCapabilitySetName, + frwkCapabilitySetCapability } + STATUS current + DESCRIPTION + "Objects from the frwkCapabilitySetTable." + + ::= { frwkBasePibGroups 7 } + +frwkRoleComboGroup OBJECT-GROUP + OBJECTS { + frwkRoleComboPrid, + frwkRoleComboRoles, + frwkRoleComboCapSetName } + + + + STATUS current + DESCRIPTION + "Objects from the frwkRoleComboTable." + + ::= { frwkBasePibGroups 8 } + +frwkIfRoleComboGroup OBJECT-GROUP + OBJECTS { frwkIfRoleComboIfIndex } + STATUS current + DESCRIPTION + "Objects from the frwkIfRoleComboTable." + + ::= { frwkBasePibGroups 9 } + +frwkBaseFilterGroup OBJECT-GROUP + OBJECTS { + frwkBaseFilterPrid, + frwkBaseFilterNegation } + STATUS current + DESCRIPTION + "Objects from the frwkBaseFilterTable." + + ::= { frwkBasePibGroups 10 } + +frwkIpFilterGroup OBJECT-GROUP + OBJECTS { + frwkIpFilterAddrType, + frwkIpFilterDstAddr, + frwkIpFilterDstPrefixLength, + frwkIpFilterSrcAddr, + frwkIpFilterSrcPrefixLength, + frwkIpFilterDscp, + frwkIpFilterFlowId, + frwkIpFilterProtocol, + frwkIpFilterDstL4PortMin, + frwkIpFilterDstL4PortMax, + frwkIpFilterSrcL4PortMin, + frwkIpFilterSrcL4PortMax } + STATUS current + DESCRIPTION + "Objects from the frwkIpFilterTable." + + ::= { frwkBasePibGroups 11 } + +frwk802FilterGroup OBJECT-GROUP + OBJECTS { + frwk802FilterDstAddr, + frwk802FilterDstAddrMask, + + + + frwk802FilterSrcAddr, + frwk802FilterSrcAddrMask, + frwk802FilterVlanId, + frwk802FilterVlanTagRequired, + frwk802FilterEtherType, + frwk802FilterUserPriority } + STATUS current + DESCRIPTION + "Objects from the frwk802FilterTable." + + ::= { frwkBasePibGroups 12 } + +frwkILabelFilterGroup OBJECT-GROUP + OBJECTS { frwkILabelFilterILabel } + STATUS current + DESCRIPTION + "Objects from the frwkILabelFilterTable." + + ::= { frwkBasePibGroups 13 } + +frwk802MarkerGroup OBJECT-GROUP + OBJECTS { + frwk802MarkerPrid, + frwk802MarkerVlanId, + frwk802MarkerPriority } + STATUS current + DESCRIPTION + "Objects from the frwk802MarkerTable." + + ::= { frwkBasePibGroups 14 } + +frwkILabelMarkerGroup OBJECT-GROUP + OBJECTS { + frwkILabelMarkerPrid, + frwkILabelMarkerILabel } + STATUS current + DESCRIPTION + "Objects from the frwkILabelMarkerTable." + + ::= { frwkBasePibGroups 15 } + +END diff --git a/pibs/ietf/FRAMEWORK-TC-PIB b/pibs/ietf/FRAMEWORK-TC-PIB new file mode 100644 index 0000000..2934bdb --- /dev/null +++ b/pibs/ietf/FRAMEWORK-TC-PIB @@ -0,0 +1,259 @@ +FRAMEWORK-TC-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS MODULE-IDENTITY, TEXTUAL-CONVENTION, + Unsigned32, pib FROM COPS-PR-SPPI; + +frwkTcPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200302130000Z" -- 13 Feb 2003 + ORGANIZATION "IETF RAP WG" + + + + CONTACT-INFO "Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com + + Ravi Sahita + Intel Labs. + 2111 NE 25th Ave. + Hillsboro, OR 97124 USA + Phone: +1 503 712 1554 + Email: ravi.sahita@intel.com + + RAP WG Mailing list: rap@ops.ietf.org " + DESCRIPTION + "The PIB module containing the Role and RoleCombination + Textual Conventions and other generic TCs. + + Copyright (C) The Internet Society (2003). This version of + this PIB module is part of RFC 3318; see the RFC itself for + full legal notices." + + REVISION "200302130000Z" -- 13 Feb 2003 + DESCRIPTION "Initial version, published in RFC 3318." + ::= { pib 3 } + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A role represents a functionality characteristic or + capability of a resource to which policies are applied. + Examples of roles include Backbone_interface, + Frame_Relay_interface, BGP-capable-router, web-server, + firewall, etc. + The only valid character set is US-ASCII. Valid characters + are a-z, A-Z, 0-9, period, hyphen and underscore. A role + must always start with a letter (a-z or A-Z). A role must + not contain the US-ASCII characters '*' or '+' since they + have special meaning associated with them, explained in the + RoleCombination TEXTUAL CONVENTION." + + + + SYNTAX OCTET STRING (SIZE (1..31)) + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string containing concatenated Roles. For the + format specification of roles, refer to the 'Role' TEXTUAL- + CONVENTION. A valid Role Combination must be formed by a set + of valid Roles, concatenated by the US-ASCII character '+', + where the roles are in lexicographic order from minimum to + maximum. For example, 'a+b' and 'b+a' are NOT different + role-combinations; rather, they are different formatting of + the same (one) role-combination. + + Notice the roles within a role-combination are in + Lexicographic order from minimum to maximum, hence, we + declare: + 'a+b' is the valid formatting of the role-combination, + 'b+a' is an invalid formatting of the role-combination. + + Notice the need of zero-length role-combination as the role- + combination of interfaces to which no roles have been + assigned. This role-combination is also known as the 'null' + role-combination. (Note the deliberate use of lower case + letters to avoid confusion with the US-ASCII NULL character + which has a value of zero but length of one.) + + The US-ASCII character '*' is used to specify a wild carded + Role Combination. '*' must not be used to wildcard Roles. + Hence, we declare: + '*+a+b' is a valid wild carded Role Combination. + 'eth*+a+b' is not a valid wild carded Role Combination. + Note that since Roles are lexicographically listed in a Role + Combination, the following is an invalid role combination, + since '*' is lexicographically before 'a': 'a+b+*'." + SYNTAX OCTET STRING (SIZE (0..255)) + +PrcIdentifierOid ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OID that identifies a PRC. The value MUST be an OID + assigned to a PRC's entry definition. The Entry definition + of a PRC has an OID value XxxTable.1 where XxxTable is the + OID assigned to the PRC table object. + + An attribute with this syntax MUST specify a PRC, which is + defined in the PIB module(s) registered in the context of + the client-type used. + + + + + An attribute with this syntax cannot have the value 0.0 + (zeroDotZero). If the attribute using this syntax can be set + to 0.0 use the PrcIdentifierOidOrZero TEXTUAL-CONVENTION + which makes such use explicit." + SYNTAX OBJECT IDENTIFIER + +PrcIdentifierOidOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OID that identifies a PRC or zeroDotZero (0.0). The + value MUST be an OID assigned to a PRC's entry definition or + 0.0 (zeroDotZero). The Entry definition of a PRC has an OID + value XxxTable.1 where XxxTable is the OID assigned to the + PRC table object. + + An attribute with this syntax can have the value 0.0 + (zeroDotZero) to indicate that it currently does not + identify a PRC." + SYNTAX OBJECT IDENTIFIER + +AttrIdentifier ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Unsigned32 value that identifies an attribute in a PRC by + its sub-id. The sub-id is the OID assigned to this attribute + in the PRC definition. + + A AttrIdentifier value is always interpreted within the + context of an attribute of type PrcIdentifierOid or + PrcIdentifierOidOrZero. The PrcIdentifierOid (or + PrcIdentifierOidOrZero) object which defines the context + must be registered immediately before the object which uses + the AttrIdentifier textual convention. If the context + defining attribute is of type PrcIdentifierOidOrZero and has + the value 0.0, then in that case this attribute value has no + meaning. + + An attribute with this syntax MUST specify a sub-id which + MUST be defined in the PRC identified (if any) in the + PrcIdentifierOid (or PrcIdentifierOidOrZero) attribute. The + PrcIdentifierOid (orZero) and the AttrIdentifier attributes + together identify a particular attribute in a particular + PRC. + + + + + + + + An attribute with this syntax cannot have the value 0 + (zero). If the attribute using this syntax can be set + to 0 use the AttrIdentifierOrZero TEXTUAL-CONVENTION which + makes that explicit." + SYNTAX Unsigned32 (1..4294967295) + +AttrIdentifierOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Unsigned32 value that identifies an attribute in a PRC by + its sub-id or has the value 0 (zero). The sub-id if non- + zero, is the OID assigned to this attribute in the PRC + definition. + + An AttrIdentifierOrZero value is always interpreted within + the context of an attribute of type PrcIdentifierOid or + PrcIdentifierOidOrZero. The PrcIdentifierOid (or + PrcIdentifierOidOrZero) object that defines the context must + be registered immediately before the object which uses the + AttrIdentifierOrZero textual convention. If the context + defining attribute is of type PrcIdentifierOidOrZero and has + the value 0.0, then in that case this attribute value has no + meaning. + + An attribute with this syntax can have the value 0 (zero) to + indicate that it currently does not identify a PRC + attribute. If it has a non-zero value, the + PrcIdentifierOid (orZero) and the AttrIdentifierOrZero + attributes together identify a particular attribute in a + particular PRC." + SYNTAX Unsigned32 + +AttrIdentifierOid ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OID that identifies an attribute in a PRC. The value + MUST be an OID assigned to a PRC's attribute definition. The + last sub-id is the sub-id of the attribute as it is + defined in the PRC entry definition. The prefix OID (after + dropping the last sub-id) is the OID assigned to the Entry + object of a defined PRC. The Entry definition of a PRC has + an OID value XxxTable.1 where XxxTable is the OID assigned + to the PRC Table object. + + An attribute with this syntax MUST not have the value 0.0 + (zeroDotZero). If 0.0 is a valid value, the TEXTUAL + CONVENTION AttrIdentifierOidOrZero must be used which makes + such use explicit." + + + + SYNTAX OBJECT IDENTIFIER + +AttrIdentifierOidOrZero ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An OID that identifies an attribute in a PRC or has a value + 0.0 (zeroDotZero). The value MUST be an OID assigned to a + PRC's attribute definition or the value 0.0. + + If not 0.0, the last sub-id MUST be the sub-id of the + attribute as it is defined in the PRC Entry object + definition. The prefix OID (after dropping the last sub-id) + is the OID assigned to the Entry object of a defined PRC. + The Entry definition of a PRC has an OID value XxxTable.1 + Where, XxxTable is the OID assigned to the PRC Table + object. + + An attribute with this syntax can have the value 0.0 + (zeroDotZero) to indicate that it currently does not + identify a PRC's attribute." + SYNTAX OBJECT IDENTIFIER + +ClientType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An Unsigned32 value that identifies a COPS Client-type. An + attribute with this syntax must be set to zero if it does + not specify a COPS client-type for the PRI." + REFERENCE + "The COPS (Common Open Policy Service) Protocol, RFC 2748." + SYNTAX Unsigned32 (0..65535) + +ClientHandle ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An octet string that identifies a COPS Client handle. A + zero length value implies the attribute does not specify a + valid client handle." + REFERENCE + "The COPS (Common Open Policy Service) Protocol, RFC 2748." + SYNTAX OCTET STRING (SIZE(0..65535)) + +END diff --git a/pibs/ietf/Makefile.am b/pibs/ietf/Makefile.am new file mode 100644 index 0000000..6f11028 --- /dev/null +++ b/pibs/ietf/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the pibs/ietf Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/pibs/ietf/Makefile.in b/pibs/ietf/Makefile.in new file mode 100644 index 0000000..8a84023 --- /dev/null +++ b/pibs/ietf/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the pibs/ietf Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pibs/ietf +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pibs/ietf/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pibs/ietf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/pibs/site/Makefile.am b/pibs/site/Makefile.am new file mode 100644 index 0000000..81b4bcc --- /dev/null +++ b/pibs/site/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the pibs/site Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/pibs/site/Makefile.in b/pibs/site/Makefile.in new file mode 100644 index 0000000..8bae13b --- /dev/null +++ b/pibs/site/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the pibs/site Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pibs/site +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pibs/site/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pibs/site/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/pibs/tubs/ACCESSBIND-PIB b/pibs/tubs/ACCESSBIND-PIB new file mode 100644 index 0000000..b2ed8fe --- /dev/null +++ b/pibs/tubs/ACCESSBIND-PIB @@ -0,0 +1,2511 @@ +ACCESSBIND-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + InstanceId, Prid, ReferenceId, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + frwkReferenceEntry + FROM FRAMEWORK-PIB + RoleCombination, PrcIdentifierOid + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + TruthValue, PhysAddress + FROM SNMPv2-TC; + +accessBindPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200202202002Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Walter Weiss + Ellacoya Networks + 7 Henry Clay Drive + Merrimack, NH 03054 + Phone: 603-879-7364 + E-mail: wweiss@ellacoya.com + " + DESCRIPTION + "A PIB module containing the set of classes to + configure generic event handlers, and outsource + events as they occur. One application of this PIB is + to bind authorization and authentication to COPS + Provisioning." + + ::= { ibrpib 2 } -- xxx to be assigned by IANA + + +-- +-- The branch OIDs in the AccessBind PIB +-- + +capabilityClasses OBJECT IDENTIFIER ::= { accessBindPib 1 } +eventClasses OBJECT IDENTIFIER ::= { accessBindPib 2 } +eventHdlrClasses OBJECT IDENTIFIER ::= { accessBindPib 3 } +contextClasses OBJECT IDENTIFIER ::= { accessBindPib 4 } +authClasses OBJECT IDENTIFIER ::= { accessBindPib 5 } +filterClasses OBJECT IDENTIFIER ::= { accessBindPib 6 } + + + +-- +-- Event Table +-- +-- Instances of this table represent events that occurred at +-- the PEP. The events reference the event handler instance +-- and the specific event handler element that the event was +-- caught by. + +eventTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP. As a result of this event, The PDP may send + additional unsolicited decisions to the PEP after + sending the mandatory solicited decision for the event." + + ::= { eventClasses 1 } + +eventEntry OBJECT-TYPE + SYNTAX EventEntry + STATUS current + DESCRIPTION + "An instance of the eventTable PRC." + + PIB-INDEX { eventId } + UNIQUENESS { } + + ::= { eventTable 1 } + +EventEntry ::= SEQUENCE { + eventId InstanceId, + eventEventHdlr ReferenceId, + eventCause ReferenceId +} + +eventId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify this event." + + ::= { eventEntry 1 } + +eventEventHdlr OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkReferenceEntry } + STATUS current + DESCRIPTION + "This attribute allows a PEP to indicate to the PDP that + this event was generated due to the referenced Event + Handler. This attribute references an event handler via + the indirection PRC frwkReference, since the event + handler and event could potentially belong to a different + PIB contexts." + + + ::= { eventEntry 2 } + + +eventCause OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkReferenceEntry } + STATUS current + DESCRIPTION + "This attribute references the specific instance in a + group of event Handler elements belonging to an event + Handler that resulted in this event. This attribute + references a specific event handler element via the + indirection PRC frwkReference, since the event handler + element and event could potentially belong to a different + PIB contexts." + + + ::= { eventEntry 3 } + + +-- +-- EventHandler Table +-- +-- Instances of this PRC are provisioned by the PDP on the PEP +-- to catch specific events. The Event Handlers reference a +-- group of eventHdlrElement PRIs that contain the scope of +-- the event and specify the context data to send to the PDP +-- when an event is caught. + +eventHandlerTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHandlerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The eventHandlerTable specifies for what events the PEP + should send a request to the PDP. As a result of this + request, the PEP may send configuration changes to the + PEP. An instance of this class defines the circumstances + for generating a request, and provides the means for + specifying the contents of the PEP Request. Hence, the + eventHandlerTable can be said to create eventTable + entries. " + + ::= { eventHdlrClasses 1 } + +eventHandlerEntry OBJECT-TYPE + SYNTAX EventHandlerEntry + STATUS current + DESCRIPTION + "eventTable entry." + PIB-INDEX { eventHandlerId } + UNIQUENESS { eventHandlerElements, + eventHandlerNonMatchNext + } + + ::= { eventHandlerTable 1} + +EventHandlerEntry ::= SEQUENCE { + eventHandlerId InstanceId, + eventHandlerElements TagReferenceId, + eventHandlerNonMatchNext Prid +} + +eventHandlerId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the eventHandlerTable class." + + ::= { eventHandlerEntry 1} + + eventHandlerElements OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { eventHdlrElementGrpId } + STATUS current + DESCRIPTION + "A reference to a group of eventHdlrElement instances, + each of which determines the scope (criteria for + generating a new request) and what context information to + send in a request." + + ::= { eventHandlerEntry 2} + + eventHandlerNonMatchNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The data path for 'out of scope' traffic." + + ::= { eventHandlerEntry 3} + + +-- +-- EventHdlrElement Table +-- +-- Each Instance of this PRC belongs to a group of +-- eventHdlrElement PRIs. The group is identified by the +-- eventHdlrElementGrpId attribute. These are provisioned by +-- the PDP on the PEP to catch specific events. This PRC +-- contain the scope of the event and specify the context data +-- type to send to the PDP when an event is caught. + +eventHdlrElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHdlrElementEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The eventHdlrElementTable specifies a single eventHdlr + element's scope via a reference to a group of filters and + the context data type and encapsulation meta-information + that the PEP needs to send an event notification to the + PDP." + + ::= { eventHdlrClasses 2 } + +eventHdlrElementEntry OBJECT-TYPE + SYNTAX EventHdlrElementEntry + STATUS current + DESCRIPTION + "eventTable entry." + PIB-INDEX { eventHdlrElementId } + UNIQUENESS { eventHdlrElementEventCriteria, + eventHdlrElementGrpId, + eventHdlrElementEventScope, + eventHdlrElementHandleScope, + eventHdlrElementContext, + eventHdlrElementMatchNext + } + + ::= { eventHdlrElementTable 1} + +EventHdlrElementEntry ::= SEQUENCE { + eventHdlrElementId InstanceId, + eventHdlrElementEventCriteria INTEGER, + eventHdlrElementGrpId TagId, + eventHdlrElementEventScope TagReferenceId, + eventHdlrElementHandleScope TagReferenceId, + eventHdlrElementContext TagReferenceId, + eventHdlrElementMatchNext Prid +} + +eventHdlrElementId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the eventHdlrElementTable class." + + ::= { eventHdlrElementEntry 1} + +eventHdlrElementEventCriteria OBJECT-TYPE + SYNTAX INTEGER { + onetime(1), + everytime(2), + onchange(3) + } + STATUS current + DESCRIPTION + "Indicates when an event is generated. Valid options are + one_time, every_time and on_change. This attribute allows + event Handlers to distinguish one time events (ignore + after the first match) from recurring events (generate an + event every time a match occurs). A enum type was also + define to specify that a new event should be generated + when a specific set of fields change. This is important + for protocols like RSVP because messages are sent both to + demonstrate that the reservation is active and to notify + hops of changes to reservations. Since only changes need + to propagate to the PDP, the on_change option indicates + that that events should be generated selectively. + + This criteria controls behavior of both, the EventScope + and the HandleScope." + + ::= { eventHdlrElementEntry 2} + +eventHdlrElementGrpId OBJECT-TYPE + SYNTAX TagId -- corresponding Tag Reference in + -- eventHandlerEntry + STATUS current + DESCRIPTION + "Group identifier. All instances with the same group + identifier belong to one group and can be referenced + collectively from an eventHandler instance." + + ::= { eventHdlrElementEntry 3} + +eventHdlrElementEventScope OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { eventHdlrEventScopeGroup } + STATUS current + DESCRIPTION + "Identifies a group of eventHdlrEventScope entries + associated with this eventHdlrElement instance." + + ::= { eventHdlrElementEntry 4} + +eventHdlrElementHandleScope OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { eventHdlrHandleScopeGroup } + STATUS current + DESCRIPTION + "Identifies a group of eventHdlrHandleScope entries + associated with this eventHdlrElement instance. This is + an optional attribute. If it is not present the + semantics of the Handle processing is interpreted as + identical to the Event Scope handling specified in the + EventScope objects" + + ::= { eventHdlrElementEntry 5} + +eventHdlrElementContext OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { contextDataGroup } + STATUS current + DESCRIPTION + "Identifies a list of ContextDataTable entries + associated with this eventHdlrElement instance." + + ::= { eventHdlrElementEntry 6} + +eventHdlrElementMatchNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The data path for traffic in scope." + + ::= { eventHdlrElementEntry 7} + + + -- + -- EventHdlrEventScope Table + -- + -- This PRC defines the scope of an event handler element using + -- references to filters defined in the Framework PIB or in some + -- other PIBs. These filters may describe specific protocol + -- properties for which events need to be generated. These filter + -- references are grouped using a TagId, and this group is then + -- referenced from the eventHdlrElement PRC. + +eventHdlrEventScopeTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHdlrEventScopeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the criteria to be used for + partitioning various portions of traffic." + + ::= { eventHdlrClasses 3 } + +eventHdlrEventScopeEntry OBJECT-TYPE + SYNTAX EventHdlrEventScopeEntry + STATUS current + DESCRIPTION + "An instance of this class defines an individual criterion + to be used towards generating an event." + PIB-INDEX { eventHdlrEventScopeId } + UNIQUENESS { eventHdlrEventScopeGroup, + eventHdlrEventScopeFilter + } + + ::= { eventHdlrEventScopeTable 1} + +EventHdlrEventScopeEntry::= SEQUENCE { + eventHdlrEventScopeId InstanceId, + eventHdlrEventScopeGroup TagId, + eventHdlrEventScopeFilter Prid, + eventHdlrEventScopePrecedence INTEGER, + eventHdlrEventScopeChangeFlag TruthValue +} + +eventHdlrEventScopeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the eventHdlrEventScopeTable class." + + ::= { eventHdlrEventScopeEntry 1} + +eventHdlrEventScopeGroup OBJECT-TYPE + SYNTAX TagId -- corresponding TagReference + -- defined in eventHdlrElementEntry + STATUS current + DESCRIPTION + "Represents the binding between the eventHdlrElementEntry + and the eventHdlrEventScope entries. A group of + eventHdlrEventScope entries constitutes the criteria for + partitioning various portions of traffic." + + ::= { eventHdlrEventScopeEntry 2} + +eventHdlrEventScopeFilter OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Pointer to a filter to be used as the criteria." + ::= { eventHdlrEventScopeEntry 3} + +eventHdlrEventScopePrecedence OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "Represents the precedence of this criterion with respect + to other criteria within the same group. When the + precedence is unique, the instance represents an + alternative criteria (an ORing function). When the + precedence for two or more instances of the + eventHdlrEventScope class is the same, the attributes + within all the instances are treated collectively as a + single filter criteria with the following rules: + 1. If the filters are not of the same type, the filters + are ANDed as a whole eg (RSVP and IP) + 2. If the filter types are the same, the attribute values + are ORed and the attributes themselves are ANDed, + for example, two IP filters with src protocol values + 56 and 57 respectively and dst protocol values 20 and + 25 , would be treated as the condition (src port (56 + or 57) AND dst port (20 or 25)." + + ::= { eventHdlrEventScopeEntry 4} + +eventHdlrEventScopeChangeFlag OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Boolean value, if set to 'true' indicates that a new + event should be generated if any of the assigned fields in + the associated filter change." + + ::= { eventHdlrEventScopeEntry 5} + + + +-- +-- EventHdlrHandleScope Table +-- +-- This PRC defines the scope of request handles generated by the +-- PEP due to events caught by the event handler element. Each +-- instance of this PRC references filters defined in the +-- Framework PIB or some other signaling-protocol specific filter +-- PRCs. These filters may describe specific protocol properties +-- to which this event handler is sensitive. Essentially this +-- table defines when a new COPS RequestHandle must be created by +-- the PEP based on protocol properties. The event handler may be +-- set up to be sensitive to specific field values and/or the +-- uniqueness of a set of values considered together. This +-- accommodates various behaviors of signaling protocols. These +-- filters references are grouped using a TagId, and this group +-- is then referenced from the eventHdlrElement PRC via the +-- eventHdlrElementHandleScope TagReference. + +eventHdlrHandleScopeTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHdlrHandleScopeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the criteria to be used for + deciding whether to create a new COPS RequestHandle for + an event or to use an existing Handle." + + ::= { eventHdlrClasses 4 } + +eventHdlrHandleScopeEntry OBJECT-TYPE + SYNTAX EventHdlrHandleScopeEntry + STATUS current + DESCRIPTION + "An instance of this class defines an individual criterion + to be used towards deciding when to create a new Handle." + PIB-INDEX { eventHdlrHandleScopeId } + UNIQUENESS { eventHdlrHandleScopeGroup, + eventHdlrHandleScopeFilter + } + + ::= { eventHdlrHandleScopeTable 1} + +EventHdlrHandleScopeEntry::= SEQUENCE { + eventHdlrHandleScopeId InstanceId, + eventHdlrHandleScopeGroup TagId, + eventHdlrHandleScopeFilter Prid, + eventHdlrHandleScopePrecedence INTEGER, + eventHdlrHandleScopeChangeFlag TruthValue +} + +eventHdlrHandleScopeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the eventHdlrHandleScopeTable class." + + ::= { eventHdlrHandleScopeEntry 1} + +eventHdlrHandleScopeGroup OBJECT-TYPE + SYNTAX TagId -- corresponding TagReference + -- defined in eventHdlrElementEntry + STATUS current + DESCRIPTION + "Represents the binding between the eventHdlrElementEntry + and the eventHdlrHandleScope entries. A group of + eventHdlrHandleScope entries constitutes the criteria for + defining the scope of the Handles generated." + + ::= { eventHdlrHandleScopeEntry 2} + +eventHdlrHandleScopeFilter OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Pointer to a filter to be used as the criteria." + ::= { eventHdlrHandleScopeEntry 3} + +eventHdlrHandleScopePrecedence OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "Represents the precedence of this criterion with respect + to other criteria within the same group. When the + precedence is unique, the instance represents an + alternative criteria (an ORing function). When the + precedence for two or more instances of the + eventHdlrHandleScope class is the same, the attributes + within all the instances are treated collectively as a + single filter criteria." + + ::= { eventHdlrHandleScopeEntry 4} + + +eventHdlrHandleScopeChangeFlag OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Boolean value, if set to 'true' indicates that a new + Handle should be generated to send the event request if + any of the assigned fields in the associated filter + change." + + ::= { eventHdlrHandleScopeEntry 5} + + + +-- +-- EventHdlrAuthProtocol Table +-- +-- This PRC specifies the Auth Mechanism to use in the Access +-- request when a data path Event Handler is configured to +-- catch access events. + + +eventHdlrAuthProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF EventHdlrAuthProtocolEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class lists the authentication protocols that can + be used for an access request." + + ::= { eventHdlrClasses 5 } + +eventHdlrAuthProtocolEntry OBJECT-TYPE + SYNTAX EventHdlrAuthProtocolEntry + STATUS current + DESCRIPTION + "An instance of this class describes an authentication + protocol that may be used for an access request. Instances + of this class that share the same TagId value collectively + constitute a list of authentication protocols that may be + used for a given access request" + PIB-INDEX { eventHdlrAuthProtocolId } + UNIQUENESS { eventHdlrAuthProtocolGroup, + eventHdlrAuthProtocolAuthMechanism + } + + ::= { eventHdlrAuthProtocolTable 1} + +EventHdlrAuthProtocolEntry::= SEQUENCE { + eventHdlrAuthProtocolId InstanceId, + eventHdlrAuthProtocolGroup TagId, + eventHdlrAuthProtocolAuthMechanism INTEGER +} + +eventHdlrAuthProtocolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the ContextDataTable class." + + ::= { eventHdlrAuthProtocolEntry 1} + +eventHdlrAuthProtocolGroup OBJECT-TYPE + SYNTAX TagId -- corresponding TagReference + -- in datapathEventHdlrEntry + STATUS current + DESCRIPTION + "Represents a binding between an datapathEventHdlrTable + instance and a list of eventHdlrAuthProtocolTable + instances." + + ::= { eventHdlrAuthProtocolEntry 2} + +eventHdlrAuthProtocolAuthMechanism OBJECT-TYPE + SYNTAX INTEGER { + mPAP (0), + mCHAP (1), + mEAPMD5(2), + mEAPTLS(3) + } + STATUS current + DESCRIPTION + "The authentication protocol that may be used for an + access request." + ::= { eventHdlrAuthProtocolEntry 3} + + +-- +-- DataPath Event Handler Table +-- +-- This PRC is an extension of the EventHandler PRC. This +-- extension illustrates the use of the EventHandler PRC +-- concept for authentication usage. Instances of this PRC are +-- provisioned by the PDP on the PEP to catch specific access +-- events. This PRC references a group of +-- eventHdlrAuthProtocol instances which define a set of +-- Authentication mechanisms to use if an access event is +-- caught by this event Handler. From its base class (Event +-- Handler) this PRC also references a group of +-- eventHdlrElement PRIs that contain the scope of the +-- access event and specify the context data to send to the +-- PDP when an access event is caught. + +datapathEventHdlrTable OBJECT-TYPE + SYNTAX SEQUENCE OF DatapathEventHdlrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The datapathEventHdlrTable specifies for what access + events the PEP should send an access request to the PDP. + As a result of this access request, the PEP may send + configuration changes to the PEP or specific policies for + specific users. An instance of this class defines the + circumstances for generating an access request, and + provides the means for specifying the authentication + mechanisms and contents of the PEP Request. Hence, the + datapathEventHdlrTable can be said to create eventTable + entries for user access. " + + ::= { eventHdlrClasses 6 } + +datapathEventHdlrEntry OBJECT-TYPE + SYNTAX DatapathEventHdlrEntry + STATUS current + DESCRIPTION + "dataPathEventHdlrTable entry." + EXTENDS { eventHandlerEntry } + UNIQUENESS { eventHandlerElements, + eventHandlerNonMatchNext, + datapathEventHdlrRequestAuth + } + + ::= { datapathEventHdlrTable 1} + +DatapathEventHdlrEntry ::= SEQUENCE { + datapathEventHdlrRequestAuth TruthValue, + datapathEventHdlrAuthProtocol TagReferenceId +} + +datapathEventHdlrRequestAuth OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Boolean flag, if set to 'true' requires authentication + data to be sent in the request sent to the PDP with the + access event." + + ::= { datapathEventHdlrEntry 1} + + +datapathEventHdlrAuthProtocol OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { eventHdlrAuthProtocolGroup } + STATUS current + DESCRIPTION + "References a group of eventHdlrAuthProtocol instances, + each of which specifies an authentication mechanism." + + ::= { datapathEventHdlrEntry 2} + + + +-- +-- ContextData Table +-- +-- This PRC specifies the context information to send to the PDP +-- when an event is caught. The context information to send is +-- described in terms of the PRC data types to include in the +-- request, the level of encapsulated data and the interface +-- information for that request. + + +contextDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF ContextDataEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class points to the context information to be + included with a request." + + ::= { contextClasses 1 } + +contextDataEntry OBJECT-TYPE + SYNTAX ContextDataEntry + STATUS current + DESCRIPTION + "An instance of this class contains the type description + (the assigned OID) of the class which needs to be filled + in by the PEP and included with a PEP request." + PIB-INDEX { contextDataId } + UNIQUENESS { } + + ::= { contextDataTable 1} + +ContextDataEntry::= SEQUENCE { + contextDataId InstanceId, + contextDataGroup TagId, + contextDataIfElement PrcIdentifierOid, + contextDataEncapsulation INTEGER +} + +contextDataId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the contextDataTable class." + + ::= { contextDataEntry 1} + +contextDataGroup OBJECT-TYPE + SYNTAX TagId --corresponding TagReference + --defined in eventHdlrElement + STATUS current + DESCRIPTION + "Defines the grouping of contextData instances + that are applicable to a given eventHdlrElement. When + instances of this PRC are sent to the PEP without the + event Handler information, this attribute is unused." + + ::= { contextDataEntry 2} + + +contextDataIfElement OBJECT-TYPE + SYNTAX PrcIdentifierOid + STATUS current + DESCRIPTION + "The OID of a class whose instance is to be included with + the PEP request or event-specific ContextData Response." + + ::= { contextDataEntry 3} + +contextDataEncapsulation OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "This attribute allows one to distinguish between inner + and outer headers when there are multiple encapsulated + headers of the same type in a packet. + + A value of: + 0 means all headers, + positive number 'n' means the 'n'th header starting + from the outermost, + negative number 'n' means the 'n'th header starting from + the innermost." + + ::= { contextDataEntry 4} + + + +-- +-- Layer 3 Header Data PRC +-- + +ctxtL3HdrTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtL3HdrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and + sent to the PDP to provide the PDP with information it + requested in the ContextData PRC. The PDP uses + this PRC to make Authentication/Provisioning + decisions." + + ::= { contextClasses 2 } + +ctxtL3HdrEntry OBJECT-TYPE + SYNTAX CtxtL3HdrEntry + STATUS current + DESCRIPTION + "An instance of the ctxtL3HdrTable PRC." + + PIB-INDEX { ctxtL3HdrId } + UNIQUENESS { } + + ::= { ctxtL3HdrTable 1 } + +CtxtL3HdrEntry::= SEQUENCE { + ctxtL3HdrId InstanceId, + ctxtL3HdrSrcAddrType InetAddressType, + ctxtL3HdrSrcAddr InetAddress, + ctxtL3HdrDstAddrType InetAddressType, + ctxtL3HdrDstAddr InetAddress, + ctxtL3HdrProtocol Unsigned32, + ctxtL3HdrSrcPort Unsigned32, + ctxtL3HdrDstPort Unsigned32, + ctxtL3HdrDscp Unsigned32, + ctxtL3HdrEcn TruthValue, + ctxtL3HdrIpOpt OCTET STRING, + ctxtL3HdrEncap Integer32 +} + +ctxtL3HdrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtL3HdrEntry 1 } + +ctxtL3HdrSrcAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify + the type of the packet's source L3 address)." + + ::= { ctxtL3HdrEntry 2 } + +ctxtL3HdrSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + " The packet's source L3 address." + + ::= { ctxtL3HdrEntry 3 } + +ctxtL3HdrDstAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify + the type of the packet's destination L3 address." + + ::= { ctxtL3HdrEntry 4 } + + +ctxtL3HdrDstAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The packet's destination L3 address." + + ::= { ctxtL3HdrEntry 5 } + + +ctxtL3HdrProtocol OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The packet's protocol field." + + ::= { ctxtL3HdrEntry 6 } + +ctxtL3HdrSrcPort OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This attribute binds an existing upstream session to + this session instance." + + ::= { ctxtL3HdrEntry 7 } + +ctxtL3HdrDstPort OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This attribute binds an existing upstream session to + this session instance." + + ::= { ctxtL3HdrEntry 8 } + +ctxtL3HdrDscp OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "DiffServ CodePoint." + + ::= { ctxtL3HdrEntry 9 } + +ctxtL3HdrEcn OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "PEP sets this attribute to true(1) if ECN capable." + + ::= { ctxtL3HdrEntry 10 } + +ctxtL3HdrIpOpt OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "IP Options field in the packet." + + ::= { ctxtL3HdrEntry 11 } + +ctxtL3HdrEncap OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute specifies which encapsulated header is + being described. The sign on this value will be the same + as the value specified in the ContextData + instance that requested this header. If the original + ContextData instance specified a + ContextDataEncapsulation value of zero (meaning + return all headers), then all instances of this attribute + MUST be expressed as positive numbers. + + A value of: + + positive number 'n' means the 'n'th header starting + from the outermost, + negative number 'n' means the 'n'th header starting from + the innermost." + + ::= { ctxtL3HdrEntry 12 } + + +-- +-- 802.1 Header Data PRC +-- + +ctxt802HdrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ctxt802HdrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP to provide the PDP with information it + requested in the ContextData PRC. The PDP uses this PRC + to make Authorization/Provisioning decisions." + + ::= { contextClasses 3 } + +ctxt802HdrEntry OBJECT-TYPE + SYNTAX Ctxt802HdrEntry + STATUS current + DESCRIPTION + "An instance of the ctxt802HdrTable PRC." + + PIB-INDEX { ctxt802HdrId } + UNIQUENESS { } + + ::= { ctxt802HdrTable 1 } + +Ctxt802HdrEntry::= SEQUENCE { + ctxt802HdrId InstanceId, + ctxt802HdrSrcAddr PhysAddress, + ctxt802HdrDstAddr PhysAddress, + ctxt802HdrProtocol Unsigned32, + ctxt802HdrPriority Unsigned32, + ctxt802HdrVlan Unsigned32, + ctxt802HdrEncap Integer32 +} + +ctxt802HdrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxt802HdrEntry 1 } + + +ctxt802HdrSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + " The packet's source MAC address." + + ::= { ctxt802HdrEntry 2 } + +ctxt802HdrDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The packet's destination MAC address." + + ::= { ctxt802HdrEntry 3 } + + +ctxt802HdrProtocol OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffff'h) + STATUS current + DESCRIPTION + "The L2 packet's protocol field." + + ::= { ctxt802HdrEntry 4 } + + +ctxt802HdrPriority OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + STATUS current + DESCRIPTION + "The L2 packet's priority field. This attribute is only + valid for packets using the 802.1q header extension." + + ::= { ctxt802HdrEntry 5 } + +ctxt802HdrVlan OBJECT-TYPE + SYNTAX Unsigned32 (1..4094) + STATUS current + DESCRIPTION + "The L2 packet's VLAN field. This attribute is only valid + for packets using the 802.1q header extension." + + ::= { ctxt802HdrEntry 6 } + +ctxt802HdrEncap OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute specifies which encapsulated header is + being described. The sign on this value will be the same + as the value specified in the ContextData + instance that requested this header. If the original + ContextData instance specified an + ContextDataEncapsulation value of zero (meaning + return all headers), then all instances of this attribute + MUST be expressed as positive numbers. + + A value of: + positive number 'n' means the 'n'th header starting + from the outermost, + negative number 'n' means the 'n'th header starting from + the innermost." + + ::= { ctxt802HdrEntry 7 } + + +-- +-- CtxtDialupInterface Table +-- + +ctxtDialupInterfaceTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupInterfaceEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Dialup Interface context data." + + ::= { contextClasses 4 } + +ctxtDialupInterfaceEntry OBJECT-TYPE + SYNTAX CtxtDialupInterfaceEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupInterfaceTable PRC." + + PIB-INDEX { ctxtDialupInterfaceId } + UNIQUENESS { } + + ::= { ctxtDialupInterfaceTable 1 } + +CtxtDialupInterfaceEntry::= SEQUENCE { + ctxtDialupInterfaceId InstanceId, + ctxtDialupInterfaceNASPort Integer32, + ctxtDialupInterfaceNASPortId OCTET STRING, + ctxtDialupInterfaceNASPortType INTEGER, + ctxtDialupInterfaceCalledStationId OCTET STRING, + ctxtDialupInterfaceCallingStationId OCTET STRING, + ctxtDialupInterfaceConnectInfo OCTET STRING +} + +ctxtDialupInterfaceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupInterfaceEntry 1 } + + +ctxtDialupInterfaceNASPort OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This Attribute indicates the physical port number of the + NAS which is authenticating the user. It is only used in + Access-Request packets. Note that this is using 'port' + in its sense of a physical connection on the NAS, not in + the sense of a TCP or UDP port number." + + ::= { ctxtDialupInterfaceEntry 2 } + + +ctxtDialupInterfaceNASPortId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute contains a text string which identifies + the port of the NAS which is authenticating the user. It + is only used in Access-Request and Accounting-Request + packets. Note that this is using 'port' in its sense of + a physical connection on the NAS, not in the sense of a + TCP or UDP port number. " + + ::= { ctxtDialupInterfaceEntry 3 } + +ctxtDialupInterfaceNASPortType OBJECT-TYPE + +SYNTAX INTEGER { + radAsync(0), + radSync(1), + radIsdnSync(2), + radIsdnAsyncV120(3), + radIsdnAsyncV110(4), + radVirtual(5), + radPIAFS(6), + radHdlcClearChannel(7), + radX25(8), + radX75(9), + radG3Fax(10), + radSDSL(11), + radAdslCAP(12), + radAdslDMT(13), + radIdsl(14), + radEthernet(15), + radXdsl(16), + radCable(17), + radWirelessOther(18), + radWirelessIEEE80211(19) + } + STATUS current + DESCRIPTION + "This Attribute indicates the type of the physical port + of the NAS which is authenticating the user. It can be + used instead of or in addition to the radNasPort (5) + attribute. It is only used in Access-Request packets. + Either radNasPort (5) or radNasPortType or both SHOULD be + present in an Access-Request packet, if the NAS + differentiates among its ports. + + A value of 'radAsync(0)' indicates Async. + + A value of 'radSync(1)' indicates Sync. + + A value of 'radIsdnSync(2)' indicates ISDN Sync. + + A value of 'radIsdnAsyncV120(3)' indicates ISDN + Async V.120. + + A value of 'radIsdnAsyncV110(4)' indicates ISDN + Async V.110. + + A value of 'radVirtual(5)' indicates Virtual. + Virtual refers to a connection to the NAS via some + transport protocol, instead of through a physical + port. For example, if a user telnetted into a NAS to + authenticate himself as an Outbound-User, the + Access-Request might include radNasPortType = + Virtual as a hint to the RADIUS server that the user + was not on a physical port. + + A value of 'radPIAFS(6)' indicates PIAFS. PIAFS is a + form of wireless ISDN commonly used in Japan, and + stands for PHS (Personal Handyphone System) Internet + Access Forum Standard (PIAFS). + + A value of 'radHdlcClearChannel(7)' indicates HDLC + Clear Channel. + + A value of 'radX25(8)' indicates X.25. + + A value of 'radX75(9)' indicates X.75. + + A value of 'radG3Fax(10)' indicates G.3 Fax. + + A value of 'radSDSL(11)' indicates SDSL Symmetric + DSL. + + A value of 'radAdslCAP(12)' indicates ADSL-CAP - + Asymmetric DSL, Carrierless Amplitude Phase + Modulation. + + A value of 'radAdslDMT(13)' indicates ADSL-DMT - + Asymmetric DSL, Discrete Multi-Tone. + + A value of 'radIdsl(14)' indicates IDSL ISDN + Digital Subscriber Line. + + A value of 'radEthernet(15)' indicates Ethernet. + + A value of 'radXdsl(16)' indicates xDSL - Digital + Subscriber Line of unknown type. + + A value of 'radCable(17)' indicates Cable. + + A value of 'radWirelessOther(18)' indicates Wireless + - Other. + + A value of 'radWirelessIEEE80211(19)' indicates + Wireless - IEEE 802.11." + ::= { ctxtDialupInterfaceEntry 4 } + + + ctxtDialupInterfaceCalledStationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the user called, + using Dialed Number Identification (DNIS) or similar + technology. Note that this may be different from the + phone number the call comes in on. It is only used in + Access-Request packets. " + ::= { ctxtDialupInterfaceEntry 5 } + + ctxtDialupInterfaceCallingStationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the user is calling + from, using Dialed Number Identification (DNIS) or + similar technology. Note that this may be different from + the phone number called. It is only used in + Access-Request packets. " + ::= { ctxtDialupInterfaceEntry 6 } + + ctxtDialupInterfaceConnectInfo OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the call came from, + using Automatic Number Identification (ANI) or similar + technology. It is only used in Access-Request packets." + ::= { ctxtDialupInterfaceEntry 7 } + + + + + --- + --- CtxtDialupInterfaceFramedProtocol Table + --- + + ctxtDialupIfFramedProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfFramedProtocolEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "." + + ::= { contextClasses 5 } + + ctxtDialupIfFramedProtocolEntry OBJECT-TYPE + SYNTAX CtxtDialupIfFramedProtocolEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfFramedProtocolTable PRC." + + PIB-INDEX { ctxtDialupIfFramedProtocolId } + UNIQUENESS { } + + ::= { ctxtDialupIfFramedProtocolTable 1 } + + CtxtDialupIfFramedProtocolEntry ::= SEQUENCE { + ctxtDialupIfFramedProtocolId InstanceId, + ctxtDialupIfFramedProtocolProt INTEGER, + ctxtDialupIfFramedProtocolMTU Integer32, + ctxtDialupIfFramedProtocolCompression INTEGER, + ctxtDialupIfFramedProtocolPortLimit Unsigned32, + ctxtDialupIfFramedProtocolIpAddress InetAddress, + ctxtDialupIfFramedProtocolIpNetmask InetAddress + } + + ctxtDialupIfFramedProtocolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupIfFramedProtocolEntry 1 } + + + ctxtDialupIfFramedProtocolProt OBJECT-TYPE + SYNTAX INTEGER { + radPPP(1), + radSLIP(2), + radARAP(3), + radGandalf(4), + radXylogics(5), + radX75Synchronous(6) + } + STATUS current + DESCRIPTION + "This Attribute indicates the framing to be used for + framed access. It MAY be used in both Access-Request and + Access-Accept packets. + + A value of 'radPPP(1)' represents PPP. + + A value of 'radSLIP(2)' represents SLIP. + + A value of 'radARAP(3)' represents AppleTalk Remote + Access Protocol (ARAP). + + A value of 'radGandalf(4)' represents Gandalf + proprietary SingleLink/MultiLink protocol. + + A value of 'radXylogics(5)' represents Xylogics + proprietary IPX/SLIP. + + A value of 'radX75Synchronous(6)' represents X.75 + Synchronous." + + ::= { ctxtDialupIfFramedProtocolEntry 2 } + + + ctxtDialupIfFramedProtocolMTU OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This Attribute indicates the Maximum Transmission Unit + to be configured for the user, when it is not negotiated + by some other means (such as PPP). It MAY be used in + Access-Accept packets. It MAY be used in an Access- + Request packet as a hint by the NAS to the server that it + would prefer that value, but the server is not required + to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 3 } + + ctxtDialupIfFramedProtocolCompression OBJECT-TYPE + SYNTAX INTEGER { + radNone(0), + radVJ(1), + radIPXheader(2), + radStacLZS(3) + } + STATUS current + DESCRIPTION + "This Attribute indicates a compression protocol to be + used for the link. It MAY be used in Access-Accept + packets. It MAY be used in an Access-Request packet as a + hint to the server that the NAS would prefer to use that + compression, but the server is not required to honor the + hint. + + More than one compression protocol Attribute MAY be sent. + It is the responsibility of the NAS to apply the proper + compression protocol to appropriate link traffic. + + A value of 'radNone(0)' indicates None. + + A value of 'radVJ(1)' indicates VJ TCP/IP header + compression. + + A value of 'radIPXheader(2)' indicates IPX header + compression. + + A value of 'radStacLZS(3)' indicates Stac-LZS + compression." + + ::= { ctxtDialupIfFramedProtocolEntry 4 } + + + ctxtDialupIfFramedProtocolPortLimit OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This Attribute sets the maximum number of ports to be + provided to the user by the NAS. This Attribute MAY be + sent by the server to the client in an Access-Accept + packet. It is intended for use in conjunction with + Multilink PPP [10] or similar uses. It MAY also be sent + by the NAS to the server as a hint that that many ports + are desired for use, but the server is not required to + honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 5 } + + ctxtDialupIfFramedProtocolIpAddress OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "This Attribute indicates the address to be configured + for the user. It MAY be used in Access-Accept packets. + It MAY be used in an Access-Request packet as a hint by + the NAS to the server that it would prefer that address, + but the server is not required to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 6 } + + + ctxtDialupIfFramedProtocolIpNetmask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "This Attribute indicates the IP netmask to be configured + for the user when the user is a router to a network. It + MAY be used in Access-Accept packets. It MAY be used in + an Access-Request packet as a hint by the NAS to the + server that it would prefer that netmask, but the server + is not required to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 7 } + + + + + --- + --- CtxtDialupIfLoginService Table + --- + + ctxtDialupIfLoginServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfLoginServiceEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Base class." + + ::= { contextClasses 6 } + + ctxtDialupIfLoginServiceEntry OBJECT-TYPE + SYNTAX CtxtDialupIfLoginServiceEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfLoginServiceTable PRC." + + PIB-INDEX { ctxtDialupIfLoginServiceId } + UNIQUENESS { } + + ::= { ctxtDialupIfLoginServiceTable 1 } + + + + CtxtDialupIfLoginServiceEntry::= SEQUENCE { + ctxtDialupIfLoginServiceId InstanceId, + ctxtDialupIfLoginServiceIpHost InetAddress + } + + ctxtDialupIfLoginServiceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupIfLoginServiceEntry 1 } + + + ctxtDialupIfLoginServiceIpHost OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginServiceEntry 2 } + + + + --- + --- CtxtDialupIfLoginLat Table (Extends + --- CtxtDialupIfLoginService) + --- + + ctxtDialupIfLoginLatTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfLoginLatEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Extended class." + + ::= { contextClasses 7 } + + ctxtDialupIfLoginLatEntry OBJECT-TYPE + SYNTAX CtxtDialupIfLoginLatEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfLoginLatTable PRC." + EXTENDS { ctxtDialupIfLoginServiceEntry } + UNIQUENESS { } + + ::= { ctxtDialupIfLoginLatTable 1 } + + + CtxtDialupIfLoginLatEntry::= SEQUENCE { + ctxtDialupIfLoginLatService OCTET STRING, + ctxtDialupIfLoginLatNode OCTET STRING, + ctxtDialupIfLoginLatGroup OCTET STRING, + ctxtDialupIfLoginLatPort OCTET STRING + } + + + ctxtDialupIfLoginLatService OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 1 } + + ctxtDialupIfLoginLatNode OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 2 } + + ctxtDialupIfLoginLatGroup OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 3 } + + ctxtDialupIfLoginLatPort OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 4 } + + + + +-- +-- The RSVP Filter table +-- +rsvpFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF RsvpFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "RSVP specific filter table." + + ::= { filterClasses 1 } + +rsvpFilterEntry OBJECT-TYPE + SYNTAX RsvpFilterEntry + STATUS current + DESCRIPTION + " RSVP specific filter table entry." + + PIB-INDEX { rsvpFilterId } + UNIQUENESS { } + + ::= { rsvpFilterTable 1 } + + +RsvpFilterEntry ::= SEQUENCE { + rsvpFilterId InstanceId, + rsvpFilterFlags OCTET STRING, + rsvpFilterSendTTL Unsigned32, + rsvpFilterDClassDscp Integer32, + rsvpFilterSessionDestAddrType InetAddressType, + rsvpFilterSessionDestAddr InetAddress, + rsvpFilterSessionDestAddrMask Unsigned32, + rsvpFilterSessionProtocol Integer32, + rsvpFilterSessionDestPort Unsigned32, + rsvpFilterSessionSrcAddrType InetAddressType, + rsvpFilterSessionSrcAddr InetAddress, + rsvpFilterSessionSrcAddrMask Unsigned32, + rsvpFilterSessionSrcPort Unsigned32, + rsvpFilterStyleValue OCTET STRING + } + +rsvpFilterId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { rsvpFilterEntry 1 } + +rsvpFilterFlags OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The Flags carried in the RSVP header. Currently all these + flags should be set to zero." + ::= { rsvpFilterEntry 2 } + +rsvpFilterSendTTL OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + STATUS current + DESCRIPTION + "The IP TTL value with which the message was sent." + ::= { rsvpFilterEntry 3 } + +rsvpFilterDClassDscp OBJECT-TYPE + SYNTAX Integer32 (-1| 0..63) + STATUS current + DESCRIPTION + "The DClass dscp value." + ::= { rsvpFilterEntry 4 } + +rsvpFilterSessionDestAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the destination IP address." + ::= { rsvpFilterEntry 5 } + +rsvpFilterSessionDestAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The destination IP address." + ::= { rsvpFilterEntry 6 } + +rsvpFilterSessionDestAddrMask OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination IP + address.." + ::= { rsvpFilterEntry 7 } + +rsvpFilterSessionProtocol OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..255) + STATUS current + DESCRIPTION + "The IP protocol to match against the packet's protocol. A + value of -1 means match all." + ::= { rsvpFilterEntry 8 } + +rsvpFilterSessionDestPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The packet's Layer 4 destination port." + ::= { rsvpFilterEntry 9 } + +rsvpFilterSessionSrcAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the source IP address." + ::= { rsvpFilterEntry 10 } + +rsvpFilterSessionSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The source IP address." + ::= { rsvpFilterEntry 11 } + +rsvpFilterSessionSrcAddrMask OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The length of a mask for the matching of the source IP + address." + ::= { rsvpFilterEntry 12 } + +rsvpFilterSessionSrcPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The packet's Layer 4 source port." + ::= { rsvpFilterEntry 13 } + +rsvpFilterStyleValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The RSVP packet's Style value." + ::= { rsvpFilterEntry 14 } + + +-- +-- RSVP Common Context Data +-- + +ctxtRsvpTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 8 } + +ctxtRsvpEntry OBJECT-TYPE + SYNTAX CtxtRsvpEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpId } + UNIQUENESS { } + + ::= { ctxtRsvpTable 1 } + +CtxtRsvpEntry ::= SEQUENCE { + ctxtRsvpId InstanceId, + ctxtRsvpMsgType INTEGER, + ctxtRsvpFlags OCTET STRING, + ctxtRsvpSendTTL Unsigned32, + ctxtRsvpInIntfId Unsigned32, + ctxtRsvpInIntfAddrType InetAddressType, + ctxtRsvpInIntfAddr InetAddress, + ctxtRsvpOutIntfId Unsigned32, + ctxtRsvpOutIntfAddrType InetAddressType, + ctxtRsvpOutIntfAddr InetAddress +} + +ctxtRsvpId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpEntry 1 } + +ctxtRsvpMsgType OBJECT-TYPE + SYNTAX INTEGER { + path (1), + pathErr (2), + resv (3), + resvErr (4) + } + STATUS current + DESCRIPTION + "The RSVP message type." + ::= { ctxtRsvpEntry 2 } + +ctxtRsvpFlags OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The RSVP flags contained in the message header. They are + currently undefined and should be set to zero." + ::= { ctxtRsvpEntry 3 } + +ctxtRsvpSendTTL OBJECT-TYPE + SYNTAX Unsigned32 (0..255) + STATUS current + DESCRIPTION + "The IP TTL value." + ::= { ctxtRsvpEntry 4 } + +ctxtRsvpInIntfId OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The Interface Id." + ::= { ctxtRsvpEntry 5 } + +ctxtRsvpInIntfAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the In Interface IP address." + ::= { ctxtRsvpEntry 6 } + +ctxtRsvpInIntfAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The In Interface IP address." + ::= { ctxtRsvpEntry 7 } + +ctxtRsvpOutIntfId OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The Out Interface Id." + ::= { ctxtRsvpEntry 8 } + +ctxtRsvpOutIntfAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the Out Interface IP address." + ::= { ctxtRsvpEntry 9 } + +ctxtRsvpOutIntfAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The Out Interface IP address." + ::= { ctxtRsvpEntry 10 } + + +-- +-- RSVP Path Context Data +-- +ctxtRsvpPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpPathEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 9 } + +ctxtRsvpPathEntry OBJECT-TYPE + SYNTAX CtxtRsvpPathEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpPathId } + UNIQUENESS { } + + ::= { ctxtRsvpPathTable 1 } + +CtxtRsvpPathEntry ::= SEQUENCE { + ctxtRsvpPathId InstanceId, + ctxtRsvpPathTokenRate Unsigned32 +} + +ctxtRsvpPathId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpPathEntry 1 } + +ctxtRsvpPathTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The token bucket rate for the TSPEC." + ::= { ctxtRsvpPathEntry 2 } + +-- +-- RSVP PathErr Context Data +-- + +ctxtRsvpPathErrTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpPathErrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 10 } + +ctxtRsvpPathErrEntry OBJECT-TYPE + SYNTAX CtxtRsvpPathErrEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpPathErrId } + UNIQUENESS { } + + ::= { ctxtRsvpPathErrTable 1 } + +CtxtRsvpPathErrEntry ::= SEQUENCE { + ctxtRsvpPathErrId InstanceId, + ctxtRsvpPathErrTokenRate Unsigned32, + ctxtRsvpPathErrErrorAddrType InetAddressType, + ctxtRsvpPathErrErrorAddr InetAddress, + ctxtRsvpPathErrErrorCode Unsigned32, + ctxtRsvpPathErrErrorValue Unsigned32 +} + +ctxtRsvpPathErrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpPathErrEntry 1 } + +ctxtRsvpPathErrTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The token bucket rate for the TSPEC." + ::= { ctxtRsvpPathErrEntry 2 } + +ctxtRsvpPathErrErrorAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type IP address in error." + ::= { ctxtRsvpPathErrEntry 3 } + +ctxtRsvpPathErrErrorAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The Error IP address." + ::= { ctxtRsvpPathErrEntry 4 } + +ctxtRsvpPathErrErrorCode OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The RSVP error code." + ::= { ctxtRsvpPathErrEntry 5 } + +ctxtRsvpPathErrErrorValue OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The RSVP error value." + ::= { ctxtRsvpPathErrEntry 6 } + +-- +-- RSVP Resv Context Data +-- + +ctxtRsvpResvTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpResvEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 11 } + +ctxtRsvpResvEntry OBJECT-TYPE + SYNTAX CtxtRsvpResvEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpResvId } + UNIQUENESS { } + + ::= { ctxtRsvpResvTable 1 } + +CtxtRsvpResvEntry ::= SEQUENCE { + ctxtRsvpResvId InstanceId, + ctxtRsvpResvFSpecGrp TagReferenceId, + ctxtRsvpResvSvcType INTEGER, + ctxtRsvpResvTokenRate Unsigned32 +} + +ctxtRsvpResvId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpResvEntry 1 } + +ctxtRsvpResvFSpecGrp OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ctxtRsvpFilterSpecTagId } + STATUS current + DESCRIPTION + "Identifies a group of Filter Spec entries." + ::= { ctxtRsvpResvEntry 2 } + +ctxtRsvpResvSvcType OBJECT-TYPE + SYNTAX INTEGER { + controlledLoad(1), + guaranteed(2) + } + STATUS current + DESCRIPTION + "An enum describing the type of service." + ::= { ctxtRsvpResvEntry 3 } + +ctxtRsvpResvTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The token bucket rate for the TSPEC." + ::= { ctxtRsvpResvEntry 4 } + +-- +-- RSVP ResvErr Context Data +-- +ctxtRsvpResvErrTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpResvErrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 12 } + +ctxtRsvpResvErrEntry OBJECT-TYPE + SYNTAX CtxtRsvpResvErrEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpResvErrId } + UNIQUENESS { } + + ::= { ctxtRsvpResvErrTable 1 } + +CtxtRsvpResvErrEntry ::= SEQUENCE { + ctxtRsvpResvErrId InstanceId, + ctxtRsvpResvErrFSpecGrp TagReferenceId, + ctxtRsvpResvErrSvcType INTEGER, + ctxtRsvpResvErrTokenRate Unsigned32, + ctxtRsvpResvErrErrorAddrType InetAddressType, + ctxtRsvpResvErrErrorAddr InetAddress, + ctxtRsvpResvErrErrorCode Unsigned32, + ctxtRsvpResvErrErrorValue Unsigned32 +} + +ctxtRsvpResvErrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpResvErrEntry 1 } + +ctxtRsvpResvErrFSpecGrp OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ctxtRsvpFilterSpecTagId } + STATUS current + DESCRIPTION + "Identifies a group of Filter Spec entries." + ::= { ctxtRsvpResvErrEntry 2 } + +ctxtRsvpResvErrSvcType OBJECT-TYPE + SYNTAX INTEGER { + controlledLoad(1), + guaranteed(2) + } + STATUS current + DESCRIPTION + "An enum describing the type of service." + ::= { ctxtRsvpResvErrEntry 3 } + +ctxtRsvpResvErrTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The token bucket rate for the TSPEC." + ::= { ctxtRsvpResvErrEntry 4 } + +ctxtRsvpResvErrErrorAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type IP address in error." + ::= { ctxtRsvpResvErrEntry 5 } + +ctxtRsvpResvErrErrorAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The Error IP address." + ::= { ctxtRsvpResvErrEntry 6 } + +ctxtRsvpResvErrErrorCode OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The RSVP error code." + ::= { ctxtRsvpResvErrEntry 7 } + +ctxtRsvpResvErrErrorValue OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The RSVP error value." + ::= { ctxtRsvpResvErrEntry 8 } + +-- +-- RSVP Filter Spec Context Data +-- + +ctxtRsvpFilterSpecTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtRsvpFilterSpecEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { contextClasses 13 } + +ctxtRsvpFilterSpecEntry OBJECT-TYPE + SYNTAX CtxtRsvpFilterSpecEntry + STATUS current + DESCRIPTION + "" + + PIB-INDEX { ctxtRsvpFilterSpecId } + UNIQUENESS { } + + ::= { ctxtRsvpFilterSpecTable 1 } + +CtxtRsvpFilterSpecEntry::= SEQUENCE { + ctxtRsvpFilterSpecId InstanceId, + ctxtRsvpFilterSpecTagId TagId, + ctxtRsvpFilterSpecAddrType InetAddressType, + ctxtRsvpFilterSpecAddr InetAddress, + ctxtRsvpFilterSpecPort Unsigned32 +} + +ctxtRsvpFilterSpecId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ctxtRsvpFilterSpecEntry 1 } + +ctxtRsvpFilterSpecTagId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Identifies the group of Filter Spec PRIs that this PRI + belongs to." + ::= { ctxtRsvpFilterSpecEntry 2 } + +ctxtRsvpFilterSpecAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify the + type of the IP address." + ::= { ctxtRsvpFilterSpecEntry 3 } + +ctxtRsvpFilterSpecAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The Filter Spec IP address." + ::= { ctxtRsvpFilterSpecEntry 4 } + +ctxtRsvpFilterSpecPort OBJECT-TYPE + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The packet's Layer 4 destination port." + ::= { ctxtRsvpFilterSpecEntry 5 } + + +-- +-- Authentication Extension Tables +-- + +-- +-- AuthExtensions Base Table +-- + +authExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthExtEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This is an abstract PRC. This PRC can be extended by + authentication PRCs that contain attributes specific to + that authentication protocol. An instance of the extended + class is created by the PEP and sent to the PDP. The PDP + may send information back to the PEP or may uses the + information to authenticate the PEP's access request. + This PRC itself should not be instantiated. + + This is a 'transient' class. Its instances are temporary + and are deleted by the PEP after a certain time/event. + Thus it must not be referred to by the server." + + ::= { authClasses 1 } + +authExtEntry OBJECT-TYPE + SYNTAX AuthExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthExtTable PRC." + + PIB-INDEX { authExtId } + UNIQUENESS { } + + ::= { authExtTable 1 } + +AuthExtEntry ::= SEQUENCE { + authExtId InstanceId +} + +authExtId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of the + entended provisioning class." + + ::= { authExtEntry 1 } + + + +-- +-- UserAuthExt Table +-- + +userAuthExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF UserAuthExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain user + authentication fields. This PRC extends the base PRC + authExtEntry." + + ::= { authClasses 2 } + +userAuthExtEntry OBJECT-TYPE + SYNTAX UserAuthExtEntry + STATUS current + DESCRIPTION + "Entry for the UserAuthExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC AuthExt + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { userAuthExtTable 1 } + +UserAuthExtEntry ::= SEQUENCE { + userAuthExtRealm OCTET STRING, + userAuthExtUsername OCTET STRING +} + + +userAuthExtRealm OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "user realm octet string." + + ::= { userAuthExtEntry 1 } + +userAuthExtUsername OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Username octet string." + + ::= { userAuthExtEntry 2 } + + + + +-- +-- AuthChapExt Table +-- + +authChapExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthChapExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain CHAP + authentication fields. This PRC extends the PRC + userAuthExtEntry." + + ::= { authClasses 3 } + +authChapExtEntry OBJECT-TYPE + SYNTAX AuthChapExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthChapExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC [SPPI]." + + EXTENDS { userAuthExtEntry } + UNIQUENESS { } + + ::= { authChapExtTable 1 } + +AuthChapExtEntry::= SEQUENCE { + authChapExtId Unsigned32, + authChapExtChal OCTET STRING, + authChapExtResp OCTET STRING +} + +authChapExtId OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "CHAP Id field." + + ::= { authChapExtEntry 1 } + +authChapExtChal OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "CHAP Challenge octet string. The challenge is generated + by the PEP." + + ::= { authChapExtEntry 2 } + +authChapExtResp OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "CHAP Challenge Response octet string. The challenge + response is sent to the PDP along with the challenge." + + ::= { authChapExtEntry 3 } + + +-- +-- AuthPapExt Table +-- + +authPapExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthPapExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain PAP + authentication fields. This PRC extends the PRC + userAuthExtEntry." + + ::= { authClasses 4 } + +authPapExtEntry OBJECT-TYPE + SYNTAX AuthPapExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthPapExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC [SPPI]." + + EXTENDS { userAuthExtEntry } + UNIQUENESS { } + + ::= { authPapExtTable 1 } + +AuthPapExtEntry::= SEQUENCE { + authPapExtPwd OCTET STRING +} + +authPapExtPwd OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "PAP password octet string." + + ::= { authPapExtEntry 1 } + + + + + +-- +-- AuthExtResult Table +-- + +authExtResultTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthExtResultEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain authentication + results. This PRC extends the base PRC authExtEntry." + + ::= { authClasses 5 } + +authExtResultEntry OBJECT-TYPE + SYNTAX AuthExtResultEntry + STATUS current + DESCRIPTION + "Entry for the authExtResultTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC AuthExt + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authExtResultTable 1 } + +AuthExtResultEntry ::= SEQUENCE { + authExtResultSuccess TruthValue +} + + +authExtResultSuccess OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Set to 'true' if authentication was successful, else + false." + + ::= { authExtResultEntry 1 } + + +-- +-- AuthEapReqExt Table +-- + +authEapReqExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthEapReqExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain EAP + authentication fields. This PRC extends the base PRC + authExtEntry. The PEP uses this PRC to send EAP messages + to the PDP." + + ::= { authClasses 6 } + +authEapReqExtEntry OBJECT-TYPE + SYNTAX AuthEapReqExtEntry + STATUS current + DESCRIPTION + "Entry oid for the authEapReqExtTable PRC. InstanceId's + for this extended PRC are assigned by the base PRC + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authEapReqExtTable 1 } + +AuthEapReqExtEntry::= SEQUENCE { + authEapReqExtSpecific OCTET STRING +} + +authEapReqExtSpecific OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Opaque EAP Request octet string." + + ::= { authEapReqExtEntry 1 } + + +-- +-- AuthEapRespExt Table +-- + +authEapRespExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthEapRespExtEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain EAP + authentication fields. This PRC extends the base PRC + authExtEntry. The PDP responds using this PRC for EAP + exchanges." + + ::= { authClasses 7 } + +authEapRespExtEntry OBJECT-TYPE + SYNTAX AuthEapRespExtEntry + STATUS current + DESCRIPTION + "Entry oid for the authEapRespExtTable PRC. InstanceId's + for this extended PRC are assigned by the base PRC + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authEapRespExtTable 1 } + +AuthEapRespExtEntry::= SEQUENCE { + authEapRespExtSpecific OCTET STRING +} + +authEapRespExtSpecific OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Opaque EAP Response octet string." + + ::= { authEapRespExtEntry 1 } + + +-- +-- conformance section tbd +-- + +END diff --git a/pibs/tubs/ACCESSBIND-PIB-orig b/pibs/tubs/ACCESSBIND-PIB-orig new file mode 100644 index 0000000..c0d7f97 --- /dev/null +++ b/pibs/tubs/ACCESSBIND-PIB-orig @@ -0,0 +1,1626 @@ + ACCESSBIND-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + InstanceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination, PrcIdentifier + FROM FRAMEWORK-ROLE-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + TruthValue, PhysAddress + FROM SNMPv2-TC; + + accessBindPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200107101600Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + + Walter Weiss + Ellacoya Networks + 7 Henry Clay Drive + Merrimack, NH 03054 + Phone: 603-879-7364 + E-mail: wweiss@ellacoya.com + " + DESCRIPTION + "A PIB module containing the set of classes to bind + authorization and authentication to COPS + Provisioning " + + ::= { pib xxx } -- xxx to be assigned by IANA + + + -- + -- The branch OIDs in the AccessBind PIB + -- + + capabilityClasses OBJECT IDENTIFIER ::= { accessBindPib 1 } + sessionClasses OBJECT IDENTIFIER ::= { accessBindPib 2 } + accessorClasses OBJECT IDENTIFIER ::= { accessBindPib 3 } + contextClasses OBJECT IDENTIFIER ::= { accessBindPib 4 } + authClasses OBJECT IDENTIFIER ::= { accessBindPib 5 } + + + -- + -- Session Table + -- + + sessionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SessionEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP. The PDP will fill in the sessionStatus field + and send the instance back when sending a decision." + + ::= { sessionClasses 1 } + + sessionEntry OBJECT-TYPE + SYNTAX SessionEntry + STATUS current + DESCRIPTION + "An instance of the sessionTable PRC." + + PIB-INDEX { sessionId } + UNIQUENESS { } + + ::= { sessionTable 1 } + + SessionEntry ::= SEQUENCE { + + sessionId InstanceId, + sessionStatus INTEGER, + sessionRealm OCTET STRING, + sessionUsername OCTET STRING, + sessionDataPath Prid, + sessionBinding ReferenceId, + sessionAccessor ReferenceId + } + + sessionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { sessionEntry 1 } + + + sessionStatus OBJECT-TYPE + SYNTAX INTEGER { + Pending(0), + Enabled(1), + Disabled(2) + } + STATUS current + DESCRIPTION + "This attribute is set by the PDP. Set to true(1) if the + PDP has authorized the session, else set to false(2)." + + ::= { sessionEntry 2 } + + sessionRealm OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Realm name in which the client is requesting + access (sometimes referred to as a domain name." + + ::= { sessionEntry 3 } + + sessionUsername OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Unique user name to identify the client requesting + access." + + ::= { sessionEntry 4 } + + sessionDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + + DESCRIPTION + "This attribute references the first functional data path + element to process data flow for this session. It is + first assigned by the PEP with the + accessorElementDefaultSessionDataPath in the + accessorElement and may optionally be reassigned by the + PDP." + + ::= { sessionEntry 5 } + + + sessionBinding OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { sessionEntry } + STATUS current + DESCRIPTION + "This attribute allows a PEP to indicate to the PDP that + this session was generated downstream on the data path + from a session for which an PEP has previously generated + an authorization request. This allows the PDP to + reference additional knowledge acquired from the previous + session such as the credentials or interface data. " + + ::= { sessionEntry 6 } + + + sessionAccessor OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { accessorEntry } + STATUS current + DESCRIPTION + "This attribute references the instance of the previously + provisioned Accessor that resulted in this PEP Access + Request." + + ::= { sessionEntry 7 } + + + -- + -- Accessor Table + -- + + accessorTable OBJECT-TYPE + SYNTAX SEQUENCE OF AccessorEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "The AccessorTable identifies when the PEP should send an + access or authentication request to the PDP. As a + result of this request, a new session may be started. + Hence, the AccessorTable can be said to create or remove + SessionTable entries. " + + + ::= { accessorClasses 1 } + + accessorEntry OBJECT-TYPE + SYNTAX AccessorEntry + STATUS current + DESCRIPTION + " An instance of this class defines the circumstances for + generating an access request, and provides the means for + specifying the contents of the PEP Access Request." + PIB-INDEX { accessorId } + UNIQUENESS { accessorRequestAuth, + accessorAccElmRef, + accessorAuthProtocol, + accessorAuthContext, + accessorDefaultDataPath + } + + ::= { accessorTable 1} + + AccessorEntry::= SEQUENCE { + accessorId InstanceId, + accessorRequestAuth TruthValue, + accessorAccElmRef ReferenceId, + accessorAuthProtocol TagReferenceId, + accessorAuthContext TagReferenceId, + accessorDefaultDataPath Prid + } + + accessorId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies + an instance of the accessorTable class." + + ::= { accessorEntry 1} + + accessorRequestAuth OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether or not authentication is required for + this session. TRUE indicates that authorization is + required." + + ::= { accessorEntry 2} + + accessorAccElmRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { accessorElementEntry } + STATUS current + DESCRIPTION + "A reference to an AccessorElementTable instance which + + determines the scope (criteria for generating a new + request) and interim forwarding behavior." + + ::= { accessorEntry 3} + + accessorAuthProtocol OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { accessorAuthProtocolGroup } + STATUS current + DESCRIPTION + "Identifies a list of accessorAuthProtocolTable entries + associated with this accessor instance." + + ::= { accessorEntry 4} + + accessorAuthContext OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { contextDataGroup } + STATUS current + DESCRIPTION + "Identifies a list of ContextDataTable entries + associated with this accessor instance." + + ::= { accessorEntry 5} + + accessorDefaultDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The data path for �out of scope� traffic." + + ::= { accessorEntry 6} + + -- + -- AccessorElement Table + -- + + accessorElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF AccessorElementEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table defines the criteria to be used to generate + an access request. It also defines the interim forwarding + behavior pending a decision from the server." + ::= { accessorClasses 2 } + + accessorElementEntry OBJECT-TYPE + SYNTAX AccessorElementEntry + STATUS current + DESCRIPTION + "An instance of this class defines request trigger + criteria and interim forwarding behavior for packets." + + PIB-INDEX { accessorElementId } + UNIQUENESS { accessorElementScope } + + ::= { accessorElementTable 1} + + AccessorElementEntry::= SEQUENCE { + accessorElementId InstanceId, + accessorElementScope TagReferenceId, + accessorElementInterimFwdBehavior INTEGER, + accessorElementDefaultSessionDataPath Prid + } + + accessorElementId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the accessorElementTable class." + + ::= { accessorElementEntry 1} + + accessorElementScope OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { accessorSessionScopeGroup } + STATUS current + DESCRIPTION + "Identifies a list of AccessorSessionScopeTable instances + associated with an instance of this class. This list + defines the criteria for partitioning various portions of + traffic into distinct sessions." + + ::= { accessorElementEntry 2} + + accessorElementInterimFwdBehavior OBJECT-TYPE + SYNTAX INTEGER { + DROP (0), + FORWARD (1), + QUEUE (2) + } + STATUS current + DESCRIPTION + "The forwarding behavior to use while awaiting a PDP + Access Response message." + + ::= { accessorElementEntry 3} + + accessorElementDefaultSessionDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The default data path for each session while waiting for +a + PDP Access Response message." + + + ::= { accessorElementEntry 4} + +-- +-- AccessorSessionScope Table +-- + + accessorSessionScopeTable OBJECT-TYPE + SYNTAX SEQUENCE OF AccessorSessionScopeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the criteria to be used for + partitioning various portions of traffic into distinct + sessions." + + ::= { accessorClasses 3 } + + accessorSessionScopeEntry OBJECT-TYPE + SYNTAX AccessorSessionScopeEntry + STATUS current + DESCRIPTION + "An instance of this class defines an individual criterion + to be used towards generating an access request." + PIB-INDEX { accessorSessionScopeId } + UNIQUENESS { accessorSessionScopeGroup, + accessorSessionScopeScopeRef + } + + ::= { accessorSessionScopeTable 1} + + AccessorSessionScopeEntry::= SEQUENCE { + accessorSessionScopeId InstanceId, + accessorSessionScopeGroup TagId, + accessorSessionScopeFilter Prid, + accessorSessionScopePrecedence INTEGER + } + + accessorSessionScopeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the accessorSessionScopeTable class." + + ::= { accessorSessionScopeEntry 1} + + accessorSessionScopeGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Represents the binding between the accessorElementTable + and the accessorSessionScope entries. A group of + + accessorSessionScope entries constitutes the criteria for + partitioning various portions of traffic into distinct + sessions." + + ::= { accessorSessionScopeEntry 2} + + accessorSessionScopeFilter OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "Pointer to a filter to be used as the criteria." + ::= { accessorSessionScopeEntry 3} + + accessorSessionScopePrecedence OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "Represents the precedence of this criterion with respect + to other criteria within the same group. When the + precedence is unique, the instance represents an + alternative criteria (an ORing function). When the + precedence for two or more instances of the + accessorSessionScope class is the same, the attributes + within all the instances are treated collectively as a + single filter criteria." + + ::= { accessorSessionScopeEntry 4} + + + -- + -- AccessorAuthProtocol Table + -- + + + + + accessorAuthProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF AccessorAuthProtocolEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class lists the authentication protocols that can + be used for an access request originating from a + particular instance of the accessorTable." + + ::= { accessorClasses 4 } + + accessorAuthProtocolEntry OBJECT-TYPE + SYNTAX AccessorAuthProtocolEntry + STATUS current + DESCRIPTION + "An instance of this class describes an authentication + protocol that may be used for an access request. Instances + + of this class that share the same TagId value collectively + constitute a list of authentication protocols that may be + used for a given access request" + PIB-INDEX { accessorAuthProtocolId } + UNIQUENESS { accessorAuthProtocolGroup, + accessorAuthProtocolAuthMechanism + } + + ::= { accessorAuthProtocolTable 1} + + AccessorAuthProtocolEntry::= SEQUENCE { + accessorAuthProtocolId InstanceId, + accessorAuthProtocolGroup TagId, + accessorAuthProtocolAuthMechanism INTEGER + } + + accessorAuthProtocolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the ContextDataTable class." + + ::= { accessorAuthProtocolEntry 1} + + accessorAuthProtocolGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Represents a binding between an accessorTable instance + and a list of accessorAuthProtocolTable instances." + + ::= { accessorAuthProtocolEntry 2} + + accessorAuthProtocolAuthMechanism OBJECT-TYPE + SYNTAX INTEGER { + PAP (0), + CHAP (1), + EAP-MD5(2), + EAP-TLS(3) + } + STATUS current + DESCRIPTION + "The authentication protocol that may be used for an + access request." + ::= { accessorAuthProtocolEntry 3} + + + + + -- + -- ContextData Table + -- + + +contextDataTable OBJECT-TYPE + SYNTAX SEQUENCE OF ContextDataEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class points to the context information to be + included with an access request." + + ::= { contextClasses 1 } + + contextDataEntry OBJECT-TYPE + SYNTAX ContextDataEntry + STATUS current + DESCRIPTION + "An instance of this class contains the type description + (COPS-PR OID) of the class which needs to be filled in by + the PEP and included with a PEP access request." + PIB-INDEX { contextDataId } + UNIQUENESS { } + + ::= { contextDataTable 1} + + ContextDataEntry::= SEQUENCE { + contextDataId InstanceId, + contextDataGroup TagId, + contextDataSessionRef ReferenceId, + contextDataIfElement PrcIdentifier, + contextDataEncapsulation INTEGER + } + + contextDataId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the contextDataTable class." + + ::= { contextDataEntry 1} + + contextDataGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Defines the grouping of contextData instances + that are applicable to a given Accessor. This attribute + MUST NOT be specified when the instance is used in + Session-specific contextData Request message." + + ::= { contextDataEntry 2} + + contextDataSessionRef OBJECT-TYPE + SYNTAX ReferenceId + + PIB-REFERENCES { sessionEntry } + STATUS current + DESCRIPTION + "This attribute is used to specify the Session for which + the ContextData is being requested with a Session- + specific ContextData Request. This attribute MUST NOT be + specified when the instance of the ContextData class is + used in an Accessor Provisioning Decision message." + + ::= { contextDataEntry 3} + + contextDataIfElement OBJECT-TYPE + SYNTAX PrcIdentifier + STATUS current + DESCRIPTION + "The OID of a class whose instance is to be included with + the PEP access request or Session-specific ContextData + Response." + + ::= { contextDataEntry 4} + + contextDataEncapsulation OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "This attribute allows one to distinguish between inner + and outer headers when there are multiple encapsulated + headers of the same type in a packet. + + A value of: + 0 means all headers, + positive number �n� means the �n�th header starting + from the outermost, + negative number �n� means the �n�th header starting from + the innermost." + + ::= { contextDataEntry 5} + + + + -- + -- Layer 3 Header Data PRC + -- + + ctxtL3HdrTable OBJECT-TYPE + SYNTAX SEQUENCE OF ctxtL3HdrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP to provide the PDP with information it + requested in the ContextData PRC. The PDP uses + this PRC to make Authentication/Provisioning decisions." + + + ::= { contextClasses 2 } + + ctxtL3HdrEntry OBJECT-TYPE + SYNTAX CtxtL3HdrEntry + STATUS current + DESCRIPTION + "An instance of the ctxtL3HdrTable PRC." + + PIB-INDEX { ctxtL3HdrId } + UNIQUENESS { } + + ::= { ctxtL3HdrTable 1 } + + CtxtL3HdrEntry::= SEQUENCE { + ctxtL3HdrId InstanceId, + ctxtL3HdrSrcAddrType InetAddressType, + ctxtL3HdrSrcAddr InetAddress, + ctxtL3HdrDstAddrType InetAddressType, + ctxtL3HdrDstAddr InetAddress, + ctxtL3HdrProtocol Unsigned32, + ctxtL3HdrSrcPort Unsigned32, + ctxtL3HdrDstPort Unsigned32, + ctxtL3HdrDscp Unsigned32, + ctxtL3HdrEcn TruthValue, + ctxtL3HdrIpOpt TruthValue, + ctxtL3HdrEncap Integer32 + } + + ctxtL3HdrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtL3HdrEntry 1 } + + ctxtL3HdrSrcAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify + the type of the packet's source L3 address)." + + ::= { ctxtL3HdrEntry 2 } + + ctxtL3HdrSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + " The packet's source L3 address." + + + ::= { ctxtL3HdrEntry 3 } + + ctxtL3HdrDstAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value [INETADDR] to specify + the type of the packet's destination L3 address." + + ::= { ctxtL3HdrEntry 4 } + + + ctxtL3HdrDstAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The packet's destination L3 address." + + ::= { ctxtL3HdrEntry 5 } + + + ctxtL3HdrProtocol OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The packet's protocol field." + + ::= { ctxtL3HdrEntry 6 } + + ctxtL3HdrSrcPort OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This attribute binds an existing upstream session to + this session instance." + + ::= { ctxtL3HdrEntry 7 } + + ctxtL3HdrDstPort OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This attribute binds an existing upstream session to + this session instance." + + ::= { ctxtL3HdrEntry 8 } + + ctxtL3HdrDscp OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "." + + + ::= { ctxtL3HdrEntry 9 } + + ctxtL3HdrEcn OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "PEP sets this attribute to true(1) if ECN capable." + + ::= { ctxtL3HdrEntry 10 } + + ctxtL3HdrIpOpt OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "IP Options field in the packet." + + ::= { ctxtL3HdrEntry 11 } + + ctxtL3HdrEncap OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute specifies which encapsulated header is + being described. The sign on this value will be the same + as the value specified in the ContextData + instance that requested this header. If the original + ContextData instance specified a + ContextDataEncapsulation value of zero (meaning + return all headers), then all instances of this attribute + MUST be expressed as positive numbers. + + A value of: + + positive number �n� means the �n�th header starting + from the outermost, + negative number �n� means the �n�th header starting from + the innermost." + + ::= { ctxtL3HdrEntry 12 } + + +-- +-- 802.1 Header Data PRC +-- + +ctxt802HdrTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ctxt802HdrEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "An instance of this class is created by the PEP and sent + to the PDP to provide the PDP with information it + requested in the ContextData PRC. The PDP uses + + this PRC to make Authorization/Provisioning decisions." + + ::= { contextClasses 3 } + + ctxt802HdrEntry OBJECT-TYPE + SYNTAX Ctxt802HdrEntry + STATUS current + DESCRIPTION + "An instance of the ctxt802HdrTable PRC." + + PIB-INDEX { ctxt802HdrId } + UNIQUENESS { } + + ::= { ctxt802HdrTable 1 } + + Ctxt802HdrEntry::= SEQUENCE { + ctxt802HdrId InstanceId, + ctxt802HdrSrcAddr PhysAddress, + ctxt802HdrDstAddr PhysAddress, + ctxt802HdrProtocol Unsigned32, + ctxt802HdrPriority BITS, + ctxt802HdrVlan Unsigned32, + ctxt802HdrEncap Integer32 + } + + ctxt802HdrId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxt802HdrEntry 1 } + + + ctxt802HdrSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + " The packet's source MAC address." + + ::= { ctxt802HdrEntry 2 } + + ctxt802HdrDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The packet's destination MAC address." + + ::= { ctxt802HdrEntry 3 } + + + ctxt802HdrProtocol OBJECT-TYPE + + SYNTAX Unsigned32 (0..'ffff'h) + STATUS current + DESCRIPTION + "The L2 packet's protocol field." + + ::= { ctxt802HdrEntry 4 } + + + ctxt802HdrPriority OBJECT-TYPE + SYNTAX Unsigned32 (0..7) + STATUS current + DESCRIPTION + "The L2 packet's priority field. This attribute is only + valid for packets using the 802.1q header extension." + + ::= { ctxt802HdrEntry 5 } + + ctxt802HdrVlan OBJECT-TYPE + SYNTAX Unsigned32 (1..4094) + STATUS current + DESCRIPTION + "The L2 packet's VLAN field. This attribute is only valid + for packets using the 802.1q header extension." + + ::= { ctxt802HdrEntry 6 } + + ctxt802HdrEncap OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute specifies which encapsulated header is + being described. The sign on this value will be the same + as the value specified in the ContextData + instance that requested this header. If the original + ContextData instance specified an + ContextDataEncapsulation value of zero (meaning + return all headers), then all instances of this attribute + MUST be expressed as positive numbers. + + A value of: + positive number �n� means the �n�th header starting + from the outermost, + negative number �n� means the �n�th header starting from + the innermost." + + ::= { ctxt802HdrEntry 7 } + + + -- + -- CtxtDialupInterface Table + -- + + ctxtDialupInterfaceTable OBJECT-TYPE + + SYNTAX SEQUENCE OF CtxtDialupInterfaceEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "." + + ::= { contextClasses 4 } + + ctxtDialupInterfaceEntry OBJECT-TYPE + SYNTAX CtxtDialupInterfaceEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupInterfaceTable PRC." + + PIB-INDEX { ctxtDialupInterfaceId } + UNIQUENESS { } + + ::= { ctxtDialupInterfaceTable 1 } + + CtxtDialupInterfaceEntry::= SEQUENCE { + ctxtDialupInterfaceId InstanceId, + ctxtDialupInterfaceNASPort Integer32, + ctxtDialupInterfaceNASPortId OCTET STRING, + ctxtDialupInterfaceNASPortType INTEGER, + ctxtDialupInterfaceCalledStationId OCTET STRING, + ctxtDialupInterfaceCallingStationId OCTET STRING, + ctxtDialupInterfaceConnectInfo OCTET STRING + } + + ctxtDialupInterfaceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupInterfaceEntry 1 } + + + ctxtDialupInterfaceNASPort OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This Attribute indicates the physical port number of the + NAS which is authenticating the user. It is only used in + Access-Request packets. Note that this is using 'port' + in its sense of a physical connection on the NAS, not in + the sense of a TCP or UDP port number." + + ::= { ctxtDialupInterfaceEntry 2 } + + + ctxtDialupInterfaceNASPortId OBJECT-TYPE + + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute contains a text string which identifies + the port of the NAS which is authenticating the user. It + is only used in Access-Request and Accounting-Request + packets. Note that this is using 'port' in its sense of + a physical connection on the NAS, not in the sense of a + TCP or UDP port number. " + + ::= { ctxtDialupInterfaceEntry 2 } + + ctxtDialupInterfaceNASPortType OBJECT-TYPE + SYNTAX INTEGER { + radAsync(0), + radSync(1), + radIsdnSync(2), + radIsdnAsyncV120(3), + radIsdnAsyncV110(4), + radVirtual(5), + radPIAFS(6), + radHdlcClearChannel(7), + radX25(8), + radX75(9), + radG3Fax(10), + radSDSL(11), + radAdslCAP(12), + radAdslDMT(13), + radIdsl(14), + radEthernet(15), + radXdsl(16), + radCable(17), + radWirelessOther(18), + radWirelessIEEE80211(19) + } + STATUS current + DESCRIPTION + "This Attribute indicates the type of the physical port + of the NAS which is authenticating the user. It can be + used instead of or in addition to the radNasPort (5) + attribute. It is only used in Access-Request packets. + Either radNasPort (5) or radNasPortType or both SHOULD be + present in an Access-Request packet, if the NAS + differentiates among its ports. + + A value of 'radAsync(0)' indicates Async. + + A value of 'radSync(1)' indicates Sync. + + A value of 'radIsdnSync(2)' indicates ISDN Sync. + + A value of 'radIsdnAsyncV120(3)' indicates ISDN + Async V.120. + + + A value of 'radIsdnAsyncV110(4)' indicates ISDN + Async V.110. + + A value of 'radVirtual(5)' indicates Virtual. + Virtual refers to a connection to the NAS via some + transport protocol, instead of through a physical + port. For example, if a user telnetted into a NAS to + authenticate himself as an Outbound-User, the + Access-Request might include radNasPortType = + Virtual as a hint to the RADIUS server that the user + was not on a physical port. + + A value of 'radPIAFS(6)' indicates PIAFS. PIAFS is a + form of wireless ISDN commonly used in Japan, and + stands for PHS (Personal Handyphone System) Internet + Access Forum Standard (PIAFS). + + A value of 'radHdlcClearChannel(7)' indicates HDLC + Clear Channel. + + A value of 'radX25(8)' indicates X.25. + + A value of 'radX75(9)' indicates X.75. + + A value of 'radG3Fax(10)' indicates G.3 Fax. + + A value of 'radSDSL(11)' indicates SDSL � Symmetric + DSL. + + A value of 'radAdslCAP(12)' indicates ADSL-CAP - + Asymmetric DSL, Carrierless Amplitude Phase + Modulation. + + A value of 'radAdslDMT(13)' indicates ADSL-DMT - + Asymmetric DSL, Discrete Multi-Tone. + + A value of 'radIdsl(14)' indicates IDSL � ISDN + Digital Subscriber Line. + + A value of 'radEthernet(15)' indicates Ethernet. + + A value of 'radXdsl(16)' indicates xDSL - Digital + Subscriber Line of unknown type. + + A value of 'radCable(17)' indicates Cable. + + A value of 'radWirelessOther(18)' indicates Wireless + - Other. + + A value of 'radWirelessIEEE80211(19)' indicates + Wireless - IEEE 802.11." + ::= { ctxtDialupInterfaceEntry 2 } + + + ctxtDialupInterfaceCalledStationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the user called, + using Dialed Number Identification (DNIS) or similar + technology. Note that this may be different from the + phone number the call comes in on. It is only used in + Access-Request packets. " + ::= { ctxtDialupInterfaceEntry 2 } + + ctxtDialupInterfaceConnectInfo OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This Attribute allows the NAS to send in the Access- + Request packet the phone number that the call came from, + using Automatic Number Identification (ANI) or similar + technology. It is only used in Access-Request packets." + ::= { ctxtDialupInterfaceEntry 2 } + + + + + --- + --- CtxtDialupInterfaceFramedProtocol Table + --- + + ctxtDialupIfFramedProtocolTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfFramedProtocolEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "." + + ::= { contextClasses 5 } + + ctxtDialupIfFramedProtocolEntry OBJECT-TYPE + SYNTAX CtxtDialupIfFramedProtocolEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfFramedProtocolTable PRC." + + PIB-INDEX { ctxtDialupIfFramedProtocolId } + UNIQUENESS { } + + ::= { ctxtDialupIfFramedProtocolTable 1 } + + CtxtDialupInterfaceEntry::= SEQUENCE { + ctxtDialupIfFramedProtocolId InstanceId, + ctxtDialupIfFramedProtocolProt INTEGER, + + ctxtDialupIfFramedProtocolMTU Integer32, + ctxtDialupIfFramedProtocolCompression INTEGER, + ctxtDialupIfFramedProtocolPortLimit Unsigned32, + ctxtDialupIfFramedProtocolIpAddress IpAddress, + ctxtDialupIfFramedProtocolIpNetmask IpAddress + } + + ctxtDialupIfFramedProtocolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupIfFramedProtocolEntry 1 } + + + ctxtDialupIfFramedProtocolProt OBJECT-TYPE + SYNTAX INTEGER { + radPPP(1), + radSLIP(2), + radARAP(3), + radGandalf(4), + radXylogics(5), + radX75Synchronous(6) + } + STATUS current + DESCRIPTION + "This Attribute indicates the framing to be used for + framed access. It MAY be used in both Access-Request and + Access-Accept packets. + + A value of 'radPPP(1)' represents PPP. + + A value of 'radSLIP(2)' represents SLIP. + + A value of 'radARAP(3)' represents AppleTalk Remote + Access Protocol (ARAP). + + A value of 'radGandalf(4)' represents Gandalf + proprietary SingleLink/MultiLink protocol. + + A value of 'radXylogics(5)' represents Xylogics + proprietary IPX/SLIP. + + A value of 'radX75Synchronous(6)' represents X.75 + Synchronous." + + ::= { ctxtDialupIfFramedProtocolEntry 2 } + + + ctxtDialupIfFramedProtocolMTU OBJECT-TYPE + SYNTAX Integer32 + + STATUS current + DESCRIPTION + "This Attribute indicates the Maximum Transmission Unit + to be configured for the user, when it is not negotiated + by some other means (such as PPP). It MAY be used in + Access-Accept packets. It MAY be used in an Access- + Request packet as a hint by the NAS to the server that it + would prefer that value, but the server is not required + to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 3 } + + ctxtDialupIfFramedProtocolCompression OBJECT-TYPE + SYNTAX INTEGER { + radNone(0), + radVJ(1), + radIPXheader(2), + radStacLZS(3) + } + STATUS current + DESCRIPTION + "This Attribute indicates a compression protocol to be + used for the link. It MAY be used in Access-Accept + packets. It MAY be used in an Access-Request packet as a + hint to the server that the NAS would prefer to use that + compression, but the server is not required to honor the + hint. + + More than one compression protocol Attribute MAY be sent. + It is the responsibility of the NAS to apply the proper + compression protocol to appropriate link traffic. + + A value of 'radNone(0)' indicates None. + + A value of 'radVJ(1)' indicates VJ TCP/IP header + compression. + + A value of 'radIPXheader(2)' indicates IPX header + compression. + + A value of 'radStacLZS(3)' indicates Stac-LZS + compression." + + ::= { ctxtDialupIfFramedProtocolEntry 4 } + + + ctxtDialupIfFramedProtocolPortLimit OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This Attribute sets the maximum number of ports to be + provided to the user by the NAS. This Attribute MAY be + sent by the server to the client in an Access-Accept + + packet. It is intended for use in conjunction with + Multilink PPP [10] or similar uses. It MAY also be sent + by the NAS to the server as a hint that that many ports + are desired for use, but the server is not required to + honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 5 } + + ctxtDialupIfFramedProtocolIpAddress OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "This Attribute indicates the address to be configured + for the user. It MAY be used in Access-Accept packets. + It MAY be used in an Access-Request packet as a hint by + the NAS to the server that it would prefer that address, + but the server is not required to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 6 } + + + ctxtDialupIfFramedProtocolIpNetmask OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "This Attribute indicates the IP netmask to be configured + for the user when the user is a router to a network. It + MAY be used in Access-Accept packets. It MAY be used in + an Access-Request packet as a hint by the NAS to the + server that it would prefer that netmask, but the server + is not required to honor the hint." + + ::= { ctxtDialupIfFramedProtocolEntry 7 } + + + + + --- + --- CtxtDialupIfLoginService Table + --- + + ctxtDialupIfLoginServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfLoginServiceEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Base class." + + ::= { contextClasses 6 } + + ctxtDialupIfLoginServiceEntry OBJECT-TYPE + SYNTAX CtxtDialupIfLoginServiceEntry + STATUS current + + DESCRIPTION + "Entry oid of the ctxtDialupIfLoginServiceTable PRC." + + PIB-INDEX { ctxtDialupIfLoginServiceId } + UNIQUENESS { } + + ::= { ctxtDialupIfLoginServiceTable 1 } + + + + CtxtDialupIfLoginServiceEntry::= SEQUENCE { + ctxtDialupIfLoginServiceId InstanceId, + ctxtDialupIfLoginIpHost IpAddress + } + + ctxtDialupIfLoginServiceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + provisioning class." + + ::= { ctxtDialupIfLoginServiceEntry 1 } + + + ctxtDialupIfLoginIpHost OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginServiceEntry 2 } + + + + --- + --- CtxtDialupIfLoginLat Table (Extends CtxtDialupIfLoginService) + --- + + ctxtDialupIfLoginLatTable OBJECT-TYPE + SYNTAX SEQUENCE OF CtxtDialupIfLoginLatEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Extended class." + + ::= { contextClasses 7 } + + ctxtDialupIfLoginLatEntry OBJECT-TYPE + SYNTAX CtxtDialupIfLoginLatEntry + STATUS current + DESCRIPTION + "Entry oid of the ctxtDialupIfLoginLatTable PRC." + + + EXTENDS { ctxtDialupIfLoginServiceEntry } + UNIQUENESS { } + + ::= { ctxtDialupIfLoginLatTable 1 } + + + CtxtDialupIfLoginLatEntry::= SEQUENCE { + ctxtDialupIfLoginLatService OCTET STRING, + ctxtDialupIfLoginLatNode OCTET STRING, + ctxtDialupIfLoginLatGroup OCTET STRING, + ctxtDialupIfLoginLatPort OCTET STRING + } + + + ctxtDialupIfLoginLatService OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 1 } + + ctxtDialupIfLoginLatNode OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 2 } + + ctxtDialupIfLoginLatGroup OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 3 } + + ctxtDialupIfLoginLatPort OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "." + + ::= { ctxtDialupIfLoginLatEntry 4 } + + + -- + -- Authentication Extension Tables + -- + + -- + + -- AuthExtensions Base Table + -- + + authExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthExtEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This is an abstract PRC. This PRC can be extended by + authentication PRCs that contain attributes specific to + that authentication protocol. An instance of the extended + class is created by the PEP and sent to the PDP. The PDP + may send information back to the PEP or may uses the + information to authenticate the PEP's access request. This + PRC itself should not be instantiated. + + This is a �transient� class. Its instances are temporary + and are deleted by the PEP after a certain time/event. + Thus it must not be referred to by the server." + + ::= { authClasses 1 } + + authExtEntry OBJECT-TYPE + SYNTAX AuthExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthExtTable PRC." + + PIB-INDEX { authExtId } + UNIQUENESS { } + + ::= { authExtTable 1 } + + AuthExtEntry ::= SEQUENCE { + authExtId InstanceId, + authExtSession ReferenceId + } + + authExtId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of the + entended provisioning class." + + ::= { authExtEntry 1 } + + authExtSession OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { sessionEntry } + STATUS current + DESCRIPTION + "This attribute is set by the PEP to reference the + + session for which authentication is being requested." + + ::= { authExtEntry 2 } + + + + + + + -- + -- AuthChapExt Table + -- + + authChapExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthChapExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain CHAP + authentication fields. This PRC extends the base PRC + authExtEntry." + + ::= { authClasses 2 } + + authChapExtEntry OBJECT-TYPE + SYNTAX AuthChapExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthChapExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authChapExtTable 1 } + + AuthChapExtEntry::= SEQUENCE { + authChapExtId Unsigned32, + authChapExtChal OCTET STRING, + authChapExtResp OCTET STRING + } + + authChapExtId OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "CHAP Id field." + + ::= { authChapExtEntry 1 } + + authChapExtChal OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + + DESCRIPTION + "CHAP Challenge octet string. The challenge is generated + by the PEP." + + ::= { authChapExtEntry 2 } + + authChapExtResp OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "CHAP Challenge Response octet string. The challenge + response is sent to the PDP along with the challenge." + + ::= { authChapExtEntry 3 } + + + -- + -- AuthPapExt Table + -- + + authPapExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthPapExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain PAP + authentication fields. This PRC extends the base PRC + authExtEntry." + + ::= { authClasses 3 } + + authPapExtEntry OBJECT-TYPE + SYNTAX AuthPapExtEntry + STATUS current + DESCRIPTION + "Entry oid for the AuthPapExtTable PRC. InstanceId's for + this extended PRC are assigned by the base PRC [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authPapExtTable 1 } + + AuthPapExtEntry::= SEQUENCE { + authPapExtPwd OCTET STRING + } + + authPapExtPwd OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "PAP password octet string." + + + ::= { authPapExtEntry 1 } + + + -- + -- AuthEapReqExt Table + -- + + authEapReqExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthEapReqExtEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This is a concrete PRC used to contain EAP + authentication fields. This PRC extends the base PRC + authExtEntry. The PEP uses this PRC to send EAP messages + to the PDP." + + ::= { authClasses 4 } + + authEapReqExtEntry OBJECT-TYPE + SYNTAX AuthEapReqExtEntry + STATUS current + DESCRIPTION + "Entry oid for the authEapReqExtTable PRC. InstanceId's + for this extended PRC are assigned by the base PRC + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authEapReqExtTable 1 } + + AuthEapReqExtEntry::= SEQUENCE { + authEapReqExtSpecific OCTET STRING + } + + authEapReqExtSpecific OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Opaque EAP Request octet string." + + ::= { authEapReqExtEntry 1 } + + + -- + -- AuthEapRespExt Table + -- + + authEapRespExtTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthEapRespExtEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This is a concrete PRC used to contain EAP + authentication fields. This PRC extends the base PRC + authExtEntry. The PDP responds using this PRC for EAP + exchanges." + + ::= { authClasses 5 } + + authEapRespExtEntry OBJECT-TYPE + SYNTAX AuthEapRespExtEntry + STATUS current + DESCRIPTION + "Entry oid for the authEapRespExtTable PRC. InstanceId's + for this extended PRC are assigned by the base PRC + [SPPI]." + + EXTENDS { authExtEntry } + UNIQUENESS { } + + ::= { authEapRespExtTable 1 } + + AuthEapRespExtEntry::= SEQUENCE { + authEapRespExtSpecific OCTET STRING + } + + authEapRespExtSpecific OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Opaque EAP Response octet string." + + ::= { authEapRespExtEntry 1 } + + +-- +-- conformance section tbd +-- + +END diff --git a/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB b/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB new file mode 100644 index 0000000..b0ecd87 --- /dev/null +++ b/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB @@ -0,0 +1,292 @@ +ACCOUNTING-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Unsigned64, + Integer32, MODULE-IDENTITY, OBJECT-TYPE, pib + FROM COPS-PR-SPPI + ExtUTCTime + FROM SNMPv2-SMI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + InstanceId, ReferenceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination + FROM POLICY-DEVICE-AUX-MIB; + + acctPolFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200011171000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Diana Rawlins + WorldCom + 901 International Parkway + Richardson, TX 75081 + Phone: 972 729 1044 + Email: diana.rawlins@wcom.com + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com " + + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all accounting + and reporting policies" + + ::= { ibrpib 9 } -- to be assigned by IANA! +-- +-- The accounting type report group +-- + +frwkAtRptGroupClasses + OBJECT IDENTIFIER ::= { acctPolFrameworkPib 2 } + +-- +-- Textual Conventions +-- +Count ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A count represents a value used by attributes that + record policy usage. A count is of value zero or + greater and is incremented according to defined + + + policy usage. When the maximum value is reached, the + value sticks. The value is reset to zero upon + reporting the value to the PDP." + +SYNTAX Unsigned64 ( 0..18446744073709551615) + +-- +-- resume reporting indicator +-- + +frwkAtRptResumeTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptResumeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains a single PRI that indicates + that the PEP is to resume the sending of + accounting type reports." + + ::= { frwkAtRptGroupClasses 1} + +frwkAtRptResumeEntry OBJECT-TYPE + SYNTAX FrwkAtRptResumeEntry + STATUS current + DESCRIPTION + "An instance of this class can indicate when to + resume sending accounting type reports + by the PEP." + PIB-INDEX { frwkAtRptResumeId} + + ::= { frwkAtRptResumeTable 1} + +FrwkAtRptResumeEntry ::= SEQUENCE { + frwkAtRptResumeId InstanceId, + frwkAtRptResumeIndicator INTEGER + } + +frwkAtRptResumeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkAtRptResumeTable class." + + ::= { frwkAtRptResumeEntry 1} + +frwkAtRptResumeIndicator OBJECT-TYPE + SYNTAX INTEGER { + noReports(0), + sendReports(1) + } + STATUS current + DESCRIPTION + + + "The value indicates if the PEP is to send cached + usage policies via accounting type report messages. + The enumeration values are: + (0) Don't send accounting type report messages + (1) Resume accounting type report messages. Send + cached usage policies now " + + ::= { frwkAtRptResumeEntry 2 } + +-- +-- The Accounting Type Report Linkage Table +-- + +frwkAtRptLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptLinkEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + + ::= { frwkAtRptGroupClasses 2} + +frwkAtRptLinkEntry OBJECT-TYPE + SYNTAX FrwkAtRptLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + PIB-INDEX {frwkAtRptLinkId} + UNIQUENESS { frwkAtRptLinkId, + frwkAtRptLinkSel, + frwkAtRptLinkUsage } + ::= {frwkAtRptLinkTable 1} + +FrwkAtRptLinkEntry ::= SEQUENCE { + frwkAtRptLinkId InstanceId, + frwkAtRptLinkSel Prid, + frwkAtRptLinkUsage OBJECT IDENTIFIER, + frwkAtRptLinkInterval Integer32 +} + +frwkAtRptLinkId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkAtRptLinkTable class." + ::= { frwkAtRptLinkEntry 1} + +frwkAtRptLinkSel OBJECT-TYPE + + + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the selection criteria instance that + defines the conditions to use by the PEP for + monitoring the usage." + + ::= { frwkAtRptLinkEntry 2} + +frwkAtRptLinkUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that the PEP uses to + monitor,record and report." + + ::= { frwkAtRptLinkEntry 3} + +frwkAtRptLinkInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specificed by the PDP in the client + accept message. A frwkAtRptInterval of 1 is equal to + the value of the Accounting Timer. This value must be 1 + or greater. " + + ::= { frwkAtRptLinkEntry 4} + +-- +-- The filter statistics usage +-- + +frwkAtRptFilterStatsUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptFilterStatsUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor, record and report. It contains the + of the PRID of the linkage instance associating + the selection criteria instance with the usage + instance." + + ::= { frwkAtRptGroupClasses 3} + +frwkAtRptFilterStatsUsageEntry OBJECT-TYPE + SYNTAX FrwkAtRptFilterStatsUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + + + PIB-INDEX {frwkAtRptFilterStatsUsageId} + UNIQUENESS { frwkAtRptFilterStatsUsageLinkPRID } + + ::= {frwkAtRptFilterStatsUsageTable 1} + +FrwkAtRptFilterStatsUsageEntry ::= SEQUENCE { + frwkAtRptFilterStatsUsageId InstanceId, + frwkAtRptFilterStatsUsageLinkPRID Prid, + frwkAtRptFilterStatsUsagePacketCount Count, + frwkAtRptFilterStatsUsageByteCount Count, + frwkAtRptFilterStatsUsageTimeStamp ExtUTCTime + +} + +frwkAtRptFilterStatsUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkAtRptFilterStatsUsageEntry 1 } + +frwkAtRptFilterStatsUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + + ::= { frwkAtRptFilterStatsUsageEntry 2 } + +frwkAtRptFilterStatsUsagePacketCount OBJECT-TYPE + SYNTAX Count + STATUS current + DESCRIPTION + "The count of packets matching the specified filter + during the reporting interval." + + ::= {frwkAtRptFilterStatsUsageEntry 3} + +frwkAtRptFilterStatsUsageByteCount OBJECT-TYPE + SYNTAX Count + STATUS current + DESCRIPTION + "The byte count of packets matching the + specified filter during the reporting interval." + + ::= { frwkAtRptFilterStatsUsageEntry 4} + +frwkAtRptFilterStatsUsageTimeStamp OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + + + "The last timestamp when a packet was received." + + ::= { frwkAtRptFilterStatsUsageEntry 5} + +END diff --git a/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig b/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig new file mode 100644 index 0000000..6bf1a24 --- /dev/null +++ b/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig @@ -0,0 +1,291 @@ +ACCOUNTING-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ExtUTCTime, Unsigned32, Unsigned64, + Integer32, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + PolicyInstanceId, PolicyReferenceId + + + FROM COPS-PR-SPPI-TC + RoleCombination + FROM POLICY-DEVICE-AUX-MIB; + + acctPolFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200011171000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Diana Rawlins + WorldCom + 901 International Parkway + Richardson, TX 75081 + Phone: 972 729 1044 + Email: diana.rawlins@wcom.com + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com " + + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all accounting + and reporting policies" + + ::= { tbd } +-- +-- The accounting type report group +-- + +frwkAtRptGroupClasses + OBJECT IDENTIFIER ::= { acctPolFrameworkPib 2 } + +-- +-- Textual Conventions +-- +Count ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A count represents a value used by attributes that + record policy usage. A count is of value zero or + greater and is incremented according to defined + + + policy usage. When the maximum value is reached, the + value sticks. The value is reset to zero upon + reporting the value to the PDP." + +SYNTAX Unsigned64 ( 0..18446744073709551615) + +-- +-- resume reporting indicator +-- + +frwkAtRptResumeTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptResumeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains a single PRI that indicates + that the PEP is to resume the sending of + accounting type reports." + + ::= { frwkAtRptGroupClasses 1} + +frwkAtRptResumeEntry OBJECT-TYPE + SYNTAX FrwkAtRptResumeEntry + STATUS current + DESCRIPTION + "An instance of this class can indicate when to + resume sending accounting type reports + by the PEP." + PIB-INDEX { frwkAtRptResumeId} + + ::= { frwkAtRptResumeTable 1} + +FrwkAtRptResumeEntry ::= SEQUENCE { + frwkAtRptResumeId InstanceId, + frwkAtRptResumeIndicator INTEGER + } + +frwkAtRptResumeId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkAtRptResumeTable class." + + ::= { frwkAtRptResumeEntry 1} + +frwkAtRptResumeIndicator OBJECT-TYPE + SYNTAX INTEGER { + NO_REPORTS(0), + SEND_REPORTS(1) + } + STATUS current + DESCRIPTION + + + "The value indicates if the PEP is to send cached + usage policies via accounting type report messages. + The enumeration values are: + (0) Don�t send accounting type report messages + (1) Resume accounting type report messages. Send + cached usage policies now " + + ::= { frwkAtRptResumeEntry 2 } + +-- +-- The Accounting Type Report Linkage Table +-- + +frwkAtRptLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptLinkEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + + ::= { frwkAtRptGroupClasses 2} + +frwkAtRptLinkEntry OBJECT-TYPE + SYNTAX FrwkAtRptLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + PIB-INDEX {frwkAtRptLinkId} + UNIQUENESS { frwkAtRptLinkId, + frwkAtRptLinkSel, + frwkAtRptLinkUsage } + ::= {frwkAtRptLinkTable 1} + +FrwkAtRptLinkEntry ::= SEQUENCE { + frwkAtRptLinkId InstanceID, + frwkAtRptLinkSel Prid, + frwkAtRptLinkUsage OBJECT IDENTIFIER, + frwkAtRptLinkInterval Integer32 +} + +frwkAtRptLinkId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkAtRptLinkTable class." + ::= { frwkAtRptLinkEntry 1} + +frwkAtRptLinkSel OBJECT-TYPE + + + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the selection criteria instance that + defines the conditions to use by the PEP for + monitoring the usage." + + ::= { frwkAtRptLinkEntry 2} + +frwkAtRptLinkUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that the PEP uses to + monitor,record and report." + + ::= { frwkAtRptLinkEntry 3} + +frwkAtRptInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specificed by the PDP in the client + accept message. A frwkAtRptInterval of 1 is equal to + the value of the Accounting Timer. This value must be 1 + or greater. " + + ::= { frwkAtRptLinkEntry 4} + +-- +-- The filter statistics usage +-- + +frwkAtRptFilterStatsUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkAtRptFilterStatsUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor, record and report. It contains the + of the PRID of the linkage instance associating + the selection criteria instance with the usage + instance." + + ::= { frwkAtRptGroupClasses 3} + +frwkAtRptFilterStatsUsageEntry OBJECT-TYPE + SYNTAX FrwkAtRptFilterStatsUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + + + PIB-INDEX {frwkAtRptFilterStatsUsageId} + UNIQUENESS { frwkAtRptFilterStatsUsageLinkPRID } + + ::= {frwkAtRptFilterStatsUsageTable 1} + +FrwkAtRptFilterStatsUsageEntry ::= SEQUENCE { + frwkAtRptFilterStatsUsageId InstanceID, + frwkAtRptFilterStatsUsageLinkPRID Prid, + frwkAtRptFilterStatsUsagePacketCount Counts, + frwkAtRptFilterStatsUsageByteCount Counts, + fwkAtRptFilterStatsUsageTimeStamp ExtUTCTime + +} + +frwkAtRptFilterStatsUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkAtRptFilterStatsUsageEntry 1 } + +frwkAtRptFilterStatsUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + + ::= { frwkAtRptFilterStatsUsageEntry 2 } + +frwkAtRptFilterStatsUsagePacketCount OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The count of packets matching the specified filter + during the reporting interval." + + ::= {frwkAtRptFilterStatsUsageEntry 3} + +frwkAtRptFilterStatsUsageByteCount OBJECT-TYPE + SYNTAX Unsigned64 + STATUS current + DESCRIPTION + "The byte count of packets matching the + specified filter during the reporting interval." + + ::= { frwkAtRptFilterStatsUsageEntry 4} + +frwkAtRptFilterStatsSelectTimeStamp OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + + + "The last timestamp when a packet was received." + + ::= { frwkAtRptFilterStatsSelectEntry 5} + +END diff --git a/pibs/tubs/FEEDBACK-FRAMEWORK-PIB b/pibs/tubs/FEEDBACK-FRAMEWORK-PIB new file mode 100644 index 0000000..8ca995d --- /dev/null +++ b/pibs/tubs/FEEDBACK-FRAMEWORK-PIB @@ -0,0 +1,826 @@ + FEEDBACK-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Unsigned64, + Integer32, Integer64, MODULE-IDENTITY, OBJECT-TYPE, pib + FROM COPS-PR-SPPI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + InstanceId, ReferenceId, TagReferenceId, TagId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination + FROM POLICY-DEVICE-AUX-MIB + Counter64, ExtUTCTime + FROM SNMPv2-SMI + IfDirection + FROM DIFFSERV-MIB; + + feedbackPolFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200011171000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Diana Rawlins + WorldCom + 901 International Parkway + Richardson, TX 75081 + Phone: 972 729 1044 + Email: diana.rawlins@wcom.com + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com + Martin Bokaemper + Unisphere Networks + 700 Silver Seven Road + Kanata, ON, K2V 1C3, Canada + Phone: 613-591-2735 + Email: mbokaemper@unispherenetworks.com" + + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all policy + usage monitoring, tracking and reporting policies" + + ::= { ibrpib 7 } -- to be assigned by IANA + -- + -- The feedback report group + -- + + frwkFeedbackGroupClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 1 } + + -- + -- Feedback Action Table + -- + + frwkFeedbackActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains a single PRI that indicates + that the PEP is to resume the sending of + feedback type reports." + + ::= { frwkFeedbackGroupClasses 1} + + frwkFeedbackActionEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionEntry + STATUS current + DESCRIPTION + "An instance of this class can indicates a action + the PEP is to take regarding the usage policies." + PIB-INDEX { frwkFeedbackActionId} + + ::= { frwkFeedbackActionTable 1} + + FrwkFeedbackActionEntry ::= SEQUENCE { + frwkFeedbackActionId InstanceId, + frwkFeedbackActionIndicator INTEGER, + frwkFeedbackActionSpecificPri INTEGER, + frwkFeedbackActionList TagReferenceId + } + + frwkFeedbackActionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackActionTable class." + + ::= { frwkFeedbackActionEntry 1} + + frwkFeedbackActionIndicator OBJECT-TYPE + SYNTAX INTEGER { + suspendUsageMonitoringAndReports(0), + suspendReportsOnly(1), + resumeUsageAndReporting(2), + solicitUsageReportNow(3) + } + STATUS current + DESCRIPTION + "The value indicates if the PEP is to send cached + usage policies via feedback type report messages. + The enumeration values are: + (0) SUSPEND USAGE MONITORING_AND_REPORTS + (1) SUSPEND_REPORTS_ONLY + (2) RESUME_USAGE AND REPORTING + (3) SOLICIT USAGE REPORT NOW " + + ::= { frwkFeedbackActionEntry 2 } + + frwkFeedbackActionSpecificPri OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "A value of 0 indicates that the + frwkFeedbackActionListId attribute should be + ignored, and the action applied to all policies. A + value of 1 indicates that the action entry has a + specific list of policies to which it is to be + applied." + ::= { frwkFeedbackActionEntry 3} + + frwkFeedbackActionList OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { frwkFeedbackActionListGroup } + STATUS current + DESCRIPTION + "Identifies a list of + frwkFeedbackActionListTable instances + associated with the action described by + this instance" + ::= { frwkFeedbackActionEntry 4} + + -- + -- Feedback Action List Table + + frwkFeedbackActionListTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionListEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains the PRIDs of the + linkage instance which are to be impacted by + the frwkFeedbackActionIndicator for this + list." + ::= { frwkFeedbackGroupClasses 2} + + frwkFeedbackActionListEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionListEntry + STATUS current + DESCRIPTION + "This class identifies a set of linkage instances + for which the PDP is suspending, resuming or + soliciting usage feedback." + + PIB-INDEX {frwkFeedbackActionListId } + UNIQUENESS { frwkFeedbackActionListGroup, + frwkFeedbackActionListPRID + } + ::= { frwkFeedbackActionListTable 1} + + FrwkFeedbackActionListEntry::= SEQUENCE { + frwkFeedbackActionListId InstanceId, + frwkFeedbackActionListGroup TagId, + frwkFeedbackActionListPRID Prid + } + + frwkFeedbackActionListId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely + identifies an instance of the class." + + ::= { frwkFeedbackActionListEntry 1 } + + frwkFeedbackActionListGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Represents the binding between the Action + table entry and the Action List table entries" + ::= { frwkFeedbackActionListEntry 2 } + + frwkFeedbackActionListPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the linkage instance(s) belonging + to the list of instances identified by the + list id upon which the suspend, resume or + solicit action is directed." + + ::= { frwkFeedbackActionListEntry 3 } + + -- + -- The Feedback Selection Usage Combination Capability Table + -- + + frwkFeedbackSelUsageComboCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackSelUsageComboCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This table defines the valid combinations of the + selection criteria PRCs, the usage PRCs and the + threshold PRCs that the PEP supports." + ::= { frwkFeedbackGroupClasses 3} + + + frwkFeedbackSelUsageComboCapsEntry OBJECT-TYPE + SYNTAX FrwkFeedbackSelUsageComboCapsEntry + STATUS current + DESCRIPTION + "The attributes of this class identify valid + combinations of selection criteria, usage and + threshold PRCs for feedback supported by the PEP + device." + PIB-INDEX {frwkFeedbackSelUsageComboCapId} + UNIQUENESS { frwkFeedbackSelUsageComboCapId, + frwkFeedbackSelUsageComboCapSelection, + frwkFeedbackSelUsageComboCapUsage, + frwkFeedbackSelUsageComboCapThreshold + } + ::= {frwkFeedbackSelUsageComboCapsTable 1} + + FrwkFeedbackSelUsageComboCapsEntry ::= SEQUENCE { + frwkFeedbackSelUsageComboCapId InstanceId, + frwkFeedbackSelUsageComboCapSelection OBJECT IDENTIFIER, + frwkFeedbackSelUsageComboCapUsage OBJECT IDENTIFIER, + frwkFeedbackSelUsageComboCapThreshold OBJECT IDENTIFIER + } + + frwkFeedbackSelUsageComboCapId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackSelUsageComboCapsEntry + class." + ::= { frwkFeedbackSelUsageComboCapsEntry 1} + + frwkFeedbackSelUsageComboCapSelection OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the selection class that is supported by + the device in the combination defined by this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 2} + + frwkFeedbackSelUsageComboCapUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that is supported by + the device in combination with the selection PRC and the + threshold PRC defined in this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 3} + + + frwkFeedbackSelUsageComboCapThreshold OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the threshold class that is supported by + the device in the combination defined by this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 4} + + -- + -- The Feedback Report Linkage Table + -- + + frwkFeedbackLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackLinkEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + + ::= { frwkFeedbackGroupClasses 4} + + frwkFeedbackLinkEntry OBJECT-TYPE + SYNTAX FrwkFeedbackLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permits the defining of the max + interval used for reporting the usage instance." + PIB-INDEX {frwkFeedbackLinkId} + UNIQUENESS { frwkFeedbackLinkId, + frwkFeedbackLinkSel, + frwkFeedbackLinkUsage } + ::= {frwkFeedbackLinkTable 1} + + FrwkFeedbackLinkEntry ::= SEQUENCE { + frwkFeedbackLinkId InstanceId, + frwkFeedbackLinkSel Prid, + frwkFeedbackLinkUsage OBJECT IDENTIFIER, + frwkFeedbackLinkInterval Integer32, + frwkFeedbackLinkThreshold Prid, + frwkFeedbackLinkFlags BITS + } + + frwkFeedbackLinkId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackLinkTable class." + ::= { frwkFeedbackLinkEntry 1} + + frwkFeedbackLinkSel OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the selection criteria instance that + defines the conditions to use by the PEP for + monitoring the usage." + + ::= { frwkFeedbackLinkEntry 2} + + frwkFeedbackLinkUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that the PEP uses to + monitor, record and report." + + ::= { frwkFeedbackLinkEntry 3} + + frwkFeedbackLinkInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specified by the PDP in the client + accept message. A frwkFeedbackLinkInterval of 1 is + equal to the value of the Accounting Timer. This value + must be 1 or greater. " + + ::= { frwkFeedbackLinkEntry 4} + + frwkFeedbackLinkThreshold OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the threshold class instance. This + instance specifies the threshold values for the usage + policy." + ::= { frwkFeedbackLinkEntry 5} + + frwkFeedbackLinkFlags OBJECT-TYPE + SYNTAX BITS { + periodic(0), + threshold(1), + changeOnly(2) + } + STATUS current + DESCRIPTION + "This value indicates the reporting basis of the usage + policy. The feed back may be generated on demand, on a + periodic basis regardless of a change in value from the + previous report, on a periodic basis if a change in + value has occurred, or the usage is reported when an + identified threshold value in the usage instance has + been reached. + If the 'periodic' flag is set, the PEP will provide + unsolicited reports at the rate specified in + frwkFeedbackLinkInterval. + If the 'periodic' flag is not set, reports will only be + generated when solicited by the PDP. + The 'threshold' and 'changeOnly' flags make the + periodic reports conditional - these flags only make + sense in combination with the 'periodic' flag." + + ::= { frwkFeedbackLinkEntry 6} + + + -- + -- All actual usage classes are in the separate + -- FrwkFeedbackUsageClasses group + -- + + frwkFeedbackUsageClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 2 } + + + -- + -- The generic traffic (byte & packet count) usage class + -- + + frwkFeedbackTrafficUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor for plain traffic handling elements + like filters. All packets and the bytes contained in + these packets are counted. It also contains the PRID + of the linkage instance associating the selection + criteria instance with the usage instance." + + ::= { frwkFeedbackUsageClasses 1} + + frwkFeedbackTrafficUsageEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackTrafficUsageId} + UNIQUENESS { frwkFeedbackTrafficUsageLinkPRID } + + ::= {frwkFeedbackTrafficUsageTable 1} + + FrwkFeedbackTrafficUsageEntry ::= SEQUENCE { + frwkFeedbackTrafficUsageId InstanceId, + frwkFeedbackTrafficUsageLinkPRID Prid, + frwkFeedbackTrafficUsagePacketCount Counter64, + frwkFeedbackTrafficUsageByteCount Counter64 + + } + + frwkFeedbackTrafficUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficUsageEntry 1 } + + frwkFeedbackTrafficUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + + ::= { frwkFeedbackTrafficUsageEntry 2 } + + frwkFeedbackTrafficUsagePacketCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated + element during the reporting interval." + + ::= {frwkFeedbackTrafficUsageEntry 3} + + frwkFeedbackTrafficUsageByteCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The byte count of packets handled by the associated + element." + ::= { frwkFeedbackTrafficUsageEntry 4} + + + + -- + -- The traffic usage class, qualified for an interface + -- + + frwkFeedbackIfTrafficUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackIfTrafficUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "A usage PRC similar to the basic TrafficUsage class + that also contains a reference to an interface. This + class should be used with a selection criteria that + matches an element that is assigned to multiple + interfaces. The interface field can be used to + associate the instances of this class with the specific + element's assignment." + ::= { frwkFeedbackUsageClasses 2 } + + frwkFeedbackIfTrafficUsageEntry OBJECT-TYPE + SYNTAX FrwkFeedbackIfTrafficUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackIfTrafficUsageId} + UNIQUENESS { frwkFeedbackIfTrafficUsageLinkPRID, + frwkFeedbackIfTrafficUsageInterface } + + ::= {frwkFeedbackIfTrafficUsageTable 1} + + FrwkFeedbackIfTrafficUsageEntry ::= SEQUENCE { + frwkFeedbackIfTrafficUsageId InstanceId, + frwkFeedbackIfTrafficUsageLinkPRID Prid, + frwkFeedbackIfTrafficUsageInterface Prid, + frwkFeedbackIfTrafficUsagePacketCount Counter64, + frwkFeedbackIfTrafficUsageByteCount Counter64 + + } + + frwkFeedbackIfTrafficUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackIfTrafficUsageEntry 1 } + + frwkFeedbackIfTrafficUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + ::= { frwkFeedbackIfTrafficUsageEntry 2 } + + frwkFeedbackIfTrafficUsageInterface OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a frwkIfRoleCombo instance, uniquely + identifying a specific interface." + ::= { frwkFeedbackIfTrafficUsageEntry 3 } + + frwkFeedbackIfTrafficUsagePacketCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated element + during the reporting interval." + ::= { frwkFeedbackIfTrafficUsageEntry 4 } + + frwkFeedbackIfTrafficUsageByteCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The byte count of packets + handled by the associated element." + ::= { frwkFeedbackIfTrafficUsageEntry 5 } + + + + -- + -- The Threshold class that accompanies the above Usage PRCs + -- + + frwkFeedbackTrafficThresholdTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficThresholdEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines the threshold attributes + corresponding to usage attributes specified in + frwkFeedbackTrafficUsageTable, + frwkFeedbackIfTrafficUsageTable and other similar + usage classes. + The usage object is considered to match the threshold + condition if the following expression evaluates to + 'TRUE': + { + byteCond = (ByteThreshold != NULL) ? + (ByteThreshold > ByteCounter) : FALSE; + packetCond (PacketThreshold != NULL) ? + (PacketThreshold > PacketCounter) : FALSE; + return ( byteCond || packetCond ); + }" + + ::= { frwkFeedbackUsageClasses 3} + + frwkFeedbackTrafficThresholdEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficThresholdEntry + STATUS current + DESCRIPTION + "Defines the attributes to hold threshold values." + PIB-INDEX {frwkFeedbackTrafficThresholdId} + + ::= {frwkFeedbackTrafficThresholdTable 1} + + FrwkFeedbackTrafficThresholdEntry ::= SEQUENCE { + frwkFeedbackTrafficThresholdId InstanceId, + frwkFeedbackTrafficThresholdPacketThreshold Integer64, + frwkFeedbackTrafficThresholdByteThreshold Integer64 + } + + frwkFeedbackTrafficThresholdId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficThresholdEntry 1 } + + frwkFeedbackTrafficThresholdPacketThreshold OBJECT-TYPE + SYNTAX Integer64 + STATUS current + DESCRIPTION + "The threshold, in terms of packets, that must be + exceeded to trigger a report in the next + reporting interval." + ::= { frwkFeedbackTrafficThresholdEntry 2 } + + frwkFeedbackTrafficThresholdByteThreshold OBJECT-TYPE + SYNTAX Integer64 + STATUS current + DESCRIPTION + "The threshold, in terms of bytes, that must be + exceeded to trigger a report in the next + reporting interval." + ::= { frwkFeedbackTrafficThresholdEntry 3 } + + + -- + -- All Selection classes are in the separate + -- FrwkFeedbackSelectionClasses group + -- + + frwkFeedbackSelectionClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 3 } + + -- + -- The Set WatchPoint Table + -- + + frwkFeedbackSetWatchPointTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackSetWatchPointEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a specific processing point to watch + for the desired usage. This selection criteria + may be useful in PIBs that are designed using a + datapath approach where the policies are linked + and can be reused within the PIB." + + ::= { frwkFeedbackSelectionClasses 1} + + frwkFeedbackSetWatchPointEntry OBJECT-TYPE + SYNTAX FrwkFeedbackSetWatchPointEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackSetWatchPointId } + + + ::= {frwkFeedbackSetWatchPointTable 1} + + FrwkFeedbackSetWatchPointEntry ::= SEQUENCE { + frwkFeedbackSetWatchPointId InstanceId, + frwkFeedbackSetWatchPointPolicyPRID Prid + + } + + frwkFeedbackSetWatchPointId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackSetWatchPointEntry 1 } + + frwkFeedbackSetWatchPointPolicyPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the enforcement policy instance where + the associated usage is to be monitored." + + ::= { frwkFeedbackSetWatchPointEntry 2 } + + + -- + -- DPE Selection Class + -- + + frwkFeedbackDPESelectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackDPESelectionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a specific data path element to collect + usage information" + + ::= { frwkFeedbackSelectionClasses 2} + + frwkFeedbackDPESelectionEntry OBJECT-TYPE + SYNTAX FrwkFeedbackDPESelectionEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackDPESelectionId } + UNIQUENESS { frwkFeedbackDPESelectionDataPathElement, + frwkFeedbackDPESelectionInterface, + frwkFeedbackDPESelectionIfDirection } + + ::= {frwkFeedbackDPESelectionTable 1} + + FrwkFeedbackDPESelectionEntry ::= SEQUENCE { + frwkFeedbackDPESelectionId InstanceId, + frwkFeedbackDPESelectionDataPathElement Prid, + frwkFeedbackDPESelectionInterface Prid, + frwkFeedbackDPESelectionIfDirection IfDirection + } + + frwkFeedbackDPESelectionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackDPESelectionEntry 1 } + + + frwkFeedbackDPESelectionDataPathElement OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the element in the data path that we + want to collect usage information from. This element + must be part of the data path assigned to the + interface/direction combination referenced in this + object." + ::= { frwkFeedbackDPESelectionEntry 2 } + + frwkFeedbackDPESelectionInterface OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a frwkIfRoleCombo instance, uniquely + identifying a specific interface" + ::= { frwkFeedbackDPESelectionEntry 3 } + + frwkFeedbackDPESelectionIfDirection OBJECT-TYPE + SYNTAX IfDirection + STATUS current + DESCRIPTION + "The direction (ingress/egress) that to which the DPE + is attached that we want to match." + ::= { frwkFeedbackDPESelectionEntry 4 } + + + -- + -- DPE Selection Query Class + -- + + frwkFeedbackDPESelectionQueryTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackDPESelectionQueryEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a set of assignments of a data path element + based on an entry in the Data Path Table + Each matched assignment will collect and report usage + independently, so this selection criteria should be + combined with a Usage PRC that includes an interface + reference." + + ::= { frwkFeedbackSelectionClasses 3} + + frwkFeedbackDPESelectionQueryEntry OBJECT-TYPE + SYNTAX FrwkFeedbackDPESelectionQueryEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackDPESelectionQueryId } + UNIQUENESS { frwkFeedbackDPESelectionQueryDataPath, + frwkFeedbackDPESelectionQueryDataPathElement } + + ::= {frwkFeedbackDPESelectionQueryTable 1} + + FrwkFeedbackDPESelectionQueryEntry ::= SEQUENCE { + frwkFeedbackDPESelectionQueryId InstanceId, + frwkFeedbackDPESelectionQueryDataPath Prid, + frwkFeedbackDPESelectionQueryDataPathElement Prid + } + + frwkFeedbackDPESelectionQueryId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackDPESelectionQueryEntry 1 } + + frwkFeedbackDPESelectionQueryDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a Data Path instance, identifying a + group of data path assignments." + ::= { frwkFeedbackDPESelectionQueryEntry 2 } + + frwkFeedbackDPESelectionQueryDataPathElement OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the element in the data path that we + want to collect usage information from. This element + must be part of the data path referenced from the + frwkFeedbackDPESelectionQueryDataPath field." + ::= { frwkFeedbackDPESelectionQueryEntry 3 } + + END diff --git a/pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig b/pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig new file mode 100644 index 0000000..9cd0049 --- /dev/null +++ b/pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig @@ -0,0 +1,825 @@ + FEEDBACK-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ExtUTCTime, Unsigned32, Unsigned64, + Integer32, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + PolicyInstanceId, PolicyReferenceId + FROM COPS-PR-SPPI-TC; + RoleCombination + FROM FRAMEWORK-ROLE-PIB; + Counter64 + FROM SNMPv2-SMI; + + feedbackPolFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200011171000Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Diana Rawlins + WorldCom + 901 International Parkway + Richardson, TX 75081 + Phone: 972 729 1044 + Email: diana.rawlins@wcom.com + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: 503-712-1168 + Email: amol.kulkarni@intel.com + + Kwok Ho Chan + Nortel Networks, Inc. + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: 978-288-8175 + Email: khchan@nortelnetworks.com + + Martin Bokaemper + Unisphere Networks + 700 Silver Seven Road + Kanata, ON, K2V 1C3, Canada + Phone: 613-591-2735 + Email: mbokaemper@unispherenetworks.com" + + + DESCRIPTION + "The PIB module containing the base set of policy rule + classes that are required for support of all policy + usage monitoring, tracking and reporting policies" + + ::= { tbd } + -- + -- The feedback report group + -- + + frwkFeedbackGroupClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 1 } + + -- + -- Feedback Action Table + -- + + frwkFeedbackActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains a single PRI that indicates + that the PEP is to resume the sending of + feedback type reports." + + ::= { frwkFeedbackGroupClasses 1} + + frwkFeedbackActionEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionEntry + STATUS current + DESCRIPTION + "An instance of this class can indicates a action + the PEP is to take regarding the usage policies." + PIB-INDEX { frwkFeedbackActionId} + + ::= { frwkFeedbackActionTable 1} + + FrwkFeedbackActionEntry ::= SEQUENCE { + frwkFeedbackActionId InstanceId, + frwkFeedbackActionIndicator INTEGER, + frwkFeedbackActionSpecificPri INTEGER, + frwkFeedbackActionList TagReference + } + + frwkFeedbackActionId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackActionTable class." + + ::= { frwkFeedbackActionEntry 1} + + frwkFeedbackActionIndicator OBJECT-TYPE + SYNTAX INTEGER { + SUSPEND USAGE MONITORING_AND_REPORTS(0) + SUSPEND_REPORTS_ONLY(1) + RESUME_USAGE AND REPORTING(2) + SOLICIT USAGE REPORT NOW(3) + } + STATUS current + DESCRIPTION + "The value indicates if the PEP is to send cached + usage policies via feedback type report messages. + The enumeration values are: + (0) SUSPEND USAGE MONITORING_AND_REPORTS + (1) SUSPEND_REPORTS_ONLY + (2) RESUME_USAGE AND REPORTING + (3) SOLICIT USAGE REPORT NOW " + + ::= { frwkFeedbackActionEntry 2 } + + frwkFeedbackActionSpecificPri OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "A value of 0 indicates that the + frwkFeedbackActionListId attribute should be + ignored, and the action applied to all policies. A + value of 1 indicates that the action entry has a + specific list of policies to which it is to be + applied." + ::= { frwkFeedbackActionEntry 3} + + frwkFeedbackActionList OBJECT-TYPE + SYNTAX TagReference + STATUS current + DESCRIPTION + "Identifies a list of + frwkFeedbackActionListTable instances + associated with the action described by + this instance" + ::= { frwkFeedbackActionEntry 4} + + -- + -- Feedback Action List Table + -- + + frwkFeedbackActionListTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackActionListEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class contains the PRIDs of the + linkage instance which are to be impacted by + the frwkFeedbackActionIndicator for this + list." + ::= { frwkFeedbackGroupClasses 2} + + frwkFeedbackActionListEntry OBJECT-TYPE + SYNTAX FrwkFeedbackActionListEntry + STATUS current + DESCRIPTION + "This class identifies a set of linkage instances + for which the PDP is suspending, resuming or + soliciting usage feedback." + + PIB-INDEX {frwkFeedbackActionListId } + UNIQUENESS { frwkFeedbackActionListGroup, + frwkFeedbackActionListPRID + } + ::= { frwkFeedbackActionListTable 1} + + FrwkFeedbackActionListEntry::= SEQUENCE { + frwkFeedbackActionListId InstanceID, + frwkFeedbackActionListGroup TagId, + frwkFeedbackActionListPRID Prid + } + + frwkFeedbackActionListId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely + identifies an instance of the class." + + ::= { frwkFeedbackActionListEntry 1 } + + frwkFeedbackActionListListGroup OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Represents the binding between the Action + table entry and the Action List table entries" + ::= { frwkFeedbackActionListEntry 2 } + + frwkFeedbackActionListPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the linkage instance(s) belonging + to the list of instances identified by the + list id upon which the suspend, resume or + solicit action is directed." + + ::= { frwkFeedbackActionListEntry 3 } + + -- + -- The Feedback Selection Usage Combination Capability Table + -- + + frwkFeedbackSelUsageComboCapsTable OBJECT-TYPE + SYNTAX SEQENCE OF FrwkFeedbackSelUsageComboCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This table defines the valid combinations of the + selection criteria PRCs, the usage PRCs and the + threshold PRCs that the PEP supports." + ::= { frwkFeedbackGroupClasses 3} + + + frwkFeedbackSelUsageComboCapsEntry OBJECT-TYPE + SYNTAX FrwkFeedbackSelUsageComboCapsEntry + STATUS current + DESCRIPTION + "The attributes of this class identify valid + combinations of selection criteria, usage and + threshold PRCs for feedback supported by the PEP + device." + PIB-INDEX {frwkFeedbackActionLinkId} + UNIQUENESS { frwkFeedbacSelUsageComboCapId, + frwkFeedbackSelUsageComboCapSelection, + frwkFeedbackSelUsageComboCapUsage, + frwkFeedbackSelUsageComboCapThreshold + } + ::= {frwkFeedbackSelUsageComboTable 1} + + FrwkFeedbackSelUsageComboCapsEntry ::= SEQUENCE { + frwkFeedbackSelUsageComboCapId InstanceID, + frwkFeedbackSelUsageComboCapSelection OBJECT IDENTIFIER, + frwkFeedbackSelUsageComboCapUsage OBJECT IDENTIFIER, + frwkFeedbackSelUsageComboCapThreshold OBJECT IDENTIFIER + } + + frwkFeedbackSelUsageComboCapId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackSelUsageComboCapsEntry + class." + ::= { frwkFeedbackSelUsageComboCapsEntry 1} + + frwkFeedbackSelUsageComboCapSelection OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the selection class that is supported by + the device in the combination defined by this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 2} + + frwkFeedbackSelUsageComboCapUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that is supported by + the device in combination with the selection PRC and the + threshold PRC defined in this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 3} + + + frwkFeedbackSelUsageComboCapThreshold OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the threshold class that is supported by + the device in the combination defined by this instance." + ::= { frwkFeedbackSelUsageComboCapsEntry 2} + + -- + -- The Feedback Report Linkage Table + -- + + frwkFeedbackLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackLinkEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permit the defining of the max + interval used for reporting the usage instance." + + ::= { frwkFeedbackGroupClasses 4} + + frwkFeedbackLinkEntry OBJECT-TYPE + SYNTAX FrwkFeedbackLinkEntry + STATUS current + DESCRIPTION + "This class associates the selection criteria with the + usage policy. It also permits the defining of the max + interval used for reporting the usage instance." + PIB-INDEX {frwkFeedbackActionLinkId} + UNIQUENESS { frwkFeedbackLinkId, + frwkFeedbackLinkSel, + frwkFeedbackLinkUsage } + ::= {frwkFeedbackLinkTable 1} + + FrwkFeedbackLinkEntry ::= SEQUENCE { + frwkFeedbackLinkId InstanceID, + frwkFeedbackLinkSel Prid, + frwkFeedbackLinkUsage OBJECT IDENTIFIER, + frwkFeedbackLinkInterval Integer32, + frwkFeedbackLinkThreshold Prid, + frwkFeedbackLinkFlags BITS + } + + frwkFeedbackLinkId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely identifies an + instance of the frwkFeedbackLinkTable class." + ::= { frwkFeedbackLinkEntry 1} + + frwkFeedbackLinkSel OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the selection criteria instance that + defines the conditions to use by the PEP for + monitoring the usage." + + ::= { frwkFeedbackLinkEntry 2} + + frwkFeedbackLinkUsage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The PRC of the usage policy class that the PEP uses to + monitor, record and report." + + ::= { frwkFeedbackLinkEntry 3} + + frwkFeedbackLinkInterval OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "Maximum interval in units of the value of the + Accounting Timer specified by the PDP in the client + accept message. A frwkFeedbackLinkInterval of 1 is + equal to the value of the Accounting Timer. This value + must be 1 or greater. " + + ::= { frwkFeedbackLinkEntry 4} + + frwkFeedbackLinkThreshold OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the threshold class instance. This + instance specifies the threshold values for the usage + policy." + ::= { frwkFeedbackLinkEntry 5} + + frwkFeedbackLinkFlags OBJECT-TYPE + SYNTAX BITS { + periodic(0), + threshold(1), + changeOnly(2), + } + STATUS current + DESCRIPTION + "This value indicates the reporting basis of the usage + policy. The feed back may be generated on demand, on a + periodic basis regardless of a change in value from the + previous report, on a periodic basis if a change in + value has occurred, or the usage is reported when an + identified threshold value in the usage instance has + been reached. + If the �periodic� flag is set, the PEP will provide + unsolicited reports at the rate specified in + frwkFeedbackLinkInterval. + If the �periodic� flag is not set, reports will only be + generated when solicited by the PDP. + The �threshold� and �changeOnly� flags make the + periodic reports conditional - these flags only make + sense in combination with the �periodic� flag." + + ::= { frwkFeedbackLinkEntry 6} + + + -- + -- All actual usage classes are in the separate + -- FrwkFeedbackUsageClasses group + -- + + FrwkFeedbackUsageClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 2 } + + + -- + -- The generic traffic (byte & packet count) usage class + -- + + frwkFeedbackTrafficUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class defines the usage attributes that the PEP + is to monitor for plain traffic handling elements + like filters. All packets and the bytes contained in + these packets are counted. It also contains the PRID + of the linkage instance associating the selection + criteria instance with the usage instance." + + ::= { frwkFeedbackUsageClasses 1} + + frwkFeedbackTrafficUsageEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackTrafficUsageId} + UNIQUENESS { frwkFeedbackTrafficUsageLinkPRID } + + ::= {frwkFeedbackTrafficUsageTable 1} + + FrwkFeedbackTrafficUsageEntry ::= SEQUENCE { + FrwkFeedbackTrafficUsageId InstanceID, + frwkFeedbackTrafficUsageLinkPRID Prid, + frwkFeedbackTrafficUsagePacketCount Counter64, + frwkFeedbackTrafficUsageByteCount Counter64 + + } + + frwkFeedbackTrafficUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackTrafficUsageEntry 1 } + + frwkFeedbackTrafficUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + + ::= { frwkFeedbackTrafficUsageEntry 2 } + + frwkFeedbackTrafficUsagePacketCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated + element during the reporting interval." + + ::= {frwkFeedbackTrafficUsageEntry 3} + + frwkFeedbackTrafficUsageByteCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The byte count of packets handled by the associated + element." + ::= { frwkFeedbackTrafficUsageEntry 4} + + + + -- + -- The traffic usage class, qualified for an interface + -- + + frwkFeedbackIfTrafficUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackIfTrafficUsageEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "A usage PRC similar to the basic TrafficUsage class + that also contains a reference to an interface. This + class should be used with a selection criteria that + matches an element that is assigned to multiple + interfaces. The interface field can be used to + associate the instances of this class with the specific + element�s assignment." + ::= { frwkFeedbackUsageClasses 2 } + + frwkFeedbackIfTrafficUsageEntry OBJECT-TYPE + SYNTAX FrwkFeedbackIfTrafficUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {frwkFeedbackIfTrafficUsageId} + UNIQUENESS { frwkFeedbackIfTrafficUsageLinkPRID, + frwkFeedbackIfTrafficUsageInterface } + + ::= {frwkFeedbackTrafficUsageTable 1} + + FrwkFeedbackIfTrafficUsageEntry ::= SEQUENCE { + FrwkFeedbackIfTrafficUsageId InstanceID, + frwkFeedbackIfTrafficUsageLinkPRID Prid, + frwkFeedbackIfTrafficUsageInterface Prid, + frwkFeedbackIfTrafficUsagePacketCount Counter64, + frwkFeedbackIfTrafficUsageByteCount Counter64 + + } + + frwkFeedbackIfTrafficUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackIfTrafficUsageEntry 1 } + + frwkFeedbackIfTrafficUsageLinkPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the Linkage policy instance used to base + this usage policy instance upon." + ::= { frwkFeedbackIfTrafficUsageEntry 2 } + + frwkFeedbackIfTrafficUsageInterface OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a frwkIfRoleCombo instance, uniquely + identifying a specific interface." + ::= { frwkFeedbackIfTrafficUsageEntry 3 } + + frwkFeedbackIfTrafficUsagePacketCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The count of packets handled by the associated element + during the reporting interval." + ::= { frwkFeedbackIfTrafficUsageEntry 4 } + + frwkFeedbackIfTrafficUsageByteCount OBJECT-TYPE + SYNTAX Counter64 + STATUS current + DESCRIPTION + "The byte count of packets + handled by the associated element." + ::= { frwkFeedbackIfTrafficUsageEntry 5 } + + + + -- + -- The Threshold class that accompanies the above Usage PRCs + -- + + frwkFeedbackTrafficThresholdTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackTrafficThresholdEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class defines the threshold attributes + corresponding to usage attributes specified in + frwkFeedbackTrafficUsageTable, + frwkFeedbackIfTrafficUsageTable and other similar + usage classes. + The usage object is considered to match the threshold + condition if the following expression evaluates to + �TRUE�: + { + byteCond = (ByteThreshold != NULL) ? + (ByteThreshold > ByteCounter) : FALSE; + packetCond (PacketThreshold != NULL) ? + (PacketThreshold > PacketCounter) : FALSE; + return ( byteCond || packetCond ); + }" + + ::= { frwkFeedbackUsageClasses 3} + + frwkFeedbackTrafficThresholdEntry OBJECT-TYPE + SYNTAX FrwkFeedbackTrafficThresholdEntry + STATUS current + DESCRIPTION + "Defines the attributes to hold threshold values." + PIB-INDEX {frwkFeedbackTrafficThresholdId} + + ::= {frwkFeedbackTrafficThresholdTable 1} + + FrwkFeedbackTrafficThresholdEntry ::= SEQUENCE { + FrwkFeedbackTrafficThresholdId InstanceID, + frwkFeedbackTrafficThresholdPacketThreshold Integer64, + frwkFeedbackTrafficThresholdByteThreshold Integer64 + } + + frwkFeedbackIfTrafficThresholdId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackIfTrafficThresholdEntry 1 } + + frwkFeedbackIfTrafficThresholdPacketThreshold OBJECT-TYPE + SYNTAX Integer64 + STATUS current + DESCRIPTION + "The threshold, in terms of packets, that must be + exceeded to trigger a report in the next + reporting interval." + ::= { frwkFeedbackIfTrafficThresholdEntry 2 } + + frwkFeedbackIfTrafficThresholdByteThreshold OBJECT-TYPE + SYNTAX Integer64 + STATUS current + DESCRIPTION + "The threshold, in terms of bytes, that must be + exceeded to trigger a report in the next + reporting interval." + ::= { frwkFeedbackIfTrafficThresholdEntry 3 } + + + + -- + -- All Selection classes are in the separate + -- FrwkFeedbackSelectionClasses group + -- + + FrwkFeedbackSelectionClasses + OBJECT IDENTIFIER ::= { feedbackPolFrameworkPib 3 } + + -- + -- The Set WatchPoint Table + -- + + frwkFeedbackSetWatchPointTable OBJECT-TYPE + SYNTAX SEQUENCE OF FrwkFeedbackSetWatchPointEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a specific processing point to watch + for the desired usage. This selection criteria + may be useful in PIBs that are designed using a + datapath approach where the policies are linked + and can be reused within the PIB." + + ::= { frwkFeedbackSelectionClasses 1} + + frwkFeedbackSetWatchPointEntry OBJECT-TYPE + SYNTAX FrwkFeedbackSetWatchPointEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackSetWatchPointId } + + + ::= {frwkFeedbackSetWatchPointTable 1} + + FrwkFeedbackSetWatchPointEntry ::= SEQUENCE { + frwkFeedbackSetWatchPointId InstanceID, + frwkFeedbackSetWatchPointPolicyPRID Prid, + + } + + frwkFeedbackSetWatchPointId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackSetWatchPointEntry 1 } + + frwkFeedbackSetWatchPointPolicyPRID OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the enforcement policy instance where + the associated usage is to be monitored." + + ::= { frwkFeedbackSetWatchPointEntry 2 } + + + -- + -- DPE Selection Class + -- + + frwkFeedbackDPESelectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF frwkFeedbackDPESelectionEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a specific data path element to collect + usage information" + + ::= { frwkFeedbackSelectionClasses 2} + + frwkFeedbackDPESelectionEntry OBJECT-TYPE + SYNTAX frwkFeedbackDPESelecyionEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackDPESelectionId } + UNIQUENESS { frwkFeedbackDPESelectionDataPathElement, + frwkFeedbackDPESelectionInterface, + frwkFeedbackDPESelectionIfDirection } + + ::= {frwkFeedbackDPESelectionTable 1} + + frwkFeedbackDPESelectionEntry ::= SEQUENCE { + frwkFeedbackDPESelectionId InstanceId, + frwkFeedbackDPESelectionDataPathElement Prid, + frwkFeedbackDPESelectionInterface Prid, + frwkFeedbackDPESelectionIfDirection IfDirection + } + + frwkFeedbackDPESelectionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackDPESelectionEntry 1 } + + + frwkFeedbackDPESelectionDataPathElement OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the element in the data path that we + want to collect usage information from. This element + must be part of the data path assigned to the + interface/direction combination referenced in this + object." + ::= { frwkFeedbackDPESelectionEntry 2 } + + frwkFeedbackDPESelectionInterface OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a frwkIfRoleCombo instance, uniquely + identifying a specific interface" + ::= { frwkFeedbackDPESelectionEntry 3 } + + frwkFeedbackDPESelectionIfDirection OBJECT-TYPE + SYNTAX IfDirection + STATUS current + DESCRIPTION + "The direction (ingress/egress) that to which the DPE + is attached that we want to match." + ::= { frwkFeedbackDPESelectionEntry 4 } + + + -- + -- DPE Selection Query Class + -- + + frwkFeedbackDPESelectionQueryTable OBJECT-TYPE + SYNTAX SEQUENCE OF frwkFeedbackDPESelectionQueryEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + "This class defines a selection criteria that + identifies a set of assignments of a data path element + based on an entry in the Data Path Table + Each matched assignment will collect and report usage + independently, so this selection criteria should be + combined with a Usage PRC that includes an interface + reference." + + ::= { frwkFeedbackSelectionClasses 3} + + frwkFeedbackDPESelectionQueryEntry OBJECT-TYPE + SYNTAX frwkFeedbackDPESelectionQueryEntry + STATUS current + DESCRIPTION + "Defines the attributes the of the selection + criteria identifying a specific policy + where to monitor the associated usage." + PIB-INDEX { frwkFeedbackDPESelectionQueryId } + UNIQUENESS { frwkFeedbackDPESelectionQueryDataPath, + FrwkFeedbackDPESelectionQueryDataPathElement } + + ::= {frwkFeedbackDPESelectionQueryTable 1} + + frwkFeedbackDPESelectionQueryEntry ::= SEQUENCE { + frwkFeedbackDPESelectionQueryId InstanceId, + frwkFeedbackDPESelectionQueryDataPath Prid, + frwkFeedbackDPESelectionQueryDataPathElement Prid + } + + frwkFeedbackDPESelectionQueryId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Arbitrary integer index that uniquely identifies + an instance of the class." + ::= { frwkFeedbackDPESelectionQueryEntry 1 } + + frwkFeedbackDPESelectionQueryDataPath OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of a Data Path instance, identifying a + group of data path assignments." + ::= { frwkFeedbackDPESelectionQueryEntry 2 } + + frwkFeedbackDPESelectionQueryDataPathElement OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the element in the data path that we + want to collect usage information from. This element + must be part of the data path referenced from the + frwkFeedbackDPESelectionQueryDataPath field." + ::= { frwkFeedbackDPESelectionQueryEntry 3 } + + END diff --git a/pibs/tubs/IP-TE-PIB b/pibs/tubs/IP-TE-PIB new file mode 100644 index 0000000..8cbf6b1 --- /dev/null +++ b/pibs/tubs/IP-TE-PIB @@ -0,0 +1,847 @@ +IP-TE-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP, + TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId + FROM COPS-PR-SPPI-TC + + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + Count + FROM ACCOUNTING-FRAMEWORK-PIB + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination + FROM FRAMEWORK-TC-PIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + +ipTePib MODULE-IDENTITY + + SUBJECT-CATEGORIES { all } -- IP TE client-type to be + -- assigned by IANA + LAST-UPDATED "200106180900Z" + ORGANIZATION "France Telecom" + CONTACT-INFO " + Christian Jacquenet + France Telecom R & D + 42, rue des Coutures + BP 6243 + 14066 CAEN CEDEX 04 + France + Phone: +33 2 31 75 94 28 + E-Mail: christian.jacquenet@francetelecom.com" + DESCRIPTION + "The PIB module containing a set of policy rule classes + that describe IP Traffic Engineering policies to be + enforced within and between domains." + REVISION "200111061600Z" + DESCRIPTION + "Initial version." + + ::= { ibrpib 23 } -- tbd to be assigned by IANA + +ipTeFwdClasses OBJECT IDENTIFIER ::= { ipTePib 1 } +ipTeMetricsClasses OBJECT IDENTIFIER ::= { ipTePib 2 } +ipTeStatsClasses OBJECT IDENTIFIER ::= { ipTePib 3 } + +-- +-- Forwarding classes. The information contained in these classes +-- is meant to provide a detailed description of the traffic +-- engineered routes. One table has been specified so far, but there +-- is room for depicting specific kinds of routes, like MPLS LSP +-- paths, for example. +-- +-- + + +-- + +-- The ipTeRouteTable +-- + +ipTeRouteTable OBJECT-TYPE + + SYNTAX SEQUENCE OF IpTeRouteEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This table describes the traffic engineered routes + that are installed in the forwarding tables of the + routers." + + ::= { ipTeFwdClasses 1 } + +ipTeRouteEntry OBJECT-TYPE + + SYNTAX IpTeRouteEntry + STATUS current + DESCRIPTION + "A particular traffic engineered route to a particular + destination." + + PIB-INDEX { ipTeRoutePrid } + UNIQUENESS { ipTeRouteDest, + ipTeRouteMask, + ipTeRoutePhbId, + ipTeRouteNextHopAddress, + ipTeRouteNextHopMask } + + ::= { ipTeRouteTable 1 } + +IpTeRouteEntry ::= SEQUENCE { + ipTeRoutePrid InstanceId, + ipTeRouteDestAddrType InetAddressType, + ipTeRouteDest InetAddress, + ipTeRouteMask Unsigned32, + ipTeRouteNextHopAddrType InetAddressType, + ipTeRouteNextHopAddress InetAddress, + ipTeRouteNextHopMask Unsigned32, + ipTeRoutePhbId Integer32, + ipTeRouteOrigin Integer32, + ipTeRouteIfIndex Unsigned32 +} + +ipTeRoutePrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this route + entry among all the route entries." + + + ::= { ipTeRouteEntry 1 } + +ipTeRouteDestAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value ([16]) used to + specify the type of a route's destination IP address." + + ::= { ipTeRouteEntry 2 } + +ipTeRouteDest OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's + destination address." + + ::= { ipTeRouteEntry 3 } + +ipTeRouteMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + destination IP address. Masks are constructed by + setting bits in sequence from the most-significant bit + downwards for ipTeRouteMask bits length. All other bits + in the mask, up to the number needed to fill the length + of the address ipTeRouteDest are cleared to zero. A + zero bit in the mask then means that the corresponding + bit in the address always matches." + + ::= { ipTeRouteEntry 4 } + +ipTeRouteNextHopAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the + type of the next hop's IP address." + + ::= { ipTeRouteEntry 5 } + +ipTeRouteNextHopAddress OBJECT-TYPE + + SYNTAX InetAddress + + STATUS current + DESCRIPTION + "On remote routes, the address of the next router en + route; Otherwise, 0.0.0.0." + + ::= { ipTeRouteEntry 6 } + +ipTeRouteNextHopMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + next hop's IP address. Masks are constructed by setting + bits in sequence from the most-significant bit + downwards for ipTeRouteNextHopMask bits length. All + other bits in the mask, up to the number needed to fill + the length of the address ipTeRouteNextHop are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ipTeRouteEntry 7 } + +ipTeRoutePhbId OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The binary encoding that uniquely identifies a Per Hop + Behaviour (PHB, [17]) or a set of PHBs associated to + the DiffServ Code Point (DSCP, [15]) marking of the IP + datagrams that will be conveyed along this traffic + engineered route. A value of -1 indicates that a + specific PHB ID value has not been defined, and thus, + all PHB ID values are considered a match." + + ::= { ipTeRouteEntry 8 } + +ipTeRouteOrigin OBJECT-TYPE + + SYNTAX INTEGER { + ospf (0), + is-is (1), + bgp (2), + static (3), + other (4) + } + STATUS current + DESCRIPTION + "The value indicates the origin of the route. Either + the route has been computed by OSPF, by IS-IS, + announced by BGP4, is static, or else." + + + ::= { ipTeRouteEntry 9 } + +ipTeRouteIfIndex OBJECT-TYPE + + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route is + accessible." + + ::= { ipTeRouteEntry 10 } + +-- +-- +-- Traffic engineering metrics classes. +-- +-- The information stored in the following tables is meant to provide +-- the description of the metric values that will be taken into +-- account by intra- and inter-domain routing protocols for the +-- computation and the selection of traffic-engineered routes. So +-- far, two tables have been identified: one which is based upon the +-- traffic engineering extensions of OSPF, the other which is based +-- upon the contents of a specific BGP4 attribute. Next versions of +-- the draft will include IS-IS specific information, as well as +-- extensions of the BGP4-specific provisioning information for the +-- "basic" enforcement of a BGP4 routing policy. +-- +-- + +-- +-- The ospfTeMetricsTable +-- + +ospfTeMetricsTable OBJECT-TYPE + + SYNTAX SEQUENCE OF OspfTeMetricsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class describes the link and traffic engineering + metrics that will be used by OSPF for TE route + calculation purposes." + + ::= { ipTeMetricsClasses 1 } + +ospfTeMetricsEntry OBJECT-TYPE + + SYNTAX OspfTeMetricsEntry + STATUS current + DESCRIPTION + + "The collection of OSPF metrics assigned to the router + on a per interface and per DSCP basis." + + PIB-INDEX { ospfTeMetricsPrid } + UNIQUENESS { ospfTeMetricsIfMetricValue, + ospfTeMetricsDscpValue, + ospfTeMetricsSubTlvLinkType, + ospfTeMetricsSubTlvLinkId, + ospfTeMetricsSubTlvLocalIfAddress, + ospfTeMetricsSubTlvRemoteIfAddress, + ospfTeMetricsSubTlvTeMetric, + ospfTeMetricsSubTlvMaxBandwidth, + ospfTeMetricsSubTlvMaxRsvBandwidth, + ospfTeMetricsSubTlvUnrsvBandwidth, + ospfTeMetricsIfIndex } + + ::= { ospfTeMetricsTable 1 } + +OspfTeMetricsEntry ::= SEQUENCE { + + ospfTeMetricsPrid InstanceId, + ospfTeMetricsIfMetricValue Unsigned32, + ospfTeMetricsDscpValue Integer32, + ospfTeMetricsTopTlvAddressType InetAddressType, + ospfTeMetricsTopTlvRouterAddress InetAddress, + ospfTeMetricsTopTlvRouterAddrMask Unsigned32, + ospfTeMetricsSubTlvLinkType INTEGER, + ospfTeMetricsSubTlvLinkIdAddressType InetAddressType, + ospfTeMetricsSubTlvLinkId InetAddress, + ospfTeMetricsSubTlvLinkIdMask Unsigned32, + ospfTeMetricsSubTlvLocalIfAddressType InetAddressType, + ospfTeMetricsSubTlvLocalIfAddress InetAddress, + ospfTeMetricsSubTlvLocalIfAddrMask Unsigned32, + ospfTeMetricsSubTlvRemoteIfAddressType InetAddressType, + ospfTeMetricsSubTlvRemoteIfAddress InetAddress, + ospfTeMetricsSubTlvRemoteIfAddrMask Unsigned32, + ospfTeMetricsSubTlvTeMetric Unsigned32, + ospfTeMetricsSubTlvMaxBandwidth Unsigned32, + ospfTeMetricsSubTlvMaxRsvBandwidth Unsigned32, + ospfTeMetricsSubTlvUnrsvBandwidth Unsigned32, + ospfTeMetricsIfIndex Unsigned32 + } + +ospfTeMetricsPrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this instance of + the ospfTeMetrics class." + + ::= { ospfTeMetricsEntry 1 } + + +ospfTeMetricsIfMetricValue OBJECT-TYPE + + SYNTAX Unsigned32 (1..65535) + STATUS current + DESCRIPTION + "The link metric assigned on a per-DSCP and per-interface + basis, as defined in this instance of the + ospfTeMetricsTable." + + ::= { ospfTeMetricsEntry 2 } + +ospfTeMetricsDscpValue OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The DSCP value associated to the link metric value, as + defined in the ospfTeMetricsIfMetricValue object. A value of + -1 indicates that a specific DSCP value has not been defined + and thus all DSCP values are considered a match." + + ::= { ospfTeMetricsEntry 3 } + +ospfTeMetricsTopTlvAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address of the advertising router. This IP address is always + reachable, and is typically implemented as a 'loopback' + address." + + ::= { ospfTeMetricsEntry 4 } + +ospfTeMetricsTopTlvRouterAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address (typically a 'loopback' address) of the + advertising router." + + ::= { ospfTeMetricsEntry 5 } + +ospfTeMetricsTopTlvRouterAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + + + "Indicates the length of a mask for the matching of the + advertising router's IP address. Masks are constructed by + setting bits in sequence from the most-significant bit + downwards for ospfTeMetricsTopTlvRouterAddrMask bits length. + All other bits in the mask, up to the number needed to fill + the length of the address ospfTeMetricsTopTlvRouterAddress + are cleared to zero. A zero bit in the mask then means that + the corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 6 } + +ospfTeMetricsSubTlvLinkType OBJECT-TYPE + + SYNTAX INTEGER { + point-to-Point (1), + multiaccess (2) + } + STATUS current + DESCRIPTION + "The type of the link, either point-to-point or multi- + access, as defined in [8]." + + ::= { ospfTeMetricsEntry 7 } + +ospfTeMetricsSubTlvLinkIdAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to identify the + other end of the link, described as an IP address." + + ::= { ospfTeMetricsEntry 8 } + +ospfTeMetricsSubTlvLinkId OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The identification of the other end of the link, described + as an IP address." + + ::= { ospfTeMetricsEntry 9 } + +ospfTeMetricsSubTlvLinkIdMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + other end of the link, described as an IP address. Masks + are constructed by setting bits in sequence from the most- + + significant bit downwards for ospfTeMetricsSubTlvLinkMask + bits length. All other bits in the mask, up to the number + needed to fill the length of the address + ospfTeMetricsSubTlvLinkId are cleared to zero. A zero bit + in the mask then means that the corresponding bit in the + address always matches." + + ::= { ospfTeMetricsEntry 10 } + +ospfTeMetricsSubTlvLocalIfAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address of the interface corresponding to this instance of + the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 11 } + +ospfTeMetricsSubTlvLocalIfAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Specifies the IP address of the interface of the + advertising router which is connected to the link described + as an instance of the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 12 } + +ospfTeMetricsSubTlvLocalIfAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the IP + address of the interface corresponding to this instance of + the ospfTeMetricsSubTlvLinkType object. Masks are + constructed by setting bits in sequence from the most- + significant bit downwards for + ospfTeMetricsSubTlvLocalIfAddrMask bits length. All other + bits in the mask, up to the number needed to fill the length + of the address ospfTeMetricsSubTlvLocalIfAddress are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 13 } + + +ospfTeMetricsSubTlvRemoteIfAddressType OBJECT-TYPE + + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address(es) of the neighbour's interface corresponding to + this instance of the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 14 } + +ospfTeMetricsSubTlvRemoteIfAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Specifies the IP address of the neighbour's interface that + is attached to this instance of the + ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 15 } + +ospfTeMetricsSubTlvRemoteIfAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the IP + address of the neighbor's interface corresponding to this + instance of the ospfTeMetricsSubTlvLinkType object. Masks + are constructed by setting bits in sequence from the most- + significant bit downwards for + ospfTeMetricSubTlvRemoteIfAddrMaskbits length. All other + bits in the mask, up to the number needed to fill the length + of the address ospfTeMetricSubTlvRemoteIfAddress are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 16 } + + +ospfTeMetricsSubTlvTeMetric OBJECT-TYPE + + SYNTAX Unsigned32 (1..65535) + STATUS current + DESCRIPTION + "The link metric that has been assigned for traffic + engineering purposes. This metric may be different from the + ospfTeMetricsLinkMetricValue object of the ospfTeMetrics + class." + + ::= { ospfTeMetricsEntry 17 } + +ospfTeMetricsSubTlvMaxBandwidth OBJECT-TYPE + + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the maximum bandwidth that can be used on this + instance of the ospfTeMetricsSubTlvLinkType object in this + direction (from the advertising router), expressed in bytes + per second." + + ::= { ospfTeMetricsEntry 18 } + +ospfTeMetricsSubTlvMaxRsvBandwidth OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the maximum bandwidth that may be reserved on + this instance of the ospfTeMetricsSubTlvLinkType object in + this direction (from the advertising router), expressed in + bytes per second." + + ::= { ospfTeMetricsEntry 19 } + +ospfTeMetricsSubTlvUnrsvBandwidth OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the amount of bandwidth that has not been + reserved on this instance of the ospfTeMetricsSubTlvLinkType + object in this direction yet (from the advertising router), + expressed in bytes per second." + + ::= { ospfTeMetricsEntry 20 } + +ospfTeMetricsIfIndex OBJECT-TYPE + + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface that + has been assigned a (set of) metrics." + + ::= { ospfTeMetricsEntry 21 } + +-- +-- The bgpTeTable +-- + + +bgpTeTable OBJECT-TYPE + + SYNTAX SEQUENCE OF BgpTeEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class describes the QoS information that MAY be + conveyed in BGP4 UPDATE messages for the purpose of + enforcing an inter-domain traffic engineering policy." + + ::= { ipTeMetricsClasses 2 } + +bgpTeEntry OBJECT-TYPE + + SYNTAX BgpTeEntry + STATUS current + DESCRIPTION + "The collection of QoS information to be exchanged by + BGP peers, as far as the announcement of traffic + engineered routes between domains is concerned." + + PIB-INDEX { bgpTePrid } + UNIQUENESS { bgpTeNlriAddress, + bgpTeNextHopAddress, + bgpTeReservedRate, + bgpTeAvailableRate, + bgpTeLossRate, + bgpTePhbId, + bgpTeMinOneWayDelay, + bgpTeMaxOneWayDelay, + bgpTeAverageOneWayDelay, + bgpTeInterPacketDelay } + + ::= { bgpTeTable 1 } + +BgpTeEntry ::= SEQUENCE { + + bgpTePrid InstanceId, + bgpTeNlriAddressType InetAddressType, + bgpTeNlriAddress InetAddress, + bgpTeNlriAddressMask Unsigned32, + bgpTeNextHopAddressType InetAddressType, + bgpTeNextHopAddress InetAddress, + bgpTeNextHopMask Unsigned32, + bgpTeReservedRate Unsigned32, + bgpTeAvailableRate Unsigned32, + bgpTeLossRate Unsigned32, + bgpTePhbId Integer32, + bgpTeMinOneWayDelay Unsigned32, + bgpTeMaxOneWayDelay Unsigned32, + bgpTeAverageOneWayDelay Unsigned32, + bgpTeInterPacketDelay Unsigned32 + + } + +bgpTePrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this instance of + the bgpTe class." + + ::= { bgpTeEntry 1 } + +bgpTeNlriAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value ([18]) used to + specify the type of a route's destination IP address." + + ::= { bgpTeEntry 2 } + +bgpTeNlriAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the NLRI field of the + QOS_NLRI attribute of the BGP4 UPDATE message." + + ::= { bgpTeEntry 3 } + +bgpTeNlriAddressMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + NLRI field of the QOS_NLRI attribute of the BGP4 UPDATE + message. Masks are constructed by setting bits in + sequence from the most-significant bit downwards for + bgpTeNlriMask bits length. All other bits in the mask, + up to the number needed to fill the length of the + address bgpTeNlri are cleared to zero. A zero bit in + the mask then means that the corresponding bit in the + address always matches." + + ::= { bgpTeEntry 4 } + +bgpTeNextHopAddressType OBJECT-TYPE + + SYNTAX InetAddressType + + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the + type of the next hop's IP address." + + ::= { bgpTeEntry 5 } + +bgpTeNextHopAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "On remote routes, the address of the next router en + route; Otherwise, 0.0.0.0." + + ::= { bgpTeEntry 6 } + +bgpTeNextHopMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the next + hop's IP address. Masks are constructed by setting bits in + sequence from the most-significant bit downwards for + bgpTeNextHopMask bits length. All other bits in the mask, up + to the number needed to fill the length of the address + bgpTeNextHopAddress are cleared to zero. A zero bit in the + mask then means that the corresponding bit in the address + always matches." + + ::= { bgpTeEntry 7 } + +bgpTeReservedRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "Specifies the reserved rate that cannot be used on this + instance of the bgpTeNlriAddress object in this direction + (from the advertising BGP peer), expressed in kilobits per + second." + + ::= { bgpTeEntry 8 } + +bgpTeAvailableRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + + "Specifies the available rate that may be reserved on this + instance of the bgpTeNlriAddress object in this direction + (from the advertising BGP peer), expressed in kilobits per + second." + + ::= { bgpTeEntry 9 } + +bgpTeLossRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "Specifies the packet loss ratio that has been observed on + this route instantiated by the bgpTeNlriAddress object." + + ::= { bgpTeEntry 10 } + +bgpTePhbId OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The binary encoding that uniquely identifies a Per Hop + Behaviour (PHB) or a set of PHBs associated to the + DiffServ Code Point marking of the IP datagrams that + are to be conveyed along this traffic engineered route. + A value of -1 indicates that a specific PHB ID value + has not been defined, and thus, all PHB ID values are + considered a match." + + ::= { bgpTeEntry 11 } + +bgpTeMinOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the minimum one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 12 } + +bgpTeMaxOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + + + + "Specifies the maximum one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 13 } + +bgpTeAverageOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the average one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 14 } + +bgpTeInterPacketDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the inter-packet delay variation that has been + observed on this route instantiated by the bgpTeNlriAddress + object." + + ::= { bgpTeEntry 15 } + +-- +-- Traffic engineering statistics classes. The information contained +-- in the yet-to-be defined tables aim at reporting statistics about +-- COPS control traffic, engineered traffic and potential errors. The +-- next version of the draft will provide a first table that will be +-- based upon the use of the "count" clause. +-- +-- + +END diff --git a/pibs/tubs/IP-TE-PIB-orig b/pibs/tubs/IP-TE-PIB-orig new file mode 100644 index 0000000..cdd364c --- /dev/null +++ b/pibs/tubs/IP-TE-PIB-orig @@ -0,0 +1,844 @@ +IP-TE-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId + FROM COPS-PR-SPPI-TC + + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + Count, TEXTUAL-CONVENTION + FROM ACCT-FR-PIB-TC + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination, PrcIdentifier + FROM FRAMEWORK-ROLE-PIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + + +ipTePib MODULE-IDENTITY + + SUBJECT-CATEGORIES { tbd } -- IP TE client-type to be + -- assigned by IANA + LAST-UPDATED "200106180900Z" + ORGANIZATION "France Telecom" + CONTACT-INFO " + Christian Jacquenet + France Telecom R & D + 42, rue des Coutures + BP 6243 + 14066 CAEN CEDEX 04 + France + Phone: +33 2 31 75 94 28 + E-Mail: christian.jacquenet@francetelecom.com" + DESCRIPTION + "The PIB module containing a set of policy rule classes + that describe IP Traffic Engineering policies to be + enforced within and between domains." + REVISION "200111061600Z" + DESCRIPTION + "Initial version." + + ::= { pib tbd } -- tbd to be assigned by IANA + +ipTeFwdClasses OBJECT IDENTIFIER ::= { ipTePib 1 } +ipTeMetricsClasses OBJECT IDENTIFIER ::= { ipTePib 2 } +ipTeStatsClasses OBJECT IDENTIFIER ::= { ipTePib 3 } + +-- +-- Forwarding classes. The information contained in these classes +-- is meant to provide a detailed description of the traffic +-- engineered routes. One table has been specified so far, but there +-- is room for depicting specific kinds of routes, like MPLS LSP +-- paths, for example. +-- +-- + + +-- + +-- The ipTeRouteTable +-- + +ipTeRouteTable OBJECT-TYPE + + SYNTAX SEQUENCE OF ipTeRouteEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This table describes the traffic engineered routes + that are installed in the forwarding tables of the + routers." + + ::= { ipTeFwdClasses 1 } + +ipTeRouteEntry OBJECT-TYPE + + SYNTAX ipTeRouteEntry + STATUS current + DESCRIPTION + "A particular traffic engineered route to a particular + destination." + + PIB-INDEX { ipTeRoutePrid } + UNIQUENESS { ipTeRouteDest, + ipTeRouteMask, + ipTeRoutePhbId, + ipTeRouteNextHopAddress + ipTeRouteNextHopMask } + + ::= { ipTeRouteTable 1 } + +ipTeRouteEntry ::= SEQUENCE { + ipTeRoutePrid InstanceId, + ipTeRouteDestAddrType InetAddressType, + ipTeRouteDest InetAddress, + ipTeRouteMask Unsigned32, + ipTeRouteNextHopAddrType InetAddressType, + ipTeRouteNextHopAddress InetAddress, + ipTeRouteNextHopMask Unsigned32, + ipTeRoutePhbId Integer32, + ipTeRouteOrigin Integer32, + ipTeRouteIfIndex Unsigned32 +} + +ipTeRoutePrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this route + entry among all the route entries." + + + ::= { ipTeRouteEntry 1 } + +ipTeRouteDestAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value ([16]) used to + specify the type of a route's destination IP address." + + ::= { ipTeRouteEntry 2 } + +ipTeRouteDest OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's + destination address." + + ::= { ipTeRouteEntry 3 } + +ipTeRouteMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + destination IP address. Masks are constructed by + setting bits in sequence from the most-significant bit + downwards for ipTeRouteMask bits length. All other bits + in the mask, up to the number needed to fill the length + of the address ipTeRouteDest are cleared to zero. A + zero bit in the mask then means that the corresponding + bit in the address always matches."" + + ::= { ipTeRouteEntry 4 } + +ipTeRouteNextHopAddrType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the + type of the next hop's IP address." + + ::= { ipTeRouteEntry 5 } + +ipTeRouteNextHopAddress OBJECT-TYPE + + SYNTAX InetAddress + + STATUS current + DESCRIPTION + "On remote routes, the address of the next router en + route; Otherwise, 0.0.0.0." + + ::= { ipTeRouteEntry 6 } + +ipTeRouteNextHopMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + next hop's IP address. Masks are constructed by setting + bits in sequence from the most-significant bit + downwards for ipTeRouteNextHopMask bits length. All + other bits in the mask, up to the number needed to fill + the length of the address ipTeRouteNextHop are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ipTeRouteEntry 7 } + +ipTeRoutePhbId OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The binary encoding that uniquely identifies a Per Hop + Behaviour (PHB, [17]) or a set of PHBs associated to + the DiffServ Code Point (DSCP, [15]) marking of the IP + datagrams that will be conveyed along this traffic + engineered route. A value of -1 indicates that a + specific PHB ID value has not been defined, and thus, + all PHB ID values are considered a match." + + ::= { ipTeRouteEntry 8 } + +ipTeRouteOrigin OBJECT-TYPE + + SYNTAX INTEGER { + OSPF (0) + IS-IS (1) + BGP (2) + STATIC (3) + OTHER (4) + } + STATUS current + DESCRIPTION + "The value indicates the origin of the route. Either + the route has been computed by OSPF, by IS-IS, + announced by BGP4, is static, or else." + + + ::= { ipTeRouteEntry 9 } + +ipTeRouteIfIndex OBJECT-TYPE + + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface + through which the next hop of this route is + accessible." + + ::= { ipTeRouteEntry 10 } + +-- +-- +-- Traffic engineering metrics classes. +-- +-- The information stored in the following tables is meant to provide +-- the description of the metric values that will be taken into +-- account by intra- and inter-domain routing protocols for the +-- computation and the selection of traffic-engineered routes. So +-- far, two tables have been identified: one which is based upon the +-- traffic engineering extensions of OSPF, the other which is based +-- upon the contents of a specific BGP4 attribute. Next versions of +-- the draft will include IS-IS specific information, as well as +-- extensions of the BGP4-specific provisioning information for the +-- "basic" enforcement of a BGP4 routing policy. +-- +-- + +-- +-- The ospfTeMetricsTable +-- + +ospfTeMetricsTable OBJECT-TYPE + + SYNTAX SEQUENCE OF ospfTeMetricsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class describes the link and traffic engineering + metrics that will be used by OSPF for TE route + calculation purposes." + + ::= { ipTeMetricsClasses 1 } + +ospfTeMetricsEntry OBJECT-TYPE + + SYNTAX ospfTeMetricsEntry + STATUS current + DESCRIPTION + + "The collection of OSPF metrics assigned to the router + on a per interface and per DSCP basis." + + PIB-INDEX { ospfTeMetricsPrid } + UNIQUENESS { ospfTeMetricsLinkMetricValue, + ospfTeMetricsDscpValue, + ospfTeMetricSubTlvLinkType, + ospfTeMetricSubTlvLinkId, + ospfTeMetricSubTlvLocalIfAddress, + ospfTeMetricSubTlvRemoteIfAddress, + ospfTeMetricSubTlvTeMetric, + ospfTeMetricSubTlvMaxBandwidth, + ospfTeMetricSubTlvMaxRsvBandwidth, + ospfTeMetricSubTlvUnRsvBandwidth, + ospfTeMetricIfIndex } + + ::= { ospfTeMetricsTable 1 } + +ospfTeMetricsEntry ::= SEQUENCE { + + ospfTeMetricsPrid InstanceId, + ospfTeMetricsIfMetricValue Unsigned32, + ospfTeMetricsDscpValue Integer32, + ospfTeMetricsTopTlvAddressType InetAddressType, + ospfTeMetricsTopTlvRouterAddress InetAddress, + ospfTeMetricsTopTlvRouterAddrMask Unsigned32, + ospfTeMetricsSubTlvLinkType Unsigned32, + ospfTeMetricsSubTlvLinkIdAddressType InetAddressType, + ospfTeMetricsSubTlvLinkId InetAddress, + ospfTeMetricsSubTlvLinkIdMask Unsigned32, + ospfTeMetricsSubTlvLocalIfAddressType InetAddressType, + ospfTeMetricsSubTlvLocalIfAddress InetAddress, + ospfTeMetricsSubTlvLocalIfAddrMask Unsigned32, + ospfTeMetricsSubTlvRemoteIfAddressType InetAddressType, + ospfTeMetricsSubTlvRemoteIfAddress InetAddress, + ospfTeMetricsSubTlvRemoteIfAddrMask Unsigned32, + ospfTeMetricsSubTlvTeMetric Unsigned32, + ospfTeMetricsSubTlvMaxBandwidth Unsigned32, + ospfTeMetricsSubTlvMaxRsvBandwidth Unsigned32, + ospfTeMetricsSubTlvUnrsvBandwidth Unsigned32, + ospfTeMetricsIfIndex Unsigned32 + } + +ospfTeMetricsPrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this instance of + the ospfTeMetrics class." + + ::= { ospfTeMetricsEntry 1 } + + +ospfTeMetricsIfMetricValue OBJECT-TYPE + + SYNTAX Unsigned32 (1..65535) + STATUS current + DESCRIPTION + "The link metric assigned on a per-DSCP and per-interface + basis, as defined in this instance of the + ospfTeMetricsTable." + + ::= { ospfTeMetricsEntry 2 } + +ospfTeMetricsDscpValue OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The DSCP value associated to the link metric value, as + defined in the ospfTeMetricsIfMetricValue object. A value of + -1 indicates that a specific DSCP value has not been defined + and thus all DSCP values are considered a match." + + ::= { ospfTeMetricsEntry 3 } + +ospfTeMetricsTopTlvAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address of the advertising router. This IP address is always + reachable, and is typically implemented as a "loopback" + address." + + ::= { ospfTeMetricsEntry 4 } + +ospfTeMetricsTopTlvRouterAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address (typically a "loopback" address) of the + advertising router." + + ::= { ospfTeMetricsEntry 5 } + +ospfTeMetricsTopTlvRouterAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + + + "Indicates the length of a mask for the matching of the + advertising router's IP address. Masks are constructed by + setting bits in sequence from the most-significant bit + downwards for ospfTeMetricsTopTlvRouterAddrMask bits length. + All other bits in the mask, up to the number needed to fill + the length of the address ospfTeMetricsTopTlvRouterAddress + are cleared to zero. A zero bit in the mask then means that + the corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 6 } + +ospfTeMetricsSubTlvLinkType OBJECT-TYPE + + SYNTAX INTEGER { + Point-to-Point (1) + Multiaccess (2) + } + STATUS current + DESCRIPTION + "The type of the link, either point-to-point or multi- + access, as defined in [8]." + + ::= { ospfTeMetricsEntry 7 } + +ospfTeMetricsSubTlvLinkIdAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to identify the + other end of the link, described as an IP address." + + ::= { ospfTeMetricsEntry 8 } + +ospfTeMetricsSubTlvLinkId OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The identification of the other end of the link, described + as an IP address." + + ::= { ospfTeMetricsEntry 9 } + +ospfTeMetricsSubTlvLinkMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + other end of the link, described as an IP address. Masks + are constructed by setting bits in sequence from the most- + + significant bit downwards for ospfTeMetricsSubTlvLinkMask + bits length. All other bits in the mask, up to the number + needed to fill the length of the address + ospfTeMetricsSubTlvLinkId are cleared to zero. A zero bit + in the mask then means that the corresponding bit in the + address always matches." + + ::= { ospfTeMetricsEntry 10 } + +ospfTeMetricsSubTlvLocalIfAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address of the interface corresponding to this instance of + the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 11 } + +ospfTeMetricsSubTlvLocalIfAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Specifies the IP address of the interface of the + advertising router which is connected to the link described + as an instance of the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 12 } + +ospfTeMetricsSubTlvLocalIfAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the IP + address of the interface corresponding to this instance of + the ospfTeMetricsSubTlvLinkType object. Masks are + constructed by setting bits in sequence from the most- + significant bit downwards for + ospfTeMetricsSubTlvLocalIfAddrMask bits length. All other + bits in the mask, up to the number needed to fill the length + of the address ospfTeMetricsSubTlvLocalIfAddress are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 13 } + + +ospfTeMetricsSubTlvRemoteIfAddressType OBJECT-TYPE + + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the IP + address(es) of the neighbour's interface corresponding to + this instance of the ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 14 } + +ospfTeMetricSubTlvRemoteIfAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Specifies the IP address of the neighbour's interface that + is attached to this instance of the + ospfTeMetricsSubTlvLinkType object." + + ::= { ospfTeMetricsEntry 15 } + +ospfTeMetricSubTlvRemoteIfAddrMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the IP + address of the neighbor's interface corresponding to this + instance of the ospfTeMetricsSubTlvLinkType object. Masks + are constructed by setting bits in sequence from the most- + significant bit downwards for + ospfTeMetricSubTlvRemoteIfAddrMaskbits length. All other + bits in the mask, up to the number needed to fill the length + of the address ospfTeMetricSubTlvRemoteIfAddress are cleared + to zero. A zero bit in the mask then means that the + corresponding bit in the address always matches." + + ::= { ospfTeMetricsEntry 16 } + + +ospfTeMetricSubTlvTeMetric OBJECT-TYPE + + SYNTAX Unsigned32 (1..65535) + STATUS current + DESCRIPTION + "The link metric that has been assigned for traffic + engineering purposes. This metric may be different from the + ospfTeMetricsLinkMetricValue object of the ospfTeMetrics + class." + + ::= { ospfTeMetricsEntry 17 } + +ospfTeMetricSubTlvBandwidthType OBJECT-TYPE + + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the maximum bandwidth that can be used on this + instance of the ospfTeMetricsSubTlvLinkType object in this + direction (from the advertising router), expressed in bytes + per second." + + ::= { ospfpTeMetricsEntry 18 } + +ospfTeMetricSubTlvMaxRsvBandwidth OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the maximum bandwidth that may be reserved on + this instance of the ospfTeMetricsSubTlvLinkType object in + this direction (from the advertising router), expressed in + bytes per second." + + ::= { ospfTeMetricsEntry 19 } + +ospfTeMetricSubTlvUnrsvBandwidth OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "bytes per second" + STATUS current + DESCRIPTION + "Specifies the amount of bandwidth that has not been + reserved on this instance of the ospfTeMetricsSubTlvLinkType + object in this direction yet (from the advertising router), + expressed in bytes per second." + + ::= { ospfTeMetricsEntry 20 } + +ospfTeMetricIfIndex OBJECT-TYPE + + SYNTAX Unsigned32 (0..65535) + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local interface that + has been assigned a (set of) metrics." + + ::= { ospfTeMetricsEntry 21 } + +-- +-- The bgpTeTable +-- + + +bgpTeTable OBJECT-TYPE + + SYNTAX SEQUENCE OF bgpTeEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class describes the QoS information that MAY be + conveyed in BGP4 UPDATE messages for the purpose of + enforcing an inter-domain traffic engineering policy." + + ::= { ipTeMetricsClasses 2 } + +bgpTeEntry OBJECT-TYPE + + SYNTAX bgpTeEntry + STATUS current + DESCRIPTION + "The collection of QoS information to be exchanged by + BGP peers, as far as the announcement of traffic + engineered routes between domains is concerned." + + PIB-INDEX { bgpTePrid } + UNIQUENESS { bgpTeNlriAddress, + bgpTeNextHopAddress, + bgpTeReservedRate, + bgpTeAvailableRate, + bgpTeLossRate, + bgpTePhbId, + bgpTeMinOneWayDelay, + bgpTeMaxOneWayDelay, + bgpTeAverageOneWayDelay, + bgpTeInterPacketDelay } + + ::= { bgpTeTable 1 } + +bgpTeEntry ::= SEQUENCE { + + bgpTePrid InstanceId, + bgpTeNlriAddressType InetAddressType, + bgpTeNlriAddress InetAddress, + bgpTeNlriAddressMask Unsigned32, + bgpTeNextHopAddressType InetAddressType, + bgpTeNextHopAddress InetAddress, + bgpTeNextHopMask Unsigned32, + bgpTeReservedRate Unsigned32, + bgpTeAvailableRate Unsigned32, + bgpTeLossRate Unsigned32, + bgpTePhbId Integer32, + bgpTeMinOneWayDelay Unsigned32, + bgpTeMaxOneWayDelay Unsigned32, + bgpTeAverageOneWayDelay Unsigned32, + bgpTeInterPacketDelay Unsigned32 + + } + +bgpTePrid OBJECT-TYPE + + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies this instance of + the bgpTe class." + + ::= { bgpTeEntry 1 } + +bgpTeNlriAddressType OBJECT-TYPE + + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type enumeration value ([18]) used to + specify the type of a route's destination IP address." + + ::= { bgpTeEntry 2 } + +bgpTeNlriAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the NLRI field of the + QOS_NLRI attribute of the BGP4 UPDATE message." + + ::= { bgpTeEntry 3 } + +bgpTeNlriAddressMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the + NLRI field of the QOS_NLRI attribute of the BGP4 UPDATE + message. Masks are constructed by setting bits in + sequence from the most-significant bit downwards for + bgpTeNlriMask bits length. All other bits in the mask, + up to the number needed to fill the length of the + address bgpTeNlri are cleared to zero. A zero bit in + the mask then means that the corresponding bit in the + address always matches."" + + ::= { bgpTeEntry 4 } + +bgpTeNextHopAddressType OBJECT-TYPE + + SYNTAX InetAddressType + + STATUS current + DESCRIPTION + "The address type enumeration value used to specify the + type of the next hop's IP address." + + ::= { bgpTeEntry 5 } + +bgpTeNextHopAddress OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "On remote routes, the address of the next router en + route; Otherwise, 0.0.0.0." + + ::= { bgpTeEntry 6 } + +bgpTeNextHopMask OBJECT-TYPE + + SYNTAX Unsigned32 (0..128) + STATUS current + DESCRIPTION + "Indicates the length of a mask for the matching of the next + hop's IP address. Masks are constructed by setting bits in + sequence from the most-significant bit downwards for + bgpTeNextHopMask bits length. All other bits in the mask, up + to the number needed to fill the length of the address + bgpTeNextHopAddress are cleared to zero. A zero bit in the + mask then means that the corresponding bit in the address + always matches." + + ::= { bgpTeEntry 7 } + +bgpTeReservedRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + "Specifies the reserved rate that cannot be used on this + instance of the bgpTeNlriAddress object in this direction + (from the advertising BGP peer), expressed in kilobits per + second." + + ::= { bgpTeEntry 8 } + +bgpTeAvailableRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "kilobits per second" + STATUS current + DESCRIPTION + + "Specifies the available rate that may be reserved on this + instance of the bgpTeNlriAddress object in this direction + (from the advertising BGP peer), expressed in kilobits per + second." + + ::= { bgpTeEntry 9 } + +bgpTeLossRate OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + STATUS current + DESCRIPTION + "Specifies the packet loss ratio that has been observed on + this route instantiated by the bgpTeNlriAddress object." + + ::= { bgpTeEntry 10 } + +bgpTePhbId OBJECT-TYPE + + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The binary encoding that uniquely identifies a Per Hop + Behaviour (PHB) or a set of PHBs associated to the + DiffServ Code Point marking of the IP datagrams that + are to be conveyed along this traffic engineered route. + A value of -1 indicates that a specific PHB ID value + has not been defined, and thus, all PHB ID values are + considered a match." + + ::= { bgpTeEntry 11 } + +bgpTeMinOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the minimum one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 12 } + +bgpTeMaxOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + + + + "Specifies the maximum one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 13 } + +bgpTeAverageOneWayDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the average one-way delay that has been observed + on this route instantiated by the bgpTeNlriAddress object, + expressed in milliseconds." + + ::= { bgpTeEntry 14 } + +bgpTeInterPacketDelay OBJECT-TYPE + + SYNTAX Unsigned32 (0..4294967295) + UNITS "milliseconds" + STATUS current + DESCRIPTION + "Specifies the inter-packet delay variation that has been + observed on this route instantiated by the bgpTeNlriAddress + object." + + ::= { bgpTeEntry 15 } + +-- +-- Traffic engineering statistics classes. The information contained +-- in the yet-to-be defined tables aim at reporting statistics about +-- COPS control traffic, engineered traffic and potential errors. The +-- next version of the draft will provide a first table that will be +-- based upon the use of the "count" clause. +-- +-- + +END diff --git a/pibs/tubs/IPSEC-POLICY-PIB b/pibs/tubs/IPSEC-POLICY-PIB new file mode 100644 index 0000000..9b82619 --- /dev/null +++ b/pibs/tubs/IPSEC-POLICY-PIB @@ -0,0 +1,4159 @@ +IPSEC-POLICY-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, OBJECT-GROUP, pib + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, TagId, TagReferenceId, Prid + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + RoleCombination + FROM FRAMEWORK-TC-PIB; + + ipSecPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- IPsec Client Type -- + LAST-UPDATED "200202241800Z" + ORGANIZATION "IETF ipsp WG" + CONTACT-INFO " + Man Li + Nokia + 5 Wayside Road, + Burlington, MA 01803 + Phone: +1 781 993 3923 + Email: man.m.li@nokia.com + + Avri Doria + Div. of Computer Communications + Lulea University of Technology + SE-971 87 + Lulea, Sweden + Phone: +46 920 49 3030 + Email: avri@sm.luth.se + + Jamie Jason + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 9531 + Fax: +1 503 264 9428 + Email: jamie.jason@intel.com + + Cliff Wang + SmartPipes Inc. + Suite 300, 565 Metro Place South + Dublin, OH 43017 + Phone: +1 614 923 6241 + Email: CWang@smartpipes.com + + Markus Stenberg + SSH Communications Security Corp. + Fredrikinkatu 42 + FIN-00100 Helsinki, Finland + Phone: +358 20 500 7466 + Email: markus.stenberg@ssh.com" + + + DESCRIPTION + "This PIB module contains a set of policy rule classes that + describe IPsec policies." + ::= { ibrpib 6 } -- yyy to be assigned by IANA -- + + + Unsigned16 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An unsigned 16 bit integer." + SYNTAX Unsigned32 (0..65535) + + ipSecAssociation OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies IPsec Security Associations." + ::= { ipSecPolicyPib 1 } + + ipSecAhTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies AH Transforms." + ::= { ipSecPolicyPib 2 } + + ipSecEspTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies ESP Transforms." + ::= { ipSecPolicyPib 3 } + + ipSecCompTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies Comp Transforms." + ::= { ipSecPolicyPib 4 } + + ipSecIkeAssociation OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies IKE Security Associations." + ::= { ipSecPolicyPib 5 } + + ipSecCredential OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies credentials for IKE phase one negotiations." + ::= { ipSecPolicyPib 6 } + + ipSecSelector OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies selectors for IPsec associations." + ::= { ipSecPolicyPib 7 } + + ipSecPolicyTimePeriod OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies the time periods during which a policy rule + is valid." + ::= { ipSecPolicyPib 8 } + + ipSecIfCapability OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies capabilities associated with interface + types." + ::= { ipSecPolicyPib 9 } + + ipSecPolicyPibConformance OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies requirements for conformance to the IPsec + Policy PIB" + ::= { ipSecPolicyPib 10 } + + + -- + -- + -- The ipSecRuleTable + -- + + ipSecRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table is the starting point for specifying an IPsec policy. + It contains an ordered list of IPsec rules. " + ::= { ipSecAssociation 1 } + + ipSecRuleEntry OBJECT-TYPE + SYNTAX IpSecRuleEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRulePrid } + UNIQUENESS { + ipSecRuleIfName, + ipSecRuleRoles, + ipSecRuleOrder + } + ::= { ipSecRuleTable 1 } + + IpSecRuleEntry ::= SEQUENCE { + ipSecRulePrid InstanceId, + ipSecRuleIfName SnmpAdminString, + ipSecRuleRoles RoleCombination, + ipSecRuleDirection INTEGER, + ipSecRuleIpSecSelectorSetId TagReferenceId, + ipSecRuleipSecIpsoFilterSetId TagReferenceId, + ipSecRuleIpSecActionSetId TagReferenceId, + ipSecRuleActionExecutionStrategy INTEGER, + ipSecRuleOrder Unsigned16, + ipSecRuleLimitNegotiation INTEGER, + ipSecRuleAutoStart TruthValue, + ipSecRuleIpSecRuleTimePeriodGroupId TagReferenceId + } + + ipSecRulePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecRuleEntry 1 } + + ipSecRuleIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this IPsec rule applies. + The interface capability name specified by this attribute MUST + exist in the frwkIfCapSetTable [FR-PIB] prior to association with + an instance of this class." + ::= { ipSecRuleEntry 2 } + + ipSecRuleRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "Specifies the role combination of the interface to which this + IPsec rule should apply. There must exist an instance in the + frwkIfCapSetRoleComboTable [FR-PIB] specifying this role + combination, together with the interface capability set specified + by ipSecRuleIfName, prior to association with an instance of this + class." + ::= { ipSecRuleEntry 3 } + + ipSecRuleDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2), + bi-directional(3) + } + STATUS current + DESCRIPTION + "Specifies the direction of traffic to which this rule should + apply." + ::= { ipSecRuleEntry 4 } + + ipSecRuleIpSecSelectorSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecSelectorSetSelectorSetId } + STATUS current + DESCRIPTION + "Identifies a set of selectors to be associated with this IPsec + rule. " + ::= { ipSecRuleEntry 5 } + + ipSecRuleipSecIpsoFilterSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIpsoFilterSetFilterSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPSO filters to be associated with this IPsec + rule. A value of zero indicates that there are no IPSO filters + associated with this rule. + + When the value of this attribute is not zero, the set of IPSO + filters is ANDed with the set of Selectors specified by + ipSecRuleIpSecSelectorSetId. In other words, a packet MUST match a + selector in the selector sets and a filter in the IPSO filter sets + before the actions associated with this rule can be applied." + ::= { ipSecRuleEntry 6 } + + ipSecRuleIpSecActionSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecActionSetActionSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPsec actions to be associated with this + rule." + ::= { ipSecRuleEntry 7 } + + ipSecRuleActionExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { + doAll(1), + doUntilSuccess(2) + } + STATUS current + DESCRIPTION + "Specifies the strategy to be used in executing the sequenced + actions in the action set identified by ipSecRuleIpSecActionSetId. + + DoAll (1) causes the execution of all the actions in the action + set according to their defined precedence order. The precedence + order is specified by the ipSecActionSetOrder in the + ipSecActionSetTable. + + DoUntilSuccess (2) causes the execution of actions according to + their defined precedence order until a successful execution of a + single action. The precedence order is specified by the + ipSecActionSetOrder in the ipSecActionSetTable." + ::= { ipSecRuleEntry 8 } + + ipSecRuleOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the rule within all the rules + associated with {IfName, Roles}. A smaller value indicates a + higher precedence order. " + ::= { ipSecRuleEntry 9 } + + ipSecRuleLimitNegotiation OBJECT-TYPE + SYNTAX INTEGER { + initiator(1), + responder(2), + both(3) + } + STATUS current + DESCRIPTION + "Limits the negotiation method. Before proceeding with a phase 2 + negotiation, the LimitNegotiation property of the IPsecRule is + first checked to determine if the negotiation part indicated for + the rule matches that of the current negotiation (Initiator, + Responder, or Either). + + This attribute is ignored when an attempt is made to refresh an + expiring SA (either side can initiate a refresh operation). The + system can determine that the negotiation is a refresh operation + by checking to see if the selector information matches that of an + existing SA. If LimitNegotiation does not match and the selector + corresponds to a new SA, the negotiation is stopped. " + ::= { ipSecRuleEntry 10 } + + ipSecRuleAutoStart OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates if this rule should be automatically executed." + ::= { ipSecRuleEntry 11 } + + ipSecRuleIpSecRuleTimePeriodGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecRuleTimePeriodSetRuleTimePeriodSetId } + STATUS current + DESCRIPTION + "Identifies an IPsec rule time period set, specified in + ipSecRuleTimePeriodSetTable, that is associated with this rule. + + A value of zero indicates that this IPsec rule is always valid." + ::= { ipSecRuleEntry 12 } + + + -- + -- + -- The ipSecActionSetTable + -- + + ipSecActionSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecActionSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec action sets." + ::= { ipSecAssociation 2 } + + ipSecActionSetEntry OBJECT-TYPE + SYNTAX IpSecActionSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecActionSetPrid } + UNIQUENESS { + ipSecActionSetActionSetId, + ipSecActionSetActionId, + ipSecActionSetDoActionLogging, + ipSecActionSetDoPacketLogging, + ipSecActionSetOrder + } + ::= { ipSecActionSetTable 1 } + + IpSecActionSetEntry ::= SEQUENCE { + ipSecActionSetPrid InstanceId, + ipSecActionSetActionSetId TagId, + ipSecActionSetActionId Prid, + ipSecActionSetDoActionLogging TruthValue, + ipSecActionSetDoPacketLogging TruthValue, + ipSecActionSetOrder Unsigned16 + } + + ipSecActionSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecActionSetEntry 1 } + + ipSecActionSetActionSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPsec action set is composed of one or more IPsec actions. + Each action belonging to the same set has the same ActionSetId." + ::= { ipSecActionSetEntry 2 } + + ipSecActionSetActionId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes an + action to be taken. + + For IPsec static actions, it MUST point to an instance in the + ipSecStaticActionTable. + + For IPsec negotiation actions, it MUST point to an instance in the + ipSecNegotiationActionTable. For other actions, it may point to an + instance in a table specified by other PIB modules." + ::= { ipSecActionSetEntry 3 } + + ipSecActionSetDoActionLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether a log message is to be generated when the + action is performed. This applies for ipSecNegotiationActions + with the meaning of logging a message when the negotiation is + attempted (with the success or failure result). This also applies + for ipSecStaticAction only for PreconfiguredTransport action or + PreconfiguredTunnel action with the meaning of logging a message + when the preconfigured SA is actually installed in the SADB." + ::= { ipSecActionSetEntry 4 } + + ipSecActionSetDoPacketLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to log when the resulting security association + is used to process a packet. For ipSecStaticActions, a log message + is to be generated when the IPsecBypass, IpsecDiscard or IKEReject + actions are executed." + ::= { ipSecActionSetEntry 5 } + + ipSecActionSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the action within the action + set. An action with a smaller precedence order is to be applied + before one with a larger precedence order. " + ::= { ipSecActionSetEntry 6 } + + + -- + -- + -- The ipSecStaticActionTable + -- + + ipSecStaticActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecStaticActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec static actions." + ::= { ipSecAssociation 3 } + + ipSecStaticActionEntry OBJECT-TYPE + SYNTAX IpSecStaticActionEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecStaticActionPrid } + UNIQUENESS { + ipSecStaticActionAction, + ipSecStaticActionTunnelEndpointId, + ipSecStaticActionDfHandling, + ipSecStaticActionSpi, + ipSecStaticActionLifetimeSeconds, + ipSecStaticActionLifetimeKilobytes, + ipSecStaticActionSaTransformId + } + ::= { ipSecStaticActionTable 1 } + + IpSecStaticActionEntry ::= SEQUENCE { + ipSecStaticActionPrid InstanceId, + ipSecStaticActionAction INTEGER, + ipSecStaticActionTunnelEndpointId ReferenceId, + ipSecStaticActionDfHandling INTEGER, + ipSecStaticActionSpi Unsigned32, + ipSecStaticActionLifetimeSeconds Unsigned32, + ipSecStaticActionLifetimeKilobytes Unsigned32, + ipSecStaticActionSaTransformId Prid + } + + ipSecStaticActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecStaticActionEntry 1 } + + ipSecStaticActionAction OBJECT-TYPE + SYNTAX INTEGER { + byPass(1), + discard(2), + ikeRejection(3), + preConfiguredTransport(4), + preConfiguredTunnel(5) + } + STATUS current + DESCRIPTION + "Specifies the IPsec action to be applied to the traffic. byPass + (1) means that packets are to be allowed to pass in the clear. + discard (2) means that packets are to be discarded. ikeRejection + (3) means that that an IKE negotiation should not even be + attempted or continued. preConfiguredTransport (4) means that an + IPsec transport SA is pre-configured. preConfiguredTunnel (5) + means that an IPsec tunnel SA is pre-configured. " + ::= { ipSecStaticActionEntry 2 } + + ipSecStaticActionTunnelEndpointId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAddressEntry } + STATUS current + DESCRIPTION + "When ipSecStaticActionAction is preConfiguredTunnel (5), this + attribute indicates the peer gateway IP address. This address MUST + be a single endpoint address. + + When ipSecStaticActionAction is not preConfiguredTunnel, this + attribute MUST be zero." + ::= { ipSecStaticActionEntry 3 } + + ipSecStaticActionDfHandling OBJECT-TYPE + SYNTAX INTEGER { + copy(1), + set(2), + clear(3) + } + STATUS current + DESCRIPTION + "When ipSecStaticActionAction is preConfiguredTunnel, this + attribute specifies how the DF bit is managed. + + Copy (1) indicates to copy the DF bit from the internal IP header + to the external IP header. Set (2) indicates to set the DF bit of + the external IP header to 1. Clear (3) indicates to clear the DF + bit of the external IP header to 0. + + When ipSecStaticActionAction is not preConfiguredTunnel, this + attribute MUST be ignored. " + ::= { ipSecStaticActionEntry 4 } + + ipSecStaticActionSpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the SPI to be used with the SA Transform identified by + ipSecStaticActionSaTransformId. + + When ipSecStaticActionAction is neither + preConfiguredTransportAction nor preConfiguredTunnelAction, this + attribute MUST be ignored." + ::= { ipSecStaticActionEntry 5 } + + ipSecStaticActionLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the amount of time (in seconds) that a security + association derived from this action should be used. When + ipSecStaticActionAction is neither preConfiguredTransportAction + nor preConfiguredTunnelAction, this attribute MUST be ignored. + + A value of zero indicates that there is not a lifetime associated + with this action (i.e., infinite lifetime). + + The actual lifetime of the preconfigured SA will be the smallest + of the value of this LifetimeSeconds property and of the value of + the MaxLifetimeSeconds property of the associated SA Transform. + Except if the value of this LifetimeSeconds property is zero, then + there will be no lifetime associated to this SA." + ::= { ipSecStaticActionEntry 6 } + + ipSecStaticActionLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the SA lifetime in kilobytes. When + ipSecStaticActionAction is neither preConfiguredTransportAction + nor preConfiguredTunnelAction, this attribute MUST be ignored. + + A value of zero indicates that there is not a lifetime associated + with this action (i.e., infinite lifetime). + + The actual lifetime of the preconfigured SA will be the smallest + of the value of this LifetimeKilobytes property and of the value + of the MaxLifetimeKilobytes property of the associated SA + transform. Except if the value of this LifetimeKilobytes property + is zero, then there will be no lifetime associated with this + action. + " + ::= { ipSecStaticActionEntry 7 } + + ipSecStaticActionSaTransformId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes an + SA transform, e.g, ipSecEspTransformTable, ipSecAhTransformTable." + ::= { ipSecStaticActionEntry 8 } + + + -- + -- + -- The ipSecNegotiationActionTable + -- + + ipSecNegotiationActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecNegotiationActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec negotiation actions." + ::= { ipSecAssociation 4 } + + ipSecNegotiationActionEntry OBJECT-TYPE + SYNTAX IpSecNegotiationActionEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecNegotiationActionPrid } + UNIQUENESS { + ipSecNegotiationActionAction, + ipSecNegotiationActionTunnelEndpointId, + ipSecNegotiationActionDfHandling, + ipSecNegotiationActionIpSecSecurityAssociationId, + ipSecNegotiationActionKeyExchangeId + } + ::= { ipSecNegotiationActionTable 1 } + + IpSecNegotiationActionEntry ::= SEQUENCE { + ipSecNegotiationActionPrid InstanceId, + ipSecNegotiationActionAction INTEGER, + ipSecNegotiationActionTunnelEndpointId ReferenceId, + ipSecNegotiationActionDfHandling INTEGER, + ipSecNegotiationActionIpSecSecurityAssociationId ReferenceId, + ipSecNegotiationActionKeyExchangeId Prid + } + + ipSecNegotiationActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecNegotiationActionEntry 1 } + + ipSecNegotiationActionAction OBJECT-TYPE + SYNTAX INTEGER { + transport(1), + tunnel(2) + } + STATUS current + DESCRIPTION + "Specifies the IPsec action to be applied to the traffic. + transport(1) means that the packet should be protected with a + security association in transport mode. tunnel(2) means that the + packet should be protected with a security association in tunnel + mode. If tunnel (2) is specified, ipSecActionTunnelEndpointId + MUST also be specified." + ::= { ipSecNegotiationActionEntry 2 } + + ipSecNegotiationActionTunnelEndpointId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAddressEntry } + STATUS current + DESCRIPTION + "When ipSecActionAction is tunnel (2), this attribute indicates + the peer gateway IP address. This address MUST be a single + endpoint address. + + When ipSecActionAction is not tunnel, this attribute MUST be + zero." + ::= { ipSecNegotiationActionEntry 3 } + + ipSecNegotiationActionDfHandling OBJECT-TYPE + SYNTAX INTEGER { + copy(1), + set(2), + clear(3) + } + STATUS current + DESCRIPTION + "When ipSecActionAction is tunnel, this attribute specifies how + the DF bit is managed. + + Copy (1) indicates to copy the DF bit from the internal IP header + to the external IP header. Set (2) indicates to set the DF bit of + the external IP header to 1. Clear (3) indicates to clear the DF + bit of the external IP header to 0. + + When ipSecActionAction is not tunnel, this attribute MUST be + ignored. " + ::= { ipSecNegotiationActionEntry 4 } + + ipSecNegotiationActionIpSecSecurityAssociationId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAssociationEntry } + STATUS current + DESCRIPTION + "Pointer to a valid instance in the + ipSecSecurityAssociationTable." + ::= { ipSecNegotiationActionEntry 5 } + + ipSecNegotiationActionKeyExchangeId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes key + exchange associations. If a single IKE phase one negotiation is + used for the key exchange, this attribute MUST point to an + instance in the ipSecIkeAssociationTable. If multiple IKE phase + one negotiations (e.g., with different modes) are to be tried + until success, this attribute SHOULD point to ipSecIkeRuleTable. + + For other key exchange methods, this attribute may point to an + instance of a PRC defined in some other PIB. + + A value of zero means that there is no key exchange procedure + associated." + ::= { ipSecNegotiationActionEntry 6 } + + + -- + -- + -- The ipSecAssociationTable + -- + + ipSecAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAssociationEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec associations." + ::= { ipSecAssociation 5 } + + ipSecAssociationEntry OBJECT-TYPE + SYNTAX IpSecAssociationEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAssociationPrid } + UNIQUENESS { + ipSecAssociationMinLifetimeSeconds, + ipSecAssociationMinLifetimeKilobytes, + ipSecAssociationIdleDurationSeconds, + ipSecAssociationUsePfs, + ipSecAssociationVendorId, + ipSecAssociationUseKeyExchangeGroup, + ipSecAssociationDhGroup, + ipSecAssociationGranularity, + ipSecAssociationProposalSetId + } + ::= { ipSecAssociationTable 1 } + + IpSecAssociationEntry ::= SEQUENCE { + ipSecAssociationPrid InstanceId, + ipSecAssociationMinLifetimeSeconds Unsigned32, + ipSecAssociationMinLifetimeKilobytes Unsigned32, + ipSecAssociationIdleDurationSeconds Unsigned32, + ipSecAssociationUsePfs TruthValue, + ipSecAssociationVendorId OCTET STRING, + ipSecAssociationUseKeyExchangeGroup TruthValue, + ipSecAssociationDhGroup Unsigned16, + ipSecAssociationGranularity INTEGER, + ipSecAssociationProposalSetId TagReferenceId + } + + ipSecAssociationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecAssociationEntry 1 } + + ipSecAssociationMinLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum SA seconds lifetime that will be accepted + from a peer while negotiating an SA based upon this action. + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecAssociationEntry 2 } + + ipSecAssociationMinLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum kilobyte lifetime that will be accepted + from a negotiating peer while negotiating an SA based upon this + action. A value of zero indicates that there is no minimum + lifetime enforced." + ::= { ipSecAssociationEntry 3 } + + ipSecAssociationIdleDurationSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies how long, in seconds, a security association may remain + unused before it is deleted. + + A value of zero indicates that idle detection should not be used + for the security association (only the seconds and kilobyte + lifetimes will be used)." + ::= { ipSecAssociationEntry 4 } + + ipSecAssociationUsePfs OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether or not to use PFS when refreshing keys." + ::= { ipSecAssociationEntry 5 } + + ipSecAssociationVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the IKE Vendor ID. This attribute is used together with + the property ipSecAssociationDhGroup (when it is in the vendor- + specific range) to identify the key exchange group. This + attribute is ignored unless ipSecAssociationUsePFS is true and + ipSecAssociationUseKeyExchangeGroup is false and + ipSecAssociationDhGroup is in the vendor-specific range (32768- + 65535)." + ::= { ipSecAssociationEntry 6 } + + ipSecAssociationUseKeyExchangeGroup OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether or not to use the same GroupId for phase 2 as + was used in phase 1. If UsePFS is false, then this attribute is + ignored. + + A value of true indicates that the phase 2 GroupId should be the + same as phase 1. A value of false indicates that the group number + specified by the ipSecSecurityAssociationDhGroup attribute SHALL + be used for phase 2. " + ::= { ipSecAssociationEntry 7 } + + ipSecAssociationDhGroup OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the key exchange group to use for phase 2 when the + property ipSecSecurityAssociationUsePfs is true and the property + ipSecSecurityAssociationUseKeyExchangeGroup is false." + ::= { ipSecAssociationEntry 8 } + + ipSecAssociationGranularity OBJECT-TYPE + SYNTAX INTEGER { + subnet(1), + address(2), + protocol(3), + port(4) + } + STATUS current + DESCRIPTION + "Specifies how the proposed selector for the security association + will be created. + + A value of 1 (subnet) indicates that the source and destination + subnet masks of the filter entry are used. + + A value of 2 (address) indicates that only the source and + destination IP addresses of the triggering packet are used. + + A value of 3 (protocol) indicates that the source and destination + IP addresses and the IP protocol of the triggering packet are + used. + + A value of 4 (port) indicates that the source and destination IP + addresses and the IP protocol and the source and destination layer + 4 ports of the triggering packet are used. " + ::= { ipSecAssociationEntry 9 } + + ipSecAssociationProposalSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecProposalSetProposalSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPsec proposals that is associated with this + IPsec association." + ::= { ipSecAssociationEntry 10 } + + + -- + -- + -- The ipSecProposalSetTable + -- + + ipSecProposalSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecProposalSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec proposal sets. Proposals within a set are ORed + with preference order. " + ::= { ipSecAssociation 6 } + + ipSecProposalSetEntry OBJECT-TYPE + SYNTAX IpSecProposalSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecProposalSetPrid } + UNIQUENESS { + ipSecProposalSetProposalSetId, + ipSecProposalSetProposalId, + ipSecProposalSetOrder + } + ::= { ipSecProposalSetTable 1 } + + IpSecProposalSetEntry ::= SEQUENCE { + ipSecProposalSetPrid InstanceId, + ipSecProposalSetProposalSetId TagId, + ipSecProposalSetProposalId ReferenceId, + ipSecProposalSetOrder Unsigned16 + } + + ipSecProposalSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecProposalSetEntry 1 } + + ipSecProposalSetProposalSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + + + "An IPsec proposal set is composed of one or more IPsec proposals. + Each proposal belonging to the same set has the same + ProposalSetId." + ::= { ipSecProposalSetEntry 2 } + + ipSecProposalSetProposalId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecProposalEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecProposalTable." + ::= { ipSecProposalSetEntry 3 } + + ipSecProposalSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the proposal + identified by ipSecProposalSetProposalId in a proposal set. The + proposal set is identified by ipSecProposalSetProposalSetId. + Proposals within a set are ORed with preference order. A smaller + integer value indicates a higher preference." + ::= { ipSecProposalSetEntry 4 } + + + -- + -- + -- The ipSecProposalTable + -- + + ipSecProposalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecProposalEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec proposals. It has references to ESP, AH and + IPCOMP Transform sets. Within a proposal, different types of + transforms are ANDed. Multiple transforms of the same type are + ORed with preference order." + ::= { ipSecAssociation 7 } + + ipSecProposalEntry OBJECT-TYPE + SYNTAX IpSecProposalEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecProposalPrid } + UNIQUENESS { + ipSecProposalEspTransformSetId, + ipSecProposalAhTransformSetId, + ipSecProposalCompTransformSetId + } + ::= { ipSecProposalTable 1 } + + IpSecProposalEntry ::= SEQUENCE { + ipSecProposalPrid InstanceId, + ipSecProposalEspTransformSetId TagReferenceId, + ipSecProposalAhTransformSetId TagReferenceId, + ipSecProposalCompTransformSetId TagReferenceId + } + + ipSecProposalPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecProposalEntry 1 } + + ipSecProposalEspTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecEspTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies a set of ESP transforms, specified in + ipSecEspTransformSetTable, that is associated with this proposal." + ::= { ipSecProposalEntry 2 } + + ipSecProposalAhTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAhTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies an AH transform set, specified in + ipSecAhTransformSetTable, that is associated with this proposal." + ::= { ipSecProposalEntry 3 } + + ipSecProposalCompTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCompTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies a set of IPComp transforms, specified + in ipSecCompTransformSetTable, that is associated with this + proposal." + ::= { ipSecProposalEntry 4 } + + + -- + -- + -- The ipSecAhTransformSetTable + -- + + ipSecAhTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAhTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies AH transform sets. Within a transform set, the + transforms are ORed with preference order. " + ::= { ipSecAhTransform 1 } + + ipSecAhTransformSetEntry OBJECT-TYPE + SYNTAX IpSecAhTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAhTransformSetPrid } + UNIQUENESS { + ipSecAhTransformSetTransformSetId, + ipSecAhTransformSetTransformId, + ipSecAhTransformSetOrder + } + ::= { ipSecAhTransformSetTable 1 } + + IpSecAhTransformSetEntry ::= SEQUENCE { + ipSecAhTransformSetPrid InstanceId, + ipSecAhTransformSetTransformSetId TagId, + ipSecAhTransformSetTransformId ReferenceId, + ipSecAhTransformSetOrder Unsigned16 + } + + ipSecAhTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class. " + ::= { ipSecAhTransformSetEntry 1 } + + ipSecAhTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An AH transform set is composed of one or more AH transforms. + Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecAhTransformSetEntry 2 } + + ipSecAhTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAhTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecAhTransformTable." + ::= { ipSecAhTransformSetEntry 3 } + + ipSecAhTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecAhTransformSetTransformId within a transform + set. The transform set is identified by + ipSecAhTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecAhTransformSetEntry 4 } + + + -- + -- + -- The ipSecAhTransformTable + -- + + ipSecAhTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAhTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies AH transforms." + ::= { ipSecAhTransform 2 } + + ipSecAhTransformEntry OBJECT-TYPE + SYNTAX IpSecAhTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAhTransformPrid } + UNIQUENESS { + ipSecAhTransformTransformId, + ipSecAhTransformIntegrityKey, + ipSecAhTransformUseReplayPrevention, + ipSecAhTransformReplayPreventionWindowSize, + ipSecAhTransformVendorId, + ipSecAhTransformMaxLifetimeSeconds, + ipSecAhTransformMaxLifetimeKilobytes + } + ::= { ipSecAhTransformTable 1 } + + IpSecAhTransformEntry ::= SEQUENCE { + ipSecAhTransformPrid InstanceId, + ipSecAhTransformTransformId INTEGER, + ipSecAhTransformIntegrityKey OCTET STRING, + ipSecAhTransformUseReplayPrevention TruthValue, + ipSecAhTransformReplayPreventionWindowSize Unsigned32, + ipSecAhTransformVendorId OCTET STRING, + ipSecAhTransformMaxLifetimeSeconds Unsigned32, + ipSecAhTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecAhTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class. " + ::= { ipSecAhTransformEntry 1 } + + ipSecAhTransformTransformId OBJECT-TYPE + SYNTAX INTEGER { + md5(2), + sha-1(3), + des(4) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the AH algorithm to propose." + ::= { ipSecAhTransformEntry 2 } + + ipSecAhTransformIntegrityKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this AH transform instance is used for a Static Action, this + attribute specifies the integrity key to be used. This attribute + MUST be ignored when this AH transform instance is used for a + Negotiation Action." + ::= { ipSecAhTransformEntry 3 } + + ipSecAhTransformUseReplayPrevention OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to enable replay prevention detection." + ::= { ipSecAhTransformEntry 4 } + + ipSecAhTransformReplayPreventionWindowSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies, in bits, the length of the sliding window used by the + replay prevention detection mechanism. The value of this property + is ignored if UseReplayPrevention is false. It is assumed that the + window size will be power of 2." + ::= { ipSecAhTransformEntry 5 } + + ipSecAhTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecAhTransformEntry 6 } + + ipSecAhTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecAhTransformEntry 7 } + + ipSecAhTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecAhTransformEntry 8 } + + + -- + -- + -- The ipSecEspTransformSetTable + -- + + ipSecEspTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecEspTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies ESP transform sets. Within a transform set, the choices + are ORed with preference order. " + ::= { ipSecEspTransform 1 } + + ipSecEspTransformSetEntry OBJECT-TYPE + SYNTAX IpSecEspTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecEspTransformSetPrid } + UNIQUENESS { + ipSecEspTransformSetTransformSetId, + ipSecEspTransformSetTransformId, + ipSecEspTransformSetOrder + } + ::= { ipSecEspTransformSetTable 1 } + + IpSecEspTransformSetEntry ::= SEQUENCE { + ipSecEspTransformSetPrid InstanceId, + ipSecEspTransformSetTransformSetId TagId, + ipSecEspTransformSetTransformId ReferenceId, + ipSecEspTransformSetOrder Unsigned16 + } + + ipSecEspTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecEspTransformSetEntry 1 } + + ipSecEspTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An ESP transform set is composed of one or more ESP transforms. + Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecEspTransformSetEntry 2 } + + ipSecEspTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecEspTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecEspTransformTable." + ::= { ipSecEspTransformSetEntry 3 } + + ipSecEspTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecEspTransformSetTransformId within a transform + set. The transform set is identified by + ipSecEspTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecEspTransformSetEntry 4 } + + + -- + -- + -- The ipSecEspTransformTable + -- + + ipSecEspTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecEspTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies ESP transforms." + ::= { ipSecEspTransform 2 } + + ipSecEspTransformEntry OBJECT-TYPE + SYNTAX IpSecEspTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecEspTransformPrid } + UNIQUENESS { + ipSecEspTransformIntegrityTransformId, + ipSecEspTransformCipherTransformId, + ipSecEspTransformIntegrityKey, + ipSecEspTransformCipherKey, + ipSecEspTransformCipherKeyRounds, + ipSecEspTransformCipherKeyLength, + ipSecEspTransformUseReplayPrevention, + ipSecEspTransformReplayPreventionWindowSize, + ipSecEspTransformVendorId, + ipSecEspTransformMaxLifetimeSeconds, + ipSecEspTransformMaxLifetimeKilobytes + } + ::= { ipSecEspTransformTable 1 } + + IpSecEspTransformEntry ::= SEQUENCE { + ipSecEspTransformPrid InstanceId, + ipSecEspTransformIntegrityTransformId INTEGER, + ipSecEspTransformCipherTransformId INTEGER, + ipSecEspTransformIntegrityKey OCTET STRING, + ipSecEspTransformCipherKey OCTET STRING, + ipSecEspTransformCipherKeyRounds Unsigned16, + ipSecEspTransformCipherKeyLength Unsigned16, + ipSecEspTransformUseReplayPrevention TruthValue, + ipSecEspTransformReplayPreventionWindowSize Unsigned32, + ipSecEspTransformVendorId OCTET STRING, + ipSecEspTransformMaxLifetimeSeconds Unsigned32, + ipSecEspTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecEspTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecEspTransformEntry 1 } + + ipSecEspTransformIntegrityTransformId OBJECT-TYPE + SYNTAX INTEGER { + none(0), + hmacMd5(1), + hmacSha(2), + desMac(3), + kpdk(4) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the ESP integrity algorithm to + propose." + ::= { ipSecEspTransformEntry 2 } + + ipSecEspTransformCipherTransformId OBJECT-TYPE + SYNTAX INTEGER { + desIV64(1), + des(2), + tripleDES(3), + rc5(4), + idea(5), + cast(6), + blowfish(7), + tripleIDEA(8), + desIV32(9), + rc4(10), + null(11) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the ESP encryption algorithm to + propose." + ::= { ipSecEspTransformEntry 3 } + + ipSecEspTransformIntegrityKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this ESP transform instance is used for a Static Action, + this attribute specifies the integrity key to be used. This + attribute MUST be ignored when this ESP transform instance is used + for a Negotiation Action." + ::= { ipSecEspTransformEntry 4 } + + ipSecEspTransformCipherKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this ESP transform instance is used for a Static Action, + this attribute specifies the cipher key to be used. This attribute + MUST be ignored when this ESP transform instance is used for a + Negotiation Action." + ::= { ipSecEspTransformEntry 5 } + + ipSecEspTransformCipherKeyRounds OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + + + "Specifies the number of key rounds for the ESP encryption + algorithm. For encryption algorithms that use fixed number of key + rounds, this value is ignored." + ::= { ipSecEspTransformEntry 6 } + + ipSecEspTransformCipherKeyLength OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies, in bits, the key length for the ESP encryption + algorithm. For encryption algorithms that use fixed-length keys, + this value is ignored." + ::= { ipSecEspTransformEntry 7 } + + ipSecEspTransformUseReplayPrevention OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to enable replay prevention detection." + ::= { ipSecEspTransformEntry 8 } + + ipSecEspTransformReplayPreventionWindowSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies, in bits, the length of the sliding window used by the + replay prevention detection mechanism. The value of this property + is ignored if UseReplayPrevention is false. It is assumed that the + window size will be power of 2." + ::= { ipSecEspTransformEntry 9 } + + ipSecEspTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecEspTransformEntry 10 } + + ipSecEspTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecEspTransformEntry 11 } + + ipSecEspTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecEspTransformEntry 12 } + + + -- + -- + -- The ipSecCompTransformSetTable + -- + + ipSecCompTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCompTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPComp transform sets. Within a transform set, the + choices are ORed with preference order." + ::= { ipSecCompTransform 1 } + + ipSecCompTransformSetEntry OBJECT-TYPE + SYNTAX IpSecCompTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCompTransformSetPrid } + UNIQUENESS { + ipSecCompTransformSetTransformSetId, + ipSecCompTransformSetTransformId, + ipSecCompTransformSetOrder + } + ::= { ipSecCompTransformSetTable 1 } + + IpSecCompTransformSetEntry ::= SEQUENCE { + ipSecCompTransformSetPrid InstanceId, + ipSecCompTransformSetTransformSetId TagId, + ipSecCompTransformSetTransformId ReferenceId, + ipSecCompTransformSetOrder Unsigned16 + } + + ipSecCompTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCompTransformSetEntry 1 } + + ipSecCompTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPCOMP transform set is composed of one or more IPCOMP + transforms. Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecCompTransformSetEntry 2 } + + ipSecCompTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecCompTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecCompTransformTable." + ::= { ipSecCompTransformSetEntry 3 } + + ipSecCompTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecCompTransformSetTransformId within a transform + set. The transform set is identified by + ipSecCompTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecCompTransformSetEntry 4 } + + + -- + -- + -- The ipSecCompTransformTable + -- + + ipSecCompTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCompTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IP compression (IPCOMP) algorithms." + ::= { ipSecCompTransform 2 } + + ipSecCompTransformEntry OBJECT-TYPE + SYNTAX IpSecCompTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCompTransformPrid } + UNIQUENESS { + ipSecCompTransformAlgorithm, + ipSecCompTransformDictionarySize, + ipSecCompTransformPrivateAlgorithm, + ipSecCompTransformVendorId, + ipSecCompTransformMaxLifetimeSeconds, + ipSecCompTransformMaxLifetimeKilobytes + } + ::= { ipSecCompTransformTable 1 } + + IpSecCompTransformEntry ::= SEQUENCE { + ipSecCompTransformPrid InstanceId, + ipSecCompTransformAlgorithm INTEGER, + ipSecCompTransformDictionarySize Unsigned16, + ipSecCompTransformPrivateAlgorithm Unsigned32, + ipSecCompTransformVendorId OCTET STRING, + ipSecCompTransformMaxLifetimeSeconds Unsigned32, + ipSecCompTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecCompTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCompTransformEntry 1 } + + ipSecCompTransformAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + oui(1), + deflate(2), + lzs(3) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the IPCOMP compression algorithm to + propose." + ::= { ipSecCompTransformEntry 2 } + + ipSecCompTransformDictionarySize OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the log2 maximum size of the dictionary for the + compression algorithm. For compression algorithms that have pre- + defined dictionary sizes, this value is ignored." + ::= { ipSecCompTransformEntry 3 } + + ipSecCompTransformPrivateAlgorithm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies a private vendor-specific compression algorithm." + ::= { ipSecCompTransformEntry 4 } + + ipSecCompTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecCompTransformEntry 5 } + + ipSecCompTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecCompTransformEntry 6 } + + ipSecCompTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecCompTransformEntry 7 } + + + -- + -- + -- The ipSecIkeRuleTable + -- + + ipSecIkeRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeRuleEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE rules. This table is required only when specifying: + + - Multiple IKE phase one actions (e.g., with different exchange + modes) that are associated with one IPsec association. These + actions are to be tried in sequence till one success. + + - IKE phase one actions that start automatically. + + Support of this table is optional." + ::= { ipSecIkeAssociation 1 } + + ipSecIkeRuleEntry OBJECT-TYPE + SYNTAX IpSecIkeRuleEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeRulePrid } + UNIQUENESS { + ipSecIkeRuleIfName, + ipSecIkeRuleRoles, + ipSecIkeRuleIkeActionSetId, + ipSecIkeRuleActionExecutionStrategy, + ipSecIkeRuleLimitNegotiation, + ipSecIkeRuleAutoStart + } + ::= { ipSecIkeRuleTable 1 } + + IpSecIkeRuleEntry ::= SEQUENCE { + ipSecIkeRulePrid InstanceId, + ipSecIkeRuleIfName SnmpAdminString, + ipSecIkeRuleRoles RoleCombination, + ipSecIkeRuleIkeActionSetId TagReferenceId, + ipSecIkeRuleActionExecutionStrategy INTEGER, + ipSecIkeRuleLimitNegotiation INTEGER, + ipSecIkeRuleAutoStart TruthValue, + ipSecIkeRuleIpSecRuleTimePeriodGroupId TagReferenceId + } + + ipSecIkeRulePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeRuleEntry 1 } + + ipSecIkeRuleIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this IKE rule applies. The + interface capability name specified by this attribute must exist + in the frwkIfCapSetTable [FR-PIB] prior to association with an + instance of this class. + + This attribute MUST be ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkeRuleEntry 2 } + + ipSecIkeRuleRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "Specifies the role combination of the interface to which this IKE + rule should apply. There must exist an instance in the + frwkIfCapSetRoleComboTable [FR-PIB] specifying this role + combination, together with the interface capability set specified + by ipSecIkeRuleIfName, prior to association with an instance of + this class. + + This attribute MUST be ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkeRuleEntry 3 } + + ipSecIkeRuleIkeActionSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIkeActionSetActionSetId } + STATUS current + DESCRIPTION + "Identifies a set of IKE actions to be associated with this rule." + ::= { ipSecIkeRuleEntry 4 } + + ipSecIkeRuleActionExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { + doAll(1), + doUntilSuccess(2) + } + STATUS current + DESCRIPTION + "Specifies the strategy to be used in executing the sequenced + actions in the action set identified by ipSecRuleIpSecActionSetId. + + DoAll (1) causes the execution of all the actions in the action + set according to their defined precedence order. The precedence + order is specified by the ipSecActionSetOrder in + ipSecIkeActionSetTable. + + DoUntilSuccess (2) causes the execution of actions according to + their defined precedence order until a successful execution of a + single action. The precedence order is specified by the + ipSecActionSetOrder in ipSecIkeActionSetTable." + ::= { ipSecIkeRuleEntry 5 } + + ipSecIkeRuleLimitNegotiation OBJECT-TYPE + SYNTAX INTEGER { + initiator(1), + responder(2), + both(3) + } + STATUS current + DESCRIPTION + "Limits the negotiation method. Before proceeding with a phase 1 + negotiation, this property is checked to determine if the + negotiation role of the rule matches that defined for the + negotiation being undertaken (e.g., Initiator, Responder, or + Both). If this check fails (e.g. the current role is IKE responder + while the rule specifies IKE initiator), then the IKE negotiation + is stopped. Note that this only applies to new IKE phase 1 + negotiations and has no effect on either renegotiation or refresh + operations with peers for which an established SA already exists." + ::= { ipSecIkeRuleEntry 6 } + + ipSecIkeRuleAutoStart OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates if this rule should be automatically executed." + ::= { ipSecIkeRuleEntry 7 } + + ipSecIkeRuleIpSecRuleTimePeriodGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecRuleTimePeriodSetRuleTimePeriodSetId } + STATUS current + DESCRIPTION + "Identifies a rule time period set, specified in + ipSecRuleTimePeriodSetTable, that is associated with this rule. + + A value of zero indicates that this rule is always valid." + ::= { ipSecIkeRuleEntry 8 } + + + -- + -- + -- The ipSecIkeActionSetTable + -- + + ipSecIkeActionSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeActionSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE action sets." + ::= { ipSecIkeAssociation 2 } + + ipSecIkeActionSetEntry OBJECT-TYPE + SYNTAX IpSecIkeActionSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeActionSetPrid } + UNIQUENESS { + ipSecIkeActionSetActionSetId, + ipSecIkeActionSetActionId, + ipSecIkeActionSetOrder + } + ::= { ipSecIkeActionSetTable 1 } + + IpSecIkeActionSetEntry ::= SEQUENCE { + ipSecIkeActionSetPrid InstanceId, + ipSecIkeActionSetActionSetId TagId, + ipSecIkeActionSetActionId Prid, + ipSecIkeActionSetOrder Unsigned16 + } + + ipSecIkeActionSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeActionSetEntry 1 } + + ipSecIkeActionSetActionSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IKE action set is composed of one or more IKE actions. Each + action belonging to the same set has the same ActionSetId." + ::= { ipSecIkeActionSetEntry 2 } + + ipSecIkeActionSetActionId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIkeAssociationTable." + ::= { ipSecIkeActionSetEntry 3 } + + ipSecIkeActionSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the action within the action + set. An action with a smaller precedence order is to be tried + before one with a larger precedence order. " + ::= { ipSecIkeActionSetEntry 4 } + + + -- + -- + -- The ipSecIkeAssociationTable + -- + + ipSecIkeAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeAssociationEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE associations." + ::= { ipSecIkeAssociation 3 } + + ipSecIkeAssociationEntry OBJECT-TYPE + SYNTAX IpSecIkeAssociationEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeAssociationPrid } + UNIQUENESS { + ipSecIkeAssociationMinLiftetimeSeconds, + ipSecIkeAssociationMinLifetimeKilobytes, + ipSecIkeAssociationIdleDurationSeconds, + ipSecIkeAssociationExchangeMode, + ipSecIkeAssociationUseIkeIdentityType, + ipSecIkeAssociationUseIkeIdentityValue, + ipSecIkeAssociationIkePeerEndpoint, + ipSecIkeAssociationPresharedKey, + ipSecIkeAssociationVendorId, + ipSecIkeAssociationAggressiveModeGroupId, + ipSecIkeAssociationLocalCredentialId, + ipSecIkeAssociationDoActionLogging, + ipSecIkeAssociationIkeProposalSetId + } + ::= { ipSecIkeAssociationTable 1 } + + IpSecIkeAssociationEntry ::= SEQUENCE { + ipSecIkeAssociationPrid InstanceId, + ipSecIkeAssociationMinLiftetimeSeconds Unsigned32, + ipSecIkeAssociationMinLifetimeKilobytes Unsigned32, + ipSecIkeAssociationIdleDurationSeconds Unsigned32, + ipSecIkeAssociationExchangeMode INTEGER, + ipSecIkeAssociationUseIkeIdentityType INTEGER, + ipSecIkeAssociationUseIkeIdentityValue OCTET STRING, + ipSecIkeAssociationIkePeerEndpoint ReferenceId, + ipSecIkeAssociationPresharedKey OCTET STRING, + ipSecIkeAssociationVendorId OCTET STRING, + ipSecIkeAssociationAggressiveModeGroupId Unsigned16, + ipSecIkeAssociationLocalCredentialId TagReferenceId, + ipSecIkeAssociationDoActionLogging TruthValue, + ipSecIkeAssociationIkeProposalSetId TagReferenceId + } + + ipSecIkeAssociationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeAssociationEntry 1 } + + ipSecIkeAssociationMinLiftetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum SA seconds lifetime that will be accepted + from a peer while negotiating an SA based upon this action. + + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecIkeAssociationEntry 2 } + + ipSecIkeAssociationMinLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum kilobyte lifetime that will be accepted + from a negotiating peer while negotiating an SA based upon this + action. + + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecIkeAssociationEntry 3 } + + ipSecIkeAssociationIdleDurationSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies how long, in seconds, a security association may remain + unused before it is deleted. + + A value of zero indicates that idle detection should not be used + for the security association (only the seconds and kilobyte + lifetimes will be used)." + ::= { ipSecIkeAssociationEntry 4 } + + ipSecIkeAssociationExchangeMode OBJECT-TYPE + SYNTAX INTEGER { + baseMode(1), + mainMode(2), + aggressiveMode(4) + } + STATUS current + DESCRIPTION + "Specifies the negotiation mode that the IKE server will use for + phase one." + ::= { ipSecIkeAssociationEntry 5 } + + ipSecIkeAssociationUseIkeIdentityType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the type of IKE identity to use during IKE phase one + negotiation." + ::= { ipSecIkeAssociationEntry 6 } + + ipSecIkeAssociationUseIkeIdentityValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the ID payload value to be provided to the peer during + IKE phase one negotiation." + ::= { ipSecIkeAssociationEntry 7 } + + ipSecIkeAssociationIkePeerEndpoint OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIkePeerEndpointEntry } + STATUS current + DESCRIPTION + "Pointer to a valid instance in the ipSecIkePeerEndpointTable to + indicate an IKE peer endpoint." + ::= { ipSecIkeAssociationEntry 8 } + + ipSecIkeAssociationPresharedKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This attribute specifies the preshared key or secret to use for + IKE authentication. This is the key for all the IKE proposals of + this association that set ipSecIkeProposalAuthenticationMethod to + presharedKey(1)." + ::= { ipSecIkeAssociationEntry 9 } + + ipSecIkeAssociationVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to be used in the Vendor ID payload. + + A value of NULL means that Vendor ID payload will be neither + generated nor accepted. A non-NULL value means that a Vendor ID + payload will be generated (when acting as an initiator) or is + expected (when acting as a responder). " + ::= { ipSecIkeAssociationEntry 10 } + + ipSecIkeAssociationAggressiveModeGroupId OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the group ID to be used for aggressive mode. This + attribute is ignored unless the attribute + ipSecIkeAssociationExchangeMode is set to 4 (aggressive mode). If + the value of this attribute is from the vendor-specific range + (32768-65535), this attribute qualifies the group number." + ::= { ipSecIkeAssociationEntry 11 } + + ipSecIkeAssociationLocalCredentialId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialSetSetId } + STATUS current + DESCRIPTION + "Indicates a group of credentials. One of the credentials in the + group MUST be used when establishing an IKE association with the + peer endpoint." + ::= { ipSecIkeAssociationEntry 12 } + + ipSecIkeAssociationDoActionLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether a log message is to be generated when the + negotiation is attempted (with the success or failure result)." + ::= { ipSecIkeAssociationEntry 13 } + + ipSecIkeAssociationIkeProposalSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIkeProposalSetProposalSetId } + STATUS current + DESCRIPTION + "Identifies a set of IKE proposals that is associated with this + IKE association." + ::= { ipSecIkeAssociationEntry 14 } + + + -- + -- + -- The ipSecIkeProposalSetTable + -- + + ipSecIkeProposalSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeProposalSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE proposal sets. Proposals within a set are ORed with + preference order. " + ::= { ipSecIkeAssociation 4 } + + ipSecIkeProposalSetEntry OBJECT-TYPE + SYNTAX IpSecIkeProposalSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeProposalSetPrid } + UNIQUENESS { + ipSecIkeProposalSetProposalSetId, + ipSecIkeProposalSetProposalId, + ipSecIkeProposalSetOrder + } + ::= { ipSecIkeProposalSetTable 1 } + + IpSecIkeProposalSetEntry ::= SEQUENCE { + ipSecIkeProposalSetPrid InstanceId, + ipSecIkeProposalSetProposalSetId TagId, + ipSecIkeProposalSetProposalId ReferenceId, + ipSecIkeProposalSetOrder Unsigned16 + } + + ipSecIkeProposalSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeProposalSetEntry 1 } + + ipSecIkeProposalSetProposalSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IKE proposal set is composed of one or more IKE proposals. + Each proposal belonging to the same set has the same + ProposalSetId. " + ::= { ipSecIkeProposalSetEntry 2 } + + ipSecIkeProposalSetProposalId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIkeProposalEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIkeProposalTable." + ::= { ipSecIkeProposalSetEntry 3 } + + ipSecIkeProposalSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the proposal + identified by ipSecIkeProposalSetProposalId in a proposal set. The + proposal set is identified by ipSecIkeProposalSetProposalSetId. + Proposals within a set are ORed with preference order. A smaller + integer value indicates a higher preference." + ::= { ipSecIkeProposalSetEntry 4 } + + + -- + -- + -- The ipSecIkeProposalTable + -- + + ipSecIkeProposalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeProposalEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE proposals." + ::= { ipSecIkeAssociation 5 } + + ipSecIkeProposalEntry OBJECT-TYPE + SYNTAX IpSecIkeProposalEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeProposalPrid } + UNIQUENESS { + ipSecIkeProposalMaxLifetimeSeconds, + ipSecIkeProposalMaxLifetimeKilobytes, + ipSecIkeProposalCipherAlgorithm, + ipSecIkeProposalHashAlgorithm, + ipSecIkeProposalAuthenticationMethod, + ipSecIkeProposalPrfAlgorithm, + ipSecIkeProposalIkeDhGroup, + ipSecIkeProposalVendorId + } + ::= { ipSecIkeProposalTable 1 } + + IpSecIkeProposalEntry ::= SEQUENCE { + ipSecIkeProposalPrid InstanceId, + ipSecIkeProposalMaxLifetimeSeconds Unsigned32, + ipSecIkeProposalMaxLifetimeKilobytes Unsigned32, + ipSecIkeProposalCipherAlgorithm INTEGER, + ipSecIkeProposalHashAlgorithm INTEGER, + ipSecIkeProposalAuthenticationMethod INTEGER, + ipSecIkeProposalPrfAlgorithm Unsigned16, + ipSecIkeProposalIkeDhGroup Unsigned16, + ipSecIkeProposalVendorId OCTET STRING + } + + ipSecIkeProposalPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeProposalEntry 1 } + + ipSecIkeProposalMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecIkeProposalEntry 2 } + + ipSecIkeProposalMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecIkeProposalEntry 3 } + + ipSecIkeProposalCipherAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + des-CBC(1), + idea-CBC(2), + blowfish-CBC(3), + rc5-R16-B64-CBC(4), + tripleDes-CBC(5), + cast-CBC(6) + } + STATUS current + DESCRIPTION + "Specifies the encryption algorithm to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 4 } + + ipSecIkeProposalHashAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + md5(1), + sha-1(2), + tiger(3) + } + STATUS current + DESCRIPTION + "Specifies the hash algorithm to propose for the IKE association." + ::= { ipSecIkeProposalEntry 5 } + + ipSecIkeProposalAuthenticationMethod OBJECT-TYPE + SYNTAX INTEGER { + presharedKey(1), + dssSignatures(2), + rsaSignatures(3), + rsaEncryption(4), + revisedRsaEncryption(5), + kerberos(6) + } + STATUS current + DESCRIPTION + "Specifies the authentication method to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 6 } + + ipSecIkeProposalPrfAlgorithm OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the Psuedo-Random Function (PRF) to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 7 } + + ipSecIkeProposalIkeDhGroup OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the Diffie-Hellman group to propose for the IKE + association. The value of this property is to be ignored when + doing aggressive mode." + ::= { ipSecIkeProposalEntry 8 } + + ipSecIkeProposalVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Further qualifies the key exchange group. The property is + ignored unless the exchange is not in aggressive mode and the + property GroupID is in the vendor-specific range." + ::= { ipSecIkeProposalEntry 9 } + + + -- + -- + -- The ipSecIkePeerEndpointTable + -- + + ipSecIkePeerEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkePeerEndpointEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE peer endpoints." + ::= { ipSecIkeAssociation 6 } + + ipSecIkePeerEndpointEntry OBJECT-TYPE + SYNTAX IpSecIkePeerEndpointEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkePeerEndpointPrid } + UNIQUENESS { + ipSecIkePeerEndpointIdentityType, + ipSecIkePeerEndpointIdentityValue, + ipSecIkePeerEndpointAddressType, + ipSecIkePeerEndpointAddress, + ipSecIkePeerEndpointCredentialSetId + } + ::= { ipSecIkePeerEndpointTable 1 } + + IpSecIkePeerEndpointEntry ::= SEQUENCE { + ipSecIkePeerEndpointPrid InstanceId, + ipSecIkePeerEndpointIdentityType INTEGER, + ipSecIkePeerEndpointIdentityValue OCTET STRING, + ipSecIkePeerEndpointAddressType INTEGER, + ipSecIkePeerEndpointAddress OCTET STRING, + ipSecIkePeerEndpointCredentialSetId TagReferenceId + } + + ipSecIkePeerEndpointPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkePeerEndpointEntry 1 } + + ipSecIkePeerEndpointIdentityType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the type of identity that MUST be provided by the peer + in the ID payload during IKE phase one negotiation." + ::= { ipSecIkePeerEndpointEntry 2 } + + ipSecIkePeerEndpointIdentityValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to be matched with the ID payload provided by + the peer during IKE phase one negotiation. + + Different Wildcards wildcard mechanisms can be used as well as the + prefix notation for IPv4 addresses depending on the ID payload: + + - an IdentityValue of '*@company.com' will match an user FQDN ID + payload of 'JDOE@COMPANY.COM' + + - an IdentityValue of '*.company.com' will match a FQDN ID payload + of 'WWW.COMPANY.COM' + + - an IdentityValue of 'cn=*,ou=engineering,o=company,c=us' will + match a DER DN ID payload of 'cn=John Doe, ou=engineering, + o=company, c=us' + + - an IdentityValue of '193.190.125.0/24' will match an IPv4 + address ID payload of 193.190.125.10. + + - an IdentityValue of '193.190.125.*' will also match an IPv4 + address ID payload of 193.190.125.10. + + The above wildcard mechanisms MUST be supported for all ID + payloads supported by the local IKE entity. The character '*' + replaces 0 or multiple instances of any character." + ::= { ipSecIkePeerEndpointEntry 3 } + + ipSecIkePeerEndpointAddressType OBJECT-TYPE + SYNTAX INTEGER { + ipV4(1), + ipV6(2) + } + STATUS current + DESCRIPTION + "Specifies IKE peer endpoint address type. This attribute MUST be + ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkePeerEndpointEntry 4 } + + ipSecIkePeerEndpointAddress OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies an endpoint address with which this PEP establishes IKE + association. This attribute is used only when the IKE association + is to be started automatically. Hence, this attribute MUST be + ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkePeerEndpointEntry 5 } + + ipSecIkePeerEndpointCredentialSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialSetSetId } + STATUS current + DESCRIPTION + "Identifies a set of credentials. Any one of the credentials in + the set is acceptable as the IKE peer credential." + ::= { ipSecIkePeerEndpointEntry 6 } + + + -- + -- + -- The ipSecCredentialSetTable + -- + + ipSecCredentialSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies credential sets. + + For IKE peer credentials, any one of the credentials in the set is + acceptable as peer credential during IEK phase 1 negotiation. For + IKE local credentials, any one of the credentials in the set can + be used in IKE phase 1 negotiation." + ::= { ipSecCredential 1 } + + ipSecCredentialSetEntry OBJECT-TYPE + SYNTAX IpSecCredentialSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialSetPrid } + UNIQUENESS { + ipSecCredentialSetPrid, + ipSecCredentialSetSetId, + ipSecCredentialSetCredentialId + } + ::= { ipSecCredentialSetTable 1 } + + IpSecCredentialSetEntry ::= SEQUENCE { + ipSecCredentialSetPrid InstanceId, + ipSecCredentialSetSetId TagId, + ipSecCredentialSetCredentialId ReferenceId + } + + ipSecCredentialSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialSetEntry 1 } + + ipSecCredentialSetSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "A credential set is composed of one or more credentials. Each + credential belonging to the same set has the same + CredentialSetId." + ::= { ipSecCredentialSetEntry 2 } + + ipSecCredentialSetCredentialId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecCredentialEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecCredentialTable." + ::= { ipSecCredentialSetEntry 3 } + + + -- + -- + -- The ipSecCredentialTable + -- + + ipSecCredentialTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies credentials." + ::= { ipSecCredential 2 } + + ipSecCredentialEntry OBJECT-TYPE + SYNTAX IpSecCredentialEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialPrid } + UNIQUENESS { + ipSecCredentialCredentialType, + ipSecCredentialFieldsId, + ipSecCredentialCrlDistributionPoint + } + ::= { ipSecCredentialTable 1 } + + IpSecCredentialEntry ::= SEQUENCE { + ipSecCredentialPrid InstanceId, + ipSecCredentialCredentialType INTEGER, + ipSecCredentialFieldsId TagReferenceId, + ipSecCredentialCrlDistributionPoint OCTET STRING + } + + ipSecCredentialPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialEntry 1 } + + ipSecCredentialCredentialType OBJECT-TYPE + SYNTAX INTEGER { + certificateX509(1), + kerberos-ticket(2) + } + STATUS current + DESCRIPTION + "Specifies the type of credential to be matched." + ::= { ipSecCredentialEntry 2 } + + ipSecCredentialFieldsId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialFieldsSetId } + STATUS current + DESCRIPTION + "Identifies a group of matching criteria to be used for the peer + credential. The identified criteria MUST all be satisfied." + ::= { ipSecCredentialEntry 3 } + + ipSecCredentialCrlDistributionPoint OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When credential type is certificate X509, this attribute + identifies the Certificate Revocation List (CRL) distribution + point for this credential." + ::= { ipSecCredentialEntry 4 } + + + -- + -- + -- The ipSecCredentialFieldsTable + -- + + ipSecCredentialFieldsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialFieldsEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies sets of credential sub-fields and their values to be + matched against. " + ::= { ipSecCredential 3 } + + ipSecCredentialFieldsEntry OBJECT-TYPE + SYNTAX IpSecCredentialFieldsEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialFieldsPrid } + UNIQUENESS { + ipSecCredentialFieldsName, + ipSecCredentialFieldsValue, + ipSecCredentialFieldsSetId + } + ::= { ipSecCredentialFieldsTable 1 } + + IpSecCredentialFieldsEntry ::= SEQUENCE { + ipSecCredentialFieldsPrid InstanceId, + ipSecCredentialFieldsName OCTET STRING, + ipSecCredentialFieldsValue OCTET STRING, + ipSecCredentialFieldsSetId TagId + } + + ipSecCredentialFieldsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialFieldsEntry 1 } + + ipSecCredentialFieldsName OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the sub-field of the credential to match with. This is + the string representation of a X.509 certificate attribute, e.g.: + 'serialNumber', 'issuerName', 'subjectName', etc.." + ::= { ipSecCredentialFieldsEntry 2 } + + ipSecCredentialFieldsValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to match with for the sub-field identified by + ipSecCredentialFieldsName. A wildcard mechanism can be used in the + Value string. E.g., if the Name is 'subjectName' then a Value of + 'cn=*,ou=engineering,o=foo,c=be' will match successfully a + certificate whose subject attribute is 'cn=Jane Doe, + ou=engineering, o=foo, c=be'. The wildcard character '*' can be + used to represent 0 or several characters." + ::= { ipSecCredentialFieldsEntry 3 } + + ipSecCredentialFieldsSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the set this criteria belongs to. All criteria within a + set MUST all be satisfied." + ::= { ipSecCredentialFieldsEntry 4 } + + + -- + -- + -- The ipSecSelectorSetTable + -- + + ipSecSelectorSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecSelectorSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec selector sets." + ::= { ipSecSelector 1 } + + ipSecSelectorSetEntry OBJECT-TYPE + SYNTAX IpSecSelectorSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecSelectorSetPrid } + UNIQUENESS { + ipSecSelectorSetSelectorSetId, + ipSecSelectorSetSelectorId, + ipSecSelectorSetOrder + } + ::= { ipSecSelectorSetTable 1 } + + IpSecSelectorSetEntry ::= SEQUENCE { + ipSecSelectorSetPrid InstanceId, + ipSecSelectorSetSelectorSetId TagId, + ipSecSelectorSetSelectorId Prid, + ipSecSelectorSetOrder Unsigned16 + } + + ipSecSelectorSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecSelectorSetEntry 1 } + + ipSecSelectorSetSelectorSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPsec selector set is composed of one or more IPsec selectors. + Each selector belonging to the same set has the same + SelectorSetId." + ::= { ipSecSelectorSetEntry 2 } + + ipSecSelectorSetSelectorId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes + selectors. To use selectors defined in this IPsec PIB module, this + attribute MUST point to an instance in ipSecSelectorTable. This + attribute may also point to an instance in a selector or filter + table defined in other PIB modules." + ::= { ipSecSelectorSetEntry 3 } + + ipSecSelectorSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the selectors + identified by ipSecSelectorId within a selector set. The selector + set is identified by ipSecSelectorSetId. A smaller integer value + indicates a higher preference. All selectors constructed from the + instance pointed by ipSecSelectorId have the same order." + ::= { ipSecSelectorSetEntry 4 } + + + -- + -- + -- The ipSecSelectorTable + -- + + ipSecSelectorTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecSelectorEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec selectors. Each row in the selector table + represents multiple selectors. These selectors are obtained as + follows: + + 1. Substitute the ipSecSelectorSrcAddressGroupId with all the IP + addresses from the ipSecAddressTable whose ipSecAddressGroupId + matches the ipSecSelectorSrcAddressGroupId. + + 2. Substitute the ipSecSelectorDstAddressGroupId with all the IP + addresses from the ipSecAddressTable whose ipSecAddressGroupId + matches the ipSecSelectorDstAddressGroupId. + + 3. Substitute the ipSecSelectorSrcPortGroupId with all the ports + or ranges of port whose ipSecL4PortGroupId matches the + ipSecSelectorSrcPortGroupId. + + 4. Substitute the ipSecSelectorDstPortGroupId with all the ports + or ranges of port whose ipSecL4PortGroupId matches the + ipSecSelectorDstPortGroupId. + + 5. Construct all the possible combinations of the above four + fields. Then add to the combinations the ipSecSelectorProtocol, + ipSecSelectorDscp and ipSecSelectorFlowLabel attributes to form + all the selectors.el attributes to form the list of selectors. + + The relative order of the selectors constructed from a single row + is unspecified. " + ::= { ipSecSelector 2 } + + ipSecSelectorEntry OBJECT-TYPE + SYNTAX IpSecSelectorEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecSelectorPrid } + UNIQUENESS { + ipSecSelectorSrcAddressGroupId, + ipSecSelectorSrcPortGroupId, + ipSecSelectorDstAddressGroupId, + ipSecSelectorDstPortGroupId, + ipSecSelectorProtocol, + ipSecSelectorDscp, + ipSecSelectorFlowLabel + } + ::= { ipSecSelectorTable 1 } + + IpSecSelectorEntry ::= SEQUENCE { + ipSecSelectorPrid InstanceId, + ipSecSelectorSrcAddressGroupId TagReferenceId, + ipSecSelectorSrcPortGroupId TagReferenceId, + ipSecSelectorDstAddressGroupId TagReferenceId, + ipSecSelectorDstPortGroupId TagReferenceId, + ipSecSelectorProtocol INTEGER, + ipSecSelectorDscp INTEGER, + ipSecSelectorFlowLabel OCTET STRING + } + + ipSecSelectorPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecSelectorEntry 1 } + + ipSecSelectorSrcAddressGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAddressGroupId } + STATUS current + DESCRIPTION + "Indicates source addresses. All addresses in ipSecAddressTable + whose ipSecAddressGroupId matches this value are included as + source addresses. + + A value of zero indicates wildcard address, i.e., any address + matches." + ::= { ipSecSelectorEntry 2 } + + ipSecSelectorSrcPortGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecL4PortGroupId } + STATUS current + DESCRIPTION + "Indicates source layer 4 port numbers. All ports in ipSecL4Port + whose ipSecL4PortGroupId matches this value are included. + + + A value of zero indicates wildcard port, i.e., any port number + matches." + ::= { ipSecSelectorEntry 3 } + + ipSecSelectorDstAddressGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAddressGroupId } + STATUS current + DESCRIPTION + "Indicates destination addresses. All addresses in + ipSecAddressTable whose ipSecAddressGroupId matches this value are + included as destination addresses. + + A value of zero indicates wildcard address, i.e., any address + matches." + ::= { ipSecSelectorEntry 4 } + + ipSecSelectorDstPortGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecL4PortGroupId } + STATUS current + DESCRIPTION + "Indicates destination layer 4 port numbers. All ports in + ipSecL4Port whose ipSecL4PortGroupId matches this value are + included. + + A value of zero indicates wildcard port, i.e., any port number + matches." + ::= { ipSecSelectorEntry 5 } + + ipSecSelectorProtocol OBJECT-TYPE + SYNTAX INTEGER (0..255) + STATUS current + DESCRIPTION + "Specifies IP protocol to match against a packet's protocol. A + value of zero indicates wildcard protocol, i.e., any protocol + matches." + ::= { ipSecSelectorEntry 6 } + + ipSecSelectorDscp OBJECT-TYPE + SYNTAX INTEGER (-1..63) + STATUS current + DESCRIPTION + "Specifies the DSCP value to match against the DSCP in a packet + header. A value of -1 indicates match all." + ::= { ipSecSelectorEntry 7 } + + ipSecSelectorFlowLabel OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + + + "Specifies the Flow Label to match against the Flow Label field in + the IPv6 header of a packet. This attribute MUST be a zero length + OCTET STRING when specifying selectors for IPv4 packets." + ::= { ipSecSelectorEntry 8 } + + + -- + -- + -- The ipSecAddressTable + -- + + ipSecAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAddressEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IP addresses. To specify a single IP address, + ipSecAddressAddrMin MUST be specified. To specify a range of + addresses, both ipSecAddressAddrMin and ipSecAddressAddrMax MUST + be specified. To specify a subnet, both ipSecAddressAddrMin and + ipSecAddressAddrMask MUST be specified. " + ::= { ipSecSelector 3 } + + ipSecAddressEntry OBJECT-TYPE + SYNTAX IpSecAddressEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAddressPrid } + UNIQUENESS { + ipSecAddressAddressType, + ipSecAddressAddrMask, + ipSecAddressAddrMin, + ipSecAddressAddrMax, + ipSecAddressGroupId + } + ::= { ipSecAddressTable 1 } + + IpSecAddressEntry ::= SEQUENCE { + ipSecAddressPrid InstanceId, + ipSecAddressAddressType INTEGER, + ipSecAddressAddrMask OCTET STRING, + ipSecAddressAddrMin OCTET STRING, + ipSecAddressAddrMax OCTET STRING, + ipSecAddressGroupId TagId + } + + ipSecAddressPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecAddressEntry 1 } + + ipSecAddressAddressType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the address type. " + ::= { ipSecAddressEntry 2 } + + ipSecAddressAddrMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A mask for the matching of the IP address. A zero bit in the mask + means that the corresponding bit in the address always matches. + + This attribute MUST be ignored when ipSecAddressAddressType is not + of IPv4 or IPv6 type." + ::= { ipSecAddressEntry 3 } + + ipSecAddressAddrMin OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies an IP address. " + ::= { ipSecAddressEntry 4 } + + ipSecAddressAddrMax OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "If a range of addresses is used then this specifies the ending + address. The type of this address must be the same as the + ipSecAddressAddrMin. + + If no range is specified then this attribute MUST be a zero length + OCTET STRING." + ::= { ipSecAddressEntry 5 } + + ipSecAddressGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the group this IP address, address range or subnet + address belongs to." + ::= { ipSecAddressEntry 6 } + + + -- + -- + -- The ipSecL4PortTable + -- + + ipSecL4PortTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecL4PortEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies layer four port numbers." + ::= { ipSecSelector 4 } + + ipSecL4PortEntry OBJECT-TYPE + SYNTAX IpSecL4PortEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecL4PortPrid } + UNIQUENESS { + ipSecL4PortPortMin, + ipSecL4PortPortMax, + ipSecL4PortGroupId + } + ::= { ipSecL4PortTable 1 } + + IpSecL4PortEntry ::= SEQUENCE { + ipSecL4PortPrid InstanceId, + ipSecL4PortPortMin Unsigned16, + ipSecL4PortPortMax Unsigned16, + ipSecL4PortGroupId TagId + } + + ipSecL4PortPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecL4PortEntry 1 } + + ipSecL4PortPortMin OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + + "Specifies a layer 4 port or the first layer 4 port number of a + range of ports. The value of this attribute must be equal or less + than that of ipSecL4PortPortMax. + + A value of zero indicates any port matches." + ::= { ipSecL4PortEntry 2 } + + ipSecL4PortPortMax OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the last layer 4 port in the range. If only a single + port is specified, the value of this attribute must be equal to + that of ipSecL4PortPortMin. Otherwise, the value of this attribute + MUST be greater than that specified by ipSecL4PortPortMin. + + If ipSecL4PortPortMin is zero, this attribute MUST be ignored." + ::= { ipSecL4PortEntry 3 } + + ipSecL4PortGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the group this port or port range belongs to." + ::= { ipSecL4PortEntry 4 } + + + -- + -- + -- The ipSecIpsoFilterSetTable + -- + + ipSecIpsoFilterSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIpsoFilterSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPSO filter sets." + ::= { ipSecSelector 5 } + + ipSecIpsoFilterSetEntry OBJECT-TYPE + SYNTAX IpSecIpsoFilterSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIpsoFilterSetPrid } + UNIQUENESS { + ipSecIpsoFilterSetFilterSetId, + ipSecIpsoFilterSetFilterId, + ipSecIpsoFilterSetOrder + } + ::= { ipSecIpsoFilterSetTable 1 } + + IpSecIpsoFilterSetEntry ::= SEQUENCE { + ipSecIpsoFilterSetPrid InstanceId, + ipSecIpsoFilterSetFilterSetId TagId, + ipSecIpsoFilterSetFilterId ReferenceId, + ipSecIpsoFilterSetOrder Unsigned16 + } + + ipSecIpsoFilterSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIpsoFilterSetEntry 1 } + + ipSecIpsoFilterSetFilterSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPSO filter set is composed of one or more IPSO filters. Each + filter belonging to the same set has the same FilterSetId." + ::= { ipSecIpsoFilterSetEntry 2 } + + ipSecIpsoFilterSetFilterId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIpsoFilterEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIpsoFilterTable." + ::= { ipSecIpsoFilterSetEntry 3 } + + ipSecIpsoFilterSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the filter + identified by ipSecIpsoFilterSetFilterId within a filter set. The + filter set is identified by ipSecIpsoFilterSetFilterSetId. A + smaller integer value indicates a higher preference." + ::= { ipSecIpsoFilterSetEntry 4 } + + + -- + -- + -- The ipSecIpsoFilterTable + -- + + ipSecIpsoFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIpsoFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPSO filters." + ::= { ipSecSelector 6 } + + ipSecIpsoFilterEntry OBJECT-TYPE + SYNTAX IpSecIpsoFilterEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIpsoFilterPrid } + UNIQUENESS { + ipSecIpsoFilterMatchConditionType, + ipSecIpsoFilterClassificationLevel, + ipSecIpsoFilterProtectionAuthority + } + ::= { ipSecIpsoFilterTable 1 } + + IpSecIpsoFilterEntry ::= SEQUENCE { + ipSecIpsoFilterPrid InstanceId, + ipSecIpsoFilterMatchConditionType INTEGER, + ipSecIpsoFilterClassificationLevel INTEGER, + ipSecIpsoFilterProtectionAuthority INTEGER + } + + ipSecIpsoFilterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIpsoFilterEntry 1 } + + ipSecIpsoFilterMatchConditionType OBJECT-TYPE + SYNTAX INTEGER { + classificationLevel(1), + protectionAuthority(2) + } + STATUS current + DESCRIPTION + "Specifies the IPSO header field to be matched." + ::= { ipSecIpsoFilterEntry 2 } + + ipSecIpsoFilterClassificationLevel OBJECT-TYPE + SYNTAX INTEGER { + topSecret(61), + secret(90), + confidential(150), + unclassified(171) + } + STATUS current + DESCRIPTION + "Specifies the value for classification level to be matched + against. This attribute MUST be ignored if + ipSecIpsoFilterMatchConditionType is not 1 (classificationLevel)." + ::= { ipSecIpsoFilterEntry 3 } + + ipSecIpsoFilterProtectionAuthority OBJECT-TYPE + SYNTAX INTEGER { + genser(0), + siop-esi(1), + sci(2), + nsa(3), + doe(4) + } + STATUS current + DESCRIPTION + "Specifies the value for protection authority to be matched + against. This attribute MUST be ignored if + ipSecIpsoFilterMatchConditionType is not 2 (protectionAuthority). + " + ::= { ipSecIpsoFilterEntry 4 } + + + -- + -- + -- The ipSecRuleTimePeriodTable + -- + + ipSecRuleTimePeriodTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleTimePeriodEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies the time periods during which a policy rule is valid. + The values of the first five attributes in a row are ANDed + together to determine the validity period(s). If any of the five + attributes is not present, it is treated as having value always + enabled. " + ::= { ipSecPolicyTimePeriod 1 } + + ipSecRuleTimePeriodEntry OBJECT-TYPE + SYNTAX IpSecRuleTimePeriodEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRuleTimePeriodPrid } + UNIQUENESS { + ipSecRuleTimePeriodTimePeriod, + ipSecRuleTimePeriodMonthOfYearMask, + ipSecRuleTimePeriodDayOfMonthMask, + ipSecRuleTimePeriodDayOfWeekMask, + ipSecRuleTimePeriodTimeOfDayMask, + ipSecRuleTimePeriodLocalOrUtcTime + } + ::= { ipSecRuleTimePeriodTable 1 } + + IpSecRuleTimePeriodEntry ::= SEQUENCE { + ipSecRuleTimePeriodPrid InstanceId, + ipSecRuleTimePeriodTimePeriod OCTET STRING, + ipSecRuleTimePeriodMonthOfYearMask OCTET STRING, + ipSecRuleTimePeriodDayOfMonthMask OCTET STRING, + ipSecRuleTimePeriodDayOfWeekMask OCTET STRING, + ipSecRuleTimePeriodTimeOfDayMask OCTET STRING, + ipSecRuleTimePeriodLocalOrUtcTime INTEGER + } + + ipSecRuleTimePeriodPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify an instance of this class" + ::= { ipSecRuleTimePeriodEntry 1 } + + ipSecRuleTimePeriodTimePeriod OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that identifies an overall range of calendar + dates and times over which a policy rule is valid. It reuses the + format for an explicit time period defined in RFC 2445 : a string + representing a starting date and time, in which the character 'T' + indicates the beginning of the time portion, followed by the + solidus character '/', followed by a similar string representing + an end date and time. The first date indicates the beginning of + the range, while the second date indicates the end. Thus, the + second date and time must be later than the first. Date/times are + expressed as substrings of the form yyyymmddThhmmss. + + There are also two special cases: + + - If the first date/time is replaced with the string + THISANDPRIOR, then the property indicates that a policy rule is + valid [from now] until the date/time that appears after the '/'. + + - If the second date/time is replaced with the string + THISANDFUTURE, then the property indicates that a policy rule + becomes valid on the date/time that appears before the '/', and + remains valid from that point on. + " + ::= { ipSecRuleTimePeriodEntry 2 } + + ipSecRuleTimePeriodMonthOfYearMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which months the policy is valid + for. The octet string is structured as follows: + + - a 4-octet length field, indicating the length of the entire + octet string; this field is always set to 0x00000006 for this + property; + + - a 2-octet field consisting of 12 bits identifying the 12 months + of the year, beginning with January and ending with December, + followed by 4 bits that are always set to '0'. For each month, + the value '1' indicates that the policy is valid for that month, + and the value '0' indicates that it is not valid. + + If this property is omitted, then the policy rule is treated as + valid for all twelve months." + ::= { ipSecRuleTimePeriodEntry 3 } + + ipSecRuleTimePeriodDayOfMonthMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which days of the month the policy + is valid for. The octet string is structured as follows: + + -a 4-octet length field, indicating the length of the entire octet + string; this field is always set to 0x0000000C for this property; + + -an 8-octet field consisting of 31 bits identifying the days of + the month counting from the beginning, followed by 31 more bits + identifying the days of the month counting from the end, followed + by 2 bits that are always set to '0'. For each day, the value '1' + indicates that the policy is valid for that day, and the value '0' + indicates that it is not valid. + + For months with fewer than 31 days, the digits corresponding to + days that the months do not have (counting in both directions) are + ignored. + " + ::= { ipSecRuleTimePeriodEntry 4 } + + ipSecRuleTimePeriodDayOfWeekMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which days of the week the policy + is valid for. The octet string is structured as follows: + + - a 4-octet length field, indicating the length of the entire + octet string; this field is always set to 0x00000005 for this + property; + + - a 1-octet field consisting of 7 bits identifying the 7 days of + the week, beginning with Sunday and ending with Saturday, followed + by 1 bit that is always set to '0'. For each day of the week, the + value '1' indicates that the policy is valid for that day, and the + value '0' indicates that it is not valid. + " + ::= { ipSecRuleTimePeriodEntry 5 } + + ipSecRuleTimePeriodTimeOfDayMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies a range of times in a day the + policy is valid for. It is formatted as follows: + + A time string beginning with the character 'T', followed by the + solidus character '/', followed by a second time string. The + first time indicates the beginning of the range, while the second + time indicates the end. Times are expressed as substrings of the + form Thhmmss. + + The second substring always identifies a later time than the first + substring. To allow for ranges that span midnight, however, the + value of the second string may be smaller than the value of the + first substring. Thus, T080000/T210000 identifies the range from + 0800 until 2100, while T210000/T080000 identifies the range from + 2100 until 0800 of the following day." + ::= { ipSecRuleTimePeriodEntry 6 } + + ipSecRuleTimePeriodLocalOrUtcTime OBJECT-TYPE + SYNTAX INTEGER { + localTime(1), + utcTime(2) + } + STATUS current + DESCRIPTION + "This property indicates whether the times represented in this + table represent local times or UTC times. There is no provision + for mixing of local times and UTC times: the value of this + property applies to all of the other time-related properties." + ::= { ipSecRuleTimePeriodEntry 7 } + + + -- + -- + -- The ipSecRuleTimePeriodSetTable + -- + + ipSecRuleTimePeriodSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleTimePeriodSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies time period sets. The ipSecRuleTimePeriodTable can + specify only a single time period within a day. This table enables + the specification of multiple time periods within a day by + grouping them into one set. " + ::= { ipSecPolicyTimePeriod 2 } + + ipSecRuleTimePeriodSetEntry OBJECT-TYPE + SYNTAX IpSecRuleTimePeriodSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRuleTimePeriodSetPrid } + UNIQUENESS { + ipSecRuleTimePeriodSetRuleTimePeriodSetId, + ipSecRuleTimePeriodSetRuleTimePeriodId + } + ::= { ipSecRuleTimePeriodSetTable 1 } + + IpSecRuleTimePeriodSetEntry ::= SEQUENCE { + ipSecRuleTimePeriodSetPrid InstanceId, + ipSecRuleTimePeriodSetRuleTimePeriodSetId TagId, + ipSecRuleTimePeriodSetRuleTimePeriodId ReferenceId + } + + ipSecRuleTimePeriodSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify an instance of this class" + ::= { ipSecRuleTimePeriodSetEntry 1 } + + ipSecRuleTimePeriodSetRuleTimePeriodSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An integer that uniquely identifies an ipSecRuleTimePeriod set. " + ::= { ipSecRuleTimePeriodSetEntry 2 } + + ipSecRuleTimePeriodSetRuleTimePeriodId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecRuleTimePeriodEntry } + STATUS current + DESCRIPTION + "An integer that identifies an ipSecRuleTimePeriod, specified by + ipSecRuleTimePeriodPrid in the ipSecRuleTimePeriodTable, that is + included in this set." + ::= { ipSecRuleTimePeriodSetEntry 3 } + + + -- + -- + -- The ipSecIfCapsTable + -- + + ipSecIfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Specifies capabilities that may be associated with an interface + of a specific type. The instances of this table are referenced by + the frwkIfCapSetCapability attribute of the frwkIfCapSetTable [FR- + PIB]." + ::= { ipSecIfCapability 1 } + + ipSecIfCapsEntry OBJECT-TYPE + SYNTAX IpSecIfCapsEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIfCapsPrid } + UNIQUENESS { + ipSecIfCapsDirection, + ipSecIfCapsMaxIpSecActions, + ipSecIfCapsMaxIkeActions + } + ::= { ipSecIfCapsTable 1 } + + IpSecIfCapsEntry ::= SEQUENCE { + ipSecIfCapsPrid InstanceId, + ipSecIfCapsDirection INTEGER, + ipSecIfCapsMaxIpSecActions Unsigned16, + ipSecIfCapsMaxIkeActions Unsigned16 + } + + ipSecIfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIfCapsEntry 1 } + + ipSecIfCapsDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2), + bi-directional(3) + } + STATUS current + DESCRIPTION + "Specifies the direction for which this capability applies." + ::= { ipSecIfCapsEntry 2 } + + ipSecIfCapsMaxIpSecActions OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the maximum number of actions an IPsec action set may + contain. IPsec action sets are specified by the + ipSecActionSetTable. + + A value of zero indicates that there is no maximum limit." + ::= { ipSecIfCapsEntry 3 } + + ipSecIfCapsMaxIkeActions OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the maximum number of actions an IKE action set may + contain. IKE action sets are specified by the + ipSecIkeActionSetTable. + + A value of zero indicates that there is no maximum limit." + ::= { ipSecIfCapsEntry 4 } + + + -- + -- + -- Conformance Section + -- + + ipSecPolicyPibConformanceCompliances + OBJECT IDENTIFIER ::= { ipSecPolicyPibConformance 1 } + + ipSecPolicyPibConformanceGroups + OBJECT IDENTIFIER ::= { ipSecPolicyPibConformance 2 } + + ipSecPibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " Compliance statement" + MODULE -- this module + MANDATORY-GROUPS { + ipSecRuleGroup, + ipSecActionSetGroup, + ipSecStaticActionGroup, + ipSecNegotiationActionGroup, + ipSecAssociationGroup, + ipSecProposalSetGroup, + ipSecProposalGroup, + ipSecAhTransformSetGroup, + ipSecAhTransformGroup, + ipSecEspTransformSetGroup, + ipSecEspTransformGroup, + ipSecCompTransformSetGroup, + ipSecCompTransformGroup, + ipSecIkeAssociationGroup, + ipSecIkeProposalSetGroup, + ipSecIkeProposalGroup, + ipSecIkePeerEndpointGroup, + ipSecCredentialSetGroup, + ipSecCredentialGroup, + ipSecCredentialFieldsGroup, + ipSecSelectorSetGroup, + ipSecSelectorGroup, + ipSecAddressGroup, + ipSecL4PortGroup, + ipSecIfCapsGroup + } + + GROUP ipSecIkeRuleGroup + DESCRIPTION + "This group is mandatory if any of the following is supported: 1) + multiple IKE phase one actions (e.g., with different exchange + modes) are associated with an IPsec rule. These actions are to be + tried in sequence till one success; 2) IKE phase one actions that + start automatically." + + GROUP ipSecIkeActionSetGroup + DESCRIPTION + "This group is mandatory if any of the following is supported: 1) + multiple IKE phase one actions (e.g., with different exchange + modes) are associated with an IPsec rule. These actions are to be + tried in sequence till one success; 2) IKE phase one actions that + start automatically." + + GROUP ipSecIpsoFilterSetGroup + DESCRIPTION + "This group is mandatory if IPSO filter is supported." + + GROUP ipSecIpsoFilterGroup + DESCRIPTION + "This group is mandatory if IPSO filter is supported." + + GROUP ipSecRuleTimePeriodGroup + DESCRIPTION + "This group is mandatory if policy scheduling is supported." + + GROUP ipSecRuleTimePeriodSetGroup + DESCRIPTION + "This group is mandatory if policy scheduling is supported." + + OBJECT ipSecRuleipSecIpsoFilterSetId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleLimitNegotiation + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleAutoStart + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleIpSecRuleTimePeriodGroupId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecActionSetDoActionLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecActionSetDoPacketLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationMinLifetimeSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationMinLifetimeKilobytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationIdleDurationSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationUseKeyExchangeGroup + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationGranularity + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformUseReplayPrevention + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformReplayPreventionWindowSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformCipherKeyRounds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformCipherKeyLength + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformUseReplayPrevention + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformReplayPreventionWindowSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformDictionarySize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformPrivateAlgorithm + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationMinLiftetimeSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationMinLifetimeKilobytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationIdleDurationSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationPresharedKey + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationAggressiveModeGroupId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationLocalCredentialId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationDoActionLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeProposalPrfAlgorithm + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeProposalVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkePeerEndpointAddressType + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkePeerEndpointAddress + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIfCapsMaxIkeActions + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleActionExecutionStrategy + SYNTAX INTEGER { + doAll(1) + } + DESCRIPTION + " Support of doUntilSuccess(2) is not required" + + OBJECT ipSecStaticActionAction + SYNTAX INTEGER { + byPass(1), + discard(2), + preConfiguredTransport(4), + preConfiguredTunnel(5) + } + DESCRIPTION + " Support of ikeRejection(3) is not required" + + ::= { ipSecPolicyPibConformanceCompliances 1 } + + ipSecRuleGroup OBJECT-GROUP + OBJECTS { + ipSecRuleIfName, + ipSecRuleRoles, + ipSecRuleDirection, + ipSecRuleIpSecSelectorSetId, + ipSecRuleipSecIpsoFilterSetId, + ipSecRuleIpSecActionSetId, + ipSecRuleActionExecutionStrategy, + ipSecRuleOrder, + ipSecRuleLimitNegotiation, + ipSecRuleAutoStart, + ipSecRuleIpSecRuleTimePeriodGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTable." + ::= { ipSecPolicyPibConformanceGroups 1 } + + ipSecActionSetGroup OBJECT-GROUP + OBJECTS { + ipSecActionSetActionSetId, + ipSecActionSetActionId, + ipSecActionSetDoActionLogging, + ipSecActionSetDoPacketLogging, + ipSecActionSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecActionSetTable." + ::= { ipSecPolicyPibConformanceGroups 2 } + + ipSecStaticActionGroup OBJECT-GROUP + OBJECTS { + ipSecStaticActionAction, + ipSecStaticActionTunnelEndpointId, + ipSecStaticActionDfHandling, + ipSecStaticActionSpi, + ipSecStaticActionLifetimeSeconds, + ipSecStaticActionLifetimeKilobytes, + ipSecStaticActionSaTransformId + } + STATUS current + DESCRIPTION + "Objects from the ipSecStaticActionTable." + ::= { ipSecPolicyPibConformanceGroups 3 } + + ipSecNegotiationActionGroup OBJECT-GROUP + OBJECTS { + ipSecNegotiationActionAction, + ipSecNegotiationActionTunnelEndpointId, + ipSecNegotiationActionDfHandling, + ipSecNegotiationActionIpSecSecurityAssociationId, + ipSecNegotiationActionKeyExchangeId + } + STATUS current + DESCRIPTION + "Objects from the ipSecNegotiationActionTable." + ::= { ipSecPolicyPibConformanceGroups 4 } + + ipSecAssociationGroup OBJECT-GROUP + OBJECTS { + ipSecAssociationMinLifetimeSeconds, + ipSecAssociationMinLifetimeKilobytes, + ipSecAssociationIdleDurationSeconds, + ipSecAssociationUsePfs, + ipSecAssociationVendorId, + ipSecAssociationUseKeyExchangeGroup, + ipSecAssociationDhGroup, + ipSecAssociationGranularity, + ipSecAssociationProposalSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecAssociationTable." + ::= { ipSecPolicyPibConformanceGroups 5 } + + ipSecProposalSetGroup OBJECT-GROUP + OBJECTS { + ipSecProposalSetProposalSetId, + ipSecProposalSetProposalId, + ipSecProposalSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecProposalSetTable." + ::= { ipSecPolicyPibConformanceGroups 6 } + + ipSecProposalGroup OBJECT-GROUP + OBJECTS { + ipSecProposalEspTransformSetId, + ipSecProposalAhTransformSetId, + ipSecProposalCompTransformSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecProposalTable." + ::= { ipSecPolicyPibConformanceGroups 7 } + + ipSecAhTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecAhTransformSetTransformSetId, + ipSecAhTransformSetTransformId, + ipSecAhTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecAhTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 8 } + + ipSecAhTransformGroup OBJECT-GROUP + OBJECTS { + ipSecAhTransformTransformId, + ipSecAhTransformIntegrityKey, + ipSecAhTransformUseReplayPrevention, + ipSecAhTransformReplayPreventionWindowSize, + ipSecAhTransformVendorId, + ipSecAhTransformMaxLifetimeSeconds, + ipSecAhTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecAhTransformTable." + ::= { ipSecPolicyPibConformanceGroups 9 } + + ipSecEspTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecEspTransformSetTransformSetId, + ipSecEspTransformSetTransformId, + ipSecEspTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecEspTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 10 } + + ipSecEspTransformGroup OBJECT-GROUP + OBJECTS { + ipSecEspTransformIntegrityTransformId, + ipSecEspTransformCipherTransformId, + ipSecEspTransformIntegrityKey, + ipSecEspTransformCipherKey, + ipSecEspTransformCipherKeyRounds, + ipSecEspTransformCipherKeyLength, + ipSecEspTransformUseReplayPrevention, + ipSecEspTransformReplayPreventionWindowSize, + ipSecEspTransformVendorId, + ipSecEspTransformMaxLifetimeSeconds, + ipSecEspTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecEspTransformTable." + ::= { ipSecPolicyPibConformanceGroups 11 } + + ipSecCompTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecCompTransformSetTransformSetId, + ipSecCompTransformSetTransformId, + ipSecCompTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecCompTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 12 } + + ipSecCompTransformGroup OBJECT-GROUP + OBJECTS { + ipSecCompTransformAlgorithm, + ipSecCompTransformDictionarySize, + ipSecCompTransformPrivateAlgorithm, + ipSecCompTransformVendorId, + ipSecCompTransformMaxLifetimeSeconds, + ipSecCompTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecCompTransformTable." + ::= { ipSecPolicyPibConformanceGroups 13 } + + ipSecIkeRuleGroup OBJECT-GROUP + OBJECTS { + ipSecIkeRuleIfName, + ipSecIkeRuleRoles, + ipSecIkeRuleIkeActionSetId, + ipSecIkeRuleActionExecutionStrategy, + ipSecIkeRuleLimitNegotiation, + ipSecIkeRuleAutoStart, + ipSecIkeRuleIpSecRuleTimePeriodGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeRuleTable." + ::= { ipSecPolicyPibConformanceGroups 14 } + + ipSecIkeActionSetGroup OBJECT-GROUP + OBJECTS { + ipSecIkeActionSetActionSetId, + ipSecIkeActionSetActionId, + ipSecIkeActionSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeActionSetTable." + ::= { ipSecPolicyPibConformanceGroups 15 } + + ipSecIkeAssociationGroup OBJECT-GROUP + OBJECTS { + ipSecIkeAssociationMinLiftetimeSeconds, + ipSecIkeAssociationMinLifetimeKilobytes, + ipSecIkeAssociationIdleDurationSeconds, + ipSecIkeAssociationExchangeMode, + ipSecIkeAssociationUseIkeIdentityType, + ipSecIkeAssociationUseIkeIdentityValue, + ipSecIkeAssociationIkePeerEndpoint, + ipSecIkeAssociationPresharedKey, + ipSecIkeAssociationVendorId, + ipSecIkeAssociationAggressiveModeGroupId, + ipSecIkeAssociationLocalCredentialId, + ipSecIkeAssociationDoActionLogging, + ipSecIkeAssociationIkeProposalSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeAssociationTable." + ::= { ipSecPolicyPibConformanceGroups 16 } + + ipSecIkeProposalSetGroup OBJECT-GROUP + OBJECTS { + ipSecIkeProposalSetProposalSetId, + ipSecIkeProposalSetProposalId, + ipSecIkeProposalSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeProposalSetTable." + ::= { ipSecPolicyPibConformanceGroups 17 } + + ipSecIkeProposalGroup OBJECT-GROUP + OBJECTS { + ipSecIkeProposalMaxLifetimeSeconds, + ipSecIkeProposalMaxLifetimeKilobytes, + ipSecIkeProposalCipherAlgorithm, + ipSecIkeProposalHashAlgorithm, + ipSecIkeProposalAuthenticationMethod, + ipSecIkeProposalPrfAlgorithm, + ipSecIkeProposalIkeDhGroup, + ipSecIkeProposalVendorId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeProposalTable." + ::= { ipSecPolicyPibConformanceGroups 18 } + + ipSecIkePeerEndpointGroup OBJECT-GROUP + OBJECTS { + ipSecIkePeerEndpointIdentityType, + ipSecIkePeerEndpointIdentityValue, + ipSecIkePeerEndpointAddressType, + ipSecIkePeerEndpointAddress, + ipSecIkePeerEndpointCredentialSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkePeerEndpointTable." + ::= { ipSecPolicyPibConformanceGroups 19 } + + ipSecCredentialSetGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialSetSetId, + ipSecCredentialSetCredentialId + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialSetTable." + ::= { ipSecPolicyPibConformanceGroups 20 } + + ipSecCredentialGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialCredentialType, + ipSecCredentialFieldsId, + ipSecCredentialCrlDistributionPoint + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialTable." + ::= { ipSecPolicyPibConformanceGroups 21 } + + ipSecCredentialFieldsGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialFieldsName, + ipSecCredentialFieldsValue, + ipSecCredentialFieldsSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialFieldsTable." + ::= { ipSecPolicyPibConformanceGroups 22 } + + ipSecSelectorSetGroup OBJECT-GROUP + OBJECTS { + ipSecSelectorSetSelectorSetId, + ipSecSelectorSetSelectorId, + ipSecSelectorSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecSelectorSetTable." + ::= { ipSecPolicyPibConformanceGroups 23 } + + ipSecSelectorGroup OBJECT-GROUP + OBJECTS { + ipSecSelectorSrcAddressGroupId, + ipSecSelectorSrcPortGroupId, + ipSecSelectorDstAddressGroupId, + ipSecSelectorDstPortGroupId, + ipSecSelectorProtocol, + ipSecSelectorDscp, + ipSecSelectorFlowLabel + } + STATUS current + DESCRIPTION + "Objects from the ipSecSelectorTable." + ::= { ipSecPolicyPibConformanceGroups 24 } + + ipSecAddressGroup OBJECT-GROUP + OBJECTS { + ipSecAddressAddressType, + ipSecAddressAddrMask, + ipSecAddressAddrMin, + ipSecAddressAddrMax, + ipSecAddressGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecAddressTable." + ::= { ipSecPolicyPibConformanceGroups 25 } + + ipSecL4PortGroup OBJECT-GROUP + OBJECTS { + ipSecL4PortPortMin, + ipSecL4PortPortMax, + ipSecL4PortGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecL4PortTable." + ::= { ipSecPolicyPibConformanceGroups 26 } + + ipSecIpsoFilterSetGroup OBJECT-GROUP + OBJECTS { + ipSecIpsoFilterSetFilterSetId, + ipSecIpsoFilterSetFilterId, + ipSecIpsoFilterSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIpsoFilterSetTable." + ::= { ipSecPolicyPibConformanceGroups 27 } + + ipSecIpsoFilterGroup OBJECT-GROUP + OBJECTS { + ipSecIpsoFilterMatchConditionType, + ipSecIpsoFilterClassificationLevel, + ipSecIpsoFilterProtectionAuthority + } + STATUS current + DESCRIPTION + "Objects from the ipSecIpsoFilterTable." + ::= { ipSecPolicyPibConformanceGroups 28 } + + ipSecRuleTimePeriodGroup OBJECT-GROUP + OBJECTS { + ipSecRuleTimePeriodTimePeriod, + ipSecRuleTimePeriodMonthOfYearMask, + ipSecRuleTimePeriodDayOfMonthMask, + ipSecRuleTimePeriodDayOfWeekMask, + ipSecRuleTimePeriodTimeOfDayMask, + ipSecRuleTimePeriodLocalOrUtcTime + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTimePeriodTable." + ::= { ipSecPolicyPibConformanceGroups 29 } + + ipSecRuleTimePeriodSetGroup OBJECT-GROUP + OBJECTS { + ipSecRuleTimePeriodSetRuleTimePeriodSetId, + ipSecRuleTimePeriodSetRuleTimePeriodId + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTimePeriodSetTable." + ::= { ipSecPolicyPibConformanceGroups 30 } + + ipSecIfCapsGroup OBJECT-GROUP + OBJECTS { + ipSecIfCapsDirection, + ipSecIfCapsMaxIpSecActions, + ipSecIfCapsMaxIkeActions + } + STATUS current + DESCRIPTION + "Objects from the ipSecIfCapsTable." + ::= { ipSecPolicyPibConformanceGroups 31 } + +END diff --git a/pibs/tubs/IPSEC-POLICY-PIB-orig b/pibs/tubs/IPSEC-POLICY-PIB-orig new file mode 100644 index 0000000..c7c9a91 --- /dev/null +++ b/pibs/tubs/IPSEC-POLICY-PIB-orig @@ -0,0 +1,4157 @@ +IPSEC-POLICY-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, OBJECT-GROUP + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, TagId, TagReferenceId + FROM COPS-PR-SPPI + RoleCombination + FROM FRAMEWORK-TC-PIB; + + ipSecPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORY { tbd } -- IPsec Client Type -- + LAST-UPDATED "200202241800Z" + ORGANIZATION "IETF ipsp WG" + CONTACT-INFO " + Man Li + Nokia + 5 Wayside Road, + Burlington, MA 01803 + Phone: +1 781 993 3923 + Email: man.m.li@nokia.com + + Avri Doria + Div. of Computer Communications + Lulea University of Technology + SE-971 87 + Lulea, Sweden + Phone: +46 920 49 3030 + Email: avri@sm.luth.se + + Jamie Jason + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 9531 + Fax: +1 503 264 9428 + Email: jamie.jason@intel.com + + Cliff Wang + SmartPipes Inc. + Suite 300, 565 Metro Place South + Dublin, OH 43017 + Phone: +1 614 923 6241 + Email: CWang@smartpipes.com + + Markus Stenberg + SSH Communications Security Corp. + Fredrikinkatu 42 + FIN-00100 Helsinki, Finland + Phone: +358 20 500 7466 + Email: markus.stenberg@ssh.com" + + + DESCRIPTION + "This PIB module contains a set of policy rule classes that + describe IPsec policies." + ::= { pib yyy } �- yyy to be assigned by IANA -- + + + Unsigned16 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An unsigned 16 bit integer." + SYNTAX Unsigned32 (0..65535) + + ipSecAssociation OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies IPsec Security Associations." + ::= { ipSecPolicyPib 1 } + + ipSecAhTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies AH Transforms." + ::= { ipSecPolicyPib 2 } + + ipSecEspTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies ESP Transforms." + ::= { ipSecPolicyPib 3 } + + ipSecCompTransform OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies Comp Transforms." + ::= { ipSecPolicyPib 4 } + + ipSecIkeAssociation OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies IKE Security Associations." + ::= { ipSecPolicyPib 5 } + + ipSecCredential OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies credentials for IKE phase one negotiations." + ::= { ipSecPolicyPib 6 } + + ipSecSelector OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies selectors for IPsec associations." + ::= { ipSecPolicyPib 7 } + + ipSecPolicyTimePeriod OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies the time periods during which a policy rule + is valid." + ::= { ipSecPolicyPib 8 } + + ipSecIfCapability OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies capabilities associated with interface + types." + ::= { ipSecPolicyPib 9 } + + ipSecPolicyPibConformance OBJECT-IDENTITY + STATUS current + DESCRIPTION + "This group specifies requirements for conformance to the IPsec + Policy PIB" + ::= { ipSecPolicyPib 10 } + + + -- + -- + -- The ipSecRuleTable + -- + + ipSecRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table is the starting point for specifying an IPsec policy. + It contains an ordered list of IPsec rules. " + ::= { ipSecAssociation 1 } + + ipSecRuleEntry OBJECT-TYPE + SYNTAX IpSecRuleEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRulePrid } + UNIQUENESS { + ipSecRuleIfName, + ipSecRuleRoles, + ipSecRuleOrder + } + ::= { ipSecRuleTable 1 } + + IpSecRuleEntry ::= SEQUENCE { + ipSecRulePrid InstanceId, + ipSecRuleIfName SnmpAdminString, + ipSecRuleRoles RoleCombination, + ipSecRuleDirection INTEGER, + ipSecRuleIpSecSelectorSetId TagReferenceId, + ipSecRuleipSecIpsoFilterSetId TagReferenceId, + ipSecRuleIpSecActionSetId TagReferenceId, + ipSecRuleActionExecutionStrategy INTEGER, + ipSecRuleOrder Unsigned16, + ipSecRuleLimitNegotiation INTEGER, + ipSecRuleAutoStart TruthValue, + ipSecRuleIpSecRuleTimePeriodGroupId TagReferenceId + } + + ipSecRulePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecRuleEntry 1 } + + ipSecRuleIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this IPsec rule applies. + The interface capability name specified by this attribute MUST + exist in the frwkIfCapSetTable [FR-PIB] prior to association with + an instance of this class." + ::= { ipSecRuleEntry 2 } + + ipSecRuleRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "Specifies the role combination of the interface to which this + IPsec rule should apply. There must exist an instance in the + frwkIfCapSetRoleComboTable [FR-PIB] specifying this role + combination, together with the interface capability set specified + by ipSecRuleIfName, prior to association with an instance of this + class." + ::= { ipSecRuleEntry 3 } + + ipSecRuleDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2), + bi-directional(3) + } + STATUS current + DESCRIPTION + "Specifies the direction of traffic to which this rule should + apply." + ::= { ipSecRuleEntry 4 } + + ipSecRuleIpSecSelectorSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecSelectorSetSelectorSetId } + STATUS current + DESCRIPTION + "Identifies a set of selectors to be associated with this IPsec + rule. " + ::= { ipSecRuleEntry 5 } + + ipSecRuleipSecIpsoFilterSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIpsoFilterSetFilterSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPSO filters to be associated with this IPsec + rule. A value of zero indicates that there are no IPSO filters + associated with this rule. + + When the value of this attribute is not zero, the set of IPSO + filters is ANDed with the set of Selectors specified by + ipSecRuleIpSecSelectorSetId. In other words, a packet MUST match a + selector in the selector sets and a filter in the IPSO filter sets + before the actions associated with this rule can be applied." + ::= { ipSecRuleEntry 6 } + + ipSecRuleIpSecActionSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecActionSetActionSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPsec actions to be associated with this + rule." + ::= { ipSecRuleEntry 7 } + + ipSecRuleActionExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { + doAll(1), + doUntilSuccess(2) + } + STATUS current + DESCRIPTION + "Specifies the strategy to be used in executing the sequenced + actions in the action set identified by ipSecRuleIpSecActionSetId. + + DoAll (1) causes the execution of all the actions in the action + set according to their defined precedence order. The precedence + order is specified by the ipSecActionSetOrder in the + ipSecActionSetTable. + + DoUntilSuccess (2) causes the execution of actions according to + their defined precedence order until a successful execution of a + single action. The precedence order is specified by the + ipSecActionSetOrder in the ipSecActionSetTable." + ::= { ipSecRuleEntry 8 } + + ipSecRuleOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the rule within all the rules + associated with {IfName, Roles}. A smaller value indicates a + higher precedence order. " + ::= { ipSecRuleEntry 9 } + + ipSecRuleLimitNegotiation OBJECT-TYPE + SYNTAX INTEGER { + initiator(1), + responder(2), + both(3) + } + STATUS current + DESCRIPTION + "Limits the negotiation method. Before proceeding with a phase 2 + negotiation, the LimitNegotiation property of the IPsecRule is + first checked to determine if the negotiation part indicated for + the rule matches that of the current negotiation (Initiator, + Responder, or Either). + + This attribute is ignored when an attempt is made to refresh an + expiring SA (either side can initiate a refresh operation). The + system can determine that the negotiation is a refresh operation + by checking to see if the selector information matches that of an + existing SA. If LimitNegotiation does not match and the selector + corresponds to a new SA, the negotiation is stopped. " + ::= { ipSecRuleEntry 10 } + + ipSecRuleAutoStart OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates if this rule should be automatically executed." + ::= { ipSecRuleEntry 11 } + + ipSecRuleIpSecRuleTimePeriodGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecRuleTimePeriodSetRuleTimePeriodSetId } + STATUS current + DESCRIPTION + "Identifies an IPsec rule time period set, specified in + ipSecRuleTimePeriodSetTable, that is associated with this rule. + + A value of zero indicates that this IPsec rule is always valid." + ::= { ipSecRuleEntry 12 } + + + -- + -- + -- The ipSecActionSetTable + -- + + ipSecActionSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecActionSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec action sets." + ::= { ipSecAssociation 2 } + + ipSecActionSetEntry OBJECT-TYPE + SYNTAX IpSecActionSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecActionSetPrid } + UNIQUENESS { + ipSecActionSetActionSetId, + ipSecActionSetActionId, + ipSecActionSetDoActionLogging, + ipSecActionSetDoPacketLogging, + ipSecActionSetOrder + } + ::= { ipSecActionSetTable 1 } + + IpSecActionSetEntry ::= SEQUENCE { + ipSecActionSetPrid InstanceId, + ipSecActionSetActionSetId TagId, + ipSecActionSetActionId Prid, + ipSecActionSetDoActionLogging TruthValue, + ipSecActionSetDoPacketLogging TruthValue, + ipSecActionSetOrder Unsigned16 + } + + ipSecActionSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecActionSetEntry 1 } + + ipSecActionSetActionSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPsec action set is composed of one or more IPsec actions. + Each action belonging to the same set has the same ActionSetId." + ::= { ipSecActionSetEntry 2 } + + ipSecActionSetActionId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes an + action to be taken. + + For IPsec static actions, it MUST point to an instance in the + ipSecStaticActionTable. + + For IPsec negotiation actions, it MUST point to an instance in the + ipSecNegotiationActionTable. For other actions, it may point to an + instance in a table specified by other PIB modules." + ::= { ipSecActionSetEntry 3 } + + ipSecActionSetDoActionLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether a log message is to be generated when the + action is performed. This applies for ipSecNegotiationActions + with the meaning of logging a message when the negotiation is + attempted (with the success or failure result). This also applies + for ipSecStaticAction only for PreconfiguredTransport action or + PreconfiguredTunnel action with the meaning of logging a message + when the preconfigured SA is actually installed in the SADB." + ::= { ipSecActionSetEntry 4 } + + ipSecActionSetDoPacketLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to log when the resulting security association + is used to process a packet. For ipSecStaticActions, a log message + is to be generated when the IPsecBypass, IpsecDiscard or IKEReject + actions are executed." + ::= { ipSecActionSetEntry 5 } + + ipSecActionSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the action within the action + set. An action with a smaller precedence order is to be applied + before one with a larger precedence order. " + ::= { ipSecActionSetEntry 6 } + + + -- + -- + -- The ipSecStaticActionTable + -- + + ipSecStaticActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecStaticActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec static actions." + ::= { ipSecAssociation 3 } + + ipSecStaticActionEntry OBJECT-TYPE + SYNTAX IpSecStaticActionEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecStaticActionPrid } + UNIQUENESS { + ipSecStaticActionAction, + ipSecStaticActionTunnelEndpointId, + ipSecStaticActionDfHandling, + ipSecStaticActionSpi, + ipSecStaticActionLifetimeSeconds, + ipSecStaticActionLifetimeKilobytes, + ipSecStaticActionSaTransformId + } + ::= { ipSecStaticActionTable 1 } + + IpSecStaticActionEntry ::= SEQUENCE { + ipSecStaticActionPrid InstanceId, + ipSecStaticActionAction INTEGER, + ipSecStaticActionTunnelEndpointId ReferenceId, + ipSecStaticActionDfHandling INTEGER, + ipSecStaticActionSpi Unsigned32, + ipSecStaticActionLifetimeSeconds Unsigned32, + ipSecStaticActionLifetimeKilobytes Unsigned32, + ipSecStaticActionSaTransformId Prid + } + + ipSecStaticActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecStaticActionEntry 1 } + + ipSecStaticActionAction OBJECT-TYPE + SYNTAX INTEGER { + byPass(1), + discard(2), + ikeRejection(3), + preConfiguredTransport(4), + preConfiguredTunnel(5) + } + STATUS current + DESCRIPTION + "Specifies the IPsec action to be applied to the traffic. byPass + (1) means that packets are to be allowed to pass in the clear. + discard (2) means that packets are to be discarded. ikeRejection + (3) means that that an IKE negotiation should not even be + attempted or continued. preConfiguredTransport (4) means that an + IPsec transport SA is pre-configured. preConfiguredTunnel (5) + means that an IPsec tunnel SA is pre-configured. " + ::= { ipSecStaticActionEntry 2 } + + ipSecStaticActionTunnelEndpointId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAddressEntry } + STATUS current + DESCRIPTION + "When ipSecStaticActionAction is preConfiguredTunnel (5), this + attribute indicates the peer gateway IP address. This address MUST + be a single endpoint address. + + When ipSecStaticActionAction is not preConfiguredTunnel, this + attribute MUST be zero." + ::= { ipSecStaticActionEntry 3 } + + ipSecStaticActionDfHandling OBJECT-TYPE + SYNTAX INTEGER { + copy(1), + set(2), + clear(3) + } + STATUS current + DESCRIPTION + "When ipSecStaticActionAction is preConfiguredTunnel, this + attribute specifies how the DF bit is managed. + + Copy (1) indicates to copy the DF bit from the internal IP header + to the external IP header. Set (2) indicates to set the DF bit of + the external IP header to 1. Clear (3) indicates to clear the DF + bit of the external IP header to 0. + + When ipSecStaticActionAction is not preConfiguredTunnel, this + attribute MUST be ignored. " + ::= { ipSecStaticActionEntry 4 } + + ipSecStaticActionSpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the SPI to be used with the SA Transform identified by + ipSecStaticActionSaTransformId. + + When ipSecStaticActionAction is neither + preConfiguredTransportAction nor preConfiguredTunnelAction, this + attribute MUST be ignored." + ::= { ipSecStaticActionEntry 5 } + + ipSecStaticActionLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the amount of time (in seconds) that a security + association derived from this action should be used. When + ipSecStaticActionAction is neither preConfiguredTransportAction + nor preConfiguredTunnelAction, this attribute MUST be ignored. + + A value of zero indicates that there is not a lifetime associated + with this action (i.e., infinite lifetime). + + The actual lifetime of the preconfigured SA will be the smallest + of the value of this LifetimeSeconds property and of the value of + the MaxLifetimeSeconds property of the associated SA Transform. + Except if the value of this LifetimeSeconds property is zero, then + there will be no lifetime associated to this SA." + ::= { ipSecStaticActionEntry 6 } + + ipSecStaticActionLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the SA lifetime in kilobytes. When + ipSecStaticActionAction is neither preConfiguredTransportAction + nor preConfiguredTunnelAction, this attribute MUST be ignored. + + A value of zero indicates that there is not a lifetime associated + with this action (i.e., infinite lifetime). + + The actual lifetime of the preconfigured SA will be the smallest + of the value of this LifetimeKilobytes property and of the value + of the MaxLifetimeKilobytes property of the associated SA + transform. Except if the value of this LifetimeKilobytes property + is zero, then there will be no lifetime associated with this + action. + " + ::= { ipSecStaticActionEntry 7 } + + ipSecStaticActionSaTransformId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes an + SA transform, e.g, ipSecEspTransformTable, ipSecAhTransformTable." + ::= { ipSecStaticActionEntry 8 } + + + -- + -- + -- The ipSecNegotiationActionTable + -- + + ipSecNegotiationActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecNegotiationActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec negotiation actions." + ::= { ipSecAssociation 4 } + + ipSecNegotiationActionEntry OBJECT-TYPE + SYNTAX IpSecNegotiationActionEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecNegotiationActionPrid } + UNIQUENESS { + ipSecNegotiationActionAction, + ipSecNegotiationActionTunnelEndpointId, + ipSecNegotiationActionDfHandling, + ipSecNegotiationActionIpSecSecurityAssociationId, + ipSecNegotiationActionKeyExchangeId + } + ::= { ipSecNegotiationActionTable 1 } + + IpSecNegotiationActionEntry ::= SEQUENCE { + ipSecNegotiationActionPrid InstanceId, + ipSecNegotiationActionAction INTEGER, + ipSecNegotiationActionTunnelEndpointId ReferenceId, + ipSecNegotiationActionDfHandling INTEGER, + ipSecNegotiationActionIpSecSecurityAssociationId ReferenceId, + ipSecNegotiationActionKeyExchangeId Prid + } + + ipSecNegotiationActionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecNegotiationActionEntry 1 } + + ipSecNegotiationActionAction OBJECT-TYPE + SYNTAX INTEGER { + transport(1), + tunnel(2) + } + STATUS current + DESCRIPTION + "Specifies the IPsec action to be applied to the traffic. + transport(1) means that the packet should be protected with a + security association in transport mode. tunnel(2) means that the + packet should be protected with a security association in tunnel + mode. If tunnel (2) is specified, ipSecActionTunnelEndpointId + MUST also be specified." + ::= { ipSecNegotiationActionEntry 2 } + + ipSecNegotiationActionTunnelEndpointId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAddressEntry } + STATUS current + DESCRIPTION + "When ipSecActionAction is tunnel (2), this attribute indicates + the peer gateway IP address. This address MUST be a single + endpoint address. + + When ipSecActionAction is not tunnel, this attribute MUST be + zero." + ::= { ipSecNegotiationActionEntry 3 } + + ipSecNegotiationActionDfHandling OBJECT-TYPE + SYNTAX INTEGER { + copy(1), + set(2), + clear(3) + } + STATUS current + DESCRIPTION + "When ipSecActionAction is tunnel, this attribute specifies how + the DF bit is managed. + + Copy (1) indicates to copy the DF bit from the internal IP header + to the external IP header. Set (2) indicates to set the DF bit of + the external IP header to 1. Clear (3) indicates to clear the DF + bit of the external IP header to 0. + + When ipSecActionAction is not tunnel, this attribute MUST be + ignored. " + ::= { ipSecNegotiationActionEntry 4 } + + ipSecNegotiationActionIpSecSecurityAssociationId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAssociationEntry } + STATUS current + DESCRIPTION + "Pointer to a valid instance in the + ipSecSecurityAssociationTable." + ::= { ipSecNegotiationActionEntry 5 } + + ipSecNegotiationActionKeyExchangeId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes key + exchange associations. If a single IKE phase one negotiation is + used for the key exchange, this attribute MUST point to an + instance in the ipSecIkeAssociationTable. If multiple IKE phase + one negotiations (e.g., with different modes) are to be tried + until success, this attribute SHOULD point to ipSecIkeRuleTable. + + For other key exchange methods, this attribute may point to an + instance of a PRC defined in some other PIB. + + A value of zero means that there is no key exchange procedure + associated." + ::= { ipSecNegotiationActionEntry 6 } + + + -- + -- + -- The ipSecAssociationTable + -- + + ipSecAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAssociationEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec associations." + ::= { ipSecAssociation 5 } + + ipSecAssociationEntry OBJECT-TYPE + SYNTAX IpSecAssociationEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAssociationPrid } + UNIQUENESS { + ipSecAssociationMinLifetimeSeconds, + ipSecAssociationMinLifetimeKilobytes, + ipSecAssociationIdleDurationSeconds, + ipSecAssociationUsePfs, + ipSecAssociationVendorId, + ipSecAssociationUseKeyExchangeGroup, + ipSecAssociationDhGroup, + ipSecAssociationGranularity, + ipSecAssociationProposalSetId + } + ::= { ipSecAssociationTable 1 } + + IpSecAssociationEntry ::= SEQUENCE { + ipSecAssociationPrid InstanceId, + ipSecAssociationMinLifetimeSeconds Unsigned32, + ipSecAssociationMinLifetimeKilobytes Unsigned32, + ipSecAssociationIdleDurationSeconds Unsigned32, + ipSecAssociationUsePfs TruthValue, + ipSecAssociationVendorId OCTET STRING, + ipSecAssociationUseKeyExchangeGroup TruthValue, + ipSecAssociationDhGroup Unsigned16, + ipSecAssociationGranularity INTEGER, + ipSecAssociationProposalSetId TagReferenceId + } + + ipSecAssociationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecAssociationEntry 1 } + + ipSecAssociationMinLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum SA seconds lifetime that will be accepted + from a peer while negotiating an SA based upon this action. + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecAssociationEntry 2 } + + ipSecAssociationMinLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum kilobyte lifetime that will be accepted + from a negotiating peer while negotiating an SA based upon this + action. A value of zero indicates that there is no minimum + lifetime enforced." + ::= { ipSecAssociationEntry 3 } + + ipSecAssociationIdleDurationSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies how long, in seconds, a security association may remain + unused before it is deleted. + + A value of zero indicates that idle detection should not be used + for the security association (only the seconds and kilobyte + lifetimes will be used)." + ::= { ipSecAssociationEntry 4 } + + ipSecAssociationUsePfs OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether or not to use PFS when refreshing keys." + ::= { ipSecAssociationEntry 5 } + + ipSecAssociationVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the IKE Vendor ID. This attribute is used together with + the property ipSecAssociationDhGroup (when it is in the vendor- + specific range) to identify the key exchange group. This + attribute is ignored unless ipSecAssociationUsePFS is true and + ipSecAssociationUseKeyExchangeGroup is false and + ipSecAssociationDhGroup is in the vendor-specific range (32768- + 65535)." + ::= { ipSecAssociationEntry 6 } + + ipSecAssociationUseKeyExchangeGroup OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether or not to use the same GroupId for phase 2 as + was used in phase 1. If UsePFS is false, then this attribute is + ignored. + + A value of true indicates that the phase 2 GroupId should be the + same as phase 1. A value of false indicates that the group number + specified by the ipSecSecurityAssociationDhGroup attribute SHALL + be used for phase 2. " + ::= { ipSecAssociationEntry 7 } + + ipSecAssociationDhGroup OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the key exchange group to use for phase 2 when the + property ipSecSecurityAssociationUsePfs is true and the property + ipSecSecurityAssociationUseKeyExchangeGroup is false." + ::= { ipSecAssociationEntry 8 } + + ipSecAssociationGranularity OBJECT-TYPE + SYNTAX INTEGER { + subnet(1), + address(2), + protocol(3), + port(4) + } + STATUS current + DESCRIPTION + "Specifies how the proposed selector for the security association + will be created. + + A value of 1 (subnet) indicates that the source and destination + subnet masks of the filter entry are used. + + A value of 2 (address) indicates that only the source and + destination IP addresses of the triggering packet are used. + + A value of 3 (protocol) indicates that the source and destination + IP addresses and the IP protocol of the triggering packet are + used. + + A value of 4 (port) indicates that the source and destination IP + addresses and the IP protocol and the source and destination layer + 4 ports of the triggering packet are used. " + ::= { ipSecAssociationEntry 9 } + + ipSecAssociationProposalSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecProposalSetProposalSetId } + STATUS current + DESCRIPTION + "Identifies a set of IPsec proposals that is associated with this + IPsec association." + ::= { ipSecAssociationEntry 10 } + + + -- + -- + -- The ipSecProposalSetTable + -- + + ipSecProposalSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecProposalSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec proposal sets. Proposals within a set are ORed + with preference order. " + ::= { ipSecAssociation 6 } + + ipSecProposalSetEntry OBJECT-TYPE + SYNTAX IpSecProposalSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecProposalSetPrid } + UNIQUENESS { + ipSecProposalSetProposalSetId, + ipSecProposalSetProposalId, + ipSecProposalSetOrder + } + ::= { ipSecProposalSetTable 1 } + + IpSecProposalSetEntry ::= SEQUENCE { + ipSecProposalSetPrid InstanceId, + ipSecProposalSetProposalSetId TagId, + ipSecProposalSetProposalId ReferenceId, + ipSecProposalSetOrder Unsigned16 + } + + ipSecProposalSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecProposalSetEntry 1 } + + ipSecProposalSetProposalSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + + + "An IPsec proposal set is composed of one or more IPsec proposals. + Each proposal belonging to the same set has the same + ProposalSetId." + ::= { ipSecProposalSetEntry 2 } + + ipSecProposalSetProposalId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecProposalEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecProposalTable." + ::= { ipSecProposalSetEntry 3 } + + ipSecProposalSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the proposal + identified by ipSecProposalSetProposalId in a proposal set. The + proposal set is identified by ipSecProposalSetProposalSetId. + Proposals within a set are ORed with preference order. A smaller + integer value indicates a higher preference." + ::= { ipSecProposalSetEntry 4 } + + + -- + -- + -- The ipSecProposalTable + -- + + ipSecProposalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecProposalEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec proposals. It has references to ESP, AH and + IPCOMP Transform sets. Within a proposal, different types of + transforms are ANDed. Multiple transforms of the same type are + ORed with preference order." + ::= { ipSecAssociation 7 } + + ipSecProposalEntry OBJECT-TYPE + SYNTAX IpSecProposalEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecProposalPrid } + UNIQUENESS { + ipSecProposalEspTransformSetId, + ipSecProposalAhTransformSetId, + ipSecProposalCompTransformSetId + } + ::= { ipSecProposalTable 1 } + + IpSecProposalEntry ::= SEQUENCE { + ipSecProposalPrid InstanceId, + ipSecProposalEspTransformSetId TagReferenceId, + ipSecProposalAhTransformSetId TagReferenceId, + ipSecProposalCompTransformSetId TagReferenceId + } + + ipSecProposalPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecProposalEntry 1 } + + ipSecProposalEspTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecEspTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies a set of ESP transforms, specified in + ipSecEspTransformSetTable, that is associated with this proposal." + ::= { ipSecProposalEntry 2 } + + ipSecProposalAhTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAhTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies an AH transform set, specified in + ipSecAhTransformSetTable, that is associated with this proposal." + ::= { ipSecProposalEntry 3 } + + ipSecProposalCompTransformSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCompTransformSetTransformSetId } + STATUS current + DESCRIPTION + "An integer that identifies a set of IPComp transforms, specified + in ipSecCompTransformSetTable, that is associated with this + proposal." + ::= { ipSecProposalEntry 4 } + + + -- + -- + -- The ipSecAhTransformSetTable + -- + + ipSecAhTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAhTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies AH transform sets. Within a transform set, the + transforms are ORed with preference order. " + ::= { ipSecAhTransform 1 } + + ipSecAhTransformSetEntry OBJECT-TYPE + SYNTAX IpSecAhTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAhTransformSetPrid } + UNIQUENESS { + ipSecAhTransformSetTransformSetId, + ipSecAhTransformSetTransformId, + ipSecAhTransformSetOrder + } + ::= { ipSecAhTransformSetTable 1 } + + IpSecAhTransformSetEntry ::= SEQUENCE { + ipSecAhTransformSetPrid InstanceId, + ipSecAhTransformSetTransformSetId TagId, + ipSecAhTransformSetTransformId ReferenceId, + ipSecAhTransformSetOrder Unsigned16 + } + + ipSecAhTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class. " + ::= { ipSecAhTransformSetEntry 1 } + + ipSecAhTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An AH transform set is composed of one or more AH transforms. + Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecAhTransformSetEntry 2 } + + ipSecAhTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecAhTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecAhTransformTable." + ::= { ipSecAhTransformSetEntry 3 } + + ipSecAhTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecAhTransformSetTransformId within a transform + set. The transform set is identified by + ipSecAhTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecAhTransformSetEntry 4 } + + + -- + -- + -- The ipSecAhTransformTable + -- + + ipSecAhTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAhTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies AH transforms." + ::= { ipSecAhTransform 2 } + + ipSecAhTransformEntry OBJECT-TYPE + SYNTAX IpSecAhTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAhTransformPrid } + UNIQUENESS { + ipSecAhTransformTransformId, + ipSecAhTransformIntegrityKey, + ipSecAhTransformUseReplayPrevention, + ipSecAhTransformReplayPreventionWindowSize, + ipSecAhTransformVendorId, + ipSecAhTransformMaxLifetimeSeconds, + ipSecAhTransformMaxLifetimeKilobytes + } + ::= { ipSecAhTransformTable 1 } + + IpSecAhTransformEntry ::= SEQUENCE { + ipSecAhTransformPrid InstanceId, + ipSecAhTransformTransformId INTEGER, + ipSecAhTransformIntegrityKey OCTET STRING, + ipSecAhTransformUseReplayPrevention TruthValue, + ipSecAhTransformReplayPreventionWindowSize Unsigned32, + ipSecAhTransformVendorId OCTET STRING, + ipSecAhTransformMaxLifetimeSeconds Unsigned32, + ipSecAhTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecAhTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class. " + ::= { ipSecAhTransformEntry 1 } + + ipSecAhTransformTransformId OBJECT-TYPE + SYNTAX INTEGER { + md5(2), + sha-1(3), + des(4) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the AH algorithm to propose." + ::= { ipSecAhTransformEntry 2 } + + ipSecAhTransformIntegrityKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this AH transform instance is used for a Static Action, this + attribute specifies the integrity key to be used. This attribute + MUST be ignored when this AH transform instance is used for a + Negotiation Action." + ::= { ipSecAhTransformEntry 3 } + + ipSecAhTransformUseReplayPrevention OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to enable replay prevention detection." + ::= { ipSecAhTransformEntry 4 } + + ipSecAhTransformReplayPreventionWindowSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies, in bits, the length of the sliding window used by the + replay prevention detection mechanism. The value of this property + is ignored if UseReplayPrevention is false. It is assumed that the + window size will be power of 2." + ::= { ipSecAhTransformEntry 5 } + + ipSecAhTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecAhTransformEntry 6 } + + ipSecAhTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecAhTransformEntry 7 } + + ipSecAhTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecAhTransformEntry 8 } + + + -- + -- + -- The ipSecEspTransformSetTable + -- + + ipSecEspTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecEspTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies ESP transform sets. Within a transform set, the choices + are ORed with preference order. " + ::= { ipSecEspTransform 1 } + + ipSecEspTransformSetEntry OBJECT-TYPE + SYNTAX IpSecEspTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecEspTransformSetPrid } + UNIQUENESS { + ipSecEspTransformSetTransformSetId, + ipSecEspTransformSetTransformId, + ipSecEspTransformSetOrder + } + ::= { ipSecEspTransformSetTable 1 } + + IpSecEspTransformSetEntry ::= SEQUENCE { + ipSecEspTransformSetPrid InstanceId, + ipSecEspTransformSetTransformSetId TagId, + ipSecEspTransformSetTransformId ReferenceId, + ipSecEspTransformSetOrder Unsigned16 + } + + ipSecEspTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecEspTransformSetEntry 1 } + + ipSecEspTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An ESP transform set is composed of one or more ESP transforms. + Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecEspTransformSetEntry 2 } + + ipSecEspTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecEspTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecEspTransformTable." + ::= { ipSecEspTransformSetEntry 3 } + + ipSecEspTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecEspTransformSetTransformId within a transform + set. The transform set is identified by + ipSecEspTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecEspTransformSetEntry 4 } + + + -- + -- + -- The ipSecEspTransformTable + -- + + ipSecEspTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecEspTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies ESP transforms." + ::= { ipSecEspTransform 2 } + + ipSecEspTransformEntry OBJECT-TYPE + SYNTAX IpSecEspTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecEspTransformPrid } + UNIQUENESS { + ipSecEspTransformIntegrityTransformId, + ipSecEspTransformCipherTransformId, + ipSecEspTransformIntegrityKey, + ipSecEspTransformCipherKey, + ipSecEspTransformCipherKeyRounds, + ipSecEspTransformCipherKeyLength, + ipSecEspTransformUseReplayPrevention, + ipSecEspTransformReplayPreventionWindowSize, + ipSecEspTransformVendorId, + ipSecEspTransformMaxLifetimeSeconds, + ipSecEspTransformMaxLifetimeKilobytes + } + ::= { ipSecEspTransformTable 1 } + + IpSecEspTransformEntry ::= SEQUENCE { + ipSecEspTransformPrid InstanceId, + ipSecEspTransformIntegrityTransformId INTEGER, + ipSecEspTransformCipherTransformId INTEGER, + ipSecEspTransformIntegrityKey OCTET STRING, + ipSecEspTransformCipherKey OCTET STRING, + ipSecEspTransformCipherKeyRounds Unsigned16, + ipSecEspTransformCipherKeyLength Unsigned16, + ipSecEspTransformUseReplayPrevention TruthValue, + ipSecEspTransformReplayPreventionWindowSize Unsigned32, + ipSecEspTransformVendorId OCTET STRING, + ipSecEspTransformMaxLifetimeSeconds Unsigned32, + ipSecEspTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecEspTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecEspTransformEntry 1 } + + ipSecEspTransformIntegrityTransformId OBJECT-TYPE + SYNTAX INTEGER { + none(0), + hmacMd5(1), + hmacSha(2), + desMac(3), + kpdk(4) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the ESP integrity algorithm to + propose." + ::= { ipSecEspTransformEntry 2 } + + ipSecEspTransformCipherTransformId OBJECT-TYPE + SYNTAX INTEGER { + desIV64(1), + des(2), + tripleDES(3), + rc5(4), + idea(5), + cast(6), + blowfish(7), + tripleIDEA(8), + desIV32(9), + rc4(10), + null(11) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the ESP encryption algorithm to + propose." + ::= { ipSecEspTransformEntry 3 } + + ipSecEspTransformIntegrityKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this ESP transform instance is used for a Static Action, + this attribute specifies the integrity key to be used. This + attribute MUST be ignored when this ESP transform instance is used + for a Negotiation Action." + ::= { ipSecEspTransformEntry 4 } + + ipSecEspTransformCipherKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When this ESP transform instance is used for a Static Action, + this attribute specifies the cipher key to be used. This attribute + MUST be ignored when this ESP transform instance is used for a + Negotiation Action." + ::= { ipSecEspTransformEntry 5 } + + ipSecEspTransformCipherKeyRounds OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + + + "Specifies the number of key rounds for the ESP encryption + algorithm. For encryption algorithms that use fixed number of key + rounds, this value is ignored." + ::= { ipSecEspTransformEntry 6 } + + ipSecEspTransformCipherKeyLength OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies, in bits, the key length for the ESP encryption + algorithm. For encryption algorithms that use fixed-length keys, + this value is ignored." + ::= { ipSecEspTransformEntry 7 } + + ipSecEspTransformUseReplayPrevention OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether to enable replay prevention detection." + ::= { ipSecEspTransformEntry 8 } + + ipSecEspTransformReplayPreventionWindowSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies, in bits, the length of the sliding window used by the + replay prevention detection mechanism. The value of this property + is ignored if UseReplayPrevention is false. It is assumed that the + window size will be power of 2." + ::= { ipSecEspTransformEntry 9 } + + ipSecEspTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecEspTransformEntry 10 } + + ipSecEspTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecEspTransformEntry 11 } + + ipSecEspTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecEspTransformEntry 12 } + + + -- + -- + -- The ipSecCompTransformSetTable + -- + + ipSecCompTransformSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCompTransformSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPComp transform sets. Within a transform set, the + choices are ORed with preference order." + ::= { ipSecCompTransform 1 } + + ipSecCompTransformSetEntry OBJECT-TYPE + SYNTAX IpSecCompTransformSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCompTransformSetPrid } + UNIQUENESS { + ipSecCompTransformSetTransformSetId, + ipSecCompTransformSetTransformId, + ipSecCompTransformSetOrder + } + ::= { ipSecCompTransformSetTable 1 } + + IpSecCompTransformSetEntry ::= SEQUENCE { + ipSecCompTransformSetPrid InstanceId, + ipSecCompTransformSetTransformSetId TagId, + ipSecCompTransformSetTransformId ReferenceId, + ipSecCompTransformSetOrder Unsigned16 + } + + ipSecCompTransformSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCompTransformSetEntry 1 } + + ipSecCompTransformSetTransformSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPCOMP transform set is composed of one or more IPCOMP + transforms. Each transform belonging to the same set has the same + TransformSetId." + ::= { ipSecCompTransformSetEntry 2 } + + ipSecCompTransformSetTransformId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecCompTransformEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecCompTransformTable." + ::= { ipSecCompTransformSetEntry 3 } + + ipSecCompTransformSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the transform + identified by ipSecCompTransformSetTransformId within a transform + set. The transform set is identified by + ipSecCompTransformSetTransformSetId. Transforms within a set are + ORed with preference order. A smaller integer value indicates a + higher preference." + ::= { ipSecCompTransformSetEntry 4 } + + + -- + -- + -- The ipSecCompTransformTable + -- + + ipSecCompTransformTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCompTransformEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IP compression (IPCOMP) algorithms." + ::= { ipSecCompTransform 2 } + + ipSecCompTransformEntry OBJECT-TYPE + SYNTAX IpSecCompTransformEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCompTransformPrid } + UNIQUENESS { + ipSecCompTransformAlgorithm, + ipSecCompTransformDictionarySize, + ipSecCompTransformPrivateAlgorithm, + ipSecCompTransformVendorId, + ipSecCompTransformMaxLifetimeSeconds, + ipSecCompTransformMaxLifetimeKilobytes + } + ::= { ipSecCompTransformTable 1 } + + IpSecCompTransformEntry ::= SEQUENCE { + ipSecCompTransformPrid InstanceId, + ipSecCompTransformAlgorithm INTEGER, + ipSecCompTransformDictionarySize Unsigned16, + ipSecCompTransformPrivateAlgorithm Unsigned32, + ipSecCompTransformVendorId OCTET STRING, + ipSecCompTransformMaxLifetimeSeconds Unsigned32, + ipSecCompTransformMaxLifetimeKilobytes Unsigned32 + } + + ipSecCompTransformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCompTransformEntry 1 } + + ipSecCompTransformAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + oui(1), + deflate(2), + lzs(3) + } + STATUS current + DESCRIPTION + "Specifies the transform ID of the IPCOMP compression algorithm to + propose." + ::= { ipSecCompTransformEntry 2 } + + ipSecCompTransformDictionarySize OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the log2 maximum size of the dictionary for the + compression algorithm. For compression algorithms that have pre- + defined dictionary sizes, this value is ignored." + ::= { ipSecCompTransformEntry 3 } + + ipSecCompTransformPrivateAlgorithm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies a private vendor-specific compression algorithm." + ::= { ipSecCompTransformEntry 4 } + + ipSecCompTransformVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the vendor ID for vendor-defined transforms." + ::= { ipSecCompTransformEntry 5 } + + ipSecCompTransformMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecCompTransformEntry 6 } + + ipSecCompTransformMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecCompTransformEntry 7 } + + + -- + -- + -- The ipSecIkeRuleTable + -- + + ipSecIkeRuleTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeRuleEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE rules. This table is required only when specifying: + + - Multiple IKE phase one actions (e.g., with different exchange + modes) that are associated with one IPsec association. These + actions are to be tried in sequence till one success. + + - IKE phase one actions that start automatically. + + Support of this table is optional." + ::= { ipSecIkeAssociation 1 } + + ipSecIkeRuleEntry OBJECT-TYPE + SYNTAX IpSecIkeRuleEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeRulePrid } + UNIQUENESS { + ipSecIkeRuleIfName, + ipSecIkeRuleRoles, + ipSecIkeRuleIkeActionSetId, + ipSecIkeRuleActionExecutionStrategy, + ipSecIkeRuleLimitNegotiation, + ipSecIkeRuleAutoStart + } + ::= { ipSecIkeRuleTable 1 } + + IpSecIkeRuleEntry ::= SEQUENCE { + ipSecIkeRulePrid InstanceId, + ipSecIkeRuleIfName SnmpAdminString, + ipSecIkeRuleRoles RoleCombination, + ipSecIkeRuleIkeActionSetId TagReferenceId, + ipSecIkeRuleActionExecutionStrategy INTEGER, + ipSecIkeRuleLimitNegotiation INTEGER, + ipSecIkeRuleAutoStart TruthValue, + ipSecIkeRuleIpSecRuleTimePeriodGroupId TagReferenceId + } + + ipSecIkeRulePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeRuleEntry 1 } + + ipSecIkeRuleIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this IKE rule applies. The + interface capability name specified by this attribute must exist + in the frwkIfCapSetTable [FR-PIB] prior to association with an + instance of this class. + + This attribute MUST be ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkeRuleEntry 2 } + + ipSecIkeRuleRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "Specifies the role combination of the interface to which this IKE + rule should apply. There must exist an instance in the + frwkIfCapSetRoleComboTable [FR-PIB] specifying this role + combination, together with the interface capability set specified + by ipSecIkeRuleIfName, prior to association with an instance of + this class. + + This attribute MUST be ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkeRuleEntry 3 } + + ipSecIkeRuleIkeActionSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIkeActionSetActionSetId } + STATUS current + DESCRIPTION + "Identifies a set of IKE actions to be associated with this rule." + ::= { ipSecIkeRuleEntry 4 } + + ipSecIkeRuleActionExecutionStrategy OBJECT-TYPE + SYNTAX INTEGER { + doAll(1), + doUntilSuccess(2) + } + STATUS current + DESCRIPTION + "Specifies the strategy to be used in executing the sequenced + actions in the action set identified by ipSecRuleIpSecActionSetId. + + DoAll (1) causes the execution of all the actions in the action + set according to their defined precedence order. The precedence + order is specified by the ipSecActionSetOrder in + ipSecIkeActionSetTable. + + DoUntilSuccess (2) causes the execution of actions according to + their defined precedence order until a successful execution of a + single action. The precedence order is specified by the + ipSecActionSetOrder in ipSecIkeActionSetTable." + ::= { ipSecIkeRuleEntry 5 } + + ipSecIkeRuleLimitNegotiation OBJECT-TYPE + SYNTAX INTEGER { + initiator(1), + responder(2), + both(3) + } + STATUS current + DESCRIPTION + "Limits the negotiation method. Before proceeding with a phase 1 + negotiation, this property is checked to determine if the + negotiation role of the rule matches that defined for the + negotiation being undertaken (e.g., Initiator, Responder, or + Both). If this check fails (e.g. the current role is IKE responder + while the rule specifies IKE initiator), then the IKE negotiation + is stopped. Note that this only applies to new IKE phase 1 + negotiations and has no effect on either renegotiation or refresh + operations with peers for which an established SA already exists." + ::= { ipSecIkeRuleEntry 6 } + + ipSecIkeRuleAutoStart OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates if this rule should be automatically executed." + ::= { ipSecIkeRuleEntry 7 } + + ipSecIkeRuleIpSecRuleTimePeriodGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecRuleTimePeriodSetRuleTimePeriodSetId } + STATUS current + DESCRIPTION + "Identifies a rule time period set, specified in + ipSecRuleTimePeriodSetTable, that is associated with this rule. + + A value of zero indicates that this rule is always valid." + ::= { ipSecIkeRuleEntry 8 } + + + -- + -- + -- The ipSecIkeActionSetTable + -- + + ipSecIkeActionSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeActionSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE action sets." + ::= { ipSecIkeAssociation 2 } + + ipSecIkeActionSetEntry OBJECT-TYPE + SYNTAX IpSecIkeActionSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeActionSetPrid } + UNIQUENESS { + ipSecIkeActionSetActionSetId, + ipSecIkeActionSetActionId, + ipSecIkeActionSetOrder + } + ::= { ipSecIkeActionSetTable 1 } + + IpSecIkeActionSetEntry ::= SEQUENCE { + ipSecIkeActionSetPrid InstanceId, + ipSecIkeActionSetActionSetId TagId, + ipSecIkeActionSetActionId Prid, + ipSecIkeActionSetOrder Unsigned16 + } + + ipSecIkeActionSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeActionSetEntry 1 } + + ipSecIkeActionSetActionSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IKE action set is composed of one or more IKE actions. Each + action belonging to the same set has the same ActionSetId." + ::= { ipSecIkeActionSetEntry 2 } + + ipSecIkeActionSetActionId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIkeAssociationTable." + ::= { ipSecIkeActionSetEntry 3 } + + ipSecIkeActionSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the precedence order of the action within the action + set. An action with a smaller precedence order is to be tried + before one with a larger precedence order. " + ::= { ipSecIkeActionSetEntry 4 } + + + -- + -- + -- The ipSecIkeAssociationTable + -- + + ipSecIkeAssociationTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeAssociationEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE associations." + ::= { ipSecIkeAssociation 3 } + + ipSecIkeAssociationEntry OBJECT-TYPE + SYNTAX IpSecIkeAssociationEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeAssociationPrid } + UNIQUENESS { + ipSecIkeAssociationMinLiftetimeSeconds, + ipSecIkeAssociationMinLifetimeKilobytes, + ipSecIkeAssociationIdleDurationSeconds, + ipSecIkeAssociationExchangeMode, + ipSecIkeAssociationUseIkeIdentityType, + ipSecIkeAssociationUseIkeIdentityValue, + ipSecIkeAssociationIkePeerEndpoint, + ipSecIkeAssociationPresharedKey, + ipSecIkeAssociationVendorId, + ipSecIkeAssociationAggressiveModeGroupId, + ipSecIkeAssociationLocalCredentialId, + ipSecIkeAssociationDoActionLogging, + ipSecIkeAssociationIkeProposalSetId + } + ::= { ipSecIkeAssociationTable 1 } + + IpSecIkeAssociationEntry ::= SEQUENCE { + ipSecIkeAssociationPrid InstanceId, + ipSecIkeAssociationMinLiftetimeSeconds Unsigned32, + ipSecIkeAssociationMinLifetimeKilobytes Unsigned32, + ipSecIkeAssociationIdleDurationSeconds Unsigned32, + ipSecIkeAssociationExchangeMode INTEGER, + ipSecIkeAssociationUseIkeIdentityType INTEGER, + ipSecIkeAssociationUseIkeIdentityValue OCTET STRING, + ipSecIkeAssociationIkePeerEndpoint ReferenceId, + ipSecIkeAssociationPresharedKey OCTET STRING, + ipSecIkeAssociationVendorId OCTET STRING, + ipSecIkeAssociationAggressiveModeGroupId Unsigned16, + ipSecIkeAssociationLocalCredentialId TagReferenceId, + ipSecIkeAssociationDoActionLogging TruthValue, + ipSecIkeAssociationIkeProposalSetId TagReferenceId + } + + ipSecIkeAssociationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeAssociationEntry 1 } + + ipSecIkeAssociationMinLiftetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum SA seconds lifetime that will be accepted + from a peer while negotiating an SA based upon this action. + + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecIkeAssociationEntry 2 } + + ipSecIkeAssociationMinLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the minimum kilobyte lifetime that will be accepted + from a negotiating peer while negotiating an SA based upon this + action. + + A value of zero indicates that there is no minimum lifetime + enforced." + ::= { ipSecIkeAssociationEntry 3 } + + ipSecIkeAssociationIdleDurationSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies how long, in seconds, a security association may remain + unused before it is deleted. + + A value of zero indicates that idle detection should not be used + for the security association (only the seconds and kilobyte + lifetimes will be used)." + ::= { ipSecIkeAssociationEntry 4 } + + ipSecIkeAssociationExchangeMode OBJECT-TYPE + SYNTAX INTEGER { + baseMode(1), + mainMode(2), + aggressiveMode(4) + } + STATUS current + DESCRIPTION + "Specifies the negotiation mode that the IKE server will use for + phase one." + ::= { ipSecIkeAssociationEntry 5 } + + ipSecIkeAssociationUseIkeIdentityType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the type of IKE identity to use during IKE phase one + negotiation." + ::= { ipSecIkeAssociationEntry 6 } + + ipSecIkeAssociationUseIkeIdentityValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the ID payload value to be provided to the peer during + IKE phase one negotiation." + ::= { ipSecIkeAssociationEntry 7 } + + ipSecIkeAssociationIkePeerEndpoint OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIkePeerEndpointEntry } + STATUS current + DESCRIPTION + "Pointer to a valid instance in the ipSecIkePeerEndpointTable to + indicate an IKE peer endpoint." + ::= { ipSecIkeAssociationEntry 8 } + + ipSecIkeAssociationPresharedKey OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "This attribute specifies the preshared key or secret to use for + IKE authentication. This is the key for all the IKE proposals of + this association that set ipSecIkeProposalAuthenticationMethod to + presharedKey(1)." + ::= { ipSecIkeAssociationEntry 9 } + + ipSecIkeAssociationVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to be used in the Vendor ID payload. + + A value of NULL means that Vendor ID payload will be neither + generated nor accepted. A non-NULL value means that a Vendor ID + payload will be generated (when acting as an initiator) or is + expected (when acting as a responder). " + ::= { ipSecIkeAssociationEntry 10 } + + ipSecIkeAssociationAggressiveModeGroupId OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the group ID to be used for aggressive mode. This + attribute is ignored unless the attribute + ipSecIkeAssociationExchangeMode is set to 4 (aggressive mode). If + the value of this attribute is from the vendor-specific range + (32768-65535), this attribute qualifies the group number." + ::= { ipSecIkeAssociationEntry 11 } + + ipSecIkeAssociationLocalCredentialId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialSetSetId } + STATUS current + DESCRIPTION + "Indicates a group of credentials. One of the credentials in the + group MUST be used when establishing an IKE association with the + peer endpoint." + ::= { ipSecIkeAssociationEntry 12 } + + ipSecIkeAssociationDoActionLogging OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Specifies whether a log message is to be generated when the + negotiation is attempted (with the success or failure result)." + ::= { ipSecIkeAssociationEntry 13 } + + ipSecIkeAssociationIkeProposalSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecIkeProposalSetProposalSetId } + STATUS current + DESCRIPTION + "Identifies a set of IKE proposals that is associated with this + IKE association." + ::= { ipSecIkeAssociationEntry 14 } + + + -- + -- + -- The ipSecIkeProposalSetTable + -- + + ipSecIkeProposalSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeProposalSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE proposal sets. Proposals within a set are ORed with + preference order. " + ::= { ipSecIkeAssociation 4 } + + ipSecIkeProposalSetEntry OBJECT-TYPE + SYNTAX IpSecIkeProposalSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeProposalSetPrid } + UNIQUENESS { + ipSecIkeProposalSetProposalSetId, + ipSecIkeProposalSetProposalId, + ipSecIkeProposalSetOrder + } + ::= { ipSecIkeProposalSetTable 1 } + + IpSecIkeProposalSetEntry ::= SEQUENCE { + ipSecIkeProposalSetPrid InstanceId, + ipSecIkeProposalSetProposalSetId TagId, + ipSecIkeProposalSetProposalId ReferenceId, + ipSecIkeProposalSetOrder Unsigned16 + } + + ipSecIkeProposalSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeProposalSetEntry 1 } + + ipSecIkeProposalSetProposalSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IKE proposal set is composed of one or more IKE proposals. + Each proposal belonging to the same set has the same + ProposalSetId. " + ::= { ipSecIkeProposalSetEntry 2 } + + ipSecIkeProposalSetProposalId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIkeProposalEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIkeProposalTable." + ::= { ipSecIkeProposalSetEntry 3 } + + ipSecIkeProposalSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the proposal + identified by ipSecIkeProposalSetProposalId in a proposal set. The + proposal set is identified by ipSecIkeProposalSetProposalSetId. + Proposals within a set are ORed with preference order. A smaller + integer value indicates a higher preference." + ::= { ipSecIkeProposalSetEntry 4 } + + + -- + -- + -- The ipSecIkeProposalTable + -- + + ipSecIkeProposalTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkeProposalEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE proposals." + ::= { ipSecIkeAssociation 5 } + + ipSecIkeProposalEntry OBJECT-TYPE + SYNTAX IpSecIkeProposalEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkeProposalPrid } + UNIQUENESS { + ipSecIkeProposalMaxLifetimeSeconds, + ipSecIkeProposalMaxLifetimeKilobytes, + ipSecIkeProposalCipherAlgorithm, + ipSecIkeProposalHashAlgorithm, + ipSecIkeProposalAuthenticationMethod, + ipSecIkeProposalPrfAlgorithm, + ipSecIkeProposalIkeDhGroup, + ipSecIkeProposalVendorId + } + ::= { ipSecIkeProposalTable 1 } + + IpSecIkeProposalEntry ::= SEQUENCE { + ipSecIkeProposalPrid InstanceId, + ipSecIkeProposalMaxLifetimeSeconds Unsigned32, + ipSecIkeProposalMaxLifetimeKilobytes Unsigned32, + ipSecIkeProposalCipherAlgorithm INTEGER, + ipSecIkeProposalHashAlgorithm INTEGER, + ipSecIkeProposalAuthenticationMethod INTEGER, + ipSecIkeProposalPrfAlgorithm Unsigned16, + ipSecIkeProposalIkeDhGroup Unsigned16, + ipSecIkeProposalVendorId OCTET STRING + } + + ipSecIkeProposalPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkeProposalEntry 1 } + + ipSecIkeProposalMaxLifetimeSeconds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum amount of time to propose for a security + association to remain valid. + + A value of zero indicates that the default of 8 hours be used. A + non-zero value indicates the maximum seconds lifetime." + ::= { ipSecIkeProposalEntry 2 } + + ipSecIkeProposalMaxLifetimeKilobytes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the maximum kilobyte lifetime to propose for a security + association to remain valid. + + A value of zero indicates that there should be no maximum kilobyte + lifetime. A non-zero value specifies the desired kilobyte + lifetime." + ::= { ipSecIkeProposalEntry 3 } + + ipSecIkeProposalCipherAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + des-CBC(1), + idea-CBC(2), + blowfish-CBC(3), + rc5-R16-B64-CBC(4), + tripleDes-CBC(5), + cast-CBC(6) + } + STATUS current + DESCRIPTION + "Specifies the encryption algorithm to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 4 } + + ipSecIkeProposalHashAlgorithm OBJECT-TYPE + SYNTAX INTEGER { + md5(1), + sha-1(2), + tiger(3) + } + STATUS current + DESCRIPTION + "Specifies the hash algorithm to propose for the IKE association." + ::= { ipSecIkeProposalEntry 5 } + + ipSecIkeProposalAuthenticationMethod OBJECT-TYPE + SYNTAX INTEGER { + presharedKey(1), + dssSignatures(2), + rsaSignatures(3), + rsaEncryption(4), + revisedRsaEncryption(5), + kerberos(6) + } + STATUS current + DESCRIPTION + "Specifies the authentication method to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 6 } + + ipSecIkeProposalPrfAlgorithm OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the Psuedo-Random Function (PRF) to propose for the IKE + association." + ::= { ipSecIkeProposalEntry 7 } + + ipSecIkeProposalIkeDhGroup OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the Diffie-Hellman group to propose for the IKE + association. The value of this property is to be ignored when + doing aggressive mode." + ::= { ipSecIkeProposalEntry 8 } + + ipSecIkeProposalVendorId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Further qualifies the key exchange group. The property is + ignored unless the exchange is not in aggressive mode and the + property GroupID is in the vendor-specific range." + ::= { ipSecIkeProposalEntry 9 } + + + -- + -- + -- The ipSecIkePeerEndpointTable + -- + + ipSecIkePeerEndpointTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIkePeerEndpointEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IKE peer endpoints." + ::= { ipSecIkeAssociation 6 } + + ipSecIkePeerEndpointEntry OBJECT-TYPE + SYNTAX IpSecIkePeerEndpointEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIkePeerEndpointPrid } + UNIQUENESS { + ipSecIkePeerEndpointIdentityType, + ipSecIkePeerEndpointIdentityValue, + ipSecIkePeerEndpointAddressType, + ipSecIkePeerEndpointAddress, + ipSecIkePeerEndpointCredentialSetId + } + ::= { ipSecIkePeerEndpointTable 1 } + + IpSecIkePeerEndpointEntry ::= SEQUENCE { + ipSecIkePeerEndpointPrid InstanceId, + ipSecIkePeerEndpointIdentityType INTEGER, + ipSecIkePeerEndpointIdentityValue OCTET STRING, + ipSecIkePeerEndpointAddressType INTEGER, + ipSecIkePeerEndpointAddress OCTET STRING, + ipSecIkePeerEndpointCredentialSetId TagReferenceId + } + + ipSecIkePeerEndpointPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIkePeerEndpointEntry 1 } + + ipSecIkePeerEndpointIdentityType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the type of identity that MUST be provided by the peer + in the ID payload during IKE phase one negotiation." + ::= { ipSecIkePeerEndpointEntry 2 } + + ipSecIkePeerEndpointIdentityValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to be matched with the ID payload provided by + the peer during IKE phase one negotiation. + + Different Wildcards wildcard mechanisms can be used as well as the + prefix notation for IPv4 addresses depending on the ID payload: + + - an IdentityValue of "*@company.com" will match an user FQDN ID + payload of "JDOE@COMPANY.COM" + + - an IdentityValue of "*.company.com" will match a FQDN ID payload + of "WWW.COMPANY.COM" + + - an IdentityValue of "cn=*,ou=engineering,o=company,c=us" will + match a DER DN ID payload of "cn=John Doe, ou=engineering, + o=company, c=us" + + - an IdentityValue of "193.190.125.0/24" will match an IPv4 + address ID payload of 193.190.125.10. + + - an IdentityValue of "193.190.125.*" will also match an IPv4 + address ID payload of 193.190.125.10. + + The above wildcard mechanisms MUST be supported for all ID + payloads supported by the local IKE entity. The character "*" + replaces 0 or multiple instances of any character." + ::= { ipSecIkePeerEndpointEntry 3 } + + ipSecIkePeerEndpointAddressType OBJECT-TYPE + SYNTAX INTEGER { + ipV4(1), + ipV6(2) + } + STATUS current + DESCRIPTION + "Specifies IKE peer endpoint address type. This attribute MUST be + ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkePeerEndpointEntry 4 } + + ipSecIkePeerEndpointAddress OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies an endpoint address with which this PEP establishes IKE + association. This attribute is used only when the IKE association + is to be started automatically. Hence, this attribute MUST be + ignored if ipSecIkeRuleAutoStart is false." + ::= { ipSecIkePeerEndpointEntry 5 } + + ipSecIkePeerEndpointCredentialSetId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialSetSetId } + STATUS current + DESCRIPTION + "Identifies a set of credentials. Any one of the credentials in + the set is acceptable as the IKE peer credential." + ::= { ipSecIkePeerEndpointEntry 6 } + + + -- + -- + -- The ipSecCredentialSetTable + -- + + ipSecCredentialSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies credential sets. + + For IKE peer credentials, any one of the credentials in the set is + acceptable as peer credential during IEK phase 1 negotiation. For + IKE local credentials, any one of the credentials in the set can + be used in IKE phase 1 negotiation." + ::= { ipSecCredential 1 } + + ipSecCredentialSetEntry OBJECT-TYPE + SYNTAX IpSecCredentialSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialSetPrid } + UNIQUENESS { + ipSecCredentialSetPrid, + ipSecCredentialSetSetId, + ipSecCredentialSetCredentialId + } + ::= { ipSecCredentialSetTable 1 } + + IpSecCredentialSetEntry ::= SEQUENCE { + ipSecCredentialSetPrid InstanceId, + ipSecCredentialSetSetId TagId, + ipSecCredentialSetCredentialId ReferenceId + } + + ipSecCredentialSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialSetEntry 1 } + + ipSecCredentialSetSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "A credential set is composed of one or more credentials. Each + credential belonging to the same set has the same + CredentialSetId." + ::= { ipSecCredentialSetEntry 2 } + + ipSecCredentialSetCredentialId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecCredentialEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecCredentialTable." + ::= { ipSecCredentialSetEntry 3 } + + + -- + -- + -- The ipSecCredentialTable + -- + + ipSecCredentialTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies credentials." + ::= { ipSecCredential 2 } + + ipSecCredentialEntry OBJECT-TYPE + SYNTAX IpSecCredentialEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialPrid } + UNIQUENESS { + ipSecCredentialCredentialType, + ipSecCredentialFieldsId, + ipSecCredentialCrlDistributionPoint + } + ::= { ipSecCredentialTable 1 } + + IpSecCredentialEntry ::= SEQUENCE { + ipSecCredentialPrid InstanceId, + ipSecCredentialCredentialType INTEGER, + ipSecCredentialFieldsId TagReferenceId, + ipSecCredentialCrlDistributionPoint OCTET STRING + } + + ipSecCredentialPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialEntry 1 } + + ipSecCredentialCredentialType OBJECT-TYPE + SYNTAX INTEGER { + certificateX509(1), + kerberos-ticket(2) + } + STATUS current + DESCRIPTION + "Specifies the type of credential to be matched." + ::= { ipSecCredentialEntry 2 } + + ipSecCredentialFieldsId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecCredentialFieldsSetId } + STATUS current + DESCRIPTION + "Identifies a group of matching criteria to be used for the peer + credential. The identified criteria MUST all be satisfied." + ::= { ipSecCredentialEntry 3 } + + ipSecCredentialCrlDistributionPoint OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "When credential type is certificate X509, this attribute + identifies the Certificate Revocation List (CRL) distribution + point for this credential." + ::= { ipSecCredentialEntry 4 } + + + -- + -- + -- The ipSecCredentialFieldsTable + -- + + ipSecCredentialFieldsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecCredentialFieldsEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies sets of credential sub-fields and their values to be + matched against. " + ::= { ipSecCredential 3 } + + ipSecCredentialFieldsEntry OBJECT-TYPE + SYNTAX IpSecCredentialFieldsEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecCredentialFieldsPrid } + UNIQUENESS { + ipSecCredentialFieldsName, + ipSecCredentialFieldsValue, + ipSecCredentialFieldsSetId + } + ::= { ipSecCredentialFieldsTable 1 } + + IpSecCredentialFieldsEntry ::= SEQUENCE { + ipSecCredentialFieldsPrid InstanceId, + ipSecCredentialFieldsName OCTET STRING, + ipSecCredentialFieldsValue OCTET STRING, + ipSecCredentialFieldsSetId TagId + } + + ipSecCredentialFieldsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecCredentialFieldsEntry 1 } + + ipSecCredentialFieldsName OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the sub-field of the credential to match with. This is + the string representation of a X.509 certificate attribute, e.g.: + "serialNumber", "issuerName", "subjectName", etc.. + " + ::= { ipSecCredentialFieldsEntry 2 } + + ipSecCredentialFieldsValue OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies the value to match with for the sub-field identified by + ipSecCredentialFieldsName. A wildcard mechanism can be used in the + Value string. E.g., if the Name is "subjectName" then a Value of + "cn=*,ou=engineering,o=foo,c=be" will match successfully a + certificate whose subject attribute is "cn=Jane Doe, + ou=engineering, o=foo, c=be". The wildcard character '*' can be + used to represent 0 or several characters." + ::= { ipSecCredentialFieldsEntry 3 } + + ipSecCredentialFieldsSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the set this criteria belongs to. All criteria within a + set MUST all be satisfied." + ::= { ipSecCredentialFieldsEntry 4 } + + + -- + -- + -- The ipSecSelectorSetTable + -- + + ipSecSelectorSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecSelectorSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec selector sets." + ::= { ipSecSelector 1 } + + ipSecSelectorSetEntry OBJECT-TYPE + SYNTAX IpSecSelectorSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecSelectorSetPrid } + UNIQUENESS { + ipSecSelectorSetSelectorSetId, + ipSecSelectorSetSelectorId, + ipSecSelectorSetOrder + } + ::= { ipSecSelectorSetTable 1 } + + IpSecSelectorSetEntry ::= SEQUENCE { + ipSecSelectorSetPrid InstanceId, + ipSecSelectorSetSelectorSetId TagId, + ipSecSelectorSetSelectorId Prid, + ipSecSelectorSetOrder Unsigned16 + } + + ipSecSelectorSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecSelectorSetEntry 1 } + + ipSecSelectorSetSelectorSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPsec selector set is composed of one or more IPsec selectors. + Each selector belonging to the same set has the same + SelectorSetId." + ::= { ipSecSelectorSetEntry 2 } + + ipSecSelectorSetSelectorId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "A pointer to a valid instance in another table that describes + selectors. To use selectors defined in this IPsec PIB module, this + attribute MUST point to an instance in ipSecSelectorTable. This + attribute may also point to an instance in a selector or filter + table defined in other PIB modules." + ::= { ipSecSelectorSetEntry 3 } + + ipSecSelectorSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the selectors + identified by ipSecSelectorId within a selector set. The selector + set is identified by ipSecSelectorSetId. A smaller integer value + indicates a higher preference. All selectors constructed from the + instance pointed by ipSecSelectorId have the same order." + ::= { ipSecSelectorSetEntry 4 } + + + -- + -- + -- The ipSecSelectorTable + -- + + ipSecSelectorTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecSelectorEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPsec selectors. Each row in the selector table + represents multiple selectors. These selectors are obtained as + follows: + + 1. Substitute the ipSecSelectorSrcAddressGroupId with all the IP + addresses from the ipSecAddressTable whose ipSecAddressGroupId + matches the ipSecSelectorSrcAddressGroupId. + + 2. Substitute the ipSecSelectorDstAddressGroupId with all the IP + addresses from the ipSecAddressTable whose ipSecAddressGroupId + matches the ipSecSelectorDstAddressGroupId. + + 3. Substitute the ipSecSelectorSrcPortGroupId with all the ports + or ranges of port whose ipSecL4PortGroupId matches the + ipSecSelectorSrcPortGroupId. + + 4. Substitute the ipSecSelectorDstPortGroupId with all the ports + or ranges of port whose ipSecL4PortGroupId matches the + ipSecSelectorDstPortGroupId. + + 5. Construct all the possible combinations of the above four + fields. Then add to the combinations the ipSecSelectorProtocol, + ipSecSelectorDscp and ipSecSelectorFlowLabel attributes to form + all the selectors.el attributes to form the list of selectors. + + The relative order of the selectors constructed from a single row + is unspecified. " + ::= { ipSecSelector 2 } + + ipSecSelectorEntry OBJECT-TYPE + SYNTAX IpSecSelectorEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecSelectorPrid } + UNIQUENESS { + ipSecSelectorSrcAddressGroupId, + ipSecSelectorSrcPortGroupId, + ipSecSelectorDstAddressGroupId, + ipSecSelectorDstPortGroupId, + ipSecSelectorProtocol, + ipSecSelectorDscp, + ipSecSelectorFlowLabel + } + ::= { ipSecSelectorTable 1 } + + IpSecSelectorEntry ::= SEQUENCE { + ipSecSelectorPrid InstanceId, + ipSecSelectorSrcAddressGroupId TagReferenceId, + ipSecSelectorSrcPortGroupId TagReferenceId, + ipSecSelectorDstAddressGroupId TagReferenceId, + ipSecSelectorDstPortGroupId TagReferenceId, + ipSecSelectorProtocol INTEGER, + ipSecSelectorDscp INTEGER, + ipSecSelectorFlowLabel OCTET STRING + } + + ipSecSelectorPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecSelectorEntry 1 } + + ipSecSelectorSrcAddressGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAddressGroupId } + STATUS current + DESCRIPTION + "Indicates source addresses. All addresses in ipSecAddressTable + whose ipSecAddressGroupId matches this value are included as + source addresses. + + A value of zero indicates wildcard address, i.e., any address + matches." + ::= { ipSecSelectorEntry 2 } + + ipSecSelectorSrcPortGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecL4PortGroupId } + STATUS current + DESCRIPTION + "Indicates source layer 4 port numbers. All ports in ipSecL4Port + whose ipSecL4PortGroupId matches this value are included. + + + A value of zero indicates wildcard port, i.e., any port number + matches." + ::= { ipSecSelectorEntry 3 } + + ipSecSelectorDstAddressGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecAddressGroupId } + STATUS current + DESCRIPTION + "Indicates destination addresses. All addresses in + ipSecAddressTable whose ipSecAddressGroupId matches this value are + included as destination addresses. + + A value of zero indicates wildcard address, i.e., any address + matches." + ::= { ipSecSelectorEntry 4 } + + ipSecSelectorDstPortGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { ipSecL4PortGroupId } + STATUS current + DESCRIPTION + "Indicates destination layer 4 port numbers. All ports in + ipSecL4Port whose ipSecL4PortGroupId matches this value are + included. + + A value of zero indicates wildcard port, i.e., any port number + matches." + ::= { ipSecSelectorEntry 5 } + + ipSecSelectorProtocol OBJECT-TYPE + SYNTAX INTEGER (0..255) + STATUS current + DESCRIPTION + "Specifies IP protocol to match against a packet's protocol. A + value of zero indicates wildcard protocol, i.e., any protocol + matches." + ::= { ipSecSelectorEntry 6 } + + ipSecSelectorDscp OBJECT-TYPE + SYNTAX INTEGER (-1..63) + STATUS current + DESCRIPTION + "Specifies the DSCP value to match against the DSCP in a packet + header. A value of -1 indicates match all." + ::= { ipSecSelectorEntry 7 } + + ipSecSelectorFlowLabel OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + + + "Specifies the Flow Label to match against the Flow Label field in + the IPv6 header of a packet. This attribute MUST be a zero length + OCTET STRING when specifying selectors for IPv4 packets." + ::= { ipSecSelectorEntry 8 } + + + -- + -- + -- The ipSecAddressTable + -- + + ipSecAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecAddressEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IP addresses. To specify a single IP address, + ipSecAddressAddrMin MUST be specified. To specify a range of + addresses, both ipSecAddressAddrMin and ipSecAddressAddrMax MUST + be specified. To specify a subnet, both ipSecAddressAddrMin and + ipSecAddressAddrMask MUST be specified. " + ::= { ipSecSelector 3 } + + ipSecAddressEntry OBJECT-TYPE + SYNTAX IpSecAddressEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecAddressPrid } + UNIQUENESS { + ipSecAddressAddressType, + ipSecAddressAddrMask, + ipSecAddressAddrMin, + ipSecAddressAddrMax, + ipSecAddressGroupId + } + ::= { ipSecAddressTable 1 } + + IpSecAddressEntry ::= SEQUENCE { + ipSecAddressPrid InstanceId, + ipSecAddressAddressType INTEGER, + ipSecAddressAddrMask OCTET STRING, + ipSecAddressAddrMin OCTET STRING, + ipSecAddressAddrMax OCTET STRING, + ipSecAddressGroupId TagId + } + + ipSecAddressPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecAddressEntry 1 } + + ipSecAddressAddressType OBJECT-TYPE + SYNTAX INTEGER { + ipV4-Address(1), + fqdn(2), + user-Fqdn(3), + ipV4-Subnet(4), + ipV6-Address(5), + ipV6-Subnet(6), + ipV4-Address-Range(7), + ipV6-Address-Range(8), + der-Asn1-DN(9), + der-Asn1-GN(10), + key-Id(11) + } + STATUS current + DESCRIPTION + "Specifies the address type. " + ::= { ipSecAddressEntry 2 } + + ipSecAddressAddrMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A mask for the matching of the IP address. A zero bit in the mask + means that the corresponding bit in the address always matches. + + This attribute MUST be ignored when ipSecAddressAddressType is not + of IPv4 or IPv6 type." + ::= { ipSecAddressEntry 3 } + + ipSecAddressAddrMin OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "Specifies an IP address. " + ::= { ipSecAddressEntry 4 } + + ipSecAddressAddrMax OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "If a range of addresses is used then this specifies the ending + address. The type of this address must be the same as the + ipSecAddressAddrMin. + + If no range is specified then this attribute MUST be a zero length + OCTET STRING." + ::= { ipSecAddressEntry 5 } + + ipSecAddressGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the group this IP address, address range or subnet + address belongs to." + ::= { ipSecAddressEntry 6 } + + + -- + -- + -- The ipSecL4PortTable + -- + + ipSecL4PortTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecL4PortEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies layer four port numbers." + ::= { ipSecSelector 4 } + + ipSecL4PortEntry OBJECT-TYPE + SYNTAX IpSecL4PortEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecL4PortPrid } + UNIQUENESS { + ipSecL4PortPortMin, + ipSecL4PortPortMax, + ipSecL4PortGroupId + } + ::= { ipSecL4PortTable 1 } + + IpSecL4PortEntry ::= SEQUENCE { + ipSecL4PortPrid InstanceId, + ipSecL4PortPortMin Unsigned16, + ipSecL4PortPortMax Unsigned16, + ipSecL4PortGroupId TagId + } + + ipSecL4PortPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecL4PortEntry 1 } + + ipSecL4PortPortMin OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + + "Specifies a layer 4 port or the first layer 4 port number of a + range of ports. The value of this attribute must be equal or less + than that of ipSecL4PortPortMax. + + A value of zero indicates any port matches." + ::= { ipSecL4PortEntry 2 } + + ipSecL4PortPortMax OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the last layer 4 port in the range. If only a single + port is specified, the value of this attribute must be equal to + that of ipSecL4PortPortMin. Otherwise, the value of this attribute + MUST be greater than that specified by ipSecL4PortPortMin. + + If ipSecL4PortPortMin is zero, this attribute MUST be ignored." + ::= { ipSecL4PortEntry 3 } + + ipSecL4PortGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Specifies the group this port or port range belongs to." + ::= { ipSecL4PortEntry 4 } + + + -- + -- + -- The ipSecIpsoFilterSetTable + -- + + ipSecIpsoFilterSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIpsoFilterSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPSO filter sets." + ::= { ipSecSelector 5 } + + ipSecIpsoFilterSetEntry OBJECT-TYPE + SYNTAX IpSecIpsoFilterSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIpsoFilterSetPrid } + UNIQUENESS { + ipSecIpsoFilterSetFilterSetId, + ipSecIpsoFilterSetFilterId, + ipSecIpsoFilterSetOrder + } + ::= { ipSecIpsoFilterSetTable 1 } + + IpSecIpsoFilterSetEntry ::= SEQUENCE { + ipSecIpsoFilterSetPrid InstanceId, + ipSecIpsoFilterSetFilterSetId TagId, + ipSecIpsoFilterSetFilterId ReferenceId, + ipSecIpsoFilterSetOrder Unsigned16 + } + + ipSecIpsoFilterSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIpsoFilterSetEntry 1 } + + ipSecIpsoFilterSetFilterSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An IPSO filter set is composed of one or more IPSO filters. Each + filter belonging to the same set has the same FilterSetId." + ::= { ipSecIpsoFilterSetEntry 2 } + + ipSecIpsoFilterSetFilterId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecIpsoFilterEntry } + STATUS current + DESCRIPTION + "A pointer to a valid instance in the ipSecIpsoFilterTable." + ::= { ipSecIpsoFilterSetEntry 3 } + + ipSecIpsoFilterSetOrder OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "An integer that specifies the precedence order of the filter + identified by ipSecIpsoFilterSetFilterId within a filter set. The + filter set is identified by ipSecIpsoFilterSetFilterSetId. A + smaller integer value indicates a higher preference." + ::= { ipSecIpsoFilterSetEntry 4 } + + + -- + -- + -- The ipSecIpsoFilterTable + -- + + ipSecIpsoFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIpsoFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies IPSO filters." + ::= { ipSecSelector 6 } + + ipSecIpsoFilterEntry OBJECT-TYPE + SYNTAX IpSecIpsoFilterEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIpsoFilterPrid } + UNIQUENESS { + ipSecIpsoFilterMatchConditionType, + ipSecIpsoFilterClassificationLevel, + ipSecIpsoFilterProtectionAuthority + } + ::= { ipSecIpsoFilterTable 1 } + + IpSecIpsoFilterEntry ::= SEQUENCE { + ipSecIpsoFilterPrid InstanceId, + ipSecIpsoFilterMatchConditionType INTEGER, + ipSecIpsoFilterClassificationLevel INTEGER, + ipSecIpsoFilterProtectionAuthority INTEGER + } + + ipSecIpsoFilterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIpsoFilterEntry 1 } + + ipSecIpsoFilterMatchConditionType OBJECT-TYPE + SYNTAX INTEGER { + classificationLevel(1), + protectionAuthority(2) + } + STATUS current + DESCRIPTION + "Specifies the IPSO header field to be matched." + ::= { ipSecIpsoFilterEntry 2 } + + ipSecIpsoFilterClassificationLevel OBJECT-TYPE + SYNTAX INTEGER { + topSecret(61), + secret(90), + confidential(150), + unclassified(171) + } + STATUS current + DESCRIPTION + "Specifies the value for classification level to be matched + against. This attribute MUST be ignored if + ipSecIpsoFilterMatchConditionType is not 1 (classificationLevel)." + ::= { ipSecIpsoFilterEntry 3 } + + ipSecIpsoFilterProtectionAuthority OBJECT-TYPE + SYNTAX INTEGER { + genser(0), + siop-esi(1), + sci(2), + nsa(3), + doe(4) + } + STATUS current + DESCRIPTION + "Specifies the value for protection authority to be matched + against. This attribute MUST be ignored if + ipSecIpsoFilterMatchConditionType is not 2 (protectionAuthority). + " + ::= { ipSecIpsoFilterEntry 4 } + + + -- + -- + -- The ipSecRuleTimePeriodTable + -- + + ipSecRuleTimePeriodTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleTimePeriodEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies the time periods during which a policy rule is valid. + The values of the first five attributes in a row are ANDed + together to determine the validity period(s). If any of the five + attributes is not present, it is treated as having value always + enabled. " + ::= { ipSecPolicyTimePeriod 1 } + + ipSecRuleTimePeriodEntry OBJECT-TYPE + SYNTAX IpSecRuleTimePeriodEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRuleTimePeriodPrid } + UNIQUENESS { + ipSecRuleTimePeriodTimePeriod, + ipSecRuleTimePeriodMonthOfYearMask, + ipSecRuleTimePeriodDayOfMonthMask, + ipSecRuleTimePeriodDayOfWeekMask, + ipSecRuleTimePeriodTimeOfDayMask, + ipSecRuleTimePeriodLocalOrUtcTime + } + ::= { ipSecRuleTimePeriodTable 1 } + + IpSecRuleTimePeriodEntry ::= SEQUENCE { + ipSecRuleTimePeriodPrid InstanceId, + ipSecRuleTimePeriodTimePeriod OCTET STRING, + ipSecRuleTimePeriodMonthOfYearMask OCTET STRING, + ipSecRuleTimePeriodDayOfMonthMask OCTET STRING, + ipSecRuleTimePeriodDayOfWeekMask OCTET STRING, + ipSecRuleTimePeriodTimeOfDayMask OCTET STRING, + ipSecRuleTimePeriodLocalOrUtcTime INTEGER + } + + ipSecRuleTimePeriodPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify an instance of this class" + ::= { ipSecRuleTimePeriodEntry 1 } + + ipSecRuleTimePeriodTimePeriod OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that identifies an overall range of calendar + dates and times over which a policy rule is valid. It reuses the + format for an explicit time period defined in RFC 2445 : a string + representing a starting date and time, in which the character 'T' + indicates the beginning of the time portion, followed by the + solidus character '/', followed by a similar string representing + an end date and time. The first date indicates the beginning of + the range, while the second date indicates the end. Thus, the + second date and time must be later than the first. Date/times are + expressed as substrings of the form yyyymmddThhmmss. + + There are also two special cases: + + - If the first date/time is replaced with the string + THISANDPRIOR, then the property indicates that a policy rule is + valid [from now] until the date/time that appears after the '/'. + + - If the second date/time is replaced with the string + THISANDFUTURE, then the property indicates that a policy rule + becomes valid on the date/time that appears before the '/', and + remains valid from that point on. + " + ::= { ipSecRuleTimePeriodEntry 2 } + + ipSecRuleTimePeriodMonthOfYearMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which months the policy is valid + for. The octet string is structured as follows: + + - a 4-octet length field, indicating the length of the entire + octet string; this field is always set to 0x00000006 for this + property; + + - a 2-octet field consisting of 12 bits identifying the 12 months + of the year, beginning with January and ending with December, + followed by 4 bits that are always set to '0'. For each month, + the value '1' indicates that the policy is valid for that month, + and the value '0' indicates that it is not valid. + + If this property is omitted, then the policy rule is treated as + valid for all twelve months." + ::= { ipSecRuleTimePeriodEntry 3 } + + ipSecRuleTimePeriodDayOfMonthMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which days of the month the policy + is valid for. The octet string is structured as follows: + + -a 4-octet length field, indicating the length of the entire octet + string; this field is always set to 0x0000000C for this property; + + -an 8-octet field consisting of 31 bits identifying the days of + the month counting from the beginning, followed by 31 more bits + identifying the days of the month counting from the end, followed + by 2 bits that are always set to '0'. For each day, the value '1' + indicates that the policy is valid for that day, and the value '0' + indicates that it is not valid. + + For months with fewer than 31 days, the digits corresponding to + days that the months do not have (counting in both directions) are + ignored. + " + ::= { ipSecRuleTimePeriodEntry 4 } + + ipSecRuleTimePeriodDayOfWeekMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies which days of the week the policy + is valid for. The octet string is structured as follows: + + - a 4-octet length field, indicating the length of the entire + octet string; this field is always set to 0x00000005 for this + property; + + - a 1-octet field consisting of 7 bits identifying the 7 days of + the week, beginning with Sunday and ending with Saturday, followed + by 1 bit that is always set to '0'. For each day of the week, the + value '1' indicates that the policy is valid for that day, and the + value '0' indicates that it is not valid. + " + ::= { ipSecRuleTimePeriodEntry 5 } + + ipSecRuleTimePeriodTimeOfDayMask OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An octet string that specifies a range of times in a day the + policy is valid for. It is formatted as follows: + + A time string beginning with the character 'T', followed by the + solidus character '/', followed by a second time string. The + first time indicates the beginning of the range, while the second + time indicates the end. Times are expressed as substrings of the + form Thhmmss. + + The second substring always identifies a later time than the first + substring. To allow for ranges that span midnight, however, the + value of the second string may be smaller than the value of the + first substring. Thus, T080000/T210000 identifies the range from + 0800 until 2100, while T210000/T080000 identifies the range from + 2100 until 0800 of the following day." + ::= { ipSecRuleTimePeriodEntry 6 } + + ipSecRuleTimePeriodLocalOrUtcTime OBJECT-TYPE + SYNTAX INTEGER { + localTime(1), + utcTime(2) + } + STATUS current + DESCRIPTION + "This property indicates whether the times represented in this + table represent local times or UTC times. There is no provision + for mixing of local times and UTC times: the value of this + property applies to all of the other time-related properties." + ::= { ipSecRuleTimePeriodEntry 7 } + + + -- + -- + -- The ipSecRuleTimePeriodSetTable + -- + + ipSecRuleTimePeriodSetTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecRuleTimePeriodSetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Specifies time period sets. The ipSecRuleTimePeriodTable can + specify only a single time period within a day. This table enables + the specification of multiple time periods within a day by + grouping them into one set. " + ::= { ipSecPolicyTimePeriod 2 } + + ipSecRuleTimePeriodSetEntry OBJECT-TYPE + SYNTAX IpSecRuleTimePeriodSetEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecRuleTimePeriodSetPrid } + UNIQUENESS { + ipSecRuleTimePeriodSetRuleTimePeriodSetId, + ipSecRuleTimePeriodSetRuleTimePeriodId + } + ::= { ipSecRuleTimePeriodSetTable 1 } + + IpSecRuleTimePeriodSetEntry ::= SEQUENCE { + ipSecRuleTimePeriodSetPrid InstanceId, + ipSecRuleTimePeriodSetRuleTimePeriodSetId TagId, + ipSecRuleTimePeriodSetRuleTimePeriodId ReferenceId + } + + ipSecRuleTimePeriodSetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify an instance of this class" + ::= { ipSecRuleTimePeriodSetEntry 1 } + + ipSecRuleTimePeriodSetRuleTimePeriodSetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An integer that uniquely identifies an ipSecRuleTimePeriod set. " + ::= { ipSecRuleTimePeriodSetEntry 2 } + + ipSecRuleTimePeriodSetRuleTimePeriodId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES {ipSecRuleTimePeriodEntry } + STATUS current + DESCRIPTION + "An integer that identifies an ipSecRuleTimePeriod, specified by + ipSecRuleTimePeriodPrid in the ipSecRuleTimePeriodTable, that is + included in this set." + ::= { ipSecRuleTimePeriodSetEntry 3 } + + + -- + -- + -- The ipSecIfCapsTable + -- + + ipSecIfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF IpSecIfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Specifies capabilities that may be associated with an interface + of a specific type. The instances of this table are referenced by + the frwkIfCapSetCapability attribute of the frwkIfCapSetTable [FR- + PIB]." + ::= { ipSecIfCapability 1 } + + ipSecIfCapsEntry OBJECT-TYPE + SYNTAX IpSecIfCapsEntry + STATUS current + DESCRIPTION + "Specifies an instance of this class" + PIB-INDEX { ipSecIfCapsPrid } + UNIQUENESS { + ipSecIfCapsDirection, + ipSecIfCapsMaxIpSecActions, + ipSecIfCapsMaxIkeActions + } + ::= { ipSecIfCapsTable 1 } + + IpSecIfCapsEntry ::= SEQUENCE { + ipSecIfCapsPrid InstanceId, + ipSecIfCapsDirection INTEGER, + ipSecIfCapsMaxIpSecActions Unsigned16, + ipSecIfCapsMaxIkeActions Unsigned16 + } + + ipSecIfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of this + class." + ::= { ipSecIfCapsEntry 1 } + + ipSecIfCapsDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2), + bi-directional(3) + } + STATUS current + DESCRIPTION + "Specifies the direction for which this capability applies." + ::= { ipSecIfCapsEntry 2 } + + ipSecIfCapsMaxIpSecActions OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the maximum number of actions an IPsec action set may + contain. IPsec action sets are specified by the + ipSecActionSetTable. + + A value of zero indicates that there is no maximum limit." + ::= { ipSecIfCapsEntry 3 } + + ipSecIfCapsMaxIkeActions OBJECT-TYPE + SYNTAX Unsigned16 + STATUS current + DESCRIPTION + "Specifies the maximum number of actions an IKE action set may + contain. IKE action sets are specified by the + ipSecIkeActionSetTable. + + A value of zero indicates that there is no maximum limit." + ::= { ipSecIfCapsEntry 4 } + + + -- + -- + -- Conformance Section + -- + + ipSecPolicyPibConformanceCompliances + OBJECT IDENTIFIER ::= { ipSecPolicyPibConformance 1 } + + ipSecPolicyPibConformanceGroups + OBJECT IDENTIFIER ::= { ipSecPolicyPibConformance 2 } + + IPsecPibCompilance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + " Compliance statement" + MODULE �- this module + MANDATORY-GROUPS { + ipSecRuleGroup, + ipSecActionSetGroup, + ipSecStaticActionGroup, + ipSecNegotiationActionGroup, + ipSecAssociationGroup, + ipSecProposalSetGroup, + ipSecProposalGroup, + ipSecAhTransformSetGroup, + ipSecAhTransformGroup, + ipSecEspTransformSetGroup, + ipSecEspTransformGroup, + ipSecCompTransformSetGroup, + ipSecCompTransformGroup, + ipSecIkeAssociationGroup, + ipSecIkeProposalSetGroup, + ipSecIkeProposalGroup, + ipSecIkePeerEndpointGroup, + ipSecCredentialSetGroup, + ipSecCredentialGroup, + ipSecCredentialFieldsGroup, + ipSecSelectorSetGroup, + ipSecSelectorGroup, + ipSecAddressGroup, + ipSecL4PortGroup, + ipSecIfCapsGroup + } + + GROUP ipSecIkeRuleGroup + DESCRIPTION + "This group is mandatory if any of the following is supported: 1) + multiple IKE phase one actions (e.g., with different exchange + modes) are associated with an IPsec rule. These actions are to be + tried in sequence till one success; 2) IKE phase one actions that + start automatically." + + GROUP ipSecIkeActionSetGroup + DESCRIPTION + "This group is mandatory if any of the following is supported: 1) + multiple IKE phase one actions (e.g., with different exchange + modes) are associated with an IPsec rule. These actions are to be + tried in sequence till one success; 2) IKE phase one actions that + start automatically." + + GROUP ipSecIpsoFilterSetGroup + DESCRIPTION + "This group is mandatory if IPSO filter is supported." + + GROUP ipSecIpsoFilterGroup + DESCRIPTION + "This group is mandatory if IPSO filter is supported." + + GROUP ipSecRuleTimePeriodGroup + DESCRIPTION + "This group is mandatory if policy scheduling is supported." + + GROUP ipSecRuleTimePeriodSetGroup + DESCRIPTION + "This group is mandatory if policy scheduling is supported." + + OBJECT ipSecRuleipSecIpsoFilterSetId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleLimitNegotiation + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleAutoStart + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleIpSecRuleTimePeriodGroupId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecActionSetDoActionLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecActionSetDoPacketLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationMinLifetimeSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationMinLifetimeKilobytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationIdleDurationSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationUseKeyExchangeGroup + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAssociationGranularity + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformUseReplayPrevention + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformReplayPreventionWindowSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecAhTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformCipherKeyRounds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformCipherKeyLength + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformUseReplayPrevention + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformReplayPreventionWindowSize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecEspTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformDictionarySize + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformPrivateAlgorithm + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecCompTransformVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationMinLiftetimeSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationMinLifetimeKilobytes + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationIdleDurationSeconds + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationPresharedKey + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationAggressiveModeGroupId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationLocalCredentialId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeAssociationDoActionLogging + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeProposalPrfAlgorithm + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkeProposalVendorId + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkePeerEndpointAddressType + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIkePeerEndpointAddress + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecIfCapsMaxIkeActions + PIB-MIN-ACCESS not-accessible + DESCRIPTION + " Support of this attribute is optional" + + OBJECT ipSecRuleActionExecutionStrategy + SYNTAX INTEGER { + doAll(1) + } + DESCRIPTION + " Support of doUntilSuccess(2) is not required" + + OBJECT ipSecStaticActionAction + SYNTAX INTEGER { + byPass(1), + discard(2), + preConfiguredTransport(4), + preConfiguredTunnel(5) + } + DESCRIPTION + " Support of ikeRejection(3) is not required" + + ::= { ipSecPolicyPibConformanceCompliances 1 } + + ipSecRuleGroup OBJECT-GROUP + OBJECTS { + ipSecRuleIfName, + ipSecRuleRoles, + ipSecRuleDirection, + ipSecRuleIpSecSelectorSetId, + ipSecRuleipSecIpsoFilterSetId, + ipSecRuleIpSecActionSetId, + ipSecRuleActionExecutionStrategy, + ipSecRuleOrder, + ipSecRuleLimitNegotiation, + ipSecRuleAutoStart, + ipSecRuleIpSecRuleTimePeriodGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTable." + ::= { ipSecPolicyPibConformanceGroups 1 } + + ipSecActionSetGroup OBJECT-GROUP + OBJECTS { + ipSecActionSetActionSetId, + ipSecActionSetActionId, + ipSecActionSetDoActionLogging, + ipSecActionSetDoPacketLogging, + ipSecActionSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecActionSetTable." + ::= { ipSecPolicyPibConformanceGroups 2 } + + ipSecStaticActionGroup OBJECT-GROUP + OBJECTS { + ipSecStaticActionAction, + ipSecStaticActionTunnelEndpointId, + ipSecStaticActionDfHandling, + ipSecStaticActionSpi, + ipSecStaticActionLifetimeSeconds, + ipSecStaticActionLifetimeKilobytes, + ipSecStaticActionSaTransformId + } + STATUS current + DESCRIPTION + "Objects from the ipSecStaticActionTable." + ::= { ipSecPolicyPibConformanceGroups 3 } + + ipSecNegotiationActionGroup OBJECT-GROUP + OBJECTS { + ipSecNegotiationActionAction, + ipSecNegotiationActionTunnelEndpointId, + ipSecNegotiationActionDfHandling, + ipSecNegotiationActionIpSecSecurityAssociationId, + ipSecNegotiationActionKeyExchangeId + } + STATUS current + DESCRIPTION + "Objects from the ipSecNegotiationActionTable." + ::= { ipSecPolicyPibConformanceGroups 4 } + + ipSecAssociationGroup OBJECT-GROUP + OBJECTS { + ipSecAssociationMinLifetimeSeconds, + ipSecAssociationMinLifetimeKilobytes, + ipSecAssociationIdleDurationSeconds, + ipSecAssociationUsePfs, + ipSecAssociationVendorId, + ipSecAssociationUseKeyExchangeGroup, + ipSecAssociationDhGroup, + ipSecAssociationGranularity, + ipSecAssociationProposalSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecAssociationTable." + ::= { ipSecPolicyPibConformanceGroups 5 } + + ipSecProposalSetGroup OBJECT-GROUP + OBJECTS { + ipSecProposalSetProposalSetId, + ipSecProposalSetProposalId, + ipSecProposalSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecProposalSetTable." + ::= { ipSecPolicyPibConformanceGroups 6 } + + ipSecProposalGroup OBJECT-GROUP + OBJECTS { + ipSecProposalEspTransformSetId, + ipSecProposalAhTransformSetId, + ipSecProposalCompTransformSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecProposalTable." + ::= { ipSecPolicyPibConformanceGroups 7 } + + ipSecAhTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecAhTransformSetTransformSetId, + ipSecAhTransformSetTransformId, + ipSecAhTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecAhTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 8 } + + ipSecAhTransformGroup OBJECT-GROUP + OBJECTS { + ipSecAhTransformTransformId, + ipSecAhTransformIntegrityKey, + ipSecAhTransformUseReplayPrevention, + ipSecAhTransformReplayPreventionWindowSize, + ipSecAhTransformVendorId, + ipSecAhTransformMaxLifetimeSeconds, + ipSecAhTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecAhTransformTable." + ::= { ipSecPolicyPibConformanceGroups 9 } + + ipSecEspTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecEspTransformSetTransformSetId, + ipSecEspTransformSetTransformId, + ipSecEspTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecEspTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 10 } + + ipSecEspTransformGroup OBJECT-GROUP + OBJECTS { + ipSecEspTransformIntegrityTransformId, + ipSecEspTransformCipherTransformId, + ipSecEspTransformIntegrityKey, + ipSecEspTransformCipherKey, + ipSecEspTransformCipherKeyRounds, + ipSecEspTransformCipherKeyLength, + ipSecEspTransformUseReplayPrevention, + ipSecEspTransformReplayPreventionWindowSize, + ipSecEspTransformVendorId, + ipSecEspTransformMaxLifetimeSeconds, + ipSecEspTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecEspTransformTable." + ::= { ipSecPolicyPibConformanceGroups 11 } + + ipSecCompTransformSetGroup OBJECT-GROUP + OBJECTS { + ipSecCompTransformSetTransformSetId, + ipSecCompTransformSetTransformId, + ipSecCompTransformSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecCompTransformSetTable." + ::= { ipSecPolicyPibConformanceGroups 12 } + + ipSecCompTransformGroup OBJECT-GROUP + OBJECTS { + ipSecCompTransformAlgorithm, + ipSecCompTransformDictionarySize, + ipSecCompTransformPrivateAlgorithm, + ipSecCompTransformVendorId, + ipSecCompTransformMaxLifetimeSeconds, + ipSecCompTransformMaxLifetimeKilobytes + } + STATUS current + DESCRIPTION + "Objects from the ipSecCompTransformTable." + ::= { ipSecPolicyPibConformanceGroups 13 } + + ipSecIkeRuleGroup OBJECT-GROUP + OBJECTS { + ipSecIkeRuleIfName, + ipSecIkeRuleRoles, + ipSecIkeRuleIkeActionSetId, + ipSecIkeRuleActionExecutionStrategy, + ipSecIkeRuleLimitNegotiation, + ipSecIkeRuleAutoStart, + ipSecIkeRuleIpSecRuleTimePeriodGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeRuleTable." + ::= { ipSecPolicyPibConformanceGroups 14 } + + ipSecIkeActionSetGroup OBJECT-GROUP + OBJECTS { + ipSecIkeActionSetActionSetId, + ipSecIkeActionSetActionId, + ipSecIkeActionSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeActionSetTable." + ::= { ipSecPolicyPibConformanceGroups 15 } + + ipSecIkeAssociationGroup OBJECT-GROUP + OBJECTS { + ipSecIkeAssociationMinLiftetimeSeconds, + ipSecIkeAssociationMinLifetimeKilobytes, + ipSecIkeAssociationIdleDurationSeconds, + ipSecIkeAssociationExchangeMode, + ipSecIkeAssociationUseIkeIdentityType, + ipSecIkeAssociationUseIkeIdentityValue, + ipSecIkeAssociationIkePeerEndpoint, + ipSecIkeAssociationPresharedKey, + ipSecIkeAssociationVendorId, + ipSecIkeAssociationAggressiveModeGroupId, + ipSecIkeAssociationLocalCredentialId, + ipSecIkeAssociationDoActionLogging, + ipSecIkeAssociationIkeProposalSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeAssociationTable." + ::= { ipSecPolicyPibConformanceGroups 16 } + + ipSecIkeProposalSetGroup OBJECT-GROUP + OBJECTS { + ipSecIkeProposalSetProposalSetId, + ipSecIkeProposalSetProposalId, + ipSecIkeProposalSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeProposalSetTable." + ::= { ipSecPolicyPibConformanceGroups 17 } + + ipSecIkeProposalGroup OBJECT-GROUP + OBJECTS { + ipSecIkeProposalMaxLifetimeSeconds, + ipSecIkeProposalMaxLifetimeKilobytes, + ipSecIkeProposalCipherAlgorithm, + ipSecIkeProposalHashAlgorithm, + ipSecIkeProposalAuthenticationMethod, + ipSecIkeProposalPrfAlgorithm, + ipSecIkeProposalIkeDhGroup, + ipSecIkeProposalVendorId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkeProposalTable." + ::= { ipSecPolicyPibConformanceGroups 18 } + + ipSecIkePeerEndpointGroup OBJECT-GROUP + OBJECTS { + ipSecIkePeerEndpointIdentityType, + ipSecIkePeerEndpointIdentityValue, + ipSecIkePeerEndpointAddressType, + ipSecIkePeerEndpointAddress, + ipSecIkePeerEndpointCredentialSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecIkePeerEndpointTable." + ::= { ipSecPolicyPibConformanceGroups 19 } + + ipSecCredentialSetGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialSetSetId, + ipSecCredentialSetCredentialId + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialSetTable." + ::= { ipSecPolicyPibConformanceGroups 20 } + + ipSecCredentialGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialCredentialType, + ipSecCredentialFieldsId, + ipSecCredentialCrlDistributionPoint + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialTable." + ::= { ipSecPolicyPibConformanceGroups 21 } + + ipSecCredentialFieldsGroup OBJECT-GROUP + OBJECTS { + ipSecCredentialFieldsName, + ipSecCredentialFieldsValue, + ipSecCredentialFieldsSetId + } + STATUS current + DESCRIPTION + "Objects from the ipSecCredentialFieldsTable." + ::= { ipSecPolicyPibConformanceGroups 22 } + + ipSecSelectorSetGroup OBJECT-GROUP + OBJECTS { + ipSecSelectorSetSelectorSetId, + ipSecSelectorSetSelectorId, + ipSecSelectorSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecSelectorSetTable." + ::= { ipSecPolicyPibConformanceGroups 23 } + + ipSecSelectorGroup OBJECT-GROUP + OBJECTS { + ipSecSelectorSrcAddressGroupId, + ipSecSelectorSrcPortGroupId, + ipSecSelectorDstAddressGroupId, + ipSecSelectorDstPortGroupId, + ipSecSelectorProtocol, + ipSecSelectorDscp, + ipSecSelectorFlowLabel + } + STATUS current + DESCRIPTION + "Objects from the ipSecSelectorTable." + ::= { ipSecPolicyPibConformanceGroups 24 } + + ipSecAddressGroup OBJECT-GROUP + OBJECTS { + ipSecAddressAddressType, + ipSecAddressAddrMask, + ipSecAddressAddrMin, + ipSecAddressAddrMax, + ipSecAddressGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecAddressTable." + ::= { ipSecPolicyPibConformanceGroups 25 } + + ipSecL4PortGroup OBJECT-GROUP + OBJECTS { + ipSecL4PortPortMin, + ipSecL4PortPortMax, + ipSecL4PortGroupId + } + STATUS current + DESCRIPTION + "Objects from the ipSecL4PortTable." + ::= { ipSecPolicyPibConformanceGroups 26 } + + ipSecIpsoFilterSetGroup OBJECT-GROUP + OBJECTS { + ipSecIpsoFilterSetFilterSetId, + ipSecIpsoFilterSetFilterId, + ipSecIpsoFilterSetOrder + } + STATUS current + DESCRIPTION + "Objects from the ipSecIpsoFilterSetTable." + ::= { ipSecPolicyPibConformanceGroups 27 } + + ipSecIpsoFilterGroup OBJECT-GROUP + OBJECTS { + ipSecIpsoFilterMatchConditionType, + ipSecIpsoFilterClassificationLevel, + ipSecIpsoFilterProtectionAuthority + } + STATUS current + DESCRIPTION + "Objects from the ipSecIpsoFilterTable." + ::= { ipSecPolicyPibConformanceGroups 28 } + + ipSecRuleTimePeriodGroup OBJECT-GROUP + OBJECTS { + ipSecRuleTimePeriodTimePeriod, + ipSecRuleTimePeriodMonthOfYearMask, + ipSecRuleTimePeriodDayOfMonthMask, + ipSecRuleTimePeriodDayOfWeekMask, + ipSecRuleTimePeriodTimeOfDayMask, + ipSecRuleTimePeriodLocalOrUtcTime + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTimePeriodTable." + ::= { ipSecPolicyPibConformanceGroups 29 } + + ipSecRuleTimePeriodSetGroup OBJECT-GROUP + OBJECTS { + ipSecRuleTimePeriodSetRuleTimePeriodSetId, + ipSecRuleTimePeriodSetRuleTimePeriodId + } + STATUS current + DESCRIPTION + "Objects from the ipSecRuleTimePeriodSetTable." + ::= { ipSecPolicyPibConformanceGroups 30 } + + ipSecIfCapsGroup OBJECT-GROUP + OBJECTS { + ipSecIfCapsDirection, + ipSecIfCapsMaxIpSecActions, + ipSecIfCapsMaxIkeActions + } + STATUS current + DESCRIPTION + "Objects from the ipSecIfCapsTable." + ::= { ipSecPolicyPibConformanceGroups 31 } + +END diff --git a/pibs/tubs/LOAD-BALANCING-PIB b/pibs/tubs/LOAD-BALANCING-PIB new file mode 100644 index 0000000..9b8c241 --- /dev/null +++ b/pibs/tubs/LOAD-BALANCING-PIB @@ -0,0 +1,572 @@ +LOAD-BALANCING-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, + OBJECT-IDENTITY, OBJECT-GROUP, Unsigned32 + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, + TagId, TagReferenceId, Prid + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + frwkIpFilterEntry + FROM FRAMEWORK-PIB; + +lbPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- Load Balancing Client Type + LAST-UPDATED "200102231000Z" + ORGANIZATION " WG" + CONTACT-INFO " + Harsha Hegde + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + E-Mail: shriharsha.hegde@intel.com + + Brad Stone + Resonate, Inc. + 385 Moffett Park Drive + Sunnyvale, CA 94089 + Phone: +1 408 548 5929 + Fax: +1 408 nnn nnnn + Email: bstone@resonate.com + " + DESCRIPTION + "This PIB module contains a set of provisioning classes + that describe load balancing policies." + ::= { ibrpib 22 } + + +-- +-- Classifier Classes +-- + +lbClassifierClasses OBJECT IDENTIFIER ::= { lbPolicyPib 1 } + +-- +-- Filter Table +-- + +lbFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of additional filters. The filters in + this table extend the filters in frwkBaseFilterTable. A + packet must match all the fields in a filter. Wildcards may + be specified for those fields that are not relevant." + + ::= { lbClassifierClasses 1 } + +lbFilterEntry OBJECT-TYPE + SYNTAX LbFilterEntry + STATUS current + DESCRIPTION + "An instance of this class describes a filter. " + + EXTENDS { frwkIpFilterEntry } + + ::= { lbFilterTable 1 } + +LbFilterEntry ::= SEQUENCE { + lbFilterUrlPrefix OCTET STRING, + lbFilterUrlDomain OCTET STRING, + lbFilterUrlSuffix OCTET STRING } + +lbFilterUrlPrefix OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the protocol. for + example, http,ftp. A `*' character is used to match any + string." + + ::= { lbFilterEntry 1 } + +lbFilterUrlDomain OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the domain. for + example, www.company.com. A `*' character is used to match + any string." + + ::= { lbFilterEntry 2 } + +lbFilterUrlSuffix OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the file name. for + example, index.html, mypic.jpg. A `*.*' string matches any + file, a `*.jpg' string matches all files with jpg extension, + and a `index.*' matches all `index' files with any + extension." + + ::= { lbFilterEntry 3 } + +-- +-- Filter Group Table +-- + +lbFilterGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbFilterGroupEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines Filter Groups. Each Group being an + ordered list of filters. Each instance of this class + identifies one filter of a group and the precedence order of + that filter with respect to other filters in the same + group." + + ::= { lbClassifierClasses 2 } + +lbFilterGroupEntry OBJECT-TYPE + SYNTAX LbFilterGroupEntry + STATUS current + DESCRIPTION + "An instance of filter group." + + PIB-INDEX { lbFilterGroupPrid } + + ::= { lbFilterGroupTable 1 } + +LbFilterGroupEntry ::= SEQUENCE { + lbFilterGroupPrid InstanceId, + lbFilterGroupId TagId, + lbFilterGroupFilterId ReferenceId, + lbFilterGroupPriority Unsigned32 } + +lbFilterGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbFilterGroupEntry class." + + ::= { lbFilterGroupEntry 1 } + +lbFilterGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An arbitrary integer that identifies the group of filters. + The same lbFilterGroupId is used in all lbFilterGroupEntry + instances that belong to a group." + + ::= { lbFilterGroupEntry 2 } + +lbFilterGroupFilterId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbFilterEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of filter. The filter with the same + Id must be present." + + ::= { lbFilterGroupEntry 3 } + +lbFilterGroupPriority OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An arbitrary integer index that specifies the position of + this filter in the filter group. A filter with a given + priority order is positioned in the filter group before one + with a higher-value priority. Priority values within a group + must be unique." + + ::= { lbFilterGroupEntry 4 } + + +-- +-- Capabilities Classes +-- + +lbCapabilitiesClasses OBJECT IDENTIFIER ::= { lbPolicyPib 2 } + +-- +-- Capabilities Table +-- + +lbCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbCapabilitiesEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table consists of load balancer capabilities. + Instances of this class are used by the PEP to notify PEP + capabilities and by the PDP to install policies. The PDP + must not install a capability not reported by the PEP " + + ::= { lbCapabilitiesClasses 1 } + +lbCapabilitiesEntry OBJECT-TYPE + SYNTAX LbCapabilitiesEntry + STATUS current + DESCRIPTION + "An instance of this class describes a set of capabilities + of the load balancer or the capabilities applied to a + service policy." + PIB-INDEX { lbCapPrid } + + ::= { lbCapabilitiesTable 1 } + +LbCapabilitiesEntry ::= SEQUENCE { + lbCapPrid InstanceId, + lbCapStickyMode BITS, + lbCapHttpReturnCodes BITS, + lbCapBalanceAlgorithm BITS, + lbCapAlgorithmParams Prid, + lbCapPreserveSrcAddr TruthValue, + lbCapDirectReturn TruthValue } + +lbCapPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbCapabilitiesEntry class." + + ::= { lbCapabilitiesEntry 1 } + +lbCapStickyMode OBJECT-TYPE + SYNTAX BITS { + cookieBased (1), + sourceAddressBased (2) } + STATUS current + DESCRIPTION + "Set of values indicating the type of Sticky Mode in this + capabilities set. When PEP notifies PDP, the bits indicate + the support of these mechanisms. When PDP installs policies, + the bits indicate what mechanism must be used." + + ::= { lbCapabilitiesEntry 2 } + +lbCapHttpReturnCodes OBJECT-TYPE + SYNTAX BITS { + http404(1), + http505(2) } + STATUS current + DESCRIPTION + "Set of values indicating the type of HTTP return codes that + the load balancer can interpret and redirect the request to + another server. When PEP notifies PDP, the bits indicate + the ability to interpret the HTTP return codes. When PDP + installs policies, the bits indicate enabling redirection on + any of those HTTP return codes." + + ::= { lbCapabilitiesEntry 3 } + +lbCapBalanceAlgorithm OBJECT-TYPE + SYNTAX BITS { + roundRobin(1), + weightedRoundRobin(2), + leastConnections(3), + weightedLeastConnections(4), + fastestServerResponse(5), + serverCpuUtilizaiton(6), + priorityToUser(7) } + STATUS current + DESCRIPTION + "Set of values indicating the type of server balance + algorithm. When PEP notifies PDP, the bits indicate all the + algorithms supported. When PDP installs policies the bits + indicate only one algorithm that must be used. Additional + parameters needed for the algorithm may be specified in + another PRC instance identified by the lbCapAlgorithmParams + attribute." + + ::= { lbCapabilitiesEntry 4 } + +lbCapAlgorithmParams OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to PRI that contains parameters needed for a + specific algorithm. The PRI pointed to must exist prior to + the installation of this class. + + TBD: define parameters classes for all existing algorithms." + + ::= { lbCapabilitiesEntry 5 } + +lbCapPreserveSrcAddr OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether Source Address must be preserved when + forwarding a request to server." + + ::= { lbCapabilitiesEntry 6 } + +lbCapDirectReturn OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether a response from data center server could + go directly to client bypassing the load balancer." + + ::= { lbCapabilitiesEntry 7 } + + +-- +-- Server Classes +-- + +lbServerClasses OBJECT IDENTIFIER ::= { lbPolicyPib 3 } + +-- +-- Server Table +-- + +lbServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of data center servers." + + ::= { lbCapabilitiesClasses 2 } + +lbServerEntry OBJECT-TYPE + SYNTAX LbServerEntry + STATUS current + DESCRIPTION + "An instance of this class describes a data center server." + + PIB-INDEX { lbServerPrid } + + ::= { lbServerTable 1 } + +LbServerEntry ::= SEQUENCE { + lbServerPrid InstanceId, + lbServerName SnmpAdminString, + lbServerAddressType InetAddressType, + lbServerAddress InetAddress, + lbServerMode INTEGER } + +lbServerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServerEntry class." + + ::= { lbServerEntry 1 } + +lbServerName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A name for server." + + ::= { lbServerEntry 2 } + +lbServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Type of address for server." + + ::= { lbServerEntry 3 } + +lbServerAddress OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Address (IP address or DNS Name) for server." + + ::= { lbServerEntry 4 } + +lbServerMode OBJECT-TYPE + SYNTAX INTEGER { + disabled(0), + primary(1), + backup(2) } + STATUS current + DESCRIPTION + "Indicates the mode of the server. Enumeration values are + primary server (1) + backup server (2) + disabled (0)." + + ::= { lbServerEntry 5 } + +-- +-- Server Group Table +-- + +lbServerGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServerGroupEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines Server Groups. Each Group being an + ordered list of data center servers. Each instance of this + class identifies one server of a group and the precedence + order of that server with respect to other servers in the + same group." + + ::= { lbServerClasses 2 } + +lbServerGroupEntry OBJECT-TYPE + SYNTAX LbServerGroupEntry + STATUS current + DESCRIPTION + "An instance of server group." + + PIB-INDEX { lbServerGroupPrid } + + ::= { lbServerGroupTable 1 } + +LbServerGroupEntry ::= SEQUENCE { + lbServerGroupPrid InstanceId, + lbServerGroupId TagId, + lbServerGroupServerId ReferenceId, + lbServerGroupPriority Unsigned32 } + +lbServerGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServerGroupEntry class." + + ::= { lbServerGroupEntry 1 } + +lbServerGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An arbitrary integer that identifies the group of servers. + The same lbServerGroupId is used in all lbServerGroupEntry + instances that belong to a group." + + ::= { lbServerGroupEntry 2 } + +lbServerGroupServerId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbServerEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of server. The server with the same + Id must be present." + + ::= { lbServerGroupEntry 3 } + +lbServerGroupPriority OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An arbitrary integer index that specifies the position of + this server in the server group. A server with a given + priority order is positioned in the server group before one + with a higher-value priority. Priority values within a group + must be unique." + + ::= { lbServerGroupEntry 4 } + + +-- +-- Service Classes +-- + +lbServiceClasses OBJECT IDENTIFIER ::= { lbPolicyPib 4 } + +-- +-- Service Table +-- + +lbServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServiceEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of entries that combine filter groups, + capabilities and server groups to form services." + + ::= { lbServiceClasses 1 } + +lbServiceEntry OBJECT-TYPE + SYNTAX LbServiceEntry + STATUS current + DESCRIPTION + "An instance of this class describes a service." + + PIB-INDEX { lbServicePrid } + + ::= { lbServiceTable 1 } + +LbServiceEntry ::= SEQUENCE { + lbServicePrid InstanceId, + lbServiceName SnmpAdminString, + lbServiceFilterGroupId TagReferenceId, + lbServiceServerGroupId TagReferenceId, + lbServiceCapabilitiesId ReferenceId } + +lbServicePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServiceEntry class." + + ::= { lbServiceEntry 1 } + +lbServiceName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "Name to identify a service." + + ::= { lbServiceEntry 2 } + +lbServiceFilterGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { lbFilterGroupId } + STATUS current + DESCRIPTION + "Pointer to a group of Filters. An instance of + lbFilterGroupEntry with the same tag id must be present." + + ::= { lbServiceEntry 3 } + +lbServiceServerGroupId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { lbServerGroupId } + STATUS current + DESCRIPTION + "Pointer to a group of Servers. An instance of + lbServerGroupEntry with the same tag id must be present." + + ::= { lbServiceEntry 4 } + +lbServiceCapabilitiesId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbCapabilitiesEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of capabilities class. An instance + of lbCapabilitiesEntry with the same tag id must be + present." + + ::= { lbServiceEntry 5 } + + + +-- Compliance section +-- TBD +END diff --git a/pibs/tubs/LOAD-BALANCING-PIB-orig b/pibs/tubs/LOAD-BALANCING-PIB-orig new file mode 100644 index 0000000..2733e09 --- /dev/null +++ b/pibs/tubs/LOAD-BALANCING-PIB-orig @@ -0,0 +1,568 @@ +LOAD-BALANCING-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, + OBJECT-IDENTITY, OBJECT-GROUP + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, + TagId, TagReference + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + +lbPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES SUBJECT-CATEGORY { tbd � Load Balancing Client +Type } + LAST-UPDATED "200102231000Z" + ORGANIZATION " WG" + CONTACT-INFO � + Harsha Hegde + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + E-Mail: shriharsha.hegde@intel.com + + Brad Stone + Resonate, Inc. + 385 Moffett Park Drive + Sunnyvale, CA 94089 + Phone: +1 408 548 5929 + Fax: +1 408 nnn nnnn + Email: bstone@resonate.com + � + DESCRIPTION + "This PIB module contains a set of provisioning classes + that describe load balancing policies." + ::= { tbd } + + +-- +-- Classifier Classes +-- + +lbClassifierClasses OBJECT IDENTIFIER ::= { lbPolicyPib 1 } + +-- +-- Filter Table +-- + +lbFilterTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbFilterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of additional filters. The filters in + this table extend the filters in frwkBaseFilterTable. A + packet must match all the fields in a filter. Wildcards may + be specified for those fields that are not relevant." + + ::= { lbClassifierClasses 1 } + +lbFilterEntry OBJECT-TYPE + SYNTAX LbFilterEntry + STATUS current + DESCRIPTION + "An instance of this class describes a filter. " + + EXTENDS { frwkIpFilterEntry } + + ::= { lbFilterTable 1 } + +LbFilterEntry ::= SEQUENCE { + lbFilterUrlPrefix OCTET_STRING, + lbFilterUrlDomain OCTET_STRING, + lbFilterUrlSuffix OCTET_STRING } + +lbFilterUrlPrefix OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the protocol. for + example, http,ftp. A �*� character is used to match any + string." + + ::= { lbFilterEntry 1 } + +lbFilterUrDomain OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the domain. for + example, www.company.com. A �*� character is used to match + any string." + + ::= { lbFilterEntry 2 } + +lbFilterUrlSuffix OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The portion of an URL that identifies the file name. for + example, index.html, mypic.jpg. A �*.*� string matches any + file, a �*.jpg� string matches all files with jpg extension, + and a �index.*� matches all �index� files with any + extension." + + ::= { lbFilterEntry 3 } + +-- +-- Filter Group Table +-- + +lbFilterGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbFilterGroupEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines Filter Groups. Each Group being an + ordered list of filters. Each instance of this class + identifies one filter of a group and the precedence order of + that filter with respect to other filters in the same + group." + + ::= { lbClassifierClasses 2 } + +lbFilterGroupEntry OBJECT-TYPE + SYNTAX LbFilterGroupEntry + STATUS current + DESCRIPTION + "An instance of filter group." + + PIB-INDEX { lbFilterGroupPrid } + + ::= { lbFilterGroupTable 1 } + +LbFilterGroupEntry ::= SEQUENCE { + lbFilterGroupPrid InstanceId, + lbFilterGroupId TagId, + lbFilterGroupFilterId ReferenceId, + lbFilterGroupPriority Unsigned32 } + +lbFilterGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbFilterGroupEntry class." + + ::= { lbFilterGroupEntry 1 } + +lbFilterGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An arbitrary integer that identifies the group of filters. + The same lbFilterGroupId is used in all lbFilterGroupEntry + instances that belong to a group." + + ::= { lbFilterGroupEntry 2 } + +lbFilterGroupFilterId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbFilterEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of filter. The filter with the same + Id must be present." + + ::= { lbFilterGroupEntry 3 } + +lbFilterGroupPriority OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An arbitrary integer index that specifies the position of + this filter in the filter group. A filter with a given + priority order is positioned in the filter group before one + with a higher-value priority. Priority values within a group + must be unique." + + ::= { lbFilterGroupEntry 4 } + + +-- +-- Capabilities Classes +-- + +lbCapabilitiesClasses OBJECT IDENTIFIER ::= { lbPolicyPib 2 } + +-- +-- Capabilities Table +-- + +lbCapabilitiesTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbCapabilitiesEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table consists of load balancer capabilities. + Instances of this class are used by the PEP to notify PEP + capabilities and by the PDP to install policies. The PDP + must not install a capability not reported by the PEP " + + ::= { lbCapabilitiesClasses 1 } + +lbCapabilitiesEntry OBJECT-TYPE + SYNTAX LbCapabilitiesEntry + STATUS current + DESCRIPTION + "An instance of this class describes a set of capabilities + of the load balancer or the capabilities applied to a + service policy." + + ::= { lbCapabilitiesTable 1 } + +LbCapabilitiesEntry ::= SEQUENCE { + lbCapPrid InstanceId, + lbCapStickyMode BITS, + lbCapHttpReturnCodes BITS, + lbCapBalanceAlgorithm BITS, + lbCapAlgorithmParams Prid, + lbCapPreserveSrcAddr TruthValue, + lbCapDirectReturn TruthValue } + +lbCapPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbCapabilitiesEntry class." + + ::= { lbCapabilitiesEntry 1 } + +lbCapStickyMode OBJECT-TYPE + SYNTAX BITS { + cookieBased (1), + sourceAddressBased (2) } + STATUS current + DESCRIPTION + "Set of values indicating the type of Sticky Mode in this + capabilities set. When PEP notifies PDP, the bits indicate + the support of these mechanisms. When PDP installs policies, + the bits indicate what mechanism must be used." + + ::= { lbCapabilitiesEntry 2 } + +lbCapReturnCodes OBJECT-TYPE + SYNTAX BITS { + http404(1), + http505(2) } + STATUS current + DESCRIPTION + "Set of values indicating the type of HTTP return codes that + the load balancer can interpret and redirect the request to + another server. When PEP notifies PDP, the bits indicate + the ability to interpret the HTTP return codes. When PDP + installs policies, the bits indicate enabling redirection on + any of those HTTP return codes." + + ::= { lbCapabilitiesEntry 3 } + +lbCapBalanceAlgorithm OBJECT-TYPE + SYNTAX BITS { + roundRobin(1), + weightedRoundRobin(2), + leastConnections(3), + weightedLeastConnections(4), + fastestServerResponse(5), + serverCpuUtilizaiton(6), + priorityToUser(7) } + STATUS current + DESCRIPTION + "Set of values indicating the type of server balance + algorithm. When PEP notifies PDP, the bits indicate all the + algorithms supported. When PDP installs policies the bits + indicate only one algorithm that must be used. Additional + parameters needed for the algorithm may be specified in + another PRC instance identified by the lbCapAlgorithmParams + attribute." + + ::= { lbCapabilitiesEntry 4 } + +lbCapAlgorithmParams OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to PRI that contains parameters needed for a + specific algorithm. The PRI pointed to must exist prior to + the installation of this class. + + TBD: define parameters classes for all existing algorithms.� + + ::= { lbCapabilitiesEntry 5 } + +lbCapPreserveSrcAddr OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether Source Address must be preserved when + forwarding a request to server.� + + ::= { lbCapabilitiesEntry 6 } + +lbCapDirectReturn OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "Indicates whether a response from data center server could + go directly to client bypassing the load balancer.� + + ::= { lbCapabilitiesEntry 7 } + + +-- +-- Server Classes +-- + +lbServerClasses OBJECT IDENTIFIER ::= { lbPolicyPib 3 } + +-- +-- Server Table +-- + +lbServerTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of data center servers." + + ::= { lbCapabilitiesClasses 1 } + +lbServerEntry OBJECT-TYPE + SYNTAX LbServerEntry + STATUS current + DESCRIPTION + "An instance of this class describes a data center server." + + PIB-INDEX { lbServerPrid } + + ::= { lbServerTable 1 } + +LbServerEntry ::= SEQUENCE { + lbServerPrid InstanceId, + lbServerName SnmpAdminString, + lbServerAddressType InetAddressType, + lbServerAddress InetAddress, + lbServerMode INTEGER } + +lbServerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServerEntry class." + + ::= { lbServerEntry 1 } + +lbServerName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A name for server." + + ::= { lbServerEntry 2 } + +lbServerAddressType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Type of address for server." + + ::= { lbServerEntry 3 } + +lbServerAddress OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Address (IP address or DNS Name) for server." + + ::= { lbServerEntry 4 } + +lbServerMode OBJECT-TYPE + SYNTAX INTEGER { + Disabled(0), + Primary(1), + Backup(2) } + STATUS current + DESCRIPTION + "Indicates the mode of the server. Enumeration values are + primary server (1) + backup server (2) + disabled (0)." + + ::= { lbServerEntry 5 } + +-- +-- Server Group Table +-- + +lbServerGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServerGroupEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines Server Groups. Each Group being an + ordered list of data center servers. Each instance of this + class identifies one server of a group and the precedence + order of that server with respect to other servers in the + same group." + + ::= { lbServerClasses 2 } + +lbServerGroupEntry OBJECT-TYPE + SYNTAX LbServerGroupEntry + STATUS current + DESCRIPTION + "An instance of server group." + + PIB-INDEX { lbServerGroupPrid } + + ::= { lbServerGroupTable 1 } + +LbServerGroupEntry ::= SEQUENCE { + lbServerGroupPrid InstanceId, + lbServerGroupId TagId, + lbServerGroupServerId ReferenceId, + lbServerGroupPriority Unsigned32 } + +lbServerGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServerGroupEntry class." + + ::= { lbServerGroupEntry 1 } + +lbServerGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An arbitrary integer that identifies the group of servers. + The same lbServerGroupId is used in all lbServerGroupEntry + instances that belong to a group." + + ::= { lbServerGroupEntry 2 } + +lbServerGroupServerId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbServerEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of server. The server with the same + Id must be present." + + ::= { lbServerGroupEntry 3 } + +lbServerGroupPriority OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An arbitrary integer index that specifies the position of + this server in the server group. A server with a given + priority order is positioned in the server group before one + with a higher-value priority. Priority values within a group + must be unique." + + ::= { lbServerGroupEntry 4 } + + +-- +-- Service Classes +-- + +lbServiceClasses OBJECT IDENTIFIER ::= { lbPolicyPib 4 } + +-- +-- Service Table +-- + +lbServiceTable OBJECT-TYPE + SYNTAX SEQUENCE OF LbServiceEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of entries that combine filter groups, + capabilities and server groups to form services." + + ::= { lbServiceClasses 1 } + +lbServiceEntry OBJECT-TYPE + SYNTAX LbServiceEntry + STATUS current + DESCRIPTION + "An instance of this class describes a service." + + PIB-INDEX { lbServicePrid } + + ::= { lbServiceTable 1 } + +LbServiceEntry ::= SEQUENCE { + lbServicePrid InstanceId, + lbServiceName SnmpAdminString, + lbServiceFilterGroupId TagReference, + lbServiceServerGroupId TagReference, + lbServiceCapabilitiesId ReferenceId } + +lbServicePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the lbServiceEntry class." + + ::= { lbServiceEntry 1 } + +lbServiceName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "Name to identify a service." + + ::= { lbServiceEntry 2 } + +lbServiceFilterGroupId OBJECT-TYPE + SYNTAX TagReference + PIB-TAG { lbFilterGroupId } + STATUS current + DESCRIPTION + "Pointer to a group of Filters. An instance of + lbFilterGroupEntry with the same tag id must be present." + + ::= { lbServiceEntry 3 } + +lbServiceServerGroupId OBJECT-TYPE + SYNTAX TagReference + PIB-TAG { lbServerGroupId } + STATUS current + DESCRIPTION + "Pointer to a group of Servers. An instance of + lbServerGroupEntry with the same tag id must be present." + + ::= { lbServiceEntry 4 } + +lbServiceCapabilitiesId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { lbCapabilitiesEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of capabilities class. An instance + of lbCapabilitiesEntry with the same tag id must be + present." + + ::= { lbServiceEntry 5 } + + + +-- Compliance section +-- TBD +END diff --git a/pibs/tubs/META-POLICY-PIB b/pibs/tubs/META-POLICY-PIB new file mode 100644 index 0000000..da78c00 --- /dev/null +++ b/pibs/tubs/META-POLICY-PIB @@ -0,0 +1,938 @@ +META-POLICY-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, TimeTicks, + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId, ReferenceId, TagId, TagReferenceId, Prid + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + TruthValue + FROM SNMPv2-TC; + +metaPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200104010000Z" + ORGANIZATION "IETF" + CONTACT-INFO " Andreas Polyrakis + Dept. of Computer Science, + University of Toronto, + 10 King's College Road, + Toronto, Ontario,M5S 3G4, Canada. + e-mail: apolyr@cs.toronto.edu + Phone: ++1 (416) 978-4837 + Fax: ++1 (416) 978 1931 + + Raouf Boutaba + Dept. of Computer Science, + University of Waterloo, + 200 University Avenue West, + Waterloo, Ontario N2L 3G1, Canada + e-mail: rboutaba@bbcr.uwaterloo.ca + Phone: ++1 (519) 888 4567 ext.4820 + Fax: ++1 (519) 885 1208" + DESCRIPTION + "The meta-policy PIB module. It contains the classes + that are necessary for the provisioning of meta-policy + related information. This module is applicable, + but not current, to all subject-categories" + + ::= { ibrpib 21 } +-- The root OID for PRCs in the Meta-Policy PIB + + +--- +--- Textual Conventions +--- +BERValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A sequence of octets that encodes a value using BER. + The suppoted BER types are (borrowed by SNMPv2): + Type | BER identifier + --------------------|---------------- + + INTEGER | 02 + BIT STRING | 03 + OCTET STRING | 04 + NULL | 05 + OBJECT IDENTIFIER | 06 + IP ADDRESS | 40 + COUNTER32 | 41 + GAUGE32 | 42 + TIMETICKS | 43 + OPAQUE | 44 + + + By using this type, the PEP can store values for different + types of parameters in the same class (PRC)." + + SYNTAX OCTET STRING (SIZE (0..16)) + +XMLString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A string that contains a logical expression encoded using + XML. The semantics of the XML tags are defined in special + DTDs, which the PEP declares that supports." + SYNTAX OCTET STRING (SIZE (0..1024)) +--- +--- End of Textual Conventions +--- + +----------------------------------------------- +----------------------------------------------- + + +-- Meta-Policy Capabilities Group +metaPolicyCapabilitiesClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 1 } + + +--- +--- Meta-Policy Capabilities Table +--- +xmlDTDTable OBJECT-TYPE + SYNTAX SEQUENCE OF XmlDTDEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that + identifies an XML DTD supported by the PEP for encoding + logical expressions. If this class has no instances, + then the PEP supports only expressions that are formed + with boolean predicates and operators, and in this case + the PDP MUST not attempt to install any XML-encoded + expressions in the generalConditionTable." + ::= { metaPolicyCapabilitiesClasses 1 } + +xmlDTDEntry OBJECT-TYPE + SYNTAX XmlDTDEntry + STATUS current + DESCRIPTION + "An instance of the xmlDTDTable class that determines an + XML DTD that can be used to encode a logical expression" + PIB-INDEX { xmlDTDPrid } + ::= { xmlDTDTable 1 } + +XmlDTDEntry ::= + SEQUENCE { + + xmlDTDPrid InstanceId, + xmlDTDURL SnmpAdminString + } + +xmlDTDPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the xmlDTD class." + ::= { xmlDTDEntry 1 } + +xmlDTDURL OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The XML DTD URL. A string that indicates the URL of an + XML DTD that can be used for encoding expressions. + These DTDs can be defined either by standardization + organizations, such as IETF, or be vendor specific. + + When the PDP receives a URL that uniquely identifies + such a DTD, it knows that it may encode expressions + according to this DTD that the PEP will be able to + evaluate." + ::= { xmlDTDEntry 2 } + +--End of xmlDTDTable + +----------------------------------------------- +----------------------------------------------- + +-- Base Meta-Policy Group +metaPolicyClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 2 } + + +--- +--- Meta-Policy Table +--- +metaPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF MetaPolicyEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that + represents a meta-policy. Each meta-policy, apart + from a unique identifier and an optional name, it + constists of a condition and a group of actions." + ::= { metaPolicyClasses 1 } + +metaPolicyEntry OBJECT-TYPE + SYNTAX MetaPolicyEntry + STATUS current + + DESCRIPTION + "An instance of the metaPolicy Class that represents + a meta-policy." + PIB-INDEX { metaPolicyPrid } + ::= { metaPolicyTable 1 } + +MetaPolicyEntry ::= + SEQUENCE { + metaPolicyPrid InstanceId, + metaPolicyName SnmpAdminString, + metaPolicyCondition ReferenceId, + metaPolicyActions TagId + } + +metaPolicyPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the metaPolicy class." + ::= { metaPolicyEntry 1 } + +metaPolicyName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A display string that represents the name of the + meta-policy. It is reccomented that different + meta-policies have different names. However, similar + meta-policies may have the same name. + Also, an empty string can be used as a name." + ::= { metaPolicyEntry 2 } + +metaPolicyCondition OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { conditionEntry } + STATUS current + DESCRIPTION + "This attribute associates the specific meta-policy with + a condition in the condition Class. The condition MUST + + exist when the meta-policy is installed. The meta-policy + MUST always be assosiated with one condition (which means + that the attribute can never be null/invalid." + ::= { metaPolicyEntry 3 } + +metaPolicyActions OBJECT-TYPE + SYNTAX TagId +-- PIB-REFERENCES { actionEntry } + STATUS current + DESCRIPTION + "A tag that maps this instance (meta-policy) to a group + of actions in the actions Class. Although the tag should + map to at least one action, there might be cases where a + + meta-policy is associated to no actions. However such + cases should be avoided and only be temporal." + ::= { metaPolicyEntry 4 } +--End of metaPolicyTable + +-- +-- Meta-Policy Status Table +-- +metaPolicyStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF MetaPolicyStatusEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class augments the metaPolicy class. + Each instance of this class defines a PRC that is used + in order to report to the PDP the status of the + meta-policies. + + Also, information form this table can be used as a + parameter to another meta-policy, as an alternative + way to ensure that two priorities cannot be + activated at the same time." + ::= { metaPolicyClasses 2 } + +metaPolicyStatusEntry OBJECT-TYPE + SYNTAX MetaPolicyStatusEntry + STATUS current + DESCRIPTION + "An instance of the metaPolicyStatus class that reports + the status of the corresponding meta-policy in the + metaPolicy class." + AUGMENTS { metaPolicyEntry } + ::= { metaPolicyStatusTable 1 } + +MetaPolicyStatusEntry ::= + SEQUENCE { + metaPolicyActive TruthValue, + metaPolicySuppressed TruthValue + } + +metaPolicyActive OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "True while the meta-policy is active" + ::= { metaPolicyStatusEntry 1 } + +metaPolicySuppressed OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If this meta-policy is prevented from being active by + an other meta-policy (but its conditions are met), this + attribute is set to true. + + + If this meta-policy prevents another meta-policy from + being active, then this attribute is true. + + In other words: + Active | Suppr.| + -------------------------------- + true | true | meta-policy active, + | it suppresses another one + true | false | meta-policy active, + | does not suppress another one + false | true | meta-policy inactive + | because it is suppressed by another one + false | false | meta-policy inactive because + | the conditions are not met + " + ::= { metaPolicyStatusEntry 2 } +--End of metaPolicyStatusTable + + +--- +--- Meta-Policy Priority Table +--- +metaPolicyPriorityTable OBJECT-TYPE + SYNTAX SEQUENCE OF MetaPolicyPriorityEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table reports conflicting meta-policies. + When a meta-policy needs to be activated, the PEP + MUST check if it is conflicting with another meta-policy, + which is already active or needs to be activated at the + same time. If so, the one that is referenced in the + higherPriority attribute is activated and the other one + is deactivated or remains deactivated. Similarly, when a + meta-policy is deactivated, the PEP must check if a + lower-priority meta-policy must now be activated." + ::= { metaPolicyClasses 3 } + +metaPolicyPriorityEntry OBJECT-TYPE + SYNTAX MetaPolicyPriorityEntry + STATUS current + DESCRIPTION + "An instance of the metaPolicyPriority Class that + identifies the relative priority between two + meta-policies." + PIB-INDEX { metaPolicyPriorityPrid } + ::= { metaPolicyPriorityTable 1 } + +MetaPolicyPriorityEntry ::= + SEQUENCE { + metaPolicyPriorityPrid InstanceId, + higherPriority ReferenceId, + lowerPriority ReferenceId + + } + +metaPolicyPriorityPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the metaPolicyPriority class." + ::= { metaPolicyPriorityEntry 1 } + +higherPriority OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { metaPolicyEntry } + STATUS current + DESCRIPTION + "This attribute references to the meta-policy that + has higher priority than the one referenced by the + lowerPriority attribute" + ::= { metaPolicyPriorityEntry 2 } + +lowerPriority OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { metaPolicyEntry } + STATUS current + DESCRIPTION + + "This attribute references to the meta-policy that + has lower priority than the one referenced by the + higherPriority attribute" + ::= { metaPolicyPriorityEntry 3 } + +--End of metaPolicyPriorityTable +----------------------------------------------- +---------------------------------------------- + + +-- Condition Group +conditionClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 3 } + + +-- +-- Condition Table +-- +conditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ConditionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this PRC represents a boolean + expression. The conditionss of the meta-policies are + instances of this class. However, if the condition of + a meta-policy contains more than one predicate, the + predicates are also instances of this PRC. + + + For instance, Suppose that we want to encode a condition + A, which is evaluated as ( B OR C ), where B and C some + other boolean expressions. + In this case, A, B and C are instances of this PRC. + + All instances of this PRC MUST be extended by an instance + of one of the rest PRCs of this group, in order to denote + if this condition should be evaluated based on simpler + conditions, if it is a boolean operand or an other + logical expression." + ::= { conditionClasses 1 } + +conditionEntry OBJECT-TYPE + SYNTAX ConditionEntry + STATUS current + DESCRIPTION + "An instance of the condition Class that defines a + boolean condition" + PIB-INDEX { conditionPrid } + ::= { conditionTable 1 } + +ConditionEntry ::= + SEQUENCE { + conditionPrid InstanceId, + conditionReverse TruthValue + } + +conditionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the condition class." + ::= { conditionEntry 1 } + +conditionReverse OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "if true, the negation of the logical expression + is evaluated, instead." + ::= { conditionEntry 2 } +-- END OF conditionTable + +-- +-- Complex Condition Table +-- +complexConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ComplexConditionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this PRC represents a complex + + condition. It consists of two simplier conditions, + and a logical operator that determines how the two + terms are assosiated to compose the more + complicated condition" + ::= { conditionClasses 2 } + +complexConditionEntry OBJECT-TYPE + SYNTAX ComplexConditionEntry + STATUS current + DESCRIPTION + "An instance of the complexCondition class that breaks a + complex condition into two simpler ones." + EXTENDS { conditionEntry } + + ::= { complexConditionTable 1 } + +ComplexConditionEntry ::= + SEQUENCE { + operator INTEGER, + leftTerm ReferenceId, + rightTerm ReferenceId + } + +operator OBJECT-TYPE + SYNTAX INTEGER { + and (0), + or (1) + } + STATUS current + DESCRIPTION + "The logical operator in the complex condition" + ::= { complexConditionEntry 1 } + +leftTerm OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { conditionEntry } + STATUS current + DESCRIPTION + "A reference to the first simpler condition." + ::= { complexConditionEntry 2 } + +rightTerm OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { conditionEntry } + STATUS current + + DESCRIPTION + "A reference to the second simpler condition." + ::= { complexConditionEntry 3 } +-- END OF complexConditionTable + +-- +-- Boolean Condition Expression Table +-- + +booleanConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF BooleanConditionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class extends the condition class + and represents a boolean parameter from which the + condition is evaluated." + ::= { metaPolicyCapabilitiesClasses 2 } + +booleanConditionEntry OBJECT-TYPE + SYNTAX BooleanConditionEntry + STATUS current + DESCRIPTION + "An instance of the booleanCondition class that defines + the boolean parameter that gives values to the + corresponding condition." + EXTENDS { conditionEntry } + ::= { booleanConditionTable 1 } + +BooleanConditionEntry ::= + SEQUENCE { + parameterReference ReferenceId + } + +parameterReference OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { parameterEntry } + STATUS current + DESCRIPTION + "A reference to a parameter from where the condition is + evaluated. This condition MUST be of type boolean + (TruthValue)." + ::= { booleanConditionEntry 1 } +-- End of booleanConditionTable + +-- +-- Generic Condition Table +-- +genericConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF GenericConditionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class extends the condition class + and assosiates the corresponding condition with a complex + logical expression, from where the condition is + evaluated." + ::= { conditionClasses 3 } + +genericConditionEntry OBJECT-TYPE + SYNTAX GenericConditionEntry + STATUS current + DESCRIPTION + + "An instance of the generalCondition class that defines + the logical expression for the corresponding condition + of the condition class." + PIB-INDEX { xmlDTDID } + ::= { genericConditionTable 1 } + +GenericConditionEntry ::= + SEQUENCE { + xmlDTDID InstanceId, + xmlDTDRef ReferenceId, + xmlCondition XMLString + } + +xmlDTDID OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "unique ID" + ::= { genericConditionEntry 1 } + +xmlDTDRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { xmlDTDEntry } + STATUS current + DESCRIPTION + "A reference to the xmlDTD class that deternies which + of the XML DTDs that this PEP supports is used in + order to encode the expression." + ::= { genericConditionEntry 2 } + +xmlCondition OBJECT-TYPE + SYNTAX XMLString + STATUS current + DESCRIPTION + "The XML-encoded expression." + ::={ genericConditionEntry 3 } +-- End of genericConditionTable + +----------------------------------------------- +----------------------------------------------- + + +-- Actions Group +actionClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 4 } + + +-- +-- Actions Table +-- +actionTable OBJECT-TYPE + SYNTAX SEQUENCE OF ActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class stores an action of + a meta-policy." + ::= { actionClasses 1 } + +actionEntry OBJECT-TYPE + SYNTAX ActionEntry + STATUS current + + DESCRIPTION + "An instance of the action class that stores an action + of a meta-policy." + PIB-INDEX { actionPrid } + ::= { actionTable 1 } + +ActionEntry ::= + SEQUENCE { + actionPrid InstanceId, + actionRefTag TagReferenceId, + actionTargetPrid Prid + } + +actionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the action class." + ::= { actionEntry 1 } + +actionRefTag OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { metaPolicyActions } + STATUS current + DESCRIPTION + "An attribute that defines a Tag Group of actions. + All actions with the same tag are grouped as the actions + of a single meta-policy." + ::={ actionEntry 2 } + +actionTargetPrid OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the PRI to be installed/updated. + The PRID must point to a single PRI." + ::={ actionEntry 3 } +-- END OF actionTable + +-- +-- Action Value table +-- +actionValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF ActionValueEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class extends the corresponding + instance of the action class. It provides the BER-encoded +value + that will be installed at the corresponding PRI." + ::= { actionClasses 2 } + + + + +actionValueEntry OBJECT-TYPE + SYNTAX ActionValueEntry + STATUS current + DESCRIPTION + "An insance of the actionValue class. It provides + the value (encoded with BER) that will be installed at + the PRI denoted by the corresponding instance of the + action class." + EXTENDS { actionEntry } + ::= { actionValueTable 1 } + +ActionValueEntry ::= + SEQUENCE { + actionValueEpd BERValue + } + +actionValueEpd OBJECT-TYPE + SYNTAX BERValue + STATUS current + DESCRIPTION + "This attribute contains the BER-encoded value of the + PRI to be installed/updated." + ::={ actionValueEntry 1 } +-- END OF actionValueTable + +-- +-- Action Parametric Value Table +-- +actionParametricValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF ActionParametricValueEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class that extends the + corresponding instance of the action class. It provides +with the + parametric value that will be installed at the +corresponding PRI." + ::= { actionClasses 3 } + +actionParametricValueEntry OBJECT-TYPE + SYNTAX ActionParametricValueEntry + STATUS current + DESCRIPTION + "An insance of the actionValue class. It provides with + the parametric value that will be installed at the PRI + denoted by the corresponding instance of the action + class." + EXTENDS { actionEntry } + + ::= { actionParametricValueTable 1 } + + +ActionParametricValueEntry ::= + SEQUENCE { + parameterRef ReferenceId + } + +parameterRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { parameterEntry } + STATUS current + DESCRIPTION + "A reference to a the parameter, from where the value + of the installed PRI should be obtained. Whenever the + value of the parameter changes, the installed PRI + MUST be updated." + ::={ actionParametricValueEntry 1 } +-- END OF actionParametricValueTable + +----------------------------------------------- +----------------------------------------------- + + +-- Parameter Group +parameterClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 5 } + + +-- +-- Parameter Table +-- +parameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF ParameterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each instance of this class defines a parameter + that has been installed on the PEP. This class + MUST be extended by a class that defines how + the value of the parameter will be evaluated." + ::= { parameterClasses 1} + +parameterEntry OBJECT-TYPE + SYNTAX ParameterEntry + STATUS current + DESCRIPTION + "An instance of the parameter class that installs + a parameter into the PEP." + PIB-INDEX { parameterPrid } + ::= { parameterTable 1 } + +ParameterEntry ::= + SEQUENCE { + parameterPrid InstanceId, + parameterName SnmpAdminString, + parameterType INTEGER + + } + +parameterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the parameter class." + ::= { parameterEntry 1 } + +parameterName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A string that represents the name of the parameter. + It is reccomented that different parameter have different + names. However, similar parameter may have the same name. + Also, an empty string can be used as a name." + ::= { parameterEntry 2 } + +parameterType OBJECT-TYPE + SYNTAX INTEGER { + integer(2), + bitstring (3), + octetstring (4), + null (5), + objectidentifier (6), + ipaddress (40) + } + STATUS current + DESCRIPTION + "The BER type of the parameter. + The suppoted BER types are: + Type | BER identifier + --------------------|---------------- + INTEGER | 02 + BIT STRING | 03 + OCTET STRING | 04 + NULL | 05 + OBJECT IDENTIFIER | 06 + IP ADDRESS | 40" + ::= { parameterEntry 3 } +-- END OF parameterTable + +-- +-- MIBPIB Parameter Table +-- +mibPibParameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF MibPibParameterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class extends the parameter class. + Each instance of this class assosiates to the + + corresponding parameter a MIB or PIB variable, from + where the parameter is evaluated" + ::= { parameterClasses 2 } + +mibPibParameterEntry OBJECT-TYPE + SYNTAX MibPibParameterEntry + STATUS current + DESCRIPTION + "An instance of the mibPibParameter class that provides + the identifier of the MIB/PIB variable from where the + corresponding parameter is evaluated." + EXTENDS { parameterEntry } + ::= { mibPibParameterTable 1 } + +MibPibParameterEntry ::= + SEQUENCE { + targetOID OBJECT IDENTIFIER, + evaluationFrequency TimeTicks + } + +targetOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + PIB-ACCESS install + STATUS current + DESCRIPTION + "The object identifier of the MIB/PIB variable. + The MIB/PIB variable MUST exist in the MIB/PIB of the + device. Also, the type of the target variable MUST be + compatible with the type of the corresponding PRI of the + parameter Class." + ::={ mibPibParameterEntry 1 } + +evaluationFrequency OBJECT-TYPE + SYNTAX TimeTicks + STATUS current + DESCRIPTION + "The frequency of updating the parameter in milliseconds" + ::={ mibPibParameterEntry 2 } +-- END of mibPibParameterTable + +-- +-- PDP Parameter Table +-- +pdpParameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF PdpParameterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class extends the parameter class. Each instance + of this class contains the value of the corresponding + paramter. This value is send by the PDP and updated + whenever necessary." + ::= { parameterClasses 3 } + + +pdpParameterEntry OBJECT-TYPE + SYNTAX PdpParameterEntry + STATUS current + DESCRIPTION + "An instance of the pdpParameter class that stores the + value, sent by the PDP, for the corresponding parameter." + PIB-INDEX { pdpParameterPrid } + ::= { pdpParameterTable 1 } + +PdpParameterEntry ::= + SEQUENCE { + pdpParameterPrid InstanceId, + lastValue BERValue + } + +lastValue OBJECT-TYPE + SYNTAX BERValue + STATUS current + DESCRIPTION + "The latest value of the parameter, encoded with BER. + The BER-encoded value must be of the same type as the + corresponding PRI of the parameter class." + ::={ pdpParameterEntry 1 } + +pdpParameterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify this parameter." + + ::= { pdpParameterEntry 2 } + +-- END OF pdpParameterTable + + +END diff --git a/pibs/tubs/META-POLICY-PIB-orig b/pibs/tubs/META-POLICY-PIB-orig new file mode 100644 index 0000000..902d749 --- /dev/null +++ b/pibs/tubs/META-POLICY-PIB-orig @@ -0,0 +1,915 @@ +META-POLICY-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, timeticks, + MODULE-IDENTITY, OBJECT-TYPE, + InstanceId, ReferenceId + FROM COPS-PR-SPPI + TEXTUAL-CONVENTION + + FROM SNMPv2-TC; + +metaPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORY { all } + LAST-UPDATED "200104010000" + ORGANIZATION "IETF" + CONTACT-INFO " Andreas Polyrakis + Dept. of Computer Science, + University of Toronto, + 10 King's College Road, + Toronto, Ontario,M5S 3G4, Canada. + e-mail: apolyr@cs.toronto.edu + Phone: ++1 (416) 978-4837 + Fax: ++1 (416) 978 1931 + + Raouf Boutaba + Dept. of Computer Science, + University of Waterloo, + 200 University Avenue West, + Waterloo, Ontario N2L 3G1, Canada + e-mail: rboutaba@bbcr.uwaterloo.ca + Phone: ++1 (519) 888 4567 ext.4820 + Fax: ++1 (519) 885 1208" + DESCRIPTION + "The meta-policy PIB module. It contains the classes + that are necessary for the provisioning of meta-policy + related information. This module is applicable, + but not mandatory, to all subject-categories" + + ::= { tbd } +-- The root OID for PRCs in the Meta-Policy PIB + + +--- +--- Textual Conventions +--- +BERValue ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A sequence of octets that encodes a value using BER. + The suppoted BER types are (borrowed by SNMPv2): + Type | BER identifier + --------------------|---------------- + + INTEGER | 02 + BIT STRING | 03 + OCTET STRING | 04 + NULL | 05 + OBJECT IDENTIFIER | 06 + IP ADDRESS | 40 + COUNTER32 | 41 + GAUGE32 | 42 + TIMETICKS | 43 + OPAQUE | 44 + + + By using this type, the PEP can store values for different + types of parameters in the same class (PRC)." + + SYNTAX OCTET STRING (SIZE (0..16)) + +XMLString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A string that contains a logical expression encoded using + XML. The semantics of the XML tags are defined in special + DTDs, which the PEP declares that supports." + SYNTAX OCTET STRING (SIZE (0..1024)) +--- +--- End of Textual Conventions +--- + +----------------------------------------------- +----------------------------------------------- + + +-- Meta-Policy Capabilities Group +metaPolicyCapabilitiesClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 1 } + + +--- +--- Meta-Policy Capabilities Table +--- +xmlDTDTable OBJECT-TYPE + SYNTAX SEQUENCE OF xmlDTDEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that + identifies an XML DTD supported by the PEP for encoding + logical expressions. If this class has no instances, + then the PEP supports only expressions that are formed + with boolean predicates and operators, and in this case + the PDP MUST not attempt to install any XML-encoded + expressions in the generalConditionTable." + ::= { metaPolicyCapabilitiesClasses 1 } + +xmlDTDEntry OBJECT-TYPE + SYNTAX MetaPolicyCapabilitiesEntry + STATUS current + DESCRIPTION + "An instance of the xmlDTDTable class that determines an + XML DTD that can be used to encode a logical expression" + INDEX { metaPolicyPrid } + ::= { metaPolicyTable 1 } + +XmlDTDEntry ::= + SEQUENCE { + + xmlDTDPrid InstanceId, + xmlDTDURL SnmpAdminString + } + +xmlDTDPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the xmlDTD class." + ::= { xmlDTDEntry 1 } + +xmlDTDURL OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The XML DTD URL. A string that indicates the URL of an + XML DTD that can be used for encoding expressions. + These DTDs can be defined either by standardization + organizations, such as IETF, or be vendor specific. + + When the PDP receives a URL that uniquely identifies + such a DTD, it knows that it may encode expressions + according to this DTD that the PEP will be able to + evaluate." + ::= { xmlDTDEntry 2 } + +--End of xmlDTDTable + +----------------------------------------------- +----------------------------------------------- + +-- Base Meta-Policy Group +metaPolicyClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 2 } + + +--- +--- Meta-Policy Table +--- +metaPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF metaPolicyEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that + represents a meta-policy. Each meta-policy, apart + from a unique identifier and an optional name, it + constists of a condition and a group of actions." + ::= { metaPolicyClasses 1 } + +metaPolicyEntry OBJECT-TYPE + SYNTAX MetaPolicyEntry + STATUS current + + DESCRIPTION + "An instance of the metaPolicy Class that represents + a meta-policy." + INDEX { metaPolicyPrid } + ::= { metaPolicyTable 1 } + +MetaPolicyEntry ::= + SEQUENCE { + metaPolicyPrid InstanceId, + metaPolicyName SnmpAdminString, + metaPolicyCondition ReferenceId, + metaPolicyActions TagId + } + +metaPolicyPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the metaPolicy class." + ::= { metaPolicyEntry 1 } + +metaPolicyName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "A display string that represents the name of the + meta-policy. It is reccomented that different + meta-policies have different names. However, similar + meta-policies may have the same name. + Also, an empty string can be used as a name." + ::= { metaPolicyEntry 2 } + +metaPolicyCondition OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES contitionTable + STATUS current + DESCRIPTION + "This attribute associates the specific meta-policy with + a condition in the condition Class. The condition MUST + + exist when the meta-policy is installed. The meta-policy + MUST always be assosiated with one condition (which means + that the attribute can never be null/invalid." + ::= { metaPolicyEntry 3 } + +metaPolicyActions OBJECT-TYPE + SYNTAX TagId + PIB-REFERENCES actionsTable + STATUS current + DESCRIPTION + "A tag that maps this instance (meta-policy) to a group + of actions in the actions Class. Although the tag should + map to at least one action, there might be cases where a + + meta-policy is associated to no actions. However such + cases should be avoided and only be temporal." + ::= { metaPolicyEntry 4 } +--End of metaPolicyTable + +-- +-- Meta-Policy Status Table +-- +metaPolicyStatusTable OBJECT-TYPE + SYNTAX SEQUENCE OF metaPolicyStatusEntry + PIB-ACCESS REPORT-ONLY + STATUS current + DESCRIPTION + "This class augments the metaPolicy class. + Each instance of this class defines a PRC that is used + in order to report to the PDP the status of the + meta-policies. + + Also, information form this table can be used as a + parameter to another meta-policy, as an alternative + way to ensure that two priorities cannot be + activated at the same time." + ::= { metaPolicyClasses 2 } + +metaPolicyStatusEntry OBJECT-TYPE + SYNTAX MetaPolicyStatusEntry + STATUS current + DESCRIPTION + "An instance of the metaPolicyStatus class that reports + the status of the corresponding meta-policy in the + metaPolicy class." + AUGMENTS { metaPolicyEntry } + ::= { metaPolicyStatusTable 1 } + +metaPolicyStatusEntry ::= + SEQUENCE { + metaPolicyActive TruthValue, + metaPolicySuppressed TruthValue + } + +metaPolicyActive OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "True while the meta-policy is active" + ::= { metaPolicyStatusEntry 1 } + +metaPolicySuppress OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If this meta-policy is prevented from being active by + an other meta-policy (but its conditions are met), this + attribute is set to true. + + + If this meta-policy prevents another meta-policy from + being active, then this attribute is true. + + In other words: + Active | Suppr.| + -------------------------------- + true | true | meta-policy active, + | it suppresses another one + true | false | meta-policy active, + | does not suppress another one + false | true | meta-policy inactive + | because it is suppressed by another one + false | false | meta-policy inactive because + | the conditions are not met + " + ::= { metaPolicyStatusEntry 2 } +--End of metaPolicyStatusTable + + +--- +--- Meta-Policy Priority Table +--- +metaPolicyPriorityTable OBJECT-TYPE + SYNTAX SEQUENCE OF metaPolicyPriorityEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "This table reports conflicting meta-policies. + When a meta-policy needs to be activated, the PEP + MUST check if it is conflicting with another meta-policy, + which is already active or needs to be activated at the + same time. If so, the one that is referenced in the + higherPriority attribute is activated and the other one + is deactivated or remains deactivated. Similarly, when a + meta-policy is deactivated, the PEP must check if a + lower-priority meta-policy must now be activated." + ::= { metaPolicyClasses 3 } + +metaPolicyPriorityEntry OBJECT-TYPE + SYNTAX MetaPolicyPriorityEntry + STATUS current + DESCRIPTION + "An instance of the metaPolicyPriority Class that + identifies the relative priority between two + meta-policies." + INDEX { metaPolicyPrid } + ::= { metaPolicyPriorityTable 1 } + +MetaPolicyPriorityEntry ::= + SEQUENCE { + metaPolicyPriorityPrid InstanceId, + higherPriority ReferenceId, + lowerPriority ReferenceId, + + } + +metaPolicyPriorityPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the metaPolicyPriority class." + ::= { metaPolicyPriorityEntry 1 } + +higherPriority OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES metaPolicyTable + STATUS current + DESCRIPTION + "This attribute references to the meta-policy that + has higher priority than the one referenced by the + lowerPriority attribute" + ::= { metaPolicyPriorityEntry 2 } + +lowerPriority OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES metaPolicyTable + STATUS current + DESCRIPTION + + "This attribute references to the meta-policy that + has lower priority than the one referenced by the + higherPriority attribute" + ::= { metaPolicyPriorityEntry 3 } + +--End of metaPolicyPriorityTable +----------------------------------------------- +---------------------------------------------- + + +-- Condition Group +conditionClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 3 } + + +-- +-- Condition Table +-- +conditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF conditionEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this PRC represents a boolean + expression. The conditionss of the meta-policies are + instances of this class. However, if the condition of + a meta-policy contains more than one predicate, the + predicates are also instances of this PRC. + + + For instance, Suppose that we want to encode a condition + A, which is evaluated as ( B OR C ), where B and C some + other boolean expressions. + In this case, A, B and C are instances of this PRC. + + All instances of this PRC MUST be extended by an instance + of one of the rest PRCs of this group, in order to denote + if this condition should be evaluated based on simpler + conditions, if it is a boolean operand or an other + logical expression." + ::= { conditionClasses 1 } + +conditionEntry OBJECT-TYPE + SYNTAX ConditionEntry + STATUS current + DESCRIPTION + "An instance of the condition Class that defines a + boolean condition" + INDEX { conditionIndex } + ::= { conditionTable 1 } + +ConditionEntry ::= + SEQUENCE { + conditionPrid InstanceId, + conditionReverse Truevalue + } + +conditionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the condition class." + ::= { conditionEntry 1 } + +conditionReverse OBJECT-TYPE + SYNTAX Truevalue + STATUS current + DESCRIPTION + "if true, the negation of the logical expression + is evaluated, instead." + ::= { conditionEntry 2 } +-- END OF conditionTable + +-- +-- Complex Condition Table +-- +complexConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF complexConditionEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this PRC represents a complex + + condition. It consists of two simplier conditions, + and a logical operator that determines how the two + terms are assosiated to compose the more + complicated condition" + ::= { conditionClasses 2 } + +complexConditionEntry OBJECT-TYPE + SYNTAX ComplexConditionEntry + STATUS current + DESCRIPTION + "An instance of the complexCondition class that breaks a + complex condition into two simpler ones." + EXTENDS { conditionTable } + + ::= { complexConditionTable } + +ComplexConditionEntry ::= + SEQUENCE { + operator Unsigned32, + leftTerm ReferenceId, + rightTerm ReferenceId + } + +operator OBJECT-TYPE + SYNTAX Unsigned32 { + AND (0), + OR (1) + } + STATUS current + DESCRIPTION + "The logical operator in the complex condition" + ::= { complexConditionEntry 1 } + +leftTerm OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES conditionTable + STATUS current + DESCRIPTION + "A reference to the first simpler condition." + ::= { complexConditionEntry 2 } + +rightTerm OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES conditionTable + STATUS current + + DESCRIPTION + "A reference to the second simpler condition." + ::= { complexConditionEntry 3 } +-- END OF complexConditionTable + +-- +-- Boolean Condition Expression Table +-- + +booleanConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF booleanConditionEntry + PIB-ACCESS INSTALL + STATUS mandatory + DESCRIPTION + "Each instance of this class extends the condition class + and represents a boolean parameter from which the + condition is evaluated." + ::= { metaPolicyPibClasses 2 } + +booleanConditionEntry OBJECT-TYPE + SYNTAX BooleanConditionEntry + STATUS mandatory + DESCRIPTION + "An instance of the booleanCondition class that defines + the boolean parameter that gives values to the + corresponding condition." + EXTENDS { conditionTable } + ::= { booleanConditionTable 1 } + +BooleanConditionEntry ::= + SEQUENCE { + parameterReference ReferenceId + } + +parameterReference OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES parameterTable + STATUS current + DESCRIPTION + "A reference to a parameter from where the condition is + evaluated. This condition MUST be of type boolean + (Truthvalue)." + ::= { booleanConditionEntry 1 } +-- End of booleanConditionTable + +-- +-- Generic Condition Table +-- +genericConditionTable OBJECT-TYPE + SYNTAX SEQUENCE OF genericConditionEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class extends the condition class + and assosiates the corresponding condition with a complex + logical expression, from where the condition is + evaluated." + ::= { conditionClasses 2 } + +genericConditionEntry OBJECT-TYPE + SYNTAX GenericConditionEntry + STATUS current + DESCRIPTION + + "An instance of the generalCondition class that defines + the logical expression for the corresponding condition + of the condition class." + EXTENDS { generalConditionTable } + ::= { conditionNumericalExpressionTable } + +GenericConditionEntry ::= + SEQUENCE { + xmlDTDRef ReferenceId, + xmlCondition XMLString + } + +xmlDTDRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES xmlDTDTable + STATUS current + DESCRIPTION + "A reference to the xmlDTD class that deternies which + of the XML DTDs that this PEP supports is used in + order to encode the expression." + ::= { genericConditionEntry 1 } + +xmlCondition OBJECT-TYPE + SYNTAX XMLString + STATUS mandatory + DESCRIPTION + "The XML-encoded expression." + ::={ genericConditionEntry 2 } +-- End of genericConditionTable + +----------------------------------------------- +----------------------------------------------- + + +-- Actions Group +actionClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 4 } + + +-- +-- Actions Table +-- +actionTable OBJECT-TYPE + SYNTAX SEQUENCE of actionEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class stores an action of + a meta-policy." + ::= { actionClasses 1 } + +actionEntry OBJECT-TYPE + SYNTAX ActionEntry + STATUS current + + DESCRIPTION + "An instance of the action class that stores an action + of a meta-policy." + INDEX { actionPrid } + ::= { actionTable 1 } + +ActionEntry ::= + SEQUENCE { + actionPrid InstanceId, + actionRefTag TagReferenceId, + actionTargetPrid Prid + } + +actionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the action class." + ::= { actionEntry 1 } + +actionRefTag OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG metaPolicyActions + STATUS current + DESCRIPTION + "An attribute that defines a Tag Group of actions. + All actions with the same tag are grouped as the actions + of a single meta-policy." + ::={ actionEntry 2 } + +actionTargetPrid OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "The PRID of the PRI to be installed/updated. + The PRID must point to a single PRI." + ::={ actionEntry 3 } +-- END OF actionsTable + +-- +-- Action Value table +-- +actionValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF actionValueEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class extends the corresponding + instance of the action class. It provides the BER-encoded +value + that will be installed at the corresponding PRI." + ::= { actionClasses 2 } + + + + +actionValueEntry OBJECT-TYPE + SYNTAX ActionsValueEntry + STATUS current + DESCRIPTION + "An insance of the actionValue class. It provides + the value (encoded with BER) that will be installed at + the PRI denoted by the corresponding instance of the + action class." + EXTENDS { actionEntry } + ::= { actionValueTable 1 } + +ActionValueEntry ::= + SEQUENCE { + ActionValueEpd BERValue + } + +actionValueEpd OBJECT-TYPE + SYNTAX BERValue + STATUS current + DESCRIPTION + "This attribute contains the BER-encoded value of the + PRI to be installed/updated." + ::={ actionValueEntry 1 } +-- END OF actionValueTable + +-- +-- Action Parametric Value Table +-- +actionParametricValueTable OBJECT-TYPE + SYNTAX SEQUENCE OF actionParametricValueEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class that extends the + corresponding instance of the action class. It provides +with the + parametric value that will be installed at the +corresponding PRI." + ::= { actionClasses 3 } + +actionParametricValueEntry OBJECT-TYPE + SYNTAX ActionParametricValueEntry + STATUS current + DESCRIPTION + "An insance of the actionValue class. It provides with + the parametric value that will be installed at the PRI + denoted by the corresponding instance of the action + class." + EXTENDS { actionEntry } + + ::= { actionParametricValueTable 1 } + + +ActionParametricValueEntry ::= + SEQUENCE { + ParameterRef ReferenceId + } + +ParameterRef OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES parameterTable + STATUS current + DESCRIPTION + "A reference to a the parameter, from where the value + of the installed PRI should be obtained. Whenever the + value of the parameter changes, the installed PRI + MUST be updated." + ::={ actionParametricValueEntry 1 } +-- END OF actionParametricValueTable + +----------------------------------------------- +----------------------------------------------- + + +-- Parameter Group +parameterClasses + OBJECT IDENTIFIER ::= { metaPolicyPib 5 } + + +- +- Parameter Table +- +parameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF parameterEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "Each instance of this class defines a parameter + that has been installed on the PEP. This class + MUST be extended by a class that defines how + the value of the parameter will be evaluated." + ::= { parameterClasses 1} + +parameterEntry OBJECT-TYPE + SYNTAX ParameterEntry + STATUS current + DESCRIPTION + "An instance of the parameter class that installs + a parameter into the PEP." + INDEX { parameterPrid } + ::= { parameterTable 1 } + +ParameterEntry ::= + SEQUENCE { + parameterPrid InstanceId, + parameterName SNMPAdminString, + parameterType Unsigned32 + + } + +parameterPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an + instance of the parameter class." + ::= { parameterEntry 1 } + +parameterNameOBJECT-TYPE + SYNTAX SNMPAdminString + STATUS current + DESCRIPTION + "A string that represents the name of the parameter. + It is reccomented that different parameter have different + names. However, similar parameter may have the same name. + Also, an empty string can be used as a name." + ::= { parameterEntry 2 } + +parameterType + SYNTAX Unsigned32 { + INTEGER (02) + BIT STRING (03) + OCTET STRING (04) + NULL (05) + OBJECT IDENTIFIER (06) + IP ADDRESS (40) + } + STATUS current + DESCRIPTION + "The BER type of the parameter. + The suppoted BER types are: + Type | BER identifier + --------------------|---------------- + INTEGER | 02 + BIT STRING | 03 + OCTET STRING | 04 + NULL | 05 + OBJECT IDENTIFIER | 06 + IP ADDRESS | 40" + ::= { parameterEntry 3 } +-- END OF parameterTable + +-- +-- MIBPIB Parameter Table +-- +mibPibParameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF mibPibParameterEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "This class extends the parameter class. + Each instance of this class assosiates to the + + corresponding parameter a MIB or PIB variable, from + where the parameter is evaluated" + ::= { parameterClasses 2 } + +mibPibParameterEntry OBJECT-TYPE + SYNTAX MibPibParameterEntry + STATUS current + DESCRIPTION + "An instance of the mibPibParameter class that provides + the identifier of the MIB/PIB variable from where the + corresponding parameter is evaluated." + EXTENDS { parameterEntry } + ::= { mibPibParameterTable 1 } + +MibPibParameterEntry ::= + SEQUENCE { + targetOID OBJECT-IDENTIFIER, + EvaluationFrequency timeticks + } + +targetOID OBJECT-TYPE + SYNTAX OBJECT-IDENTIFIER + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "The object identifier of the MIB/PIB variable. + The MIB/PIB variable MUST exist in the MIB/PIB of the + device. Also, the type of the target variable MUST be + compatible with the type of the corresponding PRI of the + parameter Class." + ::={ mibPibParameterEntry 1 } + +EvaluationFrequency OBJECT-TYPE + SYNTAX timeticks + STATUS current + DESCRIPTION + "The frequency of updating the parameter in milliseconds" + ::={ mibPibParameterEntry 2 } +-- END of mibPibParameterTable + +-- +-- PDP Parameter Table +-- +pdpParameterTable OBJECT-TYPE + SYNTAX SEQUENCE OF pdpParameterEntry + PIB-ACCESS INSTALL + STATUS current + DESCRIPTION + "This class extends the parameter class. Each instance + of this class contains the value of the corresponding + paramter. This value is send by the PDP and updated + whenever necessary." + ::= { parameterClasses 3 } + + +pdpParameterEntry OBJECT-TYPE + SYNTAX PdpParameterEntry + STATUS current + DESCRIPTION + "An instance of the pdpParameter class that stores the + value, sent by the PDP, for the corresponding parameter." + INDEX { parameterIndex } + ::= { pdpParametersTable 1 } + +PdpParameterEntry ::= + SEQUENCE { + lastValue BERValue + } + +lastValue OBJECT-TYPE + SYNTAX BERValue + STATUS current + DESCRIPTION + "The latest value of the parameter, encoded with BER. + The BER-encoded value must be of the same type as the + corresponding PRI of the parameter class." + ::={ pdpParameterEntry 1 } +-- END OF pdpParameterTable + + +END diff --git a/pibs/tubs/MPLS-SETUP-PIB b/pibs/tubs/MPLS-SETUP-PIB new file mode 100644 index 0000000..7551b13 --- /dev/null +++ b/pibs/tubs/MPLS-SETUP-PIB @@ -0,0 +1,1300 @@ +MPLS-SETUP-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, + OBJECT-IDENTITY, OBJECT-GROUP, Unsigned32 + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, TagId, TagReferenceId, Prid + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddressIPv4, InetAddressIPv6 + FROM INET-ADDRESS-MIB; + +mplsSetupPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- tbd; MPLS Setup Client type + LAST-UPDATED "200107131000Z" + ORGANIZATION " WG" + CONTACT-INFO " + Harsha Hegde + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + E-Mail: shriharsha.hegde@intel.com + + Ravi Sahita + Intel Corporation + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + Email: ravi.sahita@intel.com + " + DESCRIPTION + "This PIB module contains a set of provisioning classes + + that are used to setup MPLS LSPs on MPLS Routers." + ::= { ibrpib 20 } + + +-- +-- Forward Equivalence Class (FEC) Classes +-- + +mplsFecClasses OBJECT IDENTIFIER ::= { mplsSetupPib 1 } + +-- +-- IPv4 Host Address FEC Table +-- + +mplsFecIPv4HostAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv4HostAddrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 FEC Entrees." + + ::= { mplsFecClasses 1 } + +mplsFecIPv4HostAddrEntry OBJECT-TYPE + SYNTAX MplsFecIPv4HostAddrEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS IPv4 Host Address + FEC. " + + PIB-INDEX { mplsFecIPv4HostAddrPrid } + + ::= { mplsFecIPv4HostAddrTable 1 } + +MplsFecIPv4HostAddrEntry ::= SEQUENCE { + mplsFecIPv4HostAddrPrid InstanceId, + mplsFecIPv4HostAddrIpAddr InetAddressIPv4 } + +mplsFecIPv4HostAddrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv4HostAddrEntry class." + + ::= { mplsFecIPv4HostAddrEntry 1 } + +mplsFecIPv4HostAddrIpAddr OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Host Address in a FEC." + + + ::= { mplsFecIPv4HostAddrEntry 2 } + + +-- +-- IPv6 Host Address FEC Table +-- + +mplsFecIPv6HostAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv6HostAddrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv6 FEC entrees." + + ::= { mplsFecClasses 2 } + +mplsFecIPv6HostAddrEntry OBJECT-TYPE + SYNTAX MplsFecIPv6HostAddrEntry + STATUS current + DESCRIPTION + "An instance of this class describes an IPv6 Host Address + FEC. " + + PIB-INDEX { mplsFecIPv6HostAddrPrid } + + ::= { mplsFecIPv6HostAddrTable 1 } + +MplsFecIPv6HostAddrEntry ::= SEQUENCE { + mplsFecIPv6HostAddrPrid InstanceId, + mplsFecIPv6HostAddrIpAddr InetAddressIPv6 } + +mplsFecIPv6HostAddrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv6HostAddrEntry class." + + ::= { mplsFecIPv6HostAddrEntry 1 } + +mplsFecIPv6HostAddrIpAddr OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Host Address in a FEC." + + ::= { mplsFecIPv6HostAddrEntry 2 } + + +-- +-- IPv4 Prefix FEC Table +-- + + +mplsFecIPv4PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv4PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 Prefix FEC entrees." + + ::= { mplsFecClasses 3 } + +mplsFecIPv4PrefixEntry OBJECT-TYPE + SYNTAX MplsFecIPv4PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes a IPv4 Prefix FEC." + + PIB-INDEX { mplsFecIPv4PrefixPrid } + + ::= { mplsFecIPv4PrefixTable 1 } + +MplsFecIPv4PrefixEntry ::= SEQUENCE { + mplsFecIPv4PrefixPrid InstanceId, + mplsFecIPv4PrefixLength Unsigned32, + mplsFecIPv4PrefixIpPrefix InetAddressIPv4 } + +mplsFecIPv4PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv4PrefixEntry class." + + ::= { mplsFecIPv4PrefixEntry 1 } + +mplsFecIPv4PrefixLength OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of IPv4 Prefix in a FEC." + + ::= { mplsFecIPv4PrefixEntry 2 } + +mplsFecIPv4PrefixIpPrefix OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Prefix in a FEC." + + ::= { mplsFecIPv4PrefixEntry 3 } + + +-- +-- IPv6 Prefix FEC Table +-- + + +mplsFecIPv6PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv6PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv6 Prefix FEC entrees." + + ::= { mplsFecClasses 4 } + +mplsFecIPv6PrefixEntry OBJECT-TYPE + SYNTAX MplsFecIPv6PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes a IPv6 Prefix FEC." + + PIB-INDEX { mplsFecIPv6PrefixPrid } + + ::= { mplsFecIPv6PrefixTable 1 } + +MplsFecIPv6PrefixEntry ::= SEQUENCE { + mplsFecIPv6PrefixPrid InstanceId, + mplsFecIPv6PrefixLength Unsigned32, + mplsFecIPv6PrefixIpPrefix InetAddressIPv6 } + +mplsFecIPv6PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv6PrefixEntry class." + + ::= { mplsFecIPv6PrefixEntry 1 } + +mplsFecIPv6PrefixLength OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of IPv6 Prefix in a FEC." + + ::= { mplsFecIPv6PrefixEntry 2 } + +mplsFecIPv6PrefixIpPrefix OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Prefix in a FEC." + + ::= { mplsFecIPv6PrefixEntry 3 } + + +-- +-- Autonomous System Number FEC Table + +-- + +mplsFecASTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecASEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Autonomous System Number FEC + entrees." + + ::= { mplsFecClasses 5 } + +mplsFecASEntry OBJECT-TYPE + SYNTAX MplsFecASEntry + STATUS current + DESCRIPTION + "An instance of this class describes an Autonomous System + Number FEC. " + + PIB-INDEX { mplsFecASPrid } + + ::= { mplsFecASTable 1 } + +MplsFecASEntry ::= SEQUENCE { + mplsFecASPrid InstanceId, + mplsFecASNumber Unsigned32 } + +mplsFecASPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecASEntry class." + + ::= { mplsFecASEntry 1 } + +mplsFecASNumber OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Autonomous System Number in a FEC." + + ::= { mplsFecASEntry 2 } + + +-- +-- Label Request Classes +-- + +mplsLabReqClasses OBJECT IDENTIFIER ::= { mplsSetupPib 2 } + +-- +-- Generic Label Request Table + +-- + +mplsLabReqGenericTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqGenericEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Generic Label Request Object + entrees." + + ::= { mplsLabReqClasses 1 } + +mplsLabReqGenericEntry OBJECT-TYPE + SYNTAX MplsLabReqGenericEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS Generic Label + Request Object. " + + PIB-INDEX { mplsLabReqGenericPrid } + + ::= { mplsLabReqGenericTable 1 } + +MplsLabReqGenericEntry ::= SEQUENCE { + mplsLabReqGenericPrid InstanceId, + mplsLabReqGenericL3Pid Unsigned32 } + +mplsLabReqGenericPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqGenericEntry class." + + ::= { mplsLabReqGenericEntry 1 } + +mplsLabReqGenericL3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS Generic Label Request + Object." + + ::= { mplsLabReqGenericEntry 2 } + + +-- +-- ATM Label Request Table +-- + +mplsLabReqATMTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqATMEntry + PIB-ACCESS install + + STATUS current + DESCRIPTION + "This table consists of MPLS ATM Label Request Object + entrees." + + ::= { mplsLabReqClasses 2 } + +mplsLabReqATMEntry OBJECT-TYPE + SYNTAX MplsLabReqATMEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS ATM Label + Request Object. " + + PIB-INDEX { mplsLabReqATMPrid } + + ::= { mplsLabReqATMTable 1 } + +MplsLabReqATMEntry ::= SEQUENCE { + mplsLabReqATMPrid InstanceId, + mplsLabReqATML3Pid Unsigned32, + mplsLabReqATMMbit Unsigned32, + mplsLabReqATMMinVpi Unsigned32, + mplsLabReqATMMaxVpi Unsigned32, + mplsLabReqATMMinVci Unsigned32, + mplsLabReqATMMaxVci Unsigned32 } + +mplsLabReqATMPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqATMEntry class." + + ::= { mplsLabReqATMEntry 1 } + +mplsLabReqATML3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS ATM Label Request + Object." + + ::= { mplsLabReqATMEntry 2 } + +mplsLabReqATMMbit OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Merging Capable Bit in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 3 } + + +mplsLabReqATMMinVpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value for VPI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 4 } + +mplsLabReqATMMaxVpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value for VPI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 5 } + +mplsLabReqATMMinVci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value for VCI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 6 } + +mplsLabReqATMMaxVci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value for VCI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 7 } + + +-- +-- Frame Relay Label Request Table +-- + +mplsLabReqFRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqFREntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Frame Relay Label Request + Object entrees." + + ::= { mplsLabReqClasses 3 } + +mplsLabReqFREntry OBJECT-TYPE + SYNTAX MplsLabReqFREntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS Frame Relay + Label Request Object. " + + + PIB-INDEX { mplsLabReqFRPrid } + + ::= { mplsLabReqFRTable 1 } + +MplsLabReqFREntry ::= SEQUENCE { + mplsLabReqFRPrid InstanceId, + mplsLabReqFRL3Pid Unsigned32, + mplsLabReqFRDlciLen Unsigned32, + mplsLabReqFRMinDlci Unsigned32, + mplsLabReqFRMaxDlci Unsigned32} + +mplsLabReqFRPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqFREntry class." + + ::= { mplsLabReqFREntry 1 } + +mplsLabReqFRL3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS Frame Relay Label Request + Object." + + ::= { mplsLabReqFREntry 2 } + +mplsLabReqFRDlciLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of DLCI in MPLS Frame Relay Label Request Object." + + ::= { mplsLabReqFREntry 3 } + +mplsLabReqFRMinDlci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value DLCI in MPLS Frame Relay Label Request + Object." + + ::= { mplsLabReqFREntry 4 } + +mplsLabReqFRMaxDlci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value DLCI in MPLS Frame Relay Label Request + Object." + + + ::= { mplsLabReqFREntry 5 } + + +-- +-- Flow (Traffic) Specification Classes +-- + +mplsFlowSpecClasses OBJECT IDENTIFIER ::= { mplsSetupPib 3 } + +-- +-- CRLDP Flow Spec Table +-- + +mplsFlowSpecCRLDPTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecCRLDPEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of CR-LDP Traffic (Flow) Specification + entrees." + + ::= { mplsFlowSpecClasses 1 } + +mplsFlowSpecCRLDPEntry OBJECT-TYPE + SYNTAX MplsFlowSpecCRLDPEntry + STATUS current + DESCRIPTION + "An instance of this class describes a CR-LDP Flow + Specification. " + + PIB-INDEX { mplsFlowSpecCRLDPPrid } + + ::= { mplsFlowSpecCRLDPTable 1 } + +MplsFlowSpecCRLDPEntry ::= SEQUENCE { + mplsFlowSpecCRLDPPrid InstanceId, + mplsFlowSpecCRLDPPDR Unsigned32, + mplsFlowSpecCRLDPPBS Unsigned32, + mplsFlowSpecCRLDPCDR Unsigned32, + mplsFlowSpecCRLDPCBS Unsigned32, + mplsFlowSpecCRLDPEBS Unsigned32, + mplsFlowSpecCRLDPWeight Unsigned32 } + +mplsFlowSpecCRLDPPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecCRLDPEntry class." + + ::= { mplsFlowSpecCRLDPEntry 1 } + + +mplsFlowSpecCRLDPPDR OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Data Rate in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 2 } + +mplsFlowSpecCRLDPPBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Burst Size in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 3 } + +mplsFlowSpecCRLDPCDR OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Committed Data Rate in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 4 } + +mplsFlowSpecCRLDPCBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Committed Burst Size in CR-LDP Flow Specification." + + + ::= { mplsFlowSpecCRLDPEntry 5 } + +mplsFlowSpecCRLDPEBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Excess Burst Size in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 6 } + +mplsFlowSpecCRLDPWeight OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Weight parameter in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 7 } + + +-- +-- RSVP Controlled Load Service Flow Spec Table +-- + + +mplsFlowSpecCLSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecCLSEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of RSVP-TE Integrated Services + (IntServ) Controlled Load Service Flow Specification + entrees." + + ::= { mplsFlowSpecClasses 2 } + +mplsFlowSpecCLSEntry OBJECT-TYPE + SYNTAX MplsFlowSpecCLSEntry + STATUS current + DESCRIPTION + "An instance of this class describes RSVP-TE IntServ + Controlled Load Service Flow Specification. " + + PIB-INDEX { mplsFlowSpecCLSPrid } + + ::= { mplsFlowSpecCLSTable 1 } + +MplsFlowSpecCLSEntry ::= SEQUENCE { + mplsFlowSpecCLSPrid InstanceId, + mplsFlowSpecCLSTokenRate Unsigned32, + mplsFlowSpecCLSBucketSize Unsigned32, + mplsFlowSpecCLSPeakRate Unsigned32, + mplsFlowSpecCLSMinPoliced Unsigned32, + mplsFlowSpecCLSMaxPktSize Unsigned32 } + +mplsFlowSpecCLSPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecCLSEntry class." + + ::= { mplsFlowSpecCLSEntry 1 } + +mplsFlowSpecCLSTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Rate in RSVP-TE IntServ Controlled Load Service + Flow Specification." + + ::= { mplsFlowSpecCLSEntry 2 } + +mplsFlowSpecCLSBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + + "Token Bucket Size in RSVP-TE IntServ Controlled Load + Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 3 } + +mplsFlowSpecCLSPeakRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Rate in RSVP-TE IntServ Controlled Load Service + Flow Specification." + + ::= { mplsFlowSpecCLSEntry 4 } + +mplsFlowSpecCLSMinPoliced OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum Policed Packet Size in RSVP-TE IntServ Controlled + Load Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 5 } + +mplsFlowSpecCLSMaxPktSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum Packet Size in RSVP-TE IntServ Controlled Load + Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 6 } + + + +-- +-- RSVP Guaranteed Service Flow Spec Table +-- + +mplsFlowSpecGSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecGSEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of RSVP-TE Integrated Services + (IntServ) Guaranteed Service Flow Specification entrees." + + ::= { mplsFlowSpecClasses 3 } + +mplsFlowSpecGSEntry OBJECT-TYPE + SYNTAX MplsFlowSpecGSEntry + STATUS current + DESCRIPTION + "An instance of this class describes RSVP-TE IntServ + + Guaranteed Service Flow Specification. " + + PIB-INDEX { mplsFlowSpecGSPrid } + + ::= { mplsFlowSpecGSTable 1 } + +MplsFlowSpecGSEntry ::= SEQUENCE { + mplsFlowSpecGSPrid InstanceId, + mplsFlowSpecGSTokenRate Unsigned32, + mplsFlowSpecGSBucketSize Unsigned32, + mplsFlowSpecGSPeakRate Unsigned32, + mplsFlowSpecGSMinPoliced Unsigned32, + mplsFlowSpecGSMaxPktSize Unsigned32, + mplsFlowSpecGSRspecRate Unsigned32, + mplsFlowSpecGSSlackTerm Unsigned32 } + +mplsFlowSpecGSPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecGSEntry class." + + ::= { mplsFlowSpecGSEntry 1 } + +mplsFlowSpecGSTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 2 } + +mplsFlowSpecGSBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Bucket Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 3 } + +mplsFlowSpecGSPeakRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 4 } + +mplsFlowSpecGSMinPoliced OBJECT-TYPE + + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum Policed Packet Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 5 } + +mplsFlowSpecGSMaxPktSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum Packet Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 6 } + +mplsFlowSpecGSRspecRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Required Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 7 } + +mplsFlowSpecGSSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Slack Term (Delay) in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 8 } + + +-- +-- Explicit Route Object (ERO) Classes +-- + +mplsEroClasses OBJECT IDENTIFIER ::= { mplsSetupPib 4 } + +-- +-- IPv4 Address Prefix Subobject Table +-- + +mplsEroIPv4PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroIPv4PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 Prefix ERO Subobject + Entrees." + + + ::= { mplsEroClasses 1 } + +mplsEroIPv4PrefixEntry OBJECT-TYPE + SYNTAX MplsEroIPv4PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes IPv4 Prefix ERO + Subobject. " + + PIB-INDEX { mplsEroIPv4PrefixPrid } + + ::= { mplsEroIPv4PrefixTable 1 } + +MplsEroIPv4PrefixEntry ::= SEQUENCE { + mplsEroIPv4PrefixPrid InstanceId, + mplsEroIPv4PrefixLen Unsigned32, + mplsEroIPv4PrefixIPv4Addr InetAddressIPv4 } + +mplsEroIPv4PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroIPv4PrefixEntry class." + + ::= { mplsEroIPv4PrefixEntry 1 } + +mplsEroIPv4PrefixLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of Prefix in IPv4 Prefix ERO Subobject." + + ::= { mplsEroIPv4PrefixEntry 2 } + +mplsEroIPv4PrefixIPv4Addr OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Prefix in IPv4 Prefix ERO Subobject." + + ::= { mplsEroIPv4PrefixEntry 3 } + + +-- +-- IPv6 Address Prefix Subobject Table +-- + +mplsEroIPv6PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroIPv6PrefixEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This table consists of MPLS IPv6 Prefix ERO Subobject + Entrees." + + ::= { mplsEroClasses 2 } + +mplsEroIPv6PrefixEntry OBJECT-TYPE + SYNTAX MplsEroIPv6PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes IPv6 Prefix ERO + Subobject. " + + PIB-INDEX { mplsEroIPv6PrefixPrid } + + ::= { mplsEroIPv6PrefixTable 1 } + +MplsEroIPv6PrefixEntry ::= SEQUENCE { + mplsEroIPv6PrefixPrid InstanceId, + mplsEroIPv6PrefixLen Unsigned32, + mplsEroIPv6PrefixIPv6Addr InetAddressIPv6 } + +mplsEroIPv6PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroIPv6PrefixEntry class." + + ::= { mplsEroIPv6PrefixEntry 1 } + +mplsEroIPv6PrefixLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of Prefix in IPv6 Prefix ERO Subobject." + + ::= { mplsEroIPv6PrefixEntry 2 } + +mplsEroIPv6PrefixIPv6Addr OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Prefix in IPv6 Prefix ERO Subobject." + + ::= { mplsEroIPv6PrefixEntry 3 } + + +-- +-- Autonomous System Number Subobject Table +-- + +mplsEroASNumberTable OBJECT-TYPE + + SYNTAX SEQUENCE OF MplsEroASNumberEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Autonomous System Number ERO + Subobject Entrees." + + ::= { mplsEroClasses 3 } + +mplsEroASNumberEntry OBJECT-TYPE + SYNTAX MplsEroASNumberEntry + STATUS current + DESCRIPTION + "An instance of this class describes Autonomous System + Number ERO Subobject. " + + PIB-INDEX { mplsEroASNumberPrid } + + ::= { mplsEroASNumberTable 1 } + +MplsEroASNumberEntry ::= SEQUENCE { + mplsEroASNumberPrid InstanceId, + mplsEroASNumberASNumber Unsigned32} + +mplsEroASNumberPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroASNumberEntry class." + + ::= { mplsEroASNumberEntry 1 } + +mplsEroASNumberASNumber OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Autonomous System Number in Autonomous System Number + Subobject." + + ::= { mplsEroASNumberEntry 2 } + +-- +-- ERO Table +-- + +mplsEroTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS ERO Subobject Entrees." + + + ::= { mplsEroClasses 4 } + +mplsEroEntry OBJECT-TYPE + SYNTAX MplsEroEntry + STATUS current + DESCRIPTION + "An instance of this class describes ERO Subobject." + + PIB-INDEX { mplsEroPrid } + + ::= { mplsEroTable 1 } + +MplsEroEntry ::= SEQUENCE { + mplsEroPrid InstanceId, + mplsEroLoose Unsigned32, + mplsEroSubObject Prid } + +mplsEroPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroEntry class." + + ::= { mplsEroEntry 1 } + +mplsEroLoose OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Loose Bit in ERO Subobject." + + ::= { mplsEroEntry 2 } + +mplsEroSubObject OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of ERO subobject. It + could be an instance of mplsEroIpv4PrefixEntry, + mplsEroIpv6PrefixEntry or mplsEroASNumberEntry." + + ::= { mplsEroEntry 3 } + + +-- +-- Ero Group Table +-- + +mplsEroGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroGroupEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This table defines ERO Subobject groups. Each group then is + used in an LSP definition. Grouping is done using a TagId + and order of Subobject in a group is provided by using a + precedence number." + + ::= { mplsEroClasses 5 } + +mplsEroGroupEntry OBJECT-TYPE + SYNTAX MplsEroGroupEntry + STATUS current + DESCRIPTION + "An instance of ERO Subobject group." + + PIB-INDEX { mplsEroGroupPrid } + + ::= { mplsEroGroupTable 1 } + +MplsEroGroupEntry ::= SEQUENCE { + mplsEroGroupPrid InstanceId, + mplsEroGroupId TagId, + mplsEroGroupIdPrecedence Unsigned32, + mplsEroGroupEroId ReferenceId } + +mplsEroGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroGroupEntry class." + + ::= { mplsEroGroupEntry 1 } + +mplsEroGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Tag Id (number) used to group multiple entries in this + table." + + ::= { mplsEroGroupEntry 2 } + +mplsEroGroupIdPrecedence OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This is used to provide ordering for entries with the same + Tag Id." + + ::= { mplsEroGroupEntry 3 } + +mplsEroGroupEroId OBJECT-TYPE + SYNTAX ReferenceId + + PIB-REFERENCES { mplsEroEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of ERO Subobject. The ERO Subobject + with the same Id must be present." + + ::= { mplsEroGroupEntry 4 } + + +-- +-- Preemption Classes +-- + +mplsPreemptionClasses OBJECT IDENTIFIER ::= { mplsSetupPib 5 } + +-- +-- Preemption Table +-- + +mplsPreemptionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsPreemptionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of LSP Preemption Entrees." + + ::= { mplsFlowSpecClasses 4 } + +mplsPreemptionEntry OBJECT-TYPE + SYNTAX MplsPreemptionEntry + STATUS current + DESCRIPTION + "An instance of this class describes a LSP Preemption + object. " + + PIB-INDEX { mplsPreemptionPrid } + + ::= { mplsPreemptionTable 1 } + +MplsPreemptionEntry ::= SEQUENCE { + mplsPreemptionPrid InstanceId, + mplsPreemptionSetupPrio Unsigned32, + mplsPreemptionHoldPrio Unsigned32 } + +mplsPreemptionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsPreemptionEntry class." + + ::= { mplsPreemptionEntry 1 } + + +mplsPreemptionSetupPrio OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indicates MPLS LSP Setup Priority." + + ::= { mplsPreemptionEntry 2 } + +mplsPreemptionHoldPrio OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indicates MPLS LSP Holding Priority." + + ::= { mplsPreemptionEntry 3 } + + + +-- +-- LSP Setup Classes +-- + +mplsLspClasses OBJECT IDENTIFIER ::= { mplsSetupPib 6 } + + +-- +-- LSP Table +-- + +mplsLspTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLspEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS LSP Entrees. Entries in this + table essentially point to instances of other PRCs such as + FEC, Label Request, ERO, Flow Spec and Preemption to form + complete LSPs." + + ::= { mplsLspClasses 1 } + +mplsLspEntry OBJECT-TYPE + SYNTAX MplsLspEntry + STATUS current + DESCRIPTION + "An instance of MPLS LSP. " + + PIB-INDEX { mplsLspPrid } + + ::= { mplsLspTable 1 } + +MplsLspEntry ::= SEQUENCE { + mplsLspPrid InstanceId, + + mplsLspFec Prid, + mplsLspLabReq Prid, + mplsLspFlowSpec Prid, + mplsLspPreemption ReferenceId, + mplsLspEroList TagReferenceId } + +mplsLspPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLspEntry class." + + ::= { mplsLspEntry 1 } + +mplsLspFec OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of FEC. It could be + an instance of mplsFecIPv4HostAddrEntry, + mplsFecIPv6HostAddrEntry, mplsFecIPv4PrefixEntry, + mplsFecIPv6PrefixEntry, mplsFecASEntry." + + ::= { mplsLspEntry 2 } + +mplsLspLabReq OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of Label Request + Object. It could be an instance of mplsLabReqGenericEntry, + mplsLabReqATMEntry, mplsLabReqFREntry." + + ::= { mplsLspEntry 3 } + +mplsLspFlowSpec OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of FlowSpec. It + could be an instance of mplsFlowSpecCRLDPEntry, + mplsFlowSpecCLSEntry, mplsFlowSpecGSEntry." + + ::= { mplsLspEntry 4 } + +mplsLspPreemption OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { mplsPreemptionEntry } + STATUS current + DESCRIPTION + "This points to an instance of mplsPreemptionEntry." + + + ::= { mplsLspEntry 5 } + +mplsLspEroList OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG { mplsEroGroupId } + STATUS current + DESCRIPTION + "This references a Tag Id attribute in mplsEroGroup table. + All the entries in mplsEroGroup table that have this Tag Id + form the ERO List that is used for this LSP entry." + + ::= { mplsLspEntry 6 } + +END diff --git a/pibs/tubs/MPLS-SETUP-PIB-orig b/pibs/tubs/MPLS-SETUP-PIB-orig new file mode 100644 index 0000000..e32d994 --- /dev/null +++ b/pibs/tubs/MPLS-SETUP-PIB-orig @@ -0,0 +1,1299 @@ +MPLS-SETUP-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION, MODULE-COMPLIANCE, + OBJECT-IDENTITY, OBJECT-GROUP + FROM COPS-PR-SPPI + TruthValue + FROM SNMPv2-TC + InstanceId, ReferenceId, TagId, TagReference + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InetAddressIPv4, InetAddressIPv6 + FROM INET-ADDRESS-MIB + +mplsSetupPib MODULE-IDENTITY + SUBJECT-CATEGORIES SUBJECT-CATEGORY { tbd � MPLS Setup Client +Type } + LAST-UPDATED "200107131000Z" + ORGANIZATION " WG" + CONTACT-INFO " + Harsha Hegde + Intel Corporation + MS JF3-206 + 2111 NE 25th Ave. + Hillsboro, OR 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + E-Mail: shriharsha.hegde@intel.com + + Ravi Sahita + Intel Corporation + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Phone: +1 503 264 1439 + Fax: +1 503 264 3483 + Email: ravi.sahita@intel.com + " + DESCRIPTION + "This PIB module contains a set of provisioning classes + + that are used to setup MPLS LSPs on MPLS Routers." + ::= { tbd } + + +-- +-- Forward Equivalence Class (FEC) Classes +-- + +mplsFecClasses OBJECT IDENTIFIER ::= { mplsSetupPib 1 } + +-- +-- IPv4 Host Address FEC Table +-- + +mplsFecIPv4HostAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv4HostAddrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 FEC Entrees." + + ::= { mplsFecClasses 1 } + +mplsFecIPv4HostAddrEntry OBJECT-TYPE + SYNTAX MplsFecIPv4HostAddrEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS IPv4 Host Address + FEC. " + + PIB-INDEX { mplsFecIPv4HostAddrPrid } + + ::= { mplsFecIPv4HostAddrTable 1 } + +MplsFecIPv4HostAddrEntry ::= SEQUENCE { + mplsFecIPv4HostAddrPrid InstanceId, + mplsFecIPv4HostAddrIpAddr InetAddressIPv4 } + +mplsFecIPv4HostAddrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv4HostAddrEntry class." + + ::= { mplsFecIPv4HostAddrEntry 1 } + +mplsFecIPv4HostAddrIpAddr OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Host Address in a FEC." + + + ::= { mplsFecIPv4HostAddrEntry 2 } + + +-- +-- IPv6 Host Address FEC Table +-- + +mplsFecIPv6HostAddrTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv6HostAddrEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv6 FEC entrees." + + ::= { mplsFecClasses 2 } + +mplsFecIPv6HostAddrEntry OBJECT-TYPE + SYNTAX MplsFecIPv6HostAddrEntry + STATUS current + DESCRIPTION + "An instance of this class describes an IPv6 Host Address + FEC. " + + PIB-INDEX { mplsFecIPv6HostAddrPrid } + + ::= { mplsFecIPv6HostAddrTable 1 } + +MplsFecIPv6HostAddrEntry ::= SEQUENCE { + mplsFecIPv6HostAddrPrid InstanceId, + mplsFecIPv6HostAddrIpAddr InetAddressIPv6 } + +mplsFecIPv6HostAddrPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv6HostAddrEntry class." + + ::= { mplsFecIPv6HostAddrEntry 1 } + +mplsFecIPv6HostAddrIpAddr OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Host Address in a FEC." + + ::= { mplsFecIPv6HostAddrEntry 2 } + + +-- +-- IPv4 Prefix FEC Table +-- + + +mplsFecIPv4PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv4PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 Prefix FEC entrees." + + ::= { mplsFecClasses 3 } + +mplsFecIPv4PrefixEntry OBJECT-TYPE + SYNTAX MplsFecIPv4PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes a IPv4 Prefix FEC." + + PIB-INDEX { mplsFecIPv4PrefixPrid } + + ::= { mplsFecIPv4PrefixTable 1 } + +MplsFecIPv4PrefixEntry ::= SEQUENCE { + mplsFecIPv4PrefixPrid InstanceId, + mplsFecIPv4PrefixLength Unsigned32, + mplsFecIPv4PrefixIpPrefix InetAddressIPv4 } + +mplsFecIPv4PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv4PrefixEntry class." + + ::= { mplsFecIPv4PrefixEntry 1 } + +mplsFecIPv4PrefixLength OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of IPv4 Prefix in a FEC." + + ::= { mplsFecIPv4PrefixEntry 2 } + +mplsFecIPv4PrefixIpPrefix OBJECT-TYPE + SYNTAX InetAddressIPv4 + STATUS current + DESCRIPTION + "IPv4 Prefix in a FEC." + + ::= { mplsFecIPv4PrefixEntry 3 } + + +-- +-- IPv6 Prefix FEC Table +-- + + +mplsFecIPv6PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecIPv6PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv6 Prefix FEC entrees." + + ::= { mplsFecClasses 4 } + +mplsFecIPv6PrefixEntry OBJECT-TYPE + SYNTAX MplsFecIPv6PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes a IPv6 Prefix FEC." + + PIB-INDEX { mplsFecIPv6PrefixPrid } + + ::= { mplsFecIPv6PrefixTable 1 } + +MplsFecIPv6PrefixEntry ::= SEQUENCE { + mplsFecIPv6PrefixPrid InstanceId, + mplsFecIPv6PrefixLength Unsigned32, + mplsFecIPv6PrefixIpPrefix InetAddressIPv6 } + +mplsFecIPv6PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecIPv6PrefixEntry class." + + ::= { mplsFecIPv6PrefixEntry 1 } + +mplsFecIPv6PrefixLength OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of IPv6 Prefix in a FEC." + + ::= { mplsFecIPv6PrefixEntry 2 } + +mplsFecIPv6PrefixIpPrefix OBJECT-TYPE + SYNTAX InetAddressIPv6 + STATUS current + DESCRIPTION + "IPv6 Prefix in a FEC." + + ::= { mplsFecIPv6PrefixEntry 3 } + + +-- +-- Autonomous System Number FEC Table + +-- + +mplsFecASTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFecASEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Autonomous System Number FEC + entrees." + + ::= { mplsFecClasses 5 } + +mplsFecASEntry OBJECT-TYPE + SYNTAX MplsFecASEntry + STATUS current + DESCRIPTION + "An instance of this class describes an Autonomous System + Number FEC. " + + PIB-INDEX { mplsFecASPrid } + + ::= { mplsFecASTable 1 } + +MplsFecASEntry ::= SEQUENCE { + mplsFecASPrid InstanceId, + mplsFecASNumber Unsigned32 } + +mplsFecASPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFecASEntry class." + + ::= { mplsFecASEntry 1 } + +mplsFecASNumber OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Autonomous System Number in a FEC." + + ::= { mplsFecASEntry 2 } + + +-- +-- Label Request Classes +-- + +mplsLabReqClasses OBJECT IDENTIFIER ::= { mplsSetupPib 2 } + +-- +-- Generic Label Request Table + +-- + +mplsLabReqGenericTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqGenericEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Generic Label Request Object + entrees." + + ::= { mplsLRClasses 1 } + +mplsLabReqGenericEntry OBJECT-TYPE + SYNTAX MplsLabReqGenericEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS Generic Label + Request Object. " + + PIB-INDEX { mplsLabReqGenericPrid } + + ::= { mplsLabReqGenericTable 1 } + +MplsLabReqGenericEntry ::= SEQUENCE { + mplsLabReqGenericPrid InstanceId, + mplsLabReqGenericL3Pid Unsigned32 } + +mplsLabReqGenericPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqGenericEntry class." + + ::= { mplsLabReqGenericEntry 1 } + +mplsLabReqGenericL3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS Generic Label Request + Object." + + ::= { mplsLabReqGenericEntry 2 } + + +-- +-- ATM Label Request Table +-- + +mplsLabReqATMTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqATMEntry + PIB-ACCESS install + + STATUS current + DESCRIPTION + "This table consists of MPLS ATM Label Request Object + entrees." + + ::= { mplsLabReqClasses 1 } + +mplsLabReqATMEntry OBJECT-TYPE + SYNTAX MplsLabReqATMEntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS ATM Label + Request Object. " + + PIB-INDEX { mplsLabReqATMPrid } + + ::= { mplsLabReqATMTable 1 } + +MplsLabReqATMEntry ::= SEQUENCE { + mplsLabReqATMPrid InstanceId, + mplsLabReqATML3Pid Unsigned32, + mplsLabReqATMMbit Unsigned32, + mplsLabReqATMMinVpi Unsigned32, + mplsLabReqATMMaxVpi Unsigned32, + mplsLabReqATMMinVci Unsigned32, + mplsLabReqATMMaxVci Unsigned32 } + +mplsLabReqATMPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqATMEntry class." + + ::= { mplsLabReqATMEntry 1 } + +mplsLabReqATML3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS ATM Label Request + Object." + + ::= { mplsLabReqATMEntry 2 } + +mplsLabReqATMMbit OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Merging Capable Bit in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 3 } + + +mplsLabReqATMMinVpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value for VPI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 4 } + +mplsLabReqATMMaxVpi OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value for VPI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 5 } + +mplsLabReqATMMinVci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value for VCI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 6 } + +mplsLabReqATMMaxVci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value for VCI in MPLS ATM Label Request Object." + + ::= { mplsLabReqATMEntry 7 } + + +-- +-- Frame Relay Label Request Table +-- + +mplsLabReqFRTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLabReqFREntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Frame Relay Label Request + Object entrees." + + ::= { mplsLabReqClasses 1 } + +mplsLabReqFREntry OBJECT-TYPE + SYNTAX MplsLabReqFREntry + STATUS current + DESCRIPTION + "An instance of this class describes MPLS Frame Relay + Label Request Object. " + + + PIB-INDEX { mplsLabReqFRPrid } + + ::= { mplsLabReqFRTable 1 } + +MplsLabReqFREntry ::= SEQUENCE { + mplsLabReqFRPrid InstanceId, + mplsLabReqFRL3Pid Unsigned32, + mplsLabReqFRDlciLen Unsigned32, + mplsLabReqFRMinDlci Unsigned32, + mplsLabReqFRMaxDlci Unsigned32} + +mplsLabReqFRPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLabReqFREntry class." + + ::= { mplsLabReqFREntry 1 } + +mplsLabReqFRL3Pid OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Layer 3 Protocol Id in MPLS Frame Relay Label Request + Object." + + ::= { mplsLabReqFREntry 2 } + +mplsLabReqFRDlciLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of DLCI in MPLS Frame Relay Label Request Object." + + ::= { mplsLabReqFREntry 3 } + +mplsLabReqFRMinDlci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum value DLCI in MPLS Frame Relay Label Request + Object." + + ::= { mplsLabReqFREntry 4 } + +mplsLabReqFRMaxDlci OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum value DLCI in MPLS Frame Relay Label Request + Object." + + + ::= { mplsLabReqFREntry 5 } + + +-- +-- Flow (Traffic) Specification Classes +-- + +mplsFlowSpecClasses OBJECT IDENTIFIER ::= { mplsSetupPib 3 } + +-- +-- CRLDP Flow Spec Table +-- + +mplsFlowSpecCRLDPTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecCRLDPEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of CR-LDP Traffic (Flow) Specification + entrees." + + ::= { mplsFlowSpecClasses 1 } + +mplsFlowSpecCRLDPEntry OBJECT-TYPE + SYNTAX MplsFlowSpecCRLDPEntry + STATUS current + DESCRIPTION + "An instance of this class describes a CR-LDP Flow + Specification. " + + PIB-INDEX { mplsFlowSpecCRLDPPrid } + + ::= { mplsFlowSpecCRLDPTable 1 } + +MplsFlowSpecCRLDPEntry ::= SEQUENCE { + mplsFlowSpecCRLDPPrid InstanceId, + mplsFlowSpecCRLDPPDR Unsigned32, + mplsFlowSpecCRLDPPBS Unsigned32, + mplsFlowSpecCRLDPCDR Unsigned32, + mplsFlowSpecCRLDPCBS Unsigned32, + mplsFlowSpecCRLDPEBS Unsigned32, + mplsFlowSpecCRLDPWeight Unsigned32 } + +mplsFlowSpecCRLDPPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecCRLDPEntry class." + + ::= { mplsFlowSpecCRLDPEntry 1 } + + +mplsFlowSpecCRLDPPDR OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Data Rate in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 2 } + +mplsFlowSpecCRLDPPBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Burst Size in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 3 } + +mplsFlowSpecCRLDPCDR OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Committed Data Rate in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 4 } + +mplsFlowSpecCRLDPCBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Committed Burst Size in CR-LDP Flow Specification." + + + ::= { mplsFlowSpecCRLDPEntry 5 } + +mplsFlowSpecCRLDPEBS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Excess Burst Size in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 6 } + +mplsFlowSpecCRLDPWeight OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Weight parameter in CR-LDP Flow Specification." + + ::= { mplsFlowSpecCRLDPEntry 7 } + + +-- +-- RSVP Controlled Load Service Flow Spec Table +-- + + +mplsFlowSpecCLSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecCLSEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of RSVP-TE Integrated Services + (IntServ) Controlled Load Service Flow Specification + entrees." + + ::= { mplsFlowSpecClasses 2 } + +mplsFlowSpecCLSEntry OBJECT-TYPE + SYNTAX MplsFlowSpecCLSEntry + STATUS current + DESCRIPTION + "An instance of this class describes RSVP-TE IntServ + Controlled Load Service Flow Specification. " + + PIB-INDEX { mplsFlowSpecCLSPrid } + + ::= { mplsFlowSpecCLSTable 1 } + +MplsFlowSpecCLSEntry ::= SEQUENCE { + mplsFlowSpecCLSPrid InstanceId, + mplsFlowSpecCLSTokenRate Unsigned32, + mplsFlowSpecCLSBucketSize Unsigned32, + mplsFlowSpecCLSPeakRate Unsigned32, + mplsFlowSpecCLSMinPoliced Unsigned32, + mplsFlowSpecCLSMaxPktSize Unsigned32 } + +mplsFlowSpecCLSPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecCLSEntry class." + + ::= { mplsFlowSpecCLSEntry 1 } + +mplsFlowSpecCLSTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Rate in RSVP-TE IntServ Controlled Load Service + Flow Specification." + + ::= { mplsFlowSpecCLSEntry 2 } + +mplsFlowSpecCLSBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + + "Token Bucket Size in RSVP-TE IntServ Controlled Load + Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 3 } + +mplsFlowSpecCLSPeakRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Rate in RSVP-TE IntServ Controlled Load Service + Flow Specification." + + ::= { mplsFlowSpecCLSEntry 4 } + +mplsFlowSpecCLSMinPoliced OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum Policed Packet Size in RSVP-TE IntServ Controlled + Load Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 5 } + +mplsFlowSpecCLSMaxPktSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum Packet Size in RSVP-TE IntServ Controlled Load + Service Flow Specification." + + ::= { mplsFlowSpecCLSEntry 6 } + + + +-- +-- RSVP Guaranteed Service Flow Spec Table +-- + +mplsFlowSpecGSTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsFlowSpecGSEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of RSVP-TE Integrated Services + (IntServ) Guaranteed Service Flow Specification entrees." + + ::= { mplsFlowSpecClasses 3 } + +mplsFlowSpecGSEntry OBJECT-TYPE + SYNTAX MplsFlowSpecGSEntry + STATUS current + DESCRIPTION + "An instance of this class describes RSVP-TE IntServ + + Guaranteed Service Flow Specification. " + + PIB-INDEX { mplsFlowSpecGSPrid } + + ::= { mplsFlowSpecGSTable 1 } + +MplsFlowSpecGSEntry ::= SEQUENCE { + mplsFlowSpecGSPrid InstanceId, + mplsFlowSpecGSTokenRate Unsigned32, + mplsFlowSpecGSBucketSize Unsigned32, + mplsFlowSpecGSPeakRate Unsigned32, + mplsFlowSpecGSMinPoliced Unsigned32, + mplsFlowSpecGSMaxPktSize Unsigned32, + mplsFlowSpecGSRspecRate Unsigned32, + mplsFlowSpecGSSlackTerm Unsigned32 } + +mplsFlowSpecGSPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsFlowSpecGSEntry class." + + ::= { mplsFlowSpecGSEntry 1 } + +mplsFlowSpecGSTokenRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 2 } + +mplsFlowSpecGSBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Token Bucket Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 3 } + +mplsFlowSpecGSPeakRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Peak Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 4 } + +mplsFlowSpecGSMinPoliced OBJECT-TYPE + + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Minimum Policed Packet Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 5 } + +mplsFlowSpecGSMaxPktSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Maximum Packet Size in RSVP-TE IntServ Guaranteed + Service Flow Specification." + + ::= { mplsFlowSpecGSEntry 6 } + +mplsFlowSpecGSRspecRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Required Rate in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 7 } + +mplsFlowSpecGSSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Slack Term (Delay) in RSVP-TE IntServ Guaranteed Service + Flow Specification." + + ::= { mplsFlowSpecGSEntry 8 } + + +-- +-- Explicit Route Object (ERO) Classes +-- + +mplsEroClasses OBJECT IDENTIFIER ::= { mplsSetupPib 4 } + +-- +-- IPv4 Address Prefix Subobject Table +-- + +mplsEroIPv4PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroIPv4PrefixEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS IPv4 Prefix ERO Subobject + Entrees." + + + ::= { mplsEroClasses 1 } + +mplsEroIPv4PrefixEntry OBJECT-TYPE + SYNTAX MplsEroIPv4PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes IPv4 Prefix ERO + Subobject. " + + PIB-INDEX { mplsEroIPv4PrefixPrid } + + ::= { mplsEroIPv4PrefixTable 1 } + +MplsEroIPv4PrefixEntry ::= SEQUENCE { + mplsEroIPv4PrefixPrid InstanceId, + mplsEroIPv4PrefixLen Unsigned32, + mplsEroIPv4PrefixIPv4Addr InetAddressIPv4 } + +mplsEroIPv4PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroIPv4PrefixEntry class." + + ::= { mplsEroIPv4PrefixEntry 1 } + +mplsEroIPv4PrefixLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of Prefix in IPv4 Prefix ERO Subobject." + + ::= { mplsEroIPv4PrefixEntry 2 } + +mplsEroIPv4PrefixIPv4Addr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "IPv4 Prefix in IPv4 Prefix ERO Subobject." + + ::= { mplsEroIPv4PrefixEntry 3 } + + +-- +-- IPv6 Address Prefix Subobject Table +-- + +mplsEroIPv6PrefixTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroIPv6PrefixEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This table consists of MPLS IPv6 Prefix ERO Subobject + Entrees." + + ::= { mplsEroClasses 2 } + +mplsEroIPv6PrefixEntry OBJECT-TYPE + SYNTAX MplsEroIPv6PrefixEntry + STATUS current + DESCRIPTION + "An instance of this class describes IPv6 Prefix ERO + Subobject. " + + PIB-INDEX { mplsEroIPv6PrefixPrid } + + ::= { mplsEroIPv6PrefixTable 1 } + +MplsEroIPv6PrefixEntry ::= SEQUENCE { + mplsEroIPv6PrefixPrid InstanceId, + mplsEroIPv6PrefixLen Unsigned32, + mplsEroIPv6PrefixIPv6Addr InetAddressIPv6 } + +mplsEroIPv6PrefixPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroIPv6PrefixEntry class." + + ::= { mplsEroIPv6PrefixEntry 1 } + +mplsEroIPv6PrefixLen OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Length of Prefix in IPv6 Prefix ERO Subobject." + + ::= { mplsEroIPv6PrefixEntry 2 } + +mplsEroIPv6PrefixIPv6Addr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "IPv6 Prefix in IPv6 Prefix ERO Subobject." + + ::= { mplsEroIPv6PrefixEntry 3 } + + +-- +-- Autonomous System Number Subobject Table +-- + +mplsEroASNumberTable OBJECT-TYPE + + SYNTAX SEQUENCE OF MplsEroASNumberEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS Autonomous System Number ERO + Subobject Entrees." + + ::= { mplsEroClasses 3 } + +mplsEroASNumberEntry OBJECT-TYPE + SYNTAX MplsEroASNumberEntry + STATUS current + DESCRIPTION + "An instance of this class describes Autonomous System + Number ERO Subobject. " + + PIB-INDEX { mplsEroASNumberPrid } + + ::= { mplsEroASNumberTable 1 } + +MplsEroASNumberEntry ::= SEQUENCE { + mplsEroASNumberPrid InstanceId, + mplsEroASNumberASNumber Unsigned32} + +mplsEroASNumberPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroASNumberEntry class." + + ::= { mplsEroASNumberEntry 1 } + +mplsEroASNumberASNumber OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Autonomous System Number in Autonomous System Number + Subobject." + + ::= { mplsEroASNumberEntry 2 } + +-- +-- ERO Table +-- + +mplsEroTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS ERO Subobject Entrees." + + + ::= { mplsEroClasses 4 } + +mplsEroEntry OBJECT-TYPE + SYNTAX MplsEroEntry + STATUS current + DESCRIPTION + "An instance of this class describes ERO Subobject." + + PIB-INDEX { mplsEroPrid } + + ::= { mplsEroTable 1 } + +MplsEroEntry ::= SEQUENCE { + mplsEroPrid InstanceId, + mplsEroLoose Unsigned32, + mplsEroSubObject Prid } + +mplsEroPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroEntry class." + + ::= { mplsEroEntry 1 } + +mplsEroLoose OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Loose Bit in ERO Subobject." + + ::= { mplsEroEntry 2 } + +mplsEroSubObject OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of ERO subobject. It + could be an instance of mplsEroIpv4PrefixEntry, + mplsEroIpv6PrefixEntry or mplsEroASNumberEntry." + + ::= { mplsEroEntry 3 } + + +-- +-- Ero Group Table +-- + +mplsEroGroupTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsEroGroupEntry + PIB-ACCESS install + STATUS current + + DESCRIPTION + "This table defines ERO Subobject groups. Each group then is + used in an LSP definition. Grouping is done using a TagId + and order of Subobject in a group is provided by using a + precedence number." + + ::= { mplsEroClasses 5 } + +mplsEroGroupEntry OBJECT-TYPE + SYNTAX MplsEroGroupEntry + STATUS current + DESCRIPTION + "An instance of ERO Subobject group." + + PIB-INDEX { mplsEroGroupPrid } + + ::= { mplsEroGroupTable 1 } + +MplsEroGroupEntry ::= SEQUENCE { + mplsEroGroupPrid InstanceId, + mplsEroGroupId TagId, + mplsEroGroupIdPrecedence Unsigned32, + mplsEroGroupEroId ReferenceId } + +mplsEroGroupPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsEroGroupEntry class." + + ::= { mplsEroGroupEntry 1 } + +mplsEroGroupId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Tag Id (number) used to group multiple entries in this + table." + + ::= { mplsEroGroupEntry 2 } + +mplsEroGroupIdPrecedence OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This is used to provide ordering for entries with the same + Tag Id." + + ::= { mplsEroGroupEntry 3 } + +mplsEroGroupEroId OBJECT-TYPE + SYNTAX ReferenceId + + PIB-REFERENCES { mplsEroEntry } + STATUS current + DESCRIPTION + "Pointer to an instance of ERO Subobject. The ERO Subobject + with the same Id must be present." + + ::= { mplsEroGroupEntry 4 } + + +-- +-- Preemption Classes +-- + +mplsPreemptionClasses OBJECT IDENTIFIER ::= { mplsSetupPib 5 } + +-- +-- Preemption Table +-- + +mplsPreemptionTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsPreemptionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of LSP Preemption Entrees." + + ::= { mplsFlowSpecClasses 1 } + +mplsPreemptionEntry OBJECT-TYPE + SYNTAX MplsPreemptionEntry + STATUS current + DESCRIPTION + "An instance of this class describes a LSP Preemption + object. " + + PIB-INDEX { mplsPreemptionPrid } + + ::= { mplsPreemptionTable 1 } + +MplsPreemptionEntry ::= SEQUENCE { + mplsPreemptionPrid InstanceId, + mplsPreemptionSetupPrio Unsigned32, + mplsPreemptionHoldPrio Unsigned32 } + +mplsPreemptionPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsPreemptionEntry class." + + ::= { mplsPreemptionEntry 1 } + + +mplsPreemptionSetupPrio OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indicates MPLS LSP Setup Priority." + + ::= { mplsPreemptionEntry 2 } + +mplsPreemptionHoldPrio OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indicates MPLS LSP Holding Priority." + + ::= { mplsPreemptionEntry 3 } + + + +-- +-- LSP Setup Classes +-- + +mplsLspClasses OBJECT IDENTIFIER ::= { mplsSetupPib 6 } + + +-- +-- LSP Table +-- + +mplsLspTable OBJECT-TYPE + SYNTAX SEQUENCE OF MplsLspEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table consists of MPLS LSP Entrees. Entries in this + table essentially point to instances of other PRCs such as + FEC, Label Request, ERO, Flow Spec and Preemption to form + complete LSPs." + + ::= { mplsLspClasses 1 } + +mplsLspEntry OBJECT-TYPE + SYNTAX MplsLspEntry + STATUS current + DESCRIPTION + "An instance of MPLS LSP. " + + PIB-INDEX { mplsLspPrid } + + ::= { mplsLspTable 1 } + +MplsLspEntry ::= SEQUENCE { + mplsLspPrid InstanceId, + + mplsLspFec Prid, + mplsLspLabReq Prid, + mplsLspFlowSpec Prid, + mplsLspPreemption ReferenceId, + mplsLspEroList TagReference } + +mplsLspPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index that uniquely identifies an instance of + the mplsLspEntry class." + + ::= { mplsLspEntry 1 } + +mplsLspFec OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of FEC. It could be + an instance of mplsFecIPv4HostAddrEntry, + mplsFecIPv6HostAddrEntry, mplsFecIPv4PrefixEntry, + mplsFecIPv6PrefixEntry, mplsFecASEntry." + + ::= { mplsLspEntry 2 } + +mplsLspLabReq OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of Label Request + Object. It could be an instance of mplsLabReqGenericEntry, + mplsLabReqATMEntry, mplsLabReqFREntry." + + ::= { mplsLspEntry 3 } + +mplsLspFlowSpec OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This points to an instance of one type of FlowSpec. It + could be an instance of mplsFlowSpecCRLDPEntry, + mplsFlowSpecCLSEntry, mplsFlowSpecGSEntry." + + ::= { mplsLspEntry 4 } + +mplsLspPreemption OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { mplsPreemptionEntry } + STATUS current + DESCRIPTION + "This points to an instance of mplsPreemptionEntry." + + + ::= { mplsLspEntry 5 } + +mplsLspEroList OBJECT-TYPE + SYNTAX TagReference + PIB-TAG { mplsEroGroupId } + STATUS current + DESCRIPTION + "This references a Tag Id attribute in mplsEroGroup table. + All the entries in mplsEroGroup table that have this Tag Id + form the ERO List that is used for this LSP entry." + + ::= { mplsLspEntry 6 } + +END diff --git a/pibs/tubs/Makefile.am b/pibs/tubs/Makefile.am new file mode 100644 index 0000000..9fac639 --- /dev/null +++ b/pibs/tubs/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the pibs/tubs Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/pibs/tubs/Makefile.in b/pibs/tubs/Makefile.in new file mode 100644 index 0000000..c889564 --- /dev/null +++ b/pibs/tubs/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the pibs/tubs Makefile.in using automake. +# +# Copyright (c) 2002 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1507 2002-12-22 16:12:23Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pibs/tubs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pibs/tubs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pibs/tubs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/pibs/tubs/PARTITION-PIB b/pibs/tubs/PARTITION-PIB new file mode 100644 index 0000000..4b85ccb --- /dev/null +++ b/pibs/tubs/PARTITION-PIB @@ -0,0 +1,917 @@ +PARTITION-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, Integer32, + MODULE-IDENTITY, OBJECT-TYPE, TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId + FROM COPS-PR-SPPI-TC + TruthValue + FROM SNMPv2-TC + InetAddress + FROM INET-ADDRESS-MIB; + +switchPartitionPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } + LAST-UPDATED "200201010000Z" -- modified + ORGANIZATION "IETF" + CONTACT-INFO " + Todd A. Anderson + Intel + 2111 NE 25th Avenue + Hillsboro, OR 97124 USA + Phone: +1 503 712 1760 + Email: todd.a.anderson@intel.com + + Avri Doria + Nortel Networks + 600 Technology Park Drive + Billerica MA 01821 + Phone: +1 401 663 5024 + Email: avri@nortelnetworks.com + + Jiang Yong + Telia Research AB + 123 86 Farsta + Sweden + Phone: +46 (0) 8 713 81 25 + Email: yong.b.jiang@telia.se + + Jerry Sydir + CPlane Inc. + 5150 El Camino Real Suite B-31 + Los Altos, CA 94022 + Phone: +1(650) 938-8066 x102 + sydir@cplane.com + + Balaji Srinivasan + CPlane Inc. + 5150 El Camino Real Suite B-31 + Los Altos, CA 94022 + phone: +1(650) 938-8066 x103 + balaji@cplane.com" + DESCRIPTION +"The PIB module specifies a set of policy rule classes +for partitioning a single switch into a set of virtual +switches." + ::= { ibrpib 19 } + +vSConfig OBJECT IDENTIFIER ::= { switchPartitionPib 1 } + +PortDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The following type is used to specify the direction of the + label ranges and the bandwidth in the physical port of the + switch as well as the virtual port of the virtual switch." + SYNTAX INTEGER { + incoming(1), + outgoing(2) + } + +RatioString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model a floating number, + specifically here the cell loss ratio and a + probability number. It is required to be of the form + m:n, where m and n are both integers and represent a + floating number m divided by n." + SYNTAX OCTET STRING (SIZE(3)) + +VectorString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model a 2-dimentional + number (x,y). Here it is used to specify the vpi/vci + range for an ATM interface. 2 vectors, (minVpi, + minVci) and (maxVpi, maxVci), make up a label range. + It is required to have the format x:y" + SYNTAX OCTET STRING (SIZE(3..8)) + +PortType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the port type of the + switch" + SYNTAX INTEGER { + atm(1), + frameRelay(2), + ethernetSwitch(3), + mpls(4), + ipRouting(5) + } + +-- +--================================================================ +--This table performParamTable is used to represent the +--performance targets associated with the equivalent bandwidths +--for each port. This table allows the bandwidth, buffer space, +--and queue schedulers assigned to a VS to be simply abstracted +--using a single parameter: the Equivalent bandwidth per port +--assigned to the VS. Each entry in the VS interface bandwidth +--table uses its serviceParamIndex to point to a row in this +--table. Then the equivalent bandwidth points to a performance +--target set by the service descriptor parameters. The performance +--target is most common in the form of a loss target but also a +--delay target can be used. +--================================================================ +performParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF PerformParamEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured performance targets + for this switch" + ::= { switchPartitionPib 2 } + +performParamEntry OBJECT-TYPE + SYNTAX PerformParamEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives each performance target + parameters" + PIB-INDEX { performParamIndex } + ::= { performParamTable 1 } + +PerformParamEntry ::= + SEQUENCE { + performParamIndex InstanceId, + performPLR RatioString, + performMaxDelay INTEGER, + performDelayOverProb RatioString + } + +performParamIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies each performance target" + ::= { performParamEntry 1 } + +performPLR OBJECT-TYPE + SYNTAX RatioString + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This indicates the packet loss ratio " + ::= { performParamEntry 2 } + +performMaxDelay OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION " This indicates the maximum packet delay " + ::= { performParamEntry 3 } + +performDelayOverProb OBJECT-TYPE + SYNTAX RatioString + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION " This indicates the possibility that the packet + delay is bigger than the maximum delay allowed" + ::= { performParamEntry 4 } + +--=================================== +--End of performParamTable +--=================================== + +vSConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSConfigEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Each row in this table describes a virtual switch + that has been created on this switch" + ::= { vSConfig 1 } + +vSConfigEntry OBJECT-TYPE + SYNTAX VSConfigEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "Describes a virtual switch" + PIB-INDEX { vSConfigVSID } + ::= { vSConfigTable 1 } + +VSConfigEntry ::= + SEQUENCE { + vSConfigVSID InstanceId, + vSAdminStatus INTEGER, + vSOperStatus INTEGER, + vSNumPorts INTEGER, + vSNumRoutingEntries INTEGER +} + +vSConfigVSID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies the virtual switch within this switch" + ::= { vSConfigEntry 1 } + +vSAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + testing(3) + } + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The administrative state of the virtual switch. A + virtual switch's administrative status can not be + 'up' until all the necessary parameters for this + virtual switch have been specified" + ::={ vSConfigEntry 2 } + +vSOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + PIB-ACCESS notify + STATUS current -- war vorher: mandatory + DESCRIPTION "The current operational state of the virtual + switch" + ::={ vSConfigEntry 3 } + +vSNumPorts OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The number of virtual ports in this virtual + switch" + ::= {vSConfigEntry 4 } + +vSNumRoutingEntries OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION + "The number of routing table entries allocated to + this virtual switch. This value is ignored if the + switch has only per port routing tables (i.e., no + switch-wide routing table)" + ::= {vSConfigEntry 5 } + +--=============================== +-- END OF VSConfigTable +--=============================== + +vSCtrlConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSCtrlConfigEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per controller configured for + the VS" + ::={vSConfig 2} + +vSCtrlConfigEntry OBJECT-TYPE + SYNTAX VSCtrlConfigEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "Configuration for each controller for the VS" + PIB-INDEX { vSCtrlConfigVSID } + ::= {vSCtrlConfigTable 1} + +VSCtrlConfigEntry ::= + SEQUENCE { + vSCtrlConfigVSID InstanceId, + vSCtrlID INTEGER, + vSSciType INTEGER, + vSSciTransportType INTEGER, + vSSciTCPPortNumber INTEGER, + vSSciPortInterfaceNum INTEGER, + vSSciVpiNumber INTEGER, + vSSciVciNumber INTEGER +} + +vSCtrlConfigVSID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies the virtual switch within this switch" + ::= { vSCtrlConfigEntry 1 } + +vSCtrlID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies the virtual switch controller across + the SCI" + ::= { vSCtrlConfigEntry 2 } + +vSSciType OBJECT-TYPE + SYNTAX INTEGER { + gsmp(1), + megacop(2), + cops-pr(3) + } + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The switch control protocol used to control this + virtual switch" + ::= { vSCtrlConfigEntry 3 } + +vSSciTransportType OBJECT-TYPE + SYNTAX INTEGER { + ethernet(1), + tcp(2), + atm(3) + } + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Transport protocol used to transport SCI PDUs" + ::= { vSCtrlConfigEntry 4 } + +vSSciTCPPortNumber OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The local port number used to access the virtual + switch. Meaningful only when the transport type is + TCP" + ::= { vSCtrlConfigEntry 5 } + +vSSciPortInterfaceNum OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the physical interface over which control + messages are exchanged. " + ::= { vSCtrlConfigEntry 6 } + +vSSciVpiNumber OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The VPI on which the control messages are + exchanged. Meaningful only when the SCI transport + is ATM" + ::= { vSCtrlConfigEntry 7 } + +vSSciVciNumber OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The VCI on which the control messages are + exchanged. Meaningful only when the SCI transport + is ATM" + ::= { vSCtrlConfigEntry 8 } + +--=============================== +--END OF VSCtrlConfigTable +--=============================== + +vSPortConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Resource configuration for the virtual ports" + ::= { vSConfig 3 } + +vSPortConfigEntry OBJECT-TYPE + SYNTAX VSPortConfigEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port resource configured + for the virtual switch" + PIB-INDEX { vSPortConfigVSID } + UNIQUENESS { vSPortConfigVSID, vSPortConfigPortID } + ::= { vSPortConfigTable 1 } + +VSPortConfigEntry ::= + SEQUENCE { + vSPortConfigVSID InstanceId, + vSPortConfigPortID INTEGER, + vSPhysicalPortNumber INTEGER, + vSPortConfigPortNumBWs INTEGER, + vSPortConfigNumLabelRanges INTEGER, + vSPortNumRoutingEntries INTEGER +} + +vSPortConfigVSID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the virtual switch ID of the virtual + switch" + ::= { vSPortConfigEntry 1 } + +vSPortConfigPortID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the virtual port id in the current virtual + switch" + ::= { vSPortConfigEntry 2 } + +vSPhysicalPortNumber OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The physical port number that is mapped to virtual + port" + ::= { vSPortConfigEntry 3 } + +vSPortConfigPortNumBWs OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Number of equivalent bandwidth pointing to + different performance targets (packet loss ratio + and delay) in both incoming and outgoing directions + for this port." + ::= { vSPortConfigEntry 4 } + +vSPortConfigNumLabelRanges OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Number of label ranges for this port. The label + can be of different types depending on the + interface service type." + ::= { vSPortConfigEntry 5} + +vSPortNumRoutingEntries OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The number of routing table entries allocated to + this virtual port from the physical port. This + value is used only if the switch has per port + routing tables" + ::= {vSPortConfigEntry 6 } + +--================================ +-- END OF VSPortConfigTable +--================================ + + +-- +--================================================================ +-- The table VSConfigBWTable gives the equivalent bandwidth +--pointing to different service category for input and output at +--the virtual ports. The table has 3 indices; virtual switch ID, +--port ID and Bandwidth ID +--================================================================ + +vSPortConfigBWTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigBWEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured bandwidth information + for the various virtual ports" + ::= { vSConfig 4 } + +vSPortConfigBWEntry OBJECT-TYPE + SYNTAX VSPortConfigBWEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the configured bandwidth + information for the various virtual ports" + PIB-INDEX { vSPortConfigBWVSID } + UNIQUENESS { vSPortConfigBWVSID, + vSPortConfigBWPortID, + vSPortConfigBWID } + ::= { vSPortConfigBWTable 1 } + +VSPortConfigBWEntry ::= + SEQUENCE { + vSPortConfigBWVSID InstanceId, + vSPortConfigBWPortID INTEGER, + vSPortConfigBWID INTEGER, + vSPortConfigEqiBW INTEGER, + vSPortConfigIndex OBJECT IDENTIFIER, + vSPortConfigBWPortDirection PortDirection +} + +vSPortConfigBWVSID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the virtual switch ID of the virtual + switch" + ::= { vSPortConfigBWEntry 1 } + +vSPortConfigBWPortID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the virtual port id in the current virtual + switch" + ::= { vSPortConfigBWEntry 2 } + +vSPortConfigBWID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "This is the equivalent bandwidth ID in the current + virtual switch" + ::= { vSPortConfigBWEntry 3 } + +vSPortConfigEqiBW OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the equivalent bandwidth assigned + to this VS " + ::= { vSPortConfigBWEntry 4 } + +vSPortConfigIndex OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION " Indicates an entry in the performParamTable + which represents the performance target + associated to by this equivalent bandwidth " + ::= { vSPortConfigBWEntry 5 } + +vSPortConfigBWPortDirection OBJECT-TYPE + SYNTAX PortDirection + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the direction for which this equivalent + bandwidth is valid" + ::= { vSPortConfigBWEntry 6 } + +--================================== +-- END OF VSPortConfigBWTable +--================================== + + +-- +--================================================================ +-- The VSLabelRangeConfigTable gives the label ranges for input +-- and output at the virtual ports. +-- The tables have 3 indices; virtual switch ID, port ID and Range +-- ID +--================================================================ + +vSPortConfigLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured label range + information for the various virtual ports" + ::= { vSConfig 5 } + +vSPortConfigLabelRangeEntry OBJECT-TYPE + SYNTAX VSPortConfigLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port label ranges + configured for the virtual switch." + PIB-INDEX { vSPortConfigLabelRangeID } + UNIQUENESS { + vSPortConfigLabelRangeID } + ::= { vSPortConfigLabelRangeTable 1 } + +VSPortConfigLabelRangeEntry ::= + SEQUENCE { + vSPortConfigLabelRangeID InstanceId, + vSPortConfigPortDirection PortDirection, + vSPortConfigLabelRangeType INTEGER, + vSPortConfigLabelRangeIndex INTEGER +} + +vSPortConfigLabelRangeID OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Identifies the label range" + ::= { vSPortConfigLabelRangeEntry 1 } + +vSPortConfigPortDirection OBJECT-TYPE + SYNTAX PortDirection + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the direction for which this range is + valid" + ::= { vSPortConfigLabelRangeEntry 2 } + +vSPortConfigLabelRangeType OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the type of protocol for this label + range." + ::= { vSPortConfigLabelRangeEntry 3 } + +vSPortConfigLabelRangeIndex OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "The index into the protocol-dependent label + range table for this virtual switch." + ::= { vSPortConfigLabelRangeEntry 4 } + +--==================================== +-- END OF VSPortConfigLabelRangeTable +--==================================== + + +-- +--================================================================ +-- The table VSAtmLabelRangeTable is used to give the VPI/VCI +-- label ranges at the ATM virtual switch level. +--================================================================ + +vSAtmLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSAtmLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured ATM label range + information for the various switch ports on this + virtual switch." + ::= { vSConfig 6 } + +vSAtmLabelRangeEntry OBJECT-TYPE + SYNTAX VSAtmLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port ATM label ranges and + capabilities." + PIB-INDEX { vSAtmLabelRangeIndex } + ::= { vSAtmLabelRangeTable 1 } + +VSAtmLabelRangeEntry ::= + SEQUENCE { + vSAtmLabelRangeIndex InstanceId, + vSAtmLabelRangeMinVpiVci VectorString, + vSAtmLabelRangeMaxVpiVci VectorString, + vSAtmLabelRangeAllowsVP TruthValue, + vSAtmLabelRangeAllowsP2MP TruthValue, + vSAtmLabelRangeAllowsMP2P TruthValue, + vSAtmLabelRangeMaxMulticast INTEGER +} + +vSAtmLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSAtmLabelRangeEntry 1 } + +vSAtmLabelRangeMinVpiVci OBJECT-TYPE + SYNTAX VectorString + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Lower bound of the vpi and vci range." + ::= { vSAtmLabelRangeEntry 2 } + +vSAtmLabelRangeMaxVpiVci OBJECT-TYPE + SYNTAX VectorString + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Upper bound of the vpi and vci range." + ::= { vSAtmLabelRangeEntry 3 } + +vSAtmLabelRangeAllowsVP OBJECT-TYPE + SYNTAX TruthValue + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates whether this label range can be used for + VP connections." + ::= { vSAtmLabelRangeEntry 4 } + +vSAtmLabelRangeAllowsP2MP OBJECT-TYPE + SYNTAX TruthValue + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates whether this label range can be used to + create point-to-multipoint connections." + ::= { vSAtmLabelRangeEntry 5 } + +vSAtmLabelRangeAllowsMP2P OBJECT-TYPE + SYNTAX TruthValue + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates whether this label range can be used to + create multipoint-to-point connections." + ::= { vSAtmLabelRangeEntry 6 } + +vSAtmLabelRangeMaxMulticast OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the maximum number of multicast + connections that can be created within this range." + ::= { vSAtmLabelRangeEntry 7 } + +--==================================== +-- END OF VSAtmLabelRangeTable +--==================================== + + +-- +--================================================================ +-- The table VSFrLabelRangeTable is used to give the DLCI label +-- ranges on a Frame Relay interface for a virtual switch. +--================================================================ + +vSFrLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSFrLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured label range + information for the various frame relay ports." + ::= { vSConfig 7 } + +vSFrLabelRangeEntry OBJECT-TYPE + SYNTAX VSFrLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port label ranges" + PIB-INDEX { vSFrLabelRangeIndex } + ::= { vSFrLabelRangeTable 1 } + +VSFrLabelRangeEntry ::= + SEQUENCE { + vSFrLabelRangeIndex InstanceId, + vSFrLabelRangeMinDLCI INTEGER, + vSFrLabelRangeMaxDLCI INTEGER +} + +vSFrLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSFrLabelRangeEntry 1 } + + +vSFrLabelRangeMinDLCI OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Lower bound of the DLCI range for this Frame Relay + interface." + ::= { vSFrLabelRangeEntry 2 } + +vSFrLabelRangeMaxDLCI OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Upper bound of the DLCI range for this Frame Relay + interface." + ::= { vSFrLabelRangeEntry 3 } + + +--==================================== +-- END OF VSFrLabelRangeTable +--==================================== + +-- +--================================================================ +-- The table VSVlanLabelRangeTable is used to give the VLAN ID +-- label ranges on a VLAN-aware Ethernet interface for a virtual +-- switch. +--================================================================ + +vSVlanLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSVlanLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured label range + information for the VLAN-aware Ethernet ports." + ::= { vSConfig 8 } + +vSVlanLabelRangeEntry OBJECT-TYPE + SYNTAX VSVlanLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port VLAN ID ranges" + PIB-INDEX { vSVlanLabelRangeIndex } + ::= { vSVlanLabelRangeTable 1 } + +VSVlanLabelRangeEntry ::= + SEQUENCE { + vSVlanLabelRangeIndex InstanceId, + vSVlanLabelRangeMinID INTEGER, + vSVlanLabelRangeMaxID INTEGER +} + +vSVlanLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSVlanLabelRangeEntry 1 } + +vSVlanLabelRangeMinID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Lower bound of the VLAN ID range on this VLAN- + aware Ethernet switch interface." + ::= { vSVlanLabelRangeEntry 2 } + +vSVlanLabelRangeMaxID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Upper bound of the VLAN ID range on this VLAN- + aware Ethernet switch interface." + ::= { vSVlanLabelRangeEntry 3 } + +--==================================== +-- END OF VSVlanLabelRangeTable +--==================================== + +-- +--================================================================ +-- The table mplsLabelRangeTable is used to give the label ranges +-- on a MPLS interface. +--================================================================ + +vSMplsLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSMplsLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured label range + information for MPLS ports." + ::= { vSConfig 9 } + +vSMplsLabelRangeEntry OBJECT-TYPE + SYNTAX VSMplsLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port MPLS ranges." + PIB-INDEX { vSMplsLabelRangeIndex } + ::= { vSMplsLabelRangeTable 1 } + +VSMplsLabelRangeEntry ::= + SEQUENCE { + vSMplsLabelRangeIndex InstanceId, + vSMplsLabelRangeMinID INTEGER, + vSMplsLabelRangeMaxID INTEGER +} + +vSMplsLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSMplsLabelRangeEntry 1 } + + +vSMplsLabelRangeMinID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Lower bound of the MPLS label range." + ::= { vSMplsLabelRangeEntry 2 } + +vSMplsLabelRangeMaxID OBJECT-TYPE + SYNTAX INTEGER + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Upper bound of the MPLS label range." + ::= { vSMplsLabelRangeEntry 3 } + +--==================================== +-- END OF VSMplsLabelRangeTable +--==================================== + +--================================================================ +-- The table VSIpLabelRangeTable is used to give the IP ranges on +-- an IP interface for a virtual switch. +--================================================================ + +vSIpLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSIpLabelRangeEntry + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Table giving the configured IP ranges for IP + ports." + ::= { vSConfig 10 } + +vSIpLabelRangeEntry OBJECT-TYPE + SYNTAX VSIpLabelRangeEntry + STATUS current -- war vorher: mandatory + DESCRIPTION "This table gives the per port IP ranges." + PIB-INDEX { vSIpLabelRangeIndex } + ::= { vSIpLabelRangeTable 1 } + +VSIpLabelRangeEntry ::= + SEQUENCE { + vSIpLabelRangeIndex InstanceId, + vSIpLabelRangeIP InetAddress, + vSIpLabelRangeIPMask InetAddress +} + +vSIpLabelRangeIndex OBJECT-TYPE + SYNTAX InstanceId + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Index into this table." + ::= { vSIpLabelRangeEntry 1 } + +vSIpLabelRangeIP OBJECT-TYPE + SYNTAX InetAddress + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the IP address for a particular network." + ::= { vSIpLabelRangeEntry 2 } + +vSIpLabelRangeIPMask OBJECT-TYPE + SYNTAX InetAddress + PIB-ACCESS install + STATUS current -- war vorher: mandatory + DESCRIPTION "Indicates the subnet's mask address." + ::= { vSIpLabelRangeEntry 3 } + +--==================================== +-- END OF VSIpLabelRangeTable +--==================================== + +END diff --git a/pibs/tubs/PARTITION-PIB-orig b/pibs/tubs/PARTITION-PIB-orig new file mode 100644 index 0000000..1de7854 --- /dev/null +++ b/pibs/tubs/PARTITION-PIB-orig @@ -0,0 +1,924 @@ +PARTITION-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, IpAddress, Integer32, + MODULE-IDENTITY, OBJECT-TYPE, + PolicyInstanceId + FROM COPS-PR-SPPI + TEXTUAL-CONVENTION + FROM SNMPv2-TC; + +switchPartitionPib MODULE-IDENTITY + CLIENT-TYPE { TBD } + LAST-UPDATED "TBS" + ORGANIZATION "IETF" + CONTACT-INFO " + Todd A. Anderson + Intel + 2111 NE 25th Avenue + Hillsboro, OR 97124 USA + Phone: +1 503 712 1760 + Email: todd.a.anderson@intel.com + + Avri Doria + Nortel Networks + 600 Technology Park Drive + Billerica MA 01821 + Phone: +1 401 663 5024 + Email: avri@nortelnetworks.com + + Jiang Yong + Telia Research AB + 123 86 Farsta + Sweden + Phone: +46 (0) 8 713 81 25 + Email: yong.b.jiang@telia.se + + Jerry Sydir + CPlane Inc. + 5150 El Camino Real Suite B-31 + Los Altos, CA 94022 + Phone: +1(650) 938-8066 x102 + sydir@cplane.com + + Balaji Srinivasan + CPlane Inc. + 5150 El Camino Real Suite B-31 + Los Altos, CA 94022 + phone: +1(650) 938-8066 x103 + balaji@cplane.com" + DESCRIPTION +"The PIB module specifies a set of policy rule classes +for partitioning a single switch into a set of virtual +switches." + ::= { tbd } + +VSConfig OBJECT IDENTIFIER ::= { switchPartitionPib 1 } + +PortDirection ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The following type is used to specify the direction of the + label ranges and the bandwidth in the physical port of the + switch as well as the virtual port of the virtual switch." + SYNTAX INTEGER { + incoming(1), + outgoing(2) + } + +RatioString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model a floating number, + specifically here the cell loss ratio and a + probability number. It is required to be of the form + m:n, where m and n are both integers and represent a + floating number m divided by n." + SYNTAX OCTET STRING (SIZE(3)) + +VectorString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model a 2-dimentional + number (x,y). Here it is used to specify the vpi/vci + range for an ATM interface. 2 vectors, (minVpi, + minVci) and (maxVpi, maxVci), make up a label range. + It is required to have the format x:y" + SYNTAX OCTET STRING (SIZE(3..8)) + +PortType := TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This data type is used to model the port type of the + switch" + SYNTAX INTEGER { + atm(1), + frameRelay(2), + ethernetSwitch(3), + mpls(4), + ipRouting(5) + } + +-- +================================================================== +--This table performParamTable is used to represent the +--performance targets associated with the equivalent bandwidths +--for each port. This table allows the bandwidth, buffer space, +--and queue schedulers assigned to a VS to be simply abstracted +--using a single parameter: the Equivalent bandwidth per port +--assigned to the VS. Each entry in the VS interface bandwidth +--table uses its serviceParamIndex to point to a row in this +--table. Then the equivalent bandwidth points to a performance +--target set by the service descriptor parameters. The performance +--target is most common in the form of a loss target but also a +--delay target can be used. +================================================================== +performParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF PerformParamEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured performance targets + for this switch" + ::= { switchPartitionPib 2 } + +performParamEntry OBJECT-TYPE + SYNTAX PerformParamEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives each performance target + parameters" + INDEX { performParamIndex } + ::= { performParamTable 1 } + +PerformParamEntry ::= + SEQUENCE { + performParamIndex PolicyInstanceId, + performPLR RatioString, + performMaxDelay INTEGER, + performDelayOverProb RatioString + } + +performParamIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies each performance target" + ::= { performParamEntry 1 } + +performPLR OBJECT-TYPE + SYNTAX RatioString + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This indicates the packet loss ratio " + ::= { performParamEntry 2 } + +performMaxDelay OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION " This indicates the maximum packet delay " + ::= { performParamEntry 3 } + +performDelayOverProb OBJECT-TYPE + SYNTAX RatioString + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION " This indicates the possibility that the packet + delay is bigger than the maximum delay allowed" + ::= { performParamEntry 4 } + +--=================================== +--End of performParamTable +--=================================== + +VSConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Each row in this table describes a virtual switch + that has been created on this switch" + ::= { VSConfig 1 } + +VSConfigEntry OBJECT-TYPE + SYNTAX VSConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Describes a virtual switch" + INDEX { VSConfigVSID } + ::= { VSConfigTable 1 } + +VSConfigEntry ::= + SEQUENCE { + VSConfigVSID PolicyInstanceId, + VSAdminStatus INTEGER, + VSOperStatus INTEGER, + VSNumPorts INTEGER, + VSNumRoutingEntries INTEGER +} + +VSConfigVSID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies the virtual switch within this switch" + ::= { VSConfigEntry 1 } + +VSAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2), + testing(3) + } + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The administrative state of the virtual switch. A + virtual switch's administrative status can not be + "up" until all the necessary parameters for this + virtual switch have been specified" + ::={ VSConfigEntry 2 } + +VSOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), + down(2) + } + POLICY-ACCESS NOTIFY + STATUS mandatory + DESCRIPTION "The current operational state of the virtual + switch" + ::={ VSConfigEntry 3 } + +VSNumPorts OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The number of virtual ports in this virtual + switch" + ::= {VSConfigEntry 4 } + +VSNumRoutingEntries OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION + "The number of routing table entries allocated to + this virtual switch. This value is ignored if the + switch has only per port routing tables (i.e., no + switch-wide routing table)" + ::= {VSConfigEntry 5 } + +--=============================== +-- END OF VSConfigTable +--=============================== + +VSCtrlConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSCtrlConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per controller configured for + the VS" + ::={VSConfig 2} + +VSCtrlConfigEntry OBJECT-TYPE + SYNTAX VSCtrlConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Configuration for each controller for the VS" + INDEX { VSConfigVSID } + ::= {VSCtrlConfigTable 1} + +VSCtrlConfigEntry ::= + SEQUENCE { + VSConfigVSID PolicyInstanceId, + VSCtrlID INTEGER, + VSSciType INTEGER, + VSSciTransportType INTEGER, + VSSciTCPPortNumber INTEGER, + VSSciPortInterfaceNum INTEGER, + VSSciVpiNumber INTEGER, + VSSciVciNumber INTEGER +} + +VSConfigVSID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies the virtual switch within this switch" + ::= { VSCtrlConfigEntry 1 } + +VSCtrlID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies the virtual switch controller across + the SCI" + ::= { VSCtrlConfigEntry 2 } + +VSSciType OBJECT-TYPE + SYNTAX INTEGER { + gsmp(1), + megacop(2), + cops-pr(3) + } + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The switch control protocol used to control this + virtual switch" + ::= { VSCtrlConfigEntry 3 } + +VSSciTransportType OBJECT-TYPE + SYNTAX INTEGER { + ethernet(1), + tcp(2), + atm(3) + } + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Transport protocol used to transport SCI PDUs" + ::= { VSCtrlConfigEntry 4 } + +VSSciTCPPortNumber OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The local port number used to access the virtual + switch. Meaningful only when the transport type is + TCP" + ::= { VSCtrlConfigEntry 5 } + +VSSciPortInterfaceNum OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the physical interface over which control + messages are exchanged. " + ::= { VSCtrlConfigEntry 6 } + +VSSciVpiNumber OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The VPI on which the control messages are + exchanged. Meaningful only when the SCI transport + is ATM" + ::= { VSCtrlConfigEntry 7 } + +VSSciVciNumber OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The VCI on which the control messages are + exchanged. Meaningful only when the SCI transport + is ATM" + ::= { VSCtrlConfigEntry 8 } + +--=============================== +--END OF VSCtrlConfigTable +--=============================== + +VSPortConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Resource configuration for the virtual ports" + ::= { VSConfig 3 } + +VSPortConfigEntry OBJECT-TYPE + SYNTAX VSPortConfigEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port resource configured + for the virtual switch" + INDEX { VSConfigVSID } + UNIQUENESS { VSConfigVSID, VSPortConfigPortID } + ::= { VSPortConfigTable 1 } + +VSPortConfigEntry ::= + SEQUENCE { + VSPortConfigVSID PolicyInstanceId, + VSPortConfigPortID INTEGER, + VSPhysicalPortNumber INTEGER, + VSPortConfigPortNumBWs INTEGER, + VSPortConfigNumLabelRanges INTEGER, + VSPortNumRoutingEntries INTEGER +} + +VSPortConfigVSID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the virtual switch ID of the virtual + switch" + ::= { VSPortConfigEntry 1 } + +VSPortConfigPortID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the virtual port id in the current virtual + switch" + ::= { VSPortConfigEntry 2 } + +VSPhysicalPortNumber OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The physical port number that is mapped to virtual + port" + ::= { VSPortConfigEntry 3 } + +VSPortConfigPortNumBWs OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Number of equivalent bandwidth pointing to + different performance targets (packet loss ratio + and delay) in both incoming and outgoing directions + for this port." + ::= { VSPortConfigEntry 4 } + +VSPortConfigNumLabelRanges OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Number of label ranges for this port. The label + can be of different types depending on the + interface service type." + ::= { VSPortConfigEntry 5} + +VSPortNumRoutingEntries OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "The number of routing table entries allocated to + this virtual port from the physical port. This + value is used only if the switch has per port + routing tables" + ::= {VSPortConfigEntry 6 } + +--================================ +-- END OF VSPortConfigTable +--================================ + + +-- +================================================================== +-- The table VSConfigBWTable gives the equivalent bandwidth +--pointing to different service category for input and output at +--the virtual ports. The table has 3 indices; virtual switch ID, +--port ID and Bandwidth ID +================================================================== + +VSPortConfigBWTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigBWEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured bandwidth information + for the various virtual ports" + ::= { VSConfig 4 } + +VSPortConfigBWEntry OBJECT-TYPE + SYNTAX VSPortConfigBWEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the configured bandwidth + information for the various virtual ports" + INDEX { VSPortConfigVSID } + UNIQUENESS { VSPortConfigVSID, + VSPortConfigPortID, + VSPortConfigBWID } + ::= { VSPortConfigBWTable 1 } + +VSPortConfigBWConfigEntry ::= + SEQUENCE { + VSPortConfigVSID PolicyInstanceId, + VSPortConfigPortID INTEGER, + VSPortConfigBWID INTEGER, + VSPortConfigEqiBW INTEGER, + performParamIndex OBJECT IDENTIFIER, + VSPortConfigBWPortDirection PortDirection +} + +VSPortConfigVSID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the virtual switch ID of the virtual + switch" + ::= { VSPortConfigBWEntry 1 } + +VSPortConfigPortID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the virtual port id in the current virtual + switch" + ::= { VSPortConfigBWEntry 2 } + +VSPortConfigBWID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This is the equivalent bandwidth ID in the current + virtual switch" + ::= { VSPortConfigBWEntry 3 } + +VSPortConfigEqiBW OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the equivalent bandwidth assigned + to this VS " + ::= { VSPortConfigBWEntry 4 } + +performParamIndex OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION " Indicates an entry in the performParamTable + which represents the performance target + associated to by this equivalent bandwidth " + ::= { VSPortConfigBWEntry 5 } + +VSPortConfigBWPortDirection OBJECT-TYPE + SYNTAX PortDirection + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the direction for which this equivalent + bandwidth is valid" + ::= { VSPortConfigBWEntry 6 } + +--================================== +-- END OF VSPortConfigBWTable +--================================== + + +-- +================================================================== +-- The VSLabelRangeConfigTable gives the label ranges for input +-- and output at the virtual ports. +-- The tables have 3 indices; virtual switch ID, port ID and Range +-- ID +================================================================== + +VSPortConfigLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSPortConfigLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured label range + information for the various virtual ports" + ::= { VSConfig 5 } + +VSPortConfigLabelRangeEntry OBJECT-TYPE + SYNTAX VSPortConfigLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port label ranges + configured for the virtual switch." + INDEX { VSPortConfigVSID } + UNIQUENESS { VSPortConfigVSID, + VSPortConfigPortID, + VSPortConfigLabelRangeID } + ::= { VSPortConfigLabelRangeTable 1 } + +VSPortConfigLabelRangeEntry ::= + SEQUENCE { + VSPortConfigLabelRangeID PolicyInstanceId, + VSPortConfigPortDirection PortDirection, + VSPortConfigRangeType INTEGER, + VSPortConfigRangeIndex INTEGER +} + +VSPortConfigLabelRangeID OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Identifies the label range" + ::= { VSPortConfigLabelRangeEntry 1 } + +VSPortConfigPortDirection OBJECT-TYPE + SYNTAX PortDirection + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the direction for which this range is + valid" + ::= { VSPortConfigLabelRangeEntry 2 } + +VSPortConfigLabelRangeType OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + DESCRIPTION "Indicates the type of protocol for this label + range." + STATUS mandatory + ::= { VSPortConfigLabelRangeEntry 3 } + +VSPortConfigLabelRangeIndex OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + DESCRIPTION "The index into the protocol-dependent label + range table for this virtual switch." + STATUS mandatory + ::= { VSPortConfigLabelRangeEntry 4 } + +--==================================== +-- END OF VSPortConfigLabelRangeTable +--==================================== + + +-- +================================================================== +-- The table VSAtmLabelRangeTable is used to give the VPI/VCI +-- label ranges at the ATM virtual switch level. +================================================================== + +VSAtmLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSAtmLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured ATM label range + information for the various switch ports on this + virtual switch." + ::= { VSConfig 6 } + +VSAtmLabelRangeEntry OBJECT-TYPE + SYNTAX VSAtmLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port ATM label ranges and + capabilities." + INDEX { VSAtmLabelRangeIndex } + ::= { VSAtmLabelRangeTable 1 } + +VSAtmLabelRangeEntry ::= + SEQUENCE { + VSAtmLabelRangeIndex PolicyInstanceId, + VSAtmLabelRangeMinVpiVci VectorString, + VSAtmLabelRangeMaxVpiVci VectorString, + VSAtmLabelRangeAllowsVP BOOLEAN, + VSAtmLabelRangeAllowsP2MP BOOLEAN, + VSAtmLabelRangeAllowsMP2P BOOLEAN, + VSAtmLabelRangeMaxMulticast INTEGER +} + +VSAtmLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSAtmLabelRangeEntry 1 } + +VSAtmLabelRangeMinVpiVci OBJECT-TYPE + SYNTAX VectorString + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Lower bound of the vpi and vci range." + ::= { VSAtmLabelRangeEntry 2 } + +VSAtmLabelRangeMaxVpiVci OBJECT-TYPE + SYNTAX VectorString + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Upper bound of the vpi and vci range." + ::= { VSAtmLabelRangeEntry 3 } + +VSAtmLabelRangeAllowsVP OBJECT-TYPE + SYNTAX BOOLEAN + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates whether this label range can be used for + VP connections." + ::= { VSAtmLabelRangeEntry 4 } + +VSAtmLabelRangeAllowsP2MP OBJECT-TYPE + SYNTAX BOOLEAN + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates whether this label range can be used to + create point-to-multipoint connections." + ::= { VSAtmLabelRangeEntry 5 } + +VSAtmLabelRangeAllowsMP2P OBJECT-TYPE + SYNTAX BOOLEAN + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates whether this label range can be used to + create multipoint-to-point connections." + ::= { VSAtmLabelRangeEntry 6 } + +VSAtmLabelRangeMaxMulticast OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the maximum number of multicast + connections that can be created within this range." + ::= { VSAtmLabelRangeEntry 7 } + +--==================================== +-- END OF VSAtmLabelRangeTable +--==================================== + + +-- +================================================================== +-- The table VSFrLabelRangeTable is used to give the DLCI label +-- ranges on a Frame Relay interface for a virtual switch. +================================================================== + +VSFrLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSFrLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured label range + information for the various frame relay ports." + ::= { VSConfig 7 } + +VSFrLabelRangeEntry OBJECT-TYPE + SYNTAX VSFrLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port label ranges" + INDEX { VSFrLabelRangeIndex } + ::= { VSFrLabelRangeTable 1 } + +VSFrLabelRangeEntry ::= + SEQUENCE { + VSFrLabelRangeIndex PolicyInstanceId, + VSFrLabelRangeMinDLCI INTEGER, + VSFrLabelRangeMaxDLCI INTEGER +} + +VSFrLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSFrLabelRangeEntry 1 } + + +VSFrLabelRangeMinDLCI OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Lower bound of the DLCI range for this Frame Relay + interface." + ::= { VSFrLabelRangeEntry 2 } + +VSFrLabelRangeMaxDLCI OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Upper bound of the DLCI range for this Frame Relay + interface." + ::= { VSFrLabelRangeEntry 3 } + + +--==================================== +-- END OF VSFrLabelRangeTable +--==================================== + +-- +================================================================== +-- The table VSVlanLabelRangeTable is used to give the VLAN ID +-- label ranges on a VLAN-aware Ethernet interface for a virtual +-- switch. +================================================================== + +VSVlanLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSVlanLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured label range + information for the VLAN-aware Ethernet ports." + ::= { VSConfig 8 } + +VSVlanLabelRangeEntry OBJECT-TYPE + SYNTAX VSVlanLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port VLAN ID ranges" + INDEX { VSVlanLabelRangeIndex } + ::= { VSVlanLabelRangeTable 1 } + +VSVlanLabelRangeEntry ::= + SEQUENCE { + VSVlanLabelRangeIndex PolicyInstanceId, + VSVlanLabelRangeMinID INTEGER, + VSVlanLabelRangeMaxID INTEGER +} + +VSVlanLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSVlanLabelRangeEntry 1 } + +VSVlanLabelRangeMinID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Lower bound of the VLAN ID range on this VLAN- + aware Ethernet switch interface." + ::= { VSVlanLabelRangeEntry 2 } + +VSVlanLabelRangeMaxID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Upper bound of the VLAN ID range on this VLAN- + aware Ethernet switch interface." + ::= { VSVlanLabelRangeEntry 3 } + +--==================================== +-- END OF VSVlanLabelRangeTable +--==================================== + +-- +================================================================== +-- The table mplsLabelRangeTable is used to give the label ranges +-- on a MPLS interface. +================================================================== + +VSMplsLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSMplsLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured label range + information for MPLS ports." + ::= { VSConfig 9 } + +VSMplsLabelRangeEntry OBJECT-TYPE + SYNTAX VSMplsLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port MPLS ranges." + INDEX { VSMplsLabelRangeIndex } + ::= { VSMplsLabelRangeTable 1 } + +VSMplsLabelRangeEntry ::= + SEQUENCE { + VSMplsLabelRangeIndex PolicyInstanceId, + VSMplsLabelRangeMinID INTEGER, + VSMplsLabelRangeMaxID INTEGER +} + +VSMplsLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSMplsLabelRangeEntry 1 } + + +VSMplsLabelRangeMinID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Lower bound of the MPLS label range." + ::= { VSMplsLabelRangeEntry 2 } + +VSMplsLabelRangeMaxID OBJECT-TYPE + SYNTAX INTEGER + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Upper bound of the MPLS label range." + ::= { VSMplsLabelRangeEntry 3 } + +--==================================== +-- END OF VSMplsLabelRangeTable +--==================================== + +================================================================== +-- The table VSIpLabelRangeTable is used to give the IP ranges on +-- an IP interface for a virtual switch. +================================================================== + +VSIpLabelRangeTable OBJECT-TYPE + SYNTAX SEQUENCE OF VSIpLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Table giving the configured IP ranges for IP + ports." + ::= { VSConfig 10 } + +VSIpLabelRangeEntry OBJECT-TYPE + SYNTAX VSIpLabelRangeEntry + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "This table gives the per port IP ranges." + INDEX { VSIpLabelRangeIndex } + ::= { VSIpLabelRangeTable 1 } + +VSIpLabelRangeEntry ::= + SEQUENCE { + VSIpLabelRangeIndex PolicyInstanceId, + VSIpLabelRangeIP IpAddress, + VSIpLabelRangeIPMask IpAddress +} + +VSIpLabelRangeIndex OBJECT-TYPE + SYNTAX PolicyInstanceId + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Index into this table." + ::= { VSIpLabelRangeEntry 1 } + +VSIpLabelRangeIP OBJECT-TYPE + SYNTAX IpAddress + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the IP address for a particular network. + ::= { VSIpLabelRangeEntry 2 } + +VSIpLabelRangeIPMask OBJECT-TYPE + SYNTAX IpAddress + POLICY-ACCESS INSTALL + STATUS mandatory + DESCRIPTION "Indicates the subnet's mask address." + ::= { VSIpLabelRangeEntry 3 } + +--==================================== +-- END OF VSIpLabelRangeTable +--==================================== + +END diff --git a/pibs/tubs/POLICY-FRAMEWORK-PIB b/pibs/tubs/POLICY-FRAMEWORK-PIB new file mode 100644 index 0000000..f92373f --- /dev/null +++ b/pibs/tubs/POLICY-FRAMEWORK-PIB @@ -0,0 +1,263 @@ +POLICY-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, MODULE-IDENTITY, OBJECT-TYPE, + TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId + FROM COPS-PR-SPPI-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +policyFrameworkPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- to be done + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + + DESCRIPTION + "A PIB module containing the base set of policy + rule classes that are required for support of + all policies." + + ::= { ibrpib 15 } + +policyBasePibClasses + OBJECT IDENTIFIER ::= { policyFrameworkPib 1 } + +-- +-- Textual Conventions +-- + +-- +-- Interface Role +-- + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A display string but where the characters '+', ' ' (space), + NULL, LF, CR, BELL, BS, HT (tab) VT and FF are illegal." + + SYNTAX OCTET STRING (SIZE (0..31)) + +-- +-- Interface Role Combination +-- + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Display string consisting of a set of roles concatenated + with a '+' character where the roles are in lexicographic + order from minimum to maximum." + + SYNTAX OCTET STRING (SIZE (0..255)) + +-- +-- Device Configuration Group +-- + +-- This group contains device configuration information. This +-- configuration is either set by management or reflects the physical +-- configuration of the device. This configuration is generally +-- reported to the PDP (i.e., the policy server) when configuration +-- is performed by the policy server so that the PDP can determine +-- what policies to download to the PEP (i.e., the device). Class +-- instances may also be downloaded by a network manager prior to +-- static configuration. +-- + +policyDeviceConfig OBJECT IDENTIFIER ::= { policyBasePibClasses 1 } + +-- +-- PRC Support Table +-- + +policyPrcSupportTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyPrcSupportEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that the device + supports and a bit string to indicate the attributes of the + class that are supported. These PRIs are sent to the PDP to + indicate to the PDP which PRCs, and which attributes of these + + + PRCs, the device supports. This table can also be downloaded + by a network manager when static configuration is used. + + All install and install-notify PRCs supported by the device + must be represented in this table." + + ::= { policyDeviceConfig 1 } + +policyPrcSupportEntry OBJECT-TYPE + SYNTAX PolicyPrcSupportEntry + STATUS current + DESCRIPTION + "An instance of the policyPrcSupport class that identifies a + specific policy class and associated attributes as supported + by the device." + + PIB-INDEX { policyPrcSupportId } + ::= { policyPrcSupportTable 1 } + +PolicyPrcSupportEntry ::= SEQUENCE { + policyPrcSupportId InstanceId, + policyPrcSupportSupportedPrc OBJECT IDENTIFIER, + policyPrcSupportSupportedAttrs OCTET STRING +} + +policyPrcSupportId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the policyPrcSupport class." + + ::= { policyPrcSupportEntry 1 } + +policyPrcSupportSupportedPrc OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The object identifier of a supported PRC. There may not + be more than one instance of the policyPrcSupport class with + the same value of policyPrcSupportSupportedPrc." + + ::= { policyPrcSupportEntry 2 } + +policyPrcSupportSupportedAttrs OBJECT-TYPE + + + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A bit string representing the supported attributes of the + class that is identified by the policyPrcSupportSupportedPrc + object. + + Each bit of this bit mask corresponds to a class attribute, + with the most significant bit of the i-th octet of this octet + string corresponding to the (8*i - 7)-th attribute, and the + least significant bit of the i-th octet corresponding to the + (8*i)-th class attribute. Each bit of this bit mask specifies + whether or not the corresponding class attribute is currently + supported, with a '1' indicating support and a '0' indicating + no support. If the value of this bit mask is N bits long and + there are more than N class attributes then the bit mask is + logically extended with 0's to the required length." + + ::= { policyPrcSupportEntry 3 } + +-- +-- PIB Incarnation Table +-- + +policyDevicePibIncarnationTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyDevicePibIncarnationEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class contains a single policy rule instance that + identifies the current incarnation of the PIB and the PDP + or network manager that installed this incarnation. The + instance of this class is reported to the PDP at client + connect time so that the PDP can (attempt to) ascertain the + current state of the PIB. A network manager may use the + instance to determine the state of the device with regard + to existing NMS interactions." + + ::= { policyDeviceConfig 2 } + +policyDevicePibIncarnationEntry OBJECT-TYPE + SYNTAX PolicyDevicePibIncarnationEntry + STATUS current + DESCRIPTION + "An instance of the policyDevicePibIncarnation class. Only + + + one instance of this policy class is ever instantiated." + + PIB-INDEX { policyDevicePibIncarnationPrid } + ::= { policyDevicePibIncarnationTable 1 } + +PolicyDevicePibIncarnationEntry ::= SEQUENCE { + policyDevicePibIncarnationPrid InstanceId, + policyDevicePibIncarnationName SnmpAdminString, + policyDevicePibIncarnationId OCTET STRING, + policyDevicePibIncarnationTtl Unsigned32 +} + +policyDevicePibIncarnationPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + policy class." + + ::= { policyDevicePibIncarnationEntry 1 } + +policyDevicePibIncarnationName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The name of the entity that installed the current + incarnation of the PIB into the device. The name may + reference a PDP when dynamic configuration is being + used or a network manager when static configuration + is being used. By default, it is the zero length + string." + + ::= { policyDevicePibIncarnationEntry 2 } + +policyDevicePibIncarnationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An ID to identify the current incarnation. It has meaning + to the PDP/manager that installed the PIB and perhaps its + standby PDPs/managers. By default, it is the zero-length + string." + + ::= { policyDevicePibIncarnationEntry 3 } + + +policyDevicePibIncarnationTtl OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The number of seconds after a client close or TCP timeout + for which the PEP continues to enforce the policy in the PIB. + After this interval, the PIB is considered expired and the + device no longer enforces the policy installed in the PIB. + Policy enforcement timing only applies to policies that have + been installed dynamically (e.g., by a PDP via COPS)." + + ::= { policyDevicePibIncarnationEntry 4 } + +END diff --git a/pibs/tubs/POLICY-FRAMEWORK-PIB-orig b/pibs/tubs/POLICY-FRAMEWORK-PIB-orig new file mode 100644 index 0000000..83ba5ed --- /dev/null +++ b/pibs/tubs/POLICY-FRAMEWORK-PIB-orig @@ -0,0 +1,283 @@ +POLICY-FRAMEWORK-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +policyFrameworkPib MODULE-IDENTITY + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + + DESCRIPTION + "A PIB module containing the base set of policy + rule classes that are required for support of + all policies." + + ::= { tbd } + +policyBasePibClasses + OBJECT IDENTIFIER ::= { policyFrameworkPib 1 } + +-- +-- Textual Conventions +-- + +-- +-- Interface Role +-- + +Role ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A display string but where the characters '+', ' ' (space), + NULL, LF, CR, BELL, BS, HT (tab) VT and FF are illegal." + + SYNTAX SnmpAdminString (SIZE (0..31)) + +-- +-- Interface Role Combination +-- + +RoleCombination ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A Display string consisting of a set of roles concatenated + with a '+' character where the roles are in lexicographic + order from minimum to maximum." + + SYNTAX SnmpAdminString (SIZE (0..255)) + +-- +-- Policy Instance Index +-- + +PolicyInstanceId ::= TEXTUAL-CONVENTION + STATUS current + + + DESCRIPTION + "A textual convention for an attribute that is an integer + index of a class. It is used for attributes that exist + for the purpose of providing a policy rule instance with + a unique instance identifier. + + For any instance identifier that refers to another policy + rule instance, that other policy instance must exist. + Furthermore, it is an error to try to delete a policy rule + instance that is referred to by another instance without + first deleting the referencing instance. + + Class instances of this type need not be contiguous." + + SYNTAX Unsigned32 + +-- +-- Device Configuration Group +-- + +-- This group contains device configuration information. This +-- configuration is either set by management or reflects the physical +-- configuration of the device. This configuration is generally +-- reported to the PDP (i.e., the policy server) when configuration +-- is performed by the policy server so that the PDP can determine +-- what policies to download to the PEP (i.e., the device). Class +-- instances may also be downloaded by a network manager prior to +-- static configuration. +-- + +policyDeviceConfig OBJECT IDENTIFIER ::= { policyBasePibClasses 1 } + +-- +-- PRC Support Table +-- + +policyPrcSupportTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyPrcSupportEntry + POLICY-ACCESS notify + STATUS current + DESCRIPTION + "Each instance of this class specifies a PRC that the device + supports and a bit string to indicate the attributes of the + class that are supported. These PRIs are sent to the PDP to + indicate to the PDP which PRCs, and which attributes of these + + + PRCs, the device supports. This table can also be downloaded + by a network manager when static configuration is used. + + All install and install-notify PRCs supported by the device + must be represented in this table." + + ::= { policyDeviceConfig 1 } + +policyPrcSupportEntry OBJECT-TYPE + SYNTAX PolicyPrcSupportEntry + STATUS current + DESCRIPTION + "An instance of the policyPrcSupport class that identifies a + specific policy class and associated attributes as supported + by the device." + + INDEX { policyPrcSupportId } + ::= { policyPrcSupportTable 1 } + +PolicyPrcSupportEntry ::= SEQUENCE { + policyPrcSupportId PolicyInstanceId, + policyPrcSupportSupportedPrc OBJECT IDENTIFIER, + policyPrcSupportSupportedAttrs OCTET STRING +} + +policyPrcSupportId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the policyPrcSupport class." + + ::= { policyPrcSupportEntry 1 } + +policyPrcSupportSupportedPrc OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "The object identifier of a supported PRC. There may not + be more than one instance of the policyPrcSupport class with + the same value of policyPrcSupportSupportedPrc." + + ::= { policyPrcSupportEntry 2 } + +policyPrcSupportSupportedAttrs OBJECT-TYPE + + + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "A bit string representing the supported attributes of the + class that is identified by the policyPrcSupportSupportedPrc + object. + + Each bit of this bit mask corresponds to a class attribute, + with the most significant bit of the i-th octet of this octet + string corresponding to the (8*i - 7)-th attribute, and the + least significant bit of the i-th octet corresponding to the + (8*i)-th class attribute. Each bit of this bit mask specifies + whether or not the corresponding class attribute is currently + supported, with a '1' indicating support and a '0' indicating + no support. If the value of this bit mask is N bits long and + there are more than N class attributes then the bit mask is + logically extended with 0's to the required length." + + ::= { policyPrcSupportEntry 3 } + +-- +-- PIB Incarnation Table +-- + +policyDevicePibIncarnationTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyDevicePibIncarnationEntry + POLICY-ACCESS install-notify + STATUS current + DESCRIPTION + "This class contains a single policy rule instance that + identifies the current incarnation of the PIB and the PDP + or network manager that installed this incarnation. The + instance of this class is reported to the PDP at client + connect time so that the PDP can (attempt to) ascertain the + current state of the PIB. A network manager may use the + instance to determine the state of the device with regard + to existing NMS interactions." + + ::= { policyDeviceConfig 2 } + +policyDevicePibIncarnationEntry OBJECT-TYPE + SYNTAX PolicyDevicePibIncarnationEntry + STATUS current + DESCRIPTION + "An instance of the policyDevicePibIncarnation class. Only + + + one instance of this policy class is ever instantiated." + + INDEX { policyDevicePibIncarnationId } + ::= { policyDevicePibIncarnationTable 1 } + +PolicyDevicePibIncarnationEntry ::= SEQUENCE { + policyDevicePibIncarnationId PolicyInstanceId, + policyDevicePibIncarnationName SnmpAdminString, + policyDevicePibIncarnationId OCTET STRING, + policyDevicePibIncarnationTtl Unsigned32 +} + +policyDevicePibIncarnationId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An index to uniquely identify an instance of this + policy class." + + ::= { policyDevicePibIncarnationEntry 1 } + +policyDevicePibIncarnationName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The name of the entity that installed the current + incarnation of the PIB into the device. The name may + reference a PDP when dynamic configuration is being + used or a network manager when static configuration + is being used. By default, it is the zero length + string." + + ::= { policyDevicePibIncarnationEntry 2 } + +policyDevicePibIncarnationId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "An ID to identify the current incarnation. It has meaning + to the PDP/manager that installed the PIB and perhaps its + standby PDPs/managers. By default, it is the zero-length + string." + + ::= { policyDevicePibIncarnationEntry 3 } + + +policyDevicePibIncarnationTtl OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The number of seconds after a client close or TCP timeout + for which the PEP continues to enforce the policy in the PIB. + After this interval, the PIB is considered expired and the + device no longer enforces the policy installed in the PIB. + Policy enforcement timing only applies to policies that have + been installed dynamically (e.g., by a PDP via COPS)." + + ::= { policyDevicePibIncarnationEntry 4 } + +END diff --git a/pibs/tubs/PPVPN-PIB b/pibs/tubs/PPVPN-PIB new file mode 100644 index 0000000..c857851 --- /dev/null +++ b/pibs/tubs/PPVPN-PIB @@ -0,0 +1,993 @@ + PPVPN-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, Integer32, MODULE-IDENTITY, MODULE-COMPLIANCE, + OBJECT-TYPE, OBJECT-GROUP, pib, TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + zeroDotZero + FROM SNMPv2-SMI + TruthValue, DisplayString + FROM SNMPv2-TC + RoleCombination, AttrIdentifier + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + InterfaceIndexOrZero + FROM IF-MIB; + + + ppvpn2547PolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- PPVPN COPS Client Type + -- to be assigned by IANA + LAST-UPDATED "200203081800Z" + ORGANIZATION "IETF PPVPN WG" + CONTACT-INFO " + Yacine El Mghazli + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 41 87 + Email: yacine.el_mghazli@alcatel.fr" + DESCRIPTION + "The PIB module containing a set of provisioning classes + that describe provider provisioned virtual private networks + (PPVPN) policies for BGP/MPLS VPN. It includes general + classes that may be extended by other PIB specifications as + well as a set of PIB classes related to PPVPNs." + REVISION "200203081800Z" + DESCRIPTION + "Initial version, published as RFC xxxx." + ::= { ibrpib 18 } -- xxx to be assigned by IANA + + +-- BGP/MPLS VPN specific Textual Conventions. + + Ppvpn2547RouteDistinguisher ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route distinguisher." + SYNTAX OCTET STRING(SIZE (0..256)) + + Ppvpn2547RouteTarget ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route target." + SYNTAX OCTET STRING(SIZE (0..256)) + + +-- BGP/MPLS VPN PIB module + + ppvpn2547CapabilityClasses + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 1 } + ppvpn2547PolicyClasses + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 2 } + ppvpn2547PibConformance + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 3 } + + +-- Capabilities Group + +-- +-- BGP/MPLS VPN PE Routing Capabilities +-- + + ppvpn2547RoutingCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547RoutingCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class represents routing capabilities of a device + (PE)." + ::= { ppvpn2547CapabilityClasses 1 } + + ppvpn2547RoutingCapsEntry OBJECT-TYPE + SYNTAX Ppvpn2547RoutingCapsEntry + STATUS current + DESCRIPTION + "An instance of the ppvpn2547RoutingCaps class." + PIB-INDEX { ppvpn2547RoutingCapsPrid } + ::= { ppvpn2547RoutingCapsTable 1 } + + Ppvpn2547RoutingCapsEntry ::= SEQUENCE { + ppvpn2547RoutingCapsPrid InstanceId, + ppvpn2547RoutingCapsDistProtocol BITS, + ppvpn2547RoutingCapsMaxRoutes Unsigned32, + + ppvpn2547RoutingCapsMaxVrfs Unsigned32 + } + + ppvpn2547RoutingCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RoutingCapsEntry 1 } + + ppvpn2547RoutingCapsDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + ebgp (1), + ospf (2), + rip (3), + isis (4), + other (5) + } + STATUS current + DESCRIPTION + "Denotes the route distribution protocol supported by the PE + across the PE-CE links. Note that more than one routing + protocol may be enabled at the same time." + ::= { ppvpn2547RoutingCapsEntry 2 } + + ppvpn2547RoutingCapsMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of routes which this PE is + able to hold." + ::= { ppvpn2547RoutingCapsEntry 3 } + + ppvpn2547RoutingCapsMaxVrfs OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of VRF which this PE is + able to hold." + ::= { ppvpn2547RoutingCapsEntry 4 } + + +-- +-- PE Interface Capabilities +-- + + ppvpn2547IfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547IfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + " This class represents interfaces capabilities of a device + + (PE) in terms of MPLS support." + ::= { ppvpn2547CapabilityClasses 2 } + + ppvpn2547IfCapsEntry OBJECT-TYPE + SYNTAX Ppvpn2547IfCapsEntry + STATUS current + DESCRIPTION + "An instance of the ppvpn2547IfCaps class." + PIB-INDEX { ppvpn2547IfCapsPrid } + UNIQUENESS {} + ::= { ppvpn2547IfCapsTable 1 } + + Ppvpn2547IfCapsEntry ::= SEQUENCE { + ppvpn2547IfCapsPrid InstanceId, + ppvpn2547IfCapsMplsSupport INTEGER, + ppvpn2547IfCapsLabelEdgeType INTEGER + } + + ppvpn2547IfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547IfCapsEntry 1 } + + ppvpn2547IfCapsMplsSupport OBJECT-TYPE + SYNTAX INTEGER { nonMpls (0), + mpls (1), + mplsTunnel (2) + } + STATUS current + DESCRIPTION + " Denotes the interface type in accordance with [IFMIB] which + states that the interfaces tables contains information on + the managed resource's interfaces and each sub-layer bellow + the internetwork layer interface is considered as an + interface." + ::= { ppvpn2547IfCapsEntry 2 } + + ppvpn2547IfCapsLabelEdgeType OBJECT-TYPE + SYNTAX INTEGER { providerEdge (1), + customerEdge (2) + } + STATUS current + DESCRIPTION + " Either the providerEdge(0) or customerEdge(1) bit MUST be + set. Denotes if the interface is an exterior interface + (customerEdge) or a interior interface (providerEdge), + regarding to the provider network." + ::= { ppvpn2547IfCapsEntry 3 } + + + +-- BGP/MPLS VPN Policy Classes + +-- +-- BGP/MPLS VPN VRF Table +-- + + ppvpn2547VrfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547VrfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class specifies BGP/MPLS VPN VRF Table associated + information. Entries in this table define VRF instances + associated with MPLS/VPN interfaces. Note that multiple + interfaces can belong to the same VRF instance." + ::= { ppvpn2547PolicyClasses 1 } + + ppvpn2547VrfEntry OBJECT-TYPE + SYNTAX Ppvpn2547VrfEntry + STATUS current + DESCRIPTION + "An entry in this table is created by the provider for + every VRF capable of supporting MPLS/BGP VPN." + PIB-INDEX { ppvpn2547VrfPrid } + UNIQUENESS { ppvpn2547VrfId, + ppvpn2547VrfRoles, + ppvpn2547VrfIfName, + ppvpn2547VrfRD } + ::= { ppvpn2547VrfTable 1 } + + Ppvpn2547VrfEntry ::= SEQUENCE { + ppvpn2547VrfPrid InstanceId, + ppvpn2547VrfRoles RoleCombination, + ppvpn2547VrfIfName SnmpAdminString, + ppvpn2547VrfId TagReferenceId, + ppvpn2547VrfDescription SnmpAdminString, + ppvpn2547VrfRD Ppvpn2547RouteDistinguisher, + ppvpn2547VrfMaxRoutes Unsigned32 + } + + ppvpn2547VrfPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547VrfEntry 1 } + + ppvpn2547VrfRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which the VRF is attached to, + + + specified in terms of roles. There must exist an entry + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the interface + capability set specified by ppvpn2547IfName, prior to + association with an instance of this class." + ::= { ppvpn2547VrfEntry 2 } + + ppvpn2547VrfIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which the VRF is attached to. + The interface capability name specified by this attribute + must exist in the frwkIfCapSetTable [FR-PIB] prior to + association with an instance of this class." + ::= { ppvpn2547VrfEntry 3 } + + ppvpn2547VrfId OBJECT-TYPE + SYNTAX TagReferenceId + STATUS current + DESCRIPTION + "Identifies a VRF instance." + ::= { ppvpn2547VrfEntry 4 } + + ppvpn2547VrfDescription OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The human-readable description of this VRF." + ::= { ppvpn2547VrfEntry 5 } + + ppvpn2547VrfRD OBJECT-TYPE + SYNTAX Ppvpn2547RouteDistinguisher + STATUS current + DESCRIPTION + "The route distinguisher for this VRF." + ::= { ppvpn2547VrfEntry 6 } + + ppvpn2547VrfMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of routes which this VRF is + configured to hold." + ::= { ppvpn2547VrfEntry 7 } + + +-- +-- BGP/MPLS VPN Route Target Table +-- + + ppvpn2547RouteTargetTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547RouteTargetEntry + + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-VRF route target association. Each + entry identifies a connectivity policy supported as part of a + VPN." + ::= { ppvpn2547PolicyClasses 2 } + + ppvpn2547RouteTargetEntry OBJECT-TYPE + SYNTAX Ppvpn2547RouteTargetEntry + STATUS current + DESCRIPTION + "An entry in this table is created for each route target + configured for a VRF supporting a MPLS/BGP VPN instance. The + precedence attribute provides an ordering per-VRF instance." + PIB-INDEX { ppvpn2547RouteTargetPrid} + UNIQUENESS { ppvpn2547RouteTargetVrfId, + ppvpn2547RouteTargetType, +-- ppvpn2547RouteTargetPrecedence, + ppvpn2547RouteTargetRT + } + ::= { ppvpn2547RouteTargetTable 1 } + +Ppvpn2547RouteTargetEntry ::= SEQUENCE { + ppvpn2547RouteTargetPrid InstanceId, + ppvpn2547RouteTargetType INTEGER, + ppvpn2547RouteTargetVrfId TagId, +-- ppvpn2547RouteTargetPrecedence Unsigned32, + ppvpn2547RouteTargetRT Ppvpn2547RouteTarget, + ppvpn2547RouteTargetDescr DisplayString + } + + ppvpn2547RouteTargetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RouteTargetEntry 1 } + + ppvpn2547RouteTargetType OBJECT-TYPE + SYNTAX INTEGER { import(1), + export(2), + both(3) } + STATUS current + DESCRIPTION + "The route target distribution type." + ::= { ppvpn2547RouteTargetEntry 2 } + + ppvpn2547RouteTargetVrfId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + + " A VRF is composed of an import RT list and a export RT + list. Each RT belonging to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which this RT is a part of. This + needs to be the value of ppvpn2547VrfId attribute for an + existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteTargetEntry 3 } + + ppvpn2547RouteTargetRT OBJECT-TYPE + SYNTAX Ppvpn2547RouteTarget + STATUS current + DESCRIPTION + "The route target value." + ::= { ppvpn2547RouteTargetEntry 4 } + + ppvpn2547RouteTargetDescr OBJECT-TYPE + SYNTAX DisplayString + STATUS current + DESCRIPTION + "Description of the route target." + ::= { ppvpn2547RouteTargetEntry 5 } + + +-- +-- BGP/MPLS VPN Interface Table +-- + + ppvpn2547IfTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547IfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-interface configuration information + related to PE-CE links." + ::= { ppvpn2547PolicyClasses 3 } + + ppvpn2547IfEntry OBJECT-TYPE + SYNTAX Ppvpn2547IfEntry + STATUS current + DESCRIPTION + "An entry in this table is created for every interface type + supporting MPLS/BGP VPN. Each entry in this table is meant to + correspond to an entry in the Interfaces Table." + PIB-INDEX { ppvpn2547IfPrid } + UNIQUENESS { ppvpn2547IfRoles, + ppvpn2547IfName } + ::= { ppvpn2547IfTable 1 } + + Ppvpn2547IfEntry ::= SEQUENCE { + ppvpn2547IfPrid InstanceId, + ppvpn2547IfRoles RoleCombination, + ppvpn2547IfName SnmpAdminString, + ppvpn2547IfVpnClassification INTEGER, + ppvpn2547IfRouteDistProtocol BITS + + } + + ppvpn2547IfPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547IfEntry 1 } + + ppvpn2547IfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to configure. The interface + capability name specified by this attribute must exist in the + frwkIfCapSetTable [FR-PIB] prior to association with an + instance of this class." + ::= { ppvpn2547IfEntry 2 } + + + ppvpn2547IfRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which the VRF is attached to, + specified in terms of roles. There must exist an entry + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the interface + capability set specified by ppvpn2547IfName, prior to + association with an instance of this class." + ::= { ppvpn2547IfEntry 3 } + + ppvpn2547IfVpnClassification OBJECT-TYPE + SYNTAX INTEGER { carrierOfCarrier (1), + enterprise (2), + interProvider (3) + } + STATUS current + DESCRIPTION + "Denotes whether this link participates in a carrier-of- + carrier's, enterprise, or inter-provider scenario." + ::= { ppvpn2547IfEntry 4 } + + ppvpn2547IfRouteDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + ebgp (1), + ospf (2), + rip (3), + isis (4), + other (5) + } + STATUS current + + DESCRIPTION + "Denotes the route distribution protocol across the PE-CE + link. Note that more than one routing protocol may be enabled + at the same time." + ::= { ppvpn2547IfEntry 5 } + + +-- +-- BGP/MPLS VPN BGP Peer Address Table +-- + + ppvpn2547BgpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547BgpPeerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each entry in this table specifies a per-interface + MPLS/BGP neighbor." + ::= { ppvpn2547PolicyClasses 5 } + + ppvpn2547BgpPeerEntry OBJECT-TYPE + SYNTAX Ppvpn2547BgpPeerEntry + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS/BGP VPN. The + indexing provides an ordering of VRFs per-VPN + interface." + PIB-INDEX { ppvpn2547BgpPeerPrid } + UNIQUENESS { ppvpn2547BgpPeerVrfId, + ppvpn2547BgpPeerAddrType, + ppvpn2547BgpPeerAddr + } + ::= { ppvpn2547BgpPeerTable 1 } + + Ppvpn2547BgpPeerEntry ::= SEQUENCE { + ppvpn2547BgpPeerPrid InstanceId, + ppvpn2547BgpPeerVrfId TagId, + ppvpn2547BgpPeerRole INTEGER, + ppvpn2547BgpPeerAddrType InetAddressType, + ppvpn2547BgpPeerAddr InetAddress + } + + ppvpn2547BgpPeerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547BgpPeerEntry 1 } + + ppvpn2547BgpPeerVrfId OBJECT-TYPE + SYNTAX TagId + + STATUS current + DESCRIPTION + "Each BGP neighbor to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which VRF this device is the + neighbor. This needs to be the value of ppvpn2547VrfId + attribute for an existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547BgpPeerEntry 2 } + + ppvpn2547BgpPeerRole OBJECT-TYPE + SYNTAX INTEGER { ce(1), + pe(2) + } + STATUS current + DESCRIPTION + "Denotes the role played by this BGP neighbor + with respect to this VRF." + ::= { ppvpn2547BgpPeerEntry 3 } + + ppvpn2547BgpPeerAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Denotes the address family of the PE address." + ::= { ppvpn2547BgpPeerEntry 4 } + + ppvpn2547BgpPeerAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Denotes the EBGP neighbor address." + ::= { ppvpn2547BgpPeerEntry 5 } + + +-- +-- VRF Routing Table +-- + + ppvpn2547RouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF Ppvpn2547RouteEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-VRF MPLS/BGP VPN routing + information. Entries in this table define VRF routing entries + associated with the specified MPLS/VPN interfaces. Note + that this table contains both BGP and IGP routes, as both may + appear in the same VRF." + ::= { ppvpn2547PolicyClasses 4 } + + ppvpn2547RouteEntry OBJECT-TYPE + SYNTAX Ppvpn2547RouteEntry + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for every route + + present configured (either dynamically or statically) within + the context of a specific VRF capable of supporting MPLS/BGP + VPN. The indexing provides an ordering of VRFs per-VPN + interface." + PIB-INDEX { ppvpn2547RoutePrid } + UNIQUENESS { ppvpn2547RouteVrfId, + ppvpn2547RouteDest, + ppvpn2547RouteMask, + ppvpn2547RouteTos, + ppvpn2547RouteNextHop } + ::= { ppvpn2547RouteTable 1 } + + Ppvpn2547RouteEntry ::= SEQUENCE { + ppvpn2547RoutePrid InstanceId, + ppvpn2547RouteVrfId TagId, + ppvpn2547RouteDest InetAddress, + ppvpn2547RouteDestAddrType InetAddressType, + ppvpn2547RouteMask InetAddress, + ppvpn2547RouteMaskAddrType InetAddressType, + ppvpn2547RouteTos Unsigned32, + ppvpn2547RouteNextHop InetAddress, + ppvpn2547RouteNextHopAddrType InetAddressType, + ppvpn2547RouteIfIndex InterfaceIndexOrZero, + ppvpn2547RouteType INTEGER, + ppvpn2547RouteProto INTEGER, + ppvpn2547RouteInfo OBJECT IDENTIFIER, + ppvpn2547RouteNextHopAS Unsigned32, + ppvpn2547RouteMetric1 Integer32, + ppvpn2547RouteMetric2 Integer32, + ppvpn2547RouteMetric3 Integer32, + ppvpn2547RouteMetric4 Integer32, + ppvpn2547RouteMetric5 Integer32 + } + + ppvpn2547RoutePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RouteEntry 1 } + + ppvpn2547RouteVrfId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Each route belonging to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which routing table this route is + a part of. This needs to be the value of ppvpn2547VrfId + attribute for an existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteEntry 2 } + + ppvpn2547RouteDest OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The destination IP address of this route. + This object may not take a Multicast (Class D) + address value. + Any assignment (implicit or otherwise) of an + instance of this object to a value x must be + rejected if the bit-wise logical-AND of x with + the value of the corresponding instance of the + ppvpn2547RouteMask object is not equal to x." + ::= { ppvpn2547RouteEntry 3 } + + ppvpn2547RouteDestAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of the ppvpn2547RouteDest + entry." + ::= { ppvpn2547RouteEntry 4 } + + ppvpn2547RouteMask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to + the value in the ppvpn2547RouteDest field. + For those systems that do not support + arbitrary subnet masks, an agent constructs the + value of the ppvpn2547RouteMask by reference + to the IP Address Class. + Any assignment (implicit or otherwise) of an + instance of this object to a value x must be + rejected if the bit-wise logical-AND of x with + the value of the corresponding instance of the + ppvpn2547RouteDest object is not equal to + ppvpn2547RouteDest." + ::= { ppvpn2547RouteEntry 5 } + + ppvpn2547RouteMaskAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of ppvpn2547RouteMask." + ::= { ppvpn2547RouteEntry 6 } + + ppvpn2547RouteTos OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The IP TOS Field is used to specify the policy to + be applied to this route. The encoding of IP TOS + + + is as specified by the following convention. + Zero indicates the default path if no more + specific policy applies. + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + IP TOS IP TOS + Field Policy Field Policy + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30." + ::= { ppvpn2547RouteEntry 7 } + + ppvpn2547RouteNextHop OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "On remote routes, the address of the next + system en route; Otherwise, 0.0.0.0. ." + ::= { ppvpn2547RouteEntry 8 } + + ppvpn2547RouteNextHopAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of the ppvpn2547RouteNextHopAddrType + object." + ::= { ppvpn2547RouteEntry 9 } + + ppvpn2547RouteIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local + interface through which the next hop of this + route should be reached. If this value is set to 0, + this indicates that no interface is associated with + this route." + ::= { ppvpn2547RouteEntry 10 } + + ppvpn2547RouteType OBJECT-TYPE + SYNTAX INTEGER { other (1), -- not specified + reject (2), -- route to discard traffic + + local (3), -- local interface + remote (4) -- remote destination + } + STATUS current + DESCRIPTION + "The type of route. Note that local(3) refers + to a route for which the next hop is the final + destination; remote(4) refers to a route for + that the next hop is not the final destination. + Routes which do not result in traffic forwarding or + rejection should not be displayed even if the + implementation keeps them stored internally. + Reject (2) refers to a route which, if matched, + discards the message as unreachable. This is used + in some protocols as a means of correctly aggregating + routes." + ::= { ppvpn2547RouteEntry 11 } + + ppvpn2547RouteProto OBJECT-TYPE + SYNTAX INTEGER { other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + isIs (9), -- Dual IS-IS + esIs (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15), -- InterDomain Policy Routing + ciscoEigrp (16) -- Cisco EIGRP + } + STATUS current + DESCRIPTION + "The routing mechanism via which this route was + learned. Inclusion of values for gateway rout- + ing protocols is not intended to imply that + hosts should support those protocols." + ::= { ppvpn2547RouteEntry 12 } + + ppvpn2547RouteInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "A reference to MIB definitions specific to the + + particular routing protocol which is responsi- + ble for this route, as determined by the value + specified in the route's ppvpn2547RouteProto + value. If this information is not present, its + value SHOULD be set to the OBJECT IDENTIFIER + { 0 0 }, which is a syntactically valid object + identif-ier, and any implementation conforming + to ASN.1 and the Basic Encoding Rules must be + able to generate and recognize this value." + ::= { ppvpn2547RouteEntry 13 } + + ppvpn2547RouteNextHopAS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The Autonomous System Number of the Next Hop. + The semantics of this object are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. When this object is + unknown or not relevant its value should be set + to zero." + ::= { ppvpn2547RouteEntry 14 } + + ppvpn2547RouteMetric1 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The primary routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 15 } + + ppvpn2547RouteMetric2 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 16 } + + ppvpn2547RouteMetric3 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 17 } + + ppvpn2547RouteMetric4 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 18 } + + ppvpn2547RouteMetric5 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 19 } + + + -- + -- Conformance Section + -- + + + + ppvpn2547PibCompliances + OBJECT IDENTIFIER ::= { ppvpn2547PibConformance 1 } + ppvpn2547PibGroups + OBJECT IDENTIFIER ::= { ppvpn2547PibConformance 2 } + + ppvpn2547PibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + PPVPN BGP/MPLS VPN Policy PIB." + + MODULE -- this module + MANDATORY-GROUPS { + ppvpn2547PibVrfGroup, + ppvpn2547PibRouteTargetGroup, + ppvpn2547PibIfGroup, + ppvpn2547PibBgpPeerGroup, + ppvpn2547PibRouteGroup + } + ::= { ppvpn2547PibCompliances 1 } + + ppvpn2547PibVrfGroup OBJECT-GROUP + OBJECTS { ppvpn2547VrfRoles, + + ppvpn2547VrfIfName, + ppvpn2547VrfId, + ppvpn2547VrfDescription, + ppvpn2547VrfRD, + ppvpn2547VrfMaxRoutes + } + STATUS current + DESCRIPTION + "The VRF Group defines the PIB Objects that describe a VRF." + ::= { ppvpn2547PibGroups 1 } + + ppvpn2547PibRouteTargetGroup OBJECT-GROUP + OBJECTS { ppvpn2547RouteTargetType, + ppvpn2547RouteTargetVrfId, +-- ppvpn2547RouteTargetPrecedence, + ppvpn2547RouteTargetRT, + ppvpn2547RouteTargetDescr + } + STATUS current + DESCRIPTION + "The Route Target Group defines the PIB Objects that describe + a Route Target." + ::= { ppvpn2547PibGroups 2 } + + ppvpn2547PibIfGroup OBJECT-GROUP + OBJECTS { ppvpn2547IfRoles, + ppvpn2547IfName, + ppvpn2547IfVpnClassification, + ppvpn2547IfRouteDistProtocol + } + STATUS current + DESCRIPTION + "The Interface Group defines the PIB Objects that + describe a Interface." + ::= { ppvpn2547PibGroups 3 } + + ppvpn2547PibBgpPeerGroup OBJECT-GROUP + OBJECTS { ppvpn2547BgpPeerVrfId, + ppvpn2547BgpPeerRole, + ppvpn2547BgpPeerAddrType, + ppvpn2547BgpPeerAddr + } + STATUS current + DESCRIPTION + "The BGP Peer Group defines the PIB Objects that + describe a BGP Peer." + ::= { ppvpn2547PibGroups 4 } + + ppvpn2547PibRouteGroup OBJECT-GROUP + OBJECTS { ppvpn2547RouteVrfId, + ppvpn2547RouteDest, + ppvpn2547RouteDestAddrType, + + ppvpn2547RouteMask, + ppvpn2547RouteMaskAddrType, + ppvpn2547RouteTos, + ppvpn2547RouteNextHop, + ppvpn2547RouteNextHopAddrType, + ppvpn2547RouteIfIndex, + + ppvpn2547RouteType, + ppvpn2547RouteProto, + ppvpn2547RouteInfo, + ppvpn2547RouteNextHopAS, + ppvpn2547RouteMetric1, + ppvpn2547RouteMetric2, + ppvpn2547RouteMetric3, + ppvpn2547RouteMetric4, + ppvpn2547RouteMetric5 + } + STATUS current + DESCRIPTION + "The Route Group defines the PIB Objects that + describe a Route." + ::= { ppvpn2547PibGroups 5 } + +END diff --git a/pibs/tubs/PPVPN-PIB-orig b/pibs/tubs/PPVPN-PIB-orig new file mode 100644 index 0000000..eda13b6 --- /dev/null +++ b/pibs/tubs/PPVPN-PIB-orig @@ -0,0 +1,987 @@ + PPVPN-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, MODULE-COMPLIANCE, + OBJECT-TYPE, OBJECT-GROUP, pib, TEXTUAL-CONVENTION + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + zeroDotZero + FROM SNMPv2-SMI + TruthValue + FROM SNMPv2-TC + RoleCombination, PrcIdentifier, AttrIdentifier + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + + + ppvpn2547PolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { tbd } -- PPVPN COPS Client Type + -- to be assigned by IANA + LAST-UPDATED "200203081800Z" + ORGANIZATION "IETF PPVPN WG" + CONTACT-INFO " + Yacine El Mghazli + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 41 87 + Email: yacine.el_mghazli@alcatel.fr" + DESCRIPTION + "The PIB module containing a set of provisioning classes + that describe provider provisioned virtual private networks + (PPVPN) policies for BGP/MPLS VPN. It includes general + classes that may be extended by other PIB specifications as + well as a set of PIB classes related to PPVPNs." + REVISION "200203081800Z" + DESCRIPTION + "Initial version, published as RFC xxxx." + ::= { pib xxx } -- xxx to be assigned by IANA + + +-- BGP/MPLS VPN specific Textual Conventions. + + ppvpn2547RouteDistinguisher ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route distinguisher." + SYNTAX OCTET STRING(SIZE (0..256)) + + ppvpn2547RouteTarget ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Syntax for a route target." + SYNTAX OCTET STRING(SIZE (0..256)) + + +-- BGP/MPLS VPN PIB module + + ppvpn2547CapabilityClasses + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 1 } + ppvpn2547PolicyClasses + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 2 } + ppvpn2547PibConformance + OBJECT IDENTIFIER ::= { ppvpn2547PolicyPib 3 } + + +-- Capabilities Group + +-- +-- BGP/MPLS VPN PE Routing Capabilities +-- + + ppvpn2547RoutingCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547RoutingCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class represents routing capabilities of a device + (PE)." + ::= { ppvpn2547CapabilitiesClasses 1 } + + ppvpn2547RoutingCapsEntry OBJECT-TYPE + SYNTAX ppvpn2547RoutingCapsEntry + STATUS current + DESCRIPTION + "An instance of the ppvpn2547RoutingCaps class." + PIB-INDEX { ppvpn2547RoutingCapsPrid } + ::= { ppvpn2547RoutingCapsTable 1 } + + ppvpn2547RoutingCapsEntry ::= SEQUENCE { + ppvpn2547RoutingCapsPrid InstanceId, + ppvpn2547RoutingCapsDistProtocol BITS, + ppvpn2547RoutingCapsMaxRoutes unsigned32, + + ppvpn2547RoutingCapsMaxVrfs unsigned32 + } + + ppvpn2547RoutingCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RoutingCapsEntry 1 } + + ppvpn2547RoutingCapsDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + ebgp (1), + ospf (2), + rip (3), + isis (4), + other (5) + } + STATUS current + DESCRIPTION + "Denotes the route distribution protocol supported by the PE + across the PE-CE links. Note that more than one routing + protocol may be enabled at the same time." + ::= { ppvpn2547RoutingCapsEntry 2 } + + ppvpn2547RoutingCapsMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of routes which this PE is + able to hold." + ::= { ppvpn2547RoutingCapsEntry 3 } + + ppvpn2547RoutingCapsMaxVrfs OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of VRF which this PE is + able to hold." + ::= { ppvpn2547RoutingCapsEntry 4 } + + +-- +-- PE Interface Capabilities +-- + + ppvpn2547IfCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547IfCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + " This class represents interfaces capabilities of a device + + (PE) in terms of MPLS support." + ::= { ppvpn2547CapabilitiesClasses 2 } + + ppvpn2547IfCapsEntry OBJECT-TYPE + SYNTAX ppvpn2547IfCapsEntry + STATUS current + DESCRIPTION + "An instance of the ppvpn2547IfCaps class." + PIB-INDEX { ppvpn2547IfCapsPrid } + UNIQUENESS {} + ::= { ppvpn2547IfCapsTable 1 } + + ppvpn2547IfCapsEntry ::= SEQUENCE { + ppvpn2547IfCapsPrid InstanceId, + ppvpn2547IfCapsMplsSupport INTEGER, + ppvpn2547IfCapsLabelEdgeType INTEGER + } + + ppvpn2547IfCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547IfCapsEntry 1 } + + ppvpn2547IfCapsMplsSupport OBJECT-TYPE + SYNTAX INTEGER { nonMpls (0), + mpls (1), + mplsTunnel (2) + } + STATUS current + DESCRIPTION + " Denotes the interface type in accordance with [IFMIB] which + states that the interfaces tables contains information on + the managed resource's interfaces and each sub-layer bellow + the internetwork layer interface is considered as an + interface." + ::= { ppvpn2547IfCapsEntry 2 } + + ppvpn2547IfCapsLabelEdgeType OBJECT-TYPE + SYNTAX INTEGER { providerEdge (1), + customerEdge (2) + } + STATUS current + DESCRIPTION + " Either the providerEdge(0) or customerEdge(1) bit MUST be + set. Denotes if the interface is an exterior interface + (customerEdge) or a interior interface (providerEdge), + regarding to the provider network." + ::= { ppvpn2547IfCapsEntry 3 } + + + +-- BGP/MPLS VPN Policy Classes + +-- +-- BGP/MPLS VPN VRF Table +-- + + ppvpn2547VrfTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547VrfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This class specifies BGP/MPLS VPN VRF Table associated + information. Entries in this table define VRF instances + associated with MPLS/VPN interfaces. Note that multiple + interfaces can belong to the same VRF instance." + ::= { ppvpnPolicyClasses 1 } + + ppvpn2547VrfEntry OBJECT-TYPE + SYNTAX ppvpn2547VrfEntry + STATUS current + DESCRIPTION + "An entry in this table is created by the provider for + every VRF capable of supporting MPLS/BGP VPN." + PIB-INDEX { ppvpn2547VrfPrid } + UNIQUENESS { ppvpn2547VrfId, + ppvpn2547VrfRoles, + ppvpn2547IfName, + ppvpn2547VrfRD } + ::= { ppvpn2547VrfTable 1 } + + ppvpn2547VrfEntry ::= SEQUENCE { + ppvpn2547VrfPrid InstanceId, + ppvpn2547VrfRoles RoleCombination, + ppvpn2547VrfIfName SnmpAdminString, + ppvpn2547VrfId TagReferenceId, + ppvpn2547VrfDescription SnmpAdminString, + ppvpn2547VrfRD ppvpn2547RouteDistinguisher, + ppvpn2547VrfMaxRoutes Unsigned32, + } + + ppvpn2547VrfPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547VrfEntry 1 } + + ppvpn2547VrfRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which the VRF is attached to, + + + specified in terms of roles. There must exist an entry + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the interface + capability set specified by ppvpn2547IfName, prior to + association with an instance of this class." + ::= { ppvpn2547VrfEntry 2 } + + ppvpn2547VrfIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which the VRF is attached to. + The interface capability name specified by this attribute + must exist in the frwkIfCapSetTable [FR-PIB] prior to + association with an instance of this class." + ::= { ppvpn2547VrfEntry 3 } + + ppvpn2547VrfId OBJECT-TYPE + SYNTAX TagReferenceId + STATUS current + DESCRIPTION + "Identifies a VRF instance." + ::= { ppvpn2547VrfEntry 4 } + + ppvpn2547VrfDescription OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The human-readable description of this VRF." + ::= { ppvpn2547VrfEntry 5 } + + ppvpn2547VrfRD OBJECT-TYPE + SYNTAX Ppvpn2547RouteDistinguisher + STATUS current + DESCRIPTION + "The route distinguisher for this VRF." + ::= { ppvpn2547VrfEntry 6 } + + ppvpn2547VrfMaxRoutes OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Denotes maximum number of routes which this VRF is + configured to hold." + ::= { ppvpn2547VrfEntry 7 } + + +-- +-- BGP/MPLS VPN Route Target Table +-- + + ppvpn2547RouteTargetTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547RouteTargetEntry + + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-VRF route target association. Each + entry identifies a connectivity policy supported as part of a + VPN." + ::= { ppvpn2547PolicyClasses 2 } + + ppvpn2547RouteTargetEntry OBJECT-TYPE + SYNTAX ppvpn2547RouteTargetEntry + STATUS current + DESCRIPTION + "An entry in this table is created for each route target + configured for a VRF supporting a MPLS/BGP VPN instance. The + precedence attribute provides an ordering per-VRF instance." + PIB-INDEX { ppvpn2547RouteTargetPrid} + UNIQUENESS { ppvpn2547RouteTargetVrfId, + ppvpn2547RouteTargetType, + ppvpn2547RouteTargetPrecedence, + ppvpn2547RouteTargetRT + } + ::= { ppvpn2547RouteTargetTable 1 } + +ppvpn2547RouteTargetEntry ::= SEQUENCE { + ppvpn2547RouteTargetPrid InstanceId, + ppvpn2547RouteTargetType INTEGER, + ppvpn2547RouteTargetVrfId TagId, + ppvpn2547RouteTargetPrecedence unsigned32, + ppvpn2547RouteTargetRT ppvpn2547RouteTarget, + ppvpn2547RouteTargetDescr DisplayString, + } + + ppvpn2547RouteTargetPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RouteTargetEntry 1 } + + ppvpn2547RouteTargetType OBJECT-TYPE + SYNTAX INTEGER { import(1), + export(2), + both(3) } + STATUS current + DESCRIPTION + "The route target distribution type." + ::= { ppvpn2547RouteTargetEntry 2 } + + ppvpn2547RouteTargetVrfId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + + " A VRF is composed of an import RT list and a export RT + list. Each RT belonging to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which this RT is a part of. This + needs to be the value of ppvpn2547VrfId attribute for an + existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteTargetEntry 3 } + + ppvpn2547RouteTargetRT OBJECT-TYPE + SYNTAX ppvpn2547RouteTarget + STATUS current + DESCRIPTION + "The route target value." + ::= { ppvpn2547RouteTargetEntry 4 } + + ppvpn2547RouteTargetDescr OBJECT-TYPE + SYNTAX DisplayString + STATUS current + DESCRIPTION + "Description of the route target." + ::= { ppvpn2547RouteTargetEntry 5 } + + +-- +-- BGP/MPLS VPN Interface Table +-- + + ppvpn2547IfTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547IfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table specifies per-interface configuration information + related to PE-CE links." + ::= { ppvpn2547PolicyClasses 3 } + + ppvpn2547IfEntry OBJECT-TYPE + SYNTAX ppvpn2547IfEntry + STATUS current + DESCRIPTION + "An entry in this table is created for every interface type + supporting MPLS/BGP VPN. Each entry in this table is meant to + correspond to an entry in the Interfaces Table." + PIB-INDEX { ppvpn2547IfPrid } + UNIQUENESS { ppvpn2547IfRoles, + Ppvpn2547IfName } + ::= { ppvpn2547IfTable 1 } + + ppvpn2547IfEntry ::= SEQUENCE { + ppvpn2547IfPrid InstanceId, + ppvpn2547IfRoles RoleCombination, + ppvpn2547IfName SnmpAdminString, + ppvpn2547IfVpnClassification INTEGER, + ppvpn2547IfRouteDistProtocol BITS + + } + + ppvpn2547IfPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547IfEntry 1 } + + ppvpn2547IfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to configure. The interface + capability name specified by this attribute must exist in the + frwkIfCapSetTable [FR-PIB] prior to association with an + instance of this class." + ::= { ppvpn2547IfEntry 2 } + + + ppvpn2547IfRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current 7 + DESCRIPTION + "The interfaces to which the VRF is attached to, + specified in terms of roles. There must exist an entry + in the frwkIfRoleComboTable [FR-PIB] specifying + this role combination, together with the interface + capability set specified by ppvpn2547IfName, prior to + association with an instance of this class." + ::= { ppvpn2547IfEntry 3 } + + ppvpn2547IfVpnClassification OBJECT-TYPE + SYNTAX INTEGER { carrierOfCarrier (1), + enterprise (2), + interProvider (3) + } + STATUS current + DESCRIPTION + "Denotes whether this link participates in a carrier-of- + carrier's, enterprise, or inter-provider scenario." + ::= { ppvpn2547IfEntry 4 } + + ppvpn2547IfRouteDistProtocol OBJECT-TYPE + SYNTAX BITS { none (0), + ebgp (1), + ospf (2), + rip (3), + isis (4), + other (5) + } + STATUS current + + DESCRIPTION + "Denotes the route distribution protocol across the PE-CE + link. Note that more than one routing protocol may be enabled + at the same time." + ::= { ppvpn2547IfEntry 5 } + + +-- +-- BGP/MPLS VPN BGP Peer Address Table +-- + + ppvpn2547BgpPeerTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547BgpPeerEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Each entry in this table specifies a per-interface + MPLS/BGP neighbor." + ::= { ppvpnPolicyClasses 4 } + + ppvpn2547BgpPeerEntry OBJECT-TYPE + SYNTAX ppvpn2547BgpPeerEntry + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for + every VRF capable of supporting MPLS/BGP VPN. The + indexing provides an ordering of VRFs per-VPN + interface." + PIB-INDEX { ppvpn2547BgpPeerPrid } + UNIQUENESS { ppvpn2547BgpPeerVrfId, + ppvpn2547BgpPeerAddrType, + ppvpn2547BgpPeerAddr + } + ::= { ppvpn2547BgpPeerTable 1 } + + ppvpn2547BgpPeerEntry ::= SEQUENCE { + ppvpn2547BgpPeerPrid InstanceId, + ppvpn2547BgpPeerVrfId TagId, + ppvpn2547BgpPeerRole INTEGER, + ppvpn2547BgpPeerAddrType InetAddressType, + ppvpn2547BgpPeerAddr InetAddress + } + + ppvpn2547BgpPeerPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547BgpPeerEntry 1 } + + ppvpn2547BgpPeerVrfId OBJECT-TYPE + SYNTAX TagId + + STATUS current + DESCRIPTION + "Each BGP neighbor to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which VRF this device is the + neighbor. This needs to be the value of ppvpn2547VrfId + attribute for an existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteTargetEntry 2 } + + ppvpn2547BgpPeerRole OBJECT-TYPE + SYNTAX INTEGER { ce(1), + pe(2) + } + STATUS current + DESCRIPTION + "Denotes the role played by this BGP neighbor + with respect to this VRF." + ::= { ppvpn2547BgpPeerEntry 3 } + + ppvpn2547BgpPeerAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Denotes the address family of the PE address." + ::= { ppvpn2547BgpPeerEntry 4 } + + ppvpn2547BgpPeerAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Denotes the EBGP neighbor address." + ::= { ppvpn2547BgpPeerEntry 5 } + + +-- +-- VRF Routing Table +-- + + ppvpn2547RouteTable OBJECT-TYPE + SYNTAX SEQUENCE OF ppvpn2547RouteEntry + STATUS current + DESCRIPTION + "This table specifies per-VRF MPLS/BGP VPN routing + information. Entries in this table define VRF routing entries + associated with the specified MPLS/VPN interfaces. Note + that this table contains both BGP and IGP routes, as both may + appear in the same VRF." + ::= { ppvpn2547PolicyClasses 1 } + + ppvpn2547RouteEntry OBJECT-TYPE + SYNTAX Ppvpn2547RouteEntry + STATUS current + DESCRIPTION + "An entry in this table is created by an LSR for every route + + present configured (either dynamically or statically) within + the context of a specific VRF capable of supporting MPLS/BGP + VPN. The indexing provides an ordering of VRFs per-VPN + interface." + PIB-INDEX { ppvpn2547RoutePrid } + UNIQUENESS { ppvpn2547RouteVrfId, + ppvpn2547RouteDest, + ppvpn2547RouteMask, + ppvpn2547RouteTos, + ppvpn2547RouteNextHop } + ::= { ppvpn2547RouteTable 1 } + + ppvpn2547RouteEntry ::= SEQUENCE { + ppvpn2547RoutePrid InstanceId, + ppvpn2547RouteVrfId TagId, + ppvpn2547RouteDest InetAddress, + ppvpn2547RouteDestAddrType InetAddressType, + ppvpn2547RouteMask InetAddress, + ppvpn2547RouteMaskAddrType InetAddressType, + ppvpn2547RouteTos Unsigned32, + ppvpn2547RouteNextHop InetAddress, + ppvpn2547RouteNextHopAddrType InetAddressType, + ppvpn2547RouteIfIndex InterfaceIndexOrZero, + ppvpn2547RouteType INTEGER, + ppvpn2547RouteProto INTEGER, + ppvpn2547RouteInfo OBJECT IDENTIFIER, + ppvpn2547RouteNextHopAS Unsigned32, + ppvpn2547RouteMetric1 Integer32, + ppvpn2547RouteMetric2 Integer32, + ppvpn2547RouteMetric3 Integer32, + ppvpn2547RouteMetric4 Integer32, + ppvpn2547RouteMetric5 Integer32 + } + + ppvpn2547RoutePrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { ppvpn2547RouteEntry 1 } + + ppvpn2547RouteVrfId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "Each route belonging to the same VRF uses the same VRF ID. + Hence, a VRF Id identifies which routing table this route is + a part of. This needs to be the value of ppvpn2547VrfId + attribute for an existing instance of ppvpn2547VrfEntry." + ::= { ppvpn2547RouteEntry 2 } + + ppvpn2547RouteDest OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The destination IP address of this route. + This object may not take a Multicast (Class D) + address value. + Any assignment (implicit or otherwise) of an + instance of this object to a value x must be + rejected if the bit-wise logical-AND of x with + the value of the corresponding instance of the + ppvpn2547RouteMask object is not equal to x." + ::= { ppvpn2547RouteEntry 3 } + + ppvpn2547RouteDestAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of the ppvpn2547RouteDest + entry." + ::= { ppvpn2547RouteEntry 4 } + + ppvpn2547RouteMask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "Indicate the mask to be logical-ANDed with the + destination address before being compared to + the value in the ppvpn2547RouteDest field. + For those systems that do not support + arbitrary subnet masks, an agent constructs the + value of the ppvpn2547RouteMask by reference + to the IP Address Class. + Any assignment (implicit or otherwise) of an + instance of this object to a value x must be + rejected if the bit-wise logical-AND of x with + the value of the corresponding instance of the + ppvpn2547RouteDest object is not equal to + ppvpn2547RouteDest." + ::= { ppvpn2547RouteEntry 5 } + + ppvpn2547RouteMaskAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of ppvpn2547RouteMask." + ::= { ppvpn2547RouteEntry 6 } + + ppvpn2547RouteTos OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The IP TOS Field is used to specify the policy to + be applied to this route. The encoding of IP TOS + + + is as specified by the following convention. + Zero indicates the default path if no more + specific policy applies. + + +-----+-----+-----+-----+-----+-----+-----+-----+ + | | | | + | PRECEDENCE | TYPE OF SERVICE | 0 | + | | | | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + IP TOS IP TOS + Field Policy Field Policy + Contents Code Contents Code + 0 0 0 0 ==> 0 0 0 0 1 ==> 2 + 0 0 1 0 ==> 4 0 0 1 1 ==> 6 + 0 1 0 0 ==> 8 0 1 0 1 ==> 10 + 0 1 1 0 ==> 12 0 1 1 1 ==> 14 + 1 0 0 0 ==> 16 1 0 0 1 ==> 18 + 1 0 1 0 ==> 20 1 0 1 1 ==> 22 + 1 1 0 0 ==> 24 1 1 0 1 ==> 26 + 1 1 1 0 ==> 28 1 1 1 1 ==> 30." + ::= { ppvpn2547RouteEntry 7 } + + ppvpn2547RouteNextHop OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "On remote routes, the address of the next + system en route; Otherwise, 0.0.0.0. ." + ::= { ppvpn2547RouteEntry 8 } + + ppvpn2547RouteNextHopAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "The address type of the ppvpn2547RouteNextHopAddrType + object." + ::= { ppvpn2547RouteEntry 9 } + + ppvpn2547RouteIfIndex OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + STATUS current + DESCRIPTION + "The ifIndex value that identifies the local + interface through which the next hop of this + route should be reached. If this value is set to 0, + this indicates that no interface is associated with + this route." + ::= { ppvpn2547RouteEntry 10 } + + ppvpn2547RouteType OBJECT-TYPE + SYNTAX INTEGER { other (1), -- not specified + reject (2), -- route to discard traffic + + local (3), -- local interface + remote (4) -- remote destination + } + STATUS current + DESCRIPTION + "The type of route. Note that local(3) refers + to a route for which the next hop is the final + destination; remote(4) refers to a route for + that the next hop is not the final destination. + Routes which do not result in traffic forwarding or + rejection should not be displayed even if the + implementation keeps them stored internally. + Reject (2) refers to a route which, if matched, + discards the message as unreachable. This is used + in some protocols as a means of correctly aggregating + routes." + ::= { ppvpn2547RouteEntry 11 } + + ppvpn2547RouteProto OBJECT-TYPE + SYNTAX INTEGER { other (1), -- not specified + local (2), -- local interface + netmgmt (3), -- static route + icmp (4), -- result of ICMP Redirect + + -- the following are all dynamic + -- routing protocols + + egp (5), -- Exterior Gateway Protocol + ggp (6), -- Gateway-Gateway Protocol + hello (7), -- FuzzBall HelloSpeak + rip (8), -- Berkeley RIP or RIP-II + isIs (9), -- Dual IS-IS + esIs (10), -- ISO 9542 + ciscoIgrp (11), -- Cisco IGRP + bbnSpfIgp (12), -- BBN SPF IGP + ospf (13), -- Open Shortest Path First + bgp (14), -- Border Gateway Protocol + idpr (15), -- InterDomain Policy Routing + ciscoEigrp (16) -- Cisco EIGRP + } + STATUS current + DESCRIPTION + "The routing mechanism via which this route was + learned. Inclusion of values for gateway rout- + ing protocols is not intended to imply that + hosts should support those protocols." + ::= { ppvpn2547RouteEntry 12 } + + ppvpn2547RouteInfo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "A reference to MIB definitions specific to the + + particular routing protocol which is responsi- + ble for this route, as determined by the value + specified in the route's ppvpn2547RouteProto + value. If this information is not present, its + value SHOULD be set to the OBJECT IDENTIFIER + { 0 0 }, which is a syntactically valid object + identif-ier, and any implementation conforming + to ASN.1 and the Basic Encoding Rules must be + able to generate and recognize this value." + ::= { ppvpn2547RouteEntry 13 } + + ppvpn2547RouteNextHopAS OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The Autonomous System Number of the Next Hop. + The semantics of this object are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. When this object is + unknown or not relevant its value should be set + to zero." + ::= { ppvpn2547RouteEntry 14 } + + ppvpn2547RouteMetric1 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The primary routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 15 } + + ppvpn2547RouteMetric2 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 16 } + + ppvpn2547RouteMetric3 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 17 } + + ppvpn2547RouteMetric4 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 18 } + + ppvpn2547RouteMetric5 OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "An alternate routing metric for this route. + The semantics of this metric are determined by + the routing-protocol specified in the route's + ppvpn2547RouteProto value. If this metric is not + used, its value should be set to -1." + ::= { ppvpn2547RouteEntry 19 } + + + -- + -- Conformance Section + -- + + + + ppvpn2547PibCompliances + OBJECT IDENTIFIER ::= { ppvpn2547PibConformance 1 } + ppvpn2547PibGroups + OBJECT IDENTIFIER ::= { ppvpn2547PibConformance 2 } + + ppvpn2547PibCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Describes the requirements for conformance to the + PPVPN BGP/MPLS VPN Policy PIB." + + MODULE -- this module + MANDATORY-GROUPS { + ppvpn2547PibVrfGroup, + ppvpn2547PibRouteTargetGroup, + ppvpn2547PibIfGroup, + ppvpn2547PibBgpPeerGroup, + ppvpn2547PibRouteGroup + ::= { ppvpn2547PibCompliances 1 } + + ppvpn2547PibVrfGroup OBJECT-GROUP + OBJECTS { ppvpn2547VrfRoles, + + ppvpn2547VrfIfName, + ppvpn2547VrfId, + ppvpn2547VrfDescription, + ppvpn2547VrfRD, + ppvpn2547VrfMaxRoutes + } + STATUS current + DESCRIPTION + "The VRF Group defines the PIB Objects that describe a VRF." + ::= { ppvpn2547PibGroups 1 } + + ppvpn2547PibRouteTargetGroup OBJECT-GROUP + OBJECTS { ppvpn2547RouteTargetType, + ppvpn2547RouteTargetVrfId, + ppvpn2547RouteTargetPrecedence, + ppvpn2547RouteTargetRT, + ppvpn2547RouteTargetDescr + } + STATUS current + DESCRIPTION + "The Route Target Group defines the PIB Objects that describe + a Route Target." + ::= { ppvpn2547PibGroups 2 } + + ppvpn2547PibIfGroup OBJECT-GROUP + OBJECTS { ppvpn2547IfRoles, + ppvpn2547IfName, + ppvpn2547IfVrfId, + ppvpn2547IfVpnClassification, + ppvpn2547IfRouteDistProtocol + } + STATUS current + DESCRIPTION + "The Interface Group defines the PIB Objects that + describe a Interface." + ::= { ppvpn2547PibGroups 3 } + + ppvpn2547PibBgpPeerGroup OBJECT-GROUP + OBJECTS { ppvpn2547BgpPeerVrfId, + ppvpn2547BgpPeerRole, + ppvpn2547BgpPeerAddrType, + ppvpn2547BgpPeerAddr + } + STATUS current + DESCRIPTION + "The BGP Peer Group defines the PIB Objects that + describe a BGP Peer." + ::= { ppvpn2547PibGroups 4 } + + ppvpn2547PibRouteGroup OBJECT-GROUP + OBJECTS { ppvpn2547RouteVrfId, + ppvpn2547RouteDest, + ppvpn2547RouteDestAddrType, + + ppvpn2547RouteMask, + ppvpn2547RouteMaskAddrType, + ppvpn2547RouteTos, + ppvpn2547RouteNextHop, + ppvpn2547RouteNextHopAddrType, + ppvpn2547RouteIfIndex, + + ppvpn2547RouteType, + ppvpn2547RouteProto, + ppvpn2547RouteAge, + ppvpn2547RouteInfo, + ppvpn2547RouteNextHopAS, + ppvpn2547RouteMetric1, + ppvpn2547RouteMetric2, + ppvpn2547RouteMetric3, + ppvpn2547RouteMetric4, + ppvpn2547RouteMetric5 + } + STATUS current + DESCRIPTION + "The Route Group defines the PIB Objects that + describe a Route." + ::= { ppvpn2547PibGroups 4 } + +END diff --git a/pibs/tubs/QOS-POLICY-802-PIB b/pibs/tubs/QOS-POLICY-802-PIB new file mode 100644 index 0000000..4534327 --- /dev/null +++ b/pibs/tubs/QOS-POLICY-802-PIB @@ -0,0 +1,608 @@ +QOS-POLICY-802-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Integer32, + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TruthValue, PhysAddress, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination + FROM POLICY-FRAMEWORK-PIB + Dscp + FROM QOS-POLICY-IP-PIB + pib + FROM COPS-PR-SPPI + InstanceId + FROM COPS-PR-SPPI-TC; + +qosPolicy802Pib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- to be assigned + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + DESCRIPTION + "The PIB module containing an initial set of policy + rule classes that describe the quality of service + (QoS) policies supported by devices for IEEE 802- + based traffic." + + ::= { ibrpib 5 } -- to be assigned ! + +qosPolicy802PibClasses OBJECT IDENTIFIER ::= { qosPolicy802Pib 1 } + +-- +-- Textual Conventions +-- + +-- +-- IEEE 802 CoS +-- + +QosIeee802Cos ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that is in the range of the IEEE 802 CoS + values. This corresponds to the 802.1p priority values." + + SYNTAX INTEGER (0..7) + +-- +-- General configuration information for the entire domain +-- + +qos802DomainConfig OBJECT IDENTIFIER ::= { qosPolicy802PibClasses 1 } + +-- +-- Differentiated Services Code Point Mapping Table +-- +-- Supports the mapping of DSCP values to IEEE CoS values. +-- + +qos802DscpMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802DscpMappingEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Maps each DSCP to an QosIeee802Cos. When configured + for the first time, all 64 entries of the table must + be specified. Thereafter, instances may be modified but + not deleted unless all instances are deleted." + + INSTALL-ERRORS { + priInstNotComplete(1) -- required instances not created + } + + ::= { qos802DomainConfig 1 } + +qos802DscpMappingEntry OBJECT-TYPE + SYNTAX Qos802DscpMappingEntry + STATUS current + DESCRIPTION + "An instance of the qos802DscpMapping class. A total of 64 + class instances are constantly maintained after initial device + configuration." + + PIB-INDEX { qos802DscpMappingId } + ::= { qos802DscpMappingTable 1 } + +Qos802DscpMappingEntry ::= SEQUENCE { + qos802DscpMappingId InstanceId, + qos802DscpMappingDscp Dscp, + qos802DscpMapping802Cos QosIeee802Cos +} + +qos802DscpMappingId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "A unique ID for this policy rule instance." + + ::= { qos802DscpMappingEntry 1 } + +qos802DscpMappingDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP class instance attribute that is used to + determine the appropriate layer 2 CoS mappings. DSCP + values 0 through 63 (inclusive) are maintained in + the table." + + ::= { qos802DscpMappingEntry 2 } + +qos802DscpMapping802Cos OBJECT-TYPE + SYNTAX QosIeee802Cos + STATUS current + DESCRIPTION + "The IEEE 802 CoS value to use when mapping the DSCP + value specified by the qos802DscpMappingDscp attribute + to a IEEE 802 CoS." + + ::= { qos802DscpMappingEntry 3 } + +-- +-- Layer 2 CoS-to-DSCP Mapping Table +-- +-- Supports the mapping of IEEE CoS values to DSCP values +-- for generic QoS traffic classification +-- + +qos802CosToDscpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802CosToDscpEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Maps each of eight layer 2 CoS values to a DSCP. When + configured for the first time, all 8 entries of the table + must be specified. Thereafter, instances may be modified + but not deleted unless all instances are deleted." + + INSTALL-ERRORS { + priInstNotComplete(1) -- required instances not created + } + + ::= { qos802DomainConfig 2 } + +qos802CosToDscpEntry OBJECT-TYPE + SYNTAX Qos802CosToDscpEntry + STATUS current + DESCRIPTION + "An instance of the qosCosToDscp class. A total of 8 + class instances are constantly maintained after initial + device configuration." + + PIB-INDEX { qos802CosToDscpId } + ::= { qos802CosToDscpTable 1 } + +Qos802CosToDscpEntry ::= SEQUENCE { + qos802CosToDscpId InstanceId, + qos802CosToDscpCos QosIeee802Cos, + qos802CosToDscpDscp Dscp +} + +qos802CosToDscpId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + + DESCRIPTION + "A unique index for this policy rule instance." + + ::= { qos802CosToDscpEntry 1 } + +qos802CosToDscpCos OBJECT-TYPE + SYNTAX QosIeee802Cos + STATUS current + DESCRIPTION + "The layer 2 CoS class instance attribute that is used to + determine the appropriate DSCP mappings. CoS values 0 + through 7 (inclusive) are maintained in the table." + + ::= { qos802CosToDscpEntry 2 } + +qos802CosToDscpDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP value to use when mapping the layer 2 CoS value + specified by the qosCosToDscp attribute to a DSCP." + + ::= { qos802CosToDscpEntry 3 } + +-- +-- The IEEE 802 Classification and Policing Group +-- + +qos802Qos OBJECT IDENTIFIER ::= { qosPolicy802PibClasses 2 } + +-- +-- The IEEE 802 ACE Table +-- +-- The IEEE 802 ACE Table supports the specification of IEEE +-- 802-based (e.g., 802.3) information that is used to perform +-- traffic classification. +-- + +qos802AceTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802AceEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based ACE definitions. A class that contains + attributes of IEEE 802 (e.g., 802.3) traffic that form + + an association that is used to perform traffic + classification." + + ::= { qos802Qos 1 } + +qos802AceEntry OBJECT-TYPE + SYNTAX Qos802AceEntry + STATUS current + DESCRIPTION + "IEEE 802-based ACE definitions. An entry specifies + (potentially) several distinct matching components. Each + component is tested against the data in a frame + individually. An overall match occurs when all of the + individual components match the data they are compared + against in the frame being processed. A failure of any + one test causes the overall match to fail. + + Wildcards may be specified for those fields that are not + relevant." + + PIB-INDEX { qos802AceId } + ::= { qos802AceTable 1 } + +Qos802AceEntry ::= SEQUENCE { + qos802AceId InstanceId, + qos802AceDstAddr PhysAddress, + qos802AceDstAddrMask PhysAddress, + qos802AceSrcAddr PhysAddress, + qos802AceSrcAddrMask PhysAddress, + qos802AceVlanId Integer32, + qos802AceVlanTagRequired INTEGER, + qos802AceEtherType Integer32, + qos802AceUserPriority BITS, + qos802AcePermit TruthValue +} + +qos802AceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies this + 802 ACE among all of the 802 ACEs. Note that this identifier + is used in instances of the qos802Acl class to associate a + 802 ACE with a 802 ACL. An active ACE/ACL association + prohibits the deletion of the 802 ACE until the ACE/ACL + + association is terminated. Class instances may not be + contiguous." + + ::= { qos802AceEntry 1 } + +qos802AceDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The 802 address against which the 802 DA of incoming traffic + streams will be compared. Frames whose 802 DA matches the + physical address specified by this object, taking into account + address wildcarding as specified by the qos802AceDstAddrMask + object, are potentially subject to the processing guidelines + that are associated with this entry through the related + action class." + + ::= { qos802AceEntry 2 } + +qos802AceDstAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 destination address + that should be considered when performing a 802 DA comparison + against the address specified in the qos802AceDstAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 DA in received frames to derive the value + to be compared against the qos802AceDstAddr address. A zero + bit in the mask thus means that the corresponding bit in the + address always matches. The qos802AceDstAddr value must also + be masked using this value prior to any comparisons. + + The length of this object in octets must equal the length in + octets of the qos802AceDstAddr. Note that a mask with no bits + set (i.e., all zeroes) effectively wildcards the + qos802AceDstAddr object." + + ::= { qos802AceEntry 3 } + +qos802AceSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + + "The 802 MAC address against which the 802 MAC SA of incoming + traffic streams will be compared. Frames whose 802 MAC SA + matches the physical address specified by this object, + taking into account address wildcarding as specified by the + qos802AceSrcAddrMask object, are potentially subject to the + processing guidelines that are associated with this entry + through the related action class." + + ::= { qos802AceEntry 4 } + +qos802AceSrcAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 MAC source address + that should be considered when performing a 802 MAC SA + comparison against the address specified in the + qos802AceSrcAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 MAC SA in received frames to derive the + value to be compared against the qos802AceSrcAddr address. A + zero bit in the mask thus means that the corresponding bit + in the address always matches. The qos802AceSrcAddr value + must also be masked using this value prior to any + comparisons. + + The length of this object in octets must equal the length in + octets of the qos802AceSrcAddr. Note that a mask with no bits + set (i.e., all zeroes) effectively wildcards the + qos802AceSrcAddr object." + + ::= { qos802AceEntry 5 } + +qos802AceVlanId OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..4094) + STATUS current + DESCRIPTION + "The VLAN ID (VID) that uniquely identifies a VLAN + within the device. This VLAN may be known or unknown + (i.e., traffic associated with this VID has not yet + been seen by the device) at the time this entry + is instantiated. + + Setting the qos802AceVlanId object to -1 indicates that + + VLAN data should not be considered during traffic + classification." + + ::= { qos802AceEntry 6 } + +qos802AceVlanTagRequired OBJECT-TYPE + SYNTAX INTEGER { + taggedOnly(1), + priorityTaggedPlus(2), + untaggedOnly(3), + ignoreTag(4) + } + STATUS current + DESCRIPTION + "This object indicates whether the presence of an + IEEE 802.1Q VLAN tag in data link layer frames must + be considered when determining if a given frame + matches this 802 ACE entry. + + A value of 'taggedOnly(1)' means that only frames + containing a VLAN tag with a non-Null VID (i.e., a + VID in the range 1..4094) will be considered a match. + + A value of 'priorityTaggedPlus(2)' means that only + frames containing a VLAN tag, regardless of the value + of the VID, will be considered a match. + + A value of 'untaggedOnly(3)' indicates that only + untagged frames will match this filter component. + + The presence of a VLAN tag is not taken into + consideration in terms of a match if the value is + 'ignoreTag(4)'." + + ::= { qos802AceEntry 7 } + +qos802AceEtherType OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..'ffff'h) + STATUS current + DESCRIPTION + "This object specifies the value that will be compared + against the value contained in the EtherType field of an + IEEE 802 frame. Example settings would include 'IP' + (0x0800), 'ARP' (0x0806) and 'IPX' (0x8137). + + Setting the qos802AceEtherTypeMin object to -1 indicates + that EtherType data should not be considered during traffic + classification. + + Note that the position of the EtherType field depends on + the underlying frame format. For Ethernet-II encapsulation, + the EtherType field follows the 802 MAC source address. For + 802.2 LLC/SNAP encapsulation, the EtherType value follows the + Organization Code field in the 802.2 SNAP header. The value + that is tested with regard to this filter component therefore + depends on the data link layer frame format being used. If + this 802 ACE component is active when there is no EtherType + field in a frame (e.g., 802.2 LLC), a match is implied." + + ::= { qos802AceEntry 8 } + +qos802AceUserPriority OBJECT-TYPE + SYNTAX BITS { + matchPriority0(0), + matchPriority1(1), + matchPriority2(2), + matchPriority3(3), + matchPriority4(4), + matchPriority5(5), + matchPriority6(6), + matchPriority7(7) + } + STATUS current + DESCRIPTION + "The set of values, representing the potential range + of user priority values, against which the value contained + in the user priority field of a tagged 802.1 frame is + compared. A test for equality is performed when determining + if a match exists between the data in a data link layer + frame and the value of this 802 ACE component. Multiple + values may be set at one time such that potentially several + different user priority values may match this 802 ACE + component. + + Setting all of the bits that are associated with this + object causes all user priority values to match this + attribute. This essentially makes any comparisons + with regard to user priority values unnecessary. Untagged + frames are treated as an implicit match." + + ::= { qos802AceEntry 9 } + +qos802AcePermit OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If the frame matches this ACE and the value of this + attribute is true, then the matching process terminates + and the QoS associated with this 802-based ACE (indirectly + through the 802 ACL) is applied to the packet. If the + value of this attribute is false, then no more 802 ACEs in + this 802 ACL are compared to this packet and matching + continues with the first 802-based ACE of the next 802 ACL." + + ::= { qos802AceEntry 10 } + +-- +-- The IEEE 802 ACL Definition Table +-- +-- The IEEE 802 ACL Definition Table supports the association of +-- distinct IEEE 802-based (e.g., 802.3) traffic classification +-- specifications into an ordered list. +-- + +qos802AclDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802AclDefinitionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based ACL definitions. A class that defines a + set of 802 ACLs, each of which is comprised of an ordered + list of 802 ACEs." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qos802Qos 2 } + +qos802AclDefinitionEntry OBJECT-TYPE + SYNTAX Qos802AclDefinitionEntry + STATUS current + DESCRIPTION + "IEEE 802-based ACL definitions. An entry specifies an + instance of this class that associates an 802 ACE with + + a given 802 ACL. The evaluation order of distinct 802 + ACEs that are associated with a specific 802 ACL is + specified as well." + + PIB-INDEX { qos802AclDefinitionId } + ::= { qos802AclDefinitionTable 1 } + +Qos802AclDefinitionEntry ::= SEQUENCE { + qos802AclDefinitionId InstanceId, + qos802AclDefinitionAclId InstanceId, + qos802AclDefinitionAceId InstanceId, + qos802AclDefinitionAceOrder Unsigned32 +} + +qos802AclDefinitionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies this + 802 ACE / 802 ACL association." + + ::= { qos802AclDefinitionEntry 1 } + +qos802AclDefinitionAclId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An index for this 802 ACL. Each 802 ACL in the device is + assigned a unique integer index. There will (potentially) be + multiple instances of the qos802AclDefinition class with this + identifier, one for each 802 ACE that is associated with the + specified 802 ACL. + + For example, assume that 2 802 ACLs, each comprised of 4 802 + ACEs, have been installed. The instances of this class may + appear as follows: + + Index AclId AceId AceOrder + 10 6 4 1 + 11 6 5 2 + 12 6 9 23 + 13 6 11 24 + 65 18 5 8 + 66 18 9 12 + 67 18 13 15 + + 70 18 14 16 + + Note that this identifier is used in instances of the + qosAclTarget class to associate an 802 ACL with an interface + set and action. An active ACL Target association prohibits + the deletion of all of the qos802AclDefinition instances + with a given qos802AclDefinitionAclId (i.e., at least one + entry for the specific qos802AclDefinitionAclId must be + present in this table) until the ACL Target association is + terminated." + + ::= { qos802AclDefinitionEntry 2 } + +qos802AclDefinitionAceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the 802 ACE in the qos802AceTable + that is associated with the 802 ACL specified by + qos802AclDefinitionAclId object. The corresponding instance + in the qos802Ace class must exist prior to being associated + with a 802 ACL. + + Attempting to specify an unknown class instance will result + in an appropriate error indication being returned to the + entity that is attempting to install the conflicting entry. + For example, a 'priUnknown(2)' error indication is returned + to the policy server in this situation." + + ::= { qos802AclDefinitionEntry 3 } + +qos802AclDefinitionAceOrder OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The precedence of the 802 ACE, identified via the + qos802AclDefinitionAceId object, with regard to evaluation + order. The precedence determines the order of evaluation of + this ACE in relation to related 802 ACEs that are associated + with an ACL. An ACE with a given precedence order in the + access control list is evaluated before one with a higher- + valued precedence order. + + Precedence values within a group must be unique otherwise + instance installation will be prohibited and an error + + value will be returned. + + Note that qos802AclDefinitionAceOrder values within a given + ACL need not be contiguous." + + ::= { qos802AclDefinitionEntry 4 } + +END diff --git a/pibs/tubs/QOS-POLICY-802-PIB-orig b/pibs/tubs/QOS-POLICY-802-PIB-orig new file mode 100644 index 0000000..487b2c9 --- /dev/null +++ b/pibs/tubs/QOS-POLICY-802-PIB-orig @@ -0,0 +1,602 @@ +QOS-POLICY-802-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, Integer32, + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TruthValue, PhysAddress, + TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination, PolicyInstanceId + FROM POLICY-FRAMEWORK-PIB + Dscp + FROM QOS-POLICY-IP-PIB; + +qosPolicy802Pib MODULE-IDENTITY + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + DESCRIPTION + "The PIB module containing an initial set of policy + rule classes that describe the quality of service + (QoS) policies supported by devices for IEEE 802- + based traffic." + + ::= { tbd } + +qosPolicy802PibClasses OBJECT IDENTIFIER ::= { qosPolicy802Pib 1 } + +-- +-- Textual Conventions +-- + +-- +-- IEEE 802 CoS +-- + +QosIeee802Cos ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that is in the range of the IEEE 802 CoS + values. This corresponds to the 802.1p priority values." + + SYNTAX INTEGER (0..7) + +-- +-- General configuration information for the entire domain +-- + +qos802DomainConfig OBJECT IDENTIFIER ::= { qosPolicy802PibClasses 1 } + +-- +-- Differentiated Services Code Point Mapping Table +-- +-- Supports the mapping of DSCP values to IEEE CoS values. +-- + +qos802DscpMappingTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802DscpMappingEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Maps each DSCP to an QosIeee802Cos. When configured + for the first time, all 64 entries of the table must + be specified. Thereafter, instances may be modified but + not deleted unless all instances are deleted." + + INSTALL-ERRORS { + priInstNotComplete(1) -- required instances not created + } + + ::= { qos802DomainConfig 1 } + +qos802DscpMappingEntry OBJECT-TYPE + SYNTAX Qos802DscpMappingEntry + STATUS current + DESCRIPTION + "An instance of the qos802DscpMapping class. A total of 64 + class instances are constantly maintained after initial device + configuration." + + INDEX { qos802DscpMappingId } + ::= { qos802DscpMappingTable 1 } + +Qos802DscpMappingEntry ::= SEQUENCE { + qos802DscpMappingId PolicyInstanceId, + qos802DscpMappingDscp Dscp, + qos802DscpMapping802Cos QosIeee802Cos +} + +qos802DscpMappingId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "A unique ID for this policy rule instance." + + ::= { qos802DscpMappingEntry 1 } + +qos802DscpMappingDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP class instance attribute that is used to + determine the appropriate layer 2 CoS mappings. DSCP + values 0 through 63 (inclusive) are maintained in + the table." + + ::= { qos802DscpMappingEntry 2 } + +qos802DscpMapping802Cos OBJECT-TYPE + SYNTAX QosIeee802Cos + STATUS current + DESCRIPTION + "The IEEE 802 CoS value to use when mapping the DSCP + value specified by the qos802DscpMappingDscp attribute + to a IEEE 802 CoS." + + ::= { qos802DscpMappingEntry 3 } + +-- +-- Layer 2 CoS-to-DSCP Mapping Table +-- +-- Supports the mapping of IEEE CoS values to DSCP values +-- for generic QoS traffic classification +-- + +qos802CosToDscpTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802CosToDscpEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Maps each of eight layer 2 CoS values to a DSCP. When + configured for the first time, all 8 entries of the table + must be specified. Thereafter, instances may be modified + but not deleted unless all instances are deleted." + + INSTALL-ERRORS { + priInstNotComplete(1) -- required instances not created + } + + ::= { qos802DomainConfig 2 } + +qos802CosToDscpEntry OBJECT-TYPE + SYNTAX Qos802CosToDscpEntry + STATUS current + DESCRIPTION + "An instance of the qosCosToDscp class. A total of 8 + class instances are constantly maintained after initial + device configuration." + + INDEX { qos802CosToDscpId } + ::= { qos802CosToDscpTable 1 } + +Qos802CosToDscpEntry ::= SEQUENCE { + qos802CosToDscpId PolicyInstanceId, + qos802CosToDscpCos QosIeee802Cos, + qos802CosToDscpDscp Dscp +} + +qos802CosToDscpId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + + DESCRIPTION + "A unique index for this policy rule instance." + + ::= { qos802CosToDscpEntry 1 } + +qos802CosToDscpCos OBJECT-TYPE + SYNTAX QosIeee802Cos + STATUS current + DESCRIPTION + "The layer 2 CoS class instance attribute that is used to + determine the appropriate DSCP mappings. CoS values 0 + through 7 (inclusive) are maintained in the table." + + ::= { qos802CosToDscpEntry 2 } + +qos802CosToDscpDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP value to use when mapping the layer 2 CoS value + specified by the qosCosToDscp attribute to a DSCP." + + ::= { qos802CosToDscpEntry 3 } + +-- +-- The IEEE 802 Classification and Policing Group +-- + +qos802Qos OBJECT IDENTIFIER ::= { qosPolicy802PibClasses 2 } + +-- +-- The IEEE 802 ACE Table +-- +-- The IEEE 802 ACE Table supports the specification of IEEE +-- 802-based (e.g., 802.3) information that is used to perform +-- traffic classification. +-- + +qos802AceTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802AceEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based ACE definitions. A class that contains + attributes of IEEE 802 (e.g., 802.3) traffic that form + + an association that is used to perform traffic + classification." + + ::= { qos802Qos 1 } + +qos802AceEntry OBJECT-TYPE + SYNTAX Qos802AceEntry + STATUS current + DESCRIPTION + "IEEE 802-based ACE definitions. An entry specifies + (potentially) several distinct matching components. Each + component is tested against the data in a frame + individually. An overall match occurs when all of the + individual components match the data they are compared + against in the frame being processed. A failure of any + one test causes the overall match to fail. + + Wildcards may be specified for those fields that are not + relevant." + + INDEX { qos802AceId } + ::= { qos802AceTable 1 } + +Qos802AceEntry ::= SEQUENCE { + qos802AceId PolicyInstanceId, + qos802AceDstAddr PhysAddress, + qos802AceDstAddrMask PhysAddress, + qos802AceSrcAddr PhysAddress, + qos802AceSrcAddrMask PhysAddress, + qos802AceVlanId Integer32, + qos802AceVlanTagRequired INTEGER, + qos802AceEtherType Integer32, + qos802AceUserPriority BITS, + qos802AcePermit TruthValue +} + +qos802AceId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies this + 802 ACE among all of the 802 ACEs. Note that this identifier + is used in instances of the qos802Acl class to associate a + 802 ACE with a 802 ACL. An active ACE/ACL association + prohibits the deletion of the 802 ACE until the ACE/ACL + + association is terminated. Class instances may not be + contiguous." + + ::= { qos802AceEntry 1 } + +qos802AceDstAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "The 802 address against which the 802 DA of incoming traffic + streams will be compared. Frames whose 802 DA matches the + physical address specified by this object, taking into account + address wildcarding as specified by the qos802AceDstAddrMask + object, are potentially subject to the processing guidelines + that are associated with this entry through the related + action class." + + ::= { qos802AceEntry 2 } + +qos802AceDstAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 destination address + that should be considered when performing a 802 DA comparison + against the address specified in the qos802AceDstAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 DA in received frames to derive the value + to be compared against the qos802AceDstAddr address. A zero + bit in the mask thus means that the corresponding bit in the + address always matches. The qos802AceDstAddr value must also + be masked using this value prior to any comparisons. + + The length of this object in octets must equal the length in + octets of the qos802AceDstAddr. Note that a mask with no bits + set (i.e., all zeroes) effectively wildcards the + qos802AceDstAddr object." + + ::= { qos802AceEntry 3 } + +qos802AceSrcAddr OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + + "The 802 MAC address against which the 802 MAC SA of incoming + traffic streams will be compared. Frames whose 802 MAC SA + matches the physical address specified by this object, + taking into account address wildcarding as specified by the + qos802AceSrcAddrMask object, are potentially subject to the + processing guidelines that are associated with this entry + through the related action class." + + ::= { qos802AceEntry 4 } + +qos802AceSrcAddrMask OBJECT-TYPE + SYNTAX PhysAddress + STATUS current + DESCRIPTION + "This object specifies the bits in a 802 MAC source address + that should be considered when performing a 802 MAC SA + comparison against the address specified in the + qos802AceSrcAddr object. + + The value of this object represents a mask that is logically + and'ed with the 802 MAC SA in received frames to derive the + value to be compared against the qos802AceSrcAddr address. A + zero bit in the mask thus means that the corresponding bit + in the address always matches. The qos802AceSrcAddr value + must also be masked using this value prior to any + comparisons. + + The length of this object in octets must equal the length in + octets of the qos802AceSrcAddr. Note that a mask with no bits + set (i.e., all zeroes) effectively wildcards the + qos802AceSrcAddr object." + + ::= { qos802AceEntry 5 } + +qos802AceVlanId OBJECT-TYPE + SYNTAX Integer32 (-1 | 1..4094) + STATUS current + DESCRIPTION + "The VLAN ID (VID) that uniquely identifies a VLAN + within the device. This VLAN may be known or unknown + (i.e., traffic associated with this VID has not yet + been seen by the device) at the time this entry + is instantiated. + + Setting the qos802AceVlanId object to -1 indicates that + + VLAN data should not be considered during traffic + classification." + + ::= { qos802AceEntry 6 } + +qos802AceVlanTagRequired OBJECT-TYPE + SYNTAX INTEGER { + taggedOnly(1), + priorityTaggedPlus(2), + untaggedOnly(3), + ignoreTag(4) + } + STATUS current + DESCRIPTION + "This object indicates whether the presence of an + IEEE 802.1Q VLAN tag in data link layer frames must + be considered when determining if a given frame + matches this 802 ACE entry. + + A value of 'taggedOnly(1)' means that only frames + containing a VLAN tag with a non-Null VID (i.e., a + VID in the range 1..4094) will be considered a match. + + A value of 'priorityTaggedPlus(2)' means that only + frames containing a VLAN tag, regardless of the value + of the VID, will be considered a match. + + A value of 'untaggedOnly(3)' indicates that only + untagged frames will match this filter component. + + The presence of a VLAN tag is not taken into + consideration in terms of a match if the value is + 'ignoreTag(4)'." + + ::= { qos802AceEntry 7 } + +qos802AceEtherType OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..'ffff'h) + STATUS current + DESCRIPTION + "This object specifies the value that will be compared + against the value contained in the EtherType field of an + IEEE 802 frame. Example settings would include 'IP' + (0x0800), 'ARP' (0x0806) and 'IPX' (0x8137). + + Setting the qos802AceEtherTypeMin object to -1 indicates + that EtherType data should not be considered during traffic + classification. + + Note that the position of the EtherType field depends on + the underlying frame format. For Ethernet-II encapsulation, + the EtherType field follows the 802 MAC source address. For + 802.2 LLC/SNAP encapsulation, the EtherType value follows the + Organization Code field in the 802.2 SNAP header. The value + that is tested with regard to this filter component therefore + depends on the data link layer frame format being used. If + this 802 ACE component is active when there is no EtherType + field in a frame (e.g., 802.2 LLC), a match is implied." + + ::= { qos802AceEntry 8 } + +qos802AceUserPriority OBJECT-TYPE + SYNTAX BITS { + matchPriority0(0), + matchPriority1(1), + matchPriority2(2), + matchPriority3(3), + matchPriority4(4), + matchPriority5(5), + matchPriority6(6), + matchPriority7(7) + } + STATUS current + DESCRIPTION + "The set of values, representing the potential range + of user priority values, against which the value contained + in the user priority field of a tagged 802.1 frame is + compared. A test for equality is performed when determining + if a match exists between the data in a data link layer + frame and the value of this 802 ACE component. Multiple + values may be set at one time such that potentially several + different user priority values may match this 802 ACE + component. + + Setting all of the bits that are associated with this + object causes all user priority values to match this + attribute. This essentially makes any comparisons + with regard to user priority values unnecessary. Untagged + frames are treated as an implicit match." + + ::= { qos802AceEntry 9 } + +qos802AcePermit OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If the frame matches this ACE and the value of this + attribute is true, then the matching process terminates + and the QoS associated with this 802-based ACE (indirectly + through the 802 ACL) is applied to the packet. If the + value of this attribute is false, then no more 802 ACEs in + this 802 ACL are compared to this packet and matching + continues with the first 802-based ACE of the next 802 ACL." + + ::= { qos802AceEntry 10 } + +-- +-- The IEEE 802 ACL Definition Table +-- +-- The IEEE 802 ACL Definition Table supports the association of +-- distinct IEEE 802-based (e.g., 802.3) traffic classification +-- specifications into an ordered list. +-- + +qos802AclDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF Qos802AclDefinitionEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "IEEE 802-based ACL definitions. A class that defines a + set of 802 ACLs, each of which is comprised of an ordered + list of 802 ACEs." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qos802Qos 2 } + +qos802AclDefinitionEntry OBJECT-TYPE + SYNTAX Qos802AclDefinitionEntry + STATUS current + DESCRIPTION + "IEEE 802-based ACL definitions. An entry specifies an + instance of this class that associates an 802 ACE with + + a given 802 ACL. The evaluation order of distinct 802 + ACEs that are associated with a specific 802 ACL is + specified as well." + + INDEX { qos802AclDefinitionId } + ::= { qos802AclDefinitionTable 1 } + +Qos802AclDefinitionEntry ::= SEQUENCE { + qos802AclDefinitionId PolicyInstanceId, + qos802AclDefinitionAclId PolicyInstanceId, + qos802AclDefinitionAceId PolicyInstanceId, + qos802AclDefinitionAceOrder Unsigned32 +} + +qos802AclDefinitionId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies this + 802 ACE / 802 ACL association." + + ::= { qos802AclDefinitionEntry 1 } + +qos802AclDefinitionAclId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An index for this 802 ACL. Each 802 ACL in the device is + assigned a unique integer index. There will (potentially) be + multiple instances of the qos802AclDefinition class with this + identifier, one for each 802 ACE that is associated with the + specified 802 ACL. + + For example, assume that 2 802 ACLs, each comprised of 4 802 + ACEs, have been installed. The instances of this class may + appear as follows: + + Index AclId AceId AceOrder + 10 6 4 1 + 11 6 5 2 + 12 6 9 23 + 13 6 11 24 + 65 18 5 8 + 66 18 9 12 + 67 18 13 15 + + 70 18 14 16 + + Note that this identifier is used in instances of the + qosAclTarget class to associate an 802 ACL with an interface + set and action. An active ACL Target association prohibits + the deletion of all of the qos802AclDefinition instances + with a given qos802AclDefinitionAclId (i.e., at least one + entry for the specific qos802AclDefinitionAclId must be + present in this table) until the ACL Target association is + terminated." + + ::= { qos802AclDefinitionEntry 2 } + +qos802AclDefinitionAceId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the 802 ACE in the qos802AceTable + that is associated with the 802 ACL specified by + qos802AclDefinitionAclId object. The corresponding instance + in the qos802Ace class must exist prior to being associated + with a 802 ACL. + + Attempting to specify an unknown class instance will result + in an appropriate error indication being returned to the + entity that is attempting to install the conflicting entry. + For example, a 'priUnknown(2)' error indication is returned + to the policy server in this situation." + + ::= { qos802AclDefinitionEntry 3 } + +qos802AclDefinitionAceOrder OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The precedence of the 802 ACE, identified via the + qos802AclDefinitionAceId object, with regard to evaluation + order. The precedence determines the order of evaluation of + this ACE in relation to related 802 ACEs that are associated + with an ACL. An ACE with a given precedence order in the + access control list is evaluated before one with a higher- + valued precedence order. + + Precedence values within a group must be unique otherwise + instance installation will be prohibited and an error + + value will be returned. + + Note that qos802AclDefinitionAceOrder values within a given + ACL need not be contiguous." + + ::= { qos802AclDefinitionEntry 4 } + +END diff --git a/pibs/tubs/QOS-POLICY-IP-PIB b/pibs/tubs/QOS-POLICY-IP-PIB new file mode 100644 index 0000000..5f47d6a --- /dev/null +++ b/pibs/tubs/QOS-POLICY-IP-PIB @@ -0,0 +1,1341 @@ +QOS-POLICY-IP-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Integer32, + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination + FROM POLICY-FRAMEWORK-PIB + InetAddress + FROM INET-ADDRESS-MIB + InstanceId + FROM COPS-PR-SPPI-TC; + +qosPolicyIpPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- to be assigned + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + DESCRIPTION + "The PIB module containing an initial set of policy + rule classes that describe the quality of service + (QoS) policies. It includes general classes that may + be extended by other PIB specifications as well as + an initial set of PIB classes related to IP processing." + + ::= { ibrpib 4 } -- to be assigned! + +qosPolicyGenPibClasses OBJECT IDENTIFIER ::= { qosPolicyIpPib 1 } +qosPolicyIpPibClasses OBJECT IDENTIFIER ::= { qosPolicyIpPib 2 } + +-- +-- Textual Conventions +-- + +-- +-- Diffserv Codepoint +-- + +Dscp ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that is in the range of the diffserv codepoint + values." + + SYNTAX INTEGER (0..63) + +-- +-- Interface types +-- + +QosInterfaceQueueCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that describes the number of queues an interface + supports. It is limited to the number of DSCP values." + + SYNTAX INTEGER (1..64) + +-- +-- QoS Interface Group +-- +-- +-- This group specifies the configuration of the various interface +-- types including the setting of queueing parameters and the +-- mapping of DSCPs and 802.1 CoS to queues. +-- + +qosIfParameters OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 1 } + +-- +-- Interface Type Table + +-- + +qosInterfaceTypeTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosInterfaceTypeEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Interface type definitions. This class describes the types + of interfaces that exist on the device. An interface type + is denoted by its designated role identifier as well as + by the queue set and queue capabilities it supports." + + ::= { qosIfParameters 1 } + +qosInterfaceTypeEntry OBJECT-TYPE + SYNTAX QosInterfaceTypeEntry + STATUS current + DESCRIPTION + "An instance of this class describes the characteristics + of a type of an interface. Interface type characteristics + include a role combination identifier, a queue set + identifier and a queue capabilities attribute. An + instance is required for each different unique role + combination identifier which represents the different + interface types that are operational in the device at + any given time. The PEP does not report which specific + interfaces have which characteristics." + + PIB-INDEX { qosInterfaceTypeId } + ::= { qosInterfaceTypeTable 1 } + +QosInterfaceTypeEntry ::= SEQUENCE { + qosInterfaceTypeId InstanceId, + qosInterfaceTypeRoles RoleCombination, + qosInterfaceTypeQueueSet InstanceId, + qosInterfaceTypeCapabilities BITS +} + +qosInterfaceTypeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies a + instance of the qosInterfaceType class. Class instances + may not be contiguous." + + ::= { qosInterfaceTypeEntry 1 } + +qosInterfaceTypeRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination that is used to identify interfaces + with the characteristics specified by the attributes + of this class instance. Interface role combination + identifiers are used within a number of classes to + logically identify a physical set of interfaces to which + policy rules and actions are applied. Role combination + identifiers must exist in this table prior to being + referenced in other class instances." + + ::= { qosInterfaceTypeEntry 2 } + +qosInterfaceTypeQueueSet OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "The index of the queue set that is associated with + interfaces that are identified with the role combination + identifier that is associated with this class instance." + + ::= { qosInterfaceTypeEntry 3 } + +qosInterfaceTypeCapabilities OBJECT-TYPE + SYNTAX BITS { + other(0), + + -- Classification support + inputIpClassification(1), + outputIpClassification(2), + input802Classification(3), + output802Classification(4), + + -- Queuing discipline support + singleQueuingDiscipline(5), + hybridQueuingDiscipline(6) + } + STATUS current + DESCRIPTION + "An enumeration of interface capabilities. Used by the + PDP or network manager to select which policies and + + configuration it should push to the PEP." + + ::= { qosInterfaceTypeEntry 4 } + +-- +-- Interface Queue Table +-- +-- The Interface Queue Table enumerates the individual queues that +-- comprise a given queue set. Information specific to each queue +-- is exported by this table. +-- + +qosIfQueueTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIfQueueEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "Contains information about the individual queues that + comprise a queue set implemented on the device." + + ::= { qosIfParameters 2 } + +qosIfQueueEntry OBJECT-TYPE + SYNTAX QosIfQueueEntry + STATUS current + DESCRIPTION + "A conceptual row in the qosIfQueueTable. + + Each row identifies a specific queue within a given queue + set and contains detailed information about the queue. Queues + are associated with a given set through this table and + a queue set is associated with an interface set through + the qosInterfaceTypeTable." + + PIB-INDEX { qosIfQueueId } + ::= { qosIfQueueTable 1 } + +QosIfQueueEntry ::= SEQUENCE { + qosIfQueueId InstanceId, + qosIfQueueSetId INTEGER, + qosIfQueueIndex QosInterfaceQueueCount, + qosIfQueueGenDiscipline INTEGER, + qosIfQueueExtDiscipline OBJECT IDENTIFIER, + qosIfQueueDrainSize Unsigned32, + qosIfQueueAbsBandwidth Unsigned32, + + qosIfQueueBandwidthAllocation INTEGER, + qosIfQueueServiceOrder QosInterfaceQueueCount, + qosIfQueueSize Unsigned32 +} + +qosIfQueueId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "The index that uniquely identifies this row in the table, + i.e., this PRI." + + ::= { qosIfQueueEntry 1 } + +qosIfQueueSetId OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "An index that uniquely identifies a specific queue set. The + queue set that is identified with this value is associated + with an interface set through the qosInterfaceTypeQueueSet + object in the qosInterfaceTypeTable. The individual queues + that are members of this set all have the same value for + this attribute (i.e., they have the same set ID)." + + ::= { qosIfQueueEntry 2 } + +qosIfQueueIndex OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "An arbitrary index that uniquely identifies a specific + queue within a set of queues that is identified by the + qosIfQueueSetId value." + + ::= { qosIfQueueEntry 3 } + +qosIfQueueGenDiscipline OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- Use qosIfQueueExtDiscipline + fifo(2), -- First In First Out queuing + pq(3), -- Priority Queuing + fq(4), -- Fair Queuing + wfq(5) -- Weighted Fair Queuing + } + + STATUS current + DESCRIPTION + "This object identifies the queuing discipline that is + associated with the specified queue. Several general + purpose and well-known queuing disciplines are supported + by this attribute. Queuing disciplines that differ from + those that are supported by this object are specified + by setting this attribute to other(1) and providing + the object identifier that represents the different + queuing paradigm in the qosIfQueueExtDiscipline object. + + A value of fifo(2) indicates that the queue is serviced + on a first-in-first-out (FIFO) basis. This discipline is + generally employed when only a single queue is available + for a given interface. + + A value of pq(3) indicates that the queue is serviced + using a priority queuing discipline. This technique is + used when several queues are available for a given + interface. Each queue is assigned a priority and queues + are serviced in order of priority. Higher priority queues + are completely drained before lower priority queues are + serviced. + + A value of fq(4) indicates that the queue is serviced + using a fair queuing discipline. This technique is used + when several queues are available for a given interface. + Each queue is treated equally and is serviced in a + round-robin fashion. + + A value of wfq(5) indicates that the queue is serviced + using a weighted fair queuing discipline. This technique is + used when several queues are available for a given interface. + Each queue is serviced based on queue weights which determine + the scheduling and frequency of queue servicing. Queues that + are assigned a greater weight are implicitly provided with + more bandwidth. + + Note that the processing disciplines for all of the queues + in a given set must be considered when trying to establish + a processing profile for a given interface." + + ::= { qosIfQueueEntry 4 } + +qosIfQueueExtDiscipline OBJECT-TYPE + + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "This object identifies the queuing discipline that is + associated with the specified queue. This attribute + provides a means through which additional queuing mechanisms + can be identified should the general queuing disciplines + be inadequate for a given device. As such. this attribute is + consulted only when the value of the qosIfQueueGenDiscipline + object is other(1). It contains an object identifier that + uniquely identifies a queuing paradigm. + + Note that the processing disciplines for all of the queues + in a given set must be considered when trying to establish + a processing profile for a given interface." + + ::= { qosIfQueueEntry 5 } + +qosIfQueueDrainSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum number of bytes that may be drained from the + queue in one cycle. The percentage of the interface + bandwidth allocated to this queue can be calculated from + this attribute and the sum of the drain sizes of all the + queues in a specific queue cluster in a queue set. + + This attribute represents the relative bandwidth that is + available to a given queue with respect to other queues with + which it is associated. The absolute bandwidth that is + available to a given queue is specified by the attribute + qosIfQueueAbsBandwidth. Which of these two applies is + specified by the attribute qosIfQueueBandwidthAllocation." + + ::= { qosIfQueueEntry 6 } + +qosIfQueueAbsBandwidth OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum interface bandwidth that is available for + consumption when servicing this queue. This bandwidth is + specified in terms of kilobits per second. + + This attribute represents the absolute bandwidth that is + available to a given queue. The relative bandwidth that is + available to a given queue, with respect to other queues with + which it is associated, is specified by the attribute + qosIfQueueDrainSize. Which of these two applies is specified + by the attribute qosIfQueueBandwidthAllocation." + + ::= { qosIfQueueEntry 7 } + +qosIfQueueBandwidthAllocation OBJECT-TYPE + SYNTAX INTEGER { + absolute(1), --use qosIfQueueAbsBandwidth + relative(2) --use qosIfQueueDrainSize + } + STATUS current + DESCRIPTION + "This attribute specifies whether to configure the queue for + an absolute bandwidth limit or one that is relative to other + queues of the interface. i.e., whether to configure the queue + using qosIfQueueAbsBandwidth or qosIfQueueDrainSize." + + ::= { qosIfQueueEntry 8 } + +qosIfQueueServiceOrder OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "This object is used to provide an additional level of + priority that is required for certain queuing disciplines + and when the different queues that comprise a queue set + are serviced using a mix of queuing disciplines. This + object can be used to specify, for example, the order in + which queues will be serviced when priority queuing is + used. It also supports the ability to describe the + servicing hierarchy when a hybrid queuing scheme, such + as priority queuing coupled with weighted fair queuing, + is used. + + Queue service priority is assigned such that a lower + service order value indicates a higher priority. For + example, a priority queue with a value of 1 will be + serviced (i.e., drained) before another priority queue + with a service order value of 2. + + Note that multiple queues that are logically associated, + + based on the queuing discipline that is being employed, + will be assigned the same service order value. Under + this scenario, other parameters that are related to the + queuing discipline determine the order of queue servicing + (e.g., queue drain size is used for 'wfq'). + + For example, an interface that is associated with a queue + set supporting two priority queues and three queues that + are serviced using WFQ would be modeled as follows: + + Q Index Q Discipline Q Drain Size Q Service Order + 22 pq(1) - 1 + 23 pq(1) - 2 + 24 wfq(3) 500 3 + 25 wfq(3) 350 3 + 26 wfq(3) 150 3 + + The queue set presented in this example would service + all queued traffic in queue 22 first, followed by all of + the queued traffic in queue 23. Next the queued traffic + in queues 24 through 26 would be serviced in a round + robin fashion with queue 24 receiving 50% of the available + bandwidth, queue 25 receiving 35% of the available + bandwidth and queue 26 receiving 15% of the available + bandwidth. This example is presented for expository + purposes and has been simplified accordingly. + + Note that, in this example, queues 24, 25 and 26 form a + queue cluster. Members of a queue cluster are all assigned + the same qosIfQueueServiceOrder as there are tightly + coupled. The qosIfQueueDrainSize attribute is used to + determine the additional processing characteristics of + the individual queues in a cluster." + + ::= { qosIfQueueEntry 9 } + +qosIfQueueSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The size of the queue in bytes. Some devices set queue size + in terms of packets. These devices must calculate the queue + size in packets by assuming an average packet size suitable + for the particular interface. + + Some devices have a fixed size buffer to be shared among all + queues. These devices must allocate a fraction of the + total buffer space to this queue calculated as the the ratio + of the queue size to the sum of the queue sizes for the + interface." + + ::= { qosIfQueueEntry 10 } + +-- +-- DSCP Assignment Table +-- +-- Supports the assignment of DSCPs to queues for each +-- interface type. +-- + +qosIfDscpAssignmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIfDscpAssignmentEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Supports the assignment of DSCP values to a queue for + each interface with a specific queue count. There will be + 64 instances of this class for each supported combination + of queue count and role combination." + + ::= { qosIfParameters 3 } + +qosIfDscpAssignmentEntry OBJECT-TYPE + SYNTAX QosIfDscpAssignmentEntry + STATUS current + DESCRIPTION + "An instance of the qosIfDscpAssignment class." + + PIB-INDEX { qosIfDscpAssignmentId } + ::= { qosIfDscpAssignmentTable 1 } + +QosIfDscpAssignmentEntry ::= SEQUENCE { + qosIfDscpAssignmentId InstanceId, + qosIfDscpAssignmentRoles RoleCombination, + qosIfDscpAssignmentDscp Dscp, + qosIfDscpAssignmentQueue QosInterfaceQueueCount +} + +qosIfDscpAssignmentId OBJECT-TYPE + SYNTAX InstanceId + + STATUS current + DESCRIPTION + "An index that is used to uniquely identify the + instance of the qosIfDscpAssignment class." + + ::= { qosIfDscpAssignmentEntry 1 } + +qosIfDscpAssignmentRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination with which an interface must be + configured to support the DSCP-to-queue assignment + described by this instance. The specified role + combination must be defined in the qosInterfaceType + table prior to being referenced by this entry. + Otherwise a 'priAssociationUnknown(3)' error code + will be returned." + + ::= { qosIfDscpAssignmentEntry 2 } + +qosIfDscpAssignmentDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP to which this class instance applies." + + ::= { qosIfDscpAssignmentEntry 3 } + +qosIfDscpAssignmentQueue OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "The specific queue, within the queue set that is + associated with the interface set identified by the + qosIfDscpAssignmentRoles tag, on which traffic with + the specified DSCP, dictated by the + qosIfDscpAssignmentDscp value, is placed. Failure to + specify an appropriate queue results in a + 'priAssociationConflict(4)' error indication being + returned." + + ::= { qosIfDscpAssignmentEntry 4 } + +-- +-- QoS Meter Table +-- +-- The QoS Meter Table contains metering specifications that +-- can be used to provide an acceptable flow bandwidth +-- dimension to the Target table. +-- + +qosMeter OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 2 } + +qosMeterTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosMeterEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Contains the current set of configured meters. The + meters are associated with a classifier during + operation through the QoS Target Table." + + ::= { qosMeter 1 } + +qosMeterEntry OBJECT-TYPE + SYNTAX QosMeterEntry + STATUS current + DESCRIPTION + "General metering definitions. Each entry specifies + an instance of the qosMeter class which specifies + metering information in terms of traffic stream + bandwidth parameters. An entry can thus be used to + support traffic metering based on the specified + service level specification." + + PIB-INDEX { qosMeterId } + ::= { qosMeterTable 1 } + +QosMeterEntry ::= SEQUENCE { + qosMeterId InstanceId, + qosMeterDataSpecification INTEGER, + qosMeterCommittedRate Unsigned32, + qosMeterCommittedBurst Unsigned32, + qosMeterPeakRate Unsigned32, + qosMeterPeakBurst Unsigned32, + qosMeterHighConfAction InstanceId, + qosMeterMedConfAction InstanceId, + + qosMeterLowConfAction InstanceId +} + +qosMeterId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the qosMeter class. Meters are + associated with specific flows using this attribute + through the qosTargetMeter attribute in the QoS + Target class." + + ::= { qosMeterEntry 1 } + +qosMeterDataSpecification OBJECT-TYPE + SYNTAX INTEGER { + noMeterData(1), -- no metering reqd + committedData(2), -- committed rate only + peakData(3) -- committed and peak + } + STATUS current + DESCRIPTION + "Specifies the metering data, and thus the actions, that + are defined in a given entry. + + A value of noMeterData(1) indicates that no flow metering + is necessary. All flows associated with this meter entry + are considered to be at a high level of conformance. + + A value of committedData(2) indicates that committed rate + and committed burst information has been specified and will + be applied to associated flows. No peak rate and burst + information has been specified meaning that two levels + of conformance (high, medium) are supported. + + A value of peakData(3) indicates that peak rate and peak + burst information has been provided in addition to the + committed rate and committed burst information. All provided + information will be applied to associated flows meaning that + three levels of conformance (high, medium, low) are + supported." + + ::= { qosMeterEntry 2 } + +qosMeterCommittedRate OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the committed information rate + (CIR) against which associated traffic streams will be + metered. The CIR specifies the rate at which incoming + traffic can arrive to be considered to be at a high + level of conformance. Typically, this value specifies + the rate at which tokens are added to a token bucket + used to meter received flows. + + This object specifies a rate in bytes per second units + such that, for example, a value of 100 equates to a + committed information rate of 100 bytes per second. + + Committed rate (and burst) information must be present + if the qosMeterDataSpecification object has the value + committedData(2) or peakRate(3). This, in turn, requires + that at least both high and medium conformance actions + be specified." + + ::= { qosMeterEntry 3 } + +qosMeterCommittedBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the committed burst size + (CBS) against which associated traffic streams will + be metered. The CBS specifies the maximum burst size + that is supported for flows to be considered to be at + a high level of conformance. Typically, this value + represents the maximum number of tokens in a token + bucket. + + This object specifies flow data in bytes per second + units such that, for example, a value of 100 equates + to a committed information rate of 100 bytes per + second. + + Committed burst (and rate) information must be present + if the qosMeterDataSpecification object has the value + committedData(2) or peakRate(3). This, in turn, requires + that at least both high and medium conformance actions + + be specified." + + ::= { qosMeterEntry 4 } + +qosMeterPeakRate OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the peak information rate (PIR) + against which associated traffic streams will be + metered. The PIR specifies the rate at which incoming + traffic can arrive to be considered to be at a medium + level of conformance. Typically, this value specifies + the rate at which tokens are added to a token bucket + used to meter received flows. + + This object specifies a rate in bytes per second units + such that, for example, a value of 100 equates to a + committed information rate of 100 bytes per second. + + Peak rate (and burst) information must be present + if the qosMeterDataSpecification object has the value + peakData(3). This, in turn, requires that high, medium + and low conformance actions be specified." + + ::= { qosMeterEntry 5 } + +qosMeterPeakBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the peak burst size (PBS) + against which associated traffic streams will + be metered. The CBS specifies the maximum burst size + that is supported for flows to be considered to be at + a medium level of conformance. Typically, this value + represents the maximum number of tokens in a token + bucket. + + This object specifies flow data in bytes per second + units such that, for example, a value of 100 equates + to a committed information rate of 100 bytes per + second. + + Peak burst (and rate) information must be present + + if the qosMeterDataSpecification object has the value + peakData(3). This, in turn, requires that high, medium + and low conformance actions be specified." + + ::= { qosMeterEntry 6 } + +qosMeterHighConfAction OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a high + level of conformance with regard to metering criteria + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must always be provided." + + ::= { qosMeterEntry 7 } + +qosMeterMedConfAction OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a medium + level of conformance with regard to metering criteria + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must be provided if the value of the + associated qosMeterDataSpecification object is + committedRate(2) or peakRate(3)." + + ::= { qosMeterEntry 8 } + +qosMeterLowConfAction OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a low + level of conformance with regard to metering criteria + + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must be provided if the value of the + associated qosMeterDataSpecification object is + peakRate(3)." + + ::= { qosMeterEntry 9 } + +-- +-- The Generic QoS ACL Action Group +-- + +qosAction OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 3 } + +-- +-- The QoS Action Table +-- +-- The QoS Action Table describes actions that are associated with +-- specific IP, IEEE 802 and other ACLs through the QoS Target +-- Table. An action specification may be simple (i.e., a single +-- action) or complex (i.e., multiple actions that are performed +-- in "parallel"). +-- + +qosActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosActionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "Contains the current set of configured actions. The actions + are associated with IP, IEEE 802 and other ACLs and + interfaces during operation." + + ::= { qosAction 1 } + +qosActionEntry OBJECT-TYPE + SYNTAX QosActionEntry + STATUS current + DESCRIPTION + "General action definitions. Each entry specifies an instance + of the qosAction class which describes (potentially) + + several distinct action attributes. Each action is taken + individually regarding the data in question. Several actions + can be taken for a single frame. + + An instance of this class can not be deleted while it is being + referenced in a target instance in another class. This + class may be extended with actions that apply to specific QoS + policies (e.g., IP, IEEE 802, security) using augmentation." + + PIB-INDEX { qosActionId } + ::= { qosActionTable 1 } + +QosActionEntry ::= SEQUENCE { + qosActionId InstanceId, + qosActionDrop TruthValue, + qosActionUpdateDSCP Integer32, + qosActionMeter InstanceId +} + +qosActionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the QoS Action class. Class instances + may not be contiguous. Actions are associated with + Target instances in other classes (e.g., the QoS + Target class) using this attribute." + + ::= { qosActionEntry 1 } + +qosActionDrop OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "This action attribute, when specified, will cause the + frame being evaluated to be dropped if the value is + 'true(1)'. A value of 'false(2)' indicates that this + action will not be initiated (i.e., the frame will not + be dropped) based on this attribute. + + Prior to discarding a packet, other actions that have + been specified should be performed if they make protocol + sense. For example, requests for traffic mirroring (if + such an action is supported by a device) should be + + honored. However, updating protocol header values will + typically not be necessary." + + ::= { qosActionEntry 2 } + +qosActionUpdateDSCP OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "This action component, when specified, will cause the + value contained in the Differentiated Services (DS) + field of an associated IP datagram to be updated with + the value of this object. + + A value of -1 indicates that this action component has not + been set to an appropriate value and should not be used for + action initiation. The DSCP should remain unchanged." + + ::= { qosActionEntry 3 } + +qosActionMeter OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This action component, when specified, will identify + another level of metering that should be applied to + the given flow. This action is only taken if it is + not in conflict with other specified actions, i.e., + qosActionDrop. + + A value of 0 indicates that an additional metering + component has not been specified. No additional metering + is thus required." + + ::= { qosActionEntry 4 } + +-- +-- The QoS Target Table +-- +-- The QoS Target Table supports the association of ACLs, +-- interfaces and actions. It allows ACL class instances, as +-- defined in various ACL Defintion classes, to be associated +-- with specific interfaces/flow direction (based on interface +-- role combination and traffic direction) and actions to be + +-- performed based on traffic classification. Furthermore, it +-- allows heterogeneous ACL Definition class instances (e.g., +-- IP, IEEE 802, security) to be applied to the same interface +-- group in a prescribed order of precedence. +-- + +qosTargetTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosTargetEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that applies a set of ACLs to interfaces specifying, + for each interface, the precedence order of the ACL with + respect to other ACLs applied to the same interface and, for + each ACL, the action to take for a packet that matches a + permit ACE in that ACL. Interfaces are specified abstractly + in terms of interface roles. + + This class may contain ACLs that specify different types + of traffic classification (e.g., IP ACLs and IEEE 802 ACLs + defined in their respective definition tables). An ACL is + identified by its class and instance within that class. An + ACL association is formed when ACLs apply to the same + interfaces, as determined by the specified interface role + and direction. ACL evaluation precedence within an + association is determined by the precedence attribute." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qosAction 2 } + +qosTargetEntry OBJECT-TYPE + SYNTAX QosTargetEntry + STATUS current + DESCRIPTION + "An instance of the qosTarget class. Instance creation + may be prohibited based on the status of certain class + attributes which must exist prior to class instantiation." + + PIB-INDEX { qosTargetId } + ::= { qosTargetTable 1 } + +QosTargetEntry ::= SEQUENCE { + + qosTargetId InstanceId, + qosTargetAclId InstanceId, + qosTargetAclType OBJECT IDENTIFIER, + qosTargetInterfaceRoles RoleCombination, + qosTargetInterfaceDirection INTEGER, + qosTargetOrder Unsigned32, + qosTargetMeter InstanceId +} + +qosTargetId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the QoS Target class." + + ::= { qosTargetEntry 1 } + +qosTargetAclId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the ACL that is associated + with this target. It identifies (potentially many) ACL + class instances in a specific ACL Definition table + where ACLs, and their associated ACEs, are defined. + For example, instances in the qosIpAclDefinitionTable + are identified by setting the value of this object + equal to the qosIpAclDefinitionAclId of the instances + being targeted. This value, together with the value of + the corresponding qosTargetAclType attribute, + uniquely identifies one or more instances of a specific + ACL Definition class. + + Attempting to specify an unknown ACL class instance will + result in an appropriate error indication being returned + to the entity that is attempting to install the conflicting + entry. For example, a 'priUnknown(2)' error indication is + returned to the policy server in this situation." + + ::= { qosTargetEntry 2 } + +qosTargetAclType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + + DESCRIPTION + "The ACL Definition class that is being referenced by + this instance of the ACL Target class. This policy + class identifier, together with the corresponding + qosTargetAclId attribute, uniquely identifies + instances of a specific ACL Definition class. + + The object identifier value of this attribute must + exist in the policyPrcSupportTable." + + ::= { qosTargetEntry 3 } + +qosTargetInterfaceRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this ACL applies specified + in terms of a set of roles. The role combination + specified by this attribute must exist in the + qosInterfaceTypeTable prior to being association + with an instance of this class." + + ::= { qosTargetEntry 4 } + +qosTargetInterfaceDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2) + } + STATUS current + DESCRIPTION + "The direction of packet flow at the interface in + question to which this ACL applies." + + ::= { qosTargetEntry 5 } + +qosTargetOrder OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An integer that determines the precedence order of + this ACL in the list of ACLs applied to interfaces of + the specified role combination. An ACL with a given + precedence order is positioned in the list before one + with a higher-valued precedence order. + + As an example, consider the following ACL Target association: + + Index IfRoleCombo IfDirection AclId AclType Order + 14 'eth1000+L2+L3' 'in' 8 '802' 1 + 15 'eth1000+L2+L3' 'in' 3 '802' 2 + 16 'eth1000+L2+L3' 'in' 12 'IP' 3 + 17 'eth1000+L2+L3' 'in' 6 'IP' 4 + 18 'eth1000+L2+L3' 'in' 21 'IP' 5 + + Five distinct ACL specifications, 3 from an IP ACL + Definition class and 2 from an IEEE 802 ACL Definition class, + form an Acl Target association (e.g., based on the specified + interface role combination and direction attributes) with a + prescribed order of evaluation. The AclType and AclId + attributes identify the ACL Definition instances in their + respective classes. + + Precedence values within an association must be unique + otherwise instance installation will be prohibited and an + error value will be returned." + + ::= { qosTargetEntry 6 } + +qosTargetMeter OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute identifies the meter that is associated + with this QoS Target instance. Meters are defined + in the qosMeterTable. The corresponding instance in + the qosMeter class (i.e., the class instance where + the qosMeterId is equal to the value of this object) + must exist prior to being associated with a Target + entry." + + ::= { qosTargetEntry 7 } + +-- +-- The IP Classification and Policing Group +-- + +qosIpQos OBJECT IDENTIFIER ::= { qosPolicyIpPibClasses 1 } + +-- The IP ACE Table + +qosIpAceTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIpAceEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "ACE definitions. A packet has to match all fields in an + ACE. Wildcards may be specified for those fields that are + not relevant." + + ::= { qosIpQos 1 } + +qosIpAceEntry OBJECT-TYPE + SYNTAX QosIpAceEntry + STATUS current + DESCRIPTION + "An instance of the qosIpAce class." + + PIB-INDEX { qosIpAceId } + ::= { qosIpAceTable 1 } + +QosIpAceEntry ::= SEQUENCE { + qosIpAceId InstanceId, + qosIpAceDstAddr InetAddress, + qosIpAceDstAddrMask InetAddress, + qosIpAceSrcAddr InetAddress, + qosIpAceSrcAddrMask InetAddress, + qosIpAceDscp Integer32, + qosIpAceProtocol INTEGER, + qosIpAceDstL4PortMin INTEGER, + qosIpAceDstL4PortMax INTEGER, + qosIpAceSrcL4PortMin INTEGER, + qosIpAceSrcL4PortMax INTEGER, + qosIpAcePermit TruthValue +} + +qosIpAceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this ACE among all the + ACEs." + + ::= { qosIpAceEntry 1 } + +qosIpAceDstAddr OBJECT-TYPE + + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's destination IP + address." + + ::= { qosIpAceEntry 2 } + +qosIpAceDstAddrMask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "A mask for the matching of the destination IP address. + A zero bit in the mask means that the corresponding bit in + the address always matches." + + ::= { qosIpAceEntry 3 } + +qosIpAceSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's source IP + address." + + ::= { qosIpAceEntry 4 } + +qosIpAceSrcAddrMask OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "A mask for the matching of the source IP address." + + ::= { qosIpAceEntry 5 } + +qosIpAceDscp OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The value that the DSCP in the packet can have and + match this ACE. A value of -1 indicates that a specific + DSCP value has not been defined and thus all DSCP values + are considered a match." + + ::= { qosIpAceEntry 6 } + +qosIpAceProtocol OBJECT-TYPE + SYNTAX INTEGER (0..255) + STATUS current + DESCRIPTION + "The IP protocol to match against the packet's protocol. + A value of zero means match all." + + ::= { qosIpAceEntry 7 } + +qosIpAceDstL4PortMin OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have and match this ACE." + + ::= { qosIpAceEntry 8 } + +qosIpAceDstL4PortMax OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have and match this ACE. This value must be + equal to or greater that the value specified for this ACE in + qosIpAceDstL4PortMin." + + ::= { qosIpAceEntry 9 } + +qosIpAceSrcL4PortMin OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have and match this ACE." + + ::= { qosIpAceEntry 10 } + +qosIpAceSrcL4PortMax OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 source port + number can have and match this ACE. This value must be equal + to or greater that the value specified for this ACE in + + qosIpAceSrcL4PortMin." + + ::= { qosIpAceEntry 11 } + +qosIpAcePermit OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If the packet matches this ACE and the value of this + attribute is true, then the matching process terminates + and the QoS associated with this ACE (indirectly through + the ACL) is applied to the packet. If the value of this + attribute is false, then no more ACEs in this ACL are + compared to this packet and matching continues with the + first ACE of the next ACL." + + ::= { qosIpAceEntry 12 } + +-- +-- The IP ACL Definition Table +-- + +qosIpAclDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIpAclDefinitionEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "A class that defines a set of ACLs each being an ordered list + of ACEs. Each instance of this class identifies one ACE of + an ACL and the precedence order of that ACE with respect to + other ACEs in the same ACL." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qosIpQos 2 } + +qosIpAclDefinitionEntry OBJECT-TYPE + SYNTAX QosIpAclDefinitionEntry + STATUS current + DESCRIPTION + "An instance of the qosIpAclDefinition class." + + PIB-INDEX { qosIpAclDefinitionId } + + ::= { qosIpAclDefinitionTable 1 } + +QosIpAclDefinitionEntry ::= SEQUENCE { + qosIpAclDefinitionId InstanceId, + qosIpAclDefinitionAclId InstanceId, + qosIpAclDefinitionAceId InstanceId, + qosIpAclDefinitionAceOrder Unsigned32 +} + +qosIpAclDefinitionId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "Unique index of this policy rule instance." + + ::= { qosIpAclDefinitionEntry 1 } + +qosIpAclDefinitionAclId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An ID for this ACL. There will be one instance of + the class qosIpAclDefinition with this ID for each ACE in + the ACL per role combination." + + ::= { qosIpAclDefinitionEntry 2 } + +qosIpAclDefinitionAceId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This attribute specifies the ACE in the qosIpAceTable that + is in the ACL specified by qosIpAclDefinitionAclId at the + position specified by qosIpAceOrder. + + Attempting to specify an unknown class instance will result + in an appropriate error indication being returned to the + entity that is attempting to install the conflicting entry. + For example, a 'priUnknown(2)' error indication is returned + to the policy server in this situation." + + ::= { qosIpAclDefinitionEntry 3 } + +qosIpAclDefinitionAceOrder OBJECT-TYPE + SYNTAX Unsigned32 + + STATUS current + DESCRIPTION + "The precedence order of this ACE. The precedence order + determines the position of this ACE in the ACL. An ACE with + a given precedence order is positioned in the access control + list before one with a higher-valued precedence order. + + Precedence values within a group must be unique otherwise + instance installation will be prohibited and an error + value will be returned." + + ::= { qosIpAclDefinitionEntry 4 } + +END diff --git a/pibs/tubs/QOS-POLICY-IP-PIB-orig b/pibs/tubs/QOS-POLICY-IP-PIB-orig new file mode 100644 index 0000000..313f26f --- /dev/null +++ b/pibs/tubs/QOS-POLICY-IP-PIB-orig @@ -0,0 +1,1335 @@ +QOS-POLICY-IP-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, IpAddress, Integer32, + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TruthValue, TEXTUAL-CONVENTION + FROM SNMPv2-TC + RoleCombination, PolicyInstanceId + FROM POLICY-FRAMEWORK-PIB; + +qosPolicyIpPib MODULE-IDENTITY + LAST-UPDATED "9906241800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO " + Michael Fine + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 USA + Phone: +1 408 527 8218 + Email: mfine@cisco.com + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive, + San Jose, CA 95134-1706 USA + Phone: +1 408 526 5260 + Email: kzm@cisco.com + + John Seligson + Nortel Networks, Inc. + 4401 Great America Parkway + Santa Clara, CA 95054 USA + Phone: +1 408 495 2992 + Email: jseligso@nortelnetworks.com" + DESCRIPTION + "The PIB module containing an initial set of policy + rule classes that describe the quality of service + (QoS) policies. It includes general classes that may + be extended by other PIB specifications as well as + an initial set of PIB classes related to IP processing." + + ::= { tbd } + +qosPolicyGenPibClasses OBJECT IDENTIFIER ::= { qosPolicyIpPib 1 } +qosPolicyIpPibClasses OBJECT IDENTIFIER ::= { qosPolicyIpPib 2 } + +-- +-- Textual Conventions +-- + +-- +-- Diffserv Codepoint +-- + +Dscp ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that is in the range of the diffserv codepoint + values." + + SYNTAX INTEGER (0..63) + +-- +-- Interface types +-- + +QosInterfaceQueueCount ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An integer that describes the number of queues an interface + supports. It is limited to the number of DSCP values." + + SYNTAX INTEGER (1..64) + +-- +-- QoS Interface Group +-- +-- +-- This group specifies the configuration of the various interface +-- types including the setting of queueing parameters and the +-- mapping of DSCPs and 802.1 CoS to queues. +-- + +qosIfParameters OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 1 } + +-- +-- Interface Type Table + +-- + +qosInterfaceTypeTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosInterfaceTypeEntry + POLICY-ACCESS notify + STATUS current + DESCRIPTION + "Interface type definitions. This class describes the types + of interfaces that exist on the device. An interface type + is denoted by its designated role identifier as well as + by the queue set and queue capabilities it supports." + + ::= { qosIfParameters 1 } + +qosInterfaceTypeEntry OBJECT-TYPE + SYNTAX QosInterfaceTypeEntry + STATUS current + DESCRIPTION + "An instance of this class describes the characteristics + of a type of an interface. Interface type characteristics + include a role combination identifier, a queue set + identifier and a queue capabilities attribute. An + instance is required for each different unique role + combination identifier which represents the different + interface types that are operational in the device at + any given time. The PEP does not report which specific + interfaces have which characteristics." + + INDEX { qosInterfaceTypeId } + ::= { qosInterfaceTypeTable 1 } + +QosInterfaceTypeEntry ::= SEQUENCE { + qosInterfaceTypeId PolicyInstanceId, + qosInterfaceTypeRoles RoleCombination, + qosInterfaceTypeQueueSet PolicyInstanceId, + qosInterfaceTypeCapabilities BITS +} + +qosInterfaceTypeId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies a + instance of the qosInterfaceType class. Class instances + may not be contiguous." + + ::= { qosInterfaceTypeEntry 1 } + +qosInterfaceTypeRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination that is used to identify interfaces + with the characteristics specified by the attributes + of this class instance. Interface role combination + identifiers are used within a number of classes to + logically identify a physical set of interfaces to which + policy rules and actions are applied. Role combination + identifiers must exist in this table prior to being + referenced in other class instances." + + ::= { qosInterfaceTypeEntry 2 } + +qosInterfaceTypeQueueSet OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "The index of the queue set that is associated with + interfaces that are identified with the role combination + identifier that is associated with this class instance." + + ::= { qosInterfaceTypeEntry 3 } + +qosInterfaceTypeCapabilities OBJECT-TYPE + SYNTAX BITS { + other(0), + + -- Classification support + inputIpClassification(1), + outputIpClassification(2), + input802Classification(3), + output802Classification(4), + + -- Queuing discipline support + singleQueuingDiscipline(5), + hybridQueuingDiscipline(6) + } + STATUS current + DESCRIPTION + "An enumeration of interface capabilities. Used by the + PDP or network manager to select which policies and + + configuration it should push to the PEP." + + ::= { qosInterfaceTypeEntry 4 } + +-- +-- Interface Queue Table +-- +-- The Interface Queue Table enumerates the individual queues that +-- comprise a given queue set. Information specific to each queue +-- is exported by this table. +-- + +qosIfQueueTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIfQueueEntry + POLICY-ACCESS notify + STATUS current + DESCRIPTION + "Contains information about the individual queues that + comprise a queue set implemented on the device." + + ::= { qosIfParameters 2 } + +qosIfQueueEntry OBJECT-TYPE + SYNTAX QosIfQueueEntry + STATUS current + DESCRIPTION + "A conceptual row in the qosIfQueueTable. + + Each row identifies a specific queue within a given queue + set and contains detailed information about the queue. Queues + are associated with a given set through this table and + a queue set is associated with an interface set through + the qosInterfaceTypeTable." + + INDEX { qosIfQueueId } + ::= { qosIfQueueTable 1 } + +QosIfQueueEntry ::= SEQUENCE { + qosIfQueueId PolicyInstanceId, + qosIfQueueSetId INTEGER, + qosIfQueueIndex QosInterfaceQueueCount, + qosIfQueueGenDiscipline INTEGER, + qosIfQueueExtDiscipline OBJECT IDENTIFIER, + qosIfQueueDrainSize Unsigned32, + qosIfQueueAbsBandwidth Unsigned32, + + qosIfQueueBandwidthAllocation INTEGER, + qosIfQueueServiceOrder QosInterfaceQueueCount, + qosIfQueueSize Unsigned32 +} + +qosIfQueueId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "The index that uniquely identifies this row in the table, + i.e., this PRI." + + ::= { qosIfQueueEntry 1 } + +qosIfQueueSetId OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + "An index that uniquely identifies a specific queue set. The + queue set that is identified with this value is associated + with an interface set through the qosInterfaceTypeQueueSet + object in the qosInterfaceTypeTable. The individual queues + that are members of this set all have the same value for + this attribute (i.e., they have the same set ID)." + + ::= { qosIfQueueEntry 2 } + +qosIfQueueIndex OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "An arbitrary index that uniquely identifies a specific + queue within a set of queues that is identified by the + qosIfQueueSetId value." + + ::= { qosIfQueueEntry 3 } + +qosIfQueueGenDiscipline OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- Use qosIfQueueExtDiscipline + fifo(2), -- First In First Out queuing + pq(3), -- Priority Queuing + fq(4), -- Fair Queuing + wfq(5) -- Weighted Fair Queuing + } + + STATUS current + DESCRIPTION + "This object identifies the queuing discipline that is + associated with the specified queue. Several general + purpose and well-known queuing disciplines are supported + by this attribute. Queuing disciplines that differ from + those that are supported by this object are specified + by setting this attribute to other(1) and providing + the object identifier that represents the different + queuing paradigm in the qosIfQueueExtDiscipline object. + + A value of fifo(2) indicates that the queue is serviced + on a first-in-first-out (FIFO) basis. This discipline is + generally employed when only a single queue is available + for a given interface. + + A value of pq(3) indicates that the queue is serviced + using a priority queuing discipline. This technique is + used when several queues are available for a given + interface. Each queue is assigned a priority and queues + are serviced in order of priority. Higher priority queues + are completely drained before lower priority queues are + serviced. + + A value of fq(4) indicates that the queue is serviced + using a fair queuing discipline. This technique is used + when several queues are available for a given interface. + Each queue is treated equally and is serviced in a + round-robin fashion. + + A value of wfq(5) indicates that the queue is serviced + using a weighted fair queuing discipline. This technique is + used when several queues are available for a given interface. + Each queue is serviced based on queue weights which determine + the scheduling and frequency of queue servicing. Queues that + are assigned a greater weight are implicitly provided with + more bandwidth. + + Note that the processing disciplines for all of the queues + in a given set must be considered when trying to establish + a processing profile for a given interface." + + ::= { qosIfQueueEntry 4 } + +qosIfQueueExtDiscipline OBJECT-TYPE + + SYNTAX OBJECT IDENTIFIER + STATUS current + DESCRIPTION + "This object identifies the queuing discipline that is + associated with the specified queue. This attribute + provides a means through which additional queuing mechanisms + can be identified should the general queuing disciplines + be inadequate for a given device. As such. this attribute is + consulted only when the value of the qosIfQueueGenDiscipline + object is other(1). It contains an object identifier that + uniquely identifies a queuing paradigm. + + Note that the processing disciplines for all of the queues + in a given set must be considered when trying to establish + a processing profile for a given interface." + + ::= { qosIfQueueEntry 5 } + +qosIfQueueDrainSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum number of bytes that may be drained from the + queue in one cycle. The percentage of the interface + bandwidth allocated to this queue can be calculated from + this attribute and the sum of the drain sizes of all the + queues in a specific queue cluster in a queue set. + + This attribute represents the relative bandwidth that is + available to a given queue with respect to other queues with + which it is associated. The absolute bandwidth that is + available to a given queue is specified by the attribute + qosIfQueueAbsBandwidth. Which of these two applies is + specified by the attribute qosIfQueueBandwidthAllocation." + + ::= { qosIfQueueEntry 6 } + +qosIfQueueAbsBandwidth OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum interface bandwidth that is available for + consumption when servicing this queue. This bandwidth is + specified in terms of kilobits per second. + + This attribute represents the absolute bandwidth that is + available to a given queue. The relative bandwidth that is + available to a given queue, with respect to other queues with + which it is associated, is specified by the attribute + qosIfQueueDrainSize. Which of these two applies is specified + by the attribute qosIfQueueBandwidthAllocation." + + ::= { qosIfQueueEntry 7 } + +qosIfQueueBandwidthAllocation OBJECT-TYPE + SYNTAX INTEGER { + absolute(1), --use qosIfQueueAbsBandwidth + relative(2) --use qosIfQueueDrainSize + } + STATUS current + DESCRIPTION + "This attribute specifies whether to configure the queue for + an absolute bandwidth limit or one that is relative to other + queues of the interface. i.e., whether to configure the queue + using qosIfQueueAbsBandwidth or qosIfQueueDrainSize." + + ::= { qosIfQueueEntry 8 } + +qosIfQueueServiceOrder OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "This object is used to provide an additional level of + priority that is required for certain queuing disciplines + and when the different queues that comprise a queue set + are serviced using a mix of queuing disciplines. This + object can be used to specify, for example, the order in + which queues will be serviced when priority queuing is + used. It also supports the ability to describe the + servicing hierarchy when a hybrid queuing scheme, such + as priority queuing coupled with weighted fair queuing, + is used. + + Queue service priority is assigned such that a lower + service order value indicates a higher priority. For + example, a priority queue with a value of 1 will be + serviced (i.e., drained) before another priority queue + with a service order value of 2. + + Note that multiple queues that are logically associated, + + based on the queuing discipline that is being employed, + will be assigned the same service order value. Under + this scenario, other parameters that are related to the + queuing discipline determine the order of queue servicing + (e.g., queue drain size is used for 'wfq'). + + For example, an interface that is associated with a queue + set supporting two priority queues and three queues that + are serviced using WFQ would be modeled as follows: + + Q Index Q Discipline Q Drain Size Q Service Order + 22 pq(1) - 1 + 23 pq(1) - 2 + 24 wfq(3) 500 3 + 25 wfq(3) 350 3 + 26 wfq(3) 150 3 + + The queue set presented in this example would service + all queued traffic in queue 22 first, followed by all of + the queued traffic in queue 23. Next the queued traffic + in queues 24 through 26 would be serviced in a round + robin fashion with queue 24 receiving 50% of the available + bandwidth, queue 25 receiving 35% of the available + bandwidth and queue 26 receiving 15% of the available + bandwidth. This example is presented for expository + purposes and has been simplified accordingly. + + Note that, in this example, queues 24, 25 and 26 form a + queue cluster. Members of a queue cluster are all assigned + the same qosIfQueueServiceOrder as there are tightly + coupled. The qosIfQueueDrainSize attribute is used to + determine the additional processing characteristics of + the individual queues in a cluster." + + ::= { qosIfQueueEntry 9 } + +qosIfQueueSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The size of the queue in bytes. Some devices set queue size + in terms of packets. These devices must calculate the queue + size in packets by assuming an average packet size suitable + for the particular interface. + + Some devices have a fixed size buffer to be shared among all + queues. These devices must allocate a fraction of the + total buffer space to this queue calculated as the the ratio + of the queue size to the sum of the queue sizes for the + interface." + + ::= { qosIfQueueEntry 10 } + +-- +-- DSCP Assignment Table +-- +-- Supports the assignment of DSCPs to queues for each +-- interface type. +-- + +qosIfDscpAssignmentTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIfDscpAssignmentEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Supports the assignment of DSCP values to a queue for + each interface with a specific queue count. There will be + 64 instances of this class for each supported combination + of queue count and role combination." + + ::= { qosIfParameters 3 } + +qosIfDscpAssignmentEntry OBJECT-TYPE + SYNTAX QosIfDscpAssignmentEntry + STATUS current + DESCRIPTION + "An instance of the qosIfDscpAssignment class." + + INDEX { qosIfDscpAssignmentId } + ::= { qosIfDscpAssignmentTable 1 } + +QosIfDscpAssignmentEntry ::= SEQUENCE { + qosIfDscpAssignmentId PolicyInstanceId, + qosIfDscpAssignmentRoles RoleCombination, + qosIfDscpAssignmentDscp Dscp, + qosIfDscpAssignmentQueue QosInterfaceQueueCount +} + +qosIfDscpAssignmentId OBJECT-TYPE + SYNTAX PolicyInstanceId + + STATUS current + DESCRIPTION + "An index that is used to uniquely identify the + instance of the qosIfDscpAssignment class." + + ::= { qosIfDscpAssignmentEntry 1 } + +qosIfDscpAssignmentRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The role combination with which an interface must be + configured to support the DSCP-to-queue assignment + described by this instance. The specified role + combination must be defined in the qosInterfaceType + table prior to being referenced by this entry. + Otherwise a 'priAssociationUnknown(3)' error code + will be returned." + + ::= { qosIfDscpAssignmentEntry 2 } + +qosIfDscpAssignmentDscp OBJECT-TYPE + SYNTAX Dscp + STATUS current + DESCRIPTION + "The DSCP to which this class instance applies." + + ::= { qosIfDscpAssignmentEntry 3 } + +qosIfDscpAssignmentQueue OBJECT-TYPE + SYNTAX QosInterfaceQueueCount + STATUS current + DESCRIPTION + "The specific queue, within the queue set that is + associated with the interface set identified by the + qosIfDscpAssignmentRoles tag, on which traffic with + the specified DSCP, dictated by the + qosIfDscpAssignmentDscp value, is placed. Failure to + specify an appropriate queue results in a + 'priAssociationConflict(4)' error indication being + returned." + + ::= { qosIfDscpAssignmentEntry 4 } + +-- +-- QoS Meter Table +-- +-- The QoS Meter Table contains metering specifications that +-- can be used to provide an acceptable flow bandwidth +-- dimension to the Target table. +-- + +qosMeter OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 2 } + +qosMeterTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosMeterEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Contains the current set of configured meters. The + meters are associated with a classifier during + operation through the QoS Target Table." + + ::= { qosMeter 1 } + +qosMeterEntry OBJECT-TYPE + SYNTAX QosMeterEntry + STATUS current + DESCRIPTION + "General metering definitions. Each entry specifies + an instance of the qosMeter class which specifies + metering information in terms of traffic stream + bandwidth parameters. An entry can thus be used to + support traffic metering based on the specified + service level specification." + + INDEX { qosMeterId } + ::= { qosMeterTable 1 } + +QosMeterEntry ::= SEQUENCE { + qosMeterId PolicyInstanceId, + qosMeterDataSpecification INTEGER, + qosMeterCommittedRate Unsigned32, + qosMeterCommittedBurst Unsigned32, + qosMeterPeakRate Unsigned32, + qosMeterPeakBurst Unsigned32, + qosMeterHighConfAction PolicyInstanceId, + qosMeterMedConfAction PolicyInstanceId, + + qosMeterLowConfAction PolicyInstanceId +} + +qosMeterId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the qosMeter class. Meters are + associated with specific flows using this attribute + through the qosTargetMeter attribute in the QoS + Target class." + + ::= { qosMeterEntry 1 } + +qosMeterDataSpecification OBJECT-TYPE + SYNTAX INTEGER { + noMeterData(1), -- no metering reqd + committedData(2), -- committed rate only + peakData(3) -- committed and peak + } + STATUS current + DESCRIPTION + "Specifies the metering data, and thus the actions, that + are defined in a given entry. + + A value of noMeterData(1) indicates that no flow metering + is necessary. All flows associated with this meter entry + are considered to be at a high level of conformance. + + A value of committedData(2) indicates that committed rate + and committed burst information has been specified and will + be applied to associated flows. No peak rate and burst + information has been specified meaning that two levels + of conformance (high, medium) are supported. + + A value of peakData(3) indicates that peak rate and peak + burst information has been provided in addition to the + committed rate and committed burst information. All provided + information will be applied to associated flows meaning that + three levels of conformance (high, medium, low) are + supported." + + ::= { qosMeterEntry 2 } + +qosMeterCommittedRate OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the committed information rate + (CIR) against which associated traffic streams will be + metered. The CIR specifies the rate at which incoming + traffic can arrive to be considered to be at a high + level of conformance. Typically, this value specifies + the rate at which tokens are added to a token bucket + used to meter received flows. + + This object specifies a rate in bytes per second units + such that, for example, a value of 100 equates to a + committed information rate of 100 bytes per second. + + Committed rate (and burst) information must be present + if the qosMeterDataSpecification object has the value + committedData(2) or peakRate(3). This, in turn, requires + that at least both high and medium conformance actions + be specified." + + ::= { qosMeterEntry 3 } + +qosMeterCommittedBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the committed burst size + (CBS) against which associated traffic streams will + be metered. The CBS specifies the maximum burst size + that is supported for flows to be considered to be at + a high level of conformance. Typically, this value + represents the maximum number of tokens in a token + bucket. + + This object specifies flow data in bytes per second + units such that, for example, a value of 100 equates + to a committed information rate of 100 bytes per + second. + + Committed burst (and rate) information must be present + if the qosMeterDataSpecification object has the value + committedData(2) or peakRate(3). This, in turn, requires + that at least both high and medium conformance actions + + be specified." + + ::= { qosMeterEntry 4 } + +qosMeterPeakRate OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the peak information rate (PIR) + against which associated traffic streams will be + metered. The PIR specifies the rate at which incoming + traffic can arrive to be considered to be at a medium + level of conformance. Typically, this value specifies + the rate at which tokens are added to a token bucket + used to meter received flows. + + This object specifies a rate in bytes per second units + such that, for example, a value of 100 equates to a + committed information rate of 100 bytes per second. + + Peak rate (and burst) information must be present + if the qosMeterDataSpecification object has the value + peakData(3). This, in turn, requires that high, medium + and low conformance actions be specified." + + ::= { qosMeterEntry 5 } + +qosMeterPeakBurst OBJECT-TYPE + SYNTAX Unsigned32 (0..'ffffffff'h) + STATUS current + DESCRIPTION + "This object represents the peak burst size (PBS) + against which associated traffic streams will + be metered. The CBS specifies the maximum burst size + that is supported for flows to be considered to be at + a medium level of conformance. Typically, this value + represents the maximum number of tokens in a token + bucket. + + This object specifies flow data in bytes per second + units such that, for example, a value of 100 equates + to a committed information rate of 100 bytes per + second. + + Peak burst (and rate) information must be present + + if the qosMeterDataSpecification object has the value + peakData(3). This, in turn, requires that high, medium + and low conformance actions be specified." + + ::= { qosMeterEntry 6 } + +qosMeterHighConfAction OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a high + level of conformance with regard to metering criteria + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must always be provided." + + ::= { qosMeterEntry 7 } + +qosMeterMedConfAction OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a medium + level of conformance with regard to metering criteria + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must be provided if the value of the + associated qosMeterDataSpecification object is + committedRate(2) or peakRate(3)." + + ::= { qosMeterEntry 8 } + +qosMeterLowConfAction OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the action that is to be + initiated for flows that are determined to have a low + level of conformance with regard to metering criteria + + being applied to the flow. + + Actions must be defined in the qosActionTable prior to + being referenced by this attribute. A valid value for + this attribute must be provided if the value of the + associated qosMeterDataSpecification object is + peakRate(3)." + + ::= { qosMeterEntry 9 } + +-- +-- The Generic QoS ACL Action Group +-- + +qosAction OBJECT IDENTIFIER ::= { qosPolicyGenPibClasses 3 } + +-- +-- The QoS Action Table +-- +-- The QoS Action Table describes actions that are associated with +-- specific IP, IEEE 802 and other ACLs through the QoS Target +-- Table. An action specification may be simple (i.e., a single +-- action) or complex (i.e., multiple actions that are performed +-- in "parallel"). +-- + +qosActionTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosActionEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "Contains the current set of configured actions. The actions + are associated with IP, IEEE 802 and other ACLs and + interfaces during operation." + + ::= { qosAction 1 } + +qosActionEntry OBJECT-TYPE + SYNTAX QosActionEntry + STATUS current + DESCRIPTION + "General action definitions. Each entry specifies an instance + of the qosAction class which describes (potentially) + + several distinct action attributes. Each action is taken + individually regarding the data in question. Several actions + can be taken for a single frame. + + An instance of this class can not be deleted while it is being + referenced in a target instance in another class. This + class may be extended with actions that apply to specific QoS + policies (e.g., IP, IEEE 802, security) using augmentation." + + INDEX { qosActionId } + ::= { qosActionTable 1 } + +QosActionEntry ::= SEQUENCE { + qosActionId PolicyInstanceId, + qosActionDrop TruthValue, + qosActionUpdateDSCP Integer32, + qosActionMeter PolicyInstanceId +} + +qosActionId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the QoS Action class. Class instances + may not be contiguous. Actions are associated with + Target instances in other classes (e.g., the QoS + Target class) using this attribute." + + ::= { qosActionEntry 1 } + +qosActionDrop OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "This action attribute, when specified, will cause the + frame being evaluated to be dropped if the value is + 'true(1)'. A value of 'false(2)' indicates that this + action will not be initiated (i.e., the frame will not + be dropped) based on this attribute. + + Prior to discarding a packet, other actions that have + been specified should be performed if they make protocol + sense. For example, requests for traffic mirroring (if + such an action is supported by a device) should be + + honored. However, updating protocol header values will + typically not be necessary." + + ::= { qosActionEntry 2 } + +qosActionUpdateDSCP OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "This action component, when specified, will cause the + value contained in the Differentiated Services (DS) + field of an associated IP datagram to be updated with + the value of this object. + + A value of -1 indicates that this action component has not + been set to an appropriate value and should not be used for + action initiation. The DSCP should remain unchanged." + + ::= { qosActionEntry 3 } + +qosActionMeter OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This action component, when specified, will identify + another level of metering that should be applied to + the given flow. This action is only taken if it is + not in conflict with other specified actions, i.e., + qosActionDrop. + + A value of 0 indicates that an additional metering + component has not been specified. No additional metering + is thus required." + + ::= { qosActionEntry 4 } + +-- +-- The QoS Target Table +-- +-- The QoS Target Table supports the association of ACLs, +-- interfaces and actions. It allows ACL class instances, as +-- defined in various ACL Defintion classes, to be associated +-- with specific interfaces/flow direction (based on interface +-- role combination and traffic direction) and actions to be + +-- performed based on traffic classification. Furthermore, it +-- allows heterogeneous ACL Definition class instances (e.g., +-- IP, IEEE 802, security) to be applied to the same interface +-- group in a prescribed order of precedence. +-- + +qosTargetTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosTargetEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "A class that applies a set of ACLs to interfaces specifying, + for each interface, the precedence order of the ACL with + respect to other ACLs applied to the same interface and, for + each ACL, the action to take for a packet that matches a + permit ACE in that ACL. Interfaces are specified abstractly + in terms of interface roles. + + This class may contain ACLs that specify different types + of traffic classification (e.g., IP ACLs and IEEE 802 ACLs + defined in their respective definition tables). An ACL is + identified by its class and instance within that class. An + ACL association is formed when ACLs apply to the same + interfaces, as determined by the specified interface role + and direction. ACL evaluation precedence within an + association is determined by the precedence attribute." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qosAction 2 } + +qosTargetEntry OBJECT-TYPE + SYNTAX QosTargetEntry + STATUS current + DESCRIPTION + "An instance of the qosTarget class. Instance creation + may be prohibited based on the status of certain class + attributes which must exist prior to class instantiation." + + INDEX { qosTargetId } + ::= { qosTargetTable 1 } + +QosTargetEntry ::= SEQUENCE { + + qosTargetId PolicyInstanceId, + qosTargetAclId PolicyInstanceId, + qosTargetAclType OBJECT IDENTIFIER, + qosTargetInterfaceRoles RoleCombination, + qosTargetInterfaceDirection INTEGER, + qosTargetOrder Unsigned32, + qosTargetMeter PolicyInstanceId +} + +qosTargetId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + the instance of the QoS Target class." + + ::= { qosTargetEntry 1 } + +qosTargetAclId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the ACL that is associated + with this target. It identifies (potentially many) ACL + class instances in a specific ACL Definition table + where ACLs, and their associated ACEs, are defined. + For example, instances in the qosIpAclDefinitionTable + are identified by setting the value of this object + equal to the qosIpAclDefinitionAclId of the instances + being targeted. This value, together with the value of + the corresponding qosTargetAclType attribute, + uniquely identifies one or more instances of a specific + ACL Definition class. + + Attempting to specify an unknown ACL class instance will + result in an appropriate error indication being returned + to the entity that is attempting to install the conflicting + entry. For example, a 'priUnknown(2)' error indication is + returned to the policy server in this situation." + + ::= { qosTargetEntry 2 } + +qosTargetAclType OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + STATUS current + + DESCRIPTION + "The ACL Definition class that is being referenced by + this instance of the ACL Target class. This policy + class identifier, together with the corresponding + qosTargetAclId attribute, uniquely identifies + instances of a specific ACL Definition class. + + The object identifier value of this attribute must + exist in the policyPrcSupportTable." + + ::= { qosTargetEntry 3 } + +qosTargetInterfaceRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this ACL applies specified + in terms of a set of roles. The role combination + specified by this attribute must exist in the + qosInterfaceTypeTable prior to being association + with an instance of this class." + + ::= { qosTargetEntry 4 } + +qosTargetInterfaceDirection OBJECT-TYPE + SYNTAX INTEGER { + in(1), + out(2) + } + STATUS current + DESCRIPTION + "The direction of packet flow at the interface in + question to which this ACL applies." + + ::= { qosTargetEntry 5 } + +qosTargetOrder OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "An integer that determines the precedence order of + this ACL in the list of ACLs applied to interfaces of + the specified role combination. An ACL with a given + precedence order is positioned in the list before one + with a higher-valued precedence order. + + As an example, consider the following ACL Target association: + + Index IfRoleCombo IfDirection AclId AclType Order + 14 'eth1000+L2+L3' 'in' 8 '802' 1 + 15 'eth1000+L2+L3' 'in' 3 '802' 2 + 16 'eth1000+L2+L3' 'in' 12 'IP' 3 + 17 'eth1000+L2+L3' 'in' 6 'IP' 4 + 18 'eth1000+L2+L3' 'in' 21 'IP' 5 + + Five distinct ACL specifications, 3 from an IP ACL + Definition class and 2 from an IEEE 802 ACL Definition class, + form an Acl Target association (e.g., based on the specified + interface role combination and direction attributes) with a + prescribed order of evaluation. The AclType and AclId + attributes identify the ACL Definition instances in their + respective classes. + + Precedence values within an association must be unique + otherwise instance installation will be prohibited and an + error value will be returned." + + ::= { qosTargetEntry 6 } + +qosTargetMeter OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute identifies the meter that is associated + with this QoS Target instance. Meters are defined + in the qosMeterTable. The corresponding instance in + the qosMeter class (i.e., the class instance where + the qosMeterId is equal to the value of this object) + must exist prior to being associated with a Target + entry." + + ::= { qosTargetEntry 7 } + +-- +-- The IP Classification and Policing Group +-- + +qosIpQos OBJECT IDENTIFIER ::= { qosPolicyIpPibClasses 1 } + +-- The IP ACE Table + +qosIpAceTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIpAceEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "ACE definitions. A packet has to match all fields in an + ACE. Wildcards may be specified for those fields that are + not relevant." + + ::= { qosIpQos 1 } + +qosIpAceEntry OBJECT-TYPE + SYNTAX QosIpAceEntry + STATUS current + DESCRIPTION + "An instance of the qosIpAce class." + + INDEX { qosIpAceId } + ::= { qosIpAceTable 1 } + +QosIpAceEntry ::= SEQUENCE { + qosIpAceId PolicyInstanceId, + qosIpAceDstAddr IpAddress, + qosIpAceDstAddrMask IpAddress, + qosIpAceSrcAddr IpAddress, + qosIpAceSrcAddrMask IpAddress, + qosIpAceDscp Integer32, + qosIpAceProtocol INTEGER, + qosIpAceDstL4PortMin INTEGER, + qosIpAceDstL4PortMax INTEGER, + qosIpAceSrcL4PortMin INTEGER, + qosIpAceSrcL4PortMax INTEGER, + qosIpAcePermit TruthValue +} + +qosIpAceId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An integer index to uniquely identify this ACE among all the + ACEs." + + ::= { qosIpAceEntry 1 } + +qosIpAceDstAddr OBJECT-TYPE + + SYNTAX IpAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's destination IP + address." + + ::= { qosIpAceEntry 2 } + +qosIpAceDstAddrMask OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "A mask for the matching of the destination IP address. + A zero bit in the mask means that the corresponding bit in + the address always matches." + + ::= { qosIpAceEntry 3 } + +qosIpAceSrcAddr OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "The IP address to match against the packet's source IP + address." + + ::= { qosIpAceEntry 4 } + +qosIpAceSrcAddrMask OBJECT-TYPE + SYNTAX IpAddress + STATUS current + DESCRIPTION + "A mask for the matching of the source IP address." + + ::= { qosIpAceEntry 5 } + +qosIpAceDscp OBJECT-TYPE + SYNTAX Integer32 (-1 | 0..63) + STATUS current + DESCRIPTION + "The value that the DSCP in the packet can have and + match this ACE. A value of -1 indicates that a specific + DSCP value has not been defined and thus all DSCP values + are considered a match." + + ::= { qosIpAceEntry 6 } + +qosIpAceProtocol OBJECT-TYPE + SYNTAX INTEGER (0..255) + STATUS current + DESCRIPTION + "The IP protocol to match against the packet's protocol. + A value of zero means match all." + + ::= { qosIpAceEntry 7 } + +qosIpAceDstL4PortMin OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have and match this ACE." + + ::= { qosIpAceEntry 8 } + +qosIpAceDstL4PortMax OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have and match this ACE. This value must be + equal to or greater that the value specified for this ACE in + qosIpAceDstL4PortMin." + + ::= { qosIpAceEntry 9 } + +qosIpAceSrcL4PortMin OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have and match this ACE." + + ::= { qosIpAceEntry 10 } + +qosIpAceSrcL4PortMax OBJECT-TYPE + SYNTAX INTEGER (0..65535) + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 source port + number can have and match this ACE. This value must be equal + to or greater that the value specified for this ACE in + + qosIpAceSrcL4PortMin." + + ::= { qosIpAceEntry 11 } + +qosIpAcePermit OBJECT-TYPE + SYNTAX TruthValue + STATUS current + DESCRIPTION + "If the packet matches this ACE and the value of this + attribute is true, then the matching process terminates + and the QoS associated with this ACE (indirectly through + the ACL) is applied to the packet. If the value of this + attribute is false, then no more ACEs in this ACL are + compared to this packet and matching continues with the + first ACE of the next ACL." + + ::= { qosIpAceEntry 12 } + +-- +-- The IP ACL Definition Table +-- + +qosIpAclDefinitionTable OBJECT-TYPE + SYNTAX SEQUENCE OF QosIpAclDefinitionEntry + POLICY-ACCESS install + STATUS current + DESCRIPTION + "A class that defines a set of ACLs each being an ordered list + of ACEs. Each instance of this class identifies one ACE of + an ACL and the precedence order of that ACE with respect to + other ACEs in the same ACL." + + INSTALL-ERRORS { + priPrecedenceConflict(1) -- precedence conflict detected + } + + ::= { qosIpQos 2 } + +qosIpAclDefinitionEntry OBJECT-TYPE + SYNTAX QosIpAclDefinitionEntry + STATUS current + DESCRIPTION + "An instance of the qosIpAclDefinition class." + + INDEX { qosIpAclDefinitionId } + + ::= { qosIpAclDefinitionTable 1 } + +QosIpAclDefinitionEntry ::= SEQUENCE { + qosIpAclDefinitionId PolicyInstanceId, + qosIpAclDefinitionAclId PolicyInstanceId, + qosIpAclDefinitionAceId PolicyInstanceId, + qosIpAclDefinitionAceOrder Unsigned32 +} + +qosIpAclDefinitionId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "Unique index of this policy rule instance." + + ::= { qosIpAclDefinitionEntry 1 } + +qosIpAclDefinitionAclId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "An ID for this ACL. There will be one instance of + the class qosIpAclDefinition with this ID for each ACE in + the ACL per role combination." + + ::= { qosIpAclDefinitionEntry 2 } + +qosIpAclDefinitionAceId OBJECT-TYPE + SYNTAX PolicyInstanceId + STATUS current + DESCRIPTION + "This attribute specifies the ACE in the qosIpAceTable that + is in the ACL specified by qosIpAclDefinitionAclId at the + position specified by qosIpAceOrder. + + Attempting to specify an unknown class instance will result + in an appropriate error indication being returned to the + entity that is attempting to install the conflicting entry. + For example, a 'priUnknown(2)' error indication is returned + to the policy server in this situation." + + ::= { qosIpAclDefinitionEntry 3 } + +qosIpAclDefinitionAceOrder OBJECT-TYPE + SYNTAX Unsigned32 + + STATUS current + DESCRIPTION + "The precedence order of this ACE. The precedence order + determines the position of this ACE in the ACL. An ACE with + a given precedence order is positioned in the access control + list before one with a higher-valued precedence order. + + Precedence values within a group must be unique otherwise + instance installation will be prohibited and an error + value will be returned." + + ::= { qosIpAclDefinitionEntry 4 } + +END diff --git a/pibs/tubs/RSVP-PCC-PIB b/pibs/tubs/RSVP-PCC-PIB new file mode 100644 index 0000000..a43b241 --- /dev/null +++ b/pibs/tubs/RSVP-PCC-PIB @@ -0,0 +1,1179 @@ + RSVP-PCC-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + ibrpib + FROM TUBS-SMI + Unsigned32, Unsigned64, Integer32, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + InstanceId, ReferenceId, Prid, TagId + FROM COPS-PR-SPPI-TC + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + Role, RoleCombination + FROM POLICY-DEVICE-AUX-MIB + OBJECT-GROUP + FROM SNMPv2-CONF + ExtUTCTime + FROM SNMPv2-SMI + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB + MessageSize, BitRate, BurstSize + FROM INTEGRATED-SERVICES-MIB + frwkIpFilterTable, frwkIpFilterEntry + FROM FRAMEWORK-PIB; + +rsvpPccPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- war: RSVP-PCC(tbd) + LAST-UPDATED "200011131600Z" + ORGANIZATION "IETF-RAP-WG" + CONTACT-INFO " + Diana Rawlins + 901 International Parkway + Richardson, TX 75081 + Email: Diana.Rawlins@wcom.com + Phone +1 972 729 1044 + + Lei Yao + 22001 Loudoun County Parkway + Ashburn, VA 20147 + Email: Lei.yao@wcom.com + Phone: +1 703 886 1830 + + Richard McClain + 901 International Parkway + Richardson, TX 75081 + Email: Richard.McClain@wcom.com + Phone: +1 972 729 1094 + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Email: amol.kulkarni@intel.com + Phone: +1 503 712 1168 " + + DESCRIPTION + "A PIB module containing the policy control + classes that are required for support of + pushing policy control from the PDP to PEPs." + + ::= { ibrpib 12 } + + -- + -- The root OID for PRCs in the RSVP Policy Control Criteria PIB + -- + + rsvpPccBaseClasses + OBJECT IDENTIFIER ::= { rsvpPccPib 1 } + + -- + -- Textual Conventions + -- + + -- + -- Policy Control Capabilities Table + -- + + policyControlCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyControlCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + " The policy control capability in terms of the policy + control mode supported by the device." + + ::= { rsvpPccBaseClasses 1 } + + policyControlCapsEntry OBJECT-TYPE + SYNTAX PolicyControlCapsEntry + STATUS current + DESCRIPTION + " The instance defining the policy control mode." + + PIB-INDEX { policyControlCapsPccId } + + ::= { policyControlCapsTable 1 } + + + PolicyControlCapsEntry ::= SEQUENCE { + policyControlCapsPccId InstanceId, + policyControlCapsMode BITS + } + + policyControlCapsPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the PolicyControlCaps class." + + ::= { policyControlCapsEntry 1 } + + policyControlCapsMode OBJECT-TYPE + SYNTAX BITS { + confirmAll(0), + localIfAvailable(1), + localOnly(2) + } + STATUS current + DESCRIPTION + "The policy control criteria mode of the device. The + device may support any combination of modes. + The valid bit values are: + (0)Local Decision Policy which makes decision and + then outsources confirmation to the PDP + (1)local control and if no policy control criteria + is available locally, then outsource decision to PDP + (2)local policy control only." + + ::= { policyControlCapsEntry 2} + + -- + -- Policy Control Criteria Mode Table + -- + + pccModeTable OBJECT-TYPE + + SYNTAX SEQUENCE OF PccModeEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + " The policy control mode designated by the PDP." + + + ::= { rsvpPccBaseClasses 2 } + + pccModeEntry OBJECT-TYPE + SYNTAX PccModeEntry + STATUS current + DESCRIPTION + " The instance defining the PDP designated mode of + policy control." + + PIB-INDEX { pccModeId } + + ::= { pccModeTable 1 } + + + PccModeEntry ::= SEQUENCE { + pccModeId InstanceId, + pccModeMode INTEGER + } + + pccModeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the pccModeTable class." + + ::= { pccModeEntry 1 } + + pccModeMode OBJECT-TYPE + SYNTAX INTEGER { + confirmAll(1), + localIfAvailable(2), + localOnly(3) + } + STATUS current + DESCRIPTION + "The policy criteria control mode to be used by the + device. + The valid enumeration values are: + (1)Local Decision Policy which makes decision and + then outsources confirmation to the PDP + (2)local control and if no policy control criteria + is available locally, then outsource decision to PDP + (3)local policy control only." + + ::= { pccModeEntry 2} + + -- + -- Policy Control Criteria Linkage Table + -- + + pccLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccLinkEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + " This table defines the association between + the filter, frwkIpFilterTable instance and + the authorization policy instance" + + ::= { rsvpPccBaseClasses 3 } + + pccLinkEntry OBJECT-TYPE + SYNTAX PccLinkEntry + STATUS current + DESCRIPTION + " An entry links the filter and the authorization + policy." + + PIB-INDEX { pccLinkPccId } + UNIQUENESS { + pccLinkFilterRefId, + pccLinkPolicyPrid } + + ::= { pccLinkTable 1 } + + + PccLinkEntry::= SEQUENCE { + pccLinkPccId InstanceId, + pccLinkFilterRefId ReferenceId, + pccLinkPolicyPrid Prid + } + + pccLinkPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely + identifies an instance of the PccLink class. " + + ::= { pccLinkEntry 1 } + + + pccLinkFilterRefId OBJECT-TYPE + SYNTAX ReferenceId + PIB-REFERENCES { frwkIpFilterEntry } + STATUS current + DESCRIPTION + " References an instance of frwkIPFilterTable. " + ::= { pccLinkEntry 2 } + + + pccLinkPolicyPrid OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " Specifies the specific Prid of the PRC and instance of + authorization policy associated with this filter." + + ::= { pccLinkEntry 3 } + + -- + -- Traffic Specifier Policies Table + -- + + trafficSpecifierPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrafficSpecifierPolicyEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table defines the Traffic specifier policy control + characteristics that can be used to determine + SENDER_TSPEC, Controlled-Load or Guaranteed Services + policies." + + ::= { rsvpPccBaseClasses 4 } + + trafficSpecifierPolicyEntry OBJECT-TYPE + SYNTAX TrafficSpecifierPolicyEntry + STATUS current + DESCRIPTION + " An entry describes a specific limits for a T-SPEC + policy. " + + PIB-INDEX { trafficSpecifierPolicyId } + UNIQUENESS {trafficSpecifierPolicyIntService, + trafficSpecifierPolicyBucketRate, + trafficSpecifierPolicyBucketSize, + trafficSpecifierPolicyPeakRate, + trafficSpecifierPolicyMinPolicedUnit, + trafficSpecifierPolicyMaxPacketSize } + + ::= { trafficSpecifierPolicyTable 1 } + + + TrafficSpecifierPolicyEntry ::= SEQUENCE { + trafficSpecifierPolicyId InstanceId, + trafficSpecifierPolicyIntService Integer32, + trafficSpecifierPolicyBucketRate BitRate, + trafficSpecifierPolicyBucketSize Unsigned32, + trafficSpecifierPolicyPeakRate BurstSize, + trafficSpecifierPolicyMinPolicedUnit MessageSize, + trafficSpecifierPolicyMaxPacketSize MessageSize + + } + + + + trafficSpecifierPolicyId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the TrafficSpecifierPolicy class." + + ::= { trafficSpecifierPolicyEntry 1 } + + + trafficSpecifierPolicyIntService OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + " The traffic specifier policy is applied + to the flow of this Integrated Service type." + ::= { trafficSpecifierPolicyEntry 2 } + + trafficSpecifierPolicyBucketRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'r' bytes per second, the token bucket rate. " + + ::= { trafficSpecifierPolicyEntry 3 } + + + trafficSpecifierPolicyBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'b' bucket depth in bytes, the token bucket size. " + + ::= { trafficSpecifierPolicyEntry 4 } + + + trafficSpecifierPolicyPeakRate OBJECT-TYPE + SYNTAX BurstSize + STATUS current + DESCRIPTION + " 'p' peak traffic data rate in bytes. " + + ::= { trafficSpecifierPolicyEntry 5 } + + + trafficSpecifierPolicyMinPolicedUnit OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'm' minimum policed unit: size in bytes + of application data and all IP and greater + level (UDP, RTP, TCP, etc.) headers. " + + ::= { trafficSpecifierPolicyEntry 6 } + + + trafficSpecifierPolicyMaxPacketSize OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'M' maximum packet size: biggest packet + that conforms to traffic specification. " + + ::= { trafficSpecifierPolicyEntry 7 } + + -- + -- RSPEC Limits Table + -- + + rspecLimitsTable OBJECT-TYPE + SYNTAX SEQUENCE OF RspecLimitsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table defines the RSPEC policy control + characteristics that are applied to Integrated + Services Guaranteed Service." + + ::= { rsvpPccBaseClasses 5 } + + rspecLimitsEntry OBJECT-TYPE + SYNTAX RspecLimitsEntry + STATUS current + DESCRIPTION + " An entry that defines specific Rate and Slack + limits for a Guaranteed Service resource request " + + EXTENDS { trafficSpecifierPolicyEntry } + UNIQUENESS { rspecLimitsRate, + rspecLimitsSlackTerm } + + ::= { rspecLimitsTable 1 } + + + RspecLimitsEntry ::= SEQUENCE { + rspecLimitsId InstanceId, + rspecLimitsRate BitRate, + rspecLimitsSlackTerm Unsigned32 + } + + + rspecLimitsId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the rspecLimits class." + + ::= { rspecLimitsEntry 1 } + + rspecLimitsRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'R' - Rate. Must be greater than or equal to 'r', rate + for the flow " + + ::= { rspecLimitsEntry 2 } + + rspecLimitsSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'S' - Slack Term. Defines in microseconds the + difference between desired delay and the delay + attained with the reservation level of R" + + ::= { rspecLimitsEntry 3 } + + -- + -- Authentication Data Policy Element Table + -- + + authDataPolicyElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthDataPolicyElementEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table specifies policy control to identify and + authenticate the owner making resource request." + + ::= { rsvpPccBaseClasses 6 } + + authDataPolicyElementEntry OBJECT-TYPE + SYNTAX AuthDataPolicyElementEntry + STATUS current + DESCRIPTION + " An entry defines the specific authentication + identify used to grant permission for the + reservation request." + + PIB-INDEX { authDataPolicyElementPccId } + UNIQUENESS { + authDataPolicyElementPolicySetId, + authDataPolicyElementPolicyIdentity, + authDataPolicyElementPolicyAuthAttrType, + authDataPolicyElementPolicyAuthAttrSubType + } + + ::= { authDataPolicyElementTable 1 } + + + AuthDataPolicyElementEntry::= SEQUENCE { + authDataPolicyElementPccId InstanceId, + authDataPolicyElementPolicySetId TagId, + authDataPolicyElementPolicyIdentity INTEGER, + authDataPolicyElementPolicyAuthAttrType INTEGER, + authDataPolicyElementPolicyAuthAttrSubType INTEGER + } + + authDataPolicyElementPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the AuthDataPolicyElement class." + + ::= { authDataPolicyElementEntry 1 } + + + authDataPolicyElementPolicySetId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + " This associates a set of authentication attributes." + + ::= { authDataPolicyElementEntry 2 } + + + + authDataPolicyElementPolicyIdentity OBJECT-TYPE + SYNTAX INTEGER{ + authUser(1), + authApp(2) + } + STATUS current + DESCRIPTION + " Identifies the Policy Set Element via enumeration + values: + (2) AUTH_USER + (3) AUTH_APP " + + ::= { authDataPolicyElementEntry 3 } + + + authDataPolicyElementPolicyAuthAttrType OBJECT-TYPE + SYNTAX INTEGER { + policyLocaltor(1), + credential(2), + digitalSignature(3), + policyErrorObject(4) + } + STATUS current + DESCRIPTION + " Enumeration values: + (1) POLICY_LOCATOR (valid for both AUTH_USER and + AUTH_APP) + (2) CREDENTIAL (valid for both AUTH_USER and + AUTH_APP) + (3) DIGITAL_SIGNATURE + (4) POLICY_ERROR_OBJECT " + + ::= { authDataPolicyElementEntry 4 } + + authDataPolicyElementPolicyAuthAttrSubType OBJECT-TYPE + SYNTAX INTEGER { + noType(0), + asciiDN(1), + unicodeDN(2), + asciiDNEncrypt(3), + unicodeDNEncrypt(4), + asciiID(5), + unicodeID(6), + kerberorTKT(7), + x509Cert(8), + pgpCert(9), + noMoreInfo(10), + unsupportedCredType(11), + insufficientPrivs(12), + expiredCredential(13), + identityChanged(14) + } + STATUS current + DESCRIPTION + " For POLICY_LOCATOR valid enumeration values are: + (1) ASCII_DN (valid for both AUTH_USER and + AUTH_APP) + (2) UNICODE_DN (valid for both AUTH_USER and + AUTH_APP) + (3) ASCII_DN_ENCRYPT + (4) UNICODE_DN_ENCRYPT + + For CREDENTIAL valid enumeration values are: + (5) ASCII_ID (valid for both AUTH_USER and + AUTH_APP) + (6) UNICODE_ID (valid for both AUTH_USER and + AUTH_APP) + (7) KERBEROS_TKT + (8) X509_V3_CERT + (9) PGP_CERT + + For DIGITAL_SIGNATURE: + Sub-Type set to 0 + + For POLICY_ERROR_OBJECT valid enumeration values are: + (10) ERROR_NO_MORE_INFO + (11) UNSUPPORTED_CREDENTIAL_TYPE + (12) INSUFFICIENT_PRIVILEGES + (13) EXPIRED_CREDENTIAL + (14) IDENTITY_CHANGED " + + ::= { authDataPolicyElementEntry 5 } + + + -- + -- Priority Preemption Policy Element Table + -- + + priorityPreemptionPolicyElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF PriorityPreemptionPolicyElementEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This table defines policy control for priority + preemption." + + ::= { rsvpPccBaseClasses 7 } + + + priorityPreemptionPolicyElementEntry OBJECT-TYPE + SYNTAX PriorityPreemptionPolicyElementEntry + STATUS current + DESCRIPTION + " An entry defines the specific preemption priority to + admit the flow and the defending priority. " + + PIB-INDEX { priorityPreemptionPolicyElementPccId } + UNIQUENESS { + priorityPreemptionPolicyElementMergeStrategy, + priorityPreemptionPolicyElementPreemptionPriority, + priorityPreemptionPolicyElementDefendingPriority + } + + ::= { priorityPreemptionPolicyElementTable 1 } + + + PriorityPreemptionPolicyElementEntry ::= SEQUENCE { + priorityPreemptionPolicyElementPccId InstanceId, + priorityPreemptionPolicyElementMergeStrategy INTEGER, + priorityPreemptionPolicyElementPreemptionPriority INTEGER, + priorityPreemptionPolicyElementDefendingPriority INTEGER + } + + priorityPreemptionPolicyElementPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the PriorityPreemptionPolicyElement + class." + + ::= { priorityPreemptionPolicyElementEntry 1 } + + + priorityPreemptionPolicyElementMergeStrategy OBJECT-TYPE + SYNTAX INTEGER { + highestQOS(1), + highestPriority(2), + errorOnMerge(3) + } + STATUS current + DESCRIPTION + " Defines the merging strategy for the flow. The + Enum values are: + (1) take priority of highest QoS + (2) take highest priority + (3) force an error on heterogeneous merge" + + ::= { priorityPreemptionPolicyElementEntry 2 } + + + priorityPreemptionPolicyElementPreemptionPriority OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + " Defines the value of the new reservation that is + compared against the defending priorities of existing + flows. A higher value represents a higher priority." + + ::= { priorityPreemptionPolicyElementEntry 3 } + + + priorityPreemptionPolicyElementDefendingPriority OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + " The value defined for an existing flow to defend its + priority against a new reservation seeking admission. + The higher value represents higher priority." + + ::= { priorityPreemptionPolicyElementEntry 4 } + + -- + --Intsrv to Diffserv Interworking Function Table + -- + + pccIwfTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccIwfEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table defines the attributes used for the + interworking between the RSVP process in the + control plane and Differentiated Services in the + data plane." + + ::= {rsvpPccBaseClasses 8} + + pccIwfEntry OBJECT-TYPE + SYNTAX PccIwfEntry + STATUS current + DESCRIPTION + "Defines the attributes for Intsrv and Diffserv + interworking." + PIB-INDEX {pccIwfId} + + ::= {pccIwfTable 1} + + PccIwfEntry ::= SEQUENCE { + pccIwfId InstanceId, + pccIwfIntSrvClass Integer32, + pccIwfDSCP Integer32, + pccIwfOutOfProfile Integer32, + pccIwfRemarkvalue Integer32, + pccIwfScheduler Integer32 + } + + pccIwfId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This is the unique identifier of the iwfTable + entry." + ::= { pccIwfEntry 1} + + pccIwfIntSrvClass OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The value of the Intsrv Class associated with + the attributes of this specific interworking function + entry. It must have a corresponding bit set in + pccACPoolISClass." + ::= { pccIwfEntry 2} + + pccIwfDSCP OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The Value of the DSCP to assign the data stream + for the session with the IntSrv class type + matching the value of the pccIwfIntSrvClass. + Value range is 0 .. 63." + ::= { pccIwfEntry 3} + + pccIwfOutOfProfile OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This indicates the behavior when the data stream + is out of profile. This value overrides any other + configured profile such as that defined in the + MeterTableEntry. The value of 0 indicates that + this attribute is ignored for this entry. A value + of 1 indications the out of profile packet is + dropped. A value of 2 indicates the out of profile + packet DSCP is remarked with the value + pccIwfRemarkValue." + ::= {pccIwfEntry 4} + + pccIwfRemarkvalue OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This is the value of the DSCP to remark an out of + profile packet. This value is only used if the + pccIwfOutOfProfile has a value of 2." + ::= {pccIwfEntry 5} + + pccIwfScheduler OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This is the value that identifies the scheduler + to be used by the data streams of sessions with an + IntSrv class matching the value of the attribute + pccIwfIntSrClass." + ::= {pccIwfEntry 6} + + + -- + --Admission Control Virtual Pool Table + -- + + pccACVirPoolTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccACVirPoolEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table defines the virtual pool used by the RSVP + process during admission contro." + + ::= {rsvpPccBaseClasses 9} + + pccACVirPoolEntry OBJECT-TYPE + SYNTAX PccACVirPoolEntry + STATUS current + DESCRIPTION + "Defines the attributes for the Intsrv virtual pool." + PIB-INDEX {pccACVirPoolId} + + ::= {pccACVirPoolTable 1} + + PccACVirPoolEntry ::= SEQUENCE { + pccACVirPoolId InstanceId, + pccACVirPoolInterface SnmpAdminString, + pccACVirPoolDirection Integer32, + pccACVirPoolIntSrvClass BITS, + pccACVirPoolMaxAbsRate Unsigned32, + pccACVirPoolAcceptResv Integer32 + } + + pccACVirPoolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This is the unique identifier of the pccACVirPool + entry." + ::= { pccACVirPoolEntry 1} + + pccACVirPoolInterface OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The SNMP string identifies the logical interface + associated with the Admission Control Virtual + Pool entry." + ::= { pccACVirPoolEntry 2} + + pccACVirPoolDirection OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This attribute indicates the relationship of the + traffic stream to the interface. The traffic + stream is either inbound (1) or outbound (2). An + upstream virtual pool has an inbound Direction + and a downstream virtual pool has a Direction of + outbound." + ::= { pccACVirPoolEntry 3} + + pccACVirPoolIntSrvClass OBJECT-TYPE + SYNTAX BITS -- which ones !? + { dummy(0) } + STATUS current + DESCRIPTION + "The bit string indicates the IntSrv class or + classes that have resources allocated from this + virtual pool by admission control. + Value range is 0 .. 63." + ::= { pccACVirPoolEntry 4} + + pccACVirPoolMaxAbsRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This is the maximum absolute rate in kilobits + that this pool may allocate to the IntSrv + sessions defined by the + pccACVirtPoolIntSrvClass." + ::= {pccACVirPoolEntry 5} + + pccACVirPoolAcceptResv OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "This value indicates whether the RSVP admission + control is to accept RSVP RESV request for the + IntSrv flows belonging to the IntSrv classes + defined by pccACVirPoolIntSrvClass." + ::= {pccACVirPoolEntry 6} + + + -- + --Edge Point Identification Table + -- + + pccEdgeTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccEdgeEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table defines the attributes used to identify + the receiver domain. Admission control performs the + upstream resource check when the RSVP Session Object + matches one of the entries in this table." + + ::= {rsvpPccBaseClasses 10} + + pccEdgeEntry OBJECT-TYPE + SYNTAX PccEdgeEntry + STATUS current + DESCRIPTION + "Defines the attributes for identifying the + receiver domain edge that invokes upstream + Admission control in addition to downstream + Admission control." + PIB-INDEX {pccEdgeId} + + ::= {pccEdgeTable 1} + + PccEdgeEntry ::= SEQUENCE { + pccEdgeId InstanceId, + pccEdgeAddrType InetAddressType, + pccEdgeAddr InetAddress, + pccEdgeAddrMask Unsigned32 + } + + pccEdgeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This is the unique identifier of the pccEdgeTable + entry." + ::= { pccEdgeEntry 1} + + pccEdgeAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "This is the enumerated value specifying the type + of address (IPv4 or Ipv6) as defined in RFC 2851." + ::= { pccEdgeEntry 2} + + pccEdgeAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "When the value of this address matches the RSVP + Session Object Destination Address, it indicates + a that the session receiver is downstream and that + the upstream admission control should be performed." + ::= { pccEdgeEntry 3} + + pccEdgeAddrMask OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The length of the mask for matching th eaddress." + ::= { pccEdgeEntry 4} + + + -- + -- The Policy Control Criteria Session Statistics usage + -- + + pccSessionStatsUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccSessionStatsUsageEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class defines the session statistics. It contains + the Prid of the linkage instance associating the + selection criteria instance with the usage instance." + + ::= {rsvpPccBaseClasses 11} + + pccSessionStatsUsageEntry OBJECT-TYPE + SYNTAX PccSessionStatsUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {pccSessionStatsUsageId} + + + ::= {pccSessionStatsUsageTable 1} + + PccSessionStatsUsageEntry ::= SEQUENCE { + pccSessionStatsUsageId InstanceId, + pccSessionStatsUsageStart ExtUTCTime, + pccSessionStatsUsageEnd ExtUTCTime + } + + pccSessionStatsUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the pccSessionStatsUsage class." + + ::= { pccSessionStatsUsageEntry 1 } + + pccSessionStatsUsageStart OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The timestamp when the reservation was successfully + allocated." + + ::= { pccSessionStatsUsageEntry 2} + + pccSessionStatsUsageEnd OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The timestamp when the reservation was ended. This + could be due to reservation tear down, an error or + time out condition" + + ::= { pccSessionStatsUsageEntry 3} + + + -- The Policy Control Criteria Allocated Usage Table + -- + + pccAllocatedUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccAllocatedUsageEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "This class records the traffic specification allocated + to a session. It contains the Prid of the linkage + instance associating the selection criteria instance + with the usage instance." + + ::= {rsvpPccBaseClasses 12} + + pccAllocatedUsageEntry OBJECT-TYPE + SYNTAX PccAllocatedUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, record + and report." + PIB-INDEX {pccAllocatedUsageId} + + ::= { pccAllocatedUsageTable 1} + + PccAllocatedUsageEntry ::= SEQUENCE { + pccAllocatedUsageId InstanceId, + pccAllocatedIntsrvClass Integer32, + pccAllocatedUsageBucketRate BitRate, + pccAllocatedUsageBucketSize Unsigned32, + pccAllocatedUsagePeakRate BurstSize, + pccAllocatedUsageMinPolicedUnit MessageSize, + pccAllocatedUsageMaxPacketSize MessageSize, + pccAllocatedUsageLimitsRate BitRate, + pccAllocatedUsageSlackTerm Unsigned32 + } + + + pccAllocatedUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the PpcAllocatedUsage class." + + ::= { pccAllocatedUsageEntry 1 } + + pccAllocatedIntsrvClass OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The Intsrv Class associated with the session." + ::= { pccAllocatedUsageEntry 2 } + + pccAllocatedUsageBucketRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'r' bytes per second, the token bucket rate. " + + ::= { pccAllocatedUsageEntry 3 } + + + pccAllocatedUsageBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'b' bucket depth in bytes, the token bucket size. " + + ::= { pccAllocatedUsageEntry 4 } + + + pccAllocatedUsagePeakRate OBJECT-TYPE + SYNTAX BurstSize + STATUS current + DESCRIPTION + " 'p' peak traffic data rate in bytes. " + + ::= { pccAllocatedUsageEntry 5 } + + + pccAllocatedUsageMinPolicedUnit OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'm' minimum policed unit - size in bytes of + application data and all IP and greater level (UDP, + RTP, TCP, etc.) headers. " + + ::= { pccAllocatedUsageEntry 6 } + + + pccAllocatedUsageMaxPacketSize OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'M' maximum packet size - biggest packet that conforms + to traffic specification. " + ::= { pccAllocatedUsageEntry 7 } + + + + pccAllocatedUsageLimitsRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " Limit Rate. Must be greater than or equal to rate for + the flow " + + ::= { pccAllocatedUsageEntry 8 } + + + + pccAllocatedUsageSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'S' - Slack Term. Defines in microseconds the + difference between desired delay and the delay + attained with the reservation level of R" + + + + ::= { pccAllocatedUsageEntry 9 } + + -- + --Virtual Pool Usage Table + -- + + pccPoolUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccPoolUsageEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "This table tracks and reports the current total + of resources consumed by Intsrv flows for a + specific virtual pool." + + ::= {rsvpPccBaseClasses 13} + + pccPoolUsageEntry OBJECT-TYPE + SYNTAX PccPoolUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes for tracking the current + total of resources used by Intsrv flows for a + virtual pool." + PIB-INDEX {pccPoolUsageId} + + ::= {pccPoolUsageTable 1} + + PccPoolUsageEntry ::= SEQUENCE { + pccPoolUsageId InstanceId, + pccPoolUsagePoolId Prid, + pccPoolUsageAbsRateInUse Unsigned32, + pccPoolUsageAbsRateInUseThreshold Unsigned32 + } + + pccPoolUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "This is the unique identifier of the + pccPoolUsage Table entry." + ::= { pccPoolUsageEntry 1} + + pccPoolUsagePoolId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This is the prid of the pccACVirPoolTable entry + that is being tracked." + ::= { pccPoolUsageEntry 2} + + pccPoolUsageAbsRateInUse OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "This is the current total of resources used + by Intsrv flows for the virtual pool identified + by the pccPoolUsagePoolId." + ::= { pccPoolUsageEntry 3} + + pccPoolUsageAbsRateInUseThreshold OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " This value is associated with the + pccPoolUsageAbsRateInUse and defines the feedback + threshold for this usage that results in the + instance being reported to the PDP. This value is + only used if the linkage entry is set to threshold" + ::= { pccPoolUsageEntry 4 } + + END diff --git a/pibs/tubs/RSVP-PCC-PIB-orig b/pibs/tubs/RSVP-PCC-PIB-orig new file mode 100644 index 0000000..45553ef --- /dev/null +++ b/pibs/tubs/RSVP-PCC-PIB-orig @@ -0,0 +1,1167 @@ + RSVP-PCC-PIB PIB-DEFINITIONS ::= BEGIN + + IMPORTS + Unsigned32, Unsigned64, Integer32, MODULE-IDENTITY + FROM COPS-PR-SPPI + InstanceID, ReferenceID, Prid, TagID + FROM COPS-PR-SPPI-TC + InetAddress, InetAddressType + FROM SNMPv2-TC + Role, RoleCombination + FROM POLICY-DEVICE-AUX-MIB + OBJECT-GROUP + FROM SNMPv2-CONF + MessageSize, BitRate, BurstSize + FROM INTEGRATED-SERVICES-MIB + FrwkIpFilterTable + FROM FRAMEWORK-PIB; + +RsvpPccPib MODULE-IDENTITY SUBJECT-CATEGORY { RSVP-PCC(tbd) } + LAST-UPDATED "200011131600Z" + ORGANIZATION "IETF-RAP-WG" + CONTACT-INFO " + Diana Rawlins + 901 International Parkway + Richardson, TX 75081 + Email: Diana.Rawlins@wcom.com + Phone +1 972 729 1044 + + Lei Yao + 22001 Loudoun County Parkway + Ashburn, VA 20147 + Email: Lei.yao@wcom.com + Phone: +1 703 886 1830 + + Richard McClain + 901 International Parkway + Richardson, TX 75081 + Email: Richard.McClain@wcom.com + Phone: +1 972 729 1094 + + Amol Kulkarni + JF3-206 + 2111 NE 25th Ave + Hillsboro, Oregon 97124 + Email: amol.kulkarni@intel.com + Phone: +1 503 712 1168 " + + DESCRIPTION + "A PIB module containing the policy control + classes that are required for support of + pushing policy control from the PDP to PEPs." + + ::= { tbd } + + -- + -- The root OID for PRCs in the RSVP Policy Control Criteria PIB + -- + + rsvpPccBaseClasses + OBJECT IDENTIFIER ::= { RsvpPccPib 1 } + + -- + -- Textual Conventions + -- + + -- + -- Policy Control Capabilities Table + -- + + policyControlCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF PolicyControlCapsEntry + PIB-ACCESS notify, 3 + STATUS current + DESCRIPTION + " The policy control capability in terms of the policy + control mode supported by the device." + + ::= { rsvpPccBaseClasses 1 } + + policyControlCapsEntry OBJECT-TYPE + SYNTAX PolicyControlCapsEntry + STATUS current + DESCRIPTION + " The instance defining the policy control mode." + + PIB-INDEX { policyControlCapsPccId } + + ::= { policyControlCapsTable 1 } + + + PolicyControlCapsEntry ::= SEQUENCE { + policyControlCapsPccId InstanceId, + policyControlCapsMode BITS + } + + policyControlCapsPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the PolicyControlCaps class." + + ::= { policyControlCapsEntry 1 } + + policyControlCapsMode OBJECT-TYPE + SYNTAX BITS { + CONFIRM_ALL(0), + LOCAL_IF_AVAILABLE(1), + LOCAL_ONLY(2) + } + STATUS current + DESCRIPTION + "The policy control criteria mode of the device. The + device may support any combination of modes. + The valid bit values are: + (0)Local Decision Policy which makes decision and + then outsources confirmation to the PDP + (1)local control and if no policy control criteria + is available locally, then outsource decision to PDP + (2)local policy control only." + + ::= { policyControlCapsEntry 2} + + -- + -- Policy Control Criteria Mode Table + -- + + pccModeTable OBJECT-TYPE + + SYNTAX SEQUENCE OF PccModeEntry + PIB-ACCESS notify,3 + STATUS current + DESCRIPTION + " The policy control mode designated by the PDP." + + + ::= { rsvpPccBaseClasses 2 } + + pccModeEntry OBJECT-TYPE + SYNTAX PccModeEntry + STATUS current + DESCRIPTION + " The instance defining the PDP designated mode of + policy control." + + PIB-INDEX { pccModeId } + + ::= { pccModeTable 1 } + + + PccModeEntry ::= SEQUENCE { + pccModeId InstanceId, + pccModeMode INTEGER + } + + pccModeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the pccModeTable class." + + ::= { pccModeEntry 1 } + + pccModeMode OBJECT-TYPE + SYNTAX INTEGER { + CONFIRM_ALL(1), + LOCAL_IF_AVAILABLE(2), + LOCAL_ONLY(3) + } + STATUS current + DESCRIPTION + "The policy criteria control mode to be used by the + device. + The valid enumeration values are: + (1)Local Decision Policy which makes decision and + then outsources confirmation to the PDP + (2)local control and if no policy control criteria + is available locally, then outsource decision to PDP + (3)local policy control only." + + ::= { pccModeEntry 2} + + -- + -- Policy Control Criteria Linkage Table + -- + + pccLinkTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccLinkEntry + PIB-ACCESS install-notify, 4 + STATUS current + DESCRIPTION + " This table defines the association between + the filter, frwkIpFilterTable instance and + the authorization policy instance" + + ::= { rsvpPccBaseClasses 3 } + + pccLinkEntry OBJECT-TYPE + SYNTAX PccLinkEntry + STATUS current + DESCRIPTION + " An entry links the filter and the authorization + policy." + + PIB-INDEX { pccLinkPccId } + UNIQUENESS { + pccLinkFilterRefId, + pccLinkPolicyPrid } + + ::= { pccLinkTable 1 } + + + PccLinkEntry::= SEQUENCE { + pccLinkPccId InstanceId, + pccLinkFilterRefId ReferenceId, + pccLinkPolicyPrid Prid + } + + pccLinkPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + " An arbitrary integer index that uniquely + identifies an instance of the PccLink class. " + + ::= { pccLinkEntry 1 } + + + pccLinkFilterRefId OBJECT-TYPE + SYNTAX ReferenceId + STATUS current + DESCRIPTION + " References an instance of FrwkIPFilterTable. " + ::= { pccLinkEntry 2 } + + + pccLinkPolicy OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " Specifies the specific PRID of the PRC and instance of + authorization policy associated with this filter." + + ::= { pccLinkEntry 3 } + + -- + -- Traffic Specifier Policies Table + -- + + trafficSpecifierPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrafficSpecifierPolicyEntry + PIB-ACCESS install-notify, 7 + STATUS current + DESCRIPTION + "This table defines the Traffic specifier policy control + characteristics that can be used to determine + SENDER_TSPEC, Controlled-Load or Guaranteed Services + policies." + + ::= { rsvpPccBaseClasses 4 } + + trafficSpecifierPolicyEntry OBJECT-TYPE + SYNTAX TrafficSpecifierPolicyEntry + STATUS current + DESCRIPTION + " An entry describes a specific limits for a T-SPEC + policy. " + + PIB-INDEX { trafficSpecifierPolicyId } + UNIQUENESS {trafficSpecifierPolicyIntService, + trafficSpecifierPolicyBucketRate, + trafficSpecifierPolicyBucketSize, + trafficSpecifierPolicyPeakRate, + trafficSpecifierPolicyMinPolicedUnit, + trafficSpecifierPolicyMaxPacketSize } + + ::= { trafficSpecifierPoliciesTable 1 } + + + TrafficSpecifierPolicyEntry ::= SEQUENCE { + trafficSpecifierPolicyId InstanceId, + trafficSpecifierPolicyIntService Integer32, + trafficSpecifierPolicyBucketRate BitRate, + trafficSpecifierPolicyBucketSize Unsigned32, + trafficSpecifierPolicyPeakRate BurstRate, + trafficSpecifierPolicyMinPolicedUnit MessageSize, + trafficSpecifierPolicyMaxPacketSize MessageSize + + } + + + + trafficSpecifierPolicyId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the TrafficSpecifierPolicy class." + + ::= { trafficSpecifierPolicyEntry 1 } + + + trafficSpecifierPolicyIntService OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + " The traffic specifier policy is applied + to the flow of this Integrated Service type.� + ::= { pccDiffservMarkerEntry 2 } + + trafficSpecifierPolicyBucketRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'r' bytes per second, the token bucket rate. " + + ::= { trafficSpecifierPolicyEntry 3 } + + + trafficSpecifierPolicyBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'b' bucket depth in bytes, the token bucket size. " + + ::= { trafficSpecifierPolicyEntry 4 } + + + trafficSpecifierPolicyPeakRate OBJECT-TYPE + SYNTAX BurstSize + STATUS current + DESCRIPTION + " 'p' peak traffic data rate in bytes. " + + ::= { trafficSpecifierPolicyEntry 5 } + + + trafficSpecifierPolicyMinPolicedUnit OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'm' minimum policed unit: size in bytes + of application data and all IP and greater + level (UDP, RTP, TCP, etc.) headers. " + + ::= { trafficSpecifierPolicyEntry 6 } + + + trafficSpecifierPolicyMaxPacketSize OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'M' maximum packet size: biggest packet + that conforms to traffic specification. " + + ::= { trafficSpecifierPolicyEntry 7 } + + -- + -- RSPEC Limits Table + -- + + rspecLimitsTable OBJECT-TYPE + SYNTAX SEQUENCE OF RspecLimitsEntry + PIB-ACCESS install-notify, 4 + STATUS current + DESCRIPTION + "This table defines the RSPEC policy control + characteristics that are applied to Integrated + Services Guaranteed Service." + + ::= { rsvpPccBaseClasses 5 } + + rspecLimitsEntry OBJECT-TYPE + SYNTAX RspecLimitsEntry + STATUS current + DESCRIPTION + " An entry that defines specific Rate and Slack + limits for a Guaranteed Service resource request " + + EXTENDS { trafficSpecifierPolicyTable } + UNIQUENESS { rspecLimitRate, + rspecLimitsSlackTerm } + + ::= { rspecLimitsTable 1 } + + + RspecLimitsEntry ::= SEQUENCE { + RspecLimitsId InstanceId, + rspecLimitsRate BitRate, + rspecLimitsSlackTerm Unsigned32 + } + + + rspecLimitsId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the rspecLimits class." + + ::= { rspecLimitsEntry 1 } + + rspecLimitsRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'R' - Rate. Must be greater than or equal to 'r', rate + for the flow " + + ::= { rspecLimitsEntry 2 } + + rspecLimitsSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'S' - Slack Term. Defines in microseconds the + difference between desired delay and the delay + attained with the reservation level of R" + + ::= { rspecLimitsEntry 3 } + + -- + -- Authentication Data Policy Element Table + -- + + authDataPolicyElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF AuthDataPolicyElementEntry + PIB-ACCESS install-notify, 6 + STATUS current + DESCRIPTION + "This table specifies policy control to identify and + authenticate the owner making resource request." + + ::= { rsvpPccBaseClasses 6 } + + authDataPolicyElementEntry OBJECT-TYPE + SYNTAX AuthDataPolicyElementEntry + STATUS current + DESCRIPTION + " An entry defines the specific authentication + identify used to grant permission for the + reservation request." + + PIB-INDEX { authDataPolicyElementPccId } + UNIQUENESS { + authDataPolicyElementPolicySetId, + authDataPolicyElementPolicyIdentity, + authDataPolicyElementPolicyAuthAttrType, + authDataPolicyElementPolicyAuthAttrSubType + } + + ::= { authDataPolicyElementTable 1 } + + + AuthDataPolicyElementEntry::= SEQUENCE { + AuthDataPolicyElementPccId InstanceID, + AuthDataPolicyElementPolicySetId TagID, + authDataPolicyElementPolicyIdentity INTEGER, + authDataPolicyElementPolicyAuthAttrType INTEGER, + authDataPolicyElementPolicyAuthAttrSubType INTEGER + } + + authDataPolicyElementPccId OBJECT-TYPE + SYNTAX InstanceID + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the AuthDataPolicyElement class." + + ::= { authDataPolicyElementEntry 1 } + + + authDataPolicyElementPolicySetId OBJECT-TYPE + SYNTAX TagID + STATUS current + DESCRIPTION + " This associates a set of authentication attributes." + + ::= { authDataPolicyElementEntry 2 } + + + + authDataPolicyElementPolicyIdentity OBJECT-TYPE + SYNTAX INTEGER{ + AUTH_USER(1), + AUTH_APP(2) + } + STATUS current + DESCRIPTION + " Identifies the Policy Set Element via enumeration + values: + (2) AUTH_USER + (3) AUTH_APP " + + ::= { authDataPolicyElementEntry 3 } + + + authDataPolicyElementPolicyAuthAttrType OBJECT-TYPE + SYNTAX INTEGER { + POLICY_LOCATOR(1), + CREDENTIAL(2), + DIGITAL_SIGNATURE(3), + POLICY_ERROR_object(4) + } + STATUS current + DESCRIPTION + " Enumeration values: + (1) POLICY_LOCATOR (valid for both AUTH_USER and + AUTH_APP) + (2) CREDENTIAL (valid for both AUTH_USER and + AUTH_APP) + (3) DIGITAL_SIGNATURE + (4) POLICY_ERROR_OBJECT " + + ::= { authDataPolicyElementEntry 4 } + + authDataPolicyElementPolicyAuthAttrSubType OBJECT-TYPE + SYNTAX INTEGER { + NO_TYPE(0), + ASCII_DN(1), + UNICODE_DN(2), + ASCII_DN_ENCRYPT(3), + UNICODE_DN_ENCRYPT(4), + ASCII_ID(5), + UNICODE_ID(6), + KERBEROS_TKT(7), + X509_CERT(8), + PGP_CERT(9), + NO_MORE_INFO(10), + UNSUPPORTED_CRED_TYPE(11), + INSUFFICIENT_PRIVS(12), + EXPIRED_CREDENTIAL(13), + IDENTITY_CHANGED(14) + } + STATUS current + DESCRIPTION + " For POLICY_LOCATOR valid enumeration values are: + (1) ASCII_DN (valid for both AUTH_USER and + AUTH_APP) + (2) UNICODE_DN (valid for both AUTH_USER and + AUTH_APP) + (3) ASCII_DN_ENCRYPT + (4) UNICODE_DN_ENCRYPT + + For CREDENTIAL valid enumeration values are: + (5) ASCII_ID (valid for both AUTH_USER and + AUTH_APP) + (6) UNICODE_ID (valid for both AUTH_USER and + AUTH_APP) + (7) KERBEROS_TKT + (8) X509_V3_CERT + (9) PGP_CERT + + For DIGITAL_SIGNATURE: + Sub-Type set to 0 + + For POLICY_ERROR_OBJECT valid enumeration values are: + (10) ERROR_NO_MORE_INFO + (11) UNSUPPORTED_CREDENTIAL_TYPE + (12) INSUFFICIENT_PRIVILEGES + (13) EXPIRED_CREDENTIAL + (14) IDENTITY_CHANGED " + + ::= { authDataPolicyElementEntry 5 } + + + -- + -- Priority Preemption Policy Element Table + -- + + priorityPreemptionPolicyElementTable OBJECT-TYPE + SYNTAX SEQUENCE OF PriorityPreemptionPolicyElementEntry + PIB-ACCESS install-notify,5 + STATUS current + DESCRIPTION + "This table defines policy control for priority + preemption." + + ::= { rsvpPccBaseClasses 7 } + + + priorityPreemptionPolicyElementEntry OBJECT-TYPE + SYNTAX PriorityPreemptionPolicyElementEntry + STATUS current + DESCRIPTION + " An entry defines the specific preemption priority to + admit the flow and the defending priority. " + + PIB-INDEX { priorityPreemptionPolicyElementPccId } + UNIQUENESS { + priorityPreemptionPolicyElementMergeStrategy, + priorityPreemptionPolicyElementPreemptionPriority, + priorityPreemptionPolicyElementDefendingPriority + } + + ::= { priorityPreemptionPolicyElementTable 1 } + + + PriorityPreemptionPolicyElementEntry ::= SEQUENCE { + priorityPreemptionPolicyElementPccId InstanceId, + priorityPreemptionPolicyElementMergeStrategy INTEGER, + priorityPreemptionPolicyElementPreemptionPriority INTEGER, + priorityPreemptionPolicyElementDefendingPriority INTEGER + } + + priorityPreemptionPolicyElementPccId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies + an instance of the PriorityPreemptionPolicyElement + class." + + ::= { priorityPreemptionPolicyElementEntry 1 } + + + priorityPreemptionPolicyElementMergeStrategy OBJECT-TYPE + SYNTAX INTEGER { + HIGHEST_QOS(1), + HIGHEST_PRIORITY(2), + ERROR_ON_MERGE(3) + } + STATUS current + DESCRIPTION + " Defines the merging strategy for the flow. The + Enum values are: + (1) take priority of highest QoS + (2) take highest priority + (3) force an error on heterogeneous merge" + + ::= { priorityPreemptionPolicyElementEntry 2 } + + + priorityPreemptionPolicyElementPreemptionPriority OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + " Defines the value of the new reservation that is + compared against the defending priorities of existing + flows. A higher value represents a higher priority." + + ::= { priorityPreemptionPolicyElementEntry 3 } + + + priorityPreemptionPolicyElementDefendingPriority OBJECT-TYPE + SYNTAX INTEGER + STATUS current + DESCRIPTION + " The value defined for an existing flow to defend its + priority against a new reservation seeking admission. + The higher value represents higher priority." + + ::= { priorityPreemptionPolicyElementEntry 4 } + + -- + --Intsrv to Diffserv Interworking Function Table + -- + + pccIwfTable OBJECT TYPE + SYNTAX SEQUENCE OF PccIwfEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + �This table defines the attributes used for the + interworking between the RSVP process in the + control plane and Differentiated Services in the + data plane.� + + ::= {rsvpPccBaseClasses 8} + + pccIwfEntry OBJECT TYPE + SYNTAX PccIwfEntry + STATUS current + DESCRIPTION + �Defines the attributes for Intsrv and Diffserv + interworking.� + PIB-INDEX {pccIwfId} + + ::= {pccIwfTable 1} + + PccIwfEntry ::= SEQUENCE { + pccIwfId InstanceID, + pccIwfIntSrvClass Integer 32, + pccIwfDSCP Integer 32, + pccIwfOutOfProfile Integer 32, + pccIwfRemarkvalue Integer 32, + pccIwfScheduler Integer 32 + } + + pccIwfId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + �This is the unique identifier of the iwfTable + entry.� + ::= { pccIwfEntry 1} + + pccIwfIntSrvClass OBJECT-TYPE + SYNTAX Integer 32 + STATUS current + DESCRIPTION + �The value of the Intsrv Class associated with + the attributes of this specific interworking function + entry. It must have a corresponding bit set in + pccACPoolISClass.� + ::= { pccIwfEntry 2} + + pccIwfDSCP OBJECT-TYPE + SYNTAX Integer 32 + STATUS current + DESCRIPTION + �The Value of the DSCP to assign the data stream + for the session with the IntSrv class type + matching the value of the pccIwfIntSrvClass. + Value range is 0 � 63.� + ::= { pccIwfEntry 3} + + pccIwfOutOfProfile + SYNTAX Integer 32 + STATUS current + DESCRIPTION + �This indicates the behavior when the data stream + is out of profile. This value overrides any other + configured profile such as that defined in the + MeterTableEntry. The value of 0 indicates that + this attribute is ignored for this entry. A value + of 1 indications the out of profile packet is + dropped. A value of 2 indicates the out of profile + packet DSCP is remarked with the value + pccIwfRemarkValue.� + ::= {pccIwfEntry 4} + pccIwfRemark + SYNTAX Integer 32 + STATUS current + DESCRIPTION + �This is the value of the DSCP to remark an out of + profile packet. This value is only used if the + pccIwfOutOfProfile has a value of 2.� + ::= {pccIwfEntry 5} + pccIwfScheduler + SYNTAX Integer 32 + STATUS current + DESCRIPTION + �This is the value that identifies the scheduler + to be used by the data streams of sessions with an + IntSrv class matching the value of the attribute + pccIwfIntSrClass.� + ::= {pccIwfEntry 5} + + + -- + --Admission Control Virtual Pool Table + -- + + pccACVirPoolTable OBJECT TYPE + SYNTAX SEQUENCE OF PccACVirPoolEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + �This table defines the virtual pool used by the RSVP + process during admission contro. � + + ::= {rsvpPccBaseClasses 9} + + pccACVirPoolEntry OBJECT TYPE + SYNTAX PccACVirPoolEntry + STATUS current + DESCRIPTION + �Defines the attributes for the Intsrv virtual pool.� + PIB-INDEX {pccACVirPoolId} + + ::= {pccACVirPoolTable 1} + + PccACVirPoolEntry ::= SEQUENCE { + pccACVirPoolId InstanceID, + pccACVirPoolInterface SNMP string, + pccACVirPoolDirection Integer32, + pccACVirPoolIntSrvClass BITS, + pccACVirPoolMaxAbsRate Unsigned32, + pccACVirPoolAcceptResv Integer32 + } + + pccACVirPoolId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + �This is the unique identifier of the pccACVirPool + entry.� + ::= { pccACVirPoolEntry 1} + + pccACVirPoolInterface OBJECT-TYPE + SYNTAX SNMP string + STATUS current + DESCRIPTION + �The SNMP string identifies the logical interface + associated with the Admission Control Virtual + Pool entry.� + ::= { pccACVirPoolEntry 2} + + pccACVirPoolDirection OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + �This attribute indicates the relationship of the + traffic stream to the interface. The traffic + stream is either inbound (1) or outbound (2). An + upstream virtual pool has an inbound Direction + and a downstream virtual pool has a Direction of + outbound.� + ::= { pccACVirPoolEntry 3} + + pccACVirPoolIntSrvClass OBJECT-TYPE + SYNTAX BITS + STATUS current + DESCRIPTION + �The bit string indicates the IntSrv class or + classes that have resources allocated from this + virtual pool by admission control. + Value range is 0 � 63.� + ::= { pccACVirPoolEntry 4} + + pccACVirPoolMaxAbsRate + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + �This is the maximum absolute rate in kilobits + that this pool may allocate to the IntSrv + sessions defined by the + pccACVirtPoolIntSrvClass.� + ::= {pccACVirPoolEntry 5} + + pccACVirPoolAcceptResv + SYNTAX Integer 32 + STATUS current + DESCRIPTION + �This value indicates whether the RSVP admission + control is to accept RSVP RESV request for the + IntSrv flows belonging to the IntSrv classes + defined by pccACVirPoolIntSrvClass.� + ::= {pccACVirPoolEntry 6} + + + -- + --Edge Point Identification Table + -- + + pccEdgeTable OBJECT TYPE + SYNTAX SEQUENCE OF PccEdgeEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + �This table defines the attributes used to identify + the receiver domain. Admission control performs the + upstream resource check when the RSVP Session Object + matches one of the entries in this table.� + + ::= {rsvpPccBaseClasses 10} + + pccEdgeEntry OBJECT TYPE + SYNTAX PccEdgeEntry + STATUS current + DESCRIPTION + �Defines the attributes for identifying the + receiver domain edge that invokes upstream + Admission control in addition to downstream + Admission control.� + PIB-INDEX {pccEdgeId} + + ::= {pccEdgeTable 1} + + PccEdgeEntry ::= SEQUENCE { + pccEdgeId InstanceID, + pccAddrType INET Address Type, + pccEdgeAddr INET Address, + pccEdgeMask Unsigned 32, + } + + pccEdgeId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + �This is the unique identifier of the pccEdgeTable + entry.� + ::= { pccEdgeEntry 1} + + pccEdgeAddrType OBJECT-TYPE + SYNTAX INET Address + STATUS current + DESCRIPTION + �This is the enumerated value specifying the type + of address (IPv4 or Ipv6) as defined in RFC 2851.� + ::= { pccEdgeEntry 2} + + pccEdgeAddr OBJECT-TYPE + SYNTAX INET Address + STATUS current + DESCRIPTION + �When the value of this address matches the RSVP + Session Object Destination Address, it indicates + a that the session receiver is downstream and that + the upstream admission control should be performed.� + ::= { pccEdgeEntry 3} + + pccEdgeAddrMask OBJECT-TYPE + SYNTAX unsigned 32 + STATUS current + DESCRIPTION + �The length of the mask for matching th eaddress.� + ::= { pccEdgeEntry 4} + + + -- + -- The Policy Control Criteria Session Statistics usage + -- + + pccSessionStatsUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccSessionStatsUsageEntry + PIB-ACCESS report + STATUS current + DESCRIPTION + "This class defines the session statistics. It contains + the PRID of the linkage instance associating the + selection criteria instance with the usage instance." + + ::= {rsvpPccBaseClasses 11} + + pccSessionStatsUsageEntry OBJECT-TYPE + SYNTAX PccSessionStatsUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, + record and report." + PIB-INDEX {pccSessionStatsUsageId} + + + ::= {pccSessionStatsUsageTable 1} + + PccSessionStatsUsageEntry ::= SEQUENCE { + pccSessionStatsUsageId InstanceID, + pccSessionStatsUsageStart ExtUTCTime, + pccSessionStatsUsageEnd ExtUTCTime + } + + pccSessionStatsUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the pccSessionStatsUsage class." + + ::= { pccSessionStatsUsageEntry 1 } + + pccSessionStatsUsageStart OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The timestamp when the reservation was successfully + allocated." + + ::= { pccSessionStatsUsageEntry 2} + + pccSessionStatsUsageEnd OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The timestamp when the reservation was ended. This + could be due to reservation tear down, an error or + time out condition" + + ::= { pccSessionSatsUsageEntry 3} + + + -- The Policy Control Criteria Allocated Usage Table + -- + + pccAllocatedUsageTable OBJECT-TYPE + SYNTAX SEQUENCE OF PccAllocatedUsageEntry + PIB-ACCESS report + STATUS current + DESCRIPTION + "This class records the traffic specification allocated + to a session. It contains the PRID of the linkage + instance associating the selection criteria instance + with the usage instance." + + ::= {rsvpPccBaseClasses 12} + + pccAllocatedUsageEntry OBJECT-TYPE + SYNTAX PccAllocatedUsageEntry + STATUS current + DESCRIPTION + "Defines the attributes the PEP is to monitor, record + and report." + PIB-INDEX {pccAllocatedUsageId} + + ::= { pccAllocatedUsageTable 1} + + PccAllocatedUsageEntry ::= SEQUENCE { + pccAllocatedUsageId InstanceId, + pccAllocatedIntsrvClass Integer32, + pccAllocatedUsageBucketRate BitRate, + pccAllocatedUsageBucketSize Unsigned32, + pccAllocatedUsagePeakRate BurstRate, + pccAllocatedUsageMinPolicedUnit MessageSize, + pccAllocatedUsageMaxPacketSize MessageSize + pccAllocatedUsageLimitsRate BitRate, + pccAllocatedUsageSlackTerm Unsigned32 + } + + + pccAllocatedUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the PpcAllocatedUsage class." + + ::= { pccAllocatedUsageEntry 1 } + + pccAllocatedIntsrvClass OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + �The Intsrv Class associated with the session.� + ::= { pccAllocatedUsageEntry 2 } + + pccAllocatedUsageBucketRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " 'r' bytes per second, the token bucket rate. " + + ::= { pccAllocatedUsageEntry 3 } + + + pccAllocatedUsageBucketSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'b' bucket depth in bytes, the token bucket size. " + + ::= { pccAllocatedUsageEntry 4 } + + + pccAllocatedUsagePeakRate OBJECT-TYPE + SYNTAX BurstSize + STATUS current + DESCRIPTION + " 'p' peak traffic data rate in bytes. " + + ::= { pccAllocatedUsageEntry 5 } + + + pccAllocatedUsageMinPolicedUnit OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'm' minimum policed unit - size in bytes of + application data and all IP and greater level (UDP, + RTP, TCP, etc.) headers. " + + ::= { pccAllocatedUsageEntry 6 } + + + pccAllocatedUsageMaxPacketSize OBJECT-TYPE + SYNTAX MessageSize + STATUS current + DESCRIPTION + " 'M' maximum packet size - biggest packet that conforms + to traffic specification. " + ::= { pccAllocatedUsageEntry 7 } + + + + pccAllocatedUsageLimitsRate OBJECT-TYPE + SYNTAX BitRate + STATUS current + DESCRIPTION + " Limit Rate. Must be greater than or equal to rate for + the flow " + + ::= { pccAllocatedUsageEntry 8 } + + + + pccAllocatedUsageSlackTerm OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + " 'S' - Slack Term. Defines in microseconds the + difference between desired delay and the delay + attained with the reservation level of R" + + + + ::= { pccAllocatedUsageEntry 9 } + + -- + --Virtual Pool Usage Table + -- + + pccPoolUsageTable OBJECT TYPE + SYNTAX SEQUENCE OF PccPoolUsageEntry + PIB-ACCESS Install + STATUS current + DESCRIPTION + �This table tracks and reports the current total + of resources consumed by Intsrv flows for a + specific virtual pool.� + + ::= {rsvpPccBaseClasses 13} + + pccPoolUsageEntry OBJECT TYPE + SYNTAX PcPoolUsageEntry + STATUS current + DESCRIPTION + �Defines the attributes for tracking the current + total of resources used by Intsrv flows for a + virtual pool.� + PIB-INDEX {pccPoolUsageId} + + ::= {pccPoolUsageTable 1} + + PccPoolUsageEntry ::= SEQUENCE { + pccPoolUsageId InstanceID, + pccPoolUsagePoolId PRID, + pccPoolUsageAbsRateInUse Unsigned32 + } + + pccPoolUsageId OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + �This is the unique identifier of the + pccPoolUsage Table entry.� + ::= { pcPoolUsageEntry 1} + + pccPoolUsagePoolId OBJECT-TYPE + SYNTAX PRID + STATUS current + DESCRIPTION + �This is the prid of the pccACVirPoolTable entry + that is being tracked.� + ::= { pcPoolUsageEntry 2} + + pccPoolUsageAbsRateInUse OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + �This is the current total of resources used + by Intsrv flows for the virtual pool identified + by the pccPoolUsagePoolId.� + ::= { pccPoolUsageEntry 3} + + pccPoolUsgeAbsRateInUseThreshold OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + � This value is associated with the + pccPoolUsageAbsRateInUse and defines the feedback + threshold for this usage that results in the + instance being reported to the PDP. This value is + only used if the linkage entry is set to threshold� + ::= { pccPoolUsageEntry 4 } + + END diff --git a/pibs/tubs/SLS-NEGOTIATION-PIB b/pibs/tubs/SLS-NEGOTIATION-PIB new file mode 100644 index 0000000..258ec76 --- /dev/null +++ b/pibs/tubs/SLS-NEGOTIATION-PIB @@ -0,0 +1,686 @@ +SLS-NEGOTIATION-PIB PIB-DEFINITIONS ::= BEGIN + IMPORTS + ibrpib + FROM TUBS-SMI + Integer32, Unsigned32, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + InstanceId, Prid, TagId, TagReferenceId + FROM COPS-PR-SPPI-TC + zeroDotZero + FROM SNMPv2-SMI + ExtUTCTime + FROM SNMPv2-SMI + InetAddressType, InetAddress, + InetAddressPrefixLength, InetPortNumber + FROM INET-ADDRESS-MIB + InterfaceIndex + FROM IF-MIB + DscpOrAny + FROM DIFFSERV-DSCP-TC; + slsPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { all } -- COPS-SLS Client Type, to be done + LAST-UPDATED "200202281200Z" + ORGANIZATION "Alcatel, ENST Paris and University of Paris 6" + CONTACT-INFO " + Thi Mai Trang Nguyen + INFRES-ENST + 46 Rue Barrault + 75013 Paris - France + Phone: +33 1 45 81 74 61 + Email: trnguyen@enst.fr + Nadia Boukhatem + INFRES-ENST + 46 Rue Barrault + 75013 Paris - France + Phone: +33 1 45 81 82 16 + Email: Nadia.BouKhatem@enst.fr + Yacine El Mghazli + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 41 87 + Email: yacine.el_mghazli@alcatel.fr + Nathalie Charton + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 14 85 + Email: Nathalie.Charton@ms.alcatel.fr + Guy Pujolle + RP-LIP6-UPMC + 8 Rue du Capitaine Scott + 75015 Paris - France + Phone: +33 1 44 27 75 14 + Email: Guy.Pujolle@lip6.fr" + DESCRIPTION + "The PIB module contains a set of classes + describing the policies in SLS negotiation" + ::= { ibrpib 11 } + + slsCapabilityClasses OBJECT IDENTIFIER ::= { slsPolicyPib 1 } + slsPolicyClasses OBJECT IDENTIFIER ::= { slsPolicyPib 2 } + slsParamClasses OBJECT IDENTIFIER ::= { slsPolicyPib 3 } + slsReportClasses OBJECT IDENTIFIER ::= { slsPolicyPib 4} + + slsNegoCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "SLS negotiation capabilities supported by the client" + ::= { slsCapabilityClasses 1} + slsNegoCapsEntry OBJECT-TYPE + SYNTAX SlsNegoCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the SLS negotiation + capabilities of a client" + PIB-INDEX { slsNegoCapsPrid } + ::= { slsNegoCapsTable 1 } + SlsNegoCapsEntry ::= SEQUENCE { + slsNegoCapsPrid InstanceId, + slsNegoCapsNegoMode BITS, + slsNegoCapsNegoInt Unsigned32, + slsNegoCapsMaxPredefSls Unsigned32 + } + slsNegoCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsNegoCapsEntry 1 } + slsNegoCapsNegoMode OBJECT-TYPE + SYNTAX BITS { + predefSls(1), + -- the ability to support predefined SLS mode + non-predefinedSls (2) + -- the ability to support non-predefined SLS mode" + } + STATUS current + DESCRIPTION + "The SLS negotiation mode supported by the PEP + (1) - predefined SLS mode + (2) - non-predefined SLS mode" + ::= { slsNegoCapsEntry 2 } + slsNegoCapsNegoInt OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The desired interval before which the client could + send another REQ message to modify a + negotiated SLS" + ::= { slsNegoCapsEntry 3 } + slsNegoCapsMaxPredefSls OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum number of predefined SLSs that the PDP can + install at the client device. If the client does not + support the predefined SLS negotiation mode, this value + MUST be 0" + ::= { slsNegoCapsEntry 4 } + slsNegoTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "SLS negotiation policies to be installed by the PDP" + ::= { slsPolicyClasses 1 } + slsNegoEntry OBJECT-TYPE + SYNTAX SlsNegoEntry + STATUS current + DESCRIPTION + "An instance of this class describes the policies about + SLS negotiation that the PDP installs at the PEP" + PIB-INDEX { slsNegoPrid } + ::= { slsNegoTable 1 } + SlsNegoEntry ::= SEQUENCE { + slsNegoPrid InstanceId, + slsNegoMode BITS, + slsNegoMaxInt Unsigned32 + } + slsNegoPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsNegoEntry 1 } + slsNegoMode OBJECT-TYPE + SYNTAX BITS{ + predefSls(1), + -- predefined SLS mode + non-predefinedSls (2) + -- non-predefined SLS mode" + } + STATUS current + DESCRIPTION + "The negotiation mode used by the client. +- indicates the predefined SLS mode. +- indicates the non-predefined SLS mode" + ::= { slsNegoEntry 2 } + slsNegoMaxInt OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum interval during which the client cannot issue + a REQ message to change a negotiated SLS" + ::= { slsNegoEntry 3 } + slsSlsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsSlsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "Represent an SLS" + ::= { slsPolicyClasses 2 } + + slsSlsEntry OBJECT-TYPE + SYNTAX SlsSlsEntry + STATUS current + DESCRIPTION + "An instance of this class specifies an SLS" + PIB-INDEX { slsSlsPrid } + ::= { slsSlsTable 1 } + SlsSlsEntry ::= SEQUENCE { + slsSlsPrid InstanceId, + slsSlsScope Prid, + slsSlsFlowId Prid, + slsSlsTrafficConformance Prid, + slsSlsExcessTreatment Prid, + slsSlsPerformance Prid, + slsSlsServiceSchedule Prid + } + slsSlsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class" + ::= { slsSlsEntry 1} + slsSlsScope OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute uniquely indicates where the QoS policy + for that specific service is to be enforced. The value + must point to a valid instance of one of these classes: + slsScopeParamEntry" + ::= { slsSlsEntry 2 } + slsSlsFlowId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute specifies the identification of a flow. It + indentifies a stream of IP packets sharing at least one + common characteristic. The value must point to a valid + instance of one of these classes: + slsFlowIdParamEntry" + ::= { slsSlsEntry 3 } + slsSlsTrafficConformance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute specifies the traffic conformance of the + flow identified in slsSlsFlowId. The traffic conformance + parameters describes how the packet stream should look + like to get the guarantees indicated by the perfomance + parameters. The value must point to + a valid instance of one of these classes: + slsConformParamEntry" + ::= { slsSlsEntry 4 } + slsSlsExcessTreatment OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute specifies the excess treatment applied to + the flow identified by slsSlsFlowId if it does not conform + to parameters specified in slsSlsTrafficConformance. + Excess traffic may be dropped, shaped and/or remarked. + The value must point to a valid instance of one of these + classes: + slsExcTreatParamEntry" + ::= { slsSlsEntry 5 } + slsSlsPerformance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute specifies the performance guarantees the + network offers to the customer for the flow identified by + slsSlsFlowId. The value must point to an instance of one of + these classes: + slsPerformanceParamEntry " + ::= { slsSlsEntry 6 } + slsSlsServiceSchedule OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute indicates the start time and end time of + the service, i.e. when the service is available. The value + must point to an valid instance of one of these classes: + slsScheduleParamEntry + zeroDotZero (non specified)" + ::= { slsSlsEntry 7 } + slsScopeParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsScopeParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies the scope parameters" + ::= { slsParamClasses 1} + + slsScopeParamEntry OBJECT-TYPE + SYNTAX SlsScopeParamEntry + STATUS current + DESCRIPTION + "This PRC uniquely identifies the geographical/topological + region over which the QoS is to be enforced by indicating + the boundaries of that region." + PIB-INDEX { slsScopeParamPrid } + ::= { slsScopeParamTable 1 } + SlsScopeParamEntry ::= SEQUENCE { + slsScopeParamPrid InstanceId, + slsScopeParamId TagReferenceId + } + slsScopeParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { slsScopeParamEntry 1 } + slsScopeParamId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG {slsScopeIfParamId} + STATUS current + DESCRIPTION + "Identifies an SLS Scope." + ::= { slsScopeParamEntry 2 } + slsScopeIfParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsScopeIfParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "The entry points (interfaces) of the IP packets relative + to the region (network)." + ::= { slsParamClasses 2 } + slsScopeIfParamEntry OBJECT-TYPE + SYNTAX SlsScopeIfParamEntry + STATUS current + DESCRIPTION + "An entry in the scope interface table describes a single + interface of the scope." + PIB-INDEX { slsScopeIfParamPrid } + ::= { slsScopeIfParamTable 1 } + SlsScopeIfParamEntry ::= SEQUENCE { + slsScopeIfParamPrid InstanceId, + slsScopeIfParamId TagId, + slsScopeIfParamIfIndex InterfaceIndex, + slsScopeIfParamDirection BITS + } + slsScopeIfParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { slsScopeIfParamEntry 1 } + slsScopeIfParamId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An SLS Scope is composed of one or more entry/exit + points. Each interface belonging to the same scope uses the + same Scope ID. Hence, A scope Id identifies which scope + this interface is a part of. This needs to be the value of + slsScopeParamId attribute for an existing instance of + slsScopeParamEntry." + ::= { slsScopeIfParamEntry 2 } + slsScopeIfParamIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + STATUS current + DESCRIPTION + " This value contains the interface index of the entry/exit + interface." + ::= { slsScopeIfParamEntry 3 } + slsScopeIfParamDirection OBJECT-TYPE + SYNTAX BITS{ + ingress (0), + egress (1) + } + STATUS current + DESCRIPTION + " This attribute specifies whether the interface is an + entry point (ingress) or an exit point (egress) of thez SLS + scope." + ::= { slsScopeIfParamEntry 4 } + slsFlowIdParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsFlowIdParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters identifying a traffic + stream" + ::= { slsParamClasses 3 } + slsFlowIdParamEntry OBJECT-TYPE + SYNTAX SlsFlowIdParamEntry + STATUS current + DESCRIPTION + "The instance of this class identifies a traffic stream" + PIB-INDEX { slsFlowIdParamPrid } + ::= { slsFlowIdParamTable 1 } + SlsFlowIdParamEntry ::= SEQUENCE{ + slsFlowIdParamPrid InstanceId, + slsFlowIdParamAddrType InetAddressType, + slsFlowIdParamDstAddr InetAddress, + slsFlowIdParamDstPrefixLength InetAddressPrefixLength, + slsFlowIdParamSrcAddr InetAddress, + slsFlowIdParamSrcPrefixLength InetAddressPrefixLength, + slsFlowIdParamDscp DscpOrAny, + slsFlowIdParamFlowLable Unsigned32, + slsFlowIdParamProtocol Integer32, + slsFlowIdParamDstL4PortMin InetPortNumber, + slsFlowIdParamDstL4PortMax InetPortNumber, + slsFlowIdParamSrcL4PortMin InetPortNumber, + slsFlowIdParamSrcL4PortMax InetPortNumber + } + slsFlowIdParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsFlowIdParamEntry 1 } + slsFlowIdParamAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Specify the type of packet's IP address." + ::= { slsFlowIdParamEntry 2 } + slsFlowIdParamDstAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address of the packet's destination." + ::= { slsFlowIdParamEntry 3 } + slsFlowIdParamDstPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. The value of 0 indicates that the address + always matches." + ::= { slsFlowIdParamEntry 4 } + slsFlowIdParamSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address of the packet's source." + ::= { slsFlowIdParamEntry 5 } + slsFlowIdParamSrcPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. A value of 0 indicates that the address always + matches." + ::= { slsFlowIdParamEntry 6 } + slsFlowIdParamDscp OBJECT-TYPE + SYNTAX DscpOrAny + STATUS current + DESCRIPTION + "The DSCP value of the packet. A value of 1 indicates that + DSCP value has not been defined." + ::= { slsFlowIdParamEntry 7 } + slsFlowIdParamFlowLable OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The value of the Flow Label field in IPv6 header." + ::= { slsFlowIdParamEntry 8 } + slsFlowIdParamProtocol OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The value of the Protocol field in IP header." + ::= { slsFlowIdParamEntry 9 } + slsFlowIdParamDstL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have." + ::= { slsFlowIdParamEntry 10 } + slsFlowIdParamDstL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have." + ::= { slsFlowIdParamEntry 11 } + slsFlowIdParamSrcL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have." + ::= { slsFlowIdParamEntry 12 } + slsFlowIdParamSrcL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have." + ::= { slsFlowIdParamEntry 13 } + slsConformParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsConformParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class defines the traffic conformance of a traffic + stream." + ::= { slsParamClasses 4 } + slsConformParamEntry OBJECT-TYPE + SYNTAX SlsConformParamEntry + STATUS current + DESCRIPTION + "The instance of this class specifies algorithm and profile + to verify the conformance of a traffic stream" + PIB-INDEX { slsConformParamPrid } + ::= { slsConformParamTable 1 } + SlsConformParamEntry ::= SEQUENCE { + slsConformParamPrid InstanceId, + slsConformParamAlgo Unsigned32, + slsConformParamRate Unsigned32, + slsConformParamBurstSize Unsigned32 + } + slsConformParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsConformParamEntry 1 } + slsConformParamAlgo OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specify the algorithm used to verify the conformance of + the traffic stream. + 1 = Simple Token Bucket" + ::= { slsConformParamEntry 2 } + slsConformParamRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The rate value used in Simple Token Bucket algorithm." + ::= { slsConformParamEntry 3 } + slsConformParamBurstSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The burst size value used in Simple Token Bucket + algorithm." + ::= { slsConformParamEntry 4 } + slsExcTreatParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsExcTreatParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of schedule of service" + ::= { slsParamClasses 5 } + slsExcTreatParamEntry OBJECT-TYPE + SYNTAX SlsExcTreatParamEntry + STATUS current + DESCRIPTION + "The instance of this class identifies a traffic stream" + PIB-INDEX { slsExcTreatParamPrid } + ::= { slsExcTreatParamTable 1 } + SlsExcTreatParamEntry ::= SEQUENCE { + slsExcTreatParamPrid InstanceId, + slsExcTreatParamAction BITS + } + slsExcTreatParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsExcTreatParamEntry 1 } + slsExcTreatParamAction OBJECT-TYPE + SYNTAX BITS{ + shapping(1), + -- traffic exceeding the conformance parameters + -- negotiated will be shaped. + dropping (2) + -- traffic exceeding the conformance parameters + -- negotiated will be dropped + } + STATUS current + DESCRIPTION + "Specify the treatment applied to the packet out of the + data stream's conformance negotiated + (1) shapping exceeding traffic + (2) dropping exceeding traffic" + ::= { slsExcTreatParamEntry 2 } + slsPerformanceParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsPerformanceParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of performance of a flow" + ::= { slsParamClasses 6 } + slsPerformanceParamEntry OBJECT-TYPE + SYNTAX SlsPerformanceParamEntry + STATUS current + DESCRIPTION + "Describes performance parameters of a flow" + PIB-INDEX { slsPerformanceParamPrid } + ::= { slsPerformanceParamTable 1 } + SlsPerformanceParamEntry ::= SEQUENCE { + slsPerformanceParamPrid InstanceId, + slsPerformanceParamDelay Unsigned32, + slsPerformanceParamJitter Unsigned32, + slsPerformanceParamPacketLoss Unsigned32 + } + slsPerformanceParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsPerformanceParamEntry 1 } + slsPerformanceParamDelay OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the delay value in milisecond" + ::= { slsPerformanceParamEntry 2 } + slsPerformanceParamJitter OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the jitter value in milisecond" + ::= { slsPerformanceParamEntry 3 } + slsPerformanceParamPacketLoss OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the packet loss ratio in %" + ::= { slsPerformanceParamEntry 4 } +slsScheduleParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsScheduleParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of schedule of service" + ::= { slsParamClasses 7} + slsScheduleParamEntry OBJECT-TYPE + SYNTAX SlsScheduleParamEntry + STATUS current + DESCRIPTION + "Specifies a service schedule" + PIB-INDEX { slsScheduleParamPrid } + ::= { slsScheduleParamTable 1 } + SlsScheduleParamEntry ::= SEQUENCE { + slsScheduleParamPrid InstanceId, + slsScheduleParamStartTime ExtUTCTime, + slsScheduleParamStopTime ExtUTCTime + } + slsScheduleParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsScheduleParamEntry 1 } + slsScheduleParamStartTime OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The time the service starts" + ::= { slsScheduleParamEntry 2 } + slsScheduleParamStopTime OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The time the service terminate" + ::= { slsScheduleParamEntry 3 } + slsNegoRptTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoRptEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class is used by the PEP to convey negotiation + information in RPT message" + ::= { slsReportClasses 1 } + slsNegoRptEntry OBJECT-TYPE + SYNTAX SlsNegoRptEntry + STATUS current + DESCRIPTION + "An instance of this class reports on the SLS negotiation" + PIB-INDEX { slsNegoRptPrid } + ::= { slsNegoRptTable 1 } + SlsNegoRptEntry ::= SEQUENCE { + slsNegoRptPrid InstanceId, + slsNegoRptFailRea BITS + } + slsNegoRptPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class" + ::= { slsNegoRptEntry 1 } + slsNegoRptFailRea OBJECT-TYPE + SYNTAX BITS { + slsNonAccepted (1) + } + STATUS current + DESCRIPTION + "This attribute specifies the reason by which the PEP sends + a 'failure' report + (1) the PEP does not accept the SLS suggested" + ::= { slsNegoRptEntry 2 } + + END diff --git a/pibs/tubs/SLS-NEGOTIATION-PIB-orig b/pibs/tubs/SLS-NEGOTIATION-PIB-orig new file mode 100644 index 0000000..0e0df8d --- /dev/null +++ b/pibs/tubs/SLS-NEGOTIATION-PIB-orig @@ -0,0 +1,669 @@ +SLS-NEGOTIATION-PIB PIB-DEFINITIONS ::= BEGIN + IMPORTS + Unsigned32, InstanceId, MODULE-IDENTITY, OBJECT-TYPE + FROM COPS-PR-SPPI + ZerroDotZero + FROM SNMPv2-SMI + ExtUTCTime + FROM SNMPv2-SMI + InetAddressType, InetAddress, InetAddressPrefixLength, + InetPortNumber + FROM INET-ADDRESS-MIB + DscpOrAny + FROM DIFFSERV-DSCP-TC + slsPolicyPib MODULE-IDENTITY + SUBJECT-CATEGORIES { tbd - COPS-SLS Client Type } + LAST-UPDATED "200202281200Z" + ORGANIZATION "Alcatel, ENST Paris and University of Paris 6" + CONTACT-INFO " + Thi Mai Trang Nguyen + INFRES-ENST + 46 Rue Barrault + 75013 Paris - France + Phone: +33 1 45 81 74 61 + Email: trnguyen@enst.fr + Nadia Boukhatem + INFRES-ENST + 46 Rue Barrault + 75013 Paris - France + Phone: +33 1 45 81 82 16 + Email: Nadia.BouKhatem@enst.fr + Yacine El Mghazli + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 41 87 + Email: yacine.el_mghazli@alcatel.fr + Nathalie Charton + Alcatel R&I + Route de Nozay + F-91460 Marcoussis - FRANCE + Phone: +33 1 69 63 14 85 + Email: Nathalie.Charton@ms.alcatel.fr + Guy Pujolle + RP-LIP6-UPMC + 8 Rue du Capitaine Scott + 75015 Paris - France + Phone: +33 1 44 27 75 14 + Email: Guy.Pujolle@lip6.fr" + DESCRIPTION + "The PIB module contains a set of classes + describing the policies in SLS negotiation" + ::= { tbd } + + slsCapabilityClasses OBJECT IDENTIFIER ::= { slsPolicyPib 1 } + slsPolicyClasses OBJECT IDENTIFIER ::= { slsPolicyPib 2 } + slsParamClasses OBJECT IDENTIFIER ::= { slsPolicyPib 3 } + slsReportClasses OBJECT IDENTIFIER ::= { slsPolicyPib 4} + + slsNegoCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "SLS negotiation capabilities supported by the client" + ::= { slsCapabilityClasses 1} + slsNegoCapsEntry OBJECT-TYPE + SYNTAX SlsNegoCapsEntry + STATUS current + DESCRIPTION + "An instance of this class describes the SLS negotiation + capabilities of a client" + ::= { slsNegoCapsTable 1 } + PIB-INDEX { slsNegoCapsPrid } + SlsNegoCapsEntry ::= SEQUENCE { + slsNegoCapsPrid InstanceId + slsNegoCapsNegoMode BITS + slsNegoCapsNegoInt Unsigned32 + slsNegoCapsMaxPredefSls Unsigned32 + } + slsNegoCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsNegoCapsEntry 1 } + slsNegoCapsNegoMode OBJECT-TYPE + SYNTAX BITS { + predefSls(1) + -- the ability to support predefined SLS mode + non-predefinedSls (2) + -- the ability to support non-predefined SLS mode" + } + STATUS current + DESCRIPTION + "The SLS negotiation mode supported by the PEP + (1) - predefined SLS mode + (2) - non-predefined SLS mode" + ::= { slsNegoCapsEntry 2 } + slsNegoCapsNegoInt OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The desired interval before which the client could + send another REQ message to modify a + negotiated SLS" + ::= { slsNegoCapsEntry 3 } + slsNegoCapsMaxPredefSls OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum number of predefined SLSs that the PDP can + install at the client device. If the client does not + support the predefined SLS negotiation mode, this value + MUST be 0" + ::= { slsNegoCapsEntry 4 } + slsNegoTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoEntry + PIB-ACCESS install + STATUS current + DESCRIPTION + "SLS negotiation policies to be installed by the PDP" + ::= { slsPolicyClasses 1 } + slsNegoEntry OBJECT-TYPE + SYNTAX SlsNegoEntry + STATUS current + DESCRIPTION + "An instance of this class describes the policies about + SLS negotiation that the PDP installs at the PEP" + PIB-INDEX { slsNegoPrid } + ::= { slsNegoTable 1 } + SlsNegoEntry ::= SEQUENCE { + slsNegoPrid InstanceId + slsNegoMode BITS + slsNegoMaxInt Unsigned32 + } + slsNegoPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsNegoEntry 1 } + slsNegoMode OBJECT-TYPE + SYNTAX BITS{ + predefSls(1) + -- predefined SLS mode + non-predefinedSls (2) + -- non-predefined SLS mode" + } + STATUS current + DESCRIPTION + "The negotiation mode used by the client. +- indicates the predefined SLS mode. +- indicates the non-predefined SLS mode" + ::= { slsNegoEntry 2 } + slsNegoMaxInt OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The maximum interval during which the client cannot issue + a REQ message to change a negotiated SLS" + ::= { slsNegoEntry 3 } + slsSlsTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsSlsEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "Represent an SLS" + ::= { slsPolicyClasses 2 } + slsSlsEntry OBJECT-TYPE + SYNTAX SEQUENCE OF SlsSlsEntry + STATUS current + DESCRIPTION + "An instance of this class specifies an SLS" + ::= { slsSlsTable 1 } + SlsSlsEntry ::= SEQUENCE { + slsSlsPrid InstanceId + slsSlsScope Prid + slsSlsFlowId Prid + slsSlsTrafficConformance Prid + slsSlsExcessTreatment Prid + slsSlsPerformance Prid + slsSlsServiceSchedule Prid + } + slsSlsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class" + ::= { slsSlsEntry 1} + slsSlsScope OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute uniquely indicates where the QoS policy + for that specific service is to be enforced. The value + must point to a valid instance of one of these classes: + slsScopeParamEntry� + ::= { slsSlsEntry 2 } + slsSlsFlowId OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute specifies the identification of a flow. It + indentifies a stream of IP packets sharing at least one + common characteristic. The value must point to a valid + instance of one of these classes: + slsFlowIdParamEntry" + ::= { slsSlsEntry 3 } + slsSlsTrafficConformance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute specifies the traffic conformance of the + flow identified in slsSlsFlowId. The traffic conformance + parameters describes how the packet stream should look + like to get the guarantees indicated by the perfomance + parameters. The value must point to + a valid instance of one of these classes: + slsConformParamEntry" + ::= { slsSlsEntry 4 } + slsSlsExcessTreatment OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute specifies the excess treatment applied to + the flow identified by slsSlsFlowId if it does not conform + to parameters specified in slsSlsTrafficConformance. + Excess traffic may be dropped, shaped and/or remarked. + The value must point to a valid instance of one of these + classes: + slsExcTreatParamEntry" + ::= { slsSlsEntry 5 } + slsSlsPerformance OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "This attribute specifies the performance guarantees the + network offers to the customer for the flow identified by + slsSlsFlowId. The value must point to an instance of one of + these classes: + slsPerformanceParamEntry " + ::= { slsSlsEntry 6 } + slsSlsServiceSchedule OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + " This attribute indicates the start time and end time of + the service, i.e. when the service is available. The value + must point to an valid instance of one of these classes: + slsScheduleParamEntry + zeroDotZero (non specified)" + ::= { slsSlsEntry 7 } + slsScopeParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsScopeParamEntry + PIB-ACESS install-notify + STATUS current + DESCRIPTION + "This class specifies the scope parameters" + ::= { slsParamClasses 1} + slsScopeParamEntry OBJECT-TYPE + SYNTAX SlsScopeParamEntry + STATUS current + DESCRIPTION + "This PRC uniquely identifies the geographical/topological + region over which the QoS is to be enforced by indicating + the boundaries of that region." + ::= { slsScopeParamTable 1 } + slsScopeParamEntry ::= SEQUENCE { + SlsScopeParamPrid Prid + slsScopeParamId TagReferenceId + } + slsScopeParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { slsScopeParamEntry 1 } + slsScopeParamId OBJECT-TYPE + SYNTAX TagReferenceId + PIB-TAG {slsScopeIfParamId} + STATUS current + DESCRIPTION + "Identifies an SLS Scope." + ::= { slsScopeParamEntry 2 } + slsScopeIfParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsScopeInterfaceParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "The entry points (interfaces) of the IP packets relative + to the region (network)." + ::= { slsParamClasses 2 } + slsScopeIfParamEntry OBJECT-TYPE + SYNTAX SlsScopeIfParamEntry + STATUS current + DESCRIPTION + �An entry in the scope interface table describes a single + interface of the scope.� + ::= { slsScopeIfParamTable 1 } + slsScopeIfParamEntry ::= SEQUENCE { + SlsScopeIfParamPrid Prid + slsScopeIfParamId TagId + slsScopeIfParamIfIndex InterfaceIndex + slsScopeIfParamDirection BITS + } + slsScopeIfParamPrid OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class." + ::= { slsScopeIfParamEntry 1 } + slsScopeIfParamId OBJECT-TYPE + SYNTAX TagId + STATUS current + DESCRIPTION + "An SLS Scope is composed of one or more entry/exit + points. Each interface belonging to the same scope uses the + same Scope ID. Hence, A scope Id identifies which scope + this interface is a part of. This needs to be the value of + slsScopeParamId attribute for an existing instance of + slsScopeParamEntry." + ::= { slsScopeIfParamEntry 2 } + slsScopeIfParamIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + STATUS current + DESCRIPTION + " This value contains the interface index of the entry/exit + interface." + ::= { slsScopeIfParamEntry 3 } + slsScopeIfParamDirection OBJECT-TYPE + SYNTAX BITS{ + ingress (0) + egress (1) + } + STATUS current + DESCRIPTION + " This attribute specifies whether the interface is an + entry point (ingress) or an exit point (egress) of thez SLS + scope." + ::= { slsScopeIfParamEntry 4 } + slsFlowIdParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsFlowIdParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters identifying a traffic + stream" + ::= { slsParamClasses 3 } + slsFlowIdParamEntry OBJECT-TYPE + SYNTAX SlsFlowIdParamEntry + STATUS current + DESCRIPTION + "The instance of this class identifies a traffic stream" + ::= { slsFlowIdParamTable 1 } + SlsFlowIdParamEntry ::= SEQUENCE{ + slsFlowIdParamPrid InstanceId + slsFlowIdParamAddrType InetAddressType, + slsFlowIdParamDstAddr InetAddress, + slsFlowIdParamDstPrefixLength InetAddressPrefixLength + slsFlowIdParamSrcAddr InetAddress, + slsFlowIdParamSrcPrefixLength InetAddressPrefixLength, + slsFlowIdParamDscp DscpOrAny, + slsFlowIdParamFlowLable Unsigned32, + slsFlowIdParamProtocol Integer32, + slsFlowIdParamDstL4PortMin InetPortNumber, + slsFlowIdParamDstL4PortMax InetPortNumber, + slsFlowIdParamSrcL4PortMin InetPortNumber, + slsFlowIdParamSrcL4PortMax InetPortNumber + } + slsFlowIdParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the class" + ::= { slsFlowIdParamEntry 1 } + slsFlowIdParamAddrType OBJECT-TYPE + SYNTAX InetAddressType + STATUS current + DESCRIPTION + "Specify the type of packet's IP address." + ::= { slsFlowIdParamEntry 2 } + slsFlowIdParamDstAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address of the packet's destination." + ::= { slsFlowIdParamEntry 3 } + slsFlowIdParamDstPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. The value of 0 indicates that the address + always matches." + ::= { slsFlowIdParamEntry 4 } + slsFlowIdParamSrcAddr OBJECT-TYPE + SYNTAX InetAddress + STATUS current + DESCRIPTION + "The IP address of the packet's source." + ::= { slsFlowIdParamEntry 5 } + slsFlowIdParamSrcPrefixLength OBJECT-TYPE + SYNTAX InetAddressPrefixLength + STATUS current + DESCRIPTION + "The length of a mask for the matching of the destination + IP address. A value of 0 indicates that the address always + matches." + ::= { slsFlowIdParamEntry 6 } + slsFlowIdParamDscp OBJECT-TYPE + SYNTAX DscpOrAny + STATUS current + DESCRIPTION + "The DSCP value of the packet. A value of �1 indicates that + DSCP value has not been defined." + ::= { slsFlowIdParamEntry 7 } + slsFlowIdParamFlowLable OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The value of the Flow Label field in IPv6 header." + ::= { slsFlowIdParamEntry 8 } + slsFlowIdParamProtocol OBJECT-TYPE + SYNTAX Integer32 + STATUS current + DESCRIPTION + "The value of the Protocol field in IP header." + ::= { slsFlowIdParamEntry 9 } + slsFlowIdParamDstL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 destination + port number can have." + ::= { slsFlowIdParamEntry 10 } + slsFlowIdParamDstL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The maximum value that the packet's layer 4 destination + port number can have." + ::= { slsFlowIdParamEntry 11 } + slsFlowIdParamSrcL4PortMin OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have." + ::= { slsFlowIdParamEntry 12 } + slsFlowIdParamSrcL4PortMax OBJECT-TYPE + SYNTAX InetPortNumber + STATUS current + DESCRIPTION + "The minimum value that the packet's layer 4 source port + number can have." + ::= { slsFlowIdParamEntry 13 } + slsConformParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsConformParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class defines the traffic conformance of a traffic + stream." + ::= { slsParamClasses 4 } + slsConformParamEntry OBJECT-TYPE + SYNTAX SlsConformParamEntry + STATUS current + DESCRIPTION + "The instance of this class specifies algorithm and profile + to verify the conformance of a traffic stream" + ::= { slsConformParamTable 1 } + SlsConformParamEntry ::= SEQUENCE { + slsConformParamPrid InstanceId + slsConformParamAlgo Unsigned32 + slsConformParamRate Unsigned32 + slsConformParamBurstSize Unsigned32 + } + slsConformPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsConformParamEntry 1 } + slsConformParamAlgo OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specify the algorithm used to verify the conformance of + the traffic stream. + 1 � Simple Token Bucket" + ::= { slsConformParamEntry 2 } + slsConformParamRate OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The rate value used in Simple Token Bucket algorithm." + ::= { slsConformParamEntry 3 } + slsConformParamBurstSize OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "The burst size value used in Simple Token Bucket + algorithm." + ::= { slsConformParamEntry 4 } + slsExcTreatParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsExcTreatParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of schedule of service" + ::= { slsParamClasses 5 } + slsExcTreatParamEntry OBJECT-TYPE + SYNTAX SlsExctreatParamEntry + STATUS current + DESCRIPTION + "The instance of this class identifies a traffic stream" + ::= { slsExcTreatParamTable 1 } + SlsExcTreatParamEntry ::= SEQUENCE { + slsExcTreatParamPrid InstanceId + slsExcTreatParamAction BITS + } + slsExcTreatParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsExcTreatParamEntry 1 } + slsExcTreatParamAction OBJECT-TYPE + SYNTAX BITS{ + shapping(1) + -- traffic exceeding the conformance parameters + negotiated will be shaped. + dropping (2) + -- traffic exceeding the conformance parameters + negotiated will be dropped + } + STATUS current + DESCRIPTION + "Specify the treatment applied to the packet out of the + data stream's conformance negotiated + (1) � shapping exceeding traffic + (2) � dropping exceeding traffic" + ::= { slsExcTreatParamEntry 2 } + slsPerformanceParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsPerformanceParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of performance of a flow" + ::= { slsParamClasses 6 } + slsPerformanceParamEntry OBJECT-TYPE + SYNTAX SlsPerformanceParamEntry + STATUS current + DESCRIPTION + "Describes performance parameters of a flow" + ::= { sls PerformanceParamTable 1 } + SlsPerformanceParamEntry ::= SEQUENCE { + slsPerformanceParamPrid InstanceId + slsPerformanceParamDelay Unsigned32 + slsPerformanceParamJitter Unsigned32 + slsPerformanceParamPacketLoss Unsigned32 + } + slsPerformanceParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsPerformanceParamEntry 1 } + slsPerformanceParamDelay OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the delay value in milisecond" + ::= { slsPerformanceParamEntry 2 } + slsPerformanceParamJitter OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the jitter value in milisecond" + ::= { slsPerformanceParamEntry 3 } + slsPerformanceParamPacketLoss OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Specifies the packet loss ratio in %" + ::= { slsPerformanceParamEntry 4 } +slsScheduleParamTable OBJECT-TYPE + SYNTAX SEQUENCE OF slsScheduleParamEntry + PIB-ACCESS install-notify + STATUS current + DESCRIPTION + "This class specifies parameters of schedule of service" + ::= { slsParamClasses 7} + slsScheduleParamEntry OBJECT-TYPE + SYNTAX SlsScheduleParamEntry + STATUS current + DESCRIPTION + "Specifies a service schedule" + ::= { slsScheduleParamTable 1 } + SlsScheduleParamEntry ::= SEQUENCE { + slsScheduleParamPrid InstanceId + slsScheduleParamStartTime ExtUTCTime + slsScheduleParamStopTime ExtUTCTime + } + slsScheduleParamPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class." + ::= { slsScheduleParamEntry 1 } + slsScheduleParamStartTime OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The time the service starts" + ::= { slsScheduleParamEntry 2 } + slsScheduleParamStopTime OBJECT-TYPE + SYNTAX ExtUTCTime + STATUS current + DESCRIPTION + "The time the service terminate" + ::= { slsScheduleParamEntry 3 } + slsNegoRptTable OBJECT-TYPE + SYNTAX SEQUENCE OF SlsNegoRptEntry + PIB-ACCESS report-only + STATUS current + DESCRIPTION + "This class is used by the PEP to convey negotiation + information in RPT message" + ::= { slsReportClasses 1 } + slsNegoRptEntry OBJECT-TYPE + SYNTAX SlsNegoRptEntry + STATUS current + DESCRIPTION + "An instance of this class reports on the SLS negotiation" + ::= { slsNegoRptTable 1 } + SlsNegoRptEntry ::= SEQUENCE { + slsNegoRptPrid InstanceId + slsNegoRptFailRea BITS + } + slsNegoRptPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer that uniquely identifies an instance + of the class" + ::= { slsNEgoRptEntry 1 } + slsNegoRptFailRea OBJECT-TYPE + SYNTAX BITS { + slsNonAccepted (1) + } + STATUS current + DESCRIPTION + "This attribute specifies the reason by which the PEP sends + a 'failure' report + (1) � the PEP does not accept the SLS suggested" + ::= { slsNEgoRptEntry 1 } + + END. diff --git a/pibs/tubs/UMTS-PIB b/pibs/tubs/UMTS-PIB new file mode 100644 index 0000000..8ec4e9f --- /dev/null +++ b/pibs/tubs/UMTS-PIB @@ -0,0 +1,399 @@ +UMTS-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + ibrpib FROM TUBS-SMI + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP + FROM COPS-PR-SPPI + InstanceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination + FROM FRAMEWORK-TC-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + TruthValue, PhysAddress + FROM SNMPv2-TC + zeroDotZero + FROM SNMPv2-SMI + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +uMTSPib MODULE-IDENTITY + SUBJECT-CATEGORIES { umts(1) } + LAST-UPDATED "200111010800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO "Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + Louis-Nicolas Hamer + Nortel Networks + 100 Constellation Crescent + Ottawa, Ontario + Canada, K2G 6J8 + Phone: +1 613 768 3409 + Email: nhamer@nortelnetworks.com" + DESCRIPTION + "A PIB module containing the set of provisioning + classes that are required for support of policies for + UMTS subject-categories." + + ::= { ibrpib 3 } + + +-- +-- The root OID for PRCs in the UMTS PIB +-- + +uMTSCapabilityClasses OBJECT IDENTIFIER ::= { uMTSPib 1 } +uMTSEventPolicyClasses OBJECT IDENTIFIER ::= { uMTSPib 2 } +uMTSEventClasses OBJECT IDENTIFIER ::= { uMTSPib 3 } +uMTSConformance OBJECT IDENTIFIER ::= { uMTSPib 4 } + +-- +-- Capability and Limitation Policy Rule Classes +-- + +-- +-- UMTS Capability Base Table +-- + +uMTSBaseCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSBaseCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSCapabilityClasses 1 } + + + +uMTSBaseCapsEntry OBJECT-TYPE + SYNTAX UMTSBaseCapsEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { uMTSBaseCapsPrid } + UNIQUENESS { uMTSBaseCapsX } + + ::= { uMTSBaseCapsTable 1 } + + +UMTSBaseCapsEntry ::= SEQUENCE { + uMTSBaseCapsPrid InstanceId, + uMTSBaseCapsX Unsigned32 +} + + +uMTSBaseCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSBaseCaps class." + + ::= { uMTSBaseCapsEntry 1 } + + +uMTSBaseCapsX OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "" + + ::= { uMTSBaseCapsEntry 2 } + + +-- +-- Component Limitations Table +-- + +-- This table supports the ability to export information +-- detailing provisioning class/attribute implementation limitations +-- to the policy management system. + +-- +-- UMTS Event Policy Classes +-- + +-- +-- UMTS Event Policy Base Table +-- + +uMTSBaseEventPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSBaseEventPolicyEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSEventPolicyClasses 1 } + + +uMTSBaseEventPolicyEntry OBJECT-TYPE + SYNTAX UMTSBaseEventPolicyEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { uMTSBaseEventPolicyPrid } + UNIQUENESS { uMTSBaseEventPolicyPrid } + + ::= { uMTSBaseEventPolicyTable 1 } + + +UMTSBaseEventPolicyEntry ::= SEQUENCE { + uMTSBaseEventPolicyPrid InstanceId, + uMTSBaseEventPolicyIfName SnmpAdminString, + uMTSBaseEventPolicyRoles RoleCombination +} + + +uMTSBaseEventPolicyPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSBaseCaps class." + + ::= { uMTSBaseEventPolicyEntry 1 } + + +uMTSBaseEventPolicyIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this event handler + provisioning entry applies. + The interface capability name specified by this attribute + must exist in the frwkIfCapSetTable (of the Framework PIB) + prior to association with an instance of this class." + ::= { uMTSBaseEventPolicyEntry 2 } + + +uMTSBaseEventPolicyRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this entry applies, specified in + terms of roles. + There must exist an entry in the frwkIfCapSetRoleComboTable + (of the Framework PIB) specifying this role combination, + together with the interface capability set specified by + uMTSBaseEventPolicyIfName, prior to association with an + instance of this class." + ::= { uMTSBaseEventPolicyEntry 3 } + + + +-- +-- UMTS PDP Context Event Handler Provisioning Table +-- + +uMTSPdpContextPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextPolicyEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSEventPolicyClasses 2 } + + +uMTSPdpContextPolicyEntry OBJECT-TYPE + SYNTAX UMTSPdpContextPolicyEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + EXTENDS { uMTSBaseEventPolicyEntry } + UNIQUENESS { uMTSPdpContextPolicyEnable, + uMTSPdpContextPolicyFlowIds + } + ::= { uMTSPdpContextPolicyTable 1 } + + +UMTSPdpContextPolicyEntry ::= SEQUENCE { + uMTSPdpContextPolicyEnable Integer32, + uMTSPdpContextPolicyFlowIds Unsigned32 +} + + +uMTSPdpContextPolicyEnable OBJECT-TYPE + SYNTAX INTEGER { + disable(1), + enable(2) + } + STATUS current + DESCRIPTION + "Controls the usage of UMTS PDP Context Events to trigger + requests to PCF on the go interface." + DEFVAL { disable } + ::= { uMTSPdpContextPolicyEntry 1 } + + +uMTSPdpContextPolicyFlowIds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indication of the maximum number of FlowIds a Token can + be associated with + The value of zero indicates policy control does not impose + any limit. The limitation is based on GGSN capabilities." + DEFVAL { 0 } + ::= { uMTSPdpContextPolicyEntry 2 } + + + +-- +-- RSVP Event Handler Provisioning Table +-- + +-- +-- UMTS Event Classes +-- + + +-- +-- UMTS PDP Context Event Table +-- + +uMTSPdpContextEventTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextEventEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + ::= { uMTSEventClasses 1 } + + +uMTSPdpContextEventEntry OBJECT-TYPE + SYNTAX UMTSPdpContextEventEntry + STATUS current + DESCRIPTION + "" + PIB-INDEX { uMTSPdpContextEventPrid } + UNIQUENESS { uMTSPdpContextEventToken } + ::= { uMTSPdpContextEventTable 1 } + + +UMTSPdpContextEventEntry ::= SEQUENCE { + uMTSPdpContextEventPrid InstanceId, + uMTSPdpContextEventToken OCTET STRING, + uMTSPdpContextEventFlowIds Prid +} + + +uMTSPdpContextEventPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSPdpContextEvent class." + + ::= { uMTSPdpContextEventEntry 1 } + + +uMTSPdpContextEventToken OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The token associated with this PDP Context event." + ::= { uMTSPdpContextEventEntry 2 } + + +uMTSPdpContextEventFlowIds OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References the FlowIds associated with the Token indicated + in this PDP Context event. + This is the anchor of a list of uMTSPdpContextFlowIdEntry + Instances. + A value of zeroDotZero indicates an empty list." + DEFVAL { zeroDotZero } + ::= { uMTSPdpContextEventEntry 3 } + + + +-- +-- UMTS PDP Context FlowID Table +-- + +uMTSPdpContextFlowIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextFlowIdEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + ::= { uMTSEventClasses 2 } + + +uMTSPdpContextFlowIdEntry OBJECT-TYPE + SYNTAX UMTSPdpContextFlowIdEntry + STATUS current + DESCRIPTION + "" + PIB-INDEX { uMTSPdpContextFlowIdPrid } + UNIQUENESS { uMTSPdpContextFlowIdId } + ::= { uMTSPdpContextFlowIdTable 1 } + + +UMTSPdpContextFlowIdEntry ::= SEQUENCE { + uMTSPdpContextFlowIdPrid InstanceId, + uMTSPdpContextFlowIdId OCTET STRING, + uMTSPdpContextFlowIdNext Prid +} + + +uMTSPdpContextFlowIdPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSPdpContextFlowId class." + + ::= { uMTSPdpContextFlowIdEntry 1 } + + +uMTSPdpContextFlowIdId OBJECT-TYPE + SYNTAX OCTET STRING + STATUS current + DESCRIPTION + "The FlowId itself." + ::= { uMTSPdpContextFlowIdEntry 2 } + + +uMTSPdpContextFlowIdNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References the next FlowId in the list associated with the + same Token of a PDP Context event. + This points to a list of uMTSPdpContextFlowIdEntry + Instances. + A value of zeroDotZero indicates end of the list." + DEFVAL { zeroDotZero } + ::= { uMTSPdpContextFlowIdEntry 3 } + +-- +-- Conformance Section +-- + +uMTSCompliances OBJECT IDENTIFIER ::= { uMTSConformance 1 } +uMTSGroups OBJECT IDENTIFIER ::= { uMTSConformance 2 } + + + +END diff --git a/pibs/tubs/UMTS-PIB-orig b/pibs/tubs/UMTS-PIB-orig new file mode 100644 index 0000000..09f0dbf --- /dev/null +++ b/pibs/tubs/UMTS-PIB-orig @@ -0,0 +1,396 @@ +UMTS-PIB PIB-DEFINITIONS ::= BEGIN + +IMPORTS + Unsigned32, Integer32, MODULE-IDENTITY, + MODULE-COMPLIANCE, OBJECT-TYPE, OBJECT-GROUP + FROM COPS-PR-SPPI + InstanceId, Prid + FROM COPS-PR-SPPI-TC + RoleCombination, PrcIdentifier + FROM FRAMEWORK-ROLE-PIB + InetAddress, InetAddressType + FROM INET-ADDRESS-MIB + TruthValue, PhysAddress + FROM SNMPv2-TC + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +uMTSPib MODULE-IDENTITY + SUBJECT-CATEGORIES { umts } + LAST-UPDATED "200111010800Z" + ORGANIZATION "IETF RAP WG" + CONTACT-INFO "Kwok Ho Chan + Nortel Networks + 600 Technology Park Drive + Billerica, MA 01821 USA + Phone: +1 978 288 8175 + Email: khchan@nortelnetworks.com + + Louis-Nicolas Hamer + Nortel Networks + 100 Constellation Crescent + Ottawa, Ontario + Canada, K2G 6J8 + Phone: +1 613 768 3409 + Email: nhamer@nortelnetworks.com" + DESCRIPTION + "A PIB module containing the set of provisioning + classes that are required for support of policies for + UMTS subject-categories." + + ::= { tbd } + + +-- +-- The root OID for PRCs in the UMTS PIB +-- + +uMTSCapabilityClasses OBJECT IDENTIFIER ::= { uMTSPib 1 } +uMTSEventPolicyClasses OBJECT IDENTIFIER ::= { uMTSPib 2 } +uMTSEventClasses OBJECT IDENTIFIER ::= { uMTSPib 3 } +uMTSConformance OBJECT IDENTIFIER ::= { uMTSPib 4 } + +-- +-- Capability and Limitation Policy Rule Classes +-- + +-- +-- UMTS Capability Base Table +-- + +uMTSBaseCapsTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSBaseCapsEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSCapabilityClasses 1 } + + + +uMTSBaseCapsEntry OBJECT-TYPE + SYNTAX UMTSBaseCapsEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { uMTSBaseCapsPrid } + UNIQUENESS { uMTSBaseCaps } + + ::= { uMTSBaseCapsTable 1 } + + +UMTSBaseCapsEntry ::= SEQUENCE { + uMTSBaseCapsPrid InstanceId, + uMTSBaseCapsX Unsigned32 +} + + +uMTSBaseCapsPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSBaseCaps class." + + ::= { uMTSBaseCapsEntry 1 } + + +uMTSBaseCapsX OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "" + + ::= { uMTSBaseCapsEntry 2 } + + +-- +-- Component Limitations Table +-- + +-- This table supports the ability to export information +-- detailing provisioning class/attribute implementation limitations +-- to the policy management system. + +-- +-- UMTS Event Policy Classes +-- + +-- +-- UMTS Event Policy Base Table +-- + +uMTSBaseEventPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSBaseEventPolicyEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSEventPolicyClasses 1 } + + +uMTSBaseEventPolicyEntry OBJECT-TYPE + SYNTAX UMTSBaseEventPolicyEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + PIB-INDEX { uMTSBaseEventPolicyPrid } + UNIQUENESS { uMTSBaseEventPolicyPrc } + + ::= { uMTSBaseEventPolicyTable 1 } + + +UMTSBaseEventPolicyEntry ::= SEQUENCE { + uMTSBaseEventPolicyPrid InstanceId, + uMTSBaseEventPolicyIfName SnmpAdminString, + uMTSBaseEventPolicyRoles RoleCombination +} + + +uMTSBaseEventPolicyPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSBaseCaps class." + + ::= { uMTSBaseEventPolicyEntry 1 } + + +uMTSBaseEventPolicyIfName OBJECT-TYPE + SYNTAX SnmpAdminString + STATUS current + DESCRIPTION + "The interface capability set to which this event handler + provisioning entry applies. + The interface capability name specified by this attribute + must exist in the frwkIfCapSetTable (of the Framework PIB) + prior to association with an instance of this class." + ::= { uMTSBaseEventPolicyEntry 2 } + + +uMTSBaseEventPolicyRoles OBJECT-TYPE + SYNTAX RoleCombination + STATUS current + DESCRIPTION + "The interfaces to which this entry applies, specified in + terms of roles. + There must exist an entry in the frwkIfCapSetRoleComboTable + (of the Framework PIB) specifying this role combination, + together with the interface capability set specified by + uMTSBaseEventPolicyIfName, prior to association with an + instance of this class." + ::= { uMTSBaseEventPolicyEntry 3 } + + + +-- +-- UMTS PDP Context Event Handler Provisioning Table +-- + +uMTSPdpContextPolicyTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextPolicyEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + + ::= { uMTSEventPolicyClasses 2 } + + +uMTSPdpContextPolicyEntry OBJECT-TYPE + SYNTAX UMTSPdpContextPolicyEntry + STATUS current + DESCRIPTION + "An instance of the uMTSBaseCaps class that identifies a + specific PRC and associated attributes as supported + by the device." + + EXTENDS { uMTBaseEventPolicyEntry } + UNIQUENESS { uMTSPdpContextPolicyEnable, + uMTSPdpContextPolicyFlowIds + } + ::= { uMTSPdpContextPolicyTable 1 } + + +UMTSPdpContextPolicyEntry ::= SEQUENCE { + uMTSPdpContextPolicyEnable Integer32, + uMTSPdpContextPolicyFlowIds Unsigned32 +} + + +uMTSPdpContextPolicyEnable OBJECT-TYPE + SYNTAX Integer32 { + disable(1), + enable(2) + } + STATUS current + DESCRIPTION + "Controls the usage of UMTS PDP Context Events to trigger + requests to PCF on the go interface." + DEFVAL { disable } + ::= { uMTSPdpContextPolicyEntry 1 } + + +uMTSPdpContextPolicyFlowIds OBJECT-TYPE + SYNTAX Unsigned32 + STATUS current + DESCRIPTION + "Indication of the maximum number of FlowIds a Token can + be associated with + The value of zero indicates policy control does not impose + any limit. The limitation is based on GGSN capabilities." + DEFVAL { 0 } + ::= { uMTSPdpContextPolicyEntry 2 } + + + +-- +-- RSVP Event Handler Provisioning Table +-- + +-- +-- UMTS Event Classes +-- + + +-- +-- UMTS PDP Context Event Table +-- + +uMTSPdpContextEventTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextEventEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + ::= { uMTSEventClasses 1 } + + +uMTSPdpContextEventEntry OBJECT-TYPE + SYNTAX UMTSPdpContextEventEntry + STATUS current + DESCRIPTION + "" + PIB-INDEX { uMTSPdpContextEventPrid } + UNIQUENESS { uMTSPdpContextEventToken } + ::= { uMTSPdpContextEventTable 1 } + + +UMTSPdpContextEventEntry ::= SEQUENCE { + uMTSPdpContextEventPrid InstanceId, + uMTSPdpContextEventToken OctetString, + uMTSPdpContextEventFlowIds Prid +} + + +uMTSPdpContextEventPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSPdpContextEvent class." + + ::= { uMTSPdpContextEventEntry 1 } + + +uMTSPdpContextEventToken OBJECT-TYPE + SYNTAX OctetString + STATUS current + DESCRIPTION + "The token associated with this PDP Context event." + ::= { uMTSPdpContextEventEntry 2 } + + +uMTSPdpContextEventFlowIds OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References the FlowIds associated with the Token indicated + in this PDP Context event. + This is the anchor of a list of uMTSPdpContextFlowIdEntry + Instances. + A value of zeroDotZero indicates an empty list." + DEFVAL { zeroDotZero } + ::= { uMTSPdpContextEventEntry 3 } + + + +-- +-- UMTS PDP Context FlowID Table +-- + +uMTSPdpContextFlowIdTable OBJECT-TYPE + SYNTAX SEQUENCE OF UMTSPdpContextFlowIdEntry + PIB-ACCESS notify + STATUS current + DESCRIPTION + "" + ::= { uMTSEventClasses 2 } + + +uMTSPdpContextFlowIdEntry OBJECT-TYPE + SYNTAX UMTSPdpContextFlowIdEntry + STATUS current + DESCRIPTION + "" + PIB-INDEX { uMTSPdpContextFlowIdPrid } + UNIQUENESS { uMTPdpContextFlowIdX } + ::= { uMTSPdpContextFlowIdTable 1 } + + +UMTSPdpContextFlowIdEntry ::= SEQUENCE { + uMTSPdpContextFlowIdPrid InstanceId, + uMTSPdpContextFlowIdId OctetString, + uMTSPdpContextFlowIdNext Prid +} + + +uMTSPdpContextFlowIdPrid OBJECT-TYPE + SYNTAX InstanceId + STATUS current + DESCRIPTION + "An arbitrary integer index that uniquely identifies an + instance of the uMTSPdpContextFlowId class." + + ::= { uMTSPdpContextFlowIdEntry 1 } + + +uMTSPdpContextFlowIdId OBJECT-TYPE + SYNTAX OctetString + STATUS current + DESCRIPTION + "The FlowId itself." + ::= { uMTSPdpContextFlowIdEntry 2 } + + +uMTSPdpContextFlowIdsNext OBJECT-TYPE + SYNTAX Prid + STATUS current + DESCRIPTION + "References the next FlowId in the list associated with the + same Token of a PDP Context event. + This points to a list of uMTSPdpContextFlowIdEntry + Instances. + A value of zeroDotZero indicates end of the list." + DEFVAL { zeroDotZero } + ::= { uMTSPdpContextFlowIdEntry 3 } + +-- +-- Conformance Section +-- + +uMTSCompliances OBJECT IDENTIFIER ::= { uMTSConformance 1 } +uMTSGroups OBJECT IDENTIFIER ::= { uMTSConformance 2 } + + + +END diff --git a/smi.conf-example b/smi.conf-example new file mode 100644 index 0000000..2272fc8 --- /dev/null +++ b/smi.conf-example @@ -0,0 +1,50 @@ +# +# smi.conf - Global/User SMI configuration file. (EXAMPLE) +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: smi.conf-example 1134 2001-06-11 09:59:13Z strauss $ +# +# +# See smi_config(3) for detailed information on configuration files. +# + +# Extend (note the semicolon) the libsmi default module search path. +# (On Windows systems, use `;' instead of `:', and `\' instead of `/'.) +path :/usr/local/share/mibs/sun +path :/usr/local/share/mibs/cisco + +# Add a private directory. +path :/home/strauss/lib/mibs + +# EXPERIMENTAL: Add a caching method (works only on UNIX systems). +# NOTE: the cache directory must exist and permissions must be +# handled appropriately. A simple but insecure way is to apply +# a tmp flag to the directory (chmod 1777 /usr/local/share/mibs/cache). +#cache /usr/local/share/mibs/cache /usr/local/bin/smicache -d /usr/local/share/mibs/cache -p http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/ + +# Don't show any errors by default. +level 0 + +# Preload some basic SMIv2 modules. +load SNMPv2-SMI +load SNMPv2-TC +load SNMPv2-CONF + +# Make smilint shout loud to report all errors and warnings. +smilint: level 9 + +# But please don't claim about any names longer than 32 chars. +# (note: this is the prefix of errors `namelength-32-module, +# -type, -object, -enumeration, and -bit) +smilint: hide namelength-32 + +# Preloading some more modules for special applications. +tcpdump: load DISMAN-SCRIPT-MIB +tcpdump: load IF-MIB + +smiquery: load IF-MIB + diff --git a/test/Makefile.am b/test/Makefile.am new file mode 100644 index 0000000..fcaf9e7 --- /dev/null +++ b/test/Makefile.am @@ -0,0 +1,52 @@ +# +# Makefile.am -- +# +# Template to generate test Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7381 2007-10-19 22:33:28Z schoenw $ +# + +TESTMIBTOPDIR = ../../mibs +TESTMIBDIR = $(TESTMIBTOPDIR)/ietf:$(TESTMIBTOPDIR)/iana:$(TESTMIBTOPDIR)/irtf:$(TESTMIBTOPDIR)/site:$(TESTMIBTOPDIR)/tubs +TESTMIBS = SNMPv2-MIB IF-MIB MAU-MIB RMON2-MIB + +# smilint-smiv2.test has to be the first test. It initializes the +# sync-dumps script that is extended by subsequent tests. +TESTS = smilint-smiv2.test \ + smidump-smiv1.test \ + smidump-smiv2.test \ + smidump-sming.test \ + smidump-yang.test \ + smidump-mosy.test \ + smidump-tree.test \ + smidump-types.test \ + smidump-imports.test \ + smidump-identifiers.test \ + smidump-metrics.test \ + smidump-xml.test \ + smidump-python.test \ + smidump-cm.test \ + smidump-corba.test \ + smidump-jax.test \ + smidump-netsnmp.test \ + smidump-orig-smiv2.test \ + smidump-smiv2-smiv2.test \ + parser.test \ + smidiff.test + +TESTS_ENVIRONMENT = SMIPATH="$(TESTMIBDIR)" TESTMIBS="$(TESTMIBS)" + +EXTRA_DIST = $(TESTS) + +SMIDIFFTESTS = $(shell ls -1d smidiff/* | egrep -v 'CVS|Makefile') + +SUBDIRS = mibs dumps smidiff + +clean-local: + rm -rf *.out smidiff/*.diffdiff smidiff/*.result sync-dumps + diff --git a/test/Makefile.in b/test/Makefile.in new file mode 100644 index 0000000..94825c9 --- /dev/null +++ b/test/Makefile.in @@ -0,0 +1,685 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate test Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7381 2007-10-19 22:33:28Z schoenw $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/parser.test.in $(srcdir)/smidiff.test.in \ + $(srcdir)/smidump-cm.test.in $(srcdir)/smidump-corba.test.in \ + $(srcdir)/smidump-identifiers.test.in \ + $(srcdir)/smidump-imports.test.in \ + $(srcdir)/smidump-jax.test.in \ + $(srcdir)/smidump-metrics.test.in \ + $(srcdir)/smidump-mosy.test.in \ + $(srcdir)/smidump-netsnmp.test.in \ + $(srcdir)/smidump-orig-smiv2.test.in \ + $(srcdir)/smidump-python.test.in \ + $(srcdir)/smidump-sming.test.in \ + $(srcdir)/smidump-smiv1.test.in \ + $(srcdir)/smidump-smiv2-smiv2.test.in \ + $(srcdir)/smidump-smiv2.test.in $(srcdir)/smidump-tree.test.in \ + $(srcdir)/smidump-types.test.in $(srcdir)/smidump-xml.test.in \ + $(srcdir)/smidump-yang.test.in $(srcdir)/smilint-smiv2.test.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = parser.test smidump-corba.test smidump-jax.test \ + smidump-netsnmp.test smidump-imports.test smidump-mosy.test \ + smidump-orig-smiv2.test smidump-sming.test smidump-yang.test \ + smidump-smiv1.test smidump-smiv2-smiv2.test smidump-smiv2.test \ + smidump-tree.test smidump-types.test smidump-identifiers.test \ + smidump-metrics.test smidump-xml.test smidump-cm.test \ + smidump-python.test smilint-smiv2.test smidiff.test +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +TESTMIBTOPDIR = ../../mibs +TESTMIBDIR = $(TESTMIBTOPDIR)/ietf:$(TESTMIBTOPDIR)/iana:$(TESTMIBTOPDIR)/irtf:$(TESTMIBTOPDIR)/site:$(TESTMIBTOPDIR)/tubs +TESTMIBS = SNMPv2-MIB IF-MIB MAU-MIB RMON2-MIB + +# smilint-smiv2.test has to be the first test. It initializes the +# sync-dumps script that is extended by subsequent tests. +TESTS = smilint-smiv2.test \ + smidump-smiv1.test \ + smidump-smiv2.test \ + smidump-sming.test \ + smidump-yang.test \ + smidump-mosy.test \ + smidump-tree.test \ + smidump-types.test \ + smidump-imports.test \ + smidump-identifiers.test \ + smidump-metrics.test \ + smidump-xml.test \ + smidump-python.test \ + smidump-cm.test \ + smidump-corba.test \ + smidump-jax.test \ + smidump-netsnmp.test \ + smidump-orig-smiv2.test \ + smidump-smiv2-smiv2.test \ + parser.test \ + smidiff.test + +TESTS_ENVIRONMENT = SMIPATH="$(TESTMIBDIR)" TESTMIBS="$(TESTMIBS)" +EXTRA_DIST = $(TESTS) +SMIDIFFTESTS = $(shell ls -1d smidiff/* | egrep -v 'CVS|Makefile') +SUBDIRS = mibs dumps smidiff +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +parser.test: $(top_builddir)/config.status $(srcdir)/parser.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-corba.test: $(top_builddir)/config.status $(srcdir)/smidump-corba.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-jax.test: $(top_builddir)/config.status $(srcdir)/smidump-jax.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-netsnmp.test: $(top_builddir)/config.status $(srcdir)/smidump-netsnmp.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-imports.test: $(top_builddir)/config.status $(srcdir)/smidump-imports.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-mosy.test: $(top_builddir)/config.status $(srcdir)/smidump-mosy.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-orig-smiv2.test: $(top_builddir)/config.status $(srcdir)/smidump-orig-smiv2.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-sming.test: $(top_builddir)/config.status $(srcdir)/smidump-sming.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-yang.test: $(top_builddir)/config.status $(srcdir)/smidump-yang.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-smiv1.test: $(top_builddir)/config.status $(srcdir)/smidump-smiv1.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-smiv2-smiv2.test: $(top_builddir)/config.status $(srcdir)/smidump-smiv2-smiv2.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-smiv2.test: $(top_builddir)/config.status $(srcdir)/smidump-smiv2.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-tree.test: $(top_builddir)/config.status $(srcdir)/smidump-tree.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-types.test: $(top_builddir)/config.status $(srcdir)/smidump-types.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-identifiers.test: $(top_builddir)/config.status $(srcdir)/smidump-identifiers.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-metrics.test: $(top_builddir)/config.status $(srcdir)/smidump-metrics.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-xml.test: $(top_builddir)/config.status $(srcdir)/smidump-xml.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-cm.test: $(top_builddir)/config.status $(srcdir)/smidump-cm.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump-python.test: $(top_builddir)/config.status $(srcdir)/smidump-python.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smilint-smiv2.test: $(top_builddir)/config.status $(srcdir)/smilint-smiv2.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidiff.test: $(top_builddir)/config.status $(srcdir)/smidiff.test.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *$$ws$$tst$$ws*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *$$ws$$tst$$ws*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-TESTS check-am clean clean-generic \ + clean-libtool clean-local ctags ctags-recursive distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am + + +clean-local: + rm -rf *.out smidiff/*.diffdiff smidiff/*.result sync-dumps +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/Makefile.am b/test/dumps/Makefile.am new file mode 100644 index 0000000..3d5a0c9 --- /dev/null +++ b/test/dumps/Makefile.am @@ -0,0 +1,16 @@ +# +# Makefile.am -- +# +# Template to generate test/dumps Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7381 2007-10-19 22:33:28Z schoenw $ +# + +SUBDIRS = corba imports jax mosy orig-smiv2 smilint-smiv2 \ + sming smiv1 smiv2 smiv2-smiv2 tree types yang \ + identifiers metrics xml cm python netsnmp diff --git a/test/dumps/Makefile.in b/test/dumps/Makefile.in new file mode 100644 index 0000000..d2ac2eb --- /dev/null +++ b/test/dumps/Makefile.in @@ -0,0 +1,516 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate test/dumps Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 7381 2007-10-19 22:33:28Z schoenw $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = corba imports jax mosy orig-smiv2 smilint-smiv2 \ + sming smiv1 smiv2 smiv2-smiv2 tree types yang \ + identifiers metrics xml cm python netsnmp + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/cm/IF-MIB b/test/dumps/cm/IF-MIB new file mode 100644 index 0000000..d7dd821 --- /dev/null +++ b/test/dumps/cm/IF-MIB @@ -0,0 +1,1631 @@ + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Conceptual model of IF-MIB - generated by smidump 0.4.3# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifTableLastChange# + + + #TimeTicks# + + + + + + + + + + + + + + + + + #ifIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifIndex# + + + #InterfaceIndex# + + + + + + + + + + + + + + + + + #ifDescr# + + + #DisplayString# + + + + + + + + + + + + + + + + + #ifType# + + + #IANAifType# + + + + + + + + + + + + + + + + + #ifMtu# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifSpeed# + + + #Gauge32# + + + + + + + + + + + + + + + + + #ifPhysAddress# + + + #PhysAddress# + + + + + + + + + + + + + + + + + #ifAdminStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifOperStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifLastChange# + + + #TimeTicks# + + + + + + + + + + + + + + + + + #ifInOctets# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInUcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInNUcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInDiscards# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInErrors# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInUnknownProtos# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutOctets# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutUcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutNUcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutDiscards# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutErrors# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutQLen# + + + #Gauge32# + + + + + + + + + + + + + + + + + #ifSpecific# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifXEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifName# + + + #DisplayString# + + + + + + + + + + + + + + + + + #ifInMulticastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifInBroadcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutMulticastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifOutBroadcastPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifHCInOctets# + + + #Counter64# + + + + + + + + + + + + + + + + + #ifHCInUcastPkts# + + + #Counter64# + + + + + + + + + + + + + + + + + #ifHCInMulticastPkts# + + + #Counter64# + + + + + + + + + + + + + + + + + #ifHCInBroadcastPkts# + + + #Counter64# + + + + + + + + + + + + + + + + + #ifHCOutOctets# + + + #Counter64# + + + + + + + + + + + + + + + + + #ifHCOutUcastPkts# + + + #Counter64# + + + + + + + + + + + + + + + + + #ifHCOutMulticastPkts# + + + #Counter64# + + + + + + + + + + + + + + + + + #ifHCOutBroadcastPkts# + + + #Counter64# + + + + + + + + + + + + + + + + + #ifLinkUpDownTrapEnable# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifHighSpeed# + + + #Gauge32# + + + + + + + + + + + + + + + + + #ifPromiscuousMode# + + + #TruthValue# + + + + + + + + + + + + + + + + + #ifConnectorPresent# + + + #TruthValue# + + + + + + + + + + + + + + + + + #ifAlias# + + + #DisplayString# + + + + + + + + + + + + + + + + + #ifCounterDiscontinuityTime# + + + #TimeStamp# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #augments# + + + + + + + + + + + #1# + + + + + + + + + + + + + + #1# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifRcvAddressEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifRcvAddressAddress# + + + #PhysAddress {index}# + + + + + + + + + + + + + + + + + #ifRcvAddressAddress# + + + #PhysAddress# + + + + + + + + + + + + + + + + + #ifRcvAddressStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + #ifRcvAddressType# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifStackEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifStackLastChange# + + + #TimeTicks# + + + + + + + + + + + + + + + + + #ifStackHigherLayer# + + + #InterfaceIndexOrZero {index}# + + + + + + + + + + + + + + + + + #ifStackLowerLayer# + + + #InterfaceIndexOrZero {index}# + + + + + + + + + + + + + + + + + #ifStackHigherLayer# + + + #InterfaceIndexOrZero# + + + + + + + + + + + + + + + + + #ifStackLowerLayer# + + + #InterfaceIndexOrZero# + + + + + + + + + + + + + + + + + #ifStackStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #interfaces# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifNumber# + + + #Integer32# + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/dumps/cm/MAU-MIB b/test/dumps/cm/MAU-MIB new file mode 100644 index 0000000..0d97284 --- /dev/null +++ b/test/dumps/cm/MAU-MIB @@ -0,0 +1,1795 @@ + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Conceptual model of MAU-MIB - generated by smidump 0.4.5# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #rpMauEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #rpMauGroupIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauPortIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauGroupIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #rpMauPortIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #rpMauIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #rpMauType# + + + #AutonomousType# + + + + + + + + + + + + + + + + + #rpMauStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #rpMauMediaAvailable# + + + #IANAifMauMediaAvailable# + + + + + + + + + + + + + + + + + #rpMauMediaAvailableStateExits# + + + #Counter32# + + + + + + + + + + + + + + + + + #rpMauJabberState# + + + #Enumeration# + + + + + + + + + + + + + + + + + #rpMauJabberingStateEnters# + + + #Counter32# + + + + + + + + + + + + + + + + + #rpMauFalseCarriers# + + + #Counter32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #rpJackEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #rpMauGroupIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauPortIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpJackIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #rpJackIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #rpJackType# + + + #IANAifJackType# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifMauEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifMauIfIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #ifMauIfIndex# + + + #InterfaceIndex# + + + + + + + + + + + + + + + + + #ifMauIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauType# + + + #AutonomousType# + + + + + + + + + + + + + + + + + #ifMauStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauMediaAvailable# + + + #IANAifMauMediaAvailable# + + + + + + + + + + + + + + + + + #ifMauMediaAvailableStateExits# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifMauJabberState# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauJabberingStateEnters# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifMauFalseCarriers# + + + #Counter32# + + + + + + + + + + + + + + + + + #ifMauTypeList# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauDefaultType# + + + #AutonomousType# + + + + + + + + + + + + + + + + + #ifMauAutoNegSupported# + + + #TruthValue# + + + + + + + + + + + + + + + + + #ifMauTypeListBits# + + + #IANAifMauTypeListBits# + + + + + + + + + + + + + + + + + #ifMauHCFalseCarriers# + + + #Counter64# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifJackEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifMauIfIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #ifJackIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #ifJackIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifJackType# + + + #IANAifJackType# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #ifMauAutoNegEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #ifMauIfIndex# + + + #InterfaceIndex {index}# + + + + + + + + + + + + + + + + + #ifMauIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #ifMauAutoNegAdminStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegRemoteSignaling# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegConfig# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapability# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapAdvertised# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapReceived# + + + #Integer32# + + + + + + + + + + + + + + + + + #ifMauAutoNegRestart# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapabilityBits# + + + #IANAifMauAutoNegCapBits# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapAdvertisedBits# + + + #IANAifMauAutoNegCapBits# + + + + + + + + + + + + + + + + + #ifMauAutoNegCapReceivedBits# + + + #IANAifMauAutoNegCapBits# + + + + + + + + + + + + + + + + + #ifMauAutoNegRemoteFaultAdvertised# + + + #Enumeration# + + + + + + + + + + + + + + + + + #ifMauAutoNegRemoteFaultReceived# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #sparses# + + + + + + + + + + + #1# + + + + + + + + + + + + + + #0..1# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + diff --git a/test/dumps/cm/Makefile.am b/test/dumps/cm/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/cm/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/cm/Makefile.in b/test/dumps/cm/Makefile.in new file mode 100644 index 0000000..d40dbd0 --- /dev/null +++ b/test/dumps/cm/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/cm +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/cm/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/cm/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/cm/RMON2-MIB b/test/dumps/cm/RMON2-MIB new file mode 100644 index 0000000..30ae8dd --- /dev/null +++ b/test/dumps/cm/RMON2-MIB @@ -0,0 +1,7067 @@ + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Conceptual model of RMON2-MIB - generated by smidump 0.4.5# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #hlHostControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlHostControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #hlHostControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlHostControlDataSource# + + + #DataSource# + + + + + + + + + + + + + + + + + #hlHostControlNlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlNlInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlNlDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlNlMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlHostControlAlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlAlInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlAlDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlHostControlAlMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlHostControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #hlHostControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlHostEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlHostControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlHostTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlHostAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlHostTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #nlHostAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlHostInPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostOutPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostInOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostOutOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostOutMacNonUnicastPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlHostCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alHostEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlHostControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alHostTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlHostAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alHostTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #alHostInPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alHostOutPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alHostInOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alHostOutOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alHostCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #addressMapEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #addressMapTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #addressMapNetworkAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #addressMapSource# + + + #ObjectIdentifier {index}# + + + + + + + + + + + + + + + + + #addressMapTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #addressMapNetworkAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #addressMapSource# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #addressMapPhysicalAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #addressMapLastChange# + + + #TimeStamp# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #hlMatrixControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlMatrixControlDataSource# + + + #DataSource# + + + + + + + + + + + + + + + + + #hlMatrixControlNlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlNlInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlNlDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlNlMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlMatrixControlAlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlAlInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlAlDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #hlMatrixControlAlMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #hlMatrixControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #hlMatrixControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlMatrixSDEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDSourceAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDDestAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #nlMatrixSDSourceAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixSDDestAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixSDPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlMatrixSDOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlMatrixSDCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlMatrixDSEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSDestAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSSourceAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #nlMatrixDSSourceAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixDSDestAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixDSPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlMatrixDSOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #nlMatrixDSCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alMatrixSDEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixSDTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDSourceAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixSDDestAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixSDTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #alMatrixSDPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alMatrixSDOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alMatrixSDCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alMatrixDSEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hlMatrixControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixDSTimeMark# + + + #TimeFilter {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSDestAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #nlMatrixDSSourceAddress# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixDSTimeMark# + + + #TimeFilter# + + + + + + + + + + + + + + + + + #alMatrixDSPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alMatrixDSOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #alMatrixDSCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlMatrixTopNControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #nlMatrixTopNControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlMatrixIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlRateBase# + + + #Enumeration# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlTimeRemaining# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlGeneratedReports# + + + #Counter32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlDuration# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlRequestedSize# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlGrantedSize# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlStartTime# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #nlMatrixTopNControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #nlMatrixTopNEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #nlMatrixTopNControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixTopNIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #nlMatrixTopNIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNProtocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #nlMatrixTopNSourceAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixTopNDestAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #nlMatrixTopNPktRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #nlMatrixTopNReversePktRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #nlMatrixTopNOctetRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #nlMatrixTopNReverseOctetRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alMatrixTopNControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #alMatrixTopNControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixTopNControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlMatrixIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlRateBase# + + + #Enumeration# + + + + + + + + + + + + + + + + + #alMatrixTopNControlTimeRemaining# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlGeneratedReports# + + + #Counter32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlDuration# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlRequestedSize# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlGrantedSize# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNControlStartTime# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #alMatrixTopNControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #alMatrixTopNControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #alMatrixTopNEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #alMatrixTopNControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixTopNIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #alMatrixTopNIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNProtocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNSourceAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #alMatrixTopNDestAddress# + + + #OctetString# + + + + + + + + + + + + + + + + + #alMatrixTopNAppProtocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #alMatrixTopNPktRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #alMatrixTopNReversePktRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #alMatrixTopNOctetRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + #alMatrixTopNReverseOctetRate# + + + #Gauge32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #usrHistoryControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #usrHistoryControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistoryControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlObjects# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlBucketsRequested# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlBucketsGranted# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlInterval# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #usrHistoryControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #usrHistoryObjectEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #usrHistoryControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistoryObjectIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistoryObjectIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryObjectVariable# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #usrHistoryObjectSampleType# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #usrHistoryEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #usrHistoryControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistorySampleIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistoryObjectIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #usrHistorySampleIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #usrHistoryIntervalStart# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #usrHistoryIntervalEnd# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #usrHistoryAbsValue# + + + #Gauge32# + + + + + + + + + + + + + + + + + #usrHistoryValStatus# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #expands# + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #protocolDirEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #protocolDirLastChange# + + + #TimeStamp# + + + + + + + + + + + + + + + + + #protocolDirID# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirParameters# + + + #OctetString {index}# + + + + + + + + + + + + + + + + + #protocolDirID# + + + #OctetString# + + + + + + + + + + + + + + + + + #protocolDirParameters# + + + #OctetString# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #protocolDirDescr# + + + #DisplayString# + + + + + + + + + + + + + + + + + #protocolDirType# + + + #Bits# + + + + + + + + + + + + + + + + + #protocolDirAddressMapConfig# + + + #Enumeration# + + + + + + + + + + + + + + + + + #protocolDirHostConfig# + + + #Enumeration# + + + + + + + + + + + + + + + + + #protocolDirMatrixConfig# + + + #Enumeration# + + + + + + + + + + + + + + + + + #protocolDirOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #protocolDirStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #protocolDistControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #protocolDistControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #protocolDistControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #protocolDistControlDataSource# + + + #DataSource# + + + + + + + + + + + + + + + + + #protocolDistControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #protocolDistControlCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + #protocolDistControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #protocolDistControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #protocolDistStatsEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #protocolDistControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #protocolDirLocalIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #protocolDistStatsPkts# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + #protocolDistStatsOctets# + + + #ZeroBasedCounter32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #addressMapControlEntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #addressMapInserts# + + + #Counter32# + + + + + + + + + + + + + + + + + #addressMapDeletes# + + + #Counter32# + + + + + + + + + + + + + + + + + #addressMapMaxDesiredEntries# + + + #Integer32# + + + + + + + + + + + + + + + + + #addressMapControlIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #addressMapControlIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #addressMapControlDataSource# + + + #DataSource# + + + + + + + + + + + + + + + + + #addressMapControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #addressMapControlOwner# + + + #OwnerString# + + + + + + + + + + + + + + + + + #addressMapControlStatus# + + + #RowStatus# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #etherStats2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #etherStatsDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #etherStatsCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #historyControl2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #historyControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #hostControl2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #hostControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #hostControlCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #matrixControl2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #matrixControlDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #matrixControlCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #channel2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #channelDroppedFrames# + + + #Counter32# + + + + + + + + + + + + + + + + + #channelCreateTime# + + + #LastCreateTime# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #filter2Entry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #filterProtocolDirDataLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #filterProtocolDirLocalIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #probeConfig# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #probeCapabilities# + + + #Bits# + + + + + + + + + + + + + + + + + #probeSoftwareRev# + + + #DisplayString# + + + + + + + + + + + + + + + + + #probeHardwareRev# + + + #DisplayString# + + + + + + + + + + + + + + + + + #probeDateTime# + + + #OctetString# + + + + + + + + + + + + + + + + + #probeResetControl# + + + #Enumeration# + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/dumps/cm/SNMPv2-MIB b/test/dumps/cm/SNMPv2-MIB new file mode 100644 index 0000000..a24e15b --- /dev/null +++ b/test/dumps/cm/SNMPv2-MIB @@ -0,0 +1,841 @@ + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Conceptual model of SNMPv2-MIB - generated by smidump 0.4.3# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #sysOREntry# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #sysORIndex# + + + #Integer32 {index}# + + + + + + + + + + + + + + + + + #sysORIndex# + + + #Integer32# + + + + + + + + + + + + + + + + + #sysORID# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #sysORDescr# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysORUpTime# + + + #TimeStamp# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + # # + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #system# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #sysDescr# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysObjectID# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #sysUpTime# + + + #TimeTicks# + + + + + + + + + + + + + + + + + #sysContact# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysName# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysLocation# + + + #DisplayString# + + + + + + + + + + + + + + + + + #sysServices# + + + #Integer32# + + + + + + + + + + + + + + + + + #sysORLastChange# + + + #TimeStamp# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #snmp# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #snmpInPkts# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpInBadVersions# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpInBadCommunityNames# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpInBadCommunityUses# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpInASNParseErrs# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpEnableAuthenTraps# + + + #Enumeration# + + + + + + + + + + + + + + + + + #snmpSilentDrops# + + + #Counter32# + + + + + + + + + + + + + + + + + #snmpProxyDrops# + + + #Counter32# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #snmpTrap# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #snmpTrapOID# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + #snmpTrapEnterprise# + + + #ObjectIdentifier# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #snmpSet# + + + #smi mib class# + + + + + + + + + + + + + + + + + + + + #snmpSetSerialNo# + + + #TestAndIncr# + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/dumps/corba/IF_MIB.idl b/test/dumps/corba/IF_MIB.idl new file mode 100644 index 0000000..7affd74 --- /dev/null +++ b/test/dumps/corba/IF_MIB.idl @@ -0,0 +1,999 @@ +/* -- DO NOT EDIT -- + * Generated by smidump version 0.4.8: + * smidump -f corba IF-MIB + * + * Derived from IF-MIB: + * The MIB module to describe generic objects for network + * interface sub-layers. This MIB is an updated version of + * MIB-II's ifTable, and incorporates the extensions defined in + * RFC 1229. + * + * Revision 2000-06-14 00:00: + * Clarifications agreed upon by the Interfaces MIB WG, and + * published as RFC 2863. + * + * Revision 1996-02-28 21:55: + * Revisions made by the Interfaces MIB WG, and published in + * RFC 2233. + * + * Revision 1993-11-08 21:55: + * Initial revision, published as part of RFC 1573. + * + * $Id: IF_MIB.idl 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _IF_MIB_IDL_ +#define _IF_MIB_IDL_ + +#include +#include +#include +#include +#include + +module IF_MIB { + + typedef IANAifType_MIB::IANAifTypeType IANAifTypeType; + typedef SNMPv2_SMI::Counter32Type Counter32Type; + typedef SNMPv2_SMI::Counter64Type Counter64Type; + typedef SNMPv2_SMI::Gauge32Type Gauge32Type; + typedef SNMPv2_SMI::Integer32Type Integer32Type; + typedef SNMPv2_SMI::TimeTicksType TimeTicksType; + typedef SNMPv2_TC::AutonomousTypeType AutonomousTypeType; + typedef SNMPv2_TC::DisplayStringType DisplayStringType; + typedef SNMPv2_TC::PhysAddressType PhysAddressType; + typedef SNMPv2_TC::RowStatusType RowStatusType; + typedef SNMPv2_TC::TestAndIncrType TestAndIncrType; + typedef SNMPv2_TC::TimeStampType TimeStampType; + typedef SNMPv2_TC::TruthValueType TruthValueType; + + const string moduleIdentity = "ifMIB"; + const ASN1_ObjectIdentifier ifMIB = "::IF_MIB::ifMIB"; + + /* + The MIB module to describe generic objects for network + interface sub-layers. This MIB is an updated version of + MIB-II's ifTable, and incorporates the extensions defined in + RFC 1229. + + LAST-UPDATED: 200006140000Z + + ORGANIZATION: + "IETF Interfaces MIB Working Group" + + CONTACT-INFO: + " Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com" + + REVISION: "200006140000Z" + REVISION-DESCRIPTION: + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863." + + REVISION: "199602282155Z" + REVISION-DESCRIPTION: + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233." + + REVISION: "199311082155Z" + REVISION-DESCRIPTION: + "Initial revision, published as part of RFC 1573." + + */ + + /* + A unique value, greater than zero, for each interface or + interface sub-layer in the managed system. It is + recommended that values are assigned contiguously starting + from 1. The value for each interface sub-layer must remain + constant at least from one re-initialization of the entity's + network management system to the next re-initialization. + DISPLAY-HINT: d + + + */ + typedef ASN1_Integer InterfaceIndexType; + + /* + This textual convention is an extension of the + InterfaceIndex convention. The latter defines a greater + than zero value used to identify an interface or interface + sub-layer in the managed system. This extension permits the + additional value of zero. the value zero is object-specific + and must therefore be defined as part of the description of + any object which uses this syntax. Examples of the usage of + zero might include situations where interface was unknown, + or when none or all interfaces need to be referenced. + DISPLAY-HINT: d + + + */ + typedef ASN1_Integer InterfaceIndexOrZeroType; + + typedef ASN1_OctetString IfDescrType; + + typedef ASN1_Integer IfAdminStatusType; + const IfAdminStatusType IfAdminStatusType_up = 1; + const IfAdminStatusType IfAdminStatusType_down = 2; + const IfAdminStatusType IfAdminStatusType_testing = 3; + const string IfAdminStatusType_NameNumberList = "up (1) , down (2) , testing (3)"; + + typedef ASN1_Integer IfOperStatusType; + const IfOperStatusType IfOperStatusType_up = 1; + const IfOperStatusType IfOperStatusType_down = 2; + const IfOperStatusType IfOperStatusType_testing = 3; + const IfOperStatusType IfOperStatusType_unknown = 4; + const IfOperStatusType IfOperStatusType_dormant = 5; + const IfOperStatusType IfOperStatusType_notPresent = 6; + const IfOperStatusType IfOperStatusType_lowerLayerDown = 7; + const string IfOperStatusType_NameNumberList = "up (1) , down (2) , testing (3) , unknown (4) , dormant (5) , notPresent (6) , lowerLayerDown (7)"; + + typedef ASN1_Integer IfLinkUpDownTrapEnableType; + const IfLinkUpDownTrapEnableType IfLinkUpDownTrapEnableType_enabled = 1; + const IfLinkUpDownTrapEnableType IfLinkUpDownTrapEnableType_disabled = 2; + const string IfLinkUpDownTrapEnableType_NameNumberList = "enabled (1) , disabled (2)"; + + typedef ASN1_OctetString IfAliasType; + + typedef ASN1_Integer IfRcvAddressTypeType; + const IfRcvAddressTypeType IfRcvAddressTypeType_other = 1; + const IfRcvAddressTypeType IfRcvAddressTypeType_volatile = 2; + const IfRcvAddressTypeType IfRcvAddressTypeType_nonVolatile = 3; + const string IfRcvAddressTypeType_NameNumberList = "other (1) , volatile (2) , nonVolatile (3)"; + + interface interfaces : SNMPMgmt::SmiEntry { + + /* + The number of network interfaces (regardless of their + current state) present on this system. + */ + readonly attribute ASN1_Integer ifNumber; + + /* + A list of interface entries. The number of entries is + given by the value of ifNumber. + */ + SNMPMgmt::SmiTableIterator get_ifTable(); + }; + + + /* + An entry containing management information applicable to a + particular interface. + */ + interface ifEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifIndex"; + + /* + A unique value, greater than zero, for each interface. It + is recommended that values are assigned contiguously + starting from 1. The value for each interface sub-layer + must remain constant at least from one re-initialization of + the entity's network management system to the next re- + initialization. + */ + readonly attribute InterfaceIndexType ifIndex; + + /* + A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software. + */ + readonly attribute IfDescrType ifDescr; + + /* + The type of interface. Additional values for ifType are + assigned by the Internet Assigned Numbers Authority (IANA), + through updating the syntax of the IANAifType textual + convention. + */ + readonly attribute IANAifTypeType ifType; + + /* + The size of the largest packet which can be sent/received + on the interface, specified in octets. For interfaces that + are used for transmitting network datagrams, this is the + size of the largest network datagram that can be sent on the + interface. + */ + readonly attribute ASN1_Integer ifMtu; + + /* + An estimate of the interface's current bandwidth in bits + per second. For interfaces which do not vary in bandwidth + or for those where no accurate estimation can be made, this + object should contain the nominal bandwidth. If the + bandwidth of the interface is greater than the maximum value + reportable by this object then this object should report its + maximum value (4,294,967,295) and ifHighSpeed must be used + to report the interace's speed. For a sub-layer which has + no concept of bandwidth, this object should be zero. + */ + readonly attribute Gauge32Type ifSpeed; + + /* + The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific MIB + must define the bit and byte ordering and the format of the + value of this object. For interfaces which do not have such + an address (e.g., a serial line), this object should contain + an octet string of zero length. + */ + readonly attribute PhysAddressType ifPhysAddress; + + /* + The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state). + */ + attribute IfAdminStatusType ifAdminStatus; + + /* + The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components. + */ + readonly attribute IfOperStatusType ifOperStatus; + + /* + The value of sysUpTime at the time the interface entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value. + */ + readonly attribute TimeTicksType ifLastChange; + + /* + The total number of octets received on the interface, + + + including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifInOctets; + + /* + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifInUcastPkts; + + /* + The number of inbound packets which were chosen to be + discarded even though no errors had been detected to prevent + + + their being deliverable to a higher-layer protocol. One + possible reason for discarding such a packet could be to + free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifInDiscards; + + /* + For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of inbound + transmission units that contained errors preventing them + from being deliverable to a higher-layer protocol. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifInErrors; + + /* + For packet-oriented interfaces, the number of packets + received via the interface which were discarded because of + an unknown or unsupported protocol. For character-oriented + or fixed-length interfaces that support protocol + multiplexing the number of transmission units received via + the interface which were discarded because of an unknown or + unsupported protocol. For any interface that does not + support protocol multiplexing, this counter will always be + 0. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifInUnknownProtos; + + /* + The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifOutOctets; + + /* + The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifOutUcastPkts; + + /* + The number of outbound packets which were chosen to be + discarded even though no errors had been detected to prevent + their being transmitted. One possible reason for discarding + such a packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifOutDiscards; + + /* + For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifOutErrors; + }; + + interface ifMIBObjects : SNMPMgmt::SmiEntry { + + /* + A list of interface entries. The number of entries is + given by the value of ifNumber. This table contains + additional objects for the interface table. + */ + SNMPMgmt::SmiTableIterator get_ifXTable(); + + /* + The table containing information on the relationships + between the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'on top of' which other sub-layers, where each sub-layer + corresponds to a conceptual row in the ifTable. For + example, when the sub-layer with ifIndex value x runs over + the sub-layer with ifIndex value y, then this table + contains: + + ifStackStatus.x.y=active + + For each ifIndex value, I, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with I. For one of these rows, I + is the value of ifStackHigherLayer; for the other, I is the + value of ifStackLowerLayer. (If I is not involved in + multiplexing, then these are the only two rows associated + with I.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifStackStatus.0.x=active + ifStackStatus.x.0=active + */ + SNMPMgmt::SmiTableIterator get_ifStackTable(); + + /* + This table contains an entry for each address (broadcast, + multicast, or uni-cast) for which the system will receive + packets/frames on a particular interface, except as follows: + + - for an interface operating in promiscuous mode, entries + are only required for those addresses for which the system + would receive frames were it not operating in promiscuous + mode. + + + - for 802.5 functional addresses, only one entry is + required, for the address which has the functional address + bit ANDed with the bit mask of all functional addresses for + which the interface will accept frames. + + A system is normally able to use any unicast address which + corresponds to an entry in this table as a source address. + */ + SNMPMgmt::SmiTableIterator get_ifRcvAddressTable(); + + /* + The value of sysUpTime at the time of the last creation or + deletion of an entry in the ifTable. If the number of + entries has been unchanged since the last re-initialization + of the local network management subsystem, then this object + contains a zero value. + */ + readonly attribute TimeTicksType ifTableLastChange; + + /* + The value of sysUpTime at the time of the last change of + the (whole) interface stack. A change of the interface + stack is defined to be any creation, deletion, or change in + value of any instance of ifStackStatus. If the interface + stack has been unchanged since the last re-initialization of + the local network management subsystem, then this object + contains a zero value. + */ + readonly attribute TimeTicksType ifStackLastChange; + }; + + + /* + An entry containing additional management information + applicable to a particular interface. + */ + interface ifXEntry : IF_MIB::ifEntry { + + /* + The textual name of the interface. The value of this + object should be the name of the interface as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name, such as `le0' or a simple port number, such as `1', + depending on the interface naming syntax of the device. If + several entries in the ifTable together represent a single + interface as named by the device, then each will have the + same value of ifName. Note that for an agent which responds + to SNMP queries concerning an interface on some other + (proxied) device, then the value of ifName for such an + interface is the proxied device's local name for it. + + If there is no local name, or this object is otherwise not + applicable, then this object contains a zero-length string. + */ + readonly attribute DisplayStringType ifName; + + /* + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifInMulticastPkts; + + /* + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifInBroadcastPkts; + + /* + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifOutMulticastPkts; + + /* + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter32Type ifOutBroadcastPkts; + + /* + The total number of octets received on the interface, + including framing characters. This object is a 64-bit + version of ifInOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter64Type ifHCInOctets; + + /* + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. This object is a + 64-bit version of ifInUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter64Type ifHCInUcastPkts; + + /* + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifInMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter64Type ifHCInMulticastPkts; + + /* + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. This object is a 64-bit version + of ifInBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter64Type ifHCInBroadcastPkts; + + /* + The total number of octets transmitted out of the + interface, including framing characters. This object is a + 64-bit version of ifOutOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter64Type ifHCOutOctets; + + /* + The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. This object is a + 64-bit version of ifOutUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter64Type ifHCOutUcastPkts; + + /* + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifOutMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter64Type ifHCOutMulticastPkts; + + /* + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. This object is a 64-bit version + of ifOutBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + */ + readonly attribute Counter64Type ifHCOutBroadcastPkts; + + /* + Indicates whether linkUp/linkDown traps should be generated + for this interface. + + By default, this object should have the value enabled(1) for + interfaces which do not operate on 'top' of any other + interface (as defined in the ifStackTable), and disabled(2) + otherwise. + */ + attribute IfLinkUpDownTrapEnableType ifLinkUpDownTrapEnable; + + /* + An estimate of the interface's current bandwidth in units + of 1,000,000 bits per second. If this object reports a + value of `n' then the speed of the interface is somewhere in + the range of `n-500,000' to `n+499,999'. For interfaces + which do not vary in bandwidth or for those where no + accurate estimation can be made, this object should contain + the nominal bandwidth. For a sub-layer which has no concept + of bandwidth, this object should be zero. + */ + readonly attribute Gauge32Type ifHighSpeed; + + /* + This object has a value of false(2) if this interface only + accepts packets/frames that are addressed to this station. + This object has a value of true(1) when the station accepts + all packets/frames transmitted on the media. The value + true(1) is only legal on certain types of media. If legal, + setting this object to a value of true(1) may require the + interface to be reset before becoming effective. + + The value of ifPromiscuousMode does not affect the reception + of broadcast and multicast packets/frames by the interface. + */ + attribute TruthValueType ifPromiscuousMode; + + /* + This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise. + */ + readonly attribute TruthValueType ifConnectorPresent; + + /* + This object is an 'alias' name for the interface as + specified by a network manager, and provides a non-volatile + 'handle' for the interface. + + On the first instantiation of an interface, the value of + ifAlias associated with that interface is the zero-length + string. As and when a value is written into an instance of + ifAlias through a network management set operation, then the + agent must retain the supplied value in the ifAlias instance + associated with the same interface for as long as that + interface remains instantiated, including across all re- + initializations/reboots of the network management system, + including those which result in a change of the interface's + ifIndex value. + + An example of the value which a network manager might store + in this object for a WAN interface is the (Telco's) circuit + number/identifier of the interface. + + Some agents may support write-access only for interfaces + having particular values of ifType. An agent which supports + write access to this object is required to keep the value in + non-volatile storage, but it may limit the length of new + values depending on how much storage is already occupied by + the current values for other interfaces. + */ + attribute IfAliasType ifAlias; + + /* + The value of sysUpTime on the most recent occasion at which + any one or more of this interface's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + + + Counter64 object contained in the ifTable or ifXTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value. + */ + readonly attribute TimeStampType ifCounterDiscontinuityTime; + }; + + + /* + Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs on 'top' of the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable. + */ + interface ifStackEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifStackHigherLayer ifStackLowerLayer"; + + /* + The status of the relationship between two sub-layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have consequences up + and down the interface stack. Thus, write access to this + object is likely to be inappropriate for some types of + interfaces, and many implementations will choose not to + support write-access for any type of interface. + */ + attribute RowStatusType ifStackStatus; + }; + + + /* + A list of objects identifying an address for which the + system will accept packets/frames on the particular + interface identified by the index value ifIndex. + */ + interface ifRcvAddressEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifIndex ifRcvAddressAddress"; + + /* + This object is used to create and delete rows in the + ifRcvAddressTable. + */ + attribute RowStatusType ifRcvAddressStatus; + + /* + This object has the value nonVolatile(3) for those entries + in the table which are valid and will not be deleted by the + next restart of the managed system. Entries having the + value volatile(2) are valid and exist, but have not been + saved, so that will not exist after the next restart of the + managed system. Entries having the value other(1) are valid + and exist but are not classified as to whether they will + continue to exist after the next restart. + */ + attribute IfRcvAddressTypeType ifRcvAddressType; + }; + + struct IfIndexVBType { + string var_name; + string var_index; + InterfaceIndexType ifIndex; + }; + + struct IfAdminStatusVBType { + string var_name; + string var_index; + IfAdminStatusType ifAdminStatus; + }; + + struct IfOperStatusVBType { + string var_name; + string var_index; + IfOperStatusType ifOperStatus; + }; + + struct LinkDownType { + IfIndexVBType ifIndex; + IfAdminStatusVBType ifAdminStatus; + IfOperStatusVBType ifOperStatus; + }; + + struct LinkUpType { + IfIndexVBType ifIndex; + IfAdminStatusVBType ifAdminStatus; + IfOperStatusVBType ifOperStatus; + }; + + /* typed push event communication */ + interface Notifications : SNMPMgmt::Notifications { + + /* + A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus. + */ + void linkDown ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time, + in LinkDownType notification_info + ); + + /* + A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus. + */ + void linkUp ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time, + in LinkUpType notification_info + ); + }; + + /* typed pull event communication */ + interface PullNotifications : SNMPMgmt::PullNotifications { + + /* + A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus. + */ + void pull_linkDown ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out LinkDownType notification_info + ); + boolean try_linkDown ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out LinkDownType notification_info + ); + + /* + A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus. + */ + void pull_linkUp ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out LinkUpType notification_info + ); + boolean try_linkUp ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out LinkUpType notification_info + ); + }; + + interface SmiEntryFactory : SNMPMgmt::GenericFactory { + + ifEntry create_ifEntry ( + in InterfaceIndexType ifIndex, + in IfAdminStatusType ifAdminStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifXEntry create_ifXEntry ( + in IfLinkUpDownTrapEnableType ifLinkUpDownTrapEnable, + in TruthValueType ifPromiscuousMode, + in IfAliasType ifAlias + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifStackEntry create_ifStackEntry ( + in InterfaceIndexOrZeroType ifStackHigherLayer, + in InterfaceIndexOrZeroType ifStackLowerLayer, + in RowStatusType ifStackStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifRcvAddressEntry create_ifRcvAddressEntry ( + in InterfaceIndexType ifIndex, + in PhysAddressType ifRcvAddressAddress, + in RowStatusType ifRcvAddressStatus, + in IfRcvAddressTypeType ifRcvAddressType + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + }; + + /* pseudo */ + interface DefaultValues { + /* DEFVAL: volatile */ + IfRcvAddressTypeType ifRcvAddressType(); + + }; + + /* pseudo */ + interface TextualConventions { + + /* + A unique value, greater than zero, for each interface or + interface sub-layer in the managed system. It is + recommended that values are assigned contiguously starting + from 1. The value for each interface sub-layer must remain + constant at least from one re-initialization of the entity's + network management system to the next re-initialization. + DISPLAY-HINT: d + */ + string InterfaceIndexToString (in InterfaceIndexType Value); + InterfaceIndexType InterfaceIndexFromString (in string str); + + /* + This textual convention is an extension of the + InterfaceIndex convention. The latter defines a greater + than zero value used to identify an interface or interface + sub-layer in the managed system. This extension permits the + additional value of zero. the value zero is object-specific + and must therefore be defined as part of the description of + any object which uses this syntax. Examples of the usage of + zero might include situations where interface was unknown, + or when none or all interfaces need to be referenced. + DISPLAY-HINT: d + */ + string InterfaceIndexOrZeroToString (in InterfaceIndexOrZeroType Value); + InterfaceIndexOrZeroType InterfaceIndexOrZeroFromString (in string str); + }; + +}; + +#endif /* !_IF_MIB_IDL_ */ diff --git a/test/dumps/corba/IF_MIB.oid b/test/dumps/corba/IF_MIB.oid new file mode 100644 index 0000000..c23da51 --- /dev/null +++ b/test/dumps/corba/IF_MIB.oid @@ -0,0 +1,62 @@ +::IF_MIB::interfaces 1.3.6.1.2.1.2 Group not-accessible +::IF_MIB::interfaces::ifNumber 1.3.6.1.2.1.2.1 ASN1_Integer read-only +::IF_MIB::ifTable 1.3.6.1.2.1.2.2 Table not-accessible +::IF_MIB::ifEntry 1.3.6.1.2.1.2.2.1 TableEntry not-accessible +::IF_MIB::ifEntry::ifIndex 1.3.6.1.2.1.2.2.1.1 ASN1_Integer read-only +::IF_MIB::ifEntry::ifDescr 1.3.6.1.2.1.2.2.1.2 ASN1_OctetString read-only +::IF_MIB::ifEntry::ifType 1.3.6.1.2.1.2.2.1.3 ASN1_Integer read-only +::IF_MIB::ifEntry::ifMtu 1.3.6.1.2.1.2.2.1.4 ASN1_Integer read-only +::IF_MIB::ifEntry::ifSpeed 1.3.6.1.2.1.2.2.1.5 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifPhysAddress 1.3.6.1.2.1.2.2.1.6 ASN1_OctetString read-only +::IF_MIB::ifEntry::ifAdminStatus 1.3.6.1.2.1.2.2.1.7 ASN1_Integer read-write +::IF_MIB::ifEntry::ifOperStatus 1.3.6.1.2.1.2.2.1.8 ASN1_Integer read-only +::IF_MIB::ifEntry::ifLastChange 1.3.6.1.2.1.2.2.1.9 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInOctets 1.3.6.1.2.1.2.2.1.10 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInUcastPkts 1.3.6.1.2.1.2.2.1.11 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInDiscards 1.3.6.1.2.1.2.2.1.13 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInErrors 1.3.6.1.2.1.2.2.1.14 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifOutOctets 1.3.6.1.2.1.2.2.1.16 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifOutDiscards 1.3.6.1.2.1.2.2.1.19 ASN1_Unsigned read-only +::IF_MIB::ifEntry::ifOutErrors 1.3.6.1.2.1.2.2.1.20 ASN1_Unsigned read-only +::IF_MIB::ifMIB 1.3.6.1.2.1.31 ASN1_ObjectIdentifier not-accessible +::IF_MIB::ifMIBObjects 1.3.6.1.2.1.31.1 Group not-accessible +::IF_MIB::ifXTable 1.3.6.1.2.1.31.1.1 Table not-accessible +::IF_MIB::ifXEntry 1.3.6.1.2.1.31.1.1.1 TableEntry not-accessible +::IF_MIB::ifXEntry::ifName 1.3.6.1.2.1.31.1.1.1.1 ASN1_OctetString read-only +::IF_MIB::ifXEntry::ifInMulticastPkts 1.3.6.1.2.1.31.1.1.1.2 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifInBroadcastPkts 1.3.6.1.2.1.31.1.1.1.3 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifOutMulticastPkts 1.3.6.1.2.1.31.1.1.1.4 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifOutBroadcastPkts 1.3.6.1.2.1.31.1.1.1.5 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifHCInOctets 1.3.6.1.2.1.31.1.1.1.6 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCInUcastPkts 1.3.6.1.2.1.31.1.1.1.7 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCInMulticastPkts 1.3.6.1.2.1.31.1.1.1.8 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCInBroadcastPkts 1.3.6.1.2.1.31.1.1.1.9 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCOutOctets 1.3.6.1.2.1.31.1.1.1.10 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCOutUcastPkts 1.3.6.1.2.1.31.1.1.1.11 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCOutMulticastPkts 1.3.6.1.2.1.31.1.1.1.12 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifHCOutBroadcastPkts 1.3.6.1.2.1.31.1.1.1.13 ASN1_Unsigned64 read-only +::IF_MIB::ifXEntry::ifLinkUpDownTrapEnable 1.3.6.1.2.1.31.1.1.1.14 ASN1_Integer read-write +::IF_MIB::ifXEntry::ifHighSpeed 1.3.6.1.2.1.31.1.1.1.15 ASN1_Unsigned read-only +::IF_MIB::ifXEntry::ifPromiscuousMode 1.3.6.1.2.1.31.1.1.1.16 ASN1_Integer read-write +::IF_MIB::ifXEntry::ifConnectorPresent 1.3.6.1.2.1.31.1.1.1.17 ASN1_Integer read-only +::IF_MIB::ifXEntry::ifAlias 1.3.6.1.2.1.31.1.1.1.18 ASN1_OctetString read-write +::IF_MIB::ifXEntry::ifCounterDiscontinuityTime 1.3.6.1.2.1.31.1.1.1.19 ASN1_Unsigned read-only +::IF_MIB::ifStackTable 1.3.6.1.2.1.31.1.2 Table not-accessible +::IF_MIB::ifStackEntry 1.3.6.1.2.1.31.1.2.1 TableEntry not-accessible +::IF_MIB::ifStackEntry::ifStackHigherLayer 1.3.6.1.2.1.31.1.2.1.1 ASN1_Integer not-accessible +::IF_MIB::ifStackEntry::ifStackLowerLayer 1.3.6.1.2.1.31.1.2.1.2 ASN1_Integer not-accessible +::IF_MIB::ifStackEntry::ifStackStatus 1.3.6.1.2.1.31.1.2.1.3 ASN1_Integer read-create +::IF_MIB::ifRcvAddressTable 1.3.6.1.2.1.31.1.4 Table not-accessible +::IF_MIB::ifRcvAddressEntry 1.3.6.1.2.1.31.1.4.1 TableEntry not-accessible +::IF_MIB::ifRcvAddressEntry::ifRcvAddressAddress 1.3.6.1.2.1.31.1.4.1.1 ASN1_OctetString not-accessible +::IF_MIB::ifRcvAddressEntry::ifRcvAddressStatus 1.3.6.1.2.1.31.1.4.1.2 ASN1_Integer read-create +::IF_MIB::ifRcvAddressEntry::ifRcvAddressType 1.3.6.1.2.1.31.1.4.1.3 ASN1_Integer read-create +::IF_MIB::ifMIBObjects::ifTableLastChange 1.3.6.1.2.1.31.1.5 ASN1_Unsigned read-only +::IF_MIB::ifMIBObjects::ifStackLastChange 1.3.6.1.2.1.31.1.6 ASN1_Unsigned read-only +::IF_MIB::ifConformance 1.3.6.1.2.1.31.2 ASN1_ObjectIdentifier not-accessible +::IF_MIB::ifGroups 1.3.6.1.2.1.31.2.1 ASN1_ObjectIdentifier not-accessible +::IF_MIB::ifCompliances 1.3.6.1.2.1.31.2.2 ASN1_ObjectIdentifier not-accessible +::IF_MIB::snmpTraps::linkDown 1.3.6.1.6.3.1.1.5.3 Notification not-accessible +::IF_MIB::snmpTraps::linkUp 1.3.6.1.6.3.1.1.5.4 Notification not-accessible diff --git a/test/dumps/corba/MAU_MIB.idl b/test/dumps/corba/MAU_MIB.idl new file mode 100644 index 0000000..5d2e4b3 --- /dev/null +++ b/test/dumps/corba/MAU_MIB.idl @@ -0,0 +1,1195 @@ +/* -- DO NOT EDIT -- + * Generated by smidump version 0.4.8: + * smidump -f corba MAU-MIB + * + * Derived from MAU-MIB: + * Management information for 802.3 MAUs. + * + * The following reference is used throughout this MIB module: + * + * [IEEE802.3] refers to: + * IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + * technology - Telecommunications and information exchange + * between systems - Local and metropolitan area networks - + * Specific requirements - Part 3: Carrier sense multiple + * access with collision detection (CSMA/CD) access method and + * physical layer specifications'. + * + * Of particular interest is Clause 30, 'Management'. + * + * Copyright (C) The IETF Trust (2007). + * This version of this MIB module is part of RFC 4836; + * see the RFC itself for full legal notices. + * + * Revision 2007-04-21 00:00: + * Updated to reference IANA maintaned textual + * conventions for MAU types, Media Availability state, + * Auto Negotiation capabilities, and jack types, + * instead of using internally defined values. + * + * This version is published as RFC 4836. + * + * Revision 2003-09-19 00:00: + * Updated to include support for 10 Gb/s MAUs. + * This resulted in the following revisions: + * - Added OBJECT-IDENTITY definitions for + * 10 gigabit MAU types + * + * + * + * - Added fiberLC jack type to JackType TC + * - Extended ifMauTypeListBits with bits for + * the 10 gigabit MAU types + * - Added enumerations to ifMauMediaAvailable, + * and updated its DESCRIPTION to reflect + * behaviour at 10 Gb/s + * - Added 64-bit version of ifMauFalseCarriers + * and added mauIfGrpHCStats object group to + * contain the new object + * - Deprecated mauModIfCompl2 and replaced it + * with mauModIfCompl3, which includes the new + * object group + * + * This version published as RFC 3636. + * + * Revision 1999-08-24 04:00: + * This version published as RFC 2668. Updated + * to include support for 1000 Mb/sec + * MAUs and flow control negotiation. + * + * Revision 1997-10-31 00:00: + * Version published as RFC 2239. + * + * Revision 1993-09-30 00:00: + * Initial version, published as RFC 1515. + * + * $Id: MAU_MIB.idl 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _MAU_MIB_IDL_ +#define _MAU_MIB_IDL_ + +#include +#include +#include +#include +#include +#include + +module MAU_MIB { + + typedef IANA_MAU_MIB::IANAifJackTypeType IANAifJackTypeType; + typedef IANA_MAU_MIB::IANAifMauAutoNegCapBitsType IANAifMauAutoNegCapBitsType; + typedef IANA_MAU_MIB::IANAifMauMediaAvailableType IANAifMauMediaAvailableType; + typedef IANA_MAU_MIB::IANAifMauTypeListBitsType IANAifMauTypeListBitsType; + typedef IF_MIB::InterfaceIndexType InterfaceIndexType; + typedef SNMPv2_SMI::Counter32Type Counter32Type; + typedef SNMPv2_SMI::Counter64Type Counter64Type; + typedef SNMPv2_SMI::Integer32Type Integer32Type; + typedef SNMPv2_TC::AutonomousTypeType AutonomousTypeType; + typedef SNMPv2_TC::TruthValueType TruthValueType; + + const string moduleIdentity = "mauMod"; + const ASN1_ObjectIdentifier mauMod = "::MAU_MIB::mauMod"; + + /* + Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices. + + LAST-UPDATED: 200704210000Z + + ORGANIZATION: + "IETF Ethernet Interfaces and Hub MIB Working Group" + + CONTACT-INFO: + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com" + + REVISION: "200704210000Z" + REVISION-DESCRIPTION: + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836." + + REVISION: "200309190000Z" + REVISION-DESCRIPTION: + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636." + + REVISION: "199908240400Z" + REVISION-DESCRIPTION: + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation." + + REVISION: "199710310000Z" + REVISION-DESCRIPTION: + "Version published as RFC 2239." + + REVISION: "199309300000Z" + REVISION-DESCRIPTION: + "Initial version, published as RFC 1515." + + */ + + typedef ASN1_Integer RpMauGroupIndexType; + + typedef ASN1_Integer RpMauPortIndexType; + + typedef ASN1_Integer RpMauIndexType; + + typedef ASN1_Integer RpMauStatusType; + const RpMauStatusType RpMauStatusType_other = 1; + const RpMauStatusType RpMauStatusType_unknown = 2; + const RpMauStatusType RpMauStatusType_operational = 3; + const RpMauStatusType RpMauStatusType_standby = 4; + const RpMauStatusType RpMauStatusType_shutdown = 5; + const RpMauStatusType RpMauStatusType_reset = 6; + const string RpMauStatusType_NameNumberList = "other (1) , unknown (2) , operational (3) , standby (4) , shutdown (5) , reset (6)"; + + typedef ASN1_Integer RpMauJabberStateType; + const RpMauJabberStateType RpMauJabberStateType_other = 1; + const RpMauJabberStateType RpMauJabberStateType_unknown = 2; + const RpMauJabberStateType RpMauJabberStateType_noJabber = 3; + const RpMauJabberStateType RpMauJabberStateType_jabbering = 4; + const string RpMauJabberStateType_NameNumberList = "other (1) , unknown (2) , noJabber (3) , jabbering (4)"; + + typedef ASN1_Integer RpJackIndexType; + + typedef ASN1_Integer IfMauIndexType; + + typedef ASN1_Integer IfMauStatusType; + const IfMauStatusType IfMauStatusType_other = 1; + const IfMauStatusType IfMauStatusType_unknown = 2; + const IfMauStatusType IfMauStatusType_operational = 3; + const IfMauStatusType IfMauStatusType_standby = 4; + const IfMauStatusType IfMauStatusType_shutdown = 5; + const IfMauStatusType IfMauStatusType_reset = 6; + const string IfMauStatusType_NameNumberList = "other (1) , unknown (2) , operational (3) , standby (4) , shutdown (5) , reset (6)"; + + typedef ASN1_Integer IfMauJabberStateType; + const IfMauJabberStateType IfMauJabberStateType_other = 1; + const IfMauJabberStateType IfMauJabberStateType_unknown = 2; + const IfMauJabberStateType IfMauJabberStateType_noJabber = 3; + const IfMauJabberStateType IfMauJabberStateType_jabbering = 4; + const string IfMauJabberStateType_NameNumberList = "other (1) , unknown (2) , noJabber (3) , jabbering (4)"; + + typedef ASN1_Integer IfJackIndexType; + + typedef ASN1_Integer IfMauAutoNegAdminStatusType; + const IfMauAutoNegAdminStatusType IfMauAutoNegAdminStatusType_enabled = 1; + const IfMauAutoNegAdminStatusType IfMauAutoNegAdminStatusType_disabled = 2; + const string IfMauAutoNegAdminStatusType_NameNumberList = "enabled (1) , disabled (2)"; + + typedef ASN1_Integer IfMauAutoNegRemoteSignalingType; + const IfMauAutoNegRemoteSignalingType IfMauAutoNegRemoteSignalingType_detected = 1; + const IfMauAutoNegRemoteSignalingType IfMauAutoNegRemoteSignalingType_notdetected = 2; + const string IfMauAutoNegRemoteSignalingType_NameNumberList = "detected (1) , notdetected (2)"; + + typedef ASN1_Integer IfMauAutoNegConfigType; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_other = 1; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_configuring = 2; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_complete = 3; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_disabled = 4; + const IfMauAutoNegConfigType IfMauAutoNegConfigType_parallelDetectFail = 5; + const string IfMauAutoNegConfigType_NameNumberList = "other (1) , configuring (2) , complete (3) , disabled (4) , parallelDetectFail (5)"; + + typedef ASN1_Integer IfMauAutoNegRestartType; + const IfMauAutoNegRestartType IfMauAutoNegRestartType_restart = 1; + const IfMauAutoNegRestartType IfMauAutoNegRestartType_norestart = 2; + const string IfMauAutoNegRestartType_NameNumberList = "restart (1) , norestart (2)"; + + typedef ASN1_Integer IfMauAutoNegRemoteFaultAdvertisedType; + const IfMauAutoNegRemoteFaultAdvertisedType IfMauAutoNegRemoteFaultAdvertisedType_noError = 1; + const IfMauAutoNegRemoteFaultAdvertisedType IfMauAutoNegRemoteFaultAdvertisedType_offline = 2; + const IfMauAutoNegRemoteFaultAdvertisedType IfMauAutoNegRemoteFaultAdvertisedType_linkFailure = 3; + const IfMauAutoNegRemoteFaultAdvertisedType IfMauAutoNegRemoteFaultAdvertisedType_autoNegError = 4; + const string IfMauAutoNegRemoteFaultAdvertisedType_NameNumberList = "noError (1) , offline (2) , linkFailure (3) , autoNegError (4)"; + + typedef ASN1_Integer IfMauAutoNegRemoteFaultReceivedType; + const IfMauAutoNegRemoteFaultReceivedType IfMauAutoNegRemoteFaultReceivedType_noError = 1; + const IfMauAutoNegRemoteFaultReceivedType IfMauAutoNegRemoteFaultReceivedType_offline = 2; + const IfMauAutoNegRemoteFaultReceivedType IfMauAutoNegRemoteFaultReceivedType_linkFailure = 3; + const IfMauAutoNegRemoteFaultReceivedType IfMauAutoNegRemoteFaultReceivedType_autoNegError = 4; + const string IfMauAutoNegRemoteFaultReceivedType_NameNumberList = "noError (1) , offline (2) , linkFailure (3) , autoNegError (4)"; + + interface dot3RpMauBasicGroup : SNMPMgmt::SmiEntry { + + /* + Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater. + */ + SNMPMgmt::SmiTableIterator get_rpMauTable(); + + /* + Information about the external jacks attached + to MAUs attached to the ports of a repeater. + */ + SNMPMgmt::SmiTableIterator get_rpJackTable(); + }; + + + /* + An entry in the table, containing information + about a single MAU. + */ + interface rpMauEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "rpMauGroupIndex rpMauPortIndex rpMauIndex"; + + /* + This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex. + REFERENCE: + "RFC 2108, rptrGroupIndex." + + */ + readonly attribute RpMauGroupIndexType rpMauGroupIndex; + + /* + This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected. + REFERENCE: + "RFC 2108, rptrPortIndex." + + */ + readonly attribute RpMauPortIndexType rpMauPortIndex; + + /* + This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex). + REFERENCE: + "[IEEE802.3], 30.5.1.1.1, aMAUID." + + */ + readonly attribute RpMauIndexType rpMauIndex; + + /* + This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + REFERENCE: + "[IEEE802.3], 30.5.1.1.2, aMAUType." + + */ + readonly attribute AutonomousTypeType rpMauType; + + /* + The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state. + REFERENCE: + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + + */ + attribute RpMauStatusType rpMauStatus; + + /* + This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC. + REFERENCE: + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + + */ + readonly attribute IANAifMauMediaAvailableType rpMauMediaAvailable; + + /* + A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange. + REFERENCE: + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange" + + */ + readonly attribute Counter32Type rpMauMediaAvailableStateExits; + + /* + The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value. + REFERENCE: + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + + */ + readonly attribute RpMauJabberStateType rpMauJabberState; + + /* + A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange. + REFERENCE: + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange" + + */ + readonly attribute Counter32Type rpMauJabberingStateEnters; + + /* + A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange. + REFERENCE: + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange" + + */ + readonly attribute Counter32Type rpMauFalseCarriers; + }; + + + /* + An entry in the table, containing information + about a particular jack. + */ + interface rpJackEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "rpMauGroupIndex rpMauPortIndex rpMauIndex rpJackIndex"; + + /* + The jack connector type, as it appears on the + outside of the system. + */ + readonly attribute IANAifJackTypeType rpJackType; + }; + + interface dot3IfMauBasicGroup : SNMPMgmt::SmiEntry { + + /* + Table of descriptive and status information + about MAU(s) attached to an interface. + */ + SNMPMgmt::SmiTableIterator get_ifMauTable(); + + /* + Information about the external jacks attached + to MAUs attached to an interface. + */ + SNMPMgmt::SmiTableIterator get_ifJackTable(); + }; + + + /* + An entry in the table, containing information + about a single MAU. + */ + interface ifMauEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifMauIfIndex ifMauIndex"; + + /* + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected. + REFERENCE: + "RFC 2863, ifIndex" + + */ + readonly attribute InterfaceIndexType ifMauIfIndex; + + /* + This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex). + REFERENCE: + "[IEEE802.3], 30.5.1.1.1, aMAUID." + + */ + readonly attribute IfMauIndexType ifMauIndex; + + /* + This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode. + REFERENCE: + "[IEEE802.3], 30.5.1.1.2, aMAUType." + + */ + readonly attribute AutonomousTypeType ifMauType; + + /* + The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state. + REFERENCE: + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + + */ + attribute IfMauStatusType ifMauStatus; + + /* + This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC. + REFERENCE: + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + + */ + readonly attribute IANAifMauMediaAvailableType ifMauMediaAvailable; + + /* + A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime. + REFERENCE: + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime." + + */ + readonly attribute Counter32Type ifMauMediaAvailableStateExits; + + /* + The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value. + REFERENCE: + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + + */ + readonly attribute IfMauJabberStateType ifMauJabberState; + + /* + A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime. + REFERENCE: + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime." + + */ + readonly attribute Counter32Type ifMauJabberingStateEnters; + + /* + A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime. + REFERENCE: + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + + */ + readonly attribute Counter32Type ifMauFalseCarriers; + + /* + This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function. + REFERENCE: + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + + */ + attribute AutonomousTypeType ifMauDefaultType; + + /* + This object indicates whether or not + auto-negotiation is supported on this MAU. + */ + readonly attribute TruthValueType ifMauAutoNegSupported; + + /* + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC. + */ + readonly attribute IANAifMauTypeListBitsType ifMauTypeListBits; + + /* + A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime. + REFERENCE: + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + + */ + readonly attribute Counter64Type ifMauHCFalseCarriers; + }; + + + /* + An entry in the table, containing information + about a particular jack. + */ + interface ifJackEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifMauIfIndex ifMauIndex ifJackIndex"; + + /* + The jack connector type, as it appears on the + outside of the system. + */ + readonly attribute IANAifJackTypeType ifJackType; + }; + + interface dot3IfMauAutoNegGroup : SNMPMgmt::SmiEntry { + + /* + Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function. + */ + SNMPMgmt::SmiTableIterator get_ifMauAutoNegTable(); + }; + + + /* + An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU. + */ + interface ifMauAutoNegEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "ifMauIfIndex ifMauIndex"; + + /* + Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function. + REFERENCE: + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl." + + */ + attribute IfMauAutoNegAdminStatusType ifMauAutoNegAdminStatus; + + /* + A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received. + REFERENCE: + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling." + + */ + readonly attribute IfMauAutoNegRemoteSignalingType ifMauAutoNegRemoteSignaling; + + /* + A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]. + REFERENCE: + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + + */ + readonly attribute IfMauAutoNegConfigType ifMauAutoNegConfig; + + /* + If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect. + REFERENCE: + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig." + + */ + attribute IfMauAutoNegRestartType ifMauAutoNegRestart; + + /* + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + REFERENCE: + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + + */ + readonly attribute IANAifMauAutoNegCapBitsType ifMauAutoNegCapabilityBits; + + /* + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + REFERENCE: + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + + */ + attribute IANAifMauAutoNegCapBitsType ifMauAutoNegCapAdvertisedBits; + + /* + A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + REFERENCE: + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + + */ + readonly attribute IANAifMauAutoNegCapBitsType ifMauAutoNegCapReceivedBits; + + /* + A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs. + REFERENCE: + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + + */ + attribute IfMauAutoNegRemoteFaultAdvertisedType ifMauAutoNegRemoteFaultAdvertised; + + /* + A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs. + REFERENCE: + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + + */ + readonly attribute IfMauAutoNegRemoteFaultReceivedType ifMauAutoNegRemoteFaultReceived; + }; + + struct RpMauJabberStateVBType { + string var_name; + string var_index; + RpMauJabberStateType rpMauJabberState; + }; + + struct IfMauJabberStateVBType { + string var_name; + string var_index; + IfMauJabberStateType ifMauJabberState; + }; + + struct RpMauJabberTrapType { + RpMauJabberStateVBType rpMauJabberState; + }; + + struct IfMauJabberTrapType { + IfMauJabberStateVBType ifMauJabberState; + }; + + /* typed push event communication */ + interface Notifications : SNMPMgmt::Notifications { + + /* + This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them. + REFERENCE: + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + + */ + void rpMauJabberTrap ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time, + in RpMauJabberTrapType notification_info + ); + + /* + This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them. + REFERENCE: + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + + */ + void ifMauJabberTrap ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time, + in IfMauJabberTrapType notification_info + ); + }; + + /* typed pull event communication */ + interface PullNotifications : SNMPMgmt::PullNotifications { + + /* + This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them. + REFERENCE: + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + + */ + void pull_rpMauJabberTrap ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out RpMauJabberTrapType notification_info + ); + boolean try_rpMauJabberTrap ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out RpMauJabberTrapType notification_info + ); + + /* + This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them. + REFERENCE: + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + + */ + void pull_ifMauJabberTrap ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out IfMauJabberTrapType notification_info + ); + boolean try_ifMauJabberTrap ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time, + out IfMauJabberTrapType notification_info + ); + }; + + interface SmiEntryFactory : SNMPMgmt::GenericFactory { + + rpMauEntry create_rpMauEntry ( + in RpMauGroupIndexType rpMauGroupIndex, + in RpMauPortIndexType rpMauPortIndex, + in RpMauIndexType rpMauIndex, + in RpMauStatusType rpMauStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifMauEntry create_ifMauEntry ( + in InterfaceIndexType ifMauIfIndex, + in IfMauIndexType ifMauIndex, + in IfMauStatusType ifMauStatus, + in AutonomousTypeType ifMauDefaultType + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + ifMauAutoNegEntry create_ifMauAutoNegEntry ( + in InterfaceIndexType ifMauIfIndex, + in IfMauIndexType ifMauIndex, + in IfMauAutoNegAdminStatusType ifMauAutoNegAdminStatus, + in IfMauAutoNegRestartType ifMauAutoNegRestart, + in IANAifMauAutoNegCapBitsType ifMauAutoNegCapAdvertisedBits, + in IfMauAutoNegRemoteFaultAdvertisedType ifMauAutoNegRemoteFaultAdvertised + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + }; + +}; + +#endif /* !_MAU_MIB_IDL_ */ diff --git a/test/dumps/corba/MAU_MIB.oid b/test/dumps/corba/MAU_MIB.oid new file mode 100644 index 0000000..5504f13 --- /dev/null +++ b/test/dumps/corba/MAU_MIB.oid @@ -0,0 +1,59 @@ +::MAU_MIB::snmpDot3MauMgt 1.3.6.1.2.1.26 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::snmpDot3MauTraps 1.3.6.1.2.1.26.0 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::snmpDot3MauTraps::rpMauJabberTrap 1.3.6.1.2.1.26.0.1 Notification not-accessible +::MAU_MIB::snmpDot3MauTraps::ifMauJabberTrap 1.3.6.1.2.1.26.0.2 Notification not-accessible +::MAU_MIB::dot3RpMauBasicGroup 1.3.6.1.2.1.26.1 Group not-accessible +::MAU_MIB::rpMauTable 1.3.6.1.2.1.26.1.1 Table not-accessible +::MAU_MIB::rpMauEntry 1.3.6.1.2.1.26.1.1.1 TableEntry not-accessible +::MAU_MIB::rpMauEntry::rpMauGroupIndex 1.3.6.1.2.1.26.1.1.1.1 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauPortIndex 1.3.6.1.2.1.26.1.1.1.2 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauIndex 1.3.6.1.2.1.26.1.1.1.3 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauType 1.3.6.1.2.1.26.1.1.1.4 ASN1_ObjectIdentifier read-only +::MAU_MIB::rpMauEntry::rpMauStatus 1.3.6.1.2.1.26.1.1.1.5 ASN1_Integer read-write +::MAU_MIB::rpMauEntry::rpMauMediaAvailable 1.3.6.1.2.1.26.1.1.1.6 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauMediaAvailableStateExits 1.3.6.1.2.1.26.1.1.1.7 ASN1_Unsigned read-only +::MAU_MIB::rpMauEntry::rpMauJabberState 1.3.6.1.2.1.26.1.1.1.8 ASN1_Integer read-only +::MAU_MIB::rpMauEntry::rpMauJabberingStateEnters 1.3.6.1.2.1.26.1.1.1.9 ASN1_Unsigned read-only +::MAU_MIB::rpMauEntry::rpMauFalseCarriers 1.3.6.1.2.1.26.1.1.1.10 ASN1_Unsigned read-only +::MAU_MIB::rpJackTable 1.3.6.1.2.1.26.1.2 Table not-accessible +::MAU_MIB::rpJackEntry 1.3.6.1.2.1.26.1.2.1 TableEntry not-accessible +::MAU_MIB::rpJackEntry::rpJackIndex 1.3.6.1.2.1.26.1.2.1.1 ASN1_Integer not-accessible +::MAU_MIB::rpJackEntry::rpJackType 1.3.6.1.2.1.26.1.2.1.2 ASN1_Integer read-only +::MAU_MIB::dot3IfMauBasicGroup 1.3.6.1.2.1.26.2 Group not-accessible +::MAU_MIB::ifMauTable 1.3.6.1.2.1.26.2.1 Table not-accessible +::MAU_MIB::ifMauEntry 1.3.6.1.2.1.26.2.1.1 TableEntry not-accessible +::MAU_MIB::ifMauEntry::ifMauIfIndex 1.3.6.1.2.1.26.2.1.1.1 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauIndex 1.3.6.1.2.1.26.2.1.1.2 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauType 1.3.6.1.2.1.26.2.1.1.3 ASN1_ObjectIdentifier read-only +::MAU_MIB::ifMauEntry::ifMauStatus 1.3.6.1.2.1.26.2.1.1.4 ASN1_Integer read-write +::MAU_MIB::ifMauEntry::ifMauMediaAvailable 1.3.6.1.2.1.26.2.1.1.5 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauMediaAvailableStateExits 1.3.6.1.2.1.26.2.1.1.6 ASN1_Unsigned read-only +::MAU_MIB::ifMauEntry::ifMauJabberState 1.3.6.1.2.1.26.2.1.1.7 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauJabberingStateEnters 1.3.6.1.2.1.26.2.1.1.8 ASN1_Unsigned read-only +::MAU_MIB::ifMauEntry::ifMauFalseCarriers 1.3.6.1.2.1.26.2.1.1.9 ASN1_Unsigned read-only +::MAU_MIB::ifMauEntry::ifMauDefaultType 1.3.6.1.2.1.26.2.1.1.11 ASN1_ObjectIdentifier read-write +::MAU_MIB::ifMauEntry::ifMauAutoNegSupported 1.3.6.1.2.1.26.2.1.1.12 ASN1_Integer read-only +::MAU_MIB::ifMauEntry::ifMauTypeListBits 1.3.6.1.2.1.26.2.1.1.13 ASN1_OctetString read-only +::MAU_MIB::ifMauEntry::ifMauHCFalseCarriers 1.3.6.1.2.1.26.2.1.1.14 ASN1_Unsigned64 read-only +::MAU_MIB::ifJackTable 1.3.6.1.2.1.26.2.2 Table not-accessible +::MAU_MIB::ifJackEntry 1.3.6.1.2.1.26.2.2.1 TableEntry not-accessible +::MAU_MIB::ifJackEntry::ifJackIndex 1.3.6.1.2.1.26.2.2.1.1 ASN1_Integer not-accessible +::MAU_MIB::ifJackEntry::ifJackType 1.3.6.1.2.1.26.2.2.1.2 ASN1_Integer read-only +::MAU_MIB::dot3BroadMauBasicGroup 1.3.6.1.2.1.26.3 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::dot3IfMauAutoNegGroup 1.3.6.1.2.1.26.5 Group not-accessible +::MAU_MIB::ifMauAutoNegTable 1.3.6.1.2.1.26.5.1 Table not-accessible +::MAU_MIB::ifMauAutoNegEntry 1.3.6.1.2.1.26.5.1.1 TableEntry not-accessible +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegAdminStatus 1.3.6.1.2.1.26.5.1.1.1 ASN1_Integer read-write +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegRemoteSignaling 1.3.6.1.2.1.26.5.1.1.2 ASN1_Integer read-only +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegConfig 1.3.6.1.2.1.26.5.1.1.4 ASN1_Integer read-only +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegRestart 1.3.6.1.2.1.26.5.1.1.8 ASN1_Integer read-write +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegCapabilityBits 1.3.6.1.2.1.26.5.1.1.9 ASN1_OctetString read-only +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegCapAdvertisedBits 1.3.6.1.2.1.26.5.1.1.10 ASN1_OctetString read-write +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegCapReceivedBits 1.3.6.1.2.1.26.5.1.1.11 ASN1_OctetString read-only +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegRemoteFaultAdvertised 1.3.6.1.2.1.26.5.1.1.12 ASN1_Integer read-write +::MAU_MIB::ifMauAutoNegEntry::ifMauAutoNegRemoteFaultReceived 1.3.6.1.2.1.26.5.1.1.13 ASN1_Integer read-only +::MAU_MIB::mauMod 1.3.6.1.2.1.26.6 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::mauModConf 1.3.6.1.2.1.26.6.1 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::mauModCompls 1.3.6.1.2.1.26.6.1.1 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::mauModObjGrps 1.3.6.1.2.1.26.6.1.2 ASN1_ObjectIdentifier not-accessible +::MAU_MIB::mauModNotGrps 1.3.6.1.2.1.26.6.1.3 ASN1_ObjectIdentifier not-accessible diff --git a/test/dumps/corba/Makefile.am b/test/dumps/corba/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/corba/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/corba/Makefile.in b/test/dumps/corba/Makefile.in new file mode 100644 index 0000000..58e9e83 --- /dev/null +++ b/test/dumps/corba/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/corba +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/corba/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/corba/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/corba/RMON2_MIB.idl b/test/dumps/corba/RMON2_MIB.idl new file mode 100644 index 0000000..6f34a04 --- /dev/null +++ b/test/dumps/corba/RMON2_MIB.idl @@ -0,0 +1,3707 @@ +/* -- DO NOT EDIT -- + * Generated by smidump version 0.4.8: + * smidump -f corba RMON2-MIB + * + * Derived from RMON2-MIB: + * The MIB module for managing remote monitoring + * device implementations. This MIB module + * extends the architecture introduced in the original + * RMON MIB as specified in RFC 2819. + * + * Copyright (C) The Internet Society (2006). This version of + * this MIB module is part of RFC 4502; see the RFC itself for + * full legal notices. + * + * Revision 2006-05-02 00:00: + * This version updates the proposed-standard version of the + * RMON2 MIB (published as RFC 2021) by adding 2 new + * enumerations to the nlMatrixTopNControlRateBase object and + * 4 new enumerations to the alMatrixTopNControlRateBase object. + * These new enumerations support the creation of high-capacity + * topN reports in the High Capacity RMON MIB [RFC3273]. + * + * Additionally, the following objects have been deprecated, as + * they have not had enough independent implementations to + * demonstrate interoperability to meet the requirements of a + * Draft Standard: + * + * probeDownloadFile + * probeDownloadTFTPServer + * probeDownloadAction + * probeDownloadStatus + * + * + * + * serialMode + * serialProtocol + * serialTimeout + * serialModemInitString + * serialModemHangUpString + * serialModemConnectResp + * serialModemNoConnectResp + * serialDialoutTimeout + * serialStatus + * serialConnectDestIpAddress + * serialConnectType + * serialConnectDialString + * serialConnectSwitchConnectSeq + * serialConnectSwitchDisconnectSeq + * serialConnectSwitchResetSeq + * serialConnectOwner + * serialConnectStatus + * netConfigIPAddress + * netConfigSubnetMask + * netConfigStatus + * netDefaultGateway + * tokenRingMLStats2DroppedFrames + * tokenRingMLStats2CreateTime + * tokenRingPStats2DroppedFrames + * tokenRingPStats2CreateTime + * ringStationControl2DroppedFrames + * ringStationControl2CreateTime + * sourceRoutingStats2DroppedFrames + * sourceRoutingStats2CreateTime + * trapDestIndex + * trapDestCommunity + * trapDestProtocol + * trapDestAddress + * trapDestOwner + * trapDestStatus + * + * In addition, two corrections were made. The LastCreateTime + * Textual Convention had been defined with a base type of + * another textual convention, which isn't allowed in SMIv2. The + * definition has been modified to use TimeTicks as the base + * type. + * + * Further, the SerialConfigEntry SEQUENCE definition included + * sub-typing information that is not allowed in SMIv2. This + * information has been deleted. Ranges were added to a number of + * objects and textual-conventions to constrain their maximum + * (and sometimes minimum) sizes. The addition of these ranges + * documents existing practice for these objects. These objects + * + * + * + * are: + * ControlString + * protocolDirID + * protocolDirParameters + * addressMapNetworkAddress + * nlHostAddress + * nlMatrixSDSourceAddress + * nlMatrixSDDestAddress + * nlMatrixDSSourceAddress + * nlMatrixDSDestAddress + * nlMatrixTopNSourceAddress + * nlMatrixTopNDestAddress + * alHostEntry + * alMatrixSDEntry + * alMatrixDSEntry + * alMatrixTopNSourceAddress + * alMatrixTopNDestAddress + * + * Finally, the TimeFilter TC has been updated to encourage agent + * implementations that allow a MIB walk to behave well even when + * performed by an application that is not aware of the special + * TimeFilter semantics. + * + * Revision 2002-07-08 00:00: + * Added new enumerations to support the High-Capacity RMON + * MIB as defined in RFC 3273. Also fixed some typos and + * added clarifications. + * + * Revision 1996-05-27 00:00: + * Original version. Published as RFC 2021. + * + * $Id: RMON2_MIB.idl 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _RMON2_MIB_IDL_ +#define _RMON2_MIB_IDL_ + +#include +#include +#include +#include +#include +#include + +module RMON2_MIB { + + typedef IF_MIB::InterfaceIndexType InterfaceIndexType; + typedef RMON_MIB::OwnerStringType OwnerStringType; + typedef SNMPv2_SMI::Counter32Type Counter32Type; + typedef SNMPv2_SMI::Gauge32Type Gauge32Type; + typedef SNMPv2_SMI::Integer32Type Integer32Type; + typedef SNMPv2_SMI::IpAddressType IpAddressType; + typedef SNMPv2_TC::RowStatusType RowStatusType; + typedef SNMPv2_TC::TimeStampType TimeStampType; + + const string moduleIdentity = "rmon"; + const ASN1_ObjectIdentifier rmon = "::RMON2_MIB::rmon"; + + /* + The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices. + + LAST-UPDATED: 200605020000Z + + ORGANIZATION: + "IETF RMON MIB Working Group" + + CONTACT-INFO: + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: " + + REVISION: "200605020000Z" + REVISION-DESCRIPTION: + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics." + + REVISION: "200207080000Z" + REVISION-DESCRIPTION: + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications." + + REVISION: "199605270000Z" + REVISION-DESCRIPTION: + "Original version. Published as RFC 2021." + + */ + + /* + This TC describes an object that 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. + */ + typedef ASN1_Unsigned ZeroBasedCounter32Type; + + /* + This TC describes an object that stores the value of the + sysUpTime object at 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. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects. + */ + typedef ASN1_Unsigned LastCreateTimeType; + + /* + To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk. + */ + typedef ASN1_Unsigned TimeFilterType; + + /* + 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 [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + */ + typedef ASN1_ObjectIdentifier DataSourceType; + + /* + 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 store 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, i.e., + 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. + */ + typedef ASN1_OctetString ControlStringType; + + typedef ASN1_Integer FilterProtocolDirDataLocalIndexType; + + typedef ASN1_Integer FilterProtocolDirLocalIndexType; + + typedef ASN1_OctetString ProtocolDirIDType; + + typedef ASN1_OctetString ProtocolDirParametersType; + + typedef ASN1_Integer ProtocolDirLocalIndexType; + + typedef ASN1_OctetString ProtocolDirDescrType; + + typedef ASN1_OctetString ProtocolDirTypeType; + + typedef ASN1_Integer ProtocolDirAddressMapConfigType; + const ProtocolDirAddressMapConfigType ProtocolDirAddressMapConfigType_notSupported = 1; + const ProtocolDirAddressMapConfigType ProtocolDirAddressMapConfigType_supportedOff = 2; + const ProtocolDirAddressMapConfigType ProtocolDirAddressMapConfigType_supportedOn = 3; + const string ProtocolDirAddressMapConfigType_NameNumberList = "notSupported (1) , supportedOff (2) , supportedOn (3)"; + + typedef ASN1_Integer ProtocolDirHostConfigType; + const ProtocolDirHostConfigType ProtocolDirHostConfigType_notSupported = 1; + const ProtocolDirHostConfigType ProtocolDirHostConfigType_supportedOff = 2; + const ProtocolDirHostConfigType ProtocolDirHostConfigType_supportedOn = 3; + const string ProtocolDirHostConfigType_NameNumberList = "notSupported (1) , supportedOff (2) , supportedOn (3)"; + + typedef ASN1_Integer ProtocolDirMatrixConfigType; + const ProtocolDirMatrixConfigType ProtocolDirMatrixConfigType_notSupported = 1; + const ProtocolDirMatrixConfigType ProtocolDirMatrixConfigType_supportedOff = 2; + const ProtocolDirMatrixConfigType ProtocolDirMatrixConfigType_supportedOn = 3; + const string ProtocolDirMatrixConfigType_NameNumberList = "notSupported (1) , supportedOff (2) , supportedOn (3)"; + + typedef ASN1_Integer ProtocolDistControlIndexType; + + typedef ASN1_Integer AddressMapMaxDesiredEntriesType; + + typedef ASN1_Integer AddressMapControlIndexType; + + typedef ASN1_OctetString AddressMapNetworkAddressType; + + typedef ASN1_Integer HlHostControlIndexType; + + typedef ASN1_Integer HlHostControlNlMaxDesiredEntriesType; + + typedef ASN1_Integer HlHostControlAlMaxDesiredEntriesType; + + typedef ASN1_OctetString NlHostAddressType; + + typedef ASN1_Integer HlMatrixControlIndexType; + + typedef ASN1_Integer HlMatrixControlNlMaxDesiredEntriesType; + + typedef ASN1_Integer HlMatrixControlAlMaxDesiredEntriesType; + + typedef ASN1_OctetString NlMatrixSDSourceAddressType; + + typedef ASN1_OctetString NlMatrixSDDestAddressType; + + typedef ASN1_OctetString NlMatrixDSSourceAddressType; + + typedef ASN1_OctetString NlMatrixDSDestAddressType; + + typedef ASN1_Integer NlMatrixTopNControlIndexType; + + typedef ASN1_Integer NlMatrixTopNControlMatrixIndexType; + + typedef ASN1_Integer NlMatrixTopNControlRateBaseType; + const NlMatrixTopNControlRateBaseType NlMatrixTopNControlRateBaseType_nlMatrixTopNPkts = 1; + const NlMatrixTopNControlRateBaseType NlMatrixTopNControlRateBaseType_nlMatrixTopNOctets = 2; + const NlMatrixTopNControlRateBaseType NlMatrixTopNControlRateBaseType_nlMatrixTopNHighCapacityPkts = 3; + const NlMatrixTopNControlRateBaseType NlMatrixTopNControlRateBaseType_nlMatrixTopNHighCapacityOctets = 4; + const string NlMatrixTopNControlRateBaseType_NameNumberList = "nlMatrixTopNPkts (1) , nlMatrixTopNOctets (2) , nlMatrixTopNHighCapacityPkts (3) , nlMatrixTopNHighCapacityOctets (4)"; + + typedef ASN1_Integer NlMatrixTopNControlTimeRemainingType; + + typedef ASN1_Integer NlMatrixTopNControlRequestedSizeType; + + typedef ASN1_Integer NlMatrixTopNControlGrantedSizeType; + + typedef ASN1_Integer NlMatrixTopNIndexType; + + typedef ASN1_Integer NlMatrixTopNProtocolDirLocalIndexType; + + typedef ASN1_OctetString NlMatrixTopNSourceAddressType; + + typedef ASN1_OctetString NlMatrixTopNDestAddressType; + + typedef ASN1_Integer AlMatrixTopNControlIndexType; + + typedef ASN1_Integer AlMatrixTopNControlMatrixIndexType; + + typedef ASN1_Integer AlMatrixTopNControlRateBaseType; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNTerminalsPkts = 1; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNTerminalsOctets = 2; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNAllPkts = 3; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNAllOctets = 4; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNTerminalsHighCapacityPkts = 5; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNTerminalsHighCapacityOctets = 6; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNAllHighCapacityPkts = 7; + const AlMatrixTopNControlRateBaseType AlMatrixTopNControlRateBaseType_alMatrixTopNAllHighCapacityOctets = 8; + const string AlMatrixTopNControlRateBaseType_NameNumberList = "alMatrixTopNTerminalsPkts (1) , alMatrixTopNTerminalsOctets (2) , alMatrixTopNAllPkts (3) , alMatrixTopNAllOctets (4) , alMatrixTopNTerminalsHighCapacityPkts (5) , alMatrixTopNTerminalsHighCapacityOctets (6) , alMatrixTopNAllHighCapacityPkts (7) , alMatrixTopNAllHighCapacityOctets (8)"; + + typedef ASN1_Integer AlMatrixTopNControlTimeRemainingType; + + typedef ASN1_Integer AlMatrixTopNControlRequestedSizeType; + + typedef ASN1_Integer AlMatrixTopNControlGrantedSizeType; + + typedef ASN1_Integer AlMatrixTopNIndexType; + + typedef ASN1_Integer AlMatrixTopNProtocolDirLocalIndexType; + + typedef ASN1_OctetString AlMatrixTopNSourceAddressType; + + typedef ASN1_OctetString AlMatrixTopNDestAddressType; + + typedef ASN1_Integer AlMatrixTopNAppProtocolDirLocalIndexType; + + typedef ASN1_Integer UsrHistoryControlIndexType; + + typedef ASN1_Integer UsrHistoryControlObjectsType; + + typedef ASN1_Integer UsrHistoryControlBucketsRequestedType; + + typedef ASN1_Integer UsrHistoryControlBucketsGrantedType; + + typedef ASN1_Integer UsrHistoryControlIntervalType; + + typedef ASN1_Integer UsrHistoryObjectIndexType; + + typedef ASN1_Integer UsrHistoryObjectSampleTypeType; + const UsrHistoryObjectSampleTypeType UsrHistoryObjectSampleTypeType_absoluteValue = 1; + const UsrHistoryObjectSampleTypeType UsrHistoryObjectSampleTypeType_deltaValue = 2; + const string UsrHistoryObjectSampleTypeType_NameNumberList = "absoluteValue (1) , deltaValue (2)"; + + typedef ASN1_Integer UsrHistorySampleIndexType; + + typedef ASN1_Integer UsrHistoryValStatusType; + const UsrHistoryValStatusType UsrHistoryValStatusType_valueNotAvailable = 1; + const UsrHistoryValStatusType UsrHistoryValStatusType_valuePositive = 2; + const UsrHistoryValStatusType UsrHistoryValStatusType_valueNegative = 3; + const string UsrHistoryValStatusType_NameNumberList = "valueNotAvailable (1) , valuePositive (2) , valueNegative (3)"; + + typedef ASN1_OctetString ProbeCapabilitiesType; + + typedef ASN1_OctetString ProbeSoftwareRevType; + + typedef ASN1_OctetString ProbeHardwareRevType; + + typedef ASN1_OctetString ProbeDateTimeType; + + typedef ASN1_Integer ProbeResetControlType; + const ProbeResetControlType ProbeResetControlType_running = 1; + const ProbeResetControlType ProbeResetControlType_warmBoot = 2; + const ProbeResetControlType ProbeResetControlType_coldBoot = 3; + const string ProbeResetControlType_NameNumberList = "running (1) , warmBoot (2) , coldBoot (3)"; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface etherStats2Entry : RMON_MIB::etherStatsEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type etherStatsDroppedFrames; + + /* + 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. + */ + readonly attribute LastCreateTimeType etherStatsCreateTime; + }; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface historyControl2Entry : RMON_MIB::historyControlEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type historyControlDroppedFrames; + }; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface hostControl2Entry : RMON_MIB::hostControlEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type hostControlDroppedFrames; + + /* + 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. + */ + readonly attribute LastCreateTimeType hostControlCreateTime; + }; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface matrixControl2Entry : RMON_MIB::matrixControlEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type matrixControlDroppedFrames; + + /* + 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. + */ + readonly attribute LastCreateTimeType matrixControlCreateTime; + }; + + + /* + Contains the RMON-2 augmentations to RMON-1. + */ + interface channel2Entry : RMON_MIB::channelEntry { + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type channelDroppedFrames; + + /* + 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. + */ + readonly attribute LastCreateTimeType channelCreateTime; + }; + + + /* + Provides a variable-length packet filter feature to the + RMON-1 filter table. + */ + interface filter2Entry : RMON_MIB::filterEntry { + + /* + 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. + */ + attribute FilterProtocolDirDataLocalIndexType filterProtocolDirDataLocalIndex; + + /* + 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. + */ + attribute FilterProtocolDirLocalIndexType filterProtocolDirLocalIndex; + }; + + interface protocolDir : SNMPMgmt::SmiEntry { + + /* + The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig. + */ + readonly attribute TimeStampType protocolDirLastChange; + + /* + 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. + */ + SNMPMgmt::SmiTableIterator get_protocolDirTable(); + }; + + + /* + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface protocolDirEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "protocolDirID protocolDirParameters"; + + /* + 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 that the protocol directory + entry is deleted. + */ + readonly attribute ProtocolDirLocalIndexType protocolDirLocalIndex; + + /* + 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). + */ + attribute ProtocolDirDescrType protocolDirDescr; + + /* + This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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. + */ + readonly attribute ProtocolDirTypeType protocolDirType; + + /* + 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. + */ + attribute ProtocolDirAddressMapConfigType protocolDirAddressMapConfig; + + /* + 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, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols. + */ + attribute ProtocolDirHostConfigType protocolDirHostConfig; + + /* + 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 + 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, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols. + */ + attribute ProtocolDirMatrixConfigType protocolDirMatrixConfig; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType protocolDirOwner; + + /* + 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. + */ + attribute RowStatusType protocolDirStatus; + }; + + interface protocolDist : SNMPMgmt::SmiEntry { + + /* + 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. + */ + SNMPMgmt::SmiTableIterator get_protocolDistControlTable(); + + /* + An entry is made in this table for every protocol in the + protocolDirTable that 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. + */ + SNMPMgmt::SmiTableIterator get_protocolDistStatsTable(); + }; + + + /* + A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7 + */ + interface protocolDistControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "protocolDistControlIndex"; + + /* + 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). + */ + attribute DataSourceType protocolDistControlDataSource; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type protocolDistControlDroppedFrames; + + /* + 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. + */ + readonly attribute LastCreateTimeType protocolDistControlCreateTime; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType protocolDistControlOwner; + + /* + 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. + */ + attribute RowStatusType protocolDistControlStatus; + }; + + + /* + 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 and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18 + */ + interface protocolDistStatsEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "protocolDistControlIndex protocolDirLocalIndex"; + + /* + The number of packets of this protocol type received + without errors. 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. + */ + readonly attribute ZeroBasedCounter32Type protocolDistStatsPkts; + + /* + The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol. + */ + readonly attribute ZeroBasedCounter32Type protocolDistStatsOctets; + }; + + interface addressMap : SNMPMgmt::SmiEntry { + + /* + 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. + */ + readonly attribute Counter32Type addressMapInserts; + + /* + 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. + */ + readonly attribute Counter32Type addressMapDeletes; + + /* + 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. + */ + attribute AddressMapMaxDesiredEntriesType addressMapMaxDesiredEntries; + + /* + A table to control the collection of mappings from network + layer address to physical address to interface. + + 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. + */ + SNMPMgmt::SmiTableIterator get_addressMapControlTable(); + + /* + A table of mappings from network layer address to physical + address to interface. + + 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). + */ + SNMPMgmt::SmiTableIterator get_addressMapTable(); + }; + + + /* + A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1 + */ + interface addressMapControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "addressMapControlIndex"; + + /* + The source of data for this addressMapControlEntry. + */ + attribute DataSourceType addressMapControlDataSource; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type addressMapControlDroppedFrames; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType addressMapControlOwner; + + /* + 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. + */ + attribute RowStatusType addressMapControlStatus; + }; + + + /* + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface addressMapEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "addressMapTimeMark protocolDirLocalIndex addressMapNetworkAddress addressMapSource"; + + /* + 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. + */ + readonly attribute ASN1_OctetString addressMapPhysicalAddress; + + /* + 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. + */ + readonly attribute TimeStampType addressMapLastChange; + }; + + interface nlHost : SNMPMgmt::SmiEntry { + + /* + 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 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. + */ + SNMPMgmt::SmiTableIterator get_hlHostControlTable(); + + /* + 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. + */ + SNMPMgmt::SmiTableIterator get_nlHostTable(); + }; + + + /* + A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1 + */ + interface hlHostControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlHostControlIndex"; + + /* + 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). + */ + attribute DataSourceType hlHostControlDataSource; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type hlHostControlNlDroppedFrames; + + /* + 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. + */ + readonly attribute Counter32Type hlHostControlNlInserts; + + /* + 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. + */ + readonly attribute Counter32Type hlHostControlNlDeletes; + + /* + 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. + */ + attribute HlHostControlNlMaxDesiredEntriesType hlHostControlNlMaxDesiredEntries; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type hlHostControlAlDroppedFrames; + + /* + 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. + */ + readonly attribute Counter32Type hlHostControlAlInserts; + + /* + 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. + */ + readonly attribute Counter32Type hlHostControlAlDeletes; + + /* + 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. + */ + attribute HlHostControlAlMaxDesiredEntriesType hlHostControlAlMaxDesiredEntries; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType hlHostControlOwner; + + /* + 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. + */ + attribute RowStatusType hlHostControlStatus; + }; + + + /* + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations. + */ + interface nlHostEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlHostControlIndex nlHostTimeMark protocolDirLocalIndex nlHostAddress"; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type nlHostInPkts; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type nlHostOutPkts; + + /* + The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type nlHostInOctets; + + /* + The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type nlHostOutOctets; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type nlHostOutMacNonUnicastPkts; + + /* + 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. + */ + readonly attribute LastCreateTimeType nlHostCreateTime; + }; + + interface nlMatrix : SNMPMgmt::SmiEntry { + + /* + 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 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. + */ + SNMPMgmt::SmiTableIterator get_hlMatrixControlTable(); + + /* + A list of traffic matrix entries that 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. + */ + SNMPMgmt::SmiTableIterator get_nlMatrixSDTable(); + + /* + A list of traffic matrix entries that 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. + */ + SNMPMgmt::SmiTableIterator get_nlMatrixDSTable(); + + /* + A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric. + */ + SNMPMgmt::SmiTableIterator get_nlMatrixTopNControlTable(); + + /* + A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets. + */ + SNMPMgmt::SmiTableIterator get_nlMatrixTopNTable(); + }; + + + /* + A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1 + */ + interface hlMatrixControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex"; + + /* + 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). + */ + attribute DataSourceType hlMatrixControlDataSource; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type hlMatrixControlNlDroppedFrames; + + /* + 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. + */ + readonly attribute Counter32Type hlMatrixControlNlInserts; + + /* + 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. + */ + readonly attribute Counter32Type hlMatrixControlNlDeletes; + + /* + 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. + */ + attribute HlMatrixControlNlMaxDesiredEntriesType hlMatrixControlNlMaxDesiredEntries; + + /* + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + */ + readonly attribute Counter32Type hlMatrixControlAlDroppedFrames; + + /* + 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. + */ + readonly attribute Counter32Type hlMatrixControlAlInserts; + + /* + 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. + */ + readonly attribute Counter32Type hlMatrixControlAlDeletes; + + /* + 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. + */ + attribute HlMatrixControlAlMaxDesiredEntriesType hlMatrixControlAlMaxDesiredEntries; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType hlMatrixControlOwner; + + /* + 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 alMatrixDSTable + shall be deleted by the agent. + */ + attribute RowStatusType hlMatrixControlStatus; + }; + + + /* + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface nlMatrixSDEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex nlMatrixSDTimeMark protocolDirLocalIndex nlMatrixSDSourceAddress nlMatrixSDDestAddress"; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type nlMatrixSDPkts; + + /* + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type nlMatrixSDOctets; + + /* + 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. + */ + readonly attribute LastCreateTimeType nlMatrixSDCreateTime; + }; + + + /* + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface nlMatrixDSEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex nlMatrixDSTimeMark protocolDirLocalIndex nlMatrixDSDestAddress nlMatrixDSSourceAddress"; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type nlMatrixDSPkts; + + /* + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type nlMatrixDSOctets; + + /* + 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. + */ + readonly attribute LastCreateTimeType nlMatrixDSCreateTime; + }; + + + /* + A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3 + */ + interface nlMatrixTopNControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "nlMatrixTopNControlIndex"; + + /* + The nlMatrix[SD/DS] table for which a topN 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). + */ + attribute NlMatrixTopNControlMatrixIndexType nlMatrixTopNControlMatrixIndex; + + /* + The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object. + */ + attribute NlMatrixTopNControlRateBaseType nlMatrixTopNControlRateBase; + + /* + 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). + */ + attribute NlMatrixTopNControlTimeRemainingType nlMatrixTopNControlTimeRemaining; + + /* + The number of reports that have been generated by this entry. + */ + readonly attribute Counter32Type nlMatrixTopNControlGeneratedReports; + + /* + 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. + */ + readonly attribute ASN1_Integer nlMatrixTopNControlDuration; + + /* + 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 possible for the particular probe + implementation and available resources. + */ + attribute NlMatrixTopNControlRequestedSizeType nlMatrixTopNControlRequestedSize; + + /* + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available. + */ + readonly attribute NlMatrixTopNControlGrantedSizeType nlMatrixTopNControlGrantedSize; + + /* + The value of sysUpTime when this topN 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 whether a report was missed. + */ + readonly attribute TimeStampType nlMatrixTopNControlStartTime; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType nlMatrixTopNControlOwner; + + /* + 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. + */ + attribute RowStatusType nlMatrixTopNControlStatus; + }; + + + /* + 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 + */ + interface nlMatrixTopNEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "nlMatrixTopNControlIndex nlMatrixTopNIndex"; + + /* + The protocolDirLocalIndex of the network-layer protocol of + this entry's network address. + */ + readonly attribute NlMatrixTopNProtocolDirLocalIndexType nlMatrixTopNProtocolDirLocalIndex; + + /* + 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. + */ + readonly attribute NlMatrixTopNSourceAddressType nlMatrixTopNSourceAddress; + + /* + 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. + */ + readonly attribute NlMatrixTopNDestAddressType nlMatrixTopNDestAddress; + + /* + 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. + */ + readonly attribute Gauge32Type nlMatrixTopNPktRate; + + /* + 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. + */ + readonly attribute Gauge32Type nlMatrixTopNReversePktRate; + + /* + 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. + */ + readonly attribute Gauge32Type nlMatrixTopNOctetRate; + + /* + 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. + */ + readonly attribute Gauge32Type nlMatrixTopNReverseOctetRate; + }; + + interface alHost : SNMPMgmt::SmiEntry { + + /* + 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. + */ + SNMPMgmt::SmiTableIterator get_alHostTable(); + }; + + + /* + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface alHostEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlHostControlIndex alHostTimeMark protocolDirLocalIndex nlHostAddress protocolDirLocalIndex"; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type alHostInPkts; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type alHostOutPkts; + + /* + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type alHostInOctets; + + /* + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type alHostOutOctets; + + /* + 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. + */ + readonly attribute LastCreateTimeType alHostCreateTime; + }; + + interface alMatrix : SNMPMgmt::SmiEntry { + + /* + A list of application traffic matrix entries that 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. + */ + SNMPMgmt::SmiTableIterator get_alMatrixSDTable(); + + /* + A list of application traffic matrix entries that 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. + */ + SNMPMgmt::SmiTableIterator get_alMatrixDSTable(); + + /* + A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric. + */ + SNMPMgmt::SmiTableIterator get_alMatrixTopNControlTable(); + + /* + A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets. + */ + SNMPMgmt::SmiTableIterator get_alMatrixTopNTable(); + }; + + + /* + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface alMatrixSDEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex alMatrixSDTimeMark protocolDirLocalIndex nlMatrixSDSourceAddress nlMatrixSDDestAddress protocolDirLocalIndex"; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type alMatrixSDPkts; + + /* + 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 octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type alMatrixSDOctets; + + /* + 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. + */ + readonly attribute LastCreateTimeType alMatrixSDCreateTime; + }; + + + /* + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + */ + interface alMatrixDSEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "hlMatrixControlIndex alMatrixDSTimeMark protocolDirLocalIndex nlMatrixDSDestAddress nlMatrixDSSourceAddress protocolDirLocalIndex"; + + /* + 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. + */ + readonly attribute ZeroBasedCounter32Type alMatrixDSPkts; + + /* + 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 octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + */ + readonly attribute ZeroBasedCounter32Type alMatrixDSOctets; + + /* + 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. + */ + readonly attribute LastCreateTimeType alMatrixDSCreateTime; + }; + + + /* + A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3 + */ + interface alMatrixTopNControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "alMatrixTopNControlIndex"; + + /* + The alMatrix[SD/DS] table for which a topN 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). + */ + attribute AlMatrixTopNControlMatrixIndexType alMatrixTopNControlMatrixIndex; + + /* + This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1). + */ + attribute AlMatrixTopNControlRateBaseType alMatrixTopNControlRateBase; + + /* + 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). + */ + attribute AlMatrixTopNControlTimeRemainingType alMatrixTopNControlTimeRemaining; + + /* + The number of reports that have been generated by this entry. + */ + readonly attribute Counter32Type alMatrixTopNControlGeneratedReports; + + /* + 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. + */ + readonly attribute ASN1_Integer alMatrixTopNControlDuration; + + /* + 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 possible for the particular probe + implementation and available resources. + */ + attribute AlMatrixTopNControlRequestedSizeType alMatrixTopNControlRequestedSize; + + /* + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available. + */ + readonly attribute AlMatrixTopNControlGrantedSizeType alMatrixTopNControlGrantedSize; + + /* + The value of sysUpTime when this topN 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 whether a report was missed. + */ + readonly attribute TimeStampType alMatrixTopNControlStartTime; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType alMatrixTopNControlOwner; + + /* + 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. + */ + attribute RowStatusType alMatrixTopNControlStatus; + }; + + + /* + 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 + */ + interface alMatrixTopNEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "alMatrixTopNControlIndex alMatrixTopNIndex"; + + /* + The protocolDirLocalIndex of the network-layer protocol of + this entry's network address. + */ + readonly attribute AlMatrixTopNProtocolDirLocalIndexType alMatrixTopNProtocolDirLocalIndex; + + /* + 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. + */ + readonly attribute AlMatrixTopNSourceAddressType alMatrixTopNSourceAddress; + + /* + 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. + */ + readonly attribute AlMatrixTopNDestAddressType alMatrixTopNDestAddress; + + /* + The type of the protocol counted by this matrix entry. + */ + readonly attribute AlMatrixTopNAppProtocolDirLocalIndexType alMatrixTopNAppProtocolDirLocalIndex; + + /* + 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. + */ + readonly attribute Gauge32Type alMatrixTopNPktRate; + + /* + 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. + */ + readonly attribute Gauge32Type alMatrixTopNReversePktRate; + + /* + 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. + */ + readonly attribute Gauge32Type alMatrixTopNOctetRate; + + /* + 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. + */ + readonly attribute Gauge32Type alMatrixTopNReverseOctetRate; + }; + + interface usrHistory : SNMPMgmt::SmiEntry { + + /* + A list of data-collection configuration entries. + */ + SNMPMgmt::SmiTableIterator get_usrHistoryControlTable(); + + /* + A list of data-collection configuration entries. + */ + SNMPMgmt::SmiTableIterator get_usrHistoryObjectTable(); + + /* + A list of user-defined history entries. + */ + SNMPMgmt::SmiTableIterator get_usrHistoryTable(); + }; + + + /* + 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 + */ + interface usrHistoryControlEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "usrHistoryControlIndex"; + + /* + 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). + */ + attribute UsrHistoryControlObjectsType usrHistoryControlObjects; + + /* + 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 possible for the particular probe + implementation and available resources. + */ + attribute UsrHistoryControlBucketsRequestedType usrHistoryControlBucketsRequested; + + /* + 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 + 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. + */ + readonly attribute UsrHistoryControlBucketsGrantedType usrHistoryControlBucketsGranted; + + /* + 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 to 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). + */ + attribute UsrHistoryControlIntervalType usrHistoryControlInterval; + + /* + The entity that configured this entry and is + therefore using the resources assigned to it. + */ + attribute OwnerStringType usrHistoryControlOwner; + + /* + 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. + */ + attribute RowStatusType usrHistoryControlStatus; + }; + + + /* + 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 + */ + interface usrHistoryObjectEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "usrHistoryControlIndex usrHistoryObjectIndex"; + + /* + 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. See USM [RFC3414] and VACM [RFC3415] for more + information. + + 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). + */ + attribute ASN1_ObjectIdentifier usrHistoryObjectVariable; + + /* + 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). + */ + attribute UsrHistoryObjectSampleTypeType usrHistoryObjectSampleType; + }; + + + /* + A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that 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 + */ + interface usrHistoryEntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "usrHistoryControlIndex usrHistorySampleIndex usrHistoryObjectIndex"; + + /* + 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 that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval. + */ + readonly attribute TimeStampType usrHistoryIntervalStart; + + /* + The value of sysUpTime at the end of the interval over which + this sample was measured. + */ + readonly attribute TimeStampType usrHistoryIntervalEnd; + + /* + 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)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + */ + readonly attribute Gauge32Type usrHistoryAbsValue; + + /* + 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 the 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. + */ + readonly attribute UsrHistoryValStatusType usrHistoryValStatus; + }; + + interface probeConfig : SNMPMgmt::SmiEntry { + + /* + An indication of the RMON MIB groups supported + on at least one interface by this probe. + */ + readonly attribute ProbeCapabilitiesType probeCapabilities; + + /* + The software revision of this device. This string will have + a zero length if the revision is unknown. + */ + readonly attribute ProbeSoftwareRevType probeSoftwareRev; + + /* + The hardware revision of this device. This string will have + a zero length if the revision is unknown. + */ + readonly attribute ProbeHardwareRevType probeHardwareRev; + + /* + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned. + */ + attribute ProbeDateTimeType probeDateTime; + + /* + 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 to restart the application software. When the device + is running normally, this variable has a value of + running(1). + */ + attribute ProbeResetControlType probeResetControl; + }; + + interface SmiEntryFactory : SNMPMgmt::GenericFactory { + + filter2Entry create_filter2Entry ( + in FilterProtocolDirDataLocalIndexType filterProtocolDirDataLocalIndex, + in FilterProtocolDirLocalIndexType filterProtocolDirLocalIndex + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + protocolDirEntry create_protocolDirEntry ( + in ProtocolDirIDType protocolDirID, + in ProtocolDirParametersType protocolDirParameters, + in ProtocolDirDescrType protocolDirDescr, + in ProtocolDirAddressMapConfigType protocolDirAddressMapConfig, + in ProtocolDirHostConfigType protocolDirHostConfig, + in ProtocolDirMatrixConfigType protocolDirMatrixConfig, + in OwnerStringType protocolDirOwner, + in RowStatusType protocolDirStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + protocolDistControlEntry create_protocolDistControlEntry ( + in ProtocolDistControlIndexType protocolDistControlIndex, + in DataSourceType protocolDistControlDataSource, + in OwnerStringType protocolDistControlOwner, + in RowStatusType protocolDistControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + addressMap create_addressMap ( + in AddressMapMaxDesiredEntriesType addressMapMaxDesiredEntries + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + addressMapControlEntry create_addressMapControlEntry ( + in AddressMapControlIndexType addressMapControlIndex, + in DataSourceType addressMapControlDataSource, + in OwnerStringType addressMapControlOwner, + in RowStatusType addressMapControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + hlHostControlEntry create_hlHostControlEntry ( + in HlHostControlIndexType hlHostControlIndex, + in DataSourceType hlHostControlDataSource, + in HlHostControlNlMaxDesiredEntriesType hlHostControlNlMaxDesiredEntries, + in HlHostControlAlMaxDesiredEntriesType hlHostControlAlMaxDesiredEntries, + in OwnerStringType hlHostControlOwner, + in RowStatusType hlHostControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + hlMatrixControlEntry create_hlMatrixControlEntry ( + in HlMatrixControlIndexType hlMatrixControlIndex, + in DataSourceType hlMatrixControlDataSource, + in HlMatrixControlNlMaxDesiredEntriesType hlMatrixControlNlMaxDesiredEntries, + in HlMatrixControlAlMaxDesiredEntriesType hlMatrixControlAlMaxDesiredEntries, + in OwnerStringType hlMatrixControlOwner, + in RowStatusType hlMatrixControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + nlMatrixTopNControlEntry create_nlMatrixTopNControlEntry ( + in NlMatrixTopNControlIndexType nlMatrixTopNControlIndex, + in NlMatrixTopNControlMatrixIndexType nlMatrixTopNControlMatrixIndex, + in NlMatrixTopNControlRateBaseType nlMatrixTopNControlRateBase, + in NlMatrixTopNControlTimeRemainingType nlMatrixTopNControlTimeRemaining, + in NlMatrixTopNControlRequestedSizeType nlMatrixTopNControlRequestedSize, + in OwnerStringType nlMatrixTopNControlOwner, + in RowStatusType nlMatrixTopNControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + alMatrixTopNControlEntry create_alMatrixTopNControlEntry ( + in AlMatrixTopNControlIndexType alMatrixTopNControlIndex, + in AlMatrixTopNControlMatrixIndexType alMatrixTopNControlMatrixIndex, + in AlMatrixTopNControlRateBaseType alMatrixTopNControlRateBase, + in AlMatrixTopNControlTimeRemainingType alMatrixTopNControlTimeRemaining, + in AlMatrixTopNControlRequestedSizeType alMatrixTopNControlRequestedSize, + in OwnerStringType alMatrixTopNControlOwner, + in RowStatusType alMatrixTopNControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + usrHistoryControlEntry create_usrHistoryControlEntry ( + in UsrHistoryControlIndexType usrHistoryControlIndex, + in UsrHistoryControlObjectsType usrHistoryControlObjects, + in UsrHistoryControlBucketsRequestedType usrHistoryControlBucketsRequested, + in UsrHistoryControlIntervalType usrHistoryControlInterval, + in OwnerStringType usrHistoryControlOwner, + in RowStatusType usrHistoryControlStatus + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + usrHistoryObjectEntry create_usrHistoryObjectEntry ( + in UsrHistoryControlIndexType usrHistoryControlIndex, + in UsrHistoryObjectIndexType usrHistoryObjectIndex, + in ASN1_ObjectIdentifier usrHistoryObjectVariable, + in UsrHistoryObjectSampleTypeType usrHistoryObjectSampleType + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + probeConfig create_probeConfig ( + in ProbeDateTimeType probeDateTime, + in ProbeResetControlType probeResetControl + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + }; + + /* pseudo */ + interface DefaultValues { + /* DEFVAL: 0 */ + FilterProtocolDirDataLocalIndexType filterProtocolDirDataLocalIndex(); + + /* DEFVAL: 0 */ + FilterProtocolDirLocalIndexType filterProtocolDirLocalIndex(); + + /* DEFVAL: 1800 */ + NlMatrixTopNControlTimeRemainingType nlMatrixTopNControlTimeRemaining(); + + /* DEFVAL: 150 */ + NlMatrixTopNControlRequestedSizeType nlMatrixTopNControlRequestedSize(); + + /* DEFVAL: 1800 */ + AlMatrixTopNControlTimeRemainingType alMatrixTopNControlTimeRemaining(); + + /* DEFVAL: 150 */ + AlMatrixTopNControlRequestedSizeType alMatrixTopNControlRequestedSize(); + + /* DEFVAL: 50 */ + UsrHistoryControlBucketsRequestedType usrHistoryControlBucketsRequested(); + + /* DEFVAL: 1800 */ + UsrHistoryControlIntervalType usrHistoryControlInterval(); + + /* DEFVAL: direct */ + SerialModeType serialMode(); + + /* DEFVAL: slip */ + SerialProtocolType serialProtocol(); + + /* DEFVAL: 300 */ + SerialTimeoutType serialTimeout(); + + /* DEFVAL: 20 */ + SerialDialoutTimeoutType serialDialoutTimeout(); + + /* DEFVAL: direct */ + SerialConnectTypeType serialConnectType(); + + }; + +}; + +#endif /* !_RMON2_MIB_IDL_ */ diff --git a/test/dumps/corba/RMON2_MIB.oid b/test/dumps/corba/RMON2_MIB.oid new file mode 100644 index 0000000..e4aaab0 --- /dev/null +++ b/test/dumps/corba/RMON2_MIB.oid @@ -0,0 +1,225 @@ +::RMON2_MIB::rmon 1.3.6.1.2.1.16 ASN1_ObjectIdentifier not-accessible +::RMON2_MIB::etherStats2Table 1.3.6.1.2.1.16.1.4 Table not-accessible +::RMON2_MIB::etherStats2Entry 1.3.6.1.2.1.16.1.4.1 TableEntry not-accessible +::RMON2_MIB::etherStats2Entry::etherStatsDroppedFrames 1.3.6.1.2.1.16.1.4.1.1 ASN1_Unsigned read-only +::RMON2_MIB::etherStats2Entry::etherStatsCreateTime 1.3.6.1.2.1.16.1.4.1.2 ASN1_Unsigned read-only +::RMON2_MIB::historyControl2Table 1.3.6.1.2.1.16.2.5 Table not-accessible +::RMON2_MIB::historyControl2Entry 1.3.6.1.2.1.16.2.5.1 TableEntry not-accessible +::RMON2_MIB::historyControl2Entry::historyControlDroppedFrames 1.3.6.1.2.1.16.2.5.1.1 ASN1_Unsigned read-only +::RMON2_MIB::hostControl2Table 1.3.6.1.2.1.16.4.4 Table not-accessible +::RMON2_MIB::hostControl2Entry 1.3.6.1.2.1.16.4.4.1 TableEntry not-accessible +::RMON2_MIB::hostControl2Entry::hostControlDroppedFrames 1.3.6.1.2.1.16.4.4.1.1 ASN1_Unsigned read-only +::RMON2_MIB::hostControl2Entry::hostControlCreateTime 1.3.6.1.2.1.16.4.4.1.2 ASN1_Unsigned read-only +::RMON2_MIB::matrixControl2Table 1.3.6.1.2.1.16.6.4 Table not-accessible +::RMON2_MIB::matrixControl2Entry 1.3.6.1.2.1.16.6.4.1 TableEntry not-accessible +::RMON2_MIB::matrixControl2Entry::matrixControlDroppedFrames 1.3.6.1.2.1.16.6.4.1.1 ASN1_Unsigned read-only +::RMON2_MIB::matrixControl2Entry::matrixControlCreateTime 1.3.6.1.2.1.16.6.4.1.2 ASN1_Unsigned read-only +::RMON2_MIB::channel2Table 1.3.6.1.2.1.16.7.3 Table not-accessible +::RMON2_MIB::channel2Entry 1.3.6.1.2.1.16.7.3.1 TableEntry not-accessible +::RMON2_MIB::channel2Entry::channelDroppedFrames 1.3.6.1.2.1.16.7.3.1.1 ASN1_Unsigned read-only +::RMON2_MIB::channel2Entry::channelCreateTime 1.3.6.1.2.1.16.7.3.1.2 ASN1_Unsigned read-only +::RMON2_MIB::filter2Table 1.3.6.1.2.1.16.7.4 Table not-accessible +::RMON2_MIB::filter2Entry 1.3.6.1.2.1.16.7.4.1 TableEntry not-accessible +::RMON2_MIB::filter2Entry::filterProtocolDirDataLocalIndex 1.3.6.1.2.1.16.7.4.1.1 ASN1_Integer read-create +::RMON2_MIB::filter2Entry::filterProtocolDirLocalIndex 1.3.6.1.2.1.16.7.4.1.2 ASN1_Integer read-create +::RMON2_MIB::protocolDir 1.3.6.1.2.1.16.11 Group not-accessible +::RMON2_MIB::protocolDir::protocolDirLastChange 1.3.6.1.2.1.16.11.1 ASN1_Unsigned read-only +::RMON2_MIB::protocolDirTable 1.3.6.1.2.1.16.11.2 Table not-accessible +::RMON2_MIB::protocolDirEntry 1.3.6.1.2.1.16.11.2.1 TableEntry not-accessible +::RMON2_MIB::protocolDirEntry::protocolDirID 1.3.6.1.2.1.16.11.2.1.1 ASN1_OctetString not-accessible +::RMON2_MIB::protocolDirEntry::protocolDirParameters 1.3.6.1.2.1.16.11.2.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::protocolDirEntry::protocolDirLocalIndex 1.3.6.1.2.1.16.11.2.1.3 ASN1_Integer read-only +::RMON2_MIB::protocolDirEntry::protocolDirDescr 1.3.6.1.2.1.16.11.2.1.4 ASN1_OctetString read-create +::RMON2_MIB::protocolDirEntry::protocolDirType 1.3.6.1.2.1.16.11.2.1.5 ASN1_OctetString read-only +::RMON2_MIB::protocolDirEntry::protocolDirAddressMapConfig 1.3.6.1.2.1.16.11.2.1.6 ASN1_Integer read-create +::RMON2_MIB::protocolDirEntry::protocolDirHostConfig 1.3.6.1.2.1.16.11.2.1.7 ASN1_Integer read-create +::RMON2_MIB::protocolDirEntry::protocolDirMatrixConfig 1.3.6.1.2.1.16.11.2.1.8 ASN1_Integer read-create +::RMON2_MIB::protocolDirEntry::protocolDirOwner 1.3.6.1.2.1.16.11.2.1.9 ASN1_OctetString read-create +::RMON2_MIB::protocolDirEntry::protocolDirStatus 1.3.6.1.2.1.16.11.2.1.10 ASN1_Integer read-create +::RMON2_MIB::protocolDist 1.3.6.1.2.1.16.12 Group not-accessible +::RMON2_MIB::protocolDistControlTable 1.3.6.1.2.1.16.12.1 Table not-accessible +::RMON2_MIB::protocolDistControlEntry 1.3.6.1.2.1.16.12.1.1 TableEntry not-accessible +::RMON2_MIB::protocolDistControlEntry::protocolDistControlIndex 1.3.6.1.2.1.16.12.1.1.1 ASN1_Integer not-accessible +::RMON2_MIB::protocolDistControlEntry::protocolDistControlDataSource 1.3.6.1.2.1.16.12.1.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::protocolDistControlEntry::protocolDistControlDroppedFrames 1.3.6.1.2.1.16.12.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::protocolDistControlEntry::protocolDistControlCreateTime 1.3.6.1.2.1.16.12.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::protocolDistControlEntry::protocolDistControlOwner 1.3.6.1.2.1.16.12.1.1.5 ASN1_OctetString read-create +::RMON2_MIB::protocolDistControlEntry::protocolDistControlStatus 1.3.6.1.2.1.16.12.1.1.6 ASN1_Integer read-create +::RMON2_MIB::protocolDistStatsTable 1.3.6.1.2.1.16.12.2 Table not-accessible +::RMON2_MIB::protocolDistStatsEntry 1.3.6.1.2.1.16.12.2.1 TableEntry not-accessible +::RMON2_MIB::protocolDistStatsEntry::protocolDistStatsPkts 1.3.6.1.2.1.16.12.2.1.1 ASN1_Unsigned read-only +::RMON2_MIB::protocolDistStatsEntry::protocolDistStatsOctets 1.3.6.1.2.1.16.12.2.1.2 ASN1_Unsigned read-only +::RMON2_MIB::addressMap 1.3.6.1.2.1.16.13 Group not-accessible +::RMON2_MIB::addressMap::addressMapInserts 1.3.6.1.2.1.16.13.1 ASN1_Unsigned read-only +::RMON2_MIB::addressMap::addressMapDeletes 1.3.6.1.2.1.16.13.2 ASN1_Unsigned read-only +::RMON2_MIB::addressMap::addressMapMaxDesiredEntries 1.3.6.1.2.1.16.13.3 ASN1_Integer read-write +::RMON2_MIB::addressMapControlTable 1.3.6.1.2.1.16.13.4 Table not-accessible +::RMON2_MIB::addressMapControlEntry 1.3.6.1.2.1.16.13.4.1 TableEntry not-accessible +::RMON2_MIB::addressMapControlEntry::addressMapControlIndex 1.3.6.1.2.1.16.13.4.1.1 ASN1_Integer not-accessible +::RMON2_MIB::addressMapControlEntry::addressMapControlDataSource 1.3.6.1.2.1.16.13.4.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::addressMapControlEntry::addressMapControlDroppedFrames 1.3.6.1.2.1.16.13.4.1.3 ASN1_Unsigned read-only +::RMON2_MIB::addressMapControlEntry::addressMapControlOwner 1.3.6.1.2.1.16.13.4.1.4 ASN1_OctetString read-create +::RMON2_MIB::addressMapControlEntry::addressMapControlStatus 1.3.6.1.2.1.16.13.4.1.5 ASN1_Integer read-create +::RMON2_MIB::addressMapTable 1.3.6.1.2.1.16.13.5 Table not-accessible +::RMON2_MIB::addressMapEntry 1.3.6.1.2.1.16.13.5.1 TableEntry not-accessible +::RMON2_MIB::addressMapEntry::addressMapTimeMark 1.3.6.1.2.1.16.13.5.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::addressMapEntry::addressMapNetworkAddress 1.3.6.1.2.1.16.13.5.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::addressMapEntry::addressMapSource 1.3.6.1.2.1.16.13.5.1.3 ASN1_ObjectIdentifier not-accessible +::RMON2_MIB::addressMapEntry::addressMapPhysicalAddress 1.3.6.1.2.1.16.13.5.1.4 ASN1_OctetString read-only +::RMON2_MIB::addressMapEntry::addressMapLastChange 1.3.6.1.2.1.16.13.5.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlHost 1.3.6.1.2.1.16.14 Group not-accessible +::RMON2_MIB::hlHostControlTable 1.3.6.1.2.1.16.14.1 Table not-accessible +::RMON2_MIB::hlHostControlEntry 1.3.6.1.2.1.16.14.1.1 TableEntry not-accessible +::RMON2_MIB::hlHostControlEntry::hlHostControlIndex 1.3.6.1.2.1.16.14.1.1.1 ASN1_Integer not-accessible +::RMON2_MIB::hlHostControlEntry::hlHostControlDataSource 1.3.6.1.2.1.16.14.1.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::hlHostControlEntry::hlHostControlNlDroppedFrames 1.3.6.1.2.1.16.14.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlNlInserts 1.3.6.1.2.1.16.14.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlNlDeletes 1.3.6.1.2.1.16.14.1.1.5 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlNlMaxDesiredEntries 1.3.6.1.2.1.16.14.1.1.6 ASN1_Integer read-create +::RMON2_MIB::hlHostControlEntry::hlHostControlAlDroppedFrames 1.3.6.1.2.1.16.14.1.1.7 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlAlInserts 1.3.6.1.2.1.16.14.1.1.8 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlAlDeletes 1.3.6.1.2.1.16.14.1.1.9 ASN1_Unsigned read-only +::RMON2_MIB::hlHostControlEntry::hlHostControlAlMaxDesiredEntries 1.3.6.1.2.1.16.14.1.1.10 ASN1_Integer read-create +::RMON2_MIB::hlHostControlEntry::hlHostControlOwner 1.3.6.1.2.1.16.14.1.1.11 ASN1_OctetString read-create +::RMON2_MIB::hlHostControlEntry::hlHostControlStatus 1.3.6.1.2.1.16.14.1.1.12 ASN1_Integer read-create +::RMON2_MIB::nlHostTable 1.3.6.1.2.1.16.14.2 Table not-accessible +::RMON2_MIB::nlHostEntry 1.3.6.1.2.1.16.14.2.1 TableEntry not-accessible +::RMON2_MIB::nlHostEntry::nlHostTimeMark 1.3.6.1.2.1.16.14.2.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::nlHostEntry::nlHostAddress 1.3.6.1.2.1.16.14.2.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::nlHostEntry::nlHostInPkts 1.3.6.1.2.1.16.14.2.1.3 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostOutPkts 1.3.6.1.2.1.16.14.2.1.4 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostInOctets 1.3.6.1.2.1.16.14.2.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostOutOctets 1.3.6.1.2.1.16.14.2.1.6 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostOutMacNonUnicastPkts 1.3.6.1.2.1.16.14.2.1.7 ASN1_Unsigned read-only +::RMON2_MIB::nlHostEntry::nlHostCreateTime 1.3.6.1.2.1.16.14.2.1.8 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrix 1.3.6.1.2.1.16.15 Group not-accessible +::RMON2_MIB::hlMatrixControlTable 1.3.6.1.2.1.16.15.1 Table not-accessible +::RMON2_MIB::hlMatrixControlEntry 1.3.6.1.2.1.16.15.1.1 TableEntry not-accessible +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlIndex 1.3.6.1.2.1.16.15.1.1.1 ASN1_Integer not-accessible +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlDataSource 1.3.6.1.2.1.16.15.1.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlNlDroppedFrames 1.3.6.1.2.1.16.15.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlNlInserts 1.3.6.1.2.1.16.15.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlNlDeletes 1.3.6.1.2.1.16.15.1.1.5 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlNlMaxDesiredEntries 1.3.6.1.2.1.16.15.1.1.6 ASN1_Integer read-create +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlAlDroppedFrames 1.3.6.1.2.1.16.15.1.1.7 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlAlInserts 1.3.6.1.2.1.16.15.1.1.8 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlAlDeletes 1.3.6.1.2.1.16.15.1.1.9 ASN1_Unsigned read-only +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlAlMaxDesiredEntries 1.3.6.1.2.1.16.15.1.1.10 ASN1_Integer read-create +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlOwner 1.3.6.1.2.1.16.15.1.1.11 ASN1_OctetString read-create +::RMON2_MIB::hlMatrixControlEntry::hlMatrixControlStatus 1.3.6.1.2.1.16.15.1.1.12 ASN1_Integer read-create +::RMON2_MIB::nlMatrixSDTable 1.3.6.1.2.1.16.15.2 Table not-accessible +::RMON2_MIB::nlMatrixSDEntry 1.3.6.1.2.1.16.15.2.1 TableEntry not-accessible +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDTimeMark 1.3.6.1.2.1.16.15.2.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDSourceAddress 1.3.6.1.2.1.16.15.2.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDDestAddress 1.3.6.1.2.1.16.15.2.1.3 ASN1_OctetString not-accessible +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDPkts 1.3.6.1.2.1.16.15.2.1.4 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDOctets 1.3.6.1.2.1.16.15.2.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixSDEntry::nlMatrixSDCreateTime 1.3.6.1.2.1.16.15.2.1.6 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixDSTable 1.3.6.1.2.1.16.15.3 Table not-accessible +::RMON2_MIB::nlMatrixDSEntry 1.3.6.1.2.1.16.15.3.1 TableEntry not-accessible +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSTimeMark 1.3.6.1.2.1.16.15.3.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSSourceAddress 1.3.6.1.2.1.16.15.3.1.2 ASN1_OctetString not-accessible +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSDestAddress 1.3.6.1.2.1.16.15.3.1.3 ASN1_OctetString not-accessible +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSPkts 1.3.6.1.2.1.16.15.3.1.4 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSOctets 1.3.6.1.2.1.16.15.3.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixDSEntry::nlMatrixDSCreateTime 1.3.6.1.2.1.16.15.3.1.6 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNControlTable 1.3.6.1.2.1.16.15.4 Table not-accessible +::RMON2_MIB::nlMatrixTopNControlEntry 1.3.6.1.2.1.16.15.4.1 TableEntry not-accessible +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlIndex 1.3.6.1.2.1.16.15.4.1.1 ASN1_Integer not-accessible +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlMatrixIndex 1.3.6.1.2.1.16.15.4.1.2 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlRateBase 1.3.6.1.2.1.16.15.4.1.3 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlTimeRemaining 1.3.6.1.2.1.16.15.4.1.4 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlGeneratedReports 1.3.6.1.2.1.16.15.4.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlDuration 1.3.6.1.2.1.16.15.4.1.6 ASN1_Integer read-only +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlRequestedSize 1.3.6.1.2.1.16.15.4.1.7 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlGrantedSize 1.3.6.1.2.1.16.15.4.1.8 ASN1_Integer read-only +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlStartTime 1.3.6.1.2.1.16.15.4.1.9 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlOwner 1.3.6.1.2.1.16.15.4.1.10 ASN1_OctetString read-create +::RMON2_MIB::nlMatrixTopNControlEntry::nlMatrixTopNControlStatus 1.3.6.1.2.1.16.15.4.1.11 ASN1_Integer read-create +::RMON2_MIB::nlMatrixTopNTable 1.3.6.1.2.1.16.15.5 Table not-accessible +::RMON2_MIB::nlMatrixTopNEntry 1.3.6.1.2.1.16.15.5.1 TableEntry not-accessible +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNIndex 1.3.6.1.2.1.16.15.5.1.1 ASN1_Integer not-accessible +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNProtocolDirLocalIndex 1.3.6.1.2.1.16.15.5.1.2 ASN1_Integer read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNSourceAddress 1.3.6.1.2.1.16.15.5.1.3 ASN1_OctetString read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNDestAddress 1.3.6.1.2.1.16.15.5.1.4 ASN1_OctetString read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNPktRate 1.3.6.1.2.1.16.15.5.1.5 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNReversePktRate 1.3.6.1.2.1.16.15.5.1.6 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNOctetRate 1.3.6.1.2.1.16.15.5.1.7 ASN1_Unsigned read-only +::RMON2_MIB::nlMatrixTopNEntry::nlMatrixTopNReverseOctetRate 1.3.6.1.2.1.16.15.5.1.8 ASN1_Unsigned read-only +::RMON2_MIB::alHost 1.3.6.1.2.1.16.16 Group not-accessible +::RMON2_MIB::alHostTable 1.3.6.1.2.1.16.16.1 Table not-accessible +::RMON2_MIB::alHostEntry 1.3.6.1.2.1.16.16.1.1 TableEntry not-accessible +::RMON2_MIB::alHostEntry::alHostTimeMark 1.3.6.1.2.1.16.16.1.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::alHostEntry::alHostInPkts 1.3.6.1.2.1.16.16.1.1.2 ASN1_Unsigned read-only +::RMON2_MIB::alHostEntry::alHostOutPkts 1.3.6.1.2.1.16.16.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::alHostEntry::alHostInOctets 1.3.6.1.2.1.16.16.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::alHostEntry::alHostOutOctets 1.3.6.1.2.1.16.16.1.1.5 ASN1_Unsigned read-only +::RMON2_MIB::alHostEntry::alHostCreateTime 1.3.6.1.2.1.16.16.1.1.6 ASN1_Unsigned read-only +::RMON2_MIB::alMatrix 1.3.6.1.2.1.16.17 Group not-accessible +::RMON2_MIB::alMatrixSDTable 1.3.6.1.2.1.16.17.1 Table not-accessible +::RMON2_MIB::alMatrixSDEntry 1.3.6.1.2.1.16.17.1.1 TableEntry not-accessible +::RMON2_MIB::alMatrixSDEntry::alMatrixSDTimeMark 1.3.6.1.2.1.16.17.1.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::alMatrixSDEntry::alMatrixSDPkts 1.3.6.1.2.1.16.17.1.1.2 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixSDEntry::alMatrixSDOctets 1.3.6.1.2.1.16.17.1.1.3 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixSDEntry::alMatrixSDCreateTime 1.3.6.1.2.1.16.17.1.1.4 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixDSTable 1.3.6.1.2.1.16.17.2 Table not-accessible +::RMON2_MIB::alMatrixDSEntry 1.3.6.1.2.1.16.17.2.1 TableEntry not-accessible +::RMON2_MIB::alMatrixDSEntry::alMatrixDSTimeMark 1.3.6.1.2.1.16.17.2.1.1 ASN1_Unsigned not-accessible +::RMON2_MIB::alMatrixDSEntry::alMatrixDSPkts 1.3.6.1.2.1.16.17.2.1.2 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixDSEntry::alMatrixDSOctets 1.3.6.1.2.1.16.17.2.1.3 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixDSEntry::alMatrixDSCreateTime 1.3.6.1.2.1.16.17.2.1.4 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNControlTable 1.3.6.1.2.1.16.17.3 Table not-accessible +::RMON2_MIB::alMatrixTopNControlEntry 1.3.6.1.2.1.16.17.3.1 TableEntry not-accessible +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlIndex 1.3.6.1.2.1.16.17.3.1.1 ASN1_Integer not-accessible +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlMatrixIndex 1.3.6.1.2.1.16.17.3.1.2 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlRateBase 1.3.6.1.2.1.16.17.3.1.3 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlTimeRemaining 1.3.6.1.2.1.16.17.3.1.4 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlGeneratedReports 1.3.6.1.2.1.16.17.3.1.5 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlDuration 1.3.6.1.2.1.16.17.3.1.6 ASN1_Integer read-only +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlRequestedSize 1.3.6.1.2.1.16.17.3.1.7 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlGrantedSize 1.3.6.1.2.1.16.17.3.1.8 ASN1_Integer read-only +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlStartTime 1.3.6.1.2.1.16.17.3.1.9 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlOwner 1.3.6.1.2.1.16.17.3.1.10 ASN1_OctetString read-create +::RMON2_MIB::alMatrixTopNControlEntry::alMatrixTopNControlStatus 1.3.6.1.2.1.16.17.3.1.11 ASN1_Integer read-create +::RMON2_MIB::alMatrixTopNTable 1.3.6.1.2.1.16.17.4 Table not-accessible +::RMON2_MIB::alMatrixTopNEntry 1.3.6.1.2.1.16.17.4.1 TableEntry not-accessible +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNIndex 1.3.6.1.2.1.16.17.4.1.1 ASN1_Integer not-accessible +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNProtocolDirLocalIndex 1.3.6.1.2.1.16.17.4.1.2 ASN1_Integer read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNSourceAddress 1.3.6.1.2.1.16.17.4.1.3 ASN1_OctetString read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNDestAddress 1.3.6.1.2.1.16.17.4.1.4 ASN1_OctetString read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNAppProtocolDirLocalIndex 1.3.6.1.2.1.16.17.4.1.5 ASN1_Integer read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNPktRate 1.3.6.1.2.1.16.17.4.1.6 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNReversePktRate 1.3.6.1.2.1.16.17.4.1.7 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNOctetRate 1.3.6.1.2.1.16.17.4.1.8 ASN1_Unsigned read-only +::RMON2_MIB::alMatrixTopNEntry::alMatrixTopNReverseOctetRate 1.3.6.1.2.1.16.17.4.1.9 ASN1_Unsigned read-only +::RMON2_MIB::usrHistory 1.3.6.1.2.1.16.18 Group not-accessible +::RMON2_MIB::usrHistoryControlTable 1.3.6.1.2.1.16.18.1 Table not-accessible +::RMON2_MIB::usrHistoryControlEntry 1.3.6.1.2.1.16.18.1.1 TableEntry not-accessible +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlIndex 1.3.6.1.2.1.16.18.1.1.1 ASN1_Integer not-accessible +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlObjects 1.3.6.1.2.1.16.18.1.1.2 ASN1_Integer read-create +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlBucketsRequested 1.3.6.1.2.1.16.18.1.1.3 ASN1_Integer read-create +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlBucketsGranted 1.3.6.1.2.1.16.18.1.1.4 ASN1_Integer read-only +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlInterval 1.3.6.1.2.1.16.18.1.1.5 ASN1_Integer read-create +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlOwner 1.3.6.1.2.1.16.18.1.1.6 ASN1_OctetString read-create +::RMON2_MIB::usrHistoryControlEntry::usrHistoryControlStatus 1.3.6.1.2.1.16.18.1.1.7 ASN1_Integer read-create +::RMON2_MIB::usrHistoryObjectTable 1.3.6.1.2.1.16.18.2 Table not-accessible +::RMON2_MIB::usrHistoryObjectEntry 1.3.6.1.2.1.16.18.2.1 TableEntry not-accessible +::RMON2_MIB::usrHistoryObjectEntry::usrHistoryObjectIndex 1.3.6.1.2.1.16.18.2.1.1 ASN1_Integer not-accessible +::RMON2_MIB::usrHistoryObjectEntry::usrHistoryObjectVariable 1.3.6.1.2.1.16.18.2.1.2 ASN1_ObjectIdentifier read-create +::RMON2_MIB::usrHistoryObjectEntry::usrHistoryObjectSampleType 1.3.6.1.2.1.16.18.2.1.3 ASN1_Integer read-create +::RMON2_MIB::usrHistoryTable 1.3.6.1.2.1.16.18.3 Table not-accessible +::RMON2_MIB::usrHistoryEntry 1.3.6.1.2.1.16.18.3.1 TableEntry not-accessible +::RMON2_MIB::usrHistoryEntry::usrHistorySampleIndex 1.3.6.1.2.1.16.18.3.1.1 ASN1_Integer not-accessible +::RMON2_MIB::usrHistoryEntry::usrHistoryIntervalStart 1.3.6.1.2.1.16.18.3.1.2 ASN1_Unsigned read-only +::RMON2_MIB::usrHistoryEntry::usrHistoryIntervalEnd 1.3.6.1.2.1.16.18.3.1.3 ASN1_Unsigned read-only +::RMON2_MIB::usrHistoryEntry::usrHistoryAbsValue 1.3.6.1.2.1.16.18.3.1.4 ASN1_Unsigned read-only +::RMON2_MIB::usrHistoryEntry::usrHistoryValStatus 1.3.6.1.2.1.16.18.3.1.5 ASN1_Integer read-only +::RMON2_MIB::probeConfig 1.3.6.1.2.1.16.19 Group not-accessible +::RMON2_MIB::probeConfig::probeCapabilities 1.3.6.1.2.1.16.19.1 ASN1_OctetString read-only +::RMON2_MIB::probeConfig::probeSoftwareRev 1.3.6.1.2.1.16.19.2 ASN1_OctetString read-only +::RMON2_MIB::probeConfig::probeHardwareRev 1.3.6.1.2.1.16.19.3 ASN1_OctetString read-only +::RMON2_MIB::probeConfig::probeDateTime 1.3.6.1.2.1.16.19.4 ASN1_OctetString read-write +::RMON2_MIB::probeConfig::probeResetControl 1.3.6.1.2.1.16.19.5 ASN1_Integer read-write +::RMON2_MIB::rmonConformance 1.3.6.1.2.1.16.20 ASN1_ObjectIdentifier not-accessible +::RMON2_MIB::rmon2MIBCompliances 1.3.6.1.2.1.16.20.1 ASN1_ObjectIdentifier not-accessible +::RMON2_MIB::rmon2MIBGroups 1.3.6.1.2.1.16.20.2 ASN1_ObjectIdentifier not-accessible diff --git a/test/dumps/corba/SNMPv2_MIB.idl b/test/dumps/corba/SNMPv2_MIB.idl new file mode 100644 index 0000000..97fa41f --- /dev/null +++ b/test/dumps/corba/SNMPv2_MIB.idl @@ -0,0 +1,496 @@ +/* -- DO NOT EDIT -- + * Generated by smidump version 0.4.8: + * smidump -f corba SNMPv2-MIB + * + * Derived from SNMPv2-MIB: + * The MIB module for SNMP entities. + * + * Copyright (C) The Internet Society (2002). This + * version of this MIB module is part of RFC 3418; + * see the RFC itself for full legal notices. + * + * Revision 2002-10-16 00:00: + * This revision of this MIB module was published as + * RFC 3418. + * + * Revision 1995-11-09 00:00: + * This revision of this MIB module was published as + * RFC 1907. + * + * Revision 1993-04-01 00:00: + * The initial revision of this MIB module was published + * as RFC 1450. + * + * $Id: SNMPv2_MIB.idl 8090 2008-04-18 12:56:29Z strauss $ + */ + +#ifndef _SNMPv2_MIB_IDL_ +#define _SNMPv2_MIB_IDL_ + +#include +#include +#include +#include + +module SNMPv2_MIB { + + typedef SNMPv2_SMI::Counter32Type Counter32Type; + typedef SNMPv2_SMI::Integer32Type Integer32Type; + typedef SNMPv2_SMI::TimeTicksType TimeTicksType; + typedef SNMPv2_TC::DisplayStringType DisplayStringType; + typedef SNMPv2_TC::TestAndIncrType TestAndIncrType; + typedef SNMPv2_TC::TimeStampType TimeStampType; + + const string moduleIdentity = "snmpMIB"; + const ASN1_ObjectIdentifier snmpMIB = "::SNMPv2_MIB::snmpMIB"; + + /* + The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices. + + LAST-UPDATED: 200210160000Z + + ORGANIZATION: + "IETF SNMPv3 Working Group" + + CONTACT-INFO: + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + + REVISION: "200210160000Z" + REVISION-DESCRIPTION: + "This revision of this MIB module was published as + RFC 3418." + + REVISION: "199511090000Z" + REVISION-DESCRIPTION: + "This revision of this MIB module was published as + RFC 1907." + + REVISION: "199304010000Z" + REVISION-DESCRIPTION: + "The initial revision of this MIB module was published + as RFC 1450." + + */ + + typedef ASN1_OctetString SysDescrType; + + typedef ASN1_OctetString SysContactType; + + typedef ASN1_OctetString SysNameType; + + typedef ASN1_OctetString SysLocationType; + + typedef ASN1_Integer SysServicesType; + + typedef ASN1_Integer SysORIndexType; + + typedef ASN1_Integer SnmpEnableAuthenTrapsType; + const SnmpEnableAuthenTrapsType SnmpEnableAuthenTrapsType_enabled = 1; + const SnmpEnableAuthenTrapsType SnmpEnableAuthenTrapsType_disabled = 2; + const string SnmpEnableAuthenTrapsType_NameNumberList = "enabled (1) , disabled (2)"; + + interface system : SNMPMgmt::SmiEntry { + + /* + A textual description of the entity. This value should + include the full name and version identification of + the system's hardware type, software operating-system, + and networking software. + */ + readonly attribute SysDescrType sysDescr; + + /* + The vendor's authoritative identification of the + network management subsystem contained in the entity. + This value is allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides an easy and + unambiguous means for determining `what kind of box' is + being managed. For example, if vendor `Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'. + */ + readonly attribute ASN1_ObjectIdentifier sysObjectID; + + /* + The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized. + */ + readonly attribute TimeTicksType sysUpTime; + + /* + The textual identification of the contact person for + this managed node, together with information on how + to contact this person. If no contact information is + known, the value is the zero-length string. + */ + attribute SysContactType sysContact; + + /* + An administratively-assigned name for this managed + node. By convention, this is the node's fully-qualified + domain name. If the name is unknown, the value is + the zero-length string. + */ + attribute SysNameType sysName; + + /* + The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string. + */ + attribute SysLocationType sysLocation; + + /* + A value which indicates the set of services that this + entity may potentially offer. The value is a sum. + + + + This sum initially takes the value zero. Then, for + each layer, L, in the range 1 through 7, that this node + performs transactions for, 2 raised to (L - 1) is added + to the sum. For example, a node which performs only + routing functions would have a value of 4 (2^(3-1)). + In contrast, a node which is a host offering application + services would have a value of 72 (2^(4-1) + 2^(7-1)). + Note that in the context of the Internet suite of + protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + + For systems including OSI protocols, layers 5 and 6 + may also be counted. + */ + readonly attribute SysServicesType sysServices; + + /* + The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID. + */ + readonly attribute TimeStampType sysORLastChange; + + /* + The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows. + */ + SNMPMgmt::SmiTableIterator get_sysORTable(); + }; + + + /* + An entry (conceptual row) in the sysORTable. + */ + interface sysOREntry : SNMPMgmt::SmiEntry { + + const string IndexVarList = "sysORIndex"; + + /* + An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder. + */ + readonly attribute ASN1_ObjectIdentifier sysORID; + + /* + A textual description of the capabilities identified + by the corresponding instance of sysORID. + */ + readonly attribute DisplayStringType sysORDescr; + + /* + The value of sysUpTime at the time this conceptual + row was last instantiated. + */ + readonly attribute TimeStampType sysORUpTime; + }; + + interface snmp : SNMPMgmt::SmiEntry { + + /* + The total number of messages delivered to the SNMP + entity from the transport service. + */ + readonly attribute Counter32Type snmpInPkts; + + /* + The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version. + */ + readonly attribute Counter32Type snmpInBadVersions; + + /* + The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value. + */ + readonly attribute Counter32Type snmpInBadCommunityNames; + + /* + The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value. + */ + readonly attribute Counter32Type snmpInBadCommunityUses; + + /* + The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages. + */ + readonly attribute Counter32Type snmpInASNParseErrs; + + /* + Indicates whether the SNMP entity is permitted to + generate authenticationFailure traps. The value of this + object overrides any configuration information; as such, + it provides a means whereby all authenticationFailure + traps may be disabled. + + Note that it is strongly recommended that this object + be stored in non-volatile memory so that it remains + constant across re-initializations of the network + management system. + */ + attribute SnmpEnableAuthenTrapsType snmpEnableAuthenTraps; + + /* + The total number of Confirmed Class PDUs (such as + GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the size of a reply + containing an alternate Response Class PDU (such as a + Response-PDU) with an empty variable-bindings field + was greater than either a local constraint or the + maximum message size associated with the originator of + the request. + */ + readonly attribute Counter32Type snmpSilentDrops; + + /* + The total number of Confirmed Class PDUs + (such as GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the transmission of + the (possibly translated) message to a proxy target + failed in a manner (other than a time-out) such that + no Response Class PDU (such as a Response-PDU) could + be returned. + */ + readonly attribute Counter32Type snmpProxyDrops; + }; + + interface snmpTrap : SNMPMgmt::SmiEntry { + }; + + interface snmpSet : SNMPMgmt::SmiEntry { + + /* + An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP set operation. + + This object is used for coarse-grain coordination. + To achieve fine-grain coordination, one or more similar + objects might be defined within each MIB group, as + appropriate. + */ + attribute TestAndIncrType snmpSetSerialNo; + }; + + /* typed push event communication */ + interface Notifications : SNMPMgmt::Notifications { + + /* + A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered. + */ + void coldStart ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time + ); + + /* + A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered. + */ + void warmStart ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time + ); + + /* + An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated. + */ + void authenticationFailure ( + in CosNaming::Name src_entry_name, + in CORBA::ScopedName event_type, + in ASN1_GeneralizedTime event_time + ); + }; + + /* typed pull event communication */ + interface PullNotifications : SNMPMgmt::PullNotifications { + + /* + A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered. + */ + void pull_coldStart ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + boolean try_coldStart ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + + /* + A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered. + */ + void pull_warmStart ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + boolean try_warmStart ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + + /* + An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated. + */ + void pull_authenticationFailure ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + boolean try_authenticationFailure ( + out CosNaming::Name src_entry_name, + out CORBA::ScopedName event_type, + out ASN1_GeneralizedTime event_time + ); + }; + + interface SmiEntryFactory : SNMPMgmt::GenericFactory { + + system create_system ( + in SysContactType sysContact, + in SysNameType sysName, + in SysLocationType sysLocation + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + snmp create_snmp ( + in SnmpEnableAuthenTrapsType snmpEnableAuthenTraps + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + + snmpSet create_snmpSet ( + in TestAndIncrType snmpSetSerialNo + ) raises ( + SNMPMgmt::AlreadyExists, + CosLifeCycle::InvalidCriteria, + CosLifeCycle::CannotMeetCriteria + ); + }; + +}; + +#endif /* !_SNMPv2_MIB_IDL_ */ diff --git a/test/dumps/corba/SNMPv2_MIB.oid b/test/dumps/corba/SNMPv2_MIB.oid new file mode 100644 index 0000000..d2ad786 --- /dev/null +++ b/test/dumps/corba/SNMPv2_MIB.oid @@ -0,0 +1,38 @@ +::SNMPv2_MIB::system 1.3.6.1.2.1.1 Group not-accessible +::SNMPv2_MIB::system::sysDescr 1.3.6.1.2.1.1.1 ASN1_OctetString read-only +::SNMPv2_MIB::system::sysObjectID 1.3.6.1.2.1.1.2 ASN1_ObjectIdentifier read-only +::SNMPv2_MIB::system::sysUpTime 1.3.6.1.2.1.1.3 ASN1_Unsigned read-only +::SNMPv2_MIB::system::sysContact 1.3.6.1.2.1.1.4 ASN1_OctetString read-write +::SNMPv2_MIB::system::sysName 1.3.6.1.2.1.1.5 ASN1_OctetString read-write +::SNMPv2_MIB::system::sysLocation 1.3.6.1.2.1.1.6 ASN1_OctetString read-write +::SNMPv2_MIB::system::sysServices 1.3.6.1.2.1.1.7 ASN1_Integer read-only +::SNMPv2_MIB::system::sysORLastChange 1.3.6.1.2.1.1.8 ASN1_Unsigned read-only +::SNMPv2_MIB::sysORTable 1.3.6.1.2.1.1.9 Table not-accessible +::SNMPv2_MIB::sysOREntry 1.3.6.1.2.1.1.9.1 TableEntry not-accessible +::SNMPv2_MIB::sysOREntry::sysORIndex 1.3.6.1.2.1.1.9.1.1 ASN1_Integer not-accessible +::SNMPv2_MIB::sysOREntry::sysORID 1.3.6.1.2.1.1.9.1.2 ASN1_ObjectIdentifier read-only +::SNMPv2_MIB::sysOREntry::sysORDescr 1.3.6.1.2.1.1.9.1.3 ASN1_OctetString read-only +::SNMPv2_MIB::sysOREntry::sysORUpTime 1.3.6.1.2.1.1.9.1.4 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp 1.3.6.1.2.1.11 Group not-accessible +::SNMPv2_MIB::snmp::snmpInPkts 1.3.6.1.2.1.11.1 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpInBadVersions 1.3.6.1.2.1.11.3 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpInBadCommunityNames 1.3.6.1.2.1.11.4 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpInBadCommunityUses 1.3.6.1.2.1.11.5 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpInASNParseErrs 1.3.6.1.2.1.11.6 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpEnableAuthenTraps 1.3.6.1.2.1.11.30 ASN1_Integer read-write +::SNMPv2_MIB::snmp::snmpSilentDrops 1.3.6.1.2.1.11.31 ASN1_Unsigned read-only +::SNMPv2_MIB::snmp::snmpProxyDrops 1.3.6.1.2.1.11.32 ASN1_Unsigned read-only +::SNMPv2_MIB::snmpMIB 1.3.6.1.6.3.1 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpMIBObjects 1.3.6.1.6.3.1.1 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpTrap 1.3.6.1.6.3.1.1.4 Group not-accessible +::SNMPv2_MIB::snmpTrap::snmpTrapOID 1.3.6.1.6.3.1.1.4.1 ASN1_ObjectIdentifier accessible-for-notify +::SNMPv2_MIB::snmpTrap::snmpTrapEnterprise 1.3.6.1.6.3.1.1.4.3 ASN1_ObjectIdentifier accessible-for-notify +::SNMPv2_MIB::snmpTraps 1.3.6.1.6.3.1.1.5 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpTraps::coldStart 1.3.6.1.6.3.1.1.5.1 Notification not-accessible +::SNMPv2_MIB::snmpTraps::warmStart 1.3.6.1.6.3.1.1.5.2 Notification not-accessible +::SNMPv2_MIB::snmpTraps::authenticationFailure 1.3.6.1.6.3.1.1.5.5 Notification not-accessible +::SNMPv2_MIB::snmpSet 1.3.6.1.6.3.1.1.6 Group not-accessible +::SNMPv2_MIB::snmpSet::snmpSetSerialNo 1.3.6.1.6.3.1.1.6.1 ASN1_Integer read-write +::SNMPv2_MIB::snmpMIBConformance 1.3.6.1.6.3.1.2 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpMIBCompliances 1.3.6.1.6.3.1.2.1 ASN1_ObjectIdentifier not-accessible +::SNMPv2_MIB::snmpMIBGroups 1.3.6.1.6.3.1.2.2 ASN1_ObjectIdentifier not-accessible diff --git a/test/dumps/identifiers/IF-MIB b/test/dumps/identifiers/IF-MIB new file mode 100644 index 0000000..cffd98c --- /dev/null +++ b/test/dumps/identifiers/IF-MIB @@ -0,0 +1,96 @@ +# IF-MIB list of identifiers (generated by smidump 0.4.2-pre1) + +IF-MIB OwnerString type +IF-MIB InterfaceIndex type +IF-MIB InterfaceIndexOrZero type +IF-MIB interfaces node 1.3.6.1.2.1.2 +IF-MIB ifNumber scalar 1.3.6.1.2.1.2.1 +IF-MIB ifTable table 1.3.6.1.2.1.2.2 +IF-MIB ifEntry row 1.3.6.1.2.1.2.2.1 +IF-MIB ifIndex column 1.3.6.1.2.1.2.2.1.1 +IF-MIB ifDescr column 1.3.6.1.2.1.2.2.1.2 +IF-MIB ifType column 1.3.6.1.2.1.2.2.1.3 +IF-MIB ifMtu column 1.3.6.1.2.1.2.2.1.4 +IF-MIB ifSpeed column 1.3.6.1.2.1.2.2.1.5 +IF-MIB ifPhysAddress column 1.3.6.1.2.1.2.2.1.6 +IF-MIB ifAdminStatus column 1.3.6.1.2.1.2.2.1.7 +IF-MIB ifOperStatus column 1.3.6.1.2.1.2.2.1.8 +IF-MIB ifLastChange column 1.3.6.1.2.1.2.2.1.9 +IF-MIB ifInOctets column 1.3.6.1.2.1.2.2.1.10 +IF-MIB ifInUcastPkts column 1.3.6.1.2.1.2.2.1.11 +IF-MIB ifInNUcastPkts column 1.3.6.1.2.1.2.2.1.12 +IF-MIB ifInDiscards column 1.3.6.1.2.1.2.2.1.13 +IF-MIB ifInErrors column 1.3.6.1.2.1.2.2.1.14 +IF-MIB ifInUnknownProtos column 1.3.6.1.2.1.2.2.1.15 +IF-MIB ifOutOctets column 1.3.6.1.2.1.2.2.1.16 +IF-MIB ifOutUcastPkts column 1.3.6.1.2.1.2.2.1.17 +IF-MIB ifOutNUcastPkts column 1.3.6.1.2.1.2.2.1.18 +IF-MIB ifOutDiscards column 1.3.6.1.2.1.2.2.1.19 +IF-MIB ifOutErrors column 1.3.6.1.2.1.2.2.1.20 +IF-MIB ifOutQLen column 1.3.6.1.2.1.2.2.1.21 +IF-MIB ifSpecific column 1.3.6.1.2.1.2.2.1.22 +IF-MIB ifMIB node 1.3.6.1.2.1.31 +IF-MIB ifMIBObjects node 1.3.6.1.2.1.31.1 +IF-MIB ifXTable table 1.3.6.1.2.1.31.1.1 +IF-MIB ifXEntry row 1.3.6.1.2.1.31.1.1.1 +IF-MIB ifName column 1.3.6.1.2.1.31.1.1.1.1 +IF-MIB ifInMulticastPkts column 1.3.6.1.2.1.31.1.1.1.2 +IF-MIB ifInBroadcastPkts column 1.3.6.1.2.1.31.1.1.1.3 +IF-MIB ifOutMulticastPkts column 1.3.6.1.2.1.31.1.1.1.4 +IF-MIB ifOutBroadcastPkts column 1.3.6.1.2.1.31.1.1.1.5 +IF-MIB ifHCInOctets column 1.3.6.1.2.1.31.1.1.1.6 +IF-MIB ifHCInUcastPkts column 1.3.6.1.2.1.31.1.1.1.7 +IF-MIB ifHCInMulticastPkts column 1.3.6.1.2.1.31.1.1.1.8 +IF-MIB ifHCInBroadcastPkts column 1.3.6.1.2.1.31.1.1.1.9 +IF-MIB ifHCOutOctets column 1.3.6.1.2.1.31.1.1.1.10 +IF-MIB ifHCOutUcastPkts column 1.3.6.1.2.1.31.1.1.1.11 +IF-MIB ifHCOutMulticastPkts column 1.3.6.1.2.1.31.1.1.1.12 +IF-MIB ifHCOutBroadcastPkts column 1.3.6.1.2.1.31.1.1.1.13 +IF-MIB ifLinkUpDownTrapEnable column 1.3.6.1.2.1.31.1.1.1.14 +IF-MIB ifHighSpeed column 1.3.6.1.2.1.31.1.1.1.15 +IF-MIB ifPromiscuousMode column 1.3.6.1.2.1.31.1.1.1.16 +IF-MIB ifConnectorPresent column 1.3.6.1.2.1.31.1.1.1.17 +IF-MIB ifAlias column 1.3.6.1.2.1.31.1.1.1.18 +IF-MIB ifCounterDiscontinuityTime column 1.3.6.1.2.1.31.1.1.1.19 +IF-MIB ifStackTable table 1.3.6.1.2.1.31.1.2 +IF-MIB ifStackEntry row 1.3.6.1.2.1.31.1.2.1 +IF-MIB ifStackHigherLayer column 1.3.6.1.2.1.31.1.2.1.1 +IF-MIB ifStackLowerLayer column 1.3.6.1.2.1.31.1.2.1.2 +IF-MIB ifStackStatus column 1.3.6.1.2.1.31.1.2.1.3 +IF-MIB ifTestTable table 1.3.6.1.2.1.31.1.3 +IF-MIB ifTestEntry row 1.3.6.1.2.1.31.1.3.1 +IF-MIB ifTestId column 1.3.6.1.2.1.31.1.3.1.1 +IF-MIB ifTestStatus column 1.3.6.1.2.1.31.1.3.1.2 +IF-MIB ifTestType column 1.3.6.1.2.1.31.1.3.1.3 +IF-MIB ifTestResult column 1.3.6.1.2.1.31.1.3.1.4 +IF-MIB ifTestCode column 1.3.6.1.2.1.31.1.3.1.5 +IF-MIB ifTestOwner column 1.3.6.1.2.1.31.1.3.1.6 +IF-MIB ifRcvAddressTable table 1.3.6.1.2.1.31.1.4 +IF-MIB ifRcvAddressEntry row 1.3.6.1.2.1.31.1.4.1 +IF-MIB ifRcvAddressAddress column 1.3.6.1.2.1.31.1.4.1.1 +IF-MIB ifRcvAddressStatus column 1.3.6.1.2.1.31.1.4.1.2 +IF-MIB ifRcvAddressType column 1.3.6.1.2.1.31.1.4.1.3 +IF-MIB ifTableLastChange scalar 1.3.6.1.2.1.31.1.5 +IF-MIB ifStackLastChange scalar 1.3.6.1.2.1.31.1.6 +IF-MIB ifConformance node 1.3.6.1.2.1.31.2 +IF-MIB ifGroups node 1.3.6.1.2.1.31.2.1 +IF-MIB ifGeneralGroup group 1.3.6.1.2.1.31.2.1.1 +IF-MIB ifFixedLengthGroup group 1.3.6.1.2.1.31.2.1.2 +IF-MIB ifHCFixedLengthGroup group 1.3.6.1.2.1.31.2.1.3 +IF-MIB ifPacketGroup group 1.3.6.1.2.1.31.2.1.4 +IF-MIB ifHCPacketGroup group 1.3.6.1.2.1.31.2.1.5 +IF-MIB ifVHCPacketGroup group 1.3.6.1.2.1.31.2.1.6 +IF-MIB ifRcvAddressGroup group 1.3.6.1.2.1.31.2.1.7 +IF-MIB ifTestGroup group 1.3.6.1.2.1.31.2.1.8 +IF-MIB ifStackGroup group 1.3.6.1.2.1.31.2.1.9 +IF-MIB ifGeneralInformationGroup group 1.3.6.1.2.1.31.2.1.10 +IF-MIB ifStackGroup2 group 1.3.6.1.2.1.31.2.1.11 +IF-MIB ifOldObjectsGroup group 1.3.6.1.2.1.31.2.1.12 +IF-MIB ifCounterDiscontinuityGroup group 1.3.6.1.2.1.31.2.1.13 +IF-MIB linkUpDownNotificationsGroup group 1.3.6.1.2.1.31.2.1.14 +IF-MIB ifCompliances node 1.3.6.1.2.1.31.2.2 +IF-MIB ifCompliance compliance 1.3.6.1.2.1.31.2.2.1 +IF-MIB ifCompliance2 compliance 1.3.6.1.2.1.31.2.2.2 +IF-MIB ifCompliance3 compliance 1.3.6.1.2.1.31.2.2.3 +IF-MIB linkDown notification 1.3.6.1.6.3.1.1.5.3 +IF-MIB linkUp notification 1.3.6.1.6.3.1.1.5.4 diff --git a/test/dumps/identifiers/MAU-MIB b/test/dumps/identifiers/MAU-MIB new file mode 100644 index 0000000..df68803 --- /dev/null +++ b/test/dumps/identifiers/MAU-MIB @@ -0,0 +1,92 @@ +# MAU-MIB list of identifiers (generated by smidump 0.4.5) + +MAU-MIB JackType type +MAU-MIB snmpDot3MauMgt node 1.3.6.1.2.1.26 +MAU-MIB snmpDot3MauTraps node 1.3.6.1.2.1.26.0 +MAU-MIB rpMauJabberTrap notification 1.3.6.1.2.1.26.0.1 +MAU-MIB ifMauJabberTrap notification 1.3.6.1.2.1.26.0.2 +MAU-MIB dot3RpMauBasicGroup node 1.3.6.1.2.1.26.1 +MAU-MIB rpMauTable table 1.3.6.1.2.1.26.1.1 +MAU-MIB rpMauEntry row 1.3.6.1.2.1.26.1.1.1 +MAU-MIB rpMauGroupIndex column 1.3.6.1.2.1.26.1.1.1.1 +MAU-MIB rpMauPortIndex column 1.3.6.1.2.1.26.1.1.1.2 +MAU-MIB rpMauIndex column 1.3.6.1.2.1.26.1.1.1.3 +MAU-MIB rpMauType column 1.3.6.1.2.1.26.1.1.1.4 +MAU-MIB rpMauStatus column 1.3.6.1.2.1.26.1.1.1.5 +MAU-MIB rpMauMediaAvailable column 1.3.6.1.2.1.26.1.1.1.6 +MAU-MIB rpMauMediaAvailableStateExits column 1.3.6.1.2.1.26.1.1.1.7 +MAU-MIB rpMauJabberState column 1.3.6.1.2.1.26.1.1.1.8 +MAU-MIB rpMauJabberingStateEnters column 1.3.6.1.2.1.26.1.1.1.9 +MAU-MIB rpMauFalseCarriers column 1.3.6.1.2.1.26.1.1.1.10 +MAU-MIB rpJackTable table 1.3.6.1.2.1.26.1.2 +MAU-MIB rpJackEntry row 1.3.6.1.2.1.26.1.2.1 +MAU-MIB rpJackIndex column 1.3.6.1.2.1.26.1.2.1.1 +MAU-MIB rpJackType column 1.3.6.1.2.1.26.1.2.1.2 +MAU-MIB dot3IfMauBasicGroup node 1.3.6.1.2.1.26.2 +MAU-MIB ifMauTable table 1.3.6.1.2.1.26.2.1 +MAU-MIB ifMauEntry row 1.3.6.1.2.1.26.2.1.1 +MAU-MIB ifMauIfIndex column 1.3.6.1.2.1.26.2.1.1.1 +MAU-MIB ifMauIndex column 1.3.6.1.2.1.26.2.1.1.2 +MAU-MIB ifMauType column 1.3.6.1.2.1.26.2.1.1.3 +MAU-MIB ifMauStatus column 1.3.6.1.2.1.26.2.1.1.4 +MAU-MIB ifMauMediaAvailable column 1.3.6.1.2.1.26.2.1.1.5 +MAU-MIB ifMauMediaAvailableStateExits column 1.3.6.1.2.1.26.2.1.1.6 +MAU-MIB ifMauJabberState column 1.3.6.1.2.1.26.2.1.1.7 +MAU-MIB ifMauJabberingStateEnters column 1.3.6.1.2.1.26.2.1.1.8 +MAU-MIB ifMauFalseCarriers column 1.3.6.1.2.1.26.2.1.1.9 +MAU-MIB ifMauTypeList column 1.3.6.1.2.1.26.2.1.1.10 +MAU-MIB ifMauDefaultType column 1.3.6.1.2.1.26.2.1.1.11 +MAU-MIB ifMauAutoNegSupported column 1.3.6.1.2.1.26.2.1.1.12 +MAU-MIB ifMauTypeListBits column 1.3.6.1.2.1.26.2.1.1.13 +MAU-MIB ifMauHCFalseCarriers column 1.3.6.1.2.1.26.2.1.1.14 +MAU-MIB ifJackTable table 1.3.6.1.2.1.26.2.2 +MAU-MIB ifJackEntry row 1.3.6.1.2.1.26.2.2.1 +MAU-MIB ifJackIndex column 1.3.6.1.2.1.26.2.2.1.1 +MAU-MIB ifJackType column 1.3.6.1.2.1.26.2.2.1.2 +MAU-MIB dot3BroadMauBasicGroup node 1.3.6.1.2.1.26.3 +MAU-MIB broadMauBasicTable table 1.3.6.1.2.1.26.3.1 +MAU-MIB broadMauBasicEntry row 1.3.6.1.2.1.26.3.1.1 +MAU-MIB broadMauIfIndex column 1.3.6.1.2.1.26.3.1.1.1 +MAU-MIB broadMauIndex column 1.3.6.1.2.1.26.3.1.1.2 +MAU-MIB broadMauXmtRcvSplitType column 1.3.6.1.2.1.26.3.1.1.3 +MAU-MIB broadMauXmtCarrierFreq column 1.3.6.1.2.1.26.3.1.1.4 +MAU-MIB broadMauTranslationFreq column 1.3.6.1.2.1.26.3.1.1.5 +MAU-MIB dot3IfMauAutoNegGroup node 1.3.6.1.2.1.26.5 +MAU-MIB ifMauAutoNegTable table 1.3.6.1.2.1.26.5.1 +MAU-MIB ifMauAutoNegEntry row 1.3.6.1.2.1.26.5.1.1 +MAU-MIB ifMauAutoNegAdminStatus column 1.3.6.1.2.1.26.5.1.1.1 +MAU-MIB ifMauAutoNegRemoteSignaling column 1.3.6.1.2.1.26.5.1.1.2 +MAU-MIB ifMauAutoNegConfig column 1.3.6.1.2.1.26.5.1.1.4 +MAU-MIB ifMauAutoNegCapability column 1.3.6.1.2.1.26.5.1.1.5 +MAU-MIB ifMauAutoNegCapAdvertised column 1.3.6.1.2.1.26.5.1.1.6 +MAU-MIB ifMauAutoNegCapReceived column 1.3.6.1.2.1.26.5.1.1.7 +MAU-MIB ifMauAutoNegRestart column 1.3.6.1.2.1.26.5.1.1.8 +MAU-MIB ifMauAutoNegCapabilityBits column 1.3.6.1.2.1.26.5.1.1.9 +MAU-MIB ifMauAutoNegCapAdvertisedBits column 1.3.6.1.2.1.26.5.1.1.10 +MAU-MIB ifMauAutoNegCapReceivedBits column 1.3.6.1.2.1.26.5.1.1.11 +MAU-MIB ifMauAutoNegRemoteFaultAdvertised column 1.3.6.1.2.1.26.5.1.1.12 +MAU-MIB ifMauAutoNegRemoteFaultReceived column 1.3.6.1.2.1.26.5.1.1.13 +MAU-MIB mauMod node 1.3.6.1.2.1.26.6 +MAU-MIB mauModConf node 1.3.6.1.2.1.26.6.1 +MAU-MIB mauModCompls node 1.3.6.1.2.1.26.6.1.1 +MAU-MIB mauModRpCompl compliance 1.3.6.1.2.1.26.6.1.1.1 +MAU-MIB mauModIfCompl compliance 1.3.6.1.2.1.26.6.1.1.2 +MAU-MIB mauModIfCompl2 compliance 1.3.6.1.2.1.26.6.1.1.3 +MAU-MIB mauModRpCompl2 compliance 1.3.6.1.2.1.26.6.1.1.4 +MAU-MIB mauModIfCompl3 compliance 1.3.6.1.2.1.26.6.1.1.5 +MAU-MIB mauModObjGrps node 1.3.6.1.2.1.26.6.1.2 +MAU-MIB mauRpGrpBasic group 1.3.6.1.2.1.26.6.1.2.1 +MAU-MIB mauRpGrp100Mbs group 1.3.6.1.2.1.26.6.1.2.2 +MAU-MIB mauRpGrpJack group 1.3.6.1.2.1.26.6.1.2.3 +MAU-MIB mauIfGrpBasic group 1.3.6.1.2.1.26.6.1.2.4 +MAU-MIB mauIfGrp100Mbs group 1.3.6.1.2.1.26.6.1.2.5 +MAU-MIB mauIfGrpJack group 1.3.6.1.2.1.26.6.1.2.6 +MAU-MIB mauIfGrpAutoNeg group 1.3.6.1.2.1.26.6.1.2.7 +MAU-MIB mauBroadBasic group 1.3.6.1.2.1.26.6.1.2.8 +MAU-MIB mauIfGrpHighCapacity group 1.3.6.1.2.1.26.6.1.2.9 +MAU-MIB mauIfGrpAutoNeg2 group 1.3.6.1.2.1.26.6.1.2.10 +MAU-MIB mauIfGrpAutoNeg1000Mbps group 1.3.6.1.2.1.26.6.1.2.11 +MAU-MIB mauIfGrpHCStats group 1.3.6.1.2.1.26.6.1.2.12 +MAU-MIB mauModNotGrps node 1.3.6.1.2.1.26.6.1.3 +MAU-MIB rpMauNotifications group 1.3.6.1.2.1.26.6.1.3.1 +MAU-MIB ifMauNotifications group 1.3.6.1.2.1.26.6.1.3.2 diff --git a/test/dumps/identifiers/Makefile.am b/test/dumps/identifiers/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/identifiers/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/identifiers/Makefile.in b/test/dumps/identifiers/Makefile.in new file mode 100644 index 0000000..abc8c74 --- /dev/null +++ b/test/dumps/identifiers/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/identifiers +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/identifiers/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/identifiers/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/identifiers/RMON2-MIB b/test/dumps/identifiers/RMON2-MIB new file mode 100644 index 0000000..1fdb8ad --- /dev/null +++ b/test/dumps/identifiers/RMON2-MIB @@ -0,0 +1,303 @@ +# RMON2-MIB list of identifiers (generated by smidump 0.4.2-pre1) + +RMON2-MIB ZeroBasedCounter32 type +RMON2-MIB LastCreateTime type +RMON2-MIB TimeFilter type +RMON2-MIB DataSource type +RMON2-MIB ControlString type +RMON2-MIB rmon node 1.3.6.1.2.1.16 +RMON2-MIB etherStats2Table table 1.3.6.1.2.1.16.1.4 +RMON2-MIB etherStats2Entry row 1.3.6.1.2.1.16.1.4.1 +RMON2-MIB etherStatsDroppedFrames column 1.3.6.1.2.1.16.1.4.1.1 +RMON2-MIB etherStatsCreateTime column 1.3.6.1.2.1.16.1.4.1.2 +RMON2-MIB tokenRingMLStats2Table table 1.3.6.1.2.1.16.1.5 +RMON2-MIB tokenRingMLStats2Entry row 1.3.6.1.2.1.16.1.5.1 +RMON2-MIB tokenRingMLStatsDroppedFrames column 1.3.6.1.2.1.16.1.5.1.1 +RMON2-MIB tokenRingMLStatsCreateTime column 1.3.6.1.2.1.16.1.5.1.2 +RMON2-MIB tokenRingPStats2Table table 1.3.6.1.2.1.16.1.6 +RMON2-MIB tokenRingPStats2Entry row 1.3.6.1.2.1.16.1.6.1 +RMON2-MIB tokenRingPStatsDroppedFrames column 1.3.6.1.2.1.16.1.6.1.1 +RMON2-MIB tokenRingPStatsCreateTime column 1.3.6.1.2.1.16.1.6.1.2 +RMON2-MIB historyControl2Table table 1.3.6.1.2.1.16.2.5 +RMON2-MIB historyControl2Entry row 1.3.6.1.2.1.16.2.5.1 +RMON2-MIB historyControlDroppedFrames column 1.3.6.1.2.1.16.2.5.1.1 +RMON2-MIB hostControl2Table table 1.3.6.1.2.1.16.4.4 +RMON2-MIB hostControl2Entry row 1.3.6.1.2.1.16.4.4.1 +RMON2-MIB hostControlDroppedFrames column 1.3.6.1.2.1.16.4.4.1.1 +RMON2-MIB hostControlCreateTime column 1.3.6.1.2.1.16.4.4.1.2 +RMON2-MIB matrixControl2Table table 1.3.6.1.2.1.16.6.4 +RMON2-MIB matrixControl2Entry row 1.3.6.1.2.1.16.6.4.1 +RMON2-MIB matrixControlDroppedFrames column 1.3.6.1.2.1.16.6.4.1.1 +RMON2-MIB matrixControlCreateTime column 1.3.6.1.2.1.16.6.4.1.2 +RMON2-MIB channel2Table table 1.3.6.1.2.1.16.7.3 +RMON2-MIB channel2Entry row 1.3.6.1.2.1.16.7.3.1 +RMON2-MIB channelDroppedFrames column 1.3.6.1.2.1.16.7.3.1.1 +RMON2-MIB channelCreateTime column 1.3.6.1.2.1.16.7.3.1.2 +RMON2-MIB filter2Table table 1.3.6.1.2.1.16.7.4 +RMON2-MIB filter2Entry row 1.3.6.1.2.1.16.7.4.1 +RMON2-MIB filterProtocolDirDataLocalIndex column 1.3.6.1.2.1.16.7.4.1.1 +RMON2-MIB filterProtocolDirLocalIndex column 1.3.6.1.2.1.16.7.4.1.2 +RMON2-MIB ringStationControl2Table table 1.3.6.1.2.1.16.10.7 +RMON2-MIB ringStationControl2Entry row 1.3.6.1.2.1.16.10.7.1 +RMON2-MIB ringStationControlDroppedFrames column 1.3.6.1.2.1.16.10.7.1.1 +RMON2-MIB ringStationControlCreateTime column 1.3.6.1.2.1.16.10.7.1.2 +RMON2-MIB sourceRoutingStats2Table table 1.3.6.1.2.1.16.10.8 +RMON2-MIB sourceRoutingStats2Entry row 1.3.6.1.2.1.16.10.8.1 +RMON2-MIB sourceRoutingStatsDroppedFrames column 1.3.6.1.2.1.16.10.8.1.1 +RMON2-MIB sourceRoutingStatsCreateTime column 1.3.6.1.2.1.16.10.8.1.2 +RMON2-MIB protocolDir node 1.3.6.1.2.1.16.11 +RMON2-MIB protocolDirLastChange scalar 1.3.6.1.2.1.16.11.1 +RMON2-MIB protocolDirTable table 1.3.6.1.2.1.16.11.2 +RMON2-MIB protocolDirEntry row 1.3.6.1.2.1.16.11.2.1 +RMON2-MIB protocolDirID column 1.3.6.1.2.1.16.11.2.1.1 +RMON2-MIB protocolDirParameters column 1.3.6.1.2.1.16.11.2.1.2 +RMON2-MIB protocolDirLocalIndex column 1.3.6.1.2.1.16.11.2.1.3 +RMON2-MIB protocolDirDescr column 1.3.6.1.2.1.16.11.2.1.4 +RMON2-MIB protocolDirType column 1.3.6.1.2.1.16.11.2.1.5 +RMON2-MIB protocolDirAddressMapConfig column 1.3.6.1.2.1.16.11.2.1.6 +RMON2-MIB protocolDirHostConfig column 1.3.6.1.2.1.16.11.2.1.7 +RMON2-MIB protocolDirMatrixConfig column 1.3.6.1.2.1.16.11.2.1.8 +RMON2-MIB protocolDirOwner column 1.3.6.1.2.1.16.11.2.1.9 +RMON2-MIB protocolDirStatus column 1.3.6.1.2.1.16.11.2.1.10 +RMON2-MIB protocolDist node 1.3.6.1.2.1.16.12 +RMON2-MIB protocolDistControlTable table 1.3.6.1.2.1.16.12.1 +RMON2-MIB protocolDistControlEntry row 1.3.6.1.2.1.16.12.1.1 +RMON2-MIB protocolDistControlIndex column 1.3.6.1.2.1.16.12.1.1.1 +RMON2-MIB protocolDistControlDataSource column 1.3.6.1.2.1.16.12.1.1.2 +RMON2-MIB protocolDistControlDroppedFrames column 1.3.6.1.2.1.16.12.1.1.3 +RMON2-MIB protocolDistControlCreateTime column 1.3.6.1.2.1.16.12.1.1.4 +RMON2-MIB protocolDistControlOwner column 1.3.6.1.2.1.16.12.1.1.5 +RMON2-MIB protocolDistControlStatus column 1.3.6.1.2.1.16.12.1.1.6 +RMON2-MIB protocolDistStatsTable table 1.3.6.1.2.1.16.12.2 +RMON2-MIB protocolDistStatsEntry row 1.3.6.1.2.1.16.12.2.1 +RMON2-MIB protocolDistStatsPkts column 1.3.6.1.2.1.16.12.2.1.1 +RMON2-MIB protocolDistStatsOctets column 1.3.6.1.2.1.16.12.2.1.2 +RMON2-MIB addressMap node 1.3.6.1.2.1.16.13 +RMON2-MIB addressMapInserts scalar 1.3.6.1.2.1.16.13.1 +RMON2-MIB addressMapDeletes scalar 1.3.6.1.2.1.16.13.2 +RMON2-MIB addressMapMaxDesiredEntries scalar 1.3.6.1.2.1.16.13.3 +RMON2-MIB addressMapControlTable table 1.3.6.1.2.1.16.13.4 +RMON2-MIB addressMapControlEntry row 1.3.6.1.2.1.16.13.4.1 +RMON2-MIB addressMapControlIndex column 1.3.6.1.2.1.16.13.4.1.1 +RMON2-MIB addressMapControlDataSource column 1.3.6.1.2.1.16.13.4.1.2 +RMON2-MIB addressMapControlDroppedFrames column 1.3.6.1.2.1.16.13.4.1.3 +RMON2-MIB addressMapControlOwner column 1.3.6.1.2.1.16.13.4.1.4 +RMON2-MIB addressMapControlStatus column 1.3.6.1.2.1.16.13.4.1.5 +RMON2-MIB addressMapTable table 1.3.6.1.2.1.16.13.5 +RMON2-MIB addressMapEntry row 1.3.6.1.2.1.16.13.5.1 +RMON2-MIB addressMapTimeMark column 1.3.6.1.2.1.16.13.5.1.1 +RMON2-MIB addressMapNetworkAddress column 1.3.6.1.2.1.16.13.5.1.2 +RMON2-MIB addressMapSource column 1.3.6.1.2.1.16.13.5.1.3 +RMON2-MIB addressMapPhysicalAddress column 1.3.6.1.2.1.16.13.5.1.4 +RMON2-MIB addressMapLastChange column 1.3.6.1.2.1.16.13.5.1.5 +RMON2-MIB nlHost node 1.3.6.1.2.1.16.14 +RMON2-MIB hlHostControlTable table 1.3.6.1.2.1.16.14.1 +RMON2-MIB hlHostControlEntry row 1.3.6.1.2.1.16.14.1.1 +RMON2-MIB hlHostControlIndex column 1.3.6.1.2.1.16.14.1.1.1 +RMON2-MIB hlHostControlDataSource column 1.3.6.1.2.1.16.14.1.1.2 +RMON2-MIB hlHostControlNlDroppedFrames column 1.3.6.1.2.1.16.14.1.1.3 +RMON2-MIB hlHostControlNlInserts column 1.3.6.1.2.1.16.14.1.1.4 +RMON2-MIB hlHostControlNlDeletes column 1.3.6.1.2.1.16.14.1.1.5 +RMON2-MIB hlHostControlNlMaxDesiredEntries column 1.3.6.1.2.1.16.14.1.1.6 +RMON2-MIB hlHostControlAlDroppedFrames column 1.3.6.1.2.1.16.14.1.1.7 +RMON2-MIB hlHostControlAlInserts column 1.3.6.1.2.1.16.14.1.1.8 +RMON2-MIB hlHostControlAlDeletes column 1.3.6.1.2.1.16.14.1.1.9 +RMON2-MIB hlHostControlAlMaxDesiredEntries column 1.3.6.1.2.1.16.14.1.1.10 +RMON2-MIB hlHostControlOwner column 1.3.6.1.2.1.16.14.1.1.11 +RMON2-MIB hlHostControlStatus column 1.3.6.1.2.1.16.14.1.1.12 +RMON2-MIB nlHostTable table 1.3.6.1.2.1.16.14.2 +RMON2-MIB nlHostEntry row 1.3.6.1.2.1.16.14.2.1 +RMON2-MIB nlHostTimeMark column 1.3.6.1.2.1.16.14.2.1.1 +RMON2-MIB nlHostAddress column 1.3.6.1.2.1.16.14.2.1.2 +RMON2-MIB nlHostInPkts column 1.3.6.1.2.1.16.14.2.1.3 +RMON2-MIB nlHostOutPkts column 1.3.6.1.2.1.16.14.2.1.4 +RMON2-MIB nlHostInOctets column 1.3.6.1.2.1.16.14.2.1.5 +RMON2-MIB nlHostOutOctets column 1.3.6.1.2.1.16.14.2.1.6 +RMON2-MIB nlHostOutMacNonUnicastPkts column 1.3.6.1.2.1.16.14.2.1.7 +RMON2-MIB nlHostCreateTime column 1.3.6.1.2.1.16.14.2.1.8 +RMON2-MIB nlMatrix node 1.3.6.1.2.1.16.15 +RMON2-MIB hlMatrixControlTable table 1.3.6.1.2.1.16.15.1 +RMON2-MIB hlMatrixControlEntry row 1.3.6.1.2.1.16.15.1.1 +RMON2-MIB hlMatrixControlIndex column 1.3.6.1.2.1.16.15.1.1.1 +RMON2-MIB hlMatrixControlDataSource column 1.3.6.1.2.1.16.15.1.1.2 +RMON2-MIB hlMatrixControlNlDroppedFrames column 1.3.6.1.2.1.16.15.1.1.3 +RMON2-MIB hlMatrixControlNlInserts column 1.3.6.1.2.1.16.15.1.1.4 +RMON2-MIB hlMatrixControlNlDeletes column 1.3.6.1.2.1.16.15.1.1.5 +RMON2-MIB hlMatrixControlNlMaxDesiredEntries column 1.3.6.1.2.1.16.15.1.1.6 +RMON2-MIB hlMatrixControlAlDroppedFrames column 1.3.6.1.2.1.16.15.1.1.7 +RMON2-MIB hlMatrixControlAlInserts column 1.3.6.1.2.1.16.15.1.1.8 +RMON2-MIB hlMatrixControlAlDeletes column 1.3.6.1.2.1.16.15.1.1.9 +RMON2-MIB hlMatrixControlAlMaxDesiredEntries column 1.3.6.1.2.1.16.15.1.1.10 +RMON2-MIB hlMatrixControlOwner column 1.3.6.1.2.1.16.15.1.1.11 +RMON2-MIB hlMatrixControlStatus column 1.3.6.1.2.1.16.15.1.1.12 +RMON2-MIB nlMatrixSDTable table 1.3.6.1.2.1.16.15.2 +RMON2-MIB nlMatrixSDEntry row 1.3.6.1.2.1.16.15.2.1 +RMON2-MIB nlMatrixSDTimeMark column 1.3.6.1.2.1.16.15.2.1.1 +RMON2-MIB nlMatrixSDSourceAddress column 1.3.6.1.2.1.16.15.2.1.2 +RMON2-MIB nlMatrixSDDestAddress column 1.3.6.1.2.1.16.15.2.1.3 +RMON2-MIB nlMatrixSDPkts column 1.3.6.1.2.1.16.15.2.1.4 +RMON2-MIB nlMatrixSDOctets column 1.3.6.1.2.1.16.15.2.1.5 +RMON2-MIB nlMatrixSDCreateTime column 1.3.6.1.2.1.16.15.2.1.6 +RMON2-MIB nlMatrixDSTable table 1.3.6.1.2.1.16.15.3 +RMON2-MIB nlMatrixDSEntry row 1.3.6.1.2.1.16.15.3.1 +RMON2-MIB nlMatrixDSTimeMark column 1.3.6.1.2.1.16.15.3.1.1 +RMON2-MIB nlMatrixDSSourceAddress column 1.3.6.1.2.1.16.15.3.1.2 +RMON2-MIB nlMatrixDSDestAddress column 1.3.6.1.2.1.16.15.3.1.3 +RMON2-MIB nlMatrixDSPkts column 1.3.6.1.2.1.16.15.3.1.4 +RMON2-MIB nlMatrixDSOctets column 1.3.6.1.2.1.16.15.3.1.5 +RMON2-MIB nlMatrixDSCreateTime column 1.3.6.1.2.1.16.15.3.1.6 +RMON2-MIB nlMatrixTopNControlTable table 1.3.6.1.2.1.16.15.4 +RMON2-MIB nlMatrixTopNControlEntry row 1.3.6.1.2.1.16.15.4.1 +RMON2-MIB nlMatrixTopNControlIndex column 1.3.6.1.2.1.16.15.4.1.1 +RMON2-MIB nlMatrixTopNControlMatrixIndex column 1.3.6.1.2.1.16.15.4.1.2 +RMON2-MIB nlMatrixTopNControlRateBase column 1.3.6.1.2.1.16.15.4.1.3 +RMON2-MIB nlMatrixTopNControlTimeRemaining column 1.3.6.1.2.1.16.15.4.1.4 +RMON2-MIB nlMatrixTopNControlGeneratedReports column 1.3.6.1.2.1.16.15.4.1.5 +RMON2-MIB nlMatrixTopNControlDuration column 1.3.6.1.2.1.16.15.4.1.6 +RMON2-MIB nlMatrixTopNControlRequestedSize column 1.3.6.1.2.1.16.15.4.1.7 +RMON2-MIB nlMatrixTopNControlGrantedSize column 1.3.6.1.2.1.16.15.4.1.8 +RMON2-MIB nlMatrixTopNControlStartTime column 1.3.6.1.2.1.16.15.4.1.9 +RMON2-MIB nlMatrixTopNControlOwner column 1.3.6.1.2.1.16.15.4.1.10 +RMON2-MIB nlMatrixTopNControlStatus column 1.3.6.1.2.1.16.15.4.1.11 +RMON2-MIB nlMatrixTopNTable table 1.3.6.1.2.1.16.15.5 +RMON2-MIB nlMatrixTopNEntry row 1.3.6.1.2.1.16.15.5.1 +RMON2-MIB nlMatrixTopNIndex column 1.3.6.1.2.1.16.15.5.1.1 +RMON2-MIB nlMatrixTopNProtocolDirLocalIndex column 1.3.6.1.2.1.16.15.5.1.2 +RMON2-MIB nlMatrixTopNSourceAddress column 1.3.6.1.2.1.16.15.5.1.3 +RMON2-MIB nlMatrixTopNDestAddress column 1.3.6.1.2.1.16.15.5.1.4 +RMON2-MIB nlMatrixTopNPktRate column 1.3.6.1.2.1.16.15.5.1.5 +RMON2-MIB nlMatrixTopNReversePktRate column 1.3.6.1.2.1.16.15.5.1.6 +RMON2-MIB nlMatrixTopNOctetRate column 1.3.6.1.2.1.16.15.5.1.7 +RMON2-MIB nlMatrixTopNReverseOctetRate column 1.3.6.1.2.1.16.15.5.1.8 +RMON2-MIB alHost node 1.3.6.1.2.1.16.16 +RMON2-MIB alHostTable table 1.3.6.1.2.1.16.16.1 +RMON2-MIB alHostEntry row 1.3.6.1.2.1.16.16.1.1 +RMON2-MIB alHostTimeMark column 1.3.6.1.2.1.16.16.1.1.1 +RMON2-MIB alHostInPkts column 1.3.6.1.2.1.16.16.1.1.2 +RMON2-MIB alHostOutPkts column 1.3.6.1.2.1.16.16.1.1.3 +RMON2-MIB alHostInOctets column 1.3.6.1.2.1.16.16.1.1.4 +RMON2-MIB alHostOutOctets column 1.3.6.1.2.1.16.16.1.1.5 +RMON2-MIB alHostCreateTime column 1.3.6.1.2.1.16.16.1.1.6 +RMON2-MIB alMatrix node 1.3.6.1.2.1.16.17 +RMON2-MIB alMatrixSDTable table 1.3.6.1.2.1.16.17.1 +RMON2-MIB alMatrixSDEntry row 1.3.6.1.2.1.16.17.1.1 +RMON2-MIB alMatrixSDTimeMark column 1.3.6.1.2.1.16.17.1.1.1 +RMON2-MIB alMatrixSDPkts column 1.3.6.1.2.1.16.17.1.1.2 +RMON2-MIB alMatrixSDOctets column 1.3.6.1.2.1.16.17.1.1.3 +RMON2-MIB alMatrixSDCreateTime column 1.3.6.1.2.1.16.17.1.1.4 +RMON2-MIB alMatrixDSTable table 1.3.6.1.2.1.16.17.2 +RMON2-MIB alMatrixDSEntry row 1.3.6.1.2.1.16.17.2.1 +RMON2-MIB alMatrixDSTimeMark column 1.3.6.1.2.1.16.17.2.1.1 +RMON2-MIB alMatrixDSPkts column 1.3.6.1.2.1.16.17.2.1.2 +RMON2-MIB alMatrixDSOctets column 1.3.6.1.2.1.16.17.2.1.3 +RMON2-MIB alMatrixDSCreateTime column 1.3.6.1.2.1.16.17.2.1.4 +RMON2-MIB alMatrixTopNControlTable table 1.3.6.1.2.1.16.17.3 +RMON2-MIB alMatrixTopNControlEntry row 1.3.6.1.2.1.16.17.3.1 +RMON2-MIB alMatrixTopNControlIndex column 1.3.6.1.2.1.16.17.3.1.1 +RMON2-MIB alMatrixTopNControlMatrixIndex column 1.3.6.1.2.1.16.17.3.1.2 +RMON2-MIB alMatrixTopNControlRateBase column 1.3.6.1.2.1.16.17.3.1.3 +RMON2-MIB alMatrixTopNControlTimeRemaining column 1.3.6.1.2.1.16.17.3.1.4 +RMON2-MIB alMatrixTopNControlGeneratedReports column 1.3.6.1.2.1.16.17.3.1.5 +RMON2-MIB alMatrixTopNControlDuration column 1.3.6.1.2.1.16.17.3.1.6 +RMON2-MIB alMatrixTopNControlRequestedSize column 1.3.6.1.2.1.16.17.3.1.7 +RMON2-MIB alMatrixTopNControlGrantedSize column 1.3.6.1.2.1.16.17.3.1.8 +RMON2-MIB alMatrixTopNControlStartTime column 1.3.6.1.2.1.16.17.3.1.9 +RMON2-MIB alMatrixTopNControlOwner column 1.3.6.1.2.1.16.17.3.1.10 +RMON2-MIB alMatrixTopNControlStatus column 1.3.6.1.2.1.16.17.3.1.11 +RMON2-MIB alMatrixTopNTable table 1.3.6.1.2.1.16.17.4 +RMON2-MIB alMatrixTopNEntry row 1.3.6.1.2.1.16.17.4.1 +RMON2-MIB alMatrixTopNIndex column 1.3.6.1.2.1.16.17.4.1.1 +RMON2-MIB alMatrixTopNProtocolDirLocalIndex column 1.3.6.1.2.1.16.17.4.1.2 +RMON2-MIB alMatrixTopNSourceAddress column 1.3.6.1.2.1.16.17.4.1.3 +RMON2-MIB alMatrixTopNDestAddress column 1.3.6.1.2.1.16.17.4.1.4 +RMON2-MIB alMatrixTopNAppProtocolDirLocalIndex column 1.3.6.1.2.1.16.17.4.1.5 +RMON2-MIB alMatrixTopNPktRate column 1.3.6.1.2.1.16.17.4.1.6 +RMON2-MIB alMatrixTopNReversePktRate column 1.3.6.1.2.1.16.17.4.1.7 +RMON2-MIB alMatrixTopNOctetRate column 1.3.6.1.2.1.16.17.4.1.8 +RMON2-MIB alMatrixTopNReverseOctetRate column 1.3.6.1.2.1.16.17.4.1.9 +RMON2-MIB usrHistory node 1.3.6.1.2.1.16.18 +RMON2-MIB usrHistoryControlTable table 1.3.6.1.2.1.16.18.1 +RMON2-MIB usrHistoryControlEntry row 1.3.6.1.2.1.16.18.1.1 +RMON2-MIB usrHistoryControlIndex column 1.3.6.1.2.1.16.18.1.1.1 +RMON2-MIB usrHistoryControlObjects column 1.3.6.1.2.1.16.18.1.1.2 +RMON2-MIB usrHistoryControlBucketsRequested column 1.3.6.1.2.1.16.18.1.1.3 +RMON2-MIB usrHistoryControlBucketsGranted column 1.3.6.1.2.1.16.18.1.1.4 +RMON2-MIB usrHistoryControlInterval column 1.3.6.1.2.1.16.18.1.1.5 +RMON2-MIB usrHistoryControlOwner column 1.3.6.1.2.1.16.18.1.1.6 +RMON2-MIB usrHistoryControlStatus column 1.3.6.1.2.1.16.18.1.1.7 +RMON2-MIB usrHistoryObjectTable table 1.3.6.1.2.1.16.18.2 +RMON2-MIB usrHistoryObjectEntry row 1.3.6.1.2.1.16.18.2.1 +RMON2-MIB usrHistoryObjectIndex column 1.3.6.1.2.1.16.18.2.1.1 +RMON2-MIB usrHistoryObjectVariable column 1.3.6.1.2.1.16.18.2.1.2 +RMON2-MIB usrHistoryObjectSampleType column 1.3.6.1.2.1.16.18.2.1.3 +RMON2-MIB usrHistoryTable table 1.3.6.1.2.1.16.18.3 +RMON2-MIB usrHistoryEntry row 1.3.6.1.2.1.16.18.3.1 +RMON2-MIB usrHistorySampleIndex column 1.3.6.1.2.1.16.18.3.1.1 +RMON2-MIB usrHistoryIntervalStart column 1.3.6.1.2.1.16.18.3.1.2 +RMON2-MIB usrHistoryIntervalEnd column 1.3.6.1.2.1.16.18.3.1.3 +RMON2-MIB usrHistoryAbsValue column 1.3.6.1.2.1.16.18.3.1.4 +RMON2-MIB usrHistoryValStatus column 1.3.6.1.2.1.16.18.3.1.5 +RMON2-MIB probeConfig node 1.3.6.1.2.1.16.19 +RMON2-MIB probeCapabilities scalar 1.3.6.1.2.1.16.19.1 +RMON2-MIB probeSoftwareRev scalar 1.3.6.1.2.1.16.19.2 +RMON2-MIB probeHardwareRev scalar 1.3.6.1.2.1.16.19.3 +RMON2-MIB probeDateTime scalar 1.3.6.1.2.1.16.19.4 +RMON2-MIB probeResetControl scalar 1.3.6.1.2.1.16.19.5 +RMON2-MIB probeDownloadFile scalar 1.3.6.1.2.1.16.19.6 +RMON2-MIB probeDownloadTFTPServer scalar 1.3.6.1.2.1.16.19.7 +RMON2-MIB probeDownloadAction scalar 1.3.6.1.2.1.16.19.8 +RMON2-MIB probeDownloadStatus scalar 1.3.6.1.2.1.16.19.9 +RMON2-MIB serialConfigTable table 1.3.6.1.2.1.16.19.10 +RMON2-MIB serialConfigEntry row 1.3.6.1.2.1.16.19.10.1 +RMON2-MIB serialMode column 1.3.6.1.2.1.16.19.10.1.1 +RMON2-MIB serialProtocol column 1.3.6.1.2.1.16.19.10.1.2 +RMON2-MIB serialTimeout column 1.3.6.1.2.1.16.19.10.1.3 +RMON2-MIB serialModemInitString column 1.3.6.1.2.1.16.19.10.1.4 +RMON2-MIB serialModemHangUpString column 1.3.6.1.2.1.16.19.10.1.5 +RMON2-MIB serialModemConnectResp column 1.3.6.1.2.1.16.19.10.1.6 +RMON2-MIB serialModemNoConnectResp column 1.3.6.1.2.1.16.19.10.1.7 +RMON2-MIB serialDialoutTimeout column 1.3.6.1.2.1.16.19.10.1.8 +RMON2-MIB serialStatus column 1.3.6.1.2.1.16.19.10.1.9 +RMON2-MIB netConfigTable table 1.3.6.1.2.1.16.19.11 +RMON2-MIB netConfigEntry row 1.3.6.1.2.1.16.19.11.1 +RMON2-MIB netConfigIPAddress column 1.3.6.1.2.1.16.19.11.1.1 +RMON2-MIB netConfigSubnetMask column 1.3.6.1.2.1.16.19.11.1.2 +RMON2-MIB netConfigStatus column 1.3.6.1.2.1.16.19.11.1.3 +RMON2-MIB netDefaultGateway scalar 1.3.6.1.2.1.16.19.12 +RMON2-MIB trapDestTable table 1.3.6.1.2.1.16.19.13 +RMON2-MIB trapDestEntry row 1.3.6.1.2.1.16.19.13.1 +RMON2-MIB trapDestIndex column 1.3.6.1.2.1.16.19.13.1.1 +RMON2-MIB trapDestCommunity column 1.3.6.1.2.1.16.19.13.1.2 +RMON2-MIB trapDestProtocol column 1.3.6.1.2.1.16.19.13.1.3 +RMON2-MIB trapDestAddress column 1.3.6.1.2.1.16.19.13.1.4 +RMON2-MIB trapDestOwner column 1.3.6.1.2.1.16.19.13.1.5 +RMON2-MIB trapDestStatus column 1.3.6.1.2.1.16.19.13.1.6 +RMON2-MIB serialConnectionTable table 1.3.6.1.2.1.16.19.14 +RMON2-MIB serialConnectionEntry row 1.3.6.1.2.1.16.19.14.1 +RMON2-MIB serialConnectIndex column 1.3.6.1.2.1.16.19.14.1.1 +RMON2-MIB serialConnectDestIpAddress column 1.3.6.1.2.1.16.19.14.1.2 +RMON2-MIB serialConnectType column 1.3.6.1.2.1.16.19.14.1.3 +RMON2-MIB serialConnectDialString column 1.3.6.1.2.1.16.19.14.1.4 +RMON2-MIB serialConnectSwitchConnectSeq column 1.3.6.1.2.1.16.19.14.1.5 +RMON2-MIB serialConnectSwitchDisconnectSeq column 1.3.6.1.2.1.16.19.14.1.6 +RMON2-MIB serialConnectSwitchResetSeq column 1.3.6.1.2.1.16.19.14.1.7 +RMON2-MIB serialConnectOwner column 1.3.6.1.2.1.16.19.14.1.8 +RMON2-MIB serialConnectStatus column 1.3.6.1.2.1.16.19.14.1.9 +RMON2-MIB rmonConformance node 1.3.6.1.2.1.16.20 +RMON2-MIB rmon2MIBCompliances node 1.3.6.1.2.1.16.20.1 +RMON2-MIB rmon2MIBCompliance compliance 1.3.6.1.2.1.16.20.1.1 +RMON2-MIB rmon2MIBApplicationLayerCompliance compliance 1.3.6.1.2.1.16.20.1.2 +RMON2-MIB rmon2MIBGroups node 1.3.6.1.2.1.16.20.2 +RMON2-MIB protocolDirectoryGroup group 1.3.6.1.2.1.16.20.2.1 +RMON2-MIB protocolDistributionGroup group 1.3.6.1.2.1.16.20.2.2 +RMON2-MIB addressMapGroup group 1.3.6.1.2.1.16.20.2.3 +RMON2-MIB nlHostGroup group 1.3.6.1.2.1.16.20.2.4 +RMON2-MIB nlMatrixGroup group 1.3.6.1.2.1.16.20.2.5 +RMON2-MIB alHostGroup group 1.3.6.1.2.1.16.20.2.6 +RMON2-MIB alMatrixGroup group 1.3.6.1.2.1.16.20.2.7 +RMON2-MIB usrHistoryGroup group 1.3.6.1.2.1.16.20.2.8 +RMON2-MIB probeInformationGroup group 1.3.6.1.2.1.16.20.2.9 +RMON2-MIB probeConfigurationGroup group 1.3.6.1.2.1.16.20.2.10 +RMON2-MIB rmon1EnhancementGroup group 1.3.6.1.2.1.16.20.2.11 +RMON2-MIB rmon1EthernetEnhancementGroup group 1.3.6.1.2.1.16.20.2.12 +RMON2-MIB rmon1TokenRingEnhancementGroup group 1.3.6.1.2.1.16.20.2.13 diff --git a/test/dumps/identifiers/SNMPv2-MIB b/test/dumps/identifiers/SNMPv2-MIB new file mode 100644 index 0000000..99f2a61 --- /dev/null +++ b/test/dumps/identifiers/SNMPv2-MIB @@ -0,0 +1,72 @@ +# SNMPv2-MIB list of identifiers (generated by smidump 0.4.2-pre1) + +SNMPv2-MIB system node 1.3.6.1.2.1.1 +SNMPv2-MIB sysDescr scalar 1.3.6.1.2.1.1.1 +SNMPv2-MIB sysObjectID scalar 1.3.6.1.2.1.1.2 +SNMPv2-MIB sysUpTime scalar 1.3.6.1.2.1.1.3 +SNMPv2-MIB sysContact scalar 1.3.6.1.2.1.1.4 +SNMPv2-MIB sysName scalar 1.3.6.1.2.1.1.5 +SNMPv2-MIB sysLocation scalar 1.3.6.1.2.1.1.6 +SNMPv2-MIB sysServices scalar 1.3.6.1.2.1.1.7 +SNMPv2-MIB sysORLastChange scalar 1.3.6.1.2.1.1.8 +SNMPv2-MIB sysORTable table 1.3.6.1.2.1.1.9 +SNMPv2-MIB sysOREntry row 1.3.6.1.2.1.1.9.1 +SNMPv2-MIB sysORIndex column 1.3.6.1.2.1.1.9.1.1 +SNMPv2-MIB sysORID column 1.3.6.1.2.1.1.9.1.2 +SNMPv2-MIB sysORDescr column 1.3.6.1.2.1.1.9.1.3 +SNMPv2-MIB sysORUpTime column 1.3.6.1.2.1.1.9.1.4 +SNMPv2-MIB snmp node 1.3.6.1.2.1.11 +SNMPv2-MIB snmpInPkts scalar 1.3.6.1.2.1.11.1 +SNMPv2-MIB snmpOutPkts scalar 1.3.6.1.2.1.11.2 +SNMPv2-MIB snmpInBadVersions scalar 1.3.6.1.2.1.11.3 +SNMPv2-MIB snmpInBadCommunityNames scalar 1.3.6.1.2.1.11.4 +SNMPv2-MIB snmpInBadCommunityUses scalar 1.3.6.1.2.1.11.5 +SNMPv2-MIB snmpInASNParseErrs scalar 1.3.6.1.2.1.11.6 +SNMPv2-MIB snmpInTooBigs scalar 1.3.6.1.2.1.11.8 +SNMPv2-MIB snmpInNoSuchNames scalar 1.3.6.1.2.1.11.9 +SNMPv2-MIB snmpInBadValues scalar 1.3.6.1.2.1.11.10 +SNMPv2-MIB snmpInReadOnlys scalar 1.3.6.1.2.1.11.11 +SNMPv2-MIB snmpInGenErrs scalar 1.3.6.1.2.1.11.12 +SNMPv2-MIB snmpInTotalReqVars scalar 1.3.6.1.2.1.11.13 +SNMPv2-MIB snmpInTotalSetVars scalar 1.3.6.1.2.1.11.14 +SNMPv2-MIB snmpInGetRequests scalar 1.3.6.1.2.1.11.15 +SNMPv2-MIB snmpInGetNexts scalar 1.3.6.1.2.1.11.16 +SNMPv2-MIB snmpInSetRequests scalar 1.3.6.1.2.1.11.17 +SNMPv2-MIB snmpInGetResponses scalar 1.3.6.1.2.1.11.18 +SNMPv2-MIB snmpInTraps scalar 1.3.6.1.2.1.11.19 +SNMPv2-MIB snmpOutTooBigs scalar 1.3.6.1.2.1.11.20 +SNMPv2-MIB snmpOutNoSuchNames scalar 1.3.6.1.2.1.11.21 +SNMPv2-MIB snmpOutBadValues scalar 1.3.6.1.2.1.11.22 +SNMPv2-MIB snmpOutGenErrs scalar 1.3.6.1.2.1.11.24 +SNMPv2-MIB snmpOutGetRequests scalar 1.3.6.1.2.1.11.25 +SNMPv2-MIB snmpOutGetNexts scalar 1.3.6.1.2.1.11.26 +SNMPv2-MIB snmpOutSetRequests scalar 1.3.6.1.2.1.11.27 +SNMPv2-MIB snmpOutGetResponses scalar 1.3.6.1.2.1.11.28 +SNMPv2-MIB snmpOutTraps scalar 1.3.6.1.2.1.11.29 +SNMPv2-MIB snmpEnableAuthenTraps scalar 1.3.6.1.2.1.11.30 +SNMPv2-MIB snmpSilentDrops scalar 1.3.6.1.2.1.11.31 +SNMPv2-MIB snmpProxyDrops scalar 1.3.6.1.2.1.11.32 +SNMPv2-MIB snmpMIB node 1.3.6.1.6.3.1 +SNMPv2-MIB snmpMIBObjects node 1.3.6.1.6.3.1.1 +SNMPv2-MIB snmpTrap node 1.3.6.1.6.3.1.1.4 +SNMPv2-MIB snmpTrapOID scalar 1.3.6.1.6.3.1.1.4.1 +SNMPv2-MIB snmpTrapEnterprise scalar 1.3.6.1.6.3.1.1.4.3 +SNMPv2-MIB snmpTraps node 1.3.6.1.6.3.1.1.5 +SNMPv2-MIB coldStart notification 1.3.6.1.6.3.1.1.5.1 +SNMPv2-MIB warmStart notification 1.3.6.1.6.3.1.1.5.2 +SNMPv2-MIB authenticationFailure notification 1.3.6.1.6.3.1.1.5.5 +SNMPv2-MIB snmpSet node 1.3.6.1.6.3.1.1.6 +SNMPv2-MIB snmpSetSerialNo scalar 1.3.6.1.6.3.1.1.6.1 +SNMPv2-MIB snmpMIBConformance node 1.3.6.1.6.3.1.2 +SNMPv2-MIB snmpMIBCompliances node 1.3.6.1.6.3.1.2.1 +SNMPv2-MIB snmpBasicCompliance compliance 1.3.6.1.6.3.1.2.1.2 +SNMPv2-MIB snmpBasicComplianceRev2 compliance 1.3.6.1.6.3.1.2.1.3 +SNMPv2-MIB snmpMIBGroups node 1.3.6.1.6.3.1.2.2 +SNMPv2-MIB snmpSetGroup group 1.3.6.1.6.3.1.2.2.5 +SNMPv2-MIB systemGroup group 1.3.6.1.6.3.1.2.2.6 +SNMPv2-MIB snmpBasicNotificationsGroup group 1.3.6.1.6.3.1.2.2.7 +SNMPv2-MIB snmpGroup group 1.3.6.1.6.3.1.2.2.8 +SNMPv2-MIB snmpCommunityGroup group 1.3.6.1.6.3.1.2.2.9 +SNMPv2-MIB snmpObsoleteGroup group 1.3.6.1.6.3.1.2.2.10 +SNMPv2-MIB snmpWarmStartNotificationGroup group 1.3.6.1.6.3.1.2.2.11 +SNMPv2-MIB snmpNotificationGroup group 1.3.6.1.6.3.1.2.2.12 diff --git a/test/dumps/imports/IF-MIB b/test/dumps/imports/IF-MIB new file mode 100644 index 0000000..e0529cc --- /dev/null +++ b/test/dumps/imports/IF-MIB @@ -0,0 +1,31 @@ +# IF-MIB imports tree (generated by smidump 0.4.5) + +IF-MIB + | + +--SNMPv2-SMI [9 identifiers] + +--SNMPv2-TC [8 identifiers] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--SNMPv2-CONF [3 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--SNMPv2-MIB [1 identifier] + | | + | +--SNMPv2-SMI [7 identifiers] + | +--SNMPv2-TC [3 identifiers] + | | | + | | +--SNMPv2-SMI [1 identifier] + | | + | +--SNMPv2-CONF [3 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--IANAifType-MIB [1 identifier] + | + +--SNMPv2-SMI [2 identifiers] + +--SNMPv2-TC [1 identifier] + | + +--SNMPv2-SMI [1 identifier] + diff --git a/test/dumps/imports/MAU-MIB b/test/dumps/imports/MAU-MIB new file mode 100644 index 0000000..1497556 --- /dev/null +++ b/test/dumps/imports/MAU-MIB @@ -0,0 +1,49 @@ +# MAU-MIB imports tree (generated by smidump 0.4.5) + +MAU-MIB + | + +--SNMPv2-SMI [7 identifiers] + +--SNMPv2-TC [3 identifiers] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--SNMPv2-CONF [3 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--IF-MIB [1 identifier] + | | + | +--SNMPv2-SMI [9 identifiers] + | +--SNMPv2-TC [8 identifiers] + | | | + | | +--SNMPv2-SMI [1 identifier] + | | + | +--SNMPv2-CONF [3 identifiers] + | | | + | | +--SNMPv2-SMI [3 identifiers] + | | + | +--SNMPv2-MIB [1 identifier] + | | | + | | +--SNMPv2-SMI [7 identifiers] + | | +--SNMPv2-TC [3 identifiers] + | | | | + | | | +--SNMPv2-SMI [1 identifier] + | | | + | | +--SNMPv2-CONF [3 identifiers] + | | | + | | +--SNMPv2-SMI [3 identifiers] + | | + | +--IANAifType-MIB [1 identifier] + | | + | +--SNMPv2-SMI [2 identifiers] + | +--SNMPv2-TC [1 identifier] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--IANA-MAU-MIB [4 identifiers] + | + +--SNMPv2-SMI [3 identifiers] + +--SNMPv2-TC [1 identifier] + | + +--SNMPv2-SMI [1 identifier] + diff --git a/test/dumps/imports/Makefile.am b/test/dumps/imports/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/imports/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/imports/Makefile.in b/test/dumps/imports/Makefile.in new file mode 100644 index 0000000..5034f49 --- /dev/null +++ b/test/dumps/imports/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/imports +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/imports/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/imports/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/imports/RMON2-MIB b/test/dumps/imports/RMON2-MIB new file mode 100644 index 0000000..f9a0233 --- /dev/null +++ b/test/dumps/imports/RMON2-MIB @@ -0,0 +1,74 @@ +# RMON2-MIB imports tree (generated by smidump 0.4.5) + +RMON2-MIB + | + +--SNMPv2-SMI [8 identifiers] + +--SNMPv2-TC [4 identifiers] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--SNMPv2-CONF [2 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--IF-MIB [1 identifier] + | | + | +--SNMPv2-SMI [9 identifiers] + | +--SNMPv2-TC [8 identifiers] + | | | + | | +--SNMPv2-SMI [1 identifier] + | | + | +--SNMPv2-CONF [3 identifiers] + | | | + | | +--SNMPv2-SMI [3 identifiers] + | | + | +--SNMPv2-MIB [1 identifier] + | | | + | | +--SNMPv2-SMI [7 identifiers] + | | +--SNMPv2-TC [3 identifiers] + | | | | + | | | +--SNMPv2-SMI [1 identifier] + | | | + | | +--SNMPv2-CONF [3 identifiers] + | | | + | | +--SNMPv2-SMI [3 identifiers] + | | + | +--IANAifType-MIB [1 identifier] + | | + | +--SNMPv2-SMI [2 identifiers] + | +--SNMPv2-TC [1 identifier] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--RMON-MIB [12 identifiers] + | | + | +--SNMPv2-SMI [8 identifiers] + | +--SNMPv2-TC [2 identifiers] + | | | + | | +--SNMPv2-SMI [1 identifier] + | | + | +--SNMPv2-CONF [3 identifiers] + | | + | +--SNMPv2-SMI [3 identifiers] + | + +--TOKEN-RING-RMON-MIB [5 identifiers] + | + +--RFC1155-SMI [2 identifiers] + +--RFC-1212 [1 identifier] + | | + | +--RFC1155-SMI [1 identifier] + | + +--RFC1271-MIB [5 identifiers] + | + +--RFC1155-SMI [1 identifier] + +--RFC1213-MIB [2 identifiers] + | | + | +--RFC1155-SMI [6 identifiers] + | +--RFC-1212 [1 identifier] + | | + | +--RFC1155-SMI [1 identifier] + | + +--RFC-1212 [1 identifier] + | + +--RFC1155-SMI [1 identifier] + diff --git a/test/dumps/imports/SNMPv2-MIB b/test/dumps/imports/SNMPv2-MIB new file mode 100644 index 0000000..0766c7e --- /dev/null +++ b/test/dumps/imports/SNMPv2-MIB @@ -0,0 +1,13 @@ +# SNMPv2-MIB imports tree (generated by smidump 0.4.5) + +SNMPv2-MIB + | + +--SNMPv2-SMI [7 identifiers] + +--SNMPv2-TC [3 identifiers] + | | + | +--SNMPv2-SMI [1 identifier] + | + +--SNMPv2-CONF [3 identifiers] + | + +--SNMPv2-SMI [3 identifiers] + diff --git a/test/dumps/jax/AddressMap.java b/test/dumps/jax/AddressMap.java new file mode 100644 index 0000000..18830aa --- /dev/null +++ b/test/dumps/jax/AddressMap.java @@ -0,0 +1,135 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMap.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group addressMap defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class AddressMap extends AgentXScalars +{ + + private final static long[] AddressMapOID = {1, 3, 6, 1, 2, 1, 16, 13}; + + protected AgentXOID AddressMapInsertsOID; + protected final static long[] AddressMapInsertsName = {1, 3, 6, 1, 2, 1, 16, 13, 1, 0}; + protected long addressMapInserts = 0; + protected AgentXOID AddressMapDeletesOID; + protected final static long[] AddressMapDeletesName = {1, 3, 6, 1, 2, 1, 16, 13, 2, 0}; + protected long addressMapDeletes = 0; + protected AgentXOID AddressMapMaxDesiredEntriesOID; + protected final static long[] AddressMapMaxDesiredEntriesName = {1, 3, 6, 1, 2, 1, 16, 13, 3, 0}; + protected int addressMapMaxDesiredEntries = 0; + protected int undo_addressMapMaxDesiredEntries = 0; + public AddressMap() + { + oid = new AgentXOID(AddressMapOID); + data = new Vector(); + AddressMapInsertsOID = new AgentXOID(AddressMapInsertsName); + data.addElement(AddressMapInsertsOID); + AddressMapDeletesOID = new AgentXOID(AddressMapDeletesName); + data.addElement(AddressMapDeletesOID); + AddressMapMaxDesiredEntriesOID = new AgentXOID(AddressMapMaxDesiredEntriesName); + data.addElement(AddressMapMaxDesiredEntriesOID); + } + + public long get_addressMapInserts() + { + return addressMapInserts; + } + + public long get_addressMapDeletes() + { + return addressMapDeletes; + } + + public int get_addressMapMaxDesiredEntries() + { + return addressMapMaxDesiredEntries; + } + + public int set_addressMapMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapMaxDesiredEntries = addressMapMaxDesiredEntries; + addressMapMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + addressMapMaxDesiredEntries = undo_addressMapMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == AddressMapInsertsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_addressMapInserts()); + if (pos == AddressMapDeletesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_addressMapDeletes()); + if (pos == AddressMapMaxDesiredEntriesOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_addressMapMaxDesiredEntries()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == AddressMapMaxDesiredEntriesOID) + return set_addressMapMaxDesiredEntries(phase, inVb.intValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == AddressMapInsertsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_addressMapInserts()); + if (pos == AddressMapDeletesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_addressMapDeletes()); + if (pos == AddressMapMaxDesiredEntriesOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_addressMapMaxDesiredEntries()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/AddressMapControlEntry.java b/test/dumps/jax/AddressMapControlEntry.java new file mode 100644 index 0000000..20dc79e --- /dev/null +++ b/test/dumps/jax/AddressMapControlEntry.java @@ -0,0 +1,127 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row addressMapControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AddressMapControlEntry extends AgentXEntry +{ + + protected int addressMapControlIndex = 0; + protected AgentXOID addressMapControlDataSource = new AgentXOID(); + protected AgentXOID undo_addressMapControlDataSource = new AgentXOID(); + protected long addressMapControlDroppedFrames = 0; + protected byte[] addressMapControlOwner = new byte[0]; + protected byte[] undo_addressMapControlOwner = new byte[0]; + protected int addressMapControlStatus = 0; + protected int undo_addressMapControlStatus = 0; + + public AddressMapControlEntry(int addressMapControlIndex) + { + this.addressMapControlIndex = addressMapControlIndex; + + instance.append(addressMapControlIndex); + } + + public int get_addressMapControlIndex() + { + return addressMapControlIndex; + } + + public AgentXOID get_addressMapControlDataSource() + { + return addressMapControlDataSource; + } + + public int set_addressMapControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlDataSource = addressMapControlDataSource; + addressMapControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + addressMapControlDataSource = undo_addressMapControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_addressMapControlDroppedFrames() + { + return addressMapControlDroppedFrames; + } + + public byte[] get_addressMapControlOwner() + { + return addressMapControlOwner; + } + + public int set_addressMapControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlOwner = addressMapControlOwner; + addressMapControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + addressMapControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + addressMapControlOwner = undo_addressMapControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_addressMapControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_addressMapControlStatus() + { + return addressMapControlStatus; + } + + public int set_addressMapControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlStatus = addressMapControlStatus; + addressMapControlStatus = value; + break; + case AgentXSetPhase.UNDO: + addressMapControlStatus = undo_addressMapControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/AddressMapControlEntryImpl.java b/test/dumps/jax/AddressMapControlEntryImpl.java new file mode 100644 index 0000000..4e75c5e --- /dev/null +++ b/test/dumps/jax/AddressMapControlEntryImpl.java @@ -0,0 +1,109 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row addressMapControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AddressMapControlEntryImpl extends AddressMapControlEntry +{ + + // constructor + public AddressMapControlEntryImpl(int addressMapControlIndex) + { + super(addressMapControlIndex); + } + + public AgentXOID get_addressMapControlDataSource() + { + return addressMapControlDataSource; + } + + public int set_addressMapControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlDataSource = addressMapControlDataSource; + addressMapControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + addressMapControlDataSource = undo_addressMapControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_addressMapControlDroppedFrames() + { + return addressMapControlDroppedFrames; + } + + public byte[] get_addressMapControlOwner() + { + return addressMapControlOwner; + } + + public int set_addressMapControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlOwner = addressMapControlOwner; + addressMapControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + addressMapControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + addressMapControlOwner = undo_addressMapControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_addressMapControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_addressMapControlStatus() + { + return addressMapControlStatus; + } + + public int set_addressMapControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapControlStatus = addressMapControlStatus; + addressMapControlStatus = value; + break; + case AgentXSetPhase.UNDO: + addressMapControlStatus = undo_addressMapControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/AddressMapControlTable.java b/test/dumps/jax/AddressMapControlTable.java new file mode 100644 index 0000000..b292bd4 --- /dev/null +++ b/test/dumps/jax/AddressMapControlTable.java @@ -0,0 +1,121 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table addressMapControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AddressMapControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1}; + + // constructors + public AddressMapControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AddressMapControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // addressMapControlDataSource + { + AgentXOID value = ((AddressMapControlEntry)entry).get_addressMapControlDataSource(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // addressMapControlDroppedFrames + { + long value = ((AddressMapControlEntry)entry).get_addressMapControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // addressMapControlOwner + { + byte[] value = ((AddressMapControlEntry)entry).get_addressMapControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // addressMapControlStatus + { + int value = ((AddressMapControlEntry)entry).get_addressMapControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // addressMapControlDataSource + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AddressMapControlEntry)entry).set_addressMapControlDataSource(phase, vb.AgentXOIDValue()); + } + case 4: // addressMapControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AddressMapControlEntry)entry).set_addressMapControlOwner(phase, vb.bytesValue()); + } + case 5: // addressMapControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AddressMapControlEntry)entry).set_addressMapControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AddressMapEntry.java b/test/dumps/jax/AddressMapEntry.java new file mode 100644 index 0000000..bae2b56 --- /dev/null +++ b/test/dumps/jax/AddressMapEntry.java @@ -0,0 +1,80 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row addressMapEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AddressMapEntry extends AgentXEntry +{ + + protected long addressMapTimeMark = 0; + protected byte[] addressMapNetworkAddress = new byte[0]; + protected AgentXOID addressMapSource = new AgentXOID(); + protected byte[] addressMapPhysicalAddress = new byte[0]; + protected long addressMapLastChange = 0; + // foreign indices + protected int protocolDirLocalIndex; + + public AddressMapEntry(long addressMapTimeMark, + int protocolDirLocalIndex, + byte[] addressMapNetworkAddress, + AgentXOID addressMapSource) + { + this.addressMapTimeMark = addressMapTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.addressMapNetworkAddress = addressMapNetworkAddress; + this.addressMapSource = addressMapSource; + + instance.append(addressMapTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(addressMapNetworkAddress); + instance.append(addressMapSource); + } + + public long get_addressMapTimeMark() + { + return addressMapTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_addressMapNetworkAddress() + { + return addressMapNetworkAddress; + } + + public AgentXOID get_addressMapSource() + { + return addressMapSource; + } + + public byte[] get_addressMapPhysicalAddress() + { + return addressMapPhysicalAddress; + } + + public long get_addressMapLastChange() + { + return addressMapLastChange; + } + +} + diff --git a/test/dumps/jax/AddressMapEntryImpl.java b/test/dumps/jax/AddressMapEntryImpl.java new file mode 100644 index 0000000..8969f76 --- /dev/null +++ b/test/dumps/jax/AddressMapEntryImpl.java @@ -0,0 +1,45 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row addressMapEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AddressMapEntryImpl extends AddressMapEntry +{ + + // constructor + public AddressMapEntryImpl(long addressMapTimeMark, + int protocolDirLocalIndex, + byte[] addressMapNetworkAddress, + AgentXOID addressMapSource) + { + super(addressMapTimeMark, + protocolDirLocalIndex, + addressMapNetworkAddress, + addressMapSource); + } + + public byte[] get_addressMapPhysicalAddress() + { + return addressMapPhysicalAddress; + } + + public long get_addressMapLastChange() + { + return addressMapLastChange; + } + +} + diff --git a/test/dumps/jax/AddressMapImpl.java b/test/dumps/jax/AddressMapImpl.java new file mode 100644 index 0000000..e8af614 --- /dev/null +++ b/test/dumps/jax/AddressMapImpl.java @@ -0,0 +1,60 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group addressMap defined in RMON2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class AddressMapImpl extends AddressMap +{ + + public long get_addressMapInserts() + { + return addressMapInserts; + } + + public long get_addressMapDeletes() + { + return addressMapDeletes; + } + + public int get_addressMapMaxDesiredEntries() + { + return addressMapMaxDesiredEntries; + } + + public int set_addressMapMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_addressMapMaxDesiredEntries = addressMapMaxDesiredEntries; + addressMapMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + addressMapMaxDesiredEntries = undo_addressMapMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + undo_addressMapMaxDesiredEntries = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + +} + diff --git a/test/dumps/jax/AddressMapTable.java b/test/dumps/jax/AddressMapTable.java new file mode 100644 index 0000000..abdaca8 --- /dev/null +++ b/test/dumps/jax/AddressMapTable.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AddressMapTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table addressMapTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AddressMapTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1}; + + // constructors + public AddressMapTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AddressMapTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 4: // addressMapPhysicalAddress + { + byte[] value = ((AddressMapEntry)entry).get_addressMapPhysicalAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // addressMapLastChange + { + long value = ((AddressMapEntry)entry).get_addressMapLastChange(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlHostEntry.java b/test/dumps/jax/AlHostEntry.java new file mode 100644 index 0000000..bc989ac --- /dev/null +++ b/test/dumps/jax/AlHostEntry.java @@ -0,0 +1,107 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlHostEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alHostEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlHostEntry extends AgentXEntry +{ + + protected long alHostTimeMark = 0; + protected long alHostInPkts = 0; + protected long alHostOutPkts = 0; + protected long alHostInOctets = 0; + protected long alHostOutOctets = 0; + protected long alHostCreateTime = 0; + // foreign indices + protected int hlHostControlIndex; + protected int protocolDirLocalIndex; + protected byte[] nlHostAddress; + protected int protocolDirLocalIndex; + + public AlHostEntry(int hlHostControlIndex, + long alHostTimeMark, + int protocolDirLocalIndex, + byte[] nlHostAddress, + int protocolDirLocalIndex) + { + this.hlHostControlIndex = hlHostControlIndex; + this.alHostTimeMark = alHostTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlHostAddress = nlHostAddress; + this.protocolDirLocalIndex = protocolDirLocalIndex; + + instance.append(hlHostControlIndex); + instance.append(alHostTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlHostAddress); + instance.append(protocolDirLocalIndex); + } + + public int get_hlHostControlIndex() + { + return hlHostControlIndex; + } + + public long get_alHostTimeMark() + { + return alHostTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlHostAddress() + { + return nlHostAddress; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public long get_alHostInPkts() + { + return alHostInPkts; + } + + public long get_alHostOutPkts() + { + return alHostOutPkts; + } + + public long get_alHostInOctets() + { + return alHostInOctets; + } + + public long get_alHostOutOctets() + { + return alHostOutOctets; + } + + public long get_alHostCreateTime() + { + return alHostCreateTime; + } + +} + diff --git a/test/dumps/jax/AlHostEntryImpl.java b/test/dumps/jax/AlHostEntryImpl.java new file mode 100644 index 0000000..ef19fb0 --- /dev/null +++ b/test/dumps/jax/AlHostEntryImpl.java @@ -0,0 +1,62 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlHostEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alHostEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlHostEntryImpl extends AlHostEntry +{ + + // constructor + public AlHostEntryImpl(int hlHostControlIndex, + long alHostTimeMark, + int protocolDirLocalIndex, + byte[] nlHostAddress, + int protocolDirLocalIndex) + { + super(hlHostControlIndex, + alHostTimeMark, + protocolDirLocalIndex, + nlHostAddress, + protocolDirLocalIndex); + } + + public long get_alHostInPkts() + { + return alHostInPkts; + } + + public long get_alHostOutPkts() + { + return alHostOutPkts; + } + + public long get_alHostInOctets() + { + return alHostInOctets; + } + + public long get_alHostOutOctets() + { + return alHostOutOctets; + } + + public long get_alHostCreateTime() + { + return alHostCreateTime; + } + +} + diff --git a/test/dumps/jax/AlHostTable.java b/test/dumps/jax/AlHostTable.java new file mode 100644 index 0000000..8995abe --- /dev/null +++ b/test/dumps/jax/AlHostTable.java @@ -0,0 +1,107 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlHostTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alHostTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlHostTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1}; + + // constructors + public AlHostTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AlHostTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alHostInPkts + { + long value = ((AlHostEntry)entry).get_alHostInPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 3: // alHostOutPkts + { + long value = ((AlHostEntry)entry).get_alHostOutPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 4: // alHostInOctets + { + long value = ((AlHostEntry)entry).get_alHostInOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // alHostOutOctets + { + long value = ((AlHostEntry)entry).get_alHostOutOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // alHostCreateTime + { + long value = ((AlHostEntry)entry).get_alHostCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlMatrixDSEntry.java b/test/dumps/jax/AlMatrixDSEntry.java new file mode 100644 index 0000000..8ff954f --- /dev/null +++ b/test/dumps/jax/AlMatrixDSEntry.java @@ -0,0 +1,104 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixDSEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alMatrixDSEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixDSEntry extends AgentXEntry +{ + + protected long alMatrixDSTimeMark = 0; + protected long alMatrixDSPkts = 0; + protected long alMatrixDSOctets = 0; + protected long alMatrixDSCreateTime = 0; + // foreign indices + protected int hlMatrixControlIndex; + protected int protocolDirLocalIndex; + protected byte[] nlMatrixDSDestAddress; + protected byte[] nlMatrixDSSourceAddress; + protected int protocolDirLocalIndex; + + public AlMatrixDSEntry(int hlMatrixControlIndex, + long alMatrixDSTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixDSDestAddress, + byte[] nlMatrixDSSourceAddress, + int protocolDirLocalIndex) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + this.alMatrixDSTimeMark = alMatrixDSTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlMatrixDSDestAddress = nlMatrixDSDestAddress; + this.nlMatrixDSSourceAddress = nlMatrixDSSourceAddress; + this.protocolDirLocalIndex = protocolDirLocalIndex; + + instance.append(hlMatrixControlIndex); + instance.append(alMatrixDSTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlMatrixDSDestAddress); + instance.append(nlMatrixDSSourceAddress); + instance.append(protocolDirLocalIndex); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public long get_alMatrixDSTimeMark() + { + return alMatrixDSTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlMatrixDSDestAddress() + { + return nlMatrixDSDestAddress; + } + + public byte[] get_nlMatrixDSSourceAddress() + { + return nlMatrixDSSourceAddress; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public long get_alMatrixDSPkts() + { + return alMatrixDSPkts; + } + + public long get_alMatrixDSOctets() + { + return alMatrixDSOctets; + } + + public long get_alMatrixDSCreateTime() + { + return alMatrixDSCreateTime; + } + +} + diff --git a/test/dumps/jax/AlMatrixDSEntryImpl.java b/test/dumps/jax/AlMatrixDSEntryImpl.java new file mode 100644 index 0000000..063eeff --- /dev/null +++ b/test/dumps/jax/AlMatrixDSEntryImpl.java @@ -0,0 +1,54 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixDSEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alMatrixDSEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixDSEntryImpl extends AlMatrixDSEntry +{ + + // constructor + public AlMatrixDSEntryImpl(int hlMatrixControlIndex, + long alMatrixDSTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixDSDestAddress, + byte[] nlMatrixDSSourceAddress, + int protocolDirLocalIndex) + { + super(hlMatrixControlIndex, + alMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, + nlMatrixDSSourceAddress, + protocolDirLocalIndex); + } + + public long get_alMatrixDSPkts() + { + return alMatrixDSPkts; + } + + public long get_alMatrixDSOctets() + { + return alMatrixDSOctets; + } + + public long get_alMatrixDSCreateTime() + { + return alMatrixDSCreateTime; + } + +} + diff --git a/test/dumps/jax/AlMatrixDSTable.java b/test/dumps/jax/AlMatrixDSTable.java new file mode 100644 index 0000000..5305b0c --- /dev/null +++ b/test/dumps/jax/AlMatrixDSTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixDSTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alMatrixDSTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlMatrixDSTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1}; + + // constructors + public AlMatrixDSTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AlMatrixDSTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alMatrixDSPkts + { + long value = ((AlMatrixDSEntry)entry).get_alMatrixDSPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 3: // alMatrixDSOctets + { + long value = ((AlMatrixDSEntry)entry).get_alMatrixDSOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 4: // alMatrixDSCreateTime + { + long value = ((AlMatrixDSEntry)entry).get_alMatrixDSCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlMatrixSDEntry.java b/test/dumps/jax/AlMatrixSDEntry.java new file mode 100644 index 0000000..c638e6d --- /dev/null +++ b/test/dumps/jax/AlMatrixSDEntry.java @@ -0,0 +1,104 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixSDEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alMatrixSDEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixSDEntry extends AgentXEntry +{ + + protected long alMatrixSDTimeMark = 0; + protected long alMatrixSDPkts = 0; + protected long alMatrixSDOctets = 0; + protected long alMatrixSDCreateTime = 0; + // foreign indices + protected int hlMatrixControlIndex; + protected int protocolDirLocalIndex; + protected byte[] nlMatrixSDSourceAddress; + protected byte[] nlMatrixSDDestAddress; + protected int protocolDirLocalIndex; + + public AlMatrixSDEntry(int hlMatrixControlIndex, + long alMatrixSDTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixSDSourceAddress, + byte[] nlMatrixSDDestAddress, + int protocolDirLocalIndex) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + this.alMatrixSDTimeMark = alMatrixSDTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlMatrixSDSourceAddress = nlMatrixSDSourceAddress; + this.nlMatrixSDDestAddress = nlMatrixSDDestAddress; + this.protocolDirLocalIndex = protocolDirLocalIndex; + + instance.append(hlMatrixControlIndex); + instance.append(alMatrixSDTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlMatrixSDSourceAddress); + instance.append(nlMatrixSDDestAddress); + instance.append(protocolDirLocalIndex); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public long get_alMatrixSDTimeMark() + { + return alMatrixSDTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlMatrixSDSourceAddress() + { + return nlMatrixSDSourceAddress; + } + + public byte[] get_nlMatrixSDDestAddress() + { + return nlMatrixSDDestAddress; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public long get_alMatrixSDPkts() + { + return alMatrixSDPkts; + } + + public long get_alMatrixSDOctets() + { + return alMatrixSDOctets; + } + + public long get_alMatrixSDCreateTime() + { + return alMatrixSDCreateTime; + } + +} + diff --git a/test/dumps/jax/AlMatrixSDEntryImpl.java b/test/dumps/jax/AlMatrixSDEntryImpl.java new file mode 100644 index 0000000..dbc6899 --- /dev/null +++ b/test/dumps/jax/AlMatrixSDEntryImpl.java @@ -0,0 +1,54 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixSDEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alMatrixSDEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixSDEntryImpl extends AlMatrixSDEntry +{ + + // constructor + public AlMatrixSDEntryImpl(int hlMatrixControlIndex, + long alMatrixSDTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixSDSourceAddress, + byte[] nlMatrixSDDestAddress, + int protocolDirLocalIndex) + { + super(hlMatrixControlIndex, + alMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, + nlMatrixSDDestAddress, + protocolDirLocalIndex); + } + + public long get_alMatrixSDPkts() + { + return alMatrixSDPkts; + } + + public long get_alMatrixSDOctets() + { + return alMatrixSDOctets; + } + + public long get_alMatrixSDCreateTime() + { + return alMatrixSDCreateTime; + } + +} + diff --git a/test/dumps/jax/AlMatrixSDTable.java b/test/dumps/jax/AlMatrixSDTable.java new file mode 100644 index 0000000..9dee24d --- /dev/null +++ b/test/dumps/jax/AlMatrixSDTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixSDTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alMatrixSDTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlMatrixSDTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1}; + + // constructors + public AlMatrixSDTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AlMatrixSDTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alMatrixSDPkts + { + long value = ((AlMatrixSDEntry)entry).get_alMatrixSDPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 3: // alMatrixSDOctets + { + long value = ((AlMatrixSDEntry)entry).get_alMatrixSDOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 4: // alMatrixSDCreateTime + { + long value = ((AlMatrixSDEntry)entry).get_alMatrixSDCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlMatrixTopNControlEntry.java b/test/dumps/jax/AlMatrixTopNControlEntry.java new file mode 100644 index 0000000..8b8e6b2 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNControlEntry.java @@ -0,0 +1,223 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alMatrixTopNControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixTopNControlEntry extends AgentXEntry +{ + + protected int alMatrixTopNControlIndex = 0; + protected int alMatrixTopNControlMatrixIndex = 0; + protected int undo_alMatrixTopNControlMatrixIndex = 0; + protected int alMatrixTopNControlRateBase = 0; + protected int undo_alMatrixTopNControlRateBase = 0; + protected int alMatrixTopNControlTimeRemaining = 0; + protected int undo_alMatrixTopNControlTimeRemaining = 0; + protected long alMatrixTopNControlGeneratedReports = 0; + protected int alMatrixTopNControlDuration = 0; + protected int alMatrixTopNControlRequestedSize = 0; + protected int undo_alMatrixTopNControlRequestedSize = 0; + protected int alMatrixTopNControlGrantedSize = 0; + protected long alMatrixTopNControlStartTime = 0; + protected byte[] alMatrixTopNControlOwner = new byte[0]; + protected byte[] undo_alMatrixTopNControlOwner = new byte[0]; + protected int alMatrixTopNControlStatus = 0; + protected int undo_alMatrixTopNControlStatus = 0; + + public AlMatrixTopNControlEntry(int alMatrixTopNControlIndex) + { + this.alMatrixTopNControlIndex = alMatrixTopNControlIndex; + + instance.append(alMatrixTopNControlIndex); + } + + public int get_alMatrixTopNControlIndex() + { + return alMatrixTopNControlIndex; + } + + public int get_alMatrixTopNControlMatrixIndex() + { + return alMatrixTopNControlMatrixIndex; + } + + public int set_alMatrixTopNControlMatrixIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlMatrixIndex = alMatrixTopNControlMatrixIndex; + alMatrixTopNControlMatrixIndex = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlMatrixIndex = undo_alMatrixTopNControlMatrixIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlRateBase() + { + return alMatrixTopNControlRateBase; + } + + public int set_alMatrixTopNControlRateBase(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlRateBase = alMatrixTopNControlRateBase; + alMatrixTopNControlRateBase = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlRateBase = undo_alMatrixTopNControlRateBase; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlTimeRemaining() + { + return alMatrixTopNControlTimeRemaining; + } + + public int set_alMatrixTopNControlTimeRemaining(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlTimeRemaining = alMatrixTopNControlTimeRemaining; + alMatrixTopNControlTimeRemaining = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlTimeRemaining = undo_alMatrixTopNControlTimeRemaining; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_alMatrixTopNControlGeneratedReports() + { + return alMatrixTopNControlGeneratedReports; + } + + public int get_alMatrixTopNControlDuration() + { + return alMatrixTopNControlDuration; + } + + public int get_alMatrixTopNControlRequestedSize() + { + return alMatrixTopNControlRequestedSize; + } + + public int set_alMatrixTopNControlRequestedSize(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlRequestedSize = alMatrixTopNControlRequestedSize; + alMatrixTopNControlRequestedSize = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlRequestedSize = undo_alMatrixTopNControlRequestedSize; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlGrantedSize() + { + return alMatrixTopNControlGrantedSize; + } + + public long get_alMatrixTopNControlStartTime() + { + return alMatrixTopNControlStartTime; + } + + public byte[] get_alMatrixTopNControlOwner() + { + return alMatrixTopNControlOwner; + } + + public int set_alMatrixTopNControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlOwner = alMatrixTopNControlOwner; + alMatrixTopNControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + alMatrixTopNControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlOwner = undo_alMatrixTopNControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_alMatrixTopNControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlStatus() + { + return alMatrixTopNControlStatus; + } + + public int set_alMatrixTopNControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlStatus = alMatrixTopNControlStatus; + alMatrixTopNControlStatus = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlStatus = undo_alMatrixTopNControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/AlMatrixTopNControlEntryImpl.java b/test/dumps/jax/AlMatrixTopNControlEntryImpl.java new file mode 100644 index 0000000..9539380 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNControlEntryImpl.java @@ -0,0 +1,196 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alMatrixTopNControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixTopNControlEntryImpl extends AlMatrixTopNControlEntry +{ + + // constructor + public AlMatrixTopNControlEntryImpl(int alMatrixTopNControlIndex) + { + super(alMatrixTopNControlIndex); + } + + public int get_alMatrixTopNControlMatrixIndex() + { + return alMatrixTopNControlMatrixIndex; + } + + public int set_alMatrixTopNControlMatrixIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlMatrixIndex = alMatrixTopNControlMatrixIndex; + alMatrixTopNControlMatrixIndex = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlMatrixIndex = undo_alMatrixTopNControlMatrixIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlRateBase() + { + return alMatrixTopNControlRateBase; + } + + public int set_alMatrixTopNControlRateBase(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlRateBase = alMatrixTopNControlRateBase; + alMatrixTopNControlRateBase = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlRateBase = undo_alMatrixTopNControlRateBase; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlTimeRemaining() + { + return alMatrixTopNControlTimeRemaining; + } + + public int set_alMatrixTopNControlTimeRemaining(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlTimeRemaining = alMatrixTopNControlTimeRemaining; + alMatrixTopNControlTimeRemaining = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlTimeRemaining = undo_alMatrixTopNControlTimeRemaining; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_alMatrixTopNControlGeneratedReports() + { + return alMatrixTopNControlGeneratedReports; + } + + public int get_alMatrixTopNControlDuration() + { + return alMatrixTopNControlDuration; + } + + public int get_alMatrixTopNControlRequestedSize() + { + return alMatrixTopNControlRequestedSize; + } + + public int set_alMatrixTopNControlRequestedSize(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlRequestedSize = alMatrixTopNControlRequestedSize; + alMatrixTopNControlRequestedSize = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlRequestedSize = undo_alMatrixTopNControlRequestedSize; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlGrantedSize() + { + return alMatrixTopNControlGrantedSize; + } + + public long get_alMatrixTopNControlStartTime() + { + return alMatrixTopNControlStartTime; + } + + public byte[] get_alMatrixTopNControlOwner() + { + return alMatrixTopNControlOwner; + } + + public int set_alMatrixTopNControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlOwner = alMatrixTopNControlOwner; + alMatrixTopNControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + alMatrixTopNControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlOwner = undo_alMatrixTopNControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_alMatrixTopNControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_alMatrixTopNControlStatus() + { + return alMatrixTopNControlStatus; + } + + public int set_alMatrixTopNControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_alMatrixTopNControlStatus = alMatrixTopNControlStatus; + alMatrixTopNControlStatus = value; + break; + case AgentXSetPhase.UNDO: + alMatrixTopNControlStatus = undo_alMatrixTopNControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/AlMatrixTopNControlTable.java b/test/dumps/jax/AlMatrixTopNControlTable.java new file mode 100644 index 0000000..cf0192a --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNControlTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alMatrixTopNControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlMatrixTopNControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1}; + + // constructors + public AlMatrixTopNControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + } + + public AlMatrixTopNControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alMatrixTopNControlMatrixIndex + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlMatrixIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // alMatrixTopNControlRateBase + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlRateBase(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // alMatrixTopNControlTimeRemaining + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlTimeRemaining(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // alMatrixTopNControlGeneratedReports + { + long value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlGeneratedReports(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // alMatrixTopNControlDuration + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlDuration(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // alMatrixTopNControlRequestedSize + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlRequestedSize(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // alMatrixTopNControlGrantedSize + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlGrantedSize(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // alMatrixTopNControlStartTime + { + long value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlStartTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 10: // alMatrixTopNControlOwner + { + byte[] value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 11: // alMatrixTopNControlStatus + { + int value = ((AlMatrixTopNControlEntry)entry).get_alMatrixTopNControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // alMatrixTopNControlMatrixIndex + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlMatrixIndex(phase, vb.intValue()); + } + case 3: // alMatrixTopNControlRateBase + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlRateBase(phase, vb.intValue()); + } + case 4: // alMatrixTopNControlTimeRemaining + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlTimeRemaining(phase, vb.intValue()); + } + case 7: // alMatrixTopNControlRequestedSize + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlRequestedSize(phase, vb.intValue()); + } + case 10: // alMatrixTopNControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlOwner(phase, vb.bytesValue()); + } + case 11: // alMatrixTopNControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((AlMatrixTopNControlEntry)entry).set_alMatrixTopNControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AlMatrixTopNEntry.java b/test/dumps/jax/AlMatrixTopNEntry.java new file mode 100644 index 0000000..e59da54 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNEntry.java @@ -0,0 +1,98 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row alMatrixTopNEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixTopNEntry extends AgentXEntry +{ + + protected int alMatrixTopNIndex = 0; + protected int alMatrixTopNProtocolDirLocalIndex = 0; + protected byte[] alMatrixTopNSourceAddress = new byte[0]; + protected byte[] alMatrixTopNDestAddress = new byte[0]; + protected int alMatrixTopNAppProtocolDirLocalIndex = 0; + protected long alMatrixTopNPktRate = 0; + protected long alMatrixTopNReversePktRate = 0; + protected long alMatrixTopNOctetRate = 0; + protected long alMatrixTopNReverseOctetRate = 0; + // foreign indices + protected int alMatrixTopNControlIndex; + + public AlMatrixTopNEntry(int alMatrixTopNControlIndex, + int alMatrixTopNIndex) + { + this.alMatrixTopNControlIndex = alMatrixTopNControlIndex; + this.alMatrixTopNIndex = alMatrixTopNIndex; + + instance.append(alMatrixTopNControlIndex); + instance.append(alMatrixTopNIndex); + } + + public int get_alMatrixTopNControlIndex() + { + return alMatrixTopNControlIndex; + } + + public int get_alMatrixTopNIndex() + { + return alMatrixTopNIndex; + } + + public int get_alMatrixTopNProtocolDirLocalIndex() + { + return alMatrixTopNProtocolDirLocalIndex; + } + + public byte[] get_alMatrixTopNSourceAddress() + { + return alMatrixTopNSourceAddress; + } + + public byte[] get_alMatrixTopNDestAddress() + { + return alMatrixTopNDestAddress; + } + + public int get_alMatrixTopNAppProtocolDirLocalIndex() + { + return alMatrixTopNAppProtocolDirLocalIndex; + } + + public long get_alMatrixTopNPktRate() + { + return alMatrixTopNPktRate; + } + + public long get_alMatrixTopNReversePktRate() + { + return alMatrixTopNReversePktRate; + } + + public long get_alMatrixTopNOctetRate() + { + return alMatrixTopNOctetRate; + } + + public long get_alMatrixTopNReverseOctetRate() + { + return alMatrixTopNReverseOctetRate; + } + +} + diff --git a/test/dumps/jax/AlMatrixTopNEntryImpl.java b/test/dumps/jax/AlMatrixTopNEntryImpl.java new file mode 100644 index 0000000..1ffff96 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNEntryImpl.java @@ -0,0 +1,71 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row alMatrixTopNEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class AlMatrixTopNEntryImpl extends AlMatrixTopNEntry +{ + + // constructor + public AlMatrixTopNEntryImpl(int alMatrixTopNControlIndex, + int alMatrixTopNIndex) + { + super(alMatrixTopNControlIndex, + alMatrixTopNIndex); + } + + public int get_alMatrixTopNProtocolDirLocalIndex() + { + return alMatrixTopNProtocolDirLocalIndex; + } + + public byte[] get_alMatrixTopNSourceAddress() + { + return alMatrixTopNSourceAddress; + } + + public byte[] get_alMatrixTopNDestAddress() + { + return alMatrixTopNDestAddress; + } + + public int get_alMatrixTopNAppProtocolDirLocalIndex() + { + return alMatrixTopNAppProtocolDirLocalIndex; + } + + public long get_alMatrixTopNPktRate() + { + return alMatrixTopNPktRate; + } + + public long get_alMatrixTopNReversePktRate() + { + return alMatrixTopNReversePktRate; + } + + public long get_alMatrixTopNOctetRate() + { + return alMatrixTopNOctetRate; + } + + public long get_alMatrixTopNReverseOctetRate() + { + return alMatrixTopNReverseOctetRate; + } + +} + diff --git a/test/dumps/jax/AlMatrixTopNTable.java b/test/dumps/jax/AlMatrixTopNTable.java new file mode 100644 index 0000000..01c3ab9 --- /dev/null +++ b/test/dumps/jax/AlMatrixTopNTable.java @@ -0,0 +1,128 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AlMatrixTopNTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table alMatrixTopNTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class AlMatrixTopNTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1}; + + // constructors + public AlMatrixTopNTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public AlMatrixTopNTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // alMatrixTopNProtocolDirLocalIndex + { + int value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNProtocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // alMatrixTopNSourceAddress + { + byte[] value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNSourceAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 4: // alMatrixTopNDestAddress + { + byte[] value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNDestAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // alMatrixTopNAppProtocolDirLocalIndex + { + int value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNAppProtocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // alMatrixTopNPktRate + { + long value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNPktRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 7: // alMatrixTopNReversePktRate + { + long value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNReversePktRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 8: // alMatrixTopNOctetRate + { + long value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNOctetRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 9: // alMatrixTopNReverseOctetRate + { + long value = ((AlMatrixTopNEntry)entry).get_alMatrixTopNReverseOctetRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/AuthenticationFailure.java b/test/dumps/jax/AuthenticationFailure.java new file mode 100644 index 0000000..3b530d8 --- /dev/null +++ b/test/dumps/jax/AuthenticationFailure.java @@ -0,0 +1,37 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: AuthenticationFailure.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class AuthenticationFailure extends AgentXNotification +{ + + private final static long[] authenticationFailure_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 5}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(authenticationFailure_OID)); + + + + public AuthenticationFailure() { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/BroadMauBasicEntry.java b/test/dumps/jax/BroadMauBasicEntry.java new file mode 100644 index 0000000..8a7fbf4 --- /dev/null +++ b/test/dumps/jax/BroadMauBasicEntry.java @@ -0,0 +1,67 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: BroadMauBasicEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row broadMauBasicEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class BroadMauBasicEntry extends AgentXEntry +{ + + protected int broadMauIfIndex = 0; + protected int broadMauIndex = 0; + protected int broadMauXmtRcvSplitType = 0; + protected int broadMauXmtCarrierFreq = 0; + protected int broadMauTranslationFreq = 0; + + public BroadMauBasicEntry(int broadMauIfIndex, + int broadMauIndex) + { + this.broadMauIfIndex = broadMauIfIndex; + this.broadMauIndex = broadMauIndex; + + instance.append(broadMauIfIndex); + instance.append(broadMauIndex); + } + + public int get_broadMauIfIndex() + { + return broadMauIfIndex; + } + + public int get_broadMauIndex() + { + return broadMauIndex; + } + + public int get_broadMauXmtRcvSplitType() + { + return broadMauXmtRcvSplitType; + } + + public int get_broadMauXmtCarrierFreq() + { + return broadMauXmtCarrierFreq; + } + + public int get_broadMauTranslationFreq() + { + return broadMauTranslationFreq; + } + +} + diff --git a/test/dumps/jax/BroadMauBasicEntryImpl.java b/test/dumps/jax/BroadMauBasicEntryImpl.java new file mode 100644 index 0000000..14fc329 --- /dev/null +++ b/test/dumps/jax/BroadMauBasicEntryImpl.java @@ -0,0 +1,56 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: BroadMauBasicEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row broadMauBasicEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class BroadMauBasicEntryImpl extends BroadMauBasicEntry +{ + + // constructor + public BroadMauBasicEntryImpl(int broadMauIfIndex, + int broadMauIndex) + { + super(broadMauIfIndex, + broadMauIndex); + } + + public int get_broadMauIfIndex() + { + return broadMauIfIndex; + } + + public int get_broadMauIndex() + { + return broadMauIndex; + } + + public int get_broadMauXmtRcvSplitType() + { + return broadMauXmtRcvSplitType; + } + + public int get_broadMauXmtCarrierFreq() + { + return broadMauXmtCarrierFreq; + } + + public int get_broadMauTranslationFreq() + { + return broadMauTranslationFreq; + } + +} + diff --git a/test/dumps/jax/BroadMauBasicTable.java b/test/dumps/jax/BroadMauBasicTable.java new file mode 100644 index 0000000..76d01a4 --- /dev/null +++ b/test/dumps/jax/BroadMauBasicTable.java @@ -0,0 +1,107 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: BroadMauBasicTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table broadMauBasicTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class BroadMauBasicTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1}; + + // constructors + public BroadMauBasicTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public BroadMauBasicTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // broadMauIfIndex + { + int value = ((BroadMauBasicEntry)entry).get_broadMauIfIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // broadMauIndex + { + int value = ((BroadMauBasicEntry)entry).get_broadMauIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // broadMauXmtRcvSplitType + { + int value = ((BroadMauBasicEntry)entry).get_broadMauXmtRcvSplitType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // broadMauXmtCarrierFreq + { + int value = ((BroadMauBasicEntry)entry).get_broadMauXmtCarrierFreq(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // broadMauTranslationFreq + { + int value = ((BroadMauBasicEntry)entry).get_broadMauTranslationFreq(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/Channel2Entry.java b/test/dumps/jax/Channel2Entry.java new file mode 100644 index 0000000..2641c85 --- /dev/null +++ b/test/dumps/jax/Channel2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Channel2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row channel2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class Channel2Entry extends AgentXEntry +{ + + protected long channelDroppedFrames = 0; + protected long channelCreateTime = 0; + + public Channel2Entry() + { + + } + + public long get_channelDroppedFrames() + { + return channelDroppedFrames; + } + + public long get_channelCreateTime() + { + return channelCreateTime; + } + +} + diff --git a/test/dumps/jax/Channel2EntryImpl.java b/test/dumps/jax/Channel2EntryImpl.java new file mode 100644 index 0000000..ee40b84 --- /dev/null +++ b/test/dumps/jax/Channel2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: Channel2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row channel2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class Channel2EntryImpl extends Channel2Entry +{ + + // constructor + public Channel2EntryImpl() + { + super(); + } + + public long get_channelDroppedFrames() + { + return channelDroppedFrames; + } + + public long get_channelCreateTime() + { + return channelCreateTime; + } + +} + diff --git a/test/dumps/jax/Channel2Table.java b/test/dumps/jax/Channel2Table.java new file mode 100644 index 0000000..22f4374 --- /dev/null +++ b/test/dumps/jax/Channel2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Channel2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table channel2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class Channel2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 7, 3, 1}; + + // constructors + public Channel2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public Channel2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // channelDroppedFrames + { + long value = ((Channel2Entry)entry).get_channelDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // channelCreateTime + { + long value = ((Channel2Entry)entry).get_channelCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/ColdStart.java b/test/dumps/jax/ColdStart.java new file mode 100644 index 0000000..89fd67c --- /dev/null +++ b/test/dumps/jax/ColdStart.java @@ -0,0 +1,37 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ColdStart.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class ColdStart extends AgentXNotification +{ + + private final static long[] coldStart_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 1}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(coldStart_OID)); + + + + public ColdStart() { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/EtherStats2Entry.java b/test/dumps/jax/EtherStats2Entry.java new file mode 100644 index 0000000..a30c38c --- /dev/null +++ b/test/dumps/jax/EtherStats2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: EtherStats2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row etherStats2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class EtherStats2Entry extends AgentXEntry +{ + + protected long etherStatsDroppedFrames = 0; + protected long etherStatsCreateTime = 0; + + public EtherStats2Entry() + { + + } + + public long get_etherStatsDroppedFrames() + { + return etherStatsDroppedFrames; + } + + public long get_etherStatsCreateTime() + { + return etherStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/EtherStats2EntryImpl.java b/test/dumps/jax/EtherStats2EntryImpl.java new file mode 100644 index 0000000..cee2b50 --- /dev/null +++ b/test/dumps/jax/EtherStats2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: EtherStats2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row etherStats2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class EtherStats2EntryImpl extends EtherStats2Entry +{ + + // constructor + public EtherStats2EntryImpl() + { + super(); + } + + public long get_etherStatsDroppedFrames() + { + return etherStatsDroppedFrames; + } + + public long get_etherStatsCreateTime() + { + return etherStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/EtherStats2Table.java b/test/dumps/jax/EtherStats2Table.java new file mode 100644 index 0000000..13edd46 --- /dev/null +++ b/test/dumps/jax/EtherStats2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: EtherStats2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table etherStats2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class EtherStats2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 1, 4, 1}; + + // constructors + public EtherStats2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public EtherStats2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // etherStatsDroppedFrames + { + long value = ((EtherStats2Entry)entry).get_etherStatsDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // etherStatsCreateTime + { + long value = ((EtherStats2Entry)entry).get_etherStatsCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/Filter2Entry.java b/test/dumps/jax/Filter2Entry.java new file mode 100644 index 0000000..d5c8227 --- /dev/null +++ b/test/dumps/jax/Filter2Entry.java @@ -0,0 +1,84 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Filter2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row filter2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class Filter2Entry extends AgentXEntry +{ + + protected int filterProtocolDirDataLocalIndex = 0; + protected int undo_filterProtocolDirDataLocalIndex = 0; + protected int filterProtocolDirLocalIndex = 0; + protected int undo_filterProtocolDirLocalIndex = 0; + + public Filter2Entry() + { + + } + + public int get_filterProtocolDirDataLocalIndex() + { + return filterProtocolDirDataLocalIndex; + } + + public int set_filterProtocolDirDataLocalIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_filterProtocolDirDataLocalIndex = filterProtocolDirDataLocalIndex; + filterProtocolDirDataLocalIndex = value; + break; + case AgentXSetPhase.UNDO: + filterProtocolDirDataLocalIndex = undo_filterProtocolDirDataLocalIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_filterProtocolDirLocalIndex() + { + return filterProtocolDirLocalIndex; + } + + public int set_filterProtocolDirLocalIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_filterProtocolDirLocalIndex = filterProtocolDirLocalIndex; + filterProtocolDirLocalIndex = value; + break; + case AgentXSetPhase.UNDO: + filterProtocolDirLocalIndex = undo_filterProtocolDirLocalIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/Filter2EntryImpl.java b/test/dumps/jax/Filter2EntryImpl.java new file mode 100644 index 0000000..b6be7d7 --- /dev/null +++ b/test/dumps/jax/Filter2EntryImpl.java @@ -0,0 +1,77 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: Filter2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row filter2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class Filter2EntryImpl extends Filter2Entry +{ + + // constructor + public Filter2EntryImpl() + { + super(); + } + + public int get_filterProtocolDirDataLocalIndex() + { + return filterProtocolDirDataLocalIndex; + } + + public int set_filterProtocolDirDataLocalIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_filterProtocolDirDataLocalIndex = filterProtocolDirDataLocalIndex; + filterProtocolDirDataLocalIndex = value; + break; + case AgentXSetPhase.UNDO: + filterProtocolDirDataLocalIndex = undo_filterProtocolDirDataLocalIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_filterProtocolDirLocalIndex() + { + return filterProtocolDirLocalIndex; + } + + public int set_filterProtocolDirLocalIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_filterProtocolDirLocalIndex = filterProtocolDirLocalIndex; + filterProtocolDirLocalIndex = value; + break; + case AgentXSetPhase.UNDO: + filterProtocolDirLocalIndex = undo_filterProtocolDirLocalIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/Filter2Table.java b/test/dumps/jax/Filter2Table.java new file mode 100644 index 0000000..d6ebdf4 --- /dev/null +++ b/test/dumps/jax/Filter2Table.java @@ -0,0 +1,100 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Filter2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table filter2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class Filter2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 7, 4, 1}; + + // constructors + public Filter2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public Filter2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // filterProtocolDirDataLocalIndex + { + int value = ((Filter2Entry)entry).get_filterProtocolDirDataLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // filterProtocolDirLocalIndex + { + int value = ((Filter2Entry)entry).get_filterProtocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // filterProtocolDirDataLocalIndex + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((Filter2Entry)entry).set_filterProtocolDirDataLocalIndex(phase, vb.intValue()); + } + case 2: // filterProtocolDirLocalIndex + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((Filter2Entry)entry).set_filterProtocolDirLocalIndex(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/HistoryControl2Entry.java b/test/dumps/jax/HistoryControl2Entry.java new file mode 100644 index 0000000..328b6ef --- /dev/null +++ b/test/dumps/jax/HistoryControl2Entry.java @@ -0,0 +1,38 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HistoryControl2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row historyControl2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HistoryControl2Entry extends AgentXEntry +{ + + protected long historyControlDroppedFrames = 0; + + public HistoryControl2Entry() + { + + } + + public long get_historyControlDroppedFrames() + { + return historyControlDroppedFrames; + } + +} + diff --git a/test/dumps/jax/HistoryControl2EntryImpl.java b/test/dumps/jax/HistoryControl2EntryImpl.java new file mode 100644 index 0000000..35d6198 --- /dev/null +++ b/test/dumps/jax/HistoryControl2EntryImpl.java @@ -0,0 +1,34 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: HistoryControl2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row historyControl2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HistoryControl2EntryImpl extends HistoryControl2Entry +{ + + // constructor + public HistoryControl2EntryImpl() + { + super(); + } + + public long get_historyControlDroppedFrames() + { + return historyControlDroppedFrames; + } + +} + diff --git a/test/dumps/jax/HistoryControl2Table.java b/test/dumps/jax/HistoryControl2Table.java new file mode 100644 index 0000000..41e27f0 --- /dev/null +++ b/test/dumps/jax/HistoryControl2Table.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HistoryControl2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table historyControl2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class HistoryControl2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 2, 5, 1}; + + // constructors + public HistoryControl2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + } + + public HistoryControl2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // historyControlDroppedFrames + { + long value = ((HistoryControl2Entry)entry).get_historyControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/HlHostControlEntry.java b/test/dumps/jax/HlHostControlEntry.java new file mode 100644 index 0000000..b34fc76 --- /dev/null +++ b/test/dumps/jax/HlHostControlEntry.java @@ -0,0 +1,209 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HlHostControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row hlHostControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HlHostControlEntry extends AgentXEntry +{ + + protected int hlHostControlIndex = 0; + protected AgentXOID hlHostControlDataSource = new AgentXOID(); + protected AgentXOID undo_hlHostControlDataSource = new AgentXOID(); + protected long hlHostControlNlDroppedFrames = 0; + protected long hlHostControlNlInserts = 0; + protected long hlHostControlNlDeletes = 0; + protected int hlHostControlNlMaxDesiredEntries = 0; + protected int undo_hlHostControlNlMaxDesiredEntries = 0; + protected long hlHostControlAlDroppedFrames = 0; + protected long hlHostControlAlInserts = 0; + protected long hlHostControlAlDeletes = 0; + protected int hlHostControlAlMaxDesiredEntries = 0; + protected int undo_hlHostControlAlMaxDesiredEntries = 0; + protected byte[] hlHostControlOwner = new byte[0]; + protected byte[] undo_hlHostControlOwner = new byte[0]; + protected int hlHostControlStatus = 0; + protected int undo_hlHostControlStatus = 0; + + public HlHostControlEntry(int hlHostControlIndex) + { + this.hlHostControlIndex = hlHostControlIndex; + + instance.append(hlHostControlIndex); + } + + public int get_hlHostControlIndex() + { + return hlHostControlIndex; + } + + public AgentXOID get_hlHostControlDataSource() + { + return hlHostControlDataSource; + } + + public int set_hlHostControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlDataSource = hlHostControlDataSource; + hlHostControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlDataSource = undo_hlHostControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlHostControlNlDroppedFrames() + { + return hlHostControlNlDroppedFrames; + } + + public long get_hlHostControlNlInserts() + { + return hlHostControlNlInserts; + } + + public long get_hlHostControlNlDeletes() + { + return hlHostControlNlDeletes; + } + + public int get_hlHostControlNlMaxDesiredEntries() + { + return hlHostControlNlMaxDesiredEntries; + } + + public int set_hlHostControlNlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlNlMaxDesiredEntries = hlHostControlNlMaxDesiredEntries; + hlHostControlNlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlNlMaxDesiredEntries = undo_hlHostControlNlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlHostControlAlDroppedFrames() + { + return hlHostControlAlDroppedFrames; + } + + public long get_hlHostControlAlInserts() + { + return hlHostControlAlInserts; + } + + public long get_hlHostControlAlDeletes() + { + return hlHostControlAlDeletes; + } + + public int get_hlHostControlAlMaxDesiredEntries() + { + return hlHostControlAlMaxDesiredEntries; + } + + public int set_hlHostControlAlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlAlMaxDesiredEntries = hlHostControlAlMaxDesiredEntries; + hlHostControlAlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlAlMaxDesiredEntries = undo_hlHostControlAlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_hlHostControlOwner() + { + return hlHostControlOwner; + } + + public int set_hlHostControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlOwner = hlHostControlOwner; + hlHostControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + hlHostControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + hlHostControlOwner = undo_hlHostControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_hlHostControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_hlHostControlStatus() + { + return hlHostControlStatus; + } + + public int set_hlHostControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlStatus = hlHostControlStatus; + hlHostControlStatus = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlStatus = undo_hlHostControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/HlHostControlEntryImpl.java b/test/dumps/jax/HlHostControlEntryImpl.java new file mode 100644 index 0000000..656d271 --- /dev/null +++ b/test/dumps/jax/HlHostControlEntryImpl.java @@ -0,0 +1,182 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: HlHostControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row hlHostControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HlHostControlEntryImpl extends HlHostControlEntry +{ + + // constructor + public HlHostControlEntryImpl(int hlHostControlIndex) + { + super(hlHostControlIndex); + } + + public AgentXOID get_hlHostControlDataSource() + { + return hlHostControlDataSource; + } + + public int set_hlHostControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlDataSource = hlHostControlDataSource; + hlHostControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlDataSource = undo_hlHostControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlHostControlNlDroppedFrames() + { + return hlHostControlNlDroppedFrames; + } + + public long get_hlHostControlNlInserts() + { + return hlHostControlNlInserts; + } + + public long get_hlHostControlNlDeletes() + { + return hlHostControlNlDeletes; + } + + public int get_hlHostControlNlMaxDesiredEntries() + { + return hlHostControlNlMaxDesiredEntries; + } + + public int set_hlHostControlNlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlNlMaxDesiredEntries = hlHostControlNlMaxDesiredEntries; + hlHostControlNlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlNlMaxDesiredEntries = undo_hlHostControlNlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlHostControlAlDroppedFrames() + { + return hlHostControlAlDroppedFrames; + } + + public long get_hlHostControlAlInserts() + { + return hlHostControlAlInserts; + } + + public long get_hlHostControlAlDeletes() + { + return hlHostControlAlDeletes; + } + + public int get_hlHostControlAlMaxDesiredEntries() + { + return hlHostControlAlMaxDesiredEntries; + } + + public int set_hlHostControlAlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlAlMaxDesiredEntries = hlHostControlAlMaxDesiredEntries; + hlHostControlAlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlAlMaxDesiredEntries = undo_hlHostControlAlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_hlHostControlOwner() + { + return hlHostControlOwner; + } + + public int set_hlHostControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlOwner = hlHostControlOwner; + hlHostControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + hlHostControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + hlHostControlOwner = undo_hlHostControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_hlHostControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_hlHostControlStatus() + { + return hlHostControlStatus; + } + + public int set_hlHostControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlHostControlStatus = hlHostControlStatus; + hlHostControlStatus = value; + break; + case AgentXSetPhase.UNDO: + hlHostControlStatus = undo_hlHostControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/HlHostControlTable.java b/test/dumps/jax/HlHostControlTable.java new file mode 100644 index 0000000..175850c --- /dev/null +++ b/test/dumps/jax/HlHostControlTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HlHostControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table hlHostControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class HlHostControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1}; + + // constructors + public HlHostControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + } + + public HlHostControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // hlHostControlDataSource + { + AgentXOID value = ((HlHostControlEntry)entry).get_hlHostControlDataSource(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // hlHostControlNlDroppedFrames + { + long value = ((HlHostControlEntry)entry).get_hlHostControlNlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // hlHostControlNlInserts + { + long value = ((HlHostControlEntry)entry).get_hlHostControlNlInserts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 5: // hlHostControlNlDeletes + { + long value = ((HlHostControlEntry)entry).get_hlHostControlNlDeletes(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // hlHostControlNlMaxDesiredEntries + { + int value = ((HlHostControlEntry)entry).get_hlHostControlNlMaxDesiredEntries(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // hlHostControlAlDroppedFrames + { + long value = ((HlHostControlEntry)entry).get_hlHostControlAlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 8: // hlHostControlAlInserts + { + long value = ((HlHostControlEntry)entry).get_hlHostControlAlInserts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 9: // hlHostControlAlDeletes + { + long value = ((HlHostControlEntry)entry).get_hlHostControlAlDeletes(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 10: // hlHostControlAlMaxDesiredEntries + { + int value = ((HlHostControlEntry)entry).get_hlHostControlAlMaxDesiredEntries(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 11: // hlHostControlOwner + { + byte[] value = ((HlHostControlEntry)entry).get_hlHostControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 12: // hlHostControlStatus + { + int value = ((HlHostControlEntry)entry).get_hlHostControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // hlHostControlDataSource + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlDataSource(phase, vb.AgentXOIDValue()); + } + case 6: // hlHostControlNlMaxDesiredEntries + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlNlMaxDesiredEntries(phase, vb.intValue()); + } + case 10: // hlHostControlAlMaxDesiredEntries + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlAlMaxDesiredEntries(phase, vb.intValue()); + } + case 11: // hlHostControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlOwner(phase, vb.bytesValue()); + } + case 12: // hlHostControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlHostControlEntry)entry).set_hlHostControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/HlMatrixControlEntry.java b/test/dumps/jax/HlMatrixControlEntry.java new file mode 100644 index 0000000..feb65ff --- /dev/null +++ b/test/dumps/jax/HlMatrixControlEntry.java @@ -0,0 +1,209 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HlMatrixControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row hlMatrixControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HlMatrixControlEntry extends AgentXEntry +{ + + protected int hlMatrixControlIndex = 0; + protected AgentXOID hlMatrixControlDataSource = new AgentXOID(); + protected AgentXOID undo_hlMatrixControlDataSource = new AgentXOID(); + protected long hlMatrixControlNlDroppedFrames = 0; + protected long hlMatrixControlNlInserts = 0; + protected long hlMatrixControlNlDeletes = 0; + protected int hlMatrixControlNlMaxDesiredEntries = 0; + protected int undo_hlMatrixControlNlMaxDesiredEntries = 0; + protected long hlMatrixControlAlDroppedFrames = 0; + protected long hlMatrixControlAlInserts = 0; + protected long hlMatrixControlAlDeletes = 0; + protected int hlMatrixControlAlMaxDesiredEntries = 0; + protected int undo_hlMatrixControlAlMaxDesiredEntries = 0; + protected byte[] hlMatrixControlOwner = new byte[0]; + protected byte[] undo_hlMatrixControlOwner = new byte[0]; + protected int hlMatrixControlStatus = 0; + protected int undo_hlMatrixControlStatus = 0; + + public HlMatrixControlEntry(int hlMatrixControlIndex) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + + instance.append(hlMatrixControlIndex); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public AgentXOID get_hlMatrixControlDataSource() + { + return hlMatrixControlDataSource; + } + + public int set_hlMatrixControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlDataSource = hlMatrixControlDataSource; + hlMatrixControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlDataSource = undo_hlMatrixControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlMatrixControlNlDroppedFrames() + { + return hlMatrixControlNlDroppedFrames; + } + + public long get_hlMatrixControlNlInserts() + { + return hlMatrixControlNlInserts; + } + + public long get_hlMatrixControlNlDeletes() + { + return hlMatrixControlNlDeletes; + } + + public int get_hlMatrixControlNlMaxDesiredEntries() + { + return hlMatrixControlNlMaxDesiredEntries; + } + + public int set_hlMatrixControlNlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlNlMaxDesiredEntries = hlMatrixControlNlMaxDesiredEntries; + hlMatrixControlNlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlNlMaxDesiredEntries = undo_hlMatrixControlNlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlMatrixControlAlDroppedFrames() + { + return hlMatrixControlAlDroppedFrames; + } + + public long get_hlMatrixControlAlInserts() + { + return hlMatrixControlAlInserts; + } + + public long get_hlMatrixControlAlDeletes() + { + return hlMatrixControlAlDeletes; + } + + public int get_hlMatrixControlAlMaxDesiredEntries() + { + return hlMatrixControlAlMaxDesiredEntries; + } + + public int set_hlMatrixControlAlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlAlMaxDesiredEntries = hlMatrixControlAlMaxDesiredEntries; + hlMatrixControlAlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlAlMaxDesiredEntries = undo_hlMatrixControlAlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_hlMatrixControlOwner() + { + return hlMatrixControlOwner; + } + + public int set_hlMatrixControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlOwner = hlMatrixControlOwner; + hlMatrixControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + hlMatrixControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlOwner = undo_hlMatrixControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_hlMatrixControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_hlMatrixControlStatus() + { + return hlMatrixControlStatus; + } + + public int set_hlMatrixControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlStatus = hlMatrixControlStatus; + hlMatrixControlStatus = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlStatus = undo_hlMatrixControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/HlMatrixControlEntryImpl.java b/test/dumps/jax/HlMatrixControlEntryImpl.java new file mode 100644 index 0000000..8956dd4 --- /dev/null +++ b/test/dumps/jax/HlMatrixControlEntryImpl.java @@ -0,0 +1,182 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: HlMatrixControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row hlMatrixControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HlMatrixControlEntryImpl extends HlMatrixControlEntry +{ + + // constructor + public HlMatrixControlEntryImpl(int hlMatrixControlIndex) + { + super(hlMatrixControlIndex); + } + + public AgentXOID get_hlMatrixControlDataSource() + { + return hlMatrixControlDataSource; + } + + public int set_hlMatrixControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlDataSource = hlMatrixControlDataSource; + hlMatrixControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlDataSource = undo_hlMatrixControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlMatrixControlNlDroppedFrames() + { + return hlMatrixControlNlDroppedFrames; + } + + public long get_hlMatrixControlNlInserts() + { + return hlMatrixControlNlInserts; + } + + public long get_hlMatrixControlNlDeletes() + { + return hlMatrixControlNlDeletes; + } + + public int get_hlMatrixControlNlMaxDesiredEntries() + { + return hlMatrixControlNlMaxDesiredEntries; + } + + public int set_hlMatrixControlNlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlNlMaxDesiredEntries = hlMatrixControlNlMaxDesiredEntries; + hlMatrixControlNlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlNlMaxDesiredEntries = undo_hlMatrixControlNlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_hlMatrixControlAlDroppedFrames() + { + return hlMatrixControlAlDroppedFrames; + } + + public long get_hlMatrixControlAlInserts() + { + return hlMatrixControlAlInserts; + } + + public long get_hlMatrixControlAlDeletes() + { + return hlMatrixControlAlDeletes; + } + + public int get_hlMatrixControlAlMaxDesiredEntries() + { + return hlMatrixControlAlMaxDesiredEntries; + } + + public int set_hlMatrixControlAlMaxDesiredEntries(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlAlMaxDesiredEntries = hlMatrixControlAlMaxDesiredEntries; + hlMatrixControlAlMaxDesiredEntries = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlAlMaxDesiredEntries = undo_hlMatrixControlAlMaxDesiredEntries; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_hlMatrixControlOwner() + { + return hlMatrixControlOwner; + } + + public int set_hlMatrixControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlOwner = hlMatrixControlOwner; + hlMatrixControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + hlMatrixControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlOwner = undo_hlMatrixControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_hlMatrixControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_hlMatrixControlStatus() + { + return hlMatrixControlStatus; + } + + public int set_hlMatrixControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_hlMatrixControlStatus = hlMatrixControlStatus; + hlMatrixControlStatus = value; + break; + case AgentXSetPhase.UNDO: + hlMatrixControlStatus = undo_hlMatrixControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/HlMatrixControlTable.java b/test/dumps/jax/HlMatrixControlTable.java new file mode 100644 index 0000000..7d293d4 --- /dev/null +++ b/test/dumps/jax/HlMatrixControlTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HlMatrixControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table hlMatrixControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class HlMatrixControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1}; + + // constructors + public HlMatrixControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + } + + public HlMatrixControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // hlMatrixControlDataSource + { + AgentXOID value = ((HlMatrixControlEntry)entry).get_hlMatrixControlDataSource(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // hlMatrixControlNlDroppedFrames + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlNlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // hlMatrixControlNlInserts + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlNlInserts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 5: // hlMatrixControlNlDeletes + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlNlDeletes(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // hlMatrixControlNlMaxDesiredEntries + { + int value = ((HlMatrixControlEntry)entry).get_hlMatrixControlNlMaxDesiredEntries(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // hlMatrixControlAlDroppedFrames + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlAlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 8: // hlMatrixControlAlInserts + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlAlInserts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 9: // hlMatrixControlAlDeletes + { + long value = ((HlMatrixControlEntry)entry).get_hlMatrixControlAlDeletes(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 10: // hlMatrixControlAlMaxDesiredEntries + { + int value = ((HlMatrixControlEntry)entry).get_hlMatrixControlAlMaxDesiredEntries(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 11: // hlMatrixControlOwner + { + byte[] value = ((HlMatrixControlEntry)entry).get_hlMatrixControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 12: // hlMatrixControlStatus + { + int value = ((HlMatrixControlEntry)entry).get_hlMatrixControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // hlMatrixControlDataSource + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlDataSource(phase, vb.AgentXOIDValue()); + } + case 6: // hlMatrixControlNlMaxDesiredEntries + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlNlMaxDesiredEntries(phase, vb.intValue()); + } + case 10: // hlMatrixControlAlMaxDesiredEntries + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlAlMaxDesiredEntries(phase, vb.intValue()); + } + case 11: // hlMatrixControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlOwner(phase, vb.bytesValue()); + } + case 12: // hlMatrixControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((HlMatrixControlEntry)entry).set_hlMatrixControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/HostControl2Entry.java b/test/dumps/jax/HostControl2Entry.java new file mode 100644 index 0000000..0550269 --- /dev/null +++ b/test/dumps/jax/HostControl2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HostControl2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row hostControl2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HostControl2Entry extends AgentXEntry +{ + + protected long hostControlDroppedFrames = 0; + protected long hostControlCreateTime = 0; + + public HostControl2Entry() + { + + } + + public long get_hostControlDroppedFrames() + { + return hostControlDroppedFrames; + } + + public long get_hostControlCreateTime() + { + return hostControlCreateTime; + } + +} + diff --git a/test/dumps/jax/HostControl2EntryImpl.java b/test/dumps/jax/HostControl2EntryImpl.java new file mode 100644 index 0000000..f26e49b --- /dev/null +++ b/test/dumps/jax/HostControl2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: HostControl2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row hostControl2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class HostControl2EntryImpl extends HostControl2Entry +{ + + // constructor + public HostControl2EntryImpl() + { + super(); + } + + public long get_hostControlDroppedFrames() + { + return hostControlDroppedFrames; + } + + public long get_hostControlCreateTime() + { + return hostControlCreateTime; + } + +} + diff --git a/test/dumps/jax/HostControl2Table.java b/test/dumps/jax/HostControl2Table.java new file mode 100644 index 0000000..ebd962f --- /dev/null +++ b/test/dumps/jax/HostControl2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: HostControl2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table hostControl2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class HostControl2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 4, 4, 1}; + + // constructors + public HostControl2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public HostControl2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // hostControlDroppedFrames + { + long value = ((HostControl2Entry)entry).get_hostControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // hostControlCreateTime + { + long value = ((HostControl2Entry)entry).get_hostControlCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfEntry.java b/test/dumps/jax/IfEntry.java new file mode 100644 index 0000000..e85ce77 --- /dev/null +++ b/test/dumps/jax/IfEntry.java @@ -0,0 +1,186 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfEntry extends AgentXEntry +{ + + protected int ifIndex = 0; + protected byte[] ifDescr = new byte[0]; + protected int ifType = 0; + protected int ifMtu = 0; + protected long ifSpeed = 0; + protected byte[] ifPhysAddress = new byte[0]; + protected int ifAdminStatus = 0; + protected int undo_ifAdminStatus = 0; + protected int ifOperStatus = 0; + protected long ifLastChange = 0; + protected long ifInOctets = 0; + protected long ifInUcastPkts = 0; + protected long ifInNUcastPkts = 0; + protected long ifInDiscards = 0; + protected long ifInErrors = 0; + protected long ifInUnknownProtos = 0; + protected long ifOutOctets = 0; + protected long ifOutUcastPkts = 0; + protected long ifOutNUcastPkts = 0; + protected long ifOutDiscards = 0; + protected long ifOutErrors = 0; + protected long ifOutQLen = 0; + protected AgentXOID ifSpecific = new AgentXOID(); + + public IfEntry(int ifIndex) + { + this.ifIndex = ifIndex; + + instance.append(ifIndex); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public byte[] get_ifDescr() + { + return ifDescr; + } + + public int get_ifType() + { + return ifType; + } + + public int get_ifMtu() + { + return ifMtu; + } + + public long get_ifSpeed() + { + return ifSpeed; + } + + public byte[] get_ifPhysAddress() + { + return ifPhysAddress; + } + + public int get_ifAdminStatus() + { + return ifAdminStatus; + } + + public int set_ifAdminStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifAdminStatus = ifAdminStatus; + ifAdminStatus = value; + break; + case AgentXSetPhase.UNDO: + ifAdminStatus = undo_ifAdminStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifOperStatus() + { + return ifOperStatus; + } + + public long get_ifLastChange() + { + return ifLastChange; + } + + public long get_ifInOctets() + { + return ifInOctets; + } + + public long get_ifInUcastPkts() + { + return ifInUcastPkts; + } + + public long get_ifInNUcastPkts() + { + return ifInNUcastPkts; + } + + public long get_ifInDiscards() + { + return ifInDiscards; + } + + public long get_ifInErrors() + { + return ifInErrors; + } + + public long get_ifInUnknownProtos() + { + return ifInUnknownProtos; + } + + public long get_ifOutOctets() + { + return ifOutOctets; + } + + public long get_ifOutUcastPkts() + { + return ifOutUcastPkts; + } + + public long get_ifOutNUcastPkts() + { + return ifOutNUcastPkts; + } + + public long get_ifOutDiscards() + { + return ifOutDiscards; + } + + public long get_ifOutErrors() + { + return ifOutErrors; + } + + public long get_ifOutQLen() + { + return ifOutQLen; + } + + public AgentXOID get_ifSpecific() + { + return ifSpecific; + } + +} + diff --git a/test/dumps/jax/IfEntryImpl.java b/test/dumps/jax/IfEntryImpl.java new file mode 100644 index 0000000..4ec89a2 --- /dev/null +++ b/test/dumps/jax/IfEntryImpl.java @@ -0,0 +1,158 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfEntryImpl extends IfEntry +{ + + // constructor + public IfEntryImpl(int ifIndex) + { + super(ifIndex); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public byte[] get_ifDescr() + { + return ifDescr; + } + + public int get_ifType() + { + return ifType; + } + + public int get_ifMtu() + { + return ifMtu; + } + + public long get_ifSpeed() + { + return ifSpeed; + } + + public byte[] get_ifPhysAddress() + { + return ifPhysAddress; + } + + public int get_ifAdminStatus() + { + return ifAdminStatus; + } + + public int set_ifAdminStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifAdminStatus = ifAdminStatus; + ifAdminStatus = value; + break; + case AgentXSetPhase.UNDO: + ifAdminStatus = undo_ifAdminStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifOperStatus() + { + return ifOperStatus; + } + + public long get_ifLastChange() + { + return ifLastChange; + } + + public long get_ifInOctets() + { + return ifInOctets; + } + + public long get_ifInUcastPkts() + { + return ifInUcastPkts; + } + + public long get_ifInNUcastPkts() + { + return ifInNUcastPkts; + } + + public long get_ifInDiscards() + { + return ifInDiscards; + } + + public long get_ifInErrors() + { + return ifInErrors; + } + + public long get_ifInUnknownProtos() + { + return ifInUnknownProtos; + } + + public long get_ifOutOctets() + { + return ifOutOctets; + } + + public long get_ifOutUcastPkts() + { + return ifOutUcastPkts; + } + + public long get_ifOutNUcastPkts() + { + return ifOutNUcastPkts; + } + + public long get_ifOutDiscards() + { + return ifOutDiscards; + } + + public long get_ifOutErrors() + { + return ifOutErrors; + } + + public long get_ifOutQLen() + { + return ifOutQLen; + } + + public AgentXOID get_ifSpecific() + { + return ifSpecific; + } + +} + diff --git a/test/dumps/jax/IfJackEntry.java b/test/dumps/jax/IfJackEntry.java new file mode 100644 index 0000000..1422f0c --- /dev/null +++ b/test/dumps/jax/IfJackEntry.java @@ -0,0 +1,65 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfJackEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifJackEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfJackEntry extends AgentXEntry +{ + + protected int ifJackIndex = 0; + protected int ifJackType = 0; + // foreign indices + protected int ifMauIfIndex; + protected int ifMauIndex; + + public IfJackEntry(int ifMauIfIndex, + int ifMauIndex, + int ifJackIndex) + { + this.ifMauIfIndex = ifMauIfIndex; + this.ifMauIndex = ifMauIndex; + this.ifJackIndex = ifJackIndex; + + instance.append(ifMauIfIndex); + instance.append(ifMauIndex); + instance.append(ifJackIndex); + } + + public int get_ifMauIfIndex() + { + return ifMauIfIndex; + } + + public int get_ifMauIndex() + { + return ifMauIndex; + } + + public int get_ifJackIndex() + { + return ifJackIndex; + } + + public int get_ifJackType() + { + return ifJackType; + } + +} + diff --git a/test/dumps/jax/IfJackEntryImpl.java b/test/dumps/jax/IfJackEntryImpl.java new file mode 100644 index 0000000..eb5f6ec --- /dev/null +++ b/test/dumps/jax/IfJackEntryImpl.java @@ -0,0 +1,38 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfJackEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifJackEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfJackEntryImpl extends IfJackEntry +{ + + // constructor + public IfJackEntryImpl(int ifMauIfIndex, + int ifMauIndex, + int ifJackIndex) + { + super(ifMauIfIndex, + ifMauIndex, + ifJackIndex); + } + + public int get_ifJackType() + { + return ifJackType; + } + +} + diff --git a/test/dumps/jax/IfJackTable.java b/test/dumps/jax/IfJackTable.java new file mode 100644 index 0000000..12cdd20 --- /dev/null +++ b/test/dumps/jax/IfJackTable.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfJackTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifJackTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfJackTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 2, 2, 1}; + + // constructors + public IfJackTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + } + + public IfJackTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // ifJackType + { + int value = ((IfJackEntry)entry).get_ifJackType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfMIBObjects.java b/test/dumps/jax/IfMIBObjects.java new file mode 100644 index 0000000..d46cf56 --- /dev/null +++ b/test/dumps/jax/IfMIBObjects.java @@ -0,0 +1,97 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMIBObjects.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group ifMIBObjects defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class IfMIBObjects extends AgentXScalars +{ + + private final static long[] IfMIBObjectsOID = {1, 3, 6, 1, 2, 1, 31, 1}; + + protected AgentXOID IfTableLastChangeOID; + protected final static long[] IfTableLastChangeName = {1, 3, 6, 1, 2, 1, 31, 1, 5, 0}; + protected long ifTableLastChange = 0; + protected AgentXOID IfStackLastChangeOID; + protected final static long[] IfStackLastChangeName = {1, 3, 6, 1, 2, 1, 31, 1, 6, 0}; + protected long ifStackLastChange = 0; + public IfMIBObjects() + { + oid = new AgentXOID(IfMIBObjectsOID); + data = new Vector(); + IfTableLastChangeOID = new AgentXOID(IfTableLastChangeName); + data.addElement(IfTableLastChangeOID); + IfStackLastChangeOID = new AgentXOID(IfStackLastChangeName); + data.addElement(IfStackLastChangeOID); + } + + public long get_ifTableLastChange() + { + return ifTableLastChange; + } + + public long get_ifStackLastChange() + { + return ifStackLastChange; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == IfTableLastChangeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_ifTableLastChange()); + if (pos == IfStackLastChangeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_ifStackLastChange()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == IfTableLastChangeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_ifTableLastChange()); + if (pos == IfStackLastChangeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_ifStackLastChange()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/IfMIBObjectsImpl.java b/test/dumps/jax/IfMIBObjectsImpl.java new file mode 100644 index 0000000..4d32180 --- /dev/null +++ b/test/dumps/jax/IfMIBObjectsImpl.java @@ -0,0 +1,34 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMIBObjectsImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group ifMIBObjects defined in IF-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class IfMIBObjectsImpl extends IfMIBObjects +{ + + public long get_ifTableLastChange() + { + return ifTableLastChange; + } + + public long get_ifStackLastChange() + { + return ifStackLastChange; + } + +} + diff --git a/test/dumps/jax/IfMauAutoNegEntry.java b/test/dumps/jax/IfMauAutoNegEntry.java new file mode 100644 index 0000000..4a1e574 --- /dev/null +++ b/test/dumps/jax/IfMauAutoNegEntry.java @@ -0,0 +1,225 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauAutoNegEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifMauAutoNegEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfMauAutoNegEntry extends AgentXEntry +{ + + protected int ifMauAutoNegAdminStatus = 0; + protected int undo_ifMauAutoNegAdminStatus = 0; + protected int ifMauAutoNegRemoteSignaling = 0; + protected int ifMauAutoNegConfig = 0; + protected int ifMauAutoNegCapability = 0; + protected int ifMauAutoNegCapAdvertised = 0; + protected int undo_ifMauAutoNegCapAdvertised = 0; + protected int ifMauAutoNegCapReceived = 0; + protected int ifMauAutoNegRestart = 0; + protected int undo_ifMauAutoNegRestart = 0; + protected byte[] ifMauAutoNegCapabilityBits = new byte[0]; + protected byte[] ifMauAutoNegCapAdvertisedBits = new byte[0]; + protected byte[] undo_ifMauAutoNegCapAdvertisedBits = new byte[0]; + protected byte[] ifMauAutoNegCapReceivedBits = new byte[0]; + protected int ifMauAutoNegRemoteFaultAdvertised = 0; + protected int undo_ifMauAutoNegRemoteFaultAdvertised = 0; + protected int ifMauAutoNegRemoteFaultReceived = 0; + // foreign indices + protected int ifMauIfIndex; + protected int ifMauIndex; + + public IfMauAutoNegEntry(int ifMauIfIndex, + int ifMauIndex) + { + this.ifMauIfIndex = ifMauIfIndex; + this.ifMauIndex = ifMauIndex; + + instance.append(ifMauIfIndex); + instance.append(ifMauIndex); + } + + public int get_ifMauIfIndex() + { + return ifMauIfIndex; + } + + public int get_ifMauIndex() + { + return ifMauIndex; + } + + public int get_ifMauAutoNegAdminStatus() + { + return ifMauAutoNegAdminStatus; + } + + public int set_ifMauAutoNegAdminStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegAdminStatus = ifMauAutoNegAdminStatus; + ifMauAutoNegAdminStatus = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegAdminStatus = undo_ifMauAutoNegAdminStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegRemoteSignaling() + { + return ifMauAutoNegRemoteSignaling; + } + + public int get_ifMauAutoNegConfig() + { + return ifMauAutoNegConfig; + } + + public int get_ifMauAutoNegCapability() + { + return ifMauAutoNegCapability; + } + + public int get_ifMauAutoNegCapAdvertised() + { + return ifMauAutoNegCapAdvertised; + } + + public int set_ifMauAutoNegCapAdvertised(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegCapAdvertised = ifMauAutoNegCapAdvertised; + ifMauAutoNegCapAdvertised = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegCapAdvertised = undo_ifMauAutoNegCapAdvertised; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegCapReceived() + { + return ifMauAutoNegCapReceived; + } + + public int get_ifMauAutoNegRestart() + { + return ifMauAutoNegRestart; + } + + public int set_ifMauAutoNegRestart(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegRestart = ifMauAutoNegRestart; + ifMauAutoNegRestart = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegRestart = undo_ifMauAutoNegRestart; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_ifMauAutoNegCapabilityBits() + { + return ifMauAutoNegCapabilityBits; + } + + public byte[] get_ifMauAutoNegCapAdvertisedBits() + { + return ifMauAutoNegCapAdvertisedBits; + } + + public int set_ifMauAutoNegCapAdvertisedBits(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegCapAdvertisedBits = ifMauAutoNegCapAdvertisedBits; + ifMauAutoNegCapAdvertisedBits = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifMauAutoNegCapAdvertisedBits[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegCapAdvertisedBits = undo_ifMauAutoNegCapAdvertisedBits; + break; + case AgentXSetPhase.CLEANUP: + undo_ifMauAutoNegCapAdvertisedBits = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_ifMauAutoNegCapReceivedBits() + { + return ifMauAutoNegCapReceivedBits; + } + + public int get_ifMauAutoNegRemoteFaultAdvertised() + { + return ifMauAutoNegRemoteFaultAdvertised; + } + + public int set_ifMauAutoNegRemoteFaultAdvertised(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegRemoteFaultAdvertised = ifMauAutoNegRemoteFaultAdvertised; + ifMauAutoNegRemoteFaultAdvertised = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegRemoteFaultAdvertised = undo_ifMauAutoNegRemoteFaultAdvertised; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegRemoteFaultReceived() + { + return ifMauAutoNegRemoteFaultReceived; + } + +} + diff --git a/test/dumps/jax/IfMauAutoNegEntryImpl.java b/test/dumps/jax/IfMauAutoNegEntryImpl.java new file mode 100644 index 0000000..d913ec3 --- /dev/null +++ b/test/dumps/jax/IfMauAutoNegEntryImpl.java @@ -0,0 +1,189 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauAutoNegEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifMauAutoNegEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfMauAutoNegEntryImpl extends IfMauAutoNegEntry +{ + + // constructor + public IfMauAutoNegEntryImpl(int ifMauIfIndex, + int ifMauIndex) + { + super(ifMauIfIndex, + ifMauIndex); + } + + public int get_ifMauAutoNegAdminStatus() + { + return ifMauAutoNegAdminStatus; + } + + public int set_ifMauAutoNegAdminStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegAdminStatus = ifMauAutoNegAdminStatus; + ifMauAutoNegAdminStatus = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegAdminStatus = undo_ifMauAutoNegAdminStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegRemoteSignaling() + { + return ifMauAutoNegRemoteSignaling; + } + + public int get_ifMauAutoNegConfig() + { + return ifMauAutoNegConfig; + } + + public int get_ifMauAutoNegCapability() + { + return ifMauAutoNegCapability; + } + + public int get_ifMauAutoNegCapAdvertised() + { + return ifMauAutoNegCapAdvertised; + } + + public int set_ifMauAutoNegCapAdvertised(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegCapAdvertised = ifMauAutoNegCapAdvertised; + ifMauAutoNegCapAdvertised = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegCapAdvertised = undo_ifMauAutoNegCapAdvertised; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegCapReceived() + { + return ifMauAutoNegCapReceived; + } + + public int get_ifMauAutoNegRestart() + { + return ifMauAutoNegRestart; + } + + public int set_ifMauAutoNegRestart(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegRestart = ifMauAutoNegRestart; + ifMauAutoNegRestart = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegRestart = undo_ifMauAutoNegRestart; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_ifMauAutoNegCapabilityBits() + { + return ifMauAutoNegCapabilityBits; + } + + public byte[] get_ifMauAutoNegCapAdvertisedBits() + { + return ifMauAutoNegCapAdvertisedBits; + } + + public int set_ifMauAutoNegCapAdvertisedBits(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegCapAdvertisedBits = ifMauAutoNegCapAdvertisedBits; + ifMauAutoNegCapAdvertisedBits = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifMauAutoNegCapAdvertisedBits[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegCapAdvertisedBits = undo_ifMauAutoNegCapAdvertisedBits; + break; + case AgentXSetPhase.CLEANUP: + undo_ifMauAutoNegCapAdvertisedBits = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_ifMauAutoNegCapReceivedBits() + { + return ifMauAutoNegCapReceivedBits; + } + + public int get_ifMauAutoNegRemoteFaultAdvertised() + { + return ifMauAutoNegRemoteFaultAdvertised; + } + + public int set_ifMauAutoNegRemoteFaultAdvertised(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauAutoNegRemoteFaultAdvertised = ifMauAutoNegRemoteFaultAdvertised; + ifMauAutoNegRemoteFaultAdvertised = value; + break; + case AgentXSetPhase.UNDO: + ifMauAutoNegRemoteFaultAdvertised = undo_ifMauAutoNegRemoteFaultAdvertised; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegRemoteFaultReceived() + { + return ifMauAutoNegRemoteFaultReceived; + } + +} + diff --git a/test/dumps/jax/IfMauAutoNegTable.java b/test/dumps/jax/IfMauAutoNegTable.java new file mode 100644 index 0000000..b909e12 --- /dev/null +++ b/test/dumps/jax/IfMauAutoNegTable.java @@ -0,0 +1,191 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauAutoNegTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifMauAutoNegTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfMauAutoNegTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1}; + + // constructors + public IfMauAutoNegTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + } + + public IfMauAutoNegTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifMauAutoNegAdminStatus + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegAdminStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // ifMauAutoNegRemoteSignaling + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegRemoteSignaling(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // ifMauAutoNegConfig + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegConfig(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // ifMauAutoNegCapability + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapability(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // ifMauAutoNegCapAdvertised + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapAdvertised(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // ifMauAutoNegCapReceived + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapReceived(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // ifMauAutoNegRestart + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegRestart(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // ifMauAutoNegCapabilityBits + { + byte[] value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapabilityBits(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 10: // ifMauAutoNegCapAdvertisedBits + { + byte[] value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapAdvertisedBits(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 11: // ifMauAutoNegCapReceivedBits + { + byte[] value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegCapReceivedBits(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 12: // ifMauAutoNegRemoteFaultAdvertised + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegRemoteFaultAdvertised(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 13: // ifMauAutoNegRemoteFaultReceived + { + int value = ((IfMauAutoNegEntry)entry).get_ifMauAutoNegRemoteFaultReceived(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // ifMauAutoNegAdminStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegAdminStatus(phase, vb.intValue()); + } + case 6: // ifMauAutoNegCapAdvertised + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegCapAdvertised(phase, vb.intValue()); + } + case 8: // ifMauAutoNegRestart + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegRestart(phase, vb.intValue()); + } + case 10: // ifMauAutoNegCapAdvertisedBits + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegCapAdvertisedBits(phase, vb.bytesValue()); + } + case 12: // ifMauAutoNegRemoteFaultAdvertised + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauAutoNegEntry)entry).set_ifMauAutoNegRemoteFaultAdvertised(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfMauEntry.java b/test/dumps/jax/IfMauEntry.java new file mode 100644 index 0000000..236e485 --- /dev/null +++ b/test/dumps/jax/IfMauEntry.java @@ -0,0 +1,161 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifMauEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfMauEntry extends AgentXEntry +{ + + protected int ifMauIfIndex = 0; + protected int ifMauIndex = 0; + protected AgentXOID ifMauType = new AgentXOID(); + protected int ifMauStatus = 0; + protected int undo_ifMauStatus = 0; + protected int ifMauMediaAvailable = 0; + protected long ifMauMediaAvailableStateExits = 0; + protected int ifMauJabberState = 0; + protected long ifMauJabberingStateEnters = 0; + protected long ifMauFalseCarriers = 0; + protected int ifMauTypeList = 0; + protected AgentXOID ifMauDefaultType = new AgentXOID(); + protected AgentXOID undo_ifMauDefaultType = new AgentXOID(); + protected int ifMauAutoNegSupported = 0; + protected byte[] ifMauTypeListBits = new byte[0]; + protected long ifMauHCFalseCarriers = 0; + + public IfMauEntry(int ifMauIfIndex, + int ifMauIndex) + { + this.ifMauIfIndex = ifMauIfIndex; + this.ifMauIndex = ifMauIndex; + + instance.append(ifMauIfIndex); + instance.append(ifMauIndex); + } + + public int get_ifMauIfIndex() + { + return ifMauIfIndex; + } + + public int get_ifMauIndex() + { + return ifMauIndex; + } + + public AgentXOID get_ifMauType() + { + return ifMauType; + } + + public int get_ifMauStatus() + { + return ifMauStatus; + } + + public int set_ifMauStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauStatus = ifMauStatus; + ifMauStatus = value; + break; + case AgentXSetPhase.UNDO: + ifMauStatus = undo_ifMauStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauMediaAvailable() + { + return ifMauMediaAvailable; + } + + public long get_ifMauMediaAvailableStateExits() + { + return ifMauMediaAvailableStateExits; + } + + public int get_ifMauJabberState() + { + return ifMauJabberState; + } + + public long get_ifMauJabberingStateEnters() + { + return ifMauJabberingStateEnters; + } + + public long get_ifMauFalseCarriers() + { + return ifMauFalseCarriers; + } + + public int get_ifMauTypeList() + { + return ifMauTypeList; + } + + public AgentXOID get_ifMauDefaultType() + { + return ifMauDefaultType; + } + + public int set_ifMauDefaultType(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauDefaultType = ifMauDefaultType; + ifMauDefaultType = value; + break; + case AgentXSetPhase.UNDO: + ifMauDefaultType = undo_ifMauDefaultType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegSupported() + { + return ifMauAutoNegSupported; + } + + public byte[] get_ifMauTypeListBits() + { + return ifMauTypeListBits; + } + + public long get_ifMauHCFalseCarriers() + { + return ifMauHCFalseCarriers; + } + +} + diff --git a/test/dumps/jax/IfMauEntryImpl.java b/test/dumps/jax/IfMauEntryImpl.java new file mode 100644 index 0000000..170f40b --- /dev/null +++ b/test/dumps/jax/IfMauEntryImpl.java @@ -0,0 +1,139 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifMauEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfMauEntryImpl extends IfMauEntry +{ + + // constructor + public IfMauEntryImpl(int ifMauIfIndex, + int ifMauIndex) + { + super(ifMauIfIndex, + ifMauIndex); + } + + public int get_ifMauIfIndex() + { + return ifMauIfIndex; + } + + public int get_ifMauIndex() + { + return ifMauIndex; + } + + public AgentXOID get_ifMauType() + { + return ifMauType; + } + + public int get_ifMauStatus() + { + return ifMauStatus; + } + + public int set_ifMauStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauStatus = ifMauStatus; + ifMauStatus = value; + break; + case AgentXSetPhase.UNDO: + ifMauStatus = undo_ifMauStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauMediaAvailable() + { + return ifMauMediaAvailable; + } + + public long get_ifMauMediaAvailableStateExits() + { + return ifMauMediaAvailableStateExits; + } + + public int get_ifMauJabberState() + { + return ifMauJabberState; + } + + public long get_ifMauJabberingStateEnters() + { + return ifMauJabberingStateEnters; + } + + public long get_ifMauFalseCarriers() + { + return ifMauFalseCarriers; + } + + public int get_ifMauTypeList() + { + return ifMauTypeList; + } + + public AgentXOID get_ifMauDefaultType() + { + return ifMauDefaultType; + } + + public int set_ifMauDefaultType(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifMauDefaultType = ifMauDefaultType; + ifMauDefaultType = value; + break; + case AgentXSetPhase.UNDO: + ifMauDefaultType = undo_ifMauDefaultType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifMauAutoNegSupported() + { + return ifMauAutoNegSupported; + } + + public byte[] get_ifMauTypeListBits() + { + return ifMauTypeListBits; + } + + public long get_ifMauHCFalseCarriers() + { + return ifMauHCFalseCarriers; + } + +} + diff --git a/test/dumps/jax/IfMauJabberTrap.java b/test/dumps/jax/IfMauJabberTrap.java new file mode 100644 index 0000000..402c637 --- /dev/null +++ b/test/dumps/jax/IfMauJabberTrap.java @@ -0,0 +1,47 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauJabberTrap.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class IfMauJabberTrap extends AgentXNotification +{ + + private final static long[] ifMauJabberTrap_OID = {1, 3, 6, 1, 2, 1, 26, 0, 2}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(ifMauJabberTrap_OID)); + + private final static long[] OID1 = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 7}; + private final AgentXOID ifMauJabberState_OID = new AgentXOID(OID1); + + + public IfMauJabberTrap(IfMauEntry ifMauEntry_1) { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + + // add the ifMauJabberState columnar object of ifMauEntry_1 + oid = ifMauJabberState_OID; + oid.appendImplied(ifMauEntry_1.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifMauEntry_1.get_ifMauJabberState()); + varBindList.addElement(varBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/IfMauTable.java b/test/dumps/jax/IfMauTable.java new file mode 100644 index 0000000..6eb0c66 --- /dev/null +++ b/test/dumps/jax/IfMauTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfMauTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifMauTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfMauTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1}; + + // constructors + public IfMauTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + } + + public IfMauTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifMauIfIndex + { + int value = ((IfMauEntry)entry).get_ifMauIfIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // ifMauIndex + { + int value = ((IfMauEntry)entry).get_ifMauIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // ifMauType + { + AgentXOID value = ((IfMauEntry)entry).get_ifMauType(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 4: // ifMauStatus + { + int value = ((IfMauEntry)entry).get_ifMauStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // ifMauMediaAvailable + { + int value = ((IfMauEntry)entry).get_ifMauMediaAvailable(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // ifMauMediaAvailableStateExits + { + long value = ((IfMauEntry)entry).get_ifMauMediaAvailableStateExits(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 7: // ifMauJabberState + { + int value = ((IfMauEntry)entry).get_ifMauJabberState(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // ifMauJabberingStateEnters + { + long value = ((IfMauEntry)entry).get_ifMauJabberingStateEnters(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 9: // ifMauFalseCarriers + { + long value = ((IfMauEntry)entry).get_ifMauFalseCarriers(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 10: // ifMauTypeList + { + int value = ((IfMauEntry)entry).get_ifMauTypeList(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 11: // ifMauDefaultType + { + AgentXOID value = ((IfMauEntry)entry).get_ifMauDefaultType(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 12: // ifMauAutoNegSupported + { + int value = ((IfMauEntry)entry).get_ifMauAutoNegSupported(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 13: // ifMauTypeListBits + { + byte[] value = ((IfMauEntry)entry).get_ifMauTypeListBits(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 14: // ifMauHCFalseCarriers + { + long value = ((IfMauEntry)entry).get_ifMauHCFalseCarriers(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 4: // ifMauStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauEntry)entry).set_ifMauStatus(phase, vb.intValue()); + } + case 11: // ifMauDefaultType + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfMauEntry)entry).set_ifMauDefaultType(phase, vb.AgentXOIDValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfRcvAddressEntry.java b/test/dumps/jax/IfRcvAddressEntry.java new file mode 100644 index 0000000..d475c0c --- /dev/null +++ b/test/dumps/jax/IfRcvAddressEntry.java @@ -0,0 +1,102 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfRcvAddressEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifRcvAddressEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfRcvAddressEntry extends AgentXEntry +{ + + protected byte[] ifRcvAddressAddress = new byte[0]; + protected int ifRcvAddressStatus = 0; + protected int undo_ifRcvAddressStatus = 0; + protected int ifRcvAddressType = 0; + protected int undo_ifRcvAddressType = 0; + // foreign indices + protected int ifIndex; + + public IfRcvAddressEntry(int ifIndex, + byte[] ifRcvAddressAddress) + { + this.ifIndex = ifIndex; + this.ifRcvAddressAddress = ifRcvAddressAddress; + + instance.append(ifIndex); + instance.append(ifRcvAddressAddress); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public byte[] get_ifRcvAddressAddress() + { + return ifRcvAddressAddress; + } + + public int get_ifRcvAddressStatus() + { + return ifRcvAddressStatus; + } + + public int set_ifRcvAddressStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifRcvAddressStatus = ifRcvAddressStatus; + ifRcvAddressStatus = value; + break; + case AgentXSetPhase.UNDO: + ifRcvAddressStatus = undo_ifRcvAddressStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifRcvAddressType() + { + return ifRcvAddressType; + } + + public int set_ifRcvAddressType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifRcvAddressType = ifRcvAddressType; + ifRcvAddressType = value; + break; + case AgentXSetPhase.UNDO: + ifRcvAddressType = undo_ifRcvAddressType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfRcvAddressEntryImpl.java b/test/dumps/jax/IfRcvAddressEntryImpl.java new file mode 100644 index 0000000..a74e744 --- /dev/null +++ b/test/dumps/jax/IfRcvAddressEntryImpl.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfRcvAddressEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifRcvAddressEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfRcvAddressEntryImpl extends IfRcvAddressEntry +{ + + // constructor + public IfRcvAddressEntryImpl(int ifIndex, + byte[] ifRcvAddressAddress) + { + super(ifIndex, + ifRcvAddressAddress); + } + + public int get_ifRcvAddressStatus() + { + return ifRcvAddressStatus; + } + + public int set_ifRcvAddressStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifRcvAddressStatus = ifRcvAddressStatus; + ifRcvAddressStatus = value; + break; + case AgentXSetPhase.UNDO: + ifRcvAddressStatus = undo_ifRcvAddressStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifRcvAddressType() + { + return ifRcvAddressType; + } + + public int set_ifRcvAddressType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifRcvAddressType = ifRcvAddressType; + ifRcvAddressType = value; + break; + case AgentXSetPhase.UNDO: + ifRcvAddressType = undo_ifRcvAddressType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfRcvAddressTable.java b/test/dumps/jax/IfRcvAddressTable.java new file mode 100644 index 0000000..7b6b1f4 --- /dev/null +++ b/test/dumps/jax/IfRcvAddressTable.java @@ -0,0 +1,100 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfRcvAddressTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifRcvAddressTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfRcvAddressTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1}; + + // constructors + public IfRcvAddressTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public IfRcvAddressTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // ifRcvAddressStatus + { + int value = ((IfRcvAddressEntry)entry).get_ifRcvAddressStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // ifRcvAddressType + { + int value = ((IfRcvAddressEntry)entry).get_ifRcvAddressType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // ifRcvAddressStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfRcvAddressEntry)entry).set_ifRcvAddressStatus(phase, vb.intValue()); + } + case 3: // ifRcvAddressType + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfRcvAddressEntry)entry).set_ifRcvAddressType(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfStackEntry.java b/test/dumps/jax/IfStackEntry.java new file mode 100644 index 0000000..9c09028 --- /dev/null +++ b/test/dumps/jax/IfStackEntry.java @@ -0,0 +1,75 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfStackEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifStackEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfStackEntry extends AgentXEntry +{ + + protected int ifStackHigherLayer = 0; + protected int ifStackLowerLayer = 0; + protected int ifStackStatus = 0; + protected int undo_ifStackStatus = 0; + + public IfStackEntry(int ifStackHigherLayer, + int ifStackLowerLayer) + { + this.ifStackHigherLayer = ifStackHigherLayer; + this.ifStackLowerLayer = ifStackLowerLayer; + + instance.append(ifStackHigherLayer); + instance.append(ifStackLowerLayer); + } + + public int get_ifStackHigherLayer() + { + return ifStackHigherLayer; + } + + public int get_ifStackLowerLayer() + { + return ifStackLowerLayer; + } + + public int get_ifStackStatus() + { + return ifStackStatus; + } + + public int set_ifStackStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifStackStatus = ifStackStatus; + ifStackStatus = value; + break; + case AgentXSetPhase.UNDO: + ifStackStatus = undo_ifStackStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfStackEntryImpl.java b/test/dumps/jax/IfStackEntryImpl.java new file mode 100644 index 0000000..d1ae86d --- /dev/null +++ b/test/dumps/jax/IfStackEntryImpl.java @@ -0,0 +1,55 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfStackEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifStackEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfStackEntryImpl extends IfStackEntry +{ + + // constructor + public IfStackEntryImpl(int ifStackHigherLayer, + int ifStackLowerLayer) + { + super(ifStackHigherLayer, + ifStackLowerLayer); + } + + public int get_ifStackStatus() + { + return ifStackStatus; + } + + public int set_ifStackStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifStackStatus = ifStackStatus; + ifStackStatus = value; + break; + case AgentXSetPhase.UNDO: + ifStackStatus = undo_ifStackStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfStackTable.java b/test/dumps/jax/IfStackTable.java new file mode 100644 index 0000000..17796a8 --- /dev/null +++ b/test/dumps/jax/IfStackTable.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfStackTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifStackTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfStackTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1}; + + // constructors + public IfStackTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + } + + public IfStackTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 3: // ifStackStatus + { + int value = ((IfStackEntry)entry).get_ifStackStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 3: // ifStackStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfStackEntry)entry).set_ifStackStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfTable.java b/test/dumps/jax/IfTable.java new file mode 100644 index 0000000..c8820e5 --- /dev/null +++ b/test/dumps/jax/IfTable.java @@ -0,0 +1,233 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 2, 2, 1}; + + // constructors + public IfTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + columns.addElement(new Long(15)); + columns.addElement(new Long(16)); + columns.addElement(new Long(17)); + columns.addElement(new Long(18)); + columns.addElement(new Long(19)); + columns.addElement(new Long(20)); + columns.addElement(new Long(21)); + columns.addElement(new Long(22)); + } + + public IfTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + columns.addElement(new Long(15)); + columns.addElement(new Long(16)); + columns.addElement(new Long(17)); + columns.addElement(new Long(18)); + columns.addElement(new Long(19)); + columns.addElement(new Long(20)); + columns.addElement(new Long(21)); + columns.addElement(new Long(22)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifIndex + { + int value = ((IfEntry)entry).get_ifIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // ifDescr + { + byte[] value = ((IfEntry)entry).get_ifDescr(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 3: // ifType + { + int value = ((IfEntry)entry).get_ifType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // ifMtu + { + int value = ((IfEntry)entry).get_ifMtu(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // ifSpeed + { + long value = ((IfEntry)entry).get_ifSpeed(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // ifPhysAddress + { + byte[] value = ((IfEntry)entry).get_ifPhysAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 7: // ifAdminStatus + { + int value = ((IfEntry)entry).get_ifAdminStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // ifOperStatus + { + int value = ((IfEntry)entry).get_ifOperStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // ifLastChange + { + long value = ((IfEntry)entry).get_ifLastChange(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 10: // ifInOctets + { + long value = ((IfEntry)entry).get_ifInOctets(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 11: // ifInUcastPkts + { + long value = ((IfEntry)entry).get_ifInUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 12: // ifInNUcastPkts + { + long value = ((IfEntry)entry).get_ifInNUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 13: // ifInDiscards + { + long value = ((IfEntry)entry).get_ifInDiscards(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 14: // ifInErrors + { + long value = ((IfEntry)entry).get_ifInErrors(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 15: // ifInUnknownProtos + { + long value = ((IfEntry)entry).get_ifInUnknownProtos(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 16: // ifOutOctets + { + long value = ((IfEntry)entry).get_ifOutOctets(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 17: // ifOutUcastPkts + { + long value = ((IfEntry)entry).get_ifOutUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 18: // ifOutNUcastPkts + { + long value = ((IfEntry)entry).get_ifOutNUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 19: // ifOutDiscards + { + long value = ((IfEntry)entry).get_ifOutDiscards(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 20: // ifOutErrors + { + long value = ((IfEntry)entry).get_ifOutErrors(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 21: // ifOutQLen + { + long value = ((IfEntry)entry).get_ifOutQLen(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 22: // ifSpecific + { + AgentXOID value = ((IfEntry)entry).get_ifSpecific(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 7: // ifAdminStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfEntry)entry).set_ifAdminStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfTestEntry.java b/test/dumps/jax/IfTestEntry.java new file mode 100644 index 0000000..0d6ebc3 --- /dev/null +++ b/test/dumps/jax/IfTestEntry.java @@ -0,0 +1,151 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfTestEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifTestEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfTestEntry extends AgentXEntry +{ + + protected int ifTestId = 0; + protected int undo_ifTestId = 0; + protected int ifTestStatus = 0; + protected int undo_ifTestStatus = 0; + protected AgentXOID ifTestType = new AgentXOID(); + protected AgentXOID undo_ifTestType = new AgentXOID(); + protected int ifTestResult = 0; + protected AgentXOID ifTestCode = new AgentXOID(); + protected byte[] ifTestOwner = new byte[0]; + protected byte[] undo_ifTestOwner = new byte[0]; + + public IfTestEntry() + { + + } + + public int get_ifTestId() + { + return ifTestId; + } + + public int set_ifTestId(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestId = ifTestId; + ifTestId = value; + break; + case AgentXSetPhase.UNDO: + ifTestId = undo_ifTestId; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifTestStatus() + { + return ifTestStatus; + } + + public int set_ifTestStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestStatus = ifTestStatus; + ifTestStatus = value; + break; + case AgentXSetPhase.UNDO: + ifTestStatus = undo_ifTestStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public AgentXOID get_ifTestType() + { + return ifTestType; + } + + public int set_ifTestType(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestType = ifTestType; + ifTestType = value; + break; + case AgentXSetPhase.UNDO: + ifTestType = undo_ifTestType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifTestResult() + { + return ifTestResult; + } + + public AgentXOID get_ifTestCode() + { + return ifTestCode; + } + + public byte[] get_ifTestOwner() + { + return ifTestOwner; + } + + public int set_ifTestOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestOwner = ifTestOwner; + ifTestOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifTestOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifTestOwner = undo_ifTestOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_ifTestOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfTestEntryImpl.java b/test/dumps/jax/IfTestEntryImpl.java new file mode 100644 index 0000000..019e413 --- /dev/null +++ b/test/dumps/jax/IfTestEntryImpl.java @@ -0,0 +1,138 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfTestEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifTestEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfTestEntryImpl extends IfTestEntry +{ + + // constructor + public IfTestEntryImpl() + { + super(); + } + + public int get_ifTestId() + { + return ifTestId; + } + + public int set_ifTestId(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestId = ifTestId; + ifTestId = value; + break; + case AgentXSetPhase.UNDO: + ifTestId = undo_ifTestId; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifTestStatus() + { + return ifTestStatus; + } + + public int set_ifTestStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestStatus = ifTestStatus; + ifTestStatus = value; + break; + case AgentXSetPhase.UNDO: + ifTestStatus = undo_ifTestStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public AgentXOID get_ifTestType() + { + return ifTestType; + } + + public int set_ifTestType(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestType = ifTestType; + ifTestType = value; + break; + case AgentXSetPhase.UNDO: + ifTestType = undo_ifTestType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifTestResult() + { + return ifTestResult; + } + + public AgentXOID get_ifTestCode() + { + return ifTestCode; + } + + public byte[] get_ifTestOwner() + { + return ifTestOwner; + } + + public int set_ifTestOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifTestOwner = ifTestOwner; + ifTestOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifTestOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifTestOwner = undo_ifTestOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_ifTestOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/IfTestTable.java b/test/dumps/jax/IfTestTable.java new file mode 100644 index 0000000..d92971e --- /dev/null +++ b/test/dumps/jax/IfTestTable.java @@ -0,0 +1,142 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfTestTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifTestTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfTestTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1}; + + // constructors + public IfTestTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public IfTestTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifTestId + { + int value = ((IfTestEntry)entry).get_ifTestId(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // ifTestStatus + { + int value = ((IfTestEntry)entry).get_ifTestStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // ifTestType + { + AgentXOID value = ((IfTestEntry)entry).get_ifTestType(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 4: // ifTestResult + { + int value = ((IfTestEntry)entry).get_ifTestResult(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // ifTestCode + { + AgentXOID value = ((IfTestEntry)entry).get_ifTestCode(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 6: // ifTestOwner + { + byte[] value = ((IfTestEntry)entry).get_ifTestOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // ifTestId + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfTestEntry)entry).set_ifTestId(phase, vb.intValue()); + } + case 2: // ifTestStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfTestEntry)entry).set_ifTestStatus(phase, vb.intValue()); + } + case 3: // ifTestType + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfTestEntry)entry).set_ifTestType(phase, vb.AgentXOIDValue()); + } + case 6: // ifTestOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfTestEntry)entry).set_ifTestOwner(phase, vb.bytesValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/IfXEntry.java b/test/dumps/jax/IfXEntry.java new file mode 100644 index 0000000..73a1f6e --- /dev/null +++ b/test/dumps/jax/IfXEntry.java @@ -0,0 +1,209 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfXEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ifXEntry defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfXEntry extends AgentXEntry +{ + + protected byte[] ifName = new byte[0]; + protected long ifInMulticastPkts = 0; + protected long ifInBroadcastPkts = 0; + protected long ifOutMulticastPkts = 0; + protected long ifOutBroadcastPkts = 0; + protected long ifHCInOctets = 0; + protected long ifHCInUcastPkts = 0; + protected long ifHCInMulticastPkts = 0; + protected long ifHCInBroadcastPkts = 0; + protected long ifHCOutOctets = 0; + protected long ifHCOutUcastPkts = 0; + protected long ifHCOutMulticastPkts = 0; + protected long ifHCOutBroadcastPkts = 0; + protected int ifLinkUpDownTrapEnable = 0; + protected int undo_ifLinkUpDownTrapEnable = 0; + protected long ifHighSpeed = 0; + protected int ifPromiscuousMode = 0; + protected int undo_ifPromiscuousMode = 0; + protected int ifConnectorPresent = 0; + protected byte[] ifAlias = new byte[0]; + protected byte[] undo_ifAlias = new byte[0]; + protected long ifCounterDiscontinuityTime = 0; + + public IfXEntry() + { + + } + + public byte[] get_ifName() + { + return ifName; + } + + public long get_ifInMulticastPkts() + { + return ifInMulticastPkts; + } + + public long get_ifInBroadcastPkts() + { + return ifInBroadcastPkts; + } + + public long get_ifOutMulticastPkts() + { + return ifOutMulticastPkts; + } + + public long get_ifOutBroadcastPkts() + { + return ifOutBroadcastPkts; + } + + public long get_ifHCInOctets() + { + return ifHCInOctets; + } + + public long get_ifHCInUcastPkts() + { + return ifHCInUcastPkts; + } + + public long get_ifHCInMulticastPkts() + { + return ifHCInMulticastPkts; + } + + public long get_ifHCInBroadcastPkts() + { + return ifHCInBroadcastPkts; + } + + public long get_ifHCOutOctets() + { + return ifHCOutOctets; + } + + public long get_ifHCOutUcastPkts() + { + return ifHCOutUcastPkts; + } + + public long get_ifHCOutMulticastPkts() + { + return ifHCOutMulticastPkts; + } + + public long get_ifHCOutBroadcastPkts() + { + return ifHCOutBroadcastPkts; + } + + public int get_ifLinkUpDownTrapEnable() + { + return ifLinkUpDownTrapEnable; + } + + public int set_ifLinkUpDownTrapEnable(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifLinkUpDownTrapEnable = ifLinkUpDownTrapEnable; + ifLinkUpDownTrapEnable = value; + break; + case AgentXSetPhase.UNDO: + ifLinkUpDownTrapEnable = undo_ifLinkUpDownTrapEnable; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_ifHighSpeed() + { + return ifHighSpeed; + } + + public int get_ifPromiscuousMode() + { + return ifPromiscuousMode; + } + + public int set_ifPromiscuousMode(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifPromiscuousMode = ifPromiscuousMode; + ifPromiscuousMode = value; + break; + case AgentXSetPhase.UNDO: + ifPromiscuousMode = undo_ifPromiscuousMode; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifConnectorPresent() + { + return ifConnectorPresent; + } + + public byte[] get_ifAlias() + { + return ifAlias; + } + + public int set_ifAlias(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifAlias = ifAlias; + ifAlias = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifAlias[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifAlias = undo_ifAlias; + break; + case AgentXSetPhase.CLEANUP: + undo_ifAlias = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_ifCounterDiscontinuityTime() + { + return ifCounterDiscontinuityTime; + } + +} + diff --git a/test/dumps/jax/IfXEntryImpl.java b/test/dumps/jax/IfXEntryImpl.java new file mode 100644 index 0000000..bb72df0 --- /dev/null +++ b/test/dumps/jax/IfXEntryImpl.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: IfXEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ifXEntry defined in IF-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class IfXEntryImpl extends IfXEntry +{ + + // constructor + public IfXEntryImpl() + { + super(); + } + + public byte[] get_ifName() + { + return ifName; + } + + public long get_ifInMulticastPkts() + { + return ifInMulticastPkts; + } + + public long get_ifInBroadcastPkts() + { + return ifInBroadcastPkts; + } + + public long get_ifOutMulticastPkts() + { + return ifOutMulticastPkts; + } + + public long get_ifOutBroadcastPkts() + { + return ifOutBroadcastPkts; + } + + public long get_ifHCInOctets() + { + return ifHCInOctets; + } + + public long get_ifHCInUcastPkts() + { + return ifHCInUcastPkts; + } + + public long get_ifHCInMulticastPkts() + { + return ifHCInMulticastPkts; + } + + public long get_ifHCInBroadcastPkts() + { + return ifHCInBroadcastPkts; + } + + public long get_ifHCOutOctets() + { + return ifHCOutOctets; + } + + public long get_ifHCOutUcastPkts() + { + return ifHCOutUcastPkts; + } + + public long get_ifHCOutMulticastPkts() + { + return ifHCOutMulticastPkts; + } + + public long get_ifHCOutBroadcastPkts() + { + return ifHCOutBroadcastPkts; + } + + public int get_ifLinkUpDownTrapEnable() + { + return ifLinkUpDownTrapEnable; + } + + public int set_ifLinkUpDownTrapEnable(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifLinkUpDownTrapEnable = ifLinkUpDownTrapEnable; + ifLinkUpDownTrapEnable = value; + break; + case AgentXSetPhase.UNDO: + ifLinkUpDownTrapEnable = undo_ifLinkUpDownTrapEnable; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_ifHighSpeed() + { + return ifHighSpeed; + } + + public int get_ifPromiscuousMode() + { + return ifPromiscuousMode; + } + + public int set_ifPromiscuousMode(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifPromiscuousMode = ifPromiscuousMode; + ifPromiscuousMode = value; + break; + case AgentXSetPhase.UNDO: + ifPromiscuousMode = undo_ifPromiscuousMode; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_ifConnectorPresent() + { + return ifConnectorPresent; + } + + public byte[] get_ifAlias() + { + return ifAlias; + } + + public int set_ifAlias(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_ifAlias = ifAlias; + ifAlias = new byte[value.length]; + for(int i = 0; i < value.length; i++) + ifAlias[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + ifAlias = undo_ifAlias; + break; + case AgentXSetPhase.CLEANUP: + undo_ifAlias = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_ifCounterDiscontinuityTime() + { + return ifCounterDiscontinuityTime; + } + +} + diff --git a/test/dumps/jax/IfXTable.java b/test/dumps/jax/IfXTable.java new file mode 100644 index 0000000..981e957 --- /dev/null +++ b/test/dumps/jax/IfXTable.java @@ -0,0 +1,226 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: IfXTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ifXTable defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class IfXTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1}; + + // constructors + public IfXTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + columns.addElement(new Long(15)); + columns.addElement(new Long(16)); + columns.addElement(new Long(17)); + columns.addElement(new Long(18)); + columns.addElement(new Long(19)); + } + + public IfXTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + columns.addElement(new Long(12)); + columns.addElement(new Long(13)); + columns.addElement(new Long(14)); + columns.addElement(new Long(15)); + columns.addElement(new Long(16)); + columns.addElement(new Long(17)); + columns.addElement(new Long(18)); + columns.addElement(new Long(19)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ifName + { + byte[] value = ((IfXEntry)entry).get_ifName(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 2: // ifInMulticastPkts + { + long value = ((IfXEntry)entry).get_ifInMulticastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 3: // ifInBroadcastPkts + { + long value = ((IfXEntry)entry).get_ifInBroadcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // ifOutMulticastPkts + { + long value = ((IfXEntry)entry).get_ifOutMulticastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 5: // ifOutBroadcastPkts + { + long value = ((IfXEntry)entry).get_ifOutBroadcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // ifHCInOctets + { + long value = ((IfXEntry)entry).get_ifHCInOctets(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 7: // ifHCInUcastPkts + { + long value = ((IfXEntry)entry).get_ifHCInUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 8: // ifHCInMulticastPkts + { + long value = ((IfXEntry)entry).get_ifHCInMulticastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 9: // ifHCInBroadcastPkts + { + long value = ((IfXEntry)entry).get_ifHCInBroadcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 10: // ifHCOutOctets + { + long value = ((IfXEntry)entry).get_ifHCOutOctets(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 11: // ifHCOutUcastPkts + { + long value = ((IfXEntry)entry).get_ifHCOutUcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 12: // ifHCOutMulticastPkts + { + long value = ((IfXEntry)entry).get_ifHCOutMulticastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 13: // ifHCOutBroadcastPkts + { + long value = ((IfXEntry)entry).get_ifHCOutBroadcastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER64, value); + } + case 14: // ifLinkUpDownTrapEnable + { + int value = ((IfXEntry)entry).get_ifLinkUpDownTrapEnable(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 15: // ifHighSpeed + { + long value = ((IfXEntry)entry).get_ifHighSpeed(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 16: // ifPromiscuousMode + { + int value = ((IfXEntry)entry).get_ifPromiscuousMode(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 17: // ifConnectorPresent + { + int value = ((IfXEntry)entry).get_ifConnectorPresent(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 18: // ifAlias + { + byte[] value = ((IfXEntry)entry).get_ifAlias(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 19: // ifCounterDiscontinuityTime + { + long value = ((IfXEntry)entry).get_ifCounterDiscontinuityTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 14: // ifLinkUpDownTrapEnable + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfXEntry)entry).set_ifLinkUpDownTrapEnable(phase, vb.intValue()); + } + case 16: // ifPromiscuousMode + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfXEntry)entry).set_ifPromiscuousMode(phase, vb.intValue()); + } + case 18: // ifAlias + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((IfXEntry)entry).set_ifAlias(phase, vb.bytesValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/Interfaces.java b/test/dumps/jax/Interfaces.java new file mode 100644 index 0000000..965f0c6 --- /dev/null +++ b/test/dumps/jax/Interfaces.java @@ -0,0 +1,81 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Interfaces.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group interfaces defined in IF-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class Interfaces extends AgentXScalars +{ + + private final static long[] InterfacesOID = {1, 3, 6, 1, 2, 1, 2}; + + protected AgentXOID IfNumberOID; + protected final static long[] IfNumberName = {1, 3, 6, 1, 2, 1, 2, 1, 0}; + protected int ifNumber = 0; + public Interfaces() + { + oid = new AgentXOID(InterfacesOID); + data = new Vector(); + IfNumberOID = new AgentXOID(IfNumberName); + data.addElement(IfNumberOID); + } + + public int get_ifNumber() + { + return ifNumber; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == IfNumberOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_ifNumber()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == IfNumberOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_ifNumber()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/InterfacesImpl.java b/test/dumps/jax/InterfacesImpl.java new file mode 100644 index 0000000..043f963 --- /dev/null +++ b/test/dumps/jax/InterfacesImpl.java @@ -0,0 +1,29 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: InterfacesImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group interfaces defined in IF-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class InterfacesImpl extends Interfaces +{ + + public int get_ifNumber() + { + return ifNumber; + } + +} + diff --git a/test/dumps/jax/LinkDown.java b/test/dumps/jax/LinkDown.java new file mode 100644 index 0000000..04bc61a --- /dev/null +++ b/test/dumps/jax/LinkDown.java @@ -0,0 +1,67 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: LinkDown.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class LinkDown extends AgentXNotification +{ + + private final static long[] linkDown_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 3}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(linkDown_OID)); + + private final static long[] OID1 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 1}; + private final AgentXOID ifIndex_OID = new AgentXOID(OID1); + private final static long[] OID2 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 7}; + private final AgentXOID ifAdminStatus_OID = new AgentXOID(OID2); + private final static long[] OID3 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 8}; + private final AgentXOID ifOperStatus_OID = new AgentXOID(OID3); + + + public LinkDown(IfEntry ifEntry_1, IfEntry ifEntry_2, IfEntry ifEntry_3) { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + + // add the ifIndex columnar object of ifEntry_1 + oid = ifIndex_OID; + oid.appendImplied(ifEntry_1.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_1.get_ifIndex()); + varBindList.addElement(varBind); + + // add the ifAdminStatus columnar object of ifEntry_2 + oid = ifAdminStatus_OID; + oid.appendImplied(ifEntry_2.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_2.get_ifAdminStatus()); + varBindList.addElement(varBind); + + // add the ifOperStatus columnar object of ifEntry_3 + oid = ifOperStatus_OID; + oid.appendImplied(ifEntry_3.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_3.get_ifOperStatus()); + varBindList.addElement(varBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/LinkUp.java b/test/dumps/jax/LinkUp.java new file mode 100644 index 0000000..f5b44f5 --- /dev/null +++ b/test/dumps/jax/LinkUp.java @@ -0,0 +1,67 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: LinkUp.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class LinkUp extends AgentXNotification +{ + + private final static long[] linkUp_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 4}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(linkUp_OID)); + + private final static long[] OID1 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 1}; + private final AgentXOID ifIndex_OID = new AgentXOID(OID1); + private final static long[] OID2 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 7}; + private final AgentXOID ifAdminStatus_OID = new AgentXOID(OID2); + private final static long[] OID3 = {1, 3, 6, 1, 2, 1, 2, 2, 1, 8}; + private final AgentXOID ifOperStatus_OID = new AgentXOID(OID3); + + + public LinkUp(IfEntry ifEntry_1, IfEntry ifEntry_2, IfEntry ifEntry_3) { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + + // add the ifIndex columnar object of ifEntry_1 + oid = ifIndex_OID; + oid.appendImplied(ifEntry_1.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_1.get_ifIndex()); + varBindList.addElement(varBind); + + // add the ifAdminStatus columnar object of ifEntry_2 + oid = ifAdminStatus_OID; + oid.appendImplied(ifEntry_2.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_2.get_ifAdminStatus()); + varBindList.addElement(varBind); + + // add the ifOperStatus columnar object of ifEntry_3 + oid = ifOperStatus_OID; + oid.appendImplied(ifEntry_3.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + ifEntry_3.get_ifOperStatus()); + varBindList.addElement(varBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/Makefile.am b/test/dumps/jax/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/jax/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/jax/Makefile.in b/test/dumps/jax/Makefile.in new file mode 100644 index 0000000..8054965 --- /dev/null +++ b/test/dumps/jax/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/jax +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/jax/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/jax/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/jax/MatrixControl2Entry.java b/test/dumps/jax/MatrixControl2Entry.java new file mode 100644 index 0000000..9633c5b --- /dev/null +++ b/test/dumps/jax/MatrixControl2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: MatrixControl2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row matrixControl2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class MatrixControl2Entry extends AgentXEntry +{ + + protected long matrixControlDroppedFrames = 0; + protected long matrixControlCreateTime = 0; + + public MatrixControl2Entry() + { + + } + + public long get_matrixControlDroppedFrames() + { + return matrixControlDroppedFrames; + } + + public long get_matrixControlCreateTime() + { + return matrixControlCreateTime; + } + +} + diff --git a/test/dumps/jax/MatrixControl2EntryImpl.java b/test/dumps/jax/MatrixControl2EntryImpl.java new file mode 100644 index 0000000..2bb6482 --- /dev/null +++ b/test/dumps/jax/MatrixControl2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: MatrixControl2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row matrixControl2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class MatrixControl2EntryImpl extends MatrixControl2Entry +{ + + // constructor + public MatrixControl2EntryImpl() + { + super(); + } + + public long get_matrixControlDroppedFrames() + { + return matrixControlDroppedFrames; + } + + public long get_matrixControlCreateTime() + { + return matrixControlCreateTime; + } + +} + diff --git a/test/dumps/jax/MatrixControl2Table.java b/test/dumps/jax/MatrixControl2Table.java new file mode 100644 index 0000000..ad5417b --- /dev/null +++ b/test/dumps/jax/MatrixControl2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: MatrixControl2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table matrixControl2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class MatrixControl2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 6, 4, 1}; + + // constructors + public MatrixControl2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public MatrixControl2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // matrixControlDroppedFrames + { + long value = ((MatrixControl2Entry)entry).get_matrixControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // matrixControlCreateTime + { + long value = ((MatrixControl2Entry)entry).get_matrixControlCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NetConfigEntry.java b/test/dumps/jax/NetConfigEntry.java new file mode 100644 index 0000000..caf6c5b --- /dev/null +++ b/test/dumps/jax/NetConfigEntry.java @@ -0,0 +1,125 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NetConfigEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row netConfigEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NetConfigEntry extends AgentXEntry +{ + + protected byte[] netConfigIPAddress = new byte[4]; + protected byte[] undo_netConfigIPAddress = new byte[4]; + protected byte[] netConfigSubnetMask = new byte[4]; + protected byte[] undo_netConfigSubnetMask = new byte[4]; + protected int netConfigStatus = 0; + protected int undo_netConfigStatus = 0; + // foreign indices + protected int ifIndex; + + public NetConfigEntry(int ifIndex) + { + this.ifIndex = ifIndex; + + instance.append(ifIndex); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public byte[] get_netConfigIPAddress() + { + return netConfigIPAddress; + } + + public int set_netConfigIPAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigIPAddress = netConfigIPAddress; + netConfigIPAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + netConfigIPAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + netConfigIPAddress = undo_netConfigIPAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_netConfigIPAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_netConfigSubnetMask() + { + return netConfigSubnetMask; + } + + public int set_netConfigSubnetMask(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigSubnetMask = netConfigSubnetMask; + netConfigSubnetMask = new byte[value.length]; + for(int i = 0; i < value.length; i++) + netConfigSubnetMask[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + netConfigSubnetMask = undo_netConfigSubnetMask; + break; + case AgentXSetPhase.CLEANUP: + undo_netConfigSubnetMask = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_netConfigStatus() + { + return netConfigStatus; + } + + public int set_netConfigStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigStatus = netConfigStatus; + netConfigStatus = value; + break; + case AgentXSetPhase.UNDO: + netConfigStatus = undo_netConfigStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/NetConfigEntryImpl.java b/test/dumps/jax/NetConfigEntryImpl.java new file mode 100644 index 0000000..7fb94b2 --- /dev/null +++ b/test/dumps/jax/NetConfigEntryImpl.java @@ -0,0 +1,107 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NetConfigEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row netConfigEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NetConfigEntryImpl extends NetConfigEntry +{ + + // constructor + public NetConfigEntryImpl(int ifIndex) + { + super(ifIndex); + } + + public byte[] get_netConfigIPAddress() + { + return netConfigIPAddress; + } + + public int set_netConfigIPAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigIPAddress = netConfigIPAddress; + netConfigIPAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + netConfigIPAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + netConfigIPAddress = undo_netConfigIPAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_netConfigIPAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_netConfigSubnetMask() + { + return netConfigSubnetMask; + } + + public int set_netConfigSubnetMask(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigSubnetMask = netConfigSubnetMask; + netConfigSubnetMask = new byte[value.length]; + for(int i = 0; i < value.length; i++) + netConfigSubnetMask[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + netConfigSubnetMask = undo_netConfigSubnetMask; + break; + case AgentXSetPhase.CLEANUP: + undo_netConfigSubnetMask = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_netConfigStatus() + { + return netConfigStatus; + } + + public int set_netConfigStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_netConfigStatus = netConfigStatus; + netConfigStatus = value; + break; + case AgentXSetPhase.UNDO: + netConfigStatus = undo_netConfigStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/NetConfigTable.java b/test/dumps/jax/NetConfigTable.java new file mode 100644 index 0000000..f5eb2b1 --- /dev/null +++ b/test/dumps/jax/NetConfigTable.java @@ -0,0 +1,114 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NetConfigTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table netConfigTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NetConfigTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1}; + + // constructors + public NetConfigTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public NetConfigTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // netConfigIPAddress + { + byte[] value = ((NetConfigEntry)entry).get_netConfigIPAddress(); + return new AgentXVarBind(oid, AgentXVarBind.IPADDRESS, value); + } + case 2: // netConfigSubnetMask + { + byte[] value = ((NetConfigEntry)entry).get_netConfigSubnetMask(); + return new AgentXVarBind(oid, AgentXVarBind.IPADDRESS, value); + } + case 3: // netConfigStatus + { + int value = ((NetConfigEntry)entry).get_netConfigStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // netConfigIPAddress + { + if (vb.getType() != AgentXVarBind.IPADDRESS) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NetConfigEntry)entry).set_netConfigIPAddress(phase, vb.bytesValue()); + } + case 2: // netConfigSubnetMask + { + if (vb.getType() != AgentXVarBind.IPADDRESS) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NetConfigEntry)entry).set_netConfigSubnetMask(phase, vb.bytesValue()); + } + case 3: // netConfigStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NetConfigEntry)entry).set_netConfigStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlHostEntry.java b/test/dumps/jax/NlHostEntry.java new file mode 100644 index 0000000..d830fc4 --- /dev/null +++ b/test/dumps/jax/NlHostEntry.java @@ -0,0 +1,104 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlHostEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlHostEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlHostEntry extends AgentXEntry +{ + + protected long nlHostTimeMark = 0; + protected byte[] nlHostAddress = new byte[0]; + protected long nlHostInPkts = 0; + protected long nlHostOutPkts = 0; + protected long nlHostInOctets = 0; + protected long nlHostOutOctets = 0; + protected long nlHostOutMacNonUnicastPkts = 0; + protected long nlHostCreateTime = 0; + // foreign indices + protected int hlHostControlIndex; + protected int protocolDirLocalIndex; + + public NlHostEntry(int hlHostControlIndex, + long nlHostTimeMark, + int protocolDirLocalIndex, + byte[] nlHostAddress) + { + this.hlHostControlIndex = hlHostControlIndex; + this.nlHostTimeMark = nlHostTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlHostAddress = nlHostAddress; + + instance.append(hlHostControlIndex); + instance.append(nlHostTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlHostAddress); + } + + public int get_hlHostControlIndex() + { + return hlHostControlIndex; + } + + public long get_nlHostTimeMark() + { + return nlHostTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlHostAddress() + { + return nlHostAddress; + } + + public long get_nlHostInPkts() + { + return nlHostInPkts; + } + + public long get_nlHostOutPkts() + { + return nlHostOutPkts; + } + + public long get_nlHostInOctets() + { + return nlHostInOctets; + } + + public long get_nlHostOutOctets() + { + return nlHostOutOctets; + } + + public long get_nlHostOutMacNonUnicastPkts() + { + return nlHostOutMacNonUnicastPkts; + } + + public long get_nlHostCreateTime() + { + return nlHostCreateTime; + } + +} + diff --git a/test/dumps/jax/NlHostEntryImpl.java b/test/dumps/jax/NlHostEntryImpl.java new file mode 100644 index 0000000..d0a6ae3 --- /dev/null +++ b/test/dumps/jax/NlHostEntryImpl.java @@ -0,0 +1,65 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlHostEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlHostEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlHostEntryImpl extends NlHostEntry +{ + + // constructor + public NlHostEntryImpl(int hlHostControlIndex, + long nlHostTimeMark, + int protocolDirLocalIndex, + byte[] nlHostAddress) + { + super(hlHostControlIndex, + nlHostTimeMark, + protocolDirLocalIndex, + nlHostAddress); + } + + public long get_nlHostInPkts() + { + return nlHostInPkts; + } + + public long get_nlHostOutPkts() + { + return nlHostOutPkts; + } + + public long get_nlHostInOctets() + { + return nlHostInOctets; + } + + public long get_nlHostOutOctets() + { + return nlHostOutOctets; + } + + public long get_nlHostOutMacNonUnicastPkts() + { + return nlHostOutMacNonUnicastPkts; + } + + public long get_nlHostCreateTime() + { + return nlHostCreateTime; + } + +} + diff --git a/test/dumps/jax/NlHostTable.java b/test/dumps/jax/NlHostTable.java new file mode 100644 index 0000000..7b5c64c --- /dev/null +++ b/test/dumps/jax/NlHostTable.java @@ -0,0 +1,114 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlHostTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlHostTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlHostTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1}; + + // constructors + public NlHostTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + } + + public NlHostTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 3: // nlHostInPkts + { + long value = ((NlHostEntry)entry).get_nlHostInPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 4: // nlHostOutPkts + { + long value = ((NlHostEntry)entry).get_nlHostOutPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // nlHostInOctets + { + long value = ((NlHostEntry)entry).get_nlHostInOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // nlHostOutOctets + { + long value = ((NlHostEntry)entry).get_nlHostOutOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 7: // nlHostOutMacNonUnicastPkts + { + long value = ((NlHostEntry)entry).get_nlHostOutMacNonUnicastPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 8: // nlHostCreateTime + { + long value = ((NlHostEntry)entry).get_nlHostCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlMatrixDSEntry.java b/test/dumps/jax/NlMatrixDSEntry.java new file mode 100644 index 0000000..4b80126 --- /dev/null +++ b/test/dumps/jax/NlMatrixDSEntry.java @@ -0,0 +1,95 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixDSEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlMatrixDSEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixDSEntry extends AgentXEntry +{ + + protected long nlMatrixDSTimeMark = 0; + protected byte[] nlMatrixDSSourceAddress = new byte[0]; + protected byte[] nlMatrixDSDestAddress = new byte[0]; + protected long nlMatrixDSPkts = 0; + protected long nlMatrixDSOctets = 0; + protected long nlMatrixDSCreateTime = 0; + // foreign indices + protected int hlMatrixControlIndex; + protected int protocolDirLocalIndex; + + public NlMatrixDSEntry(int hlMatrixControlIndex, + long nlMatrixDSTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixDSDestAddress, + byte[] nlMatrixDSSourceAddress) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + this.nlMatrixDSTimeMark = nlMatrixDSTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlMatrixDSDestAddress = nlMatrixDSDestAddress; + this.nlMatrixDSSourceAddress = nlMatrixDSSourceAddress; + + instance.append(hlMatrixControlIndex); + instance.append(nlMatrixDSTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlMatrixDSDestAddress); + instance.append(nlMatrixDSSourceAddress); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public long get_nlMatrixDSTimeMark() + { + return nlMatrixDSTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlMatrixDSDestAddress() + { + return nlMatrixDSDestAddress; + } + + public byte[] get_nlMatrixDSSourceAddress() + { + return nlMatrixDSSourceAddress; + } + + public long get_nlMatrixDSPkts() + { + return nlMatrixDSPkts; + } + + public long get_nlMatrixDSOctets() + { + return nlMatrixDSOctets; + } + + public long get_nlMatrixDSCreateTime() + { + return nlMatrixDSCreateTime; + } + +} + diff --git a/test/dumps/jax/NlMatrixDSEntryImpl.java b/test/dumps/jax/NlMatrixDSEntryImpl.java new file mode 100644 index 0000000..3198cbf --- /dev/null +++ b/test/dumps/jax/NlMatrixDSEntryImpl.java @@ -0,0 +1,52 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixDSEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlMatrixDSEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixDSEntryImpl extends NlMatrixDSEntry +{ + + // constructor + public NlMatrixDSEntryImpl(int hlMatrixControlIndex, + long nlMatrixDSTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixDSDestAddress, + byte[] nlMatrixDSSourceAddress) + { + super(hlMatrixControlIndex, + nlMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, + nlMatrixDSSourceAddress); + } + + public long get_nlMatrixDSPkts() + { + return nlMatrixDSPkts; + } + + public long get_nlMatrixDSOctets() + { + return nlMatrixDSOctets; + } + + public long get_nlMatrixDSCreateTime() + { + return nlMatrixDSCreateTime; + } + +} + diff --git a/test/dumps/jax/NlMatrixDSTable.java b/test/dumps/jax/NlMatrixDSTable.java new file mode 100644 index 0000000..2b89496 --- /dev/null +++ b/test/dumps/jax/NlMatrixDSTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixDSTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlMatrixDSTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlMatrixDSTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1}; + + // constructors + public NlMatrixDSTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public NlMatrixDSTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 4: // nlMatrixDSPkts + { + long value = ((NlMatrixDSEntry)entry).get_nlMatrixDSPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // nlMatrixDSOctets + { + long value = ((NlMatrixDSEntry)entry).get_nlMatrixDSOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // nlMatrixDSCreateTime + { + long value = ((NlMatrixDSEntry)entry).get_nlMatrixDSCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlMatrixSDEntry.java b/test/dumps/jax/NlMatrixSDEntry.java new file mode 100644 index 0000000..2c70fe4 --- /dev/null +++ b/test/dumps/jax/NlMatrixSDEntry.java @@ -0,0 +1,95 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixSDEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlMatrixSDEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixSDEntry extends AgentXEntry +{ + + protected long nlMatrixSDTimeMark = 0; + protected byte[] nlMatrixSDSourceAddress = new byte[0]; + protected byte[] nlMatrixSDDestAddress = new byte[0]; + protected long nlMatrixSDPkts = 0; + protected long nlMatrixSDOctets = 0; + protected long nlMatrixSDCreateTime = 0; + // foreign indices + protected int hlMatrixControlIndex; + protected int protocolDirLocalIndex; + + public NlMatrixSDEntry(int hlMatrixControlIndex, + long nlMatrixSDTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixSDSourceAddress, + byte[] nlMatrixSDDestAddress) + { + this.hlMatrixControlIndex = hlMatrixControlIndex; + this.nlMatrixSDTimeMark = nlMatrixSDTimeMark; + this.protocolDirLocalIndex = protocolDirLocalIndex; + this.nlMatrixSDSourceAddress = nlMatrixSDSourceAddress; + this.nlMatrixSDDestAddress = nlMatrixSDDestAddress; + + instance.append(hlMatrixControlIndex); + instance.append(nlMatrixSDTimeMark); + instance.append(protocolDirLocalIndex); + instance.append(nlMatrixSDSourceAddress); + instance.append(nlMatrixSDDestAddress); + } + + public int get_hlMatrixControlIndex() + { + return hlMatrixControlIndex; + } + + public long get_nlMatrixSDTimeMark() + { + return nlMatrixSDTimeMark; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_nlMatrixSDSourceAddress() + { + return nlMatrixSDSourceAddress; + } + + public byte[] get_nlMatrixSDDestAddress() + { + return nlMatrixSDDestAddress; + } + + public long get_nlMatrixSDPkts() + { + return nlMatrixSDPkts; + } + + public long get_nlMatrixSDOctets() + { + return nlMatrixSDOctets; + } + + public long get_nlMatrixSDCreateTime() + { + return nlMatrixSDCreateTime; + } + +} + diff --git a/test/dumps/jax/NlMatrixSDEntryImpl.java b/test/dumps/jax/NlMatrixSDEntryImpl.java new file mode 100644 index 0000000..9a49368 --- /dev/null +++ b/test/dumps/jax/NlMatrixSDEntryImpl.java @@ -0,0 +1,52 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixSDEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlMatrixSDEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixSDEntryImpl extends NlMatrixSDEntry +{ + + // constructor + public NlMatrixSDEntryImpl(int hlMatrixControlIndex, + long nlMatrixSDTimeMark, + int protocolDirLocalIndex, + byte[] nlMatrixSDSourceAddress, + byte[] nlMatrixSDDestAddress) + { + super(hlMatrixControlIndex, + nlMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, + nlMatrixSDDestAddress); + } + + public long get_nlMatrixSDPkts() + { + return nlMatrixSDPkts; + } + + public long get_nlMatrixSDOctets() + { + return nlMatrixSDOctets; + } + + public long get_nlMatrixSDCreateTime() + { + return nlMatrixSDCreateTime; + } + +} + diff --git a/test/dumps/jax/NlMatrixSDTable.java b/test/dumps/jax/NlMatrixSDTable.java new file mode 100644 index 0000000..5889989 --- /dev/null +++ b/test/dumps/jax/NlMatrixSDTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixSDTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlMatrixSDTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlMatrixSDTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1}; + + // constructors + public NlMatrixSDTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public NlMatrixSDTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 4: // nlMatrixSDPkts + { + long value = ((NlMatrixSDEntry)entry).get_nlMatrixSDPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // nlMatrixSDOctets + { + long value = ((NlMatrixSDEntry)entry).get_nlMatrixSDOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // nlMatrixSDCreateTime + { + long value = ((NlMatrixSDEntry)entry).get_nlMatrixSDCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlMatrixTopNControlEntry.java b/test/dumps/jax/NlMatrixTopNControlEntry.java new file mode 100644 index 0000000..e2af8a2 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNControlEntry.java @@ -0,0 +1,223 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlMatrixTopNControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixTopNControlEntry extends AgentXEntry +{ + + protected int nlMatrixTopNControlIndex = 0; + protected int nlMatrixTopNControlMatrixIndex = 0; + protected int undo_nlMatrixTopNControlMatrixIndex = 0; + protected int nlMatrixTopNControlRateBase = 0; + protected int undo_nlMatrixTopNControlRateBase = 0; + protected int nlMatrixTopNControlTimeRemaining = 0; + protected int undo_nlMatrixTopNControlTimeRemaining = 0; + protected long nlMatrixTopNControlGeneratedReports = 0; + protected int nlMatrixTopNControlDuration = 0; + protected int nlMatrixTopNControlRequestedSize = 0; + protected int undo_nlMatrixTopNControlRequestedSize = 0; + protected int nlMatrixTopNControlGrantedSize = 0; + protected long nlMatrixTopNControlStartTime = 0; + protected byte[] nlMatrixTopNControlOwner = new byte[0]; + protected byte[] undo_nlMatrixTopNControlOwner = new byte[0]; + protected int nlMatrixTopNControlStatus = 0; + protected int undo_nlMatrixTopNControlStatus = 0; + + public NlMatrixTopNControlEntry(int nlMatrixTopNControlIndex) + { + this.nlMatrixTopNControlIndex = nlMatrixTopNControlIndex; + + instance.append(nlMatrixTopNControlIndex); + } + + public int get_nlMatrixTopNControlIndex() + { + return nlMatrixTopNControlIndex; + } + + public int get_nlMatrixTopNControlMatrixIndex() + { + return nlMatrixTopNControlMatrixIndex; + } + + public int set_nlMatrixTopNControlMatrixIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlMatrixIndex = nlMatrixTopNControlMatrixIndex; + nlMatrixTopNControlMatrixIndex = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlMatrixIndex = undo_nlMatrixTopNControlMatrixIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlRateBase() + { + return nlMatrixTopNControlRateBase; + } + + public int set_nlMatrixTopNControlRateBase(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlRateBase = nlMatrixTopNControlRateBase; + nlMatrixTopNControlRateBase = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlRateBase = undo_nlMatrixTopNControlRateBase; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlTimeRemaining() + { + return nlMatrixTopNControlTimeRemaining; + } + + public int set_nlMatrixTopNControlTimeRemaining(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlTimeRemaining = nlMatrixTopNControlTimeRemaining; + nlMatrixTopNControlTimeRemaining = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlTimeRemaining = undo_nlMatrixTopNControlTimeRemaining; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_nlMatrixTopNControlGeneratedReports() + { + return nlMatrixTopNControlGeneratedReports; + } + + public int get_nlMatrixTopNControlDuration() + { + return nlMatrixTopNControlDuration; + } + + public int get_nlMatrixTopNControlRequestedSize() + { + return nlMatrixTopNControlRequestedSize; + } + + public int set_nlMatrixTopNControlRequestedSize(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlRequestedSize = nlMatrixTopNControlRequestedSize; + nlMatrixTopNControlRequestedSize = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlRequestedSize = undo_nlMatrixTopNControlRequestedSize; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlGrantedSize() + { + return nlMatrixTopNControlGrantedSize; + } + + public long get_nlMatrixTopNControlStartTime() + { + return nlMatrixTopNControlStartTime; + } + + public byte[] get_nlMatrixTopNControlOwner() + { + return nlMatrixTopNControlOwner; + } + + public int set_nlMatrixTopNControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlOwner = nlMatrixTopNControlOwner; + nlMatrixTopNControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + nlMatrixTopNControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlOwner = undo_nlMatrixTopNControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_nlMatrixTopNControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlStatus() + { + return nlMatrixTopNControlStatus; + } + + public int set_nlMatrixTopNControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlStatus = nlMatrixTopNControlStatus; + nlMatrixTopNControlStatus = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlStatus = undo_nlMatrixTopNControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/NlMatrixTopNControlEntryImpl.java b/test/dumps/jax/NlMatrixTopNControlEntryImpl.java new file mode 100644 index 0000000..6085328 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNControlEntryImpl.java @@ -0,0 +1,196 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlMatrixTopNControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixTopNControlEntryImpl extends NlMatrixTopNControlEntry +{ + + // constructor + public NlMatrixTopNControlEntryImpl(int nlMatrixTopNControlIndex) + { + super(nlMatrixTopNControlIndex); + } + + public int get_nlMatrixTopNControlMatrixIndex() + { + return nlMatrixTopNControlMatrixIndex; + } + + public int set_nlMatrixTopNControlMatrixIndex(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlMatrixIndex = nlMatrixTopNControlMatrixIndex; + nlMatrixTopNControlMatrixIndex = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlMatrixIndex = undo_nlMatrixTopNControlMatrixIndex; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlRateBase() + { + return nlMatrixTopNControlRateBase; + } + + public int set_nlMatrixTopNControlRateBase(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlRateBase = nlMatrixTopNControlRateBase; + nlMatrixTopNControlRateBase = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlRateBase = undo_nlMatrixTopNControlRateBase; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlTimeRemaining() + { + return nlMatrixTopNControlTimeRemaining; + } + + public int set_nlMatrixTopNControlTimeRemaining(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlTimeRemaining = nlMatrixTopNControlTimeRemaining; + nlMatrixTopNControlTimeRemaining = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlTimeRemaining = undo_nlMatrixTopNControlTimeRemaining; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_nlMatrixTopNControlGeneratedReports() + { + return nlMatrixTopNControlGeneratedReports; + } + + public int get_nlMatrixTopNControlDuration() + { + return nlMatrixTopNControlDuration; + } + + public int get_nlMatrixTopNControlRequestedSize() + { + return nlMatrixTopNControlRequestedSize; + } + + public int set_nlMatrixTopNControlRequestedSize(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlRequestedSize = nlMatrixTopNControlRequestedSize; + nlMatrixTopNControlRequestedSize = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlRequestedSize = undo_nlMatrixTopNControlRequestedSize; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlGrantedSize() + { + return nlMatrixTopNControlGrantedSize; + } + + public long get_nlMatrixTopNControlStartTime() + { + return nlMatrixTopNControlStartTime; + } + + public byte[] get_nlMatrixTopNControlOwner() + { + return nlMatrixTopNControlOwner; + } + + public int set_nlMatrixTopNControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlOwner = nlMatrixTopNControlOwner; + nlMatrixTopNControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + nlMatrixTopNControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlOwner = undo_nlMatrixTopNControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_nlMatrixTopNControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_nlMatrixTopNControlStatus() + { + return nlMatrixTopNControlStatus; + } + + public int set_nlMatrixTopNControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_nlMatrixTopNControlStatus = nlMatrixTopNControlStatus; + nlMatrixTopNControlStatus = value; + break; + case AgentXSetPhase.UNDO: + nlMatrixTopNControlStatus = undo_nlMatrixTopNControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/NlMatrixTopNControlTable.java b/test/dumps/jax/NlMatrixTopNControlTable.java new file mode 100644 index 0000000..51112d7 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNControlTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlMatrixTopNControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlMatrixTopNControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1}; + + // constructors + public NlMatrixTopNControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + } + + public NlMatrixTopNControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + columns.addElement(new Long(11)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // nlMatrixTopNControlMatrixIndex + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlMatrixIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // nlMatrixTopNControlRateBase + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlRateBase(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // nlMatrixTopNControlTimeRemaining + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlTimeRemaining(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // nlMatrixTopNControlGeneratedReports + { + long value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlGeneratedReports(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 6: // nlMatrixTopNControlDuration + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlDuration(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // nlMatrixTopNControlRequestedSize + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlRequestedSize(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // nlMatrixTopNControlGrantedSize + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlGrantedSize(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // nlMatrixTopNControlStartTime + { + long value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlStartTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 10: // nlMatrixTopNControlOwner + { + byte[] value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 11: // nlMatrixTopNControlStatus + { + int value = ((NlMatrixTopNControlEntry)entry).get_nlMatrixTopNControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // nlMatrixTopNControlMatrixIndex + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlMatrixIndex(phase, vb.intValue()); + } + case 3: // nlMatrixTopNControlRateBase + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlRateBase(phase, vb.intValue()); + } + case 4: // nlMatrixTopNControlTimeRemaining + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlTimeRemaining(phase, vb.intValue()); + } + case 7: // nlMatrixTopNControlRequestedSize + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlRequestedSize(phase, vb.intValue()); + } + case 10: // nlMatrixTopNControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlOwner(phase, vb.bytesValue()); + } + case 11: // nlMatrixTopNControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((NlMatrixTopNControlEntry)entry).set_nlMatrixTopNControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/NlMatrixTopNEntry.java b/test/dumps/jax/NlMatrixTopNEntry.java new file mode 100644 index 0000000..4838575 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNEntry.java @@ -0,0 +1,92 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row nlMatrixTopNEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixTopNEntry extends AgentXEntry +{ + + protected int nlMatrixTopNIndex = 0; + protected int nlMatrixTopNProtocolDirLocalIndex = 0; + protected byte[] nlMatrixTopNSourceAddress = new byte[0]; + protected byte[] nlMatrixTopNDestAddress = new byte[0]; + protected long nlMatrixTopNPktRate = 0; + protected long nlMatrixTopNReversePktRate = 0; + protected long nlMatrixTopNOctetRate = 0; + protected long nlMatrixTopNReverseOctetRate = 0; + // foreign indices + protected int nlMatrixTopNControlIndex; + + public NlMatrixTopNEntry(int nlMatrixTopNControlIndex, + int nlMatrixTopNIndex) + { + this.nlMatrixTopNControlIndex = nlMatrixTopNControlIndex; + this.nlMatrixTopNIndex = nlMatrixTopNIndex; + + instance.append(nlMatrixTopNControlIndex); + instance.append(nlMatrixTopNIndex); + } + + public int get_nlMatrixTopNControlIndex() + { + return nlMatrixTopNControlIndex; + } + + public int get_nlMatrixTopNIndex() + { + return nlMatrixTopNIndex; + } + + public int get_nlMatrixTopNProtocolDirLocalIndex() + { + return nlMatrixTopNProtocolDirLocalIndex; + } + + public byte[] get_nlMatrixTopNSourceAddress() + { + return nlMatrixTopNSourceAddress; + } + + public byte[] get_nlMatrixTopNDestAddress() + { + return nlMatrixTopNDestAddress; + } + + public long get_nlMatrixTopNPktRate() + { + return nlMatrixTopNPktRate; + } + + public long get_nlMatrixTopNReversePktRate() + { + return nlMatrixTopNReversePktRate; + } + + public long get_nlMatrixTopNOctetRate() + { + return nlMatrixTopNOctetRate; + } + + public long get_nlMatrixTopNReverseOctetRate() + { + return nlMatrixTopNReverseOctetRate; + } + +} + diff --git a/test/dumps/jax/NlMatrixTopNEntryImpl.java b/test/dumps/jax/NlMatrixTopNEntryImpl.java new file mode 100644 index 0000000..1279be6 --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNEntryImpl.java @@ -0,0 +1,66 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row nlMatrixTopNEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class NlMatrixTopNEntryImpl extends NlMatrixTopNEntry +{ + + // constructor + public NlMatrixTopNEntryImpl(int nlMatrixTopNControlIndex, + int nlMatrixTopNIndex) + { + super(nlMatrixTopNControlIndex, + nlMatrixTopNIndex); + } + + public int get_nlMatrixTopNProtocolDirLocalIndex() + { + return nlMatrixTopNProtocolDirLocalIndex; + } + + public byte[] get_nlMatrixTopNSourceAddress() + { + return nlMatrixTopNSourceAddress; + } + + public byte[] get_nlMatrixTopNDestAddress() + { + return nlMatrixTopNDestAddress; + } + + public long get_nlMatrixTopNPktRate() + { + return nlMatrixTopNPktRate; + } + + public long get_nlMatrixTopNReversePktRate() + { + return nlMatrixTopNReversePktRate; + } + + public long get_nlMatrixTopNOctetRate() + { + return nlMatrixTopNOctetRate; + } + + public long get_nlMatrixTopNReverseOctetRate() + { + return nlMatrixTopNReverseOctetRate; + } + +} + diff --git a/test/dumps/jax/NlMatrixTopNTable.java b/test/dumps/jax/NlMatrixTopNTable.java new file mode 100644 index 0000000..9eab50a --- /dev/null +++ b/test/dumps/jax/NlMatrixTopNTable.java @@ -0,0 +1,121 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: NlMatrixTopNTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table nlMatrixTopNTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class NlMatrixTopNTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1}; + + // constructors + public NlMatrixTopNTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + } + + public NlMatrixTopNTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // nlMatrixTopNProtocolDirLocalIndex + { + int value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNProtocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // nlMatrixTopNSourceAddress + { + byte[] value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNSourceAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 4: // nlMatrixTopNDestAddress + { + byte[] value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNDestAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // nlMatrixTopNPktRate + { + long value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNPktRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 6: // nlMatrixTopNReversePktRate + { + long value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNReversePktRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 7: // nlMatrixTopNOctetRate + { + long value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNOctetRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 8: // nlMatrixTopNReverseOctetRate + { + long value = ((NlMatrixTopNEntry)entry).get_nlMatrixTopNReverseOctetRate(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/ProbeConfig.java b/test/dumps/jax/ProbeConfig.java new file mode 100644 index 0000000..863228a --- /dev/null +++ b/test/dumps/jax/ProbeConfig.java @@ -0,0 +1,328 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProbeConfig.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group probeConfig defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class ProbeConfig extends AgentXScalars +{ + + private final static long[] ProbeConfigOID = {1, 3, 6, 1, 2, 1, 16, 19}; + + protected AgentXOID ProbeCapabilitiesOID; + protected final static long[] ProbeCapabilitiesName = {1, 3, 6, 1, 2, 1, 16, 19, 1, 0}; + protected byte[] probeCapabilities = new byte[0]; + protected AgentXOID ProbeSoftwareRevOID; + protected final static long[] ProbeSoftwareRevName = {1, 3, 6, 1, 2, 1, 16, 19, 2, 0}; + protected byte[] probeSoftwareRev = new byte[0]; + protected AgentXOID ProbeHardwareRevOID; + protected final static long[] ProbeHardwareRevName = {1, 3, 6, 1, 2, 1, 16, 19, 3, 0}; + protected byte[] probeHardwareRev = new byte[0]; + protected AgentXOID ProbeDateTimeOID; + protected final static long[] ProbeDateTimeName = {1, 3, 6, 1, 2, 1, 16, 19, 4, 0}; + protected byte[] probeDateTime = new byte[0]; + protected byte[] undo_probeDateTime = new byte[0]; + protected AgentXOID ProbeResetControlOID; + protected final static long[] ProbeResetControlName = {1, 3, 6, 1, 2, 1, 16, 19, 5, 0}; + protected int probeResetControl = 0; + protected int undo_probeResetControl = 0; + protected AgentXOID ProbeDownloadFileOID; + protected final static long[] ProbeDownloadFileName = {1, 3, 6, 1, 2, 1, 16, 19, 6, 0}; + protected byte[] probeDownloadFile = new byte[0]; + protected byte[] undo_probeDownloadFile = new byte[0]; + protected AgentXOID ProbeDownloadTFTPServerOID; + protected final static long[] ProbeDownloadTFTPServerName = {1, 3, 6, 1, 2, 1, 16, 19, 7, 0}; + protected byte[] probeDownloadTFTPServer = new byte[4]; + protected byte[] undo_probeDownloadTFTPServer = new byte[4]; + protected AgentXOID ProbeDownloadActionOID; + protected final static long[] ProbeDownloadActionName = {1, 3, 6, 1, 2, 1, 16, 19, 8, 0}; + protected int probeDownloadAction = 0; + protected int undo_probeDownloadAction = 0; + protected AgentXOID ProbeDownloadStatusOID; + protected final static long[] ProbeDownloadStatusName = {1, 3, 6, 1, 2, 1, 16, 19, 9, 0}; + protected int probeDownloadStatus = 0; + public ProbeConfig() + { + oid = new AgentXOID(ProbeConfigOID); + data = new Vector(); + ProbeCapabilitiesOID = new AgentXOID(ProbeCapabilitiesName); + data.addElement(ProbeCapabilitiesOID); + ProbeSoftwareRevOID = new AgentXOID(ProbeSoftwareRevName); + data.addElement(ProbeSoftwareRevOID); + ProbeHardwareRevOID = new AgentXOID(ProbeHardwareRevName); + data.addElement(ProbeHardwareRevOID); + ProbeDateTimeOID = new AgentXOID(ProbeDateTimeName); + data.addElement(ProbeDateTimeOID); + ProbeResetControlOID = new AgentXOID(ProbeResetControlName); + data.addElement(ProbeResetControlOID); + ProbeDownloadFileOID = new AgentXOID(ProbeDownloadFileName); + data.addElement(ProbeDownloadFileOID); + ProbeDownloadTFTPServerOID = new AgentXOID(ProbeDownloadTFTPServerName); + data.addElement(ProbeDownloadTFTPServerOID); + ProbeDownloadActionOID = new AgentXOID(ProbeDownloadActionName); + data.addElement(ProbeDownloadActionOID); + ProbeDownloadStatusOID = new AgentXOID(ProbeDownloadStatusName); + data.addElement(ProbeDownloadStatusOID); + } + + public byte[] get_probeCapabilities() + { + return probeCapabilities; + } + + public byte[] get_probeSoftwareRev() + { + return probeSoftwareRev; + } + + public byte[] get_probeHardwareRev() + { + return probeHardwareRev; + } + + public byte[] get_probeDateTime() + { + return probeDateTime; + } + + public int set_probeDateTime(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDateTime = probeDateTime; + probeDateTime = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDateTime[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDateTime = undo_probeDateTime; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDateTime = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_probeResetControl() + { + return probeResetControl; + } + + public int set_probeResetControl(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeResetControl = probeResetControl; + probeResetControl = value; + break; + case AgentXSetPhase.UNDO: + probeResetControl = undo_probeResetControl; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_probeDownloadFile() + { + return probeDownloadFile; + } + + public int set_probeDownloadFile(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadFile = probeDownloadFile; + probeDownloadFile = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDownloadFile[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDownloadFile = undo_probeDownloadFile; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadFile = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_probeDownloadTFTPServer() + { + return probeDownloadTFTPServer; + } + + public int set_probeDownloadTFTPServer(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadTFTPServer = probeDownloadTFTPServer; + probeDownloadTFTPServer = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDownloadTFTPServer[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDownloadTFTPServer = undo_probeDownloadTFTPServer; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadTFTPServer = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_probeDownloadAction() + { + return probeDownloadAction; + } + + public int set_probeDownloadAction(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadAction = probeDownloadAction; + probeDownloadAction = value; + break; + case AgentXSetPhase.UNDO: + probeDownloadAction = undo_probeDownloadAction; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_probeDownloadStatus() + { + return probeDownloadStatus; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == ProbeCapabilitiesOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeCapabilities()); + if (pos == ProbeSoftwareRevOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeSoftwareRev()); + if (pos == ProbeHardwareRevOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeHardwareRev()); + if (pos == ProbeDateTimeOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeDateTime()); + if (pos == ProbeResetControlOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_probeResetControl()); + if (pos == ProbeDownloadFileOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_probeDownloadFile()); + if (pos == ProbeDownloadTFTPServerOID) + return new AgentXVarBind(oid, AgentXVarBind.IPADDRESS, + get_probeDownloadTFTPServer()); + if (pos == ProbeDownloadActionOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_probeDownloadAction()); + if (pos == ProbeDownloadStatusOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_probeDownloadStatus()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == ProbeDateTimeOID) + return set_probeDateTime(phase, inVb.bytesValue()); + if (pos == ProbeResetControlOID) + return set_probeResetControl(phase, inVb.intValue()); + if (pos == ProbeDownloadFileOID) + return set_probeDownloadFile(phase, inVb.bytesValue()); + if (pos == ProbeDownloadTFTPServerOID) + return set_probeDownloadTFTPServer(phase, inVb.bytesValue()); + if (pos == ProbeDownloadActionOID) + return set_probeDownloadAction(phase, inVb.intValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == ProbeCapabilitiesOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeCapabilities()); + if (pos == ProbeSoftwareRevOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeSoftwareRev()); + if (pos == ProbeHardwareRevOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeHardwareRev()); + if (pos == ProbeDateTimeOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeDateTime()); + if (pos == ProbeResetControlOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_probeResetControl()); + if (pos == ProbeDownloadFileOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_probeDownloadFile()); + if (pos == ProbeDownloadTFTPServerOID) + return new AgentXVarBind(pos, AgentXVarBind.IPADDRESS, + get_probeDownloadTFTPServer()); + if (pos == ProbeDownloadActionOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_probeDownloadAction()); + if (pos == ProbeDownloadStatusOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_probeDownloadStatus()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/ProbeConfigImpl.java b/test/dumps/jax/ProbeConfigImpl.java new file mode 100644 index 0000000..9f3ee71 --- /dev/null +++ b/test/dumps/jax/ProbeConfigImpl.java @@ -0,0 +1,180 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProbeConfigImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group probeConfig defined in RMON2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class ProbeConfigImpl extends ProbeConfig +{ + + public byte[] get_probeCapabilities() + { + return probeCapabilities; + } + + public byte[] get_probeSoftwareRev() + { + return probeSoftwareRev; + } + + public byte[] get_probeHardwareRev() + { + return probeHardwareRev; + } + + public byte[] get_probeDateTime() + { + return probeDateTime; + } + + public int set_probeDateTime(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDateTime = probeDateTime; + probeDateTime = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDateTime[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDateTime = undo_probeDateTime; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDateTime = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public int get_probeResetControl() + { + return probeResetControl; + } + + public int set_probeResetControl(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeResetControl = probeResetControl; + probeResetControl = value; + break; + case AgentXSetPhase.UNDO: + probeResetControl = undo_probeResetControl; + break; + case AgentXSetPhase.CLEANUP: + undo_probeResetControl = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public byte[] get_probeDownloadFile() + { + return probeDownloadFile; + } + + public int set_probeDownloadFile(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadFile = probeDownloadFile; + probeDownloadFile = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDownloadFile[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDownloadFile = undo_probeDownloadFile; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadFile = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public byte[] get_probeDownloadTFTPServer() + { + return probeDownloadTFTPServer; + } + + public int set_probeDownloadTFTPServer(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadTFTPServer = probeDownloadTFTPServer; + probeDownloadTFTPServer = new byte[value.length]; + for(int i = 0; i < value.length; i++) + probeDownloadTFTPServer[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + probeDownloadTFTPServer = undo_probeDownloadTFTPServer; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadTFTPServer = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public int get_probeDownloadAction() + { + return probeDownloadAction; + } + + public int set_probeDownloadAction(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_probeDownloadAction = probeDownloadAction; + probeDownloadAction = value; + break; + case AgentXSetPhase.UNDO: + probeDownloadAction = undo_probeDownloadAction; + break; + case AgentXSetPhase.CLEANUP: + undo_probeDownloadAction = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public int get_probeDownloadStatus() + { + return probeDownloadStatus; + } + +} + diff --git a/test/dumps/jax/ProtocolDir.java b/test/dumps/jax/ProtocolDir.java new file mode 100644 index 0000000..480fd28 --- /dev/null +++ b/test/dumps/jax/ProtocolDir.java @@ -0,0 +1,81 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDir.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group protocolDir defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class ProtocolDir extends AgentXScalars +{ + + private final static long[] ProtocolDirOID = {1, 3, 6, 1, 2, 1, 16, 11}; + + protected AgentXOID ProtocolDirLastChangeOID; + protected final static long[] ProtocolDirLastChangeName = {1, 3, 6, 1, 2, 1, 16, 11, 1, 0}; + protected long protocolDirLastChange = 0; + public ProtocolDir() + { + oid = new AgentXOID(ProtocolDirOID); + data = new Vector(); + ProtocolDirLastChangeOID = new AgentXOID(ProtocolDirLastChangeName); + data.addElement(ProtocolDirLastChangeOID); + } + + public long get_protocolDirLastChange() + { + return protocolDirLastChange; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == ProtocolDirLastChangeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_protocolDirLastChange()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == ProtocolDirLastChangeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_protocolDirLastChange()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/ProtocolDirEntry.java b/test/dumps/jax/ProtocolDirEntry.java new file mode 100644 index 0000000..b7b2cf5 --- /dev/null +++ b/test/dumps/jax/ProtocolDirEntry.java @@ -0,0 +1,223 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDirEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row protocolDirEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDirEntry extends AgentXEntry +{ + + protected byte[] protocolDirID = new byte[0]; + protected byte[] protocolDirParameters = new byte[0]; + protected int protocolDirLocalIndex = 0; + protected byte[] protocolDirDescr = new byte[0]; + protected byte[] undo_protocolDirDescr = new byte[0]; + protected byte[] protocolDirType = new byte[0]; + protected int protocolDirAddressMapConfig = 0; + protected int undo_protocolDirAddressMapConfig = 0; + protected int protocolDirHostConfig = 0; + protected int undo_protocolDirHostConfig = 0; + protected int protocolDirMatrixConfig = 0; + protected int undo_protocolDirMatrixConfig = 0; + protected byte[] protocolDirOwner = new byte[0]; + protected byte[] undo_protocolDirOwner = new byte[0]; + protected int protocolDirStatus = 0; + protected int undo_protocolDirStatus = 0; + + public ProtocolDirEntry(byte[] protocolDirID, + byte[] protocolDirParameters) + { + this.protocolDirID = protocolDirID; + this.protocolDirParameters = protocolDirParameters; + + instance.append(protocolDirID); + instance.append(protocolDirParameters); + } + + public byte[] get_protocolDirID() + { + return protocolDirID; + } + + public byte[] get_protocolDirParameters() + { + return protocolDirParameters; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_protocolDirDescr() + { + return protocolDirDescr; + } + + public int set_protocolDirDescr(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirDescr = protocolDirDescr; + protocolDirDescr = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDirDescr[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDirDescr = undo_protocolDirDescr; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDirDescr = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_protocolDirType() + { + return protocolDirType; + } + + public int get_protocolDirAddressMapConfig() + { + return protocolDirAddressMapConfig; + } + + public int set_protocolDirAddressMapConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirAddressMapConfig = protocolDirAddressMapConfig; + protocolDirAddressMapConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirAddressMapConfig = undo_protocolDirAddressMapConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirHostConfig() + { + return protocolDirHostConfig; + } + + public int set_protocolDirHostConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirHostConfig = protocolDirHostConfig; + protocolDirHostConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirHostConfig = undo_protocolDirHostConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirMatrixConfig() + { + return protocolDirMatrixConfig; + } + + public int set_protocolDirMatrixConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirMatrixConfig = protocolDirMatrixConfig; + protocolDirMatrixConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirMatrixConfig = undo_protocolDirMatrixConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_protocolDirOwner() + { + return protocolDirOwner; + } + + public int set_protocolDirOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirOwner = protocolDirOwner; + protocolDirOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDirOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDirOwner = undo_protocolDirOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDirOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirStatus() + { + return protocolDirStatus; + } + + public int set_protocolDirStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirStatus = protocolDirStatus; + protocolDirStatus = value; + break; + case AgentXSetPhase.UNDO: + protocolDirStatus = undo_protocolDirStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/ProtocolDirEntryImpl.java b/test/dumps/jax/ProtocolDirEntryImpl.java new file mode 100644 index 0000000..eb324a4 --- /dev/null +++ b/test/dumps/jax/ProtocolDirEntryImpl.java @@ -0,0 +1,191 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDirEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row protocolDirEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDirEntryImpl extends ProtocolDirEntry +{ + + // constructor + public ProtocolDirEntryImpl(byte[] protocolDirID, + byte[] protocolDirParameters) + { + super(protocolDirID, + protocolDirParameters); + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public byte[] get_protocolDirDescr() + { + return protocolDirDescr; + } + + public int set_protocolDirDescr(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirDescr = protocolDirDescr; + protocolDirDescr = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDirDescr[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDirDescr = undo_protocolDirDescr; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDirDescr = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_protocolDirType() + { + return protocolDirType; + } + + public int get_protocolDirAddressMapConfig() + { + return protocolDirAddressMapConfig; + } + + public int set_protocolDirAddressMapConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirAddressMapConfig = protocolDirAddressMapConfig; + protocolDirAddressMapConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirAddressMapConfig = undo_protocolDirAddressMapConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirHostConfig() + { + return protocolDirHostConfig; + } + + public int set_protocolDirHostConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirHostConfig = protocolDirHostConfig; + protocolDirHostConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirHostConfig = undo_protocolDirHostConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirMatrixConfig() + { + return protocolDirMatrixConfig; + } + + public int set_protocolDirMatrixConfig(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirMatrixConfig = protocolDirMatrixConfig; + protocolDirMatrixConfig = value; + break; + case AgentXSetPhase.UNDO: + protocolDirMatrixConfig = undo_protocolDirMatrixConfig; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_protocolDirOwner() + { + return protocolDirOwner; + } + + public int set_protocolDirOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirOwner = protocolDirOwner; + protocolDirOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDirOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDirOwner = undo_protocolDirOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDirOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDirStatus() + { + return protocolDirStatus; + } + + public int set_protocolDirStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDirStatus = protocolDirStatus; + protocolDirStatus = value; + break; + case AgentXSetPhase.UNDO: + protocolDirStatus = undo_protocolDirStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/ProtocolDirImpl.java b/test/dumps/jax/ProtocolDirImpl.java new file mode 100644 index 0000000..d93a2a8 --- /dev/null +++ b/test/dumps/jax/ProtocolDirImpl.java @@ -0,0 +1,29 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDirImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group protocolDir defined in RMON2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class ProtocolDirImpl extends ProtocolDir +{ + + public long get_protocolDirLastChange() + { + return protocolDirLastChange; + } + +} + diff --git a/test/dumps/jax/ProtocolDirTable.java b/test/dumps/jax/ProtocolDirTable.java new file mode 100644 index 0000000..f28cc82 --- /dev/null +++ b/test/dumps/jax/ProtocolDirTable.java @@ -0,0 +1,170 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDirTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table protocolDirTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class ProtocolDirTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1}; + + // constructors + public ProtocolDirTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + } + + public ProtocolDirTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 3: // protocolDirLocalIndex + { + int value = ((ProtocolDirEntry)entry).get_protocolDirLocalIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // protocolDirDescr + { + byte[] value = ((ProtocolDirEntry)entry).get_protocolDirDescr(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // protocolDirType + { + byte[] value = ((ProtocolDirEntry)entry).get_protocolDirType(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // protocolDirAddressMapConfig + { + int value = ((ProtocolDirEntry)entry).get_protocolDirAddressMapConfig(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // protocolDirHostConfig + { + int value = ((ProtocolDirEntry)entry).get_protocolDirHostConfig(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 8: // protocolDirMatrixConfig + { + int value = ((ProtocolDirEntry)entry).get_protocolDirMatrixConfig(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // protocolDirOwner + { + byte[] value = ((ProtocolDirEntry)entry).get_protocolDirOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 10: // protocolDirStatus + { + int value = ((ProtocolDirEntry)entry).get_protocolDirStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 4: // protocolDirDescr + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirDescr(phase, vb.bytesValue()); + } + case 6: // protocolDirAddressMapConfig + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirAddressMapConfig(phase, vb.intValue()); + } + case 7: // protocolDirHostConfig + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirHostConfig(phase, vb.intValue()); + } + case 8: // protocolDirMatrixConfig + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirMatrixConfig(phase, vb.intValue()); + } + case 9: // protocolDirOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirOwner(phase, vb.bytesValue()); + } + case 10: // protocolDirStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDirEntry)entry).set_protocolDirStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/ProtocolDistControlEntry.java b/test/dumps/jax/ProtocolDistControlEntry.java new file mode 100644 index 0000000..8c24706 --- /dev/null +++ b/test/dumps/jax/ProtocolDistControlEntry.java @@ -0,0 +1,133 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row protocolDistControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDistControlEntry extends AgentXEntry +{ + + protected int protocolDistControlIndex = 0; + protected AgentXOID protocolDistControlDataSource = new AgentXOID(); + protected AgentXOID undo_protocolDistControlDataSource = new AgentXOID(); + protected long protocolDistControlDroppedFrames = 0; + protected long protocolDistControlCreateTime = 0; + protected byte[] protocolDistControlOwner = new byte[0]; + protected byte[] undo_protocolDistControlOwner = new byte[0]; + protected int protocolDistControlStatus = 0; + protected int undo_protocolDistControlStatus = 0; + + public ProtocolDistControlEntry(int protocolDistControlIndex) + { + this.protocolDistControlIndex = protocolDistControlIndex; + + instance.append(protocolDistControlIndex); + } + + public int get_protocolDistControlIndex() + { + return protocolDistControlIndex; + } + + public AgentXOID get_protocolDistControlDataSource() + { + return protocolDistControlDataSource; + } + + public int set_protocolDistControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlDataSource = protocolDistControlDataSource; + protocolDistControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + protocolDistControlDataSource = undo_protocolDistControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_protocolDistControlDroppedFrames() + { + return protocolDistControlDroppedFrames; + } + + public long get_protocolDistControlCreateTime() + { + return protocolDistControlCreateTime; + } + + public byte[] get_protocolDistControlOwner() + { + return protocolDistControlOwner; + } + + public int set_protocolDistControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlOwner = protocolDistControlOwner; + protocolDistControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDistControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDistControlOwner = undo_protocolDistControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDistControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDistControlStatus() + { + return protocolDistControlStatus; + } + + public int set_protocolDistControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlStatus = protocolDistControlStatus; + protocolDistControlStatus = value; + break; + case AgentXSetPhase.UNDO: + protocolDistControlStatus = undo_protocolDistControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/ProtocolDistControlEntryImpl.java b/test/dumps/jax/ProtocolDistControlEntryImpl.java new file mode 100644 index 0000000..97eaec4 --- /dev/null +++ b/test/dumps/jax/ProtocolDistControlEntryImpl.java @@ -0,0 +1,114 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row protocolDistControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDistControlEntryImpl extends ProtocolDistControlEntry +{ + + // constructor + public ProtocolDistControlEntryImpl(int protocolDistControlIndex) + { + super(protocolDistControlIndex); + } + + public AgentXOID get_protocolDistControlDataSource() + { + return protocolDistControlDataSource; + } + + public int set_protocolDistControlDataSource(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlDataSource = protocolDistControlDataSource; + protocolDistControlDataSource = value; + break; + case AgentXSetPhase.UNDO: + protocolDistControlDataSource = undo_protocolDistControlDataSource; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_protocolDistControlDroppedFrames() + { + return protocolDistControlDroppedFrames; + } + + public long get_protocolDistControlCreateTime() + { + return protocolDistControlCreateTime; + } + + public byte[] get_protocolDistControlOwner() + { + return protocolDistControlOwner; + } + + public int set_protocolDistControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlOwner = protocolDistControlOwner; + protocolDistControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + protocolDistControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + protocolDistControlOwner = undo_protocolDistControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_protocolDistControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_protocolDistControlStatus() + { + return protocolDistControlStatus; + } + + public int set_protocolDistControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_protocolDistControlStatus = protocolDistControlStatus; + protocolDistControlStatus = value; + break; + case AgentXSetPhase.UNDO: + protocolDistControlStatus = undo_protocolDistControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/ProtocolDistControlTable.java b/test/dumps/jax/ProtocolDistControlTable.java new file mode 100644 index 0000000..aeca05f --- /dev/null +++ b/test/dumps/jax/ProtocolDistControlTable.java @@ -0,0 +1,128 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table protocolDistControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class ProtocolDistControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1}; + + // constructors + public ProtocolDistControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public ProtocolDistControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // protocolDistControlDataSource + { + AgentXOID value = ((ProtocolDistControlEntry)entry).get_protocolDistControlDataSource(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // protocolDistControlDroppedFrames + { + long value = ((ProtocolDistControlEntry)entry).get_protocolDistControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 4: // protocolDistControlCreateTime + { + long value = ((ProtocolDistControlEntry)entry).get_protocolDistControlCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 5: // protocolDistControlOwner + { + byte[] value = ((ProtocolDistControlEntry)entry).get_protocolDistControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // protocolDistControlStatus + { + int value = ((ProtocolDistControlEntry)entry).get_protocolDistControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // protocolDistControlDataSource + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDistControlEntry)entry).set_protocolDistControlDataSource(phase, vb.AgentXOIDValue()); + } + case 5: // protocolDistControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDistControlEntry)entry).set_protocolDistControlOwner(phase, vb.bytesValue()); + } + case 6: // protocolDistControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((ProtocolDistControlEntry)entry).set_protocolDistControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/ProtocolDistStatsEntry.java b/test/dumps/jax/ProtocolDistStatsEntry.java new file mode 100644 index 0000000..6e3a3a7 --- /dev/null +++ b/test/dumps/jax/ProtocolDistStatsEntry.java @@ -0,0 +1,62 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistStatsEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row protocolDistStatsEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDistStatsEntry extends AgentXEntry +{ + + protected long protocolDistStatsPkts = 0; + protected long protocolDistStatsOctets = 0; + // foreign indices + protected int protocolDistControlIndex; + protected int protocolDirLocalIndex; + + public ProtocolDistStatsEntry(int protocolDistControlIndex, + int protocolDirLocalIndex) + { + this.protocolDistControlIndex = protocolDistControlIndex; + this.protocolDirLocalIndex = protocolDirLocalIndex; + + instance.append(protocolDistControlIndex); + instance.append(protocolDirLocalIndex); + } + + public int get_protocolDistControlIndex() + { + return protocolDistControlIndex; + } + + public int get_protocolDirLocalIndex() + { + return protocolDirLocalIndex; + } + + public long get_protocolDistStatsPkts() + { + return protocolDistStatsPkts; + } + + public long get_protocolDistStatsOctets() + { + return protocolDistStatsOctets; + } + +} + diff --git a/test/dumps/jax/ProtocolDistStatsEntryImpl.java b/test/dumps/jax/ProtocolDistStatsEntryImpl.java new file mode 100644 index 0000000..3d2b7e3 --- /dev/null +++ b/test/dumps/jax/ProtocolDistStatsEntryImpl.java @@ -0,0 +1,41 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistStatsEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row protocolDistStatsEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class ProtocolDistStatsEntryImpl extends ProtocolDistStatsEntry +{ + + // constructor + public ProtocolDistStatsEntryImpl(int protocolDistControlIndex, + int protocolDirLocalIndex) + { + super(protocolDistControlIndex, + protocolDirLocalIndex); + } + + public long get_protocolDistStatsPkts() + { + return protocolDistStatsPkts; + } + + public long get_protocolDistStatsOctets() + { + return protocolDistStatsOctets; + } + +} + diff --git a/test/dumps/jax/ProtocolDistStatsTable.java b/test/dumps/jax/ProtocolDistStatsTable.java new file mode 100644 index 0000000..b51429c --- /dev/null +++ b/test/dumps/jax/ProtocolDistStatsTable.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: ProtocolDistStatsTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table protocolDistStatsTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class ProtocolDistStatsTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 12, 2, 1}; + + // constructors + public ProtocolDistStatsTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public ProtocolDistStatsTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // protocolDistStatsPkts + { + long value = ((ProtocolDistStatsEntry)entry).get_protocolDistStatsPkts(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 2: // protocolDistStatsOctets + { + long value = ((ProtocolDistStatsEntry)entry).get_protocolDistStatsOctets(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/RingStationControl2Entry.java b/test/dumps/jax/RingStationControl2Entry.java new file mode 100644 index 0000000..f92e4b3 --- /dev/null +++ b/test/dumps/jax/RingStationControl2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RingStationControl2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row ringStationControl2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RingStationControl2Entry extends AgentXEntry +{ + + protected long ringStationControlDroppedFrames = 0; + protected long ringStationControlCreateTime = 0; + + public RingStationControl2Entry() + { + + } + + public long get_ringStationControlDroppedFrames() + { + return ringStationControlDroppedFrames; + } + + public long get_ringStationControlCreateTime() + { + return ringStationControlCreateTime; + } + +} + diff --git a/test/dumps/jax/RingStationControl2EntryImpl.java b/test/dumps/jax/RingStationControl2EntryImpl.java new file mode 100644 index 0000000..acd6be9 --- /dev/null +++ b/test/dumps/jax/RingStationControl2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: RingStationControl2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row ringStationControl2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RingStationControl2EntryImpl extends RingStationControl2Entry +{ + + // constructor + public RingStationControl2EntryImpl() + { + super(); + } + + public long get_ringStationControlDroppedFrames() + { + return ringStationControlDroppedFrames; + } + + public long get_ringStationControlCreateTime() + { + return ringStationControlCreateTime; + } + +} + diff --git a/test/dumps/jax/RingStationControl2Table.java b/test/dumps/jax/RingStationControl2Table.java new file mode 100644 index 0000000..570c923 --- /dev/null +++ b/test/dumps/jax/RingStationControl2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RingStationControl2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table ringStationControl2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class RingStationControl2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 10, 7, 1}; + + // constructors + public RingStationControl2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public RingStationControl2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // ringStationControlDroppedFrames + { + long value = ((RingStationControl2Entry)entry).get_ringStationControlDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // ringStationControlCreateTime + { + long value = ((RingStationControl2Entry)entry).get_ringStationControlCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/RpJackEntry.java b/test/dumps/jax/RpJackEntry.java new file mode 100644 index 0000000..2a605f4 --- /dev/null +++ b/test/dumps/jax/RpJackEntry.java @@ -0,0 +1,74 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpJackEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row rpJackEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RpJackEntry extends AgentXEntry +{ + + protected int rpJackIndex = 0; + protected int rpJackType = 0; + // foreign indices + protected int rpMauGroupIndex; + protected int rpMauPortIndex; + protected int rpMauIndex; + + public RpJackEntry(int rpMauGroupIndex, + int rpMauPortIndex, + int rpMauIndex, + int rpJackIndex) + { + this.rpMauGroupIndex = rpMauGroupIndex; + this.rpMauPortIndex = rpMauPortIndex; + this.rpMauIndex = rpMauIndex; + this.rpJackIndex = rpJackIndex; + + instance.append(rpMauGroupIndex); + instance.append(rpMauPortIndex); + instance.append(rpMauIndex); + instance.append(rpJackIndex); + } + + public int get_rpMauGroupIndex() + { + return rpMauGroupIndex; + } + + public int get_rpMauPortIndex() + { + return rpMauPortIndex; + } + + public int get_rpMauIndex() + { + return rpMauIndex; + } + + public int get_rpJackIndex() + { + return rpJackIndex; + } + + public int get_rpJackType() + { + return rpJackType; + } + +} + diff --git a/test/dumps/jax/RpJackEntryImpl.java b/test/dumps/jax/RpJackEntryImpl.java new file mode 100644 index 0000000..d7b6a9c --- /dev/null +++ b/test/dumps/jax/RpJackEntryImpl.java @@ -0,0 +1,40 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: RpJackEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row rpJackEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RpJackEntryImpl extends RpJackEntry +{ + + // constructor + public RpJackEntryImpl(int rpMauGroupIndex, + int rpMauPortIndex, + int rpMauIndex, + int rpJackIndex) + { + super(rpMauGroupIndex, + rpMauPortIndex, + rpMauIndex, + rpJackIndex); + } + + public int get_rpJackType() + { + return rpJackType; + } + +} + diff --git a/test/dumps/jax/RpJackTable.java b/test/dumps/jax/RpJackTable.java new file mode 100644 index 0000000..a8cf9d4 --- /dev/null +++ b/test/dumps/jax/RpJackTable.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpJackTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table rpJackTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class RpJackTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 1, 2, 1}; + + // constructors + public RpJackTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + } + + public RpJackTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // rpJackType + { + int value = ((RpJackEntry)entry).get_rpJackType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/RpMauEntry.java b/test/dumps/jax/RpMauEntry.java new file mode 100644 index 0000000..6640173 --- /dev/null +++ b/test/dumps/jax/RpMauEntry.java @@ -0,0 +1,120 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpMauEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row rpMauEntry defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RpMauEntry extends AgentXEntry +{ + + protected int rpMauGroupIndex = 0; + protected int rpMauPortIndex = 0; + protected int rpMauIndex = 0; + protected AgentXOID rpMauType = new AgentXOID(); + protected int rpMauStatus = 0; + protected int undo_rpMauStatus = 0; + protected int rpMauMediaAvailable = 0; + protected long rpMauMediaAvailableStateExits = 0; + protected int rpMauJabberState = 0; + protected long rpMauJabberingStateEnters = 0; + protected long rpMauFalseCarriers = 0; + + public RpMauEntry(int rpMauGroupIndex, + int rpMauPortIndex, + int rpMauIndex) + { + this.rpMauGroupIndex = rpMauGroupIndex; + this.rpMauPortIndex = rpMauPortIndex; + this.rpMauIndex = rpMauIndex; + + instance.append(rpMauGroupIndex); + instance.append(rpMauPortIndex); + instance.append(rpMauIndex); + } + + public int get_rpMauGroupIndex() + { + return rpMauGroupIndex; + } + + public int get_rpMauPortIndex() + { + return rpMauPortIndex; + } + + public int get_rpMauIndex() + { + return rpMauIndex; + } + + public AgentXOID get_rpMauType() + { + return rpMauType; + } + + public int get_rpMauStatus() + { + return rpMauStatus; + } + + public int set_rpMauStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_rpMauStatus = rpMauStatus; + rpMauStatus = value; + break; + case AgentXSetPhase.UNDO: + rpMauStatus = undo_rpMauStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_rpMauMediaAvailable() + { + return rpMauMediaAvailable; + } + + public long get_rpMauMediaAvailableStateExits() + { + return rpMauMediaAvailableStateExits; + } + + public int get_rpMauJabberState() + { + return rpMauJabberState; + } + + public long get_rpMauJabberingStateEnters() + { + return rpMauJabberingStateEnters; + } + + public long get_rpMauFalseCarriers() + { + return rpMauFalseCarriers; + } + +} + diff --git a/test/dumps/jax/RpMauEntryImpl.java b/test/dumps/jax/RpMauEntryImpl.java new file mode 100644 index 0000000..23e9480 --- /dev/null +++ b/test/dumps/jax/RpMauEntryImpl.java @@ -0,0 +1,102 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: RpMauEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row rpMauEntry defined in MAU-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class RpMauEntryImpl extends RpMauEntry +{ + + // constructor + public RpMauEntryImpl(int rpMauGroupIndex, + int rpMauPortIndex, + int rpMauIndex) + { + super(rpMauGroupIndex, + rpMauPortIndex, + rpMauIndex); + } + + public int get_rpMauGroupIndex() + { + return rpMauGroupIndex; + } + + public int get_rpMauPortIndex() + { + return rpMauPortIndex; + } + + public int get_rpMauIndex() + { + return rpMauIndex; + } + + public AgentXOID get_rpMauType() + { + return rpMauType; + } + + public int get_rpMauStatus() + { + return rpMauStatus; + } + + public int set_rpMauStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_rpMauStatus = rpMauStatus; + rpMauStatus = value; + break; + case AgentXSetPhase.UNDO: + rpMauStatus = undo_rpMauStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_rpMauMediaAvailable() + { + return rpMauMediaAvailable; + } + + public long get_rpMauMediaAvailableStateExits() + { + return rpMauMediaAvailableStateExits; + } + + public int get_rpMauJabberState() + { + return rpMauJabberState; + } + + public long get_rpMauJabberingStateEnters() + { + return rpMauJabberingStateEnters; + } + + public long get_rpMauFalseCarriers() + { + return rpMauFalseCarriers; + } + +} + diff --git a/test/dumps/jax/RpMauJabberTrap.java b/test/dumps/jax/RpMauJabberTrap.java new file mode 100644 index 0000000..2adccd1 --- /dev/null +++ b/test/dumps/jax/RpMauJabberTrap.java @@ -0,0 +1,47 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpMauJabberTrap.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class RpMauJabberTrap extends AgentXNotification +{ + + private final static long[] rpMauJabberTrap_OID = {1, 3, 6, 1, 2, 1, 26, 0, 1}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(rpMauJabberTrap_OID)); + + private final static long[] OID1 = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 8}; + private final AgentXOID rpMauJabberState_OID = new AgentXOID(OID1); + + + public RpMauJabberTrap(RpMauEntry rpMauEntry_1) { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + + // add the rpMauJabberState columnar object of rpMauEntry_1 + oid = rpMauJabberState_OID; + oid.appendImplied(rpMauEntry_1.getInstance()); + varBind = new AgentXVarBind(oid, + AgentXVarBind.INTEGER, + rpMauEntry_1.get_rpMauJabberState()); + varBindList.addElement(varBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/jax/RpMauTable.java b/test/dumps/jax/RpMauTable.java new file mode 100644 index 0000000..ae3554b --- /dev/null +++ b/test/dumps/jax/RpMauTable.java @@ -0,0 +1,149 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: RpMauTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table rpMauTable defined in MAU-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class RpMauTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1}; + + // constructors + public RpMauTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + } + + public RpMauTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + columns.addElement(new Long(10)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // rpMauGroupIndex + { + int value = ((RpMauEntry)entry).get_rpMauGroupIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // rpMauPortIndex + { + int value = ((RpMauEntry)entry).get_rpMauPortIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // rpMauIndex + { + int value = ((RpMauEntry)entry).get_rpMauIndex(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // rpMauType + { + AgentXOID value = ((RpMauEntry)entry).get_rpMauType(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 5: // rpMauStatus + { + int value = ((RpMauEntry)entry).get_rpMauStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // rpMauMediaAvailable + { + int value = ((RpMauEntry)entry).get_rpMauMediaAvailable(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 7: // rpMauMediaAvailableStateExits + { + long value = ((RpMauEntry)entry).get_rpMauMediaAvailableStateExits(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 8: // rpMauJabberState + { + int value = ((RpMauEntry)entry).get_rpMauJabberState(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // rpMauJabberingStateEnters + { + long value = ((RpMauEntry)entry).get_rpMauJabberingStateEnters(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 10: // rpMauFalseCarriers + { + long value = ((RpMauEntry)entry).get_rpMauFalseCarriers(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 5: // rpMauStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((RpMauEntry)entry).set_rpMauStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/SerialConfigEntry.java b/test/dumps/jax/SerialConfigEntry.java new file mode 100644 index 0000000..0b519c2 --- /dev/null +++ b/test/dumps/jax/SerialConfigEntry.java @@ -0,0 +1,287 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConfigEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row serialConfigEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SerialConfigEntry extends AgentXEntry +{ + + protected int serialMode = 0; + protected int undo_serialMode = 0; + protected int serialProtocol = 0; + protected int undo_serialProtocol = 0; + protected int serialTimeout = 0; + protected int undo_serialTimeout = 0; + protected byte[] serialModemInitString = new byte[0]; + protected byte[] undo_serialModemInitString = new byte[0]; + protected byte[] serialModemHangUpString = new byte[0]; + protected byte[] undo_serialModemHangUpString = new byte[0]; + protected byte[] serialModemConnectResp = new byte[0]; + protected byte[] undo_serialModemConnectResp = new byte[0]; + protected byte[] serialModemNoConnectResp = new byte[0]; + protected byte[] undo_serialModemNoConnectResp = new byte[0]; + protected int serialDialoutTimeout = 0; + protected int undo_serialDialoutTimeout = 0; + protected int serialStatus = 0; + protected int undo_serialStatus = 0; + // foreign indices + protected int ifIndex; + + public SerialConfigEntry(int ifIndex) + { + this.ifIndex = ifIndex; + + instance.append(ifIndex); + } + + public int get_ifIndex() + { + return ifIndex; + } + + public int get_serialMode() + { + return serialMode; + } + + public int set_serialMode(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialMode = serialMode; + serialMode = value; + break; + case AgentXSetPhase.UNDO: + serialMode = undo_serialMode; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialProtocol() + { + return serialProtocol; + } + + public int set_serialProtocol(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialProtocol = serialProtocol; + serialProtocol = value; + break; + case AgentXSetPhase.UNDO: + serialProtocol = undo_serialProtocol; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialTimeout() + { + return serialTimeout; + } + + public int set_serialTimeout(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialTimeout = serialTimeout; + serialTimeout = value; + break; + case AgentXSetPhase.UNDO: + serialTimeout = undo_serialTimeout; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemInitString() + { + return serialModemInitString; + } + + public int set_serialModemInitString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemInitString = serialModemInitString; + serialModemInitString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemInitString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemInitString = undo_serialModemInitString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemInitString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemHangUpString() + { + return serialModemHangUpString; + } + + public int set_serialModemHangUpString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemHangUpString = serialModemHangUpString; + serialModemHangUpString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemHangUpString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemHangUpString = undo_serialModemHangUpString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemHangUpString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemConnectResp() + { + return serialModemConnectResp; + } + + public int set_serialModemConnectResp(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemConnectResp = serialModemConnectResp; + serialModemConnectResp = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemConnectResp[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemConnectResp = undo_serialModemConnectResp; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemConnectResp = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemNoConnectResp() + { + return serialModemNoConnectResp; + } + + public int set_serialModemNoConnectResp(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemNoConnectResp = serialModemNoConnectResp; + serialModemNoConnectResp = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemNoConnectResp[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemNoConnectResp = undo_serialModemNoConnectResp; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemNoConnectResp = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialDialoutTimeout() + { + return serialDialoutTimeout; + } + + public int set_serialDialoutTimeout(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialDialoutTimeout = serialDialoutTimeout; + serialDialoutTimeout = value; + break; + case AgentXSetPhase.UNDO: + serialDialoutTimeout = undo_serialDialoutTimeout; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialStatus() + { + return serialStatus; + } + + public int set_serialStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialStatus = serialStatus; + serialStatus = value; + break; + case AgentXSetPhase.UNDO: + serialStatus = undo_serialStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/SerialConfigEntryImpl.java b/test/dumps/jax/SerialConfigEntryImpl.java new file mode 100644 index 0000000..c860f1a --- /dev/null +++ b/test/dumps/jax/SerialConfigEntryImpl.java @@ -0,0 +1,257 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConfigEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row serialConfigEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SerialConfigEntryImpl extends SerialConfigEntry +{ + + // constructor + public SerialConfigEntryImpl(int ifIndex) + { + super(ifIndex); + } + + public int get_serialMode() + { + return serialMode; + } + + public int set_serialMode(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialMode = serialMode; + serialMode = value; + break; + case AgentXSetPhase.UNDO: + serialMode = undo_serialMode; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialProtocol() + { + return serialProtocol; + } + + public int set_serialProtocol(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialProtocol = serialProtocol; + serialProtocol = value; + break; + case AgentXSetPhase.UNDO: + serialProtocol = undo_serialProtocol; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialTimeout() + { + return serialTimeout; + } + + public int set_serialTimeout(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialTimeout = serialTimeout; + serialTimeout = value; + break; + case AgentXSetPhase.UNDO: + serialTimeout = undo_serialTimeout; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemInitString() + { + return serialModemInitString; + } + + public int set_serialModemInitString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemInitString = serialModemInitString; + serialModemInitString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemInitString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemInitString = undo_serialModemInitString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemInitString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemHangUpString() + { + return serialModemHangUpString; + } + + public int set_serialModemHangUpString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemHangUpString = serialModemHangUpString; + serialModemHangUpString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemHangUpString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemHangUpString = undo_serialModemHangUpString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemHangUpString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemConnectResp() + { + return serialModemConnectResp; + } + + public int set_serialModemConnectResp(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemConnectResp = serialModemConnectResp; + serialModemConnectResp = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemConnectResp[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemConnectResp = undo_serialModemConnectResp; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemConnectResp = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialModemNoConnectResp() + { + return serialModemNoConnectResp; + } + + public int set_serialModemNoConnectResp(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialModemNoConnectResp = serialModemNoConnectResp; + serialModemNoConnectResp = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialModemNoConnectResp[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialModemNoConnectResp = undo_serialModemNoConnectResp; + break; + case AgentXSetPhase.CLEANUP: + undo_serialModemNoConnectResp = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialDialoutTimeout() + { + return serialDialoutTimeout; + } + + public int set_serialDialoutTimeout(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialDialoutTimeout = serialDialoutTimeout; + serialDialoutTimeout = value; + break; + case AgentXSetPhase.UNDO: + serialDialoutTimeout = undo_serialDialoutTimeout; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialStatus() + { + return serialStatus; + } + + public int set_serialStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialStatus = serialStatus; + serialStatus = value; + break; + case AgentXSetPhase.UNDO: + serialStatus = undo_serialStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/SerialConfigTable.java b/test/dumps/jax/SerialConfigTable.java new file mode 100644 index 0000000..b7d7bbf --- /dev/null +++ b/test/dumps/jax/SerialConfigTable.java @@ -0,0 +1,198 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConfigTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table serialConfigTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class SerialConfigTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1}; + + // constructors + public SerialConfigTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public SerialConfigTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // serialMode + { + int value = ((SerialConfigEntry)entry).get_serialMode(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 2: // serialProtocol + { + int value = ((SerialConfigEntry)entry).get_serialProtocol(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // serialTimeout + { + int value = ((SerialConfigEntry)entry).get_serialTimeout(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // serialModemInitString + { + byte[] value = ((SerialConfigEntry)entry).get_serialModemInitString(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // serialModemHangUpString + { + byte[] value = ((SerialConfigEntry)entry).get_serialModemHangUpString(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // serialModemConnectResp + { + byte[] value = ((SerialConfigEntry)entry).get_serialModemConnectResp(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 7: // serialModemNoConnectResp + { + byte[] value = ((SerialConfigEntry)entry).get_serialModemNoConnectResp(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 8: // serialDialoutTimeout + { + int value = ((SerialConfigEntry)entry).get_serialDialoutTimeout(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 9: // serialStatus + { + int value = ((SerialConfigEntry)entry).get_serialStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 1: // serialMode + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialMode(phase, vb.intValue()); + } + case 2: // serialProtocol + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialProtocol(phase, vb.intValue()); + } + case 3: // serialTimeout + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialTimeout(phase, vb.intValue()); + } + case 4: // serialModemInitString + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialModemInitString(phase, vb.bytesValue()); + } + case 5: // serialModemHangUpString + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialModemHangUpString(phase, vb.bytesValue()); + } + case 6: // serialModemConnectResp + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialModemConnectResp(phase, vb.bytesValue()); + } + case 7: // serialModemNoConnectResp + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialModemNoConnectResp(phase, vb.bytesValue()); + } + case 8: // serialDialoutTimeout + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialDialoutTimeout(phase, vb.intValue()); + } + case 9: // serialStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConfigEntry)entry).set_serialStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/SerialConnectionEntry.java b/test/dumps/jax/SerialConnectionEntry.java new file mode 100644 index 0000000..b21e529 --- /dev/null +++ b/test/dumps/jax/SerialConnectionEntry.java @@ -0,0 +1,266 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConnectionEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row serialConnectionEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SerialConnectionEntry extends AgentXEntry +{ + + protected int serialConnectIndex = 0; + protected byte[] serialConnectDestIpAddress = new byte[4]; + protected byte[] undo_serialConnectDestIpAddress = new byte[4]; + protected int serialConnectType = 0; + protected int undo_serialConnectType = 0; + protected byte[] serialConnectDialString = new byte[0]; + protected byte[] undo_serialConnectDialString = new byte[0]; + protected byte[] serialConnectSwitchConnectSeq = new byte[0]; + protected byte[] undo_serialConnectSwitchConnectSeq = new byte[0]; + protected byte[] serialConnectSwitchDisconnectSeq = new byte[0]; + protected byte[] undo_serialConnectSwitchDisconnectSeq = new byte[0]; + protected byte[] serialConnectSwitchResetSeq = new byte[0]; + protected byte[] undo_serialConnectSwitchResetSeq = new byte[0]; + protected byte[] serialConnectOwner = new byte[0]; + protected byte[] undo_serialConnectOwner = new byte[0]; + protected int serialConnectStatus = 0; + protected int undo_serialConnectStatus = 0; + + public SerialConnectionEntry(int serialConnectIndex) + { + this.serialConnectIndex = serialConnectIndex; + + instance.append(serialConnectIndex); + } + + public int get_serialConnectIndex() + { + return serialConnectIndex; + } + + public byte[] get_serialConnectDestIpAddress() + { + return serialConnectDestIpAddress; + } + + public int set_serialConnectDestIpAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectDestIpAddress = serialConnectDestIpAddress; + serialConnectDestIpAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectDestIpAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectDestIpAddress = undo_serialConnectDestIpAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectDestIpAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialConnectType() + { + return serialConnectType; + } + + public int set_serialConnectType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectType = serialConnectType; + serialConnectType = value; + break; + case AgentXSetPhase.UNDO: + serialConnectType = undo_serialConnectType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectDialString() + { + return serialConnectDialString; + } + + public int set_serialConnectDialString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectDialString = serialConnectDialString; + serialConnectDialString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectDialString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectDialString = undo_serialConnectDialString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectDialString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchConnectSeq() + { + return serialConnectSwitchConnectSeq; + } + + public int set_serialConnectSwitchConnectSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchConnectSeq = serialConnectSwitchConnectSeq; + serialConnectSwitchConnectSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchConnectSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchConnectSeq = undo_serialConnectSwitchConnectSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchConnectSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchDisconnectSeq() + { + return serialConnectSwitchDisconnectSeq; + } + + public int set_serialConnectSwitchDisconnectSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchDisconnectSeq = serialConnectSwitchDisconnectSeq; + serialConnectSwitchDisconnectSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchDisconnectSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchDisconnectSeq = undo_serialConnectSwitchDisconnectSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchDisconnectSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchResetSeq() + { + return serialConnectSwitchResetSeq; + } + + public int set_serialConnectSwitchResetSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchResetSeq = serialConnectSwitchResetSeq; + serialConnectSwitchResetSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchResetSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchResetSeq = undo_serialConnectSwitchResetSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchResetSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectOwner() + { + return serialConnectOwner; + } + + public int set_serialConnectOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectOwner = serialConnectOwner; + serialConnectOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectOwner = undo_serialConnectOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialConnectStatus() + { + return serialConnectStatus; + } + + public int set_serialConnectStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectStatus = serialConnectStatus; + serialConnectStatus = value; + break; + case AgentXSetPhase.UNDO: + serialConnectStatus = undo_serialConnectStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/SerialConnectionEntryImpl.java b/test/dumps/jax/SerialConnectionEntryImpl.java new file mode 100644 index 0000000..92d7450 --- /dev/null +++ b/test/dumps/jax/SerialConnectionEntryImpl.java @@ -0,0 +1,239 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConnectionEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row serialConnectionEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SerialConnectionEntryImpl extends SerialConnectionEntry +{ + + // constructor + public SerialConnectionEntryImpl(int serialConnectIndex) + { + super(serialConnectIndex); + } + + public byte[] get_serialConnectDestIpAddress() + { + return serialConnectDestIpAddress; + } + + public int set_serialConnectDestIpAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectDestIpAddress = serialConnectDestIpAddress; + serialConnectDestIpAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectDestIpAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectDestIpAddress = undo_serialConnectDestIpAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectDestIpAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialConnectType() + { + return serialConnectType; + } + + public int set_serialConnectType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectType = serialConnectType; + serialConnectType = value; + break; + case AgentXSetPhase.UNDO: + serialConnectType = undo_serialConnectType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectDialString() + { + return serialConnectDialString; + } + + public int set_serialConnectDialString(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectDialString = serialConnectDialString; + serialConnectDialString = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectDialString[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectDialString = undo_serialConnectDialString; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectDialString = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchConnectSeq() + { + return serialConnectSwitchConnectSeq; + } + + public int set_serialConnectSwitchConnectSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchConnectSeq = serialConnectSwitchConnectSeq; + serialConnectSwitchConnectSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchConnectSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchConnectSeq = undo_serialConnectSwitchConnectSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchConnectSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchDisconnectSeq() + { + return serialConnectSwitchDisconnectSeq; + } + + public int set_serialConnectSwitchDisconnectSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchDisconnectSeq = serialConnectSwitchDisconnectSeq; + serialConnectSwitchDisconnectSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchDisconnectSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchDisconnectSeq = undo_serialConnectSwitchDisconnectSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchDisconnectSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectSwitchResetSeq() + { + return serialConnectSwitchResetSeq; + } + + public int set_serialConnectSwitchResetSeq(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectSwitchResetSeq = serialConnectSwitchResetSeq; + serialConnectSwitchResetSeq = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectSwitchResetSeq[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectSwitchResetSeq = undo_serialConnectSwitchResetSeq; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectSwitchResetSeq = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_serialConnectOwner() + { + return serialConnectOwner; + } + + public int set_serialConnectOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectOwner = serialConnectOwner; + serialConnectOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + serialConnectOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + serialConnectOwner = undo_serialConnectOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_serialConnectOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_serialConnectStatus() + { + return serialConnectStatus; + } + + public int set_serialConnectStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_serialConnectStatus = serialConnectStatus; + serialConnectStatus = value; + break; + case AgentXSetPhase.UNDO: + serialConnectStatus = undo_serialConnectStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/SerialConnectionTable.java b/test/dumps/jax/SerialConnectionTable.java new file mode 100644 index 0000000..5c65a2f --- /dev/null +++ b/test/dumps/jax/SerialConnectionTable.java @@ -0,0 +1,184 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SerialConnectionTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table serialConnectionTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class SerialConnectionTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1}; + + // constructors + public SerialConnectionTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public SerialConnectionTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + columns.addElement(new Long(8)); + columns.addElement(new Long(9)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // serialConnectDestIpAddress + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectDestIpAddress(); + return new AgentXVarBind(oid, AgentXVarBind.IPADDRESS, value); + } + case 3: // serialConnectType + { + int value = ((SerialConnectionEntry)entry).get_serialConnectType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // serialConnectDialString + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectDialString(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // serialConnectSwitchConnectSeq + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectSwitchConnectSeq(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // serialConnectSwitchDisconnectSeq + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectSwitchDisconnectSeq(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 7: // serialConnectSwitchResetSeq + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectSwitchResetSeq(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 8: // serialConnectOwner + { + byte[] value = ((SerialConnectionEntry)entry).get_serialConnectOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 9: // serialConnectStatus + { + int value = ((SerialConnectionEntry)entry).get_serialConnectStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // serialConnectDestIpAddress + { + if (vb.getType() != AgentXVarBind.IPADDRESS) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectDestIpAddress(phase, vb.bytesValue()); + } + case 3: // serialConnectType + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectType(phase, vb.intValue()); + } + case 4: // serialConnectDialString + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectDialString(phase, vb.bytesValue()); + } + case 5: // serialConnectSwitchConnectSeq + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectSwitchConnectSeq(phase, vb.bytesValue()); + } + case 6: // serialConnectSwitchDisconnectSeq + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectSwitchDisconnectSeq(phase, vb.bytesValue()); + } + case 7: // serialConnectSwitchResetSeq + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectSwitchResetSeq(phase, vb.bytesValue()); + } + case 8: // serialConnectOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectOwner(phase, vb.bytesValue()); + } + case 9: // serialConnectStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((SerialConnectionEntry)entry).set_serialConnectStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/Snmp.java b/test/dumps/jax/Snmp.java new file mode 100644 index 0000000..6f73634 --- /dev/null +++ b/test/dumps/jax/Snmp.java @@ -0,0 +1,567 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: Snmp.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group snmp defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class Snmp extends AgentXScalars +{ + + private final static long[] SnmpOID = {1, 3, 6, 1, 2, 1, 11}; + + protected AgentXOID SnmpInPktsOID; + protected final static long[] SnmpInPktsName = {1, 3, 6, 1, 2, 1, 11, 1, 0}; + protected long snmpInPkts = 0; + protected AgentXOID SnmpOutPktsOID; + protected final static long[] SnmpOutPktsName = {1, 3, 6, 1, 2, 1, 11, 2, 0}; + protected long snmpOutPkts = 0; + protected AgentXOID SnmpInBadVersionsOID; + protected final static long[] SnmpInBadVersionsName = {1, 3, 6, 1, 2, 1, 11, 3, 0}; + protected long snmpInBadVersions = 0; + protected AgentXOID SnmpInBadCommunityNamesOID; + protected final static long[] SnmpInBadCommunityNamesName = {1, 3, 6, 1, 2, 1, 11, 4, 0}; + protected long snmpInBadCommunityNames = 0; + protected AgentXOID SnmpInBadCommunityUsesOID; + protected final static long[] SnmpInBadCommunityUsesName = {1, 3, 6, 1, 2, 1, 11, 5, 0}; + protected long snmpInBadCommunityUses = 0; + protected AgentXOID SnmpInASNParseErrsOID; + protected final static long[] SnmpInASNParseErrsName = {1, 3, 6, 1, 2, 1, 11, 6, 0}; + protected long snmpInASNParseErrs = 0; + protected AgentXOID SnmpInTooBigsOID; + protected final static long[] SnmpInTooBigsName = {1, 3, 6, 1, 2, 1, 11, 8, 0}; + protected long snmpInTooBigs = 0; + protected AgentXOID SnmpInNoSuchNamesOID; + protected final static long[] SnmpInNoSuchNamesName = {1, 3, 6, 1, 2, 1, 11, 9, 0}; + protected long snmpInNoSuchNames = 0; + protected AgentXOID SnmpInBadValuesOID; + protected final static long[] SnmpInBadValuesName = {1, 3, 6, 1, 2, 1, 11, 10, 0}; + protected long snmpInBadValues = 0; + protected AgentXOID SnmpInReadOnlysOID; + protected final static long[] SnmpInReadOnlysName = {1, 3, 6, 1, 2, 1, 11, 11, 0}; + protected long snmpInReadOnlys = 0; + protected AgentXOID SnmpInGenErrsOID; + protected final static long[] SnmpInGenErrsName = {1, 3, 6, 1, 2, 1, 11, 12, 0}; + protected long snmpInGenErrs = 0; + protected AgentXOID SnmpInTotalReqVarsOID; + protected final static long[] SnmpInTotalReqVarsName = {1, 3, 6, 1, 2, 1, 11, 13, 0}; + protected long snmpInTotalReqVars = 0; + protected AgentXOID SnmpInTotalSetVarsOID; + protected final static long[] SnmpInTotalSetVarsName = {1, 3, 6, 1, 2, 1, 11, 14, 0}; + protected long snmpInTotalSetVars = 0; + protected AgentXOID SnmpInGetRequestsOID; + protected final static long[] SnmpInGetRequestsName = {1, 3, 6, 1, 2, 1, 11, 15, 0}; + protected long snmpInGetRequests = 0; + protected AgentXOID SnmpInGetNextsOID; + protected final static long[] SnmpInGetNextsName = {1, 3, 6, 1, 2, 1, 11, 16, 0}; + protected long snmpInGetNexts = 0; + protected AgentXOID SnmpInSetRequestsOID; + protected final static long[] SnmpInSetRequestsName = {1, 3, 6, 1, 2, 1, 11, 17, 0}; + protected long snmpInSetRequests = 0; + protected AgentXOID SnmpInGetResponsesOID; + protected final static long[] SnmpInGetResponsesName = {1, 3, 6, 1, 2, 1, 11, 18, 0}; + protected long snmpInGetResponses = 0; + protected AgentXOID SnmpInTrapsOID; + protected final static long[] SnmpInTrapsName = {1, 3, 6, 1, 2, 1, 11, 19, 0}; + protected long snmpInTraps = 0; + protected AgentXOID SnmpOutTooBigsOID; + protected final static long[] SnmpOutTooBigsName = {1, 3, 6, 1, 2, 1, 11, 20, 0}; + protected long snmpOutTooBigs = 0; + protected AgentXOID SnmpOutNoSuchNamesOID; + protected final static long[] SnmpOutNoSuchNamesName = {1, 3, 6, 1, 2, 1, 11, 21, 0}; + protected long snmpOutNoSuchNames = 0; + protected AgentXOID SnmpOutBadValuesOID; + protected final static long[] SnmpOutBadValuesName = {1, 3, 6, 1, 2, 1, 11, 22, 0}; + protected long snmpOutBadValues = 0; + protected AgentXOID SnmpOutGenErrsOID; + protected final static long[] SnmpOutGenErrsName = {1, 3, 6, 1, 2, 1, 11, 24, 0}; + protected long snmpOutGenErrs = 0; + protected AgentXOID SnmpOutGetRequestsOID; + protected final static long[] SnmpOutGetRequestsName = {1, 3, 6, 1, 2, 1, 11, 25, 0}; + protected long snmpOutGetRequests = 0; + protected AgentXOID SnmpOutGetNextsOID; + protected final static long[] SnmpOutGetNextsName = {1, 3, 6, 1, 2, 1, 11, 26, 0}; + protected long snmpOutGetNexts = 0; + protected AgentXOID SnmpOutSetRequestsOID; + protected final static long[] SnmpOutSetRequestsName = {1, 3, 6, 1, 2, 1, 11, 27, 0}; + protected long snmpOutSetRequests = 0; + protected AgentXOID SnmpOutGetResponsesOID; + protected final static long[] SnmpOutGetResponsesName = {1, 3, 6, 1, 2, 1, 11, 28, 0}; + protected long snmpOutGetResponses = 0; + protected AgentXOID SnmpOutTrapsOID; + protected final static long[] SnmpOutTrapsName = {1, 3, 6, 1, 2, 1, 11, 29, 0}; + protected long snmpOutTraps = 0; + protected AgentXOID SnmpEnableAuthenTrapsOID; + protected final static long[] SnmpEnableAuthenTrapsName = {1, 3, 6, 1, 2, 1, 11, 30, 0}; + protected int snmpEnableAuthenTraps = 0; + protected int undo_snmpEnableAuthenTraps = 0; + protected AgentXOID SnmpSilentDropsOID; + protected final static long[] SnmpSilentDropsName = {1, 3, 6, 1, 2, 1, 11, 31, 0}; + protected long snmpSilentDrops = 0; + protected AgentXOID SnmpProxyDropsOID; + protected final static long[] SnmpProxyDropsName = {1, 3, 6, 1, 2, 1, 11, 32, 0}; + protected long snmpProxyDrops = 0; + public Snmp() + { + oid = new AgentXOID(SnmpOID); + data = new Vector(); + SnmpInPktsOID = new AgentXOID(SnmpInPktsName); + data.addElement(SnmpInPktsOID); + SnmpOutPktsOID = new AgentXOID(SnmpOutPktsName); + data.addElement(SnmpOutPktsOID); + SnmpInBadVersionsOID = new AgentXOID(SnmpInBadVersionsName); + data.addElement(SnmpInBadVersionsOID); + SnmpInBadCommunityNamesOID = new AgentXOID(SnmpInBadCommunityNamesName); + data.addElement(SnmpInBadCommunityNamesOID); + SnmpInBadCommunityUsesOID = new AgentXOID(SnmpInBadCommunityUsesName); + data.addElement(SnmpInBadCommunityUsesOID); + SnmpInASNParseErrsOID = new AgentXOID(SnmpInASNParseErrsName); + data.addElement(SnmpInASNParseErrsOID); + SnmpInTooBigsOID = new AgentXOID(SnmpInTooBigsName); + data.addElement(SnmpInTooBigsOID); + SnmpInNoSuchNamesOID = new AgentXOID(SnmpInNoSuchNamesName); + data.addElement(SnmpInNoSuchNamesOID); + SnmpInBadValuesOID = new AgentXOID(SnmpInBadValuesName); + data.addElement(SnmpInBadValuesOID); + SnmpInReadOnlysOID = new AgentXOID(SnmpInReadOnlysName); + data.addElement(SnmpInReadOnlysOID); + SnmpInGenErrsOID = new AgentXOID(SnmpInGenErrsName); + data.addElement(SnmpInGenErrsOID); + SnmpInTotalReqVarsOID = new AgentXOID(SnmpInTotalReqVarsName); + data.addElement(SnmpInTotalReqVarsOID); + SnmpInTotalSetVarsOID = new AgentXOID(SnmpInTotalSetVarsName); + data.addElement(SnmpInTotalSetVarsOID); + SnmpInGetRequestsOID = new AgentXOID(SnmpInGetRequestsName); + data.addElement(SnmpInGetRequestsOID); + SnmpInGetNextsOID = new AgentXOID(SnmpInGetNextsName); + data.addElement(SnmpInGetNextsOID); + SnmpInSetRequestsOID = new AgentXOID(SnmpInSetRequestsName); + data.addElement(SnmpInSetRequestsOID); + SnmpInGetResponsesOID = new AgentXOID(SnmpInGetResponsesName); + data.addElement(SnmpInGetResponsesOID); + SnmpInTrapsOID = new AgentXOID(SnmpInTrapsName); + data.addElement(SnmpInTrapsOID); + SnmpOutTooBigsOID = new AgentXOID(SnmpOutTooBigsName); + data.addElement(SnmpOutTooBigsOID); + SnmpOutNoSuchNamesOID = new AgentXOID(SnmpOutNoSuchNamesName); + data.addElement(SnmpOutNoSuchNamesOID); + SnmpOutBadValuesOID = new AgentXOID(SnmpOutBadValuesName); + data.addElement(SnmpOutBadValuesOID); + SnmpOutGenErrsOID = new AgentXOID(SnmpOutGenErrsName); + data.addElement(SnmpOutGenErrsOID); + SnmpOutGetRequestsOID = new AgentXOID(SnmpOutGetRequestsName); + data.addElement(SnmpOutGetRequestsOID); + SnmpOutGetNextsOID = new AgentXOID(SnmpOutGetNextsName); + data.addElement(SnmpOutGetNextsOID); + SnmpOutSetRequestsOID = new AgentXOID(SnmpOutSetRequestsName); + data.addElement(SnmpOutSetRequestsOID); + SnmpOutGetResponsesOID = new AgentXOID(SnmpOutGetResponsesName); + data.addElement(SnmpOutGetResponsesOID); + SnmpOutTrapsOID = new AgentXOID(SnmpOutTrapsName); + data.addElement(SnmpOutTrapsOID); + SnmpEnableAuthenTrapsOID = new AgentXOID(SnmpEnableAuthenTrapsName); + data.addElement(SnmpEnableAuthenTrapsOID); + SnmpSilentDropsOID = new AgentXOID(SnmpSilentDropsName); + data.addElement(SnmpSilentDropsOID); + SnmpProxyDropsOID = new AgentXOID(SnmpProxyDropsName); + data.addElement(SnmpProxyDropsOID); + } + + public long get_snmpInPkts() + { + return snmpInPkts; + } + + public long get_snmpOutPkts() + { + return snmpOutPkts; + } + + public long get_snmpInBadVersions() + { + return snmpInBadVersions; + } + + public long get_snmpInBadCommunityNames() + { + return snmpInBadCommunityNames; + } + + public long get_snmpInBadCommunityUses() + { + return snmpInBadCommunityUses; + } + + public long get_snmpInASNParseErrs() + { + return snmpInASNParseErrs; + } + + public long get_snmpInTooBigs() + { + return snmpInTooBigs; + } + + public long get_snmpInNoSuchNames() + { + return snmpInNoSuchNames; + } + + public long get_snmpInBadValues() + { + return snmpInBadValues; + } + + public long get_snmpInReadOnlys() + { + return snmpInReadOnlys; + } + + public long get_snmpInGenErrs() + { + return snmpInGenErrs; + } + + public long get_snmpInTotalReqVars() + { + return snmpInTotalReqVars; + } + + public long get_snmpInTotalSetVars() + { + return snmpInTotalSetVars; + } + + public long get_snmpInGetRequests() + { + return snmpInGetRequests; + } + + public long get_snmpInGetNexts() + { + return snmpInGetNexts; + } + + public long get_snmpInSetRequests() + { + return snmpInSetRequests; + } + + public long get_snmpInGetResponses() + { + return snmpInGetResponses; + } + + public long get_snmpInTraps() + { + return snmpInTraps; + } + + public long get_snmpOutTooBigs() + { + return snmpOutTooBigs; + } + + public long get_snmpOutNoSuchNames() + { + return snmpOutNoSuchNames; + } + + public long get_snmpOutBadValues() + { + return snmpOutBadValues; + } + + public long get_snmpOutGenErrs() + { + return snmpOutGenErrs; + } + + public long get_snmpOutGetRequests() + { + return snmpOutGetRequests; + } + + public long get_snmpOutGetNexts() + { + return snmpOutGetNexts; + } + + public long get_snmpOutSetRequests() + { + return snmpOutSetRequests; + } + + public long get_snmpOutGetResponses() + { + return snmpOutGetResponses; + } + + public long get_snmpOutTraps() + { + return snmpOutTraps; + } + + public int get_snmpEnableAuthenTraps() + { + return snmpEnableAuthenTraps; + } + + public int set_snmpEnableAuthenTraps(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_snmpEnableAuthenTraps = snmpEnableAuthenTraps; + snmpEnableAuthenTraps = value; + break; + case AgentXSetPhase.UNDO: + snmpEnableAuthenTraps = undo_snmpEnableAuthenTraps; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public long get_snmpSilentDrops() + { + return snmpSilentDrops; + } + + public long get_snmpProxyDrops() + { + return snmpProxyDrops; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == SnmpInPktsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInPkts()); + if (pos == SnmpOutPktsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutPkts()); + if (pos == SnmpInBadVersionsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInBadVersions()); + if (pos == SnmpInBadCommunityNamesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInBadCommunityNames()); + if (pos == SnmpInBadCommunityUsesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInBadCommunityUses()); + if (pos == SnmpInASNParseErrsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInASNParseErrs()); + if (pos == SnmpInTooBigsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInTooBigs()); + if (pos == SnmpInNoSuchNamesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInNoSuchNames()); + if (pos == SnmpInBadValuesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInBadValues()); + if (pos == SnmpInReadOnlysOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInReadOnlys()); + if (pos == SnmpInGenErrsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInGenErrs()); + if (pos == SnmpInTotalReqVarsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInTotalReqVars()); + if (pos == SnmpInTotalSetVarsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInTotalSetVars()); + if (pos == SnmpInGetRequestsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInGetRequests()); + if (pos == SnmpInGetNextsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInGetNexts()); + if (pos == SnmpInSetRequestsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInSetRequests()); + if (pos == SnmpInGetResponsesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInGetResponses()); + if (pos == SnmpInTrapsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpInTraps()); + if (pos == SnmpOutTooBigsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutTooBigs()); + if (pos == SnmpOutNoSuchNamesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutNoSuchNames()); + if (pos == SnmpOutBadValuesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutBadValues()); + if (pos == SnmpOutGenErrsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutGenErrs()); + if (pos == SnmpOutGetRequestsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutGetRequests()); + if (pos == SnmpOutGetNextsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutGetNexts()); + if (pos == SnmpOutSetRequestsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutSetRequests()); + if (pos == SnmpOutGetResponsesOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutGetResponses()); + if (pos == SnmpOutTrapsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpOutTraps()); + if (pos == SnmpEnableAuthenTrapsOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_snmpEnableAuthenTraps()); + if (pos == SnmpSilentDropsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpSilentDrops()); + if (pos == SnmpProxyDropsOID) + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, + get_snmpProxyDrops()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == SnmpEnableAuthenTrapsOID) + return set_snmpEnableAuthenTraps(phase, inVb.intValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == SnmpInPktsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInPkts()); + if (pos == SnmpOutPktsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutPkts()); + if (pos == SnmpInBadVersionsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInBadVersions()); + if (pos == SnmpInBadCommunityNamesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInBadCommunityNames()); + if (pos == SnmpInBadCommunityUsesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInBadCommunityUses()); + if (pos == SnmpInASNParseErrsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInASNParseErrs()); + if (pos == SnmpInTooBigsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInTooBigs()); + if (pos == SnmpInNoSuchNamesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInNoSuchNames()); + if (pos == SnmpInBadValuesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInBadValues()); + if (pos == SnmpInReadOnlysOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInReadOnlys()); + if (pos == SnmpInGenErrsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInGenErrs()); + if (pos == SnmpInTotalReqVarsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInTotalReqVars()); + if (pos == SnmpInTotalSetVarsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInTotalSetVars()); + if (pos == SnmpInGetRequestsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInGetRequests()); + if (pos == SnmpInGetNextsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInGetNexts()); + if (pos == SnmpInSetRequestsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInSetRequests()); + if (pos == SnmpInGetResponsesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInGetResponses()); + if (pos == SnmpInTrapsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpInTraps()); + if (pos == SnmpOutTooBigsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutTooBigs()); + if (pos == SnmpOutNoSuchNamesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutNoSuchNames()); + if (pos == SnmpOutBadValuesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutBadValues()); + if (pos == SnmpOutGenErrsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutGenErrs()); + if (pos == SnmpOutGetRequestsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutGetRequests()); + if (pos == SnmpOutGetNextsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutGetNexts()); + if (pos == SnmpOutSetRequestsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutSetRequests()); + if (pos == SnmpOutGetResponsesOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutGetResponses()); + if (pos == SnmpOutTrapsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpOutTraps()); + if (pos == SnmpEnableAuthenTrapsOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_snmpEnableAuthenTraps()); + if (pos == SnmpSilentDropsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpSilentDrops()); + if (pos == SnmpProxyDropsOID) + return new AgentXVarBind(pos, AgentXVarBind.COUNTER32, + get_snmpProxyDrops()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/SnmpImpl.java b/test/dumps/jax/SnmpImpl.java new file mode 100644 index 0000000..66c753a --- /dev/null +++ b/test/dumps/jax/SnmpImpl.java @@ -0,0 +1,195 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group snmp defined in SNMPv2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class SnmpImpl extends Snmp +{ + + public long get_snmpInPkts() + { + return snmpInPkts; + } + + public long get_snmpOutPkts() + { + return snmpOutPkts; + } + + public long get_snmpInBadVersions() + { + return snmpInBadVersions; + } + + public long get_snmpInBadCommunityNames() + { + return snmpInBadCommunityNames; + } + + public long get_snmpInBadCommunityUses() + { + return snmpInBadCommunityUses; + } + + public long get_snmpInASNParseErrs() + { + return snmpInASNParseErrs; + } + + public long get_snmpInTooBigs() + { + return snmpInTooBigs; + } + + public long get_snmpInNoSuchNames() + { + return snmpInNoSuchNames; + } + + public long get_snmpInBadValues() + { + return snmpInBadValues; + } + + public long get_snmpInReadOnlys() + { + return snmpInReadOnlys; + } + + public long get_snmpInGenErrs() + { + return snmpInGenErrs; + } + + public long get_snmpInTotalReqVars() + { + return snmpInTotalReqVars; + } + + public long get_snmpInTotalSetVars() + { + return snmpInTotalSetVars; + } + + public long get_snmpInGetRequests() + { + return snmpInGetRequests; + } + + public long get_snmpInGetNexts() + { + return snmpInGetNexts; + } + + public long get_snmpInSetRequests() + { + return snmpInSetRequests; + } + + public long get_snmpInGetResponses() + { + return snmpInGetResponses; + } + + public long get_snmpInTraps() + { + return snmpInTraps; + } + + public long get_snmpOutTooBigs() + { + return snmpOutTooBigs; + } + + public long get_snmpOutNoSuchNames() + { + return snmpOutNoSuchNames; + } + + public long get_snmpOutBadValues() + { + return snmpOutBadValues; + } + + public long get_snmpOutGenErrs() + { + return snmpOutGenErrs; + } + + public long get_snmpOutGetRequests() + { + return snmpOutGetRequests; + } + + public long get_snmpOutGetNexts() + { + return snmpOutGetNexts; + } + + public long get_snmpOutSetRequests() + { + return snmpOutSetRequests; + } + + public long get_snmpOutGetResponses() + { + return snmpOutGetResponses; + } + + public long get_snmpOutTraps() + { + return snmpOutTraps; + } + + public int get_snmpEnableAuthenTraps() + { + return snmpEnableAuthenTraps; + } + + public int set_snmpEnableAuthenTraps(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_snmpEnableAuthenTraps = snmpEnableAuthenTraps; + snmpEnableAuthenTraps = value; + break; + case AgentXSetPhase.UNDO: + snmpEnableAuthenTraps = undo_snmpEnableAuthenTraps; + break; + case AgentXSetPhase.CLEANUP: + undo_snmpEnableAuthenTraps = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public long get_snmpSilentDrops() + { + return snmpSilentDrops; + } + + public long get_snmpProxyDrops() + { + return snmpProxyDrops; + } + +} + diff --git a/test/dumps/jax/SnmpSet.java b/test/dumps/jax/SnmpSet.java new file mode 100644 index 0000000..4858a4b --- /dev/null +++ b/test/dumps/jax/SnmpSet.java @@ -0,0 +1,103 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpSet.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group snmpSet defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class SnmpSet extends AgentXScalars +{ + + private final static long[] SnmpSetOID = {1, 3, 6, 1, 6, 3, 1, 1, 6}; + + protected AgentXOID SnmpSetSerialNoOID; + protected final static long[] SnmpSetSerialNoName = {1, 3, 6, 1, 6, 3, 1, 1, 6, 1, 0}; + protected int snmpSetSerialNo = 0; + protected int undo_snmpSetSerialNo = 0; + public SnmpSet() + { + oid = new AgentXOID(SnmpSetOID); + data = new Vector(); + SnmpSetSerialNoOID = new AgentXOID(SnmpSetSerialNoName); + data.addElement(SnmpSetSerialNoOID); + } + + public int get_snmpSetSerialNo() + { + return snmpSetSerialNo; + } + + public int set_snmpSetSerialNo(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_snmpSetSerialNo = snmpSetSerialNo; + snmpSetSerialNo = value; + break; + case AgentXSetPhase.UNDO: + snmpSetSerialNo = undo_snmpSetSerialNo; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == SnmpSetSerialNoOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_snmpSetSerialNo()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == SnmpSetSerialNoOID) + return set_snmpSetSerialNo(phase, inVb.intValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == SnmpSetSerialNoOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_snmpSetSerialNo()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/SnmpSetImpl.java b/test/dumps/jax/SnmpSetImpl.java new file mode 100644 index 0000000..5152a14 --- /dev/null +++ b/test/dumps/jax/SnmpSetImpl.java @@ -0,0 +1,50 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpSetImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group snmpSet defined in SNMPv2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class SnmpSetImpl extends SnmpSet +{ + + public int get_snmpSetSerialNo() + { + return snmpSetSerialNo; + } + + public int set_snmpSetSerialNo(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_snmpSetSerialNo = snmpSetSerialNo; + snmpSetSerialNo = value; + break; + case AgentXSetPhase.UNDO: + snmpSetSerialNo = undo_snmpSetSerialNo; + break; + case AgentXSetPhase.CLEANUP: + undo_snmpSetSerialNo = -1; // TODO: better check! + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + +} + diff --git a/test/dumps/jax/SnmpTrap.java b/test/dumps/jax/SnmpTrap.java new file mode 100644 index 0000000..7f376e1 --- /dev/null +++ b/test/dumps/jax/SnmpTrap.java @@ -0,0 +1,97 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpTrap.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group snmpTrap defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class SnmpTrap extends AgentXScalars +{ + + private final static long[] SnmpTrapOID = {1, 3, 6, 1, 6, 3, 1, 1, 4}; + + protected AgentXOID SnmpTrapOIDOID; + protected final static long[] SnmpTrapOIDName = {1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0}; + protected AgentXOID snmpTrapOID = new AgentXOID(); + protected AgentXOID SnmpTrapEnterpriseOID; + protected final static long[] SnmpTrapEnterpriseName = {1, 3, 6, 1, 6, 3, 1, 1, 4, 3, 0}; + protected AgentXOID snmpTrapEnterprise = new AgentXOID(); + public SnmpTrap() + { + oid = new AgentXOID(SnmpTrapOID); + data = new Vector(); + SnmpTrapOIDOID = new AgentXOID(SnmpTrapOIDName); + data.addElement(SnmpTrapOIDOID); + SnmpTrapEnterpriseOID = new AgentXOID(SnmpTrapEnterpriseName); + data.addElement(SnmpTrapEnterpriseOID); + } + + public AgentXOID get_snmpTrapOID() + { + return snmpTrapOID; + } + + public AgentXOID get_snmpTrapEnterprise() + { + return snmpTrapEnterprise; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == SnmpTrapOIDOID) + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, + get_snmpTrapOID()); + if (pos == SnmpTrapEnterpriseOID) + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, + get_snmpTrapEnterprise()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == SnmpTrapOIDOID) + return new AgentXVarBind(pos, AgentXVarBind.OBJECTIDENTIFIER, + get_snmpTrapOID()); + if (pos == SnmpTrapEnterpriseOID) + return new AgentXVarBind(pos, AgentXVarBind.OBJECTIDENTIFIER, + get_snmpTrapEnterprise()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/SnmpTrapImpl.java b/test/dumps/jax/SnmpTrapImpl.java new file mode 100644 index 0000000..008fcc4 --- /dev/null +++ b/test/dumps/jax/SnmpTrapImpl.java @@ -0,0 +1,34 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SnmpTrapImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group snmpTrap defined in SNMPv2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class SnmpTrapImpl extends SnmpTrap +{ + + public AgentXOID get_snmpTrapOID() + { + return snmpTrapOID; + } + + public AgentXOID get_snmpTrapEnterprise() + { + return snmpTrapEnterprise; + } + +} + diff --git a/test/dumps/jax/SourceRoutingStats2Entry.java b/test/dumps/jax/SourceRoutingStats2Entry.java new file mode 100644 index 0000000..8941cf0 --- /dev/null +++ b/test/dumps/jax/SourceRoutingStats2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SourceRoutingStats2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row sourceRoutingStats2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SourceRoutingStats2Entry extends AgentXEntry +{ + + protected long sourceRoutingStatsDroppedFrames = 0; + protected long sourceRoutingStatsCreateTime = 0; + + public SourceRoutingStats2Entry() + { + + } + + public long get_sourceRoutingStatsDroppedFrames() + { + return sourceRoutingStatsDroppedFrames; + } + + public long get_sourceRoutingStatsCreateTime() + { + return sourceRoutingStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/SourceRoutingStats2EntryImpl.java b/test/dumps/jax/SourceRoutingStats2EntryImpl.java new file mode 100644 index 0000000..a620cec --- /dev/null +++ b/test/dumps/jax/SourceRoutingStats2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SourceRoutingStats2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row sourceRoutingStats2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SourceRoutingStats2EntryImpl extends SourceRoutingStats2Entry +{ + + // constructor + public SourceRoutingStats2EntryImpl() + { + super(); + } + + public long get_sourceRoutingStatsDroppedFrames() + { + return sourceRoutingStatsDroppedFrames; + } + + public long get_sourceRoutingStatsCreateTime() + { + return sourceRoutingStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/SourceRoutingStats2Table.java b/test/dumps/jax/SourceRoutingStats2Table.java new file mode 100644 index 0000000..572b913 --- /dev/null +++ b/test/dumps/jax/SourceRoutingStats2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SourceRoutingStats2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table sourceRoutingStats2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class SourceRoutingStats2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 10, 8, 1}; + + // constructors + public SourceRoutingStats2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public SourceRoutingStats2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // sourceRoutingStatsDroppedFrames + { + long value = ((SourceRoutingStats2Entry)entry).get_sourceRoutingStatsDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // sourceRoutingStatsCreateTime + { + long value = ((SourceRoutingStats2Entry)entry).get_sourceRoutingStatsCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/SysOREntry.java b/test/dumps/jax/SysOREntry.java new file mode 100644 index 0000000..133b30c --- /dev/null +++ b/test/dumps/jax/SysOREntry.java @@ -0,0 +1,58 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SysOREntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row sysOREntry defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SysOREntry extends AgentXEntry +{ + + protected int sysORIndex = 0; + protected AgentXOID sysORID = new AgentXOID(); + protected byte[] sysORDescr = new byte[0]; + protected long sysORUpTime = 0; + + public SysOREntry(int sysORIndex) + { + this.sysORIndex = sysORIndex; + + instance.append(sysORIndex); + } + + public int get_sysORIndex() + { + return sysORIndex; + } + + public AgentXOID get_sysORID() + { + return sysORID; + } + + public byte[] get_sysORDescr() + { + return sysORDescr; + } + + public long get_sysORUpTime() + { + return sysORUpTime; + } + +} + diff --git a/test/dumps/jax/SysOREntryImpl.java b/test/dumps/jax/SysOREntryImpl.java new file mode 100644 index 0000000..fbd9dd8 --- /dev/null +++ b/test/dumps/jax/SysOREntryImpl.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SysOREntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row sysOREntry defined in SNMPv2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class SysOREntryImpl extends SysOREntry +{ + + // constructor + public SysOREntryImpl(int sysORIndex) + { + super(sysORIndex); + } + + public AgentXOID get_sysORID() + { + return sysORID; + } + + public byte[] get_sysORDescr() + { + return sysORDescr; + } + + public long get_sysORUpTime() + { + return sysORUpTime; + } + +} + diff --git a/test/dumps/jax/SysORTable.java b/test/dumps/jax/SysORTable.java new file mode 100644 index 0000000..0cc789c --- /dev/null +++ b/test/dumps/jax/SysORTable.java @@ -0,0 +1,93 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: SysORTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table sysORTable defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class SysORTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 1, 9, 1}; + + // constructors + public SysORTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public SysORTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // sysORID + { + AgentXOID value = ((SysOREntry)entry).get_sysORID(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // sysORDescr + { + byte[] value = ((SysOREntry)entry).get_sysORDescr(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 4: // sysORUpTime + { + long value = ((SysOREntry)entry).get_sysORUpTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/System.java b/test/dumps/jax/System.java new file mode 100644 index 0000000..48a1ee3 --- /dev/null +++ b/test/dumps/jax/System.java @@ -0,0 +1,268 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: System.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the scalar group system defined in SNMPv2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXGroup, AgentXScalars + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXScalars; + +public class System extends AgentXScalars +{ + + private final static long[] SystemOID = {1, 3, 6, 1, 2, 1, 1}; + + protected AgentXOID SysDescrOID; + protected final static long[] SysDescrName = {1, 3, 6, 1, 2, 1, 1, 1, 0}; + protected byte[] sysDescr = new byte[0]; + protected AgentXOID SysObjectIDOID; + protected final static long[] SysObjectIDName = {1, 3, 6, 1, 2, 1, 1, 2, 0}; + protected AgentXOID sysObjectID = new AgentXOID(); + protected AgentXOID SysUpTimeOID; + protected final static long[] SysUpTimeName = {1, 3, 6, 1, 2, 1, 1, 3, 0}; + protected long sysUpTime = 0; + protected AgentXOID SysContactOID; + protected final static long[] SysContactName = {1, 3, 6, 1, 2, 1, 1, 4, 0}; + protected byte[] sysContact = new byte[0]; + protected byte[] undo_sysContact = new byte[0]; + protected AgentXOID SysNameOID; + protected final static long[] SysNameName = {1, 3, 6, 1, 2, 1, 1, 5, 0}; + protected byte[] sysName = new byte[0]; + protected byte[] undo_sysName = new byte[0]; + protected AgentXOID SysLocationOID; + protected final static long[] SysLocationName = {1, 3, 6, 1, 2, 1, 1, 6, 0}; + protected byte[] sysLocation = new byte[0]; + protected byte[] undo_sysLocation = new byte[0]; + protected AgentXOID SysServicesOID; + protected final static long[] SysServicesName = {1, 3, 6, 1, 2, 1, 1, 7, 0}; + protected int sysServices = 0; + protected AgentXOID SysORLastChangeOID; + protected final static long[] SysORLastChangeName = {1, 3, 6, 1, 2, 1, 1, 8, 0}; + protected long sysORLastChange = 0; + public System() + { + oid = new AgentXOID(SystemOID); + data = new Vector(); + SysDescrOID = new AgentXOID(SysDescrName); + data.addElement(SysDescrOID); + SysObjectIDOID = new AgentXOID(SysObjectIDName); + data.addElement(SysObjectIDOID); + SysUpTimeOID = new AgentXOID(SysUpTimeName); + data.addElement(SysUpTimeOID); + SysContactOID = new AgentXOID(SysContactName); + data.addElement(SysContactOID); + SysNameOID = new AgentXOID(SysNameName); + data.addElement(SysNameOID); + SysLocationOID = new AgentXOID(SysLocationName); + data.addElement(SysLocationOID); + SysServicesOID = new AgentXOID(SysServicesName); + data.addElement(SysServicesOID); + SysORLastChangeOID = new AgentXOID(SysORLastChangeName); + data.addElement(SysORLastChangeOID); + } + + public byte[] get_sysDescr() + { + return sysDescr; + } + + public AgentXOID get_sysObjectID() + { + return sysObjectID; + } + + public long get_sysUpTime() + { + return sysUpTime; + } + + public byte[] get_sysContact() + { + return sysContact; + } + + public int set_sysContact(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysContact = sysContact; + sysContact = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysContact[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysContact = undo_sysContact; + break; + case AgentXSetPhase.CLEANUP: + undo_sysContact = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_sysName() + { + return sysName; + } + + public int set_sysName(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysName = sysName; + sysName = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysName[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysName = undo_sysName; + break; + case AgentXSetPhase.CLEANUP: + undo_sysName = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_sysLocation() + { + return sysLocation; + } + + public int set_sysLocation(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysLocation = sysLocation; + sysLocation = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysLocation[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysLocation = undo_sysLocation; + break; + case AgentXSetPhase.CLEANUP: + undo_sysLocation = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_sysServices() + { + return sysServices; + } + + public long get_sysORLastChange() + { + return sysORLastChange; + } + + public AgentXVarBind getScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) != 0)) + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + else { + if (pos == SysDescrOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_sysDescr()); + if (pos == SysObjectIDOID) + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, + get_sysObjectID()); + if (pos == SysUpTimeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_sysUpTime()); + if (pos == SysContactOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_sysContact()); + if (pos == SysNameOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_sysName()); + if (pos == SysLocationOID) + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, + get_sysLocation()); + if (pos == SysServicesOID) + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, + get_sysServices()); + if (pos == SysORLastChangeOID) + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, + get_sysORLastChange()); + } + return new AgentXVarBind(oid, AgentXVarBind.NOSUCHOBJECT); + } + + public int setScalar(AgentXSetPhase phase, AgentXOID pos, + AgentXVarBind inVb) + { + if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0)) + return AgentXResponsePDU.INCONSISTENT_NAME; + else { + if (pos == SysContactOID) + return set_sysContact(phase, inVb.bytesValue()); + if (pos == SysNameOID) + return set_sysName(phase, inVb.bytesValue()); + if (pos == SysLocationOID) + return set_sysLocation(phase, inVb.bytesValue()); + } + return AgentXResponsePDU.NOT_WRITABLE; + } + + public AgentXVarBind getNextScalar(AgentXOID pos, AgentXOID oid) + { + if ((pos == null) || (pos.compareTo(oid) <= 0)) + return new AgentXVarBind(oid, AgentXVarBind.ENDOFMIBVIEW); + else { + if (pos == SysDescrOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_sysDescr()); + if (pos == SysObjectIDOID) + return new AgentXVarBind(pos, AgentXVarBind.OBJECTIDENTIFIER, + get_sysObjectID()); + if (pos == SysUpTimeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_sysUpTime()); + if (pos == SysContactOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_sysContact()); + if (pos == SysNameOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_sysName()); + if (pos == SysLocationOID) + return new AgentXVarBind(pos, AgentXVarBind.OCTETSTRING, + get_sysLocation()); + if (pos == SysServicesOID) + return new AgentXVarBind(pos, AgentXVarBind.INTEGER, + get_sysServices()); + if (pos == SysORLastChangeOID) + return new AgentXVarBind(pos, AgentXVarBind.TIMETICKS, + get_sysORLastChange()); + } + return new AgentXVarBind(pos, AgentXVarBind.ENDOFMIBVIEW); + } + +} + diff --git a/test/dumps/jax/SystemImpl.java b/test/dumps/jax/SystemImpl.java new file mode 100644 index 0000000..bf7881e --- /dev/null +++ b/test/dumps/jax/SystemImpl.java @@ -0,0 +1,133 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: SystemImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the scalar group system defined in SNMPv2-MIB. + */ + +import java.util.Vector; +import java.util.Enumeration; +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; + +public class SystemImpl extends System +{ + + public byte[] get_sysDescr() + { + return sysDescr; + } + + public AgentXOID get_sysObjectID() + { + return sysObjectID; + } + + public long get_sysUpTime() + { + return sysUpTime; + } + + public byte[] get_sysContact() + { + return sysContact; + } + + public int set_sysContact(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysContact = sysContact; + sysContact = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysContact[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysContact = undo_sysContact; + break; + case AgentXSetPhase.CLEANUP: + undo_sysContact = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public byte[] get_sysName() + { + return sysName; + } + + public int set_sysName(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysName = sysName; + sysName = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysName[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysName = undo_sysName; + break; + case AgentXSetPhase.CLEANUP: + undo_sysName = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public byte[] get_sysLocation() + { + return sysLocation; + } + + public int set_sysLocation(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_sysLocation = sysLocation; + sysLocation = new byte[value.length]; + for(int i = 0; i < value.length; i++) + sysLocation[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + sysLocation = undo_sysLocation; + break; + case AgentXSetPhase.CLEANUP: + undo_sysLocation = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + + public int get_sysServices() + { + return sysServices; + } + + public long get_sysORLastChange() + { + return sysORLastChange; + } + +} + diff --git a/test/dumps/jax/TokenRingMLStats2Entry.java b/test/dumps/jax/TokenRingMLStats2Entry.java new file mode 100644 index 0000000..3b6761b --- /dev/null +++ b/test/dumps/jax/TokenRingMLStats2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingMLStats2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row tokenRingMLStats2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TokenRingMLStats2Entry extends AgentXEntry +{ + + protected long tokenRingMLStatsDroppedFrames = 0; + protected long tokenRingMLStatsCreateTime = 0; + + public TokenRingMLStats2Entry() + { + + } + + public long get_tokenRingMLStatsDroppedFrames() + { + return tokenRingMLStatsDroppedFrames; + } + + public long get_tokenRingMLStatsCreateTime() + { + return tokenRingMLStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/TokenRingMLStats2EntryImpl.java b/test/dumps/jax/TokenRingMLStats2EntryImpl.java new file mode 100644 index 0000000..a22d136 --- /dev/null +++ b/test/dumps/jax/TokenRingMLStats2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingMLStats2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row tokenRingMLStats2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TokenRingMLStats2EntryImpl extends TokenRingMLStats2Entry +{ + + // constructor + public TokenRingMLStats2EntryImpl() + { + super(); + } + + public long get_tokenRingMLStatsDroppedFrames() + { + return tokenRingMLStatsDroppedFrames; + } + + public long get_tokenRingMLStatsCreateTime() + { + return tokenRingMLStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/TokenRingMLStats2Table.java b/test/dumps/jax/TokenRingMLStats2Table.java new file mode 100644 index 0000000..b1a5154 --- /dev/null +++ b/test/dumps/jax/TokenRingMLStats2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingMLStats2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table tokenRingMLStats2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class TokenRingMLStats2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 1, 5, 1}; + + // constructors + public TokenRingMLStats2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public TokenRingMLStats2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // tokenRingMLStatsDroppedFrames + { + long value = ((TokenRingMLStats2Entry)entry).get_tokenRingMLStatsDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // tokenRingMLStatsCreateTime + { + long value = ((TokenRingMLStats2Entry)entry).get_tokenRingMLStatsCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/TokenRingPStats2Entry.java b/test/dumps/jax/TokenRingPStats2Entry.java new file mode 100644 index 0000000..0d28b75 --- /dev/null +++ b/test/dumps/jax/TokenRingPStats2Entry.java @@ -0,0 +1,44 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingPStats2Entry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row tokenRingPStats2Entry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TokenRingPStats2Entry extends AgentXEntry +{ + + protected long tokenRingPStatsDroppedFrames = 0; + protected long tokenRingPStatsCreateTime = 0; + + public TokenRingPStats2Entry() + { + + } + + public long get_tokenRingPStatsDroppedFrames() + { + return tokenRingPStatsDroppedFrames; + } + + public long get_tokenRingPStatsCreateTime() + { + return tokenRingPStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/TokenRingPStats2EntryImpl.java b/test/dumps/jax/TokenRingPStats2EntryImpl.java new file mode 100644 index 0000000..a0f78fc --- /dev/null +++ b/test/dumps/jax/TokenRingPStats2EntryImpl.java @@ -0,0 +1,39 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingPStats2EntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row tokenRingPStats2Entry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TokenRingPStats2EntryImpl extends TokenRingPStats2Entry +{ + + // constructor + public TokenRingPStats2EntryImpl() + { + super(); + } + + public long get_tokenRingPStatsDroppedFrames() + { + return tokenRingPStatsDroppedFrames; + } + + public long get_tokenRingPStatsCreateTime() + { + return tokenRingPStatsCreateTime; + } + +} + diff --git a/test/dumps/jax/TokenRingPStats2Table.java b/test/dumps/jax/TokenRingPStats2Table.java new file mode 100644 index 0000000..f86aafd --- /dev/null +++ b/test/dumps/jax/TokenRingPStats2Table.java @@ -0,0 +1,86 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TokenRingPStats2Table.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table tokenRingPStats2Table defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class TokenRingPStats2Table extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 1, 6, 1}; + + // constructors + public TokenRingPStats2Table() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public TokenRingPStats2Table(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(1)); + columns.addElement(new Long(2)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 1: // tokenRingPStatsDroppedFrames + { + long value = ((TokenRingPStats2Entry)entry).get_tokenRingPStatsDroppedFrames(); + return new AgentXVarBind(oid, AgentXVarBind.COUNTER32, value); + } + case 2: // tokenRingPStatsCreateTime + { + long value = ((TokenRingPStats2Entry)entry).get_tokenRingPStatsCreateTime(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/TrapDestEntry.java b/test/dumps/jax/TrapDestEntry.java new file mode 100644 index 0000000..29e28a9 --- /dev/null +++ b/test/dumps/jax/TrapDestEntry.java @@ -0,0 +1,179 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TrapDestEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row trapDestEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TrapDestEntry extends AgentXEntry +{ + + protected int trapDestIndex = 0; + protected byte[] trapDestCommunity = new byte[0]; + protected byte[] undo_trapDestCommunity = new byte[0]; + protected int trapDestProtocol = 0; + protected int undo_trapDestProtocol = 0; + protected byte[] trapDestAddress = new byte[0]; + protected byte[] undo_trapDestAddress = new byte[0]; + protected byte[] trapDestOwner = new byte[0]; + protected byte[] undo_trapDestOwner = new byte[0]; + protected int trapDestStatus = 0; + protected int undo_trapDestStatus = 0; + + public TrapDestEntry(int trapDestIndex) + { + this.trapDestIndex = trapDestIndex; + + instance.append(trapDestIndex); + } + + public int get_trapDestIndex() + { + return trapDestIndex; + } + + public byte[] get_trapDestCommunity() + { + return trapDestCommunity; + } + + public int set_trapDestCommunity(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestCommunity = trapDestCommunity; + trapDestCommunity = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestCommunity[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestCommunity = undo_trapDestCommunity; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestCommunity = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_trapDestProtocol() + { + return trapDestProtocol; + } + + public int set_trapDestProtocol(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestProtocol = trapDestProtocol; + trapDestProtocol = value; + break; + case AgentXSetPhase.UNDO: + trapDestProtocol = undo_trapDestProtocol; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_trapDestAddress() + { + return trapDestAddress; + } + + public int set_trapDestAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestAddress = trapDestAddress; + trapDestAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestAddress = undo_trapDestAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_trapDestOwner() + { + return trapDestOwner; + } + + public int set_trapDestOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestOwner = trapDestOwner; + trapDestOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestOwner = undo_trapDestOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_trapDestStatus() + { + return trapDestStatus; + } + + public int set_trapDestStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestStatus = trapDestStatus; + trapDestStatus = value; + break; + case AgentXSetPhase.UNDO: + trapDestStatus = undo_trapDestStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/TrapDestEntryImpl.java b/test/dumps/jax/TrapDestEntryImpl.java new file mode 100644 index 0000000..d9de871 --- /dev/null +++ b/test/dumps/jax/TrapDestEntryImpl.java @@ -0,0 +1,158 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: TrapDestEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row trapDestEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class TrapDestEntryImpl extends TrapDestEntry +{ + + // constructor + public TrapDestEntryImpl(int trapDestIndex) + { + super(trapDestIndex); + } + + public byte[] get_trapDestCommunity() + { + return trapDestCommunity; + } + + public int set_trapDestCommunity(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestCommunity = trapDestCommunity; + trapDestCommunity = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestCommunity[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestCommunity = undo_trapDestCommunity; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestCommunity = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_trapDestProtocol() + { + return trapDestProtocol; + } + + public int set_trapDestProtocol(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestProtocol = trapDestProtocol; + trapDestProtocol = value; + break; + case AgentXSetPhase.UNDO: + trapDestProtocol = undo_trapDestProtocol; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_trapDestAddress() + { + return trapDestAddress; + } + + public int set_trapDestAddress(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestAddress = trapDestAddress; + trapDestAddress = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestAddress[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestAddress = undo_trapDestAddress; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestAddress = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_trapDestOwner() + { + return trapDestOwner; + } + + public int set_trapDestOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestOwner = trapDestOwner; + trapDestOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + trapDestOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + trapDestOwner = undo_trapDestOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_trapDestOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_trapDestStatus() + { + return trapDestStatus; + } + + public int set_trapDestStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_trapDestStatus = trapDestStatus; + trapDestStatus = value; + break; + case AgentXSetPhase.UNDO: + trapDestStatus = undo_trapDestStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/TrapDestTable.java b/test/dumps/jax/TrapDestTable.java new file mode 100644 index 0000000..ef27f51 --- /dev/null +++ b/test/dumps/jax/TrapDestTable.java @@ -0,0 +1,142 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: TrapDestTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table trapDestTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class TrapDestTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1}; + + // constructors + public TrapDestTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public TrapDestTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // trapDestCommunity + { + byte[] value = ((TrapDestEntry)entry).get_trapDestCommunity(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 3: // trapDestProtocol + { + int value = ((TrapDestEntry)entry).get_trapDestProtocol(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // trapDestAddress + { + byte[] value = ((TrapDestEntry)entry).get_trapDestAddress(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 5: // trapDestOwner + { + byte[] value = ((TrapDestEntry)entry).get_trapDestOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 6: // trapDestStatus + { + int value = ((TrapDestEntry)entry).get_trapDestStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // trapDestCommunity + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestCommunity(phase, vb.bytesValue()); + } + case 3: // trapDestProtocol + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestProtocol(phase, vb.intValue()); + } + case 4: // trapDestAddress + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestAddress(phase, vb.bytesValue()); + } + case 5: // trapDestOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestOwner(phase, vb.bytesValue()); + } + case 6: // trapDestStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((TrapDestEntry)entry).set_trapDestStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/UsrHistoryControlEntry.java b/test/dumps/jax/UsrHistoryControlEntry.java new file mode 100644 index 0000000..8e0bd0b --- /dev/null +++ b/test/dumps/jax/UsrHistoryControlEntry.java @@ -0,0 +1,179 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryControlEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row usrHistoryControlEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryControlEntry extends AgentXEntry +{ + + protected int usrHistoryControlIndex = 0; + protected int usrHistoryControlObjects = 0; + protected int undo_usrHistoryControlObjects = 0; + protected int usrHistoryControlBucketsRequested = 0; + protected int undo_usrHistoryControlBucketsRequested = 0; + protected int usrHistoryControlBucketsGranted = 0; + protected int usrHistoryControlInterval = 0; + protected int undo_usrHistoryControlInterval = 0; + protected byte[] usrHistoryControlOwner = new byte[0]; + protected byte[] undo_usrHistoryControlOwner = new byte[0]; + protected int usrHistoryControlStatus = 0; + protected int undo_usrHistoryControlStatus = 0; + + public UsrHistoryControlEntry(int usrHistoryControlIndex) + { + this.usrHistoryControlIndex = usrHistoryControlIndex; + + instance.append(usrHistoryControlIndex); + } + + public int get_usrHistoryControlIndex() + { + return usrHistoryControlIndex; + } + + public int get_usrHistoryControlObjects() + { + return usrHistoryControlObjects; + } + + public int set_usrHistoryControlObjects(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlObjects = usrHistoryControlObjects; + usrHistoryControlObjects = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlObjects = undo_usrHistoryControlObjects; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlBucketsRequested() + { + return usrHistoryControlBucketsRequested; + } + + public int set_usrHistoryControlBucketsRequested(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlBucketsRequested = usrHistoryControlBucketsRequested; + usrHistoryControlBucketsRequested = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlBucketsRequested = undo_usrHistoryControlBucketsRequested; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlBucketsGranted() + { + return usrHistoryControlBucketsGranted; + } + + public int get_usrHistoryControlInterval() + { + return usrHistoryControlInterval; + } + + public int set_usrHistoryControlInterval(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlInterval = usrHistoryControlInterval; + usrHistoryControlInterval = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlInterval = undo_usrHistoryControlInterval; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_usrHistoryControlOwner() + { + return usrHistoryControlOwner; + } + + public int set_usrHistoryControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlOwner = usrHistoryControlOwner; + usrHistoryControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + usrHistoryControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlOwner = undo_usrHistoryControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_usrHistoryControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlStatus() + { + return usrHistoryControlStatus; + } + + public int set_usrHistoryControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlStatus = usrHistoryControlStatus; + usrHistoryControlStatus = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlStatus = undo_usrHistoryControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/UsrHistoryControlEntryImpl.java b/test/dumps/jax/UsrHistoryControlEntryImpl.java new file mode 100644 index 0000000..81c922b --- /dev/null +++ b/test/dumps/jax/UsrHistoryControlEntryImpl.java @@ -0,0 +1,157 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryControlEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row usrHistoryControlEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryControlEntryImpl extends UsrHistoryControlEntry +{ + + // constructor + public UsrHistoryControlEntryImpl(int usrHistoryControlIndex) + { + super(usrHistoryControlIndex); + } + + public int get_usrHistoryControlObjects() + { + return usrHistoryControlObjects; + } + + public int set_usrHistoryControlObjects(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlObjects = usrHistoryControlObjects; + usrHistoryControlObjects = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlObjects = undo_usrHistoryControlObjects; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlBucketsRequested() + { + return usrHistoryControlBucketsRequested; + } + + public int set_usrHistoryControlBucketsRequested(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlBucketsRequested = usrHistoryControlBucketsRequested; + usrHistoryControlBucketsRequested = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlBucketsRequested = undo_usrHistoryControlBucketsRequested; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlBucketsGranted() + { + return usrHistoryControlBucketsGranted; + } + + public int get_usrHistoryControlInterval() + { + return usrHistoryControlInterval; + } + + public int set_usrHistoryControlInterval(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlInterval = usrHistoryControlInterval; + usrHistoryControlInterval = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlInterval = undo_usrHistoryControlInterval; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public byte[] get_usrHistoryControlOwner() + { + return usrHistoryControlOwner; + } + + public int set_usrHistoryControlOwner(AgentXSetPhase phase, byte[] value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlOwner = usrHistoryControlOwner; + usrHistoryControlOwner = new byte[value.length]; + for(int i = 0; i < value.length; i++) + usrHistoryControlOwner[i] = value[i]; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlOwner = undo_usrHistoryControlOwner; + break; + case AgentXSetPhase.CLEANUP: + undo_usrHistoryControlOwner = null; + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryControlStatus() + { + return usrHistoryControlStatus; + } + + public int set_usrHistoryControlStatus(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryControlStatus = usrHistoryControlStatus; + usrHistoryControlStatus = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryControlStatus = undo_usrHistoryControlStatus; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/UsrHistoryControlTable.java b/test/dumps/jax/UsrHistoryControlTable.java new file mode 100644 index 0000000..2818a42 --- /dev/null +++ b/test/dumps/jax/UsrHistoryControlTable.java @@ -0,0 +1,149 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryControlTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table usrHistoryControlTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class UsrHistoryControlTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1}; + + // constructors + public UsrHistoryControlTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + } + + public UsrHistoryControlTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + columns.addElement(new Long(6)); + columns.addElement(new Long(7)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // usrHistoryControlObjects + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlObjects(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 3: // usrHistoryControlBucketsRequested + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlBucketsRequested(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 4: // usrHistoryControlBucketsGranted + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlBucketsGranted(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 5: // usrHistoryControlInterval + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlInterval(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + case 6: // usrHistoryControlOwner + { + byte[] value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlOwner(); + return new AgentXVarBind(oid, AgentXVarBind.OCTETSTRING, value); + } + case 7: // usrHistoryControlStatus + { + int value = ((UsrHistoryControlEntry)entry).get_usrHistoryControlStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // usrHistoryControlObjects + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlObjects(phase, vb.intValue()); + } + case 3: // usrHistoryControlBucketsRequested + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlBucketsRequested(phase, vb.intValue()); + } + case 5: // usrHistoryControlInterval + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlInterval(phase, vb.intValue()); + } + case 6: // usrHistoryControlOwner + { + if (vb.getType() != AgentXVarBind.OCTETSTRING) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlOwner(phase, vb.bytesValue()); + } + case 7: // usrHistoryControlStatus + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryControlEntry)entry).set_usrHistoryControlStatus(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/UsrHistoryEntry.java b/test/dumps/jax/UsrHistoryEntry.java new file mode 100644 index 0000000..de6bb7c --- /dev/null +++ b/test/dumps/jax/UsrHistoryEntry.java @@ -0,0 +1,83 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row usrHistoryEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryEntry extends AgentXEntry +{ + + protected int usrHistorySampleIndex = 0; + protected long usrHistoryIntervalStart = 0; + protected long usrHistoryIntervalEnd = 0; + protected long usrHistoryAbsValue = 0; + protected int usrHistoryValStatus = 0; + // foreign indices + protected int usrHistoryControlIndex; + protected int usrHistoryObjectIndex; + + public UsrHistoryEntry(int usrHistoryControlIndex, + int usrHistorySampleIndex, + int usrHistoryObjectIndex) + { + this.usrHistoryControlIndex = usrHistoryControlIndex; + this.usrHistorySampleIndex = usrHistorySampleIndex; + this.usrHistoryObjectIndex = usrHistoryObjectIndex; + + instance.append(usrHistoryControlIndex); + instance.append(usrHistorySampleIndex); + instance.append(usrHistoryObjectIndex); + } + + public int get_usrHistoryControlIndex() + { + return usrHistoryControlIndex; + } + + public int get_usrHistorySampleIndex() + { + return usrHistorySampleIndex; + } + + public int get_usrHistoryObjectIndex() + { + return usrHistoryObjectIndex; + } + + public long get_usrHistoryIntervalStart() + { + return usrHistoryIntervalStart; + } + + public long get_usrHistoryIntervalEnd() + { + return usrHistoryIntervalEnd; + } + + public long get_usrHistoryAbsValue() + { + return usrHistoryAbsValue; + } + + public int get_usrHistoryValStatus() + { + return usrHistoryValStatus; + } + +} + diff --git a/test/dumps/jax/UsrHistoryEntryImpl.java b/test/dumps/jax/UsrHistoryEntryImpl.java new file mode 100644 index 0000000..23169bc --- /dev/null +++ b/test/dumps/jax/UsrHistoryEntryImpl.java @@ -0,0 +1,53 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row usrHistoryEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryEntryImpl extends UsrHistoryEntry +{ + + // constructor + public UsrHistoryEntryImpl(int usrHistoryControlIndex, + int usrHistorySampleIndex, + int usrHistoryObjectIndex) + { + super(usrHistoryControlIndex, + usrHistorySampleIndex, + usrHistoryObjectIndex); + } + + public long get_usrHistoryIntervalStart() + { + return usrHistoryIntervalStart; + } + + public long get_usrHistoryIntervalEnd() + { + return usrHistoryIntervalEnd; + } + + public long get_usrHistoryAbsValue() + { + return usrHistoryAbsValue; + } + + public int get_usrHistoryValStatus() + { + return usrHistoryValStatus; + } + +} + diff --git a/test/dumps/jax/UsrHistoryObjectEntry.java b/test/dumps/jax/UsrHistoryObjectEntry.java new file mode 100644 index 0000000..0ebba2b --- /dev/null +++ b/test/dumps/jax/UsrHistoryObjectEntry.java @@ -0,0 +1,102 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryObjectEntry.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table row usrHistoryObjectEntry defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable, AgentXEntry + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryObjectEntry extends AgentXEntry +{ + + protected int usrHistoryObjectIndex = 0; + protected AgentXOID usrHistoryObjectVariable = new AgentXOID(); + protected AgentXOID undo_usrHistoryObjectVariable = new AgentXOID(); + protected int usrHistoryObjectSampleType = 0; + protected int undo_usrHistoryObjectSampleType = 0; + // foreign indices + protected int usrHistoryControlIndex; + + public UsrHistoryObjectEntry(int usrHistoryControlIndex, + int usrHistoryObjectIndex) + { + this.usrHistoryControlIndex = usrHistoryControlIndex; + this.usrHistoryObjectIndex = usrHistoryObjectIndex; + + instance.append(usrHistoryControlIndex); + instance.append(usrHistoryObjectIndex); + } + + public int get_usrHistoryControlIndex() + { + return usrHistoryControlIndex; + } + + public int get_usrHistoryObjectIndex() + { + return usrHistoryObjectIndex; + } + + public AgentXOID get_usrHistoryObjectVariable() + { + return usrHistoryObjectVariable; + } + + public int set_usrHistoryObjectVariable(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryObjectVariable = usrHistoryObjectVariable; + usrHistoryObjectVariable = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryObjectVariable = undo_usrHistoryObjectVariable; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryObjectSampleType() + { + return usrHistoryObjectSampleType; + } + + public int set_usrHistoryObjectSampleType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryObjectSampleType = usrHistoryObjectSampleType; + usrHistoryObjectSampleType = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryObjectSampleType = undo_usrHistoryObjectSampleType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/UsrHistoryObjectEntryImpl.java b/test/dumps/jax/UsrHistoryObjectEntryImpl.java new file mode 100644 index 0000000..5066083 --- /dev/null +++ b/test/dumps/jax/UsrHistoryObjectEntryImpl.java @@ -0,0 +1,79 @@ +/* + * This Java file has been generated by smidump 0.4.5. It + * is intended to be edited by the application programmer and + * to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryObjectEntryImpl.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class extends the Java AgentX (JAX) implementation of + the table row usrHistoryObjectEntry defined in RMON2-MIB. + */ + +import jax.AgentXOID; +import jax.AgentXSetPhase; +import jax.AgentXResponsePDU; +import jax.AgentXEntry; + +public class UsrHistoryObjectEntryImpl extends UsrHistoryObjectEntry +{ + + // constructor + public UsrHistoryObjectEntryImpl(int usrHistoryControlIndex, + int usrHistoryObjectIndex) + { + super(usrHistoryControlIndex, + usrHistoryObjectIndex); + } + + public AgentXOID get_usrHistoryObjectVariable() + { + return usrHistoryObjectVariable; + } + + public int set_usrHistoryObjectVariable(AgentXSetPhase phase, AgentXOID value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryObjectVariable = usrHistoryObjectVariable; + usrHistoryObjectVariable = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryObjectVariable = undo_usrHistoryObjectVariable; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } + public int get_usrHistoryObjectSampleType() + { + return usrHistoryObjectSampleType; + } + + public int set_usrHistoryObjectSampleType(AgentXSetPhase phase, int value) + { + switch (phase.getPhase()) { + case AgentXSetPhase.TEST_SET: + break; + case AgentXSetPhase.COMMIT: + undo_usrHistoryObjectSampleType = usrHistoryObjectSampleType; + usrHistoryObjectSampleType = value; + break; + case AgentXSetPhase.UNDO: + usrHistoryObjectSampleType = undo_usrHistoryObjectSampleType; + break; + case AgentXSetPhase.CLEANUP: + break; + default: + return AgentXResponsePDU.PROCESSING_ERROR; + } + return AgentXResponsePDU.NO_ERROR; + } +} + diff --git a/test/dumps/jax/UsrHistoryObjectTable.java b/test/dumps/jax/UsrHistoryObjectTable.java new file mode 100644 index 0000000..278843e --- /dev/null +++ b/test/dumps/jax/UsrHistoryObjectTable.java @@ -0,0 +1,100 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryObjectTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table usrHistoryObjectTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class UsrHistoryObjectTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1}; + + // constructors + public UsrHistoryObjectTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public UsrHistoryObjectTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // usrHistoryObjectVariable + { + AgentXOID value = ((UsrHistoryObjectEntry)entry).get_usrHistoryObjectVariable(); + return new AgentXVarBind(oid, AgentXVarBind.OBJECTIDENTIFIER, value); + } + case 3: // usrHistoryObjectSampleType + { + int value = ((UsrHistoryObjectEntry)entry).get_usrHistoryObjectSampleType(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + case 2: // usrHistoryObjectVariable + { + if (vb.getType() != AgentXVarBind.OBJECTIDENTIFIER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryObjectEntry)entry).set_usrHistoryObjectVariable(phase, vb.AgentXOIDValue()); + } + case 3: // usrHistoryObjectSampleType + { + if (vb.getType() != AgentXVarBind.INTEGER) + return AgentXResponsePDU.WRONG_TYPE; + else + return ((UsrHistoryObjectEntry)entry).set_usrHistoryObjectSampleType(phase, vb.intValue()); + } + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/UsrHistoryTable.java b/test/dumps/jax/UsrHistoryTable.java new file mode 100644 index 0000000..7449bf0 --- /dev/null +++ b/test/dumps/jax/UsrHistoryTable.java @@ -0,0 +1,100 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: UsrHistoryTable.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +/** + This class represents a Java AgentX (JAX) implementation of + the table usrHistoryTable defined in RMON2-MIB. + + @version 1 + @author smidump 0.4.5 + @see AgentXTable + */ + +import java.util.Vector; + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXResponsePDU; +import jax.AgentXSetPhase; +import jax.AgentXTable; +import jax.AgentXEntry; + +public class UsrHistoryTable extends AgentXTable +{ + + // entry OID + private final static long[] OID = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1}; + + // constructors + public UsrHistoryTable() + { + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public UsrHistoryTable(boolean shared) + { + super(shared); + + oid = new AgentXOID(OID); + + // register implemented columns + columns.addElement(new Long(2)); + columns.addElement(new Long(3)); + columns.addElement(new Long(4)); + columns.addElement(new Long(5)); + } + + public AgentXVarBind getVarBind(AgentXEntry entry, long column) + { + AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance()); + + switch ((int)column) { + case 2: // usrHistoryIntervalStart + { + long value = ((UsrHistoryEntry)entry).get_usrHistoryIntervalStart(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 3: // usrHistoryIntervalEnd + { + long value = ((UsrHistoryEntry)entry).get_usrHistoryIntervalEnd(); + return new AgentXVarBind(oid, AgentXVarBind.TIMETICKS, value); + } + case 4: // usrHistoryAbsValue + { + long value = ((UsrHistoryEntry)entry).get_usrHistoryAbsValue(); + return new AgentXVarBind(oid, AgentXVarBind.GAUGE32, value); + } + case 5: // usrHistoryValStatus + { + int value = ((UsrHistoryEntry)entry).get_usrHistoryValStatus(); + return new AgentXVarBind(oid, AgentXVarBind.INTEGER, value); + } + } + + return null; + } + + public int setEntry(AgentXSetPhase phase, + AgentXEntry entry, + long column, + AgentXVarBind vb) + { + + switch ((int)column) { + } + + return AgentXResponsePDU.NOT_WRITABLE; + } + +} + diff --git a/test/dumps/jax/WarmStart.java b/test/dumps/jax/WarmStart.java new file mode 100644 index 0000000..e9b348d --- /dev/null +++ b/test/dumps/jax/WarmStart.java @@ -0,0 +1,37 @@ +/* + * This Java file has been generated by smidump 0.4.5. Do not edit! + * It is intended to be used within a Java AgentX sub-agent environment. + * + * $Id: WarmStart.java 4432 2006-05-29 16:21:11Z strauss $ + */ + +import jax.AgentXOID; +import jax.AgentXVarBind; +import jax.AgentXNotification; +import java.util.Vector; + +public class WarmStart extends AgentXNotification +{ + + private final static long[] warmStart_OID = {1, 3, 6, 1, 6, 3, 1, 1, 5, 2}; + private static AgentXVarBind snmpTrapOID_VarBind = + new AgentXVarBind(snmpTrapOID_OID, + AgentXVarBind.OBJECTIDENTIFIER, + new AgentXOID(warmStart_OID)); + + + + public WarmStart() { + AgentXOID oid; + AgentXVarBind varBind; + + // add the snmpTrapOID object + varBindList.addElement(snmpTrapOID_VarBind); + } + + public Vector getVarBindList() { + return varBindList; + } + +} + diff --git a/test/dumps/metrics/IF-MIB b/test/dumps/metrics/IF-MIB new file mode 100644 index 0000000..1c3eb74 --- /dev/null +++ b/test/dumps/metrics/IF-MIB @@ -0,0 +1,149 @@ +# IF-MIB module metrics (generated by smidump 0.4.5) + +MODULE LANGUAGE SIZE REVISION DATE +IF-MIB - - 0 1993-11-08 +IF-MIB - - 1 1996-02-28 +IF-MIB SMIv2 61 2 2000-06-14 + +# The following table shows the status distribution of various +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL CURRENT DEPRECATED OBSOLETE +Types: 3 66.7% 33.3% 0.0% +Tables: 5 80.0% 20.0% 0.0% +Columns: 53 81.1% 18.9% 0.0% +Scalars: 3 100.0% 0.0% 0.0% +Notifications: 2 100.0% 0.0% 0.0% +Groups: 14 71.4% 28.6% 0.0% +Compliances: 3 33.3% 66.7% 0.0% +Summary: 83 78.3% 21.7% 0.0% + +# The following table shows the access mode distribution of all scalar +# or column definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL READWRITE READONLY NOTIFY NOACCES +Columns: 53 20.8% 73.6% 0.0% 5.7% +Scalars: 3 0.0% 100.0% 0.0% 0.0% +Summary: 56 19.6% 75.0% 0.0% 5.4% + +# The following table shows the table index kind distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL INDEX AUGMENT REORDER SPARSE EXPAND +Tables: 5 60.0% 40.0% 0.0% 0.0% 0.0% + +# The following table shows the table index length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] +Tables: 5 60.0% 40.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] +Tables: 5 0.0% 0.0% 40.0% 0.0% 0.0% 20.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 20.0% 0.0% 0.0% 20.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the text clause usage distribution of all +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 3 100.0% 0.0% 0.0% 100.0% +Tables: 5 100.0% 0.0% 0.0% 0.0% +Columns: 53 100.0% 0.0% 0.0% 0.0% +Scalars: 3 100.0% 0.0% 0.0% 0.0% +Notifications: 2 100.0% 0.0% 0.0% 0.0% +Summary: 71 100.0% 0.0% 0.0% 4.2% + +# The following table shows the average text length distribution (in +# bytes) of all definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 3 463.0 0.0 0.0 2.0 +Tables: 5 1346.0 0.0 0.0 0.0 +Columns: 53 389.1 0.0 0.0 0.0 +Scalars: 3 239.7 0.0 0.0 0.0 +Notifications: 2 312.0 0.0 0.0 0.0 +Summary: 71 432.0 0.0 0.0 2.0 + +# The following table shows the basetype usage distribution in the +# set of loaded MIB modules. + +CATEGORY Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128 +Columns: 9.4% 37.7% 0.0% 15.1% 11.3% 5.7% 20.8% 0.0% 0.0% 0.0% 0.0% +Scalars: 33.3% 66.7% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% +Summary: 10.7% 39.3% 0.0% 14.3% 10.7% 5.4% 19.6% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the complexity metrics of the set of loaded +# MIB modules. + +CATEGORY TOTAL RAW WEIGHT COMPLEXITY +Scalars (ro): 3 3 +Scalars (rw): 0 0 +Columns (ro): 39 78 +Columns (rw): 11 33 +Indexes: 5 27 +Summary: 53 114 + +# The following table shows the distribution of the number of references +# to defined types (including base types) in the set of loaded MIB +# modules. + +MODULE TYPE USAGE +SNMPv2-SMI Counter32 23.8% +SNMPv2-SMI Counter64 12.7% + Enumeration 9.5% +IF-MIB InterfaceIndex 7.9% +IF-MIB InterfaceIndexOrZero 6.3% +SNMPv2-SMI Gauge32 4.8% +SNMPv2-SMI TimeTicks 4.8% +SNMPv2-TC DisplayString 4.8% +SNMPv2-TC PhysAddress 4.8% + Integer32 3.2% + ObjectIdentifier 3.2% +SNMPv2-TC RowStatus 3.2% +SNMPv2-TC TruthValue 3.2% +IANAifType-MIB IANAifType 1.6% +IF-MIB OwnerString 1.6% +SNMPv2-TC AutonomousType 1.6% +SNMPv2-TC TestAndIncr 1.6% +SNMPv2-TC TimeStamp 1.6% + +# The following table shows the distribution of the number of references +# to externally defined types (excluding base types) in the set of loaded +# MIB modules. + +MODULE TYPE EXT-USAGE +SNMPv2-SMI Counter32 36.6% +SNMPv2-SMI Counter64 19.5% +SNMPv2-SMI Gauge32 7.3% +SNMPv2-SMI TimeTicks 7.3% +SNMPv2-TC PhysAddress 7.3% +SNMPv2-TC RowStatus 4.9% +SNMPv2-TC TruthValue 4.9% +IANAifType-MIB IANAifType 2.4% +SNMPv2-TC AutonomousType 2.4% +SNMPv2-TC DisplayString 2.4% +SNMPv2-TC TestAndIncr 2.4% +SNMPv2-TC TimeStamp 2.4% + + +# The following table shows the distribution of the number of references +# to externally defined items (such as types or objects) accumulated by +# the defining MIB module in the set of loaded MIB modules. + +MODULE EXT-USAGE +SNMPv2-SMI 70.7% +SNMPv2-TC 26.8% +IANAifType-MIB 2.4% + +# The following table shows the distribution of the index complexity +# in the set of loaded MIB modules. + +MODULE TABLE COMPLEXITY +IF-MIB ifRcvAddressEntry 4.0% +IF-MIB ifStackEntry 2.0% +IF-MIB ifEntry 1.0% +IF-MIB ifTestEntry 1.0% +IF-MIB ifXEntry 1.0% + diff --git a/test/dumps/metrics/MAU-MIB b/test/dumps/metrics/MAU-MIB new file mode 100644 index 0000000..6c7cb6f --- /dev/null +++ b/test/dumps/metrics/MAU-MIB @@ -0,0 +1,143 @@ +# MAU-MIB module metrics (generated by smidump 0.4.5) + +MODULE LANGUAGE SIZE REVISION DATE +MAU-MIB - - 0 1993-09-30 +MAU-MIB - - 1 1997-10-31 +MAU-MIB - - 2 1999-08-24 +MAU-MIB - - 3 2003-09-19 +MAU-MIB SMIv2 48 4 2007-04-21 + +# The following table shows the status distribution of various +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL CURRENT DEPRECATED OBSOLETE +Types: 1 0.0% 100.0% 0.0% +Tables: 6 83.3% 16.7% 0.0% +Columns: 45 80.0% 20.0% 0.0% +Scalars: 0 0.0% 0.0% 0.0% +Notifications: 2 100.0% 0.0% 0.0% +Groups: 14 78.6% 21.4% 0.0% +Compliances: 5 40.0% 60.0% 0.0% +Summary: 73 76.7% 23.3% 0.0% + +# The following table shows the access mode distribution of all scalar +# or column definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL READWRITE READONLY NOTIFY NOACCES +Columns: 45 17.8% 77.8% 0.0% 4.4% +Scalars: 0 0.0% 0.0% 0.0% 0.0% +Summary: 45 17.8% 77.8% 0.0% 4.4% + +# The following table shows the table index kind distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL INDEX AUGMENT REORDER SPARSE EXPAND +Tables: 6 100.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table index length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] +Tables: 6 0.0% 50.0% 33.3% 16.7% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] +Tables: 6 0.0% 33.3% 0.0% 0.0% 16.7% 0.0% 0.0% 0.0% 0.0% 16.7% 0.0% 16.7% 0.0% 16.7% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the text clause usage distribution of all +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 1 100.0% 0.0% 0.0% 0.0% +Tables: 6 100.0% 0.0% 0.0% 0.0% +Columns: 45 100.0% 84.4% 0.0% 0.0% +Scalars: 0 0.0% 0.0% 0.0% 0.0% +Notifications: 2 100.0% 100.0% 0.0% 0.0% +Summary: 60 100.0% 66.7% 0.0% 0.0% + +# The following table shows the average text length distribution (in +# bytes) of all definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 1 170.0 0.0 0.0 0.0 +Tables: 6 178.8 0.0 0.0 0.0 +Columns: 45 434.9 55.7 0.0 0.0 +Scalars: 0 0.0 0.0 0.0 0.0 +Notifications: 2 204.5 46.0 0.0 0.0 +Summary: 60 362.4 55.2 0.0 0.0 + +# The following table shows the basetype usage distribution in the +# set of loaded MIB modules. + +CATEGORY Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128 +Columns: 33.3% 13.3% 0.0% 2.2% 0.0% 6.7% 35.6% 8.9% 0.0% 0.0% 0.0% +Scalars: 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% +Summary: 33.3% 13.3% 0.0% 2.2% 0.0% 6.7% 35.6% 8.9% 0.0% 0.0% 0.0% + +# The following table shows the complexity metrics of the set of loaded +# MIB modules. + +CATEGORY TOTAL RAW WEIGHT COMPLEXITY +Scalars (ro): 0 0 +Scalars (rw): 0 0 +Columns (ro): 35 70 +Columns (rw): 8 24 +Indexes: 6 48 +Summary: 43 94 + +# The following table shows the distribution of the number of references +# to defined types (including base types) in the set of loaded MIB +# modules. + +MODULE TYPE USAGE + Integer32 41.0% + Enumeration 18.0% +IF-MIB InterfaceIndex 9.8% +SNMPv2-SMI Counter32 9.8% +IANA-MAU-MIB IANAifMauAutoNegCapBits 4.9% +SNMPv2-TC AutonomousType 4.9% +IANA-MAU-MIB IANAifJackType 3.3% +IANA-MAU-MIB IANAifMauMediaAvailable 3.3% +IANA-MAU-MIB IANAifMauTypeListBits 1.6% +SNMPv2-SMI Counter64 1.6% +SNMPv2-TC TruthValue 1.6% + +# The following table shows the distribution of the number of references +# to externally defined types (excluding base types) in the set of loaded +# MIB modules. + +MODULE TYPE EXT-USAGE +SNMPv2-SMI Counter32 28.6% +IANA-MAU-MIB IANAifMauAutoNegCapBits 14.3% +SNMPv2-TC AutonomousType 14.3% +IANA-MAU-MIB IANAifJackType 9.5% +IANA-MAU-MIB IANAifMauMediaAvailable 9.5% +IF-MIB InterfaceIndex 9.5% +IANA-MAU-MIB IANAifMauTypeListBits 4.8% +SNMPv2-SMI Counter64 4.8% +SNMPv2-TC TruthValue 4.8% + + +# The following table shows the distribution of the number of references +# to externally defined items (such as types or objects) accumulated by +# the defining MIB module in the set of loaded MIB modules. + +MODULE EXT-USAGE +IANA-MAU-MIB 38.1% +SNMPv2-SMI 33.3% +SNMPv2-TC 19.0% +IF-MIB 9.5% + +# The following table shows the distribution of the index complexity +# in the set of loaded MIB modules. + +MODULE TABLE COMPLEXITY +MAU-MIB rpJackEntry 4.0% +MAU-MIB ifJackEntry 3.0% +MAU-MIB rpMauEntry 3.0% +MAU-MIB broadMauBasicEntry 2.0% +MAU-MIB ifMauAutoNegEntry 2.0% +MAU-MIB ifMauEntry 2.0% + diff --git a/test/dumps/metrics/Makefile.am b/test/dumps/metrics/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/metrics/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/metrics/Makefile.in b/test/dumps/metrics/Makefile.in new file mode 100644 index 0000000..fdd7bed --- /dev/null +++ b/test/dumps/metrics/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/metrics +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/metrics/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/metrics/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/metrics/RMON2-MIB b/test/dumps/metrics/RMON2-MIB new file mode 100644 index 0000000..e347910 --- /dev/null +++ b/test/dumps/metrics/RMON2-MIB @@ -0,0 +1,188 @@ +# RMON2-MIB module metrics (generated by smidump 0.4.5) + +MODULE LANGUAGE SIZE REVISION DATE +RMON2-MIB - - 0 1996-05-27 +RMON2-MIB - - 1 2002-07-08 +RMON2-MIB SMIv2 205 2 2006-05-02 + +# The following table shows the status distribution of various +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL CURRENT DEPRECATED OBSOLETE +Types: 5 100.0% 0.0% 0.0% +Tables: 34 76.5% 23.5% 0.0% +Columns: 186 81.2% 18.8% 0.0% +Scalars: 14 64.3% 35.7% 0.0% +Notifications: 0 0.0% 0.0% 0.0% +Groups: 13 84.6% 15.4% 0.0% +Compliances: 2 100.0% 0.0% 0.0% +Summary: 254 80.3% 19.7% 0.0% + +# The following table shows the access mode distribution of all scalar +# or column definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL READWRITE READONLY NOTIFY NOACCES +Columns: 186 36.6% 47.8% 0.0% 15.6% +Scalars: 14 50.0% 50.0% 0.0% 0.0% +Summary: 200 37.5% 48.0% 0.0% 14.5% + +# The following table shows the table index kind distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL INDEX AUGMENT REORDER SPARSE EXPAND +Tables: 34 70.6% 29.4% 0.0% 0.0% 0.0% + +# The following table shows the table index length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] +Tables: 34 61.8% 14.7% 2.9% 5.9% 8.8% 5.9% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] +Tables: 34 2.9% 29.4% 5.9% 5.9% 8.8% 14.7% 2.9% 5.9% 8.8% 2.9% 5.9% 5.9% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the text clause usage distribution of all +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 5 100.0% 0.0% 0.0% 0.0% +Tables: 34 100.0% 0.0% 0.0% 0.0% +Columns: 186 100.0% 0.0% 0.0% 0.0% +Scalars: 14 100.0% 0.0% 0.0% 0.0% +Notifications: 0 0.0% 0.0% 0.0% 0.0% +Summary: 273 100.0% 0.0% 0.0% 0.0% + +# The following table shows the average text length distribution (in +# bytes) of all definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 5 2295.2 0.0 0.0 0.0 +Tables: 34 355.8 0.0 0.0 0.0 +Columns: 186 424.1 0.0 0.0 0.0 +Scalars: 14 365.9 0.0 0.0 0.0 +Notifications: 0 0.0 0.0 0.0 0.0 +Summary: 273 428.8 0.0 0.0 0.0 + +# The following table shows the basetype usage distribution in the +# set of loaded MIB modules. + +CATEGORY Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128 +Columns: 21.0% 43.0% 0.0% 0.0% 19.9% 3.2% 12.4% 0.5% 0.0% 0.0% 0.0% +Scalars: 7.1% 21.4% 0.0% 0.0% 42.9% 0.0% 21.4% 7.1% 0.0% 0.0% 0.0% +Summary: 20.0% 41.5% 0.0% 0.0% 21.5% 3.0% 13.0% 1.0% 0.0% 0.0% 0.0% + +# The following table shows the complexity metrics of the set of loaded +# MIB modules. + +CATEGORY TOTAL RAW WEIGHT COMPLEXITY +Scalars (ro): 7 7 +Scalars (rw): 7 14 +Columns (ro): 89 178 +Columns (rw): 68 204 +Indexes: 34 291 +Summary: 171 403 + +# The following table shows the distribution of the number of references +# to defined types (including base types) in the set of loaded MIB +# modules. + +MODULE TYPE USAGE + Integer32 29.6% + OctetString 11.3% +SNMPv2-SMI Counter32 10.5% +RMON2-MIB ZeroBasedCounter32 7.4% +RMON2-MIB LastCreateTime 5.8% + Enumeration 5.4% +RMON2-MIB TimeFilter 5.4% +SNMPv2-TC RowStatus 4.7% +RMON-MIB OwnerString 3.9% +SNMPv2-SMI Gauge32 3.5% +RMON2-MIB ControlString 2.3% +SNMPv2-TC DisplayString 2.3% +SNMPv2-TC TimeStamp 2.3% +SNMPv2-SMI IpAddress 1.9% +RMON2-MIB DataSource 1.6% + ObjectIdentifier 1.2% + Bits 0.8% + +# The following table shows the distribution of the number of references +# to externally defined types (excluding base types) in the set of loaded +# MIB modules. + +MODULE TYPE EXT-USAGE +SNMPv2-SMI Counter32 39.1% +SNMPv2-TC RowStatus 17.4% +RMON-MIB OwnerString 14.5% +SNMPv2-SMI Gauge32 13.0% +SNMPv2-TC TimeStamp 8.7% +SNMPv2-SMI IpAddress 7.2% + +# The following table shows the distribution of the number of references +# to externally defined nodes in the set of loaded MIB modules. + +MODULE NODE EXT-USAGE +IF-MIB ifIndex 16.7% +RMON-MIB channelIndex 8.3% +RMON-MIB etherStatsIndex 8.3% +RMON-MIB filterIndex 8.3% +RMON-MIB historyControlIndex 8.3% +RMON-MIB hostControlIndex 8.3% +RMON-MIB matrixControlIndex 8.3% +TOKEN-RING-RMON-MIB ringStationControlIfIndex 8.3% +TOKEN-RING-RMON-MIB sourceRoutingStatsIfIndex 8.3% +TOKEN-RING-RMON-MIB tokenRingMLStatsIndex 8.3% +TOKEN-RING-RMON-MIB tokenRingPStatsIndex 8.3% + +# The following table shows the distribution of the number of references +# to externally defined items (such as types or objects) accumulated by +# the defining MIB module in the set of loaded MIB modules. + +MODULE EXT-USAGE +SNMPv2-SMI 50.6% +SNMPv2-TC 22.2% +RMON-MIB 19.8% +TOKEN-RING-RMON-MIB 4.9% +IF-MIB 2.5% + +# The following table shows the distribution of the index complexity +# in the set of loaded MIB modules. + +MODULE TABLE COMPLEXITY +RMON2-MIB alMatrixDSEntry 10.0% +RMON2-MIB alMatrixSDEntry 10.0% +RMON2-MIB nlMatrixDSEntry 9.0% +RMON2-MIB nlMatrixSDEntry 9.0% +RMON2-MIB addressMapEntry 8.0% +RMON2-MIB alHostEntry 7.0% +RMON2-MIB nlHostEntry 6.0% +RMON2-MIB protocolDirEntry 6.0% +RMON2-MIB usrHistoryEntry 3.0% +RMON2-MIB alMatrixTopNEntry 2.0% +RMON2-MIB nlMatrixTopNEntry 2.0% +RMON2-MIB protocolDistStatsEntry 2.0% +RMON2-MIB usrHistoryObjectEntry 2.0% +RMON2-MIB addressMapControlEntry 1.0% +RMON2-MIB alMatrixTopNControlEntry 1.0% +RMON2-MIB channel2Entry 1.0% +RMON2-MIB etherStats2Entry 1.0% +RMON2-MIB filter2Entry 1.0% +RMON2-MIB historyControl2Entry 1.0% +RMON2-MIB hlHostControlEntry 1.0% +RMON2-MIB hlMatrixControlEntry 1.0% +RMON2-MIB hostControl2Entry 1.0% +RMON2-MIB matrixControl2Entry 1.0% +RMON2-MIB netConfigEntry 1.0% +RMON2-MIB nlMatrixTopNControlEntry 1.0% +RMON2-MIB protocolDistControlEntry 1.0% +RMON2-MIB ringStationControl2Entry 1.0% +RMON2-MIB serialConfigEntry 1.0% +RMON2-MIB serialConnectionEntry 1.0% +RMON2-MIB sourceRoutingStats2Entry 1.0% +RMON2-MIB tokenRingMLStats2Entry 1.0% +RMON2-MIB tokenRingPStats2Entry 1.0% +RMON2-MIB trapDestEntry 1.0% +RMON2-MIB usrHistoryControlEntry 1.0% + diff --git a/test/dumps/metrics/SNMPv2-MIB b/test/dumps/metrics/SNMPv2-MIB new file mode 100644 index 0000000..405364f --- /dev/null +++ b/test/dumps/metrics/SNMPv2-MIB @@ -0,0 +1,127 @@ +# SNMPv2-MIB module metrics (generated by smidump 0.4.5) + +MODULE LANGUAGE SIZE REVISION DATE +SNMPv2-MIB - - 0 1993-04-01 +SNMPv2-MIB - - 1 1995-11-09 +SNMPv2-MIB SMIv2 48 2 2002-10-16 + +# The following table shows the status distribution of various +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL CURRENT DEPRECATED OBSOLETE +Types: 0 0.0% 0.0% 0.0% +Tables: 1 100.0% 0.0% 0.0% +Columns: 4 100.0% 0.0% 0.0% +Scalars: 41 46.3% 0.0% 53.7% +Notifications: 3 100.0% 0.0% 0.0% +Groups: 8 87.5% 0.0% 12.5% +Compliances: 2 50.0% 50.0% 0.0% +Summary: 59 59.3% 1.7% 39.0% + +# The following table shows the access mode distribution of all scalar +# or column definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL READWRITE READONLY NOTIFY NOACCES +Columns: 4 0.0% 75.0% 0.0% 25.0% +Scalars: 41 12.2% 82.9% 4.9% 0.0% +Summary: 45 11.1% 82.2% 4.4% 2.2% + +# The following table shows the table index kind distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL INDEX AUGMENT REORDER SPARSE EXPAND +Tables: 1 100.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table index length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] +Tables: 1 100.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the table length distribution of +# table definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] +Tables: 1 0.0% 0.0% 0.0% 100.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the text clause usage distribution of all +# definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 0 0.0% 0.0% 0.0% 0.0% +Tables: 1 100.0% 0.0% 0.0% 0.0% +Columns: 4 100.0% 0.0% 0.0% 0.0% +Scalars: 41 100.0% 0.0% 0.0% 0.0% +Notifications: 3 100.0% 0.0% 0.0% 0.0% +Summary: 50 100.0% 0.0% 0.0% 0.0% + +# The following table shows the average text length distribution (in +# bytes) of all definitions contained in the set of loaded MIB modules. + +CATEGORY TOTAL DESCRIPTION REFERENCE UNIT FORMAT +Types: 0 0.0 0.0 0.0 0.0 +Tables: 1 272.0 0.0 0.0 0.0 +Columns: 4 108.2 0.0 0.0 0.0 +Scalars: 41 216.7 0.0 0.0 0.0 +Notifications: 3 210.0 0.0 0.0 0.0 +Summary: 50 205.2 0.0 0.0 0.0 + +# The following table shows the basetype usage distribution in the +# set of loaded MIB modules. + +CATEGORY Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128 +Columns: 25.0% 25.0% 0.0% 0.0% 25.0% 25.0% 0.0% 0.0% 0.0% 0.0% 0.0% +Scalars: 4.9% 75.6% 0.0% 0.0% 9.8% 7.3% 2.4% 0.0% 0.0% 0.0% 0.0% +Summary: 6.7% 71.1% 0.0% 0.0% 11.1% 8.9% 2.2% 0.0% 0.0% 0.0% 0.0% + +# The following table shows the complexity metrics of the set of loaded +# MIB modules. + +CATEGORY TOTAL RAW WEIGHT COMPLEXITY +Scalars (ro): 34 34 +Scalars (rw): 5 10 +Columns (ro): 3 6 +Columns (rw): 0 0 +Indexes: 1 3 +Summary: 42 50 + +# The following table shows the distribution of the number of references +# to defined types (including base types) in the set of loaded MIB +# modules. + +MODULE TYPE USAGE +SNMPv2-SMI Counter32 63.0% +SNMPv2-TC DisplayString 10.9% + ObjectIdentifier 8.7% + Integer32 6.5% +SNMPv2-TC TimeStamp 4.3% + Enumeration 2.2% +SNMPv2-SMI TimeTicks 2.2% +SNMPv2-TC TestAndIncr 2.2% + +# The following table shows the distribution of the number of references +# to externally defined types (excluding base types) in the set of loaded +# MIB modules. + +MODULE TYPE EXT-USAGE +SNMPv2-SMI Counter32 85.3% +SNMPv2-TC TimeStamp 5.9% +SNMPv2-SMI TimeTicks 2.9% +SNMPv2-TC DisplayString 2.9% +SNMPv2-TC TestAndIncr 2.9% + + +# The following table shows the distribution of the number of references +# to externally defined items (such as types or objects) accumulated by +# the defining MIB module in the set of loaded MIB modules. + +MODULE EXT-USAGE +SNMPv2-SMI 88.2% +SNMPv2-TC 11.8% + +# The following table shows the distribution of the index complexity +# in the set of loaded MIB modules. + +MODULE TABLE COMPLEXITY +SNMPv2-MIB sysOREntry 1.0% + diff --git a/test/dumps/mosy/IF-MIB b/test/dumps/mosy/IF-MIB new file mode 100644 index 0000000..c7b9aea --- /dev/null +++ b/test/dumps/mosy/IF-MIB @@ -0,0 +1,160 @@ +-- automatically generated by smidump 0.4.5, do not edit! + +-- object definitions compiled from IF-MIB + +ifMIB mib-2.31 +%n0 ifMIB module-identity + +interfaces mib-2.2 +%n0 interfaces object-id +ifMIBObjects ifMIB.1 +%n0 ifMIBObjects object-id +ifConformance ifMIB.2 +%n0 ifConformance object-id +ifGroups ifConformance.1 +%n0 ifGroups object-id +ifCompliances ifConformance.2 +%n0 ifCompliances object-id + +%tc OwnerString OctetString "255a" +%tc InterfaceIndex Integer32 "d" +%tc InterfaceIndexOrZero Integer32 "d" +ifNumber interfaces.1 Integer32 read-only current +ifTable interfaces.2 Aggregate not-accessible current +ifEntry ifTable.1 Aggregate not-accessible current +%ei ifEntry "ifIndex" +ifIndex ifEntry.1 InterfaceIndex read-only current +ifDescr ifEntry.2 DisplayString read-only current +%er ifDescr 0 255 +ifType ifEntry.3 IANAifType read-only current +ifMtu ifEntry.4 Integer32 read-only current +ifSpeed ifEntry.5 Gauge32 read-only current +ifPhysAddress ifEntry.6 PhysAddress read-only current +ifAdminStatus ifEntry.7 INTEGER read-write current +%ev ifAdminStatus up 1 +%ev ifAdminStatus down 2 +%ev ifAdminStatus testing 3 +ifOperStatus ifEntry.8 INTEGER read-only current +%ev ifOperStatus up 1 +%ev ifOperStatus down 2 +%ev ifOperStatus testing 3 +%ev ifOperStatus unknown 4 +%ev ifOperStatus dormant 5 +%ev ifOperStatus notPresent 6 +%ev ifOperStatus lowerLayerDown 7 +ifLastChange ifEntry.9 TimeTicks read-only current +ifInOctets ifEntry.10 Counter32 read-only current +ifInUcastPkts ifEntry.11 Counter32 read-only current +ifInNUcastPkts ifEntry.12 Counter32 read-only deprecated +ifInDiscards ifEntry.13 Counter32 read-only current +ifInErrors ifEntry.14 Counter32 read-only current +ifInUnknownProtos ifEntry.15 Counter32 read-only current +ifOutOctets ifEntry.16 Counter32 read-only current +ifOutUcastPkts ifEntry.17 Counter32 read-only current +ifOutNUcastPkts ifEntry.18 Counter32 read-only deprecated +ifOutDiscards ifEntry.19 Counter32 read-only current +ifOutErrors ifEntry.20 Counter32 read-only current +ifOutQLen ifEntry.21 Gauge32 read-only deprecated +ifSpecific ifEntry.22 ObjectID read-only deprecated +ifXTable ifMIBObjects.1 Aggregate not-accessible current +ifXEntry ifXTable.1 Aggregate not-accessible current +%ea ifXEntry ifEntry +ifName ifXEntry.1 DisplayString read-only current +ifInMulticastPkts ifXEntry.2 Counter32 read-only current +ifInBroadcastPkts ifXEntry.3 Counter32 read-only current +ifOutMulticastPkts ifXEntry.4 Counter32 read-only current +ifOutBroadcastPkts ifXEntry.5 Counter32 read-only current +ifHCInOctets ifXEntry.6 Counter64 read-only current +ifHCInUcastPkts ifXEntry.7 Counter64 read-only current +ifHCInMulticastPkts ifXEntry.8 Counter64 read-only current +ifHCInBroadcastPkts ifXEntry.9 Counter64 read-only current +ifHCOutOctets ifXEntry.10 Counter64 read-only current +ifHCOutUcastPkts ifXEntry.11 Counter64 read-only current +ifHCOutMulticastPkts ifXEntry.12 Counter64 read-only current +ifHCOutBroadcastPkts ifXEntry.13 Counter64 read-only current +ifLinkUpDownTrapEnable ifXEntry.14 INTEGER read-write current +%ev ifLinkUpDownTrapEnable enabled 1 +%ev ifLinkUpDownTrapEnable disabled 2 +ifHighSpeed ifXEntry.15 Gauge32 read-only current +ifPromiscuousMode ifXEntry.16 TruthValue read-write current +ifConnectorPresent ifXEntry.17 TruthValue read-only current +ifAlias ifXEntry.18 DisplayString read-write current +%er ifAlias 0 64 +ifCounterDiscontinuityTime ifXEntry.19 TimeStamp read-only current +ifStackTable ifMIBObjects.2 Aggregate not-accessible current +ifStackEntry ifStackTable.1 Aggregate not-accessible current +%ei ifStackEntry "ifStackHigherLayer ifStackLowerLayer" +ifStackHigherLayer ifStackEntry.1 InterfaceIndexOrZero not-accessible current +ifStackLowerLayer ifStackEntry.2 InterfaceIndexOrZero not-accessible current +ifStackStatus ifStackEntry.3 RowStatus read-create current +ifTestTable ifMIBObjects.3 Aggregate not-accessible deprecated +ifTestEntry ifTestTable.1 Aggregate not-accessible deprecated +%ea ifTestEntry ifEntry +ifTestId ifTestEntry.1 TestAndIncr read-write deprecated +ifTestStatus ifTestEntry.2 INTEGER read-write deprecated +%ev ifTestStatus notInUse 1 +%ev ifTestStatus inUse 2 +ifTestType ifTestEntry.3 AutonomousType read-write deprecated +ifTestResult ifTestEntry.4 INTEGER read-only deprecated +%ev ifTestResult none 1 +%ev ifTestResult success 2 +%ev ifTestResult inProgress 3 +%ev ifTestResult notSupported 4 +%ev ifTestResult unAbleToRun 5 +%ev ifTestResult aborted 6 +%ev ifTestResult failed 7 +ifTestCode ifTestEntry.5 ObjectID read-only deprecated +ifTestOwner ifTestEntry.6 OwnerString read-write deprecated +ifRcvAddressTable ifMIBObjects.4 Aggregate not-accessible current +ifRcvAddressEntry ifRcvAddressTable.1 Aggregate not-accessible current +%ei ifRcvAddressEntry "ifIndex ifRcvAddressAddress" +ifRcvAddressAddress ifRcvAddressEntry.1 PhysAddress not-accessible current +ifRcvAddressStatus ifRcvAddressEntry.2 RowStatus read-create current +ifRcvAddressType ifRcvAddressEntry.3 INTEGER read-create current +%ev ifRcvAddressType other 1 +%ev ifRcvAddressType volatile 2 +%ev ifRcvAddressType nonVolatile 3 +ifTableLastChange ifMIBObjects.5 TimeTicks read-only current +ifStackLastChange ifMIBObjects.6 TimeTicks read-only current + +linkDown snmpTraps.3 +%n0 linkDown notification +linkUp snmpTraps.4 +%n0 linkUp notification + +ifGeneralGroup ifGroups.1 +%n0 ifGeneralGroup object-group +ifFixedLengthGroup ifGroups.2 +%n0 ifFixedLengthGroup object-group +ifHCFixedLengthGroup ifGroups.3 +%n0 ifHCFixedLengthGroup object-group +ifPacketGroup ifGroups.4 +%n0 ifPacketGroup object-group +ifHCPacketGroup ifGroups.5 +%n0 ifHCPacketGroup object-group +ifVHCPacketGroup ifGroups.6 +%n0 ifVHCPacketGroup object-group +ifRcvAddressGroup ifGroups.7 +%n0 ifRcvAddressGroup object-group +ifTestGroup ifGroups.8 +%n0 ifTestGroup object-group +ifStackGroup ifGroups.9 +%n0 ifStackGroup object-group +ifGeneralInformationGroup ifGroups.10 +%n0 ifGeneralInformationGroup object-group +ifStackGroup2 ifGroups.11 +%n0 ifStackGroup2 object-group +ifOldObjectsGroup ifGroups.12 +%n0 ifOldObjectsGroup object-group +ifCounterDiscontinuityGroup ifGroups.13 +%n0 ifCounterDiscontinuityGroup object-group +linkUpDownNotificationsGroup ifGroups.14 +%n0 linkUpDownNotificationsGroup notification-group + +ifCompliance ifCompliances.1 +%n0 ifCompliance module-compliance +ifCompliance2 ifCompliances.2 +%n0 ifCompliance2 module-compliance +ifCompliance3 ifCompliances.3 +%n0 ifCompliance3 module-compliance + diff --git a/test/dumps/mosy/MAU-MIB b/test/dumps/mosy/MAU-MIB new file mode 100644 index 0000000..bec0a7e --- /dev/null +++ b/test/dumps/mosy/MAU-MIB @@ -0,0 +1,201 @@ +-- automatically generated by smidump 0.4.5, do not edit! + +-- object definitions compiled from MAU-MIB + +mauMod snmpDot3MauMgt.6 +%n0 mauMod module-identity + +snmpDot3MauMgt mib-2.26 +%n0 snmpDot3MauMgt object-id +snmpDot3MauTraps snmpDot3MauMgt.0 +%n0 snmpDot3MauTraps object-id +dot3RpMauBasicGroup snmpDot3MauMgt.1 +%n0 dot3RpMauBasicGroup object-id +dot3IfMauBasicGroup snmpDot3MauMgt.2 +%n0 dot3IfMauBasicGroup object-id +dot3BroadMauBasicGroup snmpDot3MauMgt.3 +%n0 dot3BroadMauBasicGroup object-id +dot3IfMauAutoNegGroup snmpDot3MauMgt.5 +%n0 dot3IfMauAutoNegGroup object-id +mauModConf mauMod.1 +%n0 mauModConf object-id +mauModCompls mauModConf.1 +%n0 mauModCompls object-id +mauModObjGrps mauModConf.2 +%n0 mauModObjGrps object-id +mauModNotGrps mauModConf.3 +%n0 mauModNotGrps object-id + +%tc JackType INTEGER "" +%es JackType other 1 +%es JackType rj45 2 +%es JackType rj45S 3 +%es JackType db9 4 +%es JackType bnc 5 +%es JackType fAUI 6 +%es JackType mAUI 7 +%es JackType fiberSC 8 +%es JackType fiberMIC 9 +%es JackType fiberST 10 +%es JackType telco 11 +%es JackType mtrj 12 +%es JackType hssdc 13 +%es JackType fiberLC 14 +rpMauTable dot3RpMauBasicGroup.1 Aggregate not-accessible current +rpMauEntry rpMauTable.1 Aggregate not-accessible current +%ei rpMauEntry "rpMauGroupIndex rpMauPortIndex rpMauIndex" +rpMauGroupIndex rpMauEntry.1 Integer32 read-only current +%er rpMauGroupIndex 1 2147483647 +rpMauPortIndex rpMauEntry.2 Integer32 read-only current +%er rpMauPortIndex 1 2147483647 +rpMauIndex rpMauEntry.3 Integer32 read-only current +%er rpMauIndex 1 2147483647 +rpMauType rpMauEntry.4 AutonomousType read-only current +rpMauStatus rpMauEntry.5 INTEGER read-write current +%ev rpMauStatus other 1 +%ev rpMauStatus unknown 2 +%ev rpMauStatus operational 3 +%ev rpMauStatus standby 4 +%ev rpMauStatus shutdown 5 +%ev rpMauStatus reset 6 +rpMauMediaAvailable rpMauEntry.6 IANAifMauMediaAvailable read-only current +rpMauMediaAvailableStateExits rpMauEntry.7 Counter32 read-only current +rpMauJabberState rpMauEntry.8 INTEGER read-only current +%ev rpMauJabberState other 1 +%ev rpMauJabberState unknown 2 +%ev rpMauJabberState noJabber 3 +%ev rpMauJabberState jabbering 4 +rpMauJabberingStateEnters rpMauEntry.9 Counter32 read-only current +rpMauFalseCarriers rpMauEntry.10 Counter32 read-only current +rpJackTable dot3RpMauBasicGroup.2 Aggregate not-accessible current +rpJackEntry rpJackTable.1 Aggregate not-accessible current +%ei rpJackEntry "rpMauGroupIndex rpMauPortIndex rpMauIndex rpJackIndex" +rpJackIndex rpJackEntry.1 Integer32 not-accessible current +%er rpJackIndex 1 2147483647 +rpJackType rpJackEntry.2 IANAifJackType read-only current +ifMauTable dot3IfMauBasicGroup.1 Aggregate not-accessible current +ifMauEntry ifMauTable.1 Aggregate not-accessible current +%ei ifMauEntry "ifMauIfIndex ifMauIndex" +ifMauIfIndex ifMauEntry.1 InterfaceIndex read-only current +ifMauIndex ifMauEntry.2 Integer32 read-only current +%er ifMauIndex 1 2147483647 +ifMauType ifMauEntry.3 AutonomousType read-only current +ifMauStatus ifMauEntry.4 INTEGER read-write current +%ev ifMauStatus other 1 +%ev ifMauStatus unknown 2 +%ev ifMauStatus operational 3 +%ev ifMauStatus standby 4 +%ev ifMauStatus shutdown 5 +%ev ifMauStatus reset 6 +ifMauMediaAvailable ifMauEntry.5 IANAifMauMediaAvailable read-only current +ifMauMediaAvailableStateExits ifMauEntry.6 Counter32 read-only current +ifMauJabberState ifMauEntry.7 INTEGER read-only current +%ev ifMauJabberState other 1 +%ev ifMauJabberState unknown 2 +%ev ifMauJabberState noJabber 3 +%ev ifMauJabberState jabbering 4 +ifMauJabberingStateEnters ifMauEntry.8 Counter32 read-only current +ifMauFalseCarriers ifMauEntry.9 Counter32 read-only current +ifMauTypeList ifMauEntry.10 Integer32 read-only deprecated +ifMauDefaultType ifMauEntry.11 AutonomousType read-write current +ifMauAutoNegSupported ifMauEntry.12 TruthValue read-only current +ifMauTypeListBits ifMauEntry.13 IANAifMauTypeListBits read-only current +ifMauHCFalseCarriers ifMauEntry.14 Counter64 read-only current +ifJackTable dot3IfMauBasicGroup.2 Aggregate not-accessible current +ifJackEntry ifJackTable.1 Aggregate not-accessible current +%ei ifJackEntry "ifMauIfIndex ifMauIndex ifJackIndex" +ifJackIndex ifJackEntry.1 Integer32 not-accessible current +%er ifJackIndex 1 2147483647 +ifJackType ifJackEntry.2 IANAifJackType read-only current +broadMauBasicTable dot3BroadMauBasicGroup.1 Aggregate not-accessible deprecated +broadMauBasicEntry broadMauBasicTable.1 Aggregate not-accessible deprecated +%ei broadMauBasicEntry "broadMauIfIndex broadMauIndex" +broadMauIfIndex broadMauBasicEntry.1 InterfaceIndex read-only deprecated +broadMauIndex broadMauBasicEntry.2 Integer32 read-only deprecated +%er broadMauIndex 1 2147483647 +broadMauXmtRcvSplitType broadMauBasicEntry.3 INTEGER read-only deprecated +%ev broadMauXmtRcvSplitType other 1 +%ev broadMauXmtRcvSplitType single 2 +%ev broadMauXmtRcvSplitType dual 3 +broadMauXmtCarrierFreq broadMauBasicEntry.4 Integer32 read-only deprecated +broadMauTranslationFreq broadMauBasicEntry.5 Integer32 read-only deprecated +ifMauAutoNegTable dot3IfMauAutoNegGroup.1 Aggregate not-accessible current +ifMauAutoNegEntry ifMauAutoNegTable.1 Aggregate not-accessible current +%ei ifMauAutoNegEntry "ifMauIfIndex ifMauIndex" +ifMauAutoNegAdminStatus ifMauAutoNegEntry.1 INTEGER read-write current +%ev ifMauAutoNegAdminStatus enabled 1 +%ev ifMauAutoNegAdminStatus disabled 2 +ifMauAutoNegRemoteSignaling ifMauAutoNegEntry.2 INTEGER read-only current +%ev ifMauAutoNegRemoteSignaling detected 1 +%ev ifMauAutoNegRemoteSignaling notdetected 2 +ifMauAutoNegConfig ifMauAutoNegEntry.4 INTEGER read-only current +%ev ifMauAutoNegConfig other 1 +%ev ifMauAutoNegConfig configuring 2 +%ev ifMauAutoNegConfig complete 3 +%ev ifMauAutoNegConfig disabled 4 +%ev ifMauAutoNegConfig parallelDetectFail 5 +ifMauAutoNegCapability ifMauAutoNegEntry.5 Integer32 read-only deprecated +ifMauAutoNegCapAdvertised ifMauAutoNegEntry.6 Integer32 read-write deprecated +ifMauAutoNegCapReceived ifMauAutoNegEntry.7 Integer32 read-only deprecated +ifMauAutoNegRestart ifMauAutoNegEntry.8 INTEGER read-write current +%ev ifMauAutoNegRestart restart 1 +%ev ifMauAutoNegRestart norestart 2 +ifMauAutoNegCapabilityBits ifMauAutoNegEntry.9 IANAifMauAutoNegCapBits read-only current +ifMauAutoNegCapAdvertisedBits ifMauAutoNegEntry.10 IANAifMauAutoNegCapBits read-write current +ifMauAutoNegCapReceivedBits ifMauAutoNegEntry.11 IANAifMauAutoNegCapBits read-only current +ifMauAutoNegRemoteFaultAdvertised ifMauAutoNegEntry.12 INTEGER read-write current +%ev ifMauAutoNegRemoteFaultAdvertised noError 1 +%ev ifMauAutoNegRemoteFaultAdvertised offline 2 +%ev ifMauAutoNegRemoteFaultAdvertised linkFailure 3 +%ev ifMauAutoNegRemoteFaultAdvertised autoNegError 4 +ifMauAutoNegRemoteFaultReceived ifMauAutoNegEntry.13 INTEGER read-only current +%ev ifMauAutoNegRemoteFaultReceived noError 1 +%ev ifMauAutoNegRemoteFaultReceived offline 2 +%ev ifMauAutoNegRemoteFaultReceived linkFailure 3 +%ev ifMauAutoNegRemoteFaultReceived autoNegError 4 + +rpMauJabberTrap snmpDot3MauTraps.1 +%n0 rpMauJabberTrap notification +ifMauJabberTrap snmpDot3MauTraps.2 +%n0 ifMauJabberTrap notification + +mauRpGrpBasic mauModObjGrps.1 +%n0 mauRpGrpBasic object-group +mauRpGrp100Mbs mauModObjGrps.2 +%n0 mauRpGrp100Mbs object-group +mauRpGrpJack mauModObjGrps.3 +%n0 mauRpGrpJack object-group +mauIfGrpBasic mauModObjGrps.4 +%n0 mauIfGrpBasic object-group +mauIfGrp100Mbs mauModObjGrps.5 +%n0 mauIfGrp100Mbs object-group +mauIfGrpJack mauModObjGrps.6 +%n0 mauIfGrpJack object-group +mauIfGrpAutoNeg mauModObjGrps.7 +%n0 mauIfGrpAutoNeg object-group +mauBroadBasic mauModObjGrps.8 +%n0 mauBroadBasic object-group +mauIfGrpHighCapacity mauModObjGrps.9 +%n0 mauIfGrpHighCapacity object-group +mauIfGrpAutoNeg2 mauModObjGrps.10 +%n0 mauIfGrpAutoNeg2 object-group +mauIfGrpAutoNeg1000Mbps mauModObjGrps.11 +%n0 mauIfGrpAutoNeg1000Mbps object-group +mauIfGrpHCStats mauModObjGrps.12 +%n0 mauIfGrpHCStats object-group +rpMauNotifications mauModNotGrps.1 +%n0 rpMauNotifications notification-group +ifMauNotifications mauModNotGrps.2 +%n0 ifMauNotifications notification-group + +mauModRpCompl mauModCompls.1 +%n0 mauModRpCompl module-compliance +mauModIfCompl mauModCompls.2 +%n0 mauModIfCompl module-compliance +mauModIfCompl2 mauModCompls.3 +%n0 mauModIfCompl2 module-compliance +mauModRpCompl2 mauModCompls.4 +%n0 mauModRpCompl2 module-compliance +mauModIfCompl3 mauModCompls.5 +%n0 mauModIfCompl3 module-compliance + diff --git a/test/dumps/mosy/Makefile.am b/test/dumps/mosy/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/mosy/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/mosy/Makefile.in b/test/dumps/mosy/Makefile.in new file mode 100644 index 0000000..2aba55d --- /dev/null +++ b/test/dumps/mosy/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/mosy +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/mosy/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/mosy/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/mosy/RMON2-MIB b/test/dumps/mosy/RMON2-MIB new file mode 100644 index 0000000..36de3ef --- /dev/null +++ b/test/dumps/mosy/RMON2-MIB @@ -0,0 +1,518 @@ +-- automatically generated by smidump 0.4.5, do not edit! + +-- object definitions compiled from RMON2-MIB + +rmon mib-2.16 +%n0 rmon module-identity + +protocolDir rmon.11 +%n0 protocolDir object-id +protocolDist rmon.12 +%n0 protocolDist object-id +addressMap rmon.13 +%n0 addressMap object-id +nlHost rmon.14 +%n0 nlHost object-id +nlMatrix rmon.15 +%n0 nlMatrix object-id +alHost rmon.16 +%n0 alHost object-id +alMatrix rmon.17 +%n0 alMatrix object-id +usrHistory rmon.18 +%n0 usrHistory object-id +probeConfig rmon.19 +%n0 probeConfig object-id +rmonConformance rmon.20 +%n0 rmonConformance object-id +rmon2MIBCompliances rmonConformance.1 +%n0 rmon2MIBCompliances object-id +rmon2MIBGroups rmonConformance.2 +%n0 rmon2MIBGroups object-id + +%tc ZeroBasedCounter32 Gauge32 "" +%tc LastCreateTime TimeTicks "" +%tc TimeFilter TimeTicks "" +%tc DataSource ObjectID "" +%tc ControlString OctetString "" +etherStats2Table statistics.4 Aggregate not-accessible current +etherStats2Entry etherStats2Table.1 Aggregate not-accessible current +%ea etherStats2Entry etherStatsEntry +etherStatsDroppedFrames etherStats2Entry.1 Counter32 read-only current +etherStatsCreateTime etherStats2Entry.2 LastCreateTime read-only current +tokenRingMLStats2Table statistics.5 Aggregate not-accessible deprecated +tokenRingMLStats2Entry tokenRingMLStats2Table.1 Aggregate not-accessible deprecated +%ea tokenRingMLStats2Entry tokenRingMLStatsEntry +tokenRingMLStatsDroppedFrames tokenRingMLStats2Entry.1 Counter32 read-only deprecated +tokenRingMLStatsCreateTime tokenRingMLStats2Entry.2 LastCreateTime read-only deprecated +tokenRingPStats2Table statistics.6 Aggregate not-accessible deprecated +tokenRingPStats2Entry tokenRingPStats2Table.1 Aggregate not-accessible deprecated +%ea tokenRingPStats2Entry tokenRingPStatsEntry +tokenRingPStatsDroppedFrames tokenRingPStats2Entry.1 Counter32 read-only deprecated +tokenRingPStatsCreateTime tokenRingPStats2Entry.2 LastCreateTime read-only deprecated +historyControl2Table history.5 Aggregate not-accessible current +historyControl2Entry historyControl2Table.1 Aggregate not-accessible current +%ea historyControl2Entry historyControlEntry +historyControlDroppedFrames historyControl2Entry.1 Counter32 read-only current +hostControl2Table hosts.4 Aggregate not-accessible current +hostControl2Entry hostControl2Table.1 Aggregate not-accessible current +%ea hostControl2Entry hostControlEntry +hostControlDroppedFrames hostControl2Entry.1 Counter32 read-only current +hostControlCreateTime hostControl2Entry.2 LastCreateTime read-only current +matrixControl2Table matrix.4 Aggregate not-accessible current +matrixControl2Entry matrixControl2Table.1 Aggregate not-accessible current +%ea matrixControl2Entry matrixControlEntry +matrixControlDroppedFrames matrixControl2Entry.1 Counter32 read-only current +matrixControlCreateTime matrixControl2Entry.2 LastCreateTime read-only current +channel2Table filter.3 Aggregate not-accessible current +channel2Entry channel2Table.1 Aggregate not-accessible current +%ea channel2Entry channelEntry +channelDroppedFrames channel2Entry.1 Counter32 read-only current +channelCreateTime channel2Entry.2 LastCreateTime read-only current +filter2Table filter.4 Aggregate not-accessible current +filter2Entry filter2Table.1 Aggregate not-accessible current +%ea filter2Entry filterEntry +filterProtocolDirDataLocalIndex filter2Entry.1 Integer32 read-create current +%er filterProtocolDirDataLocalIndex 0 2147483647 +filterProtocolDirLocalIndex filter2Entry.2 Integer32 read-create current +%er filterProtocolDirLocalIndex 0 2147483647 +ringStationControl2Table tokenRing.7 Aggregate not-accessible deprecated +ringStationControl2Entry ringStationControl2Table.1 Aggregate not-accessible deprecated +%ea ringStationControl2Entry ringStationControlEntry +ringStationControlDroppedFrames ringStationControl2Entry.1 Counter32 read-only deprecated +ringStationControlCreateTime ringStationControl2Entry.2 LastCreateTime read-only deprecated +sourceRoutingStats2Table tokenRing.8 Aggregate not-accessible deprecated +sourceRoutingStats2Entry sourceRoutingStats2Table.1 Aggregate not-accessible deprecated +%ea sourceRoutingStats2Entry sourceRoutingStatsEntry +sourceRoutingStatsDroppedFrames sourceRoutingStats2Entry.1 Counter32 read-only deprecated +sourceRoutingStatsCreateTime sourceRoutingStats2Entry.2 LastCreateTime read-only deprecated +protocolDirLastChange protocolDir.1 TimeStamp read-only current +protocolDirTable protocolDir.2 Aggregate not-accessible current +protocolDirEntry protocolDirTable.1 Aggregate not-accessible current +%ei protocolDirEntry "protocolDirID protocolDirParameters" +protocolDirID protocolDirEntry.1 OctetString not-accessible current +%er protocolDirID 4 128 +protocolDirParameters protocolDirEntry.2 OctetString not-accessible current +%er protocolDirParameters 1 32 +protocolDirLocalIndex protocolDirEntry.3 Integer32 read-only current +%er protocolDirLocalIndex 1 2147483647 +protocolDirDescr protocolDirEntry.4 DisplayString read-create current +%er protocolDirDescr 1 64 +protocolDirType protocolDirEntry.5 Bits read-only current +%ev protocolDirType extensible 0 +%ev protocolDirType addressRecognitionCapable 1 +protocolDirAddressMapConfig protocolDirEntry.6 INTEGER read-create current +%ev protocolDirAddressMapConfig notSupported 1 +%ev protocolDirAddressMapConfig supportedOff 2 +%ev protocolDirAddressMapConfig supportedOn 3 +protocolDirHostConfig protocolDirEntry.7 INTEGER read-create current +%ev protocolDirHostConfig notSupported 1 +%ev protocolDirHostConfig supportedOff 2 +%ev protocolDirHostConfig supportedOn 3 +protocolDirMatrixConfig protocolDirEntry.8 INTEGER read-create current +%ev protocolDirMatrixConfig notSupported 1 +%ev protocolDirMatrixConfig supportedOff 2 +%ev protocolDirMatrixConfig supportedOn 3 +protocolDirOwner protocolDirEntry.9 OwnerString read-create current +protocolDirStatus protocolDirEntry.10 RowStatus read-create current +protocolDistControlTable protocolDist.1 Aggregate not-accessible current +protocolDistControlEntry protocolDistControlTable.1 Aggregate not-accessible current +%ei protocolDistControlEntry "protocolDistControlIndex" +protocolDistControlIndex protocolDistControlEntry.1 Integer32 not-accessible current +%er protocolDistControlIndex 1 65535 +protocolDistControlDataSource protocolDistControlEntry.2 DataSource read-create current +protocolDistControlDroppedFrames protocolDistControlEntry.3 Counter32 read-only current +protocolDistControlCreateTime protocolDistControlEntry.4 LastCreateTime read-only current +protocolDistControlOwner protocolDistControlEntry.5 OwnerString read-create current +protocolDistControlStatus protocolDistControlEntry.6 RowStatus read-create current +protocolDistStatsTable protocolDist.2 Aggregate not-accessible current +protocolDistStatsEntry protocolDistStatsTable.1 Aggregate not-accessible current +%ei protocolDistStatsEntry "protocolDistControlIndex protocolDirLocalIndex" +protocolDistStatsPkts protocolDistStatsEntry.1 ZeroBasedCounter32 read-only current +protocolDistStatsOctets protocolDistStatsEntry.2 ZeroBasedCounter32 read-only current +addressMapInserts addressMap.1 Counter32 read-only current +addressMapDeletes addressMap.2 Counter32 read-only current +addressMapMaxDesiredEntries addressMap.3 Integer32 read-write current +%er addressMapMaxDesiredEntries -1 2147483647 +addressMapControlTable addressMap.4 Aggregate not-accessible current +addressMapControlEntry addressMapControlTable.1 Aggregate not-accessible current +%ei addressMapControlEntry "addressMapControlIndex" +addressMapControlIndex addressMapControlEntry.1 Integer32 not-accessible current +%er addressMapControlIndex 1 65535 +addressMapControlDataSource addressMapControlEntry.2 DataSource read-create current +addressMapControlDroppedFrames addressMapControlEntry.3 Counter32 read-only current +addressMapControlOwner addressMapControlEntry.4 OwnerString read-create current +addressMapControlStatus addressMapControlEntry.5 RowStatus read-create current +addressMapTable addressMap.5 Aggregate not-accessible current +addressMapEntry addressMapTable.1 Aggregate not-accessible current +%ei addressMapEntry "addressMapTimeMark protocolDirLocalIndex addressMapNetworkAddress addressMapSource" +addressMapTimeMark addressMapEntry.1 TimeFilter not-accessible current +addressMapNetworkAddress addressMapEntry.2 OctetString not-accessible current +%er addressMapNetworkAddress 1 255 +addressMapSource addressMapEntry.3 ObjectID not-accessible current +addressMapPhysicalAddress addressMapEntry.4 OctetString read-only current +addressMapLastChange addressMapEntry.5 TimeStamp read-only current +hlHostControlTable nlHost.1 Aggregate not-accessible current +hlHostControlEntry hlHostControlTable.1 Aggregate not-accessible current +%ei hlHostControlEntry "hlHostControlIndex" +hlHostControlIndex hlHostControlEntry.1 Integer32 not-accessible current +%er hlHostControlIndex 1 65535 +hlHostControlDataSource hlHostControlEntry.2 DataSource read-create current +hlHostControlNlDroppedFrames hlHostControlEntry.3 Counter32 read-only current +hlHostControlNlInserts hlHostControlEntry.4 Counter32 read-only current +hlHostControlNlDeletes hlHostControlEntry.5 Counter32 read-only current +hlHostControlNlMaxDesiredEntries hlHostControlEntry.6 Integer32 read-create current +%er hlHostControlNlMaxDesiredEntries -1 2147483647 +hlHostControlAlDroppedFrames hlHostControlEntry.7 Counter32 read-only current +hlHostControlAlInserts hlHostControlEntry.8 Counter32 read-only current +hlHostControlAlDeletes hlHostControlEntry.9 Counter32 read-only current +hlHostControlAlMaxDesiredEntries hlHostControlEntry.10 Integer32 read-create current +%er hlHostControlAlMaxDesiredEntries -1 2147483647 +hlHostControlOwner hlHostControlEntry.11 OwnerString read-create current +hlHostControlStatus hlHostControlEntry.12 RowStatus read-create current +nlHostTable nlHost.2 Aggregate not-accessible current +nlHostEntry nlHostTable.1 Aggregate not-accessible current +%ei nlHostEntry "hlHostControlIndex nlHostTimeMark protocolDirLocalIndex nlHostAddress" +nlHostTimeMark nlHostEntry.1 TimeFilter not-accessible current +nlHostAddress nlHostEntry.2 OctetString not-accessible current +%er nlHostAddress 1 255 +nlHostInPkts nlHostEntry.3 ZeroBasedCounter32 read-only current +nlHostOutPkts nlHostEntry.4 ZeroBasedCounter32 read-only current +nlHostInOctets nlHostEntry.5 ZeroBasedCounter32 read-only current +nlHostOutOctets nlHostEntry.6 ZeroBasedCounter32 read-only current +nlHostOutMacNonUnicastPkts nlHostEntry.7 ZeroBasedCounter32 read-only current +nlHostCreateTime nlHostEntry.8 LastCreateTime read-only current +hlMatrixControlTable nlMatrix.1 Aggregate not-accessible current +hlMatrixControlEntry hlMatrixControlTable.1 Aggregate not-accessible current +%ei hlMatrixControlEntry "hlMatrixControlIndex" +hlMatrixControlIndex hlMatrixControlEntry.1 Integer32 not-accessible current +%er hlMatrixControlIndex 1 65535 +hlMatrixControlDataSource hlMatrixControlEntry.2 DataSource read-create current +hlMatrixControlNlDroppedFrames hlMatrixControlEntry.3 Counter32 read-only current +hlMatrixControlNlInserts hlMatrixControlEntry.4 Counter32 read-only current +hlMatrixControlNlDeletes hlMatrixControlEntry.5 Counter32 read-only current +hlMatrixControlNlMaxDesiredEntries hlMatrixControlEntry.6 Integer32 read-create current +%er hlMatrixControlNlMaxDesiredEntries -1 2147483647 +hlMatrixControlAlDroppedFrames hlMatrixControlEntry.7 Counter32 read-only current +hlMatrixControlAlInserts hlMatrixControlEntry.8 Counter32 read-only current +hlMatrixControlAlDeletes hlMatrixControlEntry.9 Counter32 read-only current +hlMatrixControlAlMaxDesiredEntries hlMatrixControlEntry.10 Integer32 read-create current +%er hlMatrixControlAlMaxDesiredEntries -1 2147483647 +hlMatrixControlOwner hlMatrixControlEntry.11 OwnerString read-create current +hlMatrixControlStatus hlMatrixControlEntry.12 RowStatus read-create current +nlMatrixSDTable nlMatrix.2 Aggregate not-accessible current +nlMatrixSDEntry nlMatrixSDTable.1 Aggregate not-accessible current +%ei nlMatrixSDEntry "hlMatrixControlIndex nlMatrixSDTimeMark protocolDirLocalIndex nlMatrixSDSourceAddress nlMatrixSDDestAddress" +nlMatrixSDTimeMark nlMatrixSDEntry.1 TimeFilter not-accessible current +nlMatrixSDSourceAddress nlMatrixSDEntry.2 OctetString not-accessible current +%er nlMatrixSDSourceAddress 1 255 +nlMatrixSDDestAddress nlMatrixSDEntry.3 OctetString not-accessible current +%er nlMatrixSDDestAddress 1 255 +nlMatrixSDPkts nlMatrixSDEntry.4 ZeroBasedCounter32 read-only current +nlMatrixSDOctets nlMatrixSDEntry.5 ZeroBasedCounter32 read-only current +nlMatrixSDCreateTime nlMatrixSDEntry.6 LastCreateTime read-only current +nlMatrixDSTable nlMatrix.3 Aggregate not-accessible current +nlMatrixDSEntry nlMatrixDSTable.1 Aggregate not-accessible current +%ei nlMatrixDSEntry "hlMatrixControlIndex nlMatrixDSTimeMark protocolDirLocalIndex nlMatrixDSDestAddress nlMatrixDSSourceAddress" +nlMatrixDSTimeMark nlMatrixDSEntry.1 TimeFilter not-accessible current +nlMatrixDSSourceAddress nlMatrixDSEntry.2 OctetString not-accessible current +%er nlMatrixDSSourceAddress 1 255 +nlMatrixDSDestAddress nlMatrixDSEntry.3 OctetString not-accessible current +%er nlMatrixDSDestAddress 1 255 +nlMatrixDSPkts nlMatrixDSEntry.4 ZeroBasedCounter32 read-only current +nlMatrixDSOctets nlMatrixDSEntry.5 ZeroBasedCounter32 read-only current +nlMatrixDSCreateTime nlMatrixDSEntry.6 LastCreateTime read-only current +nlMatrixTopNControlTable nlMatrix.4 Aggregate not-accessible current +nlMatrixTopNControlEntry nlMatrixTopNControlTable.1 Aggregate not-accessible current +%ei nlMatrixTopNControlEntry "nlMatrixTopNControlIndex" +nlMatrixTopNControlIndex nlMatrixTopNControlEntry.1 Integer32 not-accessible current +%er nlMatrixTopNControlIndex 1 65535 +nlMatrixTopNControlMatrixIndex nlMatrixTopNControlEntry.2 Integer32 read-create current +%er nlMatrixTopNControlMatrixIndex 1 65535 +nlMatrixTopNControlRateBase nlMatrixTopNControlEntry.3 INTEGER read-create current +%ev nlMatrixTopNControlRateBase nlMatrixTopNPkts 1 +%ev nlMatrixTopNControlRateBase nlMatrixTopNOctets 2 +%ev nlMatrixTopNControlRateBase nlMatrixTopNHighCapacityPkts 3 +%ev nlMatrixTopNControlRateBase nlMatrixTopNHighCapacityOctets 4 +nlMatrixTopNControlTimeRemaining nlMatrixTopNControlEntry.4 Integer32 read-create current +%er nlMatrixTopNControlTimeRemaining 0 2147483647 +nlMatrixTopNControlGeneratedReports nlMatrixTopNControlEntry.5 Counter32 read-only current +nlMatrixTopNControlDuration nlMatrixTopNControlEntry.6 Integer32 read-only current +nlMatrixTopNControlRequestedSize nlMatrixTopNControlEntry.7 Integer32 read-create current +%er nlMatrixTopNControlRequestedSize 0 2147483647 +nlMatrixTopNControlGrantedSize nlMatrixTopNControlEntry.8 Integer32 read-only current +%er nlMatrixTopNControlGrantedSize 0 2147483647 +nlMatrixTopNControlStartTime nlMatrixTopNControlEntry.9 TimeStamp read-only current +nlMatrixTopNControlOwner nlMatrixTopNControlEntry.10 OwnerString read-create current +nlMatrixTopNControlStatus nlMatrixTopNControlEntry.11 RowStatus read-create current +nlMatrixTopNTable nlMatrix.5 Aggregate not-accessible current +nlMatrixTopNEntry nlMatrixTopNTable.1 Aggregate not-accessible current +%ei nlMatrixTopNEntry "nlMatrixTopNControlIndex nlMatrixTopNIndex" +nlMatrixTopNIndex nlMatrixTopNEntry.1 Integer32 not-accessible current +%er nlMatrixTopNIndex 1 65535 +nlMatrixTopNProtocolDirLocalIndex nlMatrixTopNEntry.2 Integer32 read-only current +%er nlMatrixTopNProtocolDirLocalIndex 1 2147483647 +nlMatrixTopNSourceAddress nlMatrixTopNEntry.3 OctetString read-only current +%er nlMatrixTopNSourceAddress 1 255 +nlMatrixTopNDestAddress nlMatrixTopNEntry.4 OctetString read-only current +%er nlMatrixTopNDestAddress 1 255 +nlMatrixTopNPktRate nlMatrixTopNEntry.5 Gauge32 read-only current +nlMatrixTopNReversePktRate nlMatrixTopNEntry.6 Gauge32 read-only current +nlMatrixTopNOctetRate nlMatrixTopNEntry.7 Gauge32 read-only current +nlMatrixTopNReverseOctetRate nlMatrixTopNEntry.8 Gauge32 read-only current +alHostTable alHost.1 Aggregate not-accessible current +alHostEntry alHostTable.1 Aggregate not-accessible current +%ei alHostEntry "hlHostControlIndex alHostTimeMark protocolDirLocalIndex nlHostAddress protocolDirLocalIndex" +alHostTimeMark alHostEntry.1 TimeFilter not-accessible current +alHostInPkts alHostEntry.2 ZeroBasedCounter32 read-only current +alHostOutPkts alHostEntry.3 ZeroBasedCounter32 read-only current +alHostInOctets alHostEntry.4 ZeroBasedCounter32 read-only current +alHostOutOctets alHostEntry.5 ZeroBasedCounter32 read-only current +alHostCreateTime alHostEntry.6 LastCreateTime read-only current +alMatrixSDTable alMatrix.1 Aggregate not-accessible current +alMatrixSDEntry alMatrixSDTable.1 Aggregate not-accessible current +%ei alMatrixSDEntry "hlMatrixControlIndex alMatrixSDTimeMark protocolDirLocalIndex nlMatrixSDSourceAddress nlMatrixSDDestAddress protocolDirLocalIndex" +alMatrixSDTimeMark alMatrixSDEntry.1 TimeFilter not-accessible current +alMatrixSDPkts alMatrixSDEntry.2 ZeroBasedCounter32 read-only current +alMatrixSDOctets alMatrixSDEntry.3 ZeroBasedCounter32 read-only current +alMatrixSDCreateTime alMatrixSDEntry.4 LastCreateTime read-only current +alMatrixDSTable alMatrix.2 Aggregate not-accessible current +alMatrixDSEntry alMatrixDSTable.1 Aggregate not-accessible current +%ei alMatrixDSEntry "hlMatrixControlIndex alMatrixDSTimeMark protocolDirLocalIndex nlMatrixDSDestAddress nlMatrixDSSourceAddress protocolDirLocalIndex" +alMatrixDSTimeMark alMatrixDSEntry.1 TimeFilter not-accessible current +alMatrixDSPkts alMatrixDSEntry.2 ZeroBasedCounter32 read-only current +alMatrixDSOctets alMatrixDSEntry.3 ZeroBasedCounter32 read-only current +alMatrixDSCreateTime alMatrixDSEntry.4 LastCreateTime read-only current +alMatrixTopNControlTable alMatrix.3 Aggregate not-accessible current +alMatrixTopNControlEntry alMatrixTopNControlTable.1 Aggregate not-accessible current +%ei alMatrixTopNControlEntry "alMatrixTopNControlIndex" +alMatrixTopNControlIndex alMatrixTopNControlEntry.1 Integer32 not-accessible current +%er alMatrixTopNControlIndex 1 65535 +alMatrixTopNControlMatrixIndex alMatrixTopNControlEntry.2 Integer32 read-create current +%er alMatrixTopNControlMatrixIndex 1 65535 +alMatrixTopNControlRateBase alMatrixTopNControlEntry.3 INTEGER read-create current +%ev alMatrixTopNControlRateBase alMatrixTopNTerminalsPkts 1 +%ev alMatrixTopNControlRateBase alMatrixTopNTerminalsOctets 2 +%ev alMatrixTopNControlRateBase alMatrixTopNAllPkts 3 +%ev alMatrixTopNControlRateBase alMatrixTopNAllOctets 4 +%ev alMatrixTopNControlRateBase alMatrixTopNTerminalsHighCapacityPkts 5 +%ev alMatrixTopNControlRateBase alMatrixTopNTerminalsHighCapacityOctets 6 +%ev alMatrixTopNControlRateBase alMatrixTopNAllHighCapacityPkts 7 +%ev alMatrixTopNControlRateBase alMatrixTopNAllHighCapacityOctets 8 +alMatrixTopNControlTimeRemaining alMatrixTopNControlEntry.4 Integer32 read-create current +%er alMatrixTopNControlTimeRemaining 0 2147483647 +alMatrixTopNControlGeneratedReports alMatrixTopNControlEntry.5 Counter32 read-only current +alMatrixTopNControlDuration alMatrixTopNControlEntry.6 Integer32 read-only current +alMatrixTopNControlRequestedSize alMatrixTopNControlEntry.7 Integer32 read-create current +%er alMatrixTopNControlRequestedSize 0 2147483647 +alMatrixTopNControlGrantedSize alMatrixTopNControlEntry.8 Integer32 read-only current +%er alMatrixTopNControlGrantedSize 0 2147483647 +alMatrixTopNControlStartTime alMatrixTopNControlEntry.9 TimeStamp read-only current +alMatrixTopNControlOwner alMatrixTopNControlEntry.10 OwnerString read-create current +alMatrixTopNControlStatus alMatrixTopNControlEntry.11 RowStatus read-create current +alMatrixTopNTable alMatrix.4 Aggregate not-accessible current +alMatrixTopNEntry alMatrixTopNTable.1 Aggregate not-accessible current +%ei alMatrixTopNEntry "alMatrixTopNControlIndex alMatrixTopNIndex" +alMatrixTopNIndex alMatrixTopNEntry.1 Integer32 not-accessible current +%er alMatrixTopNIndex 1 65535 +alMatrixTopNProtocolDirLocalIndex alMatrixTopNEntry.2 Integer32 read-only current +%er alMatrixTopNProtocolDirLocalIndex 1 2147483647 +alMatrixTopNSourceAddress alMatrixTopNEntry.3 OctetString read-only current +%er alMatrixTopNSourceAddress 1 255 +alMatrixTopNDestAddress alMatrixTopNEntry.4 OctetString read-only current +%er alMatrixTopNDestAddress 1 255 +alMatrixTopNAppProtocolDirLocalIndex alMatrixTopNEntry.5 Integer32 read-only current +%er alMatrixTopNAppProtocolDirLocalIndex 1 2147483647 +alMatrixTopNPktRate alMatrixTopNEntry.6 Gauge32 read-only current +alMatrixTopNReversePktRate alMatrixTopNEntry.7 Gauge32 read-only current +alMatrixTopNOctetRate alMatrixTopNEntry.8 Gauge32 read-only current +alMatrixTopNReverseOctetRate alMatrixTopNEntry.9 Gauge32 read-only current +usrHistoryControlTable usrHistory.1 Aggregate not-accessible current +usrHistoryControlEntry usrHistoryControlTable.1 Aggregate not-accessible current +%ei usrHistoryControlEntry "usrHistoryControlIndex" +usrHistoryControlIndex usrHistoryControlEntry.1 Integer32 not-accessible current +%er usrHistoryControlIndex 1 65535 +usrHistoryControlObjects usrHistoryControlEntry.2 Integer32 read-create current +%er usrHistoryControlObjects 1 65535 +usrHistoryControlBucketsRequested usrHistoryControlEntry.3 Integer32 read-create current +%er usrHistoryControlBucketsRequested 1 65535 +usrHistoryControlBucketsGranted usrHistoryControlEntry.4 Integer32 read-only current +%er usrHistoryControlBucketsGranted 1 65535 +usrHistoryControlInterval usrHistoryControlEntry.5 Integer32 read-create current +%er usrHistoryControlInterval 1 2147483647 +usrHistoryControlOwner usrHistoryControlEntry.6 OwnerString read-create current +usrHistoryControlStatus usrHistoryControlEntry.7 RowStatus read-create current +usrHistoryObjectTable usrHistory.2 Aggregate not-accessible current +usrHistoryObjectEntry usrHistoryObjectTable.1 Aggregate not-accessible current +%ei usrHistoryObjectEntry "usrHistoryControlIndex usrHistoryObjectIndex" +usrHistoryObjectIndex usrHistoryObjectEntry.1 Integer32 not-accessible current +%er usrHistoryObjectIndex 1 65535 +usrHistoryObjectVariable usrHistoryObjectEntry.2 ObjectID read-create current +usrHistoryObjectSampleType usrHistoryObjectEntry.3 INTEGER read-create current +%ev usrHistoryObjectSampleType absoluteValue 1 +%ev usrHistoryObjectSampleType deltaValue 2 +usrHistoryTable usrHistory.3 Aggregate not-accessible current +usrHistoryEntry usrHistoryTable.1 Aggregate not-accessible current +%ei usrHistoryEntry "usrHistoryControlIndex usrHistorySampleIndex usrHistoryObjectIndex" +usrHistorySampleIndex usrHistoryEntry.1 Integer32 not-accessible current +%er usrHistorySampleIndex 1 2147483647 +usrHistoryIntervalStart usrHistoryEntry.2 TimeStamp read-only current +usrHistoryIntervalEnd usrHistoryEntry.3 TimeStamp read-only current +usrHistoryAbsValue usrHistoryEntry.4 Gauge32 read-only current +usrHistoryValStatus usrHistoryEntry.5 INTEGER read-only current +%ev usrHistoryValStatus valueNotAvailable 1 +%ev usrHistoryValStatus valuePositive 2 +%ev usrHistoryValStatus valueNegative 3 +probeCapabilities probeConfig.1 Bits read-only current +%ev probeCapabilities etherStats 0 +%ev probeCapabilities historyControl 1 +%ev probeCapabilities etherHistory 2 +%ev probeCapabilities alarm 3 +%ev probeCapabilities hosts 4 +%ev probeCapabilities hostTopN 5 +%ev probeCapabilities matrix 6 +%ev probeCapabilities filter 7 +%ev probeCapabilities capture 8 +%ev probeCapabilities event 9 +%ev probeCapabilities tokenRingMLStats 10 +%ev probeCapabilities tokenRingPStats 11 +%ev probeCapabilities tokenRingMLHistory 12 +%ev probeCapabilities tokenRingPHistory 13 +%ev probeCapabilities ringStation 14 +%ev probeCapabilities ringStationOrder 15 +%ev probeCapabilities ringStationConfig 16 +%ev probeCapabilities sourceRouting 17 +%ev probeCapabilities protocolDirectory 18 +%ev probeCapabilities protocolDistribution 19 +%ev probeCapabilities addressMapping 20 +%ev probeCapabilities nlHost 21 +%ev probeCapabilities nlMatrix 22 +%ev probeCapabilities alHost 23 +%ev probeCapabilities alMatrix 24 +%ev probeCapabilities usrHistory 25 +%ev probeCapabilities probeConfig 26 +probeSoftwareRev probeConfig.2 DisplayString read-only current +%er probeSoftwareRev 0 15 +probeHardwareRev probeConfig.3 DisplayString read-only current +%er probeHardwareRev 0 31 +probeDateTime probeConfig.4 OctetString read-write current +%er probeDateTime 0 0 +%er probeDateTime 8 8 +%er probeDateTime 11 11 +probeResetControl probeConfig.5 INTEGER read-write current +%ev probeResetControl running 1 +%ev probeResetControl warmBoot 2 +%ev probeResetControl coldBoot 3 +probeDownloadFile probeConfig.6 DisplayString read-write deprecated +%er probeDownloadFile 0 127 +probeDownloadTFTPServer probeConfig.7 IpAddress read-write deprecated +probeDownloadAction probeConfig.8 INTEGER read-write deprecated +%ev probeDownloadAction notDownloading 1 +%ev probeDownloadAction downloadToPROM 2 +%ev probeDownloadAction downloadToRAM 3 +probeDownloadStatus probeConfig.9 INTEGER read-only deprecated +%ev probeDownloadStatus downloadSuccess 1 +%ev probeDownloadStatus downloadStatusUnknown 2 +%ev probeDownloadStatus downloadGeneralError 3 +%ev probeDownloadStatus downloadNoResponseFromServer 4 +%ev probeDownloadStatus downloadChecksumError 5 +%ev probeDownloadStatus downloadIncompatibleImage 6 +%ev probeDownloadStatus downloadTftpFileNotFound 7 +%ev probeDownloadStatus downloadTftpAccessViolation 8 +serialConfigTable probeConfig.10 Aggregate not-accessible deprecated +serialConfigEntry serialConfigTable.1 Aggregate not-accessible deprecated +%ei serialConfigEntry "ifIndex" +serialMode serialConfigEntry.1 INTEGER read-create deprecated +%ev serialMode direct 1 +%ev serialMode modem 2 +serialProtocol serialConfigEntry.2 INTEGER read-create deprecated +%ev serialProtocol other 1 +%ev serialProtocol slip 2 +%ev serialProtocol ppp 3 +serialTimeout serialConfigEntry.3 Integer32 read-create deprecated +%er serialTimeout 1 65535 +serialModemInitString serialConfigEntry.4 ControlString read-create deprecated +%er serialModemInitString 0 255 +serialModemHangUpString serialConfigEntry.5 ControlString read-create deprecated +%er serialModemHangUpString 0 255 +serialModemConnectResp serialConfigEntry.6 DisplayString read-create deprecated +%er serialModemConnectResp 0 255 +serialModemNoConnectResp serialConfigEntry.7 DisplayString read-create deprecated +%er serialModemNoConnectResp 0 255 +serialDialoutTimeout serialConfigEntry.8 Integer32 read-create deprecated +%er serialDialoutTimeout 1 65535 +serialStatus serialConfigEntry.9 RowStatus read-create deprecated +netConfigTable probeConfig.11 Aggregate not-accessible deprecated +netConfigEntry netConfigTable.1 Aggregate not-accessible deprecated +%ei netConfigEntry "ifIndex" +netConfigIPAddress netConfigEntry.1 IpAddress read-create deprecated +netConfigSubnetMask netConfigEntry.2 IpAddress read-create deprecated +netConfigStatus netConfigEntry.3 RowStatus read-create deprecated +netDefaultGateway probeConfig.12 IpAddress read-write deprecated +trapDestTable probeConfig.13 Aggregate not-accessible deprecated +trapDestEntry trapDestTable.1 Aggregate not-accessible deprecated +%ei trapDestEntry "trapDestIndex" +trapDestIndex trapDestEntry.1 Integer32 not-accessible deprecated +%er trapDestIndex 1 65535 +trapDestCommunity trapDestEntry.2 OctetString read-create deprecated +%er trapDestCommunity 0 127 +trapDestProtocol trapDestEntry.3 INTEGER read-create deprecated +%ev trapDestProtocol ip 1 +%ev trapDestProtocol ipx 2 +trapDestAddress trapDestEntry.4 OctetString read-create deprecated +trapDestOwner trapDestEntry.5 OwnerString read-create deprecated +trapDestStatus trapDestEntry.6 RowStatus read-create deprecated +serialConnectionTable probeConfig.14 Aggregate not-accessible deprecated +serialConnectionEntry serialConnectionTable.1 Aggregate not-accessible deprecated +%ei serialConnectionEntry "serialConnectIndex" +serialConnectIndex serialConnectionEntry.1 Integer32 not-accessible deprecated +%er serialConnectIndex 1 65535 +serialConnectDestIpAddress serialConnectionEntry.2 IpAddress read-create deprecated +serialConnectType serialConnectionEntry.3 INTEGER read-create deprecated +%ev serialConnectType direct 1 +%ev serialConnectType modem 2 +%ev serialConnectType switch 3 +%ev serialConnectType modemSwitch 4 +serialConnectDialString serialConnectionEntry.4 ControlString read-create deprecated +%er serialConnectDialString 0 255 +serialConnectSwitchConnectSeq serialConnectionEntry.5 ControlString read-create deprecated +%er serialConnectSwitchConnectSeq 0 255 +serialConnectSwitchDisconnectSeq serialConnectionEntry.6 ControlString read-create deprecated +%er serialConnectSwitchDisconnectSeq 0 255 +serialConnectSwitchResetSeq serialConnectionEntry.7 ControlString read-create deprecated +%er serialConnectSwitchResetSeq 0 255 +serialConnectOwner serialConnectionEntry.8 OwnerString read-create deprecated +serialConnectStatus serialConnectionEntry.9 RowStatus read-create deprecated + +protocolDirectoryGroup rmon2MIBGroups.1 +%n0 protocolDirectoryGroup object-group +protocolDistributionGroup rmon2MIBGroups.2 +%n0 protocolDistributionGroup object-group +addressMapGroup rmon2MIBGroups.3 +%n0 addressMapGroup object-group +nlHostGroup rmon2MIBGroups.4 +%n0 nlHostGroup object-group +nlMatrixGroup rmon2MIBGroups.5 +%n0 nlMatrixGroup object-group +alHostGroup rmon2MIBGroups.6 +%n0 alHostGroup object-group +alMatrixGroup rmon2MIBGroups.7 +%n0 alMatrixGroup object-group +usrHistoryGroup rmon2MIBGroups.8 +%n0 usrHistoryGroup object-group +probeInformationGroup rmon2MIBGroups.9 +%n0 probeInformationGroup object-group +probeConfigurationGroup rmon2MIBGroups.10 +%n0 probeConfigurationGroup object-group +rmon1EnhancementGroup rmon2MIBGroups.11 +%n0 rmon1EnhancementGroup object-group +rmon1EthernetEnhancementGroup rmon2MIBGroups.12 +%n0 rmon1EthernetEnhancementGroup object-group +rmon1TokenRingEnhancementGroup rmon2MIBGroups.13 +%n0 rmon1TokenRingEnhancementGroup object-group + +rmon2MIBCompliance rmon2MIBCompliances.1 +%n0 rmon2MIBCompliance module-compliance +rmon2MIBApplicationLayerCompliance rmon2MIBCompliances.2 +%n0 rmon2MIBApplicationLayerCompliance module-compliance + diff --git a/test/dumps/mosy/SNMPv2-MIB b/test/dumps/mosy/SNMPv2-MIB new file mode 100644 index 0000000..5ef4cb8 --- /dev/null +++ b/test/dumps/mosy/SNMPv2-MIB @@ -0,0 +1,112 @@ +-- automatically generated by smidump 0.4.5, do not edit! + +-- object definitions compiled from SNMPv2-MIB + +snmpMIB snmpModules.1 +%n0 snmpMIB module-identity + +system mib-2.1 +%n0 system object-id +snmp mib-2.11 +%n0 snmp object-id +snmpMIBObjects snmpMIB.1 +%n0 snmpMIBObjects object-id +snmpTrap snmpMIBObjects.4 +%n0 snmpTrap object-id +snmpTraps snmpMIBObjects.5 +%n0 snmpTraps object-id +snmpSet snmpMIBObjects.6 +%n0 snmpSet object-id +snmpMIBConformance snmpMIB.2 +%n0 snmpMIBConformance object-id +snmpMIBCompliances snmpMIBConformance.1 +%n0 snmpMIBCompliances object-id +snmpMIBGroups snmpMIBConformance.2 +%n0 snmpMIBGroups object-id + +sysDescr system.1 DisplayString read-only current +%er sysDescr 0 255 +sysObjectID system.2 ObjectID read-only current +sysUpTime system.3 TimeTicks read-only current +sysContact system.4 DisplayString read-write current +%er sysContact 0 255 +sysName system.5 DisplayString read-write current +%er sysName 0 255 +sysLocation system.6 DisplayString read-write current +%er sysLocation 0 255 +sysServices system.7 Integer32 read-only current +%er sysServices 0 127 +sysORLastChange system.8 TimeStamp read-only current +sysORTable system.9 Aggregate not-accessible current +sysOREntry sysORTable.1 Aggregate not-accessible current +%ei sysOREntry "sysORIndex" +sysORIndex sysOREntry.1 Integer32 not-accessible current +%er sysORIndex 1 2147483647 +sysORID sysOREntry.2 ObjectID read-only current +sysORDescr sysOREntry.3 DisplayString read-only current +sysORUpTime sysOREntry.4 TimeStamp read-only current +snmpInPkts snmp.1 Counter32 read-only current +snmpOutPkts snmp.2 Counter32 read-only obsolete +snmpInBadVersions snmp.3 Counter32 read-only current +snmpInBadCommunityNames snmp.4 Counter32 read-only current +snmpInBadCommunityUses snmp.5 Counter32 read-only current +snmpInASNParseErrs snmp.6 Counter32 read-only current +snmpInTooBigs snmp.8 Counter32 read-only obsolete +snmpInNoSuchNames snmp.9 Counter32 read-only obsolete +snmpInBadValues snmp.10 Counter32 read-only obsolete +snmpInReadOnlys snmp.11 Counter32 read-only obsolete +snmpInGenErrs snmp.12 Counter32 read-only obsolete +snmpInTotalReqVars snmp.13 Counter32 read-only obsolete +snmpInTotalSetVars snmp.14 Counter32 read-only obsolete +snmpInGetRequests snmp.15 Counter32 read-only obsolete +snmpInGetNexts snmp.16 Counter32 read-only obsolete +snmpInSetRequests snmp.17 Counter32 read-only obsolete +snmpInGetResponses snmp.18 Counter32 read-only obsolete +snmpInTraps snmp.19 Counter32 read-only obsolete +snmpOutTooBigs snmp.20 Counter32 read-only obsolete +snmpOutNoSuchNames snmp.21 Counter32 read-only obsolete +snmpOutBadValues snmp.22 Counter32 read-only obsolete +snmpOutGenErrs snmp.24 Counter32 read-only obsolete +snmpOutGetRequests snmp.25 Counter32 read-only obsolete +snmpOutGetNexts snmp.26 Counter32 read-only obsolete +snmpOutSetRequests snmp.27 Counter32 read-only obsolete +snmpOutGetResponses snmp.28 Counter32 read-only obsolete +snmpOutTraps snmp.29 Counter32 read-only obsolete +snmpEnableAuthenTraps snmp.30 INTEGER read-write current +%ev snmpEnableAuthenTraps enabled 1 +%ev snmpEnableAuthenTraps disabled 2 +snmpSilentDrops snmp.31 Counter32 read-only current +snmpProxyDrops snmp.32 Counter32 read-only current +snmpTrapOID snmpTrap.1 ObjectID accessible-for-notify current +snmpTrapEnterprise snmpTrap.3 ObjectID accessible-for-notify current +snmpSetSerialNo snmpSet.1 TestAndIncr read-write current + +coldStart snmpTraps.1 +%n0 coldStart notification +warmStart snmpTraps.2 +%n0 warmStart notification +authenticationFailure snmpTraps.5 +%n0 authenticationFailure notification + +snmpSetGroup snmpMIBGroups.5 +%n0 snmpSetGroup object-group +systemGroup snmpMIBGroups.6 +%n0 systemGroup object-group +snmpBasicNotificationsGroup snmpMIBGroups.7 +%n0 snmpBasicNotificationsGroup notification-group +snmpGroup snmpMIBGroups.8 +%n0 snmpGroup object-group +snmpCommunityGroup snmpMIBGroups.9 +%n0 snmpCommunityGroup object-group +snmpObsoleteGroup snmpMIBGroups.10 +%n0 snmpObsoleteGroup object-group +snmpWarmStartNotificationGroup snmpMIBGroups.11 +%n0 snmpWarmStartNotificationGroup notification-group +snmpNotificationGroup snmpMIBGroups.12 +%n0 snmpNotificationGroup object-group + +snmpBasicCompliance snmpMIBCompliances.2 +%n0 snmpBasicCompliance module-compliance +snmpBasicComplianceRev2 snmpMIBCompliances.3 +%n0 snmpBasicComplianceRev2 module-compliance + diff --git a/test/dumps/netsnmp/Makefile.am b/test/dumps/netsnmp/Makefile.am new file mode 100644 index 0000000..45a9060 --- /dev/null +++ b/test/dumps/netsnmp/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1038 2000-11-13 11:39:43Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/netsnmp/Makefile.in b/test/dumps/netsnmp/Makefile.in new file mode 100644 index 0000000..c68628c --- /dev/null +++ b/test/dumps/netsnmp/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1038 2000-11-13 11:39:43Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/netsnmp +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/netsnmp/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/netsnmp/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/netsnmp/if-mib-agt-stub.c b/test/dumps/netsnmp/if-mib-agt-stub.c new file mode 100644 index 0000000..50c0172 --- /dev/null +++ b/test/dumps/netsnmp/if-mib-agt-stub.c @@ -0,0 +1,794 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the IF-MIB module. + * + * $Id: if-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "if-mib.h" + +#include +#include +#include +#include +#include + +/* + * Forward declaration of read methods for groups of scalars and tables: + */ + +static unsigned char * +read_interfaces_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifMIBObjects_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifXEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifStackEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifTestEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifRcvAddressEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_ifAdminStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifLinkUpDownTrapEnable_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifPromiscuousMode_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifAlias_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifStackStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifTestId_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifTestStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifTestType_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifTestOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifRcvAddressStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifRcvAddressType_stub(int, u_char *, u_char, int, u_char *, oid *, int); + +/* + * Definitions of tags that are used internally to read/write + * the selected object type. These tags should be unique. + */ + +#define IFNUMBER 1 + +static oid interfaces_base[] = {1, 3, 6, 1, 2, 1, 2}; + +struct variable interfaces_variables[] = { + { IFNUMBER, ASN_INTEGER, RONLY, read_interfaces_stub, 1, {1} }, +}; + +#define IFINDEX 1 +#define IFDESCR 2 +#define IFTYPE 3 +#define IFMTU 4 +#define IFSPEED 5 +#define IFPHYSADDRESS 6 +#define IFADMINSTATUS 7 +#define IFOPERSTATUS 8 +#define IFLASTCHANGE 9 +#define IFINOCTETS 10 +#define IFINUCASTPKTS 11 +#define IFINNUCASTPKTS 12 +#define IFINDISCARDS 13 +#define IFINERRORS 14 +#define IFINUNKNOWNPROTOS 15 +#define IFOUTOCTETS 16 +#define IFOUTUCASTPKTS 17 +#define IFOUTNUCASTPKTS 18 +#define IFOUTDISCARDS 19 +#define IFOUTERRORS 20 +#define IFOUTQLEN 21 +#define IFSPECIFIC 22 + +static oid ifEntry_base[] = {1, 3, 6, 1, 2, 1, 2, 2, 1}; + +struct variable ifEntry_variables[] = { + { IFINDEX, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {1} }, + { IFDESCR, ASN_OCTET_STR, RONLY, read_ifEntry_stub, 1, {2} }, + { IFTYPE, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {3} }, + { IFMTU, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {4} }, + { IFSPEED, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {5} }, + { IFPHYSADDRESS, ASN_OCTET_STR, RONLY, read_ifEntry_stub, 1, {6} }, + { IFADMINSTATUS, ASN_INTEGER, RWRITE, read_ifEntry_stub, 1, {7} }, + { IFOPERSTATUS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {8} }, + { IFLASTCHANGE, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {9} }, + { IFINOCTETS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {10} }, + { IFINUCASTPKTS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {11} }, + { IFINNUCASTPKTS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {12} }, + { IFINDISCARDS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {13} }, + { IFINERRORS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {14} }, + { IFINUNKNOWNPROTOS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {15} }, + { IFOUTOCTETS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {16} }, + { IFOUTUCASTPKTS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {17} }, + { IFOUTNUCASTPKTS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {18} }, + { IFOUTDISCARDS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {19} }, + { IFOUTERRORS, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {20} }, + { IFOUTQLEN, ASN_INTEGER, RONLY, read_ifEntry_stub, 1, {21} }, + { IFSPECIFIC, ASN_OBJECT_ID, RONLY, read_ifEntry_stub, 1, {22} }, +}; + +#define IFTABLELASTCHANGE 5 +#define IFSTACKLASTCHANGE 6 + +static oid ifMIBObjects_base[] = {1, 3, 6, 1, 2, 1, 31, 1}; + +struct variable ifMIBObjects_variables[] = { + { IFTABLELASTCHANGE, ASN_INTEGER, RONLY, read_ifMIBObjects_stub, 1, {5} }, + { IFSTACKLASTCHANGE, ASN_INTEGER, RONLY, read_ifMIBObjects_stub, 1, {6} }, +}; + +#define IFNAME 1 +#define IFINMULTICASTPKTS 2 +#define IFINBROADCASTPKTS 3 +#define IFOUTMULTICASTPKTS 4 +#define IFOUTBROADCASTPKTS 5 +#define IFHCINOCTETS 6 +#define IFHCINUCASTPKTS 7 +#define IFHCINMULTICASTPKTS 8 +#define IFHCINBROADCASTPKTS 9 +#define IFHCOUTOCTETS 10 +#define IFHCOUTUCASTPKTS 11 +#define IFHCOUTMULTICASTPKTS 12 +#define IFHCOUTBROADCASTPKTS 13 +#define IFLINKUPDOWNTRAPENABLE 14 +#define IFHIGHSPEED 15 +#define IFPROMISCUOUSMODE 16 +#define IFCONNECTORPRESENT 17 +#define IFALIAS 18 +#define IFCOUNTERDISCONTINUITYTIME 19 + +static oid ifXEntry_base[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1}; + +struct variable ifXEntry_variables[] = { + { IFNAME, ASN_OCTET_STR, RONLY, read_ifXEntry_stub, 1, {1} }, + { IFINMULTICASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {2} }, + { IFINBROADCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {3} }, + { IFOUTMULTICASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {4} }, + { IFOUTBROADCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {5} }, + { IFHCINOCTETS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {6} }, + { IFHCINUCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {7} }, + { IFHCINMULTICASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {8} }, + { IFHCINBROADCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {9} }, + { IFHCOUTOCTETS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {10} }, + { IFHCOUTUCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {11} }, + { IFHCOUTMULTICASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {12} }, + { IFHCOUTBROADCASTPKTS, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {13} }, + { IFLINKUPDOWNTRAPENABLE, ASN_INTEGER, RWRITE, read_ifXEntry_stub, 1, {14} }, + { IFHIGHSPEED, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {15} }, + { IFPROMISCUOUSMODE, ASN_INTEGER, RWRITE, read_ifXEntry_stub, 1, {16} }, + { IFCONNECTORPRESENT, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {17} }, + { IFALIAS, ASN_OCTET_STR, RWRITE, read_ifXEntry_stub, 1, {18} }, + { IFCOUNTERDISCONTINUITYTIME, ASN_INTEGER, RONLY, read_ifXEntry_stub, 1, {19} }, +}; + +#define IFSTACKSTATUS 3 + +static oid ifStackEntry_base[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1}; + +struct variable ifStackEntry_variables[] = { + { IFSTACKSTATUS, ASN_INTEGER, RWRITE, read_ifStackEntry_stub, 1, {3} }, +}; + +#define IFTESTID 1 +#define IFTESTSTATUS 2 +#define IFTESTTYPE 3 +#define IFTESTRESULT 4 +#define IFTESTCODE 5 +#define IFTESTOWNER 6 + +static oid ifTestEntry_base[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1}; + +struct variable ifTestEntry_variables[] = { + { IFTESTID, ASN_INTEGER, RWRITE, read_ifTestEntry_stub, 1, {1} }, + { IFTESTSTATUS, ASN_INTEGER, RWRITE, read_ifTestEntry_stub, 1, {2} }, + { IFTESTTYPE, ASN_OBJECT_ID, RWRITE, read_ifTestEntry_stub, 1, {3} }, + { IFTESTRESULT, ASN_INTEGER, RONLY, read_ifTestEntry_stub, 1, {4} }, + { IFTESTCODE, ASN_OBJECT_ID, RONLY, read_ifTestEntry_stub, 1, {5} }, + { IFTESTOWNER, ASN_OCTET_STR, RWRITE, read_ifTestEntry_stub, 1, {6} }, +}; + +#define IFRCVADDRESSSTATUS 2 +#define IFRCVADDRESSTYPE 3 + +static oid ifRcvAddressEntry_base[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1}; + +struct variable ifRcvAddressEntry_variables[] = { + { IFRCVADDRESSSTATUS, ASN_INTEGER, RWRITE, read_ifRcvAddressEntry_stub, 1, {2} }, + { IFRCVADDRESSTYPE, ASN_INTEGER, RWRITE, read_ifRcvAddressEntry_stub, 1, {3} }, +}; + + + +/* + * Registration functions for the various MIB groups. + */ + +int register_interfaces() +{ + return register_mib("interfaces", + interfaces_variables, + sizeof(struct variable), + sizeof(interfaces_variables)/sizeof(struct variable), + interfaces_base, + sizeof(interfaces_base)/sizeof(oid)); +}; + + +int register_ifEntry() +{ + return register_mib("ifEntry", + ifEntry_variables, + sizeof(struct variable), + sizeof(ifEntry_variables)/sizeof(struct variable), + ifEntry_base, + sizeof(ifEntry_base)/sizeof(oid)); +}; + + +int register_ifMIBObjects() +{ + return register_mib("ifMIBObjects", + ifMIBObjects_variables, + sizeof(struct variable), + sizeof(ifMIBObjects_variables)/sizeof(struct variable), + ifMIBObjects_base, + sizeof(ifMIBObjects_base)/sizeof(oid)); +}; + + +int register_ifXEntry() +{ + return register_mib("ifXEntry", + ifXEntry_variables, + sizeof(struct variable), + sizeof(ifXEntry_variables)/sizeof(struct variable), + ifXEntry_base, + sizeof(ifXEntry_base)/sizeof(oid)); +}; + + +int register_ifStackEntry() +{ + return register_mib("ifStackEntry", + ifStackEntry_variables, + sizeof(struct variable), + sizeof(ifStackEntry_variables)/sizeof(struct variable), + ifStackEntry_base, + sizeof(ifStackEntry_base)/sizeof(oid)); +}; + + +int register_ifTestEntry() +{ + return register_mib("ifTestEntry", + ifTestEntry_variables, + sizeof(struct variable), + sizeof(ifTestEntry_variables)/sizeof(struct variable), + ifTestEntry_base, + sizeof(ifTestEntry_base)/sizeof(oid)); +}; + + +int register_ifRcvAddressEntry() +{ + return register_mib("ifRcvAddressEntry", + ifRcvAddressEntry_variables, + sizeof(struct variable), + sizeof(ifRcvAddressEntry_variables)/sizeof(struct variable), + ifRcvAddressEntry_base, + sizeof(ifRcvAddressEntry_base)/sizeof(oid)); +}; + + +/* + * Read methods for groups of scalars and tables: + */ + +static unsigned char * +read_interfaces_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static interfaces_t interfaces; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_interfaces(&interfaces); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFNUMBER: + return (unsigned char *) &interfaces.ifNumber; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifEntry_t ifEntry; + + /* call the user supplied function to retrieve values */ + + read_ifEntry(&ifEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFINDEX: + return (unsigned char *) &ifEntry.ifIndex; + + case IFDESCR: + *var_len = ifEntry._ifDescrLength; + return (unsigned char *) ifEntry.ifDescr; + + case IFTYPE: + return (unsigned char *) &ifEntry.ifType; + + case IFMTU: + return (unsigned char *) &ifEntry.ifMtu; + + case IFSPEED: + return (unsigned char *) &ifEntry.ifSpeed; + + case IFPHYSADDRESS: + *var_len = ifEntry._ifPhysAddressLength; + return (unsigned char *) ifEntry.ifPhysAddress; + + case IFADMINSTATUS: + return (unsigned char *) &ifEntry.ifAdminStatus; + + case IFOPERSTATUS: + return (unsigned char *) &ifEntry.ifOperStatus; + + case IFLASTCHANGE: + return (unsigned char *) &ifEntry.ifLastChange; + + case IFINOCTETS: + return (unsigned char *) &ifEntry.ifInOctets; + + case IFINUCASTPKTS: + return (unsigned char *) &ifEntry.ifInUcastPkts; + + case IFINNUCASTPKTS: + return (unsigned char *) &ifEntry.ifInNUcastPkts; + + case IFINDISCARDS: + return (unsigned char *) &ifEntry.ifInDiscards; + + case IFINERRORS: + return (unsigned char *) &ifEntry.ifInErrors; + + case IFINUNKNOWNPROTOS: + return (unsigned char *) &ifEntry.ifInUnknownProtos; + + case IFOUTOCTETS: + return (unsigned char *) &ifEntry.ifOutOctets; + + case IFOUTUCASTPKTS: + return (unsigned char *) &ifEntry.ifOutUcastPkts; + + case IFOUTNUCASTPKTS: + return (unsigned char *) &ifEntry.ifOutNUcastPkts; + + case IFOUTDISCARDS: + return (unsigned char *) &ifEntry.ifOutDiscards; + + case IFOUTERRORS: + return (unsigned char *) &ifEntry.ifOutErrors; + + case IFOUTQLEN: + return (unsigned char *) &ifEntry.ifOutQLen; + + case IFSPECIFIC: + *var_len = ifEntry._ifSpecificLength; + return (unsigned char *) ifEntry.ifSpecific; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifMIBObjects_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifMIBObjects_t ifMIBObjects; + + /* call the user supplied function to retrieve values */ + + read_ifMIBObjects(&ifMIBObjects); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFTABLELASTCHANGE: + return (unsigned char *) &ifMIBObjects.ifTableLastChange; + + case IFSTACKLASTCHANGE: + return (unsigned char *) &ifMIBObjects.ifStackLastChange; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifXEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifXEntry_t ifXEntry; + + /* call the user supplied function to retrieve values */ + + read_ifXEntry(&ifXEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFNAME: + *var_len = ifXEntry._ifNameLength; + return (unsigned char *) ifXEntry.ifName; + + case IFINMULTICASTPKTS: + return (unsigned char *) &ifXEntry.ifInMulticastPkts; + + case IFINBROADCASTPKTS: + return (unsigned char *) &ifXEntry.ifInBroadcastPkts; + + case IFOUTMULTICASTPKTS: + return (unsigned char *) &ifXEntry.ifOutMulticastPkts; + + case IFOUTBROADCASTPKTS: + return (unsigned char *) &ifXEntry.ifOutBroadcastPkts; + + case IFHCINOCTETS: + /* add code to return the value here */ + + case IFHCINUCASTPKTS: + /* add code to return the value here */ + + case IFHCINMULTICASTPKTS: + /* add code to return the value here */ + + case IFHCINBROADCASTPKTS: + /* add code to return the value here */ + + case IFHCOUTOCTETS: + /* add code to return the value here */ + + case IFHCOUTUCASTPKTS: + /* add code to return the value here */ + + case IFHCOUTMULTICASTPKTS: + /* add code to return the value here */ + + case IFHCOUTBROADCASTPKTS: + /* add code to return the value here */ + + case IFLINKUPDOWNTRAPENABLE: + return (unsigned char *) &ifXEntry.ifLinkUpDownTrapEnable; + + case IFHIGHSPEED: + return (unsigned char *) &ifXEntry.ifHighSpeed; + + case IFPROMISCUOUSMODE: + return (unsigned char *) &ifXEntry.ifPromiscuousMode; + + case IFCONNECTORPRESENT: + return (unsigned char *) &ifXEntry.ifConnectorPresent; + + case IFALIAS: + *var_len = ifXEntry._ifAliasLength; + return (unsigned char *) ifXEntry.ifAlias; + + case IFCOUNTERDISCONTINUITYTIME: + return (unsigned char *) &ifXEntry.ifCounterDiscontinuityTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifStackEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifStackEntry_t ifStackEntry; + + /* call the user supplied function to retrieve values */ + + read_ifStackEntry(&ifStackEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFSTACKSTATUS: + return (unsigned char *) &ifStackEntry.ifStackStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifTestEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifTestEntry_t ifTestEntry; + + /* call the user supplied function to retrieve values */ + + read_ifTestEntry(&ifTestEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFTESTID: + return (unsigned char *) &ifTestEntry.ifTestId; + + case IFTESTSTATUS: + return (unsigned char *) &ifTestEntry.ifTestStatus; + + case IFTESTTYPE: + *var_len = ifTestEntry._ifTestTypeLength; + return (unsigned char *) ifTestEntry.ifTestType; + + case IFTESTRESULT: + return (unsigned char *) &ifTestEntry.ifTestResult; + + case IFTESTCODE: + *var_len = ifTestEntry._ifTestCodeLength; + return (unsigned char *) ifTestEntry.ifTestCode; + + case IFTESTOWNER: + *var_len = ifTestEntry._ifTestOwnerLength; + return (unsigned char *) ifTestEntry.ifTestOwner; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifRcvAddressEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifRcvAddressEntry_t ifRcvAddressEntry; + + /* call the user supplied function to retrieve values */ + + read_ifRcvAddressEntry(&ifRcvAddressEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFRCVADDRESSSTATUS: + return (unsigned char *) &ifRcvAddressEntry.ifRcvAddressStatus; + + case IFRCVADDRESSTYPE: + return (unsigned char *) &ifRcvAddressEntry.ifRcvAddressType; + + default: + ERROR_MSG(""); + } + + return NULL; +} + + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_ifAdminStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifLinkUpDownTrapEnable_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifPromiscuousMode_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifAlias_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifStackStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifTestId_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifTestStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifTestType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifTestOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifRcvAddressStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifRcvAddressType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + + diff --git a/test/dumps/netsnmp/if-mib-agt.c b/test/dumps/netsnmp/if-mib-agt.c new file mode 100644 index 0000000..b74b1fc --- /dev/null +++ b/test/dumps/netsnmp/if-mib-agt.c @@ -0,0 +1,38 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the IF-MIB module. + * + * $Id: if-mib-agt.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "if-mib.h" + +#include +#include +#include +#include +#include + +static oid if_mib_caps[] = {0,0}; + +void init_if_mib(void) +{ +} + +void deinit_if_mib() +{ + unregister_sysORTable(if_mib_caps, sizeof(if_mib_caps)); +} + +int term_if_mib() +{ + deinit_if_mib(); + return 0; +} + diff --git a/test/dumps/netsnmp/if-mib-mgr-stub.c b/test/dumps/netsnmp/if-mib-mgr-stub.c new file mode 100644 index 0000000..d6f8152 --- /dev/null +++ b/test/dumps/netsnmp/if-mib-mgr-stub.c @@ -0,0 +1,664 @@ +/* + * This C file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP library. + * + * This C file is derived from the IF-MIB module. + * + * $Id: if-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#include + +#include +#include +#include +#include + +#include "if-mib.h" + +static oid ifNumber[] = {1, 3, 6, 1, 2, 1, 2, 1}; +static oid ifIndex[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 1}; +static oid ifDescr[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 2}; +static oid ifType[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 3}; +static oid ifMtu[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 4}; +static oid ifSpeed[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 5}; +static oid ifPhysAddress[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 6}; +static oid ifAdminStatus[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 7}; +static oid ifOperStatus[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 8}; +static oid ifLastChange[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 9}; +static oid ifInOctets[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 10}; +static oid ifInUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 11}; +static oid ifInNUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 12}; +static oid ifInDiscards[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 13}; +static oid ifInErrors[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 14}; +static oid ifInUnknownProtos[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 15}; +static oid ifOutOctets[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 16}; +static oid ifOutUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 17}; +static oid ifOutNUcastPkts[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 18}; +static oid ifOutDiscards[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 19}; +static oid ifOutErrors[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 20}; +static oid ifOutQLen[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 21}; +static oid ifSpecific[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 22}; +static oid ifName[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 1}; +static oid ifInMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 2}; +static oid ifInBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 3}; +static oid ifOutMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 4}; +static oid ifOutBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 5}; +static oid ifHCInOctets[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 6}; +static oid ifHCInUcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 7}; +static oid ifHCInMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 8}; +static oid ifHCInBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 9}; +static oid ifHCOutOctets[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 10}; +static oid ifHCOutUcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 11}; +static oid ifHCOutMulticastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 12}; +static oid ifHCOutBroadcastPkts[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 13}; +static oid ifLinkUpDownTrapEnable[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 14}; +static oid ifHighSpeed[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 15}; +static oid ifPromiscuousMode[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 16}; +static oid ifConnectorPresent[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 17}; +static oid ifAlias[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 18}; +static oid ifCounterDiscontinuityTime[] = {1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 19}; +static oid ifStackHigherLayer[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 1}; +static oid ifStackLowerLayer[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 2}; +static oid ifStackStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 2, 1, 3}; +static oid ifTestId[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 1}; +static oid ifTestStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 2}; +static oid ifTestType[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 3}; +static oid ifTestResult[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 4}; +static oid ifTestCode[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 5}; +static oid ifTestOwner[] = {1, 3, 6, 1, 2, 1, 31, 1, 3, 1, 6}; +static oid ifRcvAddressAddress[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 1}; +static oid ifRcvAddressStatus[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 2}; +static oid ifRcvAddressType[] = {1, 3, 6, 1, 2, 1, 31, 1, 4, 1, 3}; +static oid ifTableLastChange[] = {1, 3, 6, 1, 2, 1, 31, 1, 5}; +static oid ifStackLastChange[] = {1, 3, 6, 1, 2, 1, 31, 1, 6}; + +int if_mib_mgr_get_interfaces(struct snmp_session *s, interfaces_t **interfaces) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifNumber, sizeof(ifNumber)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *interfaces = (interfaces_t *) malloc(sizeof(interfaces_t)); + if (! *interfaces) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifNumber)/sizeof(oid) + && memcmp(vars->name, ifNumber, sizeof(ifNumber)) == 0) { + (*interfaces)->__ifNumber = *vars->val.integer; + (*interfaces)->ifNumber = &((*interfaces)->__ifNumber); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifEntry(struct snmp_session *s, ifEntry_t **ifEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifIndex, sizeof(ifIndex)/sizeof(oid)); + snmp_add_null_var(request, ifDescr, sizeof(ifDescr)/sizeof(oid)); + snmp_add_null_var(request, ifType, sizeof(ifType)/sizeof(oid)); + snmp_add_null_var(request, ifMtu, sizeof(ifMtu)/sizeof(oid)); + snmp_add_null_var(request, ifSpeed, sizeof(ifSpeed)/sizeof(oid)); + snmp_add_null_var(request, ifPhysAddress, sizeof(ifPhysAddress)/sizeof(oid)); + snmp_add_null_var(request, ifAdminStatus, sizeof(ifAdminStatus)/sizeof(oid)); + snmp_add_null_var(request, ifOperStatus, sizeof(ifOperStatus)/sizeof(oid)); + snmp_add_null_var(request, ifLastChange, sizeof(ifLastChange)/sizeof(oid)); + snmp_add_null_var(request, ifInOctets, sizeof(ifInOctets)/sizeof(oid)); + snmp_add_null_var(request, ifInUcastPkts, sizeof(ifInUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifInNUcastPkts, sizeof(ifInNUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifInDiscards, sizeof(ifInDiscards)/sizeof(oid)); + snmp_add_null_var(request, ifInErrors, sizeof(ifInErrors)/sizeof(oid)); + snmp_add_null_var(request, ifInUnknownProtos, sizeof(ifInUnknownProtos)/sizeof(oid)); + snmp_add_null_var(request, ifOutOctets, sizeof(ifOutOctets)/sizeof(oid)); + snmp_add_null_var(request, ifOutUcastPkts, sizeof(ifOutUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifOutNUcastPkts, sizeof(ifOutNUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifOutDiscards, sizeof(ifOutDiscards)/sizeof(oid)); + snmp_add_null_var(request, ifOutErrors, sizeof(ifOutErrors)/sizeof(oid)); + snmp_add_null_var(request, ifOutQLen, sizeof(ifOutQLen)/sizeof(oid)); + snmp_add_null_var(request, ifSpecific, sizeof(ifSpecific)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifEntry = (ifEntry_t *) malloc(sizeof(ifEntry_t)); + if (! *ifEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifIndex)/sizeof(oid) + && memcmp(vars->name, ifIndex, sizeof(ifIndex)) == 0) { + (*ifEntry)->__ifIndex = *vars->val.integer; + (*ifEntry)->ifIndex = &((*ifEntry)->__ifIndex); + } + if (vars->name_length > sizeof(ifDescr)/sizeof(oid) + && memcmp(vars->name, ifDescr, sizeof(ifDescr)) == 0) { + memcpy((*ifEntry)->__ifDescr, vars->val.string, vars->val_len); + (*ifEntry)->_ifDescrLength = vars->val_len; + (*ifEntry)->ifDescr = (*ifEntry)->__ifDescr; + } + if (vars->name_length > sizeof(ifType)/sizeof(oid) + && memcmp(vars->name, ifType, sizeof(ifType)) == 0) { + (*ifEntry)->__ifType = *vars->val.integer; + (*ifEntry)->ifType = &((*ifEntry)->__ifType); + } + if (vars->name_length > sizeof(ifMtu)/sizeof(oid) + && memcmp(vars->name, ifMtu, sizeof(ifMtu)) == 0) { + (*ifEntry)->__ifMtu = *vars->val.integer; + (*ifEntry)->ifMtu = &((*ifEntry)->__ifMtu); + } + if (vars->name_length > sizeof(ifSpeed)/sizeof(oid) + && memcmp(vars->name, ifSpeed, sizeof(ifSpeed)) == 0) { + (*ifEntry)->__ifSpeed = *vars->val.integer; + (*ifEntry)->ifSpeed = &((*ifEntry)->__ifSpeed); + } + if (vars->name_length > sizeof(ifPhysAddress)/sizeof(oid) + && memcmp(vars->name, ifPhysAddress, sizeof(ifPhysAddress)) == 0) { + memcpy((*ifEntry)->__ifPhysAddress, vars->val.string, vars->val_len); + (*ifEntry)->_ifPhysAddressLength = vars->val_len; + (*ifEntry)->ifPhysAddress = (*ifEntry)->__ifPhysAddress; + } + if (vars->name_length > sizeof(ifAdminStatus)/sizeof(oid) + && memcmp(vars->name, ifAdminStatus, sizeof(ifAdminStatus)) == 0) { + (*ifEntry)->__ifAdminStatus = *vars->val.integer; + (*ifEntry)->ifAdminStatus = &((*ifEntry)->__ifAdminStatus); + } + if (vars->name_length > sizeof(ifOperStatus)/sizeof(oid) + && memcmp(vars->name, ifOperStatus, sizeof(ifOperStatus)) == 0) { + (*ifEntry)->__ifOperStatus = *vars->val.integer; + (*ifEntry)->ifOperStatus = &((*ifEntry)->__ifOperStatus); + } + if (vars->name_length > sizeof(ifLastChange)/sizeof(oid) + && memcmp(vars->name, ifLastChange, sizeof(ifLastChange)) == 0) { + (*ifEntry)->__ifLastChange = *vars->val.integer; + (*ifEntry)->ifLastChange = &((*ifEntry)->__ifLastChange); + } + if (vars->name_length > sizeof(ifInOctets)/sizeof(oid) + && memcmp(vars->name, ifInOctets, sizeof(ifInOctets)) == 0) { + (*ifEntry)->__ifInOctets = *vars->val.integer; + (*ifEntry)->ifInOctets = &((*ifEntry)->__ifInOctets); + } + if (vars->name_length > sizeof(ifInUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifInUcastPkts, sizeof(ifInUcastPkts)) == 0) { + (*ifEntry)->__ifInUcastPkts = *vars->val.integer; + (*ifEntry)->ifInUcastPkts = &((*ifEntry)->__ifInUcastPkts); + } + if (vars->name_length > sizeof(ifInNUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifInNUcastPkts, sizeof(ifInNUcastPkts)) == 0) { + (*ifEntry)->__ifInNUcastPkts = *vars->val.integer; + (*ifEntry)->ifInNUcastPkts = &((*ifEntry)->__ifInNUcastPkts); + } + if (vars->name_length > sizeof(ifInDiscards)/sizeof(oid) + && memcmp(vars->name, ifInDiscards, sizeof(ifInDiscards)) == 0) { + (*ifEntry)->__ifInDiscards = *vars->val.integer; + (*ifEntry)->ifInDiscards = &((*ifEntry)->__ifInDiscards); + } + if (vars->name_length > sizeof(ifInErrors)/sizeof(oid) + && memcmp(vars->name, ifInErrors, sizeof(ifInErrors)) == 0) { + (*ifEntry)->__ifInErrors = *vars->val.integer; + (*ifEntry)->ifInErrors = &((*ifEntry)->__ifInErrors); + } + if (vars->name_length > sizeof(ifInUnknownProtos)/sizeof(oid) + && memcmp(vars->name, ifInUnknownProtos, sizeof(ifInUnknownProtos)) == 0) { + (*ifEntry)->__ifInUnknownProtos = *vars->val.integer; + (*ifEntry)->ifInUnknownProtos = &((*ifEntry)->__ifInUnknownProtos); + } + if (vars->name_length > sizeof(ifOutOctets)/sizeof(oid) + && memcmp(vars->name, ifOutOctets, sizeof(ifOutOctets)) == 0) { + (*ifEntry)->__ifOutOctets = *vars->val.integer; + (*ifEntry)->ifOutOctets = &((*ifEntry)->__ifOutOctets); + } + if (vars->name_length > sizeof(ifOutUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifOutUcastPkts, sizeof(ifOutUcastPkts)) == 0) { + (*ifEntry)->__ifOutUcastPkts = *vars->val.integer; + (*ifEntry)->ifOutUcastPkts = &((*ifEntry)->__ifOutUcastPkts); + } + if (vars->name_length > sizeof(ifOutNUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifOutNUcastPkts, sizeof(ifOutNUcastPkts)) == 0) { + (*ifEntry)->__ifOutNUcastPkts = *vars->val.integer; + (*ifEntry)->ifOutNUcastPkts = &((*ifEntry)->__ifOutNUcastPkts); + } + if (vars->name_length > sizeof(ifOutDiscards)/sizeof(oid) + && memcmp(vars->name, ifOutDiscards, sizeof(ifOutDiscards)) == 0) { + (*ifEntry)->__ifOutDiscards = *vars->val.integer; + (*ifEntry)->ifOutDiscards = &((*ifEntry)->__ifOutDiscards); + } + if (vars->name_length > sizeof(ifOutErrors)/sizeof(oid) + && memcmp(vars->name, ifOutErrors, sizeof(ifOutErrors)) == 0) { + (*ifEntry)->__ifOutErrors = *vars->val.integer; + (*ifEntry)->ifOutErrors = &((*ifEntry)->__ifOutErrors); + } + if (vars->name_length > sizeof(ifOutQLen)/sizeof(oid) + && memcmp(vars->name, ifOutQLen, sizeof(ifOutQLen)) == 0) { + (*ifEntry)->__ifOutQLen = *vars->val.integer; + (*ifEntry)->ifOutQLen = &((*ifEntry)->__ifOutQLen); + } + if (vars->name_length > sizeof(ifSpecific)/sizeof(oid) + && memcmp(vars->name, ifSpecific, sizeof(ifSpecific)) == 0) { + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifMIBObjects(struct snmp_session *s, ifMIBObjects_t **ifMIBObjects) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifTableLastChange, sizeof(ifTableLastChange)/sizeof(oid)); + snmp_add_null_var(request, ifStackLastChange, sizeof(ifStackLastChange)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifMIBObjects = (ifMIBObjects_t *) malloc(sizeof(ifMIBObjects_t)); + if (! *ifMIBObjects) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifTableLastChange)/sizeof(oid) + && memcmp(vars->name, ifTableLastChange, sizeof(ifTableLastChange)) == 0) { + (*ifMIBObjects)->__ifTableLastChange = *vars->val.integer; + (*ifMIBObjects)->ifTableLastChange = &((*ifMIBObjects)->__ifTableLastChange); + } + if (vars->name_length > sizeof(ifStackLastChange)/sizeof(oid) + && memcmp(vars->name, ifStackLastChange, sizeof(ifStackLastChange)) == 0) { + (*ifMIBObjects)->__ifStackLastChange = *vars->val.integer; + (*ifMIBObjects)->ifStackLastChange = &((*ifMIBObjects)->__ifStackLastChange); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifXEntry(struct snmp_session *s, ifXEntry_t **ifXEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifName, sizeof(ifName)/sizeof(oid)); + snmp_add_null_var(request, ifInMulticastPkts, sizeof(ifInMulticastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifInBroadcastPkts, sizeof(ifInBroadcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifOutMulticastPkts, sizeof(ifOutMulticastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifOutBroadcastPkts, sizeof(ifOutBroadcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCInOctets, sizeof(ifHCInOctets)/sizeof(oid)); + snmp_add_null_var(request, ifHCInUcastPkts, sizeof(ifHCInUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCInMulticastPkts, sizeof(ifHCInMulticastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCInBroadcastPkts, sizeof(ifHCInBroadcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCOutOctets, sizeof(ifHCOutOctets)/sizeof(oid)); + snmp_add_null_var(request, ifHCOutUcastPkts, sizeof(ifHCOutUcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCOutMulticastPkts, sizeof(ifHCOutMulticastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifHCOutBroadcastPkts, sizeof(ifHCOutBroadcastPkts)/sizeof(oid)); + snmp_add_null_var(request, ifLinkUpDownTrapEnable, sizeof(ifLinkUpDownTrapEnable)/sizeof(oid)); + snmp_add_null_var(request, ifHighSpeed, sizeof(ifHighSpeed)/sizeof(oid)); + snmp_add_null_var(request, ifPromiscuousMode, sizeof(ifPromiscuousMode)/sizeof(oid)); + snmp_add_null_var(request, ifConnectorPresent, sizeof(ifConnectorPresent)/sizeof(oid)); + snmp_add_null_var(request, ifAlias, sizeof(ifAlias)/sizeof(oid)); + snmp_add_null_var(request, ifCounterDiscontinuityTime, sizeof(ifCounterDiscontinuityTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifXEntry = (ifXEntry_t *) malloc(sizeof(ifXEntry_t)); + if (! *ifXEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifName)/sizeof(oid) + && memcmp(vars->name, ifName, sizeof(ifName)) == 0) { + memcpy((*ifXEntry)->__ifName, vars->val.string, vars->val_len); + (*ifXEntry)->_ifNameLength = vars->val_len; + (*ifXEntry)->ifName = (*ifXEntry)->__ifName; + } + if (vars->name_length > sizeof(ifInMulticastPkts)/sizeof(oid) + && memcmp(vars->name, ifInMulticastPkts, sizeof(ifInMulticastPkts)) == 0) { + (*ifXEntry)->__ifInMulticastPkts = *vars->val.integer; + (*ifXEntry)->ifInMulticastPkts = &((*ifXEntry)->__ifInMulticastPkts); + } + if (vars->name_length > sizeof(ifInBroadcastPkts)/sizeof(oid) + && memcmp(vars->name, ifInBroadcastPkts, sizeof(ifInBroadcastPkts)) == 0) { + (*ifXEntry)->__ifInBroadcastPkts = *vars->val.integer; + (*ifXEntry)->ifInBroadcastPkts = &((*ifXEntry)->__ifInBroadcastPkts); + } + if (vars->name_length > sizeof(ifOutMulticastPkts)/sizeof(oid) + && memcmp(vars->name, ifOutMulticastPkts, sizeof(ifOutMulticastPkts)) == 0) { + (*ifXEntry)->__ifOutMulticastPkts = *vars->val.integer; + (*ifXEntry)->ifOutMulticastPkts = &((*ifXEntry)->__ifOutMulticastPkts); + } + if (vars->name_length > sizeof(ifOutBroadcastPkts)/sizeof(oid) + && memcmp(vars->name, ifOutBroadcastPkts, sizeof(ifOutBroadcastPkts)) == 0) { + (*ifXEntry)->__ifOutBroadcastPkts = *vars->val.integer; + (*ifXEntry)->ifOutBroadcastPkts = &((*ifXEntry)->__ifOutBroadcastPkts); + } + if (vars->name_length > sizeof(ifHCInOctets)/sizeof(oid) + && memcmp(vars->name, ifHCInOctets, sizeof(ifHCInOctets)) == 0) { + } + if (vars->name_length > sizeof(ifHCInUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCInUcastPkts, sizeof(ifHCInUcastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCInMulticastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCInMulticastPkts, sizeof(ifHCInMulticastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCInBroadcastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCInBroadcastPkts, sizeof(ifHCInBroadcastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCOutOctets)/sizeof(oid) + && memcmp(vars->name, ifHCOutOctets, sizeof(ifHCOutOctets)) == 0) { + } + if (vars->name_length > sizeof(ifHCOutUcastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCOutUcastPkts, sizeof(ifHCOutUcastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCOutMulticastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCOutMulticastPkts, sizeof(ifHCOutMulticastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifHCOutBroadcastPkts)/sizeof(oid) + && memcmp(vars->name, ifHCOutBroadcastPkts, sizeof(ifHCOutBroadcastPkts)) == 0) { + } + if (vars->name_length > sizeof(ifLinkUpDownTrapEnable)/sizeof(oid) + && memcmp(vars->name, ifLinkUpDownTrapEnable, sizeof(ifLinkUpDownTrapEnable)) == 0) { + (*ifXEntry)->__ifLinkUpDownTrapEnable = *vars->val.integer; + (*ifXEntry)->ifLinkUpDownTrapEnable = &((*ifXEntry)->__ifLinkUpDownTrapEnable); + } + if (vars->name_length > sizeof(ifHighSpeed)/sizeof(oid) + && memcmp(vars->name, ifHighSpeed, sizeof(ifHighSpeed)) == 0) { + (*ifXEntry)->__ifHighSpeed = *vars->val.integer; + (*ifXEntry)->ifHighSpeed = &((*ifXEntry)->__ifHighSpeed); + } + if (vars->name_length > sizeof(ifPromiscuousMode)/sizeof(oid) + && memcmp(vars->name, ifPromiscuousMode, sizeof(ifPromiscuousMode)) == 0) { + (*ifXEntry)->__ifPromiscuousMode = *vars->val.integer; + (*ifXEntry)->ifPromiscuousMode = &((*ifXEntry)->__ifPromiscuousMode); + } + if (vars->name_length > sizeof(ifConnectorPresent)/sizeof(oid) + && memcmp(vars->name, ifConnectorPresent, sizeof(ifConnectorPresent)) == 0) { + (*ifXEntry)->__ifConnectorPresent = *vars->val.integer; + (*ifXEntry)->ifConnectorPresent = &((*ifXEntry)->__ifConnectorPresent); + } + if (vars->name_length > sizeof(ifAlias)/sizeof(oid) + && memcmp(vars->name, ifAlias, sizeof(ifAlias)) == 0) { + memcpy((*ifXEntry)->__ifAlias, vars->val.string, vars->val_len); + (*ifXEntry)->_ifAliasLength = vars->val_len; + (*ifXEntry)->ifAlias = (*ifXEntry)->__ifAlias; + } + if (vars->name_length > sizeof(ifCounterDiscontinuityTime)/sizeof(oid) + && memcmp(vars->name, ifCounterDiscontinuityTime, sizeof(ifCounterDiscontinuityTime)) == 0) { + (*ifXEntry)->__ifCounterDiscontinuityTime = *vars->val.integer; + (*ifXEntry)->ifCounterDiscontinuityTime = &((*ifXEntry)->__ifCounterDiscontinuityTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifStackEntry(struct snmp_session *s, ifStackEntry_t **ifStackEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifStackStatus, sizeof(ifStackStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifStackEntry = (ifStackEntry_t *) malloc(sizeof(ifStackEntry_t)); + if (! *ifStackEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifStackStatus)/sizeof(oid) + && memcmp(vars->name, ifStackStatus, sizeof(ifStackStatus)) == 0) { + (*ifStackEntry)->__ifStackStatus = *vars->val.integer; + (*ifStackEntry)->ifStackStatus = &((*ifStackEntry)->__ifStackStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifTestEntry(struct snmp_session *s, ifTestEntry_t **ifTestEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifTestId, sizeof(ifTestId)/sizeof(oid)); + snmp_add_null_var(request, ifTestStatus, sizeof(ifTestStatus)/sizeof(oid)); + snmp_add_null_var(request, ifTestType, sizeof(ifTestType)/sizeof(oid)); + snmp_add_null_var(request, ifTestResult, sizeof(ifTestResult)/sizeof(oid)); + snmp_add_null_var(request, ifTestCode, sizeof(ifTestCode)/sizeof(oid)); + snmp_add_null_var(request, ifTestOwner, sizeof(ifTestOwner)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifTestEntry = (ifTestEntry_t *) malloc(sizeof(ifTestEntry_t)); + if (! *ifTestEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifTestId)/sizeof(oid) + && memcmp(vars->name, ifTestId, sizeof(ifTestId)) == 0) { + (*ifTestEntry)->__ifTestId = *vars->val.integer; + (*ifTestEntry)->ifTestId = &((*ifTestEntry)->__ifTestId); + } + if (vars->name_length > sizeof(ifTestStatus)/sizeof(oid) + && memcmp(vars->name, ifTestStatus, sizeof(ifTestStatus)) == 0) { + (*ifTestEntry)->__ifTestStatus = *vars->val.integer; + (*ifTestEntry)->ifTestStatus = &((*ifTestEntry)->__ifTestStatus); + } + if (vars->name_length > sizeof(ifTestType)/sizeof(oid) + && memcmp(vars->name, ifTestType, sizeof(ifTestType)) == 0) { + } + if (vars->name_length > sizeof(ifTestResult)/sizeof(oid) + && memcmp(vars->name, ifTestResult, sizeof(ifTestResult)) == 0) { + (*ifTestEntry)->__ifTestResult = *vars->val.integer; + (*ifTestEntry)->ifTestResult = &((*ifTestEntry)->__ifTestResult); + } + if (vars->name_length > sizeof(ifTestCode)/sizeof(oid) + && memcmp(vars->name, ifTestCode, sizeof(ifTestCode)) == 0) { + } + if (vars->name_length > sizeof(ifTestOwner)/sizeof(oid) + && memcmp(vars->name, ifTestOwner, sizeof(ifTestOwner)) == 0) { + memcpy((*ifTestEntry)->__ifTestOwner, vars->val.string, vars->val_len); + (*ifTestEntry)->_ifTestOwnerLength = vars->val_len; + (*ifTestEntry)->ifTestOwner = (*ifTestEntry)->__ifTestOwner; + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int if_mib_mgr_get_ifRcvAddressEntry(struct snmp_session *s, ifRcvAddressEntry_t **ifRcvAddressEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifRcvAddressStatus, sizeof(ifRcvAddressStatus)/sizeof(oid)); + snmp_add_null_var(request, ifRcvAddressType, sizeof(ifRcvAddressType)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifRcvAddressEntry = (ifRcvAddressEntry_t *) malloc(sizeof(ifRcvAddressEntry_t)); + if (! *ifRcvAddressEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifRcvAddressStatus)/sizeof(oid) + && memcmp(vars->name, ifRcvAddressStatus, sizeof(ifRcvAddressStatus)) == 0) { + (*ifRcvAddressEntry)->__ifRcvAddressStatus = *vars->val.integer; + (*ifRcvAddressEntry)->ifRcvAddressStatus = &((*ifRcvAddressEntry)->__ifRcvAddressStatus); + } + if (vars->name_length > sizeof(ifRcvAddressType)/sizeof(oid) + && memcmp(vars->name, ifRcvAddressType, sizeof(ifRcvAddressType)) == 0) { + (*ifRcvAddressEntry)->__ifRcvAddressType = *vars->val.integer; + (*ifRcvAddressEntry)->ifRcvAddressType = &((*ifRcvAddressEntry)->__ifRcvAddressType); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + + diff --git a/test/dumps/netsnmp/if-mib.h b/test/dumps/netsnmp/if-mib.h new file mode 100644 index 0000000..b04a7c5 --- /dev/null +++ b/test/dumps/netsnmp/if-mib.h @@ -0,0 +1,351 @@ +/* + * This C header file has been generated by smidump 0.2.17. + * It is intended to be used with the NET-SNMP package. + * + * This header is derived from the IF-MIB module. + * + * $Id: if-mib.h 1154 2001-08-24 10:09:18Z strauss $ + */ + +#ifndef _IF_MIB_H_ +#define _IF_MIB_H_ + +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +/* + * C type definitions for IF-MIB::interfaces. + */ + +typedef struct interfaces { + int32_t *ifNumber; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + int32_t __ifNumber; +} interfaces_t; + +/* + * C manager interface stubs for IF-MIB::interfaces. + */ + +extern int +if_mib_mgr_get_interfaces(struct snmp_session *s, interfaces_t **interfaces); + +/* + * C agent interface stubs for IF-MIB::interfaces. + */ + +extern int +if_mib_agt_read_interfaces(interfaces_t *interfaces); +extern int +if_mib_agt_register_interfaces(); + +/* + * C type definitions for IF-MIB::ifEntry. + */ + +typedef struct ifEntry { + int32_t *ifIndex; + u_char *ifDescr; + size_t _ifDescrLength; + int32_t *ifType; + int32_t *ifMtu; + uint32_t *ifSpeed; + u_char *ifPhysAddress; + size_t _ifPhysAddressLength; + int32_t *ifAdminStatus; + int32_t *ifOperStatus; + uint32_t *ifLastChange; + uint32_t *ifInOctets; + uint32_t *ifInUcastPkts; + uint32_t *ifInNUcastPkts; + uint32_t *ifInDiscards; + uint32_t *ifInErrors; + uint32_t *ifInUnknownProtos; + uint32_t *ifOutOctets; + uint32_t *ifOutUcastPkts; + uint32_t *ifOutNUcastPkts; + uint32_t *ifOutDiscards; + uint32_t *ifOutErrors; + uint32_t *ifOutQLen; + uint32_t *ifSpecific; + size_t _ifSpecificLength; + void *_clientData; /* pointer to client data structure */ + struct ifEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifIndex; + u_char __ifDescr[255]; + int32_t __ifType; + int32_t __ifMtu; + uint32_t __ifSpeed; + u_char __ifPhysAddress[65535]; + int32_t __ifAdminStatus; + int32_t __ifOperStatus; + uint32_t __ifLastChange; + uint32_t __ifInOctets; + uint32_t __ifInUcastPkts; + uint32_t __ifInNUcastPkts; + uint32_t __ifInDiscards; + uint32_t __ifInErrors; + uint32_t __ifInUnknownProtos; + uint32_t __ifOutOctets; + uint32_t __ifOutUcastPkts; + uint32_t __ifOutNUcastPkts; + uint32_t __ifOutDiscards; + uint32_t __ifOutErrors; + uint32_t __ifOutQLen; + uint32_t __ifSpecific[128]; +} ifEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifEntry. + */ + +extern int +if_mib_mgr_get_ifEntry(struct snmp_session *s, ifEntry_t **ifEntry); + +/* + * C agent interface stubs for IF-MIB::ifEntry. + */ + +extern int +if_mib_agt_read_ifEntry(ifEntry_t *ifEntry); +extern int +if_mib_agt_register_ifEntry(); + +/* + * C type definitions for IF-MIB::ifMIBObjects. + */ + +typedef struct ifMIBObjects { + uint32_t *ifTableLastChange; + uint32_t *ifStackLastChange; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + uint32_t __ifTableLastChange; + uint32_t __ifStackLastChange; +} ifMIBObjects_t; + +/* + * C manager interface stubs for IF-MIB::ifMIBObjects. + */ + +extern int +if_mib_mgr_get_ifMIBObjects(struct snmp_session *s, ifMIBObjects_t **ifMIBObjects); + +/* + * C agent interface stubs for IF-MIB::ifMIBObjects. + */ + +extern int +if_mib_agt_read_ifMIBObjects(ifMIBObjects_t *ifMIBObjects); +extern int +if_mib_agt_register_ifMIBObjects(); + +/* + * C type definitions for IF-MIB::ifXEntry. + */ + +typedef struct ifXEntry { + u_char *ifName; + size_t _ifNameLength; + uint32_t *ifInMulticastPkts; + uint32_t *ifInBroadcastPkts; + uint32_t *ifOutMulticastPkts; + uint32_t *ifOutBroadcastPkts; + uint64_t *ifHCInOctets; + uint64_t *ifHCInUcastPkts; + uint64_t *ifHCInMulticastPkts; + uint64_t *ifHCInBroadcastPkts; + uint64_t *ifHCOutOctets; + uint64_t *ifHCOutUcastPkts; + uint64_t *ifHCOutMulticastPkts; + uint64_t *ifHCOutBroadcastPkts; + int32_t *ifLinkUpDownTrapEnable; + uint32_t *ifHighSpeed; + int32_t *ifPromiscuousMode; + int32_t *ifConnectorPresent; + u_char *ifAlias; + size_t _ifAliasLength; + uint32_t *ifCounterDiscontinuityTime; + void *_clientData; /* pointer to client data structure */ + struct ifXEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + u_char __ifName[255]; + uint32_t __ifInMulticastPkts; + uint32_t __ifInBroadcastPkts; + uint32_t __ifOutMulticastPkts; + uint32_t __ifOutBroadcastPkts; + uint64_t __ifHCInOctets; + uint64_t __ifHCInUcastPkts; + uint64_t __ifHCInMulticastPkts; + uint64_t __ifHCInBroadcastPkts; + uint64_t __ifHCOutOctets; + uint64_t __ifHCOutUcastPkts; + uint64_t __ifHCOutMulticastPkts; + uint64_t __ifHCOutBroadcastPkts; + int32_t __ifLinkUpDownTrapEnable; + uint32_t __ifHighSpeed; + int32_t __ifPromiscuousMode; + int32_t __ifConnectorPresent; + u_char __ifAlias[64]; + uint32_t __ifCounterDiscontinuityTime; +} ifXEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifXEntry. + */ + +extern int +if_mib_mgr_get_ifXEntry(struct snmp_session *s, ifXEntry_t **ifXEntry); + +/* + * C agent interface stubs for IF-MIB::ifXEntry. + */ + +extern int +if_mib_agt_read_ifXEntry(ifXEntry_t *ifXEntry); +extern int +if_mib_agt_register_ifXEntry(); + +/* + * C type definitions for IF-MIB::ifStackEntry. + */ + +typedef struct ifStackEntry { + int32_t *ifStackHigherLayer; + int32_t *ifStackLowerLayer; + int32_t *ifStackStatus; + void *_clientData; /* pointer to client data structure */ + struct ifStackEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifStackHigherLayer; + int32_t __ifStackLowerLayer; + int32_t __ifStackStatus; +} ifStackEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifStackEntry. + */ + +extern int +if_mib_mgr_get_ifStackEntry(struct snmp_session *s, ifStackEntry_t **ifStackEntry); + +/* + * C agent interface stubs for IF-MIB::ifStackEntry. + */ + +extern int +if_mib_agt_read_ifStackEntry(ifStackEntry_t *ifStackEntry); +extern int +if_mib_agt_register_ifStackEntry(); + +/* + * C type definitions for IF-MIB::ifTestEntry. + */ + +typedef struct ifTestEntry { + int32_t *ifTestId; + int32_t *ifTestStatus; + uint32_t *ifTestType; + size_t _ifTestTypeLength; + int32_t *ifTestResult; + uint32_t *ifTestCode; + size_t _ifTestCodeLength; + u_char *ifTestOwner; + size_t _ifTestOwnerLength; + void *_clientData; /* pointer to client data structure */ + struct ifTestEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifTestId; + int32_t __ifTestStatus; + uint32_t __ifTestType[128]; + int32_t __ifTestResult; + uint32_t __ifTestCode[128]; + u_char __ifTestOwner[255]; +} ifTestEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifTestEntry. + */ + +extern int +if_mib_mgr_get_ifTestEntry(struct snmp_session *s, ifTestEntry_t **ifTestEntry); + +/* + * C agent interface stubs for IF-MIB::ifTestEntry. + */ + +extern int +if_mib_agt_read_ifTestEntry(ifTestEntry_t *ifTestEntry); +extern int +if_mib_agt_register_ifTestEntry(); + +/* + * C type definitions for IF-MIB::ifRcvAddressEntry. + */ + +typedef struct ifRcvAddressEntry { + u_char *ifRcvAddressAddress; + size_t _ifRcvAddressAddressLength; + int32_t *ifRcvAddressStatus; + int32_t *ifRcvAddressType; + void *_clientData; /* pointer to client data structure */ + struct ifRcvAddressEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + u_char __ifRcvAddressAddress[65535]; + int32_t __ifRcvAddressStatus; + int32_t __ifRcvAddressType; +} ifRcvAddressEntry_t; + +/* + * C manager interface stubs for IF-MIB::ifRcvAddressEntry. + */ + +extern int +if_mib_mgr_get_ifRcvAddressEntry(struct snmp_session *s, ifRcvAddressEntry_t **ifRcvAddressEntry); + +/* + * C agent interface stubs for IF-MIB::ifRcvAddressEntry. + */ + +extern int +if_mib_agt_read_ifRcvAddressEntry(ifRcvAddressEntry_t *ifRcvAddressEntry); +extern int +if_mib_agt_register_ifRcvAddressEntry(); + + +typedef struct if_mib { + interfaces_t interfaces; + ifEntry_t *ifEntry; + ifMIBObjects_t ifMIBObjects; + ifXEntry_t *ifXEntry; + ifStackEntry_t *ifStackEntry; + ifTestEntry_t *ifTestEntry; + ifRcvAddressEntry_t *ifRcvAddressEntry; +} if_mib_t; + +/* + * Initialization function: + */ + +void if_mib_agt_init(void); + +#endif /* _IF_MIB_H_ */ diff --git a/test/dumps/netsnmp/mau-mib-agt-stub.c b/test/dumps/netsnmp/mau-mib-agt-stub.c new file mode 100644 index 0000000..80bed75 --- /dev/null +++ b/test/dumps/netsnmp/mau-mib-agt-stub.c @@ -0,0 +1,650 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the MAU-MIB module. + * + * $Id: mau-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "mau-mib.h" + +#include +#include +#include +#include +#include + +/* + * Forward declaration of read methods for groups of scalars and tables: + */ + +static unsigned char * +read_rpMauEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_rpJackEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifMauEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifJackEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_broadMauBasicEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ifMauAutoNegEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_rpMauStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauDefaultType_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegAdminStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegCapAdvertised_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegRestart_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegCapAdvertisedBits_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_ifMauAutoNegRemoteFaultAdvertised_stub(int, u_char *, u_char, int, u_char *, oid *, int); + +/* + * Definitions of tags that are used internally to read/write + * the selected object type. These tags should be unique. + */ + +#define RPMAUGROUPINDEX 1 +#define RPMAUPORTINDEX 2 +#define RPMAUINDEX 3 +#define RPMAUTYPE 4 +#define RPMAUSTATUS 5 +#define RPMAUMEDIAAVAILABLE 6 +#define RPMAUMEDIAAVAILABLESTATEEXITS 7 +#define RPMAUJABBERSTATE 8 +#define RPMAUJABBERINGSTATEENTERS 9 +#define RPMAUFALSECARRIERS 10 + +static oid rpMauEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1}; + +struct variable rpMauEntry_variables[] = { + { RPMAUGROUPINDEX, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {1} }, + { RPMAUPORTINDEX, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {2} }, + { RPMAUINDEX, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {3} }, + { RPMAUTYPE, ASN_OBJECT_ID, RONLY, read_rpMauEntry_stub, 1, {4} }, + { RPMAUSTATUS, ASN_INTEGER, RWRITE, read_rpMauEntry_stub, 1, {5} }, + { RPMAUMEDIAAVAILABLE, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {6} }, + { RPMAUMEDIAAVAILABLESTATEEXITS, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {7} }, + { RPMAUJABBERSTATE, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {8} }, + { RPMAUJABBERINGSTATEENTERS, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {9} }, + { RPMAUFALSECARRIERS, ASN_INTEGER, RONLY, read_rpMauEntry_stub, 1, {10} }, +}; + +#define RPJACKTYPE 2 + +static oid rpJackEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 1, 2, 1}; + +struct variable rpJackEntry_variables[] = { + { RPJACKTYPE, ASN_INTEGER, RONLY, read_rpJackEntry_stub, 1, {2} }, +}; + +#define IFMAUIFINDEX 1 +#define IFMAUINDEX 2 +#define IFMAUTYPE 3 +#define IFMAUSTATUS 4 +#define IFMAUMEDIAAVAILABLE 5 +#define IFMAUMEDIAAVAILABLESTATEEXITS 6 +#define IFMAUJABBERSTATE 7 +#define IFMAUJABBERINGSTATEENTERS 8 +#define IFMAUFALSECARRIERS 9 +#define IFMAUTYPELIST 10 +#define IFMAUDEFAULTTYPE 11 +#define IFMAUAUTONEGSUPPORTED 12 +#define IFMAUTYPELISTBITS 13 +#define IFMAUHCFALSECARRIERS 14 + +static oid ifMauEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1}; + +struct variable ifMauEntry_variables[] = { + { IFMAUIFINDEX, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {1} }, + { IFMAUINDEX, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {2} }, + { IFMAUTYPE, ASN_OBJECT_ID, RONLY, read_ifMauEntry_stub, 1, {3} }, + { IFMAUSTATUS, ASN_INTEGER, RWRITE, read_ifMauEntry_stub, 1, {4} }, + { IFMAUMEDIAAVAILABLE, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {5} }, + { IFMAUMEDIAAVAILABLESTATEEXITS, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {6} }, + { IFMAUJABBERSTATE, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {7} }, + { IFMAUJABBERINGSTATEENTERS, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {8} }, + { IFMAUFALSECARRIERS, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {9} }, + { IFMAUTYPELIST, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {10} }, + { IFMAUDEFAULTTYPE, ASN_OBJECT_ID, RWRITE, read_ifMauEntry_stub, 1, {11} }, + { IFMAUAUTONEGSUPPORTED, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {12} }, + { IFMAUTYPELISTBITS, ASN_OCTET_STR, RONLY, read_ifMauEntry_stub, 1, {13} }, + { IFMAUHCFALSECARRIERS, ASN_INTEGER, RONLY, read_ifMauEntry_stub, 1, {14} }, +}; + +#define IFJACKTYPE 2 + +static oid ifJackEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 2, 2, 1}; + +struct variable ifJackEntry_variables[] = { + { IFJACKTYPE, ASN_INTEGER, RONLY, read_ifJackEntry_stub, 1, {2} }, +}; + +#define BROADMAUIFINDEX 1 +#define BROADMAUINDEX 2 +#define BROADMAUXMTRCVSPLITTYPE 3 +#define BROADMAUXMTCARRIERFREQ 4 +#define BROADMAUTRANSLATIONFREQ 5 + +static oid broadMauBasicEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1}; + +struct variable broadMauBasicEntry_variables[] = { + { BROADMAUIFINDEX, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {1} }, + { BROADMAUINDEX, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {2} }, + { BROADMAUXMTRCVSPLITTYPE, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {3} }, + { BROADMAUXMTCARRIERFREQ, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {4} }, + { BROADMAUTRANSLATIONFREQ, ASN_INTEGER, RONLY, read_broadMauBasicEntry_stub, 1, {5} }, +}; + +#define IFMAUAUTONEGADMINSTATUS 1 +#define IFMAUAUTONEGREMOTESIGNALING 2 +#define IFMAUAUTONEGCONFIG 4 +#define IFMAUAUTONEGCAPABILITY 5 +#define IFMAUAUTONEGCAPADVERTISED 6 +#define IFMAUAUTONEGCAPRECEIVED 7 +#define IFMAUAUTONEGRESTART 8 +#define IFMAUAUTONEGCAPABILITYBITS 9 +#define IFMAUAUTONEGCAPADVERTISEDBITS 10 +#define IFMAUAUTONEGCAPRECEIVEDBITS 11 +#define IFMAUAUTONEGREMOTEFAULTADVERTISED 12 +#define IFMAUAUTONEGREMOTEFAULTRECEIVED 13 + +static oid ifMauAutoNegEntry_base[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1}; + +struct variable ifMauAutoNegEntry_variables[] = { + { IFMAUAUTONEGADMINSTATUS, ASN_INTEGER, RWRITE, read_ifMauAutoNegEntry_stub, 1, {1} }, + { IFMAUAUTONEGREMOTESIGNALING, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {2} }, + { IFMAUAUTONEGCONFIG, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {4} }, + { IFMAUAUTONEGCAPABILITY, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {5} }, + { IFMAUAUTONEGCAPADVERTISED, ASN_INTEGER, RWRITE, read_ifMauAutoNegEntry_stub, 1, {6} }, + { IFMAUAUTONEGCAPRECEIVED, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {7} }, + { IFMAUAUTONEGRESTART, ASN_INTEGER, RWRITE, read_ifMauAutoNegEntry_stub, 1, {8} }, + { IFMAUAUTONEGCAPABILITYBITS, ASN_OCTET_STR, RONLY, read_ifMauAutoNegEntry_stub, 1, {9} }, + { IFMAUAUTONEGCAPADVERTISEDBITS, ASN_OCTET_STR, RWRITE, read_ifMauAutoNegEntry_stub, 1, {10} }, + { IFMAUAUTONEGCAPRECEIVEDBITS, ASN_OCTET_STR, RONLY, read_ifMauAutoNegEntry_stub, 1, {11} }, + { IFMAUAUTONEGREMOTEFAULTADVERTISED, ASN_INTEGER, RWRITE, read_ifMauAutoNegEntry_stub, 1, {12} }, + { IFMAUAUTONEGREMOTEFAULTRECEIVED, ASN_INTEGER, RONLY, read_ifMauAutoNegEntry_stub, 1, {13} }, +}; + + + +/* + * Registration functions for the various MIB groups. + */ + +int register_rpMauEntry() +{ + return register_mib("rpMauEntry", + rpMauEntry_variables, + sizeof(struct variable), + sizeof(rpMauEntry_variables)/sizeof(struct variable), + rpMauEntry_base, + sizeof(rpMauEntry_base)/sizeof(oid)); +}; + + +int register_rpJackEntry() +{ + return register_mib("rpJackEntry", + rpJackEntry_variables, + sizeof(struct variable), + sizeof(rpJackEntry_variables)/sizeof(struct variable), + rpJackEntry_base, + sizeof(rpJackEntry_base)/sizeof(oid)); +}; + + +int register_ifMauEntry() +{ + return register_mib("ifMauEntry", + ifMauEntry_variables, + sizeof(struct variable), + sizeof(ifMauEntry_variables)/sizeof(struct variable), + ifMauEntry_base, + sizeof(ifMauEntry_base)/sizeof(oid)); +}; + + +int register_ifJackEntry() +{ + return register_mib("ifJackEntry", + ifJackEntry_variables, + sizeof(struct variable), + sizeof(ifJackEntry_variables)/sizeof(struct variable), + ifJackEntry_base, + sizeof(ifJackEntry_base)/sizeof(oid)); +}; + + +int register_broadMauBasicEntry() +{ + return register_mib("broadMauBasicEntry", + broadMauBasicEntry_variables, + sizeof(struct variable), + sizeof(broadMauBasicEntry_variables)/sizeof(struct variable), + broadMauBasicEntry_base, + sizeof(broadMauBasicEntry_base)/sizeof(oid)); +}; + + +int register_ifMauAutoNegEntry() +{ + return register_mib("ifMauAutoNegEntry", + ifMauAutoNegEntry_variables, + sizeof(struct variable), + sizeof(ifMauAutoNegEntry_variables)/sizeof(struct variable), + ifMauAutoNegEntry_base, + sizeof(ifMauAutoNegEntry_base)/sizeof(oid)); +}; + + +/* + * Read methods for groups of scalars and tables: + */ + +static unsigned char * +read_rpMauEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static rpMauEntry_t rpMauEntry; + + /* call the user supplied function to retrieve values */ + + read_rpMauEntry(&rpMauEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case RPMAUGROUPINDEX: + return (unsigned char *) &rpMauEntry.rpMauGroupIndex; + + case RPMAUPORTINDEX: + return (unsigned char *) &rpMauEntry.rpMauPortIndex; + + case RPMAUINDEX: + return (unsigned char *) &rpMauEntry.rpMauIndex; + + case RPMAUTYPE: + *var_len = rpMauEntry._rpMauTypeLength; + return (unsigned char *) rpMauEntry.rpMauType; + + case RPMAUSTATUS: + return (unsigned char *) &rpMauEntry.rpMauStatus; + + case RPMAUMEDIAAVAILABLE: + return (unsigned char *) &rpMauEntry.rpMauMediaAvailable; + + case RPMAUMEDIAAVAILABLESTATEEXITS: + return (unsigned char *) &rpMauEntry.rpMauMediaAvailableStateExits; + + case RPMAUJABBERSTATE: + return (unsigned char *) &rpMauEntry.rpMauJabberState; + + case RPMAUJABBERINGSTATEENTERS: + return (unsigned char *) &rpMauEntry.rpMauJabberingStateEnters; + + case RPMAUFALSECARRIERS: + return (unsigned char *) &rpMauEntry.rpMauFalseCarriers; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_rpJackEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static rpJackEntry_t rpJackEntry; + + /* call the user supplied function to retrieve values */ + + read_rpJackEntry(&rpJackEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case RPJACKTYPE: + return (unsigned char *) &rpJackEntry.rpJackType; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifMauEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifMauEntry_t ifMauEntry; + + /* call the user supplied function to retrieve values */ + + read_ifMauEntry(&ifMauEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFMAUIFINDEX: + return (unsigned char *) &ifMauEntry.ifMauIfIndex; + + case IFMAUINDEX: + return (unsigned char *) &ifMauEntry.ifMauIndex; + + case IFMAUTYPE: + *var_len = ifMauEntry._ifMauTypeLength; + return (unsigned char *) ifMauEntry.ifMauType; + + case IFMAUSTATUS: + return (unsigned char *) &ifMauEntry.ifMauStatus; + + case IFMAUMEDIAAVAILABLE: + return (unsigned char *) &ifMauEntry.ifMauMediaAvailable; + + case IFMAUMEDIAAVAILABLESTATEEXITS: + return (unsigned char *) &ifMauEntry.ifMauMediaAvailableStateExits; + + case IFMAUJABBERSTATE: + return (unsigned char *) &ifMauEntry.ifMauJabberState; + + case IFMAUJABBERINGSTATEENTERS: + return (unsigned char *) &ifMauEntry.ifMauJabberingStateEnters; + + case IFMAUFALSECARRIERS: + return (unsigned char *) &ifMauEntry.ifMauFalseCarriers; + + case IFMAUTYPELIST: + return (unsigned char *) &ifMauEntry.ifMauTypeList; + + case IFMAUDEFAULTTYPE: + *var_len = ifMauEntry._ifMauDefaultTypeLength; + return (unsigned char *) ifMauEntry.ifMauDefaultType; + + case IFMAUAUTONEGSUPPORTED: + return (unsigned char *) &ifMauEntry.ifMauAutoNegSupported; + + case IFMAUTYPELISTBITS: + *var_len = ifMauEntry._ifMauTypeListBitsLength; + return (unsigned char *) ifMauEntry.ifMauTypeListBits; + + case IFMAUHCFALSECARRIERS: + /* add code to return the value here */ + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifJackEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifJackEntry_t ifJackEntry; + + /* call the user supplied function to retrieve values */ + + read_ifJackEntry(&ifJackEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFJACKTYPE: + return (unsigned char *) &ifJackEntry.ifJackType; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_broadMauBasicEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static broadMauBasicEntry_t broadMauBasicEntry; + + /* call the user supplied function to retrieve values */ + + read_broadMauBasicEntry(&broadMauBasicEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case BROADMAUIFINDEX: + return (unsigned char *) &broadMauBasicEntry.broadMauIfIndex; + + case BROADMAUINDEX: + return (unsigned char *) &broadMauBasicEntry.broadMauIndex; + + case BROADMAUXMTRCVSPLITTYPE: + return (unsigned char *) &broadMauBasicEntry.broadMauXmtRcvSplitType; + + case BROADMAUXMTCARRIERFREQ: + return (unsigned char *) &broadMauBasicEntry.broadMauXmtCarrierFreq; + + case BROADMAUTRANSLATIONFREQ: + return (unsigned char *) &broadMauBasicEntry.broadMauTranslationFreq; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ifMauAutoNegEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ifMauAutoNegEntry_t ifMauAutoNegEntry; + + /* call the user supplied function to retrieve values */ + + read_ifMauAutoNegEntry(&ifMauAutoNegEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case IFMAUAUTONEGADMINSTATUS: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegAdminStatus; + + case IFMAUAUTONEGREMOTESIGNALING: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegRemoteSignaling; + + case IFMAUAUTONEGCONFIG: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegConfig; + + case IFMAUAUTONEGCAPABILITY: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegCapability; + + case IFMAUAUTONEGCAPADVERTISED: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegCapAdvertised; + + case IFMAUAUTONEGCAPRECEIVED: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegCapReceived; + + case IFMAUAUTONEGRESTART: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegRestart; + + case IFMAUAUTONEGCAPABILITYBITS: + *var_len = ifMauAutoNegEntry._ifMauAutoNegCapabilityBitsLength; + return (unsigned char *) ifMauAutoNegEntry.ifMauAutoNegCapabilityBits; + + case IFMAUAUTONEGCAPADVERTISEDBITS: + *var_len = ifMauAutoNegEntry._ifMauAutoNegCapAdvertisedBitsLength; + return (unsigned char *) ifMauAutoNegEntry.ifMauAutoNegCapAdvertisedBits; + + case IFMAUAUTONEGCAPRECEIVEDBITS: + *var_len = ifMauAutoNegEntry._ifMauAutoNegCapReceivedBitsLength; + return (unsigned char *) ifMauAutoNegEntry.ifMauAutoNegCapReceivedBits; + + case IFMAUAUTONEGREMOTEFAULTADVERTISED: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegRemoteFaultAdvertised; + + case IFMAUAUTONEGREMOTEFAULTRECEIVED: + return (unsigned char *) &ifMauAutoNegEntry.ifMauAutoNegRemoteFaultReceived; + + default: + ERROR_MSG(""); + } + + return NULL; +} + + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_rpMauStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauDefaultType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegAdminStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegCapAdvertised_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegRestart_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegCapAdvertisedBits_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_ifMauAutoNegRemoteFaultAdvertised_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + + diff --git a/test/dumps/netsnmp/mau-mib-agt.c b/test/dumps/netsnmp/mau-mib-agt.c new file mode 100644 index 0000000..92e3ace --- /dev/null +++ b/test/dumps/netsnmp/mau-mib-agt.c @@ -0,0 +1,38 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the MAU-MIB module. + * + * $Id: mau-mib-agt.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "mau-mib.h" + +#include +#include +#include +#include +#include + +static oid mau_mib_caps[] = {0,0}; + +void init_mau_mib(void) +{ +} + +void deinit_mau_mib() +{ + unregister_sysORTable(mau_mib_caps, sizeof(mau_mib_caps)); +} + +int term_mau_mib() +{ + deinit_mau_mib(); + return 0; +} + diff --git a/test/dumps/netsnmp/mau-mib-mgr-stub.c b/test/dumps/netsnmp/mau-mib-mgr-stub.c new file mode 100644 index 0000000..45a9e4f --- /dev/null +++ b/test/dumps/netsnmp/mau-mib-mgr-stub.c @@ -0,0 +1,565 @@ +/* + * This C file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP library. + * + * This C file is derived from the MAU-MIB module. + * + * $Id: mau-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#include + +#include +#include +#include +#include + +#include "mau-mib.h" + +static oid rpMauGroupIndex[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 1}; +static oid rpMauPortIndex[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 2}; +static oid rpMauIndex[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 3}; +static oid rpMauType[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 4}; +static oid rpMauStatus[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 5}; +static oid rpMauMediaAvailable[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 6}; +static oid rpMauMediaAvailableStateExits[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 7}; +static oid rpMauJabberState[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 8}; +static oid rpMauJabberingStateEnters[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 9}; +static oid rpMauFalseCarriers[] = {1, 3, 6, 1, 2, 1, 26, 1, 1, 1, 10}; +static oid rpJackIndex[] = {1, 3, 6, 1, 2, 1, 26, 1, 2, 1, 1}; +static oid rpJackType[] = {1, 3, 6, 1, 2, 1, 26, 1, 2, 1, 2}; +static oid ifMauIfIndex[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 1}; +static oid ifMauIndex[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 2}; +static oid ifMauType[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 3}; +static oid ifMauStatus[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 4}; +static oid ifMauMediaAvailable[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 5}; +static oid ifMauMediaAvailableStateExits[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 6}; +static oid ifMauJabberState[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 7}; +static oid ifMauJabberingStateEnters[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 8}; +static oid ifMauFalseCarriers[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 9}; +static oid ifMauTypeList[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 10}; +static oid ifMauDefaultType[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 11}; +static oid ifMauAutoNegSupported[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 12}; +static oid ifMauTypeListBits[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 13}; +static oid ifMauHCFalseCarriers[] = {1, 3, 6, 1, 2, 1, 26, 2, 1, 1, 14}; +static oid ifJackIndex[] = {1, 3, 6, 1, 2, 1, 26, 2, 2, 1, 1}; +static oid ifJackType[] = {1, 3, 6, 1, 2, 1, 26, 2, 2, 1, 2}; +static oid broadMauIfIndex[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 1}; +static oid broadMauIndex[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 2}; +static oid broadMauXmtRcvSplitType[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 3}; +static oid broadMauXmtCarrierFreq[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 4}; +static oid broadMauTranslationFreq[] = {1, 3, 6, 1, 2, 1, 26, 3, 1, 1, 5}; +static oid ifMauAutoNegAdminStatus[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 1}; +static oid ifMauAutoNegRemoteSignaling[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 2}; +static oid ifMauAutoNegConfig[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 4}; +static oid ifMauAutoNegCapability[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 5}; +static oid ifMauAutoNegCapAdvertised[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 6}; +static oid ifMauAutoNegCapReceived[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 7}; +static oid ifMauAutoNegRestart[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 8}; +static oid ifMauAutoNegCapabilityBits[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 9}; +static oid ifMauAutoNegCapAdvertisedBits[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 10}; +static oid ifMauAutoNegCapReceivedBits[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 11}; +static oid ifMauAutoNegRemoteFaultAdvertised[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 12}; +static oid ifMauAutoNegRemoteFaultReceived[] = {1, 3, 6, 1, 2, 1, 26, 5, 1, 1, 13}; + +int mau_mib_mgr_get_rpMauEntry(struct snmp_session *s, rpMauEntry_t **rpMauEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, rpMauGroupIndex, sizeof(rpMauGroupIndex)/sizeof(oid)); + snmp_add_null_var(request, rpMauPortIndex, sizeof(rpMauPortIndex)/sizeof(oid)); + snmp_add_null_var(request, rpMauIndex, sizeof(rpMauIndex)/sizeof(oid)); + snmp_add_null_var(request, rpMauType, sizeof(rpMauType)/sizeof(oid)); + snmp_add_null_var(request, rpMauStatus, sizeof(rpMauStatus)/sizeof(oid)); + snmp_add_null_var(request, rpMauMediaAvailable, sizeof(rpMauMediaAvailable)/sizeof(oid)); + snmp_add_null_var(request, rpMauMediaAvailableStateExits, sizeof(rpMauMediaAvailableStateExits)/sizeof(oid)); + snmp_add_null_var(request, rpMauJabberState, sizeof(rpMauJabberState)/sizeof(oid)); + snmp_add_null_var(request, rpMauJabberingStateEnters, sizeof(rpMauJabberingStateEnters)/sizeof(oid)); + snmp_add_null_var(request, rpMauFalseCarriers, sizeof(rpMauFalseCarriers)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *rpMauEntry = (rpMauEntry_t *) malloc(sizeof(rpMauEntry_t)); + if (! *rpMauEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(rpMauGroupIndex)/sizeof(oid) + && memcmp(vars->name, rpMauGroupIndex, sizeof(rpMauGroupIndex)) == 0) { + (*rpMauEntry)->__rpMauGroupIndex = *vars->val.integer; + (*rpMauEntry)->rpMauGroupIndex = &((*rpMauEntry)->__rpMauGroupIndex); + } + if (vars->name_length > sizeof(rpMauPortIndex)/sizeof(oid) + && memcmp(vars->name, rpMauPortIndex, sizeof(rpMauPortIndex)) == 0) { + (*rpMauEntry)->__rpMauPortIndex = *vars->val.integer; + (*rpMauEntry)->rpMauPortIndex = &((*rpMauEntry)->__rpMauPortIndex); + } + if (vars->name_length > sizeof(rpMauIndex)/sizeof(oid) + && memcmp(vars->name, rpMauIndex, sizeof(rpMauIndex)) == 0) { + (*rpMauEntry)->__rpMauIndex = *vars->val.integer; + (*rpMauEntry)->rpMauIndex = &((*rpMauEntry)->__rpMauIndex); + } + if (vars->name_length > sizeof(rpMauType)/sizeof(oid) + && memcmp(vars->name, rpMauType, sizeof(rpMauType)) == 0) { + } + if (vars->name_length > sizeof(rpMauStatus)/sizeof(oid) + && memcmp(vars->name, rpMauStatus, sizeof(rpMauStatus)) == 0) { + (*rpMauEntry)->__rpMauStatus = *vars->val.integer; + (*rpMauEntry)->rpMauStatus = &((*rpMauEntry)->__rpMauStatus); + } + if (vars->name_length > sizeof(rpMauMediaAvailable)/sizeof(oid) + && memcmp(vars->name, rpMauMediaAvailable, sizeof(rpMauMediaAvailable)) == 0) { + (*rpMauEntry)->__rpMauMediaAvailable = *vars->val.integer; + (*rpMauEntry)->rpMauMediaAvailable = &((*rpMauEntry)->__rpMauMediaAvailable); + } + if (vars->name_length > sizeof(rpMauMediaAvailableStateExits)/sizeof(oid) + && memcmp(vars->name, rpMauMediaAvailableStateExits, sizeof(rpMauMediaAvailableStateExits)) == 0) { + (*rpMauEntry)->__rpMauMediaAvailableStateExits = *vars->val.integer; + (*rpMauEntry)->rpMauMediaAvailableStateExits = &((*rpMauEntry)->__rpMauMediaAvailableStateExits); + } + if (vars->name_length > sizeof(rpMauJabberState)/sizeof(oid) + && memcmp(vars->name, rpMauJabberState, sizeof(rpMauJabberState)) == 0) { + (*rpMauEntry)->__rpMauJabberState = *vars->val.integer; + (*rpMauEntry)->rpMauJabberState = &((*rpMauEntry)->__rpMauJabberState); + } + if (vars->name_length > sizeof(rpMauJabberingStateEnters)/sizeof(oid) + && memcmp(vars->name, rpMauJabberingStateEnters, sizeof(rpMauJabberingStateEnters)) == 0) { + (*rpMauEntry)->__rpMauJabberingStateEnters = *vars->val.integer; + (*rpMauEntry)->rpMauJabberingStateEnters = &((*rpMauEntry)->__rpMauJabberingStateEnters); + } + if (vars->name_length > sizeof(rpMauFalseCarriers)/sizeof(oid) + && memcmp(vars->name, rpMauFalseCarriers, sizeof(rpMauFalseCarriers)) == 0) { + (*rpMauEntry)->__rpMauFalseCarriers = *vars->val.integer; + (*rpMauEntry)->rpMauFalseCarriers = &((*rpMauEntry)->__rpMauFalseCarriers); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_rpJackEntry(struct snmp_session *s, rpJackEntry_t **rpJackEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, rpJackType, sizeof(rpJackType)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *rpJackEntry = (rpJackEntry_t *) malloc(sizeof(rpJackEntry_t)); + if (! *rpJackEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(rpJackType)/sizeof(oid) + && memcmp(vars->name, rpJackType, sizeof(rpJackType)) == 0) { + (*rpJackEntry)->__rpJackType = *vars->val.integer; + (*rpJackEntry)->rpJackType = &((*rpJackEntry)->__rpJackType); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_ifMauEntry(struct snmp_session *s, ifMauEntry_t **ifMauEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifMauIfIndex, sizeof(ifMauIfIndex)/sizeof(oid)); + snmp_add_null_var(request, ifMauIndex, sizeof(ifMauIndex)/sizeof(oid)); + snmp_add_null_var(request, ifMauType, sizeof(ifMauType)/sizeof(oid)); + snmp_add_null_var(request, ifMauStatus, sizeof(ifMauStatus)/sizeof(oid)); + snmp_add_null_var(request, ifMauMediaAvailable, sizeof(ifMauMediaAvailable)/sizeof(oid)); + snmp_add_null_var(request, ifMauMediaAvailableStateExits, sizeof(ifMauMediaAvailableStateExits)/sizeof(oid)); + snmp_add_null_var(request, ifMauJabberState, sizeof(ifMauJabberState)/sizeof(oid)); + snmp_add_null_var(request, ifMauJabberingStateEnters, sizeof(ifMauJabberingStateEnters)/sizeof(oid)); + snmp_add_null_var(request, ifMauFalseCarriers, sizeof(ifMauFalseCarriers)/sizeof(oid)); + snmp_add_null_var(request, ifMauTypeList, sizeof(ifMauTypeList)/sizeof(oid)); + snmp_add_null_var(request, ifMauDefaultType, sizeof(ifMauDefaultType)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegSupported, sizeof(ifMauAutoNegSupported)/sizeof(oid)); + snmp_add_null_var(request, ifMauTypeListBits, sizeof(ifMauTypeListBits)/sizeof(oid)); + snmp_add_null_var(request, ifMauHCFalseCarriers, sizeof(ifMauHCFalseCarriers)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifMauEntry = (ifMauEntry_t *) malloc(sizeof(ifMauEntry_t)); + if (! *ifMauEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifMauIfIndex)/sizeof(oid) + && memcmp(vars->name, ifMauIfIndex, sizeof(ifMauIfIndex)) == 0) { + (*ifMauEntry)->__ifMauIfIndex = *vars->val.integer; + (*ifMauEntry)->ifMauIfIndex = &((*ifMauEntry)->__ifMauIfIndex); + } + if (vars->name_length > sizeof(ifMauIndex)/sizeof(oid) + && memcmp(vars->name, ifMauIndex, sizeof(ifMauIndex)) == 0) { + (*ifMauEntry)->__ifMauIndex = *vars->val.integer; + (*ifMauEntry)->ifMauIndex = &((*ifMauEntry)->__ifMauIndex); + } + if (vars->name_length > sizeof(ifMauType)/sizeof(oid) + && memcmp(vars->name, ifMauType, sizeof(ifMauType)) == 0) { + } + if (vars->name_length > sizeof(ifMauStatus)/sizeof(oid) + && memcmp(vars->name, ifMauStatus, sizeof(ifMauStatus)) == 0) { + (*ifMauEntry)->__ifMauStatus = *vars->val.integer; + (*ifMauEntry)->ifMauStatus = &((*ifMauEntry)->__ifMauStatus); + } + if (vars->name_length > sizeof(ifMauMediaAvailable)/sizeof(oid) + && memcmp(vars->name, ifMauMediaAvailable, sizeof(ifMauMediaAvailable)) == 0) { + (*ifMauEntry)->__ifMauMediaAvailable = *vars->val.integer; + (*ifMauEntry)->ifMauMediaAvailable = &((*ifMauEntry)->__ifMauMediaAvailable); + } + if (vars->name_length > sizeof(ifMauMediaAvailableStateExits)/sizeof(oid) + && memcmp(vars->name, ifMauMediaAvailableStateExits, sizeof(ifMauMediaAvailableStateExits)) == 0) { + (*ifMauEntry)->__ifMauMediaAvailableStateExits = *vars->val.integer; + (*ifMauEntry)->ifMauMediaAvailableStateExits = &((*ifMauEntry)->__ifMauMediaAvailableStateExits); + } + if (vars->name_length > sizeof(ifMauJabberState)/sizeof(oid) + && memcmp(vars->name, ifMauJabberState, sizeof(ifMauJabberState)) == 0) { + (*ifMauEntry)->__ifMauJabberState = *vars->val.integer; + (*ifMauEntry)->ifMauJabberState = &((*ifMauEntry)->__ifMauJabberState); + } + if (vars->name_length > sizeof(ifMauJabberingStateEnters)/sizeof(oid) + && memcmp(vars->name, ifMauJabberingStateEnters, sizeof(ifMauJabberingStateEnters)) == 0) { + (*ifMauEntry)->__ifMauJabberingStateEnters = *vars->val.integer; + (*ifMauEntry)->ifMauJabberingStateEnters = &((*ifMauEntry)->__ifMauJabberingStateEnters); + } + if (vars->name_length > sizeof(ifMauFalseCarriers)/sizeof(oid) + && memcmp(vars->name, ifMauFalseCarriers, sizeof(ifMauFalseCarriers)) == 0) { + (*ifMauEntry)->__ifMauFalseCarriers = *vars->val.integer; + (*ifMauEntry)->ifMauFalseCarriers = &((*ifMauEntry)->__ifMauFalseCarriers); + } + if (vars->name_length > sizeof(ifMauTypeList)/sizeof(oid) + && memcmp(vars->name, ifMauTypeList, sizeof(ifMauTypeList)) == 0) { + (*ifMauEntry)->__ifMauTypeList = *vars->val.integer; + (*ifMauEntry)->ifMauTypeList = &((*ifMauEntry)->__ifMauTypeList); + } + if (vars->name_length > sizeof(ifMauDefaultType)/sizeof(oid) + && memcmp(vars->name, ifMauDefaultType, sizeof(ifMauDefaultType)) == 0) { + } + if (vars->name_length > sizeof(ifMauAutoNegSupported)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegSupported, sizeof(ifMauAutoNegSupported)) == 0) { + (*ifMauEntry)->__ifMauAutoNegSupported = *vars->val.integer; + (*ifMauEntry)->ifMauAutoNegSupported = &((*ifMauEntry)->__ifMauAutoNegSupported); + } + if (vars->name_length > sizeof(ifMauTypeListBits)/sizeof(oid) + && memcmp(vars->name, ifMauTypeListBits, sizeof(ifMauTypeListBits)) == 0) { + memcpy((*ifMauEntry)->__ifMauTypeListBits, vars->val.string, vars->val_len); + (*ifMauEntry)->_ifMauTypeListBitsLength = vars->val_len; + (*ifMauEntry)->ifMauTypeListBits = (*ifMauEntry)->__ifMauTypeListBits; + } + if (vars->name_length > sizeof(ifMauHCFalseCarriers)/sizeof(oid) + && memcmp(vars->name, ifMauHCFalseCarriers, sizeof(ifMauHCFalseCarriers)) == 0) { + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_ifJackEntry(struct snmp_session *s, ifJackEntry_t **ifJackEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifJackType, sizeof(ifJackType)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifJackEntry = (ifJackEntry_t *) malloc(sizeof(ifJackEntry_t)); + if (! *ifJackEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifJackType)/sizeof(oid) + && memcmp(vars->name, ifJackType, sizeof(ifJackType)) == 0) { + (*ifJackEntry)->__ifJackType = *vars->val.integer; + (*ifJackEntry)->ifJackType = &((*ifJackEntry)->__ifJackType); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_broadMauBasicEntry(struct snmp_session *s, broadMauBasicEntry_t **broadMauBasicEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, broadMauIfIndex, sizeof(broadMauIfIndex)/sizeof(oid)); + snmp_add_null_var(request, broadMauIndex, sizeof(broadMauIndex)/sizeof(oid)); + snmp_add_null_var(request, broadMauXmtRcvSplitType, sizeof(broadMauXmtRcvSplitType)/sizeof(oid)); + snmp_add_null_var(request, broadMauXmtCarrierFreq, sizeof(broadMauXmtCarrierFreq)/sizeof(oid)); + snmp_add_null_var(request, broadMauTranslationFreq, sizeof(broadMauTranslationFreq)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *broadMauBasicEntry = (broadMauBasicEntry_t *) malloc(sizeof(broadMauBasicEntry_t)); + if (! *broadMauBasicEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(broadMauIfIndex)/sizeof(oid) + && memcmp(vars->name, broadMauIfIndex, sizeof(broadMauIfIndex)) == 0) { + (*broadMauBasicEntry)->__broadMauIfIndex = *vars->val.integer; + (*broadMauBasicEntry)->broadMauIfIndex = &((*broadMauBasicEntry)->__broadMauIfIndex); + } + if (vars->name_length > sizeof(broadMauIndex)/sizeof(oid) + && memcmp(vars->name, broadMauIndex, sizeof(broadMauIndex)) == 0) { + (*broadMauBasicEntry)->__broadMauIndex = *vars->val.integer; + (*broadMauBasicEntry)->broadMauIndex = &((*broadMauBasicEntry)->__broadMauIndex); + } + if (vars->name_length > sizeof(broadMauXmtRcvSplitType)/sizeof(oid) + && memcmp(vars->name, broadMauXmtRcvSplitType, sizeof(broadMauXmtRcvSplitType)) == 0) { + (*broadMauBasicEntry)->__broadMauXmtRcvSplitType = *vars->val.integer; + (*broadMauBasicEntry)->broadMauXmtRcvSplitType = &((*broadMauBasicEntry)->__broadMauXmtRcvSplitType); + } + if (vars->name_length > sizeof(broadMauXmtCarrierFreq)/sizeof(oid) + && memcmp(vars->name, broadMauXmtCarrierFreq, sizeof(broadMauXmtCarrierFreq)) == 0) { + (*broadMauBasicEntry)->__broadMauXmtCarrierFreq = *vars->val.integer; + (*broadMauBasicEntry)->broadMauXmtCarrierFreq = &((*broadMauBasicEntry)->__broadMauXmtCarrierFreq); + } + if (vars->name_length > sizeof(broadMauTranslationFreq)/sizeof(oid) + && memcmp(vars->name, broadMauTranslationFreq, sizeof(broadMauTranslationFreq)) == 0) { + (*broadMauBasicEntry)->__broadMauTranslationFreq = *vars->val.integer; + (*broadMauBasicEntry)->broadMauTranslationFreq = &((*broadMauBasicEntry)->__broadMauTranslationFreq); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int mau_mib_mgr_get_ifMauAutoNegEntry(struct snmp_session *s, ifMauAutoNegEntry_t **ifMauAutoNegEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ifMauAutoNegAdminStatus, sizeof(ifMauAutoNegAdminStatus)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegRemoteSignaling, sizeof(ifMauAutoNegRemoteSignaling)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegConfig, sizeof(ifMauAutoNegConfig)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapability, sizeof(ifMauAutoNegCapability)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapAdvertised, sizeof(ifMauAutoNegCapAdvertised)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapReceived, sizeof(ifMauAutoNegCapReceived)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegRestart, sizeof(ifMauAutoNegRestart)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapabilityBits, sizeof(ifMauAutoNegCapabilityBits)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapAdvertisedBits, sizeof(ifMauAutoNegCapAdvertisedBits)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegCapReceivedBits, sizeof(ifMauAutoNegCapReceivedBits)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegRemoteFaultAdvertised, sizeof(ifMauAutoNegRemoteFaultAdvertised)/sizeof(oid)); + snmp_add_null_var(request, ifMauAutoNegRemoteFaultReceived, sizeof(ifMauAutoNegRemoteFaultReceived)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ifMauAutoNegEntry = (ifMauAutoNegEntry_t *) malloc(sizeof(ifMauAutoNegEntry_t)); + if (! *ifMauAutoNegEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ifMauAutoNegAdminStatus)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegAdminStatus, sizeof(ifMauAutoNegAdminStatus)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegAdminStatus = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegAdminStatus = &((*ifMauAutoNegEntry)->__ifMauAutoNegAdminStatus); + } + if (vars->name_length > sizeof(ifMauAutoNegRemoteSignaling)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegRemoteSignaling, sizeof(ifMauAutoNegRemoteSignaling)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegRemoteSignaling = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegRemoteSignaling = &((*ifMauAutoNegEntry)->__ifMauAutoNegRemoteSignaling); + } + if (vars->name_length > sizeof(ifMauAutoNegConfig)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegConfig, sizeof(ifMauAutoNegConfig)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegConfig = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegConfig = &((*ifMauAutoNegEntry)->__ifMauAutoNegConfig); + } + if (vars->name_length > sizeof(ifMauAutoNegCapability)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapability, sizeof(ifMauAutoNegCapability)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegCapability = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegCapability = &((*ifMauAutoNegEntry)->__ifMauAutoNegCapability); + } + if (vars->name_length > sizeof(ifMauAutoNegCapAdvertised)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapAdvertised, sizeof(ifMauAutoNegCapAdvertised)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegCapAdvertised = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegCapAdvertised = &((*ifMauAutoNegEntry)->__ifMauAutoNegCapAdvertised); + } + if (vars->name_length > sizeof(ifMauAutoNegCapReceived)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapReceived, sizeof(ifMauAutoNegCapReceived)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegCapReceived = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegCapReceived = &((*ifMauAutoNegEntry)->__ifMauAutoNegCapReceived); + } + if (vars->name_length > sizeof(ifMauAutoNegRestart)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegRestart, sizeof(ifMauAutoNegRestart)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegRestart = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegRestart = &((*ifMauAutoNegEntry)->__ifMauAutoNegRestart); + } + if (vars->name_length > sizeof(ifMauAutoNegCapabilityBits)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapabilityBits, sizeof(ifMauAutoNegCapabilityBits)) == 0) { + memcpy((*ifMauAutoNegEntry)->__ifMauAutoNegCapabilityBits, vars->val.string, vars->val_len); + (*ifMauAutoNegEntry)->_ifMauAutoNegCapabilityBitsLength = vars->val_len; + (*ifMauAutoNegEntry)->ifMauAutoNegCapabilityBits = (*ifMauAutoNegEntry)->__ifMauAutoNegCapabilityBits; + } + if (vars->name_length > sizeof(ifMauAutoNegCapAdvertisedBits)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapAdvertisedBits, sizeof(ifMauAutoNegCapAdvertisedBits)) == 0) { + memcpy((*ifMauAutoNegEntry)->__ifMauAutoNegCapAdvertisedBits, vars->val.string, vars->val_len); + (*ifMauAutoNegEntry)->_ifMauAutoNegCapAdvertisedBitsLength = vars->val_len; + (*ifMauAutoNegEntry)->ifMauAutoNegCapAdvertisedBits = (*ifMauAutoNegEntry)->__ifMauAutoNegCapAdvertisedBits; + } + if (vars->name_length > sizeof(ifMauAutoNegCapReceivedBits)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegCapReceivedBits, sizeof(ifMauAutoNegCapReceivedBits)) == 0) { + memcpy((*ifMauAutoNegEntry)->__ifMauAutoNegCapReceivedBits, vars->val.string, vars->val_len); + (*ifMauAutoNegEntry)->_ifMauAutoNegCapReceivedBitsLength = vars->val_len; + (*ifMauAutoNegEntry)->ifMauAutoNegCapReceivedBits = (*ifMauAutoNegEntry)->__ifMauAutoNegCapReceivedBits; + } + if (vars->name_length > sizeof(ifMauAutoNegRemoteFaultAdvertised)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegRemoteFaultAdvertised, sizeof(ifMauAutoNegRemoteFaultAdvertised)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegRemoteFaultAdvertised = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegRemoteFaultAdvertised = &((*ifMauAutoNegEntry)->__ifMauAutoNegRemoteFaultAdvertised); + } + if (vars->name_length > sizeof(ifMauAutoNegRemoteFaultReceived)/sizeof(oid) + && memcmp(vars->name, ifMauAutoNegRemoteFaultReceived, sizeof(ifMauAutoNegRemoteFaultReceived)) == 0) { + (*ifMauAutoNegEntry)->__ifMauAutoNegRemoteFaultReceived = *vars->val.integer; + (*ifMauAutoNegEntry)->ifMauAutoNegRemoteFaultReceived = &((*ifMauAutoNegEntry)->__ifMauAutoNegRemoteFaultReceived); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + + diff --git a/test/dumps/netsnmp/mau-mib.h b/test/dumps/netsnmp/mau-mib.h new file mode 100644 index 0000000..77d6e77 --- /dev/null +++ b/test/dumps/netsnmp/mau-mib.h @@ -0,0 +1,300 @@ +/* + * This C header file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP package. + * + * This header is derived from the MAU-MIB module. + * + * $Id: mau-mib.h 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#ifndef _MAU_MIB_H_ +#define _MAU_MIB_H_ + +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +/* + * C type definitions for MAU-MIB::rpMauEntry. + */ + +typedef struct rpMauEntry { + int32_t *rpMauGroupIndex; + int32_t *rpMauPortIndex; + int32_t *rpMauIndex; + uint32_t *rpMauType; + size_t _rpMauTypeLength; + int32_t *rpMauStatus; + int32_t *rpMauMediaAvailable; + uint32_t *rpMauMediaAvailableStateExits; + int32_t *rpMauJabberState; + uint32_t *rpMauJabberingStateEnters; + uint32_t *rpMauFalseCarriers; + void *_clientData; /* pointer to client data structure */ + struct rpMauEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __rpMauGroupIndex; + int32_t __rpMauPortIndex; + int32_t __rpMauIndex; + uint32_t __rpMauType[128]; + int32_t __rpMauStatus; + int32_t __rpMauMediaAvailable; + uint32_t __rpMauMediaAvailableStateExits; + int32_t __rpMauJabberState; + uint32_t __rpMauJabberingStateEnters; + uint32_t __rpMauFalseCarriers; +} rpMauEntry_t; + +/* + * C manager interface stubs for MAU-MIB::rpMauEntry. + */ + +extern int +mau_mib_mgr_get_rpMauEntry(struct snmp_session *s, rpMauEntry_t **rpMauEntry); + +/* + * C agent interface stubs for MAU-MIB::rpMauEntry. + */ + +extern int +mau_mib_agt_read_rpMauEntry(rpMauEntry_t *rpMauEntry); +extern int +mau_mib_agt_register_rpMauEntry(); + +/* + * C type definitions for MAU-MIB::rpJackEntry. + */ + +typedef struct rpJackEntry { + int32_t *rpJackIndex; + int32_t *rpJackType; + void *_clientData; /* pointer to client data structure */ + struct rpJackEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __rpJackIndex; + int32_t __rpJackType; +} rpJackEntry_t; + +/* + * C manager interface stubs for MAU-MIB::rpJackEntry. + */ + +extern int +mau_mib_mgr_get_rpJackEntry(struct snmp_session *s, rpJackEntry_t **rpJackEntry); + +/* + * C agent interface stubs for MAU-MIB::rpJackEntry. + */ + +extern int +mau_mib_agt_read_rpJackEntry(rpJackEntry_t *rpJackEntry); +extern int +mau_mib_agt_register_rpJackEntry(); + +/* + * C type definitions for MAU-MIB::ifMauEntry. + */ + +typedef struct ifMauEntry { + int32_t *ifMauIfIndex; + int32_t *ifMauIndex; + uint32_t *ifMauType; + size_t _ifMauTypeLength; + int32_t *ifMauStatus; + int32_t *ifMauMediaAvailable; + uint32_t *ifMauMediaAvailableStateExits; + int32_t *ifMauJabberState; + uint32_t *ifMauJabberingStateEnters; + uint32_t *ifMauFalseCarriers; + int32_t *ifMauTypeList; + uint32_t *ifMauDefaultType; + size_t _ifMauDefaultTypeLength; + int32_t *ifMauAutoNegSupported; + u_char *ifMauTypeListBits; + size_t _ifMauTypeListBitsLength; + uint64_t *ifMauHCFalseCarriers; + void *_clientData; /* pointer to client data structure */ + struct ifMauEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifMauIfIndex; + int32_t __ifMauIndex; + uint32_t __ifMauType[128]; + int32_t __ifMauStatus; + int32_t __ifMauMediaAvailable; + uint32_t __ifMauMediaAvailableStateExits; + int32_t __ifMauJabberState; + uint32_t __ifMauJabberingStateEnters; + uint32_t __ifMauFalseCarriers; + int32_t __ifMauTypeList; + uint32_t __ifMauDefaultType[128]; + int32_t __ifMauAutoNegSupported; + u_char __ifMauTypeListBits[7]; + uint64_t __ifMauHCFalseCarriers; +} ifMauEntry_t; + +/* + * C manager interface stubs for MAU-MIB::ifMauEntry. + */ + +extern int +mau_mib_mgr_get_ifMauEntry(struct snmp_session *s, ifMauEntry_t **ifMauEntry); + +/* + * C agent interface stubs for MAU-MIB::ifMauEntry. + */ + +extern int +mau_mib_agt_read_ifMauEntry(ifMauEntry_t *ifMauEntry); +extern int +mau_mib_agt_register_ifMauEntry(); + +/* + * C type definitions for MAU-MIB::ifJackEntry. + */ + +typedef struct ifJackEntry { + int32_t *ifJackIndex; + int32_t *ifJackType; + void *_clientData; /* pointer to client data structure */ + struct ifJackEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifJackIndex; + int32_t __ifJackType; +} ifJackEntry_t; + +/* + * C manager interface stubs for MAU-MIB::ifJackEntry. + */ + +extern int +mau_mib_mgr_get_ifJackEntry(struct snmp_session *s, ifJackEntry_t **ifJackEntry); + +/* + * C agent interface stubs for MAU-MIB::ifJackEntry. + */ + +extern int +mau_mib_agt_read_ifJackEntry(ifJackEntry_t *ifJackEntry); +extern int +mau_mib_agt_register_ifJackEntry(); + +/* + * C type definitions for MAU-MIB::broadMauBasicEntry. + */ + +typedef struct broadMauBasicEntry { + int32_t *broadMauIfIndex; + int32_t *broadMauIndex; + int32_t *broadMauXmtRcvSplitType; + int32_t *broadMauXmtCarrierFreq; + int32_t *broadMauTranslationFreq; + void *_clientData; /* pointer to client data structure */ + struct broadMauBasicEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __broadMauIfIndex; + int32_t __broadMauIndex; + int32_t __broadMauXmtRcvSplitType; + int32_t __broadMauXmtCarrierFreq; + int32_t __broadMauTranslationFreq; +} broadMauBasicEntry_t; + +/* + * C manager interface stubs for MAU-MIB::broadMauBasicEntry. + */ + +extern int +mau_mib_mgr_get_broadMauBasicEntry(struct snmp_session *s, broadMauBasicEntry_t **broadMauBasicEntry); + +/* + * C agent interface stubs for MAU-MIB::broadMauBasicEntry. + */ + +extern int +mau_mib_agt_read_broadMauBasicEntry(broadMauBasicEntry_t *broadMauBasicEntry); +extern int +mau_mib_agt_register_broadMauBasicEntry(); + +/* + * C type definitions for MAU-MIB::ifMauAutoNegEntry. + */ + +typedef struct ifMauAutoNegEntry { + int32_t *ifMauAutoNegAdminStatus; + int32_t *ifMauAutoNegRemoteSignaling; + int32_t *ifMauAutoNegConfig; + int32_t *ifMauAutoNegCapability; + int32_t *ifMauAutoNegCapAdvertised; + int32_t *ifMauAutoNegCapReceived; + int32_t *ifMauAutoNegRestart; + u_char *ifMauAutoNegCapabilityBits; + size_t _ifMauAutoNegCapabilityBitsLength; + u_char *ifMauAutoNegCapAdvertisedBits; + size_t _ifMauAutoNegCapAdvertisedBitsLength; + u_char *ifMauAutoNegCapReceivedBits; + size_t _ifMauAutoNegCapReceivedBitsLength; + int32_t *ifMauAutoNegRemoteFaultAdvertised; + int32_t *ifMauAutoNegRemoteFaultReceived; + void *_clientData; /* pointer to client data structure */ + struct ifMauAutoNegEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __ifMauAutoNegAdminStatus; + int32_t __ifMauAutoNegRemoteSignaling; + int32_t __ifMauAutoNegConfig; + int32_t __ifMauAutoNegCapability; + int32_t __ifMauAutoNegCapAdvertised; + int32_t __ifMauAutoNegCapReceived; + int32_t __ifMauAutoNegRestart; + u_char __ifMauAutoNegCapabilityBits[2]; + u_char __ifMauAutoNegCapAdvertisedBits[2]; + u_char __ifMauAutoNegCapReceivedBits[2]; + int32_t __ifMauAutoNegRemoteFaultAdvertised; + int32_t __ifMauAutoNegRemoteFaultReceived; +} ifMauAutoNegEntry_t; + +/* + * C manager interface stubs for MAU-MIB::ifMauAutoNegEntry. + */ + +extern int +mau_mib_mgr_get_ifMauAutoNegEntry(struct snmp_session *s, ifMauAutoNegEntry_t **ifMauAutoNegEntry); + +/* + * C agent interface stubs for MAU-MIB::ifMauAutoNegEntry. + */ + +extern int +mau_mib_agt_read_ifMauAutoNegEntry(ifMauAutoNegEntry_t *ifMauAutoNegEntry); +extern int +mau_mib_agt_register_ifMauAutoNegEntry(); + + +typedef struct mau_mib { + rpMauEntry_t *rpMauEntry; + rpJackEntry_t *rpJackEntry; + ifMauEntry_t *ifMauEntry; + ifJackEntry_t *ifJackEntry; + broadMauBasicEntry_t *broadMauBasicEntry; + ifMauAutoNegEntry_t *ifMauAutoNegEntry; +} mau_mib_t; + +/* + * Initialization function: + */ + +void mau_mib_agt_init(void); + +#endif /* _MAU_MIB_H_ */ diff --git a/test/dumps/netsnmp/rmon2-mib-agt-stub.c b/test/dumps/netsnmp/rmon2-mib-agt-stub.c new file mode 100644 index 0000000..2e66a8e --- /dev/null +++ b/test/dumps/netsnmp/rmon2-mib-agt-stub.c @@ -0,0 +1,3648 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the RMON2-MIB module. + * + * $Id: rmon2-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "rmon2-mib.h" + +#include +#include +#include +#include +#include + +/* + * Forward declaration of read methods for groups of scalars and tables: + */ + +static unsigned char * +read_etherStats2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_tokenRingMLStats2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_tokenRingPStats2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_historyControl2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_hostControl2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_matrixControl2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_channel2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_filter2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_ringStationControl2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_sourceRoutingStats2Entry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_protocolDir_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_protocolDirEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_protocolDistControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_protocolDistStatsEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_addressMap_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_addressMapControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_addressMapEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_hlHostControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlHostEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_hlMatrixControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlMatrixSDEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlMatrixDSEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlMatrixTopNControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_nlMatrixTopNEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alHostEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alMatrixSDEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alMatrixDSEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alMatrixTopNControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_alMatrixTopNEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_usrHistoryControlEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_usrHistoryObjectEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_usrHistoryEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_probeConfig_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_serialConfigEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_netConfigEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_trapDestEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_serialConnectionEntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_filterProtocolDirDataLocalIndex_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_filterProtocolDirLocalIndex_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirDescr_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirAddressMapConfig_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirHostConfig_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirMatrixConfig_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDirStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDistControlDataSource_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDistControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_protocolDistControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_addressMapMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_addressMapControlDataSource_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_addressMapControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_addressMapControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlDataSource_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlNlMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlAlMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlHostControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlDataSource_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlNlMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlAlMaxDesiredEntries_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_hlMatrixControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlMatrixIndex_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlRateBase_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlTimeRemaining_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlRequestedSize_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_nlMatrixTopNControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlMatrixIndex_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlRateBase_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlTimeRemaining_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlRequestedSize_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_alMatrixTopNControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlObjects_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlBucketsRequested_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlInterval_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryControlStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryObjectVariable_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_usrHistoryObjectSampleType_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeDateTime_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeResetControl_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeDownloadFile_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeDownloadTFTPServer_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_probeDownloadAction_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialMode_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialProtocol_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialTimeout_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialModemInitString_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialModemHangUpString_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialModemConnectResp_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialModemNoConnectResp_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialDialoutTimeout_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_netConfigIPAddress_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_netConfigSubnetMask_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_netConfigStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_netDefaultGateway_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestCommunity_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestProtocol_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestAddress_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_trapDestStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectDestIpAddress_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectType_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectDialString_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectSwitchConnectSeq_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectSwitchDisconnectSeq_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectSwitchResetSeq_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectOwner_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_serialConnectStatus_stub(int, u_char *, u_char, int, u_char *, oid *, int); + +/* + * Definitions of tags that are used internally to read/write + * the selected object type. These tags should be unique. + */ + +#define ETHERSTATSDROPPEDFRAMES 1 +#define ETHERSTATSCREATETIME 2 + +static oid etherStats2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 1, 4, 1}; + +struct variable etherStats2Entry_variables[] = { + { ETHERSTATSDROPPEDFRAMES, ASN_INTEGER, RONLY, read_etherStats2Entry_stub, 1, {1} }, + { ETHERSTATSCREATETIME, ASN_INTEGER, RONLY, read_etherStats2Entry_stub, 1, {2} }, +}; + +#define TOKENRINGMLSTATSDROPPEDFRAMES 1 +#define TOKENRINGMLSTATSCREATETIME 2 + +static oid tokenRingMLStats2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 1, 5, 1}; + +struct variable tokenRingMLStats2Entry_variables[] = { + { TOKENRINGMLSTATSDROPPEDFRAMES, ASN_INTEGER, RONLY, read_tokenRingMLStats2Entry_stub, 1, {1} }, + { TOKENRINGMLSTATSCREATETIME, ASN_INTEGER, RONLY, read_tokenRingMLStats2Entry_stub, 1, {2} }, +}; + +#define TOKENRINGPSTATSDROPPEDFRAMES 1 +#define TOKENRINGPSTATSCREATETIME 2 + +static oid tokenRingPStats2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 1, 6, 1}; + +struct variable tokenRingPStats2Entry_variables[] = { + { TOKENRINGPSTATSDROPPEDFRAMES, ASN_INTEGER, RONLY, read_tokenRingPStats2Entry_stub, 1, {1} }, + { TOKENRINGPSTATSCREATETIME, ASN_INTEGER, RONLY, read_tokenRingPStats2Entry_stub, 1, {2} }, +}; + +#define HISTORYCONTROLDROPPEDFRAMES 1 + +static oid historyControl2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 2, 5, 1}; + +struct variable historyControl2Entry_variables[] = { + { HISTORYCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_historyControl2Entry_stub, 1, {1} }, +}; + +#define HOSTCONTROLDROPPEDFRAMES 1 +#define HOSTCONTROLCREATETIME 2 + +static oid hostControl2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 4, 4, 1}; + +struct variable hostControl2Entry_variables[] = { + { HOSTCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hostControl2Entry_stub, 1, {1} }, + { HOSTCONTROLCREATETIME, ASN_INTEGER, RONLY, read_hostControl2Entry_stub, 1, {2} }, +}; + +#define MATRIXCONTROLDROPPEDFRAMES 1 +#define MATRIXCONTROLCREATETIME 2 + +static oid matrixControl2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 6, 4, 1}; + +struct variable matrixControl2Entry_variables[] = { + { MATRIXCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_matrixControl2Entry_stub, 1, {1} }, + { MATRIXCONTROLCREATETIME, ASN_INTEGER, RONLY, read_matrixControl2Entry_stub, 1, {2} }, +}; + +#define CHANNELDROPPEDFRAMES 1 +#define CHANNELCREATETIME 2 + +static oid channel2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 7, 3, 1}; + +struct variable channel2Entry_variables[] = { + { CHANNELDROPPEDFRAMES, ASN_INTEGER, RONLY, read_channel2Entry_stub, 1, {1} }, + { CHANNELCREATETIME, ASN_INTEGER, RONLY, read_channel2Entry_stub, 1, {2} }, +}; + +#define FILTERPROTOCOLDIRDATALOCALINDEX 1 +#define FILTERPROTOCOLDIRLOCALINDEX 2 + +static oid filter2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 7, 4, 1}; + +struct variable filter2Entry_variables[] = { + { FILTERPROTOCOLDIRDATALOCALINDEX, ASN_INTEGER, RWRITE, read_filter2Entry_stub, 1, {1} }, + { FILTERPROTOCOLDIRLOCALINDEX, ASN_INTEGER, RWRITE, read_filter2Entry_stub, 1, {2} }, +}; + +#define RINGSTATIONCONTROLDROPPEDFRAMES 1 +#define RINGSTATIONCONTROLCREATETIME 2 + +static oid ringStationControl2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 10, 7, 1}; + +struct variable ringStationControl2Entry_variables[] = { + { RINGSTATIONCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_ringStationControl2Entry_stub, 1, {1} }, + { RINGSTATIONCONTROLCREATETIME, ASN_INTEGER, RONLY, read_ringStationControl2Entry_stub, 1, {2} }, +}; + +#define SOURCEROUTINGSTATSDROPPEDFRAMES 1 +#define SOURCEROUTINGSTATSCREATETIME 2 + +static oid sourceRoutingStats2Entry_base[] = {1, 3, 6, 1, 2, 1, 16, 10, 8, 1}; + +struct variable sourceRoutingStats2Entry_variables[] = { + { SOURCEROUTINGSTATSDROPPEDFRAMES, ASN_INTEGER, RONLY, read_sourceRoutingStats2Entry_stub, 1, {1} }, + { SOURCEROUTINGSTATSCREATETIME, ASN_INTEGER, RONLY, read_sourceRoutingStats2Entry_stub, 1, {2} }, +}; + +#define PROTOCOLDIRLASTCHANGE 1 + +static oid protocolDir_base[] = {1, 3, 6, 1, 2, 1, 16, 11}; + +struct variable protocolDir_variables[] = { + { PROTOCOLDIRLASTCHANGE, ASN_INTEGER, RONLY, read_protocolDir_stub, 1, {1} }, +}; + +#define PROTOCOLDIRLOCALINDEX 3 +#define PROTOCOLDIRDESCR 4 +#define PROTOCOLDIRTYPE 5 +#define PROTOCOLDIRADDRESSMAPCONFIG 6 +#define PROTOCOLDIRHOSTCONFIG 7 +#define PROTOCOLDIRMATRIXCONFIG 8 +#define PROTOCOLDIROWNER 9 +#define PROTOCOLDIRSTATUS 10 + +static oid protocolDirEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1}; + +struct variable protocolDirEntry_variables[] = { + { PROTOCOLDIRLOCALINDEX, ASN_INTEGER, RONLY, read_protocolDirEntry_stub, 1, {3} }, + { PROTOCOLDIRDESCR, ASN_OCTET_STR, RWRITE, read_protocolDirEntry_stub, 1, {4} }, + { PROTOCOLDIRTYPE, ASN_OCTET_STR, RONLY, read_protocolDirEntry_stub, 1, {5} }, + { PROTOCOLDIRADDRESSMAPCONFIG, ASN_INTEGER, RWRITE, read_protocolDirEntry_stub, 1, {6} }, + { PROTOCOLDIRHOSTCONFIG, ASN_INTEGER, RWRITE, read_protocolDirEntry_stub, 1, {7} }, + { PROTOCOLDIRMATRIXCONFIG, ASN_INTEGER, RWRITE, read_protocolDirEntry_stub, 1, {8} }, + { PROTOCOLDIROWNER, ASN_OCTET_STR, RWRITE, read_protocolDirEntry_stub, 1, {9} }, + { PROTOCOLDIRSTATUS, ASN_INTEGER, RWRITE, read_protocolDirEntry_stub, 1, {10} }, +}; + +#define PROTOCOLDISTCONTROLDATASOURCE 2 +#define PROTOCOLDISTCONTROLDROPPEDFRAMES 3 +#define PROTOCOLDISTCONTROLCREATETIME 4 +#define PROTOCOLDISTCONTROLOWNER 5 +#define PROTOCOLDISTCONTROLSTATUS 6 + +static oid protocolDistControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1}; + +struct variable protocolDistControlEntry_variables[] = { + { PROTOCOLDISTCONTROLDATASOURCE, ASN_OBJECT_ID, RWRITE, read_protocolDistControlEntry_stub, 1, {2} }, + { PROTOCOLDISTCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_protocolDistControlEntry_stub, 1, {3} }, + { PROTOCOLDISTCONTROLCREATETIME, ASN_INTEGER, RONLY, read_protocolDistControlEntry_stub, 1, {4} }, + { PROTOCOLDISTCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_protocolDistControlEntry_stub, 1, {5} }, + { PROTOCOLDISTCONTROLSTATUS, ASN_INTEGER, RWRITE, read_protocolDistControlEntry_stub, 1, {6} }, +}; + +#define PROTOCOLDISTSTATSPKTS 1 +#define PROTOCOLDISTSTATSOCTETS 2 + +static oid protocolDistStatsEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 12, 2, 1}; + +struct variable protocolDistStatsEntry_variables[] = { + { PROTOCOLDISTSTATSPKTS, ASN_INTEGER, RONLY, read_protocolDistStatsEntry_stub, 1, {1} }, + { PROTOCOLDISTSTATSOCTETS, ASN_INTEGER, RONLY, read_protocolDistStatsEntry_stub, 1, {2} }, +}; + +#define ADDRESSMAPINSERTS 1 +#define ADDRESSMAPDELETES 2 +#define ADDRESSMAPMAXDESIREDENTRIES 3 + +static oid addressMap_base[] = {1, 3, 6, 1, 2, 1, 16, 13}; + +struct variable addressMap_variables[] = { + { ADDRESSMAPINSERTS, ASN_INTEGER, RONLY, read_addressMap_stub, 1, {1} }, + { ADDRESSMAPDELETES, ASN_INTEGER, RONLY, read_addressMap_stub, 1, {2} }, + { ADDRESSMAPMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_addressMap_stub, 1, {3} }, +}; + +#define ADDRESSMAPCONTROLDATASOURCE 2 +#define ADDRESSMAPCONTROLDROPPEDFRAMES 3 +#define ADDRESSMAPCONTROLOWNER 4 +#define ADDRESSMAPCONTROLSTATUS 5 + +static oid addressMapControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1}; + +struct variable addressMapControlEntry_variables[] = { + { ADDRESSMAPCONTROLDATASOURCE, ASN_OBJECT_ID, RWRITE, read_addressMapControlEntry_stub, 1, {2} }, + { ADDRESSMAPCONTROLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_addressMapControlEntry_stub, 1, {3} }, + { ADDRESSMAPCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_addressMapControlEntry_stub, 1, {4} }, + { ADDRESSMAPCONTROLSTATUS, ASN_INTEGER, RWRITE, read_addressMapControlEntry_stub, 1, {5} }, +}; + +#define ADDRESSMAPPHYSICALADDRESS 4 +#define ADDRESSMAPLASTCHANGE 5 + +static oid addressMapEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1}; + +struct variable addressMapEntry_variables[] = { + { ADDRESSMAPPHYSICALADDRESS, ASN_OCTET_STR, RONLY, read_addressMapEntry_stub, 1, {4} }, + { ADDRESSMAPLASTCHANGE, ASN_INTEGER, RONLY, read_addressMapEntry_stub, 1, {5} }, +}; + +#define HLHOSTCONTROLDATASOURCE 2 +#define HLHOSTCONTROLNLDROPPEDFRAMES 3 +#define HLHOSTCONTROLNLINSERTS 4 +#define HLHOSTCONTROLNLDELETES 5 +#define HLHOSTCONTROLNLMAXDESIREDENTRIES 6 +#define HLHOSTCONTROLALDROPPEDFRAMES 7 +#define HLHOSTCONTROLALINSERTS 8 +#define HLHOSTCONTROLALDELETES 9 +#define HLHOSTCONTROLALMAXDESIREDENTRIES 10 +#define HLHOSTCONTROLOWNER 11 +#define HLHOSTCONTROLSTATUS 12 + +static oid hlHostControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1}; + +struct variable hlHostControlEntry_variables[] = { + { HLHOSTCONTROLDATASOURCE, ASN_OBJECT_ID, RWRITE, read_hlHostControlEntry_stub, 1, {2} }, + { HLHOSTCONTROLNLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {3} }, + { HLHOSTCONTROLNLINSERTS, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {4} }, + { HLHOSTCONTROLNLDELETES, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {5} }, + { HLHOSTCONTROLNLMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_hlHostControlEntry_stub, 1, {6} }, + { HLHOSTCONTROLALDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {7} }, + { HLHOSTCONTROLALINSERTS, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {8} }, + { HLHOSTCONTROLALDELETES, ASN_INTEGER, RONLY, read_hlHostControlEntry_stub, 1, {9} }, + { HLHOSTCONTROLALMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_hlHostControlEntry_stub, 1, {10} }, + { HLHOSTCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_hlHostControlEntry_stub, 1, {11} }, + { HLHOSTCONTROLSTATUS, ASN_INTEGER, RWRITE, read_hlHostControlEntry_stub, 1, {12} }, +}; + +#define NLHOSTINPKTS 3 +#define NLHOSTOUTPKTS 4 +#define NLHOSTINOCTETS 5 +#define NLHOSTOUTOCTETS 6 +#define NLHOSTOUTMACNONUNICASTPKTS 7 +#define NLHOSTCREATETIME 8 + +static oid nlHostEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1}; + +struct variable nlHostEntry_variables[] = { + { NLHOSTINPKTS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {3} }, + { NLHOSTOUTPKTS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {4} }, + { NLHOSTINOCTETS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {5} }, + { NLHOSTOUTOCTETS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {6} }, + { NLHOSTOUTMACNONUNICASTPKTS, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {7} }, + { NLHOSTCREATETIME, ASN_INTEGER, RONLY, read_nlHostEntry_stub, 1, {8} }, +}; + +#define HLMATRIXCONTROLDATASOURCE 2 +#define HLMATRIXCONTROLNLDROPPEDFRAMES 3 +#define HLMATRIXCONTROLNLINSERTS 4 +#define HLMATRIXCONTROLNLDELETES 5 +#define HLMATRIXCONTROLNLMAXDESIREDENTRIES 6 +#define HLMATRIXCONTROLALDROPPEDFRAMES 7 +#define HLMATRIXCONTROLALINSERTS 8 +#define HLMATRIXCONTROLALDELETES 9 +#define HLMATRIXCONTROLALMAXDESIREDENTRIES 10 +#define HLMATRIXCONTROLOWNER 11 +#define HLMATRIXCONTROLSTATUS 12 + +static oid hlMatrixControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1}; + +struct variable hlMatrixControlEntry_variables[] = { + { HLMATRIXCONTROLDATASOURCE, ASN_OBJECT_ID, RWRITE, read_hlMatrixControlEntry_stub, 1, {2} }, + { HLMATRIXCONTROLNLDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {3} }, + { HLMATRIXCONTROLNLINSERTS, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {4} }, + { HLMATRIXCONTROLNLDELETES, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {5} }, + { HLMATRIXCONTROLNLMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_hlMatrixControlEntry_stub, 1, {6} }, + { HLMATRIXCONTROLALDROPPEDFRAMES, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {7} }, + { HLMATRIXCONTROLALINSERTS, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {8} }, + { HLMATRIXCONTROLALDELETES, ASN_INTEGER, RONLY, read_hlMatrixControlEntry_stub, 1, {9} }, + { HLMATRIXCONTROLALMAXDESIREDENTRIES, ASN_INTEGER, RWRITE, read_hlMatrixControlEntry_stub, 1, {10} }, + { HLMATRIXCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_hlMatrixControlEntry_stub, 1, {11} }, + { HLMATRIXCONTROLSTATUS, ASN_INTEGER, RWRITE, read_hlMatrixControlEntry_stub, 1, {12} }, +}; + +#define NLMATRIXSDPKTS 4 +#define NLMATRIXSDOCTETS 5 +#define NLMATRIXSDCREATETIME 6 + +static oid nlMatrixSDEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1}; + +struct variable nlMatrixSDEntry_variables[] = { + { NLMATRIXSDPKTS, ASN_INTEGER, RONLY, read_nlMatrixSDEntry_stub, 1, {4} }, + { NLMATRIXSDOCTETS, ASN_INTEGER, RONLY, read_nlMatrixSDEntry_stub, 1, {5} }, + { NLMATRIXSDCREATETIME, ASN_INTEGER, RONLY, read_nlMatrixSDEntry_stub, 1, {6} }, +}; + +#define NLMATRIXDSPKTS 4 +#define NLMATRIXDSOCTETS 5 +#define NLMATRIXDSCREATETIME 6 + +static oid nlMatrixDSEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1}; + +struct variable nlMatrixDSEntry_variables[] = { + { NLMATRIXDSPKTS, ASN_INTEGER, RONLY, read_nlMatrixDSEntry_stub, 1, {4} }, + { NLMATRIXDSOCTETS, ASN_INTEGER, RONLY, read_nlMatrixDSEntry_stub, 1, {5} }, + { NLMATRIXDSCREATETIME, ASN_INTEGER, RONLY, read_nlMatrixDSEntry_stub, 1, {6} }, +}; + +#define NLMATRIXTOPNCONTROLMATRIXINDEX 2 +#define NLMATRIXTOPNCONTROLRATEBASE 3 +#define NLMATRIXTOPNCONTROLTIMEREMAINING 4 +#define NLMATRIXTOPNCONTROLGENERATEDREPORTS 5 +#define NLMATRIXTOPNCONTROLDURATION 6 +#define NLMATRIXTOPNCONTROLREQUESTEDSIZE 7 +#define NLMATRIXTOPNCONTROLGRANTEDSIZE 8 +#define NLMATRIXTOPNCONTROLSTARTTIME 9 +#define NLMATRIXTOPNCONTROLOWNER 10 +#define NLMATRIXTOPNCONTROLSTATUS 11 + +static oid nlMatrixTopNControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1}; + +struct variable nlMatrixTopNControlEntry_variables[] = { + { NLMATRIXTOPNCONTROLMATRIXINDEX, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {2} }, + { NLMATRIXTOPNCONTROLRATEBASE, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {3} }, + { NLMATRIXTOPNCONTROLTIMEREMAINING, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {4} }, + { NLMATRIXTOPNCONTROLGENERATEDREPORTS, ASN_INTEGER, RONLY, read_nlMatrixTopNControlEntry_stub, 1, {5} }, + { NLMATRIXTOPNCONTROLDURATION, ASN_INTEGER, RONLY, read_nlMatrixTopNControlEntry_stub, 1, {6} }, + { NLMATRIXTOPNCONTROLREQUESTEDSIZE, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {7} }, + { NLMATRIXTOPNCONTROLGRANTEDSIZE, ASN_INTEGER, RONLY, read_nlMatrixTopNControlEntry_stub, 1, {8} }, + { NLMATRIXTOPNCONTROLSTARTTIME, ASN_INTEGER, RONLY, read_nlMatrixTopNControlEntry_stub, 1, {9} }, + { NLMATRIXTOPNCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {10} }, + { NLMATRIXTOPNCONTROLSTATUS, ASN_INTEGER, RWRITE, read_nlMatrixTopNControlEntry_stub, 1, {11} }, +}; + +#define NLMATRIXTOPNPROTOCOLDIRLOCALINDEX 2 +#define NLMATRIXTOPNSOURCEADDRESS 3 +#define NLMATRIXTOPNDESTADDRESS 4 +#define NLMATRIXTOPNPKTRATE 5 +#define NLMATRIXTOPNREVERSEPKTRATE 6 +#define NLMATRIXTOPNOCTETRATE 7 +#define NLMATRIXTOPNREVERSEOCTETRATE 8 + +static oid nlMatrixTopNEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1}; + +struct variable nlMatrixTopNEntry_variables[] = { + { NLMATRIXTOPNPROTOCOLDIRLOCALINDEX, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {2} }, + { NLMATRIXTOPNSOURCEADDRESS, ASN_OCTET_STR, RONLY, read_nlMatrixTopNEntry_stub, 1, {3} }, + { NLMATRIXTOPNDESTADDRESS, ASN_OCTET_STR, RONLY, read_nlMatrixTopNEntry_stub, 1, {4} }, + { NLMATRIXTOPNPKTRATE, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {5} }, + { NLMATRIXTOPNREVERSEPKTRATE, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {6} }, + { NLMATRIXTOPNOCTETRATE, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {7} }, + { NLMATRIXTOPNREVERSEOCTETRATE, ASN_INTEGER, RONLY, read_nlMatrixTopNEntry_stub, 1, {8} }, +}; + +#define ALHOSTINPKTS 2 +#define ALHOSTOUTPKTS 3 +#define ALHOSTINOCTETS 4 +#define ALHOSTOUTOCTETS 5 +#define ALHOSTCREATETIME 6 + +static oid alHostEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1}; + +struct variable alHostEntry_variables[] = { + { ALHOSTINPKTS, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {2} }, + { ALHOSTOUTPKTS, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {3} }, + { ALHOSTINOCTETS, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {4} }, + { ALHOSTOUTOCTETS, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {5} }, + { ALHOSTCREATETIME, ASN_INTEGER, RONLY, read_alHostEntry_stub, 1, {6} }, +}; + +#define ALMATRIXSDPKTS 2 +#define ALMATRIXSDOCTETS 3 +#define ALMATRIXSDCREATETIME 4 + +static oid alMatrixSDEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1}; + +struct variable alMatrixSDEntry_variables[] = { + { ALMATRIXSDPKTS, ASN_INTEGER, RONLY, read_alMatrixSDEntry_stub, 1, {2} }, + { ALMATRIXSDOCTETS, ASN_INTEGER, RONLY, read_alMatrixSDEntry_stub, 1, {3} }, + { ALMATRIXSDCREATETIME, ASN_INTEGER, RONLY, read_alMatrixSDEntry_stub, 1, {4} }, +}; + +#define ALMATRIXDSPKTS 2 +#define ALMATRIXDSOCTETS 3 +#define ALMATRIXDSCREATETIME 4 + +static oid alMatrixDSEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1}; + +struct variable alMatrixDSEntry_variables[] = { + { ALMATRIXDSPKTS, ASN_INTEGER, RONLY, read_alMatrixDSEntry_stub, 1, {2} }, + { ALMATRIXDSOCTETS, ASN_INTEGER, RONLY, read_alMatrixDSEntry_stub, 1, {3} }, + { ALMATRIXDSCREATETIME, ASN_INTEGER, RONLY, read_alMatrixDSEntry_stub, 1, {4} }, +}; + +#define ALMATRIXTOPNCONTROLMATRIXINDEX 2 +#define ALMATRIXTOPNCONTROLRATEBASE 3 +#define ALMATRIXTOPNCONTROLTIMEREMAINING 4 +#define ALMATRIXTOPNCONTROLGENERATEDREPORTS 5 +#define ALMATRIXTOPNCONTROLDURATION 6 +#define ALMATRIXTOPNCONTROLREQUESTEDSIZE 7 +#define ALMATRIXTOPNCONTROLGRANTEDSIZE 8 +#define ALMATRIXTOPNCONTROLSTARTTIME 9 +#define ALMATRIXTOPNCONTROLOWNER 10 +#define ALMATRIXTOPNCONTROLSTATUS 11 + +static oid alMatrixTopNControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1}; + +struct variable alMatrixTopNControlEntry_variables[] = { + { ALMATRIXTOPNCONTROLMATRIXINDEX, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {2} }, + { ALMATRIXTOPNCONTROLRATEBASE, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {3} }, + { ALMATRIXTOPNCONTROLTIMEREMAINING, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {4} }, + { ALMATRIXTOPNCONTROLGENERATEDREPORTS, ASN_INTEGER, RONLY, read_alMatrixTopNControlEntry_stub, 1, {5} }, + { ALMATRIXTOPNCONTROLDURATION, ASN_INTEGER, RONLY, read_alMatrixTopNControlEntry_stub, 1, {6} }, + { ALMATRIXTOPNCONTROLREQUESTEDSIZE, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {7} }, + { ALMATRIXTOPNCONTROLGRANTEDSIZE, ASN_INTEGER, RONLY, read_alMatrixTopNControlEntry_stub, 1, {8} }, + { ALMATRIXTOPNCONTROLSTARTTIME, ASN_INTEGER, RONLY, read_alMatrixTopNControlEntry_stub, 1, {9} }, + { ALMATRIXTOPNCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {10} }, + { ALMATRIXTOPNCONTROLSTATUS, ASN_INTEGER, RWRITE, read_alMatrixTopNControlEntry_stub, 1, {11} }, +}; + +#define ALMATRIXTOPNPROTOCOLDIRLOCALINDEX 2 +#define ALMATRIXTOPNSOURCEADDRESS 3 +#define ALMATRIXTOPNDESTADDRESS 4 +#define ALMATRIXTOPNAPPPROTOCOLDIRLOCALINDEX 5 +#define ALMATRIXTOPNPKTRATE 6 +#define ALMATRIXTOPNREVERSEPKTRATE 7 +#define ALMATRIXTOPNOCTETRATE 8 +#define ALMATRIXTOPNREVERSEOCTETRATE 9 + +static oid alMatrixTopNEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1}; + +struct variable alMatrixTopNEntry_variables[] = { + { ALMATRIXTOPNPROTOCOLDIRLOCALINDEX, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {2} }, + { ALMATRIXTOPNSOURCEADDRESS, ASN_OCTET_STR, RONLY, read_alMatrixTopNEntry_stub, 1, {3} }, + { ALMATRIXTOPNDESTADDRESS, ASN_OCTET_STR, RONLY, read_alMatrixTopNEntry_stub, 1, {4} }, + { ALMATRIXTOPNAPPPROTOCOLDIRLOCALINDEX, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {5} }, + { ALMATRIXTOPNPKTRATE, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {6} }, + { ALMATRIXTOPNREVERSEPKTRATE, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {7} }, + { ALMATRIXTOPNOCTETRATE, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {8} }, + { ALMATRIXTOPNREVERSEOCTETRATE, ASN_INTEGER, RONLY, read_alMatrixTopNEntry_stub, 1, {9} }, +}; + +#define USRHISTORYCONTROLOBJECTS 2 +#define USRHISTORYCONTROLBUCKETSREQUESTED 3 +#define USRHISTORYCONTROLBUCKETSGRANTED 4 +#define USRHISTORYCONTROLINTERVAL 5 +#define USRHISTORYCONTROLOWNER 6 +#define USRHISTORYCONTROLSTATUS 7 + +static oid usrHistoryControlEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1}; + +struct variable usrHistoryControlEntry_variables[] = { + { USRHISTORYCONTROLOBJECTS, ASN_INTEGER, RWRITE, read_usrHistoryControlEntry_stub, 1, {2} }, + { USRHISTORYCONTROLBUCKETSREQUESTED, ASN_INTEGER, RWRITE, read_usrHistoryControlEntry_stub, 1, {3} }, + { USRHISTORYCONTROLBUCKETSGRANTED, ASN_INTEGER, RONLY, read_usrHistoryControlEntry_stub, 1, {4} }, + { USRHISTORYCONTROLINTERVAL, ASN_INTEGER, RWRITE, read_usrHistoryControlEntry_stub, 1, {5} }, + { USRHISTORYCONTROLOWNER, ASN_OCTET_STR, RWRITE, read_usrHistoryControlEntry_stub, 1, {6} }, + { USRHISTORYCONTROLSTATUS, ASN_INTEGER, RWRITE, read_usrHistoryControlEntry_stub, 1, {7} }, +}; + +#define USRHISTORYOBJECTVARIABLE 2 +#define USRHISTORYOBJECTSAMPLETYPE 3 + +static oid usrHistoryObjectEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1}; + +struct variable usrHistoryObjectEntry_variables[] = { + { USRHISTORYOBJECTVARIABLE, ASN_OBJECT_ID, RWRITE, read_usrHistoryObjectEntry_stub, 1, {2} }, + { USRHISTORYOBJECTSAMPLETYPE, ASN_INTEGER, RWRITE, read_usrHistoryObjectEntry_stub, 1, {3} }, +}; + +#define USRHISTORYINTERVALSTART 2 +#define USRHISTORYINTERVALEND 3 +#define USRHISTORYABSVALUE 4 +#define USRHISTORYVALSTATUS 5 + +static oid usrHistoryEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1}; + +struct variable usrHistoryEntry_variables[] = { + { USRHISTORYINTERVALSTART, ASN_INTEGER, RONLY, read_usrHistoryEntry_stub, 1, {2} }, + { USRHISTORYINTERVALEND, ASN_INTEGER, RONLY, read_usrHistoryEntry_stub, 1, {3} }, + { USRHISTORYABSVALUE, ASN_INTEGER, RONLY, read_usrHistoryEntry_stub, 1, {4} }, + { USRHISTORYVALSTATUS, ASN_INTEGER, RONLY, read_usrHistoryEntry_stub, 1, {5} }, +}; + +#define PROBECAPABILITIES 1 +#define PROBESOFTWAREREV 2 +#define PROBEHARDWAREREV 3 +#define PROBEDATETIME 4 +#define PROBERESETCONTROL 5 +#define PROBEDOWNLOADFILE 6 +#define PROBEDOWNLOADTFTPSERVER 7 +#define PROBEDOWNLOADACTION 8 +#define PROBEDOWNLOADSTATUS 9 +#define NETDEFAULTGATEWAY 12 + +static oid probeConfig_base[] = {1, 3, 6, 1, 2, 1, 16, 19}; + +struct variable probeConfig_variables[] = { + { PROBECAPABILITIES, ASN_OCTET_STR, RONLY, read_probeConfig_stub, 1, {1} }, + { PROBESOFTWAREREV, ASN_OCTET_STR, RONLY, read_probeConfig_stub, 1, {2} }, + { PROBEHARDWAREREV, ASN_OCTET_STR, RONLY, read_probeConfig_stub, 1, {3} }, + { PROBEDATETIME, ASN_OCTET_STR, RWRITE, read_probeConfig_stub, 1, {4} }, + { PROBERESETCONTROL, ASN_INTEGER, RWRITE, read_probeConfig_stub, 1, {5} }, + { PROBEDOWNLOADFILE, ASN_OCTET_STR, RWRITE, read_probeConfig_stub, 1, {6} }, + { PROBEDOWNLOADTFTPSERVER, ASN_OCTET_STR, RWRITE, read_probeConfig_stub, 1, {7} }, + { PROBEDOWNLOADACTION, ASN_INTEGER, RWRITE, read_probeConfig_stub, 1, {8} }, + { PROBEDOWNLOADSTATUS, ASN_INTEGER, RONLY, read_probeConfig_stub, 1, {9} }, + { NETDEFAULTGATEWAY, ASN_OCTET_STR, RWRITE, read_probeConfig_stub, 1, {12} }, +}; + +#define SERIALMODE 1 +#define SERIALPROTOCOL 2 +#define SERIALTIMEOUT 3 +#define SERIALMODEMINITSTRING 4 +#define SERIALMODEMHANGUPSTRING 5 +#define SERIALMODEMCONNECTRESP 6 +#define SERIALMODEMNOCONNECTRESP 7 +#define SERIALDIALOUTTIMEOUT 8 +#define SERIALSTATUS 9 + +static oid serialConfigEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1}; + +struct variable serialConfigEntry_variables[] = { + { SERIALMODE, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {1} }, + { SERIALPROTOCOL, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {2} }, + { SERIALTIMEOUT, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {3} }, + { SERIALMODEMINITSTRING, ASN_OCTET_STR, RWRITE, read_serialConfigEntry_stub, 1, {4} }, + { SERIALMODEMHANGUPSTRING, ASN_OCTET_STR, RWRITE, read_serialConfigEntry_stub, 1, {5} }, + { SERIALMODEMCONNECTRESP, ASN_OCTET_STR, RWRITE, read_serialConfigEntry_stub, 1, {6} }, + { SERIALMODEMNOCONNECTRESP, ASN_OCTET_STR, RWRITE, read_serialConfigEntry_stub, 1, {7} }, + { SERIALDIALOUTTIMEOUT, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {8} }, + { SERIALSTATUS, ASN_INTEGER, RWRITE, read_serialConfigEntry_stub, 1, {9} }, +}; + +#define NETCONFIGIPADDRESS 1 +#define NETCONFIGSUBNETMASK 2 +#define NETCONFIGSTATUS 3 + +static oid netConfigEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1}; + +struct variable netConfigEntry_variables[] = { + { NETCONFIGIPADDRESS, ASN_OCTET_STR, RWRITE, read_netConfigEntry_stub, 1, {1} }, + { NETCONFIGSUBNETMASK, ASN_OCTET_STR, RWRITE, read_netConfigEntry_stub, 1, {2} }, + { NETCONFIGSTATUS, ASN_INTEGER, RWRITE, read_netConfigEntry_stub, 1, {3} }, +}; + +#define TRAPDESTCOMMUNITY 2 +#define TRAPDESTPROTOCOL 3 +#define TRAPDESTADDRESS 4 +#define TRAPDESTOWNER 5 +#define TRAPDESTSTATUS 6 + +static oid trapDestEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1}; + +struct variable trapDestEntry_variables[] = { + { TRAPDESTCOMMUNITY, ASN_OCTET_STR, RWRITE, read_trapDestEntry_stub, 1, {2} }, + { TRAPDESTPROTOCOL, ASN_INTEGER, RWRITE, read_trapDestEntry_stub, 1, {3} }, + { TRAPDESTADDRESS, ASN_OCTET_STR, RWRITE, read_trapDestEntry_stub, 1, {4} }, + { TRAPDESTOWNER, ASN_OCTET_STR, RWRITE, read_trapDestEntry_stub, 1, {5} }, + { TRAPDESTSTATUS, ASN_INTEGER, RWRITE, read_trapDestEntry_stub, 1, {6} }, +}; + +#define SERIALCONNECTDESTIPADDRESS 2 +#define SERIALCONNECTTYPE 3 +#define SERIALCONNECTDIALSTRING 4 +#define SERIALCONNECTSWITCHCONNECTSEQ 5 +#define SERIALCONNECTSWITCHDISCONNECTSEQ 6 +#define SERIALCONNECTSWITCHRESETSEQ 7 +#define SERIALCONNECTOWNER 8 +#define SERIALCONNECTSTATUS 9 + +static oid serialConnectionEntry_base[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1}; + +struct variable serialConnectionEntry_variables[] = { + { SERIALCONNECTDESTIPADDRESS, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {2} }, + { SERIALCONNECTTYPE, ASN_INTEGER, RWRITE, read_serialConnectionEntry_stub, 1, {3} }, + { SERIALCONNECTDIALSTRING, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {4} }, + { SERIALCONNECTSWITCHCONNECTSEQ, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {5} }, + { SERIALCONNECTSWITCHDISCONNECTSEQ, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {6} }, + { SERIALCONNECTSWITCHRESETSEQ, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {7} }, + { SERIALCONNECTOWNER, ASN_OCTET_STR, RWRITE, read_serialConnectionEntry_stub, 1, {8} }, + { SERIALCONNECTSTATUS, ASN_INTEGER, RWRITE, read_serialConnectionEntry_stub, 1, {9} }, +}; + + + +/* + * Registration functions for the various MIB groups. + */ + +int register_etherStats2Entry() +{ + return register_mib("etherStats2Entry", + etherStats2Entry_variables, + sizeof(struct variable), + sizeof(etherStats2Entry_variables)/sizeof(struct variable), + etherStats2Entry_base, + sizeof(etherStats2Entry_base)/sizeof(oid)); +}; + + +int register_tokenRingMLStats2Entry() +{ + return register_mib("tokenRingMLStats2Entry", + tokenRingMLStats2Entry_variables, + sizeof(struct variable), + sizeof(tokenRingMLStats2Entry_variables)/sizeof(struct variable), + tokenRingMLStats2Entry_base, + sizeof(tokenRingMLStats2Entry_base)/sizeof(oid)); +}; + + +int register_tokenRingPStats2Entry() +{ + return register_mib("tokenRingPStats2Entry", + tokenRingPStats2Entry_variables, + sizeof(struct variable), + sizeof(tokenRingPStats2Entry_variables)/sizeof(struct variable), + tokenRingPStats2Entry_base, + sizeof(tokenRingPStats2Entry_base)/sizeof(oid)); +}; + + +int register_historyControl2Entry() +{ + return register_mib("historyControl2Entry", + historyControl2Entry_variables, + sizeof(struct variable), + sizeof(historyControl2Entry_variables)/sizeof(struct variable), + historyControl2Entry_base, + sizeof(historyControl2Entry_base)/sizeof(oid)); +}; + + +int register_hostControl2Entry() +{ + return register_mib("hostControl2Entry", + hostControl2Entry_variables, + sizeof(struct variable), + sizeof(hostControl2Entry_variables)/sizeof(struct variable), + hostControl2Entry_base, + sizeof(hostControl2Entry_base)/sizeof(oid)); +}; + + +int register_matrixControl2Entry() +{ + return register_mib("matrixControl2Entry", + matrixControl2Entry_variables, + sizeof(struct variable), + sizeof(matrixControl2Entry_variables)/sizeof(struct variable), + matrixControl2Entry_base, + sizeof(matrixControl2Entry_base)/sizeof(oid)); +}; + + +int register_channel2Entry() +{ + return register_mib("channel2Entry", + channel2Entry_variables, + sizeof(struct variable), + sizeof(channel2Entry_variables)/sizeof(struct variable), + channel2Entry_base, + sizeof(channel2Entry_base)/sizeof(oid)); +}; + + +int register_filter2Entry() +{ + return register_mib("filter2Entry", + filter2Entry_variables, + sizeof(struct variable), + sizeof(filter2Entry_variables)/sizeof(struct variable), + filter2Entry_base, + sizeof(filter2Entry_base)/sizeof(oid)); +}; + + +int register_ringStationControl2Entry() +{ + return register_mib("ringStationControl2Entry", + ringStationControl2Entry_variables, + sizeof(struct variable), + sizeof(ringStationControl2Entry_variables)/sizeof(struct variable), + ringStationControl2Entry_base, + sizeof(ringStationControl2Entry_base)/sizeof(oid)); +}; + + +int register_sourceRoutingStats2Entry() +{ + return register_mib("sourceRoutingStats2Entry", + sourceRoutingStats2Entry_variables, + sizeof(struct variable), + sizeof(sourceRoutingStats2Entry_variables)/sizeof(struct variable), + sourceRoutingStats2Entry_base, + sizeof(sourceRoutingStats2Entry_base)/sizeof(oid)); +}; + + +int register_protocolDir() +{ + return register_mib("protocolDir", + protocolDir_variables, + sizeof(struct variable), + sizeof(protocolDir_variables)/sizeof(struct variable), + protocolDir_base, + sizeof(protocolDir_base)/sizeof(oid)); +}; + + +int register_protocolDirEntry() +{ + return register_mib("protocolDirEntry", + protocolDirEntry_variables, + sizeof(struct variable), + sizeof(protocolDirEntry_variables)/sizeof(struct variable), + protocolDirEntry_base, + sizeof(protocolDirEntry_base)/sizeof(oid)); +}; + + +int register_protocolDistControlEntry() +{ + return register_mib("protocolDistControlEntry", + protocolDistControlEntry_variables, + sizeof(struct variable), + sizeof(protocolDistControlEntry_variables)/sizeof(struct variable), + protocolDistControlEntry_base, + sizeof(protocolDistControlEntry_base)/sizeof(oid)); +}; + + +int register_protocolDistStatsEntry() +{ + return register_mib("protocolDistStatsEntry", + protocolDistStatsEntry_variables, + sizeof(struct variable), + sizeof(protocolDistStatsEntry_variables)/sizeof(struct variable), + protocolDistStatsEntry_base, + sizeof(protocolDistStatsEntry_base)/sizeof(oid)); +}; + + +int register_addressMap() +{ + return register_mib("addressMap", + addressMap_variables, + sizeof(struct variable), + sizeof(addressMap_variables)/sizeof(struct variable), + addressMap_base, + sizeof(addressMap_base)/sizeof(oid)); +}; + + +int register_addressMapControlEntry() +{ + return register_mib("addressMapControlEntry", + addressMapControlEntry_variables, + sizeof(struct variable), + sizeof(addressMapControlEntry_variables)/sizeof(struct variable), + addressMapControlEntry_base, + sizeof(addressMapControlEntry_base)/sizeof(oid)); +}; + + +int register_addressMapEntry() +{ + return register_mib("addressMapEntry", + addressMapEntry_variables, + sizeof(struct variable), + sizeof(addressMapEntry_variables)/sizeof(struct variable), + addressMapEntry_base, + sizeof(addressMapEntry_base)/sizeof(oid)); +}; + + +int register_hlHostControlEntry() +{ + return register_mib("hlHostControlEntry", + hlHostControlEntry_variables, + sizeof(struct variable), + sizeof(hlHostControlEntry_variables)/sizeof(struct variable), + hlHostControlEntry_base, + sizeof(hlHostControlEntry_base)/sizeof(oid)); +}; + + +int register_nlHostEntry() +{ + return register_mib("nlHostEntry", + nlHostEntry_variables, + sizeof(struct variable), + sizeof(nlHostEntry_variables)/sizeof(struct variable), + nlHostEntry_base, + sizeof(nlHostEntry_base)/sizeof(oid)); +}; + + +int register_hlMatrixControlEntry() +{ + return register_mib("hlMatrixControlEntry", + hlMatrixControlEntry_variables, + sizeof(struct variable), + sizeof(hlMatrixControlEntry_variables)/sizeof(struct variable), + hlMatrixControlEntry_base, + sizeof(hlMatrixControlEntry_base)/sizeof(oid)); +}; + + +int register_nlMatrixSDEntry() +{ + return register_mib("nlMatrixSDEntry", + nlMatrixSDEntry_variables, + sizeof(struct variable), + sizeof(nlMatrixSDEntry_variables)/sizeof(struct variable), + nlMatrixSDEntry_base, + sizeof(nlMatrixSDEntry_base)/sizeof(oid)); +}; + + +int register_nlMatrixDSEntry() +{ + return register_mib("nlMatrixDSEntry", + nlMatrixDSEntry_variables, + sizeof(struct variable), + sizeof(nlMatrixDSEntry_variables)/sizeof(struct variable), + nlMatrixDSEntry_base, + sizeof(nlMatrixDSEntry_base)/sizeof(oid)); +}; + + +int register_nlMatrixTopNControlEntry() +{ + return register_mib("nlMatrixTopNControlEntry", + nlMatrixTopNControlEntry_variables, + sizeof(struct variable), + sizeof(nlMatrixTopNControlEntry_variables)/sizeof(struct variable), + nlMatrixTopNControlEntry_base, + sizeof(nlMatrixTopNControlEntry_base)/sizeof(oid)); +}; + + +int register_nlMatrixTopNEntry() +{ + return register_mib("nlMatrixTopNEntry", + nlMatrixTopNEntry_variables, + sizeof(struct variable), + sizeof(nlMatrixTopNEntry_variables)/sizeof(struct variable), + nlMatrixTopNEntry_base, + sizeof(nlMatrixTopNEntry_base)/sizeof(oid)); +}; + + +int register_alHostEntry() +{ + return register_mib("alHostEntry", + alHostEntry_variables, + sizeof(struct variable), + sizeof(alHostEntry_variables)/sizeof(struct variable), + alHostEntry_base, + sizeof(alHostEntry_base)/sizeof(oid)); +}; + + +int register_alMatrixSDEntry() +{ + return register_mib("alMatrixSDEntry", + alMatrixSDEntry_variables, + sizeof(struct variable), + sizeof(alMatrixSDEntry_variables)/sizeof(struct variable), + alMatrixSDEntry_base, + sizeof(alMatrixSDEntry_base)/sizeof(oid)); +}; + + +int register_alMatrixDSEntry() +{ + return register_mib("alMatrixDSEntry", + alMatrixDSEntry_variables, + sizeof(struct variable), + sizeof(alMatrixDSEntry_variables)/sizeof(struct variable), + alMatrixDSEntry_base, + sizeof(alMatrixDSEntry_base)/sizeof(oid)); +}; + + +int register_alMatrixTopNControlEntry() +{ + return register_mib("alMatrixTopNControlEntry", + alMatrixTopNControlEntry_variables, + sizeof(struct variable), + sizeof(alMatrixTopNControlEntry_variables)/sizeof(struct variable), + alMatrixTopNControlEntry_base, + sizeof(alMatrixTopNControlEntry_base)/sizeof(oid)); +}; + + +int register_alMatrixTopNEntry() +{ + return register_mib("alMatrixTopNEntry", + alMatrixTopNEntry_variables, + sizeof(struct variable), + sizeof(alMatrixTopNEntry_variables)/sizeof(struct variable), + alMatrixTopNEntry_base, + sizeof(alMatrixTopNEntry_base)/sizeof(oid)); +}; + + +int register_usrHistoryControlEntry() +{ + return register_mib("usrHistoryControlEntry", + usrHistoryControlEntry_variables, + sizeof(struct variable), + sizeof(usrHistoryControlEntry_variables)/sizeof(struct variable), + usrHistoryControlEntry_base, + sizeof(usrHistoryControlEntry_base)/sizeof(oid)); +}; + + +int register_usrHistoryObjectEntry() +{ + return register_mib("usrHistoryObjectEntry", + usrHistoryObjectEntry_variables, + sizeof(struct variable), + sizeof(usrHistoryObjectEntry_variables)/sizeof(struct variable), + usrHistoryObjectEntry_base, + sizeof(usrHistoryObjectEntry_base)/sizeof(oid)); +}; + + +int register_usrHistoryEntry() +{ + return register_mib("usrHistoryEntry", + usrHistoryEntry_variables, + sizeof(struct variable), + sizeof(usrHistoryEntry_variables)/sizeof(struct variable), + usrHistoryEntry_base, + sizeof(usrHistoryEntry_base)/sizeof(oid)); +}; + + +int register_probeConfig() +{ + return register_mib("probeConfig", + probeConfig_variables, + sizeof(struct variable), + sizeof(probeConfig_variables)/sizeof(struct variable), + probeConfig_base, + sizeof(probeConfig_base)/sizeof(oid)); +}; + + +int register_serialConfigEntry() +{ + return register_mib("serialConfigEntry", + serialConfigEntry_variables, + sizeof(struct variable), + sizeof(serialConfigEntry_variables)/sizeof(struct variable), + serialConfigEntry_base, + sizeof(serialConfigEntry_base)/sizeof(oid)); +}; + + +int register_netConfigEntry() +{ + return register_mib("netConfigEntry", + netConfigEntry_variables, + sizeof(struct variable), + sizeof(netConfigEntry_variables)/sizeof(struct variable), + netConfigEntry_base, + sizeof(netConfigEntry_base)/sizeof(oid)); +}; + + +int register_trapDestEntry() +{ + return register_mib("trapDestEntry", + trapDestEntry_variables, + sizeof(struct variable), + sizeof(trapDestEntry_variables)/sizeof(struct variable), + trapDestEntry_base, + sizeof(trapDestEntry_base)/sizeof(oid)); +}; + + +int register_serialConnectionEntry() +{ + return register_mib("serialConnectionEntry", + serialConnectionEntry_variables, + sizeof(struct variable), + sizeof(serialConnectionEntry_variables)/sizeof(struct variable), + serialConnectionEntry_base, + sizeof(serialConnectionEntry_base)/sizeof(oid)); +}; + + +/* + * Read methods for groups of scalars and tables: + */ + +static unsigned char * +read_etherStats2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static etherStats2Entry_t etherStats2Entry; + + /* call the user supplied function to retrieve values */ + + read_etherStats2Entry(ðerStats2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ETHERSTATSDROPPEDFRAMES: + return (unsigned char *) ðerStats2Entry.etherStatsDroppedFrames; + + case ETHERSTATSCREATETIME: + return (unsigned char *) ðerStats2Entry.etherStatsCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_tokenRingMLStats2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static tokenRingMLStats2Entry_t tokenRingMLStats2Entry; + + /* call the user supplied function to retrieve values */ + + read_tokenRingMLStats2Entry(&tokenRingMLStats2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case TOKENRINGMLSTATSDROPPEDFRAMES: + return (unsigned char *) &tokenRingMLStats2Entry.tokenRingMLStatsDroppedFrames; + + case TOKENRINGMLSTATSCREATETIME: + return (unsigned char *) &tokenRingMLStats2Entry.tokenRingMLStatsCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_tokenRingPStats2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static tokenRingPStats2Entry_t tokenRingPStats2Entry; + + /* call the user supplied function to retrieve values */ + + read_tokenRingPStats2Entry(&tokenRingPStats2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case TOKENRINGPSTATSDROPPEDFRAMES: + return (unsigned char *) &tokenRingPStats2Entry.tokenRingPStatsDroppedFrames; + + case TOKENRINGPSTATSCREATETIME: + return (unsigned char *) &tokenRingPStats2Entry.tokenRingPStatsCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_historyControl2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static historyControl2Entry_t historyControl2Entry; + + /* call the user supplied function to retrieve values */ + + read_historyControl2Entry(&historyControl2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case HISTORYCONTROLDROPPEDFRAMES: + return (unsigned char *) &historyControl2Entry.historyControlDroppedFrames; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_hostControl2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static hostControl2Entry_t hostControl2Entry; + + /* call the user supplied function to retrieve values */ + + read_hostControl2Entry(&hostControl2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case HOSTCONTROLDROPPEDFRAMES: + return (unsigned char *) &hostControl2Entry.hostControlDroppedFrames; + + case HOSTCONTROLCREATETIME: + return (unsigned char *) &hostControl2Entry.hostControlCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_matrixControl2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static matrixControl2Entry_t matrixControl2Entry; + + /* call the user supplied function to retrieve values */ + + read_matrixControl2Entry(&matrixControl2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case MATRIXCONTROLDROPPEDFRAMES: + return (unsigned char *) &matrixControl2Entry.matrixControlDroppedFrames; + + case MATRIXCONTROLCREATETIME: + return (unsigned char *) &matrixControl2Entry.matrixControlCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_channel2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static channel2Entry_t channel2Entry; + + /* call the user supplied function to retrieve values */ + + read_channel2Entry(&channel2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case CHANNELDROPPEDFRAMES: + return (unsigned char *) &channel2Entry.channelDroppedFrames; + + case CHANNELCREATETIME: + return (unsigned char *) &channel2Entry.channelCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_filter2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static filter2Entry_t filter2Entry; + + /* call the user supplied function to retrieve values */ + + read_filter2Entry(&filter2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case FILTERPROTOCOLDIRDATALOCALINDEX: + return (unsigned char *) &filter2Entry.filterProtocolDirDataLocalIndex; + + case FILTERPROTOCOLDIRLOCALINDEX: + return (unsigned char *) &filter2Entry.filterProtocolDirLocalIndex; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_ringStationControl2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static ringStationControl2Entry_t ringStationControl2Entry; + + /* call the user supplied function to retrieve values */ + + read_ringStationControl2Entry(&ringStationControl2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case RINGSTATIONCONTROLDROPPEDFRAMES: + return (unsigned char *) &ringStationControl2Entry.ringStationControlDroppedFrames; + + case RINGSTATIONCONTROLCREATETIME: + return (unsigned char *) &ringStationControl2Entry.ringStationControlCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_sourceRoutingStats2Entry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static sourceRoutingStats2Entry_t sourceRoutingStats2Entry; + + /* call the user supplied function to retrieve values */ + + read_sourceRoutingStats2Entry(&sourceRoutingStats2Entry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SOURCEROUTINGSTATSDROPPEDFRAMES: + return (unsigned char *) &sourceRoutingStats2Entry.sourceRoutingStatsDroppedFrames; + + case SOURCEROUTINGSTATSCREATETIME: + return (unsigned char *) &sourceRoutingStats2Entry.sourceRoutingStatsCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_protocolDir_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static protocolDir_t protocolDir; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_protocolDir(&protocolDir); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROTOCOLDIRLASTCHANGE: + return (unsigned char *) &protocolDir.protocolDirLastChange; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_protocolDirEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static protocolDirEntry_t protocolDirEntry; + + /* call the user supplied function to retrieve values */ + + read_protocolDirEntry(&protocolDirEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROTOCOLDIRLOCALINDEX: + return (unsigned char *) &protocolDirEntry.protocolDirLocalIndex; + + case PROTOCOLDIRDESCR: + *var_len = protocolDirEntry._protocolDirDescrLength; + return (unsigned char *) protocolDirEntry.protocolDirDescr; + + case PROTOCOLDIRTYPE: + *var_len = protocolDirEntry._protocolDirTypeLength; + return (unsigned char *) protocolDirEntry.protocolDirType; + + case PROTOCOLDIRADDRESSMAPCONFIG: + return (unsigned char *) &protocolDirEntry.protocolDirAddressMapConfig; + + case PROTOCOLDIRHOSTCONFIG: + return (unsigned char *) &protocolDirEntry.protocolDirHostConfig; + + case PROTOCOLDIRMATRIXCONFIG: + return (unsigned char *) &protocolDirEntry.protocolDirMatrixConfig; + + case PROTOCOLDIROWNER: + *var_len = protocolDirEntry._protocolDirOwnerLength; + return (unsigned char *) protocolDirEntry.protocolDirOwner; + + case PROTOCOLDIRSTATUS: + return (unsigned char *) &protocolDirEntry.protocolDirStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_protocolDistControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static protocolDistControlEntry_t protocolDistControlEntry; + + /* call the user supplied function to retrieve values */ + + read_protocolDistControlEntry(&protocolDistControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROTOCOLDISTCONTROLDATASOURCE: + *var_len = protocolDistControlEntry._protocolDistControlDataSourceLength; + return (unsigned char *) protocolDistControlEntry.protocolDistControlDataSource; + + case PROTOCOLDISTCONTROLDROPPEDFRAMES: + return (unsigned char *) &protocolDistControlEntry.protocolDistControlDroppedFrames; + + case PROTOCOLDISTCONTROLCREATETIME: + return (unsigned char *) &protocolDistControlEntry.protocolDistControlCreateTime; + + case PROTOCOLDISTCONTROLOWNER: + *var_len = protocolDistControlEntry._protocolDistControlOwnerLength; + return (unsigned char *) protocolDistControlEntry.protocolDistControlOwner; + + case PROTOCOLDISTCONTROLSTATUS: + return (unsigned char *) &protocolDistControlEntry.protocolDistControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_protocolDistStatsEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static protocolDistStatsEntry_t protocolDistStatsEntry; + + /* call the user supplied function to retrieve values */ + + read_protocolDistStatsEntry(&protocolDistStatsEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROTOCOLDISTSTATSPKTS: + return (unsigned char *) &protocolDistStatsEntry.protocolDistStatsPkts; + + case PROTOCOLDISTSTATSOCTETS: + return (unsigned char *) &protocolDistStatsEntry.protocolDistStatsOctets; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_addressMap_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static addressMap_t addressMap; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_addressMap(&addressMap); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ADDRESSMAPINSERTS: + return (unsigned char *) &addressMap.addressMapInserts; + + case ADDRESSMAPDELETES: + return (unsigned char *) &addressMap.addressMapDeletes; + + case ADDRESSMAPMAXDESIREDENTRIES: + return (unsigned char *) &addressMap.addressMapMaxDesiredEntries; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_addressMapControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static addressMapControlEntry_t addressMapControlEntry; + + /* call the user supplied function to retrieve values */ + + read_addressMapControlEntry(&addressMapControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ADDRESSMAPCONTROLDATASOURCE: + *var_len = addressMapControlEntry._addressMapControlDataSourceLength; + return (unsigned char *) addressMapControlEntry.addressMapControlDataSource; + + case ADDRESSMAPCONTROLDROPPEDFRAMES: + return (unsigned char *) &addressMapControlEntry.addressMapControlDroppedFrames; + + case ADDRESSMAPCONTROLOWNER: + *var_len = addressMapControlEntry._addressMapControlOwnerLength; + return (unsigned char *) addressMapControlEntry.addressMapControlOwner; + + case ADDRESSMAPCONTROLSTATUS: + return (unsigned char *) &addressMapControlEntry.addressMapControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_addressMapEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static addressMapEntry_t addressMapEntry; + + /* call the user supplied function to retrieve values */ + + read_addressMapEntry(&addressMapEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ADDRESSMAPPHYSICALADDRESS: + *var_len = addressMapEntry._addressMapPhysicalAddressLength; + return (unsigned char *) addressMapEntry.addressMapPhysicalAddress; + + case ADDRESSMAPLASTCHANGE: + return (unsigned char *) &addressMapEntry.addressMapLastChange; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_hlHostControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static hlHostControlEntry_t hlHostControlEntry; + + /* call the user supplied function to retrieve values */ + + read_hlHostControlEntry(&hlHostControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case HLHOSTCONTROLDATASOURCE: + *var_len = hlHostControlEntry._hlHostControlDataSourceLength; + return (unsigned char *) hlHostControlEntry.hlHostControlDataSource; + + case HLHOSTCONTROLNLDROPPEDFRAMES: + return (unsigned char *) &hlHostControlEntry.hlHostControlNlDroppedFrames; + + case HLHOSTCONTROLNLINSERTS: + return (unsigned char *) &hlHostControlEntry.hlHostControlNlInserts; + + case HLHOSTCONTROLNLDELETES: + return (unsigned char *) &hlHostControlEntry.hlHostControlNlDeletes; + + case HLHOSTCONTROLNLMAXDESIREDENTRIES: + return (unsigned char *) &hlHostControlEntry.hlHostControlNlMaxDesiredEntries; + + case HLHOSTCONTROLALDROPPEDFRAMES: + return (unsigned char *) &hlHostControlEntry.hlHostControlAlDroppedFrames; + + case HLHOSTCONTROLALINSERTS: + return (unsigned char *) &hlHostControlEntry.hlHostControlAlInserts; + + case HLHOSTCONTROLALDELETES: + return (unsigned char *) &hlHostControlEntry.hlHostControlAlDeletes; + + case HLHOSTCONTROLALMAXDESIREDENTRIES: + return (unsigned char *) &hlHostControlEntry.hlHostControlAlMaxDesiredEntries; + + case HLHOSTCONTROLOWNER: + *var_len = hlHostControlEntry._hlHostControlOwnerLength; + return (unsigned char *) hlHostControlEntry.hlHostControlOwner; + + case HLHOSTCONTROLSTATUS: + return (unsigned char *) &hlHostControlEntry.hlHostControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlHostEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlHostEntry_t nlHostEntry; + + /* call the user supplied function to retrieve values */ + + read_nlHostEntry(&nlHostEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLHOSTINPKTS: + return (unsigned char *) &nlHostEntry.nlHostInPkts; + + case NLHOSTOUTPKTS: + return (unsigned char *) &nlHostEntry.nlHostOutPkts; + + case NLHOSTINOCTETS: + return (unsigned char *) &nlHostEntry.nlHostInOctets; + + case NLHOSTOUTOCTETS: + return (unsigned char *) &nlHostEntry.nlHostOutOctets; + + case NLHOSTOUTMACNONUNICASTPKTS: + return (unsigned char *) &nlHostEntry.nlHostOutMacNonUnicastPkts; + + case NLHOSTCREATETIME: + return (unsigned char *) &nlHostEntry.nlHostCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_hlMatrixControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static hlMatrixControlEntry_t hlMatrixControlEntry; + + /* call the user supplied function to retrieve values */ + + read_hlMatrixControlEntry(&hlMatrixControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case HLMATRIXCONTROLDATASOURCE: + *var_len = hlMatrixControlEntry._hlMatrixControlDataSourceLength; + return (unsigned char *) hlMatrixControlEntry.hlMatrixControlDataSource; + + case HLMATRIXCONTROLNLDROPPEDFRAMES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlNlDroppedFrames; + + case HLMATRIXCONTROLNLINSERTS: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlNlInserts; + + case HLMATRIXCONTROLNLDELETES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlNlDeletes; + + case HLMATRIXCONTROLNLMAXDESIREDENTRIES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlNlMaxDesiredEntries; + + case HLMATRIXCONTROLALDROPPEDFRAMES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlAlDroppedFrames; + + case HLMATRIXCONTROLALINSERTS: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlAlInserts; + + case HLMATRIXCONTROLALDELETES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlAlDeletes; + + case HLMATRIXCONTROLALMAXDESIREDENTRIES: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlAlMaxDesiredEntries; + + case HLMATRIXCONTROLOWNER: + *var_len = hlMatrixControlEntry._hlMatrixControlOwnerLength; + return (unsigned char *) hlMatrixControlEntry.hlMatrixControlOwner; + + case HLMATRIXCONTROLSTATUS: + return (unsigned char *) &hlMatrixControlEntry.hlMatrixControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlMatrixSDEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlMatrixSDEntry_t nlMatrixSDEntry; + + /* call the user supplied function to retrieve values */ + + read_nlMatrixSDEntry(&nlMatrixSDEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLMATRIXSDPKTS: + return (unsigned char *) &nlMatrixSDEntry.nlMatrixSDPkts; + + case NLMATRIXSDOCTETS: + return (unsigned char *) &nlMatrixSDEntry.nlMatrixSDOctets; + + case NLMATRIXSDCREATETIME: + return (unsigned char *) &nlMatrixSDEntry.nlMatrixSDCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlMatrixDSEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlMatrixDSEntry_t nlMatrixDSEntry; + + /* call the user supplied function to retrieve values */ + + read_nlMatrixDSEntry(&nlMatrixDSEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLMATRIXDSPKTS: + return (unsigned char *) &nlMatrixDSEntry.nlMatrixDSPkts; + + case NLMATRIXDSOCTETS: + return (unsigned char *) &nlMatrixDSEntry.nlMatrixDSOctets; + + case NLMATRIXDSCREATETIME: + return (unsigned char *) &nlMatrixDSEntry.nlMatrixDSCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlMatrixTopNControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlMatrixTopNControlEntry_t nlMatrixTopNControlEntry; + + /* call the user supplied function to retrieve values */ + + read_nlMatrixTopNControlEntry(&nlMatrixTopNControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLMATRIXTOPNCONTROLMATRIXINDEX: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlMatrixIndex; + + case NLMATRIXTOPNCONTROLRATEBASE: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlRateBase; + + case NLMATRIXTOPNCONTROLTIMEREMAINING: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlTimeRemaining; + + case NLMATRIXTOPNCONTROLGENERATEDREPORTS: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlGeneratedReports; + + case NLMATRIXTOPNCONTROLDURATION: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlDuration; + + case NLMATRIXTOPNCONTROLREQUESTEDSIZE: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlRequestedSize; + + case NLMATRIXTOPNCONTROLGRANTEDSIZE: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlGrantedSize; + + case NLMATRIXTOPNCONTROLSTARTTIME: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlStartTime; + + case NLMATRIXTOPNCONTROLOWNER: + *var_len = nlMatrixTopNControlEntry._nlMatrixTopNControlOwnerLength; + return (unsigned char *) nlMatrixTopNControlEntry.nlMatrixTopNControlOwner; + + case NLMATRIXTOPNCONTROLSTATUS: + return (unsigned char *) &nlMatrixTopNControlEntry.nlMatrixTopNControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_nlMatrixTopNEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static nlMatrixTopNEntry_t nlMatrixTopNEntry; + + /* call the user supplied function to retrieve values */ + + read_nlMatrixTopNEntry(&nlMatrixTopNEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NLMATRIXTOPNPROTOCOLDIRLOCALINDEX: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNProtocolDirLocalIndex; + + case NLMATRIXTOPNSOURCEADDRESS: + *var_len = nlMatrixTopNEntry._nlMatrixTopNSourceAddressLength; + return (unsigned char *) nlMatrixTopNEntry.nlMatrixTopNSourceAddress; + + case NLMATRIXTOPNDESTADDRESS: + *var_len = nlMatrixTopNEntry._nlMatrixTopNDestAddressLength; + return (unsigned char *) nlMatrixTopNEntry.nlMatrixTopNDestAddress; + + case NLMATRIXTOPNPKTRATE: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNPktRate; + + case NLMATRIXTOPNREVERSEPKTRATE: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNReversePktRate; + + case NLMATRIXTOPNOCTETRATE: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNOctetRate; + + case NLMATRIXTOPNREVERSEOCTETRATE: + return (unsigned char *) &nlMatrixTopNEntry.nlMatrixTopNReverseOctetRate; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alHostEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alHostEntry_t alHostEntry; + + /* call the user supplied function to retrieve values */ + + read_alHostEntry(&alHostEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALHOSTINPKTS: + return (unsigned char *) &alHostEntry.alHostInPkts; + + case ALHOSTOUTPKTS: + return (unsigned char *) &alHostEntry.alHostOutPkts; + + case ALHOSTINOCTETS: + return (unsigned char *) &alHostEntry.alHostInOctets; + + case ALHOSTOUTOCTETS: + return (unsigned char *) &alHostEntry.alHostOutOctets; + + case ALHOSTCREATETIME: + return (unsigned char *) &alHostEntry.alHostCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alMatrixSDEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alMatrixSDEntry_t alMatrixSDEntry; + + /* call the user supplied function to retrieve values */ + + read_alMatrixSDEntry(&alMatrixSDEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALMATRIXSDPKTS: + return (unsigned char *) &alMatrixSDEntry.alMatrixSDPkts; + + case ALMATRIXSDOCTETS: + return (unsigned char *) &alMatrixSDEntry.alMatrixSDOctets; + + case ALMATRIXSDCREATETIME: + return (unsigned char *) &alMatrixSDEntry.alMatrixSDCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alMatrixDSEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alMatrixDSEntry_t alMatrixDSEntry; + + /* call the user supplied function to retrieve values */ + + read_alMatrixDSEntry(&alMatrixDSEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALMATRIXDSPKTS: + return (unsigned char *) &alMatrixDSEntry.alMatrixDSPkts; + + case ALMATRIXDSOCTETS: + return (unsigned char *) &alMatrixDSEntry.alMatrixDSOctets; + + case ALMATRIXDSCREATETIME: + return (unsigned char *) &alMatrixDSEntry.alMatrixDSCreateTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alMatrixTopNControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alMatrixTopNControlEntry_t alMatrixTopNControlEntry; + + /* call the user supplied function to retrieve values */ + + read_alMatrixTopNControlEntry(&alMatrixTopNControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALMATRIXTOPNCONTROLMATRIXINDEX: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlMatrixIndex; + + case ALMATRIXTOPNCONTROLRATEBASE: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlRateBase; + + case ALMATRIXTOPNCONTROLTIMEREMAINING: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlTimeRemaining; + + case ALMATRIXTOPNCONTROLGENERATEDREPORTS: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlGeneratedReports; + + case ALMATRIXTOPNCONTROLDURATION: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlDuration; + + case ALMATRIXTOPNCONTROLREQUESTEDSIZE: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlRequestedSize; + + case ALMATRIXTOPNCONTROLGRANTEDSIZE: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlGrantedSize; + + case ALMATRIXTOPNCONTROLSTARTTIME: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlStartTime; + + case ALMATRIXTOPNCONTROLOWNER: + *var_len = alMatrixTopNControlEntry._alMatrixTopNControlOwnerLength; + return (unsigned char *) alMatrixTopNControlEntry.alMatrixTopNControlOwner; + + case ALMATRIXTOPNCONTROLSTATUS: + return (unsigned char *) &alMatrixTopNControlEntry.alMatrixTopNControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_alMatrixTopNEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static alMatrixTopNEntry_t alMatrixTopNEntry; + + /* call the user supplied function to retrieve values */ + + read_alMatrixTopNEntry(&alMatrixTopNEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case ALMATRIXTOPNPROTOCOLDIRLOCALINDEX: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNProtocolDirLocalIndex; + + case ALMATRIXTOPNSOURCEADDRESS: + *var_len = alMatrixTopNEntry._alMatrixTopNSourceAddressLength; + return (unsigned char *) alMatrixTopNEntry.alMatrixTopNSourceAddress; + + case ALMATRIXTOPNDESTADDRESS: + *var_len = alMatrixTopNEntry._alMatrixTopNDestAddressLength; + return (unsigned char *) alMatrixTopNEntry.alMatrixTopNDestAddress; + + case ALMATRIXTOPNAPPPROTOCOLDIRLOCALINDEX: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNAppProtocolDirLocalIndex; + + case ALMATRIXTOPNPKTRATE: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNPktRate; + + case ALMATRIXTOPNREVERSEPKTRATE: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNReversePktRate; + + case ALMATRIXTOPNOCTETRATE: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNOctetRate; + + case ALMATRIXTOPNREVERSEOCTETRATE: + return (unsigned char *) &alMatrixTopNEntry.alMatrixTopNReverseOctetRate; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_usrHistoryControlEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static usrHistoryControlEntry_t usrHistoryControlEntry; + + /* call the user supplied function to retrieve values */ + + read_usrHistoryControlEntry(&usrHistoryControlEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case USRHISTORYCONTROLOBJECTS: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlObjects; + + case USRHISTORYCONTROLBUCKETSREQUESTED: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlBucketsRequested; + + case USRHISTORYCONTROLBUCKETSGRANTED: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlBucketsGranted; + + case USRHISTORYCONTROLINTERVAL: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlInterval; + + case USRHISTORYCONTROLOWNER: + *var_len = usrHistoryControlEntry._usrHistoryControlOwnerLength; + return (unsigned char *) usrHistoryControlEntry.usrHistoryControlOwner; + + case USRHISTORYCONTROLSTATUS: + return (unsigned char *) &usrHistoryControlEntry.usrHistoryControlStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_usrHistoryObjectEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static usrHistoryObjectEntry_t usrHistoryObjectEntry; + + /* call the user supplied function to retrieve values */ + + read_usrHistoryObjectEntry(&usrHistoryObjectEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case USRHISTORYOBJECTVARIABLE: + *var_len = usrHistoryObjectEntry._usrHistoryObjectVariableLength; + return (unsigned char *) usrHistoryObjectEntry.usrHistoryObjectVariable; + + case USRHISTORYOBJECTSAMPLETYPE: + return (unsigned char *) &usrHistoryObjectEntry.usrHistoryObjectSampleType; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_usrHistoryEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static usrHistoryEntry_t usrHistoryEntry; + + /* call the user supplied function to retrieve values */ + + read_usrHistoryEntry(&usrHistoryEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case USRHISTORYINTERVALSTART: + return (unsigned char *) &usrHistoryEntry.usrHistoryIntervalStart; + + case USRHISTORYINTERVALEND: + return (unsigned char *) &usrHistoryEntry.usrHistoryIntervalEnd; + + case USRHISTORYABSVALUE: + return (unsigned char *) &usrHistoryEntry.usrHistoryAbsValue; + + case USRHISTORYVALSTATUS: + return (unsigned char *) &usrHistoryEntry.usrHistoryValStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_probeConfig_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static probeConfig_t probeConfig; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_probeConfig(&probeConfig); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case PROBECAPABILITIES: + *var_len = probeConfig._probeCapabilitiesLength; + return (unsigned char *) probeConfig.probeCapabilities; + + case PROBESOFTWAREREV: + *var_len = probeConfig._probeSoftwareRevLength; + return (unsigned char *) probeConfig.probeSoftwareRev; + + case PROBEHARDWAREREV: + *var_len = probeConfig._probeHardwareRevLength; + return (unsigned char *) probeConfig.probeHardwareRev; + + case PROBEDATETIME: + *var_len = probeConfig._probeDateTimeLength; + return (unsigned char *) probeConfig.probeDateTime; + + case PROBERESETCONTROL: + return (unsigned char *) &probeConfig.probeResetControl; + + case PROBEDOWNLOADFILE: + *var_len = probeConfig._probeDownloadFileLength; + return (unsigned char *) probeConfig.probeDownloadFile; + + case PROBEDOWNLOADTFTPSERVER: + *var_len = probeConfig._probeDownloadTFTPServerLength; + return (unsigned char *) probeConfig.probeDownloadTFTPServer; + + case PROBEDOWNLOADACTION: + return (unsigned char *) &probeConfig.probeDownloadAction; + + case PROBEDOWNLOADSTATUS: + return (unsigned char *) &probeConfig.probeDownloadStatus; + + case NETDEFAULTGATEWAY: + *var_len = probeConfig._netDefaultGatewayLength; + return (unsigned char *) probeConfig.netDefaultGateway; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_serialConfigEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static serialConfigEntry_t serialConfigEntry; + + /* call the user supplied function to retrieve values */ + + read_serialConfigEntry(&serialConfigEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SERIALMODE: + return (unsigned char *) &serialConfigEntry.serialMode; + + case SERIALPROTOCOL: + return (unsigned char *) &serialConfigEntry.serialProtocol; + + case SERIALTIMEOUT: + return (unsigned char *) &serialConfigEntry.serialTimeout; + + case SERIALMODEMINITSTRING: + *var_len = serialConfigEntry._serialModemInitStringLength; + return (unsigned char *) serialConfigEntry.serialModemInitString; + + case SERIALMODEMHANGUPSTRING: + *var_len = serialConfigEntry._serialModemHangUpStringLength; + return (unsigned char *) serialConfigEntry.serialModemHangUpString; + + case SERIALMODEMCONNECTRESP: + *var_len = serialConfigEntry._serialModemConnectRespLength; + return (unsigned char *) serialConfigEntry.serialModemConnectResp; + + case SERIALMODEMNOCONNECTRESP: + *var_len = serialConfigEntry._serialModemNoConnectRespLength; + return (unsigned char *) serialConfigEntry.serialModemNoConnectResp; + + case SERIALDIALOUTTIMEOUT: + return (unsigned char *) &serialConfigEntry.serialDialoutTimeout; + + case SERIALSTATUS: + return (unsigned char *) &serialConfigEntry.serialStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_netConfigEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static netConfigEntry_t netConfigEntry; + + /* call the user supplied function to retrieve values */ + + read_netConfigEntry(&netConfigEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case NETCONFIGIPADDRESS: + *var_len = netConfigEntry._netConfigIPAddressLength; + return (unsigned char *) netConfigEntry.netConfigIPAddress; + + case NETCONFIGSUBNETMASK: + *var_len = netConfigEntry._netConfigSubnetMaskLength; + return (unsigned char *) netConfigEntry.netConfigSubnetMask; + + case NETCONFIGSTATUS: + return (unsigned char *) &netConfigEntry.netConfigStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_trapDestEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static trapDestEntry_t trapDestEntry; + + /* call the user supplied function to retrieve values */ + + read_trapDestEntry(&trapDestEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case TRAPDESTCOMMUNITY: + *var_len = trapDestEntry._trapDestCommunityLength; + return (unsigned char *) trapDestEntry.trapDestCommunity; + + case TRAPDESTPROTOCOL: + return (unsigned char *) &trapDestEntry.trapDestProtocol; + + case TRAPDESTADDRESS: + *var_len = trapDestEntry._trapDestAddressLength; + return (unsigned char *) trapDestEntry.trapDestAddress; + + case TRAPDESTOWNER: + *var_len = trapDestEntry._trapDestOwnerLength; + return (unsigned char *) trapDestEntry.trapDestOwner; + + case TRAPDESTSTATUS: + return (unsigned char *) &trapDestEntry.trapDestStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_serialConnectionEntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static serialConnectionEntry_t serialConnectionEntry; + + /* call the user supplied function to retrieve values */ + + read_serialConnectionEntry(&serialConnectionEntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SERIALCONNECTDESTIPADDRESS: + *var_len = serialConnectionEntry._serialConnectDestIpAddressLength; + return (unsigned char *) serialConnectionEntry.serialConnectDestIpAddress; + + case SERIALCONNECTTYPE: + return (unsigned char *) &serialConnectionEntry.serialConnectType; + + case SERIALCONNECTDIALSTRING: + *var_len = serialConnectionEntry._serialConnectDialStringLength; + return (unsigned char *) serialConnectionEntry.serialConnectDialString; + + case SERIALCONNECTSWITCHCONNECTSEQ: + *var_len = serialConnectionEntry._serialConnectSwitchConnectSeqLength; + return (unsigned char *) serialConnectionEntry.serialConnectSwitchConnectSeq; + + case SERIALCONNECTSWITCHDISCONNECTSEQ: + *var_len = serialConnectionEntry._serialConnectSwitchDisconnectSeqLength; + return (unsigned char *) serialConnectionEntry.serialConnectSwitchDisconnectSeq; + + case SERIALCONNECTSWITCHRESETSEQ: + *var_len = serialConnectionEntry._serialConnectSwitchResetSeqLength; + return (unsigned char *) serialConnectionEntry.serialConnectSwitchResetSeq; + + case SERIALCONNECTOWNER: + *var_len = serialConnectionEntry._serialConnectOwnerLength; + return (unsigned char *) serialConnectionEntry.serialConnectOwner; + + case SERIALCONNECTSTATUS: + return (unsigned char *) &serialConnectionEntry.serialConnectStatus; + + default: + ERROR_MSG(""); + } + + return NULL; +} + + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_filterProtocolDirDataLocalIndex_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_filterProtocolDirLocalIndex_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirDescr_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirAddressMapConfig_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirHostConfig_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirMatrixConfig_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDirStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDistControlDataSource_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDistControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_protocolDistControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_addressMapMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_addressMapControlDataSource_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_addressMapControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_addressMapControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlDataSource_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlNlMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlAlMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlHostControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlDataSource_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlNlMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlAlMaxDesiredEntries_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_hlMatrixControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlMatrixIndex_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlRateBase_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlTimeRemaining_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlRequestedSize_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_nlMatrixTopNControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlMatrixIndex_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlRateBase_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlTimeRemaining_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlRequestedSize_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_alMatrixTopNControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlObjects_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlBucketsRequested_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlInterval_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryControlStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryObjectVariable_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_usrHistoryObjectSampleType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeDateTime_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeResetControl_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeDownloadFile_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeDownloadTFTPServer_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_probeDownloadAction_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialMode_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialProtocol_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialTimeout_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialModemInitString_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialModemHangUpString_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialModemConnectResp_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialModemNoConnectResp_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialDialoutTimeout_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_netConfigIPAddress_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_netConfigSubnetMask_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_netConfigStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_netDefaultGateway_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestCommunity_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestProtocol_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestAddress_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_trapDestStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectDestIpAddress_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectType_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectDialString_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectSwitchConnectSeq_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectSwitchDisconnectSeq_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectSwitchResetSeq_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectOwner_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_serialConnectStatus_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + + diff --git a/test/dumps/netsnmp/rmon2-mib-agt.c b/test/dumps/netsnmp/rmon2-mib-agt.c new file mode 100644 index 0000000..f995097 --- /dev/null +++ b/test/dumps/netsnmp/rmon2-mib-agt.c @@ -0,0 +1,38 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the RMON2-MIB module. + * + * $Id: rmon2-mib-agt.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "rmon2-mib.h" + +#include +#include +#include +#include +#include + +static oid rmon2_mib_caps[] = {0,0}; + +void init_rmon2_mib(void) +{ +} + +void deinit_rmon2_mib() +{ + unregister_sysORTable(rmon2_mib_caps, sizeof(rmon2_mib_caps)); +} + +int term_rmon2_mib() +{ + deinit_rmon2_mib(); + return 0; +} + diff --git a/test/dumps/netsnmp/rmon2-mib-mgr-stub.c b/test/dumps/netsnmp/rmon2-mib-mgr-stub.c new file mode 100644 index 0000000..0a8dd7c --- /dev/null +++ b/test/dumps/netsnmp/rmon2-mib-mgr-stub.c @@ -0,0 +1,2785 @@ +/* + * This C file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP library. + * + * This C file is derived from the RMON2-MIB module. + * + * $Id: rmon2-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#include + +#include +#include +#include +#include + +#include "rmon2-mib.h" + +static oid etherStatsDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 1, 4, 1, 1}; +static oid etherStatsCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 1, 4, 1, 2}; +static oid tokenRingMLStatsDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 1, 5, 1, 1}; +static oid tokenRingMLStatsCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 1, 5, 1, 2}; +static oid tokenRingPStatsDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 1, 6, 1, 1}; +static oid tokenRingPStatsCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 1, 6, 1, 2}; +static oid historyControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 2, 5, 1, 1}; +static oid hostControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 4, 4, 1, 1}; +static oid hostControlCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 4, 4, 1, 2}; +static oid matrixControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 6, 4, 1, 1}; +static oid matrixControlCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 6, 4, 1, 2}; +static oid channelDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 7, 3, 1, 1}; +static oid channelCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 7, 3, 1, 2}; +static oid filterProtocolDirDataLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 7, 4, 1, 1}; +static oid filterProtocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 7, 4, 1, 2}; +static oid ringStationControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 10, 7, 1, 1}; +static oid ringStationControlCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 10, 7, 1, 2}; +static oid sourceRoutingStatsDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 10, 8, 1, 1}; +static oid sourceRoutingStatsCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 10, 8, 1, 2}; +static oid protocolDirLastChange[] = {1, 3, 6, 1, 2, 1, 16, 11, 1}; +static oid protocolDirID[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 1}; +static oid protocolDirParameters[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 2}; +static oid protocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 3}; +static oid protocolDirDescr[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 4}; +static oid protocolDirType[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 5}; +static oid protocolDirAddressMapConfig[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 6}; +static oid protocolDirHostConfig[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 7}; +static oid protocolDirMatrixConfig[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 8}; +static oid protocolDirOwner[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 9}; +static oid protocolDirStatus[] = {1, 3, 6, 1, 2, 1, 16, 11, 2, 1, 10}; +static oid protocolDistControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 1}; +static oid protocolDistControlDataSource[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 2}; +static oid protocolDistControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 3}; +static oid protocolDistControlCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 4}; +static oid protocolDistControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 5}; +static oid protocolDistControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 12, 1, 1, 6}; +static oid protocolDistStatsPkts[] = {1, 3, 6, 1, 2, 1, 16, 12, 2, 1, 1}; +static oid protocolDistStatsOctets[] = {1, 3, 6, 1, 2, 1, 16, 12, 2, 1, 2}; +static oid addressMapInserts[] = {1, 3, 6, 1, 2, 1, 16, 13, 1}; +static oid addressMapDeletes[] = {1, 3, 6, 1, 2, 1, 16, 13, 2}; +static oid addressMapMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 13, 3}; +static oid addressMapControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 1}; +static oid addressMapControlDataSource[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 2}; +static oid addressMapControlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 3}; +static oid addressMapControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 4}; +static oid addressMapControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 13, 4, 1, 5}; +static oid addressMapTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 1}; +static oid addressMapNetworkAddress[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 2}; +static oid addressMapSource[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 3}; +static oid addressMapPhysicalAddress[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 4}; +static oid addressMapLastChange[] = {1, 3, 6, 1, 2, 1, 16, 13, 5, 1, 5}; +static oid hlHostControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 1}; +static oid hlHostControlDataSource[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 2}; +static oid hlHostControlNlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 3}; +static oid hlHostControlNlInserts[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 4}; +static oid hlHostControlNlDeletes[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 5}; +static oid hlHostControlNlMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 6}; +static oid hlHostControlAlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 7}; +static oid hlHostControlAlInserts[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 8}; +static oid hlHostControlAlDeletes[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 9}; +static oid hlHostControlAlMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 10}; +static oid hlHostControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 11}; +static oid hlHostControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 14, 1, 1, 12}; +static oid nlHostTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 1}; +static oid nlHostAddress[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 2}; +static oid nlHostInPkts[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 3}; +static oid nlHostOutPkts[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 4}; +static oid nlHostInOctets[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 5}; +static oid nlHostOutOctets[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 6}; +static oid nlHostOutMacNonUnicastPkts[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 7}; +static oid nlHostCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 14, 2, 1, 8}; +static oid hlMatrixControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 1}; +static oid hlMatrixControlDataSource[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 2}; +static oid hlMatrixControlNlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 3}; +static oid hlMatrixControlNlInserts[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 4}; +static oid hlMatrixControlNlDeletes[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 5}; +static oid hlMatrixControlNlMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 6}; +static oid hlMatrixControlAlDroppedFrames[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 7}; +static oid hlMatrixControlAlInserts[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 8}; +static oid hlMatrixControlAlDeletes[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 9}; +static oid hlMatrixControlAlMaxDesiredEntries[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 10}; +static oid hlMatrixControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 11}; +static oid hlMatrixControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 15, 1, 1, 12}; +static oid nlMatrixSDTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 1}; +static oid nlMatrixSDSourceAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 2}; +static oid nlMatrixSDDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 3}; +static oid nlMatrixSDPkts[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 4}; +static oid nlMatrixSDOctets[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 5}; +static oid nlMatrixSDCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 15, 2, 1, 6}; +static oid nlMatrixDSTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 1}; +static oid nlMatrixDSSourceAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 2}; +static oid nlMatrixDSDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 3}; +static oid nlMatrixDSPkts[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 4}; +static oid nlMatrixDSOctets[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 5}; +static oid nlMatrixDSCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 15, 3, 1, 6}; +static oid nlMatrixTopNControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 1}; +static oid nlMatrixTopNControlMatrixIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 2}; +static oid nlMatrixTopNControlRateBase[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 3}; +static oid nlMatrixTopNControlTimeRemaining[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 4}; +static oid nlMatrixTopNControlGeneratedReports[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 5}; +static oid nlMatrixTopNControlDuration[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 6}; +static oid nlMatrixTopNControlRequestedSize[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 7}; +static oid nlMatrixTopNControlGrantedSize[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 8}; +static oid nlMatrixTopNControlStartTime[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 9}; +static oid nlMatrixTopNControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 10}; +static oid nlMatrixTopNControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 15, 4, 1, 11}; +static oid nlMatrixTopNIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 1}; +static oid nlMatrixTopNProtocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 2}; +static oid nlMatrixTopNSourceAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 3}; +static oid nlMatrixTopNDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 4}; +static oid nlMatrixTopNPktRate[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 5}; +static oid nlMatrixTopNReversePktRate[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 6}; +static oid nlMatrixTopNOctetRate[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 7}; +static oid nlMatrixTopNReverseOctetRate[] = {1, 3, 6, 1, 2, 1, 16, 15, 5, 1, 8}; +static oid alHostTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 1}; +static oid alHostInPkts[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 2}; +static oid alHostOutPkts[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 3}; +static oid alHostInOctets[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 4}; +static oid alHostOutOctets[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 5}; +static oid alHostCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 16, 1, 1, 6}; +static oid alMatrixSDTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1, 1}; +static oid alMatrixSDPkts[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1, 2}; +static oid alMatrixSDOctets[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1, 3}; +static oid alMatrixSDCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 17, 1, 1, 4}; +static oid alMatrixDSTimeMark[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1, 1}; +static oid alMatrixDSPkts[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1, 2}; +static oid alMatrixDSOctets[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1, 3}; +static oid alMatrixDSCreateTime[] = {1, 3, 6, 1, 2, 1, 16, 17, 2, 1, 4}; +static oid alMatrixTopNControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 1}; +static oid alMatrixTopNControlMatrixIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 2}; +static oid alMatrixTopNControlRateBase[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 3}; +static oid alMatrixTopNControlTimeRemaining[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 4}; +static oid alMatrixTopNControlGeneratedReports[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 5}; +static oid alMatrixTopNControlDuration[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 6}; +static oid alMatrixTopNControlRequestedSize[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 7}; +static oid alMatrixTopNControlGrantedSize[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 8}; +static oid alMatrixTopNControlStartTime[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 9}; +static oid alMatrixTopNControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 10}; +static oid alMatrixTopNControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 17, 3, 1, 11}; +static oid alMatrixTopNIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 1}; +static oid alMatrixTopNProtocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 2}; +static oid alMatrixTopNSourceAddress[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 3}; +static oid alMatrixTopNDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 4}; +static oid alMatrixTopNAppProtocolDirLocalIndex[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 5}; +static oid alMatrixTopNPktRate[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 6}; +static oid alMatrixTopNReversePktRate[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 7}; +static oid alMatrixTopNOctetRate[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 8}; +static oid alMatrixTopNReverseOctetRate[] = {1, 3, 6, 1, 2, 1, 16, 17, 4, 1, 9}; +static oid usrHistoryControlIndex[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 1}; +static oid usrHistoryControlObjects[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 2}; +static oid usrHistoryControlBucketsRequested[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 3}; +static oid usrHistoryControlBucketsGranted[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 4}; +static oid usrHistoryControlInterval[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 5}; +static oid usrHistoryControlOwner[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 6}; +static oid usrHistoryControlStatus[] = {1, 3, 6, 1, 2, 1, 16, 18, 1, 1, 7}; +static oid usrHistoryObjectIndex[] = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1, 1}; +static oid usrHistoryObjectVariable[] = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1, 2}; +static oid usrHistoryObjectSampleType[] = {1, 3, 6, 1, 2, 1, 16, 18, 2, 1, 3}; +static oid usrHistorySampleIndex[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 1}; +static oid usrHistoryIntervalStart[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 2}; +static oid usrHistoryIntervalEnd[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 3}; +static oid usrHistoryAbsValue[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 4}; +static oid usrHistoryValStatus[] = {1, 3, 6, 1, 2, 1, 16, 18, 3, 1, 5}; +static oid probeCapabilities[] = {1, 3, 6, 1, 2, 1, 16, 19, 1}; +static oid probeSoftwareRev[] = {1, 3, 6, 1, 2, 1, 16, 19, 2}; +static oid probeHardwareRev[] = {1, 3, 6, 1, 2, 1, 16, 19, 3}; +static oid probeDateTime[] = {1, 3, 6, 1, 2, 1, 16, 19, 4}; +static oid probeResetControl[] = {1, 3, 6, 1, 2, 1, 16, 19, 5}; +static oid probeDownloadFile[] = {1, 3, 6, 1, 2, 1, 16, 19, 6}; +static oid probeDownloadTFTPServer[] = {1, 3, 6, 1, 2, 1, 16, 19, 7}; +static oid probeDownloadAction[] = {1, 3, 6, 1, 2, 1, 16, 19, 8}; +static oid probeDownloadStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 9}; +static oid serialMode[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 1}; +static oid serialProtocol[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 2}; +static oid serialTimeout[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 3}; +static oid serialModemInitString[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 4}; +static oid serialModemHangUpString[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 5}; +static oid serialModemConnectResp[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 6}; +static oid serialModemNoConnectResp[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 7}; +static oid serialDialoutTimeout[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 8}; +static oid serialStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 10, 1, 9}; +static oid netConfigIPAddress[] = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1, 1}; +static oid netConfigSubnetMask[] = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1, 2}; +static oid netConfigStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 11, 1, 3}; +static oid netDefaultGateway[] = {1, 3, 6, 1, 2, 1, 16, 19, 12}; +static oid trapDestIndex[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 1}; +static oid trapDestCommunity[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 2}; +static oid trapDestProtocol[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 3}; +static oid trapDestAddress[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 4}; +static oid trapDestOwner[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 5}; +static oid trapDestStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 13, 1, 6}; +static oid serialConnectIndex[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 1}; +static oid serialConnectDestIpAddress[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 2}; +static oid serialConnectType[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 3}; +static oid serialConnectDialString[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 4}; +static oid serialConnectSwitchConnectSeq[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 5}; +static oid serialConnectSwitchDisconnectSeq[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 6}; +static oid serialConnectSwitchResetSeq[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 7}; +static oid serialConnectOwner[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 8}; +static oid serialConnectStatus[] = {1, 3, 6, 1, 2, 1, 16, 19, 14, 1, 9}; + +int rmon2_mib_mgr_get_etherStats2Entry(struct snmp_session *s, etherStats2Entry_t **etherStats2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, etherStatsDroppedFrames, sizeof(etherStatsDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, etherStatsCreateTime, sizeof(etherStatsCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *etherStats2Entry = (etherStats2Entry_t *) malloc(sizeof(etherStats2Entry_t)); + if (! *etherStats2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(etherStatsDroppedFrames)/sizeof(oid) + && memcmp(vars->name, etherStatsDroppedFrames, sizeof(etherStatsDroppedFrames)) == 0) { + (*etherStats2Entry)->__etherStatsDroppedFrames = *vars->val.integer; + (*etherStats2Entry)->etherStatsDroppedFrames = &((*etherStats2Entry)->__etherStatsDroppedFrames); + } + if (vars->name_length > sizeof(etherStatsCreateTime)/sizeof(oid) + && memcmp(vars->name, etherStatsCreateTime, sizeof(etherStatsCreateTime)) == 0) { + (*etherStats2Entry)->__etherStatsCreateTime = *vars->val.integer; + (*etherStats2Entry)->etherStatsCreateTime = &((*etherStats2Entry)->__etherStatsCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_tokenRingMLStats2Entry(struct snmp_session *s, tokenRingMLStats2Entry_t **tokenRingMLStats2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, tokenRingMLStatsDroppedFrames, sizeof(tokenRingMLStatsDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, tokenRingMLStatsCreateTime, sizeof(tokenRingMLStatsCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *tokenRingMLStats2Entry = (tokenRingMLStats2Entry_t *) malloc(sizeof(tokenRingMLStats2Entry_t)); + if (! *tokenRingMLStats2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(tokenRingMLStatsDroppedFrames)/sizeof(oid) + && memcmp(vars->name, tokenRingMLStatsDroppedFrames, sizeof(tokenRingMLStatsDroppedFrames)) == 0) { + (*tokenRingMLStats2Entry)->__tokenRingMLStatsDroppedFrames = *vars->val.integer; + (*tokenRingMLStats2Entry)->tokenRingMLStatsDroppedFrames = &((*tokenRingMLStats2Entry)->__tokenRingMLStatsDroppedFrames); + } + if (vars->name_length > sizeof(tokenRingMLStatsCreateTime)/sizeof(oid) + && memcmp(vars->name, tokenRingMLStatsCreateTime, sizeof(tokenRingMLStatsCreateTime)) == 0) { + (*tokenRingMLStats2Entry)->__tokenRingMLStatsCreateTime = *vars->val.integer; + (*tokenRingMLStats2Entry)->tokenRingMLStatsCreateTime = &((*tokenRingMLStats2Entry)->__tokenRingMLStatsCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_tokenRingPStats2Entry(struct snmp_session *s, tokenRingPStats2Entry_t **tokenRingPStats2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, tokenRingPStatsDroppedFrames, sizeof(tokenRingPStatsDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, tokenRingPStatsCreateTime, sizeof(tokenRingPStatsCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *tokenRingPStats2Entry = (tokenRingPStats2Entry_t *) malloc(sizeof(tokenRingPStats2Entry_t)); + if (! *tokenRingPStats2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(tokenRingPStatsDroppedFrames)/sizeof(oid) + && memcmp(vars->name, tokenRingPStatsDroppedFrames, sizeof(tokenRingPStatsDroppedFrames)) == 0) { + (*tokenRingPStats2Entry)->__tokenRingPStatsDroppedFrames = *vars->val.integer; + (*tokenRingPStats2Entry)->tokenRingPStatsDroppedFrames = &((*tokenRingPStats2Entry)->__tokenRingPStatsDroppedFrames); + } + if (vars->name_length > sizeof(tokenRingPStatsCreateTime)/sizeof(oid) + && memcmp(vars->name, tokenRingPStatsCreateTime, sizeof(tokenRingPStatsCreateTime)) == 0) { + (*tokenRingPStats2Entry)->__tokenRingPStatsCreateTime = *vars->val.integer; + (*tokenRingPStats2Entry)->tokenRingPStatsCreateTime = &((*tokenRingPStats2Entry)->__tokenRingPStatsCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_historyControl2Entry(struct snmp_session *s, historyControl2Entry_t **historyControl2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, historyControlDroppedFrames, sizeof(historyControlDroppedFrames)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *historyControl2Entry = (historyControl2Entry_t *) malloc(sizeof(historyControl2Entry_t)); + if (! *historyControl2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(historyControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, historyControlDroppedFrames, sizeof(historyControlDroppedFrames)) == 0) { + (*historyControl2Entry)->__historyControlDroppedFrames = *vars->val.integer; + (*historyControl2Entry)->historyControlDroppedFrames = &((*historyControl2Entry)->__historyControlDroppedFrames); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_hostControl2Entry(struct snmp_session *s, hostControl2Entry_t **hostControl2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, hostControlDroppedFrames, sizeof(hostControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hostControlCreateTime, sizeof(hostControlCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *hostControl2Entry = (hostControl2Entry_t *) malloc(sizeof(hostControl2Entry_t)); + if (! *hostControl2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(hostControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hostControlDroppedFrames, sizeof(hostControlDroppedFrames)) == 0) { + (*hostControl2Entry)->__hostControlDroppedFrames = *vars->val.integer; + (*hostControl2Entry)->hostControlDroppedFrames = &((*hostControl2Entry)->__hostControlDroppedFrames); + } + if (vars->name_length > sizeof(hostControlCreateTime)/sizeof(oid) + && memcmp(vars->name, hostControlCreateTime, sizeof(hostControlCreateTime)) == 0) { + (*hostControl2Entry)->__hostControlCreateTime = *vars->val.integer; + (*hostControl2Entry)->hostControlCreateTime = &((*hostControl2Entry)->__hostControlCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_matrixControl2Entry(struct snmp_session *s, matrixControl2Entry_t **matrixControl2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, matrixControlDroppedFrames, sizeof(matrixControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, matrixControlCreateTime, sizeof(matrixControlCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *matrixControl2Entry = (matrixControl2Entry_t *) malloc(sizeof(matrixControl2Entry_t)); + if (! *matrixControl2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(matrixControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, matrixControlDroppedFrames, sizeof(matrixControlDroppedFrames)) == 0) { + (*matrixControl2Entry)->__matrixControlDroppedFrames = *vars->val.integer; + (*matrixControl2Entry)->matrixControlDroppedFrames = &((*matrixControl2Entry)->__matrixControlDroppedFrames); + } + if (vars->name_length > sizeof(matrixControlCreateTime)/sizeof(oid) + && memcmp(vars->name, matrixControlCreateTime, sizeof(matrixControlCreateTime)) == 0) { + (*matrixControl2Entry)->__matrixControlCreateTime = *vars->val.integer; + (*matrixControl2Entry)->matrixControlCreateTime = &((*matrixControl2Entry)->__matrixControlCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_channel2Entry(struct snmp_session *s, channel2Entry_t **channel2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, channelDroppedFrames, sizeof(channelDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, channelCreateTime, sizeof(channelCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *channel2Entry = (channel2Entry_t *) malloc(sizeof(channel2Entry_t)); + if (! *channel2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(channelDroppedFrames)/sizeof(oid) + && memcmp(vars->name, channelDroppedFrames, sizeof(channelDroppedFrames)) == 0) { + (*channel2Entry)->__channelDroppedFrames = *vars->val.integer; + (*channel2Entry)->channelDroppedFrames = &((*channel2Entry)->__channelDroppedFrames); + } + if (vars->name_length > sizeof(channelCreateTime)/sizeof(oid) + && memcmp(vars->name, channelCreateTime, sizeof(channelCreateTime)) == 0) { + (*channel2Entry)->__channelCreateTime = *vars->val.integer; + (*channel2Entry)->channelCreateTime = &((*channel2Entry)->__channelCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_filter2Entry(struct snmp_session *s, filter2Entry_t **filter2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, filterProtocolDirDataLocalIndex, sizeof(filterProtocolDirDataLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, filterProtocolDirLocalIndex, sizeof(filterProtocolDirLocalIndex)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *filter2Entry = (filter2Entry_t *) malloc(sizeof(filter2Entry_t)); + if (! *filter2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(filterProtocolDirDataLocalIndex)/sizeof(oid) + && memcmp(vars->name, filterProtocolDirDataLocalIndex, sizeof(filterProtocolDirDataLocalIndex)) == 0) { + (*filter2Entry)->__filterProtocolDirDataLocalIndex = *vars->val.integer; + (*filter2Entry)->filterProtocolDirDataLocalIndex = &((*filter2Entry)->__filterProtocolDirDataLocalIndex); + } + if (vars->name_length > sizeof(filterProtocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, filterProtocolDirLocalIndex, sizeof(filterProtocolDirLocalIndex)) == 0) { + (*filter2Entry)->__filterProtocolDirLocalIndex = *vars->val.integer; + (*filter2Entry)->filterProtocolDirLocalIndex = &((*filter2Entry)->__filterProtocolDirLocalIndex); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_ringStationControl2Entry(struct snmp_session *s, ringStationControl2Entry_t **ringStationControl2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, ringStationControlDroppedFrames, sizeof(ringStationControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, ringStationControlCreateTime, sizeof(ringStationControlCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *ringStationControl2Entry = (ringStationControl2Entry_t *) malloc(sizeof(ringStationControl2Entry_t)); + if (! *ringStationControl2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(ringStationControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, ringStationControlDroppedFrames, sizeof(ringStationControlDroppedFrames)) == 0) { + (*ringStationControl2Entry)->__ringStationControlDroppedFrames = *vars->val.integer; + (*ringStationControl2Entry)->ringStationControlDroppedFrames = &((*ringStationControl2Entry)->__ringStationControlDroppedFrames); + } + if (vars->name_length > sizeof(ringStationControlCreateTime)/sizeof(oid) + && memcmp(vars->name, ringStationControlCreateTime, sizeof(ringStationControlCreateTime)) == 0) { + (*ringStationControl2Entry)->__ringStationControlCreateTime = *vars->val.integer; + (*ringStationControl2Entry)->ringStationControlCreateTime = &((*ringStationControl2Entry)->__ringStationControlCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_sourceRoutingStats2Entry(struct snmp_session *s, sourceRoutingStats2Entry_t **sourceRoutingStats2Entry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, sourceRoutingStatsDroppedFrames, sizeof(sourceRoutingStatsDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, sourceRoutingStatsCreateTime, sizeof(sourceRoutingStatsCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *sourceRoutingStats2Entry = (sourceRoutingStats2Entry_t *) malloc(sizeof(sourceRoutingStats2Entry_t)); + if (! *sourceRoutingStats2Entry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(sourceRoutingStatsDroppedFrames)/sizeof(oid) + && memcmp(vars->name, sourceRoutingStatsDroppedFrames, sizeof(sourceRoutingStatsDroppedFrames)) == 0) { + (*sourceRoutingStats2Entry)->__sourceRoutingStatsDroppedFrames = *vars->val.integer; + (*sourceRoutingStats2Entry)->sourceRoutingStatsDroppedFrames = &((*sourceRoutingStats2Entry)->__sourceRoutingStatsDroppedFrames); + } + if (vars->name_length > sizeof(sourceRoutingStatsCreateTime)/sizeof(oid) + && memcmp(vars->name, sourceRoutingStatsCreateTime, sizeof(sourceRoutingStatsCreateTime)) == 0) { + (*sourceRoutingStats2Entry)->__sourceRoutingStatsCreateTime = *vars->val.integer; + (*sourceRoutingStats2Entry)->sourceRoutingStatsCreateTime = &((*sourceRoutingStats2Entry)->__sourceRoutingStatsCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_protocolDir(struct snmp_session *s, protocolDir_t **protocolDir) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, protocolDirLastChange, sizeof(protocolDirLastChange)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *protocolDir = (protocolDir_t *) malloc(sizeof(protocolDir_t)); + if (! *protocolDir) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(protocolDirLastChange)/sizeof(oid) + && memcmp(vars->name, protocolDirLastChange, sizeof(protocolDirLastChange)) == 0) { + (*protocolDir)->__protocolDirLastChange = *vars->val.integer; + (*protocolDir)->protocolDirLastChange = &((*protocolDir)->__protocolDirLastChange); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_protocolDirEntry(struct snmp_session *s, protocolDirEntry_t **protocolDirEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, protocolDirLocalIndex, sizeof(protocolDirLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, protocolDirDescr, sizeof(protocolDirDescr)/sizeof(oid)); + snmp_add_null_var(request, protocolDirType, sizeof(protocolDirType)/sizeof(oid)); + snmp_add_null_var(request, protocolDirAddressMapConfig, sizeof(protocolDirAddressMapConfig)/sizeof(oid)); + snmp_add_null_var(request, protocolDirHostConfig, sizeof(protocolDirHostConfig)/sizeof(oid)); + snmp_add_null_var(request, protocolDirMatrixConfig, sizeof(protocolDirMatrixConfig)/sizeof(oid)); + snmp_add_null_var(request, protocolDirOwner, sizeof(protocolDirOwner)/sizeof(oid)); + snmp_add_null_var(request, protocolDirStatus, sizeof(protocolDirStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *protocolDirEntry = (protocolDirEntry_t *) malloc(sizeof(protocolDirEntry_t)); + if (! *protocolDirEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(protocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, protocolDirLocalIndex, sizeof(protocolDirLocalIndex)) == 0) { + (*protocolDirEntry)->__protocolDirLocalIndex = *vars->val.integer; + (*protocolDirEntry)->protocolDirLocalIndex = &((*protocolDirEntry)->__protocolDirLocalIndex); + } + if (vars->name_length > sizeof(protocolDirDescr)/sizeof(oid) + && memcmp(vars->name, protocolDirDescr, sizeof(protocolDirDescr)) == 0) { + memcpy((*protocolDirEntry)->__protocolDirDescr, vars->val.string, vars->val_len); + (*protocolDirEntry)->_protocolDirDescrLength = vars->val_len; + (*protocolDirEntry)->protocolDirDescr = (*protocolDirEntry)->__protocolDirDescr; + } + if (vars->name_length > sizeof(protocolDirType)/sizeof(oid) + && memcmp(vars->name, protocolDirType, sizeof(protocolDirType)) == 0) { + memcpy((*protocolDirEntry)->__protocolDirType, vars->val.string, vars->val_len); + (*protocolDirEntry)->_protocolDirTypeLength = vars->val_len; + (*protocolDirEntry)->protocolDirType = (*protocolDirEntry)->__protocolDirType; + } + if (vars->name_length > sizeof(protocolDirAddressMapConfig)/sizeof(oid) + && memcmp(vars->name, protocolDirAddressMapConfig, sizeof(protocolDirAddressMapConfig)) == 0) { + (*protocolDirEntry)->__protocolDirAddressMapConfig = *vars->val.integer; + (*protocolDirEntry)->protocolDirAddressMapConfig = &((*protocolDirEntry)->__protocolDirAddressMapConfig); + } + if (vars->name_length > sizeof(protocolDirHostConfig)/sizeof(oid) + && memcmp(vars->name, protocolDirHostConfig, sizeof(protocolDirHostConfig)) == 0) { + (*protocolDirEntry)->__protocolDirHostConfig = *vars->val.integer; + (*protocolDirEntry)->protocolDirHostConfig = &((*protocolDirEntry)->__protocolDirHostConfig); + } + if (vars->name_length > sizeof(protocolDirMatrixConfig)/sizeof(oid) + && memcmp(vars->name, protocolDirMatrixConfig, sizeof(protocolDirMatrixConfig)) == 0) { + (*protocolDirEntry)->__protocolDirMatrixConfig = *vars->val.integer; + (*protocolDirEntry)->protocolDirMatrixConfig = &((*protocolDirEntry)->__protocolDirMatrixConfig); + } + if (vars->name_length > sizeof(protocolDirOwner)/sizeof(oid) + && memcmp(vars->name, protocolDirOwner, sizeof(protocolDirOwner)) == 0) { + memcpy((*protocolDirEntry)->__protocolDirOwner, vars->val.string, vars->val_len); + (*protocolDirEntry)->_protocolDirOwnerLength = vars->val_len; + (*protocolDirEntry)->protocolDirOwner = (*protocolDirEntry)->__protocolDirOwner; + } + if (vars->name_length > sizeof(protocolDirStatus)/sizeof(oid) + && memcmp(vars->name, protocolDirStatus, sizeof(protocolDirStatus)) == 0) { + (*protocolDirEntry)->__protocolDirStatus = *vars->val.integer; + (*protocolDirEntry)->protocolDirStatus = &((*protocolDirEntry)->__protocolDirStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_protocolDistControlEntry(struct snmp_session *s, protocolDistControlEntry_t **protocolDistControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, protocolDistControlDataSource, sizeof(protocolDistControlDataSource)/sizeof(oid)); + snmp_add_null_var(request, protocolDistControlDroppedFrames, sizeof(protocolDistControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, protocolDistControlCreateTime, sizeof(protocolDistControlCreateTime)/sizeof(oid)); + snmp_add_null_var(request, protocolDistControlOwner, sizeof(protocolDistControlOwner)/sizeof(oid)); + snmp_add_null_var(request, protocolDistControlStatus, sizeof(protocolDistControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *protocolDistControlEntry = (protocolDistControlEntry_t *) malloc(sizeof(protocolDistControlEntry_t)); + if (! *protocolDistControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(protocolDistControlDataSource)/sizeof(oid) + && memcmp(vars->name, protocolDistControlDataSource, sizeof(protocolDistControlDataSource)) == 0) { + } + if (vars->name_length > sizeof(protocolDistControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, protocolDistControlDroppedFrames, sizeof(protocolDistControlDroppedFrames)) == 0) { + (*protocolDistControlEntry)->__protocolDistControlDroppedFrames = *vars->val.integer; + (*protocolDistControlEntry)->protocolDistControlDroppedFrames = &((*protocolDistControlEntry)->__protocolDistControlDroppedFrames); + } + if (vars->name_length > sizeof(protocolDistControlCreateTime)/sizeof(oid) + && memcmp(vars->name, protocolDistControlCreateTime, sizeof(protocolDistControlCreateTime)) == 0) { + (*protocolDistControlEntry)->__protocolDistControlCreateTime = *vars->val.integer; + (*protocolDistControlEntry)->protocolDistControlCreateTime = &((*protocolDistControlEntry)->__protocolDistControlCreateTime); + } + if (vars->name_length > sizeof(protocolDistControlOwner)/sizeof(oid) + && memcmp(vars->name, protocolDistControlOwner, sizeof(protocolDistControlOwner)) == 0) { + memcpy((*protocolDistControlEntry)->__protocolDistControlOwner, vars->val.string, vars->val_len); + (*protocolDistControlEntry)->_protocolDistControlOwnerLength = vars->val_len; + (*protocolDistControlEntry)->protocolDistControlOwner = (*protocolDistControlEntry)->__protocolDistControlOwner; + } + if (vars->name_length > sizeof(protocolDistControlStatus)/sizeof(oid) + && memcmp(vars->name, protocolDistControlStatus, sizeof(protocolDistControlStatus)) == 0) { + (*protocolDistControlEntry)->__protocolDistControlStatus = *vars->val.integer; + (*protocolDistControlEntry)->protocolDistControlStatus = &((*protocolDistControlEntry)->__protocolDistControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_protocolDistStatsEntry(struct snmp_session *s, protocolDistStatsEntry_t **protocolDistStatsEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, protocolDistStatsPkts, sizeof(protocolDistStatsPkts)/sizeof(oid)); + snmp_add_null_var(request, protocolDistStatsOctets, sizeof(protocolDistStatsOctets)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *protocolDistStatsEntry = (protocolDistStatsEntry_t *) malloc(sizeof(protocolDistStatsEntry_t)); + if (! *protocolDistStatsEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(protocolDistStatsPkts)/sizeof(oid) + && memcmp(vars->name, protocolDistStatsPkts, sizeof(protocolDistStatsPkts)) == 0) { + (*protocolDistStatsEntry)->__protocolDistStatsPkts = *vars->val.integer; + (*protocolDistStatsEntry)->protocolDistStatsPkts = &((*protocolDistStatsEntry)->__protocolDistStatsPkts); + } + if (vars->name_length > sizeof(protocolDistStatsOctets)/sizeof(oid) + && memcmp(vars->name, protocolDistStatsOctets, sizeof(protocolDistStatsOctets)) == 0) { + (*protocolDistStatsEntry)->__protocolDistStatsOctets = *vars->val.integer; + (*protocolDistStatsEntry)->protocolDistStatsOctets = &((*protocolDistStatsEntry)->__protocolDistStatsOctets); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_addressMap(struct snmp_session *s, addressMap_t **addressMap) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, addressMapInserts, sizeof(addressMapInserts)/sizeof(oid)); + snmp_add_null_var(request, addressMapDeletes, sizeof(addressMapDeletes)/sizeof(oid)); + snmp_add_null_var(request, addressMapMaxDesiredEntries, sizeof(addressMapMaxDesiredEntries)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *addressMap = (addressMap_t *) malloc(sizeof(addressMap_t)); + if (! *addressMap) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(addressMapInserts)/sizeof(oid) + && memcmp(vars->name, addressMapInserts, sizeof(addressMapInserts)) == 0) { + (*addressMap)->__addressMapInserts = *vars->val.integer; + (*addressMap)->addressMapInserts = &((*addressMap)->__addressMapInserts); + } + if (vars->name_length > sizeof(addressMapDeletes)/sizeof(oid) + && memcmp(vars->name, addressMapDeletes, sizeof(addressMapDeletes)) == 0) { + (*addressMap)->__addressMapDeletes = *vars->val.integer; + (*addressMap)->addressMapDeletes = &((*addressMap)->__addressMapDeletes); + } + if (vars->name_length > sizeof(addressMapMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, addressMapMaxDesiredEntries, sizeof(addressMapMaxDesiredEntries)) == 0) { + (*addressMap)->__addressMapMaxDesiredEntries = *vars->val.integer; + (*addressMap)->addressMapMaxDesiredEntries = &((*addressMap)->__addressMapMaxDesiredEntries); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_addressMapControlEntry(struct snmp_session *s, addressMapControlEntry_t **addressMapControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, addressMapControlDataSource, sizeof(addressMapControlDataSource)/sizeof(oid)); + snmp_add_null_var(request, addressMapControlDroppedFrames, sizeof(addressMapControlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, addressMapControlOwner, sizeof(addressMapControlOwner)/sizeof(oid)); + snmp_add_null_var(request, addressMapControlStatus, sizeof(addressMapControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *addressMapControlEntry = (addressMapControlEntry_t *) malloc(sizeof(addressMapControlEntry_t)); + if (! *addressMapControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(addressMapControlDataSource)/sizeof(oid) + && memcmp(vars->name, addressMapControlDataSource, sizeof(addressMapControlDataSource)) == 0) { + } + if (vars->name_length > sizeof(addressMapControlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, addressMapControlDroppedFrames, sizeof(addressMapControlDroppedFrames)) == 0) { + (*addressMapControlEntry)->__addressMapControlDroppedFrames = *vars->val.integer; + (*addressMapControlEntry)->addressMapControlDroppedFrames = &((*addressMapControlEntry)->__addressMapControlDroppedFrames); + } + if (vars->name_length > sizeof(addressMapControlOwner)/sizeof(oid) + && memcmp(vars->name, addressMapControlOwner, sizeof(addressMapControlOwner)) == 0) { + memcpy((*addressMapControlEntry)->__addressMapControlOwner, vars->val.string, vars->val_len); + (*addressMapControlEntry)->_addressMapControlOwnerLength = vars->val_len; + (*addressMapControlEntry)->addressMapControlOwner = (*addressMapControlEntry)->__addressMapControlOwner; + } + if (vars->name_length > sizeof(addressMapControlStatus)/sizeof(oid) + && memcmp(vars->name, addressMapControlStatus, sizeof(addressMapControlStatus)) == 0) { + (*addressMapControlEntry)->__addressMapControlStatus = *vars->val.integer; + (*addressMapControlEntry)->addressMapControlStatus = &((*addressMapControlEntry)->__addressMapControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_addressMapEntry(struct snmp_session *s, addressMapEntry_t **addressMapEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, addressMapPhysicalAddress, sizeof(addressMapPhysicalAddress)/sizeof(oid)); + snmp_add_null_var(request, addressMapLastChange, sizeof(addressMapLastChange)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *addressMapEntry = (addressMapEntry_t *) malloc(sizeof(addressMapEntry_t)); + if (! *addressMapEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(addressMapPhysicalAddress)/sizeof(oid) + && memcmp(vars->name, addressMapPhysicalAddress, sizeof(addressMapPhysicalAddress)) == 0) { + memcpy((*addressMapEntry)->__addressMapPhysicalAddress, vars->val.string, vars->val_len); + (*addressMapEntry)->_addressMapPhysicalAddressLength = vars->val_len; + (*addressMapEntry)->addressMapPhysicalAddress = (*addressMapEntry)->__addressMapPhysicalAddress; + } + if (vars->name_length > sizeof(addressMapLastChange)/sizeof(oid) + && memcmp(vars->name, addressMapLastChange, sizeof(addressMapLastChange)) == 0) { + (*addressMapEntry)->__addressMapLastChange = *vars->val.integer; + (*addressMapEntry)->addressMapLastChange = &((*addressMapEntry)->__addressMapLastChange); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_hlHostControlEntry(struct snmp_session *s, hlHostControlEntry_t **hlHostControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, hlHostControlDataSource, sizeof(hlHostControlDataSource)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlNlDroppedFrames, sizeof(hlHostControlNlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlNlInserts, sizeof(hlHostControlNlInserts)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlNlDeletes, sizeof(hlHostControlNlDeletes)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlNlMaxDesiredEntries, sizeof(hlHostControlNlMaxDesiredEntries)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlAlDroppedFrames, sizeof(hlHostControlAlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlAlInserts, sizeof(hlHostControlAlInserts)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlAlDeletes, sizeof(hlHostControlAlDeletes)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlAlMaxDesiredEntries, sizeof(hlHostControlAlMaxDesiredEntries)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlOwner, sizeof(hlHostControlOwner)/sizeof(oid)); + snmp_add_null_var(request, hlHostControlStatus, sizeof(hlHostControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *hlHostControlEntry = (hlHostControlEntry_t *) malloc(sizeof(hlHostControlEntry_t)); + if (! *hlHostControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(hlHostControlDataSource)/sizeof(oid) + && memcmp(vars->name, hlHostControlDataSource, sizeof(hlHostControlDataSource)) == 0) { + } + if (vars->name_length > sizeof(hlHostControlNlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hlHostControlNlDroppedFrames, sizeof(hlHostControlNlDroppedFrames)) == 0) { + (*hlHostControlEntry)->__hlHostControlNlDroppedFrames = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlNlDroppedFrames = &((*hlHostControlEntry)->__hlHostControlNlDroppedFrames); + } + if (vars->name_length > sizeof(hlHostControlNlInserts)/sizeof(oid) + && memcmp(vars->name, hlHostControlNlInserts, sizeof(hlHostControlNlInserts)) == 0) { + (*hlHostControlEntry)->__hlHostControlNlInserts = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlNlInserts = &((*hlHostControlEntry)->__hlHostControlNlInserts); + } + if (vars->name_length > sizeof(hlHostControlNlDeletes)/sizeof(oid) + && memcmp(vars->name, hlHostControlNlDeletes, sizeof(hlHostControlNlDeletes)) == 0) { + (*hlHostControlEntry)->__hlHostControlNlDeletes = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlNlDeletes = &((*hlHostControlEntry)->__hlHostControlNlDeletes); + } + if (vars->name_length > sizeof(hlHostControlNlMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, hlHostControlNlMaxDesiredEntries, sizeof(hlHostControlNlMaxDesiredEntries)) == 0) { + (*hlHostControlEntry)->__hlHostControlNlMaxDesiredEntries = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlNlMaxDesiredEntries = &((*hlHostControlEntry)->__hlHostControlNlMaxDesiredEntries); + } + if (vars->name_length > sizeof(hlHostControlAlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hlHostControlAlDroppedFrames, sizeof(hlHostControlAlDroppedFrames)) == 0) { + (*hlHostControlEntry)->__hlHostControlAlDroppedFrames = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlAlDroppedFrames = &((*hlHostControlEntry)->__hlHostControlAlDroppedFrames); + } + if (vars->name_length > sizeof(hlHostControlAlInserts)/sizeof(oid) + && memcmp(vars->name, hlHostControlAlInserts, sizeof(hlHostControlAlInserts)) == 0) { + (*hlHostControlEntry)->__hlHostControlAlInserts = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlAlInserts = &((*hlHostControlEntry)->__hlHostControlAlInserts); + } + if (vars->name_length > sizeof(hlHostControlAlDeletes)/sizeof(oid) + && memcmp(vars->name, hlHostControlAlDeletes, sizeof(hlHostControlAlDeletes)) == 0) { + (*hlHostControlEntry)->__hlHostControlAlDeletes = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlAlDeletes = &((*hlHostControlEntry)->__hlHostControlAlDeletes); + } + if (vars->name_length > sizeof(hlHostControlAlMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, hlHostControlAlMaxDesiredEntries, sizeof(hlHostControlAlMaxDesiredEntries)) == 0) { + (*hlHostControlEntry)->__hlHostControlAlMaxDesiredEntries = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlAlMaxDesiredEntries = &((*hlHostControlEntry)->__hlHostControlAlMaxDesiredEntries); + } + if (vars->name_length > sizeof(hlHostControlOwner)/sizeof(oid) + && memcmp(vars->name, hlHostControlOwner, sizeof(hlHostControlOwner)) == 0) { + memcpy((*hlHostControlEntry)->__hlHostControlOwner, vars->val.string, vars->val_len); + (*hlHostControlEntry)->_hlHostControlOwnerLength = vars->val_len; + (*hlHostControlEntry)->hlHostControlOwner = (*hlHostControlEntry)->__hlHostControlOwner; + } + if (vars->name_length > sizeof(hlHostControlStatus)/sizeof(oid) + && memcmp(vars->name, hlHostControlStatus, sizeof(hlHostControlStatus)) == 0) { + (*hlHostControlEntry)->__hlHostControlStatus = *vars->val.integer; + (*hlHostControlEntry)->hlHostControlStatus = &((*hlHostControlEntry)->__hlHostControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlHostEntry(struct snmp_session *s, nlHostEntry_t **nlHostEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlHostInPkts, sizeof(nlHostInPkts)/sizeof(oid)); + snmp_add_null_var(request, nlHostOutPkts, sizeof(nlHostOutPkts)/sizeof(oid)); + snmp_add_null_var(request, nlHostInOctets, sizeof(nlHostInOctets)/sizeof(oid)); + snmp_add_null_var(request, nlHostOutOctets, sizeof(nlHostOutOctets)/sizeof(oid)); + snmp_add_null_var(request, nlHostOutMacNonUnicastPkts, sizeof(nlHostOutMacNonUnicastPkts)/sizeof(oid)); + snmp_add_null_var(request, nlHostCreateTime, sizeof(nlHostCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlHostEntry = (nlHostEntry_t *) malloc(sizeof(nlHostEntry_t)); + if (! *nlHostEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlHostInPkts)/sizeof(oid) + && memcmp(vars->name, nlHostInPkts, sizeof(nlHostInPkts)) == 0) { + (*nlHostEntry)->__nlHostInPkts = *vars->val.integer; + (*nlHostEntry)->nlHostInPkts = &((*nlHostEntry)->__nlHostInPkts); + } + if (vars->name_length > sizeof(nlHostOutPkts)/sizeof(oid) + && memcmp(vars->name, nlHostOutPkts, sizeof(nlHostOutPkts)) == 0) { + (*nlHostEntry)->__nlHostOutPkts = *vars->val.integer; + (*nlHostEntry)->nlHostOutPkts = &((*nlHostEntry)->__nlHostOutPkts); + } + if (vars->name_length > sizeof(nlHostInOctets)/sizeof(oid) + && memcmp(vars->name, nlHostInOctets, sizeof(nlHostInOctets)) == 0) { + (*nlHostEntry)->__nlHostInOctets = *vars->val.integer; + (*nlHostEntry)->nlHostInOctets = &((*nlHostEntry)->__nlHostInOctets); + } + if (vars->name_length > sizeof(nlHostOutOctets)/sizeof(oid) + && memcmp(vars->name, nlHostOutOctets, sizeof(nlHostOutOctets)) == 0) { + (*nlHostEntry)->__nlHostOutOctets = *vars->val.integer; + (*nlHostEntry)->nlHostOutOctets = &((*nlHostEntry)->__nlHostOutOctets); + } + if (vars->name_length > sizeof(nlHostOutMacNonUnicastPkts)/sizeof(oid) + && memcmp(vars->name, nlHostOutMacNonUnicastPkts, sizeof(nlHostOutMacNonUnicastPkts)) == 0) { + (*nlHostEntry)->__nlHostOutMacNonUnicastPkts = *vars->val.integer; + (*nlHostEntry)->nlHostOutMacNonUnicastPkts = &((*nlHostEntry)->__nlHostOutMacNonUnicastPkts); + } + if (vars->name_length > sizeof(nlHostCreateTime)/sizeof(oid) + && memcmp(vars->name, nlHostCreateTime, sizeof(nlHostCreateTime)) == 0) { + (*nlHostEntry)->__nlHostCreateTime = *vars->val.integer; + (*nlHostEntry)->nlHostCreateTime = &((*nlHostEntry)->__nlHostCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_hlMatrixControlEntry(struct snmp_session *s, hlMatrixControlEntry_t **hlMatrixControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, hlMatrixControlDataSource, sizeof(hlMatrixControlDataSource)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlNlDroppedFrames, sizeof(hlMatrixControlNlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlNlInserts, sizeof(hlMatrixControlNlInserts)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlNlDeletes, sizeof(hlMatrixControlNlDeletes)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlNlMaxDesiredEntries, sizeof(hlMatrixControlNlMaxDesiredEntries)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlAlDroppedFrames, sizeof(hlMatrixControlAlDroppedFrames)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlAlInserts, sizeof(hlMatrixControlAlInserts)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlAlDeletes, sizeof(hlMatrixControlAlDeletes)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlAlMaxDesiredEntries, sizeof(hlMatrixControlAlMaxDesiredEntries)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlOwner, sizeof(hlMatrixControlOwner)/sizeof(oid)); + snmp_add_null_var(request, hlMatrixControlStatus, sizeof(hlMatrixControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *hlMatrixControlEntry = (hlMatrixControlEntry_t *) malloc(sizeof(hlMatrixControlEntry_t)); + if (! *hlMatrixControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(hlMatrixControlDataSource)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlDataSource, sizeof(hlMatrixControlDataSource)) == 0) { + } + if (vars->name_length > sizeof(hlMatrixControlNlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlNlDroppedFrames, sizeof(hlMatrixControlNlDroppedFrames)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlNlDroppedFrames = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlNlDroppedFrames = &((*hlMatrixControlEntry)->__hlMatrixControlNlDroppedFrames); + } + if (vars->name_length > sizeof(hlMatrixControlNlInserts)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlNlInserts, sizeof(hlMatrixControlNlInserts)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlNlInserts = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlNlInserts = &((*hlMatrixControlEntry)->__hlMatrixControlNlInserts); + } + if (vars->name_length > sizeof(hlMatrixControlNlDeletes)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlNlDeletes, sizeof(hlMatrixControlNlDeletes)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlNlDeletes = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlNlDeletes = &((*hlMatrixControlEntry)->__hlMatrixControlNlDeletes); + } + if (vars->name_length > sizeof(hlMatrixControlNlMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlNlMaxDesiredEntries, sizeof(hlMatrixControlNlMaxDesiredEntries)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlNlMaxDesiredEntries = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlNlMaxDesiredEntries = &((*hlMatrixControlEntry)->__hlMatrixControlNlMaxDesiredEntries); + } + if (vars->name_length > sizeof(hlMatrixControlAlDroppedFrames)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlAlDroppedFrames, sizeof(hlMatrixControlAlDroppedFrames)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlAlDroppedFrames = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlAlDroppedFrames = &((*hlMatrixControlEntry)->__hlMatrixControlAlDroppedFrames); + } + if (vars->name_length > sizeof(hlMatrixControlAlInserts)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlAlInserts, sizeof(hlMatrixControlAlInserts)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlAlInserts = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlAlInserts = &((*hlMatrixControlEntry)->__hlMatrixControlAlInserts); + } + if (vars->name_length > sizeof(hlMatrixControlAlDeletes)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlAlDeletes, sizeof(hlMatrixControlAlDeletes)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlAlDeletes = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlAlDeletes = &((*hlMatrixControlEntry)->__hlMatrixControlAlDeletes); + } + if (vars->name_length > sizeof(hlMatrixControlAlMaxDesiredEntries)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlAlMaxDesiredEntries, sizeof(hlMatrixControlAlMaxDesiredEntries)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlAlMaxDesiredEntries = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlAlMaxDesiredEntries = &((*hlMatrixControlEntry)->__hlMatrixControlAlMaxDesiredEntries); + } + if (vars->name_length > sizeof(hlMatrixControlOwner)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlOwner, sizeof(hlMatrixControlOwner)) == 0) { + memcpy((*hlMatrixControlEntry)->__hlMatrixControlOwner, vars->val.string, vars->val_len); + (*hlMatrixControlEntry)->_hlMatrixControlOwnerLength = vars->val_len; + (*hlMatrixControlEntry)->hlMatrixControlOwner = (*hlMatrixControlEntry)->__hlMatrixControlOwner; + } + if (vars->name_length > sizeof(hlMatrixControlStatus)/sizeof(oid) + && memcmp(vars->name, hlMatrixControlStatus, sizeof(hlMatrixControlStatus)) == 0) { + (*hlMatrixControlEntry)->__hlMatrixControlStatus = *vars->val.integer; + (*hlMatrixControlEntry)->hlMatrixControlStatus = &((*hlMatrixControlEntry)->__hlMatrixControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlMatrixSDEntry(struct snmp_session *s, nlMatrixSDEntry_t **nlMatrixSDEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlMatrixSDPkts, sizeof(nlMatrixSDPkts)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixSDOctets, sizeof(nlMatrixSDOctets)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixSDCreateTime, sizeof(nlMatrixSDCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlMatrixSDEntry = (nlMatrixSDEntry_t *) malloc(sizeof(nlMatrixSDEntry_t)); + if (! *nlMatrixSDEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlMatrixSDPkts)/sizeof(oid) + && memcmp(vars->name, nlMatrixSDPkts, sizeof(nlMatrixSDPkts)) == 0) { + (*nlMatrixSDEntry)->__nlMatrixSDPkts = *vars->val.integer; + (*nlMatrixSDEntry)->nlMatrixSDPkts = &((*nlMatrixSDEntry)->__nlMatrixSDPkts); + } + if (vars->name_length > sizeof(nlMatrixSDOctets)/sizeof(oid) + && memcmp(vars->name, nlMatrixSDOctets, sizeof(nlMatrixSDOctets)) == 0) { + (*nlMatrixSDEntry)->__nlMatrixSDOctets = *vars->val.integer; + (*nlMatrixSDEntry)->nlMatrixSDOctets = &((*nlMatrixSDEntry)->__nlMatrixSDOctets); + } + if (vars->name_length > sizeof(nlMatrixSDCreateTime)/sizeof(oid) + && memcmp(vars->name, nlMatrixSDCreateTime, sizeof(nlMatrixSDCreateTime)) == 0) { + (*nlMatrixSDEntry)->__nlMatrixSDCreateTime = *vars->val.integer; + (*nlMatrixSDEntry)->nlMatrixSDCreateTime = &((*nlMatrixSDEntry)->__nlMatrixSDCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlMatrixDSEntry(struct snmp_session *s, nlMatrixDSEntry_t **nlMatrixDSEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlMatrixDSPkts, sizeof(nlMatrixDSPkts)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixDSOctets, sizeof(nlMatrixDSOctets)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixDSCreateTime, sizeof(nlMatrixDSCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlMatrixDSEntry = (nlMatrixDSEntry_t *) malloc(sizeof(nlMatrixDSEntry_t)); + if (! *nlMatrixDSEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlMatrixDSPkts)/sizeof(oid) + && memcmp(vars->name, nlMatrixDSPkts, sizeof(nlMatrixDSPkts)) == 0) { + (*nlMatrixDSEntry)->__nlMatrixDSPkts = *vars->val.integer; + (*nlMatrixDSEntry)->nlMatrixDSPkts = &((*nlMatrixDSEntry)->__nlMatrixDSPkts); + } + if (vars->name_length > sizeof(nlMatrixDSOctets)/sizeof(oid) + && memcmp(vars->name, nlMatrixDSOctets, sizeof(nlMatrixDSOctets)) == 0) { + (*nlMatrixDSEntry)->__nlMatrixDSOctets = *vars->val.integer; + (*nlMatrixDSEntry)->nlMatrixDSOctets = &((*nlMatrixDSEntry)->__nlMatrixDSOctets); + } + if (vars->name_length > sizeof(nlMatrixDSCreateTime)/sizeof(oid) + && memcmp(vars->name, nlMatrixDSCreateTime, sizeof(nlMatrixDSCreateTime)) == 0) { + (*nlMatrixDSEntry)->__nlMatrixDSCreateTime = *vars->val.integer; + (*nlMatrixDSEntry)->nlMatrixDSCreateTime = &((*nlMatrixDSEntry)->__nlMatrixDSCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlMatrixTopNControlEntry(struct snmp_session *s, nlMatrixTopNControlEntry_t **nlMatrixTopNControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlMatrixTopNControlMatrixIndex, sizeof(nlMatrixTopNControlMatrixIndex)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlRateBase, sizeof(nlMatrixTopNControlRateBase)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlTimeRemaining, sizeof(nlMatrixTopNControlTimeRemaining)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlGeneratedReports, sizeof(nlMatrixTopNControlGeneratedReports)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlDuration, sizeof(nlMatrixTopNControlDuration)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlRequestedSize, sizeof(nlMatrixTopNControlRequestedSize)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlGrantedSize, sizeof(nlMatrixTopNControlGrantedSize)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlStartTime, sizeof(nlMatrixTopNControlStartTime)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlOwner, sizeof(nlMatrixTopNControlOwner)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNControlStatus, sizeof(nlMatrixTopNControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlMatrixTopNControlEntry = (nlMatrixTopNControlEntry_t *) malloc(sizeof(nlMatrixTopNControlEntry_t)); + if (! *nlMatrixTopNControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlMatrixTopNControlMatrixIndex)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlMatrixIndex, sizeof(nlMatrixTopNControlMatrixIndex)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlMatrixIndex = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlMatrixIndex = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlMatrixIndex); + } + if (vars->name_length > sizeof(nlMatrixTopNControlRateBase)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlRateBase, sizeof(nlMatrixTopNControlRateBase)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlRateBase = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlRateBase = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlRateBase); + } + if (vars->name_length > sizeof(nlMatrixTopNControlTimeRemaining)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlTimeRemaining, sizeof(nlMatrixTopNControlTimeRemaining)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlTimeRemaining = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlTimeRemaining = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlTimeRemaining); + } + if (vars->name_length > sizeof(nlMatrixTopNControlGeneratedReports)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlGeneratedReports, sizeof(nlMatrixTopNControlGeneratedReports)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlGeneratedReports = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlGeneratedReports = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlGeneratedReports); + } + if (vars->name_length > sizeof(nlMatrixTopNControlDuration)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlDuration, sizeof(nlMatrixTopNControlDuration)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlDuration = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlDuration = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlDuration); + } + if (vars->name_length > sizeof(nlMatrixTopNControlRequestedSize)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlRequestedSize, sizeof(nlMatrixTopNControlRequestedSize)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlRequestedSize = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlRequestedSize = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlRequestedSize); + } + if (vars->name_length > sizeof(nlMatrixTopNControlGrantedSize)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlGrantedSize, sizeof(nlMatrixTopNControlGrantedSize)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlGrantedSize = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlGrantedSize = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlGrantedSize); + } + if (vars->name_length > sizeof(nlMatrixTopNControlStartTime)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlStartTime, sizeof(nlMatrixTopNControlStartTime)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlStartTime = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlStartTime = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlStartTime); + } + if (vars->name_length > sizeof(nlMatrixTopNControlOwner)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlOwner, sizeof(nlMatrixTopNControlOwner)) == 0) { + memcpy((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlOwner, vars->val.string, vars->val_len); + (*nlMatrixTopNControlEntry)->_nlMatrixTopNControlOwnerLength = vars->val_len; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlOwner = (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlOwner; + } + if (vars->name_length > sizeof(nlMatrixTopNControlStatus)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNControlStatus, sizeof(nlMatrixTopNControlStatus)) == 0) { + (*nlMatrixTopNControlEntry)->__nlMatrixTopNControlStatus = *vars->val.integer; + (*nlMatrixTopNControlEntry)->nlMatrixTopNControlStatus = &((*nlMatrixTopNControlEntry)->__nlMatrixTopNControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_nlMatrixTopNEntry(struct snmp_session *s, nlMatrixTopNEntry_t **nlMatrixTopNEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, nlMatrixTopNProtocolDirLocalIndex, sizeof(nlMatrixTopNProtocolDirLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNSourceAddress, sizeof(nlMatrixTopNSourceAddress)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNDestAddress, sizeof(nlMatrixTopNDestAddress)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNPktRate, sizeof(nlMatrixTopNPktRate)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNReversePktRate, sizeof(nlMatrixTopNReversePktRate)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNOctetRate, sizeof(nlMatrixTopNOctetRate)/sizeof(oid)); + snmp_add_null_var(request, nlMatrixTopNReverseOctetRate, sizeof(nlMatrixTopNReverseOctetRate)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *nlMatrixTopNEntry = (nlMatrixTopNEntry_t *) malloc(sizeof(nlMatrixTopNEntry_t)); + if (! *nlMatrixTopNEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(nlMatrixTopNProtocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNProtocolDirLocalIndex, sizeof(nlMatrixTopNProtocolDirLocalIndex)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNProtocolDirLocalIndex = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNProtocolDirLocalIndex = &((*nlMatrixTopNEntry)->__nlMatrixTopNProtocolDirLocalIndex); + } + if (vars->name_length > sizeof(nlMatrixTopNSourceAddress)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNSourceAddress, sizeof(nlMatrixTopNSourceAddress)) == 0) { + memcpy((*nlMatrixTopNEntry)->__nlMatrixTopNSourceAddress, vars->val.string, vars->val_len); + (*nlMatrixTopNEntry)->_nlMatrixTopNSourceAddressLength = vars->val_len; + (*nlMatrixTopNEntry)->nlMatrixTopNSourceAddress = (*nlMatrixTopNEntry)->__nlMatrixTopNSourceAddress; + } + if (vars->name_length > sizeof(nlMatrixTopNDestAddress)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNDestAddress, sizeof(nlMatrixTopNDestAddress)) == 0) { + memcpy((*nlMatrixTopNEntry)->__nlMatrixTopNDestAddress, vars->val.string, vars->val_len); + (*nlMatrixTopNEntry)->_nlMatrixTopNDestAddressLength = vars->val_len; + (*nlMatrixTopNEntry)->nlMatrixTopNDestAddress = (*nlMatrixTopNEntry)->__nlMatrixTopNDestAddress; + } + if (vars->name_length > sizeof(nlMatrixTopNPktRate)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNPktRate, sizeof(nlMatrixTopNPktRate)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNPktRate = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNPktRate = &((*nlMatrixTopNEntry)->__nlMatrixTopNPktRate); + } + if (vars->name_length > sizeof(nlMatrixTopNReversePktRate)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNReversePktRate, sizeof(nlMatrixTopNReversePktRate)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNReversePktRate = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNReversePktRate = &((*nlMatrixTopNEntry)->__nlMatrixTopNReversePktRate); + } + if (vars->name_length > sizeof(nlMatrixTopNOctetRate)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNOctetRate, sizeof(nlMatrixTopNOctetRate)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNOctetRate = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNOctetRate = &((*nlMatrixTopNEntry)->__nlMatrixTopNOctetRate); + } + if (vars->name_length > sizeof(nlMatrixTopNReverseOctetRate)/sizeof(oid) + && memcmp(vars->name, nlMatrixTopNReverseOctetRate, sizeof(nlMatrixTopNReverseOctetRate)) == 0) { + (*nlMatrixTopNEntry)->__nlMatrixTopNReverseOctetRate = *vars->val.integer; + (*nlMatrixTopNEntry)->nlMatrixTopNReverseOctetRate = &((*nlMatrixTopNEntry)->__nlMatrixTopNReverseOctetRate); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alHostEntry(struct snmp_session *s, alHostEntry_t **alHostEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alHostInPkts, sizeof(alHostInPkts)/sizeof(oid)); + snmp_add_null_var(request, alHostOutPkts, sizeof(alHostOutPkts)/sizeof(oid)); + snmp_add_null_var(request, alHostInOctets, sizeof(alHostInOctets)/sizeof(oid)); + snmp_add_null_var(request, alHostOutOctets, sizeof(alHostOutOctets)/sizeof(oid)); + snmp_add_null_var(request, alHostCreateTime, sizeof(alHostCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alHostEntry = (alHostEntry_t *) malloc(sizeof(alHostEntry_t)); + if (! *alHostEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alHostInPkts)/sizeof(oid) + && memcmp(vars->name, alHostInPkts, sizeof(alHostInPkts)) == 0) { + (*alHostEntry)->__alHostInPkts = *vars->val.integer; + (*alHostEntry)->alHostInPkts = &((*alHostEntry)->__alHostInPkts); + } + if (vars->name_length > sizeof(alHostOutPkts)/sizeof(oid) + && memcmp(vars->name, alHostOutPkts, sizeof(alHostOutPkts)) == 0) { + (*alHostEntry)->__alHostOutPkts = *vars->val.integer; + (*alHostEntry)->alHostOutPkts = &((*alHostEntry)->__alHostOutPkts); + } + if (vars->name_length > sizeof(alHostInOctets)/sizeof(oid) + && memcmp(vars->name, alHostInOctets, sizeof(alHostInOctets)) == 0) { + (*alHostEntry)->__alHostInOctets = *vars->val.integer; + (*alHostEntry)->alHostInOctets = &((*alHostEntry)->__alHostInOctets); + } + if (vars->name_length > sizeof(alHostOutOctets)/sizeof(oid) + && memcmp(vars->name, alHostOutOctets, sizeof(alHostOutOctets)) == 0) { + (*alHostEntry)->__alHostOutOctets = *vars->val.integer; + (*alHostEntry)->alHostOutOctets = &((*alHostEntry)->__alHostOutOctets); + } + if (vars->name_length > sizeof(alHostCreateTime)/sizeof(oid) + && memcmp(vars->name, alHostCreateTime, sizeof(alHostCreateTime)) == 0) { + (*alHostEntry)->__alHostCreateTime = *vars->val.integer; + (*alHostEntry)->alHostCreateTime = &((*alHostEntry)->__alHostCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alMatrixSDEntry(struct snmp_session *s, alMatrixSDEntry_t **alMatrixSDEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alMatrixSDPkts, sizeof(alMatrixSDPkts)/sizeof(oid)); + snmp_add_null_var(request, alMatrixSDOctets, sizeof(alMatrixSDOctets)/sizeof(oid)); + snmp_add_null_var(request, alMatrixSDCreateTime, sizeof(alMatrixSDCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alMatrixSDEntry = (alMatrixSDEntry_t *) malloc(sizeof(alMatrixSDEntry_t)); + if (! *alMatrixSDEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alMatrixSDPkts)/sizeof(oid) + && memcmp(vars->name, alMatrixSDPkts, sizeof(alMatrixSDPkts)) == 0) { + (*alMatrixSDEntry)->__alMatrixSDPkts = *vars->val.integer; + (*alMatrixSDEntry)->alMatrixSDPkts = &((*alMatrixSDEntry)->__alMatrixSDPkts); + } + if (vars->name_length > sizeof(alMatrixSDOctets)/sizeof(oid) + && memcmp(vars->name, alMatrixSDOctets, sizeof(alMatrixSDOctets)) == 0) { + (*alMatrixSDEntry)->__alMatrixSDOctets = *vars->val.integer; + (*alMatrixSDEntry)->alMatrixSDOctets = &((*alMatrixSDEntry)->__alMatrixSDOctets); + } + if (vars->name_length > sizeof(alMatrixSDCreateTime)/sizeof(oid) + && memcmp(vars->name, alMatrixSDCreateTime, sizeof(alMatrixSDCreateTime)) == 0) { + (*alMatrixSDEntry)->__alMatrixSDCreateTime = *vars->val.integer; + (*alMatrixSDEntry)->alMatrixSDCreateTime = &((*alMatrixSDEntry)->__alMatrixSDCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alMatrixDSEntry(struct snmp_session *s, alMatrixDSEntry_t **alMatrixDSEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alMatrixDSPkts, sizeof(alMatrixDSPkts)/sizeof(oid)); + snmp_add_null_var(request, alMatrixDSOctets, sizeof(alMatrixDSOctets)/sizeof(oid)); + snmp_add_null_var(request, alMatrixDSCreateTime, sizeof(alMatrixDSCreateTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alMatrixDSEntry = (alMatrixDSEntry_t *) malloc(sizeof(alMatrixDSEntry_t)); + if (! *alMatrixDSEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alMatrixDSPkts)/sizeof(oid) + && memcmp(vars->name, alMatrixDSPkts, sizeof(alMatrixDSPkts)) == 0) { + (*alMatrixDSEntry)->__alMatrixDSPkts = *vars->val.integer; + (*alMatrixDSEntry)->alMatrixDSPkts = &((*alMatrixDSEntry)->__alMatrixDSPkts); + } + if (vars->name_length > sizeof(alMatrixDSOctets)/sizeof(oid) + && memcmp(vars->name, alMatrixDSOctets, sizeof(alMatrixDSOctets)) == 0) { + (*alMatrixDSEntry)->__alMatrixDSOctets = *vars->val.integer; + (*alMatrixDSEntry)->alMatrixDSOctets = &((*alMatrixDSEntry)->__alMatrixDSOctets); + } + if (vars->name_length > sizeof(alMatrixDSCreateTime)/sizeof(oid) + && memcmp(vars->name, alMatrixDSCreateTime, sizeof(alMatrixDSCreateTime)) == 0) { + (*alMatrixDSEntry)->__alMatrixDSCreateTime = *vars->val.integer; + (*alMatrixDSEntry)->alMatrixDSCreateTime = &((*alMatrixDSEntry)->__alMatrixDSCreateTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alMatrixTopNControlEntry(struct snmp_session *s, alMatrixTopNControlEntry_t **alMatrixTopNControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alMatrixTopNControlMatrixIndex, sizeof(alMatrixTopNControlMatrixIndex)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlRateBase, sizeof(alMatrixTopNControlRateBase)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlTimeRemaining, sizeof(alMatrixTopNControlTimeRemaining)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlGeneratedReports, sizeof(alMatrixTopNControlGeneratedReports)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlDuration, sizeof(alMatrixTopNControlDuration)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlRequestedSize, sizeof(alMatrixTopNControlRequestedSize)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlGrantedSize, sizeof(alMatrixTopNControlGrantedSize)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlStartTime, sizeof(alMatrixTopNControlStartTime)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlOwner, sizeof(alMatrixTopNControlOwner)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNControlStatus, sizeof(alMatrixTopNControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alMatrixTopNControlEntry = (alMatrixTopNControlEntry_t *) malloc(sizeof(alMatrixTopNControlEntry_t)); + if (! *alMatrixTopNControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alMatrixTopNControlMatrixIndex)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlMatrixIndex, sizeof(alMatrixTopNControlMatrixIndex)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlMatrixIndex = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlMatrixIndex = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlMatrixIndex); + } + if (vars->name_length > sizeof(alMatrixTopNControlRateBase)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlRateBase, sizeof(alMatrixTopNControlRateBase)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlRateBase = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlRateBase = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlRateBase); + } + if (vars->name_length > sizeof(alMatrixTopNControlTimeRemaining)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlTimeRemaining, sizeof(alMatrixTopNControlTimeRemaining)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlTimeRemaining = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlTimeRemaining = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlTimeRemaining); + } + if (vars->name_length > sizeof(alMatrixTopNControlGeneratedReports)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlGeneratedReports, sizeof(alMatrixTopNControlGeneratedReports)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlGeneratedReports = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlGeneratedReports = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlGeneratedReports); + } + if (vars->name_length > sizeof(alMatrixTopNControlDuration)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlDuration, sizeof(alMatrixTopNControlDuration)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlDuration = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlDuration = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlDuration); + } + if (vars->name_length > sizeof(alMatrixTopNControlRequestedSize)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlRequestedSize, sizeof(alMatrixTopNControlRequestedSize)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlRequestedSize = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlRequestedSize = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlRequestedSize); + } + if (vars->name_length > sizeof(alMatrixTopNControlGrantedSize)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlGrantedSize, sizeof(alMatrixTopNControlGrantedSize)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlGrantedSize = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlGrantedSize = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlGrantedSize); + } + if (vars->name_length > sizeof(alMatrixTopNControlStartTime)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlStartTime, sizeof(alMatrixTopNControlStartTime)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlStartTime = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlStartTime = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlStartTime); + } + if (vars->name_length > sizeof(alMatrixTopNControlOwner)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlOwner, sizeof(alMatrixTopNControlOwner)) == 0) { + memcpy((*alMatrixTopNControlEntry)->__alMatrixTopNControlOwner, vars->val.string, vars->val_len); + (*alMatrixTopNControlEntry)->_alMatrixTopNControlOwnerLength = vars->val_len; + (*alMatrixTopNControlEntry)->alMatrixTopNControlOwner = (*alMatrixTopNControlEntry)->__alMatrixTopNControlOwner; + } + if (vars->name_length > sizeof(alMatrixTopNControlStatus)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNControlStatus, sizeof(alMatrixTopNControlStatus)) == 0) { + (*alMatrixTopNControlEntry)->__alMatrixTopNControlStatus = *vars->val.integer; + (*alMatrixTopNControlEntry)->alMatrixTopNControlStatus = &((*alMatrixTopNControlEntry)->__alMatrixTopNControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_alMatrixTopNEntry(struct snmp_session *s, alMatrixTopNEntry_t **alMatrixTopNEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, alMatrixTopNProtocolDirLocalIndex, sizeof(alMatrixTopNProtocolDirLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNSourceAddress, sizeof(alMatrixTopNSourceAddress)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNDestAddress, sizeof(alMatrixTopNDestAddress)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNAppProtocolDirLocalIndex, sizeof(alMatrixTopNAppProtocolDirLocalIndex)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNPktRate, sizeof(alMatrixTopNPktRate)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNReversePktRate, sizeof(alMatrixTopNReversePktRate)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNOctetRate, sizeof(alMatrixTopNOctetRate)/sizeof(oid)); + snmp_add_null_var(request, alMatrixTopNReverseOctetRate, sizeof(alMatrixTopNReverseOctetRate)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *alMatrixTopNEntry = (alMatrixTopNEntry_t *) malloc(sizeof(alMatrixTopNEntry_t)); + if (! *alMatrixTopNEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(alMatrixTopNProtocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNProtocolDirLocalIndex, sizeof(alMatrixTopNProtocolDirLocalIndex)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNProtocolDirLocalIndex = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNProtocolDirLocalIndex = &((*alMatrixTopNEntry)->__alMatrixTopNProtocolDirLocalIndex); + } + if (vars->name_length > sizeof(alMatrixTopNSourceAddress)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNSourceAddress, sizeof(alMatrixTopNSourceAddress)) == 0) { + memcpy((*alMatrixTopNEntry)->__alMatrixTopNSourceAddress, vars->val.string, vars->val_len); + (*alMatrixTopNEntry)->_alMatrixTopNSourceAddressLength = vars->val_len; + (*alMatrixTopNEntry)->alMatrixTopNSourceAddress = (*alMatrixTopNEntry)->__alMatrixTopNSourceAddress; + } + if (vars->name_length > sizeof(alMatrixTopNDestAddress)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNDestAddress, sizeof(alMatrixTopNDestAddress)) == 0) { + memcpy((*alMatrixTopNEntry)->__alMatrixTopNDestAddress, vars->val.string, vars->val_len); + (*alMatrixTopNEntry)->_alMatrixTopNDestAddressLength = vars->val_len; + (*alMatrixTopNEntry)->alMatrixTopNDestAddress = (*alMatrixTopNEntry)->__alMatrixTopNDestAddress; + } + if (vars->name_length > sizeof(alMatrixTopNAppProtocolDirLocalIndex)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNAppProtocolDirLocalIndex, sizeof(alMatrixTopNAppProtocolDirLocalIndex)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNAppProtocolDirLocalIndex = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNAppProtocolDirLocalIndex = &((*alMatrixTopNEntry)->__alMatrixTopNAppProtocolDirLocalIndex); + } + if (vars->name_length > sizeof(alMatrixTopNPktRate)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNPktRate, sizeof(alMatrixTopNPktRate)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNPktRate = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNPktRate = &((*alMatrixTopNEntry)->__alMatrixTopNPktRate); + } + if (vars->name_length > sizeof(alMatrixTopNReversePktRate)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNReversePktRate, sizeof(alMatrixTopNReversePktRate)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNReversePktRate = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNReversePktRate = &((*alMatrixTopNEntry)->__alMatrixTopNReversePktRate); + } + if (vars->name_length > sizeof(alMatrixTopNOctetRate)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNOctetRate, sizeof(alMatrixTopNOctetRate)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNOctetRate = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNOctetRate = &((*alMatrixTopNEntry)->__alMatrixTopNOctetRate); + } + if (vars->name_length > sizeof(alMatrixTopNReverseOctetRate)/sizeof(oid) + && memcmp(vars->name, alMatrixTopNReverseOctetRate, sizeof(alMatrixTopNReverseOctetRate)) == 0) { + (*alMatrixTopNEntry)->__alMatrixTopNReverseOctetRate = *vars->val.integer; + (*alMatrixTopNEntry)->alMatrixTopNReverseOctetRate = &((*alMatrixTopNEntry)->__alMatrixTopNReverseOctetRate); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_usrHistoryControlEntry(struct snmp_session *s, usrHistoryControlEntry_t **usrHistoryControlEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, usrHistoryControlObjects, sizeof(usrHistoryControlObjects)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlBucketsRequested, sizeof(usrHistoryControlBucketsRequested)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlBucketsGranted, sizeof(usrHistoryControlBucketsGranted)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlInterval, sizeof(usrHistoryControlInterval)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlOwner, sizeof(usrHistoryControlOwner)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryControlStatus, sizeof(usrHistoryControlStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *usrHistoryControlEntry = (usrHistoryControlEntry_t *) malloc(sizeof(usrHistoryControlEntry_t)); + if (! *usrHistoryControlEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(usrHistoryControlObjects)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlObjects, sizeof(usrHistoryControlObjects)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlObjects = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlObjects = &((*usrHistoryControlEntry)->__usrHistoryControlObjects); + } + if (vars->name_length > sizeof(usrHistoryControlBucketsRequested)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlBucketsRequested, sizeof(usrHistoryControlBucketsRequested)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlBucketsRequested = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlBucketsRequested = &((*usrHistoryControlEntry)->__usrHistoryControlBucketsRequested); + } + if (vars->name_length > sizeof(usrHistoryControlBucketsGranted)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlBucketsGranted, sizeof(usrHistoryControlBucketsGranted)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlBucketsGranted = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlBucketsGranted = &((*usrHistoryControlEntry)->__usrHistoryControlBucketsGranted); + } + if (vars->name_length > sizeof(usrHistoryControlInterval)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlInterval, sizeof(usrHistoryControlInterval)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlInterval = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlInterval = &((*usrHistoryControlEntry)->__usrHistoryControlInterval); + } + if (vars->name_length > sizeof(usrHistoryControlOwner)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlOwner, sizeof(usrHistoryControlOwner)) == 0) { + memcpy((*usrHistoryControlEntry)->__usrHistoryControlOwner, vars->val.string, vars->val_len); + (*usrHistoryControlEntry)->_usrHistoryControlOwnerLength = vars->val_len; + (*usrHistoryControlEntry)->usrHistoryControlOwner = (*usrHistoryControlEntry)->__usrHistoryControlOwner; + } + if (vars->name_length > sizeof(usrHistoryControlStatus)/sizeof(oid) + && memcmp(vars->name, usrHistoryControlStatus, sizeof(usrHistoryControlStatus)) == 0) { + (*usrHistoryControlEntry)->__usrHistoryControlStatus = *vars->val.integer; + (*usrHistoryControlEntry)->usrHistoryControlStatus = &((*usrHistoryControlEntry)->__usrHistoryControlStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_usrHistoryObjectEntry(struct snmp_session *s, usrHistoryObjectEntry_t **usrHistoryObjectEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, usrHistoryObjectVariable, sizeof(usrHistoryObjectVariable)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryObjectSampleType, sizeof(usrHistoryObjectSampleType)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *usrHistoryObjectEntry = (usrHistoryObjectEntry_t *) malloc(sizeof(usrHistoryObjectEntry_t)); + if (! *usrHistoryObjectEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(usrHistoryObjectVariable)/sizeof(oid) + && memcmp(vars->name, usrHistoryObjectVariable, sizeof(usrHistoryObjectVariable)) == 0) { + } + if (vars->name_length > sizeof(usrHistoryObjectSampleType)/sizeof(oid) + && memcmp(vars->name, usrHistoryObjectSampleType, sizeof(usrHistoryObjectSampleType)) == 0) { + (*usrHistoryObjectEntry)->__usrHistoryObjectSampleType = *vars->val.integer; + (*usrHistoryObjectEntry)->usrHistoryObjectSampleType = &((*usrHistoryObjectEntry)->__usrHistoryObjectSampleType); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_usrHistoryEntry(struct snmp_session *s, usrHistoryEntry_t **usrHistoryEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, usrHistoryIntervalStart, sizeof(usrHistoryIntervalStart)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryIntervalEnd, sizeof(usrHistoryIntervalEnd)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryAbsValue, sizeof(usrHistoryAbsValue)/sizeof(oid)); + snmp_add_null_var(request, usrHistoryValStatus, sizeof(usrHistoryValStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *usrHistoryEntry = (usrHistoryEntry_t *) malloc(sizeof(usrHistoryEntry_t)); + if (! *usrHistoryEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(usrHistoryIntervalStart)/sizeof(oid) + && memcmp(vars->name, usrHistoryIntervalStart, sizeof(usrHistoryIntervalStart)) == 0) { + (*usrHistoryEntry)->__usrHistoryIntervalStart = *vars->val.integer; + (*usrHistoryEntry)->usrHistoryIntervalStart = &((*usrHistoryEntry)->__usrHistoryIntervalStart); + } + if (vars->name_length > sizeof(usrHistoryIntervalEnd)/sizeof(oid) + && memcmp(vars->name, usrHistoryIntervalEnd, sizeof(usrHistoryIntervalEnd)) == 0) { + (*usrHistoryEntry)->__usrHistoryIntervalEnd = *vars->val.integer; + (*usrHistoryEntry)->usrHistoryIntervalEnd = &((*usrHistoryEntry)->__usrHistoryIntervalEnd); + } + if (vars->name_length > sizeof(usrHistoryAbsValue)/sizeof(oid) + && memcmp(vars->name, usrHistoryAbsValue, sizeof(usrHistoryAbsValue)) == 0) { + (*usrHistoryEntry)->__usrHistoryAbsValue = *vars->val.integer; + (*usrHistoryEntry)->usrHistoryAbsValue = &((*usrHistoryEntry)->__usrHistoryAbsValue); + } + if (vars->name_length > sizeof(usrHistoryValStatus)/sizeof(oid) + && memcmp(vars->name, usrHistoryValStatus, sizeof(usrHistoryValStatus)) == 0) { + (*usrHistoryEntry)->__usrHistoryValStatus = *vars->val.integer; + (*usrHistoryEntry)->usrHistoryValStatus = &((*usrHistoryEntry)->__usrHistoryValStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_probeConfig(struct snmp_session *s, probeConfig_t **probeConfig) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, probeCapabilities, sizeof(probeCapabilities)/sizeof(oid)); + snmp_add_null_var(request, probeSoftwareRev, sizeof(probeSoftwareRev)/sizeof(oid)); + snmp_add_null_var(request, probeHardwareRev, sizeof(probeHardwareRev)/sizeof(oid)); + snmp_add_null_var(request, probeDateTime, sizeof(probeDateTime)/sizeof(oid)); + snmp_add_null_var(request, probeResetControl, sizeof(probeResetControl)/sizeof(oid)); + snmp_add_null_var(request, probeDownloadFile, sizeof(probeDownloadFile)/sizeof(oid)); + snmp_add_null_var(request, probeDownloadTFTPServer, sizeof(probeDownloadTFTPServer)/sizeof(oid)); + snmp_add_null_var(request, probeDownloadAction, sizeof(probeDownloadAction)/sizeof(oid)); + snmp_add_null_var(request, probeDownloadStatus, sizeof(probeDownloadStatus)/sizeof(oid)); + snmp_add_null_var(request, netDefaultGateway, sizeof(netDefaultGateway)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *probeConfig = (probeConfig_t *) malloc(sizeof(probeConfig_t)); + if (! *probeConfig) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(probeCapabilities)/sizeof(oid) + && memcmp(vars->name, probeCapabilities, sizeof(probeCapabilities)) == 0) { + memcpy((*probeConfig)->__probeCapabilities, vars->val.string, vars->val_len); + (*probeConfig)->_probeCapabilitiesLength = vars->val_len; + (*probeConfig)->probeCapabilities = (*probeConfig)->__probeCapabilities; + } + if (vars->name_length > sizeof(probeSoftwareRev)/sizeof(oid) + && memcmp(vars->name, probeSoftwareRev, sizeof(probeSoftwareRev)) == 0) { + memcpy((*probeConfig)->__probeSoftwareRev, vars->val.string, vars->val_len); + (*probeConfig)->_probeSoftwareRevLength = vars->val_len; + (*probeConfig)->probeSoftwareRev = (*probeConfig)->__probeSoftwareRev; + } + if (vars->name_length > sizeof(probeHardwareRev)/sizeof(oid) + && memcmp(vars->name, probeHardwareRev, sizeof(probeHardwareRev)) == 0) { + memcpy((*probeConfig)->__probeHardwareRev, vars->val.string, vars->val_len); + (*probeConfig)->_probeHardwareRevLength = vars->val_len; + (*probeConfig)->probeHardwareRev = (*probeConfig)->__probeHardwareRev; + } + if (vars->name_length > sizeof(probeDateTime)/sizeof(oid) + && memcmp(vars->name, probeDateTime, sizeof(probeDateTime)) == 0) { + memcpy((*probeConfig)->__probeDateTime, vars->val.string, vars->val_len); + (*probeConfig)->_probeDateTimeLength = vars->val_len; + (*probeConfig)->probeDateTime = (*probeConfig)->__probeDateTime; + } + if (vars->name_length > sizeof(probeResetControl)/sizeof(oid) + && memcmp(vars->name, probeResetControl, sizeof(probeResetControl)) == 0) { + (*probeConfig)->__probeResetControl = *vars->val.integer; + (*probeConfig)->probeResetControl = &((*probeConfig)->__probeResetControl); + } + if (vars->name_length > sizeof(probeDownloadFile)/sizeof(oid) + && memcmp(vars->name, probeDownloadFile, sizeof(probeDownloadFile)) == 0) { + memcpy((*probeConfig)->__probeDownloadFile, vars->val.string, vars->val_len); + (*probeConfig)->_probeDownloadFileLength = vars->val_len; + (*probeConfig)->probeDownloadFile = (*probeConfig)->__probeDownloadFile; + } + if (vars->name_length > sizeof(probeDownloadTFTPServer)/sizeof(oid) + && memcmp(vars->name, probeDownloadTFTPServer, sizeof(probeDownloadTFTPServer)) == 0) { + memcpy((*probeConfig)->__probeDownloadTFTPServer, vars->val.string, vars->val_len); + (*probeConfig)->probeDownloadTFTPServer = (*probeConfig)->__probeDownloadTFTPServer; + } + if (vars->name_length > sizeof(probeDownloadAction)/sizeof(oid) + && memcmp(vars->name, probeDownloadAction, sizeof(probeDownloadAction)) == 0) { + (*probeConfig)->__probeDownloadAction = *vars->val.integer; + (*probeConfig)->probeDownloadAction = &((*probeConfig)->__probeDownloadAction); + } + if (vars->name_length > sizeof(probeDownloadStatus)/sizeof(oid) + && memcmp(vars->name, probeDownloadStatus, sizeof(probeDownloadStatus)) == 0) { + (*probeConfig)->__probeDownloadStatus = *vars->val.integer; + (*probeConfig)->probeDownloadStatus = &((*probeConfig)->__probeDownloadStatus); + } + if (vars->name_length > sizeof(netDefaultGateway)/sizeof(oid) + && memcmp(vars->name, netDefaultGateway, sizeof(netDefaultGateway)) == 0) { + memcpy((*probeConfig)->__netDefaultGateway, vars->val.string, vars->val_len); + (*probeConfig)->netDefaultGateway = (*probeConfig)->__netDefaultGateway; + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_serialConfigEntry(struct snmp_session *s, serialConfigEntry_t **serialConfigEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, serialMode, sizeof(serialMode)/sizeof(oid)); + snmp_add_null_var(request, serialProtocol, sizeof(serialProtocol)/sizeof(oid)); + snmp_add_null_var(request, serialTimeout, sizeof(serialTimeout)/sizeof(oid)); + snmp_add_null_var(request, serialModemInitString, sizeof(serialModemInitString)/sizeof(oid)); + snmp_add_null_var(request, serialModemHangUpString, sizeof(serialModemHangUpString)/sizeof(oid)); + snmp_add_null_var(request, serialModemConnectResp, sizeof(serialModemConnectResp)/sizeof(oid)); + snmp_add_null_var(request, serialModemNoConnectResp, sizeof(serialModemNoConnectResp)/sizeof(oid)); + snmp_add_null_var(request, serialDialoutTimeout, sizeof(serialDialoutTimeout)/sizeof(oid)); + snmp_add_null_var(request, serialStatus, sizeof(serialStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *serialConfigEntry = (serialConfigEntry_t *) malloc(sizeof(serialConfigEntry_t)); + if (! *serialConfigEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(serialMode)/sizeof(oid) + && memcmp(vars->name, serialMode, sizeof(serialMode)) == 0) { + (*serialConfigEntry)->__serialMode = *vars->val.integer; + (*serialConfigEntry)->serialMode = &((*serialConfigEntry)->__serialMode); + } + if (vars->name_length > sizeof(serialProtocol)/sizeof(oid) + && memcmp(vars->name, serialProtocol, sizeof(serialProtocol)) == 0) { + (*serialConfigEntry)->__serialProtocol = *vars->val.integer; + (*serialConfigEntry)->serialProtocol = &((*serialConfigEntry)->__serialProtocol); + } + if (vars->name_length > sizeof(serialTimeout)/sizeof(oid) + && memcmp(vars->name, serialTimeout, sizeof(serialTimeout)) == 0) { + (*serialConfigEntry)->__serialTimeout = *vars->val.integer; + (*serialConfigEntry)->serialTimeout = &((*serialConfigEntry)->__serialTimeout); + } + if (vars->name_length > sizeof(serialModemInitString)/sizeof(oid) + && memcmp(vars->name, serialModemInitString, sizeof(serialModemInitString)) == 0) { + memcpy((*serialConfigEntry)->__serialModemInitString, vars->val.string, vars->val_len); + (*serialConfigEntry)->_serialModemInitStringLength = vars->val_len; + (*serialConfigEntry)->serialModemInitString = (*serialConfigEntry)->__serialModemInitString; + } + if (vars->name_length > sizeof(serialModemHangUpString)/sizeof(oid) + && memcmp(vars->name, serialModemHangUpString, sizeof(serialModemHangUpString)) == 0) { + memcpy((*serialConfigEntry)->__serialModemHangUpString, vars->val.string, vars->val_len); + (*serialConfigEntry)->_serialModemHangUpStringLength = vars->val_len; + (*serialConfigEntry)->serialModemHangUpString = (*serialConfigEntry)->__serialModemHangUpString; + } + if (vars->name_length > sizeof(serialModemConnectResp)/sizeof(oid) + && memcmp(vars->name, serialModemConnectResp, sizeof(serialModemConnectResp)) == 0) { + memcpy((*serialConfigEntry)->__serialModemConnectResp, vars->val.string, vars->val_len); + (*serialConfigEntry)->_serialModemConnectRespLength = vars->val_len; + (*serialConfigEntry)->serialModemConnectResp = (*serialConfigEntry)->__serialModemConnectResp; + } + if (vars->name_length > sizeof(serialModemNoConnectResp)/sizeof(oid) + && memcmp(vars->name, serialModemNoConnectResp, sizeof(serialModemNoConnectResp)) == 0) { + memcpy((*serialConfigEntry)->__serialModemNoConnectResp, vars->val.string, vars->val_len); + (*serialConfigEntry)->_serialModemNoConnectRespLength = vars->val_len; + (*serialConfigEntry)->serialModemNoConnectResp = (*serialConfigEntry)->__serialModemNoConnectResp; + } + if (vars->name_length > sizeof(serialDialoutTimeout)/sizeof(oid) + && memcmp(vars->name, serialDialoutTimeout, sizeof(serialDialoutTimeout)) == 0) { + (*serialConfigEntry)->__serialDialoutTimeout = *vars->val.integer; + (*serialConfigEntry)->serialDialoutTimeout = &((*serialConfigEntry)->__serialDialoutTimeout); + } + if (vars->name_length > sizeof(serialStatus)/sizeof(oid) + && memcmp(vars->name, serialStatus, sizeof(serialStatus)) == 0) { + (*serialConfigEntry)->__serialStatus = *vars->val.integer; + (*serialConfigEntry)->serialStatus = &((*serialConfigEntry)->__serialStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_netConfigEntry(struct snmp_session *s, netConfigEntry_t **netConfigEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, netConfigIPAddress, sizeof(netConfigIPAddress)/sizeof(oid)); + snmp_add_null_var(request, netConfigSubnetMask, sizeof(netConfigSubnetMask)/sizeof(oid)); + snmp_add_null_var(request, netConfigStatus, sizeof(netConfigStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *netConfigEntry = (netConfigEntry_t *) malloc(sizeof(netConfigEntry_t)); + if (! *netConfigEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(netConfigIPAddress)/sizeof(oid) + && memcmp(vars->name, netConfigIPAddress, sizeof(netConfigIPAddress)) == 0) { + memcpy((*netConfigEntry)->__netConfigIPAddress, vars->val.string, vars->val_len); + (*netConfigEntry)->netConfigIPAddress = (*netConfigEntry)->__netConfigIPAddress; + } + if (vars->name_length > sizeof(netConfigSubnetMask)/sizeof(oid) + && memcmp(vars->name, netConfigSubnetMask, sizeof(netConfigSubnetMask)) == 0) { + memcpy((*netConfigEntry)->__netConfigSubnetMask, vars->val.string, vars->val_len); + (*netConfigEntry)->netConfigSubnetMask = (*netConfigEntry)->__netConfigSubnetMask; + } + if (vars->name_length > sizeof(netConfigStatus)/sizeof(oid) + && memcmp(vars->name, netConfigStatus, sizeof(netConfigStatus)) == 0) { + (*netConfigEntry)->__netConfigStatus = *vars->val.integer; + (*netConfigEntry)->netConfigStatus = &((*netConfigEntry)->__netConfigStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_trapDestEntry(struct snmp_session *s, trapDestEntry_t **trapDestEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, trapDestCommunity, sizeof(trapDestCommunity)/sizeof(oid)); + snmp_add_null_var(request, trapDestProtocol, sizeof(trapDestProtocol)/sizeof(oid)); + snmp_add_null_var(request, trapDestAddress, sizeof(trapDestAddress)/sizeof(oid)); + snmp_add_null_var(request, trapDestOwner, sizeof(trapDestOwner)/sizeof(oid)); + snmp_add_null_var(request, trapDestStatus, sizeof(trapDestStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *trapDestEntry = (trapDestEntry_t *) malloc(sizeof(trapDestEntry_t)); + if (! *trapDestEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(trapDestCommunity)/sizeof(oid) + && memcmp(vars->name, trapDestCommunity, sizeof(trapDestCommunity)) == 0) { + memcpy((*trapDestEntry)->__trapDestCommunity, vars->val.string, vars->val_len); + (*trapDestEntry)->_trapDestCommunityLength = vars->val_len; + (*trapDestEntry)->trapDestCommunity = (*trapDestEntry)->__trapDestCommunity; + } + if (vars->name_length > sizeof(trapDestProtocol)/sizeof(oid) + && memcmp(vars->name, trapDestProtocol, sizeof(trapDestProtocol)) == 0) { + (*trapDestEntry)->__trapDestProtocol = *vars->val.integer; + (*trapDestEntry)->trapDestProtocol = &((*trapDestEntry)->__trapDestProtocol); + } + if (vars->name_length > sizeof(trapDestAddress)/sizeof(oid) + && memcmp(vars->name, trapDestAddress, sizeof(trapDestAddress)) == 0) { + memcpy((*trapDestEntry)->__trapDestAddress, vars->val.string, vars->val_len); + (*trapDestEntry)->_trapDestAddressLength = vars->val_len; + (*trapDestEntry)->trapDestAddress = (*trapDestEntry)->__trapDestAddress; + } + if (vars->name_length > sizeof(trapDestOwner)/sizeof(oid) + && memcmp(vars->name, trapDestOwner, sizeof(trapDestOwner)) == 0) { + memcpy((*trapDestEntry)->__trapDestOwner, vars->val.string, vars->val_len); + (*trapDestEntry)->_trapDestOwnerLength = vars->val_len; + (*trapDestEntry)->trapDestOwner = (*trapDestEntry)->__trapDestOwner; + } + if (vars->name_length > sizeof(trapDestStatus)/sizeof(oid) + && memcmp(vars->name, trapDestStatus, sizeof(trapDestStatus)) == 0) { + (*trapDestEntry)->__trapDestStatus = *vars->val.integer; + (*trapDestEntry)->trapDestStatus = &((*trapDestEntry)->__trapDestStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int rmon2_mib_mgr_get_serialConnectionEntry(struct snmp_session *s, serialConnectionEntry_t **serialConnectionEntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, serialConnectDestIpAddress, sizeof(serialConnectDestIpAddress)/sizeof(oid)); + snmp_add_null_var(request, serialConnectType, sizeof(serialConnectType)/sizeof(oid)); + snmp_add_null_var(request, serialConnectDialString, sizeof(serialConnectDialString)/sizeof(oid)); + snmp_add_null_var(request, serialConnectSwitchConnectSeq, sizeof(serialConnectSwitchConnectSeq)/sizeof(oid)); + snmp_add_null_var(request, serialConnectSwitchDisconnectSeq, sizeof(serialConnectSwitchDisconnectSeq)/sizeof(oid)); + snmp_add_null_var(request, serialConnectSwitchResetSeq, sizeof(serialConnectSwitchResetSeq)/sizeof(oid)); + snmp_add_null_var(request, serialConnectOwner, sizeof(serialConnectOwner)/sizeof(oid)); + snmp_add_null_var(request, serialConnectStatus, sizeof(serialConnectStatus)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *serialConnectionEntry = (serialConnectionEntry_t *) malloc(sizeof(serialConnectionEntry_t)); + if (! *serialConnectionEntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(serialConnectDestIpAddress)/sizeof(oid) + && memcmp(vars->name, serialConnectDestIpAddress, sizeof(serialConnectDestIpAddress)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectDestIpAddress, vars->val.string, vars->val_len); + (*serialConnectionEntry)->serialConnectDestIpAddress = (*serialConnectionEntry)->__serialConnectDestIpAddress; + } + if (vars->name_length > sizeof(serialConnectType)/sizeof(oid) + && memcmp(vars->name, serialConnectType, sizeof(serialConnectType)) == 0) { + (*serialConnectionEntry)->__serialConnectType = *vars->val.integer; + (*serialConnectionEntry)->serialConnectType = &((*serialConnectionEntry)->__serialConnectType); + } + if (vars->name_length > sizeof(serialConnectDialString)/sizeof(oid) + && memcmp(vars->name, serialConnectDialString, sizeof(serialConnectDialString)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectDialString, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectDialStringLength = vars->val_len; + (*serialConnectionEntry)->serialConnectDialString = (*serialConnectionEntry)->__serialConnectDialString; + } + if (vars->name_length > sizeof(serialConnectSwitchConnectSeq)/sizeof(oid) + && memcmp(vars->name, serialConnectSwitchConnectSeq, sizeof(serialConnectSwitchConnectSeq)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectSwitchConnectSeq, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectSwitchConnectSeqLength = vars->val_len; + (*serialConnectionEntry)->serialConnectSwitchConnectSeq = (*serialConnectionEntry)->__serialConnectSwitchConnectSeq; + } + if (vars->name_length > sizeof(serialConnectSwitchDisconnectSeq)/sizeof(oid) + && memcmp(vars->name, serialConnectSwitchDisconnectSeq, sizeof(serialConnectSwitchDisconnectSeq)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectSwitchDisconnectSeq, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectSwitchDisconnectSeqLength = vars->val_len; + (*serialConnectionEntry)->serialConnectSwitchDisconnectSeq = (*serialConnectionEntry)->__serialConnectSwitchDisconnectSeq; + } + if (vars->name_length > sizeof(serialConnectSwitchResetSeq)/sizeof(oid) + && memcmp(vars->name, serialConnectSwitchResetSeq, sizeof(serialConnectSwitchResetSeq)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectSwitchResetSeq, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectSwitchResetSeqLength = vars->val_len; + (*serialConnectionEntry)->serialConnectSwitchResetSeq = (*serialConnectionEntry)->__serialConnectSwitchResetSeq; + } + if (vars->name_length > sizeof(serialConnectOwner)/sizeof(oid) + && memcmp(vars->name, serialConnectOwner, sizeof(serialConnectOwner)) == 0) { + memcpy((*serialConnectionEntry)->__serialConnectOwner, vars->val.string, vars->val_len); + (*serialConnectionEntry)->_serialConnectOwnerLength = vars->val_len; + (*serialConnectionEntry)->serialConnectOwner = (*serialConnectionEntry)->__serialConnectOwner; + } + if (vars->name_length > sizeof(serialConnectStatus)/sizeof(oid) + && memcmp(vars->name, serialConnectStatus, sizeof(serialConnectStatus)) == 0) { + (*serialConnectionEntry)->__serialConnectStatus = *vars->val.integer; + (*serialConnectionEntry)->serialConnectStatus = &((*serialConnectionEntry)->__serialConnectStatus); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + + diff --git a/test/dumps/netsnmp/rmon2-mib.h b/test/dumps/netsnmp/rmon2-mib.h new file mode 100644 index 0000000..46518bd --- /dev/null +++ b/test/dumps/netsnmp/rmon2-mib.h @@ -0,0 +1,1545 @@ +/* + * This C header file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP package. + * + * This header is derived from the RMON2-MIB module. + * + * $Id: rmon2-mib.h 4432 2006-05-29 16:21:11Z strauss $ + */ + +#ifndef _RMON2_MIB_H_ +#define _RMON2_MIB_H_ + +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +/* + * C type definitions for RMON2-MIB::etherStats2Entry. + */ + +typedef struct etherStats2Entry { + uint32_t *etherStatsDroppedFrames; + uint32_t *etherStatsCreateTime; + void *_clientData; /* pointer to client data structure */ + struct etherStats2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __etherStatsDroppedFrames; + uint32_t __etherStatsCreateTime; +} etherStats2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::etherStats2Entry. + */ + +extern int +rmon2_mib_mgr_get_etherStats2Entry(struct snmp_session *s, etherStats2Entry_t **etherStats2Entry); + +/* + * C agent interface stubs for RMON2-MIB::etherStats2Entry. + */ + +extern int +rmon2_mib_agt_read_etherStats2Entry(etherStats2Entry_t *etherStats2Entry); +extern int +rmon2_mib_agt_register_etherStats2Entry(); + +/* + * C type definitions for RMON2-MIB::tokenRingMLStats2Entry. + */ + +typedef struct tokenRingMLStats2Entry { + uint32_t *tokenRingMLStatsDroppedFrames; + uint32_t *tokenRingMLStatsCreateTime; + void *_clientData; /* pointer to client data structure */ + struct tokenRingMLStats2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __tokenRingMLStatsDroppedFrames; + uint32_t __tokenRingMLStatsCreateTime; +} tokenRingMLStats2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::tokenRingMLStats2Entry. + */ + +extern int +rmon2_mib_mgr_get_tokenRingMLStats2Entry(struct snmp_session *s, tokenRingMLStats2Entry_t **tokenRingMLStats2Entry); + +/* + * C agent interface stubs for RMON2-MIB::tokenRingMLStats2Entry. + */ + +extern int +rmon2_mib_agt_read_tokenRingMLStats2Entry(tokenRingMLStats2Entry_t *tokenRingMLStats2Entry); +extern int +rmon2_mib_agt_register_tokenRingMLStats2Entry(); + +/* + * C type definitions for RMON2-MIB::tokenRingPStats2Entry. + */ + +typedef struct tokenRingPStats2Entry { + uint32_t *tokenRingPStatsDroppedFrames; + uint32_t *tokenRingPStatsCreateTime; + void *_clientData; /* pointer to client data structure */ + struct tokenRingPStats2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __tokenRingPStatsDroppedFrames; + uint32_t __tokenRingPStatsCreateTime; +} tokenRingPStats2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::tokenRingPStats2Entry. + */ + +extern int +rmon2_mib_mgr_get_tokenRingPStats2Entry(struct snmp_session *s, tokenRingPStats2Entry_t **tokenRingPStats2Entry); + +/* + * C agent interface stubs for RMON2-MIB::tokenRingPStats2Entry. + */ + +extern int +rmon2_mib_agt_read_tokenRingPStats2Entry(tokenRingPStats2Entry_t *tokenRingPStats2Entry); +extern int +rmon2_mib_agt_register_tokenRingPStats2Entry(); + +/* + * C type definitions for RMON2-MIB::historyControl2Entry. + */ + +typedef struct historyControl2Entry { + uint32_t *historyControlDroppedFrames; + void *_clientData; /* pointer to client data structure */ + struct historyControl2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __historyControlDroppedFrames; +} historyControl2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::historyControl2Entry. + */ + +extern int +rmon2_mib_mgr_get_historyControl2Entry(struct snmp_session *s, historyControl2Entry_t **historyControl2Entry); + +/* + * C agent interface stubs for RMON2-MIB::historyControl2Entry. + */ + +extern int +rmon2_mib_agt_read_historyControl2Entry(historyControl2Entry_t *historyControl2Entry); +extern int +rmon2_mib_agt_register_historyControl2Entry(); + +/* + * C type definitions for RMON2-MIB::hostControl2Entry. + */ + +typedef struct hostControl2Entry { + uint32_t *hostControlDroppedFrames; + uint32_t *hostControlCreateTime; + void *_clientData; /* pointer to client data structure */ + struct hostControl2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __hostControlDroppedFrames; + uint32_t __hostControlCreateTime; +} hostControl2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::hostControl2Entry. + */ + +extern int +rmon2_mib_mgr_get_hostControl2Entry(struct snmp_session *s, hostControl2Entry_t **hostControl2Entry); + +/* + * C agent interface stubs for RMON2-MIB::hostControl2Entry. + */ + +extern int +rmon2_mib_agt_read_hostControl2Entry(hostControl2Entry_t *hostControl2Entry); +extern int +rmon2_mib_agt_register_hostControl2Entry(); + +/* + * C type definitions for RMON2-MIB::matrixControl2Entry. + */ + +typedef struct matrixControl2Entry { + uint32_t *matrixControlDroppedFrames; + uint32_t *matrixControlCreateTime; + void *_clientData; /* pointer to client data structure */ + struct matrixControl2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __matrixControlDroppedFrames; + uint32_t __matrixControlCreateTime; +} matrixControl2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::matrixControl2Entry. + */ + +extern int +rmon2_mib_mgr_get_matrixControl2Entry(struct snmp_session *s, matrixControl2Entry_t **matrixControl2Entry); + +/* + * C agent interface stubs for RMON2-MIB::matrixControl2Entry. + */ + +extern int +rmon2_mib_agt_read_matrixControl2Entry(matrixControl2Entry_t *matrixControl2Entry); +extern int +rmon2_mib_agt_register_matrixControl2Entry(); + +/* + * C type definitions for RMON2-MIB::channel2Entry. + */ + +typedef struct channel2Entry { + uint32_t *channelDroppedFrames; + uint32_t *channelCreateTime; + void *_clientData; /* pointer to client data structure */ + struct channel2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __channelDroppedFrames; + uint32_t __channelCreateTime; +} channel2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::channel2Entry. + */ + +extern int +rmon2_mib_mgr_get_channel2Entry(struct snmp_session *s, channel2Entry_t **channel2Entry); + +/* + * C agent interface stubs for RMON2-MIB::channel2Entry. + */ + +extern int +rmon2_mib_agt_read_channel2Entry(channel2Entry_t *channel2Entry); +extern int +rmon2_mib_agt_register_channel2Entry(); + +/* + * C type definitions for RMON2-MIB::filter2Entry. + */ + +typedef struct filter2Entry { + int32_t *filterProtocolDirDataLocalIndex; + int32_t *filterProtocolDirLocalIndex; + void *_clientData; /* pointer to client data structure */ + struct filter2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __filterProtocolDirDataLocalIndex; + int32_t __filterProtocolDirLocalIndex; +} filter2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::filter2Entry. + */ + +extern int +rmon2_mib_mgr_get_filter2Entry(struct snmp_session *s, filter2Entry_t **filter2Entry); + +/* + * C agent interface stubs for RMON2-MIB::filter2Entry. + */ + +extern int +rmon2_mib_agt_read_filter2Entry(filter2Entry_t *filter2Entry); +extern int +rmon2_mib_agt_register_filter2Entry(); + +/* + * C type definitions for RMON2-MIB::ringStationControl2Entry. + */ + +typedef struct ringStationControl2Entry { + uint32_t *ringStationControlDroppedFrames; + uint32_t *ringStationControlCreateTime; + void *_clientData; /* pointer to client data structure */ + struct ringStationControl2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __ringStationControlDroppedFrames; + uint32_t __ringStationControlCreateTime; +} ringStationControl2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::ringStationControl2Entry. + */ + +extern int +rmon2_mib_mgr_get_ringStationControl2Entry(struct snmp_session *s, ringStationControl2Entry_t **ringStationControl2Entry); + +/* + * C agent interface stubs for RMON2-MIB::ringStationControl2Entry. + */ + +extern int +rmon2_mib_agt_read_ringStationControl2Entry(ringStationControl2Entry_t *ringStationControl2Entry); +extern int +rmon2_mib_agt_register_ringStationControl2Entry(); + +/* + * C type definitions for RMON2-MIB::sourceRoutingStats2Entry. + */ + +typedef struct sourceRoutingStats2Entry { + uint32_t *sourceRoutingStatsDroppedFrames; + uint32_t *sourceRoutingStatsCreateTime; + void *_clientData; /* pointer to client data structure */ + struct sourceRoutingStats2Entry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __sourceRoutingStatsDroppedFrames; + uint32_t __sourceRoutingStatsCreateTime; +} sourceRoutingStats2Entry_t; + +/* + * C manager interface stubs for RMON2-MIB::sourceRoutingStats2Entry. + */ + +extern int +rmon2_mib_mgr_get_sourceRoutingStats2Entry(struct snmp_session *s, sourceRoutingStats2Entry_t **sourceRoutingStats2Entry); + +/* + * C agent interface stubs for RMON2-MIB::sourceRoutingStats2Entry. + */ + +extern int +rmon2_mib_agt_read_sourceRoutingStats2Entry(sourceRoutingStats2Entry_t *sourceRoutingStats2Entry); +extern int +rmon2_mib_agt_register_sourceRoutingStats2Entry(); + +/* + * C type definitions for RMON2-MIB::protocolDir. + */ + +typedef struct protocolDir { + uint32_t *protocolDirLastChange; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + uint32_t __protocolDirLastChange; +} protocolDir_t; + +/* + * C manager interface stubs for RMON2-MIB::protocolDir. + */ + +extern int +rmon2_mib_mgr_get_protocolDir(struct snmp_session *s, protocolDir_t **protocolDir); + +/* + * C agent interface stubs for RMON2-MIB::protocolDir. + */ + +extern int +rmon2_mib_agt_read_protocolDir(protocolDir_t *protocolDir); +extern int +rmon2_mib_agt_register_protocolDir(); + +/* + * C type definitions for RMON2-MIB::protocolDirEntry. + */ + +typedef struct protocolDirEntry { + u_char *protocolDirID; + size_t _protocolDirIDLength; + u_char *protocolDirParameters; + size_t _protocolDirParametersLength; + int32_t *protocolDirLocalIndex; + u_char *protocolDirDescr; + size_t _protocolDirDescrLength; + u_char *protocolDirType; + size_t _protocolDirTypeLength; + int32_t *protocolDirAddressMapConfig; + int32_t *protocolDirHostConfig; + int32_t *protocolDirMatrixConfig; + u_char *protocolDirOwner; + size_t _protocolDirOwnerLength; + int32_t *protocolDirStatus; + void *_clientData; /* pointer to client data structure */ + struct protocolDirEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + u_char __protocolDirID[128]; + u_char __protocolDirParameters[32]; + int32_t __protocolDirLocalIndex; + u_char __protocolDirDescr[64]; + u_char __protocolDirType[1]; + int32_t __protocolDirAddressMapConfig; + int32_t __protocolDirHostConfig; + int32_t __protocolDirMatrixConfig; + u_char __protocolDirOwner[127]; + int32_t __protocolDirStatus; +} protocolDirEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::protocolDirEntry. + */ + +extern int +rmon2_mib_mgr_get_protocolDirEntry(struct snmp_session *s, protocolDirEntry_t **protocolDirEntry); + +/* + * C agent interface stubs for RMON2-MIB::protocolDirEntry. + */ + +extern int +rmon2_mib_agt_read_protocolDirEntry(protocolDirEntry_t *protocolDirEntry); +extern int +rmon2_mib_agt_register_protocolDirEntry(); + +/* + * C type definitions for RMON2-MIB::protocolDistControlEntry. + */ + +typedef struct protocolDistControlEntry { + int32_t *protocolDistControlIndex; + uint32_t *protocolDistControlDataSource; + size_t _protocolDistControlDataSourceLength; + uint32_t *protocolDistControlDroppedFrames; + uint32_t *protocolDistControlCreateTime; + u_char *protocolDistControlOwner; + size_t _protocolDistControlOwnerLength; + int32_t *protocolDistControlStatus; + void *_clientData; /* pointer to client data structure */ + struct protocolDistControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __protocolDistControlIndex; + uint32_t __protocolDistControlDataSource[128]; + uint32_t __protocolDistControlDroppedFrames; + uint32_t __protocolDistControlCreateTime; + u_char __protocolDistControlOwner[127]; + int32_t __protocolDistControlStatus; +} protocolDistControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::protocolDistControlEntry. + */ + +extern int +rmon2_mib_mgr_get_protocolDistControlEntry(struct snmp_session *s, protocolDistControlEntry_t **protocolDistControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::protocolDistControlEntry. + */ + +extern int +rmon2_mib_agt_read_protocolDistControlEntry(protocolDistControlEntry_t *protocolDistControlEntry); +extern int +rmon2_mib_agt_register_protocolDistControlEntry(); + +/* + * C type definitions for RMON2-MIB::protocolDistStatsEntry. + */ + +typedef struct protocolDistStatsEntry { + uint32_t *protocolDistStatsPkts; + uint32_t *protocolDistStatsOctets; + void *_clientData; /* pointer to client data structure */ + struct protocolDistStatsEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __protocolDistStatsPkts; + uint32_t __protocolDistStatsOctets; +} protocolDistStatsEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::protocolDistStatsEntry. + */ + +extern int +rmon2_mib_mgr_get_protocolDistStatsEntry(struct snmp_session *s, protocolDistStatsEntry_t **protocolDistStatsEntry); + +/* + * C agent interface stubs for RMON2-MIB::protocolDistStatsEntry. + */ + +extern int +rmon2_mib_agt_read_protocolDistStatsEntry(protocolDistStatsEntry_t *protocolDistStatsEntry); +extern int +rmon2_mib_agt_register_protocolDistStatsEntry(); + +/* + * C type definitions for RMON2-MIB::addressMap. + */ + +typedef struct addressMap { + uint32_t *addressMapInserts; + uint32_t *addressMapDeletes; + int32_t *addressMapMaxDesiredEntries; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + uint32_t __addressMapInserts; + uint32_t __addressMapDeletes; + int32_t __addressMapMaxDesiredEntries; +} addressMap_t; + +/* + * C manager interface stubs for RMON2-MIB::addressMap. + */ + +extern int +rmon2_mib_mgr_get_addressMap(struct snmp_session *s, addressMap_t **addressMap); + +/* + * C agent interface stubs for RMON2-MIB::addressMap. + */ + +extern int +rmon2_mib_agt_read_addressMap(addressMap_t *addressMap); +extern int +rmon2_mib_agt_register_addressMap(); + +/* + * C type definitions for RMON2-MIB::addressMapControlEntry. + */ + +typedef struct addressMapControlEntry { + int32_t *addressMapControlIndex; + uint32_t *addressMapControlDataSource; + size_t _addressMapControlDataSourceLength; + uint32_t *addressMapControlDroppedFrames; + u_char *addressMapControlOwner; + size_t _addressMapControlOwnerLength; + int32_t *addressMapControlStatus; + void *_clientData; /* pointer to client data structure */ + struct addressMapControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __addressMapControlIndex; + uint32_t __addressMapControlDataSource[128]; + uint32_t __addressMapControlDroppedFrames; + u_char __addressMapControlOwner[127]; + int32_t __addressMapControlStatus; +} addressMapControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::addressMapControlEntry. + */ + +extern int +rmon2_mib_mgr_get_addressMapControlEntry(struct snmp_session *s, addressMapControlEntry_t **addressMapControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::addressMapControlEntry. + */ + +extern int +rmon2_mib_agt_read_addressMapControlEntry(addressMapControlEntry_t *addressMapControlEntry); +extern int +rmon2_mib_agt_register_addressMapControlEntry(); + +/* + * C type definitions for RMON2-MIB::addressMapEntry. + */ + +typedef struct addressMapEntry { + uint32_t *addressMapTimeMark; + u_char *addressMapNetworkAddress; + size_t _addressMapNetworkAddressLength; + uint32_t *addressMapSource; + size_t _addressMapSourceLength; + u_char *addressMapPhysicalAddress; + size_t _addressMapPhysicalAddressLength; + uint32_t *addressMapLastChange; + void *_clientData; /* pointer to client data structure */ + struct addressMapEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __addressMapTimeMark; + u_char __addressMapNetworkAddress[255]; + uint32_t __addressMapSource[128]; + u_char __addressMapPhysicalAddress[65535]; + uint32_t __addressMapLastChange; +} addressMapEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::addressMapEntry. + */ + +extern int +rmon2_mib_mgr_get_addressMapEntry(struct snmp_session *s, addressMapEntry_t **addressMapEntry); + +/* + * C agent interface stubs for RMON2-MIB::addressMapEntry. + */ + +extern int +rmon2_mib_agt_read_addressMapEntry(addressMapEntry_t *addressMapEntry); +extern int +rmon2_mib_agt_register_addressMapEntry(); + +/* + * C type definitions for RMON2-MIB::hlHostControlEntry. + */ + +typedef struct hlHostControlEntry { + int32_t *hlHostControlIndex; + uint32_t *hlHostControlDataSource; + size_t _hlHostControlDataSourceLength; + uint32_t *hlHostControlNlDroppedFrames; + uint32_t *hlHostControlNlInserts; + uint32_t *hlHostControlNlDeletes; + int32_t *hlHostControlNlMaxDesiredEntries; + uint32_t *hlHostControlAlDroppedFrames; + uint32_t *hlHostControlAlInserts; + uint32_t *hlHostControlAlDeletes; + int32_t *hlHostControlAlMaxDesiredEntries; + u_char *hlHostControlOwner; + size_t _hlHostControlOwnerLength; + int32_t *hlHostControlStatus; + void *_clientData; /* pointer to client data structure */ + struct hlHostControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __hlHostControlIndex; + uint32_t __hlHostControlDataSource[128]; + uint32_t __hlHostControlNlDroppedFrames; + uint32_t __hlHostControlNlInserts; + uint32_t __hlHostControlNlDeletes; + int32_t __hlHostControlNlMaxDesiredEntries; + uint32_t __hlHostControlAlDroppedFrames; + uint32_t __hlHostControlAlInserts; + uint32_t __hlHostControlAlDeletes; + int32_t __hlHostControlAlMaxDesiredEntries; + u_char __hlHostControlOwner[127]; + int32_t __hlHostControlStatus; +} hlHostControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::hlHostControlEntry. + */ + +extern int +rmon2_mib_mgr_get_hlHostControlEntry(struct snmp_session *s, hlHostControlEntry_t **hlHostControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::hlHostControlEntry. + */ + +extern int +rmon2_mib_agt_read_hlHostControlEntry(hlHostControlEntry_t *hlHostControlEntry); +extern int +rmon2_mib_agt_register_hlHostControlEntry(); + +/* + * C type definitions for RMON2-MIB::nlHostEntry. + */ + +typedef struct nlHostEntry { + uint32_t *nlHostTimeMark; + u_char *nlHostAddress; + size_t _nlHostAddressLength; + uint32_t *nlHostInPkts; + uint32_t *nlHostOutPkts; + uint32_t *nlHostInOctets; + uint32_t *nlHostOutOctets; + uint32_t *nlHostOutMacNonUnicastPkts; + uint32_t *nlHostCreateTime; + void *_clientData; /* pointer to client data structure */ + struct nlHostEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __nlHostTimeMark; + u_char __nlHostAddress[255]; + uint32_t __nlHostInPkts; + uint32_t __nlHostOutPkts; + uint32_t __nlHostInOctets; + uint32_t __nlHostOutOctets; + uint32_t __nlHostOutMacNonUnicastPkts; + uint32_t __nlHostCreateTime; +} nlHostEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlHostEntry. + */ + +extern int +rmon2_mib_mgr_get_nlHostEntry(struct snmp_session *s, nlHostEntry_t **nlHostEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlHostEntry. + */ + +extern int +rmon2_mib_agt_read_nlHostEntry(nlHostEntry_t *nlHostEntry); +extern int +rmon2_mib_agt_register_nlHostEntry(); + +/* + * C type definitions for RMON2-MIB::hlMatrixControlEntry. + */ + +typedef struct hlMatrixControlEntry { + int32_t *hlMatrixControlIndex; + uint32_t *hlMatrixControlDataSource; + size_t _hlMatrixControlDataSourceLength; + uint32_t *hlMatrixControlNlDroppedFrames; + uint32_t *hlMatrixControlNlInserts; + uint32_t *hlMatrixControlNlDeletes; + int32_t *hlMatrixControlNlMaxDesiredEntries; + uint32_t *hlMatrixControlAlDroppedFrames; + uint32_t *hlMatrixControlAlInserts; + uint32_t *hlMatrixControlAlDeletes; + int32_t *hlMatrixControlAlMaxDesiredEntries; + u_char *hlMatrixControlOwner; + size_t _hlMatrixControlOwnerLength; + int32_t *hlMatrixControlStatus; + void *_clientData; /* pointer to client data structure */ + struct hlMatrixControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __hlMatrixControlIndex; + uint32_t __hlMatrixControlDataSource[128]; + uint32_t __hlMatrixControlNlDroppedFrames; + uint32_t __hlMatrixControlNlInserts; + uint32_t __hlMatrixControlNlDeletes; + int32_t __hlMatrixControlNlMaxDesiredEntries; + uint32_t __hlMatrixControlAlDroppedFrames; + uint32_t __hlMatrixControlAlInserts; + uint32_t __hlMatrixControlAlDeletes; + int32_t __hlMatrixControlAlMaxDesiredEntries; + u_char __hlMatrixControlOwner[127]; + int32_t __hlMatrixControlStatus; +} hlMatrixControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::hlMatrixControlEntry. + */ + +extern int +rmon2_mib_mgr_get_hlMatrixControlEntry(struct snmp_session *s, hlMatrixControlEntry_t **hlMatrixControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::hlMatrixControlEntry. + */ + +extern int +rmon2_mib_agt_read_hlMatrixControlEntry(hlMatrixControlEntry_t *hlMatrixControlEntry); +extern int +rmon2_mib_agt_register_hlMatrixControlEntry(); + +/* + * C type definitions for RMON2-MIB::nlMatrixSDEntry. + */ + +typedef struct nlMatrixSDEntry { + uint32_t *nlMatrixSDTimeMark; + u_char *nlMatrixSDSourceAddress; + size_t _nlMatrixSDSourceAddressLength; + u_char *nlMatrixSDDestAddress; + size_t _nlMatrixSDDestAddressLength; + uint32_t *nlMatrixSDPkts; + uint32_t *nlMatrixSDOctets; + uint32_t *nlMatrixSDCreateTime; + void *_clientData; /* pointer to client data structure */ + struct nlMatrixSDEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __nlMatrixSDTimeMark; + u_char __nlMatrixSDSourceAddress[255]; + u_char __nlMatrixSDDestAddress[255]; + uint32_t __nlMatrixSDPkts; + uint32_t __nlMatrixSDOctets; + uint32_t __nlMatrixSDCreateTime; +} nlMatrixSDEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlMatrixSDEntry. + */ + +extern int +rmon2_mib_mgr_get_nlMatrixSDEntry(struct snmp_session *s, nlMatrixSDEntry_t **nlMatrixSDEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlMatrixSDEntry. + */ + +extern int +rmon2_mib_agt_read_nlMatrixSDEntry(nlMatrixSDEntry_t *nlMatrixSDEntry); +extern int +rmon2_mib_agt_register_nlMatrixSDEntry(); + +/* + * C type definitions for RMON2-MIB::nlMatrixDSEntry. + */ + +typedef struct nlMatrixDSEntry { + uint32_t *nlMatrixDSTimeMark; + u_char *nlMatrixDSSourceAddress; + size_t _nlMatrixDSSourceAddressLength; + u_char *nlMatrixDSDestAddress; + size_t _nlMatrixDSDestAddressLength; + uint32_t *nlMatrixDSPkts; + uint32_t *nlMatrixDSOctets; + uint32_t *nlMatrixDSCreateTime; + void *_clientData; /* pointer to client data structure */ + struct nlMatrixDSEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __nlMatrixDSTimeMark; + u_char __nlMatrixDSSourceAddress[255]; + u_char __nlMatrixDSDestAddress[255]; + uint32_t __nlMatrixDSPkts; + uint32_t __nlMatrixDSOctets; + uint32_t __nlMatrixDSCreateTime; +} nlMatrixDSEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlMatrixDSEntry. + */ + +extern int +rmon2_mib_mgr_get_nlMatrixDSEntry(struct snmp_session *s, nlMatrixDSEntry_t **nlMatrixDSEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlMatrixDSEntry. + */ + +extern int +rmon2_mib_agt_read_nlMatrixDSEntry(nlMatrixDSEntry_t *nlMatrixDSEntry); +extern int +rmon2_mib_agt_register_nlMatrixDSEntry(); + +/* + * C type definitions for RMON2-MIB::nlMatrixTopNControlEntry. + */ + +typedef struct nlMatrixTopNControlEntry { + int32_t *nlMatrixTopNControlIndex; + int32_t *nlMatrixTopNControlMatrixIndex; + int32_t *nlMatrixTopNControlRateBase; + int32_t *nlMatrixTopNControlTimeRemaining; + uint32_t *nlMatrixTopNControlGeneratedReports; + int32_t *nlMatrixTopNControlDuration; + int32_t *nlMatrixTopNControlRequestedSize; + int32_t *nlMatrixTopNControlGrantedSize; + uint32_t *nlMatrixTopNControlStartTime; + u_char *nlMatrixTopNControlOwner; + size_t _nlMatrixTopNControlOwnerLength; + int32_t *nlMatrixTopNControlStatus; + void *_clientData; /* pointer to client data structure */ + struct nlMatrixTopNControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __nlMatrixTopNControlIndex; + int32_t __nlMatrixTopNControlMatrixIndex; + int32_t __nlMatrixTopNControlRateBase; + int32_t __nlMatrixTopNControlTimeRemaining; + uint32_t __nlMatrixTopNControlGeneratedReports; + int32_t __nlMatrixTopNControlDuration; + int32_t __nlMatrixTopNControlRequestedSize; + int32_t __nlMatrixTopNControlGrantedSize; + uint32_t __nlMatrixTopNControlStartTime; + u_char __nlMatrixTopNControlOwner[127]; + int32_t __nlMatrixTopNControlStatus; +} nlMatrixTopNControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlMatrixTopNControlEntry. + */ + +extern int +rmon2_mib_mgr_get_nlMatrixTopNControlEntry(struct snmp_session *s, nlMatrixTopNControlEntry_t **nlMatrixTopNControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlMatrixTopNControlEntry. + */ + +extern int +rmon2_mib_agt_read_nlMatrixTopNControlEntry(nlMatrixTopNControlEntry_t *nlMatrixTopNControlEntry); +extern int +rmon2_mib_agt_register_nlMatrixTopNControlEntry(); + +/* + * C type definitions for RMON2-MIB::nlMatrixTopNEntry. + */ + +typedef struct nlMatrixTopNEntry { + int32_t *nlMatrixTopNIndex; + int32_t *nlMatrixTopNProtocolDirLocalIndex; + u_char *nlMatrixTopNSourceAddress; + size_t _nlMatrixTopNSourceAddressLength; + u_char *nlMatrixTopNDestAddress; + size_t _nlMatrixTopNDestAddressLength; + uint32_t *nlMatrixTopNPktRate; + uint32_t *nlMatrixTopNReversePktRate; + uint32_t *nlMatrixTopNOctetRate; + uint32_t *nlMatrixTopNReverseOctetRate; + void *_clientData; /* pointer to client data structure */ + struct nlMatrixTopNEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __nlMatrixTopNIndex; + int32_t __nlMatrixTopNProtocolDirLocalIndex; + u_char __nlMatrixTopNSourceAddress[255]; + u_char __nlMatrixTopNDestAddress[255]; + uint32_t __nlMatrixTopNPktRate; + uint32_t __nlMatrixTopNReversePktRate; + uint32_t __nlMatrixTopNOctetRate; + uint32_t __nlMatrixTopNReverseOctetRate; +} nlMatrixTopNEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::nlMatrixTopNEntry. + */ + +extern int +rmon2_mib_mgr_get_nlMatrixTopNEntry(struct snmp_session *s, nlMatrixTopNEntry_t **nlMatrixTopNEntry); + +/* + * C agent interface stubs for RMON2-MIB::nlMatrixTopNEntry. + */ + +extern int +rmon2_mib_agt_read_nlMatrixTopNEntry(nlMatrixTopNEntry_t *nlMatrixTopNEntry); +extern int +rmon2_mib_agt_register_nlMatrixTopNEntry(); + +/* + * C type definitions for RMON2-MIB::alHostEntry. + */ + +typedef struct alHostEntry { + uint32_t *alHostTimeMark; + uint32_t *alHostInPkts; + uint32_t *alHostOutPkts; + uint32_t *alHostInOctets; + uint32_t *alHostOutOctets; + uint32_t *alHostCreateTime; + void *_clientData; /* pointer to client data structure */ + struct alHostEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __alHostTimeMark; + uint32_t __alHostInPkts; + uint32_t __alHostOutPkts; + uint32_t __alHostInOctets; + uint32_t __alHostOutOctets; + uint32_t __alHostCreateTime; +} alHostEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alHostEntry. + */ + +extern int +rmon2_mib_mgr_get_alHostEntry(struct snmp_session *s, alHostEntry_t **alHostEntry); + +/* + * C agent interface stubs for RMON2-MIB::alHostEntry. + */ + +extern int +rmon2_mib_agt_read_alHostEntry(alHostEntry_t *alHostEntry); +extern int +rmon2_mib_agt_register_alHostEntry(); + +/* + * C type definitions for RMON2-MIB::alMatrixSDEntry. + */ + +typedef struct alMatrixSDEntry { + uint32_t *alMatrixSDTimeMark; + uint32_t *alMatrixSDPkts; + uint32_t *alMatrixSDOctets; + uint32_t *alMatrixSDCreateTime; + void *_clientData; /* pointer to client data structure */ + struct alMatrixSDEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __alMatrixSDTimeMark; + uint32_t __alMatrixSDPkts; + uint32_t __alMatrixSDOctets; + uint32_t __alMatrixSDCreateTime; +} alMatrixSDEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alMatrixSDEntry. + */ + +extern int +rmon2_mib_mgr_get_alMatrixSDEntry(struct snmp_session *s, alMatrixSDEntry_t **alMatrixSDEntry); + +/* + * C agent interface stubs for RMON2-MIB::alMatrixSDEntry. + */ + +extern int +rmon2_mib_agt_read_alMatrixSDEntry(alMatrixSDEntry_t *alMatrixSDEntry); +extern int +rmon2_mib_agt_register_alMatrixSDEntry(); + +/* + * C type definitions for RMON2-MIB::alMatrixDSEntry. + */ + +typedef struct alMatrixDSEntry { + uint32_t *alMatrixDSTimeMark; + uint32_t *alMatrixDSPkts; + uint32_t *alMatrixDSOctets; + uint32_t *alMatrixDSCreateTime; + void *_clientData; /* pointer to client data structure */ + struct alMatrixDSEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + uint32_t __alMatrixDSTimeMark; + uint32_t __alMatrixDSPkts; + uint32_t __alMatrixDSOctets; + uint32_t __alMatrixDSCreateTime; +} alMatrixDSEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alMatrixDSEntry. + */ + +extern int +rmon2_mib_mgr_get_alMatrixDSEntry(struct snmp_session *s, alMatrixDSEntry_t **alMatrixDSEntry); + +/* + * C agent interface stubs for RMON2-MIB::alMatrixDSEntry. + */ + +extern int +rmon2_mib_agt_read_alMatrixDSEntry(alMatrixDSEntry_t *alMatrixDSEntry); +extern int +rmon2_mib_agt_register_alMatrixDSEntry(); + +/* + * C type definitions for RMON2-MIB::alMatrixTopNControlEntry. + */ + +typedef struct alMatrixTopNControlEntry { + int32_t *alMatrixTopNControlIndex; + int32_t *alMatrixTopNControlMatrixIndex; + int32_t *alMatrixTopNControlRateBase; + int32_t *alMatrixTopNControlTimeRemaining; + uint32_t *alMatrixTopNControlGeneratedReports; + int32_t *alMatrixTopNControlDuration; + int32_t *alMatrixTopNControlRequestedSize; + int32_t *alMatrixTopNControlGrantedSize; + uint32_t *alMatrixTopNControlStartTime; + u_char *alMatrixTopNControlOwner; + size_t _alMatrixTopNControlOwnerLength; + int32_t *alMatrixTopNControlStatus; + void *_clientData; /* pointer to client data structure */ + struct alMatrixTopNControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __alMatrixTopNControlIndex; + int32_t __alMatrixTopNControlMatrixIndex; + int32_t __alMatrixTopNControlRateBase; + int32_t __alMatrixTopNControlTimeRemaining; + uint32_t __alMatrixTopNControlGeneratedReports; + int32_t __alMatrixTopNControlDuration; + int32_t __alMatrixTopNControlRequestedSize; + int32_t __alMatrixTopNControlGrantedSize; + uint32_t __alMatrixTopNControlStartTime; + u_char __alMatrixTopNControlOwner[127]; + int32_t __alMatrixTopNControlStatus; +} alMatrixTopNControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alMatrixTopNControlEntry. + */ + +extern int +rmon2_mib_mgr_get_alMatrixTopNControlEntry(struct snmp_session *s, alMatrixTopNControlEntry_t **alMatrixTopNControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::alMatrixTopNControlEntry. + */ + +extern int +rmon2_mib_agt_read_alMatrixTopNControlEntry(alMatrixTopNControlEntry_t *alMatrixTopNControlEntry); +extern int +rmon2_mib_agt_register_alMatrixTopNControlEntry(); + +/* + * C type definitions for RMON2-MIB::alMatrixTopNEntry. + */ + +typedef struct alMatrixTopNEntry { + int32_t *alMatrixTopNIndex; + int32_t *alMatrixTopNProtocolDirLocalIndex; + u_char *alMatrixTopNSourceAddress; + size_t _alMatrixTopNSourceAddressLength; + u_char *alMatrixTopNDestAddress; + size_t _alMatrixTopNDestAddressLength; + int32_t *alMatrixTopNAppProtocolDirLocalIndex; + uint32_t *alMatrixTopNPktRate; + uint32_t *alMatrixTopNReversePktRate; + uint32_t *alMatrixTopNOctetRate; + uint32_t *alMatrixTopNReverseOctetRate; + void *_clientData; /* pointer to client data structure */ + struct alMatrixTopNEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __alMatrixTopNIndex; + int32_t __alMatrixTopNProtocolDirLocalIndex; + u_char __alMatrixTopNSourceAddress[255]; + u_char __alMatrixTopNDestAddress[255]; + int32_t __alMatrixTopNAppProtocolDirLocalIndex; + uint32_t __alMatrixTopNPktRate; + uint32_t __alMatrixTopNReversePktRate; + uint32_t __alMatrixTopNOctetRate; + uint32_t __alMatrixTopNReverseOctetRate; +} alMatrixTopNEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::alMatrixTopNEntry. + */ + +extern int +rmon2_mib_mgr_get_alMatrixTopNEntry(struct snmp_session *s, alMatrixTopNEntry_t **alMatrixTopNEntry); + +/* + * C agent interface stubs for RMON2-MIB::alMatrixTopNEntry. + */ + +extern int +rmon2_mib_agt_read_alMatrixTopNEntry(alMatrixTopNEntry_t *alMatrixTopNEntry); +extern int +rmon2_mib_agt_register_alMatrixTopNEntry(); + +/* + * C type definitions for RMON2-MIB::usrHistoryControlEntry. + */ + +typedef struct usrHistoryControlEntry { + int32_t *usrHistoryControlIndex; + int32_t *usrHistoryControlObjects; + int32_t *usrHistoryControlBucketsRequested; + int32_t *usrHistoryControlBucketsGranted; + int32_t *usrHistoryControlInterval; + u_char *usrHistoryControlOwner; + size_t _usrHistoryControlOwnerLength; + int32_t *usrHistoryControlStatus; + void *_clientData; /* pointer to client data structure */ + struct usrHistoryControlEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __usrHistoryControlIndex; + int32_t __usrHistoryControlObjects; + int32_t __usrHistoryControlBucketsRequested; + int32_t __usrHistoryControlBucketsGranted; + int32_t __usrHistoryControlInterval; + u_char __usrHistoryControlOwner[127]; + int32_t __usrHistoryControlStatus; +} usrHistoryControlEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::usrHistoryControlEntry. + */ + +extern int +rmon2_mib_mgr_get_usrHistoryControlEntry(struct snmp_session *s, usrHistoryControlEntry_t **usrHistoryControlEntry); + +/* + * C agent interface stubs for RMON2-MIB::usrHistoryControlEntry. + */ + +extern int +rmon2_mib_agt_read_usrHistoryControlEntry(usrHistoryControlEntry_t *usrHistoryControlEntry); +extern int +rmon2_mib_agt_register_usrHistoryControlEntry(); + +/* + * C type definitions for RMON2-MIB::usrHistoryObjectEntry. + */ + +typedef struct usrHistoryObjectEntry { + int32_t *usrHistoryObjectIndex; + uint32_t *usrHistoryObjectVariable; + size_t _usrHistoryObjectVariableLength; + int32_t *usrHistoryObjectSampleType; + void *_clientData; /* pointer to client data structure */ + struct usrHistoryObjectEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __usrHistoryObjectIndex; + uint32_t __usrHistoryObjectVariable[128]; + int32_t __usrHistoryObjectSampleType; +} usrHistoryObjectEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::usrHistoryObjectEntry. + */ + +extern int +rmon2_mib_mgr_get_usrHistoryObjectEntry(struct snmp_session *s, usrHistoryObjectEntry_t **usrHistoryObjectEntry); + +/* + * C agent interface stubs for RMON2-MIB::usrHistoryObjectEntry. + */ + +extern int +rmon2_mib_agt_read_usrHistoryObjectEntry(usrHistoryObjectEntry_t *usrHistoryObjectEntry); +extern int +rmon2_mib_agt_register_usrHistoryObjectEntry(); + +/* + * C type definitions for RMON2-MIB::usrHistoryEntry. + */ + +typedef struct usrHistoryEntry { + int32_t *usrHistorySampleIndex; + uint32_t *usrHistoryIntervalStart; + uint32_t *usrHistoryIntervalEnd; + uint32_t *usrHistoryAbsValue; + int32_t *usrHistoryValStatus; + void *_clientData; /* pointer to client data structure */ + struct usrHistoryEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __usrHistorySampleIndex; + uint32_t __usrHistoryIntervalStart; + uint32_t __usrHistoryIntervalEnd; + uint32_t __usrHistoryAbsValue; + int32_t __usrHistoryValStatus; +} usrHistoryEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::usrHistoryEntry. + */ + +extern int +rmon2_mib_mgr_get_usrHistoryEntry(struct snmp_session *s, usrHistoryEntry_t **usrHistoryEntry); + +/* + * C agent interface stubs for RMON2-MIB::usrHistoryEntry. + */ + +extern int +rmon2_mib_agt_read_usrHistoryEntry(usrHistoryEntry_t *usrHistoryEntry); +extern int +rmon2_mib_agt_register_usrHistoryEntry(); + +/* + * C type definitions for RMON2-MIB::probeConfig. + */ + +typedef struct probeConfig { + u_char *probeCapabilities; + size_t _probeCapabilitiesLength; + u_char *probeSoftwareRev; + size_t _probeSoftwareRevLength; + u_char *probeHardwareRev; + size_t _probeHardwareRevLength; + u_char *probeDateTime; + size_t _probeDateTimeLength; + int32_t *probeResetControl; + u_char *probeDownloadFile; + size_t _probeDownloadFileLength; + u_char *probeDownloadTFTPServer; + int32_t *probeDownloadAction; + int32_t *probeDownloadStatus; + u_char *netDefaultGateway; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + u_char __probeCapabilities[4]; + u_char __probeSoftwareRev[15]; + u_char __probeHardwareRev[31]; + u_char __probeDateTime[11]; + int32_t __probeResetControl; + u_char __probeDownloadFile[127]; + u_char __probeDownloadTFTPServer[4]; + int32_t __probeDownloadAction; + int32_t __probeDownloadStatus; + u_char __netDefaultGateway[4]; +} probeConfig_t; + +/* + * C manager interface stubs for RMON2-MIB::probeConfig. + */ + +extern int +rmon2_mib_mgr_get_probeConfig(struct snmp_session *s, probeConfig_t **probeConfig); + +/* + * C agent interface stubs for RMON2-MIB::probeConfig. + */ + +extern int +rmon2_mib_agt_read_probeConfig(probeConfig_t *probeConfig); +extern int +rmon2_mib_agt_register_probeConfig(); + +/* + * C type definitions for RMON2-MIB::serialConfigEntry. + */ + +typedef struct serialConfigEntry { + int32_t *serialMode; + int32_t *serialProtocol; + int32_t *serialTimeout; + u_char *serialModemInitString; + size_t _serialModemInitStringLength; + u_char *serialModemHangUpString; + size_t _serialModemHangUpStringLength; + u_char *serialModemConnectResp; + size_t _serialModemConnectRespLength; + u_char *serialModemNoConnectResp; + size_t _serialModemNoConnectRespLength; + int32_t *serialDialoutTimeout; + int32_t *serialStatus; + void *_clientData; /* pointer to client data structure */ + struct serialConfigEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __serialMode; + int32_t __serialProtocol; + int32_t __serialTimeout; + u_char __serialModemInitString[255]; + u_char __serialModemHangUpString[255]; + u_char __serialModemConnectResp[255]; + u_char __serialModemNoConnectResp[255]; + int32_t __serialDialoutTimeout; + int32_t __serialStatus; +} serialConfigEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::serialConfigEntry. + */ + +extern int +rmon2_mib_mgr_get_serialConfigEntry(struct snmp_session *s, serialConfigEntry_t **serialConfigEntry); + +/* + * C agent interface stubs for RMON2-MIB::serialConfigEntry. + */ + +extern int +rmon2_mib_agt_read_serialConfigEntry(serialConfigEntry_t *serialConfigEntry); +extern int +rmon2_mib_agt_register_serialConfigEntry(); + +/* + * C type definitions for RMON2-MIB::netConfigEntry. + */ + +typedef struct netConfigEntry { + u_char *netConfigIPAddress; + u_char *netConfigSubnetMask; + int32_t *netConfigStatus; + void *_clientData; /* pointer to client data structure */ + struct netConfigEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + u_char __netConfigIPAddress[4]; + u_char __netConfigSubnetMask[4]; + int32_t __netConfigStatus; +} netConfigEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::netConfigEntry. + */ + +extern int +rmon2_mib_mgr_get_netConfigEntry(struct snmp_session *s, netConfigEntry_t **netConfigEntry); + +/* + * C agent interface stubs for RMON2-MIB::netConfigEntry. + */ + +extern int +rmon2_mib_agt_read_netConfigEntry(netConfigEntry_t *netConfigEntry); +extern int +rmon2_mib_agt_register_netConfigEntry(); + +/* + * C type definitions for RMON2-MIB::trapDestEntry. + */ + +typedef struct trapDestEntry { + int32_t *trapDestIndex; + u_char *trapDestCommunity; + size_t _trapDestCommunityLength; + int32_t *trapDestProtocol; + u_char *trapDestAddress; + size_t _trapDestAddressLength; + u_char *trapDestOwner; + size_t _trapDestOwnerLength; + int32_t *trapDestStatus; + void *_clientData; /* pointer to client data structure */ + struct trapDestEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __trapDestIndex; + u_char __trapDestCommunity[127]; + int32_t __trapDestProtocol; + u_char __trapDestAddress[65535]; + u_char __trapDestOwner[127]; + int32_t __trapDestStatus; +} trapDestEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::trapDestEntry. + */ + +extern int +rmon2_mib_mgr_get_trapDestEntry(struct snmp_session *s, trapDestEntry_t **trapDestEntry); + +/* + * C agent interface stubs for RMON2-MIB::trapDestEntry. + */ + +extern int +rmon2_mib_agt_read_trapDestEntry(trapDestEntry_t *trapDestEntry); +extern int +rmon2_mib_agt_register_trapDestEntry(); + +/* + * C type definitions for RMON2-MIB::serialConnectionEntry. + */ + +typedef struct serialConnectionEntry { + int32_t *serialConnectIndex; + u_char *serialConnectDestIpAddress; + int32_t *serialConnectType; + u_char *serialConnectDialString; + size_t _serialConnectDialStringLength; + u_char *serialConnectSwitchConnectSeq; + size_t _serialConnectSwitchConnectSeqLength; + u_char *serialConnectSwitchDisconnectSeq; + size_t _serialConnectSwitchDisconnectSeqLength; + u_char *serialConnectSwitchResetSeq; + size_t _serialConnectSwitchResetSeqLength; + u_char *serialConnectOwner; + size_t _serialConnectOwnerLength; + int32_t *serialConnectStatus; + void *_clientData; /* pointer to client data structure */ + struct serialConnectionEntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __serialConnectIndex; + u_char __serialConnectDestIpAddress[4]; + int32_t __serialConnectType; + u_char __serialConnectDialString[255]; + u_char __serialConnectSwitchConnectSeq[255]; + u_char __serialConnectSwitchDisconnectSeq[255]; + u_char __serialConnectSwitchResetSeq[255]; + u_char __serialConnectOwner[127]; + int32_t __serialConnectStatus; +} serialConnectionEntry_t; + +/* + * C manager interface stubs for RMON2-MIB::serialConnectionEntry. + */ + +extern int +rmon2_mib_mgr_get_serialConnectionEntry(struct snmp_session *s, serialConnectionEntry_t **serialConnectionEntry); + +/* + * C agent interface stubs for RMON2-MIB::serialConnectionEntry. + */ + +extern int +rmon2_mib_agt_read_serialConnectionEntry(serialConnectionEntry_t *serialConnectionEntry); +extern int +rmon2_mib_agt_register_serialConnectionEntry(); + + +typedef struct rmon2_mib { + etherStats2Entry_t *etherStats2Entry; + tokenRingMLStats2Entry_t *tokenRingMLStats2Entry; + tokenRingPStats2Entry_t *tokenRingPStats2Entry; + historyControl2Entry_t *historyControl2Entry; + hostControl2Entry_t *hostControl2Entry; + matrixControl2Entry_t *matrixControl2Entry; + channel2Entry_t *channel2Entry; + filter2Entry_t *filter2Entry; + ringStationControl2Entry_t *ringStationControl2Entry; + sourceRoutingStats2Entry_t *sourceRoutingStats2Entry; + protocolDir_t protocolDir; + protocolDirEntry_t *protocolDirEntry; + protocolDistControlEntry_t *protocolDistControlEntry; + protocolDistStatsEntry_t *protocolDistStatsEntry; + addressMap_t addressMap; + addressMapControlEntry_t *addressMapControlEntry; + addressMapEntry_t *addressMapEntry; + hlHostControlEntry_t *hlHostControlEntry; + nlHostEntry_t *nlHostEntry; + hlMatrixControlEntry_t *hlMatrixControlEntry; + nlMatrixSDEntry_t *nlMatrixSDEntry; + nlMatrixDSEntry_t *nlMatrixDSEntry; + nlMatrixTopNControlEntry_t *nlMatrixTopNControlEntry; + nlMatrixTopNEntry_t *nlMatrixTopNEntry; + alHostEntry_t *alHostEntry; + alMatrixSDEntry_t *alMatrixSDEntry; + alMatrixDSEntry_t *alMatrixDSEntry; + alMatrixTopNControlEntry_t *alMatrixTopNControlEntry; + alMatrixTopNEntry_t *alMatrixTopNEntry; + usrHistoryControlEntry_t *usrHistoryControlEntry; + usrHistoryObjectEntry_t *usrHistoryObjectEntry; + usrHistoryEntry_t *usrHistoryEntry; + probeConfig_t probeConfig; + serialConfigEntry_t *serialConfigEntry; + netConfigEntry_t *netConfigEntry; + trapDestEntry_t *trapDestEntry; + serialConnectionEntry_t *serialConnectionEntry; +} rmon2_mib_t; + +/* + * Initialization function: + */ + +void rmon2_mib_agt_init(void); + +#endif /* _RMON2_MIB_H_ */ diff --git a/test/dumps/netsnmp/snmpv2-mib-agt-stub.c b/test/dumps/netsnmp/snmpv2-mib-agt-stub.c new file mode 100644 index 0000000..23008bd --- /dev/null +++ b/test/dumps/netsnmp/snmpv2-mib-agt-stub.c @@ -0,0 +1,548 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the SNMPv2-MIB module. + * + * $Id: snmpv2-mib-agt-stub.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "snmpv2-mib.h" + +#include +#include +#include +#include +#include + +/* + * Forward declaration of read methods for groups of scalars and tables: + */ + +static unsigned char * +read_system_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_sysOREntry_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_snmp_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); +static unsigned char * +read_snmpSet_stub(struct variable *, oid *, size_t *, int, size_t *, WriteMethod **); + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_sysContact_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_sysName_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_sysLocation_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_snmpEnableAuthenTraps_stub(int, u_char *, u_char, int, u_char *, oid *, int); +static int +write_snmpSetSerialNo_stub(int, u_char *, u_char, int, u_char *, oid *, int); + +/* + * Definitions of tags that are used internally to read/write + * the selected object type. These tags should be unique. + */ + +#define SYSDESCR 1 +#define SYSOBJECTID 2 +#define SYSUPTIME 3 +#define SYSCONTACT 4 +#define SYSNAME 5 +#define SYSLOCATION 6 +#define SYSSERVICES 7 +#define SYSORLASTCHANGE 8 + +static oid system_base[] = {1, 3, 6, 1, 2, 1, 1}; + +struct variable system_variables[] = { + { SYSDESCR, ASN_OCTET_STR, RONLY, read_system_stub, 1, {1} }, + { SYSOBJECTID, ASN_OBJECT_ID, RONLY, read_system_stub, 1, {2} }, + { SYSUPTIME, ASN_INTEGER, RONLY, read_system_stub, 1, {3} }, + { SYSCONTACT, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {4} }, + { SYSNAME, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {5} }, + { SYSLOCATION, ASN_OCTET_STR, RWRITE, read_system_stub, 1, {6} }, + { SYSSERVICES, ASN_INTEGER, RONLY, read_system_stub, 1, {7} }, + { SYSORLASTCHANGE, ASN_INTEGER, RONLY, read_system_stub, 1, {8} }, +}; + +#define SYSORID 2 +#define SYSORDESCR 3 +#define SYSORUPTIME 4 + +static oid sysOREntry_base[] = {1, 3, 6, 1, 2, 1, 1, 9, 1}; + +struct variable sysOREntry_variables[] = { + { SYSORID, ASN_OBJECT_ID, RONLY, read_sysOREntry_stub, 1, {2} }, + { SYSORDESCR, ASN_OCTET_STR, RONLY, read_sysOREntry_stub, 1, {3} }, + { SYSORUPTIME, ASN_INTEGER, RONLY, read_sysOREntry_stub, 1, {4} }, +}; + +#define SNMPINPKTS 1 +#define SNMPOUTPKTS 2 +#define SNMPINBADVERSIONS 3 +#define SNMPINBADCOMMUNITYNAMES 4 +#define SNMPINBADCOMMUNITYUSES 5 +#define SNMPINASNPARSEERRS 6 +#define SNMPINTOOBIGS 8 +#define SNMPINNOSUCHNAMES 9 +#define SNMPINBADVALUES 10 +#define SNMPINREADONLYS 11 +#define SNMPINGENERRS 12 +#define SNMPINTOTALREQVARS 13 +#define SNMPINTOTALSETVARS 14 +#define SNMPINGETREQUESTS 15 +#define SNMPINGETNEXTS 16 +#define SNMPINSETREQUESTS 17 +#define SNMPINGETRESPONSES 18 +#define SNMPINTRAPS 19 +#define SNMPOUTTOOBIGS 20 +#define SNMPOUTNOSUCHNAMES 21 +#define SNMPOUTBADVALUES 22 +#define SNMPOUTGENERRS 24 +#define SNMPOUTGETREQUESTS 25 +#define SNMPOUTGETNEXTS 26 +#define SNMPOUTSETREQUESTS 27 +#define SNMPOUTGETRESPONSES 28 +#define SNMPOUTTRAPS 29 +#define SNMPENABLEAUTHENTRAPS 30 +#define SNMPSILENTDROPS 31 +#define SNMPPROXYDROPS 32 + +static oid snmp_base[] = {1, 3, 6, 1, 2, 1, 11}; + +struct variable snmp_variables[] = { + { SNMPINPKTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {1} }, + { SNMPOUTPKTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {2} }, + { SNMPINBADVERSIONS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {3} }, + { SNMPINBADCOMMUNITYNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {4} }, + { SNMPINBADCOMMUNITYUSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {5} }, + { SNMPINASNPARSEERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {6} }, + { SNMPINTOOBIGS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {8} }, + { SNMPINNOSUCHNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {9} }, + { SNMPINBADVALUES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {10} }, + { SNMPINREADONLYS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {11} }, + { SNMPINGENERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {12} }, + { SNMPINTOTALREQVARS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {13} }, + { SNMPINTOTALSETVARS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {14} }, + { SNMPINGETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {15} }, + { SNMPINGETNEXTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {16} }, + { SNMPINSETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {17} }, + { SNMPINGETRESPONSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {18} }, + { SNMPINTRAPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {19} }, + { SNMPOUTTOOBIGS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {20} }, + { SNMPOUTNOSUCHNAMES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {21} }, + { SNMPOUTBADVALUES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {22} }, + { SNMPOUTGENERRS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {24} }, + { SNMPOUTGETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {25} }, + { SNMPOUTGETNEXTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {26} }, + { SNMPOUTSETREQUESTS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {27} }, + { SNMPOUTGETRESPONSES, ASN_INTEGER, RONLY, read_snmp_stub, 1, {28} }, + { SNMPOUTTRAPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {29} }, + { SNMPENABLEAUTHENTRAPS, ASN_INTEGER, RWRITE, read_snmp_stub, 1, {30} }, + { SNMPSILENTDROPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {31} }, + { SNMPPROXYDROPS, ASN_INTEGER, RONLY, read_snmp_stub, 1, {32} }, +}; + + +#define SNMPSETSERIALNO 1 + +static oid snmpSet_base[] = {1, 3, 6, 1, 6, 3, 1, 1, 6}; + +struct variable snmpSet_variables[] = { + { SNMPSETSERIALNO, ASN_INTEGER, RWRITE, read_snmpSet_stub, 1, {1} }, +}; + + + +/* + * Registration functions for the various MIB groups. + */ + +int register_system() +{ + return register_mib("system", + system_variables, + sizeof(struct variable), + sizeof(system_variables)/sizeof(struct variable), + system_base, + sizeof(system_base)/sizeof(oid)); +}; + + +int register_sysOREntry() +{ + return register_mib("sysOREntry", + sysOREntry_variables, + sizeof(struct variable), + sizeof(sysOREntry_variables)/sizeof(struct variable), + sysOREntry_base, + sizeof(sysOREntry_base)/sizeof(oid)); +}; + + +int register_snmp() +{ + return register_mib("snmp", + snmp_variables, + sizeof(struct variable), + sizeof(snmp_variables)/sizeof(struct variable), + snmp_base, + sizeof(snmp_base)/sizeof(oid)); +}; + + +int register_snmpTrap() +{ + return register_mib("snmpTrap", + snmpTrap_variables, + sizeof(struct variable), + sizeof(snmpTrap_variables)/sizeof(struct variable), + snmpTrap_base, + sizeof(snmpTrap_base)/sizeof(oid)); +}; + + +int register_snmpSet() +{ + return register_mib("snmpSet", + snmpSet_variables, + sizeof(struct variable), + sizeof(snmpSet_variables)/sizeof(struct variable), + snmpSet_base, + sizeof(snmpSet_base)/sizeof(oid)); +}; + + +/* + * Read methods for groups of scalars and tables: + */ + +static unsigned char * +read_system_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static system_t system; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_system(&system); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SYSDESCR: + *var_len = system._sysDescrLength; + return (unsigned char *) system.sysDescr; + + case SYSOBJECTID: + *var_len = system._sysObjectIDLength; + return (unsigned char *) system.sysObjectID; + + case SYSUPTIME: + return (unsigned char *) &system.sysUpTime; + + case SYSCONTACT: + *var_len = system._sysContactLength; + return (unsigned char *) system.sysContact; + + case SYSNAME: + *var_len = system._sysNameLength; + return (unsigned char *) system.sysName; + + case SYSLOCATION: + *var_len = system._sysLocationLength; + return (unsigned char *) system.sysLocation; + + case SYSSERVICES: + return (unsigned char *) &system.sysServices; + + case SYSORLASTCHANGE: + return (unsigned char *) &system.sysORLastChange; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_sysOREntry_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static sysOREntry_t sysOREntry; + + /* call the user supplied function to retrieve values */ + + read_sysOREntry(&sysOREntry); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SYSORID: + *var_len = sysOREntry._sysORIDLength; + return (unsigned char *) sysOREntry.sysORID; + + case SYSORDESCR: + *var_len = sysOREntry._sysORDescrLength; + return (unsigned char *) sysOREntry.sysORDescr; + + case SYSORUPTIME: + return (unsigned char *) &sysOREntry.sysORUpTime; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_snmp_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static snmp_t snmp; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_snmp(&snmp); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SNMPINPKTS: + return (unsigned char *) &snmp.snmpInPkts; + + case SNMPOUTPKTS: + return (unsigned char *) &snmp.snmpOutPkts; + + case SNMPINBADVERSIONS: + return (unsigned char *) &snmp.snmpInBadVersions; + + case SNMPINBADCOMMUNITYNAMES: + return (unsigned char *) &snmp.snmpInBadCommunityNames; + + case SNMPINBADCOMMUNITYUSES: + return (unsigned char *) &snmp.snmpInBadCommunityUses; + + case SNMPINASNPARSEERRS: + return (unsigned char *) &snmp.snmpInASNParseErrs; + + case SNMPINTOOBIGS: + return (unsigned char *) &snmp.snmpInTooBigs; + + case SNMPINNOSUCHNAMES: + return (unsigned char *) &snmp.snmpInNoSuchNames; + + case SNMPINBADVALUES: + return (unsigned char *) &snmp.snmpInBadValues; + + case SNMPINREADONLYS: + return (unsigned char *) &snmp.snmpInReadOnlys; + + case SNMPINGENERRS: + return (unsigned char *) &snmp.snmpInGenErrs; + + case SNMPINTOTALREQVARS: + return (unsigned char *) &snmp.snmpInTotalReqVars; + + case SNMPINTOTALSETVARS: + return (unsigned char *) &snmp.snmpInTotalSetVars; + + case SNMPINGETREQUESTS: + return (unsigned char *) &snmp.snmpInGetRequests; + + case SNMPINGETNEXTS: + return (unsigned char *) &snmp.snmpInGetNexts; + + case SNMPINSETREQUESTS: + return (unsigned char *) &snmp.snmpInSetRequests; + + case SNMPINGETRESPONSES: + return (unsigned char *) &snmp.snmpInGetResponses; + + case SNMPINTRAPS: + return (unsigned char *) &snmp.snmpInTraps; + + case SNMPOUTTOOBIGS: + return (unsigned char *) &snmp.snmpOutTooBigs; + + case SNMPOUTNOSUCHNAMES: + return (unsigned char *) &snmp.snmpOutNoSuchNames; + + case SNMPOUTBADVALUES: + return (unsigned char *) &snmp.snmpOutBadValues; + + case SNMPOUTGENERRS: + return (unsigned char *) &snmp.snmpOutGenErrs; + + case SNMPOUTGETREQUESTS: + return (unsigned char *) &snmp.snmpOutGetRequests; + + case SNMPOUTGETNEXTS: + return (unsigned char *) &snmp.snmpOutGetNexts; + + case SNMPOUTSETREQUESTS: + return (unsigned char *) &snmp.snmpOutSetRequests; + + case SNMPOUTGETRESPONSES: + return (unsigned char *) &snmp.snmpOutGetResponses; + + case SNMPOUTTRAPS: + return (unsigned char *) &snmp.snmpOutTraps; + + case SNMPENABLEAUTHENTRAPS: + return (unsigned char *) &snmp.snmpEnableAuthenTraps; + + case SNMPSILENTDROPS: + return (unsigned char *) &snmp.snmpSilentDrops; + + case SNMPPROXYDROPS: + return (unsigned char *) &snmp.snmpProxyDrops; + + default: + ERROR_MSG(""); + } + + return NULL; +} + +static unsigned char * +read_snmpSet_stub(struct variable *vp, + oid *name, + size_t *length, + int exact, + size_t *var_len, + WriteMethod **write_method) +{ + static snmpSet_t snmpSet; + + /* check whether the instance identifier is valid */ + + if (header_generic(vp, name, length, exact, var_len, + write_method) == MATCH_FAILED) { + return NULL; + } + + /* call the user supplied function to retrieve values */ + + read_snmpSet(&snmpSet); + + /* return the current value of the variable */ + + switch (vp->magic) { + + case SNMPSETSERIALNO: + return (unsigned char *) &snmpSet.snmpSetSerialNo; + + default: + ERROR_MSG(""); + } + + return NULL; +} + + +/* + * Forward declaration of write methods for writable objects: + */ + +static int +write_sysContact_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_sysName_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_sysLocation_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_snmpEnableAuthenTraps_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + +static int +write_snmpSetSerialNo_stub(int action, + u_char *var_val, + u_char var_val_type, + int var_val_len, + u_char *statP, + oid *name, + int name_len) +{ + return SNMP_ERR_NOERROR; +} + + diff --git a/test/dumps/netsnmp/snmpv2-mib-agt.c b/test/dumps/netsnmp/snmpv2-mib-agt.c new file mode 100644 index 0000000..5cd9464 --- /dev/null +++ b/test/dumps/netsnmp/snmpv2-mib-agt.c @@ -0,0 +1,38 @@ +/* + * This C file has been generated by smidump 0.4.2-pre1. + * It is intended to be used with the NET-SNMP agent library. + * + * This C file is derived from the SNMPv2-MIB module. + * + * $Id: snmpv2-mib-agt.c 1606 2003-12-01 12:24:15Z strauss $ + */ + +#include +#include +#include + +#include "snmpv2-mib.h" + +#include +#include +#include +#include +#include + +static oid snmpv2_mib_caps[] = {0,0}; + +void init_snmpv2_mib(void) +{ +} + +void deinit_snmpv2_mib() +{ + unregister_sysORTable(snmpv2_mib_caps, sizeof(snmpv2_mib_caps)); +} + +int term_snmpv2_mib() +{ + deinit_snmpv2_mib(); + return 0; +} + diff --git a/test/dumps/netsnmp/snmpv2-mib-mgr-stub.c b/test/dumps/netsnmp/snmpv2-mib-mgr-stub.c new file mode 100644 index 0000000..487de74 --- /dev/null +++ b/test/dumps/netsnmp/snmpv2-mib-mgr-stub.c @@ -0,0 +1,480 @@ +/* + * This C file has been generated by smidump 0.4.5. + * It is intended to be used with the NET-SNMP library. + * + * This C file is derived from the SNMPv2-MIB module. + * + * $Id: snmpv2-mib-mgr-stub.c 7690 2008-02-05 15:31:35Z schoenw $ + */ + +#include + +#include +#include +#include +#include + +#include "snmpv2-mib.h" + +static oid sysDescr[] = {1, 3, 6, 1, 2, 1, 1, 1}; +static oid sysObjectID[] = {1, 3, 6, 1, 2, 1, 1, 2}; +static oid sysUpTime[] = {1, 3, 6, 1, 2, 1, 1, 3}; +static oid sysContact[] = {1, 3, 6, 1, 2, 1, 1, 4}; +static oid sysName[] = {1, 3, 6, 1, 2, 1, 1, 5}; +static oid sysLocation[] = {1, 3, 6, 1, 2, 1, 1, 6}; +static oid sysServices[] = {1, 3, 6, 1, 2, 1, 1, 7}; +static oid sysORLastChange[] = {1, 3, 6, 1, 2, 1, 1, 8}; +static oid sysORIndex[] = {1, 3, 6, 1, 2, 1, 1, 9, 1, 1}; +static oid sysORID[] = {1, 3, 6, 1, 2, 1, 1, 9, 1, 2}; +static oid sysORDescr[] = {1, 3, 6, 1, 2, 1, 1, 9, 1, 3}; +static oid sysORUpTime[] = {1, 3, 6, 1, 2, 1, 1, 9, 1, 4}; +static oid snmpInPkts[] = {1, 3, 6, 1, 2, 1, 11, 1}; +static oid snmpOutPkts[] = {1, 3, 6, 1, 2, 1, 11, 2}; +static oid snmpInBadVersions[] = {1, 3, 6, 1, 2, 1, 11, 3}; +static oid snmpInBadCommunityNames[] = {1, 3, 6, 1, 2, 1, 11, 4}; +static oid snmpInBadCommunityUses[] = {1, 3, 6, 1, 2, 1, 11, 5}; +static oid snmpInASNParseErrs[] = {1, 3, 6, 1, 2, 1, 11, 6}; +static oid snmpInTooBigs[] = {1, 3, 6, 1, 2, 1, 11, 8}; +static oid snmpInNoSuchNames[] = {1, 3, 6, 1, 2, 1, 11, 9}; +static oid snmpInBadValues[] = {1, 3, 6, 1, 2, 1, 11, 10}; +static oid snmpInReadOnlys[] = {1, 3, 6, 1, 2, 1, 11, 11}; +static oid snmpInGenErrs[] = {1, 3, 6, 1, 2, 1, 11, 12}; +static oid snmpInTotalReqVars[] = {1, 3, 6, 1, 2, 1, 11, 13}; +static oid snmpInTotalSetVars[] = {1, 3, 6, 1, 2, 1, 11, 14}; +static oid snmpInGetRequests[] = {1, 3, 6, 1, 2, 1, 11, 15}; +static oid snmpInGetNexts[] = {1, 3, 6, 1, 2, 1, 11, 16}; +static oid snmpInSetRequests[] = {1, 3, 6, 1, 2, 1, 11, 17}; +static oid snmpInGetResponses[] = {1, 3, 6, 1, 2, 1, 11, 18}; +static oid snmpInTraps[] = {1, 3, 6, 1, 2, 1, 11, 19}; +static oid snmpOutTooBigs[] = {1, 3, 6, 1, 2, 1, 11, 20}; +static oid snmpOutNoSuchNames[] = {1, 3, 6, 1, 2, 1, 11, 21}; +static oid snmpOutBadValues[] = {1, 3, 6, 1, 2, 1, 11, 22}; +static oid snmpOutGenErrs[] = {1, 3, 6, 1, 2, 1, 11, 24}; +static oid snmpOutGetRequests[] = {1, 3, 6, 1, 2, 1, 11, 25}; +static oid snmpOutGetNexts[] = {1, 3, 6, 1, 2, 1, 11, 26}; +static oid snmpOutSetRequests[] = {1, 3, 6, 1, 2, 1, 11, 27}; +static oid snmpOutGetResponses[] = {1, 3, 6, 1, 2, 1, 11, 28}; +static oid snmpOutTraps[] = {1, 3, 6, 1, 2, 1, 11, 29}; +static oid snmpEnableAuthenTraps[] = {1, 3, 6, 1, 2, 1, 11, 30}; +static oid snmpSilentDrops[] = {1, 3, 6, 1, 2, 1, 11, 31}; +static oid snmpProxyDrops[] = {1, 3, 6, 1, 2, 1, 11, 32}; +static oid snmpSetSerialNo[] = {1, 3, 6, 1, 6, 3, 1, 1, 6, 1}; + +int snmpv2_mib_mgr_get_system(struct snmp_session *s, system_t **system) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, sysDescr, sizeof(sysDescr)/sizeof(oid)); + snmp_add_null_var(request, sysObjectID, sizeof(sysObjectID)/sizeof(oid)); + snmp_add_null_var(request, sysUpTime, sizeof(sysUpTime)/sizeof(oid)); + snmp_add_null_var(request, sysContact, sizeof(sysContact)/sizeof(oid)); + snmp_add_null_var(request, sysName, sizeof(sysName)/sizeof(oid)); + snmp_add_null_var(request, sysLocation, sizeof(sysLocation)/sizeof(oid)); + snmp_add_null_var(request, sysServices, sizeof(sysServices)/sizeof(oid)); + snmp_add_null_var(request, sysORLastChange, sizeof(sysORLastChange)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *system = (system_t *) malloc(sizeof(system_t)); + if (! *system) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(sysDescr)/sizeof(oid) + && memcmp(vars->name, sysDescr, sizeof(sysDescr)) == 0) { + memcpy((*system)->__sysDescr, vars->val.string, vars->val_len); + (*system)->_sysDescrLength = vars->val_len; + (*system)->sysDescr = (*system)->__sysDescr; + } + if (vars->name_length > sizeof(sysObjectID)/sizeof(oid) + && memcmp(vars->name, sysObjectID, sizeof(sysObjectID)) == 0) { + } + if (vars->name_length > sizeof(sysUpTime)/sizeof(oid) + && memcmp(vars->name, sysUpTime, sizeof(sysUpTime)) == 0) { + (*system)->__sysUpTime = *vars->val.integer; + (*system)->sysUpTime = &((*system)->__sysUpTime); + } + if (vars->name_length > sizeof(sysContact)/sizeof(oid) + && memcmp(vars->name, sysContact, sizeof(sysContact)) == 0) { + memcpy((*system)->__sysContact, vars->val.string, vars->val_len); + (*system)->_sysContactLength = vars->val_len; + (*system)->sysContact = (*system)->__sysContact; + } + if (vars->name_length > sizeof(sysName)/sizeof(oid) + && memcmp(vars->name, sysName, sizeof(sysName)) == 0) { + memcpy((*system)->__sysName, vars->val.string, vars->val_len); + (*system)->_sysNameLength = vars->val_len; + (*system)->sysName = (*system)->__sysName; + } + if (vars->name_length > sizeof(sysLocation)/sizeof(oid) + && memcmp(vars->name, sysLocation, sizeof(sysLocation)) == 0) { + memcpy((*system)->__sysLocation, vars->val.string, vars->val_len); + (*system)->_sysLocationLength = vars->val_len; + (*system)->sysLocation = (*system)->__sysLocation; + } + if (vars->name_length > sizeof(sysServices)/sizeof(oid) + && memcmp(vars->name, sysServices, sizeof(sysServices)) == 0) { + (*system)->__sysServices = *vars->val.integer; + (*system)->sysServices = &((*system)->__sysServices); + } + if (vars->name_length > sizeof(sysORLastChange)/sizeof(oid) + && memcmp(vars->name, sysORLastChange, sizeof(sysORLastChange)) == 0) { + (*system)->__sysORLastChange = *vars->val.integer; + (*system)->sysORLastChange = &((*system)->__sysORLastChange); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int snmpv2_mib_mgr_get_sysOREntry(struct snmp_session *s, sysOREntry_t **sysOREntry) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, sysORID, sizeof(sysORID)/sizeof(oid)); + snmp_add_null_var(request, sysORDescr, sizeof(sysORDescr)/sizeof(oid)); + snmp_add_null_var(request, sysORUpTime, sizeof(sysORUpTime)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *sysOREntry = (sysOREntry_t *) malloc(sizeof(sysOREntry_t)); + if (! *sysOREntry) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(sysORID)/sizeof(oid) + && memcmp(vars->name, sysORID, sizeof(sysORID)) == 0) { + } + if (vars->name_length > sizeof(sysORDescr)/sizeof(oid) + && memcmp(vars->name, sysORDescr, sizeof(sysORDescr)) == 0) { + memcpy((*sysOREntry)->__sysORDescr, vars->val.string, vars->val_len); + (*sysOREntry)->_sysORDescrLength = vars->val_len; + (*sysOREntry)->sysORDescr = (*sysOREntry)->__sysORDescr; + } + if (vars->name_length > sizeof(sysORUpTime)/sizeof(oid) + && memcmp(vars->name, sysORUpTime, sizeof(sysORUpTime)) == 0) { + (*sysOREntry)->__sysORUpTime = *vars->val.integer; + (*sysOREntry)->sysORUpTime = &((*sysOREntry)->__sysORUpTime); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int snmpv2_mib_mgr_get_snmp(struct snmp_session *s, snmp_t **snmp) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, snmpInPkts, sizeof(snmpInPkts)/sizeof(oid)); + snmp_add_null_var(request, snmpOutPkts, sizeof(snmpOutPkts)/sizeof(oid)); + snmp_add_null_var(request, snmpInBadVersions, sizeof(snmpInBadVersions)/sizeof(oid)); + snmp_add_null_var(request, snmpInBadCommunityNames, sizeof(snmpInBadCommunityNames)/sizeof(oid)); + snmp_add_null_var(request, snmpInBadCommunityUses, sizeof(snmpInBadCommunityUses)/sizeof(oid)); + snmp_add_null_var(request, snmpInASNParseErrs, sizeof(snmpInASNParseErrs)/sizeof(oid)); + snmp_add_null_var(request, snmpInTooBigs, sizeof(snmpInTooBigs)/sizeof(oid)); + snmp_add_null_var(request, snmpInNoSuchNames, sizeof(snmpInNoSuchNames)/sizeof(oid)); + snmp_add_null_var(request, snmpInBadValues, sizeof(snmpInBadValues)/sizeof(oid)); + snmp_add_null_var(request, snmpInReadOnlys, sizeof(snmpInReadOnlys)/sizeof(oid)); + snmp_add_null_var(request, snmpInGenErrs, sizeof(snmpInGenErrs)/sizeof(oid)); + snmp_add_null_var(request, snmpInTotalReqVars, sizeof(snmpInTotalReqVars)/sizeof(oid)); + snmp_add_null_var(request, snmpInTotalSetVars, sizeof(snmpInTotalSetVars)/sizeof(oid)); + snmp_add_null_var(request, snmpInGetRequests, sizeof(snmpInGetRequests)/sizeof(oid)); + snmp_add_null_var(request, snmpInGetNexts, sizeof(snmpInGetNexts)/sizeof(oid)); + snmp_add_null_var(request, snmpInSetRequests, sizeof(snmpInSetRequests)/sizeof(oid)); + snmp_add_null_var(request, snmpInGetResponses, sizeof(snmpInGetResponses)/sizeof(oid)); + snmp_add_null_var(request, snmpInTraps, sizeof(snmpInTraps)/sizeof(oid)); + snmp_add_null_var(request, snmpOutTooBigs, sizeof(snmpOutTooBigs)/sizeof(oid)); + snmp_add_null_var(request, snmpOutNoSuchNames, sizeof(snmpOutNoSuchNames)/sizeof(oid)); + snmp_add_null_var(request, snmpOutBadValues, sizeof(snmpOutBadValues)/sizeof(oid)); + snmp_add_null_var(request, snmpOutGenErrs, sizeof(snmpOutGenErrs)/sizeof(oid)); + snmp_add_null_var(request, snmpOutGetRequests, sizeof(snmpOutGetRequests)/sizeof(oid)); + snmp_add_null_var(request, snmpOutGetNexts, sizeof(snmpOutGetNexts)/sizeof(oid)); + snmp_add_null_var(request, snmpOutSetRequests, sizeof(snmpOutSetRequests)/sizeof(oid)); + snmp_add_null_var(request, snmpOutGetResponses, sizeof(snmpOutGetResponses)/sizeof(oid)); + snmp_add_null_var(request, snmpOutTraps, sizeof(snmpOutTraps)/sizeof(oid)); + snmp_add_null_var(request, snmpEnableAuthenTraps, sizeof(snmpEnableAuthenTraps)/sizeof(oid)); + snmp_add_null_var(request, snmpSilentDrops, sizeof(snmpSilentDrops)/sizeof(oid)); + snmp_add_null_var(request, snmpProxyDrops, sizeof(snmpProxyDrops)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *snmp = (snmp_t *) malloc(sizeof(snmp_t)); + if (! *snmp) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(snmpInPkts)/sizeof(oid) + && memcmp(vars->name, snmpInPkts, sizeof(snmpInPkts)) == 0) { + (*snmp)->__snmpInPkts = *vars->val.integer; + (*snmp)->snmpInPkts = &((*snmp)->__snmpInPkts); + } + if (vars->name_length > sizeof(snmpOutPkts)/sizeof(oid) + && memcmp(vars->name, snmpOutPkts, sizeof(snmpOutPkts)) == 0) { + (*snmp)->__snmpOutPkts = *vars->val.integer; + (*snmp)->snmpOutPkts = &((*snmp)->__snmpOutPkts); + } + if (vars->name_length > sizeof(snmpInBadVersions)/sizeof(oid) + && memcmp(vars->name, snmpInBadVersions, sizeof(snmpInBadVersions)) == 0) { + (*snmp)->__snmpInBadVersions = *vars->val.integer; + (*snmp)->snmpInBadVersions = &((*snmp)->__snmpInBadVersions); + } + if (vars->name_length > sizeof(snmpInBadCommunityNames)/sizeof(oid) + && memcmp(vars->name, snmpInBadCommunityNames, sizeof(snmpInBadCommunityNames)) == 0) { + (*snmp)->__snmpInBadCommunityNames = *vars->val.integer; + (*snmp)->snmpInBadCommunityNames = &((*snmp)->__snmpInBadCommunityNames); + } + if (vars->name_length > sizeof(snmpInBadCommunityUses)/sizeof(oid) + && memcmp(vars->name, snmpInBadCommunityUses, sizeof(snmpInBadCommunityUses)) == 0) { + (*snmp)->__snmpInBadCommunityUses = *vars->val.integer; + (*snmp)->snmpInBadCommunityUses = &((*snmp)->__snmpInBadCommunityUses); + } + if (vars->name_length > sizeof(snmpInASNParseErrs)/sizeof(oid) + && memcmp(vars->name, snmpInASNParseErrs, sizeof(snmpInASNParseErrs)) == 0) { + (*snmp)->__snmpInASNParseErrs = *vars->val.integer; + (*snmp)->snmpInASNParseErrs = &((*snmp)->__snmpInASNParseErrs); + } + if (vars->name_length > sizeof(snmpInTooBigs)/sizeof(oid) + && memcmp(vars->name, snmpInTooBigs, sizeof(snmpInTooBigs)) == 0) { + (*snmp)->__snmpInTooBigs = *vars->val.integer; + (*snmp)->snmpInTooBigs = &((*snmp)->__snmpInTooBigs); + } + if (vars->name_length > sizeof(snmpInNoSuchNames)/sizeof(oid) + && memcmp(vars->name, snmpInNoSuchNames, sizeof(snmpInNoSuchNames)) == 0) { + (*snmp)->__snmpInNoSuchNames = *vars->val.integer; + (*snmp)->snmpInNoSuchNames = &((*snmp)->__snmpInNoSuchNames); + } + if (vars->name_length > sizeof(snmpInBadValues)/sizeof(oid) + && memcmp(vars->name, snmpInBadValues, sizeof(snmpInBadValues)) == 0) { + (*snmp)->__snmpInBadValues = *vars->val.integer; + (*snmp)->snmpInBadValues = &((*snmp)->__snmpInBadValues); + } + if (vars->name_length > sizeof(snmpInReadOnlys)/sizeof(oid) + && memcmp(vars->name, snmpInReadOnlys, sizeof(snmpInReadOnlys)) == 0) { + (*snmp)->__snmpInReadOnlys = *vars->val.integer; + (*snmp)->snmpInReadOnlys = &((*snmp)->__snmpInReadOnlys); + } + if (vars->name_length > sizeof(snmpInGenErrs)/sizeof(oid) + && memcmp(vars->name, snmpInGenErrs, sizeof(snmpInGenErrs)) == 0) { + (*snmp)->__snmpInGenErrs = *vars->val.integer; + (*snmp)->snmpInGenErrs = &((*snmp)->__snmpInGenErrs); + } + if (vars->name_length > sizeof(snmpInTotalReqVars)/sizeof(oid) + && memcmp(vars->name, snmpInTotalReqVars, sizeof(snmpInTotalReqVars)) == 0) { + (*snmp)->__snmpInTotalReqVars = *vars->val.integer; + (*snmp)->snmpInTotalReqVars = &((*snmp)->__snmpInTotalReqVars); + } + if (vars->name_length > sizeof(snmpInTotalSetVars)/sizeof(oid) + && memcmp(vars->name, snmpInTotalSetVars, sizeof(snmpInTotalSetVars)) == 0) { + (*snmp)->__snmpInTotalSetVars = *vars->val.integer; + (*snmp)->snmpInTotalSetVars = &((*snmp)->__snmpInTotalSetVars); + } + if (vars->name_length > sizeof(snmpInGetRequests)/sizeof(oid) + && memcmp(vars->name, snmpInGetRequests, sizeof(snmpInGetRequests)) == 0) { + (*snmp)->__snmpInGetRequests = *vars->val.integer; + (*snmp)->snmpInGetRequests = &((*snmp)->__snmpInGetRequests); + } + if (vars->name_length > sizeof(snmpInGetNexts)/sizeof(oid) + && memcmp(vars->name, snmpInGetNexts, sizeof(snmpInGetNexts)) == 0) { + (*snmp)->__snmpInGetNexts = *vars->val.integer; + (*snmp)->snmpInGetNexts = &((*snmp)->__snmpInGetNexts); + } + if (vars->name_length > sizeof(snmpInSetRequests)/sizeof(oid) + && memcmp(vars->name, snmpInSetRequests, sizeof(snmpInSetRequests)) == 0) { + (*snmp)->__snmpInSetRequests = *vars->val.integer; + (*snmp)->snmpInSetRequests = &((*snmp)->__snmpInSetRequests); + } + if (vars->name_length > sizeof(snmpInGetResponses)/sizeof(oid) + && memcmp(vars->name, snmpInGetResponses, sizeof(snmpInGetResponses)) == 0) { + (*snmp)->__snmpInGetResponses = *vars->val.integer; + (*snmp)->snmpInGetResponses = &((*snmp)->__snmpInGetResponses); + } + if (vars->name_length > sizeof(snmpInTraps)/sizeof(oid) + && memcmp(vars->name, snmpInTraps, sizeof(snmpInTraps)) == 0) { + (*snmp)->__snmpInTraps = *vars->val.integer; + (*snmp)->snmpInTraps = &((*snmp)->__snmpInTraps); + } + if (vars->name_length > sizeof(snmpOutTooBigs)/sizeof(oid) + && memcmp(vars->name, snmpOutTooBigs, sizeof(snmpOutTooBigs)) == 0) { + (*snmp)->__snmpOutTooBigs = *vars->val.integer; + (*snmp)->snmpOutTooBigs = &((*snmp)->__snmpOutTooBigs); + } + if (vars->name_length > sizeof(snmpOutNoSuchNames)/sizeof(oid) + && memcmp(vars->name, snmpOutNoSuchNames, sizeof(snmpOutNoSuchNames)) == 0) { + (*snmp)->__snmpOutNoSuchNames = *vars->val.integer; + (*snmp)->snmpOutNoSuchNames = &((*snmp)->__snmpOutNoSuchNames); + } + if (vars->name_length > sizeof(snmpOutBadValues)/sizeof(oid) + && memcmp(vars->name, snmpOutBadValues, sizeof(snmpOutBadValues)) == 0) { + (*snmp)->__snmpOutBadValues = *vars->val.integer; + (*snmp)->snmpOutBadValues = &((*snmp)->__snmpOutBadValues); + } + if (vars->name_length > sizeof(snmpOutGenErrs)/sizeof(oid) + && memcmp(vars->name, snmpOutGenErrs, sizeof(snmpOutGenErrs)) == 0) { + (*snmp)->__snmpOutGenErrs = *vars->val.integer; + (*snmp)->snmpOutGenErrs = &((*snmp)->__snmpOutGenErrs); + } + if (vars->name_length > sizeof(snmpOutGetRequests)/sizeof(oid) + && memcmp(vars->name, snmpOutGetRequests, sizeof(snmpOutGetRequests)) == 0) { + (*snmp)->__snmpOutGetRequests = *vars->val.integer; + (*snmp)->snmpOutGetRequests = &((*snmp)->__snmpOutGetRequests); + } + if (vars->name_length > sizeof(snmpOutGetNexts)/sizeof(oid) + && memcmp(vars->name, snmpOutGetNexts, sizeof(snmpOutGetNexts)) == 0) { + (*snmp)->__snmpOutGetNexts = *vars->val.integer; + (*snmp)->snmpOutGetNexts = &((*snmp)->__snmpOutGetNexts); + } + if (vars->name_length > sizeof(snmpOutSetRequests)/sizeof(oid) + && memcmp(vars->name, snmpOutSetRequests, sizeof(snmpOutSetRequests)) == 0) { + (*snmp)->__snmpOutSetRequests = *vars->val.integer; + (*snmp)->snmpOutSetRequests = &((*snmp)->__snmpOutSetRequests); + } + if (vars->name_length > sizeof(snmpOutGetResponses)/sizeof(oid) + && memcmp(vars->name, snmpOutGetResponses, sizeof(snmpOutGetResponses)) == 0) { + (*snmp)->__snmpOutGetResponses = *vars->val.integer; + (*snmp)->snmpOutGetResponses = &((*snmp)->__snmpOutGetResponses); + } + if (vars->name_length > sizeof(snmpOutTraps)/sizeof(oid) + && memcmp(vars->name, snmpOutTraps, sizeof(snmpOutTraps)) == 0) { + (*snmp)->__snmpOutTraps = *vars->val.integer; + (*snmp)->snmpOutTraps = &((*snmp)->__snmpOutTraps); + } + if (vars->name_length > sizeof(snmpEnableAuthenTraps)/sizeof(oid) + && memcmp(vars->name, snmpEnableAuthenTraps, sizeof(snmpEnableAuthenTraps)) == 0) { + (*snmp)->__snmpEnableAuthenTraps = *vars->val.integer; + (*snmp)->snmpEnableAuthenTraps = &((*snmp)->__snmpEnableAuthenTraps); + } + if (vars->name_length > sizeof(snmpSilentDrops)/sizeof(oid) + && memcmp(vars->name, snmpSilentDrops, sizeof(snmpSilentDrops)) == 0) { + (*snmp)->__snmpSilentDrops = *vars->val.integer; + (*snmp)->snmpSilentDrops = &((*snmp)->__snmpSilentDrops); + } + if (vars->name_length > sizeof(snmpProxyDrops)/sizeof(oid) + && memcmp(vars->name, snmpProxyDrops, sizeof(snmpProxyDrops)) == 0) { + (*snmp)->__snmpProxyDrops = *vars->val.integer; + (*snmp)->snmpProxyDrops = &((*snmp)->__snmpProxyDrops); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + +int snmpv2_mib_mgr_get_snmpSet(struct snmp_session *s, snmpSet_t **snmpSet) +{ + struct snmp_session *peer; + struct snmp_pdu *request, *response; + struct variable_list *vars; + int status; + + request = snmp_pdu_create(SNMP_MSG_GETNEXT); + snmp_add_null_var(request, snmpSetSerialNo, sizeof(snmpSetSerialNo)/sizeof(oid)); + + peer = snmp_open(s); + if (!peer) { + snmp_free_pdu(request); + return -1; + } + + status = snmp_synch_response(peer, request, &response); + if (status != STAT_SUCCESS) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -2; + } + + *snmpSet = (snmpSet_t *) malloc(sizeof(snmpSet_t)); + if (! *snmpSet) { + if (response) snmp_free_pdu(response); + snmp_close(peer); + return -4; + } + + for (vars = response->variables; vars; vars = vars->next_variable) { + if (vars->name_length > sizeof(snmpSetSerialNo)/sizeof(oid) + && memcmp(vars->name, snmpSetSerialNo, sizeof(snmpSetSerialNo)) == 0) { + (*snmpSet)->__snmpSetSerialNo = *vars->val.integer; + (*snmpSet)->snmpSetSerialNo = &((*snmpSet)->__snmpSetSerialNo); + } + } + + if (response) snmp_free_pdu(response); + + if (snmp_close(peer) == 0) { + return -5; + } + + return 0; +} + + diff --git a/test/dumps/netsnmp/snmpv2-mib.h b/test/dumps/netsnmp/snmpv2-mib.h new file mode 100644 index 0000000..cd8b404 --- /dev/null +++ b/test/dumps/netsnmp/snmpv2-mib.h @@ -0,0 +1,235 @@ +/* + * This C header file has been generated by smidump 0.2.17. + * It is intended to be used with the NET-SNMP package. + * + * This header is derived from the SNMPv2-MIB module. + * + * $Id: snmpv2-mib.h 1154 2001-08-24 10:09:18Z strauss $ + */ + +#ifndef _SNMPV2_MIB_H_ +#define _SNMPV2_MIB_H_ + +#include + +#ifdef HAVE_STDINT_H +#include +#endif + +/* + * C type definitions for SNMPv2-MIB::system. + */ + +typedef struct system { + u_char *sysDescr; + size_t _sysDescrLength; + uint32_t *sysObjectID; + size_t _sysObjectIDLength; + uint32_t *sysUpTime; + u_char *sysContact; + size_t _sysContactLength; + u_char *sysName; + size_t _sysNameLength; + u_char *sysLocation; + size_t _sysLocationLength; + int32_t *sysServices; + uint32_t *sysORLastChange; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + u_char __sysDescr[255]; + uint32_t __sysObjectID[128]; + uint32_t __sysUpTime; + u_char __sysContact[255]; + u_char __sysName[255]; + u_char __sysLocation[255]; + int32_t __sysServices; + uint32_t __sysORLastChange; +} system_t; + +/* + * C manager interface stubs for SNMPv2-MIB::system. + */ + +extern int +snmpv2_mib_mgr_get_system(struct snmp_session *s, system_t **system); + +/* + * C agent interface stubs for SNMPv2-MIB::system. + */ + +extern int +snmpv2_mib_agt_read_system(system_t *system); +extern int +snmpv2_mib_agt_register_system(); + +/* + * C type definitions for SNMPv2-MIB::sysOREntry. + */ + +typedef struct sysOREntry { + int32_t *sysORIndex; + uint32_t *sysORID; + size_t _sysORIDLength; + u_char *sysORDescr; + size_t _sysORDescrLength; + uint32_t *sysORUpTime; + void *_clientData; /* pointer to client data structure */ + struct sysOREntry *_nextPtr; /* pointer to next table entry */ + + /* private space to hold actual values */ + + int32_t __sysORIndex; + uint32_t __sysORID[128]; + u_char __sysORDescr[255]; + uint32_t __sysORUpTime; +} sysOREntry_t; + +/* + * C manager interface stubs for SNMPv2-MIB::sysOREntry. + */ + +extern int +snmpv2_mib_mgr_get_sysOREntry(struct snmp_session *s, sysOREntry_t **sysOREntry); + +/* + * C agent interface stubs for SNMPv2-MIB::sysOREntry. + */ + +extern int +snmpv2_mib_agt_read_sysOREntry(sysOREntry_t *sysOREntry); +extern int +snmpv2_mib_agt_register_sysOREntry(); + +/* + * C type definitions for SNMPv2-MIB::snmp. + */ + +typedef struct snmp { + uint32_t *snmpInPkts; + uint32_t *snmpOutPkts; + uint32_t *snmpInBadVersions; + uint32_t *snmpInBadCommunityNames; + uint32_t *snmpInBadCommunityUses; + uint32_t *snmpInASNParseErrs; + uint32_t *snmpInTooBigs; + uint32_t *snmpInNoSuchNames; + uint32_t *snmpInBadValues; + uint32_t *snmpInReadOnlys; + uint32_t *snmpInGenErrs; + uint32_t *snmpInTotalReqVars; + uint32_t *snmpInTotalSetVars; + uint32_t *snmpInGetRequests; + uint32_t *snmpInGetNexts; + uint32_t *snmpInSetRequests; + uint32_t *snmpInGetResponses; + uint32_t *snmpInTraps; + uint32_t *snmpOutTooBigs; + uint32_t *snmpOutNoSuchNames; + uint32_t *snmpOutBadValues; + uint32_t *snmpOutGenErrs; + uint32_t *snmpOutGetRequests; + uint32_t *snmpOutGetNexts; + uint32_t *snmpOutSetRequests; + uint32_t *snmpOutGetResponses; + uint32_t *snmpOutTraps; + int32_t *snmpEnableAuthenTraps; + uint32_t *snmpSilentDrops; + uint32_t *snmpProxyDrops; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + uint32_t __snmpInPkts; + uint32_t __snmpOutPkts; + uint32_t __snmpInBadVersions; + uint32_t __snmpInBadCommunityNames; + uint32_t __snmpInBadCommunityUses; + uint32_t __snmpInASNParseErrs; + uint32_t __snmpInTooBigs; + uint32_t __snmpInNoSuchNames; + uint32_t __snmpInBadValues; + uint32_t __snmpInReadOnlys; + uint32_t __snmpInGenErrs; + uint32_t __snmpInTotalReqVars; + uint32_t __snmpInTotalSetVars; + uint32_t __snmpInGetRequests; + uint32_t __snmpInGetNexts; + uint32_t __snmpInSetRequests; + uint32_t __snmpInGetResponses; + uint32_t __snmpInTraps; + uint32_t __snmpOutTooBigs; + uint32_t __snmpOutNoSuchNames; + uint32_t __snmpOutBadValues; + uint32_t __snmpOutGenErrs; + uint32_t __snmpOutGetRequests; + uint32_t __snmpOutGetNexts; + uint32_t __snmpOutSetRequests; + uint32_t __snmpOutGetResponses; + uint32_t __snmpOutTraps; + int32_t __snmpEnableAuthenTraps; + uint32_t __snmpSilentDrops; + uint32_t __snmpProxyDrops; +} snmp_t; + +/* + * C manager interface stubs for SNMPv2-MIB::snmp. + */ + +extern int +snmpv2_mib_mgr_get_snmp(struct snmp_session *s, snmp_t **snmp); + +/* + * C agent interface stubs for SNMPv2-MIB::snmp. + */ + +extern int +snmpv2_mib_agt_read_snmp(snmp_t *snmp); +extern int +snmpv2_mib_agt_register_snmp(); + +/* + * C type definitions for SNMPv2-MIB::snmpSet. + */ + +typedef struct snmpSet { + int32_t *snmpSetSerialNo; + void *_clientData; /* pointer to client data structure */ + + /* private space to hold actual values */ + + int32_t __snmpSetSerialNo; +} snmpSet_t; + +/* + * C manager interface stubs for SNMPv2-MIB::snmpSet. + */ + +extern int +snmpv2_mib_mgr_get_snmpSet(struct snmp_session *s, snmpSet_t **snmpSet); + +/* + * C agent interface stubs for SNMPv2-MIB::snmpSet. + */ + +extern int +snmpv2_mib_agt_read_snmpSet(snmpSet_t *snmpSet); +extern int +snmpv2_mib_agt_register_snmpSet(); + + +typedef struct snmpv2_mib { + system_t system; + sysOREntry_t *sysOREntry; + snmp_t snmp; + snmpSet_t snmpSet; +} snmpv2_mib_t; + +/* + * Initialization function: + */ + +void snmpv2_mib_agt_init(void); + +#endif /* _SNMPV2_MIB_H_ */ diff --git a/test/dumps/orig-smiv2/IF-MIB b/test/dumps/orig-smiv2/IF-MIB new file mode 100644 index 0000000..567964a --- /dev/null +++ b/test/dumps/orig-smiv2/IF-MIB @@ -0,0 +1,39 @@ +0a1 +> +551c552 +< IANAifType-MIB; +--- +> IANAifType-MIB +575,576d575 +< INTEGER +< INTEGER +705,706c704 +< NOTIFICATION-GROUP +< NOTIFICATION-TYPE +--- +> NOTIFICATION-GROUP, +708a707 +> NOTIFICATION-TYPE, +745c744 +< OBJECT-GROUP, +--- +> OBJECT-GROUP +847a847,848 +> RowStatus +> RowStatus +864c865 +< SNMPv2-TC +--- +> SNMPv2-TC; +1033c1034 +< TestAndIncr +--- +> TestAndIncr, +1045c1046 +< TruthValue, +--- +> TruthValue +1546c1547 +< mib-2, +--- +> mib-2 diff --git a/test/dumps/orig-smiv2/MAU-MIB b/test/dumps/orig-smiv2/MAU-MIB new file mode 100644 index 0000000..ee549f5 --- /dev/null +++ b/test/dumps/orig-smiv2/MAU-MIB @@ -0,0 +1,31 @@ +0a1 +> +352d352 +< ; +523c523 +< IANAifJackType +--- +> IANAifJackType, +539c539 +< IANAifMauTypeListBits, +--- +> IANAifMauTypeListBits +706c706 +< NOTIFICATION-GROUP +--- +> NOTIFICATION-GROUP, +737c737 +< OBJECT-GROUP, +--- +> OBJECT-GROUP +882c882 +< SNMPv2-TC +--- +> SNMPv2-TC; +1021c1021,1022 +< TEXTUAL-CONVENTION +--- +> TEXTUAL-CONVENTION, +> TruthValue +1023d1023 +< TruthValue, diff --git a/test/dumps/orig-smiv2/Makefile.am b/test/dumps/orig-smiv2/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/orig-smiv2/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/orig-smiv2/Makefile.in b/test/dumps/orig-smiv2/Makefile.in new file mode 100644 index 0000000..587449f --- /dev/null +++ b/test/dumps/orig-smiv2/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/orig-smiv2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/orig-smiv2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/orig-smiv2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/orig-smiv2/RMON2-MIB b/test/dumps/orig-smiv2/RMON2-MIB new file mode 100644 index 0000000..2996e43 --- /dev/null +++ b/test/dumps/orig-smiv2/RMON2-MIB @@ -0,0 +1,18 @@ +0a1 +> +3462c3463 +< channelEntry +--- +> channelEntry, +4756c4757 +< sourceRoutingStatsEntry +--- +> sourceRoutingStatsEntry, +4761c4762 +< statistics, +--- +> statistics +4800c4801 +< tokenRingPStatsEntry, +--- +> tokenRingPStatsEntry diff --git a/test/dumps/orig-smiv2/SNMPv2-MIB b/test/dumps/orig-smiv2/SNMPv2-MIB new file mode 100644 index 0000000..14c4922 --- /dev/null +++ b/test/dumps/orig-smiv2/SNMPv2-MIB @@ -0,0 +1,35 @@ +0a1 +> +353,355c354,357 +< INTEGER +< INTEGER +< INTEGER, +--- +> Integer32 +> Integer32 +> Integer32, +> Integer32, +415c417 +< NOTIFICATION-GROUP +--- +> NOTIFICATION-GROUP, +442c444 +< OBJECT-GROUP, +--- +> OBJECT-GROUP +504c506 +< SNMPv2-CONF; +--- +> SNMPv2-CONF +507c509 +< SNMPv2-TC +--- +> SNMPv2-TC; +673c675 +< mib-2 +--- +> mib-2, +843c845 +< snmpModules, +--- +> snmpModules diff --git a/test/dumps/python/IF-MIB b/test/dumps/python/IF-MIB new file mode 100644 index 0000000..d3890ed --- /dev/null +++ b/test/dumps/python/IF-MIB @@ -0,0 +1,2753 @@ +# python version 1.0 DO NOT EDIT +# +# Generated by smidump version 0.4.8: +# +# smidump -f python IF-MIB + +FILENAME = "../../mibs/ietf/IF-MIB" + +MIB = { + "moduleName" : "IF-MIB", + + "IF-MIB" : { + "nodetype" : "module", + "language" : "SMIv2", + "organization" : + """IETF Interfaces MIB Working Group""", + "contact" : + """ Keith McCloghrie +Cisco Systems, Inc. +170 West Tasman Drive +San Jose, CA 95134-1706 +US + +408-526-5260 +kzm@cisco.com""", + "description" : + """The MIB module to describe generic objects for network +interface sub-layers. This MIB is an updated version of +MIB-II's ifTable, and incorporates the extensions defined in +RFC 1229.""", + "revisions" : ( + { + "date" : "2000-06-14 00:00", + "description" : + """Clarifications agreed upon by the Interfaces MIB WG, and +published as RFC 2863.""", + }, + { + "date" : "1996-02-28 21:55", + "description" : + """Revisions made by the Interfaces MIB WG, and published in +RFC 2233.""", + }, + { + "date" : "1993-11-08 21:55", + "description" : + """Initial revision, published as part of RFC 1573.""", + }, + ), + "identity node" : "ifMIB", + }, + + "imports" : ( + {"module" : "SNMPv2-SMI", "name" : "MODULE-IDENTITY"}, + {"module" : "SNMPv2-SMI", "name" : "OBJECT-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "Counter32"}, + {"module" : "SNMPv2-SMI", "name" : "Gauge32"}, + {"module" : "SNMPv2-SMI", "name" : "Counter64"}, + {"module" : "SNMPv2-SMI", "name" : "Integer32"}, + {"module" : "SNMPv2-SMI", "name" : "TimeTicks"}, + {"module" : "SNMPv2-SMI", "name" : "mib-2"}, + {"module" : "SNMPv2-SMI", "name" : "NOTIFICATION-TYPE"}, + {"module" : "SNMPv2-TC", "name" : "TEXTUAL-CONVENTION"}, + {"module" : "SNMPv2-TC", "name" : "DisplayString"}, + {"module" : "SNMPv2-TC", "name" : "PhysAddress"}, + {"module" : "SNMPv2-TC", "name" : "TruthValue"}, + {"module" : "SNMPv2-TC", "name" : "RowStatus"}, + {"module" : "SNMPv2-TC", "name" : "TimeStamp"}, + {"module" : "SNMPv2-TC", "name" : "AutonomousType"}, + {"module" : "SNMPv2-TC", "name" : "TestAndIncr"}, + {"module" : "SNMPv2-CONF", "name" : "MODULE-COMPLIANCE"}, + {"module" : "SNMPv2-CONF", "name" : "OBJECT-GROUP"}, + {"module" : "SNMPv2-CONF", "name" : "NOTIFICATION-GROUP"}, + {"module" : "SNMPv2-MIB", "name" : "snmpTraps"}, + {"module" : "IANAifType-MIB", "name" : "IANAifType"}, + ), + + "typedefs" : { + "OwnerString" : { + "basetype" : "OctetString", + "status" : "deprecated", + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + "format" : "255a", + "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'.""", + }, + "InterfaceIndex" : { + "basetype" : "Integer32", + "status" : "current", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + "format" : "d", + "description" : + """A unique value, greater than zero, for each interface or +interface sub-layer in the managed system. It is +recommended that values are assigned contiguously starting +from 1. The value for each interface sub-layer must remain +constant at least from one re-initialization of the entity's +network management system to the next re-initialization.""", + }, + "InterfaceIndexOrZero" : { + "basetype" : "Integer32", + "status" : "current", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + "format" : "d", + "description" : + """This textual convention is an extension of the +InterfaceIndex convention. The latter defines a greater +than zero value used to identify an interface or interface +sub-layer in the managed system. This extension permits the +additional value of zero. the value zero is object-specific +and must therefore be defined as part of the description of +any object which uses this syntax. Examples of the usage of +zero might include situations where interface was unknown, +or when none or all interfaces need to be referenced.""", + }, + }, # typedefs + + "nodes" : { + "interfaces" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2", + }, # node + "ifNumber" : { + "nodetype" : "scalar", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """The number of network interfaces (regardless of their +current state) present on this system.""", + }, # scalar + "ifTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2", + "status" : "current", + "description" : + """A list of interface entries. The number of entries is +given by the value of ifNumber.""", + }, # table + "ifEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1", + "status" : "current", + "linkage" : [ + "ifIndex", + ], + "description" : + """An entry containing management information applicable to a +particular interface.""", + }, # row + "ifIndex" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndex"}, + }, + "access" : "readonly", + "description" : + """A unique value, greater than zero, for each interface. It +is recommended that values are assigned contiguously +starting from 1. The value for each interface sub-layer +must remain constant at least from one re-initialization of +the entity's network management system to the next re- +initialization.""", + }, # column + "ifDescr" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "description" : + """A textual string containing information about the +interface. This string should include the name of the +manufacturer, the product name and the version of the +interface hardware/software.""", + }, # column + "ifType" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANAifType-MIB", "name" : "IANAifType"}, + }, + "access" : "readonly", + "description" : + """The type of interface. Additional values for ifType are +assigned by the Internet Assigned Numbers Authority (IANA), +through updating the syntax of the IANAifType textual +convention.""", + }, # column + "ifMtu" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """The size of the largest packet which can be sent/received +on the interface, specified in octets. For interfaces that +are used for transmitting network datagrams, this is the +size of the largest network datagram that can be sent on the +interface.""", + }, # column + "ifSpeed" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """An estimate of the interface's current bandwidth in bits +per second. For interfaces which do not vary in bandwidth +or for those where no accurate estimation can be made, this +object should contain the nominal bandwidth. If the +bandwidth of the interface is greater than the maximum value +reportable by this object then this object should report its +maximum value (4,294,967,295) and ifHighSpeed must be used +to report the interace's speed. For a sub-layer which has +no concept of bandwidth, this object should be zero.""", + }, # column + "ifPhysAddress" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "PhysAddress"}, + }, + "access" : "readonly", + "description" : + """The interface's address at its protocol sub-layer. For +example, for an 802.x interface, this object normally +contains a MAC address. The interface's media-specific MIB +must define the bit and byte ordering and the format of the +value of this object. For interfaces which do not have such +an address (e.g., a serial line), this object should contain +an octet string of zero length.""", + }, # column + "ifAdminStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "testing" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "description" : + """The desired state of the interface. The testing(3) state +indicates that no operational packets can be passed. When a +managed system initializes, all interfaces start with +ifAdminStatus in the down(2) state. As a result of either +explicit management action or per configuration information +retained by the managed system, ifAdminStatus is then +changed to either the up(1) or testing(3) states (or remains +in the down(2) state).""", + }, # column + "ifOperStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "testing" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "dormant" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "notPresent" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "lowerLayerDown" : { + "nodetype" : "namednumber", + "number" : "7" + }, + }, + }, + "access" : "readonly", + "description" : + """The current operational state of the interface. The +testing(3) state indicates that no operational packets can +be passed. If ifAdminStatus is down(2) then ifOperStatus +should be down(2). If ifAdminStatus is changed to up(1) +then ifOperStatus should change to up(1) if the interface is +ready to transmit and receive network traffic; it should +change to dormant(5) if the interface is waiting for +external actions (such as a serial line waiting for an +incoming connection); it should remain in the down(2) state +if and only if there is a fault that prevents it from going +to the up(1) state; it should remain in the notPresent(6) +state if the interface has missing (typically, hardware) +components.""", + }, # column + "ifLastChange" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "TimeTicks"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time the interface entered +its current operational state. If the current state was +entered prior to the last re-initialization of the local +network management subsystem, then this object contains a +zero value.""", + }, # column + "ifInOctets" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of octets received on the interface, + + +including framing characters. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifInUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets, delivered by this sub-layer to a +higher (sub-)layer, which were not addressed to a multicast +or broadcast address at this sub-layer. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifInNUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.12", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets, delivered by this sub-layer to a +higher (sub-)layer, which were addressed to a multicast or +broadcast address at this sub-layer. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime. + +This object is deprecated in favour of ifInMulticastPkts and +ifInBroadcastPkts.""", + }, # column + "ifInDiscards" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.13", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of inbound packets which were chosen to be +discarded even though no errors had been detected to prevent + + +their being deliverable to a higher-layer protocol. One +possible reason for discarding such a packet could be to +free up buffer space. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifInErrors" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.14", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """For packet-oriented interfaces, the number of inbound +packets that contained errors preventing them from being +deliverable to a higher-layer protocol. For character- +oriented or fixed-length interfaces, the number of inbound +transmission units that contained errors preventing them +from being deliverable to a higher-layer protocol. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifInUnknownProtos" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.15", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """For packet-oriented interfaces, the number of packets +received via the interface which were discarded because of +an unknown or unsupported protocol. For character-oriented +or fixed-length interfaces that support protocol +multiplexing the number of transmission units received via +the interface which were discarded because of an unknown or +unsupported protocol. For any interface that does not +support protocol multiplexing, this counter will always be +0. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifOutOctets" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.16", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of octets transmitted out of the +interface, including framing characters. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifOutUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.17", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of packets that higher-level protocols +requested be transmitted, and which were not addressed to a +multicast or broadcast address at this sub-layer, including +those that were discarded or not sent. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifOutNUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.18", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of packets that higher-level protocols +requested be transmitted, and which were addressed to a +multicast or broadcast address at this sub-layer, including +those that were discarded or not sent. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime. + +This object is deprecated in favour of ifOutMulticastPkts +and ifOutBroadcastPkts.""", + }, # column + "ifOutDiscards" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.19", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of outbound packets which were chosen to be +discarded even though no errors had been detected to prevent +their being transmitted. One possible reason for discarding +such a packet could be to free up buffer space. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifOutErrors" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.20", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """For packet-oriented interfaces, the number of outbound +packets that could not be transmitted because of errors. +For character-oriented or fixed-length interfaces, the +number of outbound transmission units that could not be +transmitted because of errors. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifOutQLen" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.21", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """The length of the output packet queue (in packets).""", + }, # column + "ifSpecific" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.2.2.1.22", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readonly", + "description" : + """A reference to MIB definitions specific to the particular +media being used to realize the interface. It is + + +recommended that this value point to an instance of a MIB +object in the media-specific MIB, i.e., that this object +have the semantics associated with the InstancePointer +textual convention defined in RFC 2579. In fact, it is +recommended that the media-specific MIB specify what value +ifSpecific should/can take for values of ifType. If no MIB +definitions specific to the particular media are available, +the value should be set to the OBJECT IDENTIFIER { 0 0 }.""", + }, # column + "ifMIB" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31", + "status" : "current", + }, # node + "ifMIBObjects" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1", + }, # node + "ifXTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1", + "status" : "current", + "description" : + """A list of interface entries. The number of entries is +given by the value of ifNumber. This table contains +additional objects for the interface table.""", + }, # table + "ifXEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1", + "status" : "current", + "linkage" : [ + { "IF-MIB" : { + "indexkind" : "augments", + "relatedNode" : "ifEntry", + }}, + ], + "description" : + """An entry containing additional management information +applicable to a particular interface.""", + }, # row + "ifName" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "DisplayString"}, + }, + "access" : "readonly", + "description" : + """The textual name of the interface. The value of this +object should be the name of the interface as assigned by +the local device and should be suitable for use in commands +entered at the device's `console'. This might be a text +name, such as `le0' or a simple port number, such as `1', +depending on the interface naming syntax of the device. If +several entries in the ifTable together represent a single +interface as named by the device, then each will have the +same value of ifName. Note that for an agent which responds +to SNMP queries concerning an interface on some other +(proxied) device, then the value of ifName for such an +interface is the proxied device's local name for it. + +If there is no local name, or this object is otherwise not +applicable, then this object contains a zero-length string.""", + }, # column + "ifInMulticastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets, delivered by this sub-layer to a +higher (sub-)layer, which were addressed to a multicast +address at this sub-layer. For a MAC layer protocol, this +includes both Group and Functional addresses. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other + + +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifInBroadcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets, delivered by this sub-layer to a +higher (sub-)layer, which were addressed to a broadcast +address at this sub-layer. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifOutMulticastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of packets that higher-level protocols +requested be transmitted, and which were addressed to a +multicast address at this sub-layer, including those that +were discarded or not sent. For a MAC layer protocol, this +includes both Group and Functional addresses. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifOutBroadcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of packets that higher-level protocols +requested be transmitted, and which were addressed to a +broadcast address at this sub-layer, including those that +were discarded or not sent. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other + + +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifHCInOctets" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """The total number of octets received on the interface, +including framing characters. This object is a 64-bit +version of ifInOctets. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifHCInUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """The number of packets, delivered by this sub-layer to a +higher (sub-)layer, which were not addressed to a multicast +or broadcast address at this sub-layer. This object is a +64-bit version of ifInUcastPkts. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifHCInMulticastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """The number of packets, delivered by this sub-layer to a +higher (sub-)layer, which were addressed to a multicast +address at this sub-layer. For a MAC layer protocol, this +includes both Group and Functional addresses. This object +is a 64-bit version of ifInMulticastPkts. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifHCInBroadcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """The number of packets, delivered by this sub-layer to a +higher (sub-)layer, which were addressed to a broadcast +address at this sub-layer. This object is a 64-bit version +of ifInBroadcastPkts. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifHCOutOctets" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """The total number of octets transmitted out of the +interface, including framing characters. This object is a +64-bit version of ifOutOctets. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifHCOutUcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """The total number of packets that higher-level protocols +requested be transmitted, and which were not addressed to a +multicast or broadcast address at this sub-layer, including +those that were discarded or not sent. This object is a +64-bit version of ifOutUcastPkts. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifHCOutMulticastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.12", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """The total number of packets that higher-level protocols +requested be transmitted, and which were addressed to a +multicast address at this sub-layer, including those that +were discarded or not sent. For a MAC layer protocol, this +includes both Group and Functional addresses. This object +is a 64-bit version of ifOutMulticastPkts. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifHCOutBroadcastPkts" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.13", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """The total number of packets that higher-level protocols +requested be transmitted, and which were addressed to a +broadcast address at this sub-layer, including those that +were discarded or not sent. This object is a 64-bit version +of ifOutBroadcastPkts. + +Discontinuities in the value of this counter can occur at +re-initialization of the management system, and at other +times as indicated by the value of +ifCounterDiscontinuityTime.""", + }, # column + "ifLinkUpDownTrapEnable" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.14", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "enabled" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "disabled" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """Indicates whether linkUp/linkDown traps should be generated +for this interface. + +By default, this object should have the value enabled(1) for +interfaces which do not operate on 'top' of any other +interface (as defined in the ifStackTable), and disabled(2) +otherwise.""", + }, # column + "ifHighSpeed" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.15", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "description" : + """An estimate of the interface's current bandwidth in units +of 1,000,000 bits per second. If this object reports a +value of `n' then the speed of the interface is somewhere in +the range of `n-500,000' to `n+499,999'. For interfaces +which do not vary in bandwidth or for those where no +accurate estimation can be made, this object should contain +the nominal bandwidth. For a sub-layer which has no concept +of bandwidth, this object should be zero.""", + }, # column + "ifPromiscuousMode" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.16", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TruthValue"}, + }, + "access" : "readwrite", + "description" : + """This object has a value of false(2) if this interface only +accepts packets/frames that are addressed to this station. +This object has a value of true(1) when the station accepts +all packets/frames transmitted on the media. The value +true(1) is only legal on certain types of media. If legal, +setting this object to a value of true(1) may require the +interface to be reset before becoming effective. + +The value of ifPromiscuousMode does not affect the reception +of broadcast and multicast packets/frames by the interface.""", + }, # column + "ifConnectorPresent" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.17", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TruthValue"}, + }, + "access" : "readonly", + "description" : + """This object has the value 'true(1)' if the interface +sublayer has a physical connector and the value 'false(2)' +otherwise.""", + }, # column + "ifAlias" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.18", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "64" + }, + ], + "range" : { + "min" : "0", + "max" : "64" + }, + }, + }, + "access" : "readwrite", + "description" : + """This object is an 'alias' name for the interface as +specified by a network manager, and provides a non-volatile +'handle' for the interface. + +On the first instantiation of an interface, the value of +ifAlias associated with that interface is the zero-length +string. As and when a value is written into an instance of +ifAlias through a network management set operation, then the +agent must retain the supplied value in the ifAlias instance +associated with the same interface for as long as that +interface remains instantiated, including across all re- +initializations/reboots of the network management system, +including those which result in a change of the interface's +ifIndex value. + +An example of the value which a network manager might store +in this object for a WAN interface is the (Telco's) circuit +number/identifier of the interface. + +Some agents may support write-access only for interfaces +having particular values of ifType. An agent which supports +write access to this object is required to keep the value in +non-volatile storage, but it may limit the length of new +values depending on how much storage is already occupied by +the current values for other interfaces.""", + }, # column + "ifCounterDiscontinuityTime" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.1.1.19", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime on the most recent occasion at which +any one or more of this interface's counters suffered a +discontinuity. The relevant counters are the specific +instances associated with this interface of any Counter32 or + + +Counter64 object contained in the ifTable or ifXTable. If +no such discontinuities have occurred since the last re- +initialization of the local management subsystem, then this +object contains a zero value.""", + }, # column + "ifStackTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2", + "status" : "current", + "description" : + """The table containing information on the relationships +between the multiple sub-layers of network interfaces. In +particular, it contains information on which sub-layers run +'on top of' which other sub-layers, where each sub-layer +corresponds to a conceptual row in the ifTable. For +example, when the sub-layer with ifIndex value x runs over +the sub-layer with ifIndex value y, then this table +contains: + + ifStackStatus.x.y=active + +For each ifIndex value, I, which identifies an active +interface, there are always at least two instantiated rows +in this table associated with I. For one of these rows, I +is the value of ifStackHigherLayer; for the other, I is the +value of ifStackLowerLayer. (If I is not involved in +multiplexing, then these are the only two rows associated +with I.) + +For example, two rows exist even for an interface which has +no others stacked on top or below it: + + ifStackStatus.0.x=active + ifStackStatus.x.0=active """, + }, # table + "ifStackEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "ifStackHigherLayer", + "ifStackLowerLayer", + ], + "description" : + """Information on a particular relationship between two sub- +layers, specifying that one sub-layer runs on 'top' of the +other sub-layer. Each sub-layer corresponds to a conceptual +row in the ifTable.""", + }, # row + "ifStackHigherLayer" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndexOrZero"}, + }, + "access" : "noaccess", + "description" : + """The value of ifIndex corresponding to the higher sub-layer +of the relationship, i.e., the sub-layer which runs on 'top' +of the sub-layer identified by the corresponding instance of +ifStackLowerLayer. If there is no higher sub-layer (below +the internetwork layer), then this object has the value 0.""", + }, # column + "ifStackLowerLayer" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndexOrZero"}, + }, + "access" : "noaccess", + "description" : + """The value of ifIndex corresponding to the lower sub-layer +of the relationship, i.e., the sub-layer which runs 'below' +the sub-layer identified by the corresponding instance of +ifStackHigherLayer. If there is no lower sub-layer, then +this object has the value 0.""", + }, # column + "ifStackStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.2.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """The status of the relationship between two sub-layers. + +Changing the value of this object from 'active' to +'notInService' or 'destroy' will likely have consequences up +and down the interface stack. Thus, write access to this +object is likely to be inappropriate for some types of +interfaces, and many implementations will choose not to +support write-access for any type of interface.""", + }, # column + "ifTestTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3", + "status" : "deprecated", + "description" : + """This table contains one entry per interface. It defines +objects which allow a network manager to instruct an agent +to test an interface for various faults. Tests for an +interface are defined in the media-specific MIB for that +interface. After invoking a test, the object ifTestResult +can be read to determine the outcome. If an agent can not +perform the test, ifTestResult is set to so indicate. The +object ifTestCode can be used to provide further test- +specific or interface-specific (or even enterprise-specific) +information concerning the outcome of the test. Only one +test can be in progress on each interface at any one time. +If one test is in progress when another test is invoked, the +second test is rejected. Some agents may reject a test when +a prior test is active on another interface. + +Before starting a test, a manager-station must first obtain +'ownership' of the entry in the ifTestTable for the +interface to be tested. This is accomplished with the +ifTestId and ifTestStatus objects as follows: + +try_again: + get (ifTestId, ifTestStatus) + while (ifTestStatus != notInUse) + /* + * Loop while a test is running or some other + * manager is configuring a test. + */ + short delay + get (ifTestId, ifTestStatus) + } + + /* + * Is not being used right now -- let's compete + * to see who gets it. + */ + lock_value = ifTestId + + if ( set(ifTestId = lock_value, ifTestStatus = inUse, + + + ifTestOwner = 'my-IP-address') == FAILURE) + /* + * Another manager got the ifTestEntry -- go + * try again + */ + goto try_again; + + /* + * I have the lock + */ + set up any test parameters. + + /* + * This starts the test + */ + set(ifTestType = test_to_run); + + wait for test completion by polling ifTestResult + + when test completes, agent sets ifTestResult + agent also sets ifTestStatus = 'notInUse' + + retrieve any additional test results, and ifTestId + + if (ifTestId == lock_value+1) results are valid + +A manager station first retrieves the value of the +appropriate ifTestId and ifTestStatus objects, periodically +repeating the retrieval if necessary, until the value of +ifTestStatus is 'notInUse'. The manager station then tries +to set the same ifTestId object to the value it just +retrieved, the same ifTestStatus object to 'inUse', and the +corresponding ifTestOwner object to a value indicating +itself. If the set operation succeeds then the manager has +obtained ownership of the ifTestEntry, and the value of the +ifTestId object is incremented by the agent (per the +semantics of TestAndIncr). Failure of the set operation +indicates that some other manager has obtained ownership of +the ifTestEntry. + +Once ownership is obtained, any test parameters can be +setup, and then the test is initiated by setting ifTestType. +On completion of the test, the agent sets ifTestStatus to +'notInUse'. Once this occurs, the manager can retrieve the +results. In the (rare) event that the invocation of tests +by two network managers were to overlap, then there would be +a possibility that the first test's results might be +overwritten by the second test's results prior to the first + + +results being read. This unlikely circumstance can be +detected by a network manager retrieving ifTestId at the +same time as retrieving the test results, and ensuring that +the results are for the desired request. + +If ifTestType is not set within an abnormally long period of +time after ownership is obtained, the agent should time-out +the manager, and reset the value of the ifTestStatus object +back to 'notInUse'. It is suggested that this time-out +period be 5 minutes. + +In general, a management station must not retransmit a +request to invoke a test for which it does not receive a +response; instead, it properly inspects an agent's MIB to +determine if the invocation was successful. Only if the +invocation was unsuccessful, is the invocation request +retransmitted. + +Some tests may require the interface to be taken off-line in +order to execute them, or may even require the agent to +reboot after completion of the test. In these +circumstances, communication with the management station +invoking the test may be lost until after completion of the +test. An agent is not required to support such tests. +However, if such tests are supported, then the agent should +make every effort to transmit a response to the request +which invoked the test prior to losing communication. When +the agent is restored to normal service, the results of the +test are properly made available in the appropriate objects. +Note that this requires that the ifIndex value assigned to +an interface must be unchanged even if the test causes a +reboot. An agent must reject any test for which it cannot, +perhaps due to resource constraints, make available at least +the minimum amount of information after that test +completes.""", + }, # table + "ifTestEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1", + "status" : "deprecated", + "linkage" : [ + { "IF-MIB" : { + "indexkind" : "augments", + "relatedNode" : "ifEntry", + }}, + ], + "description" : + """An entry containing objects for invoking tests on an +interface.""", + }, # row + "ifTestId" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TestAndIncr"}, + }, + "access" : "readwrite", + "description" : + """This object identifies the current invocation of the +interface's test.""", + }, # column + "ifTestStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notInUse" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "inUse" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """This object indicates whether or not some manager currently +has the necessary 'ownership' required to invoke a test on +this interface. A write to this object is only successful +when it changes its value from 'notInUse(1)' to 'inUse(2)'. +After completion of a test, the agent resets the value back +to 'notInUse(1)'.""", + }, # column + "ifTestType" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "AutonomousType"}, + }, + "access" : "readwrite", + "description" : + """A control variable used to start and stop operator- +initiated interface tests. Most OBJECT IDENTIFIER values +assigned to tests are defined elsewhere, in association with +specific types of interface. However, this document assigns +a value for a full-duplex loopback test, and defines the +special meanings of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + +When the value noTest is written to this object, no action +is taken unless a test is in progress, in which case the +test is aborted. Writing any other value to this object is + + +only valid when no test is currently in progress, in which +case the indicated test is initiated. + +When read, this object always returns the most recent value +that ifTestType was set to. If it has not been set since +the last initialization of the network management subsystem +on the agent, a value of noTest is returned.""", + }, # column + "ifTestResult" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "none" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "success" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "inProgress" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "notSupported" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "unAbleToRun" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "aborted" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "failed" : { + "nodetype" : "namednumber", + "number" : "7" + }, + }, + }, + "access" : "readonly", + "description" : + """This object contains the result of the most recently +requested test, or the value none(1) if no tests have been +requested since the last reset. Note that this facility +provides no provision for saving the results of one test +when starting another, as could be required if used by +multiple managers concurrently.""", + }, # column + "ifTestCode" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readonly", + "description" : + """This object contains a code which contains more specific +information on the test result, for example an error-code +after a failed test. Error codes and other values this +object may take are specific to the type of interface and/or +test. The value may have the semantics of either the +AutonomousType or InstancePointer textual conventions as +defined in RFC 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + +is defined for use if no additional result code is +available.""", + }, # column + "ifTestOwner" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.3.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity which currently has the 'ownership' required to +invoke a test on this interface.""", + }, # column + "ifRcvAddressTable" : { + "nodetype" : "table", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4", + "status" : "current", + "description" : + """This table contains an entry for each address (broadcast, +multicast, or uni-cast) for which the system will receive +packets/frames on a particular interface, except as follows: + +- for an interface operating in promiscuous mode, entries +are only required for those addresses for which the system +would receive frames were it not operating in promiscuous +mode. + + +- for 802.5 functional addresses, only one entry is +required, for the address which has the functional address +bit ANDed with the bit mask of all functional addresses for +which the interface will accept frames. + +A system is normally able to use any unicast address which +corresponds to an entry in this table as a source address.""", + }, # table + "ifRcvAddressEntry" : { + "nodetype" : "row", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "ifIndex", + "ifRcvAddressAddress", + ], + "description" : + """A list of objects identifying an address for which the +system will accept packets/frames on the particular +interface identified by the index value ifIndex.""", + }, # row + "ifRcvAddressAddress" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "PhysAddress"}, + }, + "access" : "noaccess", + "description" : + """An address for which the system will accept packets/frames +on this entry's interface.""", + }, # column + "ifRcvAddressStatus" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "description" : + """This object is used to create and delete rows in the +ifRcvAddressTable.""", + }, # column + "ifRcvAddressType" : { + "nodetype" : "column", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.4.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "volatile" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "nonVolatile" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "default" : "volatile", + "description" : + """This object has the value nonVolatile(3) for those entries +in the table which are valid and will not be deleted by the +next restart of the managed system. Entries having the +value volatile(2) are valid and exist, but have not been +saved, so that will not exist after the next restart of the +managed system. Entries having the value other(1) are valid +and exist but are not classified as to whether they will +continue to exist after the next restart.""", + }, # column + "ifTableLastChange" : { + "nodetype" : "scalar", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "TimeTicks"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time of the last creation or +deletion of an entry in the ifTable. If the number of +entries has been unchanged since the last re-initialization +of the local network management subsystem, then this object +contains a zero value.""", + }, # scalar + "ifStackLastChange" : { + "nodetype" : "scalar", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "TimeTicks"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time of the last change of +the (whole) interface stack. A change of the interface +stack is defined to be any creation, deletion, or change in +value of any instance of ifStackStatus. If the interface +stack has been unchanged since the last re-initialization of +the local network management subsystem, then this object +contains a zero value.""", + }, # scalar + "ifConformance" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2", + }, # node + "ifGroups" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1", + }, # node + "ifCompliances" : { + "nodetype" : "node", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.2", + }, # node + }, # nodes + + "notifications" : { + "linkDown" : { + "nodetype" : "notification", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.3", + "status" : "current", + "objects" : { + "ifIndex" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + "ifAdminStatus" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + "ifOperStatus" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + }, + "description" : + """A linkDown trap signifies that the SNMP entity, acting in +an agent role, has detected that the ifOperStatus object for +one of its communication links is about to enter the down +state from some other state (but not from the notPresent +state). This other state is indicated by the included value +of ifOperStatus.""", + }, # notification + "linkUp" : { + "nodetype" : "notification", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.4", + "status" : "current", + "objects" : { + "ifIndex" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + "ifAdminStatus" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + "ifOperStatus" : { + "nodetype" : "object", + "module" : "IF-MIB" + }, + }, + "description" : + """A linkUp trap signifies that the SNMP entity, acting in an +agent role, has detected that the ifOperStatus object for +one of its communication links left the down state and +transitioned into some other state (but not into the +notPresent state). This other state is indicated by the +included value of ifOperStatus.""", + }, # notification + }, # notifications + + "groups" : { + "ifGeneralGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.1", + "status" : "deprecated", + "members" : { + "ifDescr" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifType" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifSpeed" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPhysAddress" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifAdminStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOperStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifLastChange" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifLinkUpDownTrapEnable" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifConnectorPresent" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHighSpeed" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifName" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects deprecated in favour of +ifGeneralInformationGroup.""", + }, # group + "ifFixedLengthGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.2", + "status" : "current", + "members" : { + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information specific to +non-high speed (non-high speed interfaces transmit and +receive at speeds less than or equal to 20,000,000 +bits/second) character-oriented or fixed-length-transmission +network interfaces.""", + }, # group + "ifHCFixedLengthGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.3", + "status" : "current", + "members" : { + "ifHCInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information specific to +high speed (greater than 20,000,000 bits/second) character- +oriented or fixed-length-transmission network interfaces.""", + }, # group + "ifPacketGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.4", + "status" : "current", + "members" : { + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifMtu" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPromiscuousMode" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information specific to +non-high speed (non-high speed interfaces transmit and +receive at speeds less than or equal to 20,000,000 +bits/second) packet-oriented network interfaces.""", + }, # group + "ifHCPacketGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.5", + "status" : "current", + "members" : { + "ifHCInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifMtu" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPromiscuousMode" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information specific to +high speed (greater than 20,000,000 bits/second but less +than or equal to 650,000,000 bits/second) packet-oriented +network interfaces.""", + }, # group + "ifVHCPacketGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.6", + "status" : "current", + "members" : { + "ifHCInUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCInMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCInBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHCOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutOctets" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUnknownProtos" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutErrors" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifMtu" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifInDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutMulticastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutBroadcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutDiscards" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPromiscuousMode" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information specific to +higher speed (greater than 650,000,000 bits/second) packet- +oriented network interfaces.""", + }, # group + "ifRcvAddressGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.7", + "status" : "current", + "members" : { + "ifRcvAddressStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifRcvAddressType" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information on the +multiple addresses which an interface receives.""", + }, # group + "ifTestGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.8", + "status" : "deprecated", + "members" : { + "ifTestId" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestType" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestResult" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestCode" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTestOwner" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing the ability to invoke +tests on an interface.""", + }, # group + "ifStackGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.9", + "status" : "deprecated", + "members" : { + "ifStackStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """The previous collection of objects providing information on +the layering of MIB-II interfaces.""", + }, # group + "ifGeneralInformationGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.10", + "status" : "current", + "members" : { + "ifIndex" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifDescr" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifType" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifSpeed" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifPhysAddress" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifAdminStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOperStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifLastChange" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifLinkUpDownTrapEnable" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifConnectorPresent" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifHighSpeed" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifName" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifNumber" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifAlias" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifTableLastChange" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information applicable to +all network interfaces.""", + }, # group + "ifStackGroup2" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.11", + "status" : "current", + "members" : { + "ifStackStatus" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifStackLastChange" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information on the +layering of MIB-II interfaces.""", + }, # group + "ifOldObjectsGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.12", + "status" : "deprecated", + "members" : { + "ifInNUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutNUcastPkts" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifOutQLen" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "ifSpecific" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """The collection of objects deprecated from the original MIB- +II interfaces group.""", + }, # group + "ifCounterDiscontinuityGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.13", + "status" : "current", + "members" : { + "ifCounterDiscontinuityTime" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """A collection of objects providing information specific to +interface counter discontinuities.""", + }, # group + "linkUpDownNotificationsGroup" : { + "nodetype" : "group", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.1.14", + "status" : "current", + "members" : { + "linkUp" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + "linkDown" : { + "nodetype" : "member", + "module" : "IF-MIB" + }, + }, # members + "description" : + """The notifications which indicate specific changes in the +value of ifOperStatus.""", + }, # group + }, # groups + + "compliances" : { + "ifCompliance" : { + "nodetype" : "compliance", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.2.1", + "status" : "deprecated", + "description" : + """A compliance statement defined in a previous version of +this MIB module, for SNMP entities which have network +interfaces.""", + "requires" : { + "ifGeneralGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifStackGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for all network interfaces which +are character-oriented or transmit data in fixed-length +transmission units.""", + }, + "ifHCFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory only for those network interfaces +which are character-oriented or transmit data in fixed- +length transmission units, and for which the value of the +corresponding instance of ifSpeed is greater than 20,000,000 +bits/second.""", + }, + "ifPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for all network interfaces which +are packet-oriented.""", + }, + "ifHCPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory only for those network interfaces +which are packet-oriented and for which the value of the +corresponding instance of ifSpeed is greater than +650,000,000 bits/second.""", + }, + "ifTestGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is optional. Media-specific MIBs which require +interface tests are strongly encouraged to use this group +for invoking tests and reporting results. A medium specific +MIB which has mandatory tests may make implementation of + + +this group mandatory.""", + }, + "ifRcvAddressGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """The applicability of this group MUST be defined by the +media-specific MIBs. Media-specific MIBs must define the +exact meaning, use, and semantics of the addresses in this +group.""", + }, + }, # requires + "refinements" : { + "ifLinkUpDownTrapEnable" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifPromiscuousMode" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifStackStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "RowStatus", + }, + "active" : { + "nodetype" : "namednumber", + "number" : "1" + }, + }, + }, # syntax + "access" : "readonly", + "description" : + """Write access is not required, and only one of the six +enumerated values for the RowStatus textual convention need +be supported, specifically: active(1).""", + }, + "ifAdminStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "access" : "readonly", + "description" : + """Write access is not required, nor is support for the value +testing(3).""", + }, + }, # refinements + + }, # compliance + "ifCompliance2" : { + "nodetype" : "compliance", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.2.2", + "status" : "deprecated", + "description" : + """A compliance statement defined in a previous version of +this MIB module, for SNMP entities which have network +interfaces.""", + "requires" : { + "ifGeneralInformationGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifStackGroup2" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifCounterDiscontinuityGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for all network interfaces which +are character-oriented or transmit data in fixed-length +transmission units.""", + }, + "ifHCFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory only for those network interfaces +which are character-oriented or transmit data in fixed- +length transmission units, and for which the value of the +corresponding instance of ifSpeed is greater than 20,000,000 +bits/second.""", + }, + "ifPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for all network interfaces which +are packet-oriented.""", + }, + "ifHCPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory only for those network interfaces +which are packet-oriented and for which the value of the +corresponding instance of ifSpeed is greater than +650,000,000 bits/second.""", + }, + "ifRcvAddressGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """The applicability of this group MUST be defined by the +media-specific MIBs. Media-specific MIBs must define the +exact meaning, use, and semantics of the addresses in this +group.""", + }, + }, # requires + "refinements" : { + "ifLinkUpDownTrapEnable" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifPromiscuousMode" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifStackStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "RowStatus", + }, + "active" : { + "nodetype" : "namednumber", + "number" : "1" + }, + }, + }, # syntax + "access" : "readonly", + "description" : + """Write access is not required, and only one of the six +enumerated values for the RowStatus textual convention need +be supported, specifically: active(1).""", + }, + "ifAdminStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "access" : "readonly", + "description" : + """Write access is not required, nor is support for the value +testing(3).""", + }, + "ifAlias" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + "ifCompliance3" : { + "nodetype" : "compliance", + "moduleName" : "IF-MIB", + "oid" : "1.3.6.1.2.1.31.2.2.3", + "status" : "current", + "description" : + """The compliance statement for SNMP entities which have +network interfaces.""", + "requires" : { + "ifGeneralInformationGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "linkUpDownNotificationsGroup" : { + "nodetype" : "mandatory", + "module" : "IF-MIB" + }, + "ifFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for those network interfaces which +are character-oriented or transmit data in fixed-length +transmission units, and for which the value of the +corresponding instance of ifSpeed is less than or equal to +20,000,000 bits/second.""", + }, + "ifHCFixedLengthGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for those network interfaces which +are character-oriented or transmit data in fixed-length +transmission units, and for which the value of the +corresponding instance of ifSpeed is greater than 20,000,000 +bits/second.""", + }, + "ifPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for those network interfaces which +are packet-oriented, and for which the value of the +corresponding instance of ifSpeed is less than or equal to +20,000,000 bits/second.""", + }, + "ifHCPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory only for those network interfaces +which are packet-oriented and for which the value of the +corresponding instance of ifSpeed is greater than 20,000,000 +bits/second but less than or equal to 650,000,000 +bits/second.""", + }, + "ifVHCPacketGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory only for those network interfaces +which are packet-oriented and for which the value of the +corresponding instance of ifSpeed is greater than +650,000,000 bits/second.""", + }, + "ifCounterDiscontinuityGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """This group is mandatory for those network interfaces that +are required to maintain counters (i.e., those for which one +of the ifFixedLengthGroup, ifHCFixedLengthGroup, +ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is +mandatory).""", + }, + "ifRcvAddressGroup" : { + "nodetype" : "optional", + "module" : "IF-MIB", + "description" : + """The applicability of this group MUST be defined by the +media-specific MIBs. Media-specific MIBs must define the +exact meaning, use, and semantics of the addresses in this +group.""", + }, + }, # requires + "refinements" : { + "ifLinkUpDownTrapEnable" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifPromiscuousMode" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + "ifAdminStatus" : { + "module" : "IF-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "up" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "down" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "access" : "readonly", + "description" : + """Write access is not required, nor is support for the value +testing(3).""", + }, + "ifAlias" : { + "module" : "IF-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + }, # compliances + +} diff --git a/test/dumps/python/MAU-MIB b/test/dumps/python/MAU-MIB new file mode 100644 index 0000000..a1234d2 --- /dev/null +++ b/test/dumps/python/MAU-MIB @@ -0,0 +1,2619 @@ +# python version 1.0 DO NOT EDIT +# +# Generated by smidump version 0.4.8: +# +# smidump -f python MAU-MIB + +FILENAME = "../../mibs/ietf/MAU-MIB" + +MIB = { + "moduleName" : "MAU-MIB", + + "MAU-MIB" : { + "nodetype" : "module", + "language" : "SMIv2", + "organization" : + """IETF Ethernet Interfaces and Hub MIB Working Group""", + "contact" : + """WG charter: +http://www.ietf.org/html.charters/hubmib-charter.html + +Mailing Lists: +General Discussion: hubmib@ietf.org +To Subscribe: hubmib-request@ietf.org +In Body: subscribe your_email_address + + + +Chair: Bert Wijnen +Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands +Phone: +31-348-407-775 +EMail: bwijnen@alcatel-lucent.com + +Editor: Edward Beili +Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 +EMail: edward.beili@actelis.com""", + "description" : + """Management information for 802.3 MAUs. + +The following reference is used throughout this MIB module: + +[IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + +Copyright (C) The IETF Trust (2007). +This version of this MIB module is part of RFC 4836; +see the RFC itself for full legal notices.""", + "revisions" : ( + { + "date" : "2007-04-21 00:00", + "description" : + """Updated to reference IANA maintaned textual +conventions for MAU types, Media Availability state, +Auto Negotiation capabilities, and jack types, +instead of using internally defined values. + +This version is published as RFC 4836.""", + }, + { + "date" : "2003-09-19 00:00", + "description" : + """Updated to include support for 10 Gb/s MAUs. +This resulted in the following revisions: +- Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + +- Added fiberLC jack type to JackType TC +- Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types +- Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s +- Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object +- Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636.""", + }, + { + "date" : "1999-08-24 04:00", + "description" : + """This version published as RFC 2668. Updated +to include support for 1000 Mb/sec +MAUs and flow control negotiation.""", + }, + { + "date" : "1997-10-31 00:00", + "description" : + """Version published as RFC 2239.""", + }, + { + "date" : "1993-09-30 00:00", + "description" : + """Initial version, published as RFC 1515.""", + }, + ), + "identity node" : "mauMod", + }, + + "imports" : ( + {"module" : "SNMPv2-SMI", "name" : "Counter32"}, + {"module" : "SNMPv2-SMI", "name" : "Integer32"}, + {"module" : "SNMPv2-SMI", "name" : "Counter64"}, + {"module" : "SNMPv2-SMI", "name" : "OBJECT-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "MODULE-IDENTITY"}, + {"module" : "SNMPv2-SMI", "name" : "NOTIFICATION-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "mib-2"}, + {"module" : "SNMPv2-TC", "name" : "TruthValue"}, + {"module" : "SNMPv2-TC", "name" : "AutonomousType"}, + {"module" : "SNMPv2-TC", "name" : "TEXTUAL-CONVENTION"}, + {"module" : "SNMPv2-CONF", "name" : "OBJECT-GROUP"}, + {"module" : "SNMPv2-CONF", "name" : "MODULE-COMPLIANCE"}, + {"module" : "SNMPv2-CONF", "name" : "NOTIFICATION-GROUP"}, + {"module" : "IF-MIB", "name" : "InterfaceIndex"}, + {"module" : "IANA-MAU-MIB", "name" : "IANAifMauTypeListBits"}, + {"module" : "IANA-MAU-MIB", "name" : "IANAifMauMediaAvailable"}, + {"module" : "IANA-MAU-MIB", "name" : "IANAifMauAutoNegCapBits"}, + {"module" : "IANA-MAU-MIB", "name" : "IANAifJackType"}, + ), + + "typedefs" : { + "JackType" : { + "basetype" : "Enumeration", + "status" : "deprecated", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "rj45" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "rj45S" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "db9" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "bnc" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "fAUI" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "mAUI" : { + "nodetype" : "namednumber", + "number" : "7" + }, + "fiberSC" : { + "nodetype" : "namednumber", + "number" : "8" + }, + "fiberMIC" : { + "nodetype" : "namednumber", + "number" : "9" + }, + "fiberST" : { + "nodetype" : "namednumber", + "number" : "10" + }, + "telco" : { + "nodetype" : "namednumber", + "number" : "11" + }, + "mtrj" : { + "nodetype" : "namednumber", + "number" : "12" + }, + "hssdc" : { + "nodetype" : "namednumber", + "number" : "13" + }, + "fiberLC" : { + "nodetype" : "namednumber", + "number" : "14" + }, + "description" : + """********* THIS TC IS DEPRECATED ********** + +This TC has been deprecated in favour of +IANAifJackType. + +Common enumeration values for repeater +and interface MAU jack types.""", + }, + }, # typedefs + + "nodes" : { + "snmpDot3MauMgt" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26", + }, # node + "snmpDot3MauTraps" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.0", + }, # node + "dot3RpMauBasicGroup" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1", + }, # node + "rpMauTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1", + "status" : "current", + "description" : + """Table of descriptive and status information +about the MAU(s) attached to the ports of a +repeater.""", + }, # table + "rpMauEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1", + "status" : "current", + "linkage" : [ + "rpMauGroupIndex", + "rpMauPortIndex", + "rpMauIndex", + ], + "description" : + """An entry in the table, containing information +about a single MAU.""", + }, # row + "rpMauGroupIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the group +containing the port to which the MAU described +by this entry is connected. + +Note: In practice, a group will generally be +a field-replaceable unit (i.e., module, card, +or board) that can fit in the physical system +enclosure, and the group number will correspond +to a number marked on the physical enclosure. + +The group denoted by a particular value of this +object is the same as the group denoted by the +same value of rptrGroupIndex.""", + "reference>" : + """RFC 2108, rptrGroupIndex.""", + }, # column + "rpMauPortIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the repeater +port within group rpMauGroupIndex to which the +MAU described by this entry is connected.""", + "reference>" : + """RFC 2108, rptrPortIndex.""", + }, # column + "rpMauIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the MAU +described by this entry from among other +MAUs connected to the same port +(rpMauPortIndex).""", + "reference>" : + """[IEEE802.3], 30.5.1.1.1, aMAUID.""", + }, # column + "rpMauType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "AutonomousType"}, + }, + "access" : "readonly", + "description" : + """This object identifies the MAU type. Values for +standard IEEE 802.3 MAU types are defined in the +IANA maintained IANA-MAU-MIB module, as +OBJECT-IDENTITIES of dot3MauType. +If the MAU type is unknown, the object identifier +zeroDotZero is returned.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.2, aMAUType.""", + }, # column + "rpMauStatus" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "operational" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "standby" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "shutdown" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "reset" : { + "nodetype" : "namednumber", + "number" : "6" + }, + }, + }, + "access" : "readwrite", + "description" : + """The current state of the MAU. This object MAY +be implemented as a read-only object by those +agents and MAUs that do not implement software +control of the MAU state. Some agents may not +support setting the value of this object to some +of the enumerated values. + +The value other(1) is returned if the MAU is in +a state other than one of the states 2 through +6. + + + +The value unknown(2) is returned when the MAU's +true state is unknown; for example, when it is +being initialized. + +A MAU in the operational(3) state is fully +functional; it operates, and passes signals to its +attached DTE or repeater port in accordance to +its specification. + +A MAU in standby(4) state forces DI and CI to +idle, and the media transmitter to idle or fault, +if supported. Standby(4) mode only applies to +link type MAUs. The state of +rpMauMediaAvailable is unaffected. + +A MAU in shutdown(5) state assumes the same +condition on DI, CI, and the media transmitter, +as though it were powered down or not connected. +The MAU MAY return other(1) value for the +rpMauJabberState and rpMauMediaAvailable objects +when it is in this state. For an AUI, this +state will remove power from the AUI. + +Setting this variable to the value reset(6) +resets the MAU in the same manner as a +power-off, power-on cycle of at least one-half +second would. The agent is not required to +return the value reset(6). + +Setting this variable to the value +operational(3), standby(4), or shutdown(5) +causes the MAU to assume the respective state, +except that setting a mixing-type MAU or an AUI +to standby(4) will cause the MAU to enter the +shutdown state.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.7, aMAUAdminState, +30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, +acResetMAU.""", + }, # column + "rpMauMediaAvailable" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauMediaAvailable"}, + }, + "access" : "readonly", + "description" : + """This object identifies Media Available state of +the MAU, complementary to the rpMauStatus. Values +for the standard IEEE 802.3 Media Available states +are defined in the IANA maintained IANA-MAU-MIB + + + +module, as IANAifMauMediaAvailable TC.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.4, aMediaAvailable.""", + }, # column + "rpMauMediaAvailableStateExits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of times that +rpMauMediaAvailable for this MAU instance leaves +the state available(3). + +Discontinuities in the value of this counter can +occur at re-initialization of the management +system and at other times, as indicated by the +value of rptrMonitorPortLastChange.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. +RFC 2108, rptrMonitorPortLastChange""", + }, # column + "rpMauJabberState" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "noJabber" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "jabbering" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readonly", + "description" : + """The value other(1) is returned if the jabber +state is not 2, 3, or 4. The agent MUST always +return other(1) for MAU type dot3MauTypeAUI. + +The value unknown(2) is returned when the MAU's +true state is unknown; for example, when it is +being initialized. + +If the MAU is not jabbering the agent returns +noJabber(3). This is the 'normal' state. + +If the MAU is in jabber state the agent returns +the jabbering(4) value.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag.""", + }, # column + "rpMauJabberingStateEnters" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of times that +mauJabberState for this MAU instance enters the +state jabbering(4). For MAUs of type +dot3MauTypeAUI, dot3MauType100BaseT4, +dot3MauType100BaseTX, dot3MauType100BaseFX, and +all 1000Mbps types, this counter will always +indicate zero. + +Discontinuities in the value of this counter can +occur at re-initialization of the management +system and at other times, as indicated by the +value of rptrMonitorPortLastChange.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. +RFC 2108, rptrMonitorPortLastChange""", + }, # column + "rpMauFalseCarriers" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.1.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of false carrier events +during IDLE in 100BASE-X links. This counter +does not increment at the symbol rate. It can +increment after a valid carrier completion at a +maximum rate of once per 100 ms until the next +carrier event. + +This counter increments only for MAUs of type +dot3MauType100BaseT4, dot3MauType100BaseTX, +dot3MauType100BaseFX, and all 1000Mbps types. + +For all other MAU types, this counter will +always indicate zero. + +The approximate minimum time for rollover of +this counter is 7.4 hours. + +Discontinuities in the value of this counter can +occur at re-initialization of the management +system and at other times, as indicated by the +value of rptrMonitorPortLastChange.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.10, aFalseCarriers. +RFC 2108, rptrMonitorPortLastChange""", + }, # column + "rpJackTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.2", + "status" : "current", + "description" : + """Information about the external jacks attached +to MAUs attached to the ports of a repeater.""", + }, # table + "rpJackEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.2.1", + "status" : "current", + "linkage" : [ + "rpMauGroupIndex", + "rpMauPortIndex", + "rpMauIndex", + "rpJackIndex", + ], + "description" : + """An entry in the table, containing information +about a particular jack.""", + }, # row + "rpJackIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.2.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "noaccess", + "description" : + """This variable uniquely identifies the jack +described by this entry from among other jacks +attached to the same MAU (rpMauIndex).""", + }, # column + "rpJackType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.1.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifJackType"}, + }, + "access" : "readonly", + "description" : + """The jack connector type, as it appears on the +outside of the system.""", + }, # column + "dot3IfMauBasicGroup" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2", + }, # node + "ifMauTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1", + "status" : "current", + "description" : + """Table of descriptive and status information +about MAU(s) attached to an interface.""", + }, # table + "ifMauEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1", + "status" : "current", + "linkage" : [ + "ifMauIfIndex", + "ifMauIndex", + ], + "description" : + """An entry in the table, containing information +about a single MAU.""", + }, # row + "ifMauIfIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndex"}, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the interface +to which the MAU described by this entry is +connected.""", + "reference>" : + """RFC 2863, ifIndex""", + }, # column + "ifMauIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """This variable uniquely identifies the MAU +described by this entry from among other MAUs +connected to the same interface (ifMauIfIndex).""", + "reference>" : + """[IEEE802.3], 30.5.1.1.1, aMAUID.""", + }, # column + "ifMauType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "AutonomousType"}, + }, + "access" : "readonly", + "description" : + """This object identifies the MAU type. Values for +standard IEEE 802.3 MAU types are defined in the +IANA maintained IANA-MAU-MIB module, as +OBJECT-IDENTITIES of dot3MauType. +If the MAU type is unknown, the object identifier +zeroDotZero is returned. + +This object represents the operational type of +the MAU, as determined by either 1) the result +of the auto-negotiation function or 2) if +auto-negotiation is not enabled or is not +implemented for this MAU, by the value of the +object ifMauDefaultType. In case 2), a set to +the object ifMauDefaultType will force the MAU +into the new operating mode.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.2, aMAUType.""", + }, # column + "ifMauStatus" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "operational" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "standby" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "shutdown" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "reset" : { + "nodetype" : "namednumber", + "number" : "6" + }, + }, + }, + "access" : "readwrite", + "description" : + """The current state of the MAU. This object MAY +be implemented as a read-only object by those +agents and MAUs that do not implement software +control of the MAU state. Some agents may not + + + +support setting the value of this object to some +of the enumerated values. + +The value other(1) is returned if the MAU is in +a state other than one of the states 2 through +6. + +The value unknown(2) is returned when the MAU's +true state is unknown; for example, when it is +being initialized. + +A MAU in the operational(3) state is fully +functional; it operates, and passes signals to its +attached DTE or repeater port in accordance to +its specification. + +A MAU in standby(4) state forces DI and CI to +idle and the media transmitter to idle or fault, +if supported. Standby(4) mode only applies to +link type MAUs. The state of +ifMauMediaAvailable is unaffected. + +A MAU in shutdown(5) state assumes the same +condition on DI, CI, and the media transmitter, +as though it were powered down or not connected. +The MAU MAY return other(1) value for the +ifMauJabberState and ifMauMediaAvailable objects +when it is in this state. For an AUI, this +state will remove power from the AUI. + +Setting this variable to the value reset(6) +resets the MAU in the same manner as a +power-off, power-on cycle of at least one-half +second would. The agent is not required to +return the value reset(6). + +Setting this variable to the value +operational(3), standby(4), or shutdown(5) +causes the MAU to assume the respective state, +except that setting a mixing-type MAU or an AUI +to standby(4) will cause the MAU to enter the +shutdown state.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.7, aMAUAdminState, +30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, +acResetMAU.""", + }, # column + "ifMauMediaAvailable" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauMediaAvailable"}, + }, + "access" : "readonly", + "description" : + """This object identifies Media Available state of +the MAU, complementary to the ifMauStatus. Values +for the standard IEEE 802.3 Media Available states +are defined in the IANA maintained IANA-MAU-MIB +module, as IANAifMauMediaAvailable TC.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.4, aMediaAvailable.""", + }, # column + "ifMauMediaAvailableStateExits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of times that +ifMauMediaAvailable for this MAU instance leaves +the state available(3). + +Discontinuities in the value of this counter can +occur at re-initialization of the management +system and at other times, as indicated by the +value of ifCounterDiscontinuityTime.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. +RFC 2863, ifCounterDiscontinuityTime.""", + }, # column + "ifMauJabberState" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "unknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "noJabber" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "jabbering" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readonly", + "description" : + """The value other(1) is returned if the jabber +state is not 2, 3, or 4. The agent MUST always +return other(1) for MAU type dot3MauTypeAUI. + +The value unknown(2) is returned when the MAU's +true state is unknown; for example, when it is +being initialized. + +If the MAU is not jabbering the agent returns +noJabber(3). This is the 'normal' state. + +If the MAU is in jabber state the agent returns + + + +the jabbering(4) value.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag.""", + }, # column + "ifMauJabberingStateEnters" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of times that +mauJabberState for this MAU instance enters the +state jabbering(4). This counter will always +indicate zero for MAUs of type dot3MauTypeAUI +and those of speeds above 10Mbps. + +Discontinuities in the value of this counter can +occur at re-initialization of the management +system and at other times, as indicated by the +value of ifCounterDiscontinuityTime.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. +RFC 2863, ifCounterDiscontinuityTime.""", + }, # column + "ifMauFalseCarriers" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """A count of the number of false carrier events +during IDLE in 100BASE-X and 1000BASE-X links. + +For all other MAU types, this counter will +always indicate zero. This counter does not +increment at the symbol rate. + +It can increment after a valid carrier +completion at a maximum rate of once per 100 ms +for 100BASE-X and once per 10us for 1000BASE-X +until the next CarrierEvent. + +This counter can roll over very quickly. A +management station is advised to poll the +ifMauHCFalseCarriers instead of this counter in +order to avoid loss of information. + +Discontinuities in the value of this counter can +occur at re-initialization of the management +system and at other times, as indicated by the +value of ifCounterDiscontinuityTime.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + +RFC 2863, ifCounterDiscontinuityTime.""", + }, # column + "ifMauTypeList" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.10", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object has been deprecated in favour of +ifMauTypeListBits. + +A value that uniquely identifies the set of +possible IEEE 802.3 types that the MAU could be. +The value is a sum that initially takes the +value zero. Then, for each type capability of +this MAU, 2 raised to the power noted below is +added to the sum. For example, a MAU that has +the capability to be only 10BASE-T would have a +value of 512 (2**9). In contrast, a MAU that +supports both 10Base-T (full duplex) and +100BASE-TX (full duplex) would have a value of +((2**11) + (2**16)), or 67584. + +The powers of 2 assigned to the capabilities are +these: + +Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + +If auto-negotiation is present on this MAU, this +object will map to ifMauAutoNegCapability.""", + }, # column + "ifMauDefaultType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "AutonomousType"}, + }, + "access" : "readwrite", + "description" : + """This object identifies the default +administrative baseband MAU type to be used in +conjunction with the operational MAU type +denoted by ifMauType. + +The set of possible values for this object is +the same as the set defined for the ifMauType +object. + +This object represents the +administratively-configured type of the MAU. If +auto-negotiation is not enabled or is not +implemented for this MAU, the value of this +object determines the operational type of the +MAU. In this case, a set to this object will +force the MAU into the specified operating mode. + +If auto-negotiation is implemented and enabled +for this MAU, the operational type of the MAU +is determined by auto-negotiation, and the value +of this object denotes the type to which the MAU +will automatically revert if/when +auto-negotiation is later disabled. + +NOTE TO IMPLEMENTORS: It may be necessary to +provide for underlying hardware implementations +which do not follow the exact behavior specified +above. In particular, when +ifMauAutoNegAdminStatus transitions from enabled +to disabled, the agent implementation MUST +ensure that the operational type of the MAU (as +reported by ifMauType) correctly transitions to +the value specified by this object, rather than +continuing to operate at the value earlier +determined by the auto-negotiation function.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4.""", + }, # column + "ifMauAutoNegSupported" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.12", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TruthValue"}, + }, + "access" : "readonly", + "description" : + """This object indicates whether or not +auto-negotiation is supported on this MAU.""", + }, # column + "ifMauTypeListBits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.13", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauTypeListBits"}, + }, + "access" : "readonly", + "description" : + """A value that uniquely identifies the set of +possible IEEE 802.3 types that the MAU could be. +If auto-negotiation is present on this MAU, this +object will map to ifMauAutoNegCapabilityBits. + +Note that this MAU may be capable of operating +as a MAU type that is beyond the scope of this +MIB. This is indicated by returning the +bit value bOther in addition to any bit values +for standard capabilities that are listed in the +IANAifMauTypeListBits TC.""", + }, # column + "ifMauHCFalseCarriers" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.1.1.14", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter64"}, + }, + "access" : "readonly", + "description" : + """A count of the number of false carrier events +during IDLE in 100BASE-X and 1000BASE-X links. + +For all other MAU types, this counter will +always indicate zero. This counter does not +increment at the symbol rate. + +This counter is a 64-bit version of +ifMauFalseCarriers. Since the 32-bit version of +this counter can roll over very quickly, +management stations are advised to poll the +64-bit version instead, in order to avoid loss +of information. + +Discontinuities in the value of this counter can +occur at re-initialization of the management +system and at other times, as indicated by the +value of ifCounterDiscontinuityTime.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + +RFC 2863, ifCounterDiscontinuityTime.""", + }, # column + "ifJackTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.2", + "status" : "current", + "description" : + """Information about the external jacks attached +to MAUs attached to an interface.""", + }, # table + "ifJackEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.2.1", + "status" : "current", + "linkage" : [ + "ifMauIfIndex", + "ifMauIndex", + "ifJackIndex", + ], + "description" : + """An entry in the table, containing information +about a particular jack.""", + }, # row + "ifJackIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.2.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "noaccess", + "description" : + """This variable uniquely identifies the jack +described by this entry from among other jacks +attached to the same MAU.""", + }, # column + "ifJackType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.2.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifJackType"}, + }, + "access" : "readonly", + "description" : + """The jack connector type, as it appears on the +outside of the system.""", + }, # column + "dot3BroadMauBasicGroup" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3", + }, # node + "broadMauBasicTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1", + "status" : "deprecated", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This entire table has been deprecated. There +have been no reported implementations of this +table, and it is unlikely that there ever will +be. IEEE recommends that broadband MAU types +should not be used for new installations. + +Table of descriptive and status information + + + +about the broadband MAUs connected to +interfaces.""", + }, # table + "broadMauBasicEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1", + "status" : "deprecated", + "linkage" : [ + "broadMauIfIndex", + "broadMauIndex", + ], + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +An entry in the table, containing information +about a single broadband MAU.""", + }, # row + "broadMauIfIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"IF-MIB", "name" : "InterfaceIndex"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This variable uniquely identifies the interface +to which the MAU described by this entry is +connected.""", + "reference>" : + """RFC 2863, ifIndex.""", + }, # column + "broadMauIndex" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This variable uniquely identifies the MAU +connected to interface broadMauIfIndex that is + + + +described by this entry.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.1, aMAUID.""", + }, # column + "broadMauXmtRcvSplitType" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "single" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "dual" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object indicates the type of frequency +multiplexing/cabling system used to separate the +transmit and receive paths for the 10BROAD36 +MAU. + +The value other(1) is returned if the split type +is not either single or dual. + +The value single(2) indicates a single cable +system. The value dual(3) indicates a dual +cable system, offset normally zero.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType.""", + }, # column + "broadMauXmtCarrierFreq" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This variable indicates the transmit carrier +frequency of the 10BROAD36 MAU in MHz/4; that +is, in units of 250 kHz.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.9, +aBroadbandFrequencies.xmitCarrierFrequency.""", + }, # column + "broadMauTranslationFreq" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.3.1.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This variable indicates the translation offset + + + +frequency of the 10BROAD36 MAU in MHz/4; that +is, in units of 250 kHz.""", + "reference>" : + """[IEEE802.3], 30.5.1.1.9, +aBroadbandFrequencies.translationFrequency.""", + }, # column + "dot3IfMauAutoNegGroup" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5", + }, # node + "ifMauAutoNegTable" : { + "nodetype" : "table", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1", + "status" : "current", + "description" : + """Configuration and status objects for the +auto-negotiation function of MAUs attached to +interfaces. + +The ifMauAutoNegTable applies to systems in +which auto-negotiation is supported on one or +more MAUs attached to interfaces. Note that if +auto-negotiation is present and enabled, the +ifMauType object reflects the result of the +auto-negotiation function.""", + }, # table + "ifMauAutoNegEntry" : { + "nodetype" : "row", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1", + "status" : "current", + "linkage" : [ + "ifMauIfIndex", + "ifMauIndex", + ], + "description" : + """An entry in the table, containing configuration +and status information for the auto-negotiation +function of a particular MAU.""", + }, # row + "ifMauAutoNegAdminStatus" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "enabled" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "disabled" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """Setting this object to enabled(1) will cause +the interface that has the auto-negotiation +signaling ability to be enabled. + +If the value of this object is disabled(2) then +the interface will act as it would if it had no +auto-negotiation signaling. Under these +conditions, an IEEE 802.3 MAU will immediately +be forced to the state indicated by the value of +the object ifMauDefaultType. + +NOTE TO IMPLEMENTORS: When +ifMauAutoNegAdminStatus transitions from enabled +to disabled, the agent implementation MUST +ensure that the operational type of the MAU (as +reported by ifMauType) correctly transitions to +the value specified by the ifMauDefaultType +object, rather than continuing to operate at the +value earlier determined by the auto-negotiation +function.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, +and 30.6.1.2.2, acAutoNegAdminControl.""", + }, # column + "ifMauAutoNegRemoteSignaling" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "detected" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "notdetected" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readonly", + "description" : + """A value indicating whether the remote end of +the link is using auto-negotiation signaling. It +takes the value detected(1) if and only if, +during the previous link negotiation, FLP Bursts +were received.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.3, +aAutoNegRemoteSignaling.""", + }, # column + "ifMauAutoNegConfig" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "configuring" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "complete" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "disabled" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "parallelDetectFail" : { + "nodetype" : "namednumber", + "number" : "5" + }, + }, + }, + "access" : "readonly", + "description" : + """A value indicating the current status of the +auto-negotiation process. The enumeration +parallelDetectFail(5) maps to a failure in +parallel detection as defined in 28.2.3.1 of +[IEEE802.3].""", + "reference>" : + """[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig.""", + }, # column + "ifMauAutoNegCapability" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object has been deprecated in favour of +ifMauAutoNegCapabilityBits. + +A value that uniquely identifies the set of +capabilities of the local auto-negotiation +entity. The value is a sum that initially +takes the value zero. Then, for each capability +of this interface, 2 raised to the power noted +below is added to the sum. For example, an +interface that has the capability to support +only 100Base-TX half duplex would have a value +of 32768 (2**15). In contrast, an interface +that supports both 100Base-TX half duplex and +100Base-TX full duplex would have a value of +98304 ((2**15) + (2**16)). + +The powers of 2 assigned to the capabilities are +these: + +Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + +Note that interfaces that support this MIB may +have capabilities that extend beyond the scope +of this MIB.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.5, +aAutoNegLocalTechnologyAbility.""", + }, # column + "ifMauAutoNegCapAdvertised" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readwrite", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object has been deprecated in favour of +ifMauAutoNegCapAdvertisedBits. + +A value that uniquely identifies the set of +capabilities advertised by the local +auto-negotiation entity. Refer to +ifMauAutoNegCapability for a description of the +possible values of this object. + +Capabilities in this object that are not +available in ifMauAutoNegCapability cannot be +enabled.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.6, +aAutoNegAdvertisedTechnologyAbility.""", + }, # column + "ifMauAutoNegCapReceived" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.7", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "description" : + """********* THIS OBJECT IS DEPRECATED ********** + +This object has been deprecated in favour of +ifMauAutoNegCapReceivedBits. + +A value that uniquely identifies the set of + + + +capabilities received from the remote +auto-negotiation entity. Refer to +ifMauAutoNegCapability for a description of the +possible values of this object. + +Note that interfaces that support this MIB may +be attached to remote auto-negotiation entities +that have capabilities beyond the scope of this +MIB.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.7, +aAutoNegReceivedTechnologyAbility.""", + }, # column + "ifMauAutoNegRestart" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "restart" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "norestart" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """If the value of this object is set to +restart(1) then this will force auto-negotiation +to begin link renegotiation. If auto-negotiation +signaling is disabled, a write to this object +has no effect. +Setting the value of this object to norestart(2) +has no effect.""", + "reference>" : + """[IEEE802.3], 30.6.1.2.1, +acAutoNegRestartAutoConfig.""", + }, # column + "ifMauAutoNegCapabilityBits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauAutoNegCapBits"}, + }, + "access" : "readonly", + "description" : + """A value that uniquely identifies the set of +capabilities of the local auto-negotiation +entity. Note that interfaces that support this +MIB may have capabilities that extend beyond the +scope of this MIB. + +Note that the local auto-negotiation entity may +support some capabilities beyond the scope of +this MIB. This is indicated by returning the +bit value bOther in addition to any bit values +for standard capabilities that are listed in the +IANAifMauAutoNegCapBits TC.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.5, +aAutoNegLocalTechnologyAbility.""", + }, # column + "ifMauAutoNegCapAdvertisedBits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauAutoNegCapBits"}, + }, + "access" : "readwrite", + "description" : + """A value that uniquely identifies the set of +capabilities advertised by the local +auto-negotiation entity. + +Capabilities in this object that are not +available in ifMauAutoNegCapabilityBits cannot +be enabled. + +Note that the local auto-negotiation entity may +advertise some capabilities beyond the scope of +this MIB. This is indicated by returning the +bit value bOther in addition to any bit values +for standard capabilities that are listed in the +IANAifMauAutoNegCapBits TC.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.6, +aAutoNegAdvertisedTechnologyAbility.""", + }, # column + "ifMauAutoNegCapReceivedBits" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"IANA-MAU-MIB", "name" : "IANAifMauAutoNegCapBits"}, + }, + "access" : "readonly", + "description" : + """A value that uniquely identifies the set of +capabilities received from the remote +auto-negotiation entity. +Note that interfaces that support this MIB may +be attached to remote auto-negotiation entities +that have capabilities beyond the scope of this +MIB. This is indicated by returning the bit +value bOther in addition to any bit values for +standard capabilities that are listed in the +IANAifMauAutoNegCapBits TC.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.7, +aAutoNegReceivedTechnologyAbility.""", + }, # column + "ifMauAutoNegRemoteFaultAdvertised" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.12", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "noError" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "offline" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "linkFailure" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "autoNegError" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readwrite", + "description" : + """A value that identifies any local fault +indications that this MAU has detected and will +advertise at the next auto-negotiation +interaction for 1000Mbps MAUs.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.6, +aAutoNegAdvertisedTechnologyAbility.""", + }, # column + "ifMauAutoNegRemoteFaultReceived" : { + "nodetype" : "column", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.5.1.1.13", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "noError" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "offline" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "linkFailure" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "autoNegError" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readonly", + "description" : + """A value that identifies any fault indications +received from the far end of a link by the +local auto-negotiation entity for 1000Mbps +MAUs.""", + "reference>" : + """[IEEE802.3], 30.6.1.1.7, +aAutoNegReceivedTechnologyAbility.""", + }, # column + "mauMod" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6", + "status" : "current", + }, # node + "mauModConf" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1", + }, # node + "mauModCompls" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1", + }, # node + "mauModObjGrps" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2", + }, # node + "mauModNotGrps" : { + "nodetype" : "node", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.3", + }, # node + }, # nodes + + "notifications" : { + "rpMauJabberTrap" : { + "nodetype" : "notification", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.0.1", + "status" : "current", + "objects" : { + "rpMauJabberState" : { + "nodetype" : "object", + "module" : "MAU-MIB" + }, + }, + "description" : + """This trap is sent whenever a managed repeater +MAU enters the jabber state. + +The agent MUST throttle the generation of +consecutive rpMauJabberTraps so that there is at +least a five-second gap between them.""", + "reference>" : + """[IEEE802.3], 30.5.1.3.1, nJabber notification.""", + }, # notification + "ifMauJabberTrap" : { + "nodetype" : "notification", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.0.2", + "status" : "current", + "objects" : { + "ifMauJabberState" : { + "nodetype" : "object", + "module" : "MAU-MIB" + }, + }, + "description" : + """This trap is sent whenever a managed interface +MAU enters the jabber state. + +The agent MUST throttle the generation of +consecutive ifMauJabberTraps so that there is at +least a five-second gap between them.""", + "reference>" : + """[IEEE802.3], 30.5.1.3.1, nJabber notification.""", + }, # notification + }, # notifications + + "groups" : { + "mauRpGrpBasic" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.1", + "status" : "current", + "members" : { + "rpMauGroupIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauPortIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauStatus" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauMediaAvailable" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauMediaAvailableStateExits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauJabberState" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "rpMauJabberingStateEnters" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Basic conformance group for MAUs attached to +repeater ports. This group is also the +conformance specification for RFC 1515 +implementations.""", + }, # group + "mauRpGrp100Mbs" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.2", + "status" : "current", + "members" : { + "rpMauFalseCarriers" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +repeater ports with 100 Mb/s or greater +capability.""", + }, # group + "mauRpGrpJack" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.3", + "status" : "current", + "members" : { + "rpJackType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +repeater ports with managed jacks.""", + }, # group + "mauIfGrpBasic" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.4", + "status" : "current", + "members" : { + "ifMauIfIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauStatus" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauMediaAvailable" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauMediaAvailableStateExits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauJabberState" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauJabberingStateEnters" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Basic conformance group for MAUs attached to +interfaces. This group also provides a +conformance specification for RFC 1515 +implementations.""", + }, # group + "mauIfGrp100Mbs" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.5", + "status" : "deprecated", + "members" : { + "ifMauFalseCarriers" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauTypeList" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauDefaultType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegSupported" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """********* THIS GROUP IS DEPRECATED ********** + +Conformance group for MAUs attached to +interfaces with 100 Mb/s capability. + +This object group has been deprecated in favor +of mauIfGrpHighCapacity.""", + }, # group + "mauIfGrpJack" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.6", + "status" : "current", + "members" : { + "ifJackType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +interfaces with managed jacks.""", + }, # group + "mauIfGrpAutoNeg" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.7", + "status" : "deprecated", + "members" : { + "ifMauAutoNegAdminStatus" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRemoteSignaling" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegConfig" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapability" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapAdvertised" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapReceived" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRestart" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """********* THIS GROUP IS DEPRECATED ********** + +Conformance group for MAUs attached to +interfaces with managed auto-negotiation. + +This object group has been deprecated in favor +of mauIfGrpAutoNeg2.""", + }, # group + "mauBroadBasic" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.8", + "status" : "deprecated", + "members" : { + "broadMauIfIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "broadMauIndex" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "broadMauXmtRcvSplitType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "broadMauXmtCarrierFreq" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "broadMauTranslationFreq" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """********* THIS GROUP IS DEPRECATED ********** +Conformance group for broadband MAUs attached +to interfaces. + +This object group is deprecated. There have +been no reported implementations of this group, +and it was felt to be unlikely that there will +be any future implementations.""", + }, # group + "mauIfGrpHighCapacity" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.9", + "status" : "current", + "members" : { + "ifMauFalseCarriers" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauTypeListBits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauDefaultType" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegSupported" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +interfaces with 100 Mb/s or greater capability.""", + }, # group + "mauIfGrpAutoNeg2" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.10", + "status" : "current", + "members" : { + "ifMauAutoNegAdminStatus" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRemoteSignaling" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegConfig" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapabilityBits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapAdvertisedBits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegCapReceivedBits" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRestart" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for MAUs attached to +interfaces with managed auto-negotiation.""", + }, # group + "mauIfGrpAutoNeg1000Mbps" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.11", + "status" : "current", + "members" : { + "ifMauAutoNegRemoteFaultAdvertised" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + "ifMauAutoNegRemoteFaultReceived" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance group for 1000Mbps MAUs attached to +interfaces with managed auto-negotiation.""", + }, # group + "mauIfGrpHCStats" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.2.12", + "status" : "current", + "members" : { + "ifMauHCFalseCarriers" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Conformance for high capacity statistics for +MAUs attached to interfaces.""", + }, # group + "rpMauNotifications" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.3.1", + "status" : "current", + "members" : { + "rpMauJabberTrap" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Notifications for repeater MAUs.""", + }, # group + "ifMauNotifications" : { + "nodetype" : "group", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.3.2", + "status" : "current", + "members" : { + "ifMauJabberTrap" : { + "nodetype" : "member", + "module" : "MAU-MIB" + }, + }, # members + "description" : + """Notifications for interface MAUs.""", + }, # group + }, # groups + + "compliances" : { + "mauModRpCompl" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.1", + "status" : "deprecated", + "description" : + """******** THIS COMPLIANCE IS DEPRECATED ******** +Compliance for MAUs attached to repeater +ports. + +This compliance is deprecated and replaced by +mauModRpCompl2, which corrects an oversight by +allowing rpMauStatus to be implemented +read-only.""", + "requires" : { + "mauRpGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauRpGrp100Mbs" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s or +greater capability.""", + }, + "mauRpGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "rpMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to repeater ports.""", + }, + }, # requires + }, # compliance + "mauModIfCompl" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.2", + "status" : "deprecated", + "description" : + """******** THIS COMPLIANCE IS DEPRECATED ******** + +Compliance for MAUs attached to interfaces. +This compliance is deprecated and replaced by +mauModIfCompl2.""", + "requires" : { + "mauIfGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauIfGrp100Mbs" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s +capability.""", + }, + "mauIfGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "mauIfGrpAutoNeg" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that support managed +auto-negotiation.""", + }, + "mauBroadBasic" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for broadband MAUs.""", + }, + "ifMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to interfaces.""", + }, + }, # requires + }, # compliance + "mauModIfCompl2" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.3", + "status" : "deprecated", + "description" : + """******** THIS COMPLIANCE IS DEPRECATED ******** + +Compliance for MAUs attached to interfaces. + +This compliance is deprecated and replaced by +mauModIfCompl3.""", + "requires" : { + "mauIfGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauIfGrpHighCapacity" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s +or greater capability.""", + }, + "mauIfGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "mauIfGrpAutoNeg2" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that support managed +auto-negotiation.""", + }, + "mauIfGrpAutoNeg1000Mbps" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that have 1000Mb/s or greater +capability and support managed +auto-negotiation.""", + }, + "ifMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to interfaces.""", + }, + }, # requires + "refinements" : { + "ifMauStatus" : { + "module" : "MAU-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + "mauModRpCompl2" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.4", + "status" : "current", + "description" : + """Compliance for MAUs attached to repeater +ports. + +Note that compliance with this compliance +statement requires compliance with the +snmpRptrModCompl MODULE-COMPLIANCE statement of +the SNMP-REPEATER-MIB (RFC 2108).""", + "requires" : { + "mauRpGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauRpGrp100Mbs" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s or +greater capability.""", + }, + "mauRpGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "rpMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to repeater ports.""", + }, + }, # requires + "refinements" : { + "rpMauStatus" : { + "module" : "MAU-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + "mauModIfCompl3" : { + "nodetype" : "compliance", + "moduleName" : "MAU-MIB", + "oid" : "1.3.6.1.2.1.26.6.1.1.5", + "status" : "current", + "description" : + """Compliance for MAUs attached to interfaces. + +Note that compliance with this compliance +statement requires compliance with the +ifCompliance3 MODULE-COMPLIANCE statement of the +IF-MIB (RFC 2863) and the dot3Compliance2 +MODULE-COMPLIANCE statement of the +EtherLike-MIB (RFC3635).""", + "requires" : { + "mauIfGrpBasic" : { + "nodetype" : "mandatory", + "module" : "MAU-MIB" + }, + "mauIfGrpHighCapacity" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have 100Mb/s +or greater capability.""", + }, + "mauIfGrpHCStats" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that have 1000Mb/s capacity, and +is recommended for MAUs that have 100Mb/s +capacity.""", + }, + "mauIfGrpJack" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this optional group is +recommended for MAUs that have one or more +external jacks.""", + }, + "mauIfGrpAutoNeg2" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that support managed +auto-negotiation.""", + }, + "mauIfGrpAutoNeg1000Mbps" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is mandatory +for MAUs that have 1000Mb/s or greater +capability and support managed +auto-negotiation.""", + }, + "ifMauNotifications" : { + "nodetype" : "optional", + "module" : "MAU-MIB", + "description" : + """Implementation of this group is recommended +for MAUs attached to interfaces.""", + }, + }, # requires + "refinements" : { + "ifMauStatus" : { + "module" : "MAU-MIB", + "access" : "readonly", + "description" : + """Write access is not required.""", + }, + }, # refinements + + }, # compliance + }, # compliances + +} diff --git a/test/dumps/python/Makefile.am b/test/dumps/python/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/python/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/python/Makefile.in b/test/dumps/python/Makefile.in new file mode 100644 index 0000000..b866e0a --- /dev/null +++ b/test/dumps/python/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/python +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/python/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/python/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/python/RMON2-MIB b/test/dumps/python/RMON2-MIB new file mode 100644 index 0000000..3c5af14 --- /dev/null +++ b/test/dumps/python/RMON2-MIB @@ -0,0 +1,8224 @@ +# python version 1.0 DO NOT EDIT +# +# Generated by smidump version 0.4.8: +# +# smidump -f python RMON2-MIB + +FILENAME = "../../mibs/ietf/RMON2-MIB" + +MIB = { + "moduleName" : "RMON2-MIB", + + "RMON2-MIB" : { + "nodetype" : "module", + "language" : "SMIv2", + "organization" : + """IETF RMON MIB Working Group""", + "contact" : + """Author: +Steve Waldbusser +Phone: +1-650-948-6500 +Fax : +1-650-745-0671 +Email: waldbusser@nextbeacon.com + +Working Group Chair: +Andy Bierman +E-mail: ietf@andybierman.com + +Working Group Mailing List: +To subscribe send email to: """, + "description" : + """The MIB module for managing remote monitoring +device implementations. This MIB module +extends the architecture introduced in the original +RMON MIB as specified in RFC 2819. + +Copyright (C) The Internet Society (2006). This version of +this MIB module is part of RFC 4502; see the RFC itself for +full legal notices.""", + "revisions" : ( + { + "date" : "2006-05-02 00:00", + "description" : + """This version updates the proposed-standard version of the +RMON2 MIB (published as RFC 2021) by adding 2 new +enumerations to the nlMatrixTopNControlRateBase object and +4 new enumerations to the alMatrixTopNControlRateBase object. +These new enumerations support the creation of high-capacity +topN reports in the High Capacity RMON MIB [RFC3273]. + +Additionally, the following objects have been deprecated, as +they have not had enough independent implementations to +demonstrate interoperability to meet the requirements of a +Draft Standard: + +probeDownloadFile +probeDownloadTFTPServer +probeDownloadAction +probeDownloadStatus + + + +serialMode +serialProtocol +serialTimeout +serialModemInitString +serialModemHangUpString +serialModemConnectResp +serialModemNoConnectResp +serialDialoutTimeout +serialStatus +serialConnectDestIpAddress +serialConnectType +serialConnectDialString +serialConnectSwitchConnectSeq +serialConnectSwitchDisconnectSeq +serialConnectSwitchResetSeq +serialConnectOwner +serialConnectStatus +netConfigIPAddress +netConfigSubnetMask +netConfigStatus +netDefaultGateway +tokenRingMLStats2DroppedFrames +tokenRingMLStats2CreateTime +tokenRingPStats2DroppedFrames +tokenRingPStats2CreateTime +ringStationControl2DroppedFrames +ringStationControl2CreateTime +sourceRoutingStats2DroppedFrames +sourceRoutingStats2CreateTime +trapDestIndex +trapDestCommunity +trapDestProtocol +trapDestAddress +trapDestOwner +trapDestStatus + +In addition, two corrections were made. The LastCreateTime +Textual Convention had been defined with a base type of +another textual convention, which isn't allowed in SMIv2. The +definition has been modified to use TimeTicks as the base +type. + +Further, the SerialConfigEntry SEQUENCE definition included +sub-typing information that is not allowed in SMIv2. This +information has been deleted. Ranges were added to a number of +objects and textual-conventions to constrain their maximum +(and sometimes minimum) sizes. The addition of these ranges +documents existing practice for these objects. These objects + + + +are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + +Finally, the TimeFilter TC has been updated to encourage agent +implementations that allow a MIB walk to behave well even when +performed by an application that is not aware of the special +TimeFilter semantics.""", + }, + { + "date" : "2002-07-08 00:00", + "description" : + """Added new enumerations to support the High-Capacity RMON +MIB as defined in RFC 3273. Also fixed some typos and +added clarifications.""", + }, + { + "date" : "1996-05-27 00:00", + "description" : + """Original version. Published as RFC 2021.""", + }, + ), + "identity node" : "rmon", + }, + + "imports" : ( + {"module" : "SNMPv2-SMI", "name" : "MODULE-IDENTITY"}, + {"module" : "SNMPv2-SMI", "name" : "OBJECT-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "Counter32"}, + {"module" : "SNMPv2-SMI", "name" : "Integer32"}, + {"module" : "SNMPv2-SMI", "name" : "Gauge32"}, + {"module" : "SNMPv2-SMI", "name" : "IpAddress"}, + {"module" : "SNMPv2-SMI", "name" : "TimeTicks"}, + {"module" : "SNMPv2-SMI", "name" : "mib-2"}, + {"module" : "SNMPv2-TC", "name" : "TEXTUAL-CONVENTION"}, + {"module" : "SNMPv2-TC", "name" : "RowStatus"}, + {"module" : "SNMPv2-TC", "name" : "DisplayString"}, + {"module" : "SNMPv2-TC", "name" : "TimeStamp"}, + {"module" : "SNMPv2-CONF", "name" : "MODULE-COMPLIANCE"}, + {"module" : "SNMPv2-CONF", "name" : "OBJECT-GROUP"}, + {"module" : "IF-MIB", "name" : "ifIndex"}, + {"module" : "RMON-MIB", "name" : "OwnerString"}, + {"module" : "RMON-MIB", "name" : "statistics"}, + {"module" : "RMON-MIB", "name" : "history"}, + {"module" : "RMON-MIB", "name" : "hosts"}, + {"module" : "RMON-MIB", "name" : "matrix"}, + {"module" : "RMON-MIB", "name" : "filter"}, + {"module" : "RMON-MIB", "name" : "etherStatsEntry"}, + {"module" : "RMON-MIB", "name" : "historyControlEntry"}, + {"module" : "RMON-MIB", "name" : "hostControlEntry"}, + {"module" : "RMON-MIB", "name" : "matrixControlEntry"}, + {"module" : "RMON-MIB", "name" : "filterEntry"}, + {"module" : "RMON-MIB", "name" : "channelEntry"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "tokenRing"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "tokenRingMLStatsEntry"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "tokenRingPStatsEntry"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "ringStationControlEntry"}, + {"module" : "TOKEN-RING-RMON-MIB", "name" : "sourceRoutingStatsEntry"}, + ), + + "typedefs" : { + "ZeroBasedCounter32" : { + "basetype" : "Unsigned32", + "status" : "current", + "parent module" : { + "name" : "SNMPv2-SMI", + "type" : "Gauge32", + }, + "description" : + """This TC describes an object that 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.""", + }, + "LastCreateTime" : { + "basetype" : "Unsigned32", + "status" : "current", + "parent module" : { + "name" : "SNMPv2-SMI", + "type" : "TimeTicks", + }, + "description" : + """This TC describes an object that stores the value of the +sysUpTime object at 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. + +If sysUpTime is reset to zero as a result of a re- +initialization of the network management (sub)system, then +the values of all LastCreateTime objects are also reset. +However, after approximately 497 days without a re- +initialization, the sysUpTime object will reach 2^^32-1 and +then increment to zero; in this case, existing values +of TimeStamp objects do not change. This can lead to +ambiguities in the value of TimeStamp objects.""", + }, + "TimeFilter" : { + "basetype" : "Unsigned32", + "status" : "current", + "parent module" : { + "name" : "SNMPv2-SMI", + "type" : "TimeTicks", + }, + "description" : + """To be used for the index to a table. Allows an application +to download only those rows changed since a particular time. + + + +Note that this is not a history mechanism. Only current values +of underlying objects are returned; saved instance values +associated with particular values of sysUpTime are not. + +An entry is considered changed if the value of any object in the +entry changes, if the row is created, or if any object in the +entry is created or deleted. Note that deleted entries cannot +be detected or downloaded. + +A time-filtered conceptual table is created by inserting a +single object of SYNTAX TimeFilter as the first INDEX component +in a copy of an existing basic conceptual table (i.e., any +SEQUENCE without a TimeFilter INDEX component). Thus, for +each conceptual entry 'I' in the basic table, there exists N +conceptual entries in the time-filtered version, indexed N.I, +where 'N' is equal to the value of sysUpTime. + +When an application retrieves conceptual instances from a +time-filtered table, and an INDEX value is provided for the +TimeFilter INDEX component 'N', the agent will only consider +returning basic conceptual entries (e.g., 'fooColumn.N.I') if +any column within the basic conceptual entry has changed since +sysUpTime 'N'. If not, the basic conceptual entry will +be ignored for the particular retrieval operation. + +When sysUpTime is equal to zero, this table shall be empty. + +One conceptual entry exists for each past value of sysUpTime, +except that the whole table is purged should sysUpTime wrap. + +As an entry in a time-filtered table is updated (i.e., one of +the columns in the basic conceptual table is changed), new +conceptual entries are also created in the time-filtered version +(which still shares the now updated object values with all other +instances). The number of unique time-filtered instances that +are created is determined by the value of sysUpTime at which the +basic entry was last updated. One unique instance will exist +for each value of sysUpTime at the last update time for the row. +However, a new TimeFilter index instance is created for each new +sysUpTime value. The TimeFilter index values not associated +with entry updates are called duplicate time-filtered instances. + +After some deployment experience, it has been determined that +a time-filtered table is more efficient if the agent +stops a MIB walk operation by skipping over rows with a +TimeFilter index value higher than the value in the received +GetNext/GetBulk request. That is, instead of incrementing a +TimeFilter index value, the agent will continue to the next + + + +object or table. As a consequence, GetNext or GetBulk +operations will provide only one pass through a time-filtered +table. + +It is suggested that an agent implement a time-filtered table +in this manner to improve performance and avoid a MIB walk +getting stuck in time-filtered tables. It is, however, still +acceptable for an agent to implement a time-filtered table in +the traditional manner (i.e., every conceptual time-filtered +instance is returned in GetNext and GetBulk PDU responses), and +management applications must be able to deal with such +traditional implementations. + +See the appendix for further discussion of this textual +convention. + +The following example is provided to demonstrate TimeFilter +behavior: + +Consider the following basic conceptual table, basicFooTable. +(Note that the basic version of a time-filtered table may not +actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + +For this example, the basicFooTable contains two static +conceptual entries (fooIndex equals '1' and '2'), created at +time zero. It also contains one dynamic conceptual entry +(fooIndex equals '3'), which is created at time '3' and deleted +at time '7'. + +The time-filtered version of the basicFooTable could be defined +as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + +Note that entries exist in the time-filtered conceptual table +only if they actually exist in the underlying (basic) table. + +For this example, the fooTable will have three underlying +basic entries (fooIndex == 1, 2, and 3), with the following +activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + +The following tables show the values that would be returned for +MIB walk operations with various TimeFilter values, done at +different times. An application issues a retrieval request at +time 'T', with a TimeFilter value, 'N' (typically set to a lower +value, such as the value of sysUpTime at the last polling cycle). + +The following values would be returned in a MIB walk of +fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + +The following values would be returned in a full (traditional) MIB +walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + +The following values would be returned in a full (traditional) +MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + +The following values would be returned in a full (traditional) +MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk.""", + }, + "DataSource" : { + "basetype" : "ObjectIdentifier", + "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 [RFC2863], for the desired interface. + +For example, if an entry were to receive data from +interface #1, this object would be set to ifIndex.1.""", + }, + "ControlString" : { + "basetype" : "OctetString", + "status" : "current", + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + "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 store 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, i.e., + 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.""", + }, + }, # typedefs + + "nodes" : { + "rmon" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16", + "status" : "current", + }, # node + "etherStats2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.4", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "etherStats2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.4.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "etherStatsEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "etherStatsDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.4.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "etherStatsCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "tokenRingMLStats2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.5", + "status" : "deprecated", + "description" : + """Contains the RMON-2 augmentations to RMON-1. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "tokenRingMLStats2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.5.1", + "status" : "deprecated", + "linkage" : [ + { "TOKEN-RING-RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "tokenRingMLStatsEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "tokenRingMLStatsDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.5.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "tokenRingMLStatsCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.5.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "tokenRingPStats2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.6", + "status" : "deprecated", + "description" : + """Contains the RMON-2 augmentations to RMON-1. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "tokenRingPStats2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.6.1", + "status" : "deprecated", + "linkage" : [ + { "TOKEN-RING-RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "tokenRingPStatsEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "tokenRingPStatsDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.6.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "tokenRingPStatsCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.1.6.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "historyControl2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.2.5", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "historyControl2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.2.5.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "historyControlEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "historyControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.2.5.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "hostControl2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.4.4", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "hostControl2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.4.4.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "hostControlEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "hostControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.4.4.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "hostControlCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.4.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "matrixControl2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.6.4", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "matrixControl2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.6.4.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "matrixControlEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "matrixControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.6.4.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "matrixControlCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.6.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "channel2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.3", + "status" : "current", + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # table + "channel2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.3.1", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "channelEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "channelDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.3.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "channelCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.3.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "filter2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.4", + "status" : "current", + "description" : + """Provides a variable-length packet filter feature to the +RMON-1 filter table.""", + }, # table + "filter2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.4.1", + "create" : "true", + "status" : "current", + "linkage" : [ + { "RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "filterEntry", + }}, + ], + "description" : + """Provides a variable-length packet filter feature to the +RMON-1 filter table.""", + }, # row + "filterProtocolDirDataLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.4.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "0", + "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.""", + }, # column + "filterProtocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.7.4.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "0", + "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.""", + }, # column + "ringStationControl2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.7", + "status" : "deprecated", + "description" : + """Contains the RMON-2 augmentations to RMON-1. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "ringStationControl2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.7.1", + "status" : "deprecated", + "linkage" : [ + { "TOKEN-RING-RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "ringStationControlEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "ringStationControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.7.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "ringStationControlCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.7.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "sourceRoutingStats2Table" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.8", + "status" : "deprecated", + "description" : + """Contains the RMON-2 augmentations to RMON-1. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "sourceRoutingStats2Entry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.8.1", + "status" : "deprecated", + "linkage" : [ + { "TOKEN-RING-RMON-MIB" : { + "indexkind" : "augments", + "relatedNode" : "sourceRoutingStatsEntry", + }}, + ], + "description" : + """Contains the RMON-2 augmentations to RMON-1.""", + }, # row + "sourceRoutingStatsDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.8.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "sourceRoutingStatsCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.10.8.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "protocolDir" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11", + }, # node + "protocolDirLastChange" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time the protocol directory +was last modified, either through insertions or deletions, +or through modifications of the +protocolDirAddressMapConfig, protocolDirHostConfig, or +protocolDirMatrixConfig.""", + }, # scalar + "protocolDirTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2", + "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.""", + }, # table + "protocolDirEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "protocolDirID", + "protocolDirParameters", + ], + "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. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "protocolDirID" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "4", + "max" : "128" + }, + ], + "range" : { + "min" : "4", + "max" : "128" + }, + }, + }, + "access" : "noaccess", + "description" : + """A unique identifier for a particular protocol. Standard +identifiers will be defined in such a manner 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 that has algorithmic +assignment mechanisms for certain subtrees. See RFC 2074 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 +possible ethernet protocol types, nor need it create them on +the fly when it sees them. Whether 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.""", + }, # column + "protocolDirParameters" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "32" + }, + ], + "range" : { + "min" : "1", + "max" : "32" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "protocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "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 that the protocol directory +entry is deleted.""", + }, # column + "protocolDirDescr" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "1", + "max" : "64" + }, + ], + "range" : { + "min" : "1", + "max" : "64" + }, + }, + }, + "access" : "readwrite", + "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).""", + }, # column + "protocolDirType" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Bits", + "extensible" : { + "nodetype" : "namednumber", + "number" : "0" + }, + "addressRecognitionCapable" : { + "nodetype" : "namednumber", + "number" : "1" + }, + }, + }, + "access" : "readonly", + "description" : + """This object describes 2 attributes of this protocol +directory entry. + +The presence or absence of the 'extensible' bit describes +whether this protocol directory entry can be extended +by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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.""", + }, # column + "protocolDirAddressMapConfig" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.6", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notSupported" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "supportedOff" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "supportedOn" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # column + "protocolDirHostConfig" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notSupported" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "supportedOff" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "supportedOn" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "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, an entry will +only be created in that table if this value is supportedOn(3) +for both protocols.""", + }, # column + "protocolDirMatrixConfig" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notSupported" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "supportedOff" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "supportedOn" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "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 +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, an entry will +only be created in that table if this value is supportedOn(3) +for both protocols.""", + }, # column + "protocolDirOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "protocolDirStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.11.2.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "protocolDist" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12", + }, # node + "protocolDistControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1", + "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.""", + }, # table + "protocolDistControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "protocolDistControlIndex", + ], + "description" : + """A conceptual row in the protocolDistControlTable. + +An example of the indexing of this entry is +protocolDistControlDroppedFrames.7""", + }, # row + "protocolDistControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """A unique index for this protocolDistControlEntry.""", + }, # column + "protocolDistControlDataSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "DataSource"}, + }, + "access" : "readwrite", + "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).""", + }, # column + "protocolDistControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "protocolDistControlCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "protocolDistControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "protocolDistControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "protocolDistStatsTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.2", + "status" : "current", + "description" : + """An entry is made in this table for every protocol in the +protocolDirTable that 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.""", + }, # table + "protocolDistStatsEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.2.1", + "status" : "current", + "linkage" : [ + "protocolDistControlIndex", + "protocolDirLocalIndex", + ], + "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 and the +particular protocol that it represents. + +An example of the indexing of this entry is +protocolDistStatsPkts.1.18""", + }, # row + "protocolDistStatsPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of packets of this protocol type received +without errors. 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.""", + }, # column + "protocolDistStatsOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.12.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets in packets of this protocol type + + + +received since it was added to the protocolDistStatsTable +(excluding framing bits, but including FCS octets), except for +those octets in packets that contained errors. + +Note that this doesn't count just those octets in the +particular protocol frames but includes the entire packet +that contained the protocol.""", + }, # column + "addressMap" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13", + }, # node + "addressMapInserts" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # scalar + "addressMapDeletes" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # scalar + "addressMapMaxDesiredEntries" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # scalar + "addressMapControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4", + "status" : "current", + "description" : + """A table to control the collection of mappings from network +layer address to physical address to interface. + +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.""", + }, # table + "addressMapControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "addressMapControlIndex", + ], + "description" : + """A conceptual row in the addressMapControlTable. + +An example of the indexing of this entry is +addressMapControlDroppedFrames.1""", + }, # row + "addressMapControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """A unique index for this entry in the addressMapControlTable.""", + }, # column + "addressMapControlDataSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "DataSource"}, + }, + "access" : "readwrite", + "description" : + """The source of data for this addressMapControlEntry.""", + }, # column + "addressMapControlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "addressMapControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "addressMapControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.4.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "addressMapTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5", + "status" : "current", + "description" : + """A table of mappings from network layer address to physical +address to interface. + +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).""", + }, # table + "addressMapEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1", + "status" : "current", + "linkage" : [ + "addressMapTimeMark", + "protocolDirLocalIndex", + "addressMapNetworkAddress", + "addressMapSource", + ], + "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. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "addressMapTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "addressMapNetworkAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "addressMapSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "noaccess", + "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 [RFC2863], 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 [RFC2108], 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 that is a locally +attached repeater and the agent has additional information +about the source port of traffic seen on that repeater.""", + }, # column + "addressMapPhysicalAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "OctetString"}, + }, + "access" : "readonly", + "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.""", + }, # column + "addressMapLastChange" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.13.5.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlHost" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14", + }, # node + "hlHostControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1", + "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 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.""", + }, # table + "hlHostControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "hlHostControlIndex", + ], + "description" : + """A conceptual row in the hlHostControlTable. + +An example of the indexing of this entry is + + + +hlHostControlNlDroppedFrames.1""", + }, # row + "hlHostControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "hlHostControlDataSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "DataSource"}, + }, + "access" : "readwrite", + "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).""", + }, # column + "hlHostControlNlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "hlHostControlNlInserts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "hlHostControlNlDeletes" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "hlHostControlNlMaxDesiredEntries" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.6", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # column + "hlHostControlAlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "hlHostControlAlInserts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "hlHostControlAlDeletes" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "hlHostControlAlMaxDesiredEntries" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.10", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # column + "hlHostControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "hlHostControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.1.1.12", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "nlHostTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2", + "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.""", + }, # table + "nlHostEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1", + "status" : "current", + "linkage" : [ + "hlHostControlIndex", + "nlHostTimeMark", + "protocolDirLocalIndex", + "nlHostAddress", + ], + "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. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take + + + +care to avoid such combinations.""", + }, # row + "nlHostTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "nlHostAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "nlHostInPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlHostOutPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlHostInOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets transmitted to this address +since it was added to the nlHostTable (excluding +framing bits, but including FCS octets), excluding +octets in packets that contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "nlHostOutOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "description" : + """The number of octets transmitted by this address +since it was added to the nlHostTable (excluding +framing bits, but including FCS octets), excluding +octets in packets that contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "nlHostOutMacNonUnicastPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlHostCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.14.2.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrix" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15", + }, # node + "hlMatrixControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1", + "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 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.""", + }, # table + "hlMatrixControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + ], + "description" : + """A conceptual row in the hlMatrixControlTable. + +An example of indexing of this entry is +hlMatrixControlNlDroppedFrames.1""", + }, # row + "hlMatrixControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "hlMatrixControlDataSource" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "DataSource"}, + }, + "access" : "readwrite", + "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).""", + }, # column + "hlMatrixControlNlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "hlMatrixControlNlInserts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "hlMatrixControlNlDeletes" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "hlMatrixControlNlMaxDesiredEntries" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.6", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # column + "hlMatrixControlAlDroppedFrames" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of frames that were received by the probe +and therefore not accounted for in the *StatsDropEvents, but +that 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.""", + }, # column + "hlMatrixControlAlInserts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "hlMatrixControlAlDeletes" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "hlMatrixControlAlMaxDesiredEntries" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.10", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "-1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "-1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "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.""", + }, # column + "hlMatrixControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "hlMatrixControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.1.1.12", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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 alMatrixDSTable +shall be deleted by the agent.""", + }, # column + "nlMatrixSDTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2", + "status" : "current", + "description" : + """A list of traffic matrix entries that 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.""", + }, # table + "nlMatrixSDEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + "nlMatrixSDTimeMark", + "protocolDirLocalIndex", + "nlMatrixSDSourceAddress", + "nlMatrixSDDestAddress", + ], + "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. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "nlMatrixSDTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "nlMatrixSDSourceAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "nlMatrixSDDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "nlMatrixSDPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixSDOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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 octets in packets that +contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "nlMatrixSDCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.2.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixDSTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3", + "status" : "current", + "description" : + """A list of traffic matrix entries that 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.""", + }, # table + "nlMatrixDSEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + "nlMatrixDSTimeMark", + "protocolDirLocalIndex", + "nlMatrixDSDestAddress", + "nlMatrixDSSourceAddress", + ], + "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. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "nlMatrixDSTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "nlMatrixDSSourceAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "nlMatrixDSDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "nlMatrixDSPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixDSOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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 octets in packets that +contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "nlMatrixDSCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.3.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixTopNControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4", + "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.""", + }, # table + "nlMatrixTopNControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "nlMatrixTopNControlIndex", + ], + "description" : + """A conceptual row in the nlMatrixTopNControlTable. + +An example of the indexing of this table is +nlMatrixTopNControlDuration.3""", + }, # row + "nlMatrixTopNControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry +in the nlMatrixTopNControlTable. Each such +entry defines one topN report prepared for +one interface.""", + }, # column + "nlMatrixTopNControlMatrixIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "description" : + """The nlMatrix[SD/DS] table for which a topN 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).""", + }, # column + "nlMatrixTopNControlRateBase" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "nlMatrixTopNPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "nlMatrixTopNOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "nlMatrixTopNHighCapacityPkts" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "nlMatrixTopNHighCapacityOctets" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readwrite", + "description" : + """The variable for each nlMatrix[SD/DS] entry that the +nlMatrixTopNEntries are sorted by, as well as a control +for the table that the results will be reported in. + +This object may not be modified if the associated +nlMatrixTopNControlStatus object is equal to active(1). + +If this value is less than or equal to 2, when the report +is prepared, entries are created in the nlMatrixTopNTable +associated with this object. +If this value is greater than or equal to 3, when the report +is prepared, entries are created in the +nlMatrixTopNHighCapacityTable associated with this object.""", + }, # column + "nlMatrixTopNControlTimeRemaining" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "1800", + "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).""", + }, # column + "nlMatrixTopNControlGeneratedReports" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of reports that have been generated by this entry.""", + }, # column + "nlMatrixTopNControlDuration" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixTopNControlRequestedSize" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "150", + "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 possible for the particular probe +implementation and available resources.""", + }, # column + "nlMatrixTopNControlGrantedSize" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "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 +possible for the particular implementation and +available resources. The probe must not lower this +value except as a side-effect 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 zero-valued entries are available.""", + }, # column + "nlMatrixTopNControlStartTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this topN 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 whether a report was missed.""", + }, # column + "nlMatrixTopNControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "nlMatrixTopNControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.4.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "nlMatrixTopNTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5", + "status" : "current", + "description" : + """A set of statistics for those network-layer matrix entries + + + +that have counted the highest number of octets or packets.""", + }, # table + "nlMatrixTopNEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1", + "status" : "current", + "linkage" : [ + "nlMatrixTopNControlIndex", + "nlMatrixTopNIndex", + ], + "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""", + }, # row + "nlMatrixTopNIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "nlMatrixTopNProtocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The protocolDirLocalIndex of the network-layer protocol of +this entry's network address.""", + }, # column + "nlMatrixTopNSourceAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixTopNDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixTopNPktRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixTopNReversePktRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixTopNOctetRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "nlMatrixTopNReverseOctetRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.15.5.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alHost" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16", + }, # node + "alHostTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1", + "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.""", + }, # table + "alHostEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1", + "status" : "current", + "linkage" : [ + "hlHostControlIndex", + "alHostTimeMark", + "protocolDirLocalIndex", + "nlHostAddress", + "protocolDirLocalIndex", + ], + "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. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "alHostTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "alHostInPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alHostOutPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alHostInOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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 octets in packets that +contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "alHostOutOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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 octets in packets that +contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "alHostCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.16.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrix" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17", + }, # node + "alMatrixSDTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1", + "status" : "current", + "description" : + """A list of application traffic matrix entries that 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.""", + }, # table + "alMatrixSDEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + "alMatrixSDTimeMark", + "protocolDirLocalIndex", + "nlMatrixSDSourceAddress", + "nlMatrixSDDestAddress", + "protocolDirLocalIndex", + ], + "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. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "alMatrixSDTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "alMatrixSDPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixSDOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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 octets +in packets that contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "alMatrixSDCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.1.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixDSTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2", + "status" : "current", + "description" : + """A list of application traffic matrix entries that 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.""", + }, # table + "alMatrixDSEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1", + "status" : "current", + "linkage" : [ + "hlMatrixControlIndex", + "alMatrixDSTimeMark", + "protocolDirLocalIndex", + "nlMatrixDSDestAddress", + "nlMatrixDSSourceAddress", + "protocolDirLocalIndex", + ], + "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. + +Note that some combinations of index values may result in an +index that exceeds 128 sub-identifiers in length, which exceeds +the maximum for the SNMP protocol. Implementations should take +care to avoid such combinations.""", + }, # row + "alMatrixDSTimeMark" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "TimeFilter"}, + }, + "access" : "noaccess", + "description" : + """A TimeFilter for this entry. See the TimeFilter textual +convention to see how this works.""", + }, # column + "alMatrixDSPkts" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixDSOctets" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "ZeroBasedCounter32"}, + }, + "access" : "readonly", + "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 octets +in packets that contained errors. + +Note that this doesn't count just those octets in the particular +protocol frames but includes the entire packet that contained +the protocol.""", + }, # column + "alMatrixDSCreateTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.2.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON2-MIB", "name" : "LastCreateTime"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixTopNControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3", + "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.""", + }, # table + "alMatrixTopNControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "alMatrixTopNControlIndex", + ], + "description" : + """A conceptual row in the alMatrixTopNControlTable. + +An example of the indexing of this table is +alMatrixTopNControlDuration.3""", + }, # row + "alMatrixTopNControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index that uniquely identifies an entry +in the alMatrixTopNControlTable. Each such +entry defines one topN report prepared for +one interface.""", + }, # column + "alMatrixTopNControlMatrixIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "description" : + """The alMatrix[SD/DS] table for which a topN 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).""", + }, # column + "alMatrixTopNControlRateBase" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "alMatrixTopNTerminalsPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "alMatrixTopNTerminalsOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "alMatrixTopNAllPkts" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "alMatrixTopNAllOctets" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "alMatrixTopNTerminalsHighCapacityPkts" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "alMatrixTopNTerminalsHighCapacityOctets" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "alMatrixTopNAllHighCapacityPkts" : { + "nodetype" : "namednumber", + "number" : "7" + }, + "alMatrixTopNAllHighCapacityOctets" : { + "nodetype" : "namednumber", + "number" : "8" + }, + }, + }, + "access" : "readwrite", + "description" : + """This object controls which alMatrix[SD/DS] entry that the +alMatrixTopNEntries are sorted by, which view of the matrix +table that will be used, as well as which table the results +will be reported in. + +The values alMatrixTopNTerminalsPkts, +alMatrixTopNTerminalsOctets, +alMatrixTopNTerminalsHighCapacityPkts, and +alMatrixTopNTerminalsHighCapacityOctets cause collection +only from protocols that have no child protocols that are +counted. The values alMatrixTopNAllPkts, +alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and +alMatrixTopNAllHighCapacityOctets cause collection from all +alMatrix entries. + +This object may not be modified if the associated +alMatrixTopNControlStatus object is equal to active(1).""", + }, # column + "alMatrixTopNControlTimeRemaining" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "1800", + "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).""", + }, # column + "alMatrixTopNControlGeneratedReports" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The number of reports that have been generated by this entry.""", + }, # column + "alMatrixTopNControlDuration" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "Integer32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixTopNControlRequestedSize" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "150", + "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 possible for the particular probe +implementation and available resources.""", + }, # column + "alMatrixTopNControlGrantedSize" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.8", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "0", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "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 +possible for the particular implementation and +available resources. The probe must not lower this +value except as a side-effect 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 zero-valued entries are available.""", + }, # column + "alMatrixTopNControlStartTime" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime when this topN 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 whether a report was missed.""", + }, # column + "alMatrixTopNControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.10", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "alMatrixTopNControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.3.1.11", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "alMatrixTopNTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4", + "status" : "current", + "description" : + """A set of statistics for those application-layer matrix +entries that have counted the highest number of octets or +packets.""", + }, # table + "alMatrixTopNEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1", + "status" : "current", + "linkage" : [ + "alMatrixTopNControlIndex", + "alMatrixTopNIndex", + ], + "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""", + }, # row + "alMatrixTopNIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "alMatrixTopNProtocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The protocolDirLocalIndex of the network-layer protocol of +this entry's network address.""", + }, # column + "alMatrixTopNSourceAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixTopNDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "1", + "max" : "255" + }, + ], + "range" : { + "min" : "1", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixTopNAppProtocolDirLocalIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readonly", + "description" : + """The type of the protocol counted by this matrix entry.""", + }, # column + "alMatrixTopNPktRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixTopNReversePktRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixTopNOctetRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "alMatrixTopNReverseOctetRate" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.17.4.1.9", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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.""", + }, # column + "usrHistory" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18", + }, # node + "usrHistoryControlTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1", + "status" : "current", + "description" : + """A list of data-collection configuration entries.""", + }, # table + "usrHistoryControlEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "usrHistoryControlIndex", + ], + "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""", + }, # row + "usrHistoryControlIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "usrHistoryControlObjects" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "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).""", + }, # column + "usrHistoryControlBucketsRequested" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "default" : "50", + "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 possible for the particular probe +implementation and available resources.""", + }, # column + "usrHistoryControlBucketsGranted" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readonly", + "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 +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.""", + }, # column + "usrHistoryControlInterval" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "readwrite", + "default" : "1800", + "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 to 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).""", + }, # column + "usrHistoryControlOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "usrHistoryControlStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.1.1.7", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "usrHistoryObjectTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2", + "status" : "current", + "description" : + """A list of data-collection configuration entries.""", + }, # table + "usrHistoryObjectEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2.1", + "create" : "true", + "status" : "current", + "linkage" : [ + "usrHistoryControlIndex", + "usrHistoryObjectIndex", + ], + "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""", + }, # row + "usrHistoryObjectIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """An index used to uniquely identify an entry in the +usrHistoryObject table. Each such entry defines a +MIB instance to be collected periodically.""", + }, # column + "usrHistoryObjectVariable" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readwrite", + "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. See USM [RFC3414] and VACM [RFC3415] for more +information. + +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).""", + }, # column + "usrHistoryObjectSampleType" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.2.1.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "absoluteValue" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "deltaValue" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "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).""", + }, # column + "usrHistoryTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3", + "status" : "current", + "description" : + """A list of user-defined history entries.""", + }, # table + "usrHistoryEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1", + "status" : "current", + "linkage" : [ + "usrHistoryControlIndex", + "usrHistorySampleIndex", + "usrHistoryObjectIndex", + ], + "description" : + """A historical sample of user-defined variables. This sample +is associated with the usrHistoryControlEntry that 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""", + }, # row + "usrHistorySampleIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "noaccess", + "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.""", + }, # column + "usrHistoryIntervalStart" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "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 that the probe delay +collecting the first sample of the history, as each sample +must be of the same interval. Also note that the sample that +is currently being collected is not accessible in this table +until the end of its interval.""", + }, # column + "usrHistoryIntervalEnd" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the end of the interval over which +this sample was measured.""", + }, # column + "usrHistoryAbsValue" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Gauge32"}, + }, + "access" : "readonly", + "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)'. + +The access control check prescribed in the definition of +usrHistoryObjectVariable SHOULD be checked for each sampling +interval. If this check determines that access should not be +allowed, then this object will have a value of zero, and the +associated instance of usrHistoryValStatus will be set to +'valueNotAvailable(1)'.""", + }, # column + "usrHistoryValStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.18.3.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "valueNotAvailable" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "valuePositive" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "valueNegative" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readonly", + "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 the 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.""", + }, # column + "probeConfig" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19", + }, # node + "probeCapabilities" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Bits", + "etherStats" : { + "nodetype" : "namednumber", + "number" : "0" + }, + "historyControl" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "etherHistory" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "alarm" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "hosts" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "hostTopN" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "matrix" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "filter" : { + "nodetype" : "namednumber", + "number" : "7" + }, + "capture" : { + "nodetype" : "namednumber", + "number" : "8" + }, + "event" : { + "nodetype" : "namednumber", + "number" : "9" + }, + "tokenRingMLStats" : { + "nodetype" : "namednumber", + "number" : "10" + }, + "tokenRingPStats" : { + "nodetype" : "namednumber", + "number" : "11" + }, + "tokenRingMLHistory" : { + "nodetype" : "namednumber", + "number" : "12" + }, + "tokenRingPHistory" : { + "nodetype" : "namednumber", + "number" : "13" + }, + "ringStation" : { + "nodetype" : "namednumber", + "number" : "14" + }, + "ringStationOrder" : { + "nodetype" : "namednumber", + "number" : "15" + }, + "ringStationConfig" : { + "nodetype" : "namednumber", + "number" : "16" + }, + "sourceRouting" : { + "nodetype" : "namednumber", + "number" : "17" + }, + "protocolDirectory" : { + "nodetype" : "namednumber", + "number" : "18" + }, + "protocolDistribution" : { + "nodetype" : "namednumber", + "number" : "19" + }, + "addressMapping" : { + "nodetype" : "namednumber", + "number" : "20" + }, + "nlHost" : { + "nodetype" : "namednumber", + "number" : "21" + }, + "nlMatrix" : { + "nodetype" : "namednumber", + "number" : "22" + }, + "alHost" : { + "nodetype" : "namednumber", + "number" : "23" + }, + "alMatrix" : { + "nodetype" : "namednumber", + "number" : "24" + }, + "usrHistory" : { + "nodetype" : "namednumber", + "number" : "25" + }, + "probeConfig" : { + "nodetype" : "namednumber", + "number" : "26" + }, + }, + }, + "access" : "readonly", + "description" : + """An indication of the RMON MIB groups supported +on at least one interface by this probe.""", + }, # scalar + "probeSoftwareRev" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.2", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "15" + }, + ], + "range" : { + "min" : "0", + "max" : "15" + }, + }, + }, + "access" : "readonly", + "description" : + """The software revision of this device. This string will have +a zero length if the revision is unknown.""", + }, # scalar + "probeHardwareRev" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.3", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "31" + }, + ], + "range" : { + "min" : "0", + "max" : "31" + }, + }, + }, + "access" : "readonly", + "description" : + """The hardware revision of this device. This string will have +a zero length if the revision is unknown.""", + }, # scalar + "probeDateTime" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "0", + "max" : "0" + }, + { + "min" : "8", + "max" : "8" + }, + { + "min" : "11", + "max" : "11" + }, + ], + "range" : { + "min" : "0", + "max" : "11" + }, + }, + }, + "access" : "readwrite", + "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 +time zone information (fields 8-10) is not +present, and that if no time information is known, the +null string is returned.""", + }, # scalar + "probeResetControl" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "running" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "warmBoot" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "coldBoot" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "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 to restart the application software. When the device +is running normally, this variable has a value of +running(1).""", + }, # scalar + "probeDownloadFile" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.6", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "127" + }, + ], + "range" : { + "min" : "0", + "max" : "127" + }, + }, + }, + "access" : "readwrite", + "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. + +This object has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # scalar + "probeDownloadTFTPServer" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.7", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "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. + +This object has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # scalar + "probeDownloadAction" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.8", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "notDownloading" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "downloadToPROM" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "downloadToRAM" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "description" : + """When this object is set to downloadToRAM(3) or +downloadToPROM(2), 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(3) is specified, the new image is copied +to RAM only (the old image remains unaltered in the flash +EPROM). If downloadToPROM(2) 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). + +This object has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # scalar + "probeDownloadStatus" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.9", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "downloadSuccess" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "downloadStatusUnknown" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "downloadGeneralError" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "downloadNoResponseFromServer" : { + "nodetype" : "namednumber", + "number" : "4" + }, + "downloadChecksumError" : { + "nodetype" : "namednumber", + "number" : "5" + }, + "downloadIncompatibleImage" : { + "nodetype" : "namednumber", + "number" : "6" + }, + "downloadTftpFileNotFound" : { + "nodetype" : "namednumber", + "number" : "7" + }, + "downloadTftpAccessViolation" : { + "nodetype" : "namednumber", + "number" : "8" + }, + }, + }, + "access" : "readonly", + "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. + +This object has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # scalar + "serialConfigTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10", + "status" : "deprecated", + "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. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # table + "serialConfigEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1", + "create" : "true", + "status" : "deprecated", + "linkage" : [ + "ifIndex", + ], + "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.""", + }, # row + "serialMode" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "direct" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "modem" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "default" : "direct", + "description" : + """The type of incoming connection to be expected on this +serial interface.""", + }, # column + "serialProtocol" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "other" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "slip" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "ppp" : { + "nodetype" : "namednumber", + "number" : "3" + }, + }, + }, + "access" : "readwrite", + "default" : "slip", + "description" : + """The type of data link encapsulation to be used on this +serial interface.""", + }, # column + "serialTimeout" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "default" : "300", + "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.""", + }, # column + "serialModemInitString" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that 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'.""", + }, # column + "serialModemHangUpString" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that 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'.""", + }, # column + "serialModemConnectResp" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "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/'.""", + }, # column + "serialModemNoConnectResp" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.7", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "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/'.""", + }, # column + "serialDialoutTimeout" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.8", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "readwrite", + "default" : "20", + "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.""", + }, # column + "serialStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.10.1.9", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "netConfigTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11", + "status" : "deprecated", + "description" : + """A table of netConfigEntries. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability to +meet the requirements of a Draft Standard.""", + }, # table + "netConfigEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11.1", + "create" : "true", + "status" : "deprecated", + "linkage" : [ + "ifIndex", + ], + "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.""", + }, # row + "netConfigIPAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "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 is 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 them very infrequently if no +replies are received.""", + }, # column + "netConfigSubnetMask" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "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 is 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 them very infrequently if no +replies are received.""", + }, # column + "netConfigStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.11.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "netDefaultGateway" : { + "nodetype" : "scalar", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.12", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "description" : + """The IP Address of the default gateway. If this value is +undefined or unknown, it shall have the value 0.0.0.0.""", + }, # scalar + "trapDestTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13", + "status" : "deprecated", + "description" : + """A list of trap destination entries.""", + }, # table + "trapDestEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1", + "create" : "true", + "status" : "deprecated", + "linkage" : [ + "trapDestIndex", + ], + "description" : + """This entry includes a destination IP address to which +traps are sent for this community.""", + }, # row + "trapDestIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """A value that uniquely identifies this trapDestEntry.""", + }, # column + "trapDestCommunity" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "ranges" : [ + { + "min" : "0", + "max" : "127" + }, + ], + "range" : { + "min" : "0", + "max" : "127" + }, + }, + }, + "access" : "readwrite", + "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, as long as no access control mechanism +precludes it (e.g., VACM). + +This object may not be modified if the associated +trapDestStatus object is equal to active(1).""", + }, # column + "trapDestProtocol" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "ip" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "ipx" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """The protocol with which this trap is to be sent.""", + }, # column + "trapDestAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"", "name" : "OctetString"}, + }, + "access" : "readwrite", + "description" : + """The destination address for 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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).""", + }, # column + "trapDestOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "trapDestStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.13.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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.""", + }, # column + "serialConnectionTable" : { + "nodetype" : "table", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14", + "status" : "deprecated", + "description" : + """A list of serialConnectionEntries. + +This table has been deprecated, as it has not had enough +independent implementations to demonstrate interoperability +to meet the requirements of a Draft Standard.""", + }, # table + "serialConnectionEntry" : { + "nodetype" : "row", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1", + "create" : "true", + "status" : "deprecated", + "linkage" : [ + "serialConnectIndex", + ], + "description" : + """Configuration for a SLIP link over a serial line.""", + }, # row + "serialConnectIndex" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.1", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "65535" + }, + ], + "range" : { + "min" : "1", + "max" : "65535" + }, + }, + }, + "access" : "noaccess", + "description" : + """A value that uniquely identifies this serialConnection +entry.""", + }, # column + "serialConnectDestIpAddress" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.2", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "IpAddress"}, + }, + "access" : "readwrite", + "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).""", + }, # column + "serialConnectType" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.3", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "direct" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "modem" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "switch" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "modemSwitch" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, + "access" : "readwrite", + "default" : "direct", + "description" : + """The type of outgoing connection to be made. 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).""", + }, # column + "serialConnectDialString" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.4", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that specifies how to dial the phone +number in order to establish a modem connection. The +string should include the 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).""", + }, # column + "serialConnectSwitchConnectSeq" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.5", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that specifies how to establish a +data switch connection. + +This object may not be modified if the associated +serialConnectStatus object is equal to active(1).""", + }, # column + "serialConnectSwitchDisconnectSeq" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.6", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that specifies how to terminate a +data switch connection. + +This object may not be modified if the associated +serialConnectStatus object is equal to active(1).""", + }, # column + "serialConnectSwitchResetSeq" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.7", + "status" : "deprecated", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "RMON2-MIB", + "type" : "ControlString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """A control string that 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).""", + }, # column + "serialConnectOwner" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.8", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"RMON-MIB", "name" : "OwnerString"}, + }, + "access" : "readwrite", + "description" : + """The entity that configured this entry and is +therefore using the resources assigned to it.""", + }, # column + "serialConnectStatus" : { + "nodetype" : "column", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.19.14.1.9", + "status" : "deprecated", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "RowStatus"}, + }, + "access" : "readwrite", + "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 is a zero-length string +or cannot be correctly parsed as a ConnectString, 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.""", + }, # column + "rmonConformance" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20", + }, # node + "rmon2MIBCompliances" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.1", + }, # node + "rmon2MIBGroups" : { + "nodetype" : "node", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2", + }, # node + }, # nodes + + "groups" : { + "protocolDirectoryGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.1", + "status" : "current", + "members" : { + "protocolDirLastChange" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirDescr" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirType" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirAddressMapConfig" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirHostConfig" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirMatrixConfig" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDirStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "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.""", + }, # group + "protocolDistributionGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.2", + "status" : "current", + "members" : { + "protocolDistControlDataSource" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistControlCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistStatsPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "protocolDistStatsOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Collects the relative amounts of octets and packets for the +different protocols detected on a network segment.""", + }, # group + "addressMapGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.3", + "status" : "current", + "members" : { + "addressMapInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapControlDataSource" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapPhysicalAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "addressMapLastChange" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """Lists MAC address to network address bindings discovered by +the probe and what interface they were last seen on.""", + }, # group + "nlHostGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.4", + "status" : "current", + "members" : { + "hlHostControlDataSource" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlNlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlNlInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlNlDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlNlMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlAlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlAlInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlAlDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlAlMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlHostControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostInPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostOutPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostInOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostOutOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostOutMacNonUnicastPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlHostCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "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.""", + }, # group + "nlMatrixGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.5", + "status" : "current", + "members" : { + "hlMatrixControlDataSource" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlNlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlNlInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlNlDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlNlMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlAlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlAlInserts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlAlDeletes" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlAlMaxDesiredEntries" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hlMatrixControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixSDPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixSDOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixSDCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixDSPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixDSOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixDSCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlMatrixIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlRateBase" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlTimeRemaining" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlGeneratedReports" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlDuration" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlRequestedSize" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlGrantedSize" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlStartTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNProtocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNSourceAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNDestAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNPktRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNReversePktRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNOctetRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "nlMatrixTopNReverseOctetRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "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.""", + }, # group + "alHostGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.6", + "status" : "current", + "members" : { + "alHostInPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alHostOutPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alHostInOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alHostOutOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alHostCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "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.""", + }, # group + "alMatrixGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.7", + "status" : "current", + "members" : { + "alMatrixSDPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixSDOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixSDCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixDSPkts" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixDSOctets" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixDSCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlMatrixIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlRateBase" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlTimeRemaining" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlGeneratedReports" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlDuration" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlRequestedSize" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlGrantedSize" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlStartTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNProtocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNSourceAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNDestAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNAppProtocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNPktRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNReversePktRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNOctetRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "alMatrixTopNReverseOctetRate" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "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.""", + }, # group + "usrHistoryGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.8", + "status" : "current", + "members" : { + "usrHistoryControlObjects" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlBucketsRequested" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlBucketsGranted" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlInterval" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryControlStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryObjectVariable" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryObjectSampleType" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryIntervalStart" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryIntervalEnd" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryAbsValue" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "usrHistoryValStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """The usrHistoryGroup provides user-defined collection of +historical information from MIB objects on the probe.""", + }, # group + "probeInformationGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.9", + "status" : "current", + "members" : { + "probeCapabilities" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeSoftwareRev" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeHardwareRev" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group describes various operating parameters of the +probe and controls the local time of the probe.""", + }, # group + "probeConfigurationGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.10", + "status" : "deprecated", + "members" : { + "probeResetControl" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDownloadFile" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDownloadTFTPServer" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDownloadAction" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "probeDownloadStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialMode" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialProtocol" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialTimeout" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialModemInitString" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialModemHangUpString" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialModemConnectResp" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialModemNoConnectResp" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialDialoutTimeout" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "netConfigIPAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "netConfigSubnetMask" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "netConfigStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "netDefaultGateway" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestCommunity" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestProtocol" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "trapDestStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectDestIpAddress" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectType" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectDialString" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectSwitchConnectSeq" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectSwitchDisconnectSeq" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectSwitchResetSeq" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectOwner" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "serialConnectStatus" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group controls the configuration of various operating +parameters of the probe. This group is not referenced by any +MODULE-COMPLIANCE macro because it is 'grandfathered' from +more recent MIB review rules that would require it.""", + }, # group + "rmon1EnhancementGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.11", + "status" : "current", + "members" : { + "historyControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hostControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "hostControlCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "matrixControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "matrixControlCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "channelDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "channelCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "filterProtocolDirDataLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "filterProtocolDirLocalIndex" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group adds some enhancements to RMON-1 that help +management stations.""", + }, # group + "rmon1EthernetEnhancementGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.12", + "status" : "current", + "members" : { + "etherStatsDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "etherStatsCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group adds some enhancements to RMON-1 that help +management stations.""", + }, # group + "rmon1TokenRingEnhancementGroup" : { + "nodetype" : "group", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.2.13", + "status" : "deprecated", + "members" : { + "tokenRingMLStatsDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "tokenRingMLStatsCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "tokenRingPStatsDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "tokenRingPStatsCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "ringStationControlDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "ringStationControlCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "sourceRoutingStatsDroppedFrames" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + "sourceRoutingStatsCreateTime" : { + "nodetype" : "member", + "module" : "RMON2-MIB" + }, + }, # members + "description" : + """This group adds some enhancements to RMON-1 that help +management stations. This group is not referenced by any +MODULE-COMPLIANCE macro because it is 'grandfathered' from +more recent MIB review rules that would require it.""", + }, # group + }, # groups + + "compliances" : { + "rmon2MIBCompliance" : { + "nodetype" : "compliance", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.1.1", + "status" : "current", + "description" : + """Describes the requirements for conformance to +the RMON2 MIB""", + "requires" : { + "protocolDirectoryGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "protocolDistributionGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "addressMapGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "nlHostGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "nlMatrixGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "usrHistoryGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "probeInformationGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "rmon1EnhancementGroup" : { + "nodetype" : "optional", + "module" : "RMON2-MIB", + "description" : + """The rmon1EnhancementGroup is mandatory for systems +that implement RMON [RFC2819].""", + }, + "rmon1EthernetEnhancementGroup" : { + "nodetype" : "optional", + "module" : "RMON2-MIB", + "description" : + """The rmon1EthernetEnhancementGroup is optional and is +appropriate for systems that implement the Ethernet +group of RMON [RFC2819].""", + }, + }, # requires + "refinements" : { + "nlMatrixTopNControlRateBase" : { + "module" : "RMON2-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "nlMatrixTopNPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "nlMatrixTopNOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "description" : + """Conformance to RMON2 requires only support for these +values of nlMatrixTopNControlRateBase.""", + }, + }, # refinements + + }, # compliance + "rmon2MIBApplicationLayerCompliance" : { + "nodetype" : "compliance", + "moduleName" : "RMON2-MIB", + "oid" : "1.3.6.1.2.1.16.20.1.2", + "status" : "current", + "description" : + """Describes the requirements for conformance to +the RMON2 MIB with Application-Layer Enhancements.""", + "requires" : { + "protocolDirectoryGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "protocolDistributionGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "addressMapGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "nlHostGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "nlMatrixGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "alHostGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "alMatrixGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "usrHistoryGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "probeInformationGroup" : { + "nodetype" : "mandatory", + "module" : "RMON2-MIB" + }, + "rmon1EnhancementGroup" : { + "nodetype" : "optional", + "module" : "RMON2-MIB", + "description" : + """The rmon1EnhancementGroup is mandatory for systems +that implement RMON [RFC2819].""", + }, + "rmon1EthernetEnhancementGroup" : { + "nodetype" : "optional", + "module" : "RMON2-MIB", + "description" : + """The rmon1EthernetEnhancementGroup is optional and is +appropriate for systems that implement the Ethernet +group of RMON [RFC2819].""", + }, + }, # requires + "refinements" : { + "nlMatrixTopNControlRateBase" : { + "module" : "RMON2-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "nlMatrixTopNPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "nlMatrixTopNOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, # syntax + "description" : + """Conformance to RMON2 requires only support for these +values of nlMatrixTopNControlRateBase.""", + }, + "alMatrixTopNControlRateBase" : { + "module" : "RMON2-MIB", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "alMatrixTopNTerminalsPkts" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "alMatrixTopNTerminalsOctets" : { + "nodetype" : "namednumber", + "number" : "2" + }, + "alMatrixTopNAllPkts" : { + "nodetype" : "namednumber", + "number" : "3" + }, + "alMatrixTopNAllOctets" : { + "nodetype" : "namednumber", + "number" : "4" + }, + }, + }, # syntax + "description" : + """Conformance to RMON2 requires only support for these + + + +values of alMatrixTopNControlRateBase.""", + }, + }, # refinements + + }, # compliance + }, # compliances + +} diff --git a/test/dumps/python/SNMPv2-MIB b/test/dumps/python/SNMPv2-MIB new file mode 100644 index 0000000..9fa5820 --- /dev/null +++ b/test/dumps/python/SNMPv2-MIB @@ -0,0 +1,1382 @@ +# python version 1.0 DO NOT EDIT +# +# Generated by smidump version 0.4.8: +# +# smidump -f python SNMPv2-MIB + +FILENAME = "../../mibs/ietf/SNMPv2-MIB" + +MIB = { + "moduleName" : "SNMPv2-MIB", + + "SNMPv2-MIB" : { + "nodetype" : "module", + "language" : "SMIv2", + "organization" : + """IETF SNMPv3 Working Group""", + "contact" : + """WG-EMail: snmpv3@lists.tislabs.com +Subscribe: snmpv3-request@lists.tislabs.com + +Co-Chair: Russ Mundy + Network Associates Laboratories +postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA +EMail: mundy@tislabs.com +phone: +1 301 947-7107 + +Co-Chair: David Harrington + Enterasys Networks +postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA +EMail: dbh@enterasys.com +phone: +1 603 337-2614 + +Editor: Randy Presuhn + BMC Software, Inc. +postal: 2141 North First Street + San Jose, CA 95131 + USA +EMail: randy_presuhn@bmc.com +phone: +1 408 546-1006""", + "description" : + """The MIB module for SNMP entities. + +Copyright (C) The Internet Society (2002). This +version of this MIB module is part of RFC 3418; +see the RFC itself for full legal notices.""", + "revisions" : ( + { + "date" : "2002-10-16 00:00", + "description" : + """This revision of this MIB module was published as +RFC 3418.""", + }, + { + "date" : "1995-11-09 00:00", + "description" : + """This revision of this MIB module was published as +RFC 1907.""", + }, + { + "date" : "1993-04-01 00:00", + "description" : + """The initial revision of this MIB module was published +as RFC 1450.""", + }, + ), + "identity node" : "snmpMIB", + }, + + "imports" : ( + {"module" : "SNMPv2-SMI", "name" : "MODULE-IDENTITY"}, + {"module" : "SNMPv2-SMI", "name" : "OBJECT-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "NOTIFICATION-TYPE"}, + {"module" : "SNMPv2-SMI", "name" : "TimeTicks"}, + {"module" : "SNMPv2-SMI", "name" : "Counter32"}, + {"module" : "SNMPv2-SMI", "name" : "snmpModules"}, + {"module" : "SNMPv2-SMI", "name" : "mib-2"}, + {"module" : "SNMPv2-TC", "name" : "DisplayString"}, + {"module" : "SNMPv2-TC", "name" : "TestAndIncr"}, + {"module" : "SNMPv2-TC", "name" : "TimeStamp"}, + {"module" : "SNMPv2-CONF", "name" : "MODULE-COMPLIANCE"}, + {"module" : "SNMPv2-CONF", "name" : "OBJECT-GROUP"}, + {"module" : "SNMPv2-CONF", "name" : "NOTIFICATION-GROUP"}, + ), + + "nodes" : { + "system" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1", + }, # node + "sysDescr" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readonly", + "description" : + """A textual description of the entity. This value should +include the full name and version identification of +the system's hardware type, software operating-system, +and networking software.""", + }, # scalar + "sysObjectID" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readonly", + "description" : + """The vendor's authoritative identification of the +network management subsystem contained in the entity. +This value is allocated within the SMI enterprises +subtree (1.3.6.1.4.1) and provides an easy and +unambiguous means for determining `what kind of box' is +being managed. For example, if vendor `Flintstones, +Inc.' was assigned the subtree 1.3.6.1.4.1.424242, +it could assign the identifier 1.3.6.1.4.1.424242.1.1 +to its `Fred Router'.""", + }, # scalar + "sysUpTime" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "TimeTicks"}, + }, + "access" : "readonly", + "description" : + """The time (in hundredths of a second) since the +network management portion of the system was last +re-initialized.""", + }, # scalar + "sysContact" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.4", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """The textual identification of the contact person for +this managed node, together with information on how +to contact this person. If no contact information is +known, the value is the zero-length string.""", + }, # scalar + "sysName" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.5", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """An administratively-assigned name for this managed +node. By convention, this is the node's fully-qualified +domain name. If the name is unknown, the value is +the zero-length string.""", + }, # scalar + "sysLocation" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.6", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "OctetString", + "parent module" : { + "name" : "SNMPv2-TC", + "type" : "DisplayString", + }, + "ranges" : [ + { + "min" : "0", + "max" : "255" + }, + ], + "range" : { + "min" : "0", + "max" : "255" + }, + }, + }, + "access" : "readwrite", + "description" : + """The physical location of this node (e.g., 'telephone +closet, 3rd floor'). If the location is unknown, the +value is the zero-length string.""", + }, # scalar + "sysServices" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.7", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "0", + "max" : "127" + }, + ], + "range" : { + "min" : "0", + "max" : "127" + }, + }, + }, + "access" : "readonly", + "description" : + """A value which indicates the set of services that this +entity may potentially offer. The value is a sum. + + + +This sum initially takes the value zero. Then, for +each layer, L, in the range 1 through 7, that this node +performs transactions for, 2 raised to (L - 1) is added +to the sum. For example, a node which performs only +routing functions would have a value of 4 (2^(3-1)). +In contrast, a node which is a host offering application +services would have a value of 72 (2^(4-1) + 2^(7-1)). +Note that in the context of the Internet suite of +protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + +For systems including OSI protocols, layers 5 and 6 +may also be counted.""", + }, # scalar + "sysORLastChange" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.8", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time of the most recent +change in state or value of any instance of sysORID.""", + }, # scalar + "sysORTable" : { + "nodetype" : "table", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9", + "status" : "current", + "description" : + """The (conceptual) table listing the capabilities of +the local SNMP application acting as a command +responder with respect to various MIB modules. +SNMP entities having dynamically-configurable support +of MIB modules will have a dynamically-varying number +of conceptual rows.""", + }, # table + "sysOREntry" : { + "nodetype" : "row", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1", + "status" : "current", + "linkage" : [ + "sysORIndex", + ], + "description" : + """An entry (conceptual row) in the sysORTable.""", + }, # row + "sysORIndex" : { + "nodetype" : "column", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1.1", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Integer32", + "ranges" : [ + { + "min" : "1", + "max" : "2147483647" + }, + ], + "range" : { + "min" : "1", + "max" : "2147483647" + }, + }, + }, + "access" : "noaccess", + "description" : + """The auxiliary variable used for identifying instances +of the columnar objects in the sysORTable.""", + }, # column + "sysORID" : { + "nodetype" : "column", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1.2", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "readonly", + "description" : + """An authoritative identification of a capabilities +statement with respect to various MIB modules supported +by the local SNMP application acting as a command +responder.""", + }, # column + "sysORDescr" : { + "nodetype" : "column", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "DisplayString"}, + }, + "access" : "readonly", + "description" : + """A textual description of the capabilities identified +by the corresponding instance of sysORID.""", + }, # column + "sysORUpTime" : { + "nodetype" : "column", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.1.9.1.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TimeStamp"}, + }, + "access" : "readonly", + "description" : + """The value of sysUpTime at the time this conceptual +row was last instantiated.""", + }, # column + "snmp" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11", + }, # node + "snmpInPkts" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of messages delivered to the SNMP +entity from the transport service.""", + }, # scalar + "snmpOutPkts" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.2", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Messages which were +passed from the SNMP protocol entity to the +transport service.""", + }, # scalar + "snmpInBadVersions" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP messages which were delivered +to the SNMP entity and were for an unsupported SNMP +version.""", + }, # scalar + "snmpInBadCommunityNames" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.4", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of community-based SNMP messages (for +example, SNMPv1) delivered to the SNMP entity which +used an SNMP community name not known to said entity. +Also, implementations which authenticate community-based +SNMP messages using check(s) in addition to matching +the community name (for example, by also checking +whether the message originated from a transport address +allowed to use a specified community name) MAY include +in this value the number of messages which failed the +additional check(s). It is strongly RECOMMENDED that + + + +the documentation for any security model which is used +to authenticate community-based SNMP messages specify +the precise conditions that contribute to this value.""", + }, # scalar + "snmpInBadCommunityUses" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.5", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of community-based SNMP messages (for +example, SNMPv1) delivered to the SNMP entity which +represented an SNMP operation that was not allowed for +the SNMP community named in the message. The precise +conditions under which this counter is incremented +(if at all) depend on how the SNMP entity implements +its access control mechanism and how its applications +interact with that access control mechanism. It is +strongly RECOMMENDED that the documentation for any +access control mechanism which is used to control access +to and visibility of MIB instrumentation specify the +precise conditions that contribute to this value.""", + }, # scalar + "snmpInASNParseErrs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.6", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of ASN.1 or BER errors encountered by +the SNMP entity when decoding received SNMP messages.""", + }, # scalar + "snmpInTooBigs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.8", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were +delivered to the SNMP protocol entity and for +which the value of the error-status field was +`tooBig'.""", + }, # scalar + "snmpInNoSuchNames" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.9", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were +delivered to the SNMP protocol entity and for +which the value of the error-status field was +`noSuchName'.""", + }, # scalar + "snmpInBadValues" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.10", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were +delivered to the SNMP protocol entity and for +which the value of the error-status field was +`badValue'.""", + }, # scalar + "snmpInReadOnlys" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.11", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number valid SNMP PDUs which were delivered +to the SNMP protocol entity and for which the value +of the error-status field was `readOnly'. It should +be noted that it is a protocol error to generate an +SNMP PDU which contains the value `readOnly' in the +error-status field, as such this object is provided +as a means of detecting incorrect implementations of +the SNMP.""", + }, # scalar + "snmpInGenErrs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.12", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were delivered +to the SNMP protocol entity and for which the value +of the error-status field was `genErr'.""", + }, # scalar + "snmpInTotalReqVars" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.13", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of MIB objects which have been +retrieved successfully by the SNMP protocol entity +as the result of receiving valid SNMP Get-Request +and Get-Next PDUs.""", + }, # scalar + "snmpInTotalSetVars" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.14", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of MIB objects which have been +altered successfully by the SNMP protocol entity as +the result of receiving valid SNMP Set-Request PDUs.""", + }, # scalar + "snmpInGetRequests" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.15", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Request PDUs which +have been accepted and processed by the SNMP +protocol entity.""", + }, # scalar + "snmpInGetNexts" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.16", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Next PDUs which have been +accepted and processed by the SNMP protocol entity.""", + }, # scalar + "snmpInSetRequests" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.17", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Set-Request PDUs which +have been accepted and processed by the SNMP protocol +entity.""", + }, # scalar + "snmpInGetResponses" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.18", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Response PDUs which +have been accepted and processed by the SNMP protocol +entity.""", + }, # scalar + "snmpInTraps" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.19", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Trap PDUs which have been +accepted and processed by the SNMP protocol entity.""", + }, # scalar + "snmpOutTooBigs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.20", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were generated +by the SNMP protocol entity and for which the value +of the error-status field was `tooBig.'""", + }, # scalar + "snmpOutNoSuchNames" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.21", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were generated +by the SNMP protocol entity and for which the value +of the error-status was `noSuchName'.""", + }, # scalar + "snmpOutBadValues" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.22", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were generated +by the SNMP protocol entity and for which the value +of the error-status field was `badValue'.""", + }, # scalar + "snmpOutGenErrs" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.24", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP PDUs which were generated +by the SNMP protocol entity and for which the value +of the error-status field was `genErr'.""", + }, # scalar + "snmpOutGetRequests" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.25", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Request PDUs which +have been generated by the SNMP protocol entity.""", + }, # scalar + "snmpOutGetNexts" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.26", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Next PDUs which have +been generated by the SNMP protocol entity.""", + }, # scalar + "snmpOutSetRequests" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.27", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Set-Request PDUs which +have been generated by the SNMP protocol entity.""", + }, # scalar + "snmpOutGetResponses" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.28", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Get-Response PDUs which +have been generated by the SNMP protocol entity.""", + }, # scalar + "snmpOutTraps" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.29", + "status" : "obsolete", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of SNMP Trap PDUs which have +been generated by the SNMP protocol entity.""", + }, # scalar + "snmpEnableAuthenTraps" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.30", + "status" : "current", + "syntax" : { + "type" : { + "basetype" : "Enumeration", + "enabled" : { + "nodetype" : "namednumber", + "number" : "1" + }, + "disabled" : { + "nodetype" : "namednumber", + "number" : "2" + }, + }, + }, + "access" : "readwrite", + "description" : + """Indicates whether the SNMP entity is permitted to +generate authenticationFailure traps. The value of this +object overrides any configuration information; as such, +it provides a means whereby all authenticationFailure +traps may be disabled. + +Note that it is strongly recommended that this object +be stored in non-volatile memory so that it remains +constant across re-initializations of the network +management system.""", + }, # scalar + "snmpSilentDrops" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.31", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of Confirmed Class PDUs (such as +GetRequest-PDUs, GetNextRequest-PDUs, +GetBulkRequest-PDUs, SetRequest-PDUs, and +InformRequest-PDUs) delivered to the SNMP entity which +were silently dropped because the size of a reply +containing an alternate Response Class PDU (such as a +Response-PDU) with an empty variable-bindings field +was greater than either a local constraint or the +maximum message size associated with the originator of +the request.""", + }, # scalar + "snmpProxyDrops" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.2.1.11.32", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-SMI", "name" : "Counter32"}, + }, + "access" : "readonly", + "description" : + """The total number of Confirmed Class PDUs +(such as GetRequest-PDUs, GetNextRequest-PDUs, +GetBulkRequest-PDUs, SetRequest-PDUs, and +InformRequest-PDUs) delivered to the SNMP entity which +were silently dropped because the transmission of +the (possibly translated) message to a proxy target +failed in a manner (other than a time-out) such that +no Response Class PDU (such as a Response-PDU) could +be returned.""", + }, # scalar + "snmpMIB" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1", + "status" : "current", + }, # node + "snmpMIBObjects" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1", + }, # node + "snmpTrap" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.4", + }, # node + "snmpTrapOID" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.4.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "notifyonly", + "description" : + """The authoritative identification of the notification +currently being sent. This variable occurs as +the second varbind in every SNMPv2-Trap-PDU and +InformRequest-PDU.""", + }, # scalar + "snmpTrapEnterprise" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.4.3", + "status" : "current", + "syntax" : { + "type" : { "module" :"", "name" : "ObjectIdentifier"}, + }, + "access" : "notifyonly", + "description" : + """The authoritative identification of the enterprise +associated with the trap currently being sent. When an +SNMP proxy agent is mapping an RFC1157 Trap-PDU +into a SNMPv2-Trap-PDU, this variable occurs as the +last varbind.""", + }, # scalar + "snmpTraps" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.5", + }, # node + "snmpSet" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.6", + }, # node + "snmpSetSerialNo" : { + "nodetype" : "scalar", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.6.1", + "status" : "current", + "syntax" : { + "type" : { "module" :"SNMPv2-TC", "name" : "TestAndIncr"}, + }, + "access" : "readwrite", + "description" : + """An advisory lock used to allow several cooperating +command generator applications to coordinate their +use of the SNMP set operation. + +This object is used for coarse-grain coordination. +To achieve fine-grain coordination, one or more similar +objects might be defined within each MIB group, as +appropriate.""", + }, # scalar + "snmpMIBConformance" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2", + }, # node + "snmpMIBCompliances" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.1", + }, # node + "snmpMIBGroups" : { + "nodetype" : "node", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2", + }, # node + }, # nodes + + "notifications" : { + "coldStart" : { + "nodetype" : "notification", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.1", + "status" : "current", + "objects" : { + }, + "description" : + """A coldStart trap signifies that the SNMP entity, +supporting a notification originator application, is +reinitializing itself and that its configuration may +have been altered.""", + }, # notification + "warmStart" : { + "nodetype" : "notification", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.2", + "status" : "current", + "objects" : { + }, + "description" : + """A warmStart trap signifies that the SNMP entity, +supporting a notification originator application, +is reinitializing itself such that its configuration +is unaltered.""", + }, # notification + "authenticationFailure" : { + "nodetype" : "notification", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.1.5.5", + "status" : "current", + "objects" : { + }, + "description" : + """An authenticationFailure trap signifies that the SNMP +entity has received a protocol message that is not +properly authenticated. While all implementations +of SNMP entities MAY be capable of generating this +trap, the snmpEnableAuthenTraps object indicates +whether this trap will be generated.""", + }, # notification + }, # notifications + + "groups" : { + "snmpSetGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.5", + "status" : "current", + "members" : { + "snmpSetSerialNo" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """A collection of objects which allow several cooperating +command generator applications to coordinate their +use of the set operation.""", + }, # group + "systemGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.6", + "status" : "current", + "members" : { + "sysDescr" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysObjectID" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysUpTime" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysContact" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysName" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysLocation" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysServices" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysORLastChange" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysORID" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysORUpTime" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "sysORDescr" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """The system group defines objects which are common to all +managed systems.""", + }, # group + "snmpBasicNotificationsGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.7", + "status" : "current", + "members" : { + "coldStart" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "authenticationFailure" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """The basic notifications implemented by an SNMP entity +supporting command responder applications.""", + }, # group + "snmpGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.8", + "status" : "current", + "members" : { + "snmpInPkts" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInBadVersions" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInASNParseErrs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpSilentDrops" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpProxyDrops" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpEnableAuthenTraps" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """A collection of objects providing basic instrumentation +and control of an SNMP entity.""", + }, # group + "snmpCommunityGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.9", + "status" : "current", + "members" : { + "snmpInBadCommunityNames" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInBadCommunityUses" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """A collection of objects providing basic instrumentation +of a SNMP entity which supports community-based +authentication.""", + }, # group + "snmpObsoleteGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.10", + "status" : "obsolete", + "members" : { + "snmpOutPkts" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInTooBigs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInNoSuchNames" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInBadValues" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInReadOnlys" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInGenErrs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInTotalReqVars" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInTotalSetVars" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInGetRequests" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInGetNexts" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInSetRequests" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInGetResponses" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpInTraps" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutTooBigs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutNoSuchNames" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutBadValues" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutGenErrs" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutGetRequests" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutGetNexts" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutSetRequests" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutGetResponses" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpOutTraps" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """A collection of objects from RFC 1213 made obsolete +by this MIB module.""", + }, # group + "snmpWarmStartNotificationGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.11", + "status" : "current", + "members" : { + "warmStart" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """An additional notification for an SNMP entity supporting +command responder applications, if it is able to reinitialize +itself such that its configuration is unaltered.""", + }, # group + "snmpNotificationGroup" : { + "nodetype" : "group", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.2.12", + "status" : "current", + "members" : { + "snmpTrapOID" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + "snmpTrapEnterprise" : { + "nodetype" : "member", + "module" : "SNMPv2-MIB" + }, + }, # members + "description" : + """These objects are required for entities +which support notification originator applications.""", + }, # group + }, # groups + + "compliances" : { + "snmpBasicCompliance" : { + "nodetype" : "compliance", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.1.2", + "status" : "deprecated", + "description" : + """The compliance statement for SNMPv2 entities which +implement the SNMPv2 MIB. + +This compliance statement is replaced by +snmpBasicComplianceRev2.""", + "requires" : { + "snmpGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpSetGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "systemGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpBasicNotificationsGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpCommunityGroup" : { + "nodetype" : "optional", + "module" : "SNMPv2-MIB", + "description" : + """This group is mandatory for SNMPv2 entities which +support community-based authentication.""", + }, + }, # requires + }, # compliance + "snmpBasicComplianceRev2" : { + "nodetype" : "compliance", + "moduleName" : "SNMPv2-MIB", + "oid" : "1.3.6.1.6.3.1.2.1.3", + "status" : "current", + "description" : + """The compliance statement for SNMP entities which +implement this MIB module.""", + "requires" : { + "snmpGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpSetGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "systemGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpBasicNotificationsGroup" : { + "nodetype" : "mandatory", + "module" : "SNMPv2-MIB" + }, + "snmpCommunityGroup" : { + "nodetype" : "optional", + "module" : "SNMPv2-MIB", + "description" : + """This group is mandatory for SNMP entities which +support community-based authentication.""", + }, + "snmpWarmStartNotificationGroup" : { + "nodetype" : "optional", + "module" : "SNMPv2-MIB", + "description" : + """This group is mandatory for an SNMP entity which +supports command responder applications, and is +able to reinitialize itself such that its +configuration is unaltered.""", + }, + }, # requires + }, # compliance + }, # compliances + +} diff --git a/test/dumps/smilint-smiv2/IF-MIB b/test/dumps/smilint-smiv2/IF-MIB new file mode 100644 index 0000000..2bf7653 --- /dev/null +++ b/test/dumps/smilint-smiv2/IF-MIB @@ -0,0 +1,4 @@ +../dumps/smiv2/IF-MIB:117: warning: index element `ifIndex' of row `ifEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/IF-MIB:1237: index element `ifRcvAddressAddress' of row `ifRcvAddressEntry' must have a size restriction +../dumps/smiv2/IF-MIB:1220: warning: index of row `ifRcvAddressEntry' can exceed OID size limit by 65420 subidentifier(s) +../dumps/smiv2/IF-MIB:1451: warning: deprecated group `ifOldObjectsGroup' is not referenced in this module diff --git a/test/dumps/smilint-smiv2/MAU-MIB b/test/dumps/smilint-smiv2/MAU-MIB new file mode 100644 index 0000000..bb284c2 --- /dev/null +++ b/test/dumps/smilint-smiv2/MAU-MIB @@ -0,0 +1,10 @@ +../dumps/smiv2/MAU-MIB:129: warning: redefinition of identifier `IANA-MAU-MIB::snmpDot3MauMgt' +../../mibs/iana/IANA-MAU-MIB:422: info: previous definition of `snmpDot3MauMgt' +../dumps/smiv2/MAU-MIB:21: warning: uncontrolled MODULE-IDENTITY registration +../dumps/smiv2/MAU-MIB:148: warning: index element `rpMauGroupIndex' of row `rpMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:148: warning: index element `rpMauPortIndex' of row `rpMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:148: warning: index element `rpMauIndex' of row `rpMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:460: warning: index element `ifMauIfIndex' of row `ifMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:460: warning: index element `ifMauIndex' of row `ifMauEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:932: warning: index element `broadMauIfIndex' of row `broadMauBasicEntry' should be not-accessible in SMIv2 MIB +../dumps/smiv2/MAU-MIB:932: warning: index element `broadMauIndex' of row `broadMauBasicEntry' should be not-accessible in SMIv2 MIB diff --git a/test/dumps/smilint-smiv2/Makefile.am b/test/dumps/smilint-smiv2/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/smilint-smiv2/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/smilint-smiv2/Makefile.in b/test/dumps/smilint-smiv2/Makefile.in new file mode 100644 index 0000000..71f33b3 --- /dev/null +++ b/test/dumps/smilint-smiv2/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/smilint-smiv2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/smilint-smiv2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/smilint-smiv2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/smilint-smiv2/RMON2-MIB b/test/dumps/smilint-smiv2/RMON2-MIB new file mode 100644 index 0000000..f970c39 --- /dev/null +++ b/test/dumps/smilint-smiv2/RMON2-MIB @@ -0,0 +1,21 @@ +../dumps/smiv2/RMON2-MIB:25: warning: redefinition of identifier `RMON-MIB::rmon' +../../mibs/ietf/RMON-MIB:88: info: previous definition of `rmon' +../dumps/smiv2/RMON2-MIB:25: warning: redefinition of identifier `RFC1271-MIB::rmon' +../../mibs/ietf/RFC1271-MIB:14: info: previous definition of `rmon' +../dumps/smiv2/RMON2-MIB:5294: warning: redefinition of identifier `RMON-MIB::rmonConformance' +../../mibs/ietf/RMON-MIB:211: info: previous definition of `rmonConformance' +../dumps/smiv2/RMON2-MIB:1069: warning: index of row `protocolDirEntry' can exceed OID size limit by 45 subidentifier(s) +../dumps/smiv2/RMON2-MIB:1834: index element `addressMapSource' of row `addressMapEntry' should but cannot have a size restriction +../dumps/smiv2/RMON2-MIB:1775: warning: index of row `addressMapEntry' can exceed OID size limit by 270 subidentifier(s) +../dumps/smiv2/RMON2-MIB:2211: warning: index of row `nlHostEntry' can exceed OID size limit by 142 subidentifier(s) +../dumps/smiv2/RMON2-MIB:2694: warning: index of row `nlMatrixSDEntry' can exceed OID size limit by 398 subidentifier(s) +../dumps/smiv2/RMON2-MIB:2841: warning: index of row `nlMatrixDSEntry' can exceed OID size limit by 398 subidentifier(s) +../dumps/smiv2/RMON2-MIB:3402: warning: index of row `alHostEntry' can exceed OID size limit by 143 subidentifier(s) +../dumps/smiv2/RMON2-MIB:3549: warning: index of row `alMatrixSDEntry' can exceed OID size limit by 399 subidentifier(s) +../dumps/smiv2/RMON2-MIB:3663: warning: index of row `alMatrixDSEntry' can exceed OID size limit by 399 subidentifier(s) +../dumps/smiv2/RMON2-MIB:5454: warning: deprecated group `probeConfigurationGroup' is not referenced in this module +../dumps/smiv2/RMON2-MIB:5498: warning: deprecated group `rmon1TokenRingEnhancementGroup' is not referenced in this module +../dumps/smiv2/RMON2-MIB:156: warning: type `ZeroBasedCounter32' has no format specification +../dumps/smiv2/RMON2-MIB:177: warning: type `LastCreateTime' has no format specification +../dumps/smiv2/RMON2-MIB:197: warning: type `TimeFilter' has no format specification +../dumps/smiv2/RMON2-MIB:428: warning: type `ControlString' has no format specification diff --git a/test/dumps/smilint-smiv2/SNMPv2-MIB b/test/dumps/smilint-smiv2/SNMPv2-MIB new file mode 100644 index 0000000..fb05db4 --- /dev/null +++ b/test/dumps/smilint-smiv2/SNMPv2-MIB @@ -0,0 +1 @@ +../dumps/smiv2/SNMPv2-MIB:750: warning: current group `snmpNotificationGroup' is not referenced in this module diff --git a/test/dumps/sming/IF-MIB b/test/dumps/sming/IF-MIB new file mode 100644 index 0000000..21432cb --- /dev/null +++ b/test/dumps/sming/IF-MIB @@ -0,0 +1,1697 @@ +// +// This module has been generated by smidump 0.4.5. Do not edit. +// +module IF-MIB { + + import IANAifType-MIB (IANAifType); + import IRTF-NMRG-SMING (Counter32, Counter64, + DisplayString255, Gauge32, + PhysAddress, TimeStamp, TimeTicks, + TruthValue); + import IRTF-NMRG-SMING-SNMP (AutonomousType, RowStatus, + TestAndIncr, mib-2); + import SNMPv2-MIB (snmpTraps); + +// +// MODULE META INFORMATION +// + + organization + "IETF Interfaces MIB Working Group"; + + contact + " Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com"; + + description + "The MIB module to describe generic objects for network + interface sub-layers. This MIB is an updated version of + MIB-II's ifTable, and incorporates the extensions defined in + RFC 1229."; + + revision { + date "2000-06-14 00:00"; + description + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863."; + }; + revision { + date "1996-02-28 21:55"; + description + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233."; + }; + revision { + date "1993-11-08 21:55"; + description + "Initial revision, published as part of RFC 1573."; + }; + + identity ifMIB; + +// +// TYPE DEFINITIONS +// + + typedef OwnerString { + type OctetString (0..255); + format "255a"; + status deprecated; + 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'."; + }; + + typedef InterfaceIndex { + type Integer32 (1..2147483647); + format "d"; + description + "A unique value, greater than zero, for each interface or + interface sub-layer in the managed system. It is + recommended that values are assigned contiguously starting + from 1. The value for each interface sub-layer must remain + constant at least from one re-initialization of the entity's + network management system to the next re-initialization."; + }; + + typedef InterfaceIndexOrZero { + type Integer32 (0..2147483647); + format "d"; + description + "This textual convention is an extension of the + InterfaceIndex convention. The latter defines a greater + than zero value used to identify an interface or interface + sub-layer in the managed system. This extension permits the + additional value of zero. the value zero is object-specific + and must therefore be defined as part of the description of + any object which uses this syntax. Examples of the usage of + zero might include situations where interface was unknown, + or when none or all interfaces need to be referenced."; + }; + +// +// OBJECT DEFINITIONS +// + + + node interfaces { + oid mib-2.2; + }; + + scalar ifNumber { + oid interfaces.1; + type Integer32; + access readonly; + description + "The number of network interfaces (regardless of their + current state) present on this system."; + }; + + table ifTable { + oid interfaces.2; + description + "A list of interface entries. The number of entries is + given by the value of ifNumber."; + + row ifEntry { + oid ifTable.1; + index (ifIndex); + description + "An entry containing management information applicable to a + particular interface."; + + column ifIndex { + oid ifEntry.1; + type InterfaceIndex; + access readonly; + description + "A unique value, greater than zero, for each interface. It + is recommended that values are assigned contiguously + starting from 1. The value for each interface sub-layer + must remain constant at least from one re-initialization of + the entity's network management system to the next re- + initialization."; + }; + + column ifDescr { + oid ifEntry.2; + type DisplayString (0..255); + access readonly; + description + "A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software."; + }; + + column ifType { + oid ifEntry.3; + type IANAifType; + access readonly; + description + "The type of interface. Additional values for ifType are + assigned by the Internet Assigned Numbers Authority (IANA), + through updating the syntax of the IANAifType textual + convention."; + }; + + column ifMtu { + oid ifEntry.4; + type Integer32; + access readonly; + description + "The size of the largest packet which can be sent/received + on the interface, specified in octets. For interfaces that + are used for transmitting network datagrams, this is the + size of the largest network datagram that can be sent on the + interface."; + }; + + column ifSpeed { + oid ifEntry.5; + type Gauge32; + access readonly; + description + "An estimate of the interface's current bandwidth in bits + per second. For interfaces which do not vary in bandwidth + or for those where no accurate estimation can be made, this + object should contain the nominal bandwidth. If the + bandwidth of the interface is greater than the maximum value + reportable by this object then this object should report its + maximum value (4,294,967,295) and ifHighSpeed must be used + to report the interace's speed. For a sub-layer which has + no concept of bandwidth, this object should be zero."; + }; + + column ifPhysAddress { + oid ifEntry.6; + type PhysAddress; + access readonly; + description + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific MIB + must define the bit and byte ordering and the format of the + value of this object. For interfaces which do not have such + an address (e.g., a serial line), this object should contain + an octet string of zero length."; + }; + + column ifAdminStatus { + oid ifEntry.7; + type Enumeration (up(1), down(2), testing(3)); + access readwrite; + description + "The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state)."; + }; + + column ifOperStatus { + oid ifEntry.8; + type Enumeration (up(1), down(2), testing(3), + unknown(4), dormant(5), notPresent(6), + lowerLayerDown(7)); + access readonly; + description + "The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components."; + }; + + column ifLastChange { + oid ifEntry.9; + type TimeTicks; + access readonly; + description + "The value of sysUpTime at the time the interface entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value."; + }; + + column ifInOctets { + oid ifEntry.10; + type Counter32; + access readonly; + description + "The total number of octets received on the interface, + + + including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifInUcastPkts { + oid ifEntry.11; + type Counter32; + access readonly; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifInNUcastPkts { + oid ifEntry.12; + type Counter32; + access readonly; + status deprecated; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast or + broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifInMulticastPkts and + ifInBroadcastPkts."; + }; + + column ifInDiscards { + oid ifEntry.13; + type Counter32; + access readonly; + description + "The number of inbound packets which were chosen to be + discarded even though no errors had been detected to prevent + + + their being deliverable to a higher-layer protocol. One + possible reason for discarding such a packet could be to + free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifInErrors { + oid ifEntry.14; + type Counter32; + access readonly; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of inbound + transmission units that contained errors preventing them + from being deliverable to a higher-layer protocol. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifInUnknownProtos { + oid ifEntry.15; + type Counter32; + access readonly; + description + "For packet-oriented interfaces, the number of packets + received via the interface which were discarded because of + an unknown or unsupported protocol. For character-oriented + or fixed-length interfaces that support protocol + multiplexing the number of transmission units received via + the interface which were discarded because of an unknown or + unsupported protocol. For any interface that does not + support protocol multiplexing, this counter will always be + 0. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifOutOctets { + oid ifEntry.16; + type Counter32; + access readonly; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifOutUcastPkts { + oid ifEntry.17; + type Counter32; + access readonly; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifOutNUcastPkts { + oid ifEntry.18; + type Counter32; + access readonly; + status deprecated; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifOutMulticastPkts + and ifOutBroadcastPkts."; + }; + + column ifOutDiscards { + oid ifEntry.19; + type Counter32; + access readonly; + description + "The number of outbound packets which were chosen to be + discarded even though no errors had been detected to prevent + their being transmitted. One possible reason for discarding + such a packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifOutErrors { + oid ifEntry.20; + type Counter32; + access readonly; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifOutQLen { + oid ifEntry.21; + type Gauge32; + access readonly; + status deprecated; + description + "The length of the output packet queue (in packets)."; + }; + + column ifSpecific { + oid ifEntry.22; + type ObjectIdentifier; + access readonly; + status deprecated; + description + "A reference to MIB definitions specific to the particular + media being used to realize the interface. It is + + + recommended that this value point to an instance of a MIB + object in the media-specific MIB, i.e., that this object + have the semantics associated with the InstancePointer + textual convention defined in RFC 2579. In fact, it is + recommended that the media-specific MIB specify what value + ifSpecific should/can take for values of ifType. If no MIB + definitions specific to the particular media are available, + the value should be set to the OBJECT IDENTIFIER { 0 0 }."; + }; + }; + }; + + node ifMIB { + oid mib-2.31; + }; + + node ifMIBObjects { + oid ifMIB.1; + }; + + table ifXTable { + oid ifMIBObjects.1; + description + "A list of interface entries. The number of entries is + given by the value of ifNumber. This table contains + additional objects for the interface table."; + + row ifXEntry { + oid ifXTable.1; + augments ifEntry; + description + "An entry containing additional management information + applicable to a particular interface."; + + column ifName { + oid ifXEntry.1; + type DisplayString; + access readonly; + description + "The textual name of the interface. The value of this + object should be the name of the interface as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name, such as `le0' or a simple port number, such as `1', + depending on the interface naming syntax of the device. If + several entries in the ifTable together represent a single + interface as named by the device, then each will have the + same value of ifName. Note that for an agent which responds + to SNMP queries concerning an interface on some other + (proxied) device, then the value of ifName for such an + interface is the proxied device's local name for it. + + If there is no local name, or this object is otherwise not + applicable, then this object contains a zero-length string."; + }; + + column ifInMulticastPkts { + oid ifXEntry.2; + type Counter32; + access readonly; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifInBroadcastPkts { + oid ifXEntry.3; + type Counter32; + access readonly; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifOutMulticastPkts { + oid ifXEntry.4; + type Counter32; + access readonly; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifOutBroadcastPkts { + oid ifXEntry.5; + type Counter32; + access readonly; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifHCInOctets { + oid ifXEntry.6; + type Counter64; + access readonly; + description + "The total number of octets received on the interface, + including framing characters. This object is a 64-bit + version of ifInOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifHCInUcastPkts { + oid ifXEntry.7; + type Counter64; + access readonly; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. This object is a + 64-bit version of ifInUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifHCInMulticastPkts { + oid ifXEntry.8; + type Counter64; + access readonly; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifInMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifHCInBroadcastPkts { + oid ifXEntry.9; + type Counter64; + access readonly; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. This object is a 64-bit version + of ifInBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifHCOutOctets { + oid ifXEntry.10; + type Counter64; + access readonly; + description + "The total number of octets transmitted out of the + interface, including framing characters. This object is a + 64-bit version of ifOutOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifHCOutUcastPkts { + oid ifXEntry.11; + type Counter64; + access readonly; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. This object is a + 64-bit version of ifOutUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifHCOutMulticastPkts { + oid ifXEntry.12; + type Counter64; + access readonly; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifOutMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifHCOutBroadcastPkts { + oid ifXEntry.13; + type Counter64; + access readonly; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. This object is a 64-bit version + of ifOutBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + }; + + column ifLinkUpDownTrapEnable { + oid ifXEntry.14; + type Enumeration (enabled(1), disabled(2)); + access readwrite; + description + "Indicates whether linkUp/linkDown traps should be generated + for this interface. + + By default, this object should have the value enabled(1) for + interfaces which do not operate on 'top' of any other + interface (as defined in the ifStackTable), and disabled(2) + otherwise."; + }; + + column ifHighSpeed { + oid ifXEntry.15; + type Gauge32; + access readonly; + description + "An estimate of the interface's current bandwidth in units + of 1,000,000 bits per second. If this object reports a + value of `n' then the speed of the interface is somewhere in + the range of `n-500,000' to `n+499,999'. For interfaces + which do not vary in bandwidth or for those where no + accurate estimation can be made, this object should contain + the nominal bandwidth. For a sub-layer which has no concept + of bandwidth, this object should be zero."; + }; + + column ifPromiscuousMode { + oid ifXEntry.16; + type TruthValue; + access readwrite; + description + "This object has a value of false(2) if this interface only + accepts packets/frames that are addressed to this station. + This object has a value of true(1) when the station accepts + all packets/frames transmitted on the media. The value + true(1) is only legal on certain types of media. If legal, + setting this object to a value of true(1) may require the + interface to be reset before becoming effective. + + The value of ifPromiscuousMode does not affect the reception + of broadcast and multicast packets/frames by the interface."; + }; + + column ifConnectorPresent { + oid ifXEntry.17; + type TruthValue; + access readonly; + description + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise."; + }; + + column ifAlias { + oid ifXEntry.18; + type DisplayString (0..64); + access readwrite; + description + "This object is an 'alias' name for the interface as + specified by a network manager, and provides a non-volatile + 'handle' for the interface. + + On the first instantiation of an interface, the value of + ifAlias associated with that interface is the zero-length + string. As and when a value is written into an instance of + ifAlias through a network management set operation, then the + agent must retain the supplied value in the ifAlias instance + associated with the same interface for as long as that + interface remains instantiated, including across all re- + initializations/reboots of the network management system, + including those which result in a change of the interface's + ifIndex value. + + An example of the value which a network manager might store + in this object for a WAN interface is the (Telco's) circuit + number/identifier of the interface. + + Some agents may support write-access only for interfaces + having particular values of ifType. An agent which supports + write access to this object is required to keep the value in + non-volatile storage, but it may limit the length of new + values depending on how much storage is already occupied by + the current values for other interfaces."; + }; + + column ifCounterDiscontinuityTime { + oid ifXEntry.19; + type TimeStamp; + access readonly; + description + "The value of sysUpTime on the most recent occasion at which + any one or more of this interface's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + + + Counter64 object contained in the ifTable or ifXTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value."; + }; + }; + }; + + table ifStackTable { + oid ifMIBObjects.2; + description + "The table containing information on the relationships + between the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'on top of' which other sub-layers, where each sub-layer + corresponds to a conceptual row in the ifTable. For + example, when the sub-layer with ifIndex value x runs over + the sub-layer with ifIndex value y, then this table + contains: + + ifStackStatus.x.y=active + + For each ifIndex value, I, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with I. For one of these rows, I + is the value of ifStackHigherLayer; for the other, I is the + value of ifStackLowerLayer. (If I is not involved in + multiplexing, then these are the only two rows associated + with I.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifStackStatus.0.x=active + ifStackStatus.x.0=active "; + + row ifStackEntry { + oid ifStackTable.1; + index (ifStackHigherLayer, ifStackLowerLayer); + create ; + description + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs on 'top' of the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable."; + + column ifStackHigherLayer { + oid ifStackEntry.1; + type InterfaceIndexOrZero; + access noaccess; + description + "The value of ifIndex corresponding to the higher sub-layer + of the relationship, i.e., the sub-layer which runs on 'top' + of the sub-layer identified by the corresponding instance of + ifStackLowerLayer. If there is no higher sub-layer (below + the internetwork layer), then this object has the value 0."; + }; + + column ifStackLowerLayer { + oid ifStackEntry.2; + type InterfaceIndexOrZero; + access noaccess; + description + "The value of ifIndex corresponding to the lower sub-layer + of the relationship, i.e., the sub-layer which runs 'below' + the sub-layer identified by the corresponding instance of + ifStackHigherLayer. If there is no lower sub-layer, then + this object has the value 0."; + }; + + column ifStackStatus { + oid ifStackEntry.3; + type RowStatus; + access readwrite; + description + "The status of the relationship between two sub-layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have consequences up + and down the interface stack. Thus, write access to this + object is likely to be inappropriate for some types of + interfaces, and many implementations will choose not to + support write-access for any type of interface."; + }; + }; + }; + + table ifTestTable { + oid ifMIBObjects.3; + status deprecated; + description + "This table contains one entry per interface. It defines + objects which allow a network manager to instruct an agent + to test an interface for various faults. Tests for an + interface are defined in the media-specific MIB for that + interface. After invoking a test, the object ifTestResult + can be read to determine the outcome. If an agent can not + perform the test, ifTestResult is set to so indicate. The + object ifTestCode can be used to provide further test- + specific or interface-specific (or even enterprise-specific) + information concerning the outcome of the test. Only one + test can be in progress on each interface at any one time. + If one test is in progress when another test is invoked, the + second test is rejected. Some agents may reject a test when + a prior test is active on another interface. + + Before starting a test, a manager-station must first obtain + 'ownership' of the entry in the ifTestTable for the + interface to be tested. This is accomplished with the + ifTestId and ifTestStatus objects as follows: + + try_again: + get (ifTestId, ifTestStatus) + while (ifTestStatus != notInUse) + /* + * Loop while a test is running or some other + * manager is configuring a test. + */ + short delay + get (ifTestId, ifTestStatus) + } + + /* + * Is not being used right now -- let's compete + * to see who gets it. + */ + lock_value = ifTestId + + if ( set(ifTestId = lock_value, ifTestStatus = inUse, + + + ifTestOwner = 'my-IP-address') == FAILURE) + /* + * Another manager got the ifTestEntry -- go + * try again + */ + goto try_again; + + /* + * I have the lock + */ + set up any test parameters. + + /* + * This starts the test + */ + set(ifTestType = test_to_run); + + wait for test completion by polling ifTestResult + + when test completes, agent sets ifTestResult + agent also sets ifTestStatus = 'notInUse' + + retrieve any additional test results, and ifTestId + + if (ifTestId == lock_value+1) results are valid + + A manager station first retrieves the value of the + appropriate ifTestId and ifTestStatus objects, periodically + repeating the retrieval if necessary, until the value of + ifTestStatus is 'notInUse'. The manager station then tries + to set the same ifTestId object to the value it just + retrieved, the same ifTestStatus object to 'inUse', and the + corresponding ifTestOwner object to a value indicating + itself. If the set operation succeeds then the manager has + obtained ownership of the ifTestEntry, and the value of the + ifTestId object is incremented by the agent (per the + semantics of TestAndIncr). Failure of the set operation + indicates that some other manager has obtained ownership of + the ifTestEntry. + + Once ownership is obtained, any test parameters can be + setup, and then the test is initiated by setting ifTestType. + On completion of the test, the agent sets ifTestStatus to + 'notInUse'. Once this occurs, the manager can retrieve the + results. In the (rare) event that the invocation of tests + by two network managers were to overlap, then there would be + a possibility that the first test's results might be + overwritten by the second test's results prior to the first + + + results being read. This unlikely circumstance can be + detected by a network manager retrieving ifTestId at the + same time as retrieving the test results, and ensuring that + the results are for the desired request. + + If ifTestType is not set within an abnormally long period of + time after ownership is obtained, the agent should time-out + the manager, and reset the value of the ifTestStatus object + back to 'notInUse'. It is suggested that this time-out + period be 5 minutes. + + In general, a management station must not retransmit a + request to invoke a test for which it does not receive a + response; instead, it properly inspects an agent's MIB to + determine if the invocation was successful. Only if the + invocation was unsuccessful, is the invocation request + retransmitted. + + Some tests may require the interface to be taken off-line in + order to execute them, or may even require the agent to + reboot after completion of the test. In these + circumstances, communication with the management station + invoking the test may be lost until after completion of the + test. An agent is not required to support such tests. + However, if such tests are supported, then the agent should + make every effort to transmit a response to the request + which invoked the test prior to losing communication. When + the agent is restored to normal service, the results of the + test are properly made available in the appropriate objects. + Note that this requires that the ifIndex value assigned to + an interface must be unchanged even if the test causes a + reboot. An agent must reject any test for which it cannot, + perhaps due to resource constraints, make available at least + the minimum amount of information after that test + completes."; + + row ifTestEntry { + oid ifTestTable.1; + augments ifEntry; + status deprecated; + description + "An entry containing objects for invoking tests on an + interface."; + + column ifTestId { + oid ifTestEntry.1; + type TestAndIncr; + access readwrite; + status deprecated; + description + "This object identifies the current invocation of the + interface's test."; + }; + + column ifTestStatus { + oid ifTestEntry.2; + type Enumeration (notInUse(1), inUse(2)); + access readwrite; + status deprecated; + description + "This object indicates whether or not some manager currently + has the necessary 'ownership' required to invoke a test on + this interface. A write to this object is only successful + when it changes its value from 'notInUse(1)' to 'inUse(2)'. + After completion of a test, the agent resets the value back + to 'notInUse(1)'."; + }; + + column ifTestType { + oid ifTestEntry.3; + type AutonomousType; + access readwrite; + status deprecated; + description + "A control variable used to start and stop operator- + initiated interface tests. Most OBJECT IDENTIFIER values + assigned to tests are defined elsewhere, in association with + specific types of interface. However, this document assigns + a value for a full-duplex loopback test, and defines the + special meanings of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + + When the value noTest is written to this object, no action + is taken unless a test is in progress, in which case the + test is aborted. Writing any other value to this object is + + + only valid when no test is currently in progress, in which + case the indicated test is initiated. + + When read, this object always returns the most recent value + that ifTestType was set to. If it has not been set since + the last initialization of the network management subsystem + on the agent, a value of noTest is returned."; + }; + + column ifTestResult { + oid ifTestEntry.4; + type Enumeration (none(1), success(2), + inProgress(3), notSupported(4), + unAbleToRun(5), aborted(6), failed(7)); + access readonly; + status deprecated; + description + "This object contains the result of the most recently + requested test, or the value none(1) if no tests have been + requested since the last reset. Note that this facility + provides no provision for saving the results of one test + when starting another, as could be required if used by + multiple managers concurrently."; + }; + + column ifTestCode { + oid ifTestEntry.5; + type ObjectIdentifier; + access readonly; + status deprecated; + description + "This object contains a code which contains more specific + information on the test result, for example an error-code + after a failed test. Error codes and other values this + object may take are specific to the type of interface and/or + test. The value may have the semantics of either the + AutonomousType or InstancePointer textual conventions as + defined in RFC 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available."; + }; + + column ifTestOwner { + oid ifTestEntry.6; + type OwnerString; + access readwrite; + status deprecated; + description + "The entity which currently has the 'ownership' required to + invoke a test on this interface."; + }; + }; + }; + + table ifRcvAddressTable { + oid ifMIBObjects.4; + description + "This table contains an entry for each address (broadcast, + multicast, or uni-cast) for which the system will receive + packets/frames on a particular interface, except as follows: + + - for an interface operating in promiscuous mode, entries + are only required for those addresses for which the system + would receive frames were it not operating in promiscuous + mode. + + + - for 802.5 functional addresses, only one entry is + required, for the address which has the functional address + bit ANDed with the bit mask of all functional addresses for + which the interface will accept frames. + + A system is normally able to use any unicast address which + corresponds to an entry in this table as a source address."; + + row ifRcvAddressEntry { + oid ifRcvAddressTable.1; + index (ifIndex, ifRcvAddressAddress); + create ; + description + "A list of objects identifying an address for which the + system will accept packets/frames on the particular + interface identified by the index value ifIndex."; + + column ifRcvAddressAddress { + oid ifRcvAddressEntry.1; + type PhysAddress; + access noaccess; + description + "An address for which the system will accept packets/frames + on this entry's interface."; + }; + + column ifRcvAddressStatus { + oid ifRcvAddressEntry.2; + type RowStatus; + access readwrite; + description + "This object is used to create and delete rows in the + ifRcvAddressTable."; + }; + + column ifRcvAddressType { + oid ifRcvAddressEntry.3; + type Enumeration (other(1), volatile(2), + nonVolatile(3)); + access readwrite; + default volatile; + description + "This object has the value nonVolatile(3) for those entries + in the table which are valid and will not be deleted by the + next restart of the managed system. Entries having the + value volatile(2) are valid and exist, but have not been + saved, so that will not exist after the next restart of the + managed system. Entries having the value other(1) are valid + and exist but are not classified as to whether they will + continue to exist after the next restart."; + }; + }; + }; + + scalar ifTableLastChange { + oid ifMIBObjects.5; + type TimeTicks; + access readonly; + description + "The value of sysUpTime at the time of the last creation or + deletion of an entry in the ifTable. If the number of + entries has been unchanged since the last re-initialization + of the local network management subsystem, then this object + contains a zero value."; + }; + + scalar ifStackLastChange { + oid ifMIBObjects.6; + type TimeTicks; + access readonly; + description + "The value of sysUpTime at the time of the last change of + the (whole) interface stack. A change of the interface + stack is defined to be any creation, deletion, or change in + value of any instance of ifStackStatus. If the interface + stack has been unchanged since the last re-initialization of + the local network management subsystem, then this object + contains a zero value."; + }; + + node ifConformance { + oid ifMIB.2; + }; + + node ifGroups { + oid ifConformance.1; + }; + + node ifCompliances { + oid ifConformance.2; + }; + +// +// NOTIFICATION DEFINITIONS +// + + notification linkDown { + oid snmpTraps.3; + objects (ifIndex, ifAdminStatus, ifOperStatus); + description + "A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus."; + }; + + notification linkUp { + oid snmpTraps.4; + objects (ifIndex, ifAdminStatus, ifOperStatus); + description + "A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus."; + }; + +// +// GROUP DEFINITIONS +// + + group ifGeneralGroup { + oid ifGroups.1; + members (ifDescr, ifType, ifSpeed, ifPhysAddress, + ifAdminStatus, ifOperStatus, ifLastChange, + ifLinkUpDownTrapEnable, ifConnectorPresent, + ifHighSpeed, ifName); + status deprecated; + description + "A collection of objects deprecated in favour of + ifGeneralInformationGroup."; + }; + + group ifFixedLengthGroup { + oid ifGroups.2; + members (ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors); + description + "A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) character-oriented or fixed-length-transmission + network interfaces."; + }; + + group ifHCFixedLengthGroup { + oid ifGroups.3; + members (ifHCInOctets, ifHCOutOctets, ifInOctets, + ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors); + description + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second) character- + oriented or fixed-length-transmission network interfaces."; + }; + + group ifPacketGroup { + oid ifGroups.4; + members (ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors, ifMtu, + ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, + ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode); + description + "A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) packet-oriented network interfaces."; + }; + + group ifHCPacketGroup { + oid ifGroups.5; + members (ifHCInOctets, ifHCOutOctets, ifInOctets, + ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors, ifMtu, ifInUcastPkts, + ifInMulticastPkts, ifInBroadcastPkts, + ifInDiscards, ifOutUcastPkts, + ifOutMulticastPkts, ifOutBroadcastPkts, + ifOutDiscards, ifPromiscuousMode); + description + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second but less + than or equal to 650,000,000 bits/second) packet-oriented + network interfaces."; + }; + + group ifVHCPacketGroup { + oid ifGroups.6; + members (ifHCInUcastPkts, ifHCInMulticastPkts, + ifHCInBroadcastPkts, ifHCOutUcastPkts, + ifHCOutMulticastPkts, ifHCOutBroadcastPkts, + ifHCInOctets, ifHCOutOctets, ifInOctets, + ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors, ifMtu, ifInUcastPkts, + ifInMulticastPkts, ifInBroadcastPkts, + ifInDiscards, ifOutUcastPkts, + ifOutMulticastPkts, ifOutBroadcastPkts, + ifOutDiscards, ifPromiscuousMode); + description + "A collection of objects providing information specific to + higher speed (greater than 650,000,000 bits/second) packet- + oriented network interfaces."; + }; + + group ifRcvAddressGroup { + oid ifGroups.7; + members (ifRcvAddressStatus, ifRcvAddressType); + description + "A collection of objects providing information on the + multiple addresses which an interface receives."; + }; + + group ifTestGroup { + oid ifGroups.8; + members (ifTestId, ifTestStatus, ifTestType, + ifTestResult, ifTestCode, ifTestOwner); + status deprecated; + description + "A collection of objects providing the ability to invoke + tests on an interface."; + }; + + group ifStackGroup { + oid ifGroups.9; + members (ifStackStatus); + status deprecated; + description + "The previous collection of objects providing information on + the layering of MIB-II interfaces."; + }; + + group ifGeneralInformationGroup { + oid ifGroups.10; + members (ifIndex, ifDescr, ifType, ifSpeed, + ifPhysAddress, ifAdminStatus, ifOperStatus, + ifLastChange, ifLinkUpDownTrapEnable, + ifConnectorPresent, ifHighSpeed, ifName, + ifNumber, ifAlias, ifTableLastChange); + description + "A collection of objects providing information applicable to + all network interfaces."; + }; + + group ifStackGroup2 { + oid ifGroups.11; + members (ifStackStatus, ifStackLastChange); + description + "A collection of objects providing information on the + layering of MIB-II interfaces."; + }; + + group ifOldObjectsGroup { + oid ifGroups.12; + members (ifInNUcastPkts, ifOutNUcastPkts, ifOutQLen, + ifSpecific); + status deprecated; + description + "The collection of objects deprecated from the original MIB- + II interfaces group."; + }; + + group ifCounterDiscontinuityGroup { + oid ifGroups.13; + members (ifCounterDiscontinuityTime); + description + "A collection of objects providing information specific to + interface counter discontinuities."; + }; + + group linkUpDownNotificationsGroup { + oid ifGroups.14; + members (linkUp, linkDown); + description + "The notifications which indicate specific changes in the + value of ifOperStatus."; + }; + +// +// COMPLIANCE DEFINITIONS +// + + compliance ifCompliance { + oid ifCompliances.1; + status deprecated; + description + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces."; + + mandatory (ifGeneralGroup, ifStackGroup); + + optional ifFixedLengthGroup { + description + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units."; + }; + optional ifHCFixedLengthGroup { + description + "This group is mandatory only for those network interfaces + which are character-oriented or transmit data in fixed- + length transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second."; + }; + optional ifPacketGroup { + description + "This group is mandatory for all network interfaces which + are packet-oriented."; + }; + optional ifHCPacketGroup { + description + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second."; + }; + optional ifTestGroup { + description + "This group is optional. Media-specific MIBs which require + interface tests are strongly encouraged to use this group + for invoking tests and reporting results. A medium specific + MIB which has mandatory tests may make implementation of + + + this group mandatory."; + }; + optional ifRcvAddressGroup { + description + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group."; + }; + + refine ifLinkUpDownTrapEnable { + access readonly; + description + "Write access is not required."; + }; + refine ifPromiscuousMode { + access readonly; + description + "Write access is not required."; + }; + refine ifStackStatus { + type RowStatus (active(1)); + access readonly; + description + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)."; + }; + refine ifAdminStatus { + type Enumeration (up(1), down(2)); + access readonly; + description + "Write access is not required, nor is support for the value + testing(3)."; + }; + }; + + compliance ifCompliance2 { + oid ifCompliances.2; + status deprecated; + description + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces."; + + mandatory (ifGeneralInformationGroup, ifStackGroup2, + ifCounterDiscontinuityGroup); + + optional ifFixedLengthGroup { + description + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units."; + }; + optional ifHCFixedLengthGroup { + description + "This group is mandatory only for those network interfaces + which are character-oriented or transmit data in fixed- + length transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second."; + }; + optional ifPacketGroup { + description + "This group is mandatory for all network interfaces which + are packet-oriented."; + }; + optional ifHCPacketGroup { + description + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second."; + }; + optional ifRcvAddressGroup { + description + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group."; + }; + + refine ifLinkUpDownTrapEnable { + access readonly; + description + "Write access is not required."; + }; + refine ifPromiscuousMode { + access readonly; + description + "Write access is not required."; + }; + refine ifStackStatus { + type RowStatus (active(1)); + access readonly; + description + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)."; + }; + refine ifAdminStatus { + type Enumeration (up(1), down(2)); + access readonly; + description + "Write access is not required, nor is support for the value + testing(3)."; + }; + refine ifAlias { + access readonly; + description + "Write access is not required."; + }; + }; + + compliance ifCompliance3 { + oid ifCompliances.3; + description + "The compliance statement for SNMP entities which have + network interfaces."; + + mandatory (ifGeneralInformationGroup, + linkUpDownNotificationsGroup); + + optional ifFixedLengthGroup { + description + "This group is mandatory for those network interfaces which + are character-oriented or transmit data in fixed-length + transmission units, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second."; + }; + optional ifHCFixedLengthGroup { + description + "This group is mandatory for those network interfaces which + are character-oriented or transmit data in fixed-length + transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second."; + }; + optional ifPacketGroup { + description + "This group is mandatory for those network interfaces which + are packet-oriented, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second."; + }; + optional ifHCPacketGroup { + description + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second."; + }; + optional ifVHCPacketGroup { + description + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second."; + }; + optional ifCounterDiscontinuityGroup { + description + "This group is mandatory for those network interfaces that + are required to maintain counters (i.e., those for which one + of the ifFixedLengthGroup, ifHCFixedLengthGroup, + ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is + mandatory)."; + }; + optional ifRcvAddressGroup { + description + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group."; + }; + + refine ifLinkUpDownTrapEnable { + access readonly; + description + "Write access is not required."; + }; + refine ifPromiscuousMode { + access readonly; + description + "Write access is not required."; + }; + refine ifAdminStatus { + type Enumeration (up(1), down(2)); + access readonly; + description + "Write access is not required, nor is support for the value + testing(3)."; + }; + refine ifAlias { + access readonly; + description + "Write access is not required."; + }; + }; + +}; // end of module IF-MIB. diff --git a/test/dumps/sming/MAU-MIB b/test/dumps/sming/MAU-MIB new file mode 100644 index 0000000..2cffd99 --- /dev/null +++ b/test/dumps/sming/MAU-MIB @@ -0,0 +1,1754 @@ +// +// This module has been generated by smidump 0.4.5. Do not edit. +// +module MAU-MIB { + + import IANA-MAU-MIB (IANAifJackType, + IANAifMauAutoNegCapBits, + IANAifMauMediaAvailable, + IANAifMauTypeListBits); + import IF-MIB (InterfaceIndex); + import IRTF-NMRG-SMING (Counter32, Counter64, TruthValue); + import IRTF-NMRG-SMING-SNMP (AutonomousType, mib-2); + +// +// MODULE META INFORMATION +// + + organization + "IETF Ethernet Interfaces and Hub MIB Working Group"; + + contact + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com"; + + description + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices."; + + revision { + date "2007-04-21 00:00"; + description + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836."; + }; + revision { + date "2003-09-19 00:00"; + description + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636."; + }; + revision { + date "1999-08-24 04:00"; + description + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation."; + }; + revision { + date "1997-10-31 00:00"; + description + "Version published as RFC 2239."; + }; + revision { + date "1993-09-30 00:00"; + description + "Initial version, published as RFC 1515."; + }; + + identity mauMod; + +// +// TYPE DEFINITIONS +// + + typedef JackType { + type Enumeration (other(1), rj45(2), rj45S(3), + db9(4), bnc(5), fAUI(6), mAUI(7), + fiberSC(8), fiberMIC(9), fiberST(10), + telco(11), mtrj(12), hssdc(13), + fiberLC(14)); + status deprecated; + description + "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types."; + }; + +// +// OBJECT DEFINITIONS +// + + + node snmpDot3MauMgt { + oid mib-2.26; + }; + + node snmpDot3MauTraps { + oid snmpDot3MauMgt.0; + }; + + node dot3RpMauBasicGroup { + oid snmpDot3MauMgt.1; + }; + + table rpMauTable { + oid dot3RpMauBasicGroup.1; + description + "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater."; + + row rpMauEntry { + oid rpMauTable.1; + index (rpMauGroupIndex, rpMauPortIndex, rpMauIndex); + description + "An entry in the table, containing information + about a single MAU."; + + column rpMauGroupIndex { + oid rpMauEntry.1; + type Integer32 (1..2147483647); + access readonly; + description + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex."; + reference + "RFC 2108, rptrGroupIndex."; + }; + + column rpMauPortIndex { + oid rpMauEntry.2; + type Integer32 (1..2147483647); + access readonly; + description + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected."; + reference + "RFC 2108, rptrPortIndex."; + }; + + column rpMauIndex { + oid rpMauEntry.3; + type Integer32 (1..2147483647); + access readonly; + description + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + }; + + column rpMauType { + oid rpMauEntry.4; + type AutonomousType; + access readonly; + description + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned."; + reference + "[IEEE802.3], 30.5.1.1.2, aMAUType."; + }; + + column rpMauStatus { + oid rpMauEntry.5; + type Enumeration (other(1), unknown(2), + operational(3), standby(4), shutdown(5), + reset(6)); + access readwrite; + description + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state."; + reference + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU."; + }; + + column rpMauMediaAvailable { + oid rpMauEntry.6; + type IANAifMauMediaAvailable; + access readonly; + description + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC."; + reference + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable."; + }; + + column rpMauMediaAvailableStateExits { + oid rpMauEntry.7; + type Counter32; + access readonly; + description + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange"; + }; + + column rpMauJabberState { + oid rpMauEntry.8; + type Enumeration (other(1), unknown(2), + noJabber(3), jabbering(4)); + access readonly; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + }; + + column rpMauJabberingStateEnters { + oid rpMauEntry.9; + type Counter32; + access readonly; + description + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange"; + }; + + column rpMauFalseCarriers { + oid rpMauEntry.10; + type Counter32; + access readonly; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange"; + }; + }; + }; + + table rpJackTable { + oid dot3RpMauBasicGroup.2; + description + "Information about the external jacks attached + to MAUs attached to the ports of a repeater."; + + row rpJackEntry { + oid rpJackTable.1; + index (rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpJackIndex); + description + "An entry in the table, containing information + about a particular jack."; + + column rpJackIndex { + oid rpJackEntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)."; + }; + + column rpJackType { + oid rpJackEntry.2; + type IANAifJackType; + access readonly; + description + "The jack connector type, as it appears on the + outside of the system."; + }; + }; + }; + + node dot3IfMauBasicGroup { + oid snmpDot3MauMgt.2; + }; + + table ifMauTable { + oid dot3IfMauBasicGroup.1; + description + "Table of descriptive and status information + about MAU(s) attached to an interface."; + + row ifMauEntry { + oid ifMauTable.1; + index (ifMauIfIndex, ifMauIndex); + description + "An entry in the table, containing information + about a single MAU."; + + column ifMauIfIndex { + oid ifMauEntry.1; + type InterfaceIndex; + access readonly; + description + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected."; + reference + "RFC 2863, ifIndex"; + }; + + column ifMauIndex { + oid ifMauEntry.2; + type Integer32 (1..2147483647); + access readonly; + description + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + }; + + column ifMauType { + oid ifMauEntry.3; + type AutonomousType; + access readonly; + description + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode."; + reference + "[IEEE802.3], 30.5.1.1.2, aMAUType."; + }; + + column ifMauStatus { + oid ifMauEntry.4; + type Enumeration (other(1), unknown(2), + operational(3), standby(4), shutdown(5), + reset(6)); + access readwrite; + description + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state."; + reference + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU."; + }; + + column ifMauMediaAvailable { + oid ifMauEntry.5; + type IANAifMauMediaAvailable; + access readonly; + description + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC."; + reference + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable."; + }; + + column ifMauMediaAvailableStateExits { + oid ifMauEntry.6; + type Counter32; + access readonly; + description + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime."; + reference + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime."; + }; + + column ifMauJabberState { + oid ifMauEntry.7; + type Enumeration (other(1), unknown(2), + noJabber(3), jabbering(4)); + access readonly; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + }; + + column ifMauJabberingStateEnters { + oid ifMauEntry.8; + type Counter32; + access readonly; + description + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime."; + }; + + column ifMauFalseCarriers { + oid ifMauEntry.9; + type Counter32; + access readonly; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime."; + }; + + column ifMauTypeList { + oid ifMauEntry.10; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability."; + }; + + column ifMauDefaultType { + oid ifMauEntry.11; + type AutonomousType; + access readwrite; + description + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4."; + }; + + column ifMauAutoNegSupported { + oid ifMauEntry.12; + type TruthValue; + access readonly; + description + "This object indicates whether or not + auto-negotiation is supported on this MAU."; + }; + + column ifMauTypeListBits { + oid ifMauEntry.13; + type IANAifMauTypeListBits; + access readonly; + description + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC."; + }; + + column ifMauHCFalseCarriers { + oid ifMauEntry.14; + type Counter64; + access readonly; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime."; + }; + }; + }; + + table ifJackTable { + oid dot3IfMauBasicGroup.2; + description + "Information about the external jacks attached + to MAUs attached to an interface."; + + row ifJackEntry { + oid ifJackTable.1; + index (ifMauIfIndex, ifMauIndex, ifJackIndex); + description + "An entry in the table, containing information + about a particular jack."; + + column ifJackIndex { + oid ifJackEntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU."; + }; + + column ifJackType { + oid ifJackEntry.2; + type IANAifJackType; + access readonly; + description + "The jack connector type, as it appears on the + outside of the system."; + }; + }; + }; + + node dot3BroadMauBasicGroup { + oid snmpDot3MauMgt.3; + }; + + table broadMauBasicTable { + oid dot3BroadMauBasicGroup.1; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces."; + + row broadMauBasicEntry { + oid broadMauBasicTable.1; + index (broadMauIfIndex, broadMauIndex); + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU."; + + column broadMauIfIndex { + oid broadMauBasicEntry.1; + type InterfaceIndex; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected."; + reference + "RFC 2863, ifIndex."; + }; + + column broadMauIndex { + oid broadMauBasicEntry.2; + type Integer32 (1..2147483647); + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + }; + + column broadMauXmtRcvSplitType { + oid broadMauBasicEntry.3; + type Enumeration (other(1), single(2), dual(3)); + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero."; + reference + "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType."; + }; + + column broadMauXmtCarrierFreq { + oid broadMauBasicEntry.4; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz."; + reference + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency."; + }; + + column broadMauTranslationFreq { + oid broadMauBasicEntry.5; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz."; + reference + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency."; + }; + }; + }; + + node dot3IfMauAutoNegGroup { + oid snmpDot3MauMgt.5; + }; + + table ifMauAutoNegTable { + oid dot3IfMauAutoNegGroup.1; + description + "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function."; + + row ifMauAutoNegEntry { + oid ifMauAutoNegTable.1; + index (ifMauIfIndex, ifMauIndex); + description + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU."; + + column ifMauAutoNegAdminStatus { + oid ifMauAutoNegEntry.1; + type Enumeration (enabled(1), disabled(2)); + access readwrite; + description + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function."; + reference + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl."; + }; + + column ifMauAutoNegRemoteSignaling { + oid ifMauAutoNegEntry.2; + type Enumeration (detected(1), notdetected(2)); + access readonly; + description + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received."; + reference + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling."; + }; + + column ifMauAutoNegConfig { + oid ifMauAutoNegEntry.4; + type Enumeration (other(1), configuring(2), + complete(3), disabled(4), + parallelDetectFail(5)); + access readonly; + description + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]."; + reference + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig."; + }; + + column ifMauAutoNegCapability { + oid ifMauAutoNegEntry.5; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB."; + reference + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility."; + }; + + column ifMauAutoNegCapAdvertised { + oid ifMauAutoNegEntry.6; + type Integer32; + access readwrite; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + }; + + column ifMauAutoNegCapReceived { + oid ifMauAutoNegEntry.7; + type Integer32; + access readonly; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + }; + + column ifMauAutoNegRestart { + oid ifMauAutoNegEntry.8; + type Enumeration (restart(1), norestart(2)); + access readwrite; + description + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect."; + reference + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig."; + }; + + column ifMauAutoNegCapabilityBits { + oid ifMauAutoNegEntry.9; + type IANAifMauAutoNegCapBits; + access readonly; + description + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility."; + }; + + column ifMauAutoNegCapAdvertisedBits { + oid ifMauAutoNegEntry.10; + type IANAifMauAutoNegCapBits; + access readwrite; + description + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + }; + + column ifMauAutoNegCapReceivedBits { + oid ifMauAutoNegEntry.11; + type IANAifMauAutoNegCapBits; + access readonly; + description + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + }; + + column ifMauAutoNegRemoteFaultAdvertised { + oid ifMauAutoNegEntry.12; + type Enumeration (noError(1), offline(2), + linkFailure(3), autoNegError(4)); + access readwrite; + description + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + }; + + column ifMauAutoNegRemoteFaultReceived { + oid ifMauAutoNegEntry.13; + type Enumeration (noError(1), offline(2), + linkFailure(3), autoNegError(4)); + access readonly; + description + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + }; + }; + }; + + node mauMod { + oid snmpDot3MauMgt.6; + }; + + node mauModConf { + oid mauMod.1; + }; + + node mauModCompls { + oid mauModConf.1; + }; + + node mauModObjGrps { + oid mauModConf.2; + }; + + node mauModNotGrps { + oid mauModConf.3; + }; + +// +// NOTIFICATION DEFINITIONS +// + + notification rpMauJabberTrap { + oid snmpDot3MauTraps.1; + objects (rpMauJabberState); + description + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them."; + reference + "[IEEE802.3], 30.5.1.3.1, nJabber notification."; + }; + + notification ifMauJabberTrap { + oid snmpDot3MauTraps.2; + objects (ifMauJabberState); + description + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them."; + reference + "[IEEE802.3], 30.5.1.3.1, nJabber notification."; + }; + +// +// GROUP DEFINITIONS +// + + group mauRpGrpBasic { + oid mauModObjGrps.1; + members (rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpMauType, rpMauStatus, rpMauMediaAvailable, + rpMauMediaAvailableStateExits, + rpMauJabberState, rpMauJabberingStateEnters); + description + "Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations."; + }; + + group mauRpGrp100Mbs { + oid mauModObjGrps.2; + members (rpMauFalseCarriers); + description + "Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability."; + }; + + group mauRpGrpJack { + oid mauModObjGrps.3; + members (rpJackType); + description + "Conformance group for MAUs attached to + repeater ports with managed jacks."; + }; + + group mauIfGrpBasic { + oid mauModObjGrps.4; + members (ifMauIfIndex, ifMauIndex, ifMauType, + ifMauStatus, ifMauMediaAvailable, + ifMauMediaAvailableStateExits, + ifMauJabberState, ifMauJabberingStateEnters); + description + "Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations."; + }; + + group mauIfGrp100Mbs { + oid mauModObjGrps.5; + members (ifMauFalseCarriers, ifMauTypeList, + ifMauDefaultType, ifMauAutoNegSupported); + status deprecated; + description + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity."; + }; + + group mauIfGrpJack { + oid mauModObjGrps.6; + members (ifJackType); + description + "Conformance group for MAUs attached to + interfaces with managed jacks."; + }; + + group mauIfGrpAutoNeg { + oid mauModObjGrps.7; + members (ifMauAutoNegAdminStatus, + ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapability, + ifMauAutoNegCapAdvertised, + ifMauAutoNegCapReceived, + ifMauAutoNegRestart); + status deprecated; + description + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2."; + }; + + group mauBroadBasic { + oid mauModObjGrps.8; + members (broadMauIfIndex, broadMauIndex, + broadMauXmtRcvSplitType, + broadMauXmtCarrierFreq, + broadMauTranslationFreq); + status deprecated; + description + "********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations."; + }; + + group mauIfGrpHighCapacity { + oid mauModObjGrps.9; + members (ifMauFalseCarriers, ifMauTypeListBits, + ifMauDefaultType, ifMauAutoNegSupported); + description + "Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability."; + }; + + group mauIfGrpAutoNeg2 { + oid mauModObjGrps.10; + members (ifMauAutoNegAdminStatus, + ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, + ifMauAutoNegCapabilityBits, + ifMauAutoNegCapAdvertisedBits, + ifMauAutoNegCapReceivedBits, + ifMauAutoNegRestart); + description + "Conformance group for MAUs attached to + interfaces with managed auto-negotiation."; + }; + + group mauIfGrpAutoNeg1000Mbps { + oid mauModObjGrps.11; + members (ifMauAutoNegRemoteFaultAdvertised, + ifMauAutoNegRemoteFaultReceived); + description + "Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation."; + }; + + group mauIfGrpHCStats { + oid mauModObjGrps.12; + members (ifMauHCFalseCarriers); + description + "Conformance for high capacity statistics for + MAUs attached to interfaces."; + }; + + group rpMauNotifications { + oid mauModNotGrps.1; + members (rpMauJabberTrap); + description + "Notifications for repeater MAUs."; + }; + + group ifMauNotifications { + oid mauModNotGrps.2; + members (ifMauJabberTrap); + description + "Notifications for interface MAUs."; + }; + +// +// COMPLIANCE DEFINITIONS +// + + compliance mauModRpCompl { + oid mauModCompls.1; + status deprecated; + description + "******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only."; + + mandatory (mauRpGrpBasic); + + optional mauRpGrp100Mbs { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability."; + }; + optional mauRpGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional rpMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to repeater ports."; + }; + }; + + compliance mauModIfCompl { + oid mauModCompls.2; + status deprecated; + description + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2."; + + mandatory (mauIfGrpBasic); + + optional mauIfGrp100Mbs { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + capability."; + }; + optional mauIfGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional mauIfGrpAutoNeg { + description + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation."; + }; + optional mauBroadBasic { + description + "Implementation of this group is mandatory + for broadband MAUs."; + }; + optional ifMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to interfaces."; + }; + }; + + compliance mauModIfCompl2 { + oid mauModCompls.3; + status deprecated; + description + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3."; + + mandatory (mauIfGrpBasic); + + optional mauIfGrpHighCapacity { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability."; + }; + optional mauIfGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional mauIfGrpAutoNeg2 { + description + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation."; + }; + optional mauIfGrpAutoNeg1000Mbps { + description + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation."; + }; + optional ifMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to interfaces."; + }; + + refine ifMauStatus { + access readonly; + description + "Write access is not required."; + }; + }; + + compliance mauModRpCompl2 { + oid mauModCompls.4; + description + "Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108)."; + + mandatory (mauRpGrpBasic); + + optional mauRpGrp100Mbs { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability."; + }; + optional mauRpGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional rpMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to repeater ports."; + }; + + refine rpMauStatus { + access readonly; + description + "Write access is not required."; + }; + }; + + compliance mauModIfCompl3 { + oid mauModCompls.5; + description + "Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635)."; + + mandatory (mauIfGrpBasic); + + optional mauIfGrpHighCapacity { + description + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability."; + }; + optional mauIfGrpHCStats { + description + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s capacity, and + is recommended for MAUs that have 100Mb/s + capacity."; + }; + optional mauIfGrpJack { + description + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks."; + }; + optional mauIfGrpAutoNeg2 { + description + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation."; + }; + optional mauIfGrpAutoNeg1000Mbps { + description + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation."; + }; + optional ifMauNotifications { + description + "Implementation of this group is recommended + for MAUs attached to interfaces."; + }; + + refine ifMauStatus { + access readonly; + description + "Write access is not required."; + }; + }; + +}; // end of module MAU-MIB. diff --git a/test/dumps/sming/Makefile.am b/test/dumps/sming/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/sming/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/sming/Makefile.in b/test/dumps/sming/Makefile.in new file mode 100644 index 0000000..bab7577 --- /dev/null +++ b/test/dumps/sming/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/sming +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/sming/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/sming/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/sming/RMON2-MIB b/test/dumps/sming/RMON2-MIB new file mode 100644 index 0000000..423b9bc --- /dev/null +++ b/test/dumps/sming/RMON2-MIB @@ -0,0 +1,5332 @@ +// +// This module has been generated by smidump 0.4.5. Do not edit. +// +module RMON2-MIB { + + import IF-MIB (ifIndex); + import IRTF-NMRG-SMING (Counter32, DisplayString255, + Gauge32, IpAddress, TimeStamp, + TimeTicks); + import IRTF-NMRG-SMING-SNMP (RowStatus, mib-2); + import RMON-MIB (OwnerString, channelEntry, + etherStatsEntry, filter, + filterEntry, history, + historyControlEntry, + hostControlEntry, hosts, matrix, + matrixControlEntry, statistics); + import TOKEN-RING-RMON-MIB (ringStationControlEntry, + sourceRoutingStatsEntry, + tokenRing, tokenRingMLStatsEntry, + tokenRingPStatsEntry); + +// +// MODULE META INFORMATION +// + + organization + "IETF RMON MIB Working Group"; + + contact + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: "; + + description + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices."; + + revision { + date "2006-05-02 00:00"; + description + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics."; + }; + revision { + date "2002-07-08 00:00"; + description + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications."; + }; + revision { + date "1996-05-27 00:00"; + description + "Original version. Published as RFC 2021."; + }; + + identity rmon; + +// +// TYPE DEFINITIONS +// + + typedef ZeroBasedCounter32 { + type Gauge32; + description + "This TC describes an object that 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."; + }; + + typedef LastCreateTime { + type TimeTicks; + description + "This TC describes an object that stores the value of the + sysUpTime object at 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. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects."; + }; + + typedef TimeFilter { + type TimeTicks; + description + "To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk."; + }; + + typedef DataSource { + type ObjectIdentifier; + 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 [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1."; + }; + + typedef ControlString { + type OctetString (0..255); + 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 store 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, i.e., + 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."; + }; + +// +// OBJECT DEFINITIONS +// + + + node rmon { + oid mib-2.16; + }; + + table etherStats2Table { + oid statistics.4; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row etherStats2Entry { + oid etherStats2Table.1; + augments etherStatsEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column etherStatsDroppedFrames { + oid etherStats2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column etherStatsCreateTime { + oid etherStats2Entry.2; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + table tokenRingMLStats2Table { + oid statistics.5; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row tokenRingMLStats2Entry { + oid tokenRingMLStats2Table.1; + augments tokenRingMLStatsEntry; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column tokenRingMLStatsDroppedFrames { + oid tokenRingMLStats2Entry.1; + type Counter32; + access readonly; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column tokenRingMLStatsCreateTime { + oid tokenRingMLStats2Entry.2; + type LastCreateTime; + access readonly; + status deprecated; + 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."; + }; + }; + }; + + table tokenRingPStats2Table { + oid statistics.6; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row tokenRingPStats2Entry { + oid tokenRingPStats2Table.1; + augments tokenRingPStatsEntry; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column tokenRingPStatsDroppedFrames { + oid tokenRingPStats2Entry.1; + type Counter32; + access readonly; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column tokenRingPStatsCreateTime { + oid tokenRingPStats2Entry.2; + type LastCreateTime; + access readonly; + status deprecated; + 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."; + }; + }; + }; + + table historyControl2Table { + oid history.5; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row historyControl2Entry { + oid historyControl2Table.1; + augments historyControlEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column historyControlDroppedFrames { + oid historyControl2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + }; + }; + + table hostControl2Table { + oid hosts.4; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row hostControl2Entry { + oid hostControl2Table.1; + augments hostControlEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column hostControlDroppedFrames { + oid hostControl2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column hostControlCreateTime { + oid hostControl2Entry.2; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + table matrixControl2Table { + oid matrix.4; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row matrixControl2Entry { + oid matrixControl2Table.1; + augments matrixControlEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column matrixControlDroppedFrames { + oid matrixControl2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column matrixControlCreateTime { + oid matrixControl2Entry.2; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + table channel2Table { + oid filter.3; + description + "Contains the RMON-2 augmentations to RMON-1."; + + row channel2Entry { + oid channel2Table.1; + augments channelEntry; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column channelDroppedFrames { + oid channel2Entry.1; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column channelCreateTime { + oid channel2Entry.2; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + table filter2Table { + oid filter.4; + description + "Provides a variable-length packet filter feature to the + RMON-1 filter table."; + + row filter2Entry { + oid filter2Table.1; + augments filterEntry; + create ; + description + "Provides a variable-length packet filter feature to the + RMON-1 filter table."; + + column filterProtocolDirDataLocalIndex { + oid filter2Entry.1; + type Integer32 (0..2147483647); + access readwrite; + default 0; + 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."; + }; + + column filterProtocolDirLocalIndex { + oid filter2Entry.2; + type Integer32 (0..2147483647); + access readwrite; + default 0; + 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."; + }; + }; + }; + + table ringStationControl2Table { + oid tokenRing.7; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row ringStationControl2Entry { + oid ringStationControl2Table.1; + augments ringStationControlEntry; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column ringStationControlDroppedFrames { + oid ringStationControl2Entry.1; + type Counter32; + access readonly; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column ringStationControlCreateTime { + oid ringStationControl2Entry.2; + type LastCreateTime; + access readonly; + status deprecated; + 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."; + }; + }; + }; + + table sourceRoutingStats2Table { + oid tokenRing.8; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row sourceRoutingStats2Entry { + oid sourceRoutingStats2Table.1; + augments sourceRoutingStatsEntry; + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + column sourceRoutingStatsDroppedFrames { + oid sourceRoutingStats2Entry.1; + type Counter32; + access readonly; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column sourceRoutingStatsCreateTime { + oid sourceRoutingStats2Entry.2; + type LastCreateTime; + access readonly; + status deprecated; + 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."; + }; + }; + }; + + node protocolDir { + oid rmon.11; + }; + + scalar protocolDirLastChange { + oid protocolDir.1; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig."; + }; + + table protocolDirTable { + oid protocolDir.2; + 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."; + + row protocolDirEntry { + oid protocolDirTable.1; + index (protocolDirID, protocolDirParameters); + create ; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column protocolDirID { + oid protocolDirEntry.1; + type OctetString (4..128); + access noaccess; + description + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner 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 that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 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 + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether 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."; + }; + + column protocolDirParameters { + oid protocolDirEntry.2; + type OctetString (1..32); + access noaccess; + 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."; + }; + + column protocolDirLocalIndex { + oid protocolDirEntry.3; + type Integer32 (1..2147483647); + access readonly; + 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 that the protocol directory + entry is deleted."; + }; + + column protocolDirDescr { + oid protocolDirEntry.4; + type DisplayString (1..64); + access readwrite; + 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)."; + }; + + column protocolDirType { + oid protocolDirEntry.5; + type Bits (extensible(0), + addressRecognitionCapable(1)); + access readonly; + description + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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."; + }; + + column protocolDirAddressMapConfig { + oid protocolDirEntry.6; + type Enumeration (notSupported(1), + supportedOff(2), supportedOn(3)); + access readwrite; + 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."; + }; + + column protocolDirHostConfig { + oid protocolDirEntry.7; + type Enumeration (notSupported(1), + supportedOff(2), supportedOn(3)); + access readwrite; + 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, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols."; + }; + + column protocolDirMatrixConfig { + oid protocolDirEntry.8; + type Enumeration (notSupported(1), + supportedOff(2), supportedOn(3)); + access readwrite; + 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 + 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, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols."; + }; + + column protocolDirOwner { + oid protocolDirEntry.9; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column protocolDirStatus { + oid protocolDirEntry.10; + type RowStatus; + access readwrite; + 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."; + }; + }; + }; + + node protocolDist { + oid rmon.12; + }; + + table protocolDistControlTable { + oid protocolDist.1; + 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."; + + row protocolDistControlEntry { + oid protocolDistControlTable.1; + index (protocolDistControlIndex); + create ; + description + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7"; + + column protocolDistControlIndex { + oid protocolDistControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "A unique index for this protocolDistControlEntry."; + }; + + column protocolDistControlDataSource { + oid protocolDistControlEntry.2; + type DataSource; + access readwrite; + 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)."; + }; + + column protocolDistControlDroppedFrames { + oid protocolDistControlEntry.3; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column protocolDistControlCreateTime { + oid protocolDistControlEntry.4; + type LastCreateTime; + access readonly; + 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."; + }; + + column protocolDistControlOwner { + oid protocolDistControlEntry.5; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column protocolDistControlStatus { + oid protocolDistControlEntry.6; + type RowStatus; + access readwrite; + 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."; + }; + }; + }; + + table protocolDistStatsTable { + oid protocolDist.2; + description + "An entry is made in this table for every protocol in the + protocolDirTable that 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."; + + row protocolDistStatsEntry { + oid protocolDistStatsTable.1; + index (protocolDistControlIndex, + protocolDirLocalIndex); + 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 and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18"; + + column protocolDistStatsPkts { + oid protocolDistStatsEntry.1; + type ZeroBasedCounter32; + access readonly; + description + "The number of packets of this protocol type received + without errors. 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."; + }; + + column protocolDistStatsOctets { + oid protocolDistStatsEntry.2; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol."; + }; + }; + }; + + node addressMap { + oid rmon.13; + }; + + scalar addressMapInserts { + oid addressMap.1; + type Counter32; + access readonly; + 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."; + }; + + scalar addressMapDeletes { + oid addressMap.2; + type Counter32; + access readonly; + 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."; + }; + + scalar addressMapMaxDesiredEntries { + oid addressMap.3; + type Integer32 (-1..2147483647); + access readwrite; + 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."; + }; + + table addressMapControlTable { + oid addressMap.4; + description + "A table to control the collection of mappings from network + layer address to physical address to interface. + + 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."; + + row addressMapControlEntry { + oid addressMapControlTable.1; + index (addressMapControlIndex); + create ; + description + "A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1"; + + column addressMapControlIndex { + oid addressMapControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "A unique index for this entry in the addressMapControlTable."; + }; + + column addressMapControlDataSource { + oid addressMapControlEntry.2; + type DataSource; + access readwrite; + description + "The source of data for this addressMapControlEntry."; + }; + + column addressMapControlDroppedFrames { + oid addressMapControlEntry.3; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column addressMapControlOwner { + oid addressMapControlEntry.4; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column addressMapControlStatus { + oid addressMapControlEntry.5; + type RowStatus; + access readwrite; + 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."; + }; + }; + }; + + table addressMapTable { + oid addressMap.5; + description + "A table of mappings from network layer address to physical + address to interface. + + 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)."; + + row addressMapEntry { + oid addressMapTable.1; + index (addressMapTimeMark, protocolDirLocalIndex, + addressMapNetworkAddress, addressMapSource); + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column addressMapTimeMark { + oid addressMapEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column addressMapNetworkAddress { + oid addressMapEntry.2; + type OctetString (1..255); + access noaccess; + 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."; + }; + + column addressMapSource { + oid addressMapEntry.3; + type ObjectIdentifier; + access noaccess; + 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 [RFC2863], 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 [RFC2108], 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 that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater."; + }; + + column addressMapPhysicalAddress { + oid addressMapEntry.4; + type OctetString; + access readonly; + 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."; + }; + + column addressMapLastChange { + oid addressMapEntry.5; + type TimeStamp; + access readonly; + 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."; + }; + }; + }; + + node nlHost { + oid rmon.14; + }; + + table hlHostControlTable { + oid nlHost.1; + 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 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."; + + row hlHostControlEntry { + oid hlHostControlTable.1; + index (hlHostControlIndex); + create ; + description + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1"; + + column hlHostControlIndex { + oid hlHostControlEntry.1; + type Integer32 (1..65535); + access noaccess; + 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."; + }; + + column hlHostControlDataSource { + oid hlHostControlEntry.2; + type DataSource; + access readwrite; + 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)."; + }; + + column hlHostControlNlDroppedFrames { + oid hlHostControlEntry.3; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column hlHostControlNlInserts { + oid hlHostControlEntry.4; + type Counter32; + access readonly; + 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."; + }; + + column hlHostControlNlDeletes { + oid hlHostControlEntry.5; + type Counter32; + access readonly; + 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."; + }; + + column hlHostControlNlMaxDesiredEntries { + oid hlHostControlEntry.6; + type Integer32 (-1..2147483647); + access readwrite; + 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."; + }; + + column hlHostControlAlDroppedFrames { + oid hlHostControlEntry.7; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column hlHostControlAlInserts { + oid hlHostControlEntry.8; + type Counter32; + access readonly; + 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."; + }; + + column hlHostControlAlDeletes { + oid hlHostControlEntry.9; + type Counter32; + access readonly; + 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."; + }; + + column hlHostControlAlMaxDesiredEntries { + oid hlHostControlEntry.10; + type Integer32 (-1..2147483647); + access readwrite; + 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."; + }; + + column hlHostControlOwner { + oid hlHostControlEntry.11; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column hlHostControlStatus { + oid hlHostControlEntry.12; + type RowStatus; + access readwrite; + 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."; + }; + }; + }; + + table nlHostTable { + oid nlHost.2; + 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."; + + row nlHostEntry { + oid nlHostTable.1; + index (hlHostControlIndex, nlHostTimeMark, + protocolDirLocalIndex, nlHostAddress); + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations."; + + column nlHostTimeMark { + oid nlHostEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column nlHostAddress { + oid nlHostEntry.2; + type OctetString (1..255); + access noaccess; + 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."; + }; + + column nlHostInPkts { + oid nlHostEntry.3; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column nlHostOutPkts { + oid nlHostEntry.4; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column nlHostInOctets { + oid nlHostEntry.5; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column nlHostOutOctets { + oid nlHostEntry.6; + type ZeroBasedCounter32; + access readonly; + description + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column nlHostOutMacNonUnicastPkts { + oid nlHostEntry.7; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column nlHostCreateTime { + oid nlHostEntry.8; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + node nlMatrix { + oid rmon.15; + }; + + table hlMatrixControlTable { + oid nlMatrix.1; + 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 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."; + + row hlMatrixControlEntry { + oid hlMatrixControlTable.1; + index (hlMatrixControlIndex); + create ; + description + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1"; + + column hlMatrixControlIndex { + oid hlMatrixControlEntry.1; + type Integer32 (1..65535); + access noaccess; + 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."; + }; + + column hlMatrixControlDataSource { + oid hlMatrixControlEntry.2; + type DataSource; + access readwrite; + 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)."; + }; + + column hlMatrixControlNlDroppedFrames { + oid hlMatrixControlEntry.3; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column hlMatrixControlNlInserts { + oid hlMatrixControlEntry.4; + type Counter32; + access readonly; + 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."; + }; + + column hlMatrixControlNlDeletes { + oid hlMatrixControlEntry.5; + type Counter32; + access readonly; + 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."; + }; + + column hlMatrixControlNlMaxDesiredEntries { + oid hlMatrixControlEntry.6; + type Integer32 (-1..2147483647); + access readwrite; + 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."; + }; + + column hlMatrixControlAlDroppedFrames { + oid hlMatrixControlEntry.7; + type Counter32; + access readonly; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + }; + + column hlMatrixControlAlInserts { + oid hlMatrixControlEntry.8; + type Counter32; + access readonly; + 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."; + }; + + column hlMatrixControlAlDeletes { + oid hlMatrixControlEntry.9; + type Counter32; + access readonly; + 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."; + }; + + column hlMatrixControlAlMaxDesiredEntries { + oid hlMatrixControlEntry.10; + type Integer32 (-1..2147483647); + access readwrite; + 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."; + }; + + column hlMatrixControlOwner { + oid hlMatrixControlEntry.11; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column hlMatrixControlStatus { + oid hlMatrixControlEntry.12; + type RowStatus; + access readwrite; + 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 alMatrixDSTable + shall be deleted by the agent."; + }; + }; + }; + + table nlMatrixSDTable { + oid nlMatrix.2; + description + "A list of traffic matrix entries that 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."; + + row nlMatrixSDEntry { + oid nlMatrixSDTable.1; + index (hlMatrixControlIndex, nlMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, + nlMatrixSDDestAddress); + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column nlMatrixSDTimeMark { + oid nlMatrixSDEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column nlMatrixSDSourceAddress { + oid nlMatrixSDEntry.2; + type OctetString (1..255); + access noaccess; + 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."; + }; + + column nlMatrixSDDestAddress { + oid nlMatrixSDEntry.3; + type OctetString (1..255); + access noaccess; + 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."; + }; + + column nlMatrixSDPkts { + oid nlMatrixSDEntry.4; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column nlMatrixSDOctets { + oid nlMatrixSDEntry.5; + type ZeroBasedCounter32; + access readonly; + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column nlMatrixSDCreateTime { + oid nlMatrixSDEntry.6; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + table nlMatrixDSTable { + oid nlMatrix.3; + description + "A list of traffic matrix entries that 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."; + + row nlMatrixDSEntry { + oid nlMatrixDSTable.1; + index (hlMatrixControlIndex, nlMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, + nlMatrixDSSourceAddress); + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column nlMatrixDSTimeMark { + oid nlMatrixDSEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column nlMatrixDSSourceAddress { + oid nlMatrixDSEntry.2; + type OctetString (1..255); + access noaccess; + 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."; + }; + + column nlMatrixDSDestAddress { + oid nlMatrixDSEntry.3; + type OctetString (1..255); + access noaccess; + 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."; + }; + + column nlMatrixDSPkts { + oid nlMatrixDSEntry.4; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column nlMatrixDSOctets { + oid nlMatrixDSEntry.5; + type ZeroBasedCounter32; + access readonly; + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column nlMatrixDSCreateTime { + oid nlMatrixDSEntry.6; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + table nlMatrixTopNControlTable { + oid nlMatrix.4; + description + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric."; + + row nlMatrixTopNControlEntry { + oid nlMatrixTopNControlTable.1; + index (nlMatrixTopNControlIndex); + create ; + description + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3"; + + column nlMatrixTopNControlIndex { + oid nlMatrixTopNControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface."; + }; + + column nlMatrixTopNControlMatrixIndex { + oid nlMatrixTopNControlEntry.2; + type Integer32 (1..65535); + access readwrite; + description + "The nlMatrix[SD/DS] table for which a topN 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)."; + }; + + column nlMatrixTopNControlRateBase { + oid nlMatrixTopNControlEntry.3; + type Enumeration (nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4)); + access readwrite; + description + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object."; + }; + + column nlMatrixTopNControlTimeRemaining { + oid nlMatrixTopNControlEntry.4; + type Integer32 (0..2147483647); + access readwrite; + default 1800; + 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)."; + }; + + column nlMatrixTopNControlGeneratedReports { + oid nlMatrixTopNControlEntry.5; + type Counter32; + access readonly; + description + "The number of reports that have been generated by this entry."; + }; + + column nlMatrixTopNControlDuration { + oid nlMatrixTopNControlEntry.6; + type Integer32; + access readonly; + 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."; + }; + + column nlMatrixTopNControlRequestedSize { + oid nlMatrixTopNControlEntry.7; + type Integer32 (0..2147483647); + access readwrite; + default 150; + 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 possible for the particular probe + implementation and available resources."; + }; + + column nlMatrixTopNControlGrantedSize { + oid nlMatrixTopNControlEntry.8; + type Integer32 (0..2147483647); + access readonly; + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available."; + }; + + column nlMatrixTopNControlStartTime { + oid nlMatrixTopNControlEntry.9; + type TimeStamp; + access readonly; + description + "The value of sysUpTime when this topN 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 whether a report was missed."; + }; + + column nlMatrixTopNControlOwner { + oid nlMatrixTopNControlEntry.10; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column nlMatrixTopNControlStatus { + oid nlMatrixTopNControlEntry.11; + type RowStatus; + access readwrite; + 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."; + }; + }; + }; + + table nlMatrixTopNTable { + oid nlMatrix.5; + description + "A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets."; + + row nlMatrixTopNEntry { + oid nlMatrixTopNTable.1; + index (nlMatrixTopNControlIndex, nlMatrixTopNIndex); + 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"; + + column nlMatrixTopNIndex { + oid nlMatrixTopNEntry.1; + type Integer32 (1..65535); + access noaccess; + 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."; + }; + + column nlMatrixTopNProtocolDirLocalIndex { + oid nlMatrixTopNEntry.2; + type Integer32 (1..2147483647); + access readonly; + description + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address."; + }; + + column nlMatrixTopNSourceAddress { + oid nlMatrixTopNEntry.3; + type OctetString (1..255); + access readonly; + 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."; + }; + + column nlMatrixTopNDestAddress { + oid nlMatrixTopNEntry.4; + type OctetString (1..255); + access readonly; + 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."; + }; + + column nlMatrixTopNPktRate { + oid nlMatrixTopNEntry.5; + type Gauge32; + access readonly; + 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."; + }; + + column nlMatrixTopNReversePktRate { + oid nlMatrixTopNEntry.6; + type Gauge32; + access readonly; + 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."; + }; + + column nlMatrixTopNOctetRate { + oid nlMatrixTopNEntry.7; + type Gauge32; + access readonly; + 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."; + }; + + column nlMatrixTopNReverseOctetRate { + oid nlMatrixTopNEntry.8; + type Gauge32; + access readonly; + 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."; + }; + }; + }; + + node alHost { + oid rmon.16; + }; + + table alHostTable { + oid alHost.1; + 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."; + + row alHostEntry { + oid alHostTable.1; + index (hlHostControlIndex, alHostTimeMark, + protocolDirLocalIndex, nlHostAddress, + protocolDirLocalIndex); + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column alHostTimeMark { + oid alHostEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column alHostInPkts { + oid alHostEntry.2; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column alHostOutPkts { + oid alHostEntry.3; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column alHostInOctets { + oid alHostEntry.4; + type ZeroBasedCounter32; + access readonly; + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column alHostOutOctets { + oid alHostEntry.5; + type ZeroBasedCounter32; + access readonly; + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column alHostCreateTime { + oid alHostEntry.6; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + node alMatrix { + oid rmon.17; + }; + + table alMatrixSDTable { + oid alMatrix.1; + description + "A list of application traffic matrix entries that 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."; + + row alMatrixSDEntry { + oid alMatrixSDTable.1; + index (hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, + nlMatrixSDSourceAddress, + nlMatrixSDDestAddress, + protocolDirLocalIndex); + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column alMatrixSDTimeMark { + oid alMatrixSDEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column alMatrixSDPkts { + oid alMatrixSDEntry.2; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column alMatrixSDOctets { + oid alMatrixSDEntry.3; + type ZeroBasedCounter32; + access readonly; + 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 octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column alMatrixSDCreateTime { + oid alMatrixSDEntry.4; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + table alMatrixDSTable { + oid alMatrix.2; + description + "A list of application traffic matrix entries that 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."; + + row alMatrixDSEntry { + oid alMatrixDSTable.1; + index (hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, + nlMatrixDSDestAddress, + nlMatrixDSSourceAddress, + protocolDirLocalIndex); + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + column alMatrixDSTimeMark { + oid alMatrixDSEntry.1; + type TimeFilter; + access noaccess; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + }; + + column alMatrixDSPkts { + oid alMatrixDSEntry.2; + type ZeroBasedCounter32; + access readonly; + 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."; + }; + + column alMatrixDSOctets { + oid alMatrixDSEntry.3; + type ZeroBasedCounter32; + access readonly; + 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 octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + }; + + column alMatrixDSCreateTime { + oid alMatrixDSEntry.4; + type LastCreateTime; + access readonly; + 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."; + }; + }; + }; + + table alMatrixTopNControlTable { + oid alMatrix.3; + description + "A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric."; + + row alMatrixTopNControlEntry { + oid alMatrixTopNControlTable.1; + index (alMatrixTopNControlIndex); + create ; + description + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3"; + + column alMatrixTopNControlIndex { + oid alMatrixTopNControlEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface."; + }; + + column alMatrixTopNControlMatrixIndex { + oid alMatrixTopNControlEntry.2; + type Integer32 (1..65535); + access readwrite; + description + "The alMatrix[SD/DS] table for which a topN 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)."; + }; + + column alMatrixTopNControlRateBase { + oid alMatrixTopNControlEntry.3; + type Enumeration (alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), + alMatrixTopNAllOctets(4), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8)); + access readwrite; + description + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)."; + }; + + column alMatrixTopNControlTimeRemaining { + oid alMatrixTopNControlEntry.4; + type Integer32 (0..2147483647); + access readwrite; + default 1800; + 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)."; + }; + + column alMatrixTopNControlGeneratedReports { + oid alMatrixTopNControlEntry.5; + type Counter32; + access readonly; + description + "The number of reports that have been generated by this entry."; + }; + + column alMatrixTopNControlDuration { + oid alMatrixTopNControlEntry.6; + type Integer32; + access readonly; + 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."; + }; + + column alMatrixTopNControlRequestedSize { + oid alMatrixTopNControlEntry.7; + type Integer32 (0..2147483647); + access readwrite; + default 150; + 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 possible for the particular probe + implementation and available resources."; + }; + + column alMatrixTopNControlGrantedSize { + oid alMatrixTopNControlEntry.8; + type Integer32 (0..2147483647); + access readonly; + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available."; + }; + + column alMatrixTopNControlStartTime { + oid alMatrixTopNControlEntry.9; + type TimeStamp; + access readonly; + description + "The value of sysUpTime when this topN 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 whether a report was missed."; + }; + + column alMatrixTopNControlOwner { + oid alMatrixTopNControlEntry.10; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column alMatrixTopNControlStatus { + oid alMatrixTopNControlEntry.11; + type RowStatus; + access readwrite; + 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."; + }; + }; + }; + + table alMatrixTopNTable { + oid alMatrix.4; + description + "A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets."; + + row alMatrixTopNEntry { + oid alMatrixTopNTable.1; + index (alMatrixTopNControlIndex, alMatrixTopNIndex); + 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"; + + column alMatrixTopNIndex { + oid alMatrixTopNEntry.1; + type Integer32 (1..65535); + access noaccess; + 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."; + }; + + column alMatrixTopNProtocolDirLocalIndex { + oid alMatrixTopNEntry.2; + type Integer32 (1..2147483647); + access readonly; + description + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address."; + }; + + column alMatrixTopNSourceAddress { + oid alMatrixTopNEntry.3; + type OctetString (1..255); + access readonly; + 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."; + }; + + column alMatrixTopNDestAddress { + oid alMatrixTopNEntry.4; + type OctetString (1..255); + access readonly; + 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."; + }; + + column alMatrixTopNAppProtocolDirLocalIndex { + oid alMatrixTopNEntry.5; + type Integer32 (1..2147483647); + access readonly; + description + "The type of the protocol counted by this matrix entry."; + }; + + column alMatrixTopNPktRate { + oid alMatrixTopNEntry.6; + type Gauge32; + access readonly; + 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."; + }; + + column alMatrixTopNReversePktRate { + oid alMatrixTopNEntry.7; + type Gauge32; + access readonly; + 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."; + }; + + column alMatrixTopNOctetRate { + oid alMatrixTopNEntry.8; + type Gauge32; + access readonly; + 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."; + }; + + column alMatrixTopNReverseOctetRate { + oid alMatrixTopNEntry.9; + type Gauge32; + access readonly; + 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."; + }; + }; + }; + + node usrHistory { + oid rmon.18; + }; + + table usrHistoryControlTable { + oid usrHistory.1; + description + "A list of data-collection configuration entries."; + + row usrHistoryControlEntry { + oid usrHistoryControlTable.1; + index (usrHistoryControlIndex); + create ; + 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"; + + column usrHistoryControlIndex { + oid usrHistoryControlEntry.1; + type Integer32 (1..65535); + access noaccess; + 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."; + }; + + column usrHistoryControlObjects { + oid usrHistoryControlEntry.2; + type Integer32 (1..65535); + access readwrite; + 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)."; + }; + + column usrHistoryControlBucketsRequested { + oid usrHistoryControlEntry.3; + type Integer32 (1..65535); + access readwrite; + default 50; + 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 possible for the particular probe + implementation and available resources."; + }; + + column usrHistoryControlBucketsGranted { + oid usrHistoryControlEntry.4; + type Integer32 (1..65535); + access readonly; + 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 + 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."; + }; + + column usrHistoryControlInterval { + oid usrHistoryControlEntry.5; + type Integer32 (1..2147483647); + access readwrite; + default 1800; + 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 to 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)."; + }; + + column usrHistoryControlOwner { + oid usrHistoryControlEntry.6; + type OwnerString; + access readwrite; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column usrHistoryControlStatus { + oid usrHistoryControlEntry.7; + type RowStatus; + access readwrite; + 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."; + }; + }; + }; + + table usrHistoryObjectTable { + oid usrHistory.2; + description + "A list of data-collection configuration entries."; + + row usrHistoryObjectEntry { + oid usrHistoryObjectTable.1; + index (usrHistoryControlIndex, + usrHistoryObjectIndex); + create ; + 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"; + + column usrHistoryObjectIndex { + oid usrHistoryObjectEntry.1; + type Integer32 (1..65535); + access noaccess; + description + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically."; + }; + + column usrHistoryObjectVariable { + oid usrHistoryObjectEntry.2; + type ObjectIdentifier; + access readwrite; + 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. See USM [RFC3414] and VACM [RFC3415] for more + information. + + 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)."; + }; + + column usrHistoryObjectSampleType { + oid usrHistoryObjectEntry.3; + type Enumeration (absoluteValue(1), deltaValue(2)); + access readwrite; + 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)."; + }; + }; + }; + + table usrHistoryTable { + oid usrHistory.3; + description + "A list of user-defined history entries."; + + row usrHistoryEntry { + oid usrHistoryTable.1; + index (usrHistoryControlIndex, + usrHistorySampleIndex, + usrHistoryObjectIndex); + description + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that 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"; + + column usrHistorySampleIndex { + oid usrHistoryEntry.1; + type Integer32 (1..2147483647); + access noaccess; + 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."; + }; + + column usrHistoryIntervalStart { + oid usrHistoryEntry.2; + type TimeStamp; + access readonly; + 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 that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval."; + }; + + column usrHistoryIntervalEnd { + oid usrHistoryEntry.3; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the end of the interval over which + this sample was measured."; + }; + + column usrHistoryAbsValue { + oid usrHistoryEntry.4; + type Gauge32; + access readonly; + 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)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'."; + }; + + column usrHistoryValStatus { + oid usrHistoryEntry.5; + type Enumeration (valueNotAvailable(1), + valuePositive(2), valueNegative(3)); + access readonly; + 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 the 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."; + }; + }; + }; + + node probeConfig { + oid rmon.19; + }; + + scalar probeCapabilities { + oid probeConfig.1; + type 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)); + access readonly; + description + "An indication of the RMON MIB groups supported + on at least one interface by this probe."; + }; + + scalar probeSoftwareRev { + oid probeConfig.2; + type DisplayString (0..15); + access readonly; + description + "The software revision of this device. This string will have + a zero length if the revision is unknown."; + }; + + scalar probeHardwareRev { + oid probeConfig.3; + type DisplayString (0..31); + access readonly; + description + "The hardware revision of this device. This string will have + a zero length if the revision is unknown."; + }; + + scalar probeDateTime { + oid probeConfig.4; + type OctetString (0 | 8 | 11); + access readwrite; + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned."; + }; + + scalar probeResetControl { + oid probeConfig.5; + type Enumeration (running(1), warmBoot(2), + coldBoot(3)); + access readwrite; + 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 to restart the application software. When the device + is running normally, this variable has a value of + running(1)."; + }; + + scalar probeDownloadFile { + oid probeConfig.6; + type DisplayString (0..127); + access readwrite; + status deprecated; + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + }; + + scalar probeDownloadTFTPServer { + oid probeConfig.7; + type IpAddress; + access readwrite; + status deprecated; + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + }; + + scalar probeDownloadAction { + oid probeConfig.8; + type Enumeration (notDownloading(1), + downloadToPROM(2), downloadToRAM(3)); + access readwrite; + status deprecated; + description + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), 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(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) 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). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + }; + + scalar probeDownloadStatus { + oid probeConfig.9; + type Enumeration (downloadSuccess(1), + downloadStatusUnknown(2), + downloadGeneralError(3), + downloadNoResponseFromServer(4), + downloadChecksumError(5), + downloadIncompatibleImage(6), + downloadTftpFileNotFound(7), + downloadTftpAccessViolation(8)); + access readonly; + status deprecated; + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + }; + + table serialConfigTable { + oid probeConfig.10; + status deprecated; + 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. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + + row serialConfigEntry { + oid serialConfigTable.1; + index (ifIndex); + create ; + status deprecated; + 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."; + + column serialMode { + oid serialConfigEntry.1; + type Enumeration (direct(1), modem(2)); + access readwrite; + default direct; + status deprecated; + description + "The type of incoming connection to be expected on this + serial interface."; + }; + + column serialProtocol { + oid serialConfigEntry.2; + type Enumeration (other(1), slip(2), ppp(3)); + access readwrite; + default slip; + status deprecated; + description + "The type of data link encapsulation to be used on this + serial interface."; + }; + + column serialTimeout { + oid serialConfigEntry.3; + type Integer32 (1..65535); + access readwrite; + default 300; + status deprecated; + 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."; + }; + + column serialModemInitString { + oid serialConfigEntry.4; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that 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'."; + }; + + column serialModemHangUpString { + oid serialConfigEntry.5; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that 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'."; + }; + + column serialModemConnectResp { + oid serialConfigEntry.6; + type DisplayString (0..255); + access readwrite; + status deprecated; + 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/'."; + }; + + column serialModemNoConnectResp { + oid serialConfigEntry.7; + type DisplayString (0..255); + access readwrite; + status deprecated; + 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/'."; + }; + + column serialDialoutTimeout { + oid serialConfigEntry.8; + type Integer32 (1..65535); + access readwrite; + default 20; + status deprecated; + 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."; + }; + + column serialStatus { + oid serialConfigEntry.9; + type RowStatus; + access readwrite; + status deprecated; + 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."; + }; + }; + }; + + table netConfigTable { + oid probeConfig.11; + status deprecated; + description + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + + row netConfigEntry { + oid netConfigTable.1; + index (ifIndex); + create ; + status deprecated; + 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."; + + column netConfigIPAddress { + oid netConfigEntry.1; + type IpAddress; + access readwrite; + status deprecated; + 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 is 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 them very infrequently if no + replies are received."; + }; + + column netConfigSubnetMask { + oid netConfigEntry.2; + type IpAddress; + access readwrite; + status deprecated; + 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 is 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 them very infrequently if no + replies are received."; + }; + + column netConfigStatus { + oid netConfigEntry.3; + type RowStatus; + access readwrite; + status deprecated; + 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."; + }; + }; + }; + + scalar netDefaultGateway { + oid probeConfig.12; + type IpAddress; + access readwrite; + status deprecated; + description + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0."; + }; + + table trapDestTable { + oid probeConfig.13; + status deprecated; + description + "A list of trap destination entries."; + + row trapDestEntry { + oid trapDestTable.1; + index (trapDestIndex); + create ; + status deprecated; + description + "This entry includes a destination IP address to which + traps are sent for this community."; + + column trapDestIndex { + oid trapDestEntry.1; + type Integer32 (1..65535); + access noaccess; + status deprecated; + description + "A value that uniquely identifies this trapDestEntry."; + }; + + column trapDestCommunity { + oid trapDestEntry.2; + type OctetString (0..127); + access readwrite; + status deprecated; + 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, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)."; + }; + + column trapDestProtocol { + oid trapDestEntry.3; + type Enumeration (ip(1), ipx(2)); + access readwrite; + status deprecated; + description + "The protocol with which this trap is to be sent."; + }; + + column trapDestAddress { + oid trapDestEntry.4; + type OctetString; + access readwrite; + status deprecated; + description + "The destination address for 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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)."; + }; + + column trapDestOwner { + oid trapDestEntry.5; + type OwnerString; + access readwrite; + status deprecated; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column trapDestStatus { + oid trapDestEntry.6; + type RowStatus; + access readwrite; + status deprecated; + 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."; + }; + }; + }; + + table serialConnectionTable { + oid probeConfig.14; + status deprecated; + description + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard."; + + row serialConnectionEntry { + oid serialConnectionTable.1; + index (serialConnectIndex); + create ; + status deprecated; + description + "Configuration for a SLIP link over a serial line."; + + column serialConnectIndex { + oid serialConnectionEntry.1; + type Integer32 (1..65535); + access noaccess; + status deprecated; + description + "A value that uniquely identifies this serialConnection + entry."; + }; + + column serialConnectDestIpAddress { + oid serialConnectionEntry.2; + type IpAddress; + access readwrite; + status deprecated; + 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)."; + }; + + column serialConnectType { + oid serialConnectionEntry.3; + type Enumeration (direct(1), modem(2), switch(3), + modemSwitch(4)); + access readwrite; + default direct; + status deprecated; + description + "The type of outgoing connection to be made. 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)."; + }; + + column serialConnectDialString { + oid serialConnectionEntry.4; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the 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)."; + }; + + column serialConnectSwitchConnectSeq { + oid serialConnectionEntry.5; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + }; + + column serialConnectSwitchDisconnectSeq { + oid serialConnectionEntry.6; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + }; + + column serialConnectSwitchResetSeq { + oid serialConnectionEntry.7; + type ControlString (0..255); + access readwrite; + status deprecated; + description + "A control string that 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)."; + }; + + column serialConnectOwner { + oid serialConnectionEntry.8; + type OwnerString; + access readwrite; + status deprecated; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + }; + + column serialConnectStatus { + oid serialConnectionEntry.9; + type RowStatus; + access readwrite; + status deprecated; + 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 is a zero-length string + or cannot be correctly parsed as a ConnectString, 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."; + }; + }; + }; + + node rmonConformance { + oid rmon.20; + }; + + node rmon2MIBCompliances { + oid rmonConformance.1; + }; + + node rmon2MIBGroups { + oid rmonConformance.2; + }; + +// +// GROUP DEFINITIONS +// + + group protocolDirectoryGroup { + oid rmon2MIBGroups.1; + members (protocolDirLastChange, + protocolDirLocalIndex, protocolDirDescr, + protocolDirType, + protocolDirAddressMapConfig, + protocolDirHostConfig, + protocolDirMatrixConfig, protocolDirOwner, + protocolDirStatus); + 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."; + }; + + group protocolDistributionGroup { + oid rmon2MIBGroups.2; + members (protocolDistControlDataSource, + protocolDistControlDroppedFrames, + protocolDistControlCreateTime, + protocolDistControlOwner, + protocolDistControlStatus, + protocolDistStatsPkts, + protocolDistStatsOctets); + description + "Collects the relative amounts of octets and packets for the + different protocols detected on a network segment."; + }; + + group addressMapGroup { + oid rmon2MIBGroups.3; + members (addressMapInserts, addressMapDeletes, + addressMapMaxDesiredEntries, + addressMapControlDataSource, + addressMapControlDroppedFrames, + addressMapControlOwner, + addressMapControlStatus, + addressMapPhysicalAddress, + addressMapLastChange); + description + "Lists MAC address to network address bindings discovered by + the probe and what interface they were last seen on."; + }; + + group nlHostGroup { + oid rmon2MIBGroups.4; + members (hlHostControlDataSource, + hlHostControlNlDroppedFrames, + hlHostControlNlInserts, + hlHostControlNlDeletes, + hlHostControlNlMaxDesiredEntries, + hlHostControlAlDroppedFrames, + hlHostControlAlInserts, + hlHostControlAlDeletes, + hlHostControlAlMaxDesiredEntries, + hlHostControlOwner, hlHostControlStatus, + nlHostInPkts, nlHostOutPkts, nlHostInOctets, + nlHostOutOctets, nlHostOutMacNonUnicastPkts, + nlHostCreateTime); + 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."; + }; + + group nlMatrixGroup { + oid rmon2MIBGroups.5; + members (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); + 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."; + }; + + group alHostGroup { + oid rmon2MIBGroups.6; + members (alHostInPkts, alHostOutPkts, alHostInOctets, + alHostOutOctets, alHostCreateTime); + 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."; + }; + + group alMatrixGroup { + oid rmon2MIBGroups.7; + members (alMatrixSDPkts, alMatrixSDOctets, + alMatrixSDCreateTime, alMatrixDSPkts, + alMatrixDSOctets, alMatrixDSCreateTime, + alMatrixTopNControlMatrixIndex, + alMatrixTopNControlRateBase, + alMatrixTopNControlTimeRemaining, + alMatrixTopNControlGeneratedReports, + alMatrixTopNControlDuration, + alMatrixTopNControlRequestedSize, + alMatrixTopNControlGrantedSize, + alMatrixTopNControlStartTime, + alMatrixTopNControlOwner, + alMatrixTopNControlStatus, + alMatrixTopNProtocolDirLocalIndex, + alMatrixTopNSourceAddress, + alMatrixTopNDestAddress, + alMatrixTopNAppProtocolDirLocalIndex, + alMatrixTopNPktRate, + alMatrixTopNReversePktRate, + alMatrixTopNOctetRate, + alMatrixTopNReverseOctetRate); + 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."; + }; + + group usrHistoryGroup { + oid rmon2MIBGroups.8; + members (usrHistoryControlObjects, + usrHistoryControlBucketsRequested, + usrHistoryControlBucketsGranted, + usrHistoryControlInterval, + usrHistoryControlOwner, + usrHistoryControlStatus, + usrHistoryObjectVariable, + usrHistoryObjectSampleType, + usrHistoryIntervalStart, + usrHistoryIntervalEnd, usrHistoryAbsValue, + usrHistoryValStatus); + description + "The usrHistoryGroup provides user-defined collection of + historical information from MIB objects on the probe."; + }; + + group probeInformationGroup { + oid rmon2MIBGroups.9; + members (probeCapabilities, probeSoftwareRev, + probeHardwareRev, probeDateTime); + description + "This group describes various operating parameters of the + probe and controls the local time of the probe."; + }; + + group probeConfigurationGroup { + oid rmon2MIBGroups.10; + members (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 deprecated; + description + "This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it."; + }; + + group rmon1EnhancementGroup { + oid rmon2MIBGroups.11; + members (historyControlDroppedFrames, + hostControlDroppedFrames, + hostControlCreateTime, + matrixControlDroppedFrames, + matrixControlCreateTime, + channelDroppedFrames, channelCreateTime, + filterProtocolDirDataLocalIndex, + filterProtocolDirLocalIndex); + description + "This group adds some enhancements to RMON-1 that help + management stations."; + }; + + group rmon1EthernetEnhancementGroup { + oid rmon2MIBGroups.12; + members (etherStatsDroppedFrames, + etherStatsCreateTime); + description + "This group adds some enhancements to RMON-1 that help + management stations."; + }; + + group rmon1TokenRingEnhancementGroup { + oid rmon2MIBGroups.13; + members (tokenRingMLStatsDroppedFrames, + tokenRingMLStatsCreateTime, + tokenRingPStatsDroppedFrames, + tokenRingPStatsCreateTime, + ringStationControlDroppedFrames, + ringStationControlCreateTime, + sourceRoutingStatsDroppedFrames, + sourceRoutingStatsCreateTime); + status deprecated; + description + "This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it."; + }; + +// +// COMPLIANCE DEFINITIONS +// + + compliance rmon2MIBCompliance { + oid rmon2MIBCompliances.1; + description + "Describes the requirements for conformance to + the RMON2 MIB"; + + mandatory (protocolDirectoryGroup, + protocolDistributionGroup, addressMapGroup, + nlHostGroup, nlMatrixGroup, usrHistoryGroup, + probeInformationGroup); + + optional rmon1EnhancementGroup { + description + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]."; + }; + optional rmon1EthernetEnhancementGroup { + description + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]."; + }; + + refine nlMatrixTopNControlRateBase { + type Enumeration (nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2)); + description + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase."; + }; + }; + + compliance rmon2MIBApplicationLayerCompliance { + oid rmon2MIBCompliances.2; + description + "Describes the requirements for conformance to + the RMON2 MIB with Application-Layer Enhancements."; + + mandatory (protocolDirectoryGroup, + protocolDistributionGroup, addressMapGroup, + nlHostGroup, nlMatrixGroup, alHostGroup, + alMatrixGroup, usrHistoryGroup, + probeInformationGroup); + + optional rmon1EnhancementGroup { + description + "The rmon1EnhancementGroup is mandatory for systems + that implement RMON [RFC2819]."; + }; + optional rmon1EthernetEnhancementGroup { + description + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]."; + }; + + refine nlMatrixTopNControlRateBase { + type Enumeration (nlMatrixTopNPkts(1), + nlMatrixTopNOctets(2)); + description + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase."; + }; + refine alMatrixTopNControlRateBase { + type Enumeration (alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), + alMatrixTopNAllOctets(4)); + description + "Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase."; + }; + }; + +}; // end of module RMON2-MIB. diff --git a/test/dumps/sming/SNMPv2-MIB b/test/dumps/sming/SNMPv2-MIB new file mode 100644 index 0000000..ca355c8 --- /dev/null +++ b/test/dumps/sming/SNMPv2-MIB @@ -0,0 +1,854 @@ +// +// This module has been generated by smidump 0.4.5. Do not edit. +// +module SNMPv2-MIB { + + import IRTF-NMRG-SMING (Counter32, DisplayString255, + TimeStamp, TimeTicks, snmpModules); + import IRTF-NMRG-SMING-SNMP (TestAndIncr, mib-2); + +// +// MODULE META INFORMATION +// + + organization + "IETF SNMPv3 Working Group"; + + contact + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006"; + + description + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices."; + + revision { + date "2002-10-16 00:00"; + description + "This revision of this MIB module was published as + RFC 3418."; + }; + revision { + date "1995-11-09 00:00"; + description + "This revision of this MIB module was published as + RFC 1907."; + }; + revision { + date "1993-04-01 00:00"; + description + "The initial revision of this MIB module was published + as RFC 1450."; + }; + + identity snmpMIB; + +// +// OBJECT DEFINITIONS +// + + + node system { + oid mib-2.1; + }; + + scalar sysDescr { + oid system.1; + type DisplayString (0..255); + access readonly; + description + "A textual description of the entity. This value should + include the full name and version identification of + the system's hardware type, software operating-system, + and networking software."; + }; + + scalar sysObjectID { + oid system.2; + type ObjectIdentifier; + access readonly; + description + "The vendor's authoritative identification of the + network management subsystem contained in the entity. + This value is allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides an easy and + unambiguous means for determining `what kind of box' is + being managed. For example, if vendor `Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'."; + }; + + scalar sysUpTime { + oid system.3; + type TimeTicks; + access readonly; + description + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized."; + }; + + scalar sysContact { + oid system.4; + type DisplayString (0..255); + access readwrite; + description + "The textual identification of the contact person for + this managed node, together with information on how + to contact this person. If no contact information is + known, the value is the zero-length string."; + }; + + scalar sysName { + oid system.5; + type DisplayString (0..255); + access readwrite; + description + "An administratively-assigned name for this managed + node. By convention, this is the node's fully-qualified + domain name. If the name is unknown, the value is + the zero-length string."; + }; + + scalar sysLocation { + oid system.6; + type DisplayString (0..255); + access readwrite; + description + "The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string."; + }; + + scalar sysServices { + oid system.7; + type Integer32 (0..127); + access readonly; + description + "A value which indicates the set of services that this + entity may potentially offer. The value is a sum. + + + + This sum initially takes the value zero. Then, for + each layer, L, in the range 1 through 7, that this node + performs transactions for, 2 raised to (L - 1) is added + to the sum. For example, a node which performs only + routing functions would have a value of 4 (2^(3-1)). + In contrast, a node which is a host offering application + services would have a value of 72 (2^(4-1) + 2^(7-1)). + Note that in the context of the Internet suite of + protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + + For systems including OSI protocols, layers 5 and 6 + may also be counted."; + }; + + scalar sysORLastChange { + oid system.8; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID."; + }; + + table sysORTable { + oid system.9; + description + "The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows."; + + row sysOREntry { + oid sysORTable.1; + index (sysORIndex); + description + "An entry (conceptual row) in the sysORTable."; + + column sysORIndex { + oid sysOREntry.1; + type Integer32 (1..2147483647); + access noaccess; + description + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable."; + }; + + column sysORID { + oid sysOREntry.2; + type ObjectIdentifier; + access readonly; + description + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder."; + }; + + column sysORDescr { + oid sysOREntry.3; + type DisplayString; + access readonly; + description + "A textual description of the capabilities identified + by the corresponding instance of sysORID."; + }; + + column sysORUpTime { + oid sysOREntry.4; + type TimeStamp; + access readonly; + description + "The value of sysUpTime at the time this conceptual + row was last instantiated."; + }; + }; + }; + + node snmp { + oid mib-2.11; + }; + + scalar snmpInPkts { + oid snmp.1; + type Counter32; + access readonly; + description + "The total number of messages delivered to the SNMP + entity from the transport service."; + }; + + scalar snmpOutPkts { + oid snmp.2; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service."; + }; + + scalar snmpInBadVersions { + oid snmp.3; + type Counter32; + access readonly; + description + "The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version."; + }; + + scalar snmpInBadCommunityNames { + oid snmp.4; + type Counter32; + access readonly; + description + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value."; + }; + + scalar snmpInBadCommunityUses { + oid snmp.5; + type Counter32; + access readonly; + description + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value."; + }; + + scalar snmpInASNParseErrs { + oid snmp.6; + type Counter32; + access readonly; + description + "The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages."; + }; + + scalar snmpInTooBigs { + oid snmp.8; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `tooBig'."; + }; + + scalar snmpInNoSuchNames { + oid snmp.9; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `noSuchName'."; + }; + + scalar snmpInBadValues { + oid snmp.10; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `badValue'."; + }; + + scalar snmpInReadOnlys { + oid snmp.11; + type Counter32; + access readonly; + status obsolete; + description + "The total number valid SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `readOnly'. It should + be noted that it is a protocol error to generate an + SNMP PDU which contains the value `readOnly' in the + error-status field, as such this object is provided + as a means of detecting incorrect implementations of + the SNMP."; + }; + + scalar snmpInGenErrs { + oid snmp.12; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `genErr'."; + }; + + scalar snmpInTotalReqVars { + oid snmp.13; + type Counter32; + access readonly; + status obsolete; + description + "The total number of MIB objects which have been + retrieved successfully by the SNMP protocol entity + as the result of receiving valid SNMP Get-Request + and Get-Next PDUs."; + }; + + scalar snmpInTotalSetVars { + oid snmp.14; + type Counter32; + access readonly; + status obsolete; + description + "The total number of MIB objects which have been + altered successfully by the SNMP protocol entity as + the result of receiving valid SNMP Set-Request PDUs."; + }; + + scalar snmpInGetRequests { + oid snmp.15; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity."; + }; + + scalar snmpInGetNexts { + oid snmp.16; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity."; + }; + + scalar snmpInSetRequests { + oid snmp.17; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity."; + }; + + scalar snmpInGetResponses { + oid snmp.18; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity."; + }; + + scalar snmpInTraps { + oid snmp.19; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity."; + }; + + scalar snmpOutTooBigs { + oid snmp.20; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `tooBig.'"; + }; + + scalar snmpOutNoSuchNames { + oid snmp.21; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status was `noSuchName'."; + }; + + scalar snmpOutBadValues { + oid snmp.22; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `badValue'."; + }; + + scalar snmpOutGenErrs { + oid snmp.24; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `genErr'."; + }; + + scalar snmpOutGetRequests { + oid snmp.25; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity."; + }; + + scalar snmpOutGetNexts { + oid snmp.26; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity."; + }; + + scalar snmpOutSetRequests { + oid snmp.27; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity."; + }; + + scalar snmpOutGetResponses { + oid snmp.28; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity."; + }; + + scalar snmpOutTraps { + oid snmp.29; + type Counter32; + access readonly; + status obsolete; + description + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity."; + }; + + scalar snmpEnableAuthenTraps { + oid snmp.30; + type Enumeration (enabled(1), disabled(2)); + access readwrite; + description + "Indicates whether the SNMP entity is permitted to + generate authenticationFailure traps. The value of this + object overrides any configuration information; as such, + it provides a means whereby all authenticationFailure + traps may be disabled. + + Note that it is strongly recommended that this object + be stored in non-volatile memory so that it remains + constant across re-initializations of the network + management system."; + }; + + scalar snmpSilentDrops { + oid snmp.31; + type Counter32; + access readonly; + description + "The total number of Confirmed Class PDUs (such as + GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the size of a reply + containing an alternate Response Class PDU (such as a + Response-PDU) with an empty variable-bindings field + was greater than either a local constraint or the + maximum message size associated with the originator of + the request."; + }; + + scalar snmpProxyDrops { + oid snmp.32; + type Counter32; + access readonly; + description + "The total number of Confirmed Class PDUs + (such as GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the transmission of + the (possibly translated) message to a proxy target + failed in a manner (other than a time-out) such that + no Response Class PDU (such as a Response-PDU) could + be returned."; + }; + + node snmpMIB { + oid snmpModules.1; + }; + + node snmpMIBObjects { + oid snmpMIB.1; + }; + + node snmpTrap { + oid snmpMIBObjects.4; + }; + + scalar snmpTrapOID { + oid snmpTrap.1; + type ObjectIdentifier; + access notifyonly; + description + "The authoritative identification of the notification + currently being sent. This variable occurs as + the second varbind in every SNMPv2-Trap-PDU and + InformRequest-PDU."; + }; + + scalar snmpTrapEnterprise { + oid snmpTrap.3; + type ObjectIdentifier; + access notifyonly; + description + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind."; + }; + + node snmpTraps { + oid snmpMIBObjects.5; + }; + + node snmpSet { + oid snmpMIBObjects.6; + }; + + scalar snmpSetSerialNo { + oid snmpSet.1; + type TestAndIncr; + access readwrite; + description + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP set operation. + + This object is used for coarse-grain coordination. + To achieve fine-grain coordination, one or more similar + objects might be defined within each MIB group, as + appropriate."; + }; + + node snmpMIBConformance { + oid snmpMIB.2; + }; + + node snmpMIBCompliances { + oid snmpMIBConformance.1; + }; + + node snmpMIBGroups { + oid snmpMIBConformance.2; + }; + +// +// NOTIFICATION DEFINITIONS +// + + notification coldStart { + oid snmpTraps.1; + description + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered."; + }; + + notification warmStart { + oid snmpTraps.2; + description + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered."; + }; + + notification authenticationFailure { + oid snmpTraps.5; + description + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated."; + }; + +// +// GROUP DEFINITIONS +// + + group snmpSetGroup { + oid snmpMIBGroups.5; + members (snmpSetSerialNo); + description + "A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the set operation."; + }; + + group systemGroup { + oid snmpMIBGroups.6; + members (sysDescr, sysObjectID, sysUpTime, + sysContact, sysName, sysLocation, + sysServices, sysORLastChange, sysORID, + sysORUpTime, sysORDescr); + description + "The system group defines objects which are common to all + managed systems."; + }; + + group snmpBasicNotificationsGroup { + oid snmpMIBGroups.7; + members (coldStart, authenticationFailure); + description + "The basic notifications implemented by an SNMP entity + supporting command responder applications."; + }; + + group snmpGroup { + oid snmpMIBGroups.8; + members (snmpInPkts, snmpInBadVersions, + snmpInASNParseErrs, snmpSilentDrops, + snmpProxyDrops, snmpEnableAuthenTraps); + description + "A collection of objects providing basic instrumentation + and control of an SNMP entity."; + }; + + group snmpCommunityGroup { + oid snmpMIBGroups.9; + members (snmpInBadCommunityNames, + snmpInBadCommunityUses); + description + "A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication."; + }; + + group snmpObsoleteGroup { + oid snmpMIBGroups.10; + members (snmpOutPkts, snmpInTooBigs, + snmpInNoSuchNames, snmpInBadValues, + snmpInReadOnlys, snmpInGenErrs, + snmpInTotalReqVars, snmpInTotalSetVars, + snmpInGetRequests, snmpInGetNexts, + snmpInSetRequests, snmpInGetResponses, + snmpInTraps, snmpOutTooBigs, + snmpOutNoSuchNames, snmpOutBadValues, + snmpOutGenErrs, snmpOutGetRequests, + snmpOutGetNexts, snmpOutSetRequests, + snmpOutGetResponses, snmpOutTraps); + status obsolete; + description + "A collection of objects from RFC 1213 made obsolete + by this MIB module."; + }; + + group snmpWarmStartNotificationGroup { + oid snmpMIBGroups.11; + members (warmStart); + description + "An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered."; + }; + + group snmpNotificationGroup { + oid snmpMIBGroups.12; + members (snmpTrapOID, snmpTrapEnterprise); + description + "These objects are required for entities + which support notification originator applications."; + }; + +// +// COMPLIANCE DEFINITIONS +// + + compliance snmpBasicCompliance { + oid snmpMIBCompliances.2; + status deprecated; + description + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2."; + + mandatory (snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup); + + optional snmpCommunityGroup { + description + "This group is mandatory for SNMPv2 entities which + support community-based authentication."; + }; + }; + + compliance snmpBasicComplianceRev2 { + oid snmpMIBCompliances.3; + description + "The compliance statement for SNMP entities which + implement this MIB module."; + + mandatory (snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup); + + optional snmpCommunityGroup { + description + "This group is mandatory for SNMP entities which + support community-based authentication."; + }; + optional snmpWarmStartNotificationGroup { + description + "This group is mandatory for an SNMP entity which + supports command responder applications, and is + able to reinitialize itself such that its + configuration is unaltered."; + }; + }; + +}; // end of module SNMPv2-MIB. diff --git a/test/dumps/smiv1/IF-MIB b/test/dumps/smiv1/IF-MIB new file mode 100644 index 0000000..70b7f55 --- /dev/null +++ b/test/dumps/smiv1/IF-MIB @@ -0,0 +1,1804 @@ +-- +-- This SMIv1 module has been generated by smidump 0.4.5. Do not edit. +-- + +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifType + FROM IANAifType-MIB + OBJECT-TYPE + FROM RFC-1212 + TRAP-TYPE + FROM RFC-1215 + Counter, Gauge, TimeTicks + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + snmpTraps + FROM SNMPv2-MIB + AutonomousType, DisplayString, PhysAddress, RowStatus, TestAndIncr, + TimeStamp, TruthValue + FROM SNMPv2-TC; + +ifMIB OBJECT IDENTIFIER + ::= { mib-2 31 } + +-- ifMIB MODULE-IDENTITY +-- LAST-UPDATED "200006140000Z" +-- ORGANIZATION +-- "IETF Interfaces MIB Working Group" +-- CONTACT-INFO +-- " Keith McCloghrie +-- Cisco Systems, Inc. +-- 170 West Tasman Drive +-- San Jose, CA 95134-1706 +-- US +-- +-- 408-526-5260 +-- kzm@cisco.com" +-- DESCRIPTION +-- "The MIB module to describe generic objects for network +-- interface sub-layers. This MIB is an updated version of +-- MIB-II's ifTable, and incorporates the extensions defined in +-- RFC 1229." +-- REVISION "200006140000Z" +-- DESCRIPTION +-- "Clarifications agreed upon by the Interfaces MIB WG, and +-- published as RFC 2863." +-- REVISION "199602282155Z" +-- DESCRIPTION +-- "Revisions made by the Interfaces MIB WG, and published in +-- RFC 2233." +-- REVISION "199311082155Z" +-- DESCRIPTION +-- "Initial revision, published as part of RFC 1573." +-- ::= { mib-2 31 } + + +OwnerString ::= + OCTET STRING (SIZE(0..255)) + +-- OwnerString ::= TEXTUAL-CONVENTION +-- DISPLAY-HINT "255a" +-- STATUS deprecated +-- 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 ::= + INTEGER (1..2147483647) + +-- InterfaceIndex ::= TEXTUAL-CONVENTION +-- DISPLAY-HINT "d" +-- STATUS mandatory +-- DESCRIPTION +-- "A unique value, greater than zero, for each interface or +-- interface sub-layer in the managed system. It is +-- recommended that values are assigned contiguously starting +-- from 1. The value for each interface sub-layer must remain +-- constant at least from one re-initialization of the entity's +-- network management system to the next re-initialization." +-- SYNTAX INTEGER (1..2147483647) + +InterfaceIndexOrZero ::= + INTEGER (0..2147483647) + +-- InterfaceIndexOrZero ::= TEXTUAL-CONVENTION +-- DISPLAY-HINT "d" +-- STATUS mandatory +-- DESCRIPTION +-- "This textual convention is an extension of the +-- InterfaceIndex convention. The latter defines a greater +-- than zero value used to identify an interface or interface +-- sub-layer in the managed system. This extension permits the +-- additional value of zero. the value zero is object-specific +-- and must therefore be defined as part of the description of +-- any object which uses this syntax. Examples of the usage of +-- zero might include situations where interface was unknown, +-- or when none or all interfaces need to be referenced." +-- SYNTAX INTEGER (0..2147483647) + +interfaces OBJECT IDENTIFIER + ::= { mib-2 2 } + +ifNumber OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of network interfaces (regardless of their + current state) present on this system." + ::= { interfaces 1 } + +ifTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of interface entries. The number of entries is + given by the value of ifNumber." + ::= { interfaces 2 } + +ifEntry OBJECT-TYPE + SYNTAX IfEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry containing management information applicable to a + particular interface." + INDEX { ifIndex } + ::= { ifTable 1 } + +IfEntry ::= SEQUENCE { + ifIndex InterfaceIndex, + ifDescr DisplayString, + ifType IANAifType, + ifMtu INTEGER, + ifSpeed Gauge, + ifPhysAddress PhysAddress, + ifAdminStatus INTEGER, + ifOperStatus INTEGER, + ifLastChange TimeTicks, + ifInOctets Counter, + ifInUcastPkts Counter, + ifInNUcastPkts Counter, + ifInDiscards Counter, + ifInErrors Counter, + ifInUnknownProtos Counter, + ifOutOctets Counter, + ifOutUcastPkts Counter, + ifOutNUcastPkts Counter, + ifOutDiscards Counter, + ifOutErrors Counter, + ifOutQLen Gauge, + ifSpecific OBJECT IDENTIFIER +} + +ifIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A unique value, greater than zero, for each interface. It + is recommended that values are assigned contiguously + starting from 1. The value for each interface sub-layer + must remain constant at least from one re-initialization of + the entity's network management system to the next re- + initialization." + ::= { ifEntry 1 } + +ifDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software." + ::= { ifEntry 2 } + +ifType OBJECT-TYPE + SYNTAX IANAifType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of interface. Additional values for ifType are + assigned by the Internet Assigned Numbers Authority (IANA), + through updating the syntax of the IANAifType textual + convention." + ::= { ifEntry 3 } + +ifMtu OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The size of the largest packet which can be sent/received + on the interface, specified in octets. For interfaces that + are used for transmitting network datagrams, this is the + size of the largest network datagram that can be sent on the + interface." + ::= { ifEntry 4 } + +ifSpeed OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An estimate of the interface's current bandwidth in bits + per second. For interfaces which do not vary in bandwidth + or for those where no accurate estimation can be made, this + object should contain the nominal bandwidth. If the + bandwidth of the interface is greater than the maximum value + reportable by this object then this object should report its + maximum value (4,294,967,295) and ifHighSpeed must be used + to report the interace's speed. For a sub-layer which has + no concept of bandwidth, this object should be zero." + ::= { ifEntry 5 } + +ifPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific MIB + must define the bit and byte ordering and the format of the + value of this object. For interfaces which do not have such + an address (e.g., a serial line), this object should contain + an octet string of zero length." + ::= { ifEntry 6 } + +ifAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), testing(3) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state)." + ::= { ifEntry 7 } + +ifOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), testing(3), unknown(4), + dormant(5), notPresent(6), lowerLayerDown(7) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components." + ::= { ifEntry 8 } + +ifLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the interface entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value." + ::= { ifEntry 9 } + +ifInOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets received on the interface, + + + including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 10 } + +ifInUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 11 } + +ifInNUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast or + broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifInMulticastPkts and + ifInBroadcastPkts." + ::= { ifEntry 12 } + +ifInDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of inbound packets which were chosen to be + discarded even though no errors had been detected to prevent + + + their being deliverable to a higher-layer protocol. One + possible reason for discarding such a packet could be to + free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 13 } + +ifInErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of inbound + transmission units that contained errors preventing them + from being deliverable to a higher-layer protocol. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 14 } + +ifInUnknownProtos OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "For packet-oriented interfaces, the number of packets + received via the interface which were discarded because of + an unknown or unsupported protocol. For character-oriented + or fixed-length interfaces that support protocol + multiplexing the number of transmission units received via + the interface which were discarded because of an unknown or + unsupported protocol. For any interface that does not + support protocol multiplexing, this counter will always be + 0. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 15 } + +ifOutOctets OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 16 } + +ifOutUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 17 } + +ifOutNUcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifOutMulticastPkts + and ifOutBroadcastPkts." + ::= { ifEntry 18 } + +ifOutDiscards OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of outbound packets which were chosen to be + discarded even though no errors had been detected to prevent + their being transmitted. One possible reason for discarding + such a packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 19 } + +ifOutErrors OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 20 } + +ifOutQLen OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The length of the output packet queue (in packets)." + ::= { ifEntry 21 } + +ifSpecific OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "A reference to MIB definitions specific to the particular + media being used to realize the interface. It is + + + recommended that this value point to an instance of a MIB + object in the media-specific MIB, i.e., that this object + have the semantics associated with the InstancePointer + textual convention defined in RFC 2579. In fact, it is + recommended that the media-specific MIB specify what value + ifSpecific should/can take for values of ifType. If no MIB + definitions specific to the particular media are available, + the value should be set to the OBJECT IDENTIFIER { 0 0 }." + ::= { ifEntry 22 } + +ifMIBObjects OBJECT IDENTIFIER + ::= { ifMIB 1 } + +ifXTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfXEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of interface entries. The number of entries is + given by the value of ifNumber. This table contains + additional objects for the interface table." + ::= { ifMIBObjects 1 } + +ifXEntry OBJECT-TYPE + SYNTAX IfXEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry containing additional management information + applicable to a particular interface." + INDEX { ifIndex } +-- AUGMENTS { ifEntry } + ::= { ifXTable 1 } + +IfXEntry ::= SEQUENCE { + ifName DisplayString, + ifInMulticastPkts Counter, + ifInBroadcastPkts Counter, + ifOutMulticastPkts Counter, + ifOutBroadcastPkts Counter, +-- ifHCInOctets Counter64, +-- ifHCInUcastPkts Counter64, +-- ifHCInMulticastPkts Counter64, +-- ifHCInBroadcastPkts Counter64, +-- ifHCOutOctets Counter64, +-- ifHCOutUcastPkts Counter64, +-- ifHCOutMulticastPkts Counter64, +-- ifHCOutBroadcastPkts Counter64, + ifLinkUpDownTrapEnable INTEGER, + ifHighSpeed Gauge, + ifPromiscuousMode TruthValue, + ifConnectorPresent TruthValue, + ifAlias DisplayString, + ifCounterDiscontinuityTime TimeStamp +} + +ifName OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The textual name of the interface. The value of this + object should be the name of the interface as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name, such as `le0' or a simple port number, such as `1', + depending on the interface naming syntax of the device. If + several entries in the ifTable together represent a single + interface as named by the device, then each will have the + same value of ifName. Note that for an agent which responds + to SNMP queries concerning an interface on some other + (proxied) device, then the value of ifName for such an + interface is the proxied device's local name for it. + + If there is no local name, or this object is otherwise not + applicable, then this object contains a zero-length string." + ::= { ifXEntry 1 } + +ifInMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 2 } + +ifInBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 3 } + +ifOutMulticastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 4 } + +ifOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 5 } + +-- ifHCInOctets OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "The total number of octets received on the interface, +-- including framing characters. This object is a 64-bit +-- version of ifInOctets. +-- +-- Discontinuities in the value of this counter can occur at +-- re-initialization of the management system, and at other +-- times as indicated by the value of +-- ifCounterDiscontinuityTime." +-- ::= { ifXEntry 6 } + +-- ifHCInUcastPkts OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "The number of packets, delivered by this sub-layer to a +-- higher (sub-)layer, which were not addressed to a multicast +-- or broadcast address at this sub-layer. This object is a +-- 64-bit version of ifInUcastPkts. +-- +-- Discontinuities in the value of this counter can occur at +-- re-initialization of the management system, and at other +-- times as indicated by the value of +-- ifCounterDiscontinuityTime." +-- ::= { ifXEntry 7 } + +-- ifHCInMulticastPkts OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "The number of packets, delivered by this sub-layer to a +-- higher (sub-)layer, which were addressed to a multicast +-- address at this sub-layer. For a MAC layer protocol, this +-- includes both Group and Functional addresses. This object +-- is a 64-bit version of ifInMulticastPkts. +-- +-- Discontinuities in the value of this counter can occur at +-- re-initialization of the management system, and at other +-- times as indicated by the value of +-- ifCounterDiscontinuityTime." +-- ::= { ifXEntry 8 } + +-- ifHCInBroadcastPkts OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "The number of packets, delivered by this sub-layer to a +-- higher (sub-)layer, which were addressed to a broadcast +-- address at this sub-layer. This object is a 64-bit version +-- of ifInBroadcastPkts. +-- +-- Discontinuities in the value of this counter can occur at +-- re-initialization of the management system, and at other +-- times as indicated by the value of +-- ifCounterDiscontinuityTime." +-- ::= { ifXEntry 9 } + +-- ifHCOutOctets OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "The total number of octets transmitted out of the +-- interface, including framing characters. This object is a +-- 64-bit version of ifOutOctets. +-- +-- Discontinuities in the value of this counter can occur at +-- re-initialization of the management system, and at other +-- times as indicated by the value of +-- ifCounterDiscontinuityTime." +-- ::= { ifXEntry 10 } + +-- ifHCOutUcastPkts OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "The total number of packets that higher-level protocols +-- requested be transmitted, and which were not addressed to a +-- multicast or broadcast address at this sub-layer, including +-- those that were discarded or not sent. This object is a +-- 64-bit version of ifOutUcastPkts. +-- +-- Discontinuities in the value of this counter can occur at +-- re-initialization of the management system, and at other +-- times as indicated by the value of +-- ifCounterDiscontinuityTime." +-- ::= { ifXEntry 11 } + +-- ifHCOutMulticastPkts OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "The total number of packets that higher-level protocols +-- requested be transmitted, and which were addressed to a +-- multicast address at this sub-layer, including those that +-- were discarded or not sent. For a MAC layer protocol, this +-- includes both Group and Functional addresses. This object +-- is a 64-bit version of ifOutMulticastPkts. +-- +-- Discontinuities in the value of this counter can occur at +-- re-initialization of the management system, and at other +-- times as indicated by the value of +-- ifCounterDiscontinuityTime." +-- ::= { ifXEntry 12 } + +-- ifHCOutBroadcastPkts OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "The total number of packets that higher-level protocols +-- requested be transmitted, and which were addressed to a +-- broadcast address at this sub-layer, including those that +-- were discarded or not sent. This object is a 64-bit version +-- of ifOutBroadcastPkts. +-- +-- Discontinuities in the value of this counter can occur at +-- re-initialization of the management system, and at other +-- times as indicated by the value of +-- ifCounterDiscontinuityTime." +-- ::= { ifXEntry 13 } + +ifLinkUpDownTrapEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates whether linkUp/linkDown traps should be generated + for this interface. + + By default, this object should have the value enabled(1) for + interfaces which do not operate on 'top' of any other + interface (as defined in the ifStackTable), and disabled(2) + otherwise." + ::= { ifXEntry 14 } + +ifHighSpeed OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An estimate of the interface's current bandwidth in units + of 1,000,000 bits per second. If this object reports a + value of `n' then the speed of the interface is somewhere in + the range of `n-500,000' to `n+499,999'. For interfaces + which do not vary in bandwidth or for those where no + accurate estimation can be made, this object should contain + the nominal bandwidth. For a sub-layer which has no concept + of bandwidth, this object should be zero." + ::= { ifXEntry 15 } + +ifPromiscuousMode OBJECT-TYPE + SYNTAX TruthValue + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object has a value of false(2) if this interface only + accepts packets/frames that are addressed to this station. + This object has a value of true(1) when the station accepts + all packets/frames transmitted on the media. The value + true(1) is only legal on certain types of media. If legal, + setting this object to a value of true(1) may require the + interface to be reset before becoming effective. + + The value of ifPromiscuousMode does not affect the reception + of broadcast and multicast packets/frames by the interface." + ::= { ifXEntry 16 } + +ifConnectorPresent OBJECT-TYPE + SYNTAX TruthValue + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise." + ::= { ifXEntry 17 } + +ifAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..64)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object is an 'alias' name for the interface as + specified by a network manager, and provides a non-volatile + 'handle' for the interface. + + On the first instantiation of an interface, the value of + ifAlias associated with that interface is the zero-length + string. As and when a value is written into an instance of + ifAlias through a network management set operation, then the + agent must retain the supplied value in the ifAlias instance + associated with the same interface for as long as that + interface remains instantiated, including across all re- + initializations/reboots of the network management system, + including those which result in a change of the interface's + ifIndex value. + + An example of the value which a network manager might store + in this object for a WAN interface is the (Telco's) circuit + number/identifier of the interface. + + Some agents may support write-access only for interfaces + having particular values of ifType. An agent which supports + write access to this object is required to keep the value in + non-volatile storage, but it may limit the length of new + values depending on how much storage is already occupied by + the current values for other interfaces." + ::= { ifXEntry 18 } + +ifCounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this interface's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + + + Counter64 object contained in the ifTable or ifXTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ifXEntry 19 } + +ifStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfStackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The table containing information on the relationships + between the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'on top of' which other sub-layers, where each sub-layer + corresponds to a conceptual row in the ifTable. For + example, when the sub-layer with ifIndex value x runs over + the sub-layer with ifIndex value y, then this table + contains: + + ifStackStatus.x.y=active + + For each ifIndex value, I, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with I. For one of these rows, I + is the value of ifStackHigherLayer; for the other, I is the + value of ifStackLowerLayer. (If I is not involved in + multiplexing, then these are the only two rows associated + with I.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifStackStatus.0.x=active + ifStackStatus.x.0=active " + ::= { ifMIBObjects 2 } + +ifStackEntry OBJECT-TYPE + SYNTAX IfStackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs on 'top' of the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable." + INDEX { ifStackHigherLayer, ifStackLowerLayer } + ::= { ifStackTable 1 } + +IfStackEntry ::= SEQUENCE { + ifStackHigherLayer InterfaceIndexOrZero, + ifStackLowerLayer InterfaceIndexOrZero, + ifStackStatus RowStatus +} + +ifStackHigherLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The value of ifIndex corresponding to the higher sub-layer + of the relationship, i.e., the sub-layer which runs on 'top' + of the sub-layer identified by the corresponding instance of + ifStackLowerLayer. If there is no higher sub-layer (below + the internetwork layer), then this object has the value 0." + ::= { ifStackEntry 1 } + +ifStackLowerLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The value of ifIndex corresponding to the lower sub-layer + of the relationship, i.e., the sub-layer which runs 'below' + the sub-layer identified by the corresponding instance of + ifStackHigherLayer. If there is no lower sub-layer, then + this object has the value 0." + ::= { ifStackEntry 2 } + +ifStackStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The status of the relationship between two sub-layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have consequences up + and down the interface stack. Thus, write access to this + object is likely to be inappropriate for some types of + interfaces, and many implementations will choose not to + support write-access for any type of interface." + ::= { ifStackEntry 3 } + +ifTestTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfTestEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table contains one entry per interface. It defines + objects which allow a network manager to instruct an agent + to test an interface for various faults. Tests for an + interface are defined in the media-specific MIB for that + interface. After invoking a test, the object ifTestResult + can be read to determine the outcome. If an agent can not + perform the test, ifTestResult is set to so indicate. The + object ifTestCode can be used to provide further test- + specific or interface-specific (or even enterprise-specific) + information concerning the outcome of the test. Only one + test can be in progress on each interface at any one time. + If one test is in progress when another test is invoked, the + second test is rejected. Some agents may reject a test when + a prior test is active on another interface. + + Before starting a test, a manager-station must first obtain + 'ownership' of the entry in the ifTestTable for the + interface to be tested. This is accomplished with the + ifTestId and ifTestStatus objects as follows: + + try_again: + get (ifTestId, ifTestStatus) + while (ifTestStatus != notInUse) + /* + * Loop while a test is running or some other + * manager is configuring a test. + */ + short delay + get (ifTestId, ifTestStatus) + } + + /* + * Is not being used right now -- let's compete + * to see who gets it. + */ + lock_value = ifTestId + + if ( set(ifTestId = lock_value, ifTestStatus = inUse, + + + ifTestOwner = 'my-IP-address') == FAILURE) + /* + * Another manager got the ifTestEntry -- go + * try again + */ + goto try_again; + + /* + * I have the lock + */ + set up any test parameters. + + /* + * This starts the test + */ + set(ifTestType = test_to_run); + + wait for test completion by polling ifTestResult + + when test completes, agent sets ifTestResult + agent also sets ifTestStatus = 'notInUse' + + retrieve any additional test results, and ifTestId + + if (ifTestId == lock_value+1) results are valid + + A manager station first retrieves the value of the + appropriate ifTestId and ifTestStatus objects, periodically + repeating the retrieval if necessary, until the value of + ifTestStatus is 'notInUse'. The manager station then tries + to set the same ifTestId object to the value it just + retrieved, the same ifTestStatus object to 'inUse', and the + corresponding ifTestOwner object to a value indicating + itself. If the set operation succeeds then the manager has + obtained ownership of the ifTestEntry, and the value of the + ifTestId object is incremented by the agent (per the + semantics of TestAndIncr). Failure of the set operation + indicates that some other manager has obtained ownership of + the ifTestEntry. + + Once ownership is obtained, any test parameters can be + setup, and then the test is initiated by setting ifTestType. + On completion of the test, the agent sets ifTestStatus to + 'notInUse'. Once this occurs, the manager can retrieve the + results. In the (rare) event that the invocation of tests + by two network managers were to overlap, then there would be + a possibility that the first test's results might be + overwritten by the second test's results prior to the first + + + results being read. This unlikely circumstance can be + detected by a network manager retrieving ifTestId at the + same time as retrieving the test results, and ensuring that + the results are for the desired request. + + If ifTestType is not set within an abnormally long period of + time after ownership is obtained, the agent should time-out + the manager, and reset the value of the ifTestStatus object + back to 'notInUse'. It is suggested that this time-out + period be 5 minutes. + + In general, a management station must not retransmit a + request to invoke a test for which it does not receive a + response; instead, it properly inspects an agent's MIB to + determine if the invocation was successful. Only if the + invocation was unsuccessful, is the invocation request + retransmitted. + + Some tests may require the interface to be taken off-line in + order to execute them, or may even require the agent to + reboot after completion of the test. In these + circumstances, communication with the management station + invoking the test may be lost until after completion of the + test. An agent is not required to support such tests. + However, if such tests are supported, then the agent should + make every effort to transmit a response to the request + which invoked the test prior to losing communication. When + the agent is restored to normal service, the results of the + test are properly made available in the appropriate objects. + Note that this requires that the ifIndex value assigned to + an interface must be unchanged even if the test causes a + reboot. An agent must reject any test for which it cannot, + perhaps due to resource constraints, make available at least + the minimum amount of information after that test + completes." + ::= { ifMIBObjects 3 } + +ifTestEntry OBJECT-TYPE + SYNTAX IfTestEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry containing objects for invoking tests on an + interface." + INDEX { ifIndex } +-- AUGMENTS { ifEntry } + ::= { ifTestTable 1 } + +IfTestEntry ::= SEQUENCE { + ifTestId TestAndIncr, + ifTestStatus INTEGER, + ifTestType AutonomousType, + ifTestResult INTEGER, + ifTestCode OBJECT IDENTIFIER, + ifTestOwner OwnerString +} + +ifTestId OBJECT-TYPE + SYNTAX TestAndIncr + ACCESS read-write + STATUS deprecated + DESCRIPTION + "This object identifies the current invocation of the + interface's test." + ::= { ifTestEntry 1 } + +ifTestStatus OBJECT-TYPE + SYNTAX INTEGER { notInUse(1), inUse(2) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "This object indicates whether or not some manager currently + has the necessary 'ownership' required to invoke a test on + this interface. A write to this object is only successful + when it changes its value from 'notInUse(1)' to 'inUse(2)'. + After completion of a test, the agent resets the value back + to 'notInUse(1)'." + ::= { ifTestEntry 2 } + +ifTestType OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control variable used to start and stop operator- + initiated interface tests. Most OBJECT IDENTIFIER values + assigned to tests are defined elsewhere, in association with + specific types of interface. However, this document assigns + a value for a full-duplex loopback test, and defines the + special meanings of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + + When the value noTest is written to this object, no action + is taken unless a test is in progress, in which case the + test is aborted. Writing any other value to this object is + + + only valid when no test is currently in progress, in which + case the indicated test is initiated. + + When read, this object always returns the most recent value + that ifTestType was set to. If it has not been set since + the last initialization of the network management subsystem + on the agent, a value of noTest is returned." + ::= { ifTestEntry 3 } + +ifTestResult OBJECT-TYPE + SYNTAX INTEGER { none(1), success(2), inProgress(3), + notSupported(4), unAbleToRun(5), aborted(6), + failed(7) } + ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object contains the result of the most recently + requested test, or the value none(1) if no tests have been + requested since the last reset. Note that this facility + provides no provision for saving the results of one test + when starting another, as could be required if used by + multiple managers concurrently." + ::= { ifTestEntry 4 } + +ifTestCode OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object contains a code which contains more specific + information on the test result, for example an error-code + after a failed test. Error codes and other values this + object may take are specific to the type of interface and/or + test. The value may have the semantics of either the + AutonomousType or InstancePointer textual conventions as + defined in RFC 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available." + ::= { ifTestEntry 5 } + +ifTestOwner OBJECT-TYPE + SYNTAX OwnerString + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity which currently has the 'ownership' required to + invoke a test on this interface." + ::= { ifTestEntry 6 } + +ifRcvAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfRcvAddressEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This table contains an entry for each address (broadcast, + multicast, or uni-cast) for which the system will receive + packets/frames on a particular interface, except as follows: + + - for an interface operating in promiscuous mode, entries + are only required for those addresses for which the system + would receive frames were it not operating in promiscuous + mode. + + + - for 802.5 functional addresses, only one entry is + required, for the address which has the functional address + bit ANDed with the bit mask of all functional addresses for + which the interface will accept frames. + + A system is normally able to use any unicast address which + corresponds to an entry in this table as a source address." + ::= { ifMIBObjects 4 } + +ifRcvAddressEntry OBJECT-TYPE + SYNTAX IfRcvAddressEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of objects identifying an address for which the + system will accept packets/frames on the particular + interface identified by the index value ifIndex." + INDEX { ifIndex, ifRcvAddressAddress } + ::= { ifRcvAddressTable 1 } + +IfRcvAddressEntry ::= SEQUENCE { + ifRcvAddressAddress PhysAddress, + ifRcvAddressStatus RowStatus, + ifRcvAddressType INTEGER +} + +ifRcvAddressAddress OBJECT-TYPE + SYNTAX PhysAddress + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An address for which the system will accept packets/frames + on this entry's interface." + ::= { ifRcvAddressEntry 1 } + +ifRcvAddressStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object is used to create and delete rows in the + ifRcvAddressTable." + ::= { ifRcvAddressEntry 2 } + +ifRcvAddressType OBJECT-TYPE + SYNTAX INTEGER { other(1), volatile(2), nonVolatile(3) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object has the value nonVolatile(3) for those entries + in the table which are valid and will not be deleted by the + next restart of the managed system. Entries having the + value volatile(2) are valid and exist, but have not been + saved, so that will not exist after the next restart of the + managed system. Entries having the value other(1) are valid + and exist but are not classified as to whether they will + continue to exist after the next restart." + DEFVAL { volatile } + ::= { ifRcvAddressEntry 3 } + +ifTableLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time of the last creation or + deletion of an entry in the ifTable. If the number of + entries has been unchanged since the last re-initialization + of the local network management subsystem, then this object + contains a zero value." + ::= { ifMIBObjects 5 } + +ifStackLastChange OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time of the last change of + the (whole) interface stack. A change of the interface + stack is defined to be any creation, deletion, or change in + value of any instance of ifStackStatus. If the interface + stack has been unchanged since the last re-initialization of + the local network management subsystem, then this object + contains a zero value." + ::= { ifMIBObjects 6 } + +ifConformance OBJECT IDENTIFIER + ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER + ::= { ifConformance 1 } + +ifCompliances OBJECT IDENTIFIER + ::= { ifConformance 2 } + +linkDown TRAP-TYPE + ENTERPRISE snmpTraps + VARIABLES { ifIndex, ifAdminStatus, ifOperStatus } +-- STATUS mandatory + DESCRIPTION + "A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus." + ::= 3 + +linkUp TRAP-TYPE + ENTERPRISE snmpTraps + VARIABLES { ifIndex, ifAdminStatus, ifOperStatus } +-- STATUS mandatory + DESCRIPTION + "A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus." + ::= 4 + +ifGeneralGroup OBJECT IDENTIFIER + ::= { ifGroups 1 } + +-- ifGeneralGroup OBJECT-GROUP +-- OBJECTS { ifDescr, ifType, ifSpeed, ifPhysAddress, +-- ifAdminStatus, ifOperStatus, ifLastChange, +-- ifLinkUpDownTrapEnable, ifConnectorPresent, +-- ifHighSpeed, ifName } +-- STATUS deprecated +-- DESCRIPTION +-- "A collection of objects deprecated in favour of +-- ifGeneralInformationGroup." +-- ::= { ifGroups 1 } + +ifFixedLengthGroup OBJECT IDENTIFIER + ::= { ifGroups 2 } + +-- ifFixedLengthGroup OBJECT-GROUP +-- OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, +-- ifInErrors, ifOutErrors } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information specific to +-- non-high speed (non-high speed interfaces transmit and +-- receive at speeds less than or equal to 20,000,000 +-- bits/second) character-oriented or fixed-length-transmission +-- network interfaces." +-- ::= { ifGroups 2 } + +ifHCFixedLengthGroup OBJECT IDENTIFIER + ::= { ifGroups 3 } + +-- ifHCFixedLengthGroup OBJECT-GROUP +-- OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, +-- ifOutOctets, ifInUnknownProtos, ifInErrors, +-- ifOutErrors } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information specific to +-- high speed (greater than 20,000,000 bits/second) character- +-- oriented or fixed-length-transmission network interfaces." +-- ::= { ifGroups 3 } + +ifPacketGroup OBJECT IDENTIFIER + ::= { ifGroups 4 } + +-- ifPacketGroup OBJECT-GROUP +-- OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, +-- ifInErrors, ifOutErrors, ifMtu, ifInUcastPkts, +-- ifInMulticastPkts, ifInBroadcastPkts, ifInDiscards, +-- ifOutUcastPkts, ifOutMulticastPkts, +-- ifOutBroadcastPkts, ifOutDiscards, +-- ifPromiscuousMode } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information specific to +-- non-high speed (non-high speed interfaces transmit and +-- receive at speeds less than or equal to 20,000,000 +-- bits/second) packet-oriented network interfaces." +-- ::= { ifGroups 4 } + +ifHCPacketGroup OBJECT IDENTIFIER + ::= { ifGroups 5 } + +-- ifHCPacketGroup OBJECT-GROUP +-- OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, +-- ifOutOctets, ifInUnknownProtos, ifInErrors, +-- ifOutErrors, ifMtu, ifInUcastPkts, +-- ifInMulticastPkts, ifInBroadcastPkts, ifInDiscards, +-- ifOutUcastPkts, ifOutMulticastPkts, +-- ifOutBroadcastPkts, ifOutDiscards, +-- ifPromiscuousMode } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information specific to +-- high speed (greater than 20,000,000 bits/second but less +-- than or equal to 650,000,000 bits/second) packet-oriented +-- network interfaces." +-- ::= { ifGroups 5 } + +ifVHCPacketGroup OBJECT IDENTIFIER + ::= { ifGroups 6 } + +-- ifVHCPacketGroup OBJECT-GROUP +-- OBJECTS { ifHCInUcastPkts, ifHCInMulticastPkts, +-- ifHCInBroadcastPkts, ifHCOutUcastPkts, +-- ifHCOutMulticastPkts, ifHCOutBroadcastPkts, +-- ifHCInOctets, ifHCOutOctets, ifInOctets, +-- ifOutOctets, ifInUnknownProtos, ifInErrors, +-- ifOutErrors, ifMtu, ifInUcastPkts, +-- ifInMulticastPkts, ifInBroadcastPkts, ifInDiscards, +-- ifOutUcastPkts, ifOutMulticastPkts, +-- ifOutBroadcastPkts, ifOutDiscards, +-- ifPromiscuousMode } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information specific to +-- higher speed (greater than 650,000,000 bits/second) packet- +-- oriented network interfaces." +-- ::= { ifGroups 6 } + +ifRcvAddressGroup OBJECT IDENTIFIER + ::= { ifGroups 7 } + +-- ifRcvAddressGroup OBJECT-GROUP +-- OBJECTS { ifRcvAddressStatus, ifRcvAddressType } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information on the +-- multiple addresses which an interface receives." +-- ::= { ifGroups 7 } + +ifTestGroup OBJECT IDENTIFIER + ::= { ifGroups 8 } + +-- ifTestGroup OBJECT-GROUP +-- OBJECTS { ifTestId, ifTestStatus, ifTestType, ifTestResult, +-- ifTestCode, ifTestOwner } +-- STATUS deprecated +-- DESCRIPTION +-- "A collection of objects providing the ability to invoke +-- tests on an interface." +-- ::= { ifGroups 8 } + +ifStackGroup OBJECT IDENTIFIER + ::= { ifGroups 9 } + +-- ifStackGroup OBJECT-GROUP +-- OBJECTS { ifStackStatus } +-- STATUS deprecated +-- DESCRIPTION +-- "The previous collection of objects providing information on +-- the layering of MIB-II interfaces." +-- ::= { ifGroups 9 } + +ifGeneralInformationGroup OBJECT IDENTIFIER + ::= { ifGroups 10 } + +-- ifGeneralInformationGroup OBJECT-GROUP +-- OBJECTS { ifIndex, ifDescr, ifType, ifSpeed, ifPhysAddress, +-- ifAdminStatus, ifOperStatus, ifLastChange, +-- ifLinkUpDownTrapEnable, ifConnectorPresent, +-- ifHighSpeed, ifName, ifNumber, ifAlias, +-- ifTableLastChange } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information applicable to +-- all network interfaces." +-- ::= { ifGroups 10 } + +ifStackGroup2 OBJECT IDENTIFIER + ::= { ifGroups 11 } + +-- ifStackGroup2 OBJECT-GROUP +-- OBJECTS { ifStackStatus, ifStackLastChange } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information on the +-- layering of MIB-II interfaces." +-- ::= { ifGroups 11 } + +ifOldObjectsGroup OBJECT IDENTIFIER + ::= { ifGroups 12 } + +-- ifOldObjectsGroup OBJECT-GROUP +-- OBJECTS { ifInNUcastPkts, ifOutNUcastPkts, ifOutQLen, +-- ifSpecific } +-- STATUS deprecated +-- DESCRIPTION +-- "The collection of objects deprecated from the original MIB- +-- II interfaces group." +-- ::= { ifGroups 12 } + +ifCounterDiscontinuityGroup OBJECT IDENTIFIER + ::= { ifGroups 13 } + +-- ifCounterDiscontinuityGroup OBJECT-GROUP +-- OBJECTS { ifCounterDiscontinuityTime } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing information specific to +-- interface counter discontinuities." +-- ::= { ifGroups 13 } + +linkUpDownNotificationsGroup OBJECT IDENTIFIER + ::= { ifGroups 14 } + +-- linkUpDownNotificationsGroup NOTIFICATION-GROUP +-- NOTIFICATIONS { linkUp, linkDown } +-- STATUS mandatory +-- DESCRIPTION +-- "The notifications which indicate specific changes in the +-- value of ifOperStatus." +-- ::= { ifGroups 14 } + +ifCompliance OBJECT IDENTIFIER + ::= { ifCompliances 1 } + +-- ifCompliance MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "A compliance statement defined in a previous version of +-- this MIB module, for SNMP entities which have network +-- interfaces." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { ifGeneralGroup, ifStackGroup } + +-- GROUP ifFixedLengthGroup +-- DESCRIPTION +-- "This group is mandatory for all network interfaces which +-- are character-oriented or transmit data in fixed-length +-- transmission units." + +-- GROUP ifHCFixedLengthGroup +-- DESCRIPTION +-- "This group is mandatory only for those network interfaces +-- which are character-oriented or transmit data in fixed- +-- length transmission units, and for which the value of the +-- corresponding instance of ifSpeed is greater than 20,000,000 +-- bits/second." + +-- GROUP ifPacketGroup +-- DESCRIPTION +-- "This group is mandatory for all network interfaces which +-- are packet-oriented." + +-- GROUP ifHCPacketGroup +-- DESCRIPTION +-- "This group is mandatory only for those network interfaces +-- which are packet-oriented and for which the value of the +-- corresponding instance of ifSpeed is greater than +-- 650,000,000 bits/second." + +-- GROUP ifTestGroup +-- DESCRIPTION +-- "This group is optional. Media-specific MIBs which require +-- interface tests are strongly encouraged to use this group +-- for invoking tests and reporting results. A medium specific +-- MIB which has mandatory tests may make implementation of +-- +-- +-- this group mandatory." + +-- GROUP ifRcvAddressGroup +-- DESCRIPTION +-- "The applicability of this group MUST be defined by the +-- media-specific MIBs. Media-specific MIBs must define the +-- exact meaning, use, and semantics of the addresses in this +-- group." + +-- OBJECT ifLinkUpDownTrapEnable +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- OBJECT ifPromiscuousMode +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- OBJECT ifStackStatus +-- SYNTAX RowStatus +-- { active(1) } +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required, and only one of the six +-- enumerated values for the RowStatus textual convention need +-- be supported, specifically: active(1)." + +-- OBJECT ifAdminStatus +-- SYNTAX INTEGER +-- { up(1), down(2) } +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required, nor is support for the value +-- testing(3)." + +-- ::= { ifCompliances 1 } + +ifCompliance2 OBJECT IDENTIFIER + ::= { ifCompliances 2 } + +-- ifCompliance2 MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "A compliance statement defined in a previous version of +-- this MIB module, for SNMP entities which have network +-- interfaces." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { ifGeneralInformationGroup, +-- ifStackGroup2, ifCounterDiscontinuityGroup } + +-- GROUP ifFixedLengthGroup +-- DESCRIPTION +-- "This group is mandatory for all network interfaces which +-- are character-oriented or transmit data in fixed-length +-- transmission units." + +-- GROUP ifHCFixedLengthGroup +-- DESCRIPTION +-- "This group is mandatory only for those network interfaces +-- which are character-oriented or transmit data in fixed- +-- length transmission units, and for which the value of the +-- corresponding instance of ifSpeed is greater than 20,000,000 +-- bits/second." + +-- GROUP ifPacketGroup +-- DESCRIPTION +-- "This group is mandatory for all network interfaces which +-- are packet-oriented." + +-- GROUP ifHCPacketGroup +-- DESCRIPTION +-- "This group is mandatory only for those network interfaces +-- which are packet-oriented and for which the value of the +-- corresponding instance of ifSpeed is greater than +-- 650,000,000 bits/second." + +-- GROUP ifRcvAddressGroup +-- DESCRIPTION +-- "The applicability of this group MUST be defined by the +-- media-specific MIBs. Media-specific MIBs must define the +-- exact meaning, use, and semantics of the addresses in this +-- group." + +-- OBJECT ifLinkUpDownTrapEnable +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- OBJECT ifPromiscuousMode +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- OBJECT ifStackStatus +-- SYNTAX RowStatus +-- { active(1) } +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required, and only one of the six +-- enumerated values for the RowStatus textual convention need +-- be supported, specifically: active(1)." + +-- OBJECT ifAdminStatus +-- SYNTAX INTEGER +-- { up(1), down(2) } +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required, nor is support for the value +-- testing(3)." + +-- OBJECT ifAlias +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- ::= { ifCompliances 2 } + +ifCompliance3 OBJECT IDENTIFIER + ::= { ifCompliances 3 } + +-- ifCompliance3 MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "The compliance statement for SNMP entities which have +-- network interfaces." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { ifGeneralInformationGroup, +-- linkUpDownNotificationsGroup } + +-- GROUP ifFixedLengthGroup +-- DESCRIPTION +-- "This group is mandatory for those network interfaces which +-- are character-oriented or transmit data in fixed-length +-- transmission units, and for which the value of the +-- corresponding instance of ifSpeed is less than or equal to +-- 20,000,000 bits/second." + +-- GROUP ifHCFixedLengthGroup +-- DESCRIPTION +-- "This group is mandatory for those network interfaces which +-- are character-oriented or transmit data in fixed-length +-- transmission units, and for which the value of the +-- corresponding instance of ifSpeed is greater than 20,000,000 +-- bits/second." + +-- GROUP ifPacketGroup +-- DESCRIPTION +-- "This group is mandatory for those network interfaces which +-- are packet-oriented, and for which the value of the +-- corresponding instance of ifSpeed is less than or equal to +-- 20,000,000 bits/second." + +-- GROUP ifHCPacketGroup +-- DESCRIPTION +-- "This group is mandatory only for those network interfaces +-- which are packet-oriented and for which the value of the +-- corresponding instance of ifSpeed is greater than 20,000,000 +-- bits/second but less than or equal to 650,000,000 +-- bits/second." + +-- GROUP ifVHCPacketGroup +-- DESCRIPTION +-- "This group is mandatory only for those network interfaces +-- which are packet-oriented and for which the value of the +-- corresponding instance of ifSpeed is greater than +-- 650,000,000 bits/second." + +-- GROUP ifCounterDiscontinuityGroup +-- DESCRIPTION +-- "This group is mandatory for those network interfaces that +-- are required to maintain counters (i.e., those for which one +-- of the ifFixedLengthGroup, ifHCFixedLengthGroup, +-- ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is +-- mandatory)." + +-- GROUP ifRcvAddressGroup +-- DESCRIPTION +-- "The applicability of this group MUST be defined by the +-- media-specific MIBs. Media-specific MIBs must define the +-- exact meaning, use, and semantics of the addresses in this +-- group." + +-- OBJECT ifLinkUpDownTrapEnable +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- OBJECT ifPromiscuousMode +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- OBJECT ifAdminStatus +-- SYNTAX INTEGER +-- { up(1), down(2) } +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required, nor is support for the value +-- testing(3)." + +-- OBJECT ifAlias +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- ::= { ifCompliances 3 } + +END -- end of module IF-MIB. diff --git a/test/dumps/smiv1/MAU-MIB b/test/dumps/smiv1/MAU-MIB new file mode 100644 index 0000000..9103420 --- /dev/null +++ b/test/dumps/smiv1/MAU-MIB @@ -0,0 +1,1848 @@ +-- +-- This SMIv1 module has been generated by smidump 0.4.5. Do not edit. +-- + +MAU-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifJackType, IANAifMauAutoNegCapBits, IANAifMauMediaAvailable, + IANAifMauTypeListBits + FROM IANA-MAU-MIB + InterfaceIndex + FROM IF-MIB + OBJECT-TYPE + FROM RFC-1212 + TRAP-TYPE + FROM RFC-1215 + Counter + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + AutonomousType, TruthValue + FROM SNMPv2-TC; + +mauMod OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 6 } + +-- mauMod MODULE-IDENTITY +-- LAST-UPDATED "200704210000Z" +-- ORGANIZATION +-- "IETF Ethernet Interfaces and Hub MIB Working Group" +-- CONTACT-INFO +-- "WG charter: +-- http://www.ietf.org/html.charters/hubmib-charter.html +-- +-- Mailing Lists: +-- General Discussion: hubmib@ietf.org +-- To Subscribe: hubmib-request@ietf.org +-- In Body: subscribe your_email_address +-- +-- +-- +-- Chair: Bert Wijnen +-- Postal: Alcatel-Lucent +-- Schagen 33 +-- 3461 GL Linschoten +-- Netherlands +-- Phone: +31-348-407-775 +-- EMail: bwijnen@alcatel-lucent.com +-- +-- Editor: Edward Beili +-- Postal: Actelis Networks Inc. +-- 25 Bazel St., P.O.B. 10173 +-- Petach-Tikva 10173 +-- Israel +-- Tel: +972-3-924-3491 +-- EMail: edward.beili@actelis.com" +-- DESCRIPTION +-- "Management information for 802.3 MAUs. +-- +-- The following reference is used throughout this MIB module: +-- +-- [IEEE802.3] refers to: +-- IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information +-- technology - Telecommunications and information exchange +-- between systems - Local and metropolitan area networks - +-- Specific requirements - Part 3: Carrier sense multiple +-- access with collision detection (CSMA/CD) access method and +-- physical layer specifications'. +-- +-- Of particular interest is Clause 30, 'Management'. +-- +-- Copyright (C) The IETF Trust (2007). +-- This version of this MIB module is part of RFC 4836; +-- see the RFC itself for full legal notices." +-- REVISION "200704210000Z" +-- DESCRIPTION +-- "Updated to reference IANA maintaned textual +-- conventions for MAU types, Media Availability state, +-- Auto Negotiation capabilities, and jack types, +-- instead of using internally defined values. +-- +-- This version is published as RFC 4836." +-- REVISION "200309190000Z" +-- DESCRIPTION +-- "Updated to include support for 10 Gb/s MAUs. +-- This resulted in the following revisions: +-- - Added OBJECT-IDENTITY definitions for +-- 10 gigabit MAU types +-- +-- +-- +-- - Added fiberLC jack type to JackType TC +-- - Extended ifMauTypeListBits with bits for +-- the 10 gigabit MAU types +-- - Added enumerations to ifMauMediaAvailable, +-- and updated its DESCRIPTION to reflect +-- behaviour at 10 Gb/s +-- - Added 64-bit version of ifMauFalseCarriers +-- and added mauIfGrpHCStats object group to +-- contain the new object +-- - Deprecated mauModIfCompl2 and replaced it +-- with mauModIfCompl3, which includes the new +-- object group +-- +-- This version published as RFC 3636." +-- REVISION "199908240400Z" +-- DESCRIPTION +-- "This version published as RFC 2668. Updated +-- to include support for 1000 Mb/sec +-- MAUs and flow control negotiation." +-- REVISION "199710310000Z" +-- DESCRIPTION +-- "Version published as RFC 2239." +-- REVISION "199309300000Z" +-- DESCRIPTION +-- "Initial version, published as RFC 1515." +-- ::= { snmpDot3MauMgt 6 } + + +JackType ::= + INTEGER { other(1), rj45(2), rj45S(3), db9(4), bnc(5), fAUI(6), + mAUI(7), fiberSC(8), fiberMIC(9), fiberST(10), + telco(11), mtrj(12), hssdc(13), fiberLC(14) } + +-- JackType ::= TEXTUAL-CONVENTION +-- STATUS deprecated +-- DESCRIPTION +-- "********* THIS TC IS DEPRECATED ********** +-- +-- This TC has been deprecated in favour of +-- IANAifJackType. +-- +-- Common enumeration values for repeater +-- and interface MAU jack types." +-- SYNTAX INTEGER +-- { other(1), rj45(2), rj45S(3), db9(4), bnc(5), +-- fAUI(6), mAUI(7), fiberSC(8), fiberMIC(9), +-- fiberST(10), telco(11), mtrj(12), hssdc(13), +-- fiberLC(14) } + +snmpDot3MauMgt OBJECT IDENTIFIER + ::= { mib-2 26 } + +snmpDot3MauTraps OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 0 } + +dot3RpMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 1 } + +rpMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpMauEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater." + ::= { dot3RpMauBasicGroup 1 } + +rpMauEntry OBJECT-TYPE + SYNTAX RpMauEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex } + ::= { rpMauTable 1 } + +RpMauEntry ::= SEQUENCE { + rpMauGroupIndex INTEGER, + rpMauPortIndex INTEGER, + rpMauIndex INTEGER, + rpMauType AutonomousType, + rpMauStatus INTEGER, + rpMauMediaAvailable IANAifMauMediaAvailable, + rpMauMediaAvailableStateExits Counter, + rpMauJabberState INTEGER, + rpMauJabberingStateEnters Counter, + rpMauFalseCarriers Counter +} + +rpMauGroupIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex." +-- REFERENCE +-- "RFC 2108, rptrGroupIndex." + ::= { rpMauEntry 1 } + +rpMauPortIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected." +-- REFERENCE +-- "RFC 2108, rptrPortIndex." + ::= { rpMauEntry 2 } + +rpMauIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { rpMauEntry 3 } + +rpMauType OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { rpMauEntry 4 } + +rpMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, +-- 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, +-- acResetMAU." + ::= { rpMauEntry 5 } + +rpMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { rpMauEntry 6 } + +rpMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. +-- RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 7 } + +rpMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { rpMauEntry 8 } + +rpMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. +-- RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 9 } + +rpMauFalseCarriers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. +-- RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 10 } + +rpJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpJackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to the ports of a repeater." + ::= { dot3RpMauBasicGroup 2 } + +rpJackEntry OBJECT-TYPE + SYNTAX RpJackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpJackIndex } + ::= { rpJackTable 1 } + +RpJackEntry ::= SEQUENCE { + rpJackIndex INTEGER, + rpJackType IANAifJackType +} + +rpJackIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)." + ::= { rpJackEntry 1 } + +rpJackType OBJECT-TYPE + SYNTAX IANAifJackType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { rpJackEntry 2 } + +dot3IfMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 2 } + +ifMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Table of descriptive and status information + about MAU(s) attached to an interface." + ::= { dot3IfMauBasicGroup 1 } + +ifMauEntry OBJECT-TYPE + SYNTAX IfMauEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauTable 1 } + +IfMauEntry ::= SEQUENCE { + ifMauIfIndex InterfaceIndex, + ifMauIndex INTEGER, + ifMauType AutonomousType, + ifMauStatus INTEGER, + ifMauMediaAvailable IANAifMauMediaAvailable, + ifMauMediaAvailableStateExits Counter, + ifMauJabberState INTEGER, + ifMauJabberingStateEnters Counter, + ifMauFalseCarriers Counter, + ifMauTypeList INTEGER, + ifMauDefaultType AutonomousType, + ifMauAutoNegSupported TruthValue, + ifMauTypeListBits IANAifMauTypeListBits +-- ifMauHCFalseCarriers Counter64 +} + +ifMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." +-- REFERENCE +-- "RFC 2863, ifIndex" + ::= { ifMauEntry 1 } + +ifMauIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { ifMauEntry 2 } + +ifMauType OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { ifMauEntry 3 } + +ifMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, +-- 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, +-- acResetMAU." + ::= { ifMauEntry 4 } + +ifMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { ifMauEntry 5 } + +ifMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. +-- RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 6 } + +ifMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { ifMauEntry 7 } + +ifMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. +-- RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 8 } + +ifMauFalseCarriers OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. +-- +-- +-- +-- RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 9 } + +ifMauTypeList OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability." + ::= { ifMauEntry 10 } + +ifMauDefaultType OBJECT-TYPE + SYNTAX AutonomousType + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + ::= { ifMauEntry 11 } + +ifMauAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object indicates whether or not + auto-negotiation is supported on this MAU." + ::= { ifMauEntry 12 } + +ifMauTypeListBits OBJECT-TYPE + SYNTAX IANAifMauTypeListBits + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC." + ::= { ifMauEntry 13 } + +-- ifMauHCFalseCarriers OBJECT-TYPE +-- SYNTAX Counter64 +-- ACCESS read-only +-- STATUS mandatory +-- DESCRIPTION +-- "A count of the number of false carrier events +-- during IDLE in 100BASE-X and 1000BASE-X links. +-- +-- For all other MAU types, this counter will +-- always indicate zero. This counter does not +-- increment at the symbol rate. +-- +-- This counter is a 64-bit version of +-- ifMauFalseCarriers. Since the 32-bit version of +-- this counter can roll over very quickly, +-- management stations are advised to poll the +-- 64-bit version instead, in order to avoid loss +-- of information. +-- +-- Discontinuities in the value of this counter can +-- occur at re-initialization of the management +-- system and at other times, as indicated by the +-- value of ifCounterDiscontinuityTime." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. +-- +-- +-- +-- RFC 2863, ifCounterDiscontinuityTime." +-- ::= { ifMauEntry 14 } + +ifJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfJackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to an interface." + ::= { dot3IfMauBasicGroup 2 } + +ifJackEntry OBJECT-TYPE + SYNTAX IfJackEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { ifMauIfIndex, ifMauIndex, ifJackIndex } + ::= { ifJackTable 1 } + +IfJackEntry ::= SEQUENCE { + ifJackIndex INTEGER, + ifJackType IANAifJackType +} + +ifJackIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU." + ::= { ifJackEntry 1 } + +ifJackType OBJECT-TYPE + SYNTAX IANAifJackType + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { ifJackEntry 2 } + +dot3BroadMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 3 } + +broadMauBasicTable OBJECT-TYPE + SYNTAX SEQUENCE OF BroadMauBasicEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces." + ::= { dot3BroadMauBasicGroup 1 } + +broadMauBasicEntry OBJECT-TYPE + SYNTAX BroadMauBasicEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU." + INDEX { broadMauIfIndex, broadMauIndex } + ::= { broadMauBasicTable 1 } + +BroadMauBasicEntry ::= SEQUENCE { + broadMauIfIndex InterfaceIndex, + broadMauIndex INTEGER, + broadMauXmtRcvSplitType INTEGER, + broadMauXmtCarrierFreq INTEGER, + broadMauTranslationFreq INTEGER +} + +broadMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." +-- REFERENCE +-- "RFC 2863, ifIndex." + ::= { broadMauBasicEntry 1 } + +broadMauIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { broadMauBasicEntry 2 } + +broadMauXmtRcvSplitType OBJECT-TYPE + SYNTAX INTEGER { other(1), single(2), dual(3) } + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType." + ::= { broadMauBasicEntry 3 } + +broadMauXmtCarrierFreq OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.9, +-- aBroadbandFrequencies.xmitCarrierFrequency." + ::= { broadMauBasicEntry 4 } + +broadMauTranslationFreq OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.1.9, +-- aBroadbandFrequencies.translationFrequency." + ::= { broadMauBasicEntry 5 } + +dot3IfMauAutoNegGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 5 } + +ifMauAutoNegTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauAutoNegEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function." + ::= { dot3IfMauAutoNegGroup 1 } + +ifMauAutoNegEntry OBJECT-TYPE + SYNTAX IfMauAutoNegEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauAutoNegTable 1 } + +IfMauAutoNegEntry ::= SEQUENCE { + ifMauAutoNegAdminStatus INTEGER, + ifMauAutoNegRemoteSignaling INTEGER, + ifMauAutoNegConfig INTEGER, + ifMauAutoNegCapability INTEGER, + ifMauAutoNegCapAdvertised INTEGER, + ifMauAutoNegCapReceived INTEGER, + ifMauAutoNegRestart INTEGER, + ifMauAutoNegCapabilityBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapAdvertisedBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapReceivedBits IANAifMauAutoNegCapBits, + ifMauAutoNegRemoteFaultAdvertised INTEGER, + ifMauAutoNegRemoteFaultReceived INTEGER +} + +ifMauAutoNegAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, +-- and 30.6.1.2.2, acAutoNegAdminControl." + ::= { ifMauAutoNegEntry 1 } + +ifMauAutoNegRemoteSignaling OBJECT-TYPE + SYNTAX INTEGER { detected(1), notdetected(2) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.3, +-- aAutoNegRemoteSignaling." + ::= { ifMauAutoNegEntry 2 } + +ifMauAutoNegConfig OBJECT-TYPE + SYNTAX INTEGER { other(1), configuring(2), complete(3), + disabled(4), parallelDetectFail(5) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + ::= { ifMauAutoNegEntry 4 } + +ifMauAutoNegCapability OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.5, +-- aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 5 } + +ifMauAutoNegCapAdvertised OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.6, +-- aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 6 } + +ifMauAutoNegCapReceived OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.7, +-- aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 7 } + +ifMauAutoNegRestart OBJECT-TYPE + SYNTAX INTEGER { restart(1), norestart(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.2.1, +-- acAutoNegRestartAutoConfig." + ::= { ifMauAutoNegEntry 8 } + +ifMauAutoNegCapabilityBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.5, +-- aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 9 } + +ifMauAutoNegCapAdvertisedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.6, +-- aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 10 } + +ifMauAutoNegCapReceivedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.7, +-- aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 11 } + +ifMauAutoNegRemoteFaultAdvertised OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.6, +-- aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 12 } + +ifMauAutoNegRemoteFaultReceived OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs." +-- REFERENCE +-- "[IEEE802.3], 30.6.1.1.7, +-- aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 13 } + +mauModConf OBJECT IDENTIFIER + ::= { mauMod 1 } + +mauModCompls OBJECT IDENTIFIER + ::= { mauModConf 1 } + +mauModObjGrps OBJECT IDENTIFIER + ::= { mauModConf 2 } + +mauModNotGrps OBJECT IDENTIFIER + ::= { mauModConf 3 } + +rpMauJabberTrap TRAP-TYPE + ENTERPRISE snmpDot3MauMgt + VARIABLES { rpMauJabberState } +-- STATUS mandatory + DESCRIPTION + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= 1 + +ifMauJabberTrap TRAP-TYPE + ENTERPRISE snmpDot3MauMgt + VARIABLES { ifMauJabberState } +-- STATUS mandatory + DESCRIPTION + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them." +-- REFERENCE +-- "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= 2 + +mauRpGrpBasic OBJECT IDENTIFIER + ::= { mauModObjGrps 1 } + +-- mauRpGrpBasic OBJECT-GROUP +-- OBJECTS { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, +-- rpMauType, rpMauStatus, rpMauMediaAvailable, +-- rpMauMediaAvailableStateExits, rpMauJabberState, +-- rpMauJabberingStateEnters } +-- STATUS mandatory +-- DESCRIPTION +-- "Basic conformance group for MAUs attached to +-- repeater ports. This group is also the +-- conformance specification for RFC 1515 +-- implementations." +-- ::= { mauModObjGrps 1 } + +mauRpGrp100Mbs OBJECT IDENTIFIER + ::= { mauModObjGrps 2 } + +-- mauRpGrp100Mbs OBJECT-GROUP +-- OBJECTS { rpMauFalseCarriers } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- repeater ports with 100 Mb/s or greater +-- capability." +-- ::= { mauModObjGrps 2 } + +mauRpGrpJack OBJECT IDENTIFIER + ::= { mauModObjGrps 3 } + +-- mauRpGrpJack OBJECT-GROUP +-- OBJECTS { rpJackType } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- repeater ports with managed jacks." +-- ::= { mauModObjGrps 3 } + +mauIfGrpBasic OBJECT IDENTIFIER + ::= { mauModObjGrps 4 } + +-- mauIfGrpBasic OBJECT-GROUP +-- OBJECTS { ifMauIfIndex, ifMauIndex, ifMauType, ifMauStatus, +-- ifMauMediaAvailable, ifMauMediaAvailableStateExits, +-- ifMauJabberState, ifMauJabberingStateEnters } +-- STATUS mandatory +-- DESCRIPTION +-- "Basic conformance group for MAUs attached to +-- interfaces. This group also provides a +-- conformance specification for RFC 1515 +-- implementations." +-- ::= { mauModObjGrps 4 } + +mauIfGrp100Mbs OBJECT IDENTIFIER + ::= { mauModObjGrps 5 } + +-- mauIfGrp100Mbs OBJECT-GROUP +-- OBJECTS { ifMauFalseCarriers, ifMauTypeList, ifMauDefaultType, +-- ifMauAutoNegSupported } +-- STATUS deprecated +-- DESCRIPTION +-- "********* THIS GROUP IS DEPRECATED ********** +-- +-- Conformance group for MAUs attached to +-- interfaces with 100 Mb/s capability. +-- +-- This object group has been deprecated in favor +-- of mauIfGrpHighCapacity." +-- ::= { mauModObjGrps 5 } + +mauIfGrpJack OBJECT IDENTIFIER + ::= { mauModObjGrps 6 } + +-- mauIfGrpJack OBJECT-GROUP +-- OBJECTS { ifJackType } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- interfaces with managed jacks." +-- ::= { mauModObjGrps 6 } + +mauIfGrpAutoNeg OBJECT IDENTIFIER + ::= { mauModObjGrps 7 } + +-- mauIfGrpAutoNeg OBJECT-GROUP +-- OBJECTS { ifMauAutoNegAdminStatus, +-- ifMauAutoNegRemoteSignaling, ifMauAutoNegConfig, +-- ifMauAutoNegCapability, ifMauAutoNegCapAdvertised, +-- ifMauAutoNegCapReceived, ifMauAutoNegRestart } +-- STATUS deprecated +-- DESCRIPTION +-- "********* THIS GROUP IS DEPRECATED ********** +-- +-- Conformance group for MAUs attached to +-- interfaces with managed auto-negotiation. +-- +-- This object group has been deprecated in favor +-- of mauIfGrpAutoNeg2." +-- ::= { mauModObjGrps 7 } + +mauBroadBasic OBJECT IDENTIFIER + ::= { mauModObjGrps 8 } + +-- mauBroadBasic OBJECT-GROUP +-- OBJECTS { broadMauIfIndex, broadMauIndex, +-- broadMauXmtRcvSplitType, broadMauXmtCarrierFreq, +-- broadMauTranslationFreq } +-- STATUS deprecated +-- DESCRIPTION +-- "********* THIS GROUP IS DEPRECATED ********** +-- Conformance group for broadband MAUs attached +-- to interfaces. +-- +-- This object group is deprecated. There have +-- been no reported implementations of this group, +-- and it was felt to be unlikely that there will +-- be any future implementations." +-- ::= { mauModObjGrps 8 } + +mauIfGrpHighCapacity OBJECT IDENTIFIER + ::= { mauModObjGrps 9 } + +-- mauIfGrpHighCapacity OBJECT-GROUP +-- OBJECTS { ifMauFalseCarriers, ifMauTypeListBits, +-- ifMauDefaultType, ifMauAutoNegSupported } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- interfaces with 100 Mb/s or greater capability." +-- ::= { mauModObjGrps 9 } + +mauIfGrpAutoNeg2 OBJECT IDENTIFIER + ::= { mauModObjGrps 10 } + +-- mauIfGrpAutoNeg2 OBJECT-GROUP +-- OBJECTS { ifMauAutoNegAdminStatus, +-- ifMauAutoNegRemoteSignaling, ifMauAutoNegConfig, +-- ifMauAutoNegCapabilityBits, +-- ifMauAutoNegCapAdvertisedBits, +-- ifMauAutoNegCapReceivedBits, ifMauAutoNegRestart } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for MAUs attached to +-- interfaces with managed auto-negotiation." +-- ::= { mauModObjGrps 10 } + +mauIfGrpAutoNeg1000Mbps OBJECT IDENTIFIER + ::= { mauModObjGrps 11 } + +-- mauIfGrpAutoNeg1000Mbps OBJECT-GROUP +-- OBJECTS { ifMauAutoNegRemoteFaultAdvertised, +-- ifMauAutoNegRemoteFaultReceived } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance group for 1000Mbps MAUs attached to +-- interfaces with managed auto-negotiation." +-- ::= { mauModObjGrps 11 } + +mauIfGrpHCStats OBJECT IDENTIFIER + ::= { mauModObjGrps 12 } + +-- mauIfGrpHCStats OBJECT-GROUP +-- OBJECTS { ifMauHCFalseCarriers } +-- STATUS mandatory +-- DESCRIPTION +-- "Conformance for high capacity statistics for +-- MAUs attached to interfaces." +-- ::= { mauModObjGrps 12 } + +rpMauNotifications OBJECT IDENTIFIER + ::= { mauModNotGrps 1 } + +-- rpMauNotifications NOTIFICATION-GROUP +-- NOTIFICATIONS { rpMauJabberTrap } +-- STATUS mandatory +-- DESCRIPTION +-- "Notifications for repeater MAUs." +-- ::= { mauModNotGrps 1 } + +ifMauNotifications OBJECT IDENTIFIER + ::= { mauModNotGrps 2 } + +-- ifMauNotifications NOTIFICATION-GROUP +-- NOTIFICATIONS { ifMauJabberTrap } +-- STATUS mandatory +-- DESCRIPTION +-- "Notifications for interface MAUs." +-- ::= { mauModNotGrps 2 } + +mauModRpCompl OBJECT IDENTIFIER + ::= { mauModCompls 1 } + +-- mauModRpCompl MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "******** THIS COMPLIANCE IS DEPRECATED ******** +-- Compliance for MAUs attached to repeater +-- ports. +-- +-- This compliance is deprecated and replaced by +-- mauModRpCompl2, which corrects an oversight by +-- allowing rpMauStatus to be implemented +-- read-only." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauRpGrpBasic } + +-- GROUP mauRpGrp100Mbs +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s or +-- greater capability." + +-- GROUP mauRpGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP rpMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to repeater ports." + +-- ::= { mauModCompls 1 } + +mauModIfCompl OBJECT IDENTIFIER + ::= { mauModCompls 2 } + +-- mauModIfCompl MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "******** THIS COMPLIANCE IS DEPRECATED ******** +-- +-- Compliance for MAUs attached to interfaces. +-- This compliance is deprecated and replaced by +-- mauModIfCompl2." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauIfGrpBasic } + +-- GROUP mauIfGrp100Mbs +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s +-- capability." + +-- GROUP mauIfGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP mauIfGrpAutoNeg +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that support managed +-- auto-negotiation." + +-- GROUP mauBroadBasic +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for broadband MAUs." + +-- GROUP ifMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to interfaces." + +-- ::= { mauModCompls 2 } + +mauModIfCompl2 OBJECT IDENTIFIER + ::= { mauModCompls 3 } + +-- mauModIfCompl2 MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "******** THIS COMPLIANCE IS DEPRECATED ******** +-- +-- Compliance for MAUs attached to interfaces. +-- +-- This compliance is deprecated and replaced by +-- mauModIfCompl3." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauIfGrpBasic } + +-- GROUP mauIfGrpHighCapacity +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s +-- or greater capability." + +-- GROUP mauIfGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP mauIfGrpAutoNeg2 +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that support managed +-- auto-negotiation." + +-- GROUP mauIfGrpAutoNeg1000Mbps +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that have 1000Mb/s or greater +-- capability and support managed +-- auto-negotiation." + +-- GROUP ifMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to interfaces." + +-- OBJECT ifMauStatus +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- ::= { mauModCompls 3 } + +mauModRpCompl2 OBJECT IDENTIFIER + ::= { mauModCompls 4 } + +-- mauModRpCompl2 MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "Compliance for MAUs attached to repeater +-- ports. +-- +-- Note that compliance with this compliance +-- statement requires compliance with the +-- snmpRptrModCompl MODULE-COMPLIANCE statement of +-- the SNMP-REPEATER-MIB (RFC 2108)." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauRpGrpBasic } + +-- GROUP mauRpGrp100Mbs +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s or +-- greater capability." + +-- GROUP mauRpGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP rpMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to repeater ports." + +-- OBJECT rpMauStatus +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- ::= { mauModCompls 4 } + +mauModIfCompl3 OBJECT IDENTIFIER + ::= { mauModCompls 5 } + +-- mauModIfCompl3 MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "Compliance for MAUs attached to interfaces. +-- +-- Note that compliance with this compliance +-- statement requires compliance with the +-- ifCompliance3 MODULE-COMPLIANCE statement of the +-- IF-MIB (RFC 2863) and the dot3Compliance2 +-- MODULE-COMPLIANCE statement of the +-- EtherLike-MIB (RFC3635)." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { mauIfGrpBasic } + +-- GROUP mauIfGrpHighCapacity +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have 100Mb/s +-- or greater capability." + +-- GROUP mauIfGrpHCStats +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that have 1000Mb/s capacity, and +-- is recommended for MAUs that have 100Mb/s +-- capacity." + +-- GROUP mauIfGrpJack +-- DESCRIPTION +-- "Implementation of this optional group is +-- recommended for MAUs that have one or more +-- external jacks." + +-- GROUP mauIfGrpAutoNeg2 +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that support managed +-- auto-negotiation." + +-- GROUP mauIfGrpAutoNeg1000Mbps +-- DESCRIPTION +-- "Implementation of this group is mandatory +-- for MAUs that have 1000Mb/s or greater +-- capability and support managed +-- auto-negotiation." + +-- GROUP ifMauNotifications +-- DESCRIPTION +-- "Implementation of this group is recommended +-- for MAUs attached to interfaces." + +-- OBJECT ifMauStatus +-- MIN-ACCESS read-only +-- DESCRIPTION +-- "Write access is not required." + +-- ::= { mauModCompls 5 } + +END -- end of module MAU-MIB. diff --git a/test/dumps/smiv1/Makefile.am b/test/dumps/smiv1/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/smiv1/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/smiv1/Makefile.in b/test/dumps/smiv1/Makefile.in new file mode 100644 index 0000000..7a50c8b --- /dev/null +++ b/test/dumps/smiv1/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/smiv1 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/smiv1/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/smiv1/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/smiv1/RMON2-MIB b/test/dumps/smiv1/RMON2-MIB new file mode 100644 index 0000000..5bfbefa --- /dev/null +++ b/test/dumps/smiv1/RMON2-MIB @@ -0,0 +1,5676 @@ +-- +-- This SMIv1 module has been generated by smidump 0.4.5. Do not edit. +-- + +RMON2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + ifIndex + FROM IF-MIB + OBJECT-TYPE + FROM RFC-1212 + Counter, Gauge, IpAddress, TimeTicks + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + OwnerString, channelEntry, etherStatsEntry, filter, filterEntry, + history, historyControlEntry, hostControlEntry, hosts, matrix, + matrixControlEntry, statistics + FROM RMON-MIB + DisplayString, RowStatus, TimeStamp + FROM SNMPv2-TC + ringStationControlEntry, sourceRoutingStatsEntry, tokenRing, + tokenRingMLStatsEntry, tokenRingPStatsEntry + FROM TOKEN-RING-RMON-MIB; + +rmon OBJECT IDENTIFIER + ::= { mib-2 16 } + +-- rmon MODULE-IDENTITY +-- LAST-UPDATED "200605020000Z" +-- ORGANIZATION +-- "IETF RMON MIB Working Group" +-- CONTACT-INFO +-- "Author: +-- Steve Waldbusser +-- Phone: +1-650-948-6500 +-- Fax : +1-650-745-0671 +-- Email: waldbusser@nextbeacon.com +-- +-- Working Group Chair: +-- Andy Bierman +-- E-mail: ietf@andybierman.com +-- +-- Working Group Mailing List: +-- To subscribe send email to: " +-- DESCRIPTION +-- "The MIB module for managing remote monitoring +-- device implementations. This MIB module +-- extends the architecture introduced in the original +-- RMON MIB as specified in RFC 2819. +-- +-- Copyright (C) The Internet Society (2006). This version of +-- this MIB module is part of RFC 4502; see the RFC itself for +-- full legal notices." +-- REVISION "200605020000Z" +-- DESCRIPTION +-- "This version updates the proposed-standard version of the +-- RMON2 MIB (published as RFC 2021) by adding 2 new +-- enumerations to the nlMatrixTopNControlRateBase object and +-- 4 new enumerations to the alMatrixTopNControlRateBase object. +-- These new enumerations support the creation of high-capacity +-- topN reports in the High Capacity RMON MIB [RFC3273]. +-- +-- Additionally, the following objects have been deprecated, as +-- they have not had enough independent implementations to +-- demonstrate interoperability to meet the requirements of a +-- Draft Standard: +-- +-- probeDownloadFile +-- probeDownloadTFTPServer +-- probeDownloadAction +-- probeDownloadStatus +-- +-- +-- +-- serialMode +-- serialProtocol +-- serialTimeout +-- serialModemInitString +-- serialModemHangUpString +-- serialModemConnectResp +-- serialModemNoConnectResp +-- serialDialoutTimeout +-- serialStatus +-- serialConnectDestIpAddress +-- serialConnectType +-- serialConnectDialString +-- serialConnectSwitchConnectSeq +-- serialConnectSwitchDisconnectSeq +-- serialConnectSwitchResetSeq +-- serialConnectOwner +-- serialConnectStatus +-- netConfigIPAddress +-- netConfigSubnetMask +-- netConfigStatus +-- netDefaultGateway +-- tokenRingMLStats2DroppedFrames +-- tokenRingMLStats2CreateTime +-- tokenRingPStats2DroppedFrames +-- tokenRingPStats2CreateTime +-- ringStationControl2DroppedFrames +-- ringStationControl2CreateTime +-- sourceRoutingStats2DroppedFrames +-- sourceRoutingStats2CreateTime +-- trapDestIndex +-- trapDestCommunity +-- trapDestProtocol +-- trapDestAddress +-- trapDestOwner +-- trapDestStatus +-- +-- In addition, two corrections were made. The LastCreateTime +-- Textual Convention had been defined with a base type of +-- another textual convention, which isn't allowed in SMIv2. The +-- definition has been modified to use TimeTicks as the base +-- type. +-- +-- Further, the SerialConfigEntry SEQUENCE definition included +-- sub-typing information that is not allowed in SMIv2. This +-- information has been deleted. Ranges were added to a number of +-- objects and textual-conventions to constrain their maximum +-- (and sometimes minimum) sizes. The addition of these ranges +-- documents existing practice for these objects. These objects +-- +-- +-- +-- are: +-- ControlString +-- protocolDirID +-- protocolDirParameters +-- addressMapNetworkAddress +-- nlHostAddress +-- nlMatrixSDSourceAddress +-- nlMatrixSDDestAddress +-- nlMatrixDSSourceAddress +-- nlMatrixDSDestAddress +-- nlMatrixTopNSourceAddress +-- nlMatrixTopNDestAddress +-- alHostEntry +-- alMatrixSDEntry +-- alMatrixDSEntry +-- alMatrixTopNSourceAddress +-- alMatrixTopNDestAddress +-- +-- Finally, the TimeFilter TC has been updated to encourage agent +-- implementations that allow a MIB walk to behave well even when +-- performed by an application that is not aware of the special +-- TimeFilter semantics." +-- REVISION "200207080000Z" +-- DESCRIPTION +-- "Added new enumerations to support the High-Capacity RMON +-- MIB as defined in RFC 3273. Also fixed some typos and +-- added clarifications." +-- REVISION "199605270000Z" +-- DESCRIPTION +-- "Original version. Published as RFC 2021." +-- ::= { mib-2 16 } + + +ZeroBasedCounter32 ::= + Gauge + +-- ZeroBasedCounter32 ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- DESCRIPTION +-- "This TC describes an object that 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 Gauge + +LastCreateTime ::= + TimeTicks + +-- LastCreateTime ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- DESCRIPTION +-- "This TC describes an object that stores the value of the +-- sysUpTime object at 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. +-- +-- If sysUpTime is reset to zero as a result of a re- +-- initialization of the network management (sub)system, then +-- the values of all LastCreateTime objects are also reset. +-- However, after approximately 497 days without a re- +-- initialization, the sysUpTime object will reach 2^^32-1 and +-- then increment to zero; in this case, existing values +-- of TimeStamp objects do not change. This can lead to +-- ambiguities in the value of TimeStamp objects." +-- SYNTAX TimeTicks + +TimeFilter ::= + TimeTicks + +-- TimeFilter ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- DESCRIPTION +-- "To be used for the index to a table. Allows an application +-- to download only those rows changed since a particular time. +-- +-- +-- +-- Note that this is not a history mechanism. Only current values +-- of underlying objects are returned; saved instance values +-- associated with particular values of sysUpTime are not. +-- +-- An entry is considered changed if the value of any object in the +-- entry changes, if the row is created, or if any object in the +-- entry is created or deleted. Note that deleted entries cannot +-- be detected or downloaded. +-- +-- A time-filtered conceptual table is created by inserting a +-- single object of SYNTAX TimeFilter as the first INDEX component +-- in a copy of an existing basic conceptual table (i.e., any +-- SEQUENCE without a TimeFilter INDEX component). Thus, for +-- each conceptual entry 'I' in the basic table, there exists N +-- conceptual entries in the time-filtered version, indexed N.I, +-- where 'N' is equal to the value of sysUpTime. +-- +-- When an application retrieves conceptual instances from a +-- time-filtered table, and an INDEX value is provided for the +-- TimeFilter INDEX component 'N', the agent will only consider +-- returning basic conceptual entries (e.g., 'fooColumn.N.I') if +-- any column within the basic conceptual entry has changed since +-- sysUpTime 'N'. If not, the basic conceptual entry will +-- be ignored for the particular retrieval operation. +-- +-- When sysUpTime is equal to zero, this table shall be empty. +-- +-- One conceptual entry exists for each past value of sysUpTime, +-- except that the whole table is purged should sysUpTime wrap. +-- +-- As an entry in a time-filtered table is updated (i.e., one of +-- the columns in the basic conceptual table is changed), new +-- conceptual entries are also created in the time-filtered version +-- (which still shares the now updated object values with all other +-- instances). The number of unique time-filtered instances that +-- are created is determined by the value of sysUpTime at which the +-- basic entry was last updated. One unique instance will exist +-- for each value of sysUpTime at the last update time for the row. +-- However, a new TimeFilter index instance is created for each new +-- sysUpTime value. The TimeFilter index values not associated +-- with entry updates are called duplicate time-filtered instances. +-- +-- After some deployment experience, it has been determined that +-- a time-filtered table is more efficient if the agent +-- stops a MIB walk operation by skipping over rows with a +-- TimeFilter index value higher than the value in the received +-- GetNext/GetBulk request. That is, instead of incrementing a +-- TimeFilter index value, the agent will continue to the next +-- +-- +-- +-- object or table. As a consequence, GetNext or GetBulk +-- operations will provide only one pass through a time-filtered +-- table. +-- +-- It is suggested that an agent implement a time-filtered table +-- in this manner to improve performance and avoid a MIB walk +-- getting stuck in time-filtered tables. It is, however, still +-- acceptable for an agent to implement a time-filtered table in +-- the traditional manner (i.e., every conceptual time-filtered +-- instance is returned in GetNext and GetBulk PDU responses), and +-- management applications must be able to deal with such +-- traditional implementations. +-- +-- See the appendix for further discussion of this textual +-- convention. +-- +-- The following example is provided to demonstrate TimeFilter +-- behavior: +-- +-- Consider the following basic conceptual table, basicFooTable. +-- (Note that the basic version of a time-filtered table may not +-- actually be defined.) +-- +-- basicFooTable: +-- +-- basicFooTable ... +-- INDEX { fooIndex } +-- +-- BasicFooEntry { +-- fooIndex Integer32, +-- fooCounts Counter32 +-- } +-- +-- For this example, the basicFooTable contains two static +-- conceptual entries (fooIndex equals '1' and '2'), created at +-- time zero. It also contains one dynamic conceptual entry +-- (fooIndex equals '3'), which is created at time '3' and deleted +-- at time '7'. +-- +-- The time-filtered version of the basicFooTable could be defined +-- as follows: +-- +-- FooTable: +-- +-- fooTable ... +-- INDEX { fooTimeMark, fooIndex } +-- +-- FooEntry { +-- +-- +-- +-- fooTimeMark TimeFilter, +-- fooIndex Integer32, +-- fooCounts Counter32 +-- } +-- +-- +-- Note that entries exist in the time-filtered conceptual table +-- only if they actually exist in the underlying (basic) table. +-- +-- For this example, the fooTable will have three underlying +-- basic entries (fooIndex == 1, 2, and 3), with the following +-- activity (for sysUpTime equal 0 to 9): +-- +-- - fooEntry.N.1 is created at time '0' and most recently +-- updated at time '6' to the value '5'. +-- - fooEntry.N.2 is created at time '0' and most recently +-- updated at time '8' to the value '9'. +-- - fooEntry.N.3 is created at time '3', updated at time '5' +-- to the value '17', and deleted at time '7'. +-- +-- The following tables show the values that would be returned for +-- MIB walk operations with various TimeFilter values, done at +-- different times. An application issues a retrieval request at +-- time 'T', with a TimeFilter value, 'N' (typically set to a lower +-- value, such as the value of sysUpTime at the last polling cycle). +-- +-- The following values would be returned in a MIB walk of +-- fooCounts.N if T equals '0' and N equals '0': +-- +-- fooCounts.N.I Value +-- ========================== +-- fooCounts.0.1 0 +-- fooCounts.0.2 0 +-- +-- Note that nothing is returned for fooCounts.0.3, since that +-- entry does not exist at sysUpTime equals '0'. +-- +-- The following values would be returned in a full (traditional) MIB +-- walk of fooCounts.N if T equals '3' and N equals '0': +-- +-- fooCounts.N.I Value +-- ======================= +-- fooCounts.0.1 0 +-- fooCounts.0.2 0 +-- fooCounts.0.3 0 +-- fooCounts.1.3 0 +-- fooCounts.2.3 0 +-- fooCounts.3.3 0 +-- +-- +-- +-- Note that there are no instances for T equals 1 or 2 for the +-- first two values of N, as these entries did not change +-- since they were created at time '0'. +-- +-- Note that the current value for 'fooCounts.N.3' is returned +-- here, even for values of N less than '3' (when the entry was +-- created). The agent only considers the current existence of an +-- entry in the TimeFilter algorithm, not the time when the entry +-- was created. +-- +-- Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', +-- and 'fooCounts.2.3' are duplicates and can be suppressed by the +-- agent in a MIB walk. +-- +-- The following values would be returned in a full (traditional) +-- MIB walk of fooCounts.N if T equals '6' and N equals '3': +-- +-- fooCounts.N.I Value +-- ======================= +-- fooCounts.3.1 5 +-- fooCounts.3.3 17 +-- fooCounts.4.1 5 +-- fooCounts.4.3 17 +-- fooCounts.5.1 5 +-- fooCounts.5.3 17 +-- fooCounts.6.1 5 +-- +-- Note that no instances for entry 'fooCounts.N.2' are returned, +-- since it has not changed since time '3'. +-- +-- Note that all instances except 'fooCounts.5.3' and +-- 'fooCounts.6.1' are duplicates and can be suppressed by the +-- agent in a MIB walk. +-- +-- The following values would be returned in a full (traditional) +-- MIB walk of fooCounts.N if T equals '9' and N equals '6': +-- +-- fooCounts.N.I Value +-- ======================= +-- fooCounts.6.1 5 +-- fooCounts.6.2 9 +-- fooCounts.7.2 9 +-- fooCounts.8.2 9 +-- +-- Note that no instances for entry 'fooCounts.N.3' are returned, +-- since it was deleted at time '7'. +-- +-- Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' +-- +-- +-- +-- are duplicates and can be suppressed by the agent in a MIB +-- walk." +-- SYNTAX TimeTicks + +DataSource ::= + OBJECT IDENTIFIER + +-- DataSource ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- 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 [RFC2863], 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 + +ControlString ::= + OCTET STRING (SIZE(0..255)) + +-- ControlString ::= TEXTUAL-CONVENTION +-- STATUS mandatory +-- 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 store 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, i.e., +-- 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 OCTET STRING (SIZE(0..255)) + +etherStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF EtherStats2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { statistics 4 } + +etherStats2Entry OBJECT-TYPE + SYNTAX EtherStats2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { etherStatsIndex } +-- AUGMENTS { etherStatsEntry } + ::= { etherStats2Table 1 } + +EtherStats2Entry ::= SEQUENCE { + etherStatsDroppedFrames Counter, + etherStatsCreateTime LastCreateTime +} + +etherStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS mandatory + 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 } + +tokenRingMLStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { tokenRingMLStatsIndex } +-- AUGMENTS { tokenRingMLStatsEntry } + ::= { tokenRingMLStats2Table 1 } + +TokenRingMLStats2Entry ::= SEQUENCE { + tokenRingMLStatsDroppedFrames Counter, + tokenRingMLStatsCreateTime LastCreateTime +} + +tokenRingMLStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS deprecated + 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 + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 6 } + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { tokenRingPStatsIndex } +-- AUGMENTS { tokenRingPStatsEntry } + ::= { tokenRingPStats2Table 1 } + +TokenRingPStats2Entry ::= SEQUENCE { + tokenRingPStatsDroppedFrames Counter, + tokenRingPStatsCreateTime LastCreateTime +} + +tokenRingPStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS deprecated + 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 } + +historyControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF HistoryControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { history 5 } + +historyControl2Entry OBJECT-TYPE + SYNTAX HistoryControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { historyControlIndex } +-- AUGMENTS { historyControlEntry } + ::= { historyControl2Table 1 } + +HistoryControl2Entry ::= SEQUENCE { + historyControlDroppedFrames Counter +} + +historyControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { hosts 4 } + +hostControl2Entry OBJECT-TYPE + SYNTAX HostControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { hostControlIndex } +-- AUGMENTS { hostControlEntry } + ::= { hostControl2Table 1 } + +HostControl2Entry ::= SEQUENCE { + hostControlDroppedFrames Counter, + hostControlCreateTime LastCreateTime +} + +hostControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { matrix 4 } + +matrixControl2Entry OBJECT-TYPE + SYNTAX MatrixControl2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { matrixControlIndex } +-- AUGMENTS { matrixControlEntry } + ::= { matrixControl2Table 1 } + +MatrixControl2Entry ::= SEQUENCE { + matrixControlDroppedFrames Counter, + matrixControlCreateTime LastCreateTime +} + +matrixControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + ::= { filter 3 } + +channel2Entry OBJECT-TYPE + SYNTAX Channel2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { channelIndex } +-- AUGMENTS { channelEntry } + ::= { channel2Table 1 } + +Channel2Entry ::= SEQUENCE { + channelDroppedFrames Counter, + channelCreateTime LastCreateTime +} + +channelDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS mandatory + 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 } + +filter2Table OBJECT-TYPE + SYNTAX SEQUENCE OF Filter2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + ::= { filter 4 } + +filter2Entry OBJECT-TYPE + SYNTAX Filter2Entry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "Provides a variable-length packet filter feature to the + RMON-1 filter table." + INDEX { filterIndex } +-- AUGMENTS { filterEntry } + ::= { filter2Table 1 } + +Filter2Entry ::= SEQUENCE { + filterProtocolDirDataLocalIndex INTEGER, + filterProtocolDirLocalIndex INTEGER +} + +filterProtocolDirDataLocalIndex OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + 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 INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + 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 } + +ringStationControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControl2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { ringStationControlIfIndex } +-- AUGMENTS { ringStationControlEntry } + ::= { ringStationControl2Table 1 } + +RingStationControl2Entry ::= SEQUENCE { + ringStationControlDroppedFrames Counter, + ringStationControlCreateTime LastCreateTime +} + +ringStationControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS deprecated + 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 + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1." + INDEX { sourceRoutingStatsIfIndex } +-- AUGMENTS { sourceRoutingStatsEntry } + ::= { sourceRoutingStats2Table 1 } + +SourceRoutingStats2Entry ::= SEQUENCE { + sourceRoutingStatsDroppedFrames Counter, + sourceRoutingStatsCreateTime LastCreateTime +} + +sourceRoutingStatsDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS deprecated + 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 } + +protocolDir OBJECT IDENTIFIER + ::= { rmon 11 } + +protocolDirLastChange OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig." + ::= { protocolDir 1 } + +protocolDirTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDirEntry + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex INTEGER, + protocolDirDescr DisplayString, + protocolDirType OCTET STRING, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..128)) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner 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 that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 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 + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether 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 (SIZE(1..32)) + ACCESS not-accessible + STATUS mandatory + 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 INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + 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 that the protocol directory + entry is deleted." + ::= { protocolDirEntry 3 } + +protocolDirDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(1..64)) + ACCESS read-write + STATUS mandatory + 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 +-- { extensible(0), addressRecognitionCapable(1) } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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) } + ACCESS read-write + STATUS mandatory + 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) } + ACCESS read-write + STATUS mandatory + 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, 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) } + ACCESS read-write + STATUS mandatory + 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 + 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, 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 + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDirEntry 9 } + +protocolDirStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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 } + +protocolDist OBJECT IDENTIFIER + ::= { rmon 12 } + +protocolDistControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistControlEntry + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + protocolDistControlDataSource DataSource, + protocolDistControlDroppedFrames Counter, + protocolDistControlCreateTime LastCreateTime, + protocolDistControlOwner OwnerString, + protocolDistControlStatus RowStatus +} + +protocolDistControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A unique index for this protocolDistControlEntry." + ::= { protocolDistControlEntry 1 } + +protocolDistControlDataSource OBJECT-TYPE + SYNTAX DataSource + ACCESS read-write + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { protocolDistControlEntry 5 } + +protocolDistControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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 } + +protocolDistStatsTable OBJECT-TYPE + SYNTAX SEQUENCE OF ProtocolDistStatsEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry is made in this table for every protocol in the + protocolDirTable that 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 + ACCESS not-accessible + STATUS mandatory + 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 and 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 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of packets of this protocol type received + without errors. 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 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol." + ::= { protocolDistStatsEntry 2 } + +addressMap OBJECT IDENTIFIER + ::= { rmon 13 } + +addressMapInserts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table to control the collection of mappings from network + layer address to physical address to interface. + + 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 + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + addressMapControlDataSource DataSource, + addressMapControlDroppedFrames Counter, + addressMapControlOwner OwnerString, + addressMapControlStatus RowStatus +} + +addressMapControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A unique index for this entry in the addressMapControlTable." + ::= { addressMapControlEntry 1 } + +addressMapControlDataSource OBJECT-TYPE + SYNTAX DataSource + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The source of data for this addressMapControlEntry." + ::= { addressMapControlEntry 2 } + +addressMapControlDroppedFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { addressMapControlEntry 4 } + +addressMapControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A table of mappings from network layer address to physical + address to interface. + + 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 + ACCESS not-accessible + STATUS mandatory + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { addressMapEntry 1 } + +addressMapNetworkAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 [RFC2863], 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 [RFC2108], 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 that 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 } + +nlHost OBJECT IDENTIFIER + ::= { rmon 14 } + +hlHostControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlHostControlEntry + ACCESS not-accessible + STATUS mandatory + 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 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 + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + hlHostControlDataSource DataSource, + hlHostControlNlDroppedFrames Counter, + hlHostControlNlInserts Counter, + hlHostControlNlDeletes Counter, + hlHostControlNlMaxDesiredEntries INTEGER, + hlHostControlAlDroppedFrames Counter, + hlHostControlAlInserts Counter, + hlHostControlAlDeletes Counter, + hlHostControlAlMaxDesiredEntries INTEGER, + hlHostControlOwner OwnerString, + hlHostControlStatus RowStatus +} + +hlHostControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS read-write + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + 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 + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlHostControlEntry 11 } + +hlHostControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations." + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlHostEntry 1 } + +nlHostAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that 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 + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 } + +nlMatrix OBJECT IDENTIFIER + ::= { rmon 15 } + +hlMatrixControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF HlMatrixControlEntry + ACCESS not-accessible + STATUS mandatory + 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 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1" + INDEX { hlMatrixControlIndex } + ::= { hlMatrixControlTable 1 } + +HlMatrixControlEntry ::= SEQUENCE { + hlMatrixControlIndex INTEGER, + hlMatrixControlDataSource DataSource, + hlMatrixControlNlDroppedFrames Counter, + hlMatrixControlNlInserts Counter, + hlMatrixControlNlDeletes Counter, + hlMatrixControlNlMaxDesiredEntries INTEGER, + hlMatrixControlAlDroppedFrames Counter, + hlMatrixControlAlInserts Counter, + hlMatrixControlAlDeletes Counter, + hlMatrixControlAlMaxDesiredEntries INTEGER, + hlMatrixControlOwner OwnerString, + hlMatrixControlStatus RowStatus +} + +hlMatrixControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS read-write + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 Counter + ACCESS read-only + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + 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 INTEGER (-1..2147483647) + ACCESS read-write + STATUS mandatory + 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 + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { hlMatrixControlEntry 11 } + +hlMatrixControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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 alMatrixDSTable + shall be deleted by the agent." + ::= { hlMatrixControlEntry 12 } + +nlMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of traffic matrix entries that 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 + ACCESS not-accessible + STATUS mandatory + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixSDEntry 1 } + +nlMatrixSDSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + 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 (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 octets in packets that + contained errors. + + Note that 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 + ACCESS read-only + STATUS mandatory + 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 } + +nlMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of traffic matrix entries that 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 + ACCESS not-accessible + STATUS mandatory + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { nlMatrixDSEntry 1 } + +nlMatrixDSSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + 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 (SIZE(1..255)) + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 octets in packets that + contained errors. + + Note that 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + nlMatrixTopNControlMatrixIndex INTEGER, + nlMatrixTopNControlRateBase INTEGER, + nlMatrixTopNControlTimeRemaining INTEGER, + nlMatrixTopNControlGeneratedReports Counter, + nlMatrixTopNControlDuration INTEGER, + nlMatrixTopNControlRequestedSize INTEGER, + nlMatrixTopNControlGrantedSize INTEGER, + nlMatrixTopNControlStartTime TimeStamp, + nlMatrixTopNControlOwner OwnerString, + nlMatrixTopNControlStatus RowStatus +} + +nlMatrixTopNControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { nlMatrixTopNControlEntry 1 } + +nlMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The nlMatrix[SD/DS] table for which a topN 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), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object." + ::= { nlMatrixTopNControlEntry 3 } + +nlMatrixTopNControlTimeRemaining OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { nlMatrixTopNControlEntry 5 } + +nlMatrixTopNControlDuration OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + 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 INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + 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 possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { nlMatrixTopNControlEntry 7 } + +nlMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-only + STATUS mandatory + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available." + ::= { nlMatrixTopNControlEntry 8 } + +nlMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this topN 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 whether a report was missed." + ::= { nlMatrixTopNControlEntry 9 } + +nlMatrixTopNControlOwner 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." + ::= { nlMatrixTopNControlEntry 10 } + +nlMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + nlMatrixTopNProtocolDirLocalIndex INTEGER, + nlMatrixTopNSourceAddress OCTET STRING, + nlMatrixTopNDestAddress OCTET STRING, + nlMatrixTopNPktRate Gauge, + nlMatrixTopNReversePktRate Gauge, + nlMatrixTopNOctetRate Gauge, + nlMatrixTopNReverseOctetRate Gauge +} + +nlMatrixTopNIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + 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 INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { nlMatrixTopNEntry 2 } + +nlMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS read-only + STATUS mandatory + 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 (SIZE(1..255)) + ACCESS read-only + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS mandatory + 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 } + +alHost OBJECT IDENTIFIER + ::= { rmon 16 } + +alHostTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlHostEntry + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alHostEntry 1 } + +alHostInPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 octets in packets that + contained errors. + + Note that 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 + ACCESS read-only + STATUS mandatory + 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 octets in packets that + contained errors. + + Note that 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 + ACCESS read-only + STATUS mandatory + 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 } + +alMatrix OBJECT IDENTIFIER + ::= { rmon 17 } + +alMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of application traffic matrix entries that 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 + ACCESS not-accessible + STATUS mandatory + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixSDTimeMark, + protocolDirLocalIndex, nlMatrixSDSourceAddress, + nlMatrixSDDestAddress, protocolDirLocalIndex } + ::= { alMatrixSDTable 1 } + +AlMatrixSDEntry ::= SEQUENCE { + alMatrixSDTimeMark TimeFilter, + alMatrixSDPkts ZeroBasedCounter32, + alMatrixSDOctets ZeroBasedCounter32, + alMatrixSDCreateTime LastCreateTime +} + +alMatrixSDTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixSDEntry 1 } + +alMatrixSDPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 octets + in packets that contained errors. + + Note that 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 + ACCESS read-only + STATUS mandatory + 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 } + +alMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of application traffic matrix entries that 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 + ACCESS not-accessible + STATUS mandatory + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { hlMatrixControlIndex, alMatrixDSTimeMark, + protocolDirLocalIndex, nlMatrixDSDestAddress, + nlMatrixDSSourceAddress, protocolDirLocalIndex } + ::= { alMatrixDSTable 1 } + +AlMatrixDSEntry ::= SEQUENCE { + alMatrixDSTimeMark TimeFilter, + alMatrixDSPkts ZeroBasedCounter32, + alMatrixDSOctets ZeroBasedCounter32, + alMatrixDSCreateTime LastCreateTime +} + +alMatrixDSTimeMark OBJECT-TYPE + SYNTAX TimeFilter + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works." + ::= { alMatrixDSEntry 1 } + +alMatrixDSPkts OBJECT-TYPE + SYNTAX ZeroBasedCounter32 + ACCESS read-only + STATUS mandatory + 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 + ACCESS read-only + STATUS mandatory + 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 octets + in packets that contained errors. + + Note that 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 + ACCESS read-only + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + alMatrixTopNControlMatrixIndex INTEGER, + alMatrixTopNControlRateBase INTEGER, + alMatrixTopNControlTimeRemaining INTEGER, + alMatrixTopNControlGeneratedReports Counter, + alMatrixTopNControlDuration INTEGER, + alMatrixTopNControlRequestedSize INTEGER, + alMatrixTopNControlGrantedSize INTEGER, + alMatrixTopNControlStartTime TimeStamp, + alMatrixTopNControlOwner OwnerString, + alMatrixTopNControlStatus RowStatus +} + +alMatrixTopNControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface." + ::= { alMatrixTopNControlEntry 1 } + +alMatrixTopNControlMatrixIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The alMatrix[SD/DS] table for which a topN 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), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets 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 INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + 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 Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of reports that have been generated by this entry." + ::= { alMatrixTopNControlEntry 5 } + +alMatrixTopNControlDuration OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + 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 INTEGER (0..2147483647) + ACCESS read-write + STATUS mandatory + 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 possible for the particular probe + implementation and available resources." + DEFVAL { 150 } + ::= { alMatrixTopNControlEntry 7 } + +alMatrixTopNControlGrantedSize OBJECT-TYPE + SYNTAX INTEGER (0..2147483647) + ACCESS read-only + STATUS mandatory + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available." + ::= { alMatrixTopNControlEntry 8 } + +alMatrixTopNControlStartTime OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime when this topN 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 whether a report was missed." + ::= { alMatrixTopNControlEntry 9 } + +alMatrixTopNControlOwner 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." + ::= { alMatrixTopNControlEntry 10 } + +alMatrixTopNControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + alMatrixTopNProtocolDirLocalIndex INTEGER, + alMatrixTopNSourceAddress OCTET STRING, + alMatrixTopNDestAddress OCTET STRING, + alMatrixTopNAppProtocolDirLocalIndex INTEGER, + alMatrixTopNPktRate Gauge, + alMatrixTopNReversePktRate Gauge, + alMatrixTopNOctetRate Gauge, + alMatrixTopNReverseOctetRate Gauge +} + +alMatrixTopNIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + 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 INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address." + ::= { alMatrixTopNEntry 2 } + +alMatrixTopNSourceAddress OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(1..255)) + ACCESS read-only + STATUS mandatory + 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 (SIZE(1..255)) + ACCESS read-only + STATUS mandatory + 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 INTEGER (1..2147483647) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of the protocol counted by this matrix entry." + ::= { alMatrixTopNEntry 5 } + +alMatrixTopNPktRate OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS mandatory + 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 Gauge + ACCESS read-only + STATUS mandatory + 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 } + +usrHistory OBJECT IDENTIFIER + ::= { rmon 18 } + +usrHistoryControlTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryControlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 1 } + +usrHistoryControlEntry OBJECT-TYPE + SYNTAX UsrHistoryControlEntry + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + usrHistoryControlObjects INTEGER, + usrHistoryControlBucketsRequested INTEGER, + usrHistoryControlBucketsGranted INTEGER, + usrHistoryControlInterval INTEGER, + usrHistoryControlOwner OwnerString, + usrHistoryControlStatus RowStatus +} + +usrHistoryControlIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + 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 INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + 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 INTEGER (1..65535) + ACCESS read-write + STATUS mandatory + 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 possible for the particular probe + implementation and available resources." + DEFVAL { 50 } + ::= { usrHistoryControlEntry 3 } + +usrHistoryControlBucketsGranted OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-only + STATUS mandatory + 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 + 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 INTEGER (1..2147483647) + ACCESS read-write + STATUS mandatory + 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 to 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 + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { usrHistoryControlEntry 6 } + +usrHistoryControlStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS mandatory + 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 } + +usrHistoryObjectTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryObjectEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of data-collection configuration entries." + ::= { usrHistory 2 } + +usrHistoryObjectEntry OBJECT-TYPE + SYNTAX UsrHistoryObjectEntry + ACCESS not-accessible + STATUS mandatory + 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 INTEGER, + usrHistoryObjectVariable OBJECT IDENTIFIER, + usrHistoryObjectSampleType INTEGER +} + +usrHistoryObjectIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS mandatory + 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 + ACCESS read-write + STATUS mandatory + 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. See USM [RFC3414] and VACM [RFC3415] for more + information. + + 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) } + ACCESS read-write + STATUS mandatory + 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 } + +usrHistoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF UsrHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of user-defined history entries." + ::= { usrHistory 3 } + +usrHistoryEntry OBJECT-TYPE + SYNTAX UsrHistoryEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that 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 INTEGER, + usrHistoryIntervalStart TimeStamp, + usrHistoryIntervalEnd TimeStamp, + usrHistoryAbsValue Gauge, + usrHistoryValStatus INTEGER +} + +usrHistorySampleIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS not-accessible + STATUS mandatory + 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 + 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 that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval." + ::= { usrHistoryEntry 2 } + +usrHistoryIntervalEnd OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the end of the interval over which + this sample was measured." + ::= { usrHistoryEntry 3 } + +usrHistoryAbsValue OBJECT-TYPE + SYNTAX Gauge + ACCESS read-only + STATUS mandatory + 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)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, 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) } + ACCESS read-only + STATUS mandatory + 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 the 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 } + +probeConfig OBJECT IDENTIFIER + ::= { rmon 19 } + +probeCapabilities OBJECT-TYPE + SYNTAX OCTET STRING +-- { 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) } + ACCESS read-only + STATUS mandatory + 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)) + ACCESS read-only + STATUS mandatory + 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)) + ACCESS read-only + STATUS mandatory + 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)) + ACCESS read-write + STATUS mandatory + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned." + ::= { probeConfig 4 } + +probeResetControl OBJECT-TYPE + SYNTAX INTEGER { running(1), warmBoot(2), coldBoot(3) } + ACCESS read-write + STATUS mandatory + 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 to restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { probeConfig 5 } + +probeDownloadFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + ACCESS read-write + STATUS deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { notDownloading(1), downloadToPROM(2), + downloadToRAM(3) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), 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(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) 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). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 8 } + +probeDownloadStatus OBJECT-TYPE + SYNTAX INTEGER { downloadSuccess(1), downloadStatusUnknown(2), + downloadGeneralError(3), + downloadNoResponseFromServer(4), + downloadChecksumError(5), + downloadIncompatibleImage(6), + downloadTftpFileNotFound(7), + downloadTftpAccessViolation(8) } + ACCESS read-only + STATUS deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + ACCESS not-accessible + STATUS deprecated + 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. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + ACCESS not-accessible + STATUS deprecated + 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 INTEGER, + serialModemInitString ControlString, + serialModemHangUpString ControlString, + serialModemConnectResp DisplayString, + serialModemNoConnectResp DisplayString, + serialDialoutTimeout INTEGER, + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The type of incoming connection to be expected on this + serial interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { other(1), slip(2), ppp(3) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The type of data link encapsulation to be used on this + serial interface." + DEFVAL { slip } + ::= { serialConfigEntry 2 } + +serialTimeout OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS read-write + STATUS deprecated + 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)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that 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)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that 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)) + ACCESS read-write + STATUS deprecated + 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)) + ACCESS read-write + STATUS deprecated + 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 INTEGER (1..65535) + ACCESS read-write + STATUS deprecated + 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 + ACCESS read-write + STATUS deprecated + 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 + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + ACCESS not-accessible + STATUS deprecated + 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 + ACCESS read-write + STATUS deprecated + 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 is 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 them very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS deprecated + 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 is 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 them very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS deprecated + 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 + ACCESS read-write + STATUS deprecated + 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 } + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entry includes a destination IP address to which + traps are sent for this community." + INDEX { trapDestIndex } + ::= { trapDestTable 1 } + +TrapDestEntry ::= SEQUENCE { + trapDestIndex INTEGER, + trapDestCommunity OCTET STRING, + trapDestProtocol INTEGER, + trapDestAddress OCTET STRING, + trapDestOwner OwnerString, + trapDestStatus RowStatus +} + +trapDestIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + ACCESS read-write + STATUS deprecated + 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, as long as no access control mechanism + precludes it (e.g., VACM). + + 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) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The protocol with which this trap is to be sent." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The destination address for 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { trapDestEntry 5 } + +trapDestStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS deprecated + 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 } + +serialConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConnectionEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Configuration for a SLIP link over a serial line." + INDEX { serialConnectIndex } + ::= { serialConnectionTable 1 } + +SerialConnectionEntry ::= SEQUENCE { + serialConnectIndex INTEGER, + serialConnectDestIpAddress IpAddress, + serialConnectType INTEGER, + serialConnectDialString ControlString, + serialConnectSwitchConnectSeq ControlString, + serialConnectSwitchDisconnectSeq ControlString, + serialConnectSwitchResetSeq ControlString, + serialConnectOwner OwnerString, + serialConnectStatus RowStatus +} + +serialConnectIndex OBJECT-TYPE + SYNTAX INTEGER (1..65535) + ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS deprecated + 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) } + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The type of outgoing connection to be made. 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)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the 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)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that 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)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that 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)) + ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control string that 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 + ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity that configured this entry and is + therefore using the resources assigned to it." + ::= { serialConnectionEntry 8 } + +serialConnectStatus OBJECT-TYPE + SYNTAX RowStatus + ACCESS read-write + STATUS deprecated + 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 is a zero-length string + or cannot be correctly parsed as a ConnectString, 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 } + +rmonConformance OBJECT IDENTIFIER + ::= { rmon 20 } + +rmon2MIBCompliances OBJECT IDENTIFIER + ::= { rmonConformance 1 } + +rmon2MIBGroups OBJECT IDENTIFIER + ::= { rmonConformance 2 } + +protocolDirectoryGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 1 } + +-- protocolDirectoryGroup OBJECT-GROUP +-- OBJECTS { protocolDirLastChange, protocolDirLocalIndex, +-- protocolDirDescr, protocolDirType, +-- protocolDirAddressMapConfig, protocolDirHostConfig, +-- protocolDirMatrixConfig, protocolDirOwner, +-- protocolDirStatus } +-- STATUS mandatory +-- 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 IDENTIFIER + ::= { rmon2MIBGroups 2 } + +-- protocolDistributionGroup OBJECT-GROUP +-- OBJECTS { protocolDistControlDataSource, +-- protocolDistControlDroppedFrames, +-- protocolDistControlCreateTime, +-- protocolDistControlOwner, protocolDistControlStatus, +-- protocolDistStatsPkts, protocolDistStatsOctets } +-- STATUS mandatory +-- DESCRIPTION +-- "Collects the relative amounts of octets and packets for the +-- different protocols detected on a network segment." +-- ::= { rmon2MIBGroups 2 } + +addressMapGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 3 } + +-- addressMapGroup OBJECT-GROUP +-- OBJECTS { addressMapInserts, addressMapDeletes, +-- addressMapMaxDesiredEntries, +-- addressMapControlDataSource, +-- addressMapControlDroppedFrames, +-- addressMapControlOwner, addressMapControlStatus, +-- addressMapPhysicalAddress, addressMapLastChange } +-- STATUS mandatory +-- DESCRIPTION +-- "Lists MAC address to network address bindings discovered by +-- the probe and what interface they were last seen on." +-- ::= { rmon2MIBGroups 3 } + +nlHostGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 4 } + +-- nlHostGroup OBJECT-GROUP +-- OBJECTS { hlHostControlDataSource, +-- hlHostControlNlDroppedFrames, +-- hlHostControlNlInserts, hlHostControlNlDeletes, +-- hlHostControlNlMaxDesiredEntries, +-- hlHostControlAlDroppedFrames, +-- hlHostControlAlInserts, hlHostControlAlDeletes, +-- hlHostControlAlMaxDesiredEntries, +-- hlHostControlOwner, hlHostControlStatus, +-- nlHostInPkts, nlHostOutPkts, nlHostInOctets, +-- nlHostOutOctets, nlHostOutMacNonUnicastPkts, +-- nlHostCreateTime } +-- STATUS mandatory +-- 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 IDENTIFIER + ::= { rmon2MIBGroups 5 } + +-- 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 mandatory +-- 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 IDENTIFIER + ::= { rmon2MIBGroups 6 } + +-- alHostGroup OBJECT-GROUP +-- OBJECTS { alHostInPkts, alHostOutPkts, alHostInOctets, +-- alHostOutOctets, alHostCreateTime } +-- STATUS mandatory +-- 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 IDENTIFIER + ::= { rmon2MIBGroups 7 } + +-- 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 mandatory +-- 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 IDENTIFIER + ::= { rmon2MIBGroups 8 } + +-- usrHistoryGroup OBJECT-GROUP +-- OBJECTS { usrHistoryControlObjects, +-- usrHistoryControlBucketsRequested, +-- usrHistoryControlBucketsGranted, +-- usrHistoryControlInterval, usrHistoryControlOwner, +-- usrHistoryControlStatus, usrHistoryObjectVariable, +-- usrHistoryObjectSampleType, usrHistoryIntervalStart, +-- usrHistoryIntervalEnd, usrHistoryAbsValue, +-- usrHistoryValStatus } +-- STATUS mandatory +-- DESCRIPTION +-- "The usrHistoryGroup provides user-defined collection of +-- historical information from MIB objects on the probe." +-- ::= { rmon2MIBGroups 8 } + +probeInformationGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 9 } + +-- probeInformationGroup OBJECT-GROUP +-- OBJECTS { probeCapabilities, probeSoftwareRev, +-- probeHardwareRev, probeDateTime } +-- STATUS mandatory +-- DESCRIPTION +-- "This group describes various operating parameters of the +-- probe and controls the local time of the probe." +-- ::= { rmon2MIBGroups 9 } + +probeConfigurationGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 10 } + +-- 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 deprecated +-- DESCRIPTION +-- "This group controls the configuration of various operating +-- parameters of the probe. This group is not referenced by any +-- MODULE-COMPLIANCE macro because it is 'grandfathered' from +-- more recent MIB review rules that would require it." +-- ::= { rmon2MIBGroups 10 } + +rmon1EnhancementGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 11 } + +-- rmon1EnhancementGroup OBJECT-GROUP +-- OBJECTS { historyControlDroppedFrames, +-- hostControlDroppedFrames, hostControlCreateTime, +-- matrixControlDroppedFrames, matrixControlCreateTime, +-- channelDroppedFrames, channelCreateTime, +-- filterProtocolDirDataLocalIndex, +-- filterProtocolDirLocalIndex } +-- STATUS mandatory +-- DESCRIPTION +-- "This group adds some enhancements to RMON-1 that help +-- management stations." +-- ::= { rmon2MIBGroups 11 } + +rmon1EthernetEnhancementGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 12 } + +-- rmon1EthernetEnhancementGroup OBJECT-GROUP +-- OBJECTS { etherStatsDroppedFrames, etherStatsCreateTime } +-- STATUS mandatory +-- DESCRIPTION +-- "This group adds some enhancements to RMON-1 that help +-- management stations." +-- ::= { rmon2MIBGroups 12 } + +rmon1TokenRingEnhancementGroup OBJECT IDENTIFIER + ::= { rmon2MIBGroups 13 } + +-- rmon1TokenRingEnhancementGroup OBJECT-GROUP +-- OBJECTS { tokenRingMLStatsDroppedFrames, +-- tokenRingMLStatsCreateTime, +-- tokenRingPStatsDroppedFrames, +-- tokenRingPStatsCreateTime, +-- ringStationControlDroppedFrames, +-- ringStationControlCreateTime, +-- sourceRoutingStatsDroppedFrames, +-- sourceRoutingStatsCreateTime } +-- STATUS deprecated +-- DESCRIPTION +-- "This group adds some enhancements to RMON-1 that help +-- management stations. This group is not referenced by any +-- MODULE-COMPLIANCE macro because it is 'grandfathered' from +-- more recent MIB review rules that would require it." +-- ::= { rmon2MIBGroups 13 } + +rmon2MIBCompliance OBJECT IDENTIFIER + ::= { rmon2MIBCompliances 1 } + +-- rmon2MIBCompliance MODULE-COMPLIANCE +-- STATUS mandatory +-- 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 +-- that implement RMON [RFC2819]." + +-- GROUP rmon1EthernetEnhancementGroup +-- DESCRIPTION +-- "The rmon1EthernetEnhancementGroup is optional and is +-- appropriate for systems that implement the Ethernet +-- group of RMON [RFC2819]." + +-- OBJECT nlMatrixTopNControlRateBase +-- SYNTAX INTEGER +-- { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } +-- DESCRIPTION +-- "Conformance to RMON2 requires only support for these +-- values of nlMatrixTopNControlRateBase." + +-- ::= { rmon2MIBCompliances 1 } + +rmon2MIBApplicationLayerCompliance OBJECT IDENTIFIER + ::= { rmon2MIBCompliances 2 } + +-- rmon2MIBApplicationLayerCompliance MODULE-COMPLIANCE +-- STATUS mandatory +-- 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 +-- that implement RMON [RFC2819]." + +-- GROUP rmon1EthernetEnhancementGroup +-- DESCRIPTION +-- "The rmon1EthernetEnhancementGroup is optional and is +-- appropriate for systems that implement the Ethernet +-- group of RMON [RFC2819]." + +-- OBJECT nlMatrixTopNControlRateBase +-- SYNTAX INTEGER +-- { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } +-- DESCRIPTION +-- "Conformance to RMON2 requires only support for these +-- values of nlMatrixTopNControlRateBase." + +-- OBJECT alMatrixTopNControlRateBase +-- SYNTAX INTEGER +-- { alMatrixTopNTerminalsPkts(1), +-- alMatrixTopNTerminalsOctets(2), +-- alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4) } +-- DESCRIPTION +-- "Conformance to RMON2 requires only support for these +-- +-- +-- +-- values of alMatrixTopNControlRateBase." + +-- ::= { rmon2MIBCompliances 2 } + +END -- end of module RMON2-MIB. diff --git a/test/dumps/smiv1/SNMPv2-MIB b/test/dumps/smiv1/SNMPv2-MIB new file mode 100644 index 0000000..353271d --- /dev/null +++ b/test/dumps/smiv1/SNMPv2-MIB @@ -0,0 +1,848 @@ +-- +-- This SMIv1 module has been generated by smidump 0.4.5. Do not edit. +-- + +SNMPv2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-TYPE + FROM RFC-1212 + TRAP-TYPE + FROM RFC-1215 + Counter, TimeTicks + FROM RFC1155-SMI + mib-2 + FROM RFC1213-MIB + snmpModules + FROM SNMPv2-SMI + DisplayString, TestAndIncr, TimeStamp + FROM SNMPv2-TC; + +snmpMIB OBJECT IDENTIFIER + ::= { snmpModules 1 } + +-- snmpMIB MODULE-IDENTITY +-- LAST-UPDATED "200210160000Z" +-- ORGANIZATION +-- "IETF SNMPv3 Working Group" +-- CONTACT-INFO +-- "WG-EMail: snmpv3@lists.tislabs.com +-- Subscribe: snmpv3-request@lists.tislabs.com +-- +-- Co-Chair: Russ Mundy +-- Network Associates Laboratories +-- postal: 15204 Omega Drive, Suite 300 +-- Rockville, MD 20850-4601 +-- USA +-- EMail: mundy@tislabs.com +-- phone: +1 301 947-7107 +-- +-- Co-Chair: David Harrington +-- Enterasys Networks +-- postal: 35 Industrial Way +-- P. O. Box 5005 +-- Rochester, NH 03866-5005 +-- USA +-- EMail: dbh@enterasys.com +-- phone: +1 603 337-2614 +-- +-- Editor: Randy Presuhn +-- BMC Software, Inc. +-- postal: 2141 North First Street +-- San Jose, CA 95131 +-- USA +-- EMail: randy_presuhn@bmc.com +-- phone: +1 408 546-1006" +-- DESCRIPTION +-- "The MIB module for SNMP entities. +-- +-- Copyright (C) The Internet Society (2002). This +-- version of this MIB module is part of RFC 3418; +-- see the RFC itself for full legal notices." +-- REVISION "200210160000Z" +-- DESCRIPTION +-- "This revision of this MIB module was published as +-- RFC 3418." +-- REVISION "199511090000Z" +-- DESCRIPTION +-- "This revision of this MIB module was published as +-- RFC 1907." +-- REVISION "199304010000Z" +-- DESCRIPTION +-- "The initial revision of this MIB module was published +-- as RFC 1450." +-- ::= { snmpModules 1 } + + +system OBJECT IDENTIFIER + ::= { mib-2 1 } + +sysDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A textual description of the entity. This value should + include the full name and version identification of + the system's hardware type, software operating-system, + and networking software." + ::= { system 1 } + +sysObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The vendor's authoritative identification of the + network management subsystem contained in the entity. + This value is allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides an easy and + unambiguous means for determining `what kind of box' is + being managed. For example, if vendor `Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'." + ::= { system 2 } + +sysUpTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized." + ::= { system 3 } + +sysContact OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The textual identification of the contact person for + this managed node, together with information on how + to contact this person. If no contact information is + known, the value is the zero-length string." + ::= { system 4 } + +sysName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An administratively-assigned name for this managed + node. By convention, this is the node's fully-qualified + domain name. If the name is unknown, the value is + the zero-length string." + ::= { system 5 } + +sysLocation OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string." + ::= { system 6 } + +sysServices OBJECT-TYPE + SYNTAX INTEGER (0..127) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A value which indicates the set of services that this + entity may potentially offer. The value is a sum. + + + + This sum initially takes the value zero. Then, for + each layer, L, in the range 1 through 7, that this node + performs transactions for, 2 raised to (L - 1) is added + to the sum. For example, a node which performs only + routing functions would have a value of 4 (2^(3-1)). + In contrast, a node which is a host offering application + services would have a value of 72 (2^(4-1) + 2^(7-1)). + Note that in the context of the Internet suite of + protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + + For systems including OSI protocols, layers 5 and 6 + may also be counted." + ::= { system 7 } + +sysORLastChange OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID." + ::= { system 8 } + +sysORTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysOREntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows." + ::= { system 9 } + +sysOREntry OBJECT-TYPE + SYNTAX SysOREntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An entry (conceptual row) in the sysORTable." + INDEX { sysORIndex } + ::= { sysORTable 1 } + +SysOREntry ::= SEQUENCE { + sysORIndex INTEGER, + sysORID OBJECT IDENTIFIER, + sysORDescr DisplayString, + sysORUpTime TimeStamp +} + +sysORIndex OBJECT-TYPE + SYNTAX INTEGER (1..2147483647) + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable." + ::= { sysOREntry 1 } + +sysORID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder." + ::= { sysOREntry 2 } + +sysORDescr OBJECT-TYPE + SYNTAX DisplayString + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A textual description of the capabilities identified + by the corresponding instance of sysORID." + ::= { sysOREntry 3 } + +sysORUpTime OBJECT-TYPE + SYNTAX TimeStamp + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time this conceptual + row was last instantiated." + ::= { sysOREntry 4 } + +snmp OBJECT IDENTIFIER + ::= { mib-2 11 } + +snmpInPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of messages delivered to the SNMP + entity from the transport service." + ::= { snmp 1 } + +snmpOutPkts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service." + ::= { snmp 2 } + +snmpInBadVersions OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version." + ::= { snmp 3 } + +snmpInBadCommunityNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value." + ::= { snmp 5 } + +snmpInASNParseErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages." + ::= { snmp 6 } + +snmpInTooBigs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `tooBig'." + ::= { snmp 8 } + +snmpInNoSuchNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `noSuchName'." + ::= { snmp 9 } + +snmpInBadValues OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `badValue'." + ::= { snmp 10 } + +snmpInReadOnlys OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number valid SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `readOnly'. It should + be noted that it is a protocol error to generate an + SNMP PDU which contains the value `readOnly' in the + error-status field, as such this object is provided + as a means of detecting incorrect implementations of + the SNMP." + ::= { snmp 11 } + +snmpInGenErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `genErr'." + ::= { snmp 12 } + +snmpInTotalReqVars OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of MIB objects which have been + retrieved successfully by the SNMP protocol entity + as the result of receiving valid SNMP Get-Request + and Get-Next PDUs." + ::= { snmp 13 } + +snmpInTotalSetVars OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of MIB objects which have been + altered successfully by the SNMP protocol entity as + the result of receiving valid SNMP Set-Request PDUs." + ::= { snmp 14 } + +snmpInGetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity." + ::= { snmp 15 } + +snmpInGetNexts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity." + ::= { snmp 16 } + +snmpInSetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity." + ::= { snmp 17 } + +snmpInGetResponses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity." + ::= { snmp 18 } + +snmpInTraps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity." + ::= { snmp 19 } + +snmpOutTooBigs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `tooBig.'" + ::= { snmp 20 } + +snmpOutNoSuchNames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status was `noSuchName'." + ::= { snmp 21 } + +snmpOutBadValues OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `badValue'." + ::= { snmp 22 } + +snmpOutGenErrs OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `genErr'." + ::= { snmp 24 } + +snmpOutGetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 25 } + +snmpOutGetNexts OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 26 } + +snmpOutSetRequests OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 27 } + +snmpOutGetResponses OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 28 } + +snmpOutTraps OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 29 } + +snmpEnableAuthenTraps OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicates whether the SNMP entity is permitted to + generate authenticationFailure traps. The value of this + object overrides any configuration information; as such, + it provides a means whereby all authenticationFailure + traps may be disabled. + + Note that it is strongly recommended that this object + be stored in non-volatile memory so that it remains + constant across re-initializations of the network + management system." + ::= { snmp 30 } + +snmpSilentDrops OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of Confirmed Class PDUs (such as + GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the size of a reply + containing an alternate Response Class PDU (such as a + Response-PDU) with an empty variable-bindings field + was greater than either a local constraint or the + maximum message size associated with the originator of + the request." + ::= { snmp 31 } + +snmpProxyDrops OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of Confirmed Class PDUs + (such as GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the transmission of + the (possibly translated) message to a proxy target + failed in a manner (other than a time-out) such that + no Response Class PDU (such as a Response-PDU) could + be returned." + ::= { snmp 32 } + +snmpMIBObjects OBJECT IDENTIFIER + ::= { snmpMIB 1 } + +snmpTrap OBJECT IDENTIFIER + ::= { snmpMIBObjects 4 } + +snmpTrapOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The authoritative identification of the notification + currently being sent. This variable occurs as + the second varbind in every SNMPv2-Trap-PDU and + InformRequest-PDU." + ::= { snmpTrap 1 } + +snmpTrapEnterprise OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind." + ::= { snmpTrap 3 } + +snmpTraps OBJECT IDENTIFIER + ::= { snmpMIBObjects 5 } + +snmpSet OBJECT IDENTIFIER + ::= { snmpMIBObjects 6 } + +snmpSetSerialNo OBJECT-TYPE + SYNTAX TestAndIncr + ACCESS read-write + STATUS mandatory + DESCRIPTION + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP set operation. + + This object is used for coarse-grain coordination. + To achieve fine-grain coordination, one or more similar + objects might be defined within each MIB group, as + appropriate." + ::= { snmpSet 1 } + +snmpMIBConformance OBJECT IDENTIFIER + ::= { snmpMIB 2 } + +snmpMIBCompliances OBJECT IDENTIFIER + ::= { snmpMIBConformance 1 } + +snmpMIBGroups OBJECT IDENTIFIER + ::= { snmpMIBConformance 2 } + +coldStart TRAP-TYPE + ENTERPRISE snmpTraps +-- STATUS mandatory + DESCRIPTION + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered." + ::= 1 + +warmStart TRAP-TYPE + ENTERPRISE snmpTraps +-- STATUS mandatory + DESCRIPTION + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered." + ::= 2 + +authenticationFailure TRAP-TYPE + ENTERPRISE snmpTraps +-- STATUS mandatory + DESCRIPTION + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated." + ::= 5 + +snmpSetGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 5 } + +-- snmpSetGroup OBJECT-GROUP +-- OBJECTS { snmpSetSerialNo } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects which allow several cooperating +-- command generator applications to coordinate their +-- use of the set operation." +-- ::= { snmpMIBGroups 5 } + +systemGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 6 } + +-- systemGroup OBJECT-GROUP +-- OBJECTS { sysDescr, sysObjectID, sysUpTime, sysContact, +-- sysName, sysLocation, sysServices, sysORLastChange, +-- sysORID, sysORUpTime, sysORDescr } +-- STATUS mandatory +-- DESCRIPTION +-- "The system group defines objects which are common to all +-- managed systems." +-- ::= { snmpMIBGroups 6 } + +snmpBasicNotificationsGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 7 } + +-- snmpBasicNotificationsGroup NOTIFICATION-GROUP +-- NOTIFICATIONS { coldStart, authenticationFailure } +-- STATUS mandatory +-- DESCRIPTION +-- "The basic notifications implemented by an SNMP entity +-- supporting command responder applications." +-- ::= { snmpMIBGroups 7 } + +snmpGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 8 } + +-- snmpGroup OBJECT-GROUP +-- OBJECTS { snmpInPkts, snmpInBadVersions, snmpInASNParseErrs, +-- snmpSilentDrops, snmpProxyDrops, +-- snmpEnableAuthenTraps } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing basic instrumentation +-- and control of an SNMP entity." +-- ::= { snmpMIBGroups 8 } + +snmpCommunityGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 9 } + +-- snmpCommunityGroup OBJECT-GROUP +-- OBJECTS { snmpInBadCommunityNames, snmpInBadCommunityUses } +-- STATUS mandatory +-- DESCRIPTION +-- "A collection of objects providing basic instrumentation +-- of a SNMP entity which supports community-based +-- authentication." +-- ::= { snmpMIBGroups 9 } + +snmpObsoleteGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 10 } + +-- snmpObsoleteGroup OBJECT-GROUP +-- OBJECTS { snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames, +-- snmpInBadValues, snmpInReadOnlys, snmpInGenErrs, +-- snmpInTotalReqVars, snmpInTotalSetVars, +-- snmpInGetRequests, snmpInGetNexts, +-- snmpInSetRequests, snmpInGetResponses, snmpInTraps, +-- snmpOutTooBigs, snmpOutNoSuchNames, +-- snmpOutBadValues, snmpOutGenErrs, +-- snmpOutGetRequests, snmpOutGetNexts, +-- snmpOutSetRequests, snmpOutGetResponses, +-- snmpOutTraps } +-- STATUS obsolete +-- DESCRIPTION +-- "A collection of objects from RFC 1213 made obsolete +-- by this MIB module." +-- ::= { snmpMIBGroups 10 } + +snmpWarmStartNotificationGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 11 } + +-- snmpWarmStartNotificationGroup NOTIFICATION-GROUP +-- NOTIFICATIONS { warmStart } +-- STATUS mandatory +-- DESCRIPTION +-- "An additional notification for an SNMP entity supporting +-- command responder applications, if it is able to reinitialize +-- itself such that its configuration is unaltered." +-- ::= { snmpMIBGroups 11 } + +snmpNotificationGroup OBJECT IDENTIFIER + ::= { snmpMIBGroups 12 } + +-- snmpNotificationGroup OBJECT-GROUP +-- OBJECTS { snmpTrapOID, snmpTrapEnterprise } +-- STATUS mandatory +-- DESCRIPTION +-- "These objects are required for entities +-- which support notification originator applications." +-- ::= { snmpMIBGroups 12 } + +snmpBasicCompliance OBJECT IDENTIFIER + ::= { snmpMIBCompliances 2 } + +-- snmpBasicCompliance MODULE-COMPLIANCE +-- STATUS deprecated +-- DESCRIPTION +-- "The compliance statement for SNMPv2 entities which +-- implement the SNMPv2 MIB. +-- +-- This compliance statement is replaced by +-- snmpBasicComplianceRev2." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { snmpGroup, snmpSetGroup, +-- systemGroup, snmpBasicNotificationsGroup } + +-- GROUP snmpCommunityGroup +-- DESCRIPTION +-- "This group is mandatory for SNMPv2 entities which +-- support community-based authentication." + +-- ::= { snmpMIBCompliances 2 } + +snmpBasicComplianceRev2 OBJECT IDENTIFIER + ::= { snmpMIBCompliances 3 } + +-- snmpBasicComplianceRev2 MODULE-COMPLIANCE +-- STATUS mandatory +-- DESCRIPTION +-- "The compliance statement for SNMP entities which +-- implement this MIB module." + +-- MODULE -- -- this module + +-- MANDATORY-GROUPS { snmpGroup, snmpSetGroup, +-- systemGroup, snmpBasicNotificationsGroup } + +-- GROUP snmpCommunityGroup +-- DESCRIPTION +-- "This group is mandatory for SNMP entities which +-- support community-based authentication." + +-- GROUP snmpWarmStartNotificationGroup +-- DESCRIPTION +-- "This group is mandatory for an SNMP entity which +-- supports command responder applications, and is +-- able to reinitialize itself such that its +-- configuration is unaltered." + +-- ::= { snmpMIBCompliances 3 } + +END -- end of module SNMPv2-MIB. diff --git a/test/dumps/smiv2-smiv2/IF-MIB b/test/dumps/smiv2-smiv2/IF-MIB new file mode 100644 index 0000000..928af3d --- /dev/null +++ b/test/dumps/smiv2-smiv2/IF-MIB @@ -0,0 +1,1721 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifType + FROM IANAifType-MIB + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + snmpTraps + FROM SNMPv2-MIB + Counter32, Counter64, Gauge32, Integer32, MODULE-IDENTITY, + NOTIFICATION-TYPE, OBJECT-TYPE, TimeTicks, mib-2 + FROM SNMPv2-SMI + AutonomousType, DisplayString, PhysAddress, RowStatus, + TEXTUAL-CONVENTION, TestAndIncr, TimeStamp, TruthValue + FROM SNMPv2-TC; + +ifMIB MODULE-IDENTITY + LAST-UPDATED "200006140000Z" + ORGANIZATION + "IETF Interfaces MIB Working Group" + CONTACT-INFO + " Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com" + DESCRIPTION + "The MIB module to describe generic objects for network + interface sub-layers. This MIB is an updated version of + MIB-II's ifTable, and incorporates the extensions defined in + RFC 1229." + REVISION "200006140000Z" + DESCRIPTION + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863." + REVISION "199602282155Z" + DESCRIPTION + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233." + REVISION "199311082155Z" + DESCRIPTION + "Initial revision, published as part of RFC 1573." + ::= { mib-2 31 } + + +OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS deprecated + 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 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each interface or + interface sub-layer in the managed system. It is + recommended that values are assigned contiguously starting + from 1. The value for each interface sub-layer must remain + constant at least from one re-initialization of the entity's + network management system to the next re-initialization." + SYNTAX Integer32 (1..2147483647) + +InterfaceIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + InterfaceIndex convention. The latter defines a greater + than zero value used to identify an interface or interface + sub-layer in the managed system. This extension permits the + additional value of zero. the value zero is object-specific + and must therefore be defined as part of the description of + any object which uses this syntax. Examples of the usage of + zero might include situations where interface was unknown, + or when none or all interfaces need to be referenced." + SYNTAX Integer32 (0..2147483647) + +interfaces OBJECT IDENTIFIER + ::= { mib-2 2 } + +ifNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network interfaces (regardless of their + current state) present on this system." + ::= { interfaces 1 } + +ifTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of interface entries. The number of entries is + given by the value of ifNumber." + ::= { interfaces 2 } + +ifEntry OBJECT-TYPE + SYNTAX IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing management information applicable to a + particular interface." + INDEX { ifIndex } + ::= { ifTable 1 } + +IfEntry ::= SEQUENCE { + ifIndex InterfaceIndex, + ifDescr DisplayString, + ifType IANAifType, + ifMtu Integer32, + ifSpeed Gauge32, + ifPhysAddress PhysAddress, + ifAdminStatus INTEGER, + ifOperStatus INTEGER, + ifLastChange TimeTicks, + ifInOctets Counter32, + ifInUcastPkts Counter32, + ifInNUcastPkts Counter32, + ifInDiscards Counter32, + ifInErrors Counter32, + ifInUnknownProtos Counter32, + ifOutOctets Counter32, + ifOutUcastPkts Counter32, + ifOutNUcastPkts Counter32, + ifOutDiscards Counter32, + ifOutErrors Counter32, + ifOutQLen Gauge32, + ifSpecific OBJECT IDENTIFIER +} + +ifIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each interface. It + is recommended that values are assigned contiguously + starting from 1. The value for each interface sub-layer + must remain constant at least from one re-initialization of + the entity's network management system to the next re- + initialization." + ::= { ifEntry 1 } + +ifDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software." + ::= { ifEntry 2 } + +ifType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of interface. Additional values for ifType are + assigned by the Internet Assigned Numbers Authority (IANA), + through updating the syntax of the IANAifType textual + convention." + ::= { ifEntry 3 } + +ifMtu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest packet which can be sent/received + on the interface, specified in octets. For interfaces that + are used for transmitting network datagrams, this is the + size of the largest network datagram that can be sent on the + interface." + ::= { ifEntry 4 } + +ifSpeed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the interface's current bandwidth in bits + per second. For interfaces which do not vary in bandwidth + or for those where no accurate estimation can be made, this + object should contain the nominal bandwidth. If the + bandwidth of the interface is greater than the maximum value + reportable by this object then this object should report its + maximum value (4,294,967,295) and ifHighSpeed must be used + to report the interace's speed. For a sub-layer which has + no concept of bandwidth, this object should be zero." + ::= { ifEntry 5 } + +ifPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific MIB + must define the bit and byte ordering and the format of the + value of this object. For interfaces which do not have such + an address (e.g., a serial line), this object should contain + an octet string of zero length." + ::= { ifEntry 6 } + +ifAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), testing(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state)." + ::= { ifEntry 7 } + +ifOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), testing(3), unknown(4), + dormant(5), notPresent(6), lowerLayerDown(7) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components." + ::= { ifEntry 8 } + +ifLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the interface entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value." + ::= { ifEntry 9 } + +ifInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received on the interface, + + + including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 10 } + +ifInUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 11 } + +ifInNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast or + broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifInMulticastPkts and + ifInBroadcastPkts." + ::= { ifEntry 12 } + +ifInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets which were chosen to be + discarded even though no errors had been detected to prevent + + + their being deliverable to a higher-layer protocol. One + possible reason for discarding such a packet could be to + free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 13 } + +ifInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of inbound + transmission units that contained errors preventing them + from being deliverable to a higher-layer protocol. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 14 } + +ifInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of packets + received via the interface which were discarded because of + an unknown or unsupported protocol. For character-oriented + or fixed-length interfaces that support protocol + multiplexing the number of transmission units received via + the interface which were discarded because of an unknown or + unsupported protocol. For any interface that does not + support protocol multiplexing, this counter will always be + 0. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 15 } + +ifOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 16 } + +ifOutUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 17 } + +ifOutNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifOutMulticastPkts + and ifOutBroadcastPkts." + ::= { ifEntry 18 } + +ifOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets which were chosen to be + discarded even though no errors had been detected to prevent + their being transmitted. One possible reason for discarding + such a packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 19 } + +ifOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 20 } + +ifOutQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The length of the output packet queue (in packets)." + ::= { ifEntry 21 } + +ifSpecific OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "A reference to MIB definitions specific to the particular + media being used to realize the interface. It is + + + recommended that this value point to an instance of a MIB + object in the media-specific MIB, i.e., that this object + have the semantics associated with the InstancePointer + textual convention defined in RFC 2579. In fact, it is + recommended that the media-specific MIB specify what value + ifSpecific should/can take for values of ifType. If no MIB + definitions specific to the particular media are available, + the value should be set to the OBJECT IDENTIFIER { 0 0 }." + ::= { ifEntry 22 } + +ifMIBObjects OBJECT IDENTIFIER + ::= { ifMIB 1 } + +ifXTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of interface entries. The number of entries is + given by the value of ifNumber. This table contains + additional objects for the interface table." + ::= { ifMIBObjects 1 } + +ifXEntry OBJECT-TYPE + SYNTAX IfXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing additional management information + applicable to a particular interface." + AUGMENTS { ifEntry } + ::= { ifXTable 1 } + +IfXEntry ::= SEQUENCE { + ifName DisplayString, + ifInMulticastPkts Counter32, + ifInBroadcastPkts Counter32, + ifOutMulticastPkts Counter32, + ifOutBroadcastPkts Counter32, + ifHCInOctets Counter64, + ifHCInUcastPkts Counter64, + ifHCInMulticastPkts Counter64, + ifHCInBroadcastPkts Counter64, + ifHCOutOctets Counter64, + ifHCOutUcastPkts Counter64, + ifHCOutMulticastPkts Counter64, + ifHCOutBroadcastPkts Counter64, + ifLinkUpDownTrapEnable INTEGER, + ifHighSpeed Gauge32, + ifPromiscuousMode TruthValue, + ifConnectorPresent TruthValue, + ifAlias DisplayString, + ifCounterDiscontinuityTime TimeStamp +} + +ifName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual name of the interface. The value of this + object should be the name of the interface as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name, such as `le0' or a simple port number, such as `1', + depending on the interface naming syntax of the device. If + several entries in the ifTable together represent a single + interface as named by the device, then each will have the + same value of ifName. Note that for an agent which responds + to SNMP queries concerning an interface on some other + (proxied) device, then the value of ifName for such an + interface is the proxied device's local name for it. + + If there is no local name, or this object is otherwise not + applicable, then this object contains a zero-length string." + ::= { ifXEntry 1 } + +ifInMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 2 } + +ifInBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 3 } + +ifOutMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 4 } + +ifOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 5 } + +ifHCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received on the interface, + including framing characters. This object is a 64-bit + version of ifInOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 6 } + +ifHCInUcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. This object is a + 64-bit version of ifInUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 7 } + +ifHCInMulticastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifInMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 8 } + +ifHCInBroadcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. This object is a 64-bit version + of ifInBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 9 } + +ifHCOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters. This object is a + 64-bit version of ifOutOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 10 } + +ifHCOutUcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. This object is a + 64-bit version of ifOutUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 11 } + +ifHCOutMulticastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifOutMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 12 } + +ifHCOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. This object is a 64-bit version + of ifOutBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 13 } + +ifLinkUpDownTrapEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether linkUp/linkDown traps should be generated + for this interface. + + By default, this object should have the value enabled(1) for + interfaces which do not operate on 'top' of any other + interface (as defined in the ifStackTable), and disabled(2) + otherwise." + ::= { ifXEntry 14 } + +ifHighSpeed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the interface's current bandwidth in units + of 1,000,000 bits per second. If this object reports a + value of `n' then the speed of the interface is somewhere in + the range of `n-500,000' to `n+499,999'. For interfaces + which do not vary in bandwidth or for those where no + accurate estimation can be made, this object should contain + the nominal bandwidth. For a sub-layer which has no concept + of bandwidth, this object should be zero." + ::= { ifXEntry 15 } + +ifPromiscuousMode OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object has a value of false(2) if this interface only + accepts packets/frames that are addressed to this station. + This object has a value of true(1) when the station accepts + all packets/frames transmitted on the media. The value + true(1) is only legal on certain types of media. If legal, + setting this object to a value of true(1) may require the + interface to be reset before becoming effective. + + The value of ifPromiscuousMode does not affect the reception + of broadcast and multicast packets/frames by the interface." + ::= { ifXEntry 16 } + +ifConnectorPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise." + ::= { ifXEntry 17 } + +ifAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is an 'alias' name for the interface as + specified by a network manager, and provides a non-volatile + 'handle' for the interface. + + On the first instantiation of an interface, the value of + ifAlias associated with that interface is the zero-length + string. As and when a value is written into an instance of + ifAlias through a network management set operation, then the + agent must retain the supplied value in the ifAlias instance + associated with the same interface for as long as that + interface remains instantiated, including across all re- + initializations/reboots of the network management system, + including those which result in a change of the interface's + ifIndex value. + + An example of the value which a network manager might store + in this object for a WAN interface is the (Telco's) circuit + number/identifier of the interface. + + Some agents may support write-access only for interfaces + having particular values of ifType. An agent which supports + write access to this object is required to keep the value in + non-volatile storage, but it may limit the length of new + values depending on how much storage is already occupied by + the current values for other interfaces." + ::= { ifXEntry 18 } + +ifCounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this interface's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + + + Counter64 object contained in the ifTable or ifXTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ifXEntry 19 } + +ifStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing information on the relationships + between the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'on top of' which other sub-layers, where each sub-layer + corresponds to a conceptual row in the ifTable. For + example, when the sub-layer with ifIndex value x runs over + the sub-layer with ifIndex value y, then this table + contains: + + ifStackStatus.x.y=active + + For each ifIndex value, I, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with I. For one of these rows, I + is the value of ifStackHigherLayer; for the other, I is the + value of ifStackLowerLayer. (If I is not involved in + multiplexing, then these are the only two rows associated + with I.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifStackStatus.0.x=active + ifStackStatus.x.0=active " + ::= { ifMIBObjects 2 } + +ifStackEntry OBJECT-TYPE + SYNTAX IfStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs on 'top' of the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable." + INDEX { ifStackHigherLayer, ifStackLowerLayer } + ::= { ifStackTable 1 } + +IfStackEntry ::= SEQUENCE { + ifStackHigherLayer InterfaceIndexOrZero, + ifStackLowerLayer InterfaceIndexOrZero, + ifStackStatus RowStatus +} + +ifStackHigherLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex corresponding to the higher sub-layer + of the relationship, i.e., the sub-layer which runs on 'top' + of the sub-layer identified by the corresponding instance of + ifStackLowerLayer. If there is no higher sub-layer (below + the internetwork layer), then this object has the value 0." + ::= { ifStackEntry 1 } + +ifStackLowerLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex corresponding to the lower sub-layer + of the relationship, i.e., the sub-layer which runs 'below' + the sub-layer identified by the corresponding instance of + ifStackHigherLayer. If there is no lower sub-layer, then + this object has the value 0." + ::= { ifStackEntry 2 } + +ifStackStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the relationship between two sub-layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have consequences up + and down the interface stack. Thus, write access to this + object is likely to be inappropriate for some types of + interfaces, and many implementations will choose not to + support write-access for any type of interface." + ::= { ifStackEntry 3 } + +ifTestTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfTestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table contains one entry per interface. It defines + objects which allow a network manager to instruct an agent + to test an interface for various faults. Tests for an + interface are defined in the media-specific MIB for that + interface. After invoking a test, the object ifTestResult + can be read to determine the outcome. If an agent can not + perform the test, ifTestResult is set to so indicate. The + object ifTestCode can be used to provide further test- + specific or interface-specific (or even enterprise-specific) + information concerning the outcome of the test. Only one + test can be in progress on each interface at any one time. + If one test is in progress when another test is invoked, the + second test is rejected. Some agents may reject a test when + a prior test is active on another interface. + + Before starting a test, a manager-station must first obtain + 'ownership' of the entry in the ifTestTable for the + interface to be tested. This is accomplished with the + ifTestId and ifTestStatus objects as follows: + + try_again: + get (ifTestId, ifTestStatus) + while (ifTestStatus != notInUse) + /* + * Loop while a test is running or some other + * manager is configuring a test. + */ + short delay + get (ifTestId, ifTestStatus) + } + + /* + * Is not being used right now -- let's compete + * to see who gets it. + */ + lock_value = ifTestId + + if ( set(ifTestId = lock_value, ifTestStatus = inUse, + + + ifTestOwner = 'my-IP-address') == FAILURE) + /* + * Another manager got the ifTestEntry -- go + * try again + */ + goto try_again; + + /* + * I have the lock + */ + set up any test parameters. + + /* + * This starts the test + */ + set(ifTestType = test_to_run); + + wait for test completion by polling ifTestResult + + when test completes, agent sets ifTestResult + agent also sets ifTestStatus = 'notInUse' + + retrieve any additional test results, and ifTestId + + if (ifTestId == lock_value+1) results are valid + + A manager station first retrieves the value of the + appropriate ifTestId and ifTestStatus objects, periodically + repeating the retrieval if necessary, until the value of + ifTestStatus is 'notInUse'. The manager station then tries + to set the same ifTestId object to the value it just + retrieved, the same ifTestStatus object to 'inUse', and the + corresponding ifTestOwner object to a value indicating + itself. If the set operation succeeds then the manager has + obtained ownership of the ifTestEntry, and the value of the + ifTestId object is incremented by the agent (per the + semantics of TestAndIncr). Failure of the set operation + indicates that some other manager has obtained ownership of + the ifTestEntry. + + Once ownership is obtained, any test parameters can be + setup, and then the test is initiated by setting ifTestType. + On completion of the test, the agent sets ifTestStatus to + 'notInUse'. Once this occurs, the manager can retrieve the + results. In the (rare) event that the invocation of tests + by two network managers were to overlap, then there would be + a possibility that the first test's results might be + overwritten by the second test's results prior to the first + + + results being read. This unlikely circumstance can be + detected by a network manager retrieving ifTestId at the + same time as retrieving the test results, and ensuring that + the results are for the desired request. + + If ifTestType is not set within an abnormally long period of + time after ownership is obtained, the agent should time-out + the manager, and reset the value of the ifTestStatus object + back to 'notInUse'. It is suggested that this time-out + period be 5 minutes. + + In general, a management station must not retransmit a + request to invoke a test for which it does not receive a + response; instead, it properly inspects an agent's MIB to + determine if the invocation was successful. Only if the + invocation was unsuccessful, is the invocation request + retransmitted. + + Some tests may require the interface to be taken off-line in + order to execute them, or may even require the agent to + reboot after completion of the test. In these + circumstances, communication with the management station + invoking the test may be lost until after completion of the + test. An agent is not required to support such tests. + However, if such tests are supported, then the agent should + make every effort to transmit a response to the request + which invoked the test prior to losing communication. When + the agent is restored to normal service, the results of the + test are properly made available in the appropriate objects. + Note that this requires that the ifIndex value assigned to + an interface must be unchanged even if the test causes a + reboot. An agent must reject any test for which it cannot, + perhaps due to resource constraints, make available at least + the minimum amount of information after that test + completes." + ::= { ifMIBObjects 3 } + +ifTestEntry OBJECT-TYPE + SYNTAX IfTestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry containing objects for invoking tests on an + interface." + AUGMENTS { ifEntry } + ::= { ifTestTable 1 } + +IfTestEntry ::= SEQUENCE { + ifTestId TestAndIncr, + ifTestStatus INTEGER, + ifTestType AutonomousType, + ifTestResult INTEGER, + ifTestCode OBJECT IDENTIFIER, + ifTestOwner OwnerString +} + +ifTestId OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "This object identifies the current invocation of the + interface's test." + ::= { ifTestEntry 1 } + +ifTestStatus OBJECT-TYPE + SYNTAX INTEGER { notInUse(1), inUse(2) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "This object indicates whether or not some manager currently + has the necessary 'ownership' required to invoke a test on + this interface. A write to this object is only successful + when it changes its value from 'notInUse(1)' to 'inUse(2)'. + After completion of a test, the agent resets the value back + to 'notInUse(1)'." + ::= { ifTestEntry 2 } + +ifTestType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control variable used to start and stop operator- + initiated interface tests. Most OBJECT IDENTIFIER values + assigned to tests are defined elsewhere, in association with + specific types of interface. However, this document assigns + a value for a full-duplex loopback test, and defines the + special meanings of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + + When the value noTest is written to this object, no action + is taken unless a test is in progress, in which case the + test is aborted. Writing any other value to this object is + + + only valid when no test is currently in progress, in which + case the indicated test is initiated. + + When read, this object always returns the most recent value + that ifTestType was set to. If it has not been set since + the last initialization of the network management subsystem + on the agent, a value of noTest is returned." + ::= { ifTestEntry 3 } + +ifTestResult OBJECT-TYPE + SYNTAX INTEGER { none(1), success(2), inProgress(3), + notSupported(4), unAbleToRun(5), aborted(6), + failed(7) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object contains the result of the most recently + requested test, or the value none(1) if no tests have been + requested since the last reset. Note that this facility + provides no provision for saving the results of one test + when starting another, as could be required if used by + multiple managers concurrently." + ::= { ifTestEntry 4 } + +ifTestCode OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object contains a code which contains more specific + information on the test result, for example an error-code + after a failed test. Error codes and other values this + object may take are specific to the type of interface and/or + test. The value may have the semantics of either the + AutonomousType or InstancePointer textual conventions as + defined in RFC 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available." + ::= { ifTestEntry 5 } + +ifTestOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity which currently has the 'ownership' required to + invoke a test on this interface." + ::= { ifTestEntry 6 } + +ifRcvAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfRcvAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains an entry for each address (broadcast, + multicast, or uni-cast) for which the system will receive + packets/frames on a particular interface, except as follows: + + - for an interface operating in promiscuous mode, entries + are only required for those addresses for which the system + would receive frames were it not operating in promiscuous + mode. + + + - for 802.5 functional addresses, only one entry is + required, for the address which has the functional address + bit ANDed with the bit mask of all functional addresses for + which the interface will accept frames. + + A system is normally able to use any unicast address which + corresponds to an entry in this table as a source address." + ::= { ifMIBObjects 4 } + +ifRcvAddressEntry OBJECT-TYPE + SYNTAX IfRcvAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of objects identifying an address for which the + system will accept packets/frames on the particular + interface identified by the index value ifIndex." + INDEX { ifIndex, ifRcvAddressAddress } + ::= { ifRcvAddressTable 1 } + +IfRcvAddressEntry ::= SEQUENCE { + ifRcvAddressAddress PhysAddress, + ifRcvAddressStatus RowStatus, + ifRcvAddressType INTEGER +} + +ifRcvAddressAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An address for which the system will accept packets/frames + on this entry's interface." + ::= { ifRcvAddressEntry 1 } + +ifRcvAddressStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + ifRcvAddressTable." + ::= { ifRcvAddressEntry 2 } + +ifRcvAddressType OBJECT-TYPE + SYNTAX INTEGER { other(1), volatile(2), nonVolatile(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object has the value nonVolatile(3) for those entries + in the table which are valid and will not be deleted by the + next restart of the managed system. Entries having the + value volatile(2) are valid and exist, but have not been + saved, so that will not exist after the next restart of the + managed system. Entries having the value other(1) are valid + and exist but are not classified as to whether they will + continue to exist after the next restart." + DEFVAL { volatile } + ::= { ifRcvAddressEntry 3 } + +ifTableLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last creation or + deletion of an entry in the ifTable. If the number of + entries has been unchanged since the last re-initialization + of the local network management subsystem, then this object + contains a zero value." + ::= { ifMIBObjects 5 } + +ifStackLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last change of + the (whole) interface stack. A change of the interface + stack is defined to be any creation, deletion, or change in + value of any instance of ifStackStatus. If the interface + stack has been unchanged since the last re-initialization of + the local network management subsystem, then this object + contains a zero value." + ::= { ifMIBObjects 6 } + +ifConformance OBJECT IDENTIFIER + ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER + ::= { ifConformance 1 } + +ifCompliances OBJECT IDENTIFIER + ::= { ifConformance 2 } + +linkDown NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus." + ::= { snmpTraps 3 } + +linkUp NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus." + ::= { snmpTraps 4 } + +ifGeneralGroup OBJECT-GROUP + OBJECTS { ifDescr, ifType, ifSpeed, ifPhysAddress, ifAdminStatus, + ifOperStatus, ifLastChange, ifLinkUpDownTrapEnable, + ifConnectorPresent, ifHighSpeed, ifName } + STATUS deprecated + DESCRIPTION + "A collection of objects deprecated in favour of + ifGeneralInformationGroup." + ::= { ifGroups 1 } + +ifFixedLengthGroup OBJECT-GROUP + OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) character-oriented or fixed-length-transmission + network interfaces." + ::= { ifGroups 2 } + +ifHCFixedLengthGroup OBJECT-GROUP + OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, + ifInUnknownProtos, ifInErrors, ifOutErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second) character- + oriented or fixed-length-transmission network interfaces." + ::= { ifGroups 3 } + +ifPacketGroup OBJECT-GROUP + OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors, ifMtu, ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, ifOutUcastPkts, + ifOutMulticastPkts, ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) packet-oriented network interfaces." + ::= { ifGroups 4 } + +ifHCPacketGroup OBJECT-GROUP + OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, + ifInUnknownProtos, ifInErrors, ifOutErrors, ifMtu, + ifInUcastPkts, ifInMulticastPkts, ifInBroadcastPkts, + ifInDiscards, ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second but less + than or equal to 650,000,000 bits/second) packet-oriented + network interfaces." + ::= { ifGroups 5 } + +ifVHCPacketGroup OBJECT-GROUP + OBJECTS { ifHCInUcastPkts, ifHCInMulticastPkts, + ifHCInBroadcastPkts, ifHCOutUcastPkts, + ifHCOutMulticastPkts, ifHCOutBroadcastPkts, + ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, + ifInUnknownProtos, ifInErrors, ifOutErrors, ifMtu, + ifInUcastPkts, ifInMulticastPkts, ifInBroadcastPkts, + ifInDiscards, ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + higher speed (greater than 650,000,000 bits/second) packet- + oriented network interfaces." + ::= { ifGroups 6 } + +ifRcvAddressGroup OBJECT-GROUP + OBJECTS { ifRcvAddressStatus, ifRcvAddressType } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + multiple addresses which an interface receives." + ::= { ifGroups 7 } + +ifTestGroup OBJECT-GROUP + OBJECTS { ifTestId, ifTestStatus, ifTestType, ifTestResult, + ifTestCode, ifTestOwner } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the ability to invoke + tests on an interface." + ::= { ifGroups 8 } + +ifStackGroup OBJECT-GROUP + OBJECTS { ifStackStatus } + STATUS deprecated + DESCRIPTION + "The previous collection of objects providing information on + the layering of MIB-II interfaces." + ::= { ifGroups 9 } + +ifGeneralInformationGroup OBJECT-GROUP + OBJECTS { ifIndex, ifDescr, ifType, ifSpeed, ifPhysAddress, + ifAdminStatus, ifOperStatus, ifLastChange, + ifLinkUpDownTrapEnable, ifConnectorPresent, + ifHighSpeed, ifName, ifNumber, ifAlias, + ifTableLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing information applicable to + all network interfaces." + ::= { ifGroups 10 } + +ifStackGroup2 OBJECT-GROUP + OBJECTS { ifStackStatus, ifStackLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + layering of MIB-II interfaces." + ::= { ifGroups 11 } + +ifOldObjectsGroup OBJECT-GROUP + OBJECTS { ifInNUcastPkts, ifOutNUcastPkts, ifOutQLen, ifSpecific } + STATUS deprecated + DESCRIPTION + "The collection of objects deprecated from the original MIB- + II interfaces group." + ::= { ifGroups 12 } + +ifCounterDiscontinuityGroup OBJECT-GROUP + OBJECTS { ifCounterDiscontinuityTime } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + interface counter discontinuities." + ::= { ifGroups 13 } + +linkUpDownNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { linkUp, linkDown } + STATUS current + DESCRIPTION + "The notifications which indicate specific changes in the + value of ifOperStatus." + ::= { ifGroups 14 } + +ifCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces." + + MODULE -- this module + + MANDATORY-GROUPS { ifGeneralGroup, ifStackGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are character-oriented or transmit data in fixed- + length transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are packet-oriented." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + GROUP ifTestGroup + DESCRIPTION + "This group is optional. Media-specific MIBs which require + interface tests are strongly encouraged to use this group + for invoking tests and reporting results. A medium specific + MIB which has mandatory tests may make implementation of + + + this group mandatory." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifStackStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + + ::= { ifCompliances 1 } + +ifCompliance2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces." + + MODULE -- this module + + MANDATORY-GROUPS { ifGeneralInformationGroup, + ifStackGroup2, ifCounterDiscontinuityGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are character-oriented or transmit data in fixed- + length transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are packet-oriented." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifStackStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + + OBJECT ifAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { ifCompliances 2 } + +ifCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which have + network interfaces." + + MODULE -- this module + + MANDATORY-GROUPS { ifGeneralInformationGroup, + linkUpDownNotificationsGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for those network interfaces which + are character-oriented or transmit data in fixed-length + transmission units, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory for those network interfaces which + are character-oriented or transmit data in fixed-length + transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + "This group is mandatory for those network interfaces which + are packet-oriented, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second." + + GROUP ifVHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + GROUP ifCounterDiscontinuityGroup + DESCRIPTION + "This group is mandatory for those network interfaces that + are required to maintain counters (i.e., those for which one + of the ifFixedLengthGroup, ifHCFixedLengthGroup, + ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is + mandatory)." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + + OBJECT ifAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { ifCompliances 3 } + +END -- end of module IF-MIB. diff --git a/test/dumps/smiv2-smiv2/MAU-MIB b/test/dumps/smiv2-smiv2/MAU-MIB new file mode 100644 index 0000000..7ef0922 --- /dev/null +++ b/test/dumps/smiv2-smiv2/MAU-MIB @@ -0,0 +1,1776 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +MAU-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifJackType, IANAifMauAutoNegCapBits, IANAifMauMediaAvailable, + IANAifMauTypeListBits + FROM IANA-MAU-MIB + InterfaceIndex + FROM IF-MIB + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Counter64, Integer32, MODULE-IDENTITY, NOTIFICATION-TYPE, + OBJECT-TYPE, mib-2 + FROM SNMPv2-SMI + AutonomousType, TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC; + +mauMod MODULE-IDENTITY + LAST-UPDATED "200704210000Z" + ORGANIZATION + "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com" + DESCRIPTION + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices." + REVISION "200704210000Z" + DESCRIPTION + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836." + REVISION "200309190000Z" + DESCRIPTION + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636." + REVISION "199908240400Z" + DESCRIPTION + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation." + REVISION "199710310000Z" + DESCRIPTION + "Version published as RFC 2239." + REVISION "199309300000Z" + DESCRIPTION + "Initial version, published as RFC 1515." + ::= { snmpDot3MauMgt 6 } + + +JackType ::= TEXTUAL-CONVENTION + STATUS deprecated + DESCRIPTION + "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types." + SYNTAX INTEGER { other(1), rj45(2), rj45S(3), db9(4), bnc(5), + fAUI(6), mAUI(7), fiberSC(8), fiberMIC(9), + fiberST(10), telco(11), mtrj(12), hssdc(13), + fiberLC(14) } + +snmpDot3MauMgt OBJECT IDENTIFIER + ::= { mib-2 26 } + +snmpDot3MauTraps OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 0 } + +dot3RpMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 1 } + +rpMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater." + ::= { dot3RpMauBasicGroup 1 } + +rpMauEntry OBJECT-TYPE + SYNTAX RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex } + ::= { rpMauTable 1 } + +RpMauEntry ::= SEQUENCE { + rpMauGroupIndex Integer32, + rpMauPortIndex Integer32, + rpMauIndex Integer32, + rpMauType AutonomousType, + rpMauStatus INTEGER, + rpMauMediaAvailable IANAifMauMediaAvailable, + rpMauMediaAvailableStateExits Counter32, + rpMauJabberState INTEGER, + rpMauJabberingStateEnters Counter32, + rpMauFalseCarriers Counter32 +} + +rpMauGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex." + REFERENCE + "RFC 2108, rptrGroupIndex." + ::= { rpMauEntry 1 } + +rpMauPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected." + REFERENCE + "RFC 2108, rptrPortIndex." + ::= { rpMauEntry 2 } + +rpMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { rpMauEntry 3 } + +rpMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned." + REFERENCE + "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { rpMauEntry 4 } + +rpMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { rpMauEntry 5 } + +rpMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC." + REFERENCE + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { rpMauEntry 6 } + +rpMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 7 } + +rpMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { rpMauEntry 8 } + +rpMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 9 } + +rpMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 10 } + +rpJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to the ports of a repeater." + ::= { dot3RpMauBasicGroup 2 } + +rpJackEntry OBJECT-TYPE + SYNTAX RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpJackIndex } + ::= { rpJackTable 1 } + +RpJackEntry ::= SEQUENCE { + rpJackIndex Integer32, + rpJackType IANAifJackType +} + +rpJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)." + ::= { rpJackEntry 1 } + +rpJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { rpJackEntry 2 } + +dot3IfMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 2 } + +ifMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information + about MAU(s) attached to an interface." + ::= { dot3IfMauBasicGroup 1 } + +ifMauEntry OBJECT-TYPE + SYNTAX IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauTable 1 } + +IfMauEntry ::= SEQUENCE { + ifMauIfIndex InterfaceIndex, + ifMauIndex Integer32, + ifMauType AutonomousType, + ifMauStatus INTEGER, + ifMauMediaAvailable IANAifMauMediaAvailable, + ifMauMediaAvailableStateExits Counter32, + ifMauJabberState INTEGER, + ifMauJabberingStateEnters Counter32, + ifMauFalseCarriers Counter32, + ifMauTypeList Integer32, + ifMauDefaultType AutonomousType, + ifMauAutoNegSupported TruthValue, + ifMauTypeListBits IANAifMauTypeListBits, + ifMauHCFalseCarriers Counter64 +} + +ifMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE + "RFC 2863, ifIndex" + ::= { ifMauEntry 1 } + +ifMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { ifMauEntry 2 } + +ifMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode." + REFERENCE + "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { ifMauEntry 3 } + +ifMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { ifMauEntry 4 } + +ifMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC." + REFERENCE + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { ifMauEntry 5 } + +ifMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 6 } + +ifMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { ifMauEntry 7 } + +ifMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 8 } + +ifMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 9 } + +ifMauTypeList OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability." + ::= { ifMauEntry 10 } + +ifMauDefaultType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + ::= { ifMauEntry 11 } + +ifMauAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not + auto-negotiation is supported on this MAU." + ::= { ifMauEntry 12 } + +ifMauTypeListBits OBJECT-TYPE + SYNTAX IANAifMauTypeListBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC." + ::= { ifMauEntry 13 } + +ifMauHCFalseCarriers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 14 } + +ifJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to an interface." + ::= { dot3IfMauBasicGroup 2 } + +ifJackEntry OBJECT-TYPE + SYNTAX IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { ifMauIfIndex, ifMauIndex, ifJackIndex } + ::= { ifJackTable 1 } + +IfJackEntry ::= SEQUENCE { + ifJackIndex Integer32, + ifJackType IANAifJackType +} + +ifJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU." + ::= { ifJackEntry 1 } + +ifJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { ifJackEntry 2 } + +dot3BroadMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 3 } + +broadMauBasicTable OBJECT-TYPE + SYNTAX SEQUENCE OF BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces." + ::= { dot3BroadMauBasicGroup 1 } + +broadMauBasicEntry OBJECT-TYPE + SYNTAX BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU." + INDEX { broadMauIfIndex, broadMauIndex } + ::= { broadMauBasicTable 1 } + +BroadMauBasicEntry ::= SEQUENCE { + broadMauIfIndex InterfaceIndex, + broadMauIndex Integer32, + broadMauXmtRcvSplitType INTEGER, + broadMauXmtCarrierFreq Integer32, + broadMauTranslationFreq Integer32 +} + +broadMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE + "RFC 2863, ifIndex." + ::= { broadMauBasicEntry 1 } + +broadMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { broadMauBasicEntry 2 } + +broadMauXmtRcvSplitType OBJECT-TYPE + SYNTAX INTEGER { other(1), single(2), dual(3) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero." + REFERENCE + "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType." + ::= { broadMauBasicEntry 3 } + +broadMauXmtCarrierFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency." + ::= { broadMauBasicEntry 4 } + +broadMauTranslationFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency." + ::= { broadMauBasicEntry 5 } + +dot3IfMauAutoNegGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 5 } + +ifMauAutoNegTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function." + ::= { dot3IfMauAutoNegGroup 1 } + +ifMauAutoNegEntry OBJECT-TYPE + SYNTAX IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauAutoNegTable 1 } + +IfMauAutoNegEntry ::= SEQUENCE { + ifMauAutoNegAdminStatus INTEGER, + ifMauAutoNegRemoteSignaling INTEGER, + ifMauAutoNegConfig INTEGER, + ifMauAutoNegCapability Integer32, + ifMauAutoNegCapAdvertised Integer32, + ifMauAutoNegCapReceived Integer32, + ifMauAutoNegRestart INTEGER, + ifMauAutoNegCapabilityBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapAdvertisedBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapReceivedBits IANAifMauAutoNegCapBits, + ifMauAutoNegRemoteFaultAdvertised INTEGER, + ifMauAutoNegRemoteFaultReceived INTEGER +} + +ifMauAutoNegAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function." + REFERENCE + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl." + ::= { ifMauAutoNegEntry 1 } + +ifMauAutoNegRemoteSignaling OBJECT-TYPE + SYNTAX INTEGER { detected(1), notdetected(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received." + REFERENCE + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling." + ::= { ifMauAutoNegEntry 2 } + +ifMauAutoNegConfig OBJECT-TYPE + SYNTAX INTEGER { other(1), configuring(2), complete(3), + disabled(4), parallelDetectFail(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]." + REFERENCE + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + ::= { ifMauAutoNegEntry 4 } + +ifMauAutoNegCapability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB." + REFERENCE + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 5 } + +ifMauAutoNegCapAdvertised OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 6 } + +ifMauAutoNegCapReceived OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 7 } + +ifMauAutoNegRestart OBJECT-TYPE + SYNTAX INTEGER { restart(1), norestart(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect." + REFERENCE + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig." + ::= { ifMauAutoNegEntry 8 } + +ifMauAutoNegCapabilityBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 9 } + +ifMauAutoNegCapAdvertisedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 10 } + +ifMauAutoNegCapReceivedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 11 } + +ifMauAutoNegRemoteFaultAdvertised OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 12 } + +ifMauAutoNegRemoteFaultReceived OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 13 } + +mauModConf OBJECT IDENTIFIER + ::= { mauMod 1 } + +mauModCompls OBJECT IDENTIFIER + ::= { mauModConf 1 } + +mauModObjGrps OBJECT IDENTIFIER + ::= { mauModConf 2 } + +mauModNotGrps OBJECT IDENTIFIER + ::= { mauModConf 3 } + +rpMauJabberTrap NOTIFICATION-TYPE + OBJECTS { rpMauJabberState } + STATUS current + DESCRIPTION + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 1 } + +ifMauJabberTrap NOTIFICATION-TYPE + OBJECTS { ifMauJabberState } + STATUS current + DESCRIPTION + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 2 } + +mauRpGrpBasic OBJECT-GROUP + OBJECTS { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, rpMauType, + rpMauStatus, rpMauMediaAvailable, + rpMauMediaAvailableStateExits, rpMauJabberState, + rpMauJabberingStateEnters } + STATUS current + DESCRIPTION + "Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 1 } + +mauRpGrp100Mbs OBJECT-GROUP + OBJECTS { rpMauFalseCarriers } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability." + ::= { mauModObjGrps 2 } + +mauRpGrpJack OBJECT-GROUP + OBJECTS { rpJackType } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + repeater ports with managed jacks." + ::= { mauModObjGrps 3 } + +mauIfGrpBasic OBJECT-GROUP + OBJECTS { ifMauIfIndex, ifMauIndex, ifMauType, ifMauStatus, + ifMauMediaAvailable, ifMauMediaAvailableStateExits, + ifMauJabberState, ifMauJabberingStateEnters } + STATUS current + DESCRIPTION + "Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 4 } + +mauIfGrp100Mbs OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, ifMauTypeList, ifMauDefaultType, + ifMauAutoNegSupported } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity." + ::= { mauModObjGrps 5 } + +mauIfGrpJack OBJECT-GROUP + OBJECTS { ifJackType } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with managed jacks." + ::= { mauModObjGrps 6 } + +mauIfGrpAutoNeg OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapability, + ifMauAutoNegCapAdvertised, ifMauAutoNegCapReceived, + ifMauAutoNegRestart } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2." + ::= { mauModObjGrps 7 } + +mauBroadBasic OBJECT-GROUP + OBJECTS { broadMauIfIndex, broadMauIndex, + broadMauXmtRcvSplitType, broadMauXmtCarrierFreq, + broadMauTranslationFreq } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations." + ::= { mauModObjGrps 8 } + +mauIfGrpHighCapacity OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, ifMauTypeListBits, + ifMauDefaultType, ifMauAutoNegSupported } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability." + ::= { mauModObjGrps 9 } + +mauIfGrpAutoNeg2 OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapabilityBits, + ifMauAutoNegCapAdvertisedBits, + ifMauAutoNegCapReceivedBits, ifMauAutoNegRestart } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 10 } + +mauIfGrpAutoNeg1000Mbps OBJECT-GROUP + OBJECTS { ifMauAutoNegRemoteFaultAdvertised, + ifMauAutoNegRemoteFaultReceived } + STATUS current + DESCRIPTION + "Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 11 } + +mauIfGrpHCStats OBJECT-GROUP + OBJECTS { ifMauHCFalseCarriers } + STATUS current + DESCRIPTION + "Conformance for high capacity statistics for + MAUs attached to interfaces." + ::= { mauModObjGrps 12 } + +rpMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { rpMauJabberTrap } + STATUS current + DESCRIPTION + "Notifications for repeater MAUs." + ::= { mauModNotGrps 1 } + +ifMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { ifMauJabberTrap } + STATUS current + DESCRIPTION + "Notifications for interface MAUs." + ::= { mauModNotGrps 2 } + +mauModRpCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only." + + MODULE -- this module + + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to repeater ports." + + ::= { mauModCompls 1 } + +mauModIfCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + capability." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauBroadBasic + DESCRIPTION + "Implementation of this group is mandatory + for broadband MAUs." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + ::= { mauModCompls 2 } + +mauModIfCompl2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 3 } + +mauModRpCompl2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108)." + + MODULE -- this module + + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to repeater ports." + + OBJECT rpMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 4 } + +mauModIfCompl3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635)." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpHCStats + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s capacity, and + is recommended for MAUs that have 100Mb/s + capacity." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 5 } + +END -- end of module MAU-MIB. diff --git a/test/dumps/smiv2-smiv2/Makefile.am b/test/dumps/smiv2-smiv2/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/smiv2-smiv2/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/smiv2-smiv2/Makefile.in b/test/dumps/smiv2-smiv2/Makefile.in new file mode 100644 index 0000000..26d959a --- /dev/null +++ b/test/dumps/smiv2-smiv2/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/smiv2-smiv2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/smiv2-smiv2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/smiv2-smiv2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/smiv2-smiv2/RMON2-MIB b/test/dumps/smiv2-smiv2/RMON2-MIB new file mode 100644 index 0000000..8937060 --- /dev/null +++ b/test/dumps/smiv2-smiv2/RMON2-MIB @@ -0,0 +1,5590 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +RMON2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + ifIndex + FROM IF-MIB + OwnerString, channelEntry, etherStatsEntry, filter, filterEntry, + history, historyControlEntry, hostControlEntry, hosts, matrix, + matrixControlEntry, statistics + FROM RMON-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Gauge32, Integer32, IpAddress, MODULE-IDENTITY, + OBJECT-TYPE, TimeTicks, mib-2 + FROM SNMPv2-SMI + DisplayString, RowStatus, TEXTUAL-CONVENTION, TimeStamp + FROM SNMPv2-TC + ringStationControlEntry, sourceRoutingStatsEntry, tokenRing, + tokenRingMLStatsEntry, tokenRingPStatsEntry + FROM TOKEN-RING-RMON-MIB; + +rmon MODULE-IDENTITY + LAST-UPDATED "200605020000Z" + ORGANIZATION + "IETF RMON MIB Working Group" + CONTACT-INFO + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: " + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices." + REVISION "200605020000Z" + DESCRIPTION + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics." + REVISION "200207080000Z" + DESCRIPTION + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications." + REVISION "199605270000Z" + DESCRIPTION + "Original version. Published as RFC 2021." + ::= { mib-2 16 } + + +ZeroBasedCounter32 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that 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 value of the + sysUpTime object at 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. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects." + SYNTAX TimeTicks + +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. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk." + 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 [RFC2863], 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 + +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 store 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, i.e., + 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 OCTET STRING (SIZE(0..255)) + +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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 } + +tokenRingMLStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 6 } + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 } + +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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 } + +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 } + +ringStationControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 } + +protocolDir OBJECT IDENTIFIER + ::= { rmon 11 } + +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 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex Integer32, + protocolDirDescr DisplayString, + protocolDirType BITS, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..128)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner 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 that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 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 + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether 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 (SIZE(1..32)) + 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 that 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 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 this protocol directory entry can be extended + by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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, 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 + 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, 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 } + +protocolDist OBJECT IDENTIFIER + ::= { rmon 12 } + +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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 } + +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 that 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 and 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 of this protocol type received + without errors. 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 of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol." + ::= { protocolDistStatsEntry 2 } + +addressMap OBJECT IDENTIFIER + ::= { rmon 13 } + +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 mappings from network + layer address to physical address to interface. + + 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 mappings from network layer address to physical + address to interface. + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE(1..255)) + 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 [RFC2863], 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 [RFC2108], 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 that 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 } + +nlHost OBJECT IDENTIFIER + ::= { rmon 14 } + +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 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations." + 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 (SIZE(1..255)) + 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 + octets in packets that contained errors. + + Note that 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 + octets in packets that contained errors. + + Note that 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 } + +nlMatrix OBJECT IDENTIFIER + ::= { rmon 15 } + +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 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 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 that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE(1..255)) + 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 (SIZE(1..255)) + 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 octets in packets that + contained errors. + + Note that 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 } + +nlMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE(1..255)) + 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 (SIZE(1..255)) + 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 octets in packets that + contained errors. + + Note that 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 topN 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 topN 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), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object." + ::= { 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 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 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 topN 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 whether a report was missed." + ::= { 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 (SIZE(1..255)) + 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 (SIZE(1..255)) + 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 } + +alHost OBJECT IDENTIFIER + ::= { rmon 16 } + +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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets in packets that + contained errors. + + Note that 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 octets in packets that + contained errors. + + Note that 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 } + +alMatrix OBJECT IDENTIFIER + ::= { rmon 17 } + +alMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets + in packets that contained errors. + + Note that 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 } + +alMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets + in packets that contained errors. + + Note that 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 topN 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 topN 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), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets 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 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 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 topN 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 whether a report was missed." + ::= { 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 (SIZE(1..255)) + 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 (SIZE(1..255)) + 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 } + +usrHistory OBJECT IDENTIFIER + ::= { rmon 18 } + +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 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 + 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 to 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 } + +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. See USM [RFC3414] and VACM [RFC3415] for more + information. + + 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 } + +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 that 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 that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + 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)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, 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 the 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 } + +probeConfig OBJECT IDENTIFIER + ::= { rmon 19 } + +probeCapabilities OBJECT-TYPE + 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 + time zone information (fields 8-10) is not + present, and that 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 to restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { probeConfig 5 } + +probeDownloadFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-write + STATUS deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { notDownloading(1), downloadToPROM(2), + downloadToRAM(3) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), 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(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) 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). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { 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 deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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, + serialModemInitString ControlString, + serialModemHangUpString ControlString, + serialModemConnectResp DisplayString, + serialModemNoConnectResp DisplayString, + serialDialoutTimeout Integer32, + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of incoming connection to be expected on this + serial interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { other(1), slip(2), ppp(3) } + MAX-ACCESS read-create + STATUS deprecated + 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 deprecated + 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + 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 deprecated + 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 deprecated + 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 deprecated + 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 deprecated + DESCRIPTION + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + 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 is 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 them very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + 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 is 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 them very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + 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-write + STATUS deprecated + 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 } + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entry includes a destination IP address to which + traps are sent 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 deprecated + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-create + STATUS deprecated + 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, as long as no access control mechanism + precludes it (e.g., VACM). + + 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 deprecated + DESCRIPTION + "The protocol with which this trap is to be sent." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The destination address for 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 deprecated + 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 deprecated + 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 } + +serialConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + 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 deprecated + DESCRIPTION + "The type of outgoing connection to be made. 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 deprecated + DESCRIPTION + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + 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 deprecated + 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 is a zero-length string + or cannot be correctly parsed as a ConnectString, 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 } + +rmonConformance OBJECT IDENTIFIER + ::= { rmon 20 } + +rmon2MIBCompliances OBJECT IDENTIFIER + ::= { rmonConformance 1 } + +rmon2MIBGroups OBJECT IDENTIFIER + ::= { rmonConformance 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 and controls 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 deprecated + DESCRIPTION + "This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { 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 deprecated + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 13 } + +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 + that implement RMON [RFC2819]." + + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + ::= { 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 + that implement RMON [RFC2819]." + + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + OBJECT alMatrixTopNControlRateBase + SYNTAX INTEGER { alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase." + + ::= { rmon2MIBCompliances 2 } + +END -- end of module RMON2-MIB. diff --git a/test/dumps/smiv2-smiv2/SNMPv2-MIB b/test/dumps/smiv2-smiv2/SNMPv2-MIB new file mode 100644 index 0000000..ba45569 --- /dev/null +++ b/test/dumps/smiv2-smiv2/SNMPv2-MIB @@ -0,0 +1,804 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +SNMPv2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Integer32, MODULE-IDENTITY, NOTIFICATION-TYPE, + OBJECT-TYPE, TimeTicks, mib-2, snmpModules + FROM SNMPv2-SMI + DisplayString, TestAndIncr, TimeStamp + FROM SNMPv2-TC; + +snmpMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" + ORGANIZATION + "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + DESCRIPTION + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices." + REVISION "200210160000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 3418." + REVISION "199511090000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 1907." + REVISION "199304010000Z" + DESCRIPTION + "The initial revision of this MIB module was published + as RFC 1450." + ::= { snmpModules 1 } + + +system OBJECT IDENTIFIER + ::= { mib-2 1 } + +sysDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the entity. This value should + include the full name and version identification of + the system's hardware type, software operating-system, + and networking software." + ::= { system 1 } + +sysObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the + network management subsystem contained in the entity. + This value is allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides an easy and + unambiguous means for determining `what kind of box' is + being managed. For example, if vendor `Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'." + ::= { system 2 } + +sysUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized." + ::= { system 3 } + +sysContact OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual identification of the contact person for + this managed node, together with information on how + to contact this person. If no contact information is + known, the value is the zero-length string." + ::= { system 4 } + +sysName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administratively-assigned name for this managed + node. By convention, this is the node's fully-qualified + domain name. If the name is unknown, the value is + the zero-length string." + ::= { system 5 } + +sysLocation OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string." + ::= { system 6 } + +sysServices OBJECT-TYPE + SYNTAX Integer32 (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the set of services that this + entity may potentially offer. The value is a sum. + + + + This sum initially takes the value zero. Then, for + each layer, L, in the range 1 through 7, that this node + performs transactions for, 2 raised to (L - 1) is added + to the sum. For example, a node which performs only + routing functions would have a value of 4 (2^(3-1)). + In contrast, a node which is a host offering application + services would have a value of 72 (2^(4-1) + 2^(7-1)). + Note that in the context of the Internet suite of + protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + + For systems including OSI protocols, layers 5 and 6 + may also be counted." + ::= { system 7 } + +sysORLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID." + ::= { system 8 } + +sysORTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysOREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows." + ::= { system 9 } + +sysOREntry OBJECT-TYPE + SYNTAX SysOREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the sysORTable." + INDEX { sysORIndex } + ::= { sysORTable 1 } + +SysOREntry ::= SEQUENCE { + sysORIndex Integer32, + sysORID OBJECT IDENTIFIER, + sysORDescr DisplayString, + sysORUpTime TimeStamp +} + +sysORIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable." + ::= { sysOREntry 1 } + +sysORID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder." + ::= { sysOREntry 2 } + +sysORDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the capabilities identified + by the corresponding instance of sysORID." + ::= { sysOREntry 3 } + +sysORUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this conceptual + row was last instantiated." + ::= { sysOREntry 4 } + +snmp OBJECT IDENTIFIER + ::= { mib-2 11 } + +snmpInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages delivered to the SNMP + entity from the transport service." + ::= { snmp 1 } + +snmpOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service." + ::= { snmp 2 } + +snmpInBadVersions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version." + ::= { snmp 3 } + +snmpInBadCommunityNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value." + ::= { snmp 5 } + +snmpInASNParseErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages." + ::= { snmp 6 } + +snmpInTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `tooBig'." + ::= { snmp 8 } + +snmpInNoSuchNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `noSuchName'." + ::= { snmp 9 } + +snmpInBadValues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `badValue'." + ::= { snmp 10 } + +snmpInReadOnlys OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number valid SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `readOnly'. It should + be noted that it is a protocol error to generate an + SNMP PDU which contains the value `readOnly' in the + error-status field, as such this object is provided + as a means of detecting incorrect implementations of + the SNMP." + ::= { snmp 11 } + +snmpInGenErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `genErr'." + ::= { snmp 12 } + +snmpInTotalReqVars OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of MIB objects which have been + retrieved successfully by the SNMP protocol entity + as the result of receiving valid SNMP Get-Request + and Get-Next PDUs." + ::= { snmp 13 } + +snmpInTotalSetVars OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of MIB objects which have been + altered successfully by the SNMP protocol entity as + the result of receiving valid SNMP Set-Request PDUs." + ::= { snmp 14 } + +snmpInGetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity." + ::= { snmp 15 } + +snmpInGetNexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity." + ::= { snmp 16 } + +snmpInSetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity." + ::= { snmp 17 } + +snmpInGetResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity." + ::= { snmp 18 } + +snmpInTraps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity." + ::= { snmp 19 } + +snmpOutTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `tooBig.'" + ::= { snmp 20 } + +snmpOutNoSuchNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status was `noSuchName'." + ::= { snmp 21 } + +snmpOutBadValues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `badValue'." + ::= { snmp 22 } + +snmpOutGenErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `genErr'." + ::= { snmp 24 } + +snmpOutGetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 25 } + +snmpOutGetNexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 26 } + +snmpOutSetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 27 } + +snmpOutGetResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 28 } + +snmpOutTraps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 29 } + +snmpEnableAuthenTraps OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the SNMP entity is permitted to + generate authenticationFailure traps. The value of this + object overrides any configuration information; as such, + it provides a means whereby all authenticationFailure + traps may be disabled. + + Note that it is strongly recommended that this object + be stored in non-volatile memory so that it remains + constant across re-initializations of the network + management system." + ::= { snmp 30 } + +snmpSilentDrops OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Confirmed Class PDUs (such as + GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the size of a reply + containing an alternate Response Class PDU (such as a + Response-PDU) with an empty variable-bindings field + was greater than either a local constraint or the + maximum message size associated with the originator of + the request." + ::= { snmp 31 } + +snmpProxyDrops OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Confirmed Class PDUs + (such as GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the transmission of + the (possibly translated) message to a proxy target + failed in a manner (other than a time-out) such that + no Response Class PDU (such as a Response-PDU) could + be returned." + ::= { snmp 32 } + +snmpMIBObjects OBJECT IDENTIFIER + ::= { snmpMIB 1 } + +snmpTrap OBJECT IDENTIFIER + ::= { snmpMIBObjects 4 } + +snmpTrapOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The authoritative identification of the notification + currently being sent. This variable occurs as + the second varbind in every SNMPv2-Trap-PDU and + InformRequest-PDU." + ::= { snmpTrap 1 } + +snmpTrapEnterprise OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind." + ::= { snmpTrap 3 } + +snmpTraps OBJECT IDENTIFIER + ::= { snmpMIBObjects 5 } + +snmpSet OBJECT IDENTIFIER + ::= { snmpMIBObjects 6 } + +snmpSetSerialNo OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP set operation. + + This object is used for coarse-grain coordination. + To achieve fine-grain coordination, one or more similar + objects might be defined within each MIB group, as + appropriate." + ::= { snmpSet 1 } + +snmpMIBConformance OBJECT IDENTIFIER + ::= { snmpMIB 2 } + +snmpMIBCompliances OBJECT IDENTIFIER + ::= { snmpMIBConformance 1 } + +snmpMIBGroups OBJECT IDENTIFIER + ::= { snmpMIBConformance 2 } + +coldStart NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered." + ::= { snmpTraps 1 } + +warmStart NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered." + ::= { snmpTraps 2 } + +authenticationFailure NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated." + ::= { snmpTraps 5 } + +snmpSetGroup OBJECT-GROUP + OBJECTS { snmpSetSerialNo } + STATUS current + DESCRIPTION + "A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the set operation." + ::= { snmpMIBGroups 5 } + +systemGroup OBJECT-GROUP + OBJECTS { sysDescr, sysObjectID, sysUpTime, sysContact, sysName, + sysLocation, sysServices, sysORLastChange, sysORID, + sysORUpTime, sysORDescr } + STATUS current + DESCRIPTION + "The system group defines objects which are common to all + managed systems." + ::= { snmpMIBGroups 6 } + +snmpBasicNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { coldStart, authenticationFailure } + STATUS current + DESCRIPTION + "The basic notifications implemented by an SNMP entity + supporting command responder applications." + ::= { snmpMIBGroups 7 } + +snmpGroup OBJECT-GROUP + OBJECTS { snmpInPkts, snmpInBadVersions, snmpInASNParseErrs, + snmpSilentDrops, snmpProxyDrops, snmpEnableAuthenTraps } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + and control of an SNMP entity." + ::= { snmpMIBGroups 8 } + +snmpCommunityGroup OBJECT-GROUP + OBJECTS { snmpInBadCommunityNames, snmpInBadCommunityUses } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication." + ::= { snmpMIBGroups 9 } + +snmpObsoleteGroup OBJECT-GROUP + OBJECTS { snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames, + snmpInBadValues, snmpInReadOnlys, snmpInGenErrs, + snmpInTotalReqVars, snmpInTotalSetVars, + snmpInGetRequests, snmpInGetNexts, snmpInSetRequests, + snmpInGetResponses, snmpInTraps, snmpOutTooBigs, + snmpOutNoSuchNames, snmpOutBadValues, snmpOutGenErrs, + snmpOutGetRequests, snmpOutGetNexts, + snmpOutSetRequests, snmpOutGetResponses, snmpOutTraps } + STATUS obsolete + DESCRIPTION + "A collection of objects from RFC 1213 made obsolete + by this MIB module." + ::= { snmpMIBGroups 10 } + +snmpWarmStartNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { warmStart } + STATUS current + DESCRIPTION + "An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered." + ::= { snmpMIBGroups 11 } + +snmpNotificationGroup OBJECT-GROUP + OBJECTS { snmpTrapOID, snmpTrapEnterprise } + STATUS current + DESCRIPTION + "These objects are required for entities + which support notification originator applications." + ::= { snmpMIBGroups 12 } + +snmpBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2." + + MODULE -- this module + + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMPv2 entities which + support community-based authentication." + + ::= { snmpMIBCompliances 2 } + +snmpBasicComplianceRev2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + implement this MIB module." + + MODULE -- this module + + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMP entities which + support community-based authentication." + + GROUP snmpWarmStartNotificationGroup + DESCRIPTION + "This group is mandatory for an SNMP entity which + supports command responder applications, and is + able to reinitialize itself such that its + configuration is unaltered." + + ::= { snmpMIBCompliances 3 } + +END -- end of module SNMPv2-MIB. diff --git a/test/dumps/smiv2/IF-MIB b/test/dumps/smiv2/IF-MIB new file mode 100644 index 0000000..928af3d --- /dev/null +++ b/test/dumps/smiv2/IF-MIB @@ -0,0 +1,1721 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifType + FROM IANAifType-MIB + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + snmpTraps + FROM SNMPv2-MIB + Counter32, Counter64, Gauge32, Integer32, MODULE-IDENTITY, + NOTIFICATION-TYPE, OBJECT-TYPE, TimeTicks, mib-2 + FROM SNMPv2-SMI + AutonomousType, DisplayString, PhysAddress, RowStatus, + TEXTUAL-CONVENTION, TestAndIncr, TimeStamp, TruthValue + FROM SNMPv2-TC; + +ifMIB MODULE-IDENTITY + LAST-UPDATED "200006140000Z" + ORGANIZATION + "IETF Interfaces MIB Working Group" + CONTACT-INFO + " Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com" + DESCRIPTION + "The MIB module to describe generic objects for network + interface sub-layers. This MIB is an updated version of + MIB-II's ifTable, and incorporates the extensions defined in + RFC 1229." + REVISION "200006140000Z" + DESCRIPTION + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863." + REVISION "199602282155Z" + DESCRIPTION + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233." + REVISION "199311082155Z" + DESCRIPTION + "Initial revision, published as part of RFC 1573." + ::= { mib-2 31 } + + +OwnerString ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS deprecated + 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 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each interface or + interface sub-layer in the managed system. It is + recommended that values are assigned contiguously starting + from 1. The value for each interface sub-layer must remain + constant at least from one re-initialization of the entity's + network management system to the next re-initialization." + SYNTAX Integer32 (1..2147483647) + +InterfaceIndexOrZero ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "This textual convention is an extension of the + InterfaceIndex convention. The latter defines a greater + than zero value used to identify an interface or interface + sub-layer in the managed system. This extension permits the + additional value of zero. the value zero is object-specific + and must therefore be defined as part of the description of + any object which uses this syntax. Examples of the usage of + zero might include situations where interface was unknown, + or when none or all interfaces need to be referenced." + SYNTAX Integer32 (0..2147483647) + +interfaces OBJECT IDENTIFIER + ::= { mib-2 2 } + +ifNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network interfaces (regardless of their + current state) present on this system." + ::= { interfaces 1 } + +ifTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of interface entries. The number of entries is + given by the value of ifNumber." + ::= { interfaces 2 } + +ifEntry OBJECT-TYPE + SYNTAX IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing management information applicable to a + particular interface." + INDEX { ifIndex } + ::= { ifTable 1 } + +IfEntry ::= SEQUENCE { + ifIndex InterfaceIndex, + ifDescr DisplayString, + ifType IANAifType, + ifMtu Integer32, + ifSpeed Gauge32, + ifPhysAddress PhysAddress, + ifAdminStatus INTEGER, + ifOperStatus INTEGER, + ifLastChange TimeTicks, + ifInOctets Counter32, + ifInUcastPkts Counter32, + ifInNUcastPkts Counter32, + ifInDiscards Counter32, + ifInErrors Counter32, + ifInUnknownProtos Counter32, + ifOutOctets Counter32, + ifOutUcastPkts Counter32, + ifOutNUcastPkts Counter32, + ifOutDiscards Counter32, + ifOutErrors Counter32, + ifOutQLen Gauge32, + ifSpecific OBJECT IDENTIFIER +} + +ifIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each interface. It + is recommended that values are assigned contiguously + starting from 1. The value for each interface sub-layer + must remain constant at least from one re-initialization of + the entity's network management system to the next re- + initialization." + ::= { ifEntry 1 } + +ifDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software." + ::= { ifEntry 2 } + +ifType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of interface. Additional values for ifType are + assigned by the Internet Assigned Numbers Authority (IANA), + through updating the syntax of the IANAifType textual + convention." + ::= { ifEntry 3 } + +ifMtu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest packet which can be sent/received + on the interface, specified in octets. For interfaces that + are used for transmitting network datagrams, this is the + size of the largest network datagram that can be sent on the + interface." + ::= { ifEntry 4 } + +ifSpeed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the interface's current bandwidth in bits + per second. For interfaces which do not vary in bandwidth + or for those where no accurate estimation can be made, this + object should contain the nominal bandwidth. If the + bandwidth of the interface is greater than the maximum value + reportable by this object then this object should report its + maximum value (4,294,967,295) and ifHighSpeed must be used + to report the interace's speed. For a sub-layer which has + no concept of bandwidth, this object should be zero." + ::= { ifEntry 5 } + +ifPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific MIB + must define the bit and byte ordering and the format of the + value of this object. For interfaces which do not have such + an address (e.g., a serial line), this object should contain + an octet string of zero length." + ::= { ifEntry 6 } + +ifAdminStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), testing(3) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state)." + ::= { ifEntry 7 } + +ifOperStatus OBJECT-TYPE + SYNTAX INTEGER { up(1), down(2), testing(3), unknown(4), + dormant(5), notPresent(6), lowerLayerDown(7) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components." + ::= { ifEntry 8 } + +ifLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the interface entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value." + ::= { ifEntry 9 } + +ifInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received on the interface, + + + including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 10 } + +ifInUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 11 } + +ifInNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast or + broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifInMulticastPkts and + ifInBroadcastPkts." + ::= { ifEntry 12 } + +ifInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets which were chosen to be + discarded even though no errors had been detected to prevent + + + their being deliverable to a higher-layer protocol. One + possible reason for discarding such a packet could be to + free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 13 } + +ifInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of inbound + transmission units that contained errors preventing them + from being deliverable to a higher-layer protocol. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 14 } + +ifInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of packets + received via the interface which were discarded because of + an unknown or unsupported protocol. For character-oriented + or fixed-length interfaces that support protocol + multiplexing the number of transmission units received via + the interface which were discarded because of an unknown or + unsupported protocol. For any interface that does not + support protocol multiplexing, this counter will always be + 0. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 15 } + +ifOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 16 } + +ifOutUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 17 } + +ifOutNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifOutMulticastPkts + and ifOutBroadcastPkts." + ::= { ifEntry 18 } + +ifOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets which were chosen to be + discarded even though no errors had been detected to prevent + their being transmitted. One possible reason for discarding + such a packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 19 } + +ifOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifEntry 20 } + +ifOutQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The length of the output packet queue (in packets)." + ::= { ifEntry 21 } + +ifSpecific OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "A reference to MIB definitions specific to the particular + media being used to realize the interface. It is + + + recommended that this value point to an instance of a MIB + object in the media-specific MIB, i.e., that this object + have the semantics associated with the InstancePointer + textual convention defined in RFC 2579. In fact, it is + recommended that the media-specific MIB specify what value + ifSpecific should/can take for values of ifType. If no MIB + definitions specific to the particular media are available, + the value should be set to the OBJECT IDENTIFIER { 0 0 }." + ::= { ifEntry 22 } + +ifMIBObjects OBJECT IDENTIFIER + ::= { ifMIB 1 } + +ifXTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of interface entries. The number of entries is + given by the value of ifNumber. This table contains + additional objects for the interface table." + ::= { ifMIBObjects 1 } + +ifXEntry OBJECT-TYPE + SYNTAX IfXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing additional management information + applicable to a particular interface." + AUGMENTS { ifEntry } + ::= { ifXTable 1 } + +IfXEntry ::= SEQUENCE { + ifName DisplayString, + ifInMulticastPkts Counter32, + ifInBroadcastPkts Counter32, + ifOutMulticastPkts Counter32, + ifOutBroadcastPkts Counter32, + ifHCInOctets Counter64, + ifHCInUcastPkts Counter64, + ifHCInMulticastPkts Counter64, + ifHCInBroadcastPkts Counter64, + ifHCOutOctets Counter64, + ifHCOutUcastPkts Counter64, + ifHCOutMulticastPkts Counter64, + ifHCOutBroadcastPkts Counter64, + ifLinkUpDownTrapEnable INTEGER, + ifHighSpeed Gauge32, + ifPromiscuousMode TruthValue, + ifConnectorPresent TruthValue, + ifAlias DisplayString, + ifCounterDiscontinuityTime TimeStamp +} + +ifName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual name of the interface. The value of this + object should be the name of the interface as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name, such as `le0' or a simple port number, such as `1', + depending on the interface naming syntax of the device. If + several entries in the ifTable together represent a single + interface as named by the device, then each will have the + same value of ifName. Note that for an agent which responds + to SNMP queries concerning an interface on some other + (proxied) device, then the value of ifName for such an + interface is the proxied device's local name for it. + + If there is no local name, or this object is otherwise not + applicable, then this object contains a zero-length string." + ::= { ifXEntry 1 } + +ifInMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 2 } + +ifInBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 3 } + +ifOutMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 4 } + +ifOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 5 } + +ifHCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received on the interface, + including framing characters. This object is a 64-bit + version of ifInOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 6 } + +ifHCInUcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. This object is a + 64-bit version of ifInUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 7 } + +ifHCInMulticastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifInMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 8 } + +ifHCInBroadcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. This object is a 64-bit version + of ifInBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 9 } + +ifHCOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters. This object is a + 64-bit version of ifOutOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 10 } + +ifHCOutUcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. This object is a + 64-bit version of ifOutUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 11 } + +ifHCOutMulticastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifOutMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 12 } + +ifHCOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. This object is a 64-bit version + of ifOutBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime." + ::= { ifXEntry 13 } + +ifLinkUpDownTrapEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether linkUp/linkDown traps should be generated + for this interface. + + By default, this object should have the value enabled(1) for + interfaces which do not operate on 'top' of any other + interface (as defined in the ifStackTable), and disabled(2) + otherwise." + ::= { ifXEntry 14 } + +ifHighSpeed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the interface's current bandwidth in units + of 1,000,000 bits per second. If this object reports a + value of `n' then the speed of the interface is somewhere in + the range of `n-500,000' to `n+499,999'. For interfaces + which do not vary in bandwidth or for those where no + accurate estimation can be made, this object should contain + the nominal bandwidth. For a sub-layer which has no concept + of bandwidth, this object should be zero." + ::= { ifXEntry 15 } + +ifPromiscuousMode OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object has a value of false(2) if this interface only + accepts packets/frames that are addressed to this station. + This object has a value of true(1) when the station accepts + all packets/frames transmitted on the media. The value + true(1) is only legal on certain types of media. If legal, + setting this object to a value of true(1) may require the + interface to be reset before becoming effective. + + The value of ifPromiscuousMode does not affect the reception + of broadcast and multicast packets/frames by the interface." + ::= { ifXEntry 16 } + +ifConnectorPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise." + ::= { ifXEntry 17 } + +ifAlias OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..64)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is an 'alias' name for the interface as + specified by a network manager, and provides a non-volatile + 'handle' for the interface. + + On the first instantiation of an interface, the value of + ifAlias associated with that interface is the zero-length + string. As and when a value is written into an instance of + ifAlias through a network management set operation, then the + agent must retain the supplied value in the ifAlias instance + associated with the same interface for as long as that + interface remains instantiated, including across all re- + initializations/reboots of the network management system, + including those which result in a change of the interface's + ifIndex value. + + An example of the value which a network manager might store + in this object for a WAN interface is the (Telco's) circuit + number/identifier of the interface. + + Some agents may support write-access only for interfaces + having particular values of ifType. An agent which supports + write access to this object is required to keep the value in + non-volatile storage, but it may limit the length of new + values depending on how much storage is already occupied by + the current values for other interfaces." + ::= { ifXEntry 18 } + +ifCounterDiscontinuityTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime on the most recent occasion at which + any one or more of this interface's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + + + Counter64 object contained in the ifTable or ifXTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value." + ::= { ifXEntry 19 } + +ifStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing information on the relationships + between the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'on top of' which other sub-layers, where each sub-layer + corresponds to a conceptual row in the ifTable. For + example, when the sub-layer with ifIndex value x runs over + the sub-layer with ifIndex value y, then this table + contains: + + ifStackStatus.x.y=active + + For each ifIndex value, I, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with I. For one of these rows, I + is the value of ifStackHigherLayer; for the other, I is the + value of ifStackLowerLayer. (If I is not involved in + multiplexing, then these are the only two rows associated + with I.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifStackStatus.0.x=active + ifStackStatus.x.0=active " + ::= { ifMIBObjects 2 } + +ifStackEntry OBJECT-TYPE + SYNTAX IfStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs on 'top' of the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable." + INDEX { ifStackHigherLayer, ifStackLowerLayer } + ::= { ifStackTable 1 } + +IfStackEntry ::= SEQUENCE { + ifStackHigherLayer InterfaceIndexOrZero, + ifStackLowerLayer InterfaceIndexOrZero, + ifStackStatus RowStatus +} + +ifStackHigherLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex corresponding to the higher sub-layer + of the relationship, i.e., the sub-layer which runs on 'top' + of the sub-layer identified by the corresponding instance of + ifStackLowerLayer. If there is no higher sub-layer (below + the internetwork layer), then this object has the value 0." + ::= { ifStackEntry 1 } + +ifStackLowerLayer OBJECT-TYPE + SYNTAX InterfaceIndexOrZero + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex corresponding to the lower sub-layer + of the relationship, i.e., the sub-layer which runs 'below' + the sub-layer identified by the corresponding instance of + ifStackHigherLayer. If there is no lower sub-layer, then + this object has the value 0." + ::= { ifStackEntry 2 } + +ifStackStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The status of the relationship between two sub-layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have consequences up + and down the interface stack. Thus, write access to this + object is likely to be inappropriate for some types of + interfaces, and many implementations will choose not to + support write-access for any type of interface." + ::= { ifStackEntry 3 } + +ifTestTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfTestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This table contains one entry per interface. It defines + objects which allow a network manager to instruct an agent + to test an interface for various faults. Tests for an + interface are defined in the media-specific MIB for that + interface. After invoking a test, the object ifTestResult + can be read to determine the outcome. If an agent can not + perform the test, ifTestResult is set to so indicate. The + object ifTestCode can be used to provide further test- + specific or interface-specific (or even enterprise-specific) + information concerning the outcome of the test. Only one + test can be in progress on each interface at any one time. + If one test is in progress when another test is invoked, the + second test is rejected. Some agents may reject a test when + a prior test is active on another interface. + + Before starting a test, a manager-station must first obtain + 'ownership' of the entry in the ifTestTable for the + interface to be tested. This is accomplished with the + ifTestId and ifTestStatus objects as follows: + + try_again: + get (ifTestId, ifTestStatus) + while (ifTestStatus != notInUse) + /* + * Loop while a test is running or some other + * manager is configuring a test. + */ + short delay + get (ifTestId, ifTestStatus) + } + + /* + * Is not being used right now -- let's compete + * to see who gets it. + */ + lock_value = ifTestId + + if ( set(ifTestId = lock_value, ifTestStatus = inUse, + + + ifTestOwner = 'my-IP-address') == FAILURE) + /* + * Another manager got the ifTestEntry -- go + * try again + */ + goto try_again; + + /* + * I have the lock + */ + set up any test parameters. + + /* + * This starts the test + */ + set(ifTestType = test_to_run); + + wait for test completion by polling ifTestResult + + when test completes, agent sets ifTestResult + agent also sets ifTestStatus = 'notInUse' + + retrieve any additional test results, and ifTestId + + if (ifTestId == lock_value+1) results are valid + + A manager station first retrieves the value of the + appropriate ifTestId and ifTestStatus objects, periodically + repeating the retrieval if necessary, until the value of + ifTestStatus is 'notInUse'. The manager station then tries + to set the same ifTestId object to the value it just + retrieved, the same ifTestStatus object to 'inUse', and the + corresponding ifTestOwner object to a value indicating + itself. If the set operation succeeds then the manager has + obtained ownership of the ifTestEntry, and the value of the + ifTestId object is incremented by the agent (per the + semantics of TestAndIncr). Failure of the set operation + indicates that some other manager has obtained ownership of + the ifTestEntry. + + Once ownership is obtained, any test parameters can be + setup, and then the test is initiated by setting ifTestType. + On completion of the test, the agent sets ifTestStatus to + 'notInUse'. Once this occurs, the manager can retrieve the + results. In the (rare) event that the invocation of tests + by two network managers were to overlap, then there would be + a possibility that the first test's results might be + overwritten by the second test's results prior to the first + + + results being read. This unlikely circumstance can be + detected by a network manager retrieving ifTestId at the + same time as retrieving the test results, and ensuring that + the results are for the desired request. + + If ifTestType is not set within an abnormally long period of + time after ownership is obtained, the agent should time-out + the manager, and reset the value of the ifTestStatus object + back to 'notInUse'. It is suggested that this time-out + period be 5 minutes. + + In general, a management station must not retransmit a + request to invoke a test for which it does not receive a + response; instead, it properly inspects an agent's MIB to + determine if the invocation was successful. Only if the + invocation was unsuccessful, is the invocation request + retransmitted. + + Some tests may require the interface to be taken off-line in + order to execute them, or may even require the agent to + reboot after completion of the test. In these + circumstances, communication with the management station + invoking the test may be lost until after completion of the + test. An agent is not required to support such tests. + However, if such tests are supported, then the agent should + make every effort to transmit a response to the request + which invoked the test prior to losing communication. When + the agent is restored to normal service, the results of the + test are properly made available in the appropriate objects. + Note that this requires that the ifIndex value assigned to + an interface must be unchanged even if the test causes a + reboot. An agent must reject any test for which it cannot, + perhaps due to resource constraints, make available at least + the minimum amount of information after that test + completes." + ::= { ifMIBObjects 3 } + +ifTestEntry OBJECT-TYPE + SYNTAX IfTestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "An entry containing objects for invoking tests on an + interface." + AUGMENTS { ifEntry } + ::= { ifTestTable 1 } + +IfTestEntry ::= SEQUENCE { + ifTestId TestAndIncr, + ifTestStatus INTEGER, + ifTestType AutonomousType, + ifTestResult INTEGER, + ifTestCode OBJECT IDENTIFIER, + ifTestOwner OwnerString +} + +ifTestId OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "This object identifies the current invocation of the + interface's test." + ::= { ifTestEntry 1 } + +ifTestStatus OBJECT-TYPE + SYNTAX INTEGER { notInUse(1), inUse(2) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "This object indicates whether or not some manager currently + has the necessary 'ownership' required to invoke a test on + this interface. A write to this object is only successful + when it changes its value from 'notInUse(1)' to 'inUse(2)'. + After completion of a test, the agent resets the value back + to 'notInUse(1)'." + ::= { ifTestEntry 2 } + +ifTestType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "A control variable used to start and stop operator- + initiated interface tests. Most OBJECT IDENTIFIER values + assigned to tests are defined elsewhere, in association with + specific types of interface. However, this document assigns + a value for a full-duplex loopback test, and defines the + special meanings of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + + When the value noTest is written to this object, no action + is taken unless a test is in progress, in which case the + test is aborted. Writing any other value to this object is + + + only valid when no test is currently in progress, in which + case the indicated test is initiated. + + When read, this object always returns the most recent value + that ifTestType was set to. If it has not been set since + the last initialization of the network management subsystem + on the agent, a value of noTest is returned." + ::= { ifTestEntry 3 } + +ifTestResult OBJECT-TYPE + SYNTAX INTEGER { none(1), success(2), inProgress(3), + notSupported(4), unAbleToRun(5), aborted(6), + failed(7) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object contains the result of the most recently + requested test, or the value none(1) if no tests have been + requested since the last reset. Note that this facility + provides no provision for saving the results of one test + when starting another, as could be required if used by + multiple managers concurrently." + ::= { ifTestEntry 4 } + +ifTestCode OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "This object contains a code which contains more specific + information on the test result, for example an error-code + after a failed test. Error codes and other values this + object may take are specific to the type of interface and/or + test. The value may have the semantics of either the + AutonomousType or InstancePointer textual conventions as + defined in RFC 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available." + ::= { ifTestEntry 5 } + +ifTestOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "The entity which currently has the 'ownership' required to + invoke a test on this interface." + ::= { ifTestEntry 6 } + +ifRcvAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfRcvAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains an entry for each address (broadcast, + multicast, or uni-cast) for which the system will receive + packets/frames on a particular interface, except as follows: + + - for an interface operating in promiscuous mode, entries + are only required for those addresses for which the system + would receive frames were it not operating in promiscuous + mode. + + + - for 802.5 functional addresses, only one entry is + required, for the address which has the functional address + bit ANDed with the bit mask of all functional addresses for + which the interface will accept frames. + + A system is normally able to use any unicast address which + corresponds to an entry in this table as a source address." + ::= { ifMIBObjects 4 } + +ifRcvAddressEntry OBJECT-TYPE + SYNTAX IfRcvAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of objects identifying an address for which the + system will accept packets/frames on the particular + interface identified by the index value ifIndex." + INDEX { ifIndex, ifRcvAddressAddress } + ::= { ifRcvAddressTable 1 } + +IfRcvAddressEntry ::= SEQUENCE { + ifRcvAddressAddress PhysAddress, + ifRcvAddressStatus RowStatus, + ifRcvAddressType INTEGER +} + +ifRcvAddressAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An address for which the system will accept packets/frames + on this entry's interface." + ::= { ifRcvAddressEntry 1 } + +ifRcvAddressStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + ifRcvAddressTable." + ::= { ifRcvAddressEntry 2 } + +ifRcvAddressType OBJECT-TYPE + SYNTAX INTEGER { other(1), volatile(2), nonVolatile(3) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object has the value nonVolatile(3) for those entries + in the table which are valid and will not be deleted by the + next restart of the managed system. Entries having the + value volatile(2) are valid and exist, but have not been + saved, so that will not exist after the next restart of the + managed system. Entries having the value other(1) are valid + and exist but are not classified as to whether they will + continue to exist after the next restart." + DEFVAL { volatile } + ::= { ifRcvAddressEntry 3 } + +ifTableLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last creation or + deletion of an entry in the ifTable. If the number of + entries has been unchanged since the last re-initialization + of the local network management subsystem, then this object + contains a zero value." + ::= { ifMIBObjects 5 } + +ifStackLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the last change of + the (whole) interface stack. A change of the interface + stack is defined to be any creation, deletion, or change in + value of any instance of ifStackStatus. If the interface + stack has been unchanged since the last re-initialization of + the local network management subsystem, then this object + contains a zero value." + ::= { ifMIBObjects 6 } + +ifConformance OBJECT IDENTIFIER + ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER + ::= { ifConformance 1 } + +ifCompliances OBJECT IDENTIFIER + ::= { ifConformance 2 } + +linkDown NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus." + ::= { snmpTraps 3 } + +linkUp NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus." + ::= { snmpTraps 4 } + +ifGeneralGroup OBJECT-GROUP + OBJECTS { ifDescr, ifType, ifSpeed, ifPhysAddress, ifAdminStatus, + ifOperStatus, ifLastChange, ifLinkUpDownTrapEnable, + ifConnectorPresent, ifHighSpeed, ifName } + STATUS deprecated + DESCRIPTION + "A collection of objects deprecated in favour of + ifGeneralInformationGroup." + ::= { ifGroups 1 } + +ifFixedLengthGroup OBJECT-GROUP + OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) character-oriented or fixed-length-transmission + network interfaces." + ::= { ifGroups 2 } + +ifHCFixedLengthGroup OBJECT-GROUP + OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, + ifInUnknownProtos, ifInErrors, ifOutErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second) character- + oriented or fixed-length-transmission network interfaces." + ::= { ifGroups 3 } + +ifPacketGroup OBJECT-GROUP + OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, + ifOutErrors, ifMtu, ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, ifOutUcastPkts, + ifOutMulticastPkts, ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) packet-oriented network interfaces." + ::= { ifGroups 4 } + +ifHCPacketGroup OBJECT-GROUP + OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, + ifInUnknownProtos, ifInErrors, ifOutErrors, ifMtu, + ifInUcastPkts, ifInMulticastPkts, ifInBroadcastPkts, + ifInDiscards, ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second but less + than or equal to 650,000,000 bits/second) packet-oriented + network interfaces." + ::= { ifGroups 5 } + +ifVHCPacketGroup OBJECT-GROUP + OBJECTS { ifHCInUcastPkts, ifHCInMulticastPkts, + ifHCInBroadcastPkts, ifHCOutUcastPkts, + ifHCOutMulticastPkts, ifHCOutBroadcastPkts, + ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, + ifInUnknownProtos, ifInErrors, ifOutErrors, ifMtu, + ifInUcastPkts, ifInMulticastPkts, ifInBroadcastPkts, + ifInDiscards, ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + higher speed (greater than 650,000,000 bits/second) packet- + oriented network interfaces." + ::= { ifGroups 6 } + +ifRcvAddressGroup OBJECT-GROUP + OBJECTS { ifRcvAddressStatus, ifRcvAddressType } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + multiple addresses which an interface receives." + ::= { ifGroups 7 } + +ifTestGroup OBJECT-GROUP + OBJECTS { ifTestId, ifTestStatus, ifTestType, ifTestResult, + ifTestCode, ifTestOwner } + STATUS deprecated + DESCRIPTION + "A collection of objects providing the ability to invoke + tests on an interface." + ::= { ifGroups 8 } + +ifStackGroup OBJECT-GROUP + OBJECTS { ifStackStatus } + STATUS deprecated + DESCRIPTION + "The previous collection of objects providing information on + the layering of MIB-II interfaces." + ::= { ifGroups 9 } + +ifGeneralInformationGroup OBJECT-GROUP + OBJECTS { ifIndex, ifDescr, ifType, ifSpeed, ifPhysAddress, + ifAdminStatus, ifOperStatus, ifLastChange, + ifLinkUpDownTrapEnable, ifConnectorPresent, + ifHighSpeed, ifName, ifNumber, ifAlias, + ifTableLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing information applicable to + all network interfaces." + ::= { ifGroups 10 } + +ifStackGroup2 OBJECT-GROUP + OBJECTS { ifStackStatus, ifStackLastChange } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + layering of MIB-II interfaces." + ::= { ifGroups 11 } + +ifOldObjectsGroup OBJECT-GROUP + OBJECTS { ifInNUcastPkts, ifOutNUcastPkts, ifOutQLen, ifSpecific } + STATUS deprecated + DESCRIPTION + "The collection of objects deprecated from the original MIB- + II interfaces group." + ::= { ifGroups 12 } + +ifCounterDiscontinuityGroup OBJECT-GROUP + OBJECTS { ifCounterDiscontinuityTime } + STATUS current + DESCRIPTION + "A collection of objects providing information specific to + interface counter discontinuities." + ::= { ifGroups 13 } + +linkUpDownNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { linkUp, linkDown } + STATUS current + DESCRIPTION + "The notifications which indicate specific changes in the + value of ifOperStatus." + ::= { ifGroups 14 } + +ifCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces." + + MODULE -- this module + + MANDATORY-GROUPS { ifGeneralGroup, ifStackGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are character-oriented or transmit data in fixed- + length transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are packet-oriented." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + GROUP ifTestGroup + DESCRIPTION + "This group is optional. Media-specific MIBs which require + interface tests are strongly encouraged to use this group + for invoking tests and reporting results. A medium specific + MIB which has mandatory tests may make implementation of + + + this group mandatory." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifStackStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + + ::= { ifCompliances 1 } + +ifCompliance2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces." + + MODULE -- this module + + MANDATORY-GROUPS { ifGeneralInformationGroup, + ifStackGroup2, ifCounterDiscontinuityGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are character-oriented or transmit data in fixed-length + transmission units." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are character-oriented or transmit data in fixed- + length transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + "This group is mandatory for all network interfaces which + are packet-oriented." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifStackStatus + SYNTAX RowStatus { active(1) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1)." + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + + OBJECT ifAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { ifCompliances 2 } + +ifCompliance3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which have + network interfaces." + + MODULE -- this module + + MANDATORY-GROUPS { ifGeneralInformationGroup, + linkUpDownNotificationsGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for those network interfaces which + are character-oriented or transmit data in fixed-length + transmission units, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory for those network interfaces which + are character-oriented or transmit data in fixed-length + transmission units, and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second." + + GROUP ifPacketGroup + DESCRIPTION + "This group is mandatory for those network interfaces which + are packet-oriented, and for which the value of the + corresponding instance of ifSpeed is less than or equal to + 20,000,000 bits/second." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second." + + GROUP ifVHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network interfaces + which are packet-oriented and for which the value of the + corresponding instance of ifSpeed is greater than + 650,000,000 bits/second." + + GROUP ifCounterDiscontinuityGroup + DESCRIPTION + "This group is mandatory for those network interfaces that + are required to maintain counters (i.e., those for which one + of the ifFixedLengthGroup, ifHCFixedLengthGroup, + ifPacketGroup, ifHCPacketGroup, or ifVHCPacketGroup is + mandatory)." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by the + media-specific MIBs. Media-specific MIBs must define the + exact meaning, use, and semantics of the addresses in this + group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the value + testing(3)." + + OBJECT ifAlias + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { ifCompliances 3 } + +END -- end of module IF-MIB. diff --git a/test/dumps/smiv2/MAU-MIB b/test/dumps/smiv2/MAU-MIB new file mode 100644 index 0000000..7ef0922 --- /dev/null +++ b/test/dumps/smiv2/MAU-MIB @@ -0,0 +1,1776 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +MAU-MIB DEFINITIONS ::= BEGIN + +IMPORTS + IANAifJackType, IANAifMauAutoNegCapBits, IANAifMauMediaAvailable, + IANAifMauTypeListBits + FROM IANA-MAU-MIB + InterfaceIndex + FROM IF-MIB + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Counter64, Integer32, MODULE-IDENTITY, NOTIFICATION-TYPE, + OBJECT-TYPE, mib-2 + FROM SNMPv2-SMI + AutonomousType, TEXTUAL-CONVENTION, TruthValue + FROM SNMPv2-TC; + +mauMod MODULE-IDENTITY + LAST-UPDATED "200704210000Z" + ORGANIZATION + "IETF Ethernet Interfaces and Hub MIB Working Group" + CONTACT-INFO + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com" + DESCRIPTION + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices." + REVISION "200704210000Z" + DESCRIPTION + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836." + REVISION "200309190000Z" + DESCRIPTION + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636." + REVISION "199908240400Z" + DESCRIPTION + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation." + REVISION "199710310000Z" + DESCRIPTION + "Version published as RFC 2239." + REVISION "199309300000Z" + DESCRIPTION + "Initial version, published as RFC 1515." + ::= { snmpDot3MauMgt 6 } + + +JackType ::= TEXTUAL-CONVENTION + STATUS deprecated + DESCRIPTION + "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types." + SYNTAX INTEGER { other(1), rj45(2), rj45S(3), db9(4), bnc(5), + fAUI(6), mAUI(7), fiberSC(8), fiberMIC(9), + fiberST(10), telco(11), mtrj(12), hssdc(13), + fiberLC(14) } + +snmpDot3MauMgt OBJECT IDENTIFIER + ::= { mib-2 26 } + +snmpDot3MauTraps OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 0 } + +dot3RpMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 1 } + +rpMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater." + ::= { dot3RpMauBasicGroup 1 } + +rpMauEntry OBJECT-TYPE + SYNTAX RpMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex } + ::= { rpMauTable 1 } + +RpMauEntry ::= SEQUENCE { + rpMauGroupIndex Integer32, + rpMauPortIndex Integer32, + rpMauIndex Integer32, + rpMauType AutonomousType, + rpMauStatus INTEGER, + rpMauMediaAvailable IANAifMauMediaAvailable, + rpMauMediaAvailableStateExits Counter32, + rpMauJabberState INTEGER, + rpMauJabberingStateEnters Counter32, + rpMauFalseCarriers Counter32 +} + +rpMauGroupIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex." + REFERENCE + "RFC 2108, rptrGroupIndex." + ::= { rpMauEntry 1 } + +rpMauPortIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected." + REFERENCE + "RFC 2108, rptrPortIndex." + ::= { rpMauEntry 2 } + +rpMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { rpMauEntry 3 } + +rpMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned." + REFERENCE + "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { rpMauEntry 4 } + +rpMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { rpMauEntry 5 } + +rpMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC." + REFERENCE + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { rpMauEntry 6 } + +rpMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 7 } + +rpMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { rpMauEntry 8 } + +rpMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 9 } + +rpMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange" + ::= { rpMauEntry 10 } + +rpJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to the ports of a repeater." + ::= { dot3RpMauBasicGroup 2 } + +rpJackEntry OBJECT-TYPE + SYNTAX RpJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, + rpJackIndex } + ::= { rpJackTable 1 } + +RpJackEntry ::= SEQUENCE { + rpJackIndex Integer32, + rpJackType IANAifJackType +} + +rpJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)." + ::= { rpJackEntry 1 } + +rpJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { rpJackEntry 2 } + +dot3IfMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 2 } + +ifMauTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Table of descriptive and status information + about MAU(s) attached to an interface." + ::= { dot3IfMauBasicGroup 1 } + +ifMauEntry OBJECT-TYPE + SYNTAX IfMauEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a single MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauTable 1 } + +IfMauEntry ::= SEQUENCE { + ifMauIfIndex InterfaceIndex, + ifMauIndex Integer32, + ifMauType AutonomousType, + ifMauStatus INTEGER, + ifMauMediaAvailable IANAifMauMediaAvailable, + ifMauMediaAvailableStateExits Counter32, + ifMauJabberState INTEGER, + ifMauJabberingStateEnters Counter32, + ifMauFalseCarriers Counter32, + ifMauTypeList Integer32, + ifMauDefaultType AutonomousType, + ifMauAutoNegSupported TruthValue, + ifMauTypeListBits IANAifMauTypeListBits, + ifMauHCFalseCarriers Counter64 +} + +ifMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE + "RFC 2863, ifIndex" + ::= { ifMauEntry 1 } + +ifMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { ifMauEntry 2 } + +ifMauType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode." + REFERENCE + "[IEEE802.3], 30.5.1.1.2, aMAUType." + ::= { ifMauEntry 3 } + +ifMauStatus OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), operational(3), + standby(4), shutdown(5), reset(6) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state." + REFERENCE + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU." + ::= { ifMauEntry 4 } + +ifMauMediaAvailable OBJECT-TYPE + SYNTAX IANAifMauMediaAvailable + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC." + REFERENCE + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable." + ::= { ifMauEntry 5 } + +ifMauMediaAvailableStateExits OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 6 } + +ifMauJabberState OBJECT-TYPE + SYNTAX INTEGER { other(1), unknown(2), noJabber(3), + jabbering(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag." + ::= { ifMauEntry 7 } + +ifMauJabberingStateEnters OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 8 } + +ifMauFalseCarriers OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 9 } + +ifMauTypeList OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability." + ::= { ifMauEntry 10 } + +ifMauDefaultType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4." + ::= { ifMauEntry 11 } + +ifMauAutoNegSupported OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object indicates whether or not + auto-negotiation is supported on this MAU." + ::= { ifMauEntry 12 } + +ifMauTypeListBits OBJECT-TYPE + SYNTAX IANAifMauTypeListBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC." + ::= { ifMauEntry 13 } + +ifMauHCFalseCarriers OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime." + REFERENCE + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime." + ::= { ifMauEntry 14 } + +ifJackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about the external jacks attached + to MAUs attached to an interface." + ::= { dot3IfMauBasicGroup 2 } + +ifJackEntry OBJECT-TYPE + SYNTAX IfJackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing information + about a particular jack." + INDEX { ifMauIfIndex, ifMauIndex, ifJackIndex } + ::= { ifJackTable 1 } + +IfJackEntry ::= SEQUENCE { + ifJackIndex Integer32, + ifJackType IANAifJackType +} + +ifJackIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU." + ::= { ifJackEntry 1 } + +ifJackType OBJECT-TYPE + SYNTAX IANAifJackType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The jack connector type, as it appears on the + outside of the system." + ::= { ifJackEntry 2 } + +dot3BroadMauBasicGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 3 } + +broadMauBasicTable OBJECT-TYPE + SYNTAX SEQUENCE OF BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces." + ::= { dot3BroadMauBasicGroup 1 } + +broadMauBasicEntry OBJECT-TYPE + SYNTAX BroadMauBasicEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU." + INDEX { broadMauIfIndex, broadMauIndex } + ::= { broadMauBasicTable 1 } + +BroadMauBasicEntry ::= SEQUENCE { + broadMauIfIndex InterfaceIndex, + broadMauIndex Integer32, + broadMauXmtRcvSplitType INTEGER, + broadMauXmtCarrierFreq Integer32, + broadMauTranslationFreq Integer32 +} + +broadMauIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected." + REFERENCE + "RFC 2863, ifIndex." + ::= { broadMauBasicEntry 1 } + +broadMauIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry." + REFERENCE + "[IEEE802.3], 30.5.1.1.1, aMAUID." + ::= { broadMauBasicEntry 2 } + +broadMauXmtRcvSplitType OBJECT-TYPE + SYNTAX INTEGER { other(1), single(2), dual(3) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero." + REFERENCE + "[IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType." + ::= { broadMauBasicEntry 3 } + +broadMauXmtCarrierFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency." + ::= { broadMauBasicEntry 4 } + +broadMauTranslationFreq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz." + REFERENCE + "[IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency." + ::= { broadMauBasicEntry 5 } + +dot3IfMauAutoNegGroup OBJECT IDENTIFIER + ::= { snmpDot3MauMgt 5 } + +ifMauAutoNegTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function." + ::= { dot3IfMauAutoNegGroup 1 } + +ifMauAutoNegEntry OBJECT-TYPE + SYNTAX IfMauAutoNegEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU." + INDEX { ifMauIfIndex, ifMauIndex } + ::= { ifMauAutoNegTable 1 } + +IfMauAutoNegEntry ::= SEQUENCE { + ifMauAutoNegAdminStatus INTEGER, + ifMauAutoNegRemoteSignaling INTEGER, + ifMauAutoNegConfig INTEGER, + ifMauAutoNegCapability Integer32, + ifMauAutoNegCapAdvertised Integer32, + ifMauAutoNegCapReceived Integer32, + ifMauAutoNegRestart INTEGER, + ifMauAutoNegCapabilityBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapAdvertisedBits IANAifMauAutoNegCapBits, + ifMauAutoNegCapReceivedBits IANAifMauAutoNegCapBits, + ifMauAutoNegRemoteFaultAdvertised INTEGER, + ifMauAutoNegRemoteFaultReceived INTEGER +} + +ifMauAutoNegAdminStatus OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function." + REFERENCE + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl." + ::= { ifMauAutoNegEntry 1 } + +ifMauAutoNegRemoteSignaling OBJECT-TYPE + SYNTAX INTEGER { detected(1), notdetected(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received." + REFERENCE + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling." + ::= { ifMauAutoNegEntry 2 } + +ifMauAutoNegConfig OBJECT-TYPE + SYNTAX INTEGER { other(1), configuring(2), complete(3), + disabled(4), parallelDetectFail(5) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]." + REFERENCE + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig." + ::= { ifMauAutoNegEntry 4 } + +ifMauAutoNegCapability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB." + REFERENCE + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 5 } + +ifMauAutoNegCapAdvertised OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 6 } + +ifMauAutoNegCapReceived OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 7 } + +ifMauAutoNegRestart OBJECT-TYPE + SYNTAX INTEGER { restart(1), norestart(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect." + REFERENCE + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig." + ::= { ifMauAutoNegEntry 8 } + +ifMauAutoNegCapabilityBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility." + ::= { ifMauAutoNegEntry 9 } + +ifMauAutoNegCapAdvertisedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 10 } + +ifMauAutoNegCapReceivedBits OBJECT-TYPE + SYNTAX IANAifMauAutoNegCapBits + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 11 } + +ifMauAutoNegRemoteFaultAdvertised OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs." + REFERENCE + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility." + ::= { ifMauAutoNegEntry 12 } + +ifMauAutoNegRemoteFaultReceived OBJECT-TYPE + SYNTAX INTEGER { noError(1), offline(2), linkFailure(3), + autoNegError(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs." + REFERENCE + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility." + ::= { ifMauAutoNegEntry 13 } + +mauModConf OBJECT IDENTIFIER + ::= { mauMod 1 } + +mauModCompls OBJECT IDENTIFIER + ::= { mauModConf 1 } + +mauModObjGrps OBJECT IDENTIFIER + ::= { mauModConf 2 } + +mauModNotGrps OBJECT IDENTIFIER + ::= { mauModConf 3 } + +rpMauJabberTrap NOTIFICATION-TYPE + OBJECTS { rpMauJabberState } + STATUS current + DESCRIPTION + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 1 } + +ifMauJabberTrap NOTIFICATION-TYPE + OBJECTS { ifMauJabberState } + STATUS current + DESCRIPTION + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them." + REFERENCE + "[IEEE802.3], 30.5.1.3.1, nJabber notification." + ::= { snmpDot3MauTraps 2 } + +mauRpGrpBasic OBJECT-GROUP + OBJECTS { rpMauGroupIndex, rpMauPortIndex, rpMauIndex, rpMauType, + rpMauStatus, rpMauMediaAvailable, + rpMauMediaAvailableStateExits, rpMauJabberState, + rpMauJabberingStateEnters } + STATUS current + DESCRIPTION + "Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 1 } + +mauRpGrp100Mbs OBJECT-GROUP + OBJECTS { rpMauFalseCarriers } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability." + ::= { mauModObjGrps 2 } + +mauRpGrpJack OBJECT-GROUP + OBJECTS { rpJackType } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + repeater ports with managed jacks." + ::= { mauModObjGrps 3 } + +mauIfGrpBasic OBJECT-GROUP + OBJECTS { ifMauIfIndex, ifMauIndex, ifMauType, ifMauStatus, + ifMauMediaAvailable, ifMauMediaAvailableStateExits, + ifMauJabberState, ifMauJabberingStateEnters } + STATUS current + DESCRIPTION + "Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations." + ::= { mauModObjGrps 4 } + +mauIfGrp100Mbs OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, ifMauTypeList, ifMauDefaultType, + ifMauAutoNegSupported } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity." + ::= { mauModObjGrps 5 } + +mauIfGrpJack OBJECT-GROUP + OBJECTS { ifJackType } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with managed jacks." + ::= { mauModObjGrps 6 } + +mauIfGrpAutoNeg OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapability, + ifMauAutoNegCapAdvertised, ifMauAutoNegCapReceived, + ifMauAutoNegRestart } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2." + ::= { mauModObjGrps 7 } + +mauBroadBasic OBJECT-GROUP + OBJECTS { broadMauIfIndex, broadMauIndex, + broadMauXmtRcvSplitType, broadMauXmtCarrierFreq, + broadMauTranslationFreq } + STATUS deprecated + DESCRIPTION + "********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations." + ::= { mauModObjGrps 8 } + +mauIfGrpHighCapacity OBJECT-GROUP + OBJECTS { ifMauFalseCarriers, ifMauTypeListBits, + ifMauDefaultType, ifMauAutoNegSupported } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability." + ::= { mauModObjGrps 9 } + +mauIfGrpAutoNeg2 OBJECT-GROUP + OBJECTS { ifMauAutoNegAdminStatus, ifMauAutoNegRemoteSignaling, + ifMauAutoNegConfig, ifMauAutoNegCapabilityBits, + ifMauAutoNegCapAdvertisedBits, + ifMauAutoNegCapReceivedBits, ifMauAutoNegRestart } + STATUS current + DESCRIPTION + "Conformance group for MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 10 } + +mauIfGrpAutoNeg1000Mbps OBJECT-GROUP + OBJECTS { ifMauAutoNegRemoteFaultAdvertised, + ifMauAutoNegRemoteFaultReceived } + STATUS current + DESCRIPTION + "Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation." + ::= { mauModObjGrps 11 } + +mauIfGrpHCStats OBJECT-GROUP + OBJECTS { ifMauHCFalseCarriers } + STATUS current + DESCRIPTION + "Conformance for high capacity statistics for + MAUs attached to interfaces." + ::= { mauModObjGrps 12 } + +rpMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { rpMauJabberTrap } + STATUS current + DESCRIPTION + "Notifications for repeater MAUs." + ::= { mauModNotGrps 1 } + +ifMauNotifications NOTIFICATION-GROUP + NOTIFICATIONS { ifMauJabberTrap } + STATUS current + DESCRIPTION + "Notifications for interface MAUs." + ::= { mauModNotGrps 2 } + +mauModRpCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only." + + MODULE -- this module + + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to repeater ports." + + ::= { mauModCompls 1 } + +mauModIfCompl MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + capability." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauBroadBasic + DESCRIPTION + "Implementation of this group is mandatory + for broadband MAUs." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + ::= { mauModCompls 2 } + +mauModIfCompl2 MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 3 } + +mauModRpCompl2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108)." + + MODULE -- this module + + MANDATORY-GROUPS { mauRpGrpBasic } + + GROUP mauRpGrp100Mbs + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s or + greater capability." + + GROUP mauRpGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP rpMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to repeater ports." + + OBJECT rpMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 4 } + +mauModIfCompl3 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635)." + + MODULE -- this module + + MANDATORY-GROUPS { mauIfGrpBasic } + + GROUP mauIfGrpHighCapacity + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have 100Mb/s + or greater capability." + + GROUP mauIfGrpHCStats + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s capacity, and + is recommended for MAUs that have 100Mb/s + capacity." + + GROUP mauIfGrpJack + DESCRIPTION + "Implementation of this optional group is + recommended for MAUs that have one or more + external jacks." + + GROUP mauIfGrpAutoNeg2 + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that support managed + auto-negotiation." + + GROUP mauIfGrpAutoNeg1000Mbps + DESCRIPTION + "Implementation of this group is mandatory + for MAUs that have 1000Mb/s or greater + capability and support managed + auto-negotiation." + + GROUP ifMauNotifications + DESCRIPTION + "Implementation of this group is recommended + for MAUs attached to interfaces." + + OBJECT ifMauStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + ::= { mauModCompls 5 } + +END -- end of module MAU-MIB. diff --git a/test/dumps/smiv2/Makefile.am b/test/dumps/smiv2/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/smiv2/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/smiv2/Makefile.in b/test/dumps/smiv2/Makefile.in new file mode 100644 index 0000000..e78d096 --- /dev/null +++ b/test/dumps/smiv2/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/smiv2 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/smiv2/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/smiv2/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/smiv2/RMON2-MIB b/test/dumps/smiv2/RMON2-MIB new file mode 100644 index 0000000..8937060 --- /dev/null +++ b/test/dumps/smiv2/RMON2-MIB @@ -0,0 +1,5590 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +RMON2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + ifIndex + FROM IF-MIB + OwnerString, channelEntry, etherStatsEntry, filter, filterEntry, + history, historyControlEntry, hostControlEntry, hosts, matrix, + matrixControlEntry, statistics + FROM RMON-MIB + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Gauge32, Integer32, IpAddress, MODULE-IDENTITY, + OBJECT-TYPE, TimeTicks, mib-2 + FROM SNMPv2-SMI + DisplayString, RowStatus, TEXTUAL-CONVENTION, TimeStamp + FROM SNMPv2-TC + ringStationControlEntry, sourceRoutingStatsEntry, tokenRing, + tokenRingMLStatsEntry, tokenRingPStatsEntry + FROM TOKEN-RING-RMON-MIB; + +rmon MODULE-IDENTITY + LAST-UPDATED "200605020000Z" + ORGANIZATION + "IETF RMON MIB Working Group" + CONTACT-INFO + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: " + DESCRIPTION + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices." + REVISION "200605020000Z" + DESCRIPTION + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics." + REVISION "200207080000Z" + DESCRIPTION + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications." + REVISION "199605270000Z" + DESCRIPTION + "Original version. Published as RFC 2021." + ::= { mib-2 16 } + + +ZeroBasedCounter32 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "This TC describes an object that 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 value of the + sysUpTime object at 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. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects." + SYNTAX TimeTicks + +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. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk." + 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 [RFC2863], 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 + +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 store 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, i.e., + 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 OCTET STRING (SIZE(0..255)) + +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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 } + +tokenRingMLStats2Table OBJECT-TYPE + SYNTAX SEQUENCE OF TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 5 } + +tokenRingMLStats2Entry OBJECT-TYPE + SYNTAX TokenRingMLStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { statistics 6 } + +tokenRingPStats2Entry OBJECT-TYPE + SYNTAX TokenRingPStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 } + +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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 } + +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 } + +ringStationControl2Table OBJECT-TYPE + SYNTAX SEQUENCE OF RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 7 } + +ringStationControl2Entry OBJECT-TYPE + SYNTAX RingStationControl2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 deprecated + DESCRIPTION + "Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { tokenRing 8 } + +sourceRoutingStats2Entry OBJECT-TYPE + SYNTAX SourceRoutingStats2Entry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 deprecated + 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 } + +protocolDir OBJECT IDENTIFIER + ::= { rmon 11 } + +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 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + INDEX { protocolDirID, protocolDirParameters } + ::= { protocolDirTable 1 } + +ProtocolDirEntry ::= SEQUENCE { + protocolDirID OCTET STRING, + protocolDirParameters OCTET STRING, + protocolDirLocalIndex Integer32, + protocolDirDescr DisplayString, + protocolDirType BITS, + protocolDirAddressMapConfig INTEGER, + protocolDirHostConfig INTEGER, + protocolDirMatrixConfig INTEGER, + protocolDirOwner OwnerString, + protocolDirStatus RowStatus +} + +protocolDirID OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(4..128)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner 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 that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 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 + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether 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 (SIZE(1..32)) + 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 that 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 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 this protocol directory entry can be extended + by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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, 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 + 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, 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 } + +protocolDist OBJECT IDENTIFIER + ::= { rmon 12 } + +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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 } + +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 that 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 and 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 of this protocol type received + without errors. 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 of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol." + ::= { protocolDistStatsEntry 2 } + +addressMap OBJECT IDENTIFIER + ::= { rmon 13 } + +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 mappings from network + layer address to physical address to interface. + + 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 mappings from network layer address to physical + address to interface. + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE(1..255)) + 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 [RFC2863], 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 [RFC2108], 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 that 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 } + +nlHost OBJECT IDENTIFIER + ::= { rmon 14 } + +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 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations." + 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 (SIZE(1..255)) + 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 + octets in packets that contained errors. + + Note that 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 + octets in packets that contained errors. + + Note that 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 } + +nlMatrix OBJECT IDENTIFIER + ::= { rmon 15 } + +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 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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 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 that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE(1..255)) + 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 (SIZE(1..255)) + 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 octets in packets that + contained errors. + + Note that 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 } + +nlMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF NlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of traffic matrix entries that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 (SIZE(1..255)) + 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 (SIZE(1..255)) + 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 octets in packets that + contained errors. + + Note that 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 topN 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 topN 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), + nlMatrixTopNHighCapacityPkts(3), + nlMatrixTopNHighCapacityOctets(4) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object." + ::= { 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 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 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 topN 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 whether a report was missed." + ::= { 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 (SIZE(1..255)) + 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 (SIZE(1..255)) + 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 } + +alHost OBJECT IDENTIFIER + ::= { rmon 16 } + +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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets in packets that + contained errors. + + Note that 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 octets in packets that + contained errors. + + Note that 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 } + +alMatrix OBJECT IDENTIFIER + ::= { rmon 17 } + +alMatrixSDTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixSDEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets + in packets that contained errors. + + Note that 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 } + +alMatrixDSTable OBJECT-TYPE + SYNTAX SEQUENCE OF AlMatrixDSEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of application traffic matrix entries that 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations." + 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 octets + in packets that contained errors. + + Note that 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 topN 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 topN 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), + alMatrixTopNTerminalsHighCapacityPkts(5), + alMatrixTopNTerminalsHighCapacityOctets(6), + alMatrixTopNAllHighCapacityPkts(7), + alMatrixTopNAllHighCapacityOctets(8) } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets 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 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 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 topN 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 whether a report was missed." + ::= { 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 (SIZE(1..255)) + 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 (SIZE(1..255)) + 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 } + +usrHistory OBJECT IDENTIFIER + ::= { rmon 18 } + +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 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 + 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 to 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 } + +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. See USM [RFC3414] and VACM [RFC3415] for more + information. + + 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 } + +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 that 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 that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + 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)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, 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 the 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 } + +probeConfig OBJECT IDENTIFIER + ::= { rmon 19 } + +probeCapabilities OBJECT-TYPE + 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 + time zone information (fields 8-10) is not + present, and that 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 to restart the application software. When the device + is running normally, this variable has a value of + running(1)." + ::= { probeConfig 5 } + +probeDownloadFile OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..127)) + MAX-ACCESS read-write + STATUS deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 6 } + +probeDownloadTFTPServer OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-write + STATUS deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 7 } + +probeDownloadAction OBJECT-TYPE + SYNTAX INTEGER { notDownloading(1), downloadToPROM(2), + downloadToRAM(3) } + MAX-ACCESS read-write + STATUS deprecated + DESCRIPTION + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), 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(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) 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). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { 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 deprecated + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 9 } + +serialConfigTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 10 } + +serialConfigEntry OBJECT-TYPE + SYNTAX SerialConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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, + serialModemInitString ControlString, + serialModemHangUpString ControlString, + serialModemConnectResp DisplayString, + serialModemNoConnectResp DisplayString, + serialDialoutTimeout Integer32, + serialStatus RowStatus +} + +serialMode OBJECT-TYPE + SYNTAX INTEGER { direct(1), modem(2) } + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The type of incoming connection to be expected on this + serial interface." + DEFVAL { direct } + ::= { serialConfigEntry 1 } + +serialProtocol OBJECT-TYPE + SYNTAX INTEGER { other(1), slip(2), ppp(3) } + MAX-ACCESS read-create + STATUS deprecated + 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 deprecated + 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + 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 deprecated + 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 deprecated + 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 deprecated + 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 deprecated + DESCRIPTION + "A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard." + ::= { probeConfig 11 } + +netConfigEntry OBJECT-TYPE + SYNTAX NetConfigEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + 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 is 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 them very infrequently if no + replies are received." + ::= { netConfigEntry 1 } + +netConfigSubnetMask OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + 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 is 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 them very infrequently if no + replies are received." + ::= { netConfigEntry 2 } + +netConfigStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS deprecated + 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-write + STATUS deprecated + 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 } + +trapDestTable OBJECT-TYPE + SYNTAX SEQUENCE OF TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of trap destination entries." + ::= { probeConfig 13 } + +trapDestEntry OBJECT-TYPE + SYNTAX TrapDestEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "This entry includes a destination IP address to which + traps are sent 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 deprecated + DESCRIPTION + "A value that uniquely identifies this trapDestEntry." + ::= { trapDestEntry 1 } + +trapDestCommunity OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-create + STATUS deprecated + 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, as long as no access control mechanism + precludes it (e.g., VACM). + + 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 deprecated + DESCRIPTION + "The protocol with which this trap is to be sent." + ::= { trapDestEntry 3 } + +trapDestAddress OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS deprecated + DESCRIPTION + "The destination address for 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 deprecated + 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 deprecated + 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 } + +serialConnectionTable OBJECT-TYPE + SYNTAX SEQUENCE OF SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + DESCRIPTION + "A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard." + ::= { probeConfig 14 } + +serialConnectionEntry OBJECT-TYPE + SYNTAX SerialConnectionEntry + MAX-ACCESS not-accessible + STATUS deprecated + 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 deprecated + DESCRIPTION + "A value that uniquely identifies this serialConnection + entry." + ::= { serialConnectionEntry 1 } + +serialConnectDestIpAddress OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-create + STATUS deprecated + 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 deprecated + DESCRIPTION + "The type of outgoing connection to be made. 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 deprecated + DESCRIPTION + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + DESCRIPTION + "A control string that 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 deprecated + 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 deprecated + 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 is a zero-length string + or cannot be correctly parsed as a ConnectString, 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 } + +rmonConformance OBJECT IDENTIFIER + ::= { rmon 20 } + +rmon2MIBCompliances OBJECT IDENTIFIER + ::= { rmonConformance 1 } + +rmon2MIBGroups OBJECT IDENTIFIER + ::= { rmonConformance 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 and controls 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 deprecated + DESCRIPTION + "This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { 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 deprecated + DESCRIPTION + "This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it." + ::= { rmon2MIBGroups 13 } + +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 + that implement RMON [RFC2819]." + + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + ::= { 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 + that implement RMON [RFC2819]." + + GROUP rmon1EthernetEnhancementGroup + DESCRIPTION + "The rmon1EthernetEnhancementGroup is optional and is + appropriate for systems that implement the Ethernet + group of RMON [RFC2819]." + + OBJECT nlMatrixTopNControlRateBase + SYNTAX INTEGER { nlMatrixTopNPkts(1), nlMatrixTopNOctets(2) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase." + + OBJECT alMatrixTopNControlRateBase + SYNTAX INTEGER { alMatrixTopNTerminalsPkts(1), + alMatrixTopNTerminalsOctets(2), + alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4) } + DESCRIPTION + "Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase." + + ::= { rmon2MIBCompliances 2 } + +END -- end of module RMON2-MIB. diff --git a/test/dumps/smiv2/SNMPv2-MIB b/test/dumps/smiv2/SNMPv2-MIB new file mode 100644 index 0000000..ba45569 --- /dev/null +++ b/test/dumps/smiv2/SNMPv2-MIB @@ -0,0 +1,804 @@ +-- +-- This SMIv2 module has been generated by smidump 0.4.5. Do not edit. +-- + +SNMPv2-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-COMPLIANCE, NOTIFICATION-GROUP, OBJECT-GROUP + FROM SNMPv2-CONF + Counter32, Integer32, MODULE-IDENTITY, NOTIFICATION-TYPE, + OBJECT-TYPE, TimeTicks, mib-2, snmpModules + FROM SNMPv2-SMI + DisplayString, TestAndIncr, TimeStamp + FROM SNMPv2-TC; + +snmpMIB MODULE-IDENTITY + LAST-UPDATED "200210160000Z" + ORGANIZATION + "IETF SNMPv3 Working Group" + CONTACT-INFO + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006" + DESCRIPTION + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices." + REVISION "200210160000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 3418." + REVISION "199511090000Z" + DESCRIPTION + "This revision of this MIB module was published as + RFC 1907." + REVISION "199304010000Z" + DESCRIPTION + "The initial revision of this MIB module was published + as RFC 1450." + ::= { snmpModules 1 } + + +system OBJECT IDENTIFIER + ::= { mib-2 1 } + +sysDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the entity. This value should + include the full name and version identification of + the system's hardware type, software operating-system, + and networking software." + ::= { system 1 } + +sysObjectID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor's authoritative identification of the + network management subsystem contained in the entity. + This value is allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides an easy and + unambiguous means for determining `what kind of box' is + being managed. For example, if vendor `Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'." + ::= { system 2 } + +sysUpTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized." + ::= { system 3 } + +sysContact OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The textual identification of the contact person for + this managed node, together with information on how + to contact this person. If no contact information is + known, the value is the zero-length string." + ::= { system 4 } + +sysName OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administratively-assigned name for this managed + node. By convention, this is the node's fully-qualified + domain name. If the name is unknown, the value is + the zero-length string." + ::= { system 5 } + +sysLocation OBJECT-TYPE + SYNTAX DisplayString (SIZE(0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string." + ::= { system 6 } + +sysServices OBJECT-TYPE + SYNTAX Integer32 (0..127) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A value which indicates the set of services that this + entity may potentially offer. The value is a sum. + + + + This sum initially takes the value zero. Then, for + each layer, L, in the range 1 through 7, that this node + performs transactions for, 2 raised to (L - 1) is added + to the sum. For example, a node which performs only + routing functions would have a value of 4 (2^(3-1)). + In contrast, a node which is a host offering application + services would have a value of 72 (2^(4-1) + 2^(7-1)). + Note that in the context of the Internet suite of + protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + + For systems including OSI protocols, layers 5 and 6 + may also be counted." + ::= { system 7 } + +sysORLastChange OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID." + ::= { system 8 } + +sysORTable OBJECT-TYPE + SYNTAX SEQUENCE OF SysOREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows." + ::= { system 9 } + +sysOREntry OBJECT-TYPE + SYNTAX SysOREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry (conceptual row) in the sysORTable." + INDEX { sysORIndex } + ::= { sysORTable 1 } + +SysOREntry ::= SEQUENCE { + sysORIndex Integer32, + sysORID OBJECT IDENTIFIER, + sysORDescr DisplayString, + sysORUpTime TimeStamp +} + +sysORIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable." + ::= { sysOREntry 1 } + +sysORID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder." + ::= { sysOREntry 2 } + +sysORDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the capabilities identified + by the corresponding instance of sysORID." + ::= { sysOREntry 3 } + +sysORUpTime OBJECT-TYPE + SYNTAX TimeStamp + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time this conceptual + row was last instantiated." + ::= { sysOREntry 4 } + +snmp OBJECT IDENTIFIER + ::= { mib-2 11 } + +snmpInPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of messages delivered to the SNMP + entity from the transport service." + ::= { snmp 1 } + +snmpOutPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service." + ::= { snmp 2 } + +snmpInBadVersions OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version." + ::= { snmp 3 } + +snmpInBadCommunityNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value." + ::= { snmp 4 } + +snmpInBadCommunityUses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value." + ::= { snmp 5 } + +snmpInASNParseErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages." + ::= { snmp 6 } + +snmpInTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `tooBig'." + ::= { snmp 8 } + +snmpInNoSuchNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `noSuchName'." + ::= { snmp 9 } + +snmpInBadValues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `badValue'." + ::= { snmp 10 } + +snmpInReadOnlys OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number valid SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `readOnly'. It should + be noted that it is a protocol error to generate an + SNMP PDU which contains the value `readOnly' in the + error-status field, as such this object is provided + as a means of detecting incorrect implementations of + the SNMP." + ::= { snmp 11 } + +snmpInGenErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `genErr'." + ::= { snmp 12 } + +snmpInTotalReqVars OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of MIB objects which have been + retrieved successfully by the SNMP protocol entity + as the result of receiving valid SNMP Get-Request + and Get-Next PDUs." + ::= { snmp 13 } + +snmpInTotalSetVars OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of MIB objects which have been + altered successfully by the SNMP protocol entity as + the result of receiving valid SNMP Set-Request PDUs." + ::= { snmp 14 } + +snmpInGetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity." + ::= { snmp 15 } + +snmpInGetNexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity." + ::= { snmp 16 } + +snmpInSetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity." + ::= { snmp 17 } + +snmpInGetResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity." + ::= { snmp 18 } + +snmpInTraps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity." + ::= { snmp 19 } + +snmpOutTooBigs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `tooBig.'" + ::= { snmp 20 } + +snmpOutNoSuchNames OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status was `noSuchName'." + ::= { snmp 21 } + +snmpOutBadValues OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `badValue'." + ::= { snmp 22 } + +snmpOutGenErrs OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `genErr'." + ::= { snmp 24 } + +snmpOutGetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 25 } + +snmpOutGetNexts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 26 } + +snmpOutSetRequests OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 27 } + +snmpOutGetResponses OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity." + ::= { snmp 28 } + +snmpOutTraps OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS obsolete + DESCRIPTION + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity." + ::= { snmp 29 } + +snmpEnableAuthenTraps OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether the SNMP entity is permitted to + generate authenticationFailure traps. The value of this + object overrides any configuration information; as such, + it provides a means whereby all authenticationFailure + traps may be disabled. + + Note that it is strongly recommended that this object + be stored in non-volatile memory so that it remains + constant across re-initializations of the network + management system." + ::= { snmp 30 } + +snmpSilentDrops OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Confirmed Class PDUs (such as + GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the size of a reply + containing an alternate Response Class PDU (such as a + Response-PDU) with an empty variable-bindings field + was greater than either a local constraint or the + maximum message size associated with the originator of + the request." + ::= { snmp 31 } + +snmpProxyDrops OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of Confirmed Class PDUs + (such as GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the transmission of + the (possibly translated) message to a proxy target + failed in a manner (other than a time-out) such that + no Response Class PDU (such as a Response-PDU) could + be returned." + ::= { snmp 32 } + +snmpMIBObjects OBJECT IDENTIFIER + ::= { snmpMIB 1 } + +snmpTrap OBJECT IDENTIFIER + ::= { snmpMIBObjects 4 } + +snmpTrapOID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The authoritative identification of the notification + currently being sent. This variable occurs as + the second varbind in every SNMPv2-Trap-PDU and + InformRequest-PDU." + ::= { snmpTrap 1 } + +snmpTrapEnterprise OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS accessible-for-notify + STATUS current + DESCRIPTION + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind." + ::= { snmpTrap 3 } + +snmpTraps OBJECT IDENTIFIER + ::= { snmpMIBObjects 5 } + +snmpSet OBJECT IDENTIFIER + ::= { snmpMIBObjects 6 } + +snmpSetSerialNo OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP set operation. + + This object is used for coarse-grain coordination. + To achieve fine-grain coordination, one or more similar + objects might be defined within each MIB group, as + appropriate." + ::= { snmpSet 1 } + +snmpMIBConformance OBJECT IDENTIFIER + ::= { snmpMIB 2 } + +snmpMIBCompliances OBJECT IDENTIFIER + ::= { snmpMIBConformance 1 } + +snmpMIBGroups OBJECT IDENTIFIER + ::= { snmpMIBConformance 2 } + +coldStart NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered." + ::= { snmpTraps 1 } + +warmStart NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered." + ::= { snmpTraps 2 } + +authenticationFailure NOTIFICATION-TYPE + STATUS current + DESCRIPTION + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated." + ::= { snmpTraps 5 } + +snmpSetGroup OBJECT-GROUP + OBJECTS { snmpSetSerialNo } + STATUS current + DESCRIPTION + "A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the set operation." + ::= { snmpMIBGroups 5 } + +systemGroup OBJECT-GROUP + OBJECTS { sysDescr, sysObjectID, sysUpTime, sysContact, sysName, + sysLocation, sysServices, sysORLastChange, sysORID, + sysORUpTime, sysORDescr } + STATUS current + DESCRIPTION + "The system group defines objects which are common to all + managed systems." + ::= { snmpMIBGroups 6 } + +snmpBasicNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { coldStart, authenticationFailure } + STATUS current + DESCRIPTION + "The basic notifications implemented by an SNMP entity + supporting command responder applications." + ::= { snmpMIBGroups 7 } + +snmpGroup OBJECT-GROUP + OBJECTS { snmpInPkts, snmpInBadVersions, snmpInASNParseErrs, + snmpSilentDrops, snmpProxyDrops, snmpEnableAuthenTraps } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + and control of an SNMP entity." + ::= { snmpMIBGroups 8 } + +snmpCommunityGroup OBJECT-GROUP + OBJECTS { snmpInBadCommunityNames, snmpInBadCommunityUses } + STATUS current + DESCRIPTION + "A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication." + ::= { snmpMIBGroups 9 } + +snmpObsoleteGroup OBJECT-GROUP + OBJECTS { snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames, + snmpInBadValues, snmpInReadOnlys, snmpInGenErrs, + snmpInTotalReqVars, snmpInTotalSetVars, + snmpInGetRequests, snmpInGetNexts, snmpInSetRequests, + snmpInGetResponses, snmpInTraps, snmpOutTooBigs, + snmpOutNoSuchNames, snmpOutBadValues, snmpOutGenErrs, + snmpOutGetRequests, snmpOutGetNexts, + snmpOutSetRequests, snmpOutGetResponses, snmpOutTraps } + STATUS obsolete + DESCRIPTION + "A collection of objects from RFC 1213 made obsolete + by this MIB module." + ::= { snmpMIBGroups 10 } + +snmpWarmStartNotificationGroup NOTIFICATION-GROUP + NOTIFICATIONS { warmStart } + STATUS current + DESCRIPTION + "An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered." + ::= { snmpMIBGroups 11 } + +snmpNotificationGroup OBJECT-GROUP + OBJECTS { snmpTrapOID, snmpTrapEnterprise } + STATUS current + DESCRIPTION + "These objects are required for entities + which support notification originator applications." + ::= { snmpMIBGroups 12 } + +snmpBasicCompliance MODULE-COMPLIANCE + STATUS deprecated + DESCRIPTION + "The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2." + + MODULE -- this module + + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMPv2 entities which + support community-based authentication." + + ::= { snmpMIBCompliances 2 } + +snmpBasicComplianceRev2 MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which + implement this MIB module." + + MODULE -- this module + + MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, + snmpBasicNotificationsGroup } + + GROUP snmpCommunityGroup + DESCRIPTION + "This group is mandatory for SNMP entities which + support community-based authentication." + + GROUP snmpWarmStartNotificationGroup + DESCRIPTION + "This group is mandatory for an SNMP entity which + supports command responder applications, and is + able to reinitialize itself such that its + configuration is unaltered." + + ::= { snmpMIBCompliances 3 } + +END -- end of module SNMPv2-MIB. diff --git a/test/dumps/tree/IF-MIB b/test/dumps/tree/IF-MIB new file mode 100644 index 0000000..c57959d --- /dev/null +++ b/test/dumps/tree/IF-MIB @@ -0,0 +1,150 @@ +# IF-MIB registration tree (generated by smidump 0.4.5) + +--internet(1.3.6.1) + | + +--mgmt(2) + | | + | +--mib-2(1) + | | + | +--interfaces(2) + | | | + | | +-- r-n Integer32 ifNumber(1) + | | | + | | +--ifTable(2) + | | | + | | +--ifEntry(1) [ifIndex] + | | | + | | +-- r-n InterfaceIndex ifIndex(1) + | | +-- r-n DisplayString ifDescr(2) + | | +-- r-n IANAifType ifType(3) + | | +-- r-n Integer32 ifMtu(4) + | | +-- r-n Gauge32 ifSpeed(5) + | | +-- r-n PhysAddress ifPhysAddress(6) + | | +-- rwn Enumeration ifAdminStatus(7) + | | +-- r-n Enumeration ifOperStatus(8) + | | +-- r-n TimeTicks ifLastChange(9) + | | +-- r-n Counter32 ifInOctets(10) + | | +-- r-n Counter32 ifInUcastPkts(11) + | | x-- r-n Counter32 ifInNUcastPkts(12) + | | +-- r-n Counter32 ifInDiscards(13) + | | +-- r-n Counter32 ifInErrors(14) + | | +-- r-n Counter32 ifInUnknownProtos(15) + | | +-- r-n Counter32 ifOutOctets(16) + | | +-- r-n Counter32 ifOutUcastPkts(17) + | | x-- r-n Counter32 ifOutNUcastPkts(18) + | | +-- r-n Counter32 ifOutDiscards(19) + | | +-- r-n Counter32 ifOutErrors(20) + | | x-- r-n Gauge32 ifOutQLen(21) + | | x-- r-n ObjectIdentifier ifSpecific(22) + | | + | +--ifMIB(31) + | | + | +--ifMIBObjects(1) + | | | + | | +--ifXTable(1) + | | | | + | | | +--ifXEntry(1) [ifIndex] + | | | | + | | | +-- r-n DisplayString ifName(1) + | | | +-- r-n Counter32 ifInMulticastPkts(2) + | | | +-- r-n Counter32 ifInBroadcastPkts(3) + | | | +-- r-n Counter32 ifOutMulticastPkts(4) + | | | +-- r-n Counter32 ifOutBroadcastPkts(5) + | | | +-- r-n Counter64 ifHCInOctets(6) + | | | +-- r-n Counter64 ifHCInUcastPkts(7) + | | | +-- r-n Counter64 ifHCInMulticastPkts(8) + | | | +-- r-n Counter64 ifHCInBroadcastPkts(9) + | | | +-- r-n Counter64 ifHCOutOctets(10) + | | | +-- r-n Counter64 ifHCOutUcastPkts(11) + | | | +-- r-n Counter64 ifHCOutMulticastPkts(12) + | | | +-- r-n Counter64 ifHCOutBroadcastPkts(13) + | | | +-- rwn Enumeration ifLinkUpDownTrapEnable(14) + | | | +-- r-n Gauge32 ifHighSpeed(15) + | | | +-- rwn TruthValue ifPromiscuousMode(16) + | | | +-- r-n TruthValue ifConnectorPresent(17) + | | | +-- rwn DisplayString ifAlias(18) + | | | +-- r-n TimeStamp ifCounterDiscontinuityTime(19) + | | | + | | +--ifStackTable(2) + | | | | + | | | +--ifStackEntry(1) [ifStackHigherLayer,ifStackLowerLayer] + | | | | + | | | +-- --- InterfaceIndexOrZero ifStackHigherLayer(1) + | | | +-- --- InterfaceIndexOrZero ifStackLowerLayer(2) + | | | +-- rwn RowStatus ifStackStatus(3) + | | | + | | x--ifTestTable(3) + | | | | + | | | x--ifTestEntry(1) [ifIndex] + | | | | + | | | x-- rwn TestAndIncr ifTestId(1) + | | | x-- rwn Enumeration ifTestStatus(2) + | | | x-- rwn AutonomousType ifTestType(3) + | | | x-- r-n Enumeration ifTestResult(4) + | | | x-- r-n ObjectIdentifier ifTestCode(5) + | | | x-- rwn OwnerString ifTestOwner(6) + | | | + | | +--ifRcvAddressTable(4) + | | | | + | | | +--ifRcvAddressEntry(1) [ifIndex,ifRcvAddressAddress] + | | | | + | | | +-- --- PhysAddress ifRcvAddressAddress(1) + | | | +-- rwn RowStatus ifRcvAddressStatus(2) + | | | +-- rwn Enumeration ifRcvAddressType(3) + | | | + | | +-- r-n TimeTicks ifTableLastChange(5) + | | +-- r-n TimeTicks ifStackLastChange(6) + | | + | +--ifConformance(2) + | | + | +--ifGroups(1) + | | | + | | x--ifGeneralGroup(1) + | | | + | | +--ifFixedLengthGroup(2) + | | | + | | +--ifHCFixedLengthGroup(3) + | | | + | | +--ifPacketGroup(4) + | | | + | | +--ifHCPacketGroup(5) + | | | + | | +--ifVHCPacketGroup(6) + | | | + | | +--ifRcvAddressGroup(7) + | | | + | | x--ifTestGroup(8) + | | | + | | x--ifStackGroup(9) + | | | + | | +--ifGeneralInformationGroup(10) + | | | + | | +--ifStackGroup2(11) + | | | + | | x--ifOldObjectsGroup(12) + | | | + | | +--ifCounterDiscontinuityGroup(13) + | | | + | | +--linkUpDownNotificationsGroup(14) + | | + | +--ifCompliances(2) + | | + | x--ifCompliance(1) + | | + | x--ifCompliance2(2) + | | + | +--ifCompliance3(3) + | + +--snmpV2(6) + | + +--snmpModules(3) + | + +--snmpMIB(1) + | + +--snmpMIBObjects(1) + | + +--snmpTraps(5) + | + +--linkDown(3) [ifIndex,ifAdminStatus,ifOperStatus] + | + +--linkUp(4) [ifIndex,ifAdminStatus,ifOperStatus] diff --git a/test/dumps/tree/MAU-MIB b/test/dumps/tree/MAU-MIB new file mode 100644 index 0000000..dd2ec6f --- /dev/null +++ b/test/dumps/tree/MAU-MIB @@ -0,0 +1,140 @@ +# MAU-MIB registration tree (generated by smidump 0.4.5) + +--snmpDot3MauMgt(1.3.6.1.2.1.26) + | + +--snmpDot3MauTraps(0) + | | + | +--rpMauJabberTrap(1) [rpMauJabberState] + | | + | +--ifMauJabberTrap(2) [ifMauJabberState] + | + +--dot3RpMauBasicGroup(1) + | | + | +--rpMauTable(1) + | | | + | | +--rpMauEntry(1) [rpMauGroupIndex,rpMauPortIndex,rpMauIndex] + | | | + | | +-- r-n Integer32 rpMauGroupIndex(1) + | | +-- r-n Integer32 rpMauPortIndex(2) + | | +-- r-n Integer32 rpMauIndex(3) + | | +-- r-n AutonomousType rpMauType(4) + | | +-- rwn Enumeration rpMauStatus(5) + | | +-- r-n IANAifMauMediaAvailable rpMauMediaAvailable(6) + | | +-- r-n Counter32 rpMauMediaAvailableStateExits(7) + | | +-- r-n Enumeration rpMauJabberState(8) + | | +-- r-n Counter32 rpMauJabberingStateEnters(9) + | | +-- r-n Counter32 rpMauFalseCarriers(10) + | | + | +--rpJackTable(2) + | | + | +--rpJackEntry(1) [rpMauGroupIndex,rpMauPortIndex,rpMauIndex,rpJackIndex] + | | + | +-- --- Integer32 rpJackIndex(1) + | +-- r-n IANAifJackType rpJackType(2) + | + +--dot3IfMauBasicGroup(2) + | | + | +--ifMauTable(1) + | | | + | | +--ifMauEntry(1) [ifMauIfIndex,ifMauIndex] + | | | + | | +-- r-n InterfaceIndex ifMauIfIndex(1) + | | +-- r-n Integer32 ifMauIndex(2) + | | +-- r-n AutonomousType ifMauType(3) + | | +-- rwn Enumeration ifMauStatus(4) + | | +-- r-n IANAifMauMediaAvailable ifMauMediaAvailable(5) + | | +-- r-n Counter32 ifMauMediaAvailableStateExits(6) + | | +-- r-n Enumeration ifMauJabberState(7) + | | +-- r-n Counter32 ifMauJabberingStateEnters(8) + | | +-- r-n Counter32 ifMauFalseCarriers(9) + | | x-- r-n Integer32 ifMauTypeList(10) + | | +-- rwn AutonomousType ifMauDefaultType(11) + | | +-- r-n TruthValue ifMauAutoNegSupported(12) + | | +-- r-n IANAifMauTypeListBits ifMauTypeListBits(13) + | | +-- r-n Counter64 ifMauHCFalseCarriers(14) + | | + | +--ifJackTable(2) + | | + | +--ifJackEntry(1) [ifMauIfIndex,ifMauIndex,ifJackIndex] + | | + | +-- --- Integer32 ifJackIndex(1) + | +-- r-n IANAifJackType ifJackType(2) + | + +--dot3BroadMauBasicGroup(3) + | | + | x--broadMauBasicTable(1) + | | + | x--broadMauBasicEntry(1) [broadMauIfIndex,broadMauIndex] + | | + | x-- r-n InterfaceIndex broadMauIfIndex(1) + | x-- r-n Integer32 broadMauIndex(2) + | x-- r-n Enumeration broadMauXmtRcvSplitType(3) + | x-- r-n Integer32 broadMauXmtCarrierFreq(4) + | x-- r-n Integer32 broadMauTranslationFreq(5) + | + +--dot3IfMauAutoNegGroup(5) + | | + | +--ifMauAutoNegTable(1) + | | + | +--ifMauAutoNegEntry(1) [ifMauIfIndex,ifMauIndex] + | | + | +-- rwn Enumeration ifMauAutoNegAdminStatus(1) + | +-- r-n Enumeration ifMauAutoNegRemoteSignaling(2) + | +-- r-n Enumeration ifMauAutoNegConfig(4) + | x-- r-n Integer32 ifMauAutoNegCapability(5) + | x-- rwn Integer32 ifMauAutoNegCapAdvertised(6) + | x-- r-n Integer32 ifMauAutoNegCapReceived(7) + | +-- rwn Enumeration ifMauAutoNegRestart(8) + | +-- r-n IANAifMauAutoNegCapBits ifMauAutoNegCapabilityBits(9) + | +-- rwn IANAifMauAutoNegCapBits ifMauAutoNegCapAdvertisedBits(10) + | +-- r-n IANAifMauAutoNegCapBits ifMauAutoNegCapReceivedBits(11) + | +-- rwn Enumeration ifMauAutoNegRemoteFaultAdvertised(12) + | +-- r-n Enumeration ifMauAutoNegRemoteFaultReceived(13) + | + +--mauMod(6) + | + +--mauModConf(1) + | + +--mauModCompls(1) + | | + | x--mauModRpCompl(1) + | | + | x--mauModIfCompl(2) + | | + | x--mauModIfCompl2(3) + | | + | +--mauModRpCompl2(4) + | | + | +--mauModIfCompl3(5) + | + +--mauModObjGrps(2) + | | + | +--mauRpGrpBasic(1) + | | + | +--mauRpGrp100Mbs(2) + | | + | +--mauRpGrpJack(3) + | | + | +--mauIfGrpBasic(4) + | | + | x--mauIfGrp100Mbs(5) + | | + | +--mauIfGrpJack(6) + | | + | x--mauIfGrpAutoNeg(7) + | | + | x--mauBroadBasic(8) + | | + | +--mauIfGrpHighCapacity(9) + | | + | +--mauIfGrpAutoNeg2(10) + | | + | +--mauIfGrpAutoNeg1000Mbps(11) + | | + | +--mauIfGrpHCStats(12) + | + +--mauModNotGrps(3) + | + +--rpMauNotifications(1) + | + +--ifMauNotifications(2) diff --git a/test/dumps/tree/Makefile.am b/test/dumps/tree/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/tree/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/tree/Makefile.in b/test/dumps/tree/Makefile.in new file mode 100644 index 0000000..368692f --- /dev/null +++ b/test/dumps/tree/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/tree +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/tree/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/tree/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/tree/RMON2-MIB b/test/dumps/tree/RMON2-MIB new file mode 100644 index 0000000..e16659e --- /dev/null +++ b/test/dumps/tree/RMON2-MIB @@ -0,0 +1,443 @@ +# RMON2-MIB registration tree (generated by smidump 0.4.5) + +--rmon(1.3.6.1.2.1.16) + | + +--statistics(1) + | | + | +--etherStats2Table(4) + | | | + | | +--etherStats2Entry(1) [etherStatsIndex] + | | | + | | +-- r-n Counter32 etherStatsDroppedFrames(1) + | | +-- r-n LastCreateTime etherStatsCreateTime(2) + | | + | x--tokenRingMLStats2Table(5) + | | | + | | x--tokenRingMLStats2Entry(1) [tokenRingMLStatsIndex] + | | | + | | x-- r-n Counter32 tokenRingMLStatsDroppedFrames(1) + | | x-- r-n LastCreateTime tokenRingMLStatsCreateTime(2) + | | + | x--tokenRingPStats2Table(6) + | | + | x--tokenRingPStats2Entry(1) [tokenRingPStatsIndex] + | | + | x-- r-n Counter32 tokenRingPStatsDroppedFrames(1) + | x-- r-n LastCreateTime tokenRingPStatsCreateTime(2) + | + +--history(2) + | | + | +--historyControl2Table(5) + | | + | +--historyControl2Entry(1) [historyControlIndex] + | | + | +-- r-n Counter32 historyControlDroppedFrames(1) + | + +--hosts(4) + | | + | +--hostControl2Table(4) + | | + | +--hostControl2Entry(1) [hostControlIndex] + | | + | +-- r-n Counter32 hostControlDroppedFrames(1) + | +-- r-n LastCreateTime hostControlCreateTime(2) + | + +--matrix(6) + | | + | +--matrixControl2Table(4) + | | + | +--matrixControl2Entry(1) [matrixControlIndex] + | | + | +-- r-n Counter32 matrixControlDroppedFrames(1) + | +-- r-n LastCreateTime matrixControlCreateTime(2) + | + +--filter(7) + | | + | +--channel2Table(3) + | | | + | | +--channel2Entry(1) [channelIndex] + | | | + | | +-- r-n Counter32 channelDroppedFrames(1) + | | +-- r-n LastCreateTime channelCreateTime(2) + | | + | +--filter2Table(4) + | | + | +--filter2Entry(1) [filterIndex] + | | + | +-- rwn Integer32 filterProtocolDirDataLocalIndex(1) + | +-- rwn Integer32 filterProtocolDirLocalIndex(2) + | + +--tokenRing(10) + | | + | x--ringStationControl2Table(7) + | | | + | | x--ringStationControl2Entry(1) [ringStationControlIfIndex] + | | | + | | x-- r-n Counter32 ringStationControlDroppedFrames(1) + | | x-- r-n LastCreateTime ringStationControlCreateTime(2) + | | + | x--sourceRoutingStats2Table(8) + | | + | x--sourceRoutingStats2Entry(1) [sourceRoutingStatsIfIndex] + | | + | x-- r-n Counter32 sourceRoutingStatsDroppedFrames(1) + | x-- r-n LastCreateTime sourceRoutingStatsCreateTime(2) + | + +--protocolDir(11) + | | + | +-- r-n TimeStamp protocolDirLastChange(1) + | | + | +--protocolDirTable(2) + | | + | +--protocolDirEntry(1) [protocolDirID,protocolDirParameters] + | | + | +-- --- OctetString protocolDirID(1) + | +-- --- OctetString protocolDirParameters(2) + | +-- r-n Integer32 protocolDirLocalIndex(3) + | +-- rwn DisplayString protocolDirDescr(4) + | +-- r-n Bits protocolDirType(5) + | +-- rwn Enumeration protocolDirAddressMapConfig(6) + | +-- rwn Enumeration protocolDirHostConfig(7) + | +-- rwn Enumeration protocolDirMatrixConfig(8) + | +-- rwn OwnerString protocolDirOwner(9) + | +-- rwn RowStatus protocolDirStatus(10) + | + +--protocolDist(12) + | | + | +--protocolDistControlTable(1) + | | | + | | +--protocolDistControlEntry(1) [protocolDistControlIndex] + | | | + | | +-- --- Integer32 protocolDistControlIndex(1) + | | +-- rwn DataSource protocolDistControlDataSource(2) + | | +-- r-n Counter32 protocolDistControlDroppedFrames(3) + | | +-- r-n LastCreateTime protocolDistControlCreateTime(4) + | | +-- rwn OwnerString protocolDistControlOwner(5) + | | +-- rwn RowStatus protocolDistControlStatus(6) + | | + | +--protocolDistStatsTable(2) + | | + | +--protocolDistStatsEntry(1) [protocolDistControlIndex,protocolDirLocalIndex] + | | + | +-- r-n ZeroBasedCounter32 protocolDistStatsPkts(1) + | +-- r-n ZeroBasedCounter32 protocolDistStatsOctets(2) + | + +--addressMap(13) + | | + | +-- r-n Counter32 addressMapInserts(1) + | +-- r-n Counter32 addressMapDeletes(2) + | +-- rwn Integer32 addressMapMaxDesiredEntries(3) + | | + | +--addressMapControlTable(4) + | | | + | | +--addressMapControlEntry(1) [addressMapControlIndex] + | | | + | | +-- --- Integer32 addressMapControlIndex(1) + | | +-- rwn DataSource addressMapControlDataSource(2) + | | +-- r-n Counter32 addressMapControlDroppedFrames(3) + | | +-- rwn OwnerString addressMapControlOwner(4) + | | +-- rwn RowStatus addressMapControlStatus(5) + | | + | +--addressMapTable(5) + | | + | +--addressMapEntry(1) [addressMapTimeMark,protocolDirLocalIndex,addressMapNetworkAddress,addressMapSource] + | | + | +-- --- TimeFilter addressMapTimeMark(1) + | +-- --- OctetString addressMapNetworkAddress(2) + | +-- --- ObjectIdentifier addressMapSource(3) + | +-- r-n OctetString addressMapPhysicalAddress(4) + | +-- r-n TimeStamp addressMapLastChange(5) + | + +--nlHost(14) + | | + | +--hlHostControlTable(1) + | | | + | | +--hlHostControlEntry(1) [hlHostControlIndex] + | | | + | | +-- --- Integer32 hlHostControlIndex(1) + | | +-- rwn DataSource hlHostControlDataSource(2) + | | +-- r-n Counter32 hlHostControlNlDroppedFrames(3) + | | +-- r-n Counter32 hlHostControlNlInserts(4) + | | +-- r-n Counter32 hlHostControlNlDeletes(5) + | | +-- rwn Integer32 hlHostControlNlMaxDesiredEntries(6) + | | +-- r-n Counter32 hlHostControlAlDroppedFrames(7) + | | +-- r-n Counter32 hlHostControlAlInserts(8) + | | +-- r-n Counter32 hlHostControlAlDeletes(9) + | | +-- rwn Integer32 hlHostControlAlMaxDesiredEntries(10) + | | +-- rwn OwnerString hlHostControlOwner(11) + | | +-- rwn RowStatus hlHostControlStatus(12) + | | + | +--nlHostTable(2) + | | + | +--nlHostEntry(1) [hlHostControlIndex,nlHostTimeMark,protocolDirLocalIndex,nlHostAddress] + | | + | +-- --- TimeFilter nlHostTimeMark(1) + | +-- --- OctetString nlHostAddress(2) + | +-- r-n ZeroBasedCounter32 nlHostInPkts(3) + | +-- r-n ZeroBasedCounter32 nlHostOutPkts(4) + | +-- r-n ZeroBasedCounter32 nlHostInOctets(5) + | +-- r-n ZeroBasedCounter32 nlHostOutOctets(6) + | +-- r-n ZeroBasedCounter32 nlHostOutMacNonUnicastPkts(7) + | +-- r-n LastCreateTime nlHostCreateTime(8) + | + +--nlMatrix(15) + | | + | +--hlMatrixControlTable(1) + | | | + | | +--hlMatrixControlEntry(1) [hlMatrixControlIndex] + | | | + | | +-- --- Integer32 hlMatrixControlIndex(1) + | | +-- rwn DataSource hlMatrixControlDataSource(2) + | | +-- r-n Counter32 hlMatrixControlNlDroppedFrames(3) + | | +-- r-n Counter32 hlMatrixControlNlInserts(4) + | | +-- r-n Counter32 hlMatrixControlNlDeletes(5) + | | +-- rwn Integer32 hlMatrixControlNlMaxDesiredEntries(6) + | | +-- r-n Counter32 hlMatrixControlAlDroppedFrames(7) + | | +-- r-n Counter32 hlMatrixControlAlInserts(8) + | | +-- r-n Counter32 hlMatrixControlAlDeletes(9) + | | +-- rwn Integer32 hlMatrixControlAlMaxDesiredEntries(10) + | | +-- rwn OwnerString hlMatrixControlOwner(11) + | | +-- rwn RowStatus hlMatrixControlStatus(12) + | | + | +--nlMatrixSDTable(2) + | | | + | | +--nlMatrixSDEntry(1) [hlMatrixControlIndex,nlMatrixSDTimeMark,protocolDirLocalIndex,nlMatrixSDSourceAddress,nlMatrixSDDestAddress] + | | | + | | +-- --- TimeFilter nlMatrixSDTimeMark(1) + | | +-- --- OctetString nlMatrixSDSourceAddress(2) + | | +-- --- OctetString nlMatrixSDDestAddress(3) + | | +-- r-n ZeroBasedCounter32 nlMatrixSDPkts(4) + | | +-- r-n ZeroBasedCounter32 nlMatrixSDOctets(5) + | | +-- r-n LastCreateTime nlMatrixSDCreateTime(6) + | | + | +--nlMatrixDSTable(3) + | | | + | | +--nlMatrixDSEntry(1) [hlMatrixControlIndex,nlMatrixDSTimeMark,protocolDirLocalIndex,nlMatrixDSDestAddress,nlMatrixDSSourceAddress] + | | | + | | +-- --- TimeFilter nlMatrixDSTimeMark(1) + | | +-- --- OctetString nlMatrixDSSourceAddress(2) + | | +-- --- OctetString nlMatrixDSDestAddress(3) + | | +-- r-n ZeroBasedCounter32 nlMatrixDSPkts(4) + | | +-- r-n ZeroBasedCounter32 nlMatrixDSOctets(5) + | | +-- r-n LastCreateTime nlMatrixDSCreateTime(6) + | | + | +--nlMatrixTopNControlTable(4) + | | | + | | +--nlMatrixTopNControlEntry(1) [nlMatrixTopNControlIndex] + | | | + | | +-- --- Integer32 nlMatrixTopNControlIndex(1) + | | +-- rwn Integer32 nlMatrixTopNControlMatrixIndex(2) + | | +-- rwn Enumeration nlMatrixTopNControlRateBase(3) + | | +-- rwn Integer32 nlMatrixTopNControlTimeRemaining(4) + | | +-- r-n Counter32 nlMatrixTopNControlGeneratedReports(5) + | | +-- r-n Integer32 nlMatrixTopNControlDuration(6) + | | +-- rwn Integer32 nlMatrixTopNControlRequestedSize(7) + | | +-- r-n Integer32 nlMatrixTopNControlGrantedSize(8) + | | +-- r-n TimeStamp nlMatrixTopNControlStartTime(9) + | | +-- rwn OwnerString nlMatrixTopNControlOwner(10) + | | +-- rwn RowStatus nlMatrixTopNControlStatus(11) + | | + | +--nlMatrixTopNTable(5) + | | + | +--nlMatrixTopNEntry(1) [nlMatrixTopNControlIndex,nlMatrixTopNIndex] + | | + | +-- --- Integer32 nlMatrixTopNIndex(1) + | +-- r-n Integer32 nlMatrixTopNProtocolDirLocalIndex(2) + | +-- r-n OctetString nlMatrixTopNSourceAddress(3) + | +-- r-n OctetString nlMatrixTopNDestAddress(4) + | +-- r-n Gauge32 nlMatrixTopNPktRate(5) + | +-- r-n Gauge32 nlMatrixTopNReversePktRate(6) + | +-- r-n Gauge32 nlMatrixTopNOctetRate(7) + | +-- r-n Gauge32 nlMatrixTopNReverseOctetRate(8) + | + +--alHost(16) + | | + | +--alHostTable(1) + | | + | +--alHostEntry(1) [hlHostControlIndex,alHostTimeMark,protocolDirLocalIndex,nlHostAddress,protocolDirLocalIndex] + | | + | +-- --- TimeFilter alHostTimeMark(1) + | +-- r-n ZeroBasedCounter32 alHostInPkts(2) + | +-- r-n ZeroBasedCounter32 alHostOutPkts(3) + | +-- r-n ZeroBasedCounter32 alHostInOctets(4) + | +-- r-n ZeroBasedCounter32 alHostOutOctets(5) + | +-- r-n LastCreateTime alHostCreateTime(6) + | + +--alMatrix(17) + | | + | +--alMatrixSDTable(1) + | | | + | | +--alMatrixSDEntry(1) [hlMatrixControlIndex,alMatrixSDTimeMark,protocolDirLocalIndex,nlMatrixSDSourceAddress,nlMatrixSDDestAddress,protocolDirLocalIndex] + | | | + | | +-- --- TimeFilter alMatrixSDTimeMark(1) + | | +-- r-n ZeroBasedCounter32 alMatrixSDPkts(2) + | | +-- r-n ZeroBasedCounter32 alMatrixSDOctets(3) + | | +-- r-n LastCreateTime alMatrixSDCreateTime(4) + | | + | +--alMatrixDSTable(2) + | | | + | | +--alMatrixDSEntry(1) [hlMatrixControlIndex,alMatrixDSTimeMark,protocolDirLocalIndex,nlMatrixDSDestAddress,nlMatrixDSSourceAddress,protocolDirLocalIndex] + | | | + | | +-- --- TimeFilter alMatrixDSTimeMark(1) + | | +-- r-n ZeroBasedCounter32 alMatrixDSPkts(2) + | | +-- r-n ZeroBasedCounter32 alMatrixDSOctets(3) + | | +-- r-n LastCreateTime alMatrixDSCreateTime(4) + | | + | +--alMatrixTopNControlTable(3) + | | | + | | +--alMatrixTopNControlEntry(1) [alMatrixTopNControlIndex] + | | | + | | +-- --- Integer32 alMatrixTopNControlIndex(1) + | | +-- rwn Integer32 alMatrixTopNControlMatrixIndex(2) + | | +-- rwn Enumeration alMatrixTopNControlRateBase(3) + | | +-- rwn Integer32 alMatrixTopNControlTimeRemaining(4) + | | +-- r-n Counter32 alMatrixTopNControlGeneratedReports(5) + | | +-- r-n Integer32 alMatrixTopNControlDuration(6) + | | +-- rwn Integer32 alMatrixTopNControlRequestedSize(7) + | | +-- r-n Integer32 alMatrixTopNControlGrantedSize(8) + | | +-- r-n TimeStamp alMatrixTopNControlStartTime(9) + | | +-- rwn OwnerString alMatrixTopNControlOwner(10) + | | +-- rwn RowStatus alMatrixTopNControlStatus(11) + | | + | +--alMatrixTopNTable(4) + | | + | +--alMatrixTopNEntry(1) [alMatrixTopNControlIndex,alMatrixTopNIndex] + | | + | +-- --- Integer32 alMatrixTopNIndex(1) + | +-- r-n Integer32 alMatrixTopNProtocolDirLocalIndex(2) + | +-- r-n OctetString alMatrixTopNSourceAddress(3) + | +-- r-n OctetString alMatrixTopNDestAddress(4) + | +-- r-n Integer32 alMatrixTopNAppProtocolDirLocalIndex(5) + | +-- r-n Gauge32 alMatrixTopNPktRate(6) + | +-- r-n Gauge32 alMatrixTopNReversePktRate(7) + | +-- r-n Gauge32 alMatrixTopNOctetRate(8) + | +-- r-n Gauge32 alMatrixTopNReverseOctetRate(9) + | + +--usrHistory(18) + | | + | +--usrHistoryControlTable(1) + | | | + | | +--usrHistoryControlEntry(1) [usrHistoryControlIndex] + | | | + | | +-- --- Integer32 usrHistoryControlIndex(1) + | | +-- rwn Integer32 usrHistoryControlObjects(2) + | | +-- rwn Integer32 usrHistoryControlBucketsRequested(3) + | | +-- r-n Integer32 usrHistoryControlBucketsGranted(4) + | | +-- rwn Integer32 usrHistoryControlInterval(5) + | | +-- rwn OwnerString usrHistoryControlOwner(6) + | | +-- rwn RowStatus usrHistoryControlStatus(7) + | | + | +--usrHistoryObjectTable(2) + | | | + | | +--usrHistoryObjectEntry(1) [usrHistoryControlIndex,usrHistoryObjectIndex] + | | | + | | +-- --- Integer32 usrHistoryObjectIndex(1) + | | +-- rwn ObjectIdentifier usrHistoryObjectVariable(2) + | | +-- rwn Enumeration usrHistoryObjectSampleType(3) + | | + | +--usrHistoryTable(3) + | | + | +--usrHistoryEntry(1) [usrHistoryControlIndex,usrHistorySampleIndex,usrHistoryObjectIndex] + | | + | +-- --- Integer32 usrHistorySampleIndex(1) + | +-- r-n TimeStamp usrHistoryIntervalStart(2) + | +-- r-n TimeStamp usrHistoryIntervalEnd(3) + | +-- r-n Gauge32 usrHistoryAbsValue(4) + | +-- r-n Enumeration usrHistoryValStatus(5) + | + +--probeConfig(19) + | | + | +-- r-n Bits probeCapabilities(1) + | +-- r-n DisplayString probeSoftwareRev(2) + | +-- r-n DisplayString probeHardwareRev(3) + | +-- rwn OctetString probeDateTime(4) + | +-- rwn Enumeration probeResetControl(5) + | x-- rwn DisplayString probeDownloadFile(6) + | x-- rwn IpAddress probeDownloadTFTPServer(7) + | x-- rwn Enumeration probeDownloadAction(8) + | x-- r-n Enumeration probeDownloadStatus(9) + | | + | x--serialConfigTable(10) + | | | + | | x--serialConfigEntry(1) [ifIndex] + | | | + | | x-- rwn Enumeration serialMode(1) + | | x-- rwn Enumeration serialProtocol(2) + | | x-- rwn Integer32 serialTimeout(3) + | | x-- rwn ControlString serialModemInitString(4) + | | x-- rwn ControlString serialModemHangUpString(5) + | | x-- rwn DisplayString serialModemConnectResp(6) + | | x-- rwn DisplayString serialModemNoConnectResp(7) + | | x-- rwn Integer32 serialDialoutTimeout(8) + | | x-- rwn RowStatus serialStatus(9) + | | + | x--netConfigTable(11) + | | | + | | x--netConfigEntry(1) [ifIndex] + | | | + | | x-- rwn IpAddress netConfigIPAddress(1) + | | x-- rwn IpAddress netConfigSubnetMask(2) + | | x-- rwn RowStatus netConfigStatus(3) + | | + | x-- rwn IpAddress netDefaultGateway(12) + | | + | x--trapDestTable(13) + | | | + | | x--trapDestEntry(1) [trapDestIndex] + | | | + | | x-- --- Integer32 trapDestIndex(1) + | | x-- rwn OctetString trapDestCommunity(2) + | | x-- rwn Enumeration trapDestProtocol(3) + | | x-- rwn OctetString trapDestAddress(4) + | | x-- rwn OwnerString trapDestOwner(5) + | | x-- rwn RowStatus trapDestStatus(6) + | | + | x--serialConnectionTable(14) + | | + | x--serialConnectionEntry(1) [serialConnectIndex] + | | + | x-- --- Integer32 serialConnectIndex(1) + | x-- rwn IpAddress serialConnectDestIpAddress(2) + | x-- rwn Enumeration serialConnectType(3) + | x-- rwn ControlString serialConnectDialString(4) + | x-- rwn ControlString serialConnectSwitchConnectSeq(5) + | x-- rwn ControlString serialConnectSwitchDisconnectSeq(6) + | x-- rwn ControlString serialConnectSwitchResetSeq(7) + | x-- rwn OwnerString serialConnectOwner(8) + | x-- rwn RowStatus serialConnectStatus(9) + | + +--rmonConformance(20) + | + +--rmon2MIBCompliances(1) + | | + | +--rmon2MIBCompliance(1) + | | + | +--rmon2MIBApplicationLayerCompliance(2) + | + +--rmon2MIBGroups(2) + | + +--protocolDirectoryGroup(1) + | + +--protocolDistributionGroup(2) + | + +--addressMapGroup(3) + | + +--nlHostGroup(4) + | + +--nlMatrixGroup(5) + | + +--alHostGroup(6) + | + +--alMatrixGroup(7) + | + +--usrHistoryGroup(8) + | + +--probeInformationGroup(9) + | + x--probeConfigurationGroup(10) + | + +--rmon1EnhancementGroup(11) + | + +--rmon1EthernetEnhancementGroup(12) + | + x--rmon1TokenRingEnhancementGroup(13) diff --git a/test/dumps/tree/SNMPv2-MIB b/test/dumps/tree/SNMPv2-MIB new file mode 100644 index 0000000..4014666 --- /dev/null +++ b/test/dumps/tree/SNMPv2-MIB @@ -0,0 +1,111 @@ +# SNMPv2-MIB registration tree (generated by smidump 0.4.5) + +--internet(1.3.6.1) + | + +--mgmt(2) + | | + | +--mib-2(1) + | | + | +--system(1) + | | | + | | +-- r-n DisplayString sysDescr(1) + | | +-- r-n ObjectIdentifier sysObjectID(2) + | | +-- r-n TimeTicks sysUpTime(3) + | | +-- rwn DisplayString sysContact(4) + | | +-- rwn DisplayString sysName(5) + | | +-- rwn DisplayString sysLocation(6) + | | +-- r-n Integer32 sysServices(7) + | | +-- r-n TimeStamp sysORLastChange(8) + | | | + | | +--sysORTable(9) + | | | + | | +--sysOREntry(1) [sysORIndex] + | | | + | | +-- --- Integer32 sysORIndex(1) + | | +-- r-n ObjectIdentifier sysORID(2) + | | +-- r-n DisplayString sysORDescr(3) + | | +-- r-n TimeStamp sysORUpTime(4) + | | + | +--snmp(11) + | | + | +-- r-n Counter32 snmpInPkts(1) + | o-- r-n Counter32 snmpOutPkts(2) + | +-- r-n Counter32 snmpInBadVersions(3) + | +-- r-n Counter32 snmpInBadCommunityNames(4) + | +-- r-n Counter32 snmpInBadCommunityUses(5) + | +-- r-n Counter32 snmpInASNParseErrs(6) + | o-- r-n Counter32 snmpInTooBigs(8) + | o-- r-n Counter32 snmpInNoSuchNames(9) + | o-- r-n Counter32 snmpInBadValues(10) + | o-- r-n Counter32 snmpInReadOnlys(11) + | o-- r-n Counter32 snmpInGenErrs(12) + | o-- r-n Counter32 snmpInTotalReqVars(13) + | o-- r-n Counter32 snmpInTotalSetVars(14) + | o-- r-n Counter32 snmpInGetRequests(15) + | o-- r-n Counter32 snmpInGetNexts(16) + | o-- r-n Counter32 snmpInSetRequests(17) + | o-- r-n Counter32 snmpInGetResponses(18) + | o-- r-n Counter32 snmpInTraps(19) + | o-- r-n Counter32 snmpOutTooBigs(20) + | o-- r-n Counter32 snmpOutNoSuchNames(21) + | o-- r-n Counter32 snmpOutBadValues(22) + | o-- r-n Counter32 snmpOutGenErrs(24) + | o-- r-n Counter32 snmpOutGetRequests(25) + | o-- r-n Counter32 snmpOutGetNexts(26) + | o-- r-n Counter32 snmpOutSetRequests(27) + | o-- r-n Counter32 snmpOutGetResponses(28) + | o-- r-n Counter32 snmpOutTraps(29) + | +-- rwn Enumeration snmpEnableAuthenTraps(30) + | +-- r-n Counter32 snmpSilentDrops(31) + | +-- r-n Counter32 snmpProxyDrops(32) + | + +--snmpV2(6) + | + +--snmpModules(3) + | + +--snmpMIB(1) + | + +--snmpMIBObjects(1) + | | + | +--snmpTrap(4) + | | | + | | +-- --n ObjectIdentifier snmpTrapOID(1) + | | +-- --n ObjectIdentifier snmpTrapEnterprise(3) + | | + | +--snmpTraps(5) + | | | + | | +--coldStart(1) [] + | | | + | | +--warmStart(2) [] + | | | + | | +--authenticationFailure(5) [] + | | + | +--snmpSet(6) + | | + | +-- rwn TestAndIncr snmpSetSerialNo(1) + | + +--snmpMIBConformance(2) + | + +--snmpMIBCompliances(1) + | | + | x--snmpBasicCompliance(2) + | | + | +--snmpBasicComplianceRev2(3) + | + +--snmpMIBGroups(2) + | + +--snmpSetGroup(5) + | + +--systemGroup(6) + | + +--snmpBasicNotificationsGroup(7) + | + +--snmpGroup(8) + | + +--snmpCommunityGroup(9) + | + o--snmpObsoleteGroup(10) + | + +--snmpWarmStartNotificationGroup(11) + | + +--snmpNotificationGroup(12) diff --git a/test/dumps/types/IF-MIB b/test/dumps/types/IF-MIB new file mode 100644 index 0000000..bf7c8cc --- /dev/null +++ b/test/dumps/types/IF-MIB @@ -0,0 +1,33 @@ +# IF-MIB type derivation tree (generated by smidump 0.4.5) + + | + +-- --b OctetString + | | + | x-- t-i OwnerString [0..255] "255a" + | +-- t-i DisplayString [0..255] "255a" + | | + | +-- i-i (ifDescr) [0..255] + | +-- i-i (ifAlias) [0..64] + | + +-- --b Integer32 + | | + | +-- t-i InterfaceIndex [1..2147483647] "d" + | +-- t-i InterfaceIndexOrZero [0..2147483647] "d" + | + +-- --b Enumeration + | + +-- i-i (ifAdminStatus) {up(1), down(2), testing(3)} + | | + | x-- i-i (ifAdminStatus) {up(1), down(2)} + | x-- i-i (ifAdminStatus) {up(1), down(2)} + | +-- i-i (ifAdminStatus) {up(1), down(2)} + | + +-- i-i (ifOperStatus) {up(1), down(2), testing(3), unknown(4), dormant(5), notPresent(6), lowerLayerDown(7)} + +-- i-i (ifLinkUpDownTrapEnable) {enabled(1), disabled(2)} + x-- i-i (ifTestStatus) {notInUse(1), inUse(2)} + x-- i-i (ifTestResult) {none(1), success(2), inProgress(3), notSupported(4), unAbleToRun(5), aborted(6), failed(7)} + +-- i-i (ifRcvAddressType) {other(1), volatile(2), nonVolatile(3)} + +-- t-i RowStatus {active(1), notInService(2), notReady(3), createAndGo(4), createAndWait(5), destroy(6)} + | + x-- i-i (ifStackStatus) {active(1)} + x-- i-i (ifStackStatus) {active(1)} diff --git a/test/dumps/types/MAU-MIB b/test/dumps/types/MAU-MIB new file mode 100644 index 0000000..6771cf3 --- /dev/null +++ b/test/dumps/types/MAU-MIB @@ -0,0 +1,27 @@ +# MAU-MIB type derivation tree (generated by smidump 0.4.5) + + | + +-- --b Enumeration + | | + | x-- t-i JackType {other(1), rj45(2), rj45S(3), db9(4), bnc(5), fAUI(6), mAUI(7), fiberSC(8), fiberMIC(9), fiberST(10), telco(11), mtrj(12), hssdc(13), fiberLC(14)} + | +-- i-i (rpMauStatus) {other(1), unknown(2), operational(3), standby(4), shutdown(5), reset(6)} + | +-- i-i (rpMauJabberState) {other(1), unknown(2), noJabber(3), jabbering(4)} + | +-- i-i (ifMauStatus) {other(1), unknown(2), operational(3), standby(4), shutdown(5), reset(6)} + | +-- i-i (ifMauJabberState) {other(1), unknown(2), noJabber(3), jabbering(4)} + | x-- i-i (broadMauXmtRcvSplitType) {other(1), single(2), dual(3)} + | +-- i-i (ifMauAutoNegAdminStatus) {enabled(1), disabled(2)} + | +-- i-i (ifMauAutoNegRemoteSignaling) {detected(1), notdetected(2)} + | +-- i-i (ifMauAutoNegConfig) {other(1), configuring(2), complete(3), disabled(4), parallelDetectFail(5)} + | +-- i-i (ifMauAutoNegRestart) {restart(1), norestart(2)} + | +-- i-i (ifMauAutoNegRemoteFaultAdvertised) {noError(1), offline(2), linkFailure(3), autoNegError(4)} + | +-- i-i (ifMauAutoNegRemoteFaultReceived) {noError(1), offline(2), linkFailure(3), autoNegError(4)} + | + +-- --b Integer32 + | + +-- i-i (rpMauGroupIndex) [1..2147483647] + +-- i-i (rpMauPortIndex) [1..2147483647] + +-- i-i (rpMauIndex) [1..2147483647] + +-- i-i (rpJackIndex) [1..2147483647] + +-- i-i (ifMauIndex) [1..2147483647] + +-- i-i (ifJackIndex) [1..2147483647] + x-- i-i (broadMauIndex) [1..2147483647] diff --git a/test/dumps/types/Makefile.am b/test/dumps/types/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/types/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/types/Makefile.in b/test/dumps/types/Makefile.in new file mode 100644 index 0000000..20b6751 --- /dev/null +++ b/test/dumps/types/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/types +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/types/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/types/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/types/RMON2-MIB b/test/dumps/types/RMON2-MIB new file mode 100644 index 0000000..4b552e5 --- /dev/null +++ b/test/dumps/types/RMON2-MIB @@ -0,0 +1,122 @@ +# RMON2-MIB type derivation tree (generated by smidump 0.4.5) + + | + +-- --b Unsigned32 + | | + | +-- a-i Gauge32 [0..4294967295] + | | | + | | +-- t-i ZeroBasedCounter32 + | | + | +-- a-i TimeTicks [0..4294967295] + | | + | +-- t-i LastCreateTime + | +-- t-i TimeFilter + | + +-- --b ObjectIdentifier + | | + | +-- t-i DataSource + | + +-- --b OctetString + | | + | +-- t-i ControlString [0..255] + | | | + | | +-- i-i (serialModemInitString) [0..255] + | | +-- i-i (serialModemHangUpString) [0..255] + | | +-- i-i (serialConnectDialString) [0..255] + | | +-- i-i (serialConnectSwitchConnectSeq) [0..255] + | | +-- i-i (serialConnectSwitchDisconnectSeq) [0..255] + | | +-- i-i (serialConnectSwitchResetSeq) [0..255] + | | + | +-- i-i (protocolDirID) [4..128] + | +-- i-i (protocolDirParameters) [1..32] + | +-- t-i DisplayString [0..255] "255a" + | | | + | | +-- i-i (protocolDirDescr) [1..64] + | | +-- i-i (probeSoftwareRev) [0..15] + | | +-- i-i (probeHardwareRev) [0..31] + | | +-- i-i (probeDownloadFile) [0..127] + | | +-- i-i (serialModemConnectResp) [0..255] + | | +-- i-i (serialModemNoConnectResp) [0..255] + | | + | +-- i-i (addressMapNetworkAddress) [1..255] + | +-- i-i (nlHostAddress) [1..255] + | +-- i-i (nlMatrixSDSourceAddress) [1..255] + | +-- i-i (nlMatrixSDDestAddress) [1..255] + | +-- i-i (nlMatrixDSSourceAddress) [1..255] + | +-- i-i (nlMatrixDSDestAddress) [1..255] + | +-- i-i (nlMatrixTopNSourceAddress) [1..255] + | +-- i-i (nlMatrixTopNDestAddress) [1..255] + | +-- i-i (alMatrixTopNSourceAddress) [1..255] + | +-- i-i (alMatrixTopNDestAddress) [1..255] + | +-- i-i (probeDateTime) [0, 8, 11] + | x-- i-i (trapDestCommunity) [0..127] + | + +-- --b Integer32 + | | + | +-- i-i (filterProtocolDirDataLocalIndex) [0..2147483647] + | +-- i-i (filterProtocolDirLocalIndex) [0..2147483647] + | +-- i-i (protocolDirLocalIndex) [1..2147483647] + | +-- i-i (protocolDistControlIndex) [1..65535] + | +-- i-i (addressMapMaxDesiredEntries) [-1..2147483647] + | +-- i-i (addressMapControlIndex) [1..65535] + | +-- i-i (hlHostControlIndex) [1..65535] + | +-- i-i (hlHostControlNlMaxDesiredEntries) [-1..2147483647] + | +-- i-i (hlHostControlAlMaxDesiredEntries) [-1..2147483647] + | +-- i-i (hlMatrixControlIndex) [1..65535] + | +-- i-i (hlMatrixControlNlMaxDesiredEntries) [-1..2147483647] + | +-- i-i (hlMatrixControlAlMaxDesiredEntries) [-1..2147483647] + | +-- i-i (nlMatrixTopNControlIndex) [1..65535] + | +-- i-i (nlMatrixTopNControlMatrixIndex) [1..65535] + | +-- i-i (nlMatrixTopNControlTimeRemaining) [0..2147483647] + | +-- i-i (nlMatrixTopNControlRequestedSize) [0..2147483647] + | +-- i-i (nlMatrixTopNControlGrantedSize) [0..2147483647] + | +-- i-i (nlMatrixTopNIndex) [1..65535] + | +-- i-i (nlMatrixTopNProtocolDirLocalIndex) [1..2147483647] + | +-- i-i (alMatrixTopNControlIndex) [1..65535] + | +-- i-i (alMatrixTopNControlMatrixIndex) [1..65535] + | +-- i-i (alMatrixTopNControlTimeRemaining) [0..2147483647] + | +-- i-i (alMatrixTopNControlRequestedSize) [0..2147483647] + | +-- i-i (alMatrixTopNControlGrantedSize) [0..2147483647] + | +-- i-i (alMatrixTopNIndex) [1..65535] + | +-- i-i (alMatrixTopNProtocolDirLocalIndex) [1..2147483647] + | +-- i-i (alMatrixTopNAppProtocolDirLocalIndex) [1..2147483647] + | +-- i-i (usrHistoryControlIndex) [1..65535] + | +-- i-i (usrHistoryControlObjects) [1..65535] + | +-- i-i (usrHistoryControlBucketsRequested) [1..65535] + | +-- i-i (usrHistoryControlBucketsGranted) [1..65535] + | +-- i-i (usrHistoryControlInterval) [1..2147483647] + | +-- i-i (usrHistoryObjectIndex) [1..65535] + | +-- i-i (usrHistorySampleIndex) [1..2147483647] + | x-- i-i (serialTimeout) [1..65535] + | x-- i-i (serialDialoutTimeout) [1..65535] + | x-- i-i (trapDestIndex) [1..65535] + | x-- i-i (serialConnectIndex) [1..65535] + | + +-- --b Bits + | | + | +-- i-i (protocolDirType) {extensible(0), addressRecognitionCapable(1)} + | +-- i-i (probeCapabilities) {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)} + | + +-- --b Enumeration + | + +-- i-i (protocolDirAddressMapConfig) {notSupported(1), supportedOff(2), supportedOn(3)} + +-- i-i (protocolDirHostConfig) {notSupported(1), supportedOff(2), supportedOn(3)} + +-- i-i (protocolDirMatrixConfig) {notSupported(1), supportedOff(2), supportedOn(3)} + +-- i-i (nlMatrixTopNControlRateBase) {nlMatrixTopNPkts(1), nlMatrixTopNOctets(2), nlMatrixTopNHighCapacityPkts(3), nlMatrixTopNHighCapacityOctets(4)} + | | + | +-- i-i (nlMatrixTopNControlRateBase) {nlMatrixTopNPkts(1), nlMatrixTopNOctets(2)} + | +-- i-i (nlMatrixTopNControlRateBase) {nlMatrixTopNPkts(1), nlMatrixTopNOctets(2)} + | + +-- i-i (alMatrixTopNControlRateBase) {alMatrixTopNTerminalsPkts(1), alMatrixTopNTerminalsOctets(2), alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4), alMatrixTopNTerminalsHighCapacityPkts(5), alMatrixTopNTerminalsHighCapacityOctets(6), alMatrixTopNAllHighCapacityPkts(7), alMatrixTopNAllHighCapacityOctets(8)} + | | + | +-- i-i (alMatrixTopNControlRateBase) {alMatrixTopNTerminalsPkts(1), alMatrixTopNTerminalsOctets(2), alMatrixTopNAllPkts(3), alMatrixTopNAllOctets(4)} + | + +-- i-i (usrHistoryObjectSampleType) {absoluteValue(1), deltaValue(2)} + +-- i-i (usrHistoryValStatus) {valueNotAvailable(1), valuePositive(2), valueNegative(3)} + +-- i-i (probeResetControl) {running(1), warmBoot(2), coldBoot(3)} + x-- i-i (probeDownloadAction) {notDownloading(1), downloadToPROM(2), downloadToRAM(3)} + x-- i-i (probeDownloadStatus) {downloadSuccess(1), downloadStatusUnknown(2), downloadGeneralError(3), downloadNoResponseFromServer(4), downloadChecksumError(5), downloadIncompatibleImage(6), downloadTftpFileNotFound(7), downloadTftpAccessViolation(8)} + x-- i-i (serialMode) {direct(1), modem(2)} + x-- i-i (serialProtocol) {other(1), slip(2), ppp(3)} + x-- i-i (trapDestProtocol) {ip(1), ipx(2)} + x-- i-i (serialConnectType) {direct(1), modem(2), switch(3), modemSwitch(4)} diff --git a/test/dumps/types/SNMPv2-MIB b/test/dumps/types/SNMPv2-MIB new file mode 100644 index 0000000..322d830 --- /dev/null +++ b/test/dumps/types/SNMPv2-MIB @@ -0,0 +1,20 @@ +# SNMPv2-MIB type derivation tree (generated by smidump 0.4.5) + + | + +-- --b OctetString + | | + | +-- t-i DisplayString [0..255] "255a" + | | + | +-- i-i (sysDescr) [0..255] + | +-- i-i (sysContact) [0..255] + | +-- i-i (sysName) [0..255] + | +-- i-i (sysLocation) [0..255] + | + +-- --b Integer32 + | | + | +-- i-i (sysServices) [0..127] + | +-- i-i (sysORIndex) [1..2147483647] + | + +-- --b Enumeration + | + +-- i-i (snmpEnableAuthenTraps) {enabled(1), disabled(2)} diff --git a/test/dumps/xml/IF-MIB b/test/dumps/xml/IF-MIB new file mode 100644 index 0000000..b6895d4 --- /dev/null +++ b/test/dumps/xml/IF-MIB @@ -0,0 +1,1907 @@ + + + + + + + + + IETF Interfaces MIB Working Group + + + Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com + + + The MIB module to describe generic objects for network + interface sub-layers. This MIB is an updated version of + MIB-II's ifTable, and incorporates the extensions defined in + RFC 1229. + + + + Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863. + + + + + Revisions made by the Interfaces MIB WG, and published in + RFC 2233. + + + + + Initial revision, published as part of RFC 1573. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 255a + + 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'. + + + + + d + + A unique value, greater than zero, for each interface or + interface sub-layer in the managed system. It is + recommended that values are assigned contiguously starting + from 1. The value for each interface sub-layer must remain + constant at least from one re-initialization of the entity's + network management system to the next re-initialization. + + + + + d + + This textual convention is an extension of the + InterfaceIndex convention. The latter defines a greater + than zero value used to identify an interface or interface + sub-layer in the managed system. This extension permits the + additional value of zero. the value zero is object-specific + and must therefore be defined as part of the description of + any object which uses this syntax. Examples of the usage of + zero might include situations where interface was unknown, + or when none or all interfaces need to be referenced. + + + + + + + + + + + + readonly + + The number of network interfaces (regardless of their + current state) present on this system. + + + + + A list of interface entries. The number of entries is + given by the value of ifNumber. + + + + + + + An entry containing management information applicable to a + particular interface. + + + + + + readonly + + A unique value, greater than zero, for each interface. It + is recommended that values are assigned contiguously + starting from 1. The value for each interface sub-layer + must remain constant at least from one re-initialization of + the entity's network management system to the next re- + initialization. + + + + + + + + + + readonly + + A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software. + + + + + + + readonly + + The type of interface. Additional values for ifType are + assigned by the Internet Assigned Numbers Authority (IANA), + through updating the syntax of the IANAifType textual + convention. + + + + + + + readonly + + The size of the largest packet which can be sent/received + on the interface, specified in octets. For interfaces that + are used for transmitting network datagrams, this is the + size of the largest network datagram that can be sent on the + interface. + + + + + + + readonly + + An estimate of the interface's current bandwidth in bits + per second. For interfaces which do not vary in bandwidth + or for those where no accurate estimation can be made, this + object should contain the nominal bandwidth. If the + bandwidth of the interface is greater than the maximum value + reportable by this object then this object should report its + maximum value (4,294,967,295) and ifHighSpeed must be used + to report the interace's speed. For a sub-layer which has + no concept of bandwidth, this object should be zero. + + + + + + + readonly + + The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific MIB + must define the bit and byte ordering and the format of the + value of this object. For interfaces which do not have such + an address (e.g., a serial line), this object should contain + an octet string of zero length. + + + + + + + + + + + readwrite + + The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state). + + + + + + + + + + + + + + + readonly + + The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components. + + + + + + + readonly + + The value of sysUpTime at the time the interface entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value. + + + + + + + readonly + + The total number of octets received on the interface, + + + including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast or + broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifInMulticastPkts and + ifInBroadcastPkts. + + + + + + + readonly + + The number of inbound packets which were chosen to be + discarded even though no errors had been detected to prevent + + + their being deliverable to a higher-layer protocol. One + possible reason for discarding such a packet could be to + free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of inbound + transmission units that contained errors preventing them + from being deliverable to a higher-layer protocol. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + For packet-oriented interfaces, the number of packets + received via the interface which were discarded because of + an unknown or unsupported protocol. For character-oriented + or fixed-length interfaces that support protocol + multiplexing the number of transmission units received via + the interface which were discarded because of an unknown or + unsupported protocol. For any interface that does not + support protocol multiplexing, this counter will always be + 0. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifOutMulticastPkts + and ifOutBroadcastPkts. + + + + + + + readonly + + The number of outbound packets which were chosen to be + discarded even though no errors had been detected to prevent + their being transmitted. One possible reason for discarding + such a packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The length of the output packet queue (in packets). + + + + + + + readonly + + A reference to MIB definitions specific to the particular + media being used to realize the interface. It is + + + recommended that this value point to an instance of a MIB + object in the media-specific MIB, i.e., that this object + have the semantics associated with the InstancePointer + textual convention defined in RFC 2579. In fact, it is + recommended that the media-specific MIB specify what value + ifSpecific should/can take for values of ifType. If no MIB + definitions specific to the particular media are available, + the value should be set to the OBJECT IDENTIFIER { 0 0 }. + + + +
+ + + + + + + A list of interface entries. The number of entries is + given by the value of ifNumber. This table contains + additional objects for the interface table. + + + + + + + An entry containing additional management information + applicable to a particular interface. + + + + + + readonly + + The textual name of the interface. The value of this + object should be the name of the interface as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name, such as `le0' or a simple port number, such as `1', + depending on the interface naming syntax of the device. If + several entries in the ifTable together represent a single + interface as named by the device, then each will have the + same value of ifName. Note that for an agent which responds + to SNMP queries concerning an interface on some other + (proxied) device, then the value of ifName for such an + interface is the proxied device's local name for it. + + If there is no local name, or this object is otherwise not + applicable, then this object contains a zero-length string. + + + + + + + readonly + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of octets received on the interface, + including framing characters. This object is a 64-bit + version of ifInOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. This object is a + 64-bit version of ifInUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifInMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. This object is a 64-bit version + of ifInBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of octets transmitted out of the + interface, including framing characters. This object is a + 64-bit version of ifOutOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. This object is a + 64-bit version of ifOutUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifOutMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + readonly + + The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. This object is a 64-bit version + of ifOutBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + + + + + + + + + readwrite + + Indicates whether linkUp/linkDown traps should be generated + for this interface. + + By default, this object should have the value enabled(1) for + interfaces which do not operate on 'top' of any other + interface (as defined in the ifStackTable), and disabled(2) + otherwise. + + + + + + + readonly + + An estimate of the interface's current bandwidth in units + of 1,000,000 bits per second. If this object reports a + value of `n' then the speed of the interface is somewhere in + the range of `n-500,000' to `n+499,999'. For interfaces + which do not vary in bandwidth or for those where no + accurate estimation can be made, this object should contain + the nominal bandwidth. For a sub-layer which has no concept + of bandwidth, this object should be zero. + + + + + + + readwrite + + This object has a value of false(2) if this interface only + accepts packets/frames that are addressed to this station. + This object has a value of true(1) when the station accepts + all packets/frames transmitted on the media. The value + true(1) is only legal on certain types of media. If legal, + setting this object to a value of true(1) may require the + interface to be reset before becoming effective. + + The value of ifPromiscuousMode does not affect the reception + of broadcast and multicast packets/frames by the interface. + + + + + + + readonly + + This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise. + + + + + + + + + + readwrite + + This object is an 'alias' name for the interface as + specified by a network manager, and provides a non-volatile + 'handle' for the interface. + + On the first instantiation of an interface, the value of + ifAlias associated with that interface is the zero-length + string. As and when a value is written into an instance of + ifAlias through a network management set operation, then the + agent must retain the supplied value in the ifAlias instance + associated with the same interface for as long as that + interface remains instantiated, including across all re- + initializations/reboots of the network management system, + including those which result in a change of the interface's + ifIndex value. + + An example of the value which a network manager might store + in this object for a WAN interface is the (Telco's) circuit + number/identifier of the interface. + + Some agents may support write-access only for interfaces + having particular values of ifType. An agent which supports + write access to this object is required to keep the value in + non-volatile storage, but it may limit the length of new + values depending on how much storage is already occupied by + the current values for other interfaces. + + + + + + + readonly + + The value of sysUpTime on the most recent occasion at which + any one or more of this interface's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + + + Counter64 object contained in the ifTable or ifXTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value. + + + +
+ + + The table containing information on the relationships + between the multiple sub-layers of network interfaces. In + particular, it contains information on which sub-layers run + 'on top of' which other sub-layers, where each sub-layer + corresponds to a conceptual row in the ifTable. For + example, when the sub-layer with ifIndex value x runs over + the sub-layer with ifIndex value y, then this table + contains: + + ifStackStatus.x.y=active + + For each ifIndex value, I, which identifies an active + interface, there are always at least two instantiated rows + in this table associated with I. For one of these rows, I + is the value of ifStackHigherLayer; for the other, I is the + value of ifStackLowerLayer. (If I is not involved in + multiplexing, then these are the only two rows associated + with I.) + + For example, two rows exist even for an interface which has + no others stacked on top or below it: + + ifStackStatus.0.x=active + ifStackStatus.x.0=active + + + + + + + + Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs on 'top' of the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable. + + + + + + noaccess + + The value of ifIndex corresponding to the higher sub-layer + of the relationship, i.e., the sub-layer which runs on 'top' + of the sub-layer identified by the corresponding instance of + ifStackLowerLayer. If there is no higher sub-layer (below + the internetwork layer), then this object has the value 0. + + + + + + + noaccess + + The value of ifIndex corresponding to the lower sub-layer + of the relationship, i.e., the sub-layer which runs 'below' + the sub-layer identified by the corresponding instance of + ifStackHigherLayer. If there is no lower sub-layer, then + this object has the value 0. + + + + + + + readwrite + + The status of the relationship between two sub-layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have consequences up + and down the interface stack. Thus, write access to this + object is likely to be inappropriate for some types of + interfaces, and many implementations will choose not to + support write-access for any type of interface. + + + +
+ + + This table contains one entry per interface. It defines + objects which allow a network manager to instruct an agent + to test an interface for various faults. Tests for an + interface are defined in the media-specific MIB for that + interface. After invoking a test, the object ifTestResult + can be read to determine the outcome. If an agent can not + perform the test, ifTestResult is set to so indicate. The + object ifTestCode can be used to provide further test- + specific or interface-specific (or even enterprise-specific) + information concerning the outcome of the test. Only one + test can be in progress on each interface at any one time. + If one test is in progress when another test is invoked, the + second test is rejected. Some agents may reject a test when + a prior test is active on another interface. + + Before starting a test, a manager-station must first obtain + 'ownership' of the entry in the ifTestTable for the + interface to be tested. This is accomplished with the + ifTestId and ifTestStatus objects as follows: + + try_again: + get (ifTestId, ifTestStatus) + while (ifTestStatus != notInUse) + /* + * Loop while a test is running or some other + * manager is configuring a test. + */ + short delay + get (ifTestId, ifTestStatus) + } + + /* + * Is not being used right now -- let's compete + * to see who gets it. + */ + lock_value = ifTestId + + if ( set(ifTestId = lock_value, ifTestStatus = inUse, + + + ifTestOwner = 'my-IP-address') == FAILURE) + /* + * Another manager got the ifTestEntry -- go + * try again + */ + goto try_again; + + /* + * I have the lock + */ + set up any test parameters. + + /* + * This starts the test + */ + set(ifTestType = test_to_run); + + wait for test completion by polling ifTestResult + + when test completes, agent sets ifTestResult + agent also sets ifTestStatus = 'notInUse' + + retrieve any additional test results, and ifTestId + + if (ifTestId == lock_value+1) results are valid + + A manager station first retrieves the value of the + appropriate ifTestId and ifTestStatus objects, periodically + repeating the retrieval if necessary, until the value of + ifTestStatus is 'notInUse'. The manager station then tries + to set the same ifTestId object to the value it just + retrieved, the same ifTestStatus object to 'inUse', and the + corresponding ifTestOwner object to a value indicating + itself. If the set operation succeeds then the manager has + obtained ownership of the ifTestEntry, and the value of the + ifTestId object is incremented by the agent (per the + semantics of TestAndIncr). Failure of the set operation + indicates that some other manager has obtained ownership of + the ifTestEntry. + + Once ownership is obtained, any test parameters can be + setup, and then the test is initiated by setting ifTestType. + On completion of the test, the agent sets ifTestStatus to + 'notInUse'. Once this occurs, the manager can retrieve the + results. In the (rare) event that the invocation of tests + by two network managers were to overlap, then there would be + a possibility that the first test's results might be + overwritten by the second test's results prior to the first + + + results being read. This unlikely circumstance can be + detected by a network manager retrieving ifTestId at the + same time as retrieving the test results, and ensuring that + the results are for the desired request. + + If ifTestType is not set within an abnormally long period of + time after ownership is obtained, the agent should time-out + the manager, and reset the value of the ifTestStatus object + back to 'notInUse'. It is suggested that this time-out + period be 5 minutes. + + In general, a management station must not retransmit a + request to invoke a test for which it does not receive a + response; instead, it properly inspects an agent's MIB to + determine if the invocation was successful. Only if the + invocation was unsuccessful, is the invocation request + retransmitted. + + Some tests may require the interface to be taken off-line in + order to execute them, or may even require the agent to + reboot after completion of the test. In these + circumstances, communication with the management station + invoking the test may be lost until after completion of the + test. An agent is not required to support such tests. + However, if such tests are supported, then the agent should + make every effort to transmit a response to the request + which invoked the test prior to losing communication. When + the agent is restored to normal service, the results of the + test are properly made available in the appropriate objects. + Note that this requires that the ifIndex value assigned to + an interface must be unchanged even if the test causes a + reboot. An agent must reject any test for which it cannot, + perhaps due to resource constraints, make available at least + the minimum amount of information after that test + completes. + + + + + + + An entry containing objects for invoking tests on an + interface. + + + + + + readwrite + + This object identifies the current invocation of the + interface's test. + + + + + + + + + + readwrite + + This object indicates whether or not some manager currently + has the necessary 'ownership' required to invoke a test on + this interface. A write to this object is only successful + when it changes its value from 'notInUse(1)' to 'inUse(2)'. + After completion of a test, the agent resets the value back + to 'notInUse(1)'. + + + + + + + readwrite + + A control variable used to start and stop operator- + initiated interface tests. Most OBJECT IDENTIFIER values + assigned to tests are defined elsewhere, in association with + specific types of interface. However, this document assigns + a value for a full-duplex loopback test, and defines the + special meanings of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + + When the value noTest is written to this object, no action + is taken unless a test is in progress, in which case the + test is aborted. Writing any other value to this object is + + + only valid when no test is currently in progress, in which + case the indicated test is initiated. + + When read, this object always returns the most recent value + that ifTestType was set to. If it has not been set since + the last initialization of the network management subsystem + on the agent, a value of noTest is returned. + + + + + + + + + + + + + + + readonly + + This object contains the result of the most recently + requested test, or the value none(1) if no tests have been + requested since the last reset. Note that this facility + provides no provision for saving the results of one test + when starting another, as could be required if used by + multiple managers concurrently. + + + + + + + readonly + + This object contains a code which contains more specific + information on the test result, for example an error-code + after a failed test. Error codes and other values this + object may take are specific to the type of interface and/or + test. The value may have the semantics of either the + AutonomousType or InstancePointer textual conventions as + defined in RFC 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available. + + + + + + + readwrite + + The entity which currently has the 'ownership' required to + invoke a test on this interface. + + + +
+ + + This table contains an entry for each address (broadcast, + multicast, or uni-cast) for which the system will receive + packets/frames on a particular interface, except as follows: + + - for an interface operating in promiscuous mode, entries + are only required for those addresses for which the system + would receive frames were it not operating in promiscuous + mode. + + + - for 802.5 functional addresses, only one entry is + required, for the address which has the functional address + bit ANDed with the bit mask of all functional addresses for + which the interface will accept frames. + + A system is normally able to use any unicast address which + corresponds to an entry in this table as a source address. + + + + + + + + A list of objects identifying an address for which the + system will accept packets/frames on the particular + interface identified by the index value ifIndex. + + + + + + noaccess + + An address for which the system will accept packets/frames + on this entry's interface. + + + + + + + readwrite + + This object is used to create and delete rows in the + ifRcvAddressTable. + + + + + + + + + + + readwrite + volatile + + This object has the value nonVolatile(3) for those entries + in the table which are valid and will not be deleted by the + next restart of the managed system. Entries having the + value volatile(2) are valid and exist, but have not been + saved, so that will not exist after the next restart of the + managed system. Entries having the value other(1) are valid + and exist but are not classified as to whether they will + continue to exist after the next restart. + + + +
+ + + + + readonly + + The value of sysUpTime at the time of the last creation or + deletion of an entry in the ifTable. If the number of + entries has been unchanged since the last re-initialization + of the local network management subsystem, then this object + contains a zero value. + + + + + + + readonly + + The value of sysUpTime at the time of the last change of + the (whole) interface stack. A change of the interface + stack is defined to be any creation, deletion, or change in + value of any instance of ifStackStatus. If the interface + stack has been unchanged since the last re-initialization of + the local network management subsystem, then this object + contains a zero value. + + + + + + + + +
+ + + + + + + + + + A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus. + + + + + + + + + + A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus. + + + + + + + + + + + + + + + + + + + + + A collection of objects deprecated in favour of + ifGeneralInformationGroup. + + + + + + + + + + + + A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) character-oriented or fixed-length-transmission + network interfaces. + + + + + + + + + + + + + + A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second) character- + oriented or fixed-length-transmission network interfaces. + + + + + + + + + + + + + + + + + + + + + + A collection of objects providing information specific to + non-high speed (non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second) packet-oriented network interfaces. + + + + + + + + + + + + + + + + + + + + + + + + A collection of objects providing information specific to + high speed (greater than 20,000,000 bits/second but less + than or equal to 650,000,000 bits/second) packet-oriented + network interfaces. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of objects providing information specific to + higher speed (greater than 650,000,000 bits/second) packet- + oriented network interfaces. + + + + + + + + + A collection of objects providing information on the + multiple addresses which an interface receives. + + + + + + + + + + + + + A collection of objects providing the ability to invoke + tests on an interface. + + + + + + + + The previous collection of objects providing information on + the layering of MIB-II interfaces. + + + + + + + + + + + + + + + + + + + + + + A collection of objects providing information applicable to + all network interfaces. + + + + + + + + + A collection of objects providing information on the + layering of MIB-II interfaces. + + + + + + + + + + + The collection of objects deprecated from the original MIB- + II interfaces group. + + + + + + + + A collection of objects providing information specific to + interface counter discontinuities. + + + + + + + + + The notifications which indicate specific changes in the + value of ifOperStatus. + + + + + + + + A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces. + + + + + + + + + + + + + + readonly + + Write access is not required. + + + + readonly + + Write access is not required. + + + + + + + + + + readonly + + Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1). + + + + + + + + + + readonly + + Write access is not required, nor is support for the value + testing(3). + + + + + + + + A compliance statement defined in a previous version of + this MIB module, for SNMP entities which have network + interfaces. + + + + + + + + + + + + + + readonly + + Write access is not required. + + + + readonly + + Write access is not required. + + + + + + + + + + readonly + + Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention need + be supported, specifically: active(1). + + + + + + + + + + readonly + + Write access is not required, nor is support for the value + testing(3). + + + + readonly + + Write access is not required. + + + + + + + + The compliance statement for SNMP entities which have + network interfaces. + + + + + + + + + + + + + + + readonly + + Write access is not required. + + + + readonly + + Write access is not required. + + + + + + + + + + readonly + + Write access is not required, nor is support for the value + testing(3). + + + + readonly + + Write access is not required. + + + + + + + + diff --git a/test/dumps/xml/MAU-MIB b/test/dumps/xml/MAU-MIB new file mode 100644 index 0000000..ce5e5a2 --- /dev/null +++ b/test/dumps/xml/MAU-MIB @@ -0,0 +1,1937 @@ + + + + + + + + + IETF Ethernet Interfaces and Hub MIB Working Group + + + WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com + + + Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices. + + + + Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836. + + + + + Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636. + + + + + This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation. + + + + + Version published as RFC 2239. + + + + + Initial version, published as RFC 1515. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types. + + + + + + + + + + + + + + Table of descriptive and status information + about the MAU(s) attached to the ports of a + repeater. + + + + + + + + + An entry in the table, containing information + about a single MAU. + + + + + + + + readonly + + This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex. + + + RFC 2108, rptrGroupIndex. + + + + + + + + + readonly + + This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected. + + + RFC 2108, rptrPortIndex. + + + + + + + + + readonly + + This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex). + + + [IEEE802.3], 30.5.1.1.1, aMAUID. + + + + + + + readonly + + This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + + [IEEE802.3], 30.5.1.1.2, aMAUType. + + + + + + + + + + + + + + readwrite + + The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state. + + + [IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU. + + + + + + + readonly + + This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC. + + + [IEEE802.3], 30.5.1.1.4, aMediaAvailable. + + + + + + + readonly + + A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange. + + + [IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange + + + + + + + + + + + + readonly + + The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value. + + + [IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag. + + + + + + + readonly + + A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange. + + + [IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange + + + + + + + readonly + + A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange. + + + [IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange + + + +
+ + + Information about the external jacks attached + to MAUs attached to the ports of a repeater. + + + + + + + + + + An entry in the table, containing information + about a particular jack. + + + + + + + + noaccess + + This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex). + + + + + + + readonly + + The jack connector type, as it appears on the + outside of the system. + + + +
+ + + + + Table of descriptive and status information + about MAU(s) attached to an interface. + + + + + + + + An entry in the table, containing information + about a single MAU. + + + + + + readonly + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected. + + + RFC 2863, ifIndex + + + + + + + + + readonly + + This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex). + + + [IEEE802.3], 30.5.1.1.1, aMAUID. + + + + + + + readonly + + This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode. + + + [IEEE802.3], 30.5.1.1.2, aMAUType. + + + + + + + + + + + + + + readwrite + + The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state. + + + [IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU. + + + + + + + readonly + + This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC. + + + [IEEE802.3], 30.5.1.1.4, aMediaAvailable. + + + + + + + readonly + + A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime. + + + [IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime. + + + + + + + + + + + + readonly + + The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value. + + + [IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag. + + + + + + + readonly + + A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime. + + + [IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime. + + + + + + + readonly + + A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime. + + + [IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability. + + + + + + + readwrite + + This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function. + + + [IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4. + + + + + + + readonly + + This object indicates whether or not + auto-negotiation is supported on this MAU. + + + + + + + readonly + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC. + + + + + + + readonly + + A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime. + + + [IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime. + + + +
+ + + Information about the external jacks attached + to MAUs attached to an interface. + + + + + + + + + An entry in the table, containing information + about a particular jack. + + + + + + + + noaccess + + This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU. + + + + + + + readonly + + The jack connector type, as it appears on the + outside of the system. + + + +
+ + + + + ********* THIS OBJECT IS DEPRECATED ********** + + This entire table has been deprecated. There + have been no reported implementations of this + table, and it is unlikely that there ever will + be. IEEE recommends that broadband MAU types + should not be used for new installations. + + Table of descriptive and status information + + + + about the broadband MAUs connected to + interfaces. + + + + + + + + ********* THIS OBJECT IS DEPRECATED ********** + + An entry in the table, containing information + about a single broadband MAU. + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the interface + to which the MAU described by this entry is + connected. + + + RFC 2863, ifIndex. + + + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This variable uniquely identifies the MAU + connected to interface broadMauIfIndex that is + + + + described by this entry. + + + [IEEE802.3], 30.5.1.1.1, aMAUID. + + + + + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This object indicates the type of frequency + multiplexing/cabling system used to separate the + transmit and receive paths for the 10BROAD36 + MAU. + + The value other(1) is returned if the split type + is not either single or dual. + + The value single(2) indicates a single cable + system. The value dual(3) indicates a dual + cable system, offset normally zero. + + + [IEEE802.3], 30.5.1.1.8, aBbMAUXmitRcvSplitType. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the transmit carrier + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz. + + + [IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.xmitCarrierFrequency. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This variable indicates the translation offset + + + + frequency of the 10BROAD36 MAU in MHz/4; that + is, in units of 250 kHz. + + + [IEEE802.3], 30.5.1.1.9, + aBroadbandFrequencies.translationFrequency. + + + +
+ + + + + Configuration and status objects for the + auto-negotiation function of MAUs attached to + interfaces. + + The ifMauAutoNegTable applies to systems in + which auto-negotiation is supported on one or + more MAUs attached to interfaces. Note that if + auto-negotiation is present and enabled, the + ifMauType object reflects the result of the + auto-negotiation function. + + + + + + + + An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU. + + + + + + + + + readwrite + + Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function. + + + [IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl. + + + + + + + + + + readonly + + A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received. + + + [IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling. + + + + + + + + + + + + + readonly + + A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]. + + + [IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB. + + + [IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility. + + + + + + + readwrite + + ********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled. + + + [IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility. + + + + + + + readonly + + ********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. + + + [IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility. + + + + + + + + + + readwrite + + If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect. + + + [IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig. + + + + + + + readonly + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + + + [IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility. + + + + + + + readwrite + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + + + [IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility. + + + + + + + readonly + + A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC. + + + [IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility. + + + + + + + + + + + + readwrite + + A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs. + + + [IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility. + + + + + + + + + + + + readonly + + A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs. + + + [IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility. + + + +
+ + + + + + + + + + +
+ + + + + + + + This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them. + + + [IEEE802.3], 30.5.1.3.1, nJabber notification. + + + + + + + + This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them. + + + [IEEE802.3], 30.5.1.3.1, nJabber notification. + + + + + + + + + + + + + + + + + + + Basic conformance group for MAUs attached to + repeater ports. This group is also the + conformance specification for RFC 1515 + implementations. + + + + + + + + Conformance group for MAUs attached to + repeater ports with 100 Mb/s or greater + capability. + + + + + + + + Conformance group for MAUs attached to + repeater ports with managed jacks. + + + + + + + + + + + + + + + Basic conformance group for MAUs attached to + interfaces. This group also provides a + conformance specification for RFC 1515 + implementations. + + + + + + + + + + + ********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with 100 Mb/s capability. + + This object group has been deprecated in favor + of mauIfGrpHighCapacity. + + + + + + + + Conformance group for MAUs attached to + interfaces with managed jacks. + + + + + + + + + + + + + + ********* THIS GROUP IS DEPRECATED ********** + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + This object group has been deprecated in favor + of mauIfGrpAutoNeg2. + + + + + + + + + + + + ********* THIS GROUP IS DEPRECATED ********** + Conformance group for broadband MAUs attached + to interfaces. + + This object group is deprecated. There have + been no reported implementations of this group, + and it was felt to be unlikely that there will + be any future implementations. + + + + + + + + + + + Conformance group for MAUs attached to + interfaces with 100 Mb/s or greater capability. + + + + + + + + + + + + + + Conformance group for MAUs attached to + interfaces with managed auto-negotiation. + + + + + + + + + Conformance group for 1000Mbps MAUs attached to + interfaces with managed auto-negotiation. + + + + + + + + Conformance for high capacity statistics for + MAUs attached to interfaces. + + + + + + + + Notifications for repeater MAUs. + + + + + + + + Notifications for interface MAUs. + + + + + + + + ******** THIS COMPLIANCE IS DEPRECATED ******** + Compliance for MAUs attached to repeater + ports. + + This compliance is deprecated and replaced by + mauModRpCompl2, which corrects an oversight by + allowing rpMauStatus to be implemented + read-only. + + + + + + + + + + + ******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + This compliance is deprecated and replaced by + mauModIfCompl2. + + + + + + + + + + + + + ******** THIS COMPLIANCE IS DEPRECATED ******** + + Compliance for MAUs attached to interfaces. + + This compliance is deprecated and replaced by + mauModIfCompl3. + + + + + + + + + + + + readonly + + Write access is not required. + + + + + + + + Compliance for MAUs attached to repeater + ports. + + Note that compliance with this compliance + statement requires compliance with the + snmpRptrModCompl MODULE-COMPLIANCE statement of + the SNMP-REPEATER-MIB (RFC 2108). + + + + + + + + + + readonly + + Write access is not required. + + + + + + + + Compliance for MAUs attached to interfaces. + + Note that compliance with this compliance + statement requires compliance with the + ifCompliance3 MODULE-COMPLIANCE statement of the + IF-MIB (RFC 2863) and the dot3Compliance2 + MODULE-COMPLIANCE statement of the + EtherLike-MIB (RFC3635). + + + + + + + + + + + + + readonly + + Write access is not required. + + + + + + + + diff --git a/test/dumps/xml/Makefile.am b/test/dumps/xml/Makefile.am new file mode 100644 index 0000000..2d9e7d1 --- /dev/null +++ b/test/dumps/xml/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/xml/Makefile.in b/test/dumps/xml/Makefile.in new file mode 100644 index 0000000..b86b6ef --- /dev/null +++ b/test/dumps/xml/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1036 2000-11-13 11:02:49Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/xml +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/xml/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/xml/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/xml/RMON2-MIB b/test/dumps/xml/RMON2-MIB new file mode 100644 index 0000000..9628d55 --- /dev/null +++ b/test/dumps/xml/RMON2-MIB @@ -0,0 +1,5733 @@ + + + + + + + + + IETF RMON MIB Working Group + + + Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: <rmonmib@ietf.org> + To subscribe send email to: <rmonmib-request@ietf.org> + + + The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices. + + + + This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics. + + + + + Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications. + + + + + Original version. Published as RFC 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This TC describes an object that 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. + + + + + + This TC describes an object that stores the value of the + sysUpTime object at 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. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects. + + + + + + To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk. + + + + + 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 [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1. + + + + + + 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 store 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, i.e., + 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. + + + + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + +
+ + + Provides a variable-length packet filter feature to the + RMON-1 filter table. + + + + + + + Provides a variable-length packet filter feature to the + RMON-1 filter table. + + + + + + + + readwrite + 0 + + 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. + + + + + + + + + readwrite + 0 + + 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. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + +
+ + + Contains the RMON-2 augmentations to RMON-1. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Contains the RMON-2 augmentations to RMON-1. + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + +
+ + + + + + + readonly + + The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig. + + + + + 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. + + + + + + + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + + + noaccess + + A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner 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 that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 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 + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether 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. + + + + + + + + + noaccess + + 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. + + + + + + + + + readonly + + 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 that the protocol directory + entry is deleted. + + + + + + + + + + readwrite + + 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). + + + + + + + + + + readonly + + This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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. + + + + + + + + + + + readwrite + + 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. + + + + + + + + + + + readwrite + + 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, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols. + + + + + + + + + + + readwrite + + 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 + 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, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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. + + + +
+ + + + + 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. + + + + + + + A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7 + + + + + + + + noaccess + + A unique index for this protocolDistControlEntry. + + + + + + + readwrite + + 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). + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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. + + + +
+ + + An entry is made in this table for every protocol in the + protocolDirTable that 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. + + + + + + + + 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 and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18 + + + + + + readonly + + The number of packets of this protocol type received + without errors. 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. + + + + + + + readonly + + The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol. + + + +
+ + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + + + readwrite + + 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. + + + + + A table to control the collection of mappings from network + layer address to physical address to interface. + + 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. + + + + + + + A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1 + + + + + + + + noaccess + + A unique index for this entry in the addressMapControlTable. + + + + + + + readwrite + + The source of data for this addressMapControlEntry. + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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. + + + +
+ + + A table of mappings from network layer address to physical + address to interface. + + 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). + + + + + + + + + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + + + noaccess + + 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. + + + + + + + noaccess + + 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 [RFC2863], 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 [RFC2108], 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 that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + +
+ + + + + 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 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. + + + + + + + A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1 + + + + + + + + noaccess + + 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. + + + + + + + readwrite + + 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). + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + + + readwrite + + 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. + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + + + readwrite + + 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. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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. + + + +
+ + + 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. + + + + + + + + + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + + + noaccess + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + +
+ + + + + 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 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. + + + + + + + A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1 + + + + + + + + noaccess + + 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. + + + + + + + readwrite + + 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). + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + + + readwrite + + 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. + + + + + + + readonly + + The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + + + readwrite + + 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. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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 alMatrixDSTable + shall be deleted by the agent. + + + +
+ + + A list of traffic matrix entries that 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. + + + + + + + + + + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + + + noaccess + + 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. + + + + + + + + + noaccess + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + 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. + + + +
+ + + A list of traffic matrix entries that 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. + + + + + + + + + + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + + + noaccess + + 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. + + + + + + + + + noaccess + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + 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. + + + +
+ + + A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric. + + + + + + + A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3 + + + + + + + + noaccess + + An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface. + + + + + + + + + readwrite + + The nlMatrix[SD/DS] table for which a topN 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). + + + + + + + + + + + + readwrite + + The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object. + + + + + + + + + readwrite + 1800 + + 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). + + + + + + + readonly + + The number of reports that have been generated by this entry. + + + + + + + readonly + + 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. + + + + + + + + + readwrite + 150 + + 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 possible for the particular probe + implementation and available resources. + + + + + + + + + readonly + + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available. + + + + + + + readonly + + The value of sysUpTime when this topN 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 whether a report was missed. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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. + + + +
+ + + A set of statistics for those network-layer matrix entries + + + + that have counted the highest number of octets or packets. + + + + + + + + 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 + + + + + + + + noaccess + + 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. + + + + + + + + + readonly + + The protocolDirLocalIndex of the network-layer protocol of + this entry's network address. + + + + + + + + + readonly + + 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. + + + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + +
+ + + + + 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. + + + + + + + + + + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + 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. + + + +
+ + + + + A list of application traffic matrix entries that 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. + + + + + + + + + + + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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 octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + 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. + + + +
+ + + A list of application traffic matrix entries that 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. + + + + + + + + + + + + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations. + + + + + + noaccess + + A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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 octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol. + + + + + + + readonly + + 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. + + + +
+ + + A set of parameters that control the creation of a + report of the top N matrix entries according to + a selected metric. + + + + + + + A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3 + + + + + + + + noaccess + + An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface. + + + + + + + + + readwrite + + The alMatrix[SD/DS] table for which a topN 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). + + + + + + + + + + + + + + + + readwrite + + This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1). + + + + + + + + + readwrite + 1800 + + 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). + + + + + + + readonly + + The number of reports that have been generated by this entry. + + + + + + + readonly + + 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. + + + + + + + + + readwrite + 150 + + 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 possible for the particular probe + implementation and available resources. + + + + + + + + + readonly + + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available. + + + + + + + readonly + + The value of sysUpTime when this topN 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 whether a report was missed. + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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. + + + +
+ + + A set of statistics for those application-layer matrix + entries that have counted the highest number of octets or + packets. + + + + + + + + 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 + + + + + + + + noaccess + + 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. + + + + + + + + + readonly + + The protocolDirLocalIndex of the network-layer protocol of + this entry's network address. + + + + + + + + + readonly + + 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. + + + + + + + + + readonly + + 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. + + + + + + + + + readonly + + The type of the protocol counted by this matrix entry. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + + + + + readonly + + 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. + + + +
+ + + + + A list of data-collection configuration entries. + + + + + + + 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 + + + + + + + + noaccess + + 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. + + + + + + + + + readwrite + + 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). + + + + + + + + + readwrite + 50 + + 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 possible for the particular probe + implementation and available resources. + + + + + + + + + readonly + + 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 + 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. + + + + + + + + + readwrite + 1800 + + 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 to 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). + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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. + + + +
+ + + A list of data-collection configuration entries. + + + + + + + + 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 + + + + + + + + noaccess + + An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically. + + + + + + + readwrite + + 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. See USM [RFC3414] and VACM [RFC3415] for more + information. + + 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). + + + + + + + + + + readwrite + + 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). + + + +
+ + + A list of user-defined history entries. + + + + + + + + + A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that 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 + + + + + + + + noaccess + + 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. + + + + + + + readonly + + 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 that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval. + + + + + + + readonly + + The value of sysUpTime at the end of the interval over which + this sample was measured. + + + + + + + readonly + + 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)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'. + + + + + + + + + + + readonly + + 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 the 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. + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + readonly + + An indication of the RMON MIB groups supported + on at least one interface by this probe. + + + + + + + + + + readonly + + The software revision of this device. This string will have + a zero length if the revision is unknown. + + + + + + + + + + readonly + + The hardware revision of this device. This string will have + a zero length if the revision is unknown. + + + + + + + + + + + readwrite + + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned. + + + + + + + + + + + readwrite + + 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 to restart the application software. When the device + is running normally, this variable has a value of + running(1). + + + + + + + + + + readwrite + + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + readwrite + + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + + + + + readwrite + + When this object is set to downloadToRAM(3) or + downloadToPROM(2), 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(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) 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). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + + + + + + + + + + readonly + + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + A table of serial interface configuration entries. This data + will be stored in non-volatile memory and preserved across + probe resets or power loss. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + 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. + + + + + + + + + readwrite + direct + + The type of incoming connection to be expected on this + serial interface. + + + + + + + + + + + readwrite + slip + + The type of data link encapsulation to be used on this + serial interface. + + + + + + + + + readwrite + 300 + + 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. + + + + + + + + + + readwrite + + A control string that 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'. + + + + + + + + + + readwrite + + A control string that 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'. + + + + + + + + + + readwrite + + 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/'. + + + + + + + + + + readwrite + + 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/'. + + + + + + + + + readwrite + 20 + + 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. + + + + + + + readwrite + + The status of this serialConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + +
+ + + A table of netConfigEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard. + + + + + + + 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. + + + + + + readwrite + + The IP address of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 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 them very infrequently if no + replies are received. + + + + + + + readwrite + + The subnet mask of this Net interface. The default value + for this object is 0.0.0.0. If either the netConfigIPAddress + or netConfigSubnetMask is 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 them very infrequently if no + replies are received. + + + + + + + readwrite + + The status of this netConfigEntry. + + An entry may not exist in the active state unless all + objects in the entry have an appropriate value. + + + +
+ + + + + readwrite + + The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0. + + + + + A list of trap destination entries. + + + + + + + This entry includes a destination IP address to which + traps are sent for this community. + + + + + + + + noaccess + + A value that uniquely identifies this trapDestEntry. + + + + + + + + + readwrite + + 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, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1). + + + + + + + + + + readwrite + + The protocol with which this trap is to be sent. + + + + + + + readwrite + + The destination address for 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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). + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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. + + + +
+ + + A list of serialConnectionEntries. + + This table has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability + to meet the requirements of a Draft Standard. + + + + + + + Configuration for a SLIP link over a serial line. + + + + + + + + noaccess + + A value that uniquely identifies this serialConnection + entry. + + + + + + + readwrite + + 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). + + + + + + + + + + + + readwrite + direct + + The type of outgoing connection to be made. 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). + + + + + + + + + + readwrite + + A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the 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). + + + + + + + + + + readwrite + + A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1). + + + + + + + + + + readwrite + + A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1). + + + + + + + + + + readwrite + + A control string that 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). + + + + + + + readwrite + + The entity that configured this entry and is + therefore using the resources assigned to it. + + + + + + + readwrite + + 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 is a zero-length string + or cannot be correctly parsed as a ConnectString, 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. + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + Lists the inventory of protocols the probe has the + capability of monitoring and allows the addition, deletion, + and configuration of entries in this list. + + + + + + + + + + + + + + Collects the relative amounts of octets and packets for the + different protocols detected on a network segment. + + + + + + + + + + + + + + + + Lists MAC address to network address bindings discovered by + the probe and what interface they were last seen on. + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + The usrHistoryGroup provides user-defined collection of + historical information from MIB objects on the probe. + + + + + + + + + + + This group describes various operating parameters of the + probe and controls the local time of the probe. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This group controls the configuration of various operating + parameters of the probe. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it. + + + + + + + + + + + + + + + + This group adds some enhancements to RMON-1 that help + management stations. + + + + + + + + + This group adds some enhancements to RMON-1 that help + management stations. + + + + + + + + + + + + + + + This group adds some enhancements to RMON-1 that help + management stations. This group is not referenced by any + MODULE-COMPLIANCE macro because it is 'grandfathered' from + more recent MIB review rules that would require it. + + + + + + + + Describes the requirements for conformance to + the RMON2 MIB + + + + + + + + + + + + + + + + + + + + + + Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase. + + + + + + + + Describes the requirements for conformance to + the RMON2 MIB with Application-Layer Enhancements. + + + + + + + + + + + + + + + + + + + + + + + + Conformance to RMON2 requires only support for these + values of nlMatrixTopNControlRateBase. + + + + + + + + + + + + + Conformance to RMON2 requires only support for these + + + + values of alMatrixTopNControlRateBase. + + + + + + + +
diff --git a/test/dumps/xml/SNMPv2-MIB b/test/dumps/xml/SNMPv2-MIB new file mode 100644 index 0000000..8a3cee0 --- /dev/null +++ b/test/dumps/xml/SNMPv2-MIB @@ -0,0 +1,919 @@ + + + + + + + + + IETF SNMPv3 Working Group + + + WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006 + + + The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices. + + + + This revision of this MIB module was published as + RFC 3418. + + + + + This revision of this MIB module was published as + RFC 1907. + + + + + The initial revision of this MIB module was published + as RFC 1450. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + readonly + + A textual description of the entity. This value should + include the full name and version identification of + the system's hardware type, software operating-system, + and networking software. + + + + + + + readonly + + The vendor's authoritative identification of the + network management subsystem contained in the entity. + This value is allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides an easy and + unambiguous means for determining `what kind of box' is + being managed. For example, if vendor `Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'. + + + + + + + readonly + + The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized. + + + + + + + + + + readwrite + + The textual identification of the contact person for + this managed node, together with information on how + to contact this person. If no contact information is + known, the value is the zero-length string. + + + + + + + + + + readwrite + + An administratively-assigned name for this managed + node. By convention, this is the node's fully-qualified + domain name. If the name is unknown, the value is + the zero-length string. + + + + + + + + + + readwrite + + The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string. + + + + + + + + + readonly + + A value which indicates the set of services that this + entity may potentially offer. The value is a sum. + + + + This sum initially takes the value zero. Then, for + each layer, L, in the range 1 through 7, that this node + performs transactions for, 2 raised to (L - 1) is added + to the sum. For example, a node which performs only + routing functions would have a value of 4 (2^(3-1)). + In contrast, a node which is a host offering application + services would have a value of 72 (2^(4-1) + 2^(7-1)). + Note that in the context of the Internet suite of + protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + + For systems including OSI protocols, layers 5 and 6 + may also be counted. + + + + + + + readonly + + The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID. + + + + + The (conceptual) table listing the capabilities of + the local SNMP application acting as a command + responder with respect to various MIB modules. + SNMP entities having dynamically-configurable support + of MIB modules will have a dynamically-varying number + of conceptual rows. + + + + + + + An entry (conceptual row) in the sysORTable. + + + + + + + + noaccess + + The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable. + + + + + + + readonly + + An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder. + + + + + + + readonly + + A textual description of the capabilities identified + by the corresponding instance of sysORID. + + + + + + + readonly + + The value of sysUpTime at the time this conceptual + row was last instantiated. + + + +
+ + + + + + + readonly + + The total number of messages delivered to the SNMP + entity from the transport service. + + + + + + + readonly + + The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service. + + + + + + + readonly + + The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version. + + + + + + + readonly + + The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value. + + + + + + + readonly + + The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value. + + + + + + + readonly + + The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages. + + + + + + + readonly + + The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `tooBig'. + + + + + + + readonly + + The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `noSuchName'. + + + + + + + readonly + + The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `badValue'. + + + + + + + readonly + + The total number valid SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `readOnly'. It should + be noted that it is a protocol error to generate an + SNMP PDU which contains the value `readOnly' in the + error-status field, as such this object is provided + as a means of detecting incorrect implementations of + the SNMP. + + + + + + + readonly + + The total number of SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `genErr'. + + + + + + + readonly + + The total number of MIB objects which have been + retrieved successfully by the SNMP protocol entity + as the result of receiving valid SNMP Get-Request + and Get-Next PDUs. + + + + + + + readonly + + The total number of MIB objects which have been + altered successfully by the SNMP protocol entity as + the result of receiving valid SNMP Set-Request PDUs. + + + + + + + readonly + + The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity. + + + + + + + readonly + + The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity. + + + + + + + readonly + + The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity. + + + + + + + readonly + + The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `tooBig.' + + + + + + + readonly + + The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status was `noSuchName'. + + + + + + + readonly + + The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `badValue'. + + + + + + + readonly + + The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `genErr'. + + + + + + + readonly + + The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity. + + + + + + + readonly + + The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity. + + + + + + + + + + readwrite + + Indicates whether the SNMP entity is permitted to + generate authenticationFailure traps. The value of this + object overrides any configuration information; as such, + it provides a means whereby all authenticationFailure + traps may be disabled. + + Note that it is strongly recommended that this object + be stored in non-volatile memory so that it remains + constant across re-initializations of the network + management system. + + + + + + + readonly + + The total number of Confirmed Class PDUs (such as + GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the size of a reply + containing an alternate Response Class PDU (such as a + Response-PDU) with an empty variable-bindings field + was greater than either a local constraint or the + maximum message size associated with the originator of + the request. + + + + + + + readonly + + The total number of Confirmed Class PDUs + (such as GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the transmission of + the (possibly translated) message to a proxy target + failed in a manner (other than a time-out) such that + no Response Class PDU (such as a Response-PDU) could + be returned. + + + + + + + + + + + + + notifyonly + + The authoritative identification of the notification + currently being sent. This variable occurs as + the second varbind in every SNMPv2-Trap-PDU and + InformRequest-PDU. + + + + + + + notifyonly + + The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind. + + + + + + + + + + + readwrite + + An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP set operation. + + This object is used for coarse-grain coordination. + To achieve fine-grain coordination, one or more similar + objects might be defined within each MIB group, as + appropriate. + + + + + + + + +
+ + + + + + + A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered. + + + + + + + A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered. + + + + + + + An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated. + + + + + + + + + + + A collection of objects which allow several cooperating + command generator applications to coordinate their + use of the set operation. + + + + + + + + + + + + + + + + + + The system group defines objects which are common to all + managed systems. + + + + + + + + + The basic notifications implemented by an SNMP entity + supporting command responder applications. + + + + + + + + + + + + + A collection of objects providing basic instrumentation + and control of an SNMP entity. + + + + + + + + + A collection of objects providing basic instrumentation + of a SNMP entity which supports community-based + authentication. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of objects from RFC 1213 made obsolete + by this MIB module. + + + + + + + + An additional notification for an SNMP entity supporting + command responder applications, if it is able to reinitialize + itself such that its configuration is unaltered. + + + + + + + + + These objects are required for entities + which support notification originator applications. + + + + + + + + The compliance statement for SNMPv2 entities which + implement the SNMPv2 MIB. + + This compliance statement is replaced by + snmpBasicComplianceRev2. + + + + + + + + + + + + The compliance statement for SNMP entities which + implement this MIB module. + + + + + + + + + + + + +
diff --git a/test/dumps/yang/IF-MIB b/test/dumps/yang/IF-MIB new file mode 100644 index 0000000..b434671 --- /dev/null +++ b/test/dumps/yang/IF-MIB @@ -0,0 +1,1206 @@ +/* + * This module has been generated by smidump 0.4.8: + * + * smidump -f yang IF-MIB + * + * Do not edit. Edit the source file instead! + */ + +module IF-MIB { + + /*** NAMESPACE / PREFIX DEFINITION ***/ + + namespace "urn:ietf:params:xml:ns:yang:smiv2:IF-MIB"; + prefix "if-mib"; + + /*** LINKAGE (IMPORTS / INCLUDES) ***/ + + import IANAifType-MIB { prefix "ianaiftype-mib"; } + import SNMPv2-TC { prefix "smiv2"; } + import yang-types { prefix "yang"; } + + /*** META INFORMATION ***/ + + organization + "IETF Interfaces MIB Working Group"; + + contact + " Keith McCloghrie + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + US + + 408-526-5260 + kzm@cisco.com"; + + description + "The MIB module to describe generic objects for network + interface sub-layers. This MIB is an updated version of + MIB-II's ifTable, and incorporates the extensions defined in + RFC 1229."; + + revision "2000-06-14" { + description + "Clarifications agreed upon by the Interfaces MIB WG, and + published as RFC 2863."; + } + revision "1996-02-28" { + description + "Revisions made by the Interfaces MIB WG, and published in + RFC 2233."; + } + revision "1993-11-08" { + description + "Initial revision, published as part of RFC 1573."; + } + + /*** TYPE DEFINITIONS ***/ + + typedef OwnerString { + type string { + length "0..255"; + pattern "\p{IsBasicLatin}{0,255}"; + } + status deprecated; + 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'."; + } + + typedef InterfaceIndex { + type int32 { + range "1..2147483647"; + } + description + "A unique value, greater than zero, for each interface or + interface sub-layer in the managed system. It is + recommended that values are assigned contiguously starting + from 1. The value for each interface sub-layer must remain + constant at least from one re-initialization of the entity's + network management system to the next re-initialization."; + } + + typedef InterfaceIndexOrZero { + type int32 { + range "0..2147483647"; + } + description + "This textual convention is an extension of the + InterfaceIndex convention. The latter defines a greater + than zero value used to identify an interface or interface + sub-layer in the managed system. This extension permits the + additional value of zero. the value zero is object-specific + and must therefore be defined as part of the description of + any object which uses this syntax. Examples of the usage of + zero might include situations where interface was unknown, + or when none or all interfaces need to be referenced."; + } + + container interfaces { + + leaf ifNumber { + type int32; + config false; + description + "The number of network interfaces (regardless of their + current state) present on this system."; + } + + + /* XXX table comments here XXX */ + + list ifEntry { + + key "ifIndex"; + description + "An entry containing management information applicable to a + particular interface."; + + + leaf ifIndex { + type if-mib:InterfaceIndex; + config false; + description + "A unique value, greater than zero, for each interface. It + is recommended that values are assigned contiguously + starting from 1. The value for each interface sub-layer + must remain constant at least from one re-initialization of + the entity's network management system to the next re- + initialization."; + } + + leaf ifDescr { + type smiv2:DisplayString { + length "0..255"; + } + config false; + description + "A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software."; + } + + leaf ifType { + type ianaiftype-mib:IANAifType; + config false; + description + "The type of interface. Additional values for ifType are + assigned by the Internet Assigned Numbers Authority (IANA), + through updating the syntax of the IANAifType textual + convention."; + } + + leaf ifMtu { + type int32; + config false; + description + "The size of the largest packet which can be sent/received + on the interface, specified in octets. For interfaces that + are used for transmitting network datagrams, this is the + size of the largest network datagram that can be sent on the + interface."; + } + + leaf ifSpeed { + type yang:gauge32; + config false; + description + "An estimate of the interface's current bandwidth in bits + per second. For interfaces which do not vary in bandwidth + or for those where no accurate estimation can be made, this + object should contain the nominal bandwidth. If the + bandwidth of the interface is greater than the maximum value + reportable by this object then this object should report its + maximum value (4,294,967,295) and ifHighSpeed must be used + to report the interace's speed. For a sub-layer which has + no concept of bandwidth, this object should be zero."; + } + + leaf ifPhysAddress { + type yang:phys-address; + config false; + description + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific MIB + must define the bit and byte ordering and the format of the + value of this object. For interfaces which do not have such + an address (e.g., a serial line), this object should contain + an octet string of zero length."; + } + + leaf ifAdminStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + } + config true; + description + "The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state)."; + } + + leaf ifOperStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + enum unknown { value 4; } + enum dormant { value 5; } + enum notPresent { value 6; } + enum lowerLayerDown { value 7; } + } + config false; + description + "The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components."; + } + + leaf ifLastChange { + type yang:timeticks; + config false; + description + "The value of sysUpTime at the time the interface entered + its current operational state. If the current state was + entered prior to the last re-initialization of the local + network management subsystem, then this object contains a + zero value."; + } + + leaf ifInOctets { + type yang:counter32; + config false; + description + "The total number of octets received on the interface, + + + including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifInUcastPkts { + type yang:counter32; + config false; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifInNUcastPkts { + type yang:counter32; + config false; + status deprecated; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast or + broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifInMulticastPkts and + ifInBroadcastPkts."; + } + + leaf ifInDiscards { + type yang:counter32; + config false; + description + "The number of inbound packets which were chosen to be + discarded even though no errors had been detected to prevent + + + their being deliverable to a higher-layer protocol. One + possible reason for discarding such a packet could be to + free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifInErrors { + type yang:counter32; + config false; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of inbound + transmission units that contained errors preventing them + from being deliverable to a higher-layer protocol. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifInUnknownProtos { + type yang:counter32; + config false; + description + "For packet-oriented interfaces, the number of packets + received via the interface which were discarded because of + an unknown or unsupported protocol. For character-oriented + or fixed-length interfaces that support protocol + multiplexing the number of transmission units received via + the interface which were discarded because of an unknown or + unsupported protocol. For any interface that does not + support protocol multiplexing, this counter will always be + 0. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifOutOctets { + type yang:counter32; + config false; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifOutUcastPkts { + type yang:counter32; + config false; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifOutNUcastPkts { + type yang:counter32; + config false; + status deprecated; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime. + + This object is deprecated in favour of ifOutMulticastPkts + and ifOutBroadcastPkts."; + } + + leaf ifOutDiscards { + type yang:counter32; + config false; + description + "The number of outbound packets which were chosen to be + discarded even though no errors had been detected to prevent + their being transmitted. One possible reason for discarding + such a packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifOutErrors { + type yang:counter32; + config false; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifOutQLen { + type yang:gauge32; + config false; + status deprecated; + description + "The length of the output packet queue (in packets)."; + } + + leaf ifSpecific { + type yang:object-identifier; + config false; + status deprecated; + description + "A reference to MIB definitions specific to the particular + media being used to realize the interface. It is + + + recommended that this value point to an instance of a MIB + object in the media-specific MIB, i.e., that this object + have the semantics associated with the InstancePointer + textual convention defined in RFC 2579. In fact, it is + recommended that the media-specific MIB specify what value + ifSpecific should/can take for values of ifType. If no MIB + definitions specific to the particular media are available, + the value should be set to the OBJECT IDENTIFIER { 0 0 }."; + } + } + } + + container ifMIBObjects { + + + /* XXX table comments here XXX */ + + list ifStackEntry { + + key "ifStackHigherLayer ifStackLowerLayer"; + description + "Information on a particular relationship between two sub- + layers, specifying that one sub-layer runs on 'top' of the + other sub-layer. Each sub-layer corresponds to a conceptual + row in the ifTable."; + + + leaf ifStackHigherLayer { + type if-mib:InterfaceIndexOrZero; + config false; + description + "The value of ifIndex corresponding to the higher sub-layer + of the relationship, i.e., the sub-layer which runs on 'top' + of the sub-layer identified by the corresponding instance of + ifStackLowerLayer. If there is no higher sub-layer (below + the internetwork layer), then this object has the value 0."; + } + + leaf ifStackLowerLayer { + type if-mib:InterfaceIndexOrZero; + config false; + description + "The value of ifIndex corresponding to the lower sub-layer + of the relationship, i.e., the sub-layer which runs 'below' + the sub-layer identified by the corresponding instance of + ifStackHigherLayer. If there is no lower sub-layer, then + this object has the value 0."; + } + + leaf ifStackStatus { + type smiv2:RowStatus; + config true; + description + "The status of the relationship between two sub-layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have consequences up + and down the interface stack. Thus, write access to this + object is likely to be inappropriate for some types of + interfaces, and many implementations will choose not to + support write-access for any type of interface."; + } + } + + + + /* XXX table comments here XXX */ + + list ifRcvAddressEntry { + + key "ifIndex ifRcvAddressAddress"; + description + "A list of objects identifying an address for which the + system will accept packets/frames on the particular + interface identified by the index value ifIndex."; + + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf ifRcvAddressAddress { + type yang:phys-address; + config false; + description + "An address for which the system will accept packets/frames + on this entry's interface."; + } + + leaf ifRcvAddressStatus { + type smiv2:RowStatus; + config true; + description + "This object is used to create and delete rows in the + ifRcvAddressTable."; + } + + leaf ifRcvAddressType { + type enumeration { + enum other { value 1; } + enum volatile { value 2; } + enum nonVolatile { value 3; } + } + config true; + description + "This object has the value nonVolatile(3) for those entries + in the table which are valid and will not be deleted by the + next restart of the managed system. Entries having the + value volatile(2) are valid and exist, but have not been + saved, so that will not exist after the next restart of the + managed system. Entries having the value other(1) are valid + and exist but are not classified as to whether they will + continue to exist after the next restart."; + } + } + + leaf ifTableLastChange { + type yang:timeticks; + config false; + description + "The value of sysUpTime at the time of the last creation or + deletion of an entry in the ifTable. If the number of + entries has been unchanged since the last re-initialization + of the local network management subsystem, then this object + contains a zero value."; + } + + leaf ifStackLastChange { + type yang:timeticks; + config false; + description + "The value of sysUpTime at the time of the last change of + the (whole) interface stack. A change of the interface + stack is defined to be any creation, deletion, or change in + value of any instance of ifStackStatus. If the interface + stack has been unchanged since the last re-initialization of + the local network management subsystem, then this object + contains a zero value."; + } + } + + + /* XXX table comments here XXX */ + + augment "/if-mib:interfaces/if-mib:ifEntry" { + description + "An entry containing additional management information + applicable to a particular interface."; + + leaf ifName { + type smiv2:DisplayString; + config false; + description + "The textual name of the interface. The value of this + object should be the name of the interface as assigned by + the local device and should be suitable for use in commands + entered at the device's `console'. This might be a text + name, such as `le0' or a simple port number, such as `1', + depending on the interface naming syntax of the device. If + several entries in the ifTable together represent a single + interface as named by the device, then each will have the + same value of ifName. Note that for an agent which responds + to SNMP queries concerning an interface on some other + (proxied) device, then the value of ifName for such an + interface is the proxied device's local name for it. + + If there is no local name, or this object is otherwise not + applicable, then this object contains a zero-length string."; + } + + leaf ifInMulticastPkts { + type yang:counter32; + config false; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifInBroadcastPkts { + type yang:counter32; + config false; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifOutMulticastPkts { + type yang:counter32; + config false; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifOutBroadcastPkts { + type yang:counter32; + config false; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + + + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifHCInOctets { + type yang:counter64; + config false; + description + "The total number of octets received on the interface, + including framing characters. This object is a 64-bit + version of ifInOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifHCInUcastPkts { + type yang:counter64; + config false; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a multicast + or broadcast address at this sub-layer. This object is a + 64-bit version of ifInUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifHCInMulticastPkts { + type yang:counter64; + config false; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifInMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifHCInBroadcastPkts { + type yang:counter64; + config false; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. This object is a 64-bit version + of ifInBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifHCOutOctets { + type yang:counter64; + config false; + description + "The total number of octets transmitted out of the + interface, including framing characters. This object is a + 64-bit version of ifOutOctets. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifHCOutUcastPkts { + type yang:counter64; + config false; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed to a + multicast or broadcast address at this sub-layer, including + those that were discarded or not sent. This object is a + 64-bit version of ifOutUcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifHCOutMulticastPkts { + type yang:counter64; + config false; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those that + were discarded or not sent. For a MAC layer protocol, this + includes both Group and Functional addresses. This object + is a 64-bit version of ifOutMulticastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifHCOutBroadcastPkts { + type yang:counter64; + config false; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those that + were discarded or not sent. This object is a 64-bit version + of ifOutBroadcastPkts. + + Discontinuities in the value of this counter can occur at + re-initialization of the management system, and at other + times as indicated by the value of + ifCounterDiscontinuityTime."; + } + + leaf ifLinkUpDownTrapEnable { + type enumeration { + enum enabled { value 1; } + enum disabled { value 2; } + } + config true; + description + "Indicates whether linkUp/linkDown traps should be generated + for this interface. + + By default, this object should have the value enabled(1) for + interfaces which do not operate on 'top' of any other + interface (as defined in the ifStackTable), and disabled(2) + otherwise."; + } + + leaf ifHighSpeed { + type yang:gauge32; + config false; + description + "An estimate of the interface's current bandwidth in units + of 1,000,000 bits per second. If this object reports a + value of `n' then the speed of the interface is somewhere in + the range of `n-500,000' to `n+499,999'. For interfaces + which do not vary in bandwidth or for those where no + accurate estimation can be made, this object should contain + the nominal bandwidth. For a sub-layer which has no concept + of bandwidth, this object should be zero."; + } + + leaf ifPromiscuousMode { + type smiv2:TruthValue; + config true; + description + "This object has a value of false(2) if this interface only + accepts packets/frames that are addressed to this station. + This object has a value of true(1) when the station accepts + all packets/frames transmitted on the media. The value + true(1) is only legal on certain types of media. If legal, + setting this object to a value of true(1) may require the + interface to be reset before becoming effective. + + The value of ifPromiscuousMode does not affect the reception + of broadcast and multicast packets/frames by the interface."; + } + + leaf ifConnectorPresent { + type smiv2:TruthValue; + config false; + description + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value 'false(2)' + otherwise."; + } + + leaf ifAlias { + type smiv2:DisplayString { + length "0..64"; + } + config true; + description + "This object is an 'alias' name for the interface as + specified by a network manager, and provides a non-volatile + 'handle' for the interface. + + On the first instantiation of an interface, the value of + ifAlias associated with that interface is the zero-length + string. As and when a value is written into an instance of + ifAlias through a network management set operation, then the + agent must retain the supplied value in the ifAlias instance + associated with the same interface for as long as that + interface remains instantiated, including across all re- + initializations/reboots of the network management system, + including those which result in a change of the interface's + ifIndex value. + + An example of the value which a network manager might store + in this object for a WAN interface is the (Telco's) circuit + number/identifier of the interface. + + Some agents may support write-access only for interfaces + having particular values of ifType. An agent which supports + write access to this object is required to keep the value in + non-volatile storage, but it may limit the length of new + values depending on how much storage is already occupied by + the current values for other interfaces."; + } + + leaf ifCounterDiscontinuityTime { + type yang:timestamp; + config false; + description + "The value of sysUpTime on the most recent occasion at which + any one or more of this interface's counters suffered a + discontinuity. The relevant counters are the specific + instances associated with this interface of any Counter32 or + + + Counter64 object contained in the ifTable or ifXTable. If + no such discontinuities have occurred since the last re- + initialization of the local management subsystem, then this + object contains a zero value."; + } + } + + + /* XXX table comments here XXX */ + + augment "/if-mib:interfaces/if-mib:ifEntry" { + status deprecated; + description + "An entry containing objects for invoking tests on an + interface."; + + leaf ifTestId { + type smiv2:TestAndIncr; + config true; + status deprecated; + description + "This object identifies the current invocation of the + interface's test."; + } + + leaf ifTestStatus { + type enumeration { + enum notInUse { value 1; } + enum inUse { value 2; } + } + config true; + status deprecated; + description + "This object indicates whether or not some manager currently + has the necessary 'ownership' required to invoke a test on + this interface. A write to this object is only successful + when it changes its value from 'notInUse(1)' to 'inUse(2)'. + After completion of a test, the agent resets the value back + to 'notInUse(1)'."; + } + + leaf ifTestType { + type smiv2:AutonomousType; + config true; + status deprecated; + description + "A control variable used to start and stop operator- + initiated interface tests. Most OBJECT IDENTIFIER values + assigned to tests are defined elsewhere, in association with + specific types of interface. However, this document assigns + a value for a full-duplex loopback test, and defines the + special meanings of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + + When the value noTest is written to this object, no action + is taken unless a test is in progress, in which case the + test is aborted. Writing any other value to this object is + + + only valid when no test is currently in progress, in which + case the indicated test is initiated. + + When read, this object always returns the most recent value + that ifTestType was set to. If it has not been set since + the last initialization of the network management subsystem + on the agent, a value of noTest is returned."; + } + + leaf ifTestResult { + type enumeration { + enum none { value 1; } + enum success { value 2; } + enum inProgress { value 3; } + enum notSupported { value 4; } + enum unAbleToRun { value 5; } + enum aborted { value 6; } + enum failed { value 7; } + } + config false; + status deprecated; + description + "This object contains the result of the most recently + requested test, or the value none(1) if no tests have been + requested since the last reset. Note that this facility + provides no provision for saving the results of one test + when starting another, as could be required if used by + multiple managers concurrently."; + } + + leaf ifTestCode { + type yang:object-identifier; + config false; + status deprecated; + description + "This object contains a code which contains more specific + information on the test result, for example an error-code + after a failed test. Error codes and other values this + object may take are specific to the type of interface and/or + test. The value may have the semantics of either the + AutonomousType or InstancePointer textual conventions as + defined in RFC 2579. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available."; + } + + leaf ifTestOwner { + type if-mib:OwnerString; + config true; + status deprecated; + description + "The entity which currently has the 'ownership' required to + invoke a test on this interface."; + } + } + + notification linkDown { + description + "A linkDown trap signifies that the SNMP entity, acting in + an agent role, has detected that the ifOperStatus object for + one of its communication links is about to enter the down + state from some other state (but not from the notPresent + state). This other state is indicated by the included value + of ifOperStatus."; + + container linkDown-ifIndex { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + } + + container linkDown-ifAdminStatus { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifAdminStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + } + config false; + description + "The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state)."; + } + } + + container linkDown-ifOperStatus { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifOperStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + enum unknown { value 4; } + enum dormant { value 5; } + enum notPresent { value 6; } + enum lowerLayerDown { value 7; } + } + config false; + description + "The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components."; + } + } + + } + + notification linkUp { + description + "A linkUp trap signifies that the SNMP entity, acting in an + agent role, has detected that the ifOperStatus object for + one of its communication links left the down state and + transitioned into some other state (but not into the + notPresent state). This other state is indicated by the + included value of ifOperStatus."; + + container linkUp-ifIndex { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + } + + container linkUp-ifAdminStatus { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifAdminStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + } + config false; + description + "The desired state of the interface. The testing(3) state + indicates that no operational packets can be passed. When a + managed system initializes, all interfaces start with + ifAdminStatus in the down(2) state. As a result of either + explicit management action or per configuration information + retained by the managed system, ifAdminStatus is then + changed to either the up(1) or testing(3) states (or remains + in the down(2) state)."; + } + } + + container linkUp-ifOperStatus { + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifOperStatus { + type enumeration { + enum up { value 1; } + enum down { value 2; } + enum testing { value 3; } + enum unknown { value 4; } + enum dormant { value 5; } + enum notPresent { value 6; } + enum lowerLayerDown { value 7; } + } + config false; + description + "The current operational state of the interface. The + testing(3) state indicates that no operational packets can + be passed. If ifAdminStatus is down(2) then ifOperStatus + should be down(2). If ifAdminStatus is changed to up(1) + then ifOperStatus should change to up(1) if the interface is + ready to transmit and receive network traffic; it should + change to dormant(5) if the interface is waiting for + external actions (such as a serial line waiting for an + incoming connection); it should remain in the down(2) state + if and only if there is a fault that prevents it from going + to the up(1) state; it should remain in the notPresent(6) + state if the interface has missing (typically, hardware) + components."; + } + } + + } +} /* end of module IF-MIB */ diff --git a/test/dumps/yang/MAU-MIB b/test/dumps/yang/MAU-MIB new file mode 100644 index 0000000..9ef3d2d --- /dev/null +++ b/test/dumps/yang/MAU-MIB @@ -0,0 +1,1346 @@ +/* + * This module has been generated by smidump 0.4.5: + * + * smidump -f yang MAU-MIB + * + * Do not edit. Edit the source file instead! + */ + +module MAU-MIB { + + /*** NAMESPACE / PREFIX DEFINITION ***/ + + namespace "urn:ietf:params:xml:ns:yang:smiv2:MAU-MIB"; + prefix "mau-mib"; + + /*** LINKAGE (IMPORTS / INCLUDES) ***/ + + import IANA-MAU-MIB { prefix "iana-mau"; } + import IF-MIB { prefix "if-mib"; } + import SNMPv2-TC { prefix "smiv2"; } + import yang-types { prefix "yang"; } + + /*** META INFORMATION ***/ + + organization + "IETF Ethernet Interfaces and Hub MIB Working Group"; + + contact + "WG charter: + http://www.ietf.org/html.charters/hubmib-charter.html + + Mailing Lists: + General Discussion: hubmib@ietf.org + To Subscribe: hubmib-request@ietf.org + In Body: subscribe your_email_address + + + + Chair: Bert Wijnen + Postal: Alcatel-Lucent + Schagen 33 + 3461 GL Linschoten + Netherlands + Phone: +31-348-407-775 + EMail: bwijnen@alcatel-lucent.com + + Editor: Edward Beili + Postal: Actelis Networks Inc. + 25 Bazel St., P.O.B. 10173 + Petach-Tikva 10173 + Israel + Tel: +972-3-924-3491 + EMail: edward.beili@actelis.com"; + + description + "Management information for 802.3 MAUs. + + The following reference is used throughout this MIB module: + + [IEEE802.3] refers to: + IEEE Std 802.3, 2005 Edition: 'IEEE Standard for Information + technology - Telecommunications and information exchange + between systems - Local and metropolitan area networks - + Specific requirements - Part 3: Carrier sense multiple + access with collision detection (CSMA/CD) access method and + physical layer specifications'. + + Of particular interest is Clause 30, 'Management'. + + Copyright (C) The IETF Trust (2007). + This version of this MIB module is part of RFC 4836; + see the RFC itself for full legal notices."; + + revision "2007-04-21" { + description + "Updated to reference IANA maintaned textual + conventions for MAU types, Media Availability state, + Auto Negotiation capabilities, and jack types, + instead of using internally defined values. + + This version is published as RFC 4836."; + } + revision "2003-09-19" { + description + "Updated to include support for 10 Gb/s MAUs. + This resulted in the following revisions: + - Added OBJECT-IDENTITY definitions for + 10 gigabit MAU types + + + + - Added fiberLC jack type to JackType TC + - Extended ifMauTypeListBits with bits for + the 10 gigabit MAU types + - Added enumerations to ifMauMediaAvailable, + and updated its DESCRIPTION to reflect + behaviour at 10 Gb/s + - Added 64-bit version of ifMauFalseCarriers + and added mauIfGrpHCStats object group to + contain the new object + - Deprecated mauModIfCompl2 and replaced it + with mauModIfCompl3, which includes the new + object group + + This version published as RFC 3636."; + } + revision "1999-08-24" { + description + "This version published as RFC 2668. Updated + to include support for 1000 Mb/sec + MAUs and flow control negotiation."; + } + revision "1997-10-31" { + description + "Version published as RFC 2239."; + } + revision "1993-09-30" { + description + "Initial version, published as RFC 1515."; + } + + /*** TYPE DEFINITIONS ***/ + + typedef JackType { + type enumeration { + enum other { value 1; } + enum rj45 { value 2; } + enum rj45S { value 3; } + enum db9 { value 4; } + enum bnc { value 5; } + enum fAUI { value 6; } + enum mAUI { value 7; } + enum fiberSC { value 8; } + enum fiberMIC { value 9; } + enum fiberST { value 10; } + enum telco { value 11; } + enum mtrj { value 12; } + enum hssdc { value 13; } + enum fiberLC { value 14; } + } + status deprecated; + description + "********* THIS TC IS DEPRECATED ********** + + This TC has been deprecated in favour of + IANAifJackType. + + Common enumeration values for repeater + and interface MAU jack types."; + } + + container dot3RpMauBasicGroup { + + + /* XXX table comments here XXX */ + + list rpMauEntry { + + key "rpMauGroupIndex rpMauPortIndex rpMauIndex"; + description + "An entry in the table, containing information + about a single MAU."; + + + leaf rpMauGroupIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the group + containing the port to which the MAU described + by this entry is connected. + + Note: In practice, a group will generally be + a field-replaceable unit (i.e., module, card, + or board) that can fit in the physical system + enclosure, and the group number will correspond + to a number marked on the physical enclosure. + + The group denoted by a particular value of this + object is the same as the group denoted by the + same value of rptrGroupIndex."; + reference + "RFC 2108, rptrGroupIndex."; + } + + leaf rpMauPortIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the repeater + port within group rpMauGroupIndex to which the + MAU described by this entry is connected."; + reference + "RFC 2108, rptrPortIndex."; + } + + leaf rpMauIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the MAU + described by this entry from among other + MAUs connected to the same port + (rpMauPortIndex)."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + } + + leaf rpMauType { + type smiv2:AutonomousType; + config false; + description + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned."; + reference + "[IEEE802.3], 30.5.1.1.2, aMAUType."; + } + + leaf rpMauStatus { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum operational { value 3; } + enum standby { value 4; } + enum shutdown { value 5; } + enum reset { value 6; } + } + config true; + description + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle, and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + rpMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + rpMauJabberState and rpMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state."; + reference + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU."; + } + + leaf rpMauMediaAvailable { + type iana-mau:IANAifMauMediaAvailable; + config false; + description + "This object identifies Media Available state of + the MAU, complementary to the rpMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + + + + module, as IANAifMauMediaAvailable TC."; + reference + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable."; + } + + leaf rpMauMediaAvailableStateExits { + type yang:counter32; + config false; + description + "A count of the number of times that + rpMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2108, rptrMonitorPortLastChange"; + } + + leaf rpMauJabberState { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum noJabber { value 3; } + enum jabbering { value 4; } + } + config false; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + } + + leaf rpMauJabberingStateEnters { + type yang:counter32; + config false; + description + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). For MAUs of type + dot3MauTypeAUI, dot3MauType100BaseT4, + dot3MauType100BaseTX, dot3MauType100BaseFX, and + all 1000Mbps types, this counter will always + indicate zero. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2108, rptrMonitorPortLastChange"; + } + + leaf rpMauFalseCarriers { + type yang:counter32; + config false; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X links. This counter + does not increment at the symbol rate. It can + increment after a valid carrier completion at a + maximum rate of once per 100 ms until the next + carrier event. + + This counter increments only for MAUs of type + dot3MauType100BaseT4, dot3MauType100BaseTX, + dot3MauType100BaseFX, and all 1000Mbps types. + + For all other MAU types, this counter will + always indicate zero. + + The approximate minimum time for rollover of + this counter is 7.4 hours. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of rptrMonitorPortLastChange."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + RFC 2108, rptrMonitorPortLastChange"; + } + } + + + /* XXX table comments here XXX */ + + list rpJackEntry { + + key "rpMauGroupIndex rpMauPortIndex rpMauIndex rpJackIndex"; + description + "An entry in the table, containing information + about a particular jack."; + + leaf rpMauGroupIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauGroupIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauPortIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauPortIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf rpJackIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU (rpMauIndex)."; + } + + leaf rpJackType { + type iana-mau:IANAifJackType; + config false; + description + "The jack connector type, as it appears on the + outside of the system."; + } + } + } + + container dot3IfMauBasicGroup { + + + /* XXX table comments here XXX */ + + list ifMauEntry { + + key "ifMauIfIndex ifMauIndex"; + description + "An entry in the table, containing information + about a single MAU."; + + + leaf ifMauIfIndex { + type if-mib:InterfaceIndex; + config false; + description + "This variable uniquely identifies the interface + to which the MAU described by this entry is + connected."; + reference + "RFC 2863, ifIndex"; + } + + leaf ifMauIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the MAU + described by this entry from among other MAUs + connected to the same interface (ifMauIfIndex)."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID."; + } + + leaf ifMauType { + type smiv2:AutonomousType; + config false; + description + "This object identifies the MAU type. Values for + standard IEEE 802.3 MAU types are defined in the + IANA maintained IANA-MAU-MIB module, as + OBJECT-IDENTITIES of dot3MauType. + If the MAU type is unknown, the object identifier + zeroDotZero is returned. + + This object represents the operational type of + the MAU, as determined by either 1) the result + of the auto-negotiation function or 2) if + auto-negotiation is not enabled or is not + implemented for this MAU, by the value of the + object ifMauDefaultType. In case 2), a set to + the object ifMauDefaultType will force the MAU + into the new operating mode."; + reference + "[IEEE802.3], 30.5.1.1.2, aMAUType."; + } + + leaf ifMauStatus { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum operational { value 3; } + enum standby { value 4; } + enum shutdown { value 5; } + enum reset { value 6; } + } + config true; + description + "The current state of the MAU. This object MAY + be implemented as a read-only object by those + agents and MAUs that do not implement software + control of the MAU state. Some agents may not + + + + support setting the value of this object to some + of the enumerated values. + + The value other(1) is returned if the MAU is in + a state other than one of the states 2 through + 6. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + A MAU in the operational(3) state is fully + functional; it operates, and passes signals to its + attached DTE or repeater port in accordance to + its specification. + + A MAU in standby(4) state forces DI and CI to + idle and the media transmitter to idle or fault, + if supported. Standby(4) mode only applies to + link type MAUs. The state of + ifMauMediaAvailable is unaffected. + + A MAU in shutdown(5) state assumes the same + condition on DI, CI, and the media transmitter, + as though it were powered down or not connected. + The MAU MAY return other(1) value for the + ifMauJabberState and ifMauMediaAvailable objects + when it is in this state. For an AUI, this + state will remove power from the AUI. + + Setting this variable to the value reset(6) + resets the MAU in the same manner as a + power-off, power-on cycle of at least one-half + second would. The agent is not required to + return the value reset(6). + + Setting this variable to the value + operational(3), standby(4), or shutdown(5) + causes the MAU to assume the respective state, + except that setting a mixing-type MAU or an AUI + to standby(4) will cause the MAU to enter the + shutdown state."; + reference + "[IEEE802.3], 30.5.1.1.7, aMAUAdminState, + 30.5.1.2.2, acMAUAdminControl, and 30.5.1.2.1, + acResetMAU."; + } + + leaf ifMauMediaAvailable { + type iana-mau:IANAifMauMediaAvailable; + config false; + description + "This object identifies Media Available state of + the MAU, complementary to the ifMauStatus. Values + for the standard IEEE 802.3 Media Available states + are defined in the IANA maintained IANA-MAU-MIB + module, as IANAifMauMediaAvailable TC."; + reference + "[IEEE802.3], 30.5.1.1.4, aMediaAvailable."; + } + + leaf ifMauMediaAvailableStateExits { + type yang:counter32; + config false; + description + "A count of the number of times that + ifMauMediaAvailable for this MAU instance leaves + the state available(3). + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime."; + reference + "[IEEE802.3], 30.5.1.1.5, aLoseMediaCounter. + RFC 2863, ifCounterDiscontinuityTime."; + } + + leaf ifMauJabberState { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum noJabber { value 3; } + enum jabbering { value 4; } + } + config false; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + } + + leaf ifMauJabberingStateEnters { + type yang:counter32; + config false; + description + "A count of the number of times that + mauJabberState for this MAU instance enters the + state jabbering(4). This counter will always + indicate zero for MAUs of type dot3MauTypeAUI + and those of speeds above 10Mbps. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberCounter. + RFC 2863, ifCounterDiscontinuityTime."; + } + + leaf ifMauFalseCarriers { + type yang:counter32; + config false; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + It can increment after a valid carrier + completion at a maximum rate of once per 100 ms + for 100BASE-X and once per 10us for 1000BASE-X + until the next CarrierEvent. + + This counter can roll over very quickly. A + management station is advised to poll the + ifMauHCFalseCarriers instead of this counter in + order to avoid loss of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime."; + } + + leaf ifMauTypeList { + type int32; + config false; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauTypeListBits. + + A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + The value is a sum that initially takes the + value zero. Then, for each type capability of + this MAU, 2 raised to the power noted below is + added to the sum. For example, a MAU that has + the capability to be only 10BASE-T would have a + value of 512 (2**9). In contrast, a MAU that + supports both 10Base-T (full duplex) and + 100BASE-TX (full duplex) would have a value of + ((2**11) + (2**16)), or 67584. + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + 1 AUI + 2 10BASE-5 + 3 FOIRL + 4 10BASE-2 + 5 10BASE-T duplex mode unknown + 6 10BASE-FP + 7 10BASE-FB + 8 10BASE-FL duplex mode unknown + 9 10BROAD36 + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 10BASE-FL half duplex mode + 13 10BASE-FL full duplex mode + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 100BASE-FX half duplex mode + 18 100BASE-FX full duplex mode + 19 100BASE-T2 half duplex mode + + + + 20 100BASE-T2 full duplex mode + + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapability."; + } + + leaf ifMauDefaultType { + type smiv2:AutonomousType; + config true; + description + "This object identifies the default + administrative baseband MAU type to be used in + conjunction with the operational MAU type + denoted by ifMauType. + + The set of possible values for this object is + the same as the set defined for the ifMauType + object. + + This object represents the + administratively-configured type of the MAU. If + auto-negotiation is not enabled or is not + implemented for this MAU, the value of this + object determines the operational type of the + MAU. In this case, a set to this object will + force the MAU into the specified operating mode. + + If auto-negotiation is implemented and enabled + for this MAU, the operational type of the MAU + is determined by auto-negotiation, and the value + of this object denotes the type to which the MAU + will automatically revert if/when + auto-negotiation is later disabled. + + NOTE TO IMPLEMENTORS: It may be necessary to + provide for underlying hardware implementations + which do not follow the exact behavior specified + above. In particular, when + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by this object, rather than + continuing to operate at the value earlier + determined by the auto-negotiation function."; + reference + "[IEEE802.3], 30.5.1.1.1, aMAUID, and 22.2.4.1.4."; + } + + leaf ifMauAutoNegSupported { + type smiv2:TruthValue; + config false; + description + "This object indicates whether or not + auto-negotiation is supported on this MAU."; + } + + leaf ifMauTypeListBits { + type iana-mau:IANAifMauTypeListBits; + config false; + description + "A value that uniquely identifies the set of + possible IEEE 802.3 types that the MAU could be. + If auto-negotiation is present on this MAU, this + object will map to ifMauAutoNegCapabilityBits. + + Note that this MAU may be capable of operating + as a MAU type that is beyond the scope of this + MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauTypeListBits TC."; + } + + leaf ifMauHCFalseCarriers { + type yang:counter64; + config false; + description + "A count of the number of false carrier events + during IDLE in 100BASE-X and 1000BASE-X links. + + For all other MAU types, this counter will + always indicate zero. This counter does not + increment at the symbol rate. + + This counter is a 64-bit version of + ifMauFalseCarriers. Since the 32-bit version of + this counter can roll over very quickly, + management stations are advised to poll the + 64-bit version instead, in order to avoid loss + of information. + + Discontinuities in the value of this counter can + occur at re-initialization of the management + system and at other times, as indicated by the + value of ifCounterDiscontinuityTime."; + reference + "[IEEE802.3], 30.5.1.1.10, aFalseCarriers. + + + + RFC 2863, ifCounterDiscontinuityTime."; + } + } + + + /* XXX table comments here XXX */ + + list ifJackEntry { + + key "ifMauIfIndex ifMauIndex ifJackIndex"; + description + "An entry in the table, containing information + about a particular jack."; + + leaf ifMauIfIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIfIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifMauIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf ifJackIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "This variable uniquely identifies the jack + described by this entry from among other jacks + attached to the same MAU."; + } + + leaf ifJackType { + type iana-mau:IANAifJackType; + config false; + description + "The jack connector type, as it appears on the + outside of the system."; + } + } + } + + container dot3IfMauAutoNegGroup { + + + /* XXX table comments here XXX */ + + list ifMauAutoNegEntry { + + key "ifMauIfIndex ifMauIndex"; + description + "An entry in the table, containing configuration + and status information for the auto-negotiation + function of a particular MAU."; + + leaf ifMauIfIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIfIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifMauIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf ifMauAutoNegAdminStatus { + type enumeration { + enum enabled { value 1; } + enum disabled { value 2; } + } + config true; + description + "Setting this object to enabled(1) will cause + the interface that has the auto-negotiation + signaling ability to be enabled. + + If the value of this object is disabled(2) then + the interface will act as it would if it had no + auto-negotiation signaling. Under these + conditions, an IEEE 802.3 MAU will immediately + be forced to the state indicated by the value of + the object ifMauDefaultType. + + NOTE TO IMPLEMENTORS: When + ifMauAutoNegAdminStatus transitions from enabled + to disabled, the agent implementation MUST + ensure that the operational type of the MAU (as + reported by ifMauType) correctly transitions to + the value specified by the ifMauDefaultType + object, rather than continuing to operate at the + value earlier determined by the auto-negotiation + function."; + reference + "[IEEE802.3], 30.6.1.1.2, aAutoNegAdminState, + and 30.6.1.2.2, acAutoNegAdminControl."; + } + + leaf ifMauAutoNegRemoteSignaling { + type enumeration { + enum detected { value 1; } + enum notdetected { value 2; } + } + config false; + description + "A value indicating whether the remote end of + the link is using auto-negotiation signaling. It + takes the value detected(1) if and only if, + during the previous link negotiation, FLP Bursts + were received."; + reference + "[IEEE802.3], 30.6.1.1.3, + aAutoNegRemoteSignaling."; + } + + leaf ifMauAutoNegConfig { + type enumeration { + enum other { value 1; } + enum configuring { value 2; } + enum complete { value 3; } + enum disabled { value 4; } + enum parallelDetectFail { value 5; } + } + config false; + description + "A value indicating the current status of the + auto-negotiation process. The enumeration + parallelDetectFail(5) maps to a failure in + parallel detection as defined in 28.2.3.1 of + [IEEE802.3]."; + reference + "[IEEE802.3], 30.6.1.1.4, aAutoNegAutoConfig."; + } + + leaf ifMauAutoNegCapability { + type int32; + config false; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapabilityBits. + + A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. The value is a sum that initially + takes the value zero. Then, for each capability + of this interface, 2 raised to the power noted + below is added to the sum. For example, an + interface that has the capability to support + only 100Base-TX half duplex would have a value + of 32768 (2**15). In contrast, an interface + that supports both 100Base-TX half duplex and + 100Base-TX full duplex would have a value of + 98304 ((2**15) + (2**16)). + + The powers of 2 assigned to the capabilities are + these: + + Power Capability + 0 other or unknown + (1-9) (reserved) + 10 10BASE-T half duplex mode + 11 10BASE-T full duplex mode + 12 (reserved) + + + + 13 (reserved) + 14 100BASE-T4 + 15 100BASE-TX half duplex mode + 16 100BASE-TX full duplex mode + 17 (reserved) + 18 (reserved) + 19 100BASE-T2 half duplex mode + 20 100BASE-T2 full duplex mode + + Note that interfaces that support this MIB may + have capabilities that extend beyond the scope + of this MIB."; + reference + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility."; + } + + leaf ifMauAutoNegCapAdvertised { + type int32; + config true; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapAdvertisedBits. + + A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Capabilities in this object that are not + available in ifMauAutoNegCapability cannot be + enabled."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + } + + leaf ifMauAutoNegCapReceived { + type int32; + config false; + status deprecated; + description + "********* THIS OBJECT IS DEPRECATED ********** + + This object has been deprecated in favour of + ifMauAutoNegCapReceivedBits. + + A value that uniquely identifies the set of + + + + capabilities received from the remote + auto-negotiation entity. Refer to + ifMauAutoNegCapability for a description of the + possible values of this object. + + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + } + + leaf ifMauAutoNegRestart { + type enumeration { + enum restart { value 1; } + enum norestart { value 2; } + } + config true; + description + "If the value of this object is set to + restart(1) then this will force auto-negotiation + to begin link renegotiation. If auto-negotiation + signaling is disabled, a write to this object + has no effect. + Setting the value of this object to norestart(2) + has no effect."; + reference + "[IEEE802.3], 30.6.1.2.1, + acAutoNegRestartAutoConfig."; + } + + leaf ifMauAutoNegCapabilityBits { + type iana-mau:IANAifMauAutoNegCapBits; + config false; + description + "A value that uniquely identifies the set of + capabilities of the local auto-negotiation + entity. Note that interfaces that support this + MIB may have capabilities that extend beyond the + scope of this MIB. + + Note that the local auto-negotiation entity may + support some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.5, + aAutoNegLocalTechnologyAbility."; + } + + leaf ifMauAutoNegCapAdvertisedBits { + type iana-mau:IANAifMauAutoNegCapBits; + config true; + description + "A value that uniquely identifies the set of + capabilities advertised by the local + auto-negotiation entity. + + Capabilities in this object that are not + available in ifMauAutoNegCapabilityBits cannot + be enabled. + + Note that the local auto-negotiation entity may + advertise some capabilities beyond the scope of + this MIB. This is indicated by returning the + bit value bOther in addition to any bit values + for standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + } + + leaf ifMauAutoNegCapReceivedBits { + type iana-mau:IANAifMauAutoNegCapBits; + config false; + description + "A value that uniquely identifies the set of + capabilities received from the remote + auto-negotiation entity. + Note that interfaces that support this MIB may + be attached to remote auto-negotiation entities + that have capabilities beyond the scope of this + MIB. This is indicated by returning the bit + value bOther in addition to any bit values for + standard capabilities that are listed in the + IANAifMauAutoNegCapBits TC."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + } + + leaf ifMauAutoNegRemoteFaultAdvertised { + type enumeration { + enum noError { value 1; } + enum offline { value 2; } + enum linkFailure { value 3; } + enum autoNegError { value 4; } + } + config true; + description + "A value that identifies any local fault + indications that this MAU has detected and will + advertise at the next auto-negotiation + interaction for 1000Mbps MAUs."; + reference + "[IEEE802.3], 30.6.1.1.6, + aAutoNegAdvertisedTechnologyAbility."; + } + + leaf ifMauAutoNegRemoteFaultReceived { + type enumeration { + enum noError { value 1; } + enum offline { value 2; } + enum linkFailure { value 3; } + enum autoNegError { value 4; } + } + config false; + description + "A value that identifies any fault indications + received from the far end of a link by the + local auto-negotiation entity for 1000Mbps + MAUs."; + reference + "[IEEE802.3], 30.6.1.1.7, + aAutoNegReceivedTechnologyAbility."; + } + } + } + + notification rpMauJabberTrap { + description + "This trap is sent whenever a managed repeater + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive rpMauJabberTraps so that there is at + least a five-second gap between them."; + reference + "[IEEE802.3], 30.5.1.3.1, nJabber notification."; + + container rpMauJabberTrap-rpMauJabberState { + leaf rpMauGroupIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauGroupIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauPortIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauPortIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauIndex { + type keyref { + path "/mau-mib:dot3RpMauBasicGroup/mau-mib:rpMauEntry/mau-mib:rpMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf rpMauJabberState { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum noJabber { value 3; } + enum jabbering { value 4; } + } + config false; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + } + } + + } + + notification ifMauJabberTrap { + description + "This trap is sent whenever a managed interface + MAU enters the jabber state. + + The agent MUST throttle the generation of + consecutive ifMauJabberTraps so that there is at + least a five-second gap between them."; + reference + "[IEEE802.3], 30.5.1.3.1, nJabber notification."; + + container ifMauJabberTrap-ifMauJabberState { + leaf ifMauIfIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIfIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifMauIndex { + type keyref { + path "/mau-mib:dot3IfMauBasicGroup/mau-mib:ifMauEntry/mau-mib:ifMauIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf ifMauJabberState { + type enumeration { + enum other { value 1; } + enum unknown { value 2; } + enum noJabber { value 3; } + enum jabbering { value 4; } + } + config false; + description + "The value other(1) is returned if the jabber + state is not 2, 3, or 4. The agent MUST always + return other(1) for MAU type dot3MauTypeAUI. + + The value unknown(2) is returned when the MAU's + true state is unknown; for example, when it is + being initialized. + + If the MAU is not jabbering the agent returns + noJabber(3). This is the 'normal' state. + + If the MAU is in jabber state the agent returns + + + + the jabbering(4) value."; + reference + "[IEEE802.3], 30.5.1.1.6, aJabber.jabberFlag."; + } + } + + } +} /* end of module MAU-MIB */ diff --git a/test/dumps/yang/Makefile.am b/test/dumps/yang/Makefile.am new file mode 100644 index 0000000..a8dbeaa --- /dev/null +++ b/test/dumps/yang/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/dumps/yang/Makefile.in b/test/dumps/yang/Makefile.in new file mode 100644 index 0000000..88c790e --- /dev/null +++ b/test/dumps/yang/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the test/dumps/* Makefile.in using automake. +# +# Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1030 2000-11-13 00:06:35Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/dumps/yang +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/dumps/yang/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/dumps/yang/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/dumps/yang/RMON2-MIB b/test/dumps/yang/RMON2-MIB new file mode 100644 index 0000000..587251d --- /dev/null +++ b/test/dumps/yang/RMON2-MIB @@ -0,0 +1,4802 @@ +/* + * This module has been generated by smidump 0.4.5: + * + * smidump -f yang RMON2-MIB + * + * Do not edit. Edit the source file instead! + */ + +module RMON2-MIB { + + /*** NAMESPACE / PREFIX DEFINITION ***/ + + namespace "urn:ietf:params:xml:ns:yang:smiv2:RMON2-MIB"; + prefix "rmon2-mib"; + + /*** LINKAGE (IMPORTS / INCLUDES) ***/ + + import IF-MIB { prefix "if-mib"; } + import RMON-MIB { prefix "rmon-mib"; } + import SNMPv2-TC { prefix "smiv2"; } + import TOKEN-RING-RMON-MIB { prefix "token-ring"; } + import inet-types { prefix "inet"; } + import yang-types { prefix "yang"; } + + /*** META INFORMATION ***/ + + organization + "IETF RMON MIB Working Group"; + + contact + "Author: + Steve Waldbusser + Phone: +1-650-948-6500 + Fax : +1-650-745-0671 + Email: waldbusser@nextbeacon.com + + Working Group Chair: + Andy Bierman + E-mail: ietf@andybierman.com + + Working Group Mailing List: + To subscribe send email to: "; + + description + "The MIB module for managing remote monitoring + device implementations. This MIB module + extends the architecture introduced in the original + RMON MIB as specified in RFC 2819. + + Copyright (C) The Internet Society (2006). This version of + this MIB module is part of RFC 4502; see the RFC itself for + full legal notices."; + + revision "2006-05-02" { + description + "This version updates the proposed-standard version of the + RMON2 MIB (published as RFC 2021) by adding 2 new + enumerations to the nlMatrixTopNControlRateBase object and + 4 new enumerations to the alMatrixTopNControlRateBase object. + These new enumerations support the creation of high-capacity + topN reports in the High Capacity RMON MIB [RFC3273]. + + Additionally, the following objects have been deprecated, as + they have not had enough independent implementations to + demonstrate interoperability to meet the requirements of a + Draft Standard: + + probeDownloadFile + probeDownloadTFTPServer + probeDownloadAction + probeDownloadStatus + + + + serialMode + serialProtocol + serialTimeout + serialModemInitString + serialModemHangUpString + serialModemConnectResp + serialModemNoConnectResp + serialDialoutTimeout + serialStatus + serialConnectDestIpAddress + serialConnectType + serialConnectDialString + serialConnectSwitchConnectSeq + serialConnectSwitchDisconnectSeq + serialConnectSwitchResetSeq + serialConnectOwner + serialConnectStatus + netConfigIPAddress + netConfigSubnetMask + netConfigStatus + netDefaultGateway + tokenRingMLStats2DroppedFrames + tokenRingMLStats2CreateTime + tokenRingPStats2DroppedFrames + tokenRingPStats2CreateTime + ringStationControl2DroppedFrames + ringStationControl2CreateTime + sourceRoutingStats2DroppedFrames + sourceRoutingStats2CreateTime + trapDestIndex + trapDestCommunity + trapDestProtocol + trapDestAddress + trapDestOwner + trapDestStatus + + In addition, two corrections were made. The LastCreateTime + Textual Convention had been defined with a base type of + another textual convention, which isn't allowed in SMIv2. The + definition has been modified to use TimeTicks as the base + type. + + Further, the SerialConfigEntry SEQUENCE definition included + sub-typing information that is not allowed in SMIv2. This + information has been deleted. Ranges were added to a number of + objects and textual-conventions to constrain their maximum + (and sometimes minimum) sizes. The addition of these ranges + documents existing practice for these objects. These objects + + + + are: + ControlString + protocolDirID + protocolDirParameters + addressMapNetworkAddress + nlHostAddress + nlMatrixSDSourceAddress + nlMatrixSDDestAddress + nlMatrixDSSourceAddress + nlMatrixDSDestAddress + nlMatrixTopNSourceAddress + nlMatrixTopNDestAddress + alHostEntry + alMatrixSDEntry + alMatrixDSEntry + alMatrixTopNSourceAddress + alMatrixTopNDestAddress + + Finally, the TimeFilter TC has been updated to encourage agent + implementations that allow a MIB walk to behave well even when + performed by an application that is not aware of the special + TimeFilter semantics."; + } + revision "2002-07-08" { + description + "Added new enumerations to support the High-Capacity RMON + MIB as defined in RFC 3273. Also fixed some typos and + added clarifications."; + } + revision "1996-05-27" { + description + "Original version. Published as RFC 2021."; + } + + /*** TYPE DEFINITIONS ***/ + + typedef ZeroBasedCounter32 { + type yang:gauge32; + description + "This TC describes an object that 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."; + } + + typedef LastCreateTime { + type yang:timeticks; + description + "This TC describes an object that stores the value of the + sysUpTime object at 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. + + If sysUpTime is reset to zero as a result of a re- + initialization of the network management (sub)system, then + the values of all LastCreateTime objects are also reset. + However, after approximately 497 days without a re- + initialization, the sysUpTime object will reach 2^^32-1 and + then increment to zero; in this case, existing values + of TimeStamp objects do not change. This can lead to + ambiguities in the value of TimeStamp objects."; + } + + typedef TimeFilter { + type yang:timeticks; + description + "To be used for the index to a table. Allows an application + to download only those rows changed since a particular time. + + + + Note that this is not a history mechanism. Only current values + of underlying objects are returned; saved instance values + associated with particular values of sysUpTime are not. + + An entry is considered changed if the value of any object in the + entry changes, if the row is created, or if any object in the + entry is created or deleted. Note that deleted entries cannot + be detected or downloaded. + + A time-filtered conceptual table is created by inserting a + single object of SYNTAX TimeFilter as the first INDEX component + in a copy of an existing basic conceptual table (i.e., any + SEQUENCE without a TimeFilter INDEX component). Thus, for + each conceptual entry 'I' in the basic table, there exists N + conceptual entries in the time-filtered version, indexed N.I, + where 'N' is equal to the value of sysUpTime. + + When an application retrieves conceptual instances from a + time-filtered table, and an INDEX value is provided for the + TimeFilter INDEX component 'N', the agent will only consider + returning basic conceptual entries (e.g., 'fooColumn.N.I') if + any column within the basic conceptual entry has changed since + sysUpTime 'N'. If not, the basic conceptual entry will + be ignored for the particular retrieval operation. + + When sysUpTime is equal to zero, this table shall be empty. + + One conceptual entry exists for each past value of sysUpTime, + except that the whole table is purged should sysUpTime wrap. + + As an entry in a time-filtered table is updated (i.e., one of + the columns in the basic conceptual table is changed), new + conceptual entries are also created in the time-filtered version + (which still shares the now updated object values with all other + instances). The number of unique time-filtered instances that + are created is determined by the value of sysUpTime at which the + basic entry was last updated. One unique instance will exist + for each value of sysUpTime at the last update time for the row. + However, a new TimeFilter index instance is created for each new + sysUpTime value. The TimeFilter index values not associated + with entry updates are called duplicate time-filtered instances. + + After some deployment experience, it has been determined that + a time-filtered table is more efficient if the agent + stops a MIB walk operation by skipping over rows with a + TimeFilter index value higher than the value in the received + GetNext/GetBulk request. That is, instead of incrementing a + TimeFilter index value, the agent will continue to the next + + + + object or table. As a consequence, GetNext or GetBulk + operations will provide only one pass through a time-filtered + table. + + It is suggested that an agent implement a time-filtered table + in this manner to improve performance and avoid a MIB walk + getting stuck in time-filtered tables. It is, however, still + acceptable for an agent to implement a time-filtered table in + the traditional manner (i.e., every conceptual time-filtered + instance is returned in GetNext and GetBulk PDU responses), and + management applications must be able to deal with such + traditional implementations. + + See the appendix for further discussion of this textual + convention. + + The following example is provided to demonstrate TimeFilter + behavior: + + Consider the following basic conceptual table, basicFooTable. + (Note that the basic version of a time-filtered table may not + actually be defined.) + + basicFooTable: + + basicFooTable ... + INDEX { fooIndex } + + BasicFooEntry { + fooIndex Integer32, + fooCounts Counter32 + } + + For this example, the basicFooTable contains two static + conceptual entries (fooIndex equals '1' and '2'), created at + time zero. It also contains one dynamic conceptual entry + (fooIndex equals '3'), which is created at time '3' and deleted + at time '7'. + + The time-filtered version of the basicFooTable could be defined + as follows: + + FooTable: + + fooTable ... + INDEX { fooTimeMark, fooIndex } + + FooEntry { + + + + fooTimeMark TimeFilter, + fooIndex Integer32, + fooCounts Counter32 + } + + + Note that entries exist in the time-filtered conceptual table + only if they actually exist in the underlying (basic) table. + + For this example, the fooTable will have three underlying + basic entries (fooIndex == 1, 2, and 3), with the following + activity (for sysUpTime equal 0 to 9): + + - fooEntry.N.1 is created at time '0' and most recently + updated at time '6' to the value '5'. + - fooEntry.N.2 is created at time '0' and most recently + updated at time '8' to the value '9'. + - fooEntry.N.3 is created at time '3', updated at time '5' + to the value '17', and deleted at time '7'. + + The following tables show the values that would be returned for + MIB walk operations with various TimeFilter values, done at + different times. An application issues a retrieval request at + time 'T', with a TimeFilter value, 'N' (typically set to a lower + value, such as the value of sysUpTime at the last polling cycle). + + The following values would be returned in a MIB walk of + fooCounts.N if T equals '0' and N equals '0': + + fooCounts.N.I Value + ========================== + fooCounts.0.1 0 + fooCounts.0.2 0 + + Note that nothing is returned for fooCounts.0.3, since that + entry does not exist at sysUpTime equals '0'. + + The following values would be returned in a full (traditional) MIB + walk of fooCounts.N if T equals '3' and N equals '0': + + fooCounts.N.I Value + ======================= + fooCounts.0.1 0 + fooCounts.0.2 0 + fooCounts.0.3 0 + fooCounts.1.3 0 + fooCounts.2.3 0 + fooCounts.3.3 0 + + + + Note that there are no instances for T equals 1 or 2 for the + first two values of N, as these entries did not change + since they were created at time '0'. + + Note that the current value for 'fooCounts.N.3' is returned + here, even for values of N less than '3' (when the entry was + created). The agent only considers the current existence of an + entry in the TimeFilter algorithm, not the time when the entry + was created. + + Note that the instances 'fooCounts.0.3', 'fooCounts.1.3', + and 'fooCounts.2.3' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '6' and N equals '3': + + fooCounts.N.I Value + ======================= + fooCounts.3.1 5 + fooCounts.3.3 17 + fooCounts.4.1 5 + fooCounts.4.3 17 + fooCounts.5.1 5 + fooCounts.5.3 17 + fooCounts.6.1 5 + + Note that no instances for entry 'fooCounts.N.2' are returned, + since it has not changed since time '3'. + + Note that all instances except 'fooCounts.5.3' and + 'fooCounts.6.1' are duplicates and can be suppressed by the + agent in a MIB walk. + + The following values would be returned in a full (traditional) + MIB walk of fooCounts.N if T equals '9' and N equals '6': + + fooCounts.N.I Value + ======================= + fooCounts.6.1 5 + fooCounts.6.2 9 + fooCounts.7.2 9 + fooCounts.8.2 9 + + Note that no instances for entry 'fooCounts.N.3' are returned, + since it was deleted at time '7'. + + Note that instances 'fooCounts.6.2' and 'fooCounts.7.2' + + + + are duplicates and can be suppressed by the agent in a MIB + walk."; + } + + typedef DataSource { + type yang:object-identifier; + 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 [RFC2863], for the desired interface. + + For example, if an entry were to receive data from + interface #1, this object would be set to ifIndex.1."; + } + + typedef ControlString { + type binary { + length "0..255"; + } + 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 store 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, i.e., + 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."; + } + + container protocolDir { + + leaf protocolDirLastChange { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the time the protocol directory + was last modified, either through insertions or deletions, + or through modifications of the + protocolDirAddressMapConfig, protocolDirHostConfig, or + protocolDirMatrixConfig."; + } + + + /* XXX table comments here XXX */ + + list protocolDirEntry { + + key "protocolDirID protocolDirParameters"; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + + leaf protocolDirID { + type binary { + length "4..128"; + } + config false; + description + "A unique identifier for a particular protocol. Standard + identifiers will be defined in such a manner 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 that has algorithmic + assignment mechanisms for certain subtrees. See RFC 2074 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 + possible ethernet protocol types, nor need it create them on + the fly when it sees them. Whether 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."; + } + + leaf protocolDirParameters { + type binary { + length "1..32"; + } + config false; + 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."; + } + + leaf protocolDirLocalIndex { + type int32 { + range "1..2147483647"; + } + config false; + 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 that the protocol directory + entry is deleted."; + } + + leaf protocolDirDescr { + type smiv2:DisplayString { + length "1..64"; + } + config true; + 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)."; + } + + leaf protocolDirType { + type bits { + bit extensible { position 0; } + bit addressRecognitionCapable { position 1; } + } + config false; + description + "This object describes 2 attributes of this protocol + directory entry. + + The presence or absence of the 'extensible' bit describes + whether this protocol directory entry can be extended + by the user by creating protocol directory entries that 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 extendable. 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 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 protocol 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."; + } + + leaf protocolDirAddressMapConfig { + type enumeration { + enum notSupported { value 1; } + enum supportedOff { value 2; } + enum supportedOn { value 3; } + } + config true; + 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."; + } + + leaf protocolDirHostConfig { + type enumeration { + enum notSupported { value 1; } + enum supportedOff { value 2; } + enum supportedOn { value 3; } + } + config true; + 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, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols."; + } + + leaf protocolDirMatrixConfig { + type enumeration { + enum notSupported { value 1; } + enum supportedOff { value 2; } + enum supportedOn { value 3; } + } + config true; + 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 + 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, an entry will + only be created in that table if this value is supportedOn(3) + for both protocols."; + } + + leaf protocolDirOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf protocolDirStatus { + type smiv2:RowStatus; + config true; + 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."; + } + } + } + + container protocolDist { + + + /* XXX table comments here XXX */ + + list protocolDistControlEntry { + + key "protocolDistControlIndex"; + description + "A conceptual row in the protocolDistControlTable. + + An example of the indexing of this entry is + protocolDistControlDroppedFrames.7"; + + + leaf protocolDistControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "A unique index for this protocolDistControlEntry."; + } + + leaf protocolDistControlDataSource { + type rmon2-mib:DataSource; + config true; + 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)."; + } + + leaf protocolDistControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf protocolDistControlCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + + leaf protocolDistControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf protocolDistControlStatus { + type smiv2:RowStatus; + config true; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list protocolDistStatsEntry { + + key "protocolDistControlIndex protocolDirLocalIndex"; + 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 and the + particular protocol that it represents. + + An example of the indexing of this entry is + protocolDistStatsPkts.1.18"; + + leaf protocolDistControlIndex { + type keyref { + path "/rmon2-mib:protocolDist/rmon2-mib:protocolDistControlEntry/rmon2-mib:protocolDistControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf protocolDistStatsPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of packets of this protocol type received + without errors. 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."; + } + + leaf protocolDistStatsOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets in packets of this protocol type + + + + received since it was added to the protocolDistStatsTable + (excluding framing bits, but including FCS octets), except for + those octets in packets that contained errors. + + Note that this doesn't count just those octets in the + particular protocol frames but includes the entire packet + that contained the protocol."; + } + } + } + + container addressMap { + + leaf addressMapInserts { + type yang:counter32; + config false; + 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."; + } + + leaf addressMapDeletes { + type yang:counter32; + config false; + 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."; + } + + leaf addressMapMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + 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."; + } + + + /* XXX table comments here XXX */ + + list addressMapControlEntry { + + key "addressMapControlIndex"; + description + "A conceptual row in the addressMapControlTable. + + An example of the indexing of this entry is + addressMapControlDroppedFrames.1"; + + + leaf addressMapControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "A unique index for this entry in the addressMapControlTable."; + } + + leaf addressMapControlDataSource { + type rmon2-mib:DataSource; + config true; + description + "The source of data for this addressMapControlEntry."; + } + + leaf addressMapControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf addressMapControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf addressMapControlStatus { + type smiv2:RowStatus; + config true; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list addressMapEntry { + + key "addressMapTimeMark protocolDirLocalIndex + addressMapNetworkAddress addressMapSource"; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf addressMapTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf addressMapNetworkAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf addressMapSource { + type yang:object-identifier; + config false; + 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 [RFC2863], 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 [RFC2108], 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 that is a locally + attached repeater and the agent has additional information + about the source port of traffic seen on that repeater."; + } + + leaf addressMapPhysicalAddress { + type binary; + config false; + 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."; + } + + leaf addressMapLastChange { + type yang:timestamp; + config false; + 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."; + } + } + } + + container nlHost { + + + /* XXX table comments here XXX */ + + list hlHostControlEntry { + + key "hlHostControlIndex"; + description + "A conceptual row in the hlHostControlTable. + + An example of the indexing of this entry is + + + + hlHostControlNlDroppedFrames.1"; + + + leaf hlHostControlIndex { + type int32 { + range "1..65535"; + } + config false; + 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."; + } + + leaf hlHostControlDataSource { + type rmon2-mib:DataSource; + config true; + 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)."; + } + + leaf hlHostControlNlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf hlHostControlNlInserts { + type yang:counter32; + config false; + 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."; + } + + leaf hlHostControlNlDeletes { + type yang:counter32; + config false; + 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."; + } + + leaf hlHostControlNlMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + 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."; + } + + leaf hlHostControlAlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf hlHostControlAlInserts { + type yang:counter32; + config false; + 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."; + } + + leaf hlHostControlAlDeletes { + type yang:counter32; + config false; + 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."; + } + + leaf hlHostControlAlMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + 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."; + } + + leaf hlHostControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf hlHostControlStatus { + type smiv2:RowStatus; + config true; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list nlHostEntry { + + key "hlHostControlIndex nlHostTimeMark + protocolDirLocalIndex nlHostAddress"; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + + + + care to avoid such combinations."; + + leaf hlHostControlIndex { + type keyref { + path "/rmon2-mib:nlHost/rmon2-mib:hlHostControlEntry/rmon2-mib:hlHostControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf nlHostTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf nlHostAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf nlHostInPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf nlHostOutPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf nlHostInOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets transmitted to this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf nlHostOutOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + description + "The number of octets transmitted by this address + since it was added to the nlHostTable (excluding + framing bits, but including FCS octets), excluding + octets in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf nlHostOutMacNonUnicastPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf nlHostCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + } + + container nlMatrix { + + + /* XXX table comments here XXX */ + + list hlMatrixControlEntry { + + key "hlMatrixControlIndex"; + description + "A conceptual row in the hlMatrixControlTable. + + An example of indexing of this entry is + hlMatrixControlNlDroppedFrames.1"; + + + leaf hlMatrixControlIndex { + type int32 { + range "1..65535"; + } + config false; + 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."; + } + + leaf hlMatrixControlDataSource { + type rmon2-mib:DataSource; + config true; + 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)."; + } + + leaf hlMatrixControlNlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf hlMatrixControlNlInserts { + type yang:counter32; + config false; + 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."; + } + + leaf hlMatrixControlNlDeletes { + type yang:counter32; + config false; + 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."; + } + + leaf hlMatrixControlNlMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + 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."; + } + + leaf hlMatrixControlAlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf hlMatrixControlAlInserts { + type yang:counter32; + config false; + 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."; + } + + leaf hlMatrixControlAlDeletes { + type yang:counter32; + config false; + 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."; + } + + leaf hlMatrixControlAlMaxDesiredEntries { + type int32 { + range "-1..2147483647"; + } + config true; + 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."; + } + + leaf hlMatrixControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf hlMatrixControlStatus { + type smiv2:RowStatus; + config true; + 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 alMatrixDSTable + shall be deleted by the agent."; + } + } + + + /* XXX table comments here XXX */ + + list nlMatrixSDEntry { + + key "hlMatrixControlIndex nlMatrixSDTimeMark + protocolDirLocalIndex nlMatrixSDSourceAddress + nlMatrixSDDestAddress"; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlMatrixControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:hlMatrixControlEntry/rmon2-mib:hlMatrixControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf nlMatrixSDTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf nlMatrixSDSourceAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf nlMatrixSDDestAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf nlMatrixSDPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf nlMatrixSDOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf nlMatrixSDCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list nlMatrixDSEntry { + + key "hlMatrixControlIndex nlMatrixDSTimeMark + protocolDirLocalIndex nlMatrixDSDestAddress + nlMatrixDSSourceAddress"; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlMatrixControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:hlMatrixControlEntry/rmon2-mib:hlMatrixControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf nlMatrixDSTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf nlMatrixDSSourceAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf nlMatrixDSDestAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf nlMatrixDSPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf nlMatrixDSOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf nlMatrixDSCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list nlMatrixTopNControlEntry { + + key "nlMatrixTopNControlIndex"; + description + "A conceptual row in the nlMatrixTopNControlTable. + + An example of the indexing of this table is + nlMatrixTopNControlDuration.3"; + + + leaf nlMatrixTopNControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry + in the nlMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface."; + } + + leaf nlMatrixTopNControlMatrixIndex { + type int32 { + range "1..65535"; + } + config true; + description + "The nlMatrix[SD/DS] table for which a topN 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)."; + } + + leaf nlMatrixTopNControlRateBase { + type enumeration { + enum nlMatrixTopNPkts { value 1; } + enum nlMatrixTopNOctets { value 2; } + enum nlMatrixTopNHighCapacityPkts { value 3; } + enum nlMatrixTopNHighCapacityOctets { value 4; } + } + config true; + description + "The variable for each nlMatrix[SD/DS] entry that the + nlMatrixTopNEntries are sorted by, as well as a control + for the table that the results will be reported in. + + This object may not be modified if the associated + nlMatrixTopNControlStatus object is equal to active(1). + + If this value is less than or equal to 2, when the report + is prepared, entries are created in the nlMatrixTopNTable + associated with this object. + If this value is greater than or equal to 3, when the report + is prepared, entries are created in the + nlMatrixTopNHighCapacityTable associated with this object."; + } + + leaf nlMatrixTopNControlTimeRemaining { + type int32 { + range "0..2147483647"; + } + config true; + 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)."; + } + + leaf nlMatrixTopNControlGeneratedReports { + type yang:counter32; + config false; + description + "The number of reports that have been generated by this entry."; + } + + leaf nlMatrixTopNControlDuration { + type int32; + config false; + 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."; + } + + leaf nlMatrixTopNControlRequestedSize { + type int32 { + range "0..2147483647"; + } + config true; + 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 possible for the particular probe + implementation and available resources."; + } + + leaf nlMatrixTopNControlGrantedSize { + type int32 { + range "0..2147483647"; + } + config false; + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available."; + } + + leaf nlMatrixTopNControlStartTime { + type yang:timestamp; + config false; + description + "The value of sysUpTime when this topN 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 whether a report was missed."; + } + + leaf nlMatrixTopNControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf nlMatrixTopNControlStatus { + type smiv2:RowStatus; + config true; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list nlMatrixTopNEntry { + + key "nlMatrixTopNControlIndex nlMatrixTopNIndex"; + 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"; + + leaf nlMatrixTopNControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixTopNControlEntry/rmon2-mib:nlMatrixTopNControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf nlMatrixTopNIndex { + type int32 { + range "1..65535"; + } + config false; + 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."; + } + + leaf nlMatrixTopNProtocolDirLocalIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address."; + } + + leaf nlMatrixTopNSourceAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf nlMatrixTopNDestAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf nlMatrixTopNPktRate { + type yang:gauge32; + config false; + 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."; + } + + leaf nlMatrixTopNReversePktRate { + type yang:gauge32; + config false; + 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."; + } + + leaf nlMatrixTopNOctetRate { + type yang:gauge32; + config false; + 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."; + } + + leaf nlMatrixTopNReverseOctetRate { + type yang:gauge32; + config false; + 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."; + } + } + } + + container alHost { + + + /* XXX table comments here XXX */ + + list alHostEntry { + + key "hlHostControlIndex alHostTimeMark + protocolDirLocalIndex nlHostAddress + protocolDirLocalIndex"; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlHostControlIndex { + type keyref { + path "/rmon2-mib:nlHost/rmon2-mib:hlHostControlEntry/rmon2-mib:hlHostControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf nlHostAddress { + type keyref { + path "/rmon2-mib:nlHost/rmon2-mib:nlHostEntry/rmon2-mib:nlHostAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf alHostTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf alHostInPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf alHostOutPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf alHostInOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf alHostOutOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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 octets in packets that + contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf alHostCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + } + + container alMatrix { + + + /* XXX table comments here XXX */ + + list alMatrixSDEntry { + + key "hlMatrixControlIndex alMatrixSDTimeMark + protocolDirLocalIndex nlMatrixSDSourceAddress + nlMatrixSDDestAddress protocolDirLocalIndex"; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlMatrixControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:hlMatrixControlEntry/rmon2-mib:hlMatrixControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf nlMatrixSDSourceAddress { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixSDEntry/rmon2-mib:nlMatrixSDSourceAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf nlMatrixSDDestAddress { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixSDEntry/rmon2-mib:nlMatrixSDDestAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf alMatrixSDTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf alMatrixSDPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf alMatrixSDOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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 octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf alMatrixSDCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list alMatrixDSEntry { + + key "hlMatrixControlIndex alMatrixDSTimeMark + protocolDirLocalIndex nlMatrixDSDestAddress + nlMatrixDSSourceAddress protocolDirLocalIndex"; + 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. + + Note that some combinations of index values may result in an + index that exceeds 128 sub-identifiers in length, which exceeds + the maximum for the SNMP protocol. Implementations should take + care to avoid such combinations."; + + leaf hlMatrixControlIndex { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:hlMatrixControlEntry/rmon2-mib:hlMatrixControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf nlMatrixDSDestAddress { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixDSEntry/rmon2-mib:nlMatrixDSDestAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf nlMatrixDSSourceAddress { + type keyref { + path "/rmon2-mib:nlMatrix/rmon2-mib:nlMatrixDSEntry/rmon2-mib:nlMatrixDSSourceAddress"; + } + config false; + description + "Automagically generated keyref leaf."; + } + leaf protocolDirLocalIndex { + type keyref { + path "/rmon2-mib:protocolDir/rmon2-mib:protocolDirEntry/rmon2-mib:protocolDirLocalIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf alMatrixDSTimeMark { + type rmon2-mib:TimeFilter; + config false; + description + "A TimeFilter for this entry. See the TimeFilter textual + convention to see how this works."; + } + + leaf alMatrixDSPkts { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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."; + } + + leaf alMatrixDSOctets { + type rmon2-mib:ZeroBasedCounter32; + config false; + 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 octets + in packets that contained errors. + + Note that this doesn't count just those octets in the particular + protocol frames but includes the entire packet that contained + the protocol."; + } + + leaf alMatrixDSCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list alMatrixTopNControlEntry { + + key "alMatrixTopNControlIndex"; + description + "A conceptual row in the alMatrixTopNControlTable. + + An example of the indexing of this table is + alMatrixTopNControlDuration.3"; + + + leaf alMatrixTopNControlIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index that uniquely identifies an entry + in the alMatrixTopNControlTable. Each such + entry defines one topN report prepared for + one interface."; + } + + leaf alMatrixTopNControlMatrixIndex { + type int32 { + range "1..65535"; + } + config true; + description + "The alMatrix[SD/DS] table for which a topN 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)."; + } + + leaf alMatrixTopNControlRateBase { + type enumeration { + enum alMatrixTopNTerminalsPkts { value 1; } + enum alMatrixTopNTerminalsOctets { value 2; } + enum alMatrixTopNAllPkts { value 3; } + enum alMatrixTopNAllOctets { value 4; } + enum alMatrixTopNTerminalsHighCapacityPkts { value 5; } + enum alMatrixTopNTerminalsHighCapacityOctets { value 6; } + enum alMatrixTopNAllHighCapacityPkts { value 7; } + enum alMatrixTopNAllHighCapacityOctets { value 8; } + } + config true; + description + "This object controls which alMatrix[SD/DS] entry that the + alMatrixTopNEntries are sorted by, which view of the matrix + table that will be used, as well as which table the results + will be reported in. + + The values alMatrixTopNTerminalsPkts, + alMatrixTopNTerminalsOctets, + alMatrixTopNTerminalsHighCapacityPkts, and + alMatrixTopNTerminalsHighCapacityOctets cause collection + only from protocols that have no child protocols that are + counted. The values alMatrixTopNAllPkts, + alMatrixTopNAllOctets, alMatrixTopNAllHighCapacityPkts, and + alMatrixTopNAllHighCapacityOctets cause collection from all + alMatrix entries. + + This object may not be modified if the associated + alMatrixTopNControlStatus object is equal to active(1)."; + } + + leaf alMatrixTopNControlTimeRemaining { + type int32 { + range "0..2147483647"; + } + config true; + 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)."; + } + + leaf alMatrixTopNControlGeneratedReports { + type yang:counter32; + config false; + description + "The number of reports that have been generated by this entry."; + } + + leaf alMatrixTopNControlDuration { + type int32; + config false; + 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."; + } + + leaf alMatrixTopNControlRequestedSize { + type int32 { + range "0..2147483647"; + } + config true; + 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 possible for the particular probe + implementation and available resources."; + } + + leaf alMatrixTopNControlGrantedSize { + type int32 { + range "0..2147483647"; + } + config false; + 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 + possible for the particular implementation and + available resources. The probe must not lower this + value except as a side-effect 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 zero-valued entries are available."; + } + + leaf alMatrixTopNControlStartTime { + type yang:timestamp; + config false; + description + "The value of sysUpTime when this topN 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 whether a report was missed."; + } + + leaf alMatrixTopNControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf alMatrixTopNControlStatus { + type smiv2:RowStatus; + config true; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list alMatrixTopNEntry { + + key "alMatrixTopNControlIndex alMatrixTopNIndex"; + 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"; + + leaf alMatrixTopNControlIndex { + type keyref { + path "/rmon2-mib:alMatrix/rmon2-mib:alMatrixTopNControlEntry/rmon2-mib:alMatrixTopNControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf alMatrixTopNIndex { + type int32 { + range "1..65535"; + } + config false; + 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."; + } + + leaf alMatrixTopNProtocolDirLocalIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The protocolDirLocalIndex of the network-layer protocol of + this entry's network address."; + } + + leaf alMatrixTopNSourceAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf alMatrixTopNDestAddress { + type binary { + length "1..255"; + } + config false; + 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."; + } + + leaf alMatrixTopNAppProtocolDirLocalIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The type of the protocol counted by this matrix entry."; + } + + leaf alMatrixTopNPktRate { + type yang:gauge32; + config false; + 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."; + } + + leaf alMatrixTopNReversePktRate { + type yang:gauge32; + config false; + 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."; + } + + leaf alMatrixTopNOctetRate { + type yang:gauge32; + config false; + 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."; + } + + leaf alMatrixTopNReverseOctetRate { + type yang:gauge32; + config false; + 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."; + } + } + } + + container usrHistory { + + + /* XXX table comments here XXX */ + + list usrHistoryControlEntry { + + key "usrHistoryControlIndex"; + 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"; + + + leaf usrHistoryControlIndex { + type int32 { + range "1..65535"; + } + config false; + 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."; + } + + leaf usrHistoryControlObjects { + type int32 { + range "1..65535"; + } + config true; + 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)."; + } + + leaf usrHistoryControlBucketsRequested { + type int32 { + range "1..65535"; + } + config true; + 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 possible for the particular probe + implementation and available resources."; + } + + leaf usrHistoryControlBucketsGranted { + type int32 { + range "1..65535"; + } + config false; + 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 + 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."; + } + + leaf usrHistoryControlInterval { + type int32 { + range "1..2147483647"; + } + config true; + 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 to 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)."; + } + + leaf usrHistoryControlOwner { + type rmon-mib:OwnerString; + config true; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf usrHistoryControlStatus { + type smiv2:RowStatus; + config true; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list usrHistoryObjectEntry { + + key "usrHistoryControlIndex usrHistoryObjectIndex"; + 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"; + + leaf usrHistoryControlIndex { + type keyref { + path "/rmon2-mib:usrHistory/rmon2-mib:usrHistoryControlEntry/rmon2-mib:usrHistoryControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf usrHistoryObjectIndex { + type int32 { + range "1..65535"; + } + config false; + description + "An index used to uniquely identify an entry in the + usrHistoryObject table. Each such entry defines a + MIB instance to be collected periodically."; + } + + leaf usrHistoryObjectVariable { + type yang:object-identifier; + config true; + 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. See USM [RFC3414] and VACM [RFC3415] for more + information. + + 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)."; + } + + leaf usrHistoryObjectSampleType { + type enumeration { + enum absoluteValue { value 1; } + enum deltaValue { value 2; } + } + config true; + 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)."; + } + } + + + /* XXX table comments here XXX */ + + list usrHistoryEntry { + + key "usrHistoryControlIndex usrHistorySampleIndex + usrHistoryObjectIndex"; + description + "A historical sample of user-defined variables. This sample + is associated with the usrHistoryControlEntry that 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"; + + leaf usrHistoryControlIndex { + type keyref { + path "/rmon2-mib:usrHistory/rmon2-mib:usrHistoryControlEntry/rmon2-mib:usrHistoryControlIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + leaf usrHistoryObjectIndex { + type keyref { + path "/rmon2-mib:usrHistory/rmon2-mib:usrHistoryObjectEntry/rmon2-mib:usrHistoryObjectIndex"; + } + config true; + description + "Automagically generated keyref leaf."; + } + + leaf usrHistorySampleIndex { + type int32 { + range "1..2147483647"; + } + config false; + 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."; + } + + leaf usrHistoryIntervalStart { + type yang:timestamp; + config false; + 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 that the probe delay + collecting the first sample of the history, as each sample + must be of the same interval. Also note that the sample that + is currently being collected is not accessible in this table + until the end of its interval."; + } + + leaf usrHistoryIntervalEnd { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the end of the interval over which + this sample was measured."; + } + + leaf usrHistoryAbsValue { + type yang:gauge32; + config false; + 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)'. + + The access control check prescribed in the definition of + usrHistoryObjectVariable SHOULD be checked for each sampling + interval. If this check determines that access should not be + allowed, then this object will have a value of zero, and the + associated instance of usrHistoryValStatus will be set to + 'valueNotAvailable(1)'."; + } + + leaf usrHistoryValStatus { + type enumeration { + enum valueNotAvailable { value 1; } + enum valuePositive { value 2; } + enum valueNegative { value 3; } + } + config false; + 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 the 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."; + } + } + } + + container probeConfig { + + leaf probeCapabilities { + type bits { + bit etherStats { position 0; } + bit historyControl { position 1; } + bit etherHistory { position 2; } + bit alarm { position 3; } + bit hosts { position 4; } + bit hostTopN { position 5; } + bit matrix { position 6; } + bit filter { position 7; } + bit capture { position 8; } + bit event { position 9; } + bit tokenRingMLStats { position 10; } + bit tokenRingPStats { position 11; } + bit tokenRingMLHistory { position 12; } + bit tokenRingPHistory { position 13; } + bit ringStation { position 14; } + bit ringStationOrder { position 15; } + bit ringStationConfig { position 16; } + bit sourceRouting { position 17; } + bit protocolDirectory { position 18; } + bit protocolDistribution { position 19; } + bit addressMapping { position 20; } + bit nlHost { position 21; } + bit nlMatrix { position 22; } + bit alHost { position 23; } + bit alMatrix { position 24; } + bit usrHistory { position 25; } + bit probeConfig { position 26; } + } + config false; + description + "An indication of the RMON MIB groups supported + on at least one interface by this probe."; + } + + leaf probeSoftwareRev { + type smiv2:DisplayString { + length "0..15"; + } + config false; + description + "The software revision of this device. This string will have + a zero length if the revision is unknown."; + } + + leaf probeHardwareRev { + type smiv2:DisplayString { + length "0..31"; + } + config false; + description + "The hardware revision of this device. This string will have + a zero length if the revision is unknown."; + } + + leaf probeDateTime { + type binary { + length "0 | 8 | 11"; + } + config true; + 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 + time zone information (fields 8-10) is not + present, and that if no time information is known, the + null string is returned."; + } + + leaf probeResetControl { + type enumeration { + enum running { value 1; } + enum warmBoot { value 2; } + enum coldBoot { value 3; } + } + config true; + 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 to restart the application software. When the device + is running normally, this variable has a value of + running(1)."; + } + + leaf probeDownloadFile { + type smiv2:DisplayString { + length "0..127"; + } + config true; + status deprecated; + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + } + + leaf probeDownloadTFTPServer { + type inet:ipv4-address; + config true; + status deprecated; + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + } + + leaf probeDownloadAction { + type enumeration { + enum notDownloading { value 1; } + enum downloadToPROM { value 2; } + enum downloadToRAM { value 3; } + } + config true; + status deprecated; + description + "When this object is set to downloadToRAM(3) or + downloadToPROM(2), 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(3) is specified, the new image is copied + to RAM only (the old image remains unaltered in the flash + EPROM). If downloadToPROM(2) 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). + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + } + + leaf probeDownloadStatus { + type enumeration { + enum downloadSuccess { value 1; } + enum downloadStatusUnknown { value 2; } + enum downloadGeneralError { value 3; } + enum downloadNoResponseFromServer { value 4; } + enum downloadChecksumError { value 5; } + enum downloadIncompatibleImage { value 6; } + enum downloadTftpFileNotFound { value 7; } + enum downloadTftpAccessViolation { value 8; } + } + config false; + status deprecated; + 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. + + This object has been deprecated, as it has not had enough + independent implementations to demonstrate interoperability to + meet the requirements of a Draft Standard."; + } + + + /* XXX table comments here XXX */ + + list serialConfigEntry { + + key "ifIndex"; + status deprecated; + 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."; + + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf serialMode { + type enumeration { + enum direct { value 1; } + enum modem { value 2; } + } + config true; + status deprecated; + description + "The type of incoming connection to be expected on this + serial interface."; + } + + leaf serialProtocol { + type enumeration { + enum other { value 1; } + enum slip { value 2; } + enum ppp { value 3; } + } + config true; + status deprecated; + description + "The type of data link encapsulation to be used on this + serial interface."; + } + + leaf serialTimeout { + type int32 { + range "1..65535"; + } + config true; + status deprecated; + 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."; + } + + leaf serialModemInitString { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that 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'."; + } + + leaf serialModemHangUpString { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that 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'."; + } + + leaf serialModemConnectResp { + type smiv2:DisplayString { + length "0..255"; + } + config true; + status deprecated; + 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/'."; + } + + leaf serialModemNoConnectResp { + type smiv2:DisplayString { + length "0..255"; + } + config true; + status deprecated; + 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/'."; + } + + leaf serialDialoutTimeout { + type int32 { + range "1..65535"; + } + config true; + status deprecated; + 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."; + } + + leaf serialStatus { + type smiv2:RowStatus; + config true; + status deprecated; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list netConfigEntry { + + key "ifIndex"; + status deprecated; + 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."; + + leaf ifIndex { + type keyref { + path "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex"; + } + config false; + description + "Automagically generated keyref leaf."; + } + + leaf netConfigIPAddress { + type inet:ipv4-address; + config true; + status deprecated; + 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 is 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 them very infrequently if no + replies are received."; + } + + leaf netConfigSubnetMask { + type inet:ipv4-address; + config true; + status deprecated; + 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 is 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 them very infrequently if no + replies are received."; + } + + leaf netConfigStatus { + type smiv2:RowStatus; + config true; + status deprecated; + 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."; + } + } + + leaf netDefaultGateway { + type inet:ipv4-address; + config true; + status deprecated; + description + "The IP Address of the default gateway. If this value is + undefined or unknown, it shall have the value 0.0.0.0."; + } + + + /* XXX table comments here XXX */ + + list trapDestEntry { + + key "trapDestIndex"; + status deprecated; + description + "This entry includes a destination IP address to which + traps are sent for this community."; + + + leaf trapDestIndex { + type int32 { + range "1..65535"; + } + config false; + status deprecated; + description + "A value that uniquely identifies this trapDestEntry."; + } + + leaf trapDestCommunity { + type binary { + length "0..127"; + } + config true; + status deprecated; + 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, as long as no access control mechanism + precludes it (e.g., VACM). + + This object may not be modified if the associated + trapDestStatus object is equal to active(1)."; + } + + leaf trapDestProtocol { + type enumeration { + enum ip { value 1; } + enum ipx { value 2; } + } + config true; + status deprecated; + description + "The protocol with which this trap is to be sent."; + } + + leaf trapDestAddress { + type binary; + config true; + status deprecated; + description + "The destination address for 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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 RFC 3417, 'Transport Mappings for the + Simple Network Management Protocol (SNMP)' [RFC3417]: + -- 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)."; + } + + leaf trapDestOwner { + type rmon-mib:OwnerString; + config true; + status deprecated; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf trapDestStatus { + type smiv2:RowStatus; + config true; + status deprecated; + 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."; + } + } + + + /* XXX table comments here XXX */ + + list serialConnectionEntry { + + key "serialConnectIndex"; + status deprecated; + description + "Configuration for a SLIP link over a serial line."; + + + leaf serialConnectIndex { + type int32 { + range "1..65535"; + } + config false; + status deprecated; + description + "A value that uniquely identifies this serialConnection + entry."; + } + + leaf serialConnectDestIpAddress { + type inet:ipv4-address; + config true; + status deprecated; + 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)."; + } + + leaf serialConnectType { + type enumeration { + enum direct { value 1; } + enum modem { value 2; } + enum switch { value 3; } + enum modemSwitch { value 4; } + } + config true; + status deprecated; + description + "The type of outgoing connection to be made. 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)."; + } + + leaf serialConnectDialString { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that specifies how to dial the phone + number in order to establish a modem connection. The + string should include the 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)."; + } + + leaf serialConnectSwitchConnectSeq { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that specifies how to establish a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + } + + leaf serialConnectSwitchDisconnectSeq { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that specifies how to terminate a + data switch connection. + + This object may not be modified if the associated + serialConnectStatus object is equal to active(1)."; + } + + leaf serialConnectSwitchResetSeq { + type rmon2-mib:ControlString { + length "0..255"; + } + config true; + status deprecated; + description + "A control string that 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)."; + } + + leaf serialConnectOwner { + type rmon-mib:OwnerString; + config true; + status deprecated; + description + "The entity that configured this entry and is + therefore using the resources assigned to it."; + } + + leaf serialConnectStatus { + type smiv2:RowStatus; + config true; + status deprecated; + 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 is a zero-length string + or cannot be correctly parsed as a ConnectString, 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."; + } + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:statistics/rmon-mib:etherStatsEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf etherStatsDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf etherStatsCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:statistics/token-ring:tokenRingMLStatsEntry" { + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf tokenRingMLStatsDroppedFrames { + type yang:counter32; + config false; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf tokenRingMLStatsCreateTime { + type rmon2-mib:LastCreateTime; + config false; + status deprecated; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:statistics/token-ring:tokenRingPStatsEntry" { + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf tokenRingPStatsDroppedFrames { + type yang:counter32; + config false; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf tokenRingPStatsCreateTime { + type rmon2-mib:LastCreateTime; + config false; + status deprecated; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:history/rmon-mib:historyControlEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf historyControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:hosts/rmon-mib:hostControlEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf hostControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf hostControlCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:matrix/rmon-mib:matrixControlEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf matrixControlDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf matrixControlCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:filter/rmon-mib:channelEntry" { + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf channelDroppedFrames { + type yang:counter32; + config false; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf channelCreateTime { + type rmon2-mib:LastCreateTime; + config false; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/rmon-mib:filter/rmon-mib:filterEntry" { + description + "Provides a variable-length packet filter feature to the + RMON-1 filter table."; + + leaf filterProtocolDirDataLocalIndex { + type int32 { + range "0..2147483647"; + } + config true; + 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."; + } + + leaf filterProtocolDirLocalIndex { + type int32 { + range "0..2147483647"; + } + config true; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/token-ring:tokenRing/token-ring:ringStationControlEntry" { + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf ringStationControlDroppedFrames { + type yang:counter32; + config false; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf ringStationControlCreateTime { + type rmon2-mib:LastCreateTime; + config false; + status deprecated; + 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."; + } + } + + + /* XXX table comments here XXX */ + + augment "/token-ring:tokenRing/token-ring:sourceRoutingStatsEntry" { + status deprecated; + description + "Contains the RMON-2 augmentations to RMON-1."; + + leaf sourceRoutingStatsDroppedFrames { + type yang:counter32; + config false; + status deprecated; + description + "The total number of frames that were received by the probe + and therefore not accounted for in the *StatsDropEvents, but + that 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."; + } + + leaf sourceRoutingStatsCreateTime { + type rmon2-mib:LastCreateTime; + config false; + status deprecated; + 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."; + } + } + +} /* end of module RMON2-MIB */ diff --git a/test/dumps/yang/SNMPv2-MIB b/test/dumps/yang/SNMPv2-MIB new file mode 100644 index 0000000..96e6ade --- /dev/null +++ b/test/dumps/yang/SNMPv2-MIB @@ -0,0 +1,648 @@ +/* + * This module has been generated by smidump 0.4.5: + * + * smidump -f yang SNMPv2-MIB + * + * Do not edit. Edit the source file instead! + */ + +module SNMPv2-MIB { + + /*** NAMESPACE / PREFIX DEFINITION ***/ + + namespace "urn:ietf:params:xml:ns:yang:smiv2:SNMPv2-MIB"; + prefix "snmpv2-mib"; + + /*** LINKAGE (IMPORTS / INCLUDES) ***/ + + import SNMPv2-TC { prefix "smiv2"; } + import yang-types { prefix "yang"; } + + /*** META INFORMATION ***/ + + organization + "IETF SNMPv3 Working Group"; + + contact + "WG-EMail: snmpv3@lists.tislabs.com + Subscribe: snmpv3-request@lists.tislabs.com + + Co-Chair: Russ Mundy + Network Associates Laboratories + postal: 15204 Omega Drive, Suite 300 + Rockville, MD 20850-4601 + USA + EMail: mundy@tislabs.com + phone: +1 301 947-7107 + + Co-Chair: David Harrington + Enterasys Networks + postal: 35 Industrial Way + P. O. Box 5005 + Rochester, NH 03866-5005 + USA + EMail: dbh@enterasys.com + phone: +1 603 337-2614 + + Editor: Randy Presuhn + BMC Software, Inc. + postal: 2141 North First Street + San Jose, CA 95131 + USA + EMail: randy_presuhn@bmc.com + phone: +1 408 546-1006"; + + description + "The MIB module for SNMP entities. + + Copyright (C) The Internet Society (2002). This + version of this MIB module is part of RFC 3418; + see the RFC itself for full legal notices."; + + revision "2002-10-16" { + description + "This revision of this MIB module was published as + RFC 3418."; + } + revision "1995-11-09" { + description + "This revision of this MIB module was published as + RFC 1907."; + } + revision "1993-04-01" { + description + "The initial revision of this MIB module was published + as RFC 1450."; + } + + container system { + + leaf sysDescr { + type smiv2:DisplayString { + length "0..255"; + } + config false; + description + "A textual description of the entity. This value should + include the full name and version identification of + the system's hardware type, software operating-system, + and networking software."; + } + + leaf sysObjectID { + type yang:object-identifier; + config false; + description + "The vendor's authoritative identification of the + network management subsystem contained in the entity. + This value is allocated within the SMI enterprises + subtree (1.3.6.1.4.1) and provides an easy and + unambiguous means for determining `what kind of box' is + being managed. For example, if vendor `Flintstones, + Inc.' was assigned the subtree 1.3.6.1.4.1.424242, + it could assign the identifier 1.3.6.1.4.1.424242.1.1 + to its `Fred Router'."; + } + + leaf sysUpTime { + type yang:timeticks; + config false; + description + "The time (in hundredths of a second) since the + network management portion of the system was last + re-initialized."; + } + + leaf sysContact { + type smiv2:DisplayString { + length "0..255"; + } + config true; + description + "The textual identification of the contact person for + this managed node, together with information on how + to contact this person. If no contact information is + known, the value is the zero-length string."; + } + + leaf sysName { + type smiv2:DisplayString { + length "0..255"; + } + config true; + description + "An administratively-assigned name for this managed + node. By convention, this is the node's fully-qualified + domain name. If the name is unknown, the value is + the zero-length string."; + } + + leaf sysLocation { + type smiv2:DisplayString { + length "0..255"; + } + config true; + description + "The physical location of this node (e.g., 'telephone + closet, 3rd floor'). If the location is unknown, the + value is the zero-length string."; + } + + leaf sysServices { + type int32 { + range "0..127"; + } + config false; + description + "A value which indicates the set of services that this + entity may potentially offer. The value is a sum. + + + + This sum initially takes the value zero. Then, for + each layer, L, in the range 1 through 7, that this node + performs transactions for, 2 raised to (L - 1) is added + to the sum. For example, a node which performs only + routing functions would have a value of 4 (2^(3-1)). + In contrast, a node which is a host offering application + services would have a value of 72 (2^(4-1) + 2^(7-1)). + Note that in the context of the Internet suite of + protocols, values should be calculated accordingly: + + layer functionality + 1 physical (e.g., repeaters) + 2 datalink/subnetwork (e.g., bridges) + 3 internet (e.g., supports the IP) + 4 end-to-end (e.g., supports the TCP) + 7 applications (e.g., supports the SMTP) + + For systems including OSI protocols, layers 5 and 6 + may also be counted."; + } + + leaf sysORLastChange { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the time of the most recent + change in state or value of any instance of sysORID."; + } + + + /* XXX table comments here XXX */ + + list sysOREntry { + + key "sysORIndex"; + description + "An entry (conceptual row) in the sysORTable."; + + + leaf sysORIndex { + type int32 { + range "1..2147483647"; + } + config false; + description + "The auxiliary variable used for identifying instances + of the columnar objects in the sysORTable."; + } + + leaf sysORID { + type yang:object-identifier; + config false; + description + "An authoritative identification of a capabilities + statement with respect to various MIB modules supported + by the local SNMP application acting as a command + responder."; + } + + leaf sysORDescr { + type smiv2:DisplayString; + config false; + description + "A textual description of the capabilities identified + by the corresponding instance of sysORID."; + } + + leaf sysORUpTime { + type yang:timestamp; + config false; + description + "The value of sysUpTime at the time this conceptual + row was last instantiated."; + } + } + } + + container snmp { + + leaf snmpInPkts { + type yang:counter32; + config false; + description + "The total number of messages delivered to the SNMP + entity from the transport service."; + } + + leaf snmpOutPkts { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Messages which were + passed from the SNMP protocol entity to the + transport service."; + } + + leaf snmpInBadVersions { + type yang:counter32; + config false; + description + "The total number of SNMP messages which were delivered + to the SNMP entity and were for an unsupported SNMP + version."; + } + + leaf snmpInBadCommunityNames { + type yang:counter32; + config false; + description + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + used an SNMP community name not known to said entity. + Also, implementations which authenticate community-based + SNMP messages using check(s) in addition to matching + the community name (for example, by also checking + whether the message originated from a transport address + allowed to use a specified community name) MAY include + in this value the number of messages which failed the + additional check(s). It is strongly RECOMMENDED that + + + + the documentation for any security model which is used + to authenticate community-based SNMP messages specify + the precise conditions that contribute to this value."; + } + + leaf snmpInBadCommunityUses { + type yang:counter32; + config false; + description + "The total number of community-based SNMP messages (for + example, SNMPv1) delivered to the SNMP entity which + represented an SNMP operation that was not allowed for + the SNMP community named in the message. The precise + conditions under which this counter is incremented + (if at all) depend on how the SNMP entity implements + its access control mechanism and how its applications + interact with that access control mechanism. It is + strongly RECOMMENDED that the documentation for any + access control mechanism which is used to control access + to and visibility of MIB instrumentation specify the + precise conditions that contribute to this value."; + } + + leaf snmpInASNParseErrs { + type yang:counter32; + config false; + description + "The total number of ASN.1 or BER errors encountered by + the SNMP entity when decoding received SNMP messages."; + } + + leaf snmpInTooBigs { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `tooBig'."; + } + + leaf snmpInNoSuchNames { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `noSuchName'."; + } + + leaf snmpInBadValues { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP PDUs which were + delivered to the SNMP protocol entity and for + which the value of the error-status field was + `badValue'."; + } + + leaf snmpInReadOnlys { + type yang:counter32; + config false; + status obsolete; + description + "The total number valid SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `readOnly'. It should + be noted that it is a protocol error to generate an + SNMP PDU which contains the value `readOnly' in the + error-status field, as such this object is provided + as a means of detecting incorrect implementations of + the SNMP."; + } + + leaf snmpInGenErrs { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP PDUs which were delivered + to the SNMP protocol entity and for which the value + of the error-status field was `genErr'."; + } + + leaf snmpInTotalReqVars { + type yang:counter32; + config false; + status obsolete; + description + "The total number of MIB objects which have been + retrieved successfully by the SNMP protocol entity + as the result of receiving valid SNMP Get-Request + and Get-Next PDUs."; + } + + leaf snmpInTotalSetVars { + type yang:counter32; + config false; + status obsolete; + description + "The total number of MIB objects which have been + altered successfully by the SNMP protocol entity as + the result of receiving valid SNMP Set-Request PDUs."; + } + + leaf snmpInGetRequests { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Request PDUs which + have been accepted and processed by the SNMP + protocol entity."; + } + + leaf snmpInGetNexts { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Next PDUs which have been + accepted and processed by the SNMP protocol entity."; + } + + leaf snmpInSetRequests { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Set-Request PDUs which + have been accepted and processed by the SNMP protocol + entity."; + } + + leaf snmpInGetResponses { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Response PDUs which + have been accepted and processed by the SNMP protocol + entity."; + } + + leaf snmpInTraps { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Trap PDUs which have been + accepted and processed by the SNMP protocol entity."; + } + + leaf snmpOutTooBigs { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `tooBig.'"; + } + + leaf snmpOutNoSuchNames { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status was `noSuchName'."; + } + + leaf snmpOutBadValues { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `badValue'."; + } + + leaf snmpOutGenErrs { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP PDUs which were generated + by the SNMP protocol entity and for which the value + of the error-status field was `genErr'."; + } + + leaf snmpOutGetRequests { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Request PDUs which + have been generated by the SNMP protocol entity."; + } + + leaf snmpOutGetNexts { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Next PDUs which have + been generated by the SNMP protocol entity."; + } + + leaf snmpOutSetRequests { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Set-Request PDUs which + have been generated by the SNMP protocol entity."; + } + + leaf snmpOutGetResponses { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Get-Response PDUs which + have been generated by the SNMP protocol entity."; + } + + leaf snmpOutTraps { + type yang:counter32; + config false; + status obsolete; + description + "The total number of SNMP Trap PDUs which have + been generated by the SNMP protocol entity."; + } + + leaf snmpEnableAuthenTraps { + type enumeration { + enum enabled { value 1; } + enum disabled { value 2; } + } + config true; + description + "Indicates whether the SNMP entity is permitted to + generate authenticationFailure traps. The value of this + object overrides any configuration information; as such, + it provides a means whereby all authenticationFailure + traps may be disabled. + + Note that it is strongly recommended that this object + be stored in non-volatile memory so that it remains + constant across re-initializations of the network + management system."; + } + + leaf snmpSilentDrops { + type yang:counter32; + config false; + description + "The total number of Confirmed Class PDUs (such as + GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the size of a reply + containing an alternate Response Class PDU (such as a + Response-PDU) with an empty variable-bindings field + was greater than either a local constraint or the + maximum message size associated with the originator of + the request."; + } + + leaf snmpProxyDrops { + type yang:counter32; + config false; + description + "The total number of Confirmed Class PDUs + (such as GetRequest-PDUs, GetNextRequest-PDUs, + GetBulkRequest-PDUs, SetRequest-PDUs, and + InformRequest-PDUs) delivered to the SNMP entity which + were silently dropped because the transmission of + the (possibly translated) message to a proxy target + failed in a manner (other than a time-out) such that + no Response Class PDU (such as a Response-PDU) could + be returned."; + } + } + + container snmpTrap { + + leaf snmpTrapOID { + type yang:object-identifier; + config false; + description + "The authoritative identification of the notification + currently being sent. This variable occurs as + the second varbind in every SNMPv2-Trap-PDU and + InformRequest-PDU."; + } + + leaf snmpTrapEnterprise { + type yang:object-identifier; + config false; + description + "The authoritative identification of the enterprise + associated with the trap currently being sent. When an + SNMP proxy agent is mapping an RFC1157 Trap-PDU + into a SNMPv2-Trap-PDU, this variable occurs as the + last varbind."; + } + } + + container snmpSet { + + leaf snmpSetSerialNo { + type smiv2:TestAndIncr; + config true; + description + "An advisory lock used to allow several cooperating + command generator applications to coordinate their + use of the SNMP set operation. + + This object is used for coarse-grain coordination. + To achieve fine-grain coordination, one or more similar + objects might be defined within each MIB group, as + appropriate."; + } + } + + notification coldStart { + description + "A coldStart trap signifies that the SNMP entity, + supporting a notification originator application, is + reinitializing itself and that its configuration may + have been altered."; + + } + + notification warmStart { + description + "A warmStart trap signifies that the SNMP entity, + supporting a notification originator application, + is reinitializing itself such that its configuration + is unaltered."; + + } + + notification authenticationFailure { + description + "An authenticationFailure trap signifies that the SNMP + entity has received a protocol message that is not + properly authenticated. While all implementations + of SNMP entities MAY be capable of generating this + trap, the snmpEnableAuthenTraps object indicates + whether this trap will be generated."; + + } +} /* end of module SNMPv2-MIB */ diff --git a/test/mibs/LIBSMI-TEST-001-MIB b/test/mibs/LIBSMI-TEST-001-MIB new file mode 100644 index 0000000..0b4102a --- /dev/null +++ b/test/mibs/LIBSMI-TEST-001-MIB @@ -0,0 +1,42 @@ +LIBSMI-TEST-001-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest001Mib MODULE-IDENTITY + LAST-UPDATED "199906101500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsersto detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser might complain about the fact, that this + module contains no definitions besides this MODULE-IDENTITY + construct. + + The libsmi parser is expected to report: + " + REVISION "199906101500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 1 } + +END diff --git a/test/mibs/LIBSMI-TEST-002-MIB b/test/mibs/LIBSMI-TEST-002-MIB new file mode 100644 index 0000000..16a1e69 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-002-MIB @@ -0,0 +1,45 @@ +LIBSMI-TEST-002-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest002MibJunk OBJECT IDENTIFIER ::= { testMib 2 1 } + +libsmiTest002Mib MODULE-IDENTITY + LAST-UPDATED "199906101500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsersto detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that the + MODULE-IDENTITY construct in this module is not the first + definition. + + The libsmi parser is expected to report: +LIBSMI-TEST-002-MIB:11: MODULE-IDENTITY clause must be the first declaration in a module + " + REVISION "199906101500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 2 } + +END diff --git a/test/mibs/LIBSMI-TEST-003-MIB b/test/mibs/LIBSMI-TEST-003-MIB new file mode 100644 index 0000000..7f316f4 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-003-MIB @@ -0,0 +1,58 @@ +LIBSMI-TEST-003-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest003Mib MODULE-IDENTITY + LAST-UPDATED "199906101500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsersto detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that this + module contains more than exactly one MODULE-IDENTITY + construct. + + The libsmi parser is expected to report: +LIBSMI-TEST-003-MIB:45: more than one MODULE-IDENTITY clause in SMIv2 MIB +LIBSMI-TEST-003-MIB:45: MODULE-IDENTITY clause must be the first declaration in a module +LIBSMI-TEST-003-MIB:53: revision not in reverse chronological order + " + REVISION "199906101500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 3 } + +libsmiTest003MibJunk MODULE-IDENTITY + LAST-UPDATED "199906101500Z" + ORGANIZATION + "junk" + CONTACT-INFO + "junk" + DESCRIPTION + "junk" + REVISION "199906101500Z" + DESCRIPTION + "junk" + ::= { testMib 3 1 } + +END diff --git a/test/mibs/LIBSMI-TEST-004-MIB b/test/mibs/LIBSMI-TEST-004-MIB new file mode 100644 index 0000000..6efd670 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-004-MIB @@ -0,0 +1,45 @@ +LIBSMI-TEST-004-MIB DEFINITIONS ::= BEGIN + +IMPORTS + OBJECT-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest004Mib OBJECT-IDENTITY +-- LAST-UPDATED "199906101500Z" +-- ORGANIZATION +-- "TU Braunschweig" +-- CONTACT-INFO +-- " Frank Strauss +-- +-- Postal: TU Braunschweig +-- Bueltenweg 74/75 +-- 38106 Braunschweig +-- Germany +-- +-- Phone: +49 531 391-3283 +-- EMail: strauss@ibr.cs.tu-bs.de +-- http://www.ibr.cs.tu-bs.de/~strauss/" + STATUS current + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsersto detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that this + module contains no MODULE-IDENTITY construct. Note, that + this information is therefore stored in an OBJECT-IDENTITY + DESCRIPTION clause. + + The libsmi parser is expected to report: +LIBSMI-TEST-004-MIB:45: missing MODULE-IDENTITY clause in SMIv2 MIB + " +-- REVISION "199906101500Z" +-- DESCRIPTION +-- "Initial Revision." + ::= { testMib 4 } + +END diff --git a/test/mibs/LIBSMI-TEST-005-MIB b/test/mibs/LIBSMI-TEST-005-MIB new file mode 100644 index 0000000..ae7bbdd --- /dev/null +++ b/test/mibs/LIBSMI-TEST-005-MIB @@ -0,0 +1,43 @@ +LIBSMI-TEST-005-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest005Mib MODULE-IDENTITY + LAST-UPDATED "199906221500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser might complain about the fact, that the + OBJECT-TYPE macro is imported though it's not used. + + The libsmi parser is expected to report: + +LIBSMI-TEST-005-MIB:4: warning: identifier `OBJECT-TYPE' imported from module `SNMPv2-SMI' is never used + " + REVISION "199906221500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 5 } + +END diff --git a/test/mibs/LIBSMI-TEST-006-MIB b/test/mibs/LIBSMI-TEST-006-MIB new file mode 100644 index 0000000..7b41892 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-006-MIB @@ -0,0 +1,40 @@ +LIBSMI-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest006Mib MODULE-IDENTITY + LAST-UPDATED "199906171500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that the + MODULE-IDENTITY macro is not imported though it's used. + + The libsmi parser is expected to report: +LIBSMI-TEST-006-MIB:7: macro `MODULE-IDENTITY' has not been imported from module `SNMPv2-SMI' + " + REVISION "199906171500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 6 } + +END diff --git a/test/mibs/LIBSMI-TEST-007-MIB b/test/mibs/LIBSMI-TEST-007-MIB new file mode 100644 index 0000000..626514f --- /dev/null +++ b/test/mibs/LIBSMI-TEST-007-MIB @@ -0,0 +1,46 @@ +LIBSMI-TEST-007-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest007Mib MODULE-IDENTITY + LAST-UPDATED "199906221500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + A MIB parser should complain about the fact, that `mib-2' + is used in the definition of `libsmiTest007Junk', but not + known (neither imported, nor defined). + + The libsmi parser is expected to report: +LIBSMI-TEST-007-MIB:44: unknown object identifier label `mib-2' + " + REVISION "199906221500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 7 } + +libsmiTest007Junk OBJECT IDENTIFIER + ::= { mib-2 42 } + +END diff --git a/test/mibs/LIBSMI-TEST-008-MIB b/test/mibs/LIBSMI-TEST-008-MIB new file mode 100644 index 0000000..8ff90a7 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-008-MIB @@ -0,0 +1,204 @@ +LIBSMI-TEST-008-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest008Mib MODULE-IDENTITY + LAST-UPDATED "200005291500Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + The MIB parser should complain about improper sub-typing by + checking the rules in RFC 2578 Appendix A and 'oral rules' + that are not specified in the SMIv2. + + The libsmi parser is expected to report: +LIBSMI-TEST-008-MIB:86: warning: named numbers not in ascending order +LIBSMI-TEST-008-MIB:94: warning: named numbers not in ascending order +LIBSMI-TEST-008-MIB:133: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:139: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:144: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:144: warning: named numbers not in ascending order +LIBSMI-TEST-008-MIB:152: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:152: warning: named numbers not in ascending order +LIBSMI-TEST-008-MIB:160: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:168: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:176: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-008-MIB:77: warning: current type `Red' is not referenced in this module +LIBSMI-TEST-008-MIB:77: textual convention `Red' can not be derived from the textual convention `Color' +LIBSMI-TEST-008-MIB:102: named number `yellow(4)' illegal in sub-type of `Color' +LIBSMI-TEST-008-MIB:110: named number `red(2)' illegal in sub-type of `Color' +LIBSMI-TEST-008-MIB:118: named number `rot(1)' illegal in sub-type of `Color' +LIBSMI-TEST-008-MIB:135: warning: current type `FileAccess' is not referenced in this module +LIBSMI-TEST-008-MIB:135: textual convention `FileAccess' can not be derived from the textual convention `Access' +LIBSMI-TEST-008-MIB:160: named number `create' illegal in sub-type of `Access' +LIBSMI-TEST-008-MIB:168: named number `read' illegal in sub-type of `Access' +LIBSMI-TEST-008-MIB:176: named number `lesen' illegal in sub-type of `Access' + " + REVISION "200005291500Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 8 } + +-- +-- Test cases for enumeration sub-typing: +-- + +Color ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "." + SYNTAX INTEGER { red(1), green(2), blue(3) } + +Red ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "." + SYNTAX Color { red(1) } + +enumTests OBJECT IDENTIFIER ::= { libsmiTest008Mib 1 } + +enumTest1 OBJECT-TYPE + SYNTAX Color { blue(3), red(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid sub-typing with different order." + ::= { enumTests 1 } + +enumTest2 OBJECT-TYPE + SYNTAX Color { red(1), blue(3), green(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid, although equivalent to the original type." + ::= { enumTests 2 } + +enumTest3 OBJECT-TYPE + SYNTAX Color { red(1), yellow(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since yellow(4) is not defined in the base type." + ::= { enumTests 3 } + +enumTest4 OBJECT-TYPE + SYNTAX Color { red(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since red is defined as 1 and not 2." + ::= { enumTests 4 } + +enumTest5 OBJECT-TYPE + SYNTAX Color { rot(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since rot is defined as red(1)." + ::= { enumTests 5 } + +-- +-- Test cases for bits sub-typing: +-- + +Access ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "junk" + SYNTAX BITS { read(1), write(2), execute(3) } + +FileAccess ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "junk" + SYNTAX Access { read(1), write(2) } + +bitsTests OBJECT IDENTIFIER ::= { libsmiTest008Mib 2 } + +bitsTest1 OBJECT-TYPE + SYNTAX Access { write(2), read(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid sub-typing with different order." + ::= { bitsTests 1 } + +bitsTest2 OBJECT-TYPE + SYNTAX Access { write(2), execute(3), read(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Valid, although equivalent to the original type." + ::= { bitsTests 2 } + +bitsTest3 OBJECT-TYPE + SYNTAX Access { read(1), create(4) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since create(4) is not defined in the base type." + ::= { bitsTests 3 } + +bitsTest4 OBJECT-TYPE + SYNTAX Access { read(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since read is defined as 1 and not 2." + ::= { bitsTests 4 } + +bitsTest5 OBJECT-TYPE + SYNTAX Access { lesen(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid, since lesen is defined as red(1)." + ::= { bitsTests 5 } + +-- +-- Conformance statements. +-- + +libsmiTest008Group OBJECT-GROUP + OBJECTS + { enumTest1, enumTest2, enumTest3, enumTest4, enumTest5, + bitsTest1, bitsTest2, bitsTest3, bitsTest4, bitsTest5 } + STATUS current + DESCRIPTION + "All object types." + ::= { libsmiTest008Mib 3 } + +libsmiTest008Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "All object types." + MODULE -- this module + MANDATORY-GROUPS { libsmiTest008Group } + ::= { libsmiTest008Mib 4 } + +END diff --git a/test/mibs/LIBSMI-TEST-009-MIB b/test/mibs/LIBSMI-TEST-009-MIB new file mode 100644 index 0000000..39fd6ab --- /dev/null +++ b/test/mibs/LIBSMI-TEST-009-MIB @@ -0,0 +1,134 @@ +LIBSMI-TEST-009-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest009Mib MODULE-IDENTITY + LAST-UPDATED "200005300900Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + The MIB parser should complain about improper number and + bits enumerations. + + The libsmi parser is expected to report: +LIBSMI-TEST-009-MIB:92: warning: named numbers not in ascending order +LIBSMI-TEST-009-MIB:102: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:114: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:120: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:120: warning: named numbers not in ascending order +LIBSMI-TEST-009-MIB:126: warning: named bit `yellow(128)' may cause interoperability or implementation problems +LIBSMI-TEST-009-MIB:126: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:132: named bit `yellow(524280)' exceeds maximum bit position +LIBSMI-TEST-009-MIB:132: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-009-MIB:70: warning: current type `EnumTcTest1' is not referenced in this module +LIBSMI-TEST-009-MIB:76: warning: current type `EnumTcTest2' is not referenced in this module +LIBSMI-TEST-009-MIB:82: warning: current type `EnumTcTest3' is not referenced in this module +LIBSMI-TEST-009-MIB:82: redefinition of name `red' in number enumeration +LIBSMI-TEST-009-MIB:88: warning: current type `EnumTcTest4' is not referenced in this module +LIBSMI-TEST-009-MIB:88: redefinition of number `3' in number enumeration +LIBSMI-TEST-009-MIB:98: warning: current type `BitsTcTest1' is not referenced in this module +LIBSMI-TEST-009-MIB:104: warning: current type `BitsTcTest2' is not referenced in this module +LIBSMI-TEST-009-MIB:110: warning: current type `BitsTcTest3' is not referenced in this module +LIBSMI-TEST-009-MIB:110: redefinition of name `red' in named bits list +LIBSMI-TEST-009-MIB:116: warning: current type `BitsTcTest4' is not referenced in this module +LIBSMI-TEST-009-MIB:116: redefinition of number `3' in named bits list +LIBSMI-TEST-009-MIB:122: warning: current type `BitsTcTest5' is not referenced in this module +LIBSMI-TEST-009-MIB:128: warning: current type `BitsTcTest6' is not referenced in this module + " + REVISION "200005300900Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 9 } + +-- +-- Test cases for number enumerations: +-- + +EnumTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid enumeration." + SYNTAX INTEGER { red(1), green(2), blue(3) } + +EnumTcTest2 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid enumeration." + SYNTAX INTEGER { none(-1), red(1), green(2), blue(3) } + +EnumTcTest3 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid enumeration: redefinition of a name." + SYNTAX INTEGER { none(-1), red(1), green(2), blue(3), red(4) } + +EnumTcTest4 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid enumeration: redefinition of a number." + SYNTAX INTEGER { none(-1), red(1), green(2), blue(3), yellow(3) } + +-- +-- Test cases for named bits lists: +-- + +BitsTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid bits enumeration." + SYNTAX BITS { red(1), green(2), blue(3) } + +BitsTcTest2 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid bits enumeration." + SYNTAX BITS { none(0), red(1), green(2), blue(3) } + +BitsTcTest3 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid bits enumeration: redefinition of a name." + SYNTAX BITS { red(1), green(2), blue(3), red(4) } + +BitsTcTest4 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid bits enumeration: redefinition of a number." + SYNTAX BITS { red(1), green(2), blue(3), yellow(3) } + +BitsTcTest5 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid bits enumeration: number may cause interoperability problems." + SYNTAX BITS { red(1), green(2), blue(3), yellow(128) } + +BitsTcTest6 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Invalid bits enumeration: number too large to represent." + SYNTAX BITS { red(1), green(2), blue(3), yellow(524280) } + +END diff --git a/test/mibs/LIBSMI-TEST-010-MIB b/test/mibs/LIBSMI-TEST-010-MIB new file mode 100644 index 0000000..a22efe7 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-010-MIB @@ -0,0 +1,140 @@ +LIBSMI-TEST-010-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest010Mib MODULE-IDENTITY + LAST-UPDATED "200011081000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + The MIB parser should complain about improper subtyping. + + The libsmi parser is expected to report: +LIBSMI-TEST-010-MIB:68: warning: first bit (bit zero) has no name assigned +LIBSMI-TEST-010-MIB:81: illegal size restriction for non-octet-string parent type `EnumTcTest1' +LIBSMI-TEST-010-MIB:89: illegal range restriction for non-numerical parent type `EnumTcTest1' +LIBSMI-TEST-010-MIB:97: illegal size restriction for non-octet-string parent type `BitsTcTest1' +LIBSMI-TEST-010-MIB:105: illegal range restriction for non-numerical parent type `BitsTcTest1' +LIBSMI-TEST-010-MIB:113: illegal enumeration or bits restriction for non-enumeration-or-bits parent type `OctetsStringTcTest1' +LIBSMI-TEST-010-MIB:58: warning: current type `EnumTcTest1' is not referenced in this module +LIBSMI-TEST-010-MIB:64: warning: current type `BitsTcTest1' is not referenced in this module +LIBSMI-TEST-010-MIB:70: warning: current type `OctetsStringTcTest1' is not referenced in this module +LIBSMI-TEST-010-MIB:70: warning: type `OctetsStringTcTest1' has no format specification + " + REVISION "200011081000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 10 } + +-- +-- Some valid TC definitions: +-- + +EnumTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid enumeration." + SYNTAX INTEGER { red(1), green(2), blue(3) } + +BitsTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid bits enumeration." + SYNTAX BITS { red(1), green(2), blue(3) } + +OctetsStringTcTest1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid octet string size restriction." + SYNTAX OCTET STRING (SIZE (16)) + +-- +-- Test cases for improper subtyping of TCs: +-- + +test1 OBJECT-TYPE + SYNTAX EnumTcTest1 (SIZE (15)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on an enumeration." + ::= { libsmiTest010Mib 1 } + +test2 OBJECT-TYPE + SYNTAX EnumTcTest1 (0..31) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on an enumeration." + ::= { libsmiTest010Mib 2 } + +test3 OBJECT-TYPE + SYNTAX BitsTcTest1 (SIZE (15)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on a bits enumeration." + ::= { libsmiTest010Mib 3 } + +test4 OBJECT-TYPE + SYNTAX BitsTcTest1 (0..31) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on a bits enumeration." + ::= { libsmiTest010Mib 4 } + +test5 OBJECT-TYPE + SYNTAX OctetsStringTcTest1 { red(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid enumeration restriction on an octet string." + ::= { libsmiTest010Mib 5 } + +-- +-- Conformance statements. +-- + +libsmiTest010Group OBJECT-GROUP + OBJECTS + { test1, test2, test3, test4, test5 } + STATUS current + DESCRIPTION + "All object types." + ::= { libsmiTest010Mib 6 } + +libsmiTest010Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "All object types." + MODULE -- this module + MANDATORY-GROUPS { libsmiTest010Group } + ::= { libsmiTest010Mib 7 } + +END diff --git a/test/mibs/LIBSMI-TEST-011-MIB b/test/mibs/LIBSMI-TEST-011-MIB new file mode 100644 index 0000000..a51ab37 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-011-MIB @@ -0,0 +1,131 @@ +LIBSMI-TEST-011-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + OBJECT-IDENTITY, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest011Mib MODULE-IDENTITY + LAST-UPDATED "200007051000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks the proper handling of forward references. + + The libsmi parser is expected to report: +LIBSMI-TEST-011-MIB:91: warning: exactly one index element of row `testEntry' must be accessible +LIBSMI-TEST-011-MIB:54: warning: current group `group1' is not referenced in this module +LIBSMI-TEST-011-MIB:61: warning: current group `group2' is not referenced in this module + " + REVISION "200007051000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 11 } + +-- +-- The following definitions are just written down in reverse order +-- than usual. The parser should not have any problems to deal with +-- them. +-- + +group1 OBJECT-GROUP + OBJECTS { testScalar1 } + STATUS current + DESCRIPTION + "junk" + ::= { testGroups 1 } + +group2 NOTIFICATION-GROUP + NOTIFICATIONS { testNotification1 } + STATUS current + DESCRIPTION + "junk" + ::= { testGroups 2 } + +testNotification1 NOTIFICATION-TYPE + OBJECTS { testScalar1 } + STATUS current + DESCRIPTION + "junk" + ::= { testNotifications 1 } + +testScalar1 OBJECT-TYPE + SYNTAX TestTc1 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Invalid size restriction on an enumeration." + ::= { testObjects 1 } + +testColumn1 OBJECT-TYPE + SYNTAX Integer32 (0..32) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "junk" + ::= { testEntry 1 } + +testEntry OBJECT-TYPE + SYNTAX TestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "junk" + INDEX { testColumn1 } + ::= { testTable 1 } + +testTable OBJECT-TYPE + SYNTAX SEQUENCE OF TestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "junk" + ::= { testObjects 2 } + +TestEntry ::= SEQUENCE { + testColumn1 Integer32 +} + +TestTc1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Valid enumeration." + SYNTAX INTEGER { red(1), green(2), blue(3) } + +textConst1 OBJECT-IDENTITY + STATUS current + DESCRIPTION + "junk" + ::= { testConstants 1 } + +testConstants OBJECT IDENTIFIER ::= { testDefinitions 3 } +testGroups OBJECT IDENTIFIER ::= { testDefinitions 2 } +testObjects OBJECT IDENTIFIER ::= { testDefinitions 1 } +testNotifications OBJECT IDENTIFIER ::= { testDefinitions 0 } + +testDefinitions OBJECT IDENTIFIER ::= { libsmiTest011Mib 1 } + +END diff --git a/test/mibs/LIBSMI-TEST-012-MIB b/test/mibs/LIBSMI-TEST-012-MIB new file mode 100644 index 0000000..c7b7daf --- /dev/null +++ b/test/mibs/LIBSMI-TEST-012-MIB @@ -0,0 +1,71 @@ +LIBSMI-TEST-012-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + OBJECT-GROUP + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest012Mib MODULE-IDENTITY + LAST-UPDATED "200011080000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for illegal underscore characters in + identifiers. + + The libsmi parser is expected to report: +LIBSMI-TEST-012-MIB:50: identifier `Foo_Bar' must not contain an underscore +LIBSMI-TEST-012-MIB:56: identifier `bar_foo' must not contain an underscore +LIBSMI-TEST-012-MIB:65: identifier `bar_foo' must not contain an underscore +LIBSMI-TEST-012-MIB:64: warning: current group `barFooGroup' is not referenced in this module +LIBSMI-TEST-012-MIB:50: warning: current type `Foo_Bar' is not referenced in this module + " + REVISION "200011080000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 12 } + +Foo_Bar ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "junk" + SYNTAX OBJECT IDENTIFIER + +bar_foo OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "junk" + ::= { libsmiTest012Mib 1 } + +barFooGroup OBJECT-GROUP + OBJECTS { bar_foo } + STATUS current + DESCRIPTION + "junk" + ::= { libsmiTest012Mib 2 } + +END diff --git a/test/mibs/LIBSMI-TEST-013-MIB b/test/mibs/LIBSMI-TEST-013-MIB new file mode 100644 index 0000000..bbb6cf0 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-013-MIB @@ -0,0 +1,93 @@ +LIBSMI-TEST-013-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest013Mib MODULE-IDENTITY + LAST-UPDATED "200109270000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for range normalization, thus there are + no errors expected for this module. However the parser might + complain about ranges not being in ascending order. + + The libsmi parser is expected to report: +LIBSMI-TEST-013-MIB:70: warning: ranges not in ascending order +LIBSMI-TEST-013-MIB:70: warning: ranges not in ascending order +LIBSMI-TEST-013-MIB:84: warning: ranges not in ascending order +LIBSMI-TEST-013-MIB:91: warning: ranges not in ascending order +LIBSMI-TEST-013-MIB:58: warning: current type `RangeType1' is not referenced in this module +LIBSMI-TEST-013-MIB:58: warning: type `RangeType1' has no format specification +LIBSMI-TEST-013-MIB:65: warning: current type `RangeType2' is not referenced in this module +LIBSMI-TEST-013-MIB:65: warning: type `RangeType2' has no format specification +LIBSMI-TEST-013-MIB:72: warning: current type `RangeType3' is not referenced in this module +LIBSMI-TEST-013-MIB:72: warning: type `RangeType3' has no format specification +LIBSMI-TEST-013-MIB:79: warning: current type `RangeType4' is not referenced in this module +LIBSMI-TEST-013-MIB:79: warning: type `RangeType4' has no format specification +LIBSMI-TEST-013-MIB:86: warning: current type `RangeType5' is not referenced in this module +LIBSMI-TEST-013-MIB:86: warning: type `RangeType5' has no format specification + " + REVISION "200109270000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 13 } + +RangeType1 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..3|5..6)." + SYNTAX Integer32 (1|2|3|5|6) + +RangeType2 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..3)." + SYNTAX Integer32 (3|2|1) + +RangeType3 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..5)." + SYNTAX Integer32 (1..3|4..5) + +RangeType4 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..5)." + SYNTAX Integer32 (4..5|1..3) + +RangeType5 ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "The ranges of this type are expected to be normalized + to (1..3|5..6)." + SYNTAX Integer32 (5..6|1..3) + +END diff --git a/test/mibs/LIBSMI-TEST-014-MIB b/test/mibs/LIBSMI-TEST-014-MIB new file mode 100644 index 0000000..edc2de4 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-014-MIB @@ -0,0 +1,317 @@ +LIBSMI-TEST-014-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + MacAddress + FROM SNMPv2-TC + OBJECT-GROUP + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest014Mib MODULE-IDENTITY + LAST-UPDATED "200109270000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for range normalization, thus there are + no errors expected for this module. However the parser might + complain about ranges not being in ascending order. + + The libsmi parser is expected to report: +LIBSMI-TEST-014-MIB:102: warning: index of row `barEntry' can exceed OID size limit by 1 subidentifier(s) +LIBSMI-TEST-014-MIB:186: warning: index of row `barImpliedEntry' can exceed OID size limit by 1 subidentifier(s) +LIBSMI-TEST-014-MIB:251: index element `fooStringName' of row `fooStringEntry' must have a size restriction +LIBSMI-TEST-014-MIB:230: warning: index of row `fooStringEntry' can exceed OID size limit by 65427 subidentifier(s) +LIBSMI-TEST-014-MIB:294: index element `fooOidName' of row `fooOidEntry' should but cannot have a size restriction +LIBSMI-TEST-014-MIB:273: warning: index of row `fooOidEntry' can exceed OID size limit by 20 subidentifier(s) +LIBSMI-TEST-014-MIB:309: warning: current group `fooOidBarGroup' is not referenced in this module + " + REVISION "200109270000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 14 } + +fooTable OBJECT-TYPE + SYNTAX SEQUENCE OF FooEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 1 } + +fooEntry OBJECT-TYPE + SYNTAX FooEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { fooAddr, fooName } + ::= { fooTable 1 } + +FooEntry ::= SEQUENCE { + fooAddr MacAddress, + fooName OCTET STRING, + fooData Integer32 +} + +fooAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooEntry 1 } + +fooName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..108)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooEntry 2 } + +fooData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { fooEntry 3 } + +barTable OBJECT-TYPE + SYNTAX SEQUENCE OF BarEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 2 } + +barEntry OBJECT-TYPE + SYNTAX BarEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { barAddr, barName } + ::= { barTable 1 } + +BarEntry ::= SEQUENCE { + barAddr MacAddress, + barName OCTET STRING, + barData Integer32 +} + +barAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { barEntry 1 } + +barName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..109)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { barEntry 2 } + +barData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { barEntry 3 } + +fooImpliedTable OBJECT-TYPE + SYNTAX SEQUENCE OF FooImpliedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 3 } + +fooImpliedEntry OBJECT-TYPE + SYNTAX FooImpliedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { fooImpliedAddr, IMPLIED fooImpliedName } + ::= { fooImpliedTable 1 } + +FooImpliedEntry ::= SEQUENCE { + fooImpliedAddr MacAddress, + fooImpliedName OCTET STRING, + fooImpliedData Integer32 +} + +fooImpliedAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooImpliedEntry 1 } + +fooImpliedName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..109)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooImpliedEntry 2 } + +fooImpliedData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { fooImpliedEntry 3 } + +barImpliedTable OBJECT-TYPE + SYNTAX SEQUENCE OF BarImpliedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 4 } + +barImpliedEntry OBJECT-TYPE + SYNTAX BarImpliedEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { barImpliedAddr, IMPLIED barImpliedName } + ::= { barImpliedTable 1 } + +BarImpliedEntry ::= SEQUENCE { + barImpliedAddr MacAddress, + barImpliedName OCTET STRING, + barImpliedData Integer32 +} + +barImpliedAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { barImpliedEntry 1 } + +barImpliedName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..110)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { barImpliedEntry 2 } + +barImpliedData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { barImpliedEntry 3 } + + + +fooStringTable OBJECT-TYPE + SYNTAX SEQUENCE OF FooStringEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 5 } + +fooStringEntry OBJECT-TYPE + SYNTAX FooStringEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { fooStringAddr, fooStringName } + ::= { fooStringTable 1 } + +FooStringEntry ::= SEQUENCE { + fooStringAddr MacAddress, + fooStringName OCTET STRING, + fooStringData Integer32 +} + +fooStringAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooStringEntry 1 } + +fooStringName OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooStringEntry 2 } + +fooStringData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { fooStringEntry 3 } + + +fooOidTable OBJECT-TYPE + SYNTAX SEQUENCE OF FooOidEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest014Mib 6 } + +fooOidEntry OBJECT-TYPE + SYNTAX FooOidEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { fooOidAddr, fooOidName } + ::= { fooOidTable 1 } + +FooOidEntry ::= SEQUENCE { + fooOidAddr MacAddress, + fooOidName OBJECT IDENTIFIER, + fooOidData Integer32 +} + +fooOidAddr OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooOidEntry 1 } + +fooOidName OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { fooOidEntry 2 } + +fooOidData OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { fooOidEntry 3 } + + +fooOidBarGroup OBJECT-GROUP + OBJECTS { fooData, barData, fooImpliedData, barImpliedData, + fooStringData, fooOidData } + STATUS current + DESCRIPTION + "junk" + ::= { libsmiTest014Mib 7 } + +END diff --git a/test/mibs/LIBSMI-TEST-015-MIB b/test/mibs/LIBSMI-TEST-015-MIB new file mode 100644 index 0000000..830de7c --- /dev/null +++ b/test/mibs/LIBSMI-TEST-015-MIB @@ -0,0 +1,91 @@ +LIBSMI-TEST-015-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + AGENT-CAPABILITIES + FROM SNMPv2-CONF + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest015Mib MODULE-IDENTITY + LAST-UPDATED "200206210000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for basic agent capabilities statement + support. There are no errors expected for this module. + + The libsmi parser is expected to report: + " + REVISION "200206210000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 15 } + + +agentcaps AGENT-CAPABILITIES + PRODUCT-RELEASE + "1.0" + STATUS current + DESCRIPTION + "This fictional system was deployed with these conditions." + + SUPPORTS + IF-MIB + INCLUDES { + ifGeneralInformationGroup, + ifFixedLengthGroup, + ifPacketGroup, + ifGeneralGroup, + ifStackGroup, + ifRcvAddressGroup, + linkUpDownNotificationsGroup + } + + VARIATION ifAdminStatus + SYNTAX + INTEGER { up(1), down(2) } + WRITE-SYNTAX + INTEGER { up(1), down(2) } + DESCRIPTION + "No ifAdminStatus support for testing(3)." + + VARIATION ifPromiscuousMode + ACCESS read-only + DESCRIPTION + "No support to set ifPromiscuousMode." + + VARIATION ifRcvAddressEntry + CREATION-REQUIRES + { ifRcvAddressType } + DESCRIPTION + "ifRcvAddressType is required in row creation operations. + We don't support the default value `volatile'." + + VARIATION ifRcvAddressType + DEFVAL { other } + DESCRIPTION + "Although in contradiction with the previous variation, this + sets the default value of ifRcvAddressType to `other'." + + ::= { libsmiTest015Mib 1 } + +END diff --git a/test/mibs/LIBSMI-TEST-016-MIB b/test/mibs/LIBSMI-TEST-016-MIB new file mode 100644 index 0000000..fb5c388 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-016-MIB @@ -0,0 +1,221 @@ +LIBSMI-TEST-016-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + InetAddress, InetAddressType, InetAddressIPv6z + FROM INET-ADDRESS-MIB + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest016Mib MODULE-IDENTITY + LAST-UPDATED "200211190000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for rules concerning Internet Address + TC as defined in RFC 3291. + + The libsmi parser is expected to report: +LIBSMI-TEST-016-MIB:186: warning: SEQUENCE element #2 `t4AddrType' does not match order of columnar objects under `t4Entry' +LIBSMI-TEST-016-MIB:90: warning: node `t1Data' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:126: warning: node `t2Data' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:162: warning: node `t3Data' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:207: warning: node `t4AddrType' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:200: warning: node `t4Addr' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:214: warning: node `t4AddrIPv6z' must be contained in at least one conformance group +LIBSMI-TEST-016-MIB:207: warning: `InetAddressType' should not be subtyped +LIBSMI-TEST-016-MIB:200: warning: `InetAddress' object should have an accompanied preceding `InetAdressType' object +LIBSMI-TEST-016-MIB:214: warning: `InetAddress' should be used instead of `InetAddressIPv6z' + " + REVISION "200211190000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 16 } + +-- test case 1 + +t1Table OBJECT-TYPE + SYNTAX SEQUENCE OF T1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest016Mib 1 } + +t1Entry OBJECT-TYPE + SYNTAX T1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t1AddrType } + ::= { t1Table 1 } + +T1Entry ::= SEQUENCE { + t1AddrType InetAddressType, + t1Addr InetAddress, + t1Data Integer32 +} + +t1AddrType OBJECT-TYPE + SYNTAX InetAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t1Entry 1 } + +t1Addr OBJECT-TYPE + SYNTAX InetAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t1Entry 2 } + +t1Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t1Entry 3 } + +-- test case 2 + +t2Table OBJECT-TYPE + SYNTAX SEQUENCE OF T2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest016Mib 2 } + +t2Entry OBJECT-TYPE + SYNTAX T2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t1AddrType, t2Addr } + ::= { t2Table 1 } + +T2Entry ::= SEQUENCE { + t2Addr InetAddress, + t2Data Integer32 +} + +t2Addr OBJECT-TYPE + SYNTAX InetAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t2Entry 2 } + +t2Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t2Entry 3 } + +-- test case 3 + +t3Table OBJECT-TYPE + SYNTAX SEQUENCE OF T3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest016Mib 3 } + +t3Entry OBJECT-TYPE + SYNTAX T3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + AUGMENTS { t1Entry } + ::= { t3Table 1 } + +T3Entry ::= SEQUENCE { + t3Addr InetAddress, + t3Data Integer32 +} + +t3Addr OBJECT-TYPE + SYNTAX InetAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t3Entry 2 } + +t3Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t3Entry 3 } + +-- test case 4 + +t4Table OBJECT-TYPE + SYNTAX SEQUENCE OF T4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest016Mib 4 } + +t4Entry OBJECT-TYPE + SYNTAX T4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t4Index } + ::= { t4Table 1 } + +T4Entry ::= SEQUENCE { + t4Index Integer32, + t4AddrType InetAddressType, + t4Addr InetAddress, + t4AddrIPv6z InetAddressIPv6z +} + +t4Index OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t4Entry 1 } + +t4Addr OBJECT-TYPE + SYNTAX InetAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 2 } + +t4AddrType OBJECT-TYPE + SYNTAX InetAddressType { ipv4(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 3 } + +t4AddrIPv6z OBJECT-TYPE + SYNTAX InetAddressIPv6z + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 4 } + +END diff --git a/test/mibs/LIBSMI-TEST-017-MIB b/test/mibs/LIBSMI-TEST-017-MIB new file mode 100644 index 0000000..a5b2023 --- /dev/null +++ b/test/mibs/LIBSMI-TEST-017-MIB @@ -0,0 +1,268 @@ +LIBSMI-TEST-017-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TransportAddress, TransportAddressIPv6z, + TransportAddressType, TransportDomain + FROM TRANSPORT-ADDRESS-MIB + testMib + FROM LIBSMI-TEST-MIB; + +libsmiTest017Mib MODULE-IDENTITY + LAST-UPDATED "200211190000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for rules concerning Internet Address + TC as defined in RFC 3291. + + The libsmi parser is expected to report: +LIBSMI-TEST-017-MIB:189: warning: SEQUENCE element #2 `t4AddrType' does not match order of columnar objects under `t4Entry' +LIBSMI-TEST-017-MIB:93: warning: node `t1Data' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:129: warning: node `t2Data' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:165: warning: node `t3Data' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:210: warning: node `t4AddrType' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:203: warning: node `t4Addr' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:217: warning: node `t4AddrIPv6z' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:254: warning: node `t5Domain' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:261: warning: node `t5Addr' must be contained in at least one conformance group +LIBSMI-TEST-017-MIB:210: warning: `TransportAddressType' should not be subtyped +LIBSMI-TEST-017-MIB:203: warning: `TransportAddress' object should have an accompanied preceding `TransportAdressType' or `TransportDomain' object +LIBSMI-TEST-017-MIB:217: warning: `TransportAddress' should be used instead of `TransportAddressIPv6z' + " + REVISION "200211190000Z" + DESCRIPTION + "Initial Revision." + ::= { testMib 17 } + +-- test case 1 + +t1Table OBJECT-TYPE + SYNTAX SEQUENCE OF T1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 1 } + +t1Entry OBJECT-TYPE + SYNTAX T1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t1AddrType } + ::= { t1Table 1 } + +T1Entry ::= SEQUENCE { + t1AddrType TransportAddressType, + t1Addr TransportAddress, + t1Data Integer32 +} + +t1AddrType OBJECT-TYPE + SYNTAX TransportAddressType + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t1Entry 1 } + +t1Addr OBJECT-TYPE + SYNTAX TransportAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t1Entry 2 } + +t1Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t1Entry 3 } + +-- test case 2 + +t2Table OBJECT-TYPE + SYNTAX SEQUENCE OF T2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 2 } + +t2Entry OBJECT-TYPE + SYNTAX T2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t1AddrType, t2Addr } + ::= { t2Table 1 } + +T2Entry ::= SEQUENCE { + t2Addr TransportAddress, + t2Data Integer32 +} + +t2Addr OBJECT-TYPE + SYNTAX TransportAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t2Entry 2 } + +t2Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t2Entry 3 } + +-- test case 3 + +t3Table OBJECT-TYPE + SYNTAX SEQUENCE OF T3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 3 } + +t3Entry OBJECT-TYPE + SYNTAX T3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + AUGMENTS { t1Entry } + ::= { t3Table 1 } + +T3Entry ::= SEQUENCE { + t3Addr TransportAddress, + t3Data Integer32 +} + +t3Addr OBJECT-TYPE + SYNTAX TransportAddress (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t3Entry 2 } + +t3Data OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t3Entry 3 } + +-- test case 4 + +t4Table OBJECT-TYPE + SYNTAX SEQUENCE OF T4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 4 } + +t4Entry OBJECT-TYPE + SYNTAX T4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t4Index } + ::= { t4Table 1 } + +T4Entry ::= SEQUENCE { + t4Index Integer32, + t4AddrType TransportAddressType, + t4Addr TransportAddress, + t4AddrIPv6z TransportAddressIPv6z +} + +t4Index OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t4Entry 1 } + +t4Addr OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 2 } + +t4AddrType OBJECT-TYPE + SYNTAX TransportAddressType { udpIpv4(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 3 } + +t4AddrIPv6z OBJECT-TYPE + SYNTAX TransportAddressIPv6z + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t4Entry 4 } + +-- test case 5 + +t5Table OBJECT-TYPE + SYNTAX SEQUENCE OF T5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { libsmiTest017Mib 5 } + +t5Entry OBJECT-TYPE + SYNTAX T5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + INDEX { t5Index } + ::= { t5Table 1 } + +T5Entry ::= SEQUENCE { + t5Index Integer32, + t5Domain TransportDomain, + t5Addr TransportAddress +} + +t5Index OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "..." + ::= { t5Entry 1 } + +t5Domain OBJECT-TYPE + SYNTAX TransportDomain + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t5Entry 2 } + +t5Addr OBJECT-TYPE + SYNTAX TransportAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "..." + ::= { t5Entry 3 } + +END diff --git a/test/mibs/LIBSMI-TEST-018-MIB b/test/mibs/LIBSMI-TEST-018-MIB new file mode 100644 index 0000000..83e6a8b --- /dev/null +++ b/test/mibs/LIBSMI-TEST-018-MIB @@ -0,0 +1,67 @@ +LIBSMI-TEST-018-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter64 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF + testMib FROM LIBSMI-TEST-MIB; + +libsmiTest018Mib MODULE-IDENTITY + LAST-UPDATED "200605040000Z" + ORGANIZATION + "International University Bremen" + CONTACT-INFO + " Juergen Schoenwaelder + + Postal: International University Bremen + Campus Ring 1 + 28759 Bremen + Germany + + Phone: +49 421 200-3587 + EMail: j.schoenwaelder@iu-bremen.de" + DESCRIPTION + "This MIB module contains one or more intentional errors, + and/or unusual contents. Its only purpose is to check + the abilities of MIB parsers to detect these circumstances. + + This MIB module is orginally written in SMIv2 format. + + This module checks for rules concerning Unsigned64 which + is a base type in SPPI but not in SMIv2. + + The libsmi parser is expected to report: +LIBSMI-TEST-018-MIB:41: warning: definition of identifier `Unsigned64' which is already a SMI or SPPI basetype + " + REVISION "200605040000Z" + DESCRIPTION + "Initial Revision" + ::= { testMib 18 } + +Unsigned64 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION "A fake unsigned 64 bit integer." + SYNTAX Counter64 + +t1 OBJECT-TYPE + SYNTAX Unsigned64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "junk" + ::= { libsmiTest018Mib 1 } + +libsmiTest018Group OBJECT-GROUP + OBJECTS { t1 } + STATUS current + DESCRIPTION "junk" + ::= { libsmiTest018Mib 2 } + +libsmiTest018Compliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "All object types." + MODULE -- this module + MANDATORY-GROUPS { libsmiTest018Group } + ::= { libsmiTest018Mib 3 } + +END diff --git a/test/mibs/LIBSMI-TEST-MIB b/test/mibs/LIBSMI-TEST-MIB new file mode 100644 index 0000000..affdb3c --- /dev/null +++ b/test/mibs/LIBSMI-TEST-MIB @@ -0,0 +1,41 @@ +LIBSMI-TEST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + ibr + FROM TUBS-SMI; + +testMib MODULE-IDENTITY + LAST-UPDATED "200002090000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module represents the toplevel module of + a collection of MIB modules to check the capabilities + of MIB parsers. + + Each test module is named LIBSMI-TEST-???-MIB, where ??? + is the test number. Each module's MODULE-IDENTITY + DESCRIPTION describes the expected or suggested behaviour + of MIB parsers when reading that module." + REVISION "200002090000Z" + DESCRIPTION + "Changed the module registration to resolve a conflict." + REVISION "199906101500Z" + DESCRIPTION + "Initial Revision." + ::= { ibr 9 } + +END diff --git a/test/mibs/Makefile.am b/test/mibs/Makefile.am new file mode 100644 index 0000000..1eebf04 --- /dev/null +++ b/test/mibs/Makefile.am @@ -0,0 +1,24 @@ +# +# Makefile.am -- +# +# Template to generate test/mibs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 3836 2006-05-04 08:29:12Z schoenw $ +# + +EXTRA_DIST = LIBSMI-TEST-MIB \ + LIBSMI-TEST-001-MIB LIBSMI-TEST-002-MIB \ + LIBSMI-TEST-003-MIB LIBSMI-TEST-004-MIB \ + LIBSMI-TEST-005-MIB LIBSMI-TEST-006-MIB \ + LIBSMI-TEST-007-MIB LIBSMI-TEST-008-MIB \ + LIBSMI-TEST-009-MIB LIBSMI-TEST-010-MIB \ + LIBSMI-TEST-011-MIB LIBSMI-TEST-012-MIB \ + LIBSMI-TEST-013-MIB LIBSMI-TEST-014-MIB \ + LIBSMI-TEST-015-MIB LIBSMI-TEST-016-MIB \ + LIBSMI-TEST-017-MIB LIBSMI-TEST-018-MIB + diff --git a/test/mibs/Makefile.in b/test/mibs/Makefile.in new file mode 100644 index 0000000..a5944f3 --- /dev/null +++ b/test/mibs/Makefile.in @@ -0,0 +1,364 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate test/mibs Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 3836 2006-05-04 08:29:12Z schoenw $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/mibs +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = LIBSMI-TEST-MIB \ + LIBSMI-TEST-001-MIB LIBSMI-TEST-002-MIB \ + LIBSMI-TEST-003-MIB LIBSMI-TEST-004-MIB \ + LIBSMI-TEST-005-MIB LIBSMI-TEST-006-MIB \ + LIBSMI-TEST-007-MIB LIBSMI-TEST-008-MIB \ + LIBSMI-TEST-009-MIB LIBSMI-TEST-010-MIB \ + LIBSMI-TEST-011-MIB LIBSMI-TEST-012-MIB \ + LIBSMI-TEST-013-MIB LIBSMI-TEST-014-MIB \ + LIBSMI-TEST-015-MIB LIBSMI-TEST-016-MIB \ + LIBSMI-TEST-017-MIB LIBSMI-TEST-018-MIB + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/mibs/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/mibs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/parser.test b/test/parser.test new file mode 100755 index 0000000..d62ce37 --- /dev/null +++ b/test/parser.test @@ -0,0 +1,29 @@ +#!/bin/sh + +rm -rf parser.out +mkdir parser.out + +abssrcdir=`cd .; pwd` + +RC=0 +SMIPATH=$SMIPATH:$abssrcdir/../mibs/ietf:$abssrcdir/mibs +export SMIPATH + +for n in $abssrcdir/mibs/LIBSMI-TEST-???-MIB ; do + mib=`basename $n` + echo -n "Checking $mib. " + cd parser.out + ../../tools/smilint -c/dev/null -l9 $n 2>&1 | sed -e "s/^.*\/$mib\(.*\)/$mib\1/" > $mib.err + cd .. + cat $abssrcdir/mibs/$mib | grep "^$mib:[0-9]*: " > parser.out/$mib.expect + cmp -s parser.out/$mib.err parser.out/$mib.expect + if [ $? -ne 0 ] ; then + RC=1 + echo "unexpected output. see parser.out directory." + else + WC=`cat parser.out/$mib.err | wc -l` + echo $WC " errors/warnings, ok." + fi +done + +exit ${RC} diff --git a/test/parser.test.in b/test/parser.test.in new file mode 100644 index 0000000..080e6dc --- /dev/null +++ b/test/parser.test.in @@ -0,0 +1,29 @@ +#!@BASH@ + +rm -rf parser.out +mkdir parser.out + +abssrcdir=`cd @srcdir@; pwd` + +RC=0 +SMIPATH=$SMIPATH:$abssrcdir/../mibs/ietf:$abssrcdir/mibs +export SMIPATH + +for n in $abssrcdir/mibs/LIBSMI-TEST-???-MIB ; do + mib=`basename $n` + echo -n "Checking $mib. " + cd parser.out + ../../tools/smilint -c/dev/null -l9 $n 2>&1 | sed -e "s/^.*\/$mib\(.*\)/$mib\1/" > $mib.err + cd .. + cat $abssrcdir/mibs/$mib | grep "^$mib:[0-9]*: " > parser.out/$mib.expect + cmp -s parser.out/$mib.err parser.out/$mib.expect + if [ $? -ne 0 ] ; then + RC=1 + echo "unexpected output. see parser.out directory." + else + WC=`cat parser.out/$mib.err | wc -l` + echo $WC " errors/warnings, ok." + fi +done + +exit ${RC} diff --git a/test/smidiff.test b/test/smidiff.test new file mode 100755 index 0000000..b0c1914 --- /dev/null +++ b/test/smidiff.test @@ -0,0 +1,44 @@ +#!/bin/sh +# +# smidiff.test -- +# +# smidiff test suite. For each file smidiff/.diff file +# an old version smidiff/.old and a new version smidiff/.new +# are compared. If one of the MIB versions is not found in the +# smidiff/ subdirectory it is looked up in the ../mibs/ repository. +# + +SMIPATH=.:../../mibs/ietf:../../mibs/iana:../../mibs/irtf:../../mibs/tubs +export SMIPATH + +RC=0 +FAILED="" +cd smidiff +for diff in *.diff ; do + basename=`echo $diff | sed -e 's/.diff//'` + if [ -f $basename.old ] ; then + oldmib=./$basename.old + else + oldmib=$basename + fi + if [ -f $basename.new ] ; then + newmib=./$basename.new + else + newmib=$basename + fi + echo "checking smidiff results for $basename." + ../../tools/smidiff $oldmib $newmib > $basename.result 2>/dev/null + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' $diff $basename.result > $basename.diffdiff + if [ ! -s $basename.diffdiff ] ; then + rm $basename.diffdiff $basename.result + else + FAILED=1 + fi +done + +if [ "$FAILED" ] ; then + echo "*** smidiff output differs, see smidiff/*.diffdiff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidiff.test.in b/test/smidiff.test.in new file mode 100644 index 0000000..f0afa57 --- /dev/null +++ b/test/smidiff.test.in @@ -0,0 +1,44 @@ +#!/bin/sh +# +# smidiff.test -- +# +# smidiff test suite. For each file smidiff/.diff file +# an old version smidiff/.old and a new version smidiff/.new +# are compared. If one of the MIB versions is not found in the +# smidiff/ subdirectory it is looked up in the ../mibs/ repository. +# + +SMIPATH=.:../../mibs/ietf:../../mibs/iana:../../mibs/irtf:../../mibs/tubs +export SMIPATH + +RC=0 +FAILED="" +cd smidiff +for diff in *.diff ; do + basename=`echo $diff | sed -e 's/.diff//'` + if [ -f $basename.old ] ; then + oldmib=./$basename.old + else + oldmib=$basename + fi + if [ -f $basename.new ] ; then + newmib=./$basename.new + else + newmib=$basename + fi + echo "checking smidiff results for $basename." + ../../tools/smidiff $oldmib $newmib > $basename.result 2>/dev/null + @DIFF@ $diff $basename.result > $basename.diffdiff + if [ ! -s $basename.diffdiff ] ; then + rm $basename.diffdiff $basename.result + else + FAILED=1 + fi +done + +if [ "$FAILED" ] ; then + echo "*** smidiff output differs, see smidiff/*.diffdiff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidiff/DISMAN-SCRIPT-MIB.diff b/test/smidiff/DISMAN-SCRIPT-MIB.diff new file mode 100644 index 0000000..1cb88e3 --- /dev/null +++ b/test/smidiff/DISMAN-SCRIPT-MIB.diff @@ -0,0 +1,79 @@ +../../mibs/ietf/DISMAN-SCRIPT-MIB:17 warning: contact of `DISMAN-SCRIPT-MIB' changed +../../mibs/ietf/DISMAN-SCRIPT-MIB:53 warning: revision `2001-08-21 00:00' added +./DISMAN-SCRIPT-MIB.old:17 info: previous definition of `DISMAN-SCRIPT-MIB' +../../mibs/ietf/DISMAN-SCRIPT-MIB:125 warning: description of object definition `smLangIndex' changed +./DISMAN-SCRIPT-MIB.old:87 info: previous definition of `smLangIndex' +../../mibs/ietf/DISMAN-SCRIPT-MIB:165 warning: description of object definition `smLangVendor' changed +./DISMAN-SCRIPT-MIB.old:126 info: previous definition of `smLangVendor' +../../mibs/ietf/DISMAN-SCRIPT-MIB:264 warning: description of object definition `smExtsnVendor' changed +./DISMAN-SCRIPT-MIB.old:226 info: previous definition of `smExtsnVendor' +../../mibs/ietf/DISMAN-SCRIPT-MIB:353 implicit type for `smScriptName' replaces type `SnmpAdminString' +./DISMAN-SCRIPT-MIB.old:311 info: previous definition of `smScriptName' +../../mibs/ietf/DISMAN-SCRIPT-MIB:354 size of type used in `smScriptName' changed from `(0..255)' to `(1..32)' +../../mibs/ietf/DISMAN-SCRIPT-MIB:381 warning: description of object definition `smScriptLanguage' changed +./DISMAN-SCRIPT-MIB.old:338 info: previous definition of `smScriptLanguage' +../../mibs/ietf/DISMAN-SCRIPT-MIB:400 warning: description of object definition `smScriptSource' changed +./DISMAN-SCRIPT-MIB.old:353 info: previous definition of `smScriptSource' +../../mibs/ietf/DISMAN-SCRIPT-MIB:542 warning: description of object definition `smScriptStorageType' changed +./DISMAN-SCRIPT-MIB.old:492 info: previous definition of `smScriptStorageType' +../../mibs/ietf/DISMAN-SCRIPT-MIB:585 warning: description of object definition `smScriptRowStatus' changed +./DISMAN-SCRIPT-MIB.old:530 info: previous definition of `smScriptRowStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:700 warning: description of object definition `smCodeRowStatus' changed +./DISMAN-SCRIPT-MIB.old:613 info: previous definition of `smCodeRowStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:808 default value added to `smLaunchScriptName' +../../mibs/ietf/DISMAN-SCRIPT-MIB:808 warning: description of object definition `smLaunchScriptName' changed +./DISMAN-SCRIPT-MIB.old:716 info: previous definition of `smLaunchScriptName' +../../mibs/ietf/DISMAN-SCRIPT-MIB:898 warning: description of object definition `smLaunchStart' changed +./DISMAN-SCRIPT-MIB.old:802 info: previous definition of `smLaunchStart' +../../mibs/ietf/DISMAN-SCRIPT-MIB:982 warning: description of object definition `smLaunchControl' changed +./DISMAN-SCRIPT-MIB.old:885 info: previous definition of `smLaunchControl' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1014 warning: named number `autostart' added to type used in `smLaunchAdminStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1014 warning: description of object definition `smLaunchAdminStatus' changed +./DISMAN-SCRIPT-MIB.old:911 info: previous definition of `smLaunchAdminStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1040 warning: named number `expired' added to type used in `smLaunchOperStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1040 warning: description of object definition `smLaunchOperStatus' changed +./DISMAN-SCRIPT-MIB.old:926 info: previous definition of `smLaunchOperStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1071 warning: description of object definition `smLaunchRunIndexNext' changed +./DISMAN-SCRIPT-MIB.old:945 info: previous definition of `smLaunchRunIndexNext' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1114 warning: description of object definition `smLaunchRowStatus' changed +./DISMAN-SCRIPT-MIB.old:988 info: previous definition of `smLaunchRowStatus' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1242 warning: description of object definition `smRunIndex' changed +./DISMAN-SCRIPT-MIB.old:1042 info: previous definition of `smRunIndex' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1289 warning: description of object definition `smRunLifeTime' changed +./DISMAN-SCRIPT-MIB.old:1090 info: previous definition of `smRunLifeTime' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1328 warning: description of object definition `smRunExpireTime' changed +./DISMAN-SCRIPT-MIB.old:1121 info: previous definition of `smRunExpireTime' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1412 warning: description of object definition `smRunControl' changed +./DISMAN-SCRIPT-MIB.old:1205 info: previous definition of `smRunControl' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1453 warning: description of object definition `smRunState' changed +./DISMAN-SCRIPT-MIB.old:1241 info: previous definition of `smRunState' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1494 warning: description of object definition `smRunError' changed +./DISMAN-SCRIPT-MIB.old:1271 info: previous definition of `smRunError' +../../mibs/ietf/DISMAN-SCRIPT-MIB:620 warning: column `smScriptError' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:635 warning: column `smScriptLastChange' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1137 warning: column `smLaunchError' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1149 warning: column `smLaunchLastChange' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1165 warning: column `smLaunchRowExpireTime' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1507 warning: column `smRunResultTime' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1519 warning: column `smRunErrorTime' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1548 warning: description of notification definition `smScriptResult' changed +./DISMAN-SCRIPT-MIB.old:1301 info: previous definition of `smScriptResult' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1562 warning: notification `smScriptException' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1765 warning: legal status change from `current' to `deprecated' for `smScriptGroup' +./DISMAN-SCRIPT-MIB.old:1384 info: previous definition of `smScriptGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1780 warning: legal status change from `current' to `deprecated' for `smLaunchGroup' +./DISMAN-SCRIPT-MIB.old:1411 info: previous definition of `smLaunchGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1796 warning: legal status change from `current' to `deprecated' for `smRunGroup' +./DISMAN-SCRIPT-MIB.old:1436 info: previous definition of `smRunGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1810 warning: legal status change from `current' to `deprecated' for `smNotificationsGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1810 warning: description of notification group definition `smNotificationsGroup' changed +./DISMAN-SCRIPT-MIB.old:1455 info: previous definition of `smNotificationsGroup' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1644 warning: group `smScriptGroup2' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1668 warning: group `smLaunchGroup2' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1688 warning: group `smRunGroup2' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1703 warning: group `smNotificationsGroup2' has been added +../../mibs/ietf/DISMAN-SCRIPT-MIB:1719 warning: legal status change from `current' to `deprecated' for `smCompliance' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1719 warning: description of module compliance definition `smCompliance' changed +./DISMAN-SCRIPT-MIB.old:1323 info: previous definition of `smCompliance' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1739 warning: object refinement for `smCodeText' added to `smCompliance' +../../mibs/ietf/DISMAN-SCRIPT-MIB:1583 warning: compliance `smCompliance2' has been added diff --git a/test/smidiff/DISMAN-SCRIPT-MIB.old b/test/smidiff/DISMAN-SCRIPT-MIB.old new file mode 100644 index 0000000..1d6c85b --- /dev/null +++ b/test/smidiff/DISMAN-SCRIPT-MIB.old @@ -0,0 +1,1465 @@ +DISMAN-SCRIPT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, + Integer32, Unsigned32, mib-2 + FROM SNMPv2-SMI + + RowStatus, TimeInterval, DateAndTime, StorageType, DisplayString + FROM SNMPv2-TC + + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP + FROM SNMPv2-CONF + + SnmpAdminString + FROM SNMP-FRAMEWORK-MIB; + +scriptMIB MODULE-IDENTITY + LAST-UPDATED "9902221800Z" + + + ORGANIZATION "IETF Distributed Management Working Group" + CONTACT-INFO + "David B. Levi + Nortel Networks + 4401 Great America Parkway + Santa Clara, CA 95052-8185 + U.S.A. + Tel: +1 423 686 0432 + E-mail: dlevi@nortelnetworks.com + + Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig + Germany + Tel: +49 531 391-3283 + E-mail: schoenw@ibr.cs.tu-bs.de" + DESCRIPTION + "This MIB module defines a set of objects that allow to + delegate management scripts to distributed managers." + ::= { mib-2 64 } + +-- +-- The groups defined within this MIB module: +-- + +smObjects OBJECT IDENTIFIER ::= { scriptMIB 1 } +smNotifications OBJECT IDENTIFIER ::= { scriptMIB 2 } +smConformance OBJECT IDENTIFIER ::= { scriptMIB 3 } + +-- +-- Script language and language extensions. +-- +-- This group defines tables which list the languages and the +-- language extensions supported by a script MIB implementation. +-- Languages are uniquely identified by object identifier values. +-- + +smLangTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmLangEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists supported script languages." + ::= { smObjects 1 } + +smLangEntry OBJECT-TYPE + SYNTAX SmLangEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular language." + INDEX { smLangIndex } + ::= { smLangTable 1 } + +SmLangEntry ::= SEQUENCE { + smLangIndex Integer32, + smLangLanguage OBJECT IDENTIFIER, + smLangVersion SnmpAdminString, + smLangVendor OBJECT IDENTIFIER, + smLangRevision SnmpAdminString, + smLangDescr SnmpAdminString +} + +smLangIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this language entry. + + The value is expected to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization. + + Note, the data type and the range of this object must be + consistent with the definition of smScriptLanguage." + ::= { smLangEntry 1 } + +smLangLanguage OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique identification of the language." + ::= { smLangEntry 2 } + +smLangVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language. The zero-length string + shall be used if the language does not have a version + number. + + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smLangEntry 3 } + +smLangVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifer which identifies the vendor who + provides the implementation of the language. This object + identifer SHALL point to the object identifier directly + below the enterprise object identifier {1 3 6 1 4 1} + allocated for the vendor. The value must be the object + identifier {0 0} if the vendor is not known." + ::= { smLangEntry 4 } + +smLangRevision OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language implementation. + The value of this object must be an empty string if + version number of the implementation is unknown. + + It is suggested that the value consist of one or more + decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smLangEntry 5 } + +smLangDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the language." + ::= { smLangEntry 6 } + + +smExtsnTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmExtsnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists supported language extensions." + ::= { smObjects 2 } + + +smExtsnEntry OBJECT-TYPE + SYNTAX SmExtsnEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular language extension." + INDEX { smLangIndex, smExtsnIndex } + ::= { smExtsnTable 1 } + +SmExtsnEntry ::= SEQUENCE { + smExtsnIndex Integer32, + smExtsnExtension OBJECT IDENTIFIER, + smExtsnVersion SnmpAdminString, + smExtsnVendor OBJECT IDENTIFIER, + smExtsnRevision SnmpAdminString, + smExtsnDescr SnmpAdminString +} + +smExtsnIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this language extension entry. + + The value is expected to remain constant at least from one + re-initialization of the entity's network management system + to the next re-initialization." + ::= { smExtsnEntry 1} + +smExtsnExtension OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The globally unique identification of the language + extension." + ::= { smExtsnEntry 2 } + +smExtsnVersion OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the language extension. + + + + It is suggested that the version number consist of one or + more decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smExtsnEntry 3 } + +smExtsnVendor OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An object identifer which identifies the vendor who + provides the implementation of the extension. The + object identifer value should point to the OID node + directly below the enterprise OID {1 3 6 1 4 1} + allocated for the vendor. The value must by the object + identifier {0 0} if the vendor is not known." + ::= { smExtsnEntry 4 } + +smExtsnRevision OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version number of the extension implementation. + The value of this object must be an empty string if + version number of the implementation is unknown. + + It is suggested that the value consist of one or more + decimal numbers separated by dots, where the first + number is called the major version number." + ::= { smExtsnEntry 5 } + +smExtsnDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual description of the language extension." + ::= { smExtsnEntry 6 } + + +-- +-- Scripts known by the Script MIB implementation. +-- +-- This group defines a table which lists all known scripts. +-- Scripts can be added and removed through manipulation of the +-- smScriptTable. +-- + + +smScriptObjects OBJECT IDENTIFIER ::= { smObjects 3 } + +smScriptTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmScriptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes locally known scripts." + ::= { smScriptObjects 1 } + +smScriptEntry OBJECT-TYPE + SYNTAX SmScriptEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular script. Every script that + is stored in non-volatile memory is required to appear in + this script table." + INDEX { smScriptOwner, smScriptName } + ::= { smScriptTable 1 } +SmScriptEntry ::= SEQUENCE { + smScriptOwner SnmpAdminString, + smScriptName SnmpAdminString, + smScriptDescr SnmpAdminString, + smScriptLanguage Integer32, + smScriptSource DisplayString, + smScriptAdminStatus INTEGER, + smScriptOperStatus INTEGER, + smScriptStorageType StorageType, + smScriptRowStatus RowStatus +} + +smScriptOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The manager who owns this row in the smScriptTable." + ::= { smScriptEntry 1 } + +smScriptName OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + script. This object allows an smScriptOwner to have multiple + entries in the smScriptTable. + + + This value of this object may be used to derive the name + (e.g. a file name) which is used by the Script MIB + implementation to access the script in non-volatile + storage. The details of this mapping are implementation + specific. However, the mapping needs to ensure that scripts + created by different owners with the same script name do not + map to the same name in non-volatile storage." + ::= { smScriptEntry 2 } + +smScriptDescr OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A description of the purpose of the script." + ::= { smScriptEntry 3 } + +smScriptLanguage OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object type identifies an entry in the + smLangTable which is used to execute this script. + The special value 0 may be used by hard-wired scripts + that can not be modified and that are executed by + internal functions. + + Note, the data type and the range of this object must be + consistent with the definition of smLangIndex." + ::= { smScriptEntry 4 } + +smScriptSource OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object either contains a reference to the script + source or an empty string. A reference must be given + in the form of a Uniform Resource Locator (URL) as + defined in RFC 2396. The allowed character sets and the + encoding rules defined in RFC 2396 section 2 apply. + + When the smScriptAdminStatus object is set to `enabled', + the Script MIB implementation will `pull' the script + source from the URL contained in this object if the URL + is not empty. + + + + An empty URL indicates that the script source is loaded + from local storage. The script is read from the smCodeTable + if the value of smScriptStorageType is volatile. Otherwise, + the script is read from non-volatile storage. + + Note: This document does not mandate implementation of any + specific URL scheme. A attempt to load a script from a + nonsupported URL scheme will cause the smScriptOperStatus + to report an `unknownProtocol' error. + + Set requests to change this object are invalid if the + value of smScriptOperStatus is `enabled', `editing', + `retrieving' or `compiling' and will result in an + inconsistentValue error." + DEFVAL { ''H } + ::= { smScriptEntry 5 } +smScriptAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + editing(3) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of + the script. See the definition of smScriptOperStatus for + a description of the values. + + When the smScriptAdminStatus object is set to `enabled' and + the smScriptOperStatus is `disabled' or one of the error + states, the Script MIB implementation will `pull' the script + source from the URL contained in the smScriptSource object + if the URL is not empty." + DEFVAL { disabled } + ::= { smScriptEntry 6 } + +smScriptOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2), + editing(3), + retrieving(4), + compiling(5), + noSuchScript(6), + accessDenied(7), + wrongLanguage(8), + wrongVersion(9), + + + compilationFailed(10), + noResourcesLeft(11), + unknownProtocol(12), + protocolFailure(13), + genericError(14) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The actual status of the script in the runtime system. The + value of this object is only meaningful when the value of the + smScriptRowStatus object is `active'. + + The smScriptOperStatus object may have the following values: + - `enabled' indicates that the script is available and can + be started by a launch table entry. + + - `disabled' indicates that the script can not be used. + + - `editing' indicates that the script can be modified in the + smCodeTable. + + - `retrieving' indicates that the script is currently being + loaded from non-volatile storage or a remote system. + + - `compiling' indicates that the script is currently being + compiled by the runtime system. + + - `noSuchScript' indicates that the script does not exist + at the smScriptSource. + + - `accessDenied' indicates that the script can not be loaded + from the smScriptSource due to a lack of permissions. + + - `wrongLanguage' indicates that the script can not be loaded + from the smScriptSource because of a language mismatch. + + - `wrongVersion' indicates that the script can not be loaded + from the smScriptSource because of a language version + mismatch. + + - `compilationFailed' indicates that the compilation failed. + + - `noResourcesLeft' indicates that the runtime system does + not have enough resources to load the script. + + - `unknownProtocol' indicates that the script could not be + loaded from the smScriptSource because the requested + + + protocol is not supported. + + - `protocolFailure' indicates that the script could not be + loaded from the smScriptSource because of a protocol + failure. + + - `genericError' indicates that the script could not be + loaded due to an error condition not listed above. + + The `retrieving' and `compiling' states are transient states + which will either lead to one of the error states or the + `enabled' state. The `disabled' and `editing' states are + administrative states which are only reached by explicit + management operations. + + All launch table entries that refer to this script table + entry shall have an smLaunchOperStatus value of `disabled' + when the value of this object is not `enabled'." + DEFVAL { disabled } + ::= { smScriptEntry 7 } + +smScriptStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines whether this row and the script + controlled by this row are kept in volatile storage and + lost upon reboot or if this row is backed up by + non-volatile or permanent storage. + + The script controlled by this row is written into local + non-volatile storage if the following condition becomes + true: + + (a) the URL contained in the smScriptSource object is empty + and + (b) the smScriptStorageType is `nonVolatile' + and + (c) the smScriptOperStatus is `enabled' + + Setting this object to `volatile' removes a script from + non-volatile storage if the script controlled by this row + has been in non-volatile storage before. Attempts to set + this object to permanent will always fail with an + inconsistentValue error. + + The value of smScriptStorageType is only meaningful if the + + + value of the corresponding RowStatus object is `active'. + + If smScriptStorageType has the value permanent(4), then all + objects whose MAX-ACCESS value is read-create must be + writable, with the exception of the smScriptStorageType and + smScriptRowStatus objects, which shall be read-only." + DEFVAL { volatile } + ::= { smScriptEntry 8 } + +smScriptRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + Changing the smScriptRowStatus from `active' to `notInService' + will remove the associated script from the runtime system. + The value of smScriptOperStatus will be reset to `disabled'. + + Deleting conceptual rows from this table includes the + deletion of all resources associated with this row. This + implies that a script stored in non-volatile storage is + removed from non-volatile storage. + + An entry may not exist in the `active' state unless all + required objects in the entry have appropriate values. Rows + that are not complete or not in service are not known by the + script runtime system. + + Attempts to `destroy' a row or to set a row `notInService' + while the script is executing will result in an + inconsistentValue error. + + Attempts to `destroy' a row or to set a row `notInService' + where the value of the smScriptStorageType object is + `permanent' or `readOnly' will result in an + inconsistentValue error." + ::= { smScriptEntry 9 } + + +-- +-- Access to script code via SNMP +-- +-- The smCodeTable allows script code to be read and modified +-- via SNMP. +-- + + +smCodeTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains the script code for scripts that are + written via SNMP write operations." + ::= { smScriptObjects 2 } + +smCodeEntry OBJECT-TYPE + SYNTAX SmCodeEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular fragment of a script." + INDEX { smScriptOwner, smScriptName, smCodeIndex } + ::= { smCodeTable 1 } + +SmCodeEntry ::= SEQUENCE { + smCodeIndex Unsigned32, + smCodeText OCTET STRING, + smCodeRowStatus RowStatus +} + +smCodeIndex OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value identifying this code fragment." + ::= { smCodeEntry 1 } + +smCodeText OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (1..1024)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The code that makes up a fragment of a script. The format + of this code fragment depends on the script language which + is identified by the associated smScriptLanguage object." + ::= { smCodeEntry 2 } + +smCodeRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + + + this table." + ::= { smCodeEntry 3 } + +-- +-- Script execution. +-- +-- This group defines tables which allow script execution to be +-- initiated, suspended, resumed, and terminated. It also provides +-- a mechanism for keeping a history of recent script executions +-- and their results. +-- + +smRunObjects OBJECT IDENTIFIER ::= { smObjects 4 } + +smLaunchTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmLaunchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes scripts that are ready + to be executed together with their parameters." + ::= { smRunObjects 1 } + +smLaunchEntry OBJECT-TYPE + SYNTAX SmLaunchEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry describing a particular executable script." + INDEX { smLaunchOwner, smLaunchName } + ::= { smLaunchTable 1 } + +SmLaunchEntry ::= SEQUENCE { + smLaunchOwner SnmpAdminString, + smLaunchName SnmpAdminString, + smLaunchScriptOwner SnmpAdminString, + smLaunchScriptName SnmpAdminString, + smLaunchArgument OCTET STRING, + smLaunchMaxRunning Unsigned32, + smLaunchMaxCompleted Unsigned32, + smLaunchLifeTime TimeInterval, + smLaunchExpireTime TimeInterval, + smLaunchStart Integer32, + smLaunchControl INTEGER, + smLaunchAdminStatus INTEGER, + smLaunchOperStatus INTEGER, + smLaunchRunIndexNext Integer32, + smLaunchStorageType StorageType, + + + smLaunchRowStatus RowStatus +} + +smLaunchOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "The manager who owns this row in the smLaunchTable. Every + instance of a running script started from a particular entry + in the smLaunchTable (i.e. entries in the smRunTable) will be + owned by the same smLaunchOwner used to index the entry in + the smLaunchTable. This owner is not necessarily the same as + the owner of the script itself (smLaunchScriptOwner)." + ::= { smLaunchEntry 1 } + +smLaunchName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (1..32)) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally-unique, administratively assigned name for this + launch table entry. This object allows an smLaunchOwner to + have multiple entries in the smLaunchTable. The smLaunchName + is an arbitrary name that must be different from any other + smLaunchTable entries with the same smLaunchOwner but can be + the same as other entries in the smLaunchTable with different + smLaunchOwner values. Note that the value of smLaunchName + is not related in any way to the name of the script being + launched." + ::= { smLaunchEntry 2 } + +smLaunchScriptOwner OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The value of this object in combination with the value of + smLaunchScriptName identifies the script that can be + launched from this smLaunchTable entry. Attempts to write + this object will fail with an inconsistentValue error if + the value of smLaunchOperStatus is `enabled'." + ::= { smLaunchEntry 3 } + +smLaunchScriptName OBJECT-TYPE + SYNTAX SnmpAdminString (SIZE (0..32)) + MAX-ACCESS read-create + + + STATUS current + DESCRIPTION + "The value of this object in combination with the value of + the smLaunchScriptOwner identifies the script that can be + launched from this smLaunchTable entry. Attempts to write + this objects will fail with an inconsistentValue error if + the value of smLaunchOperStatus is `enabled'." + ::= { smLaunchEntry 4 } + +smLaunchArgument OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The argument supplied to the script. When a script is + invoked, the value of this object is used to initialize + the smRunArgument object." + DEFVAL { ''H } + ::= { smLaunchEntry 5 } + +smLaunchMaxRunning OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of concurrently running scripts that may + be invoked from this entry in the smLaunchTable. Lowering the + current value of this object does not affect any scripts that + are already executing." + DEFVAL { 1 } + ::= { smLaunchEntry 6 } + +smLaunchMaxCompleted OBJECT-TYPE + SYNTAX Unsigned32 (1..4294967295) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The maximum number of finished scripts invoked from this + entry in the smLaunchTable allowed to be retained in the + smRunTable. Whenever the value of this object is changed + and whenever a script terminates, entries in the smRunTable + are deleted if necessary until the number of completed + scripts is smaller than the value of this object. Scripts + whose smRunEndTime value indicates the oldest completion + time are deleted first." + DEFVAL { 1 } + ::= { smLaunchEntry 7 } + + + +smLaunchLifeTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum amount of time a script launched + from this entry may run. The value of this object is used + to initialize the smRunLifeTime object when a script is + launched. Changing the value of an smLaunchLifeTime + instance does not affect scripts previously launched from + this entry." + DEFVAL { 360000 } + ::= { smLaunchEntry 8 } + +smLaunchExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "The default maximum amount of time information about a + script launched from this entry is kept in the smRunTable + after the script has completed execution. The value of + this object is used to initialize the smRunExpireTime + object when a script is launched. Changing the value of an + smLaunchExpireTime instance does not affect scripts + previously launched from this entry." + DEFVAL { 360000 } + ::= { smLaunchEntry 9 } + +smLaunchStart OBJECT-TYPE + SYNTAX Integer32 (0..2147483647) + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to start the execution of scripts. + When retrieved, the value will be the value of smRunIndex + for the last script that started execution by manipulating + this object. The value will be zero if no script started + execution yet. + + A script is started by setting this object to an unused + smRunIndex value. A new row in the smRunTable will be + created which is indexed by the value supplied by the + set-request in addition to the value of smLaunchOwner and + smLaunchName. An unused value can be obtained by reading + the smLaunchRunIndexNext object. + + + Setting this object to the special value 0 will start + the script with a self-generated smRunIndex value. The + consequence is that the script invoker has no reliable + way to determine the smRunIndex value for this script + invocation and that the invoker has therefore no way + to obtain the results from this script invocation. The + special value 0 is however useful for scheduled script + invocations. + + If this object is set, the following checks must be + performed: + + 1) The value of the smLaunchOperStatus object in this + entry of the smLaunchTable must be `enabled'. + 2) The values of smLaunchScriptOwner and + smLaunchScriptName of this row must identify an + existing entry in the smScriptTable. + 3) The value of smScriptOperStatus of this entry must + be `enabled'. + 4) The principal performing the set operation must have + read access to the script. This must be checked by + calling the isAccessAllowed abstract service interface + defined in RFC 2271 on the row in the smScriptTable + identified by smLaunchScriptOwner and smLaunchScriptName. + The isAccessAllowed abstract service interface must be + called on all columnar objects in the smScriptTable with + a MAX-ACCESS value different than `not-accessible'. The + test fails as soon as a call indicates that access is + not allowed. + 5) If the value provided by the set operation is not 0, + a check must be made that the value is currently not + in use. Otherwise, if the value provided by the set + operation is 0, a suitable unused value must be + generated. + 6) The number of currently executing scripts invoked + from this smLaunchTable entry must be less than + smLaunchMaxRunning. + + Attempts to start a script will fail with an + inconsistentValue error if one of the checks described + above fails. + + Otherwise, if all checks have been passed, a new entry + in the smRunTable will be created indexed by smLaunchOwner, + smLaunchName and the new value for smRunIndex. The value + of smLaunchArgument will be copied into smRunArgument, + the value of smLaunchLifeTime will be copied to + smRunLifeTime, and the value of smLaunchExpireTime + + + will be copied to smRunExpireTime. + + The smRunStartTime will be set to the current time and + the smRunState will be set to `initializing' before the + script execution is initiated in the appropriate runtime + system. + + Note, the data type and the range of this object must + be consistent with the smRunIndex object. Since this + object might be written from the scheduling MIB, the + data type Integer32 rather than Unsigned32 is used." + DEFVAL { 0 } + ::= { smLaunchEntry 10 } + +smLaunchControl OBJECT-TYPE + SYNTAX INTEGER { + abort(1), + suspend(2), + resume(3), + nop(4) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object is used to request a state change for all + running scripts in the smRunTable that were started from + this row in the smLaunchTable. + + Setting this object to abort(1), suspend(2) or resume(3) + will set the smRunControl object of all applicable rows + in the smRunTable to abort(1), suspend(2) or resume(3) + respectively. The phrase `applicable rows' means the set of + rows which were created from this entry in the smLaunchTable + and whose value of smRunState allows the corresponding + state change as described in the definition of the + smRunControl object. Setting this object to nop(4) has no + effect." + DEFVAL { nop } + ::= { smLaunchEntry 11 } + +smLaunchAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "The value of this object indicates the desired status of + this launch table entry." + DEFVAL { disabled } + ::= { smLaunchEntry 12 } + +smLaunchOperStatus OBJECT-TYPE + SYNTAX INTEGER { + enabled(1), + disabled(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the actual status of + this launch table entry. An `enabled' launch table + entry can be used to start scripts while a `disabled' + launch table entry will refuse any attempts to start + scripts. The value `enabled' requires that the + smLaunchRowStatus object is active. The value + `disabled' requires that there are no entries in the + smRunTable associated with this smLaunchTable entry." + DEFVAL { disabled } + ::= { smLaunchEntry 13 } + +smLaunchRunIndexNext OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This variable is used for creating rows in the smRunTable. + The value of this variable is a currently unused value + for smRunIndex, which can be written into the smLaunchStart + object associated with this row to launch a script. + + The value returned when reading this variable must be unique + for the smLaunchOwner and smLauchName associated with this + row. Subsequent attempts to read this variable must return + different values. + + This variable will return the special value 0 if no new rows + can be created. + + Note, the data type and the range of this object must be + consistent with the definition of smRunIndex." + ::= { smLaunchEntry 14 } + +smLaunchStorageType OBJECT-TYPE + SYNTAX StorageType + + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object defines if this row is kept in volatile storage + and lost upon reboot or if this row is backed up by stable + storage. + + The value of smLaunchStorageType is only meaningful if the + value of the corresponding RowStatus object is active. + + If smLaunchStorageType has the value permanent(4), then all + objects whose MAX-ACCESS value is read-create must be + writable, with the exception of the smLaunchStorageType and + smLaunchRowStatus objects, which shall be read-only." + DEFVAL { volatile } + ::= { smLaunchEntry 15 } + +smLaunchRowStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "A control that allows entries to be added and removed from + this table. + + Attempts to `destroy' a row or to set a row `notInService' + while scripts started from this launch table entry are + running will result in an inconsistentValue error. + + Attempts to `destroy' a row or to set a row `notInService' + where the value of the smLaunchStorageType object is + `permanent' or `readOnly' will result in an + inconsistentValue error." + ::= { smLaunchEntry 16 } + + +smRunTable OBJECT-TYPE + SYNTAX SEQUENCE OF SmRunEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table lists and describes scripts that are currently + running or have been running in the past." + ::= { smRunObjects 2 } + +smRunEntry OBJECT-TYPE + SYNTAX SmRunEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "An entry describing a particular running or finished + script." + INDEX { smLaunchOwner, smLaunchName, smRunIndex } + ::= { smRunTable 1 } + +SmRunEntry ::= SEQUENCE { + smRunIndex Integer32, + smRunArgument OCTET STRING, + smRunStartTime DateAndTime, + smRunEndTime DateAndTime, + smRunLifeTime TimeInterval, + smRunExpireTime TimeInterval, + smRunExitCode INTEGER, + smRunResult OCTET STRING, + smRunControl INTEGER, + smRunState INTEGER, + smRunError SnmpAdminString +} + +smRunIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The locally arbitrary, but unique identifier associated + with this running or finished script. This value must be + unique for all rows in the smRunTable with the same + smLaunchOwner and smLaunchName. + + Note, the data type and the range of this object must be + consistent with the definition of smLaunchRunIndexNext + and smLaunchStart." + ::= { smRunEntry 1 } + +smRunArgument OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The argument supplied to the script when it started." + DEFVAL { ''H } + ::= { smRunEntry 2 } + +smRunStartTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The date and time when the execution started. The value + '0000000000000000'H is returned if the script has not + started yet." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 3 } + +smRunEndTime OBJECT-TYPE + SYNTAX DateAndTime + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date and time when the execution terminated. The value + '0000000000000000'H is returned if the script has not + terminated yet." + DEFVAL { '0000000000000000'H } + ::= { smRunEntry 4 } + +smRunLifeTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object specifies how long the script can execute. + This object returns the remaining time that the script + may run. The object is initialized with the value of the + associated smLaunchLifeTime object and ticks backwards. + The script is aborted immediately when the value reaches 0. + + The value of this object may be set in order to increase or + reduce the remaining time that the script may run. Setting + this value to 0 will abort script execution immediately, + and, if the value of smRunExpireTime is also 0, will remove + this entry from the smRunTable once it has terminated. + + The value of smRunLifeTime reflects the real-time execution + time as seen by the outside world. The value of this object + will always be 0 for a script that finished execution, that + is smRunState has the value `terminated'. + + The value of smRunLifeTime does not change while a script + is suspended, that is smRunState has the value `suspended'. + Note, this does not affect set operations. It is legal to + modify smRunLifeTime via set operations while a script is + suspended." + ::= { smRunEntry 5 } + + +smRunExpireTime OBJECT-TYPE + SYNTAX TimeInterval + UNITS "centi-seconds" + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This value specifies how long this row can exist in the + smRunTable after the script has terminated. This object + returns the remaining time that the row may exist before it + is aged out. The object is initialized with the value of the + associated smLaunchExpireTime object and ticks backwards. The + entry in the smRunTable is destroyed when the value reaches 0 + and the smRunState has the value `terminated'. + + The value of this object may be set in order to increase or + reduce the remaining time that the row may exist. Setting + the value to 0 will destroy this entry as soon as the + smRunState has the value `terminated'." + ::= { smRunEntry 6 } + +smRunExitCode OBJECT-TYPE + SYNTAX INTEGER { + noError(1), + halted(2), + lifeTimeExceeded(3), + noResourcesLeft(4), + languageError(5), + runtimeError(6), + invalidArgument(7), + securityViolation(8), + genericError(9) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the reason why a + script finished execution. The smRunExitCode code may have + one of the following values: + + - `noError', which indicates that the script completed + successfully without errors; + + - `halted', which indicates that the script was halted + by a request from an authorized manager; + + - `lifeTimeExceeded', which indicates that the script + exited because a time limit was exceeded; + + + + - `noResourcesLeft', which indicates that the script + exited because it ran out of resources (e.g. memory); + + - `languageError', which indicates that the script exited + because of a language error (e.g. a syntax error in an + interpreted language); + + - `runtimeError', which indicates that the script exited + due to a runtime error (e.g. a division by zero); + + - `invalidArgument', which indicates that the script could + not be run because of invalid script arguments; + + - `securityViolation', which indicates that the script + exited due to a security violation; + + - `genericError', which indicates that the script exited + for an unspecified reason. + + If the script has not yet begun running, or is currently + running, the value will be `noError'." + DEFVAL { noError } + ::= { smRunEntry 7 } + +smRunResult OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The result value produced by the running script. Note that + the result may change while the script is executing." + DEFVAL { ''H } + ::= { smRunEntry 8 } + +smRunControl OBJECT-TYPE + SYNTAX INTEGER { + abort(1), + suspend(2), + resume(3), + nop(4) + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of this object indicates the desired status of the + script execution defined by this row. + + Setting this object to `abort' will abort execution if the + + + value of smRunState is `initializing', `executing', + `suspending', `suspended' or `resuming'. Setting this object + to `abort' when the value of smRunState is `aborting' or + `terminated' will result in an inconsistentValue error. + + Setting this object to `suspend' will suspend execution + if the value of smRunState is `executing'. Setting this + object to `suspend' will cause an inconsistentValue error + if the value of smRunState is not `executing'. + + Setting this object to `resume' will resume execution + if the value of smRunState is `suspending' or + `suspended'. Setting this object to `resume' will cause an + inconsistentValue error if the value of smRunState is + not `suspending' or `suspended'. + + Setting this object to nop(4) has no effect." + DEFVAL { nop } + ::= { smRunEntry 9 } + +smRunState OBJECT-TYPE + SYNTAX INTEGER { + initializing(1), + executing(2), + suspending(3), + suspended(4), + resuming(5), + aborting(6), + terminated(7) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of this object indicates the script's execution + status. If the script has been invoked but has not yet + begun execution, the value will be `initializing'. If the + script is running, the value will be `executing'. A script + which received a request to suspend execution but which + did not actually suspend execution will be `suspending'. + A script which has suspended execution will be `suspended'. + A script which received a request to resume execution but + which is not yet running is `resuming'. The resuming state + will finally lead to the `executing' state. A script which + received a request to abort execution but which is still + running is `aborting'. A script which stopped execution + is `terminated'." + ::= { smRunEntry 10 } + + + +smRunError OBJECT-TYPE + SYNTAX SnmpAdminString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This contains a descriptive error message if the script + terminates in an abnormally. An implementation must store a + descriptive error message in this object if the script exits + with the smRunExitCode `genericError'. + + The value of this object is the zero-length string as long + as the smRunExitCode has the value `noError'" + DEFVAL { ''H } + ::= { smRunEntry 11 } + +-- +-- Notifications. The definition of smTraps makes notification +-- registrations reversible (see STD 58, RFC 2578). +-- + +smTraps OBJECT IDENTIFIER ::= { smNotifications 0 } + +smScriptAbort NOTIFICATION-TYPE + OBJECTS { smRunExitCode, smRunEndTime, smRunError } + STATUS current + DESCRIPTION + "This notification is generated whenever a running script + terminates with an smRunExitCode unequal to `noError'." + ::= { smTraps 1 } + +smScriptResult NOTIFICATION-TYPE + OBJECTS { smRunResult } + STATUS current + DESCRIPTION + "This notification can be used by scripts to notify other + management applications about script results. It can be + used to notify managers about a script result. + + This notification is not automatically generated by the + script MIB implementation. It is the responsibility of + the executing script to emit this notification where it + is appropriate to do so." + ::= { smTraps 2 } + +-- conformance information +smCompliances OBJECT IDENTIFIER ::= { smConformance 1 } +smGroups OBJECT IDENTIFIER ::= { smConformance 2 } + + + +-- compliance statements + +smCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMP entities which implement + the script MIB." + MODULE -- this module + MANDATORY-GROUPS { + smLanguageGroup, smScriptGroup, smLaunchGroup, smRunGroup + } + GROUP smCodeGroup + DESCRIPTION + "The smCodeGroup is mandatory only for those implementations + that support the downloading of scripts via SNMP." + OBJECT smScriptSource + MIN-ACCESS read-only + DESCRIPTION + "The smScriptSource object is read-only for implementations + that are not able to download script code from a URL." + OBJECT smLaunchArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smLaunchArgument of 255 octets." + OBJECT smRunArgument + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunArgument of 255 octets." + OBJECT smRunResult + DESCRIPTION + "A compliant implementation has to support a minimum size + for smRunResult of 255 octets." + OBJECT smRunState + DESCRIPTION + "A compliant implementation does not have to support script + suspension and the smRunState `suspended'. Such an + implementation will change into the `suspending' state + when the smRunControl is set to `suspend' and remain in this + state until smRunControl is set to `resume' or the script + terminates." + ::= { smCompliances 1 } + +smLanguageGroup OBJECT-GROUP + OBJECTS { + smLangLanguage, + smLangVersion, + smLangVendor, + smLangRevision, + + + smLangDescr, + smExtsnExtension, + smExtsnVersion, + smExtsnVendor, + smExtsnRevision, + smExtsnDescr + } + STATUS current + DESCRIPTION + "A collection of objects providing information about the + capabilities of the scripting engine." + ::= { smGroups 1 } + +smScriptGroup OBJECT-GROUP + OBJECTS { + smScriptDescr, + smScriptLanguage, + smScriptSource, + smScriptAdminStatus, + smScriptOperStatus, + smScriptStorageType, + smScriptRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about + installed scripts." + ::= { smGroups 2 } + +smCodeGroup OBJECT-GROUP + OBJECTS { + smCodeText, + smCodeRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects used to download or modify scripts + by using SNMP set requests." + ::= { smGroups 3 } + +smLaunchGroup OBJECT-GROUP + OBJECTS { + smLaunchScriptOwner, + smLaunchScriptName, + smLaunchArgument, + smLaunchMaxRunning, + smLaunchMaxCompleted, + smLaunchLifeTime, + + + smLaunchExpireTime, + smLaunchStart, + smLaunchControl, + smLaunchAdminStatus, + smLaunchOperStatus, + smLaunchRunIndexNext, + smLaunchStorageType, + smLaunchRowStatus + } + STATUS current + DESCRIPTION + "A collection of objects providing information about scripts + that can be launched." + ::= { smGroups 4 } + +smRunGroup OBJECT-GROUP + OBJECTS { + smRunArgument, + smRunStartTime, + smRunEndTime, + smRunLifeTime, + smRunExpireTime, + smRunExitCode, + smRunResult, + smRunState, + smRunControl, + smRunError + } + STATUS current + DESCRIPTION + "A collection of objects providing information about running + scripts." + ::= { smGroups 5 } + +smNotificationsGroup NOTIFICATION-GROUP + NOTIFICATIONS { + smScriptAbort, + smScriptResult + } + STATUS current + DESCRIPTION + "The notifications emitted by the script MIB." + ::= { smGroups 6 } + +END diff --git a/test/smidiff/IF-MIB.diff b/test/smidiff/IF-MIB.diff new file mode 100644 index 0000000..8ca1472 --- /dev/null +++ b/test/smidiff/IF-MIB.diff @@ -0,0 +1,120 @@ +../../mibs/ietf/IF-MIB:16 warning: contact of `IF-MIB' changed +../../mibs/ietf/IF-MIB:35 warning: revision `2000-06-14 00:00' added +../../mibs/ietf/IF-MIB:39 warning: revision `1996-02-28 21:55' added +./IF-MIB.old:18 info: previous definition of `IF-MIB' +../../mibs/ietf/IF-MIB:60 warning: legal status change from `current' to `deprecated' for `OwnerString' +./IF-MIB.old:52 info: previous definition of `OwnerString' +../../mibs/ietf/IF-MIB:79 range `(1..2147483647)' added to type `InterfaceIndex' +../../mibs/ietf/IF-MIB:93 warning: type `InterfaceIndexOrZero' has been added +../../mibs/ietf/IF-MIB:185 range `(1..2147483647)' added to type used in `ifIndex' +../../mibs/ietf/IF-MIB:250 warning: description of object definition `ifPhysAddress' changed +./IF-MIB.old:220 info: previous definition of `ifPhysAddress' +../../mibs/ietf/IF-MIB:285 warning: named number `notPresent' added to type used in `ifOperStatus' +../../mibs/ietf/IF-MIB:285 warning: named number `lowerLayerDown' added to type used in `ifOperStatus' +../../mibs/ietf/IF-MIB:285 warning: description of object definition `ifOperStatus' changed +./IF-MIB.old:253 info: previous definition of `ifOperStatus' +../../mibs/ietf/IF-MIB:327 warning: description of object definition `ifInOctets' changed +./IF-MIB.old:293 info: previous definition of `ifInOctets' +../../mibs/ietf/IF-MIB:343 warning: description of object definition `ifInUcastPkts' changed +./IF-MIB.old:302 info: previous definition of `ifInUcastPkts' +../../mibs/ietf/IF-MIB:358 warning: description of object definition `ifInNUcastPkts' changed +./IF-MIB.old:312 info: previous definition of `ifInNUcastPkts' +../../mibs/ietf/IF-MIB:376 warning: description of object definition `ifInDiscards' changed +./IF-MIB.old:326 info: previous definition of `ifInDiscards' +../../mibs/ietf/IF-MIB:395 warning: description of object definition `ifInErrors' changed +./IF-MIB.old:338 info: previous definition of `ifInErrors' +../../mibs/ietf/IF-MIB:413 warning: description of object definition `ifInUnknownProtos' changed +./IF-MIB.old:352 info: previous definition of `ifInUnknownProtos' +../../mibs/ietf/IF-MIB:435 warning: description of object definition `ifOutOctets' changed +./IF-MIB.old:370 info: previous definition of `ifOutOctets' +../../mibs/ietf/IF-MIB:449 warning: description of object definition `ifOutUcastPkts' changed +./IF-MIB.old:379 info: previous definition of `ifOutUcastPkts' +../../mibs/ietf/IF-MIB:465 warning: description of object definition `ifOutNUcastPkts' changed +./IF-MIB.old:392 info: previous definition of `ifOutNUcastPkts' +../../mibs/ietf/IF-MIB:485 warning: description of object definition `ifOutDiscards' changed +./IF-MIB.old:407 info: previous definition of `ifOutDiscards' +../../mibs/ietf/IF-MIB:501 warning: description of object definition `ifOutErrors' changed +./IF-MIB.old:420 info: previous definition of `ifOutErrors' +../../mibs/ietf/IF-MIB:526 warning: description of object definition `ifSpecific' changed +./IF-MIB.old:440 info: previous definition of `ifSpecific' +../../mibs/ietf/IF-MIB:599 warning: description of object definition `ifName' changed +./IF-MIB.old:509 info: previous definition of `ifName' +../../mibs/ietf/IF-MIB:621 warning: description of object definition `ifInMulticastPkts' changed +./IF-MIB.old:530 info: previous definition of `ifInMulticastPkts' +../../mibs/ietf/IF-MIB:639 warning: description of object definition `ifInBroadcastPkts' changed +./IF-MIB.old:542 info: previous definition of `ifInBroadcastPkts' +../../mibs/ietf/IF-MIB:654 warning: description of object definition `ifOutMulticastPkts' changed +./IF-MIB.old:552 info: previous definition of `ifOutMulticastPkts' +../../mibs/ietf/IF-MIB:671 warning: description of object definition `ifOutBroadcastPkts' changed +./IF-MIB.old:565 info: previous definition of `ifOutBroadcastPkts' +../../mibs/ietf/IF-MIB:697 warning: description of object definition `ifHCInOctets' changed +./IF-MIB.old:587 info: previous definition of `ifHCInOctets' +../../mibs/ietf/IF-MIB:712 warning: description of object definition `ifHCInUcastPkts' changed +./IF-MIB.old:597 info: previous definition of `ifHCInUcastPkts' +../../mibs/ietf/IF-MIB:728 warning: description of object definition `ifHCInMulticastPkts' changed +./IF-MIB.old:608 info: previous definition of `ifHCInMulticastPkts' +../../mibs/ietf/IF-MIB:747 warning: description of object definition `ifHCInBroadcastPkts' changed +./IF-MIB.old:623 info: previous definition of `ifHCInBroadcastPkts' +../../mibs/ietf/IF-MIB:763 warning: description of object definition `ifHCOutOctets' changed +./IF-MIB.old:634 info: previous definition of `ifHCOutOctets' +../../mibs/ietf/IF-MIB:778 warning: description of object definition `ifHCOutUcastPkts' changed +./IF-MIB.old:644 info: previous definition of `ifHCOutUcastPkts' +../../mibs/ietf/IF-MIB:797 warning: description of object definition `ifHCOutMulticastPkts' changed +./IF-MIB.old:657 info: previous definition of `ifHCOutMulticastPkts' +../../mibs/ietf/IF-MIB:815 warning: description of object definition `ifHCOutBroadcastPkts' changed +./IF-MIB.old:673 info: previous definition of `ifHCOutBroadcastPkts' +../../mibs/ietf/IF-MIB:947 warning: description of object definition `ifStackTable' changed +./IF-MIB.old:752 info: previous definition of `ifStackTable' +../../mibs/ietf/IF-MIB:1002 range `(0..2147483647)' added to type used in `ifStackHigherLayer' +../../mibs/ietf/IF-MIB:1015 range `(0..2147483647)' added to type used in `ifStackLowerLayer' +../../mibs/ietf/IF-MIB:1440 warning: legal status change from `current' to `deprecated' for `ifTestTable' +./IF-MIB.old:846 info: previous definition of `ifTestTable' +../../mibs/ietf/IF-MIB:1572 warning: legal status change from `current' to `deprecated' for `ifTestEntry' +./IF-MIB.old:984 info: previous definition of `ifTestEntry' +../../mibs/ietf/IF-MIB:1594 warning: legal status change from `current' to `deprecated' for `ifTestId' +./IF-MIB.old:1004 info: previous definition of `ifTestId' +../../mibs/ietf/IF-MIB:1603 warning: legal status change from `current' to `deprecated' for `ifTestStatus' +./IF-MIB.old:1013 info: previous definition of `ifTestStatus' +../../mibs/ietf/IF-MIB:1616 warning: legal status change from `current' to `deprecated' for `ifTestType' +./IF-MIB.old:1029 info: previous definition of `ifTestType' +../../mibs/ietf/IF-MIB:1644 warning: legal status change from `current' to `deprecated' for `ifTestResult' +./IF-MIB.old:1058 info: previous definition of `ifTestResult' +../../mibs/ietf/IF-MIB:1665 warning: legal status change from `current' to `deprecated' for `ifTestCode' +../../mibs/ietf/IF-MIB:1665 warning: description of object definition `ifTestCode' changed +./IF-MIB.old:1081 info: previous definition of `ifTestCode' +../../mibs/ietf/IF-MIB:1685 warning: legal status change from `current' to `deprecated' for `ifTestOwner' +./IF-MIB.old:1101 info: previous definition of `ifTestOwner' +../../mibs/ietf/IF-MIB:1070 warning: description of object definition `ifRcvAddressTable' changed +./IF-MIB.old:1123 info: previous definition of `ifRcvAddressTable' +../../mibs/ietf/IF-MIB:1112 warning: access of `ifRcvAddressAddress' changed from `read-write' to `not-accessible' +./IF-MIB.old:1163 info: previous definition of `ifRcvAddressAddress' +../../mibs/ietf/IF-MIB:892 warning: column `ifAlias' has been added +../../mibs/ietf/IF-MIB:924 warning: column `ifCounterDiscontinuityTime' has been added +../../mibs/ietf/IF-MIB:117 warning: scalar `ifTableLastChange' has been added +../../mibs/ietf/IF-MIB:1045 warning: scalar `ifStackLastChange' has been added +../../mibs/ietf/IF-MIB:1157 warning: description of notification definition `linkDown' changed +./IF-MIB.old:1211 info: previous definition of `linkDown' +../../mibs/ietf/IF-MIB:1169 warning: description of notification definition `linkUp' changed +./IF-MIB.old:1223 info: previous definition of `linkUp' +../../mibs/ietf/IF-MIB:1697 warning: legal status change from `current' to `deprecated' for `ifGeneralGroup' +../../mibs/ietf/IF-MIB:1697 warning: description of object group definition `ifGeneralGroup' changed +./IF-MIB.old:1326 info: previous definition of `ifGeneralGroup' +../../mibs/ietf/IF-MIB:1315 warning: description of object group definition `ifFixedLengthGroup' changed +./IF-MIB.old:1340 info: previous definition of `ifFixedLengthGroup' +../../mibs/ietf/IF-MIB:1340 warning: description of object group definition `ifPacketGroup' changed +./IF-MIB.old:1364 info: previous definition of `ifPacketGroup' +../../mibs/ietf/IF-MIB:1709 warning: legal status change from `current' to `deprecated' for `ifTestGroup' +./IF-MIB.old:1428 info: previous definition of `ifTestGroup' +../../mibs/ietf/IF-MIB:1719 warning: legal status change from `current' to `deprecated' for `ifStackGroup' +../../mibs/ietf/IF-MIB:1719 warning: description of object group definition `ifStackGroup' changed +./IF-MIB.old:1437 info: previous definition of `ifStackGroup' +../../mibs/ietf/IF-MIB:1300 warning: group `ifGeneralInformationGroup' has been added +../../mibs/ietf/IF-MIB:1402 warning: group `ifStackGroup2' has been added +../../mibs/ietf/IF-MIB:1728 warning: group `ifOldObjectsGroup' has been added +../../mibs/ietf/IF-MIB:1410 warning: group `ifCounterDiscontinuityGroup' has been added +../../mibs/ietf/IF-MIB:1418 warning: group `linkUpDownNotificationsGroup' has been added +../../mibs/ietf/IF-MIB:1741 warning: legal status change from `current' to `deprecated' for `ifCompliance' +../../mibs/ietf/IF-MIB:1741 warning: description of module compliance definition `ifCompliance' changed +./IF-MIB.old:1244 info: previous definition of `ifCompliance' +../../mibs/ietf/IF-MIB:1820 warning: compliance `ifCompliance2' has been added +../../mibs/ietf/IF-MIB:1193 warning: compliance `ifCompliance3' has been added diff --git a/test/smidiff/IF-MIB.old b/test/smidiff/IF-MIB.old new file mode 100644 index 0000000..1f4b734 --- /dev/null +++ b/test/smidiff/IF-MIB.old @@ -0,0 +1,1445 @@ +IF-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, + Integer32, TimeTicks, + Counter64, mib-2, -- added for libsmi use. + NOTIFICATION-TYPE FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString, + PhysAddress, TruthValue, RowStatus, + AutonomousType, TestAndIncr FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF + IANAifType FROM IANAifType-MIB + -- interfaces FROM RFC1213-MIB; + -- changed to local node definition for libsmi use. + snmpTraps FROM SNMPv2-MIB; + -- added for libsmi use. + +ifMIB MODULE-IDENTITY + LAST-UPDATED "9311082155Z" + ORGANIZATION "IETF Interfaces MIB Working Group" + CONTACT-INFO + + " Keith McCloghrie + + Postal: Hughes LAN Systems + 1225 Charleston Road, Mountain View, CA 94043 + + Tel: +1 415 966 7934 + E-Mail: kzm@hls.com + + + Frank Kastenholz + + Postal: FTP Software + 2 High Street, North Andover, MA 01845 + + Tel: +1 508 685 4000 + E-Mail: kasten@ftp.com" + DESCRIPTION + "The MIB module to describe generic objects for + network interface sub-layers. This MIB is an updated + version of MIB-II's ifTable, and incorporates the + extensions defined in RFC 1229." + ::= { mib-2 31 } + +interfaces OBJECT IDENTIFIER ::= { mib-2 2 } + +ifMIBObjects OBJECT IDENTIFIER ::= { ifMIB 1 } + +-- 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. + +InterfaceIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each interface + or interface sub-layer in the managed system. It is + recommended that values are assigned contiguously + starting from 1. The value for each interface sub- + layer must remain constant at least from one re- + initialization of the entity's network management + system to the next re-initialization." + SYNTAX Integer32 + +ifNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network interfaces (regardless of their + current state) present on this system." + ::= { interfaces 1 } + + +-- the Interfaces table + +-- The Interfaces table contains information on the entity's +-- interfaces. Each sub-layer below the internetwork-layer +-- of a network interface is considered to be an interface. + +ifTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of interface entries. The number of entries + is given by the value of ifNumber." + ::= { interfaces 2 } + +ifEntry OBJECT-TYPE + SYNTAX IfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing management information applicable + + + to a particular interface." + INDEX { ifIndex } + ::= { ifTable 1 } + +IfEntry ::= + SEQUENCE { + ifIndex InterfaceIndex, + ifDescr DisplayString, + ifType IANAifType, + ifMtu Integer32, + ifSpeed Gauge32, + ifPhysAddress PhysAddress, + ifAdminStatus INTEGER, + ifOperStatus INTEGER, + ifLastChange TimeTicks, + ifInOctets Counter32, + ifInUcastPkts Counter32, + ifInNUcastPkts Counter32, -- deprecated + ifInDiscards Counter32, + ifInErrors Counter32, + ifInUnknownProtos Counter32, + ifOutOctets Counter32, + ifOutUcastPkts Counter32, + ifOutNUcastPkts Counter32, -- deprecated + ifOutDiscards Counter32, + ifOutErrors Counter32, + ifOutQLen Gauge32, -- deprecated + ifSpecific OBJECT IDENTIFIER -- deprecated + } + + +ifIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A unique value, greater than zero, for each + interface. It is recommended that values are assigned + contiguously starting from 1. The value for each + interface sub-layer must remain constant at least from + one re-initialization of the entity's network + management system to the next re-initialization." + ::= { ifEntry 1 } + +ifDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + + + DESCRIPTION + "A textual string containing information about the + interface. This string should include the name of the + manufacturer, the product name and the version of the + interface hardware/software." + ::= { ifEntry 2 } + +ifType OBJECT-TYPE + SYNTAX IANAifType + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of interface. Additional values for ifType + are assigned by the Internet Assigned Numbers + Authority (IANA), through updating the syntax of the + IANAifType textual convention." + ::= { ifEntry 3 } + +ifMtu OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The size of the largest packet which can be + sent/received on the interface, specified in octets. + For interfaces that are used for transmitting network + datagrams, this is the size of the largest network + datagram that can be sent on the interface." + ::= { ifEntry 4 } + +ifSpeed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the interface's current bandwidth in + bits per second. For interfaces which do not vary in + bandwidth or for those where no accurate estimation + can be made, this object should contain the nominal + bandwidth. If the bandwidth of the interface is + greater than the maximum value reportable by this + object then this object should report its maximum + value (4,294,967,295) and ifHighSpeed must be used to + report the interace's speed. For a sub-layer which + has no concept of bandwidth, this object should be + zero." + ::= { ifEntry 5 } + + + +ifPhysAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The interface's address at its protocol sub-layer. + The interface's media-specific MIB must define the bit + and byte ordering and format of the value contained by + this object. For interfaces which do not have such an + address (e.g., a serial line), this object should + contain an octet string of zero length." + ::= { ifEntry 6 } + +ifAdminStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3) -- in some test mode + } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The desired state of the interface. The testing(3) + state indicates that no operational packets can be + passed. When a managed system initializes, all + interfaces start with ifAdminStatus in the down(2) + state. As a result of either explicit management + action or per configuration information retained by + the managed system, ifAdminStatus is then changed to + either the up(1) or testing(3) states (or remains in + the down(2) state)." + ::= { ifEntry 7 } + +ifOperStatus OBJECT-TYPE + SYNTAX INTEGER { + up(1), -- ready to pass packets + down(2), + testing(3), -- in some test mode + unknown(4), -- status can not be determined + -- for some reason. + dormant(5) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current operational state of the interface. The + testing(3) state indicates that no operational packets + can be passed. If ifAdminStatus is down(2) then + + + ifOperStatus should be down(2). If ifAdminStatus is + changed to up(1) then ifOperStatus should change to + up(1) if the interface is ready to transmit and + receive network traffic; it should change to + dormant(5) if the interface is waiting for external + actions (such as a serial line waiting for an + incomming connection); it should remain in the down(2) + state if and only if there is a fault that prevents if + from going to the up(1) state." + ::= { ifEntry 8 } + +ifLastChange OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time the interface + entered its current operational state. If the current + state was entered prior to the last re-initialization + of the local network management subsystem, then this + object contains a zero value." + ::= { ifEntry 9 } + +ifInOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received on the interface, + including framing characters." + ::= { ifEntry 10 } + +ifInUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to + a higher (sub-)layer, which were not addressed to a + multicast or broadcast address at this sub-layer." + ::= { ifEntry 11 } + +ifInNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The number of packets, delivered by this sub-layer to + + + a higher (sub-)layer, which were addressed to a + multicast or broadcast address at this sub-layer. + This object is deprecated in favour of + ifInMulticastPkts and ifInBroadcastPkts." + ::= { ifEntry 12 } + +ifInDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of inbound packets which were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space." + ::= { ifEntry 13 } + +ifInErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from + being deliverable to a higher-layer protocol. For + character-oriented or fixed-length interfaces, the + number of inbound transmission units that contained + errors preventing them from being deliverable to a + higher-layer protocol." + ::= { ifEntry 14 } + +ifInUnknownProtos OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of packets + received via the interface which were discarded + because of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces which + support protocol multiplexing the number of + transmission units received via the interface which + were discarded because of an unknown or unsupported + protocol. For any interface which does not support + protocol multiplexing, this counter will always be 0." + ::= { ifEntry 15 } + + + +ifOutOctets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters." + ::= { ifEntry 16 } + +ifOutUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The total number of packets that higher-level + protocols requested be transmitted, and which were not + addressed to a multicast or broadcast address at this + sub-layer, including those that were discarded or not + sent." + ::= { ifEntry 17 } + +ifOutNUcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The total number of packets that higher-level + protocols requested be transmitted, and which were + addressed to a multicast or broadcast address at this + sub-layer, including those that were discarded or not + sent. + + This object is deprecated in favour of + ifOutMulticastPkts and ifOutBroadcastPkts." + ::= { ifEntry 18 } + +ifOutDiscards OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of outbound packets which were chosen to + be discarded even though no errors had been detected + to prevent their being transmitted. One possible + reason for discarding such a packet could be to free + up buffer space." + ::= { ifEntry 19 } + + +ifOutErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "For packet-oriented interfaces, the number of + outbound packets that could not be transmitted because + of errors. For character-oriented or fixed-length + interfaces, the number of outbound transmission units + that could not be transmitted because of errors." + ::= { ifEntry 20 } + +ifOutQLen OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "The length of the output packet queue (in packets)." + ::= { ifEntry 21 } + +ifSpecific OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "A reference to MIB definitions specific to the + particular media being used to realize the interface. + It is recommended that this value point to an instance + of a MIB object in the media-specific MIB, i.e., that + this object have the semantics associated with the + InstancePointer textual convention defined in RFC + 1443. In fact, it is recommended that the media- + specific MIB specify what value ifSpecific should/can + take for values of ifType. If no MIB definitions + specific to the particular media are available, the + value should be set to the OBJECT IDENTIFIER { 0 0 }." + ::= { ifEntry 22 } + + +-- +-- Extension to the interface table +-- +-- This table replaces the ifExtnsTable table. +-- + +ifXTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfXEntry + MAX-ACCESS not-accessible + + + STATUS current + DESCRIPTION + "A list of interface entries. The number of entries + is given by the value of ifNumber. This table + contains additional objects for the interface table." + ::= { ifMIBObjects 1 } + +ifXEntry OBJECT-TYPE + SYNTAX IfXEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing additional management information + applicable to a particular interface." + AUGMENTS { ifEntry } + ::= { ifXTable 1 } + +IfXEntry ::= + SEQUENCE { + ifName DisplayString, + ifInMulticastPkts Counter32, + ifInBroadcastPkts Counter32, + ifOutMulticastPkts Counter32, + ifOutBroadcastPkts Counter32, + ifHCInOctets Counter64, + ifHCInUcastPkts Counter64, + ifHCInMulticastPkts Counter64, + ifHCInBroadcastPkts Counter64, + ifHCOutOctets Counter64, + ifHCOutUcastPkts Counter64, + ifHCOutMulticastPkts Counter64, + ifHCOutBroadcastPkts Counter64, + ifLinkUpDownTrapEnable INTEGER, + ifHighSpeed Gauge32, + ifPromiscuousMode TruthValue, + ifConnectorPresent TruthValue + } + + +ifName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual name of the interface. The value of this + object should be the name of the interface as assigned + by the local device and should be suitable for use in + commands entered at the device's `console'. This + + + might be a text name, such as `le0' or a simple port + number, such as `1', depending on the interface naming + syntax of the device. If several entries in the + ifTable together represent a single interface as named + by the device, then each will have the same value of + ifName. If there is no local name, or this object is + otherwise not applicable, then this object contains a + 0-length string." + ::= { ifXEntry 1 } + +ifInMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to + a higher (sub-)layer, which were addressed to a + multicast address at this sub-layer. For a MAC layer + protocol, this includes both Group and Functional + addresses." + ::= { ifXEntry 2 } + +ifInBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to + a higher (sub-)layer, which were addressed to a + broadcast address at this sub-layer." + ::= { ifXEntry 3 } + +ifOutMulticastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level + protocols requested be transmitted, and which were + addressed to a multicast address at this sub-layer, + including those that were discarded or not sent. For + a MAC layer protocol, this includes both Group and + Functional addresses." + ::= { ifXEntry 4 } + +ifOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + + + STATUS current + DESCRIPTION + "The total number of packets that higher-level + protocols requested be transmitted, and which were + addressed to a broadcast address at this sub-layer, + including those that were discarded or not sent." + ::= { ifXEntry 5 } + +-- +-- High Capacity Counter objects. These objects are all + +-- 64 bit versions of the "basic" ifTable counters. These +-- objects all have the same basic semantics as their 32-bit +-- counterparts, however, their syntax has been extended +-- to 64 bits. +-- + +ifHCInOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets received on the interface, + including framing characters. This object is a 64-bit + version of ifInOctets." + ::= { ifXEntry 6 } + +ifHCInUcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to + a higher (sub-)layer, which were not addressed to a + multicast or broadcast address at this sub-layer. + This object is a 64-bit version of ifInUcastPkts." + ::= { ifXEntry 7 } + +ifHCInMulticastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to + a higher (sub-)layer, which were addressed to a + multicast address at this sub-layer. For a MAC layer + protocol, this includes both Group and Functional + addresses. This object is a 64-bit version of + + + ifInMulticastPkts." + ::= { ifXEntry 8 } + +ifHCInBroadcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of packets, delivered by this sub-layer to + a higher (sub-)layer, which were addressed to a + broadcast address at this sub-layer. This object is a + 64-bit version of ifInBroadcastPkts." + ::= { ifXEntry 9 } + +ifHCOutOctets OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of octets transmitted out of the + interface, including framing characters. This object + is a 64-bit version of ifOutOctets." + ::= { ifXEntry 10 } + +ifHCOutUcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level + protocols requested be transmitted, and which were not + addressed to a multicast or broadcast address at this + sub-layer, including those that were discarded or not + sent. This object is a 64-bit version of + ifOutUcastPkts." + ::= { ifXEntry 11 } + +ifHCOutMulticastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level + protocols requested be transmitted, and which were + addressed to a multicast address at this sub-layer, + including those that were discarded or not sent. For + a MAC layer protocol, this includes both Group and + Functional addresses. This object is a 64-bit version + + + of ifOutMulticastPkts." + ::= { ifXEntry 12 } + +ifHCOutBroadcastPkts OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The total number of packets that higher-level + protocols requested be transmitted, and which were + addressed to a broadcast address at this sub-layer, + including those that were discarded or not sent. This + object is a 64-bit version of ifOutBroadcastPkts." + ::= { ifXEntry 13 } + +ifLinkUpDownTrapEnable OBJECT-TYPE + SYNTAX INTEGER { enabled(1), disabled(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates whether linkUp/linkDown traps should be + generated for this interface. + + By default, this object should have the value + enabled(1) for interfaces which do not operate on + 'top' of any other interface (as defined in the + ifStackTable), and disabled(2) otherwise." + ::= { ifXEntry 14 } + +ifHighSpeed OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An estimate of the interface's current bandwidth in + units of 1,000,000 bits per second. If this object + reports a value of `n' then the speed of the interface + is somewhere in the range of `n-500,000' to + `n+499,999'. For interfaces which do not vary in + bandwidth or for those where no accurate estimation + can be made, this object should contain the nominal + bandwidth. For a sub-layer which has no concept of + bandwidth, this object should be zero." + ::= { ifXEntry 15 } + +ifPromiscuousMode OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-write + + + STATUS current + DESCRIPTION + "This object has a value of false(2) if this interface + only accepts packets/frames that are addressed to this + station. This object has a value of true(1) when the + station accepts all packets/frames transmitted on the + media. The value true(1) is only legal on certain + types of media. If legal, setting this object to a + value of true(1) may require the interface to be reset + before becoming effective. + + The value of ifPromiscuousMode does not affect the + reception of broadcast and multicast packets/frames by + the interface." + ::= { ifXEntry 16 } + +ifConnectorPresent OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object has the value 'true(1)' if the interface + sublayer has a physical connector and the value + 'false(2)' otherwise." + ::= { ifXEntry 17 } + + +-- The Interface Stack Group +-- +-- Implementation of this group is mandatory for all systems +-- + +ifStackTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfStackEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The table containing information on the relationships + between the multiple sub-layers of network interfaces. + In particular, it contains information on which sub- + layers run 'on top of' which other sub-layers. Each + sub-layer corresponds to a conceptual row in the + ifTable." + ::= { ifMIBObjects 2 } + + +ifStackEntry OBJECT-TYPE + SYNTAX IfStackEntry + + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information on a particular relationship between two + sub-layers, specifying that one sub-layer runs on + 'top' of the other sub-layer. Each sub-layer + corresponds to a conceptual row in the ifTable." + INDEX { ifStackHigherLayer, ifStackLowerLayer } + ::= { ifStackTable 1 } + + +IfStackEntry ::= + SEQUENCE { + ifStackHigherLayer Integer32, + ifStackLowerLayer Integer32, + ifStackStatus RowStatus + } + + +ifStackHigherLayer OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex corresponding to the higher + sub-layer of the relationship, i.e., the sub-layer + which runs on 'top' of the sub-layer identified by the + corresponding instance of ifStackLowerLayer. If there + is no higher sub-layer (below the internetwork layer), + then this object has the value 0." + ::= { ifStackEntry 1 } + + +ifStackLowerLayer OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The value of ifIndex corresponding to the lower sub- + layer of the relationship, i.e., the sub-layer which + runs 'below' the sub-layer identified by the + corresponding instance of ifStackHigherLayer. If + there is no lower sub-layer, then this object has the + value 0." + ::= { ifStackEntry 2 } + + +ifStackStatus OBJECT-TYPE + + + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The status of the relationship between two sub- + layers. + + Changing the value of this object from 'active' to + 'notInService' or 'destroy' will likely have + consequences up and down the interface stack. Thus, + write access to this object is likely to be + inappropriate for some types of interfaces, and many + implementations will choose not to support write- + access for any type of interface." + ::= { ifStackEntry 3 } + + +-- +-- The Interface Test Table +-- +-- This group of objects is optional. However, a media-specific +-- MIB may make implementation of this group mandatory. +-- +-- This table replaces the ifExtnsTestTable +-- + +ifTestTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfTestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry per interface. It + defines objects which allow a network manager to + instruct an agent to test an interface for various + faults. Tests for an interface are defined in the + media-specific MIB for that interface. After invoking + a test, the object ifTestResult can be read to + determine the outcome. If an agent can not perform + the test, ifTestResult is set to so indicate. The + object ifTestCode can be used to provide further + test-specific or interface-specific (or even + enterprise-specific) information concerning the + outcome of the test. Only one test can be in progress + on each interface at any one time. If one test is in + progress when another test is invoked, the second test + is rejected. Some agents may reject a test when a + prior test is active on another interface. + + + + Before starting a test, a manager-station must first + obtain 'ownership' of the entry in the ifTestTable for + the interface to be tested. This is accomplished with + the ifTestId and ifTestStatus objects as follows: + + try_again: + get (ifTestId, ifTestStatus) + while (ifTestStatus != notInUse) + /* + * Loop while a test is running or some other + * manager is configuring a test. + */ + short delay + get (ifTestId, ifTestStatus) + } + + /* + * Is not being used right now -- let's compete + * to see who gets it. + */ + lock_value = ifTestId + + if ( set(ifTestId = lock_value, ifTestStatus = inUse, + ifTestOwner = 'my-IP-address') == FAILURE) + /* + * Another manager got the ifTestEntry -- go + * try again + */ + goto try_again; + + /* + * I have the lock + */ + set up any test parameters. + + /* + * This starts the test + */ + set(ifTestType = test_to_run); + + wait for test completion by polling ifTestResult + + when test completes, agent sets ifTestResult + agent also sets ifTestStatus = 'notInUse' + + retrieve any additional test results, and ifTestId + + if (ifTestId == lock_value+1) results are valid + + + A manager station first retrieves the value of the + appropriate ifTestId and ifTestStatus objects, + periodically repeating the retrieval if necessary, + until the value of ifTestStatus is 'notInUse'. The + manager station then tries to set the same ifTestId + object to the value it just retrieved, the same + ifTestStatus object to 'inUse', and the corresponding + ifTestOwner object to a value indicating itself. If + the set operation succeeds then the manager has + obtained ownership of the ifTestEntry, and the value of + the ifTestId object is incremented by the agent (per + the semantics of TestAndIncr). Failure of the set + operation indicates that some other manager has + obtained ownership of the ifTestEntry. + + Once ownership is obtained, any test parameters can be + setup, and then the test is initiated by setting + ifTestType. On completion of the test, the agent sets + ifTestStatus to 'notInUse'. Once this occurs, the + manager can retrieve the results. In the (rare) event + that the invocation of tests by two network managers + were to overlap, then there would be a possibility that + the first test's results might be overwritten by the + second test's results prior to the first results being + read. This unlikely circumstance can be detected by a + network manager retrieving ifTestId at the same time as + retrieving the test results, and ensuring that the + results are for the desired request. + + If ifTestType is not set within an abnormally long + period of time after ownership is obtained, the agent + should time-out the manager, and reset the value of the + ifTestStatus object back to 'notInUse'. It is + suggested that this time-out period be 5 minutes. + + In general, a management station must not retransmit a + request to invoke a test for which it does not receive + a response; instead, it properly inspects an agent's + MIB to determine if the invocation was successful. + Only if the invocation was unsuccessful, is the + invocation request retransmitted. + + Some tests may require the interface to be taken off- + line in order to execute them, or may even require the + agent to reboot after completion of the test. In these + circumstances, communication with the management + station invoking the test may be lost until after + completion of the test. An agent is not required to + + + support such tests. However, if such tests are + supported, then the agent should make every effort to + transmit a response to the request which invoked the + test prior to losing communication. When the agent is + restored to normal service, the results of the test are + properly made available in the appropriate objects. + Note that this requires that the ifIndex value assigned + to an interface must be unchanged even if the test + causes a reboot. An agent must reject any test for + which it cannot, perhaps due to resource constraints, + make available at least the minimum amount of + information after that test completes." + ::= { ifMIBObjects 3 } + +ifTestEntry OBJECT-TYPE + SYNTAX IfTestEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "An entry containing objects for invoking tests on an + interface." + AUGMENTS { ifEntry } + ::= { ifTestTable 1 } + +IfTestEntry ::= + SEQUENCE { + ifTestId TestAndIncr, + ifTestStatus INTEGER, + ifTestType AutonomousType, + ifTestResult INTEGER, + ifTestCode OBJECT IDENTIFIER, + ifTestOwner OwnerString + } + +ifTestId OBJECT-TYPE + SYNTAX TestAndIncr + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object identifies the current invocation of the + interface's test." + ::= { ifTestEntry 1 } + +ifTestStatus OBJECT-TYPE + SYNTAX INTEGER { notInUse(1), inUse(2) } + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + + "This object indicates whether or not some manager + currently has the necessary 'ownership' required to + invoke a test on this interface. A write to this + object is only successful when it changes its value + from 'notInUse(1)' to 'inUse(2)'. After completion of + a test, the agent resets the value back to + 'notInUse(1)'." + ::= { ifTestEntry 2 } + +ifTestType OBJECT-TYPE + SYNTAX AutonomousType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A control variable used to start and stop operator- + initiated interface tests. Most OBJECT IDENTIFIER + values assigned to tests are defined elsewhere, in + association with specific types of interface. + However, this document assigns a value for a full- + duplex loopback test, and defines the special meanings + of the subject identifier: + + noTest OBJECT IDENTIFIER ::= { 0 0 } + + When the value noTest is written to this object, no + action is taken unless a test is in progress, in which + case the test is aborted. Writing any other value to + this object is only valid when no test is currently in + progress, in which case the indicated test is + initiated. + + When read, this object always returns the most recent + value that ifTestType was set to. If it has not been + set since the last initialization of the network + management subsystem on the agent, a value of noTest + is returned." + ::= { ifTestEntry 3 } + +ifTestResult OBJECT-TYPE + SYNTAX INTEGER { + none(1), -- no test yet requested + success(2), + inProgress(3), + notSupported(4), + unAbleToRun(5), -- due to state of system + aborted(6), + failed(7) + } + + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains the result of the most recently + requested test, or the value none(1) if no tests have + been requested since the last reset. Note that this + facility provides no provision for saving the results + of one test when starting another, as could be + required if used by multiple managers concurrently." + ::= { ifTestEntry 4 } + +ifTestCode OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This object contains a code which contains more + specific information on the test result, for example + an error-code after a failed test. Error codes and + other values this object may take are specific to the + type of interface and/or test. The value may have the + semantics of either the AutonomousType or + InstancePointer textual conventions as defined in RFC + 1443. The identifier: + + testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } + + is defined for use if no additional result code is + available." + ::= { ifTestEntry 5 } + +ifTestOwner OBJECT-TYPE + SYNTAX OwnerString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The entity which currently has the 'ownership' + required to invoke a test on this interface." + ::= { ifTestEntry 6 } + + +-- Generic Receive Address Table +-- +-- This group of objects is mandatory for all types of +-- interfaces which can receive packets/frames addressed to +-- more than one address. +-- +-- This table replaces the ifExtnsRcvAddr table. The main + + +-- difference is that this table makes use of the RowStatus +-- textual convention, while ifExtnsRcvAddr did not. + +ifRcvAddressTable OBJECT-TYPE + SYNTAX SEQUENCE OF IfRcvAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains an entry for each address + (broadcast, multicast, or uni-cast) for which the + system will receive packets/frames on a particular + interface, except as follows: + + - for an interface operating in promiscuous mode, + entries are only required for those addresses for + which the system would receive frames were it not + operating in promiscuous mode. + + - for 802.5 functional addresses, only one entry is + required, for the address which has the functional + address bit ANDed with the bit mask of all functional + addresses for which the interface will accept frames." + ::= { ifMIBObjects 4 } + +ifRcvAddressEntry OBJECT-TYPE + SYNTAX IfRcvAddressEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A list of objects identifying an address for which + the system will accept packets/frames on the + particular interface identified by the index value + ifIndex." + INDEX { ifIndex, ifRcvAddressAddress } + ::= { ifRcvAddressTable 1 } + +IfRcvAddressEntry ::= + SEQUENCE { + ifRcvAddressAddress PhysAddress, + ifRcvAddressStatus RowStatus, + ifRcvAddressType INTEGER + } + +ifRcvAddressAddress OBJECT-TYPE + SYNTAX PhysAddress + MAX-ACCESS read-create + STATUS current + DESCRIPTION + + + "An address for which the system will accept + packets/frames on this entry's interface." + ::= { ifRcvAddressEntry 1 } + +ifRcvAddressStatus OBJECT-TYPE + SYNTAX RowStatus + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object is used to create and delete rows in the + ifRcvAddressTable." + + ::= { ifRcvAddressEntry 2 } + +ifRcvAddressType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + volatile(2), + nonVolatile(3) + } + + MAX-ACCESS read-create + STATUS current + DESCRIPTION + "This object has the value nonVolatile(3) for those + entries in the table which are valid and will not be + deleted by the next restart of the managed system. + Entries having the value volatile(2) are valid and + exist, but have not been saved, so that will not exist + after the next restart of the managed system. Entries + having the value other(1) are valid and exist but are + not classified as to whether they will continue to + exist after the next restart." + + DEFVAL { volatile } + + ::= { ifRcvAddressEntry 3 } + + +-- definition of interface-related traps. + +linkDown NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkDown trap signifies that the SNMPv2 entity, + acting in an agent role, has detected that the + ifOperStatus object for one of its communication links + + + is about to transition into the down state." + ::= { snmpTraps 3 } + +linkUp NOTIFICATION-TYPE + OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } + STATUS current + DESCRIPTION + "A linkUp trap signifies that the SNMPv2 entity, + acting in an agent role, has detected that the + ifOperStatus object for one of its communication links + has transitioned out of the down state." + ::= { snmpTraps 4 } + + +-- conformance information + +ifConformance OBJECT IDENTIFIER ::= { ifMIB 2 } + +ifGroups OBJECT IDENTIFIER ::= { ifConformance 1 } +ifCompliances OBJECT IDENTIFIER ::= { ifConformance 2 } + + +-- compliance statements + +ifCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for SNMPv2 entities which + have network interfaces." + + MODULE -- this module + MANDATORY-GROUPS { ifGeneralGroup, ifStackGroup } + + GROUP ifFixedLengthGroup + DESCRIPTION + "This group is mandatory for all network interfaces + which are character-oriented or transmit data in + fixed-length transmission units." + + GROUP ifHCFixedLengthGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces which are character-oriented or transmit + data in fixed-length transmission units, and for which + the value of the corresponding instance of ifSpeed is + greater than 20,000,000 bits/second." + + GROUP ifPacketGroup + + + DESCRIPTION + "This group is mandatory for all network interfaces + which are packet-oriented." + + GROUP ifHCPacketGroup + DESCRIPTION + "This group is mandatory only for those network + interfaces which are packet-oriented and for which the + value of the corresponding instance of ifSpeed is + greater than 650,000,000 bits/second." + GROUP ifTestGroup + DESCRIPTION + "This group is optional. Media-specific MIBs which + require interface tests are strongly encouraged to use + this group for invoking tests and reporting results. + A medium specific MIB which has mandatory tests may + make implementation of this group mandatory." + + GROUP ifRcvAddressGroup + DESCRIPTION + "The applicability of this group MUST be defined by + the media-specific MIBs. Media-specific MIBs must + define the exact meaning, use, and semantics of the + addresses in this group." + + OBJECT ifLinkUpDownTrapEnable + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifPromiscuousMode + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ifStackStatus + SYNTAX INTEGER { active(1) } -- subset of RowStatus + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, and only one of the six + enumerated values for the RowStatus textual convention + need be supported, specifically: active(1)." + + OBJECT ifAdminStatus + SYNTAX INTEGER { up(1), down(2) } + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required, nor is support for the + + + value testing(3)." + ::= { ifCompliances 1 } + + +-- units of conformance + +ifGeneralGroup OBJECT-GROUP + OBJECTS { ifDescr, ifType, ifSpeed, ifPhysAddress, + ifAdminStatus, ifOperStatus, ifLastChange, + ifLinkUpDownTrapEnable, ifConnectorPresent, + ifHighSpeed, ifName } + STATUS current + DESCRIPTION + "A collection of objects providing information + applicable to all network interfaces." + ::= { ifGroups 1 } + +-- the following five groups are mutually exclusive; at most +-- one of these groups is implemented for any interface + +ifFixedLengthGroup OBJECT-GROUP + OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to non-high speed, character-oriented or + fixed-length-transmission network interfaces. (Non- + high speed interfaces transmit and receive at speeds + less than or equal to 20,000,000 bits/second.)" + ::= { ifGroups 2 } + +ifHCFixedLengthGroup OBJECT-GROUP + OBJECTS { ifHCInOctets, ifHCOutOctets, + ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to high speed (greater than 20,000,000 + bits/second) character-oriented or fixed-length- + transmission network interfaces." + ::= { ifGroups 3 } + +ifPacketGroup OBJECT-GROUP + OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors, + ifMtu, ifInUcastPkts, ifInMulticastPkts, + + + ifInBroadcastPkts, ifInDiscards, + ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to non-high speed, packet-oriented network + interfaces. (Non-high speed interfaces transmit and + receive at speeds less than or equal to 20,000,000 + bits/second.)" + ::= { ifGroups 4 } + +ifHCPacketGroup OBJECT-GROUP + OBJECTS { ifHCInOctets, ifHCOutOctets, + ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors, + ifMtu, ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, + ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to high speed (greater than 20,000,000 + bits/second but less than or equal to 650,000,000 + bits/second) packet-oriented network interfaces." + ::= { ifGroups 5 } + +ifVHCPacketGroup OBJECT-GROUP + OBJECTS { ifHCInUcastPkts, ifHCInMulticastPkts, + ifHCInBroadcastPkts, ifHCOutUcastPkts, + ifHCOutMulticastPkts, ifHCOutBroadcastPkts, + ifHCInOctets, ifHCOutOctets, + ifInOctets, ifOutOctets, ifInUnknownProtos, + ifInErrors, ifOutErrors, + ifMtu, ifInUcastPkts, ifInMulticastPkts, + ifInBroadcastPkts, ifInDiscards, + ifOutUcastPkts, ifOutMulticastPkts, + ifOutBroadcastPkts, ifOutDiscards, + ifPromiscuousMode } + STATUS current + DESCRIPTION + "A collection of objects providing information + specific to higher speed (greater than 650,000,000 + bits/second) packet-oriented network interfaces." + ::= { ifGroups 6 } + + +ifRcvAddressGroup OBJECT-GROUP + OBJECTS { ifRcvAddressStatus, ifRcvAddressType } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + multiple addresses which an interface receives." + ::= { ifGroups 7 } + +ifTestGroup OBJECT-GROUP + OBJECTS { ifTestId, ifTestStatus, ifTestType, + ifTestResult, ifTestCode, ifTestOwner } + STATUS current + DESCRIPTION + "A collection of objects providing the ability to + invoke tests on an interface." + ::= { ifGroups 8 } + +ifStackGroup OBJECT-GROUP + OBJECTS { ifStackStatus } + STATUS current + DESCRIPTION + "A collection of objects providing information on the + layering of MIB-II interfaces." + ::= { ifGroups 9 } + +END diff --git a/test/smidiff/INET-ADDRESS-MIB.diff b/test/smidiff/INET-ADDRESS-MIB.diff new file mode 100644 index 0000000..dda0437 --- /dev/null +++ b/test/smidiff/INET-ADDRESS-MIB.diff @@ -0,0 +1,27 @@ +../../mibs/ietf/INET-ADDRESS-MIB:7 warning: contact of `INET-ADDRESS-MIB' changed +../../mibs/ietf/INET-ADDRESS-MIB:7 warning: description of module identity definition `INET-ADDRESS-MIB' changed +../../mibs/ietf/INET-ADDRESS-MIB:33 warning: revision `2005-02-04 00:00' added +../../mibs/ietf/INET-ADDRESS-MIB:38 warning: revision `2002-05-09 00:00' added +./INET-ADDRESS-MIB.old:9 info: previous definition of `INET-ADDRESS-MIB' +../../mibs/ietf/INET-ADDRESS-MIB:54 warning: named number `ipv4z' added to type `InetAddressType' +../../mibs/ietf/INET-ADDRESS-MIB:54 warning: named number `ipv6z' added to type `InetAddressType' +../../mibs/ietf/INET-ADDRESS-MIB:54 warning: description of textual convention definition `InetAddressType' changed +./INET-ADDRESS-MIB.old:61 info: previous definition of `InetAddressType' +../../mibs/ietf/INET-ADDRESS-MIB:113 warning: description of textual convention definition `InetAddress' changed +./INET-ADDRESS-MIB.old:101 info: previous definition of `InetAddress' +../../mibs/ietf/INET-ADDRESS-MIB:143 warning: description of textual convention definition `InetAddressIPv4' changed +./INET-ADDRESS-MIB.old:123 info: previous definition of `InetAddressIPv4' +../../mibs/ietf/INET-ADDRESS-MIB:163 size of type `InetAddressIPv6' changed from `(16|20)' to `(16)' +../../mibs/ietf/INET-ADDRESS-MIB:163 warning: format of `InetAddressIPv6' changed +../../mibs/ietf/INET-ADDRESS-MIB:163 warning: description of textual convention definition `InetAddressIPv6' changed +./INET-ADDRESS-MIB.old:135 info: previous definition of `InetAddressIPv6' +../../mibs/ietf/INET-ADDRESS-MIB:233 warning: description of textual convention definition `InetAddressDNS' changed +./INET-ADDRESS-MIB.old:173 info: previous definition of `InetAddressDNS' +../../mibs/ietf/INET-ADDRESS-MIB:180 warning: type `InetAddressIPv4z' has been added +../../mibs/ietf/INET-ADDRESS-MIB:208 warning: type `InetAddressIPv6z' has been added +../../mibs/ietf/INET-ADDRESS-MIB:260 warning: type `InetAddressPrefixLength' has been added +../../mibs/ietf/INET-ADDRESS-MIB:297 warning: type `InetPortNumber' has been added +../../mibs/ietf/INET-ADDRESS-MIB:317 warning: type `InetAutonomousSystemNumber' has been added +../../mibs/ietf/INET-ADDRESS-MIB:338 warning: type `InetScopeType' has been added +../../mibs/ietf/INET-ADDRESS-MIB:374 warning: type `InetZoneIndex' has been added +../../mibs/ietf/INET-ADDRESS-MIB:397 warning: type `InetVersion' has been added diff --git a/test/smidiff/INET-ADDRESS-MIB.old b/test/smidiff/INET-ADDRESS-MIB.old new file mode 100644 index 0000000..d347d18 --- /dev/null +++ b/test/smidiff/INET-ADDRESS-MIB.old @@ -0,0 +1,188 @@ +INET-ADDRESS-MIB DEFINITIONS ::= BEGIN + + +IMPORTS + MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC; + + +inetAddressMIB MODULE-IDENTITY + LAST-UPDATED "200006080000Z" + ORGANIZATION + "IETF Operations and Management Area" + CONTACT-INFO + "Mike Daniele + Compaq Computer Corporation + 110 Spit Brook Rd + Nashua, NH 03062, USA + + Phone: +1 603 884-1423 + EMail: daniele@zk3.dec.com + + Brian Haberman + Nortel Networks + 4039 Emperor Blvd., Suite 200 + Durham, NC 27703, USA + + Phone: +1 919 992-4439 + EMail: haberman@nortelnetworks.com + + Shawn A. Routhier + Wind River Systems, Inc. + 1 Tara Blvd, Suite 403 + Nashua, NH 03062, USA + + Phone: +1 603 897-2000 + EMail: sar@epilogue.com + + + + Juergen Schoenwaelder + TU Braunschweig + Bueltenweg 74/75 + 38106 Braunschweig, Germany + + Phone: +49 531 391-3289 + EMail: schoenw@ibr.cs.tu-bs.de + + Send comments to mibs@ops.ietf.org." + +DESCRIPTION + "This MIB module defines textual conventions for + representing Internet addresses. An Internet + address can be an IPv4 address, an IPv6 address + or a DNS domain name." + +REVISION "200006080000Z" +DESCRIPTION + "Initial version, published as RFC 2851." +::= { mib-2 76 } + +InetAddressType ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "A value that represents a type of Internet address. + + unknown(0) An unknown address type. This value MUST + be used if the value of the corresponding + InetAddress object is a zero-length string. + It may also be used to indicate an IP address + which is not in one of the formats defined + below. + + ipv4(1) An IPv4 address as defined by the + InetAddressIPv4 textual convention. + + ipv6(2) An IPv6 address as defined by the + InetAddressIPv6 textual convention. + + dns(16) A DNS domain name as defined by the + InetAddressDNS textual convention. + + Each definition of a concrete InetAddressType value must be + accompanied by a definition of a textual convention for use + with that InetAddressType. + + The InetAddressType textual convention SHOULD NOT be subtyped + in object type definitions to support future extensions. It + + + + MAY be subtyped in compliance statements in order to require + only a subset of these address types for a compliant + implementation." + SYNTAX INTEGER { + unknown(0), + ipv4(1), -- these named numbers are aligned + ipv6(2), -- with AddressFamilyNumbers from + dns(16) -- IANA-ADDRESS-FAMILY-NUMBERS-MIB + } + +InetAddress ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "Denotes a generic Internet address. + + An InetAddress value is always interpreted within the + context of an InetAddressType value. The InetAddressType + object which defines the context must be registered + immediately before the object which uses the InetAddress + textual convention. In other words, the object identifiers + for the InetAddressType object and the InetAddress object + MUST have the same length and the last sub-identifier of + the InetAddressType object MUST be 1 less than the last + sub-identifier of the InetAddress object. + + When this textual convention is used as the syntax of an + index object, there may be issues with the limit of 128 + sub-identifiers specified in SMIv2, STD 58. In this case, + the OBJECT-TYPE declaration MUST include a 'SIZE' clause + to limit the number of potential instance sub-identifiers." + SYNTAX OCTET STRING (SIZE (0..255)) + +InetAddressIPv4 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "1d.1d.1d.1d" + STATUS current + DESCRIPTION + "Represents an IPv4 network address: + + octets contents encoding + 1-4 IP address network-byte order + + The corresponding InetAddressType value is ipv4(1)." + SYNTAX OCTET STRING (SIZE (4)) + +InetAddressIPv6 ::= TEXTUAL-CONVENTION + DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x%4d" + STATUS current + DESCRIPTION + + + + "Represents an IPv6 network address: + + octets contents encoding + 1-16 IPv6 address network-byte order + 17-20 scope identifier network-byte order + + The corresponding InetAddressType value is ipv6(2). + + The scope identifier (bytes 17-20) MUST NOT be present + for global IPv6 addresses. For non-global IPv6 addresses + (e.g. link-local or site-local addresses), the scope + identifier MUST always be present. It contains a link + identifier for link-local and a site identifier for + site-local IPv6 addresses. + + The scope identifier MUST disambiguate identical address + values. For link-local addresses, the scope identifier will + typically be the interface index (ifIndex as defined in the + IF-MIB, RFC 2233) of the interface on which the address is + configured. + + The scope identifier may contain the special value 0 + which refers to the default scope. The default scope + may be used in cases where the valid scope identifier + is not known (e.g., a management application needs to + write a site-local InetAddressIPv6 address without + knowing the site identifier value). The default scope + SHOULD NOT be used as an easy way out in cases where + the scope identifier for a non-global IPv6 is known." + SYNTAX OCTET STRING (SIZE (16|20)) + +InetAddressDNS ::= TEXTUAL-CONVENTION + DISPLAY-HINT "255a" + STATUS current + DESCRIPTION + "Represents a DNS domain name. The name SHOULD be + fully qualified whenever possible. + + The corresponding InetAddressType is dns(16). + + The DESCRIPTION clause of InetAddress objects that + may have InetAddressDNS values must fully describe + how (and when) such names are to be resolved to IP + addresses." + SYNTAX OCTET STRING (SIZE (1..255)) + +END diff --git a/test/smidiff/Makefile.am b/test/smidiff/Makefile.am new file mode 100644 index 0000000..d51d200 --- /dev/null +++ b/test/smidiff/Makefile.am @@ -0,0 +1,14 @@ +# +# Makefile.am -- +# +# Template to generate the mibs/ietf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1433 2002-07-24 11:54:24Z strauss $ +# + +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') diff --git a/test/smidiff/Makefile.in b/test/smidiff/Makefile.in new file mode 100644 index 0000000..0d6cf9c --- /dev/null +++ b/test/smidiff/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the mibs/ietf Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 1433 2002-07-24 11:54:24Z strauss $ +# +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/smidiff +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = $(shell ls -1 | egrep -v 'CVS|Makefile') +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/smidiff/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/smidiff/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/test/smidiff/Printer-MIB.diff b/test/smidiff/Printer-MIB.diff new file mode 100644 index 0000000..c23c064 --- /dev/null +++ b/test/smidiff/Printer-MIB.diff @@ -0,0 +1,1236 @@ +./Printer-MIB.new:11 warning: organization of `Printer-MIB' changed +./Printer-MIB.new:11 warning: contact of `Printer-MIB' changed +./Printer-MIB.new:11 warning: description of module identity definition `Printer-MIB' changed +../../mibs/ietf/Printer-MIB:47 revision `2004-06-02 00:00' removed +./Printer-MIB.new:22 warning: revision `2001-08-30 00:00' added +../../mibs/ietf/Printer-MIB:20 info: previous definition of `Printer-MIB' +../../mibs/ietf/Printer-MIB:140 type `MediaUnit' has been deleted +../../mibs/ietf/Printer-MIB:168 type `CapacityUnit' has been deleted +../../mibs/ietf/Printer-MIB:239 type `SubUnitStatus' has been deleted +../../mibs/ietf/Printer-MIB:291 type `PrtLocalizedDescriptionStringTC' has been deleted +../../mibs/ietf/Printer-MIB:300 type `PrtConsoleDescriptionStringTC' has been deleted +./Printer-MIB.new:159 status change from `deprecated' to `current' for `CodedCharSet' +./Printer-MIB.new:159 warning: description of textual convention definition `CodedCharSet' changed +../../mibs/ietf/Printer-MIB:309 info: previous definition of `CodedCharSet' +./Printer-MIB.new:90 warning: type `PrtCoverStatusTC' has been added +./Printer-MIB.new:201 warning: type `LocalizedDescriptionStringTC' has been added +./Printer-MIB.new:209 warning: type `ConsoleDescriptionStringTC' has been added +./Printer-MIB.new:221 warning: type `PrtGeneralResetTC' has been added +./Printer-MIB.new:259 warning: type `PrtChannelTypeTC' has been added +./Printer-MIB.new:683 warning: type `PrtInterpreterLangFamilyTC' has been added +./Printer-MIB.new:941 warning: type `PrtInputTypeTC' has been added +./Printer-MIB.new:958 warning: type `PrtOutputTypeTC' has been added +./Printer-MIB.new:1009 warning: type `PrtMarkerMarkTechTC' has been added +./Printer-MIB.new:1070 warning: type `PrtMarkerSuppliesTypeTC' has been added +./Printer-MIB.new:1196 warning: type `PrtMediaPathTypeTC' has been added +./Printer-MIB.new:1229 warning: type `PrtConsoleColorTC' has been added +./Printer-MIB.new:1247 warning: type `PrtConsoleDisableTC' has been added +./Printer-MIB.new:1288 warning: type `PrtAlertTrainingLevelTC' has been added +./Printer-MIB.new:1333 warning: type `PrtAlertGroupTC' has been added +./Printer-MIB.new:1380 warning: type `PrtAlertCodeTC' has been added +../../mibs/ietf/Printer-MIB:4586 node `prtMIB2Groups' has been deleted +./Printer-MIB.new:1616 warning: description of object definition `prtGeneralEntry' changed +../../mibs/ietf/Printer-MIB:552 info: previous definition of `prtGeneralEntry' +./Printer-MIB.new:1662 warning: description of object definition `prtGeneralConfigChanges' changed +../../mibs/ietf/Printer-MIB:604 info: previous definition of `prtGeneralConfigChanges' +./Printer-MIB.new:1697 warning: description of object definition `prtGeneralCurrentLocalization' changed +../../mibs/ietf/Printer-MIB:645 info: previous definition of `prtGeneralCurrentLocalization' +./Printer-MIB.new:1735 warning: description of object definition `prtGeneralCurrentOperator' changed +../../mibs/ietf/Printer-MIB:686 info: previous definition of `prtGeneralCurrentOperator' +./Printer-MIB.new:1757 warning: description of object definition `prtGeneralServicePerson' changed +../../mibs/ietf/Printer-MIB:711 info: previous definition of `prtGeneralServicePerson' +./Printer-MIB.new:1785 warning: type `Integer32' replaces implicit type for `prtInputDefaultIndex' +../../mibs/ietf/Printer-MIB:744 info: previous definition of `prtInputDefaultIndex' +./Printer-MIB.new:1785 range `(1..65535)' removed from type used in `prtInputDefaultIndex' +../../mibs/ietf/Printer-MIB:744 info: previous definition of `prtInputDefaultIndex' +./Printer-MIB.new:1785 warning: description of object definition `prtInputDefaultIndex' changed +../../mibs/ietf/Printer-MIB:744 info: previous definition of `prtInputDefaultIndex' +./Printer-MIB.new:1802 warning: type `Integer32' replaces implicit type for `prtOutputDefaultIndex' +../../mibs/ietf/Printer-MIB:754 info: previous definition of `prtOutputDefaultIndex' +./Printer-MIB.new:1802 range `(1..65535)' removed from type used in `prtOutputDefaultIndex' +../../mibs/ietf/Printer-MIB:754 info: previous definition of `prtOutputDefaultIndex' +./Printer-MIB.new:1802 warning: description of object definition `prtOutputDefaultIndex' changed +../../mibs/ietf/Printer-MIB:754 info: previous definition of `prtOutputDefaultIndex' +./Printer-MIB.new:1845 warning: description of object definition `prtConsoleLocalization' changed +../../mibs/ietf/Printer-MIB:795 info: previous definition of `prtConsoleLocalization' +./Printer-MIB.new:1880 warning: named number `enabled' changed to `operatorConsoleEnabled' at type used in `prtConsoleDisable' +./Printer-MIB.new:1880 warning: named number `disabled' changed to `operatorConsoleDisabled' at type used in `prtConsoleDisable' +./Printer-MIB.new:1880 warning: description of object definition `prtConsoleDisable' changed +../../mibs/ietf/Printer-MIB:835 info: previous definition of `prtConsoleDisable' +./Printer-MIB.new:2129 warning: description of object definition `prtStorageRefTable' changed +../../mibs/ietf/Printer-MIB:1117 info: previous definition of `prtStorageRefTable' +./Printer-MIB.new:2137 warning: description of object definition `prtStorageRefEntry' changed +../../mibs/ietf/Printer-MIB:1129 info: previous definition of `prtStorageRefEntry' +./Printer-MIB.new:2154 range of type used in `prtStorageRefSeqNumber' changed from `(1..65535)' to `(0..65535)' +./Printer-MIB.new:2165 range of type used in `prtStorageRefIndex' changed from `(0..2147483647)' to `(0..65535)' +./Printer-MIB.new:2174 warning: description of object definition `prtDeviceRefTable' changed +../../mibs/ietf/Printer-MIB:1176 info: previous definition of `prtDeviceRefTable' +./Printer-MIB.new:2182 warning: description of object definition `prtDeviceRefEntry' changed +../../mibs/ietf/Printer-MIB:1191 info: previous definition of `prtDeviceRefEntry' +./Printer-MIB.new:2199 range of type used in `prtDeviceRefSeqNumber' changed from `(1..65535)' to `(0..65535)' +./Printer-MIB.new:2210 range of type used in `prtDeviceRefIndex' changed from `(0..2147483647)' to `(0..65535)' +./Printer-MIB.new:1993 warning: description of object definition `prtCoverEntry' changed +../../mibs/ietf/Printer-MIB:955 info: previous definition of `prtCoverEntry' +./Printer-MIB.new:2010 warning: description of object definition `prtCoverIndex' changed +../../mibs/ietf/Printer-MIB:975 info: previous definition of `prtCoverIndex' +./Printer-MIB.new:2031 named number `unknown' removed from type used in `prtCoverStatus' +./Printer-MIB.new:2060 warning: description of object definition `prtLocalizationEntry' changed +../../mibs/ietf/Printer-MIB:1042 info: previous definition of `prtLocalizationEntry' +./Printer-MIB.new:2078 warning: description of object definition `prtLocalizationIndex' changed +../../mibs/ietf/Printer-MIB:1063 info: previous definition of `prtLocalizationIndex' +./Printer-MIB.new:2092 size of type used in `prtLocalizationLanguage' changed from `(2)' to `(0..2)' +./Printer-MIB.new:2091 warning: description of object definition `prtLocalizationLanguage' changed +../../mibs/ietf/Printer-MIB:1078 info: previous definition of `prtLocalizationLanguage' +./Printer-MIB.new:2101 size of type used in `prtLocalizationCountry' changed from `(2)' to `(0..2)' +./Printer-MIB.new:2110 named number `unknown' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csASCII' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin3' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin4' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatinCyrillic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatinArabic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatinGreek' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatinHebrew' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin5' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOLatin6' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISOTextComm' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHalfWidthKatakana' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csJISEncoding' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csShiftJIS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEUCPkdFmtJapanese' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEUCFixWidJapanese' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO4UnitedKingdom' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO11SwedishForNames' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO15Italian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO17Spanish' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO21German' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO60DanishNorwegian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO69French' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO10646UTF1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO646basic1983' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csINVARIANT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2IntlRefVersion' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csNATSSEFI' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csNATSSEFIADD' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csNATSDANO' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csNATSDANOADD' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO10Swedish' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKSC56011987' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022KR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEUCKR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022JP' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022JP2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO13JISC6220jp' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO14JISC6220ro' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO16Portuguese' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO18Greek7Old' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO19LatinGreek' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO25French' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO27LatinGreek1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO5427Cyrillic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO42JISC62261978' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO47BSViewdata' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO49INIS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO50INIS8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO51INISCyrillic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO54271981' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO5428Greek' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO57GB1988' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO58GB231280' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO61Norwegian2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO70VideotexSupp1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO84Portuguese2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO85Spanish2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO86Hungarian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO87JISX0208' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88Greek7' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO89ASMO449' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO90' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO91JISC62291984a' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO92JISC62991984b' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO93JIS62291984badd' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO94JIS62291984hand' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO95JIS62291984handadd' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO96JISC62291984kana' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2033' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO99NAPLPS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO102T617bit' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO103T618bit' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO111ECMACyrillic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csa71' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csa72' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO123CSAZ24341985gr' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88596E' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88596I' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO128T101G2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88598E' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO88598I' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO139CSN369103' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO141JUSIB1002' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO143IECP271' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO146Serbian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO147Macedonian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO150' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO151Cuba' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO6937Add' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO153GOST1976874' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO8859Supp' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO10367Box' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO158Lap' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO159JISX02121990' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO646Danish' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUSDK' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csDKUS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKSC5636' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicode11UTF7' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022CN' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO2022CNEXT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO885913' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO885914' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO885915' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO885916' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csGBK' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csGB18030' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csOSDEBCDICDF0415' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csOSDEBCDICDF03IRV' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csOSDEBCDICDF041' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csISO115481' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKZ1048' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicode' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUCS4' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeASCII' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeLatin1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1261' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1268' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1276' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1264' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicodeIBM1265' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnicode11' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csSCSU' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF7' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF16BE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF16LE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF16' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csCESU8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF32' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF32BE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUTF32LE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csBOCU1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows30Latin1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows31Latin1' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows31Latin2' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows31Latin5' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPRoman8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csAdobeStandardEncoding' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVenturaUS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVenturaInternational' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csDECMCS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC850Multilingual' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPCp852' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC8CodePage437' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC8DanishNorwegian' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC862LatinHebrew' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC8Turkish' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBMSymbols' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBMThai' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPLegal' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPPiFont' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPMath8' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPPSMath' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHPDesktop' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVenturaMath' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csMicrosoftPublishing' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csWindows31J' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csGB2312' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csBig5' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csMacintosh' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM037' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM038' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM273' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM274' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM275' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM277' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM278' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM280' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM281' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM284' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM285' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM290' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM297' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM420' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM423' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM424' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM500' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM851' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM855' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM857' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM860' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM861' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM863' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM864' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM865' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM868' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM869' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM870' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM871' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM880' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM891' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM903' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBBM904' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM905' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM918' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM1026' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBMEBCDICATDE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICATDEA' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICCAFR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICDKNO' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICDKNOA' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICFISE' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICFISEA' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICFR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICIT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICPT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICES' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICESA' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICESS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICUK' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csEBCDICUS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csUnknown8BiT' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csMnemonic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csMnem' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVISCII' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csVIQR' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKOI8R' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csHZGB2312' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM866' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPC775Baltic' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKOI8U' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM00858' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM00924' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01140' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01141' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01142' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01143' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01144' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01145' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01146' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01147' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01148' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM01149' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csBig5HKSCS' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csIBM1047' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csPTCP154' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csAmiga1251' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csKOI7switched' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csBRF' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csTSCII' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1250' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1251' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1252' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1253' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1254' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1255' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1256' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1257' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `cswindows1258' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `csTIS620' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2110 named number `reserved' removed from type used in `prtLocalizationCharacterSet' +./Printer-MIB.new:2243 warning: description of object definition `prtInputEntry' changed +../../mibs/ietf/Printer-MIB:1260 info: previous definition of `prtInputEntry' +./Printer-MIB.new:2283 warning: description of object definition `prtInputIndex' changed +../../mibs/ietf/Printer-MIB:1305 info: previous definition of `prtInputIndex' +./Printer-MIB.new:2295 warning: description of object definition `prtInputType' changed +../../mibs/ietf/Printer-MIB:1320 info: previous definition of `prtInputType' +./Printer-MIB.new:2316 warning: type `Integer32' replaces implicit type for `prtInputMediaDimFeedDirDeclared' +../../mibs/ietf/Printer-MIB:1345 info: previous definition of `prtInputMediaDimFeedDirDeclared' +./Printer-MIB.new:2316 range `(-2..2147483647)' removed from type used in `prtInputMediaDimFeedDirDeclared' +../../mibs/ietf/Printer-MIB:1345 info: previous definition of `prtInputMediaDimFeedDirDeclared' +./Printer-MIB.new:2335 warning: type `Integer32' replaces implicit type for `prtInputMediaDimXFeedDirDeclared' +../../mibs/ietf/Printer-MIB:1365 info: previous definition of `prtInputMediaDimXFeedDirDeclared' +./Printer-MIB.new:2335 range `(-2..2147483647)' removed from type used in `prtInputMediaDimXFeedDirDeclared' +../../mibs/ietf/Printer-MIB:1365 info: previous definition of `prtInputMediaDimXFeedDirDeclared' +./Printer-MIB.new:2354 warning: type `Integer32' replaces implicit type for `prtInputMediaDimFeedDirChosen' +../../mibs/ietf/Printer-MIB:1385 info: previous definition of `prtInputMediaDimFeedDirChosen' +./Printer-MIB.new:2354 range `(-2..2147483647)' removed from type used in `prtInputMediaDimFeedDirChosen' +../../mibs/ietf/Printer-MIB:1385 info: previous definition of `prtInputMediaDimFeedDirChosen' +./Printer-MIB.new:2375 warning: type `Integer32' replaces implicit type for `prtInputMediaDimXFeedDirChosen' +../../mibs/ietf/Printer-MIB:1409 info: previous definition of `prtInputMediaDimXFeedDirChosen' +./Printer-MIB.new:2375 range `(-2..2147483647)' removed from type used in `prtInputMediaDimXFeedDirChosen' +../../mibs/ietf/Printer-MIB:1409 info: previous definition of `prtInputMediaDimXFeedDirChosen' +./Printer-MIB.new:2405 warning: type `Integer32' replaces implicit type for `prtInputMaxCapacity' +../../mibs/ietf/Printer-MIB:1443 info: previous definition of `prtInputMaxCapacity' +./Printer-MIB.new:2405 range `(-2..2147483647)' removed from type used in `prtInputMaxCapacity' +../../mibs/ietf/Printer-MIB:1443 info: previous definition of `prtInputMaxCapacity' +./Printer-MIB.new:2422 warning: type `Integer32' replaces implicit type for `prtInputCurrentLevel' +../../mibs/ietf/Printer-MIB:1461 info: previous definition of `prtInputCurrentLevel' +./Printer-MIB.new:2422 range `(-3..2147483647)' removed from type used in `prtInputCurrentLevel' +../../mibs/ietf/Printer-MIB:1461 info: previous definition of `prtInputCurrentLevel' +./Printer-MIB.new:2447 warning: description of object definition `prtInputMediaName' changed +./Printer-MIB.new:2447 warning: reference of `prtInputMediaName' changed +../../mibs/ietf/Printer-MIB:1487 info: previous definition of `prtInputMediaName' +./Printer-MIB.new:2558 warning: type `Integer32' replaces implicit type for `prtInputMediaWeight' +../../mibs/ietf/Printer-MIB:1604 info: previous definition of `prtInputMediaWeight' +./Printer-MIB.new:2558 range `(-2..2147483647)' removed from type used in `prtInputMediaWeight' +../../mibs/ietf/Printer-MIB:1604 info: previous definition of `prtInputMediaWeight' +./Printer-MIB.new:2567 warning: description of object definition `prtInputMediaType' changed +../../mibs/ietf/Printer-MIB:1614 reference removed from `prtInputMediaType' +../../mibs/ietf/Printer-MIB:1614 info: previous definition of `prtInputMediaType' +./Printer-MIB.new:2609 warning: description of object definition `prtInputMediaColor' changed +../../mibs/ietf/Printer-MIB:1633 reference removed from `prtInputMediaColor' +../../mibs/ietf/Printer-MIB:1633 info: previous definition of `prtInputMediaColor' +./Printer-MIB.new:2635 warning: type `Integer32' replaces implicit type for `prtInputMediaFormParts' +../../mibs/ietf/Printer-MIB:1654 info: previous definition of `prtInputMediaFormParts' +./Printer-MIB.new:2635 range `(-2..2147483647)' removed from type used in `prtInputMediaFormParts' +../../mibs/ietf/Printer-MIB:1654 info: previous definition of `prtInputMediaFormParts' +./Printer-MIB.new:2658 warning: type `Integer32' replaces implicit type for `prtInputMediaLoadTimeout' +../../mibs/ietf/Printer-MIB:1675 info: previous definition of `prtInputMediaLoadTimeout' +./Printer-MIB.new:2658 range `(-2..2147483647)' removed from type used in `prtInputMediaLoadTimeout' +../../mibs/ietf/Printer-MIB:1675 info: previous definition of `prtInputMediaLoadTimeout' +./Printer-MIB.new:2680 warning: type `Integer32' replaces implicit type for `prtInputNextIndex' +../../mibs/ietf/Printer-MIB:1698 info: previous definition of `prtInputNextIndex' +./Printer-MIB.new:2680 range `(-3..2147483647)' removed from type used in `prtInputNextIndex' +../../mibs/ietf/Printer-MIB:1698 info: previous definition of `prtInputNextIndex' +./Printer-MIB.new:2721 warning: description of object definition `prtOutputEntry' changed +../../mibs/ietf/Printer-MIB:1737 info: previous definition of `prtOutputEntry' +./Printer-MIB.new:2761 warning: description of object definition `prtOutputIndex' changed +../../mibs/ietf/Printer-MIB:1782 info: previous definition of `prtOutputIndex' +./Printer-MIB.new:2793 warning: type `Integer32' replaces implicit type for `prtOutputMaxCapacity' +../../mibs/ietf/Printer-MIB:1819 info: previous definition of `prtOutputMaxCapacity' +./Printer-MIB.new:2793 range `(-2..2147483647)' removed from type used in `prtOutputMaxCapacity' +../../mibs/ietf/Printer-MIB:1819 info: previous definition of `prtOutputMaxCapacity' +./Printer-MIB.new:2810 warning: type `Integer32' replaces implicit type for `prtOutputRemainingCapacity' +../../mibs/ietf/Printer-MIB:1837 info: previous definition of `prtOutputRemainingCapacity' +./Printer-MIB.new:2810 range `(-3..2147483647)' removed from type used in `prtOutputRemainingCapacity' +../../mibs/ietf/Printer-MIB:1837 info: previous definition of `prtOutputRemainingCapacity' +./Printer-MIB.new:2872 warning: description of object definition `prtOutputModel' changed +../../mibs/ietf/Printer-MIB:1902 info: previous definition of `prtOutputModel' +./Printer-MIB.new:2929 warning: type `Integer32' replaces implicit type for `prtOutputMaxDimFeedDir' +../../mibs/ietf/Printer-MIB:1964 info: previous definition of `prtOutputMaxDimFeedDir' +./Printer-MIB.new:2929 range `(-2..2147483647)' removed from type used in `prtOutputMaxDimFeedDir' +../../mibs/ietf/Printer-MIB:1964 info: previous definition of `prtOutputMaxDimFeedDir' +./Printer-MIB.new:2929 warning: description of object definition `prtOutputMaxDimFeedDir' changed +../../mibs/ietf/Printer-MIB:1964 info: previous definition of `prtOutputMaxDimFeedDir' +./Printer-MIB.new:2943 warning: type `Integer32' replaces implicit type for `prtOutputMaxDimXFeedDir' +../../mibs/ietf/Printer-MIB:1985 info: previous definition of `prtOutputMaxDimXFeedDir' +./Printer-MIB.new:2943 range `(-2..2147483647)' removed from type used in `prtOutputMaxDimXFeedDir' +../../mibs/ietf/Printer-MIB:1985 info: previous definition of `prtOutputMaxDimXFeedDir' +./Printer-MIB.new:2943 warning: description of object definition `prtOutputMaxDimXFeedDir' changed +../../mibs/ietf/Printer-MIB:1985 info: previous definition of `prtOutputMaxDimXFeedDir' +./Printer-MIB.new:2958 warning: type `Integer32' replaces implicit type for `prtOutputMinDimFeedDir' +../../mibs/ietf/Printer-MIB:2008 info: previous definition of `prtOutputMinDimFeedDir' +./Printer-MIB.new:2958 range `(-2..2147483647)' removed from type used in `prtOutputMinDimFeedDir' +../../mibs/ietf/Printer-MIB:2008 info: previous definition of `prtOutputMinDimFeedDir' +./Printer-MIB.new:2958 warning: description of object definition `prtOutputMinDimFeedDir' changed +../../mibs/ietf/Printer-MIB:2008 info: previous definition of `prtOutputMinDimFeedDir' +./Printer-MIB.new:2972 warning: type `Integer32' replaces implicit type for `prtOutputMinDimXFeedDir' +../../mibs/ietf/Printer-MIB:2029 info: previous definition of `prtOutputMinDimXFeedDir' +./Printer-MIB.new:2972 range `(-2..2147483647)' removed from type used in `prtOutputMinDimXFeedDir' +../../mibs/ietf/Printer-MIB:2029 info: previous definition of `prtOutputMinDimXFeedDir' +./Printer-MIB.new:2972 warning: description of object definition `prtOutputMinDimXFeedDir' changed +../../mibs/ietf/Printer-MIB:2029 info: previous definition of `prtOutputMinDimXFeedDir' +./Printer-MIB.new:3044 warning: description of object definition `prtOutputPageCollated' changed +../../mibs/ietf/Printer-MIB:2114 info: previous definition of `prtOutputPageCollated' +./Printer-MIB.new:3055 warning: description of object definition `prtOutputOffsetStacking' changed +../../mibs/ietf/Printer-MIB:2128 info: previous definition of `prtOutputOffsetStacking' +./Printer-MIB.new:3087 warning: description of object definition `prtMarkerTable' changed +../../mibs/ietf/Printer-MIB:2164 info: previous definition of `prtMarkerTable' +./Printer-MIB.new:3096 warning: description of object definition `prtMarkerEntry' changed +../../mibs/ietf/Printer-MIB:2176 info: previous definition of `prtMarkerEntry' +./Printer-MIB.new:3124 warning: description of object definition `prtMarkerIndex' changed +../../mibs/ietf/Printer-MIB:2210 info: previous definition of `prtMarkerIndex' +./Printer-MIB.new:3159 warning: description of object definition `prtMarkerLifeCount' changed +../../mibs/ietf/Printer-MIB:2250 info: previous definition of `prtMarkerLifeCount' +./Printer-MIB.new:3179 warning: description of object definition `prtMarkerProcessColorants' changed +../../mibs/ietf/Printer-MIB:2276 info: previous definition of `prtMarkerProcessColorants' +./Printer-MIB.new:3191 warning: description of object definition `prtMarkerSpotColorants' changed +../../mibs/ietf/Printer-MIB:2290 info: previous definition of `prtMarkerSpotColorants' +./Printer-MIB.new:3201 warning: description of object definition `prtMarkerAddressabilityUnit' changed +../../mibs/ietf/Printer-MIB:2303 info: previous definition of `prtMarkerAddressabilityUnit' +./Printer-MIB.new:3211 warning: type `Integer32' replaces implicit type for `prtMarkerAddressabilityFeedDir' +../../mibs/ietf/Printer-MIB:2320 info: previous definition of `prtMarkerAddressabilityFeedDir' +./Printer-MIB.new:3211 range `(-2..2147483647)' removed from type used in `prtMarkerAddressabilityFeedDir' +../../mibs/ietf/Printer-MIB:2320 info: previous definition of `prtMarkerAddressabilityFeedDir' +./Printer-MIB.new:3211 warning: description of object definition `prtMarkerAddressabilityFeedDir' changed +../../mibs/ietf/Printer-MIB:2320 info: previous definition of `prtMarkerAddressabilityFeedDir' +./Printer-MIB.new:3222 warning: type `Integer32' replaces implicit type for `prtMarkerAddressabilityXFeedDir' +../../mibs/ietf/Printer-MIB:2335 info: previous definition of `prtMarkerAddressabilityXFeedDir' +./Printer-MIB.new:3222 range `(-2..2147483647)' removed from type used in `prtMarkerAddressabilityXFeedDir' +../../mibs/ietf/Printer-MIB:2335 info: previous definition of `prtMarkerAddressabilityXFeedDir' +./Printer-MIB.new:3222 warning: description of object definition `prtMarkerAddressabilityXFeedDir' changed +../../mibs/ietf/Printer-MIB:2335 info: previous definition of `prtMarkerAddressabilityXFeedDir' +./Printer-MIB.new:3234 warning: type `Integer32' replaces implicit type for `prtMarkerNorthMargin' +../../mibs/ietf/Printer-MIB:2350 info: previous definition of `prtMarkerNorthMargin' +./Printer-MIB.new:3234 range `(-2..2147483647)' removed from type used in `prtMarkerNorthMargin' +../../mibs/ietf/Printer-MIB:2350 info: previous definition of `prtMarkerNorthMargin' +./Printer-MIB.new:3249 warning: type `Integer32' replaces implicit type for `prtMarkerSouthMargin' +../../mibs/ietf/Printer-MIB:2369 info: previous definition of `prtMarkerSouthMargin' +./Printer-MIB.new:3249 range `(-2..2147483647)' removed from type used in `prtMarkerSouthMargin' +../../mibs/ietf/Printer-MIB:2369 info: previous definition of `prtMarkerSouthMargin' +./Printer-MIB.new:3260 warning: type `Integer32' replaces implicit type for `prtMarkerWestMargin' +../../mibs/ietf/Printer-MIB:2381 info: previous definition of `prtMarkerWestMargin' +./Printer-MIB.new:3260 range `(-2..2147483647)' removed from type used in `prtMarkerWestMargin' +../../mibs/ietf/Printer-MIB:2381 info: previous definition of `prtMarkerWestMargin' +./Printer-MIB.new:3271 warning: type `Integer32' replaces implicit type for `prtMarkerEastMargin' +../../mibs/ietf/Printer-MIB:2393 info: previous definition of `prtMarkerEastMargin' +./Printer-MIB.new:3271 range `(-2..2147483647)' removed from type used in `prtMarkerEastMargin' +../../mibs/ietf/Printer-MIB:2393 info: previous definition of `prtMarkerEastMargin' +./Printer-MIB.new:3306 warning: description of object definition `prtMarkerSuppliesEntry' changed +../../mibs/ietf/Printer-MIB:2428 info: previous definition of `prtMarkerSuppliesEntry' +./Printer-MIB.new:3329 warning: description of object definition `prtMarkerSuppliesIndex' changed +../../mibs/ietf/Printer-MIB:2452 info: previous definition of `prtMarkerSuppliesIndex' +./Printer-MIB.new:3350 warning: description of object definition `prtMarkerSuppliesColorantIndex' changed +../../mibs/ietf/Printer-MIB:2479 info: previous definition of `prtMarkerSuppliesColorantIndex' +./Printer-MIB.new:3361 warning: description of object definition `prtMarkerSuppliesClass' changed +../../mibs/ietf/Printer-MIB:2492 info: previous definition of `prtMarkerSuppliesClass' +./Printer-MIB.new:3390 warning: description of object definition `prtMarkerSuppliesSupplyUnit' changed +../../mibs/ietf/Printer-MIB:2530 info: previous definition of `prtMarkerSuppliesSupplyUnit' +./Printer-MIB.new:3399 warning: type `Integer32' replaces implicit type for `prtMarkerSuppliesMaxCapacity' +../../mibs/ietf/Printer-MIB:2543 info: previous definition of `prtMarkerSuppliesMaxCapacity' +./Printer-MIB.new:3399 range `(-2..2147483647)' removed from type used in `prtMarkerSuppliesMaxCapacity' +../../mibs/ietf/Printer-MIB:2543 info: previous definition of `prtMarkerSuppliesMaxCapacity' +./Printer-MIB.new:3415 warning: type `Integer32' replaces implicit type for `prtMarkerSuppliesLevel' +../../mibs/ietf/Printer-MIB:2559 info: previous definition of `prtMarkerSuppliesLevel' +./Printer-MIB.new:3415 range `(-3..2147483647)' removed from type used in `prtMarkerSuppliesLevel' +../../mibs/ietf/Printer-MIB:2559 info: previous definition of `prtMarkerSuppliesLevel' +./Printer-MIB.new:3415 warning: description of object definition `prtMarkerSuppliesLevel' changed +../../mibs/ietf/Printer-MIB:2559 info: previous definition of `prtMarkerSuppliesLevel' +./Printer-MIB.new:3447 warning: description of object definition `prtMarkerColorantEntry' changed +../../mibs/ietf/Printer-MIB:2592 info: previous definition of `prtMarkerColorantEntry' +./Printer-MIB.new:3467 warning: description of object definition `prtMarkerColorantIndex' changed +../../mibs/ietf/Printer-MIB:2616 info: previous definition of `prtMarkerColorantIndex' +./Printer-MIB.new:3520 warning: type `Integer32' replaces implicit type for `prtMarkerColorantTonality' +../../mibs/ietf/Printer-MIB:2676 info: previous definition of `prtMarkerColorantTonality' +./Printer-MIB.new:3520 range `(2..2147483647)' removed from type used in `prtMarkerColorantTonality' +../../mibs/ietf/Printer-MIB:2676 info: previous definition of `prtMarkerColorantTonality' +./Printer-MIB.new:3544 warning: description of object definition `prtMediaPathTable' changed +../../mibs/ietf/Printer-MIB:2699 info: previous definition of `prtMediaPathTable' +./Printer-MIB.new:3553 warning: description of object definition `prtMediaPathEntry' changed +../../mibs/ietf/Printer-MIB:2711 info: previous definition of `prtMediaPathEntry' +./Printer-MIB.new:3578 warning: description of object definition `prtMediaPathIndex' changed +../../mibs/ietf/Printer-MIB:2744 info: previous definition of `prtMediaPathIndex' +./Printer-MIB.new:3610 warning: type `Integer32' replaces implicit type for `prtMediaPathMaxSpeed' +../../mibs/ietf/Printer-MIB:2783 info: previous definition of `prtMediaPathMaxSpeed' +./Printer-MIB.new:3610 range `(-2..2147483647)' removed from type used in `prtMediaPathMaxSpeed' +../../mibs/ietf/Printer-MIB:2783 info: previous definition of `prtMediaPathMaxSpeed' +./Printer-MIB.new:3619 warning: type `Integer32' replaces implicit type for `prtMediaPathMaxMediaFeedDir' +../../mibs/ietf/Printer-MIB:2793 info: previous definition of `prtMediaPathMaxMediaFeedDir' +./Printer-MIB.new:3619 range `(-2..2147483647)' removed from type used in `prtMediaPathMaxMediaFeedDir' +../../mibs/ietf/Printer-MIB:2793 info: previous definition of `prtMediaPathMaxMediaFeedDir' +./Printer-MIB.new:3619 warning: description of object definition `prtMediaPathMaxMediaFeedDir' changed +../../mibs/ietf/Printer-MIB:2793 info: previous definition of `prtMediaPathMaxMediaFeedDir' +./Printer-MIB.new:3630 warning: type `Integer32' replaces implicit type for `prtMediaPathMaxMediaXFeedDir' +../../mibs/ietf/Printer-MIB:2808 info: previous definition of `prtMediaPathMaxMediaXFeedDir' +./Printer-MIB.new:3630 range `(-2..2147483647)' removed from type used in `prtMediaPathMaxMediaXFeedDir' +../../mibs/ietf/Printer-MIB:2808 info: previous definition of `prtMediaPathMaxMediaXFeedDir' +./Printer-MIB.new:3630 warning: description of object definition `prtMediaPathMaxMediaXFeedDir' changed +../../mibs/ietf/Printer-MIB:2808 info: previous definition of `prtMediaPathMaxMediaXFeedDir' +./Printer-MIB.new:3640 warning: type `Integer32' replaces implicit type for `prtMediaPathMinMediaFeedDir' +../../mibs/ietf/Printer-MIB:2824 info: previous definition of `prtMediaPathMinMediaFeedDir' +./Printer-MIB.new:3640 range `(-2..2147483647)' removed from type used in `prtMediaPathMinMediaFeedDir' +../../mibs/ietf/Printer-MIB:2824 info: previous definition of `prtMediaPathMinMediaFeedDir' +./Printer-MIB.new:3640 warning: description of object definition `prtMediaPathMinMediaFeedDir' changed +../../mibs/ietf/Printer-MIB:2824 info: previous definition of `prtMediaPathMinMediaFeedDir' +./Printer-MIB.new:3651 warning: type `Integer32' replaces implicit type for `prtMediaPathMinMediaXFeedDir' +../../mibs/ietf/Printer-MIB:2838 info: previous definition of `prtMediaPathMinMediaXFeedDir' +./Printer-MIB.new:3651 range `(-2..2147483647)' removed from type used in `prtMediaPathMinMediaXFeedDir' +../../mibs/ietf/Printer-MIB:2838 info: previous definition of `prtMediaPathMinMediaXFeedDir' +./Printer-MIB.new:3651 warning: description of object definition `prtMediaPathMinMediaXFeedDir' changed +../../mibs/ietf/Printer-MIB:2838 info: previous definition of `prtMediaPathMinMediaXFeedDir' +./Printer-MIB.new:3778 warning: description of object definition `prtChannelTable' changed +../../mibs/ietf/Printer-MIB:2977 info: previous definition of `prtChannelTable' +./Printer-MIB.new:3787 warning: description of object definition `prtChannelEntry' changed +../../mibs/ietf/Printer-MIB:2990 info: previous definition of `prtChannelEntry' +./Printer-MIB.new:3810 range of type used in `prtChannelIndex' changed from `(1..65535)' to `(1..2147483647)' +./Printer-MIB.new:3809 warning: description of object definition `prtChannelIndex' changed +../../mibs/ietf/Printer-MIB:3018 info: previous definition of `prtChannelIndex' +./Printer-MIB.new:3821 named number `unknown' removed from type used in `prtChannelType' +./Printer-MIB.new:3821 warning: named number `chDPMF' changed to `chPSM' at type used in `prtChannelType' +./Printer-MIB.new:3821 named number `chSMTP' removed from type used in `prtChannelType' +./Printer-MIB.new:3842 warning: type `Integer32' replaces implicit type for `prtChannelCurrentJobCntlLangIndex' +../../mibs/ietf/Printer-MIB:3059 info: previous definition of `prtChannelCurrentJobCntlLangIndex' +./Printer-MIB.new:3842 range `(0..65535)' removed from type used in `prtChannelCurrentJobCntlLangIndex' +../../mibs/ietf/Printer-MIB:3059 info: previous definition of `prtChannelCurrentJobCntlLangIndex' +./Printer-MIB.new:3842 warning: description of object definition `prtChannelCurrentJobCntlLangIndex' changed +../../mibs/ietf/Printer-MIB:3059 info: previous definition of `prtChannelCurrentJobCntlLangIndex' +./Printer-MIB.new:3856 warning: type `Integer32' replaces implicit type for `prtChannelDefaultPageDescLangIndex' +../../mibs/ietf/Printer-MIB:3079 info: previous definition of `prtChannelDefaultPageDescLangIndex' +./Printer-MIB.new:3856 range `(0..65535)' removed from type used in `prtChannelDefaultPageDescLangIndex' +../../mibs/ietf/Printer-MIB:3079 info: previous definition of `prtChannelDefaultPageDescLangIndex' +./Printer-MIB.new:3856 warning: description of object definition `prtChannelDefaultPageDescLangIndex' changed +../../mibs/ietf/Printer-MIB:3079 info: previous definition of `prtChannelDefaultPageDescLangIndex' +./Printer-MIB.new:3883 range `(0..2147483647)' removed from type used in `prtChannelIfIndex' +../../mibs/ietf/Printer-MIB:3110 info: previous definition of `prtChannelIfIndex' +./Printer-MIB.new:3883 warning: description of object definition `prtChannelIfIndex' changed +../../mibs/ietf/Printer-MIB:3110 info: previous definition of `prtChannelIfIndex' +./Printer-MIB.new:3904 warning: description of object definition `prtChannelInformation' changed +../../mibs/ietf/Printer-MIB:3137 info: previous definition of `prtChannelInformation' +./Printer-MIB.new:4047 warning: description of object definition `prtInterpreterTable' changed +../../mibs/ietf/Printer-MIB:3281 info: previous definition of `prtInterpreterTable' +./Printer-MIB.new:4055 warning: description of object definition `prtInterpreterEntry' changed +../../mibs/ietf/Printer-MIB:3294 info: previous definition of `prtInterpreterEntry' +./Printer-MIB.new:4081 warning: description of object definition `prtInterpreterIndex' changed +../../mibs/ietf/Printer-MIB:3325 info: previous definition of `prtInterpreterIndex' +./Printer-MIB.new:4095 named number `langCGM' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langJPEG' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langCALS1' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langCALS2' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langNIRS' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 named number `langC4' removed from type used in `prtInterpreterLangFamily' +./Printer-MIB.new:4095 warning: description of object definition `prtInterpreterLangFamily' changed +../../mibs/ietf/Printer-MIB:3345 info: previous definition of `prtInterpreterLangFamily' +./Printer-MIB.new:4165 warning: type `Integer32' replaces implicit type for `prtInterpreterFeedAddressability' +../../mibs/ietf/Printer-MIB:3423 info: previous definition of `prtInterpreterFeedAddressability' +./Printer-MIB.new:4165 range `(-2..2147483647)' removed from type used in `prtInterpreterFeedAddressability' +../../mibs/ietf/Printer-MIB:3423 info: previous definition of `prtInterpreterFeedAddressability' +./Printer-MIB.new:4165 warning: description of object definition `prtInterpreterFeedAddressability' changed +../../mibs/ietf/Printer-MIB:3423 info: previous definition of `prtInterpreterFeedAddressability' +./Printer-MIB.new:4177 warning: type `Integer32' replaces implicit type for `prtInterpreterXFeedAddressability' +../../mibs/ietf/Printer-MIB:3443 info: previous definition of `prtInterpreterXFeedAddressability' +./Printer-MIB.new:4177 range `(-2..2147483647)' removed from type used in `prtInterpreterXFeedAddressability' +../../mibs/ietf/Printer-MIB:3443 info: previous definition of `prtInterpreterXFeedAddressability' +./Printer-MIB.new:4177 warning: description of object definition `prtInterpreterXFeedAddressability' changed +../../mibs/ietf/Printer-MIB:3443 info: previous definition of `prtInterpreterXFeedAddressability' +./Printer-MIB.new:4189 named number `unknown' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csASCII' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin3' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin4' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatinCyrillic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatinArabic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatinGreek' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatinHebrew' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin5' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOLatin6' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISOTextComm' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHalfWidthKatakana' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csJISEncoding' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csShiftJIS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEUCPkdFmtJapanese' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEUCFixWidJapanese' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO4UnitedKingdom' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO11SwedishForNames' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO15Italian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO17Spanish' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO21German' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO60DanishNorwegian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO69French' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO10646UTF1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO646basic1983' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csINVARIANT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2IntlRefVersion' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csNATSSEFI' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csNATSSEFIADD' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csNATSDANO' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csNATSDANOADD' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO10Swedish' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKSC56011987' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022KR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEUCKR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022JP' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022JP2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO13JISC6220jp' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO14JISC6220ro' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO16Portuguese' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO18Greek7Old' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO19LatinGreek' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO25French' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO27LatinGreek1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO5427Cyrillic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO42JISC62261978' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO47BSViewdata' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO49INIS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO50INIS8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO51INISCyrillic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO54271981' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO5428Greek' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO57GB1988' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO58GB231280' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO61Norwegian2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO70VideotexSupp1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO84Portuguese2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO85Spanish2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO86Hungarian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO87JISX0208' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88Greek7' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO89ASMO449' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO90' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO91JISC62291984a' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO92JISC62991984b' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO93JIS62291984badd' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO94JIS62291984hand' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO95JIS62291984handadd' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO96JISC62291984kana' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2033' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO99NAPLPS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO102T617bit' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO103T618bit' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO111ECMACyrillic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csa71' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csa72' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO123CSAZ24341985gr' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88596E' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88596I' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO128T101G2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88598E' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO88598I' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO139CSN369103' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO141JUSIB1002' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO143IECP271' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO146Serbian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO147Macedonian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO150' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO151Cuba' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO6937Add' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO153GOST1976874' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO8859Supp' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO10367Box' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO158Lap' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO159JISX02121990' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO646Danish' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUSDK' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csDKUS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKSC5636' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicode11UTF7' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022CN' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO2022CNEXT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO885913' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO885914' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO885915' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO885916' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csGBK' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csGB18030' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csOSDEBCDICDF0415' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csOSDEBCDICDF03IRV' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csOSDEBCDICDF041' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csISO115481' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKZ1048' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicode' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUCS4' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeASCII' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeLatin1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1261' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1268' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1276' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1264' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicodeIBM1265' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnicode11' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csSCSU' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF7' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF16BE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF16LE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF16' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csCESU8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF32' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF32BE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUTF32LE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csBOCU1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows30Latin1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows31Latin1' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows31Latin2' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows31Latin5' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPRoman8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csAdobeStandardEncoding' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVenturaUS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVenturaInternational' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csDECMCS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC850Multilingual' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPCp852' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC8CodePage437' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC8DanishNorwegian' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC862LatinHebrew' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC8Turkish' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBMSymbols' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBMThai' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPLegal' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPPiFont' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPMath8' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPPSMath' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHPDesktop' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVenturaMath' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csMicrosoftPublishing' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csWindows31J' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csGB2312' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csBig5' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csMacintosh' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM037' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM038' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM273' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM274' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM275' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM277' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM278' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM280' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM281' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM284' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM285' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM290' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM297' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM420' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM423' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM424' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM500' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM851' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM855' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM857' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM860' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM861' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM863' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM864' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM865' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM868' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM869' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM870' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM871' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM880' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM891' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM903' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBBM904' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM905' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM918' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM1026' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBMEBCDICATDE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICATDEA' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICCAFR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICDKNO' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICDKNOA' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICFISE' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICFISEA' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICFR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICIT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICPT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICES' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICESA' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICESS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICUK' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csEBCDICUS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csUnknown8BiT' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csMnemonic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csMnem' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVISCII' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csVIQR' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKOI8R' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csHZGB2312' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM866' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPC775Baltic' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKOI8U' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM00858' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM00924' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01140' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01141' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01142' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01143' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01144' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01145' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01146' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01147' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01148' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM01149' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csBig5HKSCS' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csIBM1047' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csPTCP154' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csAmiga1251' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csKOI7switched' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csBRF' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csTSCII' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1250' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1251' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1252' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1253' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1254' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1255' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1256' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1257' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `cswindows1258' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `csTIS620' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 named number `reserved' removed from type used in `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4189 warning: description of object definition `prtInterpreterDefaultCharSetIn' changed +../../mibs/ietf/Printer-MIB:3460 info: previous definition of `prtInterpreterDefaultCharSetIn' +./Printer-MIB.new:4202 named number `unknown' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csASCII' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin3' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin4' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatinCyrillic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatinArabic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatinGreek' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatinHebrew' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin5' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOLatin6' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISOTextComm' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHalfWidthKatakana' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csJISEncoding' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csShiftJIS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEUCPkdFmtJapanese' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEUCFixWidJapanese' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO4UnitedKingdom' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO11SwedishForNames' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO15Italian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO17Spanish' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO21German' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO60DanishNorwegian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO69French' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO10646UTF1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO646basic1983' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csINVARIANT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2IntlRefVersion' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csNATSSEFI' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csNATSSEFIADD' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csNATSDANO' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csNATSDANOADD' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO10Swedish' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKSC56011987' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022KR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEUCKR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022JP' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022JP2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO13JISC6220jp' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO14JISC6220ro' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO16Portuguese' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO18Greek7Old' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO19LatinGreek' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO25French' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO27LatinGreek1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO5427Cyrillic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO42JISC62261978' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO47BSViewdata' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO49INIS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO50INIS8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO51INISCyrillic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO54271981' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO5428Greek' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO57GB1988' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO58GB231280' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO61Norwegian2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO70VideotexSupp1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO84Portuguese2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO85Spanish2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO86Hungarian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO87JISX0208' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88Greek7' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO89ASMO449' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO90' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO91JISC62291984a' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO92JISC62991984b' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO93JIS62291984badd' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO94JIS62291984hand' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO95JIS62291984handadd' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO96JISC62291984kana' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2033' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO99NAPLPS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO102T617bit' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO103T618bit' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO111ECMACyrillic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csa71' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csa72' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO123CSAZ24341985gr' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88596E' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88596I' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO128T101G2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88598E' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO88598I' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO139CSN369103' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO141JUSIB1002' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO143IECP271' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO146Serbian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO147Macedonian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO150' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO151Cuba' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO6937Add' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO153GOST1976874' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO8859Supp' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO10367Box' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO158Lap' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO159JISX02121990' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO646Danish' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUSDK' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csDKUS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKSC5636' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicode11UTF7' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022CN' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO2022CNEXT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO885913' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO885914' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO885915' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO885916' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csGBK' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csGB18030' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csOSDEBCDICDF0415' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csOSDEBCDICDF03IRV' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csOSDEBCDICDF041' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csISO115481' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKZ1048' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicode' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUCS4' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeASCII' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeLatin1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1261' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1268' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1276' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1264' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicodeIBM1265' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnicode11' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csSCSU' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF7' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF16BE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF16LE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF16' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csCESU8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF32' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF32BE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUTF32LE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csBOCU1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows30Latin1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows31Latin1' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows31Latin2' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows31Latin5' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPRoman8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csAdobeStandardEncoding' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVenturaUS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVenturaInternational' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csDECMCS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC850Multilingual' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPCp852' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC8CodePage437' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC8DanishNorwegian' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC862LatinHebrew' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC8Turkish' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBMSymbols' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBMThai' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPLegal' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPPiFont' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPMath8' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPPSMath' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHPDesktop' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVenturaMath' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csMicrosoftPublishing' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csWindows31J' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csGB2312' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csBig5' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csMacintosh' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM037' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM038' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM273' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM274' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM275' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM277' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM278' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM280' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM281' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM284' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM285' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM290' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM297' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM420' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM423' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM424' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM500' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM851' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM855' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM857' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM860' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM861' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM863' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM864' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM865' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM868' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM869' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM870' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM871' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM880' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM891' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM903' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBBM904' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM905' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM918' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM1026' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBMEBCDICATDE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICATDEA' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICCAFR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICDKNO' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICDKNOA' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICFISE' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICFISEA' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICFR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICIT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICPT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICES' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICESA' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICESS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICUK' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csEBCDICUS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csUnknown8BiT' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csMnemonic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csMnem' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVISCII' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csVIQR' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKOI8R' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csHZGB2312' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM866' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPC775Baltic' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKOI8U' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM00858' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM00924' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01140' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01141' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01142' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01143' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01144' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01145' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01146' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01147' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01148' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM01149' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csBig5HKSCS' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csIBM1047' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csPTCP154' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csAmiga1251' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csKOI7switched' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csBRF' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csTSCII' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1250' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1251' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1252' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1253' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1254' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1255' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1256' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1257' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `cswindows1258' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `csTIS620' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 named number `reserved' removed from type used in `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4202 warning: description of object definition `prtInterpreterDefaultCharSetOut' changed +../../mibs/ietf/Printer-MIB:3472 info: previous definition of `prtInterpreterDefaultCharSetOut' +./Printer-MIB.new:4236 warning: description of object definition `prtConsoleDisplayBufferTable' changed +../../mibs/ietf/Printer-MIB:3508 info: previous definition of `prtConsoleDisplayBufferTable' +./Printer-MIB.new:4246 warning: description of object definition `prtConsoleDisplayBufferEntry' changed +../../mibs/ietf/Printer-MIB:3520 info: previous definition of `prtConsoleDisplayBufferEntry' +./Printer-MIB.new:4263 warning: description of object definition `prtConsoleDisplayBufferIndex' changed +../../mibs/ietf/Printer-MIB:3543 info: previous definition of `prtConsoleDisplayBufferIndex' +./Printer-MIB.new:4299 warning: description of object definition `prtConsoleLightTable' changed +../../mibs/ietf/Printer-MIB:3585 info: previous definition of `prtConsoleLightTable' +./Printer-MIB.new:4307 warning: description of object definition `prtConsoleLightEntry' changed +../../mibs/ietf/Printer-MIB:3597 info: previous definition of `prtConsoleLightEntry' +./Printer-MIB.new:4325 warning: description of object definition `prtConsoleLightIndex' changed +../../mibs/ietf/Printer-MIB:3618 info: previous definition of `prtConsoleLightIndex' +./Printer-MIB.new:4338 warning: type `Integer32' replaces implicit type for `prtConsoleOnTime' +../../mibs/ietf/Printer-MIB:3636 info: previous definition of `prtConsoleOnTime' +./Printer-MIB.new:4338 range `(0..2147483647)' removed from type used in `prtConsoleOnTime' +../../mibs/ietf/Printer-MIB:3636 info: previous definition of `prtConsoleOnTime' +./Printer-MIB.new:4338 warning: description of object definition `prtConsoleOnTime' changed +../../mibs/ietf/Printer-MIB:3636 info: previous definition of `prtConsoleOnTime' +./Printer-MIB.new:4353 warning: type `Integer32' replaces implicit type for `prtConsoleOffTime' +../../mibs/ietf/Printer-MIB:3655 info: previous definition of `prtConsoleOffTime' +./Printer-MIB.new:4353 range `(0..2147483647)' removed from type used in `prtConsoleOffTime' +../../mibs/ietf/Printer-MIB:3655 info: previous definition of `prtConsoleOffTime' +./Printer-MIB.new:4353 warning: description of object definition `prtConsoleOffTime' changed +../../mibs/ietf/Printer-MIB:3655 info: previous definition of `prtConsoleOffTime' +./Printer-MIB.new:4413 warning: description of object definition `prtAlertTable' changed +../../mibs/ietf/Printer-MIB:3716 info: previous definition of `prtAlertTable' +./Printer-MIB.new:4421 warning: description of object definition `prtAlertEntry' changed +../../mibs/ietf/Printer-MIB:3732 info: previous definition of `prtAlertEntry' +./Printer-MIB.new:4444 warning: access of `prtAlertIndex' changed from `read-only' to `not-accessible' +./Printer-MIB.new:4444 warning: description of object definition `prtAlertIndex' changed +../../mibs/ietf/Printer-MIB:3760 info: previous definition of `prtAlertIndex' +./Printer-MIB.new:4488 warning: description of object definition `prtAlertTrainingLevel' changed +../../mibs/ietf/Printer-MIB:3815 info: previous definition of `prtAlertTrainingLevel' +./Printer-MIB.new:4497 named number `unknown' removed from type used in `prtAlertGroup' +./Printer-MIB.new:4497 warning: named number `finAttribute' changed to `finAttributeTable' at type used in `prtAlertGroup' +./Printer-MIB.new:4510 warning: type `Integer32' replaces implicit type for `prtAlertGroupIndex' +../../mibs/ietf/Printer-MIB:3845 info: previous definition of `prtAlertGroupIndex' +./Printer-MIB.new:4510 range `(-1..2147483647)' removed from type used in `prtAlertGroupIndex' +../../mibs/ietf/Printer-MIB:3845 info: previous definition of `prtAlertGroupIndex' +./Printer-MIB.new:4510 warning: description of object definition `prtAlertGroupIndex' changed +../../mibs/ietf/Printer-MIB:3845 info: previous definition of `prtAlertGroupIndex' +./Printer-MIB.new:4528 warning: type `Integer32' replaces implicit type for `prtAlertLocation' +../../mibs/ietf/Printer-MIB:3866 info: previous definition of `prtAlertLocation' +./Printer-MIB.new:4528 range `(-2..2147483647)' removed from type used in `prtAlertLocation' +../../mibs/ietf/Printer-MIB:3866 info: previous definition of `prtAlertLocation' +./Printer-MIB.new:4528 warning: description of object definition `prtAlertLocation' changed +../../mibs/ietf/Printer-MIB:3866 info: previous definition of `prtAlertLocation' +./Printer-MIB.new:4541 warning: named number `mediaPathCannotDuplexMediaSelected' changed to `mediaPathcannotDuplexMediaSelected' at type used in `prtAlertCode' +./Printer-MIB.new:4541 warning: description of object definition `prtAlertCode' changed +../../mibs/ietf/Printer-MIB:3883 info: previous definition of `prtAlertCode' +./Printer-MIB.new:4565 warning: description of object definition `prtAlertTime' changed +../../mibs/ietf/Printer-MIB:3915 info: previous definition of `prtAlertTime' +./Printer-MIB.new:4584 warning: description of notification definition `printerV2Alert' changed +../../mibs/ietf/Printer-MIB:3933 info: previous definition of `printerV2Alert' +./Printer-MIB.new:5139 warning: description of object group definition `prtAlertTableGroup' changed +../../mibs/ietf/Printer-MIB:4569 info: previous definition of `prtAlertTableGroup' +./Printer-MIB.new:5149 warning: description of object group definition `prtAlertTimeGroup' changed +../../mibs/ietf/Printer-MIB:4578 info: previous definition of `prtAlertTimeGroup' +./Printer-MIB.new:5179 warning: description of object group definition `prtAlertTableV2Group' changed +../../mibs/ietf/Printer-MIB:4614 member `prtAlertIndex' removed from group `prtAlertTableV2Group' +../../mibs/ietf/Printer-MIB:4614 info: previous definition of `prtAlertTableV2Group' +./Printer-MIB.new:4614 warning: description of module compliance definition `prtMIBCompliance' changed +../../mibs/ietf/Printer-MIB:3971 info: previous definition of `prtMIBCompliance' +./Printer-MIB.new:4874 optional group `prtResponsiblePartyGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4878 optional group `prtExtendedInputGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4882 optional group `prtInputMediaGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4887 optional group `prtExtendedOutputGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4891 optional group `prtOutputDimensionsGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4895 optional group `prtOutputFeaturesGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4899 optional group `prtMarkerSuppliesGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4903 optional group `prtMarkerColorantGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4907 optional group `prtAlertTimeGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4939 optional group `prtAuxiliarySheetGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4943 optional group `prtInputSwitchingGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4947 optional group `prtGeneralV2Group' added to `prtMIBCompliance' +./Printer-MIB.new:4951 optional group `prtAlertTableV2Group' added to `prtMIBCompliance' +./Printer-MIB.new:4955 optional group `prtChannelV2Group' added to `prtMIBCompliance' +./Printer-MIB.new:4959 optional group `prtAlertTrapGroup' added to `prtMIBCompliance' +./Printer-MIB.new:4634 warning: object refinement for `prtGeneralCurrentLocalization' added to `prtMIBCompliance' +./Printer-MIB.new:4639 warning: object refinement for `prtGeneralCurrentOperator' added to `prtMIBCompliance' +./Printer-MIB.new:4644 warning: object refinement for `prtGeneralServicePerson' added to `prtMIBCompliance' +./Printer-MIB.new:4649 warning: object refinement for `prtGeneralPrinterName' added to `prtMIBCompliance' +./Printer-MIB.new:4654 warning: object refinement for `prtGeneralSerialNumber' added to `prtMIBCompliance' +./Printer-MIB.new:4660 warning: object refinement for `prtInputDefaultIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4665 warning: object refinement for `prtInputMediaDimFeedDirDeclared' added to `prtMIBCompliance' +./Printer-MIB.new:4670 warning: object refinement for `prtInputMaxCapacity' added to `prtMIBCompliance' +./Printer-MIB.new:4675 warning: object refinement for `prtInputCurrentLevel' added to `prtMIBCompliance' +./Printer-MIB.new:4680 warning: object refinement for `prtInputMediaName' added to `prtMIBCompliance' +./Printer-MIB.new:4685 warning: object refinement for `prtInputName' added to `prtMIBCompliance' +./Printer-MIB.new:4690 warning: object refinement for `prtInputSecurity' added to `prtMIBCompliance' +./Printer-MIB.new:4695 warning: object refinement for `prtInputMediaWeight' added to `prtMIBCompliance' +./Printer-MIB.new:4700 warning: object refinement for `prtInputMediaType' added to `prtMIBCompliance' +./Printer-MIB.new:4706 warning: object refinement for `prtInputMediaColor' added to `prtMIBCompliance' +./Printer-MIB.new:4711 warning: object refinement for `prtInputMediaFormParts' added to `prtMIBCompliance' +./Printer-MIB.new:4716 warning: object refinement for `prtOutputDefaultIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4721 warning: object refinement for `prtOutputMaxCapacity' added to `prtMIBCompliance' +./Printer-MIB.new:4726 warning: object refinement for `prtOutputRemainingCapacity' added to `prtMIBCompliance' +./Printer-MIB.new:4731 warning: object refinement for `prtOutputName' added to `prtMIBCompliance' +./Printer-MIB.new:4736 warning: object refinement for `prtOutputSecurity' added to `prtMIBCompliance' +./Printer-MIB.new:4741 warning: object refinement for `prtOutputMaxDimFeedDir' added to `prtMIBCompliance' +./Printer-MIB.new:4746 warning: object refinement for `prtOutputMaxDimXFeedDir' added to `prtMIBCompliance' +./Printer-MIB.new:4752 warning: object refinement for `prtOutputMinDimFeedDir' added to `prtMIBCompliance' +./Printer-MIB.new:4757 warning: object refinement for `prtOutputMinDimXFeedDir' added to `prtMIBCompliance' +./Printer-MIB.new:4762 warning: object refinement for `prtOutputStackingOrder' added to `prtMIBCompliance' +./Printer-MIB.new:4767 warning: object refinement for `prtOutputPageDeliveryOrientation' added to `prtMIBCompliance' +./Printer-MIB.new:4772 warning: object refinement for `prtOutputBursting' added to `prtMIBCompliance' +./Printer-MIB.new:4777 warning: object refinement for `prtOutputDecollating' added to `prtMIBCompliance' +./Printer-MIB.new:4782 warning: object refinement for `prtOutputPageCollated' added to `prtMIBCompliance' +./Printer-MIB.new:4787 warning: object refinement for `prtOutputOffsetStacking' added to `prtMIBCompliance' +./Printer-MIB.new:4792 warning: object refinement for `prtMarkerDefaultIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4798 warning: object refinement for `prtMarkerSuppliesMaxCapacity' added to `prtMIBCompliance' +./Printer-MIB.new:4803 warning: object refinement for `prtMarkerSuppliesLevel' added to `prtMIBCompliance' +./Printer-MIB.new:4808 warning: object refinement for `prtMediaPathDefaultIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4813 warning: object refinement for `prtChannelCurrentJobCntlLangIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4818 warning: object refinement for `prtChannelDefaultPageDescLangIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4823 warning: object refinement for `prtChannelState' added to `prtMIBCompliance' +./Printer-MIB.new:4828 warning: object refinement for `prtChannelIfIndex' added to `prtMIBCompliance' +./Printer-MIB.new:4833 warning: object refinement for `prtInterpreterDefaultOrientation' added to `prtMIBCompliance' +./Printer-MIB.new:4838 warning: object refinement for `prtInterpreterDefaultCharSetIn' added to `prtMIBCompliance' +./Printer-MIB.new:4844 warning: object refinement for `prtInterpreterDefaultCharSetOut' added to `prtMIBCompliance' +./Printer-MIB.new:4849 warning: object refinement for `prtConsoleLocalization' added to `prtMIBCompliance' +./Printer-MIB.new:4854 warning: object refinement for `prtConsoleDisable' added to `prtMIBCompliance' +./Printer-MIB.new:4859 warning: object refinement for `prtConsoleDisplayBufferText' added to `prtMIBCompliance' +./Printer-MIB.new:4918 warning: object refinement for `prtAuxiliarySheetStartupPage' added to `prtMIBCompliance' +./Printer-MIB.new:4923 warning: object refinement for `prtAuxiliarySheetBannerPage' added to `prtMIBCompliance' +./Printer-MIB.new:4928 warning: object refinement for `prtInputMediaLoadTimeout' added to `prtMIBCompliance' +./Printer-MIB.new:4934 warning: object refinement for `prtInputNextIndex' added to `prtMIBCompliance' +../../mibs/ietf/Printer-MIB:4006 compliance `prtMIB2Compliance' has been deleted diff --git a/test/smidiff/Printer-MIB.new b/test/smidiff/Printer-MIB.new new file mode 100644 index 0000000..10f4109 --- /dev/null +++ b/test/smidiff/Printer-MIB.new @@ -0,0 +1,5200 @@ +Printer-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, TimeTicks, + NOTIFICATION-TYPE, OBJECT-IDENTITY, mib-2 FROM SNMPv2-SMI + TEXTUAL-CONVENTION FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF + hrDeviceIndex, hrStorageIndex FROM HOST-RESOURCES-MIB; + + +printmib MODULE-IDENTITY + LAST-UPDATED "200108300000Z" + ORGANIZATION "IETF Printer MIB Working Group" + CONTACT-INFO + "Harry Lewis + IBM Corporation. + 6300 Diagonal Hwy + Boulder, CO 80301 + harryl@us.ibm.com" + DESCRIPTION + "The MIB module for management of printers." + REVISION "200108300000Z" + DESCRIPTION + "Printer MIB v2. + Five new OBJECT-GROUPs: prtAuxilliarySheetGroup, + prtInputSwitchingGroup, prtGeneralV2Group, + prtAlertTableV2Group, prtChannelV2Group. + Nine new objects added to those groups: + prtAuxiliarySheetStartupPage, prtAuxiliarySheetBannerPage, + prtGeneralPrinterName, prtGeneralSerialNumber, + prtAlertCriticalEvents, prtAlertAllEvents, + prtInputMediaLoadTimeout, prtInputNextIndex, + prtChannelInformation. + One new NOTIFICATION-GROUP: prtAlertTrapGroup which contains + printerV2Alert. + In MODULE-COMPLIANCE prtMIBCompliance, new OBJECT-GROUPs and + the NOTIFICATION_GROUP, all in GROUP (not MANDATORY-GROUP) + clauses. The nine new objects are optional, i.e., this draft + is backward compatible with RFC 1759." + REVISION "199411250000Z" + DESCRIPTION + "The original version of this MIB, published as RFC1759." + ::= { mib-2 43 } + +-- Textual conventions for this MIB module +-- +-- Generic unspecific textual conventions +-- + +PrtMediaUnitTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "Units of measure for media dimensions." + SYNTAX INTEGER { + + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +PrtCapacityUnitTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "Units of measure for media capacity." + SYNTAX INTEGER { + other(1), + unknown(2), + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + sheets(8), + feet(16), + meters(17), + -- Values for Finisher MIB + items(18), + percent(19) + } + +PrtPrintOrientationTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "A generic representation for printing orientation on a 'page'." + SYNTAX INTEGER { + other(1), + portrait(3), + landscape(4) + } + +PrtCoverStatusTC ::= TEXTUAL-CONVENTION + -- This is a type 2 enumeration. + STATUS current + DESCRIPTION + "Values for encoding the state of a particular cover or access + panel on the printer case or enclosure." + SYNTAX INTEGER { + other(1), + coverOpen(3), + coverClosed(4), + interlockOpen(5), + interlockClosed(6) + + } + +PrtSubUnitStatusTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "Status of a printer sub-unit. + + The SubUnitStatus is an integer that is the sum of 5 distinct + values, Availability, Non-Critical, Critical, On-line, and + Transitioning. These values are: + + Availability Value + + Available and Idle 0 0000'b + Available and Standby 2 0010'b + Available and Active 4 0100'b + Available and Busy 6 0110'b + Unavailable and OnRequest 1 0001'b + Unavailable because Broken 3 0011'b + Unknown 5 0101'b + + Non-Critical + No Non-Critical Alerts 0 0000'b + Non-Critical Alerts 8 1000'b + + Critical + + No Critical Alerts 0 0000'b + Critical Alerts 16 1 0000'b + + On-Line + + State is On-Line 0 0000'b + State is Off-Line 32 10 0000'b + + Transitioning + + At intended state 0 0000'b + Transitioning to intended state 64 100 0000'b" + + SYNTAX INTEGER (0..126) + +PresentOnOff ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + + STATUS current + DESCRIPTION + "Presence and configuration of a device or feature." + SYNTAX INTEGER { + other(1), + on(3), + off(4), + notPresent(5) + } + +CodedCharSet ::= TEXTUAL-CONVENTION + -- This is a type 3 enumeration. + STATUS current + DESCRIPTION + "A coded character set value that specifies both a set of + characters that may be used and an encoding (as one or more + octets) that is used to represent the characters in the set. + These values are to be used to identify the encoding employed + for strings in the MIB where this is not fixed by the MIB. + + Some objects that allow a choice of coded character set are: the + prtLocalizationCharacterSet object in the LocalizationTable and + prtInterpreterDefaultCharSetIn. The + prtGeneralCurrentLocalization and prtConsoleLocalization objects + in turn contain the index in the LocalizationTable of the + current localization (country, language, and coded character + set) of the 'description' objects and the console, respectively. + + The current list of character sets and their enumerated values + used to reference them are contained in the IANA Character Set + registry. The enum value is indicated by the MIBenum entry in + the registry. The enum symbol is indicated by the Alias that + starts with 'cs' for character set. + + The IANA character sets registry is [4]. To add a new character + set to the IANA Registry, see RFC 2278 or BCP 19 [20]. + + The textual conventions LocalizedDescriptionStringTC and + ConsoleDescriptionStringTC are required for use with objects + that are controlled by prtGeneralCurrentLocalization and + prtConsoleLocalization, respectively." + + SYNTAX INTEGER { + other(1) -- used if the designated coded + -- character set is not currently + + -- registered by IANA + + -- See [4] for registered character sets and + -- use the MIBenum integer value. + } + +LocalizedDescriptionStringTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object MUST use this textual convention when its + 'charset' is controlled by the value of + prtGeneralCurrentLocalization." + SYNTAX OCTET STRING (SIZE(0..255)) + +ConsoleDescriptionStringTC ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "An object MUST use this textual convention when its + 'charset' is controlled by the value of + prtConsoleLocalization." + SYNTAX OCTET STRING (SIZE(0..255)) + +-- +-- General Group textual-conventions +-- + +PrtGeneralResetTC ::= TEXTUAL-CONVENTION + -- This value is a type 3 enumeration. + STATUS current + DESCRIPTION + "Values for reading and writing the prtGeneralReset object. + + If a device does not have NVRAM, the device shall none the less + respond to a SET with the value resetToNVRAM(5) with some sort of + warm reset that resets the device to some implementation-defined + state that is preferably under control of the system administrator + by some means outside the scope of this MIB specification." + + SYNTAX INTEGER { + notResetting(3), + powerCycleReset(4), -- Cold Start + resetToNVRAM(5), -- Warm Start + resetToFactoryDefaults(6) -- Reset contents of + -- NVRAM to factory + -- defaults + + } + +-- +-- Channel Group textual-conventions +-- + +PrtChannelStateTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The state of this print job delivery channel. The value + determines whether print data is allowed through this channel." + SYNTAX INTEGER { + other(1), + printDataAccepted(3), + noDataAccepted(4) + } + +PrtChannelTypeTC ::= TEXTUAL-CONVENTION + -- This is a type 2 enumeration. + STATUS current + DESCRIPTION + "This enumeration indicates the type of channel that is + receiving jobs." + SYNTAX INTEGER { + other(1), + chSerialPort(3), + chParallelPort(4), + chIEEE1284Port(5), + chSCSIPort(6), + chAppleTalkPAP(7), + -- AppleTalk Printer + -- Access Protocol (PAP) + -- + -- prtChannelInformation entry: + -- + -- Printer Name + -- Keyword: Name + -- Syntax: Name + -- Status: Optional + -- Multiplicity: Single + -- Description: The name of the printer within + -- the AppleTalk naming scope + chLPDServer(8), + -- prtChannelInformation entry: + + -- + -- Printer queue name + -- Keyword: Queue + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: queue name as + -- defined in RFC 1179 [12]. + chNetwareRPrinter(9), + -- Novell, Inc. + -- For each entry of this type, the + -- prtChannelInformation must have a pair of + -- keywords. For Netware 3.x channels this must + -- be a (PServer, Printer) pair. For Netware 4.x + -- channels and for IntranetWare channels this + -- must be a (NDSTree, NDSPrinter) pair. + -- + -- prtChannelInformation entries: + + -- Print Server Name + -- Keyword: PServer + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The Pserver's SAP name + -- + -- Printer Number + -- Keyword: Printer + -- Syntax: Integer + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The printer number + -- + -- NDSTree + -- Keyword: NDSTree + -- Syntax: Name + -- Multiplicity: Single + -- Description: The tree's SAP name + -- + -- NDS Printer object + -- Keyword: NDSPrinter + -- Syntax: Text (Unicode) + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The fully qualified + + -- name of the Printer + -- + -- In the Netware 3.x environment, the + -- client checks the Bindery object + -- representing the named PServer. The + -- client then checks for queues which + -- are associated with the numbered + -- printer. In the 4.x and IntraNetware + -- environment, the client looks up the + -- queues which are associated with the + -- NDS Printer Object in the named Tree. + -- Depending on client access rights to + -- those queues, the client submits jobs + -- to the appropriate queue. + chNetwarePServer(10), + -- Novell,Inc. + -- For each entry of this type, the + -- prtChannelInformation must have a pair + -- of keywords. For Netware 3.x channels + -- this must be a (Server, PServer) pair. + -- For Netware 4.x and IntranetWare + -- channels, this must be a + -- (NDSTree, NDSPServer) pair. + -- + -- prtChannelInformation entries: + -- + -- Server Name + -- Keyword: Server + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The SAP name of the + -- server for which the PServer is defined. + -- + -- PServer + -- Keyword: PServer + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The bindery name of + -- the PServer + -- + -- NDS Tree + -- Keyword: NDSTree + -- Syntax: Name + + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The NDS Tree name + -- + -- PServer + -- Keyword: NDSPServer + -- Syntax: Text (Unicode) + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The fully qualified + -- name of the PServer object in the tree. + -- + -- In the 3.x environment, the client + -- checks the bindery object + -- representing the named PServer on the + -- named Server. In the 4.x and + -- IntranetWare environment, + -- the client checks the NDS object + -- representing the named PServer in the + -- named Tree. In either case, the + -- client then checks for all queues + -- associated with the Pserver object. + -- Depending on client access rights + -- to those queues, the client submits + -- jobs to the appropriate queue. + chPort9100(11), + -- DEPRECATED + -- (see chPortTCP . 37; chBidirPortTCP . 38) + chAppSocket(12), + -- A bi-directional, LPD-like, + -- protocol using 9101 for + -- control and 9100 for data. + -- Adobe Systems, Inc. + chFTP(13), -- RFC 959 [11] + chTFTP(14), -- RFC 1350 [13] + chDLCLLCPort(15), + chIBM3270(16), -- IBM Coax + chIBM5250(17), -- IBM Twinax + chFax(18), + chIEEE1394(19), + chTransport1(20), + -- TCP port 35, see reserved TCP port list + -- in RFC 1700 [15] or current "Assigned + -- Numbers" files. This RFC should also be + -- referenced for other channel + + -- enumerations utilizing TCP port + -- numbers 0 through 1024. + chCPAP(21), -- TCP port 170 + -- Digital Equipment Corp. + chDCERemoteProcCall(22), -- OSF + -- DEPRECATED + chONCRemoteProcCall(23), -- SUN Microsystems + -- DEPRECATED + chOLE(24), -- Microsoft + -- DEPRECATED + chNamedPipe(25), + chPCPrint(26), -- Banyan + chServerMessageBlock(27), + -- File/Print sharing protocol used by + -- various network operating systems + -- from IBM 3Com, Microsoft and others + -- + -- prtChannelInformation entry: + -- + -- Service Name + -- Keyword: Name + -- Syntax: Name + -- Status: Optional + -- Multiplicity: Single + -- Description: The service name of + -- the printer + chPSM(28), -- Printing Systems + -- Manager, IBM + chDLLAPI(29), -- Microsoft + -- DEPRECATED + chVxDAPI(30), -- Microsoft + -- DEPRECATED + chSystemObjectManager(31), -- IBM + chDECLAT(32), + -- Digital Equipment Corp. + -- + -- prtChannelInformation entries: + -- + -- Port Name + -- Keyword: Port + -- Syntax: Name + -- Status: Conditionally + -- Mandatory + -- (see note below) + -- Multiplicity: Single + + -- Description: LAT port name + -- + -- Service Name + -- Keyword: Service + -- Syntax: Name + -- Status: Conditionally + -- Mandatory + -- Multiplicity: Single + -- Description: LAT service name + -- + -- The LAT channel may be + -- identified by either a port or + -- service, so either a + -- Port or Service entry must be + -- specified, but not both. + chNPAP(33), + chUSB(34), -- Universal Serial Bus + chIRDA(35), -- Infrared Data Assoc. Prot. + chPrintXChange(36), -- PrintXChange Protocol + chPortTCP(37), + -- A unidirectional "raw" TCP + -- channel that uses an administratively + -- assigned TCP port address. + -- + -- prtChannelInformation entry: + -- + -- Port Number + -- Keyword: Port + -- Syntax: decimal number + -- Status: Mandatory + -- Multiplicity: Single + -- Description: TCP port number + chBidirPortTCP(38), + -- A bi-directional version of chPortTCP + -- + -- prtChannelInformation entries: + -- (See chPortTCP) + chUNPP(39), + -- Universal Network Printing + -- Protocol(UNPP). A bi-directional, + -- multiport network printing + -- application protocol available on + -- multiple transport protocols. + -- Underscore, Inc. + -- Contact: info@underscore.com + + chAppleTalkADSP(40), + -- AppleTalk Data Stream Protocol. + -- ADSP is part of the AppleTalk + -- suite of protocols. + -- It is a symmetric, connection- + -- oriented protocol that makes + -- possible the establishment + -- and maintenance of full-duplex + -- streams of data bytes between + -- two sockets in an AppleTalk + -- internet. + -- See [5]. + chPortSPX(41), + -- Sequenced Packet Exchange (SPX) + -- socket. + -- Novell, Inc. Similar to TCP, a + -- bi-directional data pipe using + -- Novell SPX as a transport. + -- + -- prtChannelInformation entries: + -- + -- Network Number + -- Keyword: Net + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The network number + -- + -- Node Number + -- Keyword: Node + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The node number + -- + -- Socket Number + -- Keyword: Socket + -- Syntax: HexString + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The SPX socket number + -- + -- There must be exactly one "Net" and + -- one "Node" and one "Socket" entry. A + -- HexString is a binary value + + -- represented as a string of + -- ASCII characters using hexadecimal + -- notation. + chPortHTTP(42), + -- Hypertext Transfer Protocol. See RFC 1945 [16] + -- and RFC 2616 [27]. + chNDPS(43), + -- Novell, Inc. + -- + -- prtChannelInformation entry: + -- + -- Printer Agent Name + -- Keyword: PA + -- Syntax: Name + -- Status: Mandatory + -- Multiplicity: Single + -- Description: The NDPS Printer + -- Agent Name + chIPP(44) + -- Internet Printing Protocol (IPP), + -- (IPP/1.0 - see RFC 2910 [3] and RFC 2911 + -- [2]), also applies to all future versions + -- of IPP. + -- + -- IPP Printer URI + -- Keyword: URI + -- Syntax: URI (Unicode UTF-8 per + -- RFC 2396 [22]) + -- Status: Mandatory + -- Multiplicity: Single + -- Default: not applicable + -- Description: URI of this IPP Printer within + -- the Internet naming scope. Unicode + -- UTF-8 RFC 2279 [21] string with + -- hexadecimal escapes for any non-ASCII + -- characters (per RFC 2396 [22]). + -- Conformance: An IPP Printer shall list all + -- IPP URI it supports (one per IPP Channel + -- entry). If a URI contains the 'http:' + -- scheme it MUST have an explicit port. + -- See: RFC 2279 [21], RFC 2396 [22], RFC 2910 + -- [3], RFC 2911 [2]. + -- + -- IPP Printer Client Authentication + -- Keyword: Auth + + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Single + -- Default: 'none' + -- Description: A client authentication + -- mechanism supported for this IPP Printer + -- URI: + -- 'none' + -- no client authentication mechanism + -- 'requesting-user-name' + -- authenticated user in 'requesting- + -- user-name' + -- 'basic' + -- authenticated user via HTTP Basic + -- mechanism + -- 'digest' + -- authenticated user via HTTP Digest + -- mechanism + -- 'certificate' + -- authenticated user via certificate + -- mechanism + -- Conformance: An IPP Printer should list all + -- IPP client authentication mechanisms it + -- supports (one per IPP Channel entry). + -- See: [2] and [3]. + -- + -- IPP Printer Security + -- Keyword: Security + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Single + -- Default: 'none' + -- Description: A security mechanism supported + -- for this IPP Printer URI: + -- 'none' + -- no security mechanism + -- 'ssl3' + -- SSL3 secure communications channel + -- protocol + -- 'tls' + -- TLS secure communications channel + -- protocol + -- Conformance: An IPP Printer should list all + -- IPP security mechanisms it supports + -- (one per IPP Channel entry). + + -- See: RFC 2246 [18], RFC 2911 [2]. + -- + -- IPP Printer Protocol Version + -- Keyword: Version + -- Syntax: Keyword + -- Status: Optional + -- Multiplicity: Multiple + -- Default: '1.0' + -- Description: All of the IPP protocol + -- versions (major.minor) supported for this + -- IPP Printer URI: + -- '1.0' + -- IPP/1.0 conforming Printer + -- '1.1' + -- IPP/1.1 conforming Printer + -- Conformance: An IPP Printer should list all + -- IPP versions it supports (all listed in + -- each IPP Channel entry). An IPP Client + -- should select the highest numbered + -- version that the client supports for use + -- in all IPP Requests (for optimum + -- interworking). + -- See: RFC 2911 [2]. +} +-- +-- Interpreter Group textual conventions +-- + +PrtInterpreterLangFamilyTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "This enumeration indicates the type of interpreter that is + receiving jobs." + SYNTAX INTEGER { + other(1), + unknown(2), + langPCL(3), -- PCL. Starting with PCL version 5, + -- HP-GL/2 is included as part of the + -- PCL language. + -- PCL and HP-GL/2 are registered + -- trademarks of Hewlett-Packard + -- Company. + langHPGL(4), -- Hewlett-Packard Graphics Language. + -- HP-GL is a registered trademark of + + -- Hewlett-Packard Company. + langPJL(5), -- Peripheral Job Language. Appears in + -- the data stream between data intended + -- for a page description language. + -- Hewlett-Packard Co. + langPS(6), -- PostScript (tm) Language + -- Postscript - a trademark of Adobe + -- Systems Incorporated which may be + -- registered in certain jurisdictions + langIPDS(7), -- Intelligent Printer Data Stream + -- Bi-directional print data stream for + -- documents consisting of data objects + -- (text, image, graphics, bar codes), + -- resources (fonts, overlays) and page, + -- form and finishing instructions. + -- Facilitates system level device + -- control, document tracking and error + -- recovery throughout the print + -- process. + -- IBM Corporation. + langPPDS(8), -- IBM Personal Printer Data Stream. + -- Originally called IBM ASCII, the name + -- was changed to PPDS when the Laser + -- Printer was introduced in 1989. + -- Lexmark International, Inc. + langEscapeP(9), -- Epson Corp. + langEpson(10), + langDDIF(11), -- Digital Document Interchange Format + -- Digital Equipment Corp., Maynard MA + langInterpress(12), + -- Xerox Corp. + langISO6429(13), -- ISO 6429. Control functions for + -- Coded Character Sets (has ASCII + -- control characters, plus additional + -- controls for + -- character imaging devices.) + langLineData(14), -- line-data: Lines of data as + -- separate ASCII or EBCDIC records + -- and containing no control functions + -- (no CR, LF, HT, FF, etc.) + -- For use with traditional line + -- printers. May use CR and/or LF to + -- delimit lines, instead of records. + -- See ISO 10175 Document Printing + -- Application (DPA) [7]. + + langMODCA(15), -- Mixed Object Document Content + -- Architecture + -- Definitions that allow the + -- composition, interchange, and + -- presentation of final form + -- documents as a collection of data + -- objects (text, image, graphics, bar + -- codes), resources (fonts, overlays) + -- and page, form and finishing + -- instructions. + -- IBM Corporation. + langREGIS(16), -- Remote Graphics Instruction Set, + -- Digital Equipment Corp., Maynard MA + langSCS(17), -- SNA Character String + -- Bi-directional print data stream for + -- SNA LU-1 mode of communication. + -- IBM + langSPDL(18), -- ISO 10180 Standard Page Description + -- Language + -- ISO Standard + langTEK4014(19), -- Tektronix Corp. + langPDS(20), + langIGP(21), -- Printronix Corp. + langCodeV(22), -- Magnum Code-V, Image and printer + -- control language used to control + -- impact/dot-matrix printers. + -- QMS, Inc., Mobile AL + langDSCDSE(23), -- DSC-DSE: Data Stream Compatible and + -- Emulation Bi-directional print data + -- stream for non-SNA (DSC) and SNA LU-3 + -- 3270 controller (DSE) communications + -- IBM + langWPS(24), -- Windows Printing System, Resource + -- based command/data stream used by + -- Microsoft At Work Peripherals. + -- Developed by the Microsoft + -- Corporation. + langLN03(25), -- Early DEC-PPL3, Digital Equipment + -- Corp. + langCCITT(26), + langQUIC(27), -- QUIC (Quality Information Code), Page + -- Description Language for laser + -- printers. Included graphics, printer + -- control capability and emulation of + -- other well-known printer. + + -- QMS, Inc. + langCPAP(28), -- Common Printer Access Protocol + -- Digital Equipment Corp. + langDecPPL(29), -- Digital ANSI-Compliant Printing + -- Protocol + -- (DEC-PPL) + -- Digital Equipment Corp. + langSimpleText(30), + -- simple-text: character coded data, + -- including NUL, CR , LF, HT, and FF + -- control characters. See ISO 10175 + -- Document Printing Application (DPA) [7]. + langNPAP(31), -- Network Printer Alliance Protocol + -- (NPAP). This protocol has been + -- superseded by the IEEE 1284.1 TIPSI + -- Std (ref. LangTIPSI(49)). + langDOC(32), -- Document Option Commands, Appears in + -- the data stream between data + -- intended for a page description. + -- QMS, Inc. + langimPress(33), -- imPRESS, Page description language + -- originally developed for the + -- ImageServer product line. A binary + -- language providing representations + -- of text, simple graphics, and some + -- large forms (simple + -- bit-map and CCITT group 3/4 + -- encoded).The + -- language was intended to be sent over + -- an 8-bit channel and supported early + -- document preparation languages (e.g., + -- TeX and TROFF). + -- QMS, Inc. + langPinwriter(34), + -- 24 wire dot matrix printer for + -- USA, Europe, and Asia except + -- Japan. + -- More widely used in Germany, and + -- some Asian countries than in US. + -- NEC + langNPDL(35), -- Page printer for Japanese market. + -- NEC + langNEC201PL(36), -- Serial printer language used in + -- the Japanese market. + -- NEC + + langAutomatic(37), + -- Automatic PDL sensing. Automatic + -- sensing of the interpreter + -- language family by the printer + -- examining the document content. + -- Which actual interpreter language + -- families are sensed depends on + -- the printer implementation. + langPages(38), -- Page printer Advanced Graphic + -- Escape Set + -- IBM Japan + langLIPS(39), -- LBP Image Processing System + langTIFF(40), -- Tagged Image File Format (Aldus) + langDiagnostic(41), + -- A hex dump of the input to the + -- interpreter + langPSPrinter(42), + -- The PostScript Language used for + -- control (with any PDLs) + -- Adobe Systems Incorporated + langCaPSL(43), -- Canon Print Systems Language + langEXCL(44), -- Extended Command Language + -- Talaris Systems Inc. + langLCDS(45), -- Line Conditioned Data Stream + -- Xerox Corporation + langXES(46), -- Xerox Escape Sequences + -- Xerox Corporation + langPCLXL(47), -- Printer Control Language. Extended + -- language features for printing, and + -- printer control. + -- Hewlett-Packard Co. + langART(48), -- Advanced Rendering Tools (ART). + -- Page Description language + -- originally developed for the Laser + -- Press printers. + -- Technical reference manual: "ART IV + -- Reference Manual", No F33M. + -- Fuji Xerox Co., Ltd. + langTIPSI(49), -- Transport Independent Printer + -- System Interface (ref. IEEE Std. + -- 1284.1) + langPrescribe(50), + -- Page description and printer + -- control language. It can be + -- described with ordinary ASCII + + -- Technical reference manual: + -- "PRESCRIBE II Programming Manual" + langLinePrinter(51), + -- A simple-text character stream which + -- supports the control codes LF, VT, + -- FF, and plus Centronics or + -- Dataproducts Vertical Format Unit + -- (VFU) language is commonly used on + -- many older model line and matrix + -- printers. + langIDP(52), -- Imaging Device Protocol + -- Apple Computer. + langXJCL(53), -- Xerox Job Control Language (JCL). + -- A Job Control language originally + -- developed for the LaserPress printers + -- and is capable of switching PDLs. + -- Technical reference manual: + -- "ART IV Reference Manual", No F33M. + -- Fuji Xerox Co., Ltd. + langPDF(54), -- Adobe Portable Document Format + -- Adobe Systems, Inc. + langRPDL(55), -- Ricoh Page Description Language for + -- printers. + -- Technical manual "RPDL command + -- reference" No.307029 + -- RICOH, Co. LTD + langIntermecIPL(56), + -- Intermec Printer Language for label + -- printers. + -- Technical Manual: "IPL Programmers + -- Reference Manual" + -- Intermec Corporation + langUBIFingerprint(57), + -- An intelligent basic-like programming + -- language for label printers. + -- Reference Manual: "UBI Fingerprint + -- 7.1", No. 1-960434-00 + -- United Barcode Industries + langUBIDirectProtocol(58), + -- An intelligent control language for + -- label printers. + -- Programmers guide: " UBI Direct + -- Protocol", No. 1-960419-00 + -- United Barcode Industries + langFujitsu(59) + + -- Fujitsu Printer Language + -- Reference Manual: + -- "FM Printer Sequence" No. 80HP-0770 + -- FUJITSU LIMITED + } + +-- +-- Input/Output Group Textual Conventions +-- + +PrtInputTypeTC ::= TEXTUAL-CONVENTION + -- This is a type 2 enumeration. + STATUS current + DESCRIPTION + "The type of technology (discriminated primarily according to + feeder mechanism type) employed by a specific component or + components." + SYNTAX INTEGER { + other(1), + unknown(2), + sheetFeedAutoRemovableTray(3), + sheetFeedAutoNonRemovableTray(4), + sheetFeedManual(5), + continuousRoll(6), + continuousFanFold(7) + } + +PrtOutputTypeTC ::= TEXTUAL-CONVENTION + -- This is a type 2 enumeration. + STATUS current + DESCRIPTION + "The Type of technology supported by this output sub-unit." + SYNTAX INTEGER { + other(1), + unknown(2), + removableBin(3), + unRemovableBin(4), + continuousRollDevice(5), + mailBox(6), + continuousFanFold(7) + } + +PrtOutputStackingOrderTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + + DESCRIPTION + "The current state of the stacking order for the associated + output sub-unit. 'firstToLast' means that as pages are output, + the front of the next page is placed against the back of the + previous page. 'lastToFirst' means that as pages are output, the + back of the next page is placed against the front of the + previous page." + SYNTAX INTEGER { + unknown(2), + firstToLast(3), + lastToFirst(4) + } + +PrtOutputPageDeliveryOrientationTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "The reading surface that will be 'up' when pages are delivered + to the associated output sub-unit. Values are Face-Up and Face + Down (Note: interpretation of these values is, in general, + context-dependent based on locale; presentation of these values + to an end-user should be normalized to the expectations of the + user." + SYNTAX INTEGER { + faceUp(3), + faceDown(4) + } + +-- +-- Marker Group Textual Conventions +-- + +PrtMarkerMarkTechTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The type of marking technology used for this marking sub-unit" + SYNTAX INTEGER { + other(1), + unknown(2), + electrophotographicLED(3), + electrophotographicLaser(4), + electrophotographicOther(5), + impactMovingHeadDotMatrix9pin(6), + impactMovingHeadDotMatrix24pin(7), + + impactMovingHeadDotMatrixOther(8), + impactMovingHeadFullyFormed(9), + impactBand(10), + impactOther(11), + inkjetAqueous(12), + inkjetSolid(13), + inkjetOther(14), + pen(15), + thermalTransfer(16), + thermalSensitive(17), + thermalDiffusion(18), + thermalOther(19), + electroerosion(20), + electrostatic(21), + photographicMicrofiche(22), + photographicImagesetter(23), + photographicOther(24), + ionDeposition(25), + eBeam(26), + typesetter(27) + } + +PrtMarkerCounterUnitTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The unit that will be used by the printer when reporting + counter values for this marking sub-unit. The + time units of measure are provided for a device like a + strip recorder that does not or cannot track the physical + dimensions of the media and does not use characters, + lines or sheets." + + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + characters(5), + lines(6), + impressions(7), + sheets(8), + dotRow(9), + hours(11), + feet(16), + meters(17) + } + + +PrtMarkerSuppliesTypeTC ::= TEXTUAL-CONVENTION + -- This value is a type 3 enumeration. + STATUS current + DESCRIPTION + "The type of this supply." + SYNTAX INTEGER { + other(1), + unknown(2), + toner(3), + wasteToner(4), + ink(5), + inkCartridge(6), + inkRibbon(7), + wasteInk(8), + opc(9), -- photo conductor + developer(10), + fuserOil(11), + solidWax(12), + ribbonWax(13), + wasteWax(14), + fuser(15), + coronaWire(16), + fuserOilWick(17), + cleanerUnit(18), + fuserCleaningPad(19), + transferUnit(20), + tonerCartridge(21), + fuserOiler(22), + -- Values for Finisher MIB + water(23), + wasteWater(24), + glueWaterAdditive(25), + wastePaper(26), + bindingSupply(27), + bandingSupply(28), + stitchingWire(29), + shrinkWrap(30), + paperWrap(31), + staples(32), + inserts(33), + covers(34) + -- End of values for Finisher MIB + } + + +PrtMarkerSuppliesSupplyUnitTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "Unit of this marker supply container/receptacle." + SYNTAX INTEGER { + other(1), + unknown(2), + tenThousandthsOfInches(3), -- .0001 + micrometers(4), + impressions(7), + sheets(8), + hours(11), + thousandthsOfOunces(12), + tenthsOfGrams(13), + hundrethsOfFluidOunces(14), + tenthsOfMilliliters(15), + feet(16), + meters(17), + -- Values for Finisher MIB + items(18), -- e.g. number of staples + percent(19) + } + +PrtMarkerSuppliesClassTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "Indicates whether this supply entity represents a supply + that is consumed or a receptacle that is filled." + SYNTAX INTEGER { + other(1), + supplyThatIsConsumed(3), + receptacleThatIsFilled(4) + } + +PrtMarkerColorantRoleTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The role played by this colorant." + SYNTAX INTEGER { -- Colorant Role + other(1), + process(3), + spot(4) + + } + +PrtMarkerAddressabilityUnitTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The unit of measure of distances, as applied to the marker's + resolution." + SYNTAX INTEGER { + tenThousandthsOfInches(3), -- .0001 + micrometers(4) + } + +-- +-- Media Path Textual Conventions +-- + +PrtMediaPathMaxSpeedPrintUnitTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The unit of measure used in specifying the speed of all + media paths in the printer." + SYNTAX INTEGER { + tenThousandthsOfInchesPerHour(3),-- .0001/hour + micrometersPerHour(4), + charactersPerHour(5), + linesPerHour(6), + impressionsPerHour(7), + sheetsPerHour(8), + dotRowPerHour(9), + feetPerHour(16), + metersPerHour(17) + } + +PrtMediaPathTypeTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The type of the media path for this media path." + SYNTAX INTEGER { + other(1), + unknown(2), + longEdgeBindingDuplex(3), + shortEdgeBindingDuplex(4), + + simplex(5) + } + +-- +-- Interpreter Group Textual Conventions +-- + +PrtInterpreterTwoWayTC ::= TEXTUAL-CONVENTION + -- This is a type 1 enumeration. + STATUS current + DESCRIPTION + "Indicates whether or not this interpreter returns information + back to the host." + SYNTAX INTEGER { + yes(3), + no(4) + } + +-- +-- Console Group Textual Conventions +-- + +PrtConsoleColorTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The color of this light." + SYNTAX INTEGER { + other(1), + unknown(2), + white(3), + red(4), + green(5), + blue(6), + cyan(7), + magenta(8), + yellow(9), + orange(10) + } + +PrtConsoleDisableTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "This value indicates whether or not input is accepted from + + the operator console. A value of 'operatorConsoleEnabled' + indicates that input is accepted from the console, and a value + of 'operatorConsoleDisabled' indicates that input is not + accepted from the console. The other values indicate that + limited input is accepted from the console, and the limitations + are product specific. Limitations are generally less restrictive + for operatorConsoleEnabledLevel1 than for + operatorConsoleEnabledLeve2, which is less restrictive than + operatorConsoleEnabledLevel3." + SYNTAX INTEGER { + operatorConsoleEnabled(3), + operatorConsoleDisabled(4) + } + +-- +-- Alert Group Textual Conventions +-- + +PrtAlertSeverityLevelTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration. + STATUS current + DESCRIPTION + "The level of severity of this alert table entry. The printer + determines the severity level assigned to each entry in the + table. A critical alert is binary by nature and definition. A + warning is defined to be a non-critical alert. The original and + most common warning is unary. The binary warning was added later + and given a more distinguished name." + SYNTAX INTEGER { + other(1), + critical(3), + warning(4), + warningBinaryChangeEvent(5) + } + +PrtAlertTrainingLevelTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The level of training required to handle this alert, if human + intervention is required. The noInterventionRequired value + should be used if the event does not require any human + intervention. The training level is an enumeration that is + determined and assigned by the printer manufacturer based on the + information or the training required to handle this alert. The + + printer will break alerts into these different training levels. + It is the responsibility of the management application in the + system to determine how a particular alert is handled and how + and to whom that alert is routed. The following are the four + training levels of alerts: + + Field Service - Alerts that typically require advanced + training and technical knowledge of the printer and its sub + units. An example of a technical person would be a + manufacturer's Field Service representative, or other person + formally trained by the manufacturer or similar + representative. + Trained - Alerts that require an intermediate or moderate level + of knowledge of the printer and its sub-units. A typical + examples of alerts that a trained operator can handle is + replacing toner cartridges. + Untrained - Alerts that can be fixed without prior + training either because the action to correct the alert is + obvious or the printer can help the untrained person fix the + problem. A typical example of such an alert is reloading + paper trays and emptying output bins on a low end printer. + Management - Alerts that have to do with overall operation of + and configuration of the printer. Examples of management + events are configuration change of sub-units." + SYNTAX INTEGER { + other(1), + unknown(2), + untrained(3), + trained(4), + fieldService(5), + management(6), + noInterventionRequired(7) + } + +PrtAlertGroupTC ::= TEXTUAL-CONVENTION + -- This value is a type 1 enumeration for values in the range + -- 1 to 29. + -- Values of 30 and greater are for use in other MIBs that augment + -- tables in the Printer MIB. Therefore, other MIBs may assign + -- alert codes of 30 or higher to use the alert table from the + -- Printer MIB without requiring revising and re-publishing this + -- document. + STATUS current + DESCRIPTION + "The type of sub-unit within the printer model that this alert + + is related. Input, output, and markers are examples of printer + model groups, i.e., examples of types of sub-units. Wherever + possible, these enumerations match the sub-identifier that + identifies the relevant table in the printer MIB. + + NOTE: Alert type codes have been added for the host resources + MIB storage table and device table. These additional types are + for situations in which the printer's storage and device objects + must generate alerts (and possibly traps for critical alerts)." + SYNTAX INTEGER { + other(1), + hostResourcesMIBStorageTable(3), + hostResourcesMIBDeviceTable(4), + generalPrinter(5), + cover(6), + localization(7), + input(8), + output(9), + marker(10), + markerSupplies(11), + markerColorant(12), + mediaPath(13), + channel(14), + interpreter(15), + consoleDisplayBuffer(16), + consoleLights(17), + alert(18), + -- Values for Finisher MIB + finDevice(30), + finSupply(31), + finSupplyMediaInput(32), + finAttributeTable(33) + -- End of values for Finisher MIB + } + +PrtAlertCodeTC ::= TEXTUAL-CONVENTION + -- This value is a type 2 enumeration. + STATUS current + DESCRIPTION + "The code that describes the type of alert for this entry in the + table. Binary change event alerts describe states of the subunit + while unary change event alerts describe a single event. The + same alert code can be used for a binary change event or a unary + change event, depending on implementation. Also, the same alert + code can be used to indicate a critical or a non-critical + + (warning) alert, depending on implementation. The value of + prtAlertSeverityLevel specifies binary vs. unary and critical + vs. non-critical for each event for the implementation. + + While there are some specific codes for many subunits, the + generic codes should be used for most subunit alerts. The + network management station can then query the subunit specified + by prtAlertGroup to determine further subunit status and other + subunit information. + + An agent shall not add two entries to the alert table for the + same event, one containing a generic event code and the other + containing a specific event code; the agent shall add only one + entry in the alert table for each event; either generic + (preferred) or specific, not both. + + Implementation of the unary change event + alertRemovalOfBinaryChangeEntry(1801) is optional. When + implemented, this alert code shall indicate to network + management stations that the trailing edge of a binary change + event has occurred and the corresponding alert entry has been + removed from the alert table. As with all events, the + alertRemovalOfBinaryChangeEntry(1801) alert shall be placed at + the end of the alert table. Such an alert table entry shall + specify the following information: + + prtAlertSeverityLevel warningUnaryChangeEvent(4) + prtAlertTrainingLevel noInterventionRequired(7) + prtAlertGroup alert(18) + prtAlertGroupIndex the index of the row in the + alert table of the binary + change event that this event + has removed. + prtAlertLocation unknown (-2) + prtAlertCode alertRemovalOfBinaryChangeEntry(1801) + prtAlertDescription + prtAlertTime the value of sysUpTime at + the time of the removal of the + binary change event from the + alert table. + + Optionally, the agent may generate a trap coincident with + removing the binary change event and placing the unary change + event alertRemovalOfBinaryChangeEntry(1801) in the alert table. + For such a trap, the prtAlertIndex sent with the above trap + + parameters shall be the index of the + alertRemovalOfBinaryChangeEvent row that was added to the + prtAlertTable; not the index of the row that was removed from + the prtAlertTable." + SYNTAX INTEGER { + other(1), + -- an event that is not represented + -- by one of the alert codes + -- specified below. + unknown(2), + -- The following generic codes are common to + -- multiple groups. The NMS may + -- examine the prtAlertGroup object to determine + -- what group to query for further information. + coverOpen(3), + coverClosed(4), + interlockOpen(5), + interlockClosed(6), + configurationChange(7), + jam(8), + subunitMissing(9), + -- The subunit tray, bin, etc. + -- has been removed. + subunitLifeAlmostOver(10), + subunitLifeOver(11), + subunitAlmostEmpty(12), + subunitEmpty(13), + subunitAlmostFull(14), + subunitFull(15), + subunitNearLimit(16), + subunitAtLimit(17), + subunitOpened(18), + subunitClosed(19), + subunitTurnedOn(20), + subunitTurnedOff(21), + subunitOffline(22), + subunitPowerSaver(23), + subunitWarmingUp(24), + subunitAdded(25), + subunitRemoved(26), + subunitResourceAdded(27), + subunitResourceRemoved(28), + subunitRecoverableFailure(29), + subunitUnrecoverableFailure(30), + subunitRecoverableStorageError(31), + + subunitUnrecoverableStorageError(32), + subunitMotorFailure(33), + subunitMemoryExhausted(34), + subunitUnderTemperature(35), + subunitOverTemperature(36), + subunitTimingFailure(37), + subunitThermistorFailure(38), + -- general Printer group + doorOpen(501), -- DEPRECATED + -- Use coverOpened(3) + doorClosed(502), -- DEPRECATED + -- Use coverClosed(4) + powerUp(503), + powerDown(504), + printerNMSReset(505), + -- The printer has been reset by some + -- network management station(NMS) + -- writing into 'prtGeneralReset'. + printerManualReset(506), + -- The printer has been reset manually. + printerReadyToPrint(507), + -- The printer is ready to print. (i.e., + -- not warming up, not in power save + -- state, not adjusting print quality, + -- etc.). + + -- Input Group + inputMediaTrayMissing(801), + inputMediaSizeChange(802), + inputMediaWeightChange(803), + inputMediaTypeChange(804), + inputMediaColorChange(805), + inputMediaFormPartsChange(806), + inputMediaSupplyLow(807), + inputMediaSupplyEmpty(808), + inputMediaChangeRequest(809), + -- An interpreter has detected that a + -- different medium is need in this input + -- tray subunit. The prtAlertDescription may + -- be used to convey a human readable + -- description of the medium required to + -- satisfy the request. + inputManualInputRequest(810), + -- An interpreter has detected that manual + -- input is required in this subunit. The + + -- prtAlertDescription may be used to convey + -- a human readable description of the medium + -- required to satisfy the request. + inputTrayPositionFailure(811), + -- The input tray failed to position correctly. + inputTrayElevationFailure(812), + inputCannotFeedSizeSelected(813), + -- Output Group + outputMediaTrayMissing(901), + outputMediaTrayAlmostFull(902), + outputMediaTrayFull(903), + outputMailboxSelectFailure(904), + -- Marker group + markerFuserUnderTemperature(1001), + markerFuserOverTemperature(1002), + markerFuserTimingFailure(1003), + markerFuserThermistorFailure(1004), + markerAdjustingPrintQuality(1005), + -- Marker Supplies group + markerTonerEmpty(1101), + markerInkEmpty(1102), + markerPrintRibbonEmpty(1103), + markerTonerAlmostEmpty(1104), + markerInkAlmostEmpty(1105), + markerPrintRibbonAlmostEmpty(1106), + markerWasteTonerReceptacleAlmostFull(1107), + markerWasteInkReceptacleAlmostFull(1108), + markerWasteTonerReceptacleFull(1109), + markerWasteInkReceptacleFull(1110), + markerOpcLifeAlmostOver(1111), + markerOpcLifeOver(1112), + markerDeveloperAlmostEmpty(1113), + markerDeveloperEmpty(1114), + markerTonerCartridgeMissing(1115), + -- Media Path Device Group + mediaPathMediaTrayMissing(1301), + mediaPathMediaTrayAlmostFull(1302), + mediaPathMediaTrayFull(1303), + mediaPathcannotDuplexMediaSelected(1304), + -- Interpreter Group + interpreterMemoryIncrease(1501), + interpreterMemoryDecrease(1502), + interpreterCartridgeAdded(1503), + interpreterCartridgeDeleted(1504), + interpreterResourceAdded(1505), + + interpreterResourceDeleted(1506), + interpreterResourceUnavailable(1507), + interpreterComplexPageEncountered(1509), + -- The interpreter has encountered a page + -- that is too complex for the resources that + -- are available. + -- Alert Group + alertRemovalOfBinaryChangeEntry(1801) + -- A binary change event entry has been + -- removed from the alert table. This unary + -- change alert table entry is added to the + -- end of the alert table. + } + +-- The General Printer Group +-- +-- The general printer sub-unit is responsible for the overall +-- control and status of the printer. There is exactly one +-- general printer sub-unit in a printer. +-- +-- Implementation of every object in this group is mandatory except for +-- prtAuxiliarySheetStartupPage, prtAuxiliarySheetBannerPage, +-- prtGeneralPrinterName, prtGeneralSerialNumber, +-- prtAlertCriticalEvents, and prtAlertAllEvents. + + +prtGeneral OBJECT IDENTIFIER ::= { printmib 5 } + +prtGeneralTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtGeneralEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of general information per printer. + Objects in this table are defined in various + places in the MIB, nearby the groups to + which they apply. They are all defined + here to minimize the number of tables that would + otherwise need to exist." + ::= { prtGeneral 1 } + +prtGeneralEntry OBJECT-TYPE + SYNTAX PrtGeneralEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "An entry exists in this table for each device entry in the host + resources MIB device table with a device type of 'printer'" + INDEX { hrDeviceIndex } + ::= { prtGeneralTable 1 } + +PrtGeneralEntry ::= SEQUENCE { + -- Note that not all of the objects in this sequence are in + -- the general printer group. The group to which an + -- object belongs is tagged with a label "General", "Input" + -- "Output", etc. after each entry in the following sequence. + -- + prtGeneralConfigChanges Counter32, -- General + prtGeneralCurrentLocalization Integer32, -- General + prtGeneralReset PrtGeneralResetTC, + -- General + prtGeneralCurrentOperator OCTET STRING, + -- Responsible Party + prtGeneralServicePerson OCTET STRING, + -- Responsible Party + prtInputDefaultIndex Integer32, -- Input + prtOutputDefaultIndex Integer32, -- Output + prtMarkerDefaultIndex Integer32, -- Marker + prtMediaPathDefaultIndex Integer32, -- Media Path + prtConsoleLocalization Integer32, -- Console + prtConsoleNumberOfDisplayLines Integer32, -- Console + prtConsoleNumberOfDisplayChars Integer32, -- Console + prtConsoleDisable PrtConsoleDisableTC, + -- Console, + prtAuxiliarySheetStartupPage PresentOnOff, + -- AuxiliarySheet + prtAuxiliarySheetBannerPage PresentOnOff, + -- AuxiliarySheet + prtGeneralPrinterName OCTET STRING, + -- General V2 + prtGeneralSerialNumber OCTET STRING, + -- General V2 + prtAlertCriticalEvents Counter32, -- Alert V2 + prtAlertAllEvents Counter32 -- Alert V2 + } + +prtGeneralConfigChanges OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "Counts configuration changes within the printer. A + configuration change is defined to be an action that results in + a change to any MIB object other than those that reflect status + or level, or those that act as counters or gauges. In addition, + any action that results in a row being added or deleted from any + table in the Printer MIB is considered a configuration change. + Such changes will often affect the capability of the printer to + service certain types of print jobs. Management applications may + cache infrequently changed configuration information about sub + units within the printer. This object should be incremented + whenever the agent wishes to notify management applications that + any cached configuration information for this device is to be + considered 'stale'. At this point, the management application + should flush any configuration information cached about this + device and fetch new configuration information. + + The following are examples of actions that would cause the + prtGeneralConfigChanges object to be incremented: + + - Adding an output bin + - Changing the media in a sensing input tray + - Changing the value of prtInputMediaType + + Note that the prtGeneralConfigChanges counter would not be + incremented when an input tray is temporarily removed to load + additional paper or when the level of an input device changes." + + ::= { prtGeneralEntry 1 } + +prtGeneralCurrentLocalization OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of the prtLocalizationIndex corresponding to the + current language, country, and character set to be used for + localized string values that are identified as being dependent + on the value of this object. Note that this object does not + apply to localized strings in the prtConsole group or to any + object that is not explicitly identified as being localized + according to prtGeneralCurrentLocalization. When an object's + 'charset' is controlled by the value of + prtGeneralCurrentLocalization, it MUST specify + LocalizedDescriptionStringTC as its syntax." + + ::= { prtGeneralEntry 2 } + +prtGeneralReset OBJECT-TYPE + -- This value is a type 3 enumeration. + SYNTAX PrtGeneralResetTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Setting this value to 'powerCycleReset', 'resetToNVRAM', or + 'resetToFactoryDefaults' will result in the resetting of the + printer. When read, this object will always have the value + 'notResetting(3)', and a SET of the value 'notResetting' shall + have no effect on the printer. Some of the defined values are + optional. However, every implementation must support at least + the values 'notResetting' and 'resetToNVRAM'." + ::= { prtGeneralEntry 3 } + +-- The Responsible Party group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtGeneralCurrentOperator OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the person who is responsible for operating + this printer. It is suggested that this string include + information that would enable other humans to reach the + operator, such as a phone number. As a convention to + facilitate automatic notification of the operator by the + agent or network management station, the phone number, + fax number or email address should be indicated by the + URL schemes 'tel:', 'fax:' and 'mailto:', respectively. + If either the phone, fax, or email information is not + available, then a line should not be included for this + information. + + NOTE: For interoperability purposes, it is advisable to + use email addresses formatted according to RFC 822 [9] + requirements." + ::= { prtGeneralEntry 4 } + +prtGeneralServicePerson OBJECT-TYPE + + SYNTAX OCTET STRING (SIZE(0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the person responsible for servicing this + printer. It is suggested that this string include + information that would enable other humans to reach the + service person, such as a phone number. As a convention + to facilitate automatic notification of the operator by + the agent or network management station, the phone + number, fax number or email address should be indicated + by the URL schemes 'tel:', 'fax:' and 'mailto:', + respectively. If either the phone, fax, or email + information is not available, then a line should not + be included for this information. + + NOTE: For interoperability purposes, it is advisable to use + email addresses formatted per RFC 822 [9] requirements." + + ::= { prtGeneralEntry 5 } + +-- Default indexes section +-- +-- The following four objects are used to specify the indexes of +-- certain subunits used as defaults during the printing process. + +prtInputDefaultIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInputIndex corresponding to the default input + sub-unit: that is, this object selects the default source of + input media. + + This value shall be -1 if there is no default input subunit + specified for the printer as a whole. In this case, the actual + default input subunit may be specified by means outside the + scope of this MIB, such as by each interpreter in a printer with + multiple interpreters." + + ::= { prtGeneralEntry 6 } + +prtOutputDefaultIndex OBJECT-TYPE + SYNTAX Integer32 + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtOutputIndex corresponding to the default output + sub-unit; that is, this object selects the default output + destination. + + This value shall be -1 if there is no default output subunit + specified for the printer as a whole. In this case, the actual + default output subunit may be specified by means outside the + scope of this MIB, such as by each interpreter in a printer with + multiple interpreters." + + ::= { prtGeneralEntry 7 } + +prtMarkerDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the + default marker sub-unit; that is, this object selects the + default marker." + ::= { prtGeneralEntry 8 } + +prtMediaPathDefaultIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtMediaPathIndex corresponding to + the default media path; that is, the selection of the + default media path." + ::= { prtGeneralEntry 9 } + +-- Console general section +-- +-- The following four objects describe overall parameters of the +-- printer console subsystem. + +prtConsoleLocalization OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + "The value of the prtLocalizationIndex corresponding to + the language, country, and character set to be used for the + console. This localization applies both to the actual display + on the console as well as the encoding of these console objects + in management operations. When an object's 'charset' is + controlled by the value of prtConsoleLocalization, it MUST + specify ConsoleDescriptionStringTC as its syntax." + ::= { prtGeneralEntry 10 } + +prtConsoleNumberOfDisplayLines OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of lines on the printer's physical + display. This value is 0 if there are no lines on the + physical display or if there is no physical display" + ::= { prtGeneralEntry 11 } + +prtConsoleNumberOfDisplayChars OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of characters per line displayed on the physical + display. This value is 0 if there are no lines on the physical + display or if there is no physical display" + ::= { prtGeneralEntry 12 } + +prtConsoleDisable OBJECT-TYPE + SYNTAX PrtConsoleDisableTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This value indicates how input is (or is not) accepted from + the operator console." + ::= { prtGeneralEntry 13 } + +-- The Auxiliary Sheet Group +-- +-- The auxiliary sheet group allows the administrator to control +-- the production of auxiliary sheets by the printer. This group +-- contains only the "prtAuxiliarySheetStartupPage" and +-- "prtAuxiliarySheetBannerPage" objects. +-- + +-- This group is optional. However, to claim conformance to this +-- group it is necessary to implement every object in the group. + +prtAuxiliarySheetStartupPage OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Used to enable or disable printing a startup page. If enabled, + a startup page will be printed shortly after power-up, when the + device is ready. Typical startup pages include test patterns + and/or printer configuration information." + ::= { prtGeneralEntry 14 } + +prtAuxiliarySheetBannerPage OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Used to enable or disable printing banner pages at the + beginning of jobs. This is a master switch which applies to all + jobs, regardless of interpreter." + ::= { prtGeneralEntry 15 } + +-- Administrative section (The General V2 Group) +-- +-- The following two objects are used to specify administrative +-- information assigned to the printer. + +prtGeneralPrinterName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "An administrator-specified name for this printer. Depending + upon implementation of this printer, the value of this object + may or may not be same as the value for the MIB-II 'SysName' + object." + ::= { prtGeneralEntry 16 } + +prtGeneralSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + + "A recorded serial number for this device that indexes some type + device catalog or inventory. This value is usually set by the + device manufacturer but the MIB supports the option of writing + for this object for site-specific administration of device + inventory or tracking." + ::= { prtGeneralEntry 17 } + +-- General alert table section (Alert Table V2 Group) +-- +-- The following two objects are used to specify counters +-- associated with the Alert Table. + +prtAlertCriticalEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A running counter of the number of critical alert events that + have been recorded in the alert table. The value of this object + is RESET in the event of a power cycle operation (i.e., the + value is not persistent." + ::= { prtGeneralEntry 18 } + +prtAlertAllEvents OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A running counter of the total number of alert event entries + (critical and non-critical) that have been recorded in the alert + table" + ::= { prtGeneralEntry 19 } + +-- The Cover Table +-- +-- The cover portion of the General print sub-unit describes the +-- covers and interlocks of the printer. The Cover Table has an +-- entry for each cover and interlock. + +prtCover OBJECT IDENTIFIER ::= { printmib 6 } + +prtCoverTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtCoverEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "A table of the covers and interlocks of the printer." + ::= { prtCover 1 } + +prtCoverEntry OBJECT-TYPE + SYNTAX PrtCoverEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Information about a cover or interlock. + Entries may exist in the table for each device + index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtCoverIndex } + ::= { prtCoverTable 1 } + +PrtCoverEntry ::= SEQUENCE { + prtCoverIndex Integer32, + prtCoverDescription LocalizedDescriptionStringTC, + prtCoverStatus PrtCoverStatusTC + } + +prtCoverIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this Cover sub + unit. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new cover + sub-units to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtCoverEntry 1 } + +prtCoverDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The manufacturer provided cover sub-mechanism name in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtCoverEntry 2 } + +prtCoverStatus OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtCoverStatusTC + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The status of this cover sub-unit." + ::= { prtCoverEntry 3 } + +-- The Localization Table +-- +-- The localization portion of the General printer sub-unit is +-- responsible for identifying the natural language, country, and +-- character set in which character strings are expressed. There +-- may be one or more localizations supported per printer. The +-- available localizations are represented by the Localization +-- table. + +prtLocalization OBJECT IDENTIFIER ::= { printmib 7 } + +prtLocalizationTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtLocalizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The available localizations in this printer." + ::= { prtLocalization 1 } + +prtLocalizationEntry OBJECT-TYPE + SYNTAX PrtLocalizationEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A description of a localization. + Entries may exist in the table for each device + index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtLocalizationIndex } + ::= { prtLocalizationTable 1 } + +PrtLocalizationEntry ::= SEQUENCE { + prtLocalizationIndex Integer32, + prtLocalizationLanguage OCTET STRING, + prtLocalizationCountry OCTET STRING, + prtLocalizationCharacterSet CodedCharSet + } + +prtLocalizationIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this + localization entry. Although these values may change due to a + major reconfiguration of the device (e.g., the addition of new + localization data to the printer), values are expected to remain + stable across successive printer power cycles." + ::= { prtLocalizationEntry 1 } + +prtLocalizationLanguage OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A two character language code from ISO 639. Examples en, + ca, fr, de." + ::= { prtLocalizationEntry 2 } + +prtLocalizationCountry OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..2)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A two character country code from ISO 3166, a blank string (two + space characters) shall indicate that the country is not + defined. Examples: US, GB, FR, DE, ..." + ::= { prtLocalizationEntry 3 } + +prtLocalizationCharacterSet OBJECT-TYPE + SYNTAX CodedCharSet + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The coded character set used for this localization." + ::= { prtLocalizationEntry 4 } + +-- The System Resources Tables +-- +-- The Printer MIB makes use of the Host Resources MIB to +-- define system resources by referencing the storage +-- and device groups of the print group. In order to +-- determine, amongst multiple printers serviced by +-- one agent, which printer owns a particular resource, +-- the prtStorageRef and prtDeviceRef tables associate + +-- particular storage and device entries to printers. + +prtStorageRefTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtStorageRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtGeneral 2 } + +prtStorageRefEntry OBJECT-TYPE + SYNTAX PrtStorageRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table will have an entry for each entry in the Host + Resources MIB storage table that represents storage associated + with a printer managed by this agent." + INDEX { hrStorageIndex, prtStorageRefSeqNumber } + ::= { prtStorageRefTable 1 } + +PrtStorageRefEntry ::= SEQUENCE { + prtStorageRefSeqNumber Integer32, + prtStorageRefIndex Integer32 + } + +prtStorageRefSeqNumber OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value will be unique amongst all entries with a common + value of hrStorageIndex. This object allows a storage entry to + point to the multiple printer devices with which it is + associated." + ::= { prtStorageRefEntry 1 } + +prtStorageRefIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrDeviceIndex of the printer device that this + storageEntry is associated with." + ::= { prtStorageRefEntry 2 } + + +prtDeviceRefTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtDeviceRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtGeneral 3 } + +prtDeviceRefEntry OBJECT-TYPE + SYNTAX PrtDeviceRefEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table will have an entry for each entry in the Host + Resources MIB device table that represents a device associated + with a printer managed by this agent." + INDEX { hrDeviceIndex, prtDeviceRefSeqNumber } + ::= { prtDeviceRefTable 1 } + +PrtDeviceRefEntry ::= SEQUENCE { + prtDeviceRefSeqNumber Integer32, + prtDeviceRefIndex Integer32 + } + +prtDeviceRefSeqNumber OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This value will be unique amongst all entries with a common + value of hrDeviceIndex. This object allows a device entry to + point to the multiple printer devices with which it is + associated." + ::= { prtDeviceRefEntry 1 } + +prtDeviceRefIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of the hrDeviceIndex of the printer device that this + deviceEntry is associated with." + ::= { prtDeviceRefEntry 2 } + + +-- The Input Group +-- +-- Input sub-units are managed as a tabular, indexed collection +-- of possible devices capable of providing media for input to +-- the printing process. Input sub-units typically have a +-- location, a type, an identifier, a set of constraints on +-- possible media sizes and potentially other media +-- characteristics, and may be capable of indicating current +-- status or capacity. +-- +-- Implementation of every object in this group is mandatory except for +-- prtInputMediaLoadTimeout and prtInputNextIndex. + +prtInput OBJECT IDENTIFIER ::= { printmib 8 } + +prtInputTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the devices capable of providing media for input to + the printing process." + ::= { prtInput 2 } + +prtInputEntry OBJECT-TYPE + SYNTAX PrtInputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a device capable of providing media for input to + the printing process. Entries may exist in the table for each + device index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtInputIndex } + ::= { prtInputTable 1 } + +PrtInputEntry ::= SEQUENCE { + prtInputIndex Integer32, + prtInputType PrtInputTypeTC, + prtInputDimUnit PrtMediaUnitTC, + prtInputMediaDimFeedDirDeclared Integer32, + prtInputMediaDimXFeedDirDeclared Integer32, + prtInputMediaDimFeedDirChosen Integer32, + prtInputMediaDimXFeedDirChosen Integer32, + prtInputCapacityUnit PrtCapacityUnitTC, + prtInputMaxCapacity Integer32, + + prtInputCurrentLevel Integer32, + prtInputStatus PrtSubUnitStatusTC, + prtInputMediaName OCTET STRING, + prtInputName OCTET STRING, + prtInputVendorName OCTET STRING, + prtInputModel OCTET STRING, + prtInputVersion OCTET STRING, + prtInputSerialNumber OCTET STRING, + prtInputDescription LocalizedDescriptionStringTC, + prtInputSecurity PresentOnOff, + prtInputMediaWeight Integer32, + prtInputMediaType OCTET STRING, + prtInputMediaColor OCTET STRING, + prtInputMediaFormParts Integer32, + prtInputMediaLoadTimeout Integer32, + prtInputNextIndex Integer32 + } + +prtInputIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this input sub + unit. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of n input sub- + units to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtInputEntry 1 } + +prtInputType OBJECT-TYPE + SYNTAX PrtInputTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of technology (discriminated primarily according to + feeder mechanism type) employed by the input sub-unit. Note, + the Optional Input Class provides for a descriptor field to + further qualify the other choice." + ::= { prtInputEntry 2 } + +prtInputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The unit of measurement for use calculating and relaying + dimensional values for this input sub-unit." + ::= { prtInputEntry 3 } + +prtInputMediaDimFeedDirDeclared OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the declared dimension, in + the feed direction, of the media that is (or, if empty, was or + will be) in this input sub-unit. The feed direction is the + direction in which the media is fed on this sub-unit. This + dimension is measured in input sub-unit dimensional units + (controlled by prtInputDimUnit, which uses PrtMediaUnitTC). If + this input sub-unit can reliably sense this value, the value is + sensed by the printer and may not be changed by management + requests. Otherwise, the value may be changed. The value (-1) + means other and specifically means that this sub-unit places no + restriction on this parameter. The value (-2) indicates + unknown." + ::= { prtInputEntry 4 } + +prtInputMediaDimXFeedDirDeclared OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object provides the value of the declared dimension, in + the cross feed direction, of the media that is (or, if empty, + was or will be) in this input sub-unit. The cross feed + direction is ninety degrees relative to the feed direction + associated with this sub-unit. This dimension is measured in + input sub-unit dimensional units (controlled by prtInputDimUnit, + which uses PrtMediaUnitTC). If this input sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed by management requests. Otherwise, the value may be + changed. The value (-1) means other and specifically means that + this sub-unit places no restriction on this parameter. The value + (-2) indicates unknown." + ::= { prtInputEntry 5 } + +prtInputMediaDimFeedDirChosen OBJECT-TYPE + SYNTAX Integer32 + + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The printer will act as if media of the chosen dimension (in + the feed direction) is present in this input source. Note that + this value will be used even if the input tray is empty. Feed + dimension measurements are taken relative to the feed direction + associated with that sub-unit and are in input sub-unit + dimensional units (controlled by prtInputDimUnit, which uses + PrtMediaUnitTC). If the printer supports the declared dimension, + the granted dimension is the same as the declared dimension. If + not, the granted dimension is set to the closest dimension that + the printer supports when the declared dimension is set. The + value (-1) means other and specifically indicates that this + sub-unit places no restriction on this parameter. The value (-2) + indicates unknown." + ::= { prtInputEntry 6 } + +prtInputMediaDimXFeedDirChosen OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The printer will act as if media of the chosen dimension (in + the cross feed direction) is present in this input source. Note + that this value will be used even if the input tray is empty. + The cross feed direction is ninety degrees relative to the feed + direction associated with this sub-unit. This dimension is + measured in input sub-unit dimensional units (controlled by + prtInputDimUnit, which uses PrtMediaUnitTC). If the printer + supports the declare dimension, the granted dimension is the + same as the declared dimension. If not, the granted dimension is + set to the closest dimension that the printer supports when the + declared dimension is set. The value (-1) means other and + specifically indicates that this sub-unit places no restriction + on this parameter. The value (-2) indicates unknown." + ::= { prtInputEntry 7 } + +prtInputCapacityUnit OBJECT-TYPE + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + capacity values for this input sub-unit." + + ::= { prtInputEntry 8 } + +prtInputMaxCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of the input sub-unit in input sub-unit + capacity units (PrtCapacityUnitTC). There is no convention + associated with the media itself so this value reflects claimed + capacity. If this input sub-unit can reliably sense this value, + the value is sensed by the printer and may not be changed by + management requests; otherwise, the value may be written (by a + Remote Control Panel or a Management Application). The value + (-1) means other and specifically indicates that the sub-unit + places no restrictions on this parameter. The value (-2) means + unknown." + ::= { prtInputEntry 9 } + +prtInputCurrentLevel OBJECT-TYPE + SYNTAX Integer32 -- in capacity units + -- (PrtCapacityUnitTC). + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current capacity of the input sub-unit in input sub-unit + capacity units (PrtCapacityUnitTC). If this input sub-unit can + reliably sense this value, the value is sensed by the printer + and may not be changed by management requests; otherwise, the + value may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown. The value (-3) means + that the printer knows that at least one unit remains." + ::= { prtInputEntry 10 } + +prtInputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this input sub-unit." + ::= { prtInputEntry 11 } + +prtInputMediaName OBJECT-TYPE + + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "A description of the media contained in this input sub-unit; + This description is intended for display to a human operator. + This description is not processed by the printer. It is used to + provide information not expressible in terms of the other media + attributes (e.g. prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputMediaWeight, + prtInputMediaType). An example would be 'legal tender bond + paper'." + REFERENCE + "See Appendix C, 'Media Names'." + ::= { prtInputEntry 12 } + +-- INPUT MEASUREMENT +-- +-- _______ | | +-- ^ | | +-- | | | | +-- | |_ _ _ _ _ _ _ _| _______________ |direction +-- | | | ^ v +-- MaxCapacity | Sheets | | +-- | | left | CurrentLevel +-- | | in | | +-- v | tray | v +-- _______ +_______________+ _______ + +-- The Extended Input Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtInputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this input sub-unit." + ::= { prtInputEntry 13 } + +prtInputVendorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The vendor name of this input sub-unit." + ::= { prtInputEntry 14 } + +prtInputModel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The model name of this input sub-unit." + ::= { prtInputEntry 15 } + +prtInputVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of this input sub-unit." + ::= { prtInputEntry 16 } + +prtInputSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..32)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number assigned to this input sub-unit." + ::= { prtInputEntry 17 } + +prtInputDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free-form text description of this input sub-unit in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtInputEntry 18 } + +prtInputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Indicates if this input sub-unit has some security associated + with it." + + ::= { prtInputEntry 19 } + +-- The Input Media Group +-- +-- The Input Media Group supports identification of media +-- installed or available for use on a printing device. +-- Medium resources are identified by name, and include a +-- collection of characteristic attributes that may further be +-- used for selection and management of them. +-- The Input Media group consists of a set of optional +-- "columns" in the Input Table. In this manner, a minimally +-- conforming implementation may choose to not support reporting +-- of media resources if it cannot do so. +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtInputMediaWeight OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The weight of the medium associated with this input sub-unit in + grams / per meter squared. The value (-2) means unknown." + ::= { prtInputEntry 20 } + +prtInputMediaType OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the type of medium associated with this input sub + unit. This name need not be processed by the printer; it might + simply be displayed to an operator. The standardized string + values from ISO 10175 (DPA) and ISO 10180 (SPDL) are: + + stationery Separately cut sheets of an opaque + material + transparency Separately cut sheets of a transparent + material + envelope Envelopes that can be used for + conventional mailing purposes + envelope-plain Envelopes that are not preprinted and + have no windows + envelope-window Envelopes that have windows for + + addressing purposes + continuous-long Continuously connected sheets of an + opaque material connected along the + long edge + continuous-short Continuously connected sheets of an + opaque material connected along the + short edge + tab-stock Media with tabs + multi-part-form Form medium composed of multiple layers + not pre-attached to one another; each + sheet may be drawn separately from an + input source + labels Label stock + multi-layer Form medium composed of multiple layers + which are pre-attached to one another; + e.g., for use with impact printers. + + Implementers may add additional string values. The naming + conventions in ISO 9070 are recommended in order to avoid + potential name clashes." + ::= { prtInputEntry 21 } + +prtInputMediaColor OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name of the color of the medium associated with + this input sub-unit using standardized string values + from ISO 10175 (DPA) and ISO 10180 (SPDL) which are: + + other + unknown + white + pink + yellow + buff + goldenrod + blue + green + transparent + + Implementers may add additional string values. The naming + conventions in ISO 9070 are recommended in order to avoid + potential name clashes." + + ::= { prtInputEntry 22 } + +prtInputMediaFormParts OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The number of parts associated with the medium + associated with this input sub-unit if the medium is a + multi-part form. The value (-1) means other and + specifically indicates that the device places no + restrictions on this parameter. The value (-2) means + unknown." + ::= { prtInputEntry 23 } + +-- The Input Switching Group +-- +-- The input switching group allows the administrator to set the +-- input subunit time-out for the printer and to control the +-- automatic input subunit switching by the printer when an input +-- subunit becomes empty. +-- +-- This group is optional. However, to claim conformance to this +-- group, it is required to implement every object in the group. + +prtInputMediaLoadTimeout OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "When the printer is not able to print due to a subunit being + empty or the requested media must be manually loaded, the + printer will wait for the duration (in seconds) specified by + this object. Upon expiration of the time-out, the printer will + take the action specified by prtInputNextIndex. + + The event which causes the printer to enter the waiting state is + product specific. If the printer is not waiting for manually fed + media, it may switch from an empty subunit to a different + subunit without waiting for the time-out to expire. + + A value of (-1) implies 'other' or 'infinite' which translates + to 'wait forever'. The action which causes printing to continue + is product specific. A value of (-2) implies 'unknown'." + ::= { prtInputEntry 24 } + + +prtInputNextIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInputIndex corresponding to the input subunit + which will be used when this input subunit is emptied and the + time-out specified by prtInputMediaLoadTimeout expires. A value + of zero(0) indicates that auto input switching will not occur + when this input subunit is emptied. If the time-out specified by + prtInputLoadMediaTimeout expires and this value is zero(0), the + job will be aborted. A value of (-1) means other. The value (-2) + means 'unknown' and specifically indicates that an + implementation specific method will determine the next input + subunit to use at the time this subunit is emptied and the time + out expires. The value(-3) means input switching is not + supported for this subunit." + ::= { prtInputEntry 25 } + +-- The Output Group +-- +-- Output sub-units are managed as a tabular, indexed collection +-- of possible devices capable of receiving media delivered from +-- the printing process. Output sub-units typically have a +-- location, a type, an identifier, a set of constraints on +-- possible media sizes and potentially other characteristics, +-- and may be capable of indicating current status or capacity. +-- +-- Implementation of every object in this group is mandatory. + +prtOutput OBJECT IDENTIFIER ::= { printmib 9 } + +prtOutputTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtOutputEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the devices capable of receiving media delivered + from the printing process." + ::= { prtOutput 2 } + +prtOutputEntry OBJECT-TYPE + SYNTAX PrtOutputEntry + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "Attributes of a device capable of receiving media delivered + from the printing process. Entries may exist in the table for + each device index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtOutputIndex } + ::= { prtOutputTable 1 } + +PrtOutputEntry ::= SEQUENCE { + prtOutputIndex Integer32, + prtOutputType PrtOutputTypeTC, + prtOutputCapacityUnit PrtCapacityUnitTC, + prtOutputMaxCapacity Integer32, + prtOutputRemainingCapacity Integer32, + prtOutputStatus PrtSubUnitStatusTC, + prtOutputName OCTET STRING, + prtOutputVendorName OCTET STRING, + prtOutputModel OCTET STRING, + prtOutputVersion OCTET STRING, + prtOutputSerialNumber OCTET STRING, + prtOutputDescription LocalizedDescriptionStringTC, + prtOutputSecurity PresentOnOff, + prtOutputDimUnit PrtMediaUnitTC, + prtOutputMaxDimFeedDir Integer32, + prtOutputMaxDimXFeedDir Integer32, + prtOutputMinDimFeedDir Integer32, + prtOutputMinDimXFeedDir Integer32, + prtOutputStackingOrder PrtOutputStackingOrderTC, + prtOutputPageDeliveryOrientation + PrtOutputPageDeliveryOrientationTC, + prtOutputBursting PresentOnOff, + prtOutputDecollating PresentOnOff, + prtOutputPageCollated PresentOnOff, + prtOutputOffsetStacking PresentOnOff + } + +prtOutputIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by this printer to identify this + output sub-unit. Although these values may change due + to a major reconfiguration of the sub-unit (e.g. the + addition of new output devices to the printer), values + + are expected to remain stable across successive printer + power cycles." + ::= { prtOutputEntry 1 } + +prtOutputType OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtOutputTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of technology supported by this output sub-unit." + ::= { prtOutputEntry 2 } + +prtOutputCapacityUnit OBJECT-TYPE + SYNTAX PrtCapacityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + capacity values for this output sub-unit." + ::= { prtOutputEntry 3 } + +prtOutputMaxCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this output sub-unit in output sub-unit + capacity units (PrtCapacityUnitTC). There is no convention + associated with the media itself so this value essentially + reflects claimed capacity. If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed by management requests; otherwise, the value may be + written (by a Remote Control Panel or a Management Application). + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown." + ::= { prtOutputEntry 4 } + +prtOutputRemainingCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The remaining capacity of the possible output sub-unit capacity + + in output sub-unit capacity units (PrtCapacityUnitTC)of this + output sub-unit. If this output sub-unit can reliably sense this + value, the value is sensed by the printer and may not be + modified by management requests; otherwise, the value may be + written (by a Remote Control Panel or a Management Application). + The value (-1) means other and specifically indicates that the + sub-unit places no restrictions on this parameter. The value + (-2) means unknown. The value (-3) means that the printer knows + that there remains capacity for at least one unit." + ::= { prtOutputEntry 5 } + +prtOutputStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this output sub-unit." + ::= { prtOutputEntry 6 } + +-- OUTPUT MEASUREMENT +-- +-- _______ | | ________ +-- ^ | | ^ +-- | | | | +-- | | |RemainingCapacity +-- MaxCapacity| | | +-- | | | v ^ +-- | |_ _ _ _ _ _ _ _ | _______________ |direction +-- | | Sheets | | +-- | | in | +-- v | Output | +-- _______ +________________+ + +-- The Extended Output Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtOutputName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The name assigned to this output sub-unit." + ::= { prtOutputEntry 7 } + + +prtOutputVendorName OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The vendor name of this output sub-unit." + ::= { prtOutputEntry 8 } + +prtOutputModel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The model name assigned to this output sub-unit." + ::= { prtOutputEntry 9 } + +prtOutputVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of this output sub-unit." + ::= { prtOutputEntry 10 } + +prtOutputSerialNumber OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The serial number assigned to this output sub-unit." + ::= { prtOutputEntry 11 } + +prtOutputDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A free-form text description of this output sub-unit in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtOutputEntry 12 } + +prtOutputSecurity OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + + STATUS current + DESCRIPTION + "Indicates if this output sub-unit has some security associated + with it and if that security is enabled or not." + ::= { prtOutputEntry 13 } + +-- The Output Dimensions Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtOutputDimUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measurement for use in calculating and relaying + dimensional values for this output sub-unit." + ::= { prtOutputEntry 14 } + +prtOutputMaxDimFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum dimensions supported by this output sub-unit + for measurements taken parallel relative to the feed + direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed with management protocol operations." + ::= { prtOutputEntry 15 } + +prtOutputMaxDimXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum dimensions supported by this output sub-unit + for measurements taken ninety degrees relative to the + feed direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + + be changed with management protocol operations." + ::= { prtOutputEntry 16 } + +prtOutputMinDimFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum dimensions supported by this output sub-unit + for measurements taken parallel relative to the feed + direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed with management protocol operations." + ::= { prtOutputEntry 17 } + +prtOutputMinDimXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The minimum dimensions supported by this output sub-unit + for measurements taken ninety degrees relative to the + feed direction associated with that sub-unit in output + sub-unit dimensional units (controlled by prtOutputDimUnit, + which uses PrtMediaUnitTC). If this output sub-unit can reliably + sense this value, the value is sensed by the printer and may not + be changed with management protocol operations." + ::= { prtOutputEntry 18 } + +-- The Output Features Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtOutputStackingOrder OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtOutputStackingOrderTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current state of the stacking order for the + associated output sub-unit. 'FirstToLast' means + that as pages are output the front of the next page is + + placed against the back of the previous page. + 'LasttoFirst' means that as pages are output the back + of the next page is placed against the front of the + previous page." + ::= { prtOutputEntry 19 } + +prtOutputPageDeliveryOrientation OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtOutputPageDeliveryOrientationTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The reading surface that will be 'up' when pages are + delivered to the associated output sub-unit. Values are + faceUp and faceDown. (Note: interpretation of these + values is in general context-dependent based on locale; + presentation of these values to an end-user should be + normalized to the expectations of the user)." + ::= { prtOutputEntry 20 } + +prtOutputBursting OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the outputting sub-unit supports + bursting, and if so, whether the feature is enabled. Bursting is + the process by which continuous media is separated into + individual sheets, typically by bursting along pre-formed + perforations." + ::= { prtOutputEntry 21 } + +prtOutputDecollating OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output supports decollating, and + if so, whether the feature is enabled. Decollating is the + process by which the individual parts within a multi-part form + are separated and sorted into separate stacks for each part." + ::= { prtOutputEntry 22 } + +prtOutputPageCollated OBJECT-TYPE + SYNTAX PresentOnOff + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output sub-unit supports page + collation, and if so, whether the feature is enabled. See + glossary for definition of how this document defines collation." + ::= { prtOutputEntry 23 } + +prtOutputOffsetStacking OBJECT-TYPE + SYNTAX PresentOnOff + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object indicates that the output supports offset stacking, + and if so, whether the feature is enabled. See glossary for how + Offset Stacking is defined by this document." + ::= { prtOutputEntry 24 } + +-- The Marker Group +-- +-- A marker is the mechanism that produces marks on the print +-- media. The marker sub-units and their associated supplies are +-- represented by the Marker Group in the model. A printer can +-- contain one or more marking mechanisms. Some examples of +-- multiple marker sub-units are: a printer +-- with separate markers for normal and magnetic ink or an +-- imagesetter that can output to both a proofing device and +-- final film. Each marking device can have its own set of +-- characteristics associated with it, such as marking technology +-- and resolution. +-- +-- Implementation of every object in this group is mandatory. + +prtMarker OBJECT IDENTIFIER ::= { printmib 10 } + +-- The printable area margins as listed below define an area of +-- the print media which is guaranteed to be printable for all +-- combinations of input, media paths, and interpreters for this +-- marker. + +prtMarkerTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "" + ::= { prtMarker 2 } + +prtMarkerEntry OBJECT-TYPE + SYNTAX PrtMarkerEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtMarkerIndex } + ::= { prtMarkerTable 1 } + +PrtMarkerEntry ::= SEQUENCE { + prtMarkerIndex Integer32, + prtMarkerMarkTech PrtMarkerMarkTechTC, + prtMarkerCounterUnit PrtMarkerCounterUnitTC, + prtMarkerLifeCount Counter32, + prtMarkerPowerOnCount Counter32, + prtMarkerProcessColorants Integer32, + prtMarkerSpotColorants Integer32, + prtMarkerAddressabilityUnit PrtMarkerAddressabilityUnitTC, + prtMarkerAddressabilityFeedDir Integer32, + prtMarkerAddressabilityXFeedDir Integer32, + prtMarkerNorthMargin Integer32, + prtMarkerSouthMargin Integer32, + prtMarkerWestMargin Integer32, + prtMarkerEastMargin Integer32, + prtMarkerStatus PrtSubUnitStatusTC + } + +prtMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this marking + SubUnit. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new marking + sub-units to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtMarkerEntry 1 } + +prtMarkerMarkTech OBJECT-TYPE + -- This value is a type 2 enumeration + + SYNTAX PrtMarkerMarkTechTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of marking technology used for this marking sub-unit." + ::= { prtMarkerEntry 2 } + +prtMarkerCounterUnit OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerCounterUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit that will be used by the printer when reporting + counter values for this marking sub-unit. The time units of + measure are provided for a device like a strip recorder that + does not or cannot track the physical dimensions of the media + and does not use characters, lines or sheets." + ::= { prtMarkerEntry 3 } + +prtMarkerLifeCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the number of units of measure counted during the + life of printer using units of measure as specified by + prtMarkerCounterUnit." + ::= { prtMarkerEntry 4 } + +prtMarkerPowerOnCount OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The count of the number of units of measure counted since the + equipment was most recently powered on using units of measure as + specified by prtMarkerCounterUnit." + ::= { prtMarkerEntry 5 } + +prtMarkerProcessColorants OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The number of process colors supported by this marker. A + process color of 1 implies monochrome. The value of this object + and prtMarkerSpotColorants cannot both be 0. The value of + prtMarkerProcessColorants must be 0 or greater." + ::= { prtMarkerEntry 6 } + +prtMarkerSpotColorants OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of spot colors supported by this marker. The value + of this object and prtMarkerProcessColorants cannot both be 0. + Must be 0 or greater." + ::= { prtMarkerEntry 7 } + +prtMarkerAddressabilityUnit OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerAddressabilityUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure of distances, as applied to the marker's + resolution." + ::= { prtMarkerEntry 8 } + +prtMarkerAddressabilityFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addressable marking positions in the feed + direction per 10000 units of measure specified by + prtMarkerAddressabilityUnit. A value of (-1) implies 'other' or + 'infinite' while a value of (-2) implies 'unknown'." + ::= { prtMarkerEntry 9 } + +prtMarkerAddressabilityXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum number of addressable marking positions in the + cross feed direction in 10000 units of measure specified by + prtMarkerAddressabilityUnit. A value of (-1) implies 'other' or + + 'infinite' while a value of (-2) implies 'unknown'." + ::= { prtMarkerEntry 10 } + +prtMarkerNorthMargin OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin, in units identified by prtMarkerAddressabilityUnit, + from the leading edge of the medium as the medium flows through + the marking engine with the side to be imaged facing the + observer. The leading edge is the North edge and the other edges + are defined by the normal compass layout of directions with the + compass facing the observer. Printing within the area bounded + by all four margins is guaranteed for all interpreters. The + value (-2) means unknown." + ::= { prtMarkerEntry 11 } + +prtMarkerSouthMargin OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the South edge (see prtMarkerNorthMargin) of + the medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 12 } + +prtMarkerWestMargin OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The margin from the West edge (see prtMarkerNorthMargin) of the + medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 13 } + +prtMarkerEastMargin OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + + "The margin from the East edge (see prtMarkerNorthMargin) of the + medium in units identified by prtMarkerAddressabilityUnit. + Printing within the area bounded by all four margins is + guaranteed for all interpreters. The value (-2) means unknown." + ::= { prtMarkerEntry 14 } + +prtMarkerStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this marker sub-unit." + ::= { prtMarkerEntry 15 } + +-- The Marker Supplies Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtMarkerSupplies OBJECT IDENTIFIER ::= { printmib 11 } + +prtMarkerSuppliesTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerSuppliesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of the marker supplies available on this printer." + ::= { prtMarkerSupplies 1 } + +prtMarkerSuppliesEntry OBJECT-TYPE + SYNTAX PrtMarkerSuppliesEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a marker supply. Entries may exist in the table + for each device index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtMarkerSuppliesIndex } + ::= { prtMarkerSuppliesTable 1 } + +PrtMarkerSuppliesEntry ::= SEQUENCE { + prtMarkerSuppliesIndex Integer32, + prtMarkerSuppliesMarkerIndex Integer32, + prtMarkerSuppliesColorantIndex Integer32, + prtMarkerSuppliesClass PrtMarkerSuppliesClassTC, + prtMarkerSuppliesType PrtMarkerSuppliesTypeTC, + + prtMarkerSuppliesDescription LocalizedDescriptionStringTC, + prtMarkerSuppliesSupplyUnit PrtMarkerSuppliesSupplyUnitTC, + prtMarkerSuppliesMaxCapacity Integer32, + prtMarkerSuppliesLevel Integer32 + } + +prtMarkerSuppliesIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this marker + supply. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new marker + supplies to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtMarkerSuppliesEntry 1 } + +prtMarkerSuppliesMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the marking sub + unit with which this marker supply sub-unit is associated." + ::= { prtMarkerSuppliesEntry 2 } + +prtMarkerSuppliesColorantIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerColorantIndex corresponding to the + colorant with which this marker supply sub-unit is associated. + This value shall be 0 if there is no colorant table or if this + supply does not depend on a single specified colorant." + ::= { prtMarkerSuppliesEntry 3 } + +prtMarkerSuppliesClass OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerSuppliesClassTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether this supply entity represents a supply that + + is consumed or a receptacle that is filled." + ::= { prtMarkerSuppliesEntry 4 } + +prtMarkerSuppliesType OBJECT-TYPE + -- This value is a type 3 enumeration + SYNTAX PrtMarkerSuppliesTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this supply." + ::= { prtMarkerSuppliesEntry 5 } + +prtMarkerSuppliesDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The description of this supply container/receptacle in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtMarkerSuppliesEntry 6 } + +prtMarkerSuppliesSupplyUnit OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerSuppliesSupplyUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Unit of measure of this marker supply container/receptacle." + ::= { prtMarkerSuppliesEntry 7 } + +prtMarkerSuppliesMaxCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The maximum capacity of this supply container/receptacle + expressed in prtMarkerSuppliesSupplyUnit. If this supply + container/receptacle can reliably sense this value, the value is + reported by the printer and is read-only; otherwise, the value + may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown." + ::= { prtMarkerSuppliesEntry 8 } + + +prtMarkerSuppliesLevel OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current level if this supply is a container; remaining + space if this supply is a receptacle. If this supply + container/receptacle can reliably sense this value, the value is + reported by the printer and is read-only; otherwise, the value + may be written (by a Remote Control Panel or a Management + Application). The value (-1) means other and specifically + indicates that the sub-unit places no restrictions on this + parameter. The value (-2) means unknown. A value of (-3) means + that the printer knows that there is some supply/remaining + space, respectively." + ::= { prtMarkerSuppliesEntry 9 } + +-- The Marker Colorant Group +-- +-- This group is optional. However, to claim conformance to this +-- group, it is necessary to implement every object in the group. + +prtMarkerColorant OBJECT IDENTIFIER ::= { printmib 12 } + +prtMarkerColorantTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMarkerColorantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table of all of the colorants available on the printer." + ::= { prtMarkerColorant 1 } + +prtMarkerColorantEntry OBJECT-TYPE + SYNTAX PrtMarkerColorantEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Attributes of a colorant available on the printer. Entries may + exist in the table for each device index with a device type of + 'printer'." + INDEX { hrDeviceIndex, prtMarkerColorantIndex } + ::= { prtMarkerColorantTable 1 } + +PrtMarkerColorantEntry ::= SEQUENCE { + prtMarkerColorantIndex Integer32, + + prtMarkerColorantMarkerIndex Integer32, + prtMarkerColorantRole PrtMarkerColorantRoleTC, + prtMarkerColorantValue OCTET STRING, + prtMarkerColorantTonality Integer32 + } + +prtMarkerColorantIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this colorant. + Although these values may change due to a major reconfiguration + of the device (e.g. the addition of new colorants to the + printer) , values are expected to remain stable across + successive printer power cycles." + ::= { prtMarkerColorantEntry 1 } + +prtMarkerColorantMarkerIndex OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of prtMarkerIndex corresponding to the marker sub + unit with which this colorant entry is associated." + ::= { prtMarkerColorantEntry 2 } + +prtMarkerColorantRole OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMarkerColorantRoleTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The role played by this colorant." + ::= { prtMarkerColorantEntry 3 } + +prtMarkerColorantValue OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The name of the color of this colorant using standardized + string names from ISO 10175 (DPA) and ISO 10180 (SPDL) such as: + other + unknown + + white + red + green + blue + cyan + magenta + yellow + black + Implementers may add additional string values. The naming + conventions in ISO 9070 are recommended in order to avoid + potential name clashes" + ::= { prtMarkerColorantEntry 4 } + +prtMarkerColorantTonality OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The distinct levels of tonality realizable by a marking sub + unit when using this colorant. This value does not include the + number of levels of tonal difference that an interpreter can + obtain by techniques such as half toning. This value must be at + least 2." + ::= { prtMarkerColorantEntry 5 } + +-- The Media Path Group +-- +-- The media paths encompass the mechanisms in the printer that +-- move the media through the printer and connect all other media +-- related sub-units: inputs, outputs, markers and finishers. A +-- printer contains one or more media paths. These are +-- represented by the Media Path Group in the model. The Media +-- Path group has some attributes that apply to all +-- paths plus a table of the separate media paths. + +prtMediaPath OBJECT IDENTIFIER ::= { printmib 13 } + +prtMediaPathTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtMediaPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtMediaPath 4 } + + +prtMediaPathEntry OBJECT-TYPE + SYNTAX PrtMediaPathEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtMediaPathIndex } + ::= { prtMediaPathTable 1 } + +PrtMediaPathEntry ::= SEQUENCE { + prtMediaPathIndex Integer32, + prtMediaPathMaxSpeedPrintUnit + PrtMediaPathMaxSpeedPrintUnitTC, + prtMediaPathMediaSizeUnit PrtMediaUnitTC, + prtMediaPathMaxSpeed Integer32, + prtMediaPathMaxMediaFeedDir Integer32, + prtMediaPathMaxMediaXFeedDir Integer32, + prtMediaPathMinMediaFeedDir Integer32, + prtMediaPathMinMediaXFeedDir Integer32, + prtMediaPathType PrtMediaPathTypeTC, + prtMediaPathDescription LocalizedDescriptionStringTC, + prtMediaPathStatus PrtSubUnitStatusTC + } + +prtMediaPathIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this media path. + Although these values may change due to a major reconfiguration + of the device (e.g. the addition of new media paths to the + printer), values are expected to remain stable across successive + printer power cycles." + ::= { prtMediaPathEntry 1 } + +prtMediaPathMaxSpeedPrintUnit OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtMediaPathMaxSpeedPrintUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The unit of measure used in specifying the speed of all media + paths in the printer." + + ::= { prtMediaPathEntry 2 } + +prtMediaPathMediaSizeUnit OBJECT-TYPE + SYNTAX PrtMediaUnitTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The units of measure of media size for use in calculating and + relaying dimensional values for all media paths in the printer." + ::= { prtMediaPathEntry 3 } + +prtMediaPathMaxSpeed OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum printing speed of this media path expressed in + prtMediaPathMaxSpeedUnit's. A value of (-1) implies 'other'." + ::= { prtMediaPathEntry 4 } + +prtMediaPathMaxMediaFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum physical media size in the feed direction of this + media path expressed in units of measure specified by + PrtMediaPathMediaSizeUnit. A value of (-1) implies 'unlimited' + a value of (-2) implies 'unknown'" + ::= { prtMediaPathEntry 5 } + +prtMediaPathMaxMediaXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum physical media size across the feed direction of + this media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'." + ::= { prtMediaPathEntry 6 } + +prtMediaPathMinMediaFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + + DESCRIPTION + "The minimum physical media size in the feed direction of this + media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'." + ::= { prtMediaPathEntry 7 } + +prtMediaPathMinMediaXFeedDir OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The minimum physical media size across the feed direction of + this media path expressed in units of measure specified by + prtMediaPathMediaSizeUnit. A value of (-2) implies 'unknown'." + ::= { prtMediaPathEntry 8 } + +prtMediaPathType OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtMediaPathTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of the media path for this media path." + ::= { prtMediaPathEntry 9 } + +prtMediaPathDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The manufacturer-provided description of this media path in the + localization specified by prtGeneralCurrentLocalization." + ::= { prtMediaPathEntry 10 } + +prtMediaPathStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of this media path." + ::= { prtMediaPathEntry 11 } + +-- The Print Job Delivery Channel Group +-- +-- Implementation of every object in this group is mandatory except for + +-- prtChannelInformation. +-- +-- Print Job Delivery Channels are independent sources of print +-- data. Here, print data is the term used for the information +-- that is used to construct printed pages and may have both data +-- and control aspects. The output of a channel is in a form +-- suitable for input to one of the interpreters as a +-- stream. A channel may be independently enabled (allowing +-- print data to flow) or disabled (stopping the flow of +-- print data). A printer may have one or more channels. +-- +-- The Print Job Delivery Channel table describes the +-- capabilities of the printer and not what is currently being +-- performed by the printer +-- +-- Basically, the print job delivery channel abstraction +-- describes the final processing step of getting the print data +-- to an interpreter. It might include some level of +-- decompression or decoding of print stream data. +-- channel. All of these aspects are hidden in the channel +-- abstraction. +-- +-- There are many kinds of print job delivery channels; some of +-- which are based on networks and others which are not. For +-- example, a channel can be a serial (or parallel) connection; +-- it can be a service, such as the UNIX Line Printer Daemon +-- (LPD), offering services over a network connection; or +-- it could be a disk drive into which a floppy disk with +-- the print data is inserted. Each print job delivery channel is +-- identified by the electronic path and/or service protocol +-- used to deliver print data to a print data interpreter. +-- +-- Channel example Implementation +-- +-- serial port channel bi-directional data channel +-- parallel port channel often uni-directional channel +-- IEEE 1284 port channel bi-directional channel +-- SCSI port channel bi-directional +-- Apple PAP channel may be based on LocalTalk, +-- Ethernet or Tokentalk +-- LPD Server channel TCP/IP based, port 515 +-- Netware Remote Printer SPX/IPX based channel +-- Netware Print Server SPX/IPX based channel +-- +-- It is easy to note that this is a mixed bag. There are + +-- some physical connections over which no (or very meager) +-- protocols are run (e.g. the serial or old parallel ports) +-- and there are services which often have elaborate +-- protocols that run over a number of protocol stacks. In +-- the end, what is important is the delivery of print data +-- through the channel. +-- +-- The print job delivery channel sub-units are represented by +-- the Print Job Delivery Channel Group in the Model. It has a +-- current print job control language, which can be used to +-- specify which interpreter is to be used for the print data and +-- to query and change environment variables used by the +-- interpreters (and Management Applications). There is also a +-- default interpreter that is to be used if an interpreter is +-- not explicitly specified using the Control Language. + +-- The first seven items in the Print Job Delivery Channel Table +-- define the "channel" itself. A channel typically depends on +-- other protocols and interfaces to provide the data that flows +-- through the channel. +-- +-- Control of a print job delivery channel is largely limited to +-- enabling or disabling the entire channel itself. It is likely +-- that more control of the process of accessing print data +-- will be needed over time. Thus, the ChannelType will +-- allow type-specific data to be associated with each +-- channel (using ChannelType specific groups in a fashion +-- analogous to the media specific MIBs that are associated +-- with the IANAIfType in the Interfaces Table). As a first +-- step in this direction, each channel will identify the +-- underlying Interface on which it is based. This is the +-- eighth object in each row of the table. + +-- The Print Job Delivery Channel Table +-- +-- The prtChannelTable represents the set of input data sources +-- which can provide print data to one or more of the +-- interpreters available on a printer + +prtChannel OBJECT IDENTIFIER ::= { printmib 14 } + +prtChannelTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtChannelEntry + MAX-ACCESS not-accessible + STATUS current + + DESCRIPTION + "" + ::= { prtChannel 1 } + +prtChannelEntry OBJECT-TYPE + SYNTAX PrtChannelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtChannelIndex } + ::= { prtChannelTable 1 } + +PrtChannelEntry ::= SEQUENCE { + prtChannelIndex Integer32, + prtChannelType PrtChannelTypeTC, + prtChannelProtocolVersion OCTET STRING, + prtChannelCurrentJobCntlLangIndex Integer32, + prtChannelDefaultPageDescLangIndex Integer32, + prtChannelState PrtChannelStateTC, + prtChannelIfIndex Integer32, + prtChannelStatus PrtSubUnitStatusTC, + prtChannelInformation OCTET STRING + } + +prtChannelIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this data + channel. Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new data + channels to the printer), values are expected to remain stable + across successive printer power cycles." + ::= { prtChannelEntry 1 } + +prtChannelType OBJECT-TYPE + SYNTAX PrtChannelTypeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of this print data channel. This object provides the + linkage to ChannelType-specific groups that may (conceptually) + + extend the prtChannelTable with additional details about that + channel." + ::= { prtChannelEntry 2 } + +prtChannelProtocolVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..63)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The version of the protocol used on this channel. The format + used for version numbering depends on prtChannelType." + ::= { prtChannelEntry 3 } + +prtChannelCurrentJobCntlLangIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInterpreterIndex corresponding to the Control + Language Interpreter for this channel. This interpreter defines + the syntax used for control functions, such as querying or + changing environment variables and identifying job boundaries + (e.g. PJL, PostScript, NPAP). A value of zero indicates that + there is no current Job Control Language Interpreter for this + channel" + ::= { prtChannelEntry 4 } + +prtChannelDefaultPageDescLangIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of prtInterpreterIndex corresponding to the Page + Description Language Interpreter for this channel. This + interpreter defines the default Page Description Language + interpreter to be used for the print data unless the Control + Language is used to select a specific interpreter (e.g., PCL, + PostScript Language, auto-sense). A value of zero indicates that + there is no default page description language interpreter for + this channel." + ::= { prtChannelEntry 5 } + +prtChannelState OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtChannelStateTC + + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The state of this print data channel. The value determines + whether control information and print data is allowed through + this channel or not." + ::= { prtChannelEntry 6 } + +prtChannelIfIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The value of ifIndex in the ifTable; see the interface section + of MIB-II (RFC 1213 [14]) which corresponds to this channel. + When more than one row of the ifTable is relevant, this is the + index of the row representing the topmost layer in the interface + hierarchy. A value of zero indicates that no interface is + associated with this channel." + ::= { prtChannelEntry 7 } + +prtChannelStatus OBJECT-TYPE + SYNTAX PrtSubUnitStatusTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The current status of the channel." + ::= { prtChannelEntry 8 } + +prtChannelInformation OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Auxiliary information to allow a printing application to use + the channel for data submission to the printer. An application + capable of using a specific PrtChannelType should be able to use + the combined information from the prtChannelInformation and + other channel and interface group objects to 'bootstrap' its use + of the channel. prtChannelInformation is not intended to + provide a general channel description, nor to provide + information that is available once the channel is in use. + + The encoding and interpretation of the prtChannelInformation + object is specific to channel type. The description of each + + PrtChannelType enum value for which prtChannelInformation is + defined specifies the appropriate encoding and interpretation, + including interaction with other objects. For channel types + that do not specify a prtChannelInformation value, its value + shall be null (0 length). + + When a new PrtChannelType enumeration value is registered, its + accompanying description must specify the encoding and + interpretation of the prtChannelInformation value for the + channel type. prtChannelInformation semantics for an existing + PrtChannelType may be added or amended in the same manner as + described in section 2.4.1 for type 2 enumeration values. + + The prtChannelInformation specifies values for a collection of + channel attributes, represented as text according to the + following rules: + + 1. The prtChannelInformation is not affected by localization. + + 2. The prtChannelInformation is a list of entries representing + the attribute values. Each entry consists of the following + items, in order: + + a. A keyword, composed of alphabetic characters (A-Z, a-z) + represented by their NVT ASCII [10] codes, that + identifies a channel attribute, + + b. The NVT ASCII code for an Equals Sign (=) (code 61) to + delimit the keyword, + + c. A data value encoded using rules specific to the + PrtChannelType to with the prtChannelInformation applies which + must in no case allow an octet with value 10 (the NVT ASCII Line + Feed code), + + d. the NVT ASCII code for a Line Feed character (code 10) to + delimit the data value. + + No other octets shall be present. + + Keywords are case-sensitive. Conventionally, keywords are + capitalized (including each word of a multi-word keyword) and + since they occupy space in the prtChannelInformation, they are + kept short. + + + 3. If a channel attribute has multiple values, it is represented + by multiple entries with the same keyword, each specifying one + value. Otherwise, there shall be at most one entry for each + attribute. + + 4. By default, entries may appear in any order. If there are + ordering constraints for particular entries, these must be + specified in their definitions. + + 5. The prtChannelInformation value by default consists of text + represented by NVT ASCII graphics character codes. However, + other representations may be specified: + + a. In cases where the prtChannelInformation value contains + information not normally coded in textual form, whatever + symbolic representation is conventionally used for the + information should be used for encoding the + prtChannelInformation value. (For instance, a binary port value + might be represented as a decimal number using NVT ASCII codes.) + Such encoding must be specified in the definition of the value. + + b. The value may contain textual information in a character set + other than NVT ASCII graphics characters. (For instance, an + identifier might consist of ISO 10646 text encoded using the + UTF-8 encoding scheme.) Such a character set and its encoding + must be specified in the definition of the value. + + 6. For each PrtChannelType for which prtChannelInformation + entries are defined, the descriptive text associated with the + PrtChannelType enumeration value shall specify the following + information for each entry: + + Title: Brief description phrase, e.g.: 'Port name', + 'Service Name', etc. + + Keyword: The keyword value, e.g.: 'Port' or 'Service' + + Syntax: The encoding of the entry value if it cannot be + directly represented by NVT ASCII. + + Status: 'Mandatory', 'Optional', or 'Conditionally + Mandatory' + + Multiplicity: 'Single' or 'Multiple' to indicate whether the + entry may be present multiple times. + + + Description: Description of the use of the entry, other + information required to complete the definition + (e.g.: ordering constraints, interactions between + entries). + + Applications that interpret prtChannelInformation should ignore + unrecognized entries, so they are not affected if new entry + types are added." + + ::= { prtChannelEntry 9 } + +-- The Interpreter Group +-- +-- The interpreter sub-units are responsible for the conversion +-- of a description of intended print instances into images that +-- are to be marked on the media. A printer may have one or more +-- interpreters. The interpreter sub-units are represented by the +-- Interpreter Group in the Model. Each interpreter is generally +-- implemented with software running on the System Controller +-- sub-unit. The Interpreter Table has one entry per interpreter +-- where the interpreters include both Page Description Language +-- (PDL) Interpreters and Control Language Interpreters. +-- +-- Implementation of every object in this group is mandatory. + +prtInterpreter OBJECT IDENTIFIER ::= { printmib 15 } + +-- Interpreter Table +-- +-- The prtInterpreterTable is a table representing the +-- interpreters in the printer. An entry shall be placed in the +-- interpreter table for each interpreter on the printer. + +prtInterpreterTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtInterpreterEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtInterpreter 1 } + +prtInterpreterEntry OBJECT-TYPE + SYNTAX PrtInterpreterEntry + MAX-ACCESS not-accessible + + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtInterpreterIndex } + ::= { prtInterpreterTable 1 } + +PrtInterpreterEntry ::= SEQUENCE { + prtInterpreterIndex Integer32, + prtInterpreterLangFamily PrtInterpreterLangFamilyTC, + prtInterpreterLangLevel OCTET STRING, + prtInterpreterLangVersion OCTET STRING, + prtInterpreterDescription LocalizedDescriptionStringTC, + prtInterpreterVersion OCTET STRING, + prtInterpreterDefaultOrientation PrtPrintOrientationTC, + prtInterpreterFeedAddressability Integer32, + prtInterpreterXFeedAddressability Integer32, + prtInterpreterDefaultCharSetIn CodedCharSet, + prtInterpreterDefaultCharSetOut CodedCharSet, + prtInterpreterTwoWay PrtInterpreterTwoWayTC + } + +prtInterpreterIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each PDL or control language for which there + exists an interpreter or emulator in the printer. The value is + used to identify this interpreter. Although these values may + change due to a major reconfiguration of the device (e.g. the + addition of new interpreters to the printer), values are + expected to remain stable across successive printer power + cycles." + ::= { prtInterpreterEntry 1 } + +prtInterpreterLangFamily OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtInterpreterLangFamilyTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The family name of a Page Description Language (PDL) or control + language which this interpreter in the printer can interpret or + emulate." + + ::= { prtInterpreterEntry 2 } + +prtInterpreterLangLevel OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of the language which this interpreter is + interpreting or emulating. This might contain a value like '5e' + for an interpreter which is emulating level 5e of the PCL + language. It might contain '2' for an interpreter which is + emulating level 2 of the PostScript language. Similarly it might + contain '2' for an interpreter which is emulating level 2 of the + HPGL language." + ::= { prtInterpreterEntry 3 } + +prtInterpreterLangVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date code or version of the language which this interpreter + is interpreting or emulating." + ::= { prtInterpreterEntry 4 } + +prtInterpreterDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A string to identify this interpreter in the localization + specified by prtGeneralCurrentLocalization as opposed to the + language which is being interpreted. It is anticipated that + this string will allow manufacturers to unambiguously identify + their interpreters." + ::= { prtInterpreterEntry 5 } + +prtInterpreterVersion OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..31)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The date code, version number, or other product specific + information tied to this interpreter. This value is associated + with the interpreter, rather than with the version of the + + language which is being interpreted or emulated." + ::= { prtInterpreterEntry 6 } + +prtInterpreterDefaultOrientation OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtPrintOrientationTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The current orientation default for this interpreter. This + value may be overridden for a particular job (e.g., by a command + in the input data stream)." + ::= { prtInterpreterEntry 7 } + +prtInterpreterFeedAddressability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum interpreter addressability in the feed + direction in 10000 prtMarkerAddressabilityUnits (see + prtMarkerAddressabilityFeedDir ) for this interpreter. The value + (-1) means other and specifically indicates that the sub-unit + places no restrictions on this parameter." + ::= { prtInterpreterEntry 8 } + +prtInterpreterXFeedAddressability OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The maximum interpreter addressability in the cross feed + direction in 10000 prtMarkerAddressabilityUnits (see + prtMarkerAddressabilityXFeedDir) for this interpreter. The value + (-1) means other and specifically indicates that the sub-unit + places no restrictions on this parameter." + ::= { prtInterpreterEntry 9 } + +prtInterpreterDefaultCharSetIn OBJECT-TYPE + SYNTAX CodedCharSet + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default coded character set for input octets encountered + outside a context in which the Page Description Language + + established the interpretation of the octets. (Input octets are + presented to the interpreter through a path defined in the + channel group.) This value shall be (2) if there is no default." + ::= { prtInterpreterEntry 10 } + +prtInterpreterDefaultCharSetOut OBJECT-TYPE + SYNTAX CodedCharSet + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The default character set for data coming from this interpreter + through the printer's output channel (i.e. the 'backchannel'). + This value shall be (2) if there is no default." + ::= { prtInterpreterEntry 11 } + +prtInterpreterTwoWay OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtInterpreterTwoWayTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Indicates whether or not this interpreter returns information + back to the host." + ::= { prtInterpreterEntry 12 } + +-- The Console Group +-- +-- Many printers have a console on the printer, the operator +-- console, that is used to display and modify the state of the +-- printer. The console can be as simple as a few indicators and +-- switches or as complicated as full screen displays and +-- keyboards. There can be at most one such console. + +-- Implementation of every object in this group is mandatory. + +-- The Display Buffer Table + +prtConsoleDisplayBuffer OBJECT IDENTIFIER ::= { printmib 16 } + +prtConsoleDisplayBufferTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtConsoleDisplayBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Physical display buffer for printer console display or + + operator panel" + ::= { prtConsoleDisplayBuffer 5 } + +prtConsoleDisplayBufferEntry OBJECT-TYPE + SYNTAX PrtConsoleDisplayBufferEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This table contains one entry for each physical line on + the display. Lines cannot be added or deleted. Entries may + exist in the table for each device index with a device type of + 'printer'." + INDEX { hrDeviceIndex, prtConsoleDisplayBufferIndex } + ::= { prtConsoleDisplayBufferTable 1 } + +PrtConsoleDisplayBufferEntry ::= SEQUENCE { + prtConsoleDisplayBufferIndex Integer32, + prtConsoleDisplayBufferText ConsoleDescriptionStringTC + } + +prtConsoleDisplayBufferIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value for each console line in the printer. The value + is used to identify this console line. Although these values may + change due to a major reconfiguration of the device (e.g. the + addition of new console lines to the printer). Values are + normally expected to remain stable across successive printer + power cycles." + ::= { prtConsoleDisplayBufferEntry 1 } + +prtConsoleDisplayBufferText OBJECT-TYPE + SYNTAX ConsoleDescriptionStringTC + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The content of a line in the logical display buffer of + the operator's console of the printer. When a write + operation occurs, normally a critical message, to one of + the LineText strings, the agent should make that line + displayable if a physical display is present. Writing a zero + length string clears the line. It is an implementation-specific + matter as to whether the agent allows a line to be overwritten + + before it has been cleared. Printer generated strings shall be + in the localization specified by prtConsoleLocalization. + Management Application generated strings should be localized by + the Management Application." + ::= { prtConsoleDisplayBufferEntry 2 } + +-- The Console Light Table + +prtConsoleLights OBJECT IDENTIFIER ::= { printmib 17 } + +prtConsoleLightTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtConsoleLightEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtConsoleLights 6 } + +prtConsoleLightEntry OBJECT-TYPE + SYNTAX PrtConsoleLightEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Entries may exist in the table for each device index with a + device type of 'printer'." + INDEX { hrDeviceIndex, prtConsoleLightIndex } + ::= { prtConsoleLightTable 1 } + +PrtConsoleLightEntry ::= SEQUENCE { + prtConsoleLightIndex Integer32, + prtConsoleOnTime Integer32, + prtConsoleOffTime Integer32, + prtConsoleColor PrtConsoleColorTC, + prtConsoleDescription ConsoleDescriptionStringTC + } + +prtConsoleLightIndex OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A unique value used by the printer to identify this light. + Although these values may change due to a major + reconfiguration of the device (e.g. the addition of new lights + to the printer). Values are normally expected to remain stable + + across successive printer power cycles." + ::= { prtConsoleLightEntry 1 } + +prtConsoleOnTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object, in conjunction with prtConsoleOffTime, defines the + current status of the light. If both prtConsoleOnTime and + prtConsoleOffTime are non-zero, the lamp is blinking and the + values presented define the on time and off time, respectively, + in milliseconds. If prtConsoleOnTime is zero and + prtConsoleOffTime is non-zero, the lamp is off. If + prtConsoleOffTime is zero and prtConsoleOnTime is non-zero, the + lamp is on. If both values are zero the lamp is off." + ::= { prtConsoleLightEntry 2 } + +prtConsoleOffTime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "This object, in conjunction with prtConsoleOnTime, defines the + current status of the light. If both prtConsoleOnTime and + prtConsoleOffTime are non-zero, the lamp is blinking and the + values presented define the on time and off time, respectively, + in milliseconds. If prtConsoleOnTime is zero and + prtConsoleOffTime is non-zero, the lamp is off. If + prtConsoleOffTime is zero and prtConsoleOnTime is non-zero, the + lamp is on. If both values are zero the lamp is off." + ::= { prtConsoleLightEntry 3 } + +prtConsoleColor OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtConsoleColorTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The color of this light." + ::= { prtConsoleLightEntry 4 } + +prtConsoleDescription OBJECT-TYPE + SYNTAX ConsoleDescriptionStringTC + MAX-ACCESS read-only + + STATUS current + DESCRIPTION + "The vendor description or label of this light in the + localization specified by prtConsoleLocalization." + ::= { prtConsoleLightEntry 5 } + +-- The Alerts Group +-- +-- The prtAlertTable lists all the critical and non-critical +-- alerts currently active in the printer. A critical alert is +-- one that stops the printer from printing immediately and +-- printing can not continue until the critical alert condition +-- is eliminated. Non-critical alerts are those items that do +-- not stop printing but may at some future time. +-- The table contains information on the severity, component, +-- detail location within the component, alert code and +-- description of each critical alert that is currently active +-- within the printer. See 2.2.13 for a more complete +-- description of the alerts table and its management. +-- +-- Each parameter in the Trap PDU is a full OID which itself is +-- indexed by the host resources MIB "hrDeviceIndex" object. In +-- order for a management station to obtain the correct +-- "hrDeviceIndex" associated with a particular Trap PDU, the +-- "hrDeviceIndex" value can be extracted from the returned OID +-- value in the Trap PDU when the PDU is received by the +-- Management station. +-- +-- Implementation of every object in this group is mandatory. + +prtAlert OBJECT IDENTIFIER ::= { printmib 18 } + +prtAlertTable OBJECT-TYPE + SYNTAX SEQUENCE OF PrtAlertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { prtAlert 1 } + +prtAlertEntry OBJECT-TYPE + SYNTAX PrtAlertEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + + "Entries may exist in the table for each device + index with a device type of 'printer'." + INDEX { hrDeviceIndex, prtAlertIndex } + ::= { prtAlertTable 1 } + +PrtAlertEntry ::= SEQUENCE { + prtAlertIndex Integer32, + prtAlertSeverityLevel PrtAlertSeverityLevelTC, + prtAlertTrainingLevel PrtAlertTrainingLevelTC, + prtAlertGroup PrtAlertGroupTC, + prtAlertGroupIndex Integer32, + prtAlertLocation Integer32, + prtAlertCode PrtAlertCodeTC, + prtAlertDescription LocalizedDescriptionStringTC, + prtAlertTime TimeTicks + } + +prtAlertIndex OBJECT-TYPE + SYNTAX Integer32 (1..2147483647) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index value used to determine which alerts have been added + or removed from the alert table. This is an incrementing integer + initialized to 1 when the printer is reset. (i.e. The first + event placed in the alert table after a reset of the printer + shall have an index value of 1.) When the printer adds an alert + to the table, that alert is assigned the next higher integer + value from the last item entered into the table. If the index + value reaches its maximum value, the next index value used must + be 1. + + NOTE: The management application will read the alert table when + a trap or event notification occurs or at a periodic rate and + then parse the table to determine if any new entries were added + by comparing the last known index value with the current highest + index value. The management application will then update its + copy of the alert table. When the printer discovers that an + alert is no longer active, the printer shall remove the row for + that alert from the table and shall reduce the number of rows in + the table. The printer may add or delete any number of rows + from the table at any time. The management station can detect + when binary change alerts have been deleted by requesting an + attribute of each alert, and noting alerts as deleted when that + retrieval is not possible. The objects 'prtAlertCriticalEvents' + + and 'prtAlertAllEvents' in the 'prtGeneralTable' reduce the + need for management applications to scan the 'prtAlertTable'." + ::= { prtAlertEntry 1 } + +prtAlertSeverityLevel OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtAlertSeverityLevelTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The level of severity of this alert table entry. The printer + determines the severity level assigned to each entry into the + table." + ::= { prtAlertEntry 2 } + +prtAlertTrainingLevel OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtAlertTrainingLevelTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "See textual convention PrtAlertTrainingLevelTC" + ::= { prtAlertEntry 3 } + +prtAlertGroup OBJECT-TYPE + -- This value is a type 1 enumeration + SYNTAX PrtAlertGroupTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The type of sub-unit within the printer model that this alert + is related. Input, output, and markers are examples of printer + model groups, i.e., examples of types of sub-units. Wherever + possible, these enumerations match the sub-identifier that + identifies the relevant table in the printmib." + ::= { prtAlertEntry 4 } + +prtAlertGroupIndex OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "An index of the row within the principle table in the + group identified by prtAlertGroup that represents the sub-unit + of the printer that caused this alert. The combination of the + + prtAlertGroup and the prtAlertGroupIndex defines exactly which + printer sub-unit caused the alert; for example, Input #3, Output + #2, and Marker #1. Every object in this MIB is indexed with + hrDeviceIndex and optionally, another index variable. If this + other index variable is present in the table that generated the + alert, it will be used as the value for this object. Otherwise, + this value shall be -1." + ::= { prtAlertEntry 5 } + +prtAlertLocation OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The sub-unit location that is defined by the printer + manufacturer to further refine the location of this alert within + the designated sub-unit. The location is used in conjunction + with the Group and GroupIndex values; for example, there is an + alert in Input #2 at location number 7. The value (-2) indicates + unknown" + ::= { prtAlertEntry 6 } + +prtAlertCode OBJECT-TYPE + -- This value is a type 2 enumeration + SYNTAX PrtAlertCodeTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "See associated textual convention PrtAlertCodeTC" + ::= { prtAlertEntry 7 } + +prtAlertDescription OBJECT-TYPE + SYNTAX LocalizedDescriptionStringTC + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A description of this alert entry in the localization + specified by prtGeneralCurrentLocalization. The description is + provided by the printer to further elaborate on the enumerated + alert or provide information in the case where the code is + classified as 'other' or 'unknown'. The printer is required to + return a description string but the string may be a null + string." + ::= { prtAlertEntry 8 } + + +prtAlertTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The value of sysUpTime at the time that this alert was + generated. Implementation of this optional object is STRONGLY + RECOMMENDED for improved reliability and interworking." + ::= { prtAlertEntry 9 } + +printerV1Alert OBJECT-IDENTITY + STATUS current + DESCRIPTION + "The value of the enterprise-specific OID in an SNMPv1 trap sent + signaling a critical event in the prtAlertTable." + ::= { prtAlert 2 } + +printerV2AlertPrefix OBJECT IDENTIFIER ::= { printerV1Alert 0 } + +printerV2Alert NOTIFICATION-TYPE + OBJECTS { prtAlertIndex, prtAlertSeverityLevel, prtAlertGroup, + prtAlertGroupIndex, prtAlertLocation, prtAlertCode } + STATUS current + DESCRIPTION + "This trap is sent whenever a critical event is added to the + prtAlertTable." + ::= { printerV2AlertPrefix 1 } + +-- Note that the SNMPv2 to SNMPv1 translation rules dictate that +-- the preceding structure will result in SNMPv1 traps of the +-- following form: +-- +-- printerAlert TRAP-TYPE +-- ENTERPRISE printerV1Alert +-- VARIABLES { prtAlertIndex, prtAlertSeverityLevel, +-- prtAlertGroup, prtAlertGroupIndex, +-- prtAlertLocation, prtAlertCode } +-- DESCRIPTION +-- "This trap is sent whenever a critical event is added +-- to the prtAlertTable." +-- ::= 1 + +-- Conformance Information + +prtMIBConformance OBJECT IDENTIFIER ::= { printmib 2 } + + +-- compliance statements + +prtMIBCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION + "The compliance statement for agents that implement the + printer MIB." + MODULE -- this module + MANDATORY-GROUPS { prtGeneralGroup, prtInputGroup, + prtOutputGroup, + prtMarkerGroup, prtMediaPathGroup, + prtChannelGroup, prtInterpreterGroup, + prtConsoleGroup, prtAlertTableGroup } + OBJECT prtGeneralReset + SYNTAX INTEGER { + notResetting(3), + resetToNVRAM(5) + } + DESCRIPTION + "It is conformant to implement just these two states in this + object. Any additional states are optional." + + OBJECT prtGeneralCurrentLocalization + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralCurrentOperator + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralServicePerson + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralPrinterName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtGeneralSerialNumber + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaDimFeedDirDeclared + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputCurrentLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputSecurity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaWeight + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaType + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaColor + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaFormParts + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputRemainingCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputName + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputSecurity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxDimFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMaxDimXFeedDir + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMinDimFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputMinDimXFeedDir + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputStackingOrder + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputPageDeliveryOrientation + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputBursting + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputDecollating + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputPageCollated + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtOutputOffsetStacking + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerDefaultIndex + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerSuppliesMaxCapacity + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMarkerSuppliesLevel + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtMediaPathDefaultIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelCurrentJobCntlLangIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelDefaultPageDescLangIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelState + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtChannelIfIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultOrientation + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultCharSetIn + MIN-ACCESS read-only + + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInterpreterDefaultCharSetOut + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleLocalization + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleDisable + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleDisplayBufferText + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOnTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtConsoleOffTime + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + GROUP prtResponsiblePartyGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtExtendedInputGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtInputMediaGroup + DESCRIPTION + "This group is unconditionally optional." + + + GROUP prtExtendedOutputGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtOutputDimensionsGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtOutputFeaturesGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtMarkerSuppliesGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtMarkerColorantGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTimeGroup + DESCRIPTION + "This group is unconditionally optional." + + -- the prtResponsiblePartyGroup, prtExtendedInputGroup, + -- prtInputMediaGroup, prtExtendedOutputGroup, + -- prtOutputDimensionsGroup, prtOutputFeaturesGroup, + -- prtMarkerSuppliesGroup, prtMarkerColorantGroup, + -- and the prtAlertTimeGroup are completely optional. + + -- New to version 2 of this printer MIB: + OBJECT prtAuxiliarySheetStartupPage + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtAuxiliarySheetBannerPage + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + OBJECT prtInputMediaLoadTimeout + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + + OBJECT prtInputNextIndex + MIN-ACCESS read-only + DESCRIPTION + "It is conformant to implement this object as read-only" + + GROUP prtAuxiliarySheetGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtInputSwitchingGroup + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtGeneralV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTableV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtChannelV2Group + DESCRIPTION + "This group is unconditionally optional." + + GROUP prtAlertTrapGroup + DESCRIPTION + "This group is unconditionally optional." + ::= { prtMIBConformance 1 } + +prtMIBGroups OBJECT IDENTIFIER ::= { prtMIBConformance 2 } + +prtGeneralGroup OBJECT-GROUP + OBJECTS { prtGeneralConfigChanges, + prtGeneralCurrentLocalization, + prtGeneralReset, prtCoverDescription, + prtCoverStatus, + prtLocalizationLanguage, prtLocalizationCountry, + prtLocalizationCharacterSet, prtStorageRefIndex, + prtDeviceRefIndex } + STATUS current + DESCRIPTION + "The general printer group." + ::= { prtMIBGroups 1 } + + +prtResponsiblePartyGroup OBJECT-GROUP + OBJECTS { prtGeneralCurrentOperator, prtGeneralServicePerson } + STATUS current + DESCRIPTION + "The responsible party group contains contact information for + humans responsible for the printer." + ::= { prtMIBGroups 2 } + +prtInputGroup OBJECT-GROUP + OBJECTS { prtInputDefaultIndex, prtInputType, prtInputDimUnit, + prtInputMediaDimFeedDirDeclared, + prtInputMediaDimXFeedDirDeclared, + prtInputMediaDimFeedDirChosen, + prtInputMediaDimXFeedDirChosen, prtInputCapacityUnit, + prtInputMaxCapacity, prtInputCurrentLevel, prtInputStatus, + prtInputMediaName } + STATUS current + DESCRIPTION + "The input group." + ::= { prtMIBGroups 3 } + +prtExtendedInputGroup OBJECT-GROUP + OBJECTS { prtInputName, prtInputVendorName, prtInputModel, + prtInputVersion, prtInputSerialNumber, + prtInputDescription, prtInputSecurity } + STATUS current + DESCRIPTION + "The extended input group." + ::= { prtMIBGroups 4 } + +prtInputMediaGroup OBJECT-GROUP + OBJECTS { prtInputMediaWeight, prtInputMediaType, + prtInputMediaColor, prtInputMediaFormParts } + STATUS current + DESCRIPTION + "The input media group." + ::= { prtMIBGroups 5 } + +prtOutputGroup OBJECT-GROUP + OBJECTS { prtOutputDefaultIndex, prtOutputType, + prtOutputCapacityUnit, prtOutputMaxCapacity, + prtOutputRemainingCapacity, prtOutputStatus } + STATUS current + DESCRIPTION + + "The output group." + ::= { prtMIBGroups 6 } + +prtExtendedOutputGroup OBJECT-GROUP + OBJECTS { prtOutputName, prtOutputVendorName, prtOutputModel, + prtOutputVersion, prtOutputSerialNumber, + prtOutputDescription, prtOutputSecurity } + STATUS current + DESCRIPTION + "The extended output group." + ::= { prtMIBGroups 7 } + +prtOutputDimensionsGroup OBJECT-GROUP + OBJECTS { prtOutputDimUnit, prtOutputMaxDimFeedDir, + prtOutputMaxDimXFeedDir, prtOutputMinDimFeedDir, + prtOutputMinDimXFeedDir } + STATUS current + DESCRIPTION + "The output dimensions group" + ::= { prtMIBGroups 8 } + +prtOutputFeaturesGroup OBJECT-GROUP + OBJECTS { prtOutputStackingOrder, + prtOutputPageDeliveryOrientation, prtOutputBursting, + prtOutputDecollating, prtOutputPageCollated, + prtOutputOffsetStacking } + STATUS current + DESCRIPTION + "The output features group." + ::= { prtMIBGroups 9 } + +prtMarkerGroup OBJECT-GROUP + OBJECTS { prtMarkerDefaultIndex, prtMarkerMarkTech, + prtMarkerCounterUnit, prtMarkerLifeCount, + prtMarkerPowerOnCount, prtMarkerProcessColorants, + prtMarkerSpotColorants, prtMarkerAddressabilityUnit, + prtMarkerAddressabilityFeedDir, + prtMarkerAddressabilityXFeedDir, prtMarkerNorthMargin, + prtMarkerSouthMargin, prtMarkerWestMargin, + prtMarkerEastMargin, prtMarkerStatus } + STATUS current + DESCRIPTION + "The marker group." + ::= { prtMIBGroups 10 } + + +prtMarkerSuppliesGroup OBJECT-GROUP + OBJECTS { prtMarkerSuppliesMarkerIndex, + prtMarkerSuppliesColorantIndex, prtMarkerSuppliesClass, + prtMarkerSuppliesType, prtMarkerSuppliesDescription, + prtMarkerSuppliesSupplyUnit, + prtMarkerSuppliesMaxCapacity, prtMarkerSuppliesLevel } + STATUS current + DESCRIPTION + "The marker supplies group." + ::= { prtMIBGroups 11 } + +prtMarkerColorantGroup OBJECT-GROUP + OBJECTS { prtMarkerColorantMarkerIndex, prtMarkerColorantRole, + prtMarkerColorantValue, prtMarkerColorantTonality } + STATUS current + DESCRIPTION + "The marker colorant group." + ::= { prtMIBGroups 12 } + +prtMediaPathGroup OBJECT-GROUP + OBJECTS { prtMediaPathDefaultIndex, prtMediaPathMaxSpeedPrintUnit, + prtMediaPathMediaSizeUnit, prtMediaPathMaxSpeed, + prtMediaPathMaxMediaFeedDir, + prtMediaPathMaxMediaXFeedDir, + prtMediaPathMinMediaFeedDir, + prtMediaPathMinMediaXFeedDir, prtMediaPathType, + prtMediaPathDescription, prtMediaPathStatus} + STATUS current + DESCRIPTION + "The media path group." + ::= { prtMIBGroups 13 } + +prtChannelGroup OBJECT-GROUP + OBJECTS { prtChannelType, prtChannelProtocolVersion, + prtChannelCurrentJobCntlLangIndex, + prtChannelDefaultPageDescLangIndex, prtChannelState, + prtChannelIfIndex, prtChannelStatus + } + STATUS current + DESCRIPTION + "The channel group." + ::= { prtMIBGroups 14 } + +prtInterpreterGroup OBJECT-GROUP + OBJECTS { prtInterpreterLangFamily, prtInterpreterLangLevel, + + prtInterpreterLangVersion, prtInterpreterDescription, + prtInterpreterVersion, prtInterpreterDefaultOrientation, + prtInterpreterFeedAddressability, + prtInterpreterXFeedAddressability, + prtInterpreterDefaultCharSetIn, + prtInterpreterDefaultCharSetOut, prtInterpreterTwoWay } + STATUS current + DESCRIPTION + "The interpreter group." + ::= { prtMIBGroups 15 } + +prtConsoleGroup OBJECT-GROUP + OBJECTS { prtConsoleLocalization, prtConsoleNumberOfDisplayLines, + prtConsoleNumberOfDisplayChars, prtConsoleDisable, + prtConsoleDisplayBufferText, prtConsoleOnTime, + prtConsoleOffTime, prtConsoleColor, + prtConsoleDescription } + STATUS current + DESCRIPTION + "The console group." + ::= { prtMIBGroups 16 } + +prtAlertTableGroup OBJECT-GROUP + OBJECTS { prtAlertSeverityLevel, prtAlertTrainingLevel, + prtAlertGroup, prtAlertGroupIndex, prtAlertLocation, + prtAlertCode, prtAlertDescription } + STATUS current + DESCRIPTION + "The alert table group. Implementation of prtAlertTime is + RECOMMENDED." + ::= { prtMIBGroups 17 } + +prtAlertTimeGroup OBJECT-GROUP + OBJECTS { prtAlertTime } + STATUS current + DESCRIPTION + "The alert time group." + ::= { prtMIBGroups 18 } + +prtAuxiliarySheetGroup OBJECT-GROUP + OBJECTS { prtAuxiliarySheetStartupPage, + prtAuxiliarySheetBannerPage } + STATUS current + DESCRIPTION + "The auxiliary sheet group." + + ::= { prtMIBGroups 19 } + +prtInputSwitchingGroup OBJECT-GROUP + OBJECTS { prtInputMediaLoadTimeout, prtInputNextIndex } + STATUS current + DESCRIPTION + "The input switching group." + ::= { prtMIBGroups 20 } + +prtGeneralV2Group OBJECT-GROUP + OBJECTS { prtGeneralPrinterName, prtGeneralSerialNumber } + STATUS current + DESCRIPTION + "The general printer group with new v2 objects." + ::= { prtMIBGroups 21 } + +prtAlertTableV2Group OBJECT-GROUP + OBJECTS { prtAlertCriticalEvents, prtAlertAllEvents } + STATUS current + DESCRIPTION + "The alert table group with new v2 objects." + ::= { prtMIBGroups 22 } + +prtChannelV2Group OBJECT-GROUP + OBJECTS { prtChannelInformation } + STATUS current + DESCRIPTION + "The channel group with a new v2 object." + ::= { prtMIBGroups 23 } + +prtAlertTrapGroup NOTIFICATION-GROUP + NOTIFICATIONS { printerV2Alert } + STATUS current + DESCRIPTION + "The alert trap group." + ::= { prtMIBGroups 24 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-001-MIB.diff b/test/smidiff/SMIDIFF-TEST-001-MIB.diff new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-001-MIB.diff diff --git a/test/smidiff/SMIDIFF-TEST-001-MIB.new b/test/smidiff/SMIDIFF-TEST-001-MIB.new new file mode 100644 index 0000000..17ba0ad --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-001-MIB.new @@ -0,0 +1,33 @@ +SMIDIFF-TEST-001-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest001Mib MODULE-IDENTITY + LAST-UPDATED "200109262300Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109262300Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 1 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-001-MIB.old b/test/smidiff/SMIDIFF-TEST-001-MIB.old new file mode 100644 index 0000000..17ba0ad --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-001-MIB.old @@ -0,0 +1,33 @@ +SMIDIFF-TEST-001-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest001Mib MODULE-IDENTITY + LAST-UPDATED "200109262300Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109262300Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 1 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-002-MIB.diff b/test/smidiff/SMIDIFF-TEST-002-MIB.diff new file mode 100644 index 0000000..87f2439 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-002-MIB.diff @@ -0,0 +1,18 @@ +./SMIDIFF-TEST-002-MIB.new:119 range of type `MyInt' changed from `(0..9)' to `(0..7)' +./SMIDIFF-TEST-002-MIB.new:125 size of type `MyString' changed from `(0..9)' to `(0..7)' +./SMIDIFF-TEST-002-MIB.new:35 implicit type for `scalar1' replaces type `DisplayString' +./SMIDIFF-TEST-002-MIB.old:35 info: previous definition of `scalar1' +./SMIDIFF-TEST-002-MIB.new:36 size of type used in `scalar1' changed from `(0..255)' to `(1..255)' +./SMIDIFF-TEST-002-MIB.new:45 range of type used in `scalar2' changed from `(0..9)' to `(0..2)' +./SMIDIFF-TEST-002-MIB.new:52 warning: type `Integer32' replaces implicit type for `scalar3' +./SMIDIFF-TEST-002-MIB.old:52 info: previous definition of `scalar3' +./SMIDIFF-TEST-002-MIB.new:52 range `(0..9)' removed from type used in `scalar3' +./SMIDIFF-TEST-002-MIB.old:52 info: previous definition of `scalar3' +./SMIDIFF-TEST-002-MIB.new:79 range of type used in `scalar6' changed from `(0..9|12..15)' to `(0..9|13..15)' +./SMIDIFF-TEST-002-MIB.new:88 range of type used in `scalar7' changed from `(0..9|12..15)' to `(0..9)' +./SMIDIFF-TEST-002-MIB.new:96 range of type used in `scalar8' changed from `(0..9)' to `(0..9|12..15)' +./SMIDIFF-TEST-002-MIB.new:104 range of type used in `scalar9' changed from `(0..9|20..29)' to `(0..29)' +./SMIDIFF-TEST-002-MIB.new:111 warning: type `OctetString' replaces implicit type for `scalar10' +./SMIDIFF-TEST-002-MIB.old:109 info: previous definition of `scalar10' +./SMIDIFF-TEST-002-MIB.new:111 size `(0..255)' removed from type used in `scalar10' +./SMIDIFF-TEST-002-MIB.old:109 info: previous definition of `scalar10' diff --git a/test/smidiff/SMIDIFF-TEST-002-MIB.new b/test/smidiff/SMIDIFF-TEST-002-MIB.new new file mode 100644 index 0000000..c95228f --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-002-MIB.new @@ -0,0 +1,131 @@ +SMIDIFF-TEST-002-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString, TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest002Mib MODULE-IDENTITY + LAST-UPDATED "200109280000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109280000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 2 } + +scalar1 OBJECT-TYPE + SYNTAX DisplayString (SIZE (1..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Assuming the original range of a display string to be 0..255, + it will be reduced to 1..255" + ::= { libsmiTest002Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX INTEGER (0..2) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The range of this integer will be reduced from 0..9 to 0..2." + ::= { libsmiTest002Mib 2 } + +scalar3 OBJECT-TYPE +-- This causes trouble! smidiff does not know the name/path of the module +-- where INTEGER is defined. + SYNTAX INTEGER + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The range of this integer will be removed." + ::= { libsmiTest002Mib 3 } + +scalar4 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Single range. No changes." + ::= { libsmiTest002Mib 4 } + +scalar5 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. No change." + ::= { libsmiTest002Mib 5 } + +scalar6 OBJECT-TYPE + SYNTAX INTEGER (0..9|13..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be reduced + from 12..15 to 13..15." + ::= { libsmiTest002Mib 6 } + +scalar7 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be removed." + ::= { libsmiTest002Mib 7 } + +scalar8 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be added." + ::= { libsmiTest002Mib 8 } + +scalar9 OBJECT-TYPE + SYNTAX INTEGER (0..29) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Gap will be filled." + ::= { libsmiTest002Mib 9 } + +scalar10 OBJECT-TYPE + SYNTAX OCTET STRING + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Size restriction will be removed." + ::= { libsmiTest002Mib 10 } + +MyInt ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "TC. Range will change." + SYNTAX INTEGER (0..7) + +MyString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "TC. Range will change." + SYNTAX OCTET STRING (SIZE(0..7)) + +END diff --git a/test/smidiff/SMIDIFF-TEST-002-MIB.old b/test/smidiff/SMIDIFF-TEST-002-MIB.old new file mode 100644 index 0000000..dfeee0e --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-002-MIB.old @@ -0,0 +1,129 @@ +SMIDIFF-TEST-002-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString, TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest002Mib MODULE-IDENTITY + LAST-UPDATED "200109280000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109280000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 2 } + +scalar1 OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Assuming the original range of a display string to be 0..255, + it will be reduced to 1..255" + ::= { libsmiTest002Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The range of this integer will be reduced from 0..9 to 0..2." + ::= { libsmiTest002Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The range of this integer will be removed." + ::= { libsmiTest002Mib 3 } + +scalar4 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Single range. No changes." + ::= { libsmiTest002Mib 4 } + +scalar5 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. No change." + ::= { libsmiTest002Mib 5 } + +scalar6 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be reduced + from 12..15 to 13..15." + ::= { libsmiTest002Mib 6 } + +scalar7 OBJECT-TYPE + SYNTAX INTEGER (0..9|12..15) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be removed." + ::= { libsmiTest002Mib 7 } + +scalar8 OBJECT-TYPE + SYNTAX INTEGER (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Second range will be added." + ::= { libsmiTest002Mib 8 } + +scalar9 OBJECT-TYPE + SYNTAX INTEGER (0..9|20..29) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Multiple ranges. Gap will be filled." + ::= { libsmiTest002Mib 9 } + +scalar10 OBJECT-TYPE + SYNTAX OCTET STRING (SIZE(0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Size restriction will be removed." + ::= { libsmiTest002Mib 10 } + +MyInt ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "TC. Range will change." + SYNTAX INTEGER (0..9) + +MyString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + "TC. Range will change." + SYNTAX OCTET STRING (SIZE(0..9)) + +END diff --git a/test/smidiff/SMIDIFF-TEST-003-MIB.diff b/test/smidiff/SMIDIFF-TEST-003-MIB.diff new file mode 100644 index 0000000..6c65198 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-003-MIB.diff @@ -0,0 +1,14 @@ +./SMIDIFF-TEST-003-MIB.new:35 default value added to `scalar1' +./SMIDIFF-TEST-003-MIB.new:44 named number `blue' removed from type used in `scalar2' +./SMIDIFF-TEST-003-MIB.new:52 named bit `yellow' added without starting in a new byte in type used in `scalar3' +./SMIDIFF-TEST-003-MIB.new:60 warning: named number `yellow' added to type used in `scalar4' +./SMIDIFF-TEST-003-MIB.new:76 named number `blue' removed from type used in `scalar6' +./SMIDIFF-TEST-003-MIB.new:84 warning: named number `green' added to type used in `scalar7' +./SMIDIFF-TEST-003-MIB.new:84 named number `green' removed from type used in `scalar7' +./SMIDIFF-TEST-003-MIB.new:92 warning: named number `green' changed to `white' at type used in `scalar8' +./SMIDIFF-TEST-003-MIB.new:100 warning: named number `yellow' added to type used in `scalar9' +./SMIDIFF-TEST-003-MIB.new:108 warning: named number `yellow' added to type used in `scalar10' +./SMIDIFF-TEST-003-MIB.new:116 warning: named number `yellow' added to type used in `scalar11' +./SMIDIFF-TEST-003-MIB.new:124 warning: named number `yellow' added to type used in `scalar12' +./SMIDIFF-TEST-003-MIB.new:132 warning: named number `pink' added to type used in `scalar13' +./SMIDIFF-TEST-003-MIB.new:140 named number `pink' removed from type used in `scalar14' diff --git a/test/smidiff/SMIDIFF-TEST-003-MIB.new b/test/smidiff/SMIDIFF-TEST-003-MIB.new new file mode 100644 index 0000000..872d1c9 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-003-MIB.new @@ -0,0 +1,155 @@ +SMIDIFF-TEST-003-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest003Mib MODULE-IDENTITY + LAST-UPDATED "200109280000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109280000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 3 } + +scalar1 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Default value added." + DEFVAL {{ red, green }} + ::= { libsmiTest003Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX BITS { red(0), green(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Last bit removed." + ::= { libsmiTest003Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2), yellow(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Added a bit (in the same byte)." + ::= { libsmiTest003Mib 3 } + +scalar4 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2), yellow(8) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Added a bit (in a new byte)." + ::= { libsmiTest003Mib 4 } + +scalar5 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. No changes." + ::= { libsmiTest003Mib 5 } + +scalar6 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Last number removed." + ::= { libsmiTest003Mib 6 } + +scalar7 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(0), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed a number in the middle." + ::= { libsmiTest003Mib 7 } + +scalar8 OBJECT-TYPE + SYNTAX INTEGER { red(-1), white(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed a number in the middle." + ::= { libsmiTest003Mib 8 } + +scalar9 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number at start." + ::= { libsmiTest003Mib 9 } + +scalar10 OBJECT-TYPE + SYNTAX INTEGER { red(-1), yellow(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number in the middle." + ::= { libsmiTest003Mib 10 } + +scalar11 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2), yellow(3) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number." + ::= { libsmiTest003Mib 11 } + +scalar12 OBJECT-TYPE + SYNTAX INTEGER { yellow(-1), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a negative number." + ::= { libsmiTest003Mib 12 } + +scalar13 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), pink(-1), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a negative number in the middle." + ::= { libsmiTest003Mib 13 } + +scalar14 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Removed a negative number from the middle." + ::= { libsmiTest003Mib 14 } + +scalar15 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), pink(-1), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed order of definition. Should not produce error msg." + ::= { libsmiTest003Mib 15 } +END \ No newline at end of file diff --git a/test/smidiff/SMIDIFF-TEST-003-MIB.old b/test/smidiff/SMIDIFF-TEST-003-MIB.old new file mode 100644 index 0000000..99fb732 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-003-MIB.old @@ -0,0 +1,156 @@ +SMIDIFF-TEST-003-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest003Mib MODULE-IDENTITY + LAST-UPDATED "200109280000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200109280000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 3 } + +scalar1 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Default value added." + ::= { libsmiTest003Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Last bit removed." + ::= { libsmiTest003Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Added a bit (in the same byte)." + ::= { libsmiTest003Mib 3 } + +scalar4 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Added a bit (in a new byte)." + ::= { libsmiTest003Mib 4 } + +scalar5 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. No changes." + ::= { libsmiTest003Mib 5 } + +scalar6 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Last number removed." + ::= { libsmiTest003Mib 6 } + +scalar7 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed a number in the middle." + ::= { libsmiTest003Mib 7 } + +scalar8 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed a number in the middle." + ::= { libsmiTest003Mib 8 } + +scalar9 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number at start." + ::= { libsmiTest003Mib 9 } + +scalar10 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number in the middle." + ::= { libsmiTest003Mib 10 } + +scalar11 OBJECT-TYPE + SYNTAX INTEGER { red(-1), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a number." + ::= { libsmiTest003Mib 11 } + +scalar12 OBJECT-TYPE + SYNTAX INTEGER { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a negative number." + ::= { libsmiTest003Mib 12 } + +scalar13 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Added a negative number in the middle." + ::= { libsmiTest003Mib 13 } + +scalar14 OBJECT-TYPE + SYNTAX INTEGER { yellow(-2), pink(-1), red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Removed a negative number from the middle." + ::= { libsmiTest003Mib 14 } + +scalar15 OBJECT-TYPE + SYNTAX INTEGER { red(0), yellow(-2), pink(-1), blue(2), green(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "ENUM. Changed order of definition. Should not produce error msg." + ::= { libsmiTest003Mib 15 } + + +END \ No newline at end of file diff --git a/test/smidiff/SMIDIFF-TEST-004-MIB.diff b/test/smidiff/SMIDIFF-TEST-004-MIB.diff new file mode 100644 index 0000000..5e9a764 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-004-MIB.diff @@ -0,0 +1,7 @@ +./SMIDIFF-TEST-004-MIB.new:11 warning: contact of `SMIDIFF-TEST-004-MIB' changed +./SMIDIFF-TEST-004-MIB.new:11 warning: description of module identity definition `SMIDIFF-TEST-004-MIB' changed +./SMIDIFF-TEST-004-MIB.old:11 info: previous definition of `SMIDIFF-TEST-004-MIB' +./SMIDIFF-TEST-004-MIB.new:43 warning: legal status change from `current' to `deprecated' for `scalar2' +./SMIDIFF-TEST-004-MIB.old:41 info: previous definition of `scalar2' +./SMIDIFF-TEST-004-MIB.new:51 status change from `deprecated' to `current' for `scalar3' +./SMIDIFF-TEST-004-MIB.old:49 info: previous definition of `scalar3' diff --git a/test/smidiff/SMIDIFF-TEST-004-MIB.new b/test/smidiff/SMIDIFF-TEST-004-MIB.new new file mode 100644 index 0000000..ec6423a --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-004-MIB.new @@ -0,0 +1,59 @@ +SMIDIFF-TEST-004-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest004Mib MODULE-IDENTITY + LAST-UPDATED "200110080000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Torsten Klie + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + EMail: tklie@ibr.cs.tu-bs.de" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version. + This description has changed." + REVISION "200110080000Z" + DESCRIPTION + "Initial Revision. Now we use revision. In the old version only + lastUpdated was used. This should not produce an error message." + ::= { smidiffTestMib 4 } + +scalar1 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Default value added." + ::= { libsmiTest004Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "BITS. Legal status change from current to deprecated." + ::= { libsmiTest004Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Illegal status change from deprecated to current." + ::= { libsmiTest004Mib 3 } + +END \ No newline at end of file diff --git a/test/smidiff/SMIDIFF-TEST-004-MIB.old b/test/smidiff/SMIDIFF-TEST-004-MIB.old new file mode 100644 index 0000000..50c9fcf --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-004-MIB.old @@ -0,0 +1,57 @@ +SMIDIFF-TEST-004-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest004Mib MODULE-IDENTITY + LAST-UPDATED "200110080000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + + ::= { smidiffTestMib 4 } + +scalar1 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Default value added." + ::= { libsmiTest004Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "BITS. Legal status change from current to deprecated." + ::= { libsmiTest004Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX BITS { red(0), green(1), blue(2) } + MAX-ACCESS read-only + STATUS deprecated + DESCRIPTION + "BITS. Illegal status change from deprecated to current." + ::= { libsmiTest004Mib 3 } + +END \ No newline at end of file diff --git a/test/smidiff/SMIDIFF-TEST-005-MIB.diff b/test/smidiff/SMIDIFF-TEST-005-MIB.diff new file mode 100644 index 0000000..3da876c --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-005-MIB.diff @@ -0,0 +1,10 @@ +SMIDIFF-TEST-005-MIB +./SMIDIFF-TEST-005-MIB.new:90 changed kind of index from `index' to `augment' in node `table2Entry' +./SMIDIFF-TEST-005-MIB.old:90 info: previous definition of `table2Entry' +./SMIDIFF-TEST-005-MIB.new:185 index of `table4Entry' changed from `t4c1' to `t4c2' +./SMIDIFF-TEST-005-MIB.old:184 info: previous definition of `table4Entry' +./SMIDIFF-TEST-005-MIB.new:208 implicit type for `t4c2' replaces type `Integer32' +./SMIDIFF-TEST-005-MIB.old:207 info: previous definition of `t4c2' +./SMIDIFF-TEST-005-MIB.new:208 range `(0..27)' added to type used in `t4c2' +./SMIDIFF-TEST-005-MIB.new:232 index of `table5Entry' changed from augmenting `table1Entry' to augmenting `table3Entry' +./SMIDIFF-TEST-005-MIB.old:231 info: previous definition of `table5Entry' diff --git a/test/smidiff/SMIDIFF-TEST-005-MIB.new b/test/smidiff/SMIDIFF-TEST-005-MIB.new new file mode 100644 index 0000000..ceeee2d --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-005-MIB.new @@ -0,0 +1,271 @@ +SMIDIFF-TEST-005-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest005Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 5 } + +table1 OBJECT-TYPE + SYNTAX SEQUENCE OF Table1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 1 } + +table1Entry OBJECT-TYPE + SYNTAX Table1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { t1c1 } + ::= { table1 1 } + +Table1Entry ::= SEQUENCE { + t1c1 Integer32, + t1c2 Integer32, + t1c3 Integer32 +} + +t1c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 1 } + +t1c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 2 } + +t1c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 3 } + +table2 OBJECT-TYPE + SYNTAX SEQUENCE OF Table2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 2 } + +table2Entry OBJECT-TYPE + SYNTAX Table2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Changed INDEX to AUGMENTS." + --INDEX { t1c1, t2c1 } + AUGMENTS { table1Entry } + ::= { table2 1 } + +Table2Entry ::= SEQUENCE { + t2c1 Integer32, + t2c2 Integer32, + t2c3 Integer32 +} + +t2c1 OBJECT-TYPE + SYNTAX Integer32 (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 1 } + +t2c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 2 } + +t2c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 3 } + +table3 OBJECT-TYPE + SYNTAX SEQUENCE OF Table3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table. No changes." + ::= { libsmiTest005Mib 3 } + +table3Entry OBJECT-TYPE + SYNTAX Table3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { t3c1 } + ::= { table3 1 } + +Table3Entry ::= SEQUENCE { + t3c1 Integer32, + t3c2 Integer32, + t3c3 Integer32 +} + +t3c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 1 } + +t3c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 2 } + +t3c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 3 } + +table4 OBJECT-TYPE + SYNTAX SEQUENCE OF Table4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table." + ::= { libsmiTest005Mib 4 } + +table4Entry OBJECT-TYPE + SYNTAX Table4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index will change." + INDEX { t4c2 } + ::= { table4 1 } + +Table4Entry ::= SEQUENCE { + t4c1 Integer32, + t4c2 Integer32, + t4c3 Integer32 +} + +t4c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 1 } + +t4c2 OBJECT-TYPE + SYNTAX Integer32 (0..27) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 2 } + +t4c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 3 } + +table5 OBJECT-TYPE + SYNTAX SEQUENCE OF Table5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 5 } + +table5Entry OBJECT-TYPE + SYNTAX Table5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Changed index." + AUGMENTS { table3Entry } + ::= { table5 1 } + +Table5Entry ::= SEQUENCE { + t5c1 Integer32, + t5c2 Integer32, + t5c3 Integer32 +} + +t5c1 OBJECT-TYPE + SYNTAX Integer32 (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 1 } + +t5c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 2 } + +t5c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 3 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-005-MIB.old b/test/smidiff/SMIDIFF-TEST-005-MIB.old new file mode 100644 index 0000000..8542441 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-005-MIB.old @@ -0,0 +1,270 @@ +SMIDIFF-TEST-005-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + DisplayString + FROM SNMPv2-TC + smidiffTestMib + FROM SMIDIFF-TEST-MIB; + +libsmiTest005Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 5 } + +table1 OBJECT-TYPE + SYNTAX SEQUENCE OF Table1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 1 } + +table1Entry OBJECT-TYPE + SYNTAX Table1Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { t1c1 } + ::= { table1 1 } + +Table1Entry ::= SEQUENCE { + t1c1 Integer32, + t1c2 Integer32, + t1c3 Integer32 +} + +t1c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 1 } + +t1c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 2 } + +t1c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table1Entry 3 } + +table2 OBJECT-TYPE + SYNTAX SEQUENCE OF Table2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 2 } + +table2Entry OBJECT-TYPE + SYNTAX Table2Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Changed INDEX to AUGMENTS." + INDEX { t1c1, t2c1 } + ::= { table2 1 } + +Table2Entry ::= SEQUENCE { + t2c1 Integer32, + t2c2 Integer32, + t2c3 Integer32 +} + +t2c1 OBJECT-TYPE + SYNTAX Integer32 (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 1 } + +t2c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 2 } + +t2c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table2Entry 3 } + +table3 OBJECT-TYPE + SYNTAX SEQUENCE OF Table3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table. No changes." + ::= { libsmiTest005Mib 3 } + +table3Entry OBJECT-TYPE + SYNTAX Table3Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + INDEX { t3c1 } + ::= { table3 1 } + +Table3Entry ::= SEQUENCE { + t3c1 Integer32, + t3c2 Integer32, + t3c3 Integer32 +} + +t3c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 1 } + +t3c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 2 } + +t3c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table3Entry 3 } + +table4 OBJECT-TYPE + SYNTAX SEQUENCE OF Table4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "A table." + ::= { libsmiTest005Mib 4 } + +table4Entry OBJECT-TYPE + SYNTAX Table4Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The index will change." + INDEX { t4c1 } + ::= { table4 1 } + +Table4Entry ::= SEQUENCE { + t4c1 Integer32, + t4c2 Integer32, + t4c3 Integer32 +} + +t4c1 OBJECT-TYPE + SYNTAX Integer32 (0..9) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 1 } + +t4c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 2 } + +t4c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table4Entry 3 } + +table5 OBJECT-TYPE + SYNTAX SEQUENCE OF Table5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "" + ::= { libsmiTest005Mib 5 } + +table5Entry OBJECT-TYPE + SYNTAX Table5Entry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "Changed index." + AUGMENTS { table1Entry } + ::= { table5 1 } + +Table5Entry ::= SEQUENCE { + t5c1 Integer32, + t5c2 Integer32, + t5c3 Integer32 +} + +t5c1 OBJECT-TYPE + SYNTAX Integer32 (0..12) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 1 } + +t5c2 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 2 } + +t5c3 OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { table5Entry 3 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-006-MIB.diff b/test/smidiff/SMIDIFF-TEST-006-MIB.diff new file mode 100644 index 0000000..8f51df4 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-006-MIB.diff @@ -0,0 +1,5 @@ +./SMIDIFF-TEST-006-MIB.new:39 implicit type for `scalar1' replaces type `MyNewDisplayString' +./SMIDIFF-TEST-006-MIB.old:41 info: previous definition of `scalar1' +./SMIDIFF-TEST-006-MIB.new:40 size of type used in `scalar1' changed from `(0..255)' to `(1..255)' +./SMIDIFF-TEST-006-MIB.new:39 description removed from `scalar1' +./SMIDIFF-TEST-006-MIB.old:41 info: previous definition of `scalar1' diff --git a/test/smidiff/SMIDIFF-TEST-006-MIB.new b/test/smidiff/SMIDIFF-TEST-006-MIB.new new file mode 100644 index 0000000..fd97066 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-006-MIB.new @@ -0,0 +1,44 @@ +SMIDIFF-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + smidiffTestMib, MyDisplayString + FROM SMIDIFF-TEST-MIB; + +libsmiTest006Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 6 } + +MyNewDisplayString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " An Illegal use of a tc." + SYNTAX MyDisplayString + +scalar1 OBJECT-TYPE + SYNTAX MyNewDisplayString (SIZE(1..255)) + MAX-ACCESS read-only + STATUS current + ::= { libsmiTest006Mib 1 } +END diff --git a/test/smidiff/SMIDIFF-TEST-006-MIB.old b/test/smidiff/SMIDIFF-TEST-006-MIB.old new file mode 100644 index 0000000..1f378ef --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-006-MIB.old @@ -0,0 +1,48 @@ +SMIDIFF-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib, MyDisplayString + FROM SMIDIFF-TEST-MIB; + +libsmiTest006Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 6 } + +MyNewDisplayString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " An Illegal use of a tc." + SYNTAX MyDisplayString + +scalar1 OBJECT-TYPE + SYNTAX MyNewDisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest006Mib 1 } +END diff --git a/test/smidiff/SMIDIFF-TEST-007-MIB.diff b/test/smidiff/SMIDIFF-TEST-007-MIB.diff new file mode 100644 index 0000000..1b8e3c8 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-007-MIB.diff @@ -0,0 +1,10 @@ +./SMIDIFF-TEST-007-MIB.new:35 warning: type `Foo' has been added +./SMIDIFF-TEST-007-MIB.new:40 warning: type `FooBar' has been added +./SMIDIFF-TEST-007-MIB.new:45 warning: type `Foo' replaces implicit type for `scalar1' +./SMIDIFF-TEST-007-MIB.old:35 info: previous definition of `scalar1' +./SMIDIFF-TEST-007-MIB.new:53 warning: type `FooBar' replaces implicit type for `scalar2' +./SMIDIFF-TEST-007-MIB.old:43 info: previous definition of `scalar2' +./SMIDIFF-TEST-007-MIB.new:53 warning: named number `bar' added to type used in `scalar2' +./SMIDIFF-TEST-007-MIB.new:61 warning: type `Foo' replaces implicit type for `scalar3' +./SMIDIFF-TEST-007-MIB.old:51 info: previous definition of `scalar3' +./SMIDIFF-TEST-007-MIB.new:61 named number `bar' removed from type used in `scalar3' diff --git a/test/smidiff/SMIDIFF-TEST-007-MIB.new b/test/smidiff/SMIDIFF-TEST-007-MIB.new new file mode 100644 index 0000000..1421d08 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-007-MIB.new @@ -0,0 +1,69 @@ +SMIDIFF-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib, MyDisplayString + FROM SMIDIFF-TEST-MIB; + +libsmiTest007Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 7 } + +Foo ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "" + SYNTAX INTEGER { foo(1) } + +FooBar ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION "" + SYNTAX INTEGER { foo(1), bar(2) } + +scalar1 OBJECT-TYPE + SYNTAX Foo + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX FooBar + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX Foo + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 3 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-007-MIB.old b/test/smidiff/SMIDIFF-TEST-007-MIB.old new file mode 100644 index 0000000..ff1b5d1 --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-007-MIB.old @@ -0,0 +1,59 @@ +SMIDIFF-TEST-006-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + TEXTUAL-CONVENTION + FROM SNMPv2-TC + smidiffTestMib, MyDisplayString + FROM SMIDIFF-TEST-MIB; + +libsmiTest007Mib MODULE-IDENTITY + LAST-UPDATED "200110120000Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module is used for smidiff, a tool to compare + two versions of the same MIB module and to check for + illegal modifications in the new version." + REVISION "200110120000Z" + DESCRIPTION + "Initial Revision." + ::= { smidiffTestMib 7 } + +scalar1 OBJECT-TYPE + SYNTAX INTEGER { foo(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 1 } + +scalar2 OBJECT-TYPE + SYNTAX INTEGER { foo(1) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 2 } + +scalar3 OBJECT-TYPE + SYNTAX INTEGER { foo(1), bar(2) } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "" + ::= { libsmiTest007Mib 3 } + +END diff --git a/test/smidiff/SMIDIFF-TEST-MIB b/test/smidiff/SMIDIFF-TEST-MIB new file mode 100644 index 0000000..275eabc --- /dev/null +++ b/test/smidiff/SMIDIFF-TEST-MIB @@ -0,0 +1,40 @@ +SMIDIFF-TEST-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString + FROM SNMPv2-TC + ibr + FROM TUBS-SMI; + +smidiffTestMib MODULE-IDENTITY + LAST-UPDATED "200109262300Z" + ORGANIZATION + "TU Braunschweig" + CONTACT-INFO + " Frank Strauss + + Postal: TU Braunschweig + Muehlenpfordtstrasse 23 + 38106 Braunschweig + Germany + + Phone: +49 531 391-3283 + EMail: strauss@ibr.cs.tu-bs.de + http://www.ibr.cs.tu-bs.de/~strauss/" + DESCRIPTION + "This MIB module represents the toplevel module of + a collection of MIB modules to check the capabilities + of smidiff." + REVISION "200109262300Z" + DESCRIPTION + "Initial Revision." + ::= { ibr 10 } + +MyDisplayString ::= TEXTUAL-CONVENTION + STATUS current + DESCRIPTION + " An Illegal use of a tc." + SYNTAX DisplayString +END diff --git a/test/smidump-cm.test b/test/smidump-cm.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-cm.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-cm.test.in b/test/smidump-cm.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-cm.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-corba.test b/test/smidump-corba.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-corba.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-corba.test.in b/test/smidump-corba.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-corba.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-identifiers.test b/test/smidump-identifiers.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-identifiers.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-identifiers.test.in b/test/smidump-identifiers.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-identifiers.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-imports.test b/test/smidump-imports.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-imports.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-imports.test.in b/test/smidump-imports.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-imports.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-jax.test b/test/smidump-jax.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-jax.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-jax.test.in b/test/smidump-jax.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-jax.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-metrics.test b/test/smidump-metrics.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-metrics.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-metrics.test.in b/test/smidump-metrics.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-metrics.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-mosy.test b/test/smidump-mosy.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-mosy.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-mosy.test.in b/test/smidump-mosy.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-mosy.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-netsnmp.test b/test/smidump-netsnmp.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-netsnmp.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-netsnmp.test.in b/test/smidump-netsnmp.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-netsnmp.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-orig-smiv2.test b/test/smidump-orig-smiv2.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-orig-smiv2.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-orig-smiv2.test.in b/test/smidump-orig-smiv2.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-orig-smiv2.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-python.test b/test/smidump-python.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-python.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-python.test.in b/test/smidump-python.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-python.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-sming.test b/test/smidump-sming.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-sming.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-sming.test.in b/test/smidump-sming.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-sming.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv1.test b/test/smidump-smiv1.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-smiv1.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv1.test.in b/test/smidump-smiv1.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-smiv1.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv2-smiv2.test b/test/smidump-smiv2-smiv2.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-smiv2-smiv2.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv2-smiv2.test.in b/test/smidump-smiv2-smiv2.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-smiv2-smiv2.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv2.test b/test/smidump-smiv2.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-smiv2.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-smiv2.test.in b/test/smidump-smiv2.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-smiv2.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-tree.test b/test/smidump-tree.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-tree.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-tree.test.in b/test/smidump-tree.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-tree.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-types.test b/test/smidump-types.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-types.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-types.test.in b/test/smidump-types.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-types.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-xml.test b/test/smidump-xml.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-xml.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-xml.test.in b/test/smidump-xml.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-xml.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-yang.test b/test/smidump-yang.test new file mode 100755 index 0000000..250ab64 --- /dev/null +++ b/test/smidump-yang.test @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smidump-yang.test.in b/test/smidump-yang.test.in new file mode 100644 index 0000000..e2d5177 --- /dev/null +++ b/test/smidump-yang.test.in @@ -0,0 +1,97 @@ +#!/bin/sh +# +# smidump-FORMAT.test -- +# +# smidump test for various output formats and conversions. +# +# FORMAT=xxx : +# Check `smidump -f xxx' output for all TESTMIBS read from the libsmi MIB +# repository against nominal dumps/xxx/ files. +# +# FORMAT=xxx-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/yyy-xxx/ files. +# +# FORMAT=orig-yyy : +# Check `smidump -f yyy' output for all TESTMIBS read from the libsmi MIB +# repository against the original files from the repository. This is done +# by extracting unified characteristics of both files of each check +# (see the filter shell function) and comparing the diff with the nominal +# diff in dumps/orig-yyy/. +# + +FORMAT=`echo $0 | sed -e 's/^.*smidump-\(.*\).test/\1/'` +ACTUALDIR=smidump-${FORMAT}.out +NOMINALDIR=dumps/${FORMAT} +INFORMAT=`echo -$FORMAT | sed -e 's/-[^-]*$//' -e 's/-//'` +OUTFORMAT=`echo $FORMAT | sed -e 's/[a-z0-9]*-//'` + + + +filter() { + # 1. strip off comments + # 2. condens white space + # 3. remove ambigious white space + # 4. strip off texts enclosed in double qoutes + # 5. convert blanks back to nl, and finally + # 6. sort + sed -e 's/\"[a-z]*\"//g' | \ + sed -e 's/--[^\"-]*--//g' -e 's/--[^\"]*$//' | \ + tr '\t\n' ' ' | \ + sed -e 's/ */ /g' | \ + sed -e 's/SIZE (/SIZE(/g' -e 's/ }/}/g' | \ + sed -e 's/\"[^\"]*\"/\"\"/g' | \ + tr ' ' '\n' | \ + sort +} + + + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + if [ "$INFORMAT" -a "$INFORMAT" != "orig" ] ; then + input=../dumps/${INFORMAT}/$mib + else + input=$mib + fi + echo "comparing \`smidump -f ${OUTFORMAT} $input' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smidump -c/dev/null -f ${OUTFORMAT} $input > $mib 2>/dev/null + if [ ! -s $mib ] ; then + rm $mib + FILES="" + else + FILES="$mib" + fi + FILES="$FILES "`ls -1 | grep -v '\.diff' | grep '\.'` + cd .. + for file in $FILES ; do + if [ "$INFORMAT" != "orig" ] ; then + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file >> ${ACTUALDIR}/$file.diff + else + filter < ../mibs/ietf/$mib > ${ACTUALDIR}/$file.orig + filter < ${ACTUALDIR}/$mib > ${ACTUALDIR}/$file.out + @DIFF@ ${ACTUALDIR}/$file.orig ${ACTUALDIR}/$file.out > ${ACTUALDIR}/$file + @DIFF@ ${ACTUALDIR}/$file ${NOMINALDIR}/$file > ${ACTUALDIR}/$file.diff + fi + if [ ! -s ${ACTUALDIR}/$file.diff ] ; then + rm ${ACTUALDIR}/$file.diff + else + FAILED=1 + fi + + echo "cmp -s ${ACTUALDIR}/$file ${NOMINALDIR}/$file || \$CMDPREFIX cp -v ${ACTUALDIR}/$file ${NOMINALDIR}/$file" >> sync-dumps + done + rm -f ${ACTUALDIR}/*.orig ${ACTUALDIR}/*.out +done + +if [ "$FAILED" ] ; then + echo "*** smidump output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +exit ${RC} diff --git a/test/smilint-smiv2.test b/test/smilint-smiv2.test new file mode 100755 index 0000000..618b97b --- /dev/null +++ b/test/smilint-smiv2.test @@ -0,0 +1,56 @@ +#!/bin/sh +# +# smilint-FORMAT.test -- +# +# smilint test for various input formats. +# +# FORMAT=xxx : +# Check `smilint -l9' output for all TESTMIBS read from dumps/xxx/ +# against nominal dumps/smilint-xxx/ output files. +# + +FORMAT=`echo $0 | sed -e 's/^.*smilint-\(.*\).test/\1/'` +ACTUALDIR=smilint-${FORMAT}.out +NOMINALDIR=dumps/smilint-${FORMAT} + +rm -rf ${ACTUALDIR} +mkdir ${ACTUALDIR} + +RC=0 +FAILED="" +for mib in ${TESTMIBS} ; do + echo "comparing \`smilint -l9 dumps/${FORMAT}/$mib' output with ${NOMINALDIR}/*." + cd ${ACTUALDIR} + ../../tools/smilint -c/dev/null -l9 ../dumps/${FORMAT}/$mib > $mib 2>&1 + cd .. + /usr/bin/diff --ignore-matching-lines='generated by smidump' --ignore-matching-lines='$Id.*$' --ignore-matching-lines='@author.*smidump' ${ACTUALDIR}/$mib ${NOMINALDIR}/$mib > ${ACTUALDIR}/$mib.diff + if [ ! -s ${ACTUALDIR}/$mib.diff ] ; then + rm ${ACTUALDIR}/$mib.diff + else + FAILED=1 + fi +done + +if [ "$FAILED" ] ; then + echo "*** smilint output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +rm -f sync-dumps +cat > sync-dumps < $mib 2>&1 + cd .. + @DIFF@ ${ACTUALDIR}/$mib ${NOMINALDIR}/$mib > ${ACTUALDIR}/$mib.diff + if [ ! -s ${ACTUALDIR}/$mib.diff ] ; then + rm ${ACTUALDIR}/$mib.diff + else + FAILED=1 + fi +done + +if [ "$FAILED" ] ; then + echo "*** smilint output differs, see ${ACTUALDIR}/*.diff" + RC=1 +fi + +rm -f sync-dumps +cat > sync-dumps < dump-svg-script.h + +dump-svg.o: dump-svg-script.h + +smidump_SOURCES = smidump.c smidump.h shhopt.c \ + dump-sming.c dump-smi.c dump-yang.c \ + dump-imports.c dump-types.c dump-tree.c \ + dump-mosy.c dump-corba.c dump-netsnmp.c \ + dump-jax.c dump-xml.c dump-identifiers.c \ + dump-metrics.c dump-cm.c dump-python.c \ + dump-perl.c dump-scli.c dump-xsd.c dump-sppi.c \ + dump-sizes.c dump-svg-script.h dump-svg.c \ + rea.h rea.c dump-compliance.c dump-boilerplate.c \ + dstring.h dstring.c \ + fortopat.h fortopat.c fprint.h fprint.c + +smidump_LDADD = ../lib/libsmi.la -lm + +smidiff_SOURCES = smidiff.c shhopt.c +smidiff_LDADD = ../lib/libsmi.la + +MOSTLYCLEANFILES = dump-svg-script.h diff --git a/tools/Makefile.in b/tools/Makefile.in new file mode 100644 index 0000000..ac834b5 --- /dev/null +++ b/tools/Makefile.in @@ -0,0 +1,696 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- +# +# Template to generate the tools Makefile.in using automake. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.am 8090 2008-04-18 12:56:29Z strauss $ +# + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = smiquery$(EXEEXT) smilint$(EXEEXT) smidump$(EXEEXT) \ + smidiff$(EXEEXT) smixlate$(EXEEXT) +subdir = tools +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/mib2svg.cgi.in $(srcdir)/smicache.1.in \ + $(srcdir)/smicache.in $(srcdir)/smidiff.1.in \ + $(srcdir)/smidump.1.in $(srcdir)/smilint.1.in \ + $(srcdir)/smiquery.1.in $(srcdir)/smistrip.1.in \ + $(srcdir)/smistrip.in $(srcdir)/smixlate.1.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = smistrip smicache smiquery.1 smilint.1 smidump.1 \ + smidiff.1 smistrip.1 smicache.1 smixlate.1 mib2svg.cgi +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(man1dir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_smidiff_OBJECTS = smidiff.$(OBJEXT) shhopt.$(OBJEXT) +smidiff_OBJECTS = $(am_smidiff_OBJECTS) +smidiff_DEPENDENCIES = ../lib/libsmi.la +am_smidump_OBJECTS = smidump.$(OBJEXT) shhopt.$(OBJEXT) \ + dump-sming.$(OBJEXT) dump-smi.$(OBJEXT) dump-yang.$(OBJEXT) \ + dump-imports.$(OBJEXT) dump-types.$(OBJEXT) \ + dump-tree.$(OBJEXT) dump-mosy.$(OBJEXT) dump-corba.$(OBJEXT) \ + dump-netsnmp.$(OBJEXT) dump-jax.$(OBJEXT) dump-xml.$(OBJEXT) \ + dump-identifiers.$(OBJEXT) dump-metrics.$(OBJEXT) \ + dump-cm.$(OBJEXT) dump-python.$(OBJEXT) dump-perl.$(OBJEXT) \ + dump-scli.$(OBJEXT) dump-xsd.$(OBJEXT) dump-sppi.$(OBJEXT) \ + dump-sizes.$(OBJEXT) dump-svg.$(OBJEXT) rea.$(OBJEXT) \ + dump-compliance.$(OBJEXT) dump-boilerplate.$(OBJEXT) \ + dstring.$(OBJEXT) fortopat.$(OBJEXT) fprint.$(OBJEXT) +smidump_OBJECTS = $(am_smidump_OBJECTS) +smidump_DEPENDENCIES = ../lib/libsmi.la +am_smilint_OBJECTS = smilint.$(OBJEXT) shhopt.$(OBJEXT) +smilint_OBJECTS = $(am_smilint_OBJECTS) +smilint_DEPENDENCIES = ../lib/libsmi.la +am_smiquery_OBJECTS = smiquery.$(OBJEXT) shhopt.$(OBJEXT) +smiquery_OBJECTS = $(am_smiquery_OBJECTS) +smiquery_DEPENDENCIES = ../lib/libsmi.la +am_smixlate_OBJECTS = smixlate.$(OBJEXT) shhopt.$(OBJEXT) \ + dstring.$(OBJEXT) +smixlate_OBJECTS = $(am_smixlate_OBJECTS) +smixlate_DEPENDENCIES = ../lib/libsmi.la +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(bin_SCRIPTS) +DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(smidiff_SOURCES) $(smidump_SOURCES) $(smilint_SOURCES) \ + $(smiquery_SOURCES) $(smixlate_SOURCES) +DIST_SOURCES = $(smidiff_SOURCES) $(smidump_SOURCES) \ + $(smilint_SOURCES) $(smiquery_SOURCES) $(smixlate_SOURCES) +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(man_MANS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASH = @BASH@ +BISON = @BISON@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLEX = @FLEX@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT64_TYPE = @INT64_TYPE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSMI_MAJOR = @LIBSMI_MAJOR@ +LIBSMI_MINOR = @LIBSMI_MINOR@ +LIBSMI_PATCHLEVEL = @LIBSMI_PATCHLEVEL@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_AGE = @LIBTOOL_AGE@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_REVISION = @LIBTOOL_REVISION@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STATIC = @STATIC@ +STRIP = @STRIP@ +UINT64_TYPE = @UINT64_TYPE@ +VERSION = @VERSION@ +VERSION_LIBTOOL = @VERSION_LIBTOOL@ +VERSION_STRING = @VERSION_STRING@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mibdir = @mibdir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pibdir = @pibdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +smipath = @smipath@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = -I../lib +EXTRA_DIST = smidump.h shhopt.h \ + $(man_MANS) \ + dump-fig.c \ + dump-svg-script.js + +bin_SCRIPTS = smistrip smicache +man_MANS = smiquery.1 smilint.1 smidump.1 smidiff.1 \ + smistrip.1 smicache.1 smixlate.1 + +smiquery_SOURCES = smiquery.c shhopt.c +smiquery_LDADD = ../lib/libsmi.la +smilint_SOURCES = smilint.c shhopt.c +smilint_LDADD = ../lib/libsmi.la +smixlate_SOURCES = smixlate.c shhopt.c dstring.h dstring.c +smixlate_LDADD = ../lib/libsmi.la +smidump_SOURCES = smidump.c smidump.h shhopt.c \ + dump-sming.c dump-smi.c dump-yang.c \ + dump-imports.c dump-types.c dump-tree.c \ + dump-mosy.c dump-corba.c dump-netsnmp.c \ + dump-jax.c dump-xml.c dump-identifiers.c \ + dump-metrics.c dump-cm.c dump-python.c \ + dump-perl.c dump-scli.c dump-xsd.c dump-sppi.c \ + dump-sizes.c dump-svg-script.h dump-svg.c \ + rea.h rea.c dump-compliance.c dump-boilerplate.c \ + dstring.h dstring.c \ + fortopat.h fortopat.c fprint.h fprint.c + +smidump_LDADD = ../lib/libsmi.la -lm +smidiff_SOURCES = smidiff.c shhopt.c +smidiff_LDADD = ../lib/libsmi.la +MOSTLYCLEANFILES = dump-svg-script.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign tools/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +smistrip: $(top_builddir)/config.status $(srcdir)/smistrip.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smicache: $(top_builddir)/config.status $(srcdir)/smicache.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smiquery.1: $(top_builddir)/config.status $(srcdir)/smiquery.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smilint.1: $(top_builddir)/config.status $(srcdir)/smilint.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidump.1: $(top_builddir)/config.status $(srcdir)/smidump.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smidiff.1: $(top_builddir)/config.status $(srcdir)/smidiff.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smistrip.1: $(top_builddir)/config.status $(srcdir)/smistrip.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smicache.1: $(top_builddir)/config.status $(srcdir)/smicache.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +smixlate.1: $(top_builddir)/config.status $(srcdir)/smixlate.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +mib2svg.cgi: $(top_builddir)/config.status $(srcdir)/mib2svg.cgi.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +smidiff$(EXEEXT): $(smidiff_OBJECTS) $(smidiff_DEPENDENCIES) + @rm -f smidiff$(EXEEXT) + $(LINK) $(smidiff_OBJECTS) $(smidiff_LDADD) $(LIBS) +smidump$(EXEEXT): $(smidump_OBJECTS) $(smidump_DEPENDENCIES) + @rm -f smidump$(EXEEXT) + $(LINK) $(smidump_OBJECTS) $(smidump_LDADD) $(LIBS) +smilint$(EXEEXT): $(smilint_OBJECTS) $(smilint_DEPENDENCIES) + @rm -f smilint$(EXEEXT) + $(LINK) $(smilint_OBJECTS) $(smilint_LDADD) $(LIBS) +smiquery$(EXEEXT): $(smiquery_OBJECTS) $(smiquery_DEPENDENCIES) + @rm -f smiquery$(EXEEXT) + $(LINK) $(smiquery_OBJECTS) $(smiquery_LDADD) $(LIBS) +smixlate$(EXEEXT): $(smixlate_OBJECTS) $(smixlate_DEPENDENCIES) + @rm -f smixlate$(EXEEXT) + $(LINK) $(smixlate_OBJECTS) $(smixlate_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dstring.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-boilerplate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-cm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-compliance.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-corba.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-identifiers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-imports.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-jax.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-metrics.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-mosy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-netsnmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-perl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-python.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-scli.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-sizes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-smi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-sming.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-sppi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-svg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-tree.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-types.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-xml.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-xsd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump-yang.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fortopat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fprint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rea.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shhopt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smidiff.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smidump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smilint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smiquery.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smixlate.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(MANS) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-exec-am: install-binPROGRAMS install-binSCRIPTS + +install-html: install-html-am + +install-info: install-info-am + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-binSCRIPTS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS uninstall-man uninstall-man1 + + +dump-svg-script.h: dump-svg-script.js + (echo "const char *code =";cat dump-svg-script.js | sed -e 's/\\/&&/g;s/"/\\"/g;s/^/"/;s/$$/\\n"/'; echo ";") > dump-svg-script.h + +dump-svg.o: dump-svg-script.h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tools/dstring.c b/tools/dstring.c new file mode 100644 index 0000000..5ad5835 --- /dev/null +++ b/tools/dstring.c @@ -0,0 +1,231 @@ +/* + * dstring.c -- + * + * Implementation of the dynamic string abstract data type. + * + * Copyright (c) 2006 Juergen Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $ + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "dstring.h" + +#if !defined va_copy +# if defined __va_copy +# define va_copy __va_copy /* C99 draft proposal */ +# else +# define va_copy(lhs,rhs) (lhs) = (rhs) +# endif +#endif + +#if 0 +/* These functions should not be needed if inlining works properly. */ +char* +dstring_str(dstring_t *ds) +{ + return ds ? ds->str : NULL; +} + +size_t +dstring_len(dstring_t *ds) +{ + return ds ? ds->len : 0; +} +#endif + +static inline dstring_t* +dstring_grow(dstring_t *ds, size_t len) +{ + if (ds) { + ds->str = realloc(ds->str, len + 1); + if (! ds->str) { + exit(EXIT_FAILURE); + } + ds->str[len] = '\0'; + ds->len = len; + } + return ds; +} + +dstring_t* +dstring_new(void) +{ + dstring_t *ds; + + ds = calloc(1, sizeof(dstring_t)); + if (! ds) { + exit(EXIT_FAILURE); + } + return dstring_grow(ds, 0); +} + +dstring_t* +dstring_delete(dstring_t *ds) +{ + if (ds) { + if (ds->str) free(ds->str); + free(ds); + } + return NULL; +} + +dstring_t* +dstring_assign(dstring_t *ds, const char *s) +{ + if (ds && s) { + ds = dstring_grow(ds, strlen(s)); + strcpy(ds->str, s); + } + return ds; +} + +dstring_t* +dstring_append(dstring_t *ds, const char *s) +{ + if (ds && s) { + ds = dstring_grow(ds, ds->len + strlen(s)); + strcat(ds->str, s); + } + return ds; +} + + +dstring_t* +dstring_append_char(dstring_t *ds, const char c) +{ + if (ds) { + ds = dstring_grow(ds, ds->len + 1); + ds->str[ds->len-1] = c; + } + return ds; +} + + +dstring_t* +dstring_concat(dstring_t *ds, ...) +{ + va_list ap; + const char *s; + + if (ds) { + va_start(ap, ds); + for (s = va_arg(ap, char*); s; s = va_arg(ap, char*)) { + ds = dstring_append(ds, s); + } + va_end(ap); + } + return ds; +} + +dstring_t* +dstring_append_printf(dstring_t *ds, const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + ds = dstring_append_vprintf(ds, format, ap); + va_end(ap); + return ds; +} + +dstring_t * +dstring_append_vprintf(dstring_t *ds, const char *format, va_list _ap) +{ + int n, o; + va_list ap; + + if (ds) { + o = ds->len; + while (1) { + va_copy(ap, _ap); + n = vsnprintf(ds->str + o, ds->len+1 - o, format, ap); + va_end(ap); + if (n > -1 && n+o <= ds->len) { + if (n+o < ds->len) { + dstring_truncate(ds, n+o); + } + return ds; + } + if (n > 0) { + ds = dstring_grow(ds, n + o); /* C99 */ + } else { + ds = dstring_grow(ds, ds->len + ds->len); /* GLIBC */ + } + } + } + + return ds; +} + +dstring_t* +dstring_printf(dstring_t *ds, const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + ds = dstring_vprintf(ds, format, ap); + va_end(ap); + return ds; +} + +dstring_t* +dstring_vprintf(dstring_t *ds, const char *format, va_list _ap) +{ + int n; + va_list ap; + + if (ds) { + while (1) { + va_copy(ap, _ap); + n = vsnprintf(ds->str, ds->len+1, format, ap); + va_end(ap); + if (n > -1 && n <= ds->len) { + if (n < ds->len) { + dstring_truncate(ds, n); + } + return ds; + } + if (n > 0) { + ds = dstring_grow(ds, n); /* C99 */ + } else { + ds = dstring_grow(ds, ds->len + ds->len); /* GLIBC */ + } + } + } + return ds; +} + +dstring_t* +dstring_truncate(dstring_t *ds, int len) +{ + if (ds && len < ds->len) { + ds = dstring_grow(ds, len); + } + return ds; +} + +dstring_t* +dstring_expand(dstring_t *ds, int len, char fill) +{ + if (ds && len > ds->len) { + int i, old = ds->len; + ds = dstring_grow(ds, len); + for (i = old; i < len; i++) { + ds->str[i] = fill; + } + } + return ds; +} diff --git a/tools/dstring.h b/tools/dstring.h new file mode 100644 index 0000000..7e2a693 --- /dev/null +++ b/tools/dstring.h @@ -0,0 +1,90 @@ +/* + * dstring.h -- + * + * This file implements an abstract data type for dynamic strings. + * + * Note: The behavior of the functions that modify the a dynamic + * string is undefined if an argument strings points into the + * dynamic string itself. + * + * Copyright (c) 2006 Juergen Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $ + */ + +#ifndef _DSTRING_H_ +#define _DSTRING_H_ + +#include + +#ifdef __GNUC__ +# define inline /* extern */ static inline +#else +#ifdef HAVE_WIN_H +# define inline __inline +#endif +#endif + +struct dstring { + char *str; + size_t len; +}; + +typedef struct dstring dstring_t; + +inline char* +dstring_str(dstring_t *ds) +{ + return ds ? ds->str : NULL; +} + +inline size_t +dstring_len(dstring_t *ds) +{ + return ds ? ds->len : 0; +} + +extern dstring_t* +dstring_new(void); + +extern dstring_t* +dstring_delete(dstring_t *ds); + +extern dstring_t* +dstring_assign(dstring_t *ds, const char *s); + +extern dstring_t* +dstring_concat(dstring_t *ds, ...); + +extern dstring_t* +dstring_append(dstring_t *ds, const char *s); + +extern dstring_t* +dstring_append_char(dstring_t *ds, const char c); + +extern dstring_t* +dstring_append_printf(dstring_t *ds, const char *format, ...); + +extern dstring_t* +dstring_append_vprintf(dstring_t *ds, const char *format, va_list ap); + +extern dstring_t* +dstring_printf(dstring_t *ds, const char *format, ...); + +extern dstring_t* +dstring_vprintf(dstring_t *ds, const char *format, va_list ap); + +extern dstring_t* +dstring_truncate(dstring_t *ds, int len); + +extern dstring_t* +dstring_expand(dstring_t *ds, int len, char fill); + +#ifdef __GNUC__ +#undef inline +#endif + +#endif diff --git a/tools/dump-boilerplate.c b/tools/dump-boilerplate.c new file mode 100644 index 0000000..1676c88 --- /dev/null +++ b/tools/dump-boilerplate.c @@ -0,0 +1,241 @@ +/* + * dump-boilerplate.c -- + * + * Operations to dump security considerations boilerplates SMI modules. + * + * Copyright (c) 2008 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-identifiers.c 5758 2006-08-16 21:10:05Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int moduleLen = 0; +static int identifierLen = 0; + +static void fprintBoilerplate(FILE *f, int modc, SmiModule **modv) +{ + SmiNode *smiNode; + int i, roobjs = 0, rwobjs = 0; + + for (i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (!smiNode->name) continue; + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + rwobjs++; + } + if (smiNode->access == SMI_ACCESS_READ_WRITE + || smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_NOTIFY) { + roobjs++; + } + } + } + + if (roobjs == 0 && rwobjs == 0) { + fprintf(f, + "This module does not define any management objects. Instead, it\n" + "defines a set of textual conventions which may be used by other MIB\n" + "modules to define management objects.\n" + "\n" + "Meaningful security considerations can only be written in the MIB\n" + "modules that define management objects. This document has therefore\n" + "no impact on the security of the Internet.\n"); + return; + } + + if (rwobjs) { + fprintf(f, + "# if you have any read-write and/or read-create objects, please\n" + "# describe their specific sensitivity or vulnerability.\n" + "# RFC 2669 has a very good example.\n" + "\n" + "There are a number of management objects defined in this MIB module\n" + "with a MAX-ACCESS clause of read-write and/or read-create. Such\n" + "objects may be considered sensitive or vulnerable in some network\n" + "environments. The support for SET operations in a non-secure\n" + "environment without proper protection can have a negative effect on\n" + "network operations. These are the tables and objects and their\n" + "sensitivity/vulnerability:\n" + "\n"); + for (i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE + && smiNode->name) { + fprintf(f, " %-*s # explain sensitivity\n", + identifierLen, smiNode->name); + } + } + fprintf(f, "\n"); + } + } else { + fprintf(f, + "There are no management objects defined in this MIB module that have\n" + "a MAX-ACCESS clause of read-write and/or read-create. So, if this\n" + "MIB module is implemented correctly, then there is no risk that an\n" + "intruder can alter or create any management objects of this MIB\n" + "module via direct SNMP SET operations.\n" + "\n"); + } + + if (roobjs) { + fprintf(f, + "# for all MIB modules you must evaluate whether any readable objects\n" + "# are sensitive or vulnerable (for instance, if they might reveal\n" + "# customer information or violate personal privacy laws such as\n" + "# those of the European Union if exposed to unathorized parties)\n" + "\n" + "Some of the readable objects in this MIB module (i.e., objects with a\n" + "MAX-ACCESS other than not-accessible) may be considered sensitive or\n" + "vulnerable in some network environments. It is thus important to\n" + "control even GET and/or NOTIFY access to these objects and possibly\n" + "to even encrypt the values of these objects when sending them over\n" + "the network via SNMP. These are the tables and objects and their\n" + "sensitivity/vulnerability:\n" + "\n"); + + for (i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if ((smiNode->access == SMI_ACCESS_READ_WRITE + || smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_NOTIFY) + && smiNode->name) { + fprintf(f, " %-*s # explain sensitivity\n", + identifierLen, smiNode->name); + } + } + fprintf(f, "\n"); + } + + fprintf(f, + "SNMP versions prior to SNMPv3 did not include adequate security.\n" + "Even if the network itself is secure (for example by using IPsec),\n" + "even then, there is no control as to who on the secure network is\n" + "allowed to access and GET/SET (read/change/create/delete) the objects\n" + "in this MIB module.\n" + "\n" + "It is RECOMMENDED that implementers consider the security features as\n" + "provided by the SNMPv3 framework (see [RFC3410], section 8),\n" + "including full support for the SNMPv3 cryptographic mechanisms (for\n" + "authentication and privacy).\n" + "\n" + "Further, deployment of SNMP versions prior to SNMPv3 is NOT\n" + "RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to\n" + "enable cryptographic security. It is then a customer/operator\n" + "responsibility to ensure that the SNMP entity giving access to an\n" + "instance of this MIB module is properly configured to give access to\n" + "the objects only to those principals (users) that have legitimate\n" + "rights to indeed GET or SET (change/create/delete) them.\n" + "\n"); + } +} + + + +static void dumpBoilerplate(int modc, SmiModule **modv, int flags, + char *output) +{ + SmiNode *smiNode; + int i, len; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (moduleLen = 0, identifierLen = 0, i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->name) { + len = strlen(smiNode->name); + if (len > identifierLen) identifierLen = len; + } + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# united security considerations boilerplate (generated by smidump " + SMI_VERSION_STRING ")\n\n"); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintBoilerplate(f, modc, modv); + + } else { + + for (i = 0; i < modc; i++) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s security considerations boilerplate (generated by smidump " + SMI_VERSION_STRING ")\n\n", + modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintBoilerplate(f, 1, &(modv[i])); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initBoilerplate() +{ + + static SmidumpDriver driver = { + "boilerplate", + dumpBoilerplate, + SMI_FLAG_NODESCR, + 0, + "generate security considerations boilerplate text", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-cm.c b/tools/dump-cm.c new file mode 100644 index 0000000..10f0a78 --- /dev/null +++ b/tools/dump-cm.c @@ -0,0 +1,1209 @@ +/* + * dump-cm.c -- + * + * Operations to dump conceptual models for MIB modules. + * + * Copyright (c) 2000 A. Mueller, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-cm.c 2718 2005-08-24 06:59:15Z sperner $ + */ + + +/* + * -- TO DO -- + * + * Berechnungen der UML Diagramme debuggen + * + */ + + + + + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" +#include "rea.h" + + + +/* + * Definitions used by the dia output driver (node layout). + */ + +static const float HEADFONTSIZETABLE = (float)0.51; +static const float HEADSPACESIZETABLE = (float)0.6; +static const float ATTRFONTSIZE = (float)0.48; +static const float ATTRSPACESIZE = (float)2.4; +static const float RECTCORRECTION = (float)0.85; +static const float EDGEYSPACING = (float)2.0; +static const float TABLEHEIGHT = (float)2.6; /* headline of the table */ +static const float TABLEELEMHEIGHT = (float)0.675; /* height of one attribute */ + +/* + * global dia graph layout + */ +static const float YSPACING = (float)3.0; /* y space between nodes */ +static const float XSPACING = (float)4.0; /* x space between nodes */ +static const float NEWLINEDISTANCE = (float)40.0; /* length of one line */ +static const float XOFFSET = (float)2.0; /* left upper start of graph */ +static const float YOFFSET = (float)5.0; /* left upper start of graph */ + +/* + * position of the dia info note + */ +static const float XNOTE = (float)1.0; /* left upper corner of note */ +static const float YNOTE = (float)1.0; /* left upper corner of note */ + +/* + * Stereotype Name + */ +static const char* STEREOTYPE = "smi mib class"; + +/* + * Property String for index objects + */ +static const char* INDEXPROPERTY = " {index}"; + + +/* -------------- main functions ------------------------------------------- */ + + +/* + * Creates the graph nodes of the given module + */ +static void algCreateNodes(SmiModule *module) +{ + SmiNode *node; + + /* get tables and scalars from the MIB module */ + for (node = smiGetFirstNode(module, SMI_NODEKIND_TABLE); + node; + node = smiGetNextNode(node, SMI_NODEKIND_TABLE)) { + if (node->status != SMI_STATUS_OBSOLETE) { + if (!SUPPRESS_DEPRECATED || node->status != SMI_STATUS_DEPRECATED) + graphInsertNode(graph, node); + } + } + for (node = smiGetFirstNode(module, SMI_NODEKIND_SCALAR); + node; + node = smiGetNextNode(node, SMI_NODEKIND_SCALAR)) { + if (node->status != SMI_STATUS_OBSOLETE) { + if (!SUPPRESS_DEPRECATED || node->status != SMI_STATUS_DEPRECATED) + graphInsertNode(graph, node); + } + } +} + + + +/* ------ XML primitives ------ */ + + + + +static void diaPrintXMLHeader() +{ + printf("\n"); + printf("\n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" #A4#\n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); +} + +static void diaPrintXMLClose() +{ + printf(" \n"); + printf("\n"); +} + +/* + * prints the type of a given node + */ +static void diaPrintXMLType(SmiNode *smiNode, int index) +{ + printf(" \n"); + if (index) { + printf(" #%s%s#\n", + algGetTypeName(smiNode), INDEXPROPERTY); + } else { + printf(" #%s#\n", algGetTypeName(smiNode)); + } + printf(" \n"); +} + +/* + * index = 0 -> no index element + * index = 1 -> index element -> printed with "+" + */ +static void diaPrintXMLAttribute(SmiNode *node, int index) +{ + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", node->name); + printf(" \n"); + + diaPrintXMLType(node,index); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + if (node->access == SMI_ACCESS_NOT_ACCESSIBLE) { + printf(" \n"); + } else { + printf(" \n"); + } + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + if (node->nodekind == SMI_NODEKIND_SCALAR) { + printf(" \n"); + } else { + printf(" \n"); + } + + printf(" \n"); + printf(" \n"); +} + +/* + * prints the related scalars for a given table + */ +static void diaPrintXMLRelatedScalars(GraphNode *node) +{ + GraphEdge *tEdge; + + for (tEdge = graphGetFirstEdgeByNode(graph, node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->startNode == node && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + tEdge->dia.flags |= DIA_PRINT_FLAG; + tEdge->endNode->dia.flags |= DIA_PRINT_FLAG; + + diaPrintXMLAttribute(tEdge->endNode->smiNode,0); + } + } +} + +/* + * prints all columns objects of the given node + */ +static void diaPrintXMLAllColumns(GraphNode *node) +{ + SmiModule *module = NULL; + SmiNode *smiNode = NULL; + SmiNode *ppNode; + + module = smiGetNodeModule(node->smiNode); + + for (smiNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(smiNode); + ppNode = smiGetParentNode(ppNode); + + if (!algIsIndexElement(node->smiNode, smiNode) && + cmpSmiNodes(node->smiNode, ppNode)) + diaPrintXMLAttribute(smiNode, 0); + } +} + +/* + * adds the index to an augmenting table (row-element) + */ +static void diaPrintAugmentIndex(GraphNode *tNode) +{ + GraphEdge *tEdge; + SmiElement *smiElement; + + for (tEdge = graphGetFirstEdgeByNode(graph, tNode); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, tNode)) { + if (tEdge->indexkind == SMI_INDEX_AUGMENT) { + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tEdge->startNode->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!cmpSmiNodes(tNode->smiNode, tEdge->startNode->smiNode)) { + diaPrintXMLAttribute(smiGetElementNode(smiElement),1); + } + } + } + } +} + +static void diaPrintXMLObject(GraphNode *node, float x, float y) +{ + SmiElement *smiElement; + + if (!node) return; + if (node->dia.flags & DIA_PRINT_FLAG) return; + + node->dia.x = x; + node->dia.y = y; + node->dia.flags |= DIA_PRINT_FLAG; /* object is now printed */ + + printf(" \n", + node->smiNode->name); + printf(" \n"); + printf(" \n",x,y); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n",x,y); + printf(" \n"); + printf(" \n"); + printf(" \n",node->dia.w); + printf(" \n"); + printf(" \n"); + printf(" \n",node->dia.h); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", + smiGetFirstChildNode(node->smiNode)->name); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", STEREOTYPE); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + printf(" \n"); + + if (node->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + diaPrintXMLRelatedScalars(node); + + diaPrintAugmentIndex(node); + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(node->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + diaPrintXMLAttribute(smiGetElementNode(smiElement),1); + } + + if (PRINT_DETAILED_ATTR) { + diaPrintXMLAllColumns(node); + } + } + + printf(" \n"); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); +} + +/* + * prints a group of scalars denoted by group + */ +static void diaPrintXMLGroup(int group, float x, float y) +{ + GraphNode *tNode; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) break; + } + + if (!tNode) return; + + printf(" \n", + smiGetParentNode(tNode->smiNode)->name); + printf(" \n"); + printf(" \n",x,y); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n",x,y); + printf(" \n"); + printf(" \n"); + printf(" \n",0.0); + printf(" \n"); + printf(" \n"); + printf(" \n",0.0); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", + smiGetParentNode(tNode->smiNode)->name); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", STEREOTYPE); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + printf(" \n"); + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) { + diaPrintXMLAttribute(tNode->smiNode,0); + } + } + + printf(" \n"); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); +} + +static float getRectSX(GraphNode *tNode) +{ + return (float) (tNode->dia.w / 2.0 + tNode->dia.x - RECTCORRECTION); +} + +static float getRectEX(GraphNode *tNode) +{ + return (float) (tNode->dia.w / 2.0 + tNode->dia.x + RECTCORRECTION); +} + +static float getRectSY(GraphNode *tNode) +{ + return (float) (tNode->dia.y - 2.0 - RECTCORRECTION); +} + +static float getRectEY(GraphNode *tNode) +{ + return (float) (tNode->dia.y - 2.0 + RECTCORRECTION); +} + + +static int getConPoint(GraphNode *snode, GraphNode *enode) +{ + float x1,y1,x2,y2; + int con = 1; + + x1 = snode->dia.x; + y1 = snode->dia.y; + x2 = enode->dia.x; + y2 = enode->dia.y; + + if (x1 == x2 && y1 < y2) con = 6; + if (x1 == x2 && y1 > y1) con = 1; + if (x1 > x2 && y1 == y2) con = 3; + if (x1 < x2 && y1 == y2) con = 4; + if (x1 > x2 && y1 > y2) con = 0; + if (x1 > x2 && y1 < y2) con = 5; + if (x1 < x2 && y1 > y2) con = 2; + if (x1 < x2 && y1 < y2) con = 7; + + return con; +} + +static float getObjX(GraphNode *node, int con) +{ + switch (con) { + case 0 : + return node->dia.x; + break; + case 1 : + return (float) (node->dia.w / 2.0 + node->dia.x); + break; + case 2 : + return node->dia.x + node->dia.w; + break; + case 3 : + return node->dia.x; + break; + case 4 : + return node->dia.x + node->dia.w; + break; + case 5 : + return node->dia.x; + break; + case 6 : + return (float) (node->dia.w / 2.0 + node->dia.x); + break; + case 7 : + return node->dia.x + node->dia.w; + break; + } + return 0.0; +} + +static float getObjY(GraphNode *node, int con) +{ + switch (con) { + case 0 : + return node->dia.y; + break; + case 1 : + return node->dia.y; + break; + case 2 : + return node->dia.y; + break; + case 3 : + return (float) (node->dia.y + TABLEHEIGHT / 2.0); + break; + case 4 : + return (float) (node->dia.y + TABLEHEIGHT / 2.0); + break; + case 5 : + return node->dia.y + node->dia.h; + break; + case 6 : + return node->dia.y + node->dia.h; + break; + case 7 : + return node->dia.y + node->dia.h; + break; + } + return 0.0; +} + +static float getObjYRel(GraphEdge *edge, int con) +{ + GraphNode *node, *node2; + float dist; + + node = edge->startNode; + node2 = edge->endNode; + if (node->dia.y < node2->dia.y) { + dist = ABS(((node->dia.y + node->dia.h) - node2->dia.y ) / 2.0); + } else { + dist = ABS((node->dia.y - (node2->dia.y + node2->dia.h)) / 2.0); + } + + switch (con) { + case 0 : + return node->dia.y - dist; + break; + case 1 : + return node->dia.y - dist; + break; + case 2 : + return node->dia.y - dist; + break; + case 3 : + return (float) (node->dia.y + TABLEHEIGHT / 2.0); + break; + case 4 : + return (float) (node->dia.y + TABLEHEIGHT / 2.0); + break; + case 5 : + return node->dia.y + node->dia.h + dist; + break; + case 6 : + return node->dia.y + node->dia.h + dist; + break; + case 7 : + return node->dia.y + node->dia.h + dist; + break; + } + return 0.0; +} + +/* + * diaPrintXMLCoordinates + * + * prints and calculates the coordinates of a given edge + */ +static void diaPrintXMLCoordinates(GraphEdge *tEdge) +{ + int scon, econ; + + scon = getConPoint(tEdge->startNode, tEdge->endNode); + econ = getConPoint(tEdge->endNode, tEdge->startNode); + + printf(" \n"); + printf(" \n" + ,getObjX(tEdge->startNode,scon) + ,getObjY(tEdge->startNode,scon)); + printf(" \n"); + printf(" \n"); + printf(" \n" + ,getRectSX(tEdge->startNode) + ,getRectSY(tEdge->startNode) + ,getRectEX(tEdge->startNode) + ,getRectEY(tEdge->startNode)); + printf(" \n"); + printf(" \n"); + printf(" \n" + ,getObjX(tEdge->startNode,scon) + ,getObjY(tEdge->startNode,scon)); + printf(" \n" + ,getObjX(tEdge->startNode,scon) + ,getObjYRel(tEdge,scon)); + printf(" \n" + ,getObjX(tEdge->endNode,econ) + ,getObjYRel(tEdge,scon)); + printf(" \n" + ,getObjX(tEdge->endNode,econ) + ,getObjY(tEdge->endNode,econ)); + printf(" \n"); +} + +/* + * diaPrintXMLConPoints + * + * prints the connection points of an edge + */ +static void diaPrintXMLConPoints(GraphEdge *tEdge) +{ + int scon, econ; + + scon = getConPoint(tEdge->startNode, tEdge->endNode); + econ = getConPoint(tEdge->endNode, tEdge->startNode); + + printf(" \n"); + printf(" \n", + tEdge->startNode->smiNode->name,scon); + printf(" \n", + tEdge->endNode->smiNode->name, econ); + printf(" \n"); +} + +static void diaPrintXMLDependency(GraphEdge *tEdge) +{ + if (tEdge->dia.flags & DIA_PRINT_FLAG) return; + tEdge->dia.flags |= DIA_PRINT_FLAG; + + printf(" \n", + tEdge->startNode->smiNode->name, + tEdge->endNode->smiNode->name); + + diaPrintXMLCoordinates(tEdge); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + diaPrintXMLConPoints(tEdge); + + printf(" \n"); +} + +/* + * Aggregation is a special case of the association. + * If aggregate = 1 it is an aggregation if 0 it is an association. + */ +static void diaPrintXMLAssociation(GraphEdge *tEdge, int aggregate) +{ + if (tEdge->dia.flags & DIA_PRINT_FLAG) return; + tEdge->dia.flags |= DIA_PRINT_FLAG; + if (aggregate > 1) aggregate = 1; + if (aggregate < 0) aggregate = 0; + + printf(" \n", + tEdge->startNode->smiNode->name, + tEdge->endNode->smiNode->name); + + diaPrintXMLCoordinates(tEdge); + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + switch(tEdge->indexkind) { + case SMI_INDEX_UNKNOWN : + switch (tEdge->enhancedindex) { + case GRAPH_ENHINDEX_UNKNOWN : + break; + case GRAPH_ENHINDEX_TYPES : + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_NAMES : + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_NOTIFICATION : + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_INDEX : + /* should not occur - is handled below */ + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_REROUTE : + printf(" #%s#\n",""); + break; + case GRAPH_ENHINDEX_POINTER : + printf(" #%s#\n",""); + break; + } + break; + case SMI_INDEX_INDEX : + printf(" #%s#\n",""); + break; + case SMI_INDEX_AUGMENT : + printf(" #%s#\n","augments"); + break; + case SMI_INDEX_SPARSE : + printf(" #%s#\n","sparses"); + break; + case SMI_INDEX_REORDER : + printf(" #%s#\n","reorders"); + break; + case SMI_INDEX_EXPAND : + printf(" #%s#\n","expands"); + break; + } + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + switch (tEdge->cardinality) { + case GRAPH_CARD_UNKNOWN : + printf(" # #\n"); + break; + case GRAPH_CARD_ONE_TO_ONE : + printf(" #1#\n"); + break; + case GRAPH_CARD_ONE_TO_MANY : + printf(" #1#\n"); + break; + case GRAPH_CARD_ZERO_TO_ONE : + printf(" #0#\n"); + break; + case GRAPH_CARD_ZERO_TO_MANY : + printf(" #0#\n"); + break; + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE : + printf(" #1#\n"); + break; + } + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + printf(" \n"); + + switch (tEdge->cardinality) { + case GRAPH_CARD_UNKNOWN : + printf(" # #\n"); + break; + case GRAPH_CARD_ONE_TO_ONE : + printf(" #1#\n"); + break; + case GRAPH_CARD_ONE_TO_MANY : + printf(" #*#\n"); + break; + case GRAPH_CARD_ZERO_TO_ONE : + printf(" #1#\n"); + break; + case GRAPH_CARD_ZERO_TO_MANY : + printf(" #*#\n"); + break; + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE : + printf(" #0..1#\n"); + break; + } + + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n",aggregate); + printf(" \n"); + printf(" \n"); + printf(" \n"); + + diaPrintXMLConPoints(tEdge); + + printf(" \n"); +} + +static void diaPrintXMLConnection(GraphEdge *tEdge) +{ + switch (tEdge->connection) { + case GRAPH_CON_UNKNOWN: + break; + case GRAPH_CON_AGGREGATION : + diaPrintXMLAssociation(tEdge,1); + break; + case GRAPH_CON_DEPENDENCY : + diaPrintXMLDependency(tEdge); + break; + case GRAPH_CON_ASSOCIATION : + diaPrintXMLAssociation(tEdge,0); + break; + } +} + +/* + * diaPrintXMLInfoNote + * + * Prints an UML note with a short information on it (Modulename and + * smidump version). + */ +static void diaPrintXMLInfoNote(int modc, SmiModule **modv) +{ + size_t length; + float width; + char *note; + int i; + + const char *s1 = "Conceptual model of "; + const char *s2 = "- generated by smidump " SMI_VERSION_STRING; + + /* + * Calculate the length of the string... + */ + + length = strlen(s1) + strlen(s2) + 1; + + for (i = 0; i < modc; i++) { + length += strlen(modv[i]->name) + 1; + } + + /* + * ... before allocating a buffer and putting the string together. + */ + + note = xmalloc(length); + strcpy(note, s1); + for (i = 0; i < modc; i++) { + strcat(note, modv[i]->name); + strcat(note, " "); + } + strcat(note, s2); + + width = (float)strlen(note) * (float)0.76; /* don't ask */ + + printf("\n"); + printf(" \n"); + printf(" \n",XNOTE, YNOTE); + printf(" \n"); + printf(" \n"); + printf(" \n", + XNOTE-0.5, YNOTE-0.5, XNOTE-0.5 + width, YNOTE - 0.5 + 1.7); + printf(" \n"); + printf(" \n"); + printf(" \n",XNOTE, YNOTE); + printf(" \n"); + printf(" \n"); + printf(" \n", width); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" #%s#\n", note); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n", XNOTE + 0.35, YNOTE + 1.28); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf("\n"); + + xfree(note); +} + +/* + * diaCalcSize + * + * Calculates the size of a given node for the UML representation. + */ +static GraphNode *diaCalcSize(GraphNode *node) +{ + GraphEdge *tEdge; + SmiNode *tNode,*ppNode; + SmiElement *smiElement; + SmiModule *module; + + if (node->smiNode->nodekind == SMI_NODEKIND_SCALAR) return node; + + node->dia.w = (strlen(node->smiNode->name)+4) * HEADFONTSIZETABLE + + HEADSPACESIZETABLE; + + node->dia.h = TABLEHEIGHT; + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(node->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + tNode = smiGetElementNode(smiElement); + + node->dia.w = max(node->dia.w, (strlen(tNode->name) + + strlen(algGetTypeName(tNode)) + + strlen(INDEXPROPERTY)) + * ATTRFONTSIZE + + ATTRSPACESIZE); + node->dia.h += TABLEELEMHEIGHT; + } + + for (tEdge = graphGetFirstEdgeByNode(graph,node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->startNode == node && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + node->dia.h += TABLEELEMHEIGHT; + tNode = tEdge->endNode->smiNode; + + node->dia.w = max(node->dia.w, (strlen(tNode->name) + + strlen(algGetTypeName(tNode))) + * ATTRFONTSIZE + + ATTRSPACESIZE); + } + } + + if (PRINT_DETAILED_ATTR && node->smiNode->nodekind == SMI_NODEKIND_TABLE) { + module = smiGetNodeModule(node->smiNode); + + for (tNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + tNode; + tNode = smiGetNextNode(tNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(tNode); + ppNode = smiGetParentNode(ppNode); + + if (cmpSmiNodes(node->smiNode, ppNode)) { + int len; + char *typeName; + + typeName = algGetTypeName(tNode); + len = strlen(tNode->name) + (typeName ? strlen(typeName) : 0); + node->dia.h += TABLEELEMHEIGHT; + node->dia.w = max(node->dia.w, len) + * ATTRFONTSIZE + + ATTRSPACESIZE; + } + } + } + + return node; +} + +static float diaPrintNode(GraphNode *node, float x, float y) +{ + GraphEdge *tEdge; + + for (tEdge = graphGetFirstEdgeByNode(graph, node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (! (tEdge->dia.flags & DIA_PRINT_FLAG)) { + if (node == tEdge->startNode) { + y += tEdge->endNode->dia.h + YSPACING; + diaPrintXMLObject(tEdge->endNode, x, y); + diaPrintXMLConnection(tEdge); + y = diaPrintNode(tEdge->startNode, x, y); + /* (x+tEdge->startNode->dia.w+XSPACING),y); */ + + y = diaPrintNode(tEdge->endNode, + (x+tEdge->startNode->dia.w+XSPACING), y); + } + } + } + + return y; +} + +static void diaPrintXML(int modc, SmiModule **modv) +{ + GraphNode *tNode; + GraphEdge *tEdge; + float x,y,ydiff; + int group; + + diaPrintXMLHeader(); + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + tNode = diaCalcSize(tNode); + } + + diaPrintXMLInfoNote(modc, modv); + + x = XOFFSET; + y = YOFFSET; + ydiff = 0; + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + if (! (tEdge->dia.flags & DIA_PRINT_FLAG)) { + diaPrintXMLObject(tEdge->startNode, x, y); + x = x + tEdge->startNode->dia.w + XSPACING; + + diaPrintXMLObject(tEdge->endNode, x, y); + diaPrintXMLConnection(tEdge); + + ydiff = tEdge->startNode->dia.h; + + y = diaPrintNode(tEdge->startNode,x,y); + y = diaPrintNode(tEdge->endNode,x,y); + + y = y + ydiff + YSPACING; + x = XOFFSET; + } + } + + x = XOFFSET; + y += ydiff; + ydiff = 0; + + /* printing singular tables */ + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!graphGetFirstEdgeByNode(graph,tNode) && + tNode->smiNode->nodekind != SMI_NODEKIND_SCALAR) { + diaPrintXMLObject(tNode,x,y); + + x += tNode->dia.w + XSPACING; + ydiff = max(ydiff, tNode->dia.h); + if (x >= NEWLINEDISTANCE) { + x = XOFFSET; + y += ydiff + YSPACING; + } + } + } + + /* printing scalar groups */ + x = XOFFSET; + y += ydiff + YSPACING; + for (group = 1; + group <= algGetNumberOfGroups(); + group++) { + diaPrintXMLGroup(group,x,y); + x += 2.0; + y += 2.0; + } + + diaPrintXMLClose(); +} + + + +/* ------------------------------------------------------------------------- */ + +static void printModuleNames(int modc, SmiModule **modv) +{ + int i; + + printf("Conceptual model of: "); + + for (i = 0; i < modc; i++) { + printf("%s ", modv[i]->name); + } + + printf("(generated by smidump " SMI_VERSION_STRING ")\n\n"); +} + + + +static void dumpCm(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! graph) { + graph = xmalloc(sizeof(Graph)); + graph->nodes = NULL; + graph->edges = NULL; + graph->components = NULL; + } + + for (i = 0; i < modc; i++) { + algCreateNodes(modv[i]); + } + + if (XPLAIN) { + printModuleNames(modc, modv); + printf("\n--- First Phase - loading tables and scalars\n\n"); + graphShowNodes(graph); + printf("\n"); + } + + algLinkTables(); + algCheckLinksByName(); + algConnectLonelyNodes(); + algCheckForDependency(); + algCheckForPointerRels(); + + if (!XPLAIN) { + diaPrintXML(modc, modv); + } + graphExit(graph); + graph = NULL; + } else { + for (i = 0; i < modc; i++) { + if (! graph) { + graph = xmalloc(sizeof(Graph)); + graph->nodes = NULL; + graph->edges = NULL; + graph->components = NULL; + } + + algCreateNodes(modv[i]); + + if (XPLAIN) { + printModuleNames(1, &(modv[i])); + printf("\n--- First Phase - loading tables and scalars\n\n"); + graphShowNodes(graph); + printf("\n"); + } + + algLinkTables(); + algCheckLinksByName(); + algConnectLonelyNodes(); + algCheckForDependency(); + algCheckForPointerRels(); + + if (!XPLAIN) { + diaPrintXML(1, &(modv[i])); + } + + graphExit(graph); + graph = NULL; + } + } + + if (fflush(stdout) || ferror(stdout)) { + perror("smidump: write error"); + exit(1); + } +} + + + +void initCm() +{ + static SmidumpDriverOption opt[] = { + { "explain", OPT_FLAG, &XPLAIN, 0, + "explain what the algorithm does"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "cm", + dumpCm, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_OUTPUT, + "reverse engineered conceptual model", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-compliance.c b/tools/dump-compliance.c new file mode 100644 index 0000000..525796d --- /dev/null +++ b/tools/dump-compliance.c @@ -0,0 +1,298 @@ +/* + * dump-compliances.c -- + * + * Operations to dump compliances in a human readable format. + * + * Copyright (c) 2005 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-compliances.c 1571 2003-07-14 22:58:42Z schoenw $ + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static char *getFlags(SmiNode *smiNode) +{ + + switch (smiNode->access) { + case SMI_ACCESS_UNKNOWN: + return "---"; + case SMI_ACCESS_NOT_ACCESSIBLE: + return "---"; + case SMI_ACCESS_NOTIFY: + return "--n"; + case SMI_ACCESS_EVENT_ONLY: + return "--n"; + case SMI_ACCESS_READ_ONLY: + return "r-n"; + case SMI_ACCESS_READ_WRITE: + return "rwn"; + case SMI_ACCESS_NOT_IMPLEMENTED: + return "---"; + case SMI_ACCESS_INSTALL: + return "-i-"; + case SMI_ACCESS_INSTALL_NOTIFY: + return "-in"; + case SMI_ACCESS_REPORT_ONLY: + return "--r"; + } + + return ""; +} + + + +static char getStatusChar(SmiStatus status) +{ + switch (status) { + case SMI_STATUS_UNKNOWN: + return '+'; + case SMI_STATUS_CURRENT: + return '+'; + case SMI_STATUS_DEPRECATED: + return 'x'; + case SMI_STATUS_MANDATORY: + return '+'; + case SMI_STATUS_OPTIONAL: + return '+'; + case SMI_STATUS_OBSOLETE: + return 'o'; + } + + return ' '; +} + + + +static char *getTypeName(SmiNode *smiNode) +{ + char *type; + SmiType *smiType, *parentType; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + if (!parentType) + return NULL; + smiType = parentType; + } + + type = xstrdup(smiType->name); + return type; +} + + + +static void fprintGroup(FILE *f, SmiNode *smiNode, char c, + int *typelen, int *namelen, int pass) +{ + SmiElement *smiElement; + SmiNode *smiObject; + SmiModule *smiModule; + char *type_name; + int tlen = 9, nlen = 9; + + switch (smiNode->nodekind) { + case SMI_NODEKIND_GROUP: + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiObject = smiGetElementNode(smiElement); + smiModule = smiGetNodeModule(smiNode); + type_name = getTypeName(smiObject); + if (pass == 1) { + if (type_name) { + int newlen = strlen(type_name); + tlen = (tlen < newlen) ? newlen : tlen; + } + if (smiObject->name) { + int newlen = strlen(smiObject->name); + nlen = (nlen < newlen) ? newlen : nlen; + } + } else if (pass == 2) { + fprintf(f, " %c%c%s %-*s %-*s (%s)\n", + getStatusChar(smiObject->status), c, + getFlags(smiObject), + *typelen, type_name ? type_name : "-", + *namelen, smiObject->name, smiNode->name); + } + xfree(type_name); + } + break; + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + smiObject = smiNode; + type_name = getTypeName(smiObject); + if (pass == 1) { + if (type_name) { + int newlen = strlen(type_name); + tlen = tlen < newlen ? newlen : tlen; + } + if (smiObject->name) { + int newlen = strlen(smiObject->name); + nlen = (nlen < newlen) ? newlen : nlen; + } + } else if (pass == 2) { + fprintf(f, " %c%c%s %-*s %s\n", + getStatusChar(smiObject->status), 'r', + getFlags(smiObject), + *typelen, type_name ? type_name : "-", + smiObject->name); + } + xfree(type_name); + break; + default: + break; + } + + if (pass == 1) { + if (typelen) *typelen = tlen; + if (namelen) *namelen = nlen; + } +} + + + +static void fprintCompliance(FILE *f, SmiNode *smiNode, + int *typelen, int *namelen, int pass) +{ + SmiElement *smiElement; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + int tlen = 0, nlen = 0; + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + fprintGroup(f, smiGetElementNode(smiElement), 'm', + (pass == 1) ? &tlen : typelen, + (pass == 1) ? &nlen : namelen, pass); + if (pass == 1) { + if (typelen) { + *typelen = *typelen < tlen ? tlen : *typelen; + } + if (namelen) { + *namelen = *namelen < nlen ? nlen : *namelen; + } + } + } + + for(smiOption = smiGetFirstOption(smiNode); + smiOption; + smiOption = smiGetNextOption(smiOption)) { + fprintGroup(f, smiGetOptionNode(smiOption), 'c', + (pass == 1) ? &tlen : typelen, + (pass == 1) ? &nlen : namelen, pass); + if (pass == 1) { + if (typelen) { + *typelen = *typelen < tlen ? tlen : *typelen; + } + if (namelen) { + *namelen = *namelen < nlen ? nlen : *namelen; + } + } + } + + for (smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + fprintGroup(f, smiGetRefinementNode(smiRefinement), 'r', + (pass == 1) ? &tlen : typelen, + (pass == 1) ? &nlen : namelen, pass); + if (pass == 1) { + if (typelen) { + *typelen = *typelen < tlen ? tlen : *typelen; + } + if (namelen) { + *namelen = *namelen < nlen ? nlen : *namelen; + } + } + } +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i, typelen = 0, namelen = 0; + + for (i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE), i++) { + fprintf(f, "%s%s:\n", i ? "\n" : "", smiNode->name); + fprintCompliance(f, smiNode, &typelen, &namelen, 1); + fprintCompliance(f, smiNode, &typelen, &namelen, 2); + } +} + + + +static void +dumpCompliances(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s compliances (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintCompliances(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initCompliances() +{ + static SmidumpDriver driver = { + "compliances", + dumpCompliances, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE, + "compliances with all included objects / notifications", + /* opt, */ NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-corba.c b/tools/dump-corba.c new file mode 100644 index 0000000..50e4a3e --- /dev/null +++ b/tools/dump-corba.c @@ -0,0 +1,1739 @@ +/* + * dump-corba.c -- + * + * Operations to dump CORBA IDL and OID definitions. This is based + * on the JIDM Specification Translation developed by the JIDM task + * force, published as Open Group + * document C802 (ISBN 1-85912-256-6, January 2000). + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-corba.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 13 /* column to start multiline texts */ +#define INDENTMAX 72 /* max column to fill, break lines otherwise */ + + +static int current_column = 0; + +static int silent = 0; + + +/* + * The following list of IDL keywords is taken from the CORBA + * 2.3.1 IDL specification section 3.2.4 (October 1999). + */ + + +static char *idlKeywords[] = { + "abstract", + "any", "attribute", "boolean", "case", + "char", "const", "context", "custom", + "default", "double", "enum", "exception", + "factory", "FALSE", "fixed", "float", + "in", "inout", "interface", "long", + "module", "native", "object", "octet", + "oneway", "out", "private", "public", + "raises", "readonly", "sequence", "short", + "string", "struct", "supports", "switch", + "TRUE", "truncatable", "typedef", "unsigned", + "union", "valuebase", "valuetype", "void", + "wchar", "wstring", NULL +}; + + +/* + * Structure used to build a list of imported types. + */ + + +typedef struct Import { + char *module; + char *name; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + + +/* + * Structure used to build dictionaries that translate names + * into IDL names following the generic JIDM rules. + */ + + +typedef struct IdlEntry { + char *module; + char *name; + char *idlname; + struct IdlEntry *nextPtr; +} IdlEntry; + +static IdlEntry *idlModuleNameList = NULL; +static IdlEntry *idlNodeNameList = NULL; +static IdlEntry *idlTypeNameList = NULL; +static IdlEntry *idlVBTypeNameList = NULL; + +static IdlEntry **idlNameLists[] = { + &idlModuleNameList, &idlNodeNameList, + &idlTypeNameList, &idlVBTypeNameList, + NULL +}; + + + +static FILE * createFile(char *name, char *suffix) +{ + char *fullname; + FILE *f; + + fullname = xmalloc(strlen(name) + (suffix ? strlen(suffix) : 0) + 2); + strcpy(fullname, name); + if (suffix) { + strcat(fullname, suffix); + } + if (!access(fullname, R_OK)) { + fprintf(stderr, "smidump: %s already exists\n", fullname); + xfree(fullname); + return NULL; + } + f = fopen(fullname, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", fullname); + perror(NULL); + xfree(fullname); + exit(1); + } + xfree(fullname); + return f; +} + + + +static char* dictFindName(IdlEntry *list, char *module, char* name) +{ + IdlEntry *p; + + for (p = list; p; p = p->nextPtr) { + if (! strcasecmp(p->module, module) + && ((! p->name && ! name) || ! strcasecmp(p->name, name))) { + return p->idlname; + } + } + + return NULL; +} + + + +static char* dictAddName(IdlEntry **listPtr, char *module, char *name) +{ + IdlEntry *p; + char *s, *idl; + int i; + + /* + * Create a new IDL identifier by translating hyphens + * to underscores. + */ + + s = name ? name : module; + idl = xmalloc(strlen(s) + 1); + for (i = 0; s[i]; i++) { + idl[i] = (s[i] == '-') ? '_' : s[i]; + } + idl[i] = 0; + + /* + * Check for any collisions with IDL keywords or previously + * created IDL identifiers. + */ + + for (i = 0; idlKeywords[i]; i++) { + if (! strcasecmp(idlKeywords[i], idl)) { + fprintf(stderr, "smidump: " + "`%s' (%s%s%s) collides with IDL keyword `%s'\n", + idl, module, name ? "::" : "", name ? name : "", + idlKeywords[i]); + } + } + + for (i = 0; idlNameLists[i]; i++) { + IdlEntry *list = *(idlNameLists[i]); + for (p = list; p; p = p->nextPtr) { + if (! strcasecmp(p->idlname, idl)) { + fprintf(stderr, "smidump: " + "`%s' (%s%s%s) collides with `%s' (%s%s%s)\n", + idl, module, + name ? "::" : "", name ? name : "", + p->idlname, p->module, + p->name ? "::" : "", p->name ? p->name : ""); + } + } + } + + /* + * Safe the translated identifier in the dictionary. + */ + + p = xmalloc(sizeof(IdlEntry)); + p->module = xstrdup(module); + p->name = name ? xstrdup(name) : NULL; + p->idlname = idl; + p->nextPtr = *listPtr; + *listPtr = p; + + return idl; +} + + + +static void dictFree(IdlEntry **list) +{ + IdlEntry *p, *q; + + for (p = *list; p; ) { + q = p; + p = p->nextPtr; + xfree(q->module); + if (q->name) xfree(q->name); + xfree(q->idlname); + xfree(q); + } + + *list = NULL; +} + + + +static char* getIdlModuleName(char *module) +{ + char *s; + + s = dictFindName(idlModuleNameList, module, NULL); + if (! s) { + s = dictAddName(&idlModuleNameList, module, NULL); + } + return s; +} + + + +static char *getIdlNodeName(char *module, char *name) +{ + char *s; + s = dictFindName(idlNodeNameList, module, name); + if (! s) { + s = dictAddName(&idlNodeNameList, module, name); + } + return s; +} + + + +static char* getIdlTypeName(char *module, char *name) +{ + char *s, *type_name; + + type_name = xmalloc(strlen(name) + 10); + sprintf(type_name, "%sType", name); + type_name[0] = toupper((int) type_name[0]); + + s = dictFindName(idlTypeNameList, module, type_name); + if (! s) { + s = dictAddName(&idlTypeNameList, module, type_name); + } + + xfree(type_name); + return s; +} + + + +static char* getIdlVBTypeName(char *module, char *name, int *isnew) +{ + char *s, *vbTypeName; + + vbTypeName = xmalloc(strlen(name) + 10); + sprintf(vbTypeName, "%sVBType", name); + vbTypeName[0] = toupper((int) vbTypeName[0]); + + if (isnew) { + *isnew = 0; + } + s = dictFindName(idlVBTypeNameList, module, vbTypeName); + if (! s) { + if (isnew) { + *isnew = 1; + } + s = dictAddName(&idlVBTypeNameList, module, vbTypeName); + } + + xfree(vbTypeName); + return s; +} + + + +static int current(SmiStatus status) +{ + switch (status) { + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + return 1; + default: + return 0; + } +} + + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d%02d%02d%02d%02dZ", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char *getAccessString(SmiAccess access, int create) +{ + if (create && (access == SMI_ACCESS_READ_WRITE)) { + return "read-create"; + } else { + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "accessible-for-notify" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; + } +} + + + +static char *getBaseTypeString(SmiBasetype basetype) +{ + switch(basetype) { + case SMI_BASETYPE_UNKNOWN: + return "ASN1_Null"; + case SMI_BASETYPE_POINTER: + return "ASN1_Null"; + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_ENUM: + return "ASN1_Integer"; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + return "ASN1_OctetString"; + case SMI_BASETYPE_OBJECTIDENTIFIER: + return "ASN1_ObjectIdentifier"; + case SMI_BASETYPE_UNSIGNED32: + return "ASN1_Unsigned"; + case SMI_BASETYPE_INTEGER64: + return "ASN1_Integer64"; + case SMI_BASETYPE_UNSIGNED64: + return "ASN1_Unsigned64"; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + return "ASN1_Real"; + } + + return NULL; +} + + +static char *getIdlAnyTypeName(SmiNode *smiNode, SmiType *smiType) +{ + SmiModule *smiModule; + char *typeName; + + if (! smiType->name) { + smiModule = smiGetNodeModule(smiNode); + if (smiModule && strlen(smiModule->name)) { + typeName = getIdlTypeName(smiModule->name, smiNode->name); + } else { + typeName = getBaseTypeString(smiType->basetype); + } + } else { + smiModule = smiGetTypeModule(smiType); + if (smiModule && strlen(smiModule->name)) { + typeName = getIdlTypeName(smiModule->name, smiType->name); + } else { + typeName = getBaseTypeString(smiType->basetype); + } + } + + return typeName; +} + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "'%*s'H", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "{"); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + sprintf(&s[strlen(s)], "%s", nn->name); + } + } + } + sprintf(&s[strlen(s)], "}"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + /* TODO */ + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, "{"); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + strcat(s, "}"); + } + break; + } + + return s; +} + + + +static Import* addImport(char *module, char *name) +{ + Import **import, *newImport; + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c < 0) continue; + if (c == 0) { + int d = strcmp((*import)->name, name); + if (d < 0) continue; + if (d == 0) return *import; + if (d > 0) break; + } + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + newImport->module = module; + newImport->name = name; + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void createImportList(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiModule *smiTypeModule; + SmiElement *smiElement; + SmiNode *smiNodeIndex; + SmiNodekind kind = SMI_NODEKIND_SCALAR + | SMI_NODEKIND_COLUMN | SMI_NODEKIND_ROW; + + for (smiNode = smiGetFirstNode(smiModule, kind); + smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + + switch (smiNode->nodekind) { + case SMI_NODEKIND_ROW: + for (smiElement = smiGetFirstElement(smiNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiNodeIndex = smiGetElementNode(smiElement); + smiType = smiGetNodeType(smiNodeIndex); + if (smiType) { + smiTypeModule = smiGetTypeModule(smiType); + if (smiTypeModule && + strcmp(smiTypeModule->name, smiModule->name)) { + if (strlen(smiTypeModule->name)) { + addImport(smiTypeModule->name, smiType->name); + } + } + if (smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("SNMPv2-SMI", "Integer32"); + } + } + } + break; + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + smiType = smiGetNodeType(smiNode); + if (smiType) { + smiTypeModule = smiGetTypeModule(smiType); + if (smiTypeModule && + strcmp(smiTypeModule->name, smiModule->name)) { + if (strlen(smiTypeModule->name)) { + addImport(smiTypeModule->name, smiType->name); + } + } + if (smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("SNMPv2-SMI", "Integer32"); + } + } + break; + } + } +} + + + +static void freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintMultilineString(FILE *f, const char *s) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS - 1, "\"", 0); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS, "", 0); + } + } + } + putc('\"', f); + current_column++; +} + + + +static void fprintMultiline(FILE *f, const char *s) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS, "", 0); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS, "", 0); + } + } + } + putc('\n', f); + current_column++; +} + + + +static char * +getStringTime(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void +fprintCommentString(FILE *f, char *s) +{ + int i, len; + + if (s) { + fprintf(f, " * "); + len = strlen(s); + for (i = 0; i < len; i++) { + fputc(s[i], f); + if (s[i] == '\n') { + fprintf(f, " * "); + } + } + fputc('\n', f); + } +} + + + +static char* translate(char *s) +{ + int i; + + s = xstrdup(s); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + } + + return s; +} + + + +static int isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_TABLE) + && current(childNode->status)) { + return 1; + } + } + + return 0; +} + + + +static int isCreatable(SmiNode *smiNode) +{ + SmiNode *childNode; + + if ((isGroup(smiNode) || smiNode->nodekind == SMI_NODEKIND_ROW) + && current(smiNode->status)) { + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) + && current(childNode->status) + && childNode->access == SMI_ACCESS_READ_WRITE) { + return 1; + } + } + } + + return 0; +} + + + +static void fprintDescription(FILE *f, SmiNode *smiNode, int indent) +{ + fprint(f, "\n"); + fprintSegment(f, indent, "/*\n", 0); + if (smiNode->description) { + fprintMultiline(f, smiNode->description); + } + if (smiNode->reference) { + fprintSegment(f, indent, "REFERENCE:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference); + fprint(f, "\n\n"); + } + if (smiNode->units) { + fprintSegment(f, indent, "UNITS:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->units); + fprint(f, "\n\n"); + } + fprintSegment(f, indent, "*/\n", 0); +} + + + +static void fprintIndex(FILE *f, SmiNode *indexNode) +{ + SmiElement *smiElement; + int j; + + for (j = 0, smiElement = smiGetFirstElement(indexNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, " "); + } + fprint(f, smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ +} + + + +static void fprintIncludes(FILE *f, SmiModule *smiModule) +{ + Import *import; + char *lastModulename = NULL; + + fprint(f, "#include \n"); + fprint(f, "#include \n"); + + for (import = importList; import; import = import->nextPtr) { + if (!lastModulename + || strcmp(lastModulename, import->module)) { + fprint(f, "#include <%s.idl>\n", + getIdlModuleName(import->module)); + lastModulename = import->module; + } + } + + fprint(f, "\n"); +} + + + +static void fprintImportedTypedefs(FILE *f, SmiModule *smiModule) +{ + Import *import; + int cnt = 0; + char *idlTypeName; + + for (import = importList; import; import = import->nextPtr) { + cnt++; + idlTypeName = getIdlTypeName(import->module, import->name); + fprintSegment(f, INDENT, "typedef ", 0); + fprint(f, "%s::%s %s;\n", + getIdlModuleName(import->module), idlTypeName, idlTypeName); + } + + if (cnt) { + fprint(f, "\n"); + } +} + + + +static void fprintModule(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + char *idlModuleName; + + smiNode = smiGetModuleIdentityNode(smiModule); + + if (smiNode) { + + idlModuleName = getIdlModuleName(smiModule->name); + fprintSegment(f, INDENT, "const ", 0); + fprint(f, "string moduleIdentity = \"%s\";\n", smiNode->name); + fprintSegment(f, INDENT, "const ", 0); + fprint(f, "ASN1_ObjectIdentifier %s = \"::%s::%s\";\n\n", + getIdlModuleName(smiNode->name), + idlModuleName, smiNode->name); + if (! silent) { + fprintSegment(f, INDENT, "/*\n", 0); + if (smiModule->description) { + fprintMultiline(f, smiModule->description); + fprint(f, "\n"); + } + smiRevision = smiGetFirstRevision(smiModule); + fprintSegment(f, INDENT, "LAST-UPDATED:", INDENTVALUE); + fprint(f, smiRevision + ? getTimeString(smiRevision->date) : "197001010000Z"); + fprint(f, "\n\n"); + fprintSegment(f, INDENT, "ORGANIZATION:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->organization); + fprint(f, "\n\n"); + fprintSegment(f, INDENT, "CONTACT-INFO:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->contactinfo); + fprint(f, "\n\n"); + for (; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + if (! smiRevision->description || + strcmp(smiRevision->description, + "[Revision added by libsmi due to a LAST-UPDATED clause.]")) { + fprintSegment(f, INDENT, "REVISION:", INDENTVALUE); + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + fprintSegment(f, INDENT, "REVISION-DESCRIPTION:", 0); + fprint(f, "\n"); + if (smiRevision->description) { + fprintMultilineString(f, smiRevision->description); + } else { + fprintMultilineString(f, "..."); + } + fprint(f, "\n\n"); + } + } + fprintSegment(f, INDENT, "*/", 0); + fprint(f, "\n\n"); + } + } + +} + + + +static void fprintType(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + SmiNamedNumber *nn; + char *idlTypeName; + char *nnName; + int i; + + if (! silent) { + if (smiType->name) { + fprintSegment(f, INDENT, "/*\n", 0); + if (smiType->description) { + fprintMultiline(f, smiType->description); + } + if (smiType->reference) { + fprintSegment(f, INDENT, "REFERENCE:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiType->reference); + fprint(f, "\n\n"); + } + if (smiType->format) { + fprintSegment(f, INDENT, "DISPLAY-HINT:", 0); + fprint(f, " %s\n", smiType->format); + fprint(f, "\n\n"); + } + fprintSegment(f, INDENT, "*/\n", 0); + } + } + if (! smiType->name) { + idlTypeName = getIdlTypeName(smiGetNodeModule(smiNode)->name, + smiNode->name); + } else { + idlTypeName = getIdlTypeName(smiGetTypeModule(smiType)->name, + smiType->name); + } + fprintSegment(f, INDENT, "typedef ", 0); + fprint(f, "%s %s; \n", + getBaseTypeString(smiType->basetype), idlTypeName); + + if (smiType->basetype == SMI_BASETYPE_ENUM) { + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + fprintSegment(f, INDENT, "const ", 0); + nnName = translate(nn->name); + fprint(f, "%s %s_%s = %s;\n", idlTypeName, idlTypeName, nnName, + getValueString(&nn->value, smiType)); + xfree(nnName); + } + fprintSegment(f, INDENT, "const string ", 0); + fprint(f, "%s_NameNumberList = \"", idlTypeName); + for (i = 0, nn = smiGetFirstNamedNumber(smiType); + nn; + i++, nn = smiGetNextNamedNumber(nn)) { + nnName = translate(nn->name); + if (i) { + fprint(f, " , "); + } + fprint(f, "%s (%s)", nnName, getValueString(&nn->value, smiType)); + xfree(nnName); + } + fprint(f, "\";\n"); + } + fprint(f, "\n"); +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiNodekind kind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (current(smiType->status)) { + fprintType(f, NULL, smiType); + } + } + + for (smiNode = smiGetFirstNode(smiModule, kind); + smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + if (current(smiNode->status)) { + smiType = smiGetNodeType(smiNode); + if (smiType && ! smiType->name) { + fprintType(f, smiNode, smiType); + } + } + } +} + + + +static void fprintAttribute(FILE *f, SmiNode *smiNode) +{ + char *idlTypeName = NULL, *idlNodeName; + SmiType *smiType; + SmiModule *smiModule; + + if (smiNode->access < SMI_ACCESS_READ_ONLY) { + return; + } + + smiType = smiGetNodeType(smiNode); + smiModule = smiGetNodeModule(smiNode); + + if (! smiType) { + return; + } + + idlNodeName = getIdlNodeName(smiModule->name, smiNode->name); + idlTypeName = getIdlAnyTypeName(smiNode, smiType); + if (! silent) { + fprintDescription(f, smiNode, 2*INDENT); + } + fprintSegment(f, 2*INDENT, + smiNode->access == SMI_ACCESS_READ_ONLY + ? "readonly attribute" : "attribute", 0); + + fprint(f, " %s %s;\n", idlTypeName, idlNodeName); +} + + + +static void fprintGroupInterface(FILE *f, SmiNode *smiNode) +{ + SmiNode *childNode; + char *idlNodeName; + SmiModule *smiModule, *childModule; + + smiModule = smiGetNodeModule(smiNode); + idlNodeName = getIdlNodeName(smiModule->name, smiNode->name); + fprintSegment(f, INDENT, "interface", 0); + fprint(f, " %s : SNMPMgmt::SmiEntry {\n", idlNodeName); + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_TABLE + && current(childNode->status)) { + if (! silent) { + fprintDescription(f, childNode, 2*INDENT); + } + fprintSegment(f, 2*INDENT, "SNMPMgmt::SmiTableIterator", 0); + childModule = smiGetNodeModule(childNode); + fprint(f, " get_%s();\n", getIdlNodeName(childModule->name, + childNode->name)); + } + if (childNode->nodekind == SMI_NODEKIND_SCALAR + && current(childNode->status)) { + fprintAttribute(f, childNode); + } + } + + fprintSegment(f, INDENT, "};\n\n", 0); +} + + + +static void fprintRowInterface(FILE *f, SmiNode *smiNode) +{ + SmiNode *childNode, *relatedNode; + char *idlModuleName, *idlNodeName; + + idlNodeName = getIdlNodeName(smiGetNodeModule(smiNode)->name, + smiNode->name); + if (! silent) { + fprintDescription(f, smiNode, INDENT); + } + fprintSegment(f, INDENT, "interface", 0); + if (smiNode->indexkind == SMI_INDEX_AUGMENT + || smiNode->indexkind == SMI_INDEX_SPARSE) { + relatedNode = smiGetRelatedNode(smiNode); + idlModuleName = getIdlModuleName(smiGetNodeModule(relatedNode)->name); + fprint(f, " %s : %s::%s {\n", idlNodeName, + idlModuleName, relatedNode->name); + } else { + fprint(f, " %s : SNMPMgmt::SmiEntry {\n", idlNodeName); + } + + if (smiNode->indexkind == SMI_INDEX_INDEX + || smiNode->indexkind == SMI_INDEX_REORDER) { + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, "const ", 0); + fprint(f, "string IndexVarList = \""); + fprintIndex(f, smiNode); + fprint(f, "\";\n"); + } + + /* SMI_INDEX_EXPAND ? */ + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_COLUMN + && current(childNode->status)) { + fprintAttribute(f, childNode); + } + } + + fprintSegment(f, INDENT, "};\n\n", 0); +} + + + +static void fprintInterfaces(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + fprintGroupInterface(f, smiNode); + } + if (smiNode->nodekind == SMI_NODEKIND_ROW + && current(smiNode->status)) { + fprintRowInterface(f, smiNode); + } + } +} + + + +static void fprintConstructor(FILE *f, SmiNode *smiNode) +{ + SmiNode *childNode; + SmiNode *indexNode; + SmiType *smiType; + SmiModule *smiModule; + SmiElement *smiElement = NULL; + char *idlNodeName; + char *idlChildNodeName, *idlChildTypeName; + int cnt = 0; + + smiModule = smiGetNodeModule(smiNode); + idlNodeName = getIdlNodeName(smiModule->name, smiNode->name); + + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "%s create_%s (\n", idlNodeName, idlNodeName); + + /* First include the INDEXes as parameters to allow row creation + for rows with not-accesible index objects. */ + + if (smiNode->indexkind == SMI_INDEX_INDEX + || smiNode->indexkind == SMI_INDEX_REORDER) { + for (smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + cnt++; + indexNode = smiGetElementNode(smiElement); + idlChildNodeName = + getIdlNodeName(smiGetNodeModule(indexNode)->name, + indexNode->name); + smiType = smiGetNodeType(indexNode); + idlChildTypeName = getIdlAnyTypeName(indexNode, smiType); + if (cnt > 1) { + fprint(f, ",\n"); + } + fprintSegment(f, 3*INDENT, "in ", 0); + fprint(f, "%s %s", idlChildTypeName, idlChildNodeName); + } + } + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) + && current(childNode->status) + && childNode->access == SMI_ACCESS_READ_WRITE) { + + /* Test if this column is already used as parameter + because it is an INDEX of the row. */ + + if (childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) { + for (smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + indexNode = smiGetElementNode(smiElement); + if (indexNode == childNode) { + break; + } + } + } + + if (! smiElement) { + cnt++; + idlChildNodeName = + getIdlNodeName(smiGetNodeModule(childNode)->name, + childNode->name); + smiType = smiGetNodeType(childNode); + idlChildTypeName = getIdlAnyTypeName(childNode, smiType); + if (cnt > 1) { + fprint(f, ",\n"); + } + fprintSegment(f, 3*INDENT, "in ", 0); + fprint(f, "%s %s", idlChildTypeName, idlChildNodeName); + } + } + } + fprint(f, "\n"); + + fprintSegment(f, 2*INDENT, ") raises (\n", 0); + fprintSegment(f, 3*INDENT, "SNMPMgmt::AlreadyExists,\n", 0); + fprintSegment(f, 3*INDENT, "CosLifeCycle::InvalidCriteria,\n", 0); + fprintSegment(f, 3*INDENT, "CosLifeCycle::CannotMeetCriteria\n", 0); + fprintSegment(f, 2*INDENT, ");\n", 0); +} + + + +static void fprintFactory(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + if (isCreatable(smiNode)) { + cnt++; + if (cnt == 1) { + fprintSegment(f, INDENT, "interface SmiEntryFactory : " + "SNMPMgmt::GenericFactory {\n", 0); + } + fprintConstructor(f, smiNode); + } + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void fprintNotificationVBTypes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *listSmiNode; + SmiElement *smiElement; + SmiType *smiType; + char *idlTypeName; + char *idlVBTypeName; + int isnew; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + listSmiNode = smiGetElementNode(smiElement); + idlVBTypeName = getIdlVBTypeName( + smiGetNodeModule(listSmiNode)->name, + listSmiNode->name, &isnew); + if (isnew && listSmiNode) { + smiType = smiGetNodeType(listSmiNode); + if (smiType) { + idlTypeName = getIdlAnyTypeName(listSmiNode, smiType); + fprintSegment(f, INDENT, "struct ", 0); + fprint(f, "%s {\n", idlVBTypeName); + fprintSegment(f, 2*INDENT, "string var_name;\n", 0); + fprintSegment(f, 2*INDENT, "string var_index;\n", 0); + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "%s %s;\n", idlTypeName, + smiGetElementNode(smiElement)->name); + fprintSegment(f, INDENT, "};\n\n", 0); + } + } + } + } +} + + + +static void fprintNotificationTypes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + char *idlTypeName; + char *idlVBTypeName; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if ((smiElement = smiGetFirstElement(smiNode))) { + idlTypeName = getIdlTypeName(smiGetNodeModule(smiNode)->name, + smiNode->name); + fprintSegment(f, INDENT, "struct ", 0); + fprint(f, "%s {\n", idlTypeName); + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + idlVBTypeName = getIdlVBTypeName(smiGetNodeModule( + smiGetElementNode(smiElement))->name, + smiGetElementNode(smiElement)->name, NULL); + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "%s %s;\n", idlVBTypeName, + smiGetElementNode(smiElement)->name); + } + fprintSegment(f, INDENT, "};\n\n", 0); + } + } +} + + + +static void fprintPushNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + char *idlNodeName; + char *idlTypeName; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + cnt++; + if (cnt == 1) { + if (! silent) { + fprintSegment(f, INDENT, + "/* typed push event communication */\n", 0); + } + fprintSegment(f, INDENT, "interface Notifications : ", 0); + fprint(f, "SNMPMgmt::Notifications {\n"); + } + idlNodeName = getIdlNodeName(smiModule->name, + smiNode->name); + if (! silent) { + fprintDescription(f, smiNode, 2*INDENT); + } + fprintSegment(f, 2*INDENT, "void ", 0); + fprint(f, "%s (\n", idlNodeName); + fprintSegment(f, 3*INDENT, "in CosNaming::Name src_entry_name,\n", 0); + fprintSegment(f, 3*INDENT, "in CORBA::ScopedName event_type,\n", 0); + fprintSegment(f, 3*INDENT, "in ASN1_GeneralizedTime event_time", 0); + if ((smiElement = smiGetFirstElement(smiNode))) { + idlTypeName = getIdlTypeName(smiModule->name, smiNode->name); + fprint(f, ",\n"); + fprintSegment(f, 3*INDENT, "in ", 0); + fprint(f, "%s notification_info", idlTypeName); + } + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, ");\n", 0); + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void fprintPullNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + int cnt = 0; + char *idlNodeName; + char *idlTypeName; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + cnt++; + if (cnt == 1) { + if (! silent) { + fprintSegment(f, INDENT, + "/* typed pull event communication */\n", 0); + } + fprintSegment(f, INDENT, "interface PullNotifications : ", 0); + fprint(f, "SNMPMgmt::PullNotifications {\n"); + } + idlNodeName = getIdlNodeName(smiModule->name, smiNode->name); + + if (! silent) { + fprintDescription(f, smiNode, 2*INDENT); + } + fprintSegment(f, 2*INDENT, "void ", 0); + fprint(f, "pull_%s (\n", idlNodeName); + fprintSegment(f, 3*INDENT, "out CosNaming::Name src_entry_name,\n", 0); + fprintSegment(f, 3*INDENT, "out CORBA::ScopedName event_type,\n", 0); + fprintSegment(f, 3*INDENT, "out ASN1_GeneralizedTime event_time", 0); + if ((smiElement = smiGetFirstElement(smiNode))) { + idlTypeName = getIdlTypeName(smiModule->name, smiNode->name); + fprint(f, ",\n"); + fprintSegment(f, 3*INDENT, "out ", 0); + fprint(f, "%s notification_info", idlTypeName); + } + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, ");\n", 0); + fprintSegment(f, 2*INDENT, "boolean ", 0); + fprint(f, "try_%s (\n", idlNodeName); + fprintSegment(f, 3*INDENT, "out CosNaming::Name src_entry_name,\n", 0); + fprintSegment(f, 3*INDENT, "out CORBA::ScopedName event_type,\n", 0); + fprintSegment(f, 3*INDENT, "out ASN1_GeneralizedTime event_time", 0); + if ((smiElement = smiGetFirstElement(smiNode))) { + char *idlTypeName; + idlTypeName = getIdlTypeName(smiModule->name, smiNode->name); + fprint(f, ",\n"); + fprintSegment(f, 3*INDENT, "out ", 0); + fprint(f, "%s notification_info", idlTypeName); + } + fprint(f, "\n"); + fprintSegment(f, 2*INDENT, ");\n", 0); + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void fprintDefVals(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + int cnt = 0; + char *idlTypeName; + + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + if (smiNode->value.basetype != SMI_BASETYPE_UNKNOWN) { + smiType = smiGetNodeType(smiNode); + if (smiType) { + cnt++; + if (cnt == 1) { + fprintSegment(f, INDENT, "/* pseudo */\n", 0); + fprintSegment(f, INDENT, "interface DefaultValues {\n", 0); + } + if (! silent) { + fprintSegment(f, 2*INDENT, "/* DEFVAL: ", 0); + fprint(f, " %s */\n", + getValueString(&smiNode->value, smiType)); + } + fprintSegment(f, 2*INDENT, "", 0); + idlTypeName = getIdlAnyTypeName(smiNode, smiType); + fprint(f, "%s %s();\n\n", idlTypeName, smiNode->name); + } + } + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void fprintDisplayHints(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + int cnt = 0; + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (current(smiType->status) && smiType->format) { + cnt++; + if (cnt == 1) { + fprintSegment(f, INDENT, "/* pseudo */\n", 0); + fprintSegment(f, INDENT, "interface TextualConventions {\n", 0); + } + fprint(f, "\n"); + if (! silent) { + fprintSegment(f, 2*INDENT, "/*\n", 0); + if (smiType->description) { + fprintMultiline(f, smiType->description); + } + if (smiType->reference) { + fprintSegment(f, 2*INDENT, "REFERENCE:", 0); + fprint(f, "\n"); + fprintMultilineString(f, smiType->reference); + } + if (smiType->format) { + fprintSegment(f, 2*INDENT, "DISPLAY-HINT:", 0); + fprint(f, " %s\n", smiType->format); + } + fprintSegment(f, 2*INDENT, "*/\n", 0); + } + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "string %sToString (in %s Value);\n", smiType->name, + getIdlTypeName(smiGetTypeModule(smiType)->name, + smiType->name)); + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "%s %sFromString (in string str);\n", + getIdlTypeName(smiGetTypeModule(smiType)->name, + smiType->name), + smiType->name); + } + } + + if (cnt) { + fprintSegment(f, INDENT, "};\n\n", 0); + } +} + + + +static void dumpIdl(SmiModule *smiModule) +{ + char *idlModuleName; + FILE *f; + SmiRevision *smiRevision; + char *date; + + f = createFile(getIdlModuleName(smiModule->name), ".idl"); + if (! f) { + return; + } + + fprintf(f, + "/* \t\t\t\t\t\t-- DO NOT EDIT --\n" + " * Generated by smidump version " SMI_VERSION_STRING ":\n"); + + fprintf(f, " * smidump -f corba %s\n *\n", smiModule->name); + + fprintf(f, + " * Derived from %s:\n", smiModule->name); + fprintCommentString(f, smiModule->description); + + for (smiRevision = smiGetFirstRevision(smiModule); + smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + date = getStringTime(smiRevision->date); + fprintf(f, + " *\n" + " * Revision %s:\n", date); + fprintCommentString(f, smiRevision->description); + } + + fprintf(f, + " *\n * $I" "d$\n" + " */\n" + "\n"); + + idlModuleName = getIdlModuleName(smiModule->name); + createImportList(smiModule); + + fprint(f, "#ifndef _%s_IDL_\n", idlModuleName); + fprint(f, "#define _%s_IDL_\n\n", idlModuleName); + + fprintIncludes(f, smiModule); + + fprint(f, "module %s {\n\n", idlModuleName); + + fprintImportedTypedefs(f, smiModule); + fprintModule(f, smiModule); + fprintTypedefs(f, smiModule); + fprintInterfaces(f, smiModule); + fprintNotificationVBTypes(f, smiModule); + fprintNotificationTypes(f, smiModule); + fprintPushNotifications(f, smiModule); + fprintPullNotifications(f, smiModule); + fprintFactory(f, smiModule); + fprintDefVals(f, smiModule); + fprintDisplayHints(f, smiModule); + + fprint(f, "};\n\n"); + fprint(f, "#endif /* !_%s_IDL_ */\n", idlModuleName); + + freeImportList(); + dictFree(&idlModuleNameList); + dictFree(&idlNodeNameList); + dictFree(&idlTypeNameList); + dictFree(&idlVBTypeNameList); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + + +static void fprintNameAndOid(FILE *f, SmiNode *smiNode, SmiNode *smiParentNode) +{ + unsigned int i; + char *idlModuleName; + + idlModuleName = getIdlModuleName(smiGetNodeModule(smiNode)->name); + + if (smiParentNode) { + fprint(f, "::%s::%s::%s ", + idlModuleName, smiParentNode->name, smiNode->name); + } else { + fprint(f, "::%s::%s ", idlModuleName, smiNode->name); + } + for (i = 0; i < smiNode->oidlen; i++) { + fprint(f, "%s%u", i ? "." : "", smiNode->oid[i]); + } + fprint(f, " "); +} + + + +static void dumpOid(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + FILE *f; + + f = createFile(getIdlModuleName(smiModule->name), ".oid"); + if (! f) { + return; + } + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + if (isGroup(smiNode)) { + fprintNameAndOid(f, smiNode, NULL); + fprint(f, "Group not-accessible\n"); + /* XXX what if the node is also of SMI_NODEKIND_MODULE ?? */ + continue; + } + + smiType = smiGetNodeType(smiNode); + + switch (smiNode->nodekind) { + case SMI_NODEKIND_NODE: + if (current(smiNode->status)) { + fprintNameAndOid(f, smiNode, NULL); + fprint(f, "ASN1_ObjectIdentifier not-accessible\n"); + } + break; + case SMI_NODEKIND_SCALAR: + if (smiType && current(smiNode->status)) { + SmiNode *smiParentNode = smiGetParentNode(smiNode); + fprintNameAndOid(f, smiNode, smiParentNode); + fprint(f, "%s %s\n", + getBaseTypeString(smiType->basetype), + getAccessString(smiNode->access, 0)); + } + break; + case SMI_NODEKIND_TABLE: + if (current(smiNode->status)) { + fprintNameAndOid(f, smiNode, NULL); + fprint(f, "Table not-accessible\n"); + } + break; + case SMI_NODEKIND_ROW: + if (current(smiNode->status)) { + fprintNameAndOid(f, smiNode, NULL); + fprint(f, "TableEntry not-accessible\n"); + } + break; + case SMI_NODEKIND_COLUMN: + if (smiType && current(smiNode->status)) { + SmiNode *smiParentNode = smiGetParentNode(smiNode); + int create = smiParentNode ? smiParentNode->create : 0; + fprintNameAndOid(f, smiNode, smiParentNode); + fprint(f, "%s %s\n", + getBaseTypeString(smiType->basetype), + getAccessString(smiNode->access, create)); + } + break; + case SMI_NODEKIND_NOTIFICATION: + if (current(smiNode->status)) { + SmiNode *smiParentNode = smiGetParentNode(smiNode); + fprintNameAndOid(f, smiNode, smiParentNode); + fprint(f, "Notification not-accessible\n"); + } + break; + case SMI_NODEKIND_GROUP: + break; + case SMI_NODEKIND_COMPLIANCE: + break; + } + } + + dictFree(&idlModuleNameList); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + +static void dumpCorba(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + for (i = 0; i < modc; i++) { + dumpIdl(modv[i]); + dumpOid(modv[i]); + } +} + + + +void initCorba() +{ + + static SmidumpDriver driver = { + "corba", + dumpCorba, + 0, + SMIDUMP_DRIVER_CANT_UNITE | SMIDUMP_DRIVER_CANT_OUTPUT, + "corba IDL interface and OID definitions (JIDM)", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-fig.c b/tools/dump-fig.c new file mode 100644 index 0000000..0075793 --- /dev/null +++ b/tools/dump-fig.c @@ -0,0 +1,220 @@ +/* + * dump-fig.c -- + * + * Operations to dump graphic representation of MIBs in fig format. + * + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-fig.c 1050 2000-11-29 16:34:45Z strauss $ + */ + +#include + +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +#define X_OFFSET 225 +#define Y_OFFSET 225 +#define X_INDENT 225 +#define Y_INDENT 225 + + + +static void setupPage() +{ + printf("#FIG 3.2\n" + "#\n" + "# This FIG file has been generated by smidump " SMI_VERSION_STRING + ". Do not edit.\n#\n" + "Landscape\n" + "Center\n" + "Metric\n" + "A4\n" + "50.00\n" + "Single\n" + "-1\n" + "1200 2\n"); +} + + + +static void printString(int x, int y, int angle, char *string) +{ + int height = 180, length = 22; + + printf("4 0 0 0 0 18 12 0.0 4 %d %d %d %d %s\\001\n", + height, length, x, y, string); +} + + + +static int isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_TABLE) + && childNode->status == SMI_STATUS_CURRENT) { + return 1; + } + } + + return 0; +} + + + +static void printGroup(int *x, int *y, SmiNode *smiNode) +{ + SmiNode *childNode; + char string[4096]; + + *y += Y_OFFSET; + printString(*x, *y, 0, smiNode->name); + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) { + if (childNode->status != SMI_STATUS_OBSOLETE) { + *y += Y_OFFSET; + sprintf(string, "%s(%d)", childNode->name, + childNode->oid[childNode->oidlen-1]); + printString(*x + X_INDENT, *y, 0, string); + } + } + } + *y += Y_OFFSET; +} + + + +static void printGroups(int *x, int *y, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + printGroup(x, y, smiNode); + } + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printGroup(x, y, smiNode); + } + } +} + + + +void dumpFigTree(Module *module) +{ + SmiModule *smiModule; + int x, y; + + smiModule = module->smiModule; + + setupPage(); + + x = X_OFFSET, y = Y_OFFSET; + printGroups(&x, &y, smiModule); +} + + + +static void printClass(int *x, int *y, SmiNode *smiNode) +{ + SmiNode *childNode; + SmiType *smiType; + char string[4096]; + + *y += Y_OFFSET; + printString(*x, *y, 0, smiNode->name); + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_COLUMN) { + if (childNode->status != SMI_STATUS_OBSOLETE) { + smiType = smiGetNodeType(childNode); + *y += Y_OFFSET; + sprintf(string, "%s : %s", childNode->name, smiType->name); + printString(*x + X_INDENT, *y, 0, string); + } + } + } + *y += Y_OFFSET; +} + + + +static void printClasses(int *x, int *y, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + printClass(x, y, smiNode); + } + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printClass(x, y, smiNode); + } + } +} + + + +void dumpFigUml(Module *module) +{ + SmiModule *smiModule; + int x, y; + + smiModule = module->smiModule; + + setupPage(); + + x = X_OFFSET, y = Y_OFFSET; + printClasses(&x, &y, smiModule); +} + + + +void init_fig() +{ + static SmidumpDriver driverTree = { + "fig-tree", + dumpFigTree, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE | SMIDUMP_DRIVER_CANT_OUTPUT, + "tree graphics in xfig fig format", + NULL, + NULL + }; + static SmidumpDriver driverUml = { + "fig-uml", + dumpFigUml, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE | SMIDUMP_DRIVER_CANT_OUTPUT, + "UML graphics in xfig fig format", + NULL, + NULL + }; + + smidumpRegisterDriver(&driverTree); + smidumpRegisterDriver(&driverUml); +} diff --git a/tools/dump-identifiers.c b/tools/dump-identifiers.c new file mode 100644 index 0000000..bca18aa --- /dev/null +++ b/tools/dump-identifiers.c @@ -0,0 +1,226 @@ +/* + * dump-identifiers.c -- + * + * Operations to dump flat identifier lists for SMI modules. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-identifiers.c 5758 2006-08-16 21:10:05Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int moduleLen = 0; +static int identifierLen = 0; + +static int showlines = 0; +static int showpath = 0; +static int ctagfmt = 0; + + +static char *smiStringNodekind(SmiNodekind nodekind) +{ + return + (nodekind == SMI_NODEKIND_UNKNOWN) ? "" : + (nodekind == SMI_NODEKIND_NODE) ? "node" : + (nodekind == SMI_NODEKIND_SCALAR) ? "scalar" : + (nodekind == SMI_NODEKIND_TABLE) ? "table" : + (nodekind == SMI_NODEKIND_ROW) ? "row" : + (nodekind == SMI_NODEKIND_COLUMN) ? "column" : + (nodekind == SMI_NODEKIND_NOTIFICATION) ? "notification" : + (nodekind == SMI_NODEKIND_GROUP) ? "group" : + (nodekind == SMI_NODEKIND_COMPLIANCE) ? "compliance" : + (nodekind == SMI_NODEKIND_CAPABILITIES) ? "capabilities" : + ""; +} + + + +static void fprintNodeIdentifiers(FILE *f, int modc, SmiModule **modv) +{ + SmiNode *smiNode; + unsigned int j; + int i; + + for (i = 0; i < modc; i++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->name) { + if (ctagfmt) { + fprintf(f, "%*s", -identifierLen, smiNode->name); + fprintf(f, " %d", smiGetNodeLine(smiNode)); + fprintf(f, " %*s", -moduleLen, modv[i]->path); + fprintf(f, " %s OBJECT-TYPE -- %s\n", smiNode->name, + smiStringNodekind(smiNode->nodekind)); + } else { + fprintf(f, "%*s", + -moduleLen, showpath ? modv[i]->path : modv[i]->name); + if (showlines) { + fprintf(f, ":%d:", smiGetNodeLine(smiNode)); + } + fprintf(f, " %*s %-12s ", -identifierLen, smiNode->name, + smiStringNodekind(smiNode->nodekind)); + for (j = 0; j < smiNode->oidlen; j++) { + fprintf(f, j ? ".%u" : "%u", smiNode->oid[j]); + } + fprintf(f, "\n"); + } + } + } + } +} + + + +static void fprintTypeIdentifiers(FILE *f, int modc, SmiModule **modv) +{ + SmiType *smiType; + int i; + + for (i = 0; i < modc; i++) { + for (smiType = smiGetFirstType(modv[i]); + smiType; + smiType = smiGetNextType(smiType)) { + if (smiType->name) { + if (ctagfmt) { + fprintf(f, "%*s", -identifierLen, smiType->name); + fprintf(f, " %d", smiGetTypeLine(smiType)); + fprintf(f, " %*s", -moduleLen, modv[i]->path); + fprintf(f, " %s TEXTUAL-CONVENTION\n", smiType->name); + } else { + fprintf(f, "%*s", + -moduleLen, showpath ? modv[i]->path : modv[i]->name); + if (showlines) { + fprintf(f, ":%d:", smiGetTypeLine(smiType)); + } + fprintf(f, " %*s %-12s\n", -identifierLen, smiType->name, + "type"); + } + } + } + } +} + + + +static void dumpIdentifiers(int modc, SmiModule **modv, int flags, + char *output) +{ + SmiNode *smiNode; + int i, len; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (moduleLen = 0, identifierLen = 0, i = 0; i < modc; i++) { + if (showpath) { + len = strlen(modv[i]->path); + } else { + len = strlen(modv[i]->name); + } + if (len > moduleLen) moduleLen = len; + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->name) { + len = strlen(smiNode->name); + if (len > identifierLen) identifierLen = len; + } + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# united list of identifiers (generated by smidump " + SMI_VERSION_STRING ")\n\n"); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintTypeIdentifiers(f, modc, modv); + fprintNodeIdentifiers(f, modc, modv); + + } else { + + for (i = 0; i < modc; i++) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s list of identifiers (generated by smidump " + SMI_VERSION_STRING ")\n\n", + modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintTypeIdentifiers(f, 1, &(modv[i])); + fprintNodeIdentifiers(f, 1, &(modv[i])); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initIdentifiers() +{ + + static SmidumpDriverOption opt[] = { + { "lines", OPT_FLAG, &showlines, 0, + "show line numbers"}, + { "path", OPT_FLAG, &showpath, 0, + "show file path instead of module name"}, + { "ctag", OPT_FLAG, &ctagfmt, 0, + "show symbols in [g]ctag format"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "identifiers", + dumpIdentifiers, + SMI_FLAG_NODESCR, + 0, + "list of all identifiers", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-imports.c b/tools/dump-imports.c new file mode 100644 index 0000000..175a659 --- /dev/null +++ b/tools/dump-imports.c @@ -0,0 +1,199 @@ +/* + * dump-imports.c -- + * + * Operations to dump import hierarchies in a human readable format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-imports.c 5758 2006-08-16 21:10:05Z schoenw $ + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +typedef struct Imports { + char *module; + int count; + struct Imports *nextPtr; +} Imports; + + + +static Imports *getImports(SmiModule *smiModule, int *n) +{ + SmiImport *smiImport; + Imports *imports; + int i; + size_t size; + + for (smiImport = smiGetFirstImport(smiModule), *n = 0; + smiImport; smiImport = smiGetNextImport(smiImport)) { + (*n)++; + } + + size = (*n + 1) * sizeof(Imports); + imports = xmalloc(size); + memset(imports, 0, size); + + for (smiImport = smiGetFirstImport(smiModule), *n = 0; + smiImport; smiImport = smiGetNextImport(smiImport)) { + + if (!smiImport->module) continue; + + for (i = 0; i < *n; i++) { + if (strcmp(smiImport->module, imports[i].module) == 0) { + break; + } + } + + if (i == *n) { + imports[i].module = xstrdup(smiImport->module); + if (imports[i].module) { + imports[i].count = 0; + (*n)++; + } + } + imports[i].count++; + } + + return imports; +} + + + +static void freeImports(Imports *imports, int n) +{ + int i; + + for (i = 0; i < n; i++) { + xfree(imports[i].module); + } + + xfree(imports); +} + + + +static int fprintImports(FILE *f, SmiModule *smiModule, char *prefix, + Imports *backtrace) +{ + SmiModule *smiModule2; + Imports *imports, *imp; + int i, n, recurse = 0, done = 0; + + for (imp = backtrace; imp; imp = imp->nextPtr) { + if (strcmp(imp->module, smiModule->name) == 0) { + fprintf(stderr, "%s (recursion - aborted)\n", prefix); + return 0; + } + } + + imp = (Imports *) xmalloc(sizeof(Imports)); + imp->module = smiModule->name; + imp->nextPtr = backtrace; + backtrace = imp; + + imports = getImports(smiModule, &n); + + for (i = 0; i < n; i++) { + char *newprefix; + + smiModule2 = smiGetModule(imports[i].module); + recurse = (NULL == smiGetFirstImport(smiModule2)); + if (recurse) { + fprintf(f, "%s |\n", prefix); + } + fprintf(f, "%s +--%s [%d identifier%s]\n", prefix, imports[i].module, + imports[i].count, imports[i].count > 1 ? "s" : ""); + newprefix = xmalloc(strlen(prefix)+10); + strcpy(newprefix, prefix); + if (i == n-1) { + strcat(newprefix, " "); + } else { + strcat(newprefix, " |"); + } + done = fprintImports(f, smiModule2, newprefix, backtrace); + if (! recurse && done) { + if (i == n-1) { + fprintf(f, "%s \n", prefix); + } else { + fprintf(f, "%s |\n", prefix); + } + } + xfree(newprefix); + } + + freeImports(imports, n); + xfree(backtrace); + + return recurse; +} + + + +static void dumpImports(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s imports tree (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + fprintf(f, "%s\n", modv[i]->name); + fprintImports(f, modv[i], "", NULL); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initImports() +{ + + static SmidumpDriver driver = { + "imports", + dumpImports, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE, + "recursive list of all imports", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-jax.c b/tools/dump-jax.c new file mode 100644 index 0000000..289a342 --- /dev/null +++ b/tools/dump-jax.c @@ -0,0 +1,1528 @@ +/* + * dump-jax.c -- + * + * Operations to generate JAX AgentX class files. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-jax.c 1455 2002-10-30 09:17:37Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + + +static char *package = NULL; + + + +static struct { + SmiBasetype basetype; + char *smitype; + char *javatype; + char *agentxtype; +} convertType[] = { + { SMI_BASETYPE_OCTETSTRING, "Opaque", "byte[]", "OPAQUE" }, + { SMI_BASETYPE_UNSIGNED32, "TimeTicks", "long", "TIMETICKS" }, + { SMI_BASETYPE_UNSIGNED32, "Counter", "long", "COUNTER32" }, + { SMI_BASETYPE_UNSIGNED32, "Counter32", "long", "COUNTER32" }, + { SMI_BASETYPE_OCTETSTRING, "IpAddress", "byte[]", "IPADDRESS" }, + { SMI_BASETYPE_INTEGER32, NULL, "int", "INTEGER" }, + { SMI_BASETYPE_OCTETSTRING, NULL, "byte[]", "OCTETSTRING" }, + { SMI_BASETYPE_OBJECTIDENTIFIER, NULL, "AgentXOID", "OBJECTIDENTIFIER" }, + { SMI_BASETYPE_UNSIGNED32, NULL, "long", "GAUGE32" }, + { SMI_BASETYPE_INTEGER64, NULL, "long", "INTEGER" }, + { SMI_BASETYPE_UNSIGNED64, NULL, "long", "COUNTER64" }, + { SMI_BASETYPE_ENUM, NULL, "int", "INTEGER" }, + { SMI_BASETYPE_BITS, NULL, "byte[]", "OCTETSTRING" }, + { SMI_BASETYPE_UNKNOWN, NULL, NULL, NULL } +}; + + + +static char* translate1Upper(char *m) +{ + static char *sarray[5]; + static int spos = 0; + char *s; + int i; + + s = sarray[spos]; + spos++; + if (spos == 5) spos = 0; + if (s) xfree(s); + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + } + if (islower((int) s[0])) { + s[0] = toupper(s[0]); + } + + return s; +} + + + +static FILE * createFile(char *name, char *suffix) +{ + char *fullname; + FILE *f; + + fullname = xmalloc(strlen(name) + (suffix ? strlen(suffix) : 0) + 2); + strcpy(fullname, name); + if (suffix) { + strcat(fullname, suffix); + } + if (!access(fullname, R_OK)) { + fprintf(stderr, "smidump: %s already exists\n", fullname); + xfree(fullname); + return NULL; + } + f = fopen(fullname, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", fullname); + perror(NULL); + xfree(fullname); + exit(1); + } + xfree(fullname); + return f; +} + + + +static char *getJavaType(SmiType *smiType) +{ + int i; + + if (smiType) { + for(i=0; convertType[i].basetype != SMI_BASETYPE_UNKNOWN; i++) { + if (smiType->basetype == convertType[i].basetype) + return convertType[i].javatype; + } + } + + return ""; +} + + + +static char *getAgentXType(SmiType *smiType) +{ + int i; + SmiType *parentType; + SmiModule *smiModule; + + if (smiType) { + + parentType = smiGetParentType(smiType); + if (parentType) { + smiModule = smiGetTypeModule(parentType); + if (smiModule && strlen(smiModule->name)) { + smiType = parentType; + } + } + + for(i=0; convertType[i].basetype != SMI_BASETYPE_UNKNOWN; i++) { + if (smiType->basetype == convertType[i].basetype) { + if (!convertType[i].smitype) { + return convertType[i].agentxtype; + } + if ((smiType->name) && + (!strcmp(convertType[i].smitype, smiType->name))) { + return convertType[i].agentxtype; + } + } + } + } + + return ""; +} + + + +static int isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + return 1; + } + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR) { + return 1; + } + } + + return 0; +} + + + +static int isAccessible(SmiNode *groupNode) +{ + SmiNode *smiNode; + int num = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if ((smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + } + } + + return num; +} + + + +static unsigned int getMaxSize(SmiType *smiType) +{ + SmiRange *smiRange; + SmiType *parentType; + unsigned int max = 0, size; + + switch (smiType->basetype) { + case SMI_BASETYPE_OCTETSTRING: + size = 65535; + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + size = 128; + break; + default: + return 0xffffffff; + } + + for(smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + if (smiRange->maxValue.value.unsigned32 > max) { + max = smiRange->maxValue.value.unsigned32; + } + } + if (max > 0 && max < size) { + size = max; + } + + parentType = smiGetParentType(smiType); + if (parentType) { + unsigned int psize = getMaxSize(parentType); + if (psize < size) { + size = psize; + } + } + + return size; +} + + + +static void dumpTable(SmiNode *smiNode) +{ + FILE *f; + SmiNode *parentNode, *columnNode; + unsigned int i; + char *vb_type; + + parentNode = smiGetParentNode(smiNode); + + f = createFile(translate1Upper(parentNode->name), ".java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING "." " Do not edit!\n" + " * It is intended to be used within a Java AgentX sub-agent" + " environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + + fprintf(f, + "/**\n" + " This class represents a Java AgentX (JAX) implementation of\n" + " the table %s defined in %s.\n" + "\n" + " @version 1\n" + " @author smidump " SMI_VERSION_STRING "\n" + " @see AgentXTable\n" + " */\n\n", parentNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import java.util.Vector;\n" + "\n" + "import jax.AgentXOID;\n" + "import jax.AgentXVarBind;\n" + "import jax.AgentXResponsePDU;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXTable;\n" + "import jax.AgentXEntry;\n" + "\n"); + + fprintf(f, "public class %s extends AgentXTable\n{\n\n", + translate1Upper(parentNode->name)); + + fprintf(f, + " // entry OID\n" + " private final static long[] OID = {"); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", smiNode->oid[i]); + } + fprintf(f, "};\n\n"); + + fprintf(f, + " // constructors\n" + " public %s()\n", translate1Upper(parentNode->name)); + fprintf(f, + " {\n" + " oid = new AgentXOID(OID);\n" + "\n" + " // register implemented columns\n"); + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (columnNode->access >= SMI_ACCESS_READ_ONLY) { + fprintf(f, + " columns.addElement(new Long(%d));\n", + columnNode->oid[columnNode->oidlen-1]); + } + } + fprintf(f, + " }\n\n"); + + fprintf(f, + " public %s(boolean shared)\n", + translate1Upper(parentNode->name)); + fprintf(f, + " {\n" + " super(shared);\n" + "\n" + " oid = new AgentXOID(OID);\n" + "\n" + " // register implemented columns\n"); + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (columnNode->access >= SMI_ACCESS_READ_ONLY) { + fprintf(f, + " columns.addElement(new Long(%d));\n", + columnNode->oid[columnNode->oidlen-1]); + } + } + fprintf(f, + " }\n\n"); + + fprintf(f, + " public AgentXVarBind getVarBind(AgentXEntry entry," + " long column)\n"); + fprintf(f, + " {\n" + " AgentXOID oid = new AgentXOID(getOID(), column, entry.getInstance());\n" + "\n" + " switch ((int)column) {\n"); + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (columnNode->access >= SMI_ACCESS_NOTIFY) { + fprintf(f, + " case %d: // %s\n", + columnNode->oid[columnNode->oidlen-1], + columnNode->name); + fprintf(f, + " {\n"); + fprintf(f, + " %s value = ((%s)entry).get_%s();\n", + getJavaType(smiGetNodeType(columnNode)), + translate1Upper(smiNode->name), + columnNode->name); + fprintf(f, + " return new AgentXVarBind(oid, " + "AgentXVarBind.%s, value);\n", + getAgentXType(smiGetNodeType(columnNode))); + + fprintf(f, + " }\n"); + } + } + + fprintf(f, + " }\n" + "\n" + " return null;\n" + " }\n\n"); + + fprintf(f, + " public int setEntry(AgentXSetPhase phase,\n" + " AgentXEntry entry,\n" + " long column,\n" + " AgentXVarBind vb)\n"); + fprintf(f, + " {\n" + "\n" + " switch ((int)column) {\n"); + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (columnNode->access >= SMI_ACCESS_READ_WRITE) { + fprintf(f, + " case %d: // %s\n", + columnNode->oid[columnNode->oidlen-1], + columnNode->name); + fprintf(f, + " {\n"); + fprintf(f, + " if (vb.getType() != AgentXVarBind.%s)\n" + " return AgentXResponsePDU.WRONG_TYPE;\n", + getAgentXType(smiGetNodeType(columnNode))); + vb_type = getJavaType(smiGetNodeType(columnNode)); + vb_type = strcmp("byte[]", vb_type) ? vb_type : "bytes"; + fprintf(f, + " else\n" + " return ((%s)entry).set_%s(phase, vb.%sValue());\n", + translate1Upper(smiNode->name), + columnNode->name, + vb_type); + + fprintf(f, + " }\n"); + } + } + + fprintf(f, + " }\n" + "\n" + " return AgentXResponsePDU.NOT_WRITABLE;\n" + " }\n\n"); + + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + + +static void dumpEntry(SmiNode *smiNode) +{ + FILE *f; + SmiNode *columnNode, *indexNode; + SmiType *smiType; + SmiRange *smiRange; + SmiElement *element; + int cnt; + char *p; + char init[20]; + + f = createFile(translate1Upper(smiNode->name), ".java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING "." " Do not edit!\n" + " * It is intended to be used within a Java AgentX sub-agent" + " environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + + fprintf(f, + "/**\n" + " This class represents a Java AgentX (JAX) implementation of\n" + " the table row %s defined in %s.\n" + "\n" + " @version 1\n" + " @author smidump " SMI_VERSION_STRING "\n" + " @see AgentXTable, AgentXEntry\n" + " */\n\n", smiNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import jax.AgentXOID;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXResponsePDU;\n" + "import jax.AgentXEntry;\n" + "\n"); + + fprintf(f, "public class %s extends AgentXEntry\n{\n\n", + translate1Upper(smiNode->name)); + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + + smiType = smiGetNodeType(columnNode); + if (!smiType) continue; + p = getJavaType(smiType); + if (!strcmp(p, "long")) { + strcpy(init, "0"); + } else if (!strcmp(p, "int")) { + strcpy(init, "0"); + } else if (!strcmp(p, "byte[]")) { + smiRange = smiGetFirstRange(smiType); + if ((smiRange && (!smiGetNextRange(smiRange)) && + (!memcmp(&smiRange->minValue, &smiRange->maxValue, + sizeof(SmiValue))))) { + sprintf(init, "new byte[%ld]", + smiRange->maxValue.value.integer32); + } else { + sprintf(init, "new byte[0]"); + } + } else if (!strcmp(p, "AgentXOID")) { + strcpy(init, "new AgentXOID()"); + } else { + strcpy(init, "null"); + } + fprintf(f, + " protected %s %s = %s;\n", + getJavaType(smiGetNodeType(columnNode)), + columnNode->name, + init); + + if (columnNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " protected %s undo_%s = %s;\n", + getJavaType(smiGetNodeType(columnNode)), + columnNode->name, + init); + } + } + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + if (!strcmp(columnNode->name, indexNode->name)) + break; + } + if (!columnNode) { + if (!cnt) { + fprintf(f, " // foreign indices\n"); + } + cnt++; + fprintf(f, " protected %s %s;\n", + getJavaType(smiGetNodeType(indexNode)), + indexNode->name); + } + } + fprintf(f, "\n"); + + fprintf(f, + " public %s(", translate1Upper(smiNode->name)); + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + if (cnt) { + fprintf(f, ",\n%*s", 4 + 7 + 1 + strlen(smiNode->name), " "); + } + cnt++; + indexNode = smiGetElementNode(element); + fprintf(f, "%s %s", + getJavaType(smiGetNodeType(indexNode)), + indexNode->name); + } + fprintf(f, ")\n" + " {\n"); + for (element = smiGetFirstElement(smiNode); + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + fprintf(f, " this.%s = %s;\n", + indexNode->name, indexNode->name); + } + fprintf(f, "\n"); + for (element = smiGetFirstElement(smiNode); + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + + p = getJavaType(smiGetNodeType(indexNode)); + if (!strcmp(p, "long")) { + fprintf(f, " instance.append(%s);\n", + indexNode->name); + } else if (!strcmp(p, "int")) { + fprintf(f, " instance.append(%s);\n", + indexNode->name); + } else if (!strcmp(p, "byte[]")) { + smiType = smiGetNodeType(indexNode); + smiRange = smiGetFirstRange(smiType); + if ((smiRange && (!smiGetNextRange(smiRange)) && + (!memcmp(&smiRange->minValue, &smiRange->maxValue, + sizeof(SmiValue)))) || + (smiNode->implied && (!smiGetNextElement(element)))) { + fprintf(f, " instance.appendImplied(%s);\n", + indexNode->name); + } else { + fprintf(f, " instance.append(%s);\n", + indexNode->name); + } + } else if (!strcmp(p, "AgentXOID")) { + if (smiNode->implied && (!smiGetNextElement(element))) { + fprintf(f, " instance.appendImplied(%s);\n", + indexNode->name); + } else { + fprintf(f, " instance.append(%s);\n", + indexNode->name); + } + } else { + fprintf(f, " // [smidump: type of %s not supported]\n", + indexNode->name); + } + } + + fprintf(f, + " }\n" + "\n"); + + for (element = smiGetFirstElement(smiNode); + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiGetNodeType(indexNode)), + indexNode->name, indexNode->name); + } + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + smiType = smiGetNodeType(columnNode); + if (columnNode->access >= SMI_ACCESS_NOTIFY) { + for (element = smiGetFirstElement(smiNode); + element; + element = smiGetNextElement(element)) { + indexNode = smiGetElementNode(element); + if (indexNode == columnNode) break; + } + if (!element) { + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiType), + columnNode->name, columnNode->name); + } + } + if (columnNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " public int set_%s(AgentXSetPhase phase, %s value)\n" + " {\n", + columnNode->name, + getJavaType(smiGetNodeType(columnNode))); + fprintf(f, + " switch (phase.getPhase()) {\n" + " case AgentXSetPhase.TEST_SET:\n" + " break;\n" + " case AgentXSetPhase.COMMIT:\n" + " undo_%s = %s;\n", + columnNode->name, + columnNode->name); + if (!strcmp("byte[]", getJavaType(smiGetNodeType(columnNode)))) { + fprintf(f, + " %s = new byte[value.length];\n" + " for(int i = 0; i < value.length; i++)\n" + " %s[i] = value[i];\n", + columnNode->name, + columnNode->name); + } else { + fprintf(f, + " %s = value;\n", + columnNode->name); + } + + fprintf(f, + " break;\n" + " case AgentXSetPhase.UNDO:\n" + " %s = undo_%s;\n" + " break;\n", + columnNode->name, + columnNode->name); + fprintf(f, + " case AgentXSetPhase.CLEANUP:\n"); + if (!strcmp("byte[]",getJavaType(smiGetNodeType(columnNode)))) { + fprintf(f, + " undo_%s = null;\n", + columnNode->name); + } + fprintf(f, + " break;\n" + " default:\n" + " return AgentXResponsePDU.PROCESSING_ERROR;\n" + " }\n" + " return AgentXResponsePDU.NO_ERROR;\n" + " }\n"); + } + } + + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + +static void dumpEntryImpl(SmiNode *smiNode) +{ + FILE *f; + SmiNode *columnNode, *indexNode; + SmiType *smiType; + SmiElement *element; + int cnt; + + f = createFile(translate1Upper(smiNode->name), "Impl.java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING ". It\n" + " * is intended to be edited by the application programmer and\n" + " * to be used within a Java AgentX sub-agent environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + fprintf(f, + "/**\n" + " This class extends the Java AgentX (JAX) implementation of\n" + " the table row %s defined in %s.\n" + " */\n\n", smiNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import jax.AgentXOID;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXResponsePDU;\n" + "import jax.AgentXEntry;\n" + "\n"); + + fprintf(f, "public class %sImpl extends %s\n{\n\n", + translate1Upper(smiNode->name), + translate1Upper(smiNode->name)); + + fprintf(f, + " // constructor\n" + " public %sImpl(", translate1Upper(smiNode->name)); + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + if (cnt) { + fprintf(f, ",\n%*s", 4 + 7 + 1 + strlen(smiNode->name), " "); + } + cnt++; + indexNode = smiGetElementNode(element); + fprintf(f, "%s %s", + getJavaType(smiGetNodeType(indexNode)), + indexNode->name); + } + fprintf(f, ")\n" + " {\n" + " super("); + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + if (cnt) { + fprintf(f, ",\n%*s", 2 + strlen(smiNode->name), " "); + } + cnt++; + indexNode = smiGetElementNode(element); + fprintf(f, "%s", indexNode->name); + } + fprintf(f,");\n"); + + fprintf(f, + " }\n" + "\n"); + + for (columnNode = smiGetFirstChildNode(smiNode); + columnNode; + columnNode = smiGetNextChildNode(columnNode)) { + smiType = smiGetNodeType(columnNode); + if (!smiType) continue; + if (columnNode->access >= SMI_ACCESS_NOTIFY) { + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiType), + columnNode->name, columnNode->name); + } + if (columnNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " public int set_%s(AgentXSetPhase phase, %s value)\n" + " {\n", + columnNode->name, + getJavaType(smiGetNodeType(columnNode))); + fprintf(f, + " switch (phase.getPhase()) {\n" + " case AgentXSetPhase.TEST_SET:\n" + " break;\n" + " case AgentXSetPhase.COMMIT:\n" + " undo_%s = %s;\n", + columnNode->name, + columnNode->name); + if (!strcmp("byte[]", getJavaType(smiGetNodeType(columnNode)))) { + fprintf(f, + " %s = new byte[value.length];\n" + " for(int i = 0; i < value.length; i++)\n" + " %s[i] = value[i];\n", + columnNode->name, + columnNode->name); + } else { + fprintf(f, + " %s = value;\n", + columnNode->name); + } + + fprintf(f, + " break;\n" + " case AgentXSetPhase.UNDO:\n" + " %s = undo_%s;\n" + " break;\n", + columnNode->name, + columnNode->name); + fprintf(f, + " case AgentXSetPhase.CLEANUP:\n"); + if (!strcmp("byte[]",getJavaType(smiGetNodeType(columnNode)))) { + fprintf(f, + " undo_%s = null;\n", + columnNode->name); + } + fprintf(f, + " break;\n" + " default:\n" + " return AgentXResponsePDU.PROCESSING_ERROR;\n" + " }\n" + " return AgentXResponsePDU.NO_ERROR;\n" + " }\n"); + } + } + + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + + +static SmiNode *dumpScalars(SmiNode *smiNode) +{ + FILE *f; + char *vb_type; + SmiNode *parentNode, *currNode; + SmiType *smiType; + SmiRange *smiRange; + unsigned int i; + char *p; + char init[20]; + + parentNode = smiGetParentNode(smiNode); + + f = createFile(translate1Upper(parentNode->name), ".java"); + if (! f) { + return NULL; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING "." " Do not edit!\n" + " * It is intended to be used within a Java AgentX sub-agent" + " environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + fprintf(f, + "/**\n" + " This class represents a Java AgentX (JAX) implementation of\n" + " the scalar group %s defined in %s.\n" + "\n" + " @version 1\n" + " @author smidump " SMI_VERSION_STRING "\n" + " @see AgentXGroup, AgentXScalars\n" + " */\n\n", parentNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import java.util.Vector;\n" + "import java.util.Enumeration;\n" + "import jax.AgentXOID;\n" + "import jax.AgentXVarBind;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXResponsePDU;\n" + "import jax.AgentXScalars;\n" + "\n"); + + fprintf(f, "public class %s extends AgentXScalars\n{\n\n", + translate1Upper(parentNode->name)); + + fprintf(f, + " private final static long[] %sOID = {", + translate1Upper(parentNode->name)); + for (i = 0; i < parentNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", parentNode->oid[i]); + } + fprintf(f, "};\n\n"); + + /* ------- variable definitions */ + + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + fprintf(f, + " protected AgentXOID %sOID;\n" + " protected final static long[] %sName = {", + translate1Upper(currNode->name), + translate1Upper(currNode->name) + ); + for (i = 0; i < currNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", currNode->oid[i]); + } + fprintf(f, ", 0};\n"); + + smiType = smiGetNodeType(currNode); + p = getJavaType(smiType); + if (!strcmp(p, "long")) { + strcpy(init, "0"); + } else if (!strcmp(p, "int")) { + strcpy(init, "0"); + } else if (!strcmp(p, "byte[]")) { + smiRange = smiGetFirstRange(smiType); + if ((smiRange && (!smiGetNextRange(smiRange)) && + (!memcmp(&smiRange->minValue, &smiRange->maxValue, + sizeof(SmiValue))))) { + sprintf(init, "new byte[%ld]", + smiRange->maxValue.value.integer32); + } else { + sprintf(init, "new byte[0]"); + } + } else if (!strcmp(p, "AgentXOID")) { + strcpy(init, "new AgentXOID()"); + } else { + strcpy(init, "null"); + } + fprintf(f, + " protected %s %s = %s;\n", + getJavaType(smiGetNodeType(currNode)), + currNode->name, + init); + + if (currNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " protected %s undo_%s = %s;\n", + getJavaType(smiGetNodeType(currNode)), + currNode->name, + init); + } + } + /* ------- constructor */ + fprintf(f, + " public %s()\n {\n" + " oid = new AgentXOID(%sOID);\n" + " data = new Vector();\n", + translate1Upper(parentNode->name), + translate1Upper(parentNode->name)); + + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + fprintf(f, + " %sOID = new AgentXOID(%sName);\n" + " data.addElement(%sOID);\n", + translate1Upper(currNode->name), + translate1Upper(currNode->name), + translate1Upper(currNode->name)); + } + fprintf(f," }\n\n"); + /* ------- get & set methods */ + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + smiType = smiGetNodeType(currNode); + if (currNode->access >= SMI_ACCESS_NOTIFY) { + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiType), + currNode->name, currNode->name); + } + if (currNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " public int set_%s(AgentXSetPhase phase, %s value)\n" + " {\n", + currNode->name, + getJavaType(smiGetNodeType(currNode))); + fprintf(f, + " switch (phase.getPhase()) {\n" + " case AgentXSetPhase.TEST_SET:\n" + " break;\n" + " case AgentXSetPhase.COMMIT:\n" + " undo_%s = %s;\n", + currNode->name, + currNode->name); + if (!strcmp("byte[]", getJavaType(smiGetNodeType(currNode)))) { + fprintf(f, + " %s = new byte[value.length];\n" + " for(int i = 0; i < value.length; i++)\n" + " %s[i] = value[i];\n", + currNode->name, + currNode->name); + } else { + fprintf(f, + " %s = value;\n", + currNode->name); + } + + fprintf(f, + " break;\n" + " case AgentXSetPhase.UNDO:\n" + " %s = undo_%s;\n" + " break;\n", + currNode->name, + currNode->name); + fprintf(f, + " case AgentXSetPhase.CLEANUP:\n"); + if (!strcmp("byte[]",getJavaType(smiGetNodeType(currNode)))) { + fprintf(f, + " undo_%s = null;\n", + currNode->name); + } + fprintf(f, + " break;\n" + " default:\n" + " return AgentXResponsePDU.PROCESSING_ERROR;\n" + " }\n" + " return AgentXResponsePDU.NO_ERROR;\n" + " }\n"); + } + } + /* ------ handle get get-next and set requests */ + fprintf(f, + " public AgentXVarBind getScalar(AgentXOID pos," + " AgentXOID oid)\n" + " {\n" + " if ((pos == null) || (pos.compareTo(oid) != 0))\n" + " return new AgentXVarBind(oid," + " AgentXVarBind.NOSUCHOBJECT);\n" + " else {\n" + ); + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + fprintf(f, + " if (pos == %sOID)\n" + " return new AgentXVarBind(oid," + " AgentXVarBind.%s, \n" + " get_%s());\n", + translate1Upper(currNode->name), + getAgentXType(smiGetNodeType(currNode)), + currNode->name + ); + } + fprintf(f, + " }\n" + " return new AgentXVarBind(oid," + " AgentXVarBind.NOSUCHOBJECT);\n }\n\n"); + + fprintf(f, + " public int setScalar(AgentXSetPhase phase," + " AgentXOID pos,\n" + " AgentXVarBind inVb)\n {\n" + " if ((pos == null) || (pos.compareTo(inVb.getOID()) != 0))\n" + " return AgentXResponsePDU.INCONSISTENT_NAME;\n" + " else {\n" + ); + + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + vb_type = getJavaType(smiGetNodeType(currNode)); + vb_type = strcmp("byte[]", vb_type) ? vb_type : "bytes"; + if (currNode->access == SMI_ACCESS_READ_WRITE) + fprintf(f, + " if (pos == %sOID)\n" + " return " + "set_%s(phase, inVb.%sValue());\n", + translate1Upper(currNode->name), + currNode->name, + vb_type + ); + } + fprintf(f, + " }\n" + " return AgentXResponsePDU.NOT_WRITABLE;\n" + " }\n\n"); + fprintf(f, + " public AgentXVarBind getNextScalar(AgentXOID pos," + " AgentXOID oid)\n {\n" + " if ((pos == null) || (pos.compareTo(oid) <= 0))\n" + " return new AgentXVarBind(oid," + " AgentXVarBind.ENDOFMIBVIEW);\n" + " else {\n" + ); + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + fprintf(f, + " if (pos == %sOID)\n" + " return new AgentXVarBind(pos," + " AgentXVarBind.%s, \n" + " get_%s());\n", + translate1Upper(currNode->name), + getAgentXType(smiGetNodeType(currNode)), + currNode->name + ); + } + fprintf(f, + " }\n" + " return new AgentXVarBind(pos," + " AgentXVarBind.ENDOFMIBVIEW);\n }\n\n"); + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); + /* skip all already processed nodes */ + for(; + smiNode && (smiNode->nodekind == SMI_NODEKIND_SCALAR); + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + } + return smiNode; +} + +static void dumpNotifications(SmiNode *smiNode) +{ + FILE *f; + int cnt; + unsigned int i; + SmiElement *element; + SmiNode *elementNode; + + SmiType *snt; + snt = smiGetNodeType(smiNode); + + f = createFile(translate1Upper(smiNode->name), ".java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING "." " Do not edit!\n" + " * It is intended to be used within a Java AgentX sub-agent" + " environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import jax.AgentXOID;\n" + "import jax.AgentXVarBind;\n" + "import jax.AgentXNotification;\n" + "import java.util.Vector;\n" + "\n"); + + fprintf(f, "public class %s extends AgentXNotification\n{\n\n", + translate1Upper(smiNode->name)); + + fprintf(f, + " private final static long[] %s_OID = {", + smiNode->name); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", smiNode->oid[i]); + } + fprintf(f, "};\n"); + fprintf(f, + " private static AgentXVarBind snmpTrapOID_VarBind =\n" + " new AgentXVarBind(snmpTrapOID_OID,\n" + " AgentXVarBind.OBJECTIDENTIFIER,\n" + " new AgentXOID(%s_OID));\n\n", + smiNode->name); + + for (element = smiGetFirstElement(smiNode), cnt = 1; + element; + element = smiGetNextElement(element), cnt++) { + elementNode = smiGetElementNode(element); + fprintf(f, " private final static long[] OID%d = {", cnt); + for (i = 0; i < elementNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", elementNode->oid[i]); + } + fprintf(f, + "};\n" + " private final AgentXOID %s_OID = " + "new AgentXOID(OID%d", + elementNode->name, cnt); + fprintf(f,");\n"); +#if 0 + if (elementNode->nodekind != SMI_NODEKIND_COLUMN || + (smiGetNodeModule(elementNode) != smiGetNodeModule(smiNode))) { + fprintf(f, + " private static AgentXVarBind varBind_%s = new AgentXVarBind(\n" + " %sOID, AgentXVarBind.%s\n);\n", + elementNode->name, + elementNode->name, + getAgentXType(smiGetNodeType(elementNode))); + } +#endif + } + fprintf(f, + "\n\n public %s(", + translate1Upper(smiNode->name)); + for (element = smiGetFirstElement(smiNode), cnt = 0; + element; + element = smiGetNextElement(element)) { + elementNode = smiGetElementNode(element); + if (smiGetNodeModule(elementNode) == smiGetNodeModule(smiNode)) { + if (cnt) fprintf(f,", "); + cnt++; + fprintf(f, "%s %s_%d", + translate1Upper(smiGetParentNode(elementNode)->name), + smiGetParentNode(elementNode)->name, cnt); + } + } + fprintf(f, ") {\n" + " AgentXOID oid;\n" + " AgentXVarBind varBind;\n" + "\n" + " // add the snmpTrapOID object\n" + " varBindList.addElement(snmpTrapOID_VarBind);\n"); + for (element = smiGetFirstElement(smiNode), cnt = 1; + element; + element = smiGetNextElement(element), cnt++) { + elementNode = smiGetElementNode(element); + + if (smiGetNodeModule(elementNode) == smiGetNodeModule(smiNode)) { + + fprintf(f, + "\n // add the %s %s object of %s_%d\n", + elementNode->name, + elementNode->nodekind == SMI_NODEKIND_COLUMN ? + "columnar" : "scalar", + smiGetParentNode(elementNode)->name, cnt); + + if (elementNode->nodekind == SMI_NODEKIND_COLUMN) { + fprintf(f, + " oid = %s_OID;\n" + " oid.appendImplied(%s_%d.getInstance());\n", + elementNode->name, + smiGetParentNode(elementNode)->name, cnt); + fprintf(f, + " varBind = new AgentXVarBind(oid,\n" + " AgentXVarBind.%s,\n" + " %s_%d.get_%s());\n", + getAgentXType(smiGetNodeType(elementNode)), + smiGetParentNode(elementNode)->name, cnt, + elementNode->name); + fprintf(f, + " varBindList.addElement(varBind);\n"); + } else { + fprintf(f, + " oid = %s_OID;\n", + elementNode->name); + fprintf(f, + " oid.append(0);\n"); + fprintf(f, + " varBind = new AgentXVarBind(oid,\n" + " AgentXVarBind.%s,\n" + " %s_%d.get_%s());\n", + getAgentXType(smiGetNodeType(elementNode)), + smiGetParentNode(elementNode)->name, cnt, + elementNode->name); + fprintf(f, + " varBindList.addElement(varBind);\n"); + } + + } else { + fprintf(f, + " // the notification's object %s " + "is not contained in this module.\n", + elementNode->name); + } + } + + fprintf(f, + " }\n\n"); + + fprintf(f, + " public Vector getVarBindList() {\n" + " return varBindList;\n }\n\n"); + + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + +static void dumpScalarImpl(SmiNode *smiNode) +{ + FILE *f; + SmiNode *parentNode, *currNode; + SmiType *smiType; + + parentNode = smiGetParentNode(smiNode); + + f = createFile(translate1Upper(parentNode->name), "Impl.java"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This Java file has been generated by smidump " + SMI_VERSION_STRING ". It\n" + " * is intended to be edited by the application programmer and\n" + " * to be used within a Java AgentX sub-agent environment.\n" + " *\n" + " * $I" "d$\n" + " */\n\n"); + fprintf(f, + "/**\n" + " This class extends the Java AgentX (JAX) implementation of\n" + " the scalar group %s defined in %s.\n" + " */\n\n", parentNode->name, smiGetNodeModule(smiNode)->name); + + if (package) { + fprintf(f, + "package %s;\n\n", package); + } + + fprintf(f, + "import java.util.Vector;\n" + "import java.util.Enumeration;\n" + "import jax.AgentXOID;\n" + "import jax.AgentXSetPhase;\n" + "import jax.AgentXResponsePDU;\n" + "\n"); + + fprintf(f, "public class %sImpl extends %s\n{\n\n", + translate1Upper(parentNode->name), + translate1Upper(parentNode->name)); + + for (currNode = smiNode; + currNode && (currNode->nodekind == SMI_NODEKIND_SCALAR) ; + currNode = smiGetNextNode(currNode,SMI_NODEKIND_ANY)) { + smiType = smiGetNodeType(currNode); + if (currNode->access >= SMI_ACCESS_NOTIFY) { + fprintf(f, + " public %s get_%s()\n" + " {\n" + " return %s;\n" + " }\n" + "\n", + getJavaType(smiType), + currNode->name, currNode->name); + } + if (currNode->access == SMI_ACCESS_READ_WRITE) { + fprintf(f, + " public int set_%s(AgentXSetPhase phase, %s value)\n" + " {\n", + currNode->name, + getJavaType(smiGetNodeType(currNode))); + fprintf(f, + " switch (phase.getPhase()) {\n" + " case AgentXSetPhase.TEST_SET:\n" + " break;\n" + " case AgentXSetPhase.COMMIT:\n" + " undo_%s = %s;\n", + currNode->name, + currNode->name); + if (!strcmp("byte[]", getJavaType(smiGetNodeType(currNode)))) { + fprintf(f, + " %s = new byte[value.length];\n" + " for(int i = 0; i < value.length; i++)\n" + " %s[i] = value[i];\n", + currNode->name, + currNode->name); + } else { + fprintf(f, + " %s = value;\n", + currNode->name); + } + fprintf(f, + " break;\n" + " case AgentXSetPhase.UNDO:\n" + " %s = undo_%s;\n" + " break;\n", + currNode->name, + currNode->name); + fprintf(f, + " case AgentXSetPhase.CLEANUP:\n"); + if (!strcmp("byte[]",getJavaType(smiGetNodeType(currNode)))) { + fprintf(f, + " undo_%s = null;\n", + currNode->name); + } else { + fprintf(f, + " undo_%s = -1; // TODO: better check!\n", + currNode->name); + } + fprintf(f, + " break;\n" + " default:\n" + " return AgentXResponsePDU.PROCESSING_ERROR;\n" + " }\n" + " return AgentXResponsePDU.NO_ERROR;\n" + " }\n" + "\n"); + } + } + fprintf(f, + "}\n\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + +static void dumpJax(int modc, SmiModule **modv, int flags, char *output) +{ + SmiNode *smiNode; + int i; + + for (i = 0; i < modc; i++) { + + for(smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_ROW); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ROW)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + dumpTable(smiNode); + dumpEntry(smiNode); + dumpEntryImpl(smiNode); + } + } + + for(smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_SCALAR); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_SCALAR)) { + dumpScalarImpl(smiNode); + smiNode = dumpScalars(smiNode); + } + + for(smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + dumpNotifications(smiNode); + } + } +} + + + +void initJax() +{ + static SmidumpDriverOption opt[] = { + { "package", OPT_STRING, &package, 0, + "make classes part of a given package"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "jax", + dumpJax, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE | SMIDUMP_DRIVER_CANT_OUTPUT, + "Java AgentX sub-agent classes in separate files", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-metrics.c b/tools/dump-metrics.c new file mode 100644 index 0000000..9c49a46 --- /dev/null +++ b/tools/dump-metrics.c @@ -0,0 +1,1687 @@ +/* + * dump-metrics.c -- + * + * Operations to compute and dump some MIB metrics. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2002 J. Schoenwaelder, University of Osnabrueck. + * Copyright (c) 2004 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-metrics.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + # revisions + # imports + # row creations: + # count node references in notification definitions + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int raw = 0; + +static int silent = 0; + + +typedef struct BasetypeCounter { + unsigned long total; + unsigned long unknown; + unsigned long integer32; + unsigned long octetstring; + unsigned long objectidentifier; + unsigned long unsigned32; + unsigned long integer64; + unsigned long unsigned64; + unsigned long float32; + unsigned long float64; + unsigned long float128; + unsigned long enums; + unsigned long bits; + unsigned long pointer; +} BasetypeCounter; + + +typedef struct StatusCounter { + unsigned long total; + unsigned long current; + unsigned long deprecated; + unsigned long obsolete; +} StatusCounter; + + + +typedef struct AccessCounter { + unsigned long total; + unsigned long noaccess; + unsigned long notify; + unsigned long readonly; + unsigned long readwrite; +} AccessCounter; + + + +typedef struct IndexCounter { + unsigned long total; + unsigned long index; + unsigned long augment; + unsigned long reorder; + unsigned long sparse; + unsigned long expand; +} IndexCounter; + + + +typedef struct IndexLenCounter { + unsigned long total; + unsigned long length[11]; +} IndexLenCounter; + + + +typedef struct TableLenCounter { + unsigned long total; + unsigned long length[81]; +} TableLenCounter; + + + +typedef struct ScalarLenCounter { + unsigned long total; + unsigned long length[81]; +} ScalarLenCounter; + + + +typedef struct IndexComplexityCounter { + unsigned long total; + unsigned long complexity[100]; +} IndexComplexityCounter; + + + +typedef struct LengthCounter { + unsigned long total; + unsigned long descr; + unsigned long descr_len; + unsigned long reference; + unsigned long reference_len; + unsigned long units; + unsigned long units_len; + unsigned long format; + unsigned long format_len; +} LengthCounter; + + + +typedef struct RowStatusCounter { + unsigned long basetables; + unsigned long rowstatus; + unsigned long storagetype; +} RowStatusCounter; + + + +typedef struct Metrics { + BasetypeCounter basetypesColumns; + BasetypeCounter basetypesScalars; + BasetypeCounter basetypesAll; + StatusCounter statusTypes; + StatusCounter statusTables; + StatusCounter statusColumns; + StatusCounter statusScalars; + StatusCounter statusNotifications; + StatusCounter statusGroups; + StatusCounter statusCompliances; + StatusCounter statusAll; + AccessCounter accessColumns; + AccessCounter accessScalars; + AccessCounter accessAll; + IndexCounter indexTables; + IndexLenCounter indexLenTables; + IndexComplexityCounter indexComplexity; + TableLenCounter tableLength; + ScalarLenCounter scalarLength; + LengthCounter lengthTypes; + LengthCounter lengthTables; + LengthCounter lengthRows; + LengthCounter lengthColumns; + LengthCounter lengthScalars; + LengthCounter lengthNotifications; + LengthCounter lengthAll; +} Metrics; + + + +typedef struct UsageCounter { + char *module; + char *name; + unsigned count; + struct UsageCounter *nextPtr; +} UsageCounter; + + +static UsageCounter *typeList = NULL; +static UsageCounter *extTypeList = NULL; +static UsageCounter *extNodeList = NULL; +static UsageCounter *extModuleList = NULL; +static UsageCounter *indexComplexityList = NULL; + +#define INCR_NODE 0x01 +#define INCR_TYPE 0x02 + + +static char* +getDateString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d-%02d-%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + return s; +} + + + +static char* +language(SmiLanguage language) +{ + return + (language == SMI_LANGUAGE_UNKNOWN) ? "-" : + (language == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (language == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (language == SMI_LANGUAGE_SMING) ? "SMIng" : + "-"; +} + + + +static int +calcSize(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + int size = 0; + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (smiType->name) { + size++; + } + } + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + switch (smiNode->nodekind) { + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + case SMI_NODEKIND_NOTIFICATION: + size++; + break; + default: + break; + } + } + + return size; +} + + + +typedef void (*ForEachIndexFunc) (FILE *f, SmiNode *groupNode, SmiNode *smiNode, void *data); + +static void +foreachIndexDo(FILE *f, SmiNode *smiNode, ForEachIndexFunc func, void *data) +{ + SmiNode *indexNode = NULL, *iNode; + SmiElement *smiElement; + + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = smiNode; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(smiNode); + break; + case SMI_INDEX_UNKNOWN: + break; + } + if (indexNode) { + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + (func) (f, smiNode, iNode, data); + } + } + } +} + + + +static UsageCounter* +incrUsageCounter(UsageCounter *uCntList, char *module, char *name, int incr) +{ + UsageCounter *uCnt; + + for (uCnt = uCntList; uCnt; uCnt = uCnt->nextPtr) { + if (strcmp(uCnt->module, module) == 0 + && (! name || strcmp(uCnt->name, name) == 0)) { + break; + } + } + + if (! uCnt) { + uCnt = (UsageCounter *) xmalloc(sizeof(UsageCounter)); + uCnt->module = xstrdup(module); + uCnt->name = name ? xstrdup(name) : NULL; + uCnt->count = 0; + uCnt->nextPtr = uCntList; + uCntList = uCnt; + } + + uCnt->count += incr; + return uCntList; +} + + + +static void +incrTypeAndNodeUsageCounter(SmiModule *smiModule, SmiNode *smiNode, int flags) +{ + SmiType *smiType; + char *extModule; + + /* + * First check whether the node is external. If yes, increment the + * external node counter and we are done. + */ + + extModule = smiGetNodeModule(smiNode)->name; + if (extModule + && strcmp(extModule, smiModule->name) != 0) { + if (flags & INCR_NODE) { + extNodeList = incrUsageCounter(extNodeList, + extModule, smiNode->name, 1); + extModuleList = incrUsageCounter(extModuleList, extModule, NULL, 1); + } + return; + } + + /* + * Next, check whether the type of the node is external. If yes, + * increment the external type counter and we are done. Do not + * count base types (that is types that have no parent type). + */ + + smiType = smiGetNodeType(smiNode); + if (! smiType) { + return; + } + + if (smiType->name && smiGetParentType(smiType)) { + char *extModule = smiGetTypeModule(smiType)->name; + if (extModule /* && *extModule */ + && strcmp(extModule, smiModule->name) != 0) { + if (flags & INCR_TYPE) { + extTypeList = incrUsageCounter(extTypeList, + extModule, smiType->name, 1); + extModuleList = incrUsageCounter(extModuleList, extModule, NULL, 1); + } + } + } + + /* + * Finally, count the type name (whether external or not does not + * matter here nor does it matter whether it is a base type or + * not). + */ + + if (! smiType->name && smiGetParentType(smiType)) { + smiType = smiGetParentType(smiType); + } + typeList = incrUsageCounter(typeList, smiGetTypeModule(smiType)->name, + smiType->name, 1); +} + + + +static void +incrIndexComplexityCounter(SmiModule *smiModule, SmiNode *smiNode, int complexity) +{ + indexComplexityList = incrUsageCounter(indexComplexityList, + smiModule->name, smiNode->name, complexity); +} + + + +static int +cmp(const void *va, const void *vb) +{ + UsageCounter **a = (UsageCounter **) va; + UsageCounter **b = (UsageCounter **) vb; + + if ((*a)->count > (*b)->count) return -1; + if ((*a)->count < (*b)->count) return 1; + + if ((*a)->module && (*b)->module) { + int x = strcmp((*a)->module, (*b)->module); + if (x) return x; + } + + if ((*a)->name && (*b)->name) { + int x = strcmp((*a)->name, (*b)->name); + if (x) return x; + } + + return 0; +} + + + +static int +fprintRevisions(FILE *f, int modLen, SmiRevision *smiRevision, + SmiModule *smiModule, int size) +{ + int n = 0; + + if (smiRevision) { + n = fprintRevisions(f, modLen, + smiGetNextRevision(smiRevision), smiModule, -1); + fprintf(f, "%-*s %7s ", modLen, smiModule->name, + (size >= 0) ? language(smiModule->language) : "-"); + if (size >= 0) { + fprintf(f, "%4d", size); + } else { + fprintf(f, " -"); + } + fprintf(f, " %3d %s\n", n, getDateString(smiRevision->date)); + n++; + } + + if (!smiRevision && size >= 0) { + fprintf(f, "%-*s %7s ", modLen, smiModule->name, + language(smiModule->language)); + fprintf(f, "%4d", size); + fprintf(f, " - ----------\n"); + } + + return n; +} + + + +static void +fprintRevision(FILE *f, int modc, SmiModule **modv) +{ + int i; + int modLen = 8; + + for (i = 0; i < modc; i++) { + if (modLen < strlen(modv[i]->name)) { + modLen = strlen(modv[i]->name); + } + } + + fprintf(f, "%-*s LANGUAGE SIZE REVISION DATE\n", modLen, "MODULE"); + + for (i = 0; i < modc; i++) { + fprintRevisions(f, modLen, smiGetFirstRevision(modv[i]), + modv[i], calcSize(modv[i])); + } + fprintf(f, "\n"); + +} + + + +static void +fprintTypeUsage(FILE *f, UsageCounter *typeUsageList) +{ + UsageCounter *uCnt; + int modLen = 8, nameLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = typeUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + if (nameLen < strlen(uCnt->name)) { + nameLen = strlen(uCnt->name); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = typeUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the number of references\n" +"# to defined types (including base types) in the set of loaded MIB\n" +"# modules.\n" +"\n", f); + } + fprintf(f, "%-*s %-*s USAGE\n", modLen, "MODULE", nameLen, "TYPE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s %-*s ", + modLen, sortCnt[i]->module, nameLen, sortCnt[i]->name); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count * 100 / total); + } + } + + xfree(sortCnt); +} + + + +static void +fprintExtTypeUsage(FILE *f, UsageCounter *typeUsageList) +{ + UsageCounter *uCnt; + int modLen = 8, nameLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = typeUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + if (nameLen < strlen(uCnt->name)) { + nameLen = strlen(uCnt->name); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = typeUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the number of references\n" +"# to externally defined types (excluding base types) in the set of loaded\n" +"# MIB modules.\n" +"\n", f); + } + fprintf(f, "%-*s %-*s EXT-USAGE\n", modLen, "MODULE", nameLen, "TYPE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s %-*s ", + modLen, sortCnt[i]->module, nameLen, sortCnt[i]->name); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count * 100 / total); + } + } + + xfree(sortCnt); +} + + + +static void +fprintExtNodeUsage(FILE *f, UsageCounter *typeUsageList) +{ + UsageCounter *uCnt; + int modLen = 8, nameLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = typeUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + if (nameLen < strlen(uCnt->name)) { + nameLen = strlen(uCnt->name); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = typeUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the number of references\n" +"# to externally defined nodes in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-*s %-*s EXT-USAGE\n", modLen, "MODULE", nameLen, "NODE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s %-*s ", + modLen, sortCnt[i]->module, nameLen, sortCnt[i]->name); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count * 100 / total); + } + } + + xfree(sortCnt); +} + + + +static void +fprintModuleUsage(FILE *f, UsageCounter *modUsageList) +{ + UsageCounter *uCnt; + int modLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = modUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = modUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the number of references\n" +"# to externally defined items (such as types or objects) accumulated by\n" +"# the defining MIB module in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-*s EXT-USAGE\n", modLen, "MODULE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s ", modLen, sortCnt[i]->module); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count * 100 / total); + } + } + + xfree(sortCnt); +} + + + +static void +fprintIndexComplexity(FILE *f, UsageCounter *modUsageList) +{ + UsageCounter *uCnt; + int modLen = 8; + int nameLen = 8; + unsigned total = 0; + int i, cnt = 0; + UsageCounter **sortCnt; + + /* should be sorted */ + + for (uCnt = modUsageList, cnt = 0; uCnt; uCnt = uCnt->nextPtr, cnt++) { + if (modLen < strlen(uCnt->module)) { + modLen = strlen(uCnt->module); + } + if (nameLen < strlen(uCnt->name)) { + nameLen = strlen(uCnt->name); + } + total += uCnt->count; + } + + if (cnt == 0) { + return; + } + + /* create an array for a quick qsort */ + + sortCnt = (UsageCounter **) xmalloc(cnt * sizeof(UsageCounter *)); + memset(sortCnt, 0, cnt * sizeof(UsageCounter *)); + for (uCnt = modUsageList, i = 0; uCnt; uCnt = uCnt->nextPtr, i++) { + sortCnt[i] = uCnt; + } + qsort(sortCnt, cnt, sizeof(UsageCounter *), cmp); + + if (! silent) { + fputs( +"# The following table shows the distribution of the index complexity\n" +"# in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-*s %-*s COMPLEXITY\n", modLen, "MODULE", nameLen, "TABLE"); + + for (i = 0; i < cnt; i++) { + fprintf(f, "%-*s %-*s ", modLen, sortCnt[i]->module, nameLen, sortCnt[i]->name); + if (raw) { + fprintf(f, "%8u\n", sortCnt[i]->count); + } else { + fprintf(f, "%6.1f%%\n", (double) sortCnt[i]->count); + } + } + + xfree(sortCnt); +} + + + +static void +freeUsageCounter(UsageCounter *usageCounterList) +{ + UsageCounter *uCnt, *p; + + for (uCnt = usageCounterList; uCnt; ) { + p = uCnt, uCnt = uCnt->nextPtr; + xfree(p->module); + xfree(p->name); + xfree(p); + } +} + + + +static void +incrBasetypeCounter(BasetypeCounter *basetypeCounter, SmiNode *smiNode) +{ + SmiType *smiType; + + smiType = smiGetNodeType(smiNode); + if (smiType) { + basetypeCounter->total++; + switch (smiType->basetype) { + case SMI_BASETYPE_UNKNOWN: + basetypeCounter->unknown++; + break; + case SMI_BASETYPE_INTEGER32: + basetypeCounter->integer32++; + break; + case SMI_BASETYPE_OCTETSTRING: + basetypeCounter->octetstring++; + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + basetypeCounter->objectidentifier++; + break; + case SMI_BASETYPE_UNSIGNED32: + basetypeCounter->unsigned32++; + break; + case SMI_BASETYPE_INTEGER64: + basetypeCounter->integer64++; + break; + case SMI_BASETYPE_UNSIGNED64: + basetypeCounter->unsigned64++; + break; + case SMI_BASETYPE_FLOAT32: + basetypeCounter->float32++; + break; + case SMI_BASETYPE_FLOAT64: + basetypeCounter->float64++; + break; + case SMI_BASETYPE_FLOAT128: + basetypeCounter->float128++; + break; + case SMI_BASETYPE_ENUM: + basetypeCounter->enums++; + break; + case SMI_BASETYPE_BITS: + basetypeCounter->bits++; + break; + case SMI_BASETYPE_POINTER: + basetypeCounter->pointer++; + break; + } + } +} + + + +static void +incrStatusCounter(StatusCounter *cnt, SmiStatus smiStatus) +{ + cnt->total++; + switch (smiStatus) { + case SMI_STATUS_CURRENT: + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + cnt->current++; + break; + case SMI_STATUS_DEPRECATED: + cnt->deprecated++; + break; + case SMI_STATUS_OBSOLETE: + cnt->obsolete++; + break; + case SMI_STATUS_UNKNOWN: + break; + } +} + + + +static void +incrAccessCounter(AccessCounter *cnt, SmiAccess smiAccess) +{ + cnt->total++; + switch (smiAccess) { + case SMI_ACCESS_NOT_ACCESSIBLE: + cnt->noaccess++; + break; + case SMI_ACCESS_NOTIFY: + cnt->notify++; + break; + case SMI_ACCESS_READ_ONLY: + cnt->readonly++; + break; + case SMI_ACCESS_READ_WRITE: + cnt->readwrite++; + break; + case SMI_ACCESS_INSTALL: + case SMI_ACCESS_INSTALL_NOTIFY: + case SMI_ACCESS_REPORT_ONLY: + case SMI_ACCESS_UNKNOWN: + case SMI_ACCESS_NOT_IMPLEMENTED: + case SMI_ACCESS_EVENT_ONLY: + break; + } +} + + + +static void +incrIndexCounter(IndexCounter *cnt, SmiIndexkind indexkind) +{ + cnt->total++; + switch (indexkind) { + case SMI_INDEX_INDEX: + cnt->index++; + break; + case SMI_INDEX_AUGMENT: + cnt->augment++; + break; + case SMI_INDEX_REORDER: + cnt->reorder++; + break; + case SMI_INDEX_SPARSE: + cnt->sparse++; + break; + case SMI_INDEX_EXPAND: + cnt->expand++; + break; + case SMI_INDEX_UNKNOWN: + break; + } +} + + + +static void +incrIndexLenCounter(IndexLenCounter *cnt, int len) +{ + cnt->total++; + if (len < sizeof(cnt->length)/sizeof(cnt->length[0])) { + cnt->length[len]++; + } else { + fprintf(stderr, "smidump: index len overflow: %d\n", len); + } +} + + + +static void +incrTableLenCounter(TableLenCounter *cnt, int len) +{ + cnt->total++; + if (len < sizeof(cnt->length)/sizeof(cnt->length[0])) { + cnt->length[len]++; + } else { + fprintf(stderr, "smidump: table len overflow: %d\n", len); + } +} + + + +static void +incrIndexComplexityMetric(IndexComplexityCounter *cnt, int cmplx) +{ + cnt->total++; + if (cmplx < sizeof(cnt->complexity)/sizeof(cnt->complexity[0])) { + cnt->complexity[cmplx]++; + } else { + fprintf(stderr, "smidump: index complexity overflow: %d\n", cmplx); + } +} + + + +static void +incrLengthCounter(LengthCounter *cnt, char *description, char *reference, + char *units, char *format) +{ + cnt->total++; + if (description) { + cnt->descr++; + cnt->descr_len += strlen(description); + } + + if (reference) { + cnt->reference++; + cnt->reference_len += strlen(reference); + } + if (units) { + cnt->units++; + cnt->units_len += strlen(units); + } + if (format) { + cnt->format++; + cnt->format_len += strlen(format); + } +} + + + +static void +incrRowStatusCounter(SmiNode *rowNode) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiModule *smiModule; + + for (smiNode = smiGetFirstChildNode(rowNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + smiType = smiGetNodeType(smiNode); + if (smiType && smiType->name) { + smiModule = smiGetTypeModule(smiType); + if (smiModule && smiModule->name + && strcmp(smiType->name, "RowStatus") == 0 + && strcmp(smiModule->name, "SNMPv2-TC") == 0) { + break; + } + } + } + + if (smiNode) { +#if 0 + fprintf(stderr, "** %s\t%s\t%s\n", rowNode->name, + smiNode->name, smiType->name); + /* xxx count rows indexed by ifIndex, InterfaceIndex, InterfaceIndexOrZero, ... */ +#endif + } +} + + + +static void +count(FILE *f, SmiNode *row, SmiNode *col, void *data) +{ + int *cnt = (int *) data; + + (*cnt)++; +} + + + +static void +complexity(FILE *f, SmiNode *row, SmiNode *col, void *data) +{ + int *cmplx = (int *) data; + SmiType *smiType; + unsigned long min, max; + + smiType = smiGetNodeType(col); + if (! smiType) { + return; + } + + switch (smiType->basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_UNSIGNED32: + case SMI_BASETYPE_ENUM: + *cmplx += 1; + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_OBJECTIDENTIFIER: + case SMI_BASETYPE_BITS: + *cmplx += 2; + min = smiGetMinSize(smiType); + max = smiGetMaxSize(smiType); + if (min != max) { + *cmplx += 1; + } + break; + default: /* ignore everything else */ + break; + } +} + + + +static void +yadayada(FILE *f, SmiNode *row, SmiNode *col, void *data) +{ + SmiModule *smiModule = (SmiModule *) data; + int flags = 0; + + if (col->access == SMI_ACCESS_NOT_ACCESSIBLE) { + flags |= INCR_TYPE; + } + flags |= INCR_NODE; + + incrTypeAndNodeUsageCounter(smiModule, col, flags); +} + + + +static void +addMetrics(Metrics *metrics, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + size_t len; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + len = smiNode->description ? strlen(smiNode->description) : 0; + switch (smiNode->nodekind) { + case SMI_NODEKIND_TABLE: + incrStatusCounter(&metrics->statusTables, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + incrLengthCounter(&metrics->lengthTables, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + break; + case SMI_NODEKIND_ROW: + incrIndexCounter(&metrics->indexTables, smiNode->indexkind); + incrLengthCounter(&metrics->lengthRows, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrRowStatusCounter(smiNode); + { + int cnt = 0; + foreachIndexDo(NULL, smiNode, count, &cnt); + incrIndexLenCounter(&metrics->indexLenTables, cnt); + foreachIndexDo(NULL, smiNode, yadayada, smiModule); + } + { + int cmplx = 0; + foreachIndexDo(NULL, smiNode, complexity, &cmplx); + incrIndexComplexityCounter(smiModule, smiNode, cmplx); + incrIndexComplexityMetric(&metrics->indexComplexity, cmplx); + } + /* count the childs ... */ + { + SmiModule *smiModule = smiGetModule("SNMPv2-TC"); + SmiNode *childNode; + SmiType *rowStatus = smiGetType(smiModule, "RowStatus"); + SmiType *storageType = smiGetType(smiModule, "StorageType"); + /* include index elements not in table */ + int n = 0; + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + n++; + if (rowStatus == smiGetNodeType(childNode)) { + fprintf(stderr, "**** GEEEEEE - ROWSTATUS\n"); + } + if (storageType == smiGetNodeType(childNode)) { + fprintf(stderr, "**** GEEEEEE - STORAGETYPE\n"); + } + } + incrTableLenCounter(&metrics->tableLength, n); + } + break; + case SMI_NODEKIND_COLUMN: + incrBasetypeCounter(&metrics->basetypesColumns, smiNode); + incrBasetypeCounter(&metrics->basetypesAll, smiNode); + incrStatusCounter(&metrics->statusColumns, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + incrAccessCounter(&metrics->accessColumns, smiNode->access); + incrAccessCounter(&metrics->accessAll, smiNode->access); + incrLengthCounter(&metrics->lengthColumns, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrTypeAndNodeUsageCounter(smiModule, smiNode, INCR_TYPE); + break; + case SMI_NODEKIND_SCALAR: + incrBasetypeCounter(&metrics->basetypesScalars, smiNode); + incrBasetypeCounter(&metrics->basetypesAll, smiNode); + incrStatusCounter(&metrics->statusScalars, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + incrAccessCounter(&metrics->accessScalars, smiNode->access); + incrAccessCounter(&metrics->accessAll, smiNode->access); + incrLengthCounter(&metrics->lengthScalars, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrTypeAndNodeUsageCounter(smiModule, smiNode, INCR_TYPE); + break; + case SMI_NODEKIND_NOTIFICATION: + incrStatusCounter(&metrics->statusNotifications, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + incrLengthCounter(&metrics->lengthNotifications, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + incrLengthCounter(&metrics->lengthAll, + smiNode->description, smiNode->reference, + smiNode->units, smiNode->format); + break; + case SMI_NODEKIND_GROUP: + incrStatusCounter(&metrics->statusGroups, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + break; + case SMI_NODEKIND_COMPLIANCE: + incrStatusCounter(&metrics->statusCompliances, smiNode->status); + incrStatusCounter(&metrics->statusAll, smiNode->status); + break; + } + } + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + + /* + * Ignore all types with empty descriptions coming from the + * "SNMPv2-SMI" module since they are not really defined + * types but part of the language itself. + */ + + if (! smiType->description) { + SmiModule *m = smiGetTypeModule(smiType); + if (m && strcmp(m->name, "SNMPv2-SMI") == 0) { + continue; + } + } + + incrStatusCounter(&metrics->statusTypes, smiType->status); + incrStatusCounter(&metrics->statusAll, smiType->status); + incrLengthCounter(&metrics->lengthTypes, + smiType->description, smiType->reference, + smiType->units, smiType->format); + incrLengthCounter(&metrics->lengthAll, + smiType->description, smiType->reference, + smiType->units, smiType->format); + } +} + + + +static void +fprintBasetypeCounter(FILE *f, BasetypeCounter *cnt, const char *s) +{ + if (!s && ! cnt) { + if (! silent) { + fputs( +"# The following table shows the basetype usage distribution in the\n" +"# set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-10s Int32 Uns32 Int64 Uns64 OctSt ObjId Enums Bits Flo32 Flo64 Flo128\n", + "CATEGORY"); + return; + } + + if (raw) { + fprintf(f, "%-10s %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu %5lu\n", s, + cnt->integer32, cnt->unsigned32, + cnt->integer64, cnt->unsigned64, + cnt->octetstring, cnt->objectidentifier, + cnt->enums, cnt->bits, + cnt->float32, cnt->float64, cnt->float128); + } else { + fprintf(f, "%-10s %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%%\n", s, + cnt->total ? (double) cnt->integer32 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->unsigned32 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->integer64 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->unsigned64 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->octetstring * 100 / cnt->total : 0, + cnt->total ? (double) cnt->objectidentifier * 100 / cnt->total : 0, + cnt->total ? (double) cnt->enums * 100 / cnt->total : 0, + cnt->total ? (double) cnt->bits * 100 / cnt->total : 0, + cnt->total ? (double) cnt->float32 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->float64 * 100 / cnt->total : 0, + cnt->total ? (double) cnt->float128 * 100 / cnt->total : 0); + } +} + + + + +static void +fprintStatusCounter(FILE *f, StatusCounter *cnt, char *s) +{ + if (!s || !cnt) { + if (! silent) { + fputs( +"# The following table shows the status distribution of various\n" +"# definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-14s %8s %8s %11s %9s\n", "CATEGORY", + "TOTAL", "CURRENT", "DEPRECATED", "OBSOLETE"); + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %8lu %11lu %9lu\n", s, + cnt->total, cnt->current, cnt->deprecated, cnt->obsolete); + } else { + fprintf(f, "%-14s %8lu %7.1f%% %10.1f%% %8.1f%%\n", s, + cnt->total, + cnt->total ? (double) cnt->current * 100 / cnt->total : 0, + cnt->total ? (double) cnt->deprecated * 100 / cnt->total : 0, + cnt->total ? (double) cnt->obsolete * 100 / cnt->total : 0); + } +} + + + +static void +fprintAccessCounter(FILE *f, AccessCounter *cnt, char *s) +{ + if (!s || !cnt) { + if (! silent) { + fputs( +"# The following table shows the access mode distribution of all scalar\n" +"# or column definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-14s %8s %10s %9s %7s %8s\n", "CATEGORY", + "TOTAL", "READWRITE", "READONLY", "NOTIFY", "NOACCES"); + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %10lu %9lu %7lu %8lu\n", s, + cnt->total, cnt->readwrite, cnt->readonly, + cnt->notify, cnt->noaccess); + } else { + fprintf(f, "%-14s %8lu %9.1f%% %8.1f%% %6.1f%% %7.1f%%\n", s, + cnt->total, + cnt->total ? (double) cnt->readwrite * 100 / cnt->total : 0, + cnt->total ? (double) cnt->readonly * 100 / cnt->total : 0, + cnt->total ? (double) cnt->notify * 100 / cnt->total : 0, + cnt->total ? (double) cnt->noaccess * 100 / cnt->total : 0); + } +} + + + +static void +fprintIndexCounter(FILE *f, IndexCounter *cnt, char *s) +{ + if (! s || ! cnt) { + if (! silent) { + fputs( +"# The following table shows the table index kind distribution of\n" +"# table definitions contained in the set of loaded MIB modules.\n" +"\n", f); + fprintf(f, "%-14s %8s %8s %8s %8s %8s %8s\n", "CATEGORY", + "TOTAL", "INDEX", "AUGMENT", "REORDER", "SPARSE", "EXPAND"); + } + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %8lu %8lu %8lu %8lu %8lu\n", s, + cnt->total, cnt->index, cnt->augment, + cnt->reorder, cnt->sparse, cnt->expand); + } else { + fprintf(f, "%-14s %8lu %7.1f%% %7.1f%% %7.1f%% %7.1f%% %7.1f%%\n", s, + cnt->total, + cnt->total ? (double) cnt->index * 100 / cnt->total : 0, + cnt->total ? (double) cnt->augment * 100 / cnt->total : 0, + cnt->total ? (double) cnt->reorder * 100 / cnt->total : 0, + cnt->total ? (double) cnt->sparse * 100 / cnt->total : 0, + cnt->total ? (double) cnt->expand * 100 / cnt->total : 0); + } +} + + + +static void +fprintIndexLenCounter(FILE *f, IndexLenCounter *cnt, char *s) +{ + int i; + int n = sizeof(cnt->length)/sizeof(cnt->length[0]); + char buf[42]; + + if (! s || ! cnt) { + if (! silent) { + fputs( +"# The following table shows the table index length distribution of\n" +"# table definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-10s %6s ", "CATEGORY", "TOTAL"); + for (i = 1; i < n; i++) { + sprintf(buf, "[%d]", i); + fprintf(f, " %5s", buf); + } + fprintf(f, "\n"); + return; + } + + fprintf(f, "%-10s %6lu ", s, cnt->total); + if (raw) { + for (i = 1; i < n; i++) { + fprintf(f, " %5lu", cnt->length[i]); + } + } else { + for (i = 1; i < n; i++) { + fprintf(f, " %4.1f%%", (double) cnt->length[i] * 100 / cnt->total); + } + } + + fprintf(f, "\n"); +} + + + +static void +fprintTableLenCounter(FILE *f, TableLenCounter *cnt, char *s) +{ + int i; + int n = sizeof(cnt->length)/sizeof(cnt->length[0]); + char buf[42]; + + if (! s || ! cnt) { + if (! silent) { + fputs( +"# The following table shows the table length distribution of\n" +"# table definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-10s %6s ", "CATEGORY", "TOTAL"); + for (i = 1; i < n; i++) { + sprintf(buf, "[%d]", i); + fprintf(f, " %5s", buf); + } + fprintf(f, "\n"); + return; + } + + fprintf(f, "%-10s %6lu ", s, cnt->total); + if (raw) { + for (i = 1; i < n; i++) { + fprintf(f, " %5lu", cnt->length[i]); + } + } else { + for (i = 1; i < n; i++) { + fprintf(f, " %4.1f%%", (double) cnt->length[i] * 100 / cnt->total); + } + } + + fprintf(f, "\n"); +} + + + +static void +fprintLengthCounter(FILE *f, LengthCounter *cnt, char *s) +{ + if (! s) { + if (! silent) { + fputs( +"# The following table shows the text clause usage distribution of all\n" +"# definitions contained in the set of loaded MIB modules.\n" +"\n", f); + } + fprintf(f, "%-14s %8s %12s %10s %8s %8s\n", "CATEGORY", + "TOTAL", "DESCRIPTION", "REFERENCE", "UNIT", "FORMAT"); + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %12lu %10lu %8lu %8lu\n", s, + cnt->total, cnt->descr, cnt->reference, + cnt->units, cnt->format); + } else { + fprintf(f, "%-14s %8lu %11.1f%% %9.1f%% %7.1f%% %7.1f%%\n", s, + cnt->total, + cnt->total ? (double) cnt->descr * 100 / cnt->total : 0, + cnt->total ? (double) cnt->reference * 100 / cnt->total : 0, + cnt->total ? (double) cnt->units * 100 / cnt->total : 0, + cnt->total ? (double) cnt->format * 100 / cnt->total : 0); + } +} + + + +static void +fprintLengthCounter2(FILE *f, LengthCounter *cnt, char *s) +{ + if (! s) { + if (! silent) { + fprintf(f, +"# The following table shows the %s text length distribution (in\n" +"# bytes) of all definitions contained in the set of loaded MIB modules.\n" +"\n", raw ? "total" : "average"); + } + fprintf(f, "%-14s %8s %12s %10s %8s %8s\n", "CATEGORY", + "TOTAL", "DESCRIPTION", "REFERENCE", "UNIT", "FORMAT"); + return; + } + + if (raw) { + fprintf(f, "%-14s %8lu %12lu %10lu %8lu %8lu\n", s, + cnt->total, cnt->descr_len, cnt->reference_len, + cnt->units_len, cnt->format_len); + } else { + fprintf(f, "%-14s %8lu %12.1f %10.1f %8.1f %8.1f\n", s, + cnt->total, + cnt->descr ? (double) cnt->descr_len / cnt->descr : 0, + cnt->reference ? (double) cnt->reference_len / cnt->reference : 0, + cnt->units ? (double) cnt->units_len / cnt->units : 0, + cnt->format ? (double) cnt->format_len / cnt->format : 0); + } +} + + + +static void +fprintfComplexity(FILE *f, Metrics *metrics) +{ + unsigned long cmplx = 0, fctrs = 0; + unsigned long total_cmplx = 0, total_fctrs = 0; + + if (! silent) { + fputs( +"# The following table shows the complexity metrics of the set of loaded\n" +"# MIB modules.\n" +"\n", f); + } + fprintf(f, "%-14s %8s %8s %8s %8s\n", "CATEGORY", "TOTAL", + "RAW", "WEIGHT", "COMPLEXITY"); + + cmplx = metrics->accessScalars.readonly * 1; + fctrs = metrics->accessScalars.readonly; + fprintf(f, "%-14s %8lu %8lu\n", "Scalars (ro):", fctrs, cmplx); + total_cmplx += cmplx; + total_fctrs += fctrs; + + cmplx = metrics->accessScalars.readwrite * 2; + fctrs = metrics->accessScalars.readwrite; + fprintf(f, "%-14s %8lu %8lu\n", "Scalars (rw):", fctrs, cmplx); + total_cmplx += cmplx; + total_fctrs += fctrs; + + cmplx = metrics->accessColumns.readonly * 2; + fctrs = metrics->accessColumns.readonly; + fprintf(f, "%-14s %8lu %8lu\n", "Columns (ro):", fctrs, cmplx); + total_cmplx += cmplx; + total_fctrs += fctrs; + + cmplx = metrics->accessColumns.readwrite * 3; + fctrs = metrics->accessColumns.readwrite; + fprintf(f, "%-14s %8lu %8lu\n", "Columns (rw):", fctrs, cmplx); + total_cmplx += cmplx; + total_fctrs += fctrs; + + /* readcreate tables ? */ + + /* table index complexity ? */ + + { + int i; + cmplx = 0; + for (i = 0; i < 100; i++) { + cmplx += 3 * i * metrics->indexComplexity.complexity[i]; + } + fprintf(f, "%-14s %8lu %8lu\n", "Indexes:", metrics->indexComplexity.total, cmplx); + } + + fprintf(f, "%-14s %8lu %8lu\n", "Summary:", total_fctrs, total_cmplx); +} + + + +static void +fprintMetrics(FILE *f, Metrics *metrics) +{ + fprintStatusCounter(f, NULL, NULL); + fprintStatusCounter(f, &metrics->statusTypes, "Types:"); + fprintStatusCounter(f, &metrics->statusTables, "Tables:"); + fprintStatusCounter(f, &metrics->statusColumns, "Columns:"); + fprintStatusCounter(f, &metrics->statusScalars, "Scalars:"); + fprintStatusCounter(f, &metrics->statusNotifications, "Notifications:"); + fprintStatusCounter(f, &metrics->statusGroups, "Groups:"); + fprintStatusCounter(f, &metrics->statusCompliances, "Compliances:"); + fprintStatusCounter(f, &metrics->statusAll, "Summary:"); + fprintf(f, "\n"); + fprintAccessCounter(f, NULL, NULL); + fprintAccessCounter(f, &metrics->accessColumns, "Columns:"); + fprintAccessCounter(f, &metrics->accessScalars, "Scalars:"); + fprintAccessCounter(f, &metrics->accessAll, "Summary:"); + fprintf(f, "\n"); + fprintIndexCounter(f, NULL, NULL); + fprintIndexCounter(f, &metrics->indexTables, "Tables:"); + fprintf(f, "\n"); + fprintIndexLenCounter(f, NULL, NULL); + fprintIndexLenCounter(f, &metrics->indexLenTables, "Tables:"); + fprintf(f, "\n"); + fprintTableLenCounter(f, NULL, NULL); + fprintTableLenCounter(f, &metrics->tableLength, "Tables:"); + fprintf(f, "\n"); + fprintLengthCounter(f, NULL, NULL); + fprintLengthCounter(f, &metrics->lengthTypes, "Types:"); + fprintLengthCounter(f, &metrics->lengthTables, "Tables:"); + fprintLengthCounter(f, &metrics->lengthColumns, "Columns:"); + fprintLengthCounter(f, &metrics->lengthScalars, "Scalars:"); + fprintLengthCounter(f, &metrics->lengthNotifications, "Notifications:"); + fprintLengthCounter(f, &metrics->lengthAll, "Summary:"); + fprintf(f, "\n"); + fprintLengthCounter2(f, NULL, NULL); + fprintLengthCounter2(f, &metrics->lengthTypes, "Types:"); + fprintLengthCounter2(f, &metrics->lengthTables, "Tables:"); + fprintLengthCounter2(f, &metrics->lengthColumns, "Columns:"); + fprintLengthCounter2(f, &metrics->lengthScalars, "Scalars:"); + fprintLengthCounter2(f, &metrics->lengthNotifications, "Notifications:"); + fprintLengthCounter2(f, &metrics->lengthAll, "Summary:"); + fprintf(f, "\n"); + fprintBasetypeCounter(f, NULL, NULL); + fprintBasetypeCounter(f, &metrics->basetypesColumns, "Columns:"); + fprintBasetypeCounter(f, &metrics->basetypesScalars, "Scalars:"); + fprintBasetypeCounter(f, &metrics->basetypesAll, "Summary:"); + fprintf(f, "\n"); + fprintfComplexity(f, metrics); + fprintf(f, "\n"); + fprintTypeUsage(f, typeList); + freeUsageCounter(typeList), typeList = NULL; + fprintf(f, "\n"); + fprintExtTypeUsage(f, extTypeList); + freeUsageCounter(extTypeList), extTypeList = NULL; + fprintf(f, "\n"); + fprintExtNodeUsage(f, extNodeList); + freeUsageCounter(extNodeList), extNodeList = NULL; + fprintf(f, "\n"); + fprintModuleUsage(f, extModuleList); + freeUsageCounter(extModuleList), extModuleList = NULL; + fprintf(f, "\n"); + fprintIndexComplexity(f, indexComplexityList); + freeUsageCounter(indexComplexityList), indexComplexityList = NULL; + fprintf(f, "\n"); +} + + + +static void +dumpMetrics(int modc, SmiModule **modv, int flags, char *output) +{ + Metrics metrics; + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! silent) { + int pos = 8888; + fprintf(f, "# united module metrics [%d modules] " + "(generated by smidump " SMI_VERSION_STRING ")\n", modc); + fprintf(f, "#\n# smidump -u -f metrics"); + if (raw) fprintf(f, " --metrics-raw"); + for (i = 0; i < modc; i++) { + int len = strlen(modv[i]->name); + if (pos + len > 70) { + fprintf(f, " \\\n#\t"), pos = 8; + } + fprintf(f, "%s ", modv[i]->name); + pos += len + 1; + } + fprintf(f, "%s\n", (pos == 8) ? "" : "\n"); + } + + fprintRevision(f, modc, modv); + + for (i = 0; i < modc; i++) { + memset(&metrics, 0, sizeof(Metrics)); + } + for (i = 0; i < modc; i++) { + addMetrics(&metrics, modv[i]); + } + fprintMetrics(f, &metrics); + } else { + for (i = 0; i < modc; i++) { + if (! silent) { + fprintf(f, "# %s module metrics (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + + fprintRevision(f, 1, modv+i); + + memset(&metrics, 0, sizeof(Metrics)); + addMetrics(&metrics, modv[i]); + fprintMetrics(f, &metrics); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void +initMetrics() +{ + static SmidumpDriverOption opt[] = { + { "raw", OPT_FLAG, &raw, 0, + "generate raw statistics (no percentages)"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "metrics", + dumpMetrics, + 0, + 0, + "metrics characterizing MIB modules", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-mosy.c b/tools/dump-mosy.c new file mode 100644 index 0000000..d2adeb4 --- /dev/null +++ b/tools/dump-mosy.c @@ -0,0 +1,547 @@ +/* + * dump-mosy.c -- + * + * Operations to dump MIB modules in the MOSY output format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-mosy.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static char *ignoreTypeRanges[] = { + "TimeTicks", + "Counter32", + "Gauge32", + "Counter64", + NULL +}; + + +static char *getStatusString(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; +} + + +static char *getAccessString(SmiAccess access, int create) +{ + return + (create && (access == SMI_ACCESS_READ_WRITE)) ? "read-create" : + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "accessible-for-notify" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; +} + + +static char *getBasetypeString(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectID" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "INTEGER" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getOidString(SmiNode *smiNode, int importedParent) +{ + SmiNode *parentNode; + SmiModule *smiModule; + static char s[200]; + char append[200]; + unsigned int i; + + append[0] = 0; + + parentNode = smiNode; + smiModule = smiGetNodeModule(smiNode); + + do { + + if (parentNode->oidlen <= 1) { + break; + } + + /* prepend the cut-off subidentifier to `append'. */ + strcpy(s, append); + sprintf(append, ".%u%s", parentNode->oid[parentNode->oidlen-1], s); + + /* retrieve the parent SmiNode */ + parentNode = smiGetParentNode(parentNode); + + if (!parentNode) { + sprintf(s, "%s", append); + return s; + } + + /* found an imported or a local parent node? */ + if ((parentNode->decl != SMI_DECL_IMPL_OBJECT) + && ((parentNode->name && strlen(parentNode->name)) + && (smiIsImported(smiModule, NULL, parentNode->name) + || (!importedParent + && (smiGetNodeModule(parentNode) == smiModule)) + || (parentNode->oidlen == 1)))) { + sprintf(s, "%s%s", parentNode->name, append); + return s; + } + + } while (parentNode); + + s[0] = 0; + for (i=0; i < smiNode->oidlen; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", smiNode->oid[i]); + } + return s; +} + + + +static char *getValueString(SmiValue *valuePtr) +{ + static char s[1024]; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OBJECTIDENTIFIER: + /* not required in MOSY format */ + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + } + + return s; +} + + + +static void printIndex(FILE *f, SmiNode *smiNode) +{ + char *indexname; + int i; + SmiElement *smiElement; + + fprintf(f, "%%%-19s %-16s \"", "ei", smiNode->name); + indexname = NULL; + for (i = -1, smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement), i++) { + if (i > 0) fprintf(f, " "); + if (indexname) { + fprintf(f, "%s", indexname); + } + indexname = smiGetElementNode(smiElement)->name; + } + if (indexname) { + fprintf(f, "%s%s%s", + (i > 0) ? " " : "", + (smiNode->implied) ? "*" : "", + indexname); + } + fprintf(f, "\"\n"); +} + + + +static void printAssignements(FILE *f, SmiModule *smiModule) +{ + int cnt = 0; + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + + cnt++; + + if (smiNode->status == SMI_STATUS_UNKNOWN && + smiNode != smiGetModuleIdentityNode(smiModule)) { + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s object-id\n", smiNode->name); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType, *smiParentType; + SmiNamedNumber *nn; + char *type_name; + + for (i = 0, smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + + smiParentType = smiGetParentType(smiType); + type_name = smiParentType->name; + + if (smiParentType->decl == SMI_DECL_IMPLICIT_TYPE) { + smiParentType = smiGetParentType(smiParentType); + type_name = smiParentType->name; + } + if (smiParentType->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + type_name = "ObjectID"; + } + if (smiParentType->basetype == SMI_BASETYPE_ENUM) { + type_name = "INTEGER"; + } + + fprintf(f, "%%%-19s %-16s %-15s \"%s\"\n", "tc", + smiType->name, type_name, + smiType->format ? smiType->format : ""); + + for (i = 0, nn = smiGetFirstNamedNumber(smiType); + nn ; i++, nn = smiGetNextNamedNumber(nn)) { + fprintf(f, "%%%-19s %-16s %-15s %s\n", "es", + smiType->name, nn->name, + getValueString(&nn->value)); + } + } +} + + + +static void printObjects(FILE *f, SmiModule *smiModule) +{ + int i, j, ignore, cnt = 0, aggregate, create; + char *type_name; + SmiNode *smiNode, *relatedNode; + SmiType *smiType; + SmiNamedNumber *smiNamedNumber; + SmiRange *smiRange; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + + if (smiNode->nodekind != SMI_NODEKIND_NODE + && smiNode->nodekind != SMI_NODEKIND_SCALAR + && smiNode->nodekind != SMI_NODEKIND_TABLE + && smiNode->nodekind != SMI_NODEKIND_ROW + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + continue; + } + + cnt++; + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + if (smiNode->status != SMI_STATUS_UNKNOWN && + smiNode != smiGetModuleIdentityNode(smiModule)) { + fprintf(f, "%-20s %s\n", smiNode->name, + getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s object-id\n", smiNode->name); + } + continue; + } + + aggregate = smiNode->nodekind == SMI_NODEKIND_TABLE + || smiNode->nodekind == SMI_NODEKIND_ROW; + + type_name = NULL; + smiType = smiGetNodeType(smiNode); + if (!aggregate) { + if (! smiType) { + continue; + } + type_name = getBasetypeString(smiType->basetype); + if (smiType && (smiType->decl != SMI_DECL_IMPLICIT_TYPE)) { + type_name = smiType->name; + if (!strcmp(type_name, "ObjectIdentifier")) { + type_name = "ObjectID"; + } + } + + if (smiType && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + type_name = smiGetParentType(smiType)->name; + if (smiType->basetype == SMI_BASETYPE_OBJECTIDENTIFIER) { + type_name = "ObjectID"; + } + if (smiType->basetype == SMI_BASETYPE_ENUM) { + type_name = "INTEGER"; + } + } + } else { + type_name = "Aggregate"; + } + + if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + create = smiGetParentNode(smiNode)->create; + } else { + create = 0; + } + + fprintf(f, "%-20s %-16s ", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%-15s %-15s %s\n", type_name, + getAccessString(smiNode->access, create), + getStatusString(smiNode->status)); + + relatedNode = smiGetRelatedNode(smiNode); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + printIndex(f, smiNode); + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + if (relatedNode) { + fprintf(f, "%%%-19s %-16s %s\n", "ea", + smiNode->name, relatedNode->name); + } + break; + case SMI_INDEX_SPARSE: + if (relatedNode) { + printIndex(f, relatedNode); + } + break; + case SMI_INDEX_UNKNOWN: + break; + } + + if (smiType && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + for (i = 0, smiNamedNumber = smiGetFirstNamedNumber(smiType); + smiNamedNumber; + i++, smiNamedNumber = smiGetNextNamedNumber(smiNamedNumber)) { + fprintf(f, "%%%-19s %-16s %-15s %s\n", "ev", + smiNode->name, smiNamedNumber->name, + getValueString(&smiNamedNumber->value)); + } + + for (ignore = 0, j = 0; ignoreTypeRanges[j]; j++) { + if (strcmp(type_name, ignoreTypeRanges[j]) == 0) { + ignore++; + break; + } + } + + if (! ignore) { + for (smiRange = smiGetFirstRange(smiType); + smiRange; + smiRange = smiGetNextRange(smiRange)) { + fprintf(f, "%%%-19s %-16s %-15s ", "er", + smiNode->name, + getValueString(&smiRange->minValue)); + fprintf(f, "%s\n", getValueString(&smiRange->maxValue)); + } + } + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printNotifications(FILE *f, SmiModule *smiModule) +{ + int cnt = 0; + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + cnt++; + + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s notification\n", smiNode->name); + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *smiNodeMember; + SmiElement *smiElement; + int cnt = 0, objects, notifications; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + cnt ++; + + for (objects = 0, notifications = 0, + smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNodeMember = smiGetElementNode(smiElement); + + objects += + (smiNodeMember->nodekind == SMI_NODEKIND_SCALAR) + || (smiNodeMember->nodekind == SMI_NODEKIND_COLUMN); + notifications += + (smiNodeMember->nodekind == SMI_NODEKIND_NOTIFICATION); + } + + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s %s\n", smiNode->name, + (objects && ! notifications) ? "object-group" : + (! objects && notifications) ? "notification-group" : "group"); + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printCompliances(FILE *f, SmiModule *smiModule) +{ + int cnt = 0; + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + cnt++; + + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, 0)); + fprintf(f, "%%n0 %-16s module-compliance\n", smiNode->name); + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void dumpMosy(int modc, SmiModule **modv, int flags, char *output) +{ + SmiNode *smiNode; + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, + "-- automatically generated by smidump %s, do not edit!\n", + SMI_VERSION_STRING); + fprintf(f, + "\n-- object definitions compiled from %s\n\n", + modv[i]->name); + } + + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "-- WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + SmiNode *parent = smiGetParentNode(smiNode); + fprintf(f, "%-20s %s\n", smiNode->name, getOidString(smiNode, !parent || parent->nodekind == SMI_NODEKIND_UNKNOWN )); + fprintf(f, "%%n0 %-16s module-identity\n", smiNode->name); + fprintf(f, "\n"); + } + + printAssignements(f, modv[i]); + printTypedefs(f, modv[i]); + printObjects(f, modv[i]); + printNotifications(f, modv[i]); + printGroups(f, modv[i]); + printCompliances(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initMosy() +{ + + static SmidumpDriver driver = { + "mosy", + dumpMosy, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE, + "intermediate format generated by the mosy compiler", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-netsnmp.c b/tools/dump-netsnmp.c new file mode 100644 index 0000000..90cae16 --- /dev/null +++ b/tools/dump-netsnmp.c @@ -0,0 +1,1343 @@ +/* + * dump-netsnmp.c -- + * + * Operations to generate NET-SNMP mib module implementation code. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-netsnmp.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * - assume that we build a dynamic loadable module + * - update to 4.X version of the UCD API + * - generate #defines for deprecated and obsolete objects + * - generate stub codes for the various functions + * - generate type and range checking code + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + +static int noMgrStubs = 0; +static int noAgtStubs = 0; + + +static char *getAccessString(SmiAccess access) +{ + if (access == SMI_ACCESS_READ_WRITE) { + return "RWRITE"; + } else if (access == SMI_ACCESS_READ_ONLY) { + return "RONLY"; + } else { + return ""; + } +} + + +static char *getBaseTypeString(SmiBasetype basetype) +{ + switch(basetype) { + case SMI_BASETYPE_UNKNOWN: + return "ASN_NULL"; + case SMI_BASETYPE_POINTER: + return "ASN_NULL"; + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_ENUM: + return "ASN_INTEGER"; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + return "ASN_OCTET_STR"; + case SMI_BASETYPE_OBJECTIDENTIFIER: + return "ASN_OBJECT_ID"; + case SMI_BASETYPE_UNSIGNED32: + return "ASN_INTEGER"; + case SMI_BASETYPE_INTEGER64: + return "ASN_INTEGER"; + case SMI_BASETYPE_UNSIGNED64: + return "ASN_INTEGER"; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + return "ASN_Real"; + } + + return NULL; +} + + + +static char* translate(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + } + + return s; +} + + + +static char* translateUpper(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + if (islower((int) s[i])) { + s[i] = toupper(s[i]); + } + } + + return s; +} + + + +static char* translateLower(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + if (isupper((int) s[i])) { + s[i] = tolower(s[i]); + } + } + + return s; +} + + + +static char* translateFileName(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '_') s[i] = '-'; + if (isupper((int) s[i])) { + s[i] = tolower(s[i]); + } + } + + return s; +} + + + +static FILE * createFile(char *name, char *suffix) +{ + char *fullname; + FILE *f; + + fullname = xmalloc(strlen(name) + (suffix ? strlen(suffix) : 0) + 2); + strcpy(fullname, name); + if (suffix) { + strcat(fullname, suffix); + } + if (!access(fullname, R_OK)) { + fprintf(stderr, "smidump: %s already exists\n", fullname); + xfree(fullname); + return NULL; + } + f = fopen(fullname, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", fullname); + perror(NULL); + xfree(fullname); + exit(1); + } + xfree(fullname); + return f; +} + + + +static int isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + return 1; + } + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR) { + return 1; + } + } + + return 0; +} + + + +static int isAccessible(SmiNode *groupNode) +{ + SmiNode *smiNode; + int num = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if ((smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + } + } + + return num; +} + + + +static void printHeaderTypedef(FILE *f, SmiModule *smiModule, + SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + char *cModuleName, *cGroupName, *cName; + unsigned minSize, maxSize; + + cModuleName = translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "/*\n" + " * C type definitions for %s::%s.\n" + " */\n\n", + smiModule->name, groupNode->name); + + fprintf(f, "typedef struct %s {\n", cGroupName); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) +#if 0 + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE) +#endif + ) { + smiType = smiGetNodeType(smiNode); + if (!smiType) { + continue; + } + + cName = translate(smiNode->name); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + " uint32_t *%s;\n", cName); + if (maxSize != minSize) { + fprintf(f, + " size_t _%sLength;\n", cName); + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + " u_char *%s;\n", cName); + if (maxSize != minSize) { + fprintf(f, + " size_t _%sLength;\n", cName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + " int32_t *%s;\n", cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " uint32_t *%s;\n", cName); + break; + case SMI_BASETYPE_INTEGER64: + fprintf(f, + " int64_t *%s; \n", cName); + break; + case SMI_BASETYPE_UNSIGNED64: + fprintf(f, + " uint64_t *%s; \n", cName); + break; + default: + fprintf(f, + " /* ?? */ __%s; \n", cName); + break; + } + xfree(cName); + } + } + + fprintf(f, + " void *_clientData;\t\t" + "/* pointer to client data structure */\n"); + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + fprintf(f, " struct %s *_nextPtr;\t" + "/* pointer to next table entry */\n", cGroupName); + } + fprintf(f, + "\n /* private space to hold actual values */\n\n"); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) +#if 0 + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE) +#endif + ) { + smiType = smiGetNodeType(smiNode); + if (!smiType) { + continue; + } + + cName = translate(smiNode->name); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + fprintf(f, + " uint32_t __%s[%u];\n", cName, maxSize); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + fprintf(f, + " u_char __%s[%u];\n", cName, maxSize); + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + " int32_t __%s;\n", cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " uint32_t __%s;\n", cName); + break; + case SMI_BASETYPE_INTEGER64: + fprintf(f, + " int64_t __%s; \n", cName); + break; + case SMI_BASETYPE_UNSIGNED64: + fprintf(f, + " uint64_t __%s; \n", cName); + break; + default: + fprintf(f, + " /* ?? */ __%s; \n", cName); + break; + } + xfree(cName); + } + } + + fprintf(f, "} %s_t;\n\n", cGroupName); + + fprintf(f, + "/*\n" + " * C manager interface stubs for %s::%s.\n" + " */\n\n", + smiModule->name, groupNode->name); + + fprintf(f, "extern int\n" + "%s_mgr_get_%s(struct snmp_session *s, %s_t **%s);\n", + cModuleName, cGroupName, cGroupName, cGroupName); + fprintf(f, "\n"); + + fprintf(f, + "/*\n" + " * C agent interface stubs for %s::%s.\n" + " */\n\n", + smiModule->name, groupNode->name); + + fprintf(f, "extern int\n" + "%s_agt_read_%s(%s_t *%s);\n", + cModuleName, cGroupName, cGroupName, cGroupName); + fprintf(f, "extern int\n" + "%s_agt_register_%s();\n\n", + cModuleName, cGroupName); + xfree(cGroupName); + xfree(cModuleName); +} + + + +static void printHeaderTypedefs(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + char *cModuleName; + char *cSmiNodeName; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cnt++; + printHeaderTypedef(f, smiModule, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } + + if (cnt) { + /* + * Should this go into the agent implementation module? + */ + cModuleName = translateLower(smiModule->name); + fprintf(f, "typedef struct %s {\n", cModuleName); + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cSmiNodeName = translate(smiNode->name); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + fprintf(f, " %s_t\t*%s;\n", cSmiNodeName, cSmiNodeName); + } else { + fprintf(f, " %s_t\t%s;\n", cSmiNodeName, cSmiNodeName); + } + xfree(cSmiNodeName); + } + } + fprintf(f, "} %s_t;\n\n", cModuleName); + xfree(cModuleName); + } +} + + + +static void dumpHeader(SmiModule *smiModule, char *baseName) +{ + char *pModuleName; + char *cModuleName; + FILE *f; + + pModuleName = translateUpper(smiModule->name); + + f = createFile(baseName, ".h"); + if (! f) { + return; + } + + fprintf(f, + "/*\n" + " * This C header file has been generated by smidump " + SMI_VERSION_STRING ".\n" + " * It is intended to be used with the NET-SNMP package.\n" + " *\n" + " * This header is derived from the %s module.\n" + " *\n * $I" "d$\n" + " */\n\n", smiModule->name); + + fprintf(f, "#ifndef _%s_H_\n", pModuleName); + fprintf(f, "#define _%s_H_\n\n", pModuleName); + + fprintf(f, "#include \n\n"); + + fprintf(f, + "#ifdef HAVE_STDINT_H\n" + "#include \n" + "#endif\n\n"); + + printHeaderTypedefs(f, smiModule); + + fprintf(f, + "/*\n" + " * Initialization function:\n" + " */\n\n"); + cModuleName = translateLower(smiModule->name); + fprintf(f, "void %s_agt_init(void);\n\n", cModuleName); + xfree(cModuleName); + + fprintf(f, "#endif /* _%s_H_ */\n", pModuleName); + + fclose(f); + xfree(pModuleName); +} + + + +static void printAgtReadMethodDecls(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cnt++; + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Forward declaration of read methods for groups of scalars and tables:\n" + " */\n\n"); + } + fprintf(f, + "static unsigned char *\nread_%s_stub(struct variable *," + " oid *, size_t *, int, size_t *, WriteMethod **);\n", + smiNode->name); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtWriteMethodDecls(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + cnt++; + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Forward declaration of write methods for writable objects:\n" + " */\n\n"); + } + fprintf(f, + "static int\nwrite_%s_stub(int," + " u_char *, u_char, int, u_char *, oid *, int);\n", + smiNode->name); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtDefinesGroup(FILE *f, SmiNode *groupNode, int cnt) +{ + char *cName, *cGroupName; + SmiNode *smiNode; + SmiType *smiType; + int num = 0; + unsigned int i; + + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Definitions of tags that are used internally to read/write\n" + " * the selected object type. These tags should be unique.\n" + " */\n\n"); + } + + cGroupName = translate(groupNode->name); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + cName = translateUpper(smiNode->name); + fprintf(f, "#define %-32s %d\n", cName, + smiNode->oid[smiNode->oidlen-1]); + xfree(cName); + } + } + fprintf(f, "\n"); + + if (num) { + fprintf(f, "static oid %s_base[] = {", cGroupName); + for (i = 0; i < groupNode->oidlen; i++) { + fprintf(f, "%s%d", i ? ", " : "", groupNode->oid[i]); + } + fprintf(f, "};\n\n"); + fprintf(f, "struct variable %s_variables[] = {\n", cGroupName); + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + smiType = smiGetNodeType(smiNode); + if (!smiType) { + continue; + } + cName = translateUpper(smiNode->name); + fprintf(f, " { %s, %s, %s, read_%s_stub, %d, {%d} },\n", + cName, getBaseTypeString(smiType->basetype), + getAccessString(smiNode->access), + cGroupName, 1, smiNode->oid[smiNode->oidlen-1]); + xfree(cName); + } + } + fprintf(f, "};\n\n"); + } + + xfree(cGroupName); +} + + + +static void printAgtDefines(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + printAgtDefinesGroup(f, smiNode, ++cnt); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtRegister(FILE *f, SmiNode *groupNode, int cnt) +{ + SmiNode *smiNode; + char *cGroupName; + int num = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + } + } + fprintf(f, "\n"); + + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Registration functions for the various MIB groups.\n" + " */\n\n"); + } + + cGroupName = translate(groupNode->name); + + fprintf(f, "int register_%s()\n{\n", cGroupName); + fprintf(f, + " return register_mib(\"%s\",\n" + " %s_variables,\n" + " sizeof(struct variable),\n" + " sizeof(%s_variables)/sizeof(struct variable),\n" + " %s_base,\n" + " sizeof(%s_base)/sizeof(oid));\n", + cGroupName, cGroupName, cGroupName, cGroupName, cGroupName); + fprintf(f, "};\n\n"); + + xfree(cGroupName); +} + + + +static void printAgtInit(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + printAgtRegister(f, smiNode, ++cnt); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtReadMethod(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + char *cName, *sName, *lName; + + sName = translate(groupNode->name); + + fprintf(f, + "static unsigned char *\nread_%s_stub(struct variable *vp,\n" + " oid *name,\n" + " size_t *length,\n" + " int exact,\n" + " size_t *var_len,\n" + " WriteMethod **write_method)\n" + "{\n", sName); + + fprintf(f, " static %s_t %s;\n\n", sName, sName); + + smiNode = smiGetFirstChildNode(groupNode); + if (smiNode && smiNode->nodekind == SMI_NODEKIND_SCALAR) { + fprintf(f, + " /* check whether the instance identifier is valid */\n" + "\n" + " if (header_generic(vp, name, length, exact, var_len,\n" + " write_method) == MATCH_FAILED) {\n" + " return NULL;\n" + " }\n" + "\n"); + } + + fprintf(f, + " /* call the user supplied function to retrieve values */\n" + "\n" + " read_%s(&%s);\n" + "\n", sName, sName); + + fprintf(f, + " /* return the current value of the variable */\n" + "\n" + " switch (vp->magic) {\n" + "\n"); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + cName = translateUpper(smiNode->name); + lName = translate(smiNode->name); + smiType = smiGetNodeType(smiNode); + if (! smiType) { + continue; + } + fprintf(f, " case %s:\n", cName); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + fprintf(f, + " *var_len = %s._%sLength;\n" + " return (unsigned char *) %s.%s;\n", + sName, lName, sName, lName); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + fprintf(f, + " *var_len = %s._%sLength;\n" + " return (unsigned char *) %s.%s;\n", + sName, lName, sName, lName); + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " return (unsigned char *) &%s.%s;\n", + sName, lName); + break; + default: + fprintf(f, + " /* add code to return the value here */\n"); + } + fprintf(f, "\n"); + xfree(cName); + xfree(lName); + } + } + + fprintf(f, + " default:\n" + " ERROR_MSG(\"\");\n" + " }\n" + "\n" + " return NULL;\n" + "}\n" + "\n"); + + xfree(sName); +} + + + +static void printAgtReadMethods(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cnt++; + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Read methods for groups of scalars and tables:\n" + " */\n\n"); + } + printAgtReadMethod(f, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void printAgtWriteMethods(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + cnt++; + if (cnt == 1) { + fprintf(f, + "/*\n" + " * Forward declaration of write methods for writable objects:\n" + " */\n\n"); + } + fprintf(f, + "static int\nwrite_%s_stub(int action,\n" + " u_char *var_val,\n" + " u_char var_val_type,\n" + " int var_val_len,\n" + " u_char *statP,\n" + " oid *name,\n" + " int name_len)\n" + "{\n", smiNode->name); + fprintf(f, + " return SNMP_ERR_NOERROR;\n" + "}\n\n"); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void dumpAgtStub(SmiModule *smiModule, char *baseName) +{ + char *stubModuleName; + FILE *f; + + stubModuleName = xmalloc(strlen(baseName) + 10); + strcpy(stubModuleName, baseName); + strcat(stubModuleName, "-agt-stub"); + + f = createFile(stubModuleName, ".c"); + if (! f) { + xfree(stubModuleName); + return; + } + + fprintf(f, + "/*\n" + " * This C file has been generated by smidump " + SMI_VERSION_STRING ".\n" + " * It is intended to be used with the NET-SNMP agent library.\n" + " *\n" + " * This C file is derived from the %s module.\n" + " *\n * $I" "d$\n" + " */\n\n", smiModule->name ); + + fprintf(f, + "#include \n" + "#include \n" + "#include \n" + "\n" + "#include \"%s.h\"\n" + "\n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "\n", + baseName); + + printAgtReadMethodDecls(f, smiModule); + printAgtWriteMethodDecls(f, smiModule); + printAgtDefines(f, smiModule); + printAgtInit(f, smiModule); + + printAgtReadMethods(f, smiModule); + printAgtWriteMethods(f, smiModule); + + fclose(f); + xfree(stubModuleName); +} + + + +static void printMgrOidDefinitions(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + char *cName; + unsigned int i; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && smiNode->access != SMI_ACCESS_NOTIFY) { + cName = translate(smiNode->name); + fprintf(f, "static oid %s[] = {", cName); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%u", i ? ", " : "", smiNode->oid[i]); + } + fprintf(f, "};\n"); + xfree(cName); + } + } + fprintf(f, "\n"); +} + + + +static void printMgrGetScalarAssignement(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + char *cGroupName, *cName; + unsigned maxSize, minSize; + + cGroupName = translate(groupNode->name); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + + smiType = smiGetNodeType(smiNode); + if (!smiType) { + continue; + } + + cName = translate(smiNode->name); + fprintf(f, + " if (vars->name_length > sizeof(%s)/sizeof(oid)\n" + " && memcmp(vars->name, %s, sizeof(%s)) == 0) {\n", + cName, cName, cName); + switch (smiType->basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_UNSIGNED32: + case SMI_BASETYPE_ENUM: + fprintf(f, + " (*%s)->__%s = *vars->val.integer;\n" + " (*%s)->%s = &((*%s)->__%s);\n", + cGroupName, cName, + cGroupName, cName, cGroupName, cName); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + " memcpy((*%s)->__%s, vars->val.string, vars->val_len);\n", + cGroupName, cName); + if (minSize != maxSize) { + fprintf(f, + " (*%s)->_%sLength = vars->val_len;\n", + cGroupName, cName); + } + fprintf(f, + " (*%s)->%s = (*%s)->__%s;\n", + cGroupName, cName, cGroupName, cName); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + break; + default: + break; + } + fprintf(f, + " }\n"); + xfree(cName); + } + } + + xfree(cGroupName); +} + + + +static void printMgrGetMethod(FILE *f, SmiModule *smiModule, + SmiNode *groupNode) +{ + SmiNode *smiNode; + char *cModuleName, *cGroupName; + + cModuleName = translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "int %s_mgr_get_%s(struct snmp_session *s, %s_t **%s)\n" + "{\n" + " struct snmp_session *peer;\n" + " struct snmp_pdu *request, *response;\n" + " struct variable_list *vars;\n" + " int status;\n" + "\n", + cModuleName, cGroupName, cGroupName, cGroupName); + + fprintf(f, + " request = snmp_pdu_create(SNMP_MSG_GETNEXT);\n"); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + fprintf(f, + " snmp_add_null_var(request, %s, sizeof(%s)/sizeof(oid));\n", + smiNode->name, smiNode->name); + } + } + + fprintf(f, + "\n" + " peer = snmp_open(s);\n" + " if (!peer) {\n" + " snmp_free_pdu(request);\n" + " return -1;\n" + " }\n" + "\n" + " status = snmp_synch_response(peer, request, &response);\n" + " if (status != STAT_SUCCESS) {\n" + " if (response) snmp_free_pdu(response);\n" + " snmp_close(peer);\n" + " return -2;\n" + " }\n" + "\n"); + + /* generate code for error checking and handling */ + + fprintf(f, + " *%s = (%s_t *) malloc(sizeof(%s_t));\n" + " if (! *%s) {\n" + " if (response) snmp_free_pdu(response);\n" + " snmp_close(peer);\n" + " return -4;\n" + " }\n" + "\n", + cGroupName, cGroupName, cGroupName, cGroupName); + + fprintf(f, + " for (vars = response->variables; vars; vars = vars->next_variable) {\n"); + printMgrGetScalarAssignement(f, groupNode); + fprintf(f, + " }\n" + "\n"); + + +#if 0 + if (response->errstat != SNMP_ERR_NOERROR) { + return -3; + } + + /* copy to data structures */ + + /* cleanup */ + +#endif + + fprintf(f, + " if (response) snmp_free_pdu(response);\n" + "\n" + " if (snmp_close(peer) == 0) {\n" + " return -5;\n" + " }\n" + "\n" + " return 0;\n" + "}\n\n"); + + xfree(cGroupName); + xfree(cModuleName); +} + + + + +static void printMgrGetMethods(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode) && isAccessible(smiNode)) { + cnt++; + printMgrGetMethod(f, smiModule, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void dumpMgrStub(SmiModule *smiModule, char *baseName) +{ + char *stubModuleName; + FILE *f; + + stubModuleName = xmalloc(strlen(baseName) + 10); + strcpy(stubModuleName, baseName); + strcat(stubModuleName, "-mgr-stub"); + + f = createFile(stubModuleName, ".c"); + if (! f) { + xfree(stubModuleName); + return; + } + + fprintf(f, + "/*\n" + " * This C file has been generated by smidump " + SMI_VERSION_STRING ".\n" + " * It is intended to be used with the NET-SNMP library.\n" + " *\n" + " * This C file is derived from the %s module.\n" + " *\n * $I" "d$\n" + " */\n\n", smiModule->name ); + + fprintf(f, + "#include \n" + "\n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "\n" + "#include \"%s.h\"\n" + "\n", + baseName); + + printMgrOidDefinitions(f, smiModule); + + printMgrGetMethods(f, smiModule); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); + xfree(stubModuleName); +} + + + +static void dumpAgtImpl(SmiModule *smiModule, char *baseName) +{ + char *stubModuleName, *cModuleName; + FILE *f; + + stubModuleName = xmalloc(strlen(baseName) + 10); + strcpy(stubModuleName, baseName); + strcat(stubModuleName, "-agt"); + + + f = createFile(stubModuleName, ".c"); + if (! f) { + xfree(stubModuleName); + return; + } + + cModuleName = translateLower(smiModule->name); + + fprintf(f, + "/*\n" + " * This C file has been generated by smidump " + SMI_VERSION_STRING ".\n" + " * It is intended to be used with the NET-SNMP agent library.\n" + " *\n" + " * This C file is derived from the %s module.\n" + " *\n * $I" "d$\n" + " */\n\n", smiModule->name ); + + fprintf(f, + "#include \n" + "#include \n" + "#include \n" + "\n" + "#include \"%s.h\"\n" + "\n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "#include \n" + "\n", + baseName); + + fprintf(f, + "static oid %s_caps[] = {0,0};\n" + "\n", + cModuleName); + + fprintf(f, + "void init_%s(void)\n" + "{\n" +#if 0 + /* create an entry in the sysORTable */ + + register_sysORTable(if_mib_caps, sizeof(if_mib_caps), + "IF-MIB implementation version 0.0."); + + /* register the various parts of the MIB */ + + register_interfaces(); + register_ifEntry(); + + /* register essential callbacks */ + + snmp_register_callback(SNMP_CALLBACK_LIBRARY, + SNMP_CALLBACK_SHUTDOWN, + term_if_mib, NULL); +#endif + "}\n" + "\n", + cModuleName); + + + fprintf(f, + "void deinit_%s()\n" + "{\n" + " unregister_sysORTable(%s_caps, sizeof(%s_caps));\n" + "}\n" + "\n", + cModuleName, cModuleName, cModuleName); + + fprintf(f, + "int term_%s()\n" + "{\n" + " deinit_%s();\n" + " return 0;\n" + "}\n" + "\n", + cModuleName, cModuleName); + + xfree(cModuleName); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); + xfree(stubModuleName); +} + + + +static void dumpNetSnmp(int modc, SmiModule **modv, int flags, char *output) +{ + char *baseName; + int i; + + if (flags & SMIDUMP_FLAG_UNITE) { + /* not implemented yet */ + } else { + for (i = 0; i < modc; i++) { + baseName = output ? output : translateFileName(modv[i]->name); + dumpHeader(modv[i], baseName); + if (! noAgtStubs) { + dumpAgtStub(modv[i], baseName); + dumpAgtImpl(modv[i], baseName); + } + if (! noMgrStubs) { + dumpMgrStub(modv[i], baseName); + } + if (! output) xfree(baseName); + } + } + +} + + + +void initNetsnmp() +{ + static SmidumpDriverOption opt[] = { + { "no-mgr-stubs", OPT_FLAG, &noMgrStubs, 0, + "do not generate manager stub code"}, + { "no-agt-stubs", OPT_FLAG, &noAgtStubs, 0, + "do not generate agent stub code"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "netsnmp", + dumpNetSnmp, + SMI_FLAG_NODESCR, + SMIDUMP_DRIVER_CANT_UNITE, + "ANSI C code for the NET-SNMP package", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-perl.c b/tools/dump-perl.c new file mode 100644 index 0000000..dbf533e --- /dev/null +++ b/tools/dump-perl.c @@ -0,0 +1,1129 @@ +/* + * dump-perl.c -- + * + * Operations to dump SMIng module information in Perl format. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2000 WideAwake Ltd. + * Copyright (c) 2000 Martin Schulz martin.schulz@myrealbox.com + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-perl.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 4 /* column to start multiline texts */ +#define INDENTMAX 64 /* max column to fill, break lines otherwise */ + + + +typedef struct PerlEscape { + char character; + char *escape; +} PerlEscape; + +static PerlEscape perlEscapes [] = { + { '\'', "\\'" }, + { '\\', "\\\\" }, + { 0, NULL } +}; + + +static int current_column = 0; + +static char* currentModuleName = NULL; + +static char *getStringLanguage(SmiLanguage lang) +{ + return + (lang == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (lang == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (lang == SMI_LANGUAGE_SMING) ? "SMIng" : + NULL; +} + + + +static char *getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; +} + + + +static char *getAccessString(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "noaccess" : + (access == SMI_ACCESS_NOTIFY) ? "notifyonly" : + (access == SMI_ACCESS_READ_ONLY) ? "readonly" : + (access == SMI_ACCESS_READ_WRITE) ? "readwrite" : + ""; +} + + + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getTimeString(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, j, len; + +#ifdef INDENTTEXTS + fprintSegment(f, column + INDENTTEXTS, "", 0); +#endif + if (s) { + fputs ("'", f); + current_column += 3; + len = strlen(s); + for (i=0; i < len; i++) { + for (j = 0; perlEscapes[j].character; j++) { + if (perlEscapes[j].character == s[i]) break; + } + if (perlEscapes[j].character) { + fputs(perlEscapes[j].escape, f); + current_column += strlen(perlEscapes[j].escape); + } else { + putc(s[i], f); + current_column++; + } + if (s[i] == '\n') { + current_column = 0; + } + } + fputs ("'", f); + current_column += 3; + } + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "%s", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + for (i = 0; i < valuePtr->len; i++) { + sprintf(&s[strlen(s)], i ? ".%u" : "%u", valuePtr->value.oid[i]); + } + break; + } + + return s; +} + + + +static void fprintNodeStartTag(FILE *f, int indent, const char *tag, + SmiNode *smiNode) +{ + unsigned int i; + + fprintSegment(f, indent, "", 0); + fprint(f, "{\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"name\" => \"%s\",\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"type\" => \"%s\",\n", tag); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", currentModuleName); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"oid\" => \""); + for (i = 0; i < smiNode->oidlen; i++) { + fprint(f, i ? ".%u" : "%u", smiNode->oid[i]); + } + fprint(f, "\""); + + if (smiNode->create) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "\"create\" => \"true\"", 0); + } + if (smiNode->status != SMI_STATUS_UNKNOWN) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"status\" => \"%s\"", getStringStatus(smiNode->status)); + } + if (smiNode->implied) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "\"implied\" => \"true\"", 0); + } + fprint(f, ",\n"); +} + + + +static void fprintNodeEndTag(FILE *f, int indent, const char *tag, + const char *name) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "}, # %s\n", name); +} + + + +static void fprintRanges(FILE *f, int indent, SmiType *smiType) +{ + SmiRange *range; + SmiValue min, max; + int rc; + + if (! smiGetFirstRange(smiType)) { + return; + } + + fprintSegment(f, indent, "\"ranges\" => (\n", 0); + for (range = smiGetFirstRange(smiType); + range; + range = smiGetNextRange(range)) { + fprintSegment(f, indent, "{\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"min\" => \"%s\",\n", + getValueString(&range->minValue, smiType)); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"max\" => \"%s\"\n", + getValueString(&range->maxValue, smiType)); + fprintSegment(f, indent, "},\n", 0); + } + fprintSegment(f, indent, "),\n", 0); + + rc = smiGetMinMaxRange(smiType, &min, &max); + + if (rc == 0 + && min.basetype != SMI_BASETYPE_UNKNOWN + && max.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "\"range\" => {\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"min\" => \"%s\",\n", + getValueString(&min, smiType)); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"max\" => \"%s\"\n", + getValueString(&max, smiType)); + fprintSegment(f, indent, "},\n", 0); + } +} + + + +static void fprintNamedNumbers(FILE *f, int indent, SmiType *smiType) +{ + SmiNamedNumber *nn; + + if ((smiType->basetype != SMI_BASETYPE_ENUM) && + (smiType->basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + fprintSegment(f, indent, "\"", 0); + fprint(f, "%s\" => ", nn->name); + fprint(f, "\"%s\",\n", getValueString(&nn->value, smiType)); + } +} + + + +static void fprintValue(FILE *f, int indent, SmiValue *smiValue, + SmiType *smiType) +{ + if (smiType && smiValue && smiValue->basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "\"DEFVAL\" => ", 0); + fprint(f, "\"%s\"", getValueString(smiValue, smiType)); + fprint(f, ",\n"); + } +} + + + +static void fprintDescription(FILE *f, int indent, const char *description) +{ + if (description) { + fprintSegment(f, indent, "\"description\" =>\n", 0); + fprintMultilineString(f, indent, description); + fprint(f, ",\n"); + } +} + + + +static void fprintReference(FILE *f, int indent, const char *reference) +{ + if (reference) { + fprintSegment(f, indent, "\"reference>\" =>\n", 0); + fprintMultilineString(f, indent, reference); + fprint(f, ",\n"); + } +} + + + +static void fprintFormat(FILE *f, int indent, const char *format) +{ + if (format) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"DISPLAY-HINT\" => \"%s\",\n", format); + } +} + + + +static void fprintUnits(FILE *f, int indent, const char *units) +{ + if (units) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"UNITS\" => \"%s\",\n", units); + } +} + + + +static void fprintAccess(FILE *f, int indent, SmiAccess smiAccess) +{ + if (smiAccess != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"access\" => \"%s\",\n", getAccessString(smiAccess)); + } +} + + + +static void fprintElementList(FILE *f, int indent, const char *tag, + SmiElement *smiElement, int asArray) +{ + SmiModule *smiModule; + SmiNode *smiNode; + + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + smiModule = smiGetNodeModule(smiNode); + fprintSegment(f, indent, "", 0); + if (tag) { + if (asArray) { + fprint(f, "{\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"name\" => \"%s\",\n", smiNode->name); + } else { + fprint(f, "\"%s\" => {\n", smiNode->name); + } + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"type\" => \"%s\",\n", tag); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" => \"%s\"\n", smiModule->name); + fprintSegment(f, indent, "},\n", 0); + } else { + if (asArray) { + fprint(f, "{ \"module\" => \"%s\", ", smiModule->name); + fprint(f, "\"name\" => \"%s\" },\n", smiNode->name); + } else { + fprint(f, "\"%s\" => \"%s\",\n", smiNode->name, smiModule->name); + } + } + } +} + + + +static void fprintIndexModule(FILE *f, int indent, const char *modname, + const char *nodename, const char *indexkind) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" => {\n", indexkind); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", modname); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"name\" => \"%s\",\n", nodename); + fprintSegment(f, indent, "},\n", 0); +} + + + +static void fprintIndex(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *relatedNode; + SmiModule *relatedModule = NULL; + + if (smiNode->implied) { + fprintSegment(f, indent, "\"indeximplied\" => \"true\",\n", 0); + } + + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + relatedModule = smiGetNodeModule(relatedNode); + } + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + fprintSegment(f, indent, "\"index\" => [\n", 0); + fprintElementList(f, indent + INDENT, NULL, + smiGetFirstElement(smiNode), 1); + fprintSegment(f, indent, "], #index\n", 0); + break; + case SMI_INDEX_AUGMENT: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "augments"); + } /* TODO: else print error */ + break; + case SMI_INDEX_REORDER: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "reorders"); + fprintSegment(f, indent, "\"index\" => [\n", 0); + fprintElementList(f, indent + INDENT, NULL, + smiGetFirstElement(smiNode), 1); + fprintSegment(f, indent, "], #index\n", 0); + } /* TODO: else print error */ + break; + case SMI_INDEX_SPARSE: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "sparse"); + } /* TODO: else print error */ + break; + case SMI_INDEX_EXPAND: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "expands"); + } /* TODO: else print error */ + break; + case SMI_INDEX_UNKNOWN: + break; + } +} + + + +static void fprintModule(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + int i; + int there_were_revisions = 0; + + currentModuleName = smiModule->name; + + if (smiModule->organization) { + fprintSegment(f, INDENT, "\"organization\" =>", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->organization); + fprint(f, ",\n"); + } + + if (smiModule->contactinfo) { + fprintSegment(f, INDENT, "\"contact\" =>", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->contactinfo); + fprint(f, ",\n"); + } + fprintDescription(f, INDENT, smiModule->description); + fprintReference(f, INDENT, smiModule->reference); + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + if (i == 0) { + fprintSegment(f, INDENT, "\"revisions\" => [\n", 0); + there_were_revisions = 1; + } + fprintSegment(f, 2 * INDENT, "{\n", 0); + fprintSegment(f, 3 * INDENT, "", 0); + fprint(f, "\"date\" => \"%s\",\n", + getTimeString(smiRevision->date)); + fprintDescription(f, 3 * INDENT, smiRevision->description); + fprintSegment(f, 2 * INDENT, "},\n", 0); + i++; + } + if (there_were_revisions) { + fprintSegment(f, INDENT, "],\n", 0); + } + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"identity\" => \"%s\",\n", smiNode->name); + } + fprint(f, "\n"); +} + + + +static void fprintImports(FILE *f, SmiModule *smiModule) +{ + SmiImport *smiImport; + SmiIdentifier lastModule = NULL; + int i; + + for (i = 0, smiImport = smiGetFirstImport(smiModule); + smiImport; + i++, + smiImport = smiGetNextImport(smiImport)) { + if (i == 0) { + fprintSegment(f, INDENT, "\"imports\" => [\n", 0); + } + if (smiImport->module == NULL) + continue; + + if ( lastModule == NULL || strcmp(lastModule, smiImport->module)) { + if ( lastModule ) { + fprintSegment(f, 3 * INDENT, "]\n", 0); + fprintSegment(f, 2 * INDENT, "},\n", 0); + } + fprintSegment(f, 2 * INDENT, "{\n", 0); + fprintSegment(f, 3 * INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", + smiImport->module); + fprintSegment(f, 3 * INDENT, "\"names\" => [\n", 0); + } + fprintSegment(f, 4 * INDENT, "", 0); + fprint(f, "\"%s\",\n", smiImport->name); + lastModule = smiImport->module; + } + if (lastModule) { + fprintSegment(f, 3 * INDENT, "],\n", 0); + fprintSegment(f, 2 * INDENT, "}\n", 0); + } + + if (i) { + fprintSegment(f, INDENT, "], # imports\n\n", 0); + } +} + + + +static void fprintTypedef(FILE *f, int indent, SmiType *smiType) +{ + SmiModule *parentModule; + SmiType *parentType; + + fprintSegment(f, indent, "", 0); + if (smiType->name) { + fprint(f, "\"%s\" => ", smiType->name); + } + fprint(f, "{\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"basetype\" => \"%s\",\n", + getStringBasetype(smiType->basetype)); + if (smiType->name && smiType->status != SMI_STATUS_UNKNOWN) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"status\" => \"%s\",\n", getStringStatus(smiType->status)); + } + + parentType = smiGetParentType(smiType); + parentModule = smiGetTypeModule(parentType); + if (parentType && parentModule && strlen(parentModule->name)) { + fprintSegment(f, indent + INDENT, "\"parent\" => {\n", 0); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"module\" => \"%s\",\n", parentModule->name); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"name\" => \"%s\",\n", parentType->name); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + fprintRanges(f, indent + INDENT, smiType); + fprintNamedNumbers(f, indent + INDENT, smiType); + fprintValue(f, indent + INDENT, &smiType->value, smiType); + fprintFormat(f, indent + INDENT, smiType->format); + fprintUnits(f, indent + INDENT, smiType->units); + fprintDescription(f, indent + INDENT, smiType->description); + fprintReference(f, indent + INDENT, smiType->reference); + + fprintSegment(f, indent, "},", 0); + if (smiType->name) { + fprint(f, " # %s\n", smiType->name); + } else { + fprint(f, "\n", smiType->name); + } +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; + i++, smiType = smiGetNextType(smiType)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"typedefs\" => {\n", 0); + } + fprintTypedef(f, 2 * INDENT, smiType); + } + + if (i) { + fprintSegment(f, INDENT, "}, # typedefs\n\n", 0); + } +} + + + +static void fprintNode(FILE *f, int indent, SmiNode *smiNode, + SmiNode *lastSmiNode) +{ + SmiModule *smiModule; + SmiType *smiType; + char *tag = NULL; + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + tag = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + tag = "capabilities"; + } else if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + tag = "table"; + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + /* indent += INDENT; */ + tag = "row"; + } else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + /* indent += 2 * INDENT; */ + tag = "column"; + } else if (smiNode->nodekind == SMI_NODEKIND_SCALAR) { + tag = "scalar"; + } + +/* if (lastSmiNode */ +/* && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN */ +/* && smiNode->nodekind != SMI_NODEKIND_COLUMN) { */ +/* printNodeEndTag(indent + INDENT, "row", smiNode->name); */ +/* printNodeEndTag(indent, "table", smiNode->name); */ +/* } */ + + smiType = smiGetNodeType(smiNode); + + fprintNodeStartTag(f, indent, tag, smiNode); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + if (smiType && (smiType->basetype != SMI_BASETYPE_UNKNOWN)) { + fprintSegment(f, indent + INDENT, "\"syntax\" => {\n", 0); + smiModule = smiGetTypeModule(smiType); + fprintSegment(f, indent + 2 *INDENT, "", 0); + fprint(f, "\"type\" => "); + if (smiType->name && smiModule) { + fprint(f, "{ \"module\" => \"%s\", \"name\" => \"%s\"},\n", + smiModule->name, smiType->name); + } else { + fprint(f, "\n"); + fprintTypedef(f, indent + 2 * INDENT, smiType); + } + fprintSegment(f, indent + INDENT, "},\n", 0); + } + if ((smiNode->nodekind != SMI_NODEKIND_TABLE) && + (smiNode->nodekind != SMI_NODEKIND_ROW) && + (smiNode->nodekind != SMI_NODEKIND_CAPABILITIES) && + (smiNode->nodekind != SMI_NODEKIND_NODE)) { + fprintAccess(f, indent + INDENT, smiNode->access); + } + if (smiType) { + fprintValue(f, indent + INDENT, &smiNode->value, smiType); + } + fprintFormat(f, indent + INDENT, smiNode->format); + fprintUnits(f, indent + INDENT, smiNode->units); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + fprintIndex(f, indent + INDENT, smiNode); + } + + fprintNodeEndTag(f, indent, tag, smiNode->name); +} + + + +static void fprintNodes(FILE *f, SmiModule *smiModule) +{ + int i; + SmiNode *smiNode, *lastSmiNode; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for (i = 0, + lastSmiNode = NULL, + smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; + i++, + lastSmiNode = smiNode, + smiNode = smiGetNextNode(smiNode, nodekinds)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"nodes\" => [\n", 0); + } + + fprintNode(f, 2 * INDENT, smiNode, lastSmiNode); + } + +/* if (lastSmiNode */ +/* && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN) { */ +/* printNodeEndTag(3 * INDENT, "row", smiNode->name); */ +/* printNodeEndTag(2 * INDENT, "table", smiNode->name); */ +/* } */ + + if (i) { + fprintSegment(f, INDENT, "], # nodes\n\n", 0); + } +} + + + +static void fprintNotification(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "notification", smiNode); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintSegment(f, indent + INDENT, "\"objects\" => [\n", 0); + fprintElementList(f, indent + 2 * INDENT, NULL, + smiGetFirstElement(smiNode), 1); + fprintSegment(f, indent + INDENT, "],\n", 0); + + fprintNodeEndTag(f, indent, "notification", smiNode->name); +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"notifications\" => [\n", 0); + } + fprintNotification(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "], # notifications\n\n", 0); + } +} + + + +static void fprintGroup(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "group", smiNode); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintSegment(f, indent + INDENT, "\"members\" => [\n", 0); + fprintElementList(f, indent + 2 * INDENT, NULL, + smiGetFirstElement(smiNode), 1); + fprintSegment(f, indent + INDENT, "], # members\n", 0); + + fprintNodeEndTag(f, indent, "group", smiNode->name); +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"groups\" => [\n", 0); + } + fprintGroup(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "], # groups\n\n", 0); + } +} + + + +static void fprintComplGroups(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *optSmiNode; + SmiModule *optSmiModule; + SmiOption *smiOption; + + if (! smiGetFirstElement(smiNode) && !smiGetFirstOption(smiNode)) { + return; + } + + fprintSegment(f, indent, "\"requires\" => [\n", 0); + fprintElementList(f, indent + INDENT, "mandatory", + smiGetFirstElement(smiNode), 1); + + for(smiOption = smiGetFirstOption(smiNode); + smiOption; + smiOption = smiGetNextOption(smiOption)) { + optSmiNode = smiGetOptionNode(smiOption); + optSmiModule = smiGetNodeModule(optSmiNode); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"%s\" => {\n", optSmiNode->name); + fprintSegment(f, indent + 2*INDENT, "\"type\" => \"optional\",\n", 0); + fprintSegment(f, indent + 2*INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", optSmiModule->name); + fprintDescription(f, indent + 2 * INDENT, smiOption->description); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + + fprintSegment(f, indent, "], # requires\n", 0); +} + + + +static void fprintRefinement(FILE *f, int indent, SmiRefinement *smiRefinement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + SmiType *smiType; + + smiNode = smiGetRefinementNode(smiRefinement); + smiModule = smiGetNodeModule(smiNode); + + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" => {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" => \"%s\",\n", smiModule->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\"syntax\" => {\n", 0); + fprintSegment(f, indent + 2*INDENT, "\"type\" => ", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\"writesyntax\" => {\n", 0); + fprintSegment(f, indent + 2*INDENT, "\"type\" => ", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintAccess(f, indent + INDENT, smiRefinement->access); + } + fprintDescription(f, indent + INDENT, smiRefinement->description); + fprintSegment(f, indent, "},\n", 0); +} + + + +static void fprintRefinements(FILE *f, int indent, SmiNode *smiNode) +{ + SmiRefinement *smiRefinement; + int i; + + for(i = 0, smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + i++, smiRefinement = smiGetNextRefinement(smiRefinement)) { + + if (!i) { + fprintSegment(f, indent, "\"refinements\" => {\n", 0); + } + + fprintRefinement(f, indent + INDENT, smiRefinement); + } + + if (i) { + fprintSegment(f, indent, "}, # refinements\n\n", 0); + } +} + + + +static void fprintCompliance(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "compliance", smiNode); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintComplGroups(f, indent + INDENT, smiNode); + fprintRefinements(f, indent + INDENT, smiNode); + + fprintNodeEndTag(f, indent, "compliance", smiNode->name); +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (!i) { + fprintSegment(f, INDENT, "\"compliances\" => [\n", 0); + } + + fprintCompliance(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "], # compliances\n\n", 0); + } +} + + + +static void dumpPerlModule(FILE *f, SmiModule *smiModule) +{ + time_t now; + char *lang; + + now = time(NULL); + fprint(f, "# Perl version 5\t\t\t\t\t\tDO NOT EDIT\n#\n"); + fprint(f, "# Generated by smidump " SMI_VERSION_STRING ":\n#\n"); + fprintf(f, "# smidump -f perl %s\n\n", smiModule->name); + + fprint(f, "{\n"); + + fprint(f, "\"%s\" => {\n", smiModule->name); + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"name\" => \"%s\",\n\n", smiModule->name); + + fprintSegment(f, INDENT, "# Compiler Info\n", 0); + fprint(f, ""); + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"path\" => \"%s\",\n", smiModule->path); + + lang = getStringLanguage(smiModule->language); + if (lang) { + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"language\" => \"%s\",\n", lang); + } + + fprint(f, "\n"); + fprintSegment(f, INDENT, "# Module Identity\n", 0); + fprintModule(f, smiModule); + + fprintSegment(f, INDENT, "# Imports\n", 0); + fprintImports(f, smiModule); + fprintSegment(f, INDENT, "# Module Body\n", 0); + fprintTypedefs(f, smiModule); + fprintNodes(f, smiModule); + fprintNotifications(f, smiModule); + fprintGroups(f, smiModule); + fprintCompliances(f, smiModule); + + fprint(f, " } # %s\n", smiModule->name); + fprint(f, "};\n"); +} + + + +static void dumpPerl(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + dumpPerlModule(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initPerl() +{ + static SmidumpDriver driver = { + "perl", + dumpPerl, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "Perl MIB dictionaries", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-python.c b/tools/dump-python.c new file mode 100644 index 0000000..5798cea --- /dev/null +++ b/tools/dump-python.c @@ -0,0 +1,1112 @@ +/* + * dump-python.c -- + * + * Operations to dump SMIng module information in Python format. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2000 WideAwake Ltd. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-python.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * + * - value representations (getValueString()) + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 4 /* column to start multiline texts */ +#define INDENTMAX 64 /* max column to fill, break lines otherwise */ + + +static int silent = 0; + + +typedef struct PythonEscape { + char character; + char *escape; +} PythonEscape; + +static PythonEscape pythonEscapes [] = { + { 0, NULL } +}; + + +static int current_column = 0; + +static char* currentModuleName = NULL; + +static char *getStringLanguage(SmiLanguage lang) +{ + return + (lang == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (lang == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (lang == SMI_LANGUAGE_SMING) ? "SMIng" : + NULL; +} + + + +static char *getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; +} + + + +static char *getAccessString(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "noaccess" : + (access == SMI_ACCESS_NOTIFY) ? "notifyonly" : + (access == SMI_ACCESS_READ_ONLY) ? "readonly" : + (access == SMI_ACCESS_READ_WRITE) ? "readwrite" : + ""; +} + + + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getTimeString(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, j, len; + +#ifdef INDENTTEXTS + fprintSegment(f, column + INDENTTEXTS, "", 0); +#endif + if (s) { + fputs("\"\"\"", f); + current_column += 3; + len = strlen(s); + for (i=0; i < len; i++) { + for (j = 0; pythonEscapes[j].character; j++) { + if (pythonEscapes[j].character == s[i]) break; + } + if (pythonEscapes[j].character) { + fputs(pythonEscapes[j].escape, f); + current_column += strlen(pythonEscapes[j].escape); + } else { + putc(s[i], f); + current_column++; + } + if (s[i] == '\n') { + current_column = 0; +#ifdef INDENTTEXTS + /* printSegment(column + INDENTTEXTS, "", 0); */ +#endif + } + } + fputs("\"\"\"", f); + current_column += 3; + } + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "%s", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + for (i = 0; i < valuePtr->len; i++) { + sprintf(&s[strlen(s)], i ? ".%u" : "%u", valuePtr->value.oid[i]); + } + break; + } + + return s; +} + + + +static void fprintNodeStartTag(FILE *f, int indent, const char *tag, + SmiNode *smiNode) +{ + unsigned int i; + + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" : {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"nodetype\" : \"%s\",\n", tag); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"moduleName\" : \"%s\",\n", currentModuleName); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"oid\" : \""); + for (i = 0; i < smiNode->oidlen; i++) { + fprint(f, i ? ".%u" : "%u", smiNode->oid[i]); + } + fprint(f, "\""); + + if (smiNode->create) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "\"create\" : \"true\"", 0); + } + if (smiNode->status != SMI_STATUS_UNKNOWN) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"status\" : \"%s\"", getStringStatus(smiNode->status)); + } + if (smiNode->implied) { + fprint(f, ",\n"); + fprintSegment(f, indent + INDENT, "\"implied\" : \"true\"", 0); + } + fprint(f, ",\n"); +} + + + +static void fprintNodeEndTag(FILE *f, int indent, const char *tag) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "}, # %s\n", tag); +} + + + +static void fprintRanges(FILE *f, int indent, SmiType *smiType) +{ + SmiRange *range; + SmiValue min, max; + int rc; + + if (! smiGetFirstRange(smiType)) { + return; + } + + fprintSegment(f, indent, "\"ranges\" : [\n", 0); + for (range = smiGetFirstRange(smiType); + range; + range = smiGetNextRange(range)) { + fprintSegment(f, indent, "{\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"min\" : \"%s\",\n", + getValueString(&range->minValue, smiType)); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"max\" : \"%s\"\n", + getValueString(&range->maxValue, smiType)); + fprintSegment(f, indent, "},\n", 0); + } + fprintSegment(f, indent, "],\n", 0); + + rc = smiGetMinMaxRange(smiType, &min, &max); + + if (rc == 0 + && min.basetype != SMI_BASETYPE_UNKNOWN + && max.basetype != SMI_BASETYPE_UNKNOWN) { + + fprintSegment(f, indent, "\"range\" : {\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"min\" : \"%s\",\n", getValueString(&min, smiType)); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"max\" : \"%s\"\n", getValueString(&max, smiType)); + fprintSegment(f, indent, "},\n", 0); + } +} + + + +static void fprintNamedNumbers(FILE *f, int indent, SmiType *smiType) +{ + SmiNamedNumber *nn; + + if ((smiType->basetype != SMI_BASETYPE_ENUM) && + (smiType->basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + fprintSegment(f, indent, "\"", 0); + fprint(f, "%s\" : {\n", nn->name); + fprintSegment(f, indent + INDENT, + "\"nodetype\" : \"namednumber\",\n", 0); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"number\" : \"%s\"\n", + getValueString(&nn->value, smiType)); + fprintSegment(f, indent, "},\n", 0); + } +} + + + +static void fprintValue(FILE *f, int indent, SmiValue *smiValue, + SmiType *smiType) +{ + if (smiType && smiValue && smiValue->basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "\"default\" : ", 0); + fprint(f, "\"%s\"", getValueString(smiValue, smiType)); + fprint(f, ",\n"); + } +} + + + +static void fprintDescription(FILE *f, int indent, const char *description) +{ + if (description) { + fprintSegment(f, indent, "\"description\" :\n", 0); + fprintMultilineString(f, indent, description); + fprint(f, ",\n"); + } +} + + + +static void fprintReference(FILE *f, int indent, const char *reference) +{ + if (reference) { + fprintSegment(f, indent, "\"reference>\" :\n", 0); + fprintMultilineString(f, indent, reference); + fprint(f, ",\n"); + } +} + + + +static void fprintFormat(FILE *f, int indent, const char *format) +{ + if (format) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"format\" : \"%s\",\n", format); + } +} + + + +static void fprintUnits(FILE *f, int indent, const char *units) +{ + if (units) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"units\" : \"%s\",\n", units); + } +} + + + +static void fprintAccess(FILE *f, int indent, SmiAccess smiAccess) +{ + if (smiAccess != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, indent, "", 0); + fprint(f, "\"access\" : \"%s\",\n", getAccessString(smiAccess)); + } +} + + + +static void fprintElementList(FILE *f, int indent, const char *tag, + SmiElement *smiElement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + smiModule = smiGetNodeModule(smiNode); + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" : {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"nodetype\" : \"%s\",\n", tag); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" : \"%s\"\n", smiModule->name); + fprintSegment(f, indent, "},\n", 0); + } +} + +static void fprintListElement(FILE *f, int indent, const char *tag, + SmiElement *smiElement) +{ + SmiNode *smiNode; + + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\",\n", smiNode->name); + } +} + + + +static void fprintIndexModule(FILE *f, int indent, const char *modname, + const char *nodename, const char *indexkind) +{ + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "{ \"%s\" : {\n", modname); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"indexkind\" : \"%s\",\n", indexkind); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"relatedNode\" : \"%s\",\n", nodename); + fprintSegment(f, indent + INDENT, "}},\n", 0); +} + + + +static void fprintIndex(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *relatedNode; + SmiModule *relatedModule = NULL; + + fprintSegment(f, indent, "\"linkage\" : [\n", 0); + if (smiNode->implied) { + /* fprintSegment(f, indent + INDENT, "\"implied\" : \"true\",\n", 0); */ + } + + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + relatedModule = smiGetNodeModule(relatedNode); + } + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + fprintListElement(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + break; + case SMI_INDEX_AUGMENT: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "augments"); + } /* TODO: else print error */ + break; + case SMI_INDEX_REORDER: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "reorders"); + fprintElementList(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + } /* TODO: else print error */ + break; + case SMI_INDEX_SPARSE: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "sparse"); + } /* TODO: else print error */ + break; + case SMI_INDEX_EXPAND: + if (relatedNode && relatedModule) { + fprintIndexModule(f, indent, relatedModule->name, + relatedNode->name, "expands"); + } /* TODO: else print error */ + break; + case SMI_INDEX_UNKNOWN: + break; + } + fprintSegment(f, indent, "],\n", 0); +} + + + +static void fprintModule(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + int i; + char *lang; + int there_were_revisions = 0; + + lang = getStringLanguage(smiModule->language); + currentModuleName = smiModule->name; + + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"%s\" : {\n", smiModule->name); + fprintSegment(f, 2 * INDENT, "\"nodetype\" : \"module\",\n", 0); + if (lang) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "\"language\" : \"%s\",\n", lang); + } + + if (smiModule->organization) { + fprintSegment(f, 2 * INDENT, "\"organization\" :", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiModule->organization); + fprint(f, ",\n"); + } + + if (smiModule->contactinfo) { + fprintSegment(f, 2 * INDENT, "\"contact\" :", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiModule->contactinfo); + fprint(f, ",\n"); + } + fprintDescription(f, 2 * INDENT, smiModule->description); + fprintReference(f, 2 * INDENT, smiModule->reference); + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + if (i == 0) { + fprintSegment(f, 2 * INDENT, "\"revisions\" : (\n", 0); + there_were_revisions = 1; + } + fprintSegment(f, 3 * INDENT, "{\n", 0); + fprintSegment(f, 4 * INDENT, "", 0); + fprint(f, "\"date\" : \"%s\",\n", + getTimeString(smiRevision->date)); + fprintDescription(f, 4 * INDENT, smiRevision->description); + fprintSegment(f, 3 * INDENT, "},\n", 0); + i++; + } + if (there_were_revisions) { + fprintSegment(f, 2 * INDENT, "),\n", 0); + } + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "\"identity node\" : \"%s\",\n", smiNode->name); + } + + fprintSegment(f, INDENT, "},\n\n", 0); +} + + + +static void fprintImport(FILE *f, int indent, SmiImport *smiImport) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "{\"module\" : \"%s\", \"name\" : \"%s\"},\n", + smiImport->module, smiImport->name); +} + + + +static void fprintImports(FILE *f, SmiModule *smiModule) +{ + SmiImport *smiImport; + int i; + + for (i = 0, smiImport = smiGetFirstImport(smiModule); + smiImport; + i++, smiImport = smiGetNextImport(smiImport)) { + if (i == 0) { + fprintSegment(f, INDENT, "\"imports\" : (\n", 0); + } + fprintImport(f, 2 * INDENT, smiImport); + } + + if (i) { + fprintSegment(f, INDENT, "),\n\n", 0); + } +} + + + +static void fprintTypedef(FILE *f, int indent, SmiType *smiType) +{ + SmiModule *parentModule; + SmiType *parentType; + + fprintSegment(f, indent, "", 0); + if (smiType->name) { + fprint(f, "\"%s\" : ", smiType->name); + } + fprint(f, "{\n"); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"basetype\" : \"%s\",\n", + getStringBasetype(smiType->basetype)); + if (smiType->name && smiType->status != SMI_STATUS_UNKNOWN) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"status\" : \"%s\",\n", getStringStatus(smiType->status)); + } + + parentType = smiGetParentType(smiType); + parentModule = smiGetTypeModule(parentType); + if (parentType && parentType->name && + parentModule && strlen(parentModule->name)) { + fprintSegment(f, indent + INDENT, "\"parent module\" : {\n", 0); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"name\" : \"%s\",\n", parentModule->name); + fprintSegment(f, indent + (2 * INDENT), "", 0); + fprint(f, "\"type\" : \"%s\",\n", parentType->name); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + fprintRanges(f, indent + INDENT, smiType); + fprintNamedNumbers(f, indent + INDENT, smiType); + fprintValue(f, indent + INDENT, &smiType->value, smiType); + fprintFormat(f, indent + INDENT, smiType->format); + fprintUnits(f, indent + INDENT, smiType->units); + fprintDescription(f, indent + INDENT, smiType->description); + fprintReference(f, indent + INDENT, smiType->reference); + + fprintSegment(f, indent, "},\n", 0); +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; + i++, smiType = smiGetNextType(smiType)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"typedefs\" : {\n", 0); + } + fprintTypedef(f, 2 * INDENT, smiType); + } + + if (i) { + fprintSegment(f, INDENT, "}, # typedefs\n\n", 0); + } +} + + + +static void fprintNode(FILE *f, int indent, SmiNode *smiNode, + SmiNode *lastSmiNode) +{ + SmiModule *smiModule; + SmiType *smiType; + char *tag = NULL; + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + tag = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + tag = "capabilities"; + } else if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + tag = "table"; + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + /* indent += INDENT; */ + tag = "row"; + } else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + /* indent += 2 * INDENT; */ + tag = "column"; + } else if (smiNode->nodekind == SMI_NODEKIND_SCALAR) { + tag = "scalar"; + } + +/* if (lastSmiNode */ +/* && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN */ +/* && smiNode->nodekind != SMI_NODEKIND_COLUMN) { */ +/* printNodeEndTag(indent + INDENT, "row"); */ +/* printNodeEndTag(indent, "table"); */ +/* } */ + + smiType = smiGetNodeType(smiNode); + + fprintNodeStartTag(f, indent, tag, smiNode); + if (smiType && (smiType->basetype != SMI_BASETYPE_UNKNOWN)) { + fprintSegment(f, indent + INDENT, "\"syntax\" : {\n", 0); + smiModule = smiGetTypeModule(smiType); + fprintSegment(f, indent + 2 *INDENT, "", 0); + fprint(f, "\"type\" : "); + if (smiType->name && smiModule) { + fprintf(f, "{ \"module\" :\"%s\", \"name\" : \"%s\"},\n", + smiModule->name, smiType->name); + } else { + fprintTypedef(f, indent + 2 * INDENT, smiType); + } + fprintSegment(f, indent + INDENT, "},\n", 0); + } + if ((smiNode->nodekind != SMI_NODEKIND_TABLE) && + (smiNode->nodekind != SMI_NODEKIND_ROW) && + (smiNode->nodekind != SMI_NODEKIND_CAPABILITIES) && + (smiNode->nodekind != SMI_NODEKIND_NODE)) { + fprintAccess(f, indent + INDENT, smiNode->access); + } + if (smiType) { + fprintValue(f, indent + INDENT, &smiNode->value, smiType); + } + fprintFormat(f, indent + INDENT, smiNode->format); + fprintUnits(f, indent + INDENT, smiNode->units); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + fprintIndex(f, indent + INDENT, smiNode); + } + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + +#if 0 + if (smiNode->nodekind != SMI_NODEKIND_ROW + && smiNode->nodekind != SMI_NODEKIND_TABLE) { + fprintNodeEndTag(f, indent, tag); + } +#else + fprintNodeEndTag(f, indent, tag); +#endif +} + + + +static void fprintNodes(FILE *f, SmiModule *smiModule) +{ + int i; + SmiNode *smiNode, *lastSmiNode; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for (i = 0, + lastSmiNode = NULL, + smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; + i++, + lastSmiNode = smiNode, + smiNode = smiGetNextNode(smiNode, nodekinds)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"nodes\" : {\n", 0); + } + + fprintNode(f, 2 * INDENT, smiNode, lastSmiNode); + } + +/* if (lastSmiNode */ +/* && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN) { */ +/* printNodeEndTag(3 * INDENT, "row"); */ +/* printNodeEndTag(2 * INDENT, "table"); */ +/* } */ + + if (i) { + fprintSegment(f, INDENT, "}, # nodes\n\n", 0); + } +} + + + +static void fprintNotification(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "notification", smiNode); + + fprintSegment(f, indent + INDENT, "\"objects\" : {\n", 0); + fprintElementList(f, indent + 2 * INDENT, "object", + smiGetFirstElement(smiNode)); + fprintSegment(f, indent + INDENT, "},\n", 0); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintNodeEndTag(f, indent, "notification"); +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"notifications\" : {\n", 0); + } + fprintNotification(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "}, # notifications\n\n", 0); + } +} + + + +static void fprintGroup(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "group", smiNode); + + fprintSegment(f, indent + INDENT, "\"members\" : {\n", 0); + fprintElementList(f, indent + 2 * INDENT, "member", + smiGetFirstElement(smiNode)); + fprintSegment(f, indent + INDENT, "}, # members\n", 0); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintNodeEndTag(f, indent, "group"); +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\"groups\" : {\n", 0); + } + fprintGroup(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "}, # groups\n\n", 0); + } +} + + + +static void fprintComplGroups(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *optSmiNode; + SmiModule *optSmiModule; + SmiOption *smiOption; + + if (! smiGetFirstElement(smiNode) && !smiGetFirstOption(smiNode)) { + return; + } + + fprintSegment(f, indent, "\"requires\" : {\n", 0); + fprintElementList(f, indent + INDENT, "mandatory", + smiGetFirstElement(smiNode)); + + for(smiOption = smiGetFirstOption(smiNode); + smiOption; + smiOption = smiGetNextOption(smiOption)) { + optSmiNode = smiGetOptionNode(smiOption); + optSmiModule = smiGetNodeModule(optSmiNode); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"%s\" : {\n", optSmiNode->name); + fprintSegment(f, indent + 2*INDENT, + "\"nodetype\" : \"optional\",\n", 0); + fprintSegment(f, indent + 2*INDENT, "", 0); + fprint(f, "\"module\" : \"%s\",\n", optSmiModule->name); + fprintDescription(f, indent + 2 * INDENT, smiOption->description); + fprintSegment(f, indent + INDENT, "},\n", 0); + } + + fprintSegment(f, indent, "}, # requires\n", 0); +} + + + +static void fprintRefinement(FILE *f, int indent, SmiRefinement *smiRefinement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + SmiType *smiType; + + smiNode = smiGetRefinementNode(smiRefinement); + smiModule = smiGetNodeModule(smiNode); + + fprintSegment(f, indent, "", 0); + fprint(f, "\"%s\" : {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\"module\" : \"%s\",\n", smiModule->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\"syntax\" : {\n", 0); + fprintSegment(f, indent + 2*INDENT, "\"type\" : ", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "}, # syntax\n", 0); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\"writesyntax\" : {\n", 0); + fprintSegment(f, indent + 2*INDENT, "\"type\" : ", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "}, # writesyntax\n", 0); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintAccess(f, indent + INDENT, smiRefinement->access); + } + fprintDescription(f, indent + INDENT, smiRefinement->description); + fprintSegment(f, indent, "},\n", 0); +} + + + +static void fprintRefinements(FILE *f, int indent, SmiNode *smiNode) +{ + SmiRefinement *smiRefinement; + int i; + + for(i = 0, smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + i++, smiRefinement = smiGetNextRefinement(smiRefinement)) { + + if (!i) { + fprintSegment(f, indent, "\"refinements\" : {\n", 0); + } + + fprintRefinement(f, indent + INDENT, smiRefinement); + } + + if (i) { + fprintSegment(f, indent, "}, # refinements\n\n", 0); + } +} + + + +static void fprintCompliance(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "compliance", smiNode); + + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + fprintComplGroups(f, indent + INDENT, smiNode); + fprintRefinements(f, indent + INDENT, smiNode); + + fprintNodeEndTag(f, indent, "compliance"); +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (!i) { + fprintSegment(f, INDENT, "\"compliances\" : {\n", 0); + } + + fprintCompliance(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "}, # compliances\n\n", 0); + } +} + + + +static void dumpPythonModule(FILE *f, SmiModule *smiModule) +{ + if (! silent) { + fprint(f, "# python version 1.0\t\t\t\t\t\tDO NOT EDIT\n#\n"); + fprint(f, "# Generated by smidump version " + SMI_VERSION_STRING ":\n#\n"); + fprintf(f, "# smidump -f python %s\n\n", smiModule->name); + } + + fprint(f, "FILENAME = \"%s\"\n\n", smiModule->path); + + fprint(f, "MIB = {\n"); + fprintSegment(f, INDENT, "", 0); + fprint(f, "\"moduleName\" : \"%s\",\n\n", smiModule->name); + + fprintModule(f, smiModule); + fprintImports(f, smiModule); + fprintTypedefs(f, smiModule); + fprintNodes(f, smiModule); + fprintNotifications(f, smiModule); + fprintGroups(f, smiModule); + fprintCompliances(f, smiModule); + + fprint(f, "}\n"); +} + + + +static void dumpPython(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + dumpPythonModule(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initPython() +{ + static SmidumpDriver driver = { + "python", + dumpPython, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "Python MIB dictionaries", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-scli.c b/tools/dump-scli.c new file mode 100644 index 0000000..34c5c69 --- /dev/null +++ b/tools/dump-scli.c @@ -0,0 +1,3393 @@ +/* + * dump-scli.c -- + * + * Operations to generate MIB module stubs for the scli package. + * + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2002 J. Schoenwaelder, University of Osnabrueck. + * Copyright (c) 2004 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-scli.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * - range checks for 64 bit numbers + */ + +#include + +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + +#include + +#ifdef HAVE_REGEX_H +#include +#else +#define regex_t int +#define regcomp(a, b, c) 1 +#define regexec(a, b, c, d, e) 0 +#define regerror(a,b,c,d) strncpy(c, "regex not supported", d) +#define regfree(a) +#endif + +static char *prefix = NULL; +static char *include = NULL; +static char *exclude = NULL; +static int sflag = 0; +static int cflag = 0; +static int dflag = 0; +static regex_t _incl_regex, *incl_regex = NULL; +static regex_t _excl_regex, *excl_regex = NULL; + +static char *keywords_c99[] = { + "auto", "enum", "restrict", "unsigned", + "break", "extern", "return", "void", + "case", "float", "short", "volatile", + "char", "for", "signed", "while", + "const", "goto", "sizeof", "_Bool", + "continue", "if", "static", "_Complex", + "default", "inline", "struct", "_Imaginary", + "do", "int", "switch", + "double", "long", "typedef", + "else", "register", "union", + NULL +}; + + + +static int +isKeyword(char *m) +{ + int i; + + for (i = 0; keywords_c99[i]; i++) { + if (strcmp(m, keywords_c99[i]) == 0) { + return 1; + } + } + return 0; +} + + + +static char * +getStringTime(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void +fprintCommentString(FILE *f, char *s) +{ + int i, len; + + if (s) { + fprintf(f, " * "); + len = strlen(s); + for (i = 0; i < len; i++) { + fputc(s[i], f); + if (s[i] == '\n') { + fprintf(f, " * "); + } + } + fputc('\n', f); + } +} + + + +static void +fprintTopComment(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + char *date; + + fprintf(f, + "/* \t\t\t\t\t\t-- DO NOT EDIT --\n" + " * Generated by smidump version " SMI_VERSION_STRING ":\n"); + + fprintf(f, " * smidump -f scli"); + if (sflag) { + fprintf(f, " --scli-set"); + } + if (cflag) { + fprintf(f, " --scli-create"); + } + if (dflag) { + fprintf(f, " --scli-delete"); + } + if (prefix) { + fprintf(f, " \\\n * --scli-prefix='%s'", prefix); + } + if (include) { + fprintf(f, " \\\n * --scli-include='%s'", include); + } + if (exclude) { + fprintf(f, " \\\n * --scli-exclude='%s'", exclude); + } + fprintf(f, " %s\n *\n", smiModule->name); + + fprintf(f, + " * Derived from %s:\n", smiModule->name); + fprintCommentString(f, smiModule->description); + + for (smiRevision = smiGetFirstRevision(smiModule); + smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + date = getStringTime(smiRevision->date); + fprintf(f, + " *\n" + " * Revision %s:\n", date); + fprintCommentString(f, smiRevision->description); + } + +#if 0 + if (smiModule->organization || smiModule->contactinfo) { + fprintf(f, " *\n * Contact:\n"); + printCommentString(f, smiModule->organization); + fprintf(f, " *\n"); + printCommentString(f, smiModule->contactinfo); + } +#endif + + fprintf(f, + " *\n * $I" "d$\n" + " */\n" + "\n"); +} + + + +static char* +translate(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + } + + while (isKeyword(s)) { + s = xrealloc(s, strlen(s) + 2); + strcat(s, "_"); + } + + return s; +} + + + +static char* +translateUpper(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + if (islower((int) s[i])) { + s[i] = toupper(s[i]); + } + } + + while (isKeyword(s)) { + s = xrealloc(s, strlen(s) + 2); + strcat(s, "_"); + } + + return s; +} + + + +static char* +translateLower(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '-') s[i] = '_'; + if (isupper((int) s[i])) { + s[i] = tolower(s[i]); + } + } + + while (isKeyword(s)) { + s = xrealloc(s, strlen(s) + 2); + strcat(s, "_"); + } + + return s; +} + + + +static char* +translateFileName(char *m) +{ + char *s; + int i; + + s = xstrdup(m); + for (i = 0; s[i]; i++) { + if (s[i] == '_') s[i] = '-'; + if (isupper((int) s[i])) { + s[i] = tolower(s[i]); + } + } + + return s; +} + + + +static FILE * +createFile(char *name, char *suffix) +{ + char *fullname; + FILE *f; + + fullname = xmalloc(strlen(name) + (suffix ? strlen(suffix) : 0) + 2); + strcpy(fullname, name); + if (suffix) { + strcat(fullname, suffix); + } + if (!access(fullname, R_OK)) { + fprintf(stderr, "smidump: %s already exists\n", fullname); + xfree(fullname); + return NULL; + } + f = fopen(fullname, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", fullname); + perror(NULL); + xfree(fullname); + exit(1); + } + xfree(fullname); + return f; +} + + + +static int +isGroup(SmiNode *smiNode, SmiNodekind memberkind) +{ + SmiNode *childNode; + int status; + + if (incl_regex) { + if (! smiNode->name) { + return 0; + } + status = regexec(incl_regex, smiNode->name, (size_t) 0, NULL, 0); + if (status != 0) { + return 0; + } + } + + if (excl_regex) { + if (! smiNode->name) { + return 0; + } + status = regexec(excl_regex, smiNode->name, (size_t) 0, NULL, 0); + if (status == 0) { + return 0; + } + } + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind & memberkind) { + return 1; + } + } + + return 0; +} + + + +static int +isAccessible(SmiNode *groupNode) +{ + SmiNode *smiNode; + int num = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if ((smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN) + && (smiNode->access == SMI_ACCESS_READ_ONLY + || smiNode->access == SMI_ACCESS_READ_WRITE)) { + num++; + } + } + + return num; +} + + + +static int +isIndex(SmiNode *groupNode, SmiNode *smiNode) +{ + SmiElement *smiElement; + + /* + * Perhaps this test needs to be more sophisticated if you have + * really creative cross-table indexing constructions... + */ + + for (smiElement = smiGetFirstElement(groupNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + if (smiNode == smiGetElementNode(smiElement)) { + return 1; + } + } + + return 0; +} + + + +static int +isWritable(SmiNode *treeNode, SmiNodekind nodekind) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstChildNode(treeNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (nodekind) + && (smiNode->access >= SMI_ACCESS_READ_WRITE)) { + break; + } + } + + return (smiNode != NULL); +} + + + +static char* +getSnmpType(SmiType *smiType) +{ + struct { + char *module; + char *name; + char *tag; + } typemap[] = { + { "RFC1155-SMI","Counter", "GNET_SNMP_VARBIND_TYPE_COUNTER32" }, + { "SNMPv2-SMI", "Counter32", "GNET_SNMP_VARBIND_TYPE_COUNTER32" }, + { "RFC1155-SMI","TimeTicks", "GNET_SNMP_VARBIND_TYPE_TIMETICKS" }, + { "SNMPv2-SMI", "TimeTicks", "GNET_SNMP_VARBIND_TYPE_TIMETICKS" }, + { "RFC1155-SMI","Opaque", "GNET_SNMP_VARBIND_TYPE_OPAQUE" }, + { "SNMPv2-SMI", "Opaque", "GNET_SNMP_VARBIND_TYPE_OPAQUE" }, + { "RFC1155-SMI","IpAddress", "GNET_SNMP_VARBIND_TYPE_IPADDRESS" }, + { "SNMPv2-SMI", "IpAddress", "GNET_SNMP_VARBIND_TYPE_IPADDRESS" }, + { NULL, NULL, NULL } + }; + + SmiBasetype basetype = smiType->basetype; + + do { + int i; + for (i = 0; typemap[i].name; i++) { + if (smiType->name + && (strcmp(smiType->name, typemap[i].name) == 0)) { + return typemap[i].tag; + } + } + } while ((smiType = smiGetParentType(smiType))); + + switch (basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_ENUM: + return "GNET_SNMP_VARBIND_TYPE_INTEGER32"; + case SMI_BASETYPE_UNSIGNED32: + return "GNET_SNMP_VARBIND_TYPE_UNSIGNED32"; + case SMI_BASETYPE_INTEGER64: + return NULL; + case SMI_BASETYPE_UNSIGNED64: + return "GNET_SNMP_VARBIND_TYPE_COUNTER64"; + case SMI_BASETYPE_OCTETSTRING: + return "GNET_SNMP_VARBIND_TYPE_OCTETSTRING"; + case SMI_BASETYPE_BITS: + return "GNET_SNMP_VARBIND_TYPE_OCTETSTRING"; + case SMI_BASETYPE_OBJECTIDENTIFIER: + return "GNET_SNMP_VARBIND_TYPE_OBJECTID"; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + return NULL; + case SMI_BASETYPE_UNKNOWN: + return NULL; + case SMI_BASETYPE_POINTER: + return NULL; + } + return NULL; +} + + + +typedef void (*ForEachIndexFunc) (FILE *f, SmiNode *groupNode, SmiNode *smiNode, int flags, int maxlen, char *name); + + +/* + * Check whether we have duplicate nodes in the INDEX. If yes, + * generate a unique name. + */ + +static char* +getIndexName(SmiNode *indexNode, SmiNode *iNode, SmiElement *smiElement) +{ + SmiElement *se; + SmiNode *sn; + int n = 0, m = 0, tail = 0; + char *name; + + for (se = smiGetFirstElement(indexNode); + se; se = smiGetNextElement(se)) { + sn = smiGetElementNode(se); + if (strcmp(sn->name, iNode->name) == 0) { + n++; + if (! tail) m++; + } + if (se == smiElement) tail = 1; + } + if (n > 1) { + smiAsprintf(&name, "%s%d", iNode->name, m); + } else { + name = xstrdup(iNode->name); + } + return name; +} + + +static void +foreachIndexDo(FILE *f, SmiNode *smiNode, ForEachIndexFunc func, + int flags, int maxlen) +{ + SmiNode *indexNode = NULL, *iNode; + SmiElement *smiElement; + + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = smiNode; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(smiNode); + break; + case SMI_INDEX_UNKNOWN: + break; + } + if (indexNode) { + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + char *name = getIndexName(indexNode, iNode, smiElement); + (func) (f, smiNode, iNode, flags, maxlen, name); + if (name) xfree(name); + } + } + } +} + + + +static void +printIndexParamsFunc(FILE *f, SmiNode *smiNode, SmiNode *iNode, + int flags, int maxlen, char *name) +{ + SmiType *iType; + char *cName; + unsigned minSize, maxSize; + + iType = smiGetNodeType(iNode); + if (! iType) { + return; + } + + cName = translate(name ? name : iNode->name); + switch (iType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + fprintf(f, ", %s%s", flags ? "guint32 *" : "", cName); + if (minSize != maxSize) { + fprintf(f, ", %s_%sLength", + flags ? "guint16 " : "", cName); + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + fprintf(f, ", %s%s", flags ? "guchar *" : "", cName); + if (minSize != maxSize) { + fprintf(f, ", %s_%sLength", + flags ? "guint16 " : "", cName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, ", %s%s", flags ? "gint32 " : "", cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, ", %s%s", flags ? "guint32 " : "", cName); + break; + default: + fprintf(f, "/* ?? %s */", cName); + break; + } + xfree(cName); +} + + + +static void +printIndexParamsPassFunc(FILE *f, SmiNode *smiNode, SmiNode *iNode, + int flags, int maxlen, char *name) +{ + SmiType *iType; + char *cName, *gName; + unsigned minSize, maxSize; + + iType = smiGetNodeType(iNode); + if (! iType) { + return; + } + + gName = translate(smiNode->name); + cName = translate(iNode->name); + fprintf(f, ", %s->%s", gName, cName); + switch (iType->basetype) { + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (minSize != maxSize) { + fprintf(f, ", %s->_%sLength", gName, cName); + } + break; + default: + break; + } + xfree(cName); + xfree(gName); +} + + + +static void +printIndexAssignmentFunc(FILE *f, SmiNode *smiNode, SmiNode *iNode, + int flags, int maxlen, char *name) +{ + SmiType *iType; + char *cName, *gName, *dName, *dModuleName; + unsigned minSize, maxSize; + + iType = smiGetNodeType(iNode); + if (! iType) { + return; + } + + gName = translate(smiNode->name); + cName = translate(iNode->name); + dName = translateUpper(iNode->name); + dModuleName = translateUpper(smiGetNodeModule(iNode)->name); + switch (iType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + fprintf(f, " memcpy(%s->%s, %s, _%sLength * sizeof(guint32));\n", + gName, cName, cName, cName); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (minSize != maxSize) { + fprintf(f, " memcpy(%s->%s, %s, _%sLength);\n", + gName, cName, cName, cName); + } else { + fprintf(f, " memcpy(%s->%s, %s, %s_%sLENGTH);\n", + gName, cName, cName, dModuleName, dName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, " %s->%s = %s;\n", + gName, cName, cName); + break; + default: + fprintf(f, " /* ?? %s */\n", cName); + break; + } + xfree(dModuleName); + xfree(dName); + xfree(cName); + xfree(gName); +} + + + +static void +printHeaderEnumeration(FILE *f, SmiModule *smiModule, + SmiNode * smiNode, SmiType *smiType) +{ + SmiNamedNumber *nn; + char *cName, *cPrefix; + char *dName, *dModuleName; + char *name; + int len; + + if (smiType && smiType->name) { + name = smiType->name; + } else if (smiNode && smiNode->name) { + name = smiNode->name; + } else { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cName = translate(name); + dName = translateUpper(name); + + for (len = 0, nn = smiGetFirstNamedNumber(smiType); nn; + nn = smiGetNextNamedNumber(nn)) { + if (len < strlen(nn->name)) { + len = strlen(nn->name); + } + } + for (nn = smiGetFirstNamedNumber(smiType); nn; + nn = smiGetNextNamedNumber(nn)) { + char *dEnum = translateUpper(nn->name); + fprintf(f, "#define %s_%s_%-*s %d\n", + dModuleName, dName, len, dEnum, + (int) nn->value.value.integer32); + xfree(dEnum); + } + fprintf(f, "\nextern GNetSnmpEnum const %s_enums_%s[];\n\n", + cPrefix, cName); + + xfree(dName); + xfree(cName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printHeaderEnumerations(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *parentNode; + SmiType *smiType; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + const char *header = + "/*\n" + " * Tables to map enumerations to strings and vice versa.\n" + " */\n" + "\n"; + + for (smiNode = smiGetFirstNode(smiModule, groupkind); + smiNode; + smiNode = smiGetNextNode(smiNode, groupkind)) { + parentNode = smiGetParentNode(smiNode); + if (! parentNode || ! isGroup(parentNode, groupkind)) { + continue; + } + smiType = smiGetNodeType(smiNode); + if (smiType && !smiType->name + && smiType->basetype == SMI_BASETYPE_ENUM + && smiGetTypeModule(smiType) == smiModule) { + if (! cnt) { + fputs(header, f); + } + cnt++; + printHeaderEnumeration(f, smiModule, smiNode, smiType); + } + } + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (smiType->basetype == SMI_BASETYPE_ENUM + && smiGetTypeModule(smiType) == smiModule) { + if (! cnt) { + fputs(header, f); + } + cnt++; + printHeaderEnumeration(f, smiModule, NULL, smiType); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +printHeaderIdentities(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *moduleIdentityNode, *parentNode; + int cnt = 0; + unsigned int i; + char *dName, *dModuleName; + char *cModuleName; + + moduleIdentityNode = smiGetModuleIdentityNode(smiModule); + + dModuleName = translateUpper(smiModule->name); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + parentNode = smiGetParentNode(smiNode); + if (! parentNode || ! isGroup(parentNode, SMI_NODEKIND_NODE)) { + continue; + } + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + if (smiNode == moduleIdentityNode) { + continue; + } + if (! cnt) { + fprintf(f, + "/*\n" + " * Tables to map identities to strings and vice versa.\n" + " */\n" + "\n"); + } + cnt++; + dName = translateUpper(smiNode->name); + fprintf(f, "#define %s_%s\t", dModuleName, dName); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%u", i ? "," : "", smiNode->oid[i]); + } + fprintf(f, "\n"); + xfree(dName); + } + + if (cnt) { + cModuleName = translateLower(smiModule->name); + fprintf(f, + "\n" + "extern GNetSnmpIdentity const %s_identities[];\n" + "\n", + cModuleName); + xfree(cModuleName); + } + + xfree(dModuleName); +} + + + +static void +printHeaderNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + unsigned int i; + char *dName, *dModuleName; + char *cModuleName; + + dModuleName = translateUpper(smiModule->name); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + if (! cnt) { + fprintf(f, + "/*\n" + " * Tables to map notifications to strings and vice versa.\n" + " */\n" + "\n"); + } + cnt++; + dName = translateUpper(smiNode->name); + fprintf(f, "#define %s_%s\t", dModuleName, dName); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%u", i ? "," : "", smiNode->oid[i]); + } + fprintf(f, "\n"); + xfree(dName); + } + + if (cnt) { + cModuleName = translateLower(smiModule->name); + fprintf(f, + "\n" + "extern GNetSnmpIdentity const %s_notifications[];\n" + "\n", + cModuleName); + xfree(cModuleName); + } + + xfree(dModuleName); +} + + + +static void +printParam(FILE *f, SmiNode *smiNode) +{ + char *cName, *dNodeName, *dModuleName; + unsigned minSize, maxSize; + SmiType *smiType; + SmiModule *smiModule; + + smiModule = smiGetNodeModule(smiNode); + smiType = smiGetNodeType(smiNode); + if (! smiType) { + return; + } + + cName = translate(smiNode->name); + dNodeName = translateUpper(smiNode->name); + dModuleName = translateUpper(smiModule ? smiModule->name : ""); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + ", guint32 *%s", cName); + if (maxSize != minSize) { + fprintf(f, + ", guint16 _%sLength", cName); + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, + ", guchar *%s", cName); + if (maxSize != minSize) { + fprintf(f, + ", guint16 _%sLength", cName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + ", gint32 %s", cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + ", guint32 %s", cName); + break; + case SMI_BASETYPE_INTEGER64: + fprintf(f, + ", gint64 %s", cName); + break; + case SMI_BASETYPE_UNSIGNED64: + fprintf(f, + ", guint64 %s", cName); + break; + default: + fprintf(f, + " /* ?? */ _%s", cName); + break; + } + xfree(cName); +} + + + +static void +printCreateMethodPrototype(FILE *f, SmiNode *groupNode) +{ + SmiModule *smiModule; + char *cPrefix, *cNodeName; + + smiModule = smiGetNodeModule(groupNode); + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cNodeName = translate(groupNode->name); + + fprintf(f, + "extern void\n" + "%s_create_%s(GNetSnmp *s", cPrefix, cNodeName); + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + fprintf(f, ");\n\n"); + + xfree(cNodeName); + xfree(cPrefix); +} + + + +static void +printDeleteMethodPrototype(FILE *f, SmiNode *groupNode) +{ + SmiModule *smiModule; + char *cPrefix, *cNodeName; + + smiModule = smiGetNodeModule(groupNode); + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cNodeName = translate(groupNode->name); + + fprintf(f, + "extern void\n" + "%s_delete_%s(GNetSnmp *s", cPrefix, cNodeName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + + fprintf(f, ");\n\n"); + + xfree(cNodeName); + xfree(cPrefix); +} + + + +static void +printSetMethodPrototype(FILE *f, SmiNode *groupNode, SmiNode *smiNode) +{ + SmiModule *smiModule; + char *cPrefix, *cNodeName; + + smiModule = smiGetNodeModule(smiNode); + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cNodeName = translate(smiNode->name); + + fprintf(f, + "extern void\n" + "%s_set_%s(GNetSnmp *s", + cPrefix, cNodeName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + printParam(f, smiNode); + + fprintf(f, ");\n\n"); + + xfree(cNodeName); + xfree(cPrefix); +} + + + +static void +printMethodPrototypes(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + smiType = smiGetNodeType(smiNode); + if (smiType && smiType->name + && strcmp(smiType->name, "RowStatus") == 0) { + if (cflag) printCreateMethodPrototype(f, groupNode); + if (dflag) printDeleteMethodPrototype(f, groupNode); + } else { + if (! isIndex(groupNode, smiNode)) { + if (sflag) printSetMethodPrototype(f, groupNode, smiNode); + } + } + } + } + } +} + + + +static void +printHeaderTypedefMemberComment(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + char *s = NULL; + + switch (smiNode->access) { + case SMI_ACCESS_READ_WRITE: + s = "rw"; + break; + case SMI_ACCESS_READ_ONLY: + s = "ro"; + break; + case SMI_ACCESS_NOT_ACCESSIBLE: + s = "na"; + break; + case SMI_ACCESS_NOTIFY: + s = "no"; + break; + default: + break; + } + if (s) fprintf(f, "%s", s); + s = smiRenderType(smiType, SMI_RENDER_NAME | SMI_RENDER_QUALIFIED); + if (s) { + fprintf(f, " %s", s); + free(s); + } + if (smiNode->units) { + fprintf(f, " [%s]", smiNode->units); + } else if (smiType->units) { + fprintf(f, " [%s]", smiNode->units); + } +} + + + +static void +printHeaderTypedefMember(FILE *f, SmiNode *smiNode, + SmiType *smiType, int isIndex, int maxlen, char *name) +{ + char *cName, *dNodeName, *dModuleName; + unsigned minSize, maxSize; + SmiModule *smiModule; + + smiModule = smiGetNodeModule(smiNode); + + cName = translate(name ? name : smiNode->name); + dNodeName = translateUpper(name ? name : smiNode->name); + dModuleName = translateUpper(smiModule ? smiModule->name : ""); + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + if (isIndex && maxSize > 128 - smiNode->oidlen) { + maxSize = 128 - smiNode->oidlen; + } + if (isIndex) { + fprintf(f, " guint32 %s[%u];", cName, maxSize); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+2, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + } else { + fprintf(f, " guint32 *%s;", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + } + if (maxSize == minSize) { + fprintf(f, + "#define %s_%sLENGTH %u\n", + dModuleName, dNodeName, maxSize); + } else { + fprintf(f, + "#define %s_%sMINLENGTH %u\n", + dModuleName, dNodeName, minSize); + fprintf(f, + "#define %s_%sMAXLENGTH %u\n", + dModuleName, dNodeName, maxSize); + fprintf(f, + " guint16 _%sLength;\n", cName); + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + if (isIndex && maxSize > 128 - smiNode->oidlen) { + maxSize = 128 - smiNode->oidlen; + } + if (isIndex) { + fprintf(f, " guchar %s[%u];", cName, maxSize); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+2, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + } else { + fprintf(f, " guchar *%s;", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + } + if (maxSize == minSize) { + fprintf(f, + "#define %s_%sLENGTH %u\n", + dModuleName, dNodeName, maxSize); + } else { + fprintf(f, + "#define %s_%sMINLENGTH %u\n", + dModuleName, dNodeName, minSize); + fprintf(f, + "#define %s_%sMAXLENGTH %u\n", + dModuleName, dNodeName, maxSize); + fprintf(f, + " guint16 _%sLength;\n", cName); + } + break; + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, " gint32 %s%s;", isIndex ? "" : "*", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5+isIndex, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, " guint32 %s%s;", isIndex ? "" : "*", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5+isIndex, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + break; + case SMI_BASETYPE_INTEGER64: + fprintf(f, " gint64 *%s;", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + break; + case SMI_BASETYPE_UNSIGNED64: + fprintf(f, " guint64 *%s;", cName); + fprintf(f, "%*s/* ", maxlen-strlen(cName)+5, ""); + printHeaderTypedefMemberComment(f, smiNode, smiType); + fprintf(f, " */\n"); + break; + default: + fprintf(f, + " /* ?? */ _%s; \n", cName); + break; + } + xfree(dModuleName); + xfree(dNodeName); + xfree(cName); +} + + + +static void +printHeaderTypedefMemberIndex(FILE *f, SmiNode *smiNode, SmiNode *iNode, + int flags, int maxlen, char *name) +{ + SmiType *iType; + + iType = smiGetNodeType(iNode); + if (! iType) { + return; + } + + printHeaderTypedefMember(f, iNode, iType, 1, maxlen, name); +} + + + +static void +printHeaderTypedef(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + char *cPrefix, *dModuleName, *cGroupName, *dGroupName, *dNodeName; + int writable = 0, count = 0, len = 0; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cGroupName = translate(groupNode->name); + dGroupName = translateUpper(groupNode->name); + + fprintf(f, + "/*\n" + " * C type definitions for %s::%s.\n" + " */\n\n", + smiModule->name, groupNode->name); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + if (len < strlen(smiNode->name)) { + len = strlen(smiNode->name); + } + } + } + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + dNodeName = translateUpper(smiNode->name); + fprintf(f, "#define %s_%-*s (1 << %d) \n", dModuleName, len, dNodeName, count); + xfree(dNodeName); + count++; + } + } + + if (count) { + fprintf(f, "\n"); + } + + fprintf(f, "typedef struct {\n"); + + foreachIndexDo(f, groupNode, printHeaderTypedefMemberIndex, 0, len); + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + if (isIndex(groupNode, smiNode)) { + continue; + } + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + writable++; + } + smiType = smiGetNodeType(smiNode); + if (! smiType) { + continue; + } + printHeaderTypedefMember(f, smiNode, smiType, 0, len, 0); + } + } + + fprintf(f, "} %s_%s_t;\n\n", cPrefix, cGroupName); + + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + char *cTableName; + SmiNode *tableNode; + + tableNode = smiGetParentNode(groupNode); + if (tableNode) { + cTableName = translate(tableNode->name); + fprintf(f, "extern void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t ***%s, gint64 mask);\n\n", + cPrefix, cTableName, + cPrefix, cGroupName, cGroupName); + fprintf(f, "extern void\n" + "%s_free_%s(%s_%s_t **%s);\n\n", + cPrefix, cTableName, + cPrefix, cGroupName, cGroupName); + xfree(cTableName); + } + } + fprintf(f, "extern %s_%s_t *\n" + "%s_new_%s(void);\n\n", + cPrefix, cGroupName, cPrefix, cGroupName); + fprintf(f, "extern void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t **%s", + cPrefix, cGroupName, + cPrefix, cGroupName, + cGroupName); + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + } + fprintf(f, ", gint64 mask);\n\n"); + if (writable) { + fprintf(f, "extern void\n" + "%s_set_%s(GNetSnmp *s, %s_%s_t *%s, gint64 mask);\n\n", + cPrefix, cGroupName, + cPrefix, cGroupName, cGroupName); + } + fprintf(f, "extern void\n" + "%s_free_%s(%s_%s_t *%s);\n\n", + cPrefix, cGroupName, + cPrefix, cGroupName, cGroupName); + + printMethodPrototypes(f, groupNode); + + xfree(dGroupName); + xfree(cGroupName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printHeaderTypedefs(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode, groupkind) && isAccessible(smiNode)) { + cnt++; + printHeaderTypedef(f, smiModule, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +dumpHeader(SmiModule *smiModule, char *baseName) +{ + char *pModuleName; + FILE *f; + + pModuleName = translateUpper(smiModule->name); + + f = createFile(baseName, ".h"); + if (! f) { + return; + } + + fprintTopComment(f, smiModule); + + fprintf(f, + "#ifndef _%s_H_\n" + "#define _%s_H_\n" + "\n" + "#include \"gsnmp.h\"\n" + "\n" + "G_BEGIN_DECLS\n" + "\n", + pModuleName, pModuleName); + + printHeaderEnumerations(f, smiModule); + printHeaderIdentities(f, smiModule); + printHeaderNotifications(f, smiModule); + printHeaderTypedefs(f, smiModule); + + fprintf(f, + "G_END_DECLS\n" + "\n" + "#endif /* _%s_H_ */\n", + pModuleName); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); + xfree(pModuleName); +} + + + +static void +printStubEnumeration(FILE *f, SmiModule *smiModule, + SmiNode *smiNode, SmiType *smiType) +{ + SmiNamedNumber *nn; + char *cName, *cPrefix; + char *dName, *dModuleName; + char *name; + int len; + + if (smiType && smiType->name) { + name = smiType->name; + } else if (smiNode && smiNode->name) { + name = smiNode->name; + } else { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cName = translate(name); + dName = translateUpper(name); + + fprintf(f, "GNetSnmpEnum const %s_enums_%s[] = {\n", + cPrefix, cName); + for (len = 0, nn = smiGetFirstNamedNumber(smiType); nn; + nn = smiGetNextNamedNumber(nn)) { + if (len < strlen(nn->name)) { + len = strlen(nn->name); + } + } + for (nn = smiGetFirstNamedNumber(smiType); nn; + nn = smiGetNextNamedNumber(nn)) { + char *dEnum = translateUpper(nn->name); + fprintf(f, " { %s_%s_%s,%*s \"%s\" },\n", + dModuleName, dName, dEnum, + len - strlen(dEnum), "", nn->name); + xfree(dEnum); + } + fprintf(f, + " { 0, NULL }\n" + "};\n" + "\n"); + + xfree(dName); + xfree(cName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printStubEnumerations(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *parentNode; + SmiType *smiType; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, groupkind); + smiNode; + smiNode = smiGetNextNode(smiNode, groupkind)) { + parentNode = smiGetParentNode(smiNode); + if (! parentNode || ! isGroup(parentNode, groupkind)) { + continue; + } + smiType = smiGetNodeType(smiNode); + if (smiType && !smiType->name + && smiType->basetype == SMI_BASETYPE_ENUM + && smiGetTypeModule(smiType) == smiModule) { + cnt++; + printStubEnumeration(f, smiModule, smiNode, smiType); + } + } + + for (smiType = smiGetFirstType(smiModule); + smiType; + smiType = smiGetNextType(smiType)) { + if (smiType->basetype == SMI_BASETYPE_ENUM + && smiGetTypeModule(smiType) == smiModule) { + cnt++; + printStubEnumeration(f, smiModule, NULL, smiType); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +printStubIdentities(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *moduleIdentityNode, *parentNode; + char *cName, *cModuleName; + char *dName, *dModuleName; + int cnt = 0; + + moduleIdentityNode = smiGetModuleIdentityNode(smiModule); + + cModuleName = translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + parentNode = smiGetParentNode(smiNode); + if (! parentNode || ! isGroup(parentNode, SMI_NODEKIND_NODE)) { + continue; + } + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + if (smiNode == moduleIdentityNode) { + continue; + } + cnt++; + cName = translate(smiNode->name); + dName = translateUpper(smiNode->name); + fprintf(f, + "static guint32 const %s[]\n\t= { %s_%s };\n", + cName, dModuleName, dName); + xfree(dName); + xfree(cName); + } + + if (cnt) { + fprintf(f, + "\n" + "GNetSnmpIdentity const %s_identities[] = {\n", + cModuleName); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + if (smiNode == moduleIdentityNode) { + continue; + } + cName = translate(smiNode->name); + fprintf(f, " { %s,\n" + " G_N_ELEMENTS(%s),\n" + " \"%s\" },\n", + cName, cName, smiNode->name); + xfree(cName); + } + + fprintf(f, + " { 0, 0, NULL }\n" + "};\n" + "\n" + "\n"); + } + + xfree(dModuleName); + xfree(cModuleName); +} + + + +static void +printStubNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + char *cName, *cModuleName; + char *dName, *dModuleName; + int cnt = 0; + + cModuleName = translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + cnt++; + cName = translate(smiNode->name); + dName = translateUpper(smiNode->name); + fprintf(f, + "static guint32 const %s[]\n\t= { %s_%s };\n", + cName, dModuleName, dName); + xfree(dName); + xfree(cName); + } + + if (cnt) { + fprintf(f, + "\n" + "GNetSnmpIdentity const %s_notifications[] = {\n", + cModuleName); + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + if (smiNode->status == SMI_STATUS_UNKNOWN) { + continue; + } + cName = translate(smiNode->name); + fprintf(f, " { %s,\n" + " G_N_ELEMENTS(%s),\n" + " \"%s\" },\n", + cName, cName, smiNode->name); + xfree(cName); + } + + fprintf(f, + " { 0, 0, NULL }\n" + "};\n" + "\n" + "\n"); + } + + xfree(dModuleName); + xfree(cModuleName); +} + + + +static int +printSizeConstraints(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + SmiRange *smiRange; + unsigned int minSize, maxSize; + int cnt; + char *cName; + + cName = translate(smiNode->name); + + for (cnt = 0; !cnt && smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.unsigned32; + maxSize = smiRange->maxValue.value.unsigned32; + if (minSize == 0 && maxSize >= 65535) continue; + if (f) { + if (cnt) { + fprintf(f, ", %u, %u", minSize, maxSize); + } else { + fprintf(f, "static guint16 %s_constraints[] = {%uU, %uU", + cName, minSize, maxSize); + } + } + cnt++; + } + } + + xfree(cName); + if (f && cnt) fprintf(f, ", 0, 0};\n"); + return (cnt > 0); +} + + + +static int +printInteger32RangeConstraints(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + SmiRange *smiRange; + long minSize, maxSize; + int cnt; + char *cName; + + cName = translate(smiNode->name); + + for (cnt = 0; !cnt && smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.integer32; + maxSize = smiRange->maxValue.value.integer32; + if (minSize < -2147483647 && maxSize > 2147483646) continue; + if (f) { + if (cnt) { + fprintf(f, ", %ldL, %ldL", minSize, maxSize); + } else { + fprintf(f, "static gint32 %s_constraints[] = {%ldL, %ldL", + cName, minSize, maxSize); + } + } + cnt++; + } + } + + xfree(cName); + if (f && cnt) fprintf(f, ", 0, 0};\n"); + return (cnt > 0); +} + + + +static int +printUnsigned32RangeConstraints(FILE *f, SmiNode *smiNode, SmiType *smiType) +{ + SmiRange *smiRange; + unsigned long minSize, maxSize; + int cnt; + char *cName; + + cName = translate(smiNode->name); + + for (cnt = 0; !cnt && smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.unsigned32; + maxSize = smiRange->maxValue.value.unsigned32; + if (minSize == 0 && maxSize >= 4294967295UL) continue; + if (f) { + if (cnt) { + fprintf(f, ", %luUL, %luUL", minSize, maxSize); + } else { + fprintf(f, "static guint32 %s_constraints[] = {%luUL, %luUL", + cName, minSize, maxSize); + } + } + cnt++; + } + } + + xfree(cName); + if (f && cnt) fprintf(f, ", 0, 0};\n"); + return (cnt > 0); +} + + + +static int +printConstraints(FILE *f, SmiNode *smiNode, SmiNode *groupNode, int flags) +{ + SmiType *smiType; + int cnt; + + smiType = smiGetNodeType(smiNode); + if (! smiType) { + return 0; + } + + /* + * Generally suppress all INDEX objects (treat them as if they + * were not-accessible). This is a cheap optimization for SMIv1 + * MIBs where these objects were generally read-only. + */ + + if (flags && isIndex(groupNode, smiNode)) { + return 0; + } + + if (smiNode->access == SMI_ACCESS_NOT_ACCESSIBLE + || smiNode->access == SMI_ACCESS_NOTIFY) { + return 0; + } + + switch (smiType->basetype) { + case SMI_BASETYPE_OCTETSTRING: + cnt = printSizeConstraints(f, smiNode, smiType); + break; + case SMI_BASETYPE_INTEGER32: + cnt = printInteger32RangeConstraints(f, smiNode, smiType); + break; + case SMI_BASETYPE_UNSIGNED32: + cnt = printUnsigned32RangeConstraints(f, smiNode, smiType); + break; + default: + cnt = 0; + break; + } + + return cnt; +} + + + +static int +printScalarsAttributesContraints(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + int n = 0; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + n += printConstraints(f, smiNode, groupNode, 0); + } + return n; +} + + + +static int +printTableAttributesConstraints(FILE *f, SmiNode *rowNode) +{ + SmiNode *smiNode; + int idx, cnt, n = 0; + + for (smiNode = smiGetFirstChildNode(rowNode), idx = 0, cnt = 0; + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (isIndex(rowNode, smiNode)) idx++; + cnt++; + } + + for (smiNode = smiGetFirstChildNode(rowNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + n += printConstraints(f, smiNode, rowNode, cnt > idx); + } + return n; +} + + + +static void +printStubContraints(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode, groupkind) && isAccessible(smiNode)) { + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + cnt += printTableAttributesConstraints(f, smiNode); + } else { + cnt += printScalarsAttributesContraints(f, smiNode); + } + } + } + + if (cnt) { + fprintf(f, "\n\n"); + } +} + + + +static void +printAttribute(FILE *f, SmiNode *smiNode, SmiNode *groupNode, int flags) +{ + SmiType *smiType; + char *snmpType; + char *dModuleName, *dNodeName; + char *cPrefix, *cGroupName, *cNodeName; + unsigned maxSize = 0, minSize = 0; + int cnt; + + smiType = smiGetNodeType(smiNode); + if (!smiType) { + return; + } + + snmpType = getSnmpType(smiType); + if (!snmpType) { + return; + } + + /* + * Generally suppress all INDEX objects (treat them as if they + * were not-accessible). This is a cheap optimization for SMIv1 + * MIBs where these objects were generally read-only. + */ + + if (flags && isIndex(groupNode, smiNode)) { + return; + } + + if (smiNode->access == SMI_ACCESS_NOT_ACCESSIBLE + || smiNode->access == SMI_ACCESS_NOTIFY) { + return; + } + + dModuleName = translateUpper(smiGetNodeModule(smiNode)->name); + dNodeName = translateUpper(smiNode->name); + cNodeName = translate(smiNode->name); + cGroupName = translate(groupNode->name); + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiGetNodeModule(smiNode)->name); + + fprintf(f, + " { %u, %s,\n" + " %s_%s, \"%s\",\n", + smiNode->oid[smiNode->oidlen-1], snmpType, + dModuleName, dNodeName, smiNode->name); + + switch (smiType->basetype) { + case SMI_BASETYPE_OCTETSTRING: + cnt = printSizeConstraints(NULL, smiNode, smiType); + break; + case SMI_BASETYPE_INTEGER32: + cnt = printInteger32RangeConstraints(NULL, smiNode, smiType); + break; + case SMI_BASETYPE_UNSIGNED32: + cnt = printUnsigned32RangeConstraints(NULL, smiNode, smiType); + break; + default: + cnt = 0; + break; + } + if (cnt) { + fprintf(f, " %s_constraints,\n", cNodeName); + } else { + fprintf(f, " NULL,\n"); + } + + if (! flags && isIndex(groupNode, smiNode)) { + fprintf(f, " -1,\n"); + } else { + fprintf(f, + " G_STRUCT_OFFSET(%s_%s_t, %s),\n", + cPrefix, cGroupName, cNodeName); + } + + switch (smiType->basetype) { + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + break; + default: + break; + } + if (minSize != maxSize) { + fprintf(f, + " G_STRUCT_OFFSET(%s_%s_t, _%sLength)", + cPrefix, cGroupName, cNodeName); + } else { + fprintf(f, + " 0"); + } + + fprintf(f, + ",\n" + " %s },\n", + (smiNode->access > SMI_ACCESS_READ_ONLY) ? "GSNMP_ATTR_FLAG_WRITABLE" : "0"); + + xfree(cPrefix); + xfree(cGroupName); + xfree(cNodeName); + xfree(dNodeName); + xfree(dModuleName); +} + + + +static void +printScalarsAttributes(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + printAttribute(f, smiNode, groupNode, 0); + } +} + + + +static void +printTableAttributes(FILE *f, SmiModule *smiModule, SmiNode *rowNode) +{ + SmiNode *smiNode; + int idx, cnt; + + for (smiNode = smiGetFirstChildNode(rowNode), idx = 0, cnt = 0; + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (isIndex(rowNode, smiNode)) idx++; + cnt++; + } + + for (smiNode = smiGetFirstChildNode(rowNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + printAttribute(f, smiNode, rowNode, cnt > idx); + } +} + + + +static void +printStubAttributes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + char *cName; + int cnt = 0; + unsigned int i; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode, groupkind) && isAccessible(smiNode)) { + cnt++; + cName = translate(smiNode->name); + + fprintf(f, "static guint32 const %s_oid[] = {", cName); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, "%s%u", i ? ", " : "", smiNode->oid[i]); + } + fprintf(f, "};\n\n"); + + fprintf(f, + "static GNetSnmpAttribute %s_attr[] = {\n", + cName); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printTableAttributes(f, smiModule, smiNode); + } else { + printScalarsAttributes(f, smiModule, smiNode); + } + fprintf(f, + " { 0, 0, 0, NULL }\n" + "};\n" + "\n"); + xfree(cName); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +printInteger32RangeChecks(FILE *f, char *cGroupName, char *cName, + SmiType *smiType) +{ + SmiRange *smiRange; + long int minSize, maxSize; + int c; + + for (c = 0; smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.integer32; + maxSize = smiRange->maxValue.value.integer32; + if (! c) { + fprintf(f, " if ("); + } else { + fprintf(f, "\n && "); + } + if (minSize == -2147483647 - 1) { + fprintf(f, "(%s->%s > %ld)", cGroupName, cName, maxSize); + } else if (maxSize == 2147483647) { + fprintf(f, "(%s->%s < %ld)", cGroupName, cName, minSize); + } else if (minSize == maxSize) { + fprintf(f, "(%s->%s != %ld)", cGroupName, cName, maxSize); + } else { + fprintf(f, "(%s->%s < %ld || %s->%s > %ld)", + cGroupName, cName, minSize, + cGroupName, cName, maxSize); + } + c++; + } + } + + if (c) { + fprintf(f, ") {\n" + " return -1;\n" + " }\n"); + } +} + + + +static void +printUnsigned32RangeChecks(FILE *f, char *cGroupName, char *cName, + SmiType *smiType) +{ + SmiRange *smiRange; + unsigned long minSize, maxSize; + int c; + + for (c = 0; smiType; smiType = smiGetParentType(smiType)) { + for (smiRange = smiGetFirstRange(smiType); + smiRange ; smiRange = smiGetNextRange(smiRange)) { + minSize = smiRange->minValue.value.unsigned32; + maxSize = smiRange->maxValue.value.unsigned32; + if (minSize == 0 && maxSize == 4294967295U) { + continue; + } + if (! c) { + fprintf(f, " if ("); + } else { + fprintf(f, "\n && "); + } + if (minSize == 0) { + fprintf(f, "(%s->%s > %lu)", cGroupName, cName, maxSize); + } else if (maxSize == 4294967295U) { + fprintf(f, "(%s->%s < %lu)", cGroupName, cName, minSize); + } else if (minSize == maxSize) { + fprintf(f, "(%s->%s != %lu)", cGroupName, cName, maxSize); + } else { + fprintf(f, "(%s->%s < %lu || %s->%s > %lu)", + cGroupName, cName, minSize, + cGroupName, cName, maxSize); + } + c++; + } + } + if (c) { + fprintf(f, ") {\n" + " return -1;\n" + " }\n"); + } +} + + + +static void +printUnpackMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiElement *smiElement; + SmiNode *indexNode = NULL; + SmiNode *iNode; + SmiType *iType; + char *cPrefix, *cGroupName, *cName, *name; + unsigned maxSize, minSize; + int last = 0; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + switch (groupNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = groupNode; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + indexNode = NULL; + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(groupNode); + break; + case SMI_INDEX_UNKNOWN: + indexNode = NULL; + break; + } + + /* + * First check if there are OID or string types so that we + * know whether we need some additional variables. + */ + + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + iType = smiGetNodeType(iNode); + if (iType + && (iType->basetype == SMI_BASETYPE_OCTETSTRING + || iType->basetype == SMI_BASETYPE_OBJECTIDENTIFIER)) { + break; + } + } + } + + fprintf(f, + "static inline int\n" + "unpack_%s(GNetSnmpVarBind *vb, %s_%s_t *%s)\n" + "{\n" + " guint8 idx = %u;\n" + "%s" + "\n", + cGroupName, cPrefix, cGroupName, cGroupName, + groupNode->oidlen + 1, + smiElement ? " guint16 i, len;\n" : ""); + + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + last = (smiGetNextElement(smiElement) == NULL); + if (iNode) { + iType = smiGetNodeType(iNode); + if (! iType) { + continue; + } + name = getIndexName(indexNode, iNode, smiElement); + cName = translate(name ? name : iNode->name); + switch (iType->basetype) { + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " %s->%s = vb->oid[idx++];\n", + cGroupName, cName); + printInteger32RangeChecks(f, cGroupName, cName, iType); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " %s->%s = vb->oid[idx++];\n", + cGroupName, cName); + printUnsigned32RangeChecks(f, cGroupName, cName, iType); + break; + case SMI_BASETYPE_OCTETSTRING: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (maxSize > 128 - iNode->oidlen) { + maxSize = 128 - iNode->oidlen; + } + if (minSize == maxSize) { + fprintf(f, + " len = %u;\n", + minSize); + } else if (last && indexNode->implied) { + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " len = vb->oid_len - idx;\n"); + } else { + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " len = vb->oid[idx++];\n"); + } + if (minSize != maxSize) { + if (minSize > 0 && maxSize < 65535) { + fprintf(f, + " if (len < %u || len > %u) return -1;\n", + minSize, maxSize); + } else if (minSize > 0 && maxSize == 65535) { + fprintf(f, + " if (len < %u) return -1;\n", minSize); + } else if (minSize == 0 && maxSize < 65535) { + fprintf(f, + " if (len > %u) return -1;\n", maxSize); + } + } + fprintf(f, + " if (vb->oid_len < idx + len) return -1;\n" + " for (i = 0; i < len; i++) {\n" + " %s->%s[i] = vb->oid[idx++];\n" + " }\n", + cGroupName, cName); + if (minSize != maxSize) { + fprintf(f, + " %s->_%sLength = len;\n", cGroupName, cName); + } + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (maxSize > 128 - iNode->oidlen) { + maxSize = 128 - iNode->oidlen; + } + if (minSize == maxSize) { + fprintf(f, + " len = %u;\n" + " if (vb->oid_len < idx + len) return -1;\n", + minSize); + } else if (last && indexNode->implied) { + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " len = vb->oid_len - idx;\n"); + } else { + fprintf(f, + " if (vb->oid_len < idx) return -1;\n" + " len = vb->oid[idx++];\n" + " if (vb->oid_len < idx + len) return -1;\n"); + } + if (minSize != maxSize) { + if (minSize > 0 && maxSize < 65535) { + fprintf(f, + " if (len < %u || len > %u) return -1;\n", + minSize, maxSize); + } else if (minSize > 0 && maxSize == 65535) { + fprintf(f, + " if (len < %u) return -1;\n", minSize); + } else if (minSize == 0 && maxSize < 65535) { + fprintf(f, + " if (len > %u) return -1;\n", maxSize); + } + } + fprintf(f, + " for (i = 0; i < len; i++) {\n" + " %s->%s[i] = vb->oid[idx++];\n" + " }\n", + cGroupName, cName); + if (minSize != maxSize) { + fprintf(f, + " %s->_%sLength = len;\n", cGroupName, cName); + } + break; + default: + fprintf(f, + " /* XXX how to unpack %s->%s ? */\n", + cGroupName, cName); + break; + } + xfree(cName); + if (name) xfree(name); + } + } + + fprintf(f, + " if (vb->oid_len > idx) return -1;\n" + " return 0;\n" + "}\n\n"); + + xfree(cGroupName); + xfree(cPrefix); +} + + + +static void +printPackMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiElement *smiElement; + SmiNode *indexNode = NULL; + SmiNode *iNode; + SmiType *iType; + char *cGroupName, *cName, *name; + unsigned maxSize, minSize; + int last = 0; + + cGroupName = translate(groupNode->name); + + switch (groupNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = groupNode; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + indexNode = NULL; + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(groupNode); + break; + case SMI_INDEX_UNKNOWN: + indexNode = NULL; + break; + } + + /* + * First check if there are OID or string types so that we + * know whether we need some additional variables. + */ + + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + if (iNode) { + iType = smiGetNodeType(iNode); + if (iType + && (iType->basetype == SMI_BASETYPE_OCTETSTRING + || iType->basetype == SMI_BASETYPE_OBJECTIDENTIFIER)) { + break; + } + } + } + + fprintf(f, + "static inline gint8\n" + "pack_%s(guint32 *base", + cGroupName); + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + fprintf(f, + ")\n" + "{\n" + " guint8 idx = %u;\n" + "%s" + "\n", + groupNode->oidlen + 1, + smiElement ? " guint16 i, len;\n" : ""); + + for (smiElement = smiGetFirstElement(indexNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + last = (smiGetNextElement(smiElement) == NULL); + if (iNode) { + iType = smiGetNodeType(iNode); + if (! iType) { + continue; + } + name = getIndexName(indexNode, iNode, smiElement); + cName = translate(name ? name : iNode->name); + switch (iType->basetype) { + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, + " base[idx++] = %s;\n", + cName); + break; + case SMI_BASETYPE_UNSIGNED32: + fprintf(f, + " base[idx++] = %s;\n", + cName); + break; + case SMI_BASETYPE_OCTETSTRING: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (maxSize > 128 - iNode->oidlen) { + maxSize = 128 - iNode->oidlen; + } + if (minSize == maxSize) { + fprintf(f, + " len = %u;\n", + minSize); + } else if (last && indexNode->implied) { + fprintf(f, + " len = _%sLength;\n", + cName); + } else { + fprintf(f, + " len = _%sLength;\n" + " base[idx++] = len;\n", + cName); + } + if (minSize == maxSize) { + fprintf(f, + " if (len != %u) return -1;\n", + minSize); + } else { + if (minSize > 0 && maxSize < 65535) { + fprintf(f, + " if (len < %u || len > %u) return -1;\n", + minSize, maxSize); + } else if (minSize > 0 && maxSize == 65535) { + fprintf(f, + " if (len < %u) return -1;\n", minSize); + } else if (minSize == 0 && maxSize < 65535) { + fprintf(f, + " if (len > %u) return -1;\n", maxSize); + } + } + fprintf(f, + " for (i = 0; i < len; i++) {\n" + " base[idx++] = %s[i];\n" + " if (idx >= 128) return -1;\n" + " }\n", + cName); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + maxSize = smiGetMaxSize(iType); + minSize = smiGetMinSize(iType); + if (maxSize > 128 - iNode->oidlen) { + maxSize = 128 - iNode->oidlen; + } + if (minSize == maxSize) { + fprintf(f, + " len = %u;\n", + minSize); + } else if (last && indexNode->implied) { + fprintf(f, + " len = _%sLength;\n", + cName); + } else { + fprintf(f, + " len = _%sLength;\n" + " base[idx++] = len;\n", + cName); + } + if (minSize == maxSize) { + fprintf(f, + " if (len != %u) return -1;\n", + minSize); + } else { + if (minSize > 0 && maxSize < 65535) { + fprintf(f, + " if (len < %u || len > %u) return -1;\n", + minSize, maxSize); + } else if (minSize > 0 && maxSize == 65535) { + fprintf(f, + " if (len < %u) return -1;\n", minSize); + } else if (minSize == 0 && maxSize < 65535) { + fprintf(f, + " if (len > %u) return -1;\n", maxSize); + } + } + fprintf(f, + " for (i = 0; i < len; i++) {\n" + " base[idx++] = %s[i];\n" + " if (idx >= 128) return -1;\n" + " }\n", + cName); + break; + default: + fprintf(f, + " /* XXX how to pack %s ? */\n", cGroupName); + break; + } + xfree(cName); + if (name) xfree(name); + } + } + + fprintf(f, + " return idx;\n" + "}\n\n"); + + xfree(cGroupName); +} + + + +static void +printAssignMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + printUnpackMethod(f, smiModule, groupNode); + printPackMethod(f, smiModule, groupNode); + } + + fprintf(f, + "static inline %s_%s_t *\n" + "assign_%s(GList *vbl)\n" + "{\n" + " %s_%s_t *%s;\n" + " char *p;\n" + "\n", + cPrefix, cGroupName, cGroupName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s = %s_new_%s();\n" + " p = (char *) %s + sizeof(%s_%s_t);\n" + " * (GList **) p = vbl;\n" + "\n", + cGroupName, cPrefix, cGroupName, + cGroupName, cPrefix, cGroupName); + + if (groupNode->nodekind == SMI_NODEKIND_ROW) { + fprintf(f, + " if (unpack_%s((GNetSnmpVarBind *) vbl->data, %s) < 0) {\n" + " g_warning(\"%%s: invalid instance identifier\", \"%s\");\n" + " g_free(%s);\n" + " return NULL;\n" + " }\n\n", + cGroupName, cGroupName, cGroupName, cGroupName); + } + + fprintf(f, + " gnet_snmp_attr_assign(vbl, %s_oid, G_N_ELEMENTS(%s_oid),\n" + " %s_attr, %s);\n" + "\n" + " return %s;\n" + "}\n" + "\n", cGroupName, cGroupName, cGroupName, cGroupName, cGroupName); + + xfree(cGroupName); + xfree(cPrefix); +} + + + + +static void +printGetTableMethod(FILE *f, SmiModule *smiModule, SmiNode *rowNode) +{ + SmiNode *tableNode; + char *cPrefix, *cModuleName, *cRowName, *cTableName; + unsigned int i; + + tableNode = smiGetParentNode(rowNode); + if (! tableNode) { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cModuleName = translateLower(smiModule->name); + cRowName = translate(rowNode->name); + cTableName = translate(tableNode->name); + + fprintf(f, + "void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t ***%s, gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n", + cPrefix, cTableName, cPrefix, cRowName, cRowName); + + fprintf(f, + " GList *row;\n" + " int i;\n"); + + fprintf(f, " static guint32 const _base[] = {"); + for (i = 0; i < rowNode->oidlen; i++) { + fprintf(f, "%u, ", rowNode->oid[i]); + } + fprintf(f, "0};\n"); + fprintf(f, " guint32 base[128];\n"); + + fprintf(f, + "\n" + " *%s = NULL;\n" + " memcpy(base, _base, sizeof(_base));\n" + "\n", + cRowName); + + fprintf(f, + " gnet_snmp_attr_get(s, &in, base, %u, %u, %s_attr, mask);\n", + rowNode->oidlen+1, rowNode->oidlen, cRowName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_table(s, in);\n" + " /* gnet_snmp_varbind_list_free(in); */\n" + "\n"); + fprintf(f, + " if (out) {\n" + " *%s = (%s_%s_t **) g_malloc0((g_list_length(out) + 1) * sizeof(%s_%s_t *));\n" + " for (row = out, i = 0; row; row = g_list_next(row), i++) {\n" + " (*%s)[i] = assign_%s(row->data);\n" + " }\n" + " }\n" + "}\n" + "\n", + cRowName, cPrefix, cRowName, + cPrefix, cRowName, + cRowName, cRowName); + + xfree(cTableName); + xfree(cRowName); + xfree(cModuleName); + xfree(cPrefix); +} + + + +static void +printGetRowMethod(FILE *f, SmiModule *smiModule, SmiNode *rowNode) +{ + char *cPrefix, *cRowName; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cRowName = translate(rowNode->name); + + fprintf(f, + "void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t **%s", + cPrefix, cRowName, cPrefix, cRowName, cRowName); + foreachIndexDo(f, rowNode, printIndexParamsFunc, 1, 0); + fprintf(f, + ", gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n"); + + fprintf(f, + " guint32 base[128];\n" + " gint8 len;\n" + "\n" + " memcpy(base, %s_oid, sizeof(%s_oid));\n", + cRowName, cRowName); + + fprintf(f, + " len = pack_%s(base", + cRowName); + + foreachIndexDo(f, rowNode, printIndexParamsFunc, 0, 0); + + fprintf(f, + ");\n" + " if (len < 0) {\n" + " g_warning(\"%%s: invalid index values\", \"%s\");\n" + " s->error_status = GNET_SNMP_PDU_ERR_INTERNAL;\n" + " return;\n" + " }\n", + cRowName); + + fprintf(f, + "\n" + " *%s = NULL;\n" + "\n", + cRowName); + + fprintf(f, + " gnet_snmp_attr_get(s, &in, base, len, %u, %s_attr, mask);\n", + rowNode->oidlen, cRowName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_get(s, in);\n" + " g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(in);\n" + " if (out) {\n" + " if (s->error_status != GNET_SNMP_PDU_ERR_NOERROR) {\n" + " g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(out);\n" + " return;\n" + " }\n" + " *%s = assign_%s(out);\n" + " }\n" + "}\n" + "\n", cRowName, cRowName); + + xfree(cRowName); + xfree(cPrefix); +} + + + +static void +printSetRowMethod(FILE *f, SmiModule *smiModule, SmiNode *rowNode) +{ + char *cPrefix, *cRowName, *cTableName; + SmiNode *tableNode; + + tableNode = smiGetParentNode(rowNode); + if (! tableNode) { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cRowName = translate(rowNode->name); + cTableName = translate(tableNode->name); + + fprintf(f, + "void\n" + "%s_set_%s(GNetSnmp *s, %s_%s_t *%s, gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n", + cPrefix, cRowName, cPrefix, cRowName, cRowName); + + fprintf(f, + " guint32 base[128];\n" + " gint8 len;\n" + "\n" + " memcpy(base, %s_oid, sizeof(%s_oid));\n", + cRowName, cRowName); + + fprintf(f, + " len = pack_%s(base", cRowName); + + foreachIndexDo(f, rowNode, printIndexParamsPassFunc, 0, 0); + + fprintf(f, + ");\n" + " if (len < 0) {\n" + " g_warning(\"%%s: invalid index values\", \"%s\");\n" + " s->error_status = GNET_SNMP_PDU_ERR_INTERNAL;\n" + " return;\n" + " }\n" + "\n", + cRowName); + + fprintf(f, + " gnet_snmp_attr_set(s, &in, base, len, %u, %s_attr, mask, %s);\n", + rowNode->oidlen, cRowName, cRowName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_set(s, in);\n" + " g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(in);\n" + " if (out) {\n" + " g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(out);\n" + " }\n" + "}\n" + "\n"); + + xfree(cTableName); + xfree(cRowName); + xfree(cPrefix); +} + + + +static void +printCreateMethod(FILE *f, SmiNode *groupNode, SmiNode *smiNode) +{ + char *cPrefix, *cNodeName, *cGroupName; + char *dModuleName, *dNodeName; + SmiModule *smiModule; + + smiModule = smiGetNodeModule(smiNode); + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cGroupName = translate(groupNode->name); + cNodeName = translate(smiNode->name); + dNodeName = translateUpper(smiNode->name); + + fprintf(f, + "void\n" + "%s_create_%s(GNetSnmp *s", + cPrefix, cGroupName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + + fprintf(f, + ")\n" + "{\n" + " %s_%s_t *%s;\n" + " gint32 create = 4; /* SNMPv2-TC::RowStatus createAndGo */\n" + "\n", + cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s = %s_new_%s();\n", + cGroupName, cPrefix, cGroupName); + + foreachIndexDo(f, groupNode, printIndexAssignmentFunc, 0, 0); + + fprintf(f, " %s->%s = &create;\n", + cGroupName, cNodeName); + + fprintf(f, + " %s_set_%s(s, %s, %s_%s);\n" + " %s_free_%s(%s);\n", + cPrefix, cGroupName, cGroupName, + dModuleName, dNodeName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + "}\n" + "\n"); + + xfree(dNodeName); + xfree(cNodeName); + xfree(cGroupName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printDeleteMethod(FILE *f, SmiNode *groupNode, SmiNode *smiNode) +{ + char *cPrefix, *cNodeName, *cGroupName; + char *dModuleName, *dNodeName; + SmiModule *smiModule; + + smiModule = smiGetNodeModule(smiNode); + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cGroupName = translate(groupNode->name); + cNodeName = translate(smiNode->name); + dNodeName = translateUpper(smiNode->name); + + fprintf(f, + "void\n" + "%s_delete_%s(GNetSnmp *s", + cPrefix, cGroupName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + + fprintf(f, + ")\n" + "{\n" + " %s_%s_t *%s;\n" + " gint32 destroy = 6; /* SNMPv2-TC::RowStatus destroy */\n" + "\n", + cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s_get_%s(s, &%s", + cPrefix, cGroupName, cGroupName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 0, 0); + + fprintf(f, + ", %s_%s);\n" + " if (s->error_status || !%s) return;\n", + dModuleName, dNodeName, + cGroupName); + + fprintf(f, " %s->%s = &destroy;\n", + cGroupName, cNodeName); + + fprintf(f, + " %s_set_%s(s, %s, %s_%s);\n" + " %s_free_%s(%s);\n", + cPrefix, cGroupName, cGroupName, + dModuleName, dNodeName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + "}\n" + "\n"); + + xfree(dNodeName); + xfree(cNodeName); + xfree(cGroupName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printSetMethod(FILE *f, SmiNode *groupNode, SmiNode *smiNode) +{ + char *cPrefix, *cNodeName, *cGroupName; + char *dModuleName, *dNodeName; + SmiType *smiType; + SmiModule *smiModule; + unsigned minSize, maxSize; + + smiModule = smiGetNodeModule(smiNode); + smiType = smiGetNodeType(smiNode); + if (! smiType) { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + dModuleName = translateUpper(smiModule->name); + cGroupName = translate(groupNode->name); + cNodeName = translate(smiNode->name); + dNodeName = translateUpper(smiNode->name); + + fprintf(f, + "void\n" + "%s_set_%s(GNetSnmp *s", + cPrefix, cNodeName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 1, 0); + printParam(f, smiNode); + + fprintf(f, + ")\n" + "{\n" + " %s_%s_t *%s;\n" + "\n", cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s_get_%s(s, &%s", + cPrefix, cGroupName, cGroupName); + + foreachIndexDo(f, groupNode, printIndexParamsFunc, 0, 0); + + fprintf(f, + ", %s_%s);\n" + " if (s->error_status || !%s) return;\n", + dModuleName, dNodeName, + cGroupName); + + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + case SMI_BASETYPE_OCTETSTRING: + maxSize = smiGetMaxSize(smiType); + minSize = smiGetMinSize(smiType); + fprintf(f, " %s->%s = %s;\n", + cGroupName, cNodeName, cNodeName); + if (minSize != maxSize) { + fprintf(f, " %s->_%sLength = _%sLength;\n", + cGroupName, cNodeName, cNodeName); + } + break; + case SMI_BASETYPE_UNSIGNED32: + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_INTEGER32: + fprintf(f, " %s->%s = &%s;\n", + cGroupName, cNodeName, cNodeName); + break; + default: + fprintf(f, " /* ?? */\n"); + break; + } + + fprintf(f, + " %s_set_%s(s, %s, %s_%s);\n" + " %s_free_%s(%s);\n", + cPrefix, cGroupName, cGroupName, + dModuleName, dNodeName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + "}\n" + "\n"); + + xfree(dNodeName); + xfree(cNodeName); + xfree(cGroupName); + xfree(dModuleName); + xfree(cPrefix); +} + + + +static void +printGetScalarsMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + unsigned int i; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "void\n" + "%s_get_%s(GNetSnmp *s, %s_%s_t **%s, gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n", + cPrefix, cGroupName, cPrefix, cGroupName, cGroupName); + + fprintf(f, " static const guint32 _base[] = {"); + for (i = 0; i < groupNode->oidlen; i++) { + fprintf(f, "%u, ", groupNode->oid[i]); + } + fprintf(f, "0};\n"); + fprintf(f, " guint32 base[128];\n"); + + fprintf(f, + "\n" + " *%s = NULL;\n" + " memcpy(base, _base, sizeof(_base));\n" + "\n", + cGroupName); + + fprintf(f, + " gnet_snmp_attr_get(s, &in, base, %u, %u, %s_attr, mask);\n", + groupNode->oidlen + 1, groupNode->oidlen, cGroupName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_getnext(s, in);\n" + " g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(in);\n" + " if (out) {\n" + " if (s->error_status != GNET_SNMP_PDU_ERR_NOERROR) {\n" + " g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(out);\n" + " return;\n" + " }\n" + " *%s = assign_%s(out);\n" + " }\n" + "}\n" + "\n", cGroupName, cGroupName); + + xfree(cGroupName); + xfree(cPrefix); +} + + + +static void +printSetScalarsMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + unsigned int i; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "void\n" + "%s_set_%s(GNetSnmp *s, %s_%s_t *%s, gint64 mask)\n" + "{\n" + " GList *in = NULL, *out = NULL;\n", + cPrefix, cGroupName, cPrefix, cGroupName, cGroupName); + + fprintf(f, " static guint32 base[] = {"); + for (i = 0; i < groupNode->oidlen; i++) { + fprintf(f, "%u, ", groupNode->oid[i]); + } + fprintf(f, "0, 0};\n\n"); + + fprintf(f, + " gnet_snmp_attr_set(s, &in, base, %u, %u, %s_attr, mask, %s);\n", + groupNode->oidlen + 2, groupNode->oidlen, cGroupName, cGroupName); + + fprintf(f, + "\n" + " out = gnet_snmp_sync_set(s, in);\n" + " g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(in);\n" + " if (out) {\n" + " g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(out);\n" + " }\n" + "}\n" + "\n"); + + xfree(cGroupName); + xfree(cPrefix); +} + + + +static void +printNewMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "%s_%s_t *\n" + "%s_new_%s()\n" + "{\n" + " %s_%s_t *%s;\n" + "\n", + cPrefix, cGroupName, + cPrefix, cGroupName, + cPrefix, cGroupName, cGroupName); + + fprintf(f, + " %s = (%s_%s_t *) g_malloc0(sizeof(%s_%s_t) + sizeof(gpointer));\n" + " return %s;\n" + "}\n" + "\n", + cGroupName, cPrefix, cGroupName, + cPrefix, cGroupName, cGroupName); + + xfree(cGroupName); + xfree(cPrefix); +} + + + +static void +printFreeTableMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + SmiNode *tableNode; + char *cPrefix, *cGroupName, *cTableName; + + tableNode = smiGetParentNode(groupNode); + if (! tableNode) { + return; + } + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + cTableName = translate(tableNode->name); + + fprintf(f, + "void\n" + "%s_free_%s(%s_%s_t **%s)\n" + "{\n" + " int i;\n" + "\n", + cPrefix, cTableName, cPrefix, cGroupName, cGroupName); + + fprintf(f, + " if (%s) {\n" + " for (i = 0; %s[i]; i++) {\n" + " %s_free_%s(%s[i]);\n" + " }\n" + " g_free(%s);\n" + " }\n" + "}\n" + "\n", + cGroupName, cGroupName, cPrefix, + cGroupName, cGroupName, cGroupName); + + xfree(cTableName); + xfree(cGroupName); + xfree(cPrefix); +} + + + + +static void +printFreeMethod(FILE *f, SmiModule *smiModule, SmiNode *groupNode) +{ + char *cPrefix, *cGroupName; + + cPrefix = prefix ? xstrdup(prefix) : translateLower(smiModule->name); + cGroupName = translate(groupNode->name); + + fprintf(f, + "void\n" + "%s_free_%s(%s_%s_t *%s)\n" + "{\n" + " GList *vbl;\n" + " char *p;\n" + "\n", + cPrefix, cGroupName, cPrefix, cGroupName, cGroupName); + + fprintf(f, + " if (%s) {\n" + " p = (char *) %s + sizeof(%s_%s_t);\n" + " vbl = * (GList **) p;\n" + " g_list_foreach(vbl, (GFunc) gnet_snmp_varbind_delete, NULL);\n" + " g_list_free(vbl);\n" + " g_free(%s);\n" + " }\n" + "}\n" + "\n", + cGroupName, cGroupName, cPrefix, cGroupName, cGroupName); + + xfree(cGroupName); + xfree(cPrefix); +} + + + + +static void +printStubMethod2(FILE *f, SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiType *smiType; + + for (smiNode = smiGetFirstChildNode(groupNode); + smiNode; + smiNode = smiGetNextChildNode(smiNode)) { + if (smiNode->nodekind & (SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR) + && (smiNode->access >= SMI_ACCESS_READ_ONLY)) { + if (smiNode->access == SMI_ACCESS_READ_WRITE) { + smiType = smiGetNodeType(smiNode); + if (smiType && smiType->name + && strcmp(smiType->name, "RowStatus") == 0) { + if (cflag) printCreateMethod(f, groupNode, smiNode); + if (dflag) printDeleteMethod(f, groupNode, smiNode); + } else { + if (! isIndex(groupNode, smiNode)) { + if (sflag) printSetMethod(f, groupNode, smiNode); + } + } + } + } + } +} + + + +static void +printStubMethods(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int cnt = 0; + const unsigned int groupkind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode, groupkind) && isAccessible(smiNode)) { + cnt++; + printNewMethod(f, smiModule, smiNode); + printAssignMethod(f, smiModule, smiNode); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printGetTableMethod(f, smiModule, smiNode); + printGetRowMethod(f, smiModule, smiNode); + if (isWritable(smiNode, SMI_NODEKIND_COLUMN)) { + printSetRowMethod(f, smiModule, smiNode); + } + } else { + printGetScalarsMethod(f, smiModule, smiNode); + if (isWritable(smiNode, SMI_NODEKIND_SCALAR)) { + printSetScalarsMethod(f, smiModule, smiNode); + } + } + printFreeMethod(f, smiModule, smiNode); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + printFreeTableMethod(f, smiModule, smiNode); + } + printStubMethod2(f, smiNode); + } + } + + if (cnt) { + fprintf(f, "\n"); + } +} + + + +static void +dumpStubs(SmiModule *smiModule, char *baseName) +{ + FILE *f; + + f = createFile(baseName, ".c"); + if (! f) { + return; + } + + fprintTopComment(f, smiModule); + + fprintf(f, + "#include \"%s.h\"\n" + "\n", + baseName); + + printStubEnumerations(f, smiModule); + printStubIdentities(f, smiModule); + printStubNotifications(f, smiModule); + + printStubContraints(f, smiModule); + printStubAttributes(f, smiModule); + printStubMethods(f, smiModule); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + fclose(f); +} + + + +static void +dumpScli(int modc, SmiModule **modv, int flags, char *output) +{ + char *baseName; + int i, code; + + if (include) { + incl_regex = &_incl_regex; + code = regcomp(incl_regex, include, REG_EXTENDED|REG_NOSUB); + if (code != 0) { + char buffer[256]; + regerror(code, incl_regex, buffer, sizeof(buffer)); + fprintf(stderr, "smidump: regular expression error: %s\n", buffer); + exit(1); + } + } + + if (exclude) { + excl_regex = &_excl_regex; + code = regcomp(excl_regex, exclude, REG_EXTENDED|REG_NOSUB); + if (code != 0) { + char buffer[256]; + regerror(code, excl_regex, buffer, sizeof(buffer)); + fprintf(stderr, "smidump: regular expression error: %s\n", buffer); + if (incl_regex) { + regfree(incl_regex); + } + exit(1); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + /* not implemented yet */ + } else { + for (i = 0; i < modc; i++) { + baseName = output ? output : translateFileName(modv[i]->name); + dumpHeader(modv[i], baseName); + dumpStubs(modv[i], baseName); + if (! output) xfree(baseName); + } + } + + if (incl_regex) { + regfree(incl_regex); + incl_regex = NULL; + } + if (excl_regex) { + regfree(excl_regex); + excl_regex = NULL; + } +} + + + +void initScli() +{ + static SmidumpDriverOption opt[] = { + { "prefix", OPT_STRING, &prefix, 0, + "use prefix instead of module name in stubs"}, + { "include", OPT_STRING, &include, 0, + "include stubs for groups matching a regex"}, + { "exclude", OPT_STRING, &exclude, 0, + "exclude stubs for groups matching a regex"}, + { "set", OPT_FLAG, &sflag, 0, + "generate set stubs for writable objects"}, + { "create", OPT_FLAG, &cflag, 0, + "generate create stubs for tables using RowStatus"}, + { "delete", OPT_FLAG, &dflag, 0, + "generate delete stubs for tables using RowStatus"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "scli", + dumpScli, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "ANSI C manager stubs for the gsnmp package", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-sizes.c b/tools/dump-sizes.c new file mode 100644 index 0000000..5abbd97 --- /dev/null +++ b/tools/dump-sizes.c @@ -0,0 +1,1345 @@ +/* + * dump-sizes.c -- + * + * Operations to compute and dump SNMPv3 PDU sizes. + * + * Copyright (c) 2003 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-sizes.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + +static int silent = 0; +static int detail = 0; + +/* + * help functions + */ +#define m_abs(a) ((a) < 0 ? -(a) : (a)) + +typedef struct WellKnowType { + char *module; + char *name; + int max; + int mean; + int min; +} WellKnowType; + +static WellKnowType specialTypes[] = { + { "SNMPv2-TC", "PhysAddress", 65535, 6, 0 }, + { "INET-ADDRESS-MIB", "InetAddress", 255, 4, 0 }, + { "IANATn3270eTC-MIB", "IANATn3270eAddress", 255, 4, 0 }, + { NULL, NULL, 0, 0, 0 } +}; + + + +typedef enum len_type { + len_min, + len_mean, + len_max +} len_type; + + + +static SmiInteger32 +getAbsMinEnum(SmiType *smiType) +{ + SmiNamedNumber *nn; + SmiInteger32 min = SMI_BASETYPE_INTEGER32_MAX; + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + if (abs(nn->value.value.integer32) < min) { + min = abs(nn->value.value.integer32); + } + } + return min; +} + + + +static SmiInteger32 +getAbsMaxEnum(SmiType *smiType) +{ + SmiNamedNumber *nn; + SmiInteger32 max = 0; + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + if (abs(nn->value.value.integer32) > max) { + max = abs(nn->value.value.integer32); + } + } + return max; +} + + + +static SmiInteger32 +getAbsMinInteger32(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger32 min = SMI_BASETYPE_INTEGER32_MAX; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getAbsMinInteger32(parent) : 0; + } + + for (; range; range = smiGetNextRange(range)) { + if (abs(range->minValue.value.integer32) < min) { + min = abs(range->minValue.value.integer32); + } + } + return min; +} + + + +static SmiInteger32 +getAbsMaxInteger32(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger32 max = SMI_BASETYPE_INTEGER32_MIN; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent + ? getAbsMaxInteger32(parent) : SMI_BASETYPE_INTEGER32_MAX; + } + + for (; range; range = smiGetNextRange(range)) { + if (abs(range->maxValue.value.integer32) > max) { + max = abs(range->maxValue.value.integer32); + } + } + return max; +} + + + +static SmiUnsigned32 +getMinUnsigned32(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger32 min = 0xffffffff; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getMinUnsigned32(parent) : 0; + } + + for (; range; range = smiGetNextRange(range)) { + if (range->minValue.value.unsigned32 < min) { + min = range->minValue.value.unsigned32; + } + } + return min; +} + + + +static SmiUnsigned32 +getMaxUnsigned32(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiUnsigned32 max = 0; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getMaxUnsigned32(parent) : 0xffffffff; + } + + for (; range; range = smiGetNextRange(range)) { + if (range->maxValue.value.unsigned32 > max) { + max = range->maxValue.value.unsigned32; + } + } + return max; +} + + + +static SmiInteger64 +getAbsMinInteger64(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger64 min = SMI_BASETYPE_INTEGER64_MAX; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getAbsMinInteger64(parent) : min; + } + + for (; range; range = smiGetNextRange(range)) { + if (m_abs(range->minValue.value.integer64) < min) { + min = m_abs(range->minValue.value.integer64); + } + } + return min; +} + + + +static SmiInteger64 +getAbsMaxInteger64(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger64 max = SMI_BASETYPE_INTEGER64_MIN; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getAbsMaxInteger64(parent) : max; + } + + for (; range; range = smiGetNextRange(range)) { + if (m_abs(range->maxValue.value.integer64) > max) { + max = m_abs(range->maxValue.value.integer64); + } + } + return max; +} + + + +static SmiUnsigned64 +getMinUnsigned64(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiInteger64 min = SMI_BASETYPE_UNSIGNED64_MAX; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getMinUnsigned64(parent) : min; + } + + for (; range; range = smiGetNextRange(range)) { + if (range->minValue.value.unsigned64 < min) { + min = range->minValue.value.unsigned64; + } + } + return min; +} + + + +static SmiUnsigned64 +getMaxUnsigned64(SmiType *smiType) +{ + SmiType *parent; + SmiRange *range; + SmiUnsigned64 max = SMI_BASETYPE_UNSIGNED64_MIN; + + range = smiGetFirstRange(smiType); + if (! range) { + parent = smiGetParentType(smiType); + return parent ? getMaxUnsigned64(parent) : max; + } + + for (; range; range = smiGetNextRange(range)) { + if (range->maxValue.value.unsigned64 > max) { + max = range->maxValue.value.unsigned64; + } + } + return max; +} + + + +static int +ber_len_length(int length) +{ + int len; + + if (length < 0x80) { + return 1; + } + + for (len = 0; length > 0; len++) { + length >>= 8; + } + return len; +} + + + +static int +ber_len_subid(SmiSubid subid) +{ + int len = 0; + + do { + subid >>= 7; + len++; + } while (subid > 0); + return len; +} + + + +static int +ber_len_oid(const SmiSubid *oid, unsigned int oidlen) +{ + int len = 0; + int i; + + len += ber_len_subid(oid[1] + oid[0] * 40); + for (i = 2; i < oidlen; i++) { + len += ber_len_subid(oid[i]); + } + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_int32(const SmiInteger32 value) +{ + SmiInteger32 val = value; + unsigned char ch, sign; + int lim; + int len = 0; + + if (val < 0) { + lim = -1; + sign = 0x80; + } else { + lim = 0; + sign = 0x00; + } + do { + ch = (unsigned char) val; + val >>= 8; + len++; + } while ((val != lim) || (unsigned char) (ch & 0x80) != sign); + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_uint32(const SmiUnsigned32 value) +{ + SmiUnsigned32 val = value; + unsigned char ch; + int len = 0; + + do { + ch = (unsigned char) val; + val >>= 8; + len++; + } while ((val != 0) || (ch & 0x80) != 0x00); + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_int64(const SmiInteger64 value) +{ + SmiInteger64 val = value; + unsigned char ch, sign; + int lim; + int len = 0; + + if (val < 0) { + lim = -1; + sign = 0x80; + } else { + lim = 0; + sign = 0x00; + } + do { + ch = (unsigned char) val; + val >>= 8; + len++; + } while ((val != lim) || (unsigned char) (ch & 0x80) != sign); + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_uint64(const SmiUnsigned64 value) +{ + SmiUnsigned64 val = value; + unsigned char ch; + int len = 0; + + do { + ch = (unsigned char) val; + val >>= 8; + len++; + } while ((val != 0) || (ch & 0x80) != 0x00); + + len += ber_len_length(len); /* length */ + len += 1; /* tag */ + return len; +} + + + +static int +ber_len_val_oid(SmiType *smiType, len_type flags) +{ + SmiSubid oid[128]; + unsigned int oidlen = sizeof(oid)/sizeof(oid[0]); + int i; + + switch (flags) { + case len_max: + oid[0] = 2; + for (i = 1; i < 128; i++) { + oid[i] = 4294967295UL; + } + break; + case len_mean: + /* see Aiko's measurements */ + for (oidlen = 0; oidlen < 15; oidlen++) { + oid[oidlen] = 1; + } + break; + case len_min: + oid[0] = oid[1] = 0, oidlen = 2; + break; + } + return ber_len_oid(oid, oidlen); +} + + + +static int +ber_len_val_octs(SmiType *smiType, len_type flags) +{ + int len = 0; + + SmiModule *smiModule; + + smiModule = smiGetTypeModule(smiType); + if (smiModule && smiModule->name && smiType->name) { + int i; + for (i = 0; specialTypes[i].module; i++) { + if (strcmp(specialTypes[i].module, smiModule->name) == 0 + && (strcmp(specialTypes[i].name, smiType->name) == 0)) { + break; + } + } + if (specialTypes[i].module) { + switch (flags) { + case len_max: + return specialTypes[i].max; + break; + case len_mean: + return specialTypes[i].mean; + break; + case len_min: + return specialTypes[i].min; + break; + } + } + } + + switch (flags) { + case len_max: + len = smiGetMaxSize(smiType); + break; + case len_mean: + len = (smiGetMaxSize(smiType) + smiGetMinSize(smiType)) / 2; + break; + case len_min: + len = smiGetMinSize(smiType); + break; + } + return len; +} + + + +static int +ber_len_val_bits(SmiType *smiType, len_type flags) +{ + int len = 0; + + switch (flags) { + case len_max: + len = smiGetMaxSize(smiType); + break; + case len_mean: + len = (smiGetMaxSize(smiType) + smiGetMinSize(smiType)) / 2; + break; + case len_min: + len = smiGetMinSize(smiType); + break; + } + return len; +} + + + +static int +ber_len_val_enum(SmiType *smiType, len_type flags) +{ + SmiInteger32 val = 0; + + switch (flags) { + case len_max: + val = getAbsMaxEnum(smiType); + break; + case len_mean: + val = (getAbsMaxEnum(smiType) + getAbsMinEnum(smiType)) / 2; + break; + case len_min: + val = getAbsMinEnum(smiType); + break; + } + return ber_len_int32(val); +} + + + +static int +ber_len_val_int32(SmiType *smiType, len_type flags) +{ + SmiInteger32 val = 0; + + switch (flags) { + case len_max: + val = getAbsMaxInteger32(smiType); + break; + case len_mean: + val = (getAbsMaxInteger32(smiType) + getAbsMinInteger32(smiType)) / 2; + break; + case len_min: + val = getAbsMinInteger32(smiType); + break; + } + return ber_len_int32(val); +} + + + +static int +ber_len_val_uint32(SmiType *smiType, len_type flags) +{ + SmiUnsigned32 val = 0; + + switch (flags) { + case len_max: + val = getMaxUnsigned32(smiType); + break; + case len_mean: + val = (getMaxUnsigned32(smiType) + getMinUnsigned32(smiType)) / 2; + break; + case len_min: + val = getMinUnsigned32(smiType); + break; + } + return ber_len_uint32(val); +} + + + +static int +ber_len_val_int64(SmiType *smiType, len_type flags) +{ + SmiInteger64 val = 0; + + switch (flags) { + case len_max: + val = getAbsMaxInteger64(smiType); + break; + case len_mean: + val = (getAbsMaxInteger64(smiType) + getAbsMinInteger64(smiType)) / 2; + break; + case len_min: + val = getAbsMinInteger64(smiType); + break; + } + return ber_len_int64(val); +} + + + +static int +ber_len_val_uint64(SmiType *smiType, len_type flags) +{ + SmiUnsigned64 val = 0; + + switch (flags) { + case len_max: + val = getMaxUnsigned64(smiType); + break; + case len_mean: + val = (getMaxUnsigned64(smiType) + getMinUnsigned64(smiType)) / 2; + break; + case len_min: + val = getMinUnsigned64(smiType); + break; + } + return ber_len_uint64(val); +} + + + +static int +ber_len_val(SmiType *smiType, len_type flags) +{ + int len = 0; + + switch (smiType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + len = ber_len_val_oid(smiType, flags); + break; + case SMI_BASETYPE_OCTETSTRING: + len = ber_len_val_octs(smiType, flags); + break; + case SMI_BASETYPE_BITS: + len = ber_len_val_bits(smiType, flags); + break; + case SMI_BASETYPE_ENUM: + len = ber_len_val_enum(smiType, flags); + break; + case SMI_BASETYPE_INTEGER32: + len = ber_len_val_int32(smiType, flags); + break; + case SMI_BASETYPE_UNSIGNED32: + len = ber_len_val_uint32(smiType, flags); + break; + case SMI_BASETYPE_INTEGER64: + len = ber_len_val_int64(smiType, flags); + break; + case SMI_BASETYPE_UNSIGNED64: + len = ber_len_val_uint64(smiType, flags); + break; + default: + break; + } + + return len; +} + + + +static void +append_index(SmiSubid *oid, unsigned int *oidlen, + SmiNode *indexNode, len_type flags) +{ + SmiInteger32 int32 = 0; + SmiUnsigned32 uint32 = 0; + SmiType *indexType; + SmiModule *indexModule; + int i, len = 0; + + if (! indexNode) return; + + indexType = smiGetNodeType(indexNode); + if (! indexType) return; + + indexModule = smiGetTypeModule(indexType); + + switch (indexType->basetype) { + case SMI_BASETYPE_OBJECTIDENTIFIER: + + switch (flags) { + case len_max: + len = 128 - *oidlen; + if (indexNode->implied) len--; + break; + case len_mean: + len = 16; + break; + case len_min: + len = 2; + break; + } + + if (! indexNode->implied && *oidlen < 128) { + oid[(*oidlen)++] = len; + } + for (i = 0; i < len && *oidlen < 128; i++) { + switch (flags) { + case len_max: + if (i == 0) { + oid[(*oidlen)++] = 2; + } else { + oid[(*oidlen)++] = 4294967295UL; + } + break; + case len_mean: + oid[(*oidlen)++] = i + 1; + break; + case len_min: + oid[(*oidlen)++] = 0; + break; + } + } + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + switch (flags) { + case len_max: + len = smiGetMaxSize(indexType); + break; + case len_mean: + len = (smiGetMaxSize(indexType) + smiGetMinSize(indexType) / 2); + break; + case len_min: + len = smiGetMinSize(indexType); + break; + } + + if (indexModule && indexModule->name && indexType->name) { + int i; + for (i = 0; specialTypes[i].module; i++) { + if (strcmp(specialTypes[i].module, indexModule->name) == 0 + && (strcmp(specialTypes[i].name, indexType->name) == 0)) { + break; + } + } + if (specialTypes[i].module) { + switch (flags) { + case len_max: + len = specialTypes[i].max; + break; + case len_mean: + len = specialTypes[i].mean; + break; + case len_min: + len = specialTypes[i].min; + break; + } + } + } + + if (! indexNode->implied && *oidlen < 128) { + oid[(*oidlen)++] = len; + } + for (i = 0; i < len && *oidlen < 128; i++) { + switch (flags) { + case len_max: + oid[(*oidlen)++] = 255; + break; + case len_mean: + if (i == 0) { + oid[(*oidlen)++] = 1; + } else { + oid[(*oidlen)++] = (i%2) ? 85 : 170; + } + break; + case len_min: + oid[(*oidlen)++] = 0; + break; + } + } + break; + case SMI_BASETYPE_ENUM: + switch (flags) { + case len_max: + int32 = getAbsMaxEnum(indexType); + break; + case len_mean: + int32 = (getAbsMaxEnum(indexType) - getAbsMinEnum(indexType)) / 2; + break; + case len_min: + int32 = getAbsMinEnum(indexType); + break; + } + if (*oidlen < 128) { + oid[(*oidlen)++] = int32; + } + break; + case SMI_BASETYPE_INTEGER32: + switch (flags) { + case len_max: + int32 = getAbsMaxInteger32(indexType); + break; + case len_mean: + int32 = (getAbsMaxInteger32(indexType) + + getAbsMinInteger32(indexType)) / 2; + break; + case len_min: + int32 = getAbsMinInteger32(indexType); + break; + } + if (*oidlen < 128) { + oid[(*oidlen)++] = int32; + } + break; + case SMI_BASETYPE_UNSIGNED32: + switch (flags) { + case len_max: + uint32 = getMaxUnsigned32(indexType); + break; + case len_mean: + uint32 = (getMaxUnsigned32(indexType) + + getMinUnsigned32(indexType)) / 2; + break; + case len_min: + uint32 = getMinUnsigned32(indexType); + break; + } + if (*oidlen < 128) { + oid[(*oidlen)++] = uint32; + } + break; + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_INTEGER64: + case SMI_BASETYPE_UNSIGNED64: + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + case SMI_BASETYPE_POINTER: + /* should never really get here */ + break; + } +} + +#undef DUMP_OID + +static int +ber_len_varbind(SmiNode *smiNode, len_type flags) +{ + SmiNode *row; + SmiSubid oid[128]; + unsigned int oidlen = sizeof(oid)/sizeof(oid[0]); + int len = 0; +#ifdef DUMP_OID + int x; +#endif + + switch (smiNode->nodekind) { + case SMI_NODEKIND_SCALAR: + for (oidlen = 0; oidlen < smiNode->oidlen; oidlen++) { + oid[oidlen] = smiNode->oid[oidlen]; + } + oid[oidlen++] = 0; + break; + case SMI_NODEKIND_COLUMN: + for (oidlen = 0; oidlen < smiNode->oidlen; oidlen++) { + oid[oidlen] = smiNode->oid[oidlen]; + } + row = smiGetParentNode(smiNode); + if (row) { + SmiNode *indexNode = NULL, *iNode; + SmiElement *smiElement; + + switch (row->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + indexNode = row; + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(row); + break; + case SMI_INDEX_UNKNOWN: + break; + } + if (indexNode) { + for (smiElement = smiGetFirstElement(indexNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + iNode = smiGetElementNode(smiElement); + append_index(oid, &oidlen, iNode, flags); + } + } + } + break; + default: + return 0; + } + +#ifdef DUMP_OID + fprintf(stderr, "%-32s\t", smiNode->name); + for (x = 0; x < oidlen; x++) { + fprintf(stderr, ".%u", oid[x]); + } + fprintf(stderr, "\n"); +#endif + + len += ber_len_oid(oid, oidlen); + len += ber_len_val(smiGetNodeType(smiNode), flags); + len += ber_len_length(len) + 1; + + return len; +} + + + +static int +isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + return 1; + } + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_SCALAR + && childNode->access > SMI_ACCESS_NOTIFY) { + return 1; + } + } + + return 0; +} + + + +static void +dumpSizeOfPDU(FILE *f, SmiModule *smiModule, SmiNode *smiNode) +{ + SmiNode *child; + int worst = 0; + int best = 0; + int avg = 0; + int b, w, a, n = 0; + + for (child = smiGetFirstChildNode(smiNode); + child; + child = smiGetNextChildNode(child)) { + if (child->access == SMI_ACCESS_READ_WRITE + || child->access == SMI_ACCESS_READ_ONLY) { + + b = ber_len_varbind(child, len_min); + a = ber_len_varbind(child, len_mean); + w = ber_len_varbind(child, len_max); + + best += b, worst += w, avg += a, n++; + } + } + + /* varbind list sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + /* request-id as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(1073741824); + worst += ber_len_int32(-214783648); + + /* error-status as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(18); + + /* error-index as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(n-1); + + /* PDU sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", smiModule->name, smiNode->name, + avg, best, worst); + + if (detail) { + for (child = smiGetFirstChildNode(smiNode); + child; + child = smiGetNextChildNode(child)) { + if (child->access == SMI_ACCESS_READ_WRITE + || child->access == SMI_ACCESS_READ_ONLY) { + + b = ber_len_varbind(child, len_min); + a = ber_len_varbind(child, len_mean); + w = ber_len_varbind(child, len_max); + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", + "", child->name, a, b, w); + } + } + } +} + + + +static void +dumpSizeOfCreatePDU(FILE *f, SmiModule *smiModule, SmiNode *smiNode, + int ignoreDefaultColumns) +{ + SmiNode *child; + SmiType *childType; + SmiModule *childTypeModule; + + int worst = 0; + int best = 0; + int avg = 0; + int b, w, a, n = 0; + int isRowStatus; + + for (child = smiGetFirstChildNode(smiNode); + child; + child = smiGetNextChildNode(child)) { + if (child->access == SMI_ACCESS_READ_WRITE) { + + /* Ensure RowStatus columns are present even if they + * have a default value. */ + + childType = smiGetNodeType(child); + childTypeModule = childType + ? smiGetTypeModule(childType) : NULL; + + isRowStatus + = (childType && childType->name + && childTypeModule && childTypeModule->name) + ? (strcmp(childType->name, "RowStatus") == 0 + && strcmp(childTypeModule->name, "SNMPv2-TC") == 0) + : 0; + + /* xxx at least one PDU must be present xxx */ + + if (ignoreDefaultColumns + && child->value.basetype != SMI_BASETYPE_UNKNOWN + && !isRowStatus) { + continue; + } + + b = ber_len_varbind(child, len_min); + a = ber_len_varbind(child, len_mean); + w = ber_len_varbind(child, len_max); + +#if 0 + fprintf(f, " %-32s\t[%d..%d] | %d\n", child->name, b, w, a); +#endif + + best += b, worst += w, avg += a, n++; + } + } + + /* varbind list sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + /* request-id as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(1073741824); + worst += ber_len_int32(-214783648); + + /* error-status as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(18); + + /* error-index as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(n-1); + + /* PDU sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", smiModule->name, smiNode->name, + avg, best, worst); +} + + + +static void +dumpSizeOfNotificationPDU(FILE *f, SmiModule *smiModule, SmiNode *smiNode) +{ + SmiElement *smiElement; + SmiNode *varNode; + int worst = 0; + int best = 0; + int avg = 0; + int w, b, a; + int len = 0; + static const SmiSubid snmpTrapOid0[] + = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 }; + static const int snmpTrapOid0Len + = sizeof(snmpTrapOid0) / sizeof(SmiSubid); + + b = 15, w = 19, a = 18; + best += b, worst += w, avg += a; + + len += ber_len_oid(smiNode->oid, smiNode->oidlen); + len += ber_len_oid(snmpTrapOid0, snmpTrapOid0Len); + len += ber_len_length(len) + 1; + b = len, w = len, a = len; + best += b, worst += w, avg += a; + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + varNode = smiGetElementNode(smiElement); + if (! varNode) continue; + + b = ber_len_varbind(varNode, len_min); + a = ber_len_varbind(varNode, len_mean); + w = ber_len_varbind(varNode, len_max); + + best += b, worst += w, avg += a; + } + + /* varbind list sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + /* request-id as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(1073741824); + worst += ber_len_int32(-214783648); + + /* error-status as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(18); + + /* error-index as defined in RFC 3416 */ + best += ber_len_int32(0); + avg += ber_len_int32(0); + worst += ber_len_int32(0); + + /* PDU sequence length and tag */ + best += ber_len_length(best) + 1; + avg += ber_len_length(avg) + 1; + worst += ber_len_length(worst) + 1; + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", smiModule->name, smiNode->name, + avg, best, worst); + + if (detail) { + b = 15, w = 19, a = 18; + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", + "", "sysUpTime", a, b, w); + + len = 0; + len += ber_len_oid(smiNode->oid, smiNode->oidlen); + len += ber_len_oid(snmpTrapOid0, snmpTrapOid0Len); + len += ber_len_length(len) + 1; + b = len, w = len, a = len; + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", + "", "snmpTrapOID", a, b, w); + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + varNode = smiGetElementNode(smiElement); + if (! varNode) continue; + + b = ber_len_varbind(varNode, len_min); + a = ber_len_varbind(varNode, len_mean); + w = ber_len_varbind(varNode, len_max); + + fprintf(f, "%-23s %-23s \t%d\t[%d..%d]\n", + "", varNode->name, a, b, w); + } + } +} + + + +static void +dumpGroupPduSizes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + dumpSizeOfPDU(f, smiModule, smiNode); + } + } +} + + + +static void +dumpFullRowCreatePduSizes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ROW); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ROW)) { + if (smiNode->create) { + dumpSizeOfCreatePDU(f, smiModule, smiNode, 0); + } + } +} + + + +static void +dumpSmallRowCreatePduSizes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ROW); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ROW)) { + if (smiNode->create) { + dumpSizeOfCreatePDU(f, smiModule, smiNode, 1); + } + } +} + + + +static void +dumpNotificationPduSizes(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + dumpSizeOfNotificationPDU(f, smiModule, smiNode); + } +} + + + +static void +dumpSizes(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! silent) { + int pos = 8888; + fprintf(f, "# united module PDU sizes (generated by smidump " + SMI_VERSION_STRING ")\n"); + fprintf(f, "#\n# smidump -u -f sizes"); + for (i = 0; i < modc; i++) { + int len = strlen(modv[i]->name); + if (pos + len > 70) { + fprintf(f, " \\\n#\t"), pos = 8; + } + fprintf(f, "%s ", modv[i]->name); + pos += len + 1; + } + fprintf(f, "%s\n", (pos == 8) ? "" : "\n"); + } + fprintf(f, "\n# size of PDUs for groups and rows:\n\n"); + for (i = 0; i < modc; i++) { + dumpGroupPduSizes(f, modv[i]); + } + fprintf(f, "\n# size of one-shot row creation PDUs including columns with default values:\n\n"); + for (i = 0; i < modc; i++) { + dumpFullRowCreatePduSizes(f, modv[i]); + } + fprintf(f, "\n# size of one-shot row creation PDUs excluding columns with default values:\n\n"); + for (i = 0; i < modc; i++) { + dumpSmallRowCreatePduSizes(f, modv[i]); + } + fprintf(f, "\n# size of notification PDUs:\n\n"); + for (i = 0; i < modc; i++) { + dumpNotificationPduSizes(f, modv[i]); + } + } else { + for (i = 0; i < modc; i++) { + if (! silent) { + fprintf(f, "# %s module PDU sizes (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + fprintf(f, "\n# size of PDUs for groups and rows:\n\n"); + dumpGroupPduSizes(f, modv[i]); + fprintf(f, "\n# size of one-shot row creation PDUs including columns with default values:\n\n"); + dumpFullRowCreatePduSizes(f, modv[i]); + fprintf(f, "\n# size of one-shot row creation PDUs excluding columns with default values:\n\n"); + dumpSmallRowCreatePduSizes(f, modv[i]); + fprintf(f, "\n# size of notification PDUs:\n\n"); + dumpNotificationPduSizes(f, modv[i]); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + +void +initSizes() +{ + static SmidumpDriverOption opt[] = { + { "variables", OPT_FLAG, &detail, 0, + "show detailed information the sizes of variables"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "sizes", + dumpSizes, + SMI_FLAG_NODESCR, + 0, + "RFC 3416 PDU sizes excluding message / transport headers", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-smi.c b/tools/dump-smi.c new file mode 100644 index 0000000..6a13d7a --- /dev/null +++ b/tools/dump-smi.c @@ -0,0 +1,2045 @@ +/* + * dump-smi.c -- + * + * Operations to dump SMIv1/v2 module information. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-smi.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +extern int smiAsprintf(char **strp, const char *format, ...); + + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 16 /* column to start values, except multiline */ +#define INDENTTEXTS 9 /* column to start multiline texts */ +#define INDENTTEXTS2 15 /* column to start indented multiline texts */ +#define INDENTMAX 72 /* max column to fill, break lines otherwise */ + + + +static char *convertTypev1[] = { + NULL, "Counter32", NULL, "Counter", + NULL, "Gauge32", NULL, "Gauge", + NULL, "Integer32", NULL, "INTEGER", + NULL, "Unsigned32", NULL, "Gauge", + NULL, "Bits", NULL, "OCTET STRING", + NULL, "OctetString", NULL, "OCTET STRING", + NULL, "ObjectIdentifier", NULL, "OBJECT IDENTIFIER", + NULL, NULL, NULL, NULL }; + + +static char *convertTypev2[] = { + NULL, "INTEGER", NULL, "Integer32", + NULL, "Enumeration", NULL, "INTEGER", + NULL, "Bits", NULL, "BITS", + NULL, "OctetString", NULL, "OCTET STRING", + NULL, "ObjectIdentifier", NULL, "OBJECT IDENTIFIER", + NULL, "Counter", NULL, "Counter32", + NULL, "Gauge", NULL, "Gauge32", + NULL, NULL, NULL, NULL }; + +static char *convertTypePIBtoMIB[] = { + NULL, "Unsigned64", NULL, "IBRUnsigned64", + NULL, "Integer64", NULL, "IBRInteger64", +/* XXX This breaks SMIv2 -> SMIv? compilation such that the IMPORT statement + for SnmpAdminString is removed. I've remove this as a quick fix, but I'm + not sure what to do for PIB compilation here. + NULL, "SnmpAdminString", NULL, "OCTET STRING", +*/ + NULL, NULL, NULL, NULL }; + +static char *convertImportv2[] = { + "IRTF-NMRG-SMING-TYPES", "IpAddress", "SNMPv2-SMI", "IpAddress", + "IRTF-NMRG-SMING-TYPES", "Counter32", "SNMPv2-SMI", "Counter32", + "IRTF-NMRG-SMING-TYPES", "Gauge32", "SNMPv2-SMI", "Gauge32", + "IRTF-NMRG-SMING-TYPES", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "IRTF-NMRG-SMING-TYPES", "Opaque", "SNMPv2-SMI", "Opaque", + "IRTF-NMRG-SMING-TYPES", "Counter64", "SNMPv2-SMI", "Counter64", + "IRTF-NMRG-SMING-TYPES", "DisplayString", "SNMPv2-TC", "DisplayString", + "IRTF-NMRG-SMING-TYPES", "PhysAddress", "SNMPv2-TC", "PhysAddress", + "IRTF-NMRG-SMING-TYPES", "MacAddress", "SNMPv2-TC", "MacAddress", + "IRTF-NMRG-SMING-TYPES", "TruthValue", "SNMPv2-TC", "TruthValue", + "IRTF-NMRG-SMING-TYPES", "TestAndIncr", "SNMPv2-TC", "TestAndIncr", + "IRTF-NMRG-SMING-TYPES", "AutonomousType", "SNMPv2-TC", "AutonomousType", + "IRTF-NMRG-SMING-TYPES", "InstancePointer", "SNMPv2-TC", "InstancePointer", + "IRTF-NMRG-SMING-TYPES", "VariablePointer", "SNMPv2-TC", "VariablePointer", + "IRTF-NMRG-SMING-TYPES", "RowPointer", "SNMPv2-TC", "RowPointer", + "IRTF-NMRG-SMING-TYPES", "RowStatus", "SNMPv2-TC", "RowStatus", + "IRTF-NMRG-SMING-TYPES", "TimeStamp", "SNMPv2-TC", "TimeStamp", + "IRTF-NMRG-SMING-TYPES", "TimeInterval", "SNMPv2-TC", "TimeInterval", + "IRTF-NMRG-SMING-TYPES", "DateAndTime", "SNMPv2-TC", "DateAndTime", + "IRTF-NMRG-SMING-TYPES", "StorageType", "SNMPv2-TC", "StorageType", + "IRTF-NMRG-SMING-TYPES", "TDomain", "SNMPv2-TC", "TDomain", + "IRTF-NMRG-SMING-TYPES", "TAddress", "SNMPv2-TC", "TAddress", + "IRTF-NMRG-SMING", NULL, "SNMPv2-SMI", NULL, + + "RFC1155-SMI", "internet", "SNMPv2-SMI", "internet", + "RFC1155-SMI", "directory", "SNMPv2-SMI", "directory", + "RFC1155-SMI", "mgmt", "SNMPv2-SMI", "mgmt", + "RFC1155-SMI", "experimental", "SNMPv2-SMI", "experimental", + "RFC1155-SMI", "private", "SNMPv2-SMI", "private", + "RFC1155-SMI", "enterprises", "SNMPv2-SMI", "enterprises", + "RFC1155-SMI", "IpAddress", "SNMPv2-SMI", "IpAddress", + "RFC1155-SMI", "Counter", "SNMPv2-SMI", "Counter32", + "RFC1155-SMI", "Gauge", "SNMPv2-SMI", "Gauge32", + "RFC1155-SMI", "TimeTicks", "SNMPv2-SMI", "TimeTicks", + "RFC1155-SMI", "Opaque", "SNMPv2-SMI", "Opaque", + "RFC1213-MIB", "mib-2", "SNMPv2-SMI", "mib-2", + "RFC1213-MIB", "DisplayString", "SNMPv2-TC", "DisplayString", + +/* import types for PIB to MIB conversion */ + + NULL, NULL, NULL, NULL }; + +static char *convertImportv1[] = { + "IRTF-NMRG-SMING-TYPES", "IpAddress", "RFC1155-SMI", "IpAddress", + "IRTF-NMRG-SMING-TYPES", "Counter32", "RFC1155-SMI", "Counter", + "IRTF-NMRG-SMING-TYPES", "Gauge32", "RFC1155-SMI", "Gauge", + "IRTF-NMRG-SMING-TYPES", "TimeTicks", "RFC1155-SMI", "TimeTicks", + "IRTF-NMRG-SMING-TYPES", "Opaque", "RFC1155-SMI", "Opaque", + "IRTF-NMRG-SMING-TYPES", "Counter64", NULL, NULL, + "IRTF-NMRG-SMING", "mib-2", "RFC1213-MIB", "mib-2", + + "SNMPv2-SMI", "IpAddress", "RFC1155-SMI", "IpAddress", + "SNMPv2-SMI", "Counter32", "RFC1155-SMI", "Counter", + "SNMPv2-SMI", "Gauge32", "RFC1155-SMI", "Gauge", + "SNMPv2-SMI", "TimeTicks", "RFC1155-SMI", "TimeTicks", + "SNMPv2-SMI", "Opaque", "RFC1155-SMI", "Opaque", + "SNMPv2-SMI", "Integer32", NULL, NULL, + "SNMPv2-SMI", "Unsigned32", NULL, NULL, + "SNMPv2-SMI", "Counter64", NULL, NULL, + "SNMPv2-SMI", "mib-2", "RFC1213-MIB", "mib-2", + "SNMPv2-SMI", "MODULE-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "ObjectName", NULL, NULL, + "SNMPv2-SMI", "NotificationName", NULL, NULL, + "SNMPv2-SMI", "ObjectSyntax", NULL, NULL, + "SNMPv2-SMI", "SimpleSyntax", NULL, NULL, + "SNMPv2-SMI", "ApplicationSyntax", NULL, NULL, + "SNMPv2-SMI", "OBJECT-TYPE", NULL, NULL, + "SNMPv2-SMI", "NOTIFICATION-TYPE", NULL, NULL, + NULL, NULL, NULL, NULL }; + +static int current_column = 0; +static int smiv1 = 0; +static int silent = 0; +static int pibtomib = 0; + + +typedef struct Import { + char *module; + char *name; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + + + +static int invalidType(SmiBasetype basetype) +{ + if (smiv1) { + return (basetype == SMI_BASETYPE_INTEGER64) + || (basetype == SMI_BASETYPE_UNSIGNED64) + || (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); + } else if (!pibtomib) { + return (basetype == SMI_BASETYPE_INTEGER64) + || (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); + } else { + return (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); + } +} + + + +static char *getStatusString(SmiStatus status) +{ + if (smiv1) { + return + (status == SMI_STATUS_CURRENT) ? "mandatory" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; + } else { + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; + } +} + + + +static char *getAccessString(SmiAccess access, int create) +{ + if (smiv1) { + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "read-only" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; + + } else { + if (create && (access == SMI_ACCESS_READ_WRITE)) { + return "read-create"; + } else { + if (pibtomib) + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "read-only" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + (access == SMI_ACCESS_INSTALL) ? "read-create" : + (access == SMI_ACCESS_INSTALL_NOTIFY) ? "read-create" : + ""; + else + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "accessible-for-notify" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; + } + } +} + + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d%02d%02d%02d%02dZ", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char *getTypeString(SmiBasetype basetype, SmiType *smiType) +{ + int i; + char **convertType; + char *typeModule, *typeName; + + typeName = smiType ? smiType->name : NULL; + typeModule = smiType ? smiGetTypeModule(smiType)->name : NULL; + + convertType = smiv1 ? convertTypev1 : convertTypev2; + + if (typeName && + (basetype != SMI_BASETYPE_ENUM) && + (basetype != SMI_BASETYPE_BITS)) { + if (pibtomib) + for(i=0; convertTypePIBtoMIB[i+1]; i += 4) { + if ((!strcmp(typeName, convertTypePIBtoMIB[i+1])) && + ((!typeModule) || (!convertTypePIBtoMIB[i]) || + (!strcmp(typeModule, convertTypePIBtoMIB[i])))) { + return convertTypePIBtoMIB[i+3]; + } + } + for(i=0; convertType[i+1]; i += 4) { + if ((!strcmp(typeName, convertType[i+1])) && + ((!typeModule) || (!convertType[i]) || + (!strcmp(typeModule, convertType[i])))) { + return convertType[i+3]; + } + } + } + + if ((!typeModule) || (!strlen(typeModule)) || (!typeName)) { + if (basetype == SMI_BASETYPE_ENUM) { + return "INTEGER"; + } + if (basetype == SMI_BASETYPE_BITS) { + if (smiv1) { + return "OCTET STRING"; + } else { + return "BITS"; + } + } + } + + /* TODO: fully qualified if unambigous */ + + return typeName; +} + + + +static char *getOidString(SmiNode *smiNode, int importedParent) +{ + SmiNode *parentNode; + SmiModule *smiModule; + static char s[200]; + char append[200]; + unsigned int i; + + append[0] = 0; + + parentNode = smiNode; + smiModule = smiGetNodeModule(smiNode); + + do { + + if (parentNode->oidlen <= 1) { + break; + } + + /* prepend the cut-off subidentifier to `append'. */ + strcpy(s, append); + if (parentNode->decl != SMI_DECL_IMPL_OBJECT) { + sprintf(append, " %u%s", parentNode->oid[parentNode->oidlen-1], s); + } else { + sprintf(append, " %s(%u)%s", + parentNode->name, + parentNode->oid[parentNode->oidlen-1], s); + } + + /* retrieve the parent SmiNode */ + parentNode = smiGetParentNode(parentNode); + + if (!parentNode) { + sprintf(s, "%s", append); + return s; + } + + /* found an imported or a local parent node? */ + if ((parentNode->decl != SMI_DECL_IMPL_OBJECT) && + ((parentNode->name && strlen(parentNode->name)) && + (smiIsImported(smiModule, NULL, parentNode->name) || + (!importedParent && + (smiGetNodeModule(parentNode) == smiModule)) || + (parentNode->oidlen == 1)))) { + sprintf(s, "%s%s", parentNode->name, append); + return s; + } + + } while (parentNode); + + s[0] = 0; + for (i=0; i < smiNode->oidlen; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", smiNode->oid[i]); + } + return s; +} + + + +static char *getUppercaseString(char *s) +{ + static char *ss; + + ss = xstrdup(s); + ss[0] = (char)toupper((int)ss[0]); + return ss; +} + + + +static int isObjectGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_SCALAR + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + return 0; + } + } + + return 1; +} + + + +static int isNotificationGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_NOTIFICATION) { + return 0; + } + } + + return 1; +} + + + +static Import* addImport(char *module, char *name) +{ + Import **import, *newImport; + char **convertImport; + int i; + + convertImport = smiv1 ? convertImportv1 : convertImportv2; + + for (i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(module, convertImport[i]) + && !strcmp(name, convertImport[i+1])) { + module = convertImport[i+2]; + name = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(module, convertImport[i])) { + module = convertImport[i+2]; + break; + } + } + + if (!module || !name) { + return NULL; + } + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c < 0) continue; + if (c == 0) { + int d = strcmp((*import)->name, name); + if (d < 0) continue; + if (d == 0) return *import; + if (d > 0) break; + } + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + if (! newImport) { + return NULL; + } + newImport->module = module; + newImport->name = name; + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void createImportList(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiNodekind kind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + SmiImport *smiImport; + SmiModule *smiModule2; + + if (pibtomib) { + addImport("TUBS-SMI", "ibrpibtomib"); + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->basetype == SMI_BASETYPE_UNSIGNED32) + addImport("SNMPv2-SMI", "Unsigned32"); + else if (smiType->basetype == SMI_BASETYPE_UNSIGNED64) + addImport("TUBS-SMI", "IBRUnsigned64"); + else if (smiType->basetype == SMI_BASETYPE_INTEGER64) + addImport("TUBS-SMI", "IBRInteger64"); + } + if (smiGetFirstNode(smiModule, SMI_NODEKIND_TABLE) != NULL) + addImport("SNMPv2-TC", "RowStatus"); + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ROW); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ROW)) { + if (smiNode->indexkind == SMI_INDEX_SPARSE) { + SmiNode *smiNode2 = smiGetRelatedNode(smiNode); + while (smiNode2 && (smiNode2->indexkind == SMI_INDEX_SPARSE)) + smiNode2 = smiGetRelatedNode(smiNode2); + if (smiNode2) { + smiModule2 = smiGetNodeModule(smiNode2); + if (smiModule != smiModule2) + addImport(smiModule2->name, smiNode2->name); + } + } + } + } + + for(smiNode = smiGetFirstNode(smiModule, kind); smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + smiType = smiGetNodeType(smiNode); + if (smiType && (smiType->decl == SMI_DECL_IMPLICIT_TYPE)) { + smiType = smiGetParentType(smiType); + } + if (smiType) { + smiModule2 = smiGetTypeModule(smiType); + if (smiModule2 && (smiModule2 != smiModule)) { + size_t len = strlen(smiModule2->name); + if (len && smiType->name) { + if (pibtomib && (len > 4) && + !strcmp(&smiModule2->name[len - 4], "-PIB")) { + char *newName = xmalloc(len + 5); + strcpy(newName, smiModule2->name); + strcat(newName, "-MIB"); + addImport(newName, smiType->name); + } else + addImport(smiModule2->name, smiType->name); + } + } + } + + if (pibtomib) { + if (smiType && (smiType->basetype == SMI_BASETYPE_UNSIGNED32)) + addImport("SNMPv2-SMI", "Unsigned32"); + if (smiType && (smiType->basetype == SMI_BASETYPE_UNSIGNED64)) + addImport("TUBS-SMI", "IBRUnsigned64"); + if (smiType && (smiType->basetype == SMI_BASETYPE_INTEGER64)) + addImport("TUBS-SMI", "IBRInteger64"); + } + + if (! smiv1 && + smiType && smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("SNMPv2-SMI", "Integer32"); + } + + if ((!smiv1) && + (smiNode->value.basetype == SMI_BASETYPE_OBJECTIDENTIFIER) && + (!strcmp(smiNode->value.value.ptr, "zeroDotZero"))) { + addImport("SNMPv2-SMI", "zeroDotZero"); + } + } + + smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN + | SMI_NODEKIND_TABLE | SMI_NODEKIND_ROW); + if (smiNode) { + addImport(smiv1 ? "RFC-1212" : "SNMPv2-SMI", "OBJECT-TYPE"); + } + + smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + if (smiNode) { + addImport(smiv1 ? "RFC-1215" : "SNMPv2-SMI", + smiv1 ? "TRAP-TYPE" : "NOTIFICATION-TYPE"); + } + + if (! smiv1) { + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + if (strcmp("SNMPv2-SMI", smiModule->name)) { + addImport("SNMPv2-SMI", "MODULE-IDENTITY"); + } + } + } + + if (! smiv1) { + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + if (smiNode->status != SMI_STATUS_UNKNOWN && + smiNode != smiGetModuleIdentityNode(smiModule)) { + if (strcmp("SNMPv2-SMI", smiModule->name)) { + addImport("SNMPv2-SMI", "OBJECT-IDENTITY"); + } + break; + } + } + } + + if (! smiv1) { + smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + if (smiNode) { + if (strcmp("SNMPv2-CONF", smiModule->name)) { + addImport("SNMPv2-CONF", "MODULE-COMPLIANCE"); + } + } + } + + if (! smiv1) { + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (isObjectGroup(smiNode)) { + if (strcmp("SNMPv2-CONF", smiModule->name)) { + addImport("SNMPv2-CONF", "OBJECT-GROUP"); + } + } else if (isNotificationGroup(smiNode)) { + if (strcmp("SNMPv2-CONF", smiModule->name)) { + addImport("SNMPv2-CONF", "NOTIFICATION-GROUP"); + } + } + } + } + + if (! smiv1) { + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->description) { + if (strcmp("SNMPv2-TC", smiModule->name)) { + addImport("SNMPv2-TC", "TEXTUAL-CONVENTION"); + } + break; + } + } + } + + for (smiImport = smiGetFirstImport(smiModule); smiImport; + smiImport = smiGetNextImport(smiImport)) { + if (islower((int) smiImport->name[0]) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-SMI")) || + (!smiv1 && smiImport->module && !strcmp(smiImport->module, "SNMPv2-TC"))) { + addImport(smiImport->module, smiImport->name); + } + } +} + + + +static void freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, + int length, int comment) +{ + char *format; + + if (comment) { + format = "-- %*c%s"; + /* if (column >= 3) column -= 3; */ + } else { + format = "%*c%s"; + } + + fprint(f, format, column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintWrapped(FILE *f, int column, char *string, int comment) +{ + if ((current_column + strlen(string)) > INDENTMAX) { + putc('\n', f); + current_column = 0; + fprintSegment(f, column, "", 0, comment); + } + fprint(f, "%s", string); +} + + + +static void fprintMultilineString(FILE *f, const char *s, const int comment) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS - 1, "\"", 0, comment); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS, "", 0, comment); + } + } + } + putc('\"', f); + current_column++; +} + + + +static void fprintMultilineString2(FILE *f, const char *s, const int comment) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS2 - 1, "\"", 0, comment); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS2, "", 0, comment); + } + } + } + putc('\"', f); + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "'%*s'H", 2 * valuePtr->len, " "); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + if (smiv1) { + sprintf(s, "'%*s'H", 2 * valuePtr->len, " "); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } else { + sprintf(s, "{"); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + sprintf(&s[strlen(s)], "%s", nn->name); + } + } + } + sprintf(&s[strlen(s)], "}"); + } + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, "{"); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + strcat(s, "}"); + } + break; + } + + return s; +} + + + +static void fprintSubtype(FILE *f, SmiType *smiType, const int comment) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[1024]; + int i, c = comment; + + if (pibtomib && ((smiType->basetype == SMI_BASETYPE_UNSIGNED64) || + (smiType->basetype == SMI_BASETYPE_INTEGER64))) { + c = 1; + fprint(f, " -- commented out by smidump\n-- "); + } + c = c || (smiv1 && smiType->basetype == SMI_BASETYPE_BITS); + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn; i++, nn = smiGetNextNamedNumber(nn)) { + if (i) { + fprint(f, ", "); + } else { + if (c) { + fprint(f, "\n"); + fprintSegment(f, INDENT, "", INDENTVALUE, c); + fprint(f, " { "); + } else { + fprint(f, " { "); + } + } + sprintf(s, "%s(%s)", nn->name, + getValueString(&nn->value, smiType)); + fprintWrapped(f, INDENTVALUE + INDENT, s, c); + } + if (i) { + fprint(f, " }"); + } + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range; i++, range = smiGetNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprint(f, " (SIZE("); + } else { + fprint(f, " ("); + } + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiType)); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + } + fprintWrapped(f, INDENTVALUE + INDENT, s, 0); + } + if (i) { + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprint(f, ")"); + } + fprint(f, ")"); + } + } +} + + + +static void fprintIndex(FILE *f, SmiNode *indexNode, const int comment) +{ + SmiElement *smiElement, *smiFirstElement; + int n, j; + + for (n = 0, smiElement = smiGetFirstElement(indexNode); smiElement; + n++, smiElement = smiGetNextElement(smiElement)); + if (pibtomib && (n > 1)) + smiFirstElement = smiGetNextElement(smiGetFirstElement(indexNode)); + else + smiFirstElement = smiGetFirstElement(indexNode); + fprintSegment(f, INDENT, "INDEX", INDENTVALUE, comment); + fprint(f, "{ "); + for (j = 0, smiElement = smiFirstElement; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + if (indexNode->implied && ((j+1) == n)) { + fprintWrapped(f, INDENTVALUE + 2, "IMPLIED ", 0); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); +} + + + +static void fprintImports(FILE *f) +{ + Import *import; + char *lastModulename = NULL; + char *importedModulename, *importedDescriptor; + int i; + char **convertImport; + + convertImport = smiv1 ? convertImportv1 : convertImportv2; + + for(import = importList; import; import = import->nextPtr) { + importedModulename = import->module; + importedDescriptor = import->name; + + if (!strlen(importedModulename)) + continue; + + for(i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(importedModulename, convertImport[i]) + && !strcmp(importedDescriptor, convertImport[i+1])) { + importedModulename = convertImport[i+2]; + importedDescriptor = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(importedModulename, convertImport[i])) { + importedModulename = convertImport[i+2]; + break; + } + } + + if (importedModulename && importedDescriptor && + strlen(importedDescriptor)) { + if ((!lastModulename) || + strcmp(importedModulename, lastModulename)) { + if (!lastModulename) { + fprint(f, "IMPORTS"); + } else { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "", 0, 0); + fprint(f, "FROM %s", lastModulename); + } + fprint(f, "\n"); + fprintSegment(f, INDENT, "", 0, 0); + } else { + fprint(f, ", "); + } + fprintWrapped(f, INDENT, importedDescriptor, 0); + lastModulename = importedModulename; + } + } + if (lastModulename) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "", 0, 0); + fprint(f, "FROM %s;\n\n", lastModulename); + } +} + + + +static void fprintModuleIdentity(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + + smiNode = smiGetModuleIdentityNode(smiModule); + + if (smiNode) { + + if (smiv1 && smiNode) { + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + + if (! smiv1 || ! silent) { + + if (smiv1) { + fprint(f, "-- %s MODULE-IDENTITY\n", smiNode->name); + } else { + fprint(f, "%s MODULE-IDENTITY\n", smiNode->name); + } + fprintSegment(f, INDENT, "LAST-UPDATED", INDENTVALUE, smiv1); + smiRevision = smiGetFirstRevision(smiModule); + if (smiRevision) + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + else + fprint(f, "\"197001010000Z\"\n"); + fprintSegment(f, INDENT, "ORGANIZATION", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->organization, smiv1); + fprint(f, "\n"); + fprintSegment(f, INDENT, "CONTACT-INFO", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->contactinfo, smiv1); + fprint(f, "\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiModule->description) { + fprintMultilineString(f, smiModule->description, smiv1); + } else { + fprintMultilineString(f, "...", smiv1); + } + fprint(f, "\n"); + + for(; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + if (!smiRevision->description + || strcmp(smiRevision->description, + "[Revision added by libsmi due to a LAST-UPDATED clause.]")) { + fprintSegment(f, INDENT, "REVISION", INDENTVALUE, smiv1); + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, + smiv1); + fprint(f, "\n"); + if (smiRevision->description) { + fprintMultilineString(f, smiRevision->description, + smiv1); + } else { + fprintMultilineString(f, "...", smiv1); + } + fprint(f, "\n"); + } + } + + if (smiNode) { + fprintSegment(f, INDENT, "::= ", 0, smiv1); + if (!pibtomib) + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + else + fprint(f, "{ ibrpibtomib %d }\n\n", + smiNode->oid[smiNode->oidlen - 1]); + } + /* TODO: else error */ + + fprint(f, "\n"); + } + } +} + + + +static void fprintTypeDefinition(FILE *f, SmiType *smiType) +{ + int invalid; + + if (smiType->status == SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + if (invalid) { + fprint(f, "-- %s ::=\n", smiType->name); + } else { + fprint(f, "%s ::=\n", smiType->name); + } + fprintSegment(f, INDENT, "", 0, invalid); + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n\n"); + } +} + + + +static void fprintTypeDefinitions(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + fprintTypeDefinition(f, smiType); + } +} + + + +static void fprintTextualConvention(FILE *f, SmiType *smiType) +{ + SmiType *baseType; + SmiModule *baseModule; + int i, invalid; + + char *smiv2basetypes[] = { + "SNMPv2-SMI", "IpAddress", + "SNMPv2-SMI", "Counter32", + "SNMPv2-SMI", "Gauge32", + "SNMPv2-SMI", "TimeTicks", + "SNMPv2-SMI", "Counter64", + NULL, NULL + }; + + if (smiType->status != SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + if (smiv1 && !invalid) { + fprint(f, "%s ::=\n", smiType->name); + fprintSegment(f, INDENT, "", 0, invalid); + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n\n"); + } + + if (! smiv1 || ! silent) { + + if (smiv1 || invalid) { + fprint(f, "-- %s ::= TEXTUAL-CONVENTION\n", smiType->name); + } else { + fprint(f, "%s ::= TEXTUAL-CONVENTION\n", smiType->name); + } + + if (smiType->format) { + fprintSegment(f, INDENT, "DISPLAY-HINT", INDENTVALUE, + smiv1 || invalid); + fprint(f, "\"%s\"\n", smiType->format); + } + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, + smiv1 || invalid); + fprint(f, "%s\n", getStatusString(smiType->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, + smiv1 || invalid); + fprint(f, "\n"); + if (smiType->description) { + fprintMultilineString(f, smiType->description, + smiv1 || invalid); + } else { + fprintMultilineString(f, "...", smiv1 || invalid); + } + fprint(f, "\n"); + + if (smiType->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, + smiv1 || invalid); + fprint(f, "\n"); + fprintMultilineString(f, smiType->reference, + smiv1 || invalid); + fprint(f, "\n"); + } + + for (baseType = smiGetParentType(smiType); + baseType; + baseType = smiGetParentType(baseType)) { + SmiType *parent = smiGetParentType(baseType); + + baseModule = smiGetTypeModule(baseType); + if (baseModule && baseModule->name) { + for (i = 0; smiv2basetypes[i]; i += 2) { + if (strcmp(smiv2basetypes[i+1], baseType->name) == 0 + && strcmp(smiv2basetypes[i], baseModule->name) == 0) { + parent = NULL; + } + } + } + + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, + smiv1 || invalid || parent); + fprint(f, "%s", + getTypeString(baseType->basetype, baseType)); + fprintSubtype(f, smiType, smiv1 || invalid || parent); + if (parent) { + fprintf(f, "\n"); + } + if (!parent) break; + } + fprint(f, "\n\n"); + } + } +} + + + +static void fprintTextualConventions(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + fprintTextualConvention(f, smiType); + } +} + + +static int isInIndex(SmiNode *node, SmiNode *parentNode) +{ + SmiElement *element; + + if ((parentNode->indexkind != SMI_INDEX_INDEX) && + (parentNode->indexkind != SMI_INDEX_EXPAND)) + return 0; + + for (element = smiGetNextElement(smiGetFirstElement(parentNode)); element; + element = smiGetNextElement(element)) + if (smiGetElementNode(element)->name && + node->name && + !strcmp(smiGetElementNode(element)->name, node->name)) + return 1; + return 0; +} + + +static void fprintObjects(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *rowNode, *colNode, *smiParentNode, *relatedNode; + SmiType *smiType; + SmiNodekind nodekinds; + int i, invalid, create, assignement, indentsequence, addrowstatus; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for(smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; smiNode = smiGetNextNode(smiNode, nodekinds)) { + + smiType = smiGetNodeType(smiNode); + smiParentNode = smiGetParentNode(smiNode); + + create = smiParentNode ? smiParentNode->create : 0; + + invalid = !smiType ? 0 : invalidType(smiType->basetype); + assignement = 0; + + if (invalid && silent + && (smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN)) { + continue; + } + + if (smiNode == smiGetModuleIdentityNode(smiModule)) { + continue; + } + + if ((smiNode->nodekind == SMI_NODEKIND_NODE) && + (smiNode->status == SMI_STATUS_UNKNOWN)) { + assignement = 1; + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + } else if (smiNode->nodekind == SMI_NODEKIND_NODE) { + if (smiv1) { + assignement = 1; + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + } else { + fprint(f, "%s OBJECT-IDENTITY\n", smiNode->name); + } + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + /* TODO: real agent capabilities */ + fprint(f, "-- This has been an SMIv2 AGENT-CAPABILITIES node:\n"); + if (smiv1) { + assignement = 1; + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + } else { + fprint(f, "%s OBJECT-IDENTITY\n", smiNode->name); + } + } else { + if (invalid) { + fprint(f, "-- %s OBJECT-TYPE\n", smiNode->name); + } else { + fprint(f, "%s OBJECT-TYPE\n", smiNode->name); + } + } + + if ((smiNode->nodekind == SMI_NODEKIND_TABLE) || + (smiNode->nodekind == SMI_NODEKIND_ROW) || + (smiType)) { + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, invalid); + if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + fprint(f, "SEQUENCE OF "); + rowNode = smiGetFirstChildNode(smiNode); + if (rowNode) { + smiType = smiGetNodeType(rowNode); + if (smiType) { + fprint(f, "%s\n", smiType->name); + } else { + /* guess type name is uppercase row name */ + char *s = getUppercaseString(rowNode->name); + fprint(f, "%s\n", s); + xfree(s); + } + /* TODO: print non-local name qualified */ + } else { + fprint(f, "\n"); + } + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + if (smiType) { + fprint(f, "%s\n", smiType->name); + } else { + char *s = getUppercaseString(smiNode->name); + /* guess type name is uppercase row name */ + fprint(f, "%s\n", s); + xfree(s); + } + /* TODO: print non-local name qualified */ + } else if (smiType) { + if (!smiType->name) { + /* + * an implicitly restricted type. + */ + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n"); + } else { + fprint(f, "%s\n", + getTypeString(smiType->basetype, smiType)); + } + } + } + + if (! assignement && smiNode->units) { + fprintSegment(f, INDENT, "UNITS", INDENTVALUE, smiv1 || invalid); + fprint(f, "\"%s\"\n", smiNode->units); + } + + if (! assignement && + smiNode->nodekind != SMI_NODEKIND_CAPABILITIES && + smiNode->nodekind != SMI_NODEKIND_NODE) { + if (smiv1) { + fprintSegment(f, INDENT, "ACCESS", INDENTVALUE, invalid); + } else { + fprintSegment(f, INDENT, "MAX-ACCESS", INDENTVALUE, 0); + } + if (pibtomib) { + if ((smiNode->nodekind == SMI_NODEKIND_TABLE) || + (smiNode->nodekind == SMI_NODEKIND_ROW)) + fprint(f, "not-accessible\n"); + else if ((smiNode->nodekind == SMI_NODEKIND_COLUMN) && + isInIndex(smiNode, smiParentNode)) + fprint(f, "not-accessible\n"); + else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) + fprint(f, "read-create\n"); + else + fprint(f, "%s\n", getAccessString(smiNode->access, create)); + } else + fprint(f, "%s\n", getAccessString(smiNode->access, create)); + } + + if (! assignement) { + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, invalid); + fprint(f, "%s\n", getStatusString(smiNode->status)); + } + + if (! assignement) { + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, invalid); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, invalid); + } else { + fprintMultilineString(f, "...", invalid); + } + fprint(f, "\n"); + } + + if (! assignement && smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, + smiv1 || invalid); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, smiv1 || invalid); + fprint(f, "\n"); + } + + relatedNode = smiGetRelatedNode(smiNode); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + fprintIndex(f, smiNode, invalid); + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + fprintIndex(f, smiNode, invalid); + break; + case SMI_INDEX_AUGMENT: + if (smiv1 && ! invalid) { + if (relatedNode) { + fprintIndex(f, relatedNode, invalid); + } + } + if ((! smiv1 || ! silent) && relatedNode) { + fprintSegment(f, INDENT, "AUGMENTS", INDENTVALUE, + smiv1 || invalid); + fprint(f, "{ %s }\n", relatedNode->name); + } + break; + case SMI_INDEX_SPARSE: + if (! invalid) { + while (relatedNode && + (relatedNode->indexkind == SMI_INDEX_SPARSE)) + relatedNode = smiGetRelatedNode(relatedNode); + if (relatedNode) { + fprintIndex(f, relatedNode, invalid); + } + } + /* TODO: non-local name if non-local */ + break; + case SMI_INDEX_UNKNOWN: + break; + } + + if (smiNode->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, INDENT, "DEFVAL", INDENTVALUE, invalid); + fprint(f, "{ %s }", getValueString(&smiNode->value, smiType)); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, invalid); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + + smiType = smiGetNodeType(smiNode); + addrowstatus = 0; + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + if (pibtomib) + addrowstatus = 1; + if (smiType) { + fprint(f, "%s ::= SEQUENCE {", smiType->name); + } else { + /* guess type name is uppercase row name */ + char *s = getUppercaseString(smiNode->name); + fprint(f, "%s ::= SEQUENCE {", s); + xfree(s); + } + /* Find the last valid node in this sequence. We need it + * to suppress its trailing comma. Compute the longest + * column name so that we can adjust the indentation of + * the type names in the SEQUENCE definition. */ + for(indentsequence = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; + colNode = smiGetNextChildNode(colNode)) { + int len = strlen(colNode->name); + if (len > indentsequence) indentsequence = len; + smiType = smiGetNodeType(colNode); + if (smiType && !invalidType(smiType->basetype)) { + relatedNode = colNode; + } + } + if (pibtomib) { + int len = strlen(smiParentNode->name) + 9; + if (len > 64) + len = 64; + indentsequence = len; + } + if (relatedNode) relatedNode = smiGetNextChildNode(relatedNode); + indentsequence = (2*INDENT + indentsequence + 1) / INDENT * INDENT; + /* TODO: non-local name? */ + for(i = 0, invalid = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; + colNode = smiGetNextChildNode(colNode)) { + if (! invalid || ! silent) { + if (i && (relatedNode != colNode)) { + fprint(f, ","); + } + fprint(f, "\n"); + } + + smiType = smiGetNodeType(colNode); + invalid = (smiType == NULL) || invalidType(smiType->basetype); + + if (! invalid || ! silent) { + fprintSegment(f, INDENT, colNode->name, indentsequence, + invalid); + if (smiType && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + } else if (smiType) { + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetNodeType(colNode))); + } else { + fprint(f, ""); + } + } + i++; + } + if (pibtomib) { + size_t len = strlen(smiParentNode->name); + int maxid; + char *rowStatus = xmalloc(len + 10); + strcpy(rowStatus, smiParentNode->name); + if (len > 55) + len = 55; + strcpy(&rowStatus[len], "RowStatus"); + fprint(f, ",\n"); + fprintSegment(f, INDENT, rowStatus, indentsequence, 0); + fprint(f, "RowStatus\n}\n\n"); + + fprint(f, "%s OBJECT-TYPE\n", rowStatus); + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, 0); + fprint(f, "RowStatus\n"); + fprintSegment(f, INDENT, "MAX-ACCESS", INDENTVALUE, 0); + fprint(f, "read-create\n"); + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic " \ + "PIB to MIB conversion.", 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, 0); + for (maxid = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; colNode = smiGetNextChildNode(colNode)) + if (colNode->oidlen && + (colNode->oid[colNode->oidlen - 1] > maxid)) + maxid = colNode->oid[colNode->oidlen - 1]; + fprint(f, "{ %s %d }\n\n", + smiGetFirstChildNode(smiParentNode)->name, + (maxid + 1) > 128 ? (maxid + 1) : 128); + xfree(rowStatus); + } else + fprint(f, "\n}\n\n"); + } + } +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *parentNode; + SmiElement *smiElement; + int j; + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (smiv1) { + fprint(f, "%s TRAP-TYPE\n", smiNode->name); + parentNode = smiGetParentNode(smiNode); + while ((parentNode->oidlen > 0) && + ((!parentNode->name) || + (!parentNode->oid[parentNode->oidlen-1]))) { + parentNode = smiGetParentNode(parentNode); + } + fprintSegment(f, INDENT, "ENTERPRISE", INDENTVALUE, 0); + fprint(f, "%s\n", parentNode->name); + } else { + fprint(f, "%s NOTIFICATION-TYPE\n", smiNode->name); + } + + if ((smiElement = smiGetFirstElement(smiNode))) { + if (smiv1) { + fprintSegment(f, INDENT, "VARIABLES", INDENTVALUE, 0); + } else { + fprintSegment(f, INDENT, "OBJECTS", INDENTVALUE, 0); + } + fprint(f, "{ "); + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); + } + + if (! smiv1 || ! silent) { + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, smiv1); + fprint(f, "%s\n", getStatusString(smiNode->status)); + } + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, smiv1); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, 0); + if (smiv1) { + fprint(f, "%d\n\n", smiNode->oid[smiNode->oidlen-1]); + } else { + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + } +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + int j, objectGroup = 0, notificationGroup = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + objectGroup = isObjectGroup(smiNode); + if (! objectGroup) { + notificationGroup = isNotificationGroup(smiNode); + } + + if (smiv1 || (!objectGroup && !notificationGroup)) { + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + + if (!objectGroup && !notificationGroup) { + continue; + } + + if (! smiv1 || ! silent) { + + if (smiv1) { + fprint(f, "-- %s %s\n", smiNode->name, + objectGroup ? "OBJECT-GROUP" : "NOTIFICATION-GROUP"); + } else { + fprint(f, "%s %s\n", smiNode->name, + objectGroup ? "OBJECT-GROUP" : "NOTIFICATION-GROUP"); + } + + if (objectGroup) { + fprintSegment(f, INDENT, "OBJECTS", INDENTVALUE, smiv1); + } else { + fprintSegment(f, INDENT, "NOTIFICATIONS", INDENTVALUE, smiv1); + } + fprint(f, "{ "); + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, smiv1); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, smiv1); + fprint(f, "%s\n", getStatusString(smiNode->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, smiv1); + } else { + fprintMultilineString(f, "...", smiv1); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, smiv1); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, smiv1); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + } +} + + + +static void fprintModuleCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *smiNode2; + SmiModule *smiModule2; + SmiType *smiType; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + SmiElement *smiElement; + char *module; + char *done = NULL; /* "+" separated list of module names */ + char s[1024]; + int j; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (smiv1) { + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + + if (! smiv1 || ! silent) { + + if (smiv1) { + fprint(f, "-- %s MODULE-COMPLIANCE\n", smiNode->name); + } else { + fprint(f, "%s MODULE-COMPLIANCE\n", smiNode->name); + } + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, smiv1); + fprint(f, "%s\n", getStatusString(smiNode->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, smiv1); + } else { + fprintMultilineString(f, "...", smiv1); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, smiv1); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, smiv1); + fprint(f, "\n"); + } + + /* `this module' always first */ + done = xstrdup("+"); + for (module = smiModule->name; module; ) { + + fprint(f, "\n"); + fprintSegment(f, INDENT, "MODULE", INDENTVALUE, smiv1); + if (strlen(module) && strcmp(smiModule->name, module)) { + fprint(f, "%s\n", module); + } else { + if (smiv1) { + fprint(f, "-- -- this module\n"); + } else { + fprint(f, "-- this module\n"); + } + } + + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode(smiElement))->name, module)) { + if (j) { + fprint(f, ", "); + } else { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "MANDATORY-GROUPS", + INDENTVALUE, smiv1); + fprint(f, "{ "); + } + j++; + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, + smiv1); + } + } + if (j) { + fprint(f, " }\n"); + } + + for(smiOption = smiGetFirstOption(smiNode); smiOption; + smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "GROUP", + INDENTVALUE, smiv1); + fprint(f, "%s\n", smiNode2->name); + fprintSegment(f, 2 * INDENT, "DESCRIPTION", + INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiOption->description) { + fprintMultilineString2(f, smiOption->description, + smiv1); + } else { + fprintMultilineString2(f, "...", smiv1); + } + fprint(f, "\n"); + } + } + + for(smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiNode2 = smiGetRefinementNode(smiRefinement); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "OBJECT", + INDENTVALUE, smiv1); + fprint(f, "%s\n", smiNode2->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, 2 * INDENT, "SYNTAX", INDENTVALUE, + smiv1); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, smiv1); + fprint(f, "\n"); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, 2 * INDENT, "WRITE-SYNTAX", + INDENTVALUE, smiv1); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, smiv1); + fprint(f, "\n"); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, 2 * INDENT, "MIN-ACCESS", + INDENTVALUE, smiv1); + fprint(f, "%s\n", + getAccessString(smiRefinement->access, 0)); + /* we assume, that read-create does not appear in + * an OT refinement. + */ + } + fprintSegment(f, 2 * INDENT, "DESCRIPTION", + INDENTVALUE, smiv1); + fprint(f, "\n"); + if (smiRefinement->description) { + fprintMultilineString2(f, + smiRefinement->description, + smiv1); + } else { + fprintMultilineString2(f, "...", smiv1); + } + fprint(f, "\n"); + } + } + + /* + * search the next module name in the list of mandatory + * groups, optional groups and refinements. + */ + done = xrealloc(done, + strlen(done)+strlen(module)+2*sizeof(char)); + strcat(done, module); + strcat(done, "+"); + module = NULL; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + sprintf(s, "+%s+", + smiGetNodeModule(smiGetElementNode(smiElement))->name); + if ((!strstr(done, s))) { + module = + smiGetNodeModule(smiGetElementNode(smiElement))->name; + break; + } + } + if (!module) { + ; /* TODO: search in options list */ + } + if (!module) { + ; /* TODO: search in refinements list */ + } + } + + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, smiv1); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + } + xfree(done); +} + + + +static void dumpSmi(FILE *f, SmiModule *smiModule, int flags) +{ + if (smiModule->language == SMI_LANGUAGE_SPPI) /* PIB to MIB conversion */ + pibtomib = 1; + else + pibtomib = 0; + + createImportList(smiModule); + + fprint(f, "--\n"); + fprint(f, "-- This %s module has been generated by smidump " + SMI_VERSION_STRING ". Do not edit.\n", smiv1 ? "SMIv1" : "SMIv2"); + fprint(f, "--\n\n"); + if (pibtomib && smiv1) { + fprint(f, "--\n"); + fprint(f, "-- WARNING: SPPI to SMIv1 conversion is not explicitly " \ + "supported.\n"); + fprint(f, "-- Expect flawed output.\n"); + fprint(f, "--\n\n"); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "--\n-- WARNING: this output may be incorrect due to " + "significant parse errors\n--\n\n"); + } + fprint(f, "%s%s DEFINITIONS ::= BEGIN\n\n", smiModule->name, + (pibtomib ? "-MIB" : "")); + + fprintImports(f); + fprintModuleIdentity(f, smiModule); + fprintTypeDefinitions(f, smiModule); + fprintTextualConventions(f, smiModule); + fprintObjects(f, smiModule); + fprintNotifications(f, smiModule); + fprintGroups(f, smiModule); + fprintModuleCompliances(f, smiModule); + + fprint(f, "END -- end of module %s%s.\n", smiModule->name, + (pibtomib ? "-MIB" : "")); + + freeImportList(); +} + + +static void dumpSmiV1(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + smiv1 = 1; + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + dumpSmi(f, modv[i], flags); + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + } + + if (output) { + fclose(f); + } +} + + +static void dumpSmiV2(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + smiv1 = 0; + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + dumpSmi(f, modv[i], flags); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initSmi() +{ + static SmidumpDriver driver1 = { + "smiv1", + dumpSmiV1, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "SMIv1 (RFC 1155, RFC 1212, RFC 1215)", + NULL, + NULL + }; + + static SmidumpDriver driver2 = { + "smiv2", + dumpSmiV2, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "SMIv2 (RFC 2578, RFC 2579, RFC 2580)", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver1); + smidumpRegisterDriver(&driver2); +} diff --git a/tools/dump-sming.c b/tools/dump-sming.c new file mode 100644 index 0000000..181001a --- /dev/null +++ b/tools/dump-sming.c @@ -0,0 +1,1695 @@ +/* + * dump-sming.c -- + * + * Operations to dump SMIng module information. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-sming.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 2 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 4 /* column to start multiline texts */ +#define INDENTMAX 64 /* max column to fill, break lines otherwise */ + + + +static char *excludeType[] = { + "ObjectSyntax", + "SimpleSyntax", + "ApplicationSyntax", + NULL }; + +static char *convertType[] = { + "INTEGER", "Integer32", + "OCTET STRING", "OctetString", + "OBJECT IDENTIFIER", "Pointer", + + "Gauge", "Gauge32", + "Counter", "Counter32", + "NetworkAddress", "IpAddress", /* ??? */ + + NULL, NULL }; + +static char *convertImport[] = { + "SNMPv2-SMI", "MODULE-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-TYPE", NULL, NULL, + "SNMPv2-SMI", "NOTIFICATION-TYPE", NULL, NULL, + "SNMPv2-SMI", "ObjectName", NULL, NULL, + "SNMPv2-SMI", "NotificationName", NULL, NULL, + "SNMPv2-SMI", "ObjectSyntax", NULL, NULL, + "SNMPv2-SMI", "SimpleSyntax", NULL, NULL, + "SNMPv2-SMI", "Integer32", NULL, NULL, + "SNMPv2-SMI", "Unsigned32", NULL, NULL, + "SNMPv2-SMI", "ApplicationSyntax", NULL, NULL, + "SNMPv2-SMI", "IpAddress", "IRTF-NMRG-SMING", "IpAddress", + "SNMPv2-SMI", "Counter32", "IRTF-NMRG-SMING", "Counter32", + "SNMPv2-SMI", "TimeTicks", "IRTF-NMRG-SMING", "TimeTicks", + "SNMPv2-SMI", "Opaque", "IRTF-NMRG-SMING", "Opaque", + "SNMPv2-SMI", "Counter64", "IRTF-NMRG-SMING", "Counter64", + "SNMPv2-SMI", "Gauge32", "IRTF-NMRG-SMING", "Gauge32", + "SNMPv2-SMI", "mib-2", "IRTF-NMRG-SMING-SNMP", "mib-2", + + "SNMPv2-TC", "TimeStamp", "IRTF-NMRG-SMING", "TimeStamp", + "SNMPv2-TC", "TimeInterval", "IRTF-NMRG-SMING", "TimeInterval", + "SNMPv2-TC", "DateAndTime", "IRTF-NMRG-SMING", "DateAndTime", + "SNMPv2-TC", "TruthValue", "IRTF-NMRG-SMING", "TruthValue", + "SNMPv2-TC", "PhysAddress", "IRTF-NMRG-SMING", "PhysAddress", + "SNMPv2-TC", "MacAddress", "IRTF-NMRG-SMING", "MacAddress", + "SNMPv2-TC", "DisplayString", "IRTF-NMRG-SMING", "DisplayString255", + "SNMPv2-TC", "TestAndIncr", "IRTF-NMRG-SMING-SNMP", "TestAndIncr", + "SNMPv2-TC", "AutonomousType", "IRTF-NMRG-SMING-SNMP", "AutonomousType", + "SNMPv2-TC", "VariablePointer", "IRTF-NMRG-SMING-SNMP", "VariablePointer", + "SNMPv2-TC", "RowPointer", "IRTF-NMRG-SMING-SNMP", "RowPointer", + "SNMPv2-TC", "RowStatus", "IRTF-NMRG-SMING-SNMP", "RowStatus", + "SNMPv2-TC", "StorageType", "IRTF-NMRG-SMING-SNMP", "StorageType", + "SNMPv2-TC", "TDomain", "IRTF-NMRG-SMING-SNMP", "TDomain", + "SNMPv2-TC", "TAddress", "IRTF-NMRG-SMING-SNMP", "TAddress", + "SNMPv2-SMI", NULL, "IRTF-NMRG-SMING", NULL, + "SNMPv2-TC", "TEXTUAL-CONVENTION", NULL, NULL, + "SNMPv2-TC", NULL, "IRTF-NMRG-SMING-TYPES", NULL, + "SNMPv2-CONF", "OBJECT-GROUP", NULL, NULL, + "SNMPv2-CONF", "NOTIFICATION-GROUP", NULL, NULL, + "SNMPv2-CONF", "MODULE-COMPLIANCE", NULL, NULL, + "SNMPv2-CONF", "AGENT-CAPABILITIES", NULL, NULL, + + "RFC1155-SMI", "OBJECT-TYPE", NULL, NULL, + "RFC1155-SMI", "ObjectName", NULL, NULL, + "RFC1155-SMI", "ObjectSyntax", NULL, NULL, + "RFC1155-SMI", "SimpleSyntax", NULL, NULL, + "RFC1155-SMI", "ApplicationSyntax", NULL, NULL, + "RFC1155-SMI", "Gauge", "IRTF-NMRG-SMING-TYPES", "Gauge32", + "RFC1155-SMI", "Counter", "IRTF-NMRG-SMING-TYPES", "Counter32", + "RFC1155-SMI", "TimeTicks", "IRTF-NMRG-SMING-TYPES", "TimeTicks", + "RFC1155-SMI", "IpAddress", "IRTF-NMRG-SMING-TYPES", "IpAddress", + "RFC1155-SMI", "NetworkAddress", NULL, NULL, /* ??? */ + "RFC1155-SMI", "Opaque", "IRTF-NMRG-SMING", "Opaque", + "RFC1155-SMI", NULL, "IRTF-NMRG-SMING", NULL, + "RFC1158-MIB", "DisplayString", "IRTF-NMRG-SMING", "DisplayString255", + "RFC-1212", "OBJECT-TYPE", NULL, NULL, + "RFC1213-MIB", "mib-2", "IRTF-NMRG-SMING-SNMP", "mib-2", + "RFC1213-MIB", "system", "SNMPv2-MIB", "system", + "RFC1213-MIB", "interfaces", "IF-MIB", "interfaces", +/* "RFC1213-MIB", "at", "RFC1213-MIB", "at", */ + "RFC1213-MIB", "ip", "IP-MIB", "ip", + "RFC1213-MIB", "icmp", "IP-MIB", "icmp", + "RFC1213-MIB", "tcp", "TCP-MIB", "tcp", + "RFC1213-MIB", "udp", "UDP-MIB", "udp", +/* "RFC1213-MIB", "egp", "RFC1213-MIB", "egp", */ + "RFC1213-MIB", "transmission", "SNMPv2-SMI", "transmission", + "RFC1213-MIB", "snmp", "SNMPv2-MIB", "snmp", + "RFC1213-MIB", "sysDescr", "SNMPv2-MIB", "sysDescr", + "RFC1213-MIB", "sysObjectID", "SNMPv2-MIB", "sysObjectID", + "RFC1213-MIB", "sysUpTime", "SNMPv2-MIB", "sysUpTime", + "RFC1213-MIB", "ifIndex", "IF-MIB", "ifIndex", +/* TODO ...many more objects from RFC1213-MIB.. */ + "RFC1213-MIB", "DisplayString", "IRTF-NMRG-SMING", "DisplayString255", + "RFC1213-MIB", "PhysAddress", "IRTF-NMRG-SMING", "PhysAddress", + "RFC-1215", "TRAP-TYPE", NULL, NULL, + + + + + /* TODO: how to convert more SMIv1 information? */ + + NULL, NULL, NULL, NULL }; + +static int current_column = 0; +static int silent = 0; + + +/* + * Structure used to build a list of imported types. + */ + + +typedef struct Import { + char *module; + char *name; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + + + +static char *getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; +} + + + +static char *getAccessString(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "noaccess" : + (access == SMI_ACCESS_NOTIFY) ? "notifyonly" : + (access == SMI_ACCESS_READ_ONLY) ? "readonly" : + (access == SMI_ACCESS_READ_WRITE) ? "readwrite" : + ""; +} + + + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getStringTime(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char *getTypeString(SmiBasetype basetype, SmiType *smiType) +{ + int i; + char *typeModule, *typeName; + + typeName = smiType ? smiType->name : NULL; + typeModule = smiType ? smiGetTypeModule(smiType)->name : NULL; + + if ((!typeModule) && (typeName) && + (basetype != SMI_BASETYPE_ENUM) && + (basetype != SMI_BASETYPE_BITS)) { + for(i=0; convertType[i]; i += 2) { + if (!strcmp(typeName, convertType[i])) { + return convertType[i+1]; + } + } + } + + if ((!typeModule) || (!strlen(typeModule)) || (!typeName)) { + if (basetype == SMI_BASETYPE_ENUM) { + return "Enumeration"; + } + if (basetype == SMI_BASETYPE_BITS) { + return "Bits"; + } + } + + if (!typeName) { + return getStringBasetype(basetype); + } + + /* TODO: fully qualified if unambigous */ + + return typeName; +} + + + +static char *getOidString(SmiNode *smiNode, int importedParent) +{ + SmiNode *parentNode; + SmiModule *smiModule; + static char s[200]; + char append[200]; + unsigned int i; + + append[0] = 0; + + parentNode = smiNode; + smiModule = smiGetNodeModule(smiNode); + + do { + + if (parentNode->oidlen <= 1) { + break; + } + + /* prepend the cut-off subidentifier to `append'. */ + strcpy(s, append); + sprintf(append, ".%u%s", parentNode->oid[parentNode->oidlen-1], s); + + /* retrieve the parent SmiNode */ + parentNode = smiGetParentNode(parentNode); + + if (!parentNode) { + sprintf(s, "%s", append); + return s; + } + + /* found an imported or a local parent node? */ + if ((parentNode->name && strlen(parentNode->name)) && + (smiIsImported(smiModule, NULL, parentNode->name) || + (!importedParent && + (smiGetNodeModule(parentNode) == smiModule)) || + (parentNode->oidlen == 1))) { + sprintf(s, "%s%s", parentNode->name, append); + return s; + } + + } while (parentNode); + + s[0] = 0; + for (i=0; i < smiNode->oidlen; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", smiNode->oid[i]); + } + return s; +} + + + +static Import* addImport(char *module, char *name) +{ + Import **import, *newImport; + int i; + + for (i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(module, convertImport[i]) + && !strcmp(name, convertImport[i+1])) { + module = convertImport[i+2]; + name = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(module, convertImport[i])) { + module = convertImport[i+2]; + break; + } + } + + if (!module || !name) { + return NULL; + } + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c < 0) continue; + if (c == 0) { + int d = strcmp((*import)->name, name); + if (d < 0) continue; + if (d == 0) return *import; + if (d > 0) break; + } + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + newImport->module = module; + newImport->name = name; + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void createImportList(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiModule *smiTypeModule; + SmiNodekind kind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + SmiImport *smiImport; + + for (smiNode = smiGetFirstNode(smiModule, kind); + smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + + smiType = smiGetNodeType(smiNode); + if (smiType && (smiType->decl == SMI_DECL_IMPLICIT_TYPE)) { + smiType = smiGetParentType(smiType); + } + if (smiType) { + smiTypeModule = smiGetTypeModule(smiType); + if (smiTypeModule && + strcmp(smiTypeModule->name, smiModule->name)) { + if (strlen(smiTypeModule->name)) { + addImport(smiTypeModule->name, smiType->name); + } + } + if (smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("SNMPv2-SMI", "Integer32"); + } + } + } + + for (smiImport = smiGetFirstImport(smiModule); smiImport; + smiImport = smiGetNextImport(smiImport)) { + if (islower((int) smiImport->name[0]) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-SMI")) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-TC"))) { + addImport(smiImport->module, smiImport->name); + } + } +} + + + +static void freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char s[200]; + char *p; + + va_start(ap, fmt); +#ifdef HAVE_VSNPRINTF + current_column += vsnprintf(s, sizeof(s), fmt, ap); +#else + current_column += vsprintf(s, fmt, ap); /* buffer overwrite */ +#endif + va_end(ap); + + fputs(s, f); + + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintWrapped(FILE *f, int column, char *string) +{ + if ((current_column + strlen(string)) > INDENTMAX) { + putc('\n', f); + current_column = 0; + fprintSegment(f, column, "", 0); + } + fprint(f, "%s", string); +} + + + +static void fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, len; + + fprintSegment(f, column - 1 + INDENTTEXTS, "\"", 0); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, column + INDENTTEXTS, "", 0); + } + } + } + putc('\"', f); + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[100]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + sprintf(s, "%G", valuePtr->value.float32); + break; + case SMI_BASETYPE_FLOAT64: + sprintf(s, "%lG", valuePtr->value.float64); + break; + case SMI_BASETYPE_FLOAT128: + sprintf(s, "%LG", valuePtr->value.float128); + break; + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.integer32 == valuePtr->value.integer32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + /* if (nn->value.value.unsigned64 == ((i/8)*8 + (7-(i%8)))) */ + if (nn->value.value.unsigned64 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(&s[strlen(s)], "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + /*nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + }*/ + sprintf(s, "%s", typePtr->value.value.ptr); + break; + case SMI_BASETYPE_POINTER: + /*nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + }*/ + sprintf(s, "%s", valuePtr->value.ptr); + break; + default: + sprintf(s, "%s", ""); + break; + } + + return s; +} + + + +static void fprintSubtype(FILE *f, SmiType *smiType) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[100]; + int i; + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn ; i++, nn = smiGetNextNamedNumber(nn)) { + if (i) { + fprint(f, ", "); + } else { + fprint(f, " ("); + } + sprintf(s, "%s(%s)", nn->name, + getValueString(&nn->value, smiType)); + fprintWrapped(f, INDENTVALUE + INDENT, s); + } + if (i) { + fprint(f, ")"); + } + } else if(smiType->basetype == SMI_BASETYPE_POINTER) { + nn = smiGetFirstNamedNumber(smiType); + if(nn) + fprint(f, " (%s)",nn->name); + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range ; i++, range = smiGetNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + fprint(f, " ("); + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiType)); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + } + fprintWrapped(f, INDENTVALUE + INDENT, s); + } + if (i) { + fprint(f, ")"); + } + } +} + +static void fprintAttributeSubtype(FILE *f, SmiAttribute *smiAttribute) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[100]; + int i; + + if ((smiAttribute->basetype == SMI_BASETYPE_ENUM) || + (smiAttribute->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetAttributeFirstNamedNumber(smiAttribute); + nn ; i++, nn = smiGetAttributeNextNamedNumber(nn)) { + if (i) { + fprint(f, ", "); + } else { + fprint(f, " ("); + } + sprintf(s, "%s(%s)", nn->name, + getValueString(&nn->value, smiGetAttributeParentType(smiAttribute))); + fprintWrapped(f, INDENTVALUE + INDENT, s); + } + if (i) { + fprint(f, ")"); + } + } else if(smiAttribute->basetype == SMI_BASETYPE_POINTER) { + nn = smiGetAttributeFirstNamedNumber(smiAttribute); + if(nn) + fprint(f, " (%s)",nn->name); + } else { + for(i = 0, range = smiGetAttributeFirstRange(smiAttribute); + range ; i++, range = smiGetAttributeNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + fprint(f, " ("); + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiGetAttributeParentType(smiAttribute))); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiGetAttributeParentType(smiAttribute))); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiGetAttributeParentType(smiAttribute))); + } + fprintWrapped(f, INDENTVALUE + INDENT, s); + } + if (i) { + fprint(f, ")"); + } + } +} + + + +static void fprintImports(FILE *f, SmiModule *smiModule) +{ + SmiImport *import; + char *lastModuleName = NULL; + int pos = 0, len, maxlen = 0; + + createImportList(smiModule); + + for (import = smiGetFirstImport(smiModule); import; import = smiGetNextImport(import)) { + len = strlen(import->module); + maxlen = (len > maxlen) ? len : maxlen; + } + + for (import = smiGetFirstImport(smiModule); import; import = smiGetNextImport(import)) { + int yaba = !lastModuleName || strcmp(import->module, lastModuleName); + if (yaba) { + if (lastModuleName) { + fprint(f, ");\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "import %-*s (", maxlen, import->module); + pos = INDENT + 12 + maxlen; + } else { + fprint(f, ", "); + } + len = strlen(import->name); + if (len + pos > INDENTMAX) { + fprint(f, "\n"); + fprintSegment(f, INDENT, "", 0); + fprintSegment(f, INDENT, "", 0); + fprint(f, " %-*s ", maxlen, ""); + pos = INDENT + 12 + maxlen; + } + fprint(f, "%s", import->name); + pos += len; + lastModuleName = import->module; + } + + if (lastModuleName) { + fprintf(f, ");\n"); + } + + fprint(f, "\n"); + + freeImportList(); +} + + + + +static void fprintRevisions(FILE *f, SmiModule *smiModule) +{ + int i; + SmiRevision *smiRevision; + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + fprintSegment(f, INDENT, "revision {\n", 0); + fprintSegment(f, 2 * INDENT, "date", INDENTVALUE); + fprint(f, "\"%s\";\n", getStringTime(smiRevision->date)); + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiRevision->description); + fprint(f, ";\n"); + fprintSegment(f, INDENT, "};\n", 0); + i++; + } + if (i) { + fprint(f, "\n"); + } +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + + if ((!(strcmp(smiModule->name, "SNMPv2-SMI"))) || + (!(strcmp(smiModule->name, "RFC1155-SMI")))) { + for(j=0; excludeType[j]; j++) { + if (!strcmp(smiType->name, excludeType[j])) break; + } + if (excludeType[j]) break; + } + + if (!i && !silent) { + fprint(f, "//\n// TYPE DEFINITIONS\n//\n\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "typedef %s {\n", smiType->name); + + fprintSegment(f, 2 * INDENT, "type", INDENTVALUE); + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType); + fprint(f, ";\n"); + + if (smiType->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, 2 * INDENT, "default", INDENTVALUE); + fprint(f, "%s", getValueString(&smiType->value, smiType)); + fprint(f, ";\n"); + } + + if (smiType->format) { + fprintSegment(f, 2 * INDENT, "format", INDENTVALUE); + fprint(f, "\"%s\";\n", smiType->format); + } + if (smiType->units) { + fprintSegment(f, 2 * INDENT, "units", INDENTVALUE); + fprint(f, "\"%s\";\n", smiType->units); + } + if ((smiType->status != SMI_STATUS_UNKNOWN) && + (smiType->status != SMI_STATUS_MANDATORY) && + (smiType->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiType->status)); + } + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiType->description); + fprint(f, ";\n"); + if (smiType->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiType->reference); + fprint(f, ";\n"); + } + fprintSegment(f, INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintIdentities(FILE *f, SmiModule *smiModule) +{ + int i; + SmiIdentity *smiIdentity; + SmiIdentity *tmpIdentity; + + for(i = 0, smiIdentity = smiGetFirstIdentity(smiModule); + smiIdentity; smiIdentity = smiGetNextIdentity(smiIdentity)) { + + if (!i && !silent) { + fprint(f, "//\n// IDENTITY DEFINITIONS\n//\n\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "identity %s {\n", smiIdentity->name); + + tmpIdentity = smiGetParentIdentity(smiIdentity); + if (tmpIdentity) { + fprintSegment(f, 2 * INDENT, "parent", INDENTVALUE); + fprint(f, "%s", tmpIdentity->name); + fprint(f, ";\n"); + } + + if ((smiIdentity->status != SMI_STATUS_UNKNOWN) && + (smiIdentity->status != SMI_STATUS_MANDATORY) && + (smiIdentity->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiIdentity->status)); + } + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiIdentity->description); + fprint(f, ";\n"); + if (smiIdentity->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiIdentity->reference); + fprint(f, ";\n"); + } + fprintSegment(f, INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintExtensions(FILE *f, SmiModule *smiModule) +{ + int i; + SmiMacro *smiMacro; + + for(i = 0, smiMacro = smiGetFirstMacro(smiModule); + smiMacro; smiMacro = smiGetNextMacro(smiMacro)) { + + if (!i && !silent) { + fprint(f, "//\n// EXTENSION DEFINITIONS\n//\n\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "extension %s {\n", smiMacro->name); + + if ((smiMacro->status != SMI_STATUS_UNKNOWN) && + (smiMacro->status != SMI_STATUS_MANDATORY) && + (smiMacro->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiMacro->status)); + } + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiMacro->description); + fprint(f, ";\n"); + if (smiMacro->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiMacro->reference); + fprint(f, ";\n"); + } + + if(smiMacro->abnf) { + fprintSegment(f, 2 * INDENT, "abnf", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiMacro->abnf); + fprint(f, ";\n"); + } + fprintSegment(f, INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintUniqueStatement(FILE *f, SmiClass *smiClass) +{ + SmiAttribute *attributePtr; + int i; + + if(smiIsClassScalar(smiClass)) + { + fprintSegment(f, 2 * INDENT, "unique", INDENTVALUE); + fprint(f, "();\n"); + } + + attributePtr = smiGetFirstUniqueAttribute(smiClass); + if (attributePtr) { + fprintSegment(f, 2 * INDENT, "unique", INDENTVALUE); + fprint(f, "("); + for (i=0; attributePtr; + attributePtr = smiGetNextUniqueAttribute(attributePtr)) + { + if (i) { + fprint(f, ", %s",attributePtr->name); + } else { + fprint(f, "%s",attributePtr->name); + } + i++; + } + fprint(f, ");\n\n"); + } +} +static void fprintAttributes(FILE *f, SmiClass *smiClass) +{ + int i; + SmiAttribute *smiAttribute; + SmiType *tmpType; + SmiClass *tmpClass; + + for (i = 0, smiAttribute = smiGetFirstAttribute(smiClass); + smiAttribute; smiAttribute = smiGetNextAttribute(smiAttribute)) { + + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "attribute %s {\n", smiAttribute->name); + + tmpType = smiGetAttributeParentType(smiAttribute); + if (tmpType) { + fprintSegment(f, 3 * INDENT, "type", INDENTVALUE); + fprint(f, "%s ", tmpType->name); + fprintAttributeSubtype(f, smiAttribute); + fprint(f, ";\n"); + fprintSegment(f, 3 * INDENT, "access", INDENTVALUE); + switch (smiAttribute->access) { + case SMI_ACCESS_READ_ONLY: + fprint(f, "readonly;\n"); + break; + case SMI_ACCESS_READ_WRITE: + fprint(f, "readwrite;\n"); + break; + case SMI_ACCESS_EVENT_ONLY: + fprint(f, "eventonly;\n"); + break; + default: + fprint(f, ";\n"); + break; + } + + if (smiAttribute->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, 3 * INDENT, "default", INDENTVALUE); + fprint(f, "%s", getValueString(&smiAttribute->value, smiGetAttributeParentType(smiAttribute))); + fprint(f, ";\n"); + } + + if (smiAttribute->format) { + fprintSegment(f, 3 * INDENT, "format", INDENTVALUE); + fprint(f, "\"%s\";\n", smiAttribute->format); + } + if (smiAttribute->units) { + fprintSegment(f, 3 * INDENT, "units", INDENTVALUE); + fprint(f, "\"%s\";\n", smiAttribute->units); + } + } + + tmpClass = smiGetAttributeParentClass(smiAttribute); + if (tmpClass) { + fprintSegment(f, 3 * INDENT, "type", INDENTVALUE); + fprint(f, "%s;\n", tmpClass->name); + } + + if ((smiAttribute->status != SMI_STATUS_UNKNOWN) && + (smiAttribute->status != SMI_STATUS_MANDATORY) && + (smiAttribute->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 3 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiAttribute->status)); + } + fprintSegment(f, 3 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiAttribute->description); + fprint(f, ";\n"); + if (smiAttribute->reference) { + fprintSegment(f, 3 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiAttribute->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, 2*INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintEvents(FILE *f, SmiClass *smiClass) +{ + int i; + SmiEvent *smiEvent; + + for(i = 0, smiEvent = smiGetFirstEvent(smiClass); + smiEvent; smiEvent = smiGetNextEvent(smiEvent)) { + /* + if (!i && !silent) { + fprint(f,"\n"); + fprintSegment(f, 2 * INDENT, "// ATTRIBUTE DEFINITIONS\n\n",0); + }*/ + fprintSegment(f, 2*INDENT, "", 0); + fprint(f, "event %s {\n", smiEvent->name); + + if ((smiEvent->status != SMI_STATUS_UNKNOWN) && + (smiEvent->status != SMI_STATUS_MANDATORY) && + (smiEvent->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 3 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiEvent->status)); + } + fprintSegment(f, 3 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiEvent->description); + fprint(f, ";\n"); + if (smiEvent->reference) { + fprintSegment(f, 3 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiEvent->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, 2*INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintClasses(FILE *f, SmiModule *smiModule) +{ + int i; + SmiClass *smiClass; + SmiClass *tmpClass; + + for (i = 0, smiClass = smiGetFirstClass(smiModule); + smiClass; smiClass = smiGetNextClass(smiClass)) { + + if (!i && !silent) { + fprint(f, "//\n// CLASS DEFINITIONS\n//\n\n"); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "class %s {\n", smiClass->name); + + tmpClass = smiGetParentClass(smiClass); + if (tmpClass) { + fprintSegment(f, 2 * INDENT, "extends", INDENTVALUE); + fprint(f, "%s;\n\n", tmpClass->name); + } + + fprintAttributes(f,smiClass); + + fprintUniqueStatement(f,smiClass); + + fprintEvents(f,smiClass); + + if ((smiClass->status != SMI_STATUS_UNKNOWN) && + (smiClass->status != SMI_STATUS_MANDATORY) && + (smiClass->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiClass->status)); + } + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiClass->description); + fprint(f, ";\n"); + if (smiClass->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiClass->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, INDENT, "};\n\n", 0); + i++; + } +} + +static void fprintObjects(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiNode *smiNode, *relatedNode; + SmiElement *smiElement; + SmiType *smiType; + int indent = 0; + int lastindent = -1; + char *s = NULL; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; smiNode = smiGetNextNode(smiNode, nodekinds)) { + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + indent = 0; + s = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + indent = 0; + s = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + indent = 0; + s = "table"; + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + indent = 1; + s = "row"; + } else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + indent = 2; + s = "column"; + } else if (smiNode->nodekind == SMI_NODEKIND_SCALAR) { + indent = 0; + s = "scalar"; + } + + if (!i && !silent) { + fprint(f, "//\n// OBJECT DEFINITIONS\n//\n\n"); + } + + for (j = lastindent; j >= indent; j--) { + fprintSegment(f, (1 + j) * INDENT, "", 0); + fprint(f, "};\n"); + } + fprint(f, "\n"); + lastindent = indent; + + if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + fprintSegment(f, (1 + indent) * INDENT, "", 0); + fprint(f, "-- This has been an SMIv2 AGENT-CAPABILITIES node:\n"); + } + + fprintSegment(f, (1 + indent) * INDENT, "", 0); + fprint(f, "%s %s {\n", s, smiNode->name); + + if (smiNode->oid) { + fprintSegment(f, (2 + indent) * INDENT, "oid", INDENTVALUE); + fprint(f, "%s;\n", getOidString(smiNode, 0)); + } + + smiType = smiGetNodeType(smiNode); + if (smiType && (smiType->basetype != SMI_BASETYPE_UNKNOWN)) { + fprintSegment(f, (2 + indent) * INDENT, "type", INDENTVALUE); + if (!smiType->name) { + /* + * an implicitly restricted type. + */ + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType); + fprint(f, ";\n"); + } else { + fprint(f, "%s;\n", + getTypeString(smiType->basetype, smiType)); + } + } + + if ((smiNode->nodekind != SMI_NODEKIND_TABLE) && + (smiNode->nodekind != SMI_NODEKIND_ROW) && + (smiNode->nodekind != SMI_NODEKIND_CAPABILITIES) && + (smiNode->nodekind != SMI_NODEKIND_NODE)) { + if (smiNode->access != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, (2 + indent) * INDENT, "access", INDENTVALUE); + fprint(f, "%s;\n", getAccessString(smiNode->access)); + } + } + + relatedNode = smiGetRelatedNode(smiNode); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + if (smiNode->implied) { + fprintSegment(f, (2 + indent) * INDENT, "index implied", + INDENTVALUE); + } else { + fprintSegment(f, (2 + indent) * INDENT, "index", INDENTVALUE); + } + fprint(f, "("); + for (j = 0, smiElement = smiGetFirstElement(smiNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + break; + case SMI_INDEX_AUGMENT: + if (relatedNode) { + fprintSegment(f, (2 + indent) * INDENT, "augments", + INDENTVALUE); + fprint(f, "%s;\n", relatedNode->name); + /* TODO: non-local name if non-local */ + } /* TODO: else print error */ + break; + case SMI_INDEX_REORDER: + if (relatedNode) { + fprintSegment(f, (2 + indent) * INDENT, "", 0); + fprint(f, "reorders %s", relatedNode->name); + /* TODO: non-local name if non-local */ + if (smiNode->implied) { + fprint(f, " implied"); + } + fprint(f, " ("); + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + } /* TODO: else print error */ + break; + case SMI_INDEX_SPARSE: + if (relatedNode) { + fprintSegment(f, (2 + indent) * INDENT, "sparse", INDENTVALUE); + fprint(f, "%s;\n", relatedNode->name); + /* TODO: non-local name if non-local */ + } /* TODO: else print error */ + break; + case SMI_INDEX_EXPAND: + if (relatedNode) { + fprintSegment(f, (2 + indent) * INDENT, "", 0); + fprint(f, "expands %s", relatedNode->name); + /* TODO: non-local name if non-local */ + if (smiNode->implied) { + fprint(f, " implied"); + } + fprint(f, " ("); + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + } /* TODO: else print error */ + break; + case SMI_INDEX_UNKNOWN: + break; + } + + if (smiNode->create) { + fprintSegment(f, (2 + indent) * INDENT, "create", INDENTVALUE); + /* TODO: create list */ + fprint(f, ";\n"); + } + + if (smiNode->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, (2 + indent) * INDENT, "default", INDENTVALUE); + fprint(f, "%s", getValueString(&smiNode->value, smiType)); + fprint(f, ";\n"); + } + + if (smiNode->format) { + fprintSegment(f, (2 + indent) * INDENT, "format", INDENTVALUE); + fprint(f, "\"%s\";\n",smiNode->format); + } + if (smiNode->units) { + fprintSegment(f, (2 + indent) * INDENT, "units", INDENTVALUE); + fprint(f, "\"%s\";\n", smiNode->units); + } + if ((smiNode->status != SMI_STATUS_CURRENT) && + (smiNode->status != SMI_STATUS_UNKNOWN) && + (smiNode->status != SMI_STATUS_MANDATORY) && + (smiNode->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, (2 + indent) * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiNode->status)); + } + if (smiNode->description) { + fprintSegment(f, (2 + indent) * INDENT, "description", + INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, (2 + indent) * INDENT, + smiNode->description); + fprint(f, ";\n"); + } + if (smiNode->reference) { + fprintSegment(f, (2 + indent) * INDENT, "reference", + INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, (2 + indent) * INDENT, + smiNode->reference); + fprint(f, ";\n"); + } + i++; + } + + if (i) { + fprintSegment(f, (1 + indent) * INDENT, "", 0); + fprint(f, "};\n\n"); + } +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiNode *smiNode; + SmiElement *smiElement; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (!i && !silent) { + fprint(f, "//\n// NOTIFICATION DEFINITIONS\n//\n\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "notification %s {\n", smiNode->name); + + if (smiNode->oid) { + fprintSegment(f, 2 * INDENT, "oid", INDENTVALUE); + fprint(f, "%s;\n", getOidString(smiNode, 0)); + } + + if ((smiElement = smiGetFirstElement(smiNode))) { + fprintSegment(f, 2 * INDENT, "objects", INDENTVALUE); + fprint(f, "("); + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + } + + if ((smiNode->status != SMI_STATUS_CURRENT) && + (smiNode->status != SMI_STATUS_UNKNOWN) && + (smiNode->status != SMI_STATUS_MANDATORY) && + (smiNode->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiNode->status)); + } + + if (smiNode->description) { + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->description); + fprint(f, ";\n"); + } + + if (smiNode->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "};\n\n"); + i++; + } +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiNode *smiNode; + SmiElement *smiElement; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + if (!i && !silent) { + fprint(f, "//\n// GROUP DEFINITIONS\n//\n\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "group %s {\n", smiNode->name); + + if (smiNode->oid) { + fprintSegment(f, 2 * INDENT, "oid", INDENTVALUE); + fprint(f, "%s;\n", getOidString(smiNode, 0)); + } + + fprintSegment(f, 2 * INDENT, "members", INDENTVALUE); + fprint(f, "("); + for (j = 0, smiElement = smiGetFirstElement(smiNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + + if ((smiNode->status != SMI_STATUS_CURRENT) && + (smiNode->status != SMI_STATUS_UNKNOWN) && + (smiNode->status != SMI_STATUS_MANDATORY) && + (smiNode->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiNode->status)); + } + + if (smiNode->description) { + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->description); + fprint(f, ";\n"); + } + + if (smiNode->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->reference); + fprint(f, ";\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "};\n\n"); + i++; + } +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + int i, j; + SmiNode *smiNode, *smiNode2; + SmiType *smiType; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + SmiElement *smiElement; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (!i && !silent) { + fprint(f, "//\n// COMPLIANCE DEFINITIONS\n//\n\n"); + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "compliance %s {\n", smiNode->name); + + if (smiNode->oid) { + fprintSegment(f, 2 * INDENT, "oid", INDENTVALUE); + fprint(f, "%s;\n", getOidString(smiNode, 0)); + } + + if ((smiNode->status != SMI_STATUS_CURRENT) && + (smiNode->status != SMI_STATUS_UNKNOWN) && + (smiNode->status != SMI_STATUS_MANDATORY) && + (smiNode->status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, 2 * INDENT, "status", INDENTVALUE); + fprint(f, "%s;\n", getStringStatus(smiNode->status)); + } + + if (smiNode->description) { + fprintSegment(f, 2 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->description); + fprint(f, ";\n"); + } + + if (smiNode->reference) { + fprintSegment(f, 2 * INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiNode->reference); + fprint(f, ";\n"); + } + + if ((smiElement = smiGetFirstElement(smiNode))) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "mandatory", INDENTVALUE); + fprint(f, "("); + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 1, + smiGetElementNode(smiElement)->name); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, ");\n"); + } + + if ((smiOption = smiGetFirstOption(smiNode))) { + fprint(f, "\n"); + for(; smiOption; smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "optional %s {\n", smiNode2->name); + fprintSegment(f, 3 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, smiOption->description); + fprint(f, ";\n"); + fprintSegment(f, 2 * INDENT, "};\n", 0); + } + } + + if ((smiRefinement = smiGetFirstRefinement(smiNode))) { + fprint(f, "\n"); + for(; smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "refine %s {\n", + smiGetRefinementNode(smiRefinement)->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, 3 * INDENT, "type", INDENTVALUE); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType); + fprint(f, ";\n"); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, 3 * INDENT, "writetype", INDENTVALUE); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType); + fprint(f, ";\n"); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, 3 * INDENT, "access", INDENTVALUE); + fprint(f, "%s;\n", getAccessString(smiRefinement->access)); + } + fprintSegment(f, 3 * INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 3 * INDENT, + smiRefinement->description); + fprint(f, ";\n"); + fprintSegment(f, 2 * INDENT, "};\n", 0); + } + } + + fprintSegment(f, INDENT, "", 0); + fprint(f, "};\n\n"); + i++; + } +} + + + +static void dumpSming(int modc, SmiModule **modv, int flags, char *output) +{ + SmiModule *smiModule; + SmiNode *smiNode; + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + smiModule = modv[i]; + + fprint(f, "//\n"); + fprint(f, "// This module has been generated by smidump " + SMI_VERSION_STRING ". Do not edit.\n"); + fprint(f, "//\n"); + fprint(f, "module %s ", smiModule->name); + fprint(f, "{\n"); + fprint(f, "\n"); + + fprintImports(f, smiModule); + + if (! silent) { + fprint(f, "//\n// MODULE META INFORMATION\n//\n\n"); + } + fprintSegment(f, INDENT, "organization", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->organization); + fprint(f, ";\n\n"); + fprintSegment(f, INDENT, "contact", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->contactinfo); + fprint(f, ";\n\n"); + fprintSegment(f, INDENT, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->description); + fprint(f, ";\n\n"); + if (smiModule->reference) { + fprintSegment(f, INDENT, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, INDENT, smiModule->reference); + fprint(f, ";\n\n"); + } + + fprintRevisions(f, smiModule); + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + fprintSegment(f, INDENT, "identity", INDENTVALUE); + fprint(f, "%s;\n\n", smiNode->name); + } + + fprintExtensions(f, smiModule); + fprintIdentities(f, smiModule); + fprintTypedefs(f, smiModule); + fprintClasses(f, smiModule); + fprintObjects(f, smiModule); + fprintNotifications(f, smiModule); + fprintGroups(f, smiModule); + fprintCompliances(f, smiModule); + + fprint(f, "}; // end of module %s.\n", smiModule->name); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initSming() +{ + static SmidumpDriver driver = { + "sming", + dumpSming, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "SMIng", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-sppi.c b/tools/dump-sppi.c new file mode 100644 index 0000000..2b703f2 --- /dev/null +++ b/tools/dump-sppi.c @@ -0,0 +1,1745 @@ +/* + * dump-sppi.c -- + * + * Operations to dump SPPI module information. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +#define INDENT 4 /* indent factor */ +#define INDENTVALUE 16 /* column to start values, except multiline */ +#define INDENTTEXTS 9 /* column to start multiline texts */ +#define INDENTMAX 72 /* max column to fill, break lines otherwise */ + +static char *convertType[] = { + NULL, "INTEGER", NULL, "Integer32", + NULL, "Bits", NULL, "BITS", + NULL, "OctetString", NULL, "OCTET STRING", + NULL, "ObjectIdentifier", NULL, "OBJECT IDENTIFIER", + NULL, "IpAddress", NULL, "InetAddress", + NULL, "Counter64", NULL, "Unsigned64", + NULL, "Counter32", NULL, "Unsigned32", + NULL, "Gauge32", NULL, "Unsigned32", + NULL, NULL, NULL, NULL }; + +static char *convertTypeMibToPib[] = { + NULL, "SnmpAdminString", NULL, "OCTET STRING", + NULL, NULL, NULL, NULL }; + +static char *convertImport[] = { + "SNMPv2-SMI", "Integer32", "COPS-PR-SPPI", "Integer32", + "SNMPv2-SMI", "Unsigned32", "COPS-PR-SPPI", "Unsigned32", + "SNMPv2-SMI", "TimeTicks", "COPS-PR-SPPI", "TimeTicks", + "SNMPv2-SMI", "IpAddress", "INET-ADDRESS-MIB", "InetAddress", + "SNMPv2-SMI", "MODULE-IDENTITY","COPS-PR-SPPI", "MODULE-IDENTITY", + "SNMPv2-SMI", "MODULE-COMPLIANCE","COPS-PR-SPPI", "MODULE-COMPLIANCE", + "SNMPv2-SMI", "OBJECT-TYPE", "COPS-PR-SPPI", "OBJECT-TYPE", + "SNMPv2-SMI", "OBJECT-IDENTITY","COPS-PR-SPPI", "OBJECT-IDENTITY", + "SNMPv2-TC", "TEXTUAL-CONVENTION","COPS-PR-SPPI", "TEXTUAL-CONVENTION", + NULL, NULL, NULL, NULL }; + +static int current_column = 0; +static int silent = 0; +static int mibtopib = 0; + + +typedef struct Import { + char *module; + char *name; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + + + +static int invalidType(SmiBasetype basetype) +{ + return (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); +} + + + +static char *getStatusString(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + ""; +} + + + +static char *getAccessString(SmiAccess access, int pibaccess) +{ + return + (access == SMI_ACCESS_NOTIFY) ? "notify" : + (access == SMI_ACCESS_INSTALL) ? "install" : + (access == SMI_ACCESS_INSTALL_NOTIFY) ? "install-notify" : + (access == SMI_ACCESS_REPORT_ONLY) ? "report-only" : + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? + (pibaccess == 1 ? "report-only" : "not-accessible") : + mibtopib ? "notify" : + ""; +} + + +static int isSmiOnlyType(char *type) +{ + return (!strcmp(type, "Counter32") || + !strcmp(type, "Counter64") || + !strcmp(type, "Gauge32")); +} + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d%02d%02d%02d%02dZ", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char *getTypeString(SmiBasetype basetype, SmiType *smiType) +{ + int i; + char *typeModule, *typeName; + + typeName = smiType ? smiType->name : NULL; + typeModule = smiType ? smiGetTypeModule(smiType)->name : NULL; + + if (typeName && + (basetype != SMI_BASETYPE_ENUM) && + (basetype != SMI_BASETYPE_BITS)) { + if (mibtopib) + for(i=0; convertTypeMibToPib[i+1]; i += 4) { + if ((!strcmp(typeName, convertTypeMibToPib[i+1])) && + ((!typeModule) || (!convertTypeMibToPib[i]) || + (!strcmp(typeModule, convertTypeMibToPib[i])))) { + return convertTypeMibToPib[i+3]; + } + } + for(i=0; convertType[i+1]; i += 4) { + if ((!strcmp(typeName, convertType[i+1])) && + ((!typeModule) || (!convertType[i]) || + (!strcmp(typeModule, convertType[i])))) { + return convertType[i+3]; + } + } + } + + if ((!typeModule) || (!strlen(typeModule)) || (!typeName)) { + if (basetype == SMI_BASETYPE_ENUM) { + return "INTEGER"; + } + if (basetype == SMI_BASETYPE_BITS) { + return "BITS"; + } + } + + /* TODO: fully qualified if unambigous */ + + return typeName; +} + + + +static char *getOidString(SmiNode *smiNode, int importedParent) +{ + SmiNode *parentNode; + SmiModule *smiModule; + static char s[200]; + char append[200]; + unsigned int i; + + append[0] = 0; + + parentNode = smiNode; + smiModule = smiGetNodeModule(smiNode); + + do { + + if (parentNode->oidlen <= 1) { + break; + } + + /* prepend the cut-off subidentifier to `append'. */ + strcpy(s, append); + sprintf(append, " %u%s", parentNode->oid[parentNode->oidlen-1], s); + + /* retrieve the parent SmiNode */ + parentNode = smiGetParentNode(parentNode); + + if (!parentNode) { + sprintf(s, "%s", append); + return s; + } + + /* found an imported or a local parent node? */ + if ((parentNode->name && strlen(parentNode->name)) && + (smiIsImported(smiModule, NULL, parentNode->name) || + (!importedParent && + (smiGetNodeModule(parentNode) == smiModule)) || + (parentNode->oidlen == 1))) { + sprintf(s, "%s%s", parentNode->name, append); + return s; + } + + } while (parentNode); + + s[0] = 0; + for (i=0; i < smiNode->oidlen; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", smiNode->oid[i]); + } + return s; +} + + + +static char *getUppercaseString(char *s) +{ + static char *ss; + + ss = xstrdup(s); + ss[0] = (char)toupper((int)ss[0]); + return ss; +} + + + +static int isObjectGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_SCALAR + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + return 0; + } + } + + return 1; +} + + + +static Import* addImport(char *module, char *name) +{ + Import **import, *newImport; + int i; + + for (i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(module, convertImport[i]) + && !strcmp(name, convertImport[i+1])) { + module = convertImport[i+2]; + name = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(module, convertImport[i])) { + module = convertImport[i+2]; + break; + } + } + + if (!module || !name) { + return NULL; + } + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c < 0) continue; + if (c == 0) { + int d = strcmp((*import)->name, name); + if (d < 0) continue; + if (d == 0) return *import; + if (d > 0) break; + } + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + if (! newImport) { + return NULL; + } + newImport->module = module; + newImport->name = name; + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void createImportList(SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiNodekind kind = SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN; + SmiImport *smiImport; + SmiModule *smiModule2; + + if (mibtopib) { + addImport("TUBS-SMI", "ibrmibtopib"); + if (smiGetFirstNode(smiModule, SMI_NODEKIND_COLUMN)) { + addImport("COPS-PR-SPPI", "MODULE-COMPLIANCE"); + addImport("COPS-PR-SPPI", "OBJECT-GROUP"); + addImport("COPS-PR-SPPI", "OBJECT-IDENTITY"); + addImport("COPS-PR-SPPI-TC", "InstanceId"); + } + } + + for(smiNode = smiGetFirstNode(smiModule, kind); smiNode; + smiNode = smiGetNextNode(smiNode, kind)) { + smiType = smiGetNodeType(smiNode); + if (smiType && (smiType->decl == SMI_DECL_IMPLICIT_TYPE)) { + smiType = smiGetParentType(smiType); + } + if (smiType) { + smiModule2 = smiGetTypeModule(smiType); + if (smiModule2 && (smiModule2 != smiModule)) { + if (strlen(smiModule2->name) && smiType->name && + !isSmiOnlyType(smiType->name)) { + addImport(smiModule2->name, smiType->name); + } + } + } + + if (smiType && smiType->basetype == SMI_BASETYPE_INTEGER32) { + addImport("COPS-PR-SPPI", "Integer32"); + } + + if (smiType && smiType->basetype == SMI_BASETYPE_INTEGER64) { + addImport("COPS-PR-SPPI", "Integer64"); + } + + if (smiType && smiType->basetype == SMI_BASETYPE_UNSIGNED32) { + addImport("COPS-PR-SPPI", "Unsigned32"); + } + + if (smiType && smiType->basetype == SMI_BASETYPE_UNSIGNED64) { + addImport("COPS-PR-SPPI", "Unsigned64"); + } + + if ((smiNode->value.basetype == SMI_BASETYPE_OBJECTIDENTIFIER) && + (!strcmp(smiNode->value.value.ptr, "zeroDotZero"))) { + addImport("SNMPv2-SMI", "zeroDotZero"); + } + } + + smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN + | SMI_NODEKIND_TABLE | SMI_NODEKIND_ROW); + if (smiNode) { + addImport("COPS-PR-SPPI", "OBJECT-TYPE"); + } + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "MODULE-IDENTITY"); + } + } + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NODE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NODE)) { + if (smiNode->status != SMI_STATUS_UNKNOWN && + smiNode != smiGetModuleIdentityNode(smiModule)) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "OBJECT-IDENTITY"); + } + break; + } + } + + smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + if (smiNode) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "MODULE-COMPLIANCE"); + } + } + + for(smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "OBJECT-GROUP"); + } + } + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->description) { + if (strcmp("COPS-PR-SPPI", smiModule->name)) { + addImport("COPS-PR-SPPI", "TEXTUAL-CONVENTION"); + } + } + if (smiType->decl == SMI_DECL_TEXTUALCONVENTION) { + switch (smiType->basetype) { + case SMI_BASETYPE_INTEGER32: + addImport("COPS-PR-SPPI", "Integer32"); + break; + case SMI_BASETYPE_INTEGER64: + addImport("COPS-PR-SPPI", "Integer64"); + break; + case SMI_BASETYPE_UNSIGNED32: + addImport("COPS-PR-SPPI", "Unsigned32"); + break; + case SMI_BASETYPE_UNSIGNED64: + addImport("COPS-PR-SPPI", "Unsigned64"); + break; + default: + break; + } + } + } + + for (smiImport = smiGetFirstImport(smiModule); smiImport; + smiImport = smiGetNextImport(smiImport)) { + if ((islower((int) smiImport->name[0]) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-SMI")) || + (smiImport->module && !strcmp(smiImport->module, "SNMPv2-TC"))) && + !isSmiOnlyType(smiImport->name)) { + addImport(smiImport->module, smiImport->name); + } + } +} + + + +static void freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, + int length, int comment) +{ + char *format; + + if (comment) { + format = "-- %*c%s"; + /* if (column >= 3) column -= 3; */ + } else { + format = "%*c%s"; + } + + fprint(f, format, column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintWrapped(FILE *f, int column, char *string, int comment) +{ + if ((current_column + strlen(string)) > INDENTMAX) { + putc('\n', f); + current_column = 0; + fprintSegment(f, column, "", 0, comment); + } + fprint(f, "%s", string); +} + + + +static void fprintMultilineString(FILE *f, const char *s, const int comment) +{ + int i, len; + + fprintSegment(f, INDENTTEXTS - 1, "\"", 0, comment); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + current_column++; + if (s[i] == '\n') { + current_column = 0; + fprintSegment(f, INDENTTEXTS, "", 0, comment); + } + } + } + putc('\"', f); + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "'%*s'H", 2 * valuePtr->len, " "); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "{"); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + sprintf(&s[strlen(s)], "%s", nn->name); + } + } + } + sprintf(&s[strlen(s)], "}"); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, "{"); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + strcat(s, "}"); + } + break; + } + + return s; +} + + + +static void fprintSubtype(FILE *f, SmiType *smiType, const int comment) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[1024]; + int i; + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn; i++, nn = smiGetNextNamedNumber(nn)) { + if (i) { + fprint(f, ", "); + } else { + if (comment) { + fprint(f, "\n"); + fprintSegment(f, INDENT, "", INDENTVALUE, comment); + fprint(f, " { "); + } else { + fprint(f, " { "); + } + } + sprintf(s, "%s(%s)", nn->name, + getValueString(&nn->value, smiType)); + fprintWrapped(f, INDENTVALUE + INDENT, s, comment); + } + if (i) { + fprint(f, " }"); + } + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range; i++, range = smiGetNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprint(f, " (SIZE("); + } else { + fprint(f, " ("); + } + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiType)); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + } + fprintWrapped(f, INDENTVALUE + INDENT, s, 0); + } + if (i) { + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprint(f, ")"); + } + fprint(f, ")"); + } + } +} + + + +static void fprintIndex(FILE *f, SmiNode *indexNode, const int comment) +{ + SmiElement *smiElement; + int n, j; + + /* PIBs can contain both a PIB-INDEX | EXTENDS | AUGMENTS and an + INDEX clause. The index list's first element is the PIB-INDEX + (or EXTENDS/AUGMENTS) followed by the elements belonging to the + INDEX clause. */ + + for (n = 0, smiElement = smiGetFirstElement(indexNode); smiElement; + n++, smiElement = smiGetNextElement(smiElement)); + if (mibtopib) { + SmiNode *smiParentNode = smiGetParentNode(indexNode); + size_t len = strlen(smiParentNode->name); + char *instanceId = xmalloc(len + 11); + + strcpy(instanceId, smiParentNode->name); + if (len > 54) + len = 54; + strcpy(&instanceId[len], "InstanceId"); + fprintSegment(f, INDENT, "PIB-INDEX", INDENTVALUE, 0); + fprint(f, "{ "); + fprintWrapped(f, INDENTVALUE + 2, instanceId, 0); + fprint(f, " }\n"); + fprintSegment(f, INDENT, "INDEX", INDENTVALUE, 0); + fprint(f, "{ "); + for (j = 0, smiElement = smiGetFirstElement(indexNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) + fprint(f, ", "); + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + } + xfree(instanceId); + } + else + for (j = 0, smiElement = smiGetFirstElement(indexNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (!j) { + switch (indexNode->indexkind) { + case SMI_INDEX_INDEX: + fprintSegment(f, INDENT, "PIB-INDEX", INDENTVALUE, + comment); + break; + case SMI_INDEX_AUGMENT: + fprintSegment(f, INDENT, "AUGMENTS", INDENTVALUE, + comment); + break; + case SMI_INDEX_SPARSE: + fprintSegment(f, INDENT, "EXTENDS", INDENTVALUE, + comment); + break; + case SMI_INDEX_UNKNOWN: + case SMI_INDEX_REORDER: + case SMI_INDEX_EXPAND: + fprintSegment(f, INDENT, "-- unsupported indexing --", + INDENTVALUE, comment); + break; + } + fprint(f, "{ "); + } else if (j == 1) { + fprint(f, " }\n"); + fprintSegment(f, INDENT, "INDEX", INDENTVALUE, comment); + fprint(f, "{ "); + } else + fprint(f, ", "); + if (indexNode->implied && ((j+1) == n)) { + fprintWrapped(f, INDENTVALUE + 2, "IMPLIED ", 0); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); +} + + + +static void fprintUniqueness(FILE *f, SmiNode *indexNode, const int comment) +{ + SmiElement *smiElement; + int j; + + smiElement = smiGetFirstUniquenessElement(indexNode); + if (!smiElement) + return; + fprintSegment(f, INDENT, "UNIQUENESS", INDENTVALUE, comment); + fprint(f, "{ "); + for (j = 0; smiElement; j++, + smiElement = smiGetNextElement(smiElement)) { + if (j) + fprint(f, ", "); + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); +} + + + +static void fprintInstallErrors(FILE *f, SmiNode *indexNode, const int comment) +{ + SmiElement *smiElement; + SmiNode *smiNode; + int j; + char *id; + + smiElement = smiGetFirstElement(indexNode); + if (!smiElement) + return; + fprintSegment(f, INDENT, "INSTALL-ERRORS", INDENTVALUE, comment); + fprint(f, "{ "); + for (j = 0; smiElement; j++, + smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + id = xmalloc(strlen(smiNode->name) + 10); + sprintf(id, "%s (%ld)%s", smiNode->name, + smiNode->oidlen ? (long)smiNode->oid : 0, + smiGetNextElement(smiElement) ? ", " : ""); + fprintWrapped(f, 2+INDENTVALUE, id, 0); + xfree(id); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); +} + + + +static void fprintImports(FILE *f) +{ + Import *import; + char *lastModulename = NULL; + char *importedModulename, *importedDescriptor; + int i; + + for(import = importList; import; import = import->nextPtr) { + importedModulename = import->module; + importedDescriptor = import->name; + + if (!strlen(importedModulename)) + continue; + + for(i = 0; convertImport[i]; i += 4) { + if (convertImport[i] && convertImport[i+1] + && !strcmp(importedModulename, convertImport[i]) + && !strcmp(importedDescriptor, convertImport[i+1])) { + importedModulename = convertImport[i+2]; + importedDescriptor = convertImport[i+3]; + break; + } else if (convertImport[i] && !convertImport[i+1] + && !strcmp(importedModulename, convertImport[i])) { + importedModulename = convertImport[i+2]; + break; + } + } + + if (importedModulename && importedDescriptor && + strlen(importedDescriptor)) { + if ((!lastModulename) || + strcmp(importedModulename, lastModulename)) { + if (!lastModulename) { + fprint(f, "IMPORTS"); + } else { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "", 0, 0); + fprint(f, "FROM %s", lastModulename); + } + fprint(f, "\n"); + fprintSegment(f, INDENT, "", 0, 0); + } else { + fprint(f, ", "); + } + fprintWrapped(f, INDENT, importedDescriptor, 0); + lastModulename = importedModulename; + } + } + if (lastModulename) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "", 0, 0); + fprint(f, "FROM %s;\n\n", lastModulename); + } +} + + + +static void fprintModuleIdentity(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode, *smiNode2; + SmiElement *smiElement; + char *id; + + smiNode = smiGetModuleIdentityNode(smiModule); + + if (smiNode) { + + fprint(f, "%s MODULE-IDENTITY\n", smiNode->name); + fprintSegment(f, INDENT, "SUBJECT-CATEGORIES", INDENTVALUE, 0); + fprint(f, "{ "); + smiElement = smiGetFirstElement(smiNode); + if (smiElement && smiGetElementNode(smiElement)) + { + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode2 = smiGetElementNode(smiElement); + id = xmalloc(strlen(smiNode2->name) + 10); + if (smiNode2->oidlen) + sprintf(id, "%s (%ld)%s", smiNode2->name, (long)smiNode2->oid, + smiGetNextElement(smiElement) ? ", " : ""); + else + sprintf(id, "%s%s", smiNode2->name, + smiGetNextElement(smiElement) ? ", " : ""); + fprintWrapped(f, 2+INDENTVALUE, id, 0); + xfree(id); + } + fprint(f, " }\n"); + } else { + /* No SUBJECT-CATEGORIES entry was present, add one */ + fprint(f, "all } -- added by smidump\n"); + } + fprintSegment(f, INDENT, "LAST-UPDATED", INDENTVALUE, 0); + smiRevision = smiGetFirstRevision(smiModule); + if (smiRevision) + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + else + fprint(f, "\"197001010000Z\"\n"); + fprintSegment(f, INDENT, "ORGANIZATION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->organization, 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "CONTACT-INFO", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, smiModule->contactinfo, 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + if (smiModule->description) { + fprintMultilineString(f, smiModule->description, 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + + for(; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + if (!smiRevision->description + || strcmp(smiRevision->description, + "[Revision added by libsmi due to a LAST-UPDATED clause.]")) { + fprintSegment(f, INDENT, "REVISION", INDENTVALUE, 0); + fprint(f, "\"%s\"\n", getTimeString(smiRevision->date)); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, + 0); + fprint(f, "\n"); + if (smiRevision->description) { + fprintMultilineString(f, smiRevision->description, + 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + } + } + + if (smiNode) { + fprintSegment(f, INDENT, "::= ", 0, 0); + if (!mibtopib) + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + else + fprint(f, "{ ibrmibtopib %d }\n\n", + smiNode->oid[smiNode->oidlen - 1]); + } + /* TODO: else error */ + + fprint(f, "\n"); + } +} + + + +static void fprintTypeDefinitions(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + int invalid; + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->status == SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + if (invalid) { + fprint(f, "-- %s ::=\n", smiType->name); + } else { + fprint(f, "%s ::=\n", smiType->name); + } + fprintSegment(f, INDENT, "", 0, invalid); + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n\n"); + } + } +} + + + +static void fprintTextualConventions(FILE *f, SmiModule *smiModule) +{ + SmiType *smiType; + int invalid; + + for(smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + if (smiType->status != SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + fprint(f, "%s ::= TEXTUAL-CONVENTION\n", smiType->name); + + if (smiType->format) { + fprintSegment(f, INDENT, "DISPLAY-HINT", INDENTVALUE, + invalid); + fprint(f, "\"%s\"\n", smiType->format); + } + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, + invalid); + fprint(f, "%s\n", getStatusString(smiType->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, + invalid); + fprint(f, "\n"); + if (smiType->description) { + fprintMultilineString(f, smiType->description, + invalid); + } else { + fprintMultilineString(f, "...", invalid); + } + fprint(f, "\n"); + + if (smiType->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, + invalid); + fprint(f, "\n"); + fprintMultilineString(f, smiType->reference, + invalid); + fprint(f, "\n"); + } + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, + invalid); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n\n"); + } + } +} + + + +static void fprintObjects(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *rowNode, *colNode, *smiParentNode, *relatedNode; + SmiType *smiType; + SmiNodekind nodekinds; + int i, invalid, create, assignement, indentsequence, addinstanceid; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR; + + for(smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; smiNode = smiGetNextNode(smiNode, nodekinds)) { + + smiType = smiGetNodeType(smiNode); + smiParentNode = smiGetParentNode(smiNode); + + create = smiParentNode ? smiParentNode->create : 0; + + invalid = !smiType ? 0 : invalidType(smiType->basetype); + assignement = 0; + + if (invalid && silent + && (smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN)) { + continue; + } + + if (smiNode == smiGetModuleIdentityNode(smiModule)) { + continue; + } + + if ((smiNode->nodekind == SMI_NODEKIND_NODE) && + (smiNode->status == SMI_STATUS_UNKNOWN)) { + assignement = 1; + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + } else if (smiNode->nodekind == SMI_NODEKIND_NODE) { + fprint(f, "%s OBJECT-IDENTITY\n", smiNode->name); + } else { + if (invalid) { + fprint(f, "-- %s OBJECT-TYPE\n", smiNode->name); + } else { + fprint(f, "%s OBJECT-TYPE\n", smiNode->name); + } + } + + if ((smiNode->nodekind == SMI_NODEKIND_TABLE) || + (smiNode->nodekind == SMI_NODEKIND_ROW) || + (smiType)) { fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, invalid); + if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + fprint(f, "SEQUENCE OF "); + rowNode = smiGetFirstChildNode(smiNode); + if (rowNode) { + smiType = smiGetNodeType(rowNode); + if (smiType) { + fprint(f, "%s\n", smiType->name); + } else { + /* guess type name is uppercase row name */ + char *s = getUppercaseString(rowNode->name); + fprint(f, "%s\n", s); + xfree(s); + } + /* TODO: print non-local name qualified */ + } else { + fprint(f, "\n"); + } + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + if (smiType) { + fprint(f, "%s\n", smiType->name); + } else { + char *s = getUppercaseString(smiNode->name); + /* guess type name is uppercase row name */ + fprint(f, "%s\n", s); + xfree(s); + } + /* TODO: print non-local name qualified */ + } else if (smiType) { + if (!smiType->name) { + /* + * an implicitly restricted type. + */ + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, invalid); + fprint(f, "\n"); + } else { + fprint(f, "%s\n", + getTypeString(smiType->basetype, smiType)); + } + } + } + + if (! assignement && smiNode->nodekind == SMI_NODEKIND_TABLE) { + fprintSegment(f, INDENT, "PIB-ACCESS", INDENTVALUE, 0); + fprint(f, "%s\n", getAccessString(smiNode->access, 1)); + } + + if (! assignement && smiType && smiType->name && + !strcmp(smiType->name, "ReferenceId")) { + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + fprintSegment(f, INDENT, "PIB-REFERENCES", INDENTVALUE, 0); + fprint(f, "{ %s }\n", relatedNode->name); + } + } + + if (! assignement && smiType && smiType->name && + !strcmp(smiType->name, "TagReferenceId")) { + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + fprintSegment(f, INDENT, "PIB-TAG", INDENTVALUE, 0); + fprint(f, "{ %s }\n", relatedNode->name); + } + } + + if (! assignement) { + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, invalid); + fprint(f, "%s\n", getStatusString(smiNode->status)); + } + + if (! assignement) { + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, invalid); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, invalid); + } else { + fprintMultilineString(f, "...", invalid); + } + fprint(f, "\n"); + } + + if (smiNode->nodekind == SMI_NODEKIND_TABLE) + fprintInstallErrors(f, smiNode, invalid); + + if (! assignement && smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, invalid); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, invalid); + fprint(f, "\n"); + } + + relatedNode = smiGetRelatedNode(smiNode); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + fprintIndex(f, smiNode, invalid); + break; + case SMI_INDEX_AUGMENT: + fprintSegment(f, INDENT, "AUGMENTS", INDENTVALUE, invalid); + fprint(f, "{ %s }\n", relatedNode->name); + break; + case SMI_INDEX_SPARSE: + fprintSegment(f, INDENT, "EXTENDS", INDENTVALUE, invalid); + fprint(f, "{ %s }\n", relatedNode->name); + break; + case SMI_INDEX_UNKNOWN: + case SMI_INDEX_REORDER: + case SMI_INDEX_EXPAND: + break; + } + + if (smiNode->nodekind == SMI_NODEKIND_ROW) + fprintUniqueness(f, smiNode, invalid); + + if (smiNode->value.basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, INDENT, "DEFVAL", INDENTVALUE, invalid); + fprint(f, "{ %s }", getValueString(&smiNode->value, smiType)); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, invalid); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + + smiType = smiGetNodeType(smiNode); + addinstanceid = 0; + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + if (mibtopib) + addinstanceid = 1; + if (smiType) { + fprint(f, "%s ::= SEQUENCE {", smiType->name); + } else { + /* guess type name is uppercase row name */ + char *s = getUppercaseString(smiNode->name); + fprint(f, "%s ::= SEQUENCE {", s); + xfree(s); + } + /* Find the last valid node in this sequence. We need it + * to suppress its trailing comma. Compute the longest + * column name so that we can adjust the indentation of + * the type names in the SEQUENCE definition. */ + for(indentsequence = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; + colNode = smiGetNextChildNode(colNode)) { + int len = strlen(colNode->name); + if (len > indentsequence) indentsequence = len; + smiType = smiGetNodeType(colNode); + if (smiType && !invalidType(smiType->basetype)) { + relatedNode = colNode; + } + } + if (mibtopib) { + int len = strlen(smiParentNode->name) + 10; + if (len > 64) + len = 64; + indentsequence = len; + } + if (relatedNode) relatedNode = smiGetNextChildNode(relatedNode); + indentsequence = (2*INDENT + indentsequence + 1) / INDENT * INDENT; + /* TODO: non-local name? */ + for(i = 0, invalid = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; + colNode = smiGetNextChildNode(colNode)) { + if (! invalid || ! silent) { + if (i && (relatedNode != colNode)) { + fprint(f, ","); + } + fprint(f, "\n"); + } + + smiType = smiGetNodeType(colNode); + invalid = (smiType == NULL) || invalidType(smiType->basetype); + + if (! invalid || ! silent) { + fprintSegment(f, INDENT, colNode->name, indentsequence, + invalid); + if (smiType && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetParentType(smiType))); + } else if (smiType) { + fprint(f, "%s", getTypeString(smiType->basetype, + smiGetNodeType(colNode))); + } else { + fprint(f, ""); + } + } + i++; + } + if (mibtopib) { + size_t len = strlen(smiParentNode->name); + int maxid; + char *instanceId = xmalloc(len + 11); + strcpy(instanceId, smiParentNode->name); + if (len > 54) + len = 54; + strcpy(&instanceId[len], "InstanceId"); + fprint(f, ",\n"); + fprintSegment(f, INDENT, instanceId, indentsequence, 0); + fprint(f, "InstanceId\n}\n\n"); + + fprint(f, "%s OBJECT-TYPE\n", instanceId); + fprintSegment(f, INDENT, "SYNTAX", INDENTVALUE, 0); + fprint(f, "InstanceId\n"); + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic " \ + "MIB to PIB conversion.", 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, 0); + for (maxid = 0, colNode = smiGetFirstChildNode(smiNode); + colNode; colNode = smiGetNextChildNode(colNode)) + if (colNode->oidlen && + (colNode->oid[colNode->oidlen - 1] > maxid)) + maxid = colNode->oid[colNode->oidlen - 1]; + fprint(f, "{ %s %d }\n\n", + smiGetFirstChildNode(smiParentNode)->name, + (maxid + 1) > 128 ? (maxid + 1) : 128); + xfree(instanceId); + } else + fprint(f, "\n}\n\n"); + } + } +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + SmiElement *smiElement; + int j, objectGroup = 0; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + objectGroup = isObjectGroup(smiNode); + + if (!objectGroup) { + fprint(f, "%s OBJECT IDENTIFIER\n", smiNode->name); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + + if (!objectGroup) { + continue; + } + + fprint(f, "%s %s\n", smiNode->name, "OBJECT-GROUP"); + fprintSegment(f, INDENT, "OBJECTS", INDENTVALUE, 0); + fprint(f, "{ "); + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, ", "); + } + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, 0); + /* TODO: non-local name if non-local */ + } /* TODO: empty? -> print error */ + fprint(f, " }\n"); + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "%s\n", getStatusString(smiNode->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, 0); + fprint(f, "\n"); + } + + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } +} + + + +static void fprintModuleCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode, *smiNode2; + SmiModule *smiModule2; + SmiType *smiType; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + SmiElement *smiElement; + char *module; + char *done = NULL; /* "+" separated list of module names */ + char s[1024]; + int j; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + fprint(f, "%s MODULE-COMPLIANCE\n", smiNode->name); + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "%s\n", getStatusString(smiNode->status)); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + if (smiNode->description) { + fprintMultilineString(f, smiNode->description, 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + + if (smiNode->reference) { + fprintSegment(f, INDENT, "REFERENCE", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, smiNode->reference, 0); + fprint(f, "\n"); + } + + /* `this module' always first */ + done = xstrdup("+"); + for (module = smiModule->name; module; ) { + + fprint(f, "\n"); + fprintSegment(f, INDENT, "MODULE", INDENTVALUE, 0); + if (strlen(module) && strcmp(smiModule->name, module)) { + fprint(f, "%s\n", module); + } else { + fprint(f, "-- this module\n"); + } + + for (j = 0, smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode(smiElement))->name, module)) { + if (j) { + fprint(f, ", "); + } else { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "MANDATORY-GROUPS", + INDENTVALUE, 0); + fprint(f, "{ "); + } + j++; + fprintWrapped(f, INDENTVALUE + 2, + smiGetElementNode(smiElement)->name, + 0); + } + } + if (j) { + fprint(f, " }\n"); + } + + for(smiOption = smiGetFirstOption(smiNode); smiOption; + smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "GROUP", + INDENTVALUE, 0); + fprint(f, "%s\n", smiNode2->name); + fprintSegment(f, 2 * INDENT, "DESCRIPTION", + INDENTVALUE, 0); + fprint(f, "\n"); + if (smiOption->description) { + fprintMultilineString(f, smiOption->description, + 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + } + } + + for(smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiNode2 = smiGetRefinementNode(smiRefinement); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "OBJECT", + INDENTVALUE, 0); + fprint(f, "%s\n", smiNode2->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, 2 * INDENT, "SYNTAX", INDENTVALUE, + 0); + fprint(f, "%s", + getTypeString(smiType->basetype, + smiGetParentType(smiType))); + fprintSubtype(f, smiType, 0); + fprint(f, "\n"); + } + +/* if ((smiRefinement->access == SMI_ACCESS_NOTIFY) || + (smiRefinement->access >= SMI_REPORT_ONLY)) {*/ + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, 2 * INDENT, "PIB-MIN-ACCESS", + INDENTVALUE, 0); + fprint(f, "%s\n", + getAccessString(smiRefinement->access, 0)); + /* we assume, that read-create does not appear in + * an OT refinement. + */ + } + fprintSegment(f, 2 * INDENT, "DESCRIPTION", + INDENTVALUE, 0); + fprint(f, "\n"); + if (smiRefinement->description) { + fprintMultilineString(f, + smiRefinement->description, + 0); + } else { + fprintMultilineString(f, "...", 0); + } + fprint(f, "\n"); + } + } + + /* + * search the next module name in the list of mandatory + * groups, optional groups and refinements. + */ + done = xrealloc(done, + strlen(done)+strlen(module)+2*sizeof(char)); + strcat(done, module); + strcat(done, "+"); + module = NULL; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + sprintf(s, "+%s+", + smiGetNodeModule(smiGetElementNode(smiElement))->name); + if ((!strstr(done, s))) { + module = + smiGetNodeModule(smiGetElementNode(smiElement))->name; + break; + } + } + if (!module) { + ; /* TODO: search in options list */ + } + if (!module) { + ; /* TODO: search in refinements list */ + } + } + + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s }\n\n", getOidString(smiNode, 0)); + } + xfree(done); + + if (mibtopib) { + char *newCompliance = xmalloc(65); + char *newGroup = xmalloc(65); + char *newId = xmalloc(65); + int len, maxid; + + for (maxid = 0, smiNode2 = smiGetFirstChildNode(smiNode); + smiNode2; smiNode2 = smiGetNextChildNode(smiNode2)) + if (smiNode2->oidlen && + (smiNode2->oid[smiNode2->oidlen - 1] > maxid)) + maxid = smiNode2->oid[smiNode2->oidlen - 1]; + maxid++; + + smiNode = smiGetModuleIdentityNode(smiModule); + if (!smiNode || !newCompliance || !newGroup) + return; + len = strlen(smiNode->name); + + memset(newId, 0, 65); + strncpy(newId, smiNode->name, 46); + strcat(newId + (len > 46 ? 46 : len), "MIBtoPIBCompliance"); + + memset(newCompliance, 0, 65); + strncpy(newCompliance, smiNode->name, 46); + strcat(newCompliance + (len > 46 ? 46 : len), "MIBtoPIBModuleComp"); + + memset(newGroup, 0, 65); + strncpy(newGroup, smiNode->name, 51); + strcat(newGroup + (len > 51 ? 51 : len), "MIBtoPIBGroup"); + + fprintf(f, "-- The following three items were added in order " \ + "to create a RFC compliant\n-- SPPI module. They do not " \ + "provide any usable content.\n-- %s\n-- %s\n-- %s\n\n", + newId, newCompliance, newGroup); + + fprint(f, "%s OBJECT-IDENTITY\n", newId); + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic " \ + "MIB to PIB conversion.", 0); + fprint(f, "\n"); + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s %d }\n\n", smiNode->name, (maxid > 128 ? maxid : 128)); + + fprint(f, "%s MODULE-COMPLIANCE\n", newCompliance); + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic " \ + "MIB to PIB conversion.", 0); + fprint(f, "\n"); + + fprintSegment(f, INDENT, "MODULE", INDENTVALUE, 0); + fprint(f, "-- this module\n"); + + fprintSegment(f, 2 * INDENT, "MANDATORY-GROUPS", INDENTVALUE, 0); + fprint(f, "{ "); + + fprintWrapped(f, INDENTVALUE + 2, newGroup, 0); + fprint(f, "}\n"); + + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s 1 }\n\n", newId); + + fprint(f, "%s OBJECT-GROUP\n", newGroup); + fprintSegment(f, INDENT, "OBJECTS", INDENTVALUE, 0); + fprint(f, "{ "); + for (len=0, smiNode2 = smiGetFirstNode(smiModule, SMI_NODEKIND_COLUMN); + smiNode2; len = 1, + smiNode2 = smiGetNextNode(smiNode2, SMI_NODEKIND_COLUMN)) { + if (len) + fprint(f, ", "); + fprintWrapped(f, INDENTVALUE + 2, smiNode2->name, 0); + } + for (smiNode2 = smiGetFirstNode(smiModule, SMI_NODEKIND_ROW); + smiNode2; smiNode2 = smiGetNextNode(smiNode2, SMI_NODEKIND_ROW)) { + SmiNode *smiParentNode = smiGetParentNode(smiNode2); + size_t len = strlen(smiParentNode->name); + char *instanceId = xmalloc(len + 11); + + strcpy(instanceId, smiParentNode->name); + if (len > 54) + len = 54; + strcpy(&instanceId[len], "InstanceId"); + if (len) + fprint(f, ", "); + fprintWrapped(f, INDENTVALUE + 2, instanceId, 0); + xfree(instanceId); + } + + fprint(f, " }\n"); + + fprintSegment(f, INDENT, "STATUS", INDENTVALUE, 0); + fprint(f, "current\n"); + + fprintSegment(f, INDENT, "DESCRIPTION", INDENTVALUE, 0); + fprint(f, "\n"); + fprintMultilineString(f, "Added by smidump for automatic" \ + "MIB to PIB conversion.", 0); + fprint(f, "\n"); + + fprintSegment(f, INDENT, "::= ", 0, 0); + fprint(f, "{ %s 2 }\n\n", newId); + + xfree(newCompliance); + xfree(newGroup); + } +} + + + +static void doDumpSppi(FILE *f, SmiModule *smiModule) +{ + if (smiModule->language != SMI_LANGUAGE_SPPI) /* MIB to PIB conversion */ + mibtopib = 1; + else + mibtopib = 0; + + createImportList(smiModule); + + fprint(f, "--\n"); + fprint(f, "-- This SPPI module has been generated by smidump " + SMI_VERSION_STRING ". Do not edit.\n"); + fprint(f, "--\n\n"); + fprint(f, "%s%s PIB-DEFINITIONS ::= BEGIN\n\n", smiModule->name, + mibtopib ? "-PIB" : ""); + + fprintImports(f); + fprintModuleIdentity(f, smiModule); + fprintTypeDefinitions(f, smiModule); + fprintTextualConventions(f, smiModule); + fprintObjects(f, smiModule); + fprintGroups(f, smiModule); + fprintModuleCompliances(f, smiModule); + + fprint(f, "END -- end of module %s.\n", smiModule->name); + + freeImportList(); +} + + +static void dumpSppi(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + doDumpSppi(f, modv[i]); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initSppi() +{ + static SmidumpDriver driver = { + "sppi", + dumpSppi, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "SPPI (RFC 3159)", + NULL, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-svg-script.h b/tools/dump-svg-script.h new file mode 100644 index 0000000..d1836b0 --- /dev/null +++ b/tools/dump-svg-script.h @@ -0,0 +1,616 @@ +const char *code = +"//The scripts for the tooltip and moveobj are based on work from\n" +"//SVG - Learning By Coding - http://www.datenverdrahten.de/svglbc/\n" +"//Author: Dr. Thomas Meinike 11/03 - thomas@handmadecode.de\n" +"var svgdoc,svgroot,paths,revert;\n" +"var collapsed = new Array(2);\n" +"var name = new Array(%i);\n" +"var clickStatus = new Array(%i);\n" +"var redCount = new Array(%i);\n" +"var salmonCount = new Array(%i);\n" +"var moveObj,rect,x,y,attr1,attr2,wert1,wert2,zoom=1,active=false;\n" +"\n" +"function MoveObj(evt)\n" +"{\n" +" if (active) {\n" +" var roundx, roundy;\n" +" var curtrans=svgroot.currentTranslate;\n" +" var ctx=curtrans.x;\n" +" var cty=curtrans.y;\n" +"\n" +" x=evt.clientX()\n" +" y=evt.clientY()\n" +" wert1=(x-ctx)*zoom*%.2f+%.2f+attr1-5;\n" +" wert2=(y-cty)*zoom*%.2f+%.2f+attr2-5;\n" +" roundx=Math.round(wert1*100)/100;\n" +" roundy=Math.round(wert2*100)/100;\n" +"\n" +" moveObj.setAttribute(\"transform\",\"translate(\"+roundx+\",\"+roundy+\")\");\n" +" }\n" +"}\n" +"\n" +"function ClickObj(evt)\n" +"{\n" +" rect=evt.target.parentNode.getElementsByTagName(\"rect\").item(0);\n" +" moveObj=evt.target.parentNode;\n" +" attr1=rect.getAttribute(\"width\")/2;\n" +" attr2=rect.getAttribute(\"height\")/2;\n" +" active=true;\n" +"}\n" +"\n" +"function OutOfObj(evt)\n" +"{\n" +" if (active) {\n" +" active=false;\n" +" findAdjacentEdges();\n" +" }\n" +"}\n" +"\n" +"function findAdjacentEdges()\n" +"{\n" +" var rectl, rectlid, i, nodenames;\n" +" rectl = rect;\n" +" rectlid = rectl.getAttribute(\"id\");\n" +" for (i=0; i Math.PI-beta && alpha < Math.PI+beta)\n" +" || alpha > 2*Math.PI-beta) {\n" +" //intersection at left or right border\n" +" if (nodesx < nodeex) {\n" +" edgesx = nodesx - 0 + nodesw/2;\n" +" } else {\n" +" edgesx = nodesx - nodesw/2;\n" +" }\n" +" if (nodesy < nodeey) {\n" +" edgesy = nodesy - 0 + Math.abs(nodesw*Math.tan(alpha)/2);\n" +" } else {\n" +" edgesy = nodesy - Math.abs(nodesw*Math.tan(alpha)/2);\n" +" }\n" +" } else {\n" +" //intersection at top or bottom border\n" +" if (nodesy < nodeey) {\n" +" edgesy = nodesy - 0 + nodesh/2;\n" +" } else {\n" +" edgesy = nodesy - nodesh/2;\n" +" }\n" +" if (nodesx < nodeex) {\n" +" edgesx = nodesx - 0 + Math.abs(nodesh/(2*Math.tan(alpha)));\n" +" } else {\n" +" edgesx = nodesx - Math.abs(nodesh/(2*Math.tan(alpha)));\n" +" }\n" +" }\n" +"\n" +" //calculate intersection of edge and endNode\n" +" beta = Math.atan(nodeeh/nodeew);\n" +" if (alpha < beta\n" +" || (alpha > Math.PI-beta && alpha < Math.PI+beta)\n" +" || alpha > 2*Math.PI-beta) {\n" +" //intersection at left or right border\n" +" if (nodesx > nodeex) {\n" +" edgeex = nodeex - 0 + nodeew/2;\n" +" } else {\n" +" edgeex = nodeex - nodeew/2;\n" +" }\n" +" if (nodesy > nodeey) {\n" +" edgeey = nodeey - 0 + Math.abs(nodeew*Math.tan(alpha)/2);\n" +" } else {\n" +" edgeey = nodeey - Math.abs(nodeew*Math.tan(alpha)/2);\n" +" }\n" +" } else {\n" +" //intersection at top or bottom border\n" +" if (nodesy > nodeey) {\n" +" edgeey = nodeey - 0 + nodeeh/2;\n" +" } else {\n" +" edgeey = nodeey - nodeeh/2;\n" +" }\n" +" if (nodesx > nodeex) {\n" +" edgeex = nodeex - 0 + Math.abs(nodeeh/(2*Math.tan(alpha)));\n" +" } else {\n" +" edgeex = nodeex - Math.abs(nodeeh/(2*Math.tan(alpha)));\n" +" }\n" +" }\n" +"\n" +" //set new edge coordinates\n" +" sx=Math.round(edgesx*100)/100;\n" +" ex=Math.round(edgeex*100)/100;\n" +" sy=Math.round(edgesy*100)/100;\n" +" ey=Math.round(edgeey*100)/100;\n" +"\n" +" if (sx < ex) {\n" +" if (revert[j] == 1) {\n" +" revert[j] = 0;\n" +" flipEdgeMarks(edge);\n" +" }\n" +" edge.setAttribute(\"d\",\"M \"+sx+\" \"+sy+\" \"+ex+\" \"+ey);\n" +" } else {\n" +" if (revert[j] == 0) {\n" +" revert[j] = 1;\n" +" flipEdgeMarks(edge);\n" +" }\n" +" edge.setAttribute(\"d\",\"M \"+ex+\" \"+ey+\" \"+sx+\" \"+sy);\n" +" }\n" +"}\n" +"\n" +"function flipEdgeMarks(edge)\n" +"{\n" +" var attr, i, j, done, textpaths, pathnamei, offset;\n" +"\n" +" //revert start- and end-markers\n" +" attr = edge.attributes;\n" +" done = 0;\n" +" for (i=0;iend\n" +" edge.removeAttribute(\"marker-start\");\n" +" edge.setAttribute(\"marker-end\",\"url(#arrowend)\");\n" +" break;\n" +" }\n" +" }\n" +" if (attr.item(i).nodeName == \"marker-end\") {\n" +" for (j=i;jstart\n" +" edge.removeAttribute(\"marker-end\");\n" +" edge.setAttribute(\"marker-start\",\"url(#arrowstart)\");\n" +" break;\n" +" }\n" +" }\n" +" }\n" +"\n" +" //revert cardinalities\n" +" textpaths = svgdoc.getElementsByTagName(\"textPath\");\n" +" for (i=0;i targetX) {\n" +" nextObj.style.setProperty(\"visibility\",\"visible\");\n" +" gapY += 15;\n" +" if (collapsed[0][targetID] == 1) {\n" +" targetID = collapsed[1][targetID];\n" +" } else {\n" +" targetID++;\n" +" }\n" +" nextObj = svgdoc.getElementById(\"MI\"+targetID);\n" +" if (nextObj == null)\n" +" break;\n" +" } else {\n" +" break;\n" +" }\n" +" }\n" +" if (nextObj == null)\n" +" return;\n" +" //move following texts downwards\n" +" while (nextObj != null) {\n" +" attr = nextObj.attributes;\n" +" for (i=0;i targetX) {\n" +" nextObj.style.setProperty(\"visibility\",\"hidden\");\n" +" gapY += 15;\n" +" if (collapsed[0][targetID] == 1) {\n" +" targetID = collapsed[1][targetID];\n" +" } else {\n" +" targetID++;\n" +" }\n" +" nextObj = svgdoc.getElementById(\"MI\"+targetID);\n" +" if (nextObj == null)\n" +" break;\n" +" } else {\n" +" break;\n" +" }\n" +" }\n" +" //save next uncollapsed element in array\n" +" collapsed[1][clickedID] = targetID;\n" +" if (nextObj == null)\n" +" return;\n" +" //move following texts upwards\n" +" while (nextObj != null) {\n" +" attr = nextObj.attributes;\n" +" for (i=0;i nodeex) {\n" +" revert[j] = 1;\n" +" } else {\n" +" revert[j] = 0;\n" +" }\n" +" }\n" +"}\n" +"\n" +"function setStatus(evt, color1, color2)\n" +"{\n" +" var clickObj = evt.getTarget();\n" +" var clickObjName = clickObj.getAttribute('id');\n" +"\n" +" //find i corresponding to the clicked object\n" +" for (i=0; i<%i; i++) {\n" +" if (name[i] == \"\") {\n" +" name[i] = clickObjName;\n" +" break;\n" +" }\n" +" if (name[i] != clickObjName)\n" +" continue;\n" +" break;\n" +" }\n" +"\n" +" //toggle click status, color clicked object\n" +" if (clickStatus[i] == 0) {\n" +" clickStatus[i] = 1;\n" +" clickObj.setAttribute(\"style\",\"fill: \"+color1);\n" +" } else {\n" +" clickStatus[i] = 0;\n" +" clickObj.setAttribute(\"style\",\"fill: \"+color2);\n" +" }\n" +"\n" +" //adjust color-counter\n" +" if (color1 == 'red') {\n" +" if (clickStatus[i] == 1) {\n" +" redCount[i]++;\n" +" } else {\n" +" redCount[i]--;\n" +" }\n" +" }\n" +" if (color1 == 'salmon') {\n" +" if (clickStatus[i] == 1) {\n" +" salmonCount[i]++;\n" +" } else {\n" +" salmonCount[i]--;\n" +" }\n" +" }\n" +"\n" +" if (clickStatus[i] == 0 && salmonCount[i] > 0) {\n" +" clickObj.setAttribute(\"style\",\"fill: salmon\");\n" +" }\n" +"}\n" +"\n" +"function changeColor(evt, targetObjName, color1, color2)\n" +"{\n" +" var clickObj = evt.getTarget();\n" +" var clickObjName = clickObj.getAttribute('id');\n" +" var targetObj = svgDocument.getElementById(targetObjName);\n" +"\n" +" //find i corresponding to the clicked object\n" +" for (i=0; i<%i; i++) {\n" +" if (name[i] != clickObjName)\n" +" continue;\n" +" break;\n" +" }\n" +"\n" +" //find j corresponding to the target object\n" +" for (j=0; j<%i; j++) {\n" +" if (name[j] == \"\") {\n" +" name[j] = targetObjName;\n" +" break;\n" +" }\n" +" if (name[j] != targetObjName)\n" +" continue;\n" +" break;\n" +" }\n" +"\n" +" //adjust color-counter\n" +" if (color1 == 'red') {\n" +" if (clickStatus[i] == 1) {\n" +" redCount[j]++;\n" +" } else {\n" +" redCount[j]--;\n" +" }\n" +" }\n" +" if (color1 == 'salmon') {\n" +" if (clickStatus[i] == 1) {\n" +" salmonCount[j]++;\n" +" } else {\n" +" salmonCount[j]--;\n" +" }\n" +" }\n" +"}\n" +"\n" +"function colorText(targetObjName, color)\n" +"{\n" +" var targetObj = svgDocument.getElementById(targetObjName);\n" +"\n" +" //find i corresponding to the target object\n" +" for (i=0; i<%i; i++) {\n" +" if (name[i] != targetObjName)\n" +" continue;\n" +" break;\n" +" }\n" +"\n" +" //color text\n" +" if (i == %i) {\n" +" targetObj.setAttribute(\"style\",\"fill: \"+color);\n" +" return;\n" +" }\n" +" if (redCount[i] == 0 && salmonCount[i] == 0) {\n" +" targetObj.setAttribute(\"style\",\"fill: \"+color);\n" +" }\n" +" if (salmonCount[i] > 0) {\n" +" if (color == 'red') {\n" +" targetObj.setAttribute(\"style\",\"fill: red\");\n" +" } else {\n" +" if (redCount[i] > 0) {\n" +" targetObj.setAttribute(\"style\",\"fill: red\");\n" +" } else {\n" +" targetObj.setAttribute(\"style\",\"fill: salmon\");\n" +" }\n" +" }\n" +" }\n" +"}\n" +; diff --git a/tools/dump-svg-script.js b/tools/dump-svg-script.js new file mode 100644 index 0000000..d25282f --- /dev/null +++ b/tools/dump-svg-script.js @@ -0,0 +1,614 @@ +//The scripts for the tooltip and moveobj are based on work from +//SVG - Learning By Coding - http://www.datenverdrahten.de/svglbc/ +//Author: Dr. Thomas Meinike 11/03 - thomas@handmadecode.de +var svgdoc,svgroot,paths,revert; +var collapsed = new Array(2); +var name = new Array(%i); +var clickStatus = new Array(%i); +var redCount = new Array(%i); +var salmonCount = new Array(%i); +var moveObj,rect,x,y,attr1,attr2,wert1,wert2,zoom=1,active=false; + +function MoveObj(evt) +{ + if (active) { + var roundx, roundy; + var curtrans=svgroot.currentTranslate; + var ctx=curtrans.x; + var cty=curtrans.y; + + x=evt.clientX() + y=evt.clientY() + wert1=(x-ctx)*zoom*%.2f+%.2f+attr1-5; + wert2=(y-cty)*zoom*%.2f+%.2f+attr2-5; + roundx=Math.round(wert1*100)/100; + roundy=Math.round(wert2*100)/100; + + moveObj.setAttribute("transform","translate("+roundx+","+roundy+")"); + } +} + +function ClickObj(evt) +{ + rect=evt.target.parentNode.getElementsByTagName("rect").item(0); + moveObj=evt.target.parentNode; + attr1=rect.getAttribute("width")/2; + attr2=rect.getAttribute("height")/2; + active=true; +} + +function OutOfObj(evt) +{ + if (active) { + active=false; + findAdjacentEdges(); + } +} + +function findAdjacentEdges() +{ + var rectl, rectlid, i, nodenames; + rectl = rect; + rectlid = rectl.getAttribute("id"); + for (i=0; i Math.PI-beta && alpha < Math.PI+beta) + || alpha > 2*Math.PI-beta) { + //intersection at left or right border + if (nodesx < nodeex) { + edgesx = nodesx - 0 + nodesw/2; + } else { + edgesx = nodesx - nodesw/2; + } + if (nodesy < nodeey) { + edgesy = nodesy - 0 + Math.abs(nodesw*Math.tan(alpha)/2); + } else { + edgesy = nodesy - Math.abs(nodesw*Math.tan(alpha)/2); + } + } else { + //intersection at top or bottom border + if (nodesy < nodeey) { + edgesy = nodesy - 0 + nodesh/2; + } else { + edgesy = nodesy - nodesh/2; + } + if (nodesx < nodeex) { + edgesx = nodesx - 0 + Math.abs(nodesh/(2*Math.tan(alpha))); + } else { + edgesx = nodesx - Math.abs(nodesh/(2*Math.tan(alpha))); + } + } + + //calculate intersection of edge and endNode + beta = Math.atan(nodeeh/nodeew); + if (alpha < beta + || (alpha > Math.PI-beta && alpha < Math.PI+beta) + || alpha > 2*Math.PI-beta) { + //intersection at left or right border + if (nodesx > nodeex) { + edgeex = nodeex - 0 + nodeew/2; + } else { + edgeex = nodeex - nodeew/2; + } + if (nodesy > nodeey) { + edgeey = nodeey - 0 + Math.abs(nodeew*Math.tan(alpha)/2); + } else { + edgeey = nodeey - Math.abs(nodeew*Math.tan(alpha)/2); + } + } else { + //intersection at top or bottom border + if (nodesy > nodeey) { + edgeey = nodeey - 0 + nodeeh/2; + } else { + edgeey = nodeey - nodeeh/2; + } + if (nodesx > nodeex) { + edgeex = nodeex - 0 + Math.abs(nodeeh/(2*Math.tan(alpha))); + } else { + edgeex = nodeex - Math.abs(nodeeh/(2*Math.tan(alpha))); + } + } + + //set new edge coordinates + sx=Math.round(edgesx*100)/100; + ex=Math.round(edgeex*100)/100; + sy=Math.round(edgesy*100)/100; + ey=Math.round(edgeey*100)/100; + + if (sx < ex) { + if (revert[j] == 1) { + revert[j] = 0; + flipEdgeMarks(edge); + } + edge.setAttribute("d","M "+sx+" "+sy+" "+ex+" "+ey); + } else { + if (revert[j] == 0) { + revert[j] = 1; + flipEdgeMarks(edge); + } + edge.setAttribute("d","M "+ex+" "+ey+" "+sx+" "+sy); + } +} + +function flipEdgeMarks(edge) +{ + var attr, i, j, done, textpaths, pathnamei, offset; + + //revert start- and end-markers + attr = edge.attributes; + done = 0; + for (i=0;iend + edge.removeAttribute("marker-start"); + edge.setAttribute("marker-end","url(#arrowend)"); + break; + } + } + if (attr.item(i).nodeName == "marker-end") { + for (j=i;jstart + edge.removeAttribute("marker-end"); + edge.setAttribute("marker-start","url(#arrowstart)"); + break; + } + } + } + + //revert cardinalities + textpaths = svgdoc.getElementsByTagName("textPath"); + for (i=0;i targetX) { + nextObj.style.setProperty("visibility","visible"); + gapY += 15; + if (collapsed[0][targetID] == 1) { + targetID = collapsed[1][targetID]; + } else { + targetID++; + } + nextObj = svgdoc.getElementById("MI"+targetID); + if (nextObj == null) + break; + } else { + break; + } + } + if (nextObj == null) + return; + //move following texts downwards + while (nextObj != null) { + attr = nextObj.attributes; + for (i=0;i targetX) { + nextObj.style.setProperty("visibility","hidden"); + gapY += 15; + if (collapsed[0][targetID] == 1) { + targetID = collapsed[1][targetID]; + } else { + targetID++; + } + nextObj = svgdoc.getElementById("MI"+targetID); + if (nextObj == null) + break; + } else { + break; + } + } + //save next uncollapsed element in array + collapsed[1][clickedID] = targetID; + if (nextObj == null) + return; + //move following texts upwards + while (nextObj != null) { + attr = nextObj.attributes; + for (i=0;i nodeex) { + revert[j] = 1; + } else { + revert[j] = 0; + } + } +} + +function setStatus(evt, color1, color2) +{ + var clickObj = evt.getTarget(); + var clickObjName = clickObj.getAttribute('id'); + + //find i corresponding to the clicked object + for (i=0; i<%i; i++) { + if (name[i] == "") { + name[i] = clickObjName; + break; + } + if (name[i] != clickObjName) + continue; + break; + } + + //toggle click status, color clicked object + if (clickStatus[i] == 0) { + clickStatus[i] = 1; + clickObj.setAttribute("style","fill: "+color1); + } else { + clickStatus[i] = 0; + clickObj.setAttribute("style","fill: "+color2); + } + + //adjust color-counter + if (color1 == 'red') { + if (clickStatus[i] == 1) { + redCount[i]++; + } else { + redCount[i]--; + } + } + if (color1 == 'salmon') { + if (clickStatus[i] == 1) { + salmonCount[i]++; + } else { + salmonCount[i]--; + } + } + + if (clickStatus[i] == 0 && salmonCount[i] > 0) { + clickObj.setAttribute("style","fill: salmon"); + } +} + +function changeColor(evt, targetObjName, color1, color2) +{ + var clickObj = evt.getTarget(); + var clickObjName = clickObj.getAttribute('id'); + var targetObj = svgDocument.getElementById(targetObjName); + + //find i corresponding to the clicked object + for (i=0; i<%i; i++) { + if (name[i] != clickObjName) + continue; + break; + } + + //find j corresponding to the target object + for (j=0; j<%i; j++) { + if (name[j] == "") { + name[j] = targetObjName; + break; + } + if (name[j] != targetObjName) + continue; + break; + } + + //adjust color-counter + if (color1 == 'red') { + if (clickStatus[i] == 1) { + redCount[j]++; + } else { + redCount[j]--; + } + } + if (color1 == 'salmon') { + if (clickStatus[i] == 1) { + salmonCount[j]++; + } else { + salmonCount[j]--; + } + } +} + +function colorText(targetObjName, color) +{ + var targetObj = svgDocument.getElementById(targetObjName); + + //find i corresponding to the target object + for (i=0; i<%i; i++) { + if (name[i] != targetObjName) + continue; + break; + } + + //color text + if (i == %i) { + targetObj.setAttribute("style","fill: "+color); + return; + } + if (redCount[i] == 0 && salmonCount[i] == 0) { + targetObj.setAttribute("style","fill: "+color); + } + if (salmonCount[i] > 0) { + if (color == 'red') { + targetObj.setAttribute("style","fill: red"); + } else { + if (redCount[i] > 0) { + targetObj.setAttribute("style","fill: red"); + } else { + targetObj.setAttribute("style","fill: salmon"); + } + } + } +} diff --git a/tools/dump-svg.c b/tools/dump-svg.c new file mode 100644 index 0000000..4220a54 --- /dev/null +++ b/tools/dump-svg.c @@ -0,0 +1,3342 @@ +/* + * dump-svg.c -- + * + * Operations to extract a SVG diagram from MIB modules. + * This driver is based on the cm-driver by A. Mueller. + * Mail comments and suggestions to sperner@ibr.cs.tu-bs.de + * + * Copyright (c) 2004-2005 K. Sperner, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-svg.c 8090 2008-04-18 12:56:29Z strauss $ + */ + + + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" +#include "rea.h" +#include "dump-svg-script.h" + +#define URL "http://www.ibr.cs.tu-bs.de/projects/libsmi/svg/mib2svg.cgi?" + + + +extern int smiAsprintf(char **strp, const char *format, ...); + + + +/* + * Definitions used by the svg output driver (node layout). + */ + +/* FIXME int or float? */ +static const float HEADFONTSIZETABLE = (float)7; +static const float HEADSPACESIZETABLE = (float)4; +static const float ATTRFONTSIZE = (float)7; +static const float ATTRSPACESIZE = (float)2; +static const float TABLEHEIGHT = (float)20; /*headline of the table*/ +static const float TABLEELEMHEIGHT = (float)15; /*height of one attribute*/ +static const float TABLEBOTTOMHEIGHT = (float)5; /*bottom of the table*/ + +static const int MODULE_INFO_WIDTH =150; +/* The description of RowStatus is quite long... :-/ */ +static const int DYN_TEXT =470; + +/* used by the springembedder */ +static const int ITERATIONS =100; + +static char *link; +static const char *linkcolor = "blue"; + + + +/* ------ Misc. ----------------- */ + + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + if (tm->tm_hour == 0 && tm->tm_min == 0) { + smiAsprintf(&s, "%04d-%02d-%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + } else { + smiAsprintf(&s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + } + return s; +} + + + +/* -------------- main functions ------------------------------------------- */ + + + +/* + * Creates the graph nodes of the given module + */ +static void algCreateNodes(SmiModule *module) +{ + SmiNode *node; + GraphNode *newNode; + + /* get tables and scalars from the MIB module */ + for (node = smiGetFirstNode(module, SMI_NODEKIND_TABLE); + node; + node = smiGetNextNode(node, SMI_NODEKIND_TABLE)) { + if ((node->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (node->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + newNode = graphInsertNode(graph, node); + newNode->smiModule = module; + } + for (node = smiGetFirstNode(module, SMI_NODEKIND_SCALAR); + node; + node = smiGetNextNode(node, SMI_NODEKIND_SCALAR)) { + if ((node->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (node->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + newNode = graphInsertNode(graph, node); + newNode->smiModule = module; + } +} + + + +/* ------ XML primitives ------ */ + + + +/* + * parseTooltip: Parse any input to output to make the text safe for the + * ShowTooltipMZ-functin in the ecma-script. + */ +static void parseTooltip(char *input, char *output) +{ + int i, j; + + for (i = j = 0; input[i]; i++) { + switch (input[i]) { + case '\n': + output[j++] = '\\'; + output[j++] = 'n'; + break; + case '\\': + output[j++] = '\\'; + output[j++] = '\\'; + break; + case '\"': + /* quotes are not allowed in strings. */ + /* See chapter 3.4.5 in "Understanding SNMP MIBs" */ + break; + case '&': + output[j++] = '&'; + output[j++] = 'a'; + output[j++] = 'm'; + output[j++] = 'p'; + output[j++] = ';'; + break; + case '<': + output[j++] = '&'; + output[j++] = 'l'; + output[j++] = 't'; + output[j++] = ';'; + break; + case '>': + output[j++] = '&'; + output[j++] = 'g'; + output[j++] = 't'; + output[j++] = ';'; + break; + case '\'': + /* It seems, ' doesn't work... */ + output[j++] = '\\'; + output[j++] = '\''; + break; + default: + output[j++] = input[i]; + } + } + output[j] = '\0'; +} + +static int isObjectGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_SCALAR + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + return 0; + } + } + + return 1; +} + +static int isNotificationGroup(SmiNode *groupNode) +{ + SmiNode *smiNode; + SmiElement *smiElement; + + for (smiElement = smiGetFirstElement(groupNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + smiNode = smiGetElementNode(smiElement); + + if (smiNode->nodekind != SMI_NODEKIND_NOTIFICATION) { + return 0; + } + } + + return 1; +} + +static char *printFillColor(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "rgb(0%,0%,0%)" : + (status == SMI_STATUS_DEPRECATED) ? "rgb(40%,40%,40%)" : + (status == SMI_STATUS_OBSOLETE) ? "rgb(60%,60%,60%)" : + (status == SMI_STATUS_MANDATORY) ? "rgb(0%,0%,0%)" : + (status == SMI_STATUS_OPTIONAL) ? "rgb(20%,20%,20%)" : + ""; +} + +static char *getStatusString(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; +} + +/* + * Prints the footer of the SVG output file. + */ +static void printSVGClose(float xMin, float yMin, float xMax, float yMax) +{ + float scale; + + scale = max((xMax-xMin)/CANVASWIDTH,(yMax-yMin)/CANVASHEIGHT); + /* enclose whole canvas in its bounding box */ + /* + printf(" \n"); + */ + if (!STATIC_OUTPUT) { + printf(" \n", + xMin, yMin, scale); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" "); + printf("dyn. Text\n"); + printf(" dyn. Text\n"); + printf(" \n"); + printf(" \n"); + } + printf("\n"); +} + +/* + * FIXME stimmt das? + * index = 0 -> no index element + * index = 1 -> index element -> printed with "+" + */ +static void printSVGAttribute(SmiNode *node, SmiNode *tableNode, int index, + int modc, SmiModule **modv, + float *textYOffset, float *textXOffset) +{ + int i, target_exists = 0; + size_t length; + char *tooltip, *tooltipDescription, *typeDescription; + const char *baseTypeTooltipText = "This is a basetype."; + const char *isDefined = " is defined in module "; + + if ((node->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (node->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + return; + + printf(" name); + } + printf(" fill=\"%s\"", printFillColor(node->status)); + printf(" x=\"%.2f\" y=\"%.2f\">\n", + *textXOffset + ATTRSPACESIZE + 4, *textYOffset); + + *textYOffset += TABLEELEMHEIGHT; + + /* FIXME + rintf(" textLength=\"100\" lengthAdjust=\"spacingAndGlyphs\""); */ + + if (!index) { + if (node->access == SMI_ACCESS_NOT_ACCESSIBLE) { + printf(" -"); + } else { + printf(" +"); + } + } + + printf("description) { + tooltip = (char *)xmalloc(2*strlen(node->description)); + parseTooltip(node->description, tooltip); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + xfree(tooltip); + } + if (index) { + for (i=0; i\n", linkcolor); + printf(" name); + } + printf("&mibs=%s\">\n", smiGetNodeModule(node)->name); + printf(" %s:\n", node->name); + printf(" \n"); + } else { + printf(">%s:\n", node->name); + } + } else { + printf(">%s:\n", node->name); + } + } else { + printf(">%s:\n", node->name); + } + + printf(" name); + strcat(tooltip, ":\\n\\n"); + strcat(tooltip, tooltipDescription); + } else { + length = strlen(tooltipDescription) + 150; + tooltip = (char *)xmalloc(length); + strcpy(tooltip, tooltipDescription); + } + } else { + length = strlen(tooltipDescription); + tooltip = (char *)xmalloc(length); + strcpy(tooltip, tooltipDescription); + } + xfree(tooltipDescription); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + xfree(tooltip); + } else if (isBaseType(node)) { + length = strlen(baseTypeTooltipText) + 1; + tooltip = (char *)xmalloc(length); + strcpy(tooltip, baseTypeTooltipText); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + xfree(tooltip); + } + } + printf(">%s", algGetTypeName(node)); + switch (node->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", getStatusString(node->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); +} + +/* + * prints the related scalars for a given table + */ +static void printSVGRelatedScalars(GraphNode *node, SmiNode *tableNode, + int modc, SmiModule **modv, + float *textYOffset, float *textXOffset) +{ + GraphEdge *tEdge; + + for (tEdge = graphGetFirstEdgeByNode(graph, node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->startNode == node && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + + printSVGAttribute(tEdge->endNode->smiNode, tableNode, 0, + modc, modv, + textYOffset, textXOffset); + } + } +} + +/* + * prints all columns objects of the given node + */ +static void printSVGAllColumns(GraphNode *node, SmiNode *tableNode, + int modc, SmiModule **modv, + float *textYOffset, float *textXOffset) +{ + SmiModule *module = NULL; + SmiNode *smiNode = NULL; + SmiNode *ppNode; + + module = smiGetNodeModule(node->smiNode); + + for (smiNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(smiNode); + ppNode = smiGetParentNode(ppNode); + + if (!algIsIndexElement(node->smiNode, smiNode) && + cmpSmiNodes(node->smiNode, ppNode)) + printSVGAttribute(smiNode, tableNode, 0, + modc, modv, + textYOffset, textXOffset); + } +} + +/* + * adds the index to an augmenting table (row-element) + */ +static void printSVGAugmentIndex(GraphNode *tNode, SmiNode *tableNode, + int modc, SmiModule **modv, + float *textYOffset, float *textXOffset) +{ + GraphEdge *tEdge; + SmiElement *smiElement; + + for (tEdge = graphGetFirstEdgeByNode(graph, tNode); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, tNode)) { + if (tEdge->indexkind == SMI_INDEX_AUGMENT) { + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tEdge->startNode->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!cmpSmiNodes(tNode->smiNode, tEdge->startNode->smiNode)) { + printSVGAttribute(smiGetElementNode(smiElement), tableNode, + 1, modc, modv, + textYOffset, textXOffset); + } + } + } + } +} + +/* + * print "This module doesn't contain any objects" + */ +static void printNoObjects() +{ + printf(" \n"); + printf(" \n"); + printf(" This module doesn't\n"); + printf(" \n"); + printf(" \n"); + printf(" contain any objects.\n"); + printf(" \n"); +} + +/* + * print "This module only contains textual conventions" + */ +static void printOnlyTCs() +{ + printf(" \n"); + printf(" \n"); + printf(" This module only contains\n"); + printf(" \n"); + printf(" \n"); + printf(" textual conventions.\n"); + printf(" \n"); +} + +/* + * create svg-output for the given node + */ +static void printSVGObject(GraphNode *node, int *classNr, + int modc, SmiModule **modv) +{ + SmiElement *smiElement; + float textXOffset, textYOffset, xOrigin, yOrigin; + size_t length = 1; + char *tooltip, *tooltipTable, *tooltipEntry; + const char *blankLine = "\\n-- -- --\\n"; + + if (!node) return; + + xOrigin = node->dia.w/-2; + yOrigin = node->dia.h/-2; + textYOffset = yOrigin + TABLEHEIGHT + TABLEELEMHEIGHT; + textXOffset = xOrigin; + + printf(" \n", + node->dia.x + node->component->xOffset, + node->dia.y + node->component->yOffset); + printf(" smiNode->name); + printf(" x=\"%.2f\" y=\"%.2f\" width=\"%.2f\" height=\"%.2f\"\n", + xOrigin, yOrigin, node->dia.w, node->dia.h); + printf(" fill=\"white\" stroke=\"black\"/>\n"); + if (!STATIC_OUTPUT) { + printf(" \n"); + } + printf(" dia.w, yOrigin + TABLEHEIGHT); + printf(" fill=\"none\" stroke=\"black\"/>\n"); + printf(" smiNode->status)); + printf(" style=\"text-anchor:middle; font-weight:bold\""); + + /* descriptions for the table and the entries */ + if (!STATIC_OUTPUT) { + if (node->smiNode->description) { + tooltipTable=(char *)xmalloc(2*strlen(node->smiNode->description)); + parseTooltip(node->smiNode->description, tooltipTable); + } + if (smiGetFirstChildNode(node->smiNode)->description) { + tooltipEntry=(char *)xmalloc(2*strlen(smiGetFirstChildNode( + node->smiNode)->description)); + parseTooltip(smiGetFirstChildNode(node->smiNode)->description, + tooltipEntry); + } + + if (node->smiNode->description) { + length += strlen(tooltipTable); + } + if (node->smiNode->description + && smiGetFirstChildNode(node->smiNode)->description) { + length += strlen(blankLine); + } + if (smiGetFirstChildNode(node->smiNode)->description) { + length += strlen(tooltipEntry); + } + tooltip = (char *)xmalloc(length); + + strcpy(tooltip, "\0"); + if (node->smiNode->description) { + strcat(tooltip, tooltipTable); + } + if (node->smiNode->description + && smiGetFirstChildNode(node->smiNode)->description) { + strcat(tooltip, blankLine); + } + if (smiGetFirstChildNode(node->smiNode)->description) { + strcat(tooltip, tooltipEntry); + } + + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + + if (node->smiNode->description) { + xfree(tooltipTable); + } + if (smiGetFirstChildNode(node->smiNode)->description) { + xfree(tooltipEntry); + } + xfree(tooltip); + } + + printf(">\n"); + printf(" %s",smiGetFirstChildNode(node->smiNode)->name); + switch (node->smiNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", getStatusString(node->smiNode->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); + + (*classNr)++; + + if (node->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + if (node->dia.relatedScalars) { + /* A */ + printSVGRelatedScalars(node, node->smiNode, + modc, modv, + &textYOffset, &textXOffset); + + printf(" dia.w, + textYOffset - TABLEELEMHEIGHT + TABLEBOTTOMHEIGHT); + printf(" fill=\"none\" stroke=\"black\"/>\n"); + textYOffset += TABLEBOTTOMHEIGHT; + } + + if (node->dia.indexObjects) { + /* B */ + printSVGAugmentIndex(node, node->smiNode, + modc, modv, + &textYOffset, &textXOffset); + /* C */ + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(node->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + printSVGAttribute(smiGetElementNode(smiElement), node->smiNode, + 1, modc, modv, + &textYOffset, &textXOffset); + } + + printf(" dia.w, + textYOffset - TABLEELEMHEIGHT + TABLEBOTTOMHEIGHT); + printf(" fill=\"none\" stroke=\"black\"/>\n"); + textYOffset += TABLEBOTTOMHEIGHT; + } + + /* D */ + if (PRINT_DETAILED_ATTR) { + printSVGAllColumns(node, node->smiNode, + modc, modv, + &textYOffset, &textXOffset); + } + } + + printf(" \n"); +} + +/* + * prints a group of scalars denoted by group + */ +static void printSVGGroup(int group, int *classNr, + int modc, SmiModule **modv) +{ + GraphNode *tNode; + float textXOffset, textYOffset, xOrigin, yOrigin; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) break; + } + + if (!tNode) return; + + xOrigin = tNode->dia.w/-2; + yOrigin = tNode->dia.h/-2; + textYOffset = yOrigin + TABLEHEIGHT + TABLEELEMHEIGHT; + textXOffset = xOrigin; + + printf(" \n", + tNode->dia.x + tNode->component->xOffset, + tNode->dia.y + tNode->component->yOffset); + printf(" smiNode)->name); + printf(" x=\"%.2f\" y=\"%.2f\" width=\"%.2f\" height=\"%.2f\"\n", + xOrigin, yOrigin, tNode->dia.w, tNode->dia.h); + printf(" fill=\"white\" stroke=\"black\"/>\n"); + if (!STATIC_OUTPUT) { + printf(" \n"); + } + printf(" dia.w, yOrigin + TABLEHEIGHT); + printf(" fill=\"none\" stroke=\"black\"/>\n"); + printf(" smiNode)->status)); + printf(" style=\"text-anchor:middle; font-weight:bold\">\n"); + /* groups don't seem to have a description. */ + printf(" %s", smiGetParentNode(tNode->smiNode)->name); + switch (smiGetParentNode(tNode->smiNode)->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", + getStatusString(smiGetParentNode(tNode->smiNode)->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); + + (*classNr)++; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) { + printSVGAttribute(tNode->smiNode, tNode->smiNode, 0, + modc, modv, + &textYOffset, &textXOffset); + } + } + + printf(" \n"); +} + +static void calculateIntersectionPoints(GraphEdge *tEdge) +{ + float alpha, beta; + const float PI = acos(-1); + + /* calculate intersection of edge and startNode */ + alpha = atan2(tEdge->startNode->dia.y-tEdge->endNode->dia.y, + tEdge->startNode->dia.x-tEdge->endNode->dia.x); + beta = atan2(tEdge->startNode->dia.h, tEdge->startNode->dia.w); + if (alpha < 0) + alpha += PI; + if (alpha < beta + || (alpha > PI-beta && alpha < PI+beta) + || alpha > 2*PI-beta) { + /* intersection at left or right border */ + if (tEdge->startNode->dia.x < tEdge->endNode->dia.x) { + tEdge->dia.startX = tEdge->startNode->dia.x + + tEdge->startNode->dia.w/2; + } else { + tEdge->dia.startX = tEdge->startNode->dia.x - + tEdge->startNode->dia.w/2; + } + if (tEdge->startNode->dia.y < tEdge->endNode->dia.y) { + tEdge->dia.startY = tEdge->startNode->dia.y + + fabsf(tEdge->startNode->dia.w*tan(alpha)/2); + } else { + tEdge->dia.startY = tEdge->startNode->dia.y - + fabsf(tEdge->startNode->dia.w*tan(alpha)/2); + } + } else { + /* intersection at top or bottom border */ + if (tEdge->startNode->dia.y < tEdge->endNode->dia.y) { + tEdge->dia.startY = tEdge->startNode->dia.y + + tEdge->startNode->dia.h/2; + } else { + tEdge->dia.startY = tEdge->startNode->dia.y - + tEdge->startNode->dia.h/2; + } + if (tEdge->startNode->dia.x < tEdge->endNode->dia.x) { + tEdge->dia.startX = tEdge->startNode->dia.x + + fabsf(tEdge->startNode->dia.h/(2*tan(alpha))); + } else { + tEdge->dia.startX = tEdge->startNode->dia.x - + fabsf(tEdge->startNode->dia.h/(2*tan(alpha))); + } + } + + /* calculate intersection of edge and endNode */ + alpha = atan2(tEdge->startNode->dia.y-tEdge->endNode->dia.y, + tEdge->startNode->dia.x-tEdge->endNode->dia.x); + beta = atan2(tEdge->endNode->dia.h, tEdge->endNode->dia.w); + if (alpha < 0) + alpha += PI; + if (alpha < beta + || (alpha > PI-beta && alpha < PI+beta) + || alpha > 2*PI-beta) { + /* intersection at left or right border */ + if (tEdge->startNode->dia.x > tEdge->endNode->dia.x) { + tEdge->dia.endX = tEdge->endNode->dia.x + tEdge->endNode->dia.w/2; + } else { + tEdge->dia.endX = tEdge->endNode->dia.x - tEdge->endNode->dia.w/2; + } + if (tEdge->startNode->dia.y > tEdge->endNode->dia.y) { + tEdge->dia.endY = tEdge->endNode->dia.y + + fabsf(tEdge->endNode->dia.w*tan(alpha)/2); + } else { + tEdge->dia.endY = tEdge->endNode->dia.y - + fabsf(tEdge->endNode->dia.w*tan(alpha)/2); + } + } else { + /* intersection at top or bottom border */ + if (tEdge->startNode->dia.y > tEdge->endNode->dia.y) { + tEdge->dia.endY = tEdge->endNode->dia.y + tEdge->endNode->dia.h/2; + } else { + tEdge->dia.endY = tEdge->endNode->dia.y - tEdge->endNode->dia.h/2; + } + if (tEdge->startNode->dia.x > tEdge->endNode->dia.x) { + tEdge->dia.endX = tEdge->endNode->dia.x + + fabsf(tEdge->endNode->dia.h/(2*tan(alpha))); + } else { + tEdge->dia.endX = tEdge->endNode->dia.x - + fabsf(tEdge->endNode->dia.h/(2*tan(alpha))); + } + } +} + +static void printSVGDependency(GraphEdge *tEdge) +{ + int revert = 0; + + calculateIntersectionPoints(tEdge); + + /* print text upside down, if angle is between 180� and 360� */ + if (tEdge->startNode->dia.x > tEdge->endNode->dia.x) + revert = 1; + + printf(" startNode->smiNode->name, + tEdge->endNode->smiNode->name); + if (!revert) { + printf(" d=\"M %.2f %.2f %.2f %.2f\"\n", + tEdge->dia.startX + tEdge->startNode->component->xOffset, + tEdge->dia.startY + tEdge->startNode->component->yOffset, + tEdge->dia.endX + tEdge->endNode->component->xOffset, + tEdge->dia.endY + tEdge->endNode->component->yOffset); + } else { + printf(" d=\"M %.2f %.2f %.2f %.2f\"\n", + tEdge->dia.endX + tEdge->endNode->component->xOffset, + tEdge->dia.endY + tEdge->endNode->component->yOffset, + tEdge->dia.startX + tEdge->startNode->component->xOffset, + tEdge->dia.startY + tEdge->startNode->component->yOffset); + } + printf(" stroke-dasharray=\"10, 10\" stroke=\"black\""); + if (!revert) { + printf(" marker-end=\"url(#arrowend)\"/>\n"); + } else { + printf(" marker-start=\"url(#arrowstart)\"/>\n"); + } +} + +/* + * Aggregation is a special case of the association. + * If aggregate = 1 it is an aggregation if 0 it is an association. + */ +static void printSVGAssociation(GraphEdge *tEdge, int aggregate) +{ + int revert = 0; + + if (aggregate > 1) aggregate = 1; + if (aggregate < 0) aggregate = 0; + + calculateIntersectionPoints(tEdge); + + /* expands should have cardinalities 1 * */ + if (tEdge->indexkind==SMI_INDEX_EXPAND) + tEdge->cardinality = GRAPH_CARD_ONE_TO_MANY; + + /* print text upside down, if angle is between 180� and 360� */ + if (tEdge->startNode->dia.x > tEdge->endNode->dia.x) + revert = 1; + + /* print edge */ + printf(" startNode->smiNode->name, + tEdge->endNode->smiNode->name); + if (!revert) { + printf(" d=\"M %.2f %.2f %.2f %.2f\"\n", + tEdge->dia.startX + tEdge->startNode->component->xOffset, + tEdge->dia.startY + tEdge->startNode->component->yOffset, + tEdge->dia.endX + tEdge->endNode->component->xOffset, + tEdge->dia.endY + tEdge->endNode->component->yOffset); + } else { + printf(" d=\"M %.2f %.2f %.2f %.2f\"\n", + tEdge->dia.endX + tEdge->endNode->component->xOffset, + tEdge->dia.endY + tEdge->endNode->component->yOffset, + tEdge->dia.startX + tEdge->startNode->component->xOffset, + tEdge->dia.startY + tEdge->startNode->component->yOffset); + } + printf(" stroke=\"black\""); + if (tEdge->indexkind==SMI_INDEX_AUGMENT || + tEdge->indexkind==SMI_INDEX_SPARSE || + tEdge->indexkind==SMI_INDEX_EXPAND) { + if (!revert) { + printf(" marker-start=\"url(#arrowstart)\""); + } else { + printf(" marker-end=\"url(#arrowend)\""); + } + } else if (tEdge->indexkind==SMI_INDEX_REORDER) { + printf(" marker-start=\"url(#arrowstart)\""); + printf(" marker-end=\"url(#arrowend)\""); + } + printf("/>\n"); + + /* edges without labels are finished here */ + if (tEdge->cardinality==GRAPH_CARD_UNKNOWN) + return; + + /* print labels */ + printf(" \n"); + printf(" startNode->smiNode->name, tEdge->endNode->smiNode->name); + if (!revert) { + printf(" startOffset=\"10%%\">\n"); + } else { + printf(" startOffset=\"90%%\">\n"); + } + switch (tEdge->cardinality) { + case GRAPH_CARD_ZERO_TO_ONE: + case GRAPH_CARD_ZERO_TO_MANY: + printf(" 0"); + break; + case GRAPH_CARD_ONE_TO_ONE: + case GRAPH_CARD_ONE_TO_MANY: + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE: + printf(" 1"); + break; + case GRAPH_CARD_UNKNOWN: + ; + } + printf("\n"); + printf(" \n"); + + if (tEdge->indexkind==SMI_INDEX_AUGMENT || + tEdge->indexkind==SMI_INDEX_SPARSE || + tEdge->indexkind==SMI_INDEX_REORDER || + tEdge->indexkind==SMI_INDEX_EXPAND) { + printf(" \n"); + printf(" \n", + tEdge->startNode->smiNode->name, tEdge->endNode->smiNode->name); + } + switch(tEdge->indexkind) { + case SMI_INDEX_AUGMENT: + printf(" augments"); + break; + case SMI_INDEX_SPARSE: + printf(" sparsly augments"); + break; + case SMI_INDEX_REORDER: + printf(" reorders"); + break; + case SMI_INDEX_EXPAND: + printf(" expands"); + break; + case SMI_INDEX_UNKNOWN: + case SMI_INDEX_INDEX: + ; + } + if (tEdge->indexkind==SMI_INDEX_AUGMENT || + tEdge->indexkind==SMI_INDEX_SPARSE || + tEdge->indexkind==SMI_INDEX_REORDER || + tEdge->indexkind==SMI_INDEX_EXPAND) { + printf("\n"); + printf(" \n"); + } + + printf(" \n"); + printf(" startNode->smiNode->name, tEdge->endNode->smiNode->name); + if (!revert) { + printf(" startOffset=\"90%%\">\n"); + } else { + printf(" startOffset=\"10%%\">\n"); + } + switch (tEdge->cardinality) { + case GRAPH_CARD_ONE_TO_ONE: + case GRAPH_CARD_ZERO_TO_ONE: + printf(" 1"); + break; + case GRAPH_CARD_ONE_TO_MANY: + case GRAPH_CARD_ZERO_TO_MANY: + printf(" *"); + break; + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE: + printf(" 0..1"); + break; + case GRAPH_CARD_UNKNOWN: + ; + } + printf("\n"); + printf(" \n"); +} + +static void printSVGConnection(GraphEdge *tEdge) +{ + switch (tEdge->connection) { + case GRAPH_CON_UNKNOWN: + break; + case GRAPH_CON_AGGREGATION : /* never used??? */ + printSVGAssociation(tEdge,1); + break; + case GRAPH_CON_DEPENDENCY : + printSVGDependency(tEdge); + break; + case GRAPH_CON_ASSOCIATION : + printSVGAssociation(tEdge,0); + break; + } +} + +/* + * Prints the title of the SVG output file (Modulename and smidump version). + * TODO + * Print title somewhere into the SVG. + * Make size of SVG configurable. + */ +static void printSVGHeaderAndTitle(int modc, SmiModule **modv, + int miCount, int idCount, + float xMin, float yMin, + float xMax, float yMax) +{ + size_t length1; + char *note1; + int i; + const char *s11 = "Conceptual model of "; + const char *s12 = "- generated by smidump " SMI_VERSION_STRING; + float scale; + + scale = max((xMax-xMin)/CANVASWIDTH,(yMax-yMin)/CANVASHEIGHT); + + /* + * Calculate the length of the string... + */ + + length1 = strlen(s11) + strlen(s12) + 1; + for (i = 0; i < modc; i++) { + length1 += strlen(modv[i]->name) + 1; + } + + /* + * ... before allocating a buffer and putting the string together. + */ + + note1 = xmalloc(length1); + strcpy(note1, s11); + for (i = 0; i < modc; i++) { + strcat(note1, modv[i]->name); + strcat(note1, " "); + } + strcat(note1, s12); + + printf("\n"); + printf("\n"); + printf("\n\n"); + + if (!STATIC_OUTPUT) { + /* css-stylesheet for the tooltip-text */ + printf("\n\n"); + + /* the ecma-script for the tooltip */ + /* and the folding of the module information */ + /* and the colorizing of the text */ + printf("\n\n"); + } + + printf(" %s\n", note1); + + /* definitions for the arrowheads */ + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n"); + printf(" \n\n"); + + xfree(note1); +} + +/* + * Calculates the size of a given node for the UML representation. + * + * FIXME this algorithm may work good for a monospace-font. we have some + * problems with the proportional-font. :-( + */ +static GraphNode *calcNodeSize(GraphNode *node, int *idCount) +{ + GraphEdge *tEdge; + SmiNode *tNode,*ppNode; + SmiElement *smiElement; + SmiModule *module; + float lastHeight; + int stringlen; + + if (node->smiNode->nodekind == SMI_NODEKIND_SCALAR) return node; + + node->use = 1; + node->dia.x = (float) rand(); + node->dia.y = (float) rand(); + node->dia.x /= (float) RAND_MAX; + node->dia.y /= (float) RAND_MAX; + node->dia.w = strlen(node->smiNode->name) * HEADFONTSIZETABLE + + HEADSPACESIZETABLE; + node->dia.h = TABLEHEIGHT + TABLEBOTTOMHEIGHT; + + lastHeight = node->dia.h; + /* A */ + for (tEdge = graphGetFirstEdgeByNode(graph,node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->startNode == node && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + + tNode = tEdge->endNode->smiNode; + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + stringlen = strlen(tNode->name) + strlen(algGetTypeName(tNode)) +2; + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + stringlen += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + node->dia.w = max(node->dia.w, stringlen + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + node->dia.h += TABLEELEMHEIGHT; + (*idCount)++; + } + } + if (node->dia.h > lastHeight) { + node->dia.relatedScalars = 1; + node->dia.h += TABLEBOTTOMHEIGHT; + } + + lastHeight = node->dia.h; + /* B */ + for (tEdge = graphGetFirstEdgeByNode(graph,node); + tEdge; + tEdge = graphGetNextEdgeByNode(graph, tEdge, node)) { + if (tEdge->indexkind == SMI_INDEX_AUGMENT) { + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tEdge->startNode->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + if (!cmpSmiNodes(node->smiNode, tEdge->startNode->smiNode)) { + + tNode = smiGetElementNode(smiElement); + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + stringlen = strlen(tNode->name) + + strlen(algGetTypeName(tNode)) +3; + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + stringlen += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + node->dia.w = max(node->dia.w, stringlen + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + node->dia.h += TABLEELEMHEIGHT; + } + } + } + } + + /* C */ + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(node->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + tNode = smiGetElementNode(smiElement); + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + stringlen = strlen(tNode->name) + strlen(algGetTypeName(tNode)) +3; + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + stringlen += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + node->dia.w = max(node->dia.w, stringlen + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + node->dia.h += TABLEELEMHEIGHT; + } + if (node->dia.h > lastHeight) { + node->dia.indexObjects = 1; + node->dia.h += TABLEBOTTOMHEIGHT; + } + + /* D */ + if (PRINT_DETAILED_ATTR && node->smiNode->nodekind == SMI_NODEKIND_TABLE) { + module = smiGetNodeModule(node->smiNode); + + for (tNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + tNode; + tNode = smiGetNextNode(tNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(tNode); + ppNode = smiGetParentNode(ppNode); + + if (cmpSmiNodes(node->smiNode, ppNode)) { + int len; + char *typeName; + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + typeName = algGetTypeName(tNode); + len = strlen(tNode->name) + (typeName ? strlen(typeName)+2 : 1); + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + len += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + node->dia.w = max(node->dia.w, len + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + node->dia.h += TABLEELEMHEIGHT; + (*idCount)++; + } + } + } + + return node; +} + +/* + * Calculates the size of a group-node for the UML representation. + */ +static GraphNode *calcGroupSize(int group, int *idCount) +{ + GraphNode *calcNode, *node; + SmiNode *tNode; + int stringlen; + + for (calcNode = graph->nodes; calcNode; calcNode = calcNode->nextPtr) { + if (calcNode->group == group) break; + } + + if (!calcNode) return NULL; + + calcNode->use = 1; + calcNode->dia.w = strlen(calcNode->smiNode->name) * HEADFONTSIZETABLE + + HEADSPACESIZETABLE; + calcNode->dia.h = TABLEHEIGHT + TABLEBOTTOMHEIGHT; + + for (node = graph->nodes; node; node = node->nextPtr) { + if (node->group == group) { + tNode = node->smiNode; + + if ((tNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (tNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + + stringlen = strlen(tNode->name) + strlen(algGetTypeName(tNode)) +2; + switch (tNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + stringlen += strlen(getStatusString(tNode->status)) +3; + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + calcNode->dia.w = max(calcNode->dia.w, stringlen + * ATTRFONTSIZE + + ATTRSPACESIZE + 5); + calcNode->dia.h += TABLEELEMHEIGHT; + (*idCount)++; + } + } + + return calcNode; +} + + +/* ------------------------------------------------------------------------- */ + + + +static int invalidType(SmiBasetype basetype) +{ + return (basetype == SMI_BASETYPE_FLOAT32) + || (basetype == SMI_BASETYPE_FLOAT64) + || (basetype == SMI_BASETYPE_FLOAT128); +} + +static int countTCs(int modc, SmiModule **modv) +{ + SmiType *smiType; + int i, invalid, j = 0; + + for (i=0; istatus != SMI_STATUS_UNKNOWN) { + invalid = invalidType(smiType->basetype); + if (!invalid) { + j++; + } + } + } + } + + return j; +} + + +static void calcModuleIdentityCount(int modc, SmiModule **modv, + int *miCount, int modId[]) +{ + int i; + SmiNode *smiNode; + SmiRevision *smiRevision; + + /* MODULE-IDENTITY */ + (*miCount)++; + for (i = 0; i < modc; i++) { + modId[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + modId[i] = 1; + /* revision history of the module */ + smiRevision = smiGetFirstRevision(modv[i]); + if (!smiRevision) { + (*miCount)++; + } else { + for(; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + (*miCount)++; + } + } + } + } +} + +static void calcNotificationTypeCount(int modc, SmiModule **modv, + int *miCount, int nType[]) +{ + int i; + SmiNode *smiNode; + + /* NOTIFICATION-TYPE */ + (*miCount)++; + for (i = 0; i < modc; i++) { + nType[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + /* name of the notification */ + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + (*miCount)++; + nType[i] = 1; + } + } + } +} + +static void calcObjectGroupCount(int modc, SmiModule **modv, + int *miCount, int oGroup[]) +{ + int i; + SmiNode *smiNode; + + /* OBJECT-GROUP */ + (*miCount)++; + for (i = 0; i < modc; i++) { + oGroup[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + /* name of the group */ + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (!isObjectGroup(smiNode)) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + (*miCount)++; + oGroup[i] = 1; + } + } + } +} + +static void calcNotificationGroupCount(int modc, SmiModule **modv, + int *miCount, int nGroup[]) +{ + int i; + SmiNode *smiNode; + + /* NOTIFICATION-GROUP */ + (*miCount)++; + for (i = 0; i < modc; i++) { + nGroup[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + /* name of the group */ + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (!isNotificationGroup(smiNode)) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + (*miCount)++; + nGroup[i] = 1; + } + } + } +} + +static void calcModuleComplianceCount(int modc, SmiModule **modv, + int *miCount, int mCompl[]) +{ + int i; + char *done = NULL; + char s[1024]; + char *module; + SmiNode *smiNode, *smiNode2; + SmiModule *smiModule2; + SmiElement *smiElement; + SmiOption *smiOption; + SmiRefinement *smiRefinement; + + /* MODULE-COMPLIANCE */ + (*miCount)++; + for (i = 0; i < modc; i++) { + mCompl[i] = 0; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + /* name of the module */ + (*miCount)++; + /* name of the compliance */ + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + (*miCount)++; + mCompl[i] = 1; + /* modules for the compliance */ + done = xstrdup("+"); + for (module = modv[i]->name; module; ) { + /* name of the module */ + (*miCount)++; + /* mandatory groups */ + (*miCount)++; + /* groups */ + for (smiOption = smiGetFirstOption(smiNode); smiOption; + smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + (*miCount)++; + } + } + /* objects */ + for (smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiNode2 = smiGetRefinementNode(smiRefinement); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + (*miCount)++; + } + } + /* find next module */ + done = xrealloc(done, + strlen(done)+strlen(module)+2*sizeof(char)); + strcat(done, module); + strcat(done, "+"); + module = NULL; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + sprintf(s, "+%s+", smiGetNodeModule(smiGetElementNode( + smiElement))->name); + if ((!strstr(done, s))) { + module = smiGetNodeModule(smiGetElementNode( + smiElement))->name; + break; + } + } + } + xfree(done); + } + } + } +} + +/* + * calculate the number of entries in the module-information-section. + * headings for empty sections are counted here, but they are omitted + * in the svg, so the calculated number is an upper bound. the maximal + * size of this gap is 4*(modc+1). this may be considered as a bug. + */ +static void prepareModInfo(int modc, SmiModule **modv, int *miCount, + int modId[], int nType[], int oGroup[], int nGroup[], int mCompl[]) +{ + calcModuleIdentityCount(modc, modv, miCount, modId); + calcNotificationTypeCount(modc, modv, miCount, nType); + calcObjectGroupCount(modc, modv, miCount, oGroup); + calcNotificationGroupCount(modc, modv, miCount, nGroup); + calcModuleComplianceCount(modc, modv, miCount, mCompl); +} + + +/* ------------------------------------------------------------------------- */ + +static void populateMarkupList(SmiNode *smiNode, int *miNr, + StringListElem markupList[], int miCount) +{ + int i; + SmiElement *smiElement; + StringListElem *lastElem; + StringListElem *tElem; + StringListElem *newElem; + StringListElem *cloneElem; + + markupList[*miNr].miElem = smiNode->name; + markupList[*miNr].status = smiNode->status; + markupList[*miNr].nextPtr = NULL; + + for (smiElement = smiGetFirstElement(smiNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + + newElem = xmalloc(sizeof(StringListElem)); + memset(newElem, 0, sizeof(StringListElem)); + newElem->miElem = smiGetElementNode(smiElement)->name; + newElem->status = smiGetElementNode(smiElement)->status; + + if (markupList[*miNr].nextPtr == NULL) { + markupList[*miNr].nextPtr = newElem; + } else { + for (tElem = markupList[*miNr].nextPtr; + tElem; tElem = tElem->nextPtr) { + lastElem = tElem; + } + lastElem->nextPtr = newElem; + } + if (isNotificationGroup(smiNode)) { + for (i=0; imiElem) + continue; + for (tElem = markupList[i].nextPtr; + tElem; tElem = tElem->nextPtr) { + cloneElem = xmalloc(sizeof(StringListElem)); + memcpy(cloneElem, tElem, sizeof(StringListElem)); + newElem->nextPtr = cloneElem; + newElem = newElem->nextPtr; + } + } + } + } +} + +static void printInformationNode(SmiNode *smiNode, + float *x, float *y, int *miNr, + StringListElem markupList[], int miCount) +{ + int j, k; + char *tooltip; + SmiElement *smiElement; + StringListElem *tElem; + + printf(" \n", *x, *y); + printf(" name); + printf(" fill=\"%s\"", printFillColor(smiNode->status)); + + if (!STATIC_OUTPUT) { + smiElement = smiGetFirstElement(smiNode); + if (smiElement || smiNode->description) { + printf(" onmousemove=\""); + } + if (smiNode->description) { + tooltip = (char *)xmalloc(2*strlen(smiNode->description)); + parseTooltip(smiNode->description, tooltip); + printf("ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + } + if (smiElement && smiNode->description) { + printf(";"); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + printf(";"); + } + printf("colorText('%s','red')", + smiGetElementNode(smiElement)->name); + if (isNotificationGroup(smiNode)) { + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s','red')", tElem->miElem); + } + } + } + } + if (j || smiNode->description) { + printf("\""); + } + + smiElement = smiGetFirstElement(smiNode); + if (smiElement) { + printf(" onclick=\"setStatus(evt,'red','%s')", + printFillColor(smiNode->status)); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + printf(";changeColor(evt,'%s','red','%s')", + smiGetElementNode(smiElement)->name, + printFillColor(smiGetElementNode(smiElement)->status)); + if (isNotificationGroup(smiNode)) { + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";changeColor(evt,'%s','red','%s')", + tElem->miElem, printFillColor(tElem->status)); + } + } + } + } + if (j) { + printf("\""); + } + + smiElement = smiGetFirstElement(smiNode); + if (smiElement || smiNode->description) { + printf(" onmouseout=\""); + } + if (smiNode->description) { + printf("HideTooltip(evt)"); + } + if (smiElement && smiNode->description) { + printf(";"); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + printf(";"); + } + printf("colorText('%s',", smiGetElementNode(smiElement)->name); + printf("'%s')", + printFillColor(smiGetElementNode(smiElement)->status)); + if (isNotificationGroup(smiNode)) { + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s',", tElem->miElem); + printf("'%s')", printFillColor(tElem->status)); + } + } + } + } + if (j || smiNode->description) { + printf("\""); + } + } + + printf(">%s", smiNode->name); + switch (smiNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", getStatusString(smiNode->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; +} + +static void printComplianceNode(SmiNode *smiNode, int modc, SmiModule **modv, + float *x, float *y, int *miNr, int i, + StringListElem markupList[], int miCount) +{ + int j, k, foreign_exists, textColor = 0; + char *tooltip; + char *done = NULL; + char s[1024]; + char *module; + SmiNode *smiNode2; + SmiModule *smiModule2; + SmiElement *smiElement; + /* SmiRevision *smiRevision; */ + SmiOption *smiOption; + SmiRefinement *smiRefinement; + StringListElem *tElem; + + printf(" \n", *x, *y); + printf(" status) { + case SMI_STATUS_DEPRECATED: + printf(" fill=\"rgb(40%%,40%%,40%%)\""); + textColor = 40; + break; + case SMI_STATUS_OBSOLETE: + printf(" fill=\"rgb(60%%,60%%,60%%)\""); + textColor = 60; + break; + case SMI_STATUS_CURRENT: + case SMI_STATUS_MANDATORY: + printf(" fill=\"rgb(0%%,0%%,0%%)\""); + textColor = 0; + break; + case SMI_STATUS_OPTIONAL: + printf(" fill=\"rgb(20%%,20%%,20%%)\""); + textColor = 20; + break; + case SMI_STATUS_UNKNOWN: + ; + } + printf(">\n"); + + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" description) { + tooltip = (char *)xmalloc(2*strlen(smiNode->description)); + parseTooltip(smiNode->description, tooltip); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + printf("\" onmouseout=\"HideTooltip(evt)\""); + } + printf(">%s", smiNode->name); + switch (smiNode->status) { + case SMI_STATUS_DEPRECATED: + case SMI_STATUS_OBSOLETE: + printf(" (%s)", getStatusString(smiNode->status)); + case SMI_STATUS_MANDATORY: + case SMI_STATUS_OPTIONAL: + case SMI_STATUS_CURRENT: + case SMI_STATUS_UNKNOWN: + ; + } + printf("\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + + /* modules for the compliance */ + *x += TABLEELEMHEIGHT; + done = xstrdup("+"); + for (module = modv[i]->name; module; ) { + foreign_exists = 0; + if (module == modv[i]->name) { + foreign_exists = 1; + } else { + for (j = 0; j < modc; j++) { + if (module == modv[j]->name) { + foreign_exists = 1; + break; + } + } + } + printf(" \n", *x, *y); + printf(" \n", + textColor, textColor, textColor); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + if (!foreign_exists && !STATIC_OUTPUT) { + printf(" \n", linkcolor); + printf(" name); + } + printf("&mibs=%s\">", module); + printf("%s", module); + printf("\n"); + printf(" \n"); + } else { + printf(" %s\n", module); + } + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + + /* mandatory groups */ + *x += TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + printf(" \n", *x, *y); + printf(" name, module); + printf(" fill=\"rgb(%i%%,%i%%,%i%%)\"", + textColor, textColor, textColor); + if (!STATIC_OUTPUT && foreign_exists) { + smiElement = smiGetFirstElement(smiNode); + if (smiElement) { + printf(" onmousemove=\""); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode( + smiElement))->name, module)) { + if (j) { + printf(";"); + } + printf("colorText('%s','red')", + smiGetElementNode(smiElement)->name); + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s','red')", tElem->miElem); + } + } + } + } + if (j) { + printf("\""); + } + + smiElement = smiGetFirstElement(smiNode); + if (smiElement) { + printf(" onclick=\"setStatus(evt,'red','%s')", + printFillColor(smiNode->status)); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode( + smiElement))->name, module)) { + printf(";changeColor(evt,'%s','red','%s')", + smiGetElementNode(smiElement)->name, + printFillColor(smiGetElementNode(smiElement)->status)); + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";changeColor(evt,'%s','red','%s')", + tElem->miElem, printFillColor(tElem->status)); + } + } + } + } + if (j) { + printf("\""); + } + + smiElement = smiGetFirstElement(smiNode); + if (smiElement) { + printf(" onmouseout=\""); + } + for (j = 0; smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (!strcmp(smiGetNodeModule(smiGetElementNode( + smiElement))->name, module)) { + if (j) { + printf(";"); + } + printf("colorText('%s',", + smiGetElementNode(smiElement)->name); + printf("'%s')", + printFillColor(smiGetElementNode(smiElement)->status)); + /* parse markupList */ + for (k=0; kname) + continue; + for (tElem = markupList[k].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s',", tElem->miElem); + printf("'%s')", printFillColor(tElem->status)); + } + } + } + } + if (j) { + printf("\""); + } + } + printf(">Mandatory Groups\n"); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; + + /* groups */ + for (smiOption = smiGetFirstOption(smiNode); smiOption; + smiOption = smiGetNextOption(smiOption)) { + smiNode2 = smiGetOptionNode(smiOption); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + printf(" \n", *x, *y); + printf(" name, smiNode2->name, module); + printf(" fill=\"rgb(%i%%,%i%%,%i%%)\"", + textColor, textColor, textColor); + if (!STATIC_OUTPUT) { + printf(" onmousemove=\""); + if (smiOption->description) { + tooltip = (char *)xmalloc(2*strlen( + smiOption->description)); + parseTooltip(smiOption->description, tooltip); + printf("ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + } + if (smiOption->description && foreign_exists) + printf(";"); + if (foreign_exists) { + printf("colorText('%s','salmon')", smiNode2->name); + /* parse markupList */ + for (j=0; jname) + continue; + for (tElem = markupList[j].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s','salmon')", + tElem->miElem); + } + } + } + + if (foreign_exists) { + printf("\" onclick=\"setStatus(evt,'salmon','%s')", + printFillColor(smiNode2->status)); + printf(";changeColor(evt,'%s','salmon','%s')", + smiNode2->name, printFillColor(smiNode2->status)); + /* parse markupList */ + for (j=0; jname) + continue; + for (tElem = markupList[j].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";changeColor(evt,'%s','salmon','%s')", + tElem->miElem, + printFillColor(tElem->status)); + } + } + } + + printf("\" onmouseout=\""); + if (smiOption->description) { + printf("HideTooltip(evt)"); + } + if (smiOption->description && foreign_exists) + printf(";"); + if (foreign_exists) { + printf("colorText('%s',", smiNode2->name); + printf("'%s')", printFillColor(smiNode2->status)); + /* parse markupList */ + for (j=0; jname) + continue; + for (tElem = markupList[j].nextPtr; + tElem; tElem = tElem->nextPtr) { + printf(";colorText('%s',", tElem->miElem); + printf("'%s')", printFillColor(tElem->status)); + } + } + } + printf("\""); + } + printf(">Group %s\n", smiNode2->name); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; + } + } + + /* objects */ + for (smiRefinement = smiGetFirstRefinement(smiNode); smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiNode2 = smiGetRefinementNode(smiRefinement); + smiModule2 = smiGetNodeModule(smiNode2); + if (!strcmp(smiModule2->name, module)) { + printf(" \n", *x, *y); + printf(" name, smiNode2->name, module); + printf(" fill=\"rgb(%i%%,%i%%,%i%%)\"", + textColor, textColor, textColor); + if (!STATIC_OUTPUT) { + printf(" onmousemove=\""); + if (smiRefinement->description) { + tooltip = (char *)xmalloc(2*strlen( + smiRefinement->description)); + parseTooltip(smiRefinement->description, tooltip); + printf("ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + } + if (smiRefinement->description && foreign_exists) + printf(";"); + if (foreign_exists) + printf("colorText('%s','salmon')", smiNode2->name); + + if (foreign_exists) { + printf("\" onclick=\"setStatus(evt,'salmon','%s')", + printFillColor(smiNode2->status)); + printf(";changeColor(evt,'%s','salmon','%s')", + smiNode2->name, printFillColor(smiNode2->status)); + } + + printf("\" onmouseout=\""); + if (smiRefinement->description) { + printf("HideTooltip(evt)"); + } + if (smiRefinement->description && foreign_exists) + printf(";"); + if (foreign_exists) { + printf("colorText('%s',", smiNode2->name); + printf("'%s')", printFillColor(smiNode2->status)); + } + printf("\""); + } + printf(">Object %s\n", smiNode2->name); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; + } + } + *x -= TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + + /* find next module */ + done = xrealloc(done, strlen(done)+strlen(module)+2*sizeof(char)); + strcat(done, module); + strcat(done, "+"); + module = NULL; + for (smiElement = smiGetFirstElement(smiNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + sprintf(s, "+%s+", smiGetNodeModule(smiGetElementNode( + smiElement))->name); + if ((!strstr(done, s))) { + module = smiGetNodeModule(smiGetElementNode(smiElement))->name; + break; + } + } + } + xfree(done); + *x -= TABLEELEMHEIGHT; +} + +static void printModuleIdentity(int modc, SmiModule **modv, + float *x, float *y, int *miNr) +{ + int i, j; + char *tooltip; + SmiNode *smiNode; + /* SmiElement *smiElement; */ + SmiRevision *smiRevision; + GraphNode *tNode; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Modules\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name and description of the module. */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" description || modc > 1) { + printf(" onmousemove=\""); + } + if (modv[i]->description) { + tooltip = (char *)xmalloc(2*strlen(modv[i]->description)); + parseTooltip(modv[i]->description, tooltip); + printf("ShowTooltipMZ(evt,'%s')", tooltip); + xfree(tooltip); + } + if (modv[i]->description && modc > 1) { + printf(";"); + } + if (modc > 1) { + j = 0; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiModule == modv[i] && tNode->use) { + if (j) { + printf(";"); + } + if (tNode->group == 0) { + printf("colorText('%s','blanchedalmond')", + tNode->smiNode->name); + } else { + printf("colorText('%s','blanchedalmond')", + smiGetParentNode(tNode->smiNode)->name); + } + j++; + } + } + } + if (modv[i]->description || modc > 1) { + printf("\" onmouseout=\""); + } + if (modv[i]->description) { + printf("HideTooltip(evt)"); + } + if (modv[i]->description && modc > 1) { + printf(";"); + } + if (modc > 1) { + j = 0; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiModule == modv[i] && tNode->use) { + if (j) { + printf(";"); + } + if (tNode->group == 0) { + printf("colorText('%s','white')", + tNode->smiNode->name); + } else { + printf("colorText('%s','white')", + smiGetParentNode(tNode->smiNode)->name); + } + j++; + } + } + } + if (modv[i]->description || modc > 1) { + printf("\""); + } + } + printf(">%s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* revision history of the module. */ + *x += 2*TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + smiRevision = smiGetFirstRevision(modv[i]); + if (!smiRevision) { + printf(" \n", + *miNr, *x, *y); + printf(" 1970-01-01\n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + } else { + for(; smiRevision; + smiRevision = smiGetNextRevision(smiRevision)) { + printf(" \n", *x, *y); + printf(" description && strcmp( + smiRevision->description, + "[Revision added by libsmi due to a LAST-UPDATED clause.]")) { + tooltip = (char *)xmalloc(2* + strlen(smiRevision->description)); + parseTooltip(smiRevision->description, tooltip); + printf(" onmousemove=\"ShowTooltipMZ(evt,'%s')\"", + tooltip); + printf(" onmouseout=\"HideTooltip(evt)\""); + xfree(tooltip); + } + printf(">%s\n", getTimeString(smiRevision->date)); + printf(" \n"); + *y += TABLEELEMHEIGHT; + (*miNr)++; + } + } + *x -= 2*TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printNotificationType(int modc, SmiModule **modv, + float *x, float *y, int *miNr, int nType[], + StringListElem markupList[], int miCount) +{ + int i, j; + SmiNode *smiNode; + int statusOrder[5] = { + SMI_STATUS_CURRENT, + SMI_STATUS_MANDATORY, + SMI_STATUS_OPTIONAL, + SMI_STATUS_DEPRECATED, + SMI_STATUS_OBSOLETE + }; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Notifications\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + if (!nType[i]) + continue; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name of the module */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" %s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* name, status and description of the notification */ + *x += 2*TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + for (j=0; j<5; j++) { + for (smiNode = smiGetFirstNode(modv[i], + SMI_NODEKIND_NOTIFICATION); + smiNode; + smiNode = smiGetNextNode(smiNode, + SMI_NODEKIND_NOTIFICATION)) { + if (smiNode->status != statusOrder[j]) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + if (!STATIC_OUTPUT) + populateMarkupList(smiNode, miNr, markupList, miCount); + printInformationNode(smiNode, x, y, miNr, + markupList, miCount); + } + } + *x -= 2*TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printObjectGroup(int modc, SmiModule **modv, + float *x, float *y, int *miNr, int oGroup[], + StringListElem markupList[], int miCount) +{ + int i, j; + SmiNode *smiNode; + int statusOrder[5] = { + SMI_STATUS_CURRENT, + SMI_STATUS_MANDATORY, + SMI_STATUS_OPTIONAL, + SMI_STATUS_DEPRECATED, + SMI_STATUS_OBSOLETE + }; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Object Groups\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + if (!oGroup[i]) + continue; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name of the module */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" %s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* name, status and description of the group */ + *x += 2*TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + for (j=0; j<5; j++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (!isObjectGroup(smiNode)) + continue; + if (smiNode->status != statusOrder[j]) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + if (!STATIC_OUTPUT) + populateMarkupList(smiNode, miNr, markupList, miCount); + printInformationNode(smiNode, x, y, miNr, + markupList, miCount); + } + } + *x -= 2*TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printNotificationGroup(int modc, SmiModule **modv, + float *x, float *y, int *miNr, int nGroup[], + StringListElem markupList[], int miCount) +{ + int i, j; + SmiNode *smiNode; + int statusOrder[5] = { + SMI_STATUS_CURRENT, + SMI_STATUS_MANDATORY, + SMI_STATUS_OPTIONAL, + SMI_STATUS_DEPRECATED, + SMI_STATUS_OBSOLETE + }; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Notification Groups\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + if (!nGroup[i]) + continue; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name of the module */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" %s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* name, status and description of the group */ + *x += 2*TABLEELEMHEIGHT; + *x += TABLEBOTTOMHEIGHT; + for (j=0; j<5; j++) { + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_GROUP); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + if (!isNotificationGroup(smiNode)) + continue; + if (smiNode->status != statusOrder[j]) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + if (!STATIC_OUTPUT) + populateMarkupList(smiNode, miNr, markupList, miCount); + printInformationNode(smiNode, x, y, miNr, + markupList, miCount); + } + } + *x -= 2*TABLEELEMHEIGHT; + *x -= TABLEBOTTOMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printModuleCompliance(int modc, SmiModule **modv, + float *x, float *y, int *miNr, int mCompl[], + StringListElem markupList[], int miCount) +{ + int i, j; + SmiNode *smiNode; + int statusOrder[5] = { + SMI_STATUS_CURRENT, + SMI_STATUS_MANDATORY, + SMI_STATUS_OPTIONAL, + SMI_STATUS_DEPRECATED, + SMI_STATUS_OBSOLETE + }; + + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" Compliance Statements\n"); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + for (i = 0; i < modc; i++) { + if (!mCompl[i]) + continue; + smiNode = smiGetModuleIdentityNode(modv[i]); + if (smiNode) { + + /* name of the module */ + *x += TABLEELEMHEIGHT; + printf(" \n", + *miNr, *x, *y); + printf(" \n"); + if (!STATIC_OUTPUT) { + printf(" --\n"); + } + printf(" %s\n", modv[i]->name); + printf(" \n"); + printf(" \n"); + (*miNr)++; + *y += TABLEELEMHEIGHT; + *x -= TABLEELEMHEIGHT; + + /* name, status and description of the compliance */ + *x += 2*TABLEELEMHEIGHT; + for (j=0; j<5; j++) { + for (smiNode = smiGetFirstNode(modv[i], + SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, + SMI_NODEKIND_COMPLIANCE)) { + if (smiNode->status != statusOrder[j]) + continue; + if ((smiNode->status == SMI_STATUS_DEPRECATED + && !SHOW_DEPRECATED && !SHOW_DEPR_OBSOLETE) + || (smiNode->status == SMI_STATUS_OBSOLETE + && !SHOW_DEPR_OBSOLETE)) + continue; + printComplianceNode(smiNode, modc, modv, x, y, miNr, i, + markupList, miCount); + } + } + *x -= 2*TABLEELEMHEIGHT; + } + } + *y += TABLEELEMHEIGHT; +} + +static void printModuleInformation(int modc, SmiModule **modv, + float x, float y, float maxHeight, + int modId[], int nType[], int oGroup[], + int nGroup[], int mCompl[], int miCount) +{ + int i, j, miNr = 0; + float scale = 1, miHeight; + int modIdPrint = 0; + int nTypePrint = 0, oGroupPrint = 0, nGroupPrint = 0, mComplPrint = 0; + + StringListElem *markupList = xcalloc(miCount,sizeof(StringListElem)); + + /* only print sections containig information */ + for (i = 0; i < modc; i++) { + modIdPrint |= modId[i]; + nTypePrint |= nType[i]; + oGroupPrint |= oGroup[i]; + nGroupPrint |= nGroup[i]; + mComplPrint |= mCompl[i]; + } + + /* count blank lines */ + i = 0; + j = 0; + if (modIdPrint) { + i++; + } else { + j++; + } + if (nTypePrint) { + i++; + } else { + j++; + } + if (oGroupPrint) { + i++; + } else { + j++; + } + if (nGroupPrint) { + i++; + } else { + j++; + } + if (mComplPrint) { + i++; + } else { + j++; + } + if (i>1) + i--; + + /* test if we must shrink moduleInformation to fit it into canvas */ + miHeight = ((miCount + i - (2 * j)) * 15 + 10); + if (miHeight > maxHeight) + scale *= maxHeight/miHeight; + + printf(" \n", + x, y, scale); + + /* now use x and y as relative coordinates. */ + x = 0; + y = 10; + + if (modIdPrint) + printModuleIdentity(modc, modv, &x, &y, &miNr); + if (nTypePrint) + printNotificationType(modc, modv, &x, &y, &miNr, nType, markupList, + miCount); + if (oGroupPrint) + printObjectGroup(modc, modv, &x, &y, &miNr, oGroup, markupList, + miCount); + if (nGroupPrint) + printNotificationGroup(modc, modv, &x, &y, &miNr, nGroup, markupList, + miCount); + if (mComplPrint) + printModuleCompliance(modc, modv, &x, &y, &miNr, mCompl, markupList, + miCount); + + printf(" \n"); + + if (markupList) xfree(markupList); +} + + +/* ------------------------------------------------------------------------- */ + + +static float fa(float d, float k) +{ + return (float) (d*d/k); +} + +static float fr(float d, float k) +{ + return (float) (k*k/d); +} + +static int overlap(GraphNode *vNode, GraphNode *uNode) +{ + if (vNode->dia.x+vNode->dia.w/2>=uNode->dia.x-uNode->dia.w/2 && + vNode->dia.x-vNode->dia.w/2<=uNode->dia.x+uNode->dia.w/2 && + vNode->dia.y+vNode->dia.h/2>=uNode->dia.y-uNode->dia.h/2 && + vNode->dia.y-vNode->dia.h/2<=uNode->dia.y+uNode->dia.h/2) { + return 1; + } else { + return 0; + } +} + +/* + * test if node and edge intersect + */ +static float intersect(GraphNode *node, GraphEdge *edge) +{ + float a, b, intersect = 0; + + /* handle case in which edge is parallel to y-axis */ + if (edge->endNode->dia.x == edge->startNode->dia.x) { + if ((node->dia.x-node->dia.w/2 < edge->endNode->dia.x && + node->dia.x+node->dia.w/2 < edge->endNode->dia.x) || + (node->dia.x-node->dia.w/2 > edge->endNode->dia.x && + node->dia.x+node->dia.w/2 > edge->endNode->dia.x)) + return intersect; + intersect = node->dia.x - edge->startNode->dia.x; + } else { + /* calculate a and b for y=ax+b */ + a = (edge->endNode->dia.y - edge->startNode->dia.y) / + (edge->endNode->dia.x - edge->startNode->dia.x); + b = edge->startNode->dia.y - (a * edge->startNode->dia.x); + /* test if entire node is above or under edge */ + if ((node->dia.y-node->dia.h/2 - (a * node->dia.x-node->dia.w/2) > b && + node->dia.y+node->dia.h/2 - (a * node->dia.x-node->dia.w/2) > b && + node->dia.y-node->dia.h/2 - (a * node->dia.x+node->dia.w/2) > b && + node->dia.y+node->dia.h/2 - (a * node->dia.x+node->dia.w/2) > b) || + (node->dia.y-node->dia.h/2 - (a * node->dia.x-node->dia.w/2) < b && + node->dia.y+node->dia.h/2 - (a * node->dia.x-node->dia.w/2) < b && + node->dia.y-node->dia.h/2 - (a * node->dia.x+node->dia.w/2) < b && + node->dia.y+node->dia.h/2 - (a * node->dia.x+node->dia.w/2) < b)) + return intersect; + intersect = (a * node->dia.x - node->dia.y + b) / + (float)(sqrt(a*a+1)); + } + /* test if node is over upper end of edge or under lower end of edge */ + if (node->dia.y+node->dia.h/2 < + min(edge->startNode->dia.y,edge->endNode->dia.y) || + node->dia.y-node->dia.h/2 > + max(edge->startNode->dia.y,edge->endNode->dia.y)) { + intersect = 0; + return intersect; + } + /* node and edge intersect */ + return intersect; +} + +/* + * Implements the springembedder. Look at LNCS 2025, pp. 71-86. + * and: http://citeseer.ist.psu.edu/fruchterman91graph.html + * Input: Graph with known width and height of nodes. + * Output: Coordinates (x,y) for the nodes. + * Only the nodes and edges with use==1 are considered. + */ +static void layoutComponent(GraphComponent *component, + int nodeoverlap, int edgeoverlap) +{ + int i; + float k, xDelta, yDelta, absDelta, absDisp, t, dist; + GraphNode *vNode, *uNode; + GraphEdge *eEdge; + + k = 400; + t = 200; + + for (i=0; ifirstComponentNode; vNode; + vNode = vNode->nextComponentNode) { + vNode->dia.xDisp = 0; + vNode->dia.yDisp = 0; + for (uNode = component->firstComponentNode; uNode; + uNode = uNode->nextComponentNode) { + if (vNode==uNode) + continue; + xDelta = vNode->dia.x - uNode->dia.x; + yDelta = vNode->dia.y - uNode->dia.y; + absDelta = (float) (sqrt(xDelta*xDelta + yDelta*yDelta)); + vNode->dia.xDisp += (xDelta/absDelta)*fr(absDelta, k); + vNode->dia.yDisp += (yDelta/absDelta)*fr(absDelta, k); + /* add another repulsive force if the nodes overlap */ + if (nodeoverlap && overlap(vNode, uNode)) { + vNode->dia.xDisp += 4*(xDelta/absDelta)*fr(1/absDelta, k); + vNode->dia.yDisp += 4*(yDelta/absDelta)*fr(1/absDelta, k); + } + } + } + for (eEdge = graph->edges; eEdge; eEdge = eEdge->nextPtr) { + if (!eEdge->use || eEdge->startNode->component != component) + continue; + /* add another repulsive force if edge and any node overlap */ + if (edgeoverlap) { + for (vNode = component->firstComponentNode; vNode; + vNode = vNode->nextComponentNode) { + if (eEdge->startNode == vNode || + eEdge->endNode == vNode || + overlap(eEdge->startNode, vNode) || + overlap(eEdge->endNode, vNode)) + continue; + if ((dist = intersect(vNode, eEdge))) { + if (eEdge->startNode->dia.x == eEdge->endNode->dia.x) { + eEdge->startNode->dia.xDisp -= + 8*(dist/fabsf(dist))*fr(1/dist, k); + eEdge->endNode->dia.xDisp -= + 8*(dist/fabsf(dist))*fr(1/dist, k); + vNode->dia.xDisp += + 8*(dist/fabsf(dist))*fr(1/dist, k); + } else { + xDelta = -1*(eEdge->endNode->dia.y + -eEdge->startNode->dia.y) + /(eEdge->endNode->dia.x + -eEdge->startNode->dia.x); + yDelta = 1; + absDelta = (float) (sqrt(xDelta*xDelta + + yDelta*yDelta)); + eEdge->startNode->dia.xDisp += + 8*(xDelta/absDelta)*fr(1/dist, k); + eEdge->startNode->dia.yDisp += + 8*(yDelta/absDelta)*fr(1/dist, k); + eEdge->endNode->dia.xDisp += + 8*(xDelta/absDelta)*fr(1/dist, k); + eEdge->endNode->dia.yDisp += + 8*(yDelta/absDelta)*fr(1/dist, k); + vNode->dia.xDisp -= + 8*(xDelta/absDelta)*fr(1/dist, k); + vNode->dia.yDisp -= + 8*(yDelta/absDelta)*fr(1/dist, k); + } + } + } + } + /* calculate attractive forces */ + xDelta = eEdge->startNode->dia.x - eEdge->endNode->dia.x; + yDelta = eEdge->startNode->dia.y - eEdge->endNode->dia.y; + absDelta = (float) (sqrt(xDelta*xDelta + yDelta*yDelta)); + eEdge->startNode->dia.xDisp -= (xDelta/absDelta)*fa(absDelta, k); + eEdge->startNode->dia.yDisp -= (yDelta/absDelta)*fa(absDelta, k); + eEdge->endNode->dia.xDisp += (xDelta/absDelta)*fa(absDelta, k); + eEdge->endNode->dia.yDisp += (yDelta/absDelta)*fa(absDelta, k); + } + /* limit the maximum displacement to the temperature t */ + for (vNode = component->firstComponentNode; vNode; + vNode = vNode->nextComponentNode) { + absDisp = (float) (sqrt(vNode->dia.xDisp*vNode->dia.xDisp + + vNode->dia.yDisp*vNode->dia.yDisp)); + vNode->dia.x += (vNode->dia.xDisp/absDisp)*min(absDisp, t); + vNode->dia.y += (vNode->dia.yDisp/absDisp)*min(absDisp, t); + } + /* reduce the temperature as the layout approaches a better configuration */ + t *= 0.9; + } +} + + +/* ------------------------------------------------------------------------- */ + + +static void addNodeToComponent(GraphNode *tNode, GraphComponent *tComponent) +{ + GraphEdge *tEdge; + + tNode->component = tComponent; + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + if (!tEdge->use) + continue; + if (tEdge->startNode == tNode && tEdge->endNode->component == NULL) { + tEdge->endNode->nextComponentNode = tNode->nextComponentNode; + tNode->nextComponentNode = tEdge->endNode; + addNodeToComponent(tEdge->endNode, tComponent); + } + if (tEdge->endNode == tNode && tEdge->startNode->component == NULL) { + tEdge->startNode->nextComponentNode = tNode->nextComponentNode; + tNode->nextComponentNode = tEdge->startNode; + addNodeToComponent(tEdge->startNode, tComponent); + } + } +} + + +/* split the graph into components */ +static void splitGraphIntoComponents() +{ + GraphNode *tNode; + GraphComponent *tComponent; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!tNode->use) + continue; + if (tNode->component == NULL) { + tComponent = graphInsertComponent(graph); + tComponent->firstComponentNode = tNode; + addNodeToComponent(tNode, tComponent); + } + } +} + + +/* layout components (except first) and calculate bounding boxes and offsets */ +static void layoutComponents(float *yMin, float *yMax, float *x) +{ + GraphNode *tNode; + GraphComponent *tComponent; + + *x=10; + for (tComponent = graph->components->nextPtr; tComponent; + tComponent = tComponent->nextPtr) { + layoutComponent(tComponent, 0, 0); + /* FIXME do we need a stage with nodeoverlap and without edgeoverlap? */ + layoutComponent(tComponent, 1, 0); + layoutComponent(tComponent, 1, 1); + + for (tNode = tComponent->firstComponentNode; tNode; + tNode = tNode->nextComponentNode) { + if (tNode->dia.x - tNode->dia.w/2 < tComponent->xMin) + tComponent->xMin = tNode->dia.x - tNode->dia.w/2; + if (tNode->dia.x + tNode->dia.w/2 > tComponent->xMax) + tComponent->xMax = tNode->dia.x + tNode->dia.w/2; + if (tNode->dia.y - tNode->dia.h/2 < tComponent->yMin) + tComponent->yMin = tNode->dia.y - tNode->dia.h/2; + if (tNode->dia.y + tNode->dia.h/2 > tComponent->yMax) + tComponent->yMax = tNode->dia.y + tNode->dia.h/2; + } + + tComponent->xOffset = *x - tComponent->xMin; + *x += 10 + tComponent->xMax - tComponent->xMin; + tComponent->yOffset = -0.5*(tComponent->yMin+tComponent->yMax); + if (tComponent->yMin + tComponent->yOffset < *yMin) + *yMin = tComponent->yMin + tComponent->yOffset; + if (tComponent->yMax + tComponent->yOffset > *yMax) + *yMax = tComponent->yMax + tComponent->yOffset; + } +} + + +/* Print SVG to stdout */ +static void printSVG(int modc, SmiModule **modv, int miCount, int idCount, + float xMin, float yMin, float xMax, float yMax, + int nodecount, int TCcount, + int modId[], int nType[], int oGroup[], + int nGroup[], int mCompl[]) +{ + GraphComponent *tComponent; + GraphNode *tNode; + GraphEdge *tEdge; + int classNr=0; + + /* output of svg to stdout begins here */ + printSVGHeaderAndTitle(modc, modv, miCount, idCount, + xMin, yMin, xMax, yMax); + + /* module doesn't contain any objects. */ + if (nodecount == 0) { + if (TCcount > 0) { + printOnlyTCs(); + } else { + printNoObjects(); + } + } + + /* loop through components (except first) to print edges and nodes */ + for (tComponent = graph->components->nextPtr; tComponent; + tComponent = tComponent->nextPtr) { + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + if (!tEdge->use || tEdge->startNode->component != tComponent) + continue; + printSVGConnection(tEdge); + } + for (tNode = tComponent->firstComponentNode; tNode; + tNode = tNode->nextComponentNode) { + printSVGObject(tNode, &classNr, modc, modv); + } + /* enclose component in its bounding box */ + /* + printf(" xMin + tComponent->xOffset, + tComponent->yMin + tComponent->yOffset, + tComponent->xMax - tComponent->xMin, + tComponent->yMax - tComponent->yMin); + printf(" fill=\"none\" stroke=\"green\" stroke-width=\"1\"/>\n"); + */ + } + + /* print single nodes */ + for (tNode = graph->components->firstComponentNode; tNode; + tNode = tNode->nextComponentNode) { + if (tNode->group == 0) { + printSVGObject(tNode, &classNr, modc, modv); + } else { + printSVGGroup(tNode->group, &classNr, modc, modv); + } + } + + /* print Module-Information */ + printModuleInformation(modc, modv, xMax-MODULE_INFO_WIDTH, yMin+10, + yMax-yMin, + modId, nType, oGroup, nGroup, mCompl, miCount); + + /* output of svg to stdout ends here */ + printSVGClose(xMin, yMin, xMax, yMax); +} + + +/* prepare nodes and edges for drawing */ +static void prepareNodesAndEdges(int *idCount, float *xMax, int *nodecount, + int *singleNodes, float *maxHeight) +{ + GraphNode *tNode, *lastNode = NULL; + GraphEdge *tEdge; + GraphComponent *tComponent; + float x=10; + int group; + + /* find edges which are supposed to be drawn */ + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + if (tEdge->connection != GRAPH_CON_UNKNOWN + && tEdge->startNode->smiNode->nodekind != SMI_NODEKIND_SCALAR + && tEdge->endNode->smiNode->nodekind != SMI_NODEKIND_SCALAR + && tEdge->startNode != tEdge->endNode) { + tEdge->use = 1; + tEdge->startNode->degree++; + tEdge->endNode->degree++; + } + } + + tComponent = graphInsertComponent(graph); + + /* prepare nodes which are supposed to be drawn */ + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + tNode = calcNodeSize(tNode, idCount); + if (tNode->smiNode->nodekind != SMI_NODEKIND_SCALAR) { + (*nodecount)++; + if (tNode->degree == 0) { + /* single nodes are members of the first component. */ + if (tComponent->firstComponentNode == NULL) { + tComponent->firstComponentNode = tNode; + } else { + lastNode->nextComponentNode = tNode; + } + lastNode = tNode; + tNode->component = tComponent; + tNode->dia.x = x + tNode->dia.w/2; + x += 10 + tNode->dia.w; + tNode->dia.y = 0; + if (tNode->dia.h > *maxHeight) + *maxHeight = tNode->dia.h; + } + } + } + for (group = 1; group <= algGetNumberOfGroups(); group++) { + tNode = calcGroupSize(group, idCount); + (*nodecount)++; + /* groupnodes are members of the first component. */ + if (tComponent->firstComponentNode == NULL) { + tComponent->firstComponentNode = tNode; + } else { + lastNode->nextComponentNode = tNode; + } + lastNode = tNode; + tNode->component = tComponent; + tNode->dia.x = x + tNode->dia.w/2; + x += 10 + tNode->dia.w; + tNode->dia.y = 0; + if (tNode->dia.h > *maxHeight) + *maxHeight = tNode->dia.h; + } + *xMax = x; + if (tComponent->firstComponentNode == NULL) + *singleNodes = 0; +} + + + +/* + * generate SVG diagram and print it to stdout: + * - identify and prepare nodes and egdes + * - split graph into its components + * - layout components + * - prepare module information + * - print header + * - print components + * - print module information + * - print footer + */ +static void generateSVG(int modc, SmiModule **modv) +{ + int nodecount=0, singleNodes=1, miCount=0; + int i, idCount=0, TCcount=0, miPrint=0; + float x=10, xMin=0, yMin=0, xMax=0, yMax=0, maxHeight=0; + + int *modId = xcalloc(modc,sizeof(int)); + int *nType = xcalloc(modc,sizeof(int)); + int *oGroup = xcalloc(modc,sizeof(int)); + int *nGroup = xcalloc(modc,sizeof(int)); + int *mCompl = xcalloc(modc,sizeof(int)); + + /* prepare nodes and edges for drawing */ + prepareNodesAndEdges(&idCount, &xMax, &nodecount, &singleNodes, &maxHeight); + + /* split the graph into components */ + splitGraphIntoComponents(); + + /* layout components (except first) and calculate bounding boxes and offsets */ + layoutComponents(&yMin, &yMax, &x); + + if (graph->components->nextPtr) + yMin -= 10; + yMax += 10; + if (x > xMax) + xMax = x; + + /* adjust values for the first component (component of single nodes) */ + graph->components->yOffset = yMax + maxHeight/2; + if (singleNodes) + yMax += maxHeight + 10; + + /* module doesn't contain any objects. */ + if (nodecount == 0) { + TCcount = countTCs(modc, modv); + if (TCcount > 0) { + xMax += 160; + } else { + xMax += 130; + } + yMax += 40; + } + + /* count entries in the ModuleInformation-Section */ + prepareModInfo(modc, modv, &miCount, modId, nType, oGroup, nGroup, mCompl); + idCount += miCount; + + /* enlarge canvas for ModuleInformation if it is supposed to be printed */ + for (i = 0; i < modc; i++) { + miPrint |= modId[i]; + miPrint |= nType[i]; + miPrint |= oGroup[i]; + miPrint |= nGroup[i]; + miPrint |= mCompl[i]; + } + if (miPrint) { + xMax += MODULE_INFO_WIDTH; + } + + printSVG(modc, modv, miCount, idCount, xMin, yMin, xMax, yMax, nodecount, + TCcount, modId, nType, oGroup, nGroup, mCompl); + + xfree(mCompl); + xfree(nGroup); + xfree(oGroup); + xfree(nType); + xfree(modId); +} + + + +static void buildLink(int modc, SmiModule **modv) +{ + size_t length; + const char *url = URL; + /* note: first string, so no & required */ + const char *widthstr = "width="; + const char *heightstr = "&height="; + const char *deprstr = "&deprobs=deprecated"; + const char *deprobsstr = "&deprobs=obsolete"; + char width[15]; + char height[15]; + + length = strlen(url); + sprintf(width, "%i", CANVASWIDTH); + sprintf(height, "%i", CANVASHEIGHT); + length += strlen(widthstr) + strlen(width); + length += strlen(heightstr) + strlen(height); + if (SHOW_DEPRECATED) { + length += strlen(deprstr); + } + if (SHOW_DEPR_OBSOLETE) { + length += strlen(deprobsstr); + } + link = xmalloc(length + 1); + strcpy(link, url); + strcat(link, widthstr); + strcat(link, width); + strcat(link, heightstr); + strcat(link, height); + if (SHOW_DEPRECATED) { + strcat(link, deprstr); + } + if (SHOW_DEPR_OBSOLETE) { + strcat(link, deprobsstr); + } +} + + +static void calcConceptualModel() +{ + algLinkTables(); + algCheckLinksByName(); + algConnectLonelyNodes(); + algCheckForDependency(); + algCheckForPointerRels(); +} + + +/* ------------------------------------------------------------------------- */ + + + +static void dumpSvg(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + + buildLink(modc, modv); + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! graph) { + graph = xmalloc(sizeof(Graph)); + graph->nodes = NULL; + graph->edges = NULL; + graph->components = NULL; + } + + for (i = 0; i < modc; i++) { + algCreateNodes(modv[i]); + } + + calcConceptualModel(); + + generateSVG(modc, modv); + + graphExit(graph); + graph = NULL; + } else { + for (i = 0; i < modc; i++) { + if (! graph) { + graph = xmalloc(sizeof(Graph)); + graph->nodes = NULL; + graph->edges = NULL; + graph->components = NULL; + } + + algCreateNodes(modv[i]); + + calcConceptualModel(); + + generateSVG(1, &(modv[i])); + + graphExit(graph); + graph = NULL; + } + } + + if (fflush(stdout) || ferror(stdout)) { + perror("smidump: write error"); + exit(1); + } + + xfree(link); +} + + + +void initSvg() +{ + static SmidumpDriverOption opt[] = { + { "width", OPT_INT, &CANVASWIDTH, 0, + "width of the svg output (default=1100)"}, + { "height", OPT_INT, &CANVASHEIGHT, 0, + "height of the svg output (default=700)"}, + { "show-deprecated", OPT_FLAG, &SHOW_DEPRECATED, 0, + "show deprecated items"}, + { "show-depr-obsolete", OPT_FLAG, &SHOW_DEPR_OBSOLETE, 0, + "show deprecated and obsolete items"}, + { "static-output", OPT_FLAG, &STATIC_OUTPUT, 0, + "disable all interactivity (e.g. for printing)"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "svg", + dumpSvg, + 0, + SMIDUMP_DRIVER_CANT_OUTPUT, + "SVG diagram", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-tree.c b/tools/dump-tree.c new file mode 100644 index 0000000..3db2265 --- /dev/null +++ b/tools/dump-tree.c @@ -0,0 +1,540 @@ +/* + * dump-tree.c -- + * + * Operations to dump the OID tree in a human readable format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2002 J. Schoenwaelder, University of Osnabrueck. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-tree.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int pmodc = 0; +static SmiModule **pmodv = NULL; + +static int ignoreconformance = 0; +static int ignoreleafs = 0; +static int full = 0; +static int compact = 0; + +static char *getFlags(SmiNode *smiNode) +{ + + switch (smiNode->access) { + case SMI_ACCESS_UNKNOWN: + return "---"; + case SMI_ACCESS_NOT_ACCESSIBLE: + return "---"; + case SMI_ACCESS_EVENT_ONLY: + return "---"; + case SMI_ACCESS_NOTIFY: + return "--n"; + case SMI_ACCESS_READ_ONLY: + return "r-n"; + case SMI_ACCESS_READ_WRITE: + return "rwn"; + case SMI_ACCESS_NOT_IMPLEMENTED: + return "---"; + case SMI_ACCESS_INSTALL: + return "-i-"; + case SMI_ACCESS_INSTALL_NOTIFY: + return "-in"; + case SMI_ACCESS_REPORT_ONLY: + return "--r"; + } + + return ""; +} + + + +static char getStatusChar(SmiStatus status) +{ + switch (status) { + case SMI_STATUS_UNKNOWN: + return '+'; + case SMI_STATUS_CURRENT: + return '+'; + case SMI_STATUS_DEPRECATED: + return 'x'; + case SMI_STATUS_MANDATORY: + return '+'; + case SMI_STATUS_OPTIONAL: + return '+'; + case SMI_STATUS_OBSOLETE: + return 'o'; + } + + return ' '; +} + + + +static char *getTypeName(SmiNode *smiNode) +{ + char *type; + SmiType *smiType, *parentType; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + if (!parentType) + return NULL; + smiType = parentType; + } + + type = xstrdup(smiType->name); + return type; +} + + + +static void fprintIndex(FILE *f, SmiNode *smiNode) +{ + char *indexname; + int i; + SmiElement *smiElement; + + indexname = NULL; + for (i = -1, smiElement = smiGetFirstElement(smiNode); + smiElement; smiElement = smiGetNextElement(smiElement), i++) { + if (i > 0) fprintf(f, ","); + if (indexname) { + fprintf(f, indexname); + } + indexname = smiGetElementNode(smiElement)->name; + } + if (indexname) { + fprintf(f, "%s%s%s", + (i > 0) ? "," : "", + (smiNode->implied) ? "*" : "", + indexname); + } +} + + + +static void fprintObjects(FILE *f, SmiNode *smiNode) +{ + char *objectname; + int i; + SmiElement *smiElement; + + objectname = NULL; + for (i = -1, smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement), i++) { + if (i > 0) fprintf(f, ","); + if (objectname) { + fprintf(f, objectname); + } + objectname = smiGetElementNode(smiElement)->name; + } + if (objectname) { + fprintf(f, "%s%s", (i > 0) ? "," : "", objectname); + } +} + + + +static int isPartOfLoadedModules(SmiNode *smiNode) +{ + SmiModule *smiModule; + int i; + + smiModule = smiGetNodeModule(smiNode); + + for (i = 0; i < pmodc; i++) { + if (strcmp(pmodv[i]->name, smiModule->name) == 0) { + return 1; + } + } + return 0; +} + +/* + * The following function pruneSubTree() is tricky. There are some + * interactions between the supported options. See the detailed + * comments below. Good examples to test the implemented behaviour + * are: + * + * smidump -u -f tree --tree-no-leaf IF-MIB ETHER-CHIPSET-MIB + * + * (And the example above does _not_ work in combination with + * --tree-no-conformance so the code below is still broken.) + */ + +static int pruneSubTree(SmiNode *smiNode) +{ + SmiNode *childNode; + + const int confmask = (SMI_NODEKIND_GROUP | SMI_NODEKIND_COMPLIANCE); + const int leafmask = (SMI_NODEKIND_GROUP | SMI_NODEKIND_COMPLIANCE + | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR + | SMI_NODEKIND_ROW | SMI_NODEKIND_NOTIFICATION); + + if (! smiNode) { + return 1; + } + + /* + * First, prune all nodes which the user has told us to ignore. + * In the case of ignoreleafs, we have to special case nodes with + * an unknown status (which actually represent OBJECT-IDENTITY + * definitions). More special case code is needed to exclude + * module identity nodes. + */ + + if (ignoreconformance && (smiNode->nodekind & confmask)) { + return 1; + } + + if (ignoreleafs) { + if (smiNode->nodekind & leafmask) { + return 1; + } + if (smiNode->nodekind == SMI_NODEKIND_NODE + && smiNode->status != SMI_STATUS_UNKNOWN) { + SmiModule *smiModule = smiGetNodeModule(smiNode); + if (smiModule && smiNode != smiGetModuleIdentityNode(smiModule)) { + return 1; + } + } + } + + /* + * Next, generally do not prune nodes that belong to the set of + * modules we are looking at. + */ + + if (isPartOfLoadedModules(smiNode)) { + if (!ignoreconformance || !smiGetFirstChildNode(smiNode)) { + return 0; + } + } + + /* + * Finally, prune all nodes where all child nodes are pruned. + */ + + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + + /* + * In the case of ignoreleafs, we have to peek at the child + * nodes. Otherwise, we would prune too much. we still want to + * see the path to the leafs we have pruned away. This also + * interact with the semantics of ignoreconformance since we + * still want in combination with ignoreleafs to see the path + * to the pruned conformance leafs. + */ + + if (ignoreleafs && (childNode->nodekind & leafmask)) { + if (isPartOfLoadedModules(childNode)) { + if (ignoreconformance && (childNode->nodekind & confmask)) { + return 1; + } + return 0; + } + } + + if (! pruneSubTree(childNode)) { + return 0; + } + } + + return 1; +} + + + +static void fprintSubTree(FILE *f, SmiNode *smiNode, + char *prefix, size_t typefieldlen) +{ + SmiNode *childNode, *indexNode; + SmiNodekind lastNodeKind = SMI_NODEKIND_UNKNOWN; + SmiType *type; + int i = 0, cnt, prefixlen; + size_t newtypefieldlen = 9; + char c = 0; + char *type_name; + + if (smiNode) { + prefixlen = strlen(prefix); + switch (smiNode->nodekind) { + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + if (prefixlen > 0) { + c = prefix[prefixlen-1]; + prefix[prefixlen-1] = getStatusChar(smiNode->status); + } + type_name = getTypeName(smiNode); + if (type_name) { + fprintf(f, "%s-- %s %-*s %s(%u)\n", + prefix, + getFlags(smiNode), + typefieldlen, + type_name, + smiNode->name, + smiNode->oid[smiNode->oidlen-1]); + xfree(type_name); + } + if (prefixlen > 0 && c) { + prefix[prefixlen-1] = c; + } + break; + case SMI_NODEKIND_ROW: + if (prefixlen > 0) { + c = prefix[prefixlen-1]; + prefix[prefixlen-1] = getStatusChar(smiNode->status); + } + fprintf(f, "%s--%s(%u) [", prefix, + smiNode->name, + smiNode->oid[smiNode->oidlen-1]); + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + fprintIndex(f, smiNode); + break; + case SMI_INDEX_EXPAND: /* TODO: we have to do more work here! */ + break; + case SMI_INDEX_AUGMENT: + case SMI_INDEX_SPARSE: + indexNode = smiGetRelatedNode(smiNode); + if (indexNode) { + fprintIndex(f, indexNode); + } + break; + case SMI_INDEX_UNKNOWN: + break; + } + fprintf(f, "]\n"); + if (prefixlen > 0 && c) { + prefix[prefixlen-1] = c; + } + break; + case SMI_NODEKIND_NOTIFICATION: + if (prefixlen > 0) { + c = prefix[prefixlen-1]; + prefix[prefixlen-1] = getStatusChar(smiNode->status); + } + fprintf(f, "%s--%s(%u) [", prefix, + smiNode->name, + smiNode->oid[smiNode->oidlen-1]); + fprintObjects(f, smiNode); + fprintf(f, "]\n"); + if (prefixlen > 0 && c) { + prefix[prefixlen-1] = c; + } + break; + default: + if (prefixlen > 0) { + c = prefix[prefixlen-1]; + prefix[prefixlen-1] = getStatusChar(smiNode->status); + } + if (smiNode->oid) + if (prefixlen > 0) { + fprintf(f, "%s--%s(%u)\n", prefix, + smiNode->name ? smiNode->name : " ", + smiNode->oid[smiNode->oidlen-1]); + } else { + unsigned int j; + fprintf(f, "%s--%s(", prefix, + smiNode->name ? smiNode->name : " "); + for (j = 0; j < smiNode->oidlen; j++) { + fprintf(f, "%s%u", j ? "." : "", smiNode->oid[j]); + } + fprintf(f, ")\n"); + } + else + fprintf(f, "%s--%s(?)\n", prefix, + smiNode->name ? smiNode->name : " "); + if (prefixlen > 0 && c) { + prefix[prefixlen-1] = c; + } + } + for (childNode = smiGetFirstChildNode(smiNode), cnt = 0; + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (! pruneSubTree(childNode)) { + type = smiGetNodeType(childNode); + if (type) { + type_name = getTypeName(childNode); + if (type_name) { + if (strlen(type_name) > newtypefieldlen) { + newtypefieldlen = strlen(type_name); + } + xfree(type_name); + } + } + cnt++; + } + } + for (childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + char *newprefix; + if (pruneSubTree(childNode)) { + continue; + } + i++; + if (! compact && + ((childNode->nodekind != SMI_NODEKIND_COLUMN + && childNode->nodekind != SMI_NODEKIND_SCALAR) + || (lastNodeKind != childNode->nodekind))) { + fprintf(f, "%s |\n", prefix); + } + newprefix = xmalloc(strlen(prefix)+10); + strcpy(newprefix, prefix); + if (cnt == 1 || cnt == i) { + strcat(newprefix, " "); + } else { + strcat(newprefix, " |"); + } + fprintSubTree(f, childNode, newprefix, newtypefieldlen); + xfree(newprefix); + lastNodeKind = childNode->nodekind; + } + } +} + + + +static void fprintTree(FILE *f) +{ + SmiNode *smiNode; + SmiNode *childNode; + SmiNode *nextNode; + int cnt; + + smiNode = smiGetNode(NULL, "iso"); + + if (! full) { + do { + for (childNode = smiGetFirstChildNode(smiNode), cnt = 0, nextNode = NULL; + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (! pruneSubTree(childNode)) { + cnt++; + if (! nextNode) { + nextNode = childNode; + } + } + } + if (cnt == 1) { + smiNode = nextNode; + } + } while (cnt == 1); + } + + if (smiNode) { + fprintSubTree(f, smiNode, "", 0); + } +} + + + +static void dumpTree(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + + pmodc = modc; + pmodv = modv; + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# united registration tree (generated by smidump " + SMI_VERSION_STRING ")\n\n"); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + fprintTree(f); + + } else { + + for (i = 0; i < modc; i++) { + + pmodc = 1; + pmodv = &(modv[i]); + + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s registration tree (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + fprintTree(f); + } + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initTree() +{ + static SmidumpDriverOption opt[] = { + { "no-conformance", OPT_FLAG, &ignoreconformance, 0, + "do not show conformance nodes"}, + { "no-leafs", OPT_FLAG, &ignoreleafs, 0, + "do not show leaf nodes"}, + { "full-root", OPT_FLAG, &full, 0, + "generate the full path to the root"}, + { "compact", OPT_FLAG, &compact, 0, + "generate a more compact representation"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "tree", + dumpTree, + SMI_FLAG_NODESCR, + 0, + "structure of the OID tree", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-types.c b/tools/dump-types.c new file mode 100644 index 0000000..50fdf4c --- /dev/null +++ b/tools/dump-types.c @@ -0,0 +1,697 @@ +/* + * dump-types.c -- + * + * Operations to dump the type hierarchy in a human readable format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-types.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * Decide how we want to name the implicitely defined types. + */ + +#include + +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + +static int noimplicit = 0; + + +typedef struct BaseTypeCount { + SmiBasetype basetype; + int counter; +} BaseTypeCount; + + +static BaseTypeCount basetypes[] = { + { SMI_BASETYPE_INTEGER32, 0 }, + { SMI_BASETYPE_OCTETSTRING, 0 }, + { SMI_BASETYPE_OBJECTIDENTIFIER, 0 }, + { SMI_BASETYPE_UNSIGNED32, 0 }, + { SMI_BASETYPE_INTEGER64, 0 }, + { SMI_BASETYPE_UNSIGNED64, 0 }, + { SMI_BASETYPE_FLOAT32, 0 }, + { SMI_BASETYPE_FLOAT64, 0 }, + { SMI_BASETYPE_FLOAT128, 0 }, + { SMI_BASETYPE_ENUM, 0 }, + { SMI_BASETYPE_BITS, 0 }, + { SMI_BASETYPE_UNKNOWN, 0 } +}; + + +typedef struct TypeNode { + SmiType *smiType; + SmiModule *smiModule; + SmiBasetype smiBasetype; + struct TypeNode *nextNodePtr; + struct TypeNode *childNodePtr; +} TypeNode; + + +static TypeNode typeRoot = { + NULL, NULL, SMI_BASETYPE_UNKNOWN, NULL, NULL +}; + + +static int pmodc = 0; +static SmiModule **pmodv = NULL; + + +static char getStatusChar(SmiStatus status) +{ + switch (status) { + case SMI_STATUS_UNKNOWN: + return '+'; + case SMI_STATUS_CURRENT: + return '+'; + case SMI_STATUS_DEPRECATED: + return 'x'; + case SMI_STATUS_MANDATORY: + return '+'; + case SMI_STATUS_OPTIONAL: + return '+'; + case SMI_STATUS_OBSOLETE: + return 'o'; + } + + return ' '; +} + + + +static char *getFlags(SmiModule *smiModule, SmiType *smiType) +{ + static char flags[4]; + int i; + + memset(flags, 0, sizeof(flags)); + strcpy(flags, "---"); + + switch (smiType->decl) { + case SMI_DECL_IMPLICIT_TYPE: + flags[0] = 'i'; + break; + case SMI_DECL_TYPEASSIGNMENT: + flags[0] = 'a'; + break; + case SMI_DECL_TEXTUALCONVENTION: + case SMI_DECL_TYPEDEF: + flags[0] = 't'; + break; + default: + break; + } + + for (i = 0; i < pmodc; i++) { + if (strcmp(pmodv[i]->name, smiModule->name) == 0) { + break; + } + } + + if ((!smiModule) || (strlen(smiModule->name) == 0)) { + flags[2] = 'b'; +#if 0 /* xxx fixme */ + } else if (!moduleList) { + flags[2] = '-'; + } else if (mPtr) { + flags[2] = 'l'; +#endif + } else { + flags[2] = 'i'; + } + + return flags; +} + + + +static void initBaseTypeCount() +{ + int i; + + for (i = 0; i < sizeof(basetypes)/sizeof(BaseTypeCount); i++) { + basetypes[i].counter = 0; + } +} + + + +static void incrBaseTypeCount(SmiBasetype basetype) +{ + int i; + + for (i = 0; i < sizeof(basetypes)/sizeof(BaseTypeCount); i++) { + if (basetypes[i].basetype == basetype) { + basetypes[i].counter++; + } + } +} + + + +static int getBaseTypeCount(SmiBasetype basetype) +{ + int i; + + for (i = 0; i < sizeof(basetypes)/sizeof(BaseTypeCount); i++) { + if (basetypes[i].basetype == basetype) { + return basetypes[i].counter; + } + } + + return -1; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (!nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + } + break; + } + + return s; +} + + + +static void addToTypeTree(TypeNode *root, + SmiModule *smiModule, SmiType *smiType) +{ + TypeNode *newType, **typePtrPtr; + SmiType *smiParentType; + SmiModule *smiParentModule; + + if (! root) { + return; + } + + smiParentType = smiGetParentType(smiType); + smiParentModule = smiParentType ? smiGetTypeModule(smiParentType) : NULL; + + if ((root->smiModule == smiParentModule && root->smiType == smiParentType) + || (! root->smiModule && ! root->smiType + && root->smiBasetype == smiType->basetype)) { + + newType = xmalloc(sizeof(TypeNode)); + newType->smiModule = smiModule; + newType->smiType = smiType; + newType->smiBasetype = smiType->basetype; + newType->childNodePtr = NULL; + newType->nextNodePtr = NULL; + + for (typePtrPtr = &(root->childNodePtr); + *typePtrPtr; typePtrPtr = &((*typePtrPtr)->nextNodePtr)) ; + *typePtrPtr = newType; + return; + } + + if (root->nextNodePtr) { + addToTypeTree(root->nextNodePtr, smiModule, smiType); + } + + if (root->childNodePtr) { + addToTypeTree(root->childNodePtr, smiModule, smiType); + } +} + + + +static void freeTypeTree(TypeNode *root) +{ + if (root->childNodePtr) { + if (root->childNodePtr->smiModule) { + freeTypeTree(root->childNodePtr); + root->childNodePtr = NULL; + } else { + freeTypeTree(root->childNodePtr); + } + } + + if (root->nextNodePtr) { + if (root->nextNodePtr->smiModule) { + freeTypeTree(root->nextNodePtr); + root->nextNodePtr = NULL; + } else { + freeTypeTree(root->nextNodePtr); + } + } + + if (root->smiModule) { + xfree(root); + } +} + + + +static TypeNode *findInTypeTree(TypeNode *root, + SmiModule *smiModule, SmiType *smiType) +{ + TypeNode *result = NULL; + + if (root->smiModule && root->smiModule == smiModule + && smiType->name + && root->smiType && root->smiType == smiType) { + result = root; + } + + if (!result && root->childNodePtr) { + result = findInTypeTree(root->childNodePtr, smiModule, smiType); + } + + if (!result && root->nextNodePtr) { + result = findInTypeTree(root->nextNodePtr, smiModule, smiType); + } + + return result; +} + + + +static char* getTypeName(TypeNode *typeNode) +{ + SmiRefinement *smiRefinement; + SmiType *smiType; + char *name = "?"; + + if (typeNode->smiType->name) { +#if 1 + return xstrdup(typeNode->smiType->name); +#else + char *s; + s = xmalloc(strlen(typeNode->smiType->name)+ + strlen(typeNode->smiModule ? typeNode->smiModule->name : "") +3); + sprintf(s, "%s::%s", typeNode->smiModule ? typeNode->smiModule->name : "", + typeNode->smiType->name); + return s; +#endif + + } else if (typeNode->smiModule) { + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(typeNode->smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiGetNodeType(smiNode) == typeNode->smiType) { + name = xmalloc(strlen(smiNode->name) + 3); + sprintf(name, "(%s)", smiNode->name); + return name; + } + } + + for (smiNode = smiGetFirstNode(typeNode->smiModule, + SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + for(smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiType = smiGetRefinementType(smiRefinement); + if (smiType == typeNode->smiType) { + smiNode = smiGetRefinementNode(smiRefinement); + name = xmalloc(strlen(smiNode->name) + 3); + sprintf(name, "(%s)", smiNode->name); + return name; + } + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType == typeNode->smiType) { + smiNode = smiGetRefinementNode(smiRefinement); + name = xmalloc(strlen(smiNode->name) + 3); + sprintf(name, "(%s)", smiNode->name); + return name; + } + } + } + } + + return xstrdup(name); +} + + + +static void fprintRestrictions(FILE *f, SmiType *smiType) +{ + SmiNamedNumber *nn; + SmiRange *range; + char s1[40], s2[40]; + int i; + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn ; nn = smiGetNextNamedNumber(nn), i++) { + fprintf(f, "%s%s(%ld)", (i == 0) ? " {" : ", ", + nn->name, nn->value.value.integer32); + } + if (i) fprintf(f, "}"); + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range ; range = smiGetNextRange(range), i++) { + strcpy(s1, getValueString(&range->minValue, smiType)); + strcpy(s2, getValueString(&range->maxValue, smiType)); + fprintf(f, "%s%s", (i == 0) ? " [" : ", ", s1); + if (strcmp(s1, s2)) fprintf(f, "..%s", s2); + } + if (i) fprintf(f, "]"); + } +} + + + +static void fprintTypeTree(FILE *f, TypeNode *root, char *prefix) +{ + TypeNode *typeNode, *nextNode; + char *name; + int namelen = -1; + + if (root->smiModule) { + fprintf(f, "%s |\n", prefix); + } + + for (typeNode = root; typeNode; typeNode = typeNode->nextNodePtr) { + if (typeNode->smiType) { + int len; + name = getTypeName(typeNode); + len = strlen(name); + if (len > namelen) namelen = len; + xfree(name); + } + } + + for (typeNode = root; typeNode; typeNode = typeNode->nextNodePtr) { + if (typeNode != &typeRoot) { + char c = '+', *flags; + if (typeNode->smiType) { + name = getTypeName(typeNode); + c = getStatusChar(typeNode->smiType->status); + if (getBaseTypeCount(typeNode->smiBasetype)) { + flags = getFlags(typeNode->smiModule, typeNode->smiType); + if (flags && *flags) { + fprintf(f, "%s %c-- %s %-*s", prefix, c, flags, + namelen, name); + } else { + fprintf(f, "%s %c--%-*s", prefix, c, + namelen, name); + } + fprintRestrictions(f, typeNode->smiType); + if (typeNode->smiType->format) { + fprintf(f, "\t\"%s\"", typeNode->smiType->format); + } + fprintf(f, "\n"); + } + xfree(name); + } else { + fprintf(f, "xxxx\n"); + } + } + if (typeNode->childNodePtr) { + char *newprefix; + newprefix = xmalloc(strlen(prefix)+10); + strcpy(newprefix, prefix); + if (typeNode != &typeRoot) { + for (nextNode = typeNode->nextNodePtr; + nextNode; nextNode = nextNode->nextNodePtr) { + if (getBaseTypeCount(nextNode->smiBasetype)) { + break; + } + } + if (nextNode) { + strcat(newprefix, " |"); + } else { + strcat(newprefix, " "); + } + } + fprintTypeTree(f, typeNode->childNodePtr, newprefix); + xfree(newprefix); + for (nextNode = typeNode->nextNodePtr; + nextNode; nextNode = nextNode->nextNodePtr) { + if (getBaseTypeCount(nextNode->smiBasetype)) { + break; + } + } + if (nextNode) { + fprintf(f, "%s |\n", prefix); + } + } + } +} + + + +static void addType(SmiType *smiType) +{ + SmiModule *smiModule; + SmiType *smiParentType; + + smiModule = smiGetTypeModule(smiType); + if (! smiModule) { + return; + } + + if (findInTypeTree(&typeRoot, smiModule, smiType)) { + return; + } + + smiParentType = smiGetParentType(smiType); + if (smiParentType && smiParentType->name) { + if (smiParentType) { + addType(smiParentType); + } + } + + addToTypeTree(&typeRoot, smiModule, smiType); + incrBaseTypeCount(smiType->basetype); +} + + + +static void dumpTypes(int modc, SmiModule **modv, int flags, char *output) +{ + SmiNode *smiNode; + SmiType *smiType; + SmiRefinement *smiRefinement; + int i; + FILE *f = stdout; + const unsigned int nodekind = SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + pmodc = modc; + pmodv = modv; + + initBaseTypeCount(); + + for (i = 0; i < modc; i++) { + + if (! (flags & SMIDUMP_FLAG_UNITE)) { + initBaseTypeCount(); + } + + for (smiType = smiGetFirstType(modv[i]); + smiType; + smiType = smiGetNextType(smiType)) { + addType(smiType); + } + + for (smiNode = smiGetFirstNode(modv[i], nodekind); + smiNode; + smiNode = smiGetNextNode(smiNode, nodekind)) { + smiType = smiGetNodeType(smiNode); + if (smiType) { + if (!noimplicit && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + addType(smiType); + } + incrBaseTypeCount(smiType->basetype); + } + } + + for (smiNode = smiGetFirstNode(modv[i], SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + for (smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + smiRefinement = smiGetNextRefinement(smiRefinement)) { + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + if (!noimplicit + && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + addType(smiType); + } + incrBaseTypeCount(smiType->basetype); + } + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + if (!noimplicit + && smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + addType(smiType); + } + incrBaseTypeCount(smiType->basetype); + } + } + } + + if (! (flags & SMIDUMP_FLAG_UNITE)) { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# %s type derivation tree (generated by smidump " + SMI_VERSION_STRING ")\n\n", modv[i]->name); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + fprintTypeTree(f, &typeRoot, ""); + freeTypeTree(&typeRoot); + } + } + + if (flags & SMIDUMP_FLAG_UNITE) { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(f, "# united type derivation tree (generated by smidump " + SMI_VERSION_STRING ")\n\n"); + } + if (! (flags & SMIDUMP_FLAG_SILENT) && (flags & SMIDUMP_FLAG_ERROR)) { + fprintf(f, "# WARNING: this output may be incorrect due to " + "significant parse errors\n\n"); + } + fprintTypeTree(f, &typeRoot, ""); + freeTypeTree(&typeRoot); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initTypes() +{ + static SmidumpDriverOption opt[] = { + { "no-implicit", OPT_FLAG, &noimplicit, 0, + "ignore implicit type definitions"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "types", + dumpTypes, + SMI_FLAG_NODESCR, + 0, + "recursive list of all derived types", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-xml.c b/tools/dump-xml.c new file mode 100644 index 0000000..b752d55 --- /dev/null +++ b/tools/dump-xml.c @@ -0,0 +1,1030 @@ +/* + * dump-xml.c -- + * + * Operations to dump SMIng module information in XML format. + * + * Copyright (c) 2000 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-xml.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * + * - value representations (getValueString()) + * - finish DTD and check against it + * - shall we nest tables like in SMIng? + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "smi.h" +#include "smidump.h" + + + +#define INDENT 2 /* indent factor */ +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define INDENTTEXTS 4 /* column to start multiline texts */ +#define INDENTMAX 64 /* max column to fill, break lines otherwise */ + + + +static int disableschema = 0; +static int disabledoctype = 0; + + + +typedef struct XmlEscape { + char character; + char *escape; +} XmlEscape; + +static XmlEscape xmlEscapes [] = { + { '<', "<" }, + { '>', ">" }, + { '&', "&" }, + { 0, NULL } +}; + + +static int current_column = 0; + + + +static char *getStringLanguage(SmiLanguage lang) +{ + return + (lang == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (lang == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (lang == SMI_LANGUAGE_SMING) ? "SMIng" : + NULL; +} + + + +static char *getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; +} + + + +static char *getAccessString(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "noaccess" : + (access == SMI_ACCESS_NOTIFY) ? "notifyonly" : + (access == SMI_ACCESS_READ_ONLY) ? "readonly" : + (access == SMI_ACCESS_READ_WRITE) ? "readwrite" : + ""; +} + + + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *getTimeString(time_t t) +{ + static char *s = NULL; + struct tm *tm; + + if (s) xfree(s); + + tm = gmtime(&t); + smiAsprintf(&s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static void fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + current_column = strlen(p) - 1; + } + free(s); +} + + + +static void fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +static void fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, j, len; + +#ifdef INDENTTEXTS + fprintSegment(f, column + INDENTTEXTS, "", 0); +#endif + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + for (j = 0; xmlEscapes[j].character; j++) { + if (xmlEscapes[j].character == s[i]) break; + } + if (xmlEscapes[j].character) { + fputs(xmlEscapes[j].escape, f); + current_column += strlen(xmlEscapes[j].escape); + } else { + putc(s[i], f); + current_column++; + } + if (s[i] == '\n') { + current_column = 0; +#ifdef INDENTTEXTS + fprintSegment(f, column + INDENTTEXTS, "", 0); +#endif + } + } + } + current_column++; +} + + + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + for (i = 0; i < valuePtr->len; i++) { + sprintf(&s[strlen(s)], i ? ".%u" : "%u", valuePtr->value.oid[i]); + } + break; + } + + return s; +} + + + +static void fprintNodeStartTag(FILE *f, int indent, + const char *tag, SmiNode *smiNode) +{ + unsigned int i; + + fprintSegment(f, indent, "", 0); + fprint(f, "<%s name=\"%s\"", tag, smiNode->name); + fprint(f, " oid=\""); + for (i = 0; i < smiNode->oidlen; i++) { + fprint(f, i ? ".%u" : "%u", smiNode->oid[i]); + } + fprint(f, "\""); + if (smiNode->create) { + fprint(f, " create=\"true\""); + } + if (smiNode->status != SMI_STATUS_UNKNOWN) { + fprint(f, " status=\"%s\"", getStringStatus(smiNode->status)); + } + fprint(f, ">\n"); +} + + + +static void fprintNodeEndTag(FILE *f, int indent, const char *tag) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "\n", tag); +} + + + +static void fprintRanges(FILE *f, int indent, SmiType *smiType) +{ + SmiRange *range; + + for(range = smiGetFirstRange(smiType); + range; + range = smiGetNextRange(range)) { + fprintSegment(f, indent, "minValue, smiType)); + fprint(f, " max=\"%s\"", getValueString(&range->maxValue, smiType)); + fprint(f, "/>\n"); + } +} + + + +static void fprintNamedNumbers(FILE *f, int indent, SmiType *smiType) +{ + SmiNamedNumber *nn; + + if ((smiType->basetype != SMI_BASETYPE_ENUM) && + (smiType->basetype != SMI_BASETYPE_BITS)) { + return; + } + + for (nn = smiGetFirstNamedNumber(smiType); + nn; + nn = smiGetNextNamedNumber(nn)) { + fprintSegment(f, indent, "name); + fprint(f, " number=\"%s\"", getValueString(&nn->value, smiType)); + fprint(f, "/>\n"); + } +} + + + +static void fprintValue(FILE *f, int indent, SmiValue *smiValue, + SmiType *smiType) +{ + if (smiType && smiValue && smiValue->basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "", 0); + fprint(f, "%s", getValueString(smiValue, smiType)); + fprint(f, "\n"); + } +} + + + +static void fprintDescription(FILE *f, int indent, const char *description) +{ + if (description) { + fprintSegment(f, indent, "\n", 0); + fprintMultilineString(f, indent, description); + fprint(f, "\n"); + fprintSegment(f, indent, "\n", 0); + } +} + + + +static void fprintReference(FILE *f, int indent, const char *reference) +{ + if (reference) { + fprintSegment(f, indent, "\n", 0); + fprintMultilineString(f, indent, reference); + fprint(f, "\n"); + fprintSegment(f, indent, "\n", 0); + } +} + + + +static void fprintFormat(FILE *f, int indent, const char *format) +{ + if (format) { + fprintSegment(f, indent, "", 0); + fprint(f, "%s\n", format); + } +} + + + +static void fprintUnits(FILE *f, int indent, const char *units) +{ + if (units) { + fprintSegment(f, indent, "", 0); + fprint(f, "%s\n", units); + } +} + + + +static void fprintAccess(FILE *f, int indent, SmiAccess smiAccess) +{ + if (smiAccess != SMI_ACCESS_UNKNOWN) { + fprintSegment(f, indent, "", 0); + fprint(f, "%s\n", getAccessString(smiAccess)); + } +} + + + +static void fprintElementList(FILE *f, int indent, const char *tag, + SmiElement *smiElement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + + for (; smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + smiModule = smiGetNodeModule(smiNode); + fprintSegment(f, indent, "", 0); + fprint(f, "<%s module=\"%s\" name=\"%s\"/>\n", + tag, smiModule->name, smiNode->name); + } +} + + + +static void fprintIndex(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *relatedNode; + SmiModule *relatedModule = NULL; + + fprintSegment(f, indent, "implied) { + fprint(f, " implied=\"true\""); + } + fprint(f, ">\n"); + + relatedNode = smiGetRelatedNode(smiNode); + if (relatedNode) { + relatedModule = smiGetNodeModule(relatedNode); + } + switch (smiNode->indexkind) { + case SMI_INDEX_INDEX: + fprintElementList(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + break; + case SMI_INDEX_AUGMENT: + if (relatedNode && relatedModule) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", + relatedModule->name, relatedNode->name); + } /* TODO: else print error */ + break; + case SMI_INDEX_REORDER: + if (relatedNode && relatedModule) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", + relatedModule->name, relatedNode->name); + fprintElementList(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + } /* TODO: else print error */ + break; + case SMI_INDEX_SPARSE: + if (relatedNode && relatedModule) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", + relatedModule->name, relatedNode->name); + } /* TODO: else print error */ + break; + case SMI_INDEX_EXPAND: + if (relatedNode && relatedModule) { + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", + relatedModule->name, relatedNode->name); + fprintElementList(f, indent + INDENT, "index", + smiGetFirstElement(smiNode)); + } /* TODO: else print error */ + break; + case SMI_INDEX_UNKNOWN: + break; + } + fprintSegment(f, indent, "\n", 0); +} + + + +static void fprintModule(FILE *f, SmiModule *smiModule) +{ + SmiRevision *smiRevision; + SmiNode *smiNode; + int i; + char *lang; + + lang = getStringLanguage(smiModule->language); + + fprintSegment(f, INDENT, "", 0); + if (lang) { + fprint(f, "\n", + smiModule->name, lang); + } else { + fprint(f, "\n", smiModule->name); + } + + if (smiModule->organization) { + fprintSegment(f, 2 * INDENT, "", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiModule->organization); + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "\n", 0); + } + + if (smiModule->contactinfo) { + fprintSegment(f, 2 * INDENT, "", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * INDENT, smiModule->contactinfo); + fprint(f, "\n"); + fprintSegment(f, 2 * INDENT, "\n", 0); + } + fprintDescription(f, 2 * INDENT, smiModule->description); + fprintReference(f, 2 * INDENT, smiModule->reference); + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "\n", + getTimeString(smiRevision->date)); + fprintDescription(f, 3 * INDENT, smiRevision->description); + fprintSegment(f, 2 * INDENT, "\n", 0); + i++; + } + + smiNode = smiGetModuleIdentityNode(smiModule); + if (smiNode) { + fprintSegment(f, 2 * INDENT, "", 0); + fprint(f, "\n", smiNode->name); + } + + fprintSegment(f, INDENT, "\n\n", 0); +} + + + +static void fprintImport(FILE *f, int indent, SmiImport *smiImport) +{ + fprintSegment(f, indent, "", 0); + fprint(f, "\n", + smiImport->module, smiImport->name); +} + + + +static void fprintImports(FILE *f, SmiModule *smiModule) +{ + SmiImport *smiImport; + int i; + + for (i = 0, smiImport = smiGetFirstImport(smiModule); + smiImport; + i++, smiImport = smiGetNextImport(smiImport)) { + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + fprintImport(f, 2 * INDENT, smiImport); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintTypedef(FILE *f, int indent, SmiType *smiType) +{ + SmiModule *parentModule; + SmiType *parentType; + + fprintSegment(f, indent, "name) { + fprint(f, " name=\"%s\"", smiType->name); + } + fprint(f, " basetype=\"%s\"", getStringBasetype(smiType->basetype)); + if (smiType->name && smiType->status != SMI_STATUS_UNKNOWN) { + fprint(f, " status=\"%s\"", getStringStatus(smiType->status)); + } + fprint(f, ">\n"); + + parentType = smiGetParentType(smiType); + parentModule = smiGetTypeModule(parentType); + if (parentType && parentType->name && + parentModule && strlen(parentModule->name)) { + fprintSegment(f, indent + INDENT, "\n", + parentModule->name, parentType->name); + } + fprintRanges(f, indent + INDENT, smiType); + fprintNamedNumbers(f, indent + INDENT, smiType); + fprintValue(f, indent + INDENT, &smiType->value, smiType); + fprintFormat(f, indent + INDENT, smiType->format); + fprintUnits(f, indent + INDENT, smiType->units); + fprintDescription(f, indent + INDENT, smiType->description); + fprintReference(f, indent + INDENT, smiType->reference); + + fprintSegment(f, indent, "\n", 0); +} + + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; + i++, smiType = smiGetNextType(smiType)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + fprintTypedef(f, 2 * INDENT, smiType); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintNode(FILE *f, int indent, SmiNode *smiNode, + SmiNode *lastSmiNode) +{ + SmiModule *smiModule; + SmiType *smiType; + char *tag = NULL; + + if (smiNode->nodekind == SMI_NODEKIND_NODE) { + tag = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_CAPABILITIES) { + tag = "node"; + } else if (smiNode->nodekind == SMI_NODEKIND_TABLE) { + tag = "table"; + } else if (smiNode->nodekind == SMI_NODEKIND_ROW) { + indent += INDENT; + tag = "row"; + } else if (smiNode->nodekind == SMI_NODEKIND_COLUMN) { + indent += 2 * INDENT; + tag = "column"; + } else if (smiNode->nodekind == SMI_NODEKIND_SCALAR) { + tag = "scalar"; + } + + if (lastSmiNode + && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN + && smiNode->nodekind != SMI_NODEKIND_COLUMN) { + fprintNodeEndTag(f, indent + INDENT, "row"); + fprintNodeEndTag(f, indent, "table"); + } + + smiType = smiGetNodeType(smiNode); + + fprintNodeStartTag(f, indent, tag, smiNode); + if (smiType && (smiType->basetype != SMI_BASETYPE_UNKNOWN)) { + fprintSegment(f, indent + INDENT, "\n", 0); + smiModule = smiGetTypeModule(smiType); + if (smiType->name && smiModule) { + fprintSegment(f, indent + 2 *INDENT, "", 0); + fprint(f, "\n", + smiModule->name, smiType->name); + } else { + fprintTypedef(f, indent + 2 * INDENT, smiType); + } + fprintSegment(f, indent + INDENT, "\n", 0); + } + if ((smiNode->nodekind != SMI_NODEKIND_TABLE) && + (smiNode->nodekind != SMI_NODEKIND_ROW) && + (smiNode->nodekind != SMI_NODEKIND_CAPABILITIES) && + (smiNode->nodekind != SMI_NODEKIND_NODE)) { + fprintAccess(f, indent + INDENT, smiNode->access); + } + if (smiType) { + fprintValue(f, indent + INDENT, &smiNode->value, smiType); + } + fprintFormat(f, indent + INDENT, smiNode->format); + fprintUnits(f, indent + INDENT, smiNode->units); + if (smiNode->nodekind == SMI_NODEKIND_ROW) { + fprintIndex(f, indent + INDENT, smiNode); + } + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + if (smiNode->nodekind != SMI_NODEKIND_ROW + && smiNode->nodekind != SMI_NODEKIND_TABLE) { + fprintNodeEndTag(f, indent, tag); + } +} + + + +static void fprintNodes(FILE *f, SmiModule *smiModule) +{ + int i; + SmiNode *smiNode, *lastSmiNode; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR | + SMI_NODEKIND_CAPABILITIES; + + for (i = 0, lastSmiNode = NULL, + smiNode = smiGetFirstNode(smiModule, nodekinds); + smiNode; + i++, lastSmiNode = smiNode, + smiNode = smiGetNextNode(smiNode, nodekinds)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + + fprintNode(f, 2 * INDENT, smiNode, lastSmiNode); + } + + if (lastSmiNode + && lastSmiNode->nodekind == SMI_NODEKIND_COLUMN) { + fprintNodeEndTag(f, 3 * INDENT, "row"); + fprintNodeEndTag(f, 2 * INDENT, "table"); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintNotification(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "notification", smiNode); + + fprintSegment(f, indent + INDENT, "\n", 0); + fprintElementList(f, indent + 2 * INDENT, "object", + smiGetFirstElement(smiNode)); + fprintSegment(f, indent + INDENT, "\n", 0); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintNodeEndTag(f, indent, "notification"); +} + + + +static void fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_NOTIFICATION); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_NOTIFICATION)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + fprintNotification(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintGroup(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "group", smiNode); + + fprintSegment(f, indent + INDENT, "\n", 0); + fprintElementList(f, indent + 2 * INDENT, "member", + smiGetFirstElement(smiNode)); + fprintSegment(f, indent + INDENT, "\n", 0); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintNodeEndTag(f, indent, "group"); +} + + + +static void fprintGroups(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_GROUP); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_GROUP)) { + + if (i == 0) { + fprintSegment(f, INDENT, "\n", 0); + } + fprintGroup(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void fprintComplGroups(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *optSmiNode; + SmiModule *optSmiModule; + SmiOption *smiOption; + + if (! smiGetFirstElement(smiNode) && !smiGetFirstOption(smiNode)) { + return; + } + + fprintSegment(f, indent, "\n", 0); + fprintElementList(f, indent + INDENT, "mandatory", + smiGetFirstElement(smiNode)); + + for(smiOption = smiGetFirstOption(smiNode); + smiOption; + smiOption = smiGetNextOption(smiOption)) { + optSmiNode = smiGetOptionNode(smiOption); + optSmiModule = smiGetNodeModule(optSmiNode); + fprintSegment(f, indent + INDENT, "", 0); + fprint(f, "\n", 0); + } + + fprintSegment(f, indent, "\n", 0); +} + + + +static void fprintRefinement(FILE *f, int indent, SmiRefinement *smiRefinement) +{ + SmiModule *smiModule; + SmiNode *smiNode; + SmiType *smiType; + + smiNode = smiGetRefinementNode(smiRefinement); + smiModule = smiGetNodeModule(smiNode); + + fprintSegment(f, indent, "\n", smiModule->name, smiNode->name); + + smiType = smiGetRefinementType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\n", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "\n", 0); + } + + smiType = smiGetRefinementWriteType(smiRefinement); + if (smiType) { + fprintSegment(f, indent + INDENT, "\n", 0); + fprintTypedef(f, indent + 2 * INDENT, smiType); + fprintSegment(f, indent + INDENT, "\n", 0); + } + + if (smiRefinement->access != SMI_ACCESS_UNKNOWN) { + fprintAccess(f, indent + INDENT, smiRefinement->access); + } + fprintDescription(f, indent + INDENT, smiRefinement->description); + fprintSegment(f, indent, "\n", 0); +} + + + +static void fprintRefinements(FILE *f, int indent, SmiNode *smiNode) +{ + SmiRefinement *smiRefinement; + int i; + + for(i = 0, smiRefinement = smiGetFirstRefinement(smiNode); + smiRefinement; + i++, smiRefinement = smiGetNextRefinement(smiRefinement)) { + + if (!i) { + fprintSegment(f, indent, "\n", 0); + } + + fprintRefinement(f, indent + INDENT, smiRefinement); + } + + if (i) { + fprintSegment(f, indent, "\n\n", 0); + } +} + + + +static void fprintCompliance(FILE *f, int indent, SmiNode *smiNode) +{ + fprintNodeStartTag(f, indent, "compliance", smiNode); + + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + fprintComplGroups(f, indent + INDENT, smiNode); + fprintRefinements(f, indent + INDENT, smiNode); + + fprintNodeEndTag(f, indent, "compliance"); +} + + + +static void fprintCompliances(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int i; + + for(i = 0, smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + i++, smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + + if (!i) { + fprintSegment(f, INDENT, "\n", 0); + } + + fprintCompliance(f, 2 * INDENT, smiNode); + } + + if (i) { + fprintSegment(f, INDENT, "\n\n", 0); + } +} + + + +static void dumpXml(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + fprint(f, "\n"); + if (!disabledoctype) { + fprint(f, "\n"); + } + fprint(f, "\n"); + fprint(f, "\n"); + fprint(f, "\n"); + + if (!disableschema) { + fprint(f, "\n"); + } else { + fprint(f, "\n"); + } + + fprintModule(f, modv[i]); + fprintImports(f, modv[i]); + fprintTypedefs(f, modv[i]); + fprintNodes(f, modv[i]); + fprintNotifications(f, modv[i]); + fprintGroups(f, modv[i]); + fprintCompliances(f, modv[i]); + + fprint(f, "\n"); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initXml() +{ + + static SmidumpDriverOption opt[] = { + { "no-schema", OPT_FLAG, &disableschema, 0, + "disable XML Schema spec in the toplevel element"}, + { "no-doctype", OPT_FLAG, &disabledoctype, 0, + "disable DOCTYPE spec in the XML prolog"}, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "xml", + dumpXml, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "intermediate SMI XML exchange format", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-xsd.c b/tools/dump-xsd.c new file mode 100644 index 0000000..6a50b55 --- /dev/null +++ b/tools/dump-xsd.c @@ -0,0 +1,2163 @@ +/* + * dump-xsd.c -- + * + * Operations to dump SMI module information as XML schema definitions. + * + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * (c) 2002 T. Klie, Technical University of Braunschweig. + * (c) 2002 F. Strauss, Technical University of Braunschweig. + * (c) 2007 T. Klie, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-xsd.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" +#include "fortopat.h" + + +#define INDENT 2 /* indent factor */ + +static int ind = 0; + +#ifndef MIN +#define MIN(a,b) ((a)) < ((b)) ? ((a)) : ((b)) +#endif /* #ifndef MIN */ + +static char *schemaLocation = "http://www.ibr.cs.tu-bs.de/projects/libsmi/xsd/"; +static int container = 0; +static char *containerBasename = "container"; +static int *nestAugmentedTables = 0; +static int *nestSubtables = 0; + +typedef struct XmlEscape { + char character; + char *escape; +} XmlEscape; + +static XmlEscape xmlEscapes [] = { + { '<', "<" }, + { '>', ">" }, + { '&', "&" }, + { 0, NULL } +}; + +typedef struct TypePrefix { + char *type; + char *prefix; + struct TypePrefix *next; +} TypePrefix; + +static TypePrefix *typePrefixes = NULL; + + + +/* some forward declarations */ +static void fprintElement( FILE *f, SmiNode *smiNode, SmiNode *parentNode ); +static char* getTypePrefix( char *typeName ); + +static char *getStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + +static char* getStringStatus(SmiStatus status) +{ + char *statStr; + + switch( status ) { + case SMI_STATUS_CURRENT: + statStr = "current"; + break; + case SMI_STATUS_DEPRECATED: + statStr = "deprecated"; + break; + case SMI_STATUS_OBSOLETE: + statStr = "obsolete"; + break; + case SMI_STATUS_MANDATORY: + statStr = "mandatory"; + break; + case SMI_STATUS_OPTIONAL: + statStr = "optional"; + break; + case SMI_STATUS_UNKNOWN: + default: + statStr = "unknown"; + break; + } + return statStr; +} + +static char* getStringAccess( SmiAccess smiAccess ) +{ + switch( smiAccess ) { + case SMI_ACCESS_NOT_IMPLEMENTED: return "not-implemented"; + case SMI_ACCESS_NOT_ACCESSIBLE : return "not-accessible"; + case SMI_ACCESS_NOTIFY : return "notify"; + case SMI_ACCESS_READ_ONLY : return "read-only"; + case SMI_ACCESS_READ_WRITE : return "read-write"; + case SMI_ACCESS_UNKNOWN: + default: return "unknown"; + } +} +#if 0 +static char +*getStringValue(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + } + break; + } + + return s; +} +#endif /* 0 */ + +static int smiPow( int base, unsigned int exponent ) +{ + unsigned int i; + int ret = 1; + + if( exponent == 0 ) { + return 1; + } + + for( i = 0; i < exponent; i++ ) { + ret *= base; + } + return ret; +} + +static void fprintSegment(FILE *f, int relindent, char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + + if ((ind == 0) || (ind + relindent == 0)) { + ind += relindent; + } else { + if (relindent < 0) ind += relindent; + fprintf(f, "%*c", ind * INDENT, ' '); + if (relindent > 0) ind += relindent; + } + vfprintf(f, fmt, ap); + + va_end(ap); +} + + + +static void fprintMultilineString(FILE *f, const char *s) +{ + int i, j, len; + + fprintSegment(f, 0, ""); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + for (j = 0; xmlEscapes[j].character; j++) { + if (xmlEscapes[j].character == s[i]) break; + } + if (xmlEscapes[j].character) { + fputs(xmlEscapes[j].escape, f); + } else { + putc(s[i], f); + } + if (s[i] == '\n') { + fprintSegment(f, 0, ""); + } + } + } +} + + + +static void fprintDocumentation(FILE *f, const char *description) +{ + if (description) { + fprintSegment(f, 1, "\n"); + fprintMultilineString(f, description); + fprintf(f, "\n"); + fprintSegment(f, -1, "\n"); + } +} + +static void fprintNamedNumber( FILE *f, SmiNamedNumber *nn ) +{ + fprintSegment( f, 1, "\n", nn->name ); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 0, "%d\n", + (int)nn->value.value.integer32 ); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); +} + + +static void fprintStdRestHead( FILE *f, SmiType *smiType ) +{ + char *baseTypeName = getStringBasetype(smiType->basetype); + char *prefix = getTypePrefix( baseTypeName ); + + if( prefix ) { + fprintSegment(f, 1, "\n", + prefix, baseTypeName ); + } + else { + fprintSegment(f, 1, "\n", baseTypeName ); + } +} + + +static void fprintHexOrAsciiType( FILE *f, SmiType *parent, + SmiInteger32 minLength, + SmiInteger32 maxLength, + char *name, int hex ) +{ + char *prefix = parent ? getTypePrefix( parent->name ) : NULL; + char *typeFlag = hex ? "Hex" : "Ascii"; + + if( name ) { + fprintSegment( f, 1, "\n", + name, typeFlag ); + } else { + fprintSegment( f, 1, "\n"); + } + if( prefix ) { + fprintSegment( f, 1, "\n", + prefix, parent->name, typeFlag ); + } + else { + fprintSegment( f, 1, "\n", + parent->name, typeFlag ); + } + + if( minLength > 0 ) { + fprintSegment( f, 0, "\n", + (int)minLength ); + } + if( maxLength > -1 ) { + fprintSegment( f, 0, "\n", + (int)maxLength ); + } + + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); +} + + +static int dhInParent( SmiType *smiType ) +{ + SmiType *parent = smiGetParentType( smiType ); + + if( smiType->format && parent->format ) { + return ! strcmp( smiType->format, parent->format ); + } + return 0; +} + +#define MD_DH_INT_NORMAL 1 +#define MD_DH_INT_DECIMAL 2 +#define MD_DH_INT_BIN 3 +#define MD_DH_INT_OCT 4 +#define MD_DH_INT_HEX 5 + +/* parse a (integer) display hint and specify the offset, if used */ +static int getIntDHType( char *hint, int *offset ) +{ + switch( hint[ 0 ] ) { + + case 'd': + if( hint[1] ) { + *offset = 0; + *offset = atoi( &hint[2] ); + return MD_DH_INT_DECIMAL; + } + return MD_DH_INT_NORMAL; + + case 'b': + /* binary value */ + return MD_DH_INT_BIN; + case 'o': + /* octet value */ + return MD_DH_INT_OCT; + case 'x': + /* hex value */ + return MD_DH_INT_HEX; + default: + /* should not occur */ + return 0; + } +} + + +static void fprintRestriction(FILE *f, SmiType *smiType) +{ + SmiRange *smiRange; + + /* print ranges etc. */ + switch( smiType->basetype ) { + + case SMI_BASETYPE_INTEGER32: + { + SmiInteger32 min = SMI_BASETYPE_INTEGER32_MIN; + SmiInteger32 max = SMI_BASETYPE_INTEGER32_MAX; + int offset = 0, useDecPoint = 0; + + if( smiType->format ) { + /* we have a display hint here, so check if we have to use + a decimal point */ + useDecPoint = + getIntDHType( smiType->format, &offset ) == MD_DH_INT_DECIMAL; + /* xxx: other display hint types (binary, oct, hex) */ + } + + if( useDecPoint ) { + fprintSegment( f, 1, "\n"); + fprintSegment( f, 0, "\n", offset ); + } + else { + fprintStdRestHead( f, smiType ); + } + + smiRange = smiGetFirstRange( smiType ); + while( smiRange ) { + if( min == SMI_BASETYPE_INTEGER32_MIN || + smiRange->minValue.value.integer32 < min ) { + min = smiRange->minValue.value.integer32; + } + if( max == SMI_BASETYPE_INTEGER32_MAX || + smiRange->maxValue.value.integer32 > max ) { + max = smiRange->maxValue.value.integer32; + } + smiRange = smiGetNextRange( smiRange ); + } + + /* print minimu value */ + if( useDecPoint ) { + fprintSegment( f, 0, "\n", + (int)min / smiPow( 10, offset ), + abs( (int)min % smiPow( 10, offset ) ) ); + } else { + fprintSegment( f, 0, "\n", + (int)min ); + } + + /* print maximum value */ + if( useDecPoint ) { + fprintSegment( f, 0, "\n", + (int)max / smiPow( 10, offset ), + abs( (int)max % smiPow( 10, offset ) ) ); + } else { + fprintSegment( f, 0, "\n", + (int)max ); + } + + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_OCTETSTRING: + { + SmiInteger32 minLength, maxLength; + unsigned int numSubRanges = 0; + + minLength = 0; + maxLength = -1; + + /* get range details */ + for( smiRange = smiGetFirstRange( smiType ); + smiRange; + smiRange = smiGetNextRange( smiRange ) ) { + if( minLength == 0 || + smiRange->minValue.value.integer32 < minLength ) { + minLength = smiRange->minValue.value.integer32; + } + if( smiRange->maxValue.value.integer32 > maxLength ) { + maxLength = smiRange->maxValue.value.integer32; + } + numSubRanges++; + } + + + + if( smiType->format && + ( smiType->decl == SMI_DECL_IMPLICIT_TYPE || + smiType->decl == SMI_DECL_TEXTUALCONVENTION ) && + ! dhInParent( smiType ) ) { + /* + fprintStringUnion( f, indent, smiType, + minLength, maxLength, 0, NULL ); + */ + char *pattern; + + fprintSegment( f, 1, "\n" ); + + /* create regexp */ + pattern = smiFormatToPattern(smiType->format, + smiGetFirstRange(smiType)); + if (pattern) { + fprintSegment( f, 0, "\n", pattern); + xfree(pattern); + } + else { + fprintf( f, "\n" ); + } + fprintSegment( f, -1, "\n"); + } + else { + SmiType *parent = smiGetParentType( smiType ); + /* + fprintStringUnion( f, indent, smiType, + minLength, maxLength, secondTime, + smiType->name ); + */ + if( parent ) { + if( parent->format ) { + char *pattern; + + pattern = smiFormatToPattern(parent->format, + smiGetFirstRange(smiType)); + if (pattern) { + fprintSegment( f, 1, "\n" ); + fprintSegment(f, 0, "\n", + pattern); + fprintSegment( f, -1, "\n"); + xfree(pattern); + } + } + + + else if( smiType->name && + ! strcmp( smiType->name, "IpAddress" ) ) { + SmiUnsigned32 lengths[] = {4, 4}; + lengths[0] = 4; lengths[1] = 4; + fprintSegment( f, 1, "\n" ); + fprintSegment( f, 0, "\n" ); + fprintSegment( f, -1, "\n"); + } + + else { + + + char *prefix = getTypePrefix( parent->name ); + + if( prefix ) { + fprintSegment( f, 1, "\n", + prefix, parent->name ); + } else { + fprintSegment( f, 1, "\n", + parent->name ); + } + + /* print length restriction */ + if( minLength > 0 ) + fprintSegment( f, 0, "\n", + (int)minLength ); + if( maxLength > -1 ) + fprintSegment( f, 0, "\n", + (int)maxLength ); + fprintSegment( f, -1, "\n"); + } + + + } + } + break; + } + + case SMI_BASETYPE_FLOAT128: + { +/* SmiFloat128 min, max; */ + fprintStdRestHead( f, smiType ); + + /* xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_FLOAT64: + { +/* SmiFloat64 min,max;*/ + fprintStdRestHead( f, smiType ); + + /* xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_FLOAT32: + { +/* SmiFloat32 min,max;*/ + fprintStdRestHead( f, smiType ); + + /* xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_INTEGER64: + { +/* SmiInteger64 min,max;*/ + fprintStdRestHead( f, smiType ); + + /* xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_UNSIGNED64: + { + SmiUnsigned64 min, max; + + min = SMI_BASETYPE_UNSIGNED64_MIN; + max = SMI_BASETYPE_UNSIGNED64_MAX; + + fprintStdRestHead( f, smiType ); + + smiRange = smiGetFirstRange( smiType ); + while( smiRange ) { + if( smiRange->minValue.value.unsigned64 < min ) { + min = smiRange->minValue.value.unsigned64; + } + if( smiRange->maxValue.value.unsigned64 > max ) { + max = smiRange->maxValue.value.unsigned64; + } + smiRange = smiGetNextRange( smiRange ); + } + fprintSegment( f, 0, "\n", + (unsigned long)min ); + + fprintSegment( f, 0, "\n", + (unsigned long)max ); + + fprintSegment(f, -1, "\n"); + + break; + } + + case SMI_BASETYPE_UNSIGNED32: + { + SmiUnsigned32 min, max; + + min = 0; + max = 4294967295UL; + + fprintStdRestHead( f, smiType ); + + smiRange = smiGetFirstRange( smiType ); + while( smiRange ) { + if( smiRange->minValue.value.unsigned32 < min ) { + min = smiRange->minValue.value.unsigned32; + } + if( smiRange->maxValue.value.unsigned32 > max ) { + max = smiRange->maxValue.value.unsigned32; + } + smiRange = smiGetNextRange( smiRange ); + } + fprintSegment( f, 0, "\n", + (unsigned int)min ); + + fprintSegment( f, 0, "\n", + (unsigned int)max ); + + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_BITS: + { + SmiNamedNumber *nn; + + fprintSegment(f, 1, "\n"); + + /* iterate named numbers */ + for( nn = smiGetFirstNamedNumber( smiType ); + nn; + nn = smiGetNextNamedNumber( nn ) ) { + fprintNamedNumber( f, nn ); + } + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_OBJECTIDENTIFIER: + fprintSegment( f, 0, + "\n"); + break; + case SMI_BASETYPE_UNKNOWN: + /* should not occur */ + break; + case SMI_BASETYPE_POINTER: + /* TODO */ + break; + } +} + + +static unsigned int getNamedNumberCount( SmiType *smiType ) +{ + SmiNamedNumber *nn; + unsigned int ret = 0; + + for( nn = smiGetFirstNamedNumber( smiType ); + nn; + nn = smiGetNextNamedNumber( nn ) ) { + ret++; + } + + return ret; +} + + +static void fprintBitList( FILE *f, SmiType *smiType ) +{ + fprintSegment( f, 1, "\n" ); + fprintSegment( f, 1, "\n" ); + fprintSegment( f, 1, "\n" ); + fprintSegment( f, 1, "\n" ); + fprintRestriction( f, smiType ); + fprintSegment( f, -1, "\n" ); + fprintSegment( f, -1, "\n" ); + fprintSegment( f, -1, "\n"); + fprintSegment( f, 0, "\n", + getNamedNumberCount( smiType ) ); + fprintSegment( f, -1, "\n"); +} +static int getNumSubRanges( SmiType *smiType ) +{ + SmiRange *smiRange; + int num = 0; + + for( smiRange = smiGetFirstRange( smiType ); + smiRange; + smiRange = smiGetNextRange( smiRange ) ) { + num++; + } + + return num; +} + + +static void fprintSubRangeType( FILE *f, + SmiRange *smiRange, SmiType *smiType ) +{ + + switch( smiType->basetype ) { + + case SMI_BASETYPE_UNSIGNED32: { + SmiUnsigned32 min, max; + + min = 0; + max = 4294967295UL; + + if( smiRange->minValue.value.unsigned32 < min ) { + min = smiRange->minValue.value.unsigned32; + } + if( smiRange->maxValue.value.unsigned32 > max ) { + max = smiRange->maxValue.value.unsigned32; + } + + fprintSegment( f, 1, "\n"); + fprintStdRestHead( f, smiType ); + + fprintSegment( f, 0, "\n", + (unsigned int)min ); + + fprintSegment( f, 0, "\n", + (unsigned int)max ); + + fprintSegment(f, -1, "\n"); + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_INTEGER32: { + SmiInteger32 min, max; + + min = SMI_BASETYPE_INTEGER32_MIN; + max = SMI_BASETYPE_INTEGER32_MAX; + + if( min == SMI_BASETYPE_INTEGER32_MIN || + smiRange->minValue.value.integer32 < min ) { + min = smiRange->minValue.value.integer32; + } + if( max == SMI_BASETYPE_INTEGER32_MAX || + smiRange->maxValue.value.integer32 > max ) { + max = smiRange->maxValue.value.integer32; + } + + fprintSegment( f, 1, "\n"); + fprintStdRestHead( f, smiType ); + + fprintSegment( f, 0, "\n", (int)min ); + + fprintSegment( f, 0, "\n", (int)max ); + + fprintSegment(f, -1, "\n"); + fprintSegment(f, -1, "\n"); + break; + + } + + case SMI_BASETYPE_OCTETSTRING: { + SmiInteger32 minLength, maxLength; + + minLength = 0; + maxLength = -1; + + if( smiRange->minValue.value.integer32 < minLength ) { + minLength = smiRange->minValue.value.integer32; + } + if( smiRange->maxValue.value.integer32 > maxLength ) { + maxLength = smiRange->maxValue.value.integer32; + } + fprintHexOrAsciiType( f, smiType, + minLength, maxLength, NULL, 1 ); + break; + } + + case SMI_BASETYPE_FLOAT128: + { +/* SmiFloat128 min, max; + xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_FLOAT64: + { +/* SmiFloat64 min,max; + xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_FLOAT32: + { +/* SmiFloat32 min,max; + xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_INTEGER64: + { +/* SmiInteger64 min,max; + xxx, only SMIng */ + break; + } + + case SMI_BASETYPE_UNSIGNED64: + { + SmiUnsigned64 min, max; + + min = SMI_BASETYPE_UNSIGNED64_MIN; + max = SMI_BASETYPE_UNSIGNED64_MAX; + + if( smiRange->minValue.value.unsigned64 < min ) { + min = smiRange->minValue.value.unsigned64; + } + if( smiRange->maxValue.value.unsigned32 > max ) { + max = smiRange->maxValue.value.unsigned64; + } + + fprintSegment( f, 1, "\n"); + fprintStdRestHead( f, smiType ); + + fprintSegment( f, 0, "\n", + (unsigned long)min ); + + fprintSegment( f, 0, "\n", + (unsigned long)max ); + + fprintSegment(f, -1, "\n"); + fprintSegment(f, -1, "\n"); + break; + } + + case SMI_BASETYPE_ENUM: + case SMI_BASETYPE_BITS: + case SMI_BASETYPE_OBJECTIDENTIFIER: + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_POINTER: + /* should not occur */ + break; + + } +} + +static void fprintDisplayHint( FILE *f, char *format ) +{ + fprintSegment( f, 0, "%s\n", format ); +} + +static void fprintLengths(FILE *f, SmiType *smiType) +{ + SmiRange *smiRange = smiGetFirstRange(smiType); + + if (! smiRange) { + return; + } + + fprintSegment(f, 1, "\n"); + for (smiRange = smiGetFirstRange(smiType); + smiRange; smiRange = smiGetNextRange(smiRange)) { + fprintSegment(f, 0, "\n", + smiRange->minValue.value.unsigned32, + smiRange->maxValue.value.unsigned32); + } + fprintSegment( f, -1, "\n"); +} + + +static void fprintTypedef(FILE *f, SmiType *smiType, const char *name) +{ + SmiRange *smiRange; + unsigned int numSubRanges = getNumSubRanges( smiType ); + + if ( name ) { + fprintSegment(f, 1, "\n", name); + } + + else { + /* unnamed simple type */ + fprintSegment(f, 1, "\n"); + } + + if( smiType->description ) { + fprintSegment( f, 1, "\n"); + fprintDocumentation(f, smiType->description); + if( smiType->format ) { + fprintSegment( f, 1, "\n"); + fprintDisplayHint( f, smiType->format ); + if( smiType->basetype == SMI_BASETYPE_OCTETSTRING ) { + fprintLengths( f, smiType ); + } + fprintSegment( f, -1, "\n"); + } + fprintSegment( f, -1, "\n"); + } + + if( ( numSubRanges > 1 ) && + ( smiType->basetype != SMI_BASETYPE_OCTETSTRING ) ) { + + fprintSegment( f, 1, "\n"); + + for( smiRange = smiGetFirstRange( smiType ); + smiRange; + smiRange = smiGetNextRange( smiRange ) ) { + fprintSubRangeType( f, smiRange, smiType ); + } + + fprintSegment( f, -1, "\n"); + } + else if( smiType->basetype == SMI_BASETYPE_BITS ) { + fprintBitList( f, smiType ); + } + else { + fprintRestriction(f, smiType ); + } + fprintSegment(f, -1, "\n"); + + /* print an empty line after global types */ + if( smiType->decl != SMI_DECL_IMPLICIT_TYPE && name ) { + fprintf( f, "\n" ); + } +} + + +static char* getTypePrefix( char *typeName ) +{ + TypePrefix *iterTPr; + + if( !typeName ) { + return NULL; + } + + for( iterTPr = typePrefixes; iterTPr; iterTPr = iterTPr->next ) { + if( ! strcmp( iterTPr->type, typeName ) ) { + return iterTPr->prefix; + } + } + + return NULL; +} + + +static void fprintAnnotationElem( FILE *f, SmiNode *smiNode ) { + int i; + + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + + if( smiNode->nodekind == SMI_NODEKIND_ROW && + ( smiNode->implied || smiNode->create ) ) { + fprintSegment( f, 0, "implied ) { + fprintf( f, " implied=\"yes\"" ); + } + if( smiNode->create ) { + fprintf( f, " create=\"yes\"" ); + } + fprintf( f, "/>\n" ); + } + + fprintSegment( f, 0, "%s\n", + getStringAccess( smiNode->access ) ); + fprintSegment( f, 0, ""); + for (i = 0; i < smiNode->oidlen; i++) { + fprintf(f, i ? ".%u" : "%u", smiNode->oid[i]); + } + fprintf( f, "\n" ); + + fprintSegment( f, 0, "%s\n", + getStringStatus( smiNode->status ) ); + if( smiNode->value.basetype != SMI_BASETYPE_UNKNOWN ) { + char *defval = smiRenderValue( &smiNode->value, + smiGetNodeType( smiNode ), + SMI_RENDER_FORMAT | SMI_RENDER_NAME ); + fprintSegment( f, 0, "%s\n", defval ); + + } + + + if( smiNode->format ) { + fprintDisplayHint( f, smiNode->format ); + } + + if( smiNode->units ) { + fprintSegment( f, 0, "%s\n", smiNode->units ); + } + + fprintSegment( f, -1, "\n"); + fprintDocumentation( f, smiNode->description ); + fprintSegment( f, -1, "\n"); + +} + +static int hasChildren( SmiNode *smiNode, SmiNodekind nodekind ) +{ + SmiNode *iterNode; + int childNodeCount = 0; + + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ){ + if( nodekind & iterNode->nodekind ) { + childNodeCount++; + } + } + return childNodeCount; +} + +static void +fprintTypeWithHint( FILE *f, SmiNode *smiNode, SmiType *smiType, char *hint ) +{ + char *pattern; + + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintDisplayHint( f, hint ); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, 1, "\n"); + + pattern = smiFormatToPattern(hint, smiGetFirstRange(smiType)); + if (pattern) { + fprintSegment( f, 0, "\n", pattern); + xfree(pattern); + } + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); +} + + +static char *getParentDisplayHint( SmiType *smiType ) +{ + SmiType *iterType; + + for( iterType = smiGetParentType( smiType ); + iterType; + iterType = smiGetParentType( iterType ) ) { + if( iterType->format ) { + return iterType->format; + } + } + return NULL; +} + + +static void fprintIndexAttr( FILE *f, SmiNode *smiNode, SmiNode *augments ) +{ + char *typeName, *prefix; + SmiType *smiType; + + smiType = smiGetNodeType( smiNode ); + if( !smiType ) { +/* fprint( f, "\n", smiNode->name );*/ + return; + } + + typeName = smiType->name ? + smiType->name : + getStringBasetype( smiType->basetype ); + prefix = getTypePrefix( typeName ); + + + if( smiType->basetype == SMI_BASETYPE_BITS ) { + fprintSegment( f, 1, "\n", + smiNode->name, + smiNode->name, + getStringBasetype( smiType->basetype ) ); + fprintAnnotationElem( f, smiNode ); + } + + else if( smiType->basetype == SMI_BASETYPE_OCTETSTRING ) { + + if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + char *hint = getParentDisplayHint( smiType ); + + fprintSegment( f, 1, "\n", smiNode->name ); + fprintAnnotationElem( f, smiNode ); + if( ! hint ) { + fprintTypedef( f, smiType, NULL ); + } + else { + fprintTypeWithHint( f, smiNode, smiType, hint ); + } + } + + else { + if( prefix ) { + fprintSegment( f, 1, "\n", + smiNode->name, prefix, typeName ); + } + else { + fprintSegment( f, 1, "\n", + smiNode->name, typeName ); + } + fprintAnnotationElem( f, smiNode ); + } + } + + /* check for other (implicit) types */ + else if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + fprintSegment( f, 1, "\n", + smiNode->name ); + fprintAnnotationElem( f, smiNode ); + fprintTypedef( f, smiType, NULL ); + } + + else { + if( prefix ) { + fprintSegment( f, 1,"name, prefix, typeName ); + fprintf( f, "use=\"required\">\n" ); + } + else { + fprintSegment( f, 1, "name, typeName ); + fprintf( f, "use=\"required\">\n" ); + } + + if( augments ) { + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 0, "%s\n", augments->name ); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + } + else { + fprintAnnotationElem( f, smiNode ); + } + } + fprintSegment( f, -1, "\n"); +} + +static int containsIndex( SmiNode *parentNode, SmiNode *idxNode ) +{ + SmiElement *iterElement; + + + for( iterElement = smiGetFirstElement( parentNode ); + iterElement; + iterElement = smiGetNextElement( iterElement ) ) { + SmiNode *iterNode = smiGetElementNode( iterElement ); + if( iterNode == idxNode ) + return 1; + } + return 0; +} + +static void fprintIndex( FILE *f, + SmiNode *smiNode, SmiNode *augments, SmiNode *parent ) +{ + SmiNode *iterNode; + SmiElement *iterElem; + + /* iterate INDEX columns */ + for( iterElem = smiGetFirstElement( smiNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + iterNode = smiGetElementNode( iterElem ); + if( ! parent || (parent && !containsIndex( parent, iterNode ) ) ) { + fprintIndexAttr( f, iterNode, augments ); + } + } + + /* print AUGMENTS-clause */ + iterNode = smiGetRelatedNode( smiNode ); + if( iterNode ) { + fprintIndex( f, iterNode, iterNode, NULL ); + } +} + +/* counts index elements of a table row node */ +static int numIndex( SmiNode *smiNode ) +{ + SmiElement *iterElem; + int ret = 0; + + for( iterElem = smiGetFirstElement( smiNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + ret++; + } + return ret; +} + + +/* checks if the second node is a subtable of the first node */ +static int +isSubTable( SmiNode *smiNode, SmiNode *subNode ) +{ + SmiElement *iterElement; + unsigned int numIdx = numIndex( smiNode ), numSubIdx = numIndex( subNode ); + + /* compare number of index elements */ + if( numSubIdx <= numIdx ) { + /* does not have more index elements --> no subtable */ + return 0; + } + + /* compare all index elements */ + for( iterElement = smiGetFirstElement( smiNode ); + iterElement; + iterElement = smiGetNextElement( iterElement ) ) { + SmiElement *iterSubElement = smiGetFirstElement( subNode ); + SmiNode *iterSubNode; + SmiNode *idxNode = smiGetElementNode( iterElement ); + + for( iterSubElement = smiGetFirstElement( subNode ); + iterSubElement; + iterSubElement = smiGetNextElement( iterSubElement ) ) { + + iterSubNode = smiGetElementNode( iterSubElement ); + if( idxNode == iterSubNode ){ + return 1; + } + } + } + return 0; +} + + +static void fprintComplexType( FILE *f, SmiNode *smiNode, const char *name, + SmiNode *parent ) +{ + SmiNode *iterNode; + int numChildren; + + if( name ) { + fprintSegment( f, 1, "\n", + smiNode->name ); + } else { + fprintSegment( f, 1, "\n" ); + } + +/* fprintAnnotationElem( f, smiNode ); */ + + numChildren = hasChildren( smiNode, SMI_NODEKIND_ANY ); + + fprintSegment( f, 1, "\n"); + + /* print child elements */ + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ) { + + fprintElement( f, iterNode, NULL ); + + } + + /* print augmentations */ + if( nestAugmentedTables ) { + for( iterNode = smiGetFirstNode( smiGetNodeModule( smiNode ), + SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + SmiNode *augmNode = smiGetRelatedNode( iterNode ); + if( augmNode == smiNode ) { + SmiNode *augIterNode; + for( augIterNode = smiGetFirstChildNode( iterNode ); + augIterNode; + augIterNode = smiGetNextChildNode( augIterNode ) ) { + + fprintElement( f, augIterNode, NULL ); + } + } + } + } + + /* print subtables */ + if( nestSubtables ) { + for( iterNode = smiGetFirstNode( smiGetNodeModule( smiNode ), + SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + if( isSubTable( smiNode, iterNode ) ) { +/* fputs( "\n", f );*/ + fprintElement( f, iterNode, smiNode ); +/* fputs( "\n", f );*/ + } + } + } + + fprintSegment( f, -1, "\n"); + fprintIndex( f, smiNode, NULL, parent ); + + fprintSegment( f, -1, "\n"); + if( name ) { + /* we are printing out a global type, + so let's leave a blank line after it. */ + fprintf( f, "\n" ); + } + + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ) { + if( iterNode->nodekind == SMI_NODEKIND_NODE ) { + fprintComplexType( f, iterNode, iterNode->name, NULL ); + } + } + +} + + +static void fprintElement( FILE *f, SmiNode *smiNode, SmiNode *parentNode ) +{ + switch( smiNode->nodekind ) { + SmiType *smiType; + + case SMI_NODEKIND_NODE : + { + SmiNode *iterNode; + + fprintSegment( f, 1, "\n", smiNode->name); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ) { + if( iterNode->nodekind == SMI_NODEKIND_SCALAR ) { + fprintElement( f, iterNode, NULL ); + } + } + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + } + break; + + case SMI_NODEKIND_TABLE : + { + SmiNode *iterNode; + + /* ignore tables and just include their entries */ + for( iterNode = smiGetFirstChildNode( smiNode ); + iterNode; + iterNode = smiGetNextChildNode( iterNode ) ) { + fprintElement( f, iterNode, NULL ); + } + break; + } + + case SMI_NODEKIND_ROW: + + fprintSegment( f, 1, "\n", + smiNode->name ); + + fprintAnnotationElem( f, smiNode ); + + fprintComplexType( f, smiNode, NULL, parentNode ); + fprintSegment( f, -1, "\n"); + break; + + case SMI_NODEKIND_SCALAR: + case SMI_NODEKIND_COLUMN: + { + SmiElement *iterElem; + char *prefix; + char *typeName; + + /* check if we are index column */ + for( iterElem = smiGetFirstElement( smiGetParentNode( smiNode ) ) ; + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + if( smiNode == smiGetElementNode( iterElem ) ) { + /* we are index coulumn ==> do not print element */ + return; + } + } + + if( smiNode->access < SMI_ACCESS_READ_ONLY ) { + /* only print accessible nodes */ + return; + } + + smiType = smiGetNodeType( smiNode ); + + if( smiType->name ) { + typeName = smiType->name; + } + else { + typeName = getStringBasetype( smiType->basetype ); + } + prefix = getTypePrefix( typeName ); + +#if 0 + if( smiType->basetype == SMI_BASETYPE_BITS ) { + fprintSegment( f, 1, "\n", + smiNode->name, + smiNode->name, + getStringBasetype( smiType->basetype ) ); + fprintAnnotationElem( f, smiNode ); + } + +// else if( smiType->basetype == SMI_BASETYPE_OCTETSTRING ) { +#endif /* 0 */ + + if( smiType->basetype == SMI_BASETYPE_OCTETSTRING ) { + if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + + char *hint = getParentDisplayHint( smiType ); + + fprintSegment( f, 1, "\n", smiNode->name ); + fprintAnnotationElem( f, smiNode ); + if( ! hint ) { + fprintTypedef( f, smiType, NULL ); + } + else { + fprintTypeWithHint( f, smiNode, smiType, hint ); + } + } + + else { + if( prefix ) { + fprintSegment( f, 1, "\n", + smiNode->name, prefix, typeName ); + } + else { + fprintSegment( f, 1, "\n", + smiNode->name, typeName ); + } + fprintAnnotationElem( f, smiNode ); + } + } + + else if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + fprintSegment( f, 1, "\n", + smiNode->name ); + fprintAnnotationElem( f, smiNode ); + fprintTypedef( f, smiType, NULL ); + } + + else { + if( prefix ) { + fprintSegment( f, 1, "\n", + smiNode->name, prefix, typeName ); + } + else { + fprintSegment( f, 1, "\n", + smiNode->name, typeName ); + } + fprintAnnotationElem( f, smiNode ); + } + fprintSegment( f, -1, "\n"); + break; + } + + case SMI_NODEKIND_NOTIFICATION: + fprintSegment( f, 0, "\n", smiNode->name ); + break; + + default: + fprintf( f, "\n\n", smiNode->nodekind ); + + } +} + + +static void fprintImplicitTypes( FILE *f, SmiModule *smiModule ) +{ + SmiNode *iterNode; + SmiType *smiType; + + for(iterNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN); + iterNode; + iterNode = smiGetNextNode(iterNode, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN)) { + smiType = smiGetNodeType( iterNode ); + if( smiType ) { + switch( smiType->basetype ) { + + case SMI_BASETYPE_BITS: + if( ! getTypePrefix( smiType->name ) ) { + fprintTypedef( f, smiType, iterNode->name ); + break; + } + + case SMI_BASETYPE_OCTETSTRING: +#if 0 + if( smiType->decl == SMI_DECL_IMPLICIT_TYPE ) { + fprintTypedef( f, INDENT, smiType, iterNode->name ); + } +#endif /* 0 */ + break; + default: + break; + } + } + } +} + + +#if 0 +static void fprintRows( FILE *f, SmiModule *smiModule ) +{ + SmiNode *iterNode; + + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + if( hasChildren( iterNode, SMI_NODEKIND_COLUMN | SMI_NODEKIND_TABLE ) ){ + fprintElement( f, iterNode, NULL ); + } + } +} +#endif + +static void fprintImports( FILE *f, SmiModule *smiModule ) +{ + SmiImport *iterImp; + char *lastModName = ""; + + fprintSegment( f, 0, "\n", schemaLocation, schemaLocation ); + for( iterImp = smiGetFirstImport( smiModule ); + iterImp; + iterImp = smiGetNextImport( iterImp ) ) { + /* assume imports to be ordered by module names */ + if( strcmp( iterImp->module, lastModName ) ) { + fprintSegment( f, 0, "\n", + schemaLocation, iterImp->module, + schemaLocation, iterImp->module ); + } + lastModName = iterImp->module; + } + fprintf( f, "\n"); + +} + + +/* + * Check if given table io a sub table of another table. + * If so, its parent table is returned (NULL otherwise). + */ +static SmiNode *isASubTable( SmiNode *smiNode, SmiModule *smiModule ) +{ + SmiNode *iterNode; + int numIdxDiff = -1; + SmiNode *retNode = NULL; + + for( iterNode = smiGetFirstNode( smiModule, + SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, + SMI_NODEKIND_ROW ) ) { + + if( isSubTable( iterNode, smiNode ) ) { + + if( (numIdxDiff == -1) || + ((numIndex( smiNode ) - numIndex( iterNode )) < numIdxDiff) ) { + retNode = iterNode; + numIdxDiff = numIndex( smiNode ) - numIndex( iterNode ); + } + + } + } + return retNode; +} + + +static void fprintGroupTypes( FILE *f, SmiModule *smiModule ) +{ + SmiNode *iterNode, *iterNode2; + + /* scalar groups */ + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_NODE ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_NODE ) ) { + if( hasChildren( iterNode, SMI_NODEKIND_SCALAR ) ) { + fprintSegment(f, 1, "\n", + iterNode->name); + fprintSegment( f, 1, "\n"); + for( iterNode2 = smiGetFirstChildNode( iterNode ); + iterNode2; + iterNode2 = smiGetNextChildNode( iterNode2 ) ) { + if( iterNode2->nodekind == SMI_NODEKIND_SCALAR ) { + fprintElement( f, iterNode2, NULL ); + } + } + fprintSegment( f, -1, "\n"); + fprintSegment(f, -1, "\n"); + } + } + + /* rows */ + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + if( hasChildren( iterNode, + SMI_NODEKIND_COLUMN | SMI_NODEKIND_TABLE ) ){ + + /* skip nested subtables here */ + if( nestSubtables ){ + if( isASubTable( iterNode, smiModule ) != NULL ) { + continue; + } + } + + /* skip table augmentations here */ + if( nestAugmentedTables ) { + if( iterNode->indexkind == SMI_INDEX_AUGMENT ) { + continue; + } + } + + fprintComplexType( f, iterNode, iterNode->name, NULL ); + + } + } +} + + +#if 0 +static void fprintNotifications( FILE *f, SmiModule *smiModule ) +{ + SmiNode *iterNode; + + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_NOTIFICATION ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_NOTIFICATION ) ) { + fprintElement( f, iterNode, NULL ); + } +} +#endif + + +static void fprintModuleHead(FILE *f, SmiModule *smiModule) +{ + if( smiModule->description ) { + fprintSegment(f, 1, "\n"); + fprintDocumentation(f, smiModule->description); + fprintSegment(f, -1, "\n\n"); + } + +} + + +static void fprintKey( FILE *f, SmiNode *smiNode ) +{ + SmiNode *relNode; + SmiElement *iterElem; + + switch( smiNode->indexkind ) { + + case SMI_INDEX_INDEX: + + /* print key */ +/* fprintSegment( f, 1, "\n", smiNode->name ); + fprintSegment( f, 0, "\n", smiNode->name ); + for( iterElem = smiGetFirstElement( smiNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + SmiNode *indexNode = smiGetElementNode( iterElem ); + fprintSegment( f, 0, "\n", indexNode->name ); + } + fprintSegment( f, -1, "\n\n");*/ + break; + + case SMI_INDEX_AUGMENT: + + /* print keyref */ + fprintSegment( f, 1, "name ); + fprintf( f, "refer=\"%sKey\">\n", relNode->name ); + fprintSegment( f, 0, "\n", smiNode->name ); + for( iterElem = smiGetFirstElement( relNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + SmiNode *indexNode = smiGetElementNode( iterElem ); + fprintSegment( f, 0, "\n", indexNode->name ); + } + fprintSegment( f, -1, "\n"); + + /* print unique clause */ + fprintSegment( f, 1, "\n", smiNode->name ); + fprintSegment( f, 0, "\n", smiNode->name ); + for( iterElem = smiGetFirstElement( relNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + SmiNode *indexNode = smiGetElementNode( iterElem ); + fprintSegment( f, 0, "\n", indexNode->name ); + } + fprintSegment( f, -1, "\n\n"); + break; + + case SMI_INDEX_REORDER: + case SMI_INDEX_SPARSE: + case SMI_INDEX_EXPAND: + /* SMIng, not implemented yet */ + break; + + default: + fprintf( f, "\n" ); + break; + } +} + + +static void fprintGroupElements(FILE *f, SmiModule *smiModule) +{ + SmiNode *iterNode; + + /* scalar groups */ + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_NODE ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_NODE ) ) { + if( hasChildren( iterNode, SMI_NODEKIND_SCALAR ) ) { + + if (container) { + fprintSegment(f, 1, "\n", + iterNode->name, + smiModule->name, iterNode->name); + } else { + fprintSegment(f, 1, "\n", + iterNode->name, iterNode->name); + } + fprintAnnotationElem( f, iterNode ); + fprintSegment( f, -1, "\n" ); + } + } + + /* rows */ + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + if( hasChildren( iterNode, SMI_NODEKIND_COLUMN | SMI_NODEKIND_TABLE ) ){ + /* skip nested subtables here */ + if( nestSubtables ){ + if( isASubTable( iterNode, smiModule ) != NULL ) { + continue; + } + } + + /* skip table augmentations here */ + if( nestAugmentedTables ) { + if( iterNode->indexkind == SMI_INDEX_AUGMENT ) { + continue; + } + } + + if (container) { + fprintSegment(f, 1, "\n", + iterNode->name, + smiModule->name, iterNode->name); + fprintKey( f, iterNode ); + } else { + fprintSegment(f, 1, "\n", + iterNode->name, iterNode->name); + } + fprintAnnotationElem( f, iterNode ); + fprintSegment( f, -1, "\n" ); + } + } +} + + +static char *getSubTableXPath( SmiNode *smiNode, SmiModule *smiModule ) +{ + char *ret; + SmiNode *parentTable = isASubTable( smiNode, smiModule ); + + if( parentTable ) { + smiAsprintf( &ret, "%s/%s", + getSubTableXPath( parentTable, smiModule ), + smiNode->name ); + } + else { + smiAsprintf( &ret, "%s", smiNode->name ); + } + return ret; +} + + +static void fprintKeys( FILE *f, SmiModule *smiModule ) +{ + + SmiNode *iterNode; + + for( iterNode = smiGetFirstNode( smiModule, SMI_NODEKIND_ROW ); + iterNode; + iterNode = smiGetNextNode( iterNode, SMI_NODEKIND_ROW ) ) { + + SmiElement *iterElem; + + /* print only keys for base tables */ + if( iterNode->indexkind != SMI_INDEX_INDEX ) { + continue; + } + + /* print key */ + fprintSegment( f, 1, "\n", iterNode->name ); + fprintSegment( f, 0, "\n", + nestSubtables ? + getSubTableXPath( iterNode, smiModule ) : iterNode->name ); + + for( iterElem = smiGetFirstElement( iterNode ); + iterElem; + iterElem = smiGetNextElement( iterElem ) ) { + SmiNode *indexNode = smiGetElementNode( iterElem ); + fprintSegment( f, 0, "\n", indexNode->name ); + } + fprintSegment( f, -1, "\n\n"); + } + + +} + + +static void fprintContextHead(FILE *f) +{ + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); + fprintSegment( f, 1, "\n"); +} + + +static void fprintContextFoot(FILE *f, SmiModule **modv, int modc) +{ + int i; + + fprintSegment( f, -1, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, 0, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + fprintSegment( f, -1, "\n"); + + for( i=0; i < modc; i++ ) { + fprintKeys( f, modv[ i ] ); + } + fprintSegment( f, -1, "\n\n"); +} + + +static void fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType; + + for(i = 0, smiType = smiGetFirstType(smiModule); + smiType; + i++, smiType = smiGetNextType(smiType)) { + fprintf(f, "\n"); + fprintTypedef(f, smiType, smiType->name); + } +} + + +static void registerType( char *type, char *module ) +{ + TypePrefix *oldTPr = NULL, *iterTPr = NULL; + + for( iterTPr = typePrefixes; iterTPr; iterTPr = iterTPr->next ) { + oldTPr = iterTPr; + } + if( ! oldTPr ) { + /* type prefixes do not exist yet */ + typePrefixes = xmalloc( sizeof( TypePrefix ) ); + typePrefixes->type = type; + typePrefixes->prefix = module; + typePrefixes->next = NULL; + } + else { + /* create new TypePrefix */ + oldTPr->next = xmalloc( sizeof( TypePrefix ) ); + oldTPr->next->type = type; + oldTPr->next->prefix = module; + oldTPr->next->next = NULL; + } +} + + +static void dumpXsdModules(int modc, SmiModule **modv, int flags, char *output) +{ + int i; + FILE *f = stdout; + SmiImport *iterImp; + char *lastModName = ""; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + fprintf(f, "\n"); + fprintf(f, "\n"); + + fputs( "\n\n", f ); + + fprintSegment(f, 1, "name); + + fprintf(f, " xmlns=\"%s%s\"\n", + schemaLocation, modv[i]->name); +/* fprintf(f, " xmlns:xmn=\"http://www.w3.org/XML/1998/namespace\"\n"); */ + fprintf(f, " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n"); + fprintf(f, " xmlns:smi=\"%ssmi\"\n", schemaLocation); + + for( iterImp = smiGetFirstImport( modv[i] ); + iterImp; + iterImp = smiGetNextImport( iterImp ) ) { + registerType( iterImp->name, iterImp->module ); + /* assume imports to be ordered by module names */ + if( strcmp( iterImp->module, lastModName ) ) { + fprintf( f, " xmlns:%s=\"%s%s\"\n", + iterImp->module, schemaLocation, iterImp->module ); + } + lastModName = iterImp->module; + } + + fprintf(f, " xml:lang=\"en\"\n"); + fprintf(f, " elementFormDefault=\"qualified\"\n"); + fprintf(f, " attributeFormDefault=\"unqualified\">\n\n"); + + fprintModuleHead(f, modv[i]); + fprintImports(f, modv[i]); + fprintContextHead(f); + fprintGroupElements(f, modv[i]); + fprintContextFoot(f, modv, 0); + fprintGroupTypes(f, modv[i]); + fprintImplicitTypes(f, modv[i]); + fprintTypedefs(f, modv[i]); + + fprintSegment(f, -1, "\n"); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + +static void dumpXsdContainer(int modc, SmiModule **modv, int flags, + char *output) +{ + int i; + FILE *f = stdout; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + fprintf(f, "\n"); + fprintf(f, "\n"); + + fputs( "\n\n", f ); + + fprintSegment(f, 1, "name, schemaLocation, modv[i]->name); + } + + fprintf(f, " xml:lang=\"en\"\n"); + fprintf(f, " elementFormDefault=\"qualified\"\n"); + fprintf(f, " attributeFormDefault=\"unqualified\">\n\n"); + + /* imports */ + for (i = 0; i < modc; i++) { + fprintSegment( f, 0, "\n", + schemaLocation, modv[i]->name, + schemaLocation, modv[i]->name); + } + fprintf( f, "\n"); + + /* context */ + fprintContextHead(f); + for (i = 0; i < modc; i++) { + /* per module elements */ + fprintGroupElements(f, modv[i]); + } + fprintContextFoot(f, modv, modc); + + fprintSegment(f, -1, "\n"); + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + +static void dumpXsd(int modc, SmiModule **modv, int flags, char *output) +{ + /* register smi basetypes */ + registerType( "Integer32", "smi" ); + registerType( "ObjectIdentifier", "smi" ); + registerType( "OctetString", "smi" ); + registerType( "Unsigned32", "smi" ); + registerType( "Unsigned64", "smi" ); + + /* make sure url ends with '/' */ + if( schemaLocation[ strlen( schemaLocation ) - 1 ] != '/' ) { + smiAsprintf( &schemaLocation, "%s%c", schemaLocation, '/'); + } + + if (container) { + dumpXsdContainer(modc, modv, flags, output); + } else { + dumpXsdModules(modc, modv, flags, output); + } + + /* delete type-prefix-mapping */ + free( typePrefixes ); /* XXX: TODO: free all malloced types in a loop */ +} + + +void initXsd() +{ + + static SmidumpDriverOption opt[] = { + { "schema-url", OPT_STRING, &schemaLocation, 0, + "URI prefix for schema definitions and namespaces" }, + { "container", OPT_FLAG, &container, 0, + "generate a container schema" }, + { "nest-augments", OPT_FLAG, &nestAugmentedTables, 0, + "Nest rows of augmented tables in the base tables" }, + { "nest-subtables", OPT_FLAG, &nestSubtables, 0, + "Nest subtables in the base tables" }, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "xsd", + dumpXsd, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "XML schema definitions", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/dump-yang.c b/tools/dump-yang.c new file mode 100644 index 0000000..be383a9 --- /dev/null +++ b/tools/dump-yang.c @@ -0,0 +1,1426 @@ +/* + * dump-yang.c -- + * + * Operations to dump MIB modules in the YANG output format. + * + * Copyright (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-yang.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +#include + +#include +#include +#include + +#include "smi.h" +#include "smidump.h" +#include "fprint.h" +#include "fortopat.h" + +/* + * TODO: + * - reproduce the table comment text as a yang comment + * - fix the format strings to xsd pattern algorithm so that it + * produces more accurate results + * - compute proper boundaries for binary/string length restrictions + * - translate notifications properly (whatever that means ;-) + * - handle opaque in a reasonable way (test case AGGREGATE-MIB) + */ + +static int sflag = 0; /* generate smi: extensions */ +static int nflag = 0; /* generate notifications */ +static int INDENT = 2; /* indent factor */ + +#define INDENTVALUE 20 /* column to start values, except multiline */ +#define URNBASE "urn:ietf:params:xml:ns:yang:smiv2:" + + +#define FLAG_CONFIG_FALSE 0x01 + + +static const char *convertType[] = { + + /* + * Translation of the SMIng built-in types to the YANG + * equivalents. + */ + + "", "Integer32", NULL, "int32", + "", "Integer64", NULL, "int64", + "", "Unsigned32", NULL, "uint32", + "", "Unsigned64", NULL, "uint64", + "", "OctetString", NULL, "binary", + "", "Enumeration", NULL, "enumeration", + "", "Bits", NULL, "bits", + "", "ObjectIdentifier", "yang-types", "object-identifier", + + /* + * We want to do these translations as well in order to retire the + * SNMPv2-SMI module which is not really an SMIv2 module but part + * of the definition of SNMPv2-SMI itself. + */ + + "SNMPv2-SMI", "Integer32", NULL, "int32", + "SNMPv2-SMI", "Integer64", NULL, "int64", + "SNMPv2-SMI", "Unsigned32", NULL, "uint32", + "SNMPv2-SMI", "Opaque", NULL, "binary", + "SNMPv2-SMI", "Counter32", "yang-types", "counter32", + "SNMPv2-SMI", "Counter64", "yang-types", "counter64", + "SNMPv2-SMI", "Gauge32", "yang-types", "gauge32", + "SNMPv2-SMI", "TimeTicks", "yang-types", "timeticks", + "SNMPv2-SMI", "IpAddress", "inet-types", "ipv4-address", + + /* + * And we like to do the same for RFC1155-SMI definitions... + */ + + "RFC1155-SMI", "Opaque", NULL, "binary", + "RFC1155-SMI", "Counter", "yang-types", "counter32", + "RFC1155-SMI", "Gauge", "yang-types", "gauge32", + "RFC1155-SMI", "TimeTicks", "yang-types", "timeticks", + "RFC1155-SMI", "IpAddress", "inet-types", "ipv4-address", + + /* + * We also translate frequently used SNMPv2-TCs that have a YANG + * equivalent. Note that DateAndTime is slightly different from + * the ISO profile used by date-and-time. + */ + + "SNMPv2-TC", "PhysAddress", "yang-types", "phys-address", + "SNMPv2-TC", "MacAddress", "ieee-types", "mac-address", + "SNMPv2-TC", "TimeStamp", "yang-types", "timestamp", + + NULL, NULL, NULL, NULL +}; + + +static const char *convertImport[] = { + + /* + * Things that are not types but removed from imports... + */ + + "SNMPv2-SMI", "MODULE-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-IDENTITY", NULL, NULL, + "SNMPv2-SMI", "OBJECT-TYPE", NULL, NULL, + "SNMPv2-SMI", "NOTIFICATION-TYPE", NULL, NULL, + "SNMPv2-SMI", "mib-2", NULL, NULL, + "SNMPv2-TC", "TEXTUAL-CONVENTION", NULL, NULL, + "SNMPv2-CONF", "OBJECT-GROUP", NULL, NULL, + "SNMPv2-CONF", "NOTIFICATION-GROUP", NULL, NULL, + "SNMPv2-CONF", "MODULE-COMPLIANCE", NULL, NULL, + "SNMPv2-CONF", "AGENT-CAPABILITIES", NULL, NULL, + "SNMPv2-MIB", "snmpTraps", NULL, NULL, + + NULL, NULL, NULL, NULL +}; + +/* + * SMIv2 modules we never like to import from... + */ + +static const char *ignoreImports[] = { + "RFC1155-SMI", "SNMPv2-SMI", "SNMPv2-CONF", NULL +}; + + +/* + * Structure used to build a list of imported types. + */ + +typedef struct Import { + char *module; + char *prefix; + struct Import *nextPtr; +} Import; + +static Import *importList = NULL; + +static int silent = 0; + + +static char* +getStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "current" : + (status == SMI_STATUS_OPTIONAL) ? "current" : + ""; +} + + +static char* +getStringDate(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + return s; +} + + + +static char* +getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "0x%*s", 2 * valuePtr->len, ""); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[2+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + sprintf(s, "("); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << i%8)) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + sprintf(&s[strlen(s)], "%s", nn->name); + } else { + sprintf(s, "%d", i); + } + } + } + sprintf(&s[strlen(s)], ")"); + break; + case SMI_BASETYPE_UNKNOWN: + break; + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, ""); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, "."); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + } + break; + } + + return s; +} + + +static int +isPrefixUnique(const char *prefix) +{ + Import *import; + + for (import = importList; import; import = import->nextPtr) { + if (strcmp(prefix, import->prefix) == 0) { + return 0; + } + } + + return 1; +} + + +static char* +guessNicePrefix(const char *moduleName) +{ + char *prefix; + int i, d; + + char *specials[] = { + "yang-smi", "smi", + "yang-types", "yang", + "inet-types", "inet", + "ieee-types", "ieee", + "SNMPv2-TC", "smiv2", + NULL, NULL + }; + + for (i = 0; specials[i]; i +=2) { + if (strcmp(moduleName, specials[i]) == 0) { + if (isPrefixUnique(specials[i+1])) { + return xstrdup(specials[i+1]); + } + } + } + + prefix = xstrdup(moduleName); + for (i = 0; prefix[i]; i++) { + prefix[i] = tolower(prefix[i]); + } + + for (i = 0, d = 0; prefix[i]; i++) { + if (prefix[i] == '-') { + d++; + if (d > 1) { + prefix[i] = 0; + if (isPrefixUnique(prefix)) { + return prefix; + } + prefix[i] = '-'; + } + } + } + + return prefix; +} + + +static const char* +getModulePrefix(const char *moduleName) +{ + Import *import; + static char *prefix = NULL; + + for (import = importList; import; import = import->nextPtr) { + if (strcmp(moduleName, import->module) == 0) { + return import->prefix; + } + } + + if (prefix) xfree(prefix); + prefix = guessNicePrefix(moduleName); + return prefix; +} + + + +static Import* +addImport(char *module, char *name) +{ + Import **import, *newImport; + + if (!module || !name) { + return NULL; + } + + for (import = &importList; *import; import = &(*import)->nextPtr) { + int c = strcmp((*import)->module, module); + if (c == 0) return *import; + if (c > 0) break; + } + + newImport = xmalloc(sizeof(Import)); + newImport->module = module; + newImport->prefix = guessNicePrefix(module); + + newImport->nextPtr = *import; + *import = newImport; + + return *import; +} + + + +static void +createImportList(SmiModule *smiModule) +{ + SmiImport *smiImport; + SmiIdentifier impModule, impName; + SmiType *smiType; + SmiNode *smiNode; + int i; + + for (smiImport = smiGetFirstImport(smiModule); smiImport; + smiImport = smiGetNextImport(smiImport)) { + + impModule = smiImport->module; + impName = smiImport->name; + + for (i = 0; convertType[i]; i += 4) { + if (strcmp(smiImport->module, convertType[i]) == 0 + && strcmp(smiImport->name, convertType[i+1]) == 0) { + impModule = (SmiIdentifier) convertType[i+2]; + impName = (SmiIdentifier) convertType[i+3]; + break; + } + } + + if (! impModule || ! impName) continue; + + for (i = 0; convertImport[i]; i += 4) { + if (strcmp(smiImport->module, convertImport[i]) == 0 + && strcmp(smiImport->name, convertImport[i+1]) == 0) { + impModule = (SmiIdentifier) convertImport[i+2]; + impName = (SmiIdentifier) convertImport[i+3]; + break; + } + } + + if (! impModule || ! impName) continue; +#if 0 + fprintf(stderr, "%s\t%s\n", impModule, impName); +#endif + addImport(impModule, impName); + } + + /* + * Add import for the smi:oid extension and friends. + */ + + if (sflag) { + addImport("yang-smi", "oid"); + } + + /* + * Add import for yang-types that were originally ASN.1 + * builtins... + */ + + for (smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + SmiType *parentType = smiGetParentType(smiType); + if (parentType && strcmp(parentType->name, "ObjectIdentifier") == 0) { + addImport("yang-types", "object-identifier"); + } + } + + for (smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN); + smiNode; + smiNode = smiGetNextNode(smiNode, + SMI_NODEKIND_SCALAR | SMI_NODEKIND_COLUMN)) { + smiType = smiGetNodeType(smiNode); + if (! smiType->name) { + smiType = smiGetParentType(smiType); + } + if (smiType && strcmp(smiType->name, "ObjectIdentifier") == 0) { + addImport("yang-types", "object-identifier"); + } + } +} + + + +static void +freeImportList(void) +{ + Import *import, *freeme; + + for (import = importList; import; ) { + xfree(import->prefix); + freeme = import; + import = import->nextPtr; + xfree(freeme); + } + importList = NULL; +} + + + +static int +isGroup(SmiNode *smiNode) +{ + SmiNode *childNode; + + for(childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if ((childNode->nodekind == SMI_NODEKIND_SCALAR + || childNode->nodekind == SMI_NODEKIND_TABLE) + && childNode->status == SMI_STATUS_CURRENT) { + return 1; + } + } + + return 0; +} + + +static int +isIndex(SmiNode *groupNode, SmiNode *smiNode) +{ + SmiElement *smiElement; + int cnt = 0; + + /* + * We return an indication whether smiNode is part of an index. In + * fact, we return number of times smiNode is part of an index + * since we sometimes have to disambiguate names... + */ + + for (smiElement = smiGetFirstElement(groupNode); + smiElement; smiElement = smiGetNextElement(smiElement)) { + if (smiNode == smiGetElementNode(smiElement)) { + cnt++; + } + } + + return cnt; +} + + +static void +fprintRevisions(FILE *f, int indent, SmiModule *smiModule) +{ + int i; + SmiRevision *smiRevision; + + for(i = 0, smiRevision = smiGetFirstRevision(smiModule); + smiRevision; smiRevision = smiGetNextRevision(smiRevision)) { + fprintSegment(f, indent, "revision ", 0); + fprint(f, "\"%s\" {\n", getStringDate(smiRevision->date)); + fprintSegment(f, 2 * indent, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, 2 * indent, smiRevision->description); + fprint(f, ";\n"); + fprintSegment(f, indent, "}\n", 0); + i++; + } + if (i) { + fprint(f, "\n"); + } +} + + +static void +fprintImports(FILE *f, SmiModule *smiModule) +{ + Import *import; + int i, len = 4; + + for (import = importList; import; import = import->nextPtr) { + for (i = 0; ignoreImports[i]; i++) { + if (strcmp(ignoreImports[i], import->module) == 0) { + break; + } + } + if (ignoreImports[i] == NULL) { + if (strlen(import->module) > len) len = strlen(import->module); + } + } + + for (import = importList; import; import = import->nextPtr) { + for (i = 0; ignoreImports[i]; i++) { + if (strcmp(ignoreImports[i], import->module) == 0) { + break; + } + } + if (ignoreImports[i] == NULL) { + fprintSegment(f, INDENT, "import", 0); + fprint(f, " %-*s { prefix \"%s\"; }\n", len, + import->module, import->prefix); + } + } + fprint(f, "\n"); + +} + + + + +static void +fprintSubtype(FILE *f, int indent, SmiType *smiType) +{ + SmiRange *range; + SmiNamedNumber *nn; + char s[1024]; + char *tkw, *lkw, *vkw; + int i = 0; + int len = 4; + + if ((smiType->basetype == SMI_BASETYPE_ENUM) || + (smiType->basetype == SMI_BASETYPE_BITS)) { + for (nn = smiGetFirstNamedNumber(smiType); + nn ; nn = smiGetNextNamedNumber(nn)) { + if (strlen(nn->name) > len) len = strlen(nn->name); + } + + for(i = 0, nn = smiGetFirstNamedNumber(smiType); + nn ; i++, nn = smiGetNextNamedNumber(nn)) { + if (! i) { + fprint(f, " {\n"); + } + tkw = (smiType->basetype == SMI_BASETYPE_BITS) ? "bits" : "enumeration"; + lkw = (smiType->basetype == SMI_BASETYPE_BITS) ? "bit" : "enum"; + vkw = (smiType->basetype == SMI_BASETYPE_BITS) ? "position" : "value"; + sprintf(s, "%s %-*s { %s %s; }\n", + lkw, len, nn->name, + vkw, getValueString(&nn->value, smiType)); + fprintSegment(f, indent + INDENT, s, 0); + } + } else { + for(i = 0, range = smiGetFirstRange(smiType); + range ; i++, range = smiGetNextRange(range)) { + if (i) { + fprint(f, " | "); + } else { + fprint(f, " {\n"); + if (smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + fprintSegment(f, indent + INDENT, "length \"", 0); + } else { + fprintSegment(f, indent + INDENT, "range \"", 0); + } + } + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + sprintf(&s[strlen(s)], "..%s", + getValueString(&range->maxValue, smiType)); + } else { + sprintf(s, "%s", getValueString(&range->minValue, smiType)); + } + fprint(f, s); + } + if (i) { + fprint(f, "\";\n"); + } + } + + if (smiType->format + && smiType->basetype == SMI_BASETYPE_OCTETSTRING) { + + char *pattern; + pattern = smiFormatToPattern(smiType->format, + smiGetFirstRange(smiType)); + if (pattern) { + if (! i) { + fprint(f, "{\n"); + } + fprintSegment(f, indent + INDENT, "pattern \"", 0); + fprint(f, "%s\";\n", pattern); + xfree(pattern); + i++; + } + } + + if (! i) { + fprint(f, ";\n"); + } else { + fprintSegment(f, indent, "}\n", 0); + } +} + + +static void +fprintStatus(FILE *f, int indent, SmiStatus status) +{ + if ((status != SMI_STATUS_CURRENT) && + (status != SMI_STATUS_UNKNOWN) && + (status != SMI_STATUS_MANDATORY) && + (status != SMI_STATUS_OPTIONAL)) { + fprintSegment(f, indent, "status", 0); + fprint(f, " %s;\n", getStringStatus(status)); + } +} + + +static void +fprintUnits(FILE *f, int indent, const char *units) +{ + if (units) { + fprintSegment(f, indent, "units", 0); + fprint(f, " \"%s\";\n", units); + } +} + + +static void +fprintFormat(FILE *f, int indent, const char *format) +{ + if (sflag && format) { + fprintSegment(f, 2 * INDENT, "smi:display-hint", 0); + fprint(f, " \"%s\";\n", format); + } +} + + +static void +fprintObjectIdentifier(FILE *f, int indent, SmiSubid *oid, int oidlen) +{ + int i; + + if (sflag && oid && oidlen) { + fprintSegment(f, indent, "smi:oid", 0); + fprint(f, " \""); + for (i=0; i < oidlen; i++) { + fprint(f, "%s%d", i ? "." : "", oid[i]); + } + fprint(f, "\";\n"); + } +} + + +static void +fprintDescription(FILE *f, int indent, const char *description) +{ + if (description) { + fprintSegment(f, indent, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, description); + fprint(f, ";\n"); + } +} + + +static void +fprintReference(FILE *f, int indent, const char *reference) +{ + if (reference) { + fprintSegment(f, indent, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, reference); + fprint(f, ";\n"); + } +} + + +static void +fprintConfig(FILE *f, int indent, SmiAccess access) +{ + if (access == SMI_ACCESS_READ_WRITE) { + fprintSegment(f, indent, "config true;\n", 0); + } else { + fprintSegment(f, indent, "config false;\n", 0); + } +} + + +static void +fprintDefault(FILE *f, int indent, SmiValue *value, SmiType *smiType) +{ + if (sflag && value->basetype != SMI_BASETYPE_UNKNOWN) { + fprintSegment(f, indent, "smi:default", 0); + fprint(f, " \"%s\";\n", getValueString(value, smiType)); + } +} + + +static int +fprintTypename(FILE *f, SmiType *smiType, int format) +{ + const char *typeModule = NULL, *typeName = NULL; + SmiModule *smiModule; + int i; + + if (! smiType) return 0; + + smiModule = smiGetTypeModule(smiType); + + if (smiType && ! smiType->name) { + return fprintTypename(f, smiGetParentType(smiType), format); + } + + for (i = 0; convertType[i]; i += 4) { + if (strcmp(smiModule->name, convertType[i]) == 0 + && strcmp(smiType->name, convertType[i+1]) == 0) { + typeModule = convertType[i+2]; + typeName = convertType[i+3]; + break; + } + } + + if (! typeName) { + typeModule = smiModule->name; + typeName = smiType->name; + } + + if (typeModule) { + typeModule = getModulePrefix(typeModule); + } + + /* + * We handle a special case here. If we have a format string and + * the type is binary, we turn it into string. + */ + + if (! typeModule && typeName && strcmp(typeName, "binary") == 0) { + if (format) { + typeName = "string"; + } + } + + if (typeModule && typeName) { + fprint(f, "%s:%s", typeModule, typeName); + } else { + fprint(f, "%s", typeName); + } + + return 1; +} + + +static void +fprintTypedefs(FILE *f, SmiModule *smiModule) +{ + int i; + SmiType *smiType, *baseType; + + for (i = 0, smiType = smiGetFirstType(smiModule); + smiType; smiType = smiGetNextType(smiType)) { + + baseType = smiGetParentType(smiType); + + if (!i && !silent) { + fprintSegment(f, INDENT, "/*** TYPE DEFINITIONS ***/\n\n", 0); + } + fprintSegment(f, INDENT, "", 0); + fprint(f, "typedef %s {\n", smiType->name); + + fprintSegment(f, 2 * INDENT, "type ", 0); + fprintTypename(f, baseType, smiType->format != NULL); + fprintSubtype(f, 2 * INDENT, smiType); + + fprintUnits(f, 2 * INDENT, smiType->units); + fprintStatus(f, 2 * INDENT, smiType->status); + fprintDescription(f, 2 * INDENT, smiType->description); + fprintReference(f, 2 * INDENT, smiType->reference); + fprintFormat(f, 2 * INDENT, smiType->format); + fprintDefault(f, 2 * INDENT, &smiType->value, smiType); + + fprintSegment(f, INDENT, "}\n\n", 0); + i++; + } +} + + +static void +fprintPath(FILE *f, SmiNode *smiNode) +{ + SmiNode *entryNode = NULL; + SmiNode *tableNode = NULL; + SmiNode *contNode = NULL; + SmiModule *smiModule = NULL; + + switch (smiNode->nodekind) { + case SMI_NODEKIND_SCALAR: + contNode = smiGetParentNode(smiNode); + break; + case SMI_NODEKIND_COLUMN: + entryNode = smiGetParentNode(smiNode); + tableNode = smiGetParentNode(entryNode); + contNode = smiGetParentNode(tableNode); + break; + case SMI_NODEKIND_ROW: + entryNode = smiNode; + tableNode = smiGetParentNode(entryNode); + contNode = smiGetParentNode(tableNode); + break; + case SMI_NODEKIND_TABLE: + contNode = smiGetParentNode(tableNode); + break; + default: + break; + } + + smiModule = smiGetNodeModule(contNode); + if (smiModule) { + fprint(f, "/%s:%s", getModulePrefix(smiModule->name), contNode->name); + } + if (contNode == smiNode) return; + + if (entryNode) { + smiModule = smiGetNodeModule(entryNode); + if (smiModule) { + fprint(f, "/%s:%s", getModulePrefix(smiModule->name), entryNode->name); + } + if (entryNode == smiNode) return; + } + + smiModule = smiGetNodeModule(smiNode); + if (smiModule) { + fprint(f, "/%s:%s", getModulePrefix(smiModule->name), smiNode->name); + } +} + + +static void +fprintLeaf(FILE *f, int indent, SmiNode *smiNode, int flags) +{ + SmiType *smiType; + SmiAccess config; + + smiType = smiGetNodeType(smiNode); + + fprintSegment(f, indent, "leaf ", 0); + fprint(f, "%s {\n", smiNode->name); + + fprintSegment(f, indent + INDENT, "type ", 0); + fprintTypename(f, smiType, smiNode->format != NULL); + if (! smiType->name) { + fprintSubtype(f, indent + INDENT, smiType); + } else { + fprint(f, ";\n"); + } + + fprintUnits(f, indent + INDENT, smiNode->units); + if (flags & FLAG_CONFIG_FALSE) { + config = SMI_ACCESS_READ_ONLY; + } else { + config = smiNode->access; + } + fprintConfig(f, indent + INDENT, config); + fprintStatus(f, indent + INDENT, smiNode->status); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + fprintFormat(f, indent + INDENT, smiNode->format); + fprintDefault(f, indent + INDENT, &smiNode->value, smiType); + fprintObjectIdentifier(f, indent + INDENT, smiNode->oid, smiNode->oidlen); + fprintSegment(f, indent, "}\n", 0); +} + + +static void +fprintKeyrefLeaf(FILE *f, int indent, SmiNode *smiNode, int flags) +{ + SmiNode *entryNode; + SmiAccess config; + + entryNode = smiGetParentNode(smiNode); + fprintSegment(f, indent, "leaf ", 0); + fprint(f, "%s {\n", smiNode->name); + fprintSegment(f, indent + INDENT, "type keyref {\n", 0); + fprintSegment(f, indent + 2 * INDENT, "path \"", 0); + fprintPath(f, smiNode); + fprint(f, "\";\n"); + fprintSegment(f, indent + INDENT, "}\n", 0); + if (flags & FLAG_CONFIG_FALSE) { + config = SMI_ACCESS_READ_ONLY; + } else { + config = entryNode->create + ? SMI_ACCESS_READ_WRITE : SMI_ACCESS_READ_ONLY; + } + fprintConfig(f, indent + INDENT, config); + fprintStatus(f, indent + INDENT, smiNode->status); + fprintDescription(f, indent + INDENT, + "Automagically generated keyref leaf."); + fprintSegment(f, indent, "}\n", 0); +} + + +static void +fprintKey(FILE *f, int indent, SmiNode *smiNode) +{ + SmiElement *smiElement; + int j; + + fprintSegment(f, indent, "key \"", 0); + + for (j = 0, smiElement = smiGetFirstElement(smiNode); smiElement; + j++, smiElement = smiGetNextElement(smiElement)) { + if (j) { + fprint(f, " "); + } + fprintWrapped(f, indent + 5, + smiGetElementNode(smiElement)->name); + } + fprint(f, "\";\n"); +} + + +static void +fprintLeafs(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *childNode; + int c; + + for (c = 0, childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (childNode->nodekind == SMI_NODEKIND_COLUMN) { + fprint(f, "\n"); + fprintLeaf(f, indent, childNode, 0); + c++; + } + } +} + + +static void +fprintList(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *entryNode; + SmiNode *childNode; + SmiNode *parentNode; + SmiElement *smiElement; + + entryNode = smiGetFirstChildNode(smiNode); + + fprint(f, "\n"); + fprintSegment(f, indent, "/* XXX table comments here XXX */\n", 0); + fprint(f, "\n"); + + fprintSegment(f, indent, "list", 0); + fprint(f, " %s {\n\n", entryNode->name); + + fprintKey(f, indent + INDENT, entryNode); + fprintStatus(f, indent + INDENT, entryNode->status); + fprintDescription(f, indent + INDENT, entryNode->description); + fprintReference(f, indent + INDENT, entryNode->reference); + fprintObjectIdentifier(f, indent + INDENT, + entryNode->oid, entryNode->oidlen); + fprint(f, "\n"); + + for (smiElement = smiGetFirstElement(entryNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + childNode = smiGetElementNode(smiElement); + parentNode = smiGetParentNode(childNode); + if (childNode->nodekind == SMI_NODEKIND_COLUMN + && parentNode != entryNode) { + fprintKeyrefLeaf(f, indent + INDENT, childNode, 0); + } + } + + fprintLeafs(f, indent + INDENT, entryNode); + + fprintSegment(f, indent, "}\n", 0); +} + + +static void +fprintAugment(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *baseEntryNode = NULL; + + if (smiNode) { + baseEntryNode = smiGetRelatedNode(smiNode); + } + if (! smiNode || ! baseEntryNode) { + return; + } + + fprint(f, "\n"); + fprintSegment(f, indent, "/* XXX table comments here XXX */\n", 0); + fprint(f, "\n"); + + fprintSegment(f, indent, "augment", 0); + fprint(f, " \""); + fprintPath(f, baseEntryNode); + fprint(f, "\" {\n"); + fprintStatus(f, indent + INDENT, smiNode->status); + fprintDescription(f, indent + INDENT, smiNode->description); + fprintReference(f, indent + INDENT, smiNode->reference); + + fprintLeafs(f, indent + INDENT, smiNode); + fprintObjectIdentifier(f, indent + INDENT, + smiNode->oid, smiNode->oidlen); + fprintSegment(f, indent, "}\n\n", 0); +} + + +static void +fprintAugments(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (smiNode->nodekind == SMI_NODEKIND_ROW + && smiNode->indexkind == SMI_INDEX_AUGMENT) { + fprintAugment(f, INDENT, smiNode); + } + } + +} + + +static void +fprintContainer(FILE *f, int indent, SmiNode *smiNode) +{ + SmiNode *childNode; + int c; + + fprintSegment(f, indent, "container", 0); + fprint(f, " %s {\n\n", smiNode->name); + + for (c = 0, childNode = smiGetFirstChildNode(smiNode); + childNode; + childNode = smiGetNextChildNode(childNode)) { + if (c) { + fprint(f, "\n"); + } + if (childNode->nodekind == SMI_NODEKIND_SCALAR) { + fprintLeaf(f, indent + INDENT, childNode, 0); + c++; + } + if (childNode->nodekind == SMI_NODEKIND_TABLE) { + SmiNode *entryNode = smiGetFirstChildNode(childNode); + if (entryNode) { + switch (entryNode->indexkind) { + case SMI_INDEX_INDEX: + case SMI_INDEX_REORDER: + case SMI_INDEX_SPARSE: + case SMI_INDEX_EXPAND: + fprintList(f, indent + INDENT, childNode); + c++; + break; +#if 0 + case SMI_INDEX_AUGMENT: + fprintAugment(f, indent + INDENT, childNode); + c++; + break; +#endif + default: + break; + } + } + } + } + + fprintObjectIdentifier(f, indent + INDENT, + smiNode->oid, smiNode->oidlen); + + fprintSegment(f, indent, "}\n\n", 0); +} + + +static void +fprintContainers(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + + for (smiNode = smiGetFirstNode(smiModule, SMI_NODEKIND_ANY); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_ANY)) { + if (isGroup(smiNode)) { + fprintContainer(f, INDENT, smiNode); + } + } +} + + +static void +fprintNamespace(FILE *f, int indent, SmiModule *smiModule) +{ + if (! silent) { + fprintSegment(f, indent, "/*** NAMESPACE / PREFIX DEFINITION ***/\n\n", 0); + } + + fprintSegment(f, indent, "namespace ", 0); + fprint(f, "\"%s%s\";\n", URNBASE, smiModule->name); + fprintSegment(f, indent, "prefix ", 0); + fprint(f, "\"%s\";\n\n", getModulePrefix(smiModule->name)); +} + + +static void +fprintLinkage(FILE *f, int indent, SmiModule *smiModule) +{ + if (! silent) { + fprintSegment(f, indent, "/*** LINKAGE (IMPORTS / INCLUDES) ***/\n\n", 0); + } + fprintImports(f, smiModule); +} + + +static void +fprintMeta(FILE *f, int indent, SmiModule *smiModule) +{ + if (! silent) { + fprintSegment(f, indent, "/*** META INFORMATION ***/\n\n", 0); + } + fprintSegment(f, indent, "organization", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, smiModule->organization); + fprint(f, ";\n\n"); + fprintSegment(f, indent, "contact", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, smiModule->contactinfo); + fprint(f, ";\n\n"); + fprintSegment(f, indent, "description", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, smiModule->description); + fprint(f, ";\n\n"); + if (smiModule->reference) { + fprintSegment(f, indent, "reference", INDENTVALUE); + fprint(f, "\n"); + fprintMultilineString(f, indent, smiModule->reference); + fprint(f, ";\n\n"); + } +} + + +static void +fprintNotificationIndex(FILE *f, int indent, + SmiNode *entryNode, SmiNode *ignoreNode) +{ + SmiElement *smiElement; + SmiNode *childNode; + SmiNode *parentNode; + + for (smiElement = smiGetFirstElement(entryNode); smiElement; + smiElement = smiGetNextElement(smiElement)) { + childNode = smiGetElementNode(smiElement); + parentNode = smiGetParentNode(childNode); + if (childNode != ignoreNode) { + fprintKeyrefLeaf(f, indent, childNode, FLAG_CONFIG_FALSE); + } + } +} + + +static int +GetPosition(SmiElement *startElement, SmiElement *thisElement) +{ + SmiElement *smiElement; + SmiNode *smiNode; + SmiNode *thisNode = smiGetElementNode(thisElement); + int cnt = 0; + + for (smiElement = startElement, cnt = 0; + smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + if (smiNode == thisNode) cnt++; + } + + if (cnt <= 1) { + return 0; + } + + for (smiElement = startElement, cnt = 0; + smiElement; smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + if (smiNode == thisNode) cnt++; + if (smiElement == thisElement) { + break; + } + } + return cnt; +} + + +static void +fprintNotification(FILE *f, SmiNode *smiNode) +{ + SmiElement *smiElement; + SmiNode *vbNode, *entryNode; + int c, cnt; + + fprintSegment(f, INDENT, "notification", 0); + fprint(f, " %s {\n", smiNode->name); + fprintStatus(f, INDENT + INDENT, smiNode->status); + fprintDescription(f, INDENT + INDENT, smiNode->description); + fprintReference(f, INDENT + INDENT, smiNode->reference); + fprintObjectIdentifier(f, INDENT + INDENT, smiNode->oid, smiNode->oidlen); + fprint(f, "\n"); + + for (c = 0, smiElement = smiGetFirstElement(smiNode); smiElement; + c++, smiElement = smiGetNextElement(smiElement)) { + vbNode = smiGetElementNode(smiElement); + if (! vbNode) continue; + + cnt = GetPosition(smiGetFirstElement(smiNode), smiElement); + + entryNode = (vbNode->nodekind == SMI_NODEKIND_COLUMN) + ? smiGetParentNode(vbNode) : NULL; + + fprintSegment(f, INDENT + INDENT, "container ", 0); + if (cnt) { + fprintf(f, "%s-%s-%d {\n", smiNode->name, vbNode->name, cnt); + } else { + fprintf(f, "%s-%s {\n", smiNode->name, vbNode->name); + } + + if (entryNode) { + switch (entryNode->indexkind) { + case SMI_INDEX_INDEX: + fprintNotificationIndex(f, INDENT + INDENT + INDENT, + entryNode, vbNode); + break; + case SMI_INDEX_AUGMENT: + fprintNotificationIndex(f, INDENT + INDENT + INDENT, + smiGetRelatedNode(entryNode), vbNode); + break; + default: + break; + } + } + + if (entryNode && isIndex(entryNode, vbNode)) { + fprintKeyrefLeaf(f, INDENT + INDENT + INDENT, + vbNode, FLAG_CONFIG_FALSE); + } else { + fprintLeaf(f, INDENT + INDENT + INDENT, + vbNode, FLAG_CONFIG_FALSE); + } + fprintSegment(f, INDENT + INDENT, "}\n\n", 0); + } + + fprintSegment(f, INDENT, "}\n", 0); +} + + +static void +fprintNotifications(FILE *f, SmiModule *smiModule) +{ + SmiNode *smiNode; + int c; + + for (c = 0, smiNode = smiGetFirstNode(smiModule, + SMI_NODEKIND_NOTIFICATION); + smiNode; + c++, smiNode = smiGetNextNode(smiNode, + SMI_NODEKIND_NOTIFICATION)) { + if (c) { + fprint(f, "\n"); + } + fprintNotification(f, smiNode); + } +} + + +static void +dumpYang(int modc, SmiModule **modv, int flags, char *output) +{ + SmiModule *smiModule; + int i; + FILE *f = stdout; + + silent = (flags & SMIDUMP_FLAG_SILENT); + + fprint_indent_texts = INDENT; + + if (output) { + f = fopen(output, "w"); + if (!f) { + fprintf(stderr, "smidump: cannot open %s for writing: ", output); + perror(NULL); + exit(1); + } + } + + for (i = 0; i < modc; i++) { + + smiModule = modv[i]; + + createImportList(smiModule); + + fprint(f, "/*\n"); + fprint(f, " * This module has been generated by smidump " + SMI_VERSION_STRING ":\n"); + fprint(f, " *\n"); + fprint(f, " * smidump -f yang"); + if (silent) { + fprint(f, " -q"); + } + if (sflag) { + fprint(f, " --yang-smi-extensions"); + } + if (nflag) { + fprint(f, " --yang-no-notifications"); + } + fprint(f, " %s\n", smiModule->name); + fprint(f, " *\n"); + fprint(f, " * Do not edit. Edit the source file instead!\n"); + fprint(f, " */\n\n"); + fprint(f, "module %s {\n", smiModule->name); + fprint(f, "\n"); + + fprintNamespace(f, INDENT, smiModule); + fprintLinkage(f, INDENT, smiModule); + fprintMeta(f, INDENT, smiModule); + fprintRevisions(f, INDENT, smiModule); + + fprintTypedefs(f, modv[i]); + fprintContainers(f, modv[i]); + fprintAugments(f, modv[i]); + + if (! nflag) { + fprintNotifications(f, modv[i]); + } + + fprint(f, "} /* end of module %s */\n", smiModule->name); + + freeImportList(); + } + + if (fflush(f) || ferror(f)) { + perror("smidump: write error"); + exit(1); + } + + if (output) { + fclose(f); + } +} + + + +void initYang() +{ + static SmidumpDriverOption opt[] = { + { "smi-extensions", OPT_FLAG, &sflag, 0, + "generate smi extensions" }, + { "no-notifications", OPT_FLAG, &nflag, 0, + "do not generate notifications" }, + { "indent", OPT_INT, &INDENT, 0, + "indentation (default 2)" }, + { 0, OPT_END, 0, 0 } + }; + + static SmidumpDriver driver = { + "yang", + dumpYang, + 0, + SMIDUMP_DRIVER_CANT_UNITE, + "YANG format", + opt, + NULL + }; + + smidumpRegisterDriver(&driver); +} diff --git a/tools/fortopat.c b/tools/fortopat.c new file mode 100644 index 0000000..607dda6 --- /dev/null +++ b/tools/fortopat.c @@ -0,0 +1,773 @@ +/* + * fortopat.c -- + * + * Implementation of format string to xsd pattern conversion. + * + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * (c) 2002 T. Klie, Technical University of Braunschweig. + * (c) 2002 F. Strauss, Technical University of Braunschweig. + * (c) 2007 T. Klie, Technical University of Braunschweig. + * (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: dump-xsd.c 7372 2007-10-17 15:26:40Z tklie $ + */ + +#include + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + +#include "fortopat.h" + + +#ifndef MIN +#define MIN(a,b) ((a)) < ((b)) ? ((a)) : ((b)) +#endif + + +/* definition of commonly used display hints */ +#define LIBSMI_DH_TP_IPV4Z_ADDR "1d.1d.1d.1d%4d:2d" +#define LIBSMI_DH_UDP_IPV4 "1d.1d.1d.1d/2d" +#define LIBSMI_DH_IPV4Z_ADDR "1d.1d.1d.1d%4d" +#define LIBSMI_DH_IPV4_ADDR "1d.1d.1d.1d" +#define LIBSMI_DH_LDP_ID "1d.1d.1d.1d:2d" +#define LIBSMI_DH_IPV6_ADDR "2x:2x:2x:2x:2x:2x:2x:2x" +#define LIBSMI_DH_IPV6Z_ADDR "2x:2x:2x:2x:2x:2x:2x:2x%4d" +#define LIBSMI_DH_TP_IPV6_ADDR "0a[2x:2x:2x:2x:2x:2x:2x:2x]0a:2d" +#define LIBSMI_DH_TP_IPV6Z_ADDR "0a[2x:2x:2x:2x:2x:2x:2x:2x%4d]0a:2d" +#define LIBSMI_DH_HEX "1x" +#define LIBSMI_DH_HEX_COLON "1x:" +#define LIBSMI_DH_DOUBLE_HEX_COLON "2x:" +#define LIBSMI_DH_ASCII "255a" +#define LIBSMI_DH_UTF8 "255t" +#define LIBSMI_DH_ASCII_CHAR "1a" +#define LIBSMI_DH_DATETIME "2d-1d-1d,1d.1d.1d,1a1d:1d" +#define LIBSMI_DH_DATETIME2 "2d-1d-1d,1d:1d:1d.1d,1a1d:1d" +#define LIBSMI_DH_IPX_ADDR "4x.1x:1x:1x:1x:1x:1x.2d" + + +/* list of parts of a display hint */ +typedef struct DH { + unsigned int number; +/* int repeat; // repeat not yet supported */ + char type; + char separator[3]; +/* char repTerm; // repeat not yet supported */ + struct DH *next; +} DH; + + + + + +static int +smiPow(int base, unsigned int exponent) +{ + unsigned int i; + int ret = 1; + + if (exponent == 0) { + return 1; + } + + for (i = 0; i < exponent; i++) { + ret *= base; + } + return ret; +} + + + +static unsigned int +numDigits(unsigned int val) +{ + int ret = 1; + + for (; val / 10; val = val / 10) { + ret++; + } + + return ret; +} + + + +static int +getBracketLevel(char *bracketString) +{ + int level = 0; + char *c = bracketString; + + while(level >= 0 && *c != '\0') { + switch(*c) { + case '(': + level++; + break; + case ')': + level--; + break; + default: + break; + } + c++; + } + + return level; +} + + + +/* parse a display hint and create a list of DHs */ +static struct DH* +parseDH(const char *hint) +{ + struct DH *iterDH = (struct DH *)malloc( sizeof( struct DH ) ); + struct DH *ret = iterDH; + struct DH *oldIterDH = iterDH; + unsigned int pos = 0; + + if (!ret) { + return NULL; + } + + memset(iterDH, 0, sizeof(struct DH)); + + while( pos < strlen( hint ) ) { + + if( ! iterDH ) { + iterDH = (struct DH *)malloc( sizeof( struct DH ) ); + if( ! iterDH ) return NULL; + memset(iterDH, 0, sizeof(struct DH)); + oldIterDH->next = iterDH; + oldIterDH = iterDH; + } + + switch( hint[ pos ] ) { + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { + unsigned int endPos; + char *strNum; + + /* find end of number */ + for( endPos = pos; isdigit( hint[ endPos ] ); endPos++ ); + + /* parse number */ + strNum = (char *)malloc( endPos - pos ); + strncpy( strNum, &hint[ pos ], endPos - pos ); + strNum[ endPos - pos ] = '\0'; + iterDH->number = atoi( strNum ); + free( strNum ); + + /* forward the position pointer */ + pos = endPos; + break; + } + + case 'a': + case 'b': + case 'd': + case 'o': + case 't': + case 'x': + iterDH->type = hint[ pos++ ]; + if( isdigit( hint[ pos ] ) || hint[ pos ] == '*' ) { + iterDH = iterDH->next; + } + break; + + case '*': + /* repeat not supported */ + return NULL; + + default: + if( iterDH->separator ) { + /* iterDH->repTerm = hint[ pos++ ]; // repeat not supported */ + pos++; + } + else { + iterDH->separator[0] = hint[ pos++ ]; + if (iterDH->separator[0] == '.' ) { + iterDH->separator[0] = '\\'; + iterDH->separator[1] = '.'; + } + } + if( isdigit( hint[ pos ] ) || hint[ pos ] == '*' ) { + iterDH = iterDH->next; + } + break; + } + } + return ret; +} + +static char* +getSimpleCharFacet_XSD(char dhType, unsigned int number, + unsigned int minL, unsigned int maxL) +{ + char *ret; + char *baseRegExp; + + /* determine base regular expression, depending on display hint type */ + switch( dhType ) { + case 'a': + baseRegExp = "\\p{IsBasicLatin}"; + break; + case 't': + baseRegExp = "."; + break; + default: + /* XXX - fix this to use the normal error reporting mechanism XXX */ + fprintf(stderr, + "displayHint.c: Error: unknown display hint type\n"); + return NULL; + } + + smiAsprintf( &ret, "%s{%d,%d}", baseRegExp, minL, MIN( number, maxL)); + return ret; +} + + +/* check if the hint is known and (if so) return the XSD translation */ +static char* +getKnownDisplayHint_XSD(const char *hint, + SmiUnsigned32 *lengths, unsigned int numSubranges) +{ + int i; + char *ret = ""; + + if( ! strcmp( hint, LIBSMI_DH_TP_IPV4Z_ADDR ) ) + /* this is a simplyfied restriction. + * We could restrict more, + * but then, the pattern will be very hard to read / understand */ + return xstrdup("(\\d{1,3}.){3}\\d{1,3})%\\d{1,10}:\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_UDP_IPV4 ) ) + return xstrdup("(\\d{1,3}.){3}\\d{1,3}/\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_IPV4Z_ADDR ) ) + return xstrdup("(\\d{1,3}.){3}\\d{1,3}%\\d{1,10}"); + + if( ! strcmp( hint, LIBSMI_DH_IPV4_ADDR ) ) + return xstrdup("(\\d{1,3}.){3}\\d{1,3}"); + + if( ! strcmp( hint, LIBSMI_DH_LDP_ID ) ) + return xstrdup("(\\d{1,3}.){3}\\d{1,3}:\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_IPV6_ADDR ) ) + return xstrdup("([\\dA-Fa-f]{2}:){7}[\\dA-Fa-f]{2}"); + + if( ! strcmp( hint, LIBSMI_DH_IPV6Z_ADDR ) ) + return xstrdup("([\\dA-Fa-f]{2}:){7}[\\dA-Fa-f]{2}%\\d{1,10}"); + + if( ! strcmp( hint, LIBSMI_DH_TP_IPV6_ADDR ) ) + return xstrdup("\\[([\\dA-Fa-f]{2}:){7}[\\dA-Fa-f]{2}\\]:\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_TP_IPV6Z_ADDR ) ) + return xstrdup("\\[([\\dA-Fa-f]{2}:){7}[\\dA-Fa-f]{2}%\\d{1,10}\\]:\\d{1,5}"); + + if( ! strcmp( hint, LIBSMI_DH_HEX ) ) + return xstrdup("[0-9A-Fa-f]{2}"); + + if( ! strcmp( hint, LIBSMI_DH_HEX_COLON ) ) + return xstrdup("[0-9A-Fa-f]{2}:"); + + if( ! strcmp( hint, LIBSMI_DH_DOUBLE_HEX_COLON ) ) + return xstrdup("[0-9A-Fa-f]{4}:"); + + if( ! strcmp( hint, LIBSMI_DH_ASCII ) ) { + switch( numSubranges ) { + case 0: + return getSimpleCharFacet_XSD( 'a', 255, 0, 255 ); + case 1: + return getSimpleCharFacet_XSD( 'a', 255, lengths[0], lengths[1] ); + default: + ret = "("; + for( i=0; i < numSubranges * 2; i+=2 ) { + if( i ) smiAsprintf(&ret, "%s)|(", ret); + smiAsprintf(&ret, "%s%s", ret, + getSimpleCharFacet_XSD('a', 255, + lengths[i], lengths[i+1])); + + } + smiAsprintf(&ret, "%s)", ret); + return ret; + } + } + + if( ! strcmp(hint, LIBSMI_DH_UTF8 )) { + switch( numSubranges ) { + case 0: + return getSimpleCharFacet_XSD( 't' , 255, 0, 255 ); + case 1: + return getSimpleCharFacet_XSD( 't' , 255, lengths[0], lengths[1]); + default: + ret = "("; + for( i=0; i < numSubranges * 2; i+=2 ) { + if( i ) smiAsprintf( &ret, "%s)|(", ret ); + smiAsprintf(&ret, "%s%s", + ret, getSimpleCharFacet_XSD('t', 255, + lengths[i], + lengths[i+1])); + } + smiAsprintf( &ret, "%s)", ret ); + return ret; + } + } + + if( ! strcmp( hint, LIBSMI_DH_ASCII_CHAR )) + return xstrdup("\\p{IsBasicLatin}{0,1}"); + + /* we assume here date-time-value, i.e. the number of digits are fixed */ + if( ! strcmp( hint, LIBSMI_DH_DATETIME ) ) + return xstrdup("\\d{4}-\\d{2}-\\d{2},(\\d{2}.){2}\\d{2},\\p{IsBasicLatin}\\d{2}:\\d{2}"); + + if( ! strcmp( hint, LIBSMI_DH_DATETIME2 ) ) { + if( numSubranges >1 ) + /* there are more subranges, + * assume: lengths = 8 | lengths = 11 + * thus: last 3 octets (time zone info) is optional */ + return xstrdup("\\d{4}-\\d{2}-\\d{2},(\\d{2}:){2}\\d{2}(,[\\+\\-]\\d{2}:\\d{2}){0,1}"); + return xstrdup("\\d{4}-\\d{2}-\\d{2},(\\d{2}:){2}\\d{2},[\\+\\-]\\d{2}:\\d{2}"); + } + if( !strcmp( hint, LIBSMI_DH_IPX_ADDR ) ) + return xstrdup("[0-9A-Fa-f]{8}.([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}.\\d{1,4}"); + + else return NULL; +} + + + +/* build a regexp pattern from a display hint + * + * Some documentation: First of all, it is checked whether the display hint + * matches againts one of the well known display hints. If so, a direct mapping + * is applied. Note that most cases ignore any additional length information + * (except DATETIME and ASCII / UTF8). + * If no match can be found, the display hint is parsed and seperated + * into a list of blocks (DH struct). A display hint block consists of + * o the number of octets to be used (unsigned int "number"), + * o a charakter representing the type (char "type"), + * o the separator (char[3] "separator"), + * o a pointer to the next display hint block in the list. + * + * Then, it is checked whether it is a "simple" display hint, + * i.e. is hint that consists only of a single block and + * ASCII / UTF-8 restriction (type 'a' or 't'; as in 100a, 127t). + * (Maybe this can be extended for other simple hints.) + * + * If all of the above matches fail, the hints blocks are converted + * step by step using the these Mappings: + * o ASCII: \p{IsBasicLatin} + * o UTF-8: . + * o Binary: (0|1){8} (8 digits (0 or 1)) + * o Decimal: [0-9]{3} (3 decimal digits) + * o Octal: [0-7]{3} (3 octal digits) + * o Hexadecimal: [0-9A-Fa-f]{2} (2 hexadecimal digits) + * The conversion is not straight forward, + * because there may be also (even several) length restrictions + * and we have to count (or try to estimate) the used octets. Thus, + * it is sometimes necessary to generate multiple patterns + * with different length specification. + * + * Unfortunately, the conversion still is quite difficult to understand + * although I added some comments. The good news is, that all IETF MIBs + * (and all other MIBs coming with libsmi) can be converted "the easy way" + * (i.e. without the difficult conversion loop).*/ + +char* getStrDHType(const char *hint, + SmiUnsigned32 *lengths, unsigned int numSubranges) +{ + unsigned int i = 0; + char *ret = lengths[ i ] ? "(" : "(("; + char *r2 = getKnownDisplayHint_XSD( hint, lengths, numSubranges ); + DH *dh; + int bl; + + r2 = NULL; + + if( r2 ) { + /* if( lengths[ i ] && lengths[i+1] < 65535 ) { + fputs( "LENGTH: ", stdout ); + fprintf( stdout, "min: %d, max: %d ; ", lengths[i], lengths[i+1] ); + fprintf( stdout, "hint was: %s\n", hint ); + } + if( numSubranges > 1 ) fputs( "MORE_SUBRANGES\n", stdout );*/ + return r2; + } + dh = parseDH( hint ); + bl = 0; + + if(! dh ) return NULL; + + /* check if we have a "simple" display hint (e.g. "100a") */ + if( !dh->next && ( dh->type == 'a' || dh->type == 't' ) ) { + switch( numSubranges ) { + case 0: + return getSimpleCharFacet_XSD( dh->type , dh->number, 0, dh->number ); + case 1: + return getSimpleCharFacet_XSD( dh->type , dh->number, lengths[0], lengths[1]); + default: + ret = "("; + for( i=0; i < numSubranges * 2; i+=2 ) { + if( i ) smiAsprintf( &ret, "%s)|(", ret ); + smiAsprintf( &ret, "%s%s", + ret, getSimpleCharFacet_XSD(dh->type, dh->number, + lengths[i], + lengths[i+1])); + } + smiAsprintf(&ret, "%s)", ret); + return ret; + } + } + + /* no "easy match was possible, so start the "hard" loop */ + do { + unsigned int octetsUsed = 0; + DH *iterDH; + + for( iterDH = dh; iterDH; iterDH = iterDH->next ) { + char *baseRegexp = NULL; + + switch( iterDH->type ) { + + case 'a': + /* ascii character */ + baseRegexp = "(\\p{IsBasicLatin})"; + break; + + case 't': + /* utf-8 character */ + baseRegexp = "."; + break; + + case 'b': + /* binary number */ + baseRegexp = "((0|1){8})"; + break; + + case 'd': + /* decimal number */ + baseRegexp = "([0-9]{3})"; + break; + + case 'o': + /* octal number */ + baseRegexp = "([0-7]{3})"; + break; + + case 'x': + /* hexadecimal number */ + baseRegexp = "([0-9A-Fa-f]{2})"; + break; + + default: + fputs( "smidump: Warning: unknown type of display-hint", + stderr ); + } + + + if( iterDH->number < lengths[ i ] ) { + /* there are more octets to come */ + if( iterDH->type == 'd' ) { + /* decimal number needs to be treated differently */ + if( iterDH->next ){ + /* we still have another diplay hint block coming */ + smiAsprintf( &ret, "%s(0|[1-9](([0-9]){0,%d}))", + ret, + numDigits(smiPow(255, + iterDH->number ))-1 ); + + /* adjust number of used digits */ + octetsUsed += iterDH->number; + + if( octetsUsed >= lengths[ i + 1 ] ) { + /* maximum number of octets used, + we must exit the loop */ + break; + } + + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s",ret, iterDH->separator ); + } + } + else { + /* no orther display hint coming up. + * we are at the last iteration */ + smiAsprintf( &ret, "%s((0|[1-9](([0-9]){0,%d})", + ret, + numDigits( smiPow( 255, + iterDH->number ) ) - 1 ); + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", + ret, iterDH->separator ); + } + if( lengths[ i+1 ] - 1 - octetsUsed ) { + /* not all digits for maximum string length (length[i+1 ]) + * have been used, so we have to add some digits */ + smiAsprintf(&ret, + "%s){%u,%u})(0|[1-9](([0-9]){0,%d}))", + ret, lengths[ i ] - 1 - octetsUsed, + lengths[ i+1 ] - 1 - octetsUsed, + numDigits( + smiPow( 255, iterDH->number ))- 1 ); + } + else { + /* maximum number of digets have been used, + * so let's terminate the pattern for this round*/ + smiAsprintf( &ret, "%s)", ret ); + } + + /* adjust the used digit counter */ + octetsUsed += iterDH->number; + + if( octetsUsed >= lengths[ i + 1 ] ) { + /* maximum number of octets used, we must exit the loop */ + break; + } + } + } + else { + /* type other than decimal */ + if( iterDH->next ){ + /* there will be another display hint block */ + smiAsprintf( &ret, "%s(%s{%d})", + ret, + baseRegexp, iterDH->number ); + + /* adjust number of used octets */ + octetsUsed += iterDH->number; + if( octetsUsed >= lengths[ i + 1 ] ) { + /* maximum number of octets used, + we must exit the loop */ + break; + } + + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", ret, iterDH->separator ); + } + } + else { + /* we are the last display hint block */ + smiAsprintf( &ret, "%s(%s", + ret, baseRegexp ); + + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", ret, iterDH->separator ); + } + + smiAsprintf( &ret, "(%s){%u,%u})%s", + ret, lengths[ i ] - 1, lengths[ i+1 ] - 1, + baseRegexp ); + + /* adjust the number of used octets */ + octetsUsed += iterDH->number; + if( octetsUsed >= lengths[ i + 1 ] ) { + /* maximum number of octets used, + we must exit the loop */ + break; + } + } + } + } + else { + /* might be the last one */ + + if( iterDH->type == 'd' ) { + /* decimal number needs to be treated differently */ + if( iterDH->number < lengths[ i+1 ] ) { + /* we are not using the maximun number of octets */ + smiAsprintf( &ret, "%s(0|[1-9]([0-9]{0,%d}))", + ret, + numDigits( smiPow( 255, iterDH->number ) ) ); + + /* adjust the number of used octets */ + octetsUsed += lengths[ i ]; + if( octetsUsed >= lengths[ i + 1 ] ) { + /* the maximum number of octets have been reached, + we must exit the loop */ + break; + } + + /* add separator char */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", ret, iterDH->separator ); + } + } + else { + /* we have used the maximum number of octets */ + smiAsprintf( &ret, "%s(0|[1-9]([0-9]{0,%d})", + ret, + numDigits( smiPow( 255, lengths[ i+1 ] ) ) ); + } + } + else { + /* type is not decimal */ + smiAsprintf( &ret, "%s(%s", ret, baseRegexp ); + if( iterDH->next ) { + /* there will be another display hint block */ + if( iterDH->separator ) { + smiAsprintf( &ret, "%s%s", ret, iterDH->separator ); + } + if( ! lengths[ i ] && lengths[ i+1 ] == 65535 ) { + /* minLength = 0, maxLength = 65535, + * i.e. no restriction at all */ + smiAsprintf( &ret, "%s)*",ret ); + } + else{ + /* we have a different length restriction */ + smiAsprintf( &ret, "%s){%u,%u}",ret, lengths[ i ], + MIN( iterDH->number, + lengths[ i + 1] ) - 1 ); + } + + /* adjust the number of used octets */ + octetsUsed += lengths[ i ]; + if( octetsUsed >= lengths[ i + 1 ] ) { + /* the maximum number of octets have been reached, + we must exit the loop */ + break; + } + } + else { + /* we are the ast display hint block */ + octetsUsed += lengths[ i ]; + if( iterDH->separator && + octetsUsed < lengths[ i + 1 ] ) { + /* we have a separator char and + * still not reached the maximum number of octets */ + if( ! lengths[ i ] && lengths[ i+1 ] == 65535 ) { + /* we have no length restriction */ + smiAsprintf( &ret, "%s%s)*%s", + ret, iterDH->separator, baseRegexp ); + } + else { + /* we have a length restriction */ + smiAsprintf( &ret, "%s%s){%u,%u}%s", + ret, iterDH->separator, + lengths[ i ], lengths[ i + 1] - 1, + baseRegexp ); + } + } + else { + /* we don't have a separator char or + * have used the maximum number of octets */ + if( ! lengths[ i ] && lengths[ i+1 ] == 65535 ) { + /* no lengths restriction */ + smiAsprintf( &ret, "%s)*%s", + ret, iterDH->separator ); + /* TBD: what, if there is no separator ??? */ + } + else { + /* we have a length restriction */ + smiAsprintf( &ret, "%s){%u,%u}%s", + ret, lengths[ i ], + lengths[ i + 1], + iterDH->separator ); + /* TBD: what, if there is no separator ??? */ + } + } + } + } + + if( octetsUsed >= lengths[ i + 1 ] ) { + /* the maximum number of octets have been reached, + we must exit the loop */ + break; + } + } + } + /* adjust the "pointer" for the lenghts array */ + i += 2; + + if( i < numSubranges * 2 ) { + /* we are not the last subrange, so we have to extend the pattern */ + smiAsprintf( &ret, "%s)|(", ret ); + } + else { + /* we are the last subrange */ + smiAsprintf( &ret, "%s)", ret ); + if( ! lengths[ 0 ] ) { + smiAsprintf( &ret, "%s){0,1}", ret ); + } + } + } while( i < numSubranges * 2 ); + + /* check if all brackets have been closed */ + if( getBracketLevel( ret ) ) { + bl = getBracketLevel( ret ); + fprintf( stderr, "%d\n", bl ); + if( bl > 0 ) { + /* TODO: add a warning that brackets have been added */ + for(; bl; bl--) { + smiAsprintf( &ret, "%s)", ret ); + } + } + else { + /* TODO: some error handling */ + } + } + return ret; +} + +/* + * Perhaps we should introduce another parameter (flags) which + * controls whether shortcuts are taken and such things... + */ + +extern char* +smiFormatToPattern(const char *format, SmiRange *smiRange) +{ + SmiRange *range = smiRange; + SmiUnsigned32 *lengths = NULL; + int num = 0, lp; + char *pattern; + + for (range = smiRange; range; range = smiGetNextRange(range)) { + num++; + } + + /* copy ranges to array (no clue why this is being done) */ + + if (num) { + lengths = xmalloc(2 * num * sizeof(SmiUnsigned32)); + for (range = smiRange, lp = 0; range; range = smiGetNextRange(range)) { + lengths[lp++] = range->minValue.value.unsigned32; + lengths[lp++] = range->maxValue.value.unsigned32; + } + } else { + lengths = xmalloc( 2 * sizeof(SmiUnsigned32)); + lengths[0] = 0; + lengths[1] = 65535; + } + + pattern = getStrDHType(format, lengths, num); + xfree(lengths); + + return pattern; +} diff --git a/tools/fortopat.h b/tools/fortopat.h new file mode 100644 index 0000000..5e7ce40 --- /dev/null +++ b/tools/fortopat.h @@ -0,0 +1,43 @@ +/* + * fortopat.h -- + * + * Header file for format string to xsd pattern conversion. + * + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * (c) 2002 T. Klie, Technical University of Braunschweig. + * (c) 2002 F. Strauss, Technical University of Braunschweig. + * (c) 2007 T. Klie, Technical University of Braunschweig. + * (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: rea.h 7289 2007-09-28 06:48:22Z schoenw $ + */ + +#ifndef _FORTOPAT_H +#define _FORTOPAT_H + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + +/* + * Convert the octet string format string in fmt to an xsd pattern + * with the ranges given by range. The pattern is returned as an + * allocated string and must be xfree()d by the caller. On failure, + * a NULL pointer will be returned. + */ + +extern char* smiFormatToPattern(const char *format, SmiRange *range); + +#endif diff --git a/tools/fprint.c b/tools/fprint.c new file mode 100644 index 0000000..b1462a2 --- /dev/null +++ b/tools/fprint.c @@ -0,0 +1,107 @@ +/* + * fprint.c -- + * + * This file defines commonly used utility functions to produce + * nicely indented output. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: fprint.c 8024 2008-04-11 13:25:26Z schoenw $ + */ + + + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "fprint.h" + +/* + * This module keeps internal state. Hence, these functions are not + * thread safe. Note, however, that multi-threaded concurrent output + * generation may not be such a wonderful idea anyway - so using + * static variables may be good enough. + */ + + +int fprint_current_column = 0; +int fprint_indent_max = 64; +int fprint_indent_texts = 4; + + + +void +fprint(FILE *f, char *fmt, ...) +{ + va_list ap; + char *s; + char *p; + + va_start(ap, fmt); + fprint_current_column += smiVasprintf(&s, fmt, ap); + va_end(ap); + fputs(s, f); + if ((p = strrchr(s, '\n'))) { + fprint_current_column = strlen(p) - 1; + } + free(s); +} + + + +void +fprintSegment(FILE *f, int column, char *string, int length) +{ + fprint(f, "%*c%s", column, ' ', string); + if (length) { + fprint(f, "%*c", length - strlen(string) - column, ' '); + } +} + + + +void +fprintWrapped(FILE *f, int column, char *string) +{ + if ((fprint_current_column + strlen(string)) > fprint_indent_max) { + putc('\n', f); + fprint_current_column = 0; + fprintSegment(f, column, "", 0); + } + fprint(f, "%s", string); +} + + + +void +fprintMultilineString(FILE *f, int column, const char *s) +{ + int i, len; + + fprintSegment(f, column - 1 + fprint_indent_texts, "\"", 0); + if (s) { + len = strlen(s); + for (i=0; i < len; i++) { + putc(s[i], f); + fprint_current_column++; + if (s[i] == '\n') { + fprint_current_column = 0; + fprintSegment(f, column + fprint_indent_texts, "", 0); + } + } + } + putc('\"', f); + fprint_current_column++; +} diff --git a/tools/fprint.h b/tools/fprint.h new file mode 100644 index 0000000..438ea09 --- /dev/null +++ b/tools/fprint.h @@ -0,0 +1,36 @@ +/* + * fprint.h -- + * + * Header-file for commonly used utility functions to produce + * nicely indented output. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 2007 J. Schoenwaelder, Jacobs University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: fprint.h 7289 2007-09-28 06:48:22Z schoenw $ + */ + +#ifndef _FPRINT_H +#define _FPRINT_H + +#include +#include + +extern int fprint_current_column; +extern int fprint_indent_max; +extern int fprint_indent_texts; + +extern void fprintInit(int indent_max, int indent_texts); + +extern void fprint(FILE *f, char *fmt, ...); + +extern void fprintSegment(FILE *f, int column, char *string, int length); + +extern void fprintWrapped(FILE *f, int column, char *string); + +extern void fprintMultilineString(FILE *f, int column, const char *s); + +#endif diff --git a/tools/mib2svg.cgi.in b/tools/mib2svg.cgi.in new file mode 100644 index 0000000..1cd0cee --- /dev/null +++ b/tools/mib2svg.cgi.in @@ -0,0 +1,148 @@ +#!/usr/bin/perl -w -T +use strict; +use CGI qw(:standard); +#set this for testing purposes only +#use CGI::Carp qw(fatalsToBrowser); +use File::Temp; + +#some security-settings +$CGI::POST_MAX = 1024 * 100; +$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin'; + +#gather all mibs in smipath into @mibnames +my $smipath = "@smipath@"; +my @smidirs = split(/:/,$smipath); +my @mibnames; +foreach my $dir (@smidirs) { + opendir(MIBDIR,$dir); + my @entries = grep !/^\.\.?\z/, readdir(MIBDIR); + closedir(MIBDIR); + @mibnames = (@mibnames, @entries); +} + +if (param()) { + #params present. + my @options; + my $localfh; + my $localfn; + my @mibs = param('mibs'); + my $width = param('width'); + my $height = param('height'); + + #parse options and add safe strings to the options-array + if (param('deprobs')) { + if (param('deprobs') eq "deprecated") { + @options = (@options, "--svg-show-deprecated"); + } elsif (param('deprobs') eq "obsolete") { + @options = (@options, "--svg-show-depr-obsolete"); + } + } + + if (param('static')) { + @options = (@options, "--svg-static-output"); + } + + if ($width =~ /(\d+)/) { + if ($1 <= 2147483647) { + @options = (@options, "--svg-width=$1"); + } + } + if ($height =~ /(\d+)/) { + if ($1 <= 2147483647) { + @options = (@options, "--svg-height=$1"); + } + } + + #parse selected MIBs + foreach my $mibname (@mibnames) { + foreach my $mib (@mibs) { + if ($mibname eq $mib) { + $mibname =~ /([\w\-]+)/; + @options = (@options, "$1"); + } + } + } + + #handle file upload + if (param('uploadmib')) { + my $remotefh = upload('uploadmib'); + ($localfh, $localfn) + = File::Temp->tempfile('tempMIBXXXX', DIR => '/tmp', UNLINK => 1) + or die "Error opening outfile\n"; + while (<$remotefh>) { + print $localfh $_; + } + close $remotefh; + close $localfh; + @options = (@options, $localfn); + } + + #call smidump + my $res = open (SMIDUMP, "-|"); + die "Couldn't open pipe to subprocess" unless defined($res); + exec "@prefix@/bin/smidump",'-u','-f','svg',@options + or die "Couldn't exec smidump" if $res == 0; + my @svg = ; + close (SMIDUMP); + + #serve svg + my $svglength = @svg; + if ($svglength eq 0) { + print header; + print start_html("MIB to SVG"); + print h2("Sorry, smidump output contained no data."); + print end_html; + } else { + #FIXME - or + ? + print header(-TYPE => "image/svg-xml"); + print "@svg"; + } + +} else { + #no params present + #send form + print header; + print start_html("MIB to SVG"); + print h2("Generate a SVG Diagram from MIB Modules"); + print start_multipart_form(); + + print p("select one or more MIBs: ", scrolling_list( + -NAME => "mibs", + -VALUES => [@mibnames], + -SIZE => 10, + -MULTIPLE => 1, + )); + + print p("or upload a MIB: ", filefield( + -NAME => "uploadmib" + )); + + print p("diagram width: ", textfield( + -NAME => "width", + -DEFAULT => "1100" + )); + print p("diagram height: ", textfield( + -NAME => "height", + -DEFAULT => "700" + )); + + print p(radio_group( + -NAME => "deprobs", + -VALUES => [ qw(none deprecated obsolete) ], + -LINEBREAK => 1, + -LABELS => { + none => "show only current objects", + deprecated => "show current and deprecated objects", + obsolete => "show all objects", + }, + )); + + print p(checkbox( + -NAME => "static", + -LABEL => "generate a smaller, non-interactive SVG diagram", + )); + + print p(submit("generate SVG"), reset("reset form")); + print end_form; + print end_html; +} diff --git a/tools/rea.c b/tools/rea.c new file mode 100644 index 0000000..3b9948f --- /dev/null +++ b/tools/rea.c @@ -0,0 +1,1820 @@ +/* + * rea.c -- + * + * This file holds the reverse engineering algorithm common for + * dump-cm.c and dump-svg.c. + * + * Copyright (c) 2000 A. Mueller, Technical University of Braunschweig. + * Copyright (c) 2005 K. Sperner, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: rea.c 7823 2008-03-01 13:53:12Z schoenw $ + */ + + + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" +#include "rea.h" + + + +/* + * Constants used by the reverse engineering algorithm. + */ + +static char *pointer[] = { + "Index", NULL +}; + +static char *suffix[] = { + "OrZero", NULL +}; + +static char *supportObjs[] = { + "RowStatus", "StorageType", NULL +}; + +static char *baseTypes[] = { + "Integer32", "OctetString", "Unsigned32", "Integer64", + "Unsigned64", "Float32", "Float64", "Float128", + "Enumeration", "Counter32", "Counter64","Bits", + "Gauge", "Gauge32", "Integer", "TimeTicks", + "IpAddress", "Opaque", "ObjectIdentifier", + NULL +}; + + + +/* + * driver output control + */ + +/* + * variables for svg-output + * + * When you change CANVASHEIGHT, CANVASWIDTH values here, you should + * also change them in initSvg() and the cgi-script. + */ + +int CANVASHEIGHT = 700; /* height of the svg */ +int CANVASWIDTH = 1100; /* width of the svg */ +int SHOW_DEPRECATED = 0; /* false, show deprecated objects */ +int SHOW_DEPR_OBSOLETE = 0; /* false, show deprecated and + obsolete objects */ +int STATIC_OUTPUT = 0; /* false, enable interactivity */ +/* variables for cm-driver */ +int XPLAIN = 0; /* false, generates ASCII output */ +int XPLAIN_DEBUG = 0; /* false, generates additional + output in xplain-mode */ +int SUPPRESS_DEPRECATED = 1; /* true, suppresses deprecated + objects */ +/* common variables */ +int PRINT_DETAILED_ATTR = 1; /* true, prints all column + objects */ +int IGNORE_IMPORTED_NODES = 1; /* true, ignores nodes which are + imported from other MIBs*/ + +/* + * global variables + */ +Graph *graph = NULL; /* the graph */ + + + + + +/* ------ Misc. ----------------- */ + + + + + +/* + * cmpSmiNodes + * + * Compares two SmiNode and returns 1 if they are equal and 0 otherwise. + */ +int cmpSmiNodes(SmiNode *node1, SmiNode *node2) +{ + SmiModule *module1, *module2; + + module1 = smiGetNodeModule(node1); + module2 = smiGetNodeModule(node2); + + if (!node1 || !node2 || !module1 || !module2) return 0; + + return (strcmp(node1->name, node2->name) == 0 && + strcmp(module1->name, module2->name) == 0); +} + +/* + * strpfxlen + * + * Returns the number of identical characters at the beginning of s1 and s2. + */ +static int strpfxlen(const char *s1, const char *s2) +{ + int i; + + for (i = 0; s1[i] && s2[i]; i++) { + if (s1[i] != s2[i]) { + break; + } + } + + return i; +} + + + + + +/* ------ Graph primitives ------ */ + + + + + +/* + * graphInsertNode + * + * Inserts a new node into an existing graph. + * + * Result : pointer to the new node + */ +GraphNode *graphInsertNode(Graph *graph, SmiNode *smiNode) +{ + GraphNode *newNode; + GraphNode *tNode; + GraphNode *lastNode; + + newNode = xmalloc(sizeof(GraphNode)); + memset(newNode, 0, sizeof(GraphNode)); + newNode->smiNode = smiNode; + + if (graph->nodes == NULL) { + graph->nodes = newNode; + return newNode; + } + + lastNode = NULL; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + lastNode = tNode; + } + + lastNode->nextPtr = newNode; + + return newNode; +} + +/* + * graphInsertComponent + * + * Inserts a new component into an existing graph. + * + * Result : pointer to the new component + */ +GraphComponent *graphInsertComponent(Graph *graph) +{ + GraphComponent *newComponent; + GraphComponent *tComponent; + GraphComponent *lastComponent; + + newComponent = xmalloc(sizeof(GraphComponent)); + memset(newComponent, 0, sizeof(GraphComponent)); + + if (graph->components == NULL) { + graph->components = newComponent; + return newComponent; + } + + lastComponent = NULL; + for (tComponent = graph->components; tComponent; + tComponent = tComponent->nextPtr) { + lastComponent = tComponent; + } + + lastComponent->nextPtr = newComponent; + + return newComponent; +} + +/* + * graphInsertEdge + * + * Inserts a new edge into an existing list of edges. + * + * Input : graph = pointer to an edge structure + * startNode = pointer to the starting node of the edge + * endNode = pointer to the ending node of the edge + * indexkind = type of relationship between the two nodes + * + * Result : pointer to the new edge + */ +static GraphEdge *graphInsertEdge(Graph *graph, GraphNode *startNode, + GraphNode *endNode, + SmiIndexkind indexkind, + GraphEnhIndex enhancedindex) +{ + GraphEdge *newEdge; + GraphEdge *tEdge; + GraphEdge *lastEdge; + + newEdge = xmalloc(sizeof(GraphEdge)); + memset(newEdge, 0, sizeof(GraphEdge)); + newEdge->startNode = startNode; + newEdge->endNode = endNode; + newEdge->indexkind = indexkind; + newEdge->connection = GRAPH_CON_ASSOCIATION; + newEdge->enhancedindex = enhancedindex; + + switch (newEdge->indexkind) { + case SMI_INDEX_AUGMENT : + newEdge->cardinality = GRAPH_CARD_ONE_TO_ONE; + break; + case SMI_INDEX_SPARSE : + newEdge->cardinality = GRAPH_CARD_ONE_TO_ZERO_OR_ONE; + break; + case SMI_INDEX_EXPAND : + newEdge->cardinality = GRAPH_CARD_UNKNOWN; + break; + case SMI_INDEX_REORDER : + newEdge->cardinality = GRAPH_CARD_ONE_TO_ONE; + break; + case SMI_INDEX_INDEX : + newEdge->cardinality = GRAPH_CARD_UNKNOWN; + break; + case SMI_INDEX_UNKNOWN : + newEdge->cardinality = GRAPH_CARD_UNKNOWN; + break; + } + + if (graph->edges == NULL) { + graph->edges = newEdge; + return newEdge; + } + + lastEdge = NULL; + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + lastEdge = tEdge; + } + + lastEdge->nextPtr = newEdge; + + return newEdge; +} + +/* + * graphExit + * + * Frees all memory allocated by the graph. + */ +void graphExit(Graph *graph) +{ + GraphEdge *tEdge, *dummyEdge; + GraphNode *tNode, *dummyNode; + GraphComponent *tComponent, *dummyComponent; + + if (graph) { + + dummyNode = NULL; + tNode = graph->nodes; + while (tNode != NULL) { + dummyNode = tNode; + tNode = tNode->nextPtr; + + xfree(dummyNode); + } + + dummyEdge = NULL; + tEdge = graph->edges; + while (tEdge != NULL) { + dummyEdge = tEdge; + tEdge = tEdge->nextPtr; + + xfree(dummyEdge); + } + + dummyComponent = NULL; + tComponent = graph->components; + while (tComponent != NULL) { + dummyComponent = tComponent; + tComponent = tComponent->nextPtr; + + xfree(dummyComponent); + } + + xfree(graph); + } +} + +/* + * graphGetFirstEdgeByNode + * + * Returns the first edge adjacent to the given node (as startNode or EndNode). + */ +GraphEdge *graphGetFirstEdgeByNode(Graph *graph, GraphNode *node) +{ + GraphEdge *tEdge; + + if (!graph || !node) { + return NULL; + } + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + /*if (tEdge->startNode->smiNode->name == node->smiNode->name || + tEdge->endNode->smiNode->name == node->smiNode->name) break;*/ + if (cmpSmiNodes(tEdge->startNode->smiNode, node->smiNode) || + cmpSmiNodes(tEdge->endNode->smiNode, node->smiNode)) break; + } + + return tEdge; +} + +/* + * graphGetNextEdgeByNode + * + * Returns the next edge adjacent to the given node (as startNode or EndNode) + * after the given edge. + */ +GraphEdge *graphGetNextEdgeByNode(Graph *graph, + GraphEdge *edge, + GraphNode *node) +{ + GraphEdge *tEdge; + + if (!graph || !node) { + return NULL; + } + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + /*if (tEdge->startNode->smiNode->name == + edge->startNode->smiNode->name && + tEdge->endNode->smiNode->name == + edge->endNode->smiNode->name) break;*/ + if (cmpSmiNodes(tEdge->startNode->smiNode,edge->startNode->smiNode) && + cmpSmiNodes(tEdge->endNode->smiNode,edge->endNode->smiNode)) + break; + } + + for (tEdge = tEdge->nextPtr; tEdge; tEdge = tEdge->nextPtr) { + /*if (tEdge->startNode->smiNode->name == node->smiNode->name || + tEdge->endNode->smiNode->name == node->smiNode->name) break;*/ + if (cmpSmiNodes(tEdge->startNode->smiNode, node->smiNode) || + cmpSmiNodes(tEdge->endNode->smiNode, node->smiNode)) break; + } + + return tEdge; +} + +/* + * graphCheckForRedundantEdge + * + * Finds redundant edges and returns 1 if one is found and 0 otherwise. + */ +static int graphCheckForRedundantEdge(Graph *graph, + GraphNode *startNode, + GraphNode *endNode) +{ + GraphEdge *tEdge; + + if (!graph || !startNode || !endNode) { + return 0; + } + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + /*if (tEdge->startNode->smiNode->name == startNode->smiNode->name && + tEdge->endNode->smiNode->name == endNode->smiNode->name) {*/ + if (cmpSmiNodes(tEdge->startNode->smiNode, startNode->smiNode) && + cmpSmiNodes(tEdge->endNode->smiNode, endNode->smiNode)) { + + return 1; + } + } + + return 0; +} + +/* + * graphGetNode + * + * Returns the graph node containing smiNode. + */ +static GraphNode *graphGetNode(Graph *graph, SmiNode *smiNode) +{ + GraphNode *tNode; + + if (!smiNode || !graph) { + return NULL; + } + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->name == smiNode->name) { + break; + } + } + + return tNode; +} + +/* + * graphShowNodes + * + * Prints the nodes of the graph. + */ +void graphShowNodes(Graph *graph) +{ + GraphNode *tNode; + + if (!graph->nodes) { + printf("No nodes!\n"); + return; + } + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) + printf(" [TABLE]"); + else printf("[SCALAR]"); + printf("%40s [%s]\n", tNode->smiNode->name, + smiGetNodeModule(tNode->smiNode)->name); + } +} + +/* + * graphShowEdges + * + * Prints the edges with their attributes in the following order : + * - start node + * - reason for the link + * - connection type in UML + * - cardinality + * - index relationship derived from the row-objects of the tables + * + */ +static void graphShowEdges(Graph *graph) +{ + GraphEdge *tEdge; + + if (!graph->edges) { + printf("No edges!\n"); + return; + } + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + + if (XPLAIN_DEBUG) { + switch (tEdge->enhancedindex) { + case GRAPH_ENHINDEX_UNKNOWN : + printf("[UNKNOWN] "); + break; + case GRAPH_ENHINDEX_NOTIFICATION : + break; + case GRAPH_ENHINDEX_NAMES : + printf(" [NAMES] "); + break; + case GRAPH_ENHINDEX_TYPES : + printf(" [TYPES] "); + break; + case GRAPH_ENHINDEX_INDEX : + printf(" [INDEX] "); + break; + case GRAPH_ENHINDEX_REROUTE : + printf("[REROUTE] "); + break; + case GRAPH_ENHINDEX_POINTER : + printf("[POINTER] "); + break; + } + } + + switch (tEdge->connection) { + case GRAPH_CON_AGGREGATION: + printf("AG."); + break; + case GRAPH_CON_DEPENDENCY: + printf("D. "); + break; + case GRAPH_CON_ASSOCIATION: + printf("A. "); + break; + case GRAPH_CON_UNKNOWN: + break; + } + + switch (tEdge->cardinality) { + case GRAPH_CARD_UNKNOWN : + printf(" (-:-) "); + break; + case GRAPH_CARD_ONE_TO_ONE : + printf(" (1:1) "); + break; + case GRAPH_CARD_ONE_TO_MANY : + printf(" (1:n) "); + break; + case GRAPH_CARD_ZERO_TO_ONE : + printf(" (0:1) "); + break; + case GRAPH_CARD_ZERO_TO_MANY : + printf(" (0:n) "); + break; + case GRAPH_CARD_ONE_TO_ZERO_OR_ONE : + printf("(1:0..1) "); + break; + } + + switch (tEdge->indexkind) { + case SMI_INDEX_UNKNOWN : + printf("GENERIC "); + break; + case SMI_INDEX_INDEX : + printf(" INDEX "); + break; + case SMI_INDEX_AUGMENT : + printf("AUGMENT "); + break; + case SMI_INDEX_SPARSE : + printf(" SPARSE "); + break; + case SMI_INDEX_EXPAND : + printf(" EXPAND "); + break; + case SMI_INDEX_REORDER : + printf("REORDER "); + break; + } + printf("%29s - ",tEdge->startNode->smiNode->name); + printf("%s\n",tEdge->endNode->smiNode->name); + } +} + + + + + +/* ------ algorithm primitives ------ */ + + + +/* + * algCountIndexElements + * + * Returns the number of index elements in a given row entry. + */ + +static int algCountIndexElements(SmiNode *smiNode) +{ + int count; + SmiElement *smiElement; + + if (smiNode->nodekind != SMI_NODEKIND_ROW) { + return 0; + } + + count = 0; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + count++; + } + + return count; +} + +/* + * algInsertEdge + * + * Inserts an edge in a given graph. The edge is adjacent to snode + * and enode. + * The type of edge is given in indexkind and the enhanced index as + * an additional information in enhancedindex. + * Nodes which are not loaded yet into the node list of the graph + * are added (nodes from imported MIBs). + */ +static void algInsertEdge(SmiNode *snode, SmiNode *enode, + SmiIndexkind indexkind, + GraphEnhIndex enhancedindex) +{ + GraphNode *startNode; + GraphNode *endNode; + + if (!graph) return; + + startNode = graphGetNode(graph, snode); + endNode = graphGetNode(graph, enode); + + /* insert imported nodes into graph if needed */ + if (startNode == NULL) { + if (IGNORE_IMPORTED_NODES) return; + + startNode = graphInsertNode(graph, snode); + } + if (endNode == NULL) { + if (IGNORE_IMPORTED_NODES) return; + + endNode = graphInsertNode(graph, enode); + } + + if (graphCheckForRedundantEdge(graph, startNode, endNode) == 0 && + graphCheckForRedundantEdge(graph, endNode, startNode) == 0) { + graphInsertEdge(graph, startNode, endNode, indexkind, enhancedindex); + } +} + +/* + * algGetGroupByFatherNode + * + * Returns the group number associated with the father node of the + * given node. If there is no group the result is 0 for no + * grouping. + */ +static int algGetGroupByFatherNode(SmiNode *smiNode) +{ + GraphNode *tNode; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR && + !graphGetFirstEdgeByNode(graph, tNode)) { + if (cmpSmiNodes(smiGetParentNode(smiNode), + smiGetParentNode(tNode->smiNode))) { + return tNode->group; + } + } + } + + return 0; +} + +/* + * algGetNumberOfGroups + * + * Returns the number of groups. + */ +int algGetNumberOfGroups() +{ + GraphNode *tNode; + int maxGroup; + + maxGroup = 0; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + maxGroup = max(maxGroup, tNode->group); + } + + return maxGroup; +} + +/* + * algPrintGroup + * + * Prints the group with the number group. + */ +static void algPrintGroup(int group) +{ + GraphNode *tNode; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->group == group) { + printf("%2d - %35s\n", group, tNode->smiNode->name); + } + } +} + +/* + * algGetTypeDescription + * + * Returns the description of the data type used in smiNode. + */ +char *algGetTypeDescription(SmiNode *smiNode) +{ + SmiType *smiType, *parentType; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + smiType = parentType; + } + + return smiType->description; +} + +/* + * algGetTypeName + * + * Returns the name of the data type used in smiNode. + */ +char *algGetTypeName(SmiNode *smiNode) +{ + SmiType *smiType, *parentType; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + smiType = parentType; + } + + return smiType->name; +} + +/* + * algGetTypeModule + * + * Returns the module which defines the data type used in smiNode. + */ +SmiModule *algGetTypeModule(SmiNode *smiNode) +{ + SmiType *smiType, *parentType; + SmiModule *smiModule; + + smiType = smiGetNodeType(smiNode); + + if (!smiType || smiNode->nodekind == SMI_NODEKIND_TABLE) + return NULL; + + if (smiType->decl == SMI_DECL_IMPLICIT_TYPE) { + parentType = smiGetParentType(smiType); + smiType = parentType; + } + + smiModule = smiGetTypeModule(smiType); + + return smiModule; +} + +/* + * algCountElementsFromOtherTables + * + * Returns the number of index objects derived from other tables than + * the given one. + */ +static int algCountElementsFromOtherTables(SmiNode *smiNode) +{ + SmiElement *smiElement; + SmiNode *tNode; + int elems = 0; + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + tNode = smiGetElementNode(smiElement); + + if (cmpSmiNodes(smiGetParentNode(smiGetParentNode(tNode)), + smiGetParentNode(smiNode)) != 1) { + elems++; + } + } + + return elems; +} + +/* + * algGetNumberOfRows + * + * Returns the number of rows = + * number of elements in smiNode - number of rows + * + RowStatus-Objects + StorageType-Objects + * + * If the number is > 0 it is only a supporting table (like entLPMappingTable) + * and if the number is < 0 it is a "full" table (like ifTable). + * + * Subroutine for algCheckForDependency. + */ +static int algGetNumberOfRows(SmiNode *smiNode) +{ + SmiNode *tSmiNode; + SmiNode *table; + int i, elemCount; + + elemCount = 0; + table = smiNode; + tSmiNode = smiGetFirstChildNode(table); + + elemCount = algCountIndexElements(tSmiNode) - + algCountElementsFromOtherTables(tSmiNode); + + for (tSmiNode = smiGetNextNode(tSmiNode, SMI_NODEKIND_COLUMN); + tSmiNode; + tSmiNode = smiGetNextNode(tSmiNode, SMI_NODEKIND_COLUMN)) { + + if (cmpSmiNodes(table, smiGetParentNode(smiGetParentNode(tSmiNode))) + != 1) { + break; + } + + for (i = 0; supportObjs[i]; i++) { + char *typeName = algGetTypeName(tSmiNode); + if (typeName && (strcasecmp(typeName, supportObjs[i]) == 0)) { + break; + } + } + + if (!supportObjs[i]) elemCount--; + } + + return elemCount; +} + +/* + * isBaseType + * + * returns 1 if smiElement is a basetype used in SMIv2/SMIng. Otherwise + * the result is 0. + */ +int isBaseType(SmiNode *node) +{ + int i; + + for (i = 0; baseTypes[i]; i++) { + if (strcasecmp(algGetTypeName(node), baseTypes[i]) == 0) { + return 1; + } + } + + return 0; +} + +/* + * algFindEqualType + * + * Looks in all tables indices for an equal type to the type used in typeNode. + * It returns the first table found which is different to startTable. + * + * Subroutine for algCheckForDependency. + */ +static SmiNode *algFindEqualType(SmiNode *startTable, SmiNode *typeNode) +{ + SmiElement *smiElement; + SmiNode *tSmiNode; + char *typeName; + GraphNode *tNode; + + typeName = algGetTypeName(typeNode); + /* if (isBaseType(typeNode)) return NULL; */ + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + tSmiNode = tNode->smiNode; + if (cmpSmiNodes(tSmiNode, startTable) == 1) break; + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tSmiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + /* found type matching ? */ + if (strcmp(typeName, + algGetTypeName(smiGetElementNode + (smiElement))) == 0) { + return tSmiNode; + } + } + + } + } + + return NULL; +} + +/* + * 0 = totaly equal (order and objects) + * 1 = equal objects but different order + * 2 = inequal + * 3 = error; + */ + static int equalElements(SmiNode *firstRow, SmiNode *secondRow) +{ + int i,j,number1, number2; + SmiElement *elemFirst, *elemSecond; + + if (!firstRow->nodekind == SMI_NODEKIND_ROW || + !secondRow->nodekind == SMI_NODEKIND_ROW) { + /* printf("no row entries\n"); */ + return 3; + } + + if (cmpSmiNodes(firstRow, secondRow) == 1) { + /* printf("same objects\n"); */ + return 3; + } + + number1 = algCountIndexElements(firstRow); + number2 = algCountIndexElements(secondRow); + + if (number1 != number2) { + /* printf("Different number of elements\n"); */ + return 2; + } + + i = 0; + for (elemFirst = smiGetFirstElement(firstRow); + elemFirst; + elemFirst = smiGetNextElement(elemFirst)) { + i++; + + j = 0; + for (elemSecond = smiGetFirstElement(secondRow); + elemSecond; + elemSecond = smiGetNextElement(elemSecond)) { + j++; + if (i == j && cmpSmiNodes(smiGetElementNode(elemFirst), + smiGetElementNode(elemSecond)) == 1) { + break; + } + } + + /* maybe same elements but in different order */ + if (!elemSecond) break; + } + if (!elemFirst) { + /* printf("totaly equal\n"); */ + return 0; + } + + for (elemFirst = smiGetFirstElement(firstRow); + elemFirst; + elemFirst = smiGetNextElement(elemFirst)) { + + for (elemSecond = smiGetFirstElement(secondRow); + elemSecond; + elemSecond = smiGetNextElement(elemSecond)) { + + if (cmpSmiNodes(smiGetElementNode(elemFirst), + smiGetElementNode(elemSecond)) == 1) { + break; + } + } + + /* maybe same elements but in different order */ + if (!elemSecond) break; + } + + if (!elemFirst) { + /* printf("Equal\n"); */ + return 1; + } + else { + /* printf("inequal"); */ + return 2; + } +} + +/* + * algIsIndexElement + * + * Tests whether a given node is part of the index of a particular + * table. Returns 1 if the node is an index node and 0 otherwise. + */ + +int algIsIndexElement(SmiNode *table, SmiNode *node) +{ + SmiElement *smiElement; + SmiNode *row; + + if (node->nodekind != SMI_NODEKIND_TABLE) { + return 0; + } + + row = smiGetFirstChildNode(table); + if (!row || row->nodekind != SMI_NODEKIND_ROW) { + return 0; + } + + for (smiElement = smiGetFirstElement(row); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + SmiNode *indexNode = smiGetElementNode(smiElement); + if (cmpSmiNodes(indexNode, node)) { + return 1; + } + } + + return 0; +} + +/* -------------- main functions ------------------------------------------- */ + + + + +/* + * algCheckForExpandRel + * + * Checks the given table for an expand relationship to an other table. + * + * 1. gets the expanded table (father node of smiNode) + * 2. gets the base table by walking through the elements of the smiNode + * starting at the end. The first table found which is different from the + * expanded table is the first candidate for the base table. + * 3. comparing the number of elements in both tables + * if the number in the expanded table is greater -> 5. + * if the number in the base table is greater -> 4. + * 4. getting a second base table candidate : + * It is possible that a table expands an other table which is expanded + * by this. + * Therefore it is hard to track the base table. + * - scanning all tables which are different from the expanded table + * - the base table must have : + * - least elements + * - the same elementes must occur as in the expanded table + * 5. the elements in both tables are checked for equality + */ +static void algCheckForExpandRel(SmiNode *smiNode) +{ + SmiNode *tNode; + SmiNode *baseTable; + SmiNode *expTable; + SmiElement *smiElement; + SmiElement *findElement; + unsigned int refcounter; + unsigned int basecounter; + + if (!smiNode) return; + + expTable = smiGetParentNode(smiNode); + + /* count the elements in the given table <- father of smiNode */ + refcounter = algCountIndexElements(smiNode); + + /* find the base table <- via the last element which does not refer to + the expTable */ + baseTable = NULL; + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + tNode = smiGetElementNode(smiElement); + tNode = smiGetParentNode(tNode); + tNode = smiGetParentNode(tNode); + + if (cmpSmiNodes(tNode, expTable) == 1) break; + + baseTable = tNode; + } + + if (!baseTable) return; + + /* count the elements in the basetable */ + basecounter = algCountIndexElements(smiGetFirstChildNode(baseTable)); + + /* are baseTable and expTable identical ? */ + if (basecounter >= refcounter) { + + /* searching for new base table candidate in order to handle multiple + indices */ + for (baseTable = smiGetNextNode(baseTable, SMI_NODEKIND_TABLE); + baseTable; + baseTable = smiGetNextNode(baseTable, SMI_NODEKIND_TABLE)) { + + basecounter = algCountIndexElements(smiGetFirstChildNode(baseTable)); + + if (basecounter < refcounter) { + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(expTable)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + tNode = smiGetElementNode(smiElement); + + /*if (smiGetParentNode(smiGetParentNode(tNode))->name == + expTable->name) break; */ + if (cmpSmiNodes(smiGetParentNode(smiGetParentNode(tNode)), + expTable) == 1) break; + + for (findElement = smiGetFirstElement( + smiGetFirstChildNode(baseTable)); + findElement; + findElement = smiGetNextElement(findElement)) { + if (cmpSmiNodes(tNode, smiGetElementNode(findElement)) + == 1) break; + } + + if (!findElement) { + return; + } + } + break; + } + } + + if (!baseTable) { + return; + } + } + + for (smiElement = smiGetFirstElement(smiGetFirstChildNode(baseTable)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + tNode = smiGetElementNode(smiElement); + + for (findElement = smiGetFirstElement(smiGetFirstChildNode(expTable)); + findElement; + findElement = smiGetNextElement(findElement)) { + if (cmpSmiNodes(tNode, smiGetElementNode(findElement)) == 1) + break; + } + + if (!findElement) { + return; + } + } + + algInsertEdge(baseTable, expTable, SMI_INDEX_EXPAND, + GRAPH_ENHINDEX_INDEX); +} + +/* + * algCheckForSparseRel + * + * Checks the given table for a sparse relationship to an other table. + * + * Criterias for a sparse relationship : + * - same number of index elements in both tables + * - the same order of this elements + * 1. Getting the basetable via the last element in the index of smiNode. + * 2. comparing the number of elements + */ +static void algCheckForSparseRel(SmiNode *smiNode) +{ + SmiNode *tNode = NULL; + SmiNode *table; + SmiElement *smiElement; + unsigned int basecounter; + + if (!smiNode) return; + + table = smiGetParentNode(smiNode); + + basecounter = algCountIndexElements(smiNode); + + /* getting the basetable via the father node of the last element + to handle multiple instanceing */ + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + tNode = smiGetElementNode(smiElement); + } + + if (! tNode) { + return; + } + + tNode = smiGetParentNode(tNode); + if (equalElements(smiNode, tNode) == 0) { + algInsertEdge(smiGetParentNode(tNode), smiGetParentNode(smiNode), + SMI_INDEX_SPARSE, GRAPH_ENHINDEX_INDEX); + } +} + +/* + * algCheckForReOrderRel + * + * Checks the given table for a reorder relationship to an other table. + * + * Criterias for reoder relationships : + * - same number of elements + * - same elements must occur in a different order + */ +static void algCheckForReorderRel(SmiNode *smiNode) +{ + SmiNode *tNode; + GraphNode *graphNode; + + if (!smiNode) { + return; + } + + for (graphNode = graph->nodes; + graphNode; + graphNode = graphNode->nextPtr) { + tNode = graphNode->smiNode; + if (tNode->nodekind == SMI_NODEKIND_TABLE) { + if (equalElements(smiNode, smiGetFirstChildNode(tNode)) == 1) { + algInsertEdge(smiGetParentNode(smiNode), tNode, + SMI_INDEX_REORDER, GRAPH_ENHINDEX_INDEX); + break; + } + } + } +} + +/* + * algGetIndexkind + * + * Gets the indexkind of the given table. The row object of the table is + * passed to this function. + * Therefore three subfunctions are called to get the indexkind. + * - algChechForExpandRel + * - algCheckForSparseRel + * - algCheckForReOrderRel + * Look there for further information. + */ +static void algGetIndexkind(SmiNode *row) +{ + algCheckForExpandRel(row); + algCheckForSparseRel(row); + algCheckForReorderRel(row); +} + +/* + * algLinkTables + * + * Links the tables of the given module. + * + * 1. Getting the tables and the scalars from the given module. + * 2. Linking the tables : + * - AUGMENT no work to do just adding the corresponding edge + * - for other relationships the subfunction algGetIndexkind is called + * look there for further information + */ +void algLinkTables() +{ + GraphNode *tGraphNode; + SmiNode *node; + SmiNode *tSmiNode; + + /* linking the tables */ + for (tGraphNode = graph->nodes; + tGraphNode; + tGraphNode = tGraphNode->nextPtr) { + node = tGraphNode->smiNode; + + if (node->nodekind == SMI_NODEKIND_TABLE) { + node = smiGetFirstChildNode(node); + + if (node->nodekind == SMI_NODEKIND_ROW) { + + /* get the relationship between the tables and insert + the edges */ + if (node->indexkind == SMI_INDEX_INDEX) { + algGetIndexkind(node); + } else { + tSmiNode = node; + node = smiGetRelatedNode(node); + node = smiGetParentNode(node); + algInsertEdge(node, + smiGetParentNode(tSmiNode), + tSmiNode->indexkind, + GRAPH_ENHINDEX_INDEX); + } + } + } + } + + if (XPLAIN) { + printf("--- Second Phase - linking the tables\n\n"); + graphShowEdges(graph); + } +} + +/* + * algCheckLinksByName + * + * Reordering the connections by looking at the names. + * Related objects are linked (if their names are related). + * Every expand relationship is examined. Therefore number of + * identical characters at the beginning of the both table names is + * counted. + * Then every sparse relationship (only the ending node) is checked if + * there is better connection with more identical characters at the beginning. + * The starting node must be same as in the expand relationship to make sure + * that there are no unrelated tables are linked. + * Only legal overlappings lead to a new edge. A illegal overlap is : + * - when the next character in both strings is a lower case character + * because if something like this is detected the two strings are + * corresponding in the middle of their names and not at defined points + * like suffix or prefix (-> the next character must be upper case or NULL) + */ +void algCheckLinksByName() +{ + GraphEdge *tEdge, *tEdge2, *newEdge; + char *start, *end, *end2; + int overlap, longestOverlap, i; + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + + if (tEdge->indexkind == SMI_INDEX_EXPAND) { + + start = tEdge->startNode->smiNode->name; + end = tEdge->endNode->smiNode->name; + + overlap = strpfxlen(start,end); + + /* + * looking for better connection with longer overlap + * maybe better to traverse the edges with graphGetNextEdgeByNode + * using tEdge->startNode + */ + newEdge = NULL; + longestOverlap = overlap; + for (tEdge2 = graphGetFirstEdgeByNode(graph,tEdge->startNode); + tEdge2; + tEdge2 = graphGetNextEdgeByNode(graph, tEdge2, + tEdge->startNode)) { + + /* + * must be a sparse relationship to get a correct new edge + */ + if (tEdge2->indexkind == SMI_INDEX_SPARSE) { + end2 = tEdge2->endNode->smiNode->name; + + /* + * new overlap longer and different tables ? + */ + i = strpfxlen(end,end2); + if (overlap < i && + !cmpSmiNodes(tEdge->endNode->smiNode, + tEdge2->endNode->smiNode)) { + /* + * legal overlap ? + */ + if (islower((int)end[i]) && islower((int)end2[i])) { + break; + } + + longestOverlap=i; + newEdge = tEdge2; + } + } + } + + /* better connection found -> changing the edge */ + if (newEdge) { + tEdge->startNode = newEdge->endNode; + } + } + } + + if (XPLAIN) { + printf("\n--- Third Phase - reordering the connections\n\n"); + graphShowEdges(graph); + } +} + +/* + * algLinkObjectsByNames + * + * Links Scalars to Tables using the prefix + * Links Tables to Tables using the prefix + */ +static void algLinkObjectsByNames() +{ + GraphNode *tNode, *tNode2; + int overlap,minoverlap,new; + + /* getting the minimum overlap for all nodes */ + minoverlap = 10000; + tNode2 = graph->nodes; + if (tNode2) { + for (tNode = tNode2->nextPtr; tNode; tNode = tNode->nextPtr) { + minoverlap = min(minoverlap, strpfxlen(tNode->smiNode->name, + tNode2->smiNode->name)); + } + } + + /* + * prefix overlap of one is too short to create any usefull edges + */ + if (minoverlap == 1) return; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!graphGetFirstEdgeByNode(graph, tNode)) { + overlap = minoverlap; + + for (tNode2 = graph->nodes; tNode2; tNode2 = tNode2->nextPtr) { + if (cmpSmiNodes(tNode->smiNode, tNode2->smiNode)) continue; + + new = strpfxlen(tNode->smiNode->name, tNode2->smiNode->name); + + if (new >= overlap) { + + /* + * no scalar - scalar edges + */ + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR && + tNode2->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + continue; + } + + /* + * is it a legal prefix + * (if the next char is NULL || uppercase) + */ + if (tNode->smiNode->name[new] && + tNode2->smiNode->name[new]) { + if (!isupper((int)tNode->smiNode->name[new]) || + !isupper((int)tNode2->smiNode->name[new])) continue; + } + + overlap = new; + } + } + + if (overlap == minoverlap) continue; + + new = 0; + for (tNode2 = graph->nodes; tNode2; tNode2 = tNode2->nextPtr) { + if (cmpSmiNodes(tNode->smiNode, tNode2->smiNode)) continue; + + new = strpfxlen(tNode->smiNode->name, tNode2->smiNode->name); + + if (new == overlap && new > minoverlap) { + + /* + * a scalar should only be adjacent to one node + */ + if (tNode2->smiNode->nodekind == SMI_NODEKIND_SCALAR && + graphGetFirstEdgeByNode(graph,tNode2)) continue; + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR && + graphGetFirstEdgeByNode(graph,tNode)) continue; + + /* + * adding only table -> scalar edges + */ + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR && + tNode2->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + continue; + } + + if (tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + algInsertEdge(tNode2->smiNode, tNode->smiNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_NAMES); + } else { + algInsertEdge(tNode->smiNode, tNode2->smiNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_NAMES); + } + } + } + } + } +} + + +/* + * algGroupScalars + * + * Grouping the scalars using a common fathernode. + */ +static void algGroupScalars() +{ + GraphNode *tNode; + int actGroup, fGroup; + + actGroup = 0; + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!graphGetFirstEdgeByNode(graph, tNode) && + tNode->smiNode->nodekind == SMI_NODEKIND_SCALAR) { + fGroup = algGetGroupByFatherNode(tNode->smiNode); + if (fGroup == 0) { + tNode->group = ++actGroup; + } + else { + tNode->group = fGroup; + } + } + } + + if (XPLAIN) { + printf("Scalar Groups : \n"); + + if (algGetNumberOfGroups() != 0) { + for (actGroup = 1; + actGroup <= algGetNumberOfGroups(); + actGroup++) { + algPrintGroup(actGroup); + printf("\n"); + } + } else printf("No groups!\n"); + printf("\n"); + } +} + +/* + * algLinkLonelyTables + * + * Links isolated tables with other tables via the types of the + * index objects. + * If no type is found the types are checked via the suffix if they differ + * only in the range (-OrZero). Therefore the suffix-vector is checked. + * Basetypes used in SMIv1/v2/ng are sorted out. + */ +static void algLinkLonelyTables() +{ + SmiElement *smiElement, *smiElement2 = NULL; + GraphNode *tNode, *tNode2; + int i; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (!graphGetFirstEdgeByNode(graph, tNode) && + tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(tNode->smiNode)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + for (tNode2 = graph->nodes; + tNode2; + tNode2 = tNode2->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE && + tNode != tNode2) { + + for (smiElement2 = smiGetFirstElement( + smiGetFirstChildNode(tNode2->smiNode)); + smiElement2; + smiElement2 = smiGetNextElement(smiElement2)) { + + if (strcasecmp(algGetTypeName( + smiGetElementNode(smiElement2)), + algGetTypeName( + smiGetElementNode(smiElement))) + == 0) { + + if (isBaseType(smiGetElementNode(smiElement)) + == 1){ + continue; + } + + graphInsertEdge(graph,tNode2, tNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_TYPES); + break; + } + else { + for (i = 0; suffix[i]; i++) { + if (strstr( + algGetTypeName( + smiGetElementNode(smiElement)), + suffix[i])) { + graphInsertEdge(graph,tNode2, + tNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_TYPES); + break; + } + } + + if (suffix[i]) break; + } + } + } + if (smiElement2) break; + } + if (tNode2) break; + } + + } + } +} + +/* + * algConnectLonelyNodes + * + * Connect the isolated nodes (scalars and tables) + * + * 1. Trying to link tables via the type of the index objects + * 2. Trying to link scalars to tables using the names + * 3. Trying to group scalars which have not been adjacent to any edge. + */ +void algConnectLonelyNodes() +{ + if (XPLAIN) { + printf("\n--- Fourth Phase - connecting isolated nodes\n\n"); + } + + algLinkLonelyTables(); + + algLinkObjectsByNames(); + + algGroupScalars(); + + if (XPLAIN) { + graphShowEdges(graph); + } +} + +/* + * Subfunction of algCheckForDependencies + * + * change UML-edges to dependecy if possible + */ +static void createDependencies() +{ + GraphEdge *tEdge; + int elemCount; + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + + if (tEdge->indexkind == SMI_INDEX_UNKNOWN) { + + if (tEdge->startNode->smiNode->nodekind == SMI_NODEKIND_TABLE && + tEdge->endNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + elemCount = algGetNumberOfRows(tEdge->startNode->smiNode); + if (elemCount >= 0) tEdge->connection = GRAPH_CON_DEPENDENCY; + + elemCount = algGetNumberOfRows(tEdge->endNode->smiNode); + if (elemCount >= 0) tEdge->connection = GRAPH_CON_DEPENDENCY; + } + } + } +} + +/* + * returns 1 if a new rerouting edge creates a loop and 0 otherwise + */ +static int isloop(GraphEdge *tEdge, SmiNode *depTable) +{ + GraphEdge *loopEdge; + + for (loopEdge = graphGetFirstEdgeByNode(graph, tEdge->endNode); + loopEdge; + loopEdge = graphGetNextEdgeByNode(graph,loopEdge,tEdge->endNode)) { + + if ((cmpSmiNodes(loopEdge->startNode->smiNode, depTable)) || + (cmpSmiNodes(loopEdge->endNode->smiNode, depTable) && + (loopEdge != tEdge))) { + return 1; + } + } + + return 0; +} + +/* + * subfunction of algCheckForDependency + */ +static void rerouteDependencyEdge(GraphEdge *tEdge) +{ + SmiNode *startTable, *endTable, *depTable; + SmiElement *smiElement; + + startTable = tEdge->startNode->smiNode; + endTable = tEdge->endNode->smiNode; + + for (smiElement = smiGetFirstElement( + smiGetFirstChildNode(endTable)); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + + /* look only at expanded indices (only present in endTable) */ + if (cmpSmiNodes(endTable, smiGetParentNode( + smiGetParentNode(smiGetElementNode(smiElement)))) == 1) { + depTable = algFindEqualType(startTable, + smiGetElementNode(smiElement)); + + /* depTable different to endTable? */ + if (depTable && !cmpSmiNodes(depTable, endTable)) { + + /* prevent loops */ + if (isloop(tEdge, depTable)) continue; + + algInsertEdge(depTable, + startTable, SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_REROUTE); + break; + } + } + } +} + +/* + * algCheckForDependency + * + * Tries to change connection types from association to dependency by + * looking at the types. + * + * 1. Supporting tables are revealed. Supporting tables consist only + * index objects and RowStatus-Objects and/or Storage-Type/Objects. + * 2. If a supporting table is found the connection type is changed to + * dependency. + * 3. Now the types of the index objects are checked (only in the end-table). + * If the same type is found in an other table the start-table is going to + * be connected with it (inserting a new edge). + * The end-table is still connected to the start-table. + */ +void algCheckForDependency() +{ + GraphEdge *tEdge; + + createDependencies(); + + for (tEdge = graph->edges; tEdge; tEdge = tEdge->nextPtr) { + + if (tEdge->connection == GRAPH_CON_DEPENDENCY) { + + rerouteDependencyEdge(tEdge); + } + } + + if (XPLAIN) { + printf("\n--- Fifth Phase - checking for dependency relationships\n\n"); + graphShowEdges(graph); + } +} + +/* + * + */ +static SmiNode *algFindTable(SmiNode *node) +{ + GraphNode *tNode; + SmiNode *smiNode; + SmiElement *smiElement; + char *toFind; + + if (!node) return NULL; + + toFind = xstrdup(node->name + + strpfxlen(node->name, smiGetParentNode(node)->name)); + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + if (cmpSmiNodes(node, tNode->smiNode)) continue; + smiNode = smiGetFirstChildNode(tNode->smiNode); + + for (smiElement = smiGetFirstElement(smiNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + if (strstr(smiNode->name, toFind)) { + xfree(toFind); + return smiGetParentNode(smiGetParentNode(smiNode)); + } + } + } + } + + xfree(toFind); + + return NULL; +} + +/* + * Creates edges based on column-objects pointing to other tables. + * Column-objects with a substring "Index" are examined. + */ +void algCheckForPointerRels() +{ + GraphNode *tNode; + SmiModule *module; + SmiNode *smiNode = NULL; + SmiNode *ppNode, *table; + int i; + + for (tNode = graph->nodes; tNode; tNode = tNode->nextPtr) { + if (tNode->smiNode->nodekind == SMI_NODEKIND_TABLE) { + + module = smiGetNodeModule(tNode->smiNode); + + for (smiNode = smiGetFirstNode(module, SMI_NODEKIND_COLUMN); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COLUMN)) { + ppNode = smiGetParentNode(smiNode); + ppNode = smiGetParentNode(ppNode); + + if (!algIsIndexElement(tNode->smiNode, smiNode) && + cmpSmiNodes(tNode->smiNode, ppNode)) { + + for (i = 0; pointer[i]; i++) { + if (strstr(smiNode->name, pointer[i])) { + /* printf("%s \n",smiNode->name); */ + table = algFindTable(smiNode); + if (table) { + algInsertEdge(table, tNode->smiNode, + SMI_INDEX_UNKNOWN, + GRAPH_ENHINDEX_POINTER); + } + } + } + } + } + } + } + + if (XPLAIN) { + printf("\n--- Sixth Phase - checking for pointer relationships\n\n"); + graphShowEdges(graph); + } +} diff --git a/tools/rea.h b/tools/rea.h new file mode 100644 index 0000000..e215711 --- /dev/null +++ b/tools/rea.h @@ -0,0 +1,226 @@ +/* + * rea.h -- + * + * Common header-file for dump-cm.c and dump-svg.c. + * + * Copyright (c) 2000 A. Mueller, Technical University of Braunschweig. + * Copyright (c) 2005 K. Sperner, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: rea.h 7382 2007-10-19 23:40:24Z schoenw $ + */ + +#ifndef _REA_H +#define _REA_H + +#include + +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "smidump.h" + + + +#define ABS(a) ((float)((a > 0.0) ? (a) : (-(a)))) + + + +typedef enum GraphCardinality { + GRAPH_CARD_UNKNOWN = 0, + GRAPH_CARD_ONE_TO_ONE = 1, + GRAPH_CARD_ONE_TO_MANY = 2, + GRAPH_CARD_ZERO_TO_ONE = 3, + GRAPH_CARD_ZERO_TO_MANY = 4, + GRAPH_CARD_ONE_TO_ZERO_OR_ONE = 5 +} GraphCardinality; + +typedef enum GraphConnection { + GRAPH_CON_UNKNOWN = 0, + GRAPH_CON_AGGREGATION = 1, + GRAPH_CON_DEPENDENCY = 2, + GRAPH_CON_ASSOCIATION = 3 +} GraphConnection; + +typedef enum GraphEnhIndex { + GRAPH_ENHINDEX_UNKNOWN = 0, + GRAPH_ENHINDEX_NOTIFICATION = 1, + GRAPH_ENHINDEX_TYPES = 2, + GRAPH_ENHINDEX_NAMES = 3, + GRAPH_ENHINDEX_INDEX = 4, + GRAPH_ENHINDEX_REROUTE = 5, + GRAPH_ENHINDEX_POINTER = 6 +} GraphEnhIndex; + +/* + * Definition used by the dia output driver. + */ + +#define DIA_PRINT_FLAG 0x01 + +typedef struct DiaNode { + int flags; /* flags for the dia xml output driver */ + float x,y; /* coordinates (left upper corner) */ + float xDisp,yDisp; /* displacement vector for springembedder */ + float w,h; /* width and height of the dia node */ + int relatedScalars; /* has related scalars -> print them */ + int indexObjects; /* has index objects -> print them */ +} DiaNode; + +typedef struct DiaEdge { + int flags; /* flags for the dia xml output driver */ + float startX, startY; /* Intersection of edge and startNode */ + float endX, endY; /* Intersection of edge and endNode */ +} DiaEdge; + +/* + * Generic structure for moduleInformation string-lists. + */ + +typedef struct StringListElem { + struct StringListElem *nextPtr; + SmiStatus status; + char *miElem; +} StringListElem; + +/* + * Generic structures for the internal graph representation. + */ + +typedef struct GraphComponent { + struct GraphComponent *nextPtr; + struct GraphNode *firstComponentNode; + float xMin; + float xMax; + float yMin; + float yMax; + float xOffset; + float yOffset; +} GraphComponent; + +typedef struct GraphNode { + struct GraphNode *nextPtr; + SmiNode *smiNode; + SmiModule *smiModule; + int group; /* group number of this graph node */ + int use; /* use node in the layout-algorithm */ + int degree; /* quantity of adjacent nodes */ + GraphComponent *component; /* component the node belongs to */ + struct GraphNode *nextComponentNode; + DiaNode dia; +} GraphNode; + +typedef struct GraphEdge { + struct GraphEdge *nextPtr; + GraphNode *startNode; + GraphNode *endNode; + SmiIndexkind indexkind; + GraphConnection connection; + GraphCardinality cardinality; + GraphEnhIndex enhancedindex; + int use; /* use edge in the layout-algorithm */ + DiaEdge dia; +} GraphEdge; + +typedef struct Graph { + GraphNode *nodes; + GraphEdge *edges; + GraphComponent *components; +} Graph; + + + +/* + * driver output control + */ +extern int CANVASHEIGHT; +extern int CANVASWIDTH; +extern int SHOW_DEPRECATED; +extern int SHOW_DEPR_OBSOLETE; +extern int STATIC_OUTPUT; +extern int XPLAIN; +extern int XPLAIN_DEBUG; +extern int SUPPRESS_DEPRECATED; +extern int PRINT_DETAILED_ATTR; +extern int IGNORE_IMPORTED_NODES; + + +/* + * global variables + */ +extern Graph *graph; + +/* + * help functions + */ +#ifndef max +#define max(a, b) ((a < b) ? b : a) +#endif +#ifndef min +#define min(a, b) ((a < b) ? a : b) +#endif + + + +/* ------ Misc. ----------------- */ + +extern int cmpSmiNodes(SmiNode *node1, SmiNode *node2); + + + +/* ------ Graph primitives ------ */ + +extern GraphNode *graphInsertNode(Graph *graph, SmiNode *smiNode); + +extern GraphComponent *graphInsertComponent(Graph *graph); + +extern void graphExit(Graph *graph); + +extern GraphEdge *graphGetFirstEdgeByNode(Graph *graph, GraphNode *node); + +extern GraphEdge *graphGetNextEdgeByNode(Graph *graph, + GraphEdge *edge, + GraphNode *node); + +extern void graphShowNodes(Graph *graph); + + + +/* ------ algorithm primitives ------ */ + +extern int algGetNumberOfGroups(); + +extern char *algGetTypeDescription(SmiNode *smiNode); + +extern char *algGetTypeName(SmiNode *smiNode); + +extern SmiModule *algGetTypeModule(SmiNode *smiNode); + +extern int isBaseType(SmiNode *node); + +extern int algIsIndexElement(SmiNode *table, SmiNode *node); + + + +/* -------------- main functions ------------------------------------------- */ + +extern void algLinkTables(); + +extern void algCheckLinksByName(); + +extern void algConnectLonelyNodes(); + +extern void algCheckForDependency(); + +extern void algCheckForPointerRels(); + +#endif + diff --git a/tools/shhopt.c b/tools/shhopt.c new file mode 100644 index 0000000..ea139ec --- /dev/null +++ b/tools/shhopt.c @@ -0,0 +1,432 @@ +/* $Id: shhopt.c 1418 2002-07-22 17:06:19Z schoenw $ */ +/*------------------------------------------------------------------------ + | FILE shhopt.c + | + | DESCRIPTION Functions for parsing command line arguments. Values + | of miscellaneous types may be stored in variables, + | or passed to functions as specified. + | + | REQUIREMENTS Some systems lack the ANSI C -function strtoul. If your + | system is one of those, you'll ned to write one yourself, + | or get the GNU liberty-library (from prep.ai.mit.edu). + | + | WRITTEN BY Sverre H. Huseby + +----------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "shhopt.h" + +/*-----------------------------------------------------------------------+ +| PRIVATE DATA | ++-----------------------------------------------------------------------*/ + +static void optFatalFunc(const char *, ...); +static void (*optFatal)(const char *format, ...) = optFatalFunc; + +/*-----------------------------------------------------------------------+ +| PRIVATE FUNCTIONS | ++-----------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------ + | NAME optFatalFunc + | + | FUNCTION Show given message and abort the program. + | + | INPUT format, ... + | Arguments used as with printf(). + | + | RETURNS Never returns. The program is aborted. + */ +void +optFatalFunc(const char *format, ...) +{ + va_list ap; + + fflush(stdout); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + exit(99); +} + +/*------------------------------------------------------------------------ + | NAME optStructCount + | + | FUNCTION Get number of options in a optStruct. + | + | INPUT opt array of possible options. + | + | RETURNS Number of options in the given array. + | + | DESCRIPTION Count elements in an optStruct-array. The strcture must + | be ended using an element of type OPT_END. + */ +static int +optStructCount(optStruct opt[]) +{ + int ret = 0; + + while (opt[ret].type != OPT_END) + ++ret; + return ret; +} + +/*------------------------------------------------------------------------ + | NAME optMatch + | + | FUNCTION Find a matching option. + | + | INPUT opt array of possible options. + | s string to match, without `-' or `--'. + | lng match long option, otherwise short. + | + | RETURNS Index to the option if found, -1 if not found. + | + | DESCRIPTION Short options are matched from the first character in + | the given string. + */ +static int +optMatch(optStruct opt[], const char *s, int lng) +{ + int nopt, q; + const char *p; + size_t matchlen = 0; + + nopt = optStructCount(opt); + if (lng) { + if ((p = strchr(s, '=')) != NULL) + matchlen = p - s; + else + matchlen = strlen(s); + } + for (q = 0; q < nopt; q++) { + if (lng) { + if (!opt[q].longName) + continue; + if (strncmp(s, opt[q].longName, matchlen) == 0) + return q; + } else { + if (!opt[q].shortName) + continue; + if (*s == opt[q].shortName) + return q; + } + } + return -1; +} + +/*------------------------------------------------------------------------ + | NAME optString + | + | FUNCTION Return a (static) string with the option name. + | + | INPUT opt the option to stringify. + | lng is it a long option? + | + | RETURNS Pointer to static string. + */ +static char * +optString(optStruct *opt, int lng) +{ + static char ret[31]; + + if (lng) { + strcpy(ret, "--"); + strncpy(ret + 2, opt->longName, 28); + } else { + ret[0] = '-'; + ret[1] = opt->shortName; + ret[2] = '\0'; + } + return ret; +} + +/*------------------------------------------------------------------------ + | NAME optNeedsArgument + | + | FUNCTION Check if an option requires an argument. + | + | INPUT opt the option to check. + | + | RETURNS Boolean value. + */ +static int +optNeedsArgument(optStruct *opt) +{ + return opt->type == OPT_STRING + || opt->type == OPT_INT + || opt->type == OPT_UINT + || opt->type == OPT_LONG + || opt->type == OPT_ULONG; +} + +/*------------------------------------------------------------------------ + | NAME argvRemove + | + | FUNCTION Remove an entry from an argv-array. + | + | INPUT argc pointer to number of options. + | argv array of option-/argument-strings. + | i index of option to remove. + | + | OUTPUT argc new argument count. + | argv array with given argument removed. + */ +static void +argvRemove(int *argc, char *argv[], int i) +{ + if (i >= *argc) + return; + while (i++ < *argc) + argv[i - 1] = argv[i]; + --*argc; +} + +/*------------------------------------------------------------------------ + | NAME optExecute + | + | FUNCTION Perform the action of an option. + | + | INPUT opt array of possible options. + | arg argument to option, if it applies. + | lng was the option given as a long option? + | + | RETURNS Nothing. Aborts in case of error. + */ +static void +optExecute(optStruct *opt, char *arg, int lng) +{ + switch (opt->type) { + case OPT_FLAG: + if (opt->flags & OPT_CALLFUNC) + ((void (*)(void)) opt->arg)(); + else + *((int *) opt->arg) = 1; + break; + + case OPT_STRING: + if (opt->flags & OPT_CALLFUNC) + ((void (*)(char *)) opt->arg)(arg); + else + *((char **) opt->arg) = arg; + break; + + case OPT_INT: + case OPT_LONG: { + long tmp; + char *e; + + tmp = strtol(arg, &e, 10); + if (*e) + optFatal("invalid number `%s'\n", arg); + if (errno == ERANGE + || (opt->type == OPT_INT && (tmp > INT_MAX || tmp < INT_MIN))) + optFatal("number `%s' to `%s' out of range\n", + arg, optString(opt, lng)); + if (opt->type == OPT_INT) { + if (opt->flags & OPT_CALLFUNC) + ((void (*)(int)) opt->arg)((int) tmp); + else + *((int *) opt->arg) = (int) tmp; + } else /* OPT_LONG */ { + if (opt->flags & OPT_CALLFUNC) + ((void (*)(long)) opt->arg)(tmp); + else + *((long *) opt->arg) = tmp; + } + break; + } + + case OPT_UINT: + case OPT_ULONG: { + unsigned long tmp; + char *e; + + tmp = strtoul(arg, &e, 10); + if (*e) + optFatal("invalid number `%s'\n", arg); + if (errno == ERANGE + || (opt->type == OPT_UINT && tmp > UINT_MAX)) + optFatal("number `%s' to `%s' out of range\n", + arg, optString(opt, lng)); + if (opt->type == OPT_UINT) { + if (opt->flags & OPT_CALLFUNC) + ((void (*)(unsigned)) opt->arg)((unsigned) tmp); + else + *((unsigned *) opt->arg) = (unsigned) tmp; + } else /* OPT_ULONG */ { + if (opt->flags & OPT_CALLFUNC) + ((void (*)(unsigned long)) opt->arg)(tmp); + else + *((unsigned long *) opt->arg) = tmp; + } + break; + } + + default: + break; + } +} + +/*-----------------------------------------------------------------------+ +| PUBLIC FUNCTIONS | ++-----------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------ + | NAME optSetFatalFunc + | + | FUNCTION Set function used to display error message and exit. + | + | SYNOPSIS #include "shhopt.h" + | void optSetFatalFunc(void (*f)(const char *, ...)); + | + | INPUT f function accepting printf()'like parameters, + | that _must_ abort the program. + */ +void +optSetFatalFunc(void (*f)(const char *, ...)) +{ + optFatal = f; +} + +/*------------------------------------------------------------------------ + | NAME optParseOptions + | + | FUNCTION Parse commandline options. + | + | SYNOPSIS #include "shhopt.h" + | void optParseOptions(int *argc, char *argv[], + | optStruct opt[], int allowNegNum); + | + | INPUT argc Pointer to number of options. + | argv Array of option-/argument-strings. + | opt Array of possible options. + | allowNegNum + | a negative number is not to be taken as + | an option. + | + | OUTPUT argc new argument count. + | argv array with arguments removed. + | + | RETURNS Nothing. Aborts in case of error. + | + | DESCRIPTION This function checks each option in the argv-array + | against strings in the opt-array, and `executes' any + | matching action. Any arguments to the options are + | extracted and stored in the variables or passed to + | functions pointed to by entries in opt. + | + | Options and arguments used are removed from the argv- + | array, and argc is decreased accordingly. + | + | Any error leads to program abortion. + */ +void +optParseOptions(int *argc, char *argv[], optStruct opt[], int allowNegNum) +{ + int ai, /* argv index. */ + optarg, /* argv index of option argument, or -1 if none. */ + mi, /* Match index in opt. */ + done; + char *arg, /* Pointer to argument to an option. */ + *o, /* pointer to an option character */ + *p; + + /* + * Loop through all arguments. + */ + for (ai = 0; ai < *argc; ) { + /* + * "--" indicates that the rest of the argv-array does not + * contain options. + */ + if (strcmp(argv[ai], "--") == 0) { + argvRemove(argc, argv, ai); + break; + } + + if (allowNegNum && argv[ai][0] == '-' && isdigit(argv[ai][1])) { + ++ai; + continue; + } else if (strncmp(argv[ai], "--", 2) == 0) { + /* long option */ + /* find matching option */ + if ((mi = optMatch(opt, argv[ai] + 2, 1)) < 0) + optFatal("unrecognized option `%s'\n", argv[ai]); + + /* possibly locate the argument to this option. */ + arg = NULL; + if ((p = strchr(argv[ai], '=')) != NULL) + arg = p + 1; + + /* does this option take an argument? */ + optarg = -1; + if (optNeedsArgument(&opt[mi])) { + /* option needs an argument. find it. */ + if (!arg) { + if ((optarg = ai + 1) == *argc) + optFatal("option `%s' requires an argument\n", + optString(&opt[mi], 1)); + arg = argv[optarg]; + } + } else { + if (arg) + optFatal("option `%s' doesn't allow an argument\n", + optString(&opt[mi], 1)); + } + /* perform the action of this option. */ + optExecute(&opt[mi], arg, 1); + /* remove option and any argument from the argv-array. */ + if (optarg >= 0) + argvRemove(argc, argv, ai); + argvRemove(argc, argv, ai); + } else if (*argv[ai] == '-') { + /* A dash by itself is not considered an option. */ + if (argv[ai][1] == '\0') { + ++ai; + continue; + } + /* Short option(s) following */ + o = argv[ai] + 1; + done = 0; + optarg = -1; + while (*o && !done) { + /* find matching option */ + if ((mi = optMatch(opt, o, 0)) < 0) + optFatal("unrecognized option `-%c'\n", *o); + + /* does this option take an argument? */ + optarg = -1; + arg = NULL; + if (optNeedsArgument(&opt[mi])) { + /* option needs an argument. find it. */ + arg = o + 1; + if (!*arg) { + if ((optarg = ai + 1) == *argc) + optFatal("option `%s' requires an argument\n", + optString(&opt[mi], 0)); + arg = argv[optarg]; + } + done = 1; + } + /* perform the action of this option. */ + optExecute(&opt[mi], arg, 0); + ++o; + } + /* remove option and any argument from the argv-array. */ + if (optarg >= 0) + argvRemove(argc, argv, ai); + argvRemove(argc, argv, ai); + } else { + /* a non-option argument */ + ++ai; + } + } +} diff --git a/tools/shhopt.h b/tools/shhopt.h new file mode 100644 index 0000000..3fe1cbe --- /dev/null +++ b/tools/shhopt.h @@ -0,0 +1,41 @@ +/* $Id: shhopt.h 8040 2008-04-14 09:20:35Z schoenw $ */ +#ifndef SHHOPT_H +#define SHHOPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* constants for recognized option types. */ +typedef enum { + OPT_END, /* nothing. used as ending element. */ + OPT_FLAG, /* no argument following. sets variable to 1. */ + OPT_STRING, /* string argument. */ + OPT_INT, /* signed integer argument. */ + OPT_UINT, /* unsigned integer argument. */ + OPT_LONG, /* signed long integer argument. */ + OPT_ULONG /* unsigned long integer argument. */ +} optArgType; + +/* flags modifying the default way options are handeled. */ +#define OPT_CALLFUNC 1 /* pass argument to a function. */ + +typedef struct { + char shortName; /* short option name. */ + char *longName; /* long option name, no including '--'. */ + optArgType type; /* option type. */ + void *arg; /* pointer to variable to fill with argument, + * or pointer to function if type == OPT_FUNC. */ + int flags; /* modifier flags. */ +} optStruct; + + +extern void optSetFatalFunc(void (*f)(const char *, ...)); +extern void optParseOptions(int *argc, char *argv[], + optStruct opt[], int allowNegNum); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tools/smicache.1 b/tools/smicache.1 new file mode 100644 index 0000000..568213e --- /dev/null +++ b/tools/smicache.1 @@ -0,0 +1,64 @@ +.\" +.\" $Id: smicache.1.in 1677 2004-08-10 11:10:27Z strauss $ +.\" +.TH smicache 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smicache \- caching method for use with libsmi +.SH SYNOPSIS +.B smicache +[ +.B "-Vh" +] [ +.BI "-d " dir +] [ +.BI "-p " prefix +] +[ +.I mib +] +.SH DESCRIPTION +The \fBsmicache\fP program can be used by libsmi to fetch MIB modules that +cannot be found in regular local MIB directories. +.SH OPTIONS +.TP +.B "-V" +Show the smicache version and exit. +.TP +.B "-h" +Show a help text and exit. +.TP +.BI "-d " dir +Write fetched module file(s) to directory \fIdir\fP. +.TP +.BI "-p " prefix +Use the URL prefix \fIprefix\fP for fetching modules. +.TP +.I mib +The MIB module to be fetched. +.PP +Note that \fBsmicache\fP is just a very simple script that builds on +the wget program to retrieve files from URLs. It does not handle +the file attributes of retrieved modules in any special way, so that +you have to care about permissions in multi-user environments. +.SH "EXAMPLE" +\fBSmicache\fP can be used by putting the following line into the +global configuration file: +.nf + + cache /usr/local/share/mibs/cache \\ + /usr/local/bin/smicache \\ + -d /usr/local/share/mibs/cache \\ + -p http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/ + +.fi +You might want to chmod 1777 /usr/local/share/mibs/cache. +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHOR" +(C) 2001-2004 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/tools/smicache.1.in b/tools/smicache.1.in new file mode 100644 index 0000000..568213e --- /dev/null +++ b/tools/smicache.1.in @@ -0,0 +1,64 @@ +.\" +.\" $Id: smicache.1.in 1677 2004-08-10 11:10:27Z strauss $ +.\" +.TH smicache 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smicache \- caching method for use with libsmi +.SH SYNOPSIS +.B smicache +[ +.B "-Vh" +] [ +.BI "-d " dir +] [ +.BI "-p " prefix +] +[ +.I mib +] +.SH DESCRIPTION +The \fBsmicache\fP program can be used by libsmi to fetch MIB modules that +cannot be found in regular local MIB directories. +.SH OPTIONS +.TP +.B "-V" +Show the smicache version and exit. +.TP +.B "-h" +Show a help text and exit. +.TP +.BI "-d " dir +Write fetched module file(s) to directory \fIdir\fP. +.TP +.BI "-p " prefix +Use the URL prefix \fIprefix\fP for fetching modules. +.TP +.I mib +The MIB module to be fetched. +.PP +Note that \fBsmicache\fP is just a very simple script that builds on +the wget program to retrieve files from URLs. It does not handle +the file attributes of retrieved modules in any special way, so that +you have to care about permissions in multi-user environments. +.SH "EXAMPLE" +\fBSmicache\fP can be used by putting the following line into the +global configuration file: +.nf + + cache /usr/local/share/mibs/cache \\ + /usr/local/bin/smicache \\ + -d /usr/local/share/mibs/cache \\ + -p http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/ + +.fi +You might want to chmod 1777 /usr/local/share/mibs/cache. +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHOR" +(C) 2001-2004 Frank Strauss, TU Braunschweig, Germany +.br diff --git a/tools/smicache.in b/tools/smicache.in new file mode 100644 index 0000000..fa83eb5 --- /dev/null +++ b/tools/smicache.in @@ -0,0 +1,80 @@ +#!@SH@ +# +# smicache -- +# +# A simple caching method, used by the config file `cache' directive. +# +# Copyright (c) 2001 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# $Id: smicache.in 8090 2008-04-18 12:56:29Z strauss $ +# +# NOTE, that this script relies on wget and getopts +# (shell builtin like in bash or standalone). +# +# NOTE, that smicache has just been an experiment. It is NOT suggested +# to use it in a production environment. + +WGET=@WGET@ +GETOPTS=getopts +VERSION=@VERSION@ + +prefix=http://www.ibr.cs.tu-bs.de/projects/libsmi/smicache/ +dir=/tmp + + + +do_version () { + echo "smicache $VERSION" +} + + + +do_usage () { + echo "Usage: smicache [-Vh] [-d dir] [-p prefix] mib" + echo "-V show version and license information" + echo "-h show usage information" + echo "-d dir use dir as the caching directory" + echo "-p prefix use prefix as the URL prefix for fetching modules" + echo "mib name of the module to be fetched" +} + + + +do_fetch () { + $WGET -q -O "$dir/$1" "$prefix/$1" +} + + + +while $GETOPTS Vhd:p: c ; do + case $c in + d) dir="$OPTARG" + ;; + p) prefix="$OPTARG" + ;; + h) do_usage + exit 0 + ;; + V) do_version + exit 0 + ;; + *) do_usage + exit 1 + ;; + esac +done + +shift `expr $OPTIND - 1` + + + +if [ $# -eq 1 ] ; then + do_fetch $1 +else + do_usage +fi + +exit 0 diff --git a/tools/smidiff.1 b/tools/smidiff.1 new file mode 100644 index 0000000..398ff99 --- /dev/null +++ b/tools/smidiff.1 @@ -0,0 +1,87 @@ +.\" +.\" $Id: smidiff.1.in 1677 2004-08-10 11:10:27Z strauss $ +.\" +.TH smidiff 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smidiff \- check differences between a pair of SMI or SPPI modules +.SH SYNOPSIS +.B smidiff +[ +.B "-Vhsm" +] [ +.BI "-c " file +] [ +.BI "-l " level +] [ +.BI "-i " error-pattern +] [ +.BI "-p " module +] +.I "oldmodule newmodule" +.SH DESCRIPTION +The \fBsmidiff\fP program is used to check differences between a pair +of SMI MIB modules or SPPI PIB modules. +E.g., it can be used to detect changes in updated MIB +modules that can cause interoperability problems with existing +implementations. SMIv1/v2 and SPPI style MIB/PIB modules are +supported. +.PP +Note that conformance statements are currently not checked. +.PP +Messages describing the differences are written to the standard output +channel while error and warning messages generated by the parser +are written to the standard error channel. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smidump version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-i \fIprefix\fB, --ignore=\fIprefix\fP +Ignore all errors that have a tag which matches \fIprefix\fP. +.TP +.I oldmodule +The original module. +.TP +.I newmodule +The updated module. +.PP +If a module argument represents a path name (identified by containing +at least one dot or slash character), this is assumed to be the exact +file to read. Otherwise, if a module is identified by its plain module +name, it is searched according to libsmi internal rules. See +\fBsmi_config(3)\fP for more details. +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHOR" +(C) 2001 T. Klie, TU Braunschweig, Germany +.br +(C) 2001 J. Schoenwaelder, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smidiff.1.in b/tools/smidiff.1.in new file mode 100644 index 0000000..398ff99 --- /dev/null +++ b/tools/smidiff.1.in @@ -0,0 +1,87 @@ +.\" +.\" $Id: smidiff.1.in 1677 2004-08-10 11:10:27Z strauss $ +.\" +.TH smidiff 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smidiff \- check differences between a pair of SMI or SPPI modules +.SH SYNOPSIS +.B smidiff +[ +.B "-Vhsm" +] [ +.BI "-c " file +] [ +.BI "-l " level +] [ +.BI "-i " error-pattern +] [ +.BI "-p " module +] +.I "oldmodule newmodule" +.SH DESCRIPTION +The \fBsmidiff\fP program is used to check differences between a pair +of SMI MIB modules or SPPI PIB modules. +E.g., it can be used to detect changes in updated MIB +modules that can cause interoperability problems with existing +implementations. SMIv1/v2 and SPPI style MIB/PIB modules are +supported. +.PP +Note that conformance statements are currently not checked. +.PP +Messages describing the differences are written to the standard output +channel while error and warning messages generated by the parser +are written to the standard error channel. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smidump version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-i \fIprefix\fB, --ignore=\fIprefix\fP +Ignore all errors that have a tag which matches \fIprefix\fP. +.TP +.I oldmodule +The original module. +.TP +.I newmodule +The updated module. +.PP +If a module argument represents a path name (identified by containing +at least one dot or slash character), this is assumed to be the exact +file to read. Otherwise, if a module is identified by its plain module +name, it is searched according to libsmi internal rules. See +\fBsmi_config(3)\fP for more details. +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHOR" +(C) 2001 T. Klie, TU Braunschweig, Germany +.br +(C) 2001 J. Schoenwaelder, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smidiff.c b/tools/smidiff.c new file mode 100644 index 0000000..4df9ca4 --- /dev/null +++ b/tools/smidiff.c @@ -0,0 +1,3211 @@ +/* + * smidiff.c -- + * + * Compute and check differences between MIB modules. + * + * Copyright (c) 2001 T. Klie, Technical University of Braunschweig. + * Copyright (c) 2001 J. Schoenwaelder, Technical University of Braunschweig. + * Copyright (c) 2001 F. Strauss, Technical University of Braunschweig. + * Copyright (c) 2006 J. Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smidiff.c 8090 2008-04-18 12:56:29Z strauss $ + */ + +/* + * TODO: + * + * - replacing an implicit type with a named type should cause a real + * error if the new type is formally not identical (Mike Heard) + */ + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" + + +static int errorLevel = 6; /* smidiff/libsmi error level (inclusive) */ +static int mFlag = 0; /* show the name for error messages */ +static int sFlag = 0; /* show the severity for error messages */ +static char *oldCompl = NULL; /* name of old compliance statement */ +static char *newCompl = NULL; /* name of new compliance statement */ + +/* the `:' separates the view identifier */ +static const char *oldTag = "smidiff:old"; +static const char *newTag = "smidiff:new"; + + +#define CODE_SHOW_PREVIOUS 0x01 +#define CODE_SHOW_PREVIOUS_IMPLICIT 0x02 + + +typedef struct Error { + int level; /* error level - roughly the same as smilint */ + int id; /* error id used in the error() invocation */ + char *tag; /* tag for error identification on cmd line */ + char *fmt; /* the complete error format string */ + char *description; /* description of the error message */ +} Error; + + +#define ERR_INTERNAL 0 +#define ERR_TYPE_REMOVED 1 +#define ERR_TYPE_ADDED 2 +#define ERR_NODE_REMOVED 3 +#define ERR_NODE_ADDED 4 +#define ERR_BASETYPE_CHANGED 5 +#define ERR_DECL_CHANGED 6 +#define ERR_LEGAL_STATUS_CHANGED 8 +#define ERR_PREVIOUS_DEFINITION 9 +#define ERR_STATUS_CHANGED 10 +#define ERR_DESCR_ADDED 11 +#define ERR_DESCR_REMOVED 12 +#define ERR_DESCR_CHANGED 13 +#define ERR_REF_ADDED 14 +#define ERR_REF_REMOVED 15 +#define ERR_REF_CHANGED 16 +#define ERR_FORMAT_ADDED 17 +#define ERR_FORMAT_REMOVED 18 +#define ERR_FORMAT_CHANGED 19 +#define ERR_UNITS_ADDED 20 +#define ERR_UNITS_REMOVED 21 +#define ERR_UNITS_CHANGED 22 +#define ERR_ACCESS_ADDED 23 +#define ERR_ACCESS_REMOVED 24 +#define ERR_ACCESS_CHANGED 25 +#define ERR_NAME_ADDED 26 +#define ERR_NAME_REMOVED 27 +#define ERR_NAME_CHANGED 28 +#define ERR_TO_IMPLICIT 29 +#define ERR_FROM_IMPLICIT 30 +#define ERR_RANGE_ADDED 31 +#define ERR_RANGE_REMOVED 32 +#define ERR_RANGE_CHANGED 33 +#define ERR_DEFVAL_ADDED 34 +#define ERR_DEFVAL_REMOVED 35 +#define ERR_DEFVAL_CHANGED 36 +#define ERR_ORGA_ADDED 37 +#define ERR_ORGA_REMOVED 38 +#define ERR_ORGA_CHANGED 39 +#define ERR_CONTACT_ADDED 40 +#define ERR_CONTACT_REMOVED 41 +#define ERR_CONTACT_CHANGED 42 +#define ERR_SMIVERSION_CHANGED 43 +#define ERR_REVISION_ADDED 44 +#define ERR_REVISION_REMOVED 45 +#define ERR_REVISION_CHANGED 46 +#define ERR_LENGTH_CHANGED 47 +#define ERR_LENGTH_OF_TYPE_CHANGED 48 +#define ERR_LENGTH_ADDED 49 +#define ERR_MEMBER_ADDED 50 +#define ERR_MEMBER_REMOVED 51 +#define ERR_MEMBER_CHANGED 52 +#define ERR_OBJECT_ADDED 53 +#define ERR_OBJECT_REMOVED 54 +#define ERR_OBJECT_CHANGED 55 +#define ERR_NAMED_NUMBER_ADDED 56 +#define ERR_NAMED_NUMBER_REMOVED 57 +#define ERR_NAMED_NUMBER_CHANGED 58 +#define ERR_NAMED_BIT_ADDED_OLD_BYTE 59 +#define ERR_NODEKIND_CHANGED 60 +#define ERR_INDEXKIND_CHANGED 61 +#define ERR_INDEX_CHANGED 62 +#define ERR_TYPE_IS_AND_WAS 63 +#define ERR_RANGE_OF_TYPE_CHANGED 64 +#define ERR_RANGE_OF_TYPE_ADDED 65 +#define ERR_RANGE_OF_TYPE_REMOVED 66 +#define ERR_TYPE_BASED_ON 67 +#define ERR_INDEX_AUGMENT_CHANGED 68 +#define ERR_NAMED_NUMBER_OF_TYPE_REMOVED 69 +#define ERR_NAMED_NUMBER_TO_TYPE_ADDED 70 +#define ERR_NAMED_NUMBER_OF_TYPE_CHANGED 71 +#define ERR_NAMED_BIT_OF_TYPE_ADDED_OLD_BYTE 72 +#define ERR_LENGTH_REMOVED 73 +#define ERR_PREVIOUS_IMPLICIT_DEFINITION 74 +#define ERR_STATUS_CHANGED_IMPLICIT 75 +#define ERR_LEGAL_STATUS_CHANGED_IMPLICIT 76 +#define ERR_LENGTH_OF_TYPE_ADDED 77 +#define ERR_LENGTH_OF_TYPE_REMOVED 78 +#define ERR_STATUS_ADDED 79 +#define ERR_STATUS_REMOVED 80 +#define ERR_MANDATORY_GROUP_ADDED 81 +#define ERR_MANDATORY_GROUP_REMOVED 82 +#define ERR_MANDATORY_EXT_GROUP_ADDED 83 +#define ERR_MANDATORY_EXT_GROUP_REMOVED 84 +#define ERR_OPTION_ADDED 85 +#define ERR_OPTION_REMOVED 86 +#define ERR_EXT_OPTION_ADDED 87 +#define ERR_EXT_OPTION_REMOVED 88 +#define ERR_REFINEMENT_ADDED 89 +#define ERR_REFINEMENT_REMOVED 90 +#define ERR_EXT_REFINEMENT_ADDED 91 +#define ERR_EXT_REFINEMENT_REMOVED 92 +#define ERR_MANDATORY_REMOVED 93 +#define ERR_MANDATORY_ADDED 94 +#define ERR_OPTIONAL_REMOVED 95 +#define ERR_OPTIONAL_ADDED 96 +#define ERR_MANDATORY_EXT_REMOVED 97 +#define ERR_MANDATORY_EXT_ADDED 98 +#define ERR_OPTIONAL_EXT_REMOVED 99 +#define ERR_OPTIONAL_EXT_ADDED 100 + +static Error errors[] = { + { 0, ERR_INTERNAL, "internal", + "internal error!!!", NULL }, + { 1, ERR_TYPE_REMOVED, "type-removed", + "type `%s' has been deleted", NULL }, + { 5, ERR_TYPE_ADDED, "type-added", + "type `%s' has been added", NULL }, + { 1, ERR_NODE_REMOVED, "node-removed", + "%s `%s' has been deleted", NULL }, + { 5, ERR_NODE_ADDED, "node-added", + "%s `%s' has been added", NULL }, + { 1, ERR_BASETYPE_CHANGED, "basetype-changed", + "base type of `%s' changed", NULL }, + { 5, ERR_DECL_CHANGED, "decl-changed", + "declaration changed for `%s'", NULL }, + { 5, ERR_LEGAL_STATUS_CHANGED, "status-change", + "legal status change from `%s' to `%s' for `%s'", NULL }, + { 6, ERR_PREVIOUS_DEFINITION, "previous-definition", + "previous definition of `%s'", NULL }, + { 2, ERR_STATUS_CHANGED, "status-change", + "status change from `%s' to `%s' for `%s'", NULL }, + { 5, ERR_DESCR_ADDED, "description-added", + "description added to `%s'", NULL }, + { 2, ERR_DESCR_REMOVED, "description-removed", + "description removed from `%s'", NULL }, + { 5, ERR_DESCR_CHANGED, "description-changed", + "description of %s `%s' changed", NULL }, + { 5, ERR_REF_ADDED, "ref-added", + "reference added to `%s'", NULL }, + { 3, ERR_REF_REMOVED, "ref-removed", + "reference removed from `%s'", NULL }, + { 5, ERR_REF_CHANGED, "ref-changed", + "reference of `%s' changed", NULL }, + { 5, ERR_FORMAT_ADDED, "format-added", + "format added to `%s'", NULL }, + { 3, ERR_FORMAT_REMOVED, "format-removed", + "format removed from `%s'", NULL }, + { 5, ERR_FORMAT_CHANGED, "format-changed", + "format of `%s' changed", NULL }, + { 5, ERR_UNITS_ADDED, "units-added", + "units added to `%s'", NULL }, + { 3, ERR_UNITS_REMOVED, "units-removed", + "units removed from `%s'", NULL }, + { 5, ERR_UNITS_CHANGED, "units-changed", + "units of `%s' changed", NULL }, + { 5, ERR_ACCESS_ADDED, "access-added", + "access added to `%s'", NULL }, + { 3, ERR_ACCESS_REMOVED, "access-removed", + "access removed from `%s'", NULL }, + { 5, ERR_ACCESS_CHANGED, "access-changed", + "access of `%s' changed from `%s' to `%s'", NULL }, + { 5, ERR_NAME_ADDED, "name-added", + "name added to `%s'", NULL }, + { 3, ERR_NAME_REMOVED, "name-removed", + "name removed from `%s'", NULL }, + { 5, ERR_NAME_CHANGED, "name-changed", + "name changed from `%s' to `%s'", NULL }, + { 3, ERR_TO_IMPLICIT, "to-implicit", + "implicit type for `%s' replaces type `%s'", NULL }, + { 5, ERR_FROM_IMPLICIT, "from-implicit", + "type `%s' replaces implicit type for `%s'", NULL }, + { 3, ERR_RANGE_ADDED, "range-added", + "range `%s' added to type used in `%s'", NULL }, + { 3, ERR_RANGE_REMOVED, "range-removed", + "range `%s' removed from type used in `%s'", NULL }, + { 3, ERR_RANGE_CHANGED, "range-changed", + "range of type used in `%s' changed from `%s' to `%s'", NULL }, + { 3, ERR_DEFVAL_ADDED, "defval-added", + "default value added to `%s'", NULL }, + { 3, ERR_DEFVAL_REMOVED, "defval-removed", + "default value removed from `%s'", NULL }, + { 3, ERR_DEFVAL_CHANGED, "defval-changed", + "default value of `%s' changed", NULL }, + { 5, ERR_ORGA_ADDED, "organization-added", + "organization added to `%s'", NULL }, + { 3, ERR_ORGA_REMOVED, "organization-removed", + "organization removed from `%s'", NULL }, + { 5, ERR_ORGA_CHANGED, "organization-changed", + "organization of `%s' changed", NULL }, + { 5, ERR_CONTACT_ADDED, "contact-added", + "contact added to `%s'", NULL }, + { 3, ERR_CONTACT_REMOVED, "contact-removed", + "contact removed from `%s'", NULL }, + { 5, ERR_CONTACT_CHANGED, "contact-changed", + "contact of `%s' changed", NULL }, + { 3, ERR_SMIVERSION_CHANGED, "smi-version-changed", + "SMI version changed", NULL }, + { 5, ERR_REVISION_ADDED, "revision-added", + "revision `%s' added", NULL }, + { 3, ERR_REVISION_REMOVED, "revision-removed", + "revision `%s' removed", NULL }, + { 5, ERR_REVISION_CHANGED, "revision-changed", + "revision `%s' changed", NULL }, + { 3, ERR_LENGTH_CHANGED, "range-changed", + "size of type used in `%s' changed from `%s' to `%s'", NULL }, + { 3, ERR_LENGTH_OF_TYPE_CHANGED, "range-changed", + "size of type `%s' changed from `%s' to `%s'", NULL }, + { 3, ERR_LENGTH_ADDED, "range-added", + "size `%s' added to type used in `%s'", NULL }, + { 2, ERR_MEMBER_ADDED, "member-added", + "member `%s' added to group `%s'", NULL }, + { 2, ERR_MEMBER_REMOVED, "member-removed", + "member `%s' removed from group `%s'", NULL }, + { 3, ERR_MEMBER_CHANGED, "member-changed", + "member `%s' changed in group `%s'", NULL }, + { 3, ERR_OBJECT_ADDED, "object-added", + "object `%s' added", NULL }, + { 2, ERR_OBJECT_REMOVED, "object-removed", + "object `%s' removed", NULL }, + { 3, ERR_OBJECT_CHANGED, "object-changed", + "object `%s' changed", NULL }, + { 5, ERR_NAMED_NUMBER_ADDED, "named-number-added", + "named number `%s' added to type used in `%s'", NULL }, + { 2, ERR_NAMED_NUMBER_REMOVED, "named-number-removed", + "named number `%s' removed from type used in `%s'", NULL }, + { 5, ERR_NAMED_NUMBER_CHANGED, "named-number-changed", + "named number `%s' changed to `%s' at type used in `%s'", NULL }, + { 3, ERR_NAMED_BIT_ADDED_OLD_BYTE, "named-bit-added-old-byte", + "named bit `%s' added without starting in a new byte in type used in `%s'", NULL }, + { 3, ERR_LENGTH_REMOVED, "range-removed", + "size `%s' removed from type used in `%s'", NULL }, + { 2, ERR_NODEKIND_CHANGED, "nodekind-changed", + "node kind of `%s' changed", NULL }, + { 2, ERR_INDEXKIND_CHANGED, "indexkind-changed", + "changed kind of index from `%s' to `%s' in node `%s'", NULL }, + { 2, ERR_INDEX_CHANGED, "index-changed", + "index of `%s' changed from %s to %s", NULL }, + { 5, ERR_TYPE_IS_AND_WAS, "type-is-and-was", + "type changed from %s to %s", NULL }, + { 3, ERR_RANGE_OF_TYPE_CHANGED, "range-changed", + "range of type `%s' changed from `%s' to `%s'", NULL }, + { 3, ERR_RANGE_OF_TYPE_ADDED, "range-added", + "range `%s' added to type `%s'", NULL }, + { 3, ERR_RANGE_OF_TYPE_REMOVED, "range-removed", + "range `%s' removed from type `%s'", NULL }, + { 6, ERR_TYPE_BASED_ON, "type-based-on", + "type `%s' based on `%s'", NULL }, + { 2, ERR_INDEX_AUGMENT_CHANGED, "index-changed", + "index of `%s' changed from augmenting `%s' to augmenting `%s'", NULL }, + { 2, ERR_NAMED_NUMBER_OF_TYPE_REMOVED, "named-number-removed", + "named number `%s' removed from type `%s'", NULL }, + { 5, ERR_NAMED_NUMBER_TO_TYPE_ADDED, "named-number-added", + "named number `%s' added to type `%s'", NULL }, + { 5, ERR_NAMED_NUMBER_OF_TYPE_CHANGED, "named-number-changed", + "named number `%s' changed to `%s' in type `%s'", NULL }, + { 3, ERR_NAMED_BIT_OF_TYPE_ADDED_OLD_BYTE, "named-bit-added-old-byte", + "named bit `%s' added without starting in a new byte in type `%s'", NULL }, + { 6, ERR_PREVIOUS_IMPLICIT_DEFINITION, "previous-definition", + "previous implicit definition", NULL }, + { 2, ERR_STATUS_CHANGED_IMPLICIT, "status-change", + "status change from `%s' to `%s' for implicit type", NULL }, + { 5, ERR_LEGAL_STATUS_CHANGED_IMPLICIT, "status-change", + "legal status change from `%s' to `%s' for implicit type", NULL }, + { 3, ERR_LENGTH_OF_TYPE_ADDED, "range-added", + "size `%s' added to type `%s'", NULL }, + { 3, ERR_LENGTH_OF_TYPE_REMOVED, "range-removed", + "size `%s' removed from type `%s'", NULL }, + { 5, ERR_STATUS_ADDED, "status-added", + "status added to `%s'", NULL }, + { 3, ERR_STATUS_REMOVED, "status-removed", + "status removed from `%s'", NULL }, + { 2, ERR_MANDATORY_GROUP_ADDED, "mandatory-added", + "mandatory group `%s' added to `%s'", NULL }, + { 2, ERR_MANDATORY_GROUP_REMOVED, "mandatory-removed", + "mandatory group `%s' removed from `%s'", NULL }, + { 2, ERR_MANDATORY_EXT_GROUP_ADDED, "mandatory-added", + "mandatory group `%s::%s' added to `%s'", NULL }, + { 2, ERR_MANDATORY_EXT_GROUP_REMOVED, "mandatory-removed", + "mandatory group `%s::%s' removed from `%s'", NULL }, + { 2, ERR_OPTION_ADDED, "option-added", + "optional group `%s' added to `%s'", NULL }, + { 2, ERR_OPTION_REMOVED, "option-removed", + "optional group `%s' removed from `%s'", NULL }, + { 2, ERR_EXT_OPTION_ADDED, "option-added", + "optional group `%s::%s' added to `%s'", NULL }, + { 2, ERR_EXT_OPTION_REMOVED, "option-removed", + "optional group `%s::%s' removed from `%s'", NULL }, + { 5, ERR_REFINEMENT_ADDED, "refinement-added", + "object refinement for `%s' added to `%s'", NULL }, + { 2, ERR_REFINEMENT_REMOVED, "refinement-removed", + "object refinement for `%s' removed from `%s'", NULL }, + { 5, ERR_EXT_REFINEMENT_ADDED, "refinement-added", + "object refinement for `%s::%s' added to `%s'", NULL }, + { 2, ERR_EXT_REFINEMENT_REMOVED, "refinement-removed", + "object refinement for `%s::%s' removed from `%s'", NULL }, + { 3, ERR_MANDATORY_REMOVED, "mandatory-removed", + "%s `%s' is mandatory under `%s' but not mandatory under `%s'", NULL }, + { 3, ERR_MANDATORY_ADDED, "mandatory-added", + "%s `%s' is not mandatory under `%s' but mandatory under `%s'", NULL }, + { 3, ERR_OPTIONAL_REMOVED, "optional-removed", + "%s `%s' is conditionally optional under `%s' but not under `%s'", NULL }, + { 3, ERR_OPTIONAL_ADDED, "optional-added", + "%s `%s' is not conditionally optional under `%s' but under `%s'", NULL }, + { 3, ERR_MANDATORY_EXT_REMOVED, "mandatory-removed", + "%s `%s::%s' is mandatory under `%s' but not mandatory under `%s'", NULL }, + { 3, ERR_MANDATORY_EXT_ADDED, "mandatory-added", + "%s `%s::%s' is not mandatory under `%s' but mandatory under `%s'", NULL }, + { 3, ERR_OPTIONAL_EXT_REMOVED, "optional-removed", + "%s `%s::%s' is conditionally optional under `%s' but not under `%s'", NULL }, + { 3, ERR_OPTIONAL_EXT_ADDED, "optional-added", + "%s `%s::%s' is not conditionally optional under `%s' but under `%s'", NULL }, + { 0, 0, NULL, NULL } +}; + + + +static char *smiStringDecl(SmiDecl macro) +{ + return + (macro == SMI_DECL_UNKNOWN) ? "unknown construct" : + (macro == SMI_DECL_IMPLICIT_TYPE) ? "implicit construct" : + (macro == SMI_DECL_TYPEASSIGNMENT) ? "type assignment" : + (macro == SMI_DECL_IMPL_SEQUENCEOF) ? "implicit sequence-of construct" : + (macro == SMI_DECL_VALUEASSIGNMENT) ? "value assignment" : + (macro == SMI_DECL_OBJECTTYPE) ? "object definition" : + (macro == SMI_DECL_OBJECTIDENTITY) ? "object identity definition" : + (macro == SMI_DECL_MODULEIDENTITY) ? "module identity definition" : + (macro == SMI_DECL_NOTIFICATIONTYPE) ? "notification definition" : + (macro == SMI_DECL_TRAPTYPE) ? "trap definition" : + (macro == SMI_DECL_OBJECTGROUP) ? "object group definition" : + (macro == SMI_DECL_NOTIFICATIONGROUP) ? "notification group definition" : + (macro == SMI_DECL_MODULECOMPLIANCE) ? "module compliance definition" : + (macro == SMI_DECL_AGENTCAPABILITIES) ? "agent capabilities definition" : + (macro == SMI_DECL_TEXTUALCONVENTION) ? "textual convention definition" : + (macro == SMI_DECL_MACRO) ? "macro definition" : + (macro == SMI_DECL_COMPL_GROUP) ? "optional group" : + (macro == SMI_DECL_COMPL_OBJECT) ? "object refinement" : + (macro == SMI_DECL_MODULE) ? "module" : + (macro == SMI_DECL_TYPEDEF) ? "typedef" : + (macro == SMI_DECL_NODE) ? "node" : + (macro == SMI_DECL_SCALAR) ? "scalar" : + (macro == SMI_DECL_TABLE) ? "table" : + (macro == SMI_DECL_ROW) ? "row" : + (macro == SMI_DECL_COLUMN) ? "column" : + (macro == SMI_DECL_NOTIFICATION) ? "notification" : + (macro == SMI_DECL_GROUP) ? "group" : + (macro == SMI_DECL_COMPLIANCE) ? "compliance" : + ""; +} + + + +static void +setErrorSeverity(char *pattern, int severity) +{ + int i; + + for (i = 0; errors[i].fmt; i++) { + if (strstr(errors[i].tag, pattern) == errors[i].tag) { + errors[i].level = severity; + } + } +} + + + +static void +printError(SmiModule *smiModule, int id, int line, va_list ap) +{ + int i; + + /* + * Search for the tag instead of just using the id as an index so + * that we do not run into trouble if the id is bogus. + */ + + for (i = 0; errors[i].fmt; i++) { + if (errors[i].id == id) break; + } + if (! errors[i].fmt) { + i = 0; /* assumes that 0 is the internal error */ + } + + if (errors[i].level <= errorLevel) { + fprintf(stdout, "%s", smiModule->path); + + if (line >= 0) { + fprintf(stdout, ":%d", line); + } + fprintf(stdout, " "); + if (sFlag) { + fprintf(stdout, "[%d] ", errors[i].level); + } + if (mFlag) { + fprintf(stdout, "{%s} ", errors[i].tag); + } + switch (errors[i].level) { + case 4: + case 5: + fprintf(stdout, "warning: "); + break; + case 6: + fprintf(stdout, "info: "); + break; + } + vfprintf(stdout, errors[i].fmt, ap); + fprintf(stdout, "\n"); + } +} + + + +static void +printErrorAtLine(SmiModule *smiModule, int id, int line, ...) +{ + va_list ap; + + va_start(ap, line); + printError(smiModule, id, line, ap); + va_end(ap); +} + + + +static char* +getStringTime(time_t t) +{ + static char s[27]; + struct tm *tm; + + tm = gmtime(&t); + sprintf(s, "%04d-%02d-%02d %02d:%02d", + tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min); + return s; +} + + + +static char* +getStringNodekind(SmiNodekind nodekind) +{ + return + (nodekind == SMI_NODEKIND_UNKNOWN) ? "unknown" : + (nodekind == SMI_NODEKIND_NODE) ? "node" : + (nodekind == SMI_NODEKIND_SCALAR) ? "scalar" : + (nodekind == SMI_NODEKIND_TABLE) ? "table" : + (nodekind == SMI_NODEKIND_ROW) ? "row" : + (nodekind == SMI_NODEKIND_COLUMN) ? "column" : + (nodekind == SMI_NODEKIND_NOTIFICATION) ? "notification" : + (nodekind == SMI_NODEKIND_GROUP) ? "group" : + (nodekind == SMI_NODEKIND_COMPLIANCE) ? "compliance" : + (nodekind == SMI_NODEKIND_CAPABILITIES) ? "capabilities" : + ""; +} + + + +static int +diffStrings(const char *s1, const char *s2) +{ + int i, j; + + for (i = 0, j = 0; s1[i] && s2[j]; i++, j++) { + while (s1[i] && isspace((int) s1[i])) i++; + while (s2[j] && isspace((int) s2[j])) j++; + if (! s1[i] || ! s2[j]) break; + if (s1[i] != s2[j]) { + return 1; + } + } + return (s1[i] != s2[j]); +} + + + +static int +checkName(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *oldName, char *newName) +{ + int code = 0; + + if (!oldName && newName) { + printErrorAtLine(newModule, ERR_NAME_ADDED, + newLine, newName); + } + + if (oldName && !newName) { + printErrorAtLine(oldModule, ERR_NAME_REMOVED, + oldLine, oldName); + } + + if (oldName && newName && strcmp(oldName, newName) != 0) { + printErrorAtLine(newModule, ERR_NAME_CHANGED, + newLine, oldName, newName); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkDecl(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiDecl oldDecl, SmiDecl newDecl) +{ + int code = 0; + + if (oldDecl != newDecl) { + printErrorAtLine(newModule, ERR_DECL_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + return code; +} + + + +static char* +getStringStatus(SmiStatus status) +{ + char *statStr; + + switch( status ) { + case SMI_STATUS_CURRENT: + statStr = "current"; + break; + case SMI_STATUS_DEPRECATED: + statStr = "deprecated"; + break; + case SMI_STATUS_OBSOLETE: + statStr = "obsolete"; + break; + case SMI_STATUS_MANDATORY: + statStr = "mandatory"; + break; + case SMI_STATUS_OPTIONAL: + statStr = "optional"; + break; + case SMI_STATUS_UNKNOWN: + default: + statStr = "unknown"; + break; + } + return statStr; +} + + + +static int +checkStatus(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiStatus oldStatus, SmiStatus newStatus) +{ + int code = 0; + + if (oldStatus == newStatus) { + return code; + } + + if (oldStatus == SMI_STATUS_UNKNOWN) { + printErrorAtLine(newModule, ERR_STATUS_ADDED, + newLine, name); + } else if (newStatus == SMI_STATUS_UNKNOWN) { + printErrorAtLine(newModule, ERR_STATUS_REMOVED, + newLine, name); + + } else if (((oldStatus == SMI_STATUS_CURRENT + && (newStatus == SMI_STATUS_DEPRECATED + || newStatus == SMI_STATUS_OBSOLETE))) + || ((oldStatus == SMI_STATUS_DEPRECATED + && newStatus == SMI_STATUS_OBSOLETE))) { + if (name) { + printErrorAtLine(newModule, ERR_LEGAL_STATUS_CHANGED, newLine, + getStringStatus(oldStatus), + getStringStatus(newStatus), + name); + code |= CODE_SHOW_PREVIOUS; + } else { + printErrorAtLine(newModule, ERR_LEGAL_STATUS_CHANGED_IMPLICIT, newLine, + getStringStatus(oldStatus), + getStringStatus(newStatus)); + code |= CODE_SHOW_PREVIOUS_IMPLICIT; + } + } else { + if (name) { + printErrorAtLine(newModule, ERR_STATUS_CHANGED, newLine, + getStringStatus(oldStatus), + getStringStatus(newStatus), + name); + code |= CODE_SHOW_PREVIOUS; + } else { + printErrorAtLine(newModule, ERR_STATUS_CHANGED_IMPLICIT, + newLine, + getStringStatus(oldStatus), + getStringStatus(newStatus)); + code |= CODE_SHOW_PREVIOUS_IMPLICIT; + } + } + + return code; +} + + + +static char* +getStringAccess( SmiAccess smiAccess ) +{ + switch( smiAccess ) { + case SMI_ACCESS_NOT_IMPLEMENTED: return "not-implemented"; + case SMI_ACCESS_NOT_ACCESSIBLE : return "not-accessible"; + case SMI_ACCESS_NOTIFY : return "notify"; + case SMI_ACCESS_READ_ONLY : return "read-only"; + case SMI_ACCESS_READ_WRITE : return "read-write"; + case SMI_ACCESS_UNKNOWN: + default: return "unknown"; + } +} + + + +static int +checkAccess(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiAccess oldAccess, SmiAccess newAccess) +{ + int code = 0; + + if (oldAccess == newAccess) { + return code; + } + + if (oldAccess == SMI_ACCESS_UNKNOWN) { + printErrorAtLine(newModule, ERR_ACCESS_ADDED, + newLine, name); + } else if (newAccess == SMI_ACCESS_UNKNOWN) { + printErrorAtLine(newModule, ERR_ACCESS_REMOVED, + newLine, name); + } else { + printErrorAtLine(newModule, ERR_ACCESS_CHANGED, + newLine, name, + getStringAccess( oldAccess ), + getStringAccess( newAccess )); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkDescription(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiDecl decl, char *oldDescr, char *newDescr) +{ + int code = 0; + + if (!oldDescr && newDescr) { + printErrorAtLine(newModule, ERR_DESCR_ADDED, + newLine, name); + } + + if (oldDescr && !newDescr) { + printErrorAtLine(newModule, ERR_DESCR_REMOVED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + if (oldDescr && newDescr && diffStrings(oldDescr, newDescr)) { + printErrorAtLine(newModule, ERR_DESCR_CHANGED, + newLine, smiStringDecl(decl), name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkReference(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldRef, char *newRef) +{ + int code = 0; + + if (!oldRef && newRef) { + printErrorAtLine(newModule, ERR_REF_ADDED, + newLine, name); + } + + if (oldRef && !newRef) { + printErrorAtLine(oldModule, ERR_REF_REMOVED, + oldLine, name); + } + + if (oldRef && newRef && diffStrings(oldRef, newRef) != 0) { + printErrorAtLine(newModule, ERR_REF_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkFormat(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldFormat, char *newFormat) +{ + int code = 0; + + if (!oldFormat && newFormat) { + printErrorAtLine(newModule, ERR_FORMAT_ADDED, + newLine, name); + } + + if (oldFormat && !newFormat) { + printErrorAtLine(oldModule, ERR_FORMAT_REMOVED, + oldLine, name); + } + + if (oldFormat && newFormat && strcmp(oldFormat, newFormat) != 0) { + printErrorAtLine(newModule, ERR_FORMAT_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkUnits(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldUnits, char *newUnits) +{ + int code = 0; + + if (!oldUnits && newUnits) { + printErrorAtLine(newModule, ERR_UNITS_ADDED, + newLine, name); + } + + if (oldUnits && !newUnits) { + printErrorAtLine(oldModule, ERR_UNITS_REMOVED, + oldLine, name); + } + + if (oldUnits && newUnits && strcmp(oldUnits, newUnits) != 0) { + printErrorAtLine(newModule, ERR_UNITS_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static SmiType* +findTypeWithRange(SmiType *smiType) +{ + SmiType *iterType; + + for (iterType = smiType; iterType; iterType = smiGetParentType(iterType)) { + if (smiGetFirstRange(iterType)) { + return iterType; + } + } + return NULL; +} + + +/* This function assumes that the compared values have the same basetype. + * If the basetype is different, no comparison is done + * and '0' will be returned. Same for SMI_BASETYPE_UNKNOWN. + */ +static int +cmpSmiValues( SmiValue a, SmiValue b ) +{ + unsigned int i; + int changed = 0; + + switch (a.basetype) { + case SMI_BASETYPE_INTEGER32: + case SMI_BASETYPE_ENUM : + changed = (a.value.integer32 != b.value.integer32); + break; + case SMI_BASETYPE_UNSIGNED32: + changed = (a.value.unsigned32 != b.value.unsigned32); + break; + case SMI_BASETYPE_INTEGER64: + changed = (a.value.integer64 != b.value.integer64); + break; + case SMI_BASETYPE_UNSIGNED64: + changed = (a.value.unsigned64 != b.value.unsigned64); + break; + case SMI_BASETYPE_FLOAT32: + changed = (a.value.float32 != b.value.float32); + break; + case SMI_BASETYPE_FLOAT64: + changed = (a.value.float64 != b.value.float64); + break; + case SMI_BASETYPE_FLOAT128: + changed = (a.value.float128 != b.value.float128); + break; + case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_BITS: + changed = (a.len != b.len) + || (memcmp(a.value.ptr, b.value.ptr, a.len) != 0); + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + changed = (a.len != b.len); + for (i = 0; !changed && i < a.len; i++) { + changed = (a.value.oid[i] - b.value.oid[i]); + } + break; + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_POINTER: + /* this should not occur */ + break; + } + + return changed; +} + +#if 0 +static char* +getTypeName(SmiType *smiType, SmiModule *smiModule) +{ + char* name; + SmiModule * tm; + + if( ! smiType ) { + return 0; + } + + if( smiType->name ) { + tm = smiGetTypeModule( smiType ); + if( smiModule != tm ) { + if( smiModule->name ) { + name = (char *)malloc( strlen( smiType->name ) + + strlen( tm->name ) + 5 ); + sprintf( name, "%s::%s", + tm->name, smiType->name ); + } + else { + name = strdup( smiType->name ); + } + } + else { + name = strdup( smiType->name ); + } + } + else { + name = NULL; + } + return name; +} + +static void +iterateTypeImports(char *typeName, + SmiType *smiType, SmiType *smiTwR, + int line, + SmiModule *smiModule) +{ + SmiType *iterType, *oldIterType; + char *iterTypeName, *oldIterTypeName = strdup( typeName ); + + iterType = smiType; + while( 1 ) { + iterType = smiGetParentType( iterType ); + iterTypeName = getTypeName( iterType, smiModule ); + if( (!iterType) || !iterTypeName ) { + return; + } + printErrorAtLine( smiGetTypeModule( smiType ), + ERR_TYPE_BASED_ON, + line, + oldIterTypeName, + iterTypeName ); + free( oldIterTypeName ); + oldIterTypeName = iterTypeName; + oldIterType = iterType; + } +} +#endif + +static char *getValueString(SmiValue *valuePtr, SmiType *typePtr) +{ + static char s[1024]; + char ss[9]; + int n; + unsigned int i; + SmiNamedNumber *nn; + SmiNode *nodePtr; + + s[0] = 0; + + switch (valuePtr->basetype) { + case SMI_BASETYPE_UNSIGNED32: + sprintf(s, "%lu", valuePtr->value.unsigned32); + break; + case SMI_BASETYPE_INTEGER32: + sprintf(s, "%ld", valuePtr->value.integer32); + break; + case SMI_BASETYPE_UNSIGNED64: + sprintf(s, UINT64_FORMAT, valuePtr->value.unsigned64); + break; + case SMI_BASETYPE_INTEGER64: + sprintf(s, INT64_FORMAT, valuePtr->value.integer64); + break; + case SMI_BASETYPE_FLOAT32: + case SMI_BASETYPE_FLOAT64: + case SMI_BASETYPE_FLOAT128: + break; + case SMI_BASETYPE_ENUM: + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == valuePtr->value.unsigned32) + break; + } + if (nn) { + sprintf(s, "%s", nn->name); + } else { + sprintf(s, "%ld", valuePtr->value.integer32); + } + break; + case SMI_BASETYPE_OCTETSTRING: + for (i = 0; i < valuePtr->len; i++) { + if (!isprint((int)valuePtr->value.ptr[i])) break; + } + if (i == valuePtr->len) { + sprintf(s, "\"%s\"", valuePtr->value.ptr); + } else { + sprintf(s, "'%*s'H", 2 * valuePtr->len, " "); + for (i=0; i < valuePtr->len; i++) { + sprintf(ss, "%02x", valuePtr->value.ptr[i]); + strncpy(&s[1+2*i], ss, 2); + } + } + break; + case SMI_BASETYPE_BITS: + + sprintf(s, "{"); + for (i = 0, n = 0; i < valuePtr->len * 8; i++) { + if (valuePtr->value.ptr[i/8] & (1 << (7-(i%8)))) { + for (nn = smiGetFirstNamedNumber(typePtr); nn; + nn = smiGetNextNamedNumber(nn)) { + if (nn->value.value.unsigned32 == i) + break; + } + if (nn) { + if (n) + sprintf(&s[strlen(s)], ", "); + n++; + sprintf(&s[strlen(s)], "%s", nn->name); + } + } + } + sprintf(&s[strlen(s)], "}"); + break; + case SMI_BASETYPE_UNKNOWN: + case SMI_BASETYPE_POINTER: + break; + case SMI_BASETYPE_OBJECTIDENTIFIER: + nodePtr = smiGetNodeByOID(valuePtr->len, valuePtr->value.oid); + if (nodePtr) { + sprintf(s, "%s", nodePtr->name); + } else { + strcpy(s, "{"); + for (i=0; i < valuePtr->len; i++) { + if (i) strcat(s, " "); + sprintf(&s[strlen(s)], "%u", valuePtr->value.oid[i]); + } + strcat(s, "}"); + } + break; + } + + return s; +} + +static char* +getStringSubrange(SmiRange *range, SmiType *smiType) +{ + char *minStr, *maxStr, *str; + minStr = strdup( getValueString(&range->minValue, smiType) ); + maxStr = strdup( getValueString(&range->maxValue, smiType) ); + if (memcmp(&range->minValue, &range->maxValue, + sizeof(SmiValue))) { + str = malloc( strlen( minStr ) + strlen( maxStr ) + 3 ); + if( !str ) { + return NULL; + } + sprintf(str, "%s..%s", minStr, maxStr); + } else { + str = strdup( minStr ); + } + + return str; +} + + +static char* +getStringRange(SmiType *smiType) +{ + SmiRange *range; + int i; + char *str, *subRange; + + str = NULL; + for(i = 0, range = smiGetFirstRange(smiType); + range; i++, range = smiGetNextRange(range)) { + + if (i) { + str = realloc( str, strlen( str ) +2 ); + if( str ) { + sprintf(str, "%s|", str); + } + + } + else { + str = strdup("("); + } + + subRange = getStringSubrange( range, smiType ); + if( !subRange ) { + return NULL; + } + str = realloc( str, strlen( str ) + strlen( subRange ) + 1 ); + if( !str ) { + return NULL; + } + sprintf( str, "%s%s", str, subRange ); + + } + str = realloc( str, strlen( str ) + 2 ); + if( str ) { + sprintf(str, "%s)", str); + } + return str; +} + +static void +printRangeChangeError( SmiType *oldTwR, SmiType *newTwR, + SmiModule *newModule, char *name ) +{ + char *strOldRange, *strNewRange; + int error, errorOT; + if( newTwR->basetype == SMI_BASETYPE_OCTETSTRING ) { + error = ERR_LENGTH_CHANGED; + errorOT = ERR_LENGTH_OF_TYPE_CHANGED; + } + else { + error = ERR_RANGE_CHANGED; + errorOT = ERR_RANGE_OF_TYPE_CHANGED; + } + strOldRange = getStringRange( oldTwR ); + strNewRange = getStringRange( newTwR ); + if( name ) { + printErrorAtLine(newModule, + error, + smiGetTypeLine( newTwR ), + name, strOldRange, strNewRange ); + } + else { + printErrorAtLine(newModule, + errorOT, + smiGetTypeLine( newTwR ), + oldTwR->name, strOldRange, strNewRange ); + } + free( strOldRange ); + free( strNewRange ); +} + +static void +checkRanges(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, + SmiType *oldType, SmiType *newType) +{ + SmiType *oldTwR, *newTwR; /* parent types with ranges */ + + oldTwR = findTypeWithRange(oldType); + newTwR = findTypeWithRange(newType); + + if (!oldTwR && newTwR) { + char *strRange; + int error, errorOT; + + strRange = getStringRange( newTwR ); + if( newTwR->basetype == SMI_BASETYPE_OCTETSTRING ) { + error = ERR_LENGTH_ADDED; + errorOT = ERR_LENGTH_OF_TYPE_ADDED; + } + else { + error = ERR_RANGE_ADDED; + errorOT = ERR_RANGE_OF_TYPE_ADDED; + } + if( name ) { + printErrorAtLine(newModule, error, + newLine, strRange, name); + } + else { + printErrorAtLine( newModule, errorOT, + newLine, strRange, newTwR->name ); + } + + free( strRange ); + return; + } + + if (oldTwR && !newTwR) { + char *strRange; + int error, errorOT; + + strRange = getStringRange( oldTwR ); + if( oldTwR->basetype == SMI_BASETYPE_OCTETSTRING ) { + error = ERR_LENGTH_REMOVED; + errorOT = ERR_LENGTH_OF_TYPE_REMOVED; + } + else { + error = ERR_RANGE_REMOVED; + errorOT = ERR_RANGE_OF_TYPE_REMOVED; + } + if( name ) { + printErrorAtLine( newModule, error, + newLine, strRange, name); + } + else { + printErrorAtLine( newModule, errorOT, + newLine, strRange, oldTwR->name ); + } + free( strRange ); + + if( oldTwR == oldType ) { + + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + oldLine, name); + } + else { + SmiModule *modTwR; + int line; + + modTwR = smiGetTypeModule( oldTwR ); + line = smiGetTypeLine( oldTwR ); + + printErrorAtLine( modTwR, ERR_PREVIOUS_DEFINITION, + line, name ); + + } + return; + } + + if (oldTwR && newTwR) { + + SmiRange *oldRange, *newRange; + oldRange = smiGetFirstRange(oldTwR); + newRange = smiGetFirstRange(newTwR); + + while( oldRange || newRange ) { + + if( oldRange && newRange ) { + + if(cmpSmiValues(oldRange->minValue, newRange->minValue) || + cmpSmiValues(oldRange->maxValue, newRange->maxValue)) { + printRangeChangeError( oldTwR, newTwR, newModule, name ); + return; + } + } + + else if (oldRange){ + printRangeChangeError( oldTwR, newTwR, newModule, name ); + return; + } + + else if( newRange ) { + printRangeChangeError( oldTwR, newTwR, newModule, name ); + return; + } + + oldRange = smiGetNextRange( oldRange ); + newRange = smiGetNextRange( newRange ); + } + } +} + + + +static void +checkDefVal(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, + SmiValue oldVal, SmiValue newVal) +{ + if ((oldVal.basetype != SMI_BASETYPE_UNKNOWN) && + (newVal.basetype == SMI_BASETYPE_UNKNOWN)) { + printErrorAtLine(newModule, ERR_DEFVAL_REMOVED, newLine, name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, oldLine, name); + return; + } + + if ((oldVal.basetype == SMI_BASETYPE_UNKNOWN) && + (newVal.basetype != SMI_BASETYPE_UNKNOWN)) { + printErrorAtLine(newModule, ERR_DEFVAL_ADDED, newLine, name); + return; + } + +#if 0 /* changed base type is reported, anyway. */ + if (oldVal.basetype != newVal.basetype) { + printErrorAtLine(newModule, ERR_DEFVAL_CHANGED, newLine, name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, oldLine, name); + return; + } +#endif + + if (cmpSmiValues(oldVal, newVal)) { + printErrorAtLine(newModule, ERR_DEFVAL_CHANGED, newLine,name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, oldLine, name); + } +} + + + +static void +checkNamedNumbers(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, SmiNode *smiNode, + SmiType *oldType, SmiType *newType) +{ + SmiNamedNumber *oldNN, *newNN; + + oldNN = smiGetFirstNamedNumber( oldType ); + newNN = smiGetFirstNamedNumber( newType ); + + while( oldNN || newNN ) { + if( oldNN && !newNN ) { + if( smiNode ) { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_REMOVED, newLine, + oldNN->name, smiNode->name); + } + else { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_OF_TYPE_REMOVED, + newLine, oldNN->name, name); + } + oldNN = smiGetNextNamedNumber( oldNN ); + } + else if( !oldNN && newNN ) { + /* check if new byte has been started (bits only) */ + if( newType->basetype == SMI_BASETYPE_BITS ) { + SmiNamedNumber *veryOldNN = NULL, *iterNN; + + /* find largest old named number */ + for( iterNN = smiGetFirstNamedNumber( oldType ); + iterNN; iterNN = smiGetNextNamedNumber( iterNN ) ) { + veryOldNN = iterNN; + } + + if( veryOldNN ) { + /* we assume that we have bits, and the named numbers + of bits are stored in NN->value.value.unsigned32 */ + if( newNN->value.value.unsigned32 / 8 <= + veryOldNN->value.value.unsigned32 / 8 ) { + if( smiNode ) { + printErrorAtLine( newModule, + ERR_NAMED_BIT_ADDED_OLD_BYTE, + newLine, newNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_BIT_OF_TYPE_ADDED_OLD_BYTE, + newLine, newNN->name, name ); + } + } + else { + if( smiNode ){ + printErrorAtLine(newModule, ERR_NAMED_NUMBER_ADDED, + newLine, newNN->name, + smiNode->name); + } + else { + printErrorAtLine(newModule, + ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name); + } + } + } + else { + if( smiNode ) { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_ADDED, + newLine, newNN->name, smiNode->name); + } + else { + printErrorAtLine(newModule, + ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name); + } + } + } + else { + if( smiNode ) { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_ADDED, + newLine, newNN->name, smiNode->name); + } + else { + printErrorAtLine(newModule, ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name); + } + } + newNN = smiGetNextNamedNumber( newNN ); + } + else if( oldNN && newNN ) { + switch( oldType->basetype ) { + case SMI_BASETYPE_BITS: + /* we assume that we have bits, and the named numbers + of bits are stored in NN->value.value.unsigned32 */ + if( oldNN->value.value.unsigned32 < + newNN->value.value.unsigned32 ) { + if( smiNode ) { + printErrorAtLine( newModule, ERR_NAMED_NUMBER_REMOVED, + newLine, + oldNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_OF_TYPE_REMOVED, + newLine, + oldNN->name, name ); + } + oldNN = smiGetNextNamedNumber( oldNN ); + } + else if( oldNN->value.value.unsigned32 > + newNN->value.value.unsigned32 ) { + if( smiNode ) { + printErrorAtLine( newModule, ERR_NAMED_NUMBER_ADDED, + newLine, newNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name ); + } + newNN = smiGetNextNamedNumber( newNN ); + } + else { + if( strcmp( oldNN->name, newNN->name ) ) { + if( smiNode ) { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_CHANGED, + newLine, + oldNN->name, newNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_OF_TYPE_CHANGED, + newLine, + oldNN->name, newNN->name, name ); + } + } + oldNN = smiGetNextNamedNumber( oldNN ); + newNN = smiGetNextNamedNumber( newNN ); + } + break; + case SMI_BASETYPE_ENUM: + /* we assume that we have an enumeration, and the named numbers + of an enumeration are stored in NN->value.value.integer32 */ + if( oldNN->value.value.integer32 < + newNN->value.value.integer32 ) { + if( smiNode ) { + printErrorAtLine( newModule, ERR_NAMED_NUMBER_REMOVED, + newLine,oldNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_OF_TYPE_REMOVED, + newLine, oldNN->name, name ); + } + oldNN = smiGetNextNamedNumber( oldNN ); + } + else if( oldNN->value.value.integer32 > + newNN->value.value.integer32 ) { + if( smiNode ) { + printErrorAtLine( newModule, ERR_NAMED_NUMBER_ADDED, + newLine ,newNN->name, + smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_TO_TYPE_ADDED, + newLine, newNN->name, name ); + } + newNN = smiGetNextNamedNumber( newNN ); + } + else { + if( strcmp( oldNN->name, newNN->name ) ) { + if( smiNode ) { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_CHANGED, + newLine, oldNN->name, + newNN->name, smiNode->name ); + } + else { + printErrorAtLine( newModule, + ERR_NAMED_NUMBER_OF_TYPE_CHANGED, + newLine, oldNN->name, + newNN->name, name ); + } + } + oldNN = smiGetNextNamedNumber( oldNN ); + newNN = smiGetNextNamedNumber( newNN ); + } + break; + default: + break; + } + } + } +} + + +static void +checkTypeCompatibility(SmiModule *oldModule, SmiNode *oldNode, + SmiType *oldType, + SmiModule *newModule, int newLine, + SmiType *newType) +{ + int oldLine; + char *oldName; + + if ((!oldType) && (!newType)) return; + + if (!oldType) { + if (newType->name) { + printErrorAtLine(newModule, ERR_TYPE_ADDED, + smiGetTypeLine(newType)); + } + return; + } + + if (!newType) { + if (oldType->name) { + printErrorAtLine(oldModule, ERR_TYPE_REMOVED, + smiGetTypeLine(oldType)); + } + return; + } + + if (oldType->basetype != newType->basetype) { + if( newType->name ) { + printErrorAtLine(newModule, ERR_BASETYPE_CHANGED, + smiGetTypeLine(newType), newType->name); + } + else { + printErrorAtLine(newModule, ERR_BASETYPE_CHANGED, + smiGetTypeLine(newType), "implicit type"); + } + if( oldType->name ) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetTypeLine(oldType), oldType->name); + } + else { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetTypeLine(oldType), "implicit type" ); + } + } + + oldLine = oldNode ? smiGetNodeLine( oldNode ) : smiGetTypeLine( oldType ); + checkNamedNumbers(oldModule, + oldLine, + newModule, + newLine > 0 ? newLine : smiGetTypeLine( newType ), + oldType->name, + oldNode, + oldType, + newType); + + oldName = oldNode ? oldNode->name : NULL; + checkRanges(oldModule, + oldLine, + newModule, + newLine > 0 ? newLine : smiGetTypeLine( newType ), + oldName, + oldType, + newType); +} + + +static void +checkNodeTypeCompatibility(SmiModule *oldModule, SmiNode *oldNode, + SmiModule *newModule, SmiNode *newNode) +{ + SmiType *oldType, *newType; + + const int oldLine = smiGetNodeLine(oldNode); + const int newLine = smiGetNodeLine(newNode); + + oldType = smiGetNodeType(oldNode); + newType = smiGetNodeType(newNode); + + if ((!oldType) && (!newType)) return; + + if (oldType && newType && oldType->basetype != newType->basetype) { + printErrorAtLine(newModule, ERR_BASETYPE_CHANGED, + newLine, newNode->name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + oldLine, oldNode->name); + return; + } + + checkNamedNumbers(oldModule, + oldLine, + newModule, + newLine > 0 ? newLine : smiGetTypeLine(newType), + oldType->name, + oldNode, + oldType, + newType); + checkRanges(oldModule, + oldLine, + newModule, + newLine > 0 ? newLine : smiGetTypeLine(newType), + oldNode->name, + oldType, + newType); +} + + +static void +checkTypes(SmiModule *oldModule, SmiNode *oldNode, SmiType *oldType, + SmiModule *newModule, SmiNode *newNode, SmiType *newType) +{ + int code = 0; + + code |= checkName(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + oldType->name, newType->name); + + checkTypeCompatibility(oldModule, oldNode, oldType, + newModule, + newNode ? smiGetNodeLine(newNode) : smiGetTypeLine(newType), + newType); + + checkDefVal(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + oldType->name, + oldType->value, newType->value); + + code |= checkDecl(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, + oldType->decl, newType->decl); + + if (newType->name) { + code |= checkStatus(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, oldType->status, newType->status); + } + + code |= checkFormat(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, + oldType->format, newType->format); + + code |= checkUnits(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, + oldType->units, newType->units); + + code |= checkDescription(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, oldType->decl, + oldType->description, newType->description); + + code |= checkReference(oldModule, smiGetTypeLine(oldType), + newModule, smiGetTypeLine(newType), + newType->name, + oldType->reference, newType->reference); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetTypeLine(oldType), oldType->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetTypeLine(oldType)); + } +} + + + +static void +diffTypes(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiType *oldType, *newType; + + /* + * First check whether the old type definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for (oldType = smiGetFirstType(oldModule); + oldType; + oldType = smiGetNextType(oldType)) { + + smiInit(newTag); + newType = smiGetType(newModule, oldType->name); + if (newType) { + checkTypes(oldModule, NULL, oldType, + newModule, NULL, newType); + } else { + printErrorAtLine(oldModule, ERR_TYPE_REMOVED, + smiGetTypeLine(oldType), oldType->name); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newType = smiGetFirstType(newModule); + newType; + newType = smiGetNextType(newType)) { + + smiInit(oldTag); + oldType = smiGetType(oldModule, newType->name); + if (! oldType) { + printErrorAtLine(newModule, ERR_TYPE_ADDED, + smiGetTypeLine(newType), newType->name); + } + smiInit(newTag); + } +} + + + +static int +checkNodekind(SmiModule *oldModule, SmiNode *oldNode, + SmiModule *newModule, SmiNode *newNode) +{ + int code = 0; + + if (oldNode->nodekind != newNode->nodekind) { + printErrorAtLine(newModule, ERR_NODEKIND_CHANGED, + smiGetNodeLine(newNode), newNode->name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static char* +getStringIndexkind( SmiIndexkind indexkind ) +{ + switch( indexkind ) { + case SMI_INDEX_INDEX : return "index"; + case SMI_INDEX_AUGMENT: return "augment"; + case SMI_INDEX_REORDER: return "reorder"; + case SMI_INDEX_SPARSE : return "sparse"; + case SMI_INDEX_EXPAND : return "expand"; + case SMI_INDEX_UNKNOWN: + default: return "unknown"; + } +} + +static char* +getStringIndexList( SmiNode *smiNode ) +{ + SmiNode *indexNode; + SmiElement *smiElement; + char *strIdxLst; + + smiElement = smiGetFirstElement( smiNode ); + indexNode = smiGetElementNode( smiElement ); + strIdxLst = (char *)malloc( strlen( indexNode->name ) + 3); + if( strIdxLst ) { + sprintf( strIdxLst, "`%s'", indexNode->name ); + } + smiElement = smiGetNextElement( smiElement ); + while ( smiElement ) { + indexNode = smiGetElementNode( smiElement ); + strIdxLst = (char *)realloc( strIdxLst, + strlen( strIdxLst ) + + strlen( indexNode->name ) + 4 ); + sprintf( strIdxLst, "%s, `%s'", strIdxLst, indexNode->name ); + smiElement = smiGetNextElement( smiElement ); + } + return strIdxLst; +} + +static void +checkIndex(SmiModule *oldModule, SmiNode *oldNode, + SmiModule *newModule, SmiNode *newNode) +{ + if (newNode->indexkind == SMI_INDEX_UNKNOWN + && oldNode->indexkind == SMI_INDEX_UNKNOWN) { + return; + } + + if( newNode->indexkind != oldNode->indexkind) { + printf( "%s\n", newModule->name ); + printErrorAtLine( newModule, ERR_INDEXKIND_CHANGED, + smiGetNodeLine( oldNode ), + getStringIndexkind( oldNode->indexkind ), + getStringIndexkind( newNode->indexkind ), + newNode->name ); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( newNode ), oldNode->name ); + + } + + switch (newNode->indexkind) { + SmiElement *oldElement, *newElement; + SmiNode *oldRelNode, *newRelNode; + int i; + + case SMI_INDEX_INDEX: + /* compare OIDs of all index elements */ + oldElement = smiGetFirstElement( oldNode ); + newElement = smiGetFirstElement( newNode ); + while( oldElement && newElement ) { + SmiNode *oldIndexNode, *newIndexNode; + + oldIndexNode = smiGetElementNode( oldElement ); + newIndexNode = smiGetElementNode( newElement ); + + if( oldIndexNode->oidlen != newIndexNode->oidlen ) { + char *oldIdxLst, *newIdxLst; + oldIdxLst = getStringIndexList( oldNode ); + newIdxLst = getStringIndexList( newNode ); + printErrorAtLine( newModule, ERR_INDEX_CHANGED, + smiGetNodeLine( newNode ), oldNode->name, + oldIdxLst, newIdxLst); + free( oldIdxLst ); + free( newIdxLst ); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( oldNode ), oldNode->name ); + return; + } + + for( i = 0; i < oldIndexNode->oidlen; i++ ) { + if( oldIndexNode->oid[i] != newIndexNode->oid[i] ) { + char *oldIdxLst, *newIdxLst; + oldIdxLst = getStringIndexList( oldNode ); + newIdxLst = getStringIndexList( newNode ); + printErrorAtLine( newModule, ERR_INDEX_CHANGED, + smiGetNodeLine( newNode ), + oldNode->name, + oldIdxLst, newIdxLst); + free( oldIdxLst ); + free( newIdxLst ); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( oldNode ), + oldNode->name ); + return; + } + } + oldElement = smiGetNextElement( oldElement ); + newElement = smiGetNextElement( newElement ); + } + break; + + case SMI_INDEX_AUGMENT: + /* compare OIDs of related nodes */ + oldRelNode = smiGetRelatedNode( oldNode ); + newRelNode = smiGetRelatedNode( newNode ); + + if( !oldRelNode || !newRelNode ) { + /* should not occur */ + return; + } + if( oldRelNode->oidlen != newRelNode->oidlen ) { + printErrorAtLine( newModule, ERR_INDEX_AUGMENT_CHANGED, + smiGetNodeLine( newNode ), oldNode->name, + oldRelNode->name, newRelNode->name); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( oldNode ), oldNode->name ); + return; + } + for( i = 0; i < oldRelNode->oidlen; i++ ) { + if( oldRelNode->oid[i] != newRelNode->oid[i] ) { + printErrorAtLine( newModule, ERR_INDEX_AUGMENT_CHANGED, + smiGetNodeLine( newNode ), + oldNode->name, + oldRelNode->name, newRelNode->name); + printErrorAtLine( oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine( oldNode ), oldNode->name ); + } + } + break; + + case SMI_INDEX_UNKNOWN: + return; + + case SMI_INDEX_REORDER: + case SMI_INDEX_SPARSE: + case SMI_INDEX_EXPAND: + /* xxx do things for SMI-NG */ + break; + } +} + + +static void +checkObject(SmiModule *oldModule, SmiNode *oldNode, + SmiModule *newModule, SmiNode *newNode) +{ + int code = 0; + SmiType *oldType, *newType; + + const int oldLine = smiGetNodeLine(oldNode); + const int newLine = smiGetNodeLine(newNode); + + oldType = smiGetNodeType(oldNode); + newType = smiGetNodeType(newNode); + + code |= checkName(oldModule, oldLine, newModule, newLine, + oldNode->name, newNode->name); + + if (oldType && newType) { + if (oldType->name && !newType->name) { + printErrorAtLine(newModule, ERR_TO_IMPLICIT, + smiGetNodeLine(newNode), + newNode->name, oldType->name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } else if (!oldType->name && newType->name) { + printErrorAtLine(newModule, ERR_FROM_IMPLICIT, + smiGetNodeLine(newNode), + newType->name, oldNode->name); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + } + + checkNodeTypeCompatibility(oldModule, oldNode, + newModule, newNode); + + code |= checkDecl(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->decl, newNode->decl); + + code |= checkStatus(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->status, newNode->status); + + code |= checkAccess(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->access, newNode->access); + + code |= checkNodekind(oldModule, oldNode, newModule, newNode); + + checkIndex(oldModule, oldNode, newModule, newNode); + + + checkDefVal(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->value, newNode->value); + + code |= checkFormat(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->format, newNode->format); + + code |= checkUnits(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->units, newNode->units); + + code |= checkDescription(oldModule, oldLine, newModule, newLine, + newNode->name, oldNode->decl, + oldNode->description, newNode->description); + + code |= checkReference(oldModule, oldLine, newModule, newLine, + newNode->name, + oldNode->reference, newNode->reference); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetNodeLine(oldNode)); + } +} + + + +static void +diffObjects(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldNode, *newNode; + SmiNodekind nodekinds; + + nodekinds = SMI_NODEKIND_NODE | SMI_NODEKIND_TABLE | + SMI_NODEKIND_ROW | SMI_NODEKIND_COLUMN | SMI_NODEKIND_SCALAR; + + /* + * First check whether the old node definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for(oldNode = smiGetFirstNode(oldModule, nodekinds); + oldNode; + oldNode = smiGetNextNode(oldNode, nodekinds)) { + + smiInit(newTag); + newNode = smiGetNodeByOID(oldNode->oidlen, oldNode->oid); + if (newNode + && newNode->oidlen == oldNode->oidlen + && smiGetNodeModule(newNode) == newModule) { + checkObject(oldModule, oldNode, newModule, newNode); + } else { + switch (oldNode->nodekind) { + case SMI_NODEKIND_NODE: + case SMI_NODEKIND_TABLE: + case SMI_NODEKIND_ROW: + case SMI_NODEKIND_COLUMN: + case SMI_NODEKIND_SCALAR: + printErrorAtLine(oldModule, ERR_NODE_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name); + } + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newNode = smiGetFirstNode(newModule, nodekinds); + newNode; + newNode = smiGetNextNode(newNode, nodekinds)) { + + smiInit(oldTag); + oldNode = smiGetNodeByOID(newNode->oidlen, newNode->oid); + if (! oldNode + || newNode->oidlen != oldNode->oidlen + || smiGetNodeModule(oldNode) != oldModule) { + printErrorAtLine(newModule, ERR_NODE_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name); + } + smiInit(newTag); + } +} + + + +static int +checkObjects(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + SmiElement *oldElem, *newElem; + SmiNode *oldElemNode, *newElemNode; + int code = 0; + + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! newElem) { + printErrorAtLine(oldModule, ERR_OBJECT_REMOVED, + smiGetNodeLine(oldNode), oldNode->name); + code |= CODE_SHOW_PREVIOUS; + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! oldElem) { + printErrorAtLine(newModule, ERR_OBJECT_ADDED, + smiGetNodeLine(newNode), newNode->name); + } + smiInit(newTag); + } + + return code; +} + + + +static void +checkNotification(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code = 0; + + code |= checkDecl(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, newNode->decl); + + code |= checkStatus(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->status, newNode->status); + + code |= checkObjects(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + + code |= checkDescription(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, + oldNode->description, newNode->description); + + code |= checkReference(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, + oldNode->reference, newNode->reference); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetNodeLine(oldNode)); + } +} + + + +static void +diffNotifications(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldNode, *newNode; + + /* + * First check whether the old node definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for(oldNode = smiGetFirstNode(oldModule, SMI_NODEKIND_NOTIFICATION); + oldNode; + oldNode = smiGetNextNode(oldNode, SMI_NODEKIND_NOTIFICATION)) { + + smiInit(newTag); + newNode = smiGetNodeByOID(oldNode->oidlen, oldNode->oid); + if (newNode + && newNode->oidlen == oldNode->oidlen + && smiGetNodeModule(newNode) == newModule) { + checkNotification(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + } else { + printErrorAtLine(oldModule, ERR_NODE_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newNode = smiGetFirstNode(newModule, SMI_NODEKIND_NOTIFICATION); + newNode; + newNode = smiGetNextNode(newNode, SMI_NODEKIND_NOTIFICATION)) { + + smiInit(oldTag); + oldNode = smiGetNodeByOID(newNode->oidlen, newNode->oid); + if (! oldNode + || newNode->oidlen != oldNode->oidlen + || smiGetNodeModule(oldNode) != oldModule) { + printErrorAtLine(newModule, ERR_NODE_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name); + } + smiInit(newTag); + } +} + + + +static int +checkOrganization(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldOrga, char *newOrga) +{ + int code = 0; + + if (! oldOrga && newOrga) { + printErrorAtLine(newModule, ERR_ORGA_ADDED, + newLine, name); + } + + if (oldOrga && !newOrga) { + printErrorAtLine(oldModule, ERR_ORGA_REMOVED, + oldLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + if (oldOrga && newOrga && diffStrings(oldOrga, newOrga)) { + printErrorAtLine(newModule, ERR_ORGA_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static int +checkContact(SmiModule *oldModule, int oldLine, + SmiModule *newModule, int newLine, + char *name, char *oldContact, char *newContact) +{ + int code = 0; + + if (! oldContact && newContact) { + printErrorAtLine(newModule, ERR_CONTACT_ADDED, + newLine, name); + } + + if (oldContact && !newContact) { + printErrorAtLine(oldModule, ERR_CONTACT_REMOVED, + oldLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + if (oldContact && newContact && diffStrings(oldContact, newContact)) { + printErrorAtLine(newModule, ERR_CONTACT_CHANGED, + newLine, name); + code |= CODE_SHOW_PREVIOUS; + } + + return code; +} + + + +static void +diffModules(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldIdentityNode, *newIdentityNode; + SmiRevision *oldRev, *newRev; + int oldLine = -1, newLine = -1; + int code = 0; + + if (oldModule->language != newModule->language) { + printErrorAtLine(newModule, ERR_SMIVERSION_CHANGED, -1); + } + + oldIdentityNode = smiGetModuleIdentityNode(oldModule); + if (oldIdentityNode) { + oldLine = smiGetNodeLine(oldIdentityNode); + } + newIdentityNode = smiGetModuleIdentityNode(newModule); + if (newIdentityNode) { + newLine = smiGetNodeLine(newIdentityNode); + } + + code |= checkOrganization(oldModule, oldLine, + newModule, newLine, + newModule->name, + oldModule->organization, newModule->organization); + + code |= checkContact(oldModule, oldLine, newModule, newLine, + newModule->name, + oldModule->contactinfo, newModule->contactinfo); + + code |= checkDescription(oldModule, oldLine, + newModule, newLine, + newModule->name, SMI_DECL_MODULEIDENTITY, + oldModule->description, newModule->description); + + code |= checkReference(oldModule, oldLine, newModule, newLine, newModule->name, + oldModule->reference, newModule->reference); + + /* + * First check whether the old revisions still exist and + * whether there are any updates. + */ + + smiInit(oldTag); + for (oldRev = smiGetFirstRevision(oldModule); + oldRev; oldRev = smiGetNextRevision(oldRev)) { + smiInit(newTag); + for (newRev = smiGetFirstRevision(newModule); + newRev; newRev = smiGetNextRevision(newRev)) { + if (oldRev->date == newRev->date) { + break; + } + } + if (newRev) { + if ((diffStrings(oldRev->description, newRev->description)) && + diffStrings( + "[Revision added by libsmi due to a LAST-UPDATED clause.]", + oldRev->description)) { + printErrorAtLine(newModule, ERR_REVISION_CHANGED, + smiGetRevisionLine(newRev), + getStringTime(newRev->date)); + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetRevisionLine(oldRev), + getStringTime(oldRev->date)); + } + } else { + printErrorAtLine(oldModule, ERR_REVISION_REMOVED, + smiGetRevisionLine(oldRev), + getStringTime(oldRev->date)); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new revisions. + */ + + smiInit(newTag); + for (newRev = smiGetFirstRevision(newModule); + newRev; newRev = smiGetNextRevision(newRev)) { + smiInit(oldTag); + for (oldRev = smiGetFirstRevision(oldModule); + oldRev; oldRev = smiGetNextRevision(oldRev)) { + if (oldRev->date == newRev->date) { + break; + } + } + if (!oldRev) { + printErrorAtLine(newModule, ERR_REVISION_ADDED, + smiGetRevisionLine(newRev), + getStringTime(newRev->date)); + } + smiInit(newTag); + } + + if (code & CODE_SHOW_PREVIOUS && oldLine >= 0) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + oldLine, oldModule->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + oldLine); + } +} + + + +static void +checkMember(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + SmiElement *oldElem, *newElem; + SmiNode *oldElemNode, *newElemNode; + + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! newElem) { + printErrorAtLine(oldModule, ERR_MEMBER_REMOVED, + smiGetNodeLine(oldNode), + oldElemNode->name, oldNode->name); + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! oldElem) { + printErrorAtLine(newModule, ERR_MEMBER_ADDED, + smiGetNodeLine(newNode), + newElemNode->name, newNode->name); + } + smiInit(newTag); + } +} + + + +static void +checkGroup(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code = 0; + + code = checkName(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + oldNode->name, newNode->name); + + code |= checkDecl(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, newNode->decl); + + code |= checkStatus(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->status, newNode->status); + + code |= checkDescription(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, + oldNode->description, newNode->description); + + code |= checkReference(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, + oldNode->reference, newNode->reference); + + checkMember(oldModule, oldTag, newModule, newTag, oldNode, newNode); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetNodeLine(oldNode)); + } +} + + + +static void +diffGroups(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldNode, *newNode; + + /* + * First check whether the old node definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for(oldNode = smiGetFirstNode(oldModule, SMI_NODEKIND_GROUP); + oldNode; + oldNode = smiGetNextNode(oldNode, SMI_NODEKIND_GROUP)) { + smiInit(newTag); + newNode = smiGetNodeByOID(oldNode->oidlen, oldNode->oid); + if (newNode + && newNode->oidlen == oldNode->oidlen + && smiGetNodeModule(newNode) == newModule) { + checkGroup(oldModule, oldTag, newModule, newTag, oldNode, newNode); + } else { + printErrorAtLine(oldModule, ERR_NODE_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newNode = smiGetFirstNode(newModule, SMI_NODEKIND_GROUP); + newNode; + newNode = smiGetNextNode(newNode, SMI_NODEKIND_GROUP)) { + + smiInit(oldTag); + oldNode = smiGetNodeByOID(newNode->oidlen, newNode->oid); + if (! oldNode + || newNode->oidlen != oldNode->oidlen + || smiGetNodeModule(oldNode) != oldModule) { + printErrorAtLine(newModule, ERR_NODE_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name); + } + smiInit(newTag); + } +} + + + +static void +checkComplMandatory(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + SmiElement *oldElem, *newElem; + SmiNode *oldElemNode, *newElemNode; + + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! newElem) { + if (strcmp(smiGetNodeModule(oldElemNode)->name, oldModule->name)) { + printErrorAtLine(oldModule, ERR_MANDATORY_EXT_GROUP_REMOVED, + smiGetNodeLine(oldNode), + oldModule->name, oldElemNode->name, + oldNode->name); + } else { + printErrorAtLine(oldModule, ERR_MANDATORY_GROUP_REMOVED, + smiGetNodeLine(oldNode), + oldElemNode->name, + oldNode->name); + } + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newElem = smiGetFirstElement(newNode); + newElem; newElem = smiGetNextElement(newElem)) { + newElemNode = smiGetElementNode(newElem); + smiInit(oldTag); + for (oldElem = smiGetFirstElement(oldNode); + oldElem; oldElem = smiGetNextElement(oldElem)) { + oldElemNode = smiGetElementNode(oldElem); + if (strcmp(oldElemNode->name, newElemNode->name) == 0) { + break; + } + } + if (! oldElem) { + if (strcmp(smiGetNodeModule(newElemNode)->name, newModule->name)) { + printErrorAtLine(newModule, ERR_MANDATORY_EXT_GROUP_ADDED, + smiGetNodeLine(newNode), + newModule->name, newElemNode->name, + newNode->name); + } else { + printErrorAtLine(newModule, ERR_MANDATORY_GROUP_ADDED, + smiGetNodeLine(newNode), + newElemNode->name, newNode->name); + } + } + smiInit(newTag); + } +} + + + +static void +checkComplOptions(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code; + SmiOption *oldOption, *newOption; + SmiNode *oldOptionNode, *newOptionNode; + + smiInit(oldTag); + for (oldOption = smiGetFirstOption(oldNode); + oldOption; oldOption = smiGetNextOption(oldOption)) { + oldOptionNode = smiGetOptionNode(oldOption); + smiInit(newTag); + for (newOption = smiGetFirstOption(newNode); + newOption; newOption = smiGetNextOption(newOption)) { + newOptionNode = smiGetOptionNode(newOption); + if (strcmp(oldOptionNode->name, newOptionNode->name) == 0) { + break; + } + } + if (! newOption) { + if (strcmp(smiGetNodeModule(oldOptionNode)->name, + oldModule->name)) { + printErrorAtLine(oldModule, ERR_EXT_OPTION_REMOVED, + smiGetOptionLine(oldOption), + oldModule->name, oldOptionNode->name, + oldNode->name); + } else { + printErrorAtLine(oldModule, ERR_OPTION_REMOVED, + smiGetOptionLine(oldOption), + oldOptionNode->name, + oldNode->name); + } + } else { + code = 0; + code |= checkDescription(oldModule, smiGetOptionLine(oldOption), + newModule, smiGetOptionLine(newOption), + newOptionNode->name, SMI_DECL_COMPL_GROUP, + oldOption->description, + newOption->description); + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetOptionLine(oldOption), + oldOptionNode->name); + } + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newOption = smiGetFirstOption(newNode); + newOption; newOption = smiGetNextOption(newOption)) { + newOptionNode = smiGetOptionNode(newOption); + smiInit(oldTag); + for (oldOption = smiGetFirstOption(oldNode); + oldOption; oldOption = smiGetNextOption(oldOption)) { + oldOptionNode = smiGetOptionNode(oldOption); + if (strcmp(oldOptionNode->name, newOptionNode->name) == 0) { + break; + } + } + if (! oldOption) { + if (strcmp(smiGetNodeModule(newOptionNode)->name, + newModule->name)) { + printErrorAtLine(newModule, ERR_EXT_OPTION_ADDED, + smiGetOptionLine(newOption), + newModule->name, newOptionNode->name, + newNode->name); + } else { + printErrorAtLine(newModule, ERR_OPTION_ADDED, + smiGetOptionLine(newOption), + newOptionNode->name, + newNode->name); + } + } + smiInit(newTag); + } +} + + + +static void +checkComplRefinements(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code; + SmiRefinement *oldRefinement, *newRefinement; + SmiNode *oldRefinementNode, *newRefinementNode; + + smiInit(oldTag); + for (oldRefinement = smiGetFirstRefinement(oldNode); + oldRefinement; oldRefinement = smiGetNextRefinement(oldRefinement)) { + oldRefinementNode = smiGetRefinementNode(oldRefinement); + smiInit(newTag); + for (newRefinement = smiGetFirstRefinement(newNode); + newRefinement; newRefinement = smiGetNextRefinement(newRefinement)) { + newRefinementNode = smiGetRefinementNode(newRefinement); + if (strcmp(oldRefinementNode->name, newRefinementNode->name) == 0) { + break; + } + } + if (! newRefinement) { + if (strcmp(smiGetNodeModule(oldRefinementNode)->name, + oldModule->name)) { + printErrorAtLine(oldModule, ERR_EXT_REFINEMENT_REMOVED, + smiGetRefinementLine(oldRefinement), + oldModule->name, oldRefinementNode->name, + oldNode->name); + } else { + printErrorAtLine(oldModule, ERR_REFINEMENT_REMOVED, + smiGetRefinementLine(oldRefinement), + oldRefinementNode->name, + oldNode->name); + } + } else { + code = 0; + code |= checkDescription(oldModule, smiGetRefinementLine(oldRefinement), + newModule, smiGetRefinementLine(newRefinement), + newRefinementNode->name, + SMI_DECL_COMPL_OBJECT, + oldRefinement->description, + newRefinement->description); + + code |= checkAccess(oldModule, + smiGetRefinementLine(oldRefinement), + newModule, + smiGetRefinementLine(newRefinement), + newRefinementNode->name, + oldRefinement->access, newRefinement->access); + + checkTypeCompatibility(oldModule, oldRefinementNode, + smiGetRefinementType(oldRefinement), + newModule, smiGetRefinementLine(newRefinement), + smiGetRefinementType(newRefinement)); + + checkTypeCompatibility(oldModule, oldRefinementNode, + smiGetRefinementWriteType(oldRefinement), + newModule, smiGetRefinementLine(newRefinement), + smiGetRefinementWriteType(newRefinement)); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetRefinementLine(oldRefinement), + oldRefinementNode->name); + } + } + smiInit(oldTag); + } + + smiInit(newTag); + for (newRefinement = smiGetFirstRefinement(newNode); + newRefinement; newRefinement = smiGetNextRefinement(newRefinement)) { + newRefinementNode = smiGetRefinementNode(newRefinement); + smiInit(oldTag); + for (oldRefinement = smiGetFirstRefinement(oldNode); + oldRefinement; oldRefinement = smiGetNextRefinement(oldRefinement)) { + oldRefinementNode = smiGetRefinementNode(oldRefinement); + if (strcmp(oldRefinementNode->name, newRefinementNode->name) == 0) { + break; + } + } + if (! oldRefinement) { + if (strcmp(smiGetNodeModule(newRefinementNode)->name, + newModule->name)) { + printErrorAtLine(newModule, ERR_EXT_REFINEMENT_ADDED, + smiGetRefinementLine(newRefinement), + newModule->name, newRefinementNode->name, + newNode->name); + } else { + printErrorAtLine(newModule, ERR_REFINEMENT_ADDED, + smiGetRefinementLine(newRefinement), + newRefinementNode->name, + newNode->name); + } + } + smiInit(newTag); + } +} + + + +static void +checkCompliance(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldNode, SmiNode *newNode) +{ + int code = 0; + + code = checkName(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + oldNode->name, newNode->name); + + code |= checkDecl(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, newNode->decl); + + code |= checkStatus(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->status, newNode->status); + + code |= checkDescription(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, oldNode->decl, + oldNode->description, newNode->description); + + code |= checkReference(oldModule, smiGetNodeLine(oldNode), + newModule, smiGetNodeLine(newNode), + newNode->name, + oldNode->reference, newNode->reference); + + if (code & CODE_SHOW_PREVIOUS) { + printErrorAtLine(oldModule, ERR_PREVIOUS_DEFINITION, + smiGetNodeLine(oldNode), oldNode->name); + } + if (code & CODE_SHOW_PREVIOUS_IMPLICIT) { + printErrorAtLine(oldModule, ERR_PREVIOUS_IMPLICIT_DEFINITION, + smiGetNodeLine(oldNode)); + } + + checkComplMandatory(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + + checkComplOptions(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + + checkComplRefinements(oldModule, oldTag, newModule, newTag, + oldNode, newNode); +} + + + +static void +diffCompliances(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag) +{ + SmiNode *oldNode, *newNode; + + /* + * First check whether the old node definitions still exist and + * whether the updates (if any) are consistent with the SMI rules. + */ + + smiInit(oldTag); + for(oldNode = smiGetFirstNode(oldModule, SMI_NODEKIND_COMPLIANCE); + oldNode; + oldNode = smiGetNextNode(oldNode, SMI_NODEKIND_COMPLIANCE)) { + smiInit(newTag); + newNode = smiGetNodeByOID(oldNode->oidlen, oldNode->oid); + if (newNode + && newNode->oidlen == oldNode->oidlen + && smiGetNodeModule(newNode) == newModule) { + checkCompliance(oldModule, oldTag, newModule, newTag, + oldNode, newNode); + } else { + printErrorAtLine(oldModule, ERR_NODE_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name); + } + smiInit(oldTag); + } + + /* + * Let's see if there are any new definitions. + */ + + smiInit(newTag); + for (newNode = smiGetFirstNode(newModule, SMI_NODEKIND_COMPLIANCE); + newNode; + newNode = smiGetNextNode(newNode, SMI_NODEKIND_COMPLIANCE)) { + + smiInit(oldTag); + oldNode = smiGetNodeByOID(newNode->oidlen, newNode->oid); + if (! oldNode + || newNode->oidlen != oldNode->oidlen + || smiGetNodeModule(oldNode) != oldModule) { + printErrorAtLine(newModule, ERR_NODE_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name); + } + smiInit(newTag); + } +} + + + +static SmiNode* +findGroupElement(SmiNode *groupNode, const char *name) +{ + SmiElement *smiElement = NULL; + SmiNode *smiNode = NULL; + + for (smiElement = smiGetFirstElement(groupNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + if (strcmp(smiNode->name, name) == 0) { + return smiNode; + } + } + return NULL; +} + + +static SmiNode* +findGroupsElement(SmiNode *groupNode, const char *name) +{ + SmiElement *smiElement = NULL; + SmiNode *smiNode = NULL, *foundNode; + + for (smiElement = smiGetFirstElement(groupNode); + smiElement; + smiElement = smiGetNextElement(smiElement)) { + smiNode = smiGetElementNode(smiElement); + foundNode = findGroupElement(smiNode, name); + if (foundNode) { + return foundNode; + } + } + return NULL; +} + + + +static void +diffOldNewComplianceMandatory(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldComplNode, SmiNode *newComplNode) +{ + SmiElement *oldGroupElement, *newGroupElement, *oldElement, *newElement; + SmiNode *oldGroupNode, *newGroupNode, *oldNode, *newNode; + + smiInit(oldTag); + for (oldGroupElement = smiGetFirstElement(oldComplNode); + oldGroupElement; + oldGroupElement = smiGetNextElement(oldGroupElement)) { + oldGroupNode = smiGetElementNode(oldGroupElement); + for (oldElement = smiGetFirstElement(oldGroupNode); + oldElement; + oldElement = smiGetNextElement(oldElement)) { + oldNode = smiGetElementNode(oldElement); + smiInit(newTag); + newNode = findGroupsElement(newComplNode, oldNode->name); + if (! newNode) { + if (strcmp(smiGetNodeModule(oldNode)->name, oldModule->name)) { + printErrorAtLine(oldModule, ERR_MANDATORY_EXT_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldModule->name, oldNode->name, + oldComplNode->name, + newComplNode->name); + } else { + printErrorAtLine(oldModule, ERR_MANDATORY_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name, + oldComplNode->name, + newComplNode->name); + } + } + smiInit(oldTag); + } + } + + smiInit(newTag); + for (newGroupElement = smiGetFirstElement(newComplNode); + newGroupElement; + newGroupElement = smiGetNextElement(newGroupElement)) { + newGroupNode = smiGetElementNode(newGroupElement); + for (newElement = smiGetFirstElement(newGroupNode); + newElement; + newElement = smiGetNextElement(newElement)) { + newNode = smiGetElementNode(newElement); + smiInit(oldTag); + oldNode = findGroupsElement(oldComplNode, newNode->name); + if (! oldNode) { + if (strcmp(smiGetNodeModule(newNode)->name, newModule->name)) { + printErrorAtLine(newModule, ERR_MANDATORY_EXT_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newModule->name, newNode->name, + oldComplNode->name, + newComplNode->name); + } else { + printErrorAtLine(newModule, ERR_MANDATORY_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name, + oldComplNode->name, + newComplNode->name); + } + } + smiInit(newTag); + } + } +} + + + +static void +diffOldNewComplianceOptional(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + SmiNode *oldComplNode, SmiNode *newComplNode) +{ + SmiElement *oldElement, *newElement; + SmiOption *oldOption, *newOption; + SmiNode *oldGroupNode, *newGroupNode, *oldNode, *newNode; + + smiInit(oldTag); + for (oldOption = smiGetFirstOption(oldComplNode); + oldOption; + oldOption = smiGetNextOption(oldOption)) { + oldGroupNode = smiGetOptionNode(oldOption); + for (oldElement = smiGetFirstElement(oldGroupNode); + oldElement; + oldElement = smiGetNextElement(oldElement)) { + oldNode = smiGetElementNode(oldElement); + smiInit(newTag); + newNode = findGroupsElement(newComplNode, oldNode->name); + if (! newNode) { + if (strcmp(smiGetNodeModule(oldNode)->name, oldModule->name)) { + printErrorAtLine(oldModule, ERR_OPTIONAL_EXT_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldModule->name, oldNode->name, + oldComplNode->name, + newComplNode->name); + } else { + printErrorAtLine(oldModule, ERR_OPTIONAL_REMOVED, + smiGetNodeLine(oldNode), + getStringNodekind(oldNode->nodekind), + oldNode->name, + oldComplNode->name, + newComplNode->name); + } + } else { + /* xxx compare group condition description here? xxx */ + } + smiInit(oldTag); + } + } + + smiInit(newTag); + for (newOption = smiGetFirstOption(newComplNode); + newOption; + newOption = smiGetNextOption(newOption)) { + newGroupNode = smiGetOptionNode(newOption); + for (newElement = smiGetFirstElement(newGroupNode); + newElement; + newElement = smiGetNextElement(newElement)) { + newNode = smiGetElementNode(newElement); + smiInit(oldTag); + oldNode = findGroupsElement(oldComplNode, newNode->name); + if (! oldNode) { + if (strcmp(smiGetNodeModule(newNode)->name, newModule->name)) { + printErrorAtLine(newModule, ERR_OPTIONAL_EXT_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newModule->name, newNode->name, + oldComplNode->name, + newComplNode->name); + } else { + printErrorAtLine(newModule, ERR_OPTIONAL_ADDED, + smiGetNodeLine(newNode), + getStringNodekind(newNode->nodekind), + newNode->name, + oldComplNode->name, + newComplNode->name); + } + } + smiInit(newTag); + } + } +} + + + +static void +diffOldNewCompliance(SmiModule *oldModule, const char *oldTag, + SmiModule *newModule, const char *newTag, + const char *oldCompl, const char *newCompl) +{ + SmiNode *smiNode; + SmiNode *oldComplNode = NULL, *newComplNode = NULL; + + for (smiNode = smiGetFirstNode(oldModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + if (strcmp(smiNode->name, oldCompl) == 0) { + oldComplNode = smiNode; + } + } + + if (! oldComplNode) { + fprintf(stderr, "smidiff: unable to find old compliance `%s'\n", + oldCompl); + } + + for (smiNode = smiGetFirstNode(newModule, SMI_NODEKIND_COMPLIANCE); + smiNode; + smiNode = smiGetNextNode(smiNode, SMI_NODEKIND_COMPLIANCE)) { + if (strcmp(smiNode->name, newCompl) == 0) { + newComplNode = smiNode; + } + } + + if (! newComplNode) { + fprintf(stderr, "smidiff: unable to find new compliance `%s'\n", + newCompl); + } + + if (!oldComplNode || !newComplNode) { + return; + } + + diffOldNewComplianceMandatory(oldModule, oldTag, + newModule, newTag, + oldComplNode, newComplNode); + diffOldNewComplianceOptional(oldModule, oldTag, + newModule, newTag, + oldComplNode, newComplNode); +} + + + +static void +usage() +{ + fprintf(stderr, + "Usage: smidiff [options] oldmodule newmodule\n" + " -V, --version show version and license information\n" + " -c, --config=file load a specific configuration file\n" + " -h, --help show usage information\n" + " -i, --ignore=prefix ignore errors matching prefix pattern\n" + " -l, --level=level set maximum level of errors and warnings\n" + " -m, --error-names print the name of errors in braces\n" + " -p, --preload=module preload \n" + " -s, --severity print the severity of errors in brackets\n" + " --old-compliance=name name of the old compliance statement\n" + " --new-compliance=name name of the new compliance statement\n"); +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smidiff " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smidiff"); } +static void level(int lev) { errorLevel = lev; } +static void ignore(char *ign) +{ + smiSetSeverity(ign, 9999); /* libsmi error messages */ + setErrorSeverity(ign, 9999); /* smidiff error messages */ +} + +static void preload(char *module) { + smiInit(oldTag); + smiLoadModule(module); + smiInit(newTag); + smiLoadModule(module); +} + + +int +main(int argc, char *argv[]) +{ + SmiModule *oldModule, *newModule; + int flags; + + static optStruct opt[] = { + /* short long type var/func special */ + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 'm', "error-names", OPT_FLAG, &mFlag, 0 }, + { 's', "severity", OPT_FLAG, &sFlag, 0 }, + { 'i', "ignore", OPT_STRING, ignore, OPT_CALLFUNC }, + { 0, "old-compliance", OPT_STRING, &oldCompl, 0 }, + { 0, "new-compliance", OPT_STRING, &newCompl, 0 }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ + }; + + smiInit(oldTag); + flags = smiGetFlags(); + flags |= SMI_FLAG_ERRORS; + smiSetFlags(flags); + smiSetErrorLevel(errorLevel); + + smiInit(newTag); + flags = smiGetFlags(); + flags |= SMI_FLAG_ERRORS; + smiSetFlags(flags); + smiSetErrorLevel(errorLevel); + + optParseOptions(&argc, argv, opt, 0); + + if (argc != 3) { + usage(); + return 1; + } + + if (oldCompl && !newCompl) { + fprintf(stderr, "smidiff: missing new compliance statement name\n"); + return 1; + } + + if (!oldCompl && newCompl) { + fprintf(stderr, "smidiff: missing old compliance statement name\n"); + return 1; + } + + smiInit(oldTag); + smiSetErrorLevel(errorLevel); + oldModule = smiGetModule(smiLoadModule(argv[1])); + if (! oldModule) { + fprintf(stderr, "smidiff: cannot locate module `%s'\n", argv[1]); + smiExit(); + exit(1); + } + + smiInit(newTag); + smiSetErrorLevel(errorLevel); + newModule = smiGetModule(smiLoadModule(argv[2])); + if (! newModule) { + fprintf(stderr, "smidiff: cannot locate module `%s'\n", argv[2]); + smiExit(); + smiInit(oldTag); + smiExit(); + exit(2); + } + + if (oldCompl && newCompl) { + diffOldNewCompliance(oldModule, oldTag, newModule, newTag, + oldCompl, newCompl); + } else { + diffModules(oldModule, oldTag, newModule, newTag); + diffTypes(oldModule, oldTag, newModule, newTag); + diffObjects(oldModule, oldTag, newModule, newTag); + diffNotifications(oldModule, oldTag, newModule, newTag); + diffGroups(oldModule, oldTag, newModule, newTag); + diffCompliances(oldModule, oldTag, newModule, newTag); + } + + smiInit(oldTag); + smiExit(); + + smiInit(newTag); + smiExit(); + + if (fflush(stdout) || ferror(stdout)) { + perror("smidiff: write error"); + exit(1); + } + + return 0; +} diff --git a/tools/smidump.1 b/tools/smidump.1 new file mode 100644 index 0000000..08656d9 --- /dev/null +++ b/tools/smidump.1 @@ -0,0 +1,194 @@ +.\" +.\" $Id: smidump.1.in 7608 2008-01-22 13:05:41Z schoenw $ +.\" +.TH smidump 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smidump \- dump SMI or SPPI modules in various formats +.SH SYNOPSIS +.B smidump +[ +.B "-Vhqusmk" +] [ +.BI "-c " file +] [ +.BI "-o " name +] [ +.BI "-p " module +] [ +.BI "-l " level +] [ +.BI "-f " format +] +.I "module(s)" +.SH DESCRIPTION +The \fBsmidump\fP program is used to dump the contents of a single MIB +or PIB +module or a collection of modules to stdout in a selectable output +format. This format may be a simple tree of nodes, types or imported +modules, but also a format fully compliant to SMIv1, SMIv2, SPPI or SMIng or +CORBA IDL or C source code. Smidump can thus be used to convert +modules from SMIv2 to SMIng and from SMIng to SMIv2, or to develop +template based agent code. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smidump version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. The help text contains a list of all +supported output formats. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-f \fIformat\fB, --format=\fIformat\fP +Use \fIformat\fP when dumping a module. Supported output formats are described +below. The default output format is SMIng. The \fIformat\fP argument is +case insensitive. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-o \fIname\fB, --output=\fIname\fB +Write the output in one or multiple files instead of stdout. The file +name(s) are derived from the \fIname\fP argument. Not all format +support this option. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main module(s). This may +be helpful if an incomplete main module misses to import some definitions. +.TP +\fB-q, --quiet\fP +Suppress comments from dumped modules. What kind of information +gets suppressed depends on the output format. +.TP +\fB-u, --unified\fP +Dump a unified output in case of multiple \fImodule(s)\fP instead of +multiple concatenated output sections. This is not supported for all +output formats. +.TP +\fB-k, --keep-going\fP +Continue as much as possible after serious parse errors. Note that +the output generated after serious parse errors may be incomplete +and should be used with care. +.TP +.I module(s) +These are the module(s) to be dumped. If a module argument represents a +path name (identified by containing at least one dot or slash character), +this is assumed to be the exact file to read. Otherwise, if a module is +identified by its plain module name, it is searched according to libsmi +internal rules. See \fBsmi_config(3)\fP for more details. +.SH "OUTPUT FORMATS" +The \fBsmidump\fP program supports the following output formats: +.TP 12 +sming +SMIng compliant format as defined in the SMIng Internet-Draft. +.TP +smiv2 +SMIv2 compliant format as defined in RFC 2578, RFC 2579, RFC 2580. +.TP +smiv1 +SMIv2 compliant format as defined in RFC 1155, RFC 1212, RFC 1215. +.TP +sppi +SPPI compliant format as defined in RFC 3159. If the underlying module +is not SPPI, there might be some mandatory information missing. +.TP +mosy +Format generated by the mosy compiler. +.TP +imports +Import hierarchy of a module. +.TP +types +Types defined in a module. +.TP +tree +OID registration tree structure of a module. +.TP +metrics +Metrics derived from a module (experimental). +.TP +identifiers +List of identifiers defined in a module. +.TP +compliances +Compliance definitions with all included objects and notifications. +.TP +corba +CORBA IDL and OID definitions following the JIDM specification translation +rules. +.TP +netsnmp +C source code files for usage within the net-snmp package (experimental). +.TP +scli +ANSI C manager stubs for usage within the scli package (experimental). +.TP +cm +Reverse engineered conceptual model in DIA XML file format (experimental). +.TP +svg +SVG diagram of a module (experimental). Use with \fB-u\fP when dumping multiple \fImodules\fP. +.TP +jax +Java AgentX sub-agent classes in separate files (experimental). +.TP +perl +Perl represention of the MIB module +(contributed by Martin Schulz ). +.TP +python +Python dictionaries represention of the MIB module +(contributed by Pat Knight ). +.TP +xml +SMI in XML format (experimental). +.TP +xsd +SMI in XML schema format (experimental). +.TP +sizes +SNMP best case / worst case RFC 3416 PDU sizes for typical PDUs +excluding SNMP message and transport headers (experimental). + +.SH "EXAMPLE" +This example converts the SMIv2 module IF-MIB in the current directory +to IF-MIB.sming in SMIng format. Note that the ./ prefix is used to +ensure reading the module from the current directory and not from a +place that libsmi guesses on its own. +.nf + + $ smidump -f sming ./IF-MIB > IF-MIB.sming +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHORS" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany +.br +(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany +.br +(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany +.br +(C) 2001-2002 T. Klie, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smidump.1.in b/tools/smidump.1.in new file mode 100644 index 0000000..08656d9 --- /dev/null +++ b/tools/smidump.1.in @@ -0,0 +1,194 @@ +.\" +.\" $Id: smidump.1.in 7608 2008-01-22 13:05:41Z schoenw $ +.\" +.TH smidump 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smidump \- dump SMI or SPPI modules in various formats +.SH SYNOPSIS +.B smidump +[ +.B "-Vhqusmk" +] [ +.BI "-c " file +] [ +.BI "-o " name +] [ +.BI "-p " module +] [ +.BI "-l " level +] [ +.BI "-f " format +] +.I "module(s)" +.SH DESCRIPTION +The \fBsmidump\fP program is used to dump the contents of a single MIB +or PIB +module or a collection of modules to stdout in a selectable output +format. This format may be a simple tree of nodes, types or imported +modules, but also a format fully compliant to SMIv1, SMIv2, SPPI or SMIng or +CORBA IDL or C source code. Smidump can thus be used to convert +modules from SMIv2 to SMIng and from SMIng to SMIv2, or to develop +template based agent code. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smidump version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. The help text contains a list of all +supported output formats. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-f \fIformat\fB, --format=\fIformat\fP +Use \fIformat\fP when dumping a module. Supported output formats are described +below. The default output format is SMIng. The \fIformat\fP argument is +case insensitive. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-o \fIname\fB, --output=\fIname\fB +Write the output in one or multiple files instead of stdout. The file +name(s) are derived from the \fIname\fP argument. Not all format +support this option. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main module(s). This may +be helpful if an incomplete main module misses to import some definitions. +.TP +\fB-q, --quiet\fP +Suppress comments from dumped modules. What kind of information +gets suppressed depends on the output format. +.TP +\fB-u, --unified\fP +Dump a unified output in case of multiple \fImodule(s)\fP instead of +multiple concatenated output sections. This is not supported for all +output formats. +.TP +\fB-k, --keep-going\fP +Continue as much as possible after serious parse errors. Note that +the output generated after serious parse errors may be incomplete +and should be used with care. +.TP +.I module(s) +These are the module(s) to be dumped. If a module argument represents a +path name (identified by containing at least one dot or slash character), +this is assumed to be the exact file to read. Otherwise, if a module is +identified by its plain module name, it is searched according to libsmi +internal rules. See \fBsmi_config(3)\fP for more details. +.SH "OUTPUT FORMATS" +The \fBsmidump\fP program supports the following output formats: +.TP 12 +sming +SMIng compliant format as defined in the SMIng Internet-Draft. +.TP +smiv2 +SMIv2 compliant format as defined in RFC 2578, RFC 2579, RFC 2580. +.TP +smiv1 +SMIv2 compliant format as defined in RFC 1155, RFC 1212, RFC 1215. +.TP +sppi +SPPI compliant format as defined in RFC 3159. If the underlying module +is not SPPI, there might be some mandatory information missing. +.TP +mosy +Format generated by the mosy compiler. +.TP +imports +Import hierarchy of a module. +.TP +types +Types defined in a module. +.TP +tree +OID registration tree structure of a module. +.TP +metrics +Metrics derived from a module (experimental). +.TP +identifiers +List of identifiers defined in a module. +.TP +compliances +Compliance definitions with all included objects and notifications. +.TP +corba +CORBA IDL and OID definitions following the JIDM specification translation +rules. +.TP +netsnmp +C source code files for usage within the net-snmp package (experimental). +.TP +scli +ANSI C manager stubs for usage within the scli package (experimental). +.TP +cm +Reverse engineered conceptual model in DIA XML file format (experimental). +.TP +svg +SVG diagram of a module (experimental). Use with \fB-u\fP when dumping multiple \fImodules\fP. +.TP +jax +Java AgentX sub-agent classes in separate files (experimental). +.TP +perl +Perl represention of the MIB module +(contributed by Martin Schulz ). +.TP +python +Python dictionaries represention of the MIB module +(contributed by Pat Knight ). +.TP +xml +SMI in XML format (experimental). +.TP +xsd +SMI in XML schema format (experimental). +.TP +sizes +SNMP best case / worst case RFC 3416 PDU sizes for typical PDUs +excluding SNMP message and transport headers (experimental). + +.SH "EXAMPLE" +This example converts the SMIv2 module IF-MIB in the current directory +to IF-MIB.sming in SMIng format. Note that the ./ prefix is used to +ensure reading the module from the current directory and not from a +place that libsmi guesses on its own. +.nf + + $ smidump -f sming ./IF-MIB > IF-MIB.sming +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHORS" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany +.br +(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany +.br +(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany +.br +(C) 2001-2002 T. Klie, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smidump.c b/tools/smidump.c new file mode 100644 index 0000000..154144f --- /dev/null +++ b/tools/smidump.c @@ -0,0 +1,433 @@ +/* + * smidump.c -- + * + * Dump a MIB module conforming to a given format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smidump.c 7870 2008-03-11 19:29:58Z schoenw $ + */ + +#include + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" +#include "smidump.h" + + + +static void help(void); +static void usage(void); +static void version(void); +static void config(char *filename); +static void level(int lev); +static void quiet(void); +static void preload(char *module); +static void unified(void); +static void format(char *form); + + +static int flags; +static int mFlag = 0; /* show the name for error messages */ +static int sFlag = 0; /* show the severity for error messages */ +static int kFlag = 0; /* keep going after severe errors */ +static SmidumpDriver *driver; +static SmidumpDriver *firstDriver; +static SmidumpDriver *lastDriver; +static SmidumpDriver *defaultDriver; +static char *output; + +static int opts; +static optStruct *opt; +static optStruct genericOpt[] = { + /* short long type var/func special */ + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'q', "quiet", OPT_FLAG, quiet, OPT_CALLFUNC }, + { 'm', "error-names", OPT_FLAG, &mFlag, 0 }, + { 's', "severity", OPT_FLAG, &sFlag, 0 }, + { 'u', "unified", OPT_FLAG, unified, OPT_CALLFUNC }, + { 'f', "format", OPT_STRING, format, OPT_CALLFUNC }, + { 'o', "output", OPT_STRING, &output, 0 }, + { 'k', "keep-going", OPT_FLAG, &kFlag, 0 }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ +}; + + + +void *xmalloc(size_t size) +{ + char *m = malloc(size); + if (! m) { + fprintf(stderr, "smidump: malloc failed - running out of memory\n"); + exit(1); + } + + return m; +} + + + +void *xrealloc(void *ptr, size_t size) +{ + char *m = realloc(ptr, size); + if (! m) { + fprintf(stderr, "smidump: realloc failed - running out of memory\n"); + exit(1); + } + return m; +} + + + +void *xcalloc(size_t nmemb, size_t size) +{ + char *m = calloc(nmemb, size); + if (! m) { + fprintf(stderr, "smidump: calloc failed - running out of memory\n"); + exit(1); + } + return m; +} + + + +char *xstrdup(const char *s) +{ + char *m = strdup(s); + if (! m) { + fprintf(stderr, "smidump: strdup failed - running out of memory\n"); + exit(1); + } + return m; +} + + + +void xfree(void *ptr) +{ + free(ptr); +} + + + +void smidumpRegisterDriver(SmidumpDriver *driver) +{ + int i; + + if (!firstDriver) { + firstDriver = driver; + lastDriver = driver; + } else { + lastDriver->next = driver; + lastDriver = driver; + } + + for (i = 0; driver->opt && driver->opt[i].type != OPT_END; i++) { + opt = xrealloc(opt, (opts+1) * sizeof(optStruct)); + memcpy(&opt[opts], &opt[opts-1], sizeof(optStruct)); + opt[opts-1].shortName = 0; + opt[opts-1].longName = xmalloc(strlen(driver->name) + + strlen(driver->opt[i].name) + 2); + sprintf(opt[opts-1].longName, "%s-%s", + driver->name, driver->opt[i].name); + opt[opts-1].type = driver->opt[i].type; + opt[opts-1].arg = driver->opt[i].arg; + opt[opts-1].flags = driver->opt[i].flags; + opts++; + } +} + + + +static void formats() +{ + SmidumpDriver *driver = firstDriver; + + for (driver = firstDriver; driver; driver = driver->next) { + fprintf(stderr, " %-14s: %s\n", driver->name, + driver->descr ? driver->descr : "..."); + } +} + + + +static void usage() +{ + int i; + SmidumpDriver *driver; + char *value = NULL; +#ifdef _MSC_VER + #if _MSC_VER >= 1400 +/* + %n in printf is a security vulnerability. Ref: + http://en.wikipedia.org/wiki/Format_string_vulnerabilities + MS decided it was important enough to disble it by default. Ref: + "ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vccrt/html/77a854ae-5b48-4865-89f4-f2dc5cf80f52.htm + Calling _set_printf_count_output() stops an invalid parameter crash. +*/ + int printf_state; + #endif +#endif + + fprintf(stderr, + "Usage: smidump [options] [module or path ...]\n" + " -V, --version show version and license information\n" + " -h, --help show usage information\n" + " -q, --quiet do not generate any comments\n" + " -c, --config=file load a specific configuration file\n" + " -p, --preload=module preload \n" + " -l, --level=level set maximum level of errors and warnings\n" + " -m, --error-names print the name of errors in braces\n" + " -s, --severity print the severity of errors in brackets\n" + " -f, --format=format use when dumping (default %s)\n" + " -o, --output=name use when creating names for output files\n" + " -u, --unified print a single unified output of all modules\n" + " -k, --keep-going continue after serious parse errors\n\n", + defaultDriver ? defaultDriver->name : "none"); + + fprintf(stderr, "Supported formats are:\n"); + formats(); + + for (driver = firstDriver; driver; driver = driver->next) { + if (! driver->opt) continue; + fprintf(stderr, "\nSpecific option for the \"%s\" format:\n", + driver->name); + for (i = 0; driver->opt && driver->opt[i].type != OPT_END; i++) { + int n; + switch (driver->opt[i].type) { + case OPT_END: + case OPT_FLAG: + value = NULL; + break; + case OPT_STRING: + value = "string"; + break; + case OPT_INT: + case OPT_UINT: + case OPT_LONG: + case OPT_ULONG: + value = "number"; + break; + } +#ifdef _MSC_VER + #if _MSC_VER >= 1400 + printf_state=_set_printf_count_output(1); + #endif +#endif + fprintf(stderr, " --%s-%s%s%s%n", + driver->name, driver->opt[i].name, + value ? "=" : "", + value ? value : "", + &n); +#ifdef _MSC_VER + #if _MSC_VER >= 1400 + (void)_set_printf_count_output(printf_state); + #endif +#endif + fprintf(stderr, "%*s%s\n", + 30-n, "", + driver->opt[i].descr ? driver->opt[i].descr : "..."); + } + } +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smidump " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smidump"); } +static void level(int lev) { smiSetErrorLevel(lev); } +static void quiet() { flags |= SMIDUMP_FLAG_SILENT; } +static void preload(char *module) { smiLoadModule(module); } +static void unified() { flags |= SMIDUMP_FLAG_UNITE; } + +static void format(char *form) +{ + for (driver = firstDriver; driver; driver = driver->next) { + if (strcasecmp(driver->name, form) == 0) { + break; + } + } + if (!driver) { + fprintf(stderr, "smidump: invalid dump format `%s'" + " - supported formats are:\n", form); + formats(); + exit(1); + } +} + + + +static void +errorHandler(char *path, int line, int severity, char *msg, char *tag) +{ + if (path) { + fprintf(stderr, "%s:%d: ", path, line); + } + if (sFlag) { + fprintf(stderr, "[%d] ", severity); + } + if (mFlag) { + fprintf(stderr, "{%s} ", tag); + } + switch (severity) { + case 4: + case 5: + fprintf(stderr, "warning: "); + break; + case 6: + fprintf(stderr, "info: "); + break; + } + fprintf(stderr, "%s\n", msg); + + if (severity <= 0) { + exit(1); + } +} + + + +int main(int argc, char *argv[]) +{ + char *modulename; + SmiModule *smiModule; + int smiflags, i; + SmiModule **modv = NULL; + int modc = 0; + + output = NULL; + firstDriver = lastDriver = defaultDriver = NULL; + + opts = sizeof(genericOpt) / sizeof(optStruct); + opt = xmalloc(sizeof(genericOpt)); + memcpy(opt, genericOpt, sizeof(genericOpt)); + + initCm(); + initCorba(); +#if 0 + initFig(); +#endif + initIdentifiers(); + initImports(); + initJax(); + initMetrics(); + initMosy(); + initNetsnmp(); + initPerl(); + initPython(); + initSming(); + initSmi(); defaultDriver = lastDriver; + initSppi(); +#if 0 + initSql(); +#endif + initScli(); + initSvg(); + initTree(); + initTypes(); + initSizes(); + initXml(); + initXsd(); + initCompliances(); + initYang(); + initBoilerplate(); + + for (i = 1; i < argc; i++) + if ((strstr(argv[i], "-c") == argv[i]) || + (strstr(argv[i], "--config") == argv[i])) break; + if (i == argc) + smiInit("smidump"); + else + smiInit(NULL); + + flags = 0; + driver = defaultDriver; + + optParseOptions(&argc, argv, opt, 0); + + if (!driver) { + fprintf(stderr, "smidump: no dump formats registered\n"); + smiExit(); + exit(1); + } + + if (sFlag || mFlag) { + smiSetErrorHandler(errorHandler); + } + + smiflags = smiGetFlags(); + smiflags |= SMI_FLAG_ERRORS; + smiflags |= driver->smiflags; + smiSetFlags(smiflags); + + if (flags & SMIDUMP_FLAG_UNITE && driver->ignflags & SMIDUMP_DRIVER_CANT_UNITE) { + fprintf(stderr, "smidump: %s format does not support united output:" + " ignoring -u\n", driver->name); + flags = (flags & ~SMIDUMP_FLAG_UNITE); + } + + if (output && driver->ignflags & SMIDUMP_DRIVER_CANT_OUTPUT) { + fprintf(stderr, "smidump: %s format does not support output option:" + " ignoring -o %s\n", driver->name, output); + output = NULL; + } + + modv = (SmiModule **) xmalloc((argc) * sizeof(SmiModule *)); + modc = 0; + + for (i = 1; i < argc; i++) { + modulename = smiLoadModule(argv[i]); + smiModule = modulename ? smiGetModule(modulename) : NULL; + if (smiModule) { + if ((smiModule->conformance) && (smiModule->conformance < 3)) { + flags |= SMIDUMP_FLAG_ERROR; + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(stderr, + "smidump: module `%s' contains errors, " + "expect flawed output\n", + argv[i]); + } + } + modv[modc++] = smiModule; + } else { + fprintf(stderr, "smidump: cannot locate module `%s'\n", + argv[i]); + } + } + + if (! (flags & SMIDUMP_FLAG_ERROR) || kFlag) { + (driver->func)(modc, modv, flags, output); + } else { + if (! (flags & SMIDUMP_FLAG_SILENT)) { + fprintf(stderr, + "smidump: aborting due to severe parsing errors\n" + "smidump: use the -k option to force continuation\n"); + } + } + + smiExit(); + + if (modv) xfree(modv); + + return 0; +} diff --git a/tools/smidump.h b/tools/smidump.h new file mode 100644 index 0000000..799579b --- /dev/null +++ b/tools/smidump.h @@ -0,0 +1,125 @@ +/* + * smidump.h -- + * + * This header contains the entry points into the modules + * which dump MIB modules in various output format. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * Copyright (c) 1999 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smidump.h 7870 2008-03-11 19:29:58Z schoenw $ + */ + +#ifndef _SMIDUMP_H +#define _SMIDUMP_H + +#include "shhopt.h" + + + +/* + * The following flags can be passed to output drivers in the flags + * member of the struct above. + */ + +#define SMIDUMP_FLAG_SILENT 0x01 /* suppress comments */ +#define SMIDUMP_FLAG_UNITE 0x02 /* generated united output */ +#define SMIDUMP_FLAG_ERROR 0x04 /* parser hit serious parse errors */ + + +/* + * Driver capability flags which are used to warn about options not + * understood by a particular output driver. + */ + +#define SMIDUMP_DRIVER_CANT_UNITE 0x02 +#define SMIDUMP_DRIVER_CANT_OUTPUT 0x04 + + + +/* + * The data structure which represents a driver specific option. + * A static array of these options (with the last option's type + * being OPT_END) is used in SmidumpDriver. + * The SmidumpDriverOption structure is based on shhopt.h:optStruct. + */ + +typedef struct SmidumpDriverOption { + char *name; + optArgType type; + void *arg; + int flags; + char *descr; +} SmidumpDriverOption; + + + +/* + * The data structure which represents the entry point for an output + * driver. The ignflags contain the driver capabilities as described + * above. + */ + +typedef struct SmidumpDriver { + char *name; /* Name of the output driver. */ + void (*func) (int, SmiModule **, /* Output generating function. */ + int, char *); + int smiflags; /* Flags for the SMI parser. */ + int ignflags; /* Output driver flags ignored. */ + char *descr; /* Short description. */ + SmidumpDriverOption *opt; /* Driver specific options. */ + struct SmidumpDriver *next; +} SmidumpDriver; + + + +/* + * The entry points for the output drivers that currently exist for + * smidump. + */ + +extern void initSmi(void); +extern void initSming(void); +extern void initSppi(void); +extern void initSvg(void); +extern void initImports(void); +extern void initTypes(void); +extern void initTree(void); +extern void initIdentifiers(void); +extern void initMetrics(void); +extern void initMosy(void); +extern void initXml(void); +extern void initCorba(void); +extern void initCm(void); +extern void initNetsnmp(void); +extern void initJax(void); +extern void initPython(void); +extern void initPerl(void); +extern void initScli(void); +extern void initXsd(void); +extern void initSizes(void); +extern void initCompliances(void); +extern void initYang(void); +extern void initBoilerplate(void); + +extern void initSql(void); +extern void initFig(void); + + +/* + * The functions are wrappers for the malloc functions which handle + * memory allocation errors by terminating the program. + */ + +extern void *xmalloc(size_t size); +extern void *xrealloc(void *ptr, size_t size); +extern void *xcalloc(size_t nmemb, size_t size); +extern char *xstrdup(const char *s); +extern void xfree(void *ptr); + +extern void smidumpRegisterDriver(SmidumpDriver *driver); + +#endif /* _SMIDUMP_H */ diff --git a/tools/smilint.1 b/tools/smilint.1 new file mode 100644 index 0000000..1e06035 --- /dev/null +++ b/tools/smilint.1 @@ -0,0 +1,153 @@ +.\" +.\" $Id: smilint.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smilint 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smilint \- syntax and semantic checks of SMIv1/v2 and SPPI modules +.SH SYNOPSIS +.B smilint +[ +.B "-Vhersm" +] [ +.BI "-c " file +] [ +.BI "-p " module +] [ +.BI "-l " level +] [ +.BI "-i " error-pattern +] +.I "module(s)" +.SH DESCRIPTION +The \fBsmilint\fP program is used to check MIB or PIB modules for syntax +errors and semantics at some degree. SMIv1/v2 style +MIB modules as well as SPPI PIB modules are supported. +.PP +The rules that \fBsmilint\fP is based on are taken from RFC 1155, RFC +1212 and RFC 1215 for SMIv1, RFCs 2578-2580 for SMIv2, RFC 3159 for SPPI. +.\" and the specification of SMIng that has been a research project +.\" within the Network Management Research Group of the IRTF. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smilint version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-e, --error-list\fP +Show a list of all known error messages and exit. Error messages can +have associated tags, shown in braces at the end of each line. The +tags can be used with the -i option to ignore certain error messages. +.TP +\fB-r, --recursive\fP +Report errors and warnings also for recursively imported modules. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. +See below for a description of the error levels. The default error +level is 3. +.TP +\fB-i \fIprefix\fB, --ignore=\fIprefix\fP +Ignore all errors that have a tag which matches \fIprefix\fP. +A list of error tags can be retrieved by calling smilint with the +-e option. +.TP +.I module(s) +These are the modules to be checked. If a module argument represents a +path name (identified by containing at least one dot or slash character), +this is assumed to be the exact file to read. Otherwise, if a module is +identified by its plain module name, it is searched according to libsmi +internal rules. See \fBsmi_config(3)\fP for more details. +.SH "ERROR AND WARNING LEVELS" +All generated error and warning messages have an associated severity level. +The actual severity levels are: +.IP 0 3 +Internal error, no recovery possible. Examples are memory allocation +failures. Errors of this level usually cause the application to abort. +.IP 1 3 +Major SMI/SPPI error, recovery somehow possible but may lead to severe +problems. Examples are lexically unexpected characters or unknown +keywords. Errors of this kind usually lead to follow-on errors. +.IP 2 3 +SMI/SPPI error which is probably tolerated by some +implementations. Examples are MIB/PIB modules which mix constructs +from different SMI/SPPI versions. +.IP 3 3 +SMI/SPPI error which is likely tolerated by many +implementations. Examples are misplaced SMIv2 MODULE-IDENTITY +invocations or SMIv2 textual conventions derived from other textual +conventions. +.IP 4 3 +Something which is not strictly an error but which is recommended to +be changed. Warnings of this level are usually considered during MIB +reviews. +.IP 5 3 +Something that is basically correct but might be problematic in +certain environments or usage scenarios. Examples are warnings that +identifiers only differ in case or that type definitions are not used +within the defining module. +.IP 6 3 +Messages of this level are auxiliary notices. Examples are messages +that point to a previous definition in case of a redefinition. +.PP +Higher levels are currently not used and lead to the same effects as +level 6 does. Note that errors up to level 3 are errors violating the +specifications and must be fixed by the responsible author. The +warnings generated with level 4 should be considered during normal +MIB/PIB reviews. +.SH "EXAMPLE" +This example checks the file RMON2-MIB in the current directory (note +that the `./' prefix ensures this). The error level is raised to 6 +and warnings that claim about identifier names that exceed a length +of 32 characters are suppressed. +.nf + + $ smilint -l 6 -i namelength-32 ./RMON2-MIB + ./RMON2-MIB:3935: unexpected type restriction + ./RMON2-MIB:3936: unexpected type restriction + ./RMON2-MIB:3937: unexpected type restriction + ./RMON2-MIB:3938: unexpected type restriction + ./RMON2-MIB:3939: unexpected type restriction + ./RMON2-MIB:3940: unexpected type restriction + ./RMON2-MIB:4164: scalar object must not have a `read-create' access value + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +Other commonly used MIB checkers are +.BR mosy "(1) and " +.BR smicng "(1)." +.SH "AUTHORS" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany +.br +(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany +.br +(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany +.br +(C) 2001-2002 T. Klie, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smilint.1.in b/tools/smilint.1.in new file mode 100644 index 0000000..1e06035 --- /dev/null +++ b/tools/smilint.1.in @@ -0,0 +1,153 @@ +.\" +.\" $Id: smilint.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smilint 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smilint \- syntax and semantic checks of SMIv1/v2 and SPPI modules +.SH SYNOPSIS +.B smilint +[ +.B "-Vhersm" +] [ +.BI "-c " file +] [ +.BI "-p " module +] [ +.BI "-l " level +] [ +.BI "-i " error-pattern +] +.I "module(s)" +.SH DESCRIPTION +The \fBsmilint\fP program is used to check MIB or PIB modules for syntax +errors and semantics at some degree. SMIv1/v2 style +MIB modules as well as SPPI PIB modules are supported. +.PP +The rules that \fBsmilint\fP is based on are taken from RFC 1155, RFC +1212 and RFC 1215 for SMIv1, RFCs 2578-2580 for SMIv2, RFC 3159 for SPPI. +.\" and the specification of SMIng that has been a research project +.\" within the Network Management Research Group of the IRTF. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smilint version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-e, --error-list\fP +Show a list of all known error messages and exit. Error messages can +have associated tags, shown in braces at the end of each line. The +tags can be used with the -i option to ignore certain error messages. +.TP +\fB-r, --recursive\fP +Report errors and warnings also for recursively imported modules. +.TP +\fB-s, --severity\fP +Show the error severity in brackets before error messages. +.TP +\fB-m, --error-names\fP +Show the error names in braces before error messages. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. +See below for a description of the error levels. The default error +level is 3. +.TP +\fB-i \fIprefix\fB, --ignore=\fIprefix\fP +Ignore all errors that have a tag which matches \fIprefix\fP. +A list of error tags can be retrieved by calling smilint with the +-e option. +.TP +.I module(s) +These are the modules to be checked. If a module argument represents a +path name (identified by containing at least one dot or slash character), +this is assumed to be the exact file to read. Otherwise, if a module is +identified by its plain module name, it is searched according to libsmi +internal rules. See \fBsmi_config(3)\fP for more details. +.SH "ERROR AND WARNING LEVELS" +All generated error and warning messages have an associated severity level. +The actual severity levels are: +.IP 0 3 +Internal error, no recovery possible. Examples are memory allocation +failures. Errors of this level usually cause the application to abort. +.IP 1 3 +Major SMI/SPPI error, recovery somehow possible but may lead to severe +problems. Examples are lexically unexpected characters or unknown +keywords. Errors of this kind usually lead to follow-on errors. +.IP 2 3 +SMI/SPPI error which is probably tolerated by some +implementations. Examples are MIB/PIB modules which mix constructs +from different SMI/SPPI versions. +.IP 3 3 +SMI/SPPI error which is likely tolerated by many +implementations. Examples are misplaced SMIv2 MODULE-IDENTITY +invocations or SMIv2 textual conventions derived from other textual +conventions. +.IP 4 3 +Something which is not strictly an error but which is recommended to +be changed. Warnings of this level are usually considered during MIB +reviews. +.IP 5 3 +Something that is basically correct but might be problematic in +certain environments or usage scenarios. Examples are warnings that +identifiers only differ in case or that type definitions are not used +within the defining module. +.IP 6 3 +Messages of this level are auxiliary notices. Examples are messages +that point to a previous definition in case of a redefinition. +.PP +Higher levels are currently not used and lead to the same effects as +level 6 does. Note that errors up to level 3 are errors violating the +specifications and must be fixed by the responsible author. The +warnings generated with level 4 should be considered during normal +MIB/PIB reviews. +.SH "EXAMPLE" +This example checks the file RMON2-MIB in the current directory (note +that the `./' prefix ensures this). The error level is raised to 6 +and warnings that claim about identifier names that exceed a length +of 32 characters are suppressed. +.nf + + $ smilint -l 6 -i namelength-32 ./RMON2-MIB + ./RMON2-MIB:3935: unexpected type restriction + ./RMON2-MIB:3936: unexpected type restriction + ./RMON2-MIB:3937: unexpected type restriction + ./RMON2-MIB:3938: unexpected type restriction + ./RMON2-MIB:3939: unexpected type restriction + ./RMON2-MIB:3940: unexpected type restriction + ./RMON2-MIB:4164: scalar object must not have a `read-create' access value + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +Other commonly used MIB checkers are +.BR mosy "(1) and " +.BR smicng "(1)." +.SH "AUTHORS" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany +.br +(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany +.br +(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany +.br +(C) 2001-2002 T. Klie, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smilint.c b/tools/smilint.c new file mode 100644 index 0000000..1dcb57f --- /dev/null +++ b/tools/smilint.c @@ -0,0 +1,332 @@ +/* + * smilint.c -- + * + * MIB module checker main program. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $ + */ + +#include + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" + + + +/* + * These are functions that are not officially exported by the libsmi. + * See the original prototype definitions in lib/error.h. + */ + +extern int smiGetErrorSeverity(int id); +extern char* smiGetErrorTag(int id); +extern char* smiGetErrorMsg(int id); +extern char* smiGetErrorDescription(int id); + + +static int mFlag = 0; /* show the name for error messages */ +static int sFlag = 0; /* show the severity for error messages */ +static int eFlag = 0; /* print the list of possible error messages */ +static int flags; + + +typedef struct Error { + int id; + int severity; + char *tag; + char *msg; + char *description; + int used; +} Error; + + +static Error *errors = NULL; + + +static void fold(FILE *f, int indent, const char *msg) +{ + const char *p, *s; + + if (! msg) { + fprintf(f, "\n"); + return; + } + + for (s = msg; *s; s++) { + for (p = s; *p && *p != '\n'; p++) ; + if (*p) { + fprintf(f, "%.*s\n%*s", p - s, s, indent, ""); + s = p; + } else { + fprintf(f, "%.*s\n", p - s, s); + break; + } + } +} + + + +static int compare(const void *v1, const void *v2) +{ + Error *err1 = (Error *) v1; + Error *err2 = (Error *) v2; + + if (err1->severity < err2->severity) { + return -1; + } + if (err1->severity > err2->severity) { + return 1; + } + return strcmp(err1->msg, err2->msg); +} + + + +static Error* errors_new() +{ + int i, cnt; + Error *errors; + + for (cnt = 0; smiGetErrorSeverity(cnt) >= 0; cnt++) ; + + errors = malloc((cnt + 1) * sizeof(Error)); + if (! errors) { + fprintf(stderr, "smilint: malloc failed - running out of memory\n"); + exit(1); + } + memset(errors, 0, (cnt + 1) * sizeof(Error)); + + for (i = 0; i < cnt; i++) { + errors[i].id = i; + errors[i].severity = smiGetErrorSeverity(i); + errors[i].tag = smiGetErrorTag(i); + errors[i].msg = smiGetErrorMsg(i); + errors[i].description = smiGetErrorDescription(i); + } + + qsort(errors, cnt, sizeof(Error), compare); + + return errors; +} + + +static void display_one(FILE *f, Error *error) +{ + const int indent = 12; + char *type, *tag; + + type = (error->severity <= 3) ? "Error:" : "Warning:"; + tag = (error->tag && strlen(error->tag)) + ? error->tag : ""; + fprintf(f, "%-*s %s (level %d%s)\n", + indent, type, tag, error->severity & 127, + error->severity & 128 ? ", ignored" : ""); + fprintf(f, "%-*s %s\n", indent, "Message:", + error->msg ? error->msg : ""); + if (error->description) { + fprintf(f, "%-*s ", indent, "Description:"); + fold(f, indent + 1, error->description); + } +} + + +static void display_all(Error *errors) +{ + int i; + + for (i = 0; errors[i].msg; i++) { + if (i) printf("\n"); + display_one(stdout, errors + i); + } +} + + + +static void display_used(Error *errors) +{ + int i, n; + + for (i = 0, n = 0; errors[i].msg; i++) { + if (errors[i].used && errors[i].description) n++; + } + + if (! n) { + return; + } + + fprintf(stderr, + "\nAdditional descriptions of some error/warning messages:\n"); + + for (i = 0; errors[i].msg; i++) { + if (! errors[i].used || !errors[i].description) continue; + if (i) fprintf(stderr, "\n"); + display_one(stderr, errors + i); + } +} + + + +static void usage() +{ + fprintf(stderr, + "Usage: smilint [options] [module or path ...]\n" + " -V, --version show version and license information\n" + " -h, --help show usage information\n" + " -c, --config=file load a specific configuration file\n" + " -p, --preload=module preload \n" + " -e, --error-list print list of known error messages\n" + " -m, --error-names print the name of errors in braces\n" + " -s, --severity print the severity of errors in brackets\n" + " -r, --recursive print errors also for imported modules\n" + " -l, --level=level set maximum level of errors and warnings\n" + " -i, --ignore=prefix ignore errors matching prefix pattern\n" + " -I, --noignore=prefix do not ignore errors matching prefix pattern\n"); +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smilint " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smilint"); } +static void preload(char *module) { smiLoadModule(module); } +static void recursive() { flags |= SMI_FLAG_RECURSIVE; smiSetFlags(flags); } +static void level(int lev) { smiSetErrorLevel(lev); } +static void ignore(char *ign) { smiSetSeverity(ign, 128); } +static void noignore(char *ign) { smiSetSeverity(ign, -1); } + + + +static void +errorHandler(char *path, int line, int severity, char *msg, char *tag) +{ + int i; + + if (path) { + fprintf(stderr, "%s:%d: ", path, line); + } + if (sFlag) { + fprintf(stderr, "[%d] ", severity); + } + if (mFlag) { + fprintf(stderr, "{%s} ", tag); + } + switch (severity) { + case 4: + case 5: + fprintf(stderr, "warning: "); + break; + case 6: + fprintf(stderr, "info: "); + break; + } + fprintf(stderr, "%s\n", msg); + + if (severity <= 0) { + exit(1); + } + + /* If we are supposed to generate error descriptions, locate this + * error in our error list and increment its usage counter. Note + * that we assume that error tags are unique (and we should better + * check for this somewhere). */ + + if (errors) { + for (i = 0; errors[i].msg; i++) { + if (strcmp(errors[i].tag, tag) == 0) { + errors[i].used++; + break; + } + } + } +} + + + +int main(int argc, char *argv[]) +{ + int i; + + static optStruct opt[] = { + /* short long type var/func special */ + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 'e', "error-list", OPT_FLAG, &eFlag, 0 }, + { 'm', "error-names", OPT_FLAG, &mFlag, 0 }, + { 's', "severity", OPT_FLAG, &sFlag, 0 }, + { 'r', "recursive", OPT_FLAG, recursive, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'i', "ignore", OPT_STRING, ignore, OPT_CALLFUNC }, + { 'I', "noignore", OPT_STRING, noignore, OPT_CALLFUNC }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ + }; + + for (i = 1; i < argc; i++) + if ((strstr(argv[i], "-c") == argv[i]) || + (strstr(argv[i], "--config") == argv[i])) break; + if (i == argc) + smiInit("smilint"); + else + smiInit(NULL); + + flags = smiGetFlags(); + flags |= SMI_FLAG_ERRORS; + flags |= SMI_FLAG_NODESCR; + smiSetFlags(flags); + + optParseOptions(&argc, argv, opt, 0); + + if (eFlag) { + mFlag = 1; + errors = errors_new(); + } + + if (sFlag || mFlag) { + smiSetErrorHandler(errorHandler); + } + + if (eFlag && argc == 1) { + if (errors) { + display_all(errors); + free(errors); + } + smiExit(); + return 0; + } + + for (i = 1; i < argc; i++) { + if (smiLoadModule(argv[i]) == NULL) { + fprintf(stderr, "smilint: cannot locate module `%s'\n", + argv[i]); + smiExit(); + exit(1); + } + } + + if (eFlag) { + if (errors) { + display_used(errors); + free(errors); + } + } + + smiExit(); + + return 0; +} diff --git a/tools/smiquery.1 b/tools/smiquery.1 new file mode 100644 index 0000000..ec55f6c --- /dev/null +++ b/tools/smiquery.1 @@ -0,0 +1,66 @@ +.\" +.\" $Id: smiquery.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smiquery 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smiquery \- query single information from SMI MIB modules +.SH SYNOPSIS +.B smiquery +[ +.B "-Vh" +] [ +.BI "-p " module +] +.I command name +.SH DESCRIPTION +The \fBsmiquery\fP program is used to query information on a single +item from an MIB module, e.g. module meta information or a single type +definition. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smiquery version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. The help text lists all available \fBcommand\fPs. +.TP +\fB-p \fImodule\fB, --preload \fImodule\fP +Preload the module \fImodule\fP before reading the main module. This may +be helpful if an incomplete main module misses to import some definitions. +.TP +.I command name +This specifies the kind of information to retrieve (module, imports, +revisions, node, parent, compliance, index, members, children, type, or +macro) and the item to retrieve. +.PP +The module in question is searched along a path, which is initialized by +the \fBSMIPATH\fP environment variable or by /usr/local/share/mibs if +\fBSMIPATH\fP is not set. Files with a \fB.sming\fP extension are +expected to be (old-style!) SMIng module files. Files +with a \fB.my\fP or without +any extension are expected to be SMIv1/v2 module files. +.SH "EXAMPLE" +This example queries for information on the node ifNumber defined +in the module IF-MIB. +.nf + + $ smiquery node IF-MIB::ifNumber + MibNode: IF-MIB::ifNumber + OID: 1.3.6.1.2.1.2.1 + Type: Integer32 + Declaration: OBJECT-TYPE + NodeKind: scalar + Access: read-only + Status: current + Description: The number of network interfaces (regardless of their + current state) present on this system. + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHOR" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br diff --git a/tools/smiquery.1.in b/tools/smiquery.1.in new file mode 100644 index 0000000..648c128 --- /dev/null +++ b/tools/smiquery.1.in @@ -0,0 +1,66 @@ +.\" +.\" $Id: smiquery.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smiquery 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smiquery \- query single information from SMI MIB modules +.SH SYNOPSIS +.B smiquery +[ +.B "-Vh" +] [ +.BI "-p " module +] +.I command name +.SH DESCRIPTION +The \fBsmiquery\fP program is used to query information on a single +item from an MIB module, e.g. module meta information or a single type +definition. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smiquery version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. The help text lists all available \fBcommand\fPs. +.TP +\fB-p \fImodule\fB, --preload \fImodule\fP +Preload the module \fImodule\fP before reading the main module. This may +be helpful if an incomplete main module misses to import some definitions. +.TP +.I command name +This specifies the kind of information to retrieve (module, imports, +revisions, node, parent, compliance, index, members, children, type, or +macro) and the item to retrieve. +.PP +The module in question is searched along a path, which is initialized by +the \fBSMIPATH\fP environment variable or by @mibdir@ if +\fBSMIPATH\fP is not set. Files with a \fB.sming\fP extension are +expected to be (old-style!) SMIng module files. Files +with a \fB.my\fP or without +any extension are expected to be SMIv1/v2 module files. +.SH "EXAMPLE" +This example queries for information on the node ifNumber defined +in the module IF-MIB. +.nf + + $ smiquery node IF-MIB::ifNumber + MibNode: IF-MIB::ifNumber + OID: 1.3.6.1.2.1.2.1 + Type: Integer32 + Declaration: OBJECT-TYPE + NodeKind: scalar + Access: read-only + Status: current + Description: The number of network interfaces (regardless of their + current state) present on this system. + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHOR" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br diff --git a/tools/smiquery.c b/tools/smiquery.c new file mode 100644 index 0000000..4d4577d --- /dev/null +++ b/tools/smiquery.c @@ -0,0 +1,485 @@ +/* + * smiquery.c -- + * + * A simple SMI query program, using libsmi. + * + * Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smiquery.c 2445 2005-06-13 10:44:30Z schoenw $ + */ + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" + + + +static char *smiStringStatus(SmiStatus status) +{ + return + (status == SMI_STATUS_CURRENT) ? "current" : + (status == SMI_STATUS_DEPRECATED) ? "deprecated" : + (status == SMI_STATUS_OBSOLETE) ? "obsolete" : + (status == SMI_STATUS_MANDATORY) ? "mandatory" : + (status == SMI_STATUS_OPTIONAL) ? "optional" : + ""; +} + +static char *smiStringAccess(SmiAccess access) +{ + return + (access == SMI_ACCESS_NOT_ACCESSIBLE) ? "not-accessible" : + (access == SMI_ACCESS_NOTIFY) ? "accessible-for-notify" : + (access == SMI_ACCESS_READ_ONLY) ? "read-only" : + (access == SMI_ACCESS_READ_WRITE) ? "read-write" : + ""; +} + +static char *smiStringLanguage(SmiLanguage language) +{ + return + (language == SMI_LANGUAGE_UNKNOWN) ? "" : + (language == SMI_LANGUAGE_SMIV1) ? "SMIv1" : + (language == SMI_LANGUAGE_SMIV2) ? "SMIv2" : + (language == SMI_LANGUAGE_SMING) ? "SMIng" : + ""; +} + +static char *smiStringDecl(SmiDecl macro) +{ + return + (macro == SMI_DECL_UNKNOWN) ? "" : + (macro == SMI_DECL_IMPLICIT_TYPE) ? "" : + (macro == SMI_DECL_TYPEASSIGNMENT) ? "" : + (macro == SMI_DECL_IMPL_SEQUENCEOF) ? "" : + (macro == SMI_DECL_VALUEASSIGNMENT) ? "" : + (macro == SMI_DECL_OBJECTTYPE) ? "OBJECT-TYPE" : + (macro == SMI_DECL_OBJECTIDENTITY) ? "OBJECT-IDENTITY" : + (macro == SMI_DECL_MODULEIDENTITY) ? "MODULE-IDENTITY" : + (macro == SMI_DECL_NOTIFICATIONTYPE) ? "NOTIFICATIONTYPE" : + (macro == SMI_DECL_TRAPTYPE) ? "TRAP-TYPE" : + (macro == SMI_DECL_OBJECTGROUP) ? "OBJECT-GROUP" : + (macro == SMI_DECL_NOTIFICATIONGROUP) ? "NOTIFICATION-GROUP" : + (macro == SMI_DECL_MODULECOMPLIANCE) ? "MODULE-COMPLIANCE" : + (macro == SMI_DECL_AGENTCAPABILITIES) ? "AGENT-CAPABILITIES" : + (macro == SMI_DECL_TEXTUALCONVENTION) ? "TEXTUAL-CONVENTION" : + (macro == SMI_DECL_MODULE) ? "module" : + (macro == SMI_DECL_TYPEDEF) ? "typedef" : + (macro == SMI_DECL_NODE) ? "node" : + (macro == SMI_DECL_SCALAR) ? "scalar" : + (macro == SMI_DECL_TABLE) ? "table" : + (macro == SMI_DECL_ROW) ? "row" : + (macro == SMI_DECL_COLUMN) ? "column" : + (macro == SMI_DECL_NOTIFICATION) ? "notification" : + (macro == SMI_DECL_GROUP) ? "group" : + (macro == SMI_DECL_COMPLIANCE) ? "compliance" : + (macro == SMI_DECL_IMPL_OBJECT) ? "" : + ""; +} + +static char *smiStringNodekind(SmiNodekind nodekind) +{ + return + (nodekind == SMI_NODEKIND_UNKNOWN) ? "" : + (nodekind == SMI_NODEKIND_NODE) ? "node" : + (nodekind == SMI_NODEKIND_SCALAR) ? "scalar" : + (nodekind == SMI_NODEKIND_TABLE) ? "table" : + (nodekind == SMI_NODEKIND_ROW) ? "row" : + (nodekind == SMI_NODEKIND_COLUMN) ? "column" : + (nodekind == SMI_NODEKIND_NOTIFICATION) ? "notification" : + (nodekind == SMI_NODEKIND_GROUP) ? "group" : + (nodekind == SMI_NODEKIND_COMPLIANCE) ? "compliance" : + (nodekind == SMI_NODEKIND_CAPABILITIES) ? "capabilities" : + ""; +} + +static char *smiStringBasetype(SmiBasetype basetype) +{ + return + (basetype == SMI_BASETYPE_UNKNOWN) ? "" : + (basetype == SMI_BASETYPE_OCTETSTRING) ? "OctetString" : + (basetype == SMI_BASETYPE_OBJECTIDENTIFIER) ? "ObjectIdentifier" : + (basetype == SMI_BASETYPE_UNSIGNED32) ? "Unsigned32" : + (basetype == SMI_BASETYPE_INTEGER32) ? "Integer32" : + (basetype == SMI_BASETYPE_UNSIGNED64) ? "Unsigned64" : + (basetype == SMI_BASETYPE_INTEGER64) ? "Integer64" : + (basetype == SMI_BASETYPE_FLOAT32) ? "Float32" : + (basetype == SMI_BASETYPE_FLOAT64) ? "Float64" : + (basetype == SMI_BASETYPE_FLOAT128) ? "Float128" : + (basetype == SMI_BASETYPE_ENUM) ? "Enumeration" : + (basetype == SMI_BASETYPE_BITS) ? "Bits" : + ""; +} + + + +static char *format(const char *s) +{ + static char ss[20000]; + int i, j; + + if (!s) { + sprintf(ss, "-"); + } else { + for(i = 0, j = 0; s[i]; i++) { + ss[j++] = s[i]; + if (s[i] == '\n') { + sprintf(&ss[j], " "); + j += 14; + } + } + ss[j] = 0; + } + return ss; +} + + +static void usage() +{ + fprintf(stderr, + "Usage: smiquery [options] command name [command name ...]\n" + " -V, --version show version and license information\n" + " -h, --help show usage information\n" + " -c, --config=file load a specific configuration file\n" + " -p, --preload=module preload \n" + "\nSupported commands are:\n" + " module show information on module \n" + " imports show import list of module \n" + " node show information on node \n" + " compliance show information on compliance node \n" + " children show children list of node \n" + " type show information on type \n" + " macro show information on macro \n"); +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smiquery " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smiquery"); } +static void preload(char *module) { smiLoadModule(module); } + + + +int main(int argc, char *argv[]) +{ + SmiModule *module; + SmiNode *node, *node2, *child, *parent; + SmiType *type, *parenttype; + SmiMacro *macro; + SmiNamedNumber *nn; + SmiRange *range; + SmiImport *import; + SmiRevision *revision; + SmiOption *option; + SmiRefinement *refinement; + SmiElement *element; + char *command, *name, *p; + int flags, i; + char s1[40], s2[40]; + + static optStruct opt[] = { + /* short long type var/func special */ + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ + }; + + for (i = 1; i < argc; i++) + if ((strstr(argv[i], "-c") == argv[i]) || + (strstr(argv[i], "--config") == argv[i])) break; + if (i == argc) + smiInit("smiquery"); + else + smiInit(NULL); + + flags = smiGetFlags(); + + optParseOptions(&argc, argv, opt, 0); + + if (!(argc % 2)) { + usage(); + return 1; + } + + for (i = 1; i < argc; i +=2) { + + command = argv[i]; + name = argv[i+1]; + + if (!strcmp(command, "module")) { + module = smiGetModule(name); + if (module) { + node = smiGetModuleIdentityNode(module); + printf(" Module: %s\n", format(module->name)); + if (module->path) + printf(" Pathname: %s\n", module->path); + if (node) + printf(" Object: %s\n", + smiRenderNode(node, SMI_RENDER_ALL)); + if (module->organization) + printf("Organization: %s\n", format(module->organization)); + if (module->contactinfo) + printf(" ContactInfo: %s\n", format(module->contactinfo)); + if (module->description) + printf(" Description: %s\n", format(module->description)); + if (module->reference) + printf(" Reference: %s\n", format(module->reference)); + printf(" Language: %s\n", smiStringLanguage(module->language)); + printf(" Conformance: %d\n", module->conformance); + printf(" Loaded: %s\n", smiIsLoaded(name) ? "yes" : "no"); + + for(revision = smiGetFirstRevision(module); + revision ; revision = smiGetNextRevision(revision)) { + printf(" Revision: %s", ctime(&revision->date)); + if (revision->description) + printf(" Description: %s\n", format(revision->description)); + } + } + } else if (!strcmp(command, "imports")) { + module = smiGetModule(name); + if (module && smiGetFirstImport(module)) { + printf(" Imports:"); + for(import = smiGetFirstImport(module); import ; ) { + printf(" %s::%s", import->module, import->name); + import = smiGetNextImport(import); + if (import) { + printf("\n "); + } + } + printf("\n"); + } + } else if (!strcmp(command, "node")) { + node = smiGetNode(NULL, name); + if (node) { + parent = smiGetParentNode(node); + } + if (node) { + type = smiGetNodeType(node); + printf(" MibNode: %s\n", smiRenderNode(node, SMI_RENDER_ALL)); + printf(" OID: %s\n", smiRenderOID(node->oidlen, node->oid, + 0)); + if (parent) + printf(" ParentNode: %s\n", + smiRenderNode(parent, SMI_RENDER_ALL)); + if (type) + printf(" Type: %s\n", + smiRenderType(type, SMI_RENDER_ALL)); + if (node->value.basetype != SMI_BASETYPE_UNKNOWN) + printf(" Default: %s\n", smiRenderValue(&node->value, type, + SMI_RENDER_ALL)); + if (node->decl != SMI_DECL_UNKNOWN) + printf(" Declaration: %s\n", smiStringDecl(node->decl)); + printf(" NodeKind: %s\n", smiStringNodekind(node->nodekind)); + if (node->nodekind == SMI_NODEKIND_ROW) { + printf (" Creatable: %s\n", node->create ? "yes" : "no"); + printf (" Implied: %s\n", node->implied ? "yes" : "no"); + } + switch (node->nodekind) { + case SMI_NODEKIND_ROW: p = "Index"; break; + case SMI_NODEKIND_COMPLIANCE: p = "Mandatory"; break; + case SMI_NODEKIND_CAPABILITIES: p = "Includes"; break; + case SMI_NODEKIND_GROUP: p = "Members"; break; + case SMI_NODEKIND_NOTIFICATION: p = "Objects"; break; + default: p = "Elements"; + } + if (smiGetFirstElement(node)) { + printf("%12s:", p); + for(element = smiGetFirstElement(node); + element ; ) { + node2 = smiGetElementNode(element); + printf(" %s", smiRenderNode(node2, SMI_RENDER_ALL)); + element = smiGetNextElement(element); + if (element) { + printf("\n "); + } + } + printf("\n"); + } + if (node->access != SMI_ACCESS_UNKNOWN) + printf(" Access: %s\n", smiStringAccess(node->access)); + if (node->status != SMI_STATUS_UNKNOWN) + printf(" Status: %s\n", smiStringStatus(node->status)); + if (node->format) + printf(" Format: %s\n", format(node->format)); + if (node->units) + printf(" Units: %s\n", format(node->units)); + if (node->description) + printf(" Description: %s\n", format(node->description)); + if (node->reference) + printf(" Reference: %s\n", format(node->reference)); + } + } else if (!strcmp(command, "compliance")) { + node = smiGetNode(NULL, name); + if (node) { + if (smiGetFirstElement(node)) { + printf(" Mandatory:"); + for(element = smiGetFirstElement(node); + element ; ) { + node2 = smiGetElementNode(element); + printf(" %s", smiRenderNode(node2, SMI_RENDER_ALL)); + element = smiGetNextElement(element); + if (element) { + printf("\n "); + } + } + printf("\n"); + } + if (smiGetFirstOption(node)) { + for(option = smiGetFirstOption(node); option ;) { + node2 = smiGetOptionNode(option); + printf(" Option: %s\n", + smiRenderNode(node2, SMI_RENDER_ALL)); + if (option->description) + printf(" Description: %s\n", + format(option->description)); + option = smiGetNextOption(option); + } + } + if (smiGetFirstRefinement(node)) { + for(refinement = smiGetFirstRefinement(node); + refinement ; + refinement = smiGetNextRefinement(refinement)) { + node2 = smiGetRefinementNode(refinement); + printf(" Refinement: %s\n", + smiRenderNode(node2, SMI_RENDER_ALL)); + type = smiGetRefinementType(refinement); + if (type) { + printf(" Type: %s\n", + smiRenderType(type, SMI_RENDER_ALL)); + } + type = smiGetRefinementWriteType(refinement); + if (type) { + module = smiGetTypeModule(type); + printf(" Write-Type: %s\n", + smiRenderType(type, SMI_RENDER_ALL)); + } + if (refinement->access != SMI_ACCESS_UNKNOWN) { + printf(" Access: %s\n", + smiStringAccess(refinement->access)); + } + if (refinement->description) + printf(" Description: %s\n", + format(refinement->description)); + } + } + } + } else if (!strcmp(command, "children")) { + node = smiGetNode(NULL, name); + if (node && smiGetFirstChildNode(node)) { + printf(" Children:"); + for(child = smiGetFirstChildNode(node); + child ; ) { + printf(" %s", smiRenderNode(child, SMI_RENDER_ALL)); + child = smiGetNextChildNode(child); + if (child) { + printf("\n "); + } + } + printf("\n"); + } + } else if (!strcmp(command, "type")) { + p = strrchr(name, ':'); + if (!p) p = strrchr(name, '.'); + if (!p) p = strrchr(name, '!'); + if (p) { + p++; + } else { + p = name; + } + if (islower((int)name[0]) || isdigit((int)name[0]) || + !isupper((int)p[0])) { + node = smiGetNode(NULL, name); + if (node) { + type = smiGetNodeType(node); + } else { + type = smiGetType(NULL, name); + } + } else { + type = smiGetType(NULL, name); + } + if (type) { + parenttype = smiGetParentType(type); + printf(" Type: %s\n", smiRenderType(type, SMI_RENDER_ALL)); + printf(" Basetype: %s\n", smiStringBasetype(type->basetype)); + if (parenttype) + printf(" Parent Type: %s\n", + smiRenderType(parenttype, SMI_RENDER_ALL)); + if (type->value.basetype != SMI_BASETYPE_UNKNOWN) + printf(" Default: %s\n", smiRenderValue(&type->value, type, + SMI_RENDER_ALL)); + if ((type->basetype == SMI_BASETYPE_ENUM) || + (type->basetype == SMI_BASETYPE_BITS)) { + if (smiGetFirstNamedNumber(type)) { + printf(" Numbers:"); + for(nn = smiGetFirstNamedNumber(type); + nn ; nn = smiGetNextNamedNumber(nn)) { + printf(" %s(%ld)", + nn->name, nn->value.value.integer32); + } + printf("\n"); + } + } else { + if (smiGetFirstRange(type)) { + printf(" Ranges:"); + for(range = smiGetFirstRange(type); + range ; range = smiGetNextRange(range)) { + strcpy(s1, smiRenderValue(&range->minValue, type, 0)); + strcpy(s2, smiRenderValue(&range->maxValue, type, 0)); + printf(" %s", s1); + if (strcmp(s1, s2)) printf("..%s", s2); + } + printf("\n"); + } + } + printf(" Declaration: %s\n", smiStringDecl(type->decl)); + if (type->status != SMI_STATUS_UNKNOWN) + printf(" Status: %s\n", smiStringStatus(type->status)); + if (type->format) + printf(" Format: %s\n", format(type->format)); + if (type->units) + printf(" Units: %s\n", format(type->units)); + if (type->description) + printf(" Description: %s\n", format(type->description)); + if (type->reference) + printf(" Reference: %s\n", format(type->reference)); + } + } else if (!strcmp(command, "macro")) { + macro = smiGetMacro(NULL, name); + if (macro) { + printf(" Macro: %s\n", format(macro->name)); + if (macro->status != SMI_STATUS_UNKNOWN) + printf(" Status: %s\n", smiStringStatus(macro->status)); + if (macro->description) + printf(" Description: %s\n", format(macro->description)); + if (macro->reference) + printf(" Reference: %s\n", format(macro->reference)); + } + } else { + usage(); + return 1; + } + } + + smiExit(); + + return 0; +} diff --git a/tools/smistrip.1 b/tools/smistrip.1 new file mode 100644 index 0000000..db0a4d9 --- /dev/null +++ b/tools/smistrip.1 @@ -0,0 +1,73 @@ +.\" +.\" $Id: smistrip.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smistrip 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smistrip \- extract MIB or PIB modules from text files, like RFCs or I-Ds +.SH SYNOPSIS +.B smistrip +[ +.B "-Vhn" +] [ +.BI "-d " dir +] [ +.BI "-m " module +] +[ +.I file(s) +] +.SH DESCRIPTION +The \fBsmistrip\fP program is used to extract MIB and PIB module +files from ASCII documents like RFCs or Internet Drafts. Modules are +identified by a starting ASN.1 DEFINITIONS clause and the matching +END clause. The output is written to files named by the modules' names. +.SH OPTIONS +.TP +.B "-V" +Show the smistrip version and exit. +.TP +.B "-h" +Show a help text and exit. +.TP +.B "-n" +Print only what would be extracted, but do not write any output file. +.TP +.BI "-d " dir +Write module file(s) to directory \fIdir\fP instead of the current +working directory. +.TP +.BI "-m " module +Extract only the module \fImodule\fP instead of all modules found in +the input file(s). +.TP +.I file(s) +The input text file(s) from which modules will be extracted. If no file +is given, input is read from stdin. +.PP +Note that \fBsmistrip\fP tries to be smart about locating module start +and end, detecting page breaks and blank lines near page breaks. It +also tries to cut off blank prefixing columns from all lines of a +modules. However, there might by documents that cannot be parsed +correctly by \fBsmistrip\fP and probably produce incorrect output. +You might consider to use \fBsmilint\fP on every extracted module file +to check its syntactical correctness. +.SH "EXAMPLE" +This example extracts only the module IPV6-MIB from the file rfc2465 and +writes it to the directory /usr/local/tmp. +.nf + $ smistrip -d /usr/local/tmp -m IPV6-MIB rfc2465 +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHOR" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smistrip.1.in b/tools/smistrip.1.in new file mode 100644 index 0000000..db0a4d9 --- /dev/null +++ b/tools/smistrip.1.in @@ -0,0 +1,73 @@ +.\" +.\" $Id: smistrip.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smistrip 1 "August 10, 2004" "IBR" "SMI Tools" +.SH NAME +smistrip \- extract MIB or PIB modules from text files, like RFCs or I-Ds +.SH SYNOPSIS +.B smistrip +[ +.B "-Vhn" +] [ +.BI "-d " dir +] [ +.BI "-m " module +] +[ +.I file(s) +] +.SH DESCRIPTION +The \fBsmistrip\fP program is used to extract MIB and PIB module +files from ASCII documents like RFCs or Internet Drafts. Modules are +identified by a starting ASN.1 DEFINITIONS clause and the matching +END clause. The output is written to files named by the modules' names. +.SH OPTIONS +.TP +.B "-V" +Show the smistrip version and exit. +.TP +.B "-h" +Show a help text and exit. +.TP +.B "-n" +Print only what would be extracted, but do not write any output file. +.TP +.BI "-d " dir +Write module file(s) to directory \fIdir\fP instead of the current +working directory. +.TP +.BI "-m " module +Extract only the module \fImodule\fP instead of all modules found in +the input file(s). +.TP +.I file(s) +The input text file(s) from which modules will be extracted. If no file +is given, input is read from stdin. +.PP +Note that \fBsmistrip\fP tries to be smart about locating module start +and end, detecting page breaks and blank lines near page breaks. It +also tries to cut off blank prefixing columns from all lines of a +modules. However, there might by documents that cannot be parsed +correctly by \fBsmistrip\fP and probably produce incorrect output. +You might consider to use \fBsmilint\fP on every extracted module file +to check its syntactical correctness. +.SH "EXAMPLE" +This example extracts only the module IPV6-MIB from the file rfc2465 and +writes it to the directory /usr/local/tmp. +.nf + $ smistrip -d /usr/local/tmp -m IPV6-MIB rfc2465 +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.PP +.BR smilint "(1)" +.SH "AUTHOR" +(C) 1999-2004 F. Strauss, TU Braunschweig, Germany +.br +(C) 2002 M. Bunkus, TU Braunschweig, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smistrip.in b/tools/smistrip.in new file mode 100644 index 0000000..4e7d3bf --- /dev/null +++ b/tools/smistrip.in @@ -0,0 +1,187 @@ +#!@SH@ +# +# smistrip -- +# +# Extract MIB and PIB modules from text files, like RFCs or I-Ds. +# +# Copyright (c) 1999 Frank Strauss, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# $Id: smistrip.in 3434 2006-04-07 07:02:51Z strauss $ +# +# NOTE, that this script relies on awk (tested with GNU awk) and getopts +# (shell builtin like in bash or standalone). +# + +AWK=@AWK@ +GETOPTS=getopts +VERSION=@VERSION@ + + +do_version () { + echo "smistrip $VERSION" +} + + + +do_usage () { + echo "Usage: smistrip [-Vhn] [-i dir] [-d dir] [-m module] file1 [file2 [...]]" + echo "-V show version and license information" + echo "-h show usage information" + echo "-n do not write module files" + echo "-i dir try to read files from directory dir" + echo "-d dir write module to directory dir" + echo "-m module strip only the specified module" + echo "file1 ... input files to parse (RFCs, I-Ds, ...)" +} + + + +do_strip () { + if [ "$indir" ] ; then + FILE="$indir/$1" + else + FILE="$1" + fi + if [ ! -f "$FILE" -a -f "$FILE.gz" ] ; then + FILE="$FILE.gz" + fi + echo "$FILE" | grep -q '\.gz$' + if [ $? -ne 0 ] ; then + CMD=cat + else + CMD=zcat + fi + + $CMD "$FILE" | \ + tr -d '\015' | \ + grep -i -v '^[ ]*Internet[ \-]Draft' | \ + $AWK -vtest="$test" -vdir="$dir" -vsingle="$single" ' + + # start of module + /^[ \t]*[A-Za-z0-9-]* *(PIB-)?DEFINITIONS *(::=)? *(BEGIN)? *$/ { + module = $1 + skip = 9 + skipped = -1 + macro = 0 + n = 0 + } + + # process each line + { + # at the end of a page we go back one line (which is expected to + # be a separator line), and start the counter skipped to skip the + # next few lines. + if ($0 ~ /\[[pP]age [iv0-9]*\] */) { + # some drafts do not use that separator line. so keep it if + # there are non-blank characters. + if (!(line[n] ~ /^[ \t]*$/)) { print "WARNING: the line ::"line[n]":: should be a separator before a page break. It was kept. " ; n-- } + skipped = 0 + } + + # if we are skipping... + if (skipped >= 0) { + skipped++ + + # if we have skipped enough lines to the top of the next page... + if (skipped >= skip) { + skipped = -1 + } else { + + # finish skipping, if we find a non-empty line, but not before + # we have skipped four lines. remember the miminum of lines + # we have ever skipped to keep empty lines in a modules that + # appear near the top of a page. + if ((skipped >= 4) && ($0 ~ /[^ \t]/)) { + if (skipped < skip) { skip = skipped } + skipped = -1 + } + } + } + + # so, if we are not skipping and inside a module, remember the line. + if ((skipped == -1) && (length(module) > 0)) { + line[n++] = $0 + } + } + + # remember when we enter a macro definition + /^[ \t]*[A-Za-z0-9-]* *MACRO *::=/ { + macro = 1 + } + + # end of module + /^[ \t]*END[ \t]*$/ { + if (macro == 0) { + if ((length(single) == 0) || (single == module)) { + strip = 99 + for (i=0 ; i < n ; i++) { + # find the minimum column that contains non-blank characters + # in order to cut a blank prefix off. Ignore lines that only + # contain white spaces. + if (!(line[i] ~ /^[ \t]*$/)) { + p = match(line[i], "[^ ]") + if ((p < strip) && (length(line[i]) > p)) { strip = p } + } + } + + if (test != "1") { + if (dir) { + f = dir"/"module + } else { + f = module + } + for (i=0 ; i < n ; i++) { + print substr(line[i], strip) >f + } + } + + print module ": " n " lines." + } + module = "" + } else { + macro = 0 + } + } + ' +} + + + +while $GETOPTS Vhnm:i:d: c ; do + case $c in + n) test=1 + ;; + m) single=$OPTARG + ;; + i) indir=$OPTARG + ;; + d) dir=$OPTARG + ;; + h) do_usage + exit 0 + ;; + V) do_version + exit 0 + ;; + *) do_usage + exit 1 + ;; + esac +done + +shift `expr $OPTIND - 1` + + + +if [ $# -eq 0 ] ; then + do_strip - +else + for f in "$@" ; do + do_strip "$f" + done +fi + +exit 0 diff --git a/tools/smixlate.1 b/tools/smixlate.1 new file mode 100644 index 0000000..5bfe6b7 --- /dev/null +++ b/tools/smixlate.1 @@ -0,0 +1,84 @@ +.\" +.\" $Id: smixlate.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smixlate 1 "June 18, 2006" "IUB" "SMI Tools" +.SH NAME +smixlate \- translate SMI/SPPI identifiers +.SH SYNOPSIS +.B smixlate +[ +.B "-Vhm" +] [ +.BI "-c " file +] [ +.BI "-p " module +] [ +.BI "-l " level +] +.I "module(s)" +.SH DESCRIPTION + +The \fBsmixlate\fP program is used to translate identifiers and +especially OIDs into a more human readable format. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smixlate version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-r, --recursive\fP +Report errors and warnings also for recursively imported modules. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-a, --all\fP +Replace all OIDs including OID prefixes. Without this option, smixlate +will only translate OIDs with a corresponding notification, scalar, +column, row, or table definition. +.TP +\fB-f, --format\fP +Preserve the input format as much as possible by inserting/removing +white space characters. +.TP +.I module(s) +These are the modules to be loaded for the subsequent translation. If +a module argument represents a path name (identified by containing at +least one dot or slash character), this is assumed to be the exact +file to read. Otherwise, if a module is identified by its plain module +name, it is searched according to libsmi internal rules. See +\fBsmi_config(3)\fP for more details. +.SH "EXAMPLE" +This example translates numeric OIDs in the input text into a more +human readable format. +.nf + + $ echo "what is this oid? 1.3.6.1.2.1.2.2.1.3" | \ + ./smixlate -l 0 /usr/local/share/mibs/ietf/* + what is this oid? ifType + $ + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHORS" +(C) 2006-2006 J. Schoenwaelder, International University Bremen, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smixlate.1.in b/tools/smixlate.1.in new file mode 100644 index 0000000..5bfe6b7 --- /dev/null +++ b/tools/smixlate.1.in @@ -0,0 +1,84 @@ +.\" +.\" $Id: smixlate.1.in 1676 2004-08-10 10:58:12Z strauss $ +.\" +.TH smixlate 1 "June 18, 2006" "IUB" "SMI Tools" +.SH NAME +smixlate \- translate SMI/SPPI identifiers +.SH SYNOPSIS +.B smixlate +[ +.B "-Vhm" +] [ +.BI "-c " file +] [ +.BI "-p " module +] [ +.BI "-l " level +] +.I "module(s)" +.SH DESCRIPTION + +The \fBsmixlate\fP program is used to translate identifiers and +especially OIDs into a more human readable format. +.SH OPTIONS +.TP +\fB-V, --version\fP +Show the smixlate version and exit. +.TP +\fB-h, --help\fP +Show a help text and exit. +.TP +\fB-r, --recursive\fP +Report errors and warnings also for recursively imported modules. +.TP +\fB-c \fIfile\fB, --config=\fIfile\fP +Read \fIfile\fP instead of any other (global and user) +configuration file. +.TP +\fB-p \fImodule\fB, --preload=\fImodule\fP +Preload the module \fImodule\fP before reading the main +module(s). This may be helpful if an incomplete main module misses to +import some definitions. +.TP +\fB-l \fIlevel\fB, --level=\fIlevel\fP +Report errors and warnings up to the given severity \fIlevel\fP. See +the smilint(1) manual page for a description of the error levels. The +default error level is 3. +.TP +\fB-a, --all\fP +Replace all OIDs including OID prefixes. Without this option, smixlate +will only translate OIDs with a corresponding notification, scalar, +column, row, or table definition. +.TP +\fB-f, --format\fP +Preserve the input format as much as possible by inserting/removing +white space characters. +.TP +.I module(s) +These are the modules to be loaded for the subsequent translation. If +a module argument represents a path name (identified by containing at +least one dot or slash character), this is assumed to be the exact +file to read. Otherwise, if a module is identified by its plain module +name, it is searched according to libsmi internal rules. See +\fBsmi_config(3)\fP for more details. +.SH "EXAMPLE" +This example translates numeric OIDs in the input text into a more +human readable format. +.nf + + $ echo "what is this oid? 1.3.6.1.2.1.2.2.1.3" | \ + ./smixlate -l 0 /usr/local/share/mibs/ietf/* + what is this oid? ifType + $ + +.fi +.SH "SEE ALSO" +The +.BR libsmi (3) +project is documented at +.BR "http://www.ibr.cs.tu-bs.de/projects/libsmi/" "." +.SH "AUTHORS" +(C) 2006-2006 J. Schoenwaelder, International University Bremen, Germany +.br +and contributions by many other people. +.br diff --git a/tools/smixlate.c b/tools/smixlate.c new file mode 100644 index 0000000..d4d2b54 --- /dev/null +++ b/tools/smixlate.c @@ -0,0 +1,328 @@ +/* + * smixlate.c -- + * + * Translate OIDs located in the input stream. + * + * Copyright (c) 2006 Juergen Schoenwaelder, International University Bremen. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: smilint.c 1867 2004-10-06 13:45:31Z strauss $ + */ + +#include + +#include +#include +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_WIN_H +#include "win.h" +#endif + +#include "smi.h" +#include "shhopt.h" +#include "dstring.h" + +static int flags; +static int aFlag = 0; /* translate all OIDs */ +static int fFlag = 0; /* preserve formatting */ + +static void translate(dstring_t *token, dstring_t *subst) +{ + SmiNode *smiNode; + SmiSubid oid[256]; + unsigned int oidlen = 0; + unsigned int i; + char *p; + + assert(token && subst); + + dstring_truncate(subst, 0); + dstring_assign(subst, dstring_str(token)); + + for (oidlen = 0, p = strtok(dstring_str(token), ". "); p; + oidlen++, p = strtok(NULL, ". ")) { + oid[oidlen] = strtoul(p, NULL, 0); + } + + smiNode = smiGetNodeByOID(oidlen, oid); + if (smiNode && + (aFlag + || smiNode->nodekind == SMI_NODEKIND_SCALAR + || smiNode->nodekind == SMI_NODEKIND_COLUMN + || smiNode->nodekind == SMI_NODEKIND_NOTIFICATION + || smiNode->nodekind == SMI_NODEKIND_TABLE + || smiNode->nodekind == SMI_NODEKIND_ROW)) { + dstring_assign(subst, smiNode->name); + for (i = smiNode->oidlen; i < oidlen; i++) { + dstring_append_printf(subst, ".%d", oid[i]); + } + } +} + + +static void process(FILE *stream) +{ + int c, space = 0; + enum { TXT, NUM, NUMDOT, NUMDOTNUM, OID, OIDDOT, EATSPACE } state = TXT; + dstring_t *token, *subst; + + token = dstring_new(); + subst = dstring_new(); + + if (! token || ! subst) { + return; + } + + /* + * Shall we require iswhite() or ispunct() before and after the + * OID? + * + * TODO: - translate instance identifier to something meaningful + * (e.g. foobar["name",32]) where possible + * - generate warnings if instance identifier are incomplete + * - provide a reverse translation service (-x) (but this is + * more complex since it is unclear how to identify names + * - make the white space magic optional + */ + + while ((c = fgetc(stream)) != EOF) { + switch (state) { + case TXT: + fputs(dstring_str(token), stdout); + dstring_truncate(token, 0); + if (isdigit(c) && c >= '0' && c <= '2') { + dstring_append_char(token, (char) c); + state = NUM; + } else { + fputc(c, stdout); + fflush(stdout); + } + break; + case NUM: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } else if (c == '.') { + dstring_append_char(token, (char) c); + state = NUMDOT; + } else { + dstring_append_char(token, (char) c); + state = TXT; + } + break; + case NUMDOT: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + state = NUMDOTNUM; + } else { + dstring_append_char(token, (char) c); + state = TXT; + } + break; + case NUMDOTNUM: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } if (c == '.') { + dstring_append_char(token, (char) c); + state = OID; + } else { + dstring_append_char(token, (char) c); + state = TXT; + } + break; + case OID: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } else if (c == '.') { + dstring_append_char(token, (char) c); + state = OIDDOT; + } else { + translate(token, subst); + if (fFlag) { + if (dstring_len(subst) < dstring_len(token)) { + dstring_expand(subst, dstring_len(token), ' '); + } + } + fputs(dstring_str(subst), stdout); + if (dstring_len(subst) > dstring_len(token)) { + space = dstring_len(subst) - dstring_len(token) - 1; + } else { + space = 0; + } + if (fFlag && space > 0 && c == ' ') { + state = EATSPACE; + space--; + } else { + state = TXT; + space = 0; + fputc(c, stdout); + } + dstring_truncate(token, 0); + } + break; + case OIDDOT: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + state = OID; + } else { + translate(token, subst); + fputs(dstring_str(subst), stdout); + fputc(c, stdout); + dstring_truncate(token, 0); + state = TXT; + } + break; + case EATSPACE: + if (c == ' ' && space > 0) { + space--; + } else { + state = TXT; + } + break; + } + } + + if (dstring_len(token)) { + switch (state) { + case TXT: + case NUM: + case NUMDOT: + case NUMDOTNUM: + fputs(dstring_str(token), stdout); + dstring_truncate(token, 0); + fputc(c, stdout); + fflush(stdout); + break; + case OID: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } else { + translate(token, subst); + if (fFlag) { + if (dstring_len(subst) < dstring_len(token)) { + dstring_expand(subst, dstring_len(token), ' '); + } + } + fputs(dstring_str(subst), stdout); + if (dstring_len(subst) > dstring_len(token)) { + space = dstring_len(subst) - dstring_len(token) - 1; + } else { + space = 0; + } + if (fFlag && space > 0 && c == ' ') { + space--; + } else { + space = 0; + fputc(c, stdout); + } + dstring_truncate(token, 0); + } + break; + case OIDDOT: + if (isdigit(c)) { + dstring_append_char(token, (char) c); + } else { + translate(token, subst); + fputs(dstring_str(subst), stdout); + fputc(c, stdout); + dstring_truncate(token, 0); + } + break; + case EATSPACE: + if (c == ' ' && space > 0) { + space--; + } else { + fputc(c, stdout); + } + break; + } + } +} + + + +static void usage() +{ + fprintf(stderr, + "Usage: smixlate [options] [module or path ...]\n" + " -V, --version show version and license information\n" + " -h, --help show usage information\n" + " -c, --config=file load a specific configuration file\n" + " -p, --preload=module preload \n" + " -r, --recursive print errors also for imported modules\n" + " -l, --level=level set maximum level of errors and warnings\n" + " -i, --ignore=prefix ignore errors matching prefix pattern\n" + " -I, --noignore=prefix do not ignore errors matching prefix pattern\n" + " -a, --all replace all OIDs (including OID prefixes)\n" + " -f, --format preserve formatting as much as possible\n"); +} + + + +static void help() { usage(); exit(0); } +static void version() { printf("smixlate " SMI_VERSION_STRING "\n"); exit(0); } +static void config(char *filename) { smiReadConfig(filename, "smixlate"); } +static void preload(char *module) { smiLoadModule(module); } +static void recursive() { flags |= SMI_FLAG_RECURSIVE; smiSetFlags(flags); } +static void level(int lev) { smiSetErrorLevel(lev); } +static void ignore(char *ign) { smiSetSeverity(ign, 128); } +static void noignore(char *ign) { smiSetSeverity(ign, -1); } + + + +int main(int argc, char *argv[]) +{ + int i; + + static optStruct opt[] = { + /* short long type var/func special */ + { 'a', "all", OPT_FLAG, &aFlag, 0 }, + { 'f', "format", OPT_FLAG, &fFlag, 0 }, + { 'h', "help", OPT_FLAG, help, OPT_CALLFUNC }, + { 'V', "version", OPT_FLAG, version, OPT_CALLFUNC }, + { 'c', "config", OPT_STRING, config, OPT_CALLFUNC }, + { 'p', "preload", OPT_STRING, preload, OPT_CALLFUNC }, + { 'r', "recursive", OPT_FLAG, recursive, OPT_CALLFUNC }, + { 'l', "level", OPT_INT, level, OPT_CALLFUNC }, + { 'i', "ignore", OPT_STRING, ignore, OPT_CALLFUNC }, + { 'I', "noignore", OPT_STRING, noignore, OPT_CALLFUNC }, + { 0, 0, OPT_END, 0, 0 } /* no more options */ + }; + + for (i = 1; i < argc; i++) + if ((strstr(argv[i], "-c") == argv[i]) || + (strstr(argv[i], "--config") == argv[i])) break; + if (i == argc) + smiInit("smixlate"); + else + smiInit(NULL); + + flags = smiGetFlags(); + flags |= SMI_FLAG_ERRORS; + flags |= SMI_FLAG_NODESCR; + smiSetFlags(flags); + + optParseOptions(&argc, argv, opt, 0); + + for (i = 1; i < argc; i++) { + if (smiLoadModule(argv[i]) == NULL) { + fprintf(stderr, "smixlate: cannot locate module `%s'\n", + argv[i]); + smiExit(); + exit(1); + } + } + + + process(stdin); + + smiExit(); + + return 0; +} diff --git a/win/GNUmakefile b/win/GNUmakefile new file mode 100644 index 0000000..99f7372 --- /dev/null +++ b/win/GNUmakefile @@ -0,0 +1,155 @@ +# +# GNUmakefile -- +# +# GNU Makefile for w32 VC++ environment. +# +# Copyright (c) 2000-2005 Yigal Hochberg, DMH Software. +# Copyright (c) 2000 E. Schoenfelder, Gaertner Datensysteme Braunschweig. +# Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: GNUmakefile 2409 2005-05-30 13:14:21Z strauss $ + +## +## Project directories -- these may need to be customized for your site +## +## ROOT -- top of the source tree. +## TMPDIR -- location for .obj files. +## TOOLS32 -- location of VC++ compiler installation. +## +ROOT = ./.. +TMPDIR = . +TOOLS32 = C:\PROGRA~1\MICROS~2\VC98 + +## +## Installation paths: +## +## MIBROOT -- definition for default search path (unix-style) +## MIBDIR -- same in windows style +## BINDIR -- destination for the binaries (smidump.exe, ...) +## LIBDIR -- destination for the library (smi.lib) +## +MIBROOT = c:/smi/mibs +INSTROOT = c:\smi +MIBDIR = $(INSTROOT)\mibs +BINDIR = $(INSTROOT)\bin +LIBDIR = $(INSTROOT)\lib + +## +## This include is for smidump_SOURCES definition. +## +include ../tools/Makefile.am + +## +## Visual C++ tools +## +PATH := $(TOOLS32)\bin;$(PATH) + +cc32 = cl +implib = lib +CC = $(cc32) +CFLAGS = -nologo -W3 -DYY_NO_UNISTD_H +CC_INCL = #-I$(TOOLS32)/include +AR = $(implib) +ARFLAGS = -nologo +CP = copy +RM = del +MKDIR = md + +## +## Definitions: +## +#DEBUG = -W3 -Zi -Od /Yd +INCLUDES = -I$(ROOT)/lib -I$(ROOT)/win $(CC_INCL) +DEFINES = $(DEBUG) + +## +## Library objects +## +LIBSMIOBJS = $(patsubst %.c, %.obj, $(notdir $(wildcard ../lib/*.c))) win.obj \ + shhopt.obj + +## +## Tool objects +## +SMIQUERYOBJS = smiquery.obj +SMILINTOBJS = smilint.obj +SMIDUMPOBJS = $(filter-out %.h, $(smidump_SOURCES:.c=.obj)) + +## +## Targets +## +all: libs tools + +libs: smi.lib +tools: smiquery.exe smilint.exe smidump.exe + +smi.lib: $(LIBSMIOBJS) +smiquery.exe: $(SMIQUERYOBJS) smi.lib +smilint.exe: $(SMILINTOBJS) smi.lib +smidump.exe: $(SMIDUMPOBJS) smi.lib + +clean: + del *.lib + del *.obj + del *.exe + del *.ilk + del *.pdb + del *.mdp + +install: all install-doc install-bin install-lib install-mibs + +install-doc: + $(MKDIR) $(INSTROOT) + $(CP) ..\README $(INSTROOT) + $(CP) ..\COPYING $(INSTROOT) + $(CP) README.win $(INSTROOT) + $(MKDIR) $(INSTROOT)\doc + $(CP) ..\doc\*.txt $(INSTROOT)\doc + $(CP) ..\doc\*.ps $(INSTROOT)\doc + +install-bin: + $(MKDIR) $(BINDIR) + $(CP) *.exe $(BINDIR) + +install-lib: + $(MKDIR) $(LIBDIR) + $(CP) *.lib $(LIBDIR) + +install-mibs: + $(MKDIR) $(MIBDIR) + $(MKDIR) $(MIBDIR)\iana + $(CP) ..\mibs\iana\*.* $(MIBDIR)\iana + $(MKDIR) $(MIBDIR)\ietf + $(CP) ..\mibs\ietf\*.* $(MIBDIR)\ietf + $(MKDIR) $(MIBDIR)\irtf + $(CP) ..\mibs\irtf\*.* $(MIBDIR)\irtf + $(MKDIR) $(MIBDIR)\tubs + $(CP) ..\mibs\tubs\*.* $(MIBDIR)\tubs + $(MKDIR) $(MIBDIR)\site + +## +## Generic rules +## +vpath %.c ../lib +vpath %.c ../tools + +%.obj : %.c + $(CC) $(CFLAGS) -c $(INCLUDES) $(DEFINES) -Fo$@ $< + +%.exe : + $(CC) $(CFLAGS) $(DEFINES) -o $(notdir $@) $^ + +%.lib : + $(AR) $(ARFLAGS) -out:$(notdir $@) $^ + +## +## Special compilation rules for scanner files +## +scanner-objs = scanner-smi.obj scanner-sming.obj + +$(scanner-objs) : %.obj : %.c + $(CC) -c $(CFLAGS) -D__STDC__ $(INCLUDES) $(DEFINES) -Fo$@ $< + diff --git a/win/Makefile.mingw b/win/Makefile.mingw new file mode 100644 index 0000000..72d1635 --- /dev/null +++ b/win/Makefile.mingw @@ -0,0 +1,204 @@ +# +# Makefile.mingw -- +# +# Makefile for win32 mingw environment. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: Makefile.mingw 7949 2008-03-22 16:19:33Z schoenw $ +# + +## +## Installation paths: +## +## MIBDIR -- MIB destination (let it end with /mibs; check againt config.h) +## PIBDIR -- MIB destination (let it end with /pibs; check againt config.h) +## BINDIR -- destination for the binaries (smidump.exe, ...) +## +# INSTROOT = c:\smi +INSTROOT = c/smi +MIBDIR = $(INSTROOT)/mibs +PIBDIR = $(INSTROOT)/pibs +BINDIR = $(INSTROOT)/bin +LIBDIR = $(INSTROOT)/lib + +## +## Commands: +## + +## +## Linux cross-compile is now the way to go. +## compilation within win-environment works, but you need to +## change path an options settings to get installation work. +## +# CC = gcc +# CP = copy +# RM = del +# AR = ar +# MKDIR = -mkdir + +## +## Debian Linux mingw cross-compiler version: +## +CC = i586-mingw32msvc-gcc +CP = cp +RM = rm -f +AR = i586-mingw32msvc-ar +MKDIR = -mkdir + +## +## Definitions: +## +CFLAGS = -O2 -Wall +INCLUDES = -I. -I../lib -I../tools + +## +## Global Makefile settings +## +LIBSMIOBJS = \ + win.o \ + data.o \ + check.o \ + error.o \ + util.o \ + smi.o \ + parser-smi.o \ + scanner-smi.o \ + parser-sming.o \ + scanner-sming.o \ + snprintf.o + +TOOLSOBJS = \ + smiquery.o \ + smilint.o \ + smidump.o \ + smidiff.o \ + smixlate.o \ + shhopt.o \ + fprint.o \ + fortopat.o \ + rea.o \ + dstring.o \ + dump-sming.o \ + dump-smi.o \ + dump-imports.o \ + dump-types.o \ + dump-tree.o \ + dump-mosy.o \ + dump-corba.o \ + dump-cm.o \ + dump-jax.o \ + dump-netsnmp.o \ + dump-xml.o \ + dump-identifiers.o \ + dump-metrics.o \ + dump-python.o \ + dump-perl.o \ + dump-scli.o \ + dump-xsd.o \ + dump-sppi.o \ + dump-sizes.o \ + dump-svg.o \ + dump-compliance.o \ + dump-yang.o \ + dump-boilerplate.o +# dump-smiv3.o +# dump-fig.o + +SMILIB = libsmi.a + +## +## Implicit Targets +## +VPATH = .:../lib:../tools +.c.o: + $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $< + + +## +## Targets +## +all: libs tools + +libs: $(SMILIB) + +$(SMILIB): $(LIBSMIOBJS) + $(AR) -ruv $(SMILIB) $(LIBSMIOBJS) + +tools: smiquery.exe smilint.exe smidump.exe smidiff.exe smixlate.exe + +smiquery.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) -o smiquery.exe smiquery.o shhopt.o $(SMILIB) + +smilint.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) -o smilint.exe smilint.o shhopt.o $(SMILIB) + +smidump.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) \ + -o smidump.exe smidump.o dump-sming.o dump-smi.o \ + dump-imports.o dump-types.o dump-tree.o dump-mosy.o \ + dump-corba.o dump-netsnmp.o dump-cm.o dump-jax.o dump-xml.o \ + dump-identifiers.o dump-metrics.o dump-python.o dump-perl.o \ + dump-scli.o dump-xsd.o dump-sppi.o dump-sizes.o dump-svg.o \ + dump-compliance.o dump-yang.o dump-boilerplate.o \ + shhopt.o fprint.o fortopat.o rea.o $(SMILIB) + +smidiff.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) -o smidiff.exe smidiff.o shhopt.o $(SMILIB) + +smixlate.exe: $(TOOLSOBJS) $(SMILIB) + $(CC) $(CFLAGS) -o smixlate.exe smixlate.o shhopt.o dstring.o $(SMILIB) + +clean: + $(RM) *.o + $(RM) *.a + $(RM) *.exe + +install: all install-doc install-bin install-mibs install-pibs + +install-doc: + $(MKDIR) $(INSTROOT) + $(CP) ../README $(INSTROOT) + $(CP) ../COPYING $(INSTROOT) + $(CP) ../ChangeLog $(INSTROOT) + $(CP) ../THANKS $(INSTROOT) + $(CP) ../TODO $(INSTROOT) + $(CP) README.mingw $(INSTROOT) + $(MKDIR) $(INSTROOT)/doc + -$(CP) ../doc/*.txt $(INSTROOT)/doc + -$(CP) ../doc/*.ps $(INSTROOT)/doc + -$(CP) ../doc/smi* $(INSTROOT)/doc + +install-bin: + $(MKDIR) $(BINDIR) + $(CP) *.exe $(BINDIR) + $(MKDIR) $(LIBDIR) + $(CP) *.a $(LIBDIR) + +install-mibs: + $(MKDIR) $(MIBDIR) + $(MKDIR) $(MIBDIR)/iana + -$(CP) ../mibs/iana/* $(MIBDIR)/iana + $(MKDIR) $(MIBDIR)/ietf + -$(CP) ../mibs/ietf/* $(MIBDIR)/ietf + $(MKDIR) $(MIBDIR)/irtf + -$(CP) ../mibs/irtf/* $(MIBDIR)/irtf + $(MKDIR) $(MIBDIR)/tubs + -$(CP) ../mibs/tubs/* $(MIBDIR)/tubs + $(MKDIR) $(MIBDIR)/site + -$(CP) ../mibs/site/* $(MIBDIR)/site + +install-pibs: + $(MKDIR) $(PIBDIR) + $(MKDIR) $(PIBDIR)/ietf + -$(CP) ../pibs/ietf/* $(PIBDIR)/ietf + $(MKDIR) $(PIBDIR)/tubs + -$(CP) ../pibs/tubs/* $(PIBDIR)/tubs + $(MKDIR) $(PIBDIR)/site + -$(CP) ../pibs/site/* $(PIBDIR)/site + +zip: install + (cd c; zip -r ../libsmi.zip .) + +## diff --git a/win/README.mingw b/win/README.mingw new file mode 100644 index 0000000..96f685d --- /dev/null +++ b/win/README.mingw @@ -0,0 +1,78 @@ + +LIBSMI NOTES FOR NATIVE WIN32 SUPPORT USING MINGW +================================================= + +@(#) $Id: README.mingw 7800 2008-02-27 13:55:53Z schoenw $ + +Mingw32 is a gcc based environment allowing to build free Win32 +executables. +URL:ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/ + +There are two possible setups. First, you can install the mingw +toolset on a Win32 system and compile the source code. The second +option is to install a mingw cross-compiler on Unix and to use a Unix +box for compilation. The Debian Linux distribution has mingw packages +which make this pretty easy. + + +USING MINGW ON WIN32 +==================== + +Fetch and install gcc-2.95.2-crtdll.exe or whatever the latest mingw +distribution is. Set your command.com PATH to c:\mingw\bin;%PATH% (or +whereever you have installed this package). + +To compile simply run + make -f Makefile.mingw +and to install a + make -f Makefile.mingw install +should do what you expect and + make -f Makefile.mingw zip +creates libsmi.zip ready to upload on the FTP server. + +Default path's are c:/smi/mibs/... for the MIB-files and c:/smi/bin +for the tools (smidump.exe, ...). + +Globalconfig is defined as c:/smi/smi.conf. + + +USING MINGW ON DEBIAN LINUX +=========================== + +Install the mingw packages. Edit the Makefile.mingw to set the +compiler and so on. There is already a template in Makefile.mingw. To +compile simply run: + + make -f Makefile.mingw + +Installation probably requires some more tweaking of the +Makefile.mingw since it was originally written for the Win32 +environment. + + +TODO's AND KNOWN PROBLEMS +========================= + +- The version define is hardwired in config.h. + +- The scanner, parser and the smi.h source have to be created within + a Unix or cygnus environment. + +- The SMIPATH separator character is the Windows style ; and not the + Unix style : . + +- Should use configure and not a handmade Makefile. + + +CONTRIBUTORS +============ + +The mingw support was contributed by: + + Erik Schoenfelder + Juergen Schoenwaelder + +--- +There are more things in heaven and earth, +Horatio, than are dreamt of in your philosophy. + -- Wm. Shakespeare, "Hamlet" diff --git a/win/README.win b/win/README.win new file mode 100644 index 0000000..c2eafef --- /dev/null +++ b/win/README.win @@ -0,0 +1,104 @@ + +LIBSMI NOTES FOR NATIVE WIN32 SUPPORT +===================================== + +@(#) $Id: README.win 8079 2008-04-17 18:12:48Z schoenw $ + +This directory contains some help to compile the libsmi and associated +tools on a Win32 platform (Windows 95, 98, 2000, NT) with the native +Microsoft Visual C++ compiler. The makefile has been tested with VC++ +6.0, but later versions should work very well too. + +An alternative GNUmakefile can be used with GNU make program. You +will need the GNU make "gmake.exe" for Win32 platform. + +There is a separate file README.mingw which explains how the libsmi +package can be compiled on Win32 platforms using the mingw version +of gcc. + + +Installation +============ + +(1) Set MSVC version used in ./config.nmake. Check the compiler path + macro TOOLS32 in ./config.nmake for the specific msvc installation. + +(2) To compile simply run + + nmake + +(3) and to install a + + nmake install + +should do what you expect. The default path's are c:\smi\mibs\... for +the MIB-files and c:\smi\bin for the tools (smidump.exe, ...). The +global configuration file is expected to be in c:\smi\smi.conf. + + +Alternative build with GNU make +=============================== + +GNU make uses GNUmakefile provided in this directory. + +(1) Make sure the compiler (cl.exe) is in PATH + +(2) To build simply run: + + gmake + + + +If you grabbed the CVS version and some files seems to be missing: +================================================================== + +You may generate these files on another platform (Linux seems to work +fine) by running: + + cd libsmi ## the sources from the CVS archive + ./autogen.sh ## generates configure script an runs it + cd lib + make errormacros.h parser-smi.c parser-sming.c \ + scanner-smi.c scanner-sming.c smi.h + cd ../tools + make dump-svg-script.h + + + +COMMENTS: +========= + +- The 64 bit integer types (unsigned and signed) are simply replaced + by their 64bit _int64 msvc counterparts. They work ok. see related + definitions ./config.h + +- The compiler path in ./config.nmake is hardwired (TOOLS32) + +- The installation directories are hardwired in config.h.in + +- Scanner and parser C files, errormacros.h and smi.h have been created + within a Unix environment and integrated with the distribution. If + you want to re-build them on a windows system you can use cygwin. + +- The default SMIPATH separator character is the Windows style `;' and + not the Unix style `:'. It can be changed using the + --with-pathseparator=C configure option. + + +FURTHER INFORMATION +=================== + +You may find further information online, along with the subscription +information on the libsmi mailing list at + + http://www.ibr.cs.tu-bs.de/projects/libsmi/. + + + Erik Schoenfelder + Juergen Schoenwaelder + Yigal Hochberg + + +--- + you should be afraid to use KDE because RMS might come to your + house and cleave your monitor with an axe or something :) diff --git a/win/config.h b/win/config.h new file mode 100644 index 0000000..e6e0856 --- /dev/null +++ b/win/config.h @@ -0,0 +1,89 @@ +/* + * config.h. Generated manually for windows / vc++ 6.0 + * + * @(#) $Id: config.h.in 8079 2008-04-17 18:12:48Z schoenw $ + */ + +/* Define if the SMIv1/v2 parser shall be active. */ +#define BACKEND_SMI + +/* Define if the SMIng parser shall be active. */ +#define BACKEND_SMING + +/* The default error level at libsmi initialization. */ +#define DEFAULT_ERRORLEVEL 3 + +/* The maximum module import recursion depth. */ +#define MAX_LEX_DEPTH 30 + +/* The full pathname of the global configuration file. */ +#define DEFAULT_GLOBALCONFIG "c:/smi/smi.conf" + +/* The basename of the per-user configuration file searched in $HOME. */ +#define DEFAULT_USERCONFIG ".smirc" + +/* The default search path to lookup SMI module files. */ +#define DEFAULT_SMIPATH "c:/smi/mibs/ietf;c:/smi/mibs/iana;c:/smi/mibs/irtf;c:/smi/mibs/site;c:/smi/mibs/tubs" + +/* The default path separator character. */ +#define PATH_SEPARATOR ';' + +/* The default path separator character. */ +#define DIR_SEPARATOR '\\' + +/* The 64 bit integer types, their formats, and their min/max values. */ +#ifdef _MSC_VER /* msvc: max/min are defined in include/limits.h */ +#define UINT64_FORMAT "%I64u" +#define INT64_FORMAT "%I64d" +#define LIBSMI_UINT64_MAX _UI64_MAX +#define LIBSMI_INT64_MIN _I64_MIN +#define LIBSMI_INT64_MAX _I64_MAX +#else +#define UINT64_FORMAT "%llu" +#define INT64_FORMAT "%lld" +#define LIBSMI_UINT64_MAX 18446744073709551615ULL +#define LIBSMI_INT64_MIN -9223372036854775808LL +#define LIBSMI_INT64_MAX 9223372036854775807LL +#endif + +/* Define if dmalloc.h is present and shall be used. */ +#undef HAVE_DMALLOC_H + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if getopt.h (argv[] option parser) is present. */ +#undef HAVE_GETOPT_H + +/* Define if pwd.h (/etc/passwd database) is present. */ +#undef HAVE_PWD_H + +/* Define if the string-to-long-long function is present in libc. */ +#undef HAVE_STRTOLL + +/* Define if the string-to-quad function (BSD) is present in libc. */ +#undef HAVE_STRTOQ + +/* Define if the string-to-unsigned-long-long function is present in libc. */ +#undef HAVE_STRTOULL + +/* Define if the string-to-unsigned-quad function (BSD) is present in libc. */ +#undef HAVE_STRTOUQ + +/* Define if the timegm() function is present in libc. */ +#undef HAVE_TIMEGM + +/* Define if you have the snprintf function. */ +#define HAVE_SNPRINTF 1 + +/* Define if you have the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define if the win.h header file is present. */ +#define HAVE_WIN_H 1 + +/* Name of package */ +#define PACKAGE "libsmi" + +/* Version number of package */ +#define VERSION "0.4.8" diff --git a/win/config.h.in b/win/config.h.in new file mode 100644 index 0000000..8451fda --- /dev/null +++ b/win/config.h.in @@ -0,0 +1,89 @@ +/* + * config.h. Generated manually for windows / vc++ 6.0 + * + * @(#) $Id: config.h.in 8079 2008-04-17 18:12:48Z schoenw $ + */ + +/* Define if the SMIv1/v2 parser shall be active. */ +#define BACKEND_SMI + +/* Define if the SMIng parser shall be active. */ +#define BACKEND_SMING + +/* The default error level at libsmi initialization. */ +#define DEFAULT_ERRORLEVEL 3 + +/* The maximum module import recursion depth. */ +#define MAX_LEX_DEPTH 30 + +/* The full pathname of the global configuration file. */ +#define DEFAULT_GLOBALCONFIG "c:/smi/smi.conf" + +/* The basename of the per-user configuration file searched in $HOME. */ +#define DEFAULT_USERCONFIG ".smirc" + +/* The default search path to lookup SMI module files. */ +#define DEFAULT_SMIPATH "c:/smi/mibs/ietf;c:/smi/mibs/iana;c:/smi/mibs/irtf;c:/smi/mibs/site;c:/smi/mibs/tubs" + +/* The default path separator character. */ +#define PATH_SEPARATOR ';' + +/* The default path separator character. */ +#define DIR_SEPARATOR '\\' + +/* The 64 bit integer types, their formats, and their min/max values. */ +#ifdef _MSC_VER /* msvc: max/min are defined in include/limits.h */ +#define UINT64_FORMAT "%I64u" +#define INT64_FORMAT "%I64d" +#define LIBSMI_UINT64_MAX _UI64_MAX +#define LIBSMI_INT64_MIN _I64_MIN +#define LIBSMI_INT64_MAX _I64_MAX +#else +#define UINT64_FORMAT "%llu" +#define INT64_FORMAT "%lld" +#define LIBSMI_UINT64_MAX 18446744073709551615ULL +#define LIBSMI_INT64_MIN -9223372036854775808LL +#define LIBSMI_INT64_MAX 9223372036854775807LL +#endif + +/* Define if dmalloc.h is present and shall be used. */ +#undef HAVE_DMALLOC_H + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if getopt.h (argv[] option parser) is present. */ +#undef HAVE_GETOPT_H + +/* Define if pwd.h (/etc/passwd database) is present. */ +#undef HAVE_PWD_H + +/* Define if the string-to-long-long function is present in libc. */ +#undef HAVE_STRTOLL + +/* Define if the string-to-quad function (BSD) is present in libc. */ +#undef HAVE_STRTOQ + +/* Define if the string-to-unsigned-long-long function is present in libc. */ +#undef HAVE_STRTOULL + +/* Define if the string-to-unsigned-quad function (BSD) is present in libc. */ +#undef HAVE_STRTOUQ + +/* Define if the timegm() function is present in libc. */ +#undef HAVE_TIMEGM + +/* Define if you have the snprintf function. */ +#define HAVE_SNPRINTF 1 + +/* Define if you have the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define if the win.h header file is present. */ +#define HAVE_WIN_H 1 + +/* Name of package */ +#define PACKAGE "libsmi" + +/* Version number of package */ +#define VERSION "@VERSION@" diff --git a/win/makefile b/win/makefile new file mode 100644 index 0000000..664a02c --- /dev/null +++ b/win/makefile @@ -0,0 +1,236 @@ +# +# makefile -- +# +# Makefile for VC++ (tested with version 6.0) for compiling +# libsmi and associated tools natively under Win32. +# +# Copyright (c) 2000-2008 Yigal Hochberg, DMH Software. +# Copyright (c) 2000 E. Schoenfelder, Gaertner Datensysteme Braunschweig. +# Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. +# +# See the file "COPYING" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# @(#) $Id: makefile 8084 2008-04-18 07:51:26Z schoenw $ + +!include "config.nmake" +!include + + +!IFDEF ENABLE_LIBSMI_DLL +CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL /MD +!ENDIF + + + +## +## Global makefile settings +## + +LIBSMIOBJS = \ + $(TMPDIR)\win.obj \ + $(TMPDIR)\shhopt.obj \ + $(TMPDIR)\data.obj \ + $(TMPDIR)\check.obj \ + $(TMPDIR)\error.obj \ + $(TMPDIR)\util.obj \ + $(TMPDIR)\smi.obj \ + $(TMPDIR)\parser-smi.obj \ + $(TMPDIR)\scanner-smi.obj \ + $(TMPDIR)\parser-sming.obj \ + $(TMPDIR)\scanner-sming.obj \ + $(TMPDIR)\snprintf.obj + +SMIQUERYOBJS = \ + $(TMPDIR)\smiquery.obj \ + +SMILINTOBJS = \ + $(TMPDIR)\smilint.obj \ + +SMIXLATEOBJS = \ + $(TMPDIR)\smixlate.obj \ + $(TMPDIR)\dstring.obj \ + +SMIDUMPOBJS = \ + $(TMPDIR)\smidump.obj \ + $(TMPDIR)\dump-sming.obj \ + $(TMPDIR)\dump-smi.obj \ + $(TMPDIR)\dump-imports.obj \ + $(TMPDIR)\dump-types.obj \ + $(TMPDIR)\dump-tree.obj \ + $(TMPDIR)\dump-mosy.obj \ + $(TMPDIR)\dump-corba.obj \ + $(TMPDIR)\dump-netsnmp.obj \ + $(TMPDIR)\dump-jax.obj \ + $(TMPDIR)\dump-xml.obj \ + $(TMPDIR)\dump-cm.obj \ + $(TMPDIR)\dump-metrics.obj \ + $(TMPDIR)\dump-identifiers.obj \ + $(TMPDIR)\dump-python.obj \ + $(TMPDIR)\dump-perl.obj \ + $(TMPDIR)\dump-scli.obj \ + $(TMPDIR)\dump-xsd.obj \ + $(TMPDIR)\dump-sppi.obj \ + $(TMPDIR)\dump-sizes.obj \ + $(TMPDIR)\dump-svg.obj \ + $(TMPDIR)\dump-compliance.obj \ + $(TMPDIR)\dump-boilerplate.obj \ + $(TMPDIR)\dump-yang.obj \ + $(TMPDIR)\fprint.obj \ + $(TMPDIR)\rea.obj \ + $(TMPDIR)\fortopat.obj + +SMIDIFFOBJS = \ + $(TMPDIR)\smidiff.obj \ + +SMILIB = smi.lib +SMIDLL = smi.dll + +## +## Implicit Targets +## +.c.obj: + $(cc32) $(cdebug) $(cflags) $(INCLUDES) \ + $(DEFINES) -Fo$(TMPDIR)\ $< + +{$(ROOT)\lib}.c{$(TMPDIR)}.obj: + $(cc32) $(cdebug) $(cflags) $(CVARSDLL) $(INCLUDES) \ + -DYYMALLOC=malloc -DYYFREE=free \ + $(DEFINES) -Fo$(TMPDIR)\ $< + +{$(ROOT)\tools}.c{$(TMPDIR)}.obj: + $(cc32) $(cdebug) $(cflags) $(CVARSDLL) $(INCLUDES) \ + $(DEFINES) -Fo$(TMPDIR)\ $< + +## +## Targets +## +all: libs tools + +!IFDEF ENABLE_LIBSMI_DLL +libs: $(SMILIB) $(SMIDLL) +!ELSE +libs: $(SMILIB) +!ENDIF + + +# special compilation rules +# (flex-src avoids missing unistd.h if _Win32 defined) +# +$(TMPDIR)\scanner-smi.obj : $(ROOT)\lib\scanner-smi.c + $(cc32) $(cdebug) $(cflags) $(CVARSDLL) -D_Win32 -D__STDC__ $(INCLUDES) \ + -DYY_NEVER_INTERACTIVE \ + $(DEFINES) -Fo$(TMPDIR)\ $? + +$(TMPDIR)\scanner-sming.obj : $(ROOT)\lib\scanner-sming.c + $(cc32) $(cdebug) $(cflags) $(CVARSDLL) -D_Win32 -D__STDC__ $(INCLUDES) \ + -DYY_NEVER_INTERACTIVE \ + $(DEFINES) -Fo$(TMPDIR)\ $? + +$(SMIDLL): $(SMILIB) + $(link) $(dlllflags) $(conlibsdll) /NODEFAULTLIB /machine:i386 msvcrt.lib shell32.lib version.lib /DEBUG /DEF:smi.def /OUT:smi.dll /IMPLIB:smi.lib $(LIBSMIOBJS) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smi.dll.manifest" -outputresource:smi.dll;1 +!ENDIF + +$(SMILIB): $(LIBSMIOBJS) + $(implib) /out:smi.lib $(LIBSMIOBJS) + +tools: smiquery.exe smilint.exe smixlate.exe smidump.exe smidiff.exe + +smiquery.exe: $(SMIQUERYOBJS) $(SMILIB) + $(cc32) $(DEFINES) /osmiquery.exe $(SMIQUERYOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smiquery.exe.manifest" -outputresource:smiquery.exe;1 +!ENDIF + +smilint.exe: $(SMILINTOBJS) $(SMILIB) + $(cc32) $(DEFINES) /osmilint.exe $(SMILINTOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smilint.exe.manifest" -outputresource:smilint.exe;1 +!ENDIF + +smidump.exe: $(SMIDUMPOBJS) $(SMILIB) + $(cc32) $(DEFINES) \ + /osmidump.exe $(SMIDUMPOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smidump.exe.manifest" -outputresource:smidump.exe;1 +!ENDIF + +smidiff.exe: $(SMIDIFFOBJS) $(SMILIB) + $(cc32) $(DEFINES) \ + /osmidiff.exe $(SMIDIFFOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smidiff.exe.manifest" -outputresource:smidiff.exe;1 +!ENDIF + +smixlate.exe: $(SMIXLATEOBJS) $(SMILIB) + $(cc32) $(DEFINES) \ + /osmixlate.exe $(SMIXLATEOBJS) $(SMILIB) +!IF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" + mt.exe -nologo -manifest "smixlate.exe.manifest" -outputresource:smixlate.exe;1 +!ENDIF + +clean: + rm -f *.lib + rm -f *.obj + rm -f *.exe + rm -f *.ilk + rm -f *.pdb + rm -f *.mdp + rm -f *.dll + rm -f *.exp + +install: all install-doc install-bin install-lib install-mibs install-pibs + +install-doc: + $(MKDIR) $(INSTROOT) + $(CP) ..\README $(INSTROOT) + $(CP) ..\COPYING $(INSTROOT) + $(CP) README.win $(INSTROOT) + $(MKDIR) $(INSTROOT)\doc + $(CP) ..\doc\*.txt $(INSTROOT)\doc + -$(CP) ..\doc\*.ps $(INSTROOT)\doc + +install-bin: + $(MKDIR) $(BINDIR) + $(CP) *.exe $(BINDIR) + +install-lib: + $(MKDIR) $(LIBDIR) + $(CP) *.lib $(LIBDIR) + +install-mibs: + $(MKDIR) $(MIBDIR) + $(MKDIR) $(MIBDIR)\iana + $(CP) ..\mibs\iana\*.* $(MIBDIR)\iana + $(MKDIR) $(MIBDIR)\ietf + $(CP) ..\mibs\ietf\*.* $(MIBDIR)\ietf + $(MKDIR) $(MIBDIR)\irtf + $(CP) ..\mibs\irtf\*.* $(MIBDIR)\irtf + $(MKDIR) $(MIBDIR)\tubs + $(CP) ..\mibs\tubs\*.* $(MIBDIR)\tubs + $(MKDIR) $(MIBDIR)\site + + +install-pibs: + $(MKDIR) $(PIBDIR) + $(MKDIR) $(PIBDIR)\ietf + $(CP) ..\pibs\ietf\*.* $(PIBDIR)\ietf + $(MKDIR) $(PIBDIR)\tubs + $(CP) ..\pibs\tubs\*.* $(PIBDIR)\tubs + $(MKDIR) $(PIBDIR)\site + +# !include "local.nmake" + +# +# Local Variables: +# mode: makefile +# make: "nmake" +# eval: (set (make-local-variable 'this-file) (file-name-nondirectory buffer-file-name)) +# eval: (set (make-local-variable 'compile-command) (concat make " -k -f " this-file)) +# End: +# + + +# EOF: makefile diff --git a/win/win.c b/win/win.c new file mode 100644 index 0000000..18f7dcc --- /dev/null +++ b/win/win.c @@ -0,0 +1,29 @@ +/* + * win.c -- + * + * Some helper functions to make this compile with vc++ for win32 + * + * Copyright (c) 2000 E. Schoenfelder, Gaertner Datensysteme Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: win.c 1107 2001-03-08 14:49:09Z schoenw $ + */ + +#include +#include +#include +#include +#include +#include + +#include "win.h" + +/* + * There are currently no Win32 specific compatibility functions since + * we replaced the getopt option parser with another option parser + * implementation. But we will keep this file around since I am sure + * we will need it again at some point in time. + */ diff --git a/win/win.h b/win/win.h new file mode 100644 index 0000000..c04b7f2 --- /dev/null +++ b/win/win.h @@ -0,0 +1,88 @@ +/* + * win.h -- + * + * Some helper functions to make libsmi compile with vc++ for win32. + * + * Copyright (c) 2000 E. Schoenfelder, Gaertner Datensysteme Braunschweig. + * Copyright (c) 2000 J. Schoenwaelder, Technical University of Braunschweig. + * + * See the file "COPYING" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * @(#) $Id: win.h 8057 2008-04-15 14:31:18Z schoenw $ + */ + +#ifndef _WIN_H +#define _WIN_H + +#include +#include +#include + +/* + * The access() function exists in the Win32 API, but there are no + * defines for the mode parameter. So we provided them here. + */ + +#ifndef F_OK +#define F_OK 00 +#endif +#ifndef W_OK +#define W_OK 02 +#endif +#ifndef R_OK +#define R_OK 04 +#endif + +/* + * Other function prototypes... + */ + +#if ! defined(__GNUC__) && defined(__STDC__) +int __cdecl fileno(FILE *); +#endif + +/* + * isascii() is a non __STDC__ extension needed when __STDC__ is defined in + * Win32 environment. + */ + +#if defined(__STDC__) +#ifndef isascii +#define isascii(_c) ( (unsigned)(_c) < 0x80 ) +#endif +#endif + +/* + * Windows seems to lacks C99 function fabsf(), strtold(). Well, this + * is only true for some compilers on Windows - gcc is fine since it + * comes with a C99 library. + */ + +#if ! defined(__GNUC__) +#define fabsf fabs +#define strtold strtod +#endif + +/* + * Some Windows compilers seem to lack strtof() so we fake it here. + */ + +#if defined(_MSC_VER) +#define strtof(f1,f2) ((float)strtod(f1,f2)) + +/* + * Windows compiler writers love to issue warnings for C functions + * whose names were changed by C++ standards. Since access is used as + * the name of a structure member it has to be treated differently. + */ + +#define access(f1,f2) _access(f1,f2) +#define putenv _putenv +#define strdup _strdup +#define vsnprintf _vsnprintf +#define strcasecmp _stricmp + +#endif /* _MSC_VER */ + +#endif /* _WIN_H */